/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of ISO 7816-4 APDU processing
 */



/**
 * Create an APDU
 *
 * <p>This constructor supports the signatures</p>
 * <ul>
 *  <li>APDU(ByteString command)</li>
 *  <li>APDU(Number cla, Number ins, Number p1, Number p2)</li>
 *  <li>APDU(Number cla, Number ins, Number p1, Number p2, data)</li>
 *  <li>APDU(Number cla, Number ins, Number p1, Number p2, data, Ne)</li>
 * </ul>
 * @class Class implementing support for command and response APDUs
 * @constructor
 * @param {ByteString} command the command APDU
 * @param {Number} cla the class byte
 * @param {Number} ins the instruction byte
 * @param {Number} p1 the first parameter
 * @param {Number} p2 the second parameter
 * @param {ByteString} data the data field (optional)
 * @param {Number} Ne the number of expected bytes (optional)
 */
function APDU() {
	if (arguments.length > 0) {
		var arg = arguments[0];
		if (arg instanceof ByteString) {
			if (arguments.length != 1) {
				throw new GPError("APDU", GPError.INVALID_ARGUMENTS, APDU.SW_GENERALERROR, "Only one argument of type ByteString expected");
			}
			this.fromByteString(arg);
		} else {
			if ((arguments.length < 4) || (arguments.length > 6)) {
				throw new GPError("APDU", GPError.INVALID_ARGUMENTS, APDU.SW_GENERALERROR, "4 to 6 arguments expected");
			}

			for (var i = 0; i < 4; i++) {
				if (typeof(arguments[i]) != "number") {
					throw new GPError("APDU", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Argument must be of type Number");
				}
			}
			this.cla = arguments[0];
			this.ins = arguments[1];
			this.p1 = arguments[2];
			this.p2 = arguments[3];

			var i = 4;
			if (arguments.length > i) {
				if (arguments[i] instanceof ByteString) {
					this.cdata = arguments[i];
					i++;
				}
			}

			if (arguments.length > i) {
				if (typeof(arguments[i]) != "number") {
					throw new GPError("APDU", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Argument must be of type Number");
				}
				this.ne = arguments[i];
			}
		}
	}
	this.rapdu = null;
	this.SW = APDU.SW_GENERALERROR;
}

exports.APDU = APDU;



APDU.INS_DEACTIVATE		= 0x04;
APDU.INS_VERIFY			= 0x20;
APDU.INS_MANAGE_SE		= 0x22;
APDU.INS_CHANGE_REFERENCE_DATA	= 0x24;
APDU.INS_PSO			= 0x2A;
APDU.INS_RESET_RETRY_COUNTER	= 0x2C;
APDU.INS_ACTIVATE		= 0x44;
APDU.INS_GENERATE_KEY_PAIR	= 0x46;
APDU.INS_GENERATE_KEY		= 0x48;
APDU.INS_INITIALIZE_UPDATE	= 0x50;
APDU.INS_EXTERNAL_AUTHENTICATE	= 0x82;
APDU.INS_GET_CHALLENGE		= 0x84;
APDU.INS_GENERAL_AUTHENTICATE	= 0x86;
APDU.INS_COMPUTE_DIGITAL_SIGN	= 0x9E;
APDU.INS_SELECT			= 0xA4;
APDU.INS_READBINARY		= 0xB0;
APDU.INS_READ_BINARY		= 0xB0;
APDU.INS_READ_RECORD		= 0xB2;
APDU.INS_VERIFY_CERTIFICATE	= 0xBE;
APDU.INS_GET_RESPONSE		= 0xC0;
APDU.INS_GET_DATA		= 0xCA;
APDU.INS_UPDATE_BINARY		= 0xD6;
APDU.INS_PUT_KEY		= 0xD8;
APDU.INS_PUT_DATA		= 0xDA;
APDU.INS_DELETE			= 0xE4;
APDU.INS_TERMINATE		= 0xE6;
APDU.INS_SET_STATUS		= 0xF0;

APDU.SW_OK                 = 0x9000;      	/* Process completed                 */

APDU.SW_TIMEOUT            = 0x6401;      	/* Exec error: Command timeout       */

APDU.SW_OKMOREDATA         = 0x6100;      	/*-Process completed, more data available*/
APDU.SW_WARNING            = 0x6200;      	/*-Warning: NV-Ram not changed       */
APDU.SW_WARNING1           = 0x6201;      	/*-Warning: NV-Ram not changed 1     */
APDU.SW_DATAINV            = 0x6281;      	/*-Warning: Part of data corrupted   */
APDU.SW_EOF                = 0x6282;      	/*-Warning: End of file reached      */
APDU.SW_INVFILE            = 0x6283;      	/* Warning: Invalidated file         */
APDU.SW_INVFORMAT          = 0x6284;      	/* Warning: Invalid file control     */
APDU.SW_WARNINGNVCHG       = 0x6300;      	/*-Warning: NV-Ram changed           */
APDU.SW_WARNINGCOUNT       = 0x63C0;      	/*-Warning: Warning with counter     */
APDU.SW_WARNING0LEFT       = 0x63C0;      	/*-Warning: Verify fail, no try left */
APDU.SW_WARNING1LEFT       = 0x63C1;      	/*-Warning: Verify fail, 1 try left  */
APDU.SW_WARNING2LEFT       = 0x63C2;      	/*-Warning: Verify fail, 2 tries left*/
APDU.SW_WARNING3LEFT       = 0x63C3;      	/*-Warning: Verify fail, 3 tries left*/
APDU.SW_EXECERR            = 0x6400;      	/*-Exec error: NV-Ram not changed    */
APDU.SW_MEMERR             = 0x6501;      	/*-Exec error: Memory failure        */
APDU.SW_MEMERRWRITE        = 0x6581;      	/*-Exec error: Memory failure        */
APDU.SW_WRONGLENGTH        = 0x6700;      	/*-Checking error: Wrong length      */

APDU.SW_CLANOTSUPPORTED    = 0x6800;      	/*-Checking error: Function in CLA byte not supported */
APDU.SW_LCNOTSUPPORTED     = 0x6881;      	/*-Checking error: Logical channel not supported */
APDU.SW_SMNOTSUPPORTED     = 0x6882;      	/*-Checking error: Secure Messaging not supported */
APDU.SW_LASTCMDEXPECTED    = 0x6883;      	/*-Checking error: Last command of the chain expected */
APDU.SW_CHAINNOTSUPPORTED  = 0x6884;      	/*-Checking error: Command chaining not supported */

APDU.SW_COMNOTALLOWED      = 0x6900;      	/*-Checking error: Command not allowed */
APDU.SW_COMINCOMPATIBLE    = 0x6981;      	/*-Checking error: Command incompatible with file structure */
APDU.SW_SECSTATNOTSAT      = 0x6982;      	/*-Checking error: Security condition not satisfied */
APDU.SW_AUTHMETHLOCKED     = 0x6983;      	/*-Checking error: Authentication method locked */
APDU.SW_REFDATANOTUSABLE   = 0x6984;      	/*-Checking error: Reference data not usable */
APDU.SW_CONDOFUSENOTSAT    = 0x6985;      	/*-Checking error: Condition of use not satisfied */
APDU.SW_COMNOTALLOWNOEF    = 0x6986;      	/*-Checking error: Command not allowed (no current EF) */
APDU.SW_SMOBJMISSING       = 0x6987;      	/*-Checking error: Expected secure messaging object missing */
APDU.SW_INCSMDATAOBJECT    = 0x6988;      	/*-Checking error: Incorrect secure messaging data object */

APDU.SW_INVPARA            = 0x6A00;      	/*-Checking error: Wrong parameter P1-P2 */
APDU.SW_INVDATA            = 0x6A80;      	/*-Checking error: Incorrect parameter in the command data field*/
APDU.SW_FUNCNOTSUPPORTED   = 0x6A81;      	/*-Checking error: Function not supported */
APDU.SW_NOAPPL             = 0x6A82;      	/*-Checking error: File not found    */
APDU.SW_FILENOTFOUND       = 0x6A82;      	/*-Checking error: File not found    */
APDU.SW_RECORDNOTFOUND     = 0x6A83;      	/*-Checking error: Record not found    */
APDU.SW_OUTOFMEMORY        = 0x6A84;      	/*-Checking error: Not enough memory space in the file   */
APDU.SW_INVLCTLV           = 0x6A85;      	/*-Checking error: Nc inconsistent with TLV structure */
APDU.SW_INVACC             = 0x6A85;      	/*-Checking error: Access cond. n/f  */
APDU.SW_INCP1P2            = 0x6A86;      	/*-Checking error: Incorrect P1-P2   */
APDU.SW_INVLC              = 0x6A87;      	/*-Checking error: Lc inconsistent with P1-P2 */
APDU.SW_RDNOTFOUND         = 0x6A88;      	/*-Checking error: Reference data not found*/
APDU.SW_FILEEXISTS         = 0x6A89;      	/*-Checking error: File already exists */
APDU.SW_DFNAMEEXISTS       = 0x6A8A;      	/*-Checking error: DF name already exists */

APDU.SW_INVP1P2            = 0x6B00;      	/*-Checking error: Wrong parameter P1-P2 */
APDU.SW_INVLE              = 0x6C00;      	/*-Checking error: Invalid Le        */
APDU.SW_INVINS             = 0x6D00;      	/*-Checking error: Wrong instruction */
APDU.SW_INVCLA             = 0x6E00;      	/*-Checking error: Class not supported */
APDU.SW_ACNOTSATISFIED     = 0x9804;      	/* Access conditions not satisfied   */
APDU.SW_NOMORESTORAGE      = 0x9210;      	/* No more storage available         */
APDU.SW_GENERALERROR       = 0x6F00;      	/*-Checking error: No precise diagnosis */


/**
 * Create an APDU object from the encoded form (Called internally)
 *
 * @param {ByteString} bs
 */
APDU.prototype.fromByteString = function(bs) {
	if (bs.length < 4) {
		throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_GENERALERROR, "Command APDU must be at least 4 bytes long");
	}
	this.cla = bs.byteAt(0);
	this.ins = bs.byteAt(1);
	this.p1 = bs.byteAt(2);
	this.p2 = bs.byteAt(3);

	if (bs.length > 4) {
		var extended = false;

		var i = 4;
		var l = bs.length - i;
		var n = bs.byteAt(i++);
		l--;

		if ((n == 0) && (l > 0)) {
			extended = true;
			if (l < 2) {
				throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Extended length APDU too short");
			}
			n = (bs.byteAt(i) << 8) + bs.byteAt(i + 1);
			i += 2;
			l -= 2;
		}

		if (l > 0) {	// Case 3s / Case 3e / Case 4s / Case 4e
			if (l < n) {
				throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Invalid Lc in APDU");
			}
			this.cdata = bs.bytes(i, n);
			i += n;
			l -= n;

			if (l > 0) {	// Case 4s / Case 4e
				n = bs.byteAt(i++);
				l--;
				if (extended) {
					if (l < 1) {
						throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Invalid Le in extended APDU");
					}
					n = (n << 8) + bs.byteAt(i++);
					l--;
				}
				this.ne = (extended && (n == 0) ? 65536 : n);
			}
		} else {
			this.ne = (extended && (n == 0) ? 65536 : n);
		}

		if (l > 0) {
			throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Too many bytes in APDU");
		}
	}
}



/**
 * Get encoded command APDU
 *
 * @type ByteString
 * @return the encoded command APDU
 */
APDU.prototype.getCommandAPDU = function() {
	var bb = new ByteBuffer();

	bb.append(this.cla);
	bb.append(this.ins);
	bb.append(this.p1);
	bb.append(this.p2);

	var hasCData = (typeof(this.cdata) != "undefined");
	var hasNe = (typeof(this.ne) != "undefined");

	var extended = ((hasCData && this.cdata.length > 255) ||
					(hasNe && this.ne > 256));

	if (extended) {
		bb.append(0);
	}

	if (hasCData && this.cdata.length > 0) {
		if (extended) {
			bb.append(this.cdata.length >> 8);
		}
		bb.append(this.cdata.length & 0xFF);
		bb.append(this.cdata);
	}

	if (hasNe) {
		if (extended) {
			bb.append(this.ne >> 8);
		}
		bb.append(this.ne & 0xFF);
	}

	return bb.toByteString();
}



/**
 * Get encoded response APDU
 *
 * @type ByteString
 * @return the encoded response APDU
 */
APDU.prototype.getResponseAPDU = function() {
	var bb = new ByteBuffer();

	if (this.rdata) {
		bb.append(this.rdata);
	}

	bb.append(this.SW >> 8);
	bb.append(this.SW & 0xFF);

	return bb.toByteString();
}



/**
 * Gets the class byte
 *
 * @type Number
 * @return the class byte
 */
APDU.prototype.getCLA = function() {
	return this.cla;
}



/**
 * Sets the class byte, e.g. after a transformation
 *
 * @parameter {Number} the new CLA byte
 */
APDU.prototype.setCLA = function(cla) {
	this.cla = cla;
}



/**
 * Test if command is an ISO command
 *
 * @type boolean
 * @return true if command has ISO class byte
 */
APDU.prototype.isISO = function() {
	return (this.cla & 0x80) == 0x00;
}



/**
 * Test if command uses extended length
 *
 * @type boolean
 * @return true if APDU uses extended length
 */
APDU.prototype.isExtendedLength = function() {
	return ((this.hasCData() && this.cdata.length > 255) || (this.hasLe() && (this.ne > 256)));
}



/**
 * Test if command chaining is indicated
 *
 * @type boolean
 * @return true if chaining bit is set
 */
APDU.prototype.isChained = function() {
	return (this.cla & 0x10) == 0x10;
}



/**
 * Test if command is send using secure messaging
 *
 * @type boolean
 * @return true if secure messaging is indicated in CLA byte
 */
APDU.prototype.isSecureMessaging = function() {
	return (this.cla & 0x08) == 0x08;
}



/**
 * Test if command is send using secure messaging
 *
 * @type boolean
 * @return true if secure messaging is using an authenticated header
 */
APDU.prototype.isAuthenticatedHeader = function() {
	return (this.cla & 0x0C) == 0x0C;
}



/**
 * Gets the instruction byte
 *
 * @type Number
 * @return the instruction byte
 */
APDU.prototype.getINS = function() {
	return this.ins;
}



/**
 * Gets the P1 byte
 *
 * @type Number
 * @return the P1 byte
 */
APDU.prototype.getP1 = function() {
	return this.p1;
}



/**
 * Gets the P2 byte
 *
 * @type Number
 * @return the P2 byte
 */
APDU.prototype.getP2 = function() {
	return this.p2;
}



/**
 * Set the command data
 *
 * @param {ByteString} cdata the command data
 */
APDU.prototype.setCData = function(cdata) {
	if (cdata instanceof ByteString) {
		this.cdata = cdata;
	} else {
		delete this.cdata;
	}
}



/**
 * Gets the command data
 *
 * @type ByteString
 * @return the command data, if any else undefined
 */
APDU.prototype.getCData = function() {
	return this.cdata;
}



/**
 * Check if APDU has command data
 *
 * @type boolean
 * @return true if command APDU has data field
 */
APDU.prototype.hasCData = function() {
	return typeof(this.cdata) != "undefined";
}



/**
 * Gets the command data as a list of TLV objects
 *
 * @type TLVList
 * @return the command data as TLV list, if any else undefined
 */
APDU.prototype.getCDataAsTLVList = function() {
	if (!this.hasCData()) {
		throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_INVDATA, "No data in command APDU");
	}

	try	{
		var a = new TLVList(this.cdata, TLV.EMV);
	}
	catch(e) {
		throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_INVDATA, "Invalid TLV data in command APDU");
	}

	return a;
}



/**
 * Gets the number of expected bytes
 *
 * @type Number
 * @return the number of expected bytes or undefined
 */
APDU.prototype.getNe = function() {
	return this.ne;
}



/**
 * Check if APDU has Le field
 *
 * @type boolean
 * @return true if command APDU has Le field
 */
APDU.prototype.hasLe = function() {
	return typeof(this.ne) != "undefined";
}



/**
 * Set secure channel object to be used in wrap and unwrap methods
 *
 * @param {SecureChannel} secureChannel the channel
 */
APDU.prototype.setSecureChannel = function(secureChannel) {
	this.secureChannel = secureChannel;
}



/**
 * Return the secure channel, if any
 *
 * @type SecureChannel
 * @return the secure channel
 */
APDU.prototype.getSecureChannel = function() {
	return this.secureChannel;
}



/**
 * Test if a secure channel is defined for this APDU
 *
 * @type boolean
 * @return true, if secure channel is set
 */
APDU.prototype.hasSecureChannel = function() {
	return (typeof(this.secureChannel) != "undefined") && (this.secureChannel != null);
}



/**
 * Wrap APDU using secure channel
 */
APDU.prototype.wrap = function() {
	if (this.hasSecureChannel()) {
		this.secureChannel.wrap(this);
	}
}



/**
 * Unwrap APDU using secure channel
 */
APDU.prototype.unwrap = function() {
	if (this.hasSecureChannel()) {
		this.secureChannel.unwrap(this);
	}
}



/**
 * Sets the response data field for the response APDU
 *
 * @param {ByteString} data the response data field
 */
APDU.prototype.setRData = function(data) {
	if ((data.length > 256) && !this.isExtendedLength()) {
		throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Too many bytes in APDU");
	}
	this.rdata = data;
}



/**
 * Get the response data
 *
 * @type ByteString
 * @return the response data
 */
APDU.prototype.getRData = function() {
	return this.rdata;
}



/**
 * Check if APDU has response data
 *
 * @type boolean
 * @return true if response APDU has data field
 */
APDU.prototype.hasRData = function() {
	return ((typeof(this.rdata) != "undefined") && (this.rdata != null));
}



/**
 * Sets the status word for the response ADPU
 *
 * @param {Number} sw the status word
 */
APDU.prototype.setSW = function(sw) {
	this.SW = sw;
}



/**
 * Get the status word
 *
 * @type Number
 * @return the status word
 */
APDU.prototype.getSW = function() {
	return this.SW;
}



/**
 * Return a human readable form of this object
 */
APDU.prototype.toString = function() {
	return this.getCommandAPDU().toString(HEX) + " : " + this.getResponseAPDU().toString(HEX);
}



/**
 * Simple unit test
 */
APDU.test = function() {
	// Case 1
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C);
	print(a);
	assert(!a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C");
	var c = new APDU(b);
	assert(a.toString() == c.toString());

	// Case 2 Short
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, 0);
	print(a);
	assert(!a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C00");
	var c = new APDU(b);
	assert(a.toString() == c.toString());

	// Case 2 Extended
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, 65536);
	print(a);
	assert(a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C000000");
	var c = new APDU(b);
	print(c);
	assert(a.toString() == c.toString());

	// Case 3 Short
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, new ByteString("3F00", HEX));
	print(a);
	assert(!a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C023F00");
	var c = new APDU(b);
	assert(a.toString() == c.toString());

	// Case 3 Extended
	var data = "0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF";
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, new ByteString(data, HEX));
	print(a);
	assert(a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C000100" + data);
	var c = new APDU(b);
	assert(a.toString() == c.toString());

	// Case 4 Short
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, new ByteString("3F00", HEX), 0);
	print(a);
	assert(!a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C023F0000");
	var c = new APDU(b);
	assert(a.toString() == c.toString());

	// Case 4b Extended
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, new ByteString(data, HEX), 0);
	print(a);
	assert(a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C000100" + data + "0000");
	var c = new APDU(b);
	assert(a.toString() == c.toString());

	// Case 4b Extended
	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, new ByteString("3F00", HEX), 65536);
	print(a);
	assert(a.isExtendedLength());
	var b = a.getCommandAPDU();
	assert(b.toString(HEX) == "00A4000C0000023F000000");
	var c = new APDU(b);
	assert(a.toString() == c.toString());
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview AccessController base class
 */

 
/**
 * Create an default controller granting read but denying write access 
 * @Class Class implementing a default access controller
 * @constructor
 */
function AccessController() {
	this.name = "AccessController";
}

exports.AccessController = AccessController;



/**
 * Check if read access to file system node is allowed
 *
 * @param {APDU} apdu the APDU used to access the object
 * @param {FSNode} node the file system object
 * @type boolean
 * @return true if access is allowed
 */
AccessController.prototype.checkFileReadAccess = function(ci, apdu, node) {
	return true;
}



/**
 * Check if write access to file system node is allowed
 *
 * @param {APDU} apdu the APDU used to access the object
 * @param {FSNode} node the file system object
 * @type boolean
 * @return true if access is allowed
 */
AccessController.prototype.checkFileWriteAccess = function(ci, apdu, node) {
	return false;
}



/**
 * Check if command is allowed
 *
 * @param {APDU} apdu the APDU to check
 * @type boolean
 * @return true if access is allowed
 */
AccessController.prototype.checkCommandAccess = function(ci, apdu) {
	return true;
}



AccessController.prototype.toString = function() {
	return this.name;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview AuthenticationObject - Password, PIN or key container for external authentication
 */

var FileSystemIdObject  = require('scsh/cardsim/FileSystemIdObject').FileSystemIdObject;
var APDU                = require('scsh/cardsim/APDU').APDU;



/**
 * Create an authentication object
 *
 * @class Class implementing authentication objects like PINs, PACE passwords or keys
 *
 * @param {String} name the human readable name of the object
 * @param {String} type one of AuthenticationObject.TYPE_PACE or AuthenticationObject.TYPE_PIN
 * @param {Number} id the password or key id
 * @param {ByteString} value the reference value
 */
function AuthenticationObject(name, type, id, value) {
	FileSystemIdObject.call(this, name, id);
	this.type = type;
	this.value = value;
	this.retrycounter = 3;
	this.initialretrycounter = 3;
	this.usecounter = -1;
	this.resetcounter = -1;
	this.minLength = 4;
	this.isActive = true;				// State after using ACTIVATE / DEACTIVATE
	this.isEnabled = true;				// State after using ENABLE / DISABLE VERIFICATION REQUIREMENT
	this.isTransport = false;			// State before first change PIN
	this.isTerminated = false;			// State after TERMINATE
	this.allowActivate = false;
	this.allowDeactivate = false;
	this.allowEnable = false;
	this.allowDisable = false;
	this.allowResetRetryCounter = false;
	this.allowResetValue = false;
	this.allowTerminate = false;
	this.unsuspendAuthenticationObject = null;
	this.unblockAuthenticationObject = null;
}

AuthenticationObject.prototype = new FileSystemIdObject();
AuthenticationObject.prototype.constructor = AuthenticationObject;

exports.AuthenticationObject = AuthenticationObject;


AuthenticationObject.TYPE_PACE = "pace";
AuthenticationObject.TYPE_PIN = "pin";



/**
 * Override from base class
 */
AuthenticationObject.prototype.getType = function() {
	return this.type;
}



AuthenticationObject.prototype.isBlocked = function() {
	return ((this.initialretrycounter != 0) && (this.retrycounter == 0));
}



AuthenticationObject.prototype.isSuspended = function() {
	return ((this.initialretrycounter != 0) && (this.retrycounter == 1));
}



/**
 * Activate authentication object
 */
AuthenticationObject.prototype.activate = function() {
	if (!this.allowActivate) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Activate not allowed for authentication object");
	}
	this.isActive = true;
}



/**
 * Deactivate authentication object
 */
AuthenticationObject.prototype.deactivate = function() {
	if (!this.allowDeactivate) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Deactivate not allowed for authentication object");
	}
	this.isActive = false;
}



/**
 * Reset retry counter and optionally set new reference value
 *
 * @param {ByteString} newValue new reference value
 */
AuthenticationObject.prototype.resetRetryCounter = function(newValue) {
	if (!this.allowResetRetryCounter) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Reset retry counter not allowed for authentication object");
	}
	if (newValue && !this.allowResetValue) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Reset retry counter not allowed with new value for authentication object");
	}
	if (this.resetcounter != -1) {
		if (this.resetcounter == 0) {
			throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Reset retry counter is 0");
		}
		this.resetcounter--;
	}
	if (newValue && (newValue.length < this.minLength)) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "New reference data too short");
	}
	this.retrycounter = this.initialretrycounter;
	this.isActive = true;

	if (this.initialretrycounter) {
		this.retrycounter = this.initialretrycounter;
	}
	if (newValue) {
		this.isTransport = false;
		this.value = newValue;
	}
}



/**
 * Change reference data, optionally verifying the old value before
 *
 * @param {Number} qualifier command qualifier, 00 = oldPIN||newPIN, 01 = newPIN
 * @param {ByteString} value new reference value
 */
AuthenticationObject.prototype.changeReferenceData = function(qualifier, value) {
	if (!this.allowChangeReferenceData) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Change reference data not allowed for authentication object");
	}
	if (qualifier == 0x01) {
		if (!this.isTerminated) {
			throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Change reference data with P1=01 not allowed non terminated authentication object");
		}
		if (this.associatedKey && !this.associatedKey.isTerminated) {
			throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_REFDATANOTUSABLE, "Associated key is not terminated");
		}
	}
	if ((qualifier == 0x00) && (value.length <= this.value.length)) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_INVDATA, "Command data does not contain a new PIN value for P1=00");
	}
	if (qualifier == 0x00) {
		this.verify(value.left(this.value.length));
		value = value.bytes(this.value.length);
	}

	if (value.length < this.minLength) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "New reference data too short");
	}

	this.value = value;
	this.isTerminated = false;
}



/**
 * Verify PIN value
 *
 * @param {ByteString} value reference value
 */
AuthenticationObject.prototype.verify = function(value) {
	if (this.isBlocked()) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_AUTHMETHLOCKED, "Authentication method blocked");
	}
	if (this.isTerminated) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_REFDATANOTUSABLE, "Authentication method terminated");
	}
	this.decreaseRetryCounter();
	if (!this.value.equals(value)) {
		var sw = APDU.SW_WARNINGCOUNT | this.retrycounter;
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, sw, "Authentication failed");
	}
	this.restoreRetryCounter();
}



/**
 * Deactivate authentication object
 */
AuthenticationObject.prototype.decreaseRetryCounter = function() {
	if (this.initialretrycounter) {
		this.retrycounter--;
	}
}



/**
 * Deactivate authentication object
 */
AuthenticationObject.prototype.restoreRetryCounter = function() {
	if (this.initialretrycounter) {
		this.retrycounter = this.initialretrycounter;
	}
}



/**
 * Terminate authentication object
 */
AuthenticationObject.prototype.terminate = function() {
	if (!this.allowTerminate) {
		throw new GPError("AuthenticationObject", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Terminate not allowed for authentication object");
	}
	this.isTerminated = true;
}



/**
 * Convert object to a human readable string
 */
AuthenticationObject.prototype.toString = function() {
	var state = "";
	if (this.isBlocked()) {
		state += "blocked ";
	} else if (this.isTerminated) {
		state += "terminated ";
	} else {
		if (this.isActive) {
			state += "active ";
		}
		if (this.isActive) {
			state += "enabled ";
		} else {
			state += "disabled ";
		}
		if (this.isTransport) {
			state += "transport ";
		}
	}
	var str = this.type + ":" + this.name + "(" + this.id + ") is " + state;
	if (this.initialretrycounter) {
		str += " RC=" + this.retrycounter;
	}
	return str;
}


/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of an ISO 7816-4 command interpreter
 */

var TransparentEF   = require('scsh/cardsim/TransparentEF').TransparentEF;
var LinearEF        = require('scsh/cardsim/LinearEF').LinearEF;
var APDU            = require('scsh/cardsim/APDU').APDU;
var DataUnitAPDU    = require('scsh/cardsim/DataUnitAPDU').DataUnitAPDU;



/**
 * Create a command interpreter
 *
 * @class Class implementing a command interpreter that handles ISO 7816-4 command APDUs
 * @constructor
 * @param {FileSelector} fileSelector the file selector object
 */
function CommandInterpreter(fileSelector) {
	this.fileSelector = fileSelector;
}

exports.CommandInterpreter = CommandInterpreter;



/**
 * Set secure channel
 *
 * @param {SecureChannel} secureChannel the secure channel to used for unwrapping and wrapping APDUs
 */
CommandInterpreter.prototype.setSecureChannel = function(secureChannel) {
	this.secureChannel = secureChannel;
}



/**
 * Return status of secure channel
 *
 * @type boolean
 * @return true if secure channel is active
 */
CommandInterpreter.prototype.hasSecureChannel = function() {
	return (typeof(this.secureChannel) != "undefined") && (this.secureChannel != null);
}



/**
 * Process a READ BINARY APDU
 *
 * @param {APDU} apdu the command and response APDU
 */
CommandInterpreter.prototype.readBinary = function(apdu) {
	if (!apdu.hasLe()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Wrong length - missing Le field");
	}

	if (apdu.isChained()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_CHAINNOTSUPPORTED, "Chaining not supported in READ BINARY");
	}

	var dua = new DataUnitAPDU(apdu);

	if (dua.hasCData()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_INVDATA, "Command data not expected in  READ BINARY");
	}

	var ef;
	var sfi = dua.getSFI();
	var fid = dua.getFID();

	if (sfi >= 0) {
		ef = this.fileSelector.selectSFI(sfi);
	} else if (fid != null) {
		ef = this.fileSelector.selectFID(fid, false, false);
	} else {
		ef = this.fileSelector.getCurrentEF();

		if (ef == null) {
			throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_COMNOTALLOWNOEF, "No current EF in READ BINARY");
		}
	}

	if (!(ef instanceof TransparentEF)) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_COMINCOMPATIBLE, "EF is not a transparent file in READ BINARY");
	}

	var ac = this.fileSelector.getMeta("accessController");
	if (ac && !ac.checkFileReadAccess(this, apdu, ef)) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_SECSTATNOTSAT, "Read access not allowed as determined by " + ac);
	}

	var offset = dua.getOffset();
	var length = apdu.getNe();

	var data = ef.readBinary(apdu, offset, length);

	apdu.setRData(data);
}



/**
 * Process an UPDATE BINARY APDU
 *
 * @param {APDU} apdu the command and response APDU
 */
CommandInterpreter.prototype.updateBinary = function(apdu) {
	if (apdu.isChained()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_CHAINNOTSUPPORTED, "Chaining not supported in READ BINARY");
	}

	if (!apdu.hasCData()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "No data found in UPDATE BINARY");
	}

	var dua = new DataUnitAPDU(apdu);

	if (!dua.hasCData()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_INVDATA, "No data found in UPDATE BINARY");
	}

	var ef;
	var sfi = dua.getSFI();
	var fid = dua.getFID();

	if (sfi >= 0) {
		ef = this.fileSelector.selectSFI(sfi);
	} else if (fid != null) {
		ef = this.fileSelector.selectFID(fid, false, false);
	} else {
		ef = this.fileSelector.getCurrentEF();

		if (ef == null) {
			throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_COMNOTALLOWNOEF, "No current EF in UPDATE BINARY");
		}
	}

	if (!(ef instanceof TransparentEF)) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_COMINCOMPATIBLE, "EF is not a transparent file in UPDATE BINARY");
	}

	var ac = this.fileSelector.getMeta("accessController");
	if (ac && !ac.checkFileWriteAccess(this, apdu, ef)) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_SECSTATNOTSAT, "Write access not allowed as determined by " + ac);
	}

	var offset = dua.getOffset();
	var data = dua.getCData();

	ef.updateBinary(apdu, offset, data);
}



/**
 * Process a READ RECORD APDU
 *
 * @param {APDU} apdu the command and response APDU
 */
CommandInterpreter.prototype.readRecord = function(apdu) {
	if (!apdu.hasLe()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Wrong length - missing Le field");
	}

	if (apdu.isChained()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_CHAINNOTSUPPORTED, "Chaining not supported in READ RECORD");
	}

	var recno = apdu.getP1();
	var sfi = apdu.getP2() >> 3;
	var qualifier = apdu.getP2() & 0x7;

	if (sfi > 0) {
		ef = this.fileSelector.selectSFI(sfi);
	} else {
		ef = this.fileSelector.getCurrentEF();

		if (ef == null) {
			throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_COMNOTALLOWNOEF, "No current EF in READ RECORD");
		}
	}

	if (!(ef instanceof LinearEF)) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_COMINCOMPATIBLE, "EF is not a linear file in READ RECORD");
	}

	var ac = this.fileSelector.getMeta("accessController");
	if (ac && !ac.checkFileReadAccess(this, apdu, ef)) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_SECSTATNOTSAT, "Read access not allowed as determined by " + ac);
	}

	var data = ef.readRecord(apdu, recno, qualifier, apdu.getNe());

	apdu.setRData(data);
}



/**
 * Performs a VERIFY command
 *
 * @param {APDU} the apdu
 */
CommandInterpreter.prototype.verify = function(apdu) {
	if (apdu.isChained()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_CHAINNOTSUPPORTED, "Chaining not supported in command");
	}

	var pinao = this.fileSelector.getObject(AuthenticationObject.TYPE_PIN, apdu.getP2());
	if (!pinao) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_RDNOTFOUND, "PIN with reference " + apdu.getP2() + " not found");
	}

	if (apdu.hasCData()) {
		pinao.verify(apdu.getCData());
	} else {
		if (!this.fileSelector.isAuthenticated(ao)) {
			pinao.determineStatus();
		}
	}

	apdu.setSW(APDU.SW_OK);
}



/**
 * Performs a CHANGE REFERENCE DATA command
 *
 * @param {APDU} the apdu
 */
CommandInterpreter.prototype.changeReferenceData = function(apdu) {
	if (apdu.isChained()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_CHAINNOTSUPPORTED, "Chaining not supported in command");
	}
	if (!apdu.hasCData()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Command must have C-data");
	}

	var pinao = this.fileSelector.getObject(AuthenticationObject.TYPE_PIN, apdu.getP2());
	if (!pinao) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_RDNOTFOUND, "PIN with reference " + apdu.getP2() + " not found");
	}

	pinao.changeReferenceData(apdu.getP1(), apdu.getCData());

	apdu.setSW(APDU.SW_OK);
}



/**
 * Performs a RESET RETRY COUNTER command
 *
 * @param {APDU} the apdu
 */
CommandInterpreter.prototype.resetRetryCounter = function(apdu) {
	if (apdu.isChained()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_CHAINNOTSUPPORTED, "Chaining not supported in command");
	}
	var p1 = apdu.getP1();

	if (p1 == 0x02) {
		if (!apdu.hasCData()) {
			throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Command must have C-data");
		}
	} else if (p1 == 0x03) {
		if (apdu.hasCData()) {
			throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Command must not have C-data");
		}
	} else {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Invalid P1 or P2");
	}

	var pinao = this.fileSelector.getObject(AuthenticationObject.TYPE_PIN, apdu.getP2());
	if (!pinao) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_RDNOTFOUND, "PIN with reference " + apdu.getP2() + " not found");
	}

	pinao.resetRetryCounter(apdu.getCData());

	apdu.setSW(APDU.SW_OK);
}



/**
 * Process a MANAGE SECURITY ENVIRONMENT APDU
 *
 * @param {APDU} apdu the command and response APDU
 */
CommandInterpreter.prototype.manageSecurityEnvironment = function(apdu) {
	var p1 = apdu.getP1();
	var p2 = apdu.getP2();

	var se = this.fileSelector.getSecurityEnvironment();

	if ((p1 & 0x0F) != 1) { 	// SET
		throw new GPError("CommandInterpreter", GPError.INVALID_TYPE, APDU.APDU.SW_FUNCNOTSUPPORTED, "Only MANAGE SE set variant supported");
	}

	var tlv = new ASN1(p2, apdu.getCData());

	if (p1 & 0x80) {					// Verification, Encryption, External Authentication and Key Agreement
		var t = new ASN1(tlv.getBytes());		// Dirty trick to deserialize as TLV tree
		se.VEXK.add(t);
	}
	if (p1 & 0x40) {					// Calculation, Decryption, Internal Authentication and Key Agreement
		var t = new ASN1(tlv.getBytes());		// Dirty trick to deserialize as TLV tree
		se.CDIK.add(t);
	}
	if (p1 & 0x20) {					// Secure Messaging Response
		var t = new ASN1(tlv.getBytes());		// Dirty trick to deserialize as TLV tree
		se.SMRES.add(t);
	}
	if (p1 & 0x10) {					// Secure Messaging Command
		var t = new ASN1(tlv.getBytes());		// Dirty trick to deserialize as TLV tree
		se.SMCOM.add(t);
	}
	apdu.setSW(APDU.SW_OK);
}



/**
 * Process a secure messaging command APDU, if secure messaging is active.
 *
 * @param {APDU} apdu the command APDU
 */
CommandInterpreter.prototype.handleSecMsgCommandAPDU = function(apdu) {
	if (apdu.isSecureMessaging()) {
		if (this.hasSecureChannel()) {
			try	{
				apdu.setSecureChannel(this.secureChannel);
				apdu.unwrap();
			}
			catch(e) {
				this.setSecureChannel();	// Reset secure channel
				throw e;
			}
		} else {
			throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_SMNOTSUPPORTED, "No secure messaging channel");
		}
	} else {
		if (this.hasSecureChannel()) {
			this.setSecureChannel();	// Reset secure channel
		}
	}
}



/**
 * Process a secure messaging response APDU, if secure messaging is active
 *
 * @param {APDU} apdu the response APDU
 */
CommandInterpreter.prototype.handleSecMsgResponseAPDU = function(apdu) {
	if (apdu.isSecureMessaging() && this.hasSecureChannel()) {
		apdu.wrap();
	}
}



/**
 * Dispatch to command handler based on instruction code
 *
 * @param {APDU} apdu the command and response APDU
 * @param {Number} ins instruction code
 */
CommandInterpreter.prototype.dispatch = function(apdu, ins) {
	if (!apdu.isISO()) {
		apdu.setSW(APDU.SW_INVCLA);
		return;
	}

	if (apdu.isChained()) {
		throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_CHAINNOTSUPPORTED, "Chaining not supported");
	}

	switch(ins) {
		case APDU.INS_SELECT:
			this.fileSelector.processSelectAPDU(apdu);
			break;
		case APDU.INS_READ_BINARY:
			this.readBinary(apdu);
			break;
		case APDU.INS_UPDATE_BINARY:
			this.updateBinary(apdu);
			break;
		case APDU.INS_READ_RECORD:
			this.readRecord(apdu);
			break;
		case APDU.INS_VERIFY:
			this.verify(apdu);
			break;
		case APDU.INS_RESET_RETRY_COUNTER:
			this.resetRetryCounter(apdu);
			break;
		case APDU.INS_CHANGE_REFERENCE_DATA:
			this.changeReferenceData(apdu);
			break;
		case APDU.INS_MANAGE_SE:
			this.manageSecurityEnvironment(apdu);
			break;
		default:
			apdu.setSW(APDU.SW_INVINS);
	}
}



/**
 * Process a command APDU
 *
 * @param {APDU} apdu the command and response APDU
 */
CommandInterpreter.prototype.processAPDU = function(apdu) {
	try	{
		this.handleSecMsgCommandAPDU(apdu);

		var cla = apdu.getCLA();
		var ins = apdu.getINS();
		var tlv = (ins & 1) == 1;
		ins &= 0xFE;

		var ac = this.fileSelector.getMeta("accessController");
		if (ac && !ac.checkCommandAccess(this, apdu)) {
			throw new GPError("CommandInterpreter", GPError.INVALID_DATA, APDU.SW_SECSTATNOTSAT, "Command not allowed as determined by " + ac);
		}

		this.dispatch(apdu, ins);
	}
	catch(e) {
		GPSystem.trace(e.fileName + "#" + e.lineNumber + ": " + e);
		var sw = APDU.SW_GENERALERROR;
		if ((e instanceof GPError) && (e.reason >= 0x6200)) {
			apdu.setSW(e.reason);
		} else {
			apdu.setSW(APDU.SW_GENERALERROR);
		}
	}
	this.handleSecMsgResponseAPDU(apdu);
}

/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a ISO 7816-4 file system simulation
 */

var APDU                = require('scsh/cardsim/APDU').APDU;
var FSNode              = require('scsh/cardsim/FSNode').FSNode;
var FileSystemIdObject  = require('scsh/cardsim/FileSystemIdObject').FileSystemIdObject;



/**
 * Creates a Dedicated File (DF)
 *
 * <p>The constructor supports as argument a list of child elements</p>
 *
 * @class Class implementing dedicated files
 * @constructor
 * @param {FCP} the file control parameter
 */
function DF(fcp) {
	this.childs = new Array();
	this.fidmap = new Array();
	this.sfimap = new Array();
	this.aidmap = new Array();
	this.meta = new Array();

	FSNode.call(this, fcp);

	if (arguments.length > 1) {
		for (var i = 1; i < arguments.length; i++) {
			var arg = arguments[i];
			this.add(arg);
		}
	}
}

DF.prototype = new FSNode();
DF.prototype.constructor = DF;

exports.DF = DF;


/**
 * Adds a new child node to the DF
 *
 * @param {FSNode} node the node to add
 */
DF.prototype.add = function(node) {
	this.childs.push(node);
	node.setParent(this);

	var f = node.getFCP();

	var fid = f.getFID();
	if (fid) {
		if (this.fidmap[fid]) {
			throw new GPError("DF", GPError.INVALID_DATA, APDU.SW_FILEEXISTS, "Duplicate file identifier " + fid);
		}
		this.fidmap[fid] = node;
	}

	if (node.isDF()) {
		var aid = f.getAID();
		if (aid) {
			if (this.aidmap[aid]) {
				throw new GPError("DF", GPError.INVALID_DATA, APDU.SW_FILEEXISTS, "Duplicate application identifier " + aid);
			}
			this.aidmap[aid] = node;
		}
	} else {
		var sfi = f.getSFI();
//		print("Found SFI " + sfi);
		if (typeof(sfi) != "undefined") {
			if (this.sfimap[sfi]) {
				throw new GPError("DF", GPError.INVALID_DATA, APDU.SW_FILEEXISTS, "Duplicate short file identifier " + sfi);
			}
			this.sfimap[sfi] = node;
		}
	}

}



/**
 * Add meta information to DF
 *
 * @param {String} name name of meta information
 * @param {Object} value value of meta information
 */
DF.prototype.addMeta = function(name, value) {
	this.meta[name] = value;
}



/**
 * Add object to DF
 *
 * @param {Object} o object to be added. Must have property type and id.
 */
DF.prototype.addObject = function(o) {
	assert((typeof(o) == "object") && (o instanceof FileSystemIdObject), "Argument must be instance of FileSystemIdObject");
	if (typeof(this.meta[o.getType()]) == "undefined") {
		this.meta[o.getType()] = [];
	}
	this.meta[o.getType()][o.getId()] = o;
}



/**
 * Select a file contained in the DF using the file identifier
 *
 * @param {ByteString} the file identifier
 * @type FSNode
 * @return the found node or undefined
 */
DF.prototype.selectByFID = function(fid) {
	return this.fidmap[fid];
}



/**
 * Select a file contained in the DF using the short file identifier
 *
 * @param {Number} the short file identifier
 * @type FSNode
 * @return the found node or undefined
 */
DF.prototype.selectBySFI = function(sfi) {
	return this.sfimap[sfi];
}



/**
 * Select a DF contained in the DF using the application identifier
 *
 * @param {ByteString} the application identifier
 * @type FSNode
 * @return the found node or undefined
 */
DF.prototype.selectByAID = function(aid) {
	return this.aidmap[aid];
}



/**
 * Returns true as this is a DF
 *
 * @type boolean
 * @return true this is a DF
 */
DF.prototype.isDF = function() {
	return true;
}



/**
 * Dump the file system system recursively starting this this node
 *
 * @param {String} indent the string to prefix the output with
 * @type String
 * @return the dump
 */
DF.prototype.dump = function(indent) {
	if (typeof(indent) == "undefined") {
		indent = "";
	}
	var str = indent + this.toString() + "\n";

	if (this instanceof DF) {
		for (var i in this.meta) {
			str += indent + "  Meta:" + i + "\n";
			if (typeof(this.meta[i]) == "object") {
				for each (var e in this.meta[i]) {
					if (e instanceof FileSystemIdObject) {
						str += indent + "    " + e.toString() + "\n";
					}
				}
			}
		}
	}

	for (var i = 0; i < this.childs.length; i++) {
		var c = this.childs[i];

		if (c instanceof DF) {
			str += c.dump("  " + indent);
		} else {
			str += "  " + indent + c.toString() + "\n";
		}
	}
	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview AuthenticationObject - Password, PIN or key container for external authentication
 */

var APDU                = require('scsh/cardsim/APDU').APDU;



/**
 * Create an adapter to decode a APDU for data unit handling
 *
 * @class Adapter class to decode APDUs for data unit handling
 * @constructor
 * @param {APDU} apdu the APDU to decode
 */
function DataUnitAPDU(apdu) {
	this.apdu = apdu;

	var p1 = apdu.getP1();

	if ((this.apdu.getINS() & 1) == 0) {		// Even instruction
		if ((p1 & 0x80) == 0x80) {				// SFI in P1
			this.offset = this.apdu.getP2();
			this.sfi = p1 & 0x1F;
		} else {
			this.offset = (p1 << 8) + this.apdu.getP2();
		}
		this.data = apdu.getCData();
	} else {									// Odd instruction
		var p2 = apdu.getP2();
		var fid = (p1 << 8) + p2;				// FID in P1 P2
		// If bits b16 - b6 are all 0 and b5 - b1 are not all equal, then we have an SFI
		if (((fid & 0xFFE0) == 0) && ((fid & 0x1F) >= 1) && ((fid & 0x1F) <= 30)) {
			this.sfi = fid & 0x1F;
		} else if (fid != 0) {					// FID = 0000 means current file
			var bb = new ByteBuffer();
			bb.append(p1);
			bb.append(p2);
			this.fid = bb.toByteString();
		}

		var a = this.apdu.getCDataAsTLVList();

		if ((a.length < 1) || (a.length > 2)) {
			throw new GPError("DataUnitAPDU", GPError.INVALID_DATA, APDU.SW_INVDATA, "Invalid data for odd instruction data handling command, less than one or more than two elements in TLV");
		}

		var o = a.index(0);
		if (o.getTag() != 0x54) {
			throw new GPError("DataUnitAPDU", GPError.INVALID_DATA, APDU.SW_INVDATA, "Invalid data for odd instruction data handling command, first tag must be '54' offset");
		}

		this.offset = o.getValue().toUnsigned();

		if (a.length == 2) {
			var o = a.index(1);
			var t = o.getTag();
			if ((t != 0x53) && (t != 0x73)) {
				throw new GPError("DataUnitAPDU", GPError.INVALID_DATA, APDU.SW_INVDATA, "Invalid data for odd instruction data handling command, second tag must be '53' or '73'");
			}

			this.data = o.getValue();
		}
	}
}

exports.DataUnitAPDU = DataUnitAPDU;



/**
 * Gets the short file identifier, if one defined
 *
 * @type Number
 * @return the short file identifier in the range 1 to 30 or -1 if not defined
 */
DataUnitAPDU.prototype.getSFI = function() {
	if (typeof(this.sfi) == "undefined") {
		return -1;
	}
	return this.sfi;
}



/**
 * Gets the file identifier, if one defined
 *
 * @type ByteString
 * @return the file identifier or null if not defined
 */
DataUnitAPDU.prototype.getFID = function() {
	if (typeof(this.fid) == "undefined") {
		return null;
	}
	return this.fid;
}



/**
 * Gets the offset
 *
 * @type Number
 * @return the offset to read from or write to
 */
DataUnitAPDU.prototype.getOffset = function() {
	return this.offset;
}



/**
 * Get the command data
 *
 * @type ByteString
 * @return the command data
 */
DataUnitAPDU.prototype.getCData = function() {
	if (!this.hasCData()) {
		throw new GPError("APDU", GPError.INVALID_DATA, APDU.SW_INVDATA, "No data in command APDU");
	}
	return this.data;
}



/**
 * Returns true if command data in contained in the APDU
 *
 * @type boolean
 * @returns true if command data contained
 */
DataUnitAPDU.prototype.hasCData = function() {
	return ((typeof(this.data) != "undefined") && (this.data != null));
}



/**
 * Simple Unit Test
 */
DataUnitAPDU.test = function() {
	var apdu = new APDU(0x00, 0xB0, 0, 0, 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0);
	assert(!dh.hasCData());

	var apdu = new APDU(0x00, 0xB0, 0x7F, 0xFF, 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0x7FFF);
	assert(!dh.hasCData());

	var apdu = new APDU(0x00, 0xB0, 0x80, 0, 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0);
	assert(!dh.hasCData());

	var apdu = new APDU(0x00, 0xB0, 0x80, 0xFF, 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0xFF);
	assert(!dh.hasCData());

	var apdu = new APDU(0x00, 0xB1, 0, 0, new ByteString("540100", HEX), 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0);
	assert(!dh.hasCData());

	var apdu = new APDU(0x00, 0xB1, 0, 0, new ByteString("5401FF", HEX), 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0xFF);
	assert(!dh.hasCData());

	var apdu = new APDU(0x00, 0xB1, 0, 0, new ByteString("540401000000", HEX), 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0x01000000);
	assert(!dh.hasCData());

	var data = new ByteString("1234", ASCII);

	var apdu = new APDU(0x00, 0xD6, 0, 0, data);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0);
	assert(dh.hasCData());
	assert(dh.getCData().equals(data));

	var apdu = new APDU(0x00, 0xD6, 0x7F, 0xFF, data);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0x7FFF);
	assert(dh.hasCData());
	assert(dh.getCData().equals(data));

	var apdu = new APDU(0x00, 0xD6, 0x80, 0, data);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0);
	assert(dh.hasCData());
	assert(dh.getCData().equals(data));

	var apdu = new APDU(0x00, 0xD6, 0x80, 0xFF, data);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0xFF);
	assert(dh.hasCData());
	assert(dh.getCData().equals(data));

	var apdu = new APDU(0x00, 0xD7, 0, 0, (new ByteString("5401005304", HEX)).concat(data), 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0);
	assert(dh.hasCData());
	assert(dh.getCData().equals(data));

	var apdu = new APDU(0x00, 0xD7, 0, 0, (new ByteString("5401FF5304", HEX)).concat(data), 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0xFF);
	assert(dh.hasCData());
	assert(dh.getCData().equals(data));

	var apdu = new APDU(0x00, 0xD7, 0, 0, (new ByteString("5404010000005304", HEX)).concat(data), 0);
	var dh = new DataUnitAPDU(apdu);
	assert(dh.getOffset() == 0x01000000);
	assert(dh.hasCData());
	assert(dh.getCData().equals(data));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a ISO 7816-4 file system simulation
 */



/**
 * Create a File Control Parameter containing information about a file system node
 *
 * @class Class storing File Control Parameter for a file system node
 * @constructor
 */
function FCP() {
}

exports.FCP = FCP;


/** File type for DF */
FCP.DEDICATEDFILE = 0x38;

/** File type for transparent EF */
FCP.TRANSPARENT   = 0x01;

/** File type for record oriented EF with fixed record size */
FCP.LINEARFIXED   = 0x02;

/** File type for record oriented EF with variable record size */
FCP.LINEARVARIABLE   = 0x04;


/**
 * Convert an integer value into an two byte ByteString
 *
 * @param {Number} val the value
 * @type ByteString
 * @return the 2 byte encoded value MSB||LSB
 */
FCP.short2bytestring = function(val) {
	var bb = new ByteBuffer();
	bb.append(val >> 8);
	bb.append(val & 0xFF);
	return(bb.toByteString());
}



/**
 * Construct a new FCP object from parameters.
 *
 * <p>This function should never be called directly. Use newTransparentDF(), newDF() or newLinearEF() instead.</p>
 *
 * @param {String|ByteString} fid the file identifier (2 Bytes)
 * @param {Number} sfi the short file identifier or -1 or 0 if not defined
 * @param {Number} type the file type, one of FCP.DEDICATEDFILE, FCP.TRANSPARENT or FCP.LINEAR*
 * @param {Boolean} shareable true, if file may be shared between logical channels
 * @param {Boolean} internal true, if file is internal only and not externally selectable
 * @param {ByteString} supl supplemental information
 * @type FCP
 * @return the newly constructed FCP object
 */
FCP.newFCP = function(fid, sfi, type, shareable, internal, supl) {
	var fcp = new FCP();
	
	if (fid != null) {
		if (typeof(fid) == "string") {
			if (fid.length != 4) {
				throw new GPError("FCP", GPError.INVALID_DATA, 0, "File Identifier must be 2 bytes");
			}
			fcp.fid = new ByteString(fid, HEX);
		} else if (fid instanceof ByteString) {
			if (fid.length != 2) {
				throw new GPError("FCP", GPError.INVALID_DATA, 0, "File Identifier must be 2 bytes");
			}
			fcp.fid = fid;
		} else {
			throw new GPError("FCP", GPError.INVALID_TYPE, 0, "Argument must be of type String or ByteString");
		}
	}
	
	if (typeof(sfi) != "number") {
		throw new GPError("FCP", GPError.INVALID_TYPE, 1, "Argument must be of type Number");
	}
	if ((sfi >= -1) && (sfi <= 30)) {
		if (sfi > 0) {
			fcp.sfi = sfi;
		}
	} else {
		throw new GPError("FCP", GPError.INVALID_DATA, 1, "SFI must be in the range 1 to 30 or 0 if not defined");
	}

	if (typeof(type) != "number") {
		throw new GPError("FCP", GPError.INVALID_TYPE, 2, "Argument must be of type Number");
	}
	fcp.type = type;

	if (typeof(shareable) != "boolean") {
		throw new GPError("FCP", GPError.INVALID_TYPE, 3, "Argument must be of type Boolean");
	}
	fcp.shareable = shareable;

	if (typeof(internal) != "boolean") {
		throw new GPError("FCP", GPError.INVALID_TYPE, 4, "Argument must be of type Boolean");
	}
	fcp.internal = internal;

	fcp.supl = supl;
	return fcp;
}



/**
 * Construct a new FCP object for an EF of type transparent.
 *
 * @param {String|ByteString} fid the file identifier (2 Bytes)
 * @param {Number} sfi the short file identifier or -1 or 0 if not defined
 * @param {Number} size the file size
 * @param {ByteString} supl supplemental information
 * @type FCP
 * @return the newly constructed FCP object
 */
FCP.newTransparentEF = function(fid, sfi, size, supl) {
	if (typeof(size) != "number") {
		throw new GPError("FCP", GPError.INVALID_TYPE, 2, "Argument size must be of type Number");
	}

	var fcp = FCP.newFCP(fid, sfi, FCP.TRANSPARENT, false, false, supl);

	fcp.size = size;
	return fcp;
}



/**
 * Construct a new FCP object for a DF.
 *
 * @param {String|ByteString} fid the file identifier (2 Bytes)
 * @param {ByteString} aid the DF's application identifier (DFName)
 * @param {ByteString} supl supplemental information
 * @type FCP
 * @return the newly constructed FCP object
 */
FCP.newDF = function(fid, aid, supl) {
	var fcp = FCP.newFCP(fid, -1, FCP.DEDICATEDFILE, false, false, supl);

	if (aid != null) {
		if ((typeof(aid) != "object") && !(aid instanceof(ByteString))) {
			throw new GPError("FCP", GPError.INVALID_TYPE, 2, "Argument size must be of type Number");
		}
		fcp.aid = aid;
	}

	return fcp;
}



/**
 * Construct a new FCP object for an EF of type linear.
 *
 * @param {String|ByteString} fid the file identifier (2 Bytes)
 * @param {Number} sfi the short file identifier or -1 or 0 if not defined
 * @param {Number} type the file type, one of FCP.LINEARFIXED or FCP.LINEARVARIABLE
 * @param {Number} recno the maximum number of records
 * @param {Number} recsize the maximum or fixed record size
 * @param {ByteString} supl supplemental information
 * @type FCP
 * @return the newly constructed FCP object
 */
FCP.newLinearEF = function(fid, sfi, type, recno, recsize, supl) {
	if (typeof(recsize) != "number") {
		throw new GPError("FCP", GPError.INVALID_TYPE, 3, "Argument recsize must be of type Number");
	}
	if (typeof(recno) != "number") {
		throw new GPError("FCP", GPError.INVALID_TYPE, 4, "Argument recno must be of type Number");
	}

	var fcp = FCP.newFCP(fid, sfi, type, false, false, supl);
	return fcp;
}



/**
 * Returns the File Identifier (FID)
 *
 * @type ByteString
 * @return the FID
 */
FCP.prototype.getFID = function() {
	return this.fid;
}



/**
 * Returns the Application Identifier (AID)
 *
 * @type ByteString
 * @return the AID
 */
FCP.prototype.getAID = function() {
	return this.aid;
}



/**
 * Returns the Short File Identifier (SFI)
 *
 * @type Number
 * @return the SFI
 */
FCP.prototype.getSFI = function() {
	return this.sfi;
}



/**
 * Returns the encoded FCP
 *
 * @type ByteString
 * @return the encoded FCP
 */
FCP.prototype.getBytes = function() {
	var fcp = new ASN1("fcp", 0x62);

	if (typeof(this.size) != "undefined") {
		fcp.add(new ASN1("fileSizeTransparent", 0x80, FCP.short2bytestring(this.size)));
	}

	var bb = new ByteBuffer();
	bb.append(this.type);
	
	// ToDo: extra type bytes
	
	fcp.add(new ASN1("fileDescriptor", 0x82, bb.toByteString()));
	
	if (typeof(this.fid) != "undefined") {
		fcp.add(new ASN1("fileIdentifier", 0x83, this.fid));
	}
	
	if (typeof(this.aid) != "undefined") {
		fcp.add(new ASN1("dFName", 0x84, this.aid));
	}
	
	if (typeof(this.sfi) != "undefined") {
		var bb = new ByteBuffer();
		bb.append(this.sfi << 3);
		fcp.add(new ASN1("shortFileIdentifier", 0x88, bb.toByteString()));
	}
	
	return(fcp.getBytes());
}



/**
 * Returns the FCI
 *
 * @type ASN1
 * @return the FCI
 */
FCP.prototype.getFCI = function() {
	var fci = new ASN1("fci", 0x6F);

	if (typeof(this.aid) != "undefined") {
		fci.add(new ASN1("dFName", 0x84, this.aid));
	}

	if (this.supl) {
		fci.add(new ASN1(this.supl));
	}

	return(fci);
}



/**
 * Return a human readible string for this object
 *
 * @type String
 * @return the string
 */
FCP.prototype.toString = function() {
	var str = "FCP(";
	
	for (var i in this) {
		if (typeof(this[i]) != "function") {
			str += i + "=" + this[i] + ",";
		}
	}
	str += ")";
	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a ISO 7816-4 file system simulation
 */



/**
 * Construct a file system node
 *
 * @class Abstract class for file system nodes
 * @constructor
 */
function FSNode(fcp) {
	this.parent = null;
	this.fcp = fcp;
}

exports.FSNode = FSNode;



/**
 * Sets the parent for this node
 *
 * @param {DF} the parent node
 */
FSNode.prototype.setParent = function(parent) {
	if ((typeof(parent) != "object") && !(parent.isDF())) {
		throw new GPError("FSNode", GPError.INVALID_TYPE, 0, "Argument parent must be of type DF");
	}
	this.parent = parent;
}



/**
 * Gets the parent node for this node
 *
 * @type DF
 * @returns the parent node
 */
FSNode.prototype.getParent = function() {
	return this.parent;
}



/**
 * Gets the file control parameter for this node
 *
 * @type FCP
 * @returns the FCP
 */
FSNode.prototype.getFCP = function() {
	return this.fcp;
}



/**
 * Returns true if this is a DF
 *
 * @type boolean
 * @return true if this is a DF
 */
FSNode.prototype.isDF = function() {
	return false;
}



/**
 * Returns a human readible string
 *
 * @type String
 * @return a string
 */
FSNode.prototype.toString = function() {
	if (!this.fcp || !this.fcp.getFID()) {
		return "FSNode";
	}
	return this.fcp.getFID().toString(HEX);
}

/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a ISO 7816-4 file system simulation
 */

var APDU                = require('scsh/cardsim/APDU').APDU;
var FCP                 = require('scsh/cardsim/FCP').FCP;
var DF                  = require('scsh/cardsim/DF').DF
var TransparentEF       = require('scsh/cardsim/TransparentEF').TransparentEF;
var SecurityEnvironment = require('scsh/cardsim/SecurityEnvironment').SecurityEnvironment;



/**
 * Create a file selector object
 *
 * @class Class implementing a file selector used to store information about the currently selected
 *        file system object and to process the SELECT APDU
 * @constructor
 * @param {DF} mf the master file
 */
function FileSelector(mf) {
	if ((typeof(mf) != "object") && !(mf instanceof DF)) {
		throw new GPError("FileSelector", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Argument 1 must be of type DF");
	}

	this.mf = mf;
	this.selectMF();

	this.se = { VEXK: new SecurityEnvironment(), CDIK: new SecurityEnvironment(), SMRES: new SecurityEnvironment(), SMCOM: new SecurityEnvironment()};
	this.globalAuthenticationState = [];
}

exports.FileSelector = FileSelector;



/**
 * Returns the current EF, if any
 *
 * @type EF
 * @return the current EF or null
 */
FileSelector.prototype.getCurrentEF = function() {
	return this.currentEF;
}



/**
 * Return the current security environment
 *
 * @type Object
 * @returns Object with properties VEXK, CDIK, SMRES and SMCOM containing SecurityEnvironment objects
 */
FileSelector.prototype.getSecurityEnvironment = function() {
	return this.se;
}



/**
 * Return meta data associated with the current DF or MF
 *
 * @param {String} name the meta data name
 * @type Object
 * @returns The meta data
 */
FileSelector.prototype.getMeta = function(name) {
	var meta;

	if (this.currentDF) {
//		print("DF selected: " + this.currentDF);
		var meta = this.currentDF.meta[name];
//		print("Found: " + meta);
	}

	if (!meta) {
		meta = this.mf.meta[name];
	}
	return meta;
}



/**
 * Return object of given type identified by id
 *
 * <p>If bit b8 in the id is 1, then the search will start in the current DF. If the object
 *    is not found, the search is continued in the MF. If the bit is not set, then the search
 *    will only look into the MF.</p>
 *
 * @param {String} type the type of the object
 * @param {Number} id the id, bit b8 indicating local DF or global MF search
 * @type {Object}
 * @returns the object of the requested type or null if not found
 */
FileSelector.prototype.getObject = function(type, id) {
	var olist;

	if (id & 0x80) {
		olist = this.currentDF.meta[type];
		if (olist) {
			var o = olist[id & 0x7F];

			if (o) {
				return o;
			}
		}
	}

	olist = this.mf.meta[type];
	if (olist) {
		var o = olist[id & 0x7F];

		if (o) {
			return o;
		}
	}
	return null;
}



/**
 * Enumerate objects of a defined type
 *
 * @param {String} type the type of the object
 * @type {Number[]}
 * @returns the list of objects found
 */
FileSelector.prototype.enumerateObjects = function(type) {
	var idlist = [];

	if (this.mf != this.currentDF) {
		for each (var o in this.currentDF.meta[type]) {
			idlist.push(o.getId());
		}
	}

	for each (var o in this.mf.meta[type]) {
		idlist.push(o.getId());
	}

	return idlist;
}



/**
 * Add authenticated object to the list of authentication states for the local DF or global MF
 *
 * @param{boolean} global true if global state else local DF state
 * @param{AuthenticationObject} ao the authentication object for which authentication was successfull
 */
FileSelector.prototype.addAuthenticationState = function(global, ao) {
	if (global) {
		this.globalAuthenticationState.push(ao);
	} else {
		this.localAuthenticationState.push(ao);
	}
}



/**
 * Add authenticated object to the list of authentication states for the local DF or global MF
 *
 * @param{boolean} global true if global state else local DF state
 * @param{AuthenticationObject} ao the authentication object for which authentication was successfull
 */
FileSelector.prototype.isAuthenticated = function(global, ao) {
	if (global) {
		var list = this.globalAuthenticationState;
	} else {
		var list = this.localAuthenticationState;
	}
	for each (var aao in list) {
		if (aao === ao) {
			return true;
		}
	}
	return false;
}



/**
 * Select the MF
 */
FileSelector.prototype.selectMF = function() {
	this.currentDF = this.mf;
	this.currentEF = null;
	this.localAuthenticationState = [];

	return this.mf;
}



/**
 * Select a DF entry by FID
 *
 * @param {ByteString} fid the file identifier
 * @param {boolean} check if file matches expected type EF or DF
 * @param {boolean} df true if the check must check for a DF type, else a EF type
 * @type FSNode
 * @return the selected file system node
 */
FileSelector.prototype.selectFID = function(fid, check, df) {
	var node = this.currentDF.selectByFID(fid);

	if (!node) {
		throw new GPError("FileSelector", GPError.INVALID_DATA, APDU.SW_FILENOTFOUND, "File " + fid + " not found");
	}

	if (check) {
		if ((df && !node.isDF()) || (!df && node.isDF())) {
			throw new GPError("FileSelector", GPError.INVALID_DATA, APDU.SW_FILENOTFOUND, "File " + fid + " not found or not of matching type");
		}
	}

	if (node.isDF()) {
		this.currentDF = node;
		this.localAuthenticationState = [];
		this.currentEF = null;
	} else {
		this.currentEF = node;
	}
	return node;
}



/**
 * Select a DF entry by SFI
 *
 * @param {Number} sfi the short file identifier
 * @type FSNode
 * @return the selected file system node
 */
FileSelector.prototype.selectSFI = function(sfi) {
	var node = this.currentDF.selectBySFI(sfi);

	if (!node) {
		throw new GPError("FileSelector", GPError.INVALID_DATA, APDU.SW_FILENOTFOUND, "File with SFI " + sfi + " not found");
	}

	this.currentEF = node;
	return node;
}



/**
 * Processes the SELECT APDU
 *
 * <p>Supports in P1</p>
 * <ul>
 *  <li>'00' with empty data to select the MF</li>
 *  <li>'00' with "3F00" to select the MF</li>
 *  <li>'00' with fid to select an entry in the current DF</li>
 *  <li>'01' with fid to select a DF in the current DF</li>
 *  <li>'02' with fid to select an EF in the current DF</li>
 *  <li>'03' with empty data to select the parent</li>
 * </ul>
 * <p>Supports in P2</p>
 * <ul>
 *  <li>'00' with P1=='00' return no data</li>
 *  <li>'04' return FCP</li>
 *  <li>'0C' return no data</li>
 * </ul>
 * @param {APDU} apdu the select APDU
 */
FileSelector.prototype.processSelectAPDU = function(apdu) {
	var node;

	var p2 = apdu.getP2();
	if ((p2 != 0x00) && (p2 != 0x04) && (p2 != 0x0C)) {
		throw new GPError("FileSelector", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Incorrect parameter P2 (" + p2.toString(16) + ")");
	}

	var data = apdu.getCData();
	var p1 = apdu.getP1();
	switch(p1) {
	case 0x00:
		if ((typeof(data) == "undefined") || (data.toString(HEX) == "3F00")) {
			node = this.selectMF();
		} else {
			node = this.selectFID(data, false, false);
		}
		break;
	case 0x01:
		node = this.selectFID(data, true, true);
		break;
	case 0x02:
		node = this.selectFID(data, true, false);
		break;
	case 0x03:
		// ToDo data must be missing APDU.SW_INVLC
		if (this.currentEF) {
			this.currentEF = null;
			node = this.currentDF;
		} else {
			node = this.currentDF.getParent();
			if (node) {
				this.currentDF = node;
				this.localAuthenticationState = [];
			} else {
				node = this.currentDF;
			}
		}
		break;
	case 0x04:
		node = this.mf.selectByAID(data);
		if (typeof(node) == "undefined") {
			throw new GPError("FileSelector", GPError.INVALID_DATA, APDU.SW_FILENOTFOUND, "Application " + data + " not found");
		}
		this.currentDF = node;
		this.currentEF = null;
		this.localAuthenticationState = [];
		break;
	default:
		throw new GPError("FileSelector", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Incorrect parameter P1 (" + p1.toString(16) + ")");
	}

	switch(p2) {
	case 0x00:
		apdu.setRData(node.getFCP().getFCI().getBytes());
		break;
	case 0x04:
		apdu.setRData(node.getFCP().getBytes());
		break;
	}

	apdu.setSW(APDU.SW_OK);
}



/**
 * Return a human readable string for this object
 */
FileSelector.prototype.toString = function() {
	var str = "FileSelector: Current DF=" + this.currentDF + " / Current EF=" + this.currentEF;
	if (this.globalAuthenticationState.length > 0) {
		str += "\nGlobally authenticated objects:";
		for each (var aao in this.globalAuthenticationState) {
			str += "\n" + aao.toString();
		}
	}
	if (this.localAuthenticationState.length > 0) {
		str += "\nLocally authenticated objects:";
		for each (var aao in this.localAuthenticationState) {
			str += "\n" + aao.toString();
		}
	}
	return str;
}



FileSelector.test = function() {

	var aid = new ByteString("A0000000010101", HEX);

	var mf = new DF(FCP.newDF("3F00", null),
						new TransparentEF(FCP.newTransparentEF("2F00", -1, 100)),
						new TransparentEF(FCP.newTransparentEF("2F01", 0x17, 100)),
						new DF(FCP.newDF("DF01", aid),
							new TransparentEF(FCP.newTransparentEF("2F01", -1, 100))
						)
					);

	print(mf.dump(""));

	assert(mf.isDF());

	var ef = mf.selectByFID(new ByteString("2F00", HEX));
	assert(!ef.isDF());
	assert(ef.getFCP().getFID().toString(HEX) == "2F00");

	var ef = mf.selectBySFI(0x17);
	assert(ef.getFCP().getFID().toString(HEX) == "2F01");

	var df = mf.selectByAID(aid);
	assert(df.getFCP().getFID().toString(HEX) == "DF01");

	var fs = new FileSelector(mf);

	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, new ByteString("3F00", HEX));
	fs.processSelectAPDU(a);
	print(fs);
	print(a);

	var a = new APDU(0x00, 0xA4, 0x00, 0x0C, new ByteString("2F00", HEX));
	fs.processSelectAPDU(a);
	print(fs);
	print(a);

	var a = new APDU(0x00, 0xA4, 0x01, 0x0C, new ByteString("DF01", HEX));
	fs.processSelectAPDU(a);
	print(fs);
	print(a);

	var a = new APDU(0x00, 0xA4, 0x02, 0x0C, new ByteString("2F01", HEX));
	fs.processSelectAPDU(a);
	print(fs);
	print(a);
}


// test();

/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of ISO 7816-4 APDU processing
 */



/**
 * Create a file system object identifiable by an id
 *
 * @class Abstract class for file system objects identified by an identifier
 *
 * @param {String} name the human readable name of the object
 * @param {Number} id the id
 */
function FileSystemIdObject(name, id) {
	this.name = name;
	this.id = id;
}

exports.FileSystemIdObject = FileSystemIdObject;


/**
 * Return id of object
 */
FileSystemIdObject.prototype.getId = function() {
	return this.id;
}



/**
 * Return type of object
 * @type string
 * @return type of object
 */
FileSystemIdObject.prototype.getType = function() {
	throw new GPError("FileSystemIdObject", GPError.NOT_IMPLEMENTED, 0, "Derived class must override getType()");
}



/**
 * Return human readable string
 */
FileSystemIdObject.prototype.toString = function() {
	return this.name + "(" + this.id + ")";
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a ISO 7816-4 file system simulation
 */

var APDU                = require('scsh/cardsim/APDU').APDU;
var FCP                 = require('scsh/cardsim/FCP').FCP;
var FSNode              = require('scsh/cardsim/FSNode').FSNode;



/**
 * Creates a LinearEF
 *
 * @class Class implementing linear EFs
 * @constructor
 * @param {FCP} the file control parameter
 * @param {ByteString[]} records the array of records
 */
function LinearEF(fcp, records) {
	if (!(fcp instanceof FCP)) {
		throw new GPError("LinearEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Argument 1 must be of type FCP");
	}
//	print(typeof(records));
	if ((typeof(records) != "undefined") && (records != null) && (typeof(records) != "object")) {
		throw new GPError("LinearEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Argument 2 must be of type ByteString[]");
	}

	FSNode.call(this, fcp);
	this.records = records;
}

LinearEF.prototype = new FSNode();
LinearEF.prototype.constructor = LinearEF;

exports.LinearEF = LinearEF;



/**
 * Reads a record from a linear EF
 *
 * @param {APDU} apdu the APDU used for reading
 * @param {Number} recno the record number
 * @param {Number} qualifier the qualifier as encoded in bit b3 - b1 of P1
 * @param {Number} length the length in bytes or 0 for all in short APDU or 65536 for all in extended APDUs
 * @type ByteString
 * @return the data read
 */
LinearEF.prototype.readRecord = function(apdu, recno, qualifier, length) {
	if (typeof(recno) != "number") {
		throw new GPError("LinearEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Record number must be type Number");
	}
	if (typeof(qualifier) != "number") {
		throw new GPError("LinearEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Qualifier must be type Number");
	}

	if (recno == 0) {
		throw new GPError("LinearEF", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Current record referencing with P1=00 not support");
	}
	recno--;

	if (recno >= this.records.length) {
		throw new GPError("LinearEF", GPError.INVALID_DATA, APDU.SW_RECORDNOTFOUND, "Record number exeeds number of defined records");
	}

	if (qualifier != 4) {
		throw new GPError("LinearEF", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Only absolute record references supported");
	}

	var record = this.records[recno];

	var rlen = length;
	if ((length == 0) || (length == 65536)) {
		rlen = record.length;
		if ((length == 0) && (rlen > 256)) {
			rlen = 256;
		}
	}

	if (rlen > record.length) {
		apdu.setSW(APDU.SW_EOF);
		rlen = record.length;
	} else {
		apdu.setSW(APDU.SW_OK);
	}

	return record.left(rlen);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a secure messaging channel as defined in ISO 7814-4 and eSign-K
 */

var APDU                                = require('scsh/cardsim/APDU').APDU;
var SecureMessagingCommandAPDUDecoder   = require('scsh/cardsim/SecureMessagingCommandAPDUDecoder').SecureMessagingCommandAPDUDecoder;



/**
 * Create a secure channel
 *
 * @class Class implementing a secure messaging channel
 * @constructor
 * @param {Crypto} crypto the crypto provider
 */
function SecureChannelHandler(crypto) {
	this.crypto = crypto;
	this.policy = IsoSecureChannel.SSC_DEFAULT_POLICY;
}

exports.SecureChannelHandler = SecureChannelHandler;



/**
 * Sets the policy for handling send sequence counters
 *
 * See IsoSecureChannel for details
 *
 * @param {Number} policy one of IsoSecureChannel.SSC_DEFAULT_POLICY, SSC_SYNC_POLICY or SSC_SYNC_ENC_POLICY
 */
SecureChannelHandler.prototype.setSendSequenceCounterPolicy = function(policy) {
	this.policy = policy;
}



/**
 * Sets the key used for encryption
 *
 * @param {Key} key the encryption key
 */
SecureChannelHandler.prototype.setEncKey = function(key) {
	this.encKey = key;

	if (key.getComponent(Key.AES)) {
		this.encBlockSize = 16;
		this.encMechanism = Crypto.AES_CBC;
		this.iv = new ByteString("00000000000000000000000000000000", HEX);
	} else {
		this.encBlockSize = 8;
		this.encMechanism = Crypto.DES_CBC;
		this.iv = new ByteString("0000000000000000", HEX);
	}
}



/**
 * Sets the key used for message authentication
 *
 * @param {Key} key the message authentication key
 */
SecureChannelHandler.prototype.setMacKey = function(key) {
	this.macKey = key;

	if (key.getComponent(Key.AES)) {
		this.macBlockSize = 16;
		this.macMechanism = Crypto.AES_CMAC;
	} else {
		this.macBlockSize = 8;
		this.macMechanism = Crypto.DES_MAC_EMV;
	}
}



/**
 * Set the send sequence counter for MAC calculation
 *
 * @param {ByteString} ssc the send sequence counter
 */
SecureChannelHandler.prototype.setMACSendSequenceCounter = function(ssc) {
	this.macSendSequenceCounter = ssc;
}



/**
 * Set the send sequence counter for encryption calculation
 *
 * @param {ByteString} ssc the send sequence counter
 */
SecureChannelHandler.prototype.setEncSendSequenceCounter = function(ssc) {
	this.encSendSequenceCounter = ssc;
}



/**
 * Return an initialisation vector based on the defined policy
 *
 * @type ByteString
 * @return the IV
 */
SecureChannelHandler.prototype.getIV = function() {
	var iv = this.iv;
	if (this.policy == IsoSecureChannel.SSC_SYNC_ENC_POLICY) {
		iv = this.crypto.encrypt(this.encKey, this.encMechanism, this.macSendSequenceCounter, iv);
	} else if (this.policy == IsoSecureChannel.SSC_SYNC_POLICY) {
		iv = this.macSendSequenceCounter;
	} else {
		if (typeof(this.encSendSequenceCounter) != "undefined") {
			iv = this.encSendSequenceCounter
		}
	}
	return iv;
}



/**
 * Unwrap a secure messaging APDU recovering the content
 *
 * @param {APDU} apdu the APDU to unwrap
 */
SecureChannelHandler.prototype.unwrap = function(apdu) {
	var decoder = new SecureMessagingCommandAPDUDecoder(this, apdu);
	if (!decoder.verifyMAC(this.macKey)) {
		throw new GPError("SecureChannelHandler", GPError.CRYPTO_FAILED, APDU.SW_INCSMDATAOBJECT, "MAC verification failed");
	}

	var le = decoder.getLe();
	if (le >= 0) {
		apdu.ne = le;
	} else {
		apdu.ne = undefined;
	}

	var plain = decoder.decryptBody(this.encKey);
	apdu.setCData(plain);
}



/**
 * Wrap an APDU for secure messaging
 *
 * @param {APDU} apdu the APDU to wrap
 */
SecureChannelHandler.prototype.wrap = function(apdu) {
	var rdata = new ByteBuffer();

	var macinp = new ByteBuffer();

	if (typeof(this.macSendSequenceCounter) != "undefined") {
		var ssc = this.macSendSequenceCounter.add(1);
		this.macSendSequenceCounter = ssc;
		macinp.append(ssc);
	}

	if (apdu.hasRData()) {
		var padbuff = new ByteBuffer(apdu.getRData());
		SecureMessagingCommandAPDUDecoder.pad(padbuff, this.encBlockSize);
		var iv = this.getIV();
		var cryptogram = this.crypto.encrypt(this.encKey, this.encMechanism, padbuff.toByteString(), iv);
		var padind = new ByteString("01", HEX);

		var do87 = new TLV(0x87, padind.concat(cryptogram), TLV.EMV);
		rdata.append(do87.getTLV());
	}

	rdata.append(0x99);
	rdata.append(2);
	rdata.append(apdu.getSW() >> 8);
	rdata.append(apdu.getSW() & 0xFF);

	macinp.append(rdata);

	SecureMessagingCommandAPDUDecoder.pad(macinp, this.macBlockSize);
	var mac = this.crypto.sign(this.macKey, this.macMechanism, macinp.toByteString());

	rdata.append(0x8E);
	rdata.append(0x08);
	rdata.append(mac.left(8));

	apdu.setRData(rdata.toByteString());
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a secure messaging channel as defined in ISO 7814-4 and eSign-K
 */

var APDU            = require('scsh/cardsim/APDU').APDU;



/**
 * Creates a decoder for a single secure messaging command APDU
 *
 * @class Decoder for a secure messaging APDU
 * @constructor
 * @param {SecureChannel} channel the secure channel object
 * @param {APDU} apdu the secure messaging APDU
 */
function SecureMessagingCommandAPDUDecoder(channel, apdu) {
	this.channel = channel;
	this.apdu = apdu;
	this.tlvlist = apdu.getCDataAsTLVList();
}

exports.SecureMessagingCommandAPDUDecoder = SecureMessagingCommandAPDUDecoder;



/**
 * Verify the message authentication code (MAC)
 *
 * @type boolean
 * @return true if the MAC is valid
 */
SecureMessagingCommandAPDUDecoder.prototype.verifyMAC = function() {
	var macinp = this.buildMACInput();

	var mac = this.tlvlist.find(0x8E);

	if (mac == null) {
		throw new GPError("SecureMessagingCommandAPDUDecoder", GPError.INVALID_DATA, APDU.SW_SMOBJMISSING, "MAC data object (8E) not found");
	}

	return this.channel.crypto.verify(this.channel.macKey, this.channel.macMechanism, macinp, mac.getValue());
}



/**
 * Build the MAC input block
 *
 * @type ByteString
 * @return the MAC calculation input block
 */
SecureMessagingCommandAPDUDecoder.prototype.buildMACInput = function() {
	var macinp = new ByteBuffer();

	if (typeof(this.channel.macSendSequenceCounter) != "undefined") {
		var ssc = this.channel.macSendSequenceCounter.add(1);
		this.channel.macSendSequenceCounter = ssc;
		macinp.append(ssc);
	}

	if (this.apdu.isAuthenticatedHeader()) {
		macinp.append(this.apdu.getCLA());
		macinp.append(this.apdu.getINS());
		macinp.append(this.apdu.getP1());
		macinp.append(this.apdu.getP2());
		SecureMessagingCommandAPDUDecoder.pad(macinp, this.channel.macBlockSize);
	}

	var someadded = false;
	for (var i = 0; i < this.tlvlist.length; i++) {
		var tlv = this.tlvlist.index(i);

		if (tlv.getTag() & 0x01) {
			macinp.append(tlv.getTLV());
			someadded = true;
		}
	}
	if (someadded) {
		SecureMessagingCommandAPDUDecoder.pad(macinp, this.channel.macBlockSize);
	}
	return macinp.toByteString();
}



/**
 * Decrypt the body of a secure messaging APDU
 *
 * @param {Key} key the encryption key
 * @type ByteString
 * @return the plain body or undefined if no encrypted body
 */
SecureMessagingCommandAPDUDecoder.prototype.decryptBody = function(key) {
	var body = this.tlvlist.find(0x87);
	var ofs = 1;
	if (body == null) {
		var body = this.tlvlist.find(0x85);
		if (body == null) {
			return undefined;
		}
		var ofs = 0;
	} else {
		var paddingIndicator = body.getValue().byteAt(0);
		if (paddingIndicator != 0x01) {
			throw new GPError("SecureMessagingCommandAPDUDecoder", GPError.INVALID_DATA, APDU.SW_INCSMDATAOBJECT, "Padding indicator " + paddingIndicator + " not supported");
		}
	}

	var cryptogram = body.getValue().bytes(ofs);

	var iv = this.channel.getIV();
	var plain = this.channel.crypto.decrypt(this.channel.encKey, this.channel.encMechanism, cryptogram, iv);

	plain = SecureMessagingCommandAPDUDecoder.removePadding(plain);

	return plain;
}



/**
 * Return value of optional Le element with tag '97'
 *
 * @type Number
 * @return the value of the Le element
 */
SecureMessagingCommandAPDUDecoder.prototype.getLe = function() {
	var le = this.tlvlist.find(0x97);
	if (le == null) {
		return -1;
	}
	var value = le.getValue().toUnsigned();
	if (le.getL() == 2 && value == 0) {
		return 65536;
	}
	return value;
}



/**
 * Applies ISO padding to the input buffer
 *
 * @param {ByteBuffer} buffer the input buffer
 * @param {Number} blocksize the block size
 * @type ByteBuffer
 * @return the buffer argument
 */
SecureMessagingCommandAPDUDecoder.pad = function(buffer, blocksize) {
	buffer.append(0x80);
	while (buffer.length % blocksize) {
		buffer.append(0x00);
	}
	return buffer;
}



/**
 * Removes the ISO padding
 *
 * @param {ByteString} buffer the input with with padding
 * @type ByteString
 * @return the buffer without padding
 */
SecureMessagingCommandAPDUDecoder.removePadding = function(buffer) {
	var i = buffer.length - 1;

	while ((i >= 0) && (buffer.byteAt(i) == 0x00)) {
		i--;
	}

	if ((i < 0) || (buffer.byteAt(i) != 0x80)) {
		throw new GPError("SecureMessagingCommandAPDUDecoder", GPError.CRYPTO_FAILED, APDU.SW_INCSMDATAOBJECT, "Invalid ISO padding");
	}

	return buffer.left(i);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Security environment - a container for security related data elements
 */



/**
 * Creates a security environment container that collects cryptographic reference templates (CRT)
 *
 * @class Class implementing a security environment for cryptographic operations.
 * @constructor
 */
function SecurityEnvironment() {
	this.t = { AT:null, KAT: null, HT: null, CCT:null, DST:null, CT: null };
}

exports.SecurityEnvironment = SecurityEnvironment;



/**
 * Adds CRT elements to a named template.
 *
 * @param {String} tname the CRT name one of AT, KAT, HT, CCT, DST or CT
 * @param {ASN1} tlv the tlv object containing the CRT elements
 **/
SecurityEnvironment.prototype.addElements = function(tname, tlv) {
	var t = this.t[tname];
	if (t) {
		for (var i = 0; i < tlv.elements; i++) {
			var o = tlv.get(i);
			SecurityEnvironment.decorateCRT(o);
			var j = 0;
			while(j < t.elements) {
				if (t.get(j).tag == o.tag) {
					t.remove(j);
				} else {
					j++;
				}
			}
			t.add(o);
		}
	} else {
		for (var i = 0; i < tlv.elements; i++) {
			var o = tlv.get(i);
			SecurityEnvironment.decorateCRT(o);
		}
		this.t[tname] = tlv;
	}
}



/**
 * Adds a CRT identified by it's tag
 *
 * @param {ASN1} tlv the tlv object
 */
SecurityEnvironment.prototype.add = function(tlv) {
	switch(tlv.tag) {
	case 0xA4:
		tlv.setName("AT");
		break;
	case 0xA6:
		tlv.setName("KAT");
		break;
	case 0xAA:
		tlv.setName("HT");
		break;
	case 0xB4:
		tlv.setName("CCT");
		break;
	case 0xB6:
		tlv.setName("DST");
		break;
	case 0xB8:
		tlv.setName("CT");
		break;
	default:
		throw new GPError("SecurityEnvironment", GPError.INVALID_DATA, tlv.tag, "Invalid tag for CRT");
	}
	this.addElements(tlv.name, tlv);
}



/**
 * Return textual representation of security environment container
 */
SecurityEnvironment.prototype.toString = function() {
	var str = "";

	if (this.t.AT) {
		str += "Authentication Template (AT)\n" + this.t.AT;
	}
	if (this.t.KAT) {
		str += "Key Agreement Template (KAT)\n" + this.t.KAT;
	}
	if (this.t.HT) {
		str += "Hash Template (HT)\n" + this.t.HT;
	}
	if (this.t.CCT) {
		str += "Cryptographic Checksum Template (CCT)\n" + this.t.CCT;
	}
	if (this.t.DST) {
		str += "Digital Signature Template (DST)\n" + this.t.DST;
	}
	if (this.t.CT) {
		str += "Confidentiality Template (CT)\n" + this.t.CT;
	}
	return str;
}



/**
 * Decorates a tlv object from the CRT
 */
SecurityEnvironment.decorateCRT = function(asn1) {
	switch(asn1.tag) {
	case 0x80:
		asn1.setName("cryptographicMechanism 80");
		break;
	case 0x81:
		asn1.setName("fileIdentifierOrPath 81");
		break;
	case 0x82:
		asn1.setName("dFName 82");
		break;
	case 0x83:
		asn1.setName("secretOrPublicKeyReference 83");
		break;
	case 0x84:
		asn1.setName("sessionOrPrivateKeyReference 84");
		break;
	case 0x85:
		asn1.setName("nullBlock 85");
		break;
	case 0x86:
		asn1.setName("chainingBlock 86");
		break;
	case 0x87:
		asn1.setName("initialBlock 87");
		break;
	case 0x88:
		asn1.setName("previousChallenge 88");
		break;
	case 0x89:
		asn1.setName("proprietaryDataElementIndex 89");
		break;
	case 0x8A:
		asn1.setName("proprietaryDataElementIndex 8A");
		break;
	case 0x8B:
		asn1.setName("proprietaryDataElementIndex 8B");
		break;
	case 0x8C:
		asn1.setName("proprietaryDataElementIndex 8C");
		break;
	case 0x8D:
		asn1.setName("proprietaryDataElementIndex 8D");
		break;
	case 0x90:
		asn1.setName("cardHashCode 90");
		break;
	case 0x91:
		asn1.setName("ephemeralPublicKey 91");
		break;
	case 0x92:
		asn1.setName("cardTimeStamp 92");
		break;
	case 0x93:
		asn1.setName("dsiCounter 93");
		break;
	case 0x94:
		asn1.setName("challengeOrDerivationParameter 94");
		break;
	case 0x95:
		asn1.setName("usageQualifier 95");
		break;
	case 0x8E:
		asn1.setName("cryptographicContentReference 8E");
		break;
	case 0x67:
		asn1.setName("auxiliaryAuthenticatedData 67");
		break;
	case 0x67:
		asn1.setName("auxiliaryAuthenticatedData 67");
		break;
	case 0x7F4C:
		asn1.setName("certificateHolderAuthorisationTemplate 7F4C");
		break;
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SignatureKey - Object storing information related to PrK.QES
 */

var FileSystemIdObject  = require('scsh/cardsim/FileSystemIdObject').FileSystemIdObject;
var APDU                = require('scsh/cardsim/APDU').APDU;



/**
 * Create a signature key object
 *
 * @class Class implementing signature keys
 *
 * @param {String} name the human readable name of the object
 * @param {Number} id the key id
 */
function SignatureKey(name, id) {
	FileSystemIdObject.call(this, name, id);
	this.isTerminated = true;			// State after TERMINATE
	this.allowTerminate = true;
}

SignatureKey.prototype = new FileSystemIdObject();
SignatureKey.prototype.constructor = SignatureKey;

exports.SignatureKey = SignatureKey;


SignatureKey.TYPE_KEY = "signaturekey";



/**
 * Override from base class
 */
SignatureKey.prototype.getType = function() {
	return SignatureKey.TYPE_KEY = "signaturekey";
}



/**
 * Terminate authentication object
 */
SignatureKey.prototype.terminate = function() {
	if (!this.allowTerminate) {
		throw new GPError("SignatureKey", GPError.INVALID_DATA, APDU.SW_CONDOFUSENOTSAT, "Terminate not allowed for signature key");
	}
	this.isTerminated = true;
}



/**
 * Convert object to a human readable string
 */
SignatureKey.prototype.toString = function() {
	return this.name + (this.isTerminated ? " terminated" : " active");
}


/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of a ISO 7816-4 file system simulation
 */

var APDU                = require('scsh/cardsim/APDU').APDU;
var FCP                 = require('scsh/cardsim/FCP').FCP;
var FSNode              = require('scsh/cardsim/FSNode').FSNode;



/**
 * Create a file system node that represents a transparent EF
 *
 * @class Class implementing a transparent EF
 * @constructor
 * @param {FCP} fcp the FCP for this EF
 * @param {ByteString} contents the contents for this EF
 */
function TransparentEF(fcp, contents) {
	if (!(fcp instanceof FCP)) {
		throw new GPError("TransparentEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Argument 1 must be of type FCP");
	}

	if ((typeof(contents) != "undefined") && (contents != null) && !(contents instanceof ByteString)) {
		throw new GPError("TransparentEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Argument 2 must be of type ByteString");
	}

	FSNode.call(this, fcp);
	this.content = contents;
}

TransparentEF.prototype = new FSNode();
TransparentEF.prototype.constructor = TransparentEF;

exports.TransparentEF = TransparentEF;



/**
 * Reads data from a transparent EF
 *
 * @param {APDU} apdu the APDU used for reading
 * @param {Number} offset the offset to read from
 * @param {Number} length the length in bytes or 0 for all in short APDU or 65536 for all in extended APDUs
 * @type ByteString
 * @return the data read
 */
TransparentEF.prototype.readBinary = function(apdu, offset, length) {
	if (typeof(offset) != "number") {
		throw new GPError("TransparentEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Offset must be type Number");
	}
	if (typeof(length) != "number") {
		throw new GPError("TransparentEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Length must be type Number");
	}

	if (offset >= this.content.length) {
		throw new GPError("TransparentEF", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Offset out of range");
	}

	var rlen = length;
	if ((length == 0) || (length == 65536)) {
		rlen = this.content.length - offset;
		if ((length == 0) && (rlen > 256)) {
			rlen = 256;
		}
	}

	if (offset + rlen > this.content.length) {
		apdu.setSW(APDU.SW_EOF);
		rlen = this.content.length - offset;
	} else {
		apdu.setSW(APDU.SW_OK);
	}

	return this.content.bytes(offset, rlen);
}



/**
 * Update data in transparent EF
 *
 * @param {APDU} apdu the APDU used for updating
 * @param {Number} offset the offset to update
 * @param {ByteString} data the data to write into the EF
 */
TransparentEF.prototype.updateBinary = function(apdu, offset, data) {
	if (typeof(offset) != "number") {
		throw new GPError("TransparentEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Offset must be type Number");
	}
	if ((typeof(data) != "object") || !(data instanceof ByteString)) {
		throw new GPError("TransparentEF", GPError.INVALID_TYPE, APDU.SW_GENERALERROR, "Data must be a ByteString");
	}

	if (offset + data.length > this.fcp.size) {
		throw new GPError("TransparentEF", GPError.INVALID_DATA, APDU.SW_WRONGLENGTH, "Writing beyond file limit");
	}

	if (this.content) {
		if (offset > this.content.length) {
			throw new GPError("TransparentEF", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Offset out of range");
		}
		var newcontent = this.content.bytes(0, offset).concat(data);
		if (this.content.length > newcontent.length) {
			newcontent = newcontent.concat(this.content.bytes(newcontent.length));
		}
	} else {
		if (offset > 0) {
			throw new GPError("TransparentEF", GPError.INVALID_DATA, APDU.SW_INCP1P2, "Offset out of range");
		}
		var newcontent = data;
	}

	this.content = newcontent;
	apdu.setSW(APDU.SW_OK);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview TrustAnchor Base class for card verifiable certificate based access controller
 */

var FileSystemIdObject = require('scsh/cardsim/FileSystemIdObject').FileSystemIdObject;
var APDU = require('scsh/cardsim/APDU').APDU;
var CVC = require("scsh/eac/CVC").CVC;



/**
 * Create a TrustAnchor object that handles certificate validation, terminal authentication and access control
 *
 * @constructor
 * @class Class implementing a CVC based access controller
 * @param {CVC} root the root certificate
 */
function TrustAnchor(root) {
	if (typeof(root) == "undefined") {
		return;
	}

	this.chain = [];
	this.chain.push(root);
	this.recentCAROnly = false;					// Maintain only the latest trust anchor

	// Save in file system under id, which is the last byte in the CHAT OID
	var chat = root.getCHAT();
	var id = chat.get(0).value.right(1).toUnsigned();
	var name = root.getCHR().getHolder();		// Use the name of the CVCA
	FileSystemIdObject.call(this, name, id);
}

TrustAnchor.prototype = new FileSystemIdObject();
TrustAnchor.prototype.constructor = TrustAnchor;

TrustAnchor.TYPE = "TrustAnchor";
TrustAnchor.idIS = new ByteString("id-IS", OID);

exports.TrustAnchor = TrustAnchor;


/**
 * Return type of file system object
 *
 * @type String
 * @return the type string
 */
TrustAnchor.prototype.getType = function() {
	return TrustAnchor.TYPE;
}




/**
 * Add recent trust anchor to PACE response
 *
 * @param {ASN1} response the response object to receive tag 87 and 88
 */
TrustAnchor.prototype.addCARforPACE = function(response) {
	var cl = this.chain.length;
	response.add(new ASN1(0x87, this.chain[cl - 1].getCHR().getBytes()));
	if ((cl > 1) && !this.recentCAROnly) {
		response.add(new ASN1(0x88, this.chain[cl - 2].getCHR().getBytes()));
	}
}



/**
 * Is a recent trust anchor issuer of the certificate chr in question
 *
 * @param {PublicKeyReference} chr the certificate holder
 * @type boolean
 * @return true if trust anchor issued certificate
 */
TrustAnchor.prototype.isIssuer = function(chr) {
	var cvc = this.getCertificateFor(chr);
//	print("isIssuer(" + chr + "):");
//	print(cvc);
	return cvc != null;
}



/**
 * Get public key from certificate, possibly determine the domain parameter from previous trust anchors
 *
 * @param {PublicKeyReference} chr the certificate holder
 * @type Key
 * @return the public key or null
 */
TrustAnchor.prototype.getPublicKeyFor = function(chr) {
//	print("Get public key for " + chr);
	var cl = this.chain.length - 1;
	for (; (cl >= 0) && !this.chain[cl].getCHR().equals(chr); cl--) {
	}

	if (cl < 0) {
//		print("chr not found");
		return null;
	}

	var i = cl;
	if (CVC.isECDSA(this.chain[cl].getPublicKeyOID()) && !this.chain[i].containsDomainParameter()) {
//		print("Looking for DPs down the chain");
		for (cl--; (cl >= 0) && !this.chain[cl].containsDomainParameter(); cl--) {}
		if (cl < 0) {
			return null;
		}
//		print("Found domain parameter in " + this.chain[cl]);
		var dp = this.chain[cl].getPublicKey();
		return this.chain[i].getPublicKey(dp);
	} else {
//		print(this.chain[i]);
		return this.chain[i].getPublicKey();
	}
}



/**
 * Return certificate for chr
 *
 * @param {PublicKeyReference} chr the certificate holder
 * @type CVC
 * @return the certificate or null
 */
TrustAnchor.prototype.getCertificateFor = function(chr) {
	var cl = this.chain.length;
	if (this.chain[cl - 1].getCHR().toString() == chr) {
		return this.chain[cl - 1];
	}
	if ((cl > 1) && !this.recentCAROnly) {
		if (this.chain[cl - 2].getCHR().toString() == chr) {
			return this.chain[cl - 2];
		}
	}
	return null;
}



/**
 * Update EF.CVCA with list of valid trust anchors
 *
 * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
 */
TrustAnchor.prototype.updateEFCVCA = function(dataProvider) {
	var cl = this.chain.length - 1;
	var bb = new ByteBuffer();
	bb.append((new ASN1(0x42, this.chain[cl].getCHR().getBytes())).getBytes());
	if ((cl > 0) && !this.recentCAROnly) {
		bb.append((new ASN1(0x42, this.chain[cl - 1].getCHR().getBytes())).getBytes());
	}
	bb.append(0);
	dataProvider.updateEFCVCA(bb.toByteString());
}



/**
 * Check certificate
 *
 * <p>This method updates the current date for certificates issued by domestic DVCAs.</p>
 * @param {CVC} issuer the issuing certificate
 * @param {CVC} subject the subjects certificate
 * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
 * @param {Key} dp domain parameter for checking the public key
 */
TrustAnchor.prototype.checkCertificate = function(issuer, subject, dataProvider, dp) {
	// Some basic sanity checks
	if (subject.getCXD().valueOf() < subject.getCED().valueOf()) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Certificate expiration is before effective date");
	}

	try	{
		var puk = subject.getPublicKey(dp);
		if (puk.getComponent(Key.ECC_QX).length + puk.getComponent(Key.ECC_QY).length != (puk.getComponent(Key.ECC_P).length << 1)) {
			throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Invalid public key");
		}
	}
	catch(e) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, e.message);
	}

	var chatissuer = issuer.getCHAT();
	var chatsubject = subject.getCHAT();

	var rolesubject = chatsubject.get(0).value;
	if (!chatissuer.get(0).value.equals(rolesubject)) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Role mismatch");
	}

	var rightsissuer = chatissuer.get(1).value;
	var rightssubject = chatsubject.get(1).value;

	if (rightsissuer.length != rightssubject.length) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Different size in rights mask of chat");
	}

	var typeissuer = rightsissuer.byteAt(0) & 0xC0;
	var typesubject = rightssubject.byteAt(0) & 0xC0;

	// C0 - CVCA, 80 - DV domestic, 40 - DV foreign, 00 - Terminal
	if (typeissuer == 0x40) {		// Ignore domestic and foreign
		typeissuer = 0x80;
	}
	if (typesubject == 0x40) {
		typesubject = 0x80;
	}
//	print("issuer " + typeissuer);
//	print("subject " + typesubject);

	if (((typesubject >= typeissuer) && (typeissuer != 0xC0)) ||
		((typesubject == 0x00) && (typeissuer == 0xC0))) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Certificate hierachy invalid");
	}

	if (!issuer.getPublicKeyOID().equals(subject.getPublicKeyOID())) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Public key algorithm mismatch");
	}

	var date = dataProvider.getDate().valueOf();
	if (typesubject != 0xC0) {			// CVCA certificates do not expire
		if (subject.getCXD().valueOf() < date) {
			throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Certificate is expired");
		}
	} else {
//		print("Add to chain: " + subject);
		this.chain.push(subject);							// Add new CVCA link to the chain
		if (rolesubject.equals(TrustAnchor.idIS)) {
			this.updateEFCVCA(dataProvider);					// Update /DF.ePass/EF.CVCA
		}
	}

	if ((rightsissuer.byteAt(0) & 0xC0) != 0x40) {			// Trust all except foreign DVCAs
		if (subject.getCED().valueOf() > date) {
			dataProvider.setDate(subject.getCED());
		}
	}
}



/**
 * Validate certificate issued by CVCA
 *
 * @param {Crypto} crypto the crypto object to use for verification
 * @param {CVC} cert the certificate to validate
 * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
 */
TrustAnchor.prototype.validateCertificateIssuedByCVCA = function(crypto, cert, dataProvider) {
	var cc = this.getCertificateFor(cert.getCAR());
	var puk = this.getPublicKeyFor(cert.getCAR());
	if (!puk || !cert.verifyWith(crypto, puk, cc.getPublicKeyOID())) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Could not verify certificate signature");
	}
	this.checkCertificate(cc, cert, dataProvider, puk);
}



/**
 * Validate certificate issued by CVCA
 *
 * @param {Crypto} crypto the crypto object to use for verification
 * @param {CVC} cert the certificate to validate
 * @param {CVC} dvca the issuing certificate
 * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
 */
TrustAnchor.prototype.validateCertificateIssuedByDVCA = function(crypto, cert, dvca, dataProvider) {
	var dp = this.getPublicKeyFor(dvca.getCAR());
//	print(dp);
	if (!dp || !cert.verifyWith(crypto, dvca.getPublicKey(dp), dvca.getPublicKeyOID())) {
		throw new GPError("TrustAnchor", GPError.INVALID_DATA, APDU.SW_INVDATA, "Could not verify certificate signature");
	}
	this.checkCertificate(dvca, cert, dataProvider, dvca.getPublicKey(dp));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Support for card verifiable certificates and certificate requests according to EAC 1.1/2.0
 */


// Imports
var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;



/**
 * Create a CVC object from a DER encoded ByteString.
 *
 * @class Class implementing a decoder for card verifiable certificates or requests according to
 *        Extended Access Control (EAC) as defined in BSI TR-03110 1.11 and 2.02.
 * @constructor
 * @param {ByteString} param the DER encoded certificate
 * @return
 */
function CVC() {
	if (arguments.length > 0) {
		var arg = arguments[0];
		if (arg instanceof ASN1) {
			this.asn = arg;
			this.bin = this.asn.getBytes();
		} else if (arg instanceof ByteString) {
			this.bin = arg;
			this.asn = new ASN1(this.bin);
		} else {
			throw new GPError("CVC", GPError.INVALID_DATA, 0, "Argument must be of type ByteString or ASN1");
		}
		if (this.asn.tag == CVC.TAG_AT) {
			this.body = this.asn.get(0).get(0);
		} else if (this.asn.tag == CVC.TAG_CVC) {
			this.body = this.asn.get(0);
		} else {
			throw new GPError("CVC", GPError.INVALID_DATA, 0, "Argument is neither a CVC or CVC request");
		}
	}
}

exports.CVC = CVC;

CVC.crypto = new Crypto();


/** Authentication Template */
CVC.TAG_AT = 0x67;
/** CV Certificate */
CVC.TAG_CVC = 0x7F21;
/** Certificate Body */
CVC.TAG_BODY = 0x7F4E;
/** Certificate Profile Identifier */
CVC.TAG_CPI = 0x5F29;
/** Certification Authority Reference */
CVC.TAG_CAR = 0x42;
/** Public Key */
CVC.TAG_PUK = 0x7F49;
/** Prime Modulus */
CVC.TAG_ECC_P = 0x81;
/** First coefficient a */
CVC.TAG_ECC_A = 0x82;
/** Second coefficient b */
CVC.TAG_ECC_B = 0x83;
/** Base Point G */
CVC.TAG_ECC_G = 0x84;
/** Order of the base point */
CVC.TAG_ECC_N = 0x85;
/** Public Point y */
CVC.TAG_ECC_Q = 0x86;
/** Cofactor f */
CVC.TAG_ECC_H = 0x87;
/** Certificate Holder Reference */
CVC.TAG_CHR = 0x5F20;
/** Certificate Holder Authorisation Template */
CVC.TAG_CHAT = 0x7F4C;
/** Relative Authorization */
CVC.TAG_AUT = 0x53;
/** Certificate Extension */
CVC.TAG_EXTN = 0x65;
/** Certificate Effective Date */
CVC.TAG_CED = 0x5F25;
/** Certificate Expiration Date */
CVC.TAG_CXD = 0x5F24;
/** Signature */
CVC.TAG_SIG = 0x5F37;


/** Table of tag names */
CVC.OBJECTNAMES = []
CVC.OBJECTNAMES[CVC.TAG_AT] = "Authentication Template";
CVC.OBJECTNAMES[CVC.TAG_CVC] = "CV Certificate";
CVC.OBJECTNAMES[CVC.TAG_BODY] = "Certificate Body";
CVC.OBJECTNAMES[CVC.TAG_CPI] = "Certificate Profile Indicator";
CVC.OBJECTNAMES[CVC.TAG_CAR] = "Certification Authority Reference";
CVC.OBJECTNAMES[CVC.TAG_PUK] = "Public Key";
CVC.OBJECTNAMES[CVC.TAG_ECC_P] = "Prime/Modulus";
CVC.OBJECTNAMES[CVC.TAG_ECC_A] = "First coefficient a/Exponent";
CVC.OBJECTNAMES[CVC.TAG_ECC_B] = "Second coefficient b";
CVC.OBJECTNAMES[CVC.TAG_ECC_G] = "Base Point G";
CVC.OBJECTNAMES[CVC.TAG_ECC_N] = "Order of the base point";
CVC.OBJECTNAMES[CVC.TAG_ECC_Q] = "Public Point y";
CVC.OBJECTNAMES[CVC.TAG_ECC_H] = "Cofactor f";
CVC.OBJECTNAMES[CVC.TAG_CHR] = "Certificate Holder Reference";
CVC.OBJECTNAMES[CVC.TAG_CHAT] = "Certificate Holder Authentication Template";
CVC.OBJECTNAMES[CVC.TAG_AUT] = "Relative Authorization";
CVC.OBJECTNAMES[CVC.TAG_EXTN] = "Extension";
CVC.OBJECTNAMES[CVC.TAG_CED] = "Certificate Effective Date";
CVC.OBJECTNAMES[CVC.TAG_CXD] = "Certificate Expiration Date";
CVC.OBJECTNAMES[CVC.TAG_SIG] = "Signature";

CVC.PUK_SYNTAX = [
	{ tag: 0x06, minlen: 2, maxlen: 20 },
	{ tag: CVC.TAG_ECC_P, minlen: 20, maxlen: 512, optional: true },
	{ tag: CVC.TAG_ECC_A, minlen: 1, maxlen: 512, optional: true },
	{ tag: CVC.TAG_ECC_B, minlen: 20, maxlen: 66, optional: true },
	{ tag: CVC.TAG_ECC_G, minlen: 41, maxlen: 133, optional: true },
	{ tag: CVC.TAG_ECC_N, minlen: 20, maxlen: 66, optional: true },
	{ tag: CVC.TAG_ECC_Q, minlen: 41, maxlen: 133, optional: true },
	{ tag: CVC.TAG_ECC_H, minlen: 1, maxlen: 1, optional: true }
];

CVC.REQ_BODY_SYNTAX = [
	{ tag: CVC.TAG_CPI, minlen: 1, maxlen: 1 },
	{ tag: CVC.TAG_CAR, minlen: 8, maxlen: 16, optional: true },
	{ tag: CVC.TAG_PUK, content: CVC.PUK_SYNTAX },
	{ tag: CVC.TAG_CHR, minlen: 8, maxlen: 16 },
	{ tag: CVC.TAG_EXTN, optional: true }
];

CVC.REQ_SYNTAX = [
	{ tag: CVC.TAG_BODY, content: CVC.REQ_BODY_SYNTAX },
	{ tag: CVC.TAG_SIG, minlen: 40, maxlen: 550 }
];

CVC.ATREQ_SYNTAX = [
	{ tag: CVC.TAG_CVC, content: CVC.REQ_SYNTAX },
	{ tag: CVC.TAG_CAR, minlen: 8, maxlen: 16 },
	{ tag: CVC.TAG_SIG, minlen: 40, maxlen: 550 }
];

CVC.CHAT_SYNTAX = [
	{ tag: 0x06, minlen: 2, maxlen: 20 },
	{ tag: CVC.TAG_AUT, minlen: 1, maxlen: 5 }
];

CVC.CERT_BODY_SYNTAX = [
	{ tag: CVC.TAG_CPI, minlen: 1, maxlen: 1 },
	{ tag: CVC.TAG_CAR, minlen: 8, maxlen: 16 },
	{ tag: CVC.TAG_PUK, content: CVC.PUK_SYNTAX },
	{ tag: CVC.TAG_CHR, minlen: 8, maxlen: 16 },
	{ tag: CVC.TAG_CHAT, content: CVC.CHAT_SYNTAX },
	{ tag: CVC.TAG_CED, minlen: 6, maxlen: 6 },
	{ tag: CVC.TAG_CXD, minlen: 6, maxlen: 6 },
	{ tag: CVC.TAG_EXTN, optional: true }
];

CVC.CERT_SYNTAX = [
	{ tag: CVC.TAG_BODY, content: CVC.CERT_BODY_SYNTAX },
	{ tag: CVC.TAG_SIG, minlen: 24, maxlen: 550 }
];



/** Table of rights description for id-IS */
CVC.ISRIGHTS = [
	"Read access to ePassport application: DG 3 (Fingerprint)",
	"Read access to ePassport application: DG 4 (Iris)",
	"RFU (Bit 3)",
	"RFU (Bit 4)",
	"RFU (Bit 5)",
	"Read access to eID application"
];
CVC.idIS = new ByteString("id-IS", OID);


/** Table of rights description for id-AT */
CVC.ATRIGHTS = [
	"Age Verification",
	"Community ID Verification",
	"Restricted Identification",
	"Privileged Terminal",
	"CAN allowed",
	"PIN Management",
	"Install Certificate",
	"Install Qualified Certificate",

	"Read Access DG 1 (Document Type)",
	"Read Access DG 2 (Issuing State)",
	"Read Access DG 3 (Date of Expiration)",
	"Read Access DG 4 (Given Name)",
	"Read Access DG 5 (Surname)",
	"Read Access DG 6 (Pseudonym)",
	"Read Access DG 7 (Academic Grade)",
	"Read Access DG 8 (Date of Birth)",

	"Read Access DG 9 (Place of Birth)",
	"Read Access DG 10",
	"Read Access DG 11",
	"Read Access DG 12",
	"Read Access DG 13",
	"Read Access DG 14",
	"Read Access DG 15",
	"Read Access DG 16",

	"Read Access DG 17 (Place of Residence)",
	"Read Access DG 18 (Community ID)",
	"Read Access DG 19 (Conditions I-eAT)",
	"Read Access DG 20 (Conditions II-eAT)",
	"Read Access DG 21",
	"RFU (Bit 29)",
	"RFU (Bit 30)",
	"RFU (Bit 31)",

	"RFU (Bit 32)",
	"Write Access DG 21",
	"Write Access DG 20 (Conditions II-eAT)",
	"Write Access DG 19 (Conditions I-eAT)",
	"Write Access DG 18 (Community ID)",
	"Write Access DG 17 (Place of Residence)"
];
CVC.idAT = new ByteString("id-AT", OID);



/** Table of rights description for id-ST */
CVC.STRIGHTS = [
	"Generate electronic signature",
	"Generate qualified electronic signature",
	"RFU (Bit 2)",
	"RFU (Bit 3)",
	"RFU (Bit 4)",
	"RFU (Bit 5)"
];
CVC.idST = new ByteString("id-ST", OID);

CVC.idSC_HSM = new ByteString("2B0601040181C31F030101", HEX);
CVC.idBW_SE = new ByteString("2B0601040181C31F030102", HEX);



/** TA constants */
CVC.id_TA_ECDSA = new ByteString("id-TA-ECDSA", OID);
CVC.id_TA_ECDSA_SHA_1 = new ByteString("id-TA-ECDSA-SHA-1", OID);
CVC.id_TA_ECDSA_SHA_224 = new ByteString("id-TA-ECDSA-SHA-224", OID);
CVC.id_TA_ECDSA_SHA_256 = new ByteString("id-TA-ECDSA-SHA-256", OID);
CVC.id_TA_ECDSA_SHA_384 = new ByteString("id-TA-ECDSA-SHA-384", OID);
CVC.id_TA_ECDSA_SHA_512 = new ByteString("id-TA-ECDSA-SHA-512", OID);
CVC.id_TA_RSA_v1_5_SHA_1 = new ByteString("id-TA-RSA-v1-5-SHA-1", OID);
CVC.id_TA_RSA_v1_5_SHA_256 = new ByteString("id-TA-RSA-v1-5-SHA-256", OID);
CVC.id_TA_RSA_v1_5_SHA_512 = new ByteString("id-TA-RSA-v1-5-SHA-512", OID);
CVC.id_TA_RSA_PSS_SHA_1 = new ByteString("id-TA-RSA-PSS-SHA-1", OID);
CVC.id_TA_RSA_PSS_SHA_256 = new ByteString("id-TA-RSA-PSS-SHA-256", OID);
CVC.id_TA_RSA_PSS_SHA_512 = new ByteString("id-TA-RSA-PSS-SHA-512", OID);

CVC.id_ECPUBLICKEY = new ByteString("id-ecPublicKey", OID);
CVC.id_ANSIX9 = new ByteString("iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1)", OID);
CVC.id_CERTICOM = new ByteString("iso(1) identified-organization(3) certicom(132) curve(0)", OID);
CVC.id_BRAINPOOL = new ByteString("ellipticCurve", OID);

CVC.id_ECDSA_WITH_SHA2 = new ByteString("iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3)", OID);
CVC.id_ECDSA_WITH_SHA256 = new ByteString("ecdsa-with-SHA256", OID);
CVC.id_ECDSA_WITH_SHA384 = new ByteString("ecdsa-with-SHA384", OID);
CVC.id_ECDSA_WITH_SHA512 = new ByteString("ecdsa-with-SHA512", OID);




/**
 * Return signature mechanism for object identifier
 *
 * @param {ByteString} oid the object identifer from the public key object
 * @returns the signature mechanism as Crypto. constant or -1 if not defined
 * @type Number
 */
CVC.getSignatureMech = function(oid, keysize) {
	if (oid.equals(CVC.id_TA_ECDSA_SHA_1))
		return Crypto.ECDSA_SHA1;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_224))
		return Crypto.ECDSA_SHA224;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_256))
		return Crypto.ECDSA_SHA256;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_384))
		return Crypto.ECDSA_SHA384;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_512))
		return Crypto.ECDSA_SHA512;
	if (oid.equals(CVC.id_TA_RSA_v1_5_SHA_1))
		return Crypto.RSA_SHA1;
	if (oid.equals(CVC.id_TA_RSA_v1_5_SHA_256))
		return Crypto.RSA_SHA256;
	if (oid.equals(CVC.id_TA_RSA_v1_5_SHA_512))
		return Crypto.RSA_SHA512;
	if (oid.equals(CVC.id_TA_RSA_PSS_SHA_1))
		return Crypto.RSA_PSS_SHA1;
	if (oid.equals(CVC.id_TA_RSA_PSS_SHA_256))
		return Crypto.RSA_PSS_SHA256;
	if (oid.equals(CVC.id_TA_RSA_PSS_SHA_512))
		return Crypto.RSA_PSS_SHA512;
	if (oid.equals(CVC.id_ECDSA_WITH_SHA256))
		return Crypto.ECDSA_SHA256;
	if (oid.equals(CVC.id_ECDSA_WITH_SHA384))
		return Crypto.ECDSA_SHA384;
	if (oid.equals(CVC.id_ECDSA_WITH_SHA512))
		return Crypto.ECDSA_SHA512;
	if (CVC.isCurveOID(oid)) {
		assert(typeof(keysize) == "number", "Argument keysize must be number");
		if (keysize >= 512) {
			return Crypto.ECDSA_SHA512;
		} else if (keysize >= 384) {
			return Crypto.ECDSA_SHA384;
		} else if (keysize >= 256) {
			return Crypto.ECDSA_SHA256;
		} else if (keysize >= 224) {
			return Crypto.ECDSA_SHA224;
		}
	}

	return -1;
}



/**
 * Return hash mechanism for object identifier
 *
 * @param {ByteString} oid the object identifer from the public key object
 * @returns the hash mechanism as Crypto. constant or -1 if not defined
 * @type Number
 */
CVC.getHashMech = function(oid) {
	if (oid.equals(CVC.id_TA_ECDSA_SHA_1))
		return Crypto.SHA_1;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_224))
		return Crypto.SHA_224;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_256))
		return Crypto.SHA_256;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_384))
		return Crypto.SHA_384;
	if (oid.equals(CVC.id_TA_ECDSA_SHA_512))
		return Crypto.SHA_512;
	if (oid.equals(CVC.id_ECDSA_WITH_SHA256))
		return Crypto.SHA_256;
	if (oid.equals(CVC.id_ECDSA_WITH_SHA384))
		return Crypto.SHA_384;
	if (oid.equals(CVC.id_ECDSA_WITH_SHA512))
		return Crypto.SHA_512;
	if (oid.equals(CVC.id_TA_RSA_v1_5_SHA_1))
		return Crypto.SHA_1;
	if (oid.equals(CVC.id_TA_RSA_v1_5_SHA_256))
		return Crypto.SHA_256;
	if (oid.equals(CVC.id_TA_RSA_v1_5_SHA_512))
		return Crypto.SHA_512;
	if (oid.equals(CVC.id_TA_RSA_PSS_SHA_1))
		return Crypto.SHA_1;
	if (oid.equals(CVC.id_TA_RSA_PSS_SHA_256))
		return Crypto.SHA_256;
	if (oid.equals(CVC.id_TA_RSA_PSS_SHA_512))
		return Crypto.SHA_512;
	return -1;
}



/**
 * Return true of the object identifier denotes a curve
 *
 * @type boolean
 * @return true, if ECDSA based OID
 */
CVC.isCurveOID = function(oid) {
	if (oid.startsWith(CVC.id_BRAINPOOL) == CVC.id_BRAINPOOL.length) {
		return true;
	}
	if (oid.startsWith(CVC.id_ANSIX9) == CVC.id_ANSIX9.length) {
		return true;
	}
	if (oid.startsWith(CVC.id_CERTICOM) == CVC.id_CERTICOM.length) {
		return true;
	}
	return false;
}



/**
 * Return true of the object identifier starts with id-TA-ECDSA
 *
 * @type boolean
 * @return true, if ECDSA based OID
 */
CVC.isECDSA = function(oid) {
	if (oid.startsWith(CVC.id_TA_ECDSA) == CVC.id_TA_ECDSA.length) {
		return true;
	}
	if (oid.startsWith(CVC.id_ECDSA_WITH_SHA2) == CVC.id_ECDSA_WITH_SHA2.length) {
		return true;
	}
	if (oid.equals(CVC.id_ECPUBLICKEY)) {
		return true;
	}
	if (CVC.isCurveOID(oid)) {
		return true;
	}
	return false;
}



/**
 * Wrap an ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279
 *
 * @param signature ByteString containing the concatenation of r and s as unsigned integer values
 * @returns ASN.1 SEQUENCE objects containing two signed integer r and s
 */
CVC.wrapSignature = function(signature) {
	var len = signature.length / 2;

	// r and s are unsigned big integer. We might need to pad a zero for ASN.1 INTEGER which is signed
	var r = signature.bytes(0, len);
	while ((r.length > 1) && (r.byteAt(0) == 0)) {
		r = r.bytes(1);
	}
	if (r.byteAt(0) >= 0x80) {
		r = ByteString.valueOf(0, 1).concat(r);
	}

	var s = signature.bytes(len, len);
	while ((s.length > 1) && (s.byteAt(0) == 0)) {
		s = s.bytes(1);
	}
	if (s.byteAt(0) >= 0x80) {
		s = ByteString.valueOf(0, 1).concat(s);
	}

	var t = new ASN1(ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.INTEGER, r));
	t.add(new ASN1(ASN1.INTEGER, s));

	return t.getBytes();
}



/**
 * Integer to octet string conversion
 */
CVC.I2O = function(value, length) {
	if (value.length > length) {
		value = value.right(length);
	}
	while (value.length < length) {
		value = CVC.PAD.left((length - value.length - 1 & 15) + 1).concat(value);
	}
	return value;
}
CVC.PAD = new ByteString("00000000000000000000000000000000", HEX);



/**
 * Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
 * of the unsigned integer r and s
 *
 * @param signature TLV encoded signature
 * @param keylen optional parameter to specify the key lengths in bytes.
 * @returns concatenation of r and s
 */
CVC.unwrapSignature = function(signature, keylen) {
	var t = new ASN1(signature);
	if (typeof(keylen) != "undefined") {
		var r = CVC.I2O(t.get(0).value, keylen);
		var s = CVC.I2O(t.get(1).value, keylen);
	} else {
		var r = t.get(0).value;
		if (r.byteAt(0) == 00)
			r = r.bytes(1);

		var s = t.get(1).value;
		if (s.byteAt(0) == 00)
			s = s.bytes(1);
	}

	return r.concat(s);
}



/**
 * Rewrap an ECDSA signature that contains redundant leading zeros in integer.
 *
 * @param signature the signature
 * @type ByteString
 * @param the fixed signature
 */
CVC.rewrapSignature = function(signature) {
	var a = new ASN1(signature);
	var r = a.get(0).value;
	while ((r.byteAt(0) == 0) && (r.byteAt(1) < 0x80)) {
		r = r.bytes(1);
	}

	var s = a.get(1).value;
	while ((s.byteAt(0) == 0) && (s.byteAt(1) < 0x80)) {
		s = s.bytes(1);
	}
	return (new ASN1(0x30, new ASN1(0x02, r), new ASN1(0x02, s))).getBytes();
}



/**
 * Check a ASN sequence against a structure description
 *
 * @private
 * @param {Object} s the structure description
 * @param {ASN1} asn the asn sequence
 * @type String
 * @return null if valid or the validation error message
 */
CVC.checkStructure = function(s, asn) {
	var j = 0;
	for (var i = 0; i < s.length; i++) {
		var d = s[i];

//		print("Checking tag " + d.tag.toString(HEX));

		if (j < asn.elements) {
			var a = asn.get(j);

			if (a.tag == d.tag) {
				if ((typeof(d.minlen) != "undefined") && (a.value.length < d.minlen)) {
					return "Length (" + a.value.length + ") of " + CVC.OBJECTNAMES[d.tag] + "(" + d.tag.toString(HEX) + ") less than " + d.minlen;
				}
				if ((typeof(d.maxlen) != "undefined") && (a.value.length > d.maxlen)) {
					return "Length (" + a.value.length + ") of " + CVC.OBJECTNAMES[d.tag] + "(" + d.tag.toString(HEX) + ") more than " + d.maxlen;
				}
				if ((typeof(d.content) != "undefined")) {
					var r = CVC.checkStructure(d.content, a);
					if (r) {
						return r;
					}
				}
				j++;
			} else {
				if (!d.optional) {
					return "Expecting " + CVC.OBJECTNAMES[d.tag] + "(" + d.tag.toString(HEX) + ") but found tag " + a.tag.toString(HEX);
				}
			}
		} else {
			if (!d.optional) {
				return "Expecting " + CVC.OBJECTNAMES[d.tag] + "(" + d.tag.toString(HEX) + ") but sequence is exhaused";
			}
		}
	}
	return null;
}



/**
 * Validate ASN1 semantic for card verifiable certificate or certificate request
 *
 * @type String
 * @return null if no error, or error message
 */
CVC.prototype.validate = function() {
	var r = null;
	if (this.asn.tag == CVC.TAG_AT) {
		r = CVC.checkStructure(CVC.ATREQ_SYNTAX, this.asn);
	} else {
		if (this.body.find(CVC.TAG_CED)) {
			r = CVC.checkStructure(CVC.CERT_SYNTAX, this.asn);
		} else {
			r = CVC.checkStructure(CVC.REQ_SYNTAX, this.asn);
		}
	}
	return r;
}



/**
 * Return true of the certificate contains domain parameter
 *
 * @type boolean
 * @return true, if certificate contains domain parameter
 */
CVC.prototype.containsDomainParameter = function() {
	var pdo = this.body.find(CVC.TAG_PUK);
	if (pdo == null) {
		return false;
	}

	var d = pdo.find(0x84);		// Generator
	return (d != null);
}



/**
 * Returns the certificate profile indicator (CPI)
 *
 * @return the CPI or null
 * @type Number
 */
CVC.prototype.getCPI = function() {
	var cpido = this.body.find(CVC.TAG_CPI);

	if (!cpido) {
		return null;
	}

	return cpido.value.toUnsigned();
}



/**
 * Returns the certification authority reference (CAR).
 *
 * @return the CAR or null
 * @type PublicKeyReference
 */
CVC.prototype.getCAR = function() {
	var cardo = this.body.find(CVC.TAG_CAR);

	if (!cardo) {
		return null;
	}

	return new PublicKeyReference(cardo.value);
}



/**
 * Returns the certificate holder reference (CHR).
 *
 * @return the CHR
 * @type PublicKeyReference
 */
CVC.prototype.getCHR = function() {
	var chrdo = this.body.find(CVC.TAG_CHR);

	if (!chrdo) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a CHR");
	}

	return new PublicKeyReference(chrdo.value);
}



/**
 * Returns the certificate effective date (CED).
 *
 * @return the CED or null
 * @type Date
 */
CVC.prototype.getCED = function() {
	var ceddo = this.body.find(CVC.TAG_CED);

	if (!ceddo) {
		return null
	}

	var b = ceddo.value;

	var d = new Date();
	d.setFullYear(b.byteAt(0) * 10 + b.byteAt(1) + 2000,
				  b.byteAt(2) * 10 + b.byteAt(3) - 1,
				  b.byteAt(4) * 10 + b.byteAt(5));
	d.setHours(12, 0, 0, 0);
	return d;
}



/**
 * Returns the certificate expiration date (CXD).
 *
 * @return the CXD or null
 * @type Date
 */
CVC.prototype.getCXD = function() {
	var cxddo = this.body.find(CVC.TAG_CXD);

	if (!cxddo) {
		return null
	}

	var b = cxddo.value;

	var d = new Date();
	d.setFullYear(b.byteAt(0) * 10 + b.byteAt(1) + 2000,
				  b.byteAt(2) * 10 + b.byteAt(3) - 1,
				  b.byteAt(4) * 10 + b.byteAt(5));
	d.setHours(12, 0, 0, 0);
	return d;
}



/**
 * Returns the outer certification authority reference (CAR).
 *
 * @return the outer CAR or null
 * @type PublicKeyReference
 */
CVC.prototype.getOuterCAR = function() {
	if (!this.isAuthenticatedRequest()) {
		return null;
	}
	var cardo = this.asn.get(1);

	if (!cardo) {
		return null
	}

	return new PublicKeyReference(cardo.value);
}



/**
 * Returns the extension identified by the object identifier.
 *
 * @return the extension including the OID or null if not defined
 * @type ASN1
 */
CVC.prototype.getExtension = function(extoid) {
	var extdo = this.body.find(CVC.TAG_EXTN);

	if (!extdo) {
		return null;
	}

//	print(extdo);

	for (var i = 0; i < extdo.elements; i++) {
		var ext = extdo.get(i);
		var oid = ext.get(0);
		assert(oid.tag == ASN1.OBJECT_IDENTIFIER);
		if (oid.value.equals(extoid)) {
			return ext;
		}
	}
	return null;
}



/**
 * Returns the Certificate Holder Authorization Template.
 *
 * @return the chat or null if not defined
 * @type ASN1
 */
CVC.prototype.getCHAT = function() {
	var chat = this.body.find(CVC.TAG_CHAT);

	return chat;
}



/**
 * Returns the public key object identifier
 *
 * @returns the object identifier assigned to the public key
 * @type ByteString
 */
CVC.prototype.getPublicKeyOID = function() {
	var pdo = this.body.find(CVC.TAG_PUK);
	if (pdo == null) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a public key");
	}

	var d = pdo.find(ASN1.OBJECT_IDENTIFIER);
	if (d == null) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Public key does not contain an object identifier");
	}
	return d.value;
}



/**
 * Decode a public key from the TR-03110 format
 *
 * @param {ASN1} pdo the public key data object
 * @param {Key} key the key object to fill
 */
CVC.decodeECPublicKey = function(pdo, key) {

	var d = pdo.find(0x86);		// Public point
	if (d == null) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a public key value");
	}

	var b = d.value.bytes(1);
	key.setComponent(Key.ECC_QX, b.left(b.length >> 1));
	key.setComponent(Key.ECC_QY, b.right(b.length >> 1));

	var d = pdo.find(0x81);		// Prime modulus
	if (d != null) {
		key.setComponent(Key.ECC_P, d.value);
	}

	var d = pdo.find(0x82);		// First coefficient a
	if (d != null) {
		key.setComponent(Key.ECC_A, d.value);
	}

	var d = pdo.find(0x83);		// First coefficient b
	if (d != null) {
		key.setComponent(Key.ECC_B, d.value);
	}

	var d = pdo.find(0x84);		// Base Point G
	if (d != null) {
		var b = d.value.bytes(1);
		key.setComponent(Key.ECC_GX, b.left(b.length >> 1));
		key.setComponent(Key.ECC_GY, b.right(b.length >> 1));
	}

	var d = pdo.find(0x85);		// Order of the base point
	if (d != null) {
		key.setComponent(Key.ECC_N, d.value);
	}

	var d = pdo.find(0x87);		// Cofactor f
	if (d != null) {
		key.setComponent(Key.ECC_H, d.value);
	}
}



/**
 * Returns the EC public key contained in the certificate.
 *
 * @param {Key} domParam optional domain parameter if they are not contained in certificate
 * @return the public key object
 * @type Key
 */
CVC.prototype.getECPublicKey = function(domParam) {
	var oid = this.getPublicKeyOID();
	if (CVC.isCurveOID(oid)) {
		var key = new Key();
		key.setComponent(Key.ECC_CURVE_OID, oid);
	} else if (typeof(domParam) != "undefined") {
		var key = new Key(domParam);
	} else {
		if (typeof(this.domParam) != "undefined") {
			var key = new Key(this.domParam);
		} else {
			var key = new Key();
		}
	}

	key.setType(Key.PUBLIC);

	var pdo = this.body.find(CVC.TAG_PUK);
	if (pdo == null) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a public key");
	}

	CVC.decodeECPublicKey(pdo, key);

	return key;
}



/**
 * Returns the RSA public key contained in the certificate.
 *
 * @return the public key object
 * @type Key
 */
CVC.prototype.getRSAPublicKey = function() {
	var key = new Key();

	key.setType(Key.PUBLIC);

	var pdo = this.body.find(CVC.TAG_PUK);
	if (pdo == null) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a public key");
	}

	var d = pdo.find(0x81);		// modulus
	if (d != null) {
		key.setComponent(Key.MODULUS, d.value);
	}

	var d = pdo.find(0x82);		// public exponent
	if (d != null) {
		key.setComponent(Key.EXPONENT, d.value);
	}

	return key;
}



/**
 * Returns the public key contained in the certificate.
 *
 * @param {Key} domParam optional domain parameter if they are not contained in certificate
 * @return the public key object
 * @type Key
 */
CVC.prototype.getPublicKey = function(domParam) {
	var pkoid = this.getPublicKeyOID();

	if (CVC.isECDSA(pkoid)) {
		return this.getECPublicKey(domParam);
	}
	return this.getRSAPublicKey();
}



/**
 * Determine the SubjectKeyIdentifier as defined in X.509
 *
 * @return the key identifier
 * @type ByteString
 */
CVC.prototype.determineKeyIdentifier = function() {
	var pdo = this.body.find(CVC.TAG_PUK);
	if (pdo == null) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a public key");
	}

	var pkoid = this.getPublicKeyOID();

	var keybin;
	if (CVC.isECDSA(pkoid)) {
		var d = pdo.find(0x86);		// Public point
		keybin = d.value;
	} else {
		var modulus = pdo.find(0x81).value;		// modulus
		if (modulus.byteAt(0) >= 0x80) {
			modulus = ByteString.valueOf(0).concat(modulus);
		}
		var exponent = pdo.find(0x82).value;		// public exponent
		var rsapub = new ASN1("RSAPublicKey", ASN1.SEQUENCE,
				      new ASN1("modulus", ASN1.INTEGER, modulus),
				      new ASN1("publicKeyExponent", ASN1.INTEGER, exponent));

		keybin = rsapub.getBytes();
	}
	return CVC.crypto.digest(Crypto.SHA_1, keybin);
}



/**
 * Return the x-coordinate of the EC Public Key.
 *
 * @return the key identifier
 * @type ByteString
 */
CVC.prototype.getECPublicKeyIdentifier = function() {
	var pdo = this.body.find(CVC.TAG_PUK);
	if (pdo == null) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a public key");
	}

	var pkoid = this.getPublicKeyOID();
	if (!CVC.isECDSA(pkoid)) {
		throw new GPError("CVC", GPError.OBJECT_NOT_FOUND, 0, "Certificate does not contain a EC Public Key");
	}

	var d = pdo.find(0x86);		// Public point
	var l = d.length >> 1;
	return d.value.bytes(1, l);
}



/**
 * Determine if this is an authenticated request
 *
 * @returns true, if authenticated request
 * @type Boolean
 */
CVC.prototype.isAuthenticatedRequest = function() {
	return (this.asn.tag == CVC.TAG_AT);
}



/**
 * Determine if this is a certificate request
 *
 * @returns true, if certificate request
 * @type Boolean
 */
CVC.prototype.isCertificateRequest = function() {
	if (this.isAuthenticatedRequest()) {
		return true;
	}

	var ced = this.getCED();
	return ced == null;
}



/**
 * Determine if this is a countersigned authenticated request
 *
 * @returns true, if countersigned authenticated request
 * @type Boolean
 */
CVC.prototype.isCountersignedRequest = function() {
	if (!this.isAuthenticatedRequest()) {
		return false;
	}
	return (this.getCHR().getHolder() != this.getOuterCAR().getHolder());
}



/**
 * Determine if this certificate is expired
 *
 * @returns true, if certificate is expired
 * @type Boolean
 */
CVC.prototype.isExpired = function() {
	var now = new Date();
	now.setHours(12, 0, 0, 0);
	return (now.valueOf() > this.getCXD().valueOf());
}



/**
 * Verify certificate signature with public key
 *
 * @param {Crypto} crypto the crypto instance to use for verification
 * @param {Key} puk the public key
 * @param {ByteString} oid the signature algorithm
 * @returns true if the signature is valid
 * @type Boolean
 */
CVC.prototype.verifyWith = function(crypto, puk, oid) {
	if (this.asn.tag == CVC.TAG_AT) {
		var signature = this.asn.get(0).get(1);
	} else {
		var signature = this.asn.get(1);
	}

	if (typeof(oid) == "undefined") {
		var oid = this.getPublicKeyOID();
	}
	var mech = CVC.getSignatureMech(oid, puk.getSize());

	if (CVC.isECDSA(oid)) {
		var signatureValue = CVC.wrapSignature(signature.value);
		this.domParam = puk;
	} else {
		var signatureValue = signature.value;
	}

	return crypto.verify(puk, mech, this.body.getBytes(), signatureValue);
}



/**
 * Verify certificate signature with public key from card verifiable certificate
 *
 * @param {CVC} cvc the card verifiable certificate used to obtain the public key
 * @returns true if the signature is valid
 * @type Boolean
 */
CVC.prototype.verifyWithCVC = function(crypto, cvc) {
	return this.verifyWith(crypto, cvc.getPublicKey(), cvc.getPublicKeyOID());
}



/**
 * Verify outer signature of an authenticated request with public key
 *
 * @param {Key} puk the public key
 * @param {ByteString} oid the signature algorithm
 * @returns true if the signature is valid
 * @type Boolean
 */
CVC.prototype.verifyATWith = function(crypto, puk, oid) {
	if (!this.isAuthenticatedRequest()) {
		throw new GPError("CVC", GPError.INVALID_DATA, 0, "Not an authenticated request");
	}

	var signature = this.asn.get(2);
	var signatureInput = this.asn.get(0).getBytes().concat(this.asn.get(1).getBytes());

	if (typeof(oid) == "undefined") {
		var oid = this.getPublicKeyOID();
	}
	var mech = CVC.getSignatureMech(oid);

	if (CVC.isECDSA(oid)) {
		var signatureValue = CVC.wrapSignature(signature.value);
	} else {
		var signatureValue = signature.value;
	}
	return crypto.verify(puk, mech, signatureInput, signatureValue);
}



/**
 * Verify outer signature of an authenticated request with public key from card verifiable certificate
 *
 * @param {CVC} cvc the card verifiable certificate used to obtain the public key
 * @returns true if the signature is valid
 * @type Boolean
 */
CVC.prototype.verifyATWithCVC = function(crypto, cvc) {
	return this.verifyATWith(crypto, cvc.getPublicKey(), cvc.getPublicKeyOID());
}



/**
 * Returns the encoded certificate
 *
 * @return the DER encoded certificate
 * @type ByteString
 */
CVC.prototype.getBytes = function() {
	return this.bin;
}



/**
 * Returns the certificate as ASN1 structure
 *
 * @return the certificate as ASN1 structure
 * @type ASN1
 */
CVC.prototype.getASN1 = function() {
	return this.asn;
}



/**
 * Function to recursively walk the ASN.1 tree
 */
CVC.decorateTree = function(node) {
	var name = CVC.OBJECTNAMES[node.tag];

	if (name) {
		node.setName(name);
	}

	if (node.isconstructed) {
		for (var i = 0; i < node.elements; i++) {
			CVC.decorateTree(node.get(i));
		}
	}
}



/**
 * Decorate the ASN.1 object with the correct name
 */
CVC.prototype.decorate = function() {
	CVC.decorateTree(this.asn);
	var cxddo = this.body.find(CVC.TAG_CXD);
	if (cxddo == null) {
		if (this.asn.tag == CVC.TAG_AT) {
			this.asn.setName("Authenticated CVC Request");
		} else {
			this.asn.setName("CVC Request");
		}
	}
}



/**
 * Return list of rights granted by the certificate
 *
 * @returns the list of rights
 * @type String[]
 */
CVC.prototype.getRightsAsList = function() {
	var list = [];

	var rtab;
	var chat = this.getCHAT();
	if (chat == null) {
		return list;
	}

	var oid = chat.get(0).value;

	if (oid.equals(CVC.idIS)) {
		rtab = CVC.ISRIGHTS;
	} else if (oid.equals(CVC.idAT)) {
		rtab = CVC.ATRIGHTS;
	} else if (oid.equals(CVC.idST)) {
		rtab = CVC.STRIGHTS;
	} else {
		return null;
	}

	var mask = chat.get(1).value;
	var c = 0;
	for (var i = mask.length - 1; i >= 0; i--) {
		var akku = mask.byteAt(i);
		for (var j = 0; j < (i == 0 ? 6 : 8); j++) {
			if (akku & 1) {
				list.push(rtab[c]);
			}
			c++;
			akku >>= 1;
		}
	}
	return list;
}



/**
 * Return position of certificate in PKI hierachie
 *
 * @returns Position in PKI hierachie: 0 unknown, 1-CVCA, 2-DVCA, 3-Terminal
 * @type Number
 */
CVC.prototype.getLevel = function() {
	var chat = this.getCHAT();
	if (!chat) {
		return 0;
	}

	var l = chat.get(1).value.byteAt(0) & 0xC0;
	if (l == 0xC0) {
		return 1;
	}
	return l == 0x00 ? 3 : 2;
}



/**
 * Return a string describing the certificate type
 *
 * @returns a describing string
 * @type String
 */
CVC.prototype.getType = function() {
	var ced = this.getCED();
	var chat = this.getCHAT();

	// Decode certificate / request type
	var str = "CVC ";
	if (ced == null) {
		if (this.asn.tag == CVC.TAG_AT) {
			str = "AT-CVREQ ";
		} else {
			str = "CVREQ ";
		}
	}

	// Decode CA type
	if (chat != null) {
		var oid = chat.get(0).value;

		if (oid.equals(CVC.idSC_HSM) || oid.equals(CVC.idBW_SE)) {
			if (oid.equals(CVC.idSC_HSM)) {
				str += "id-SC-HSM ";
			} else {
				str += "id-BW-SE ";
			}
			switch(chat.get(1).value.byteAt(0) & 0xC0) {
				case 0xC0: str += "SRCA "; break;
				case 0x80: str += "DICA "; break;
				case 0x40: str += "MICA "; break;
				case 0x00: str += "Device "; break;
			}
		} else {
			var trustedDV = "";
			var untrustedDV = "";

			if (oid.equals(CVC.idIS)) {
				str += "id-IS ";
				trustedDV = "(official domestic) ";
				untrustedDV = "(official foreign) ";
			} else if (oid.equals(CVC.idAT)) {
				str += "id-AT ";
				trustedDV = "(official domestic) ";
				untrustedDV = "(non-official / foreign) ";
			} else if (oid.equals(CVC.idST)) {
				str += "id-ST ";
				trustedDV = "(accreditation body) ";
				untrustedDV = "(certification service provider) ";
			} else {
				str += oid.toString(OID) + " ";
			}

			switch(chat.get(1).value.byteAt(0) & 0xC0) {
				case 0xC0: str += "CVCA "; break;
				case 0x80: str += "DV " + trustedDV; break;
				case 0x40: str += "DV " + untrustedDV; break;
				case 0x00: str += "Terminal "; break;
			}
		}
	}

	return str;
}



/**
 * Return a textual description of the certificate
 *
 * @returns a string containing information about the certificate
 * @type String
 */
CVC.prototype.toString = function() {
	var car = this.getCAR();
	var ced = this.getCED();

	var str = this.getType();

	if (car) {
		str += "CAR=" + car.toString() + " ";
	}

	str += "CHR=" + this.getCHR().toString() + " ";

	if (ced) {
		str += "CED=" + ced.toLocaleDateString() + " ";
	}

	var cxd = this.getCXD();
	if (cxd) {
		str += "CXD=" + cxd.toLocaleDateString() + " ";
	}

	if (this.isAuthenticatedRequest()) {
		str += "oCAR=" + this.getOuterCAR().toString() + " ";
	}

	return str;
}



/**
 * Return object suitable for JSON encoding
 *
 * @returns a JSON encodable object
 * @type Object
 */
CVC.prototype.toJSON = function() {
	return { clazz: "CVC", value: this.bin };
}



/**
 * Recreate object from JSON encoding
 *
 * @returns the CVC object
 * @type Object
 */
CVC.fromJSON = function(obj) {
	assert(obj.clazz.equals("CVC"), "JSON object must contain clazz: CVC");
	return new CVC(obj.value);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Simple CVC-CA
 */


// Imports
var CVC = require('scsh/eac/CVC').CVC;
var CVCertificateStore = require('scsh/eac/CVCertificateStore').CVCertificateStore;
var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;
var EAC2CVRequestGenerator = require('scsh/eac/EAC2CVRequestGenerator').EAC2CVRequestGenerator;
var EAC2CVCertificateGenerator = require('scsh/eac/EAC2CVCertificateGenerator').EAC2CVCertificateGenerator;



/**
 * Creates a new CVC-CA instance
 *
 * @class Class supporting a certification authority that can issue CVC certificates
 * for the EAC protocol.
 *
 * @constructor
 * @param {Crypto} crypto the crypto provider to use
 * @param {CVCertificateStore} certstore the certificate store to use
 * @param {String} path the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM")
 */
function CVCCA(crypto, certstore, holderId, parentId, path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + crypto + "," + certstore + "," + holderId + "," + parentId + "," + path + ")");

	this.crypto = crypto;
	this.certstore = certstore;

	if (typeof(path) == "undefined") {	// ToDo: Remove after migration
		this.holderId = holderId;
		this.parentId = parentId;

		if (this.isRootCA()) {		// CVCA
			this.path = "/" + holderId;
		} else {					// DVCA
			this.path = "/" + parentId + "/" + holderId;
		}
	} else {
		this.path = path;
		var pe = path.substr(1).split("/");
		var l = pe.length;
		assert(l >= 1);
		this.holderId = pe[l - 1];
		if (l > 1) {
			this.parentId = pe[l - 2];
		} else {
			this.parentId = this.holderId;
		}
	}
	this.keyspec = new Key();
	this.keyspec.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
	this.taAlgorithmIdentifier = new ByteString("id-TA-ECDSA-SHA-256", OID);
	this.countryseq = null;
}

exports.CVCCA = CVCCA;



/**
 * Set factory generating EACCryptoProvider for private key operations (create, use, delete)
 *
 * @param {EACCryptoProvider} eaccp the EAC Crypto Provider for this instance
 * @param {String} eaccpid the instance id
 */
CVCCA.prototype.setEACCryptoProviderFactory = function(eaccpf, eaccpid) {
	this.eaccpf = eaccpf;
	this.eaccpid = eaccpid;
}



/**
 * Return a suitable crypto instance
 *
 */
CVCCA.prototype.getCrypto = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCrypto()");

	if (this.crypto) {
		return this.crypto;
	}

	if (this.eaccpf) {
		var eaccp = this.eaccpf.getEACCryptoProvider(this.eaccpid, true);
		return eaccp.getCrypto();
	}

	return this.certstore.getCrypto()
}



/**
 * Returns true if this is a root CA
 *
 * @returns true if this is a root CA
 * @type boolean
 */
CVCCA.prototype.isRootCA = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "isRootCA()");

	return this.holderId == this.parentId;
}



/**
 * Returns true if this CA has a certificate.
 *
 * @returns true if this CA is operational
 * @type boolean
 */
CVCCA.prototype.hasCertificate = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "hasCertificate()");

	var currentchr = this.certstore.getCurrentCHR(this.path);
	return currentchr != null;
}



/**
 * Returns true if this CA is operational.
 *
 * @returns true if this CA is operational
 * @type boolean
 */
CVCCA.prototype.isOperational = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "isOperational()");

	var currentchr = this.certstore.getCurrentCHR(this.path);
	if (currentchr == null) {
		return false;
	}
	var cvc = this.certstore.getCertificate(this.path, currentchr);
	return !cvc.isExpired();
}



/**
 * Sets the key specification for generating requests
 *
 * @param {Key} keyparam a key object containing key parameters (e.g. EC Curve)
 * @param {ByteString} algorithm the terminal authentication algorithm object identifier
 */
CVCCA.prototype.setKeySpec = function(keyparam, algorithm) {
	GPSystem.log(GPSystem.DEBUG, module.id, "setKeySpec(" + keyparam + "," + algorithm + ")");

	this.keyspec = keyparam;
	this.taAlgorithmIdentifier = algorithm;
}



/**
 * Set flags that controls the removal of the previous key if the certificate for the new key is imported
 *
 * @param {boolean} removePreviousKey true to remove, false to keep
 */
CVCCA.prototype.setRemovePreviousKey = function(removePreviousKey) {
	GPSystem.log(GPSystem.DEBUG, module.id, "setRemovePreviousKey(" + removePreviousKey + ")");

	this.removePreviousKey = removePreviousKey;
}



/**
 * Set country code to be included in sequence number of public key reference
 *
 * @param {String} countryseq the two character country code
 */
CVCCA.prototype.setCountryCodeForSequence = function(countryseq) {
	GPSystem.log(GPSystem.DEBUG, module.id, "setCountryCodeForSequence(" + countryseq + ")");

	this.countryseq = countryseq;
}



/**
 * Return private key handle, either from EACCryptoProvider or Certificate Store
 *
 */
CVCCA.prototype.getPrivateKey = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPrivateKey(" + path + "," + chr + ")");

	if (this.eaccpf) {
		var eaccp = this.eaccpf.getEACCryptoProvider(this.eaccpid, true);

		var blob = this.certstore.getSigner(path, chr);
		var prkey = eaccp.getPrivateKey(path, chr, blob);

		if (prkey && !blob) {		// Have a key but no matching signer
			GPSystem.log(GPSystem.DEBUG, module.id, "Signer " + chr + " not found in database, but on crypto device. Creating signer now.");

			// Calculate current signer number
			var seq = chr.getSequenceNo();
			var cnt = parseInt(seq.substr(-5), 10);			// Full 5 digit sequence
			if (isNaN(cnt)) {
				var cnt = parseInt(seq.substr(-3), 10);		// 3 Digit sequence number
			}

			GPSystem.log(GPSystem.DEBUG, module.id, "Setting signer number to " + cnt);
			this.certstore.setSignerNo(path, cnt);
			this.certstore.newSigner(path, chr);
		}
		return prkey;
	} else {
		return this.certstore.getPrivateKey(path, chr);
	}
}



/**
 * Generate a certificate request
 *
 * @param {PublicKeyReference} car the CA at which this request is addressed
 * @param {boolean} forceInitial force an initial request, even if a current certificate is available
 * @param {boolean} signinitial sign with initial key (sequence = 00000)
 * @return the certificate request
 * @type CVC
 */
CVCCA.prototype.generateRequest = function(car, forceinitial, signinitial) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateRequest(" + car + "," + forceinitial + "," + signinitial + ")");

	if (typeof(this.certstore.sc) != "undefined") {
		return this.generateRequestHSM(car, forceinitial, signinitial);
	}

	if (this.eaccpf) {
		var eaccp = this.eaccpf.getEACCryptoProvider(this.eaccpid, true);
		if (typeof(eaccp.generateRequest) == "function") {
			return this.generateRequestHSMCP(eaccp, car, forceinitial, signinitial);
		}
	}

	// Obtain key parameter

	if (typeof(this.keyspec.getComponent(Key.ECC_P)) != "undefined") {
		var prk = new Key(this.keyspec);
		prk.setType(Key.PRIVATE);
		var keyalg = Crypto.EC;
	} else {
		var prk = new Key();
		prk.setType(Key.PRIVATE);
		var keyalg = Crypto.RSA;
	}
	var puk = new Key(this.keyspec);
	puk.setType(Key.PUBLIC);

	// Determine CHR
	var currentchr = this.certstore.getCurrentCHR(this.path);
	var nextchr = this.certstore.getNextCHR(this.path, this.countryseq);

	// Generate key pair
	if (this.eaccpf) {
		var eaccp = this.eaccpf.getEACCryptoProvider(this.eaccpid, true);
		eaccp.generateKeyPair(this.path, nextchr, keyalg, prk, puk);
	} else {
		this.certstore.generateKeyPair(this.path, nextchr, keyalg, prk, puk);
	}

	// Generate certificate request
	var reqGenerator = new EAC2CVRequestGenerator(this.getCrypto());

	// Set CPI
	reqGenerator.setProfileIdentifier(0x00);

	// Set public key for request
	reqGenerator.setPublicKey(puk);

	// Set oid of algorithm
	reqGenerator.setTAAlgorithmIdentifier(this.taAlgorithmIdentifier);

	// Set CHR for the request
	reqGenerator.setCHR(nextchr);

	if ((typeof(car) != "undefined") && (car != null)) {
		reqGenerator.setCAR(car);
	}

	if ((currentchr != null) && !forceinitial) {
		var previousprk = this.getPrivateKey(this.path, currentchr);
		var previouscvc = this.certstore.getCertificate(this.path, currentchr);
		var req = reqGenerator.generateAuthenticatedCVRequest(prk, previousprk, currentchr, previouscvc.getPublicKeyOID());
	} else {
		// Generate the request
		if (signinitial) {
			var initialchr = new PublicKeyReference(nextchr.getHolder() + "00000");
			var firstprk = this.getPrivateKey(this.path, initialchr);
			var req = reqGenerator.generateAuthenticatedCVRequest(prk, firstprk, initialchr);
		} else {
			var req = reqGenerator.generateCVRequest(prk);
		}
	}

	req = new CVC(req);

	this.certstore.storeRequest(this.path, req);

	return req;
}



/**
 * Generate a certificate request using a SmartCard-HSM based private key
 *
 * @param {PublicKeyReference} car the CA at which this request is addressed
 * @param {boolean} forceInitial force an initial request, even if a current certificate is available
 * @param {boolean} signinitial sign with initial key (sequence = 00000)
 * @return the certificate request
 * @type CVC
 */
CVCCA.prototype.generateRequestHSM = function(car, forceinitial, signinitial) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateRequestHSM(" + car + "," + forceinitial + "," + signinitial + ")");

	var req = this.certstore.generateRequest(this.path, car, forceinitial, signinitial, this.keyspec, this.taAlgorithmIdentifier, this.countryseq);
	this.certstore.storeRequest(this.path, req);

	return req;
}



/**
 * Generate a certificate request using a SmartCard-HSM based private key via EACCryptoProvider
 *
 * @param {EACCryptoProvider} prov the EACCryptoProvider
 * @param {PublicKeyReference} car the CA at which this request is addressed
 * @param {boolean} forceInitial force an initial request, even if a current certificate is available
 * @param {boolean} signinitial sign with initial key (sequence = 00000)
 * @return the certificate request
 * @type CVC
 */
CVCCA.prototype.generateRequestHSMCP = function(prov, car, forceinitial, signinitial) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateRequestHSM(" + car + "," + forceinitial + "," + signinitial + ")");

	// Determine CHR
	var currentchr = this.certstore.getCurrentCHR(this.path);
	do	{
		var nextchr = this.certstore.getNextCHR(this.path, this.countryseq);
		var prk = this.getPrivateKey(this.path, nextchr);
		if (!prk) {
			break;
		}
		GPSystem.log(GPSystem.INFO, module.id, "CHR " + nextchr + " already in use, skipping to next CHR");
	} while (true);

	var req = prov.generateRequest(this.path, currentchr, nextchr, car, forceinitial, signinitial, this.keyspec, this.taAlgorithmIdentifier);
	this.certstore.storeRequest(this.path, req);
	this.certstore.newSigner(this.path, nextchr);

	return req;
}



/**
 * Counter-sign a request
 *
 * @param {CVC} req the initial request
 * @return the certificate request
 * @type CVC
 */
CVCCA.prototype.counterSignRequest = function(request) {
	GPSystem.log(GPSystem.DEBUG, module.id, "counterSignRequest('" + request + "')");

	assert(!request.isAuthenticatedRequest());

	var car = this.certstore.getCurrentCHR(this.path);
	assert(car != null);

	var cacvc = this.certstore.getCertificate(this.path, car);
	assert(cacvc != null);

	var signingTAAlgorithmIdentifier = cacvc.getPublicKeyOID();
	var prk = this.getPrivateKey(this.path, car);

	var req = EAC2CVRequestGenerator.signAuthenticatedCVRequest(this.getCrypto(), request.getASN1(), prk, car, signingTAAlgorithmIdentifier);
	return new CVC(req);
}



/**
 * Generate an initial certificate request
 *
 * @param {PublicKeyReference} car the CA at which this request is addressed
 * @return the certificate request
 * @type CVC
 */
CVCCA.prototype.generateInitialRequest = function(car) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateInitialRequest(" + car + ")");

	return this.generateRequest(car, true, false);
}



/**
 * Generate a signed initial certificate request
 *
 * @param {PublicKeyReference} car the CA at which this request is addressed
 * @return the certificate request
 * @type CVC
 */
CVCCA.prototype.generateSignedInitialRequest = function(car) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateSignedInitialRequest(" + car + ")");

	return this.generateRequest(car, true, true);
}



/**
 * Generate certificate for certificate request
 *
 * <p>Certificate contents is defined through the policy object:</p>
 * <pre>
 *  	var policy = { certificateValidityDays: 2,
 * 				   chatRoleOID: new ByteString("id-IS", OID),
 * 				   chatRights: new ByteString("E3", HEX),
 * 				   includeDomainParameter: true,
 * 				   extensions: []
 * 				 };
 * </pre>
 *
 * @param {CVC} req the certificate request
 * @param {Object} policy the object with policy settings
 * @returns the certificate
 * @type CVC
 */
CVCCA.prototype.generateCertificate = function(req, policy) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateCertificate('" + req + "'" + policy + ")");

	var car = this.certstore.getCurrentCHR(this.path);
	var maxExpDate = null;

	if (car == null) {				// No CA certificate found
		if (this.isRootCA()) {
			car = req.getCHR();		// Generate a self-signed root certificate
		} else {
			throw new GPError("CVCCA", GPError.INVALID_DATA, 0, "No current certificate found");
		}
		if (policy.publicKeyOID) {
			var signingTAAlgorithmIdentifier = policy.publicKeyOID;
		} else {
			var signingTAAlgorithmIdentifier = req.getPublicKeyOID();
		}
	} else {
		var cacvc = this.certstore.getCertificate(this.path, car);
		var signingTAAlgorithmIdentifier = cacvc.getPublicKeyOID();
		if (policy.shellModelForExpirationDate) {
			maxExpDate = cacvc.getCXD();
		}
	}

	var generator = new EAC2CVCertificateGenerator(this.getCrypto());
	generator.setCAR(car);
	generator.setCHR(req.getCHR());
	var effDate = new Date();
	if (policy.ced) {
		effDate = policy.ced;
	}
	effDate.setHours(12, 0, 0, 0);
	var expDate = new Date((policy.certificateValidityDays - 1) * (1000 * 60 * 60 * 24) + effDate.getTime());
	expDate.setHours(12, 0, 0, 0);

	if (maxExpDate != null) {
		if (effDate.getTime() > maxExpDate.getTime()) {
			throw new GPError("CVCCA", GPError.INVALID_DATA, 0, "CA certificate is expired");
		}
		// Expiration date of issued certificate must not exceed expiration date of issuing CA
		if (expDate.getTime() > maxExpDate.getTime()) {
			expDate = maxExpDate;
		}
	}

	generator.setEffectiveDate(effDate);
	generator.setExpiryDate(expDate);
	generator.setChatOID(policy.chatRoleOID);
	generator.setChatAuthorizationLevel(policy.chatRights);
	generator.setPublicKey(req.getPublicKey());
	generator.setProfileIdentifier(0x00);
	if (policy.publicKeyOID) {
		generator.setTAAlgorithmIdentifier(policy.publicKeyOID);
	} else {
		generator.setTAAlgorithmIdentifier(req.getPublicKeyOID());
	}

	generator.setIncludeDomainParameters(policy.includeDomainParameter);
	generator.setExtensions(policy.extensions);
	var prk = this.getPrivateKey(this.path, car);
	var cvc = generator.generateCVCertificate(prk, signingTAAlgorithmIdentifier);

	return cvc;
}



/**
 * Store issued certificate
 *
 * @param {CVC} cert a newly issued certificate
 */
CVCCA.prototype.storeCertificate = function(cert) {
	GPSystem.log(GPSystem.DEBUG, module.id, "storeCertificate('" + cert + "')");

	var chrHolder = cert.getCHR().getHolder();
	this.certstore.storeCertificate(this.path + "/" + chrHolder, cert, false);
}



/**
 * Remove previous key
 *
 * @param {PublicKeyReference} previous the previously used CHR
 */
CVCCA.prototype.removePreviouslyUsedKey = function(previous) {
	GPSystem.log(GPSystem.DEBUG, module.id, "removePreviouslyUsedKey('" + previous + "')");

	if (previous.equals(this.certstore.getCurrentCHR(this.path))) {
		GPSystem.log(GPSystem.INFO, module.id, "CHR " + previous + " is still the active key. Not deleting it");
		return;
	}

	if (this.eaccpf) {
		var eaccp = this.eaccpf.getEACCryptoProvider(this.eaccpid, true);
		eaccp.deletePrivateKey(this.path, previous);
	} else {
		this.certstore.deletePrivateKey(this.path, previous);
	}
}



/**
 * Import a certificate into the certificate store and make it the current certificate
 *
 * @param {CVC} cert the certificate
 */
CVCCA.prototype.importCertificate = function(cert) {
	GPSystem.log(GPSystem.DEBUG, module.id, "importCertificate('" + cert + "')");

	var chr = cert.getCHR();
	var prk = this.getPrivateKey(this.path, chr);
	if (prk == null) {
		throw new GPError("CVCCA", GPError.INVALID_DATA, 0, "Invalid certificate, no matching private key");
	}
	var c = this.certstore.getCertificate(this.path, cert.getCHR());
	if (c != null) {
		GPSystem.log(GPSystem.INFO, module.id, "Certificate " + c + " already existing");
	}

	// Save currentchr
	var currentchr = this.certstore.getCurrentCHR(this.path);

	if (this.isRootCA() && !this.isOperational()) {
		this.certstore.storeCertificate(this.path, cert, (c == null));
	} else {
		if (!this.certstore.insertCertificate(this.getCrypto(), cert, this.path)) {
			throw new GPError("CVCCA", GPError.CRYPTO_FAILED, 0, "Could not validate certificate");
		}
	}
	if (this.removePreviousKey && currentchr) {
		this.removePreviouslyUsedKey(currentchr);
	}
}



/**
 * Import a list of certificates into the certificate store
 *
 * @param {CVC[]} certs the list of certificates
 */
CVCCA.prototype.importCertificates = function(certs) {
	GPSystem.log(GPSystem.DEBUG, module.id, "importCertificates('" + certs + "')");

	// Save currentchr
	var currentchr = this.certstore.getCurrentCHR(this.path);

	var list = this.certstore.insertCertificates(this.getCrypto(), certs, true, this.path);

	if (this.removePreviousKey && currentchr) {
		this.removePreviouslyUsedKey(currentchr);
	}

	return list;
}



/**
 * Returns a list of relevant certificates.
 *
 * <p>If the CA is the root CA, then all self-signed and link certificates are returned.</p>
 * <p>If the CA is a DVCA, then all certificates of the associated root and the current
 *    DVCA certificate is returned.</p>
 *
 * @param {PublicKeyReference} fromCAR the optional starting point for the list if not a root CA
 */
CVCCA.prototype.getCertificateList = function(fromCAR) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateList(" + fromCAR + ")");

	var list;

	if (this.isRootCA()) {
		list = this.certstore.listCertificates(this.path);
	} else {
		var path = this.path;

		while(true) {
			var chr = this.certstore.getCurrentCHR(path);
			if (chr == null) {
				var ofs = path.lastIndexOf("/");
				if (ofs == 0) {
					list = [];
				} else {
					path = path.substr(0, ofs);
					continue;
				}
			} else {
				list = this.certstore.getCertificateChain(path, chr, fromCAR);
			}
			break;
		}
	}

	return list;
}



/**
 * Return certificate issued by this CA
 *
 * @param {PublicKeyReference} chr the certificate holder reference
 * @returns the certificate or null if not found
 * @type CVC
 */
CVCCA.prototype.getIssuedCertificate = function(chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getIssuedCertificate(" + chr + ")");

	var path = this.path + "/" + chr.getHolder();

	var cvc = this.certstore.getCertificate(path, chr);
	if (cvc == null) {
		GPSystem.trace("No certificate found for " + chr);
		return null;
	}

	return cvc;
}



/**
 * Return authentic public key with domain parameter for a given CHR subordinate to the CA
 *
 * @param {PublicKeyReference} chr the certificate holder reference
 * @returns the public key or null
 * @type Key
 */
CVCCA.prototype.getAuthenticPublicKey = function(chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getAuthenticPublicKey(" + chr + ")");

	var cvc = this.getIssuedCertificate(chr);

	if (cvc == null) {
		return null;
	}

	if (this.isRootCA()) {
		var dp = this.certstore.getDomainParameter(cvc.getCAR());
	} else {
		var dvcacvc = this.certstore.getCertificate(this.path, cvc.getCAR());
		if (dvcacvc == null) {
			GPSystem.trace("No certificate found for " + cvc.getCAR());
			return null;
		}
		var dp = this.certstore.getDomainParameter(dvcacvc.getCAR());
	}

	return(cvc.getPublicKey(dp));
}



CVCCA.test = function(daofcvca, daofdvca, daofterm) {

	var crypto = new Crypto();

	var ss = new CVCertificateStore(daofcvca);
	ss.setContextMarker(0);
	var cvca = new CVCCA(crypto, ss, null, null, "/UTCVCA");

	// Create a new request
	var req = cvca.generateRequest(null, false);
	GPSystem.trace("Request: " + req);
	GPSystem.trace(req.getASN1());

	assert(req.verifyWith(crypto, req.getPublicKey()));

	// Create self-signed or link certificate based on request
	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
	var cert = cvca.generateCertificate(req, policy);
	GPSystem.trace("Certificate: " + cert);
	GPSystem.trace(cert.getASN1());

	// Import certificate into store, making it the most current certificate
	cvca.importCertificate(cert);

	// Generate additional self-signed root certificate
	// This must be done after the link certificate has been imported
	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
	var cert = cvca.generateCertificate(req, policy);
	GPSystem.trace("Certificate: " + cert);
	GPSystem.trace(cert.getASN1());

	// Import certificate into store, making it the most current certificate
	cvca.importCertificate(cert);

	var ss = new CVCertificateStore(daofdvca);
	ss.setContextMarker(1);
	var dvca = new CVCCA(crypto, ss, null, null, "/UTCVCA/UTDVCA");

	var certlist = cvca.getCertificateList();
	var list = dvca.importCertificates(certlist);

	if (list.length > 0) {
		GPSystem.trace("Warning: Could not import the following certificates");
		for (var i = 0; i < list.length; i++) {
			GPSystem.trace(list[i]);
		}
	}

	// Create a new request
	var req = dvca.generateRequest(null, false);
	GPSystem.trace("Request: " + req);
	GPSystem.trace(req.getASN1());

	// Sign this request with root CA
	// This must be done after the link certificate has been imported
	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("A3", HEX),
				   includeDomainParameter: false,
				   extensions: []
				 };
	var cert = cvca.generateCertificate(req, policy);
	GPSystem.trace("Certificate: " + cert);
	GPSystem.trace(cert.getASN1());

	cvca.storeCertificate(cert);
	dvca.importCertificate(cert);


	var ss = new CVCertificateStore(daofterm);
	ss.setContextMarker(2);
	var term = new CVCCA(crypto, ss, null, null, "/UTCVCA/UTDVCA/UTTERM");

	term.setRemovePreviousKey(true);

	var certlist = dvca.getCertificateList();
	GPSystem.trace("Certificate list: ");
	GPSystem.trace(certlist);
	var list = term.importCertificates(certlist);

	if (list.length > 0) {
		GPSystem.trace("Warning: Could not import the following certificates");
		for (var i = 0; i < list.length; i++) {
			GPSystem.trace(list[i]);
		}
	}

	// Create a new request
	var req = term.generateRequest(null, false);
	GPSystem.trace("Request: " + req);
	GPSystem.trace(req.getASN1());

	// Sign this request with DVCA
	// This must be done after the link certificate has been imported
	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("23", HEX),
				   includeDomainParameter: false,
				   extensions: []
				 };
	var cert = dvca.generateCertificate(req, policy);
	GPSystem.trace("Certificate: " + cert);
	GPSystem.trace(cert.getASN1());

	dvca.storeCertificate(cert);
	term.importCertificate(cert);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Support for a card verifiable certificates store according to EAC 1.1/2.0 using Data Access Objects
 */

// Imports
var CVC = require('scsh/eac/CVC').CVC;
var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;
var Certificate = require('scsh/pki-db/Certificate').Certificate;
var Holder = require('scsh/pki-db/Holder').Holder;
var PKCS8 = require('scsh/pkcs/PKCS8').PKCS8;



/**
 * Create an object to access a certificate store.
 *
 * @class Class that abstracts a certificate and key store for a EAC PKI.
 *
 * @constructor
 * @param {DAOFactory} DAOFactory the factory that can create data access objects for persistent information
 */
function CVCertificateStore(daof) {
	assert(daof, "Parameter doaf can't be empty");

	if (typeof(daof) == "string") {
		var DAOFactoryFileSystem    = require('scsh/pki-db/DAOFactoryFileSystem').DAOFactoryFileSystem;
		daof = new DAOFactoryFileSystem(daof);
	}

	this.daof = daof;
	this.certtype = Holder.CVC;
}

exports.CVCertificateStore = CVCertificateStore;



/**
 * Check path
 *
 * This method validates the path for semantic errors and should be called for input
 * validation before using the path in the certificate store API.
 *
 * @param {String} path the path to validate
 */
CVCertificateStore.checkPath = function(path) {
	if ((path.indexOf("/..") >= 0) ||
		(path.indexOf("../") >= 0) ||
		(path.indexOf("\\..") >= 0) ||
		(path.indexOf("..\\") >= 0) ||
		(path.indexOf("\0") >= 0) ||
		(path.indexOf("~") >= 0)) {
		throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Path \"" + path + "\" contains illegal characters");
	}

	var pa = path.split("/");
	if ((pa.length < 2) || (pa.length > 4)) {
		throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Path must not contain less than one or more that three elements");
	}
	if (pa[0] != "") {
		throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Path must start with /");
	}
	for (var i = 1; i < pa.length; i++) {
		if ((pa[i].length < 3) || (pa[i].length > 11)) {
			throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Path element length must be between 3 and 11");
		}
	}
}



/**
 * Strip the last element of the path, effectively defining the parent within the path
 *
 * @param {String} path the path to strip the last element from
 * @returns the parent path or null for the root
 * @type String
 */
CVCertificateStore.parentPathOf = function(path) {
	var ofs = path.lastIndexOf("/");
	if (ofs <= 0) {
		return null;
	}
	return path.substr(0, ofs);
}



/**
 * Return the n-element of the path
 *
 * @param {String} path the path to return the last element from
 * @returns the last path element or null for the root
 * @type String
 */
CVCertificateStore.nthElementOf = function(path, n) {
	var pe = path.substr(1).split("/");
	if (typeof(n) == "undefined") {
		return pe[pe.length - 1];
	}
	return pe[n];
}



/**
 * Set a context marker that goes into the certificate type
 *
 * The context marker allows to have different certificate stores with different
 * namespaces in the same database. The default context marker is 0.
 *
 * The context marker is stored with the Holder table.
 *
 * @param {Number} contextMarker the marker
 */
CVCertificateStore.prototype.setContextMarker = function(contextMarker) {
	this.certtype = (contextMarker << 4) + Holder.CVC;
}



/**
 * Return a suitable crypto object. This may be overwritten by derived classes
 *
 * @type Crypto
 * @return the Crypto object
 */
CVCertificateStore.prototype.getCrypto = function() {
	if (this.crypto == undefined) {
		this.crypto = new Crypto();
	}
	return this.crypto;
}



/**
 * Check if holder exists for path
 *
 * @param {String} path
 * @type Holder
 * @return true if holder exists
 * @private
 */
CVCertificateStore.prototype.hasHolder = function(path) {
	var holderdao = this.daof.getHolderDAO();

	var holder = holderdao.getHolder(path, this.certtype);
	return holder != null;
}



/**
 * List certificate holders for a given PKI element
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @returns a list of holder ids, possibly empty
 * @type String[]
 */
CVCertificateStore.prototype.listHolders = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listHolders(" + path + ")");

	var holderdao = this.daof.getHolderDAO();

	var result = holderdao.getHolderList(path, this.certtype);
	return result;
}



/**
 * Get existing holder object for given path
 *
 * @param {String} path
 * @param {Boolean} create create if holder doesn't exist
 * @type Holder
 * @return the holder object
 * @private
 */
CVCertificateStore.prototype.getHolder = function(path, create) {
	var holderdao = this.daof.getHolderDAO();

	var holder = holderdao.getHolder(path, this.certtype);

	if (!holder) {
		if (!create) {
			throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate holder for " + path);
		}
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found, creating new.");
		holder = holderdao.newHolder(path, this.certtype);
	}

	return holder;
}



/**
 * Return the current CHR for which a valid certificate exists
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @returns the current CHR for which a certificate exists or null if none exists
 * @type PublicKeyReference
 */
CVCertificateStore.prototype.getCurrentCHR = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCHR(" + path + ")");

	var holderdao = this.daof.getHolderDAO();

	var holder = holderdao.getHolder(path, this.certtype);

	if (!holder) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found");
		return null;
	}

	var certdao = this.daof.getCertificateDAO();

	var certificate = certdao.getCurrentCertificate(holder);
	if (!certificate) {
		GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCHR(" + path + ") : No current certificate");
		return null;
	}

	var cvc = new CVC(certificate.bytes);
	var chr = cvc.getCHR();
	GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCHR(" + path + ") : " + chr);
	return chr;
}



/**
 * Return the next CHR
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @param {String} countryseq the 2 digit country code to include in the sequence number (optional)
 * @returns the next CHR based on the sequence counter maintained in the configuration file
 * @type PublicKeyReference
 */
CVCertificateStore.prototype.getNextCHR = function(path, countryseq) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getNextCHR(" + path + "," + countryseq + ")");

	var holderdao = this.daof.getHolderDAO();

	var holder = holderdao.getHolder(path, this.certtype);

	if (!holder) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found, creating new.");
		holder = holderdao.newHolder(path, this.certtype);
	}

	holderdao.updateSignerNo(holder, holder.signerNo + 1);

	return this.getCHRForSequenceNumber(path, holder.signerNo, countryseq);
}



/**
 * Set the new signer number, if it is larger than the current
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @param {Number} signerNo the new signer number
 */
CVCertificateStore.prototype.setSignerNo = function(path, signerNo) {
	GPSystem.log(GPSystem.DEBUG, module.id, "setSignerNo(" + path + "," + signerNo + ")");

	var holderdao = this.daof.getHolderDAO();

	var holder = holderdao.getHolder(path, this.certtype);

	if (!holder) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found, creating new.");
		holder = holderdao.newHolder(path, this.certtype);
	}

	if (signerNo > holder.signerNo) {
		holderdao.updateSignerNo(holder, signerNo);
	}
}



/**
 * Generate key pair
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key pair
 * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
 * @param {Key} prk the private key template
 * @param {Key} puk the public key template
 */
CVCertificateStore.prototype.generateKeyPair = function(path, chr, algo, prk, puk) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateKeyPair(" + path + "," + chr + ")");

	var holder = this.getHolder(path, false);

	var crypto = this.getCrypto();

	// Generate key pair
	crypto.generateKeyPair(algo, puk, prk);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.newSigner(holder, chr.toString(), chr.getBytes());

	var p8 = PKCS8.encodeKeyUsingPKCS8Format(prk);
	signerDAO.updateSignerKey(signer, p8);
}



/**
 * Get a private key in the certificate store
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @returns the private key or null if not found
 * @type Key
 */
CVCertificateStore.prototype.getPrivateKey = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPrivateKey(" + path + "," + chr + ")");

	var holder = this.getHolder(path, false);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.getSignerByKeyId(holder, chr.getBytes());

	if (!signer) {
		return null;
	}

	return PKCS8.decodeKeyFromPKCS8Format(signer.keyblob);
}



/**
 * Remove private key
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @returns true is deleted
 * @type boolean
 */
CVCertificateStore.prototype.deletePrivateKey = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteRequest(" + path + "," + chr + ")");

	var holder = this.getHolder(path, true);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.getSignerByName(holder, chr.toString());

	if (!signer) {
		return false;
	}

	return signerDAO.deleteSigner(signer);
}



/**
 * Create Signer
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key pair
 * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
 * @param {Key} prk the private key template
 * @param {Key} puk the public key template
 */
CVCertificateStore.prototype.newSigner = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newSigner(" + path + "," + chr + ")");

	var holder = this.getHolder(path, false);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.newSigner(holder, chr.toString(), chr.getBytes());
}



/**
 * Get Signer
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @returns the private key blob
 * @type ByteString
 */
CVCertificateStore.prototype.getSigner = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner(" + path + "," + chr + ")");

	if (!this.hasHolder(path)) {
		return null;
	}

	var holder = this.getHolder(path, false);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.getSignerByKeyId(holder, chr.getBytes());

	if (!signer) {
		return null;
	}

	var blob = signer.keyblob;
	if (!blob) {
		blob = new ByteString("", HEX);
	}

	return blob;
}



/**
 * Remove Signer
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @returns true is deleted
 * @type boolean
 */
CVCertificateStore.prototype.deleteSigner = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteSigner(" + path + "," + chr + ")");

	var holder = this.getHolder(path, true);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.getSignerByName(holder, chr.toString());

	if (!signer) {
		return false;
	}

	return signerDAO.deleteSigner(signer);
}



/**
 * Store a certificate request in the certificate store
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {CVC} req the request
 */
CVCertificateStore.prototype.storeRequest = function(path, req) {
	GPSystem.log(GPSystem.DEBUG, module.id, "storeRequest(" + path + "," + req + ")");

	var chr = req.getCHR();

	var holder = this.getHolder(path, true);

	var requestDAO = this.daof.getRequestDAO();
	requestDAO.newRequest(holder, chr.getBytes(), req.getBytes());
}



/**
 * Return request for given CHR
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for the certificate
 * @type CVC
 * @return the request or null
 */
CVCertificateStore.prototype.getRequest = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRequest(" + path + "," + chr + ")");

	var holder = this.getHolder(path, true);

	var requestDAO = this.daof.getRequestDAO();
	var request = requestDAO.getRequestByKeyId(holder, chr.getBytes());

	if (!request) {
		return null;
	}

	var req = new CVC(request.bytes);
	return req;
}



/**
 * Remove request
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this request
 * @returns true is deleted
 * @type boolean
 */
CVCertificateStore.prototype.deleteRequest = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteRequest(" + path + "," + chr + ")");

	var holder = this.getHolder(path, true);

	var requestDAO = this.daof.getRequestDAO();
	var request = requestDAO.getRequestByKeyId(holder, chr.getBytes());

	if (!request) {
		return false;
	}

	return requestDAO.deleteRequest(request);
}



/**
 * Store a certificate in the certificate store
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {CVC} cert the certificate
 * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
 * @param {Boolean} forceUpdate true if certificate should be updated even if one already exists
 */
CVCertificateStore.prototype.storeCertificate = function(path, cert, makeCurrent, forceUpdate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "storeCertificate(" + path + ",'" + cert + "'," + makeCurrent + ")");

	var holderdao = this.daof.getHolderDAO();

	var holder = holderdao.getHolder(path, this.certtype);

	if (!holder) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found, creating new.");
		holder = holderdao.newHolder(path, this.certtype);
	}

	var certdao = this.daof.getCertificateDAO();

	var car = cert.getCAR();
	var chr = cert.getCHR();
	var dir = Certificate.UP;

	if (car.equals(chr)) {
		dir = Certificate.SHORT;
	}

	var certificate = certdao.getCertificateBySerial(holder, chr.toString(), dir);

	if (certificate) {
		var ecvc = new CVC(certificate.bytes);

		GPSystem.log(GPSystem.INFO, module.id, "storeCertificate() : We already have a certificate for that serial number");
		GPSystem.log(GPSystem.INFO, module.id, "Existing: " + ecvc);
		GPSystem.log(GPSystem.INFO, module.id, "New     : " + cert);
		GPSystem.log(GPSystem.INFO, module.id, "Both are " + (cert.getBytes().equals(certificate.bytes) ? "identical" : "different"));

		if (ecvc.getCAR().equals(ecvc.getCHR()) && (dir == Certificate.UP)) {
			GPSystem.log(GPSystem.INFO, module.id, "This is an additional link certificate for an existing root certificate");
		} else {
			if (!forceUpdate) {
				return;
			}
		}
	}

	var template = {
		keyId: chr.getBytes()
	};

	var certificate = certdao.newCertificate(holder, chr.toString(), dir, cert.getBytes(), template);

	if (makeCurrent) {
		holderdao.updateCurrentCertificate(holder, certificate);
	}
}



/**
 * Return certificate for a given CHR in binary format
 *
 * <p>This method returns a self-signed root certificate if the selfsigned
 *    parameter is set. If not set or set to false, then matching link certificate,
 *    if any, is returned rather than the self-signed certificate.</p>
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for the certificate
 * @param {boolean} selfsigned return the self-signed root certificate rather than a link certificate
 * @returns the certificate or null if not found
 * @type ByteString
 */
CVCertificateStore.prototype.getCertificateBinary = function(path, chr, selfsigned) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateBinary(" + path + "," + chr + "," + selfsigned + ")");

	var holderdao = this.daof.getHolderDAO();

	var holder = holderdao.getHolder(path, this.certtype);

	if (!holder) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder at " + path + " not found");
		return null;
	}

	var certificateDAO = this.daof.getCertificateDAO();

	var certificate = certificateDAO.getCertificateBySerial(holder, chr.toString(), selfsigned ? Certificate.SHORT : Certificate.UP );

	if (!certificate) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Certificate for " + chr.toString() + " not found");
		return null;
	}

	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateBinary:" + certificate.bytes.bytes(0,10).toString(HEX));
	return certificate.bytes;
}



/**
 * Return certificate for a given CHR
 *
 * <p>This method returns a self-signed root certificate if the selfsigned
 *    parameter is set. If not set or set to false, then matching link certificate,
 *    if any, is returned rather than the self-signed certificate.</p>
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for the certificate
 * @param {boolean} selfsigned return the self-signed root certificate rather than a link certificate
 * @returns the certificate or null if not found
 * @type CVC
 */
CVCertificateStore.prototype.getCertificate = function(path, chr, selfsigned) {
	var bin = this.getCertificateBinary(path, chr, selfsigned);

	if (bin == null) {
		return null;
	}

	var cvc = null;
	try	{
		cvc = new CVC(bin);
	}
	catch (e) {
		GPSystem.log(GPSystem.ERROR, module.id, e);
	}
	return cvc;
}



/**
 * Try locating a certificate with the given CHR
 *
 * This method tries to find a specific certificate in the store, irrespectively of the holder.
 *
 * @param {PublicKeyReference} chr the public key reference for the certificate
 * @returns the certificate or null if none found or more than one found
 * @type CVC
 */
CVCertificateStore.prototype.locateCertificate = function(chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "locateCertificate(" + chr + ")");

	var certificateDAO = this.daof.getCertificateDAO();

	if (typeof(certificateDAO.getCertificateBySerialAndType) == "undefined") {
		return null;
	}

	var certificate = certificateDAO.getCertificateBySerialAndType(chr.toString(), this.certtype);

	if (!certificate) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Certificate for " + chr.toString() + " not found or not unique");
		return null;
	}

	cvc = new CVC(certificate.bytes);
	return cvc;
}



/**
 * Remove certificate
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this certificate
 * @param {boolean} selfsigned delete the self-signed root certificate rather than a link certificate
 * @returns true is deleted
 * @type boolean
 */
CVCertificateStore.prototype.deleteCertificate = function(path, chr, selfsigned) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteCertificate(" + path + "," + chr + "," + selfsigned + ")");

	var holder = this.getHolder(path, false);

	if (!holder) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found");
		return null;
	}

	var certificateDAO = this.daof.getCertificateDAO();

	var certificate = certificateDAO.getCertificateBySerial(holder, chr.toString(), selfsigned ? Certificate.SHORT : Certificate.UP );

	if (!certificate) {
		return false;
	}
	return certificateDAO.deleteCertificate(certificate);
}



/**
 * Return a chain of certificates resembling a path from root to end entity.
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} tochr the public key reference for the certificate at the end of the chain
 * @param {PublicKeyReference} fromcar the public key reference for the certificate to start with or root if undefined
 * @returns the list of certificates starting with a self signed root certificate (fromcar undefined) a certificate
 *          issued by fromcar up to an including the certificate referenced by tochr. Return null if fromcar is not found.
 * @type CVC[]
 */
CVCertificateStore.prototype.getCertificateChain = function(path, tochr, fromcar) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateChain(" + path + "," + tochr + "," + fromcar + ")");

	var chain = [];
	var chr = tochr;

	while (true) {
		var cvc = this.getCertificate(path, chr, false);
		if (cvc == null) {
			throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate certificate " + chr);
		}
		chain.push(cvc);
		if (typeof(fromcar) == "undefined") {
			if (cvc.getCAR().equals(cvc.getCHR())) {
				break;
			}
		} else {
			if (cvc.getCAR().equals(fromcar)) {
				break;
			}
			if (cvc.getCAR().equals(cvc.getCHR())) {
				return null;	// fromcar not found along the chain
			}
		}
		var ofs = path.lastIndexOf("/");
		if (ofs > 0) {
			path = path.substr(0, ofs);
		}
		chr = cvc.getCAR();
	}

	return chain.reverse();
}



/**
 * List certificates stored for given PKI element sorted by CHR
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @returns a list of certificates, possibly empty
 * @type CVC[]
 */
CVCertificateStore.prototype.listCertificates = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listCertificates(" + path + ")");

	var result = [];

	var holder = this.getHolder(path, true);

	var certificateDAO = this.daof.getCertificateDAO();

	var certificates = certificateDAO.enumerateCertificates(holder);

	if (!certificates) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No certificates found");
		return result;
	}

	for (var i = 0; i < certificates.length; i++) {
		var cvc = new CVC(certificates[i].bytes);
		result.push(cvc);
	}

	result.sort(function(a,b) { return a.getCHR().toString() < b.getCHR().toString() ? -1 : (a.getCHR().toString() > b.getCHR().toString() ? 1 : 0) } );
	GPSystem.log(GPSystem.DEBUG, module.id, "listCertificates:" + result.length);
	return result;

}



/**
 * Returns the domain parameter for a certificate identified by its CHR
 *
 * <p>This method traverses the certificate hierachie upwards and follows link certificates
 *    until domain parameter are found.</p>
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @param {PublicKeyReference} chr the CHR of the certificate to start the search with
 * @return the domain parameter
 * @type Key
 */
CVCertificateStore.prototype.getDomainParameter = function(path, chr) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getDomainParameter(" + path + "," + chr + ")");

	if (typeof(chr) == "undefined") {	// ToDo remove after migration
		chr = path;
		var path = "/" + chr.getHolder();
	}

	do	{
		var ofs = path.lastIndexOf("/");
		if (ofs > 0) {
			var cvc = this.getCertificate(path, chr);
			if (cvc == null) {
				throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate certificate " + chr);
			}
			chr = cvc.getCAR();
			path = path.substr(0, ofs);
		}
	} while (ofs > 0);

	do {
		var cvc = this.getCertificate(path, chr);

		if (cvc == null) {
			throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate certificate " + chr + " in " + path);
		}

		var p = cvc.getPublicKey();
		if (typeof(p.getComponent(Key.ECC_P)) != "undefined") {
			return p;
		}
		chr = cvc.getCAR();
	} while (!chr.equals(cvc.getCHR()));

	throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate CVCA certificate with domain parameter");
}



/**
 * Returns the default domain parameter for a given PKI
 *
 * @param {String} path the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
 * @return the domain parameter
 * @type Key
 */
CVCertificateStore.prototype.getDefaultDomainParameter = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getDefaultDomainParameter(" + path + ")");

	var pe = path.substr(1).split("/");
	chr = this.getCurrentCHR("/" + pe[0]);
	if (chr == null) {
		throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate current CVCA certificate");
	}
	return this.getDomainParameter(chr);
}



/**
 * Returns the default algorithm identifier OID from the most recent link certificate
 *
 * @param {String} path the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
 * @return the algorithm identifier
 * @type ByteString
 */
CVCertificateStore.prototype.getDefaultPublicKeyOID = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getDefaultPublicKeyOID(" + path + ")");

	var pe = path.substr(1).split("/");
	chr = this.getCurrentCHR("/" + pe[0]);
	if (chr == null) {
		throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate current CVCA certificate");
	}
	var cvc = this.getCertificate("/" + pe[0], chr);
	if (cvc == null) {
		throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate current CVCA certificate");
	}

	return cvc.getPublicKeyOID();
}



/**
 * Encode a three character alpha-numeric sequence number
 *
 * <p>This function encodes values in the range 0 to 999 as numeric string with leading zeros.</p>
 * <p>Value in the range 1000 to 34695 (999 + 26 * 36 * 36) are encoded as alphanumeric string.</p>
 * <p>Value beyond 34696 are truncated</p>
 *
 * @param {Number} value integer sequence value
 * @type String
 * @return the 3 character string
 * @private
 */
CVCertificateStore.encodeBase36 = function(value) {
	value = value % (1000 + 26 * 36 * 36);
	var seq;
	if (value < 1000) {
		seq = "" + value;
	} else {
		value += 11960;			10 * 36 * 36 - 1000
		seq = "";
		while(value > 0) {
			var c = value % 36;
			if (c >= 10) {
				c += 55;
			} else {
				c += 48;
			}
			seq = String.fromCharCode(c) + seq;
			value = Math.floor(value / 36);
		}
	}
	seq = "000".substr(0, 3 - seq.length) + seq;
	return seq;
}



/**
 * Create a CHR for the given path and sequence number
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @param {Number} the sequence number to be translated
 * @param {String} countryseq the 2 digit country code to include in the sequence number (optional)
 * @return the CHR
 * @type PublicKeyReference
 * @private
 */
CVCertificateStore.prototype.getCHRForSequenceNumber = function(path, sequence, countryseq) {
	var pe = path.substr(1).split("/");
	var l = pe[pe.length - 1];

	var str;
	if (countryseq) {
		str = countryseq + CVCertificateStore.encodeBase36(sequence);
	} else {
		str = "" + sequence;
		str = "0000".substr(4 - (5 - str.length)).concat(str);
	}
	return new PublicKeyReference(l + str);
}



/**
 * Determine path for certificate issuer
 *
 * For CVCA and DVCA certificates we can determined the path from the CAR. For Terminal
 * certificates we dont know the full path, as we don't know under which CVCA the DVCA operates
 * that issued the Terminal certificate. So we use a two-step heuristic which first tries to locate
 * the DVCA certificate based on the CAR and if that is not unique uses the cvcahint to determine the path
 * of the issuer
 */
CVCertificateStore.prototype.getIssuerPathFor = function(cvc, cvcahint) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getIssuerPathFor('" + cvc + "'," + cvcahint + ")");

	var car = cvc.getCAR();
	var level = cvc.getLevel();

	if (level != 3) {
		var path = "/" + car.getHolder();
	} else {
		var cacert = this.locateCertificate(car);
		if (cacert) {
			path = "/" + cacert.getCAR().getHolder() + "/" + car.getHolder();
			GPSystem.log(GPSystem.DEBUG, module.id, "getIssuerPathFor() using path based on located issuer certificate " + path);
		} else {
			path = "/" + CVCertificateStore.nthElementOf(cvcahint, 0) + "/" + car.getHolder();
			GPSystem.log(GPSystem.DEBUG, module.id, "getIssuerPathFor() using path based on hint " + path);
		}
	}

	return path;
}



/**
 * Validate a certificate against a certificate already stored in the certificate store
 *
 * <p>If the certificate is a terminal certificate, then the first element of the path given
 *    in cvcahint is used to determine the correct CVCA.</p>
 *
 * Throws an exception if the certificate can not be validated
 *
 * @param {Crypto} crypto the crypto provider to be used for certificate verification
 * @param {CVC} cvc the certificate
 * @param {String} cvcahint the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
 * @returns object containing the path and domain parameter used for validating the certificate. Returns null if no issuer could be found
 * @type Object
 */
CVCertificateStore.prototype.validateCertificate = function(crypto, cvc, cvcahint) {
	GPSystem.log(GPSystem.DEBUG, module.id, "validateCertificate('" + cvc + "'," + cvcahint + ")");

	var car = cvc.getCAR();
	var level = cvc.getLevel();

	if (car.equals(cvc.getCHR())) { // Self signed
		if (level != 1) {
			GPSystem.log(GPSystem.ERROR, module.id, "Self-signed certificates only allowed for CVCA: " + cvc);
			throw new GPError(module.id, GPError.CRYPTO_FAILED, 0, "Self-signed certificates only allowed for CVCA: " + cvc);
		}
		if (!cvc.verifyWith(crypto, cvc.getPublicKey(), cvc.getPublicKeyOID())) {
			GPSystem.log(GPSystem.ERROR, module.id, "Self-signed certificate failed signature verification. " + cvc);
			throw new GPError(module.id, GPError.CRYPTO_FAILED, 0, "Self-signed certificate failed signature verification. " + cvc);
		}
		return;
	}

	var path = this.getIssuerPathFor(cvc, cvcahint);
	var cacert = this.getCertificate(path, car);

	if (cacert == null) {
		GPSystem.log(GPSystem.ERROR, module.id, "Can't find issuer " + car);
		return;
	}

	var oid = cacert.getPublicKeyOID();
	if (CVC.isECDSA(oid)) {
		var dp = this.getDomainParameter(path, car);
	} else {
		var dp = null;
	}
	var result = cvc.verifyWith(crypto, cacert.getPublicKey(dp), oid);
	if (!result) {
		GPSystem.log(GPSystem.ERROR, module.id, "Certificate " + cvc + " failed signature verification with " + cacert);
		throw new GPError(module.id, GPError.CRYPTO_FAILED, 0, "Certificate " + cvc + " failed signature verification with " + cacert);
	}

	return { path: path + "/" + cvc.getCHR().getHolder(), dp: dp };
}



/**
 * Insert a single certificates into the certificate store
 *
 * <p>Before a certificate is imported, the signature is verified.</p>
 * <p>If the certificate is a terminal certificate, then the first element of the path given
 *    in cvcahint is used to determine the correct CVCA.</p>
 *
 * @param {Crypto} crypto the crypto provider to be used for certificate verification
 * @param {CVC} cvc the certificate
 * @param {String} cvcahint the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
 * @param {Boolean} forceUpdate true if certificate should be updated even if one already exists
 * @returns true, if the certificate was inserted
 * @type boolean
 */
CVCertificateStore.prototype.insertCertificate = function(crypto, cvc, cvcahint, forceUpdate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "insertCertificate('" + cvc + "'," + cvcahint + ")");

	var car = cvc.getCAR();
	var path = this.getIssuerPathFor(cvc, cvcahint);

	var cacert = this.getCertificate(path, car);
	if (cacert == null) {
		GPSystem.log(GPSystem.ERROR, module.id, "Can't find issuer " + car);
		return false;
	}

	if (CVC.isECDSA(cacert.getPublicKeyOID())) {
		var dp = this.getDomainParameter(path, car);
	} else {
		var dp = null;
	}
	var result = cvc.verifyWith(crypto, cacert.getPublicKey(dp), cacert.getPublicKeyOID());
	if (!result) {
		GPSystem.log(GPSystem.ERROR, module.id, "Certificate " + cvc + " failed signature verification with " + cacert);
		return false;
	}

	var chr = cvc.getCHR();
	var holder = chr.getHolder();

	if (holder == car.getHolder()) {	// Link certificate
		this.storeCertificate("/" + holder, cvc, true, forceUpdate);
	} else {							// Subordinate certificate
		this.storeCertificate(path + "/" + holder, cvc, true, forceUpdate);
	}

	return true;
}



/**
 * Insert certificates into certificate store
 *
 * <p>The import into the internal data structure is done in three steps:</p>
 * <ol>
 *  <li>If allowed, all self-signed certificates are imported</li>
 *  <li>All possible certificate chains are build</li>
 *  <li>Certificate chains are processed starting with the topmost certificate in the hierachie</li>
 * </ol>
 * <p>Certificates at the terminal level can only be imported, if the issuing
 *    DVCA certificate is contained in the list or a hint for the relevant CVCA is
 *    given in the first element of the path contained in parameter cvcahint.</p>
 * <p>Before a certificate is imported, the signature is verified.</p>
 *
 * @param {Crypto} crypto the crypto provider to be used for certificate verification
 * @param {CVC[]} certlist the unordered list of certificates
 * @param {Boolean} insertSelfSigned true, if the import of root certificates is allowed
 * @param {String} cvcahint the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
 * @param {Boolean} forceUpdate true if certificate should be updated even if one already exists
 * @returns the (ideally empty) list of unprocessed certificates. This does not contains certificates
 *          that fail signature verification.
 * @type CVC[]
 */
CVCertificateStore.prototype.insertCertificates = function(crypto, certlist, insertSelfSigned, cvcahint, forceUpdate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "insertCertificates('" + certlist + "'," + insertSelfSigned + "," + cvcahint + ")");

	var chrmap = [];

	// Iterate certificate list and store self-signed certificates, if allowed
	// Generate a map of certificate holder references
	var unprocessed = [];
	for (var i = 0; i < certlist.length; i++) {
		var cvc = certlist[i];
		var chr = cvc.getCHR().toString();

		if (chr == cvc.getCAR().toString()) { // Self signed
			var result = cvc.verifyWith(crypto, cvc.getPublicKey(), cvc.getPublicKeyOID());

			if (result) {
				var path = "/" + cvc.getCHR().getHolder();
				if (insertSelfSigned) {		// Store self-signed certificates
					this.storeCertificate(path, cvc, true, forceUpdate);
				}
			} else {
				GPSystem.log(GPSystem.ERROR, module.id, "Self-signed certificate failed signature verification. " + cvc);
			}
		} else {
			var state = { cvc: cvc, end: true, stored: false };
			unprocessed.push(state);
			if (typeof(chrmap[chr]) == "undefined") {
				chrmap[chr] = state;
			} else {
				// Duplicate CHRs for terminals are allowed
				chrmap[cvc.getCAR().toString() + "/" + chr] = state;
			}
		}
	}

	// Mark certificates that are surely CAs, because an issued certificate is contained in the list
	certlist = unprocessed;
	for (var i = 0; i < certlist.length; i++) {
		var cvc = certlist[i].cvc;
		var state = chrmap[cvc.getCAR().toString()];
		if (typeof(state) != "undefined") {
			GPSystem.log(GPSystem.DEBUG, module.id, "Mark as CA: " + state.cvc);
			state.end = false;
		}
	}

	var unprocessed = [];
	for (var i = 0; i < certlist.length; i++) {
		var state = certlist[i];
		if (state.end) {		// Find all certificates which are at the end of the chain
			var list = [];
			var lastpathelement = state.cvc.getCHR().getHolder();
			var path = "/" + lastpathelement;
			var singlecert = true;
			while(true)	{		// Build a certificate chain and the path for the last certificate
				var pathelement = state.cvc.getCAR().getHolder();
				if (pathelement != lastpathelement) {		// CVCA Link Certificates don't add to the path
					path = "/" + pathelement + path;
				}
				lastpathelement = pathelement;

				if (!state.stored) {			// If not already stored, add to the list
					list.push(state);
					state.stored = true;
				}
				state = chrmap[state.cvc.getCAR().toString()];
				if (typeof(state) == "undefined") {
					break;
				}
				singlecert = false;
			}
			if (singlecert && cvcahint) {
				GPSystem.log(GPSystem.DEBUG, module.id, "Single certificate might be a terminal certificate, using cvca hint " + cvcahint);
				path = cvcahint;
			} else {
				GPSystem.log(GPSystem.DEBUG, module.id, "Path is " + path);
			}
			for (var j = list.length - 1; j >= 0; j--) {	// Process chain in reverse order
				var cvc = list[j].cvc;
				if (!this.insertCertificate(crypto, cvc, path, forceUpdate)) {
					unprocessed.push(cvc);
				}
			}
		}
	}

	return unprocessed;
}
// For backward compatibility
CVCertificateStore.prototype.insertCertificates2 = CVCertificateStore.prototype.insertCertificates;
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of the chip authentication protocol for both card and terminal
 * as defined for EAC 2.0
 */



/**
 * Create a ChipAuthenticationInfo object
 *
 * @class <p>This class encodes and decodes ChipAuthenticationInfo objects.</p>
 * <p>The class implements the following ASN.1 syntax:</p>
 * <pre>
 *	ChipAuthenticationInfo ::= SEQUENCE {
 *		protocol OBJECT IDENTIFIER(
 *			id-CA-DH-3DES-CBC-CBC |
 *			id-CA-DH-AES-CBC-CMAC-128 |
 *			id-CA-DH-AES-CBC-CMAC-192 |
 *			id-CA-DH-AES-CBC-CMAC-256 |
 *			id-CA-ECDH-3DES-CBC-CBC |
 *			id-CA-ECDH-AES-CBC-CMAC-128 |
 *			id-CA-ECDH-AES-CBC-CMAC-192 |
 *			id-CA-ECDH-AES-CBC-CMAC-256),
 *		version INTEGER, -- MUST be 1 or 2
 *		keyId INTEGER OPTIONAL
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the optional tlv structure to initialize the object
 */
function ChipAuthenticationInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 2);

		var i = 0;
		var t = tlv.get(i++);
		assert(t.tag == ASN1.OBJECT_IDENTIFIER);
		this.protocol = t.value;

		var t = tlv.get(i++);
		assert(t.tag == ASN1.INTEGER);
		this.version = t.value.toSigned();

		if (i < tlv.elements) {
			var t = tlv.get(i++);
			assert(t.tag == ASN1.INTEGER);
			this.keyId = t.value.toSigned();
		}

	}
}

exports.ChipAuthenticationInfo = ChipAuthenticationInfo;


/**
 * Convert object to TLV structure
 *
 * @return the TLV structure
 * @type ASN1
 */
ChipAuthenticationInfo.prototype.toTLV = function() {
	var t = new ASN1(ASN1.SEQUENCE);

	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, this.protocol));

	var bb = new ByteBuffer();
	bb.append(this.version);
	t.add(new ASN1(ASN1.INTEGER, bb.toByteString()));

	if (typeof(this.keyId) != "undefined") {
		t.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(this.keyId)));
	}
	return t;
}



ChipAuthenticationInfo.prototype.toString = function() {
	return "ChipAuthenticationInfo(protocol=" + this.protocol + ", version=" + this.version + ", keyId=" + this.keyId + ")";
}



/**
 * Create a ChipAuthenticationDomainParameterInfo object
 *
 * @class <p>This class encodes and decodes ChipAuthenticationDomainParameterInfo objects.</p>
 * <p>The class implements the following ASN.1 syntax:</p>
 * <pre>
 *	ChipAuthenticationDomainParameterInfo ::= SEQUENCE {
 *		protocol OBJECT IDENTIFIER(id-CA-DH | id-CA-ECDH),
 *		domainParameter AlgorithmIdentifier,
 *		keyId INTEGER OPTIONAL
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the optional tlv structure to initialize the object
 */
function ChipAuthenticationDomainParameterInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 2);

		var i = 0;
		var t = tlv.get(i++);
		assert(t.tag == ASN1.OBJECT_IDENTIFIER);
		this.protocol = t.value;

		var t = tlv.get(i++);
		assert(t.tag == ASN1.SEQUENCE);

		if (t.elements > 0) {
			var oid = t.get(0);
			assert(oid.tag == ASN1.OBJECT_IDENTIFIER);
			if (oid.value.equals(new ByteString("standardizedDomainParameter", OID))) {
				this.standardizedDomainParameter = t.get(1).value.toUnsigned();
				var curveoid = ChipAuthentication.standardizedDomainParameter[this.standardizedDomainParameter];
				if (!curveoid) {
					throw new GPError("ChipAuthenticationPublicKeyInfo", GPError.INVALID_DATA, 0, "Standardized domain parameter " + this.standardizedDomainParameter + " is unknown");
				}
				this.domainParameter = new Key();
				this.domainParameter.setComponent(Key.ECC_CURVE_OID, new ByteString(curveoid, OID));
			} else {
				this.domainParameter = ECCUtils.decodeECParameters(t.get(1));
			}
		} else {
			this.domainParameter = new Key();
			this.domainParameter.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
		}

		if (i < tlv.elements) {
			var t = tlv.get(i++);
			assert(t.tag == ASN1.INTEGER);
			this.keyId = t.value.toSigned();
		}
	}
}

if (typeof(exports) != "undefined")
	exports.ChipAuthenticationDomainParameterInfo = ChipAuthenticationDomainParameterInfo;


/**
 * Convert object to TLV structure
 *
 * @return the TLV structure
 * @type ASN1
 */
ChipAuthenticationDomainParameterInfo.prototype.toTLV = function() {
	var t = new ASN1(ASN1.SEQUENCE);

	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, this.protocol));

	var c = new ASN1(ASN1.SEQUENCE);
	if (this.standardizedDomainParameter) {
		c.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("standardizedDomainParameter", OID)));
		c.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(this.standardizedDomainParameter)));
	} else {

	}
	t.add(c);

	if (typeof(this.keyId) != "undefined") {
		t.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(this.keyId)));
	}
	return t;
}



ChipAuthenticationDomainParameterInfo.prototype.toString = function() {
	return "ChipAuthenticationDomainParameterInfo(protocol=" + this.protocol + ", keyId=" + this.keyId + ")";
}



/**
 * Create a ChipAuthenticationPublicKeyInfo object
 *
 * @class <p>This class encodes and decodes ChipAuthenticationPublicKeyInfo objects.</p>
 * <p>The class implements the following ASN.1 syntax:</p>
 * <pre>
 *	ChipAuthenticationPublicKeyInfo ::= SEQUENCE {
 *		protocol OBJECT IDENTIFIER(id-PK-DH | id-PK-ECDH),
 *		chipAuthenticationPublicKey SubjectPublicKeyInfo,
 *		keyId INTEGER OPTIONAL
 *	}
 *
 *	SubjectPublicKeyInfo ::= SEQUENCE {
 *		algorithm  AlgorithmIdentifier,
 *		subjectPublicKey BIT STRING
 *	}
 *
 *	AlgorithmIdentifier ::= SEQUENCE {
 *		algorithm  OBJECT IDENTIFIER,
 *		parameters ANY DEFINED BY algorithm OPTIONAL
 *	}
 * </pre>
 * @constructor
 * @param {ASN1} the optional tlv structure to initialize the object
 */
function ChipAuthenticationPublicKeyInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 2);

		var i = 0;
		var t = tlv.get(i++);
		assert(t.tag == ASN1.OBJECT_IDENTIFIER);		// protocol
		this.protocol = t.value;

		var t = tlv.get(i++);
		assert(t.tag == ASN1.SEQUENCE);					// Subject public key info
		assert(t.elements == 2);

		var algo = t.get(0);
		assert(algo.tag == ASN1.SEQUENCE);				// Algorithm Identifier
		assert(algo.elements == 2);

		var oid = algo.get(0);							// algorithm
		assert(oid.tag == ASN1.OBJECT_IDENTIFIER);
		this.algorithm = oid.value;

		if (oid.value.equals(new ByteString("standardizedDomainParameter", OID))) {
			this.standardizedDomainParameter = algo.get(1).value.toUnsigned();
			var curveoid = ChipAuthentication.standardizedDomainParameter[this.standardizedDomainParameter];
			if (!curveoid) {
				throw new GPError("ChipAuthenticationPublicKeyInfo", GPError.INVALID_DATA, 0, "Standardized domain parameter " + this.standardizedDomainParameter + " is unknown");
			}
			this.domainParameter = new Key();
			this.domainParameter.setComponent(Key.ECC_CURVE_OID, new ByteString(curveoid, OID));
		} else {
			this.domainParameter = ECCUtils.decodeECParameters(algo.get(1));
		}

		var puk = t.get(1);
		assert(puk.tag == ASN1.BIT_STRING);
		this.publicKey = puk.value.bytes(1);

		if (i < tlv.elements) {
			var t = tlv.get(i++);
			assert(t.tag == ASN1.INTEGER);
			this.keyId = t.value.toSigned();
		}
	}
}

if (typeof(exports) != "undefined")
	exports.ChipAuthenticationPublicKeyInfo = ChipAuthenticationPublicKeyInfo;



/**
 * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
 *
 * This prevent interpretation of the integer representation if converted into
 * a signed ASN1 INTEGER.
 *
 * @param {ByteString} value the value to convert
 * @return the converted value
 * @type ByteString
 */
ChipAuthenticationPublicKeyInfo.convertUnsignedInteger = function(value) {
	assert(value.length > 0);

	var i = 0;
	for (var i = 0; (i < value.length - 1) && (value.byteAt(i) == 0); i++);

	if (value.byteAt(i) >= 0x80) {
		value = (new ByteString("00", HEX)).concat(value.bytes(i));
	} else {
		value = value.bytes(i);
	}

	return value;
}



/**
 * Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
 *		algorithm            AlgorithmIdentifier,
 *		subjectPublicKey     BIT STRING  }
 *
 *	AlgorithmIdentifier  ::=  SEQUENCE  {
 *		algorithm               OBJECT IDENTIFIER,
 *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 *
 *	id-ecPublicKey OBJECT IDENTIFIER ::= {
 *		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
 *
 *	ECParameters ::= CHOICE {
 *		namedCurve         OBJECT IDENTIFIER,
 *		implicitCurve      NULL,
 *		specifiedCurve     SpecifiedECDomain }
 * </pre>
 * @return the subjectPublicKey TLV structure
 * @type ASN1
 */
ChipAuthenticationPublicKeyInfo.createECSubjectPublicKeyInfo = function(publicKey, encodeECDomainParameter) {
	var t = new ASN1("subjectPublicKeyInfo", ASN1.SEQUENCE);

	var algorithm = new ASN1("algorithm", ASN1.SEQUENCE,
			new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.10045.2.1", OID))
		);

	if (encodeECDomainParameter) {
		if (publicKey.getComponent(Key.ECC_P)) {		// Make sure curve components are available if only curve oid is defined
			publicKey.setComponent(Key.ECC_CURVE_OID, publicKey.getComponent(Key.ECC_CURVE_OID));
		}
		groupCAPuk.setComponent(Key.ECC_CURVE_OID, groupCAPuk.getComponent(Key.ECC_CURVE_OID));
		var ecParameter =
			new ASN1("ecParameters", ASN1.SEQUENCE,
				new ASN1("version", ASN1.INTEGER, new ByteString("01", HEX)),
				new ASN1("fieldID", ASN1.SEQUENCE,
					new ASN1("fieldType", ASN1.OBJECT_IDENTIFIER, new ByteString("prime-field", OID)),
					new ASN1("prime", ASN1.INTEGER,
						ChipAuthenticationPublicKeyInfo.convertUnsignedInteger(publicKey.getComponent(Key.ECC_P)))
				),
				new ASN1("curve", ASN1.SEQUENCE,
					new ASN1("a", ASN1.OCTET_STRING,
						ChipAuthenticationPublicKeyInfo.convertUnsignedInteger(publicKey.getComponent(Key.ECC_A))),
					new ASN1("b", ASN1.OCTET_STRING,
						ChipAuthenticationPublicKeyInfo.convertUnsignedInteger(publicKey.getComponent(Key.ECC_B)))
				),
				new ASN1("base", ASN1.OCTET_STRING,
						(new ByteString("04", HEX)).concat(publicKey.getComponent(Key.ECC_GX)).concat(publicKey.getComponent(Key.ECC_GY))),
				new ASN1("order", ASN1.INTEGER,
					ChipAuthenticationPublicKeyInfo.convertUnsignedInteger(publicKey.getComponent(Key.ECC_N)))
			);

		var cofactor = publicKey.getComponent(Key.ECC_H);
		var i = 0;
		for (; (i < cofactor.length) && (cofactor.byteAt(i) == 0); i++);
		if (i < cofactor.length) {
			ecParameter.add(new ASN1("cofactor", ASN1.INTEGER, cofactor.bytes(i)));
		}
		algorithm.add(ecParameter);
	} else {
		algorithm.add(new ASN1("parameters", ASN1.OBJECT_IDENTIFIER, publicKey.getComponent(Key.ECC_CURVE_OID)));
	}

	t.add(algorithm);

	// Prefix a 00 to form correct bitstring
	// Prefix a 04 to indicate uncompressed format
	var keybin = new ByteString("0004", HEX);
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QX));
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QY));
	t.add(new ASN1("subjectPublicKey", ASN1.BIT_STRING, keybin));

	return t;
}



/**
 * Convert object to TLV structure
 *
 * @return the TLV structure
 * @type ASN1
 */
ChipAuthenticationPublicKeyInfo.prototype.toTLV = function() {
	var t = new ASN1("chipAuthenticationPublicKeyInfo", ASN1.SEQUENCE);

	t.add(new ASN1("protocol", ASN1.OBJECT_IDENTIFIER, this.protocol));

	if (this.algorithm.equals(new ByteString("id-ecPublicKey", OID))) {
		var spki = ChipAuthenticationPublicKeyInfo.createECSubjectPublicKeyInfo(this.publicKey, true);
	} else {
		var algoid = new ASN1("algorithm", ASN1.SEQUENCE, new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, this.algorithm));
		if (this.algorithm.equals(new ByteString("standardizedDomainParameter", OID))) {
			algoid.add(new ASN1("standardizedDomainParameter", ASN1.INTEGER, ByteString.valueOf(this.standardizedDomainParameter)));
		}

		var spki = new ASN1("subjectPublicKey", ASN1.SEQUENCE);
		spki.add(algoid);
		var puk = (new ByteString("0004", HEX)).concat(this.publicKey.getComponent(Key.ECC_QX)).concat(this.publicKey.getComponent(Key.ECC_QY));
		spki.add(new ASN1("publicKey", ASN1.BIT_STRING, puk));

	}

	t.add(spki);

	if (typeof(this.keyId) != "undefined") {
		t.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(this.keyId)));
	}
	return t;
}



ChipAuthenticationPublicKeyInfo.prototype.toString = function() {
	return "ChipAuthenticationPublicKeyInfo(protocol=" + this.protocol + ", algorithm=" + this.algorithm + ", publicKey=" + this.publicKey + ", keyId=" + this.keyId + ")";
}



/**
 * Create a ChipAuthentication protocol object
 *
 * @class This class implements the ChipAuthentication protocol
 *
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider
 * @param {ByteString} algo the algorithm OID
 * @param {Key} domparam the key object holding ECC domain parameter
 */
function ChipAuthentication(crypto, algo, domparam) {
	this.crypto = crypto;
	this.algo = algo;
	this.domparam = domparam;
	this.includeDPinAuthToken = false;
	this.noPadding = false;

//	print(ECCUtils.ECParametersToString(domparam));
}

if (typeof(exports) != "undefined")
	exports.ChipAuthentication = ChipAuthentication;


ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC = (new ByteString("id-CA-ECDH-3DES-CBC-CBC", OID));
ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_128 = (new ByteString("id-CA-ECDH-AES-CBC-CMAC-128", OID));
ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_192 = (new ByteString("id-CA-ECDH-AES-CBC-CMAC-192", OID));
ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_256 = (new ByteString("id-CA-ECDH-AES-CBC-CMAC-256", OID));

ChipAuthentication.standardizedDomainParameter = [];
ChipAuthentication.standardizedDomainParameter[8] = "secp192r1";
ChipAuthentication.standardizedDomainParameter[9] = "brainpoolP192r1";
ChipAuthentication.standardizedDomainParameter[10] = "secp224r1";
ChipAuthentication.standardizedDomainParameter[11] = "brainpoolP224r1";
ChipAuthentication.standardizedDomainParameter[12] = "secp256r1";
ChipAuthentication.standardizedDomainParameter[13] = "brainpoolP256r1";
ChipAuthentication.standardizedDomainParameter[14] = "brainpoolP320r1";
ChipAuthentication.standardizedDomainParameter[15] = "secp384r1";
ChipAuthentication.standardizedDomainParameter[16] = "brainpoolP384r1";
ChipAuthentication.standardizedDomainParameter[17] = "brainpoolP512r1";
ChipAuthentication.standardizedDomainParameter[18] = "secp521r1";


/**
 * Derive key from input parameter, counter and optional nonce
 *
 * @param {ByteString} input the first part of the hash input
 * @param {Number} counter the counter value
 * @param {nonce} the optional nonce inserted between the input and the counter
 * @return the key object
 * @type Key
 */
ChipAuthentication.prototype.deriveKey = function(input, counter, nonce) {
	if (typeof(nonce) != "undefined") {
		input = input.concat(nonce);
	}

	var bb = new ByteBuffer("000000", HEX);
	bb.append(counter);

	input = input.concat(bb.toByteString());

	var key = new Key();

	if (this.algo.equals(ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC)) {
		var digest = this.crypto.digest(Crypto.SHA_1, input);
		key.setComponent(Key.DES, digest.left(16));
	} else if (this.algo.equals(ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_128)) {
		var digest = this.crypto.digest(Crypto.SHA_1, input);
		key.setComponent(Key.AES, digest.left(16));
	} else if (this.algo.equals(ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_192)) {
		var digest = this.crypto.digest(Crypto.SHA_256, input);
		key.setComponent(Key.AES, digest.left(24));
	} else if (this.algo.equals(ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_256)) {
		var digest = this.crypto.digest(Crypto.SHA_256, input);
		key.setComponent(Key.AES, digest);
	} else {
		throw new GPError("ChipAuthentication", GPError.INVALID_MECH, 0, "Algorithm not supported");
	}

	return key;
}



/**
 * Generate ephemeral key pair
 */
ChipAuthentication.prototype.generateEphemeralCAKeyPair = function() {
	this.prkCA = new Key(this.domparam);
	this.prkCA.setType(Key.PRIVATE);

	this.pukCA = new Key(this.domparam);
	this.pukCA.setType(Key.PUBLIC);

	this.crypto.generateKeyPair(Crypto.EC, this.pukCA, this.prkCA);
}



/**
 * Set chip authentication keys
 *
 * @param {Key} prk the private key
 * @param {Key} puk the public key
 */
ChipAuthentication.prototype.setKeyPair = function(prk, puk) {
	this.prkCA = prk;
	this.pukCA = puk;
}



/**
 * Returns the x coordinate of the public key
 *
 * @return the encoded public key
 * @type ByteString
 */
ChipAuthentication.prototype.getCompressedPublicKey = function() {
	return (this.pukCA.getComponent(Key.ECC_QX));
}



/**
 * Returns the ephemeral public key
 *
 * @return the encoded public key
 * @type ByteString
 */
ChipAuthentication.prototype.getEphemeralPublicKey = function() {
	var ecpk = new ByteString("04", HEX);
	ecpk = ecpk.concat(this.pukCA.getComponent(Key.ECC_QX));
	ecpk = ecpk.concat(this.pukCA.getComponent(Key.ECC_QY));
	return ecpk;
}



/**
 * Decodes the ephemeral public key
 *
 * @return the decoded public key
 * @type ByteString
 */
ChipAuthentication.prototype.decodeEphemeralPublicKey = function(encodedKey) {
	if (encodedKey.byteAt(0) != 0x04) {
		throw new GPError("ChipAuthentication", GPError.INVALID_DATA, 0, "Terminal ephemeral public key does not start with '04'");
	}

	var key = new Key(this.domparam);
	var l = key.getSize() >> 3;

	if (encodedKey.length != 1 + (l << 1)) {
		throw new GPError("ChipAuthentication", GPError.INVALID_DATA, 0, "Length of terminal ephemeral public key does not match curve");
	}

	key.setType(Key.PUBLIC);
	key.setComponent(Key.ECC_QX, encodedKey.bytes(1, l));
	key.setComponent(Key.ECC_QY, encodedKey.bytes(1 + l, l));
	return key;
}



/**
 * Performs the mapping operation with mapping data from the other side
 *
 * @param {ByteString} publicKey the public key in encoded format
 */
ChipAuthentication.prototype.performKeyAgreement = function(publicKey, nonce) {
	if (publicKey.byteAt(0) != 0x04)
		throw new GPError("ChipAuthentication", GPError.INVALID_DATA, 0, "Public key must start with '04'");

	if ((nonce != undefined) && !(nonce instanceof ByteString))
		throw new GPError("ChipAuthentication", GPError.INVALID_TYPE, 0, "nonce must be of type ByteString");

	var l = (publicKey.length - 1) >> 1;
	if (l != this.prkCA.getComponent(Key.ECC_P).length) {
		throw new GPError("ChipAuthentication", GPError.INVALID_DATA, 0, "Public key size does not match private key size");
	}

	this.otherPuK = new Key(this.domparam);
	this.otherPuK.setComponent(Key.ECC_QX, publicKey.bytes(    1, l));
	this.otherPuK.setComponent(Key.ECC_QY, publicKey.bytes(l + 1, l));

	var k = this.crypto.decrypt(this.prkCA, Crypto.ECDH, publicKey.bytes(1));
//	GPSystem.trace("Shared Secret K:");
//	GPSystem.trace(k);
	this.kenc = this.deriveKey(k, 1, nonce);
	this.kmac = this.deriveKey(k, 2, nonce);
}



/**
 * Calculate and verify the authentication token over the public key received from
 * the other side
 *
 * @param {ByteString} the MAC over the authentication data
 * @return true if the MAC is valid
 * @type Boolean
 */
ChipAuthentication.prototype.verifyAuthenticationToken = function(authToken) {
	var t = ChipAuthentication.encodePublicKey(this.algo.toString(OID), this.pukCA, this.includeDPinAuthToken);
//	GPSystem.trace("Authentication Token for verification:");
//	GPSystem.trace(t);

	if (this.algo.equals(ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC)) {
		if (this.noPadding) {
			var inp = t.getBytes();
		} else {
			var inp = t.getBytes().pad(Crypto.ISO9797_METHOD_2);
		}
		var at = this.crypto.sign(this.kmac, Crypto.DES_MAC_EMV, inp);
		return at.equals(authToken);
	} else {
		var at = this.crypto.sign(this.kmac, Crypto.AES_CMAC, t.getBytes());
		return at.left(8).equals(authToken);
	}
}



/**
 * Calculate the authentication token over the public key received from
 * the other side
 *
 * @param {ByteString} the MAC over the authentication data
 * @return true if the MAC is valid
 * @type Boolean
 */
ChipAuthentication.prototype.calculateAuthenticationToken = function() {
	var t = ChipAuthentication.encodePublicKey(this.algo.toString(OID), this.otherPuK, this.includeDPinAuthToken);
//	GPSystem.trace("Authentication Token for signing:");
//	GPSystem.trace(t);

	if (this.algo.equals(ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC)) {
		if (this.noPadding) {
			var inp = t.getBytes();
		} else {
			var inp = t.getBytes().pad(Crypto.ISO9797_METHOD_2);
		}
		var at = this.crypto.sign(this.kmac, Crypto.DES_MAC_EMV, inp);
	} else {
		var at = this.crypto.sign(this.kmac, Crypto.AES_CMAC, t.getBytes()).left(8);
	}
	return at;
}



/**
 * Strips leading zeros of a ByteString
 *
 * @param {ByteString} value the ByteString value
 * @return the stripped ByteString object, may be an empty ByteString
 * @type ByteString
 */
ChipAuthentication.stripLeadingZeros = function(value) {
	var i = 0;
	for (; (i < value.length) && (value.byteAt(i) == 0); i++);

	return value.right(value.length - i);
}



/**
 * Encode an ECC public key in the format defined by the EAC 2.0 specification
 *
 * @param {String} oid the object identifier to encode
 * @param {Key} key the EC public key
 * @param {Boolean} withDP true to encode domain parameter as well
 */
ChipAuthentication.encodePublicKey = function(oid, key, withDP) {

	var t = new ASN1("ecPublicKey", 0x7F49);
	t.add(new ASN1("objectIdentifier", ASN1.OBJECT_IDENTIFIER, new ByteString(oid, OID)));
	if (withDP) {
		t.add(new ASN1("primeModulus", 0x81, key.getComponent(Key.ECC_P)));
		t.add(new ASN1("firstCoefficient", 0x82, key.getComponent(Key.ECC_A)));
		t.add(new ASN1("secondCoefficient", 0x83, key.getComponent(Key.ECC_B)));

		var point = new ByteString("04", HEX);
		point = point.concat(key.getComponent(Key.ECC_GX));
		point = point.concat(key.getComponent(Key.ECC_GY));
		t.add(new ASN1("basePoint", 0x84, point));

		t.add(new ASN1("orderOfTheBasePoint", 0x85, key.getComponent(Key.ECC_N)));
	}
	var point = new ByteString("04", HEX);
	point = point.concat(key.getComponent(Key.ECC_QX));
	point = point.concat(key.getComponent(Key.ECC_QY));
	t.add(new ASN1("publicPoint", 0x86, point));

	if (withDP) {
		var cofactor = key.getComponent(Key.ECC_H);
		cofactor = ChipAuthentication.stripLeadingZeros(cofactor);

		t.add(new ASN1("cofactor", 0x87, cofactor));
	}

	return t;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of the Extended Access Control protocol in version 2.0
 */

// Imports
var CVC = require('scsh/eac/CVC').CVC;
var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;

var PACEDomainParameterInfo = require('scsh/eac/PACE').PACEDomainParameterInfo;
var PACEInfo = require('scsh/eac/PACE').PACEInfo;
var PACE = require('scsh/eac/PACE').PACE;

var ChipAuthenticationInfo = require('scsh/eac/ChipAuthentication').ChipAuthenticationInfo;
var ChipAuthenticationDomainParameterInfo = require('scsh/eac/ChipAuthentication').ChipAuthenticationDomainParameterInfo;
var ChipAuthenticationPublicKeyInfo = require('scsh/eac/ChipAuthentication').ChipAuthenticationPublicKeyInfo;
var ChipAuthentication = require('scsh/eac/ChipAuthentication').ChipAuthentication;

var RestrictedIdentification = require('scsh/eac/RestrictedIdentification').RestrictedIdentification;
var RestrictedIdentificationInfo = require('scsh/eac/RestrictedIdentification').RestrictedIdentificationInfo;
var RestrictedIdentificationDomainParameterInfo = require('scsh/eac/RestrictedIdentification').RestrictedIdentificationDomainParameterInfo;



/**
 * Create a protocol object for EAC
 *
 * @class Class implementing support for Extended Access Control V2
 * @constructor
 * @param {Crypto} crypto the crypto provider
 * @param {Card} card the card object
 */
function EAC20(crypto, card) {
	this.crypto = crypto;
	this.card = card;
	this.sm = null;
	this.includeDPinAuthToken = false;		// Standard for PACE version >= 2

	this.PACEInfos = new Array();
	this.PACEDPs = new Array();

	this.CAInfos = new Array();
	this.CADPs = new Array();
	this.CAPublicKeys = new Array();

	this.RIInfos = new Array();
	this.maxRData = 0;
	this.maxCData = 239;		// Used for update binary
	this.useFID = false;		// Use FIDs rather than SFIs
	this.verbose = false;
	this.selectADFwithoutSM = false;	// Send SELECT ADF without SM (for applets)
}

exports.EAC20 = EAC20;


/** PACE PWD is the hashed MRZ */
EAC20.ID_MRZ = 1;
/** PACE PWD is the CAN */
EAC20.ID_CAN = 2;
/** PACE PWD is the PIN */
EAC20.ID_PIN = 3;
/** PACE PWD is the PUK */
EAC20.ID_PUK = 4;

EAC20.AID_LDS = new ByteString("A0000002471001", HEX);
EAC20.AID_eID = new ByteString("E80704007F00070302", HEX);
EAC20.AID_eSign = new ByteString("A000000167455349474E", HEX);

EAC20.SFI_CVCA = 0x1C;
EAC20.SFI_ChipSecurity = 0x1B;
EAC20.SFI_CardAccess = 0x1C;
EAC20.SFI_CardSecurity = 0x1D;
EAC20.SFI_COM = 0x1E;


EAC20.prototype.log = function(str) {
	if (this.verbose) {
		GPSystem.trace(str);
	}
}



/**
 * Process a list of security infos from EF.CardInfo, EF.CardSecurity or EF.ChipSecurity
 *
 * @param {ASN1} si the security info ASN Sequence
 * @param {boolean} fromCardSecurity true if security infos are taken from EF.CardSecurity, EF.ChipSecurity or EF.DG14
 */
EAC20.prototype.processSecurityInfos = function(si, fromCardSecurity) {
	this.log("SecurityInfos:");
	this.log(si);

	var id_PACE = new ByteString("id-PACE", OID);
	var id_PACE_DH_GM = new ByteString("id-PACE-DH-GM", OID);
	var id_PACE_ECDH_GM = new ByteString("id-PACE-ECDH-GM", OID);
	var id_PACE_DH_IM = new ByteString("id-PACE-DH-IM", OID);
	var id_PACE_ECDH_IM = new ByteString("id-PACE-ECDH-IM", OID);
	var id_PK_ECDH = new ByteString("id-PK-ECDH", OID);
	var id_CA = new ByteString("id-CA", OID);
	var id_CA_DH = new ByteString("id-CA-DH", OID);
	var id_CA_ECDH = new ByteString("id-CA-ECDH", OID);
	var id_TA = new ByteString("id-TA", OID);
	var id_PT = new ByteString("id-PT", OID);

	for (var i = 0; i < si.elements; i++) {
		var o = si.get(i);
		assert((o.elements >= 1) && (o.elements <= 3));

		var oid = o.get(0);
		assert(oid.tag == ASN1.OBJECT_IDENTIFIER);

		if (oid.value.startsWith(id_TA) == id_TA.length) {
			this.log("TA : " + o);
		} else if (oid.value.startsWith(id_PACE) == id_PACE.length) {
			if (oid.value.equals(id_PACE_DH_GM) ||
				oid.value.equals(id_PACE_ECDH_GM) ||
				oid.value.equals(id_PACE_DH_IM) ||
				oid.value.equals(id_PACE_ECDH_GM)) {
				this.log("PaceDomainParameterInfo : " + o);

				var pdpi = new PACEDomainParameterInfo(o);
				this.log(pdpi);

				var id = pdpi.parameterId;

				if (typeof(id) == "undefined") {
					id = 0;
				}

				if (!fromCardSecurity && (typeof(this.PACEDPs[id]) != "undefined")) {
					throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Duplicate parameterId " + id + " for PACEDomainParameter");
				}

				this.PACEDPs[id] = pdpi;
			} else {
				this.log("PaceInfo : " + o);

				var pi = new PACEInfo(o);
				this.log(pi);

				var id = pi.parameterId;

				if (typeof(id) == "undefined") {
					id = 0;
				}

				if (pi.version == 1) {
					if (!fromCardSecurity && (typeof(this.PACEInfos[id]) != "undefined")) {
						throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Duplicate parameterId " + id + " for PACEInfo");
					}
				} else {
					id = 0;
				}
				this.PACEInfos[id] = pi;
			}
		} else if (oid.value.equals(id_PK_ECDH)) {
			this.log("ChipAuthenticationPublicKeyInfo : " + o);

			var capki = new ChipAuthenticationPublicKeyInfo(o);
			this.log(capki);

			var id = capki.keyId;

			if (typeof(id) == "undefined") {
				this.log("Using default key id 0");
				id = 0;
			}

			if (!fromCardSecurity && (typeof(this.CAPublicKeys[id]) != "undefined")) {
				throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Duplicate keyId " + id + " for ChipAuthenticationPublicKeyInfo");
			}

			this.CAPublicKeys[id] = capki;
		} else if (oid.value.startsWith(id_CA) == id_CA.length) {
			if (oid.value.equals(id_CA_DH) ||
				oid.value.equals(id_CA_ECDH)) {
				this.log("ChipAuthenticationDomainParameterInfo : " + o);

				var cadpi = new ChipAuthenticationDomainParameterInfo(o);
				this.log(cadpi);

				var id = cadpi.keyId;

				if (typeof(id) == "undefined") {
					this.log("Using default key id 0");
					id = 0;
				}

				if (!fromCardSecurity && (typeof(this.CADPs[id]) != "undefined")) {
					throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Duplicate keyId " + id + " for ChipAuthenticationDomainParameter");
				}

				this.CADPs[id] = cadpi;
			} else {
				this.log("ChipAuthenticationInfo : " + o);

				var cai = new ChipAuthenticationInfo(o);
				this.log(cai);

				var id = cai.keyId;

				if (typeof(id) == "undefined") {
					this.log("Using default key id 0");
					id = 0;
				}

				if (!fromCardSecurity && (typeof(this.CAInfos[id]) != "undefined")) {
					throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Duplicate keyId " + id + " for ChipAuthenticationInfo");
				}

				this.CAInfos[id] = cai;
			}
		} else if (oid.value.startsWith(RestrictedIdentification.id_RI) == RestrictedIdentification.id_RI.length) {
			if (oid.value.equals(RestrictedIdentification.id_RI_DH) ||
				oid.value.equals(RestrictedIdentification.id_RI_ECDH)) {
				this.log("RestrictedIdentificationDomainParameterInfo : " + o);

				var ridpi = new RestrictedIdentificationDomainParameterInfo(o);
				this.log(ridpi);

				if (!fromCardSecurity && (typeof(this.RIDP) != "undefined")) {
					throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Duplicate RestrictedIdentificationDomainParameter");
				this.RIDP = ridpi;
				}
			} else {
				this.log("RestrictedIdentificationInfo : " + o);

				var rii = new RestrictedIdentificationInfo(o);
				this.log(rii);

				var id = rii.keyId;

				if (typeof(id) == "undefined") {
					this.log("Using default key id 0");
					id = 0;
				}

				if (!fromCardSecurity && (typeof(this.RIInfos[id]) != "undefined")) {
					throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Duplicate keyId " + id + " for RestrictedIdentificationInfo");
				}

				this.RIInfos[id] = rii;
			}
		} else if (oid.value.equals(id_PT)) {
			this.log("PrivilegedTerminalInfo : " + o);
			this.processSecurityInfos(o.get(1), fromCardSecurity);
		}
	}
}



/**
 * Select EF using FID and read elementary file
 *
 * @param {ByteString} fid 2 byte file identifier
 * @type ByteString
 * @return the content of the EF
 */
EAC20.prototype.readEFwithFID = function(fid) {
	assert(fid.length == 2, "Length of fid must be 2 bytes");
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xA4, 0x02, 0x0C, fid, [0x9000]);

	var bb = new ByteBuffer();
	var offset = 0;
	do	{
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xB0, offset >> 8, offset & 0xFF, this.maxRData);
		bb.append(rsp);
		offset += rsp.length;
	} while ((this.card.SW == 0x9000) && (rsp.length > 0));

	return bb.toByteString();
}



/**
 * Select EF using FID and update content
 *
 * @param {ByteString} fid 2 byte file identifier
 * @param {ByteString} data data to be written
 */
EAC20.prototype.updateEFwithFID = function(fid, data) {
	assert(fid.length == 2, "Length of fid must be 2 bytes");
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xA4, 0x02, 0x0C, fid, [0x9000]);

	var offset = 0;
	while (offset < data.length) {
		var len = data.length - offset;
		len = this.maxCData < len ? this.maxCData : len;
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xD6, offset >> 8, offset & 0xFF, data.bytes(offset, len), [0x9000]);
		offset += len;
	}
}



/**
 * Select and read EF using SFI
 *
 * @param {Number} short file identifier
 * @type ByteString
 * @return the content of the EF
 */
EAC20.prototype.readEFwithSFI = function(sfi) {
	assert(typeof(sfi) == "number", "Parameter must be a number");

	if (this.useFID) {
		var fid = ByteString.valueOf(0x0100 + sfi, 2);
		return this.readEFwithFID(fid);
	}

	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xB0, 0x80 | sfi, 0x00, this.maxRData, [0x9000]);

	var bb = new ByteBuffer(rsp);
	var offset = bb.length;
	do	{
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xB0, offset >> 8, offset & 0xFF, this.maxRData);
		bb.append(rsp);
		offset += rsp.length;
	} while ((this.card.SW == 0x9000) && (rsp.length > 0));

	return bb.toByteString();
}



/**
 * Select and read a TLV encoded EF using SFI
 *
 * @param {Number} short file identifier
 * @type ByteString
 * @return the TLV content of the EF
 */
EAC20.prototype.readTLVEFwithSFI = function(sfi) {
	assert(typeof(sfi) == "number", "Parameter must be a number");

	if (this.useFID) {
		var fid = ByteString.valueOf(0x0100 + sfi, 2);
		return this.readEFwithFID(fid);
	}

	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xB0, 0x80 | sfi, 0x00, this.maxRData, [0x9000]);

	var bb = new ByteBuffer(rsp);
	var offset = bb.length;
	do	{
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xB0, offset >> 8, offset & 0xFF, this.maxRData);
		bb.append(rsp);
		offset += rsp.length;
	} while ((this.card.SW == 0x9000) && (rsp.length > 0));

	return bb.toByteString();
}



/**
 * Select EF using SFI and update content
 *
 * @param {Number} short file identifier
 * @param {ByteString} data data to be written
 */
EAC20.prototype.updateEFwithSFI = function(sfi, data) {
	assert(typeof(sfi) == "number", "Parameter must be a number");

	if (this.useFID) {
		var fid = ByteString.valueOf(0x0100 + sfi, 2);
		return this.updateEFwithFID(fid, data);
	}

	var offset = 0;
	var p1 = 0x80 | sfi;
	while (offset < data.length) {
		var len = data.length - offset;
		len = this.maxCData < len ? this.maxCData : len;
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xD6, p1, offset & 0xFF, data.bytes(offset, len), [0x9000]);
		offset += len;
		p1 = offset >> 8;
	}
}



/**
 * Select application DF
 *
 * @param {ByteString} aid the application identifier
 */
EAC20.prototype.selectADF = function(aid) {
	if (this.selectADFwithoutSM) {
		this.card.sendApdu(0x00, 0xA4, 0x04, 0x0C, aid, [0x9000]);
	} else {
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xA4, 0x04, 0x0C, aid, [0x9000]);
	}
}



/**
 * Select ePass LDS Application
 */
EAC20.prototype.selectLDS = function() {
	this.selectADF(EAC20.AID_LDS);
}



/**
 * Select eID Application
 */
EAC20.prototype.select_eID = function() {
	this.selectADF(EAC20.AID_eID);
}



/**
 * Select eSign Application
 */
EAC20.prototype.select_eSign = function() {
	this.selectADF(EAC20.AID_eSign);
}



/**
 * Read EF.DG14 and process security infos
 *
 */
EAC20.prototype.readDG14 = function() {
	var cibin = this.readEFwithSFI(14);
	var citlv = new ASN1(cibin);
	this.log(citlv);

	this.processSecurityInfos(citlv.get(0), true);
}



/**
 * Read EF.CVCA and process contained CARs
 *
 */
EAC20.prototype.readCVCA = function() {
	var cvcabin = this.readEFwithSFI(EAC20.SFI_CVCA);
	assert(cvcabin.byteAt(0) == 0x42);

	var cvca = new ASN1(cvcabin);
	this.lastCAR = new PublicKeyReference(cvca.value);

	if (cvcabin.byteAt(cvca.size) == 0x42) {
		var cvca = new ASN1(cvcabin.bytes(cvca.size));
		this.previousCAR = new PublicKeyReference(cvca.value);
	}
}



/**
 * Read EF.CardAccess and process security infos
 *
 */
EAC20.prototype.readCardAccess = function() {
	var cibin = this.readEFwithSFI(EAC20.SFI_CardAccess);
	var citlv = new ASN1(cibin);
	this.log(citlv);

	this.processSecurityInfos(citlv, false);
}

// Deprecated
EAC20.prototype.readCardInfo = EAC20.prototype.readCardAccess;



/**
 * Read EF.CardSecurity and process security infos
 */
EAC20.prototype.readCardSecurity = function() {
	var csbin = this.readEFwithSFI(EAC20.SFI_CardSecurity);
	var cstlv = new ASN1(csbin);
	this.log("EF.CardSecurity:");
	this.log(cstlv);

	var cms = new CMSSignedData(csbin);

	var certs = cms.getSignedDataCertificates();

	this.log("EF.CardSecurity Certificates:");
	for (var i = 0; i < certs.length; i++) {
		this.log(certs[i]);
	}

	this.log("DocSigner Signature is " + (cms.isSignerInfoSignatureValid(0) ? "valid" : "not valid"));

	var data = cms.getSignedContent();

	this.log(data);

	var cstlv = new ASN1(data);

	this.log(cstlv);

	this.processSecurityInfos(cstlv, true);
}



/**
 * Read EF.ChipSecurity and process security infos
 */
EAC20.prototype.readChipSecurity = function() {
	var csbin = this.readEFwithSFI(EAC20.SFI_ChipSecurity);
	var cstlv = new ASN1(csbin);
	this.log("EF.ChipSecurity:");
	this.log(cstlv);

	var cms = new CMSSignedData(csbin);

	var certs = cms.getSignedDataCertificates();

	this.log("EF.ChipSecurity Certificates:");
	for (var i = 0; i < certs.length; i++) {
		this.log(certs[i]);
	}

	this.log("DocSigner Signature is " + (cms.isSignerInfoSignatureValid(0) ? "valid" : "not valid"));

	var data = cms.getSignedContent();

	this.log(data);

	var cstlv = new ASN1(data);

	this.log(cstlv);

	this.processSecurityInfos(cstlv, true);
}



/**
 * Return the list of PACEInfo objects
 *
 * @return the list of PACEInfo objects read from the card, indexed by the parameterId
 * @type PACEInfo[]
 */
EAC20.prototype.getPACEInfos = function() {
	return this.PACEInfos;
}



/**
 * Return the list of PACEDomainParameterInfo objects
 *
 * @return the list of PACEDomainParameterInfo objects read from the card, indexed by the parameterId
 * @type PACEDomainParameterInfo[]
 */
EAC20.prototype.getPACEDomainParameterInfos = function() {
	return this.PACEDPs;
}



/**
 * Return the list of ChipAuthenticationInfo objects
 *
 * @return the list of ChipAuthenticationInfo objects read from the card, indexed by the keyId
 * @type ChipAuthenticationInfo[]
 */
EAC20.prototype.getCAInfos = function() {
	return this.CAInfos;
}



/**
 * Return the list of ChipAuthenticationDomainParameterInfo objects
 *
 * @return the list of ChipAuthenticationDomainParameterInfo objects read from the card, indexed by the keyId
 * @type ChipAuthenticationDomainParameterInfo[]
 */
EAC20.prototype.getCADomainParameterInfos = function() {
	return this.CADPs;
}



/**
 * Return the key id of the chip authentication key
 *
 * @return the key id
 * @type
 */
EAC20.prototype.getCAKeyId = function(privileged) {
	for (var i in this.CAInfos) {		// Locate first entry in list
		if (this.CAInfos[i].keyId) {
			if (privileged) {
				privileged = false;		// Select second key if privileged key requested
			} else {
				return this.CAInfos[i].keyId;
			}
		}
	}
	return 0;
}



/**
 * Return the key id of the restricted identification key
 *
 * @param {boolean} authOnly return the RI key available after authentication only (to calculate the pseudonym)
 * @return the key id
 * @type
 */
EAC20.prototype.getRIKeyId = function(authOnly) {
	for each (var rii in this.RIInfos) {
		if (!authOnly == !rii.authorizedOnly) {
			return rii.keyId;
		}
	}
	return 0;
}



/**
 * Decode document number from 2 or 3 line MRZ
 *
 * <p>This method supports a document number in a three line MRZ longer than 10 digits.</p>
 *
 * @param {String} mrz the concatenation of the MRZ lines
 * @type String
 * @return the document number
 */
EAC20.decodeDocumentNumber = function(mrz) {
	if (mrz.length == 88) {			// Two line MRZ
		var docno = mrz.substr(44, 10);
	} else {						// Three line MRZ
		if (mrz.charAt(14) == "<") {
			var sep = mrz.indexOf("<", 15);
			var docno = mrz.substr(5,9).concat(mrz.substring(15,sep));
		} else {
			var docno = mrz.substr(5, 10);
		}
	}
	return docno;
}


/**
 * Calculate the hash over document number, date of birth and date of expiration from 2 or 3 line MRZ
 *
 * <pre>
 * 2 line MRZ of Silver Data Set
 *   P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<
 *   L898902C<3UTO6908061F9406236ZE184226B<<<<<14
 *   '-DocNo--'   '-DoB-' '-DoE-'
 *
 * 3 line MRZ of Silver Data Set
 *   I<UTOL898902C<3<<<<<<<<<<<<<<<
 *        '-DocNo--'
 *   6908061F9406236UTO<<<<<<<<<<<1
 *   '-DoB-' '-DoE-'
 *   ERIKSON<<ANNA<MARIA<<<<<<<<<<<
 * </pre>
 *
 * @param {String} mrz 2 line or 3 line machine readable zone
 * @type ByteString
 * @return the SHA-1 hash over the concatenation of document number, date of birth and date of expiration
 */
EAC20.prototype.hashMRZ = function(mrz) {
	var hash_input = new ByteString(EAC20.decodeDocumentNumber(mrz), ASCII);
	// Convert to byte string
	var strbin = new ByteString(mrz, ASCII);

	if (strbin.length == 88) {			// 2 line MRZ
		// Extract Date of Birth and Date of Expiration
		hash_input = hash_input.concat(strbin.bytes(57, 7));
		hash_input = hash_input.concat(strbin.bytes(65, 7));
	} else if (strbin.length == 90) {		// 3 line MRZ
		// Extract Date of Birth and Date of Expiration
		hash_input = hash_input.concat(strbin.bytes(30, 7));
		hash_input = hash_input.concat(strbin.bytes(38, 7));
	} else {
		throw new GPError("EAC20", GPError.INVALID_DATA, strbin.length, "MRZ must be either 88 or 90 character long");
	}

	this.log("Hash Input : " + hash_input.toString(ASCII));
	var mrz_hash = this.crypto.digest(Crypto.SHA_1, hash_input);
	this.log("MRZ Hash : " + mrz_hash);
	return mrz_hash;
}



/**
 * Calculate the Basic Access Control (BAC) key from the MRZ
 *
 * @param {String} mrz 2 line or 3 line machine readable zone
 * @param {Number} keyno Number of key to calculate (1 for Kenc and 2 for Kmac)
 * @type Key
 * @returns the key object
 */
EAC20.prototype.calculateBACKey = function(mrz, keyno) {
	var mrz_hash = this.hashMRZ(mrz);

	// Extract first 16 byte and append 00000001 or 00000002
	var bb = new ByteBuffer(mrz_hash.bytes(0, 16));
	bb.append(new ByteString("000000", HEX));
	bb.append(keyno);

	// Hash again to calculate key value
	var keyval = this.crypto.digest(Crypto.SHA_1, bb.toByteString());
	keyval = keyval.bytes(0, 16);
	this.log("Value of Key : " + keyval);
	var key = new Key();
	key.setComponent(Key.DES, keyval);

	return key;
}



/**
 * Perform BAC using the provided Kenc and Kmac values.
 *
 * @param {Key} kenc the key Kenc
 * @param {Key} kmac the key Kmac
 */
EAC20.prototype.performBACWithMRZ = function(mrz) {
	this.setIDPICC(new ByteString(EAC20.decodeDocumentNumber(mrz), ASCII));

	var kenc = this.calculateBACKey(mrz, 1);
	var kmac = this.calculateBACKey(mrz, 2);

	this.performBAC(kenc, kmac);
}



/**
 * Perform BAC using the provided Kenc and Kmac values.
 *
 * @param {Key} kenc the key Kenc
 * @param {Key} kmac the key Kmac
 */
EAC20.prototype.performBAC = function(kenc, kmac) {

	// GET CHALLENGE
	var rndicc = this.card.sendApdu(0x00, 0x84, 0x00, 0x00, 0x08, [0x9000]);

	var rndifd = this.crypto.generateRandom(8);
	var kifd = this.crypto.generateRandom(16);

	var plain = rndifd.concat(rndicc).concat(kifd);

	var cryptogram = this.crypto.encrypt(kenc, Crypto.DES_CBC, plain, new ByteString("0000000000000000", HEX));

	var mac = this.crypto.sign(kmac, Crypto.DES_MAC_EMV, cryptogram.pad(Crypto.ISO9797_METHOD_2));

	// EXTERNAL AUTHENTICATE
	var autresp = this.card.sendApdu(0x00, 0x82, 0x00, 0x00, cryptogram.concat(mac), 0);

	if (this.card.SW != 0x9000) {
		this.log("Mutual authenticate failed with " + this.card.SW.toString(16) + " \"" + this.card.SWMSG + "\". MRZ correct ?");
		throw new GPError("EAC20", GPError.CRYPTO_FAILED, 0, "Card did not accept MAC in BAC establishment");
	}

	cryptogram = autresp.bytes(0, 32);
	mac = autresp.bytes(32, 8);

	if (!this.crypto.verify(kmac, Crypto.DES_MAC_EMV, cryptogram.pad(Crypto.ISO9797_METHOD_2), mac)) {
		throw new GPError("EAC20", GPError.CRYPTO_FAILED, 0, "Card MAC did not verify correctly");
	}

	plain = this.crypto.decrypt(kenc, Crypto.DES_CBC, cryptogram, new ByteString("0000000000000000", HEX));

	if (!plain.bytes(0, 8).equals(rndicc)) {
		throw new GPError("EAC20", GPError.CRYPTO_FAILED, 0, "Card response does not contain matching RND.ICC");
	}

	if (!plain.bytes(8, 8).equals(rndifd)) {
		throw new GPError("EAC20", GPError.CRYPTO_FAILED, 0, "Card response does not contain matching RND.IFD");
	}

	var kicc = plain.bytes(16, 16);
	keyinp = kicc.xor(kifd);

	var hashin = keyinp.concat(new ByteString("00000001", HEX));
	var kencval = this.crypto.digest(Crypto.SHA_1, hashin);
	kencval = kencval.bytes(0, 16);
	var kenc = new Key();
	kenc.setComponent(Key.DES, kencval);

	var hashin = keyinp.concat(new ByteString("00000002", HEX));
	var kmacval = this.crypto.digest(Crypto.SHA_1, hashin);
	kmacval = kmacval.bytes(0, 16);
	var kmac = new Key();
	kmac.setComponent(Key.DES, kmacval);

	var ssc = rndicc.bytes(4, 4).concat(rndifd.bytes(4, 4));

	this.sm = new IsoSecureChannel(this.crypto);
	this.sm.setEncKey(kenc);
	this.sm.setMacKey(kmac);
	this.sm.setSendSequenceCounter(ssc);

	this.card.setCredential(this.sm);
}



/**
 * Perform PACE using the indicated parameter set, the identified password, the password value and
 * an optional cardholder authentication template.
 *
 * <p>This method supports PACE version 1 and 2. For version 2, parameterId with a value between 0 and 31 denotes
 * a standardized domain parameter as defined in TR-03110 2.04 or later.</p>
 *
 * @param {Number} parameterId the identifier for the PACEInfo and PACEDomainParameterInfo from EF.CardInfo. Use 0 for
 *                             the default.
 * @param {Number} pwdid one of EAC20.ID_MRZ, EAC20.ID_CAN, EAC20.ID_PIN, EAC20.ID_PUK
 * @param {ByteString} pwd the PACE password or PACE key
 * @param {ASN1} chat the CHAT data object with tag 7F4C or null
 * @param {ASN1} certExt the certificate extensions data object with tag 65 or null
 */
EAC20.prototype.performPACE = function(parameterId, pwdid, pwd, chat, certExt) {

	var paceinfo = this.PACEInfos[parameterId];
	if (typeof(paceinfo) == "undefined") {
		throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown parameterId " + parameterId + " for PACEInfo");
	}

	var domainParameter;

	// Used for Chip Authentication
	this.includeDPinAuthToken = !(paceinfo.version >= 2);

	if ((paceinfo.version == 1) || ((paceinfo.version == 2) && (parameterId > 31))) {
		var pacedp = this.PACEDPs[parameterId];
		if (typeof(pacedp) == "undefined") {
			throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown parameterId " + parameterId + " for PACEDomainParameterInfo");
		}
		domainParameter = pacedp.domainParameter;
	} else {
		domainParameter = PACEDomainParameterInfo.getStandardizedDomainParameter(parameterId);
	}

	if (!(pwd instanceof ByteString) && !(pwd instanceof Key)) {
		throw new GPError("EAC20", GPError.INVALID_TYPE, 0, "Argument pwd must be of type ByteString or Key");
	}

	if ((chat != null) && !(chat instanceof ASN1)) {
		throw new GPError("EAC20", GPError.INVALID_TYPE, 0, "Argument chat must be of type ASN1");
	}


	var pace = new PACE(this.crypto, paceinfo.protocol, domainParameter, paceinfo.version);
	if (pwd instanceof(ByteString)) {
		pace.setPassword(pwd);
	} else {
		pace.setPACEKey(pwd);
	}

	// Manage SE
	var crt = new ByteBuffer();
	crt.append((new ASN1(0x80, paceinfo.protocol)).getBytes());
	crt.append(new ByteString("8301", HEX));
	crt.append(pwdid);
	if (chat != null) {
		crt.append(chat.getBytes());
	}
	if (certExt != null) {
		crt.append(certExt.getBytes());
	}

	this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0xC1, 0xA4, crt.toByteString(), [0x9000, 0x63C2, 0x63C1 ]);

	// General Authenticate
	var dado = new ASN1(0x7C);

	dadobin = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x10, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000]);

	var dado = new ASN1(dadobin);
	assert(dado.tag == 0x7C);
	assert(dado.elements == 1);
	var encryptedNonceDO = dado.get(0);
	assert(encryptedNonceDO.tag == 0x80);
	var encryptedNonce = encryptedNonceDO.value;

	this.log("Encrypted nonce: " + encryptedNonce);

	pace.decryptNonce(encryptedNonce);

	var mappingData = pace.getMappingData();

	var dado = new ASN1(0x7C, new ASN1(0x81, mappingData));

	dadobin = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x10, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000]);

	var dado = new ASN1(dadobin);
	assert(dado.tag == 0x7C);
	assert(dado.elements == 1);
	var mappingDataDO = dado.get(0);
	assert(mappingDataDO.tag == 0x82);

	pace.performMapping(mappingDataDO.value);

	var ephemeralPublicKeyIfd = pace.getEphemeralPublicKey();

	var dado = new ASN1(0x7C, new ASN1(0x83, ephemeralPublicKeyIfd));

	dadobin = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x10, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000]);

	var dado = new ASN1(dadobin);
	assert(dado.tag == 0x7C);
	assert(dado.elements == 1);
	var ephemeralPublicKeyICC = dado.get(0);
	assert(ephemeralPublicKeyICC.tag == 0x84);

	this.idPICC = ephemeralPublicKeyICC.value.bytes(1, (ephemeralPublicKeyICC.value.length - 1) >> 1);
	this.log("ID_PICC : " + this.idPICC);

	pace.performKeyAgreement(ephemeralPublicKeyICC.value);


	var authToken = pace.calculateAuthenticationToken();

	var dado = new ASN1(0x7C, new ASN1(0x85, authToken));

	dadobin = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x00, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000, 0x63C2, 0x63C1, 0x63C0, 0x6283 ]);

	if ((this.card.SW & 0xFFF0) == 0x63C0) {
		throw new GPError("EAC20", GPError.DEVICE_ERROR, this.card.SW, "Authentication failed: " + (this.card.SW & 0xF) + " tries left");
	}

	if (this.card.SW == 0x6300) {
		throw new GPError("EAC20", GPError.DEVICE_ERROR, this.card.SW, "Authentication failed");
	}

	var dado = new ASN1(dadobin);
	this.log(dado);
	assert(dado.tag == 0x7C);
	assert(dado.elements >= 1);
	assert(dado.elements <= 3);
	var authTokenDO = dado.get(0);
	assert(authTokenDO.tag == 0x86);

	if (dado.elements > 1) {
		var cardo = dado.get(1);
		assert(cardo.tag == 0x87);
		this.lastCAR = new PublicKeyReference(cardo.value);
	}

	if (dado.elements > 2) {
		var cardo = dado.get(2);
		assert(cardo.tag == 0x88);
		this.previousCAR = new PublicKeyReference(cardo.value);
	}

	var sm = null;

	if (pace.verifyAuthenticationToken(authTokenDO.value)) {
		this.log("Authentication token valid");

		var symalgo = pace.getSymmetricAlgorithm();

		if (symalgo == Key.AES) {
			sm = new IsoSecureChannel(this.crypto, IsoSecureChannel.SSC_SYNC_ENC_POLICY);
			sm.setEncKey(pace.kenc);
			sm.setMacKey(pace.kmac);
			sm.setMACSendSequenceCounter(new ByteString("00000000000000000000000000000000", HEX));
		} else {
			sm = new IsoSecureChannel(this.crypto);
			sm.setEncKey(pace.kenc);
			sm.setMacKey(pace.kmac);
			sm.setMACSendSequenceCounter(new ByteString("0000000000000000", HEX));
		}
		this.card.setCredential(sm);
	}
	this.sm = sm;
}



/**
 * Return the trust anchor's CAR as indicated by the card in the PACE protocol
 *
 * @param {boolean} previous, true to return the previous CAR, if any
 * @return the CertificationAuthorityReference (CAR)
 * @type PublicKeyReference
 */
EAC20.prototype.getTrustAnchorCAR = function(previous) {
	if (previous) {
		return this.previousCAR;
	} else {
		return this.lastCAR;
	}
}



/**
 * Submit a list of certificates to the card for verification
 *
 * @param {CVC[]} cvcchain the list of certificates, starting with link certificates, DVCA certificate and terminal certificate.
 */
EAC20.prototype.verifyCertificateChain = function(cvcchain) {

	var i = cvcchain.length;
	do {
		i--;
		var cvc = cvcchain[i];

		var car = cvc.getCAR().getBytes();

		var pukrefdo = new ASN1(0x83, car);
		var pukref = pukrefdo.getBytes();

		this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x81, 0xB6, pukref);
	} while ((this.card.SW != 0x9000) && (i > 0));

	for (; i < cvcchain.length; i++) {
		var cvc = cvcchain[i];

		var car = cvc.getCAR().getBytes();

		var pukrefdo = new ASN1(0x83, car);
		var pukref = pukrefdo.getBytes();

		this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x81, 0xB6, pukref, [0x9000]);

		// Extract value of 7F21
		var tl = new TLVList(cvc.getBytes(), TLV.EMV);
		var t = tl.index(0);
		var v = t.getValue();

		this.log("Certificate: ");
		this.log(new ASN1(v));
		this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x2A, 0x00, 0xBE, v, [0x9000]);
	}

	this.terminalCert = cvcchain[cvcchain.length - 1];
}



/**
 * Set the ID_PICC used for terminal authentication in EAC 1.11
 *
 * @param {ByteString} id
 * @param {Key} kmac the key Kmac
 */
EAC20.prototype.setIDPICC = function(idPICC) {
	this.idPICC = idPICC;
}



/**
 * Perform terminal authentication using a given terminal key
 *
 * @param {Key} termkey the terminal private key
 * @param {ByteString} auxdata auxiliary data (tag '67') to be included in terminal authentication
 * @param {Crypto} crypto optional alternative crypto provider (e.g. for key in SmartCard-HSM)
 */
EAC20.prototype.performTerminalAuthentication = function(termkey, auxdata, crypto) {
	var signatureInput = this.performTerminalAuthenticationSetup(auxdata);

	if (crypto == undefined) {
		var crypto = this.crypto;
	}
	var signature = crypto.sign(termkey, CVC.getSignatureMech(this.terminalCert.getPublicKeyOID()), signatureInput);

	var keysize = termkey.getSize();
	if (keysize < 0) {
		keysize = termkey.getComponent(Key.ECC_P).length;
	} else {
		keysize >>= 3;
	}

	signature = CVC.unwrapSignature(signature, keysize);
	this.log("Signature (Encoded):");
	this.log(signature);

	this.performTerminalAuthenticationFinal(signature);
}



/**
 * Prepare terminal authentication by setting the required security environment
 *
 * @param {ByteString} auxdata auxiliary data (tag '67') to be included in terminal authentication
 */
EAC20.prototype.performTerminalAuthenticationSetup = function(auxdata) {

	var idIFD = this.ca.getCompressedPublicKey();

	var bb = new ByteBuffer();

	if (typeof(this.cakeyId) != "undefined") {
		bb.append(new ASN1(0x80, this.terminalCert.getPublicKeyOID()).getBytes());
	}

	bb.append(new ASN1(0x83, this.terminalCert.getCHR().getBytes()).getBytes());

	if (typeof(this.cakeyId) != "undefined") {
		if (auxdata) {
			bb.append(auxdata);
		}
		bb.append(new ASN1(0x91, idIFD).getBytes());
	}

	var msedata = bb.toByteString();
	this.log("Manage SE data:");
	this.log(msedata);
	this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x81, 0xA4, msedata, [0x9000]);

	var challenge = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x00, 0x84, 0x00, 0x00, 8, [0x9000]);

	var bb = new ByteBuffer();
	bb.append(this.idPICC);
	bb.append(challenge);
	bb.append(idIFD);
	if (auxdata) {
		bb.append(auxdata);
	}
	var signatureInput = bb.toByteString();
	this.log("Signature Input:");
	this.log(signatureInput);
	return signatureInput;
}



/**
 * Complete terminal authentication by submitting the signature to the card
 *
 * @param {ByteString} signature the signature as concatenation of r and s
 */
EAC20.prototype.performTerminalAuthenticationFinal = function(signature) {
	this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x82, 0x00, 0x00, signature, [0x9000]);
}



/**
 * Perform chip authentication in version 1 and establish a secure channel
 *
 * @return true, if chip authentication was successfull
 * @type boolean
 */
EAC20.prototype.performChipAuthenticationV1 = function(keyid) {
	this.log("performChipAuthenticationV1() called");

	if (typeof(keyid) == "undefined") {
		keyid = 0;
	}

	var cainfo = this.CAInfos[keyid];
	if (typeof(cainfo) == "undefined") {
		throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown keyId " + keyid + " for ChipAuthenticationInfo");
	}

	var capuk = this.CAPublicKeys[keyid];
	if (typeof(capuk) == "undefined") {
		throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown keyId " + keyid + " for ChipAuthenticationPublicKeyInfo");
	}

	var domainParameter = capuk.domainParameter;

	this.ca = new ChipAuthentication(this.crypto, cainfo.protocol, domainParameter);

	this.ca.generateEphemeralCAKeyPair();

	if (cainfo.protocol.equals(ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC)) {
		var bb = new ByteBuffer();
		bb.append(new ASN1(0x91, this.ca.getEphemeralPublicKey()).getBytes());

		if (typeof(cainfo.keyId) != "undefined") {
			bb.append(new ByteString("8401", HEX));
			bb.append(cainfo.keyId);
		}

		var msedata = bb.toByteString();
		this.log("Manage SE data:");
		this.log(msedata);
		this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x41, 0xA6, msedata, [0x9000]);

		this.ca.performKeyAgreement(capuk.publicKey);

		this.log("Create DES based secure channel");
		var sm = new IsoSecureChannel(this.crypto);
		sm.setEncKey(this.ca.kenc);
		sm.setMacKey(this.ca.kmac);
		sm.setSendSequenceCounter(new ByteString("0000000000000000", HEX));
	} else {
		var bb = new ByteBuffer();
		bb.append(new ASN1(0x80, cainfo.protocol).getBytes());

		if (typeof(cainfo.keyId) != "undefined") {
			bb.append(new ByteString("8401", HEX));
			bb.append(cainfo.keyId);
		}

		var msedata = bb.toByteString();
		this.log("Manage SE data:");
		this.log(msedata);
		this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x41, 0xA4, msedata, [0x9000]);

		var ephemeralPublicKeyIfd = this.ca.getEphemeralPublicKey();

		var dado = new ASN1(0x7C, new ASN1(0x80, ephemeralPublicKeyIfd));

		this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x00, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000]);

		this.ca.performKeyAgreement(capuk.publicKey);

		this.log("Create AES based secure channel");
		var sm = new IsoSecureChannel(this.crypto, IsoSecureChannel.SSC_SYNC_ENC_POLICY);
		sm.setEncKey(this.ca.kenc);
		sm.setMacKey(this.ca.kmac);
		sm.setMACSendSequenceCounter(new ByteString("00000000000000000000000000000000", HEX));
	}

	this.card.setCredential(sm);
	this.sm = sm;
}



/**
 * Prepare chip authentication by generating the ephemeral key pair
 *
 * @param {Number} keyId the key identifier to be used for chip authentication
 */
EAC20.prototype.prepareChipAuthentication = function(keyId) {
	this.log("prepareChipAuthentication() called");

	this.cakeyId = keyId;

	var cainfo = this.CAInfos[keyId];
	if (typeof(cainfo) == "undefined") {
		throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown keyId " + keyId + " for ChipAuthenticationInfo");
	}

	var cadp = this.CADPs[keyId];
	if (typeof(cadp) == "undefined") {
		throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown keyId " + keyId + " for ChipAuthenticationDomainParameterInfo");
	}
	this.cadp = cadp;

	this.ca = new ChipAuthentication(this.crypto, cainfo.protocol, cadp.domainParameter);

	this.ca.includeDPinAuthToken = this.includeDPinAuthToken;
	this.ca.generateEphemeralCAKeyPair();
}



/**
 * Perform chip authentication in version 2 and establish a secure channel
 *
 * @return true, if chip authentication was successfull
 * @type boolean
 */
EAC20.prototype.performChipAuthenticationV2 = function() {
	this.log("performChipAuthenticationV2() called");

	var cainfo = this.CAInfos[this.cakeyId];
	if (typeof(cainfo) == "undefined") {
		throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown keyId " + this.cakeyId + " for ChipAuthenticationInfo");
	}

	if (this.ca.algo != cainfo.protocol) {
		this.log("Special handling for ChipAuthenticationInfo in EF.CardSecurity overwriting ChipAuthenticationInfo in EF.CardAccess");
		this.log("Protocol in EF.CardAccess: " + this.ca.algo);
		this.log("Protocol is EF.CardSecurity: " + cainfo.protocol);
		this.ca.algo = cainfo.protocol;
	}

	var capuk = this.CAPublicKeys[this.cakeyId];
	if (typeof(capuk) == "undefined") {
		throw new GPError("EAC20", GPError.INVALID_DATA, 0, "Unknown keyId " + this.cakeyId + " for ChipAuthenticationPublicKeyInfo");
	}

	var bb = new ByteBuffer();
	bb.append(new ASN1(0x80, cainfo.protocol).getBytes());

	if (typeof(cainfo.keyId) != "undefined") {
		bb.append(new ByteString("8401", HEX));
		bb.append(cainfo.keyId);
	}

	var msedata = bb.toByteString();
	this.log("Manage SE data:");
	this.log(msedata);
	this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x41, 0xA4, msedata, [0x9000]);

	var ephemeralPublicKeyIfd = this.ca.getEphemeralPublicKey();

	var dado = new ASN1(0x7C, new ASN1(0x80, ephemeralPublicKeyIfd));

	var dadobin = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x00, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000]);

	this.log(dadobin);

	var dado = new ASN1(dadobin);
	assert(dado.tag == 0x7C);
	assert(dado.elements == 2);
	var nonceDO = dado.get(0);
	assert(nonceDO.tag == 0x81);
	var nonce = nonceDO.value;

	var authTokenDO = dado.get(1);
	assert(authTokenDO.tag == 0x82);
	var authToken = authTokenDO.value;

	this.ca.performKeyAgreement(capuk.publicKey, nonce);

	var result = this.ca.verifyAuthenticationToken(authToken);

	if (result) {
		this.log("Authentication token valid");

		if (this.ca.algo.equals(ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC)) {
			this.log("Create DES based secure channel");
			var sm = new IsoSecureChannel(this.crypto);
			sm.setEncKey(this.ca.kenc);
			sm.setMacKey(this.ca.kmac);
			sm.setMACSendSequenceCounter(new ByteString("0000000000000000", HEX));
		} else {
			this.log("Create AES based secure channel");
			var sm = new IsoSecureChannel(this.crypto, IsoSecureChannel.SSC_SYNC_ENC_POLICY);
			sm.setEncKey(this.ca.kenc);
			sm.setMacKey(this.ca.kmac);
			sm.setMACSendSequenceCounter(new ByteString("00000000000000000000000000000000", HEX));
		}
		this.card.setCredential(sm);
		this.sm = sm;
	} else {
		this.log("Authentication token invalid");
	}

	return result;
}



/**
 * Verify authenticated auxiliary data
 *
 * @param {ByteString} oid the object identifier for the auxiliary data provided during terminal authentication
 * @return true, if auxiliary data was verified
 * @type boolean
 */
EAC20.prototype.verifyAuxiliaryData = function(oid) {
	var o = new ASN1(ASN1.OBJECT_IDENTIFIER, oid);
	this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x20, 0x80, 0x00, o.getBytes(), [0x9000,0x6300]);
	return this.card.SW == 0x9000;
}



/**
 * Perform chip authentication and establish a secure channel
 *
 * @param {Number} keyid the key identifier (only required for ChipAuthentication in version 1)
 * @return true, if chip authentication was successfull
 * @type boolean
 */
EAC20.prototype.performChipAuthentication = function(keyid) {
	if (typeof(this.cakeyId) != "undefined") {
		return this.performChipAuthenticationV2();
	} else {
		return this.performChipAuthenticationV1(keyid);
	}
}



/**
 * Perform restricted identification
 *
 * @param {Number} keyId restricted identification key identifier
 * @param {ByteString} sectorPublicKey the sector public key data
 * @param {Number} sectorPublicKeyIndex optional argument that allows to select a specific sector public key in the terminal certificate
 * @return the sector specific identifier
 * @type ByteString
 */
EAC20.prototype.performRestrictedIdentification = function(keyId, sectorPublicKey, sectorPublicKeyIndex) {
	var bb = new ByteBuffer();
	bb.append(new ASN1(0x80, new ByteString("id-RI-ECDH-SHA-256", OID)).getBytes());

	bb.append(new ByteString("8401", HEX));
	bb.append(keyId);

	var msedata = bb.toByteString();
	this.log("Manage SE data:");
	this.log(msedata);
	this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x41, 0xA4, msedata, [0x9000]);

	var tag = 0xA0;
	if (sectorPublicKeyIndex) {
		tag = 0xA0 + (sectorPublicKeyIndex << 1);
	}

	// ToDo change to sectorPublicKey.value
	var dado = new ASN1(0x7C, new ASN1(tag, sectorPublicKey.bytes(5)));

	this.log("GA Input: " + dado.getBytes());

	var dadobin = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x00, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000]);

	this.log(dadobin);

	var dado = new ASN1(dadobin);
	assert(dado.tag == 0x7C);
	assert(dado.elements == 1);
	var nonceDO = dado.get(0);
	assert((nonceDO.tag == 0x81) || (nonceDO.tag == 0x83));
	var sectorId = nonceDO.value;

	this.log("Sector specific identifier: " + sectorId);
	return sectorId;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview EAC2CVCertificateGenerator - Simple CV certificate generator class
 * based on "Advanced Security Mechanisms for Machine Readable Travel Documents", Version 2.0
 */

// Imports
var CVC = require('scsh/eac/CVC').CVC;
var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;



/**
 * Define a generator object for CV certificates
 *
 * @class Class implementing a generator for CV certificates according to EAC 1.1 and EAC 2.0 specifications.
 *
 * @constructor
 * @param {Crypto} crypto the crypto provider to be used
 */
function EAC2CVCertificateGenerator(crypto) {
	this.crypto = crypto;
}

exports.EAC2CVCertificateGenerator = EAC2CVCertificateGenerator;


/**
 * Convert x/y coordinates to uncompressed format
 *
 * @param {ByteString} x the x-coordinate of the point
 * @param {ByteString} y the y-coordinate of the point
 * @return the point in uncompressed format
 * @type ByteString
 */
EAC2CVCertificateGenerator.encodeUncompressedECPoint = function(x,y) {

	var bb = new ByteBuffer();

	// uncompressed encoding
	bb.append(new ByteString("04", HEX));
	bb.append(new ByteString(x, HEX));
	bb.append(new ByteString(y, HEX));

	return bb.toByteString();
}



/**
 * Decode x/y coordinates from uncompressed format
 *
 * @param {ByteString} uncompressedPoint the uncompressed point
 * @return the x-/y-coordinate of the point
 * @type ByteString
 */
EAC2CVCertificateGenerator.decodeUncompressedECPoint = function(uncompressedPoint) {

	// Determine the size of the coordinates ignoring the indicator byte '04'
	var length = uncompressedPoint.length - 1;

	var sizeOfCoordinate = length / 2;

	var xValue = uncompressedPoint.bytes(1, sizeOfCoordinate);
	var yValue = uncompressedPoint.bytes(1 + sizeOfCoordinate, sizeOfCoordinate);

	return { x:xValue, y:yValue };
}



/**
 * Convert integer to fixed length string with leading zeros.
 *
 * @private
 * @param {Number} value the value to convert to a string.
 * @param {Number} digits the number of digits in output string. Must be <= 20.
 * @return the 0-padded string
 * @type String
 */
EAC2CVCertificateGenerator.itos = function(value, digits) {
	if (digits > 20) {
		throw new Error("Digits must be <= 20");
	}
	var str = "" + value;
	str = "0000000000000000000".substr(19 - (digits - str.length)).concat(str);
	return str;
}



/**
 * Convert date to string with format YYMMDD.
 *
 * @param {Date} d the date object.
 * @return the date/time string.
 * @type String
 */
EAC2CVCertificateGenerator.dtos = function(d) {
	var s = EAC2CVCertificateGenerator.itos(d.getFullYear() % 100, 2) +
			EAC2CVCertificateGenerator.itos(d.getMonth() + 1, 2) +
			EAC2CVCertificateGenerator.itos(d.getDate(), 2);
	return s;
}



/**
 * Set the profile identifier
 *
 * @param {Number} profileID the profile identifier
 */
EAC2CVCertificateGenerator.prototype.setProfileIdentifier = function(profileID) {
	this.profileIdentifier = profileID;
}



/**
 * Set the certification authority reference
 *
 * @param {String} CAR the CAR value
 * @param {ByteString} CAR the CAR value
 * @param {PublicKeyReference} CAR the CAR value
 */
EAC2CVCertificateGenerator.prototype.setCAR = function(CAR) {
	if (CAR instanceof ByteString) {
		this.CAR = CAR;
	} else if (CAR instanceof PublicKeyReference) {
		this.CAR = CAR.getBytes();
	} else {
		this.CAR = new ByteString(CAR.toString(), ASCII);
	}
}



/**
 * Set the certificate holder reference
 *
 * @param {String} CHR the CHR value
 * @param {ByteString} CHR the CHR value
 * @param {PublicKeyReference} CHR the CHR value
 */
EAC2CVCertificateGenerator.prototype.setCHR = function(CHR) {
	if (CHR instanceof ByteString) {
		this.CHR = CHR;
	} else if (CHR instanceof PublicKeyReference) {
		this.CHR = CHR.getBytes();
	} else {
		this.CHR = new ByteString(CHR.toString(), ASCII);
	}
}



/**
 * Set the effective date
 *
 * @param {String} effectiveDate the effective date in the format YYMMDD
 * @param {Date} effectiveDate the effective date as Date object
 */
EAC2CVCertificateGenerator.prototype.setEffectiveDate = function(effectiveDate) {
	if (effectiveDate instanceof Date) {
		this.effectiveDate = EAC2CVCertificateGenerator.dtos(effectiveDate);
	} else {
		this.effectiveDate = effectiveDate;
	}
}



/**
 * Set the expiry date
 *
 * @param {String} expiryDate the expiry date in the format YYMMDD
 * @param {Date} expiryDate the expiry date as Date object
 */
EAC2CVCertificateGenerator.prototype.setExpiryDate = function(expiryDate) {
	if (expiryDate instanceof Date) {
		this.expiryDate = EAC2CVCertificateGenerator.dtos(expiryDate);
	} else {
		this.expiryDate = expiryDate;
	}
}



/**
 * Set the object identifier of the authorization template for the generated certificate
 *
 * @param {ByteString} oid the object identifier for the chat
 */
EAC2CVCertificateGenerator.prototype.setChatOID = function(oid) {
	this.chatOID = oid;
}



/**
 * Set the authorization level of the authorization template for the generated certificate
 *
 * @param {ByteString} authLevel the encoded authorization level
 */
EAC2CVCertificateGenerator.prototype.setChatAuthorizationLevel = function(authLevel) {
	this.chatAuthorizationLevel = authLevel;
}



/**
 * Set the algorithm identifier for terminal authentication
 *
 * @param {ByteString} oid the object identifier as specified in appendix A.6.4
 */
EAC2CVCertificateGenerator.prototype.setTAAlgorithmIdentifier = function(oid) {
	this.taOID = oid;
}



/**
 * Set some additional extensions
 *
 * @param {Array of ASN.1 objects} extensions array containing the ASN.1 encoded extensions for the certificate
 */
EAC2CVCertificateGenerator.prototype.setExtensions = function(extensions) {
	this.extensions = extensions;
}



/**
 * Set the public key to be included in the certificate
 *
 * @param {Key} publicKey the public key object to be certified
 */
EAC2CVCertificateGenerator.prototype.setPublicKey = function(publicKey) {
	this.publicKey = publicKey;
}



/**
 * Set whether to include domain parameters in the certificate or not
 *
 * @param {Boolean} value the flag indicator
 */
EAC2CVCertificateGenerator.prototype.setIncludeDomainParameters = function(value) {
	this.includeDomainParameters = value;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getCAR = function() {
	var t = new ASN1("Certification Authority Reference", 0x42, this.CAR);
	return t;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getCHR = function() {
	var t = new ASN1("Certification Holder Reference", 0x5F20, this.CHR);
	return t;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.convertDate = function(date) {

	var temp = new ByteString(date, ASCII);
	var bb = new ByteBuffer();
	var singleByte;

	for (var i = 0; i < temp.length; i++) {
		bb.append(temp.byteAt(i) - 0x30);
	}

	return bb.toByteString();
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getEffectiveDate = function() {
	var t = new ASN1("Certificate Effective Date", 0x5F25,
			EAC2CVCertificateGenerator.convertDate(this.effectiveDate));
	return t;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getExpiryDate = function() {
	var t = new ASN1("Certificate Expiration Date", 0x5F24,
			EAC2CVCertificateGenerator.convertDate(this.expiryDate));
	return t;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getCHAT = function() {
	var t = new ASN1("Certificate Holder Authorization Template", 0x7F4C);

	var oid = new ASN1("Object Identifier", ASN1.OBJECT_IDENTIFIER, this.chatOID);
	var authLevel = new ASN1("Authorization Level", 0x53, this.chatAuthorizationLevel);

	t.add(oid);
	t.add(authLevel);

	return t;
}



/**
 * Strips leading zeros of a ByteString
 *
 * @param {ByteString} value the ByteString value
 * @return the stripped ByteString object, may be an empty ByteString
 * @type ByteString
 */
EAC2CVCertificateGenerator.prototype.stripLeadingZeros = function(value) {
	var i = 0;
	for (; (i < value.length) && (value.byteAt(i) == 0); i++);

	return value.right(value.length - i);
}



/**
 * Get the encoded public key including domain parameters
 *
 * @private
 */
EAC2CVCertificateGenerator.prototype.getPublicKey = function() {

	var t = new ASN1("Public Key", 0x7F49);
	t.add(new ASN1("Object Identifier", 0x06, this.taOID));

	if (typeof(this.publicKey.getComponent(Key.ECC_P)) != "undefined") {
		if (this.includeDomainParameters == true) {

			t.add(new ASN1("Prime Modulus", 0x81, this.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_P))));
			t.add(new ASN1("First coefficient a", 0x82, this.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_A))));
			t.add(new ASN1("Second coefficient b", 0x83, this.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_B))));

			t.add(new ASN1("Base Point G", 0x84, EAC2CVCertificateGenerator.encodeUncompressedECPoint(this.publicKey.getComponent(Key.ECC_GX), this.publicKey.getComponent(Key.ECC_GY))));

			t.add(new ASN1("Order of the base point", 0x85, this.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_N))));
		}

		t.add(new ASN1("Public Point y", 0x86, EAC2CVCertificateGenerator.encodeUncompressedECPoint(this.publicKey.getComponent(Key.ECC_QX), this.publicKey.getComponent(Key.ECC_QY))));

		if (this.includeDomainParameters == true) {
			t.add(new ASN1("Cofactor f", 0x87, this.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_H))));
		}
	} else {
		t.add(new ASN1("Composite Modulus", 0x81, this.stripLeadingZeros(this.publicKey.getComponent(Key.MODULUS))));
		t.add(new ASN1("Public Exponent", 0x82, this.stripLeadingZeros(this.publicKey.getComponent(Key.EXPONENT))));
	}

	return t;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getProfileIdentifier = function() {

	var bb = new ByteBuffer();
	bb.append(this.profileIdentifier);

	var t = new ASN1("Certificate Profile Identifier", 0x5F29, bb.toByteString());
	return t;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getExtensions = function() {
	var t = new ASN1("Certificate Extensions", 0x65);
	for (var i = 0; i < this.extensions.length; i++)
		t.add(this.extensions[i]);
	return t;
}



/**
 * Internal functions for the generation of a certificate
 * @private
 */
EAC2CVCertificateGenerator.prototype.getCertificateBody = function() {

	var t = new ASN1("Certificate Body", 0x7F4E);

	t.add(this.getProfileIdentifier());

	t.add(this.getCAR());

	t.add(this.getPublicKey());

	t.add(this.getCHR());

	t.add(this.getCHAT());

	t.add(this.getEffectiveDate());

	t.add(this.getExpiryDate());

	if (this.extensions) {
		t.add(this.getExtensions());
	}

	return t;
}



/**
 * Generate a certificate based on the parameter set using the setter methods.
 *
 * @param {Key} signingKey the key to be used for signing the certificate
 * @param {ByteString} taOID the object identifier associated with the signing key
 * @return the CVC certificate
 * @type CVC
 */
EAC2CVCertificateGenerator.prototype.generateCVCertificate = function(signingKey, outertaOID) {

	var certificate = new ASN1("CV Certificate", 0x7F21);

	var body = this.getCertificateBody();

	if (typeof(outertaOID) == "undefined") {
		outertaOID = this.taOID;
	}
	var mech = CVC.getSignatureMech(outertaOID);
	var signature = this.crypto.sign(signingKey, mech, body.getBytes());

	if (CVC.isECDSA(outertaOID)) {
		var keylen = (signingKey.getSize() + 7) >> 3;
		var signatureValue = new ASN1("Signature", 0x5F37, CVC.unwrapSignature(signature, keylen));
	} else {
		var signatureValue = new ASN1("Signature", 0x5F37, signature);
	}

	certificate.add(body);

	certificate.add(signatureValue);

	return new CVC(certificate);
}



EAC2CVCertificateGenerator.test = function() {
	var test = function(crypto, priKey, pubKey, taOID) {
		generator = new EAC2CVCertificateGenerator(crypto);

		var CAR = "decvca00000";
		generator.setCAR(CAR);

		var CHR = "decvca00000";
		generator.setCHR(CHR);

		generator.setEffectiveDate(new Date());

		var notAfter = "110225";
		generator.setExpiryDate(notAfter);

		var chatOID = "0.4.0.127.0.7.3.1.2.1"; // inspection system
		generator.setChatOID(new ByteString(chatOID, OID));

		var chatAuth = "E3"; // CVCA, read access to eID, DG3, DG4

		generator.setChatAuthorizationLevel(new ByteString(chatAuth, HEX));

		generator.setPublicKey(pubKey);

		var profileIdentifier = 0x00;

		generator.setProfileIdentifier(profileIdentifier);

		generator.setTAAlgorithmIdentifier(taOID);

		//var extensions = new Array();
		//extensions[0] = new ASN1("ext1", ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX));
		//extensions[1] = new ASN1("ext2", ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX));

		//generator.setExtensions(extensions);

		generator.setIncludeDomainParameters(true);

		var cvc = generator.generateCVCertificate(priKey, taOID);
		GPSystem.trace(cvc);

		GPSystem.trace(new ASN1(cvc.getBytes()));
		cvc.verifyWith(crypto, cvc.getPublicKey(), cvc.getPublicKeyOID());
	}

	var crypto = new Crypto();

	var priKey = new Key();
	var pubKey = new Key();
	priKey.setType(Key.PRIVATE);
	pubKey.setType(Key.PUBLIC);
	priKey.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256t1", OID));
	pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256t1", OID));
	crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

	test(crypto, priKey, pubKey, new ByteString("id-TA-ECDSA-SHA-256", OID));


	var priKey = new Key();
	var pubKey = new Key();
	priKey.setType(Key.PRIVATE);
	pubKey.setType(Key.PUBLIC);
	priKey.setComponent(Key.ECC_CURVE_OID, new ByteString("secp521r1", OID));
	pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("secp521r1", OID));
	crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

	test(crypto, priKey, pubKey, new ByteString("id-TA-ECDSA-SHA-512", OID));


	var priKey = new Key();
	var pubKey = new Key();
	priKey.setType(Key.PRIVATE);
	pubKey.setType(Key.PUBLIC);
	pubKey.setSize(1024);
	crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

	test(crypto, priKey, pubKey, new ByteString("id-TA-RSA-v1-5-SHA-256", OID));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of Simple CV request generator based on
 * TR-03110 "Advanced Security Mechanisms for Machine Readable Travel Documents", Version 2.0
 *
 */

// Imports
var CVC = require('scsh/eac/CVC').CVC;
var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;



/**
 * Constructor for request generator
 *
 * @class Class implementing a generator for CVC requests
 *
 * @constructor
 * @param {Crypto} Crypto object to use
 */
function EAC2CVRequestGenerator(crypto) {
	this.crypto = crypto;
}

exports.EAC2CVRequestGenerator = EAC2CVRequestGenerator;



/*
 * Convert x/y coordinates to uncompressed format
 *
 * x/y - coordinates of EC point
 *
 * return ByteString containing compressed format
 *
 * TODO: Move to ECUtils
 */
EAC2CVRequestGenerator.encodeUncompressedECPoint = function(x, y) {

    var bb = new ByteBuffer();

    // uncompressed encoding
    bb.append(new ByteString("04", HEX));
    bb.append(new ByteString(x, HEX));
    bb.append(new ByteString(y, HEX));

    return bb.toByteString();
}



/**
 * Strips leading zeros of a ByteString
 *
 * @param {ByteString} value the ByteString value
 * @return the stripped ByteString object, may be an empty ByteString
 * @type ByteString
 *
 * TODO: Move to Utils
 */
EAC2CVRequestGenerator.stripLeadingZeros = function(value) {
	var i = 0;
	for (; (i < value.length) && (value.byteAt(i) == 0); i++);

	return value.right(value.length - i);
}



/**
 * Set the public key that should be encoded within the request
 *
 * @param {Key} publicKey Public Key
 */
EAC2CVRequestGenerator.prototype.setPublicKey = function(publicKey) {
	this.publicKey = publicKey;
}



/**
 * Set the certficate holder reference (CHR) for the request
 *
 * @param {String} chr CHR for the request
 */
EAC2CVRequestGenerator.prototype.setCHR = function(chr) {
	if (chr instanceof ByteString) {
		this.CHR = chr;
	} else if (chr instanceof PublicKeyReference) {
		this.CHR = chr.getBytes();
	} else {
		this.CHR = new ByteString(chr.toString(), ASCII);
	}
}



/**
 * Reset the current generator object
 *
 * TODO: Implement me
 */
EAC2CVRequestGenerator.prototype.reset = function() {
}



/**
 * Set the certificate profile identifier (CPI) for the request
 *
 * @param {Number} profileID CPI for the request
 */
EAC2CVRequestGenerator.prototype.setProfileIdentifier = function(profileID) {
	this.profileIdentifier = profileID;
}



/**
 * Set the certficate authorization reference (CAR) for the request
 *
 * The usage of this method is optional - if no CAR is set, there will be no
 * "inner" CAR included within the certficate request
 *
 * @param {String} car CAR for the request
 */
EAC2CVRequestGenerator.prototype.setCAR = function(car) {
	if (car instanceof ByteString) {
		this.CAR = car;
	} else if (car instanceof PublicKeyReference) {
		this.CAR = car.getBytes();
	} else {
		this.CAR = new ByteString(car.toString(), ASCII);
	}
}



/**
 * Set the extension values that should be included within the request
 *
 * @param {ByteString[]} extensions Array of DER-encoded extensions
 */
EAC2CVRequestGenerator.prototype.setExtensions = function(extensions) {
	this.extensions = extensions;
}



/**
 * Set the object identifier that should be included in the public key domain parameters
 *
 * @param {ByteString} oid Object identifier as specified in appendix A.6.4
 */
EAC2CVRequestGenerator.prototype.setTAAlgorithmIdentifier = function(oid) {
	this.taOID = oid;
}



/**
 * Get the CAR as ByteString object
 *
 * @private
 */
EAC2CVRequestGenerator.prototype.getCAR = function() {
	var t = new ASN1("Certification Authority Reference", 0x42, this.CAR);
	return t;
}



/**
 * Get the CHR as ByteString object
 *
 * @private
 */
EAC2CVRequestGenerator.prototype.getCHR = function() {
	var t = new ASN1("Certification Holder Reference", 0x5F20, this.CHR);
	return t;
}



/**
 * Get the encoded public key including domain parameters
 *
 * @private
 */
EAC2CVRequestGenerator.prototype.getPublicKey = function() {

	var t = new ASN1("Public Key", 0x7F49);
	t.add(new ASN1("Object Identifier", 0x06, this.taOID));

	if (typeof(this.publicKey.getComponent(Key.ECC_P)) != "undefined") {
		t.add(new ASN1("Prime Modulus", 0x81, EAC2CVRequestGenerator.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_P))));
		t.add(new ASN1("First coefficient a", 0x82, EAC2CVRequestGenerator.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_A))));
		t.add(new ASN1("Second coefficient b", 0x83, EAC2CVRequestGenerator.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_B))));
		t.add(new ASN1("Base Point G", 0x84, EAC2CVRequestGenerator.encodeUncompressedECPoint(this.publicKey.getComponent(Key.ECC_GX), this.publicKey.getComponent(Key.ECC_GY))));
		t.add(new ASN1("Order of the base point", 0x85, EAC2CVRequestGenerator.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_N))));

		t.add(new ASN1("Public Point y", 0x86, EAC2CVRequestGenerator.encodeUncompressedECPoint(this.publicKey.getComponent(Key.ECC_QX), this.publicKey.getComponent(Key.ECC_QY))));

		t.add(new ASN1("Cofactor f", 0x87, EAC2CVRequestGenerator.stripLeadingZeros(this.publicKey.getComponent(Key.ECC_H))));
	} else {
		t.add(new ASN1("Composite Modulus", 0x81, EAC2CVRequestGenerator.stripLeadingZeros(this.publicKey.getComponent(Key.MODULUS))));
		t.add(new ASN1("Public Exponent", 0x82, EAC2CVRequestGenerator.stripLeadingZeros(this.publicKey.getComponent(Key.EXPONENT))));
	}

	return t;
}



/**
 * Get the encoded CPI as ByteString
 *
 * @private
 */
EAC2CVRequestGenerator.prototype.getProfileIdentifier = function() {
	var bb = new ByteBuffer();
	bb.append(this.profileIdentifier);

	var t = new ASN1("Certificate Profile Identifier", 0x5F29, bb.toByteString());
	return t;
}



/**
 * Get the DER-encoded extension vector
 *
 * @private
 */
EAC2CVRequestGenerator.prototype.getExtensions = function() {
	var t = new ASN1("Certificate Extensions", 0x65);
	for (var i = 0; i < this.extensions.length; i++)
		t.add(this.extensions[i]);
	return t;
}



/**
 * Get the encoded certificate request body
 *
 * @private
 */
EAC2CVRequestGenerator.prototype.getCertificateBody = function() {

	var t = new ASN1("Certificate Body", 0x7F4E);
	t.add(this.getProfileIdentifier());

	if (this.CAR) {
		t.add(this.getCAR());
	}

	t.add(this.getPublicKey());
	t.add(this.getCHR());

	if (this.extensions) {
		t.add(this.getExtensions());
	}
	return t;
}



/**
 * Generate initial certificate request using the specified private key for signing
 *
 * @param {Key} privateKey Private key for signature creation
 * @return The DER-encoded CV request
 * @type ASN1
 */
EAC2CVRequestGenerator.prototype.generateCVRequest = function(privateKey) {
	var request = new ASN1("CV Certificate", 0x7F21);

	var body = this.getCertificateBody();

	request.add(body);

	var mech = CVC.getSignatureMech(this.taOID);
	var signature = this.crypto.sign(privateKey, mech, body.getBytes());
	if (CVC.isECDSA(this.taOID)) {
		var keylen = (privateKey.getSize() + 7) >> 3;
		var signatureValue = new ASN1("Signature", 0x5F37, CVC.unwrapSignature(signature, keylen));
	} else {
		var signatureValue = new ASN1("Signature", 0x5F37, signature);
	}

	request.add(signatureValue);

	return request;
}



/**
 * Countersign request
 *
 * @param {Crypto} crypto the crypto provide to use for signing the request
 * @param {CVC} request the self-signed request
 * @param {Key} authenticationKey Private key for used for signing and authenticating the request
 * @param {PublicKeyReference} authCHR CHR of the authenticating authority
 * @param {ByteString} taOID the public key object identifier of the authentication key
 *
 * @return The DER-encoded authenticated CV request
 * @type ASN1
 */
EAC2CVRequestGenerator.signAuthenticatedCVRequest = function(crypto, request, authenticationKey, authCHR, outertaOID) {
	var authRequest = new ASN1("Authentication", 0x67);

	var chr = new ASN1("Certification Authority Reference", 0x42, authCHR.getBytes());

	var signatureInput = request.getBytes().concat(chr.getBytes());

	var mech = CVC.getSignatureMech(outertaOID);
	var signature = crypto.sign(authenticationKey, mech, signatureInput);

	if (CVC.isECDSA(outertaOID)) {
		var keylen = authenticationKey.getSize() >> 3;
		var signatureValue = new ASN1("Signature", 0x5F37, CVC.unwrapSignature(signature, keylen));
	} else {
		var signatureValue = new ASN1("Signature", 0x5F37, signature);
	}

	authRequest.add(request);
	authRequest.add(chr);
	authRequest.add(signatureValue);

	return authRequest;
}



/**
 * Generate authenticated request
 *
 * @param {Key} requestKey Private key for the request signature
 * @param {Key} authenticationKey Private key for used for signing and authenticating the request
 * @param {PublicKeyReference} authCHR CHR of the authenticating authority
 * @param {ByteString} taOID the public key object identifier of the authentication key
 *
 * @return The DER-encoded authenticated CV request
 * @type ASN1
 */
EAC2CVRequestGenerator.prototype.generateAuthenticatedCVRequest = function(requestKey, authenticationKey, authCHR, outertaOID) {

	var request = this.generateCVRequest(requestKey);

	if (typeof(outertaOID) == "undefined") {
		outertaOID = this.taOID;
	}
	return EAC2CVRequestGenerator.signAuthenticatedCVRequest(this.crypto, request, authenticationKey, authCHR, outertaOID);
}



EAC2CVRequestGenerator.test = function() {
	var test = function(crypto, priKey, pubKey, taOID) {
		var reqGenerator = new EAC2CVRequestGenerator(crypto);

		// Set CPI
		reqGenerator.setProfileIdentifier(0x00);

		// Set "inner" CAR
		var CAR = "decvca00000";
		reqGenerator.setCAR(CAR);

		// Set public key for request
		reqGenerator.setPublicKey(pubKey);

		// Set oid of algorithm
		reqGenerator.setTAAlgorithmIdentifier(taOID);

		// Set some dummy extensions
		var ext1 = new ASN1("ext1", new ByteString("06022A11", HEX));
		var ext2 = new ASN1("ext2", new ByteString("06022A12", HEX));
		reqGenerator.setExtensions([ext1, ext2]);

		// Set CHR for the request
		var CHR = "dedvca00001";
		reqGenerator.setCHR(CHR);

		// Generate the request
		var req = reqGenerator.generateAuthenticatedCVRequest(priKey, priKey, new PublicKeyReference("dedvca00000"), taOID);
		GPSystem.trace(req);

		var cvreq = new CVC(req);
		GPSystem.trace(cvreq);

		assert(cvreq.verifyWith(crypto, pubKey, taOID));
		assert(cvreq.verifyATWith(crypto, pubKey, taOID));
	}

	var crypto = new Crypto();

	var priKey = new Key();
	var pubKey = new Key();
	priKey.setType(Key.PRIVATE);
	pubKey.setType(Key.PUBLIC);
	priKey.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256t1", OID));
	pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256t1", OID));
	crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

	test(crypto, priKey, pubKey, new ByteString("id-TA-ECDSA-SHA-256", OID));


	var priKey = new Key();
	var pubKey = new Key();
	priKey.setType(Key.PRIVATE);
	pubKey.setType(Key.PUBLIC);
	priKey.setComponent(Key.ECC_CURVE_OID, new ByteString("secp521r1", OID));
	pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("secp521r1", OID));
	crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

	test(crypto, priKey, pubKey, new ByteString("id-TA-ECDSA-SHA-512", OID));


	var priKey = new Key();
	var pubKey = new Key();
	priKey.setType(Key.PRIVATE);
	pubKey.setType(Key.PUBLIC);
	pubKey.setSize(1024);
	crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

	test(crypto, priKey, pubKey, new ByteString("id-TA-RSA-v1-5-SHA-256", OID));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A card verifiable certificate store using a PKCS#11 device as key store
 */

// Imports

var PublicKeyReference	 = require('scsh/eac/PublicKeyReference').PublicKeyReference;
var CVC			 = require('scsh/eac/CVC').CVC;
var CVCertificateStore	 = require('scsh/eac/CVCertificateStore').CVCertificateStore;
var CVCCA		 = require('scsh/eac/CVCCA').CVCCA;



/**
 * Create a CV certificate store using a PKCS#11 device as secure key store
 *
 * @class CV certificate store with PKCS#11 as secure key store
 * @constructor
 * @param {DAOFactory} daof the factory that can create data access objects for persistent information
 * @param {PKCS11Session} p11session logged in PKCS#11 session with device
 */
function P11CVCertificateStore(daof, p11session) {
	CVCertificateStore.call(this, daof);
	this.p11session = p11session;
	this.crypto = new P11Crypto(p11session);
}

P11CVCertificateStore.prototype = Object.create(CVCertificateStore.prototype);
P11CVCertificateStore.constructor = P11CVCertificateStore;

exports.P11CVCertificateStore = P11CVCertificateStore;



/**
 * Get crypto object
 *
 * @type HSMCrypto
 * @return the HSMCrypto object
 */
P11CVCertificateStore.prototype.getCrypto = function() {
	return this.crypto;
}



/**
 * Transform path and certificate holder into a label
 *
 * @param {String} path the path
 * @param {PublicKeyReference} chr the certificate holder reference
 * @type String
 * @return the key label
 */
P11CVCertificateStore.path2label = function(path, chr) {
	return path.substr(1) + chr.getSequenceNo();
}



/**
 * Get a private key in the certificate store. Overrides method in CVCertificateStore.
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @returns the private key or null if not found
 * @type Key
 */
P11CVCertificateStore.prototype.getPrivateKey = function(path, car) {
	var label = P11CVCertificateStore.path2label(path, car);

	var attr = new Array();
	attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_PRIVATE_KEY;
	attr[PKCS11Object.CKA_LABEL] = new ByteString(label, ASCII);
	var o = this.p11session.enumerateObjects(attr);

	print(o.length);
	for (var i = 0; i < o.length; i++) {
		print(o[i].getAttribute(PKCS11Object.CKA_LABEL));
	}
	if (o.length == 0) {
		return null;
	}

	if (o.length != 1) {
		throw new GPError("P11CVCertificateStore", GPError.INVALID_ARGUMENT, o.length, "Duplicate key with label " + label + " found");
	}

	var p11key = o[0];

	var key = new Key();
	key.setType(Key.PRIVATE);

	var curve = p11key.getAttribute(PKCS11Object.CKA_EC_PARAMS);
	if (curve) {
		var a = new ASN1(curve);

		key.setComponent(Key.ECC_CURVE_OID, a.value);
	}
	key.p11 = p11key;
	return key;
}



/**
 * Determine curve from key parameter
 *
 * @param {Key} key the key
 * @type ByteString
 * @return the curve OID
 */
P11CVCertificateStore.determineCurve = function(key) {
	var curves = [
		new ByteString("brainpoolP192r1", OID),
		new ByteString("brainpoolP224r1", OID),
		new ByteString("brainpoolP256r1", OID),
		new ByteString("brainpoolP384r1", OID),
		new ByteString("brainpoolP512r1", OID)
	];

	if (key.getComponent(Key.ECC_CURVE_OID)) {
		return key.getComponent(Key.ECC_CURVE_OID);
	}

	for (var i = 0; i < curves.length; i++) {
		var spec = new Key();
		spec.setComponent(Key.ECC_CURVE_OID, curves[i]);
		if (key.getComponent(Key.ECC_P).equals(spec.getComponent(Key.ECC_P))) {
			return curves[i];
		}
	}
	throw new GPError("P11CVCertificateStore", GPError.INVALID_ARGUMENT, 0, "Unknown curve");
}



/**
 * Generate key pair
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key pair
 * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
 * @param {Key} prk the private key template
 * @param {Key} puk the public key template
 */
P11CVCertificateStore.prototype.generateKeyPair = function(path, chr, algo, prk, puk) {
	var label = P11CVCertificateStore.path2label(path, chr);

	label = new ByteString(label, ASCII);

	var priAttr = new Array();
	priAttr[PKCS11Object.CKA_TOKEN] = true;
	priAttr[PKCS11Object.CKA_SIGN] = true;
	priAttr[PKCS11Object.CKA_SENSITIVE] = true;
	priAttr[PKCS11Object.CKA_PRIVATE] = true;
	priAttr[PKCS11Object.CKA_LABEL] = label;

	var pubAttr = new Array();
	pubAttr[PKCS11Object.CKA_TOKEN] = true;
	pubAttr[PKCS11Object.CKA_VERIFY] = true;
	pubAttr[PKCS11Object.CKA_LABEL] = label;

	if (algo == Crypto.RSA) {
		pubAttr[PKCS11Object.CKA_MODULUS_BITS] = puk.getSize();
		pubAttr[PKCS11Object.CKA_PUBLIC_EXPONENT] = new ByteString("010001", HEX);
		var keys = this.p11session.generateKeyPair(PKCS11Session.CKM_RSA_PKCS_KEY_PAIR_GEN, null, pubAttr, priAttr);

		var value = keys[0].getAttribute(PKCS11Object.CKA_VALUE);
		var pk = new ASN1(value);
		print(pk);
		puk.setComponent(Key.MODULUS, pk.get(0).value.right(puk.getSize() >> 3));
		puk.setComponent(Key.EXPONENT, pk.get(1).value);
	} else {
		var curve = P11CVCertificateStore.determineCurve(puk);
		var curveasn = new ASN1(ASN1.OBJECT_IDENTIFIER, curve);

		pubAttr[PKCS11Object.CKA_EC_PARAMS] = curveasn.getBytes();
		var keys = this.p11session.generateKeyPair(PKCS11Session.CKM_EC_KEY_PAIR_GEN, null, pubAttr, priAttr);

		var value = keys[0].getAttribute(PKCS11Object.CKA_VALUE);
		var pk = new ASN1(value);
		var point = pk.value.bytes(1);

		prk.setComponent(Key.ECC_CURVE_OID, curve);
		puk.setComponent(Key.ECC_QX, point.left(point.length >> 1));
		puk.setComponent(Key.ECC_QY, point.right(point.length >> 1));
	}

	puk.p11 = keys[0];
	prk.p11 = keys[1];
}



function P11Crypto(p11session) {
	this.p11session = p11session;
	this.crypto = new Crypto();
}



P11Crypto.prototype.sign = function(key, mech, data, iv) {
	var ckm_sign = 0;
	var mech_hash = 0;
	var wrap = false;

	switch(mech) {
		case Crypto.ECDSA_SHA1:
			ckm_sign = PKCS11Session.CKM_ECDSA;
			mech_hash = Crypto.SHA_1;
			wrap = true;
			break;
		case Crypto.ECDSA_SHA224:
			ckm_sign = PKCS11Session.CKM_ECDSA;
			mech_hash = Crypto.SHA_224;
			wrap = true;
			break;
		case Crypto.ECDSA_SHA256:
			ckm_sign = PKCS11Session.CKM_ECDSA;
			mech_hash = Crypto.SHA_256;
			wrap = true;
			break;
		case Crypto.ECDSA_SHA384:
			ckm_sign = PKCS11Session.CKM_ECDSA;
			mech_hash = Crypto.SHA_384;
			wrap = true;
			break;
		case Crypto.ECDSA_SHA512:
			ckm_sign = PKCS11Session.CKM_ECDSA;
			mech_hash = Crypto.SHA_512;
			wrap = true;
			break;
		case Crypto.ECDSA:
			ckm_sign = PKCS11Session.CKM_ECDSA;
			wrap = true;
			break;
		case Crypto.RSA_SHA1:
			ckm_sign = PKCS11Session.CKM_SHA1_RSA_PKCS;
			break;
		case Crypto.RSA_SHA256:
			ckm_sign = PKCS11Session.CKM_SHA256_RSA_PKCS;
			break;
		case Crypto.RSA_SHA512:
			ckm_sign = PKCS11Session.CKM_SHA512_RSA_PKCS;
			break;
		case Crypto.RSA_PSS_SHA1:
			ckm_sign = PKCS11Session.CKM_SHA1_RSA_PKCS_PSS;
			break;
		case Crypto.RSA_PSS_SHA256:
			ckm_sign = PKCS11Session.CKM_SHA256_RSA_PKCS_PSS;
			break;
		case Crypto.RSA_PSS_SHA512:
			ckm_sign = PKCS11Session.CKM_SHA512_RSA_PKCS_PSS;
			break;
		default:
			throw new GPError("P11Crypto", GPError.INVALID_ARGUMENT, 2, "Unsupported mechanism");
	}

	if (mech_hash) {
		data = this.crypto.digest(mech_hash, data);
	}

	// Test with single step C_Sign
	this.p11session.signInit(ckm_sign, key.p11);

	var signature = this.p11session.sign(data);

	if (wrap) {
		signature = CVC.wrapSignature(signature);
	}

	return signature;
}



P11Crypto.prototype.verify = function(key, mech, data, sig) {
	return this.crypto.verify(key, mech, data, sig);
}



P11CVCertificateStore.testPath = GPSystem.mapFilename("testca", GPSystem.CWD);

P11CVCertificateStore.test = function() {
	var p = new PKCS11Provider("/usr/local/lib/opensc-pkcs11.so");

	try	{
		var slots = p.getSlots();
		print(slots);
		var slot = slots[1];

		print("Using slot: " + slot.getId());

		// Open R/W session
		var s = new PKCS11Session(p, slot.getId(), true);

		// Login with USER PIN
		s.login("648219");

		var cs = new P11CVCertificateStore(P11CVCertificateStore.testPath + "/cvca", s);

		var crypto = cs.getCrypto();

		var prk = new Key();
		prk.setType(Key.PRIVATE);
		prk.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
		var puk = new Key();
		puk.setType(Key.PUBLIC);
		puk.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));

		var chr = new PublicKeyReference("DE00001");
		cs.generateKeyPair("/test", chr, Crypto.ECC, prk, puk);
		var msg = new ByteString("Hello World", ASCII);

		var sig = crypto.sign(prk, Crypto.ECDSA_SHA1, msg);
		assert(crypto.verify(puk, Crypto.ECDSA_SHA1, msg, sig));

		var sig = crypto.sign(prk, Crypto.ECDSA_SHA224, msg);
		assert(crypto.verify(puk, Crypto.ECDSA_SHA224, msg, sig));

		var sig = crypto.sign(prk, Crypto.ECDSA_SHA256, msg);
		assert(crypto.verify(puk, Crypto.ECDSA_SHA256, msg, sig));

		var sig = crypto.sign(prk, Crypto.ECDSA_SHA384, msg);
		assert(crypto.verify(puk, Crypto.ECDSA_SHA384, msg, sig));

		var sig = crypto.sign(prk, Crypto.ECDSA_SHA512, msg);
		assert(crypto.verify(puk, Crypto.ECDSA_SHA512, msg, sig));


		var cvca = new CVCCA(crypto, cs, null, null, "/UTCVCA");

		// Create a new request
		var car = new PublicKeyReference("UTCVCA00000");

		var req = cvca.generateRequest(car, false);
		print("Request: " + req);
		print(req.getASN1());

		assert(req.verifyWith(crypto, req.getPublicKey()));

		// Create self-signed or link certificate based on request
		var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
		var cert = cvca.generateCertificate(req, policy);
		print("Certificate: " + cert);
		print(cert.getASN1());

		// Import certificate into store, making it the most current certificate
		cvca.storeCertificate(cert);

		// Generate additional self-signed root certificate
		// This must be done after the link certificate has been imported
		var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
		var cert = cvca.generateCertificate(req, policy);
		print("Certificate: " + cert);
		print(cert.getASN1());

		// Import certificate into store, making it the most current certificate
		cvca.storeCertificate(cert);
	}
	finally {
		p.cleanup();
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of the PACE/SAC protocol for both card and terminal
 */



/**
 * Create a PACEInfo object
 *
 * @class <p>This class encodes and decodes PACEInfo objects.</p>
 * <p>The class implements the following ASN.1 syntax:</p>
 * <pre>
 * PACEInfo ::= SEQUENCE {
 * 		protocol	OBJECT IDENTIFIER,
 * 		version INTEGER, -- MUST be 1 or 2
 * 		parameterId INTEGER OPTIONAL
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the optional tlv structure to initialize the object
 */
function PACEInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 2);

		var i = 0;
		var t = tlv.get(i++);
		assert(t.tag == ASN1.OBJECT_IDENTIFIER);
		this.protocol = t.value;

		var t = tlv.get(i++);
		assert(t.tag == ASN1.INTEGER);
		this.version = t.value.toSigned();

		if (i < tlv.elements) {
			var t = tlv.get(i++);
			assert(t.tag == ASN1.INTEGER);
			this.parameterId = t.value.toSigned();
		}
	}
}

exports.PACEInfo = PACEInfo;



/**
 * Convert object to TLV structure
 *
 * @return the TLV structure
 * @type ASN1
 */
PACEInfo.prototype.toTLV = function() {
	var t = new ASN1(ASN1.SEQUENCE);

	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, this.protocol));

	var bb = new ByteBuffer();
	bb.append(this.version);
	t.add(new ASN1(ASN1.INTEGER, bb.toByteString()));

	if (typeof(this.parameterId) != "undefined") {
		var bb = new ByteBuffer();
		bb.append(this.parameterId);
		t.add(new ASN1(ASN1.INTEGER, bb.toByteString()));
	}
	return t;
}



PACEInfo.prototype.toString = function() {
	return "PACEInfo(protocol=" + this.protocol + ", version=" + this.version + ", parameterId=" + this.parameterId + ")";
}



/**
 * Create a PACEDomainParameterInfo object
 *
 * @class <p>This class encodes and decodes PACEDomainParameterInfo objects.</p>
 * <p>The class implements the following ASN.1 syntax:</p>
 * <pre>
 *   PACEDomainParameterInfo ::= SEQUENCE {
 *   	protocol OBJECT IDENTIFIER(id-PACE-DH | id-PACE-ECDH),
 *   	domainParameter AlgorithmIdentifier,
 *   	parameterId INTEGER OPTIONAL
 *   }
 * </pre>
 * @constructor
 * @param {ASN1} the optional tlv structure to initialize the object
 */
function PACEDomainParameterInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 2);

		var i = 0;
		var t = tlv.get(i++);
		assert(t.tag == ASN1.OBJECT_IDENTIFIER);
		this.protocol = t.value;

		var t = tlv.get(i++);
		assert(t.tag == ASN1.SEQUENCE);

		if (t.elements > 0) {
			this.domainParameter = ECCUtils.decodeECParameters(t.get(1));
		} else {
			this.domainParameter = new Key();
			this.domainParameter.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
		}

		if (i < tlv.elements) {
			var t = tlv.get(i++);
			assert(t.tag == ASN1.INTEGER);
			this.parameterId = t.value.toSigned();
		}

	}
}

exports.PACEDomainParameterInfo = PACEDomainParameterInfo;



/**
 * Convert object to TLV structure
 *
 * @return the TLV structure
 * @type ASN1
 */
PACEDomainParameterInfo.prototype.toTLV = function() {
	var t = new ASN1(ASN1.SEQUENCE);

	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, this.protocol));

	var c = new ASN1(ASN1.SEQUENCE);
	if (this.standardizedDomainParameter) {
		c.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("standardizedDomainParameter", OID)));
		c.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(this.standardizedDomainParameter)));
	} else {

	}
	t.add(c);

	if (typeof(this.parameterId) != "undefined") {
		var bb = new ByteBuffer();
		bb.append(this.parameterId);
		t.add(new ASN1(ASN1.INTEGER, bb.toByteString()));
	}
	return t;
}



PACEDomainParameterInfo.getStandardizedDomainParameter = function(id) {
	var key = new Key();
	key.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
	return key;
}



PACEDomainParameterInfo.prototype.toString = function() {
	return "PACEDomainParameterInfo(protocol=" + this.protocol + ", parameterId=" + this.parameterId + ")";
}



/**
 * Create a PACE protocol object
 *
 * @class This class implements the PACE protocol
 *
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider
 * @param {ByteString} algo the algorithm OID
 * @param {Key} domainparam the key object holding ECC domain parameter
 * @param {Number} version protocol version (1 or 2)
 */
function PACE(crypto, algo, domparam, version) {
	this.crypto = crypto;
	this.algo = algo.toString(OID);
	this.domparam = domparam;

	if (typeof(version) != "undefined") {
		this.version = version;
	} else {
		this.version = 1;
	}

	if (this.algo == PACE.id_PACE_ECDH_GM_3DES_CBC_CBC) {
		this.symalgo = Key.DES;
	} else {
		this.symalgo = Key.AES;
	}

	this.sym = Crypto.AES;
}

exports.PACE = PACE;



/**
 * Return algorithm type
 *
 * @type Number
 * @returns Either Key.DES or Key.AES
 */
PACE.prototype.getSymmetricAlgorithm = function() {
	return this.symalgo;
}



/**
 * Derive key from input parameter, counter and optional nonce
 *
 * @param {ByteString} input the first part of the hash input
 * @param {Number} counter the counter value
 * @param {nonce} the optional nonce inserted between the input and the counter
 * @return the key object
 * @type Key
 */
PACE.prototype.deriveKey = function(input, counter, nonce) {
	if (typeof(nonce) != "undefined") {
		input = input.concat(nonce);
	}

	var bb = new ByteBuffer("000000", HEX);
	bb.append(counter);

	input = input.concat(bb.toByteString());

	var key = new Key();

	if (this.algo == PACE.id_PACE_ECDH_GM_3DES_CBC_CBC) {
		var digest = this.crypto.digest(Crypto.SHA_1, input);
		key.setComponent(Key.DES, digest.left(16));
	} else if (this.algo == PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_128) {
		var digest = this.crypto.digest(Crypto.SHA_1, input);
		key.setComponent(Key.AES, digest.left(16));
	} else if (this.algo == PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_192) {
		var digest = this.crypto.digest(Crypto.SHA_256, input);
		key.setComponent(Key.AES, digest.left(24));
	} else if (this.algo == PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_256) {
		var digest = this.crypto.digest(Crypto.SHA_256, input);
		key.setComponent(Key.AES, digest);
	} else {
		throw new GPError("pace", GPError.INVALID_MECH, 0x6A80, "Algorithm not supported");
	}
	return key;
}



/**
 * Set the password and derive the PACE key.
 * @param {ByteString} pwd the PACE password (Hash Value for MRZ and ASCII string for others)
 * @return the PACE key.
 */
PACE.prototype.setPassword = function(pwd) {
	this.pacekey = this.deriveKey(pwd, 3);
}



/**
 * Set the PACE key.
 * @param {ByteString} key the PACE key
 * @return the PACE key.
 */
PACE.prototype.setPACEKey = function(key) {
	this.pacekey = key;
}



/**
 * Generate nonce and encrypt using PACE key.
 * @return the encrypted nonce
 * @type ByteString
 */
PACE.prototype.getEncryptedNonce = function() {
	this.nonce = this.crypto.generateRandom(16);
	if (this.symalgo == Key.DES) {
		var encnonce = this.crypto.encrypt(this.pacekey, Crypto.DES_CBC, this.nonce);
	} else {
		var encnonce = this.crypto.encrypt(this.pacekey, Crypto.AES_ECB, this.nonce);
	}
	return encnonce;
}



/**
 * Decrypt and store nonce using PACE key.
 *
 * @param {ByteString} nonce the encrypted nonce
 */
PACE.prototype.decryptNonce = function(encnonce) {
	if (this.symalgo == Key.DES) {
		this.nonce = this.crypto.decrypt(this.pacekey, Crypto.DES_CBC, encnonce);
	} else {
		this.nonce = this.crypto.decrypt(this.pacekey, Crypto.AES_ECB, encnonce);
	}
}



/**
 * Returns true, if the nonce is known.
 * @return true if the nonce is known
 * @type Boolean
 */
PACE.prototype.hasNonce = function() {
	return (typeof(this.nonce) != "undefined");
}



/**
 * Generate ephemeral ECC key pair.
 *
 * @param domainParameter the domain parameter for the key pair
 * @return the ephemeral public key
 * @type Key
 */
PACE.prototype.generateEphemeralKeyPair = function(domainParameter) {
	this.prk = new Key(domainParameter);
	this.prk.setType(Key.PRIVATE);

	this.puk = new Key(domainParameter);
	this.puk.setType(Key.PUBLIC);

	this.crypto.generateKeyPair(Crypto.EC, this.puk, this.prk);

	return this.puk;
}



/**
 * Generates and returns the mapping data for this instance
 * @return the mapping data
 * @type ByteString
 */
PACE.prototype.getMappingData = function() {
	if (typeof(this.prk) == "undefined") {
		this.generateEphemeralKeyPair(this.domparam);
	}

	var ecpk = new ByteString("04", HEX);
	ecpk = ecpk.concat(this.puk.getComponent(Key.ECC_QX));
	ecpk = ecpk.concat(this.puk.getComponent(Key.ECC_QY));
	return ecpk;
}



/**
 * Performs the mapping operation with mapping data from the other side
 *
 */
PACE.prototype.performMapping = function(mappingData) {
	if (mappingData.byteAt(0) != 0x04)
		throw new GPError("PACE", GPError.INVALID_DATA, 0x6A80, "Public key must start with '04'");

	if (typeof(this.nonce) == "undefined")
		throw new GPError("PACE", GPError.INVALID_MECH, 0x6985, "Nonce is not yet defined");

	var l = (mappingData.length - 1) >> 1;
	if (l != this.prk.getComponent(Key.ECC_P).length) {
		throw new GPError("PACE", GPError.INVALID_DATA, 0, "Public key size does not match private key size");
	}

	var h = this.crypto.decrypt(this.prk, Crypto.ECDHP, mappingData.bytes(1));

	var l = h.length >> 1;
	var H = new Key(this.domparam);
	H.setComponent(Key.ECC_QX, h.bytes(0, l));
	H.setComponent(Key.ECC_QY, h.bytes(l, l));

	var G = new Key(this.domparam);
	// Copy generator point into public key point
	G.setComponent(Key.ECC_QX, G.getComponent(Key.ECC_GX));
	G.setComponent(Key.ECC_QY, G.getComponent(Key.ECC_GY));

	// Calculate G' = s * G + P, where P is initially stored in H and
	// G' is finally stored in H.
	this.crypto.deriveKey(G, Crypto.EC_MULTIPLY_ADD, this.nonce, H);

	// Create new domain parameter with G'
	this.ephDomParam = new Key(this.domparam);
	this.ephDomParam.setComponent(Key.ECC_GX, H.getComponent(Key.ECC_QX));
	this.ephDomParam.setComponent(Key.ECC_GY, H.getComponent(Key.ECC_QY));
}



/**
 * Returns the ephemeral public key based on the new domain parameter
 *
 * @return the encoded public key
 * @type ByteString
 */
PACE.prototype.getEphemeralPublicKey = function() {
	this.generateEphemeralKeyPair(this.ephDomParam);
	var ecpk = new ByteString("04", HEX);
	ecpk = ecpk.concat(this.puk.getComponent(Key.ECC_QX));
	ecpk = ecpk.concat(this.puk.getComponent(Key.ECC_QY));
	return ecpk;
}



/**
 * Performs the mapping operation with mapping data from the other side
 *
 * @param {ByteString} publicKey the public key in encoded format
 */
PACE.prototype.performKeyAgreement = function(publicKey) {
	if (publicKey.byteAt(0) != 0x04)
		throw new GPError("PACE", GPError.INVALID_DATA, 0x6A80, "Public key must start with '04'");

	if (typeof(this.nonce) == "undefined")
		throw new GPError("PACE", GPError.INVALID_MECH, 0x6985, "Nonce is not yet defined");

	var l = (publicKey.length - 1) >> 1;
	if (l != this.prk.getComponent(Key.ECC_P).length) {
		throw new GPError("PACE", GPError.INVALID_DATA, 0, "Public key size does not match private key size");
	}

	this.otherPuK = new Key(this.ephDomParam);
	this.otherPuK.setComponent(Key.ECC_QX, publicKey.bytes(    1, l));
	this.otherPuK.setComponent(Key.ECC_QY, publicKey.bytes(l + 1, l));

	var k = this.crypto.decrypt(this.prk, Crypto.ECDH, publicKey.bytes(1));
	GPSystem.trace("Shared Secret K:");
	GPSystem.trace(k);
	this.kenc = this.deriveKey(k, 1);
	this.kmac = this.deriveKey(k, 2);

}



/**
 * Strips leading zeros of a ByteString
 *
 * @param {ByteString} value the ByteString value
 * @return the stripped ByteString object, may be an empty ByteString
 * @type ByteString
 */
PACE.stripLeadingZeros = function(value) {
	var i = 0;
	for (; (i < value.length) && (value.byteAt(i) == 0); i++);

	return value.right(value.length - i);
}



/**
 * Encode an ECC public key in the format defined by the EAC 2.0 specification
 *
 * @param {String} oid the object identifier to encode
 * @param {Key} key the EC public key
 * @param {Boolean} withDP true to encode domain parameter as well
 * @type ASN1
 * @returns the ASN1 encoded public key object
 */
PACE.encodePublicKey = function(oid, key, withDP) {

	var t = new ASN1("ecPublicKey", 0x7F49);
	t.add(new ASN1("objectIdentifier", ASN1.OBJECT_IDENTIFIER, new ByteString(oid, OID)));
	if (withDP) {
		t.add(new ASN1("primeModulus", 0x81, key.getComponent(Key.ECC_P)));
		t.add(new ASN1("firstCoefficient", 0x82, key.getComponent(Key.ECC_A)));
		t.add(new ASN1("secondCoefficient", 0x83, key.getComponent(Key.ECC_B)));

		var point = new ByteString("04", HEX);
		point = point.concat(key.getComponent(Key.ECC_GX));
		point = point.concat(key.getComponent(Key.ECC_GY));
		t.add(new ASN1("basePoint", 0x84, point));

		t.add(new ASN1("orderOfTheBasePoint", 0x85, key.getComponent(Key.ECC_N)));
	}
	var point = new ByteString("04", HEX);
	point = point.concat(key.getComponent(Key.ECC_QX));
	point = point.concat(key.getComponent(Key.ECC_QY));
	t.add(new ASN1("publicPoint", 0x86, point));

	if (withDP) {
		var cofactor = key.getComponent(Key.ECC_H);
		cofactor = PACE.stripLeadingZeros(cofactor);

		t.add(new ASN1("cofactor", 0x87, cofactor));
	}

	return t;
}



/**
 * Calculate the authentication token over the public key received from
 * the other side
 *
 * @return the MAC over the authentication data
 * @type ByteString
 */
PACE.prototype.calculateAuthenticationToken = function() {
	var t = PACE.encodePublicKey(this.algo, this.otherPuK, (this.version == 1));
	GPSystem.trace("Authentication Token:");
	GPSystem.trace(t);

	if (this.symalgo == Key.DES) {
		var inp = t.getBytes().pad(Crypto.ISO9797_METHOD_2);
		var at = this.crypto.sign(this.kmac, Crypto.DES_MAC_EMV, inp);
	} else {
		var at = this.crypto.sign(this.kmac, Crypto.AES_CMAC, t.getBytes()).left(8);
	}

	return at;
}



/**
 * Calculate and verify the authentication token over the public key received from
 * the other side
 *
 * @param {ByteString} the MAC over the authentication data
 * @return true if the MAC is valid
 * @type Boolean
 */
PACE.prototype.verifyAuthenticationToken = function(authToken) {
	var t = PACE.encodePublicKey(this.algo, this.puk, (this.version == 1));
	GPSystem.trace("Authentication Token:");
	GPSystem.trace(t);

	if (this.symalgo == Key.DES) {
		var inp = t.getBytes().pad(Crypto.ISO9797_METHOD_2);
		var at = this.crypto.sign(this.kmac, Crypto.DES_MAC_EMV, inp);
	} else {
		var at = this.crypto.sign(this.kmac, Crypto.AES_CMAC, t.getBytes()).left(8);
	}

	return at.equals(authToken);
}



/**
 * Returns true, if the mapping has been performed.
 * @return true if the mapping has been performed
 * @type Boolean
 */
PACE.prototype.hasMapping = function() {
	return (typeof(this.ephDomParam) != "undefined");
}



/**
 * Describe key
 * @param {Key} the key
 * @return the string describing the key
 * @type String
 */
PACE.keyToString = function(key) {
	var str = "";
	var kval = key.getComponent(Key.AES);
	if (kval) {
		str += "(AES) " + kval + "\n";
	}
	var kval = key.getComponent(Key.DES);
	if (kval) {
		str += "(DES) " + kval + "\n";
	}
	return str;
}



/**
 * Returns a human readable presentation of the current pace state.
 * return {String} the object information
 */
PACE.prototype.toString = function() {
	var str = "Algorithm " + this.algo + "\n";

	if (typeof(this.pacekey) != "undefined") {
		str += "PACE Key " + PACE.keyToString(this.pacekey);
	}

	if (typeof(this.nonce) != "undefined") {
		str += "Nonce " + this.nonce + "\n";
	}

	if (typeof(this.ephDomParam) != "undefined") {
		str += "Point G' " + this.ephDomParam.getComponent(Key.ECC_GX) + " " + this.ephDomParam.getComponent(Key.ECC_GY) + "\n";
	}

	if (typeof(this.kenc) != "undefined") {
		str += "Kenc " + PACE.keyToString(this.kenc);
	}

	if (typeof(this.kmac) != "undefined") {
		str += "Kmac" + PACE.keyToString(this.kmac);
	}

	return str;
}


PACE.bsi_de = "0.4.0.127.0.7";
PACE.id_PACE = PACE.bsi_de + ".2.2.4";
PACE.id_PACE_ECDH_GM = PACE.id_PACE + ".2";
PACE.id_PACE_ECDH_GM_3DES_CBC_CBC     = PACE.id_PACE_ECDH_GM + ".1";
PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_128 = PACE.id_PACE_ECDH_GM + ".2";
PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_192 = PACE.id_PACE_ECDH_GM + ".3";
PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_256 = PACE.id_PACE_ECDH_GM + ".4";

PACE.id_roles = PACE.bsi_de + ".3.1.2";
PACE.id_IS = PACE.id_roles + ".1";

/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 * 
 * @fileoverview Public Key Reference, the value stored in CAR and CHR of CV-Certificates
 */
 



/**
 * <p>Create a public key reference (CAR/CHR) from binary representation or individual fields.</p>
 *
 * <p>Use one of the following signatures:</p>
 *
 * <ul>
 *  <li>PublicKeyReference(ByteString value) - binary public key reference</li>
 *  <li>PublicKeyReference(String value) - string encoded public key reference</li>
 *  <li>PublicKeyReference(String countryCode, String holderMnemonic, String sequenceNumber) - string encoded public key reference</li>
 * </ul>
 * <p>@see PublicKeyReference.test() for an example.</P>
 *
 * @class <p>A class that implements a public key reference to be used as CAR and CHR in
 *        card verifiable certificates (CVC).</p>
 * @constructor
 */
function PublicKeyReference() {
	if (arguments.length > 0) {
		if (arguments.length == 1) {
			if (typeof(arguments[0]) == "string") {
				this.bin = new ByteString(arguments[0], ASCII);
			} else {
				this.bin = arguments[0];
			}
		} else {
			var cc = arguments[0];
			var mn = arguments[1];
			var sq = arguments[2];
			this.bin = new ByteString(cc + mn + sq, ASCII);
		}
	}
}

exports.PublicKeyReference = PublicKeyReference;



/**
 * Returns the 2 character country code
 *
 * @return the country code
 * @type String
 */
PublicKeyReference.prototype.getCountryCode = function() {
	return this.bin.bytes(0, 2).toString(ASCII);
}



/**
 * Returns the variable length holder mnemonic
 *
 * @return the holder mnemonic
 * @type String
 */
PublicKeyReference.prototype.getMnemonic = function() {
	return this.bin.bytes(2, this.bin.length - 7).toString(ASCII);
}



/**
 * Returns the 5 character sequence number
 *
 * @return the sequence number
 * @type String
 */
PublicKeyReference.prototype.getSequenceNo = function() {
	return this.bin.bytes(this.bin.length - 5, 5).toString(ASCII);
}



/**
 * Returns the certificate holder name, which is the concatenation of the country code and the
 * holder mnemonic.
 *
 * @return the holder name
 * @type String
 */
PublicKeyReference.prototype.getHolder = function() {
	return this.getCountryCode() + this.getMnemonic();
}



/**
 * Returns the binary encoded public key reference
 *
 * @return the public key reference
 * @type ByteString
 */
PublicKeyReference.prototype.getBytes = function() {
	return this.bin;
}



/**
 * Returns the string representation of the public key reference
 *
 * @return the public key reference
 * @type String
 */
PublicKeyReference.prototype.toString = function() {
	return this.bin.toString(ASCII);
}



/**
 * Returns true if other public key reference equals this public key reference
 *
 * @return true if equals
 * @type boolean
 */
PublicKeyReference.prototype.equals = function(other) {
	return this.bin.equals(other.bin);
}



/**
 * Test function
 */
PublicKeyReference.test = function() {
	var p = new PublicKeyReference(new ByteString("UTABCDF0000", ASCII));
	assert(p.getCountryCode() == "UT");
	assert(p.getMnemonic() == "ABCD");
	assert(p.getSequenceNo() == "F0000");
	assert(p.getHolder() == "UTABCD");
	
	var p = new PublicKeyReference("UT", "ABCD", "F0000");
	assert(p.getCountryCode() == "UT");
	assert(p.getMnemonic() == "ABCD");
	assert(p.getSequenceNo() == "F0000");
	assert(p.getHolder() == "UTABCD");
	
	var p = new PublicKeyReference("UTABCDF0000");
	assert(p.getCountryCode() == "UT");
	assert(p.getMnemonic() == "ABCD");
	assert(p.getSequenceNo() == "F0000");
	assert(p.getHolder() == "UTABCD");
	
	assert(p.getBytes().toString(ASCII) == "UTABCDF0000");
}

/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Implementation of the ASN.1 structures for restricted identification
 */



/**
 * Create a RestrictedIdentificationInfo object
 *
 * @class <p>This class encodes and decodes RestrictedIdentificationInfo objects.</p>
 * <p>The class implements the following ASN.1 syntax:</p>
 * <pre>
 * RestrictedIdentificationInfo ::= SEQUENCE {
 *   protocol  OBJECT IDENTIFIER(
 *             id-RI-DH-SHA-1  |
 *             id-RI-DH-SHA-224  |
 *             id-RI-DH-SHA-256  |
 *             id-RI-DH-SHA-384 |
 *             id-RI-DH-SHA-512 |
 *             id-RI-ECDH-SHA-1  |
 *             id-RI-ECDH-SHA-224  |
 *             id-RI-ECDH-SHA-256 |
 *             id-RI-ECDH-SHA-384 |
 *             id-RI-ECDH-SHA-512),
 *   params    ProtocolParams,
 *   maxKeyLen INTEGER OPTIONAL
 * }
 * ProtocolParams ::= SEQUENCE {
 *   version         INTEGER, -- MUST be 1
 *   keyId           INTEGER,
 *   authorizedOnly  BOOLEAN
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the optional tlv structure to initialize the object
 */
function RestrictedIdentificationInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 2);

		var i = 0;
		var t = tlv.get(i++);
		assert(t.tag == ASN1.OBJECT_IDENTIFIER);
		this.protocol = t.value;

		var params = tlv.get(i++);
		assert(params.tag == ASN1.SEQUENCE);
		assert(params.elements == 3);

		assert(params.get(0).tag == ASN1.INTEGER);
		this.version = params.get(0).value.toSigned();

		assert(params.get(1).tag == ASN1.INTEGER);
		this.keyId = params.get(1).value.toSigned();

		assert(params.get(2).tag == ASN1.BOOLEAN);
		this.authorizedOnly = params.get(2).value.toSigned();

		if (i < tlv.elements) {
			var t = tlv.get(i++);
			assert(t.tag == ASN1.INTEGER);
			this.maxKeyLen = t.value.toSigned();
		}
	}
}

exports.RestrictedIdentificationInfo = RestrictedIdentificationInfo;



/**
 * Convert object to TLV structure
 *
 * @return the TLV structure
 * @type ASN1
 */
RestrictedIdentificationInfo.prototype.toTLV = function() {
	var t = new ASN1(ASN1.SEQUENCE,
				new ASN1(ASN1.OBJECT_IDENTIFIER, this.protocol),
				new ASN1(ASN1.SEQUENCE,
					new ASN1(ASN1.INTEGER, ByteString.valueOf(this.version)),
					new ASN1(ASN1.INTEGER, ByteString.valueOf(this.keyId)),
					new ASN1(ASN1.BOOLEAN, ByteString.valueOf(this.authorizedOnly ? 0xFF : 0x00))
				)
	);

	if (typeof(this.maxKeyLen) != "undefined") {
		t.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(this.maxKeyLen)));
	}
	return t;
}



RestrictedIdentificationInfo.prototype.toString = function() {
	return "RestrictedIdentificationInfo(protocol=" + this.protocol + ", version=" + this.version + ", keyId=" + this.keyId + ",authOnly=" + this.authorizedOnly + ",maxKeyLen=" + this.maxKeyLen + ")";
}



/**
 * Create a RestrictedIdentificationDomainParameterInfo object
 *
 * @class <p>This class encodes and decodes RestrictedIdentificationDomainParameterInfo objects.</p>
 * <p>The class implements the following ASN.1 syntax:</p>
 * <pre>
 *	RestrictedIdentificationDomainParameterInfo ::= SEQUENCE {
 *		protocol OBJECT IDENTIFIER(id-CA-DH | id-CA-ECDH),
 *		domainParameter AlgorithmIdentifier,
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the optional tlv structure to initialize the object
 */
function RestrictedIdentificationDomainParameterInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 2);
		
		var i = 0;
		var t = tlv.get(i++);
		assert(t.tag == ASN1.OBJECT_IDENTIFIER);
		this.protocol = t.value;
		
		var t = tlv.get(i++);
		assert(t.tag == ASN1.SEQUENCE);

		if (t.elements > 0) {
			var oid = t.get(0);
			assert(oid.tag == ASN1.OBJECT_IDENTIFIER);
			if (oid.value.equals(new ByteString("standardizedDomainParameter", OID))) {
				this.standardizedDomainParameter = t.get(1).value.toUnsigned();
				var curveoid = RestrictedIdentification.standardizedDomainParameter[this.standardizedDomainParameter];
				if (!curveoid) {
					throw new GPError("RestrictedIdentificationPublicKeyInfo", GPError.INVALID_DATA, 0, "Standardized domain parameter " + this.standardizedDomainParameter + " is unknown");
				}
				this.domainParameter = new Key();
				this.domainParameter.setComponent(Key.ECC_CURVE_OID, new ByteString(curveoid, OID));
			} else {
				this.domainParameter = ECCUtils.decodeECParameters(t.get(1));
			}
		} else {
			this.domainParameter = new Key();
			this.domainParameter.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
		}
	}
}

exports.RestrictedIdentificationDomainParameterInfo = RestrictedIdentificationDomainParameterInfo;



/**
 * Convert object to TLV structure
 *
 * @return the TLV structure
 * @type ASN1
 */
RestrictedIdentificationDomainParameterInfo.prototype.toTLV = function() {
	var t = new ASN1(ASN1.SEQUENCE);

	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, this.protocol));

	var c = new ASN1(ASN1.SEQUENCE);
	if (this.standardizedDomainParameter) {
		c.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("standardizedDomainParameter", OID)));
		c.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(this.standardizedDomainParameter)));
	} else {

	}
	t.add(c);

	return t;
}



RestrictedIdentificationDomainParameterInfo.prototype.toString = function() {
	return "RestrictedIdentificationDomainParameterInfo(protocol=" + this.protocol + ", keyId=" + this.keyId + ")";
}


RestrictedIdentification = {
	id_RI: new ByteString("id-RI", OID),
	id_RI_DH: new ByteString("id-RI-DH", OID),
	id_RI_ECDH: new ByteString("id-RI-ECDH", OID)
};

exports.RestrictedIdentification = RestrictedIdentification;

RestrictedIdentification.standardizedDomainParameter = [];
RestrictedIdentification.standardizedDomainParameter[8] = "secp192r1";
RestrictedIdentification.standardizedDomainParameter[9] = "brainpoolP192r1";
RestrictedIdentification.standardizedDomainParameter[10] = "secp224r1";
RestrictedIdentification.standardizedDomainParameter[11] = "brainpoolP224r1";
RestrictedIdentification.standardizedDomainParameter[12] = "secp256r1";
RestrictedIdentification.standardizedDomainParameter[13] = "brainpoolP256r1";
RestrictedIdentification.standardizedDomainParameter[14] = "brainpoolP320r1";
RestrictedIdentification.standardizedDomainParameter[15] = "secp384r1";
RestrictedIdentification.standardizedDomainParameter[16] = "brainpoolP384r1";
RestrictedIdentification.standardizedDomainParameter[17] = "brainpoolP512r1";
RestrictedIdentification.standardizedDomainParameter[18] = "secp521r1";
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview General File I/O Class
 */



/**
 * Create a reference to a file system object (file or directory)
 *
 * @class Class implementing basic support for files
 * @constructor
 * @param {String} name relative or absolute file path
 * @param {Number} location one of GPSystem.CWD, GPSystem.USR, GPSystem.SYS, GPSystem.AUTO to resolve relative names. Default GPSystem.CWD
 */
function File(name, location) {
	this.name = name;
	this.location = location;
}

exports.File = File;



/**
 * Return absolute path
 *
 * @param{Number} mode one of GPSystem.AUTO, GPSystem.CWD, GPSystem.USR or GPSystem.SYS. See GPSystem.mapFilename() for details
 * @type String
 * @return the absolute path
 */
File.prototype.getAbsolutePath = function(mode) {
	if (typeof(mode) == "undefined") {
		if (typeof(this.location) == "undefined") {
			mode = GPSystem.AUTO;
		} else {
			mode = this.location;
		}
	}

	var path = GPSystem.mapFilename(this.name, mode);
	if (path == null) {
		return undefined;
	}
	return path;
}



/**
 * @private
 * Return a java.io.File object
 */
File.prototype.getFile = function() {
	if (typeof(this.file) == "undefined") {
		var path = this.getAbsolutePath();
		if (path) {
			this.file = new java.io.File(path);
		}
	}
	return this.file;
}



/**
 * Return true if file exists
 */
File.prototype.exists = function() {
	var f = this.getFile();

	if (!f) {
		return false;
	}
	return f.exists();
}



/**
 * Close streams associated with file
 */
File.prototype.close = function() {
	if (typeof(this.os) != "undefined") {
		this.os.close();
		delete(this.os);
	}

	if (typeof(this.is) != "undefined") {
		this.is.close();
		delete(this.is);
	}
}



/**
 * @private
 * Return a java.io.FileInputStream
 */
File.prototype.getInputStream = function() {
	if (typeof(this.is) == "undefined") {
		var path = this.getAbsolutePath();
		if (!path) {
			throw new GPError(module.id, GPError.OBJECT_NOT_FOUND, 0, "File " + this.name + " not found");
		}
		this.is = new java.io.FileInputStream(path);
	}
	return this.is;
}



/**
 * @private
 * Return a java.io.FileOutputStream
 */
File.prototype.getOutputStream = function() {
	if (typeof(this.os) == "undefined") {
		var path = this.getAbsolutePath();
		if (!path) {
			throw new GPError(module.id, GPError.OBJECT_NOT_FOUND, 0, "File " + this.name + " not found");
		}
		this.os = new java.io.FileOutputStream(path);
	}
	return this.os;
}



/**
 * Read complete file into ByteString object
 *
 * @type ByteString
 * @return the binary content
 */
File.prototype.readAllAsBinary = function() {
	var is = this.getInputStream();

	// Determine file size
	var flen = is.available();

	// Allocate native byte array
	var bs = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, flen);

	// Read into byte array
	var len = is.read(bs);

	this.close();

	// Allocate JavaScript ByteBuffer from native/wrapped byte array
	var bb = new ByteBuffer(bs);

	// Convert to JavaScript ByteString
	var data = bb.toByteString();

	return data;
}



/**
 * Read complete file into String object
 *
 * @type String
 * @return the text content
 */
File.prototype.readAllAsString = function(encoding) {

	if (typeof(encoding) == "undefined") {
		encoding = UTF8;
	}

	return this.readAllAsBinary().toString(encoding);
}



/**
 * Write the object to file
 *
 * @param{Object} obj to write to file (Using toString() for any other than String and ByteString)
 * @param{Number} one of UTF8 or ASCII (Default is UTF8)
 */
File.prototype.writeAll = function(obj, encoding) {
	if ((typeof(obj) != "string") && !(obj instanceof ByteString)) {
		obj = obj.toString();
	}
	if (typeof(obj) == "string") {
		if (typeof(encoding) == "undefined") {
			encoding = UTF8;
		}
		obj = new ByteString(obj, encoding);
	}

	var os = this.getOutputStream();
	os.write(obj);
	this.close();
}



/**
 * Return list of files contained in the directory referenced by the File object
 *
 * @type String[]
 * @return the list of file names
 */
File.prototype.list = function() {
	var list = this.getFile().list();
	var jslist = [];

	if (list) {
		for (var i = 0; i < list.length; i++) {
			jslist.push(new String(list[i]));
		}
	}

	return jslist;
}



/**
 * Return the parent file of this file object
 *
 * @type File
 * @return the parent file object or null
 */
File.prototype.getParentFile = function() {
	var file = this.getFile();
	var parent = file.getParent();
	if (parent == null) {
		return null;
	}
	return new File(parent);
}



File.test = function() {
	var file = new File("test.bin");
	var b = new ByteString("Hello World", ASCII);
	file.writeAll(b);

	var file = new File("test.bin");
	var c = file.readAllAsBinary();
	print(c.toString(ASCII));

	var file = new File("test.txt");
	var s = "Hello World";
	file.writeAll(s);

	var file = new File("test.txt");
	var c = file.readAllAsString();
	print(c);

	var dir = file.getParentFile();
	print(dir.getAbsolutePath());
	print(dir.list());

}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Support for Global Platform SCP03 protocol
 */

var APDU = require('scsh/cardsim/APDU').APDU;



/**
 * Class implementing support for Global Platform SCP03 secure messaging protocol
 *
 * @constructor
 * @param {Crypto} crypto the crypto provider
 * @param {Key} kenc the static secure channel encryption key
 * @param {Key} kmac the static secure channel message authentication code key
 * @param {Key} kdek the static data encryption key
 * @param {ByteString} aid the AID to use for challenge calculation
 */
function GPSCP03(crypto, kenc, kmac, kdek, aid) {
	this.crypto = crypto;
	this.kenc = kenc;
	this.kmac = kmac;
	this.kdek = kdek;
	this.chaining = ByteString.valueOf(0, 16);
	this.enccnt = 1;
	this.seclevel = 0;
	this.keyVersion = 1;
	this.parami = 0;

	if (aid != undefined) {
		assert(aid instanceof ByteString, "Argument aid must be ByteString");
		this.aid = aid;
	} else {
		this.aid = new ByteString("A000000151000000", HEX);
	}
}

exports.GPSCP03 = GPSCP03;



/**
 * Strip the ISO padding from dechipered cryptogram
 *
 * @param {ByteString} the plain text with padding
 * @type ByteString
 * @return the plain text without padding
 */
GPSCP03.stripPadding = function(plain) {
	var i = plain.length - 1;
	while ((i > 0) && (plain.byteAt(i) == 0)) {
		i--;
	}
	if (plain.byteAt(i) != 0x80) {
		throw new GPError(module.id, GPError.CRYPTO_FAILED, 0, "Padding check failed");
	}
	return plain.left(i);
}



/**
 * Reset the internal state
 **/
GPSCP03.prototype.reset = function() {
	this.chaining = ByteString.valueOf(0, 16);
	this.enccnt = 1;
	this.seclevel = 0;
}



/**
 * Called by the secure messaging wrapper to wrap the command APDU
 */
GPSCP03.prototype.wrap = function(apduToWrap, usageQualifier) {

	if (this.seclevel & 0x01) {
		var apdu = new APDU(apduToWrap);

		if (apdu.hasCData()) {
			if (this.seclevel & 0x02) {
				var ivinp = ByteString.valueOf(this.enccnt, 16);
				var iv = this.crypto.encrypt(this.skenc, Crypto.AES_ECB, ivinp);
				var encinp = apdu.getCData().pad(Crypto.ISO9797_METHOD_2_16);

				apdu.setCData(this.crypto.encrypt(this.skenc, Crypto.AES_CBC, encinp, iv));
			}
		} else {
			apdu.setCData(new ByteString("", HEX));
		}

		var bb = new ByteBuffer();
		bb.append(this.chaining);

		var cla = apdu.getCLA();
		if (cla & 0x40) {
			// GP Format
			cla = cla & 0xC0 | 0x40;
			apdu.cla |= 0x40;
		} else {
			// ISO Format
			cla = cla & 0x90 | 0x04;
			apdu.cla |= 0x04;
		}
		bb.append(cla);
		bb.append(apdu.getINS());
		bb.append(apdu.getP1());
		bb.append(apdu.getP2());

		var lc = apdu.getCData().length + 8;
		if (apdu.isExtendedLength()) {
			bb.append(0);
			bb.append(ByteString.valueOf(lc, 2));
		} else {
			bb.append(ByteString.valueOf(lc, 1));
		}

		bb.append(apdu.getCData());
		var mac = this.crypto.sign(this.skmac, Crypto.AES_CMAC, bb.toByteString());

		this.chaining = mac;

		apdu.setCData(apdu.getCData().concat(mac.left(8)));

		if (this.clatransformation) {
			apdu.setCLA(this.clatransformation(apdu.getCLA()));
		}

		apduToWrap = apdu.getCommandAPDU();
	}
	return apduToWrap;
}



/**
 * Called by the secure messaging wrapper to unwrap the response APDU
 */
GPSCP03.prototype.unwrap = function(apduToUnwrap, usageQualifier) {
	if ((this.seclevel & 0x10) && (apduToUnwrap.length > 2)) {
		var bb = new ByteBuffer();
		bb.append(this.chaining);
		bb.append(apduToUnwrap.left(apduToUnwrap.length - 10));
		bb.append(apduToUnwrap.right(2));

		var mac = this.crypto.sign(this.skrmac, Crypto.AES_CMAC, bb.toByteString()).left(8);

		if (!mac.equals(apduToUnwrap.bytes(apduToUnwrap.length - 10, 8))) {
			throw new GPError(module.id, GPError.CRYPTO_FAILED, 0, "MAC on R-Data failed verification");
		}

		if ((this.seclevel & 0x20) && (apduToUnwrap.length > 10)) {
			var ivinp = ByteString.valueOf(0x80).concat(ByteString.valueOf(this.enccnt, 15));
			var iv = this.crypto.encrypt(this.skenc, Crypto.AES_ECB, ivinp);

			var plain = this.crypto.decrypt(this.skenc, Crypto.AES_CBC, apduToUnwrap.left(apduToUnwrap.length - 10), iv);
			apduToUnwrap = GPSCP03.stripPadding(plain).concat(apduToUnwrap.right(2));
		} else {
			apduToUnwrap = apduToUnwrap.left(apduToUnwrap.length - 10).concat(apduToUnwrap.right(2));
		}
	}

	this.enccnt++;

	return apduToUnwrap;
}




/**
 * Counterpart to wrap and meant to be used in a simulator
 */
GPSCP03.prototype.unwrapCommandAPDU = function(apdu) {
	if (this.seclevel == 0) {
		throw new GPError(module.id, GPError.CRYPTO_FAILED, APDU.SW_CONDOFUSENOTSAT, "No secure messaging active");
	}

	if (this.seclevel & 0x01) {
		if (!apdu.hasCData() || apdu.getCData().length < 8) {
			throw new GPError(module.id, GPError.CRYPTO_FAILED, APDU.SW_SMOBJMISSING, "MAC on C-Data missing");
		}
		var bb = new ByteBuffer();
		bb.append(this.chaining);

		var cla = apdu.getCLA();
		if (cla & 0x40) {
			// GP Format
			cla = cla & 0xC0 | 0x40;
		} else {
			// ISO Format
			cla = cla & 0x90 | 0x04;
		}

		bb.append(cla);
		bb.append(apdu.getINS());
		bb.append(apdu.getP1());
		bb.append(apdu.getP2());

		var lc = apdu.getCData().length;
		if (apdu.isExtendedLength()) {
			bb.append(0);
			bb.append(ByteString.valueOf(lc, 2));
		} else {
			bb.append(ByteString.valueOf(lc, 1));
		}

		bb.append(apdu.getCData().left(lc - 8));

		var mac = this.crypto.sign(this.skmac, Crypto.AES_CMAC, bb.toByteString());

		if (!mac.left(8).equals(apdu.getCData().right(8))) {
			throw new GPError(module.id, GPError.CRYPTO_FAILED, APDU.SW_SECSTATNOTSAT, "MAC on C-Data failed verification");
		}

		this.chaining = mac;

		apdu.setCData(apdu.getCData().left(lc - 8));

		if ((this.seclevel & 0x02) && (lc > 8)) {
			var ivinp = ByteString.valueOf(this.enccnt, 16);
			var iv = this.crypto.encrypt(this.skenc, Crypto.AES_ECB, ivinp);

			var plain = this.crypto.decrypt(this.skenc, Crypto.AES_CBC, apdu.getCData(), iv);
			apdu.setCData(GPSCP03.stripPadding(plain));
		}

	}
}



/**
 * Counterpart to unwrap and meant to be used in a simulator
 */
GPSCP03.prototype.wrapResponseAPDU = function(apdu) {
	if (this.seclevel & 0x10) {
		if ((this.seclevel & 0x20) && apdu.hasRData()) {
			var ivinp = ByteString.valueOf(0x80).concat(ByteString.valueOf(this.enccnt, 15));
			var iv = this.crypto.encrypt(this.skenc, Crypto.AES_ECB, ivinp);
			var plain = apdu.getRData().pad(Crypto.ISO9797_METHOD_2_16);

			var cryptogram = this.crypto.encrypt(this.skenc, Crypto.AES_CBC, plain, iv);
			apdu.setRData(cryptogram);
		}

		var bb = new ByteBuffer();
		bb.append(this.chaining);

		bb.append(apdu.getResponseAPDU());

		var mac = this.crypto.sign(this.skrmac, Crypto.AES_CMAC, bb.toByteString()).left(8);

		apdu.setRData(apdu.hasRData() ? apdu.getRData().concat(mac) : mac);
	}

	this.enccnt++;
}



GPSCP03.prototype.setCLATransformation = function(clatransformation) {
	assert(typeof(clatransformation) == "function", "Argument clatransformation must be a function");
	this.clatransformation = clatransformation;
}



/**
 * Issue INITIALIZE UPDATE command to card and parse response
 *
 * @param {Card} card the card to use
 * @param {Number} keyVersion the version of the key to use (0 for default)
 * @param {Number} keyId the key id to use (usually 0)
 */
GPSCP03.prototype.initializeUpdate = function(card, keyVersion, keyId) {
	this.hostChallenge = this.crypto.generateRandom(8);

	var cla = 0x80;
	if (this.clatransformation) {
		cla = this.clatransformation(cla);
	}

	var rsp = card.sendApdu(cla, 0x50, keyVersion, keyId, this.hostChallenge, 0, [0x9000]);

	this.diversificationData = rsp.bytes(0, 10);
	this.keyInformation = rsp.bytes(10, 3);
	this.keyVersion = this.keyInformation.byteAt(0);
	this.parami = this.keyInformation.byteAt(2);
	this.cardChallenge = rsp.bytes(13, 8);
	this.cardCryptogram = rsp.bytes(21, 8);
	if (rsp.length > 29) {
		this.sequenceCounter = rsp.bytes(29,3);
		var context = this.sequenceCounter.concat(this.aid);
		var ref = this.deriveKey(this.kenc, 2, 8, context);
		assert(ref.equals(this.cardChallenge), "Pseudo-random card challenge does not match Kenc");
	}
}



/**
 * Set the sequence number for pseudo-random card challenges
 *
 * @param {ByteString} cnt the last used counter value
 */
GPSCP03.prototype.setSequenceCounter = function(cnt) {
	assert(cnt instanceof ByteString, "Argument cnt must be ByteString");
	assert(cnt.length == 3, "Argument cnt must be 3 bytes long");
	this.sequenceCounter = cnt;
}



/**
 * Set the key version and protocol parameter
 *
 * @param {Number} version the key version indicated in INITIALIZE_UPDATE
 * @param {Number} parami the i parameter for the SCP03 protocol (Default '00')
 */
GPSCP03.prototype.setKeyInfo = function(version, parami) {
	assert(typeof(version) == "number", "Argument version must be of type number");
	if (typeof(parami) != "undefined") {
		this.parami = parami;
	}
	this.keyVersion = version;
	this.keyInformation = ByteString.valueOf(this.keyVersion).concat(ByteString.valueOf(0x03)).concat(ByteString.valueOf(this.parami));
}



/**
 * Determine random or pseudo-random card challenge
 *
 */
GPSCP03.prototype.determineCardChallenge = function() {
	if (typeof(this.sequenceCounter) == "undefined") {
		this.cardChallenge = this.crypto.generateRandom(8);
	} else {
		var cnt = this.sequenceCounter.toUnsigned() + 1;
		this.sequenceCounter = ByteString.valueOf(cnt, 3);
		var context = this.sequenceCounter.concat(this.aid);
		this.cardChallenge = this.deriveKey(this.kenc, 2, 8, context);
	}
}



/**
 * Handle processing of INITIALIZE UPDATE command
 *
 * @param {ByteString} hostCryptogram the cryptogram calculated at the host
 */
GPSCP03.prototype.handleInitializeUpdate = function(hostChallenge) {
	this.hostChallenge = hostChallenge;
	this.determineCardChallenge();

	this.diversificationData = new ByteString("0102030405060708090A", HEX);

	if (typeof(this.keyInformation) == "undefined") {
		this.keyInformation = new ByteString("010300", HEX);
	}

	this.deriveSessionKeys();
	var context = this.hostChallenge.concat(this.cardChallenge);
	this.cardCryptogram = this.deriveKey(this.skmac, 0, 8, context);

	this.seclevel = 1;
	this.chaining = ByteString.valueOf(0, 16);

	var bb = new ByteBuffer();
	bb.append(this.diversificationData);
	bb.append(this.keyVersion);
	bb.append(0x03);
	bb.append(this.parami);
	bb.append(this.cardChallenge);
	bb.append(this.cardCryptogram);
	if (this.sequenceCounter != undefined) {
		bb.append(this.sequenceCounter);
	}
	return bb.toByteString();
}



/**
 * Issue EXTERNAL AUTHENTICATE command to card.
 *
 * @param {Card} card the card to use
 * @param {Number} level the security level (a combination of bits B5 (R-ENC), B4 (R-MAC), B2 (C-ENC) and B1 (C-MAC))
 * @param {ByteString} hostCryptogram optional parameter, calculated internally if missing
 */
GPSCP03.prototype.externalAuthenticate = function(card, level, hostCryptogram) {
	assert(card instanceof Card, "Argument card must be instance of Card");
	assert(typeof(level) == "number", "Argument level must be a number");
	assert((level & ~0x33) == 0, "Argument level must use only bits B5,B4,B2 or B1");
	assert((hostCryptogram == undefined) || (hostCryptogram instanceof ByteString), "hostCryptogram must be missing or ByteString");

	if (hostCryptogram == undefined) {
		this.calculateHostCryptogram();
	} else {
		this.hostCryptogram = hostCryptogram;
	}
	this.seclevel = 1;

	card.sendSecMsgApdu(Card.ALL, 0x80, 0x82, level, 0x00, this.hostCryptogram, [0x9000]);
	this.seclevel = level;
	this.enccnt = 1;
}



/**
 * Handle processing of PUT KEY command
 *
 * @param {ByteString} cdata the C-Data field of the APDU
 */
GPSCP03.prototype.handlePutKey = function(cdata) {
	var version = cdata.byteAt(0);
	cdata = cdata.bytes(1);
	var kd = GPSCP03.parseKeyDataField(cdata);
	var kenc = this.validateKeyBlock(kd);
	cdata = cdata.bytes(kd.length);

	var kd = GPSCP03.parseKeyDataField(cdata);
	var kmac = this.validateKeyBlock(kd);
	cdata = cdata.bytes(kd.length);

	var kd = GPSCP03.parseKeyDataField(cdata);
	var kdek = this.validateKeyBlock(kd);

	this.keyVersion = version;
	this.kenc = kenc;
	this.kmac = kmac;
	this.kdek = kdek;
}



/**
 * Derive S-ENC, S-MAC and S-RMAC session keys
 */
GPSCP03.prototype.deriveSessionKeys = function() {
	var context = this.hostChallenge.concat(this.cardChallenge);

	var keysize = this.kmac.getSize() >> 3;

	// Derive S-MAC
	var ss = this.deriveKey(this.kmac, 6, keysize, context);
	this.skmac = new Key();
	this.skmac.setComponent(Key.AES, ss);

	// Derive S-RMAC
	var ss = this.deriveKey(this.kmac, 7, keysize, context);
	this.skrmac = new Key();
	this.skrmac.setComponent(Key.AES, ss);

	// Derive S-ENC
	var ss = this.deriveKey(this.kenc, 4, keysize, context);
	this.skenc = new Key();
	this.skenc.setComponent(Key.AES, ss);
}



/**
 * Verify card cryptogram
 *
 * @type boolean
 * @return true if cryptogram is valid
 */
GPSCP03.prototype.verifyCardCryptogram = function() {
	var context = this.hostChallenge.concat(this.cardChallenge);

	var ss = this.deriveKey(this.skmac, 0, 8, context);
	return ss.equals(this.cardCryptogram);
}



/**
 * Calculate host cryptogram using the key derive method
 *
 * @type ByteString
 * @return the 8 byte cryptogram
 */
GPSCP03.prototype.calculateHostCryptogram = function() {
	var context = this.hostChallenge.concat(this.cardChallenge);

	this.hostCryptogram = this.deriveKey(this.skmac, 1, 8, context);
	return this.hostCryptogram;
}



/**
 * Encrypt key and prepare key block for PUT KEY command
 *
 * @param {Key} dek the data encryption key
 * @param {Key} key the key to wrap
 * @type ByteString
 * @return the key type, length, cryptogram and key check value
 */
GPSCP03.prototype.prepareKeyBlock = function(dek, key) {
	assert(dek instanceof Key, "Argument dek must be instance of Key");
	assert(key instanceof Key, "Argument key must be instance of Key");

	var keysize = key.getSize() >> 3;
	var ones = new ByteString("01010101010101010101010101010101", HEX);
	var kcv = this.crypto.encrypt(key, Crypto.AES_ECB, ones).left(3);

	var iv = ByteString.valueOf(0, 16);
	var ck = this.crypto.encrypt(dek, Crypto.AES_CBC, key.getComponent(Key.AES), iv);
	var ckbin = new ByteBuffer("88", HEX);
	ckbin.append(keysize + 1);
	ckbin.append(keysize);
	ckbin.append(ck);
	ckbin.append(3);
	ckbin.append(kcv);

	return ckbin.toByteString();
}



/**
 * Extract a key data field from C-Data in a PUT KEY APDU
 *
 * @param {ByteString} keyDataField the list of key data fields
 * @type ByteString
 * @return the extracted key data
 */
GPSCP03.parseKeyDataField = function(keyDataField) {
	var i = keyDataField.byteAt(1);
	if (i - 1 != keyDataField.byteAt(2)) {
		throw new GPError(module.id, GPError.INVALID_DATA, APDU.SW_INVDATA, "Field length does not match");
	}
	i += 2;
	i += keyDataField.byteAt(i) + 1;
	return keyDataField.left(i);
}



/**
 * Decrypt and validate key blob containing AES key wrapped with DEK
 *
 * @param {ByteString} keyblob the wrapped key
 * @type Key
 * @return the unwrapped key
 */
GPSCP03.prototype.validateKeyBlock = function(keyblob) {
	assert(keyblob instanceof ByteString, "Argument keyblob must be instance of ByteString");

	if (keyblob.byteAt(0) != 0x88) {
		throw new GPError(module.id, GPError.INVALID_DATA, APDU.SW_INVDATA, "AES key blob must start with '88'");
	}

	var l = keyblob.byteAt(1);
	if (keyblob.length <= l + 2) {
		throw new GPError(module.id, GPError.INVALID_DATA, APDU.SW_INVDATA, "Length exceeds key blob");
	}

	var kcvlen = keyblob.byteAt(3 + l - 1);
	var ck = keyblob.bytes(3, l - 1);
	var iv = ByteString.valueOf(0, 16);
	var plain = this.crypto.decrypt(this.kdek, Crypto.AES_CBC, ck, iv);

	var key = new Key();
	key.setComponent(Key.AES, plain);

	var ones = new ByteString("01010101010101010101010101010101", HEX);
	var kcv = this.crypto.encrypt(key, Crypto.AES_ECB, ones).left(kcvlen);

	if (!keyblob.right(3).equals(kcv)) {
		throw new GPError(module.id, GPError.CRYPTO_FAILED, APDU.SW_SECSTATNOTSAT, "KCV does not match");
	}
	return key;
}



/**
 * Derive a session key or cryptogram
 *
 * @param {Key} key the master key
 * @param {Number} ddc the data derivation constant
 * @param {Number} size the size of byte of the resulting key or cryptogram
 * @param {ByteString} context the context (usually hostChallenge || cardChallenge)
 * @return the derived value
 * @type ByteString
 */
GPSCP03.prototype.deriveKey = function(key, ddc, size, context) {
	assert(key instanceof Key, "Argument key must be instance of Key");
	assert(typeof(ddc) == "number", "Argument ddc must be a number");
	assert(typeof(size) == "number", "Argument size must be a number");
	assert(context instanceof ByteString, "Argument context must be instance of ByteString");

	var dd = new ByteBuffer();
	var os = size;
	var iter = 1;
	while (os > 0) {
		var dp = new ByteBuffer();
		dp.append(ByteString.valueOf(ddc, 12));
		dp.append(0);
		dp.append(ByteString.valueOf(size << 3, 2));
		dp.append(ByteString.valueOf(iter));
		dp.append(context);

		var mac = this.crypto.sign(key, Crypto.AES_CMAC, dp.toByteString());

		dd.append(mac.left(os > mac.length ? mac.length : os));
		os -= mac.length;
		iter++;
	}
	return dd.toByteString();
}



GPSCP03.test = function() {
	var crypto = new Crypto();

	var kmac = new Key();
	kmac.setComponent(Key.AES, new ByteString("404142434445464748494a4b4c4d4e4f", HEX));

	var kenc = new Key();
	kenc.setComponent(Key.AES, new ByteString("404142434445464748494a4b4c4d4e4f", HEX));

	var kdek = new Key();
	kdek.setComponent(Key.AES, new ByteString("404142434445464748494a4b4c4d4e4f", HEX));

	var card = new Card(_scsh3.reader);

	card.sendApdu(0x00, 0xA4, 0x04, 0x00, new ByteString("A000000151000000", HEX));

	var scp = new GPSCP03(crypto, kenc, kmac, kdek);

	scp.initializeUpdate(card, 0, 0);
	scp.deriveSessionKeys();
	assert(scp.verifyCardCryptogram());
	card.setCredential(scp);
	scp.externalAuthenticate(card, 1);

	var aid = new ByteString("E82B0601040181C31F0202", HEX);
	var cdata = (new ASN1(0x4F, aid)).getBytes();

	card.sendSecMsgApdu(Card.ALL, 0x80, 0xE4, 0x00, 0x80, cdata, [0x9000, 0x6A88]);
	card.sendSecMsgApdu(Card.ALL, 0x80, 0xE4, 0x00, 0x80, cdata, 0, [0x9000, 0x6A88]);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Simple CVC-CA
 */

PKIXCommon 		= require('scsh/x509/PKIXCommon').PKIXCommon;

//
//	CscaMasterList
//	{ iso-itu-t(2) international-organization(23) icao(136) mrtd(1)
//	security(1) masterlist(2)}
//
//	DEFINITIONS IMPLICIT TAGS ::=
//	BEGIN
//
//	IMPORTS
//
//	-- Imports from RFC 3280 [PROFILE], Appendix A.1
//		Certificate
//			FROM PKIX1Explicit88
//				{ iso(1) identified-organization(3) dod(6)
//				internet(1) security(5) mechanisms(5) pkix(7)
//				mod(0) pkix1-explicit(18) };
//
//	-- CSCA Master List
//
//	CscaMasterListVersion ::= INTEGER {v0(0)}
//
//	CscaMasterList ::= SEQUENCE {
//		version		CscaMasterListVersion,
//		certList	SET OF Certificate }
//
//	-- Object Identifiers
//
//	id-icao OBJECT IDENTIFIER ::= {2 23 136 }
//	id-icao-mrtd OBJECT IDENTIFIER ::= {id-icao 1}
//	id-icao-mrtd-security OBJECT IDENTIFIER ::= {id-icao-mrtd 1}
//	id-icao-cscaMasterList OBJECT IDENTIFIER ::= {id-icao-mrtd-security 2}
//	id-icao-cscaMasterListSigningKey OBJECT IDENTIFIER ::= {id-icao-mrtd-security 3}
//	END


/**
 * Create MasterList object initialized from passed Master List
 *
 * @constructor
 * @param {ByteString} masterList the binary master list
 */
function MasterList(masterList) {
	this.masterList = masterList;
	this.mlcms = new CMSSignedData(this.masterList);

	var ct = this.mlcms.getEContentType();

	if (!ct.equals(new ByteString("id-icao-cscaMasterList", OID))) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Content type is not id-icao-cscaMasterList, but " + ct.toString(OID));
	}

	var signers = this.mlcms.getNumberOfSigners();
	if (signers < 1) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "No signer found in master list");
	}

	var cert = this.mlcms.getCertificate(0);
	this.signerDN = cert.getSubjectDNString();
	GPSystem.log(GPSystem.DEBUG, module.id, "Signed by   : " + this.signerDN);

	var rdns = PKIXCommon.parseDN(this.signerDN);

	var cn = rdns[rdns.length - 1].CN;
	if (!cn) {
		cn = rdns[0].CN;
	}

	this.signerCN = cn;
	GPSystem.log(GPSystem.DEBUG, module.id, "Signer CN   : " + this.signerCN);

	this.signingTime = this.mlcms.getSignerInfoSignedAttribute(0, CMSSignedData.ATTR_SIGNINGTIME).toString(ASCII);
	GPSystem.log(GPSystem.DEBUG, module.id, "Signing time: " + this.signingTime);
}

exports.MasterList = MasterList;



/**
 * Check if certificate is a root certificate
 *
 * @private
 * @param {X509} cert the certificate
 * @type boolean
 * @return true if self-signed root
 */
MasterList.isRootCondition = function(issuer, subject, autid, subid) {
	if (autid) {
		return autid.equals(subid);
	}

	return (issuer.equals(subject));
}



/**
 * Check if certificate is a root certificate
 *
 * @param {X509} cert the certificate
 * @type boolean
 * @return true if self-signed root
 */
MasterList.isRoot = function(cert) {
	var issuer = cert.getIssuerDNString();
	var subject = cert.getSubjectDNString();
	var autid = cert.getAuthorityKeyIdentifier();
	var subid = cert.getSubjectKeyIdentifier();
	return MasterList.isRootCondition(issuer, subject, autid, subid);
}



/**
 * Get the master list signing time
 *
 * @type Date
 * @return the date and time when the master list was signed
 */
MasterList.prototype.getSigningTime = function() {
	var st = this.signingTime;

	var year = 2000 + parseInt(st.substr(0,2), 10);
	var mon = parseInt(st.substr(2,2), 10) - 1;
	var day = parseInt(st.substr(4,2), 10);
	var hour = parseInt(st.substr(6,2), 10);
	var min = parseInt(st.substr(8,2), 10);
	var sec = parseInt(st.substr(10,2), 10);

	return new Date(Date.UTC(year, mon, day, hour, min, sec));
}



/**
 * Get the master list signer DN
 *
 * @type String
 * @return the signer DN
 */
MasterList.prototype.getSignerDN = function() {
	return this.signerDN;
}



/**
 * Get the list of certificates from the Master List
 *
 * @type X509[]
 * @return the list of certificates
 */
MasterList.prototype.getCertificateList = function() {
	var sc = this.mlcms.getSignedContent();

	var a = new ASN1(sc);
	var version = a.get(0).value;
	assert(version.byteAt(0) == 0, "version must be 0");
	var certList = a.get(1);

	var list = [];

	for (var i = 0; i < certList.elements; i++) {
		var certbin = certList.get(i).getBytes();
		var cert = new X509(certbin);
		list.push(cert);
	}
	return list;
}



/**
 * Get the list of certificates from the Master List
 *
 * @type X509[]
 * @return the list of certificates
 */
MasterList.prototype.decode = function() {
	var sc = this.mlcms.getSignedContent();

	var a = new ASN1(sc);
	var version = a.get(0).value;
	assert(version.byteAt(0) == 0, "version must be 0");
	var certList = a.get(1);

	this.kidMap = {};
	this.dnMap = {};

	for (var i = 0; i < certList.elements; i++) {
		var certbin = certList.get(i).getBytes();
		var cert = new X509(certbin);

		var issuer = cert.getIssuerDNString();
		var subject = cert.getSubjectDNString();
		var autid = cert.getAuthorityKeyIdentifier();
		var subid = cert.getSubjectKeyIdentifier();

		if (MasterList.isRootCondition(issuer, subject, autid, subid)) {
			GPSystem.log(GPSystem.DEBUG, module.id, "+I:" + issuer);
			GPSystem.log(GPSystem.DEBUG, module.id, "+S:" + subject);
			if (this.kidMap[subid.toString(HEX)]) {
				GPSystem.log(GPSystem.DEBUG, module.id, "Duplicate root certificate for key id " + subid);
			}
			this.kidMap[subid.toString(HEX)] = cert;
			this.dnMap[subject] = cert;
		} else {
			GPSystem.log(GPSystem.DEBUG, module.id, "-I:" + issuer);
			GPSystem.log(GPSystem.DEBUG, module.id, "-S:" + subject);
		}
	}
}



/**
 * Validate master list certificate and signature using existing master list as trust anchor
 *
 * This method will accept any CSCA certificate in the master list as CA for the master list signer certificate
 *
 * Throws an exception if validation failed.
 *
 * @param {MasterList} masterlist the existing master list
 */
MasterList.prototype.validateWithMasterList = function(masterlist) {
	var cert = this.mlcms.getCertificate(0);

	var autid = cert.getAuthorityKeyIdentifier();

	var issuer = masterlist.getCertificateByKeyId(autid);
	if (!issuer) {
		throw new GPError("", GPError.OBJECT_NOT_FOUND, 0, "No certificate found to validate Master List signer certificate");
	}

	cert.verifyWith(issuer);

	if (!this.mlcms.isSignerInfoSignatureValid(0, cert.getBytes())) {
		throw new GPError("", GPError.SIGNATURE_FAILED, 0, "Master List signature verification failed");
	}
}



/**
 * Return trusted certificate with the given SubjectkeyIdentifier
 *
 * @param {ByteString} keyId the key identifier
 * @type X509
 * @return the certificate or undefined
 */
MasterList.prototype.getCertificateByKeyId = function(keyId) {
	return(this.kidMap[keyId.toString(HEX)]);
}



/**
 * Return trusted certificate with the given Subject DN
 *
 * @param {String} dn the issuer's DN
 * @type X509
 * @return the certificate or undefined
 */
MasterList.prototype.getCertificateByDN = function(dn) {
	return(this.dnMap[dn]);
}



/**
 * Return encoded Masterlist
 *
 * @type ByteString
 * @return the encoded master list
 */
MasterList.prototype.getBytes = function() {
	return this.masterList;
}



MasterList.prototype.toString = function() {
	return this.signerCN + " (" + this.signingTime.toString(ASCII) + ")";
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Master List Signer
 */



X509CertificateGenerator = require('scsh/x509/X509CertificateGenerator').X509CertificateGenerator;
PKIXCommon = require('scsh/x509/PKIXCommon').PKIXCommon;



function MasterListSigner() {
	this.cms = new CMSGenerator(CMSGenerator.TYPE_SIGNED_DATA);

	// Default Distinguished Names
	this.cscaDN = { C:"UT", O:"IT", OU:"SEC", CN:"CSCA Self Signed" };
	this.mlsDN = { C:"UT", O:"IT", OU:"SEC", CN:"CSCA Master List Signer" };
}

exports.MasterListSigner = MasterListSigner;



/**
 * Set a list of CSCA certificates to this Master List
 *
 * @param {X509[]} the list of CSCA certificates
 */
MasterListSigner.prototype.setCSCACertificateList = function(certificates) {
	var content = new ASN1(ASN1.SEQUENCE);

	// Add CscaMasterList Version
	content.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));

	// Add set of certificates
	var certSet = new ASN1(ASN1.SET);
	for (var i = 0; i < certificates.length; i++) {
		certSet.add(new ASN1(certificates[i].getBytes()));
	}
	// Add CSCA certificate
	certSet.add(new ASN1(this.cscaCert.getBytes()));
	content.add(certSet);

	this.cms.setDataContent(content.getBytes());
}



/**
 * Add certificates which belong to the CMS SignedData type.
 * According to the TR-CSCA countersigning and Master List Issuance V1.0
 * the signer certificate must be included and the csca certificate should be
 * included.
 *
 * @param {X509} signerCertificate the Master List Signer Certificate
 * @param {X509} cscaCertificate the optional CSCA certificate
 */
MasterListSigner.prototype.addSignerCertificates = function(signerCertificate, cscaCertificate) {
	this.cms.addCertificate(signerCertificate);
	if (cscaCertificate) {
		this.cms.addCertificate(cscaCertificate);
	}
}



/**
 * Add signing key, certificate and hash algorithm to this Master List Signer.
 *
 * @param {Key} signingKey the signing key of this Master List Signer
 * @param {X509} signerCertificate the signer certificate of this Master List Signer
 * @param {ByteString} hashOID the hash algorithm OID used for signing
 */
MasterListSigner.prototype.addSignerWithIssuerAndSerial = function(signingKey, signerCertificate, hashOID) {
	this.cms.addSigner(signingKey, signerCertificate, hashOID);
}



/**
 * Add signing key, certificate and hash algorithm to this Master List Signer.
 *
 * @param {Key} signingKey the signing key of this Master List Signer
 * @param {X509} signerCertificate the signer certificate of this Master List Signer
 * @param {ByteString} hashOID the hash algorithm OID used for signing
 */
MasterListSigner.prototype.addSignerWithSubjectKeyID = function(signingKey, signerCertificate, hashOID) {
	var keyID = signerCertificate.getNative().getExtensionValue("2.5.29.14").bytes(4);
	this.cms.addSigner(signingKey, keyID, hashOID);
}



/**
 * Helper function to generate certificates
 *
 * @param {Key} priKey the signing key
 * @param {Key} pubKey the certificates public key
 * @param {Object} issuer the issuer name
 * @param {Object} subject the subject name
 * @param {Key} signerPubKey the optional signer's public key which will be referenced in the authority key identifier
 */
MasterListSigner.prototype.generateCertificate = function(priKey, pubKey, issuer, subject, signerPubKey) {
	var crypto = new Crypto();

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString("01", HEX));
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);

	x.setIssuer(issuer);
	var t = new Date();
	x.setNotBefore(t);
	x.setNotAfter(PKIXCommon.addDays(t, 180));
	x.setSubject(subject);

	x.setPublicKey(pubKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );

	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	if (signerPubKey) {
		x.addAuthorityKeyIdentifierExtension(signerPubKey);
	}

	var cert = x.generateX509Certificate(priKey);
	return cert;
}



/**
 * Generate CSCA key pair and root certificate
 *
 * @param {Object} dn the optional distinguished name
 */
MasterListSigner.prototype.setupCSCA = function(dn) {
	if (dn) {
		this.cscaDN = dn;
	}

	// CA Key Pair
	this.cscaPriKey = new Key();
	this.cscaPriKey.setType(Key.PRIVATE);
	this.cscaPubKey = new Key();
	this.cscaPubKey.setType(Key.PUBLIC);
	this.cscaPubKey.setSize(2048);
	var crypto = new Crypto();
	crypto.generateKeyPair(Crypto.RSA, this.cscaPubKey, this.cscaPriKey);

	// CA Root Certificate
	this.cscaCert = this.generateCertificate(this.cscaPriKey, this.cscaPubKey, this.cscaDN, this.cscaDN, this.cscaPubKey);
}



/**
 * Generate Master List Signer key pair and certificate
 * issued by the CSCA
 *
 * @param {Object} dn the optional distinguished name
 */
MasterListSigner.prototype.setupSigner = function(dn) {
	if (!this.cscaPriKey || !this.cscaCert) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Missing CSCA private key or certificate");
	}

	if (dn) {
		this.mlsDN = dn;
	}

	// Master List Key Pair
	this.mlPriKey = new Key();
	this.mlPriKey.setType(Key.PRIVATE);
	this.mlPubKey = new Key();
	this.mlPubKey.setType(Key.PUBLIC);
	this.mlPubKey.setSize(2048);
	var crypto = new Crypto();
	crypto.generateKeyPair(Crypto.RSA, this.mlPubKey, this.mlPriKey);

	// Master List Signer Certificate
	this.mlCert = this.generateCertificate(this.cscaPriKey, this.mlPubKey, this.cscaDN, this.mlsDN, this.cscaCert.getPublicKey());

	// Setup this signer
	this.addSignerCertificates(this.mlCert, this.cscaCert);
	this.addSignerWithSubjectKeyID(this.mlPriKey, this.mlCert, new ByteString("id-sha256", OID));
}


/**
 * Quick setup.
 * Generate the signing key and corresponding certificates
 */
MasterListSigner.prototype.setup = function() {
	this.setupCSCA();
	this.setupSigner();
}



/**
 * Generate the Master List.
 *
 * Prior to generating the Master List, the setup functions addSignerCertificates and addSignerWithIssuerAndSerial/addSignerWithSubjectKeyID must be called.
 *
 * @type ByteString
 * @return the Master List
 */
MasterListSigner.prototype.generateMasterList = function() {
	return this.cms.generate(new ByteString("id-icao-cscaMasterList", OID));
}



/**
 * Reset signer and all certificates. Keep generated keys.
 */
MasterListSigner.prototype.resetCMS = function() {
	this.cms = new CMSGenerator(CMSGenerator.TYPE_SIGNED_DATA);
}/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Generate invalid master lists for test purpose
 */



MasterListSigner = require('scsh/mrtd/MasterListSigner').MasterListSigner;
X509CertificateGenerator = require('scsh/x509/X509CertificateGenerator').X509CertificateGenerator;
PKIXCommon = require('scsh/x509/PKIXCommon').PKIXCommon;



function MasterListTestDataGen () {
	MasterListSigner.call(this);
}
MasterListTestDataGen.prototype = Object.create(MasterListSigner.prototype);
MasterListTestDataGen.constructor = MasterListTestDataGen;

exports.MasterListTestDataGen = MasterListTestDataGen;



/**
 * Generate CSCA key pair and root certificate
 *
 * @param {Object} dn the optional distinguished name
 * @param {Date} notBefore the optional effective date of the certificate
 * @param {Date} notAfter the optional expiration date of the certificate
 */
MasterListSigner.prototype.setupCSCA = function(dn, notBefore, notAfter) {
	if (dn) {
		this.cscaDN = dn;
	}

	// CA Key Pair
	this.cscaPriKey = new Key();
	this.cscaPriKey.setType(Key.PRIVATE);
	this.cscaPubKey = new Key();
	this.cscaPubKey.setType(Key.PUBLIC);
	this.cscaPubKey.setSize(2048);
	var crypto = new Crypto();
	crypto.generateKeyPair(Crypto.RSA, this.cscaPubKey, this.cscaPriKey);

	// CA Root Certificate
	this.cscaCert = this.generateCertificate(this.cscaPriKey, this.cscaPubKey, this.cscaDN, this.cscaDN, this.cscaPubKey, notBefore, notAfter);
}



/**
 * Quick setup.
 * Generate the signing key and corresponding certificates
 */
MasterListSigner.prototype.setupWithAlternativeSID = function() {
	this.setupCSCA();
	this.setupSignerWithAlternativeSID();
}



/**
 * Generate Master List Signer key pair and certificate
 * issued by the CSCA
 * @param {Date} notBefore the optional effective date of the certificate
 * @param {Date} notAfter the optional expiration date of the certificate
 */
MasterListSigner.prototype.setupSignerWithAlternativeSID = function(notBefore, notAfter) {
	if (!this.cscaPriKey || !this.cscaCert) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Missing CSCA private key or certificate");
	}

	// Master List Key Pair
	this.mlPriKey = new Key();
	this.mlPriKey.setType(Key.PRIVATE);
	this.mlPubKey = new Key();
	this.mlPubKey.setType(Key.PUBLIC);
	this.mlPubKey.setSize(2048);
	var crypto = new Crypto();
	crypto.generateKeyPair(Crypto.RSA, this.mlPubKey, this.mlPriKey);

	// Master List Signer Certificate
	this.mlsDN = { C:"UT", O:"IT", OU:"SEC", CN:"CSCA Master List Signer" };
	this.mlCert = this.generateCertificate(this.cscaPriKey, this.mlPubKey, this.cscaDN, this.mlsDN, this.cscaCert.getPublicKey(), notBefore, notAfter);

	// Setup this signer
	this.addSignerCertificates(this.mlCert, this.cscaCert);
	this.addSignerWithIssuerAndSerial(this.mlPriKey, this.mlCert, new ByteString("id-sha256", OID));
}



/**
 * Generate the Master List with an incorrect eContentType
 *
 * @type ByteString
 * @return the encoded Master List with an incorrect eContentType
 */
MasterListSigner.prototype.generateMasterListWithIncorrectEContentType = function() {
	return this.cms.generate(new ByteString("0.4.0.127.0.7.3.2.2", OID));
}



/**
 * Generate the Master List with an invalid signature
 *
 * @type ByteString
 * @return the encoded Master List with an invalid signature
 */
MasterListSigner.prototype.generateMasterListWithInvalidSignature = function() {
	var encodedML =  this.cms.generate(new ByteString("id-icao-cscaMasterList", OID));
	return this.invalidateSignature(encodedML);
}



/**
 * Manipulate the signature of a given Master List
 *
 * @param {ByteString} encodedML the encoded Master List
 * @type ByteString
 * @return the encoded Master List with an invalid signature
 */
MasterListTestDataGen.prototype.invalidateSignature = function(encodedML) {
	var mlcms = new CMSSignedData(encodedML);
	assert(mlcms.isSignerInfoSignatureValid(0));

	// Invalidate signature
	var signature = mlcms.getSignerInfoSignature(0);
	var invSig = signature.add(1);

	// Replace signature in encoded master list with the invalid one

	var offs = encodedML.find(signature);
	var upperPart = encodedML.bytes(0, offs);
	var lowerPart = encodedML.bytes(offs + signature.length);
	var invML = upperPart.concat(invSig).concat(lowerPart);

	var mlcms = new CMSSignedData(invML);
	assert(!mlcms.isSignerInfoSignatureValid(0));

	return invML;
}



/**
 * Helper function to generate certificates
 *
 * @param {Key} priKey the signing key
 * @param {Key} pubKey the certificates public key
 * @param {Object} issuer the issuer name
 * @param {Object} subject the subject name
 * @param {Key} signerPubKey the optional signer's public key which will be referenced in the authority key identifier
 * @param {Date} notBefore the optional effective date of the certificate
 * @param {Date} notAfter the optional expiration date of the certificate
 */
MasterListTestDataGen.prototype.generateCertificate = function(priKey, pubKey, issuer, subject, signerPubKey, notBefore, notAfter) {
	var crypto = new Crypto();

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString("01", HEX));
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);

	x.setIssuer(issuer);
	if (notBefore && notAfter) {
		x.setNotBefore(notBefore);
		x.setNotAfter(notAfter);
	} else {
		var t = new Date();
		x.setNotBefore(t);
		x.setNotAfter(PKIXCommon.addDays(t, 180));
	}
	x.setSubject(subject);

	x.setPublicKey(pubKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );

	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	if (signerPubKey) {
		x.addAuthorityKeyIdentifierExtension(signerPubKey);
	}

	var cert = x.generateX509Certificate(priKey);
	return cert;
}/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Register of CardContact object identifier
 */


ASN1.defineObjectIdentifier("CardContact", "1.3.6.1.4.1.24991");

ASN1.defineObjectIdentifier("OpenSCDP", "CardContact 1");
ASN1.defineObjectIdentifier("cc-iso7816", "CardContact 2");
ASN1.defineObjectIdentifier("cc-pki", "CardContact 3");
ASN1.defineObjectIdentifier("cc-format", "CardContact 4");
ASN1.defineObjectIdentifier("cc-gp-profiles", "CardContact 16");

ASN1.defineObjectIdentifier("scsh3", "OpenSCDP 1");
ASN1.defineObjectIdentifier("scsh3gui", "OpenSCDP 2");

ASN1.defineObjectIdentifier("SmartCard-HSM", "cc-iso7816 1");
ASN1.defineObjectIdentifier("cc-apdutest", "cc-iso7816 2");
ASN1.defineObjectIdentifier("cc-packages", "cc-iso7816 127");

ASN1.defineObjectIdentifier("cc-roles", "cc-pki 1");
ASN1.defineObjectIdentifier("cc-role-sc-hsm", "cc-roles 1");
ASN1.defineObjectIdentifier("cc-role-bw-se", "cc-roles 2");

ASN1.defineObjectIdentifier("cc-extensions", "cc-pki 2");
ASN1.defineObjectIdentifier("id-IMPU", "cc-extensions 1");
ASN1.defineObjectIdentifier("id-key-domain-uid", "cc-extensions 2");
ASN1.defineObjectIdentifier("id-security-classification", "cc-extensions 3");

ASN1.defineObjectIdentifier("cc-ff-deviceid", "cc-format 1");
ASN1.defineObjectIdentifier("cc-ff-kdm", "cc-format 2");
ASN1.defineObjectIdentifier("cc-ff-pka", "cc-format 3");
ASN1.defineObjectIdentifier("cc-ff-kda", "cc-format 4");
ASN1.defineObjectIdentifier("cc-ff-kdc", "cc-format 5");

ASN1.defineObjectIdentifier("cc-kdc-groupvpn-v1", "cc-ff-kdc 1 1");
ASN1.defineObjectIdentifier("cc-kdc-psk-v1", "cc-ff-kdc 2 1");
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Register of predefined object identifier for ICAO applications
 */


ASN1.defineObjectIdentifier("id-icao", "2.23.136");
ASN1.defineObjectIdentifier("id-icao-mrtd", "id-icao 1");
ASN1.defineObjectIdentifier("id-icao-mrtd-security", "id-icao-mrtd 1");
ASN1.defineObjectIdentifier("id-icao-ldsSecurityObject", "id-icao-mrtd-security 1");
ASN1.defineObjectIdentifier("id-icao-cscaMasterList", "id-icao-mrtd-security 2");
ASN1.defineObjectIdentifier("id-icao-cscaMasterListSigningKey", "id-icao-mrtd-security 3");


ASN1.defineObjectIdentifier("bsi-de", "itu-t(0) identified-organization(4) etsi(0) reserved(127) etsi-identified-organization(0) 7");

// ECC from TR 03111
ASN1.defineObjectIdentifier("id-ecc", "bsi-de algorithms(1) 1");

ASN1.defineObjectIdentifier("ansi-X9-62", "iso(1) member-body(2) us(840) 10045");
ASN1.defineObjectIdentifier("id-publicKeyType", "ansi-X9-62 keyType(2)");
ASN1.defineObjectIdentifier("id-ecPublicKey", "id-publicKeyType 1");
ASN1.defineObjectIdentifier("id-fieldType", "ansi-X9-62 fieldType(1)");
ASN1.defineObjectIdentifier("prime-field", "id-fieldType 1");
ASN1.defineObjectIdentifier("id-ecSigType", "ansi-X9-62 signatures(4)");

ASN1.defineObjectIdentifier("id-ecTLVKeyFormat", "id-ecc keyType(2) 2");
ASN1.defineObjectIdentifier("id-ecTLVPublicKey", "id-ecTLVKeyFormat unrestricted(1)");
ASN1.defineObjectIdentifier("ecdsa-plain-signatures", "id-ecc signatures(4) 1");
ASN1.defineObjectIdentifier("ecdsa-plain-SHA1", "ecdsa-plain-signatures 1");
ASN1.defineObjectIdentifier("ecdsa-plain-SHA224", "ecdsa-plain-signatures 2");
ASN1.defineObjectIdentifier("ecdsa-plain-SHA256", "ecdsa-plain-signatures 3");
ASN1.defineObjectIdentifier("ecdsa-plain-SHA384", "ecdsa-plain-signatures 4");
ASN1.defineObjectIdentifier("ecdsa-plain-SHA512", "ecdsa-plain-signatures 5");
ASN1.defineObjectIdentifier("ecdsa-plain-RIPEMD160", "ecdsa-plain-signatures 6");

ASN1.defineObjectIdentifier("ecka-eg", "id-ecc key-establishment(5) 1");
ASN1.defineObjectIdentifier("ecka-eg-X963KDF", "ecka-eg 1");
ASN1.defineObjectIdentifier("ecka-eg-X963KDF-SHA1", "ecka-eg-X963KDF 1");
ASN1.defineObjectIdentifier("ecka-eg-X963KDF-SHA224", "ecka-eg-X963KDF 2");
ASN1.defineObjectIdentifier("ecka-eg-X963KDF-SHA256", "ecka-eg-X963KDF 3");
ASN1.defineObjectIdentifier("ecka-eg-X963KDF-SHA384", "ecka-eg-X963KDF 4");
ASN1.defineObjectIdentifier("ecka-eg-X963KDF-SHA512", "ecka-eg-X963KDF 5");
ASN1.defineObjectIdentifier("ecka-eg-X963KDF-RIPEMD160", "ecka-eg-X963KDF 6");
ASN1.defineObjectIdentifier("ecka-eg-SessionKDF", "ecka-eg 2");
ASN1.defineObjectIdentifier("ecka-eg-SessionKDF-3DES", "ecka-eg-SessionKDF 1");
ASN1.defineObjectIdentifier("ecka-eg-SessionKDF-AES128", "ecka-eg-SessionKDF 2");
ASN1.defineObjectIdentifier("ecka-eg-SessionKDF-AES192", "ecka-eg-SessionKDF 3");
ASN1.defineObjectIdentifier("ecka-eg-SessionKDF-AES256", "ecka-eg-SessionKDF 4");

ASN1.defineObjectIdentifier("ecka-dh", "id-ecc key-establishment(5) 2");
ASN1.defineObjectIdentifier("ecka-dh-X963KDF", "ecka-dh 1");
ASN1.defineObjectIdentifier("ecka-dh-X963KDF-SHA1", "ecka-dh-X963KDF 1");
ASN1.defineObjectIdentifier("ecka-dh-X963KDF-SHA224", "ecka-dh-X963KDF 2");
ASN1.defineObjectIdentifier("ecka-dh-X963KDF-SHA256", "ecka-dh-X963KDF 3");
ASN1.defineObjectIdentifier("ecka-dh-X963KDF-SHA384", "ecka-dh-X963KDF 4");
ASN1.defineObjectIdentifier("ecka-dh-X963KDF-SHA512", "ecka-dh-X963KDF 5");
ASN1.defineObjectIdentifier("ecka-dh-X963KDF-RIPEMD160", "ecka-dh-X963KDF 6");
ASN1.defineObjectIdentifier("ecka-dh-SessionKDF", "ecka-dh 2");
ASN1.defineObjectIdentifier("ecka-dh-SessionKDF-3DES", "ecka-dh-SessionKDF 1");
ASN1.defineObjectIdentifier("ecka-dh-SessionKDF-AES128", "ecka-dh-SessionKDF 2");
ASN1.defineObjectIdentifier("ecka-dh-SessionKDF-AES192", "ecka-dh-SessionKDF 3");
ASN1.defineObjectIdentifier("ecka-dh-SessionKDF-AES256", "ecka-dh-SessionKDF 4");

ASN1.defineObjectIdentifier("ecStdCurvesAndGeneration", "iso(1) identified-organization(3) teletrust(36) algorithm(3) signature-algorithm(3) ecSign(2) ecStdCurvesAndGeneration(8)");
ASN1.defineObjectIdentifier("ellipticCurve", "ecStdCurvesAndGeneration 1");
ASN1.defineObjectIdentifier("versionOne", "ellipticCurve 1");
ASN1.defineObjectIdentifier("brainpoolP160r1", "versionOne 1");
ASN1.defineObjectIdentifier("brainpoolP160t1", "versionOne 2");
ASN1.defineObjectIdentifier("brainpoolP192r1", "versionOne 3");
ASN1.defineObjectIdentifier("brainpoolP192t1", "versionOne 4");
ASN1.defineObjectIdentifier("brainpoolP224r1", "versionOne 5");
ASN1.defineObjectIdentifier("brainpoolP224t1", "versionOne 6");
ASN1.defineObjectIdentifier("brainpoolP256r1", "versionOne 7");
ASN1.defineObjectIdentifier("brainpoolP256t1", "versionOne 8");
ASN1.defineObjectIdentifier("brainpoolP320r1", "versionOne 9");
ASN1.defineObjectIdentifier("brainpoolP320t1", "versionOne 10");
ASN1.defineObjectIdentifier("brainpoolP384r1", "versionOne 11");
ASN1.defineObjectIdentifier("brainpoolP384t1", "versionOne 12");
ASN1.defineObjectIdentifier("brainpoolP512r1", "versionOne 13");
ASN1.defineObjectIdentifier("brainpoolP512t1", "versionOne 14");


// PACE from TR 03110 (EAC 2.0)
ASN1.defineObjectIdentifier("id-PACE", "bsi-de protocols(2) smartcard(2) 4");
ASN1.defineObjectIdentifier("id-PACE-DH-GM", "id-PACE 1");
ASN1.defineObjectIdentifier("id-PACE-DH-GM-3DES-CBC-CBC", "id-PACE-DH-GM 1");
ASN1.defineObjectIdentifier("id-PACE-DH-GM-AES-CBC-CMAC-128", "id-PACE-DH-GM 2");
ASN1.defineObjectIdentifier("id-PACE-DH-GM-AES-CBC-CMAC-192", "id-PACE-DH-GM 3");
ASN1.defineObjectIdentifier("id-PACE-DH-GM-AES-CBC-CMAC-256", "id-PACE-DH-GM 4");

ASN1.defineObjectIdentifier("id-PACE-ECDH-GM", "id-PACE 2");
ASN1.defineObjectIdentifier("id-PACE-ECDH-GM-3DES-CBC-CBC", "id-PACE-ECDH-GM 1");
ASN1.defineObjectIdentifier("id-PACE-ECDH-GM-AES-CBC-CMAC-128", "id-PACE-ECDH-GM 2");
ASN1.defineObjectIdentifier("id-PACE-ECDH-GM-AES-CBC-CMAC-192", "id-PACE-ECDH-GM 3");
ASN1.defineObjectIdentifier("id-PACE-ECDH-GM-AES-CBC-CMAC-256", "id-PACE-ECDH-GM 4");

ASN1.defineObjectIdentifier("id-PACE-DH-IM", "id-PACE 3");
ASN1.defineObjectIdentifier("id-PACE-DH-IM-3DES-CBC-CBC", "id-PACE-DH-IM 1");
ASN1.defineObjectIdentifier("id-PACE-DH-IM-AES-CBC-CMAC-128", "id-PACE-DH-IM 2");
ASN1.defineObjectIdentifier("id-PACE-DH-IM-AES-CBC-CMAC-192", "id-PACE-DH-IM 3");
ASN1.defineObjectIdentifier("id-PACE-DH-IM-AES-CBC-CMAC-256", "id-PACE-DH-IM 4");

ASN1.defineObjectIdentifier("id-PACE-ECDH-IM", "id-PACE 4");
ASN1.defineObjectIdentifier("id-PACE-ECDH-IM-3DES-CBC-CBC", "id-PACE-ECDH-IM 1");
ASN1.defineObjectIdentifier("id-PACE-ECDH-IM-AES-CBC-CMAC-128", "id-PACE-ECDH-IM 2");
ASN1.defineObjectIdentifier("id-PACE-ECDH-IM-AES-CBC-CMAC-192", "id-PACE-ECDH-IM 3");
ASN1.defineObjectIdentifier("id-PACE-ECDH-IM-AES-CBC-CMAC-256", "id-PACE-ECDH-IM 4");


// CA from TR 03110 (EAC 2.0)
ASN1.defineObjectIdentifier("id-CA", "bsi-de protocols(2) smartcard(2) 3");

ASN1.defineObjectIdentifier("id-CA-DH", "id-CA 1");
ASN1.defineObjectIdentifier("id-CA-DH-3DES-CBC-CBC", "id-CA-DH 1");
ASN1.defineObjectIdentifier("id-CA-DH-AES-CBC-CMAC-128", "id-CA-DH 2");
ASN1.defineObjectIdentifier("id-CA-DH-AES-CBC-CMAC-192", "id-CA-DH 3");
ASN1.defineObjectIdentifier("id-CA-DH-AES-CBC-CMAC-256", "id-CA-DH 4");

ASN1.defineObjectIdentifier("id-CA-ECDH", "id-CA 2");
ASN1.defineObjectIdentifier("id-CA-ECDH-3DES-CBC-CBC", "id-CA-ECDH 1");
ASN1.defineObjectIdentifier("id-CA-ECDH-AES-CBC-CMAC-128", "id-CA-ECDH 2");
ASN1.defineObjectIdentifier("id-CA-ECDH-AES-CBC-CMAC-192", "id-CA-ECDH 3");
ASN1.defineObjectIdentifier("id-CA-ECDH-AES-CBC-CMAC-256", "id-CA-ECDH 4");


// CA from TR 03110 (EAC 2.0)
ASN1.defineObjectIdentifier("id-PK", "bsi-de protocols(2) smartcard(2) 1 ");

ASN1.defineObjectIdentifier("id-PK-DH", "id-PK 1");
ASN1.defineObjectIdentifier("id-PK-ECDH", "id-PK 2");


ASN1.defineObjectIdentifier("id-TA", "bsi-de protocols(2) smartcard(2) 2");

ASN1.defineObjectIdentifier("id-TA-RSA", "id-TA 1");
ASN1.defineObjectIdentifier("id-TA-RSA-v1-5-SHA-1", "id-TA-RSA 1");
ASN1.defineObjectIdentifier("id-TA-RSA-v1-5-SHA-256", "id-TA-RSA 2");
ASN1.defineObjectIdentifier("id-TA-RSA-PSS-SHA-1", "id-TA-RSA 3");
ASN1.defineObjectIdentifier("id-TA-RSA-PSS-SHA-256", "id-TA-RSA 4");
ASN1.defineObjectIdentifier("id-TA-RSA-v1-5-SHA-512", "id-TA-RSA 5");
ASN1.defineObjectIdentifier("id-TA-RSA-PSS-SHA-512", "id-TA-RSA 6");

ASN1.defineObjectIdentifier("id-TA-ECDSA", "id-TA 2");
ASN1.defineObjectIdentifier("id-TA-ECDSA-SHA-1", "id-TA-ECDSA 1");
ASN1.defineObjectIdentifier("id-TA-ECDSA-SHA-224", "id-TA-ECDSA 2");
ASN1.defineObjectIdentifier("id-TA-ECDSA-SHA-256", "id-TA-ECDSA 3");
ASN1.defineObjectIdentifier("id-TA-ECDSA-SHA-384", "id-TA-ECDSA 4");
ASN1.defineObjectIdentifier("id-TA-ECDSA-SHA-512", "id-TA-ECDSA 5");


ASN1.defineObjectIdentifier("id-RI", "bsi-de protocols(2) smartcard(2) 5");

ASN1.defineObjectIdentifier("id-RI-DH", "id-RI 1");
ASN1.defineObjectIdentifier("id-RI-DH-SHA-1", "id-RI-DH 1");
ASN1.defineObjectIdentifier("id-RI-DH-SHA-224", "id-RI-DH 2");
ASN1.defineObjectIdentifier("id-RI-DH-SHA-256", "id-RI-DH 3");

ASN1.defineObjectIdentifier("id-RI-ECDH", "id-RI 2");
ASN1.defineObjectIdentifier("id-RI-ECDH-SHA-1", "id-RI-ECDH 1");
ASN1.defineObjectIdentifier("id-RI-ECDH-SHA-224", "id-RI-ECDH 2");
ASN1.defineObjectIdentifier("id-RI-ECDH-SHA-256", "id-RI-ECDH 3");


ASN1.defineObjectIdentifier("id-CI", "bsi-de protocols(2) smartcard(2) 6");


ASN1.defineObjectIdentifier("id-auxiliaryData", "bsi-de applications(3) mrtd(1) 4");
ASN1.defineObjectIdentifier("id-DateOfBirth", "id-auxiliaryData 1");
ASN1.defineObjectIdentifier("id-DateOfExpiry", "id-auxiliaryData 2");
ASN1.defineObjectIdentifier("id-CommunityID", "id-auxiliaryData 3");

ASN1.defineObjectIdentifier("id-extensions", "bsi-de applications(3) mrtd(1) 3");
ASN1.defineObjectIdentifier("id-description", "id-extensions 1");
ASN1.defineObjectIdentifier("id-plainFormat", "id-description 1");
ASN1.defineObjectIdentifier("id-htmlFormat", "id-description 2");
ASN1.defineObjectIdentifier("id-pdfFormat", "id-description 3");
ASN1.defineObjectIdentifier("id-sector", "id-extensions 2");

ASN1.defineObjectIdentifier("id-eIDSecurity", "bsi-de protocols(2) smartcard(2) 7");
ASN1.defineObjectIdentifier("id-PT", "bsi-de protocols(2) smartcard(2) 8");
 
ASN1.defineObjectIdentifier("id-roles", "bsi-de applications(3) mrtd(1) 2");

// From BSI/TG-03129
ASN1.defineObjectIdentifier("id-DefectList", "bsi-de applications(3) mrtd(1) 5");

ASN1.defineObjectIdentifier("id-AuthDefect", "id-DefectList 1");
ASN1.defineObjectIdentifier("id-CertRevoked", "id-AuthDefect 1");
ASN1.defineObjectIdentifier("id-CertReplaced", "id-AuthDefect 2");
ASN1.defineObjectIdentifier("id-ChipAuthKeyRevoked", "id-AuthDefect 3");
ASN1.defineObjectIdentifier("id-ActiveAuthKeyRevoked", "id-AuthDefect 4");
ASN1.defineObjectIdentifier("id-ActiveAuthKeyRevoked", "id-AuthDefect 4");

ASN1.defineObjectIdentifier("id-ePassportDefect", "id-DefectList 2");
ASN1.defineObjectIdentifier("id-ePassportDGMalformed", "id-ePassportDefect 1");
ASN1.defineObjectIdentifier("id-SODInvalid", "id-ePassportDefect 2");

ASN1.defineObjectIdentifier("id-eIDDefect", "id-DefectList 3");
ASN1.defineObjectIdentifier("id-eIDDGMalformed", "id-eIDDefect 1");
ASN1.defineObjectIdentifier("id-eIDIntegrity", "id-eIDDefect 2");

ASN1.defineObjectIdentifier("id-DocumentDefect", "id-DefectList 4");
ASN1.defineObjectIdentifier("id-CardSecurityMalformed", "id-DocumentDefect 1");
ASN1.defineObjectIdentifier("id-ChipSecurityMalformed", "id-DocumentDefect 2");
ASN1.defineObjectIdentifier("id-PowerDownReq", "id-DocumentDefect 3");

ASN1.defineObjectIdentifier("id-ListContentDescription", "bsi-de applications(3) mrtd(1) 6");


ASN1.defineObjectIdentifier("id-IS", "id-roles 1");
ASN1.defineObjectIdentifier("id-AT", "id-roles 2");
ASN1.defineObjectIdentifier("id-ST", "id-roles 3");

ASN1.defineObjectIdentifier("id-eID", "bsi-de applications(3) 2");
ASN1.defineObjectIdentifier("id-SecurityObject", "id-eID 1");

ASN1.defineObjectIdentifier("id-BlackList", "id-eID 2");


ASN1.defineObjectIdentifier("standardizedDomainParameter", "bsi-de algorithms(1) 2");


// From CSN 369791
ASN1.defineObjectIdentifier("id-csn-369791", "iso(1) member-body(2) cz(203) moi(7064) orpeg(1) cdbp(1) csn369791(369791)");
ASN1.defineObjectIdentifier("id-csn-369791-tls-client", "id-csn-369791 1");
ASN1.defineObjectIdentifier("id-csn-369791-tls-server", "id-csn-369791 2");

// ASN1.defineObjectIdentifier("", "");
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Load all object identifier definitions
 */

load("pkix.js");
load("icao.js");
load("pca.js");
load("cardcontact.js");
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Register of predefined object identifier for PCA applications
 */



ASN1.defineObjectIdentifier("id-BSNk-scheme-nl", "2.16.528.1.1003.10");

ASN1.defineObjectIdentifier("id-PCA", "id-BSNk-scheme-nl 9");

ASN1.defineObjectIdentifier("id-PCA-info", "id-PCA 1");

ASN1.defineObjectIdentifier("id-PCA-AT", "id-PCA 2");

ASN1.defineObjectIdentifier("id-PCA-PIP-formats", "id-PCA 3");

ASN1.defineObjectIdentifier("id-PCA-PIP", "id-PCA-PIP-formats 1");
ASN1.defineObjectIdentifier("id-PCA-PIP-compressed", "id-PCA-PIP-formats 2");
ASN1.defineObjectIdentifier("id-PCA-PIP-reduced-compressed", "id-PCA-PIP-formats 3");
ASN1.defineObjectIdentifier("id-PCA-PIP-reduced-uncompressed", "id-PCA-PIP-formats 4");

ASN1.defineObjectIdentifier("id-PCA-PP-formats", "id-PCA 4");

ASN1.defineObjectIdentifier("id-PCA-PP", "id-PCA-PP-formats 1");
ASN1.defineObjectIdentifier("id-PCA-PP-compressed", "id-PCA-PP-formats 2");
ASN1.defineObjectIdentifier("id-PCA-PP-reduced-compressed", "id-PCA-PP-formats 3");
ASN1.defineObjectIdentifier("id-PCA-PP-reduced-uncompressed", "id-PCA-PP-formats 4");

ASN1.defineObjectIdentifier("id-PCA-PI-formats", "id-PCA 5");

ASN1.defineObjectIdentifier("id-PCA-PI", "id-PCA-PI-formats 1");
ASN1.defineObjectIdentifier("id-PCA-PI-compressed", "id-PCA-PI-formats 2");
ASN1.defineObjectIdentifier("id-PCA-PI-reduced-compressed", "id-PCA-PI-formats 3");
ASN1.defineObjectIdentifier("id-PCA-PI-reduced-uncompressed", "id-PCA-PI-formats 4");
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Register of predefined object identifier for PKIX applications
 */


ASN1.defineObjectIdentifier("id-pkix", "iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) pkix(7)");

ASN1.defineObjectIdentifier("id-pe", "id-pkix 1");
ASN1.defineObjectIdentifier("id-qt", "id-pkix 2");
ASN1.defineObjectIdentifier("id-kp", "id-pkix 3");
ASN1.defineObjectIdentifier("id-pda", "id-pkix 9");
ASN1.defineObjectIdentifier("id-qcs", "id-pkix 11");
ASN1.defineObjectIdentifier("id-ad", "id-pkix 48");

ASN1.defineObjectIdentifier("id-pe-biometricInfo", "id-pe 2");
ASN1.defineObjectIdentifier("id-pe-qcStatements", "id-pe 3");

ASN1.defineObjectIdentifier("id-pda-dateOfBirth", "id-pda 1");
ASN1.defineObjectIdentifier("id-pda-placeOfBirth", "id-pda 2");
ASN1.defineObjectIdentifier("id-pda-gender", "id-pda 3");
ASN1.defineObjectIdentifier("id-pda-countryOfCitizenship", "id-pda 4");
ASN1.defineObjectIdentifier("id-pda-countryOfResidence", "id-pda 5");

ASN1.defineObjectIdentifier("id-qt-cps", "id-qt 1");
ASN1.defineObjectIdentifier("id-qt-unotice", "id-qt 2");

ASN1.defineObjectIdentifier("id-ad-ocsp", "id-ad 1");
ASN1.defineObjectIdentifier("id-ad-caIssuers", "id-ad 2");
ASN1.defineObjectIdentifier("id-ad-timeStamping", "id-ad 3");
ASN1.defineObjectIdentifier("id-ad-caRepository", "id-ad 5");

ASN1.defineObjectIdentifier("id-at", "joint-iso-ccitt(2) ds(5) 4");

ASN1.defineObjectIdentifier("id-at-name", "id-at 41");
ASN1.defineObjectIdentifier("id-at-surname", "id-at  4");
ASN1.defineObjectIdentifier("id-at-givenName", "id-at 42");
ASN1.defineObjectIdentifier("id-at-initials", "id-at 43");
ASN1.defineObjectIdentifier("id-at-generationQualifier", "id-at 44");
ASN1.defineObjectIdentifier("id-at-commonName", "id-at 3");
ASN1.defineObjectIdentifier("id-at-localityName", "id-at 7");

ASN1.defineObjectIdentifier("id-at-stateOrProvinceName", "id-at 8");
ASN1.defineObjectIdentifier("id-at-organizationName", "id-at 10");
ASN1.defineObjectIdentifier("id-at-organizationalUnitName", "id-at 11");
ASN1.defineObjectIdentifier("id-at-title", "id-at 12");
ASN1.defineObjectIdentifier("id-at-dnQualifier", "id-at 46");
ASN1.defineObjectIdentifier("id-at-countryName", "id-at 6");
ASN1.defineObjectIdentifier("id-at-serialNumber", "id-at 5");
ASN1.defineObjectIdentifier("id-at-postalAddress", "id-at 16");

ASN1.defineObjectIdentifier("id-at-pseudonym", "id-at 65");
ASN1.defineObjectIdentifier("id-domainComponent", "0 9 2342 19200300 100 1 25");

// RFC1274
ASN1.defineObjectIdentifier("id-userId", "ccitt(0) data(9) pss(2342) ucl(19200300) pilot(100) pilotAttributeType(1) 1");

ASN1.defineObjectIdentifier("id-qcs-pkixQCSyntax-v1", "id-qcs 1");

// ETSI TS 101 862
ASN1.defineObjectIdentifier("id-etsi-qcs", "itu-t(0) identified-organization(4) etsi(0) id-qc-profile(1862) 1");
ASN1.defineObjectIdentifier("id-etsi-qcs-QcCompliance", "id-etsi-qcs 1");
ASN1.defineObjectIdentifier("id-etsi-qcs-QcLimitValue", "id-etsi-qcs 2");
ASN1.defineObjectIdentifier("id-etsi-qcs-QcRetentionPeriod", "id-etsi-qcs 3");
ASN1.defineObjectIdentifier("id-etsi-qcs-QcSSCD", "id-etsi-qcs 4");

ASN1.defineObjectIdentifier("pkcs-9", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 9");
ASN1.defineObjectIdentifier("id-emailAddress", "pkcs-9 1");
ASN1.defineObjectIdentifier("id-ce", "joint-iso-ccitt(2) ds(5) 29");
ASN1.defineObjectIdentifier("id-ce-authorityKeyIdentifier", "id-ce 35");
ASN1.defineObjectIdentifier("id-ce-subjectKeyIdentifier", "id-ce 14");
ASN1.defineObjectIdentifier("id-ce-keyUsage", "id-ce 15");
ASN1.defineObjectIdentifier("id-ce-privateKeyUsagePeriod", "id-ce 16");
ASN1.defineObjectIdentifier("id-ce-certificatePolicies", "id-ce 32");
ASN1.defineObjectIdentifier("anyPolicy", "id-ce-certificatePolicies 0");
ASN1.defineObjectIdentifier("id-ce-policyMappings", "id-ce 33");
ASN1.defineObjectIdentifier("id-ce-subjectAltName", "id-ce 17");
ASN1.defineObjectIdentifier("id-ce-issuerAltName", "id-ce 18");
ASN1.defineObjectIdentifier("id-ce-subjectDirectoryAttributes", "id-ce 9");
ASN1.defineObjectIdentifier("id-ce-basicConstraints", "id-ce 19");
ASN1.defineObjectIdentifier("id-ce-nameConstraints", "id-ce 30");
ASN1.defineObjectIdentifier("id-ce-policyConstraints", "id-ce 36");
ASN1.defineObjectIdentifier("id-ce-cRLDistributionPoints", "id-ce 31");
ASN1.defineObjectIdentifier("id-ce-extKeyUsage", "id-ce 37");

ASN1.defineObjectIdentifier("anyExtendedKeyUsage", "id-ce-extKeyUsage 0");

ASN1.defineObjectIdentifier("id-kp-serverAuth", "id-kp 1");
ASN1.defineObjectIdentifier("id-kp-clientAuth", "id-kp 2");
ASN1.defineObjectIdentifier("id-kp-codeSigning", "id-kp 3");
ASN1.defineObjectIdentifier("id-kp-emailProtection", "id-kp 4");
ASN1.defineObjectIdentifier("id-kp-timeStamping", "id-kp 8");
ASN1.defineObjectIdentifier("id-kp-OCSPSigning", "id-kp 9");

ASN1.defineObjectIdentifier("microsoft", "1 3 6 1 4 1 311");
ASN1.defineObjectIdentifier("szOID_KP_SMARTCARD_LOGON", "microsoft 20 2 2");
ASN1.defineObjectIdentifier("szOID_NT_PRINCIPAL_NAME", "microsoft 20 2 3");

ASN1.defineObjectIdentifier("id-ce-inhibitAnyPolicy", "id-ce 54");

ASN1.defineObjectIdentifier("id-ce-freshestCRL", "id-ce 46");
ASN1.defineObjectIdentifier("id-pe-authorityInfoAccess", "id-pe 1");
ASN1.defineObjectIdentifier("id-pe-subjectInfoAccess", "id-pe 11");
ASN1.defineObjectIdentifier("id-ce-cRLNumber", "id-ce 20");
ASN1.defineObjectIdentifier("id-ce-issuingDistributionPoint", "id-ce 28");



ASN1.defineObjectIdentifier("id-ce-deltaCRLIndicator", "id-ce 27");

ASN1.defineObjectIdentifier("id-ce-cRLReasons", "id-ce 21");
ASN1.defineObjectIdentifier("id-ce-certificateIssuer", "id-ce 29");
ASN1.defineObjectIdentifier("id-ce-holdInstructionCode", "id-ce 23");
ASN1.defineObjectIdentifier("holdInstruction", "joint-iso-itu-t(2) member-body(2) us(840) x9cm(10040) 2");
ASN1.defineObjectIdentifier("id-holdinstruction-none", "holdInstruction 1");
ASN1.defineObjectIdentifier("id-holdinstruction-callissuer", "holdInstruction 2");
ASN1.defineObjectIdentifier("id-holdinstruction-reject", "holdInstruction 3");
ASN1.defineObjectIdentifier("id-ce-invalidityDate", "id-ce 24");


ASN1.defineObjectIdentifier("secp192r1", "iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 1");
ASN1.defineObjectIdentifier("secp192k1", "iso(1) identified-organization(3) certicom(132) curve(0) 31");
ASN1.defineObjectIdentifier("sect163k1", "iso(1) identified-organization(3) certicom(132) curve(0) 1");
ASN1.defineObjectIdentifier("sect163r2", "iso(1) identified-organization(3) certicom(132) curve(0) 15");
ASN1.defineObjectIdentifier("secp224r1", "iso(1) identified-organization(3) certicom(132) curve(0) 33");
ASN1.defineObjectIdentifier("secp224k1", "iso(1) identified-organization(3) certicom(132) curve(0) 32");
ASN1.defineObjectIdentifier("sect233k1", "iso(1) identified-organization(3) certicom(132) curve(0) 26");
ASN1.defineObjectIdentifier("sect233r1", "iso(1) identified-organization(3) certicom(132) curve(0) 27");
ASN1.defineObjectIdentifier("secp256r1", "iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1) 7");
ASN1.defineObjectIdentifier("secp256k1", "iso(1) identified-organization(3) certicom(132) curve(0) 10");
ASN1.defineObjectIdentifier("sect283k1", "iso(1) identified-organization(3) certicom(132) curve(0) 16");
ASN1.defineObjectIdentifier("sect283r1", "iso(1) identified-organization(3) certicom(132) curve(0) 17");
ASN1.defineObjectIdentifier("secp384r1", "iso(1) identified-organization(3) certicom(132) curve(0) 34");
ASN1.defineObjectIdentifier("sect409k1", "iso(1) identified-organization(3) certicom(132) curve(0) 36");
ASN1.defineObjectIdentifier("sect409r1", "iso(1) identified-organization(3) certicom(132) curve(0) 37");
ASN1.defineObjectIdentifier("secp521r1", "iso(1) identified-organization(3) certicom(132) curve(0) 35");
ASN1.defineObjectIdentifier("sect571k1", "iso(1) identified-organization(3) certicom(132) curve(0) 38");
ASN1.defineObjectIdentifier("sect571r1", "iso(1) identified-organization(3) certicom(132) curve(0) 39");

ASN1.defineObjectIdentifier("id-ecDH", "iso(1) identified-organization(3) certicom(132) schemes(1) ecdh(12)");
ASN1.defineObjectIdentifier("id-ecMQV", "iso(1) identified-organization(3) certicom(132) schemes(1) ecmqv(13)");

ASN1.defineObjectIdentifier("id-md2", "iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2");
ASN1.defineObjectIdentifier("id-md5 ", "iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5");
ASN1.defineObjectIdentifier("id-sha1", "iso(1) identified-organization(3) oiw(14) secsig(3) algorithm(2) 26");
ASN1.defineObjectIdentifier("id-sha224", "joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 4");
ASN1.defineObjectIdentifier("id-sha256", "joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 1");
ASN1.defineObjectIdentifier("id-sha384", "joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 2");
ASN1.defineObjectIdentifier("id-sha512", "joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) csor(3) nistalgorithm(4) hashalgs(2) 3");

ASN1.defineObjectIdentifier("dhpublicnumber", "iso(1) member-body(2) us(840) ansi-x942(10046) number-type(2) 1");
ASN1.defineObjectIdentifier("id-keyExchangeAlgorithm", "joint-iso-itu-t(2) country(16) us(840) organization(1) gov(101) dod(2) infosec(1) algorithms(1) 22");

// PKCS#1
ASN1.defineObjectIdentifier("pkcs-1", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-1(1)");
ASN1.defineObjectIdentifier("rsaEncryption", "pkcs-1 1");
ASN1.defineObjectIdentifier("md2WithRSAEncryption", "pkcs-1 2");
ASN1.defineObjectIdentifier("md5WithRSAEncryption", "pkcs-1 4");
ASN1.defineObjectIdentifier("sha1WithRSAEncryption", "pkcs-1 5");
ASN1.defineObjectIdentifier("id-RSAES-OAEP", "pkcs-1 7");
ASN1.defineObjectIdentifier("id-mgf1", "pkcs-1 8");
ASN1.defineObjectIdentifier("id-pSpecified", "pkcs-1 9");
ASN1.defineObjectIdentifier("id-RSASSA-PSS", "pkcs-1 10");
ASN1.defineObjectIdentifier("sha256WithRSAEncryption", "pkcs-1 11");
ASN1.defineObjectIdentifier("sha384WithRSAEncryption", "pkcs-1 12");
ASN1.defineObjectIdentifier("sha512WithRSAEncryption", "pkcs-1 13");

ASN1.defineObjectIdentifier("id-dsa-with-sha1", "iso(1) member-body(2) us(840) x9-57(10040) x9algorithm(4) 3");
ASN1.defineObjectIdentifier("id-dsa-with-sha224", "joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101) csor(3) algorithms(4) id-dsa-with-sha2(3) 1");
ASN1.defineObjectIdentifier("id-dsa-with-sha256", "joint-iso-ccitt(2) country(16) us(840) organization(1) gov(101) csor(3) algorithms(4) id-dsa-with-sha2(3) 2");

ASN1.defineObjectIdentifier("ecdsa-with-SHA1", "iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) 1");
ASN1.defineObjectIdentifier("ecdsa-with-SHA2", "iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3)");
ASN1.defineObjectIdentifier("ecdsa-with-SHA224", "ecdsa-with-SHA2 1");
ASN1.defineObjectIdentifier("ecdsa-with-SHA256", "ecdsa-with-SHA2 2");
ASN1.defineObjectIdentifier("ecdsa-with-SHA384", "ecdsa-with-SHA2 3");
ASN1.defineObjectIdentifier("ecdsa-with-SHA512", "ecdsa-with-SHA2 4");


ASN1.defineObjectIdentifier("CryptographicMessageSyntax", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1)");

ASN1.defineObjectIdentifier("id-alg-ESDH", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 5");
ASN1.defineObjectIdentifier("id-alg-CMS3DESwrap", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 6");
ASN1.defineObjectIdentifier("id-alg-CMSRC2wrap", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) alg(3) 7");
ASN1.defineObjectIdentifier("des-ede3-cbc", "iso(1) member-body(2) us(840) rsadsi(113549) encryptionAlgorithm(3) 7");
ASN1.defineObjectIdentifier("rc2-cbc", "iso(1) member-body(2) us(840) rsadsi(113549) encryptionAlgorithm(3) 2");
ASN1.defineObjectIdentifier("hMAC-SHA1", "iso(1) identified-organization(3) dod(6) internet(1) security(5) mechanisms(5) 8 1 2");

ASN1.defineObjectIdentifier("id-ct-contentInfo", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 6");
ASN1.defineObjectIdentifier("id-data", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 1");
ASN1.defineObjectIdentifier("id-signedData", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 2");
ASN1.defineObjectIdentifier("id-envelopedData", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 3");
ASN1.defineObjectIdentifier("id-digestedData", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 5");
ASN1.defineObjectIdentifier("id-encryptedData", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs7(7) 6");
ASN1.defineObjectIdentifier("id-ct-authData", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) ct(1) 2");
ASN1.defineObjectIdentifier("id-contentType", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 3");
ASN1.defineObjectIdentifier("id-messageDigest", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 4");
ASN1.defineObjectIdentifier("id-signingTime", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 5");
ASN1.defineObjectIdentifier("id-countersignature", "iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs9(9) 6");

ASN1.defineObjectIdentifier("dhSinglePass_StdDH_SHA1KDF", "1.3.133.16.840.63.0.2");

ASN1.defineObjectIdentifier("id-aes", "2.16.840.1.101.3.4.1");
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2015 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Basic helper functions to encode and decode PKCS#1 padding
 */



/**
 * Empty constructor
 */
function PKCS1() {
}

if (typeof(exports) != "undefined")
	exports.PKCS1 = PKCS1;


/**
 * Mask Generation Function 1
 *
 * @param {Crypto} crypto instance providing hash
 * @param {Number} hashalg Hash algorithm (one of Crypto.SHA_xxx)
 * @param {ByteString} mgfSeed Seed byte string
 * @param {Number} maskLen length of requested masked
 * @type ByteString
 * @return the generated mask
 */
PKCS1.MGF1 = function(crypto, hashalg, mgfSeed, maskLen) {
	if ((maskLen < 0) || (maskLen > 256)) {
		throw new Error("maskLen out of range");
	}
	var t = new ByteString("", HEX);

	var c = 0;
	while (t.length < maskLen) {
		t = t.concat(crypto.digest(hashalg, mgfSeed.concat(ByteString.valueOf(c, 4))));
		c++;
	}
	return t.left(maskLen);
}



/**
 * EME-OAEP decoder as defined in PKCS#1 V2.1 chapter 7.1.2
 *
 * @param {Crypto} crypto instance providing hash function
 * @param {ByteString} label additional label for encryption
 * @param {Number} hashalg Hash algorithm (one of Crypto.SHA_xxx)
 * @param {ByteString} em encoded messages after RSA decrypt
 * @type ByteString
 * @return null if padding error or recovered message
 */
PKCS1.decode_EME_OAEP = function(crypto, label, hashalg, em) {
	if (!label) {
		label = new ByteString("", HEX);
	}

	var lHash = crypto.digest(hashalg, label);
	var hLen = lHash.length;
	var y = em.byteAt(0);
	var maskedSeed = em.bytes(1, hLen);
	var maskedDB = em.bytes(1 + hLen);

	var seedMask = PKCS1.MGF1(crypto, hashalg, maskedDB, hLen);
	var seed = maskedSeed.xor(seedMask);
	var dbMask = PKCS1.MGF1(crypto, hashalg, seed, em.length - hLen - 1);
	var DB = maskedDB.xor(dbMask);

	var c1 = y == 0;
	var c2 = DB.left(hLen).equals(lHash);
	var cnt = 0;
	var i = hLen;
	for (; (i < DB.length) && (DB.byteAt(i) != 0x01); i++) {
		cnt += (DB.byteAt(i) == 0x00) ? 1 : 0;
	}

	var c3 = i < DB.length;
	var c4 = cnt == (i - hLen);

	if (!c1 || !c2 || !c3 || !c4) {
		return null;
	}
	return DB.bytes(i + 1);
}



/**
 * EME-PKCS1-v1_5 decoder as defined in PKCS#1 V2.1 chapter 7.2.2
 *
 * @param {ByteString} em encoded messages after RSA decrypt
 * @type ByteString
 * @return null if padding error or recovered message
 */
PKCS1.decode_EME_V15 = function(em) {
	var c1 = em.byteAt(0) == 0;
	var c2 = em.byteAt(1) == 2;

	for (i = 2; (i < em.length) && (em.byteAt(i) != 0x00); i++);

	var c3 = i < em.length;

	if (!c1 || !c2 || !c3) {
		return null;
	}
	return em.bytes(i + 1);
}



PKCS1.ALLFF = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", HEX);

/**
 * EMSA-PKCS-v1_5 encoder as defined in PKCS#1 V2.1 chapter 9.2
 *
 * This method uses the length of the hash to determine the hash algorithm, i.e. MD5(16), SHA-1(20), SHA-224(28), SHA-256(32), SHA-384(48) or SHA-512(64)
 *
 * @param {Number} keysize the key size in bits
 * @param {ByteString} hash the hash value
 * @type ByteString
 * @return the encoded message
 */
PKCS1.encode_EMSA_V15 = function(keysize, hash) {
	switch(hash.length) {
		case 16:
			var oid = new ByteString("id-md5", OID);
			break;
		case 20:
			var oid = new ByteString("id-sha1", OID);
			break;
		case 28:
			var oid = new ByteString("id-sha224", OID);
			break;
		case 32:
			var oid = new ByteString("id-sha256", OID);
			break;
		case 48:
			var oid = new ByteString("id-sha384", OID);
			break;
		case 64:
			var oid = new ByteString("id-sha512", OID);
			break;
		default:
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "Invalid hash length");
	}
	var di = new ASN1(ASN1.SEQUENCE,
			new ASN1(ASN1.SEQUENCE,
				new ASN1(ASN1.OBJECT_IDENTIFIER, oid),
				new ASN1(ASN1.NULL, new ByteString("", HEX))
			    ),
			new ASN1(ASN1.OCTET_STRING, hash)
		     );

	var t = di.getBytes();
	var em = new ByteBuffer("0001", HEX);
	var pslen = (keysize >> 3) - t.length - 3;
	while (pslen > 0) {
		var l = pslen > 256 ? 256 : pslen;
		em.append(PKCS1.ALLFF.left(l));
		pslen -= l;
	}
	em.append(0x00);
	em.append(t);
	return em.toByteString();
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2015 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview PKCS#10 Decoder
 */

var PKIXCommon = require('scsh/x509/PKIXCommon').PKIXCommon;
var X509Name = require('scsh/x509/X509Name').X509Name;


/**
 * Class supporting PKCS#10 certificate signing requests
 *
 * @param {ASN1} req the certificate request
 */
function PKCS10(req) {

	if (req instanceof ASN1) {
		this.req = req;
	} else if (req instanceof ByteString) {
		var asn = new ASN1(req);
		this.req = asn;
	} else {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Argument must be either type of ByteString or ASN1");
	}

	this.reqInfo = this.req.get(0);
	this.sigAlg = this.req.get(1);
	this.sig = this.req.get(2);
}

exports.PKCS10 = PKCS10;

PKCS10.RSA = new ByteString("rsaEncryption", OID);
PKCS10.RSA_PSS = new ByteString("id-RSASSA-PSS", OID);
PKCS10.EC = new ByteString("id-ecPublicKey", OID);



/**
 * Get the encoded request
 *
 * @return the encoded request
 * @type ByteString
 */
PKCS10.prototype.getBytes = function() {
	return this.req.getBytes();
}



/**
 * Gets the subject name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
PKCS10.prototype.getSubject = function() {
	return this.reqInfo.get(1);
}



/**
 * Get the public key
 *
 * @type key
 * @return the public key
 */
PKCS10.prototype.getPublicKey = function() {
	var algorithm = this.reqInfo.get(2).get(0).get(0).value;

	var bitString = this.reqInfo.get(2).get(1).value;	// subjectPublicKey
	bitString = PKIXCommon.removeLeadingZeroBytes(bitString);

	var key = new Key();
	key.setType(Key.PUBLIC);

	if (algorithm.equals(PKCS10.RSA) || algorithm.equals(PKCS10.RSA_PSS)) {
		var p = new ASN1(bitString);
		key.setComponent(Key.MODULUS, PKIXCommon.removeLeadingZeroBytes(p.get(0).value));
		key.setComponent(Key.EXPONENT, PKIXCommon.removeLeadingZeroBytes(p.get(1).value));
	} else {
		key.setComponent(Key.ECC_CURVE_OID, this.reqInfo.get(2).get(0).get(1).value);
		if (bitString.byteAt(0) != 4) {
			throw new GPError(module.id, GPError.INVALID_MECH, 0, "Only uncompressed keys supported (04)");
		}
		var l = (bitString.length - 1) >> 1;
		key.setComponent(Key.ECC_QX, bitString.bytes(1, l));
		key.setComponent(Key.ECC_QY, bitString.bytes(1 + l, l));
	}

	return key;
}



/**
 * Get the signature algorithm as Crypto.X constant
 *
 * @type Number
 * @return the signature algorithm
 */
PKCS10.prototype.getSignatureAlgorithm = function() {
	var algOID = this.sigAlg.get(0).value;
	if (this.sigAlg.elements > 1) {
		var param = this.sigAlg.get(1).getBytes();
	}
	var alg = PKIXCommon.decodeSignatureAlgorithm(algOID, param);

	if (!alg) {
		throw new GPError(module.id, GPError.INVALID_MECH, alg, "Invalid algorithm");
	}
	return alg;
}



/**
 * Get the signature value
 *
 * @type ByteString
 * @return the signature
 */
PKCS10.prototype.getSignature = function() {
	var signature = this.sig.value;

	if (signature.byteAt(0) == 0x00) {
		signature = signature.bytes(1);
	}
	return signature;
}



/**
 * Verify signature
 *
 * @param {Key} pubKey optional public key to use for verification
 * @type boolean
 * @return true if signature is valid
 */
PKCS10.prototype.verify = function(pubKey) {
	var crypto = new Crypto();
	if (!pubKey) {
		pubKey = this.getPublicKey();
	}
	var alg = this.getSignatureAlgorithm();
	var signature = this.getSignature();

	return crypto.verify(pubKey, alg, this.reqInfo.getBytes(), signature);
}



PKCS10.prototype.toString = function() {
	var s = "PKCS#10 Request:";

	var k = this.getPublicKey();
	if (k.getComponent(Key.MODULUS)) {
		s+= "Type=RSA,";
	} else {
		s+= "Type=EC,";
		var curve = ASN1.nameForObjectIdentifier(k.getComponent(Key.ECC_CURVE_OID));
		if (curve) {
			s += "Curve=" + curve + ",";
		}
	}
	s+= "Size=" + k.getSize();

	var subject = this.getSubject();
	if (subject) {
		var xName = new X509Name(subject)
		s += "," + xName.toString();
	}

	return s;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Basic helper functions to convert PKCS#8 data to GP keys and vice versa
 */



/**
 * Empty constructor
 */
function PKCS8() {
}

if (typeof(exports) != "undefined")
	exports.PKCS8 = PKCS8;


PKCS8.idEcPublicKey = new ByteString("id-ecPublicKey", OID);
PKCS8.rsaEncryption = new ByteString("1.2.840.113549.1.1.1", OID);

/**
 * Convert x/y coordinates to uncompressed format
 *
 * @param {ByteString} x the x coordinate
 * @param {ByteString} y the y coordinate
 * @type ByteString
 * @return ByteString containing compressed format
 *
 */
PKCS8.encodeUncompressedECPoint = function(x,y) {

	var bb = new ByteBuffer();

	// uncompressed encoding
	bb.append(new ByteString("04", HEX));
	bb.append(x);
	bb.append(y);

	return bb.toByteString();
}



/**
 * Convert uncompressed format to x and y coordinates
 *
 * @param {ByteString} compressed point
 * @type Object
 * @return Object with ByteString properties x and y
 *
 */
PKCS8.decodeUncompressedECPoint = function(uncompressedPoint) {

	// Determine the size of the coordinates ignoring the indicator byte '04'
	var length = uncompressedPoint.length - 1;

	var sizeOfCoordinate = length >> 1;

	var xValue = uncompressedPoint.bytes(1, sizeOfCoordinate);
	var yValue = uncompressedPoint.bytes(1 + sizeOfCoordinate, sizeOfCoordinate);

	return { x:xValue, y:yValue };
}



/**
 * Integer to octet string conversion
 *
 * @param {ByteString} value the encoded integer value
 * @param {Number} the number of digits
 * @type ByteString
 * @return the truncated or padded result
 */
PKCS8.I2O = function(value, length) {
	if (value.length > length) {
		value = value.right(length);
	}
	while (value.length < length) {
		value = PKCS8.PAD.left((length - value.length - 1 & 15) + 1).concat(value);
	}
	return value;
}
PKCS8.PAD = new ByteString("00000000000000000000000000000000", HEX);



/**
 * Strips leading zeros of a ByteString
 *
 * @param {ByteString} value the ByteString value
 * @return the stripped ByteString object, may be an empty ByteString
 * @type ByteString
 */
PKCS8.stripLeadingZeros = function(value, size) {
	if (typeof(size) == "undefined") {
		var limit = value.length;
	} else {
		limit = value.length - size;
	}

	var i = 0;
	for (; (i < limit) && (value.byteAt(i) == 0); i++);

	return value.bytes(i);
}



/**
 * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
 *
 * This prevent interpretation of the integer representation if converted into
 * a signed ASN1 INTEGER.
 *
 * @param {ByteString} value the value to convert
 * @return the converted value
 * @type ByteString
 */
PKCS8.convertUnsignedInteger = function(value) {
	assert(value.length > 0);

	var i = 0;
	for (; (i < value.length - 1) && (value.byteAt(i) == 0); i++);

	if (value.byteAt(i) >= 0x80) {
		value = (new ByteString("00", HEX)).concat(value.bytes(i));
	} else {
		value = value.bytes(i);
	}

	return value;
}



/**
 * Encode a given GP ECC private key as specified by the PKCS#8 format
 *
 * @param {Key} the private key object that should be encoded
 * @return the encoded PKCS#8 private key
 * @type ByteString
 */
PKCS8.encodeECCKeyUsingPKCS8Format = function(privateKey) {
	var privateKeyInfo = new ASN1(ASN1.SEQUENCE);

	// Set the version number - must be zero
	privateKeyInfo.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX)));

	var privateKeyAlgorithm = new ASN1(ASN1.SEQUENCE);
	privateKeyAlgorithm.add(new ASN1(ASN1.OBJECT_IDENTIFIER, PKCS8.idEcPublicKey));

	var domainInfo = new ASN1(ASN1.SEQUENCE);

	// Cofactor - must be 1
	domainInfo.add(new ASN1(ASN1.INTEGER, PKCS8.stripLeadingZeros(privateKey.getComponent(Key.ECC_H))));

	var field = new ASN1(ASN1.SEQUENCE);

	// we are using a prime field
	field.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("prime-field", OID))); // prime field

	var primeOrder = privateKey.getComponent(Key.ECC_P);
	if (primeOrder.byteAt(0) >= 0x80) { // signed int? -> add 0x00
		field.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX).concat(privateKey.getComponent(Key.ECC_P))));
	} else {
		field.add(new ASN1(ASN1.INTEGER, privateKey.getComponent(Key.ECC_P)));
	}

	domainInfo.add(field);

	// Coefficients a and b
	var coeff = new ASN1(ASN1.SEQUENCE);

	// first coefficient
	coeff.add(new ASN1(ASN1.OCTET_STRING, privateKey.getComponent(Key.ECC_A)));

	// second coefficient
	coeff.add(new ASN1(ASN1.OCTET_STRING, privateKey.getComponent(Key.ECC_B)));

	domainInfo.add(coeff);

	// Base point (uncompressed)
	var gx = privateKey.getComponent(Key.ECC_GX);
	var gy = privateKey.getComponent(Key.ECC_GY);

	domainInfo.add(new ASN1(ASN1.OCTET_STRING, PKCS8.encodeUncompressedECPoint(gx, gy)));

	// group order generated by the base point
	var groupOrder = privateKey.getComponent(Key.ECC_N);
	if (groupOrder.byteAt(0) >= 0x80) { // signed int? -> add 0x00
		domainInfo.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX).concat(privateKey.getComponent(Key.ECC_N))));
	} else {
		domainInfo.add(new ASN1(ASN1.INTEGER, privateKey.getComponent(Key.ECC_N)));
	}

	privateKeyAlgorithm.add(domainInfo);

	// encode the key information
	privateKeyInfo.add(privateKeyAlgorithm);

	// encode the private key
	var encodedPrivateKey = new ASN1(ASN1.OCTET_STRING);

	var pk = privateKey.getComponent(Key.ECC_D);
	var key = new ASN1(ASN1.SEQUENCE);
	key.add(new ASN1(ASN1.INTEGER, new ByteString("01", HEX)));
	key.add(new ASN1(ASN1.OCTET_STRING, pk));

	encodedPrivateKey.add(key);

	privateKeyInfo.add(encodedPrivateKey);

//	print(privateKeyInfo);
	return privateKeyInfo.getBytes();
}



/**
 * Encode RSA private key as defined in PKCS#1
 *
 * RSAPrivateKey ::= SEQUENCE {
 *     version           Version,
 *     modulus           INTEGER,  -- n
 *     publicExponent    INTEGER,  -- e
 *     privateExponent   INTEGER,  -- d
 *     prime1            INTEGER,  -- p
 *     prime2            INTEGER,  -- q
 *     exponent1         INTEGER,  -- d mod (p-1)
 *     exponent2         INTEGER,  -- d mod (q-1)
 *     coefficient       INTEGER,  -- (inverse of q) mod p
 *     otherPrimeInfos   OtherPrimeInfos OPTIONAL
 * }
 * @param {Key} privateKey the private RSA key in CRT format
 * @type ByteString
 * @return the encoded RSA key
 */
PKCS8.encodeRSAKey = function(privateKey, publicKey) {
	var rsaPrivateKey =
		new ASN1(ASN1.SEQUENCE);

	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
	if (typeof(publicKey) != "undefined") {
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(publicKey.getComponent(Key.MODULUS))));
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(publicKey.getComponent(Key.EXPONENT))));
	} else {
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
	}
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));		// Private Exponent not at interface for CRT format
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_P))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_Q))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_DP1))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_DQ1))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_PQ))));

	return rsaPrivateKey.getBytes();
}



/**
 * Encode a given GP RSA private key as specified by the PKCS#8 format
 *
 * @param {Key} the private key object that should be encoded
 * @return the encoded PKCS#8 private key
 * @type ByteString
 */
PKCS8.encodeRSAKeyUsingPKCS8Format = function(privateKey, publicKey) {
	var privateKeyInfo = new ASN1(ASN1.SEQUENCE);

	// Set the version number - must be zero
	privateKeyInfo.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX)));

	var privateKeyAlgorithm = new ASN1(ASN1.SEQUENCE);
	privateKeyAlgorithm.add(new ASN1(ASN1.OBJECT_IDENTIFIER, PKCS8.rsaEncryption));
	privateKeyAlgorithm.add(new ASN1(ASN1.NULL));

	// encode the key information
	privateKeyInfo.add(privateKeyAlgorithm);

	// encode the private key
	var encodedPrivateKey = new ASN1(ASN1.OCTET_STRING, PKCS8.encodeRSAKey(privateKey, publicKey));

	privateKeyInfo.add(encodedPrivateKey);

//	print(privateKeyInfo);
	return privateKeyInfo.getBytes();
}



/**
 * Encode a given GP private key as specified by the PKCS#8 format
 *
 * For now we only support the encoding of ECC private keys in a prime field
 *
 * @param {Key} the private key object that should be encoded
 * @return the encoded PKCS#8 private key
 * @type ByteString
 */
PKCS8.encodeKeyUsingPKCS8Format = function(privateKey, publicKey) {

	assert(privateKey.getType() == Key.PRIVATE);
	if (typeof(privateKey.getComponent(Key.ECC_P)) != "undefined") {
		return PKCS8.encodeECCKeyUsingPKCS8Format(privateKey);
	} else {
		return PKCS8.encodeRSAKeyUsingPKCS8Format(privateKey, publicKey);
	}
}



/**
 * Decode a given PKCS#8 ECC private key from the given TLV objects and create a GP key object
 *
 * For now we only support the decoding of ECC private keys in a prime field
 *
 * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeECCKeyFromPKCS8Format = function(domainParameter, encodedKey) {

	var key = new Key();

	key.setType(Key.PRIVATE);

	if (domainParameter.tag == ASN1.OBJECT_IDENTIFIER) {
		key.setComponent(Key.ECC_CURVE_OID, domainParameter.value);
	} else {
		// Decode the domain parameters
		var cofactor = domainParameter.get(0);
		key.setComponent(Key.ECC_H, cofactor.value);

		var order = domainParameter.get(1).get(1);
		key.setComponent(Key.ECC_P, PKCS8.stripLeadingZeros(order.value));

		var coeff_A = domainParameter.get(2).get(0);
		key.setComponent(Key.ECC_A, coeff_A.value);

		var coeff_B = domainParameter.get(2).get(1);
		key.setComponent(Key.ECC_B, coeff_B.value);

		var generatorPoint = domainParameter.get(3).value;

		var coordinates = PKCS8.decodeUncompressedECPoint(generatorPoint);

		key.setComponent(Key.ECC_GX, coordinates.x);
		key.setComponent(Key.ECC_GY, coordinates.y);

		var groupOrder = domainParameter.get(4);

		key.setComponent(Key.ECC_N, PKCS8.stripLeadingZeros(groupOrder.value));
	}

	key.setComponent(Key.ECC_D, encodedKey.get(1).value);

	return key;
}



/**
 * Decode a PKCS#1 encoded RSA private key from the given TLV objects and create a GP key object with the private key
 *
 * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeRSAPrivateKeyFromPKCS1Format = function(privateKey) {

	var key = new Key();

	key.setType(Key.PRIVATE);

	assert(privateKey.tag == ASN1.SEQUENCE);
	assert(privateKey.isconstructed);
	assert(privateKey.elements >= 9);

	for (var i = 0; i < 9; i++) {
		var e = privateKey.get(i);
		assert(e.tag == ASN1.INTEGER);
		assert(!e.isconstructed);
	}

	assert(privateKey.get(0).value.toUnsigned() == 0);

	var p = PKCS8.stripLeadingZeros(privateKey.get(4).value);
	var l = p.length;
	key.setComponent(Key.CRT_P,   p);
	key.setComponent(Key.CRT_Q,   PKCS8.I2O(privateKey.get(5).value, l));
	key.setComponent(Key.CRT_DP1, PKCS8.I2O(privateKey.get(6).value, l));
	key.setComponent(Key.CRT_DQ1, PKCS8.I2O(privateKey.get(7).value, l));
	key.setComponent(Key.CRT_PQ,  PKCS8.I2O(privateKey.get(8).value, l));

	return key;
}



/**
 * Decode a PKCS#1 encoded RSA private key from the given TLV objects and create a GP key object with the public key
 *
 * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeRSAPublicKeyFromPKCS1Format = function(privateKey) {

	var key = new Key();

	key.setType(Key.MODULUS);

	assert(privateKey.tag == ASN1.SEQUENCE);
	assert(privateKey.isconstructed);
	assert(privateKey.elements >= 9);

	for (var i = 0; i < 9; i++) {
		var e = privateKey.get(i);
		assert(e.tag == ASN1.INTEGER);
		assert(!e.isconstructed);
	}

	assert(privateKey.get(0).value.toUnsigned() == 0);

	key.setComponent(Key.MODULUS,  PKCS8.stripLeadingZeros(privateKey.get(1).value));
	key.setComponent(Key.EXPONENT, PKCS8.stripLeadingZeros(privateKey.get(2).value));

	return key;
}



/**
 * Decode a given PKCS#8 RSA private key from the given TLV objects and create a GP key object
 *
 * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeRSAKeyFromPKCS8Format = function(algparam, privateKey) {

	var key = new Key();

	key.setType(Key.PRIVATE);

	assert(algparam.tag == ASN1.NULL);
	assert(!algparam.isconstructed);
	assert(algparam.length == 0);

	return PKCS8.decodeRSAPrivateKeyFromPKCS1Format(privateKey);
}



/**
 * Decode a given PKCS#8 private key from the given ByteString and create a GP key object
 *
 * For now we only support the decoding of ECC private keys in a prime field
 *
 * @param {ByteString} the private key object in PKCS#8 format
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeKeyFromPKCS8Format = function(encodedKey) {
	var p8 = new ASN1(encodedKey);

	assert(p8.isconstructed);
	assert(p8.elements >= 3);

	var version = p8.get(0);
	assert(version.tag == ASN1.INTEGER);
	assert(version.value.toUnsigned() == 0);

	var pkai = p8.get(1);
	assert(pkai.tag == ASN1.SEQUENCE);
	assert(pkai.isconstructed);
	assert(pkai.elements == 2);
	var keytype = pkai.get(0);

	assert(keytype.tag == ASN1.OBJECT_IDENTIFIER);

	var algparam = pkai.get(1);

	var privateKey = p8.get(2);
	assert(privateKey.tag == ASN1.OCTET_STRING);
	if (privateKey.isconstructed) {
		privateKey = privateKey.get(0);
	} else {
		privateKey = new ASN1(privateKey.value);
	}

	if (keytype.value.equals(PKCS8.rsaEncryption)) {
		return PKCS8.decodeRSAKeyFromPKCS8Format(algparam, privateKey);
	} else if (keytype.value.equals(PKCS8.idEcPublicKey)) {
		return PKCS8.decodeECCKeyFromPKCS8Format(algparam, privateKey);
	} else {
		throw new Error("Unknown key type " + keytype.value.toString(OID));
	}
}



/**
 * Simple self-test
 */
PKCS8.test = function() {

	// Set OID for EC curve
	var ecCurve = "1.3.36.3.3.2.8.1.1.7";

    var crypto = new Crypto("BC");

    // Create empty public key object
    var pubKey = new Key();
    pubKey.setType(Key.PUBLIC);
    pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString(ecCurve, OID));

    // Create empty private key object
    var priKey = new Key();
    priKey.setType(Key.PRIVATE);
    priKey.setComponent(Key.ECC_CURVE_OID, new ByteString(ecCurve, OID));

    // Generate key pair
    crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

    // Encode
    var p8Key = PKCS8.encodeKeyUsingPKCS8Format(priKey);

    // Decode
    var decodedKeyObject = PKCS8.decodeKeyFromPKCS8Format(p8Key);

    // Compare
    assert(decodedKeyObject.getComponent(Key.ECC_D).equals(priKey.getComponent(Key.ECC_D)));

    assert(decodedKeyObject.getComponent(Key.ECC_GX).equals(priKey.getComponent(Key.ECC_GX)));
    assert(decodedKeyObject.getComponent(Key.ECC_GY).equals(priKey.getComponent(Key.ECC_GY)));
    assert(decodedKeyObject.getComponent(Key.ECC_A).equals(pubKey.getComponent(Key.ECC_A)));
    assert(decodedKeyObject.getComponent(Key.ECC_B).equals(pubKey.getComponent(Key.ECC_B)));

    // Encode
    var refp8Key = PKCS8.encodeKeyUsingPKCS8Format(decodedKeyObject);

    // Compare
    assert(p8Key.equals(refp8Key));


    // Create empty public key object
	var pubKey = new Key();
    pubKey.setType(Key.PUBLIC);
    pubKey.setSize(1024);

    // Create empty private key object
    var priKey = new Key();
    priKey.setType(Key.PRIVATE);

    // Generate key pair
    crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

    // Encode
    var p8Key = PKCS8.encodeKeyUsingPKCS8Format(priKey);

    // Decode
    var decodedKeyObject = PKCS8.decodeKeyFromPKCS8Format(p8Key);

    // Compare
    assert(decodedKeyObject.getComponent(Key.CRT_P).equals(priKey.getComponent(Key.CRT_P)));
    assert(decodedKeyObject.getComponent(Key.CRT_Q).equals(priKey.getComponent(Key.CRT_Q)));
    assert(decodedKeyObject.getComponent(Key.CRT_DP1).equals(priKey.getComponent(Key.CRT_DP1)));
    assert(decodedKeyObject.getComponent(Key.CRT_DQ1).equals(priKey.getComponent(Key.CRT_DQ1)));
    assert(decodedKeyObject.getComponent(Key.CRT_PQ).equals(priKey.getComponent(Key.CRT_PQ)));

    // Encode
    var refp8Key = PKCS8.encodeKeyUsingPKCS8Format(decodedKeyObject);

    // Compare
    assert(p8Key.equals(refp8Key));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Certificate Object
 */



function Certificate(dao, holder, serial, dir, certbin, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + holder + "," + serial + "," + dir + "," + (certbin ? certbin.bytes(0,10).toString(HEX) : certbin) + ")");

	this.dao = dao;

	// Must match database scheme
	this.id = 0;
	if (typeof(holder) != "undefined") {
		this.holderId = holder.id;
	}
	this.serial = serial;
	this.linkDir = dir;
	this.bytes = certbin;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}

	// Private properties
	this._holder = holder;
}

exports.Certificate = Certificate;


/*
 * Select which certificate should be selected if multiple are available
 */
Certificate.UP = 0;		// Select certificate for following upstream link (e.g. CVCA-Link Certificate)
Certificate.SHORT = 1;		// Select shortest path to next self-signed certificate
Certificate.DOWN = 2;		// Select certificate for following downstream link (reverse link certificate build path to newer certificates)


Certificate.prototype.toString = function() {
	return "Certificate " + this.id;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Configuration Object
 */



function Configuration(dao, name, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + name + ")");

	this.dao = dao;

	// Must match database scheme
	this.id = 0;
	this.name = name;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}

	// Private properties
}

exports.Configuration = Configuration;



Configuration.prototype.getConfigurationObject = function() {
	if (typeof(this.content) == "undefined") {
		return {};
	}

	GPSystem.log(GPSystem.DEBUG, module.id, "read config : " + this.content);
	var c = JSON.parse(this.content);
	return c;
}



Configuration.prototype.updateConfigurationObject = function(c) {
	var str = JSON.stringify(c, null, "\t");
	GPSystem.log(GPSystem.DEBUG, module.id, "update config : " + str);
	this.dao.updateContent(this, str);
}



Configuration.prototype.toString = function() {
	return "Configuration " + this.id;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for database persistence
 */


var HolderDAO = require('scsh/pki-db/db/HolderDAO').HolderDAO;
var SignerDAO = require('scsh/pki-db/db/SignerDAO').SignerDAO;
var RequestDAO = require('scsh/pki-db/db/RequestDAO').RequestDAO;
var CertificateDAO = require('scsh/pki-db/db/CertificateDAO').CertificateDAO;
var ServiceRequestDAO = require('scsh/pki-db/db/ServiceRequestDAO').ServiceRequestDAO;
var ConfigurationDAO = require('scsh/pki-db/db/ConfigurationDAO').ConfigurationDAO;
var TokenDAO = require('scsh/pki-db/db/TokenDAO').TokenDAO;
var SubjectDAO = require('scsh/pki-db/db/SubjectDAO').SubjectDAO;
var RoleDAO = require('scsh/pki-db/db/RoleDAO').RoleDAO;
var KeyEscrowDAO = require('scsh/pki-db/db/KeyEscrowDAO').KeyEscrowDAO;
var LongDate = require('scsh/pki-db/LongDate').LongDate;



/**
 * A factory that can create data access objects for the PKI database
 *
 * @param {String} path the root directory for the file system structure
 */
function DAOFactoryDatabase(type, url, user, password) {
	this.type = type;
	switch(type) {
		case "MySQL":
			if (url.indexOf("?") == -1) {
				url += "?";
			} else {
				url += "&";
			}
			url += "zeroDateTimeBehavior=convertToNull";
// 			url += "&logger=com.mysql.jdbc.log.Slf4JLogger&profileSQL=true"; // Enable logging
			this.ds = new Packages.org.mariadb.jdbc.MariaDbDataSource(url);
			this.ds.setUser(user);
			this.ds.setPassword(password);
			break;
		case "H2":
			url += ";DATABASE_TO_UPPER=FALSE";
			this.ds = Packages.org.h2.jdbcx.JdbcConnectionPool.create(url, user, password);
			break;
		default:
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "Unknown database type " + type);
	}
	this.url = url;
}

exports.DAOFactoryDatabase = DAOFactoryDatabase;

DAOFactoryDatabase.INT		= java.sql.Types.INTEGER;
DAOFactoryDatabase.SMALLINT	= java.sql.Types.SMALLINT;
DAOFactoryDatabase.BIGINT	= java.sql.Types.BIGINT;
DAOFactoryDatabase.VARCHAR	= java.sql.Types.VARCHAR;
DAOFactoryDatabase.VARBINARY	= java.sql.Types.VARBINARY;
DAOFactoryDatabase.BLOB		= java.sql.Types.BLOB;
DAOFactoryDatabase.CLOB		= java.sql.Types.CLOB;
DAOFactoryDatabase.MEDIUMBLOB	= java.sql.Types.LONGVARBINARY;
DAOFactoryDatabase.TIMESTAMP	= java.sql.Types.TIMESTAMP;



DAOFactoryDatabase.prototype.toString = function() {
	return "DBDAO(" + this.type + ")";
}



DAOFactoryDatabase.prototype.getHolderDAO = function() {
	if (typeof(this.holderDAO) == "undefined") {
		this.holderDAO = new HolderDAO(this);
	}
	return this.holderDAO;
}



DAOFactoryDatabase.prototype.getCertificateDAO = function() {
	if (typeof(this.certificateDAO) == "undefined") {
		this.certificateDAO = new CertificateDAO(this);
	}
	return this.certificateDAO;
}



DAOFactoryDatabase.prototype.getSignerDAO = function() {
	if (typeof(this.signerDAO) == "undefined") {
		this.signerDAO = new SignerDAO(this);
	}
	return this.signerDAO;
}



DAOFactoryDatabase.prototype.getRequestDAO = function() {
	if (typeof(this.requestDAO) == "undefined") {
		this.requestDAO = new RequestDAO(this);
	}
	return this.requestDAO;
}



DAOFactoryDatabase.prototype.getServiceRequestDAO = function() {
	if (typeof(this.serviceRequestDAO) == "undefined") {
		this.serviceRequestDAO = new ServiceRequestDAO(this);
	}
	return this.serviceRequestDAO;
}



DAOFactoryDatabase.prototype.getConfigurationDAO = function() {
	if (typeof(this.configurationDAO) == "undefined") {
		this.configurationDAO = new ConfigurationDAO(this);
	}
	return this.configurationDAO;
}



DAOFactoryDatabase.prototype.getTokenDAO = function() {
	if (typeof(this.tokenDAO) == "undefined") {
		this.tokenDAO = new TokenDAO(this);
	}
	return this.tokenDAO;
}



DAOFactoryDatabase.prototype.getSubjectDAO = function() {
	if (typeof(this.subjectDAO) == "undefined") {
		this.subjectDAO = new SubjectDAO(this);
	}
	return this.subjectDAO;
}



DAOFactoryDatabase.prototype.getRoleDAO = function() {
	if (typeof(this.roleDAO) == "undefined") {
		this.roleDAO = new RoleDAO(this);
	}
	return this.roleDAO;
}



DAOFactoryDatabase.prototype.getKeyEscrowDAO = function() {
	if (typeof(this.keyEscrowDAO) == "undefined") {
		this.keyEscrowDAO = new KeyEscrowDAO(this);
	}
	return this.keyEscrowDAO;
}



DAOFactoryDatabase.prototype.getConnection = function() {
	return this.ds.getConnection();
}



DAOFactoryDatabase.prototype.executeScript = function(stmt, script) {
	if (typeof(script) == "string") {
		script = [ script ];
	}
	for (var i = 0; i < script.length; i++) {
		var s = script[i];

		if (s instanceof Object) {
			s = s[this.type];

			if (s instanceof Object) {
				var cs = s.IsEmpty;

				var rs = stmt.executeQuery(cs);
				if (rs.next()) {
					rs.close();
					continue;
				}
				rs.close();

				s = s.Statement;
			}
		}
		if (s) {
			stmt.executeUpdate(s);
		}
	}
}



DAOFactoryDatabase.prototype.createTables = function() {
	var con = null;
	var stmt = null;

	try	{
		con = this.getConnection();

		stmt = con.createStatement();
		this.executeScript(stmt, RoleDAO.createRole);
		this.executeScript(stmt, SubjectDAO.create);
		this.executeScript(stmt, HolderDAO.create);
		if (this.type == "MySQL") {
			this.executeScript(stmt, HolderDAO.alter);
		}
		this.executeScript(stmt, SignerDAO.create);
		this.executeScript(stmt, RequestDAO.create);
		this.executeScript(stmt, ServiceRequestDAO.create);
		if (this.type == "MySQL") {
			this.executeScript(stmt, ServiceRequestDAO.alter);
		}
		this.executeScript(stmt, SubjectDAO.addForeignKey);
		this.executeScript(stmt, RoleDAO.createAssignedRole);
		this.executeScript(stmt, RoleDAO.update);
		this.executeScript(stmt, CertificateDAO.create);
		this.executeScript(stmt, ConfigurationDAO.create);
		this.executeScript(stmt, TokenDAO.create);
		if (this.type == "MySQL") {
			this.executeScript(stmt, TokenDAO.alter);
		}
		this.executeScript(stmt, KeyEscrowDAO.create);
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



DAOFactoryDatabase.prototype.dropTables = function() {
	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.getConnection();

		stmt = con.createStatement();
		if (this.type == "MySQL") {
			this.executeScript(stmt, "SET FOREIGN_KEY_CHECKS=0;");
		}
		this.executeScript(stmt, TokenDAO.drop);
		this.executeScript(stmt, ConfigurationDAO.drop);
		this.executeScript(stmt, CertificateDAO.drop);
		this.executeScript(stmt, SubjectDAO.dropForeignKey);
		this.executeScript(stmt, ServiceRequestDAO.drop);
		this.executeScript(stmt, RequestDAO.drop);
		this.executeScript(stmt, SignerDAO.drop);
		this.executeScript(stmt, HolderDAO.drop);
		this.executeScript(stmt, RoleDAO.dropAssignedRole);
		this.executeScript(stmt, SubjectDAO.drop);
		this.executeScript(stmt, RoleDAO.dropRole);
	}
	finally {
		if (this.type == "MySQL") {
			this.executeScript(stmt, "SET FOREIGN_KEY_CHECKS=1;");
		}

		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Change encoding of serial field from decimal to hexadecimal
 */
DAOFactoryDatabase.updateCertificateSerial = function(rs) {
	var bytes = rs.getBytes("bytes");
	var x = new X509(bytes);
	var newserial = x.getSerialNumber().toString(HEX);
	var oldserial = rs.getString("serial");
	GPSystem.log(GPSystem.INFO, module.id, "From serial " + oldserial + " to " + newserial);
	rs.updateString("serial", newserial);
}



DAOFactoryDatabase.prototype.updateTables = function(version) {
	switch(version) {
		case 3:
			GPSystem.log(GPSystem.INFO, module.id, "Update database to version 0.3");
			var dao = this.getCertificateDAO();
			dao.updateBatch(DAOFactoryDatabase.updateCertificateSerial);
		break;
	}
}



/**
 * Iternate result set and fill properties in object with matching data types
 *
 * The method map SQL type to SCSH types, namely (string, int and ByteString)
 *
 * @param {ResultSet} rs the result set returned from a database query
 * @param {Object} obj the object into which the columns shall be injected
 */
DAOFactoryDatabase.prototype.resultSetToProperties = function(rs, obj) {
	var meta = rs.getMetaData();

	var l = meta.getColumnCount();
	for (var i = 1; i <= l; i++) {
		var propname = meta.getColumnName(i);
		var type = meta.getColumnType(i)
// 		print("propname " + propname);
// 		print(" type: " + type);
// 		print(" getColumnTypeName " + meta.getColumnTypeName(i));

		switch(type) {
			case DAOFactoryDatabase.INT:
			case DAOFactoryDatabase.SMALLINT:
				var v = rs.getInt(i);
				if (!rs.wasNull()) {
					obj[propname] = v;
				}
				break;
			case DAOFactoryDatabase.BIGINT:
				var v = rs.getLong(i);
				if (!rs.wasNull()) {
					obj[propname] = v;
				}
				break;
			case DAOFactoryDatabase.CLOB:
			case DAOFactoryDatabase.VARCHAR:
				var v = rs.getString(i);
				if (!rs.wasNull()) {
					obj[propname] = v;
				}
				break;
			case DAOFactoryDatabase.VARBINARY:
			case DAOFactoryDatabase.BLOB:
			case DAOFactoryDatabase.MEDIUMBLOB:
				var v = rs.getBytes(i);
				if (!rs.wasNull()) {
					obj[propname] = v;
				}
				break;
			case DAOFactoryDatabase.TIMESTAMP:
				var v = rs.getTimestamp(i);
				if (!rs.wasNull()) {
					obj[propname] = new Date(v.getTime());
				}
				break;
			default:
				if (meta.getColumnTypeName(i) == "VARCHAR") {
					// Columns of type [LONG]TEXT have no equivalent java.sql.Type
					var v = rs.getString(i);
					if (!rs.wasNull()) {
						obj[propname] = v;
					}
				} else {
					throw new GPError(module.id, GPError.INVALID_DATA, i, "Unknown type " + type + ":" + meta.getColumnTypeName(i));
				}
		}
	}
}



/**
 * Create a SQL insert statement from the given object with the list of properties
 *
 * If the list of elements is not defined, then the method will create a list of properties
 * that do not start with "_" or a function properties. Properties with the name id, dao or holder
 * are ignored as well.
 *
 * @param {java.sql.Connection} con the SQL connection
 * @param {String} table the table name
 * @param {Object} obj the property object
 * @param {String[]} el the list of elements to insert
 */
DAOFactoryDatabase.prototype.insertStatementFromObject = function(con, table, obj, el) {

	if (!el) {
		var el = [];
		for (var i in obj) {
			if ((i.charAt(0) != "_") && (i != "id") && (i != "dao") && (i != "holder") && typeof(obj[i]) != "function") {
				el.push(i);
			}
		}
	}

	var vl = "";
	for (var i = 0; i < el.length; i++) {
		if (vl.length) {
			vl += ",?";
		} else {
			vl += "?";
		}
	}

	var str = "insert into " + table + " (" + el + ") values (" + vl + ");";

	GPSystem.log(GPSystem.DEBUG, module.id, str);

	stmt = con.prepareStatement(str, java.sql.Statement.RETURN_GENERATED_KEYS);

	for (var i = 1; i <= el.length; i++) {
		var e = obj[el[i - 1]];

		if (typeof(e) == "string") {
			stmt.setString(i, e);
		} else if (typeof(e) == "number") {
			stmt.setInt(i, e);
		} else if (e instanceof ByteString) {
			stmt.setBytes(i, e);
		} else if (e instanceof Date) {
			var ts = new java.sql.Timestamp(e.valueOf());
			stmt.setTimestamp(i, ts);
		} else if (e instanceof LongDate) {
			stmt.setLong(i, e.date.valueOf());
		} else {
			throw new GPError(module.id, GPError.INVALID_DATA, i, "Unsupported property " + el[i - 1] + " with type " + typeof(e) + " and value " + e);
		}
	}
	return stmt;
}



/**
 * Create a SQL select statement from a filter
 *
 * @param {java.sql.Connection} con the SQL connection
 * @param {String} table the table name
 * @param {Object} filter an object whose properties define the columns and values to match
 * @param {String[]} columnNames the list of column names to return (undefined for *)
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 */
DAOFactoryDatabase.prototype.selectStatementFromFilter = function(con, table, filter, columnNames, offset, page) {
	var filstr = "";
	var logicalOp = "and";
	for (var i in filter) {
		var compOp = "=";
		if (typeof(filter[i]) == 'object') {
			compOp = filter[i].compOp;
		}
		if (filstr) {
			filstr += " and ";
		}
		if (compOp.equals("like")) {
			filstr += "LOWER( " + i + " ) " + compOp +" ?";
		} else if (filter[i] != null) {
			filstr += i + " " + compOp +" ?";
		} else {
			filstr += i + " is null";
		}
	}

	var colstr = "*";
	if (columnNames) {
		colstr = columnNames.toString();
	}

	var str = "select " + colstr + " from " + table;

	if (filstr) {
		str += " where " + filstr;
	}

	if (page) {
		str += " limit ?,?";
	}

	var stmt = con.prepareStatement(str);

	var c = 1;
	for (var i in filter) {
		var e = filter[i];

		if (e != null) {
			if (typeof(e) == "string") {
				stmt.setString(c, e);
			} else if (typeof(e) == "number") {
				stmt.setInt(c, e);
			} else if (e instanceof ByteString) {
				stmt.setBytes(c, e);
			} else if (typeof(filter[i] == 'object')) {
				stmt.setString(c, filter[i].value);
			} else {
				throw new GPError(module.id, GPError.INVALID_DATA, c, "Unsupported property " + i + " with type " + typeof(e) + " and value " + e);
			}
			c++;
		}
	}

	if (page) {
		stmt.setInt(c++, offset);
		stmt.setInt(c++, page);
	}

	return stmt;
}



/**
 * Where clause from filter
 *
 * @param {Object} filter an object whose properties define the columns and values to match
 * @type String
 * @return the where clause based on the filter
 */
DAOFactoryDatabase.prototype.whereClauseFromFilter = function(filter, logicalOp) {
	GPSystem.log(GPSystem.DEBUG, module.id, "whereClauseFromFilter(" + logicalOp + ")");

	var filstr = "";

	if (!logicalOp) {
		logicalOp = "and";
	}

	for (var i in filter) {
		var compOp = "=";

		if (typeof(filter[i]) == 'object') {
			if (filter[i].logicalOp) {
				if (filstr) {
					filstr += " " + logicalOp;
				}
				filstr += " (" + this.whereClauseFromFilter(filter[i].value, filter[i].logicalOp) + ")";
				continue;
			} else {
				compOp = filter[i].compOp;
			}
		}

		if (filstr) {
			filstr += " " + logicalOp + " ";
		}

		if (compOp.equals("like")) {
			filstr += "LOWER( " + i + " ) " + compOp +" ?";
		} else if (filter[i] != null) {
			filstr += i + " " + compOp +" ?";
		} else {
			filstr += i + " is null";
		}
	}

	return filstr;
}



/**
 * Set arguments in where statement from filter
 *
 * @param {java.sql.Statement} stmt the SQL statement containing the where clause created with whereClauseFromFilter().
 * @param {Number} offset the offset in the argument list
 * @param {Object} filter an object whose properties define the columns and values to match
 * @type Number
 * @return the next offset in the argument list
 */
DAOFactoryDatabase.prototype.setArgumentsFromFilter = function(stmt, offset, filter, pageStart, pageEnd) {
	GPSystem.log(GPSystem.DEBUG, module.id, "setArgumentsFromFilter(" + offset + "," + pageStart + "," + pageEnd + ")");

	for (var i in filter) {
		var e = filter[i];
		GPSystem.log(GPSystem.DEBUG, module.id, "### argument " + e);

		if (e != null) {
			if (typeof(e) == "string") {
				stmt.setString(offset++, e);
			} else if (typeof(e) == "number") {
				stmt.setInt(offset++, e);
			} else if (e instanceof ByteString) {
				stmt.setBytes(offset++, e);
			} else if (typeof(filter[i] == 'object')) {
				if (filter[i].logicalOp) {
					offset = this.setArgumentsFromFilter(stmt, offset, filter[i].value);
				} else {
					GPSystem.log(GPSystem.DEBUG, module.id, "Set argument from object " + filter[i].value + " at offset " + offset);
					stmt.setString(offset++, filter[i].value);
				}
			} else {
				throw new GPError(module.id, GPError.INVALID_DATA, offset, "Unsupported property " + i + " with type " + typeof(e) + " and value " + e);
			}
		}
	}

	if (pageEnd) {
		stmt.setInt(offset++, pageStart);
		stmt.setInt(offset++, pageEnd);
	}

	return offset;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for file system based persistence
 */


var File = require('scsh/file/File').File;
var HolderDAO = require('scsh/pki-db/fs/HolderDAO').HolderDAO;
var SignerDAO = require('scsh/pki-db/fs/SignerDAO').SignerDAO;
var RequestDAO = require('scsh/pki-db/fs/RequestDAO').RequestDAO;
var CertificateDAO = require('scsh/pki-db/fs/CertificateDAO').CertificateDAO;



/**
 * A factory that can create data access objects for the PKI database
 *
 * @param {String} path the root directory for the file system structure
 */
function DAOFactoryFileSystem(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + path + ")");
	this.basepath = path;
}

exports.DAOFactoryFileSystem = DAOFactoryFileSystem;



DAOFactoryFileSystem.prototype.toString = function() {
	return "FSDAO";
}



DAOFactoryFileSystem.prototype.getHolderDAO = function() {
	if (typeof(this.holderDAO) == "undefined") {
		this.holderDAO = new HolderDAO(this);
	}
	return this.holderDAO;
}



DAOFactoryFileSystem.prototype.getCertificateDAO = function() {
	if (typeof(this.certificateDAO) == "undefined") {
		this.certificateDAO = new CertificateDAO(this);
	}
	return this.certificateDAO;
}



DAOFactoryFileSystem.prototype.getSignerDAO = function() {
	if (typeof(this.signerDAO) == "undefined") {
		this.signerDAO = new SignerDAO(this);
	}
	return this.signerDAO;
}



DAOFactoryFileSystem.prototype.getRequestDAO = function() {
	if (typeof(this.requestDAO) == "undefined") {
		this.requestDAO = new RequestDAO(this);
	}
	return this.requestDAO;
}



/**
 * Check path for legal encodings
 *
 * @private
 */
DAOFactoryFileSystem.checkPath = function(path) {
	if ((path.indexOf("/..") >= 0) ||
		(path.indexOf("../") >= 0) ||
		(path.indexOf("\\..") >= 0) ||
		(path.indexOf("..\\") >= 0) ||
		(path.indexOf("\0") >= 0) ||
		(path.indexOf("~") >= 0)) {
		throw new GPError("DAOFactoryFileSystem", GPError.INVALID_ARGUMENTS, 0, "Path \"" + path + "\" contains illegal characters");
	}
}



/**
 * Map to absolute path on file system
 * @param {String} path the relative path
 * @type String
 * @return the absolute path on the file system
 * @private
 */
DAOFactoryFileSystem.prototype.mapPath = function(path) {
	DAOFactoryFileSystem.checkPath(path);
	return this.basepath + path;
}



/**
 * Enumerate file name under the given path
 *
 * @param {String} path the relative path
 * @param {Regex} the filter criteria. Directories if null or not defined
 * @private
 */
DAOFactoryFileSystem.prototype.enumerateFiles = function(path, filter) {

	var result = [];

	var fn = this.mapPath(path);
	var f = new java.io.File(fn);
	if (!f.exists()) {
		return result;
	}
	var files = f.list();

	for (var i = 0; i < files.length; i++) {
		var s = new String(files[i]);
		var fd = new java.io.File(f, s);

		if (filter) {
			var n = s.match(filter);
		} else {
			var n = fd.isDirectory();
		}
		if (n) {
			result.push(s);
		}
	}
	return result;
}



/**
 * Loads a binary file from disk
 *
 * @param {String} filename the fully qualified file name
 * @return the binary content
 * @type ByteString
 */
DAOFactoryFileSystem.prototype.loadBinaryFile = function(name) {
	var fn = this.mapPath(name);
	var f = new File(fn);

	var data = f.readAllAsBinary();
	f.close();

	return data;
}



/**
 * Saves a binary file to disk
 *
 * @param {String} name the file name appended to the base path
 * @param {ByteString} data the binary content
 */
DAOFactoryFileSystem.prototype.saveBinaryFile = function(name, data) {
	var fn = this.mapPath(name);
	var f = new File(fn);
	f.writeAll(data);
	f.close();
}



/**
 * Loads a XML file from disk
 *
 * @param {String} filename the fully qualified file name
 * @return the XML content
 * @type XML
 */
DAOFactoryFileSystem.loadXMLFile = function(filename) {
	// Open stream
	var f = new java.io.FileReader(filename);
	var bfr = new java.io.BufferedReader(f);

	// Skip processing instructions
	var result;
	do	{
		result = bfr.readLine();
	} while ((result != null) && (result.substr(0, 2) == "<?"));

	if (result == null) {
		bfr.close();
		f.close();
		return null;
	}

	var line;
	while ((line = bfr.readLine()) != null) {
		result += line + "\n";
	}
	bfr.close();
	f.close();
	default xml namespace = "";
	return new XML(result);
}



/**
 * Saves XML to disk
 *
 * @param {String} filename the fully qualified file name
 * @param {XML} data the XML content
 */
DAOFactoryFileSystem.saveXMLFile = function(filename, xml) {
	var fw = new java.io.FileWriter(filename);
	fw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
	fw.write(xml.toXMLString());
	fw.close();
}




/**
 * Load configuration
 *
 * @param {String} path the relative path of the PKI element (e.g. "UTCVCA1/UTDVCA1")
 * @return the configuration object or null if none defined
 * @type XML
 */
DAOFactoryFileSystem.prototype.loadConfig = function(path) {
	var fn = this.mapPath(path + "/config.xml");
	var cfgxml = null;

	try	{
		var cfgxml = DAOFactoryFileSystem.loadXMLFile(fn);
	}
	catch(e) {
//		GPSystem.trace(e);
	}
	return cfgxml;
}



/**
 * Save configuration
 *
 * <p>This method will create the necessary path and save the configuration to config.xml</p>

 * @param {String} path the relative path of the PKI element (e.g. "UTCVCA1/UTDVCA1")
 * @param {XML} cfg the configuration object
 */
DAOFactoryFileSystem.prototype.saveConfig = function(path, cfg) {

	if (arguments.length != 2) {
		throw new GPError("DAOFactoryFileSystem", GPError.INVALID_ARGUMENTS, 0, "path and cfg argument required");
	}

	var fn = this.mapPath(path);
	var f = new java.io.File(fn);
	if (!f.exists()) {
		f.mkdirs();
	}

	var fn = this.mapPath(path + "/config.xml");
	DAOFactoryFileSystem.saveXMLFile(fn, cfg);
}



/**
 * Create a default configuration
 *
 * @returns a suitable default configuration object
 * @type XML
 */
DAOFactoryFileSystem.prototype.getDefaultConfig = function() {
	default xml namespace = "";
	var defaultCfg =
		<CAConfig>
			<sequence>
				<current>0</current>
			</sequence>
		</CAConfig>;
	return defaultCfg;
}



/**
 * Delete file
 */
DAOFactoryFileSystem.prototype.deleteFile = function(name) {
	var fn = this.mapPath(name);
	var f = new java.io.File(fn);
	return f["delete"]();		// delete is a reserved keyword
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Holder Object
 */

var SerializableBusinessObject = require('scsh/pki-db/SerializableBusinessObject').SerializableBusinessObject;



function Holder(dao, path, certtype, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + path + "," + certtype + ")");

	this.dao = dao;

	// Must match database scheme
	this.id = 0;
	if (path) {
		this.name = path.substr(path.lastIndexOf("/") + 1);
	}
	this.certificateType = certtype;

	this.signerNo = 0;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}

	// Private properties
	this._path = path;
}

Holder.prototype = Object.create(SerializableBusinessObject.prototype);
Holder.constructor = Holder;

exports.Holder = Holder;


Holder.CVC = 1;		// Holder of CVC certificates
Holder.X509 = 2;	// Holder of X509 certificates
Holder.TYPEMASK = 0x0F;	// Mask to split certificate type from context



Holder.prototype.getReadablePath = function() {
	var path = this.dao.determineHolderPathList(this);
	var name = "";

	for (var j = 0; j < path.length; j++) {
		var holder = path[j];
		if (j > 0) {
			name += " / ";
		}
		name += holder.name;
	}

	return name;
}



Holder.prototype.toString = function() {
	var str = "Holder";
	str += "\nid '" + this.id + "'";
	if (this.certificateType == 2) {
		str += "\ncertificateType X509";
	} else {
		str += "\ncertificateType '" + this.certificateType + "'";
	}
	str += "\nparentId '" + this.parentId + "'";
	str += "\nname '" + this.name + "'";
	str += "\nsubjectId '" + this.subjectId + "'";
	str += "\nsignerNo '" + this.signerNo + "'";
	str += "\ncertId '" + this.certId + "'";

	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2025 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview KeyEscrow Object
 */



function KeyEscrow(dao, template) {
	this.dao = dao;

	// Must match database scheme
	this.id = 0;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}
}

exports.KeyEscrow = KeyEscrow;



KeyEscrow.prototype.toString = function() {
	return "KeyEscrow " + this.id;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for database persistence
 */

function LongDate(date) {
	this.date = date;
}

exports.LongDate = LongDate;/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Request Object
 */



function Request(dao, holder, keyId, encodedRequest, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + holder + "," + keyId + "," + encodedRequest + ")");

	this.dao = dao;

	// Must match database scheme
	this.id = 0;
	if (holder) {
		this.holderId = holder.id;
	}
	this.keyId = keyId;
	this.bytes = encodedRequest;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}

	// Private properties
	this._holder = holder;
}

exports.Request = Request;



Request.prototype.toString = function() {
	return "Request " + this.id;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Role Object
 */



function Role(dao, name, managingRoleId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + name + ", " + managingRoleId + ")");

	this.dao = dao;

	// Must match database scheme
	this.name = name;
	if (managingRoleId) {
		this.managingRoleId = managingRoleId;
	}
}

exports.Role = Role;



Role.prototype.toString = function() {
	return "Role " + this.name;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Serializable Business Object
 */

function SerializableBusinessObject() {

}

exports.SerializableBusinessObject = SerializableBusinessObject;



SerializableBusinessObject.prototype.getContent = function() {
	if (this._content) {
		return this._content;
	}
	if (!this.content) {
		return {};
	}
	this._content = this.deserialize(this.content);
	return this._content;
}



SerializableBusinessObject.prototype.setContent = function(obj) {
	this._content = obj;
	this.content = this.serialize();
}



SerializableBusinessObject.prototype.serialize = function() {
	if (typeof(this._content) != "undefined") {
		this.content = JSON.stringify(this._content, null, '\t');
	}
	return this.content;
}



/**
 * Recreate embedded objects
 *
 * @private
 */
SerializableBusinessObject.JSONReviver = function(key, value) {
	if (value && value.clazz) {
		switch(value.clazz) {
			case "ByteString": value = ByteString.fromJSON(value); break;
		}
	}
	return value;
}



SerializableBusinessObject.prototype.deserialize = function(json) {
	return JSON.parse(json, SerializableBusinessObject.JSONReviver);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Service Request Object
 */

var SerializableBusinessObject = require('scsh/pki-db/SerializableBusinessObject').SerializableBusinessObject;

function ServiceRequest(dao, template) {
	this.dao = dao;

	// Must match database scheme
	this.id = 0;
	this.lifecycle = 1;

	if (template) {
		for (var i in template) {
			if ((i == "content") && typeof(template[i]) != "string") {
				this.setContent(template[i]);
			} else {
				this[i] = template[i];
			}
		}
	}

	// Private properties
}

ServiceRequest.prototype = Object.create(SerializableBusinessObject.prototype);
ServiceRequest.constructor = ServiceRequest;

exports.ServiceRequest = ServiceRequest;



ServiceRequest.prototype.toString = function() {
// 	return "ServiceRequest " + this.id;
	var str = "ServiceRequest";
	str += "\nid '" + this.id + "'";
	str += "\nparentServiceRequestId '" + this.parentServiceRequestId + "'";
	str += "\nprocess '" + this.process + "'";
	str += "\ndetails '" + this.details + "'";
	str += "\nstate '" + this.state + "'";
	str += "\nlifecycle '" + this.lifecycle + "'";
	str += "\noriginatorId '" + this.originatorId + "'";
	str += "\nrecipientId  '" + this.recipientId + "'";
	str += "\nassignedToRole '" + this.assignedToRole + "'";
	str += "\ncreated '" + this.created + "'";
	str += "\ncontent '" + this.content + "'";

	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Service Request State Object
 */

var SerializableBusinessObject = require('scsh/pki-db/SerializableBusinessObject').SerializableBusinessObject;

function ServiceRequestState(dao, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + ")");

	this.dao = dao;

	// Must match database scheme
	this.id = 0;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}

	// Private properties
}

ServiceRequestState.prototype = Object.create(SerializableBusinessObject.prototype);
ServiceRequestState.constructor = ServiceRequestState;

exports.ServiceRequestState = ServiceRequestState;



ServiceRequestState.prototype.toString = function() {
	var str = "ServiceRequestState";
	str += "\nid [ " + this.id + " ]";
	str += "\nserviceRequestId [ " + this.serviceRequestId + " ]";
	str += "\nlifecycle [ " + this.lifecycle + " ]";
	str += "\ntransitionTime [ " + this.transitionTime + " ]";
	str += "\ncaseHandlerId [ " + this.caseHandlerId + " ]";
	str += "\ncontent [ " + this.content + " ]";

	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Signer Object
 */

var SerializableBusinessObject = require('scsh/pki-db/SerializableBusinessObject').SerializableBusinessObject;

function Signer(dao, holder, name, keyId, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + holder + ")");

	this.dao = dao;

	// Must match database scheme
	this.id = 0;
	if (holder) {
		this.holderId = holder.id;
	}
	this.name = name;
	this.keyId = keyId;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}

	// Private properties
	this._holder = holder;
}

Signer.prototype = Object.create(SerializableBusinessObject.prototype);
Signer.constructor = Signer;

exports.Signer = Signer;



Signer.prototype.toString = function() {
	return "Signer " + this.id;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Subject Object
 */

var SerializableBusinessObject = require('scsh/pki-db/SerializableBusinessObject').SerializableBusinessObject;

function Subject(dao, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + ")");

	this.dao = dao;

	// Must match database scheme
	this.id = 0;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}
}

Subject.prototype = Object.create(SerializableBusinessObject.prototype);
Subject.constructor = Subject;

exports.Subject = Subject;



Subject.prototype.toString = function() {
	var str = "Subject id=" + this.id;

	if (this.email) {
		str += ", email=" + this.email;
	}
	if (this.name) {
		str += ", name=" + this.name;
	}
	if (this.managedByRoleId) {
		str += ", managedByRoleId=" + this.managedByRoleId;
	}
	if (this.assuranceLevel > 0) {
		str += ", assuranceLevel=" + this.assuranceLevel;
	}

	str += ", content=" + this.content;

	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Token Object
 */



function Token(dao, tokenPath, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + tokenPath + "," + template + ")");

	this.dao = dao;

	// Must match database scheme
	this.path = tokenPath;

	if (template) {
		for (var i in template) {
			this[i] = template[i];
		}
	}
}

exports.Token = Token;



Token.prototype.toString = function() {
	var str =  "Token " + this.path;

	if (this.subjectId) {
		str += " assigned to subject" + this.subjectId;
	}

	if (this.serviceRequestId) {
		str += ", ServiceRequest=" + this.serviceRequestId;
	}

	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview TokenAction Object
 */



function TokenAction(dao, tokenId, serviceRequestId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new(" + dao + "," + tokenId + "," + serviceRequestId + ")");

	this.dao = dao;

	// Must match database scheme
	this.tokenId = tokenId;
	this.serviceRequestId = serviceRequestId;
}

exports.TokenAction = TokenAction;



TokenAction.prototype.toString = function() {
	return "TokenAction(" + this.id + "," + this.tokenId + "," + this.serviceRequestId + ")";
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for file system based persistence
 */

var Certificate = require('scsh/pki-db/Certificate').Certificate;
var Holder = require('scsh/pki-db/Holder').Holder;



/**
 * Data access object for certificates
 *
 * @param {Object} the factory that created this DAO
 */
function CertificateDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.CertificateDAO = CertificateDAO;



CertificateDAO.create = [
"CREATE TABLE IF NOT EXISTS Certificate (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	holderId MEDIUMINT UNSIGNED NOT NULL," +
"	serviceRequestId MEDIUMINT UNSIGNED REFERENCES ServiceRequest(id)," +
"	expiry BIGINT," +
"	status SMALLINT NOT NULL DEFAULT 0," +
"	revocationDate TIMESTAMP NULL," +
"	invalidityDate TIMESTAMP NULL," +
"	serial VARCHAR(100) NOT NULL," +
"	linkDir SMALLINT NOT NULL," +
"	keyId VARBINARY(64)," +
"	bytes VARBINARY(8192) NOT NULL," +
"	PRIMARY KEY (id)," +
"	UNIQUE (holderId, serial, linkDir)," +
"	FOREIGN KEY (holderId) REFERENCES Holder(id) ON DELETE CASCADE" +
")",
{	H2: "CREATE INDEX IF NOT EXISTS Certificate_Idx1 ON Certificate(holderId, serial, linkDir);",
	MySQL: {
		IsEmpty: "SHOW INDEX FROM Certificate WHERE Key_name = 'Certificate_Idx1';",
		Statement: "ALTER TABLE Certificate ADD INDEX Certificate_Idx1 (holderId, serial, linkDir);"
	}},
{	H2: "CREATE INDEX IF NOT EXISTS Certificate_Idx2 ON Certificate(keyId);",
	MySQL: {
		IsEmpty: "SHOW INDEX FROM Certificate WHERE Key_name = 'Certificate_Idx2';",
		Statement: "ALTER TABLE Certificate ADD INDEX Certificate_Idx2 (keyId);"
	}}
];



CertificateDAO.drop = "DROP TABLE IF EXISTS Certificate";



CertificateDAO.prototype.toString = function() {
	return "CertificateDAO(db)";
}



/**
 * Create and persists a new certificate object
 *
 * For certificates the serial number is used as unique identifier, as the keyId can be re-used if more
 * than one certificate is issued for the same key.
 *
 * @param {Holder} holder the holder of this certificate
 * @param {String} serial the serial number of this certificate (full CHR for CVC and decimal serial for X.509)
 * @param {Number} dir one of Certificate.UP, Certificate.SHORT or Certificate.DOWN. See Certificate for explanation
 * @param {ByteString} certbin the binary presentation of the certificate
 * @type Certificate
 * @return the newly created certificate object
 */
CertificateDAO.prototype.newCertificate = function(holder, serial, dir, certbin, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newCertificate(" + holder + "," + serial + "," + dir + "," + certbin.bytes(0,10).toString(HEX) + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(serial, "Parameter serial must not be empty");
	assert(typeof(serial) == "string", "Parameter serial must be a String");
	assert(dir == Certificate.UP || dir == Certificate.SHORT || dir == Certificate.DOWN, "Parameter dir invalid");
	assert(certbin, "Parameter certbin must not be empty");
	assert(certbin instanceof ByteString, "Parameter must be instance of ByteString");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var certificate = new Certificate(this, holder, serial, dir, certbin, template);

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "Certificate", certificate);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		certificate.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return certificate;
}



/**
 * Get certificate identified by id
 *
 * @param {Number} id the certificate database id
 * @type Certificate
 * @return the certificate object or null if not found
 */
CertificateDAO.prototype.getCertificateById = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateById(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be number");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Certificate where id = ?;");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No certificate with id " + id + " found");
			return null;
		}
		var certificate = new Certificate(this);
		this.factory.resultSetToProperties(rs, certificate);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return certificate;
}



/**
 * Get certificate identified by serial number for given holder
 *
 * @param {Holder} holder the holder of this certificate
 * @param {String} serial the serial number of this certificate (full CHR for CVC and hexadecimal serial for X.509)
 * @param {Number} dir one of Certificate.UP, Certificate.SHORT or Certificate.DOWN. See Certificate for explanation
 * @type Certificate
 * @return the certificate object or null if not found
 */
CertificateDAO.prototype.getCertificateBySerial = function(holder, serial, dir) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateBySerial(" + holder + "," + serial + "," + dir + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(serial, "Parameter serial must not be empty");
	assert(typeof(serial) == "string", "Parameter serial must be a String");
	assert(dir == Certificate.UP || dir == Certificate.SHORT || dir == Certificate.DOWN, "Parameter dir invalid");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Certificate where holderId = ? and serial = ? and linkDir = ?;");
		stmt.setInt(1, holder.id);
		stmt.setString(2, serial);
		stmt.setInt(3, dir);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			rs.close();

			if (dir == Certificate.SHORT) {
				stmt.close();
				con.close();
				GPSystem.log(GPSystem.DEBUG, module.id, "Root certificate " + serial + " not found");
				return null;
			}

			stmt.setInt(3, Certificate.SHORT);
			rs = stmt.executeQuery();
			if (!rs.next()) {
				rs.close();
				stmt.close();
				con.close();
				GPSystem.log(GPSystem.DEBUG, module.id, "No certificate with " + serial + " found");
				return null;
			}
		}
		var certificate = new Certificate(this, holder);
		this.factory.resultSetToProperties(rs, certificate);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return certificate;
}



/**
 * Get certificate identified by serial number for a certain certificate type
 *
 * This method is used to locate the issuer of a CVC terminal certificate when building a chain to the root.
 * The method is not guaranteed to find a certificate, if multiple certificates of the same name exist in a PKI,
 * e.g. if two different DVCAs use the same terminal naming scheme.
 *
 * @param {String} serial the serial number of this certificate (full CHR for CVC and decimal serial for X.509)
 * @param {Number} certtype one of Holder.CVC(default) or Holder.X509. See Holder for explanation
 * @type Certificate
 * @return the certificate object or null if not found
 */
CertificateDAO.prototype.getCertificateBySerialAndType = function(serial, certtype) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateBySerialAndType(" + certtype + "," + serial + ")");

	assert(serial, "Parameter serial must not be empty");
	assert(typeof(serial) == "string", "Parameter serial must be a String");

	if (!certtype) {
		certtype = Holder.CVC;
	}

	assert(((certtype & 0xF) == Holder.CVC) || ((certtype & 0xF) == Holder.X509), "Parameter certtype invalid");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Certificate join Holder on Certificate.holderId = Holder.id where Certificate.serial = ? and Holder.certificateType = ?;");

		stmt.setString(1, serial);
		stmt.setInt(2, certtype);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			rs.close();
			stmt.close();
			con.close();
			GPSystem.log(GPSystem.DEBUG, module.id, "No certificate found with serial " + serial);
			return null;
		}

		var certificate = new Certificate(this, { id: -1} );
		this.factory.resultSetToProperties(rs, certificate);

		if (rs.next()) {
			rs.close();
			stmt.close();
			con.close();
			GPSystem.log(GPSystem.DEBUG, module.id, "Multiple certificates found with serial " + serial);
			return null;
		}

	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return certificate;
}



/**
 * Get certificate identified by key id
 *
 * @param {Number} keyId the certificate database keyId
 * @type Certificate
 * @return the certificate object or null if not found
 */
CertificateDAO.prototype.getCertificateByKeyId = function(keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateByKeyId(" + keyId + ")");

	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Certificate where keyId = ?;");
		stmt.setBytes(1, keyId);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No certificate with keyId " + keyId + " found");
			return null;
		}
		var certificate = new Certificate(this);
		this.factory.resultSetToProperties(rs, certificate);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return certificate;
}



/**
 * Get the current certificate in use by this holder
 *
 * @param {Holder} holder the holder of this certificate
 * @type Certificate
 * @return the certificate object or null if no current certificate
 */
CertificateDAO.prototype.getCurrentCertificate = function(holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCertificate(" + holder + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");

	if (!holder.certId) {
		return null;
	}

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Certificate where id = ?;");
		stmt.setInt(1, holder.certId);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "id " + holder.certId + " not found");
			return null;
		}
		var certificate = new Certificate(this, holder);
		this.factory.resultSetToProperties(rs, certificate);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return certificate;
}



/**
 * Get all certificates issued to this holder
 *
 * @param {Holder} holder the holder of the certificates
 * @type Certificate[]
 * @return the list of certificates, which my be empty
 */
CertificateDAO.prototype.enumerateCertificates = function(holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "enumerateCertificates(" + holder + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");

	var con = null;
	var stmt = null;
	var rs = null;
	var result = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Certificate where holderId = ?;");
		stmt.setInt(1, holder.id);
		rs = stmt.executeQuery();
		while (rs.next()) {
			var certificate = new Certificate(this, holder);
			this.factory.resultSetToProperties(rs, certificate);
			result.push(certificate);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return result;
}



/**
 * Get all certificates that were imported by the given service request id
 *
 * @param {Number} serviceRequestId the service request id
 * @type Certificate[]
 * @return the list of certificates, which my be empty
 */
CertificateDAO.prototype.enumerateCertificatesByServiceRequestId = function(serviceRequestId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "enumerateCertificatesByServiceRequestId(" + serviceRequestId + ")");

	assert(typeof(serviceRequestId) == "number", "Parameter serviceRequestId must be number");
	assert(serviceRequestId > 0, "Invalid argument value for serviceRequestId");

	var con = null;
	var stmt = null;
	var rs = null;
	var result = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Certificate where serviceRequestId = ?;");
		stmt.setInt(1, serviceRequestId);
		rs = stmt.executeQuery();
		while (rs.next()) {
			var certificate = new Certificate(this);
			this.factory.resultSetToProperties(rs, certificate);
			result.push(certificate);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return result;
}



/**
 * Delete certificate
 *
 * @param {Certificate} certificate the certificate to delete
 * @type boolean
 * @return true if deleted
 */
CertificateDAO.prototype.deleteCertificate = function(certificate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteCertificate(" + certificate + ")");

	assert(certificate, "Parameter certificate must not be empty");
	assert(certificate instanceof Certificate, "Parameter must be instance of Certificate");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from Certificate where id = ?;");

		stmt.setInt(1, certificate.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return true;
}



/**
 * Update revocation status
 *
 * @param {Number} certId the certificate id
 * @param {Number} status the status id
 * @type boolean
 * @return true if updated
 */
CertificateDAO.prototype.updateRevocationStatus = function(certId, status) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateRevocationStatus( certificateId=" + certId + " status=" + status + ")");

	assert(typeof(certId) == "number", "Parameter id must be number");
	assert(typeof(status) == "number", "Parameter status must be number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Certificate set status = ? where id = ?;");

		stmt.setInt(1, status);
		stmt.setInt(2, certId);
		var updated = stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return updated > 0;
}



/**
 * Update revocation date
 *
 * @param {Number} certId the certificate id
 * @param {Date/NULL} date the revocation date or null
 * @type boolean
 * @return true if updated
 */
CertificateDAO.prototype.updateRevocationDate = function(certId, date) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateRevocationDate( certificateId=" + certId + " date=" + date + ")");

	assert(typeof(certId) == "number", "Parameter id must be number");
	assert(date instanceof Date || date == null, "Parameter date must be an object of type Date or null");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		if (date == null) {
			stmt = con.prepareStatement("update Certificate set revocationDate = NULL where id = ?;");
			stmt.setInt(1, certId);
		} else {
			stmt = con.prepareStatement("update Certificate set revocationDate = ? where id = ?;");
			var ts = new java.sql.Timestamp(date.valueOf());
			stmt.setTimestamp(1, ts);
			stmt.setInt(2, certId);
		}

		var updated = stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return updated > 0;
}



/**
 * Update invalidity date
 *
 * @param {Number} certId the certificate id
 * @param {Date/NULL} date the invalidity date or null
 * @type boolean
 * @return true if updated
 */
CertificateDAO.prototype.updateInvalidityDate = function(certId, date) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateInvalidityDate( certificateId=" + certId + " date=" + date + ")");

	assert(typeof(certId) == "number", "Parameter id must be number");
	assert(date instanceof Date || date == null, "Parameter date must be an object of type Date or null");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		if (date == null) {
			stmt = con.prepareStatement("update Certificate set invalidityDate = NULL where id = ?;");
			stmt.setInt(1, certId);
		} else {
			stmt = con.prepareStatement("update Certificate set invalidityDate = ? where id = ?;");
			var ts = new java.sql.Timestamp(date.valueOf());
			stmt.setTimestamp(1, ts);
			stmt.setInt(2, certId);
		}

		var updated = stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return updated > 0;
}



/**
 * Update service request id
 *
 * @param {Number} certId the certificate id
 * @param {Number} srId the service request id
 * @type boolean
 * @return true if updated
 */
CertificateDAO.prototype.updateServiceRequestId = function(certId, srId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateServiceRequestId( certificateId=" + certId + " srId=" + srId + ")");

	assert(typeof(certId) == "number", "Parameter id must be number");
	assert(typeof(srId) == "number", "Parameter srId must be number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Certificate set serviceRequestId = ? where id = ?;");

		stmt.setInt(1, srId);
		stmt.setInt(2, certId);
		var updated = stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return updated > 0;
}



/**
 * Get all revoked certificates issued to the given holder
 *
 * @param {Number} parentHolderId the issuer's holder id
 * @param {Date} revocationDate the date to check the expiration date of the certificates
 * @type Certificate[]
 * @return the list of certificates, which my be empty
 */
CertificateDAO.prototype.getRevokedCertificates = function(parentHolderId, revocationDate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRevokedCertificates(" + parentHolderId + ", " + revocationDate + ")");

	assert(typeof(parentHolderId) == "number", "Parameter parentHolderId must be number");
	assert(revocationDate instanceof Date, "Parameter revocationDate must be an object of type Date or null");

	var con = null;
	var stmt = null;
	var rs = null;
	var result = [];

	try	{
		con = this.factory.getConnection();

		var sql = "select c.id, c.holderId, c.serviceRequestId, c.expiry, c.status, c.revocationDate, c.invalidityDate, c.serial, c.linkDir, c.keyId, c.bytes "
			+ "from Certificate c join Holder h on (c.holderId = h.id) "
			+ "where h.parentId = ? and c.status > 0 and c.expiry > ?;";

		stmt = con.prepareStatement(sql);
		stmt.setInt(1, parentHolderId);
		stmt.setLong(2, revocationDate.valueOf());
		rs = stmt.executeQuery();
		while (rs.next()) {
			var certificate = new Certificate(this);
			this.factory.resultSetToProperties(rs, certificate);
			result.push(certificate);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return result;
}



/**
 * Update full table
 *
 * @param {Function} updatefunc the callback to receive the result set to be modified
 */
CertificateDAO.prototype.updateBatch = function(updatefunc) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateBatch()");

	assert(typeof(updatefunc) == "function", "Parameter updatefunc must be a function");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();
		stmt = con.createStatement(java.sql.ResultSet.TYPE_SCROLL_SENSITIVE, java.sql.ResultSet.CONCUR_UPDATABLE);
		rs = stmt.executeQuery("select * from Certificate;");

		while (rs.next()) {
			updatefunc(rs);
			rs.updateRow();
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for database based configuration persistence
 */

var Configuration = require('scsh/pki-db/Configuration').Configuration;



/**
 * Data access object for configurations
 *
 * @param {Object} the factory that created this DAO
 */
function ConfigurationDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.ConfigurationDAO = ConfigurationDAO;



ConfigurationDAO.create =
"CREATE TABLE IF NOT EXISTS Configuration (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	name VARCHAR(250)," +
"	content LONGTEXT," +
"	PRIMARY KEY (id)" +
")";

ConfigurationDAO.drop = "DROP TABLE IF EXISTS Configuration";



ConfigurationDAO.prototype.toString = function() {
	return "ConfigurationDAO(db)";
}



/**
 * Create and persists a new configuration
 *
 * @type Configuration
 * @return the newly created configuration object
 */
ConfigurationDAO.prototype.newConfiguration = function(name, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newConfiguration(" + name + ")");

	var sr = new Configuration(this, name, template);

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "Configuration", sr);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		sr.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return sr;
}



/**
 * Get configuration identified by id
 *
 * @param {Number} id the id
 * @type Configuration
 * @return the configuration or null if not found
 */
ConfigurationDAO.prototype.getConfigurationById = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getConfigurationById(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Configuration where id = ?");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "id " + id + " not found");
			return null;
		}
		var configuration = new Configuration(this);
		this.factory.resultSetToProperties(rs, configuration);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return configuration;
}



/**
 * Get configuration identified by name
 *
 * @param {String} name the name of the configuration
 * @type Configuration
 * @return the configuration or null if not found
 */
ConfigurationDAO.prototype.getConfigurationByName = function(name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getConfigurationByName(" + name + ")");

	assert(typeof(name) == "string", "Parameter name must be a String");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Configuration where name = ?");
		stmt.setString(1, name);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "name " + name + " not found");
			return null;
		}
		var configuration = new Configuration(this);
		this.factory.resultSetToProperties(rs, configuration);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return configuration;
}



/**
 * Update the Configuration content
 *
 * @param {Configuration} configuration the configuration to update
 * @param {String} content the new content
 */
ConfigurationDAO.prototype.updateContent = function(configuration, content) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateContent(" + configuration + "," + content + ")");

	assert(configuration, "Parameter configuration must not be empty");
	assert(configuration instanceof Configuration, "Parameter must be instance of Configuration");
	assert(typeof(content) == "string", "Parameter val must be a String");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Configuration set content = ? where id = ?;");

		stmt.setString(1, content);
		stmt.setInt(2, configuration.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	configuration.content = content;
}



/**
 * Delete Configuration
 *
 * @param {Configuration} configuration the configuration to delete
 * @type boolean
 * @return true if deleted
 */
ConfigurationDAO.prototype.deleteConfiguration = function(configuration) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteConfiguration(" + configuration + ")");

	assert(configuration, "Parameter configuration must not be empty");
	assert(configuration instanceof Configuration, "Parameter must be instance of Configuration");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from Configuration where id = ?;");

		stmt.setInt(1, configuration.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return true;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview HolderDAO for database objects
 */

var Holder = require('scsh/pki-db/Holder').Holder;
var Certificate = require('scsh/pki-db/Certificate').Certificate;



/**
 * Data access object for certificate holders
 *
 * @param {Object} the factory that created this DAO
 */
function HolderDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.HolderDAO = HolderDAO;


HolderDAO.create =
"CREATE TABLE IF NOT EXISTS Holder (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	type VARCHAR(20)," +
"	certificateType SMALLINT UNSIGNED NOT NULL," +
"	parentId MEDIUMINT UNSIGNED," +
"	name VARCHAR(100)," +
"	subjectId MEDIUMINT UNSIGNED," +
"	signerNo MEDIUMINT UNSIGNED," +
"	certId MEDIUMINT UNSIGNED," +
"	content LONGTEXT," +
"	UNIQUE (certificateType, parentId, name)," +
"	PRIMARY KEY (id)," +
"	FOREIGN KEY (parentId) REFERENCES Holder(id) ON DELETE CASCADE," +
"	FOREIGN KEY (subjectId) REFERENCES Subject(id) ON DELETE SET NULL" +
")";


HolderDAO.drop = "DROP TABLE IF EXISTS Holder";


HolderDAO.alter = [
	"ALTER TABLE Holder " +
	"ADD COLUMN IF NOT EXISTS type VARCHAR(20)",

	"ALTER TABLE Holder " +
	"ADD COLUMN IF NOT EXISTS content LONGTEXT",
];


HolderDAO.prototype.toString = function() {
	return "HolderDAO(db)";
}



/**
 * Strip the last element of the path, effectively defining the parent within the path
 *
 * @private
 * @param {String} path the path to strip the last element from
 * @returns the parent path or null for the root
 * @type String
 */
HolderDAO.parentPathOf = function(path) {
	var ofs = path.lastIndexOf("/");
	if (ofs <= 0) {
		return null;
	}
	return path.substr(0, ofs);
}



/**
 * Determine object id for holder identified by path
 *
 * @param {String} path the PKI path
 * @type Number
 * @return the id or 0 if not found
 */
HolderDAO.prototype.determineId = function(path, certtype) {
	GPSystem.log(GPSystem.DEBUG, module.id, "determineId(" + path + "," + certtype + ")");

	var path = path.substr(1).split("/");
	assert(path.length > 0, "Path must contain at least one element");
	assert(typeof(certtype) == "number", "Certtype must be number");

	var con = null;
	var stmt = null;
	var rs = null;
	var id = 0;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select id from Holder where certificateType = ? and parentId is null and name = ?;");
		stmt.setInt(1, certtype);
		stmt.setString(2, path[0]);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "name " + path[0] + " at root level not found for certtype = " + certtype);
			return 0;
		}

		var id = rs.getInt(1);
		rs.close();
		stmt.close();

		stmt = con.prepareStatement("select id from Holder where parentId = ? and name = ?;");
		for (var i = 1; i < path.length; i++) {
			stmt.setInt(1, id);
			stmt.setString(2, path[i]);
			rs = stmt.executeQuery();
			if (!rs.next()) {
				GPSystem.log(GPSystem.DEBUG, module.id, "name " + path[i] + " at level " + i + "not found");
				return 0;
			}
			id = rs.getInt(1);
			rs.close();
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return id;
}



/**
 * Create and persists a new holder object without a path specifier
 *
 * @param {Number} certtype one of Holder.CVC or Holder.X509. See Holder for explanation
 * @type Holder
 * @return the newly created holder object
 */
HolderDAO.prototype.newHolderForParent = function(parentId, certtype, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newHolderForParent(" + parentId + "," + certtype + ")");

	assert(typeof(parentId) == "number", "Parameter parentId must be number");

	if (!certtype) {
		certtype = Holder.CVC;
	}

	assert(((certtype & 0xF) == Holder.CVC) || ((certtype & 0xF) == Holder.X509), "Parameter certtype invalid");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var holder = new Holder(this, undefined, certtype, template);

	var con = null;
	var stmt = null;
	var rs = null;

	if (parentId) {
		holder.parentId = parentId;
	}

	try	{
		con = this.factory.getConnection();

		var stmt = this.factory.insertStatementFromObject(con, "Holder", holder);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		holder.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return holder;
}



/**
 * Create and persists a new holder object
 *
 * @param {String} path the path in the PKI hierachie
 * @param {Number} certtype one of Holder.CVC or Holder.X509. See Holder for explanation
 * @type Holder
 * @return the newly created holder object
 */
HolderDAO.prototype.newHolder = function(path, certtype, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newHolder(" + path + "," + certtype + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");

	if (!certtype) {
		certtype = Holder.CVC;
	}

	assert(((certtype & 0xF) == Holder.CVC) || ((certtype & 0xF) == Holder.X509), "Parameter certtype invalid");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var holder = new Holder(this, path, certtype, template);

	var con = null;
	var stmt = null;
	var rs = null;

	var parentid = 0;

	var ofs = path.lastIndexOf("/");

	if (ofs > 0) {
		parentid = this.determineId(path.substr(0, ofs), certtype);
		if (!parentid) {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "Path " + path + " is invalid");
		}
		holder.parentId = parentid;
	}

	try	{
		con = this.factory.getConnection();

		var stmt = this.factory.insertStatementFromObject(con, "Holder", holder);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		holder.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return holder;
}



/**
 * Get holder for given PKI path
 *
 * @param {String} path the path in the PKI hierachie
 * @type Holder
 * @return the holder at the path
 */
HolderDAO.prototype.getHolder = function(path, certtype) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolder(" + path + "," + certtype + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");
	assert(typeof(certtype) == "number", "Certtype must be number");

	var con = null;
	var stmt = null;
	var rs = null;
	var holder = null;
	var ofs = path.lastIndexOf("/");

	var parentid = 0;
	if (ofs > 0) {
		parentid = this.determineId(path.substr(0, ofs), certtype);
		if (!parentid) {
			GPSystem.log(GPSystem.DEBUG, module.id, "Path " + path + " is invalid");
			return null;
		}

	}

	var name = path.substr(ofs + 1);

	try	{
		con = this.factory.getConnection();

		if (parentid) {
			stmt = con.prepareStatement("select * from Holder where name = ? and parentId = ?;");
			stmt.setInt(2, parentid);
		} else {
			stmt = con.prepareStatement("select * from Holder where name = ? and parentId is null and certificateType = ?;");
			stmt.setInt(2, certtype);
		}
		stmt.setString(1, name);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "name " + name + " not found with parent " + parentid);
			return null;
		}
		holder = new Holder(this, path);
		this.factory.resultSetToProperties(rs, holder);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return holder;
}



/**
 * Get holder for given id
 *
 * @param {Number} id the holder id
 * @type Holder
 * @return the holder for the given id
 */
HolderDAO.prototype.getHolderById = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderById(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be number");

	var con = null;
	var stmt = null;
	var rs = null;
	var holder = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Holder where id = ?;");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "id " + id + " not found");
			return null;
		}
		holder = new Holder(this, undefined);
		this.factory.resultSetToProperties(rs, holder);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return holder;
}



/**
 * Get holder for a given subject, parent holder and certificate type
 *
 * @param {Number} subjectId the subject id
 * @param {Number} parentId the parent holder id
 * @param {Number} certificateType one of Holder.CVC or Holder.X509. See Holder for explanation
 * @type Holder
 * @return the holder or null if not found
 */
HolderDAO.prototype.getHolderBySubjectAndParent = function(subjectId, parentId, certificateType) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderBySubjectAndParent(subjectId=" + subjectId + ", parentId=" + parentId + ", certificateType=" + certificateType + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(parentId) == "number", "Parameter parentId must be a number");
	assert(typeof(certificateType) == "number", "Parameter certificateType must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var holder = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Holder where subjectId = ? and parentId = ? and certificateType = ?;");
		stmt.setInt(1, subjectId);
		stmt.setInt(2, parentId);
		stmt.setInt(3, certificateType);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No holder found");
			return null;
		}
		holder = new Holder(this, undefined);
		this.factory.resultSetToProperties(rs, holder);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return holder;
}



/**
 * Get holder for a given subject, parent holder and certificate type
 *
 * @param {Number} subjectId the subject id
 * @param {Number} parentId the parent holder id
 * @param {Number} certificateType one of Holder.CVC or Holder.X509. See Holder for explanation
 * @type Holder
 * @return the holder or null if not found
 */
HolderDAO.prototype.getHolderByTypeAndName = function(parentId, name, certificateType) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderByTypeAndName(parentId=" + parentId + ", name=" + name + ", certificateType=" + certificateType + ")");

	assert(typeof(parentId) == "number", "Parameter parentId must be a number");
	assert(typeof(name) == "string", "Parameter name must be a number");
	assert(typeof(certificateType) == "number", "Parameter certificateType must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var holder = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Holder where parentId = ? and name = ? and certificateType = ?;");
		stmt.setInt(1, parentId);
		stmt.setString(2, name);
		stmt.setInt(3, certificateType);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No holder found");
			return null;
		}
		holder = new Holder(this, undefined);
		this.factory.resultSetToProperties(rs, holder);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return holder;
}



/**
 * Get a list of holders under the PKI path.
 *
 * @param {String} path the path in the PKI hierachie, use "/" to obtain root holders.
 * @type String[]
 * @return the list of holder names at the path
 */
HolderDAO.prototype.getHolderList = function(path, certtype) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderList(" + path + "," + certtype + ")");

	assert(typeof(path) == "string", "Parameter path must be a String");
	assert(typeof(certtype) == "number", "Certtype must be number");

	var con = null;
	var stmt = null;
	var rs = null;

	var parentid = 0;
	if (path.length > 1) {
		parentid = this.determineId(path, certtype);
		if (!parentid) {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "Path " + path + " is invalid");
		}

	}

	var list = [];

	try	{
		con = this.factory.getConnection();

		if (parentid) {
			stmt = con.prepareStatement("select name from Holder where parentId = ?;");
			stmt.setInt(1, parentid);
		} else {
			stmt = con.prepareStatement("select name from Holder where certificateType = ? and parentId is null;");
			stmt.setInt(1, certtype);
		}
		rs = stmt.executeQuery();
		while (rs.next()) {
			list.push(rs.getString(1));
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Count the number of holders where the given holder is parent
 *
 * @param {Number} holderId the holder id
 * @type Number
 * @return number of child holders
 */
HolderDAO.prototype.countSubHolder = function(holderId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countSubHolder(" + holderId + ")");

    assert(typeof(holderId) == "number", "Parameter holderId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var count = 0;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select count(1) from Holder where parentId = ?;");
		stmt.setInt(1, holderId);

		rs = stmt.executeQuery();
        if (rs.next()) {
            count = rs.getInt(1);
        }
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return count;
}



/**
 * Get a list of sub holders for the given parent id
 *
 * @param {Number} parentId the parent's holder id
 * @type Holder[]
 * @return the holder list
 */
HolderDAO.prototype.getSubHolderList = function(parentId, pageOffset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSubHolderList(" + parentId + ")");

    assert(typeof(parentId) == "number", "Parameter parentId must be a number");
	assert(typeof(pageOffset) == "undefined" || typeof(pageOffset) == "number", "Parameter pageOffset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		var sql = "select * from Holder where parentId = ?"
		if (page) {
			sql += " limit ?,?";
		}
		stmt = con.prepareStatement(sql);

		stmt.setInt(1, parentId);
		if (page) {
			stmt.setInt(2, pageOffset);
			stmt.setInt(3, page);
		}

		rs = stmt.executeQuery();
        while (rs.next()) {
			var holder = new Holder(this, undefined);
			this.factory.resultSetToProperties(rs, holder);
			list.push(holder);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}




/**
 * Get a list of holder for a given subject
 *
 * @param {Number} subjectId the subject id
 * @type Holder[]
 * @return the holder list
 */
HolderDAO.prototype.getHolderListBySubject = function(subjectId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderListBySubject(subjectId=" + subjectId + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Holder where subjectId = ?;");
		stmt.setInt(1, subjectId);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var holder = new Holder(this, undefined);
			this.factory.resultSetToProperties(rs, holder);
			list.push(holder);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Get a list of holder for a given subject
 *
 * @param {Number} subjectId the subject id
 * @param {String} type the holder's type
 * @type Holder[]
 * @return the holder list
 */
HolderDAO.prototype.getHolderListBySubjectAndType = function(subjectId, type) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderListBySubjectAndType(subjectId=" + subjectId+ ", " + type + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(type) == "string", "Parameter type must be a String");

	var con = null;
	var stmt = null;
	var rs = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Holder where subjectId = ? and type like ?;");
		stmt.setInt(1, subjectId);
		stmt.setString(2, type);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var holder = new Holder(this, undefined);
			this.factory.resultSetToProperties(rs, holder);
			list.push(holder);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Get a list of holder for a given type
 *
 * @param {String} type the holder's type
 * @type Holder[]
 * @return the holder list
 */
HolderDAO.prototype.getHolderListByType = function(type) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderListByType(" + type + ")");

	assert(typeof(type) == "string", "Parameter type must be a String");

	var con = null;
	var stmt = null;
	var rs = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Holder where type like ?;");
		stmt.setString(1, type);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var holder = new Holder(this, undefined);
			this.factory.resultSetToProperties(rs, holder);
			list.push(holder);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Determine the path for the given holder
 *
 * @param {Holder} holder the holder
 * @type Holder[]
 * @return the path as a list of holders
 */
HolderDAO.prototype.determineHolderPathList = function(holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "determineHolderPathList(holder=" + holder + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");

	var list = null;

	if (holder.parentId) {
		var parent = this.getHolderById(holder.parentId);
		list = this.determineHolderPathList(parent);
		list.push(holder);
	} else {
		list = []
		list.push(holder); // root holder
	}

	return list;
}



/**
 * Update the holder name
 *
 * @param {Holder} holderId the holder id
 * @param {Number} name the new holder name
 */
HolderDAO.prototype.updateName = function(holderId, name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateName(" + holderId + "," + name + ")");

	assert(typeof(holderId) == "number", "Parameter holderId must be a Number");
	assert(typeof(name) == "string", "Parameter name must be a String");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Holder set name = ? where id = ?;");

		stmt.setString(1, name);
		stmt.setInt(2, holderId);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Update the holder content
 *
 * @param {Holder} holder the holder to update
 * @param {String} content the new content
 */
HolderDAO.prototype.updateContent = function(holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateContent(" + holder + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Holder set content = ? where id = ?;");

		stmt.setString(1, holder.serialize());
		stmt.setInt(2, holder.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Update the subject id
 *
 * @param {Holder} holder the holder
 * @param {Number} val the subject id
 */
HolderDAO.prototype.updateSubjectId = function(holder, val) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateSubjectId(" + holder + "," + val + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(typeof(val) == "number", "Parameter val must be a Number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Holder set subjectId = ? where id = ?;");

		stmt.setInt(1, val);
		stmt.setInt(2, holder.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	holder.subjectId = val;
}


/**
 * Update the signer number
 *
 * @param {Holder} holder the holder
 * @param {Number} val the new signer number
 */
HolderDAO.prototype.updateSignerNo = function(holder, val) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateSignerNo(" + holder + "," + val + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(typeof(val) == "number", "Parameter val must be a Number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Holder set signerNo = ? where id = ?;");

		stmt.setInt(1, val);
		stmt.setInt(2, holder.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	holder.signerNo = val;
}



/**
 * Update the current certificate
 *
 * @param {Holder} holder the holder
 * @param {Number} val the new signer number
 */
HolderDAO.prototype.updateCurrentCertificate = function(holder, certificate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateCurrentCertificate(" + holder + "," + certificate + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(certificate, "Parameter certificate must not be empty");
	assert(certificate instanceof Certificate, "Parameter must be instance of Certificate");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Holder set certId = ? where id = ?;");

		stmt.setInt(1, certificate.id);
		stmt.setInt(2, holder.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	holder.certId = certificate.id;
}



/**
 * Delete holder
 *
 * @param {Holder} holder the holder to delete
 * @type boolean
 * @return true if deleted
 */
HolderDAO.prototype.deleteHolder = function(holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteHolder(" + holder + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from Holder where id = ?;");

		stmt.setInt(1, holder.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return true;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2025 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview KeyEscrowDAO
 */

var KeyEscrow = require('scsh/pki-db/KeyEscrow').KeyEscrow;



 /**
 * Data access object for key escrows
 *
 * @param {Object} the factory that created this DAO
 */
function KeyEscrowDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.KeyEscrowDAO = KeyEscrowDAO;



KeyEscrowDAO.create = [
"CREATE TABLE IF NOT EXISTS KeyEscrow (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	signerId MEDIUMINT UNSIGNED NOT NULL," +
"	keyId VARBINARY(64) NOT NULL," +
"	name VARCHAR(100) NOT NULL," +
"	exportCertificateChain VARBINARY(2700) NOT NULL," +
"	keyblob VARBINARY(8192) NOT NULL," +
"	PRIMARY KEY (id)," +
"	FOREIGN KEY (signerId) REFERENCES Signer(id) ON DELETE CASCADE" +
")",
{	H2: "CREATE INDEX IF NOT EXISTS KeyEscrow_Idx1 ON KeyEscrow(keyId);",
	MySQL: {
		IsEmpty: "SHOW INDEX FROM KeyEscrow WHERE Key_name = 'KeyEscrow_Idx1';",
		Statement: "ALTER TABLE KeyEscrow ADD INDEX KeyEscrow_Idx1 (keyId);"
	}}
];

KeyEscrowDAO.drop = "DROP TABLE IF EXISTS KeyEscrow";



KeyEscrowDAO.prototype.toString = function() {
	return "KeyEscrowDAO(db)";
}



/**
 * Get a list of keys in escrow for the given signer
 *
 * @param {Number} signerId the signerId of the escrow key
 * @type KeyEscrow[]
 * @return the list of keys in escrow
 */
KeyEscrowDAO.prototype.getKeyEscrowBySigner = function(signerId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getKeyEscrowBySigner(" + signerId + ")");

	assert(typeof(signerId) == "number", "signerId must be number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("SELECT * FROM KeyEscrow WHERE signerId = ?;");
		stmt.setInt(1, signerId);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var keyEscrow = new KeyEscrow(this);
			this.factory.resultSetToProperties(rs, keyEscrow);
			list.push(keyEscrow);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview RequestDAO
 */

var Holder = require('scsh/pki-db/Holder').Holder;
var Request = require('scsh/pki-db/Request').Request;



/**
 * Data access object for requests
 *
 * @param {Object} the factory that created this DAO
 */
function RequestDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.RequestDAO = RequestDAO;



RequestDAO.create = [
"CREATE TABLE IF NOT EXISTS Request (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	holderId MEDIUMINT UNSIGNED NOT NULL," +
"	keyId VARBINARY(64) NOT NULL," +
"	bytes VARBINARY(4096) NOT NULL," +
"	PRIMARY KEY (id)," +
"	FOREIGN KEY (holderId) REFERENCES Holder(id) ON DELETE CASCADE" +
")",
{	H2: "CREATE INDEX IF NOT EXISTS Request_Idx1 ON Request(keyId);",
	MySQL: {
		IsEmpty: "SHOW INDEX FROM Request WHERE Key_name = 'Request_Idx1';",
		Statement: "ALTER TABLE Request ADD INDEX Request_Idx1 (keyId);"
	}}
];

RequestDAO.drop = "DROP TABLE IF EXISTS Request";



RequestDAO.prototype.toString = function() {
	return "RequestDAO(db)";
}



/**
 * Create and persists a new request object
 *
 * @param {Holder} holder the holder of this request
 * @param {ByteString} keyId the keyId of the request
 * @param {ByteString} encodedRequest the request
 * @param {Object} template with additional database fields
 * @type Request
 * @return the newly created request object
 */
RequestDAO.prototype.newRequest = function(holder, keyId, encodedRequest, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newRequest(" + holder + "," + keyId + "," + encodedRequest + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(keyId, "Parameter keyId must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");
	assert(encodedRequest, "Parameter encodedRequest must not be empty");
	assert(encodedRequest instanceof ByteString, "Parameter must be instance of ByteString");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var request = new Request(this, holder, keyId, encodedRequest, template);

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "Request", request);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		request.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return request;
}



/**
 * Get request identified by id
 *
 * @param {Number} id the request id
 * @param {Holder} holder the holder of this request
 * @type Request
 * @return the request object or null if not found
 */
RequestDAO.prototype.getRequest = function(id, holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRequest(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be number");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Request where id = ?;");
		stmt.setInt(1, id);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "id " + id + " not found");
			return null;
		}
		var request = new Request(this, holder);
		this.factory.resultSetToProperties(rs, request);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return request;
}



/**
 * Get request identified by keyId
 *
 * @param {Holder} holder the holder of this request
 * @param {ByteString} keyId the keyId of the request
 * @type Request
 * @return the request object or null if not found
 */
RequestDAO.prototype.getRequestByKeyId = function(holder, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRequest(" + holder + "," + keyId + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(keyId, "Parameter keyId must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Request where keyId = ? and holderId = ?;");
		stmt.setBytes(1, keyId);
		stmt.setInt(2, holder.id);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "keyId " + keyId + " not found");
			return null;
		}
		var request = new Request(this, holder, keyId);
		this.factory.resultSetToProperties(rs, request);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return request;
}



/**
 * Delete request
 *
 * @param {Request} request the request to delete
 * @type boolean
 * @return true if deleted
 */
RequestDAO.prototype.deleteRequest = function(request) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteRequest(" + request + ")");

	assert(request, "Parameter request must not be empty");
	assert(request instanceof Request, "Parameter must be instance of Request");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from Request where id = ?;");

		stmt.setInt(1, request.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return true;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for file system based persistence
 */

var Role = require('scsh/pki-db/Role').Role;
var Subject = require('scsh/pki-db/Subject').Subject;


/**
 * Data access object for service requests
 *
 * @param {Object} the factory that created this DAO
 */
function RoleDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.RoleDAO = RoleDAO;


RoleDAO.createRole = [
"CREATE TABLE IF NOT EXISTS Role (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	name VARCHAR(100) NOT NULL," +
"	managingRoleId MEDIUMINT UNSIGNED REFERENCES Role(id)," +
"	requiresApproval SMALLINT NOT NULL DEFAULT 0," +
"	PRIMARY KEY (id)," +
"	UNIQUE (name)" +
");"
// ,"INSERT INTO Role (name) values ('God');"
];

RoleDAO.createAssignedRole =
"CREATE TABLE IF NOT EXISTS AssignedRole (" +
"	subjectId MEDIUMINT UNSIGNED NOT NULL REFERENCES Subject(id)," +
"	roleId MEDIUMINT UNSIGNED NOT NULL REFERENCES Role(id)," +
"	serviceRequestId MEDIUMINT UNSIGNED REFERENCES ServiceRequest(id)," +
"	PRIMARY KEY (subjectId, roleId)" +
");";

RoleDAO.dropRole = "DROP TABLE IF EXISTS Role;";
RoleDAO.dropAssignedRole = "DROP TABLE IF EXISTS AssignedRole;";

RoleDAO.update = "UPDATE Role SET name = 'TokenManager' where id = 7 AND name like 'Role7';"



/**
 * Create and persists a new role
 *
 * @param {String} name the name of the role
 * @param {Number} managingRoleId the id of the managing role (optional)
 * @type Role
 * @return the newly created role object
 */
RoleDAO.prototype.newRole = function(name, managingRoleId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newRole(" + name + ", " + managingRoleId + ")");

	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a String");

	var role = new Role(this, name, managingRoleId);

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "Role", role);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		role.id = rs.getInt(1);

		if (!managingRoleId) {
			role.managingRoleId = role.id;

			stmt.close();

			stmt = con.prepareStatement("update Role set managingRoleId = ? where id = ?;");
			stmt.setInt(1, role.id);
			stmt.setInt(2, role.id);
			stmt.executeUpdate();
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}



	return role;
}



RoleDAO.ID_SystemAdmin = 1;
RoleDAO.ID_HSMAdmin = 2;
RoleDAO.ID_Auditor = 3;
RoleDAO.ID_SubscriberManager = 4;
RoleDAO.ID_Subscriber = 5;
RoleDAO.ID_RegistrationManager = 6;
RoleDAO.ID_TokenManager = 7;

RoleDAO.prototype.createPredefinedRoles = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "createPredefinedRoles()");

	if (this.getRoleById(1) != null) {
		return;
	}

	this.newRole("SystemAdmin");					// Id 1
	this.newRole("HSMAdmin");					// Id 2
	this.newRole("Auditor");					// Id 3
	this.newRole("SubscriberManager");				// Id 4
	this.newRole("Subscriber", RoleDAO.ID_SubscriberManager);	// Id 5
	this.newRole("RegistrationManager");				// Id 6
	this.newRole("TokenManager");				// Id 7
	for (var i = 8; i < 100; i++) {					// Id 8 to Id 99 reserved
		this.newRole("Role" + i);
	}
}



/**
 * Get the role object
 *
 * @param {String} name the role's name
 * @type Role
 * @return the role or null
 */
RoleDAO.prototype.getRole = function(name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRole(" + name + ")");

	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a string");

	var con = null;
	var stmt = null;
	var rs = null;
	var role = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Role where name = ?;");
		stmt.setString(1, name);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No role with name " + name + " found");
			return null;
		}

		role = new Role(this);
		this.factory.resultSetToProperties(rs, role);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return role;
}



/**
 * Get the role object
 *
 * @param {Number} id the role's id
 * @type Role
 * @return the role or null
 */
RoleDAO.prototype.getRoleById = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRoleById(" + id + ")");

	assert(id, "Parameter id must not be empty");
	assert(typeof(id) == "number", "Parameter id must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var role = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Role where id = ?;");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No role found for id " + id);
			return null;
		}

		role = new Role(this);
		this.factory.resultSetToProperties(rs, role);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return role;
}



/**
 * Create and persists a new relation which assignes a role to a subject
 *
 * @param {Number} subjectId the subject the role will be assigned to
 * @param {Number} roleId the role to be assigned
 */
RoleDAO.prototype.newAssignedRole = function(subjectId, roleId, serviceRequestId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newAssignedRole(" + subjectId + "," + roleId + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(roleId) == "number", "Parameter roleId must be a number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		var obj = {
			subjectId: subjectId,
			roleId: roleId
		};
		if (serviceRequestId) {
			obj.serviceRequestId = serviceRequestId;
		}

		stmt = this.factory.insertStatementFromObject(con, "AssignedRole", obj);

		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Delete an assigned role
 *
 * @param {Number} subjectId the subject the role was assigned to
 * @param {Number} roleId the role to be removed
 */
RoleDAO.prototype.deleteAssignedRole = function(subjectId, roleId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newAssignedRole(" + subjectId + "," + roleId + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(roleId) == "number", "Parameter roleId must be a number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		var sql = "DELETE FROM AssignedRole "
			+ "WHERE subjectId = ? AND roleId = ?"
		stmt = con.prepareStatement(sql);
		stmt.setInt(1, subjectId);
		stmt.setInt(2, roleId);

		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Get all roles that are managed by the given subject
 *
 * @param {Subject} subject the assigned subjet
 * @type Role[]
 * @return the list of roles
 */
RoleDAO.prototype.getManagedRoles = function(subjectId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getManagedRoles(" + subjectId + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var roles = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("SELECT id, name, managingRoleId FROM AssignedRole join Role on (roleId = managingRoleId) WHERE subjectId = ?");
		stmt.setInt(1, subjectId);
		rs = stmt.executeQuery();

		while (rs.next()) {
			var id = rs.getInt(1);
			var name = rs.getString(2);
			var managingRoleId = rs.getInt(3);
			var role = new Role(this, name, managingRoleId);
			role.id = id;
			if (role) {
				roles.push(role);
			}
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (roles.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No role managed by subject " + subjectId);
	}
	return roles;
}



/**
 * Get all roles assigned to the given subject
 *
 * @param {Subject} subject the assigned subjet
 * @type Role[]
 * @return the list of roles
 */
RoleDAO.prototype.getAssignedRoles = function(subjectId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getAssignedRole(" + subjectId + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var roles = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select roleId, serviceRequestId from AssignedRole where subjectId= ?;");
		stmt.setInt(1, subjectId);

		rs = stmt.executeQuery();

		while (rs.next()) {
			var role = this.getRoleById(rs.getInt(1));
			if (role) {
				role.serviceRequestId = rs.getInt(2);
				roles.push(role);
			}
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (roles.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No role assigned to subject " + subjectId);
	}
	return roles;
}



/**
 * Get all roles ids assigned to the given subject
 *
 * @param {Subject} subject the assigned subjet
 * @type Number[]
 * @return the list of roles ids
 */
RoleDAO.prototype.getAssignedRoleIds = function(subjectId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getAssignedRoleIds(" + subjectId + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var roles = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select roleId from AssignedRole where subjectId= ?;");
		stmt.setInt(1, subjectId);

		rs = stmt.executeQuery();

		while (rs.next()) {
			roles.push(rs.getInt(1));
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (roles.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No role assigned to subject " + subjectId);
	}
	return roles;
}



/**
 * Get all subjects assigned to the given role
 *
 * @param {Role} role the assigned role
 * @type Subject[]
 * @return the list of assigned subjects
 */
RoleDAO.prototype.getAssignedSubject = function(roleId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getAssignedSubjects(" + roleId + ")");

	assert(typeof(roleId) == "number", "Parameter roleId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var subjects = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select subjectId from AssignedRole where roleId= ?;");
		stmt.setInt(1, roleId);

		rs = stmt.executeQuery();
		var subjectDAO = this.factory.getSubjectDAO();

		while (rs.next()) {

			var subject = subjectDAO.getSubject(rs.getInt(1));
			if (subject) {
				subjects.push(subject);
			}
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (subjects.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No subjects assigned to role " + role);
	}
	return subjects;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for file system based persistence
 */

var ServiceRequest = require('scsh/pki-db/ServiceRequest').ServiceRequest;
var ServiceRequestState = require('scsh/pki-db/ServiceRequestState').ServiceRequestState;
var Subject = require('scsh/pki-db/Subject').Subject;



/**
 * Data access object for service requests
 *
 * @param {Object} the factory that created this DAO
 */
function ServiceRequestDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.ServiceRequestDAO = ServiceRequestDAO;



ServiceRequestDAO.create = [
"CREATE TABLE IF NOT EXISTS ServiceRequest (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	parentServiceRequestId MEDIUMINT UNSIGNED," +
"	process VARCHAR(250)," +
"	title VARCHAR(250)," +
"	details VARCHAR(250)," +
"	state VARCHAR(250)," +
"	lifecycle MEDIUMINT NOT NULL DEFAULT 1," +
"	originatorId MEDIUMINT UNSIGNED," +
"	recipientId MEDIUMINT UNSIGNED," +
"	messageId VARCHAR(250)," +
"	assignedToRole MEDIUMINT UNSIGNED REFERENCES Role(id)," +
"	created TIMESTAMP DEFAULT NOW()," +
"	due TIMESTAMP NULL," +
"	content LONGTEXT," +
"	PRIMARY KEY (id)," +
"	FOREIGN KEY (parentServiceRequestId) REFERENCES ServiceRequest(id)," +
"	FOREIGN KEY (originatorId) REFERENCES Subject(id)," +
"	FOREIGN KEY (recipientId) REFERENCES Subject(id)" +
")",
"CREATE TABLE IF NOT EXISTS ServiceRequestState (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	serviceRequestId MEDIUMINT UNSIGNED," +
"	lifecycle MEDIUMINT NOT NULL," +
"	state VARCHAR(250)," +
"	transitionTime TIMESTAMP DEFAULT NOW()," +
"	caseHandlerId MEDIUMINT UNSIGNED," +
"	caseHandlerRole MEDIUMINT UNSIGNED," +
"	content LONGTEXT," +
"	PRIMARY KEY (id)," +
"	FOREIGN KEY (serviceRequestId) REFERENCES ServiceRequest(id)," +
"	FOREIGN KEY (caseHandlerId) REFERENCES Subject(id)," +
"	CONSTRAINT FK_ServiceRequestState_Role FOREIGN KEY (caseHandlerRole) REFERENCES Role(id)" +
")"
];

ServiceRequestDAO.drop = [
"DROP TABLE IF EXISTS ServiceRequestState",
"DROP TABLE IF EXISTS ServiceRequest"
]

ServiceRequestDAO.alter = [
	"ALTER TABLE ServiceRequestState " +
	"ADD COLUMN IF NOT EXISTS caseHandlerRole MEDIUMINT UNSIGNED",

	{
		H2:
			"ALTER TABLE ServiceRequestState " +
			"ADD CONSTRAINT IF NOT EXISTS ServiceRequestState_fk FOREIGN KEY (caseHandlerRole) REFERENCES Role(id);",
		MySQL:
			"ALTER TABLE ServiceRequestState " +
			"ADD CONSTRAINT FK_ServiceRequestState_Role FOREIGN KEY IF NOT EXISTS (caseHandlerRole) REFERENCES Role(id)"
	}
]



ServiceRequestDAO.prototype.toString = function() {
	return "ServiceRequestDAO(db)";
}



/**
 * Create and persists a new service request
 *
 * @type ServiceRequest
 * @return the newly created service request object
 */
ServiceRequestDAO.prototype.newServiceRequest = function(template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newServiceRequest()");

	var sr = new ServiceRequest(this, template);

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "ServiceRequest", sr);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		sr.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return sr;
}



/**
 * Get service request identified by id
 *
 * @param {Number} id the id
 * @type ServiceRequest
 * @return the service request or null if not found
 */
ServiceRequestDAO.prototype.getServiceRequestById = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getServiceRequestById(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from ServiceRequest where id = ?");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "id " + id + " not found");
			return null;
		}
		var serviceRequest = new ServiceRequest(this);
		this.factory.resultSetToProperties(rs, serviceRequest);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return serviceRequest;
}



/**
 * Get service request identified by originator and messageId
 *
 * @param {String} originator the originator
 * @param {String} messageId the messageId
 * @type ServiceRequest
 * @return the service request or null if not found
 */
ServiceRequestDAO.prototype.getServiceRequestByOriginatorAndMessageId = function(originator, messageId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getServiceRequestById(" + originator + "," + messageId + ")");

	assert(typeof(originator) == "string", "Parameter originator must be a String");
	assert(typeof(messageId) == "string", "Parameter messageId must be a String");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from ServiceRequest where originator = ? and messageId = ?");
		stmt.setString(1, originator);
		stmt.setString(2, messageId);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "messageId " + messageId + " for " + originator + " not found");
			return null;
		}
		var serviceRequest = new ServiceRequest(this);
		this.factory.resultSetToProperties(rs, serviceRequest);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return serviceRequest;
}



/**
 * Get service requests for given originator
 *
 * @param {String} originator the originator
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty
 */
ServiceRequestDAO.prototype.listServiceRequestsByOriginator = function(originator, offset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequestsByOriginator(" + originator + "," + offset + "," + page + ")");

	assert(typeof(originator) == "string", "Parameter originator must be a String");
	assert(typeof(offset) == "undefined" || typeof(offset) == "number", "Parameter offset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var filter = { originator: originator };
	return this.listServiceRequestsByFilter(filter, offset, page);
}



/**
 * Get service requests for given recipient
 *
 * @param {String} recipient the recipient
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty
 */
ServiceRequestDAO.prototype.listServiceRequestsByRecipient = function(recipient, offset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequestsByRecipient(" + recipient + "," + offset + "," + page + ")");

	assert(typeof(recipient) == "string", "Parameter recipient must be a String");
	assert(typeof(offset) == "undefined" || typeof(offset) == "number", "Parameter offset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var filter = { recipient: recipient };
	return this.listServiceRequestsByFilter(filter, offset, page);
}



/**
 * Get list of service requests that match the given criteria
 *
 * @param {Object} filter the filter criteria object
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty
 */
ServiceRequestDAO.prototype.listServiceRequestsByFilter = function(filter, offset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequestsByFilter(" + filter + "," + offset + "," + page + ")");

	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(offset) == "undefined" || typeof(offset) == "number", "Parameter offset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var stmt = this.factory.selectStatementFromFilter(con, "ServiceRequest", filter, null, offset, page);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var serviceRequest = new ServiceRequest(this);
			this.factory.resultSetToProperties(rs, serviceRequest);
			list.push(serviceRequest);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Get list of service requests that are related to the given service request
 *
 * @param {Number} id the service request id
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty
 */
ServiceRequestDAO.prototype.listRelatedServiceRequests = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listRelatedServiceRequests(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from ServiceRequest where parentServiceRequestId = ?;");

		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var serviceRequest = new ServiceRequest(this);
			this.factory.resultSetToProperties(rs, serviceRequest);
			list.push(serviceRequest);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Return all service request states for a given service request
 *
 * @param {Number} id the service request id
 * @type ServiceRequestState[]
 * @return the list of service request states that belongs to the service request id
 */
ServiceRequestDAO.prototype.listServiceRequestStates = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequestStates(" + id + ")");
	var con = null;
	var stmt = null;
	var rs = null;
	var states = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from ServiceRequestState where serviceRequestId = ?");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var srState = new ServiceRequestState(this);
			this.factory.resultSetToProperties(rs, srState);
			states.push(srState);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	if (states.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No ServiceRequestState found for serviceRequestId " + id);
	}

	return states;
}


/**
 * Count the service requests that match the given criteria
 *
 * @param {Object} filter the filter criteria object
 * @type Number
 * @return the number of service requests that match the given filter
 */
ServiceRequestDAO.prototype.countServiceRequestsByFilter = function(filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countServiceRequestsByFilter(" + filter + ")");

	assert(typeof(filter) == "object", "Parameter filter must be an object");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var stmt = this.factory.selectStatementFromFilter(con, "ServiceRequest", filter, ["count(id)"]);

		rs = stmt.executeQuery();
		rs.next();
		var count = rs.getInt(1);

		GPSystem.log(GPSystem.DEBUG, module.id, "countServiceRequestsByFilter() returns " + count);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return count;
}



/**
 * Get list of service requests that match the given criteria and are assigned to a role the
 * subject holds.
 *
 * @param {Number} subjectId the subject id of the subject in question
 * @param {Object} filter the filter criteria object
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty.
 */
ServiceRequestDAO.prototype.listServiceRequestsAssignedToSubjectsRoleByFilter = function(subjectId, filter, offset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequestsAssignedToSubjectsRoleByFilter(" + subjectId + "," + filter + "," + offset + "," + page + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(offset) == "undefined" || typeof(offset) == "number", "Parameter offset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);

		if (where.length > 0) {
			where += " and";
		}

		where += " assignedToRole in (select roleId from AssignedRole where subjectId = ?)";
		if (page) {
			where += " limit ?,?";
		}
//		stmt = con.prepareStatement("select id,process,state,originatorId,recipientId,messageId,assignedToRole,created,due from ServiceRequest where " + where);

		GPSystem.log(GPSystem.DEBUG, module.id, "select * from ServiceRequest where " + where);
		stmt = con.prepareStatement("select * from ServiceRequest where " + where);

		var paramOffset = this.factory.setArgumentsFromFilter(stmt, 1, filter);
		stmt.setInt(paramOffset++, subjectId);
		if (page) {
			stmt.setInt(paramOffset++, offset);
			stmt.setInt(paramOffset, page);
		}

		rs = stmt.executeQuery();
		GPSystem.log(GPSystem.DEBUG, module.id, "sr list: " + list);
		while (rs.next()) {
			var serviceRequest = new ServiceRequest(this);
			this.factory.resultSetToProperties(rs, serviceRequest);
			list.push(serviceRequest);
			GPSystem.log(GPSystem.DEBUG, module.id, "add sr " + serviceRequest.id + " to list");
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	GPSystem.log(GPSystem.DEBUG, module.id, "sr list: " + list);
	return list;
}



/**
 * Get list of service requests that match the given criteria and where the subject was involved
 *
 * @param {Number} subjectId the subject id of the subject in question
 * @param {Object} filter the filter criteria object
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty.
 */
ServiceRequestDAO.prototype.listServiceRequestsInvolvedBySubject = function(subjectId, filter, offset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequestsInvolvedBySubject(" + subjectId + "," + filter + "," + offset + "," + page + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(offset) == "undefined" || typeof(offset) == "number", "Parameter offset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);

		if (where.length > 0) {
			where += " and";
		}

		where += " id in (select distinct serviceRequestId from ServiceRequestState where caseHandlerId = ?)";
		stmt = con.prepareStatement("select * from ServiceRequest where " + where);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);
		stmt.setInt(offset, subjectId);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var serviceRequest = new ServiceRequest(this);
			this.factory.resultSetToProperties(rs, serviceRequest);
			list.push(serviceRequest);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Get list of service requests that match the given criteria and where one of the given roles was involved
 *
 * @param {Number[]} roles the list of role ids where at least one must be involved
 * @param {Object} filter the filter criteria object
 * @param {Number} pageOffset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty.
 */
ServiceRequestDAO.prototype.listServiceRequestsInvolvedByRoles = function(roles, filter, pageOffset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequestsInvolvedByRoles(" + roles + "," + filter + "," + pageOffset + "," + page + ")");

	assert(typeof(roles) == "object", "Parameter roles must be a object (list)");
	assert(roles instanceof Array, "Parameter roles must be a list");
	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(pageOffset) == "undefined" || typeof(pageOffset) == "number", "Parameter pageOffset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];
	if (roles.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "The list of roles is empty");
		return list;
	}

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);

		if (where.length > 0) {
			where += " and";
		}

		where += " id in (select distinct serviceRequestId from ServiceRequestState where";
		for (var i = 1; i <= roles.length; i++) {
			where += " caseHandlerRole = ? OR";
		}
		where = where.substr(0, where.length - 3); // Remove " OR"
		where += ")";

		if (page) {
			where += " limit ?,?";
		}

		stmt = con.prepareStatement("select * from ServiceRequest where " + where);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);
		for (var i = 0; i < roles.length; i++) {
			stmt.setInt(offset++, roles[i]);
		}

		if (page) {
			stmt.setInt(offset++, pageOffset);
			stmt.setInt(offset, page);
		}

		rs = stmt.executeQuery();
		while (rs.next()) {
			var serviceRequest = new ServiceRequest(this);
			this.factory.resultSetToProperties(rs, serviceRequest);
			list.push(serviceRequest);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Get list of service requests that match the given criteria and where the subject was involved
 *
 * @param {Number} subjectId the subject id of the subject in question
 * @param {Number[]} roles the list of role ids that might be involved or undefined
 * @param {Object} filter the filter criteria object
 * @param {Number} pageOffset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type ServiceRequest[]
 * @return the list of service requests which may be empty.
 */
ServiceRequestDAO.prototype.listServiceRequests = function(subjectId, roles, filter, pageOffset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listServiceRequests(" + subjectId + "," + pageOffset + "," + page + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(roles) == "undefined" || roles instanceof Array, "Parameter roles must be a list");
	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(pageOffset) == "undefined" || typeof(pageOffset) == "number", "Parameter pageOffset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);

		if (where.length > 0) {
			where += " and";
		}

		// my service requests
		where += " (originatorId = ?";

		// assigned to me
		where += " or assignedToRole in (select roleId from AssignedRole where subjectId = ?) ";

		// involves me
		where += " or id in (select distinct serviceRequestId from ServiceRequestState where caseHandlerId = ?)";

		// involved by role
		if (roles && roles.length > 0) {
			where += "or id in (select distinct serviceRequestId from ServiceRequestState where";
			for (var i = 1; i <= roles.length; i++) {
				where += " caseHandlerRole = ? OR";
			}
			where = where.substr(0, where.length - 3); // Remove " OR"
			where += ")";
		}

		where += ")";

		if (page) {
			where += " limit ?,?";
		}

		stmt = con.prepareStatement("select * from ServiceRequest where " + where);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);
		stmt.setInt(offset++, subjectId); // set originatorId
		stmt.setInt(offset++, subjectId); // set assigned roles to subjectId
		stmt.setInt(offset++, subjectId); // set caseHandlerId

		if (roles) {
			for (var i = 0; i < roles.length; i++) {
				stmt.setInt(offset++, roles[i]);
			}
		}

		if (page) {
			stmt.setInt(offset++, pageOffset);
			stmt.setInt(offset, page);
		}

		rs = stmt.executeQuery();
		while (rs.next()) {
			var serviceRequest = new ServiceRequest(this);
			this.factory.resultSetToProperties(rs, serviceRequest);
			list.push(serviceRequest);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Count the service requests that match the given criteria and where the subject was involved
 *
 * @param {Number} subjectId the subject id of the subject in question
 * @param {Object} filter the filter criteria object
 * @param {Number[]} roles the list of role ids that might be involved or undefined
 * @type {Number
 * @return the number of service requests that match the given criteria and where the subject was involved
 */
ServiceRequestDAO.prototype.countServiceRequests = function(subjectId, filter, roles) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countServiceRequests(" + subjectId + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(roles) == "undefined" || roles instanceof Array, "Parameter roles must be a list");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);

		if (where.length > 0) {
			where += " and";
		}

		// my service requests
		where += " (originatorId = ?";

		// assigned to me
		where += " or assignedToRole in (select roleId from AssignedRole where subjectId = ?) ";

		// involves me
		where += " or id in (select distinct serviceRequestId from ServiceRequestState where caseHandlerId = ?)";

		// involved by role
		if (roles && roles.length > 0) {
			where += "or id in (select distinct serviceRequestId from ServiceRequestState where";
			for (var i = 1; i <= roles.length; i++) {
				where += " caseHandlerRole = ? OR";
			}
			where = where.substr(0, where.length - 3); // Remove " OR"
			where += ")";
		}

		where += ")"

		stmt = con.prepareStatement("select count(id) from ServiceRequest where " + where);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);
		stmt.setInt(offset++, subjectId); // set originatorId
		stmt.setInt(offset++, subjectId); // set roles
		stmt.setInt(offset++, subjectId); // set caseHandlerId

		if (roles) {
			for (var i = 0; i < roles.length; i++) {
				stmt.setInt(offset++, roles[i]);
			}
		}

		rs = stmt.executeQuery();
		rs.next();
		var count = rs.getInt(1);
		GPSystem.log(GPSystem.DEBUG, module.id, "countServiceRequests() returns " + count);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return count;
}



/**
 * Count the service requests assigned to a role that the identified subject holds and that matches the given criteria
 *
 * @param {Number} subjectId the subject id of the subject in question
 * @param {Object} filter the filter criteria object
 * @type Number
 * @return the number of service requests that match the given filter
 */
ServiceRequestDAO.prototype.countServiceRequestsAssignedToSubjectsRoleByFilter = function(subjectId, filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countServiceRequestsAssignedToSubjectsRoleByFilter(" + subjectId + "," + filter + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");
	assert(typeof(filter) == "object", "Parameter filter must be an object");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);

		if (where.length > 0) {
			where += " and";
		}

		where += " assignedToRole in (select roleId from AssignedRole where subjectId = ?)";
		stmt = con.prepareStatement("select count(id) from ServiceRequest where " + where);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);
		stmt.setInt(offset, subjectId);

		rs = stmt.executeQuery();
		rs.next();
		var count = rs.getInt(1);
		GPSystem.log(GPSystem.DEBUG, module.id, "countServiceRequestsAssignedToSubjectsRoleByFilter() returns " + count);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return count;
}



/**
 * Get a list of all processes
 *
 * @type String[]
 * @return the process list
 */
ServiceRequestDAO.prototype.getProcessList = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "getProcessList()");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select distinct process from ServiceRequest");

		rs = stmt.executeQuery();

		while (rs.next()) {
			list.push(rs.getString(1));
		}
	} finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Update the Service Request title
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to update
 * @param {String} title the new title
 */
ServiceRequestDAO.prototype.updateTitle = function(serviceRequest, title) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateTitle(" + serviceRequest + "," + title + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");
	assert(typeof(title) == "string", "Parameter title must be a String");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update ServiceRequest set title = ? where id = ?;");

		stmt.setString(1, title);
		stmt.setInt(2, serviceRequest.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	serviceRequest.title = title;
}



/**
 * Update the Service Request details
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to update
 * @param {String} details the new details
 */
ServiceRequestDAO.prototype.updateDetails = function(serviceRequest, details) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateDetails(" + serviceRequest + "," + details + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");
	assert(typeof(details) == "string", "Parameter details must be a String");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update ServiceRequest set details = ? where id = ?;");

		stmt.setString(1, details);
		stmt.setInt(2, serviceRequest.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	serviceRequest.details = details;
}



/**
 * Update the Service Request content
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to update
 * @param {String} content the new content
 */
ServiceRequestDAO.prototype.updateContent = function(serviceRequest, content) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateContent(" + serviceRequest + "," + content + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");

	if (typeof(content) != "undefined") {
		assert(typeof(content) == "string", "Parameter val must be a String");
	} else {
		content = serviceRequest.serialize();
	}

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update ServiceRequest set content = ? where id = ?;");

		stmt.setString(1, content);
		stmt.setInt(2, serviceRequest.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	serviceRequest.content = content;
}



/**
 * Update the Service Request state, lifecycle and content
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to update
 * @param {Object} template to initialize caseHandlerId and content column in ServiceRequestState
 */
ServiceRequestDAO.prototype.addLifeCycleTransition = function(serviceRequest, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "addLifeCycleTransition(" + serviceRequest + "," + template + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");

	assert(template, "Parameter template must not be empty");
	assert(typeof(template) == "object", "Parameter template must be a object");

	var content = serviceRequest.serialize();

	var srstate = new ServiceRequestState(this, template);

	srstate.serviceRequestId = serviceRequest.id;
	srstate.lifecycle = serviceRequest.lifecycle;
	srstate.state = serviceRequest.state;
	if (serviceRequest.assignedToRole) {
		srstate.caseHandlerRole = serviceRequest.assignedToRole;
	}

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();
		con.setAutoCommit(false);

		stmt = this.factory.insertStatementFromObject(con, "ServiceRequestState", srstate);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		srstate.id = rs.getInt(1);

		stmt = con.prepareStatement("update ServiceRequest set state = ?,lifecycle = ?, assignedToRole = ?, content = ? where id = ?;");

		stmt.setString(1, serviceRequest.state);
		stmt.setInt(2, serviceRequest.lifecycle);
		if (serviceRequest.assignedToRole) {
			stmt.setInt(3, serviceRequest.assignedToRole);
		} else {
			stmt.setNull(3, java.sql.Types.INTEGER);
		}
		stmt.setString(4, content);
		stmt.setInt(5, serviceRequest.id);
		stmt.executeUpdate();
		con.commit();
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.setAutoCommit(true);
			con.close();
		}
	}

	return srstate;
}



/**
 * Update the Service Request state and lifecycle
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to update
 */
ServiceRequestDAO.prototype.updateState = function(serviceRequest) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateState(" + serviceRequest + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");

	var con = null;
	var stmt = null;

	try     {
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update ServiceRequest set state = ?,lifecycle = ? where id = ?;");

		stmt.setString(1, serviceRequest.state);
		stmt.setInt(2, serviceRequest.lifecycle);
		stmt.setInt(3, serviceRequest.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Update the Service Request originator id
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to update
 * @param {Subject} subject the originator
 */
ServiceRequestDAO.prototype.updateOriginatorId = function(serviceRequest, subject) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateOriginatorId(" + serviceRequest + "," + subject + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");
	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update ServiceRequest set originatorId = ? where id = ?;");

		stmt.setInt(1, subject.id);
		stmt.setInt(2, serviceRequest.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	serviceRequest.originatorId = subject.id;
}



/**
 * Update the Service Request recipient id
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to update
 * @param {Subject} subject the recipient
 */
ServiceRequestDAO.prototype.updateRecipientId = function(serviceRequest, subject) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateRecipientId(" + serviceRequest + "," + subject + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");
	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update ServiceRequest set recipientId = ? where id = ?;");

		stmt.setInt(1, subject.id);
		stmt.setInt(2, serviceRequest.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	serviceRequest.recipientId = subject.id;
}



/**
 * Delete Service Request
 *
 * @param {ServiceRequest} serviceRequest the serviceRequest to delete
 * @type boolean
 * @return true if deleted
 */
ServiceRequestDAO.prototype.deleteServiceRequest = function(serviceRequest) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteServiceRequest(" + serviceRequest + ")");

	assert(serviceRequest, "Parameter serviceRequest must not be empty");
	assert(serviceRequest instanceof ServiceRequest, "Parameter must be instance of ServiceRequest");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from ServiceRequest where id = ?;");

		stmt.setInt(1, serviceRequest.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return true;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SignerDAO
 */

var Holder = require('scsh/pki-db/Holder').Holder;
var Signer = require('scsh/pki-db/Signer').Signer;



/**
 * Data access object for signers
 *
 * @param {Object} the factory that created this DAO
 */
function SignerDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.SignerDAO = SignerDAO;



SignerDAO.create = [
"CREATE TABLE IF NOT EXISTS Signer (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	holderId MEDIUMINT UNSIGNED NOT NULL," +
"	name VARCHAR(100) NOT NULL," +
"	keyId VARBINARY(64)," +
"	keyDomain VARBINARY(32)," +
"	keyblob VARBINARY(4096)," +
"	content LONGTEXT," +
"	PRIMARY KEY (id)," +
"	UNIQUE (holderId, name)," +
"	FOREIGN KEY (holderId) REFERENCES Holder(id) ON DELETE CASCADE" +
")",
{	H2: "CREATE INDEX IF NOT EXISTS Signer_Idx1 ON Signer(keyId);",
	MySQL: {
		IsEmpty: "SHOW INDEX FROM Signer WHERE Key_name = 'Signer_Idx1';",
		Statement: "ALTER TABLE Signer ADD INDEX Signer_Idx1 (keyId);"
	}}
];

SignerDAO.drop = "DROP TABLE IF EXISTS Signer";



SignerDAO.prototype.toString = function() {
	return "ServiceRequestDAO(db)";
}



SignerDAO.prototype.toString = function() {
	return "SignerDAO(db)";
}



/**
 * Create and persists a new signer object
 *
 * @param {Holder} holder the holder of this signer
 * @param {String} name the name of the signer
 * @param {ByteString} keyId the key identifier
 * @type Signer
 * @return the newly created signer object
 */
SignerDAO.prototype.newSigner = function(holder, name, keyId, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newSigner(" + holder + "," + name + "," + keyId + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a String");
	assert(keyId, "Parameter name must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var signer = new Signer(this, holder, name, keyId, template);

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "Signer", signer);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		signer.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return signer;
}



/**
 * Get signer identified by id
 *
 * @param {Number} id the id
 * @type Signer
 * @return the signer object or null if not found
 */
SignerDAO.prototype.getSignerByID = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Signer where id = ?;");
		stmt.setInt(1, id);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No matching signer found for ID " + id);
			return null;
		}
		var signer = new Signer(this);
		this.factory.resultSetToProperties(rs, signer);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return signer;
}



/**
 * Get signer identified by name
 *
 * @param {Holder} holder the holder of this signer
 * @param {String} name the name of the signer
 * @type Signer
 * @return the signer object or null if not found
 */
SignerDAO.prototype.getSignerByName = function(holder, name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner(" + holder + "," + name + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a String");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Signer where name = ? and holderId = ?;");
		stmt.setString(1, name);
		stmt.setInt(2, holder.id);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "name " + name + " not found");
			return null;
		}
		var signer = new Signer(this, holder);
		this.factory.resultSetToProperties(rs, signer);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return signer;
}



/**
 * TODO The tuple (holderId,keyId) is not unique.
 * 		The result set may consists of more than one row.
 *
 * Get signer identified by key id
 *
 * @param {Holder} holder the holder of this signer
 * @param {ByteString} keyId the key identifier
 * @type Signer
 * @return the signer object or null if not found
 */
SignerDAO.prototype.getSignerByKeyId = function(holder, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner(" + holder + "," + keyId + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(keyId, "Parameter keyId must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Signer where keyId = ? and holderId = ?;");
		stmt.setBytes(1, keyId);
		stmt.setInt(2, holder.id);
		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "KeyId " + keyId + " not found");
			return null;
		}
		var signer = new Signer(this, holder);
		this.factory.resultSetToProperties(rs, signer);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return signer;
}



/**
 * List all signer for the given holder id
 *
 * @param {ByteString} keyId the key identifier
 * @type Signer[]
 * @return list of signer
 */
SignerDAO.prototype.listSignerByHolderId = function(holderId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listSignerByHolderId( " + holderId + " )");

	assert(holderId, "Parameter holderId must not be empty");
	assert(typeof(holderId) == "number", "Parameter holderId must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Signer where holderId = ?;");
		stmt.setInt(1, holderId);
		rs = stmt.executeQuery();

		while (rs.next()) {
			var signer = new Signer(this);
			this.factory.resultSetToProperties(rs, signer);
			list.push(signer);
		}

		if (list.length == 0) {
			GPSystem.log(GPSystem.DEBUG, module.id, "holderId " + holderId + " not found");
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * List all signer for the given key id
 *
 * @param {ByteString} keyId the key identifier
 * @type Signer[]
 * @return list of signer
 */
SignerDAO.prototype.listSignerByKeyId = function(keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listSignerByKeyId( " + keyId + " )");

	assert(keyId, "Parameter name must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Signer where keyId = ?;");
		stmt.setBytes(1, keyId);
		rs = stmt.executeQuery();

		while (rs.next()) {
			var signer = new Signer(this);
			this.factory.resultSetToProperties(rs, signer);
			list.push(signer);
		}

		if (list.length == 0) {
			GPSystem.log(GPSystem.DEBUG, module.id, "KeyId " + keyId + " not found");
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Update signer key
 *
 * @param {Signer} signer the signer for which the key shall be updated
 * @param {ByteString} keyblob the private key
 */
SignerDAO.prototype.updateSignerKey = function(signer, keyblob) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateSignerKey(" + signer + ")");

	assert(signer, "Parameter signer must not be empty");
	assert(signer instanceof Signer, "Parameter must be instance of Signer");

	assert(keyblob, "Parameter keyblob must not be empty");
	assert(keyblob instanceof ByteString, "Parameter must be instance of ByteString");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Signer set keyblob = ? where id = ?;");

		stmt.setBytes(1, keyblob);
		stmt.setInt(2, signer.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Delete signer
 *
 * @param {Signer} signer the signer to delete
 * @type boolean
 * @return true if deleted
 */
SignerDAO.prototype.deleteSigner = function(signer) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteSigner(" + signer + ")");

	assert(signer, "Parameter signer must not be empty");
	assert(signer instanceof Signer, "Parameter must be instance of Signer");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from Signer where id = ?;");

		stmt.setInt(1, signer.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return true;
}



/**
 * Update the signer content
 *
 * @param {Signer} signer the signer to update
 * @param {String} content the new content
 */
SignerDAO.prototype.updateContent = function(signer) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateContent(" + signer + ")");

	assert(signer, "Parameter subject must not be empty");
	assert(signer instanceof Signer, "Parameter must be instance of Signer");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Signer set content = ? where id = ?;");

		stmt.setString(1, signer.serialize());
		stmt.setInt(2, signer.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SubjectDAO for database objects
 */

var Subject = require('scsh/pki-db/Subject').Subject;
var Role = require('scsh/pki-db/Role').Role;



/**
 * Data access object for certificate subjects
 *
 * @param {Object} the factory that created this DAO
 */
function SubjectDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.SubjectDAO = SubjectDAO;



SubjectDAO.TYPE_PERSON = "Person";
SubjectDAO.TYPE_SYSTEM = "System";
SubjectDAO.TYPE_TRUST_CENTER = "TrustCenter";
SubjectDAO.TYPE_EST_Server = "ESTServer";
SubjectDAO.TYPE_GROUP_MANAGER = "GroupManager";
SubjectDAO.TYPE_CA = "CA";
SubjectDAO.TYPE_ROOT_CA = "X509RootCA";
SubjectDAO.TYPE_SCHEME_ROOT_CA = "SchemeRootCA";
SubjectDAO.TYPE_DEVICE_ISSUER = "DeviceIssuer";

SubjectDAO.LIFECYCLE_PRIVATE = 0;
SubjectDAO.LIFECYCLE_PUBLIC = 1;
SubjectDAO.LIFECYCLE_SUSPENDED = 2;
SubjectDAO.LIFECYCLE_TERMINATED = 3;



SubjectDAO.create =
"CREATE TABLE IF NOT EXISTS Subject (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	email VARCHAR(100)," +
"	name VARCHAR(100)," +
"	type VARCHAR(20)," +
"	assuranceLevel MEDIUMINT UNSIGNED NOT NULL DEFAULT 0," +
"	managedByRoleId MEDIUMINT UNSIGNED REFERENCES Role(id)," +
"	lifecycle MEDIUMINT UNSIGNED NOT NULL DEFAULT 0," +
"	serviceRequestId MEDIUMINT UNSIGNED," +
"	content LONGTEXT," +
"	PRIMARY KEY (id)," +
"	UNIQUE (email)," +
"	UNIQUE (type, name)" +
")";



SubjectDAO.addForeignKey = [
	{
		H2:
			"ALTER TABLE Subject " +
			"ADD CONSTRAINT IF NOT EXISTS Subject_FK FOREIGN KEY (serviceRequestId) " +
			"REFERENCES ServiceRequest(id);",
		MySQL:
			"ALTER TABLE Subject " +
			"ADD CONSTRAINT Subject_FK FOREIGN KEY IF NOT EXISTS (serviceRequestId) " +
			"REFERENCES ServiceRequest(id);"
	}
];



SubjectDAO.drop = "DROP TABLE IF EXISTS Subject";



SubjectDAO.dropForeignKey = [
	{
		H2:
			"ALTER TABLE Subject DROP CONSTRAINT IF EXISTS Subject_FK",
		MySQL:
			"ALTER TABLE Subject DROP FOREIGN KEY IF EXISTS Subject_FK"
	}
]


SubjectDAO.prototype.toString = function() {
	return "SubjectDAO(db)";
}



/**
 * Create and persists a new subject
 *
 * @type Subject
 * @return the newly created subject object
 */
SubjectDAO.prototype.newSubject = function(template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newSubject()");

	var subject = new Subject(this, template);

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "Subject", subject);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		subject.id = rs.getInt(1);
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return subject;
}



/**
 * Get the subject object
 *
 * @param {Number} id the subject id
 * @type Subject
 * @return the subject for the given id or null
 */
SubjectDAO.prototype.getSubject = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSubject(" + id + ")");

	assert(id, "Parameter id must not be empty");
	assert(typeof(id) == "number", "Parameter id must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;
	var subject = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Subject where id = ?;");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "id " + id + " not found");
			return null;
		}

		subject = new Subject(this);
		this.factory.resultSetToProperties(rs, subject);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return subject;
}



/**
 * Get the subject object
 *
 * @param {String} email the subject's e-mail address
 * @type Subject
 * @return the subject or null
 */
SubjectDAO.prototype.getSubjectByEmail = function(email) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSubject(" + email + ")");

	assert(email, "Parameter email must not be empty");
	assert(typeof(email) == "string", "Parameter email must be a string");

	var con = null;
	var stmt = null;
	var rs = null;
	var subject = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Subject where email = ?;");
		stmt.setString(1, email);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "e-mail address " + email + " not found");
			return null;
		}

		subject = new Subject(this);
		this.factory.resultSetToProperties(rs, subject);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return subject;
}



/**
 * Get the subject object
 *
 * @param {String} name the subject's name
 * @type Subject
 * @return the subject or null
 */
SubjectDAO.prototype.getSubjectByName = function(name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSubjectByName(" + name + ")");

	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a string");

	var con = null;
	var stmt = null;
	var rs = null;
	var subject = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Subject where name = ?;");
		stmt.setString(1, name);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No subject found for name " + name);
			return null;
		}

		subject = new Subject(this);
		this.factory.resultSetToProperties(rs, subject);

		if (rs.next()) {
			GPSystem.log(GPSystem.WARN, module.id, "Multiple subjects found for name " + name);
			return null;
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return subject;
}



/**
 * Get subject object by type and name
 *
 * @param {String} type the subject's type
 * @param {String} name the subject's name
 * @type Subject
 * @return the subject or null
 */
SubjectDAO.prototype.getSubjectByTypeAndName = function(type, name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSubjectByTypeAndName(" + type + "," + name + ")");

	assert(type, "Parameter type must not be empty");
	assert(typeof(type) == "string", "Parameter type must be a string");
	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a string");

	var con = null;
	var stmt = null;
	var rs = null;
	var subject = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Subject where type = ? and name = ?;");
		stmt.setString(1, type);
		stmt.setString(2, name);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "No subject found for type " + type + " and name " + name);
			return null;
		}

		subject = new Subject(this);
		this.factory.resultSetToProperties(rs, subject);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return subject;
}



/**
 * Get a list of subjects that are managed by the given manager role
 *
 * @param {Role} role the manager role
 * @type Subject[]
 * @return the list of managed subjects
 */
SubjectDAO.prototype.getManagedSubjects = function(roleId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getManagedSubject(" + roleId + ")");

	assert(roleId, "Parameter id must not be empty");
	assert(typeof(roleId) == "number", "Parameter id must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Subject where managedByRoleId = ?;");
		stmt.setInt(1, roleId);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var subject = new Subject(this);
			this.factory.resultSetToProperties(rs, subject);
			list.push(subject);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * List all subjects that match the given filter
 *
 * @param {Object} filter the filter criteria object
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type Subject[]
 * @return list of subjects
 */
SubjectDAO.prototype.listManagedSubjectsByFilter = function(filter, offset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listManagedSubjectsByFilter(" + filter + "," + offset + "," + page + ")");

	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(offset) == "undefined" || typeof(offset) == "number", "Parameter offset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

 		var query = "SELECT id, email, name, type, assuranceLevel, managedByRoleId, content "
 		+ "FROM Subject left join AssignedRole on (roleId = managedByRoleId)";

		var filstr = this.factory.whereClauseFromFilter(filter);
		if (filstr.length > 0) {
			query += " WHERE " + filstr;
		}

		if (page) {
			query += " LIMIT ?,?";
		}

		GPSystem.log(GPSystem.DEBUG, module.id, "query= " + query);

		stmt = con.prepareStatement(query);

		var c = this.factory.setArgumentsFromFilter(stmt, 1, filter, offset, page);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var subject = new Subject(this);
			this.factory.resultSetToProperties(rs, subject);
			list.push(subject);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Count the subjects that match the given criteria
 *
 * @param {Object} filter the filter criteria object
 * @type Number
 * @return the number of subjects that match the given filter
 */
SubjectDAO.prototype.countManagedSubjectsByFilter = function(filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countManagedSubjectsByFilter(" + filter + ")");

	assert(typeof(filter) == "object", "Parameter filter must be an object");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var query = "SELECT count(1) "
		+ "FROM Subject left join AssignedRole on (roleId = managedByRoleId)"

		var filstr = this.factory.whereClauseFromFilter(filter);
		if (filstr.length > 0) {
			query += " WHERE " + filstr;
		}
		GPSystem.log(GPSystem.DEBUG, module.id, "query= " + query);

		stmt = con.prepareStatement(query);

		this.factory.setArgumentsFromFilter(stmt, 1, filter);

		rs = stmt.executeQuery();
		rs.next();
		var count = rs.getInt(1);

		GPSystem.log(GPSystem.DEBUG, module.id, "countManagedSubjectsByFilter() returns " + count);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return count;
}



/**
 * List all managed subjects that match the given filter
 *
 * @param {Object} filter the filter criteria object
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type Subject[]
 * @return list of subjects
 */
SubjectDAO.prototype.listManagedSubjects = function(subjectId, managedByRoleId, typeFilter, nameFilter, emailFilter, pageStart, pageEnd) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listManagedSubjects(" + subjectId + "," + managedByRoleId + "," + typeFilter + "," + nameFilter + "," + emailFilter + "," + pageStart + "," + pageEnd + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a Number");

	assert(typeof(managedByRoleId) == "undefined" || typeof(managedByRoleId) == "number", "Parameter managedByRoleId must be a Number");
	assert(typeof(typeFilter) == "undefined" || typeof(typeFilter) == "string", "Parameter typeFilter must be a string");
	assert(typeof(nameFilter) == "undefined" || typeof(nameFilter) == "string", "Parameter nameFilter must be a string");
	assert(typeof(emailFilter) == "undefined" || typeof(emailFilter) == "string", "Parameter emailFilter must be a string");
	assert(typeof(pageStart) == "undefined" || typeof(pageStart) == "number", "Parameter pageStart must be a Number");
	assert(typeof(pageEnd) == "undefined" || typeof(pageEnd) == "number", "Parameter pageEnd must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var query = "select * from Subject "
		+ "where (managedByRoleId  IN (" // managed subjects
		+ "select roleId "
		+ "from AssignedRole "
		+ "where subjectId = ?) "
		+ "or id = ? " // own subject
		+ "or lifecycle = 1"; // public subjects

		if (managedByRoleId) {
			query += " or managedByRoleId = ?";
		}

		query += ")";

		if (typeFilter) {
			query += " and lower(type) like ?";
		}

		if (nameFilter) {
			query += " and lower(name) like ?";
		}

		if (emailFilter) {
			query += " and lower(email) like ?";
		}

		if (pageEnd) {
			query += " LIMIT ?,?";
		}

		GPSystem.log(GPSystem.DEBUG, module.id, "query= " + query);

		stmt = con.prepareStatement(query);
		var i = 1;
		stmt.setInt(i++, subjectId);
		stmt.setInt(i++, subjectId);
		if (managedByRoleId) {
			stmt.setInt(i++, subjectId);
		}
		if (typeFilter) {
			stmt.setString(i++, "%" + typeFilter.toLowerCase() + "%");
		}
		if (nameFilter) {
			stmt.setString(i++, "%" + nameFilter.toLowerCase() + "%");
		}
		if (emailFilter) {
			stmt.setString(i++, "%" + emailFilter.toLowerCase() + "%");
		}
		if (pageEnd) {
			stmt.setInt(i++, pageStart);
			stmt.setInt(i++, pageEnd);
		}

		rs = stmt.executeQuery();
		while (rs.next()) {
			var subject = new Subject(this);
			this.factory.resultSetToProperties(rs, subject);
			list.push(subject);
		}
		GPSystem.log(GPSystem.DEBUG, module.id, "list= " + list);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Count all managed subjects that match the given criteria
 *
 * @param {Object} filter the filter criteria object
 * @type Number
 * @return the number of subjects that match the given filter
 */
SubjectDAO.prototype.countManagedSubjects = function(subjectId, managedByRoleId, typeFilter, nameFilter, emailFilter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countManagedSubjects(" + subjectId + "," + managedByRoleId + "," + typeFilter + "," + nameFilter + "," + emailFilter + ")");

	assert(typeof(subjectId) == "number", "Parameter subjectId must be a Number");

	assert(typeof(managedByRoleId) == "undefined" || typeof(managedByRoleId) == "number", "Parameter managedByRoleId must be a Number");
	assert(typeof(typeFilter) == "undefined" || typeof(typeFilter) == "string", "Parameter typeFilter must be a string");
	assert(typeof(nameFilter) == "undefined" || typeof(nameFilter) == "string", "Parameter nameFilter must be a string");
	assert(typeof(emailFilter) == "undefined" || typeof(emailFilter) == "string", "Parameter emailFilter must be a string");

	var con = null;
	var stmt = null;
	var rs = null;

	var count = 0;

	try	{
		con = this.factory.getConnection();

		var query = "select count(1) from Subject "
		+ "where (managedByRoleId  IN (" // managed subjects
		+ "select roleId "
		+ "from AssignedRole "
		+ "where subjectId = ?) "
		+ "or id = ? " // own subject
		+ "or lifecycle = 1"; // public subjects

		if (managedByRoleId) {
			query += " or managedByRoleId = ?";
		}

		query += ")";

		if (typeFilter) {
			query += " and type like ?";
		}

		if (nameFilter) {
			query += " and name like ?";
		}

		if (emailFilter) {
			query += " and email like ?";
		}

		GPSystem.log(GPSystem.DEBUG, module.id, "query= " + query);

		stmt = con.prepareStatement(query);
		var i = 1;
		stmt.setInt(i++, subjectId);
		stmt.setInt(i++, subjectId);
		if (managedByRoleId) {
			stmt.setInt(i++, subjectId);
		}
		if (typeFilter) {
			stmt.setString(i++, "%" + typeFilter + "%");
		}
		if (nameFilter) {
			stmt.setString(i++, "%" + nameFilter + "%");
		}
		if (emailFilter) {
			stmt.setString(i++, "%" + emailFilter + "%");
		}

		rs = stmt.executeQuery();
		if (rs.next()) {
			count = rs.getInt(1);
		}
		GPSystem.log(GPSystem.DEBUG, module.id, "count= " + count);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return count;
}



/**
 * List all subjects that match the given filter
 *
 * @param {Object} filter the filter criteria object
 * @param {Number} offset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type Subject[]
 * @return list of subjects
 */
SubjectDAO.prototype.listSubjectsByFilter = function(filter, offset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listSubjectsByFilter(" + filter + "," + offset + "," + page + ")");

	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(offset) == "undefined" || typeof(offset) == "number", "Parameter offset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var stmt = this.factory.selectStatementFromFilter(con, "Subject", filter, null, offset, page);

		rs = stmt.executeQuery();
		while (rs.next()) {
			var subject = new Subject(this);
			this.factory.resultSetToProperties(rs, subject);
			list.push(subject);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return list;
}



/**
 * Count the subjects that match the given criteria
 *
 * @param {Object} filter the filter criteria object
 * @type Number
 * @return the number of subjects that match the given filter
 */
SubjectDAO.prototype.countSubjectsByFilter = function(filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countSubjectsByFilter(" + filter + ")");

	assert(typeof(filter) == "object", "Parameter filter must be an object");

	var con = null;
	var stmt = null;
	var rs = null;

	var list = [];

	try	{
		con = this.factory.getConnection();

		var stmt = this.factory.selectStatementFromFilter(con, "Subject", filter, ["count(id)"]);

		rs = stmt.executeQuery();
		rs.next();
		var count = rs.getInt(1);

		GPSystem.log(GPSystem.DEBUG, module.id, "countSubjectsByFilter() returns " + count);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return count;
}



/**
 * List all subjects for the given type
 *
 * @param {String} type the subject type, e.g. SubjectDAO.TYPE_TRUST_CENTER
 * @type Subject[]
 * @return list of subjects
 */
SubjectDAO.prototype.listSubjectsByType = function(type) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listSubjectsByType(" + type + ")");
	assert(type, "Parameter type must not be empty");
	assert(typeof(type) == "string", "Parameter type must be a string");

	var con = null;
	var stmt = null;
	var rs = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Subject where type = ?;");
		stmt.setString(1, type);

		rs = stmt.executeQuery();

		while (rs.next()) {
			var subject = new Subject(this);
			this.factory.resultSetToProperties(rs, subject);
			list.push(subject);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (list.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No subject found for type " + type);
	}
	return list;
}



/**
 * List all subject types
 *
 * @type String[]
 * @return list of subject types
 */
SubjectDAO.prototype.listSubjectTypes = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "listSubjectTypes()");

	var con = null;
	var stmt = null;
	var rs = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select distinct type from Subject;");

		rs = stmt.executeQuery();

		while (rs.next()) {
			list.push(rs.getString(1));
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (list.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Subjects table is empty");
	}
	return list;
}



/**
 * Update the subject's assurance level
 *
 * @param {Subject} subject the subject to update
 * @param {Number} assuranceLevel the assurance level
 */
SubjectDAO.prototype.updateAssuranceLevel = function(subject, assuranceLevel) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateAssuranceLevel(" + subject + "," + assuranceLevel + ")");

	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");
	assert(typeof(assuranceLevel) == "number", "Parameter assuranceLevel must be a Number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Subject set assuranceLevel = ? where id = ?;");

		stmt.setInt(1, assuranceLevel);
		stmt.setInt(2, subject.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	subject.assuranceLevel = assuranceLevel;
}



/**
 * Update the subject's e-mail address
 *
 * @param {Subject} subject the subject to update
 * @param {String} email the e-mail address
 */
SubjectDAO.prototype.updateEmail = function(subject, email) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateEmail(" + subject + "," + email + ")");

	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");
	assert(email, "Parameter email must not be empty");
	assert(typeof(email) == "string", "Parameter email must be a string");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Subject set email = ? where id = ?;");

		stmt.setString(1, email);
		stmt.setInt(2, subject.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	subject.email = email;
}



/**
 * Update the subject's type
 *
 * @param {Subject} subject the subject to update
 * @param {String} type the subject's type must be one of SubjectDAO.TYPE_*
 */
SubjectDAO.prototype.updateType = function(subject, type) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateType(" + subject + "," + type + ")");

	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");
	assert(type, "Parameter type must not be empty");
	assert(typeof(type) == "string", "Parameter type must be a string");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Subject set type = ? where id = ?;");

		stmt.setString(1, type);
		stmt.setInt(2, subject.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	subject.type = type;
}



/**
 * Update the Subject content
 *
 * @param {Subject} subject the subject to update
 * @param {String} content the new content
 */
SubjectDAO.prototype.updateContent = function(subject) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateContent(" + subject + ")");

	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Subject set content = ? where id = ?;");

		stmt.setString(1, subject.serialize());
		stmt.setInt(2, subject.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Update the Subject name
 *
 * @param {Subject} subject the subject to update
 * @param {String} name the new name
 */
SubjectDAO.prototype.updateName = function(subject, name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateName(" + subject + "," + name + ")");

	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");
	assert(typeof(name) == "string", "Parameter name must be a String");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Subject set name = ? where id = ?;");

		stmt.setString(1, name);
		stmt.setInt(2, subject.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	//subject.name = subject;
	subject.name = name;
}



/**
 * Update the Subject's manager role
 *
 * @param {Subject} subject the subject to update
 * @param {Number} roleId the manager role id
 */
SubjectDAO.prototype.updateManagedByRoleId = function(subject, roleId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateManagedByRoleId(" + subject + "," + roleId + ")");

	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");
	assert(roleId, "Parameter roleId must not be empty");
	assert(typeof(roleId) == "number", "Parameter roleId must be a number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Subject set managedByRoleId = ? where id = ?;");

		stmt.setInt(1, roleId);
		stmt.setInt(2, subject.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	subject.managedByRoleId = roleId;
}



/**
 * Update the Subject's life-cycle
 *
 * @param {Subject} subject the subject to update
 * @param {Number} lifecycle the new life-cycle
 */
SubjectDAO.prototype.updateLifeCycle = function(subject, lifecycle) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateLifeCycle(" + subject + "," + lifecycle + ")");

	assert(subject, "Parameter subject must not be empty");
	assert(subject instanceof Subject, "Parameter must be instance of Subject");
	assert(typeof(lifecycle) == "number", "Parameter lifecycle must be a number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Subject set lifecycle = ? where id = ?;");

		stmt.setInt(1, lifecycle);
		stmt.setInt(2, subject.id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	subject.lifecycle = lifecycle;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview TokenDAO for database objects
 */

var Token			= require('scsh/pki-db/Token').Token;
var TokenAction		= require('scsh/pki-db/TokenAction').TokenAction;
var Subject			= require('scsh/pki-db/Subject').Subject;
var ServiceRequest 		= require('scsh/pki-db/ServiceRequest').ServiceRequest;


/**
 * Data access object for token
 *
 * @param {Object} the factory that created this DAO
 */
function TokenDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.TokenDAO = TokenDAO;


TokenDAO.create = [
"CREATE TABLE IF NOT EXISTS Token (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	path VARCHAR(100) NOT NULL," +
"	subjectId MEDIUMINT UNSIGNED," +
"	lastSeen TIMESTAMP DEFAULT NOW()," +
"	lastSeenAt VARCHAR(100)," +
"   online MEDIUMINT UNSIGNED DEFAULT 0,"+
"	serviceRequestId MEDIUMINT UNSIGNED," +
"	type INT UNSIGNED,"+
"	managedByRoleId MEDIUMINT UNSIGNED,"+
"	hardware VARCHAR(100),"+
"	certId MEDIUMINT UNSIGNED,"+
"	PRIMARY KEY (id)," +
"	unique (path), " +
"	CONSTRAINT FK_Token_Role FOREIGN KEY (managedByRoleId) REFERENCES Role(id)," +
"	CONSTRAINT FK_Token_Certificate FOREIGN KEY (certId) REFERENCES Certificate(id) ON DELETE SET NULL," +
"	FOREIGN KEY (serviceRequestId) REFERENCES ServiceRequest(id) ON DELETE SET NULL," +
"	FOREIGN KEY (subjectId) REFERENCES Subject(id) ON DELETE SET NULL" +
")",
"CREATE TABLE IF NOT EXISTS TokenAction (" +
"	id MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT," +
"	tokenId MEDIUMINT UNSIGNED," +
"	serviceRequestId MEDIUMINT UNSIGNED," +
"	PRIMARY KEY (id)," +
"	FOREIGN KEY (tokenId) REFERENCES Token(id) ON DELETE CASCADE," +
"	FOREIGN KEY (serviceRequestId) REFERENCES ServiceRequest(id) ON DELETE CASCADE" +
")"
];


TokenDAO.drop = [
"DROP TABLE IF EXISTS TokenAction",
"DROP TABLE IF EXISTS Token"
];



TokenDAO.alter = [
	"ALTER TABLE Token " +
	"DROP COLUMN IF EXISTS keyDomain",

	"ALTER TABLE Token " +
	"ADD COLUMN IF NOT EXISTS type INT UNSIGNED",

	"ALTER TABLE Token " +
	"ADD COLUMN IF NOT EXISTS managedByRoleId MEDIUMINT UNSIGNED",

	"ALTER TABLE Token " +
	"ADD CONSTRAINT FK_Token_Role FOREIGN KEY IF NOT EXISTS (managedByRoleId) REFERENCES Role(id)",

	"ALTER TABLE Token " +
	"ADD COLUMN IF NOT EXISTS hardware VARCHAR(100)",

	"ALTER TABLE Token " +
	"ADD COLUMN IF NOT EXISTS certId MEDIUMINT UNSIGNED",

	"ALTER TABLE Token " +
	"ADD CONSTRAINT FK_Token_Certificate FOREIGN KEY IF NOT EXISTS (certId) REFERENCES Certificate(id) ON DELETE SET NULL",

	"ALTER TABLE Token " +
	"ADD COLUMN IF NOT EXISTS lastSeenAt VARCHAR(100)",

	"ALTER TABLE Token " +
	"ADD COLUMN IF NOT EXISTS online MEDIUMINT UNSIGNED DEFAULT 0"
]



TokenDAO.prototype.toString = function() {
	return "TokenDAO(db)";
}



/**
 * Create and persists a new token
 *
 * @param {String} tokenPath the path of this token
 * @param {Object} template the optional template
 * @type Token
 * @return the newly created token object
 */
TokenDAO.prototype.newToken = function(tokenPath, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newToken(" + tokenPath + ")");

	assert(tokenPath, "Parameter tokenPath must not be empty");
	assert(typeof(tokenPath) == "string", "Parameter tokenPath must be a String");

	var token = new Token(this, tokenPath, template);

	var con = null;
	var stmt = null;
	var rs = null;

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "Token", token);

		stmt.executeUpdate();
		rs = stmt.getGeneratedKeys();
		rs.next();
		token.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return token;
}



/**
 * Delete token
 *
 * @param {String} path the token path
 * @type boolean
 * @return true if deleted
 */
TokenDAO.prototype.deleteToken = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteToken(" + path + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from Token where path = ?;");

		stmt.setString(1, path);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
	return true;
}



/**
 * Get token for given id
 *
 * @param {Number} id the id of the token
 * @type Token
 * @return the token for the given id or null
 */
TokenDAO.prototype.getTokenById = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getTokenById(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;
	var token = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Token where id = ?;");
		stmt.setInt(1, id);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "id " + id + " not found");
			return null;
		}

		token = new Token(this);
		this.factory.resultSetToProperties(rs, token);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return token;
}



/**
 * Get token for given path
 *
 * @param {String} path the path of the token
 * @type Token
 * @return the token for the given path or null
 */
TokenDAO.prototype.getToken = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getToken(" + path + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");

	var con = null;
	var stmt = null;
	var rs = null;
	var token = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Token where path = ?;");
		stmt.setString(1, path);

		rs = stmt.executeQuery();
		if (!rs.next()) {
			GPSystem.log(GPSystem.DEBUG, module.id, "path " + path + " not found");
			return null;
		}

		token = new Token(this);
		this.factory.resultSetToProperties(rs, token);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return token;
}



/**
 * Get all token which are registered for a given subject
 *
 * @param {Number} subjectId the subject id of the requested token
 * @type Token[]
 * @return the list of token for the given subject id
 */
TokenDAO.prototype.getTokenListBySubjectId = function(subjectId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getTokenListBySubjectId(" + subjectId + ")");

	assert(subjectId, "Parameter subjectId must not be empty");
	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var token = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from Token where subjectId = ?;");
		stmt.setInt(1, subjectId);

		rs = stmt.executeQuery();

		while (rs.next()) {
			token = new Token(this);
			this.factory.resultSetToProperties(rs, token);
			list.push(token);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (list.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No token found for subject id " + subjectId);
	}

	return list;
}



/**
 * Get a list of all token
 *
 * @param {Object} filter the filter criteria object
 * @param {Number} pageOffset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type Token[]
 * @return the list of token
 */
TokenDAO.prototype.getTokenList = function(filter, pageOffset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getTokenList()");

	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(pageOffset) == "undefined" || typeof(pageOffset) == "number", "Parameter pageOffset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;
	var token = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		var sql = "select * from Token";

		var where = this.factory.whereClauseFromFilter(filter);
		if (where.length > 0) {
			sql += " where " + where;
		}

		if (page) {
			sql += " limit ?,?";
		}

		stmt = con.prepareStatement(sql);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);

		if (page) {
			stmt.setInt(offset++, pageOffset);
			stmt.setInt(offset, page);
		}

		rs = stmt.executeQuery();

		while (rs.next()) {
			token = new Token(this);
			this.factory.resultSetToProperties(rs, token);
			list.push(token);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (list.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "The token table is empty");
	}

	return list;
}



/**
 * Count token
 *
 * @param {Object} filter the filter criteria object
 * @type Token[]
 * @return the list of token
 */
TokenDAO.prototype.countTokenList = function(filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getTokenListByManagedByRoleId()");

	assert(typeof(filter) == "object", "Parameter filter must be an object");

	var con = null;
	var stmt = null;
	var rs = null;
	var token = null;
	var list = [];

	try	{
		con = this.factory.getConnection();

		var sql = "select count(id) from Token";

		var where = this.factory.whereClauseFromFilter(filter);
		if (where.length > 0) {
			sql += " where " + where;
		}

		stmt = con.prepareStatement(sql);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);

		rs = stmt.executeQuery();
		rs.next();
		var count = rs.getInt(1);
		GPSystem.log(GPSystem.DEBUG, module.id, "countTokenList() returns " + count);
		return count;
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (list.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "The token table is empty");
	}

	return list;
}



/**
 * Get all token that a managed by one of the given roles
 *
 * @param {Number[]} roles the list of role ids that might be involved or undefined
 * @param {Object} filter the filter criteria object
 * @param {Number} pageOffset the offset into the result set (optional)
 * @param {Number} page the maximum number of records (optional)
 * @type Token[]
 * @return the list of token
 */
TokenDAO.prototype.getTokenListByManagedByRoleId = function(roles, filter, pageOffset, page) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getTokenListByManagedByRoleId(" + roles + ")");

	assert(roles instanceof Array, "Parameter roles must be a list");
	assert(typeof(filter) == "object", "Parameter filter must be an object");
	assert(typeof(pageOffset) == "undefined" || typeof(pageOffset) == "number", "Parameter pageOffset must be a Number");
	assert(typeof(page) == "undefined" || typeof(page) == "number", "Parameter page must be a Number");

	var con = null;
	var stmt = null;
	var rs = null;
	var token = null;
	var list = [];

	if (roles.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "The list of roles is empty");
		return list;
	}

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);
		if (where.length > 0) {
			where += " or ";
		}

		var sql = "select * from Token where " + where;
		sql += "managedByRoleId in (";
		for (var i = 0; i < roles.length; i++) {
			if (i < roles.length -1) {
				sql += "?,"
			} else {
				sql += "?)"
			}
		}

		if (page) {
			sql += " limit ?,?";
		}

		stmt = con.prepareStatement(sql);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);

		for (var i = 0; i < roles.length; i++) {
			stmt.setInt(offset++, roles[i]);
		}

		if (page) {
			stmt.setInt(offset++, pageOffset);
			stmt.setInt(offset, page);
		}

		rs = stmt.executeQuery();

		while (rs.next()) {
			token = new Token(this);
			this.factory.resultSetToProperties(rs, token);
			list.push(token);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	if (list.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "No token is managed by one of the roles: " + roles);
	}

	return list;
}



/**
 * Count token that a managed by one of the given roles
 *
 * @param {Number[]} roles the list of role ids that might be involved or undefined
 * @param {Object} filter the filter criteria object
 * @type Token[]
 * @return the list of token
 */
TokenDAO.prototype.countTokenByManagedByRoleId = function(roles, filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "countTokenByManagedByRoleId(" + roles + ")");

	assert(roles instanceof Array, "Parameter roles must be a list");
	assert(typeof(filter) == "object", "Parameter filter must be an object");

	var con = null;
	var stmt = null;
	var rs = null;
	var token = null;
	var list = [];

	if (roles.length == 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "The list of roles is empty");
		return list;
	}

	try	{
		con = this.factory.getConnection();

		var where = this.factory.whereClauseFromFilter(filter);
		if (where.length > 0) {
			where += " or ";
		}

		var sql = "select count(id) from Token where " + where;
		sql += "managedByRoleId in (";
		for (var i = 0; i < roles.length; i++) {
			if (i < roles.length -1) {
				sql += "?,"
			} else {
				sql += "?);"
			}
		}

		GPSystem.log(GPSystem.DEBUG, module.id, "### sql " + sql);

		stmt = con.prepareStatement(sql);

		var offset = this.factory.setArgumentsFromFilter(stmt, 1, filter);

		for (var i = 0; i < roles.length; i++) {
			GPSystem.log(GPSystem.DEBUG, module.id, "### role " + roles[i]);
			stmt.setInt(offset++, roles[i]);
		}

		rs = stmt.executeQuery();
		rs.next();
		var count = rs.getInt(1);
		GPSystem.log(GPSystem.DEBUG, module.id, "countTokenByManagedByRoleId() returns " + count);
		return count;
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Get the encoded token type
 *
 * @param {Number} type the token type - 01 for SC-HSM
 * @param {Number} platform the platform version
 * @param {Number} major the major version
 * @param {Number} minor the minor version
 * @type Number
 * @return the encoded type
 */
TokenDAO.prototype.encodeType= function(type, platform, major, minor) {
	var tokenType = type << 24;
	tokenType += platform << 16;
	tokenType += major << 8;
	tokenType += minor;
	GPSystem.log(GPSystem.DEBUG, module.id, "DB Token Type: " + tokenType.toString(HEX));
	GPSystem.log(GPSystem.DEBUG, module.id, "DB Token Type: " + tokenType);
	return tokenType;
}



/**
 * Update the token type, platform version, major version, minor version and last seen timestamp
 *
 * @param {String} path the path of this token
 * @param {Number} type the token type - 01 for SC-HSM
 * @param {Number} platform the platform version
 * @param {Number} major the major version
 * @param {Number} minor the minor version
 */
TokenDAO.prototype.updateTypeAndLastSeen= function(path, type, platform, major, minor) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateMetaData(" + path + ", " + type + ", " + platform + ", " + major + ", " + minor + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");

	assert(type, "Parameter type must not be empty");
	assert(typeof(type) == "number", "Parameter type must be a number");

	assert(typeof(platform) == "number", "Parameter platform must be a number");

	assert(typeof(major) == "number", "Parameter major must be a number");

	assert(typeof(minor) == "number", "Parameter minor must be a number");

	var con = null;
	var stmt = null;

	var tokenType = this.encodeType(type, platform, major, minor);

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Token set lastSeen = ?, type = ? where path = ?;");

		var ts = new java.sql.Timestamp(new Date());
		stmt.setTimestamp(1, ts);
		stmt.setInt(2, tokenType);
		stmt.setString(3, path);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Update the token's subject
 *
 * @param {Token} token the token
 * @param {Number} subjectId the new subject
 */
TokenDAO.prototype.updateSubjectId = function(token, subjectId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateSubjectId(" + token + "," + subjectId + ")");

	assert(token, "Parameter token must not be empty");
	assert(token instanceof Token, "Parameter must be instance of Token");
	assert(subjectId, "Parameter subjectId must not be empty");
	assert(typeof(subjectId) == "number", "Parameter subjectId must be a number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Token set subjectId = ? where path = ?;");

		stmt.setInt(1, subjectId);
		stmt.setString(2, token.path);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	token.subjectId = subjectId;
}



/**
 * Update the token's service request
 *
 * @param {Token} token the token
 * @param {Number} serviceRequestId the service request id
 */
TokenDAO.prototype.updateServiceRequestId = function(token, serviceRequestId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateServiceRequestId(" + token + "," + serviceRequestId+ ")");

	assert(token, "Parameter token must not be empty");
	assert(token instanceof Token, "Parameter must be instance of Token");
	assert(serviceRequestId, "Parameter serviceRequestId must not be empty");
	assert(typeof(serviceRequestId) == "number", "Parameter serviceRequestId must be a number");
	serviceRequestId

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Token set serviceRequestId = ? where path = ?;");

		stmt.setInt(1, serviceRequestId);
		stmt.setString(2, token.path);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	token.serviceRequestId = serviceRequestId;
}



/**
 * Set the token's subject id to null
 *
 * @param {Token} token the token
 */
TokenDAO.prototype.deregisterToken = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deregisterToken(" + path + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("update Token set subjectId = NULL, serviceRequestId = NULL where path = ?;");

		stmt.setString(1, path);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Add token action
 *
 * @param {Number} tokenId the token database id
 * @param {Number} serviceRequestId the database id of the service request handling this action
 */
TokenDAO.prototype.addTokenAction = function(tokenId, serviceRequestId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "addTokenAction(" + tokenId + "," + serviceRequestId + ")");

	assert(typeof(tokenId) == "number", "Parameter tokenId must be a number");
	assert(typeof(serviceRequestId) == "number", "Parameter serviceRequestId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;

	var tokenAction = new TokenAction(this, tokenId, serviceRequestId);

	try	{
		con = this.factory.getConnection();

		stmt = this.factory.insertStatementFromObject(con, "TokenAction", tokenAction);

		stmt.executeUpdate();

		rs = stmt.getGeneratedKeys();
		rs.next();
		tokenAction.id = rs.getInt(1);
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return tokenAction;
}



/**
 * Enumerate pending service requests for token
 *
 * @param {Token} token the token
 */
TokenDAO.prototype.enumerateTokenAction = function(tokenId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "enumerateTokenAction(" + tokenId + ")");

	assert(typeof(tokenId) == "number", "Parameter tokenId must be a number");

	var con = null;
	var stmt = null;
	var rs = null;
	var result = [];

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("select * from TokenAction where tokenId = ? order by id;");
		stmt.setInt(1, tokenId);
		rs = stmt.executeQuery();
		while (rs.next()) {
			var action = new TokenAction(this);
			this.factory.resultSetToProperties(rs, action);
			result.push(action);
		}
	}
	finally {
		if (rs != null) {
			rs.close();
		}
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}

	return result;
}



/**
 * Remove token action
 *
 * @param {Number} id the token action id
 */
TokenDAO.prototype.removeTokenAction = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "removeTokenAction(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be a number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from TokenAction where id = ?;");

		stmt.setInt(1, id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}



/**
 * Remove token action
 *
 * @param {Number} id the service request id
 */
TokenDAO.prototype.removeTokenActionForServiceRequest = function(id) {
	GPSystem.log(GPSystem.DEBUG, module.id, "removeTokenActionForServiceRequest(" + id + ")");

	assert(typeof(id) == "number", "Parameter id must be a number");

	var con = null;
	var stmt = null;

	try	{
		con = this.factory.getConnection();

		stmt = con.prepareStatement("delete from TokenAction where serviceRequestId = ?;");

		stmt.setInt(1, id);
		stmt.executeUpdate();
	}
	finally {
		if (stmt != null) {
			stmt.close();
		}
		if (con != null) {
			con.close();
		}
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DAO Factory for file system based persistence
 */

var Certificate = require('scsh/pki-db/Certificate').Certificate;
var Holder = require('scsh/pki-db/Holder').Holder;



/**
 * Data access object for certificates
 *
 * @param {Object} the factory that created this DAO
 */
function CertificateDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.CertificateDAO = CertificateDAO;



CertificateDAO.prototype.toString = function() {
	return "CertificateDAO(fs)";
}



/**
 * Create and persists a new certificate object
 *
 * @param {Holder} holder the holder of this certificate
 * @param {String} serial the serial number of this certificate (full CHR for CVC and decimal serial for X.509)
 * @param {Number} dir one of Certificate.UP, Certificate.SHORT or Certificate.DOWN. See Certificate for explanation
 * @param {ByteString} certbin the binary presentation of the certificate
 * @type Certificate
 * @return the newly created certificate object
 */
CertificateDAO.prototype.newCertificate = function(holder, serial, dir, certbin, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newCertificate(" + holder + "," + serial + "," + dir + "," + certbin.bytes(0,10).toString(HEX) + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(serial, "Parameter serial must not be empty");
	assert(typeof(serial) == "string", "Parameter serial must be a String");
	assert(dir == Certificate.UP || dir == Certificate.SHORT || dir == Certificate.DOWN, "Parameter dir invalid");
	assert(certbin, "Parameter certbin must not be empty");
	assert(certbin instanceof ByteString, "Parameter must be instance of ByteString");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var fn = this.getFilename(holder, serial, dir);
	GPSystem.log(GPSystem.INFO, module.id, "Saving certificate to " + fn);
	this.factory.saveBinaryFile(fn, certbin);

	var c = new Certificate(this, holder, serial, dir, certbin, template);

	return c;
}



/**
 * @private
 */
CertificateDAO.prototype.getFilename = function(holder, serial, dir) {
	if ((holder.certificateType & 0xF) == Holder.CVC) {
		switch(dir) {
			case Certificate.UP:
				var fn = holder._path + "/" + serial + ".cvcert";
				break;
			case Certificate.SHORT:
				var fn = holder._path + "/" + serial + ".selfsigned.cvcert";
				break;
			case Certificate.DOWN:
				var fn = holder._path + "/" + serial + ".cross.cvcert";
				break;
			default:
				new GPError(module.id, GPError.INVALID_DATA, dir, "Invalid option in parameter dir");
		}
	} else {
		var fn = holder._path + "/" + serial + ".cer";
	}
	return fn;
}



/**
 * Get certificate identified by serial number for given holder
 *
 * @param {Holder} holder the holder of this certificate
 * @param {String} serial the serial number of this certificate (full CHR for CVC and decimal serial for X.509)
 * @param {Number} dir one of Certificate.UP, Certificate.SHORT or Certificate.DOWN. See Certificate for explanation
 * @type Certificate
 * @return the certificate object or null if not found
 */
CertificateDAO.prototype.getCertificateBySerial = function(holder, serial, dir) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateBySerial(" + holder + "," + serial + "," + dir + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(serial, "Parameter serial must not be empty");
	assert(typeof(serial) == "string", "Parameter serial must be a String");
	assert(dir == Certificate.UP || dir == Certificate.SHORT || dir == Certificate.DOWN, "Parameter dir invalid");

	var fn = this.getFilename(holder, serial, dir);

	try	{
		var bin = this.factory.loadBinaryFile(fn);
	}
	catch(e) {
		if ((dir == Certificate.SHORT) || ((holder.certificateType & 0xF) == Holder.X509)) {
			GPSystem.log(GPSystem.DEBUG, module.id, "File " + fn + " not found");
			return null;
		}

		// Look if there is a selfsigned root
		var fn = holder._path + "/" + serial + ".selfsigned.cvcert";
		dir = Certificate.SHORT;

		try	{
			var bin = this.factory.loadBinaryFile(fn);
		}
		catch(e) {
			GPSystem.log(GPSystem.DEBUG, module.id, "File " + fn + " not found");
			return null;
		}
	}

	var c = new Certificate(this, holder, serial, dir, bin);

	if ((holder.certificateType & 0xF) == Holder.X509) {
		var x = new X509(bin);
		c.keyId = x.getSubjectKeyIdentifier();
	}

	return c;
}



/**
 * Get the current certificate in use by this holder
 *
 * @param {Holder} holder the holder of this certificate
 * @type Certificate
 * @return the certificate object or null if no current certificate
 */
CertificateDAO.prototype.getCurrentCertificate = function(holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCertificate(" + holder + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");

	default xml namespace = "";
	var cfg = this.factory.loadConfig(holder._path);
	if (cfg == null) {
		GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCertificate(" + holder + ") : null");
		return null;
	}

	var str = cfg.sequence.currentCHR.toString();
	if (!str) {
		return null;
	}

	return this.getCertificateBySerial(holder, str, Certificate.UP);
}



/**
 * Get all certificates issued to this holder
 *
 * @param {Holder} holder the holder of the certificates
 * @type Certificate[]
 * @return the list of certificates, which my be empty
 */
CertificateDAO.prototype.enumerateCertificates = function(holder) {
	GPSystem.log(GPSystem.DEBUG, module.id, "enumerateCertificates(" + holder + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");

	var list = this.factory.enumerateFiles(holder._path, /\.(cvcert|CVCERT)$/);
	var result = [];

	for (var i = 0; i < list.length; i++) {
		var str = list[i];
		var bin = this.factory.loadBinaryFile(holder._path + "/" + str);
		var dir = Certificate.UP;

		if (str.indexOf("selfsigned") > 0) {
			dir = Certificate.SHORT;
		} else if (str.indexOf("cross") > 0) {
			dir = Certificate.DOWN;
		}

		var serial = str.match(/(^.+?)\./)[1];
		var c = new Certificate(this, holder, serial, dir, bin);
		result.push(c);
	}
	return result;
}



/**
 * Delete certificate
 *
 * @param {Certificate} certificate the certificate to delete
 * @type boolean
 * @return true if deleted
 */
CertificateDAO.prototype.deleteCertificate = function(certificate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteCertificate(" + certificate + ")");

	assert(certificate, "Parameter certificate must not be empty");
	assert(certificate instanceof Certificate, "Parameter must be instance of Certificate");

	var fn = this.getFilename(certificate._holder, certificate.serial, certificate.linkDir);
	return this.factory.deleteFile(fn);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview HolderDAO
 */

var Holder = require('scsh/pki-db/Holder').Holder;
var Certificate = require('scsh/pki-db/Certificate').Certificate;



/**
 * Data access object for certificate holders
 *
 * @param {Object} the factory that created this DAO
 */
function HolderDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.HolderDAO = HolderDAO;



HolderDAO.prototype.toString = function() {
	return "HolderDAO(fs)";
}



/**
 * Create and persists a new holder object
 *
 * @param {String} path the path in the PKI hierachie
 * @param {Number} certtype one of Holder.CVC or Holder.X509. See Holder for explanation
 * @type Holder
 * @return the newly created holder object
 */
HolderDAO.prototype.newHolder = function(path, certtype) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newHolder(" + path + "," + certtype + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");

	if (!certtype) {
		certtype = Holder.CVC;
	}

	assert(((certtype & 0xF) == Holder.CVC) || ((certtype & 0xF) == Holder.X509), "Parameter certtype invalid");

	var h = new Holder(this, path, certtype);
	this.updateConfig(h, "certificateType", certtype);
	return h;
}



/**
 * @private
 */
HolderDAO.prototype.updateConfig = function(holder, key, val) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateConfig(" + holder + "," + key + "," + val + ")");

	default xml namespace = "";
	var cfg = this.factory.loadConfig(holder._path);
	if (cfg == null) {
		GPSystem.log(GPSystem.DEBUG, module.id, "defaultConfig");
		cfg = this.factory.getDefaultConfig();
	}

	if (key) {
		cfg.sequence[key] = val;
	}

	this.factory.saveConfig(holder._path, cfg);
}



/**
 * Get holder for given PKI path
 *
 * @param {String} path the path in the PKI hierachie
 * @type Holder
 * @return the holder at the path
 */
HolderDAO.prototype.getHolder = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolder(" + path + ")");

	assert(path, "Parameter path must not be empty");
	assert(typeof(path) == "string", "Parameter path must be a String");

	default xml namespace = "";
	var cfg = this.factory.loadConfig(path);

	if (!cfg) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found");
		return null;
	}

	if (cfg.sequence.certificateType.toString().length > 0) {
		var certtype = parseInt(cfg.sequence.certificateType);
		GPSystem.log(GPSystem.DEBUG, module.id, "certtype=" + certtype);
	} else {
		certtype = Holder.CVC;
	}

	var signerNo = parseInt(cfg.sequence.current);
	GPSystem.log(GPSystem.DEBUG, module.id, "signerNo=" + signerNo);

	var h = new Holder(this, path);
	h.signerNo = signerNo;
	h.certificateType = certtype;
	return h;
}



/**
 * Get a list of holders under the PKI path.
 *
 * @param {String} path the path in the PKI hierachie, use "/" to obtain root holders.
 * @type String[]
 * @return the list of holder names at the path
 */
HolderDAO.prototype.getHolderList = function(path) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getHolderList(" + path + ")");

	assert(typeof(path) == "string", "Parameter path must be a String");

	var list = this.factory.enumerateFiles(path);
	return list;
}



/**
 * Update the signer number
 *
 * @param {Holder} holder the holder
 * @param {Number} val the new signer number
 */
HolderDAO.prototype.updateSignerNo = function(holder, val) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateSignerNo(" + holder + "," + val + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(typeof(val) == "number", "Parameter val must be a Number");

	this.updateConfig(holder, "current", val);
	holder.signerNo = val;
}



/**
 * Update the current certificate
 *
 * @param {Holder} holder the holder
 * @param {Number} val the new signer number
 */
HolderDAO.prototype.updateCurrentCertificate = function(holder, certificate) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateSignerNo(" + holder + "," + certificate + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(certificate, "Parameter certificate must not be empty");
	assert(certificate instanceof Certificate, "Parameter must be instance of Certificate");

	this.updateConfig(holder, "currentCHR", certificate.serial);
	holder.currentCertificate = certificate;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview RequestDAO
 */

var Holder = require('scsh/pki-db/Holder').Holder;
var Request = require('scsh/pki-db/Request').Request;



/**
 * Data access object for requests
 *
 * @param {Object} the factory that created this DAO
 */
function RequestDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.RequestDAO = RequestDAO;



RequestDAO.prototype.toString = function() {
	return "RequestDAO(db)";
}



RequestDAO.prototype.getFilename = function(holder, keyId) {
	if ((holder.certificateType & 0xF) == Holder.CVC) {
		return keyId.toString(ASCII) + ".cvreq";
	} else {
		return keyId.toString(HEX) + ".pkcs10";
	}
}



/**
 * Create and persists a new request object
 *
 * @param {Holder} holder the holder of this request
 * @param {ByteString} keyId the keyId of the request
 * @param {ByteString} encodedRequest the request
 * @param {Object} template with additional database fields
 * @type Request
 * @return the newly created request object
 */
RequestDAO.prototype.newRequest = function(holder, keyId, encodedRequest, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newRequest(" + holder + "," + keyId + "," + encodedRequest + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(keyId, "Parameter keyId must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");
	assert(encodedRequest, "Parameter encodedRequest must not be empty");
	assert(encodedRequest instanceof ByteString, "Parameter must be instance of ByteString");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var r = new Request(this, holder, keyId, encodedRequest, template);

	var fn = holder._path + "/" + this.getFilename(holder, keyId);
	GPSystem.log(GPSystem.INFO, module.id, "Saving request to " + fn);
	this.factory.saveBinaryFile(fn, encodedRequest);

	return r;
}



/**
 * Get request identified by keyId
 *
 * @param {Holder} holder the holder of this request
 * @param {ByteString} keyId the keyId of the request
 * @type Request
 * @return the request object or null if not found
 */
RequestDAO.prototype.getRequestByKeyId = function(holder, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRequest(" + holder + "," + keyId + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(keyId, "Parameter keyId must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");

	var r = new Request(this, holder, keyId);

	var fn = holder._path + "/" + this.getFilename(holder, keyId);
	var bin = this.factory.loadBinaryFile(fn);

	var r = new Request(this, holder, keyId, bin);

	return r;
}



/**
 * Delete request
 *
 * @param {Request} request the request to delete
 * @type boolean
 * @return true if deleted
 */
RequestDAO.prototype.deleteRequest = function(request) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteRequest(" + request + ")");

	assert(request, "Parameter request must not be empty");
	assert(request instanceof Request, "Parameter must be instance of Request");

	var fn = request._holder._path + "/" + this.getFilename(request._holder, request.keyId);
	return this.factory.deleteFile(fn);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SignerDAO
 */

var Holder = require('scsh/pki-db/Holder').Holder;
var Signer = require('scsh/pki-db/Signer').Signer;



/**
 * Data access object for signers
 *
 * @param {Object} the factory that created this DAO
 */
function SignerDAO(factory) {
	GPSystem.log(GPSystem.DEBUG, module.id, "new()");

	this.factory = factory;
}

exports.SignerDAO = SignerDAO;



SignerDAO.prototype.toString = function() {
	return "SignerDAO(fs)";
}



/**
 * Create and persists a new signer object
 *
 * @param {Holder} holder the holder of this signer
 * @param {String} name the name of the signer
 * @param {ByteString} keyId the key identifier
 * @type Signer
 * @return the newly created signer object
 */
SignerDAO.prototype.newSigner = function(holder, name, keyId, template) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newSigner(" + holder + "," + name + "," + keyId + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a String");
	assert(keyId, "Parameter name must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");
	assert((typeof(template) == "undefined") || (template instanceof Object), "Parameter template be an object");

	var s = new Signer(this, holder, name, keyId, template);

	if (s.keyblob) {
		this.updateSignerKey(s, s.keyblob);
	}
	return s;
}



SignerDAO.prototype.getFilename = function(holder, keyId) {
	if ((holder.certificateType & 0xF) == Holder.CVC) {
		return keyId.toString(ASCII) + ".pkcs8";
	} else {
		return keyId.toString(HEX) + ".pkcs8";
	}
}



/**
 * Get signer identified by name
 *
 * @param {Holder} holder the holder of this signer
 * @param {String} name the name of the signer
 * @type Signer
 * @return the signer object or null if not found
 */
SignerDAO.prototype.getSignerByName = function(holder, name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner(" + holder + "," + name + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(name, "Parameter name must not be empty");
	assert(typeof(name) == "string", "Parameter name must be a String");

	var signer = new Signer(this, holder, name, new ByteString(name, ASCII));

	var fn = holder._path + "/" + name + ".pkcs8";

	try	{
		var bin = this.factory.loadBinaryFile(fn);
	}
	catch(e) {
		GPSystem.log(GPSystem.DEBUG, module.id, "File " + fn + " not found");
		return null;
	}

	signer.keyblob = bin;
	return signer;
}



/**
 * Get signer identified by key id
 *
 * @param {Holder} holder the holder of this signer
 * @param {ByteString} keyId the key identifier
 * @type Signer
 * @return the signer object or null if not found
 */
SignerDAO.prototype.getSignerByKeyId = function(holder, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner(" + holder + "," + keyId + ")");

	assert(holder, "Parameter holder must not be empty");
	assert(holder instanceof Holder, "Parameter must be instance of Holder");
	assert(keyId, "Parameter name must not be empty");
	assert(keyId instanceof ByteString, "Parameter must be instance of ByteString");

	var signer = new Signer(this, holder, keyId.toString(ASCII), keyId);

	var fn = holder._path + "/" + this.getFilename(holder, keyId);

	try	{
		var bin = this.factory.loadBinaryFile(fn);
	}
	catch(e) {
		GPSystem.log(GPSystem.DEBUG, module.id, "File " + fn + " not found");
		return null;
	}

	signer.keyblob = bin;
	return signer;
}



/**
 * Update signer key
 *
 * @param {Signer} signer the signer for which the key shall be updated
 * @param {ByteString} keyblob the private key
 */
SignerDAO.prototype.updateSignerKey = function(signer, keyblob) {
	GPSystem.log(GPSystem.DEBUG, module.id, "updateSignerKey(" + signer + ")");

	assert(signer, "Parameter signer must not be empty");
	assert(signer instanceof Signer, "Parameter must be instance of Signer");

	assert(keyblob, "Parameter keyblob must not be empty");
	assert(keyblob instanceof ByteString, "Parameter must be instance of ByteString");

	var fn = signer._holder._path + "/" + this.getFilename(signer._holder, signer.keyId);
	GPSystem.log(GPSystem.INFO, module.id, "Saving private key to " + fn);
	this.factory.saveBinaryFile(fn, keyblob);
	this.keyblob = keyblob;
}



/**
 * Delete signer
 *
 * @param {Signer} signer the signer to delete
 * @type boolean
 * @return true if deleted
 */
SignerDAO.prototype.deleteSigner = function(signer) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteSigner(" + signer + ")");

	assert(signer, "Parameter signer must not be empty");
	assert(signer instanceof Signer, "Parameter must be instance of Signer");

	var fn = signer._holder._path + "/" + this.getFilename(signer._holder, signer.keyId);
	return this.factory.deleteFile(fn);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Remote Application Management over HTTP (RAMoverHTTP) client
 */

/**
 * Create a client instance for attaching a card to a server via the RAMOverHTTP procotol
 *
 * @Class Class implementing a RAMOverHTTP client
 * @constructor
 * @param {Card} card the card instance to attach
 * @param {String} url the URL to connect to
 * @param {String} session the session cookie
 */
function RAMClient(card, url, session) {
	this.card = card;
	this.url = url;
	this.session = session;
	this.httpCode = -1;
	this.apduCount = 0;
	this.aPDULimit = 100000;
	this.httpcount = 0;
	this.httplimit = 100000;
	this.forceFailSW = 0;
	this.returnAllSW = false;
}



exports.RAMClient = RAMClient;



/**
 * Prepend a 0, if the encoded integer is interpreted as negative value otherwise
 */
RAMClient.asSignedInteger = function(val) {
	var enc = ByteString.valueOf(val);
	if (enc.byteAt(0) >= 0x80) {
		enc = ByteString.valueOf(0).concat(enc);
	}
	return enc;
}



/**
 * @private
 */
RAMClient.prototype.encodeInitiation = function(atr) {
	var pit = new ASN1(0xE8, new ASN1(0xC0, atr));
	if (typeof(this.maxCAPDUSize) == "number") {
		pit.add(new ASN1(0xC1, RAMClient.asSignedInteger(this.maxCAPDUSize)));
	}
	if (typeof(this.maxRAPDUSize) == "number") {
		pit.add(new ASN1(0xC2, RAMClient.asSignedInteger(this.maxRAPDUSize)));
	}
	return pit.getBytes();
}



/**
 * Set a notification listener.
 *
 * The listener object must implement a notificationReceived() method that
 * receives the three parameter id, msg and ttc.
 *
 * @param {Object} the listener object implementing notificationReceived()
 */
RAMClient.prototype.setNotificationListener = function(notificationListener) {
	this.notificationListener = notificationListener;
}



/**
 * Set a limiting number of APDUs
 *
 * This is helpful for testing to intercept processing after a certain number
 * of APDUs (Default 100000).
 *
 * @param {Number} aPDULimit the maximum number of APDU processing in update()
 * @param {Number} forceFailSW the final SW1/SW2
 */
RAMClient.prototype.setAPDULimit = function(aPDULimit, forceFailSW) {
	this.aPDULimit = aPDULimit;
	this.forceFailSW = forceFailSW;
}



/**
 * Set a limiting number of HTTP roundtrips
 *
 * This is helpful for testing to intercept processing after a certain number
 * of HTTP roundtrips (Default 100000).
 *
 * @param {Number} aPDULimit the maximum number of APDU processing in update()
 * @param {Number} forceFailSW the final SW1/SW2
 */
RAMClient.prototype.setHTTPLimit = function(httplimit) {
	this.httplimit = httplimit;
}



/**
 * Set a maximum command and response APDU size
 *
 * @param {Number} maxCAPDUSize The maximum number of bytes in the command APDU
 * @param {Number} maxRAPDUSize The maximum number of bytes in the response APDU
 */
RAMClient.prototype.setMaxAPDUSize = function(maxCAPDUSize, maxRAPDUSize) {
	this.maxCAPDUSize = maxCAPDUSize;
	this.maxRAPDUSize = maxRAPDUSize;
}



/**
 * @private
 */
RAMClient.prototype.getURLConnection = function() {
	if (typeof(this.connectionFactory) != "undefined") {
		c = this.connectionFactory.getConnection(this.url, this.session);
	} else {
		var c = new URLConnection(this.url);
		if (typeof(this.session) != "undefined") {
//			print(typeof(this.session));
			c.addHeaderField("Cookie", this.session);
		}
	}
	c.addHeaderField("Content-Type", "application/org.openscdp-content-mgt-response;version=1.0");
	return c;
}



/**
 * @private
 */
RAMClient.prototype.initialConnect = function() {
	var c = this.getURLConnection();
	var atr = this.card.getATR();
	var b = this.encodeInitiation(atr.toByteString());
	var cst = c.postBinary(b);

	var cookie = c.getHeaderField("Set-Cookie");
	if (cookie) {
//		print(cookie);
		this.session = cookie[0];
	}

	this.httpCode = c.responseCode;
	return cst;
}



/**
 * @private
 */
RAMClient.prototype.next = function(rst) {
	var c = this.getURLConnection();
	var cst = c.postBinary(rst);

	this.httpCode = c.responseCode;
	return cst;
}



/**
 * @private
 */
RAMClient.prototype.processAPDU = function(capdu) {
	var rapdu = this.card.plainApdu(capdu);
	rapdu = rapdu.concat(ByteString.valueOf(this.card.SW, 2));
	this.apduCount++;

	if ((this.apduCount >= this.aPDULimit) && this.forceFailSW) {
		rapdu = ByteString.valueOf(this.forceFailSW, 2);
	}
	return new ASN1(0x23, rapdu);
}



/**
 * @private
 */
RAMClient.prototype.processReset = function() {
	var atr = this.card.reset(Card.RESET_COLD);
	if (atr instanceof Atr) {
		atr = atr.toByteString();
	}
	return new ASN1(0xC0, atr);
}



/**
 * @private
 */
RAMClient.prototype.processNotify = function(e) {
	if (this.notificationListener) {
		var id = e.get(0).value.toSigned();
		var str = e.get(1).value.toString(UTF8);
		var ttc = undefined;
		if (e.elements > 2) {
			ttc = e.get(0).value.toUnsigned();
		}
		this.notificationListener.notificationReceived(id, str, ttc);
	} else {
		print("Notify:");
		print(e);
	}
}



RAMClient.SW9000 = new ByteString("9000", HEX);

/**
 * @private
 */
RAMClient.prototype.process = function(cst) {
//	print(cst);
	var a = new ASN1(cst);
//	print(a);

	var rst = new ASN1(0xAB);

	var cnt = 0;
	var rsp;

	for (var i = 0; (i < a.elements); i++) {
		var e = a.get(i);
		switch(e.tag) {
			case 0x22:
				// Abort processing of APDU sequence if SW != 9000
				if (rsp && !rsp.value.right(2).equals(RAMClient.SW9000)) {
					print("Abort sequence");
					print(rsp);
					i = a.elements;
					break;
				}
				rsp = this.processAPDU(e.value);
				if (this.returnAllSW) {
					rst.add(rsp);
				}
				cnt++;
				break;
			case 0xC0:
				rst.add(this.processReset());
				break;
			case 0xE0:
				this.processNotify(e);
				break;
		}
	}

	if (rsp && !this.returnAllSW) {
		rst.add(rsp);
	}
	rst.add(new ASN1(0x80, RAMClient.asSignedInteger(cnt)));
//	print(rst);
//	print(rst.getBytes());
	return rst.getBytes();
}



/**
 * Close connection, e.g. after exception on the client side
 *
 * @param {Number} id the message id
 * @param {String} msg the closing message
 */
RAMClient.prototype.close = function(id, msg) {
	var c = this.getURLConnection();

	var rst = new ASN1(0xAB,
			new ASN1(0xE1,
				 new ASN1(ASN1.INTEGER, RAMClient.asSignedInteger(id)),
				 new ASN1(ASN1.UTF8String, new ByteString(msg, UTF8))
			    )
		      ).getBytes();

	var cst = this.next(rst);
	while (this.httpCode == 200) {
		var rst = this.process(cst);
		cst = this.next(rst);
	}
}



/**
 * Perform update operation
 */
RAMClient.prototype.update = function() {
	this.httpCode = -1;
	this.apduCount = 0;
	var cst = this.initialConnect();
	while ((this.httpCode == 200) && (this.httpcount < this.httplimit)) {
		this.httpcount++;
		var rst = this.process(cst);
		cst = this.next(rst);
	}
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2016 CardContact Systems GmbH
 * |'##> <##'|  32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Online-CA Connection
 */



/**
 * Creates a web service connector to access an online CA
 *
 * @class Class implementing a CA web service connector
 * @constructor
 * @param {String} url the web service endpoint
 */
function CAConnection(url) {
	this.url = url;
	this.soapcon = new SOAPConnection();
	this.verbose = true;
	this.lastReturnCode = null;
}

exports.CAConnection = CAConnection;


/**
 * Get the last return code
 *
 * @returns the last return code received or null if none defined
 * @type String
 */
CAConnection.prototype.getLastReturnCode = function() {
	return this.lastReturnCode;
}



/**
 * Gets the last request
 *
 * @returns the last request
 * @type XML
 */
CAConnection.prototype.getLastRequest = function() {
	return this.request;
}



/**
 * Gets the last response
 *
 * @returns the last response
 * @type XML
 */
CAConnection.prototype.getLastResponse = function() {
	return this.response;
}



/**
 * Close the connector and release allocated resources
 */
CAConnection.prototype.close = function() {
	this.soapcon.close();
}



/**
 * Request a certificate from the CA using a web service
 *
 * @param {ByteString} certreq the certificate request
 * @param {String} messageID the messageID for asynchronous requests (optional)
 * @param {String} responseURL the URL to which the asynchronous response is send (optional)
 * @returns the new certificates
 * @type ByteString[]
 */
CAConnection.prototype.requestCertificate = function(certreq, devicecert, commonName, eMailAddress, activationCode) {

	this.lastReturnCode = null;

	var soapConnection = new SOAPConnection();

	var ns = new Namespace("http://www.openscdp.org/CAService");

	var request =
		<ns:RequestCertificate xmlns:ns={ns}>
			<CertificateSigningRequest>{certreq.toString(BASE64)}</CertificateSigningRequest>
			<DeviceCertificate>{devicecert.toString(BASE64)}</DeviceCertificate>
			<CommonName>{commonName}</CommonName>
			<eMailAddress>{eMailAddress}</eMailAddress>
		</ns:RequestCertificate>

	if (activationCode) {
		request.eMailAddress += <ActivationCode>{activationCode}</ActivationCode>;
	}

	if (this.verbose) {
		GPSystem.trace(request.toXMLString());
	}

	this.request = request;

	try	{
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.trace(response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.trace("SOAP call to " + this.url + " failed : " + e);
		throw new GPError("CAConnection", GPError.DEVICE_ERROR, 0, "RequestCertificate failed with : " + e);
	}

	this.response = response;

	var certlist = [];

	this.lastReturnCode = response.ReturnCode.toString();

	if (this.lastReturnCode != "ok") {
		return null;
	}

	GPSystem.trace("Received certificates:");
	for each (var c in response.Certificates.Certificate) {
		var cert = new ByteString(c, BASE64);
		certlist.push(cert);
		GPSystem.trace(cert);
	}

	return certlist;
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2016 CardContact Systems GmbH
 * |'##> <##'|  Schuelerweg 38, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SmartCard-HSM Crypto Provider
 */

var SmartCardHSM				= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var SmartCardHSMKeySpecGenerator		= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMKeySpecGenerator;
var SmartCardHSMSymmetricKeySpecGenerator	= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMSymmetricKeySpecGenerator;
var HSMKeyStore					= require('scsh/sc-hsm/HSMKeyStore').HSMKeyStore;



/**
 * Crypto Provider for accessing a SmartCard-HSM
 *
 * @param {SmartCardHSM} sc the associated SmartCard-HSM
 * @param {Number} slot the key domain slot. If undefined or -1 no key domain will be set
 */
function CryptoProvider(sc, id, slot) {
	this.id = id;
	this.slot = slot; // the key domain slot
	this.setSmartCardHSM(sc);
	this.deleteIfExists = false;
}

exports.CryptoProvider = CryptoProvider;



/**
 * Replace SmartCard-HSM
 *
 * @param {SmartCardHSM} sc the new SmartCard-HSM
 */
CryptoProvider.prototype.setSmartCardHSM = function(sc) {
	this.sc = sc;
	this.ks = new HSMKeyStore(sc);
}



/**
 * Release this crypto provider
 *
 * The release() method shall be called if the provider is not used anymore
 * Place the release in the finally statement of a try/catch block
 */
CryptoProvider.prototype.release = function() {
}



/**
 * Get crypto object
 *
 * This method is part of the API.
 *
 * @type HSMCrypto
 * @return the HSMCrypto object
 */
CryptoProvider.prototype.getCrypto = function() {
	if (this.sc) {
		return this.sc.getCrypto();
	}
	return new Crypto();
}



/**
 * Get a handle for a private key stored on the SmartCard-HSM
 *
 * @param {String} label the label of the private key
 * @param {ByteString} blob the optional key blob
 * @returns the private key
 * @type Key
 */
CryptoProvider.prototype.getPrivateKeyByLabel = function(label, blob) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPrivateKeyByLabel(" + label + ")");
	var key = this.ks.getKey(label);
	GPSystem.log(GPSystem.DEBUG, module.id, "key " + key);
	return key;
}



/**
 * Get a handle for a private key stored on the SmartCard-HSM
 *
 * @param {String} label the label of the private key
 * @param {ByteString} blob the optional key blob
 * @returns the private key
 * @type Key
 */
CryptoProvider.prototype.getPrivateKeyByKeyId = function(keyid, blob) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPrivateKeyByKeyId(" + keyid + ")");
	var key = this.ks.getKey(keyid);
	GPSystem.log(GPSystem.DEBUG, module.id, "key " + key);
	return key;
}



/**
 * Generate a key pair under the given label with the key characteristics defined in keyspec
 *
 * @param {String} label the label for this key
 * @param {Key} the key specification
 * @return an object containing the private key as property prk and the public key as property puk
 * @type Object
 */
CryptoProvider.prototype.generateKeyPair = function(label, keyspec) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateKeyPair(" + label + ")");

	if (this.ks.hasKey(label)) {
		if (this.deleteIfExists) {
			this.ks.deleteKey(label);
		} else {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "A key with label " + label + " does already exist");
		}
	}

	if (typeof(keyspec.getComponent(Key.ECC_P)) != "undefined") {
		var kg = new SmartCardHSMKeySpecGenerator(Crypto.EC, keyspec);
	} else {
		var kg = new SmartCardHSMKeySpecGenerator(Crypto.RSA, keyspec.getSize());
	}

	if (this.slot >= 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "set key domain to " + this.slot);
		kg.setKeyDomain(this.slot);
	}

	var req = this.ks.generateKeyPair(label, kg);
	var puk = req.getPublicKey();
	var prk = this.ks.getKey(label);
	return { prk: prk, puk: puk, req: req.getBytes() };
}



/**
 * Delete private key
 *
 * @param {String} label the key label
 */
CryptoProvider.prototype.deletePrivateKey = function(label) {
	this.ks.deleteKey(label);
}



/**
 * Generate a symmetric key under the given label
 *
 * @param {String} label the label for this key
 * @param {Number} keySize either 128, 192 or 256
 * @param {ByteString} allowedAlgorithms the optional list of allowed algorithms (0x10 for encryption, 0x11 for decryption, 0x18 for CMAC). By default all algorithms are allowed.
 * @param {String} wrappingKeyLabel the label of the optional wrapping key
 * @return the new key wrapped with the wrapping key
 * @type ByteString
 */
CryptoProvider.prototype.generateKey = function(label, keySize, allowedAlgorithms, wrappingKeyLabel) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateKey(" + label + ", " + keySize + ")");

	if (this.ks.hasKey(label)) {
		if (this.deleteIfExists) {
			this.ks.deleteKey(label);
		} else {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "A key with label " + label + " does already exist");
		}
	}

	if (!allowedAlgorithms) {
		var allowedAlgorithms = new ByteString("101118", HEX);
	}

	var kg = new SmartCardHSMKeySpecGenerator(Crypto.AES, keySize);
	kg.setAlgorithms(allowedAlgorithms);

	if (wrappingKeyLabel) {
		if (!this.ks.hasKey(wrappingKeyLabel)) {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "A key with label " + wrappingKeyLabel + " does already exist");
		}
		var wrappingKey = this.ks.getKey(wrappingKeyLabel);
		kg.wrappingKey = wrappingKey.getId();
	}

	if (this.slot >= 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "set key domain to " + this.slot);
		kg.setKeyDomain(this.slot);
	}

	var wrapbin = this.ks.generateKey(label, kg);
	return wrapbin;
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview DKEK key wrapper
 */



/**
 * Class supporting DKEK functions outside the SmartCard-HSM
 *
 * @constructor
 * @param {Crypto} crypto the crypto provider
 */
function DKEK(crypto) {
	this.crypto = crypto;
	this.dkek = new ByteString("0000000000000000000000000000000000000000000000000000000000000000", HEX);
}

exports.DKEK = DKEK;



/**
 * Import a DKEK share
 *
 * @param {ByteString} share a 32 byte share
 */
DKEK.prototype.importDKEKShare = function(share) {
	assert(share instanceof ByteString, "Share must be of type ByteString");
	assert(share.length == 32, "Share must be 32 byte long");
	var ndkek = this.dkek.xor(share);
	this.dkek.clear();
	this.dkek = ndkek;
}



/**
 * Zeroize DKEK
 *
 */
DKEK.prototype.clear = function() {
	this.dkek.clear();
}



/**
 * Return the Key Check Value (KCV) of the internal DKEK
 *
 * @type ByteString
 * @return the KCV
 */
DKEK.prototype.getKCV = function() {
	return this.crypto.digest(Crypto.SHA_256, this.dkek).left(8);
}



/**
 * Derive the encryption key from the DKEK
 *
 * @type ByteString
 * @return the encryption key
 */
DKEK.prototype.getKENC = function() {
	var kencval = this.crypto.digest(Crypto.SHA_256, this.dkek.concat(new ByteString("00000001", HEX)));
	var kenc = new Key();
	kenc.setComponent(Key.AES, kencval);
	return kenc;
}



/**
 * Derive the message authentication key from the DKEK
 *
 * @type ByteString
 * @return the message authentication key
 */
DKEK.prototype.getKMAC = function() {
	var kmacval = this.crypto.digest(Crypto.SHA_256, this.dkek.concat(new ByteString("00000002", HEX)));
	var kmac = new Key();
	kmac.setComponent(Key.AES, kmacval);
	return kmac;
}



/**
 * Derive DKEK share encryption key from password
 *
 * @param {ByteString} password the password
 * @type ByteString
 * @return the derived key (32 Byte) concatenated with the IV (16 Byte)
 */
DKEK.deriveDKEKShareKey = function(salt, password) {
	var crypto = new Crypto();

	var d = new ByteString("", HEX);
	var keyivbuff = new ByteBuffer(48);

	for (j = 0; j < 3; j++) {
		print("Derive DKEK share encryption key (Step " + (j + 1) + " of 3)...");
		var nd = d.concat(password);
		d.clear();
		d = nd;

		var nd = d.concat(salt);
		d.clear();
		d = nd;

		try	{
			// Try the fast hash available in scdp4j 3.8
			var h = crypto.digest(Crypto.MD5, d, 10000000);
			d.clear();
			d = h;
		}
		catch(e) {
			// Fallback to slow variant
			for (var i = 10000000; i > 0; i--) {
				d = crypto.digest(Crypto.MD5, d);
			}
		}
		keyivbuff.append(d);
	}

	var keyiv = keyivbuff.toByteString();
	keyivbuff.clear();
	return keyiv;
}



/**
 * Encrypt a DKEK share
 *
 * @param {ByteString} keyshare the key share
 * @param {ByteString} password the password
 * @type ByteString
 * @return Encrypted DKEK share value
 */
DKEK.encryptKeyShare = function(keyshare, password) {
	assert(keyshare instanceof ByteString, "Argument keyshare must be ByteString");
	assert(keyshare.length == 32, "Argument keyshare must be 32 bytes");
	assert(password instanceof ByteString, "Argument password must be ByteString");

	var crypto = new Crypto();
	var salt = crypto.generateRandom(8);

	var keyiv = DKEK.deriveDKEKShareKey(salt, password);

	var k = new Key();
	k.setComponent(Key.AES, keyiv.bytes(0, 32));
	var iv = keyiv.bytes(32, 16);
	keyiv.clear();

	var plain = keyshare.concat(new ByteString("10101010101010101010101010101010", HEX));
	var cipher = crypto.encrypt(k, Crypto.AES_CBC, plain, iv);
	plain.clear();
	k.getComponent(Key.AES).clear();

	var blob = (new ByteString("Salted__", ASCII)).concat(salt).concat(cipher);
	return blob;
}



/**
 * Decrypt a DKEK share
 *
 * @param {ByteString} keyshare the encrypted key share as read from the .pbe file
 * @param {ByteString} password the password
 * @type ByteString
 * @return plain DKEK value
 */
DKEK.decryptKeyShare = function(keyshare, password) {
	assert(password instanceof ByteString, "Argument password must be ByteString");
	if ((keyshare.length != 64) || !keyshare.bytes(0, 8).toString(ASCII).equals("Salted__")) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Does not seem to be an encrypted key share");
	}

	var crypto = new Crypto();
	var salt = keyshare.bytes(8, 8);

	var keyiv = DKEK.deriveDKEKShareKey(salt, password);

	var k = new Key();
	k.setComponent(Key.AES, keyiv.bytes(0, 32));
	var iv = keyiv.bytes(32, 16);
	keyiv.clear();

	var plain = crypto.decrypt(k, Crypto.AES_CBC, keyshare.bytes(16), iv);
	k.getComponent(Key.AES).clear();

	if (!(new ByteString("10101010101010101010101010101010", HEX)).equals(plain.right(16))) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Decryption of DKEK failed. Wrong password ?");
	}

	var val = plain.left(32);
	plain.clear();

	return val;
}



/**
 * Test DKEK share encryption / decryption
 *
 * @private
 */
DKEK.testDKEK = function() {
	var crypto = new Crypto();
	var dkek = crypto.generateRandom(32);
	var password = new ByteString("Password", ASCII);
	var enc = DKEK.encryptKeyShare(dkek, password);
	print(enc);
	var plain = DKEK.decryptKeyShare(enc, password);
	assert(dkek.equals(plain), "Reference does not match");
}



/**
 * Wrap AES key
 *
 * @param {Key} key the secret key
 * @type ByteString
 * @return the secret key wrapped with the DKEK
 */
DKEK.prototype.encodeAESKey = function(key) {
	var bb = new ByteBuffer();
	bb.append(this.getKCV());

	assert(key.getType() == Key.SECRET)

	bb.append(15);

	var daid = new ByteString("2.16.840.1.101.3.4.1", OID);
	bb.append(ByteString.valueOf(daid.length, 2));
	bb.append(daid);

	var aaid = new ByteString("10 11 18 99", HEX);
	bb.append(ByteString.valueOf(aaid.length, 2));
	bb.append(aaid);

	bb.append(ByteString.valueOf(0, 2));
	bb.append(ByteString.valueOf(0, 2));

	var kb = new ByteBuffer(256);
	kb.append(this.crypto.generateRandom(8));

	kb.append(ByteString.valueOf(key.getSize() / 8, 2));
	kb.append(key.getComponent(Key.AES));

	var unpadded = kb.toByteString();
	var plain = unpadded.pad(Crypto.ISO9797_METHOD_2);
	unpadded.clear();

	if (plain.length & 0xF) {		// pad() padds to 8 byte blocks, but we 16 byte blocks
		var nplain = plain.concat(new ByteString("0000000000000000", HEX));
		plain.clear();
		plain = nplain;
	}

	var iv = new ByteString("00000000000000000000000000000000", HEX);
	var kenc = this.getKENC();
	var cipher = this.crypto.encrypt(kenc, Crypto.AES_CBC, plain, iv);
	kenc.getComponent(Key.AES).clear();
	plain.clear();

	bb.append(cipher);

	var kmac = this.getKMAC();
	bb.append(this.crypto.sign(kmac, Crypto.AES_CMAC, bb.toByteString()));
	kmac.getComponent(Key.AES).clear();

	return bb.toByteString();
}



/**
 * Wrap RSA or ECC key
 *
 * @param {Key} pri the private key in CRT format
 * @param {Key} pub the public key
 * @type Key
 * @return the private key in private exponent / modulus format
 */
DKEK.prototype.convertCRT2PEM = function(pri, pub) {
	var n = pub.getComponent(Key.MODULUS);
	var r = ByteString.valueOf(0).concat(n);
	r = r.sub(ByteString.valueOf(0).concat(pri.getComponent(Key.CRT_P)));
	r = r.sub(ByteString.valueOf(0).concat(pri.getComponent(Key.CRT_Q)));
	r = r.biAdd(ByteString.valueOf(1));
	var e = pub.getComponent(Key.EXPONENT);
	var d = e.modInverse(r);

	// Strip leading zero in private exponent
	if (d.byteAt(0) == 0) {
		d = d.bytes(1);
	}

	var nk = new Key();
	nk.setType(Key.PRIVATE);
	nk.setComponent(Key.MODULUS, n);
	nk.setComponent(Key.EXPONENT, d);
	return nk;
}



/**
 * Wrap RSA or ECC key
 *
 * @param {Key} pri the private key
 * @param {Key} pub the public key
 * @type ByteString
 * @return the private key wrapped with the DKEK
 */
DKEK.prototype.encodeKey = function(pri, pub) {
	var bb = new ByteBuffer();
	bb.append(this.getKCV());

	var mod = pub.getComponent(Key.MODULUS);
	if (mod) {
		// Convert RSA keys larger than 2048 bit and in CRT format
		if ((mod.length > 256) && pri.getComponent(Key.CRT_P)) {
			pri = this.convertCRT2PEM(pri, pub);
		}
		if (pri.getComponent(Key.CRT_P)) {
			bb.append(6);
		} else {
			bb.append(5);
		}
		var algo = new ByteString("id-TA-RSA-v1-5-SHA-256", OID);
	} else {
		bb.append(12);
		var algo = new ByteString("id-TA-ECDSA-SHA-256", OID);
	}

	bb.append(ByteString.valueOf(algo.length, 2));
	bb.append(algo);

	bb.append(ByteString.valueOf(0, 2));
	bb.append(ByteString.valueOf(0, 2));
	bb.append(ByteString.valueOf(0, 2));

	var kb = new ByteBuffer(4096);
	kb.append(this.crypto.generateRandom(8));

	if (pub.getComponent(Key.MODULUS)) {
		kb.append(ByteString.valueOf(pub.getComponent(Key.MODULUS).length << 3, 2));

		if (pri.getComponent(Key.CRT_P)) {
			var c = pri.getComponent(Key.CRT_DP1);
			kb.append(ByteString.valueOf(c.length, 2));
			kb.append(c);

			var c = pri.getComponent(Key.CRT_DQ1);
			kb.append(ByteString.valueOf(c.length, 2));
			kb.append(c);

			var c = pri.getComponent(Key.CRT_P);
			kb.append(ByteString.valueOf(c.length, 2));
			kb.append(c);

			var c = pri.getComponent(Key.CRT_PQ);
			kb.append(ByteString.valueOf(c.length, 2));
			kb.append(c);

			var c = pri.getComponent(Key.CRT_Q);
			kb.append(ByteString.valueOf(c.length, 2));
			kb.append(c);
		} else {
			var c = pri.getComponent(Key.EXPONENT);
			kb.append(ByteString.valueOf(c.length, 2));
			kb.append(c);
		}

		var c = pub.getComponent(Key.MODULUS);
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);

		var c = pub.getComponent(Key.EXPONENT);
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);
	} else {
		kb.append(ByteString.valueOf(pub.getComponent(Key.ECC_P).length << 3, 2));

		var c = pri.getComponent(Key.ECC_A);
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);

		var c = pri.getComponent(Key.ECC_B);
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);

		var c = pri.getComponent(Key.ECC_P);
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);

		var c = pri.getComponent(Key.ECC_N);
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);

		var c = (new ByteString("04", HEX)).concat(pri.getComponent(Key.ECC_GX)).concat(pri.getComponent(Key.ECC_GY));
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);

		var c = pri.getComponent(Key.ECC_D);
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);

		var c = (new ByteString("04", HEX)).concat(pub.getComponent(Key.ECC_QX)).concat(pub.getComponent(Key.ECC_QY));
		kb.append(ByteString.valueOf(c.length, 2));
		kb.append(c);
	}

	var unpadded = kb.toByteString();
	var plain = unpadded.pad(Crypto.ISO9797_METHOD_2);
	unpadded.clear();

	if (plain.length & 0xF) {		// pad() padds to 8 byte blocks, but we 16 byte blocks
		var nplain = plain.concat(new ByteString("0000000000000000", HEX));
		plain.clear();
		plain = nplain;
	}
	// print(plain);

	var iv = new ByteString("00000000000000000000000000000000", HEX);
	var kenc = this.getKENC();
	var cipher = this.crypto.encrypt(kenc, Crypto.AES_CBC, plain, iv);
	kenc.getComponent(Key.AES).clear();
	plain.clear();

	bb.append(cipher);

	var kmac = this.getKMAC();
	bb.append(this.crypto.sign(kmac, Crypto.AES_CMAC, bb.toByteString()));
	kmac.getComponent(Key.AES).clear();

//	this.dumpKeyBLOB(bb.toByteString());
	return bb.toByteString();
}

DKEK.prototype.encodeRSAKey = DKEK.prototype.encodeKey;



DKEK.prototype.dumpKeyBLOB = function(keyblob) {
	// Verify MAC on last 16 byte of blob

	var macok = this.crypto.verify(this.getKMAC(), Crypto.AES_CMAC, keyblob.bytes(0, keyblob.length - 16), keyblob.right(16));

	var keytype = keyblob.byteAt(8);
	print("Values from key blob:");
	print("---------------------");
	print("Checking the MAC      : " + (macok ? "Passed" : "Failed"));
	print("KCV                   : " + keyblob.bytes(0, 8).toString(HEX) + "    [Must match the KCV of the DKEK for import]");
	print("Key type              : " + keytype + "    [5=RSA, 6=RSA-CRT, 12=ECC, 15=AES]");

	var ofs = 9;
	var len = keyblob.bytes(ofs, 2).toUnsigned();

	if ((keytype == 15) && (keyblob.byteAt(ofs + 2) != 0x60)) {
		print("Default Algorithm ID  : " + keyblob.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")     [Wrong encoding in V3.0 to V3.2]");
	} else {
		print("Default Algorithm ID  : " + keyblob.bytes(ofs + 2, len).toString(OID) + " (" + len + ")     [Default algorithm]");
	}

	ofs += len + 2;
	var len = keyblob.bytes(ofs, 2).toUnsigned();

	print("Allowed Algorithm IDs : " + keyblob.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

	ofs += len + 2;
	var len = keyblob.bytes(ofs, 2).toUnsigned();

	print("Access Conditions     : " + keyblob.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")    [Not used]");

	ofs += len + 2;
	var len = keyblob.bytes(ofs, 2).toUnsigned();

	print("Key OID               : " + keyblob.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")    [Not used]");

	ofs += len + 2;


	// Decrypt key data

	var iv = new ByteString("00000000000000000000000000000000", HEX);
	var plainkey = this.crypto.decrypt(this.getKENC(), Crypto.AES_CBC, keyblob.bytes(ofs, keyblob.length - 16 - ofs), iv);
	// print(plainkey);

	print("Randomize             : " + plainkey.bytes(0, 8).toString(HEX) + "    [Random data prepended at export]");

	var keysize = plainkey.bytes(8, 2).toUnsigned();
	print("Key size              : " + keysize + "    [Key size in bits (ECC/RSA) or bytes (AES)]");

	var ofs = 10;

	if (keytype == 5) {
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Private Exponent      : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Modulus               : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Public Exponent       : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");
	} else if (keytype == 6) {
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("DP1 = d mod (p - 1)   : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("DQ1 = d mod (q - 1)   : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Prime factor p        : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("PQ = q - 1 mod p      : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Prime factor q        : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Modulus               : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Public Exponent       : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");
	} else if (keytype == 12) {
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("A                     : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("B                     : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Prime factor P        : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Order                 : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Generator G           : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Secret D              : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");

		ofs += len + 2;
		var len = plainkey.bytes(ofs, 2).toUnsigned();

		print("Public Point Q        : " + plainkey.bytes(ofs + 2, len).toString(HEX) + " (" + len + ")");
	} else if (keytype == 15) {
		print("Key Value             : " + plainkey.bytes(ofs, keysize).toString(HEX));
	} else {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Unknown key type " + keytype);
	}
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2016 CardContact Systems GmbH
 * |'##> <##'|  Schuelerweg 38, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SmartCard-HSM Crypto Provider for EAC-PKI
 */

var CVC					= require('scsh/eac/CVC').CVC;
var PublicKeyReference			= require('scsh/eac/PublicKeyReference').PublicKeyReference;
var SmartCardHSM			= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var SmartCardHSMKey			= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMKey;
var SmartCardHSMKeySpecGenerator	= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMKeySpecGenerator;



/**
 * Crypto Provider for EAC-PKI
 *
 * @param {SmartCardHSM} sc the associated SmartCard-HSM
 */
function EACCryptoProvider(sc, id) {
	this.sc = sc;
	this.id = id;
	sc.enumerateKeys();
}

exports.EACCryptoProvider = EACCryptoProvider;

EACCryptoProvider.CVCCACERTIFICATEPREFIX = 0xD0;
EACCryptoProvider.PATH_EF_FID = 0xD100;



/**
 * Replace SmartCard-HSM
 *
 * @param {SmartCardHSM} sc the new SmartCard-HSM
 */
EACCryptoProvider.prototype.setSmartCardHSM = function(sc) {
	this.sc = sc;
	sc.enumerateKeys();
}



/**
 * Get crypto object
 *
 * This method is part of the API.
 *
 * @type HSMCrypto
 * @return the HSMCrypto object
 */
EACCryptoProvider.prototype.getCrypto = function() {
	if (this.sc) {
		return this.sc.getCrypto();
	}
	return new Crypto();
}



/**
 * Transform path and certificate holder into a label
 *
 * @param {String} path the path
 * @param {PublicKeyReference} chr the certificate holder reference
 * @type String
 * @return the key label
 */
EACCryptoProvider.path2label = function(path, chr) {
	return path.substr(1) + chr.getSequenceNo();
}



/**
 * Get a handle for a private key stored on the SmartCard-HSM
 *
 * This method is part of the API.
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @param {ByteString} blob the optional key blob
 * @returns the private key or null if not found
 * @type Key
 */
EACCryptoProvider.prototype.getPrivateKey = function(path, chr, blob) {
	var label = EACCryptoProvider.path2label(path, chr);
	GPSystem.log(GPSystem.DEBUG, module.id, "Get private key " + label);

	return this.sc.getKey(label);
}



/**
 * Delete private key from SmartCard-HSM
 *
 * This method is part of the API.
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 */
EACCryptoProvider.prototype.deletePrivateKey = function(path, chr) {
	var label = EACCryptoProvider.path2label(path, chr);
	GPSystem.log(GPSystem.DEBUG, module.id, "Delete private key " + label);
	var key = this.sc.getKey(label);
	if (!key) {
		return;
	}

	var kid = key.getId();
	var fid = ByteString.valueOf((SmartCardHSM.KEYPREFIX << 8) + kid);
	this.sc.deleteFile(fid);

	try	{
		var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + kid);
		this.sc.deleteFile(fid);

		var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + kid);
		this.sc.deleteFile(fid);
	}
	catch(e) {
		// Ignore
	}
	this.sc.enumerateKeys();
}



/**
 * Generate a certificate request using a private key in the SmartCard-HSM
 *
 * This method is part of the API.
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @param {PublicKeyReference} currentchr the current CHR for the key in use
 * @param {PublicKeyReference} nextchr the next available CHR
 * @param {PublicKeyReference} car the CA at which this request is addressed
 * @param {boolean} forceInitial force an initial request, even if a current certificate is available
 * @param {boolean} signinitial sign with initial key (sequence = 00000)
 * @param {Key} keyspec a key object containing key parameters (e.g. EC Curve)
 * @param {ByteString} algo the terminal authentication algorithm object identifier
 * @return the certificate request
 * @type CVC
 */
EACCryptoProvider.prototype.generateRequest = function(path, currentchr, nextchr, car, forceinitial, signinitial, keyspec, algo) {

	var label = EACCryptoProvider.path2label(path, nextchr);
	GPSystem.log(GPSystem.DEBUG, module.id, "Generate private key " + label);

	if (car == null) {			// CAR is not optional in SmartCard-HSM generated requests
		car = nextchr;			// Use the CHR if no CAR defined.
	}

	var key = this.sc.getKey(label);
	if (key) {
		var newkid = key.getId();
	} else {
		var newkid = this.sc.determineFreeKeyId();
	}

	var kg = null;
	if (typeof(keyspec.getComponent(Key.ECC_P)) != "undefined") {
		var keysize = keyspec.getSize();
		if (keysize < 0) {
			var keysize = keyspec.getComponent(Key.ECC_P).length << 3;
		}
		if (keysize == 528) {
			keysize = 521;
		}
		var kg = new SmartCardHSMKeySpecGenerator(Crypto.EC, keyspec);
		var keydesc = SmartCardHSM.buildPrkDforECC(newkid, label, keysize);
	} else {
		var kg = new SmartCardHSMKeySpecGenerator(Crypto.RSA, keyspec.getSize());
		var keydesc = SmartCardHSM.buildPrkDforRSA(newkid, label, keyspec.getSize());
	}

	kg.defaultAlgo = algo;
	kg.setInnerCAR(car)
	kg.setCHR(nextchr);
	GPSystem.log(GPSystem.DEBUG, module.id, "key domain slot " + this.id);
	if (this.id >= 0) {
		GPSystem.log(GPSystem.DEBUG, module.id, "set key domain slot to " + this.id);
		kg.setKeyDomain(this.id);
	}
	var keydata = kg.encode();
	GPSystem.log(GPSystem.DEBUG, module.id, "gakp cdata");
	GPSystem.log(GPSystem.DEBUG, module.id, keydata);

	var reqbin = this.sc.generateAsymmetricKeyPair(newkid, 0, keydata);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());

	if (((currentchr == null) || forceinitial) && !signinitial) {
		var a = new ASN1(reqbin);
		a = a.get(0);
		var req = new CVC(a.getBytes());
	} else {
		var req = new CVC(reqbin);
	}

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);

	return req;
}


// ---- Functions below are used to synchronize Certificates between the certstore and SmartCard-HSM

/**
 * Read the systems path from the SmartCard-HSM
 *
 * The path is used to configure the namespace for the node to which the SmartCard-HSM is connected
 */
EACCryptoProvider.prototype.getPathFromDevice = function() {
	var fid = ByteString.valueOf(EACCryptoProvider.PATH_EF_FID);
	if (!this.sc.hasFile(fid)) {
		return;
	}
	var s = this.sc.readBinary();
	return s.toString(ASCII);
}



/**
 * Enumerate keys on the SmartCard-HSM
 *
 * The method returns an array of objects with the following properties
 *
 * label       String - The key name on the device
 * path        String - The label transformed into a PKI path
 * chr         PublicKeyReference - the CHR for the key
 * kid         Number - The key identifier on the device
 * cvc         CVC - the card verifiable certificate or undefined if none on the device
 *
 * @type Object[]
 * @return the list of keys on the device
 */
EACCryptoProvider.prototype.enumerateKeys = function() {
	var list = this.sc.enumerateKeys();

	var keylist = [];

	for each (label in list) {
		if (label.indexOf("/") < 0) {
			continue;
		}

		var pe = label.split("/");
		var chr = new PublicKeyReference(pe[pe.length - 1]);

		var path = "";
		for (var i = 0; i < pe.length - 1; i++) {
			path += "/" + pe[i];
		}
		path += "/" + chr.getHolder();

		var key = this.sc.getKey(label);
		var kid = key.getId();

		var cvc = undefined;
		var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + kid);
		if (this.sc.hasFile(fid)) {
			var certbin = this.sc.readBinary(fid);
			cvc = new CVC(certbin);
		}
		keylist.push( { label: label, path: path, chr: chr, kid: kid, cvc: cvc } );
	}

	return keylist;
}



/**
 * Enumerate CVC certificates for CAs
 *
 * @type CVC[]
 * @return the list of CA certificates on the device
 */
EACCryptoProvider.prototype.enumerateCertificates = function() {
	var fids = this.sc.enumerateObjects();

	var certlist = [];

	for (var i = 0; i < fids.length; i += 2) {
		if (fids.byteAt(i) == EACCryptoProvider.CVCCACERTIFICATEPREFIX) {
			var fid = fids.bytes(i, 2);
			try	{
				var certbin = this.sc.readBinary(fid);
				cvc = new CVC(certbin);
				certlist.push(cvc);
			}
			catch(e) {
				GPSystem.log(GPSystem.ERROR, module.id, "Trying to read certificate : " + e);
			}
		}
	}

	return certlist;
}



/**
 * Delete CA certificates on device
 */
EACCryptoProvider.prototype.deleteCertificates = function() {
	var fids = this.sc.enumerateObjects();

	for (var i = 0; i < fids.length; i += 2) {
		if (fids.byteAt(i) == EACCryptoProvider.CVCCACERTIFICATEPREFIX) {
			var fid = fids.bytes(i, 2);
			this.sc.deleteFile(fid);
		}
	}
}



/**
 * Delete certificate on device for a given key
 *
 * @param {Object} k the key as returned by enumerateKeys()
 */
EACCryptoProvider.prototype.deleteCertificateForKey = function(k) {
	var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + k.kid);
	this.sc.deleteFile(fid);
}



/**
 * Export CA and EE certificates
 *
 * This method erases all existing CA certificates on the device first
 *
 * @param {String} path the PKI path to be exported
 * @param {CVC[]} eecertlist the list of end-entity certificates
 * @param {CVC[]} cacertlist the list of CA certificates
 */
EACCryptoProvider.prototype.exportCertificates = function(path, eecertlist, cacertlist) {
	this.deleteCertificates();

	var keylist = this.enumerateKeys();

	var cnt = 0;
	for (var i = 0; i < keylist.length; i++) {
		var k = keylist[i];
		GPSystem.log(GPSystem.DEBUG, module.id, "Find matching certificate for " + k.label );

		for (j = 0; j < eecertlist.length; j++) {
			var cvc = eecertlist[j];

			if (cvc.getCHR().equals(k.chr)) {
				GPSystem.log(GPSystem.DEBUG, module.id, "Found matching certificate " + cvc );
				var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + k.kid);

				if (k.cvc) {
					if (!k.cvc.getBytes().equals(cvc.getBytes())) {
						this.sc.deleteFile(fid);
						this.sc.updateBinary(fid, 0, cvc.getBytes());
					} else {
						GPSystem.log(GPSystem.DEBUG, module.id, "Certificate already on device - not saved");
					}
				} else {
					this.sc.updateBinary(fid, 0, cvc.getBytes());
				}

				cnt++;
			}
		}
	}

	for (var i = 0; i < cacertlist.length; i++) {
		var cvc = cacertlist[i];
		var fid = ByteString.valueOf((EACCryptoProvider.CVCCACERTIFICATEPREFIX << 8) + i);
		GPSystem.log(GPSystem.DEBUG, module.id, "Writing to " + fid + " the certificate " + cvc );
		this.sc.updateBinary(fid, 0, cvc.getBytes());
		cnt++;
	}

	GPSystem.log(GPSystem.DEBUG, module.id, "Writing path " + path );
	var fid = ByteString.valueOf(EACCryptoProvider.PATH_EF_FID);
	try 	{
		this.sc.deleteFile(fid);
	}
	catch(e) {
		// Ignore
	}

	this.sc.updateBinary(fid, 0, new ByteString(path, ASCII));

	return cnt;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A card verifiable certificate store using a SmartCard-HSM as key store
 */

// Imports

var PublicKeyReference	 = require('scsh/eac/PublicKeyReference').PublicKeyReference;
var CVC					 = require('scsh/eac/CVC').CVC;
var CVCertificateStore	 = require('scsh/eac/CVCertificateStore').CVCertificateStore;
var SmartCardHSM		 = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var SmartCardHSMKey		 = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMKey;
var CVCCA				 = require('scsh/eac/CVCCA').CVCCA;



/**
 * Create a CV certificate store using a SmartCard-HSM as secure key store
 *
 * @class CV certificate store with SmartCard-HSM as secure key store
 * @constructor
 * @param {DAOFactory} daof the factory that can create data access objects for persistent information
 * @param {SmartCardHSM} sc the SmartCard-HSM access object
 */
function HSMCVCertificateStore(daof, sc) {
	CVCertificateStore.call(this, daof);
	if (sc) {
		this.sc = sc;
		sc.enumerateKeys();
	}
}

HSMCVCertificateStore.prototype = Object.create(CVCertificateStore.prototype);
HSMCVCertificateStore.constructor = HSMCVCertificateStore;

exports.HSMCVCertificateStore = HSMCVCertificateStore;



HSMCVCertificateStore.prototype.setSmartCardHSM = function(sc) {
	this.sc = sc;
	sc.enumerateKeys();
}



/**
 * Get crypto object
 *
 * @type HSMCrypto
 * @return the HSMCrypto object
 */
HSMCVCertificateStore.prototype.getCrypto = function() {
	if (this.sc) {
		return this.sc.getCrypto();
	}
	return new Crypto();
}



/**
 * Transform path and certificate holder into a label
 *
 * @param {String} path the path
 * @param {PublicKeyReference} chr the certificate holder reference
 * @type String
 * @return the key label
 */
HSMCVCertificateStore.path2label = function(path, chr) {
	return path.substr(1) + chr.getSequenceNo();
}



/**
 * Get a private key in the certificate store. Overrides method in CVCertificateStore.
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @returns the private key or null if not found
 * @type Key
 */
HSMCVCertificateStore.prototype.getPrivateKey = function(path, car) {
	var label = HSMCVCertificateStore.path2label(path, car);
	print("Get private key " + label);

	return this.sc.getKey(label);
}



/**
 * Generate a certificate request using a private key in the SmartCard-HSM
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
 * @param {PublicKeyReference} car the CA at which this request is addressed
 * @param {boolean} forceInitial force an initial request, even if a current certificate is available
 * @param {boolean} signinitial sign with initial key (sequence = 00000)
 * @param {Key} keyspec a key object containing key parameters (e.g. EC Curve)
 * @param {ByteString} algo the terminal authentication algorithm object identifier
 * @return the certificate request
 * @type CVC
 */
HSMCVCertificateStore.prototype.generateRequest = function(path, car, forceinitial, signinitial, keyspec, algo, countryseq) {

	// Determine CHR
	var currentchr = this.getCurrentCHR(path);
	var nextchr = this.getNextCHR(path, countryseq);
	var label = HSMCVCertificateStore.path2label(path, nextchr);

	if (car == null) {			// CAR is not optional in SmartCard-HSM generated requests
		car = nextchr;			// Use the CHR if no CAR defined.
	}

	var signkid = 0;
	if ((currentchr != null) && !forceinitial) {
		var curlabel = HSMCVCertificateStore.path2label(path, currentchr);
		var key = this.sc.getKey(curlabel);
		if (key == null) {
			throw new GPError("HSMCVCertificateStore", GPError.DEVICE_ERROR, 0, "Key " + curlabel + " not found");
		}
		var signkid = key.getId();
		var outerCAR = currentchr;
	}

	var key = this.sc.getKey(label);
	if (key) {
		var newkid = key.getId();
	} else {
		var newkid = this.sc.determineFreeKeyId();
	}

	if (typeof(keyspec.getComponent(Key.ECC_P)) != "undefined") {
		var keysize = keyspec.getSize();
		print("1:Keysize " + keysize);
		if (keysize < 0) {
			var keysize = keyspec.getComponent(Key.ECC_P).length << 3;
			print("2:Keysize " + keysize);
		}
		var keydata = SmartCardHSM.buildGAKPwithECC(car, algo, nextchr, keyspec, outerCAR);
		var keydesc = SmartCardHSM.buildPrkDforECC(newkid, label, keysize);
	} else {
		var keydata = SmartCardHSM.buildGAKPwithRSA(car, algo, nextchr, keyspec.getSize(), outerCAR);
		var keydesc = SmartCardHSM.buildPrkDforRSA(newkid, label, keyspec.getSize());
	}

	var reqbin = this.sc.generateAsymmetricKeyPair(newkid, signkid, keydata);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());

	if (((currentchr == null) || forceinitial) && !signinitial) {
		var a = new ASN1(reqbin);
		a = a.get(0);
		var req = new CVC(a.getBytes());
	} else {
		var req = new CVC(reqbin);
	}

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);

	return req;
}



/**
 * Get a private key in the certificate store. Overrides method in CVCertificateStore.
 *
 * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
 * @param {PublicKeyReference} chr the public key reference for this key
 * @returns the private key or null if not found
 * @type Key
 */
HSMCVCertificateStore.prototype.deletePrivateKey = function(path, car) {
	var label = HSMCVCertificateStore.path2label(path, car);
	print("Get private key " + label);

	return this.sc.getKey(label);
}



HSMCVCertificateStore.testPath = GPSystem.mapFilename("testca", GPSystem.CWD);

HSMCVCertificateStore.test = function() {
	var card = new Card(_scsh3.reader);

	var sc = new SmartCardHSM(card);
	sc.verifyUserPIN(new ByteString("648219", ASCII));
	var cs = new HSMCVCertificateStore(HSMCVCertificateStore.testPath + "/cvca", sc);

	var crypto = sc.getCrypto();

	var cvca = new CVCCA(crypto, cs, null, null, "/UTCVCA");

	// Create a new request
	var car = new PublicKeyReference("UTCVCA00000");

	var req = cvca.generateRequest(car, false);
	print("Request: " + req);
	print(req.getASN1());

	assert(req.verifyWith(crypto, req.getPublicKey()));

	// Create self-signed or link certificate based on request
	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
	var cert = cvca.generateCertificate(req, policy);
	print("Certificate: " + cert);
	print(cert.getASN1());

	// Import certificate into store, making it the most current certificate
	cvca.storeCertificate(cert);

	// Generate additional self-signed root certificate
	// This must be done after the link certificate has been imported
	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
	var cert = cvca.generateCertificate(req, policy);
	print("Certificate: " + cert);
	print(cert.getASN1());

	// Import certificate into store, making it the most current certificate
	cvca.storeCertificate(cert);
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Class implementing a key store for X.509 certificate and private keys stored on a SmartCard-HSM
 */

var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;
var SmartCardHSM = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var SmartCardHSMKey = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMKey;
var CVC = require("scsh/eac/CVC").CVC;



/**
 * Create a simple key store front-end
 *
 * @class Class implementing some simple access functions to generate key pairs and store certificates
 * @param {SmartCardHSM} sc the SmartCard-HSM card service
 */
function HSMKeyStore(sc) {
	this.sc = sc;
	this.chr = new PublicKeyReference("UTNULL00000");
	this.car = new PublicKeyReference("UTNULL00000");
}

exports.HSMKeyStore = HSMKeyStore;



/**
 * Generate a key pair
 *
 * @param {String} label the label under which the key pair shall be stored
 * @param {SmartCardHSMKeySpecGenerator} initialized key spec generator
 * @type CVC
 * @return the authenticated request
 */
HSMKeyStore.prototype.generateKeyPair = function(label, spec) {

	if ((spec.keytype != Crypto.RSA) && (spec.keytype != Crypto.EC)) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Unsupported key type");
	}

	var key = this.sc.getKey(label);
	if (key) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Key with label " + label + " does already exist");
	}

	var newkid = this.sc.determineFreeKeyId();
	var reqbin = this.sc.generateAsymmetricKeyPair(newkid, 0, spec.encode());
	var req = new CVC(reqbin);
	var keyid = req.determineKeyIdentifier();

	switch(spec.keytype) {
		case Crypto.RSA:
			var keydesc = SmartCardHSM.buildPrkDforRSA(keyid, label, spec.keysize);
			break;
		case Crypto.EC:
			var keydesc = SmartCardHSM.buildPrkDforECC(keyid, label, spec.domainParameter.getSize());
			break;
		default:
			throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Unsupported key type");
	}

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);
	return req;
}



/**
 * Generate a symmetric key
 *
 * @param {String} label the label under which the key shall be stored
 * @param {SmartCardHSMKeySpecGenerator} initialized key spec generator
 * @type ByteString
 * @return the new key wrapped with the symmetric key defined with SmartCardHSMKeySpecGenerator.setWrappingKey()
 */
HSMKeyStore.prototype.generateKey = function(label, spec) {

	if (spec.keytype != Crypto.AES) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Unsupported key type");
	}

	var key = this.sc.getKey(label);
	if (key) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Key with label " + label + " does already exist");
	}

	var newkid = this.sc.determineFreeKeyId();

	var genalg;
	switch(spec.keysize) {
		case 128: genalg = 0xB0; break;
		case 192: genalg = 0xB1; break;
		case 256: genalg = 0xB2; break;
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Unsupported key size");
	}

	var wrapbin = this.sc.generateSymmetricKey(newkid, genalg, spec.encode());

	var deralg;
	if (spec.algorithms.find(ByteString.valueOf(SmartCardHSM.ALG_CMAC)) >= 0) {
		deralg = SmartCardHSM.ALG_CMAC;
	} else if (spec.algorithms.find(ByteString.valueOf(SmartCardHSM.ALG_DERIVE_SP800_56C)) >= 0) {
		deralg = SmartCardHSM.ALG_DERIVE_SP800_56C;
	}

	var keyid;
	if (deralg) {
		keyid = this.sc.deriveSymmetricKey(newkid, deralg, new ByteString("KeyCheckValue", ASCII)).left(8);
	} else {
		keyid = ByteString.valueOf(newkid);
	}

	var keydesc = SmartCardHSM.buildSKDforAES(keyid, label, spec.keysize);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);
	return wrapbin;
}



/**
 * Generate a RSA key pair
 *
 * @param {String} label the label under which the key pair shall be stored
 * @param {Number} keysize the key size in bits (1024, 1536 or 2048)
 */
HSMKeyStore.prototype.generateRSAKeyPair = function(label, keysize) {

	var key = this.sc.getKey(label);
	if (key) {
		var newkid = key.getId();
	} else {
		var newkid = this.sc.determineFreeKeyId();
	}

	var algo = new ByteString("id-TA-RSA-v1-5-SHA-256", OID);

	var keydata = SmartCardHSM.buildGAKPwithRSA(this.car, algo, this.chr, keysize);
	var keydesc = SmartCardHSM.buildPrkDforRSA(newkid, label, keysize);

	var reqbin = this.sc.generateAsymmetricKeyPair(newkid, 0, keydata);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());
	var req = new CVC(reqbin);

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);
	return req;
}



/**
 * Generate an ECDSA key pair
 *
 * @param {String} label the label under which the key pair shall be stored
 * @param {String} curve the curve object identifier
 */
HSMKeyStore.prototype.generateECCKeyPair = function(label, curve) {

	var key = this.sc.getKey(label);
	if (key) {
		var newkid = key.getId();
	} else {
		var newkid = this.sc.determineFreeKeyId();
	}

	var algo = new ByteString("id-TA-ECDSA-SHA-256", OID);

	var dp = new Key();
	dp.setComponent(Key.ECC_CURVE_OID, new ByteString(curve, OID));

	var keydata = SmartCardHSM.buildGAKPwithECC(this.car, algo, this.chr, dp);
//	print("Keysize: " + dp.getSize());
	var keydesc = SmartCardHSM.buildPrkDforECC(newkid, label, dp.getSize());

	var reqbin = this.sc.generateAsymmetricKeyPair(newkid, 0, keydata);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());
	var req = new CVC(reqbin);

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);

	return req;
}



/**
 * Import a key blob, meta data and certificate
 *
 * @param {ByteString} keywrap the binary key in SmartCard-HSM format
 */
HSMKeyStore.prototype.importKey = function(keywrap) {

	var a = new ASN1(keywrap);

	var wrap = a.get(0).value;
	var id = this.sc.determineFreeKeyId();

	if (id < 0) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Key identifier exhausted");
	}

	this.sc.unwrapKey(id, wrap);

	var hkey = new SmartCardHSMKey(this.sc, id);

	if (a.elements > 1) {
		var meta = a.get(1);
		this.sc.updateBinary(ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + id), 0, meta.getBytes());
		hkey.setDescription(meta);
	}

	var bin = new ByteString("", HEX);
	for (var i = 2; i < a.elements; i++) {
		var cert = a.get(i);
		bin = bin.concat(cert.getBytes());
	}
	this.sc.updateBinary(ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + id), 0, bin);

	this.sc.addKeyToMap(hkey);

	return hkey;
}



/**
 * Export a key blob, meta data and certificate
 *
 * @param {String/Number/Key} labelOrIdOrKey the label, id or object of the key to be removed
 * @type ByteString
 * @return the blob with key, meta data and certificate
 */
HSMKeyStore.prototype.exportKey = function(labelOrIdOrKey) {

	var key = labelOrIdOrKey;
	if (!(key instanceof SmartCardHSMKey)) {
		key = this.getKey(labelOrIdOrKey);
	}

	if (key) {
		var id = key.getId();
	} else {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Could not find a key with label or id " + labelOrIdOrKey);
	}

	var wrap = this.sc.wrapKey(id);
	var a = new ASN1(0x30, new ASN1(0x04, wrap));

	try	{
		var meta = this.sc.readBinary(ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + id));
		a.add(new ASN1(meta));

		var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + id);
		if (this.sc.hasFile(fid)) {
			var cert = this.sc.readBinary(fid);

			// Copy list of CVCs
			if ((cert.byteAt(0) == 0x67) || (cert.byteAt(0) == 0x7F)) {
				var list = SmartCardHSM.parseCertificateList(cert);
				for (var i = 0; i < list.length; i++) {
					a.add(list[i].getASN1());
				}
				if ((cert.byteAt(0) == 0x67) && (list.length == 1)) {
					print("Adding device and DICA certificate to export");
					var devAutCert = this.sc.readBinary(SmartCardHSM.C_DevAut);
					var list = SmartCardHSM.parseCertificateList(devAutCert);
					for (var i = 0; i < list.length; i++) {
						a.add(list[i].getASN1());
					}
				}
			} else {
				a.add(new ASN1(cert));
			}
		}
	}
	catch(e) {
		print("Ignoring meta data or certificate: " + e);
	}

	return a.getBytes();
}



/**
 * Import a RSA key blob
 *
 * @param {String} label the key label
 * @param {ByteString} keyblob the binary key in SmartCard-HSM format
 * @param {Number} keysize in bits
 * @param {Number/ByteString} keyid the optional PKCS#15 key identifier.
 * Default value is the next free key id of the SmartCard-HSM.
 * @type SmartCardHSMKey
 */
HSMKeyStore.prototype.importRSAKey = function(label, keyblob, keysize, keyid) {
	var keytype = keyblob.byteAt(8);
	if ((keytype != 5) && (keytype != 6)) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "keyblob does not contain a RSA key");
	}

	var key = this.sc.getKey(label);
	if (key) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "A key with label " + label + " does already exist");
	}
	var newkid = this.sc.determineFreeKeyId();

	this.sc.unwrapKey(newkid, keyblob);

	if (typeof(keyid) == "undefined") {
		keyid = newkid;
	}

	var keydesc = SmartCardHSM.buildPrkDforRSA(keyid, label, keysize);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);

	return hkey;
}



/**
 * Import an ECC key blob
 *
 * @param {String} label the key label
 * @param {ByteString} keyblob the binary key in SmartCard-HSM format
 * @param {Number} keysize in bits
 * @param {Number/ByteString} keyid the optional PKCS#15 key identifier.
 * Default value is the next free key id of the SmartCard-HSM.
 * @type SmartCardHSMKey
 */
HSMKeyStore.prototype.importECCKey = function(label, keyblob, keysize, keyid) {
	var keytype = keyblob.byteAt(8);
	if (keytype != 12) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "keyblob does not contain an ECC key");
	}
	var key = this.sc.getKey(label);
	if (key) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "A key with label " + label + " does already exist");
	}
	var newkid = this.sc.determineFreeKeyId();

	this.sc.unwrapKey(newkid, keyblob);

	if (typeof(keyid) == "undefined") {
		keyid = newkid;
	}

	var keydesc = SmartCardHSM.buildPrkDforECC(keyid, label, keysize);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);

	return hkey;
}



/**
 * Import an AES key blob
 *
 * @param {String} label the key label
 * @param {ByteString} keyblob the binary key in SmartCard-HSM format
 * @param {Number} keysize in bits
 * @param {ByteString} keyid the PKCS#15 key id (CKA_ID)
 * @type
 */
HSMKeyStore.prototype.importAESKey = function(label, keyblob, keysize, keyid) {

	var key = this.sc.getKey(label);
	if (key) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "A key with label " + label + " does already exist");
	}
	var newkid = this.sc.determineFreeKeyId();

	this.sc.unwrapKey(newkid, keyblob);

	if (typeof(keyid) == "undefined") {
		keyid = newkid;
	}

	var keydesc = SmartCardHSM.buildSKDforAES(keyid, label, keysize);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + newkid);
	this.sc.updateBinary(fid, 0, keydesc.getBytes());

	var hkey = new SmartCardHSMKey(this.sc, newkid);
	hkey.setDescription(keydesc);
	this.sc.addKeyToMap(hkey);

	return hkey;
}



/**
 * Store certificate under given label
 *
 * @param {String/Number/Key} labelOrIdOrKey the label, id or object of the key for which the certificate should be stored
 * @param {X509} cert the certificate
 */
HSMKeyStore.prototype.storeEndEntityCertificate = function(labelOrIdOrKey, cert) {
	var key = labelOrIdOrKey;
	if (!(key instanceof SmartCardHSMKey)) {
		key = this.getKey(labelOrIdOrKey);
	}

	if (key) {
		var kid = key.getId();
	} else {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Could not find a key with label " + label);
	}

	var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + kid);
	if (!(cert instanceof ByteString)) {
		cert = cert.getBytes();
	}
	this.sc.updateBinary(fid, 0, cert);
}



/**
 * Store CA certificate under given label
 *
 * @param {String} label the label under which the certificate shall be stored
 * @param {X509} cert the certificate
 */
HSMKeyStore.prototype.storeCACertificate = function(label, cert) {
	this.sc.enumerateCACertificates();
	var id = this.sc.caidmap[label];
	if (id == undefined) {
		id = this.sc.determineFreeCAId();
	}

	var fid = ByteString.valueOf((SmartCardHSM.CACERTIFICATEPREFIX << 8) + id);
	this.sc.updateBinary(fid, 0, cert.getBytes());

	var descr = SmartCardHSM.buildCertDescription(label, null, cert.getPublicKey(), fid);
	var fid = ByteString.valueOf((SmartCardHSM.CERTDPREFIX << 8) + id);
	this.sc.updateBinary(fid, 0, descr.getBytes());
	this.sc.addCACertificateToMap(cert, id, label);
}



/**
 * Delete CA certificate with given label
 *
 * @param {String} label the label of certificate to be removed
 */
HSMKeyStore.prototype.deleteCACertificate = function(label) {
	var cert = this.sc.getCACertificate(label);

	if (!cert) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Could not find a certificate with label " + label);
	}

	var fid = ByteString.valueOf((SmartCardHSM.CERTDPREFIX << 8) + cert.id);
	this.sc.deleteFile(fid);
	var fid = ByteString.valueOf((SmartCardHSM.CACERTIFICATEPREFIX << 8) + cert.id);
	this.sc.deleteFile(fid);
	this.sc.enumerateCACertificates();
}



/**
 * Delete key and certificate with given label
 *
 * @param {String/Number/Key} labelOrIdOrKey the label, id or object of the key to be removed
 */
HSMKeyStore.prototype.deleteKey = function(labelOrIdOrKey) {
	var key = labelOrIdOrKey;
	if (!(key instanceof SmartCardHSMKey)) {
		key = this.getKey(labelOrIdOrKey);
	}

	if (key) {
		var kid = key.getId();
	} else {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Could not find a key with label " + labelOrIdOrKey);
	}

	var fid = ByteString.valueOf((SmartCardHSM.KEYPREFIX << 8) + kid);
	this.sc.deleteFile(fid);

	try	{
		var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + kid);
		this.sc.deleteFile(fid);

		var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + kid);
		this.sc.deleteFile(fid);
	}
	catch(e) {
		// Ignore
	}

	this.enumerateKeys();
}



/**
 * Return list of keys
 *
 * @type String[]
 * @return the list of key names
 */
HSMKeyStore.prototype.enumerateKeys = function() {
	return this.sc.enumerateKeys();
}



/**
 * Check if key with label exists
 *
 * @param {String / Number} the key label or id
 * @type Boolean
 * @return true if key exists
 */
HSMKeyStore.prototype.hasKey = function(labelOrId) {
	var key = this.sc.getKey(labelOrId);
	return key != null;
}



/**
 * Get key for given label
 *
 * @param {String / Number} the key label or id
 * @type Key
 * @return the key
 */
HSMKeyStore.prototype.getKey = function(labelOrId) {
	var key = this.sc.getKey(labelOrId);
	if (!key) {
		throw new GPError("HSMKeyStore", GPError.INVALID_DATA, 0, "Could not find a key with label/id " + labelOrId);
	}
	return key;
}



/**
 * Check if key has a certificate
 *
 * @param {String/Number/Key} labelOrIdOrKey the certificate label, id or key
 * @type Boolean
 * @return true of a certificate is present
 */
HSMKeyStore.prototype.hasCertificate = function(labelOrIdOrKey) {
	var key = labelOrIdOrKey;
	if (!(key instanceof SmartCardHSMKey)) {
		key = this.getKey(labelOrIdOrKey);
	}
	var kid = key.getId();
	var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + kid);
	return this.sc.hasFile(fid);
}



/**
 * Get raw certificate for given label
 *
 * @param {String/Number/Key} labelOrIdOrKey the certificate label, id or key
 * @type ByteString
 * @return the certificate
 */
HSMKeyStore.prototype.getCertificate = function(labelOrIdOrKey) {
	var key = labelOrIdOrKey;
	if (!(key instanceof SmartCardHSMKey)) {
		key = this.getKey(labelOrIdOrKey);
	}
	var kid = key.getId();
	var fid = ByteString.valueOf((SmartCardHSM.EECERTIFICATEPREFIX << 8) + kid);
	var certbin = this.sc.readBinary(fid);
	return certbin;
}



/**
 * Get certificate for given label
 *
 * @param {String/Number/Key} labelOrIdOrKey the certificate label, id or key
 * @type X509
 * @return the certificate
 */
HSMKeyStore.prototype.getEndEntityCertificate = function(labelOrIdOrKey) {
	var certbin = this.getCertificate(labelOrIdOrKey);
	return new X509(certbin);
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SmartCard-HSM Public Key Authentication Support
 */

var CVC = require("scsh/eac/CVC").CVC;
var PublicKeyReference = require("scsh/eac/PublicKeyReference").PublicKeyReference;



/**
 * Manage Public Key Authentication
 *
 * @class Class providing support for public key authentication
 * @constructor
 * @param {SmartCardHSM} sc the SmartCard-HSM used as target for PKA
 * @param {ByteString} deviceId the device id as returned by getCHR().getBytes() for the device certificate
 */
function ManagePKA(sc, deviceId) {

	this.sc = sc;
	this.deviceId = deviceId;
	this.card = sc.card;

	this.numberOfPublicKeys = 0; 		// Dummy
	this.missingPublicKeys = 0;
	this.requiredPublicKeysForAuthentication = 0;
	this.authenticatedPublicKeys = 0;
}

exports.ManagePKA = ManagePKA;



/**
 * Update internal status
 * @private
 */
ManagePKA.prototype.updateStatus = function(status) {
	this.numberOfPublicKeys = status.byteAt(0);
	this.missingPublicKeys = status.byteAt(1);
	this.requiredPublicKeysForAuthentication = status.byteAt(2);
	this.authenticatedPublicKeys = status.byteAt(3);
}



/**
 * Check if public key authentication is active for device
 *
 * @type boolean
 * @return true if supported and active
 */
ManagePKA.prototype.isActive = function() {
	var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x54, 0x00, 0x00, 0);
	if (this.card.SW != 0x9000) {
		return false;
	}
	this.updateStatus(status);
	return true;
}



/**
 * Check if registered public keys can be enumerated
 *
 * @type boolean
 * @return true if enumeration is supported
 */
ManagePKA.prototype.canEnumeratePublicKeys = function() {
	this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x54, 0x02, 0x00, 0, [0x9000, 0x9001, 0x6A88, 0x6A86 ] );
	return this.card.SW != 0x6A86;
}



ManagePKA.KEY_PRESENT = 1;
ManagePKA.KEY_NOT_FOUND = 2;
ManagePKA.KEY_ALREADY_AUTHENTICATED = 3;

/**
 * Check status of public key
 *
 * @param {PublicKeyReference} chr the public key reference under which the public key is registered
 * @type Number
 * @return ManagePKA.KEY_PRESENT if key is registered in SmartCard-HSM, ManagePKA.KEY_NOT_FOUND if not.
 *         ManagePKA.KEY_ALREADY_AUTHENTICATED is returned if the public key has already been authenticated
 */
ManagePKA.prototype.checkKeyStatus = function(chr) {
	var pukrefdo = new ASN1(0x83, chr.getBytes());
	var pukref = pukrefdo.getBytes();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x22, 0x81, 0xA4, pukref, [0x9000, 0x6A88, 0x6985 ]);

	switch(this.card.SW) {
		case 0x9000: return ManagePKA.KEY_PRESENT;
		case 0x6A88: return ManagePKA.KEY_NOT_FOUND;
		case 0x6985: return ManagePKA.KEY_ALREADY_AUTHENTICATED;
	}
}



/**
 * Perform authentication with source SmartCard-HSM and key on that device
 *
 * @param {SmartCardHSM} srcsc the SmartCard-HSM containing the private key for authentication
 * @param {Key} key the private key
 */
ManagePKA.prototype.performAuthentication = function(srcsc, key) {
	var challenge = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x84, 0x00, 0x00, 8, [0x9000]);

	var input = this.deviceId.concat(challenge);

	var crypto = srcsc.getCrypto();

	var signature = crypto.sign(key, Crypto.ECDSA_SHA256, input);

	signature = CVC.unwrapSignature(signature, 32);
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x82, 0x00, 0x00, signature, [0x9000]);

	var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x54, 0x00, 0x00, 0, [0x9000] );
	this.updateStatus(status);
}



/**
 * Get number of public keys (m)
 *
 * @type Number
 * @return the number of public keys (m)
 */
ManagePKA.prototype.getNumberOfPublicKeys = function() {
	return this.numberOfPublicKeys;
}



/**
 * Get number of public keys missing for complete setup
 *
 * @type Number
 * @return the number of public keys missing for complete setup
 */
ManagePKA.prototype.getMissingPublicKeys = function() {
	return this.missingPublicKeys;
}



/**
 * Get number of keys required for successfull authentication (n)
 *
 * @type Number
 * @return the number of keys required for successfull authentication (n)
 */
ManagePKA.prototype.getRequiredPublicKeysForAuthentication = function() {
	return this.requiredPublicKeysForAuthentication;
}


/**
 * Get number of keys already authenticated in this session
 *
 * @type Number
 * @return the number of keys already authenticated in this session
 */
ManagePKA.prototype.getAuthenticatedPublicKeys = function() {
	return this.authenticatedPublicKeys;
}



/**
 * Describe current status in human readable form
 *
 * @type String
 * @return the status
 */
ManagePKA.prototype.describeStatus = function() {
	if (this.missingPublicKeys) {
		return "" + this.missingPublicKeys + " missing key(s) in " + this.requiredPublicKeysForAuthentication + " of " + this.numberOfPublicKeys + " public key authentication";
	} else {
		return "" + this.authenticatedPublicKeys + " authenticated public key(s) in " + this.requiredPublicKeysForAuthentication + " of " + this.numberOfPublicKeys + " scheme";
	}
}



/**
 * Enumerate names (CHR) or registered public keys
 *
 * @type Object
 * @return Object with property chr containing the PublicKeyReference and with property
 *         status containing ManagePKA.KEY_PRESENT if a key is registered at that slot,
 *         ManagePKA.KEY_NOT_FOUND if not. ManagePKA.KEY_ALREADY_AUTHENTICATED is returned
 *         if the public key has already been authenticated.
 */
ManagePKA.prototype.enumeratePublicKeys = function() {
	var list = [];

	for (var i = 0; i < this.numberOfPublicKeys; i++) {
		var bin = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x54, 0x02, i, 0, [0x9000, 0x9001, 0x6A88 ] );

		if (this.card.SW == 0x6A88) {
			list.push( { status: ManagePKA.KEY_NOT_FOUND } );
		} else {
			var chr = new PublicKeyReference(bin);
			if (this.card.SW == 0x9000) {
				status = ManagePKA.KEY_PRESENT;
			} else {
				status = ManagePKA.KEY_ALREADY_AUTHENTICATED;
			}
			list.push( { chr: chr, status: status} );
		}
	}
	return list;
}



/**
 * Validate and register public key
 *
 * @param {CVC} pk public key in CSR format from card
 * @param {CVC} devcert device certificate
 * @param {CVC} dicacert device issuer certificate
 * @param {Number} replace the id of the key to be replaced (0-based) or undefined
 */
ManagePKA.prototype.registerPublicKey = function(pk, devcert, dicacert, replace) {
	if (pk.getPublicKey().getSize() != 256) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Authentication key must be a 256 bit EC key");
	}

	this.sc.verifyCertificate(dicacert);
	this.sc.verifyCertificate(devcert);

	var car = pk.getOuterCAR().getBytes();

	var pukrefdo = new ASN1(0x83, car);
	var pukref = pukrefdo.getBytes();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x22, 0x81, 0xB6, pukref, [0x9000]);

	// Extract value of 67
	var tl = new TLVList(pk.getBytes(), TLV.EMV);
	var t = tl.index(0);
	var v = t.getValue();

	if (typeof(replace) == "number") {
		var p1 = 1;
		var p2 = replace;
	} else {
		var p1 = 0;
		var p2 = 0;
	}

	var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x54, p1, p2, v, 0, [0x9000] );
	this.updateStatus(status);
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview PaperKey Encoder and Decoder
 */



/**
 * Create a PaperKey encoder/decoder
 *
 * @class Encoder / Decoder for PaperKeys
 * @constructor
 */
function PaperKeyEncoding() {
	this.base  = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
	this.alpha = "ABCDEFGH!JKLMN*PQRSTUVWXYZabcdefghijk%mnopqrstuvwxyz0123456789+/";
}

exports.PaperKeyEncoding = PaperKeyEncoding;

PaperKeyEncoding.E_INV_LENGTH = "Input does not contain 12 characters";
PaperKeyEncoding.E_WRONG_SEGMENT = "Wrong segment number";
PaperKeyEncoding.E_CHECK_FAILED = "Check value failed";



/**
 * Encode an 8 byte segment in human readable form.
 *
 * Based on BASE64 encoding with visually confusable characters replaced.
 *
 * I is replaced by !
 * O is replaced by *
 * l is replaced by %
 *
 * A LUHN-64 character is appended.
 *
 * A segment identifier is encoded in 2 bit at the end of the encoded 64 bit string.
 *
 * @param {Number} segment
 * @param {ByteString} data
 * @type String
 * @return the encoded string
 */
PaperKeyEncoding.prototype.encodeSegment = function(segment, data) {
	if (typeof(segment) != "number" || segment < 0) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "segment must be a positive number");
	}

	if (!(data instanceof ByteString)) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "data must be ByteString");
	}

	if (data.length != 8) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "data must be 8 byte");
	}

	var bb = new ByteBuffer();

	// Append segment number's less 2 bit
	data = data.concat(ByteString.valueOf((segment & 3) << 6));

//	print(data.toString(BASE64));

	var cs = 0;
	var cf = 1;

	for (var i = 0; i < data.length; i += 3) {
		var a = data.bytes(i, 3).toUnsigned();
		var s = (a >> 18) & 0x3F;

		cs += s << cf;
//		print("s = " + s + " cf = " + cf + " cs = " + cs);
		cf = cf ^ 1;

		bb.append(this.alpha.charAt(s));

		s = (a >> 12) & 0x3F;

		cs += s << cf;
//		print("s = " + s + " cf = " + cf + " cs = " + cs);
		cf = cf ^ 1;

		bb.append(this.alpha.charAt(s));

		s = (a >> 6) & 0x3F;

		cs += s << cf;
//		print("s = " + s + " cf = " + cf + " cs = " + cs);
		cf = cf ^ 1;

		bb.append(this.alpha.charAt(s));

		if (i <= 3) {
			s = a & 0x3F;

			cs += s << cf;
//			print("s = " + s + " cf = " + cf + " cs = " + cs);
			cf = cf ^ 1;

			bb.append(this.alpha.charAt(s));
		}
	}

	bb.append(this.alpha.charAt(cs & 0x3F));

	return bb.toString(ASCII);
}



/**
 * Decode an 8 byte segment from 12 input characters.
 *
 * Characters not in the alphabet are ignored.
 *
 * Throws GPError with GPError.INVALID_LENGTH if the input does not contain at least 12 usable characters.
 * Throws GPError with GPError.SIGNATURE_FAILED if the check digit based validation fails.
 * Throws GPError with GPError.INVALID_DATA if the segment number does not match the expected value.
 *
 * @param {Number} segment
 * @param {String} str the user input
 * @type ByteString
 * @return the 8 byte segment
 */
PaperKeyEncoding.prototype.decodeSegment = function(segment, str) {
	if (typeof(segment) != "number" || segment < 0) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "segment must be a positive number");
	}

	if (typeof(str) != "string") {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "str must be String");
	}

//	print(str);
	var bb = new ByteBuffer();

	var cs = 0;
	var cf = 1;
	var a = 0;
	var p = 0;

	for (var i = 0; i < 12; i++) {
		do	{
			var ch = str.charAt(p++);
			if (ch == "") {
				throw new GPError(module.id, GPError.INVALID_LENGTH, 0, PaperKeyEncoding.E_INV_LENGTH);
			}
			var v = this.alpha.indexOf(ch);
			if (v < 0) {
				var v = this.base.indexOf(ch);
			}
		} while (v < 0);

		cs += v << cf;
//		print("v = " + v + " cf = " + cf + " cs = " + cs);
		cf = cf ^ 1;

		a = (a << 6) | v;

		if ((i + 1 & 3) == 0) {
			bb.append(ByteString.valueOf(a, 3));
			a = 0;
		}
	}

	bb.append(ByteString.valueOf(a, 3));

	cs -= v << (1 - cf);
	if (v != (cs & 0x3F)) {
		throw new GPError(module.id, GPError.SIGNATURE_FAILED, 0, PaperKeyEncoding.E_CHECK_FAILED);
	}

//	print(bb);
	if ((bb.byteAt(8) >> 6) != (segment & 3)) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, PaperKeyEncoding.E_WRONG_SEGMENT);
	}

	var r = bb.toByteString().left(8);
	bb.clear();
	return r;
}



/**
 * Format a segment by splitting the input after each 4 characters and inserting " - "
 *
 * @param {String} str the unformatted string
 * @type String
 * @return the formatted string
 */
PaperKeyEncoding.formatSegment = function(str) {
	var res = "";
	var j = 0;
	while(j < str.length) {
		if (j > 0) {
			res += " - ";
		}
		res += str.substr(j, 4);
		j += 4;
	}
	return res;
}



/**
 * Dump a key
 *
 * @param {ByteString} data the key value (length must be a multiple of 8)
 * @type String
 * @return the formatted key with 3 groups of 4 digits per line
 */
PaperKeyEncoding.dumpKey = function(data) {
	if (!(data instanceof ByteString)) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "data must be ByteString");
	}

	if (data.length & 7 != 0) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "data must be a multiple of 8 byte");
	}

	var pc = new PaperKeyEncoding();

	var segments = data.length >> 3;

	var str = "";
	for (var i = 0; i < segments; i++) {
		var s = pc.encodeSegment(i, data.bytes(i * 8, 8));
		str += PaperKeyEncoding.formatSegment(s) + "\n";
	}
	return str;
}



PaperKeyEncoding.test = function() {
	var pc = new PaperKeyEncoding();

	var ref = ByteString.valueOf(0, 8);
	var enc = pc.encodeSegment(0, ref);
	assert("AAAAAAAAAAAA" == enc, "All zero seg 0 encoding failed");
	var res = pc.decodeSegment(0, enc);
	assert(ref.equals(res), "Decoding failed");

	var enc = pc.encodeSegment(3, ref);
	assert("AAAAAAAAAADG" == enc, "All zero seg 3 encoding failed");
	var res = pc.decodeSegment(3, enc);
	assert(ref.equals(res), "Decoding failed");

	var enc = pc.encodeSegment(7, ref);
	assert("AAAAAAAAAADG" == enc, "All zero seg 7 encoding failed");

	try {
		var res = pc.decodeSegment(6, enc);
		assert(false, "Did not detect wrong segment");
	}
	catch(e) {
		assert(e.error == GPError.INVALID_DATA, "Must be GPError.INVALID_DATA");
		assert(e.message == PaperKeyEncoding.E_WRONG_SEGMENT, "Must be PaperKeyEncoding.E_WRONG_SEGMENT");
	}

	try {
		var res = pc.decodeSegment(7, "AAAAAAAAAADA");
		assert(false, "Did not detect wrong check digit");
	}
	catch(e) {
		assert(e.error == GPError.SIGNATURE_FAILED, "Must be GPError.SIGNATURE_FAILED");
		assert(e.message == PaperKeyEncoding.E_CHECK_FAILED, "Must be PaperKeyEncoding.E_CHECK_FAILED");
	}

	var ref = ref.not();
	var enc = pc.encodeSegment(0, ref);
	assert("//////////8p" == enc, "All one seg 0 encoding failed");
	var res = pc.decodeSegment(0, enc);
	assert(ref.equals(res), "Decoding failed");
	var enc = pc.encodeSegment(3, ref);
	assert("///////////v" == enc, "All one seg 3 encoding failed");
	var res = pc.decodeSegment(3, enc);
	assert(ref.equals(res), "Decoding failed");

	var ref = ByteString.valueOf(0x04).concat(ByteString.valueOf(0, 7));
	var enc = pc.encodeSegment(0, ref);
	assert("BAAAAAAAAAAC" == enc, "First one encoding failed");
	var res = pc.decodeSegment(0, enc);
	assert(ref.equals(res), "Decoding failed");

	var ref = ByteString.valueOf(0x10, 2).concat(ByteString.valueOf(0, 6));
	var enc = pc.encodeSegment(0, ref);
	assert("ABAAAAAAAAAB" == enc, "Second one encoding failed");
	var res = pc.decodeSegment(0, enc);
	assert(ref.equals(res), "Decoding failed");

	var ref = ByteString.valueOf(0xFC).concat(ByteString.valueOf(0, 7));
	var enc = pc.encodeSegment(0, ref);
	assert("/AAAAAAAAAA+" == enc, "First max encoding failed");
	var res = pc.decodeSegment(0, enc);
	assert(ref.equals(res), "Decoding failed");

	var ref = ByteString.valueOf(0x03F0, 2).concat(ByteString.valueOf(0, 6));
	var enc = pc.encodeSegment(0, ref);
	assert("A/AAAAAAAAA/" == enc, "Second max encoding failed");
	var res = pc.decodeSegment(0, enc);
	assert(ref.equals(res), "Decoding failed");



	var crypto = new Crypto();

	var kv = crypto.generateRandom(32);
	print(PaperKeyEncoding.dumpKey(kv));

	while (true) {
		var kv = crypto.generateRandom(8);
		var str = PaperKeyEncoding.formatSegment(pc.encodeSegment(0, kv));
		print(str);
		var inp = Dialog.prompt("Enter segment " + str, "");
		if (inp == null) {
			throw new Error("User abort");
		}
		try	{
			var val = pc.decodeSegment(0, inp);
			if (!kv.equals(val)) {
				throw new GPError(module.id, GPError.INVALID_DATA, 0, "Entered value does not match key");
			}
		}
		catch(e) {
			Dialog.prompt(e.message);
		}
	}
}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview SmartCard-HSM Card Service
 */

// Imports
var CVC = require("scsh/eac/CVC").CVC;
var PublicKeyReference = require("scsh/eac/PublicKeyReference").PublicKeyReference;
var ChipAuthentication = require("scsh/eac/ChipAuthentication").ChipAuthentication;
var PKCS1 = require("scsh/pkcs/PKCS1").PKCS1;
var DKEK = require("scsh/sc-hsm/DKEK").DKEK;
var Bitmap = require("scsh/utils/Bitmap").Bitmap;



/**
 * Create a SmartCard-HSM access object
 * @class Class implementing support for SmartCard-HSM access
 * @constructor
 * @param {Card} card the card object
 */
function SmartCardHSM(card) {
	this.card = card;

	this.maxCAPDU = 1232;			// APDU buffer limit in JCOP 3
	this.maxRAPDU = 1232;
	this.limitedAPDUTransport = false;	// The APDU transport does not support the full response side

	if (card.readerName.indexOf("Secure Flash Card") == 0) {
		this.maxCAPDU = 478;
		this.maxRAPDU = 506;
		this.limitedAPDUTransport = true;
	} else if (card.readerName.indexOf("REINER SCT cyberJack") == 0) {
		this.maxCAPDU = 1014;
		this.maxRAPDU = 1014;
		this.limitedAPDUTransport = true;
	} else if (card.readerName.indexOf("ACS APG8201") == 0) {
		this.maxCAPDU = 1141;
		this.maxRAPDU = 1141;
		this.limitedAPDUTransport = true;
	} else if (card.readerName.indexOf("Gemalto IDBridge") == 0) {
		this.maxCAPDU = 262;
		this.maxRAPDU = 499;
		this.limitedAPDUTransport = true;
	}

	if (typeof(this.card.maxReaderCAPDU) != "undefined") {
		if (this.card.maxReaderCAPDU < this.maxCAPDU) {
			this.maxCAPDU = this.card.maxReaderCAPDU;
			this.limitedAPDUTransport = true;
		}
	}

	if (typeof(this.card.maxReaderRAPDU) != "undefined") {
		if (this.card.maxReaderRAPDU < this.maxRAPDU) {
			this.maxRAPDU = this.card.maxReaderRAPDU;
			this.limitedAPDUTransport = true;
		}
	}

	// 9 Byte CLA|INS|P1|P2|LcEx||LeEx
	// 19 Byte SM overhead (Tag 85, 3 byte length, 1 byte padding indicator, tag 97 02 <Le> and tag 8E 08 <mac>
	// 1 byte required for padding
	this.maxCData = Math.floor((this.maxCAPDU - 9 - 19) / 16) * 16 - 1;
//	print("maxCData=" + this.maxCData);

	// 19 Byte SM overhead (Tag 85, 3 byte length, 1 byte padding indicator, tag 99 02 SW1SW2 and tag 8E 08 <mac>
	// 2 byte SW1/SW2
	// 1 byte required for padding
	this.maxRData = Math.floor((this.maxRAPDU - 18 - 2) / 16) * 16 - 1;
//	print("maxRData=" + this.maxRData);

	this.useExternalHashInECDSA = false;	// Disable hashing in card if affected by bug #93

	// Check if SmartCard-HSM is already selected and authenticated
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x20, 0x00, 0x81, 0);

	if (this.card.SW != 0x9000) {
		this.logout();		// Select application
	}

	this.namemap = [];
	this.idmap = [];
}

exports.SmartCardHSM = SmartCardHSM;


SmartCardHSM.C_DevAut = new ByteString("2F02", HEX);
SmartCardHSM.EF_TokenInfo = new ByteString("2F03", HEX);
SmartCardHSM.EF_StaticTokenInfo = new ByteString("CB00", HEX);

SmartCardHSM.PrK_DevAut = 0;
SmartCardHSM.PIN_User = 0x81;

SmartCardHSM.PRKDPREFIX = 0xC4;
SmartCardHSM.KDDPREFIX = 0xC7;
SmartCardHSM.CERTDPREFIX = 0xC8;
SmartCardHSM.DODPREFIX = 0xC9;
SmartCardHSM.CACERTIFICATEPREFIX = 0xCA;
SmartCardHSM.KEYMETAPREFIX = 0xCB;	// Changed in V2.3
SmartCardHSM.READONLYDATAPREFIX = 0xCB;	// Starting with V2.3
SmartCardHSM.KEYPREFIX = 0xCC;
SmartCardHSM.CONFIDENTIALDATAPREFIX = 0xCD;
SmartCardHSM.EECERTIFICATEPREFIX = 0xCE;
SmartCardHSM.PUBLICDATAPREFIX = 0xCF;

SmartCardHSM.ALGORITHMS = [];

// Symmetric
SmartCardHSM.ALG_CBC_ENC = 0x10;
SmartCardHSM.ALG_CBC_DEC = 0x11;
SmartCardHSM.ALG_CMAC = 0x18;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_CBC_ENC] = "CBC_ENC";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_CBC_DEC] = "CBC_DEC";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_CMAC] = "CMAC";


// RSA Block
SmartCardHSM.ALG_RSA_SIGN_RAW = 0x20;
SmartCardHSM.ALG_RSA_DECRYPT_RAW = 0x21;
SmartCardHSM.ALG_RSA_DECRYPT_V15 = 0x22;
SmartCardHSM.ALG_RSA_DECRYPT_OAEP = 0x23;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_RAW] = "RSA_RAW";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_DECRYPT_RAW] = "RSA_DECRYPT_RAW";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_DECRYPT_V15] = "RSA_DECRYPT_V15";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_DECRYPT_OAEP] = "RSA_DECRYPT_OAEP";


// RSA Sign with hash and PKCS#1 V1.5
SmartCardHSM.ALG_RSA_SIGN_V15_SHA1 = 0x31;
SmartCardHSM.ALG_RSA_SIGN_V15_SHA256 = 0x33;
SmartCardHSM.ALG_RSA_SIGN_V15_SHA512 = 0x35;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_V15_SHA1] = "RSA_V15_SHA1";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_V15_SHA256] = "RSA_V15_SHA256";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_V15_SHA512] = "RSA_V15_SHA512";


// RSA Sign with hash and PSS
SmartCardHSM.ALG_RSA_SIGN_PSS = 0x40;
SmartCardHSM.ALG_RSA_SIGN_PSS_SHA1 = 0x41;
SmartCardHSM.ALG_RSA_SIGN_PSS_SHA256 = 0x43;
SmartCardHSM.ALG_RSA_SIGN_PSS_SHA512 = 0x45;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_PSS] = "RSA_PSS";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_PSS_SHA1] = "RSA_PSS_SHA1";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_PSS_SHA256] = "RSA_PSS_SHA256";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_RSA_SIGN_PSS_SHA512] = "RSA_PSS_SHA512";


// ECDSA
SmartCardHSM.ALG_ECDSA = 0x70;
SmartCardHSM.ALG_ECDSA_SHA1 = 0x71;
SmartCardHSM.ALG_ECDSA_SHA224 = 0x72;
SmartCardHSM.ALG_ECDSA_SHA256 = 0x73;
SmartCardHSM.ALG_ECDSA_SHA384 = 0x74;
SmartCardHSM.ALG_ECDSA_SHA512 = 0x75;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDSA] = "ECDSA";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDSA_SHA1] = "ECDSA_SHA1";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDSA_SHA224] = "ECDSA_SHA224";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDSA_SHA256] = "ECDSA_SHA256";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDSA_SHA384] = "ECDSA_SHA384";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDSA_SHA512] = "ECDSA_SHA512";


// ECDH
SmartCardHSM.ALG_ECDH = 0x80;
SmartCardHSM.ALG_ECDHAutPuk = 0x83;
SmartCardHSM.ALG_ECDHXKEK = 0x84;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDH] = "ECDH";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDHAutPuk] = "ECDH_AUTPUK";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_ECDHXKEK] = "ECDH_XKEK";


// Wrap
SmartCardHSM.ALG_WRAP = 0x92;
SmartCardHSM.ALG_UNWRAP = 0x93;
SmartCardHSM.ALG_REPLACE = 0x94;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_WRAP] = "WRAP";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_UNWRAP] = "UNWRAP";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_REPLACE] = "REPLACE";


// Derive
SmartCardHSM.ALG_DERIVE_EC_KEY = 0x98;
SmartCardHSM.ALG_DERIVE_SP800_56C = 0x99;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_DERIVE_EC_KEY] = "DERIVE_EC";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_DERIVE_SP800_56C] = "DERIVE_SP800_56C";


SmartCardHSM.ALG_SIGN_DEFAULT = 0xA0;
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_SIGN_DEFAULT] = "SIGN_DEFAULT";


// Key Generation
SmartCardHSM.ALG_GENERATE_AES128 = 0xB0;
SmartCardHSM.ALG_GENERATE_AES192 = 0xB1;
SmartCardHSM.ALG_GENERATE_AES256 = 0xB2;

SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_GENERATE_AES128] = "GENERATE_AES128";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_GENERATE_AES192] = "GENERATE_AES192";
SmartCardHSM.ALGORITHMS[SmartCardHSM.ALG_GENERATE_AES256] = "GENERATE_AES256";


SmartCardHSM.ALGOMAP = {};
for (var i = 0; i < SmartCardHSM.ALGORITHMS.length; i++) {
	var name = SmartCardHSM.ALGORITHMS[i];
	if (typeof(name) != "undefined") {
		SmartCardHSM.ALGOMAP[name] = i;
	}
}


SmartCardHSM.rootCerts = {
	DESRCACC100001: new CVC(new ByteString("7F218201B47F4E82016C5F290100420E44455352434143433130303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A78641046D025A8026CDBA245F10DF1B72E9880FFF746DAB40A43A3D5C6BEBF27707C30F6DEA72430EE3287B0665C1EAA6EAA4FA26C46303001983F82BD1AA31E03DA0628701015F200E44455352434143433130303030317F4C10060B2B0601040181C31F0301015301C05F25060102010100095F24060302010100085F37409DBB382B1711D2BAACB0C623D40C6267D0B52BA455C01F56333DC9554810B9B2878DAF9EC3ADA19C7B065D780D6C9C3C2ECEDFD78DEB18AF40778ADF89E861CA", HEX)),
	UTSRCACC100001: new CVC(new ByteString("7F218201B47F4E82016C5F290100420E55545352434143433130303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104A041FEB2FD116B2AD19CA6B7EACD71C9892F941BB88D67DCEEC92501F070011957E22122BA6C2CF5FF02936F482E35A6129CCBBA8E9383836D3106879C408EF08701015F200E55545352434143433130303030317F4C10060B2B0601040181C31F0301015301C05F25060102010100095F24060302010100085F3740914DD0FA00615C44048D1467435400423A4AD1BD37FD98D6DE84FD8037489582325C72956D4FDFABC6EDBA48184A754F37F1BE5142DD1C27D66569308CE19AAF", HEX))
}

SmartCardHSM.devAutPuk = new Key();
SmartCardHSM.devAutPuk.setType(Key.PUBLIC);
SmartCardHSM.devAutPuk.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
SmartCardHSM.devAutPuk.setComponent(Key.ECC_QX, new ByteString("4C01EA36C5065FF47E8F0676A77CDCED6C8F745E6784F7807F5520124F81ED05", HEX));
SmartCardHSM.devAutPuk.setComponent(Key.ECC_QY, new ByteString("4112DCE471CA003442830A10C75B31F9BFADD60628F47131628C7254AD8B956A", HEX));



/**
 * Remove Root Certificate of Development SRCA
 *
 * Always call this on a productive system
 */
SmartCardHSM.disableUTSRCA = function() {
	delete SmartCardHSM.rootCerts.UTSRCACC100001;
}



/**
 * Set the list of trusted SRCA certificates
 *
 * @param {ByteString[]} srcalist the list of binary encoded SRCA certificates
 */
SmartCardHSM.setTrustedSRCACertificates = function(srcalist) {
	SmartCardHSM.rootCerts = {};
	for (var i = 0; i < srcalist.length; i++) {
		var cert = new CVC(srcalist[i]);
		GPSystem.log(GPSystem.DEBUG, module.id, "Adding as trusted SRCA certificate : " + cert);
		SmartCardHSM.rootCerts[cert.getCHR().toString()] = cert;
	}
}



/**
 * Parse list of CVC in a binary blob
 *
 * @param {ByteString} a binary blob (e.g an EF) containing concatenated CVCs
 * @type CVC[]
 * @return the list of CVCs
 */
SmartCardHSM.parseCertificateList = function(bin) {
	var a = new ASN1((new ASN1(0x30, bin)).getBytes());
	var list = [];
	for (var i = 0; i < a.elements; i++) {
		try	{
			var cvc = new CVC(a.get(i));
			list.push(cvc);
		}
		catch(e) {
			print("Index " + i + " is not a CVC");
			print(a.get(i));
		}
	}
	return list;
}



/**
 * Validate device certificate chain
 *
 * @param {Crypto} crypto the crypto provider to use
 * @param {ByteString} devAutCert the device certificate chain read from EF.C_DevAut
 * @type Key
 * @return the device authentication public key
 */
SmartCardHSM.validateCertificateChain = function(crypto, devAutCert) {
	// Device device certificate
	var cvc = new CVC(devAutCert);
	GPSystem.log(GPSystem.DEBUG, module.id, "Device Certificate    : " + cvc);

	if (cvc.getCAR().toString() == "DECA00001") {		// CA used for development version up to 0.17
		if (typeof(SmartCardHSM.rootCerts.UTSRCACC100001) == "undefined") {
			GPSystem.log(GPSystem.DEBUG, module.id, "Device certificate DECA00001 disabled");
			return null;
		}
		if (!cvc.verifyWith(crypto, SmartCardHSM.devAutPuk)) {
			GPSystem.log(GPSystem.DEBUG, module.id, "Device certificate verification failed for CAR=DECA00001");
			return null;
		}
		var path = "/" + cvc.getCAR().getHolder() + "/" + cvc.getCHR().getHolder();
		return { devicecert: cvc, publicKey:cvc.getPublicKey(), path:path };
	}

	// Decode device issuer certificate
	var len = cvc.getASN1().size;
	var cvc = new CVC(devAutCert.left(len));
	var dica = new CVC(devAutCert.bytes(len));
	GPSystem.log(GPSystem.DEBUG, module.id, "Device Issuer CA      : " + dica);

	if (typeof(SmartCardHSM.rootCerts[dica.getCAR()]) == "undefined") {
		GPSystem.log(GPSystem.DEBUG, module.id, "Unknown or disabled root CA " + dica.getCAR());
		return null;
	}

	// Determine root certificateSmartCardHSM.rootCerts[dica.getCAR()]
	var srca = SmartCardHSM.rootCerts[dica.getCAR()];
	GPSystem.log(GPSystem.DEBUG, module.id, "SmartCard-HSM Root CA : " + srca);

	// Validate chain
	var srcapuk = srca.getPublicKey();
	var oid = srca.getPublicKeyOID();
	if (!dica.verifyWith(crypto, srcapuk, oid)) {
		GPSystem.log(GPSystem.DEBUG, module.id, "DICA certificate not verified");
		return null;
	}

	var dicapuk = dica.getPublicKey(srcapuk);
	if (!cvc.verifyWith(crypto, dicapuk, oid)) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Device certificate verification failed");
		return null;
	}

	var path = "/" + srca.getCHR().getHolder() + "/" + dica.getCHR().getHolder() + "/" + cvc.getCHR().getHolder();
	return { srca: srca, dica: dica, devicecert: cvc, publicKey:cvc.getPublicKey(srcapuk), path:path };
}



/**
 * Decode algorithm list and return string array with names
 *
 * @param {ByteString} list the algorithm list, e.g. as returned in the key meta data
 * @type String[]
 * @return the list of algorithm names
 */
SmartCardHSM.decodeAlgorithmList = function(list) {
	var a = [];
	for (var i = 0; i < list.length; i++) {
		a.push(SmartCardHSM.ALGORITHMS[list.byteAt(i)]);
	}

	return a;
}



/**
 * Parse and encode the algorithm list containing either algorithm ids or names
 *
 * @param {String | String[]} list the list of algorithms
 * @type ByteString
 * @return the algorithm list
 */
SmartCardHSM.encodeAlgorithmList = function(list) {
	if (typeof(list) == "string") {
		if (list.indexOf(".") != -1) {
			list = list.split(".");
		} else {
			list = list.split(",");
		}
	}

	var bb = new ByteBuffer();

	for (var i = 0; i < list.length; i++) {
		var e = list[i].trim();
		var id = NaN;
		if (e.length == 2) {
			id = parseInt(e, 16);
		}
		if (isNaN(id)) {
			var id = SmartCardHSM.ALGOMAP[e.toUpperCase()];
			if (typeof(id) == "undefined") {
				print("Unknown keyword or number " + list[i]);
				return null;
			}
		}
		bb.append(id);
	}

	return bb.toByteString();
}



/**
 * Return a string describing the SmartCard-HSM Version
 *
 * @type String
 * @return the version string
 */
SmartCardHSM.prototype.getVersionInfo = function() {
	if (typeof(this.major) == "undefined") {
		return "Version unknown";
	}

	var str = "Version " + this.major + "." + this.minor;

	if (typeof(this.platform) != "undefined") {
		switch(this.platform) {
			case 0: str += " on JCOP"; break;
			case 1: str += " Demo on JCOP"; break;
			case 2: str += " on JCOP 2.4.1r3"; break;
			case 3: str += " on JCOP 2.4.2r3"; break;
			case 4: str += " on JCOP 2.4.2r1"; break;
			case 5: str += " on JCOP 3"; break;
			case 6: str += " on JCOP 4"; break;
			case 7: str += " on JCOP 4.5"; break;
		}
	}
	return str;
}



/**
 * Return the native OCF SmartCardHSMCardService
 *
 * @type de.cardcontact.opencard.service.smartcardhsm.SmartCardHSMCardService
 * @return the OCF SmartCardHSMCardService
 */
SmartCardHSM.prototype.getNativeCardService = function() {
	if (this.nativeCardService) {
		return this.nativeCardService;
	}
	this.nativeCardService = this.card.getCardService("de.cardcontact.opencard.service.smartcardhsm.SmartCardHSMCardService");

	return this.nativeCardService;
}



/**
 * Validate device certificate chain
 *
 * @param {Crypto} crypto the crypto provider to use
 * @type Key
 * @return the device authentication public key
 */
SmartCardHSM.prototype.validateCertificateChain = function(crypto) {
	// Read concatenation of both certificates
	var devAutCert = this.readBinary(SmartCardHSM.C_DevAut);
	var chain = SmartCardHSM.validateCertificateChain(crypto, devAutCert);
	if (chain == null) {
		return null;
	}
	return chain.publicKey;
}



/**
 * Open a secure channel using device authentication
 *
 * @param {Crypto} crypto the crypto provider to use
 * @param {Key} devAuthPK the device authentication public key
 * @param {Number} Key.AES or Key.DES to request AES or DES secure messaging (Default probe)
 * @type ISOSecureChannel
 * @return the initialized secure channel
 */
SmartCardHSM.prototype.openSecureChannel = function(crypto, devAuthPK, smtype) {

	var type;

	if (smtype) {
		type = smtype;
	} else {
		type = Key.AES;
	}

	if (type == Key.DES) {
		var protocol = new ByteString("id-CA-ECDH-3DES-CBC-CBC", OID);
	} else {
		var protocol = new ByteString("id-CA-ECDH-AES-CBC-CMAC-128", OID);
	}

	// Try AES first and fallback to DES is not supported by card

	var bb = new ByteBuffer();
	bb.append(new ASN1(0x80, protocol).getBytes());

	this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x41, 0xA4, bb.toByteString(), [0x9000, 0x6A80]);

	if (this.card.SW == 0x6A80) {
		if (smtype) {
			throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 3, "Requested secure messaging not supported");
		}

		type = Key.DES;

		var protocol = new ByteString("id-CA-ECDH-3DES-CBC-CBC", OID);

		var bb = new ByteBuffer();
		bb.append(new ASN1(0x80, protocol).getBytes());

		this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO, 0x00, 0x22, 0x41, 0xA4, bb.toByteString(), [0x9000]);
	}

	var ca = new ChipAuthentication(crypto, protocol, devAuthPK);	// For domain parameter
	ca.noPadding = true;
	ca.generateEphemeralCAKeyPair();

	var ephemeralPublicKeyIfd = ca.getEphemeralPublicKey();

	var dado = new ASN1(0x7C, new ASN1(0x80, ephemeralPublicKeyIfd));

	var dadobin = this.card.sendSecMsgApdu(Card.CPRO|Card.CENC|Card.RPRO|Card.RENC, 0x00, 0x86, 0x00, 0x00, dado.getBytes(), 0, [0x9000]);

//	GPSystem.log(GPSystem.DEBUG, module.id, dadobin);

	var dado = new ASN1(dadobin);
	assert(dado.tag == 0x7C);
	assert(dado.elements == 2);
	var nonceDO = dado.get(0);
	assert(nonceDO.tag == 0x81);
	var nonce = nonceDO.value;

	var authTokenDO = dado.get(1);
	assert(authTokenDO.tag == 0x82);
	var authToken = authTokenDO.value;

	var enc = new ByteString("04", HEX);
	enc = enc.concat(devAuthPK.getComponent(Key.ECC_QX));
	enc = enc.concat(devAuthPK.getComponent(Key.ECC_QY));

	GPSystem.log(GPSystem.DEBUG, module.id, "Encoded CA public key: " + enc);
	ca.performKeyAgreement(enc, nonce);
	var result = ca.verifyAuthenticationToken(authToken);

	if (!result) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Authentication token invalid");
		throw new Error("Authentication token invalid");
	}
	GPSystem.log(GPSystem.DEBUG, module.id, "Authentication token valid");

	if (type == Key.DES) {
		var sm = new IsoSecureChannel(crypto);
		sm.setEncKey(ca.kenc);
		sm.setMacKey(ca.kmac);
		sm.setMACSendSequenceCounter(new ByteString("0000000000000000", HEX));
	} else {
		var sm = new IsoSecureChannel(crypto, IsoSecureChannel.SSC_SYNC_ENC_POLICY);
		sm.setEncKey(ca.kenc);
		sm.setMacKey(ca.kmac);
		sm.setMACSendSequenceCounter(new ByteString("00000000000000000000000000000000", HEX));
	}

	this.card.setCredential(sm);
	this.smactive = true;
	return sm;
}



/**
 * Update transparent EF referenced by file identifier
 *
 * @param {ByteString} fid the two byte file identifier
 * @param {Number} offset the offset into the EF
 * @param {ByteString} data the data to write
 */
SmartCardHSM.prototype.updateBinary = function(fid, offset, data) {
	if (typeof(offset) == "undefined") {
		offset = 0;
	}

	var bytesLeft = data.length;
	var sent = 0;

	// 8 bytes are required for T54(4) and T53(4)
	var blksize = this.maxCData - 8;

	while (bytesLeft > 0) {
		var toSend = bytesLeft >= blksize ? blksize : bytesLeft;

		var t54 = new ASN1(0x54, ByteString.valueOf(offset, 2));
		var t53 = new ASN1(0x53, data.bytes(sent, toSend));

		var cdata = t54.getBytes().concat(t53.getBytes());
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xD7, fid.byteAt(0), fid.byteAt(1), cdata, [0x9000]);

		bytesLeft -= toSend;
		offset += toSend;
		sent += toSend;
	}
}



/**
 * Read transparent EF referenced by file identifier
 *
 * @param {ByteString} fid the two byte file identifier (optional - use currently selected EF if absent)
 * @param {Number} offset the offset into the EF (optional)
 * @param {Number} length the number of byte to read (optional)
 * @type ByteString
 * @return the data read from the EF
 */
SmartCardHSM.prototype.readBinary = function(fid, offset, length) {
	if (typeof(offset) == "undefined") {
		offset = 0;
	}
	if (typeof(fid) == "undefined") {
		fid = new ByteString("0000", HEX);
	}

	var rsp = new ByteBuffer();
	do	{
		var t54 = new ASN1(0x54, ByteString.valueOf(offset, 2));

		if (length || this.limitedAPDUTransport || this.smactive) {				// Is a length defined ?
			var le = (!length || (length > this.maxRData)) ? this.maxRData: length;		// Truncate if larger than maximum APDU size ?
		} else {
			var le = this.maxRAPDU <= 256 ? 0 : 65536;					// Get all with Le=0 in either short or extended APDU mode
		}

		var data = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xB1, fid.byteAt(0), fid.byteAt(1), t54.getBytes(), le, [0x9000, 0x6282]);

		if (data.length == 0) {
			break;
		}

		rsp.append(data);
		offset += data.length;

		if (length) {					// Length was defined, see if we already got everything
			length -= data.length;
			if (length <= 0) {
				break;
			}
		}
	} while ((this.card.SW == 0x9000) || (this.card.SW == 0x6282));

	return rsp.toByteString();
}



/**
 * Select the file or key an return the FCP
 *
 * @param {ByteString} fid the two byte file object identifier
 */
SmartCardHSM.prototype.selectFile = function(fid) {
	var fcp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xA4, 0x00, 0x04, fid, 0, [0x9000]);
	return fcp;
}



/**
 * Try selecting the file to see if is present
 *
 * @param {ByteString} fid the two byte file object identifier
 */
SmartCardHSM.prototype.hasFile = function(fid) {
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xA4, 0x00, 0x04, fid, 0);
	return this.card.SW == 0x9000;
}



/**
 * Delete file system object (EF or key)
 *
 * @param {ByteString} fid the two byte file object identifier
 */
SmartCardHSM.prototype.deleteFile = function(fid) {
	return this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xE4, 0x02, 0x00, fid, [0x9000]);
}



/**
 * Strips leading zeros of a ByteString
 *
 * @param {ByteString} value the ByteString value
 * @return the stripped ByteString object, may be an empty ByteString
 * @type ByteString
 */
SmartCardHSM.stripLeadingZeros = function(value) {
	var i = 0;
	for (; (i < value.length) && (value.byteAt(i) == 0); i++);

	return value.right(value.length - i);
}



/**
 * Build input for Generate Asymmetric Key Pair command for generating an ECC key pair
 *
 * @param {PublicKeyReference} innerCAR the CA the request shall be directed to
 * @param {ByteString} algo the public key algorithm
 * @param {PublicKeyReference} chr the certificate holder reference associated with this key
 * @param {Key} dp the domain parameter for the key
 * @param {PublicKeyReference} outerCAR the certificate holder reference of the public key for verifying the outer signature
 * @param {Key} privateKey optional parameter to supply a private key value for import. This only works with the development version
 *              of the SmartCard-HSM.
 * @type ByteString
 * @return the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR
 */
SmartCardHSM.buildGAKPwithECC = function(innerCAR, algo, chr, dp, outerCAR, priKey) {

	// Encode G
	var bb = new ByteBuffer();
	// uncompressed encoding
	bb.append(new ByteString("04", HEX));
	bb.append(dp.getComponent(Key.ECC_GX));
	bb.append(dp.getComponent(Key.ECC_GY));
	var G = bb.toByteString();

	var t = new ASN1(0x30,
				new ASN1("CPI", 0x5F29, new ByteString("00", HEX)),
				new ASN1("CAR", 0x42, innerCAR.getBytes()),
				new ASN1("Public Key", 0x7F49,
					new ASN1("Object Identifier", 0x06, algo),
					new ASN1("Prime Modulus", 0x81, dp.getComponent(Key.ECC_P)),
					new ASN1("First coefficient a", 0x82, dp.getComponent(Key.ECC_A)),
					new ASN1("Second coefficient b", 0x83, dp.getComponent(Key.ECC_B)),
					new ASN1("Base Point G", 0x84, G),
					new ASN1("Order of the base point", 0x85, dp.getComponent(Key.ECC_N)),
					new ASN1("Cofactor f", 0x87, SmartCardHSM.stripLeadingZeros(dp.getComponent(Key.ECC_H)))
				),
				new ASN1("CHR", 0x5F20, chr.getBytes())
			);

	if (typeof(outerCAR) != "undefined") {
		t.add(new ASN1("OuterCAR", 0x45, outerCAR.getBytes()));
	}

	if (priKey != undefined) {
		var d = new ASN1("Private Key", 0x8A, priKey.getComponent(Key.ECC_D));
		t.get(2).add(d);
//		GPSystem.log(GPSystem.DEBUG, module.id, t);
	}
	return t.value;
}



/**
 * Build input for Generate Asymmetric Key Pair command for generating a RSA key pair
 *
 * @param {PublicKeyReference} innerCAR the CA the request shall be directed to
 * @param {ByteString} algo the public key algorithm
 * @param {PublicKeyReference} chr the certificate holder reference associated with this key
 * @param {Number} keysize the module size in bits (1024, 1536 or 2048)
 * @param {PublicKeyReference} outerCAR the certificate holder reference of the public key for verifying the outer signature
 * @type ByteString
 * @return the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR
 */
SmartCardHSM.buildGAKPwithRSA = function(innerCAR, algo, chr, keysize, outerCAR) {

	var t = new ASN1(0x30,
				new ASN1("CPI", 0x5F29, new ByteString("00", HEX)),
				new ASN1("CAR", 0x42, innerCAR.getBytes()),
				new ASN1("Public Key", 0x7F49,
					new ASN1("Object Identifier", 0x06, algo),
					new ASN1("Public Key Exponent", 0x82, ByteString.valueOf(65537)),
					new ASN1("Key Size", 0x02, ByteString.valueOf(keysize))
				),
				new ASN1("CHR", 0x5F20, chr.getBytes())
			);

	if (typeof(outerCAR) != "undefined") {
		t.add(new ASN1("OuterCAR", 0x45, outerCAR.getBytes()));
	}
	return t.value;
}



/**
 * Create a PKCS#15 PrivateECCKey description
 *
 * @param {Number/ByteString} keyid the key identifier
 * @param {String} label the key label
 * @type ASN1
 * @return the PrivateECCKey description
 */
SmartCardHSM.buildPrkDforECC = function(keyid, label, keysize) {
	if (typeof(keyid) == "number") {
		keyid = ByteString.valueOf(keyid);
	}

	var prkd = 	new ASN1(0xA0,
					new ASN1(ASN1.SEQUENCE,
						new ASN1(ASN1.UTF8String, new ByteString(label, UTF8))
//						new ASN1(ASN1.BIT_STRING, new ByteString("0780", HEX)),
//						new ASN1(ASN1.OCTET_STRING, new ByteString("01", HEX))
					),
					new ASN1(ASN1.SEQUENCE,
						new ASN1(ASN1.OCTET_STRING, keyid),
						new ASN1(ASN1.BIT_STRING, new ByteString("072080", HEX))
					),
					new ASN1(0xA1,
						new ASN1(ASN1.SEQUENCE,
							new ASN1(ASN1.SEQUENCE,
								new ASN1(ASN1.OCTET_STRING, new ByteString("", HEX))
							)
						)
					)
				);

	if (keysize != undefined) {
		assert(keysize > 0, "Key size must be > 0");
		var tlvint = ByteString.valueOf(keysize);
		if (tlvint.byteAt(0) >= 0x80) {
			tlvint = (new ByteString("00", HEX)).concat(tlvint);
		}
		prkd.get(2).get(0).add(new ASN1(ASN1.INTEGER, tlvint));
	}

//	GPSystem.log(GPSystem.DEBUG, module.id, prkd);
	return prkd;
}



/**
 * Create a PKCS#15 PrivateRSAKey description
 *
 * @param {Number/ByteString} keyid the key identifier
 * @param {String} label the key label
 * @param {Number} modulussize
 * @type ASN1
 * @return the PrivateECCKey description
 */
SmartCardHSM.buildPrkDforRSA = function(keyid, label, modulussize) {
	if (typeof(keyid) == "number") {
		keyid = ByteString.valueOf(keyid);
	}

	var prkd = 	new ASN1(0x30,
					new ASN1(ASN1.SEQUENCE,
						new ASN1(ASN1.UTF8String, new ByteString(label, UTF8))
//						new ASN1(ASN1.BIT_STRING, new ByteString("0780", HEX)),
//						new ASN1(ASN1.OCTET_STRING, new ByteString("01", HEX))
					),
					new ASN1(ASN1.SEQUENCE,
						new ASN1(ASN1.OCTET_STRING, keyid),
						new ASN1(ASN1.BIT_STRING, new ByteString("0274", HEX))
					),
					new ASN1(0xA1,
						new ASN1(ASN1.SEQUENCE,
							new ASN1(ASN1.SEQUENCE,
								new ASN1(ASN1.OCTET_STRING, new ByteString("", HEX))
							),
							new ASN1(ASN1.INTEGER, ByteString.valueOf(modulussize))
						)
					)
				);
//	GPSystem.log(GPSystem.DEBUG, module.id, prkd);
	return prkd;
}



/**
 * Create a PKCS#15 SecretKey description
 *
 * @param {Number/ByteString} keyid the key identifier
 * @param {String} label the key label
 * @param {Number} keysize
 * @type ASN1
 * @return the secret key description
 */
SmartCardHSM.buildSKDforAES = function(keyid, label, keysize) {
	if (typeof(keyid) == "number") {
		keyid = ByteString.valueOf(keyid);
	}

	var skd =
		new ASN1(0xA8,
			// CommonObjectAttributes
			new ASN1(ASN1.SEQUENCE,
				new ASN1(ASN1.UTF8String, new ByteString(label, UTF8))
				//						new ASN1(ASN1.BIT_STRING, new ByteString("0780", HEX)),
				//						new ASN1(ASN1.OCTET_STRING, new ByteString("01", HEX))
			),
			// ClassAttributes: CommonKeyAttributes
			new ASN1(ASN1.SEQUENCE,
				new ASN1(ASN1.OCTET_STRING, keyid),
				new ASN1(ASN1.BIT_STRING, new ByteString("07C010", HEX))
			),
			// SubClassAttribute: CommonSecretKeyAttributes
			new ASN1(0xA0,
				new ASN1(ASN1.SEQUENCE,
					new ASN1(ASN1.INTEGER, ByteString.valueOf(keysize, 2))
				)
			),
			new ASN1(0xA1,
				new ASN1(ASN1.SEQUENCE,
					new ASN1(ASN1.SEQUENCE,
						new ASN1(ASN1.OCTET_STRING, new ByteString("", HEX))
					)
				)
			)

		);
//	GPSystem.log(GPSystem.DEBUG, module.id, skd);
	return skd;
}



/**
 * Create a PKCS#15 certificate description
 *
 * @param {ByteString} commonObjectFlags default value is '0640'
 * @param {String} label the key label
 * @param {Key} pubKey the public key
 * @param {ByteString} certFID the file identifier of the certificate
 * @type ASN1
 * @return the certificate description
 */
SmartCardHSM.buildCertDescription = function(label, commonObjectFlags, pubKey, certFID) {
	if (!commonObjectFlags) {
		commonObjectFlags = new ByteString("0x0640", HEX);
	}

	// generate subject key id
	var qx = pubKey.getComponent(Key.ECC_QX)
	if (qx) {
	  var enc = qx;
	} else {
	  var enc = pubKey.getComponent(Key.MODULUS);
	}
	var crypto = new Crypto();
	var subjectKeyID = crypto.digest(Crypto.SHA_1, enc);

	var desc = 	new ASN1(ASN1.SEQUENCE,
				new ASN1(ASN1.SEQUENCE,			// common object attributes
					new ASN1(ASN1.UTF8String, new ByteString(label, UTF8)),
					new ASN1(ASN1.BIT_STRING, commonObjectFlags)
				),
				new ASN1(ASN1.SEQUENCE,			// common certificate attributes
					  new ASN1(ASN1.OCTET_STRING, subjectKeyID)
				),
				new ASN1(0xA1,					// type attributes
					new ASN1(ASN1.SEQUENCE,			// x.509 certificate attributes
						new ASN1(ASN1.SEQUENCE,			// path
							new ASN1(ASN1.OCTET_STRING, certFID)
						)
					)
				)
			);
	return desc;
}



/**
 * Create a PKCS#15 data object description
 *
 * @param {String} label the key label
 * @param {ByteString} commonObjectFlags default value is '0640'
 * @param {ByteString} fid the file identifier of the data object
 * @param {String} applicationName the application name (Default "SmartCard-HSM")
 * @type ASN1
 * @return the Data Object Description
 */
SmartCardHSM.buildDataObjectDescription = function(label, commonObjectFlags, fid, applicationName) {
	var privateDO = fid.byteAt(0) == SmartCardHSM.CONFIDENTIALDATAPREFIX;

	if (applicationName == undefined) {
		applicationName = "SmartCard-HSM";
	}
	if (!commonObjectFlags) {
		if (privateDO) {
			commonObjectFlags = new ByteString("0x06C0", HEX);
		} else {
			commonObjectFlags = new ByteString("0x0640", HEX);
		}
	}

	var desc = 	new ASN1(ASN1.SEQUENCE,
				new ASN1(ASN1.SEQUENCE,			// common object attributes
					new ASN1(ASN1.UTF8String, new ByteString(label, UTF8)),
					new ASN1(ASN1.BIT_STRING, commonObjectFlags)
				),
				new ASN1(ASN1.SEQUENCE,			// common data object attributes
					  new ASN1(ASN1.UTF8String, new ByteString(applicationName, UTF8))
				),
				new ASN1(0xA1,					// type attributes
					new ASN1(ASN1.SEQUENCE,			// path
						new ASN1(ASN1.OCTET_STRING, fid)
					)
				)
			);

	if (privateDO) {
		desc.get(0).add(new ASN1(ASN1.OCTET_STRING, ByteString.valueOf(1)));
	}
	return desc;
}



/**
 * Create a PKCS#15 like KeyDomain description
 *
 * @param {String} label the key domain label
 * @type ASN1
 * @return the KeyDomain description
 */
SmartCardHSM.buildKeyDomainDescription = function(label) {
	var kdd = 	new ASN1(ASN1.SEQUENCE,
					new ASN1(ASN1.SEQUENCE,
						new ASN1(ASN1.UTF8String, new ByteString(label, UTF8))
					)
				);

	return kdd;
}



/**
 * Dump C-Data of Generate Asymmetric Key Pair command
 *
 * @param {ByteString} keydata the content of C-Data
 */
SmartCardHSM.dumpKeyData = function(keydata) {
	GPSystem.log(GPSystem.DEBUG, module.id, keydata);
	var a = new ASN1(0x30, keydata);
	var a = new ASN1(a.getBytes());
	for (var i = 0; i < a.elements; i++) {
		GPSystem.log(GPSystem.DEBUG, module.id, a.get(i));
	}
}



/**
 * Generate an asymmetric key pair
 *
 * @param {Number} newkid key identifier for new key
 * @param {Number} signkid key identifier for signing the new public key
 * @param {ByteString} keydata the key data template
 * @type ByteString
 * @return the certificate signing request containing the new public key
 */
SmartCardHSM.prototype.generateAsymmetricKeyPair = function(newkid, signkid, keydata) {

	if (!this.limitedAPDUTransport) { // Use extended length
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x46, newkid, signkid, keydata, 65536, [0x9000]);
	} else {
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x46, newkid, signkid, keydata, [0x9000]);
		var rsp = this.readBinary(ByteString.valueOf(0xCE00 + newkid), 0);
	}

	return rsp;
}



/**
 * Generate a symmetric key
 *
 * @param {Number} newkid key identifier for new key
 * @param {Number} algo key generation algorithm
 * @param {ByteString} keydata the key data template
 * @type ByteString
 * @return
 */
SmartCardHSM.prototype.generateSymmetricKey = function(newkid, algo, keydata) {

	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x48, newkid, algo, keydata, 0, [0x9000]);
	return rsp;
}



/**
 * Return true is SmartCard-HSM is initialized
 *
 * @type Boolean
 * @return true if initialized
 */
SmartCardHSM.prototype.isInitialized = function() {
	var sw = this.queryUserPINStatus();
	if ((sw == 0x6984) || (sw == 0x6A88)) {		// V1.2: Not initialized / V2.0: Transport PIN
		var sw = this.queryInitializationCodeStatus();
		if (sw == 0x6A88) {
			return false;
		}
	}
	return true;
}



/**
 * Initialize device and clear all keys and files
 *
 * @param {ByteString} options two byte option mask
 * @param {ByteString} initialPIN initial user PIN value
 * @param {ByteString} initializationCode secret code for device initialization (set during first use)
 * @param {Number} retryCounterInitial retry counter for user PIN
 * @param {Number} keyshares number of device key encryption key shares (optional)
 */
SmartCardHSM.prototype.initDevice = function(options, initialPIN, initializationCode, retryCounterInitial, keyshares) {
	var s = new ASN1(0x30,
				new ASN1(0x80, options),
				new ASN1(0x81, initialPIN),
				new ASN1(0x82, initializationCode),
				new ASN1(0x91, ByteString.valueOf(retryCounterInitial))
				);

	if (typeof(keyshares) != "undefined") {
		s.add(new ASN1(0x92, ByteString.valueOf(keyshares)));
	}
	this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x50, 0x00, 0x00, s.value, [0x9000]);
}



/**
 * Determine free memory
 *
 * @type Number
 * @return the number of available bytes (this values is capped to 32767 on JCOP 2.4.1)
 */
SmartCardHSM.prototype.getFreeMemory = function() {
	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x50, 0x00, 0x00, 0, [0x9000, 0x6700]);

	if (this.card.SW != 0x9000) {
		return -1;
	}

	this.options = rsp.bytes(0, 2).toUnsigned();
	this.major = rsp.byteAt(rsp.length - 2);
	this.minor = rsp.byteAt(rsp.length - 1);
	this.platform = rsp.byteAt(rsp.length - 3);
	return rsp.bytes(rsp.length - 7, 4).toUnsigned();
}



/**
 * Check if the RESET RETRY COUNTER command is enabled
 *
 * @type Boolean
 * @return true if enable during initialization
 */
SmartCardHSM.prototype.isResetRetryCounterEnabled = function() {
	if (typeof(this.options) == "undefined") {
		this.getFreeMemory();
	}
	return (this.options & 1) == 1;
}



/**
 * Check if the RESET RETRY COUNTER command can reset the PIN
 *
 * @type Boolean
 * @return true if enable during initialization
 */
SmartCardHSM.prototype.isPINResetEnabled = function() {
	if (typeof(this.options) == "undefined") {
		this.getFreeMemory();
	}
	return (this.options & 0x20) == 0;
}



/**
 * Parse the key domain status returned from the device
 *
 * @param {ByteString} status the R-DATA from the MANAGE KEY DOMAIN command
 * @type object
 * @return the decoded status Info
 */
SmartCardHSM.prototype.parseKeyDomainStatus = function(status) {
	if (status.length == 0) {
		return { sw: this.card.SW };
	}

	var statusObject = {
		sw: this.card.SW,
		shares: status.byteAt(0),
		outstanding: status.byteAt(1),
		kcv: status.bytes(2, 8)
	}

	if (status.length > 10) {
		statusObject.keyDomain = status.bytes(10);
	}

	return statusObject;
}



/*
 * Create DKEK Key Domain
 *
 * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
 * @param {Number} shares the number of DKEK shares to import
 * @type Object
 * @return object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}
 */
SmartCardHSM.prototype.createDKEKKeyDomain = function(keyDomain, shares, label) {
	if (typeof(keyDomain) != "number") {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomain must be a number");
	}
	if (typeof(shares) != "number") {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "shares must be a number");
	}

	if (label && typeof(label) != "string") {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "label must be a string");
	}

	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x01, keyDomain, ByteString.valueOf(shares), 0, [0x9000]);

	var status = this.parseKeyDomainStatus(rsp);

	if (label) {
		status.label = label;
		var fid = ByteString.valueOf((SmartCardHSM.KDDPREFIX << 8) + keyDomain);
		if (this.hasFile(fid)) {
			this.deleteFile(fid);
		}

		var kdd = SmartCardHSM.buildKeyDomainDescription(status.label);
		this.updateBinary(fid, 0, kdd.getBytes());
	}

	return status;
}



/**
 * Create XKEK Key Domain
 *
 * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
 * @param {ByteString} keyDomainMembership either a 64 byte signature (old format) or a encoded TLV object with tag 54 or 55
 * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}
 * @type Object
 */
SmartCardHSM.prototype.createXKEKKeyDomain = function(keyDomain, groupSignerPublicKey, keyDomainMembership) {
	if (typeof(keyDomain) != "number") {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomain must be a number");
	}
	if ((keyDomain < 0) || (keyDomain > 0xFF)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomain must be between 0 and 255");
	}
	if (!(groupSignerPublicKey instanceof CVC)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "groupSignerPublicKey must be a CVC instance");
	}
	if (!(keyDomainMembership instanceof ByteString)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomainMembership must be a ByteString");
	}

	var car = groupSignerPublicKey.getOuterCAR().getBytes();
	var chr = groupSignerPublicKey.getCHR();

	var pukrefdo = new ASN1(0x83, car);
	var pukref = pukrefdo.getBytes();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x22, 0x81, 0xB6, pukref, [0x9000]);

	if (keyDomainMembership.length == 64) {
		keyDomainMembership = new ASN1(0x53, keyDomainMembership).getBytes();
	}
	var cdata = groupSignerPublicKey.getASN1().value.concat(keyDomainMembership);

	if (cdata.length <= this.maxCData) {
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x02, keyDomain, cdata, 0, [0x9000]);
	} else {
		this.updateBinary(ByteString.valueOf(0x2F10), 0, cdata);
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x02, keyDomain, 0, [0x9000]);
	}

	var status = this.parseKeyDomainStatus(rsp);

	status.label = chr.toString();

	var fid = ByteString.valueOf((SmartCardHSM.KDDPREFIX << 8) + keyDomain);
	if (this.hasFile(fid)) {
		this.deleteFile(fid);
	}

	var kdd = SmartCardHSM.buildKeyDomainDescription(status.label);
	this.updateBinary(fid, 0, kdd.getBytes());

	return status;
}



/**
 * Associate XKEK Key Domain
 *
 * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
 * @param {ByteString} keyDomainUID a encoded TLV object with tag 51 containing the key domain uid of the associated domain
 * @param {ByteString} keyDomainAssociation a encoded TLV object with tag 56 or 57
 * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}
 * @type Object
 */
SmartCardHSM.prototype.associateXKEKKeyDomain = function(keyDomain, groupSignerPublicKey, keyDomainUID, keyDomainAssociation) {
	if (typeof(keyDomain) != "number") {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomain must be a number");
	}
	if ((keyDomain < 0) || (keyDomain > 0xFF)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomain must be between 0 and 255");
	}
	if (!(groupSignerPublicKey instanceof CVC)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "groupSignerPublicKey must be a ByteString");
	}
	if (!(keyDomainUID instanceof ByteString)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomainUID must be a ByteString");
	}
	if (!(keyDomainAssociation instanceof ByteString)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyDomainAssociation must be a ByteString");
	}

	var car = groupSignerPublicKey.getOuterCAR().getBytes();

	var pukrefdo = new ASN1(0x83, car);
	var pukref = pukrefdo.getBytes();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x22, 0x81, 0xB6, pukref, [0x9000]);

	var cdata = groupSignerPublicKey.getASN1().value.concat(keyDomainUID).concat(keyDomainAssociation);

	if (cdata.length <= this.maxCData) {
		var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x05, keyDomain, cdata, 0);
	} else {
		this.updateBinary(ByteString.valueOf(0x2F10), 0, cdata);
		var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x05, keyDomain, 0);
	}

	return this.parseKeyDomainStatus(status);
}



/**
 * Derive XKEK
 *
 * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
 * @param {ByteString} derivationParam
 * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}
 * @type Object
 */
SmartCardHSM.prototype.deriveXKEK = function(keyid, peerPublicKey, derivationParam) {
	if (typeof(keyid) != "number") {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyid must be a number");
	}
	if ((keyid < 1) || (keyid > 0xFF)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "keyid must be between 1 and 255");
	}
	if (!(peerPublicKey instanceof CVC)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "peerPublicKey must be a CVC");
	}
	if (!(derivationParam instanceof ByteString)) {
		throw new GPError("SmartCardHSM", GPError.INVALID_DATA, 1, "derivationParam must be a ByteString");
	}

	var car = peerPublicKey.getOuterCAR().getBytes();

	var pukrefdo = new ASN1(0x83, car);
	var pukref = pukrefdo.getBytes();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x22, 0x81, 0xB6, pukref, [0x9000]);

	var kdp = new ASN1(0x50, derivationParam).getBytes();
	var cdata = peerPublicKey.getASN1().value.concat(kdp);

	if (cdata.length <= this.maxCData) {
		// Le is usually not required, but versions 3.1 to 3.3 fail without Le (#178)
		this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x62, keyid, 0x84, cdata, 0, [0x9000]);
	} else {
		this.updateBinary(ByteString.valueOf(0x2F10), 0, cdata);
		this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x62, keyid, 0x84, [0x9000]);
	}
}



/**
 * Query the status of the key domain
 *
 * @param {Number} keyDomain the number of the key domain which will be queried, default is 0
 * @type Object
 * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and for a XKEK key domain the key domain UID{ByteString}
 */
SmartCardHSM.prototype.queryKeyDomainStatus = function(keyDomain) {
	if (!keyDomain) {
		keyDomain = 0;
	}

	var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x00, keyDomain, 0);

	return this.parseKeyDomainStatus(status);
}



/**
 * Delete the key encryption key in a key domain
 *
 * @param {Number} keyDomain the number of the key domain
 */
SmartCardHSM.prototype.deleteKEK = function(keyDomain) {
	var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x04, keyDomain, [0x9000]);

	return this.parseKeyDomainStatus(status);
}



/**
 * Delete the empty key domain
 *
 * @param {Number} keyDomain the number of the key domain
 */
SmartCardHSM.prototype.deleteKeyDomain = function(keyDomain) {
	this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x03, keyDomain, [0x9000]);

	var fid = ByteString.valueOf((SmartCardHSM.KDDPREFIX << 8) + keyDomain);
	if (this.hasFile(fid)) {
		this.deleteFile(fid);
	}
}



/**
 * Return the label associated with the key domain or undefined.
 *
 * @param {Number} keyDomain the number of the key domain
 */
SmartCardHSM.prototype.getKeyDomainLabel = function(keyDomain) {
	var fid = ByteString.valueOf((SmartCardHSM.KDDPREFIX << 8) + keyDomain);
	try	{
		var bin = this.readBinary(fid);
		if (bin.byteAt(0) != 0x30) {
			return;
		}
		var a = new ASN1(bin);
		return a.get(0).get(0).value.toString(UTF8);
	} catch(e) {
		// Return undefined if no description is set
		return;
	}
}



/**
 * Import DKEK share or query status
 *
 * @param {Number} keyDomain the number of the key domain
 * @param {ByteString} keyshare 32 byte key share
 * @type Object
 * @return object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}
 */
SmartCardHSM.prototype.importKeyShare = function(keyDomain, keyshare) {
	if (typeof(keyDomain) != "number") {
		keyshare = keyDomain;
		keyDomain = 0;
	}
	if (typeof(keyshare) != "undefined") {
		var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x00, keyDomain, keyshare, 0, [0x9000]);
	} else {
		var status = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x52, 0x00, keyDomain, 0);
	}
	if (status.length == 0) {
		return { sw: this.card.SW };
	}

	var statusObject = {
		sw: this.card.SW,
		shares: status.byteAt(0),
		outstanding: status.byteAt(1),
		kcv: status.bytes(2, 8)
	}

	if (status.length > 10) {
		statusObject.keyDomain = status.bytes(10);
	}

	return statusObject;
}



/**
 * Decrypt and import a DKEK share
 *
 * @param {ByteString} keyshare the encrypted key share as read from the .pbe file
 * @param {ByteString} password the password
 * @param {Number} keyDomain the number of the key domain
 * @return object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}
 */
SmartCardHSM.prototype.importEncryptedKeyShare = function(keyshare, password, keyDomain) {
	if (typeof(keyDomain) == "undefined") {
		keyDomain = 0;
	}

	var dkek = DKEK.decryptKeyShare(keyshare, password);
//	print("Importing into SmartCard-HSM");
	var r = this.importKeyShare(keyDomain, dkek);
	dkek.clear();
	return r;
}



/**
 * Wrap key under DKEK
 *
 * @param {Number} id key id
 * @type ByteString
 * @return key blob with encrypted key value
 */
SmartCardHSM.prototype.wrapKey = function(id) {
	var keyblob = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x72, id, 0x92, 65536, [0x9000]);
	return keyblob;
}



/**
 * Unwrap key with DKEK
 *
 * @param {Number} id key id
 * @param {ByteString} keyblob the wrapped key
 */
SmartCardHSM.prototype.unwrapKey = function(id, keyblob) {
	if (keyblob.length < this.maxCData) {
		this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x74, id, 0x93, keyblob, [0x9000]);
	} else {
		this.updateBinary(ByteString.valueOf(0x2F10), 0, keyblob);
		this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x74, id, 0x93, [0x9000]);
	}
}



/**
 * Replace symmetric key value encrypted under current key
 *
 * @param {Number} id key id
 * @param {ByteString} keyblob the wrapped key
 */
SmartCardHSM.prototype.unwrapAndReplaceKey = function(id, keyblob) {
	this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x74, id, 0x94, keyblob, [0x9000]);
}



/**
 * Derive Symmetric Key
 *
 * @param {Number} id key id
 * @param {Number} algo algorithm id (one of ALG_CBC_ENC, ALG_CBC_DEC, ALG_CMAC or ALG_DERIVE_SP800_56C)
 * @param {ByteString} derivationParam the derivation parameter
 * @type ByteString
 * @return derived key value
 */
SmartCardHSM.prototype.deriveSymmetricKey = function(id, algo, derivationParam) {
	var derivedKeyValue = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x78, id, algo, derivationParam, 0, [0x9000]);
	return derivedKeyValue;
}



/**
 * Verify User PIN
 *
 * @param {ByteString} userPIN user PIN value
 * @return the status word SW1/SW2 returned by the device
 */
SmartCardHSM.prototype.verifyUserPIN = function(userPIN) {
	if (userPIN) {
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x20, 0x00, 0x81, userPIN);
		return this.card.SW;
	} else {
		var cs = this.getNativeCardService();
		cs.verifyPassword();
		return this.queryUserPINStatus();
	}
}



/**
 * Logout
 *
 */
SmartCardHSM.prototype.logout = function() {
	this.card.clearCredential();
	var fcp = this.card.sendApdu(0x00, 0xA4, 0x04, 0x04, new ByteString("E82B0601040181C31F0201", HEX), 0, [0x9000]);
	var a = new ASN1(fcp);
	var v = a.find(0x85).value;
	this.options = v.bytes(0, 2).toUnsigned();
	this.major = v.byteAt(v.length - 2);
	this.minor = v.byteAt(v.length - 1);
	if (v.length >= 5) {
		this.platform = v.byteAt(v.length - 3);
	}
}



/**
 * Change User PIN
 *
 * @param {ByteString} currentPIN current user PIN value
 * @param {ByteString} newPIN new user PIN value
 */
SmartCardHSM.prototype.changeUserPIN = function(currentPIN, newPIN) {
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x24, 0x00, 0x81, currentPIN.concat(newPIN), [0x9000]);
}



/**
 * Unblock and set User PIN
 *
 * @param {ByteString} initializationCode the initialization code
 * @param {ByteString} newPIN new user PIN value (optional)
 */
SmartCardHSM.prototype.unblockUserPIN = function(initializationCode, newPIN) {
	if (newPIN) {
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x2C, 0x00, 0x81, initializationCode.concat(newPIN), [0x9000]);
	} else {
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x2C, 0x01, 0x81, initializationCode, [0x9000]);
	}
}



/**
 * Change InitializationCode
 *
 * @param {ByteString} initializationCode current initialization code
 * @param {ByteString} newInitializationCode new initialization code
 */
SmartCardHSM.prototype.changeInitializationCode = function(initializationCode, newInitializationCode) {
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x24, 0x00, 0x88, initializationCode.concat(newInitializationCode), [0x9000]);
}



SmartCardHSM.describePINStatus = function(sw, name) {
	var str;
	switch(sw) {
	case 0x9000:
		str = name + " authenticated";
		break;
	case 0x6984:
		str = name + " in transport mode or device not initialized";
		break;
	case 0x6A88:
		str = name + " not initialized";
		break;
	case 0x6983:
		str = name + " blocked";
		break;
	case 0x6300:
		str = name + " not authenticated";
		break;
	default:
		str = name + " not verified, " + (sw & 0xF) + " tries remaining";
		break;
	}
	return str + " (" + ByteString.valueOf(sw).toString(HEX) + ")";
}



/**
 * Request PIN Status Information
 *
 * @param {Number} p2 the PIN object id
 * @type Number
 * @return the status word SW1/SW2 returned by the device
 */
SmartCardHSM.prototype.queryPINStatus = function(p2) {
	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x20, 0x00, p2, 0);
	return this.card.SW;
}



/**
 * Request PIN Status Information
 *
 * @type Number
 * @return the status word SW1/SW2 returned by the device
 */
SmartCardHSM.prototype.queryUserPINStatus = function() {
	return this.queryPINStatus(0x81);
}



/**
 * Request Initialization Code Status
 *
 * @type Number
 * @return the status word SW1/SW2 returned by the device
 */
SmartCardHSM.prototype.queryInitializationCodeStatus = function() {
	return this.queryPINStatus(0x88);
}



/**
 * Enumerate Objects
 *
 * @return the enumeration
 */
SmartCardHSM.prototype.enumerateObjects = function() {
	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x58, 0x00, 0x00, 65536, [0x9000]);
	return rsp;
}



/**
 * Generate random data
 *
 * @param {Number} length number of bytes
 * @return the random bytes
 */
SmartCardHSM.prototype.generateRandom = function(length) {
	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x84, 0x00, 0x00, length, [0x9000]);
	return rsp;
}



/**
 * Sign data using referenced key
 *
 * @param {Number} keyid the key identifier for signing
 * @param {algo} algo the algorithm identifier
 * @param {ByteString} data the data to be signed
 * @return the signature value
 */
SmartCardHSM.prototype.sign = function(keyid, algo, data) {
	if (data.length <= this.maxCData) {
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x68, keyid, algo, data, 0x10000, [0x9000]);
	} else {
		this.updateBinary(ByteString.valueOf(0x2F10), 0, data);
		var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x68, keyid, algo, 0x10000, [0x9000]);
	}

	return rsp;
}



/**
 * Decipher cryptogram or agree shared secret using Diffie-Hellman
 *
 * @param {Number} keyid the key identifier
 * @param {Number} algo the algorithm identifier
 * @param {ByteString} data the the cryptogram or concatenation of x || y of ECC public key
 * @return the plain output
 */
SmartCardHSM.prototype.decipher = function(keyid, algo, data) {
	var rsp = this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x62, keyid, algo, data, 0x00, [0x9000]);
	return rsp;
}



/**
 * Verify card verifiable certificate
 *
 * @param {CVC} cvc the card verifiable certificate
 **/
SmartCardHSM.prototype.verifyCertificate = function(cvc) {

	// Check if public key is already known
	var chr = cvc.getCHR().getBytes();

	var pukrefdo = new ASN1(0x83, chr);
	var pukref = pukrefdo.getBytes();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x22, 0x81, 0xB6, pukref, [0x9000, 0x6A88]);

	if (this.card.SW == 0x9000) {
		return;
	}

	// Select public key for verification
	var car = cvc.getCAR().getBytes();

	var pukrefdo = new ASN1(0x83, car);
	var pukref = pukrefdo.getBytes();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x22, 0x81, 0xB6, pukref, [0x9000]);

	// Extract value of 7F21
	var tl = new TLVList(cvc.getBytes(), TLV.EMV);
	var t = tl.index(0);
	var v = t.getValue();

	this.card.sendSecMsgApdu(Card.ALL, 0x00, 0x2A, 0x00, 0xBE, v, [0x9000]);
}



/**
 * Enumerate CA certificates
 *
 * @type String[]
 * @return the list of certificate labels
 */
SmartCardHSM.prototype.enumerateCACertificates = function() {
	this.canamemap = [];
	this.caidmap = []
	this.caids = [];
	var certlist = [];

	var fobs = this.enumerateObjects();

	// Process PKCS#15 certificate descriptions
	for (var i = 0; i < fobs.length; i+= 2) {
		if (fobs.byteAt(i) == SmartCardHSM.CERTDPREFIX) {
			var id = fobs.byteAt(i + 1);
			this.caids.push(id);
			var fid = ByteString.valueOf((SmartCardHSM.CACERTIFICATEPREFIX << 8) + id);
			var descbin = this.readBinary(fobs.bytes(i, 2));
			var asn = new ASN1(descbin);
			var coa = asn.get(0);
			if (coa.elements > 0) {
				var label = coa.get(0).value.toString(ASCII);
			} else {
				var label = "No label (" + i + ")";
			}
			var cert = this.readBinary(fid);
			certlist.push(label);
			this.canamemap[label] = cert;
			cert.id = id;
			this.caidmap[label] = id;
		}
	}

	return certlist;
}



/**
 * Return CA certificate with label
 *
 * @param {String} label the certificate label
 * @type ByteString
 * @return the encoded certificate
 */
SmartCardHSM.prototype.getCACertificate = function(label) {
	if (typeof(this.caids) == "undefined") {
		this.enumerateCACertificates();
	}

	return this.canamemap[label];
}



/**
 * Determine an unused CA certificate identifier
 *
 * @type Number
 * @return a free CA certificate identifier or -1 if all identifier in use
 */
SmartCardHSM.prototype.determineFreeCAId = function() {
	var fobs = this.enumerateObjects();

	return SmartCardHSM.determineFreeId(SmartCardHSM.CACERTIFICATEPREFIX, fobs);
}



/**
 * Add a new CA certificate to the map
 *
 * @param {X509} cert the CA certificate
 * @param {Number} id the corresponding id
 * @param {String} label the corresponding label
 */
SmartCardHSM.prototype.addCACertificateToMap = function(cert, id, label) {
	if (!this.caidmap[label]) {
		// new id
		this.caids.push(id);
		this.caidmap[label] = id;
	}
	this.canamemap[label] = cert;
}



/**
 * Enumerate key objects in the SmartCard-HSM and build the map of keys
 *
 * @type String[]
 * @return the list of key labels
 */
SmartCardHSM.prototype.enumerateKeys = function() {
	this.namemap = [];
	this.idmap = [];
	this.idlist = [];
	this.p15idmap = [];

	var fobs = this.enumerateObjects();

	// Process keys
	for (var i = 0; i < fobs.length; i += 2) {
		if ((fobs.byteAt(i) == SmartCardHSM.KEYPREFIX) || (fobs.byteAt(i) == 0xFF)) {
			var kid = fobs.byteAt(i + 1);
			if (kid > 0) {
//				GPSystem.log(GPSystem.DEBUG, module.id, "Found key: " + kid);
				var key = new SmartCardHSMKey(this, kid);
				this.idmap[kid] = key;
				this.idlist.push(kid);
				this.updateKey(key);
			}
		}
	}

	var keylist = [];
	// Process PKCS#15 private key descriptions
	for (var i = 0; i < fobs.length; i += 2) {
		if (fobs.byteAt(i) == SmartCardHSM.PRKDPREFIX) {
			var kid = fobs.byteAt(i + 1);
			var descbin = this.readBinary(fobs.bytes(i, 2));
			if (descbin.length > 2) {
				try {
					var desc = new ASN1(descbin);
					if (desc.elements < 3) {
						continue;
					}
				}
				catch(e) {
					continue;
				}
				var key = this.idmap[kid];
				if (key) {
					key.setDescription(desc);
					var label = key.getLabel();
//					GPSystem.log(GPSystem.DEBUG, module.id, key.getId() + " - " + label);
					if (label) {
						keylist.push(label);
						this.namemap[label] = key;
					}
					var p15id = key.getPKCS15Id();
					this.p15idmap[p15id.toString(HEX)] = key;
				}
			}
		}
	}

	return keylist;
}



/**
 * Get key ids
 *
 * @type Number[]
 * @return a list of key identifier
 */
SmartCardHSM.prototype.getKeyIds = function() {
	if (typeof(this.idlist) == "undefined") {
		this.enumerateKeys();
	}
	return this.idlist;
}



/**
 * Determine an unused key identifier
 *
 * @type Number
 * @return a free key identifier or -1 if all key identifier in use
 */
SmartCardHSM.prototype.determineFreeKeyId = function() {
	if (typeof(this.idlist) == "undefined") {
		this.enumerateKeys();
	}
	for (var i = 1; i < 256; i++) {
		if (this.idmap[i] == undefined) {
			return i;
		}
	}
	throw new GPError("SmartCardHSM", GPError.OUT_OF_MEMORY, 1, "Key idx exhausted");
}



/**
 * Update key attributes, in particular the use counter
 *
 * @param {HSMKey} key the HSM key
 */
SmartCardHSM.prototype.updateKey = function(key) {
	var fid = ByteString.valueOf((SmartCardHSM.KEYPREFIX << 8) + key.getId());
	try	{
		var fcp = this.selectFile(fid);
	}
	catch(e) {
		return;
	}
	var a = new ASN1(fcp);
	var pi = a.find(0xA5);
	if (!pi) {
		return;
	}
	var kc = pi.find(0x90);
	if (kc) {
		var c = kc.value.toUnsigned();

		if (c != 0xFFFFFFFF) {
			key.useCounter = c;
		}
	}

	var kd = pi.find(0x91);
	if (kd) {
		key.algorithms = kd.value;
	}

	var kd = pi.find(0x92);
	if (kd) {
		key.keyDomain = kd.value.toUnsigned();
	}
}



/**
 * Add a new key to the map of keys
 *
 * @param {HSMKey} key the HSM key
 */
SmartCardHSM.prototype.addKeyToMap = function(key) {
	var id = key.getId();
	this.idmap[id] = key;

	var label = key.getLabel();
	if (label) {
		this.namemap[label] = key;
	}

	var p15id = key.getPKCS15Id();
	if (p15id) {
		this.p15idmap[p15id.toString(HEX)] = key;
	}
}



/**
 * Get a key reference object
 *
 * @param {String/Number/ByteString} labelOrId label or id of key
 * @returns the key or null if not found
 * @type Key
 */
SmartCardHSM.prototype.getKey = function(labelOrId) {
	if (typeof(this.idlist) == "undefined") {
		this.enumerateKeys();
	}

	if (typeof(labelOrId) == "number") {
		var key = this.idmap[labelOrId];
	} else if (typeof(labelOrId) == "string") {
		var key = this.namemap[labelOrId];
	} else {
		var key = this.p15idmap[labelOrId.toString(HEX)];
	}

	if (key == undefined) {
		return null;
	}
	return key;
}



/**
 * Return a list of key objects
 *
 * @type SmartCardHSMKey[]
 * @return the list of keys
 */
SmartCardHSM.prototype.getKeys = function() {
	if (typeof(this.idlist) == "undefined") {
		this.enumerateKeys();
	}

	var keylist = [];
	for (var i in this.idmap) {
		keylist.push(this.idmap[i]);
	}
	return keylist;
}



/**
 * Determine a free id in the list of FID for the given prefix.
 *
 * @param {Number} the prefix to look at
 * @param {ByteString} the list of FID as returned from the device
 * @type Number
 * @return a free id for the given prefix or -1 if range is exhausted.
 */
SmartCardHSM.determineFreeId = function(prefix, fobs) {
	var map = new Bitmap(256);

	for (var i = 0; i < fobs.length; i+= 2) {
		if (fobs.byteAt(i) == prefix) {
			map.toggle(fobs.byteAt(i + 1));
		}
	}

	return map.determineFirstUnset();
}



/**
 * Determine a free FID in the list of FID for the given prefix.
 *
 * @param {Number} the prefix to look at
 * @param {ByteString} the list of FID as returned from the device
 * @type ByteString
 * @return a free two byte file identifier (FID) for the given prefix or null if range is exhausted.
 */
SmartCardHSM.determineFreeFid = function(prefix, fobs) {
	var id = SmartCardHSM.determineFreeId(prefix, fobs);
	if (id < 0) {
		return null;
	}
	return ByteString.valueOf((prefix << 8) + id);
}



/**
 * Enumerate Data Objects
 *
 * @type String[]
 * @return the list of data object labels
 */
SmartCardHSM.prototype.enumerateDataObjects = function() {
	this.donamemap = [];
	var dolist = [];

	var fobs = this.enumerateObjects();

	// Process PKCS#15 data object descriptions
	for (var i = 0; i < fobs.length; i+= 2) {
		if (fobs.byteAt(i) == SmartCardHSM.DODPREFIX) {
			var descfid = fobs.bytes(i, 2);
			var descbin = this.readBinary(descfid);
			var asn = new ASN1(descbin);
//			print(asn);
			var coa = asn.get(0);
			if (coa.elements > 0) {
				var label = coa.get(0).value.toString(ASCII);
			} else {
				var label = "No label (" + i + ")";
			}
			var taga1 = asn.find(0xA1);
			if (taga1) {
				var datafid = taga1.get(0).get(0).value;
				this.donamemap[label] = { datafid: datafid, descfid: descfid };
				dolist.push(label);
			}
		}
	}

	return dolist;
}



/**
 * Check if the data object is present
 *
 * @param {String} label the label
 * @type boolean
 * @return true if the data object exists
 */
SmartCardHSM.prototype.hasDataObject = function(label) {
	if (typeof(this.donamemap) == "undefined"){
		this.enumerateDataObjects();
	}
	return (this.donamemap[label] != undefined);
}



/**
 * Return the file identifier containing the data object.
 *
 * @param {String} label the label.
 * @type ByteString
 * @return the two byte file identifier
 */
SmartCardHSM.prototype.getDataObjectFileIdentifier = function(label) {
	if (typeof(this.donamemap) == "undefined"){
		this.enumerateDataObjects();
	}
	var e = this.donamemap[label];
	if (e == undefined) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Data object " + label + " not found");
	}
	return e.datafid;
}



/**
 * Import a data object
 *
 * @param {String} label the unique label to reference the new data object
 * @param {Boolean} privObj true to store the data object with read protection
 * @param {ByteString} data the data blob to store
 */
SmartCardHSM.prototype.importDataObject = function(label, privObj, data) {
	var fobs = this.enumerateObjects();

	var e = this.donamemap[label];
	if (e != undefined) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Data object " + label + " does already exist");
	}

	if (privObj) {
		var datafid = SmartCardHSM.determineFreeFid(SmartCardHSM.CONFIDENTIALDATAPREFIX, fobs);
	} else {
		var datafid = SmartCardHSM.determineFreeFid(SmartCardHSM.PUBLICDATAPREFIX, fobs);
	}

	if (datafid == null) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Out of space for data objects");
	}

	var desc = SmartCardHSM.buildDataObjectDescription(label, undefined, datafid, "KeyManager");

	var descfid = SmartCardHSM.determineFreeFid(SmartCardHSM.DODPREFIX, fobs);

	if (descfid == null) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Out of space for data objects descriptor");
	}

	this.updateBinary(datafid, 0, data);
	this.updateBinary(descfid, 0, desc.getBytes());
	this.donamemap[label] = { datafid: datafid, descfid: descfid };
}



/**
 * Delete the data object references by the label.
 *
 * @param {String} label the label of the data object
 */
SmartCardHSM.prototype.deleteDataObject = function(label) {
	if (typeof(this.donamemap) == "undefined"){
		this.enumerateDataObjects();
	}
	var e = this.donamemap[label];
	if (e == undefined) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Data object " + label + " not found");
	}
	this.deleteFile(e.descfid);
	this.deleteFile(e.datafid);
	delete this.donamemap[label];
}



/**
 * Get crypto object
 *
 * @type HSMCrypto
 * @return the HSMCrypto object
 */
SmartCardHSM.prototype.getCrypto = function() {
	if (this.crypto == undefined) {
		this.crypto = new SmartCardHSMCrypto(new Crypto());
	}
	return this.crypto;
}



/**
 * @private
 */
SmartCardHSM.prototype.getTokenInfo = function() {
	if (this.tokenInfo != undefined) {
		return this.tokenInfo;
	}

	if (!this.hasFile(SmartCardHSM.EF_TokenInfo)) {
		return;
	}

	var bin = this.readBinary(SmartCardHSM.EF_TokenInfo);
	this.tokenInfo = new ASN1(bin);
	return this.tokenInfo;
}



/**
 * Get Token Label
 *
 * @type String
 * @return the token label from CIAInfo
 */
SmartCardHSM.prototype.getLabel = function() {
	var ti = this.getTokenInfo();
	if (!ti) {
		return;
	}

	var a = ti.find(0x80);
	if (!a) {
		return;
	}
	return a.value.toString(UTF8);
}



/**
 * @private
 */
SmartCardHSM.prototype.getStaticTokenInfo = function() {
	if (this.staticTokenInfo != undefined) {
		return this.staticTokenInfo;
	}

	if (!this.hasFile(SmartCardHSM.EF_StaticTokenInfo)) {
		return;
	}

	var bin = this.readBinary(SmartCardHSM.EF_StaticTokenInfo);
	this.staticTokenInfo = new ASN1(bin);
	return this.staticTokenInfo;
}



/**
 * Get ProvisioningURL
 *
 * @type String
 * @return the configured ProvisioningURL or undefined
 */
SmartCardHSM.prototype.getProvisioningURL = function() {
	var ti = this.getStaticTokenInfo();
	if (!ti) {
		return;
	}

	var a = ti.find(0x80);
	if (!a) {
		return;
	}
	return a.value.toString(UTF8);
}



/**
 * Get Key Check Value of Token Management Key
 *
 * @type ByteString
 * @return the configured KCV of the Token Management Key or undefined
 */
SmartCardHSM.prototype.getTokenManagementKeyKCV = function() {
	var ti = this.getStaticTokenInfo();
	if (!ti) {
		return;
	}

	var a = ti.find(0x81);
	if (!a) {
		return;
	}
	return a.value;
}



/**
 * Get salt for SO-PIN derivation using  the Token Management Key
 *
 * @type ByteString
 * @return the configured salt
 */
SmartCardHSM.prototype.getTokenManagementKeySalt = function() {
	var ti = this.getStaticTokenInfo();
	if (!ti) {
		return;
	}

	var a = ti.find(0x82);
	if (!a) {
		return;
	}
	return a.value;
}



/**
 * Create crypto object implementing access to the SmartCard-HSM
 *
 * @class Wrapper to provide Crypto interface to SmartCard-HSM
 * @constructor
 * @param {Crypto} crypto the backend crypto provider
 */
function SmartCardHSMCrypto(crypto) {
	this.crypto = crypto;
}



/**
 * Sign a message using the defined mechanism and key
 *
 * @param {HSMKey} key the private key
 * @param {Number} mech the mechanism (e.g. Crypto.ECDSA)
 * @param {ByteString} message the message to be signed
 * @type ByteString
 * @return the signature
 */
SmartCardHSMCrypto.prototype.sign = function(key, mech, message) {
	if (key instanceof SmartCardHSMKey) {
		return key.sign(mech, message);
	} else {
		return this.crypto.sign(key, mech, message);
	}
}



/**
 * Decrypt a message using the defined mechanism and key
 *
 * @param {HSMKey} key the private key
 * @param {Number} mech the mechanism (e.g. Crypto.RSA_PKCS1)
 * @param {ByteString} data the cryptogram
 * @param {ByteString} iv the initialization vector for symmetric ciphers
 * @type ByteString
 * @return the plain text
 */
SmartCardHSMCrypto.prototype.decrypt = function(key, mech, data, iv) {
	if (key instanceof SmartCardHSMKey) {
		return key.decrypt(mech, data);
	} else {
		return this.crypto.decrypt(key, mech, data, iv);
	}
}



/**
 * Verify a message using the defined mechanism and key
 *
 * @param {Key} key the public key
 * @param {Number} mech the mechanism (e.g. Crypto.ECDSA)
 * @param {ByteString} message the message to be signed
 * @param {ByteString} signature the signature to verify
 * @type Boolean
 * @return true if signature is valid
 */
SmartCardHSMCrypto.prototype.verify = function(key, mech, message, signature) {
	return this.crypto.verify(key, mech, message, signature);
}



/**
 * Create a key access object
 *
 * @class Class implementing key access
 * @param {SmartCardHSM} sc the card access object
 * @param {Number} id the key identifier
 */
function SmartCardHSMKey(sc, id) {
	this.sc = sc;
	this.id = id;
	if (this.sc.useExternalHashInECDSA) {
		this.crypto = new Crypto();
	}
}

exports.SmartCardHSMKey = SmartCardHSMKey;


/**
 * Set the PKCS#15 private key description
 *
 * @param {ASN1} desc the description
 */
SmartCardHSMKey.prototype.setDescription = function(desc) {
	this.desc = desc;
}



/**
 * Return the key identifier
 *
 * @type Number
 * @return the key identifier
 */
SmartCardHSMKey.prototype.getId = function() {
	return this.id;
}



/**
 * Return the key label as encoded in the PKCS#15 structure
 *
 * @type String
 * @return the key label
 */
SmartCardHSMKey.prototype.getLabel = function() {
	if (this.desc == undefined) {
		return undefined;
	}
	if ((this.desc.get(0).elements == 0) || this.desc.get(0).get(0).tag != 0x0C) {
		return undefined;
	}

	return this.desc.get(0).get(0).value.toString(UTF8);
}



/**
 * Return the key id as encoded in the PKCS#15 structure
 *
 * @type ByteString
 * @return the key identifier
 */
SmartCardHSMKey.prototype.getPKCS15Id = function() {
	if (this.desc == undefined) {
		return undefined;
	}
	return this.desc.get(1).get(0).value;
}



/**
 * Return the key size in bits
 *
 * @type Number
 * @return the key size in bits
 */
SmartCardHSMKey.prototype.getSize = function() {
	if (this.desc == undefined) {
		return undefined;
	}
//	GPSystem.log(GPSystem.DEBUG, module.id, this.desc);
	if (this.desc.get(2).elements > 1) {	// Fix a bug from early versions
		return this.desc.get(2).get(1).value.toUnsigned();
	}

	if (this.desc.tag == 0xA8) {
		var size = this.desc.get(2).get(0).get(0).value.toUnsigned();
	} else {
		var a1 = this.desc.find(0xA1);
		var size = a1.get(0).get(1).value.toUnsigned();

		if (size == 528) {
			size = 521;		// Fix bug in OpenSCDP returning the wrong key size for secp521 keys
		}
	}

	return size;
}



/**
 * Return the key type
 *
 * @type String
 * @return the key type
 */
SmartCardHSMKey.prototype.getType = function() {
	if (this.desc == undefined) {
		return undefined;
	}

	if (this.desc.tag == 0xA0) {
		return "EC";
	} else if (this.desc.tag == 0x30) {
		return "RSA";
	} else if (this.desc.tag == 0xA8) {
		return "AES";
	}

	return undefined;
}



/**
 * Sign data using a key in the SmartCard-HSM
 *
 * @param {Number} mech the signing mechanism
 * @param {ByteString} data to be signed
 * @type ByteString
 * @return the signature
 */
SmartCardHSMKey.prototype.sign = function(mech, data) {
	var algo;
	if (mech) {
		switch(mech) {
		case Crypto.RSA:
			algo = 0x20;
			break;
		case Crypto.RSA_SHA1:
			algo = 0x31;
			break;
		case Crypto.RSA_SHA224:
			algo = 0x32;
			break;
		case Crypto.RSA_SHA256:
			algo = 0x33;
			break;
		case Crypto.RSA_SHA384:
			algo = 0x34;
			break;
		case Crypto.RSA_SHA512:
			algo = 0x35;
			break;
		case Crypto.RSA_PKCS1:
			if (this.sc.major && this.sc.major >= 4) {
				algo = 0x30;
			} else {
				algo = 0x20;
				var keysize = this.getSize();
				if (!keysize) {
					throw new GPError(module.id, GPError.INVALID_DATA, 0, "Can't determine key size");
				}
				data = PKCS1.encode_EMSA_V15(keysize, data);
			}
			break;
		case Crypto.RSA_PSS:
		case 0x80:
			algo = 0x40;
			break;
		case Crypto.RSA_PSS_SHA1:
			algo = 0x41;
			break;
		case Crypto.RSA_PSS_SHA224:
			algo = 0x42;
			break;
		case Crypto.RSA_PSS_SHA256:
			algo = 0x43;
			break;
		case Crypto.RSA_PSS_SHA384:
			algo = 0x44;
			break;
		case Crypto.RSA_PSS_SHA512:
			algo = 0x45;
			break;
		case Crypto.ECDSA:
			algo = 0x70;
			break;
		case Crypto.ECDSA_SHA1:
			if (this.sc.useExternalHashInECDSA) {
				algo = 0x70;
				var data = this.crypto.digest(Crypto.SHA_1, data);
			} else {
				algo = 0x71;
			}
			break;
		case Crypto.ECDSA_SHA224:
			if (this.sc.useExternalHashInECDSA) {
				algo = 0x70;
				var data = this.crypto.digest(Crypto.SHA_224, data);
			} else {
				algo = 0x72;
			}
			break;
		case Crypto.ECDSA_SHA256:
			if (this.sc.useExternalHashInECDSA) {
				algo = 0x70;
				var data = this.crypto.digest(Crypto.SHA_256, data);
			} else {
				algo = 0x73;
			}
			break;
		case Crypto.ECDSA_SHA384:
			if (this.sc.useExternalHashInECDSA) {
				algo = 0x70;
				var data = this.crypto.digest(Crypto.SHA_384, data);
			} else {
				algo = 0x74;
			}
			break;
		case Crypto.ECDSA_SHA512:
			if (this.sc.useExternalHashInECDSA) {
				algo = 0x70;
				var data = this.crypto.digest(Crypto.SHA_512, data);
			} else {
				algo = 0x75;
			}
			break;
		case Crypto.AES_CMAC:
			return this.sc.deriveSymmetricKey(this.id, SmartCardHSM.ALG_CMAC, data);
		default:
			throw new GPError("SmartCardHSMKey", GPError.INVALID_DATA, mech, "Unsupported crypto mechanism");
		}
	}

	return this.sc.sign(this.id, algo, data);
}



/**
 * Decrypt data using a key in the SmartCard-HSM
 *
 * @param {Number} mech the decipher mechanism
 * @param {ByteString} data to be deciphered
 * @type ByteString
 * @return the plain message
 */
SmartCardHSMKey.prototype.decrypt = function(mech, data) {
	var algo;
	if (mech) {
		switch(mech) {
		case Crypto.RSA:
			break;
		case Crypto.RSA_PKCS1:
			break;
		case Crypto.RSA_OAEP_SHA224:
			algo = Crypto.SHA_224;
			break;
		case Crypto.RSA_OAEP_SHA256:
			algo = Crypto.SHA_256;
			break;
		case Crypto.RSA_OAEP_SHA384:
			algo = Crypto.SHA_384;
			break;
		case Crypto.RSA_OAEP_SHA512:
			algo = Crypto.SHA_512;
			break;
		default:
			throw new GPError("SmartCardHSMKey", GPError.INVALID_DATA, mech, "Unsupported crypto mechanism");
		}
	}

	var em = this.sc.decipher(this.id, 0x21, data);

	var plain = em;

	if (mech != Crypto.RSA) {
		if (mech == Crypto.RSA_PKCS1) {
			var plain = PKCS1.decode_EME_V15(em);
		} else {
			var crypto = this.sc.getCrypto().crypto;

			var plain = PKCS1.decode_EME_OAEP(crypto, null, algo, em);
		}

		if (!plain) {
			throw new GPError("SmartCardHSMKey", GPError.CRYPTO_FAILED, mech, "Decryption failed");
		}
	}

	return plain;
}



/**
 * Return human readable string
 */
SmartCardHSMKey.prototype.toString = function() {
	return "SmartCardHSMKey(id=" + this.id + ")";
}



/**
 * Initialize SmartCard-HSM
 *
 * @class Class implementing the device initialization methods
 * @param {Card} card the card object
 */
function SmartCardHSMInitializer(card) {
	this.card = card;
	this.initializationCode = new ByteString("57621880", ASCII);
	this.userPIN = new ByteString("648219", ASCII);
	this.userPINSet = false;
	this.useDefaultUserPIN = true;
	this.retryCounterInitial = 3;
	this.options = 0x0001;
	this.keyshares = -1;
	this.keyDomains = -1;
	this.numberOfPublicKeys = 0;
	this.requiredPublicKeysForAuthentication = 0;
	this.bioslot = [];
	this.label = undefined;
}

exports.SmartCardHSMInitializer = SmartCardHSMInitializer;



/**
 * Set the initialization code
 *
 * @param {ByteString} initializationCode an 8 byte code
 */
SmartCardHSMInitializer.prototype.setInitializationCode = function(initializationCode) {
	if (!(initializationCode instanceof ByteString)) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "initializationCode must be a ByteString");
	}
	if (initializationCode.length != 8) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "initializationCode must have 8 bytes");
	}

	this.initializationCode = initializationCode;
}



/**
 * Set the User PIN
 *
 * @param {ByteString} userPIN a 6 to 16 byte code
 */
SmartCardHSMInitializer.prototype.setUserPIN = function(userPIN) {
	if (!(userPIN instanceof ByteString)) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "userPIN must be a ByteString");
	}
	if ((userPIN.length < 6) || (userPIN.length > 16)) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "userPIN must be between 6 and 16 bytes");
	}

	this.userPIN = userPIN;
	this.userPINSet = true;
	this.useDefaultUserPIN = false;
}



/**
 * Set the retry counter
 *
 * The SmartCard-HSM enforces a retry counter <= 3 for PIN length 6
 * The SmartCard-HSM enforces a retry counter <= 5 for PIN length 7
 * The SmartCard-HSM enforces a retry counter <= 10 for PIN length larger than 7
 *
 * @param {Number} retryCounterInitial in the range 1 to 10.
 */
SmartCardHSMInitializer.prototype.setRetryCounterInitial = function(retryCounterInitial) {
	if (typeof(retryCounterInitial) != "number") {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "retryCounterInitial must be a number");
	}
	if ((retryCounterInitial < 1) || (retryCounterInitial > 10)) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "retryCounterInitial must be between 1 and 10");
	}
	this.retryCounterInitial = retryCounterInitial;
}



/**
 * Set the number of DKEK shares
 *
 * @param {Number} keyshares number of DKEK shares in the range 0 to 255
 */
SmartCardHSMInitializer.prototype.setDKEKShares = function(keyshares) {
	if (typeof(keyshares) != "number") {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "keyshares must be a number");
	}
	if ((keyshares < 0) || (keyshares > 255)) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "keyshares must be between 0 and 255");
	}
	this.keyshares = keyshares;
	this.keyDomains = -1;
}



/**
 * Set the number of key domains
 *
 * @param {Number} keyDomains number of key domains
 */
SmartCardHSMInitializer.prototype.setKeyDomains = function(keyDomains) {
	if (typeof(keyDomains) != "number") {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "keyDomains must be a number");
	}

	this.keyDomains = keyDomains;
	this.keyshares = -1;
}



/**
 * Enable or disable RESET RETRY COUNTER command
 *
 * @param {Boolean} enable true (default) to allow RESET RETRY COUNTER command to reset user PIN using the initialization code
 */
SmartCardHSMInitializer.prototype.setResetRetryCounterMode = function(enable) {
	if (typeof(enable) == "undefined") {
		var enable = false;
	}

	this.options = (this.options & 0xFFFE) + (enable ? 1 : 0);
}



/**
 * Enable or disable transport PIN mode
 *
 * @param {Boolean} enable true (non-default) to set user PIN to transport state
 */
SmartCardHSMInitializer.prototype.setTransportPINMode = function(enable) {
	if (typeof(enable) == "undefined") {
		var enable = true;
	}

	this.options = (this.options & 0xFFFD) + (enable ? 2 : 0);
}



/**
 * Enable or disable session PIN mode
 *
 * @param {Number} 0 - disable, 1 - enable with clear-on-reset 3 - enable with explicit clearing
 */
SmartCardHSMInitializer.prototype.setSessionPINMode = function(mode) {
	assert(typeof(mode) == "number", "Argument mode must be number");
	assert(mode >= 0 && mode <= 3 && mode != 2, "Argument mode must be 0, 1 or 3");

	this.options = (this.options & 0xFFF3) + (mode << 2);
}



/**
 * Enable or disable replacing of a PKA key
 *
 * @param {Boolean} enable true (non-default) to allow replacing of a PKA key
 */
SmartCardHSMInitializer.prototype.setReplacePKAKeyMode = function(enable) {
	if (typeof(enable) == "undefined") {
		var enable = false;
	}

	this.options = (this.options & 0xFFF7) + (enable ? 8 : 0);
}



/**
 * Enable the combined authentication mode of user pin and public key authentication.
 *
 * @param {Boolean} enable true (non-default) to require public key authentication and user authentication
 */
SmartCardHSMInitializer.prototype.setCombinedAuthenticationMode = function(enable) {
	if (typeof(enable) == "undefined") {
		var enable = false;
	}

	this.options = (this.options & 0xFFEF) + (enable ? 16 : 0);
}



/**
 * If enabled RESET RETRY COUNTER only resets the error counter.
 * Otherwise  RRC allows changing the PIN
 *
 * @param {Boolean} resetOnly true to only reset the error counter, false otherwise (default)
 */
SmartCardHSMInitializer.prototype.setResetRetryCounterResetOnlyMode = function(resetOnly) {
	if (typeof(resetOnly) == "undefined") {
		var resetOnly = false;
	}

	this.options = (this.options & 0xFFDF) + (resetOnly ? 32 : 0);
}



/**
 * Set parameter for public key authentication with n-of-m scheme, namely the values for n and m
 *
 * @param {Number} requiredPublicKeysForAuthentication number of key that must be authenticated for access
 * @param {Number} numberOfPublicKeys to register
 */
SmartCardHSMInitializer.prototype.setPublicKeyAuthenticationParameter = function(requiredPublicKeysForAuthentication, numberOfPublicKeys) {
	if ((numberOfPublicKeys < 1) || (numberOfPublicKeys > 90)) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 1, "numberOfPublicKeys must be between 1 and 90");
	}
	if ((requiredPublicKeysForAuthentication < 1) || (requiredPublicKeysForAuthentication > numberOfPublicKeys)) {
		throw new GPError("SmartCardHSMInitializer", GPError.INVALID_DATA, 2, "requiredPublicKeysForAuthentication must be between 1 and " + numberOfPublicKeys);
	}
	this.numberOfPublicKeys = numberOfPublicKeys;
	this.requiredPublicKeysForAuthentication = requiredPublicKeysForAuthentication;
	this.useDefaultUserPIN = false;
}



/**
 * Select the biometric matching server for a one of the biometric templates
 *
 * @param {Number} slot either 0 or 1 for first or second template
 * @param {ByteString} aid the application identifier of the on-card biometric server
 * @param {Number} param one byte parameter passed to the server during initialization
 */
SmartCardHSMInitializer.prototype.setBioTemplate = function(slot, aid, param) {
	assert(typeof(slot) == "number", "slot must be a number");
	assert(slot >= 0 && slot <= 1, "slot must be either 0 or 1");
	assert(aid instanceof ByteString, "aid must be a ByteString");
	assert(typeof(param) == "number", "param must be a number");
	assert(param >= 0 && param <= 255, "param must be between 0 and 255");

	this.bioslot[slot] = { aid: aid, param: param };
	this.useDefaultUserPIN = false;
}



/**
 * Set the label to be written to a minimal CIAInfo in EF 2F03
 *
 * @param {String} label the label
 */
SmartCardHSMInitializer.prototype.setLabel = function(label) {
	this.label = label;
}



/**
 * Set the provisioning URL to be written to fixed parameter in CB00.
 *
 * @param {String} provisioningURL the URL at which this SE will be provisioned
 */
SmartCardHSMInitializer.prototype.setProvisioningURL = function(provisioningURL) {
	this.provisioningURL = provisioningURL;
}



/**
 * Set the key check value of the token management key and the optional salt
 * used for SO-PIN derivation
 *
 * @param {ByteString} kcv the key check value of the token management key
 * @param {ByteString} salt the salt used to derive the SO-PIN
 */
SmartCardHSMInitializer.prototype.setTokenManagementKey = function(kcv, salt) {
	this.tokenManagementKeyKCV = kcv;
	this.tokenManagementKeySalt = salt;
}



/**
 * Perform Initialization
 */
SmartCardHSMInitializer.prototype.initialize = function() {
	var s = new ASN1(0x30,	new ASN1(0x80, ByteString.valueOf(this.options, 2)));

	if (this.userPINSet || this.useDefaultUserPIN) {
		s.add(new ASN1(0x81, this.userPIN));
	}

	s.add(new ASN1(0x82, this.initializationCode));

	if (this.userPINSet || this.useDefaultUserPIN) {
		s.add(new ASN1(0x91, ByteString.valueOf(this.retryCounterInitial)));
	}

	if (this.keyshares != -1) {
		s.add(new ASN1(0x92, ByteString.valueOf(this.keyshares)));
	}

	if (this.keyDomains != -1) {
		s.add(new ASN1(0x97, ByteString.valueOf(this.keyDomains)));
	}

	if (this.numberOfPublicKeys > 0) {
		s.add(new ASN1(0x93, ByteString.valueOf(this.numberOfPublicKeys).concat(ByteString.valueOf(this.requiredPublicKeysForAuthentication))));
	}

	if (this.bioslot[0]) {
		var o = this.bioslot[0];
		s.add(new ASN1(0x95, ByteString.valueOf(o.param).concat(o.aid)));
	}

	if (this.bioslot[1]) {
		var o = this.bioslot[1];
		s.add(new ASN1(0x96, ByteString.valueOf(o.param).concat(o.aid)));
	}

	this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x50, 0x00, 0x00, s.value, [0x9000, 0x6A84]);

	if (this.card.SW == 0x6A84) {
		// Due to the nature of the JCRE, a first call to initialize may run out of memory,
		// as the garbage collector for the removed objects is only run during the next
		// APDU invocation.
		this.card.sendSecMsgApdu(Card.ALL, 0x80, 0x50, 0x00, 0x00, s.value, [0x9000]);
	}

	if (this.label) {
		var a = new ASN1(0x30,
				new ASN1(0x54, new ByteString("0000", HEX)),
				new ASN1(0x53,
					new ASN1(0x30,
						new ASN1(0x02, new ByteString("00", HEX)),
						new ASN1(0x80, new ByteString(this.label, UTF8)),
						new ASN1(0x03, new ByteString("0500", HEX)))
				)
			);

		var p1 = SmartCardHSM.EF_TokenInfo.byteAt(0);
		var p2 = SmartCardHSM.EF_TokenInfo.byteAt(1);
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xD7, p1, p2, a.value, [0x9000]);
	}

	if (this.provisioningURL || this.tokenManagementKeyKCV || this.tokenManagementKeySalt) {
		var l = new ASN1(ASN1.SEQUENCE);
		if (this.provisioningURL) {
			l.add(new ASN1(0x80, new ByteString(this.provisioningURL, UTF8)));
		}
		if (this.tokenManagementKeyKCV) {
			l.add(new ASN1(0x81, this.tokenManagementKeyKCV));
		}
		if (this.tokenManagementKeySalt) {
			l.add(new ASN1(0x82, this.tokenManagementKeySalt));
		}

		var a = new ASN1(0x30,
				new ASN1(0x54, new ByteString("0000", HEX)),
				new ASN1(0x53, l)
			);

		var p1 = SmartCardHSM.EF_StaticTokenInfo.byteAt(0);
		var p2 = SmartCardHSM.EF_StaticTokenInfo.byteAt(1);
		this.card.sendSecMsgApdu(Card.ALL, 0x00, 0xD7, p1, p2, a.value, [0x9000]);
	}
}



/**
 * Create a key specification generator instance
 *
 * @class Class implementing an encoder for the C-Data required in GENERATE ASYMMETRIC KEY PAIR
 * @param {Number} keytype must be either Crypto.RSA, Crypto.EC or Crypto.AES
 * @param {Number/Key} keysizeOrDP must be 1024, 1536, 2048, 3072 or 4096 for RSA, 128, 192 or 256 for AES and key object with Key.ECC_CURVE_OID set for EC
 */
function SmartCardHSMKeySpecGenerator(keytype, keysizeOrDP) {
	this.keytype = keytype;

	switch(keytype) {
		case Crypto.RSA:
			if (typeof(keysizeOrDP) != "number") {
				throw new GPError("SmartCardHSMKeySpecGenerator", GPError.INVALID_DATA, 3, "keysizeIdDP must be of a number for RSA keys");
			}
			this.keysize = keysizeOrDP;
			this.defaultAlgo = new ByteString("id-TA-RSA-v1-5-SHA-256", OID);
			break;
		case Crypto.EC:
			if ((typeof(keysizeOrDP) != "object") || !(keysizeOrDP instanceof Key)) {
				throw new GPError("SmartCardHSMKeySpecGenerator", GPError.INVALID_DATA, 3, "keysizeIdDP must be a Key instance");
			}
			this.domainParameter = keysizeOrDP;
			this.defaultAlgo = new ByteString("id-TA-ECDSA-SHA-256", OID);
			break;
		case Crypto.AES:
			if (typeof(keysizeOrDP) != "number") {
				throw new GPError("SmartCardHSMKeySpecGenerator", GPError.INVALID_DATA, 3, "keysizeIdDP must be of a number for AES keys");
			}
			this.keysize = keysizeOrDP;
			break;
		default:
			throw new GPError("SmartCardHSMKeySpecGenerator", GPError.INVALID_DATA, 3, "keytype must be Crypto.RSA or Crypto.EC");
	}
	this.CHR = new PublicKeyReference("UTDUMMY00001");
	this.innerCAR = new PublicKeyReference("UTDUMMY00001");
}

exports.SmartCardHSMKeySpecGenerator = SmartCardHSMKeySpecGenerator;



/**
 * Set key use counter for key
 *
 * @param {keyUseCounter} keyUseCounter in the range 1 to 2^64 - 2
 */
SmartCardHSMKeySpecGenerator.prototype.setKeyUseCounter = function(keyUseCounter) {
	if ((keyUseCounter < 0) || (keyUseCounter >= 0xFFFFFFFF)) {
		throw new GPError("SmartCardHSMKeySpecGenerator", GPError.INVALID_DATA, 1, "keyUseCounter must be between 0 and 0xFFFFFFFF");
	}
	this.keyUseCounter = keyUseCounter;
}



/**
 * Set key domain
 *
 * @param {Number} keyDomain the key domain to which the key shall be added
 */
SmartCardHSMKeySpecGenerator.prototype.setKeyDomain = function(keyDomain) {
	this.keyDomain = keyDomain;
}



/**
 * Set wrapping key
 *
 * @param {Number} wrappingKey the key to used for wrapping a newly generated symmetric key
 */
SmartCardHSMKeySpecGenerator.prototype.setWrappingKey = function(wrappingKey) {
	this.wrappingKey = wrappingKey;
}



/**
 * Set algorithm list
 *
 * @param {ByteString} algorithms the list of algorithms allowed for this key
 */
SmartCardHSMKeySpecGenerator.prototype.setAlgorithms = function(algorithms) {
	this.algorithms = algorithms;
}



/**
 * Set certificate holder reference for key
 *
 * @param {PublicKeyReference} CHR certificate holder reference
 */
SmartCardHSMKeySpecGenerator.prototype.setCHR = function(CHR) {
	this.CHR = CHR;
}



/**
 * Set certificate holder reference of CA this request shall be sent to
 *
 * @param {PublicKeyReference} CAR certificate holder reference
 */
SmartCardHSMKeySpecGenerator.prototype.setInnerCAR = function(CAR) {
	this.innerCAR = CAR;
}



/**
 * Set holder reference of the key signing this request
 *
 * @param {PublicKeyReference} CAR certificate holder reference
 */
SmartCardHSMKeySpecGenerator.prototype.setOuterCAR = function(CAR) {
	this.outerCAR = CAR;
}



/**
 * @private
 */
SmartCardHSMKeySpecGenerator.prototype.encodeRSAKeySpec = function() {
	var p = new ASN1("Public Key", 0x7F49,
			new ASN1("Object Identifier", 0x06, this.defaultAlgo),
			new ASN1("Public Key Exponent", 0x82, ByteString.valueOf(65537)),
			new ASN1("Key Size", 0x02, ByteString.valueOf(this.keysize))
		);
	return p;
}



/**
 * @private
 */
SmartCardHSMKeySpecGenerator.prototype.encodeECKeySpec = function() {
	// Encode G
	var bb = new ByteBuffer();
	// uncompressed encoding
	bb.append(new ByteString("04", HEX));
	bb.append(this.domainParameter.getComponent(Key.ECC_GX));
	bb.append(this.domainParameter.getComponent(Key.ECC_GY));
	var G = bb.toByteString();

	var p = new ASN1("Public Key", 0x7F49,
			new ASN1("Object Identifier", 0x06, this.defaultAlgo),
			new ASN1("Prime Modulus", 0x81, this.domainParameter.getComponent(Key.ECC_P)),
			new ASN1("First coefficient a", 0x82, this.domainParameter.getComponent(Key.ECC_A)),
			new ASN1("Second coefficient b", 0x83, this.domainParameter.getComponent(Key.ECC_B)),
			new ASN1("Base Point G", 0x84, G),
			new ASN1("Order of the base point", 0x85, this.domainParameter.getComponent(Key.ECC_N)),
			new ASN1("Cofactor f", 0x87, SmartCardHSM.stripLeadingZeros(this.domainParameter.getComponent(Key.ECC_H)))
		);
	return p;
}



/**
 * @private
 */
SmartCardHSMKeySpecGenerator.prototype.encodeKeySpec = function() {
	if (this.keytype == Crypto.RSA) {
		return this.encodeRSAKeySpec();
	} else {
		return this.encodeECKeySpec();
	}
}



/**
 * Return the encoded key specification
 *
 * @type ByteString
 * @return the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR
 */
SmartCardHSMKeySpecGenerator.prototype.encode = function() {
	var t = new ASN1(0x30);

	if (this.keytype != Crypto.AES) {
		t.add(new ASN1("CPI", 0x5F29, new ByteString("00", HEX)));

		if ((typeof(this.innerCAR) != "undefined") && (this.innerCAR)) {
			t.add(new ASN1("CAR", 0x42, this.innerCAR.getBytes()));
		}

		t.add(this.encodeKeySpec());
		t.add(new ASN1("CHR", 0x5F20, this.CHR.getBytes()));

		if (typeof(this.outerCAR) != "undefined") {
			t.add(new ASN1("OuterCAR", 0x45, this.outerCAR.getBytes()));
		}
	}

	if (typeof(this.keyUseCounter) != "undefined") {
		t.add(new ASN1("Key use counter", 0x90, ByteString.valueOf(this.keyUseCounter, 4)));
	}

	if (typeof(this.algorithms) != "undefined") {
		t.add(new ASN1("Algorithms", 0x91, this.algorithms));
	}

	if (typeof(this.keyDomain) != "undefined") {
		t.add(new ASN1("KeyDomain", 0x92, ByteString.valueOf(this.keyDomain)));
	}

	if (typeof(this.wrappingKey) != "undefined") {
		t.add(new ASN1("Wrapping Key", 0x93, ByteString.valueOf(this.wrappingKey)));
	}

	return t.value;
}



/**
 * Create a key specification generator instance for AES keys
 *
 * @class Class implementing an encoder for the C-Data required in Generate Symmetric Key
 * @param {ByteString} allowedAlgorithms the list of allowed algorithm identifier
 */
function SmartCardHSMSymmetricKeySpecGenerator(allowedAlgorithms) {
	this.algorithms = allowedAlgorithms;
}

exports.SmartCardHSMSymmetricKeySpecGenerator = SmartCardHSMSymmetricKeySpecGenerator;



/**
 * Set key domain
 *
 * @param {Number} keyDomain the key domain to which the key shall be added
 */
SmartCardHSMSymmetricKeySpecGenerator.prototype.setKeyDomain = function(keyDomain) {
	this.keyDomain = keyDomain;
}



/**
 * Return the encoded AES key specification
 *
 * @type ByteString
 * @return the encoded C-Data for Generate Symmetric Key
 */
SmartCardHSMSymmetricKeySpecGenerator.prototype.encode = function() {
	var t = new ASN1(0x30);

	t.add(new ASN1("Algorithms", 0x91, this.algorithms));

	if (typeof(this.keyUseCounter) != "undefined") {
		t.add(new ASN1("Key use counter", 0x90, ByteString.valueOf(this.keyUseCounter, 4)));
	}

	if (typeof(this.keyDomain) != "undefined") {
		t.add(new ASN1("Key Domain", 0x92, ByteString.valueOf(this.keyDomain)));
	}

	if (typeof(this.wrappingKey) != "undefined") {
		t.add(new ASN1("Wrapping Key", 0x93, this.wrappingKey));
	}

	return t.value;
}



SmartCardHSM.test = function() {
	var crypto = new Crypto();
	var card = new Card(_scsh3.reader);
	var sc = new SmartCardHSM(card);

	var sci = new SmartCardHSMInitializer(card);
	sci.initialize();

	var pubKey = sc.validateCertificateChain(crypto);
	sc.openSecureChannel(crypto, pubKey);

	sc.verifyUserPIN(sci.userPIN);

	var kg = new SmartCardHSMKeySpecGenerator(Crypto.RSA, 1024);
	sc.generateAsymmetricKeyPair(1, 0, kg.encode());

	var dp = new Key();
	dp.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));

	var kg = new SmartCardHSMKeySpecGenerator(Crypto.EC, dp);
	sc.generateAsymmetricKeyPair(2, 0, kg.encode());

	var list = sc.enumerateKeys();
	GPSystem.log(GPSystem.DEBUG, module.id, "Keys on device: " + list);

	var crypto = sc.getCrypto();
	var message = new ByteString("Hello World", ASCII);

	var key = sc.getKey(1);
	var signature = crypto.sign(key, Crypto.RSA_SHA256, message);
	GPSystem.log(GPSystem.DEBUG, module.id, "Signature: " + signature);

	var key = sc.getKey(2);
	var signature = crypto.sign(key, Crypto.ECDSA, message);
	GPSystem.log(GPSystem.DEBUG, module.id, "Signature: " + signature);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Connector implementing a web service interface to a SPOC for the
 * distribution of card verifiable certificates used for terminal authentication as defined in CSN 36 9791
 */



/**
 * Creates a web service connector to access services of a SPOC as defined in CSN 36 9791
 *
 * @class Class implementing a SPOC web service connector
 * @constructor
 * @param {String} url the web service endpoint
 */
function SPOCConnection(url) {
	this.url = url;
	this.soapcon = new SOAPConnection(SOAPConnection.SOAP11);
	this.verbose = true;
	this.lastReturnCode = null;
}

exports.SPOCConnection = SPOCConnection;


/**
 * Get the last return code
 *
 * @returns the last return code received or null if none defined
 * @type String
 */
SPOCConnection.prototype.getLastReturnCode = function() {
	return this.lastReturnCode;
}



/**
 * Close the connector and release allocated resources
 */
SPOCConnection.prototype.close = function() {
	this.soapcon.close();
}



/**
 * Obtain a list of certificates from the SPOC
 *
 * @param {String} callerID two letter country code of the calling CVCA
 * @param {String} messageID unique message id generated by the caller
 * @returns a lists of card verifiable certificates from the SPOC or null in case of error
 * @type ByteString[]
 */
SPOCConnection.prototype.getCACertificates = function(callerID, messageID) {

	this.lastReturnCode = null;

	var ns = new Namespace("http://namespaces.unmz.cz/csn369791");

	var request =
		<csn:GetCACertificatesRequest xmlns:csn={ns}>
			<csn:callerID>{callerID}</csn:callerID>
			<csn:messageID>{messageID}</csn:messageID>
		</csn:GetCACertificatesRequest>

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	 {
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "GetCACertificates failed with : " + e.message);
	}

	this.response = response;

	var certlist = [];

	this.lastReturnCode = response.ns::result.toString();

	if (this.lastReturnCode == "ok_cert_available") {
		for each (var c in response.ns::certificateSequence.ns::certificate) {
			var cvc = new ByteString(c, BASE64);
			certlist.push(cvc);
			if (this.verbose) {
				GPSystem.log(GPSystem.INFO, module.id, cvc);
			}
		}
	} else {
		return null;
	}

	return certlist;
}



/**
 * Request a certificate from the SPOC using a web service
 *
 * @param {String} callerID two letter country code of the calling CVCA
 * @param {String} messageID unique message id generated by the caller
 * @param {ByteString} certreq the certificate request
 * @returns the new certificates
 * @type ByteString[]
 */
SPOCConnection.prototype.requestCertificate = function(certreq, callerID, messageID) {

	var soapConnection = new SOAPConnection();

	var ns = new Namespace("http://namespaces.unmz.cz/csn369791");

	var request =
		<csn:RequestCertificateRequest xmlns:csn={ns}>
			<csn:callerID>{callerID}</csn:callerID>
			<csn:messageID>{messageID}</csn:messageID>
			<csn:certificateRequest>{certreq.toString(BASE64)}</csn:certificateRequest>
		</csn:RequestCertificateRequest>

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	{
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "RequestCertificate failed with : " + e.message);
	}

	this.response = response;

	var certlist = [];

	this.lastReturnCode = response.ns::result.toString();

	if (this.lastReturnCode == "ok_cert_available") {
		for each (var c in response.ns::certificateSequence.ns::certificate) {
			var cvc = new ByteString(c, BASE64);
			certlist.push(cvc);
			if (this.verbose) {
				GPSystem.log(GPSystem.INFO, module.id, cvc);
			}
		}
	} else {
		return null;
	}

	return certlist;
}



/**
 * Send certificates to the SPOC
 *
 * @param {ByteString[]} certificates the list of certificates to post or null
 * @param {String} callerID two letter country code of the calling CVCA
 * @param {String} messageID unique message id generated by the caller (optional)
 * @param {String} statusInfo the status info provided by the sender
 * @type String
 * @return the returnCode
 */
SPOCConnection.prototype.sendCertificates = function(certificates, callerID, messageID, statusInfo) {

	var soapConnection = new SOAPConnection();

	var ns = new Namespace("http://namespaces.unmz.cz/csn369791");

	if (messageID) {
		if (certificates && certificates.length) {
			var request =
			<csn:SendCertificatesRequest xmlns:csn={ns}>
				<csn:callerID>{callerID}</csn:callerID>
				<!--Optional:-->
				<csn:messageID>{messageID}</csn:messageID>
				<!--Optional:-->
				<csn:certificateSequence>
				</csn:certificateSequence>
				<csn:statusInfo>{statusInfo}</csn:statusInfo>
			</csn:SendCertificatesRequest>
		} else {
			var request =
			<csn:SendCertificatesRequest xmlns:csn={ns}>
				<csn:callerID>{callerID}</csn:callerID>
				<!--Optional:-->
				<csn:messageID>{messageID}</csn:messageID>
				<csn:statusInfo>{statusInfo}</csn:statusInfo>
			</csn:SendCertificatesRequest>
		}
	} else {
		if (certificates && certificates.length) {
			var request =
			<csn:SendCertificatesRequest xmlns:csn={ns}>
				<csn:callerID>{callerID}</csn:callerID>
				<!--Optional:-->
				<csn:certificateSequence>
				</csn:certificateSequence>
				<csn:statusInfo>{statusInfo}</csn:statusInfo>
			</csn:SendCertificatesRequest>
		} else {
			var request =
			<csn:SendCertificatesRequest xmlns:csn={ns}>
				<csn:callerID>{callerID}</csn:callerID>
				<!--Optional:-->
				<csn:statusInfo>{statusInfo}</csn:statusInfo>
			</csn:SendCertificatesRequest>
		}
	}

	if (certificates && certificates.length) {
		var list = request.ns::certificateSequence;
		for (var i = 0; i < certificates.length; i++) {
			var cvc = certificates[i];
			list.ns::certificate += <csn:certificate xmlns:csn={ns}>{cvc.toString(BASE64)}</csn:certificate>
		}
	}

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	{
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "SendCertificates failed with : " + e.message);
	}

	this.response = response;

	this.lastReturnCode = response.ns::result.toString();

	return this.lastReturnCode;
}



/**
 * Obtain a list of certificates from the SPOC
 *
 * @param {String} callerID two letter country code of the calling CVCA
 * @param {String} messageID unique message id generated by the caller
 * @param {String} subject the subject of the message
 * @param {String} body the body of the message
 */
SPOCConnection.prototype.generalMessage = function(callerID, messageID, subject, body) {

	this.lastReturnCode = null;

	var ns = new Namespace("http://namespaces.unmz.cz/csn369791");

	var request =
		<csn:GeneralMessageRequest xmlns:csn={ns}>
			<csn:callerID>{callerID}</csn:callerID>
			<csn:messageID>{messageID}</csn:messageID>
			<csn:subject>{subject}</csn:subject>
			<csn:body>{body}</csn:body>
		</csn:GeneralMessageRequest>

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	 {
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "GeneralMessage failed with : " + e.message);
	}

	this.response = response;

	this.lastReturnCode = response.ns::result.toString();
}



/**
 * Convert a list of certificates in binary format to a list of CVC objects
 *
 * @param {ByteString[]} certlist the list of certificates
 * @type CVC[]
 * @return the list of certificate objects
 */
SPOCConnection.toCVCList = function(certlist) {
	var certs = [];
	for each (var cvcbin in certlist) {
		certs.push(new CVC(cvcbin));
	}
	return certs;
}



/**
 * Convert a list of certificate objects into a list of certificates in binary format
 *
 * @param {CVC[]} certlist the list of certificate objects
 * @type ByteString[]
 * @return the list of certificates
 */
SPOCConnection.fromCVCList = function(certlist) {
	var certs = [];
	for each (var cvc in certlist) {
		certs.push(cvc.getBytes());
	}
	return certs;
}



SPOCConnection.test = function() {
	var c = new SPOCConnection("http://localhost:8080/se/spoc");
	c.verbose = true;
	var certlist = c.getCACertificates("UT", "4711");
	for (var i = 0; i < certlist.length; i++) {
		print(certlist[i]);
	}
}
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions 
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:SPOC="http://namespaces.unmz.cz/csn369791"
	targetNamespace="http://namespaces.unmz.cz/csn369791">
	<wsdl:types>
		<xs:schema xmlns="http://namespaces.unmz.cz/csn369791"
			targetNamespace="http://namespaces.unmz.cz/csn369791"
			elementFormDefault="qualified"
			attributeFormDefault="unqualified">
			<xs:element name="certificateSequence">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="certificate" type="xs:base64Binary" minOccurs="1" maxOccurs="unbounded"></xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="RequestCertificateRequest">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="callerID" type="xs:string">
						</xs:element>
						<xs:element name="messageID" type="xs:string">
						</xs:element>
						<xs:element name="certificateRequest" type="xs:base64Binary">
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="RequestCertificateResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element ref="certificateSequence" minOccurs="0" maxOccurs="1">
						</xs:element>
						<xs:element name="result">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="ok_cert_available"></xs:enumeration>
									<xs:enumeration value="ok_reception_ack"></xs:enumeration>
									<xs:enumeration value="failure_inner_signature"></xs:enumeration>
									<xs:enumeration value="failure_outer_signature"></xs:enumeration>
									<xs:enumeration value="failure_syntax"></xs:enumeration>
									<xs:enumeration value="failure_request_not_accepted"></xs:enumeration>
									<xs:enumeration value="failure_internal_error"></xs:enumeration>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="SendCertificatesRequest">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="callerID" type="xs:string">
						</xs:element>
						<xs:element name="messageID" type="xs:string" minOccurs="0" maxOccurs="1">
						</xs:element>
						<xs:element minOccurs="0" maxOccurs="1" ref="certificateSequence">
						</xs:element>
						<xs:element name="statusInfo">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="new_cer_available_notification"></xs:enumeration>
									<xs:enumeration value="ok_cert_available"></xs:enumeration>
									<xs:enumeration value="failure_inner_signature"></xs:enumeration>
									<xs:enumeration value="failure_outer_signature"></xs:enumeration>
									<xs:enumeration value="failure_syntax"></xs:enumeration>
									<xs:enumeration value="failure_request_not_accepted"></xs:enumeration>
									<xs:enumeration value="failure_internal_error"></xs:enumeration>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="SendCertificatesResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="result">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="ok_received_correctly"></xs:enumeration>
									<xs:enumeration value="failure_syntax"></xs:enumeration>
									<xs:enumeration value="failure_messageID_unknown"></xs:enumeration>
									<xs:enumeration value="failure_internal_error"></xs:enumeration>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="GetCACertificatesRequest">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="callerID" type="xs:string">
						</xs:element>
						<xs:element name="messageID" type="xs:string">
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="GetCACertificatesResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element ref="certificateSequence" minOccurs="0" maxOccurs="1">
						</xs:element>
						<xs:element name="result">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="ok_cert_available"></xs:enumeration>
									<xs:enumeration value="ok_reception_ack"></xs:enumeration>
									<xs:enumeration value="failure_request_not_accepted"></xs:enumeration>
									<xs:enumeration value="failure_internal_error"></xs:enumeration>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="GeneralMessageRequest">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="callerID" type="xs:string">
						</xs:element>
						<xs:element name="messageID" type="xs:string">
						</xs:element>
						<xs:element name="subject" type="xs:string">
						</xs:element>
						<xs:element name="body" type="xs:string">
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="GeneralMessageResponse">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="result">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="ok"></xs:enumeration>
									<xs:enumeration value="failure_internal_error"></xs:enumeration>
								</xs:restriction>
							</xs:simpleType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:schema>
	</wsdl:types>
	<wsdl:message name="RequestCertificateRequest">
		<wsdl:part name="RequestCertificateRequest" element="SPOC:RequestCertificateRequest"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="RequestCertificateResponse">
		<wsdl:part name="RequestCertificateResponse" element="SPOC:RequestCertificateResponse"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="SendCertificatesRequest">
		<wsdl:part name="SendCertificatesRequest" element="SPOC:SendCertificatesRequest"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="SendCertificatesResponse">
		<wsdl:part name="SendCertificatesResponse" element="SPOC:SendCertificatesResponse"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="GetCACertificatesRequest">
		<wsdl:part name="GetCACertificatesRequest" element="SPOC:GetCACertificatesRequest"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="GetCACertificatesResponse">
		<wsdl:part name="GetCACertificatesResponse" element="SPOC:GetCACertificatesResponse"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="GeneralMessageRequest">
		<wsdl:part name="GeneralMessageRequest" element="SPOC:GeneralMessageRequest"></wsdl:part>
	</wsdl:message>
	<wsdl:message name="GeneralMessageResponse">
		<wsdl:part name="GeneralMessageResponse" element="SPOC:GeneralMessageResponse"></wsdl:part>
	</wsdl:message>
	<wsdl:portType name="SPOCPortType">
		<wsdl:operation name="RequestCertificate">
			<wsdl:input message="SPOC:RequestCertificateRequest"></wsdl:input>
			<wsdl:output message="SPOC:RequestCertificateResponse"></wsdl:output>			
		</wsdl:operation>
		<wsdl:operation name="SendCertificates">
			<wsdl:input message="SPOC:SendCertificatesRequest"></wsdl:input>
			<wsdl:output message="SPOC:SendCertificatesResponse"></wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCACertificates">
			<wsdl:input message="SPOC:GetCACertificatesRequest"></wsdl:input>
			<wsdl:output message="SPOC:GetCACertificatesResponse"></wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GeneralMessage">
			<wsdl:input message="SPOC:GeneralMessageRequest"></wsdl:input>
			<wsdl:output message="SPOC:GeneralMessageResponse"></wsdl:output>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="SPOCSOAPBinding" type="SPOC:SPOCPortType">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsdl:operation name="RequestCertificate">
			<soap:operation soapAction="RequestCertificate"/>
			<wsdl:input>
				<soap:body parts="RequestCertificateRequest" use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body parts="RequestCertificateResponse" use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="SendCertificates">
			<soap:operation soapAction="SendCertificates"/>
			<wsdl:input>
				<soap:body parts="SendCertificatesRequest" use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body parts="SendCertificatesResponse" use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GetCACertificates">
			<soap:operation soapAction="GetCACertificates"/>
			<wsdl:input>
				<soap:body parts="GetCACertificatesRequest" use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body parts="GetCACertificatesResponse" use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="GeneralMessage">
			<soap:operation soapAction="GeneralMessage"/>
			<wsdl:input>
				<soap:body parts="GeneralMessageRequest" use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body parts="GeneralMessageResponse" use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="SPOC">
		<wsdl:port name="SPOCPort" binding="SPOC:SPOCSOAPBinding">
			<soap:address location="http://spoc-server/SPOC"/>
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A simple application server supporting a web UI, SOAP services and remote card terminals
 */


var AuthenticationWizard	= require('scsh/srv-cc1/AuthenticationWizard').AuthenticationWizard;
var CardAction			= require('scsh/srv-cc1/CardAction').CardAction;
var File			= require('scsh/file/File').File;



/**
 * Creates an application server instance.
 *
 * @class <p>Provides for a simple application server.</p>
 *
 * @constructor
 */
function ApplicationServer() {
	this.ports = [];
	this.uiPort = 8080;
	this.restarted = true;
	if (__ServletContext) {
		this.contextPath = __ServletContext.getContextPath();
	} else {
		this.contextPath = "";
	}

	this.parseServerConf();

	this.setServerURL("http://localhost:" + this.uiPort);
}

exports.ApplicationServer = ApplicationServer;



/**
 * Set server url. The servlet context path is appended.
 *
 * @param {String} url the server URL (Default http://localhost:8080)
 */
ApplicationServer.prototype.setServerURL = function(url) {
	this.serverURL = url.concat(this.contextPath);
	GPSystem.log(GPSystem.INFO, module.id, "Server URL: " + url);
}



/**
 * Determine server port from jetty configuration
 *
 */
ApplicationServer.prototype.parseServerConf = function() {
	var f = new File("etc/server.conf", GPSystem.USR);

	if (!f.exists()) {
		var f = new File("etc/server.conf", GPSystem.SYS);
	}

	if (f.exists()) {
		var s = f.readAllAsString();
		var lines = s.split("\n");
		for (var i = 0; i < lines.length; i++) {
			var s = lines[i];
			if (s.indexOf("scriptingserver.mainport.port") == 0) {
				var p = s.substr(s.indexOf("=") + 1);
				this.uiPort = parseInt(p);
			}
		}
		f.close();
	}
}



/**
 * Register an object that provides web services for a given relative url.
 *
 * @param {url} url the relativ URL under which the service responds
 * @param {Object} soapService the service implementation that serves POST requests
 * @param {Object} uiFactory a factory that can create new UI objects using the newUI() method
 */
ApplicationServer.prototype.registerService = function(url, soapService, uiFactory, cardHandler) {
	port = this.uiPort;

	if (!this.ports[port]) {
		this.ports[port] = [];
	}

	this.ports[port][url] = { url: url, service: soapService, ui: uiFactory, cardHandler: cardHandler };
}



/**
 * Register a service based on a service descriptor
 *
 * The service descriptor may contain an object reference for uiFactory, soapService, cardHandler and restHandler.
 *
 * uiFactory is an object providing a newUI(session) method, called by the ApplicationServer for each new session
 * started with the service.
 *
 * soapService is an object providing SOAP calls as methods taking the soap body, http request and http response as
 * parameter. Each webservice method must be marked in the function prototype with WebService=true.
 *
 * restHandler is an object providing a handleREST(req, res) method to process RESTfull requests.
 *
 * cardHandler is an object providing a handleCard() method that processes inbound requests at the remote terminal interface
 *
 * @param {url} url the relativ URL under which the service responds
 * @param {Object} desc the service decriptor
 * @param {Number} port the port this service shall be bound to (optional, default bound to UI port)
 */
ApplicationServer.prototype.registerServiceForURL = function(url, desc, port) {
	if (!port) {
		port = this.uiPort;
	}

	if (!this.ports[port]) {
		this.ports[port] = [];
	}

	this.ports[port][url] = {
		url: url,
		name: desc.name,
		description: desc.description,
		service: desc.soapService,
		ui: desc.uiFactory,
		cardHandler: desc.cardHandler,
		restHandler: desc.restHandler };
}



/**
 * Set an AuthorizationManager object to enforce user authentication
 *
 * @param {AuthorizationManager} authorizationManager the authorization manager to use for authentication
 * @param {Boolean} pinNotRequired do not explicity request PIN verification, but perform card authentication only
 */
ApplicationServer.prototype.setAuthorizationManager = function(authorizationManager, pinNotRequired) {
	this.authorizationManager = authorizationManager;
	this.pinRequired = !pinNotRequired;
}



/**
 * Enable the PKI-as-a-Service style for the AuthenticationWizard
 */
ApplicationServer.prototype.enablePaaSStyle = function() {
	this.style = AuthenticationWizard.STYLE_PAAS;
}



/**
 * Set the optional imprintURL
 */
ApplicationServer.prototype.setImprintURL = function(imprintURL) {
	this.imprintURL = imprintURL;
}



/**
 * Return session associated with req.
 *
 * If the scripting environment has been restarted, then invalidate the session first
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
ApplicationServer.prototype.getSession = function(req, res) {
    	var session = req.getSession();

	if (this.restarted) {							// For development purposes invalidate the current UI session
		session.nativeSession.invalidate();
		session = req.getSession();
		this.restarted = false;
	}
	return session;
}



/**
 * Redirect to first server with a UI
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
ApplicationServer.prototype.redirectToFirstUI = function(req, res) {
	var s = { url: ".." };

	var registry = this.ports[this.uiPort];

	for (var i in registry) {
		s = registry[i];
		if (s.ui) {
			break;
		}
	}
	GPSystem.log(GPSystem.DEBUG, module.id, "Redirect to " + this.contextPath + "/se/" + s.url);
	res.setStatus(HttpResponse.SC_SEE_OTHER);
	res.addHeader("Location", this.contextPath + "/se/" + s.url );
	return;
}



/**
 * Ensure authentication, if configured
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
ApplicationServer.prototype.statusPage = function(req, res) {
    	var session = this.getSession(req, res);

	// No authentication required or authentication performed
	if ((typeof(this.authorizationManager) == "undefined") || session.cardState) {
		if (session.startURL) {
			res.setStatus(HttpResponse.SC_SEE_OTHER);
			res.addHeader("Location", this.contextPath + "/se" + session.startURL );
			delete session.startURL;
		} else {
			this.redirectToFirstUI(req, res);
		}

		return;
	}

	GPSystem.log(GPSystem.DEBUG, module.id, "Processing AuthenticationWizard");

	if (typeof(session.wizard) == "undefined") {
		GPSystem.log(GPSystem.DEBUG, module.id, "Create new AuthenticationWizard");
		session.wizard = new AuthenticationWizard(null, this.authorizationManager, this.pinRequired, this.style, this.imprintURL);
	}

	var page = session.wizard.getPage(req, res);

	if (page) {
		session.wizard.sendPage(req, res, page);
	} else {
		// Wizard has completed
		var rc = session.wizard.getReturnCode();
		GPSystem.log(GPSystem.DEBUG, module.id, "AuthenticationWizard completed with " + rc);

		delete session.wizard;

		res.setStatus(HttpResponse.SC_SEE_OTHER);
		res.addHeader("Location", this.contextPath + "/se" );
	}
}



/**
 * Logout user from server
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
ApplicationServer.prototype.logout = function(req, res) {
	GPSystem.log(GPSystem.DEBUG, module.id, "logout() called");

    	var session = this.getSession(req, res);

	delete session.cardState;
	delete session.userId;
	delete session.user;
	res.setStatus(HttpResponse.SC_SEE_OTHER);
	res.addHeader("Location", this.contextPath + "/se");
}



/**
 * Generate a list of services that provide a UI
 */
ApplicationServer.prototype.getUIList = function() {
	var list = [];

	var registry = this.ports[this.uiPort];

	for (var i in registry) {
		var spec = registry[i];
		if (spec.ui) {
			var url = this.contextPath + "/se/" + spec.url;
			var name = spec.name;
			if (!name) {
				name = spec.url;
			}
			var entry = { id: spec.url, name: name, description: spec.description, url: url, roleRequired: spec.ui.roleRequired };
			list.push(entry);
		}
	}

	return list;
}



/**
 * Dispatch a SOAP request to the addressed service
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {Object} service the service entry in the registry
 */
ApplicationServer.prototype.dispatchSOAPRequest = function(req, res, service) {
	try	{
		var soapenv = req.getEntityAsXML();

		GPSystem.log(GPSystem.INFO, module.id, "Received SOAP message for " + req.pathInfo);
		GPSystem.log(GPSystem.DEBUG, module.id, soapenv);

		if (typeof(service.service) == "undefined") {
			GPSystem.log(GPSystem.ERROR, module.id, "No SOAP service available at this URL");
			res.setStatus(HttpResponse.SC_BAD_REQUEST);
			return;
		}

		var soapns = soapenv.namespace();
		var soap12 = (soapns == "http://www.w3.org/2003/05/soap-envelope")

		var soapprefix = soapns.prefix;

		var soapbody = soapenv.soapns::Body.elements()[0];
		var method = soapbody.localName();
		var bodyns = soapbody.namespace();

		var servicehandler = service.service[method];
		if ((typeof(servicehandler) != "function") || (typeof(servicehandler.WebService) == "undefined")) {
			GPSystem.log(GPSystem.ERROR, module.id, "No implementation found for message " + method);
			res.setStatus(HttpResponse.SC_NOT_FOUND);
			return;
		}

		var result = service.service[method](soapbody, req, res);

		var response =
		<{soapprefix}:Envelope xmlns:{soapprefix}={soapns}>
			<{soapprefix}:Header/>
			<{soapprefix}:Body>
			<response/>
			</{soapprefix}:Body>
		</{soapprefix}:Envelope>;

		response.soapns::Body.response = result;

		if (soap12) {
			res.setContentType("application/soap+xml; charset=utf-8");
		} else {
			res.setContentType("text/xml; charset=utf-8");
		}

		var responseStr = response.toXMLString();
		GPSystem.log(GPSystem.INFO, module.id, "Responding with SOAP message for " + req.pathInfo);
		GPSystem.log(GPSystem.INFO, module.id, responseStr);

		res.print(responseStr);
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "Exception during SOAP processing in " + e.fileName + "#" + e.lineNumber);
		GPSystem.log(GPSystem.ERROR, module.id, e);
		res.setStatus(HttpResponse.SC_BAD_REQUEST);
	}
}



/**
 * Dispatch a REST request to the addressed service
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {Object} service the service entry in the registry
 */
ApplicationServer.prototype.dispatchRESTRequest = function(req, res, service) {
	return service.restHandler.handleRequest(req, res);
}



/**
 * Dispatch a UI request to the addressed service
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {Object} service the service entry in the registry
 */
ApplicationServer.prototype.dispatchUIRequest = function(req, res, service) {
    	var session = this.getSession(req, res);

	if (this.authorizationManager && !session.user) {
		session.startURL = req.pathInfo;
		if (req.queryString) {
			session.startURL = session.startURL + "?" + req.queryString;
		}
		res.setStatus(HttpResponse.SC_SEE_OTHER);
		res.addHeader("Location", this.contextPath + "/se");
		return;
	}

	if (typeof(session.ui) == "undefined") {
		session.ui = [];
	}

	if (typeof(session.ui[service.url]) == "undefined") {
		session.ui[service.url] = service.ui.newUI(session);
	}

	session.ui[service.url].handleRequest(req, res);
}



/**
 * Dispatch a card update request to the addressed service
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {Object} service the service entry in the registry
 */
ApplicationServer.prototype.performCardUpdate = function(session, pathInfo, queryInfo) {
	GPSystem.log(GPSystem.DEBUG, module.id, "Application server performs card update for " + pathInfo + " " + queryInfo);
	if (!pathInfo) {			// Handle SmartCard Login
		if (session.wizard) {
			session.wizard.handleCard(session, pathInfo, queryInfo);
		}
		return;
	}

	var url = pathInfo.split("/");

	var registry = this.ports[this.uiPort];

	if (!registry) {
		GPSystem.log(GPSystem.ERROR, module.id, "No service registered for port " + port);
		res.setStatus(HttpResponse.SC_NOT_FOUND);
		return;
	}

	var service = registry[url[1]];

	if (!service) {
		GPSystem.log(GPSystem.ERROR, module.id, "Service URL " + pathInfo + " not defined");
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Service URL " + pathInfo + " not defined");
	}

	if ((typeof(session.ui) == "undefined") || (typeof(session.ui[service.url]) == "undefined")) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Service URL " + pathInfo + " has no active UI session");
		if (service.cardHandler) {
			return service.cardHandler.handleCard(session, pathInfo, queryInfo);
		}
		return;
	}

	session.ui[service.url].handleCard(session, pathInfo, queryInfo);
}



/**
 * Dispatches calls to service or GUI class.
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
ApplicationServer.prototype.handleRequest = function(req, res) {
	var port = req.localPort;

	if (!port) {				// Ensure backwards compatiblity for server without req.localPort
		port = this.uiPort;
	}

	if (req.pathInfo == null) {
		if (port == this.uiPort) {
			this.statusPage(req, res);
		} else {
			res.setStatus(HttpResponse.SC_METHOD_NOT_ALLOWED);
		}
	} else {
		req.url = req.pathInfo.substr(1).split("/");

		var registry = this.ports[port];

		if (!registry) {
			GPSystem.log(GPSystem.ERROR, module.id, "No service registered for port " + port);
			res.setStatus(HttpResponse.SC_NOT_FOUND);
			return;
		}

		var service = registry[req.url[0]];

		if (!service) {
			GPSystem.log(GPSystem.ERROR, module.id, "Service URL " + req.pathInfo + " not defined");
			res.setStatus(HttpResponse.SC_NOT_FOUND);
			return;
		}

		if (req.method == "GET") {
			if (req.queryString &&
					((req.queryString.toLowerCase() == "wsdl") ||
					 (req.queryString.substr(0, 3).toLowerCase() == "xsd"))) {
				if (typeof(service.service.GetWSDL) != "undefined") {
					GPSystem.log(GPSystem.DEBUG, module.id, req.queryString);
					service.service.GetWSDL(req, res);
				} else {
					GPSystem.log(GPSystem.DEBUG, module.id, "No WSDL found");
					res.setStatus(HttpResponse.SC_NOT_FOUND);
				}
			} else if (service.restHandler) {
				GPSystem.log(GPSystem.DEBUG, module.id, "Received REST GET for " + req.pathInfo);
				this.dispatchRESTRequest(req, res, service);
			} else {
				GPSystem.log(GPSystem.DEBUG, module.id, "Received GET for " + req.pathInfo);
				this.dispatchUIRequest(req, res, service);
			}
		} else if (req.method == "POST") {
			GPSystem.log(GPSystem.DEBUG, module.id, "Content-type : " + req.contentType);
			// SOAP 1.2 requires "application/soap+xml"
			// SOAP 1.1 defines "text/xml
			if (req.contentType && ((req.contentType.substr(0, 8).toLowerCase()  == "text/xml") ||
				(req.contentType.substr(0, 20).toLowerCase() == "application/soap+xml"))) {
				this.dispatchSOAPRequest(req, res, service);
			} else if (req.contentType && service.restHandler && (req.contentType.substr(0, 16).toLowerCase()  == "application/json")) {
				GPSystem.log(GPSystem.DEBUG, module.id, "Received REST POST for " + req.pathInfo);
				this.dispatchRESTRequest(req, res, service);
			} else {
				GPSystem.log(GPSystem.DEBUG, module.id, "Received POST for " + req.pathInfo);
				this.dispatchUIRequest(req, res, service);
			}
		} else {
			GPSystem.log(GPSystem.ERROR, module.id, "Method " + req.method + " not supported");
			res.setStatus(HttpResponse.SC_METHOD_NOT_ALLOWED);
		}
	}
}



//
// Create global server instance
//
ApplicationServer.instance = new ApplicationServer();

GPSystem.log(GPSystem.INFO, module.id, "ApplicationServer instance created");
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview The wizard retrieves the information from the HSM which is necessary for authorization and queries the Authorization Manager
 */

var CardAction		= require('scsh/srv-cc1/CardAction').CardAction;
var SmartCardHSM	= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;

/**
 * Create a new AuthenticationWizard
 *
 * The AuthenticationWizard uses the remote terminal to authenticate a SmartCard-HSM using the
 * device authentication certificate chain.
 *
 * The wizard injects a cardState object into the session object, containing the properties chain
 * (from SmartCardHSM.validateCertificateChain()) and pinState (the SW1/SW2 returned by VERIFY).
 *
 * If the an authorizationManager is defined, then the getUser() method is called with
 * the SmartCard-HSM unique id passed as parameter. The user is injected as property user into the
 * session object.
 *
 * If the returned user object has the pinRequired property set, then the wizard enforces that the PIN was validated.
 * The same is true if requestpin is set in the constructor
 *
 * @param {CommonUI} ui the service ui (can be null)
 * @param {AuthorizationManager} authorizationManager a class implementing a getUser() method that maps a unique id to a user object
 * @param {Boolean} requestpin request client to try PIN verification
 */
function AuthenticationWizard(ui, authorizationManager, requestpin, style, imprintURL) {
	CardAction.call(this, ui);
	this.authorizationManager = authorizationManager;
	this.requestpin = requestpin;
	this.style = AuthenticationWizard.STYLE_DEFAULT;
	if (style) {
		this.style = style;
	}
	this.imprintURL = imprintURL;
}

AuthenticationWizard.prototype = Object.create(CardAction.prototype);
AuthenticationWizard.constructor = AuthenticationWizard;

exports.AuthenticationWizard = AuthenticationWizard;



AuthenticationWizard.STYLE_DEFAULT = 0;
AuthenticationWizard.STYLE_PAAS = 1;



/**
 * Generate the default HTML template
 *
 * @returns the HTML page template
 * @type XML
 */
AuthenticationWizard.prototype.generateDefaultTemplate = function() {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var template =
		<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
			<head>
				<title>Login Required</title>
				<link rel="stylesheet" type="text/css" href={"css/style.css"}/>
			</head>
			<body>
				<div align="left">
					<a href="http://www.cardcontact.de"><img src={"images/banner.jpg"} width="750" height="80" border="0"/></a>
				</div>

				<div id="main">
					<div id="error"/>
					<div id="content"/>
					<p class="copyright">{String.fromCharCode(0xA9) + " Copyright 2003 - 2017 "}<a href="http://www.cardcontact.de">CardContact</a> Systems GmbH, Minden, Germany</p>
				</div>
			</body>
		</html>;

	return template;
}



/**
 * Generate the PKI-as-a-Service HTML template
 *
 * @returns the HTML page template
 * @type XML
 */
AuthenticationWizard.prototype.generatePaaSTemplate = function() {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var template =
		<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
			<head>
				<title>Login Required</title>
				<link rel="stylesheet" type="text/css" href="css/paas_style.css"/>
				<link rel="stylesheet" type="text/css" href="css/pure-min.css"/>
				<link rel="stylesheet" type="text/css" href="css/grids-responsive-min.css"/>
			</head>
			<body>
				<div class="banner" align="left">
					<a href="http://www.cardcontact.de"><img src="images/CardContact_logo_b28.jpg"  border="0"/></a>
				</div>
				<div class="paas-navigator-empty "/>

				<div id="main">
					<div id="error"/>
					<div id="content"/>
					<div class="footer pure-g">
						<div class="pure-u-1 pure-u-md-1-2">
							<p id="imprint" class="imprint"></p>
						</div>
						<div class="pure-u-1 pure-u-md-1-2">
							<p class="copyright">Version { VERSION } {String.fromCharCode(0xA9) + " Copyright 2003 - 2023 "}<a href="http://www.cardcontact.de">CardContact</a> Systems GmbH, Minden, Germany</p>
						</div>
					</div>
				</div>
			</body>
		</html>;

	var p = template.body..p.(@id == "imprint");
	if (typeof(this.imprintURL) != "undefined") {
		p.appendChild(
			<a href={this.imprintURL}>Imprint</a>
		);
	}

	return template;
}



/**
 * Send page after embedding in the HTML template
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {XML} page the page contents
 */
AuthenticationWizard.prototype.sendPage = function(req, res, page) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var template = null;
	switch (this.style) {
		case AuthenticationWizard.STYLE_PAAS:
			template = this.generatePaaSTemplate();
			page.@class = "welcomepage";
			break;
		default:
			template = this.generateDefaultTemplate();
	}

	var c = template..div.(@id == "content");
	c.div = page;

	res.setContentType("application/xhtml+xml");
	res.addHeader("Cache-Control", "no-store, no-cache, must-revalidate, max-age=0");
	res.addHeader("Pragma", "no-cache");
	res.print('<?xml version="1.0" encoding="UTF-8" standalone="no"?>');
	res.print('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n');
	res.print(template.toXMLString());
}



AuthenticationWizard.REDIRECT = "redirect";
AuthenticationWizard.INVALIDCARD = "invalidcard";
AuthenticationWizard.NOTAUTHORIZED = "notauthorized";
AuthenticationWizard.WRONGPIN = "wrongpin";
AuthenticationWizard.BLOCKEDPIN = "blockedpin";
AuthenticationWizard.PINREQUIRED = "pinrequired";

/**
 * Return the page depending from the current state.
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
AuthenticationWizard.prototype.getPage = function(req, res) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPage() : CardAction state: " + this.state);

	switch(this.state) {
		case CardAction.NEW:
			var acceptLang = req.getHeaderField("Accept-Language");
			GPSystem.log(GPSystem.DEBUG, module.id, "Accept-Language: " + acceptLang);
			var local = req.nativeRequest.getLocale();
			this.lang = local.getLanguage();
			GPSystem.log(GPSystem.DEBUG, module.id, "Local Language: " + this.lang);

			this.state = AuthenticationWizard.REDIRECT;
			var page = this.getLoginPage(req, res);
			break;
		case AuthenticationWizard.REDIRECT:
			var page = this.getRedirectionPage(req, res);
			this.state = CardAction.NOCLIENT;
			break;
		case CardAction.NOCLIENT:
			var page = this.getNoClientPage(req, res);
			this.state = AuthenticationWizard.REDIRECT;
			break;
		case AuthenticationWizard.INVALIDCARD:
			var page = this.getInvalidCardPage(req, res);
			this.state = CardAction.NEW;
			break;
		case AuthenticationWizard.NOTAUTHORIZED:
			var page = this.getNotAuthorizedPage(req, res);
			this.state = CardAction.NEW;
			break;
		case AuthenticationWizard.WRONGPIN:
			var page = this.getWrongPINPage(req, res);
			this.state = AuthenticationWizard.REDIRECT;
			break;
		case AuthenticationWizard.PINREQUIRED:
			var page = this.getPINRequiredPage(req, res);
			this.state = AuthenticationWizard.REDIRECT;
			break;
		case AuthenticationWizard.BLOCKEDPIN:
			var page = this.getBlockedPINPage(req, res);
			this.state = CardAction.NEW;
			break;
		case CardAction.SUCCESS:
			var page = null;
			break;
	}
	return page;
}



/**
 * Serve this page to start the redirection to the local client
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
AuthenticationWizard.prototype.getRedirectionPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	if (this.requestpin) {
		var page =
		<div>
			<h1>User Authentication</h1>
			<p>Please enter your PIN in the PIN dialog.</p>
			<p>The dialog may be covered by your browser window or will prompt on your PIN-Pad reader.</p>

			<p>Please wait for the green tick to appear. {this.getActivationLink(req, res, 1)}</p>
			<p>The page will be reloaded automatically if JavaScript is enabled.</p>
			<p>If JavaScript is disabled, then press <a href="">continue</a> after the green tick is shown.</p>
		</div>
	} else {
		var page =
		<div>
			<h1>Card Authentication</h1>
			<p>Please wait for the green tick to appear. {this.getActivationLink(req, res, -1)}</p>
			<p>The page will be reloaded automatically if JavaScript is enabled.</p>
			<p>If JavaScript is disabled, then press <a href="">continue</a> after the green tick is shown.</p>
		</div>
	}
	return page;
}



/**
 * Serve this page to start the redirection to the local client
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
AuthenticationWizard.prototype.getLoginPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>Login Required</h1>
			<p>Please insert your SmartCard-HSM and press <a href="">continue</a> or reload.</p>
		</div>

	return page;
}



/**
 * Serve this page if the client is not authorized for the service
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
AuthenticationWizard.prototype.getNotAuthorizedPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>Authorization Failed</h1>
			<p>You ({this.userId}) are not authorized to use this service.</p>
			<p>Press <a href="">continue</a></p>
		</div>

	return page;
}



/**
 * Serve this page if the client is required to perform PIN verification, but didn't
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
AuthenticationWizard.prototype.getPINRequiredPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>PIN Verification Required</h1>
			<p>PIN verification is required to access this service.</p>
			<p>Press <a href="">continue</a></p>
		</div>

	return page;
}



/**
 * Serve this page if the card at the client is no SmartCard-HSM
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
AuthenticationWizard.prototype.getInvalidCardPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>Authentication Failed</h1>
			<p>The card in your reader or the attached USB-Token is not a valid SmartCard-HSM.</p>
			<p>Press <a href="">continue</a></p>
		</div>

	return page;
}



AuthenticationWizard.prototype.getWrongPINPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>Wrong PIN</h1>
			<p>The PIN you entered was invalid or the PIN entry was cancelled.</p>
			<p>SmartCard-HSM {  SmartCardHSM.describePINStatus(this.cardState.pinState, "User-PIN") }.</p>
			<p><a href="">continue</a></p>
		</div>

	return page;
}



AuthenticationWizard.prototype.getBlockedPINPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>PIN not usable</h1>
			<p>SmartCard-HSM {  SmartCardHSM.describePINStatus(this.cardState.pinState, "User-PIN") }.</p>
			<p><a href="">continue</a></p>
		</div>

	return page;
}



/**
 * Handle authentication and query the Authorization Manager whether this HSM is authorized
 */
AuthenticationWizard.prototype.handleCardAction = function(card, session, pathInfo) {
	var crypto = new Crypto();
	try	{
		var sc = new SmartCardHSM(card);

		var devAutCert = sc.readBinary(SmartCardHSM.C_DevAut);
		var chain = SmartCardHSM.validateCertificateChain(crypto, devAutCert);
		if (chain == null) {
			this.state = AuthenticationWizard.INVALIDCARD;
			return;
		}

		sc.openSecureChannel(crypto, chain.publicKey);

		var sw = sc.queryUserPINStatus();
		this.cardState = {
			chain: chain,
			pinState: sw
		}
		if (sw == 0x6983) {
			this.cardState.resetRetryCounterEnabled = sc.isResetRetryCounterEnabled();
			this.cardState.PINResetEnabled = sc.isPINResetEnabled();
		}
		this.userId = chain.path;

		GPSystem.log(GPSystem.DEBUG, module.id, "Authenticated " + this.userId);
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, __exception__);
		this.reportError(e);
		this.state = AuthenticationWizard.INVALIDCARD;
		return;
	}

	if (this.authorizationManager) {
		var user = this.authorizationManager.getUser(this.userId);

		if (!user) {
			this.state = AuthenticationWizard.NOTAUTHORIZED;
			return;
		}

		GPSystem.log(GPSystem.DEBUG, module.id, "AuthenticationWizard found user " + user.name);
		user.lang = this.lang.toUpperCase();
		GPSystem.log(GPSystem.DEBUG, module.id, "Setting language to " + user.lang);

		session.user = user;

		// Check if PIN is mandatory for this user
		if (user.pinRequired && (this.cardState.pinState != 0x9000)) {
			GPSystem.log(GPSystem.DEBUG, module.id, "PIN requested, but state is " + this.cardState.pinState.toString(HEX));

			if ((this.cardState.pinState & 0xFFF0) == 0x63C0) {
				this.state = AuthenticationWizard.WRONGPIN;
			} else {
				this.state = AuthenticationWizard.BLOCKEDPIN;
				GPSystem.log(GPSystem.DEBUG, module.id, "resetRetryCounterEnabled: " + this.cardState.resetRetryCounterEnabled);
				if (this.cardState.resetRetryCounterEnabled && typeof(this.authorizationManager.processBlockedToken) == "function") {
					this.authorizationManager.processBlockedToken(user, this.cardState.PINResetEnabled);
				}
			}
			return;
		}
		if (typeof(user.id) == "number") {
			card.nativeCardTerminal.sendNotification(0, "User login complete");
		}
	}
	session.cardState = this.cardState;
	this.state = CardAction.SUCCESS;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Manage client authorization
 */



function AuthorizationManager() {
	this.roleMap = {};
	this.userMap = {};
}

exports.AuthorizationManager = AuthorizationManager;



AuthorizationManager.DEFAULT_USER_ID = "default";



AuthorizationManager.prototype.addRole = function(role) {
	this.roleMap[role.id] = role;
}



/**
 * Add a user to the Authorization Manager
 *
 * @param {User} user the user
 */
AuthorizationManager.prototype.addUser = function(user) {
	var role = this.roleMap[user.role];
	if (typeof(role) == "undefined") {
		throw "User has undefined role";
	}
	this.userMap[user.id] = user;
}



AuthorizationManager.prototype.getUser = function(id) {
	var user = this.userMap[id];
	if (user) {
		return user;
	}
	return this.userMap[AuthorizationManager.DEFAULT_USER_ID];
}



AuthorizationManager.prototype.loginAllowed = function(id) {
	var user = this.userMap[id];
	if (typeof(user) == "undefined") {
		return false;
	}
	return this.roleMap[user.role].loginAllowed;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A service request stores information about a request pending service
 */

var CVC = require('scsh/eac/CVC').CVC;



/**
 * Create a new service request
 *
 * @class Class storing entries in the internal work queue
 * @constructor
 */
function BaseServiceRequest(service, messageId) {
	this.model = {};
	this.model.lifeCycle = BaseServiceRequest.LIFECYCLE_NEW;
	this.model.messageId = messageId
	this.model.type = "BaseServiceRequest";
	this.service;
}

exports.BaseServiceRequest = BaseServiceRequest;



BaseServiceRequest.LIFECYCLE_CLOSED = 0;
BaseServiceRequest.LIFECYCLE_NEW = 1;
BaseServiceRequest.LIFECYCLE_PROCESSING = 2;
BaseServiceRequest.LIFECYCLE_APPROVED = 3;
BaseServiceRequest.LIFECYCLE_COMPLETE = 4;


/**
 * Gets the unique id of the service request as defined by the database
 * The id is only available after the service request has been added to the
 * inbound / outbound queue.
 *
 * @returns the service request id as assigned by the database
 * @type String
 */
BaseServiceRequest.prototype.getId = function() {
	if (this.bo) {
		return this.bo.id;
	}

	return this.id;
}



/**
 * Gets the service request life-cycle
 *
 * @type Number
 */
BaseServiceRequest.prototype.getLifeCycle = function() {
	return this.model.lifeCycle;
}



/**
 * Sets the service request life-cycle
 *
 * @param {Number} lifeCycle the life-cycle state
 */
BaseServiceRequest.prototype.setLifeCycle = function(lifeCycle) {
	this.model.lifeCycle = lifeCycle;
}



/**
 * Gets creation time
 *
 * @returns the timestamp at which this service request was created or null
 * @type Date
 */
BaseServiceRequest.prototype.getCreationTime = function() {
	if (this.bo) {
		return this.bo.created;
	}
	return null
}



/**
 * Sets the service request type
 *
 * @param {String} type the request type
 */
BaseServiceRequest.prototype.setType = function(type) {
	this.model.type = type;
}



/**
 * Gets the service request type
 *
 * @returns the service request type
 * @type String
 */
BaseServiceRequest.prototype.getType = function() {
	return this.model.type;
}



/**
 * Add a message related to this service request
 *
 * @param {String} message the message
 */
BaseServiceRequest.prototype.addMessage = function(message) {
	if (typeof(this.model.message) == "undefined") {
		this.model.message = message;
	} else {
		this.model.message += "\n" + message;
	}
}



/**
 * Gets the status information for the last processing
 *
 * @returns the last status information which may be undefined
 * @type String
 */
BaseServiceRequest.prototype.getStatusInfo = function() {
	return this.model.statusInfo;
}



/**
 * Sets the status information for this request
 *
 * @param {String} statusInfo the last status information
 */
BaseServiceRequest.prototype.setStatusInfo = function(statusInfo) {
	GPSystem.log(GPSystem.DEBUG, module.id, "setStatusInfo(" + statusInfo + ")");
	this.model.statusInfo = statusInfo;
}



/**
 * Gets the messageId
 *
 * @returns the message id
 * @type String
 */
BaseServiceRequest.prototype.getMessageID = function() {
	return this.model.messageId;
}



/**
 * Get the originator
 *
 * @returns the originator
 * @type Subject
 */
BaseServiceRequest.prototype.getOriginator = function() {
	if (this.bo) {
		return this.bo.originatorId;
	}
	return this.originator;
}



/**
 * Gets the originator id referencing the originating subject
 *
 * @returns the originator id
 * @type String
 */
BaseServiceRequest.prototype.getOriginatorId = function() {
	return this.bo.originatorId;
}



/**
 * Gets the id of the recipient subject
 *
 * @returns the recipient id
 * @type String
 */
BaseServiceRequest.prototype.getRecipientId = function() {
	return this.bo.recipientId;
}



/**
 * Gets the id of the recipient subject
 *
 * @returns the recipient id
 * @type String
 */
BaseServiceRequest.prototype.getRecipient = function() {
	var subjectDAO = this.service.daof.getSubjectDAO();
	return subjectDAO.getSubject(this.bo.recipientId);
}



/**
 * Returns true if this is a locally generated request
 *
 * @returns true if this is a locally generated request, i.e. has no recipientId
 * @type boolean
 */
BaseServiceRequest.prototype.isLocallyCreated = function() {
	return (this.bo.originatorId != null) && (this.bo.recipientId == null);
}



BaseServiceRequest.prototype.isCertificateRequest = function() {
	return false
}



/**
 * Check if the subject is authorized to process the service request.
 * A subject is authorized if service request and subject are assigned to the same role.
 *
 * @returns true if the subject is authorized, false otherwise
 * @type boolean
 */
BaseServiceRequest.prototype.isAuthorizedSubject = function(subjectId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "isAuthorizedSubject(" + subjectId + ")");

	if (!this.bo || !this.bo.assignedToRole) {
		GPSystem.log(GPSystem.DEBUG, module.id, "service request " + this + " is not assigned to a role");
		return false;
	}
	var roleDAO = this.service.daof.getRoleDAO();
	var roles = roleDAO.getAssignedRoles(subjectId);
	for (var i = 0; i < roles.length; i++) {
		if (roles[i].id == this.bo.assignedToRole) {
			GPSystem.log(GPSystem.DEBUG, module.id, "subject is authorized for service request " + this);
			return true;
		}
	}
	GPSystem.log(GPSystem.DEBUG, module.id, subjectId + " is not authorized for service request " + this);
	return false;
}


/**
 * Remove properties that are not serialized.
 *
 * @private
 */
BaseServiceRequest.JSONReplacer = function(key, value) {
	if (key == "bo") {
		return undefined;
	}
	if (key == "relatedBaseServiceRequest") {
		return undefined;
	}
	return value;
}



/**
 * Serialize service request into JSON object
 */
BaseServiceRequest.prototype.serialize = function() {
	return JSON.stringify(this.model, BaseServiceRequest.JSONReplacer, '\t');
}



/**
 * Recreate embedded objects
 *
 * @private
 */
BaseServiceRequest.JSONReviver = function(key, value) {
//	GPSystem.trace(key + ":" + value);

	if (value && value.clazz) {
//		print("Clazz " + value.clazz);
		switch(value.clazz) {
			case "ByteString": value = ByteString.fromJSON(value); break;
			case "CVC":        value = CVC.fromJSON(value); break;
		}
	}
	return value;
}



/**
 * Deserialize service request from JSON encoded string
 *
 * @param {String} str the JSON object as string
 */
BaseServiceRequest.deserialize = function(str) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deserialize " + str);
	var sr = Object.create(BaseServiceRequest.prototype);
	sr.model = [];
	sr.model.lifeCycle = BaseServiceRequest.LIFECYCLE_NEW;

//	print(str);
	var o = JSON.parse(str,BaseServiceRequest.JSONReviver);

	for (var i in o) {
		sr.model[i] = o[i];
	}
	return sr;
}



/**
 * Commit changes to the ServiceRequest object
 */
BaseServiceRequest.prototype.commit = function() {
	var srDAO = this.service.daof.getServiceRequestDAO();

	if (!this.bo) { // Create new business object

		var t = {
			process: this.model.type,
			content: this.serialize(),
		};

		if (this.originator) {
			t.originatorId = this.originator.id;
		}

		if (this.recipient) {
			t.recipientId = this.recipient.id;
		}

		this.bo = srDAO.newServiceRequest(t);
	} else {
		srDAO.updateContent(this.bo, this.serialize());
	}
}



/**
 * Create a describing string
 *
 * @returns the string
 * @type String
 */
BaseServiceRequest.prototype.toString = function() {
	var str;
	if (this.bo) {
		str = this.bo.process;
	} else {
		str = this.getType();
	}

	for (var obj in this.model) {
		str += "\n" + obj + "[ " + this.model[obj] + " ]";
	}

	return str;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Base class for all remote card related mechanisms
 */



/**
  * Create a new CardAction instance
  *
  * @param {CommonUI} ui the service ui used for error reporting (must support setErrorMessage) or null
  */
function CardAction(ui) {
	this.ui = ui;
	this.state = CardAction.NEW;
	this.requestPIN = -1;
	this.allowRestart = true;
}

exports.CardAction = CardAction;

CardAction.NEW = "new";
CardAction.NOCLIENT = "noclient";
CardAction.ERROR = "error";
CardAction.SUCCESS = "success";



/**
 * Return the page depending from the current state.
 * After the handleCard operation getPage returns null
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
CardAction.prototype.getPage = function(req, res, url) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPage() : CardAction state: " + this.state);

	if (this.pending) {
		return this.getPendingPage(req, res);
	}

	switch(this.state) {
		case CardAction.NEW:
			this.state = CardAction.NOCLIENT;
			var page = this.getProgressPage(req, res);
			break;
		case CardAction.NOCLIENT:
			var page = this.getNoClientPage(req, res);
			this.state = CardAction.NEW;
			break;
		case CardAction.ERROR:
			var page = this.getErrorPage(req, res);
			if (this.allowRestart) {
				this.state = CardAction.NEW;
			} else {
				this.state = CardAction.SUCCESS;
			}
			break;
		case CardAction.SUCCESS:	// reached after handleCard
			return null;
			break;
		default:
			var page = this.getProgressPage(req, res);
	}
	return page;
}



/**
 * Get the activation link for the redirect to the local client
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
CardAction.prototype.getActivationLink = function(req, res, requestPin) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var sessionId = req.getSession().id;
	var rndstr = Math.floor(Math.random() * 10000000).toString();
	var pathInfo = req.pathInfo;
	if (!pathInfo) {
		pathInfo = "";
	}
	var rturl = ApplicationServer.instance.serverURL + "/rt" + pathInfo;
	var url = "http://127.0.0.1:27001/" + rndstr + ".png?url=" + rturl + "&sessionId=" + sessionId;

	if (requestPin >= 0) {
		 url += "&pinrequired=" + requestPin;
	}

	return <img onload="window.location.reload()" onerror="alert('Could not connect to local client. Is the client running ?');window.location.reload()" src={url} width="16" height="16"/>;
}



/**
 * Serve this page to start the redirect to the local client
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
CardAction.prototype.getProgressPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var actlink = this.getActivationLink(req, res, this.requestPIN);
	if (actlink == null) {
		var page = this.getErrorPage(req, res);
		this.state = CardAction.NEW;
	} else {

		var page =
		<div>
			<h2>Smart card access in progress</h2>
			<p>Please wait for the green tick to appear. {actlink}</p>
			<p>Accessing the smart card may take a while, so please be patient. To follow the process
			   you can open the log window in the OCF daemon.</p>
			<p>The page will be reloaded automatically if JavaScript is enabled.</p>
			<p>If JavaScript is disabled, then press <a href="">continue</a> after the green tick is shown.</p>
		</div>
	}

	return page;
}



/**
 * Serve this page to start the redirect to the local client
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
CardAction.prototype.getPendingPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h2>Smart card access still in progress</h2>
			<p>Accessing the smart card may take a while, so please be patient. To follow the process
			   you can open the log window in the OCF daemon.</p>
			<p>Press <a href="">continue</a> after the client finished the operation.</p>
		</div>

	return page;
}



/**
 * Serve the error page if no local client was found
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
CardAction.prototype.getNoClientPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h2>Client connect</h2>
			<p>Could not connect to your local client or smart card.</p>
			<p>Please activate the local client to allow the server to access your card.</p>
			<p>You can start the local client using <a href="https://www.openscdp.org/ocf/ocf.jnlp">Java Web Start</a>
			   or by downloading and double-clicking on <a href="https://www.openscdp.org/ocf/ocf-cc.jar">ocf-cc.jar</a>.</p>
			<p>The local client can be started from the command line using</p>
			<pre>java -jar ocf-cc.jar -v</pre>
			<p>See also the <a href="https://www.openscdp.org/ocf/faq.html">FAQ</a> for more details
			   and troubleshooting hints.</p>
			<p>Press refresh or <a href="">continue</a> to proceed.</p>
		</div>

	return page;
}



/**
 * Serve the error page if some error occured during card communication
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
CardAction.prototype.getErrorPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h2>Error while talking to your smart card</h2>
			<p>Press refresh or <a href="">continue</a> to proceed.</p>
		</div>

	return page;
}



/**
 * Get the return code from a service operation called by handleCard
 *
 * @return the returnCode from the remote system
 */
CardAction.prototype.reportError = function(msg) {
	if (this.ui) {
		this.ui.setErrorMessage("Error", msg);
	}
	this.state = CardAction.ERROR;
}



/**
 * Get the return code from a service operation called by handleCard
 *
 * @return the returnCode from the remote system
 */
CardAction.prototype.getReturnCode = function() {
	return this.state;
}



CardAction.prototype.handleCardAction = function(card, session, pathInfo) {
	return "Not Implemented";
}



/**
 */
CardAction.prototype.handleCard = function(session, pathInfo) {
	GPSystem.log(GPSystem.DEBUG, module.id, "Handling card for session " + session.id);

	this.pending = true;

	try	{
		if (session.cardTerminal) {
			var card = new Card(session.cardTerminal);
		} else {
			var card = new Card(session.id);
		}
		this.handleCardAction(card, session, pathInfo);
	}
	catch(e if e instanceof GPError) {
		GPSystem.log(GPSystem.ERROR, module.id, e);
		GPSystem.log(GPSystem.ERROR, module.id, e.stack);
		this.reportError(e.message);
	}
	finally {
		GPSystem.log(GPSystem.DEBUG, module.id, "CardAction state: " + this.state);
		card.close();
		this.pending = false;
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Common UI elements
 */

var AuthenticationWizard	= require('scsh/srv-cc1/AuthenticationWizard').AuthenticationWizard;
var CardAction			= require('scsh/srv-cc1/CardAction').CardAction;


/**
 * Create a Common UI web GUI
 *
 * @class Class implementing a common UI operations
 * @constructor
 * @param {CVCAService} service the service to which the GUI is attached
 */
function CommonUI(service, session) {
	if (service) {
		this.service = service;
		this.session = session;
		this.bookmarks = [];
		this.resultCode = null;
		this.resultMessage = null;
		this.resultClass = null;
	}
}

exports.CommonUI = CommonUI;



/**
 * Create a date string for a given date object in the format YYYY-MM-DD
 *
 * @param {Date} date the date object
 * @type String
 * @return the date string
 */
CommonUI.dateString = function(date) {
	return date.getFullYear() + "-" + (date.getMonth() + 1) + "-" + date.getDate();
}



/**
 * Parse operations string into object containing parameter and values
 *
 * <p>An operations string may contain multiple entries separated by an ampersand.</p>
 * <p>Entries may have a value assigned using the parameter=value notation.</p>
 * <p>Valid operations strings are "link", "link=all", "filer=true&start=0"</p>
 *
 * @param {String} op the operations string
 * @returns an object with properties matching entries.
 * @type Object
 */
CommonUI.parseQueryString = function(op) {
	var result = {};

	if (!op) {
		return result;
	}

	var elems = op.split("&");
	for (var i = 0; i < elems.length; i++) {
		var s = elems[i];
		var ofs = s.indexOf("=");
		if (ofs >= 0) {
			var p = s.substring(ofs + 1);
			s = s.substring(0, ofs);
			result[s] = decodeURIComponent(p);
		} else {
			result[s] = true;
		}
	}
	return result;
}



/**
 * Return a string that directs to the URL of the UI
 *
 * @param {String[]} url the array of URL elements
 * @type String
 * @return the URL to direct to the home URL
 */
CommonUI.prototype.homeURL = function(url) {
	var prefix = "";
	for (var i = 1; i < url.length; i++) {
		prefix += "../";
	}
	return prefix + url[0];
}



/**
 * Add SC_SEE_OTHER HTTP Codew with location to direct to newurl
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {String[]} url the array of URL elements
 */
CommonUI.prototype.redirectTo = function(req, res, url, newurl) {
	res.setStatus(HttpResponse.SC_SEE_OTHER);
	res.addHeader("Location", this.homeURL(url) + newurl);
}



/**
 * Generate a HTML template
 *
 * @param {String[]} url the array of URL elements
 * @returns the HTML page template
 * @type XML
 */
CommonUI.prototype.generateTemplate = function(url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var prefix = "";
	for (var i = 1; i < url.length; i++) {
		prefix += "../";
	}

	var pagetemplate =
		<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
			<head>
				<title>{this.service.type + " " + this.service.name}</title>
				<link rel="stylesheet" type="text/css" href={prefix + "../css/style.css"}/>
			</head>
			<body>
				<div align="left">
					<a href="http://www.cardcontact.de"><img src={prefix + "../images/banner.jpg"} width="750" height="80" border="0"/></a>
				</div>
				<div id="navigator">
					<p><b> {this.service.type}</b></p>
				</div>
				<div id="main">
					<div id="user"/>
					<div id="error"/>
					<div id="content"/>
					<p class="copyright">(c) Copyright 2003 - 2017 <a href="http://www.cardcontact.de">CardContact</a> Systems GmbH, Minden, Germany</p>
				</div>
			</body>
		</html>

	if (this.session.user) {
		var content =
			<div align="right">
				<p>
					{this.session.user.name} <a href={prefix + url[0] + "/logout"}>Logout</a>
				</p>
			</div>
		var div = pagetemplate.body..div.(@id == "user");
		div.appendChild(content);
	}

	if (this.resultCode != null) {
		var page =
			<div>
				<p id="result" class= { this.resultClass }>{ this.resultMessage } (<b id="resultCode">{ this.resultCode }</b>)</p>
			</div>

		var div = pagetemplate.body..div.(@id == "error");
		div.appendChild(page);
	}

	return pagetemplate;
}



/**
 * Send page after embedding in the HTML template
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {String[]} url the array of URL elements
 * @param {XML} page the page contents
 */
CommonUI.prototype.sendPage = function(req, res, url, page) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	if (typeof(page) == "undefined") {
		url = req.url;
		page = url;
	}

	var t = this.generateTemplate(url);
	var c = t..div.(@id == "content");
	c.div = page;

	var bml = <ul/>;
	var bookmarks = ApplicationServer.instance.getUIList();
	bookmarks = bookmarks.concat(this.bookmarks);

	for (var i = 0; i < bookmarks.length; i++) {
		var bm = bookmarks[i];

		if (bm.id == url[0]) {
			bml.appendChild(<li><a class="bookmarkactive" href={bm.url} title={bm.description}>{bm.name}</a></li>);
		} else {
			bml.appendChild(<li><a href={bm.url} title={bm.description}>{bm.name}</a></li>);
		}
	}
	var c = t..div.(@id == "navigator");
	c.appendChild(bml);
	c.appendChild(<p style="font-size: 7pt">{ VERSION }</p>);

	this.clearResultMessage();

	res.setContentType("application/xhtml+xml");
	res.print('<?xml version="1.0" encoding="UTF-8" standalone="no"?>');
	res.print('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n');
	res.print(t.toXMLString());
}



CommonUI.prototype.serveNotAuthorizedPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page = <p>You are not authorized to access this service or function.</p>
	this.sendPage(req, res, url, page);
}



CommonUI.prototype.serveWizardActivePage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page = <p>A wizard is active for this session. Please switch to service with running wizard.</p>
	this.sendPage(req, res, url, page);
}



/**
 * Add a bookmark shown on the navigation panel
 *
 * @param {String} name the name to display
 * @param {String} url the URL for this bookmark
 */
CommonUI.prototype.addBookmark = function(name, url) {
	var m = { name: name, url: url };
	this.bookmarks.push(m);
}



/**
 * Serves a refresh page that redirects back to the given URL
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {String} refreshUrl the redirect URL
 * @param {String} statusMessage the status message or undefined
 */
CommonUI.prototype.serveRefreshPage = function(req, res, url, statusMessage) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var prefix = "";
	for (var i = 1; i < url.length; i++) {
		prefix += "../";
	}

	var page = this.generateTemplate(url);

	if ((typeof(statusMessage) == "undefined") || (statusMessage == null)) {
		statusMessage = "Operation completed";
	}

	page.head.meta = <meta http-equiv="Refresh" content={"1; url=" + prefix + url[0]}/>;

	var c = page..div.(@id == "content");

	c.p = <p>{statusMessage}</p>

	res.setContentType("text/html");
	res.print('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\n');
	res.print(page.toXMLString());
}



/**
 * Add an action entry to the list of possible actions
 *
 * @param {XML} ul the list of action elements
 * @param {String} cmd the command part of the URL
 * @param {Number} index the index into the service request list
 * @param {String} action the action to be performed
 */
CommonUI.addAction = function(ul, cmd, index, action) {
	default xml namespace = "http://www.w3.org/1999/xhtml";
	ul.li += <li><a href={cmd + "?index=" + index + "&action=" + action}>Respond</a>{" with " + action}</li>
}



/**
 * Set the error message
 *
 * @param {String} message the error message
 */
CommonUI.prototype.setErrorMessage = function(code, message) {
	if (!message) {
		message = "Operation failed";
	}
	this.resultCode = code;
	this.resultMessage = message;
	this.resultClass = "error";
}



/**
 * Set the completion message
 *
 * @param {String} message the error message
 */
CommonUI.prototype.setCompletionMessage = function(code, message) {
	if (!message) {
		message = "Operation completed";
	}
	this.resultCode = code;
	this.resultMessage = message;
	this.resultClass = "ok";
}



/**
 * Clear the error log
 */
CommonUI.prototype.clearResultMessage = function() {
	this.resultCode = null;
}



/**
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {String[]} url array of URL path elements
 */
CommonUI.prototype.handleWizard = function(req, res, url) {
	GPSystem.log(GPSystem.DEBUG, module.id, "handleWizard(" + url + ")");

	if (!this.wizard) {
		var page = <div>
				<p>No wizard active or cookies disabled in browser.
				   You see this message, because the application redirected your browser
				   to the wizard URL, but the server was unable to related a running
				   wizard to your browser session. The most likely reason is that
				   you disabled cookies in the browser or entered the wizard URL without
				   first starting a wizard.</p>
			</div>
		this.sendPage(req, res, url, page);
		return;
	}

	if (typeof(this.wizard.handleRequest) == "function") {
		this.wizard.handleRequest(req, res);
	} else {
		page = this.wizard.getPage(req, res, url);

		if (page) {
			this.sendPage(req, res, url, page);
		} else {
			if (req.queryString || req.method == "POST") {			// Form processing redirect
				this.redirectTo(req, res, url, "/wizard");
			} else {
				if (this.resultCode) {
					this.redirectTo(req, res, url, "");
				} else {
					this.serveRefreshPage(req, res, url, this.wizard.getReturnCode());
				}
			}
		}
	}
}



/**
 * Determine if the user is authorized
 */
CommonUI.prototype.isAuthorized = function() {
	var am = this.service.authorizationManager;

	if (typeof(am) == "undefined") {
		return true;
	}

	if (!this.isAuthenticated()) {
		return false;
	}

	return am.loginAllowed(this.session.user);
}



/**
 * Determine if the user is authenticated
 */
CommonUI.prototype.isAuthenticated = function() {
	return typeof(this.session.cardState) != "undefined";
}



/**
 * Logout the current user
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {String[]} url array of URL path elements
 */
CommonUI.prototype.handleLogout = function(req, res, url) {
	delete this.session.wizard;
	delete this.wizard;
	ApplicationServer.instance.logout(req, res);
}



/**
 * Handle card requests with a registered wizard
 */
CommonUI.prototype.handleCard = function(session, pathInfo) {
	if (!this.wizard || !this.wizard.handleCard) {
		GPSystem.log(GPSystem.DEBUG, module.id, "handleCard() called but no processing wizard available");
	} else {
		this.wizard.handleCard(session, pathInfo);
	}
}



/**
 * Translate SmartCard-HSM induced exception into UI information
 */
CommonUI.prototype.handleSmartCardHSMError = function(e, fallthrough) {
	switch(e.error) {
		case GPError.USER_ABORT:
			this.setErrorMessage("abort", e.message);
			break;
		case GPError.DEVICE_ERROR:
			this.setErrorMessage("failure_device", e.message);
			break;
		case GPError.AUTHENTICATION_METHOD_BLOCKED:
			this.setErrorMessage("failure_keystore_authentication_locked", "SmartCard-HSM user authentication is locked due to excessive tries");
			break;
		case GPError.CARD_REMOVED:
			this.setErrorMessage("failure_no_keystore", "Card was removed");
			break;
		case GPError.CARD_CONNECT_FAILED:
			this.setErrorMessage("failure_no_keystore", "SmartCard-HSM not found. Insert token or card");
			break;
		case GPError.CARD_COMM_ERROR:
			this.setErrorMessage("failure_keystore", "Communication with the SmartCard-HSM failed");
			break;
		case GPError.NOT_AUTHENTICATED:
		case GPError.AUTHENTICATION_FAILED:
			this.setErrorMessage("failure_keystore_locked", "User authentication at SmartCard-HSM failed");
			break;
		case GPError.OUT_OF_MEMORY:
			this.setErrorMessage("failure_keystore_out_of_memory", "SmartCard-HSM is out of memory");
			break;
		default:
			if (fallthrough) {
				return false;
			}
			this.setErrorMessage("failure", "SmartCard-HSM failure: " + e.message);
			break;
	}
	return true;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Form processing
 */


var I18N = require('scsh/srv-cc1/I18N').I18N;



/**
 * Create from from a template
 *
 * @class Class supporting HTML form construction and processing using a JSON description of sections and fields
 *
 * @param {Object} template containing sections and fields
 */
function Form(template) {
	this.form = template;

	this.classForm = "pure-form pure-form-aligned";
	this.classGrid = "pure-g";
	this.classLabel = "pure-u-1 pure-u-sm-2-5 pure-u-md-1-5 pure-u-lg-1-6 pure-u-xl-1-8";
	this.classField = "pure-u-1 pure-u-sm-3-5 pure-u-md-4-5 pure-u-lg-5-6 pure-u-xl-7-8";
	this.classSelect = "pure-input-1";
	this.classValidationError = "validationerror";

	this.saveEnabled = false;
}

exports.Form = Form;



/**
 * Set an I18N handler that implements a method i18n() that translates a key string into a string in the language of the
 * current user
 *
 * @param {Object} Object implementing String i18n(String key)
 */
Form.prototype.setI18NHandler = function(handler) {
	assert(typeof(handler.i18n) == "function", "I18N handler must have a function i18n");
	this.i18nHandler = handler;
}



/**
 * Set a CSRF token for this form.
 *
 * The token will be included as hidden field.
 *
 * @param {String} csrfToken the token
 */
Form.prototype.setCSRFToken = function(csrfToken) {
	this.csrfToken = csrfToken;
}



/**
 * Set flag indicating that this form can be saved.
 *
 * Only with the save flag set, the postOnChange flag on select fields has an effect.
 *
 * @param {Boolean} saveEnabled true if this form can be saved.
 */
Form.prototype.setSaveEnabled = function(saveEnabled) {
	this.saveEnabled = saveEnabled;
}



/**
 * @private
 */
Form.prototype.i18n = function(key) {
	if (typeof(this.i18nHandler) != "undefined")
		return this.i18nHandler.i18n(key);
	return key;
}



/**
 * Render input field
 *
 * @private
 */
Form.prototype.renderInput = function(fld) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var value = fld.value;
	if (typeof(value) == "undefined") {
		value = "";
	}

	var input = <input id={ fld.id } name={ fld.id } type={ fld.type } size={ fld.size } value={ value } class="pure-input-1"/>;

	if (fld.required) {
		input.@required = "true";
	}

	if (!fld.editable) {
		input.@readonly = "readonly";
	}

	if (typeof(fld.min) != "undefined") {
		if (fld.type == "text" || fld.type == "textarea") {
			input.@minlength = fld.min;
		} else {
			input.@min = fld.min;
		}
	}

	if (typeof(fld.max) != "undefined") {
		if (fld.type == "text" || fld.type == "textarea") {
			input.@maxlength = fld.max;
		} else {
			input.@max = fld.max;
		}
	}

	if (typeof(fld.size) != "undefined") {
		input.@maxlength = fld.size;
	}

	if (fld.placeholder) {
		input.@placeholder = fld.placeholder;
	}

	var ttid = fld.label + ".tooltip";
	var ttstr = this.i18n(ttid);
	if (ttstr != ttid) {
		input.@title = ttstr;
	}

	return input;
}



/**
 * Render date input field
 *
 * @private
 */
Form.prototype.renderDate = function(fld, type) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var input = <input id={ fld.id } name={ fld.id } type={ type } class="pure-input-1"/>;

	if (fld.required) {
		input.@required = "true";
	}

	if (!fld.editable) {
		input.@readonly = "readonly";
	}

	if (typeof(fld.min) != "undefined") {
		input.@min = fld.min;
	}

	if (typeof(fld.max) != "undefined") {
		input.@max = fld.max;
	}

	if (typeof(fld.value) != "undefined") {
		input.@value = fld.value;
	}

	var ttid = fld.label + ".tooltip";
	var ttstr = this.i18n(ttid);
	if (ttstr != ttid) {
		input.@title = ttstr;
	}

	return input;
}



/**
 * Render file input field
 *
 * @private
 */
Form.prototype.renderFileInput = function(fld) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var input = <input id={ fld.id } name={ fld.id } type={ fld.type } class="pure-input-1"/>;

	if (fld.required) {
		input.@required = "true";
	}

	if (!fld.editable) {
		input.@readonly = "readonly";
	}

	if (typeof(fld.value) != "undefined") {
		input.@value = fld.value;
	}

	if (fld.postOnChange && this.saveEnabled) {
		input.@onchange = "this.form.submit()";
	}

	var ttid = fld.label + ".tooltip";
	var ttstr = this.i18n(ttid);
	if (ttstr != ttid) {
		input.@title = ttstr;
	}

	return input;
}



/**
 * Render text area field
 *
 * @private
 */
Form.prototype.renderTextArea = function(fld) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var input = <textarea id={ fld.id } name={ fld.id } cols={ fld.cols } rows={ fld.rows } class="pure-input-1">{ fld.value }</textarea>;

	if (fld.required) {
		input.@required = "true";
	}

	if (!fld.editable) {
		input.@readonly = "readonly";
	}

	if (typeof(fld.size) != "undefined") {
		input.@maxlength = fld.size;
	}

	var ttid = fld.label + ".tooltip";
	var ttstr = this.i18n(ttid);
	if (ttstr != ttid) {
		input.@title = ttstr;
	}

	return input;
}



/**
 * Render selection list, single or multiselect
 *
 * @private
 */
Form.prototype.renderSelect = function(fld) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var select = <select id={ fld.id } name={ fld.id } class={ this.classSelect }/>;

	if (!fld.editable) {
		select.@disabled = "disabled";
	}

	if (fld.multiselect) {
		select.@multiple = "multiple";
	}

	if (fld.postOnChange && this.saveEnabled) {
		select.@onchange = "this.form.submit()";
	}

	if (fld.required) { // required = "false" doesn't work in Firefox (version 78.6.1esr) but it works in Chromium (version 87.0.4280.141)
		select.@required = fld.required;
	}

	if (typeof(fld.size) != "undefined") {
		select.@size = fld.size;
	}

	var options = fld.options;
	if (options == undefined) {
		options = fld.value;
	}

	for (var i = 0; i < options.length; i++) {
		var o = options[i];

		if (o.optgroup) {
			select.appendChild(this.renderOptionGroup(o));
		} else {
			select.appendChild(this.renderOption(o));
		}
	}

	var ttid = fld.label + ".tooltip";
	var ttstr = this.i18n(ttid);
	if (ttstr != ttid) {
		select.@title = ttstr;
	}

	return select;
}



/**
 * Render an option
 *
 * @private
 */
Form.prototype.renderOption = function(o) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	if (o.msg) {
		var str = this.i18n(o.msg);
	} else {
		var str = o.value;
	}
	var option = <option value={ o.id } >{ str }</option>;

	if (o.labelmsg) {
		option.@label = this.i18n(o.labelmsg);
	}

	if (o.label) {
		option.@label = o.label;
	}

	if (o.selected) {
		option.@selected = "selected";
	}

	if (o.disabled) {
		option.@disabled = "disabled";
	}

	return option;
}



/**
 * Render checkbox input field
 *
 * @private
 */
Form.prototype.renderCheckbox = function(fld) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

        var input = <input type="checkbox" id={ fld.id } name={ fld.id } />

        if (fld.checked) {
		input.@checked = "checked";
	}

	if (fld.required) {
		input.@required = "true";
	}

	if (!fld.editable) {
		input.@readonly = "readonly";
		input.@disabled = "disabled";
	}

	var label = <label for={ fld.id }>
            {input} { fld.value }
        </label>

	return label;
}



/**
 * Render the select option group
 *
 * @private
 */
Form.prototype.renderOptionGroup = function(grp) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var optgroup = <optgroup label={ grp.label }></optgroup>

	for (var i = 0; i < grp.value.length; i++) {
		var o = grp.value[i];
		optgroup.appendChild(this.renderOption(o));
	}

	return optgroup;
}



/**
 * Render status field (feature #200)
 *
 * @private
 */
Form.prototype.renderLink = function(fld) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var value = fld.text;
	if (value == undefined) {
		value = fld.value;
	}
	var text = this.i18n( value )

	var p = <p/>;

	if (text.indexOf("[") >= 0) {
		var parts = text.match(/(.*)\[([\w\s\d]+)\](.*)/);
		if (parts[1].length > 0) {
			p.appendChild(parts[1]);
		}

		var link = <a href={fld.href}>{ parts[2] }</a>
		p.appendChild(link);

		if (parts[3].length > 0) {
			p.appendChild(parts[3]);
		}
	} else {
		var parts = text.split("{0}");

		p.appendChild(parts[0]);

		if (typeof(fld.href) == "string") {
			var link = <a href={fld.href}>Link</a>

			for (var i = 1; i < parts.length; i++) {
				p.appendChild(link);
				p.appendChild(parts[i]);
			}
		}
	}

	return p;
}



/**
 * Render other field types
 *
 * Should be overwritten by derived classes implementing additional field types
 *
 * @param {Object} fld the field description
 */
Form.prototype.renderOther = function(fld) {
	throw new GPError(module.id, GPError.INVALID_DATA, 0, "Unknown field type " + fld.type);
}



/**
 * Render form as HTML form element
 *
 * @type XML
 * @return the XHTML form element
 */
Form.prototype.render = function() {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var html = <form action="" method="post" enctype="multipart/form-data" class={ this.classForm }/>;

	if (typeof(this.csrfToken) != "undefined") {
		var input = <input name="_csrf" type="hidden" value={ this.csrfToken }/>;
		html.appendChild(input);
	}

	for (var fsi = 0; fsi < this.form.length; fsi++) {
		var fs = this.form[fsi];

		var fieldset =  <fieldset id={ fs.id } ><legend>{ this.i18n( fs.legend ) }</legend></fieldset>;

		for (var fli = 0; fli < fs.fields.length; fli++) {
			var fld = fs.fields[fli];


			var grid = <div class={ this.classGrid } />;
			var div = <div class={ this.classLabel } />;
			if (fld.label) {
				var label = <label for={ fld.id } >{ this.i18n(fld.label) }</label>
				div.appendChild(label);
			}
			grid.appendChild(div);

			var div = <div class={ this.classField }/>;

			switch(fld.type) {
				case "number":
				case "text":
				case "email":
					var elem = this.renderInput(fld);
					break;
				case "date":
					var elem = this.renderDate(fld, "date");
					break;
				case "datetime":
					var elem = this.renderDate(fld, "datetime-local");
					break;
				case "file":
					var elem = this.renderFileInput(fld);
					break;
				case "select":
					var elem = this.renderSelect(fld);
					break;
				case "textarea":
					var elem = this.renderTextArea(fld);
					break;
				case "link":
					var elem = this.renderLink(fld);
					break;
				case "checkbox":
					var elem = this.renderCheckbox(fld);
					break;
				default:
					var elem = this.renderOther(fld);
					break;
			}

			div.appendChild(elem);

			if (fld.message) {
				var msg;
				if (fld.message.charAt(0) == '$') {
					msg = this.i18n(fld.message.substr(1));
				} else {
					msg = fld.message;
				}
				div.appendChild( <p class={ this.classValidationError }>{ msg }</p> );
			}
			grid.appendChild(div);
			fieldset.appendChild(grid);
		}
		html.appendChild(fieldset);
	}

	return html;
}



/**
 * Validate entry of val into a single field, if valid call model.updateModel()
 *
 * If the field does not pass validation, then the fld.message element is updated
 * with an error message and false is returned.
 *
 * The model shall return true if the field is valid and update the model accordingly.
 *
 * @type boolean
 * @return true if field passed validation
 */
Form.validateField = function(fld, val, model) {
	var mval = val;

	switch(fld.type) {
		case "textarea":
		case "text":
		case "email":
			fld.value = val;
			if (fld.size && (val.length > fld.size)) {
				fld.message = "$error.input_too_long";
				return false;
			}
			if (fld.min && (val.length < fld.min)) {
				fld.message = "$error.input_too_short";
				return false;
			}
			if (fld.required && (val.match(/^\s*$/) != null)) {
				fld.message = "$error.field_empty";
				return false;
			}
			break;
		case "select":
			if (fld.multiselect) {
				if (val.length > 0) {
					var ids = val.split(",").map(Number);
				} else {
					var ids = [];
				}
			} else {
				var ids = [ parseInt(val) ];
			}

			if (fld.value) {
				for (var i = 0; i < fld.value.length; i++) {
					fld.value[i].selected = false;
				}

				for (var i = 0; i < ids.length; i++) {
					var id = ids[i];
					var found = false;

					for (var j = 0; j < fld.value.length; j++) {
						var entry = fld.value[j];

						if (entry.optgroup) {
							for (var k = 0; k < entry.value.length; k++) {
								var option = entry.value[k];
								if (option.id == id) {
									option.selected = true;
									found = true;
									break;
								}
							}
						} else {
							if (entry.id == id) {
								entry.selected = true;
								found = true;
								break;
							}
						}

						if (found) {
							break;
						}
					}

					if (!found) {
						GPSystem.log(GPSystem.ERROR, module.id, "Received invalid id " + id + " for select field " + fld.id);
						fld.message = "$error.invalid_data";
						return false;
					}
				}
			}

			if (fld.multiselect) {
				mval = ids;
			} else {
				mval = ids[0];
			}
			break;
		case "number":
			fld.value = val;
			var mval = parseInt(val);

			if (isNaN(mval)) {
				fld.message = "$error.not_a_number";
				return false;
			}

			if ((typeof(fld.min) == "number") && (mval < fld.min)) {
				fld.message = "$error.too_small";
				return false;
			}

			if ((typeof(fld.max) == "number") && (mval > fld.max)) {
				fld.message = "$error.too_large";
				return false;
			}

			break;
		case "checkbox":
			if (val == "on") {
				mval = true;
			} else {
				mval = false;
			}
			break;
		// No Default to allow model to implement additional field types
	}

	if (!model.updateModel(fld, mval)) {
		return false;
	}

	return true;
}



/**
 * Set editable fields in the form with key:value pairs in the fields object
 *
 * @type boolean
 * @return true if field passed validation
 */
Form.prototype.setFields = function(fields, model) {

	//	for (var i in fields) {
	//		print("### " + i + " : " + fields[i]);
	//	}

	var valid = true;

	for (var fsi = 0; fsi < this.form.length; fsi++) {
		var fs = this.form[fsi];

		for (var fli = 0; fli < fs.fields.length; fli++) {
			var fld = fs.fields[fli];

			if (fld.editable) {
				var val = fields[fld.id];
				if (typeof(val) != "undefined") {
					if (!Form.validateField(fld, val, model)) {
						valid = false;
					}
				} else {
					if (fld.multiselect) {
						if (!Form.validateField(fld, "", model)) {
							valid = false;
						}
					} else if (fld.type == "checkbox") {
						// The value of an unchecked checkbox won't be submitted
						// by the browser
						if (!Form.validateField(fld, false, model)) {
							valid = false;
						}
					}
				}
			}
		}
	}
	return valid;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2023 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Connector for the PKI-API
 */


function FormParser(form) {
    this.form = form;
}

exports.FormParser = FormParser;



FormParser.prototype.getFieldById = function(id) {
    for each (var section in this.form) {
        for each (var field in section.fields) {
            if (id == field.id) {
                return field;
            }
        }
    }
}



FormParser.prototype.enumerateOptions = function(field) {
    var list = [];
    for each (var option in field.options) {
        list.push(option.value);
    }
    return list;
}



FormParser.prototype.enumerateOptionIds = function(field) {
    var list = [];
    for each (var option in field.options) {
        list.push(option.id);
    }
    return list;
}



FormParser.prototype.selectStringOption = function(field, option) {
}



FormParser.test = function() {
    var form = [
    {
      "id": "token",
      "legend": "msg.sems.dica",
      "fields": [
        {
          "id": "issuer",
          "type": "select",
          "label": "msg.sems.issuer",
          "editable": true,
          "required": false,
          "value": 2,
          "options": [
            {
              "id": 2,
              "value": "UTDICA1",
              "selected": true
            },
            {
              "id": 5,
              "value": "UTDICA2",
              "selected": false
            },
            {
              "id": 12,
              "value": "UTDICA3",
              "selected": false
            },
            {
              "id": 14,
              "value": "UTDICA4",
              "selected": false
            },
            {
              "id": 15,
              "value": "UTDICA5",
              "selected": false
            }
          ],
          "multiSelect": false,
          "onchange": "this.form.submit()"
        },
        {
          "id": "process",
          "type": "select",
          "label": "msg.sems.process",
          "editable": true,
          "required": false,
          "value": "se-jcop",
          "options": [
            {
              "id": 0,
              "value": "se-jcop",
              "selected": true
            }
          ],
          "multiSelect": false
        },
        {
          "id": "hardware",
          "type": "select",
          "label": "msg.sems.hardware",
          "editable": true,
          "required": false,
          "value": "Default",
          "options": [
            {
              "id": 0,
              "value": "Default",
              "selected": true
            }
          ],
          "multiSelect": false
        },
        {
          "id": "kmc",
          "type": "select",
          "label": "msg.sems.kmc",
          "editable": true,
          "required": false,
          "value": "Default",
          "options": [
            {
              "id": 0,
              "value": "Default",
              "selected": true
            }
          ],
          "multiSelect": false
        }
      ]
    }
    ];

    var p = new FormParser(form);
    var fld = p.getFieldById("process");
    print(p.enumerateOptions(fld));

    var fld = p.getFieldById("issuer");
    print(p.enumerateOptionIds(fld));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A simple HSM maintaince service
 */

var SmartCardHSM		= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var SmartCardHSMInitializer	= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMInitializer;
var ManagePKA			= require('scsh/sc-hsm/ManagePKA').ManagePKA;
var EACCryptoProvider		= require('scsh/sc-hsm/EACCryptoProvider').EACCryptoProvider;
var CryptoProvider		= require('scsh/sc-hsm/CryptoProvider').CryptoProvider;
var HSMUI			= require('scsh/srv-cc1/HSMUI').HSMUI;



/**
 * Class implementing the SmartCard-HSM management service
 *
 * @constructor
 */
function HSMService() {
	this.type = "SC-HSM";
	this.name = "Management";
	this.hsmlist = [];
	this.hsmmap = [];
	this.crypto = new Crypto();
	this.authenticationRequired = false;
	this.roleRequired = 0;
}

exports.HSMService = HSMService;



/**
 * Create a new UI session
 *
 * @param {HttpSession} session the new session context
 */
HSMService.prototype.newUI = function(session) {
	var ui = new HSMUI(this, session);
	return ui;
}



/**
 * Add HSMState to managed list, possibly updating existing state object
 *
 * @param {HSMState} hsm the state object
 */
HSMService.prototype.addOrUpdateHSMState = function(state) {
	var oldstate = this.hsmmap[state.path];
	if (oldstate) {
		oldstate.path = state.path;
		oldstate.sc = state.sc;
		oldstate.deviceId = state.deviceId;
		oldstate.error = state.error;
		return oldstate;
	} else {
		this.hsmmap[state.path] = state;
		this.hsmlist.push(state);
		return state;
	}
}



/**
 * Return a list of registered HSMs
 * @type String[]
 * @return the list of HSM path identifier
 */
HSMService.prototype.getHSMList = function() {
	var list = [];
	for (var i = 0; i < this.hsmlist.length; i++) {
		list.push(this.hsmlist[i].path);
	}
	return list;
}



/**
 * Obtain card service for device
 *
 * @param {HSMState} hsm the state object
 * @param {Card} the card object representing the link to the device
 */
HSMService.prototype.getCardService = function(state, card) {
	try	{
		var sc = new SmartCardHSM(card);
	}
	catch(e if e instanceof GPError) {
		throw new GPError(module.id, GPError.DEVICE_FAILED, 0, "This does not seem to be a SmartCard-HSM");
	}

	// Determine device unique path
	var devAutCert = sc.readBinary(SmartCardHSM.C_DevAut);
	var chain = SmartCardHSM.validateCertificateChain(this.crypto, devAutCert);
	if (chain == null) {
		throw new GPError(module.id, GPError.CRYPTO_FAILED, 0, "Could not validate device certificate. Is this a genuine SmartCard-HSM ?");
	}
	if (state.path) {
		if (chain.path != state.path) {
			throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "Device is " + chain.path + " but should be " + state.path +
			". Please insert correct SmartCard-HSM or connect to a different SmartCard-HSM" );
		}
	} else {
		state.path = chain.path;
	}

	state.deviceId = chain.devicecert.getCHR().getBytes();
	if (state.protectedPINEntry) {
		var cs = sc.getNativeCardService();
		cs.useClassThreePinPad(true);
	}
	state.error = undefined;
	state.sc = sc;
	state.update();
}



/**
 * Add local SmartCard-HSM to managed list
 *
 * If the path is already known, then the device is added as offline device.
 *
 * @param {String} readerName card reader name, can be empty to any reader
 * @param {Boolean} protectedPINEntry use PIN PAD or PIN Dialog
 * @param {String} path identifier of SmartCard-HSM, if already known
 * @param {ByteString} pin optional PIN value
 */
HSMService.prototype.addLocalHSM = function(readerName, protectedPINEntry, path, pin) {
	var state;

	if (path) {
		state = this.hsmmap[path];
		if (!state) {
			state = new HSMState(path);
			state = this.addOrUpdateHSMState(state);
			state.isLocal = true;
		}
		state.protectedPINEntry = protectedPINEntry;
	} else {
		var card = new Card(readerName);
		state = new HSMState();
		state.protectedPINEntry = protectedPINEntry;
		this.getCardService(state, card);
		state = this.addOrUpdateHSMState(state);
		state.isLocal = true;
	}
	state.readerName = readerName;
	state.pin = pin;
}



/**
 * Handle inbound request from remote terminal
 *
 * @param {HttpSession} session the session object
 * @param {String} pathInfo the pathinfo part of the URL
 */
HSMService.prototype.handleCard = function(session, pathInfo) {
	GPSystem.trace("Handle card for session " + session.id);
	if (session.cardTerminal) {
		var card = new Card(session.cardTerminal);
	} else {
		var card = new Card(session.id);
	}
	var ct = card.nativeCardTerminal;

	try	{
		var state = new HSMState();
		this.getCardService(state, card);
		state = this.addOrUpdateHSMState(state);
		delete state.cp;
		state.isLocal = false;

		state.update();
	}
	catch(e if e instanceof GPError) {
		GPSystem.log(GPSystem.ERROR, module.id, e);
		ct.sendNotification(-1, "Failure talking to card. Is this a SmartCard-HSM ?");
		GPSystem.trace(e);
	}
}



/**
 * Return the full list of maintained states
 *
 * @type HSMState[]
 * @return the list of maintained HSM states
 */
HSMService.prototype.getHSMStates = function() {
	return this.hsmlist;
}



/**
 * Try to bring local HSM online
 *
 * @param {HSMState} state the HSM state object
 */
HSMService.prototype.bringOnline = function(state) {
	assert(state instanceof HSMState, "Argument must be of type HSMState");

	var card = new Card(state.readerName);
	this.getCardService(state, card);
}



/**
 * Return true if SmartCard-HSM with given path is registered
 *
 * @type boolean
 * @return true if this HSM is known
 */
HSMService.prototype.hasHSM = function(path) {
	return (typeof(this.hsmmap[path]) != "undefined");
}



/**
 * Return updated HSM state for given device
 *
 * If it is a local device and it is currently offline, then try to bring the device online
 *
 * @param {String} path the device id
 * @type HSMState
 * @return the state object
 */
HSMService.prototype.getHSMState = function(path) {
	var state = this.hsmmap[path];
	if (state) {
		if (state.isOffline() && state.isLocal) {
			try	{
				this.bringOnline(state);
			}
			catch(e if e instanceof GPError) {
				GPSystem.log(GPSystem.ERROR, module.id, e);
				state.error = e.message;
				return state;
			}
		}
		state.update();
	}
	return state;
}



/**
 * Perform User PIN verification
 *
 * @param {HSMState} hsm the state object
 * @param {String} pin the optional provided PIN
 * @type String
 * @return Result string
 */
HSMService.prototype.verifyUserPIN = function(hsm, pin) {
	if (!hsm.sc) {
		return "HSM is offline";
	}

	try	{
		if (pin) {
			hsm.pinsw = hsm.sc.verifyUserPIN(new ByteString(pin, ASCII));
		} else {
			hsm.pinsw = hsm.sc.verifyUserPIN();
		}
	}
	catch(e if e instanceof GPError) {
		GPSystem.log(GPSystem.ERROR, module.id, "PIN verification failed with " + e.message);
		hsm.pinsw = hsm.sc.queryUserPINStatus();
	}

	return SmartCardHSM.describePINStatus(hsm.pinsw, "User PIN");
}



/**
 * Return a EACCryptoProvider instance for the SmartCard-HSM identified by the parameter id
 *
 * @param {String} id the SmartCard-HSM id
 * @param {Boolean} requireLogin require that the return provider is logged-in and as such operational
 * @type EACCryptoProvider
 * @return a crypto provider bound to the SmartCard-HSM. Authentication has been assured
 */
HSMService.prototype.assertCryptoProvider = function(id, requireLogin) {
	GPSystem.log(GPSystem.DEBUG, module.id, "assertCryptoProvider('" + id + "," + requireLogin + "')");

	assert(typeof(id) == "string", "Argument must be string");
	assert(typeof(requireLogin) == "boolean", "Argument must be boolean");

	var state = this.hsmmap[id];

	if (!state) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "No provider for " + id + " found");
	}

	state.update();

	if (state.isOffline()) {
		delete state.cp;
		if (state.isLocal) {
			this.bringOnline(state);
		} else {
			throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "Device " + state.path + " is offline");
		}
	}

	if (requireLogin && !state.isUserAuthenticated()) {
		if (state.hasProtectedPINEntry()) {
			state.pinsw = state.sc.verifyUserPIN();
			if (state.pinsw != 0x9000) {
				throw new GPError(module.id, GPError.AUTHENTICATION_FAILED, 0, "PIN Verification failed");
			}
		} else if (state.pin) {
			state.sc.verifyUserPIN(state.pin);
		} else {
			throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "Device " + state.path + " is not logged in");
		}
	}
	return state;
}



/**
 * Return a EACCryptoProvider instance for the SmartCard-HSM identified by the parameter id
 *
 * @param {String} id the SmartCard-HSM id
 * @param {Boolean} requireLogin require that the return provider is logged-in and as such operational
 * @type EACCryptoProvider
 * @return a crypto provider bound to the SmartCard-HSM. Authentication has been assured
 */
HSMService.prototype.getEACCryptoProvider = function(id, requireLogin) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getEACCryptoProvider('" + id + "," + requireLogin + "')");
	var state = this.assertCryptoProvider(id, requireLogin);

	if (!state.cp) {
		state.cp = new EACCryptoProvider(state.sc, state.path);
	}

	return state.cp;
}



/**
 * Return a CryptoProvider instance for the SmartCard-HSM identified by the parameter id
 *
 * @param {String} id the SmartCard-HSM id
 * @param {Boolean} requireLogin require that the return provider is logged-in and as such operational
 * @typeCryptoProvider
 * @return a crypto provider bound to the SmartCard-HSM. Authentication has been assured
 */
HSMService.prototype.getCryptoProvider = function(id, requireLogin) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCryptoProvider('" + id + "," + requireLogin + "')");
	var state = this.assertCryptoProvider(id, requireLogin);

	if (!state.cp) {
		state.cp = new CryptoProvider(state.sc, state.path);
	}

	return state.cp;
}



/**
 * Reinitialize and clear all keys on the device
 *
 * This method is only used during testing when the database is reset and shall ensure
 * that all keys are removed as well. This method uses the default SO-PIN and User-PIN.
 */
HSMService.prototype.reinitializeHSM = function(id) {
	assert(typeof(id) == "string", "Argument must be string");

	var state = this.hsmmap[id];

	if (!state) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "No provider for " + id + " found");
	}

	state.update();

	if (state.isOffline()) {
		if (state.isLocal) {
			this.bringOnline(state);
		} else {
			throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "Device " + state.path + " is offline");
		}
	}

	if (state.isOffline()) {
		throw new GPError(module.id, GPError.DEVICE_ERROR, 0, "Device " + state.path + " is offline");
	}

	var sci = new SmartCardHSMInitializer(state.sc.card);
	if (state.pin) {
		sci.setUserPIN(state.pin);
	}
	sci.initialize();

	state.protectedPINEntry = false;
	state.pin = sci.userPIN;

	delete state.cp;
}



HSMService.prototype.toString = function() {
	return "HSMService for SmartCard-HSM";
}



/**
 * Maintain the SmartCard-HSM state information
 *
 * @param {String} path the SmartCard-HSM unique identifier
 * @constructor
 */
function HSMState(path) {
	this.path = path;
	this.isLocal = false;
}



/**
 * Returns true if SmartCard-HSM is no longer connected
 *
 * @type boolean
 * @return true if disconnected
 */
HSMState.prototype.isOffline = function() {
	return !this.sc;
}



/**
 * Returns true if protected PIN verification is supported
 *
 * @type boolean
 * @return true if protected PIN supported
 */
HSMState.prototype.hasProtectedPINEntry = function() {
	return this.protectedPINEntry;
}



/**
 * Returns true if user is authenticated
 *
 * @type boolean
 * @return true if user is authenticated
 */
HSMState.prototype.isUserAuthenticated = function() {
	return this.pinsw == 0x9000;
}



/**
 * Update status
 */
HSMState.prototype.update = function() {
	if (this.isOffline()) {
		return;
	}

	try	{
		this.pinsw = this.sc.queryUserPINStatus();

		this.pka = new ManagePKA(this.sc, this.deviceId);

		if (!this.pka.isActive()) {
			this.pka = null;
		}
	}
	catch(e if e instanceof GPError) {
		GPSystem.log(GPSystem.INFO, module.id, "Device " + this.path + " failed with " + e.message);
		this.error = e.message;
		this.sc = undefined;		// Device is offline, e.g. removed
	}
}



/**
 * Logout from SmartCard-HSM
 */
HSMState.prototype.logout = function() {
	if (!this.sc) {
		return;
	}

	this.sc.logout();
	this.update();
}



/**
 * Disconnect remote connection
 */
HSMState.prototype.disconnect = function() {
	if (!this.sc) {
		return;
	}
	this.sc.card.close();
	this.sc = null;
	this.pka = null;
}



HSMState.prototype.toString = function() {
	return (this.isLocal ? "Local: " : "Remote: ") + this.path;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A simple HSM maintaince web GUI
 */

var CommonUI = require('scsh/srv-cc1/CommonUI').CommonUI;
var PKAWizard = require('scsh/srv-cc1/PKAWizard').PKAWizard;
var SmartCardHSM = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;



/**
 * Create a HSM maintainance web GUI
 *
 * @class Class implementing a simple HSM maintainance user interface
 * @constructor
 * @param {SmartCardHSM} hsm the SmartCard-HSM to which the GUI is attached
 */
function HSMUI(service, session) {
	CommonUI.call(this, service, session);
	this.service = service;
	this.selectedHSM = service.getHSMStates()[0];
}

HSMUI.prototype = new CommonUI();
HSMUI.constructor = HSMUI;

exports.HSMUI = HSMUI;



/**
 * Prepare table with status information for HSM
 *
 * @param {HSMState} hsmstate the current state
 */
HSMUI.prototype.renderHSMInfo = function(hsmstate) {
	var t = <table class="content"/>;
	t.colgroup += <colgroup><col width="20%"/><col/></colgroup>
	t.tr += <tr><td>Id</td><td>{ hsmstate.path }</td></tr>;

	if (hsmstate.isOffline()) {
		if (hsmstate.error) {
			var str = "Offline (" + hsmstate.error + ")";
		} else {
			var str = "Offline";
		}
	} else {
		var str = "Online";
	}

	t.tr += <tr><td>Status</td><td>{ str }</td></tr>;

	if (hsmstate.readerName) {
		t.tr += <tr><td>Reader</td><td>{ hsmstate.readerName }</td></tr>;
	}

	if (!hsmstate.isOffline()) {
		if (hsmstate.pka) {
			t.tr += <tr><td>Authentication Status</td><td>{ hsmstate.pka.describeStatus() }</td></tr>;
		} else {
			t.tr += <tr><td>Authentication Status</td><td>{ SmartCardHSM.describePINStatus( hsmstate.pinsw, "User") }</td></tr>;
		}
	}

	return t;
}



/**
 * Serve the status page
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 * @param {String[]} url array of URL path elements
 */
HSMUI.prototype.serveStatusPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var hsmlist = this.service.getHSMStates();

	if (hsmlist.length == 0) {
		var page = <div>
				<p>No SmartCard-HSM connected yet.</p>
				<p>Please configure service to use a SmartCard-HSM.</p>
				<p>You can also connect a device by running:</p>
				<pre>
					$ java -jar ocf-cc.jar http://localhost:8080/rt/hsm
				</pre>
				<p>Press the refresh button once the SmartCard-HSM is connected.</p>
			</div>

		this.sendPage(req, res, url, page);
		return;
	}

	if (!this.selectedHSM) {
		this.selectedHSM = hsmlist[0];
	}

	var page =
		<div>
			<h1>SmartCard-HSM</h1>
			<form action="" method="get">
				Select HSM
				<input name="op" type="hidden" value="changehsm"/>
				<select name="hsm" size="1" onchange="this.form.submit()">

				</select>
				<button type="submit">Refresh</button>
			</form>
			<br/>
			<div id="hsminfo" />
			<br/>
			<div id="actions" />
		</div>

	var l = page.form.select.(@name=="hsm");
	var hsmlist = this.service.getHSMStates();

	for each (var hsm in hsmlist) {
		if (this.selectedHSM.path == hsm.path) {
			l.option += <option selected="selected" value={ hsm.path }>{hsm.toString()}</option>
		} else {
			l.option += <option value={ hsm.path }>{hsm.toString()}</option>
		}
	}

	var div = page.div.(@id == "hsminfo");
	div.appendChild(this.renderHSMInfo(this.selectedHSM));

	if (!this.selectedHSM.isOffline()) {
		if (!this.selectedHSM.pka) {
			if (this.selectedHSM.hasProtectedPINEntry()) {
				var action = <div>
					<form action="" method="get">
						<input name="op" type="hidden" value="verifypin"/>
						<button type="submit">Verify PIN</button>
					</form>
				</div>
			} else {
				var action = <div>
					<form action="" method="get">
						<input name="op" type="hidden" value="verifypin"/>
						<input name="pin" type="password" size="20"/>
						<button type="submit">Verify PIN</button>
					</form>
				</div>
			}
		} else {
			var action = <div>
				<form action="" method="get">
					<input name="op" type="hidden" value="authenticate"/>
					<button type="submit">Authenticate</button>
				</form>
			</div>;
		}

		action.form += 	<form action="" method="get">
					<input name="op" type="hidden" value="logout"/>
					<button type="submit">Logout</button>
				</form>

		if (!this.selectedHSM.isLocal) {
			action.form += 	<form action="" method="get">
						<input name="op" type="hidden" value="disconnect"/>
						<button type="submit">Disconnect</button>
					</form>
		}

		var div = page.div.(@id == "actions");
		div.appendChild(action);
	}

	this.sendPage(req, res, url, page);
}



/**
 * Create wizard to handle public key authentication
 */
HSMUI.prototype.handlePKAAuthenticate = function(req, res, url) {
	this.wizard = new PKAWizard(this, this.selectedHSM);
	this.redirectTo(req, res, url, "/wizard");
}



/**
 * Handle card interaction by defereing to wizard
 */
HSMUI.prototype.handleCard = function(session, pathInfo) {
	if (this.wizard) {
		this.wizard.handleCard(session, pathInfo);
	}
}



/**
 * Dispatch all GET inquiries
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
HSMUI.prototype.handleRequest = function(req, res) {
	if (this.service.authenticationRequired) {
		if (typeof(this.session.user) == "undefined") {
			this.serveNotAuthorizedPage(req, res, req,url);
			return;
		}

		if (this.service.roleRequired > 0) {
			if ((typeof(this.session.user.roles) == "undefined") || (this.session.user.roles.indexOf(this.service.roleRequired) <= 0)) {
				this.serveNotAuthorizedPage(req, res, req,url);
				return;
			}
		}
	}

	// pathInfo always starts with an "/"
	var url = req.pathInfo.substr(1).split("/");

	// Handle details
	if (url.length > 1) {
		var detailsType = url[1];
//		GPSystem.trace("Handle details for :" + detailsType);
		switch(detailsType) {
		case "wizard":
			this.handleWizard(req, res, url);
			break;
		default:
			res.setStatus(HttpResponse.SC_NOT_FOUND);
		}
	} else {
		// Handle operations
		if (req.queryString) {
			// Handle operations
			var operation = CommonUI.parseQueryString(req.queryString);

			switch(operation.op) {
			case "changehsm":
				var newhsm = this.service.getHSMState(operation.hsm);
				if (newhsm) {
					this.selectedHSM = newhsm;
				}
				this.redirectTo(req, res, url, "");
				break;
			case "verifypin":
				var result = this.service.verifyUserPIN(this.selectedHSM, operation.pin);

				this.serveRefreshPage(req, res, url, result);
				break;
			case "authenticate":
				this.handlePKAAuthenticate(req, res, url);
				break;
			case "logout":
				this.selectedHSM.logout();
				this.redirectTo(req, res, url, "");
				break;
			case "disconnect":
				this.selectedHSM.disconnect();
				this.redirectTo(req, res, url, "");
				break;
			default:
				this.serveStatusPage(req, res, url);
			}
		} else {
			this.serveStatusPage(req, res, url);
		}
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Internationalization Support
 */


var I18N = { FallbackToDefaultLang: true, EnforceDefaultLang: false };

exports.I18N = I18N;

var Map = {};
var DefaultLang;


/**
 * Add a resource table from within the code
 *
 * @param {Object[]} res array of resource objects with a property lang that denotes the language and keys that contains a map of key to messages
 */
I18N.addResources = function(res) {
	assert(typeof(res) == "object", "Argument res must be of type array");
	assert(res.length > 0, "Argument can't be empty");

	var lang = res[0].lang;
	var map = Map[lang];
	if (!map) {
		print("New default map for " + lang);
		map = { lang: lang };
		DefaultLang = lang;
		Map[lang] = map;
	}

	for (var key in res[0].keys) {
		if (typeof(map[key]) != "undefined") {
			GPSystem.log(GPSystem.WARN, module.id, "Key " + key + " defined more than once");
		}
		map[key] = res[0].keys[key];
	}
	for (var i = 1; i < res.length; i++) {
		var map = Map[res[i].lang];
		if (!map) {
			print("New translation map for " + res[i].lang);
			map = { lang: res[i].lang };
			Map[res[i].lang] = map;
		}
		for (var key in res[0].keys) {
			var str = res[i].keys[key];
			if (!str) {
				GPSystem.log(GPSystem.DEBUG, module.id, "No translation found for " + key + " in " + res[i].lang);
				str = res[0].keys[key];
			}
			map[key] = str;
		}
	}
}



/**
 * Translate key into message
 *
 * @param {String/Object} lang either the language string or the map returned by I18N.getMap().
 * @param {String} key the key to translate
 * @type String
 * @return the translated messages
 */
I18N.t = function(lang, key) {
	if (typeof(lang) == "string") {
		lang = I18N.getMap(lang);
	}

	var s = lang[key];
	if (s == undefined) {
		if (lang.lang == DefaultLang) {
			s = key;
		} else {
			if (I18N.FallbackToDefaultLang) {
				s = I18N.t(Map[DefaultLang], key)
			} else {
				s = key;
			}
		}
	}
	return s;
}



/**
 * Return the map for a given language. Use this call to reduce map lookup in I18N.t()
 *
 * @param {String} lang the language code, e.g. "EN" for English
 * @type Object
 * @return the map
 */
I18N.getMap = function(lang) {
	if (I18N.EnforceDefaultLang) {
		lang = DefaultLang;
	}
	var m = Map[lang];
	if (m == undefined) {
		m = Map[DefaultLang];;
	}
	return m;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Wizard for public key authentication
 */

var CVC			= require('scsh/eac/CVC').CVC;
var SmartCardHSM	= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var ManagePKA		= require('scsh/sc-hsm/ManagePKA').ManagePKA;
var HSMKeyStore		= require('scsh/sc-hsm/HSMKeyStore').HSMKeyStore;

var CardAction		= require('scsh/srv-cc1/CardAction').CardAction;



/**
 * Wizard to perform a public key authentication with a SmartCard-HSM
 *
 */
function PKAWizard(ui, hsmstate) {
	CardAction.call(this, ui);
	this.hsmstate = hsmstate;
}

PKAWizard.prototype = new CardAction();
PKAWizard.constructor = PKAWizard;

exports.PKAWizard = PKAWizard;



PKAWizard.prototype.getPage = function(req, res, url) {
	GPSystem.trace("PKAWizard state: " + this.state);
	switch(this.state) {
		case "new":
			var page = this.getSignStartPage(req, res, url);
			this.state = "enumeratekeys";
			break;
		case "enumeratekeys":
			var page = this.getNoClientPage(req, res, url);
			this.state = "new";
			break;
		case "enterdata":
			if (req.method == "POST") {
				var page = this.processSignControlForm(req, res, url);
				this.state = "startsign";
			} else {
				var page = this.getSignControlForm(req, res, url);
			}
			break;
		case "startsign":
			var page = this.getSignProgressPage(req, res, url);
			this.state = "sign";
			break;
		case "sign":
			var page = this.getErrorPage(req, res, url);
			this.state = "startsign";
			break;
		default:
			var page = CardAction.prototype.getPage.call(this, req, res, url);
	}
	return page;
}



PKAWizard.prototype.getSignStartPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>PKA Service</h1>
			<p>Enumerate keys... { this.getActivationLink(req, res, -1) }</p>
			<p>Please wait for the green tick to appear. The page will be reloaded automatically if JavaScript is enabled.</p>
			<p>If JavaScript is disabled, then press <a href="">continue</a> after the green tick is shown.</p>
		</div>
	this.signedMessage = "";
	return page;
}



PKAWizard.prototype.getSignNoKeyPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>PKA Service</h1>
			<p>Error: The SmartCard-HSM has no available signing key.</p>
		</div>
	return page;
}



PKAWizard.prototype.getSignControlForm = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<div id="error"/>
			<h1>PKA Service</h1>

			<form action="" method="post" enctype="multipart/form-data">
				<p>Select the key for authentication:</p>
				<select name="key"/>
				<button type="submit">Authenticate</button>
			</form>
		</div>

	this.signedMessage = "";

	var l = page.form.select;
	for each (var alias in this.keys) {
		l[0].appendChild(<option>{alias}</option>);
	}

	return page;
}



PKAWizard.prototype.processSignControlForm = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	this.key = req.parameters.key;

	return null;
}



PKAWizard.prototype.getSignProgressPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>PKA Service</h1>
			<p>Start authentication... { this.getActivationLink(req, res, 1) }</p>
			<p>This operation requires PIN verification. Please watch the PIN dialog in the upper right corner
			   of your screen or on your card readers PIN pad.</p>
			<p>Please wait for the green tick to appear. The page will be reloaded automatically if JavaScript is enabled.</p>
			<p>If JavaScript is disabled, then press <a href="">continue</a> after the green tick is shown.</p>
		</div>

	return page;
}



PKAWizard.prototype.handleCardAction = function(card, reqInfo) {
	var sc = new SmartCardHSM(card);

	var devAutCert = sc.readBinary(SmartCardHSM.C_DevAut);
	var crypto = new Crypto();
	var chain = SmartCardHSM.validateCertificateChain(crypto, devAutCert);
	if (chain == null) {
		this.lastMessage = "Could not authenticate SmartCard-HSM";
		return;
	}

	sc.openSecureChannel(crypto, chain.publicKey);

	switch(this.state) {
		case "enumeratekeys":
			this.keys = sc.enumerateKeys();
			if (this.keys.length > 0) {
				this.state = "enterdata";
			} else {
				this.reportError("No keys found on card");
			}
			break;
		case "sign":
			var ks = new HSMKeyStore(sc);

			var keys = ks.enumerateKeys()

			var key = ks.getKey(this.key);
			var cert = ks.getCertificate(this.key);
			var cvc = new CVC(cert);

			var pka = this.hsmstate.pka;
			if (!pka) {
				this.reportError("Target device no longer online");
				return;
			}

			var status = pka.checkKeyStatus(cvc.getCHR());

			if (status == ManagePKA.KEY_NOT_FOUND) {
				this.reportError("Key not registered as public key for authentication");
				return;
			}

			if (status == ManagePKA.KEY_ALREADY_AUTHENTICATED) {
				this.reportError("Key already authenticated");
				return;
			}

			pka.performAuthentication(sc, key);

			this.result = "Public key authentication successful";
			this.state = "success";
			break;
		default:
			GPSystem.trace("Unexpected handleCardAction in state " + this.state);
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2025 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Wizard for public key authentication using the PKI API
 */

var CVC			= require('scsh/eac/CVC').CVC;
var SmartCardHSM	= require('scsh/sc-hsm/SmartCardHSM').SmartCardHSM;
var HSMKeyStore		= require('scsh/sc-hsm/HSMKeyStore').HSMKeyStore;

var CardAction		= require('scsh/srv-cc1/CardAction').CardAction;



/**
 * Wizard to perform a public key authentication with a SmartCard-HSM
 *
 */
function PKAWizardForPKIAPI(ui, subjectId, tokenId, api, redirectURL) {
	CardAction.call(this, ui);
    this.subjectId = subjectId;
    this.tokenId = tokenId;
    this.api = api;
    this.redirectURL = redirectURL;

	this.tokenInfo = this.api.getToken(this.subjectId, this.tokenId, this.ui.session.user.id);
}

PKAWizardForPKIAPI.prototype = new CardAction();
PKAWizardForPKIAPI.constructor = PKAWizardForPKIAPI;

exports.PKAWizardForPKIAPI = PKAWizardForPKIAPI;



PKAWizardForPKIAPI.prototype.getPage = function(req, res, url) {
	GPSystem.trace("PKAWizardForPKIAPI state: " + this.state);
	switch(this.state) {
		case "new":
			var page = this.getClientActivationPage(req, res, url);
			this.state = "enumerateKeys";
			break;
		case "enumerateKeys":
			// no client found
			var page = this.getAuthenticationTokenPage(req, res, url);
			this.state = "new";
			break;
		case "noMatchingKey":
			if (req.method == "POST") {
				this.state = "new";
			} else {
				var page = this.getNoMatchingKeyPage(req, res, url);
			}
			break;
		case "enterData":
			if (req.method == "POST") {
				if (!req.parameters.key) {
					this.state = "new";
				} else if (!this.keys.includes(req.parameters.key)) {
					this.reportError("Input validation failed")
				} else {
					this.key = req.parameters.key;
					this.state = "startPKA";
				}
			} else {
				var page = this.getKeySelectionPage(req, res, url);
			}
			break;
		case "startPKA":
			var page = this.getClientActivationPageWithPIN(req, res, url);
			this.state = "performPKA";
			break;
		case "performPKA":
			var page = this.getErrorPage(req, res, url);
			this.state = "startPKA";
			break;
        case CardAction.SUCCESS:
			this.ui.redirectTo(req, res, req.url, this.redirectURL);
			return;
		default:
			var page = CardAction.prototype.getPage.call(this, req, res, this.redirectURL);
	}
	return page;
}



/**
 * Serve the error page if no local client was found
 *
 * @param {HttpRequest} req the request object
 * @param {HttpResponse} req the response object
 */
PKAWizardForPKIAPI.prototype.getAuthenticationTokenPage = function(req, res) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>Public Key Authentication Wizard</h1>
			<p>This wizard performs public key authentication on token {this.tokenInfo.path}.</p>
			<p>Please connect the authentication token with your local client and press <a href="">refresh</a> to proceed.</p>
			<p>
			If you have problems connecting your token see the <a href="https://www.openscdp.org/ocf/faq.html">FAQ</a> for more details
			   and troubleshooting hints.</p>
		</div>

	return page;
}



PKAWizardForPKIAPI.prototype.getClientActivationPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>Public Key Authentication Wizard</h1>
			<p>Enumerate keys... { this.getActivationLink(req, res, -1) }</p>
			<p>Please wait for the green tick to appear. The page will be reloaded automatically if JavaScript is enabled.</p>
			<p>If JavaScript is disabled, then press <a href="">continue</a> after the green tick is shown.</p>
		</div>

	return page;
}



PKAWizardForPKIAPI.prototype.getNoMatchingKeyPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<div id="error"/>
			<h1>Public Key Authentication Wizard</h1>

			<h2>No Matching Key Found on Authentication Token</h2>

			<p>The authentication token {this.path} in this session doesn't contain any of the following public keys of token {this.tokenInfo.path}:</p>
			<td>
				<ul/>
			</td>

			<p>Please connect another authentication token and press
				<form class="pure-form" action="" method="post" enctype="multipart/form-data">
					<input name="action" type="hidden" value="enumerate"/>
					<button class="pure-button" type="submit">Enumerate Keys</button>
				</form>
			</p>
		</div>

	for (var i = 0; i < this.tokenInfo.pkaStatus.publicKeys.length; i++) {
		var keyInfo = this.tokenInfo.pkaStatus.publicKeys[i];
		if (keyInfo.authenticated) {
            continue;
        }
		var chr = keyInfo.chr;
		page.td.ul.li += <li>{chr}</li>;
	}

	return page;
}



PKAWizardForPKIAPI.prototype.getKeySelectionPage = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<div id="error"/>
			<h1>Public Key Authentication Wizard</h1>

			<p>
			<form class="pure-form" action="" method="post" enctype="multipart/form-data">
				<p>Token: {this.tokenInfo.path}</p>
				<label>Authentication Token: {this.path}</label>
				<input name="action" type="hidden" value="enumerate"/>
				<button class="pure-button" type="submit">Enumerate Keys</button>
			</form>
			</p>

			<form class="pure-form" action="" method="post" enctype="multipart/form-data">
				<p>Select the key for authentication:</p>
				<select name="key"/>
				<button class="pure-button" type="submit">Authenticate</button>
			</form>
		</div>

	var l = page.form.select;
	for each (var alias in this.keys) {
		l[0].appendChild(<option>{alias}</option>);
	}

	return page;
}



PKAWizardForPKIAPI.prototype.getClientActivationPageWithPIN = function(req, res, url) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var page =
		<div>
			<h1>Public Key Authentication Wizard</h1>
			<p>Start authentication... { this.getActivationLink(req, res, 1) }</p>
			<p>This operation requires PIN verification. Please watch the PIN dialog on your screen or on your card readers PIN pad.</p>
			<p>Please wait for the green tick to appear. The page will be reloaded automatically if JavaScript is enabled.</p>
			<p>If JavaScript is disabled, then press <a href="">continue</a> after the green tick is shown.</p>
		</div>

	return page;
}



PKAWizardForPKIAPI.prototype.determinePublicKeys = function(sc) {
    this.pkaStatus = this.tokenInfo.pkaStatus;

    if (this.pkaStatus.authenticated) {
        this.result = "Token already authenticated";
        this.state = "success";
        return
    }

    var labels = sc.enumerateKeys();
    GPSystem.log(GPSystem.DEBUG, module.id, "found keys: " + labels);
    if (labels.length == 0) {
        this.reportError("No keys found on card");
    }

    this.keys = [];
    var chrMap = {};

    var ks = new HSMKeyStore(sc);

    for (var i = 0; i < labels.length; i++) {
        var label = labels[i];
        if (ks.hasCertificate(label)) {
            var cert = ks.getCertificate(label);
            try {
                var cvc = new CVC(cert);
                GPSystem.log(GPSystem.DEBUG, module.id, "Add cvc " + cvc + " for label "+ label);

				if (typeof(chrMap[cvc.getCHR().toString()]) == "undefined") {
					chrMap[cvc.getCHR().toString()] = label;
				} else if (typeof(chrMap[cvc.getCHR().toString()]) == "string") {
					var l = chrMap[cvc.getCHR().toString()];
					chrMap[cvc.getCHR().toString()] = [l, label];
				} else {
					chrMap[cvc.getCHR().toString()].push(label);
				}
				GPSystem.log(GPSystem.DEBUG, module.id, "### " + chrMap[cvc.getCHR().toString()]);

            } catch (e) {
                GPSystem.log(GPSystem.DEBUG, module.id, "Label " + label + " is not a CVC");
                continue;
            }
        }
    }


    for (var i = 0; i < this.pkaStatus.publicKeys.length; i++) {
        var keyInfo = this.pkaStatus.publicKeys[i];

        if (keyInfo.authenticated) {
            continue;
        }

        var chr = keyInfo.chr;
        if (typeof(chrMap[chr]) == "string") {
            var label = chrMap[chr];
            this.keys.push(label);
		} else if (Array.isArray(chrMap[chr])) {
			this.keys = this.keys.concat(chrMap[chr]);
		} else if (labels.includes(chr)) {
            this.keys.push(chr);
        }
    }

    if (this.keys.length == 0) {
		this.state = "noMatchingKey";
    } else if (this.keys.length == 1) {
        this.key = this.keys[0];
        this.state = "startPKA";
    } else {
        this.state = "enterData";
    }
}



PKAWizardForPKIAPI.prototype.handleCardAction = function(card, reqInfo) {
	var sc = new SmartCardHSM(card);

	var devAutCert = sc.readBinary(SmartCardHSM.C_DevAut);
	var crypto = new Crypto();
	var chain = SmartCardHSM.validateCertificateChain(crypto, devAutCert);
	if (chain == null) {
		this.lastMessage = "Could not authenticate SmartCard-HSM";
		return;
	}

	sc.openSecureChannel(crypto, chain.publicKey);

	switch(this.state) {
		case "enumerateKeys":
			this.path = chain.path;
			this.determinePublicKeys(sc);
			break;
		case "performPKA":
			var ks = new HSMKeyStore(sc);
			var key = ks.getKey(this.key);
			var cert = ks.getCertificate(this.key);
			var cvc = new CVC(cert);

            var challengeRsp = this.api.getPKAChallenge(this.subjectId, this.tokenId, this.ui.session.user.id);

            var challenge = ByteString.fromJSON(challengeRsp.pkaChallenge);
            var input = new ByteString(challengeRsp.deviceId, ASCII).concat(challenge);
            var crypto = sc.getCrypto();
            var signature = crypto.sign(key, Crypto.ECDSA_SHA256, input);
            signature = CVC.unwrapSignature(signature, 32);

            var newStatus = this.api.performPublicKeyAuthentication(this.subjectId, this.tokenId, this.ui.session.user.id, cvc.getCHR(), signature);

			if (newStatus.numberOfAuthenticatedPublicKeys <= this.pkaStatus.numberOfAuthenticatedPublicKeys) {
                this.reportError("Authentication with key " + this.key + " failed");
                return;
            }

			this.result = "Public key authentication successful";
			this.state = "success";
			break;
		default:
			GPSystem.trace("Unexpected handleCardAction in state " + this.state);
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2023 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Connector for the PKI-API
 */


function PKIAPIConnector(cfg) {
	this.cfg = cfg;
}
PKIAPIConnector.constructor = PKIAPIConnector;

exports.PKIAPIConnector = PKIAPIConnector;

PKIAPIConnector.FAILED = "msg.failed";
PKIAPIConnector.COMPLETED = "msg.completed";
PKIAPIConnector.PENDING = "msg.pending";
PKIAPIConnector.RUNNING = "msg.running";


PKIAPIConnector.prototype.getConnection = function(url) {
	var c = new URLConnection(url);

	if (typeof(this.cfg.keyStore) != "undefined") {
		GPSystem.log(GPSystem.DEBUG, module.id, "Set trust store, key store and pw for PKI API connection");
		c.setTLSKeyStores(this.cfg.trustStore, this.cfg.keyStore, this.cfg.keyPassword);
	} else if (typeof(this.cfg.trustStore) != "undefined") {
		GPSystem.log(GPSystem.DEBUG, module.id, "Set only trust store for PKI API connection");
		c.setTLSKeyStores(this.cfg.trustStore);
	} else {
		GPSystem.log(GPSystem.DEBUG, module.id, "Didn't set tls key stores");
	}
	return c;
}



PKIAPIConnector.prototype.handleCookies = function(cookies) {
	var combinedCookie = "";
	for (var i = 0; i < cookies.length; i++) {
		var eol = cookies[i].indexOf(";");
		if (eol < 0) {
			eol = cookies[i].length;
		}
		var elem = cookies[i].substr(0, eol);
		if (i > 0) {
			combinedCookie += "; ";
		}
		combinedCookie += elem;
	}

	this.session = combinedCookie;
}



/**
 * Post an action to the PKI-API
 *
 * @param {Number} srID the Service Request ID
 * @param {Object} action the json action
 * @param {Number} userId the user id
 */
PKIAPIConnector.prototype.postAction = function(srID, action, userId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "postAction()");
	return this.postJSON("/sr/" + srID + "/action", action, userId);
}



/**
 * Post a json object to the PKI-API
 *
 * @param {String} path the URL path of the resource
 * @param {Object} jsonObject the json object
 * @param {Number} userId the user id
 */
PKIAPIConnector.prototype.postJSON = function(path, jsonObject, userId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "postJSON()");

	var url = this.cfg.apiURL + "/api" + path;

	var c = this.getConnection(url);

	c.addHeaderField("Content-Type", "application/json");
	c.addHeaderField("Accept", "application/json");

	if (typeof(userId) != "undefined") {
		c.addHeaderField("UserId", "" + userId);
	}

	var json = JSON.stringify(jsonObject);
	GPSystem.log(GPSystem.DEBUG, module.id, "post jsonObject \n" + json + "\nto " + url);
	var rsp = c.post(json);
	if (rsp)  {
		var rspJSON = JSON.parse(rsp);
		GPSystem.log(GPSystem.DEBUG, module.id, "Response from PKI-API (" + c.responseCode + "): \n" + JSON.stringify(rspJSON, null, 2));
	} else {
		var rspJSON = {};
		GPSystem.log(GPSystem.DEBUG, module.id, "Empty response from PKI-API");
	}

	rspJSON.responseCode = c.responseCode;

	var cookie = c.getHeaderField("Set-Cookie");

	if (cookie) {
		this.handleCookies(cookie);

		var sessionId = this.session.substring("JSESSIONID=".length);
		GPSystem.log(GPSystem.DEBUG, module.id, "PKI-API session id: " + sessionId);
		rspJSON.sessionId = sessionId;
	}

	return rspJSON;
}



/**
 * Get the service request
 *
 * @param {Number} srID the Service Request ID
 * @param {Number} userId the user id
 */
PKIAPIConnector.prototype.getServiceRequest = function(srID, userId, withForm) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getServiceRequest()");

	var path = "/sr/" + srID;

	if (withForm) {
		path += "/form";
	}

	var json = this.getResource(path, userId);

	return json;
}



/**
 * Get a list of service requests
 *
 * @param {Number} userId the user id
 * @param {PKIAPIListFilter[]} filter list of filter - optional
 * @param {PKIAPIListOrder[]} order list of order - optional
 * @param {Number} limit the query limit - optional
 * @param {Number} offset the query offset- optional
 */
PKIAPIConnector.prototype.getServiceRequestList = function(userId, filter, order, limit, offset) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getServiceRequestList()");

	var path = "/sr/";

	var json = this.getFilteredListResource(path, userId, filter, order, limit, offset)

	return json;
}



/**
 * Get the number of service requests
 *
 * @param {Number} userId the user id
 * @param {PKIAPIListFilter[]} filter list of filter - optional
 */
PKIAPIConnector.prototype.getServiceRequestListCount = function(userId, filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getServiceRequestListCount()");

	var path = "/sr/count";

	var json = this.getFilteredListResource(path, userId, filter)

	return json;
}



/**
 * Get the number of service requests
 *
 * @param {Number} userId the user id
 * @param {PKIAPIListFilter[]} filter list of filter - optional
 * @param {PKIAPIListOrder[]} order list of order - optional
 * @param {Number} limit the query limit - optional
 * @param {Number} offset the query offset- optional
 */
PKIAPIConnector.prototype.getInvolvedServiceRequestList = function(userId, filter, order, limit, offset) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getInvolvedServiceRequestList()");

	var path = "/sr/involved";

	var json = this.getFilteredListResource(path, userId, filter, order, limit, offset)

	return json;
}



/**
 * Get the number of service requests
 *
 * @param {Number} userId the user id
 * @param {PKIAPIListFilter[]} filter list of filter - optional
 */
PKIAPIConnector.prototype.getInvolvedServiceRequestListCount = function(userId, filter) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getInvolvedServiceRequestListCount()");

	var path = "/sr/involved/count";

	var json = this.getFilteredListResource(path, userId, filter)

	return json;
}



/**
 * Query status of a card action
 *
 * @param {Number} srID the Service Request ID
 */
PKIAPIConnector.prototype.getCardActionStatus = function(srID) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCardActionStatus()");

	var path = "/sr/" + srID + "/action";

	var json = this.getResource(path, null, this.session);

	return json;
}



/**
 * Get all connected token for the given subject
 *
 * @param {Number} subjectId the subject ID
 * @param {Number} userId the user id
 */
PKIAPIConnector.prototype.getTokenList = function(subjectId, userId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getTokenList()");

	var path = "/subject/" + subjectId + "/token";

	var json = this.getResource(path, userId);

	return json;
}



/**
 * Get all connected token for the given subject
 *
 * @param {Number} subjectId the subject ID
 * @param {Number} tokenId the token ID
 * @param {Number} userId the user id
 */
PKIAPIConnector.prototype.getToken = function(subjectId, tokenId, userId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getToken()");

	var path = "/subject/" + subjectId + "/token/" + tokenId;

	var json = this.getResource(path, userId);

	return json;
}



/**
 * Get all connected token for the given subject
 *
 * @param {Number} subjectId the subject ID
 * @param {Number} tokenId the token ID
 * @param {Number} userId the user id
 */
PKIAPIConnector.prototype.getPKAChallenge = function(subjectId, tokenId, userId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getTokenList()");

	var path = "/subject/" + subjectId + "/token/" + tokenId;

	var action = {
		"action":"pkaChallenge"
	}
	var json = this.postJSON(path, action, userId);

	return json;
}



/**
 * Reset the authentication state of the specified token
 *
 * @param {Number} subjectId the subject ID
 * @param {Number} tokenId the token ID
 * @param {Number} userId the user id
 */
PKIAPIConnector.prototype.postLogout = function(subjectId, tokenId, userId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "postLogout()");

	var path = "/subject/" + subjectId + "/token/" + tokenId;

	var action = {
		"action":"logout"
	}
	var json = this.postJSON(path, action, userId);

	return json;
}



/**
 * Perform Public Key Authentication
 *
 * @param {Number} subjectId the subject ID
 * @param {Number} tokenId the token ID
 * @param {Number} userId the user id
 * @param {PublicKeyReference} chr the CHR of the public key used to verify the signature
 * @param {ByteString} signature the signature over the concatenation of the device id and challenge
 */
PKIAPIConnector.prototype.performPublicKeyAuthentication = function(subjectId, tokenId, userId, chr, signature) {
	GPSystem.log(GPSystem.DEBUG, module.id, "performPublicKeyAuthentication()");

	var path = "/subject/" + subjectId + "/token/" + tokenId;

	var action = {
		"action":"externalAuthenticate",
		"args": {
			"chr": chr.toString(),
			"signature": signature.toString(HEX)
		}
	}
	var json = this.postJSON(path, action, userId);

	return json;
}



/**
 * Get a JSON Resource for the given path
 *
 * @param {String} path the URL path of the resource
 */
PKIAPIConnector.prototype.getResource = function(path, userId, session) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getResource()");

	var url = this.cfg.apiURL + "/api" + path;

	var c = this.getConnection(url);

	if (typeof(session) != "undefined") {
		c.addHeaderField("Cookie", session);
	}

	c.addHeaderField("Accept", "application/json");

	if (typeof(userId) != "undefined") {
		c.addHeaderField("UserId", "" + userId);
	}

	var rsp = c.get();
	var json = JSON.parse(rsp);

	GPSystem.log(GPSystem.DEBUG, module.id, "Response from PKI-API: \n" + JSON.stringify(json, null, 2));

	var cookie = c.getHeaderField("Set-Cookie");

	if (cookie) {
		this.handleCookies(cookie);

		var sessionId = this.session.substring("JSESSIONID=".length);
		GPSystem.log(GPSystem.DEBUG, module.id, "PKI-API session id: " + sessionId);
		json.sessionId = sessionId;
	}

	return json;
}



/**
 * Get a JSON Resource for the given path
 *
 * @param {String} path the URL path of the resource
 */
PKIAPIConnector.prototype.getFilteredListResource = function(path, userId, filter, order, limit, offset) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getFilteredListResource()");

	var queryString = "";

	if (filter) {
		for (var i = 0; i < filter.length; i++) {
			queryString += filter[i].getEncoded() + "&";
		}
	}

	if (order) {
		for (var i = 0; i < order.length; i++) {
			queryString += order[i].getEncoded() + "&";
		}
	}

	if (limit != null) {
		queryString += "limit=" + limit + "&";
	}

	if (offset != null) {
		queryString += "offset=" + offset + "&";
	}

	if (queryString.length > 0) {
		queryString.substr(0, queryString.length - 1);
		path += "?" + queryString;
	}

	var url = this.cfg.apiURL + "/api" + path;

	var c = this.getConnection(url);

	c.addHeaderField("Accept", "application/json");

	if (typeof(userId) != "undefined") {
		c.addHeaderField("UserId", "" + userId);
	}

	var rsp = c.get();
	var json = JSON.parse(rsp);

	GPSystem.log(GPSystem.DEBUG, module.id, "Response from PKI-API: \n" + JSON.stringify(json, null, 2));

	var cookie = c.getHeaderField("Set-Cookie");

	if (cookie) {
		this.handleCookies(cookie);

		var sessionId = this.session.substring("JSESSIONID=".length);
		GPSystem.log(GPSystem.DEBUG, module.id, "PKI-API session id: " + sessionId);
		json.sessionId = sessionId;
	}

	return json;
}



function PKIAPIListFilter(key, value, op) {
	this.key = key;
	this.value = value;
	this.op = op
}
PKIAPIListFilter.constructor = PKIAPIListFilter;

exports.PKIAPIListFilter = PKIAPIListFilter;



PKIAPIListFilter.OP_LESS_THAN = "lt";
PKIAPIListFilter.OP_LESS_THAN_EQUAL = "lte";
PKIAPIListFilter.OP_EQUAL = "eq";
PKIAPIListFilter.OP_NOT_EQUAL = "ne";
PKIAPIListFilter.OP_GREATER_THAN = "gt";
PKIAPIListFilter.OP_GREATER_THAN_EQUAL = "gte";
PKIAPIListFilter.OP_LIKE = "like";



PKIAPIListFilter.prototype.getEncoded = function() {
	return this.key + "=" + this.op + ":" + this.value;
}



function PKIAPIListOrder(orderBy, asc) {
	this.orderBy = orderBy;
	this.asc = asc;
}
PKIAPIListOrder.constructor = PKIAPIListOrder;

exports.PKIAPIListOrder = PKIAPIListOrder;



PKIAPIListOrder.KEY_ORDER_BY = "sort_by";
PKIAPIListOrder.ORDER_ASC = "asc";
PKIAPIListOrder.ORDER_DESC = "desc";



PKIAPIListOrder.prototype.getEncoded = function() {
	var res = PKIAPIListOrder.KEY_ORDER_BY + "=" + this.orderBy + ":"
	if (this.asc) {
		res += PKIAPIListOrder.ORDER_ASC;
	} else {
		res += PKIAPIListOrder.ORDER_DESC;
	}
	return res;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Renderer for X509 certificates
 */

var File = require('scsh/file/File').File;

/**
 * A renderer which represents X509 certificates as HTML tables
 */
function X509CertificateRenderer() {

}
exports.X509CertificateRenderer = X509CertificateRenderer;

X509CertificateRenderer.SUBJECT_KEY_IDENTIFIER_OID = new ByteString("2.5.29.14", OID);
X509CertificateRenderer.KEY_USAGE_OID = new ByteString("2.5.29.15", OID);
X509CertificateRenderer.PRIVATE_KEY_USAGE_PERIOD_OID = new ByteString("2.5.29.16", OID);
X509CertificateRenderer.SUBJECT_ALTERNATIVE_NAME_OID = new ByteString("2.5.29.17", OID);
X509CertificateRenderer.ISSUER_ALTERNATIVE_NAME_OID = new ByteString("2.5.29.18", OID);
X509CertificateRenderer.BASIC_CONSTRAINTS_OID = new ByteString("2.5.29.19", OID);
X509CertificateRenderer.NAME_CONSTRAINTS_OID = new ByteString("2.5.29.30", OID);
X509CertificateRenderer.CRL_DISTRIBUTION_POINTS_OID = new ByteString("2.5.29.31", OID);
X509CertificateRenderer.CERTIFICATE_POLICIES = new ByteString("2.5.29.32", OID);
X509CertificateRenderer.POLICY_MAPPINGS_OID = new ByteString("2.5.29.33", OID);
X509CertificateRenderer.AUTHORITY_KEY_IDENTIFIER_OID = new ByteString("2.5.29.35", OID);
X509CertificateRenderer.POLICY_CONTRAINTS_OID = new ByteString("2.5.29.36", OID);
X509CertificateRenderer.EXT_KEY_USAGE_OID = new ByteString("2.5.29.37", OID);
X509CertificateRenderer.CA_INFORMATION_ACCESS_OID = new ByteString("1.3.6.1.5.5.7.1.1", OID);

X509CertificateRenderer.KEY_USAGE = ["digitalSignature", "nonRepudiation", "keyEncipherment", "dataEncipherment", "keyAgreement", "keyCertSign", "cRLSign", "encipherOnly", "decipherOnly"];
X509CertificateRenderer.KEY_USAGE.DIGITAL_SIGNATURE = 0x00;
X509CertificateRenderer.KEY_USAGE.NON_REPUDIATION = 0x01;
X509CertificateRenderer.KEY_USAGE.KEY_ENCIPHERMENT = 0x02;
X509CertificateRenderer.KEY_USAGE.DATA_ENCIPHERMENT= 0x03;
X509CertificateRenderer.KEY_USAGE.KEY_AGREEMENT= 0x04;
X509CertificateRenderer.KEY_USAGE.KEY_CERT_SIGN= 0x05;
X509CertificateRenderer.KEY_USAGE.CRL_SIGN= 0x06;
X509CertificateRenderer.KEY_USAGE.ENCIPHER_ONLY= 0x07;
X509CertificateRenderer.KEY_USAGE.DECIPHER_ONLY= 0x08;

X509CertificateRenderer.EXT_KEY_USAGE_SERVER_AUTHENTICATION_OID = new ByteString("1.3.6.1.5.5.7.3.1", OID);
X509CertificateRenderer.EXT_KEY_USAGE_CLIENT_AUTHENTICATION_OID = new ByteString("1.3.6.1.5.5.7.3.2", OID);
X509CertificateRenderer.EXT_KEY_USAGE_CODE_SIGNING_OID = new ByteString("1.3.6.1.5.5.7.3.3", OID);
X509CertificateRenderer.EXT_KEY_USAGE_EMAIL_OID = new ByteString("1.3.6.1.5.5.7.3.4", OID);
X509CertificateRenderer.EXT_KEY_USAGE_TIMESTAMPING_OID = new ByteString("1.3.6.1.5.5.7.3.8", OID);
X509CertificateRenderer.EXT_KEY_USAGE_OCSP_SIGNING_OID = new ByteString("1.3.6.1.5.5.7.3.9", OID);



/**
 * Render the certificate's extensions
 * and append it to the HTML table contained in
 * the given div element
 *
 * @param{X509} cert
 * @param{XML} div containing the HTML table representation of the certificate
 * @returns  a HTML div element containing the certificate representation
 * @type XML
 */
X509CertificateRenderer.prototype.renderExtensions = function (cert, div) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var native = cert.getNative();
	var critOIDs = native.getCriticalExtensionOIDs();
	var nonCritOIDs = native.getNonCriticalExtensionOIDs();

	div.appendChild(<h2>Critical Extensions</h2>);
	var critTable = <table class="content" style="word-wrap: break-word;"/>
	critTable.appendChild(
			<colgroup>
				<col width="20"/>
				<col width="80"/>
			</colgroup>);
	var critIterator = critOIDs.iterator();
	while (critIterator.hasNext()) {
		var oid = critIterator.next();
		var oidByteString = new ByteString(oid, OID);
		var r = this.createExtensionTableRow(oidByteString, cert);

		critTable.appendChild(r);
	}
	div.appendChild(critTable);


	div.appendChild(<h2>Non-Critical Extensions</h2>);
	var nonCritTable = <table class="content" style="word-wrap: break-word;"/>
	nonCritTable.appendChild(
			<colgroup>
				<col width="20"/>
				<col width="80"/>
			</colgroup>);
	var nonCritIterator = nonCritOIDs.iterator();
	while (nonCritIterator.hasNext()) {
		var oid = nonCritIterator.next();
		var oidByteString = new ByteString(oid, OID);
		var r = this.createExtensionTableRow(oidByteString, cert);

		nonCritTable.appendChild(r);
	}
	div.appendChild(nonCritTable);

	return div;
}



/**
 * Create a HTML table row containing the decoded name and value
 * for a specific certificate extension.
 *
 * @param{ByteString} oid the extension specified by the oid
 * @param{X509} cert
 * @returns  HTML table row
 * @type XML
 */
X509CertificateRenderer.prototype.createExtensionTableRow = function(oid, cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	if (oid.equals(X509CertificateRenderer.KEY_USAGE_OID)) {
		var value = this.createKeyUsageTable(cert);
	} else if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_OID)) {
		var value = this.createExtendedKeyUsageTable(cert);
	} else if (oid.equals(X509CertificateRenderer.BASIC_CONSTRAINTS_OID)) {
		var value = this.createBasicConstraintsTable(cert);
	} else if (oid.equals(X509CertificateRenderer.CRL_DISTRIBUTION_POINTS_OID)) {
		var value = this.createCRLDistributionPointsTable(cert);
	} else if (oid.equals(X509CertificateRenderer.CA_INFORMATION_ACCESS_OID)) {
		var value = this.createAuthorityInformationAccessTable(cert);
	} else if (oid.equals(X509CertificateRenderer.CERTIFICATE_POLICIES)) {
		var value = this.createCertificatePoliciesTable(cert);
	} else if (oid.equals(X509CertificateRenderer.PRIVATE_KEY_USAGE_PERIOD_OID)) {
		var value = this.createPrivateKeyUsagePeriodTable(cert);
	} else {
		var native = cert.getNative();
		var value = native.getExtensionValue(oid.toString(OID));
	}

	var r =
		<tr>
			<th>{this.getExtensionName(oid)}</th>
			<td>{value}</td>
		</tr>;

	return r
}



/**
 * Get the corresponding extension name for a given OID
 *
 * @param{ByteString} oid the object identifier
 * @returns  the extension name
 * @type String
 */
X509CertificateRenderer.prototype.getExtensionName = function (oid) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	if (oid.equals(X509CertificateRenderer.SUBJECT_KEY_IDENTIFIER_OID)) {
		return "Subject Key Identifier";
	} else if (oid.equals(X509CertificateRenderer.KEY_USAGE_OID)) {
		return "Key Usage";
	} else if (oid.equals(X509CertificateRenderer.PRIVATE_KEY_USAGE_PERIOD_OID)) {
		return "Private Key Usage Period";
	} else if (oid.equals(X509CertificateRenderer.SUBJECT_ALTERNATIVE_NAME_OID)) {
		return "Subject Alternative Name";
	} else if (oid.equals(X509CertificateRenderer.ISSUER_ALTERNATIVE_NAME_OID)) {
		return "Issuer Alternative Name";
	} else if (oid.equals(X509CertificateRenderer.BASIC_CONSTRAINTS_OID)) {
		return "Basic Constraints";
	} else if (oid.equals(X509CertificateRenderer.NAME_CONSTRAINTS_OID)) {
		return "Name Constraints";
	} else if (oid.equals(X509CertificateRenderer.CRL_DISTRIBUTION_POINTS_OID)) {
		return "Certificate Revocation List Distribution Points";
	} else if (oid.equals(X509CertificateRenderer.POLICY_MAPPINGS_OID)) {
		return "Policy Mappings";
	} else if (oid.equals(X509CertificateRenderer.AUTHORITY_KEY_IDENTIFIER_OID)) {
		return "Authority Key Identifier";
	} else if (oid.equals(X509CertificateRenderer.POLICY_CONTRAINTS_OID)) {
		return "Policy Constraints";
	} else if (oid.equals(X509CertificateRenderer.CA_INFORMATION_ACCESS_OID)) {
		return "Certificate Authority Information Access";
	} else if (oid.equals(X509CertificateRenderer.CERTIFICATE_POLICIES)) {
		return "Certificate Policies";
	} else if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_OID)) {
		return "Extended Key Usage";
	} else {
		return oid.toString(OID);
	}
}



/**
 * Create a HTML table which describes the key usage for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table describing the certificate's key usage
 * @type XML
 */
X509CertificateRenderer.prototype.createKeyUsageTable = function(cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var native = cert.getNative();

	/*
	 * KeyUsage ::= BIT STRING {
	 * 	digitalSignature        (0),
	 *      nonRepudiation          (1),
	 *      keyEncipherment         (2),
	 *      dataEncipherment        (3),
	 *      keyAgreement            (4),
	 *      keyCertSign             (5),
	 *      cRLSign                 (6),
	 *      encipherOnly            (7),
	 *      decipherOnly            (8) }
	 */
	var bitString = native.getKeyUsage();
	var t = <table/>
	for (var i = 0; i < bitString.length; i++) {
		if(bitString[i]) {
			t.appendChild(<tr><td>{X509CertificateRenderer.KEY_USAGE[i]}</td></tr>);
		}
	}
	return t;
}



/**
 * Create a HTML table which describes the extended key usage for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table describing the certificate's extended key usage
 * @type XML
 */
X509CertificateRenderer.prototype.createExtendedKeyUsageTable = function(cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var native = cert.getNative();

	var keyPurposeIDs = native.getExtendedKeyUsage(); // instance of Collections$UnmodifiableRandomAccessList
	var it = keyPurposeIDs.iterator();

	var t = <table/>
	while (it.hasNext()) {
		var keyPurposeID = it.next();

		var value = keyPurposeID;
		var oid = new ByteString(keyPurposeID, OID);
		if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_SERVER_AUTHENTICATION_OID)) {
			value = "Server authentication";
		} else if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_CLIENT_AUTHENTICATION_OID)) {
			value = "Client authentication";
		} else if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_CODE_SIGNING_OID)) {
			value = "Code signing";
		} else if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_EMAIL_OID)) {
			value = "Email";
		} else if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_TIMESTAMPING_OID)) {
			value = "Timestamping";
		} else if (oid.equals(X509CertificateRenderer.EXT_KEY_USAGE_OCSP_SIGNING_OID)) {
			value = "OCSP signing";
		}

		t.appendChild(<tr><td>{value}</td></tr>);
	}

	return t;
}



/**
 * Create a HTML table which describes the Basic Constraints for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table describing the certificate's Basic Contstraints
 * @type XML
 */
X509CertificateRenderer.prototype.createBasicConstraintsTable = function(cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var native = cert.getNative();
	var pathLen = native.getBasicConstraints();
	var table = <table/>;
	if (pathLen >= 0) {
		table.appendChild(<tr><td>is CA certificate</td></tr>);
		table.appendChild(<tr><td>Path Length Constraint {pathLen}</td></tr>);
	} else {
		table.appendChild(<tr><td>is not CA certificate</td></tr>);
	}
	return table;
}



/**
 * Create a HTML table which describes the Certificate Authority Information Access for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table describing the certificate's Certificate Authority Information Access
 * @type XML
 */
X509CertificateRenderer.prototype.createAuthorityInformationAccessTable = function(cert) {
	var native = cert.getNative();

	var table = <table/>

	var value = native.getExtensionValue(X509CertificateRenderer.CA_INFORMATION_ACCESS_OID.toString(OID));
	var octetString = new ASN1(value);
	var list = new ASN1(octetString.value);
	for (var i = 0; i < list.elements; i++) {
		var accessDescription = list.get(i);
		var accessMethod = accessDescription.get(0);
		table.appendChild(<tr><td>OID {accessMethod.value.toString(OID)}</td></tr>);

		var accessLocation = accessDescription.get(1);
		table = this.appendGeneralNames(accessLocation, table);
	}

	return table;
}



/**
 * Decode ASN1 GeneralNames type and append it on the given table
 */
X509CertificateRenderer.prototype.appendGeneralNames = function(asn, table) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	if (asn.tagnumber == 4) {
		var nameSeq = new ASN1(asn.value);
		var commonName = nameSeq.get(0).get(0).get(1);
		var organizationName = nameSeq.get(1).get(0).get(1);
		var countryName = nameSeq.get(2).get(0).get(1);
		table.appendChild(<tr><td>Common Name</td><td>{commonName.value.toString(ASCII)}</td></tr>);
		table.appendChild(<tr><td>Organization Name</td><td>{organizationName.value.toString(ASCII)}</td></tr>);
		table.appendChild(<tr><td>Country Name</td><td>{countryName.value.toString(ASCII)}</td></tr>);
	} else if (asn.tagnumber == 6) {
		var uri = asn.value;
		table.appendChild(<tr><td>Uniform Resouce Identifier</td><td>{uri.toString(ASCII)}</td></tr>);
	}
	return table;
}



/**
 * Create a HTML table which describes the CRL Distribution Points for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table describing the certificate's CRL Distribution Points
 * @type XML
 */
X509CertificateRenderer.prototype.createCRLDistributionPointsTable = function(cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var native = cert.getNative();
	var value = native.getExtensionValue(X509CertificateRenderer.CRL_DISTRIBUTION_POINTS_OID.toString(OID));
	var points = new ASN1(value);
	var list = new ASN1(points.value);

	var distPoint = list.get(0);
	var seq = new ASN1(distPoint.value);
	seq = distPoint;

	var table = <table/>

	for (var i = 0; i < seq.elements; i++) {
		var element = seq.get(i);
		if (element.tag == 0xA0) { // distributionPoint DistributionPointName
			var name = element.get(0);
			if (name.tag == 0xA0) { // fullName GeneralNames
				var obj = new ASN1(name.value);
				table = this.appendGeneralNames(obj, table);
			} else if (name.tag == 0xA1) { // nameRelativeToCRLIssuer RelativeDistinguishedName

			}
		} else if (element.tagnumber == 1) { // reasons ReasonFlags

		} else if (element.tagnumber == 2) { // cRLIssuer GeneralNames
			var issuer = new ASN1(element.value);
			if (issuer.tagnumber == 4) {
				table = this.appendGeneralNames(issuer, table);
			}
		}
	}

	return table;
}



/**
 * Create a HTML table which describes the Certificate Policies for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table describing the certificate's Certificate Policies
 * @type XML
 */
X509CertificateRenderer.prototype.createCertificatePoliciesTable = function(cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var t = <table/>

	var native = cert.getNative();
	var value = native.getExtensionValue(X509CertificateRenderer.CERTIFICATE_POLICIES.toString(OID));
	var octetString = new ASN1(value);
	var certificatePolicies = new ASN1(octetString.value); // sequence of 1 to n PolicyInformation
	for (var i = 0; i < certificatePolicies.elements; i++) {
		var policyInformation = certificatePolicies.get(i);
		var policyIdentifier = policyInformation.get(0); // CertPolicyId

		var piTable = <table/>;
		piTable.appendChild(<tr><td>Policy Identifier</td><td>{policyIdentifier}</td></tr>);
		if (policyInformation.elements > 1) {
			var policyQualifiers = policyInformation.get(1).getBytes();
			piTable.appendChild(<tr><td>Policy Qualifiers</td><td>{policyQualifiers}</td></tr>);
		}
		t.appendChild(piTable);
	}

	return t;
}



/**
 * Create a HTML table which describes the key usage for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table describing the certificate's key usage
 * @type XML
 */
X509CertificateRenderer.prototype.createPrivateKeyUsagePeriodTable = function(cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var native = cert.getNative();
	var value = native.getExtensionValue(X509CertificateRenderer.PRIVATE_KEY_USAGE_PERIOD_OID.toString(OID));

	var octetString = new ASN1(value);
	var period = new ASN1(octetString.value);

	var t = <table/>

	for (var i = 0; i < period.elements; i++) {
		var date = period.get(i);
		if (date.tagnumber == 0x00) {
			t.appendChild(<tr><td>Not Before</td><td>{date.value.toString(ASCII)}</td></tr>);
		} else if (date.tagnumber == 0x01) {
			t.appendChild(<tr><td>Not After</td><td>{date.value.toString(ASCII)}</td></tr>);
		}
	}

	return t;
}



/**
 * Render a X509 certificate as HTML table
 *
 * @param{X509} cert
 * @returns  a html div element containing the certificate representation
 * @type XML
 */
X509CertificateRenderer.prototype.render = function(cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	var native = cert.getNative();

	var version = native.getVersion();
	var serial = cert.getSerialNumberString();
	var notBefore = cert.getNotBefore();
	var notAfter = cert.getNotAfter();
	var issuer = cert.getIssuerDNString();
	var subject = cert.getSubjectDNString();

	var sigAlg = native.getSigAlgName();
	var sig = native.getSignature();

	var t =
		<table class="content" style="word-wrap: break-word;">
			<colgroup>
				<col width="20"/>
				<col width="80"/>
			</colgroup>
			<tr>
				<th>Version</th>
				<td>{version}</td>
			</tr>
			<tr>
				<th>Serial</th>
				<td>{serial}</td>
			</tr>
			<tr>
				<th>Not Before</th>
				<td>{notBefore}</td>
			</tr>
			<tr>
				<th>Not After</th>
				<td>{notAfter}</td>
			</tr>
			<tr>
				<th>Issuer Distinguished Name</th>
				<td>{issuer}</td>
			</tr>
			<tr>
				<th>Subject Distinguished Name</th>
				<td>{subject}</td>
			</tr>
			<tr>
				<th>Signature Algorithm</th>
				<td>{sigAlg}</td>
			</tr>
			<tr>
				<th>Signature</th>
				<td>{sig}</td>
			</tr>
			<tr>
				<th>Public Key</th>
				<td>{this.getPublicKeyInfo(cert)}</td>
			</tr>
		</table>;

	var div = <div id="x509"></div>;
	div.appendChild(<h2>Basic Certificate Fields</h2>);
	div.appendChild(t);

	div = this.renderExtensions(cert, div);

	return div;
}



/**
 * Get a short textual representation of the certificate's public key
 *
 * @param{X509} cert
 * @returns
 * @type String
 */
X509CertificateRenderer.prototype.getPublicKeyInfo = function (cert) {
	//return cert.getNative().getPublicKey().toString();	// in case of ECC keys: only public key qx and qy parameters
	return cert.getNative().getPublicKey().getEncoded();	// binary encoded key
}



/**
 * Create a HTML table with a detailed public key representation for the given certificate
 *
 * @param{X509} cert
 * @returns  HTML table containing the public
 * @type XML
 */
X509CertificateRenderer.prototype.createPublicKeyDetailsTable = function (cert) {
	default xml namespace = "http://www.w3.org/1999/xhtml";
	var table = <table/>
	var key = cert.getPublicKey();
	var size = key.getSize();

	var modulus = key.getComponent(Key.MODULUS);
	if (typeof(modulus) != "undefined") {
		var modulus = modulus.toString(HEX);
		var exp = key.getComponent(Key.EXPONENT).toString(HEX);
		var table =
			<table word-break="break-all" word-wrap="break-word" max-width="32px">
				<tr>
					<td>Key Size</td>
					<td>{size}</td>
				</tr>
				<tr>
					<td>RSA Modulus</td>
					<td word-break="break-all" word-wrap="break-word" max-width="32px">{modulus}</td>
				</tr>
				<tr>
					<td>Public Exponent</td>
					<td>{exp}</td>
				</tr>
			</table>;
	} else {
		// curve parameter
		var fp = key.getComponent(Key.ECC_P);
		var ecca = key.getComponent(Key.ECC_A);
		var eccb = key.getComponent(Key.ECC_B);
		var gx = key.getComponent(Key.ECC_GX);
		var gy = key.getComponent(Key.ECC_GY);
		var eccn = key.getComponent(Key.ECC_N);
		var ecch = key.getComponent(Key.ECC_H);

		// public key
		var qx = key.getComponent(Key.ECC_QX).toString(HEX);
		var qy = key.getComponent(Key.ECC_QY).toString(HEX);

		var table =
			<table>
				<tr>
					<td>Key Size</td>
					<td>{size}</td>
				</tr>
				<tr>
					<td>Curve Fp</td>
					<td>{fp}</td>
				</tr>
				<tr>
					<td>Curve A</td>
					<td>{ecca}</td>
				</tr>
				<tr>
					<td>Curve B</td>
					<td>{eccb}</td>
				</tr>
				<tr>
					<td>Curve Parameter Gx</td>
					<td>{gx}</td>
				</tr>
				<tr>
					<td>Curve Parameter Gy</td>
					<td>{gy}</td>
				</tr>
				<tr>
					<td>Curve Parameter N</td>
					<td>{eccn}</td>
				</tr>
				<tr>
					<td>Curve Parameter H</td>
					<td>{ecch}</td>
				</tr>
				<tr>
					<td>Public Key Qx</td>
					<td>{qx}</td>
				</tr>
				<tr>
					<td>Public Key Qy</td>
					<td>{qy}</td>
				</tr>
			</table>;
	}

	return table;
}



X509CertificateRenderer.prototype.test = function() {
	default xml namespace = "http://www.w3.org/1999/xhtml";
	bs = new ByteString("\
	MIIGGzCCBAOgAwIBAgIRAS31fRUU00bNe4A4sqZ44wQwDQYJKoZIhvcNAQEFBQAw \
	VDESMBAGA1UEAwwJUm9vdC1DQSAxMTEwLwYDVQQKDChURVNUIC0gSGF1cHR2ZXJi \
	YW5kIMO2c3RlcnIuIFNvemlhbHZlcnMuMQswCQYDVQQGEwJBVDAeFw0wNTA2MjMx \
	NzI3MDJaFw0zMDA2MjMxNzI3MDJaMFYxFDASBgNVBAMMC1N5c3RlbSBDQSAxMTEw \
	LwYDVQQKDChURVNUIC0gSGF1cHR2ZXJiYW5kIMO2c3RlcnIuIFNvemlhbHZlcnMu \
	MQswCQYDVQQGEwJBVDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKWL \
	/7+RLD7eqAiqbFtN/3sWgw5nfA3G6vYcVvV4CzXFlzJVk6xtiu/sYlSQK18tbyF4 \
	7DfNuHANV24lutFOoGLuhJkSWbqONcNvplD7a+XIniAdSgSBxcJnXvZ4xJ+Bd5TH \
	U4CXvcqDGpEaEAgnhpiVPoBMHK/r1eMrLsb9+HryCKBrC0dzVPPKX+HAz2wj757x \
	KdlrBva7dFz5pbDDZmifmTko4fj4DQS5quu4MVq2vs1D9km2BZXCgU5Fo6OWoL0a \
	U3B4amLzNA981E2niLovz+18DB340/PlgctE6FaM8XQv9Omoe/nUqImM/J+T8uIp \
	kFCy+1cuhXGRpqRnHvEq88COsvDFI6vKfwd9Duko+IjUzpq3MIa2bXURBU3kDD79 \
	sl1i1uy9Sx6YtwTZBoPIQZP+7WjlZnT4nBpJl2r0qKFKJH3nBJVntlzlSna1gc4u \
	HZBkvrfDnLG/RGGBsiqkzdx0myM8mON/veLbY5Nd+SUBm1bWAw0BSbz+3jBtHQID \
	AQABo4IBZDCCAWAwEwYDVR0jBAwwCoAIRtDR1WyRFs4wEQYDVR0OBAoECEvRRLys \
	X0iFMA4GA1UdDwEB/wQEAwICBDAxBggrBgEFBQcBAQQlMCMwIQYIKwYBBQUHMAGG \
	FWh0dHA6Ly8xNDkuMjM5LjE2LjIwOTCB3gYDVR0fBIHWMIHTMIHQoHOgcYZvbGRh \
	cDovLzE0OS4yMzkuMTYuMjA5L289VEVTVCUyMC0lMjBIYXVwdHZlcmJhbmQlMjAl \
	ZjZzdGVyci4lMjBTb3ppYWx2ZXJzLixjPUFUP2NlcnRpZmljYXRlUmV2b2NhdGlv \
	bkxpc3Q7YmluYXJ5olmkVzBVMRMwEQYDVQQDDApDUkwtU2lnbmVyMTEwLwYDVQQK \
	DChURVNUIC0gSGF1cHR2ZXJiYW5kIMO2c3RlcnIuIFNvemlhbHZlcnMuMQswCQYD \
	VQQGEwJBVDASBgNVHRMBAf8ECDAGAQH/AgEAMA0GCSqGSIb3DQEBBQUAA4ICAQAY \
	P81wkoVpuE6Dtg72snt2KnwURfI1KAD+WgDBKLcSUD+uO2ks7CpRWaqD5WW47lQD \
	KsGwLyRmwEfmNBPh15TMYkTvynUwD3WBaPPr59Hy7QrUcdRU511my0CnS3W+2L4a \
	oLCuyRvlozuIhBHCfSKsYFZwHrT90J+B9NFnlWCGsxg0xsKpatcXsrMOQTlX3dOl \
	5pu9KEoKlryZArD7UDBqMAqKQ9srx1a23AJKREFyJ6a4aW/voZvpoHMsQQPbm8xb \
	vQPZaUUqY7R9g/9ZgVdeDrjEJU8qtptSL1ixVbvmpKM0g+G4tda83VfVY5qeto6E \
	QLmst4yNA/uv5MxCtEu/DthxUScGkY1erV6LMb97u4m4mx87SxKPBhCdZx76BEgU \
	t0bLFAlG63h1bZ3UFcoDR3PSjF1QwUPO6DroCMVpUYRGnli123KQ63lKCOxQqwl+ \
	te7x3uEWKgN8FwUKCLYGnBIiBA2c7igRiyKaOon+43kYt+GAyBvOdH1n/EjHQVHE \
	h3xwWNCsiAn6XFjlL61i0r5dshBl+rWWyUbNpHXqHuPnm8Zn37DXwmvxU9qdc0TA \
	Y8M0uMYAw1rkDoo2zGb2nxAbmmp7L8J2cFE/6TJ6R7gdxY/0uwaIdRHBr844kscO \
	i0dKmGsaCPxCVq5venNSatNMEvOgyEloLGqoq3S+xQ==", BASE64);

	ca = new X509(bs);
	var t = this.render(ca);
	print(t);

	var page =
		<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en" >
			<head>
				<title>X509 Certificate Renderer</title>
			</head>
			<body/>
		</html>;

	page.body.appendChild(t);

	var cwd = GPSystem.mapFilename("", GPSystem.CWD);
	var file = new File(cwd + "/" + "test_table.html");
	file.writeAll(page.toXMLString());
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Test runner framework
 */

var TestGroup = require("scsh/testing/TestGroup").TestGroup;
var TestProcedure = require("scsh/testing/TestProcedure").TestProcedure;
var TestReport = require("scsh/testing/TestReport").TestReport;
var TestResult = require("scsh/testing/TestResult").TestResult;



/**
 * Create a test runner
 *
 * @class Class implementing a test runner
 * @constructor
 * @param {String} name the test suite name
 */
function TestRunner(name) {

	this.name = name;
	this.testGroupRunners = new Array();
	this.testProcedures = new Array();
	this.testMapper = new Array();
	this.testGroupPrototype = new TestGroup();
	this.testProcedurePrototype = new TestProcedure();
	this.testReport = new TestReport();
}

exports.TestRunner = TestRunner;



/**
 * Add a test group to the test runner
 *
 * <p>This call will iterate through all test cases and locate used procedures and steps.</p>
 *
 * @param {TestGroup} testGroup the test group object
 */
TestRunner.prototype.addTestGroup = function(testGroup) {
	var tgrs = this.testGroupRunners;

	tgr = new TestGroupRunner(this, testGroup);

	tgrs.push(tgr);
}



/**
 * Create test group from XML file and add to test runner
 *
 * @param {String} file the file name containing the test group
 * @param {Object} parameter the parameter object
 */
TestRunner.prototype.addTestGroupFromXML = function (file, parameter) {
	// Parse XML file.
	var parser = new GPXML();
	parser.defineArrayElement("/testgroup", "testcase,function", "id,Name");
	parser.defineArrayElement("/testgroup/testcase/procedures", "procedure");
	var xml = parser.parse(file);

	// Determine CTOR function
	var ctor = xml.constructor.Script;
	if (!ctor) {
		// Use a default constructor unless defined in XML profile
		ctor = function(name, parameter) { TestGroup.call(this, name, parameter); };
	}

	// Make CTOR available in scope object
	// this[xml.id] = ctor;

	// Set correct prototype object
	ctor.prototype = new TestGroup();
	ctor.prototype.constructor = ctor;
	ctor.prototype.usedProcedures = new Array();

	// Add test cases to prototype object
	var testcases = xml.testcase;
	for (var i in testcases) {
		if (i != "arrayIndex") {
			if (parseInt(i) + "" == i) {
				print("Attribute id must be a string, but is a number (" + i + " in " + file + ")");
				print("Due to automatic string to number conversion in JavaScript, the test case");
				print("can not be properly deserialized as object map. Numeric id are deserialized");
				print("as a array indices. Please change the id to a string, e.g. by prefixing with a 0.");
				throw new Error("TestCase id parsing error");
			}

			var s = testcases[i].Script;
			s.XML = testcases[i];
			ctor.prototype["case" + i] = s;
			if (testcases[i].procedures) {
				var procedures = testcases[i].procedures.procedure;
				ctor.prototype.usedProcedures[i] = new Array();

				for (var p = 0; p < procedures.length; p++) {
					ctor.prototype.usedProcedures[i].push(procedures[p].id);
				}
			}
		}
	}

	// Add setup function to prototype object
	if (xml.setup) {
		ctor.prototype["setUp"] = xml.setup.Script;
	}

	// Add teardown function to prototype object
	if (xml.teardown) {
		ctor.prototype["tearDown"] = xml.teardown.Script;
	}

	// Add functions to prototype object
	var functions = xml["function"];
	for (var i in functions) {
		if (i != "arrayIndex") {
			var s = functions[i].Script;
			ctor.prototype[i] = s;
		}
	}

	ctor.XML = xml;

	var tc = new ctor(xml.id, parameter);

	this.addTestGroup(tc);
}



/**
 * Add a test procedure constructor to the list
 *
 * <p>Use the getName() method to obtain the test procedure name</p>
 *
 * @param {TestProcedure} proc the test procedure object
 */
TestRunner.prototype.addTestProcedure = function(proc) {
	var name = proc.getName();
	if (name) {
		this.testProcedures[name] = proc;
	}
}



/**
 * Create test procedure from XML file and add to test runner
 *
 * @param {String} file the file name containing the test procedure
 * @param {Object} parameter the parameter object
 */
TestRunner.prototype.addTestProcedureFromXML = function (file, parameter) {
	// Parse XML file.
	var parser = new GPXML();
	parser.defineArrayElement("/testprocedure", "teststep,function", "id,Name");
	var xml = parser.parse(file);

	// Determine CTOR function
	var ctor = xml.constructor.Script;
	if (!ctor) {
		// Use a default constructor unless defined in XML profile
		ctor = function(testgroup, name, parameter) { TestProcedure.call(this, testgroup, name, parameter); };
	}

	// Make CTOR available in scope object
	// this[xml.id] = ctor;

	// Set correct prototype object
	ctor.prototype = new TestProcedure();
	ctor.prototype.constructor = ctor;
	var teststeps = xml.teststep;
	for (var i in teststeps) {
		if (i != "arrayIndex") {
			var s = teststeps[i].Script;
			ctor.prototype["step" + i] = s;
		}
	}
	if (xml.setup) {
		ctor.prototype["setUp"] = xml.setup.Script;
	}
	if (xml.teardown) {
		ctor.prototype["tearDown"] = xml.teardown.Script;
	}

	// Add functions to prototype object
	var functions = xml["function"];
	for (var i in functions) {
		if (i != "arrayIndex") {
			var s = functions[i].Script;
			ctor.prototype[i] = s;
		}
	}

	ctor.XML = xml;
	ctor.getName = function() { return xml.id; };

	this.testProcedures[xml.id] = ctor;
}



/**
 * Return constructor of test procedure
 *
 * @param {String} name the name of the test procedure
 * @type TestProcedure
 * @return the test procedure object
 */
TestRunner.prototype.getTestProcedure = function(name) {
	return this.testProcedures[name];
}



//
// Return number of failed tests
//
TestRunner.prototype.getFailedCounter = function() {
	return this.failedCounter;
}



//
// Return log of last test run
//
TestRunner.prototype.getLog = function() {
	return this.log;
}



/**
 * Add test to test mapper, which maps test unique id to listening object
 *
 * @param {String} name the unique test name
 * @param {Object} listener the listener object implementing the clearResults(), enable(), isEnabled(), hasPassed() and hasFailed() methods
 */
TestRunner.prototype.addTest = function(name, listener) {
	this.testMapper[name] = listener;
}



//
// Run all test groups
//
TestRunner.prototype.run = function() {
	this.failedCounter = 0;
	this.log = "";
	for (var i = 0; i < this.testGroupRunners.length; i++) {
		var testGroupRunner = this.testGroupRunners[i];
		testGroupRunner.run();
	}
}



/**
 * Enable or disable test
 *
 * @param {String} name the unique test name
 * @param {Boolean} state the enable / disable state
 */
TestRunner.prototype.enable = function(name, state) {
	var listener = this.testMapper[name];
	if (listener && listener.enable) {
		return listener.enable(state);
	} else {
		throw new GPError("TestRunner", GPError.OBJECT_NOT_FOUND, 0, name);
	}
}



/**
 * isEnabled query from TestGroup runner
 *
 * @param {String} name the unique test name
 * @type boolean
 * @return true if the test is enabled
 */
TestRunner.prototype.isEnabled = function(name) {
	var listener = this.testMapper[name];
	if (listener && listener.isEnabled) {
		return listener.isEnabled();
	}
	return true;
}



/**
 * hasPassed Listener
 *
 * @param {String} name the unique test name
 * @param {String} log the test log
 */
TestRunner.prototype.hasPassed = function(name, log) {
//	print("hasPassed(" + name + ")");
	if (log) {
		this.log += log;
	}
	var listener = this.testMapper[name];
	if (listener && listener.hasPassed) {
		listener.hasPassed(log);

		if (listener.getXML) {
			var result = new TestResult(name, true, log, listener.getXML());
			this.testReport.addResult(result);
		}
	} else {
		print("No receiver for passed notification : " + name);
//		for (var i in this.testMapper) {
//			print("- " + i);
//		}
	}
}



/**
 * hasFailed Listener
 *
 * @param {String} name the unique test name
 * @param {String} log the test log
 */
TestRunner.prototype.hasFailed = function(name, log) {
//	print("hasFailed(" + name + ")");
	if (log) {
		this.log += log;
	}
	var listener = this.testMapper[name];
	if (listener && listener.hasFailed) {
		listener.hasFailed(log);

		if (listener.getXML) {
			var result = new TestResult(name, false, log, listener.getXML());
			this.testReport.addResult(result);
		}
		this.failedCounter++;
	}
}



/**
 * Write test report
 */
TestRunner.prototype.report = function(fn) {
	this.testReport.writeReport(fn);
	print("Report written to " + fn);
}



/**
 * Create a TestGroupRunner containing the TestCases
 *
 * @class Class implementing a harness to run test groups
 * @constructor
 * @param {TestRunner} testRunner the associated test runner
 * @param {TestGroup= testGroup the test group
 */
function TestGroupRunner(testRunner, testGroup) {
	this.testRunner = testRunner;
	this.testGroup = testGroup;

	var testcases = testGroup.getTestCaseNames();

	for (var i = 0; i < testcases.length; i++) {
		var tcr = new TestCaseRunner(this, testcases[i]);
	}
}



//
// run this test group
//
TestGroupRunner.prototype.run = function() {
	var test = this.testGroup;

	test.run(this.testRunner);
}




// ---------------------------------------
// Constructor for a TestCaseRunner object
//
function TestCaseRunner(testGroupRunner, testCase) {
	this.testGroupRunner = testGroupRunner;
	this.testCase = testCase;
	this.selected = true;

	var testRunner = testGroupRunner.testRunner;
	testRunner.addTest(testGroupRunner.testGroup.getName() + "/" + testCase, this);

	this.xml = testGroupRunner.testGroup.getTestCase(testCase).XML;

	var testGroup = testGroupRunner.testGroup;

	var testprocedures = testGroup.getUsedTestProceduresForTestCase(testCase);

	if (testprocedures) {
		for (var i = 0; i < testprocedures.length; i++) {
			var tpr = new TestProcedureRunner(this, testprocedures[i]);
		}
	}
}



//
// Run this test case
//
TestCaseRunner.prototype.run = function() {
	var test = this.testGroupRunner.testGroup;

	test.runTestCase(this.testCase, this.testGroupRunner.testRunner);
}



//
// Tell test runner if case is enabled
//
TestCaseRunner.prototype.isEnabled = function() {
	return this.selected;
}



//
// Add a log entry to the test case node
//
TestCaseRunner.prototype.addLog = function(log) {
}



//
// Get log for the test case node
//
TestCaseRunner.prototype.getLog = function() {
	return this.log;
}



/**
 * Return describing XML element
 *
 * @type Object
 * @return the XML element for this test case
 */
TestCaseRunner.prototype.getXML = function() {
	return this.xml;
}



//
// Listener for passed notifications
//
TestCaseRunner.prototype.hasPassed = function(log) {
	this.failed = false;
	this.addLog(log);
}



//
// Listener for failed notifications
//
TestCaseRunner.prototype.hasFailed = function(log) {
	this.failed = true;
	this.addLog(log);
}



//
// Clear result of test
//
TestCaseRunner.prototype.clearResult = function() {
	this.failed = false;
}




//
// Enable or disable test
//
TestCaseRunner.prototype.enable = function(state) {
	this.selected = state;
}




// --------------------------------------------
// Constructor for a TestProcedureRunner object
//
function TestProcedureRunner(testCaseRunner, testProcedure) {
	this.testCaseRunner = testCaseRunner;
	this.testProcedure = testProcedure;

	var tp = this.testCaseRunner.testGroupRunner.testRunner.testProcedures[testProcedure];

	if (tp) {
		var list = new Array();
		for (var i in tp.prototype) {
			if (i.substr(0, 4) == "step") {
				var step = i.substr(4);
				list.push(step);
			}
		}

		list.sort();

		for (var i = 0; i < list.length; i++) {
			var tpsr = new TestStepRunner(this, list[i]);
		}
	} else {
		print("No test procedure implementation found for " + testProcedure);
	}
}




// ---------------------------------------
// Constructor for a TestStepRunner object
//
function TestStepRunner(testProcedureRunner, testStep) {
	this.testProcedureRunner = testProcedureRunner;
	this.testStep = testStep;

	var testCaseRunner = testProcedureRunner.testCaseRunner;
	var testGroupRunner = testCaseRunner.testGroupRunner;
	var testRunner = testGroupRunner.testRunner;
	var testName = testGroupRunner.testGroup.getName() + "/" +
	               testCaseRunner.testCase + "/" +
	               testProcedureRunner.testProcedure + "/" +
	               testStep;

	testRunner.addTest(testName, this);
}



//
// Receive passed notifications
//
TestStepRunner.prototype.hasPassed = function() {
}



//
// Clear test result display
//
TestStepRunner.prototype.clearResult = function() {
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Core elements of a test group containing individual test cases
 */



/**
 * Create a test group object containing test cases.
 *
 * @class
 * <p>Abstract base class implementing a group of test cases.</p>
 * <p>Actual test group objects are derived from this base class.</p>
 * <p>Each test case is created as a method of this object.</p>
 * @constructor
 * @param {String} name the name of the test group
 * @param {Object} parameter the parameter object for this group of tests
 */
function TestGroup(name, parameter) {

	this.name = name;
	this.parameter = parameter;
//	this.logfile = new String("--- TestGroup " + name + "\n");
	this.marker = null;

//	print("TestGroup constructor called");
}

exports.TestGroup = TestGroup;



/**
 * Log a text message.
 *
 * @param {String} message the message to add to the log
 */
TestGroup.prototype.log = function(message) {
	GPSystem.trace(message);
//	this.logfile += message + "\n";
//	print(message);
}



/**
 * Setup method called before invoking each individual test case.
 */
TestGroup.prototype.setUp = function() {
//	this.log("TestGroup.setUp() called");
}



/**
 * Teardown method called after invocation of a test case.
 */
TestGroup.prototype.tearDown = function() {
//	this.log("TestGroup.tearDown() called");
}



/**
 * Verify that the given assertion evaluates to true. Throw an exception if result is false.
 *
 * @param {Boolean} result true if assertion is valid
 * @param {String} message the message to log in case result is false
 */
TestGroup.prototype.assertTrue = function(result, message) {
	if (!result) {
		if (this.marker) {
			throw new GPError(module.id, GPError.INVALID_USAGE, 0, "Assertion failed for [" + this.marker + "]: " + message);
		} else {
			throw new GPError(module.id, GPError.INVALID_USAGE, 0, "Assertion failed: " + message);
		}
	}
}



/**
 * Verify that the given values are equal. Throw an exception if not.
 *
 * @param {Any} first the first argument
 * @param {Any} second the second argument
 * @param {String} message the message to log in case result is false
 */
TestGroup.prototype.assertEquals = function(first, second, message) {
	if (first != second) {
		if (this.marker) {
			throw new GPError(module.id, GPError.INVALID_USAGE, 0, "Assertion failed for [" + this.marker + "]: " + message);
		} else {
			throw new GPError(module.id, GPError.INVALID_USAGE, 0, "Assertion failed: " + message);
		}
	}
}



/**
 * Sets a marker used to identify a context in which an assertion failed.
 *
 * <p>A context can be a certain iteration
 * or group of assertions. A marker allows to further identify the area of a problem.</p>
 *
 * @param {String} marker the marker to set
 */
TestGroup.prototype.setMarker = function(marker) {
	this.marker = marker;
}



/**
 * Returns the name of test group.
 *
 * @type String
 * @return the name of the test group
 */
TestGroup.prototype.getName = function() {
		return this.name;
}



/**
 * Returns a list of tests as sorted array of test case names.
 *
 * @type String[]
 * @return the sorted array of test case names
 */
TestGroup.prototype.getTestCaseNames = function() {
	var tests = new Array();

	for (f in this) {
		if (f.substr(0, 4) == "case") {
			if (this[f] instanceof Function) {
				tests.push(f.substr(4));
			}
		}
	}

	tests.sort();
	return tests;
}



/**
 * Returns a specific test case function.
 *
 * @param {String} name the test case name
 * @type Function
 * @return the test case method
 */
TestGroup.prototype.getTestCase = function(name) {
	return this["case" + name];
}



/**
 * Returns a list of test procedure names referenced by a test case.
 *
 * @param {String} test case name
 * @type String[]
 * @return a list of test procedure names or undefined
 */
TestGroup.prototype.getUsedTestProceduresForTestCase = function(name) {
	if (this.constructor.prototype.usedProcedures) {
		return this.constructor.prototype.usedProcedures[name];
	} else {
		return undefined;
	}
}



/**
 * Run a named test procedure.
 *
 * <p>This method is called by code in a test case to run a test procedure.</p>
 * <p>This method uses the test runner to create a new instance of the test procedure object.
 * All test steps in the procedure are executed and the test procedure object is returned to
 * the caller for further processing of test results.</p>
 *
 * @param {String} name the test procedure name
 * @param {Object} param the parameter object to pass to the execution of the test procedure
 * @type TestProcedure
 * @return the test procedure object
 */
TestGroup.prototype.runTestProcedure = function(name, param) {
	if (!this.testRunner) {
		throw new GPError("TestGroup", GPError.INVALID_USAGE, 0, "No test runner defined");
	}
	var proc = this.testRunner.getTestProcedure(name);
	var test = new proc(name, this, param);
	test.run();

	return test;
}



/**
 * Report progress of passed steps in a test procedure to the test runner. This method is used internally.
 *
 * @private
 * @param {String} procedure the procedure name
 * @param {String} step the step name
 */
TestGroup.prototype.reportProgress = function(procedure, step) {
	if (this.testRunner) {
		var runner = this.testRunner;
		var uniqueName = this.currentTestCase + "/" + procedure + "/" + step;
		runner.hasPassed(uniqueName, null);
	}
}



/**
 * Initialize a test run. This method is used internally.
 * @private
 */
TestGroup.prototype.initTestRun = function() {
	this.marker = null;
}



/**
 * Run a single test case. This method is called internally. Use {@link #runTestCase} for running a single test case.
 *
 * @private
 * @type boolean
 * @return true if test passed
 */
TestGroup.prototype.runTestCaseInternal = function(casename, runner) {
	var result = false;
	this.currentTestCase = this.name + "/" + casename;
	this.testRunner = runner;

//	this.logfile = "";

	var starttime = new Date();
	GPSystem.markTrace();
	logentry = "+ TestCase " + this.currentTestCase + " started " + starttime;
	print(logentry);
	this.log(logentry);
	try {
		this.setUp();
		var func = this.getTestCase(casename);
		func.call(this);
		this.tearDown();
		var endtime = new Date();
		logentry = "+ TestCase " + this.currentTestCase + " completed on " + endtime + " after " + (endtime.valueOf() - starttime.valueOf()) + " ms";
		print(logentry);
		this.log(logentry);
		if (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasPassed(this.currentTestCase, logfile);
		}
		result = true;
	}
	catch(e) {
		var endtime = new Date();
		logentry = "+ TestCase " + this.currentTestCase + " failed on " + endtime + " after " + (endtime.valueOf() - starttime.valueOf()) + " ms";
		print(logentry);
		this.log(logentry);

		logentry = "  ### - " + e;
		print(logentry);
		this.log(logentry);
		for (j in e) {
			logentry = "  ### " + j + " = " + e[j];
			print(logentry);
			this.log(logentry);
		}

		if (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasFailed(this.currentTestCase, logfile);
		}
		try	 {
			this.tearDown();
		}
		catch(e) {
			print("Exception in tearDown() " + e);
		}
	}
	return result;
}



/**
 * Runs all tests in a test group.
 *
 * <p>This method can be used to run a test group without a test runner. In that case leave the runner
 * argument empty or null.</p>
 *
 * @param {TestRunner} runner the test runner to report progress or undefined or null
 */
TestGroup.prototype.run = function(runner) {
	this.initTestRun();

	var tests = this.getTestCaseNames();

	var startgroup = new Date();
	var logentry = "TestGroup " + this.name + " started " + startgroup;
	var failures = 0;
	print(logentry);
	this.log(logentry);

	for (var i = 0; i < tests.length; i++) {
		var uniqueName = this.name + "/" + tests[i];

		if (runner) {
			if (!runner.isEnabled(uniqueName))
				continue;
		}

		if (!this.runTestCaseInternal(tests[i], runner)) {
			failures++;
		}
	}

	var endgroup = new Date();
	logentry = "TestGroup " + this.name + " completed on " + endgroup + " with " + failures + " failed tests";
	print(logentry);
	this.log(logentry);
}



/**
 * Run a single test in a test group, optionally using a test runner.
 *
 * @param {String} casename the name of the test case
 * @param {TestRunner} the test runner object or undefined or null
 */
TestGroup.prototype.runTestCase = function(casename, runner) {
	this.initTestRun();
	this.runTestCaseInternal(casename, runner);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2023 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A test group with a generator for test cases
 */

function TestGroupWithVariants(name, parameter) {
	TestGroup.call(this, name, parameter);
}

TestGroupWithVariants.prototype = Object.create(TestGroup.prototype);
TestGroupWithVariants.constructor = TestGroupWithVariants;

exports.TestGroupWithVariants = TestGroupWithVariants;



/**
 * Create test group from XML file and add to test runner
 *
 * @param {String} file the file name containing the test group
 * @param {Object} parameter the parameter object
 */
TestGroupWithVariants.createTestGroupFromXML = function (file, parameter) {
	default xml namespace = "http://www.w3.org/1999/xhtml";

	// Parse XML file.
	var parser = new GPXML();
 	parser.defineArrayElement("/testgroup", "testcase,function,", "id,Name");
	parser.defineArrayElement("/testgroup/testcase/procedures", "procedure");
	var xml = parser.parse(file);

	// Determine CTOR function
	var ctor = xml.constructor.Script;
	if (!ctor) {
		// Use a default constructor unless defined in XML profile
		ctor = function(name, parameter) { TestGroupWithVariants.call(this, name, parameter); };
	}

	// Make CTOR available in scope object
	// this[xml.id] = ctor;

	// Set correct prototype object
	ctor.prototype = new TestGroupWithVariants();
	ctor.prototype.constructor = ctor;
	ctor.prototype.usedProcedures = new Array();
	ctor.prototype.config = new Array();

	var gen = xml.generator.Script;
	gen.call(this); // Set this.variants

	// Add setup function to prototype object
	if (xml.setup) {
		ctor.prototype["setUp"] = xml.setup.Script;
	}

	// Add teardown function to prototype object
	if (xml.teardown) {
		ctor.prototype["tearDown"] = xml.teardown.Script;
	}

	// Add functions to prototype object
	var functions = xml["function"];
	for (var i in functions) {
		if (i != "arrayIndex") {
			var s = functions[i].Script;
			ctor.prototype[i] = s;
		}
	}

	ctor.XML = xml;

	var tc = new ctor(xml.id, parameter);

	// Add test cases to prototype object
	var testcases = xml.testcase;
	for (var i in testcases) {
		if (i != "arrayIndex") {
			if (parseInt(i) + "" == i) {
				print("Attribute id must be a string, but is a number (" + i + " in " + file + ")");
				print("Due to automatic string to number conversion in JavaScript, the test case");
				print("can not be properly deserialized as object map. Numeric id are deserialized");
				print("as a array indices. Please change the id to a string, e.g. by prefixing with a 0.");
				throw new Error("TestCase id parsing error");
			}

			// Generate a test case for each variant

			for (var j = 0; j < this.variants.length; j++) {
				var variant = this.variants[j];

				var s = testcases[i].Script.bind(tc); // Create a copy of the script function
				s.variant = variant;

				// Set variables

				var name = testcases[i].name.elementValue;
				var description = testcases[i].description.p.elementValue;

				for (var v in variant) {
					var key = "${variant." + v + "}";

					if (name.indexOf(key) > 0) {
						name = name.replace(key, variant[v]);
					}

					if (description.indexOf(key) > 0) {
						description = description.replace(key, variant[v]);
					}
				}

				// Create a copy of the XML element

				s.XML = {
					id : i,
					name: {
						elementValue: name
					},
					description: {
						p: {
							elementValue: description
						}
					},
				};

				var caseName = i + "/" + variant.id;
				ctor.prototype["case" + caseName] = s;

				if (testcases[i].procedures) {
					var procedures = testcases[i].procedures.procedure;
					ctor.prototype.usedProcedures[caseName] = new Array();

					for (var p = 0; p < procedures.length; p++) {
						ctor.prototype.usedProcedures[caseName].push(procedures[p].id);
					}
				}
			}
		}
	}

	return tc;
}



/**
 * Run a single test case. This method is called internally. Use {@link #runTestCase} for running a single test case.
 *
 * @private
 * @type boolean
 * @return true if test passed
 */
TestGroupWithVariants.prototype.runTestCaseInternal = function(casename, runner) {
	var result = false;
	this.currentTestCase = this.name + "/" + casename;
	this.testRunner = runner;

//	this.logfile = "";

	var starttime = new Date();
	GPSystem.markTrace();
	logentry = "+ TestCase " + this.currentTestCase + " started " + starttime;
	print(logentry);
	this.log(logentry);
	try {
		this.setUp();
		var func = this.getTestCase(casename);
		func.call(this, func.variant);
		this.tearDown();
		var endtime = new Date();
		logentry = "+ TestCase " + this.currentTestCase + " completed on " + endtime + " after " + (endtime.valueOf() - starttime.valueOf()) + " ms";
		print(logentry);
		this.log(logentry);
		if (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasPassed(this.currentTestCase, logfile);
		}
		result = true;
	}
	catch(e) {
		var endtime = new Date();
		logentry = "+ TestCase " + this.currentTestCase + " failed on " + endtime + " after " + (endtime.valueOf() - starttime.valueOf()) + " ms";
		print(logentry);
		this.log(logentry);

		logentry = "  ### - " + e;
		print(logentry);
		this.log(logentry);
		for (j in e) {
			logentry = "  ### " + j + " = " + e[j];
			print(logentry);
			this.log(logentry);
		}

		if (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasFailed(this.currentTestCase, logfile);
		}
		try	 {
			this.tearDown();
		}
		catch(e) {
			print("Exception in tearDown() " + e);
		}
	}
	return result;
}
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core elements of a test procedure
 */


//
// Constructor
//
function TestProcedure(name, testgroup, parameter) {

	this.name = name;
	this.testgroup = testgroup;
	this.parameter = parameter;
//	print("TestProcedure constructor called");
}

exports.TestProcedure = TestProcedure;


//
// Log message to console
//
TestProcedure.prototype.log = function(message) {
	this.testgroup.log(message);
//	print(message);
}



//
// Setup object for a test procedure
//
TestProcedure.prototype.setUp = function() {
//	this.log("TestProcedure.setUp() called");
}



//
// Remove residue from test procedure
//
TestProcedure.prototype.tearDown = function() {
//	this.log("TestProcedure.tearDown() called");
}



//
// Verify that assertion is true
//
TestProcedure.prototype.assertTrue = function(result, message) {
	this.testgroup.assertTrue(result, message);
}



//
// Verify that expressions are equal
//
TestProcedure.prototype.assertEquals = function(first, second, message) {
	this.testgroup.assertEquals(first, second, message);
}



//
// Run all tests in a test procedure
//
TestProcedure.prototype.run = function() {
	var steps = new Array();

	for (f in this) {
		if (f.substr(0, 4) == "step") {
			if (this[f] instanceof Function) {
				steps.push(f);
			}
		}
	}

	steps.sort();

	for (var i = 0; i < steps.length; i++) {
		var step = steps[i].substr(4);
//		print("    Step " + step + " of procedure " +  this.name);
		this.setUp();
		this[steps[i]].call(this);
		this.tearDown();

		var testgroup = this.testgroup;
		testgroup.reportProgress(this.name, step);
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Test Report
 */

function TestReport() {
	this.testResults = [];
}

exports.TestReport = TestReport;


TestReport.prototype.addResult = function(result) {
	this.testResults.push(result);
}



TestReport.prototype.writeReport = function(filename) {
	var xml = <testreport/>

	for (var i = 0; i < this.testResults.length; i++) {
		var r = this.testResults[i];
		var x = r.toXML();
		xml.testcaseresult += x;
	}

	var os = new java.io.FileOutputStream(filename);
	var fw = new java.io.OutputStreamWriter(os, "UTF-8");

	fw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
	fw.write("<?xml-stylesheet type=\"text/xsl\" href=\"docreport.xsl\" ?>\n");

	fw.write(xml.toXMLString());
	fw.close();
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Test Result
 */

function TestResult(id, verdict, log, tcxml) {
	this.id = id;
	this.verdict = verdict;
	this.log = log;
	this.tcxml = tcxml;
}

exports.TestResult = TestResult;


TestResult.prototype.toXML = function() {
	var source = this.id.split("/")[0];
	var sourceid = this.id.split("/")[1];

	var xml = <testcaseresult id={this.id} source={source} sourceid={sourceid}/>;

	xml.name = <name>{this.tcxml.name.elementValue}</name>;

	xml.verdict = <verdict>{ this.verdict ? "Passed" : "Failed" }</verdict>;
	xml.log = <log>{ "\n" + this.log + "\n" }</log>;
	return xml;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Test runner framework
 */

var TestGroup = require("scsh/testing/TestGroup").TestGroup;
var TestProcedure = require("scsh/testing/TestProcedure").TestProcedure;
var TestReport = require("scsh/testing/TestReport").TestReport;
var TestResult = require("scsh/testing/TestResult").TestResult;
var BaseTestRunner = require("scsh/testing/BaseTestRunner").TestRunner;


/**
 * Create a test runner using a Smart Card Shell outline for navigation
 *
 * @class Class implementing a graphical test runner
 * @constructor
 * @param {String} name the test suite name
 */
function TestRunner(name) {
	BaseTestRunner.call(this, name);

	// Create root node and set as view
	var view = new OutlineNode(name, true);
	if (typeof(view.expand) == "function") {
		view.setContextMenu(["run", "clear", "report", "expand", "collapse"]);
	} else {
		view.setContextMenu(["run", "clear", "report"]);
	}
	view.setUserObject(this);
	this.view = view;

	view.show();
}

TestRunner.prototype = Object.create(BaseTestRunner.prototype);
TestRunner.constructor = TestRunner;

exports.TestRunner = TestRunner;



/**
 * Set directory to write reports
 *
 * @param {String} dir the directory to store reports
 */
TestRunner.prototype.setReportDirectory = function(dir) {
	this.reportDir = dir;
}



/**
 * Event listener for actions selected from context menu
 *
 * @param {Object} source the outline node for which the action was invoked
 * @param {String} actionName the name of the action selected
 */
TestRunner.prototype.actionListener = function(source, actionName) {
	switch(actionName) {
	case "run" :
		this.run();
		break;
	case "clear" :
		this.clearResults();
		break;
	case "report" :
		this.report();
		break;
	case "expand" :
		this.expandAll();
		break;
	case "collapse" :
		this.collapseAll();
		break;
	}
}



/**
 * Expand all test groups
 */
TestRunner.prototype.expandAll = function() {
	for each (c in this.view.childs) {
		c.expand();
	}
}



/**
 * Collapse all test groups
 */
TestRunner.prototype.collapseAll = function() {
	for each (c in this.view.childs) {
		c.collapse();
	}
}



/**
 * Write test report
 */
TestRunner.prototype.report = function() {
	var fn = GPSystem.dateTimeByteString().toString(HEX) + "_TestReport.xml";
	if (this.reportDir == undefined) {
		var fn = GPSystem.mapFilename(fn, GPSystem.USR);
	} else {
		var fn = this.reportDir + "/" + fn;
	}
	var fn = Dialog.prompt("Select output file for report", fn, null, "*.xml");
	if (fn != null) {
		this.testReport.writeReport(fn);
		print("Report written to " + fn);
	}
}



/**
 * Add a test group to the test runner
 *
 * <p>This call will iterate through all test cases and locate used procedures and steps.</p>
 *
 * @param {TestGroup} testGroup the test group object
 */
TestRunner.prototype.addTestGroup = function(testGroup) {
	var tgrs = this.testGroupRunners;

	tgr = new TestGroupRunner(this, testGroup);

	tgrs.push(tgr);
	this.view.insert(tgr.view);
}



/**
 * Run all test groups
 */
TestRunner.prototype.run = function() {
	for (var i = 0; i < this.testGroupRunners.length; i++) {
		var testGroupRunner = this.testGroupRunners[i];
		testGroupRunner.run();
	}
}



/**
 * Clear result of last test run
 */
TestRunner.prototype.clearResults = function() {
	for (var i in this.testMapper) {
		var listener = this.testMapper[i];
		if (listener) {
			listener.clearResult();
		}
	}
	this.testReport = new TestReport();
}



/**
 * hasPassed Listener
 *
 * @param {String} name the unique test name
 * @param {String} log the test log
 */
TestRunner.prototype.hasPassed = function(name, log) {
	var listener = this.testMapper[name];
	if (listener) {
		listener.hasPassed(log);

		if (listener.getXML) {
			var result = new TestResult(name, true, log, listener.getXML());
			this.testReport.addResult(result);
		}
	} else {
		print("No receiver for passed notification : " + name);
		for (var i in this.testMapper) {
			print("- " + i);
		}
	}
}



/**
 * hasFailed Listener
 *
 * @param {String} name the unique test name
 * @param {String} log the test log
 */
TestRunner.prototype.hasFailed = function(name, log) {
	var listener = this.testMapper[name];
	if (listener) {
		listener.hasFailed(log);
		if (listener.getXML) {
			var result = new TestResult(name, false, log, listener.getXML());
			this.testReport.addResult(result);
		}
	}
}



/**
 * Create a TestGroupRunner containing the TestCases
 *
 * @class Class implementing a harness to run test groups
 * @constructor
 * @param {TestRunner} testRunner the associated test runner
 * @param {TestGroup= testGroup the test group
 */
function TestGroupRunner(testRunner, testGroup) {
	this.testRunner = testRunner;
	this.testGroup = testGroup;

	var view = new OutlineNode(testGroup.getName());
	view.setContextMenu(["run"]);
	view.setUserObject(this);

	this.view = view;

	var testcases = testGroup.getTestCaseNames();

	for (var i = 0; i < testcases.length; i++) {
		var tcr = new TestCaseRunner(this, testcases[i]);
		view.insert(tcr.view);
	}
}



/**
 * Event listener for context menu
 *
 * @param {Object} source the outline node for which the action was invoked
 * @param {String} actionName the name of the action selected
 */
TestGroupRunner.prototype.actionListener = function(source, action) {
	switch(action) {
	case "run" :
		this.run();
		break;
	}
}



/**
 * Run this test group
 */
TestGroupRunner.prototype.run = function() {
	var test = this.testGroup;

	test.run(this.testRunner);
}




/**
 * Construct a TestCaseRunner object
 *
 * @class Class implementing a test case harness
 * @constructor
 * @param {TestGroupRunner} the parent test group runner
 * @param {String} the test case name
 */
function TestCaseRunner(testGroupRunner, testCase) {
	this.testGroupRunner = testGroupRunner;
	this.testCase = testCase;
	this.selected = true;

	var testRunner = testGroupRunner.testRunner;
	testRunner.addTest(testGroupRunner.testGroup.getName() + "/" + testCase, this);

	this.xml = testGroupRunner.testGroup.getTestCase(testCase).XML;

	var view = new OutlineNode(testCase + " " + this.xml.name.elementValue);

	view.setUserObject(this);
	view.setIcon("selected");
	view.setContextMenu(["select", "deselect", "run"]);
	this.view = view;

	var testGroup = testGroupRunner.testGroup;

	var testprocedures = testGroup.getUsedTestProceduresForTestCase(testCase);

	if (testprocedures) {
		for (var i = 0; i < testprocedures.length; i++) {
			var tpr = new TestProcedureRunner(this, testprocedures[i]);
			view.insert(tpr.view);
		}
	}
}



/**
 * Event listener for context menu
 *
 * @param {Object} source the outline node for which the action was invoked
 * @param {String} actionName the name of the action selected
 */
TestCaseRunner.prototype.actionListener = function(source, actionName) {
	print("Action " + actionName);
	switch(actionName) {
	case "select":
		this.selected = true;
		source.setIcon("selected");
		break;
	case "deselect":
		this.selected = false;
		source.setIcon("deselected");
		break;
	case "run":
		this.run();
		break;
	}
}



/**
 * Run this test case
 */
TestCaseRunner.prototype.run = function() {
	var test = this.testGroupRunner.testGroup;

	test.runTestCase(this.testCase, this.testGroupRunner.testRunner);
}



/**
 * Tell test runner if case is enabled
 *
 * @type boolean
 * @return true if enabled
 */
TestCaseRunner.prototype.isEnabled = function() {
	return this.selected;
}



/**
 * Add a log entry to the test case node
 *
 * @param {String} log the test log
 */
TestCaseRunner.prototype.addLog = function(log) {
	var view = this.view;
	var lognode = new TestLogFile(this, log);
	this.log = lognode;
	view.insert(lognode.view);
}



/**
 * Return describing XML element
 *
 * @type Object
 * @return the XML element for this test case
 */
TestCaseRunner.prototype.getXML = function() {
	return this.xml;
}



/**
 * Listener for passed notifications
 *
 * @param {String} log the test log
 */
TestCaseRunner.prototype.hasPassed = function(log) {
	this.failed = false;
	var view = this.view;
	view.setIcon("passed");
	this.addLog(log);
}



/**
 * Listener for failed notifications
 *
 * @param {String} log the test log
 */
TestCaseRunner.prototype.hasFailed = function(log) {
	this.failed = true;
	var view = this.view;
	view.setIcon("failed");
	this.addLog(log);
}



/**
 * Clear result of test
 */
TestCaseRunner.prototype.clearResult = function() {
	this.failed = false;
	var view = this.view;
	if (this.selected) {
		view.setIcon("selected");
	} else {
		view.setIcon("deselected");
	}
}



/**
 * Enable or disable test
 *
 * @param {Boolean} state true for enabled
 */
TestCaseRunner.prototype.enable = function(state) {
	var view = this.view;
	this.selected = state;
	if (this.selected) {
		view.setIcon("selected");
	} else {
		view.setIcon("deselected");
	}
}




/**
 * Constructor for test log entry in outline
 */
function TestLogFile(parent, log) {
	this.log = log;

	var view = new OutlineNode("Log from " + Date());
	this.view = view;
	view.setUserObject(this);
}



//
// Listener for node selection - Display log
//
TestLogFile.prototype.selectedListener = function() {
	print("--------------------------------------------------------------------------------");
	print(this.log);
}



// --------------------------------------------
// Constructor for a TestProcedureRunner object
//
function TestProcedureRunner(testCaseRunner, testProcedure) {
	this.testCaseRunner = testCaseRunner;
	this.testProcedure = testProcedure;

	var view = new OutlineNode(testProcedure);
	this.view = view;

	var tp = this.testCaseRunner.testGroupRunner.testRunner.testProcedures[testProcedure];

	if (tp) {
		var list = new Array();
		for (var i in tp.prototype) {
			if (i.substr(0, 4) == "step") {
				var step = i.substr(4);
				list.push(step);
			}
		}

		list.sort();

		for (var i = 0; i < list.length; i++) {
			var tpsr = new TestStepRunner(this, list[i]);
			view.insert(tpsr.view);
		}
	} else {
		print("No test procedure implementation found for " + testProcedure);
	}
}




// ---------------------------------------
// Constructor for a TestStepRunner object
//
function TestStepRunner(testProcedureRunner, testStep) {
	this.testProcedureRunner = testProcedureRunner;
	this.testStep = testStep;

	var view = new OutlineNode(testStep);
	this.view = view;

	var testCaseRunner = testProcedureRunner.testCaseRunner;
	var testGroupRunner = testCaseRunner.testGroupRunner;
	var testRunner = testGroupRunner.testRunner;
	var testName = testGroupRunner.testGroup.getName() + "/" +
	               testCaseRunner.testCase + "/" +
	               testProcedureRunner.testProcedure + "/" +
	               testStep;

	testRunner.addTest(testName, this);
}



//
// Receive passed notifications
//
TestStepRunner.prototype.hasPassed = function() {
	var view = this.view;
	view.setIcon("passed");
}



//
// Clear test result display
//
TestStepRunner.prototype.clearResult = function() {
	var view = this.view;
	view.setIcon();
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Connector implementing a web service interface to a TCC for Passive Authentication as defined in TR-03129
 */



/**
 * Creates a web service connector to access services for Passive Authentication as defined in TR-03129
 *
 * @class Class implementing a TCC web service connector for PA
 * @constructor
 * @param {String} url the web service endpoint
 */
function PAConnection(url) {
	this.url = url;
	this.soapcon = new SOAPConnection(SOAPConnection.SOAP11);
	this.verbose = true;
	this.lastReturnCode = null;
	this.version = "1.1";
}

exports.PAConnection = PAConnection;



/**
 * Sets the version of the WSDL to use
 *
 * @param {String} version the version to use
 */
PAConnection.prototype.setVersion = function(version) {
	this.version = version;
}



/**
 * Get the last error return code (Deprecated: Use getLastReturnCode() instead)
 *
 * @returns the last error return code received or null if none defined
 * @type String
 */
PAConnection.prototype.getLastError = function() {
	return this.lastReturnCode;
}



/**
 * Get the last return code
 *
 * @returns the last return code received or null if none defined
 * @type String
 */
PAConnection.prototype.getLastReturnCode = function() {
	return this.lastReturnCode;
}



/**
 * Get the last DSInfo data structure
 *
 * @returns the last DSInfo received or null if none defined
 * @type Object
 */
PAConnection.prototype.getLastDSInfo = function() {
	return this.lastDSInfo;
}



/**
 * Get the last dsTrustStatus. Must be one of
 * certificate_ok
 * certificate_undetermined
 * certificate_invalid
 *
 * @returns the last dsTrustStatus received or null if none defined
 * @type String
 */
PAConnection.prototype.getLastDSTrustStatus = function() {
	var ns1 = new Namespace("uri:eacBT/" + this.version);
	if (!this.getLastDSInfo()) {
		return null;
	}
	return this.getLastDSInfo().ns1::dsTrustStatus.toString();
}



/**
 * Get the CSCA Certificate from the last GetDocumentSignerInformation call
 * or null if no CSCA Certificate was returned.
 *
 * @returns the CSCA Certificate or null if not defined
 * @type ByteString
 */
PAConnection.prototype.getLastCSCACertificate = function() {
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	if (!this.getLastDSInfo()) {
		return null;
	}

	var cert =  this.getLastDSInfo().ns1::cscaCertificate.ns1::certificate;
	if (cert.length() == 0) {
		return null;
	}

	return new ByteString(cert, BASE64);
}



/**
 * Get the last Document Signer validity status
 *
 * @returns the DS validity status or null if not defined
 * @type String
 */
PAConnection.prototype.getLastDSValidityStatus = function() {
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	if (!this.getLastDSInfo()) {
		return null;
	}

	var status = this.getLastDSInfo().ns1::certValidity.ns1::dsValidity.ns1::status;
	return status.toString();
}



/**
 * Get the last CSCA validity status
 *
 * @returns the CSCA validity status or null if not defined
 * @type String
 */
PAConnection.prototype.getLastCSCAValidityStatus = function() {
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	if (!this.getLastDSInfo()) {
		return null;
	}

	var status = this.getLastDSInfo().ns1::certValidity.ns1::cscaValidity.ns1::status;
	return status.toString();
}



/**
 * Get the last Document Signer signature status
 *
 * @returns the DS signature status or null if not defined
 * @type String
 */
PAConnection.prototype.getLastDSSignatureStatus = function() {
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	if (!this.getLastDSInfo()) {
		return null;
	}

	var status = this.getLastDSInfo().ns1::dsSignature.ns1::status;
	return status.toString();
}



/**
 * Gets the last request
 *
 * @returns the last request
 * @type XML
 */
PAConnection.prototype.getLastRequest = function() {
	return this.request;
}



/**
 * Gets the last response
 *
 * @returns the last response
 * @type XML
 */
PAConnection.prototype.getLastResponse = function() {
	return this.response;
}



/**
 * Close the connector and release allocated resources
 */
PAConnection.prototype.close = function() {
	this.soapcon.close();
}



/**
 * Send a Document Signer Certificate to the TCC for validation
 *
 * @param {X509} cert the Document Signer Certificate
 * @param {Boolean} returnCSCACert if true receive the corresponding CSCA Certificate. Default is false.
 * @returns true if Document Signer Certificate is valid, false otherwise
 * @type Boolean
 */
PAConnection.prototype.GetDocumentSignerInformation = function(cert, returnCSCACert) {

	this.lastReturnCode = null;

	var ns = new Namespace("uri:EAC-PKI-IS-Reader-Protocol/" + this.version);
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	if (!returnCSCACert) {
		returnCSCACert = false;
	}

	var request =
		<ns:GetDocumentSignerInformation xmlns:ns={ns} xmlns:ns1={ns1}>
			<dsCertificate>
				<!--Optional:-->
				<ns1:binary>{cert.getBytes().toString(BASE64)}</ns1:binary>
			</dsCertificate>
			<SignerIdentifier>
				<!--Optional:-->
			</SignerIdentifier>
			<returnCSCACertificate>{returnCSCACert}</returnCSCACertificate>
		</ns:GetDocumentSignerInformation>;

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try {
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError("PAConnection", GPError.DEVICE_ERROR, 0, "GetDocumentSignerInformation failed with : " + e.message);
	}

	this.response = response;
	this.lastReturnCode = response.Result.ns1::returnCode.toString();
	this.lastDSInfo = response.Result.ns1::dsInfo;

	return (this.lastReturnCode.equals("ok_syntax") && this.getLastDSTrustStatus().equals("certificate_ok"));
}



/**
 * Get the current Master List
 *
 * @returns the current Master List
 * @type ByteString
 */
PAConnection.prototype.GetMasterList = function() {

	this.lastReturnCode = null;

	var ns = new Namespace("uri:EAC-PKI-IS-Reader-Protocol/" + this.version);
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request = <ns:GetMasterList xmlns:ns={ns}/>;

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try {
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError("PAConnection", GPError.DEVICE_ERROR, 0, "GetDocumentSignerInformation failed with : " + e.message);
	}

	this.response = response;
	this.lastReturnCode = response.Result.ns1::returnCode.toString();

	if (this.lastReturnCode == "ok_list_available") {
		var masterList = response.Result.ns1::masterList.ns1::binary;
		return new ByteString(masterList, BASE64);;
	} else {
		return null;
	}
}/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Connector implementing a web service interface to a CVCA/DVCA for the
 * distribution of card verifiable certificates used for terminal authentication as defined in TR-03129
 */



/**
 * Creates a web service connector to access services of a CVCA/DVCA as defined in TR-03129
 *
 * @class Class implementing a CVCA/DVCA web service connector
 * @constructor
 * @param {String} url the web service endpoint
 * @param {Boolean} isCVCA true if connection is made to CVCA instead of DVCA
 */
function TAConnection(url, isCVCA) {
	this.url = url;
	this.soapcon = new SOAPConnection(SOAPConnection.SOAP11);
	this.verbose = true;
	this.lastReturnCode = null;
	this.version = "1.1";
	this.isCVCA = isCVCA;
}

exports.TAConnection = TAConnection;



/**
 * Sets the version of the WSDL to use
 *
 * @param {String} version the version to use
 */
TAConnection.prototype.setVersion = function(version) {
	this.version = version;
}



/**
 * Get the last error return code (Deprecated: Use getLastReturnCode() instead)
 *
 * @returns the last error return code received or null if none defined
 * @type String
 */
TAConnection.prototype.getLastError = function() {
	return this.lastReturnCode;
}



/**
 * Get the last return code
 *
 * @returns the last return code received or null if none defined
 * @type String
 */
TAConnection.prototype.getLastReturnCode = function() {
	return this.lastReturnCode;
}



/**
 * Gets the last request
 *
 * @returns the last request
 * @type XML
 */
TAConnection.prototype.getLastRequest = function() {
	return this.request;
}



/**
 * Gets the last response
 *
 * @returns the last response
 * @type XML
 */
TAConnection.prototype.getLastResponse = function() {
	return this.response;
}



/**
 * Close the connector and release allocated resources
 */
TAConnection.prototype.close = function() {
	this.soapcon.close();
}



/**
 * Obtain a list of certificates from the CVCA or DVCA
 *
 * @param {String} messageID the messageID for asynchronous requests (optional)
 * @param {String} responseURL the URL to which the asynchronous response is send (optional)
 * @returns a lists of card verifiable certificates from the DVCA or null in case of error
 * @type ByteString[]
 */
TAConnection.prototype.getCACertificates = function(messageID, responseURL) {

	this.lastReturnCode = null;

	if (this.isCVCA) {
		var ns = new Namespace("uri:EAC-PKI-CVCA-Protocol/" + this.version);
	} else {
		var ns = new Namespace("uri:EAC-PKI-DV-Protocol/" + this.version);
	}

	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request =
		<ns:GetCACertificates xmlns:ns={ns} xmlns:ns1={ns1}>
			<callbackIndicator>callback_not_possible</callbackIndicator>
			<messageID>
			</messageID>
			<responseURL>
			</responseURL>
		</ns:GetCACertificates>;

	if (typeof(messageID) != "undefined") {
		request.callbackIndicator = "callback_possible";
		request.messageID.ns1::messageID = messageID;
		request.responseURL.ns1::string = responseURL;
	}

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	 {
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError("TAConnection", GPError.DEVICE_ERROR, 0, "getCACertificates failed with : " + e.message);
	}

	this.response = response;

	var certlist = [];

	this.lastReturnCode = response.Result.ns1::returnCode.toString();

	if (this.lastReturnCode == "ok_cert_available") {
		GPSystem.log(GPSystem.INFO, module.id, "Received certificates:");
		for each (var c in response.Result.ns1::certificateSeq.ns1::certificate) {
			var cvc = new ByteString(c, BASE64);
			certlist.push(cvc);
			GPSystem.log(GPSystem.INFO, module.id, cvc);
		}
	} else {
		return null;
	}

	return certlist;
}



/**
 * Request a certificate from the parent CA using a web service
 *
 * @param {ByteString} certreq the certificate request
 * @param {String} messageID the messageID for asynchronous requests (optional)
 * @param {String} responseURL the URL to which the asynchronous response is send (optional)
 * @returns the new certificates
 * @type ByteString[]
 */
TAConnection.prototype.requestCertificate = function(certreq, messageID, responseURL) {

	this.lastReturnCode = null;

	var soapConnection = new SOAPConnection();

	if (this.isCVCA) {
		var ns = new Namespace("uri:EAC-PKI-CVCA-Protocol/" + this.version);
	} else {
		var ns = new Namespace("uri:EAC-PKI-DV-Protocol/" + this.version);
	}

	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request =
		<ns:RequestCertificate xmlns:ns={ns} xmlns:ns1={ns1}>
			<callbackIndicator>callback_not_possible</callbackIndicator>
			<messageID>
			</messageID>
			<responseURL>
			</responseURL>
			<certReq>{certreq.toString(BASE64)}</certReq>
		</ns:RequestCertificate>

	if (typeof(messageID) != "undefined") {
		request.callbackIndicator = "callback_possible";
		request.messageID.ns1::messageID = messageID;
		request.responseURL.ns1::string = responseURL;
	}

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	{
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError("TAConnection", GPError.DEVICE_ERROR, 0, "RequestCertificate failed with : " + e);
	}

	this.response = response;

	var certlist = [];

	this.lastReturnCode = response.Result.ns1::returnCode.toString();

	if (this.lastReturnCode.substr(0, 3) == "ok_") {
		GPSystem.log(GPSystem.INFO, module.id, "Received certificates:");
		for each (var c in response.Result.ns1::certificateSeq.ns1::certificate) {
			var cvc = new ByteString(c, BASE64);
			certlist.push(cvc);
			GPSystem.log(GPSystem.INFO, module.id, cvc);
		}
	} else {
		return null;
	}

	return certlist;
}



/**
 * Get a certificate previously requested from the parent CA using a web service
 *
 * This is a proprietary extension to the web service. Do not use in interoperable systems.
 *
 * @param {String} messageID the messageID for asynchronous requests (optional)
 * @returns the new certificates
 * @type ByteString[]
 */
TAConnection.prototype.getCertificate = function(messageID, responseURL) {

	this.lastReturnCode = null;

	var soapConnection = new SOAPConnection();

	if (this.isCVCA) {
		var ns = new Namespace("uri:EAC-PKI-CVCA-Protocol/" + this.version);
	} else {
		var ns = new Namespace("uri:EAC-PKI-DV-Protocol/" + this.version);
	}

	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request =
		<ns:GetCertificate xmlns:ns={ns} xmlns:ns1={ns1}>
			<callbackIndicator>callback_not_possible</callbackIndicator>
			<messageID>
			</messageID>
		</ns:GetCertificate>

	if (typeof(messageID) != "undefined") {
		request.callbackIndicator = "callback_possible";
		request.messageID.ns1::messageID = messageID;
		request.responseURL.ns1::string = responseURL;
	}

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	{
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError("TAConnection", GPError.DEVICE_ERROR, 0, "GetCertificate failed with : " + e);
	}

	this.response = response;

	var certlist = [];

	this.lastReturnCode = response.Result.ns1::returnCode.toString();

	if (this.lastReturnCode.substr(0, 3) == "ok_") {
		GPSystem.log(GPSystem.INFO, module.id, "Received certificates:");
		for each (var c in response.Result.ns1::certificateSeq.ns1::certificate) {
			var cvc = new ByteString(c, BASE64);
			certlist.push(cvc);
			GPSystem.log(GPSystem.INFO, module.id, cvc);
		}
	} else {
		return null;
	}

	return certlist;
}



/**
 * Request a certificate from the parent CA using a web service
 *
 * @param {ByteString} certreq the certificate request
 * @param {String} foreignCAR the CAR of the foreign CVCA
 * @param {String} messageID the messageID for asynchronous requests (optional)
 * @param {String} responseURL the URL to which the asynchronous response is send (optional)
 * @returns the new certificates
 * @type ByteString[]
 */
TAConnection.prototype.requestForeignCertificate = function(certreq, foreignCAR, messageID, responseURL) {

	this.lastReturnCode = null;

	var soapConnection = new SOAPConnection();

	if (this.isCVCA) {
		var ns = new Namespace("uri:EAC-PKI-CVCA-Protocol/" + this.version);
	} else {
		var ns = new Namespace("uri:EAC-PKI-DV-Protocol/" + this.version);
	}

	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request =
		<ns:RequestForeignCertificate xmlns:ns={ns} xmlns:ns1={ns1}>
			<callbackIndicator>callback_not_possible</callbackIndicator>
			<messageID/>
			<responseURL/>
			<foreignCAR>{foreignCAR}</foreignCAR>
			<certReq>{certreq.toString(BASE64)}</certReq>
		</ns:RequestForeignCertificate>

	if (typeof(messageID) != "undefined") {
		request.callbackIndicator = "callback_possible";
		request.messageID.ns1::messageID = messageID;
		request.responseURL.ns1::string = responseURL;
	}

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	{
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError("TAConnection", GPError.DEVICE_ERROR, 0, "RequestForeignCertificate failed with : " + e);
	}

	this.response = response;

	var certlist = [];

	this.lastReturnCode = response.Result.ns1::returnCode.toString();

	if (this.lastReturnCode.substr(0, 3) == "ok_") {
		GPSystem.log(GPSystem.INFO, module.id, "Received certificates:");
		for each (var c in response.Result.ns1::certificateSeq.ns1::certificate) {
			var cvc = new ByteString(c, BASE64);
			certlist.push(cvc);
			GPSystem.log(GPSystem.INFO, module.id, cvc);
		}
	} else {
		return null;
	}

	return certlist;
}



/**
 * Send a certificate to the DVCA
 *
 * @param {ByteString[]} certificates the list of certificates to post or null
 * @param {String} messageID the messageID for asynchronous requests (optional)
 * @param {String} statusInfo the statusInfo field of the message
 * @type String
 * @return the returnCode
 */
TAConnection.prototype.sendCertificates = function(certificates, messageID, statusInfo) {

	var soapConnection = new SOAPConnection();

	if (this.isCVCA) {
		var ns = new Namespace("uri:EAC-PKI-DV-Protocol/" + this.version);
	} else {
		var ns = new Namespace("uri:EAC-PKI-TermContr-Protocol/" + this.version);
	}

	var ns1 = new Namespace("uri:eacBT/" + this.version);

	if (this.version == "1.0") {
		var request =
			<ns:SendCertificates xmlns:ns={ns} xmlns:ns1={ns1}>
				<messageID>{messageID}</messageID>
				<statusInfo>{statusInfo}</statusInfo>
				<certificateSeq>
				</certificateSeq>
			</ns:SendCertificates>;
	} else {
		var request =
			<ns:SendCertificates xmlns:ns={ns} xmlns:ns1={ns1}>
				<messageID>
					<ns1:messageID>{messageID}</ns1:messageID>
				</messageID>
				<statusInfo>{statusInfo}</statusInfo>
				<certificateSeq>
				</certificateSeq>
			</ns:SendCertificates>;
	}

	var list = request.certificateSeq;

	if (certificates) {
		for (var i = 0; i < certificates.length; i++) {
			var cvc = certificates[i];
			list.certificate += <ns1:certificate xmlns:ns1={ns1}>{cvc.toString(BASE64)}</ns1:certificate>
		}
	}

	if (this.verbose) {
		GPSystem.log(GPSystem.INFO, module.id, request.toXMLString());
	}

	this.request = request;

	try	{
		var response = this.soapcon.call(this.url, request);
		if (this.verbose) {
			GPSystem.log(GPSystem.INFO, module.id, response.toXMLString());
		}
	}
	catch(e) {
		GPSystem.log(GPSystem.ERROR, module.id, "SOAP call to " + this.url + " failed : " + e);
		throw new GPError("TAConnection", GPError.DEVICE_ERROR, 0, "SendCertificates failed with : " + e);
	}

	this.response = response;

	this.lastReturnCode = response.Result.ns1::returnCode.toString();
	return this.lastReturnCode;
}



/**
 * Convert a list of certificates in binary format to a list of CVC objects
 *
 * @param {ByteString[]} certlist the list of certificates
 * @type CVC[]
 * @return the list of certificate objects
 */
TAConnection.toCVCList = function(certlist) {
	var certs = [];
	for each (var cvcbin in certlist) {
		certs.push(new CVC(cvcbin));
	}
	return certs;
}



/**
 * Convert a list of certificate objects into a list of certificates in binary format
 *
 * @param {CVC[]} certlist the list of certificate objects
 * @type ByteString[]
 * @return the list of certificates
 */
TAConnection.fromCVCList = function(certlist) {
	var certs = [];
	for each (var cvc in certlist) {
		certs.push(cvc.getBytes());
	}
	return certs;
}



TAConnection.test = function() {
	var c = new TAConnection("http://localhost:8080/se/dvca");
	c.verbose = true;
	var certlist = c.getCACertificates();
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Connector implementing a web service interface to a terminal control center as defined in TR-03129
 */


// Imports
CVC = require('scsh/eac/CVC').CVC;
PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;


/**
 * Creates a web service connector to access services of a terminal control center as defined in TR-03129
 *
 * @class Class implementing a terminal control center web service connector
 * @constructor
 * @param {String} url the web service endpoint
 */
function TCCConnection(url) {
	this.url = url;
	this.soapcon = new SOAPConnection();
	this.verbose = true;
	this.lastError = null;
	this.version = "1.1";
}

exports.TCCConnection = TCCConnection;


/**
 * Get the last error return code
 *
 * @returns the last error return code received or null if none defined
 * @type String
 */
TCCConnection.prototype.getLastError = function() {
	return this.lastError;
}



/**
 * Close the connector and release allocated resources
 */
TCCConnection.prototype.close = function() {
	this.soapcon.close();
}



/**
 * Obtain a list of card verifiable certificates that can be used to provide the MRTD with a chain of certificates
 * up to and including the terminal certificate.
 *
 * @param {PublicKeyReference} keyNameMRTD the certificate holder reference of the trust anchor used by the MRTD
 * @returns a lists of card verifiable certificates from root to terminal or null in case of error
 * @type CVC[]
 */
TCCConnection.prototype.getCertificateChain = function(keyNameMRTD) {
	default xml namespace = "";

	this.lastError = null;

	var ns = new Namespace("uri:EAC-PKI-TermContr-Protocol/" + this.version);
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	if (this.version == "1.0") {
		var request =
			<ns:GetCertificateChain xmlns:ns={ns} xmlns:ns1={ns1}>
				<keyNameMRTD>{keyNameMRTD.getBytes().toString(BASE64)}</keyNameMRTD>
			</ns:GetCertificateChain>
	} else {
		var request =
			<ns:GetCertificateChain xmlns:ns={ns} xmlns:ns1={ns1}>
				<keyCAR>{keyNameMRTD.getBytes().toString(BASE64)}</keyCAR>
			</ns:GetCertificateChain>
	}

	if (this.verbose) {
		GPSystem.trace(request.toXMLString());
	}

	var response = this.soapcon.call(this.url, request);

	if (this.verbose) {
		GPSystem.trace(response.toXMLString());
	}

	var certmap = [];

	if (response.Result.ns1::returnCode.toString() == "ok_cert_available") {
		if (this.verbose) {
			GPSystem.trace("Received certificates from TCC:");
		}
		for each (var c in response.Result.ns1::certificateSeq.ns1::certificate) {
			var cvc = new CVC(new ByteString(c, BASE64));
			certmap[cvc.getCAR().toString()] = cvc;
			if (this.verbose) {
				GPSystem.trace(cvc.getCAR().toString());
				GPSystem.trace(cvc);
			}
		}
	} else {
		this.lastError = response.Result.ns1::returnCode.toString();
		return null;
	}

	var certlist = [];

	var car = keyNameMRTD;
	var cvc = certmap[car.toString()];

	while (typeof(cvc) != "undefined") {
		certlist.push(cvc);
		if (this.verbose) {
			GPSystem.trace("Added: " + cvc);
		}
		car = cvc.getCHR()
		cvc = certmap[car.toString()]
	}

	return certlist;
}



/**
 * Obtain a signature from the TCC for a hash or a block of data
 *
 * @param {PublicKeyReference} keyCHR the key to be used for signing
 * @param {ByteString} digest the message digest or null if second variant is used
 * @returns the signature as a concatenation of coordinates on the curve or null in case of error
 * @type ByteString
 */
TCCConnection.prototype.getTASignature = function(keyCHR, digest) {
	default xml namespace = "";

	this.lastError = null;

	var ns = new Namespace("uri:EAC-PKI-TermContr-Protocol/" + this.version);
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request =
		<ns:GetTASignature xmlns:ns={ns} xmlns:ns1={ns1}>
			<hashTBS>
			</hashTBS>
			<idPICC>
			</idPICC>
			<challengePICC>
			</challengePICC>
			<hashPK>
			</hashPK>
			<auxPCD>
			</auxPCD>
			<keyCHR>{keyCHR.getBytes().toString(BASE64)}</keyCHR>
		</ns:GetTASignature>

	request.hashTBS.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{digest.toString(BASE64)}</ns1:binary>;

	if (this.verbose) {
		GPSystem.trace(request.toXMLString());
	}

	var response = this.soapcon.call(this.url, request);

	if (this.verbose) {
		GPSystem.trace(response.toXMLString());
	}

	var signature = null;

	if (response.Result.ns1::returnCode.toString() == "ok_signature_available") {
		var signatureStr = response.Result.ns1::Signature.toString();
		if (this.verbose) {
			GPSystem.trace("Received signature from TCC: " + signatureStr);
		}
		signature = new ByteString(signatureStr, BASE64);
		if (this.verbose) {
			GPSystem.trace("Received signature from TCC: " + signature);
		}
	} else {
		this.lastError = response.Result.ns1::returnCode.toString();
	}

	return signature;
}



/**
 * Obtain a signature from the TCC for a hash or a block of data
 *
 * @param {ByteString} idPICC the identifier of the MRTD
 * @param {ByteString} challengePICC the challenge of the MRTD
 * @param {ByteString} hashPK the hash value over the ephemeral public key of the terminal
 * @param {PublicKeyReference} keyCHR the key to be used for signing
 * @returns the signature as a concatenation of coordinates on the curve or null in case of error
 * @type ByteString
 */
TCCConnection.prototype.getTASignature2 = function(idPICC, challengePICC, hashPK, keyCHR) {
	default xml namespace = "";

	this.lastError = null;

	var ns = new Namespace("uri:EAC-PKI-TermContr-Protocol/" + this.version);
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request =
		<ns:GetTASignature xmlns:ns={ns} xmlns:ns1={ns1}>
			<hashTBS>
			</hashTBS>
			<idPICC>
			</idPICC>
			<challengePICC>
			</challengePICC>
			<hashPK>
			</hashPK>
			<auxPCD>
			</auxPCD>
			<keyCHR>{keyCHR.getBytes().toString(BASE64)}</keyCHR>
		</ns:GetTASignature>

	request.idPICC.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{idPICC.toString(BASE64)}</ns1:binary>;
	request.challengePICC.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{challengePICC.toString(BASE64)}</ns1:binary>;
	request.hashPK.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{hashPK.toString(BASE64)}</ns1:binary>;

	if (this.verbose) {
		GPSystem.trace(request.toXMLString());
	}

	var response = this.soapcon.call(this.url, request);

	if (this.verbose) {
		GPSystem.trace(response.toXMLString());
	}

	var signature = null;

	if (response.Result.ns1::returnCode.toString() == "ok_signature_available") {
		var signatureStr = response.Result.ns1::Signature.toString();
		if (this.verbose) {
			GPSystem.trace("Received signature from TCC: " + signatureStr);
		}
		signature = new ByteString(signatureStr, BASE64);
		if (this.verbose) {
			GPSystem.trace("Received signature from TCC: " + signature);
		}
	} else {
		this.lastError = response.Result.ns1::returnCode.toString();
	}

	return signature;
}



/**
 * For exception testing:
 * Send a GetTASignature where the request mixes option 1 and option 2.
 *
 * @param {PublicKeyReference} keyCHR the key to be used for signing
 * @param {ByteString} digest the message digest or null if second variant is used
 * @param {ByteString} idPICC the identifier of the MRTD
 * @param {ByteString} challengePICC the challenge of the MRTD
 * @param {ByteString} hashPK the hash value over the ephemeral public key of the terminal
 * @param {ByteString} auxPCD the auxiliary data of the terminal
 * @returns the signature as a concatenation of coordinates on the curve or null in case of error
 * @type ByteString
 */
TCCConnection.prototype.getTASignatureForExceptionTesting = function(keyCHR, digest, idPICC, challengePICC, hashPK, auxPCD) {
	default xml namespace = "";

	this.lastError = null;

	var ns = new Namespace("uri:EAC-PKI-TermContr-Protocol/" + this.version);
	var ns1 = new Namespace("uri:eacBT/" + this.version);

	var request =
		<ns:GetTASignature xmlns:ns={ns} xmlns:ns1={ns1}>
			<hashTBS>
			</hashTBS>
			<idPICC>
			</idPICC>
			<challengePICC>
			</challengePICC>
			<hashPK>
			</hashPK>
			<auxPCD>
			</auxPCD>
			<keyCHR>{keyCHR.getBytes().toString(BASE64)}</keyCHR>
		</ns:GetTASignature>

	request.hashTBS.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{digest.toString(BASE64)}</ns1:binary>;
	if (idPICC) {
		request.idPICC.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{idPICC.toString(BASE64)}</ns1:binary>;
	}
	if (challengePICC) {
		request.challengePICC.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{challengePICC.toString(BASE64)}</ns1:binary>;
	}
	if (hashPK) {
		request.hashPK.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{hashPK.toString(BASE64)}</ns1:binary>;
	}
	if (auxPCD) {
		request.auxPCD.ns1::binary = <ns1:binary xmlns:ns1={ns1}>{auxPCD.toString(BASE64)}</ns1:binary>;
	}

	if (this.verbose) {
		GPSystem.trace(request.toXMLString());
	}

	var response = this.soapcon.call(this.url, request);

	if (this.verbose) {
		GPSystem.trace(response.toXMLString());
	}

	var signature = null;

	if (response.Result.ns1::returnCode.toString() == "ok_signature_available") {
		var signatureStr = response.Result.ns1::Signature.toString();
		if (this.verbose) {
			GPSystem.trace("Received signature from TCC: " + signatureStr);
		}
		signature = new ByteString(signatureStr, BASE64);
		if (this.verbose) {
			GPSystem.trace("Received signature from TCC: " + signature);
		}
	} else {
		this.lastError = response.Result.ns1::returnCode.toString();
	}

	return signature;
}



/**
 * Perform a simple test
 */
TCCConnection.test = function(url, chr) {
	if (!url) {
		url = "http://localhost:8080/se/tcctr3129";
	}

	if (!chr) {
		chr = "UTCVCA00001";
	}

	var c = new TCCConnection(url);
	var chr = new PublicKeyReference(chr);

	var cl = c.getCertificateChain(chr);

	if (cl == null) {
		print("GetCertificateChain reports error: " + c.getLastError());
	}

	print("Received certificates:");
	for (var i = 0; i < cl.length; i++) {
		print(cl[i]);
	}

	// Extract terminal certificate, which is always the last in the list
	var tcert = cl[cl.length - 1];
	var chr = tcert.getCHR();

	var crypto = new Crypto();
	var message = new ByteString("Hello World", ASCII);

	var digest = crypto.digest(Crypto.SHA_256, message);

	var signature = c.getTASignature(chr, digest);

	if (signature == null) {
		print("GetTASignature reports error: " + c.getLastError());
		return;
	}

	print("Signature: " + signature);
	var signature = CVC.wrapSignature(signature);

	// Important: Test only works for fixed domain parameter !!!
	var dp = new Key();
	dp.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));

	var puk = tcert.getPublicKey(dp);
	var mech = CVC.getSignatureMech(tcert.getPublicKeyOID());

	print("Message: " + message);
	print("Hash: " + digest);

	print("Signature verification: " + crypto.verify(puk, mech, message, signature));
}

/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A Bitmap
 */

/**
 * Create a bit map for the given number of bits.
 *
 * @class Class implementing a bit map
 * @constructor
 * @param {Number} size the number of bits in the bit map.
 */
function Bitmap(size) {
	this.size = size;
	this.bits = [];
	size = (size - 1 >> 3) + 1;
	for (var i = 0; i < size; i++) {
		this.bits.push(0);
	}
}

exports.Bitmap = Bitmap;



/**
 * Get the bit value at the zero-based position.
 *
 * @param {Number} pos the zero-based position in the bit map.
 * @type Number
 * @return 0 or 1
 */
Bitmap.prototype.get = function(pos) {
	if (pos < 0 || pos >= this.size) {
		throw new Error("pos out of range");
	}
	return (this.bits[pos >> 3] >> 7 - (pos & 0xF)) & 1;
}



/**
 * Toggle the bit at the zero-based position.
 *
 * @param {Number} pos the zero-based position in the bit map.
 */
Bitmap.prototype.toggle = function(pos) {
	if (pos < 0 || pos >= this.size) {
		throw new Error("pos out of range");
	}
	this.bits[pos >> 3] ^= 0x80 >> (pos & 0x7);
}



/**
 * Determine the position of the first unset bit.
 *
 * @type Number
 * @return the zero-based position of -1
 */
Bitmap.prototype.determineFirstUnset = function() {
	for (var i = 0; i < this.bits.length; i++) {
		var a = this.bits[i];
		if (a != 0xFF) {
			for (var j = 0; j < 8 && ((i << 3) + j < this.size); j++) {
				if ((a & 0x80) == 0) {
					return (i << 3) + j;
				}
				a <<= 1;
			}
		}
	}
	return -1;
}



Bitmap.test = function() {
	var map = new Bitmap(2);
	assert(map.determineFirstUnset() == 0);
	assert(map.get(0) == 0);
	map.toggle(0);
	assert(map.get(0) == 1);
	assert(map.determineFirstUnset() == 1);
	map.toggle(1);
	assert(map.determineFirstUnset() == -1);

	map.toggle(0);
	assert(map.get(0) == 0);
	assert(map.determineFirstUnset() == 0);

	var map = new Bitmap(256);

	for (var i = 0; i < 257; i++) {
		var id = map.determineFirstUnset();
		if (id == -1) {
			assert(i == 256);
			break;
		}
		map.toggle(id);
		print(map.bits);
	}

	for (var i = 0; i < 256; i++) {
		map.toggle(i);
		print(map.bits);
	}
}



/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview
 * Simple CRL generator class
 */

var PKIXCommon = require("scsh/x509/PKIXCommon").PKIXCommon;



/**
 * Create a Certificate Revocation List (CRL) generator.
 *
 * @class Class implementing a CRL certificate generator
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider to use for signing operations
 */
function CRLGenerator(crypto) {
	this.crypto = crypto;
	this.reset();
}

exports.CRLGenerator = CRLGenerator;


CRLGenerator.unspecified = 0;
CRLGenerator.keyCompromise = 1;
CRLGenerator.cACompromise = 2;
CRLGenerator.affiliationChanged = 3;
CRLGenerator.superseded = 4;
CRLGenerator.cessationOfOperation = 5;
CRLGenerator.certificateHold = 6;
CRLGenerator.removeFromCRL = 8;
CRLGenerator.privilegeWithdrawn = 9;
CRLGenerator.aACompromise = 10;



/**
 * Resets all internal state variables.
 *
 */
CRLGenerator.prototype.reset = function() {
	this.extensions = [];
	this.revokedCertificates = [];
	this.nextUpdate = null;
}



/**
 * Sets the isser name.
 *
 * <p>The issuer name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * </pre>
 * @param {Object} issuer the issuer name
 */
CRLGenerator.prototype.setIssuer = function(issuer) {
	this.issuer = issuer;
}



/**
 * Sets the timestamp for this CRL
 *
 * @param {Date} datetime the current date and time
 */
CRLGenerator.prototype.setThisUpdate = function(datetime) {
	this.thisUpdate = datetime;
}



/**
 * Sets the timestamp for the next update
 *
 * @param {Date} datetime the date and time of the next update
 */
CRLGenerator.prototype.setNextUpdate = function(datetime) {
	this.nextUpdate = datetime;
}



/**
 * Sets the signature algorithm.
 *
 * @param {Number} alg the signature algorithm, must be one of Crypto.RSA, Crypto.RSA_SHA256 or Crypto.ECDSA_SHA256
 */
CRLGenerator.prototype.setSignatureAlgorithm = function(alg) {
	this.signatureAlgorithm = alg;
}



/**
 * Adds an extension to the CRL
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        critical    BOOLEAN DEFAULT FALSE,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *</pre>
 * @param {String} extnID the extensions object identifier
 * @param {Boolean} critical the extension is critical
 * @param {ByteString} the extension value as ByteString
 */
CRLGenerator.prototype.addExtension = function(extnID, critical, extnValue) {
	var t = new ASN1("extension", ASN1.SEQUENCE,
				new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	if (critical) {
		t.add(new ASN1("critical", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}

	t.add(new ASN1("extnValue", ASN1.OCTET_STRING, extnValue));
	this.extensions.push(t);

}



/**
 * Adds the authority public key identifier extension based on the issuers key.
 *
 * <p>The key identifier is calculated as SHA-1 hash over the contents of the
 * issuer public key (Without tag, length and number of unused bits.</p>
 */
CRLGenerator.prototype.addAuthorityKeyIdentifierExtension = function(publicKey) {
	if (publicKey.getComponent(Key.MODULUS)) {
		var spi = PKIXCommon.createRSASubjectPublicKeyInfo(publicKey);
	} else {
		var spi = PKIXCommon.createECSubjectPublicKeyInfo(publicKey, this.encodeECDomainParameter);
	}

	var keyvalue = spi.get(1).value.bytes(1);
	var hash = this.crypto.digest(Crypto.SHA_1, keyvalue);

	var t = new ASN1(ASN1.SEQUENCE,
					new ASN1(0x80, hash)
				);
	this.addExtension("id-ce-authorityKeyIdentifier", false, t.getBytes());
}



/**
 * Adds the CRL number extension.
 *
 */
CRLGenerator.prototype.addCRLNumberExtension = function(crlnumber) {
	var t = new ASN1(ASN1.INTEGER,
					PKIXCommon.convertUnsignedInteger(ByteString.valueOf(crlnumber))
				);
	this.addExtension("id-ce-cRLNumber", false, t.getBytes());
}



/**
 * Add a revoked certificate to the list. This adds the complete DER encoded structure.
 *
 * @param {ASN1} revokedCertificate the information related to the revoked certificate
 */
CRLGenerator.prototype.addRevokedCertificate = function(revokedCertificate) {
	this.revokedCertificates.push(revokedCertificate);
}



CRLGenerator.prototype.createInvalidityDateExt = function(invalidityDate) {
	var t = new ASN1("extension", ASN1.SEQUENCE,
			new ASN1("extnID", ASN1.OBJECT_IDENTIFIER,
				 new ByteString("id-ce-invalidityDate", OID)));

	var extnValue = new ASN1("invalidityDate", ASN1.GeneralizedTime,
				 new ByteString(PKIXCommon.dtoUTCFullYear(invalidityDate), ASCII));

	t.add(new ASN1("extnValue", ASN1.OCTET_STRING, extnValue.getBytes()));

	return t;
}


/**
 * Add a revoked certificate to the list. This adds the complete DER encoded structure.
 *
 * @param {ByteString} serial the serial number of the certificate to revoke
 * @param {Date} timestamp the revocation time, optional, default is now
 * @param {Number} reason the revocation reason
 * @param {ASN1} ext the crl entry extensions
 */
CRLGenerator.prototype.revokeCertificate = function(serial, timestamp, reason, ext) {
	if (typeof(timestamp) == "undefined") {
		timestamp = new Date();
	}
	var t = new ASN1("revokedCertificate", ASN1.SEQUENCE,
				new ASN1("userCertificate", ASN1.INTEGER, PKIXCommon.convertUnsignedInteger(serial)),
				new ASN1("revocationTime", ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(timestamp), ASCII))
				);

	if (typeof(ext) == "undefined") {
		ext = new ASN1("crlExtensions", ASN1.SEQUENCE);
	}

	if ((typeof(reason) != "undefined") && (reason != -1)) {
		ext.add(new ASN1("reason", ASN1.SEQUENCE,
					new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString("id-ce-cRLReasons", OID)),
					new ASN1("extnValue", ASN1.OCTET_STRING,
						(new ASN1("cRLReason", ASN1.ENUMERATED, ByteString.valueOf(reason))).getBytes())
					)
				);
	}

	if (ext.length > 0) {
		t.add(ext);
	}

	this.revokedCertificates.push(t);
}



/**
 * Load list of revoked certificates from an existing CRL
 *
 * @param {ByteString} crlbin the DER encoded CRL
 * @type Number
 * @return the value of the CRLNumber extension, 0 if extension not defined or -1 if file could not be loaded
 */
CRLGenerator.prototype.loadCRLEntries = function(crlbin) {
	var crlnumber = 0;

	try	{
		var crl = new ASN1(crlbin);
		print(crl);
		var tbs = crl.get(0);
		var i = 0;
		if ((i < tbs.elements) && (tbs.get(i).tag == ASN1.INTEGER)) {		// Skip version if present
			i++;
		}
		i += 3;		// Skip signature, issuer, thisUpdate
		if ((i < tbs.elements) && (tbs.get(i).tag == ASN1.UTCTime)) {		// nextUpdate if present
			i++;
		}
		if ((i < tbs.elements) && (tbs.get(i).tag == ASN1.SEQUENCE)) {
			for (var j = 0; j < tbs.get(i).elements; j++) {
				this.revokedCertificates.push(tbs.get(i).get(j));
			}
			i++;
		}
		if ((i < tbs.elements) && (tbs.get(i).tag == 0xA0)) {
			var l = tbs.get(i).get(0);
			var oid = new ByteString("id-ce-cRLNumber", OID);
			for (var j = 0; j < l.elements; j++) {
				var ext = l.get(j);
				if (ext.get(0).value.equals(oid)) {
					var extval = new ASN1(ext.get(1).value);
					crlnumber = extval.value.toUnsigned();
				}
			}

		}
	}
	catch(e) {
		GPSystem.trace(e);
		return -1;
	}
	return crlnumber;
}



/**
 * Gets the issuer name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
CRLGenerator.prototype.getIssuer = function() {
	if (this.issuer instanceof ASN1) {
		return this.issuer;
	} else {
		return PKIXCommon.encodeName(this.issuer);
	}
}



/**
 * Gets the thisUpdate TLV object
 *
 * @return the thisUpdate UTC encoded time
 * @type ASN1
 */
CRLGenerator.prototype.getThisUpdate = function() {
	var t = new ASN1("thisUpdate", ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(this.thisUpdate), ASCII));
	return t;
}



/**
 * Gets the nextUpdate TLV object
 *
 * @return the nextUpdate UTC encoded time
 * @type ASN1
 */
CRLGenerator.prototype.getNextUpdate = function() {
	var t = new ASN1("nextUpdate", ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(this.nextUpdate), ASCII));
	return t;
}



/**
 * Gets the signature algorithm TLV object
 *
 * @return the signature algorithm object
 * @type ASN1
 */
CRLGenerator.prototype.getSignatureAlgorithm = function() {
	return PKIXCommon.encodeSignatureAlgorithm(this.signatureAlgorithm);
}



/**
 * Gets revoked certificates
 *
 * @return the list of revoked certificates
 * @type ASN1
 */
CRLGenerator.prototype.getRevokedCertificates = function() {
	var t = new ASN1("revokedCertificates", ASN1.SEQUENCE);
	for (var i = 0; i < this.revokedCertificates.length; i++) {
		t.add(this.revokedCertificates[i]);
	}
	return t;
}



/**
 * Gets the CRL extension as TLV object
 *
 * @return the CRL extensions
 * @type ASN1
 */
CRLGenerator.prototype.getExtensions = function() {
	var t = new ASN1("extensions", 0xA0);
	var s = new ASN1("extensions", ASN1.SEQUENCE);

	t.add(s);

	for (var i = 0; i < this.extensions.length; i++) {
		s.add(this.extensions[i]);
	}
	return t;
}



/**
 * Gets the part of the CRL that will be signed
 *
 * @return the TBSCertificate part
 * @type ASN1
 */
CRLGenerator.prototype.getTbsCertificateList = function() {
	var t = new ASN1("tbsCertList", ASN1.SEQUENCE);
	t.add(new ASN1("version", ASN1.INTEGER, new ByteString("01", HEX)));
	t.add(this.getSignatureAlgorithm());
	t.add(this.getIssuer());
	t.add(this.getThisUpdate());
	if (this.nextUpdate != null) {
		t.add(this.getNextUpdate());
	}
	if (this.revokedCertificates.length > 0) {
		t.add(this.getRevokedCertificates());
	}
	if (this.extensions.length > 0) {
		t.add(this.getExtensions());
	}
	return t;
}



/**
 * Generates the certificate.
 *
 * @return the generated certificate
 * @type X509
 */
CRLGenerator.prototype.generateCRL = function(privateKey) {
	var certlist = new ASN1("certificateList", ASN1.SEQUENCE);

	var tbs = this.getTbsCertificateList();
	certlist.add(tbs);
	certlist.add(this.getSignatureAlgorithm());

	var signature = this.crypto.sign(privateKey, this.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString("00", HEX)).concat(signature);

	var signatureValue = new ASN1("signatureValue", ASN1.BIT_STRING, signature);
	certlist.add(signatureValue);

	return certlist;
}



CRLGenerator.test = function() {

	var crypto = new Crypto();

	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setSize(1024);

	crypto.generateKeyPair(Crypto.RSA, caPublicKey, caPrivateKey);

	var x = new CRLGenerator(crypto);

	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = [{ C:"UT" },{ O:"ACME Corporation" },{ CN:"Test-CA" }];
	x.setIssuer(issuer);
	var now = new Date();
	x.setThisUpdate(now);
	var nextMonth = new Date();
	nextMonth.setMonth((now.getMonth() + 1) % 12);
	x.setNextUpdate(nextMonth);
	x.addAuthorityKeyIdentifierExtension(caPublicKey);
	x.addCRLNumberExtension(11);

	x.revokeCertificate(new ByteString("01", HEX));
	x.revokeCertificate(new ByteString("80", HEX), new Date());
	x.revokeCertificate(new ByteString("80", HEX), new Date(), CRLGenerator.keyCompromise);
	x.revokeCertificate(new ByteString("80", HEX), new Date(), CRLGenerator.superseded, new ASN1("crlExtensions", ASN1.SEQUENCE));

	var extensions = new ASN1("crlExtensions", ASN1.SEQUENCE);
	extensions.add(x.createInvalidityDateExt(new Date()));
 	x.revokeCertificate(new ByteString("80", HEX), new Date(), CRLGenerator.superseded, extensions);

	var crl = x.generateCRL(caPrivateKey);

	var fn = GPSystem.mapFilename("crl.crl", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, crl.getBytes());

	print(crl);

	var x = new CRLGenerator(crypto);
	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = [{ C:"UT" },{ O:"ACME Corporation" },{ CN:"Test-CA" }];
	x.setIssuer(issuer);
	var now = new Date();
	x.setThisUpdate(now);
	var nextMonth = new Date();
	nextMonth.setMonth((now.getMonth() + 1) % 12);
	x.setNextUpdate(nextMonth);
	var crlnumber = x.loadCRLEntries(crl.getBytes());
	assert(crlnumber == 11);
	x.addAuthorityKeyIdentifierExtension(caPublicKey);
	x.addCRLNumberExtension(crlnumber + 1);

	x.revokeCertificate(crypto.generateRandom(8), new Date(), CRLGenerator.keyCompromise);
	var crl = x.generateCRL(caPrivateKey);
//	PKIXCommon.writeFileToDisk(fn, crl.getBytes());

	print(crl);
}


          democa  5L  00
+* |,8[7|E0	ӳq(W &s
ae rw{;k5RBMm4+Z/g&R"?qtۼSƢ!o,S,rf62ʬu.o}jihLVzqp'.Z`U)FX.AE5W:V'ѿ.YS"E!?f);""{ɈI`K-oSRusQu[Ѿ+#@xm3s3
?e 0My}F\DK#\LuO݆@
V-kYK1G뻼ç*I
}$G'To0ٰ8XTQ#[DA
5r1
b SƏnkk".Q{OXJFQ$z-"YC%';}ꍀ C59+hd=CݧcU5"j;iվ*@e	!23zUDkEg*j蠡<Ϊ̟fc]%m3>KjcxL7 o;8aغG+ dqQ35ZJ\z%/E~e8I~glWr߻hv[UPNh~!qy#lBk[;̔{
)hr)Xe/7A'h}C7F>_.~#[ѧA`B֗ŬsrAe\NU\벘ЅΞcN<cJ4Y땾 :pL w&M`u_`f4嫝zxu{
A4w&׏\tVU"'ׇ16RښiY7s@N'Z`	 !'u@E;(^'Q:[$MsdpBѲ<)YPQJŠOjbk|8w%rKx=nz]1+r|s
lR=cLvpW=l'-S4Y3ǵmRIK|<~l""N`j9DČ|O'_ v&F&ېp5ي 
BͨD>ׅbɽDkmMp˝M	E4vE0ƈ[W\ fBt K*jpǇt    X.509  r0n0V=0
	*H
 0C10	UDE10U
CardContact10UCardContact Demo CA 10
120224142127Z
220221142127Z0C10	UDE10U
CardContact10UCardContact Demo CA 10"0
	*H
  0
 }hz܊_2"Syt~´0VmC"Pb9L+;ެnirVQ;5-U]&wv.-gF#t8Nk7V	C9+zlZ^x'||aGrx~hЏWGpn
{^bƆ6)44
nv2~> ,a3}rNWt{}fJ<7p{ĴF+F f0d0UˢeDd*zWe{0U#0ˢeDd*zWe{0U0U00
	*H
  El8
_= >]vw_
F)6`íw|&{(_ѝ̒<?Eք[(sh$Pq=n>|ٴh;XF	?Qۭ&vd4鲱JLP 
SkN'q>t
l93}]tT+UXOk>EguqC!ȋ_yJo`t4kjBj5lx~f#zWthqrE^
*$d_eQIlܘnoZB]Ρ`E&-r1{0;0	*H
00
	*H


0
0N*H

00)
*H
055HiϵG> PmWm!OMk}]sЧZP-3ۺWae~Be<8Ц$fc
Zb
"L$D&o[?^CTtH&!dʿx$DFʇ}hXͧ' q,1lgQsK1bôkR@W}{fToWw`v	
)zYNŕĳj 0>]be,\|ȯoeySlS)#2dOQ vuLοWˮd7S
+OT揋;ٛ\#ZA@$Vح~꓄rmvFWdL
5=n>* lypw,!O-5Kʏaob64q]SܘɰMN|=g8&5vvPcƫ^TQl9}e]EEߢ8Lwf{Or`pU];(>5.-eF9
͂ˮ:ԟw+mjp@)W.M>6CR0-#[IWtmhUqb:Ǌԭ;/
ђ[~Ruvba׵^0@%`0dL5{8f[C'_kN~ll',e#GFC(Zٸ9fbDhZim-]3.B6;gM, "׽?
U|䍒zFյw	xb~KivH
h
B+
uå5w@}"]Jiu!c[Y
Ɋ?8,#`]liľw2B
6dQt
HP/vtwȇzK.ܩ
L/e4[By#c[r
6/3ݶlMQ_wʉ!c$4^ޢq 	v?>ag`r_û*<pTZ*_=l6u97.}	v+}c_V	1VvN@Lhՙ%x6g;SNݽ\dJhmK1ᑊ<(wl
^HSnc@V+Aj3jJ^_ 1ImېRH__^1ԡQbn#|se<<@!hURm1@0	*H
	1 d e m o c a0!	*H
	1Time 15998240775250L*H

00)
*H
0BA!0kEO6a/ Prkx{8t"IJ$Y{S򗞮4NiNg╝G	V87a:Tƈ=Ph>,s$-,hE9>c]?J_dߚ_CJv@=fmU{UufH`,Sx>@d\FxJ5JC7,-˙R`zptrm3kpTMhpnQs#INr=98)mjZ
)˽	=Ѣ;G@mHI>]!^}wg%FKna0j2֤5PF4R1(~,jNz-f'X엵Z(:cԍЯ0EGIǕwOaވS{x?gd/_Ga(\dۖs&@aUKUy1;0:,.XN1&ܼ`fmh_s]0*d@:R7 ~-#zVK1g2*dOkźqR2б;O?`<
&0-󡉅#Y &4Cq>5
#-EuঢeWQۛs";-.^9Iݶ7a4&X
b Ηw(2\rAөuc9ylE8}֜4-B@h$x0mrt8CEYGVDL7ݷ-d.~J/ph5Bd7]vj)ѵyǽM-c={cDH(}e
%@f^X6:*TKT
e4BnegGv<ɔ7Vʪԃ :OFQe8jK(?Ly־vNN Ƶu<2FH0o
ȭ~&l:>TMn8\s<SjÝhtrO5 +-׺,f>Tx՛|pS8N^pņ6m _IBߋ@IMfҐzY2v[H$$[:#?f$r~.gTX
bD1®mn/0{\%ML%]q;IE9&Jv+D0
o	76^Qk9p	^5U3_1>0	*H
	1
 s u b c a0!	*H
	1Time 15998240777470	*H

0	 0	*H
0)
*H
0z ͍J#vGC P8HI;aH<G$M#v2Р
V	A'1˽0]~Yz6,ğVq8D*գ<z㠤2Q;j<0F饈йMQ37UiI2:a$cC1qd3WR;`]i_	;1(SmLb<:cQ+{j:"dECɼ[=tLK4mJ3G\0VFNo)KJ36p'rGSG\5L7Vd{?-6)u}hlj(P|gFI߿UwW̵.1ڣ:Nl6lcӿh4[s{*H, 	$}
u Sby$Z5p|<r! f<e_bfhgp6F!X
SE2a_^#s @-įfG	jz&RE/*Se-T
R0JBD4f
	qOtN	ξxTs/)O3gJ{֢Vi"JzcIG{
v:]%\x˞/?ң:}XTb\'('m-P5=E<aˡe_	:MqY;TC;XDռK0nW[oݾG
+4< j;tEapU1Y:4&,8~nϸ(հmh*iB:z 
/{O1!Ee)dЍcybx*{׈.J)PO0TN'ed~vԜ6g=C<gҩ'xGs7b8SAR8ֳA^w3
n>R_	r6.^KxEO:~i<d
d_`
a\7rؗxPCs0xR2No)edIuH'p{:Pc<#j\$
rޯ{9%,gb7I$
APpkŔշ
\\]sYb]/lkƿ#iSg/	^B}
Gɘ-y<c:4,R\\dG?G=ֲ5PcqKfi:lhPz~OT[c&Ts,6+u4LLeҰáO8%ƥ^Њ2|ƛpbEɄQa/sAjb3|9$l<0nf(񿲷M/
؞g*1Vns:WtժA~5|v]5Tħ$ϜuI|Fg0s(W]ӿt"ycx.qӄ·䞫R  r|7!BMdɃ/+Z7PmAd^9gKkI&S+h`bf	Ӿ{<E\K&o-~T d*&l
!Eû,l50d~F
/"/.JeOiX3	|j!7;[a-)3N\<LFGvnÌۯ+؉6Ʀq6o=`HVs#iKPv;2
L6м:-Ni|s,+ ceqZky{~I+rb98m(9Po^ԤgYMYH1tqDS|ɀcR\ 1PmTѕC0ʃG&Iq
@Ej7^X<og:*Eճ(	T	*W\(O㾊/-1~>GXm`%
p&0>0!0	+ `]]+(E5Mר5'$MRW<a)HRN/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Encoder for Distinguished Names using input data and a mask
 */

var PKIXCommon			= require("scsh/x509/PKIXCommon").PKIXCommon;



/**
 * An instance of this class allow generating a Distinguished Name from components
 * defined in the mask given as constructor. The mask may contain placeholders in the
 * form ${major.minor} that are resolved against other DNs and objects set with setDN() or
 * setMap().
 *
 * @constructor
 * @param {String} mask the mask for generating the DN
 */
function DNEncoder(mask) {
	this.dnmask = PKIXCommon.parseDN(mask);
	this.dnmap = {};
	this.objmap = {};
}

exports.DNEncoder = DNEncoder;



/**
 * Register a DN under the given name. Elements in the DN can be referenced by ${major.minor}
 * with major set to the name given as argument and minor being the component in the given DN.
 *
 * @param {String} name the name for the major key
 * @param {String/Object} dn the Distinguished Name given as String or in the format returned by PKIXCommon.parseDN.
 */
DNEncoder.prototype.setDN = function(name, dn) {
	if (typeof(dn) == "string") {
		dn = PKIXCommon.parseDN(dn);
	}
	this.dnmap[name] = dn;
}



/**
 * Register an object and it properties the given name. Elements in the object can be referenced by ${major.minor}
 * with major set to the name given as argument and minor being the member of the given object.
 *
 * @param {String} name the name for the major key
 * @param {Object} map the map object
 */
DNEncoder.prototype.setMap = function(name, map) {
	this.objmap[name] = map;
}



/**
 * Replace key with value from DN
 * @private
 * @param {Object} o the DN object
 * @param {String} major the major key value
 * @param {String} minor the minor key value
 * @type String
 * @return the replacement value
 */
DNEncoder.prototype.replaceFromDN = function(o, major, minor) {
	var v = PKIXCommon.findRDN(o, minor.toUpperCase());
	if (!v) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Element " + minor + " not found in " + major);
	}
	return v;
}



/**
 * Replace key with value from object
 * @private
 * @param {Object} o the object
 * @param {String} major the major key value
 * @param {String} minor the minor key value
 * @type String
 * @return the replacement value
 */
DNEncoder.prototype.replaceFromObject = function(o, major, minor) {
	if (typeof(o[minor]) == "undefined") {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "Element " + minor + " not found in " + major);
	}
	return o[minor];
}



/**
 * Replace key
 * @private
 * @param {String} key the in the format ${major.minor}
 * @type String
 * @return the replacement value
 */
DNEncoder.prototype.replace = function(key) {
	var r = /\$\{(\w+)\.(\w+)\}/.exec(key);
	if (r == null) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "The expression " + key + " is not valid");
	}

	var major = r[1];
	var minor = r[2];

	var o = this.dnmap[major];
	if (typeof(o) != "undefined") {
		return this.replaceFromDN(o, major, minor);
	} else {
		var o = this.objmap[major];

		if (typeof(o) != "undefined") {
			return this.replaceFromObject(o, major, minor);
		} else {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "Unknown major key " + major);
		}
	}
}



/**
 * Check key for validity
 * @private
 * @param {String} key the in the format ${major.minor}
 */
DNEncoder.prototype.check = function(key) {
	var r = /\$\{(\w+)\.(\w+)\}/.exec(key);
	if (r == null) {
		throw new GPError(module.id, GPError.INVALID_DATA, 0, "The expression " + key + " is not valid");
	}

	var major = r[1];
	var minor = r[2];

	var o = this.dnmap[major];
	if (typeof(o) != "undefined") {
		if (PKIXCommon.validRDN.indexOf(minor.toUpperCase()) == -1) {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, minor + " is not a supported RDN (Valid RDNs are " + PKIXCommon.validRDN + ")");
		}
	} else {
		var o = this.objmap[major];

		if (typeof(o) != "undefined") {
			if ((typeof(o.any) == "undefined") && (typeof(o[minor]) == "undefined")) {
				throw new GPError(module.id, GPError.INVALID_DATA, 0, "Unknown minor key " + minor);
			}
		} else {
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "Unknown major key " + major);
		}
	}
	return "";
}



/**
 * Iterate replacement strings
 * @private
 *
 * @param {String} func the name of the replacement function
 */
DNEncoder.prototype.iterate = function(func) {
	var dn = [];

	for (var i = 0; i < this.dnmask.length; i++) {
		var rdn = this.dnmask[i];
		var nrdn = {};
		for (var k in rdn) {
			var inp = rdn[k];
//			print(k + "=" + inp);
			var fixed = inp.split(/\$\{.+?\}/);
//			print("Fixed[" + fixed.length + "]: " + fixed);
			var keys = inp.match(/\$\{.+?\}/g);
			if (keys == null) {
				keys = [];
			}
//			print("Keys[" + keys.length + "] : " + keys);

			var res = "";
			for (var c = 0; c < (fixed.length + keys.length); c++) {
				if ((c & 1) == 0) {
					res += fixed[c >> 1];
				} else {
					res += this[func](keys[c >> 1]);
				}
			}
			nrdn[k] = res;
		}
		dn.push(nrdn);
	}
	return dn;
}



/**
 * Encode DN based on mask and previously set objects
 *
 * @type Object
 * @return DN in the format as returned by PKIXCommon.parseDN()
 */
DNEncoder.prototype.encode = function() {
	return this.iterate("replace");
}



/**
 * Validate DN mask against previously set reference objects
 *
 * DN objects can be set with setDN(name, {}). The minor key is validated against the list of
 * valid RDN as defined in PKIXCommon.validRDN.
 *
 * Other objects can be set with setMap(), but only the key names in the map are relevant. If the
 * object contains the property "any", then any minor keys are acceptable.
 *
 * The method will throw an exception if a key is invalid.
 */
DNEncoder.prototype.validate = function() {
	return this.iterate("check");
}



DNEncoder.test = function() {
	var d = new DNEncoder("c=${issuer.c},o=${issuer.o},cn=ABC ${issuer.o}${servicerequest.commonName} DEF");

	d.setDN("issuer", "c=UT,o=ACME,cn=ACME Root CA");

	var sr = {
		commonName: "Hello"
	};

	d.setMap("servicerequest", sr);

	d.validate();
	print(PKIXCommon.dnToString(d.encode()));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A PKCS#10 generator class based on RFC5280
 */

var PKIXCommon = require('scsh/x509/PKIXCommon').PKIXCommon;



/**
 * Create a PKCS#10 certificate request
 *
 * @class Class implementing a PKCS#10 certificate request
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider to use for signing operations
 */
function PKCS10Generator(crypto) {
	this.crypto = crypto;
	this.reset();
}

exports.PKCS10Generator = PKCS10Generator;



/**
 * Resets all internal state variables.
 *
 */
PKCS10Generator.prototype.reset = function() {
	this.extensions = new Array();
	this.attributes = new Array();
}



/**
 * Sets the subject name.
 *
 * <p>The subject name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 * </pre>
 * @see PKIXCommon.encodeName()
 *
 * The subject can also be passed an already encoded ASN.1 structure
 *
 * @param {Object} subject the subject name
 */
PKCS10Generator.prototype.setSubject = function(subject) {
	this.subject = subject;
}



/**
 * Sets the subjects public key
 *
 * <p>The methods accepts ECC and RSA Public Keys.</p>
 *
 * @param {Key} publicKey the subjects public key
 */
PKCS10Generator.prototype.setPublicKey = function(publicKey) {
	this.publicKey = publicKey;
}



/**
 * Sets the signature algorithm. Currently only Crypto.RSA is supported
 *
 * @param {Number} alg the signature algorithm, only Crypto.RSA supported
 */
PKCS10Generator.prototype.setSignatureAlgorithm = function(alg) {
	this.signatureAlgorithm = alg;
}



/**
 * Adds an extension to the certificate
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *</pre>
 * @param {String} extnID the extensions object identifier
 * @param {ByteString} the extension value as ByteString
 */
PKCS10Generator.prototype.addExtension = function(extnID, extnValue) {
	var t = new ASN1("extension", ASN1.SEQUENCE,
				new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	t.add(new ASN1("extnValue", ASN1.OCTET_STRING, extnValue));
	this.extensions.push(t);
}



/**
 * Adds the key usage extension.
 *
 * <p>The following flags are defined:</p>
 * <pre>
 * PKCS10Generator.digitalSignature = 0x0080;
 * PKCS10Generator.nonRepudiation   = 0x0040;
 * PKCS10Generator.keyEncipherment  = 0x0020;
 * PKCS10Generator.dataEncipherment = 0x0010;
 * PKCS10Generator.keyAgreement     = 0x0008;
 * PKCS10Generator.keyCertSign      = 0x0004;
 * PKCS10Generator.cRLSign          = 0x0002;
 * PKCS10Generator.encipherOnly     = 0x0001;
 * PKCS10Generator.decipherOnly     = 0x8000;
 * </pre>
 * @param {Number} the key usage flags as combination of the flags defined above.
 */
PKCS10Generator.prototype.addKeyUsageExtension = function(flags) {
	var t = new ASN1(ASN1.BIT_STRING, PKIXCommon.bitstringForInteger(flags));
	this.addExtension("2.5.29.15", t.getBytes());
}

// Deprecated: Use PKIXCommon. instead
PKCS10Generator.digitalSignature	= 0x0080;
PKCS10Generator.nonRepudiation		= 0x0040;
PKCS10Generator.keyEncipherment		= 0x0020;
PKCS10Generator.dataEncipherment	= 0x0010;
PKCS10Generator.keyAgreement		= 0x0008;
PKCS10Generator.keyCertSign		= 0x0004;
PKCS10Generator.cRLSign			= 0x0002;
PKCS10Generator.encipherOnly		= 0x0001;
PKCS10Generator.decipherOnly		= 0x8000;



/**
 * Adds extended key usages
 *
 * @param {String[]} the list of extended key usage object identifier
 */
PKCS10Generator.prototype.addExtendedKeyUsageExtension = function(keyusages) {
	var t = new ASN1(ASN1.SEQUENCE);
	for (var i = 0; i < keyusages.length; i++) {
		t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(keyusages[i], OID)));
	}
	this.addExtension("id-ce-extKeyUsage", t.getBytes());
}



/**
 * Adds the BasicConstraints extension.
 *
 * @param {Boolean} cA the certificate belongs to a CA
 * @param {Number} pathLenConstraint the maximum number of subordinate CA certificates
 */
PKCS10Generator.prototype.addBasicConstraintsExtension = function(cA, pathLenConstraint) {
	var t = new ASN1("BasicConstraints",ASN1.SEQUENCE);
	if (cA) {
		t.add(new ASN1("cA", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}
	if (pathLenConstraint >= 0) {
		var bb = new ByteBuffer();
		bb.append(pathLenConstraint);
		t.add(new ASN1("pathLenConstraint", ASN1.INTEGER, bb.toByteString()));
	}
	this.addExtension("2.5.29.19", t.getBytes());
}



/**
 * Gets the subject name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
PKCS10Generator.prototype.getSubject = function() {
	if (this.subject instanceof ASN1) {
		return this.subject;
	}
	return PKIXCommon.encodeName(this.subject);
}



/**
 * Gets the subject's public key as TLV object
 *
 * @return the subject's public key info
 * @type ASN1
 */
PKCS10Generator.prototype.getSubjectPublicKeyInfo = function() {
	if (this.publicKey.getComponent(Key.MODULUS)) {
		return PKIXCommon.createRSASubjectPublicKeyInfo(this.publicKey);
	} else {
		return PKIXCommon.createECSubjectPublicKeyInfo(this.publicKey, this.encodeECDomainParameter);
	}
}



/**
 * Gets the extension attribute as TLV object
 *
 * @return the certificate extensions
 * @type ASN1
 */
PKCS10Generator.prototype.getExtensions = function() {
	var t = new ASN1("extensions", ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549 1 9 14", OID)));
	var s = new ASN1("extensions", ASN1.SET);
	t.add(s);
	var l = new ASN1("extensions", ASN1.SEQUENCE);
	s.add(l);

	for (var i = 0; i < this.extensions.length; i++) {
		l.add(this.extensions[i]);
	}
	return t;
}



/**
 * Gets the attributes as TLV object
 *
 * @return the request attributes
 * @type ASN1
 */
PKCS10Generator.prototype.getAttributes = function() {
	var t = new ASN1("attributes", 0xA0);

	if (this.extensions.length > 0) {
		t.add(this.getExtensions());
	}

	for (var i = 0; i < this.attributes.length; i++) {
		t.add(this.attributes[i]);
	}

	return t;
}



/**
 * Gets the part of the request that will be signed
 *
 * @return the TBSCertificate part
 * @type ASN1
 */
PKCS10Generator.prototype.getTbsRequest = function() {
	var t = new ASN1("certificationRequestInfo", ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX)));
	t.add(this.getSubject());
	t.add(this.getSubjectPublicKeyInfo());
	t.add(this.getAttributes());
	return t;
}



/**
 * Generates the certificate.
 *
 * @return the generated certificate
 * @type ASN1
 */
PKCS10Generator.prototype.generateCertificationRequest = function(privateKey) {
	var request = new ASN1("certificationRequest", ASN1.SEQUENCE);

	var tbs = this.getTbsRequest();
	request.add(tbs);
	request.add(PKIXCommon.encodeSignatureAlgorithm(this.signatureAlgorithm));

	var signature = this.crypto.sign(privateKey, this.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString("00", HEX)).concat(signature);

	var signatureValue = new ASN1("signatureValue", ASN1.BIT_STRING, signature);
	request.add(signatureValue);

	return request;
}



PKCS10Generator.test = function() {

	var crypto = new Crypto();

	var reqPrivateKey = new Key();
	reqPrivateKey.setType(Key.PRIVATE);

	var reqPublicKey = new Key();
	reqPublicKey.setType(Key.PUBLIC);
	reqPublicKey.setSize(1024);

	crypto.generateKeyPair(Crypto.RSA, reqPublicKey, reqPrivateKey);

	var x = new PKCS10Generator(crypto);

	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);

	var subject = [{C:"UT"}, {O:"Utopia CA"}, {OU:"ACME Corporation"}, {CN:"Joe Doe"} ];

	x.setSubject(subject);

	x.setPublicKey(reqPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );

	var req = x.generateCertificationRequest(reqPrivateKey);
	var fn = GPSystem.mapFilename("cert.csr", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, req.getBytes());

	print(req);

	return req;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Common classes and functions for PKIX
 */



/**
 * Common functions and constants
 */
function PKIXCommon() {
}

exports.PKIXCommon = PKIXCommon;


PKIXCommon.digitalSignature	= 0x0080;
PKIXCommon.nonRepudiation	= 0x0040;
PKIXCommon.keyEncipherment	= 0x0020;
PKIXCommon.dataEncipherment	= 0x0010;
PKIXCommon.keyAgreement		= 0x0008;
PKIXCommon.keyCertSign		= 0x0004;
PKIXCommon.cRLSign		= 0x0002;
PKIXCommon.encipherOnly		= 0x0001;
PKIXCommon.decipherOnly		= 0x8000;



/**
 * Convert integer to fixed length string with leading zeros.
 *
 * @private
 * @param {Number} value the value to convert to a string.
 * @param {Number} digits the number of digits in output string. Must be <= 20.
 * @return the 0-padded string
 * @type String
 */
PKIXCommon.itos = function(value, digits) {
	if (digits > 20) {
		throw new Error("Digits must be <= 20");
	}
	var str = "" + value;
	str = "0000000000000000000".substr(19 - (digits - str.length)).concat(str);
	return str;
}



/**
 * Convert date and time to UTC string with format YYMMDDHHMMSSZ.
 *
 * @param {Date} d the date object.
 * @return the date/time string.
 * @type String
 */
PKIXCommon.dtoUTC = function(d) {
	var s = PKIXCommon.itos(d.getUTCFullYear() % 100, 2) +
			PKIXCommon.itos(d.getUTCMonth() + 1, 2) +
			PKIXCommon.itos(d.getUTCDate(), 2) +
			PKIXCommon.itos(d.getUTCHours(), 2) +
			PKIXCommon.itos(d.getUTCMinutes(), 2) +
			PKIXCommon.itos(d.getUTCSeconds(), 2) + "Z";
	return s;
}



/**
 * Convert date and time to UTC string with format YYYYMMDDHHMMSSZ.
 *
 * @param {Date} d the date object.
 * @return the date/time string.
 * @type String
 */
PKIXCommon.dtoUTCFullYear = function(d) {
	var s = 	d.getUTCFullYear() +
			PKIXCommon.itos(d.getUTCMonth() + 1, 2) +
			PKIXCommon.itos(d.getUTCDate(), 2) +
			PKIXCommon.itos(d.getUTCHours(), 2) +
			PKIXCommon.itos(d.getUTCMinutes(), 2) +
			PKIXCommon.itos(d.getUTCSeconds(), 2) + "Z";
	return s;
}



/**
 * Add the specified number of days to a date object
 *
 * @param {Date} d the date object
 * @param {Number} days the number of days to add, may be negative
 * @type Date
 * @return a new Date object
 */
PKIXCommon.addDays = function(d, days) {
	var hour = d.getUTCHours();
	var minute = d.getUTCMinutes();
	var second = d.getUTCSeconds();
	var cd = new Date(d);
	cd.setHours(12);

	var ts = cd.getTime();
	ts += days * 24 * 60 * 60 * 1000;
	var nd = new Date(ts);

	nd.setUTCHours(hour);
	nd.setUTCMinutes(minute);
	nd.setUTCSeconds(second);
	return nd;
}



/**
 * Converts the integer value into a BIT STRING value.
 * <p>The function interprets the integer value as bitmap, where
 * bit 0 is the most significant bit of the least significant byte.</p>
 * <p>The function adds the minimum number of bytes to the final bit string
 * and encodes the "number of unused bits at the beginning.</p>
 *
 * @param {Number} val the value to convert
 * @return the bit string
 * @type ByteString
 */
PKIXCommon.bitstringForInteger = function(val) {
	var bb = new ByteBuffer();
	var b = 0;

	// Encode starting with the least significant byte
	while (val > 0) {
		b = val & 0xFF;
		bb.append(b);
		val = val >> 8;
	}

	// Determine number of unused bits
	var i = 0;
	while ((i < 8) && !(b & 1)) {
		i++;
		b >>= 1;
	}

	bb.insert(0, i);
	return bb.toByteString();
}



/**
 * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
 *
 * This prevent interpretation of the integer representation if converted into
 * a signed ASN1 INTEGER.
 *
 * @param {ByteString} value the value to convert
 * @return the converted value
 * @type ByteString
 */
PKIXCommon.convertUnsignedInteger = function(value) {
	assert(value.length > 0);

	var i = 0;
	for (var i = 0; (i < value.length - 1) && (value.byteAt(i) == 0); i++);

	if (value.byteAt(i) >= 0x80) {
		value = (new ByteString("00", HEX)).concat(value.bytes(i));
	} else {
		value = value.bytes(i);
	}

	return value;
}



/**
 * Removes leading zero byte.
 *
 * @param {ByteString} value the value to process
 * @return the processed ByteString without leading zero byte
 * @type ByteString
 */
PKIXCommon.removeLeadingZeroBytes = function(value) {
	if (value.length > 0 && value.byteAt(0) == 0x00) {
		value = value.bytes(1);
	}

	return value;
}



/**
 * Encode PSS algorithm parameter
 */
PKIXCommon.encodePSSAlgorithmParameter = function(hashAlgorithm, saltLength) {
	var param =  new ASN1("parameters", ASN1.SEQUENCE,
			new ASN1("hashAlgorithm", 0xA0,
				new ASN1("sha256Identifier", ASN1.SEQUENCE,
					new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, hashAlgorithm),
					new ASN1("parameter", ASN1.NULL, new ByteString("", HEX)))),
			new ASN1("maskGenAlgorithm", 0xA1,
				new ASN1("mgf1SHA256Identifier", ASN1.SEQUENCE,
					new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("pkcs-1 8", OID)), // id-mgf1
					new ASN1("parameters", ASN1.SEQUENCE,
						new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, hashAlgorithm),
						new ASN1("parameter", ASN1.NULL, new ByteString("", HEX))))),
			new ASN1("hashAlgorithm", 0xA2,
				new ASN1("saltLength", ASN1.INTEGER, ByteString.valueOf(saltLength)))
			);

	return param;
}



/**
 * Gets the signature algorithm TLV object
 *
 * @return the signature algorithm object
 * @type ASN1
 */
PKIXCommon.encodeSignatureAlgorithm = function(signatureAlgorithm) {
	var t = new ASN1("signatureAlgorithm", ASN1.SEQUENCE);

	if ((signatureAlgorithm == Crypto.RSA) || (signatureAlgorithm == Crypto.RSA_SHA1)) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("sha1WithRSAEncryption", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (signatureAlgorithm == Crypto.RSA_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("sha256WithRSAEncryption", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (signatureAlgorithm == Crypto.RSA_SHA384) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("sha384WithRSAEncryption", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (signatureAlgorithm == Crypto.RSA_SHA512) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("sha512WithRSAEncryption", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (signatureAlgorithm == Crypto.RSA_PSS_SHA1) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("id-RSASSA-PSS", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (signatureAlgorithm == Crypto.RSA_PSS_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("id-RSASSA-PSS", OID)));
		t.add(PKIXCommon.encodePSSAlgorithmParameter(new ByteString("id-sha256", OID), 32));
	} else if (signatureAlgorithm == Crypto.RSA_PSS_SHA384) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("id-RSASSA-PSS", OID)));
		t.add(PKIXCommon.encodePSSAlgorithmParameter(new ByteString("id-sha384", OID), 48));
	} else if (signatureAlgorithm == Crypto.RSA_PSS_SHA512) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("id-RSASSA-PSS", OID)));
		t.add(PKIXCommon.encodePSSAlgorithmParameter(new ByteString("id-sha512", OID), 64));
	} else if (signatureAlgorithm == Crypto.ECDSA_SHA1) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("ecdsa-with-SHA1", OID)));
	} else if (signatureAlgorithm == Crypto.ECDSA_SHA224) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("ecdsa-with-SHA224", OID)));
	} else if (signatureAlgorithm == Crypto.ECDSA_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("ecdsa-with-SHA256", OID)));
	} else if (signatureAlgorithm == Crypto.ECDSA_SHA384) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("ecdsa-with-SHA384", OID)));
	} else if (signatureAlgorithm == Crypto.ECDSA_SHA512) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("ecdsa-with-SHA512", OID)));
	} else {
		throw new GPError(module.id, GPError.INVALID_MECH, signatureAlgorithm, "Invalid algorithm");
	}

	return t;
}



PKIXCommon.algIdMap = {};
PKIXCommon.algIdMap[(new ByteString("sha1WithRSAEncryption", OID)).toString(HEX)] = Crypto.RSA_SHA1;
PKIXCommon.algIdMap[(new ByteString("sha256WithRSAEncryption", OID)).toString(HEX)] = Crypto.RSA_SHA256;
PKIXCommon.algIdMap[(new ByteString("sha384WithRSAEncryption", OID)).toString(HEX)] = Crypto.RSA_SHA384;
PKIXCommon.algIdMap[(new ByteString("sha512WithRSAEncryption", OID)).toString(HEX)] = Crypto.RSA_SHA512;
PKIXCommon.algIdMap[(new ByteString("id-RSASSA-PSS", OID)).toString(HEX)] = Crypto.RSA_PSS_SHA1;
PKIXCommon.algIdMap[(new ByteString("ecdsa-with-SHA1", OID)).toString(HEX)] = Crypto.ECDSA_SHA1;
PKIXCommon.algIdMap[(new ByteString("ecdsa-with-SHA224", OID)).toString(HEX)] = Crypto.ECDSA_SHA224;
PKIXCommon.algIdMap[(new ByteString("ecdsa-with-SHA256", OID)).toString(HEX)] = Crypto.ECDSA_SHA256;
PKIXCommon.algIdMap[(new ByteString("ecdsa-with-SHA384", OID)).toString(HEX)] = Crypto.ECDSA_SHA384;
PKIXCommon.algIdMap[(new ByteString("ecdsa-with-SHA512", OID)).toString(HEX)] = Crypto.ECDSA_SHA512;



/**
 * Return Crypto.x constant for given signatureAlgorithm
 *
 * @param {ByteString} signatureAlgorithm the algorithm
 * @param {ByteString} param the parameter (optional)
 * @type Number
 * @return the Crypto.X constant
 */
PKIXCommon.decodeSignatureAlgorithm = function(signatureAlgorithm, param) {
	if (signatureAlgorithm.equals(new ByteString("id-RSASSA-PSS", OID))) {
		if (typeof(param) == "undefined") {
			return Crypto.RSA_PSS_SHA1;
		}

		var a = new ASN1(param);
		var hashAlgorithm = null;

		for (var i = 0; i < a.elements; i++) {
			var o = a.get(i);
			if (o.tag == 0xA0) { // hashAlgorithm
				var oid = o.get(0).get(0).value;
				hashAlgorithm = this.decodeHashAlgorithm(oid);
			} else if (o.tag == 0xA1) { // MGF
				// Check MGF
				var m = o.get(0).get(0).value;
				if (!m.equals(new ByteString("pkcs-1 8", OID))) {
					throw new GPError(module.id, GPError.INVALID_MECH, 2, "Unsupported MGF");
				}

				// Check hashAlgorithm
				var oid = o.get(0).get(1).get(0).value;
				var h = this.decodeHashAlgorithm(oid);
				if (hashAlgorithm == null) {
					hashAlgorithm = h;
				} else if (hashAlgorithm != h) {
					throw new GPError(module.id, GPError.INVALID_MECH, 2, "Signature hash algorithm and MGF hash algorithm must be the same");
				}
			} else if (o.tag == 0xA2) { // saltLength
				switch(hashAlgorithm) {
					case Crypto.SHA_224:
						var expectedSalt = 28;
						break;
					case Crypto.SHA_256:
						var expectedSalt = 32;
						break;
					case Crypto.SHA_384:
						var expectedSalt = 48;
						break;
					case Crypto.SHA_512:
						var expectedSalt = 64;
						break;
					case Crypto.SHA_1:
					default:
						var expectedSalt = 20;
				}

				var salt = o.get(0).value.toUnsigned();
				if (salt != expectedSalt) {
					throw new GPError(module.id, GPError.INVALID_MECH, 2, "saltLength (" + salt + ") must match hash size (" + expectedSalt + ")");
				}
			} else if (o.tag == 0xA3) { // trailerField
				var trailerField = o.get(0).value.toUnsigned();
				if (trailerField != 1) {
					throw new GPError(module.id, GPError.INVALID_MECH, 2, "trailerField value must be 1");
				}
			}
		}

		switch(hashAlgorithm) {
			case Crypto.SHA_224:
				return Crypto.RSA_PSS_SHA224;
			case Crypto.SHA_256:
				return Crypto.RSA_PSS_SHA256;
			case Crypto.SHA_384:
				return Crypto.RSA_PSS_SHA384;
			case Crypto.SHA_512:
				return Crypto.RSA_PSS_SHA512;
			case Crypto.SHA_1:
			default:
				return Crypto.RSA_PSS_SHA1;
		}
	}

	var alg = PKIXCommon.algIdMap[signatureAlgorithm.toString(HEX)];
	return alg;
}


/**
 * Return Crypto.SHA_x constant for given OID
 *
 * @param {ByteString} oid the hash OID
 * @type Number
 * @return the Crypto.SHA_x constant
 */
PKIXCommon.decodeHashAlgorithm = function(oid) {
	//var oid = algorithmId.get(0).get(0).value.toString(HEX);

	switch (oid.toString(HEX)) {
		case new ByteString("id-sha1", OID).toString(HEX):
			return Crypto.SHA_1;
		case new ByteString("id-sha224", OID).toString(HEX):
			return Crypto.SHA_224;
		case new ByteString("id-sha256", OID).toString(HEX):
			return Crypto.SHA_256;
		case new ByteString("id-sha384", OID).toString(HEX):
			return Crypto.SHA_384;
		case new ByteString("id-sha512", OID).toString(HEX):
			return Crypto.SHA_512;
		default:
			throw new GPError(module.id, GPError.INVALID_MECH, 1, "Invalid algorithm");
	}
}



/**
 * Return Crypto.RSA or Crypto.EC depending on signature algorithm
 *
 * @param {Number} alg signature algorithm (one of Crypto.X)
 * @type Number
 * @return either Crypto.RSA or Crypto.EC
 */
PKIXCommon.keyTypeForAlgorithm = function(alg) {
	if     ((alg == Crypto.RSA) ||
		(alg == Crypto.RSA_SHA256) ||
		(alg == Crypto.RSA_SHA384) ||
		(alg == Crypto.RSA_SHA512) ||
		(alg == Crypto.RSA_PSS_SHA1) ||
		(alg == Crypto.RSA_PSS_SHA224) ||
		(alg == Crypto.RSA_PSS_SHA256) ||
		(alg == Crypto.RSA_PSS_SHA384) ||
		(alg == Crypto.RSA_PSS_SHA512)) {
		return Crypto.RSA;
	} else {
		return Crypto.EC;
	}
}



/**
 * Create tailored AlgorithmIdentifier that restricts usage of the public key.
 *
 * @param{String} restriction The restriction to apply.
 * @type ASN1
 * @return the tailored AlgorithmIdentifier;
 */
PKIXCommon.restrictedPublicKeyAlgorithmIdentifier = function(restriction) {
	switch(restriction) {
		case "PSS-SHA1":
			var puboid = new ByteString("id-RSASSA-PSS", OID);
			var hash = new ByteString("id-sha1", OID);
			break;
		case "PSS-SHA224":
			var puboid = new ByteString("id-RSASSA-PSS", OID);
			var hash = new ByteString("id-sha224", OID);
			break;
		case "PSS-SHA256":
			var puboid = new ByteString("id-RSASSA-PSS", OID);
			var hash = new ByteString("id-sha256", OID);
			break;
		case "PSS-SHA384":
			var puboid = new ByteString("id-RSASSA-PSS", OID);
			var hash = new ByteString("id-sha384", OID);
			break;
		case "PSS-SHA512":
			var puboid = new ByteString("id-RSASSA-PSS", OID);
			var hash = new ByteString("id-sha512", OID);
			break;
		case "OEAP":
		default:
			throw new GPError(module.id, GPError.INVALID_DATA, 0, "Unknown public key restriction " + this.policy.restrictPublicKey);
	}

	var info = PKIXCommon.encodePSSAlgorithmParameter(hash, 0);
	var algorithm = new ASN1("algorithm", ASN1.SEQUENCE,
		new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, puboid),
		info
	);

	return algorithm;
}



/**
 * Encode EC Parameter for inclusion in the AlgorithmIdentifier structure.
 *
 * @param{Key} publicKey the public key.
 * @type ASN1
 * @return the encoded ECParameter.
 */
PKIXCommon.encodeECParameter = function(publicKey) {
	if (!publicKey.getComponent(Key.ECC_P)) {		// Make sure curve components are available if only curve oid is defined
		publicKey.setComponent(Key.ECC_CURVE_OID, publicKey.getComponent(Key.ECC_CURVE_OID));
	}
	var ecParameter =
		new ASN1("ecParameters", ASN1.SEQUENCE,
			new ASN1("version", ASN1.INTEGER, new ByteString("01", HEX)),
			new ASN1("fieldID", ASN1.SEQUENCE,
				new ASN1("fieldType", ASN1.OBJECT_IDENTIFIER, new ByteString("prime-field", OID)),
				new ASN1("prime", ASN1.INTEGER,
					PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_P)))
			),
			new ASN1("curve", ASN1.SEQUENCE,
				new ASN1("a", ASN1.OCTET_STRING, publicKey.getComponent(Key.ECC_A)),
				new ASN1("b", ASN1.OCTET_STRING, publicKey.getComponent(Key.ECC_B))
			),
			new ASN1("base", ASN1.OCTET_STRING,
					(new ByteString("04", HEX)).concat(publicKey.getComponent(Key.ECC_GX)).concat(publicKey.getComponent(Key.ECC_GY))),
			new ASN1("order", ASN1.INTEGER,
				PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_N)))
		);

	var cofactor = publicKey.getComponent(Key.ECC_H);
	var i = 0;
	for (; (i < cofactor.length) && (cofactor.byteAt(i) == 0); i++);
	if (i < cofactor.length) {
		ecParameter.add(new ASN1("cofactor", ASN1.INTEGER, cofactor.bytes(i)));
	}
	return ecParameter;
}



/**
 * Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
 *		algorithm            AlgorithmIdentifier,
 *		subjectPublicKey     BIT STRING  }
 *
 *	AlgorithmIdentifier  ::=  SEQUENCE  {
 *		algorithm               OBJECT IDENTIFIER,
 *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 *
 *	id-ecPublicKey OBJECT IDENTIFIER ::= {
 *		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
 *
 *	ECParameters ::= CHOICE {
 *		namedCurve         OBJECT IDENTIFIER,
 *		implicitCurve      NULL,
 *		specifiedCurve     SpecifiedECDomain }
 * </pre>
 * @return the subjectPublicKey TLV structure
 * @type ASN1
 */
PKIXCommon.createECSubjectPublicKeyInfo = function(publicKey, encodeECDomainParameter) {
	var t = new ASN1("subjectPublicKeyInfo", ASN1.SEQUENCE);

	var algorithm = publicKey.algorithmIdentifier;
	if (typeof(algorithm) == "undefined") {
		algorithm = new ASN1("algorithm", ASN1.SEQUENCE,
				new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("id-ecPublicKey", OID))

			);
		if (encodeECDomainParameter) {
			algorithm.add(PKIXCommon.encodeECParameter(publicKey));
		} else {
			algorithm.add(new ASN1("parameters", ASN1.OBJECT_IDENTIFIER, publicKey.getComponent(Key.ECC_CURVE_OID)));
		}
	}

	t.add(algorithm);

	// Prefix a 00 to form correct bitstring
	// Prefix a 04 to indicate uncompressed format
	var keybin = new ByteString("0004", HEX);
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QX));
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QY));
	t.add(new ASN1("subjectPublicKey", ASN1.BIT_STRING, keybin));

	return t;
}



/**
 * Creates the RSA Public Key as subjectPublicKeyInfo TLV structure object.
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
 *		algorithm            AlgorithmIdentifier,
 *		subjectPublicKey     BIT STRING  }
 *
 *	AlgorithmIdentifier  ::=  SEQUENCE  {
 *		algorithm               OBJECT IDENTIFIER,
 *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 *
 *	pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }
 *
 *	rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}
 *
 *	RSAPublicKey ::= SEQUENCE {
 *		modulus            INTEGER,    -- n
 *		publicExponent     INTEGER  }  -- e
 * </pre>
 *
 * @return the subjectPublicKey TLV structure
 * @type ASN1
 */
PKIXCommon.createRSASubjectPublicKeyInfo = function(publicKey) {
	var t = new ASN1("subjectPublicKeyInfo", ASN1.SEQUENCE);

	var algorithm = publicKey.algorithmIdentifier;
	if (typeof(algorithm) == "undefined") {
		algorithm = new ASN1("algorithm", ASN1.SEQUENCE,
				new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("rsaEncryption", OID)),
				new ASN1("parameters", ASN1.NULL, new ByteString("", HEX))
			);
	}

	t.add(algorithm);
	// Prefix a 00 to form correct bitstring
	var keybin = new ByteString("00", HEX);

	var modulus = publicKey.getComponent(Key.MODULUS);
	modulus = PKIXCommon.convertUnsignedInteger(modulus);

	var exponent = publicKey.getComponent(Key.EXPONENT);
	exponent = PKIXCommon.convertUnsignedInteger(exponent);

	var rsapub = new ASN1("RSAPublicKey", ASN1.SEQUENCE,
			new ASN1("modulus", ASN1.INTEGER, modulus),
			new ASN1("publicKeyExponent", ASN1.INTEGER, exponent));

	keybin = keybin.concat(rsapub.getBytes());
	t.add(new ASN1("subjectPublicKey", ASN1.BIT_STRING, keybin));

	return t;
}



/**
 * Determine key identifier according to RFC5280 using SHA-1 over the SubjectPublicKeyInfo
 *
 * @param {Key} publicKey the public key
 * @param {Boolean} encodeECDomainParameter true to include domain parameter in SPKI of EC key
 */
PKIXCommon.determineKeyIdentifier = function(publicKey, encodeECDomainParameter) {
	if (typeof(encodeECDomainParameter) == "undefined") {
		encodeECDomainParameter = true;
	}

	var spki;

	if (publicKey.getComponent(Key.MODULUS)) {
		spki = PKIXCommon.createRSASubjectPublicKeyInfo(publicKey);
	} else {
		spki = PKIXCommon.createECSubjectPublicKeyInfo(publicKey, encodeECDomainParameter);
	}

	var keyvalue = spki.get(1).value.bytes(1);
	var crypto = new Crypto();
	return (crypto.digest(Crypto.SHA_1, keyvalue));
}



/**
 * Creates a relative distinguished name component.
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *	RelativeDistinguishedName ::=
 *		SET SIZE (1..MAX) OF AttributeTypeAndValue
 *
 *	AttributeTypeAndValue ::= SEQUENCE {
 *		type     AttributeType,
 *		value    AttributeValue }
 *
 *	AttributeType ::= OBJECT IDENTIFIER
 *
 *	AttributeValue ::= ANY -- DEFINED BY AttributeType
 *
 *	DirectoryString ::= CHOICE {
 *		teletexString           TeletexString (SIZE (1..MAX)),
 *		printableString         PrintableString (SIZE (1..MAX)),
 *		universalString         UniversalString (SIZE (1..MAX)),
 *		utf8String              UTF8String (SIZE (1..MAX)),
 *		bmpString               BMPString (SIZE (1..MAX)) }
 *</pre>
 *
 * @param {String} name the components name
 * @param {String} oid the oid for the RDN
 * @param {ASN1} value the value object
 * @return the
 */
PKIXCommon.makeRDN = function(name, oid, value) {
	return new ASN1(name, ASN1.SET,
				new ASN1(ASN1.SEQUENCE,
					new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(oid, OID)),
					value
				)
			);
}



/**
 * Adds names from the name object to the RDNSequence.
 *
 * @param {ASN1} t the sequence object
 * @param {Object} name the name object
 */
PKIXCommon.addNames = function(t, name) {
	if (name.C) {
		t.add(PKIXCommon.makeRDN("country", "id-at-countryName", new ASN1(ASN1.PrintableString, new ByteString(name.C, ASCII))));
	}
	if (name.ST) {
		t.add(PKIXCommon.makeRDN("stateOrProvinceName", "id-at-stateOrProvinceName", new ASN1(ASN1.UTF8String, new ByteString(name.ST, UTF8))));
	}
	if (name.O) {
		t.add(PKIXCommon.makeRDN("organization", "id-at-organizationName", new ASN1(ASN1.UTF8String, new ByteString(name.O, UTF8))));
	}
	if (name.OU) {
		t.add(PKIXCommon.makeRDN("organizationalUnit", "id-at-organizationalUnitName", new ASN1(ASN1.UTF8String, new ByteString(name.OU, UTF8))));
	}
	if (name.S) {
		t.add(PKIXCommon.makeRDN("stateOrProvince", "id-at-stateOrProvinceName", new ASN1(ASN1.UTF8String, new ByteString(name.S, UTF8))));
	}
	if (name.L) {
		t.add(PKIXCommon.makeRDN("locality", "id-at-localityName", new ASN1(ASN1.UTF8String, new ByteString(name.L, UTF8))));
	}
	if (name.DC) {
		t.add(PKIXCommon.makeRDN("domainComponent", "id-domainComponent", new ASN1(ASN1.UTF8String, new ByteString(name.DC, UTF8))));
	}
	if (name.T) {
		t.add(PKIXCommon.makeRDN("title", "id-at-title", new ASN1(ASN1.UTF8String, new ByteString(name.T, UTF8))));
	}
	if (name.G) {
		t.add(PKIXCommon.makeRDN("givenName", "id-at-givenName", new ASN1(ASN1.UTF8String, new ByteString(name.G, UTF8))));
	}
	if (name.SN) {
		t.add(PKIXCommon.makeRDN("surname", "id-at-surname", new ASN1(ASN1.UTF8String, new ByteString(name.SN, UTF8))));
	}
	if (name.CN) {
		t.add(PKIXCommon.makeRDN("commonName", "id-at-commonName", new ASN1(ASN1.UTF8String, new ByteString(name.CN, UTF8))));
	}
	if (name.SERIALNUMBER) {
		t.add(PKIXCommon.makeRDN("serialNumber", "id-at-serialNumber", new ASN1(ASN1.UTF8String, new ByteString(name.SERIALNUMBER, UTF8))));
	}
	if (name.DNQ) {
		t.add(PKIXCommon.makeRDN("dnQualifier", "id-at-dnQualifier", new ASN1(ASN1.UTF8String, new ByteString(name.DNQ, UTF8))));
	}
	if (name.E) {
		t.add(PKIXCommon.makeRDN("emailAddress", "id-emailAddress", new ASN1(ASN1.IA5String, new ByteString(name.E, ASCII))));
	}
	if (name.UID) {
		t.add(PKIXCommon.makeRDN("userId", "id-userId", new ASN1(ASN1.UTF8String, new ByteString(name.UID, UTF8))));
	}
}



PKIXCommon.validRDN = [ "C","ST","L","O","OU","S","DC","T","G","SN","PSEUDONYM","CN","SERIALNUMBER","DNQ","E","UID" ];

/**
 * Gets the dn as TLV object
 *
 * <p>This function support two format for names</p>
 * <pre>
 *  var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * or
 *  var issuer = [ { C:"UT"}, { O:"ACME Corporation" }, { CN:"Test-CA"} ];
 * </pre>
 *
 * <p>It supports the following RDNs:</p>
 * <ul>
 * <li>C - country</li>
 * <li>ST - state</li>
 * <li>O - organization</li>
 * <li>OU - organizational unit</li>
 * <li>S - state or province</li>
 * <li>L - locality</li>
 * <li>DC - domain component</li>
 * <li>T - title</li>
 * <li>G - given name</li>
 * <li>SN - surname</li>
 * <li>CN - common name</li>
 * <li>SERIALNUMBER - serial number</li>
 * <li>DNQ - domain name qualifier</li>
 * <li>E - e-mail address</li>
 * <li>UID - user Id</li>
 * <p>The first format sorts the RDS in the sequence C,ST,L,O,OU,S,DC,T,G,SN,PSEUDONYM,CN,SERIALNUMBER,DNQ,E,UID</p>
 * </ul>
 * @param {Object} name the name object
 * @return the RDNSequence
 * @type ASN1
 */
PKIXCommon.encodeName = function(name) {
	var t = new ASN1("subject", ASN1.SEQUENCE);
	if (typeof(name.C) == "undefined") {
		for (var i = 0; i < name.length; i++) {
			PKIXCommon.addNames(t, name[i]);
		}
	} else {
		PKIXCommon.addNames(t, name);
	}
	return t;
}



/**
 * Return the value of the last RDN
 *
 * @param {Object[]} dn the dn array
 * @type String
 * @return the value of the last RDN
 */
PKIXCommon.makeName = function(rdnlist) {
	if (rdnlist.length == 0) {
		return undefined;
	}
	var l = rdnlist[rdnlist.length - 1];

	for (var i in l) {
		return l[i];
	}

	return undefined;
}



PKIXCommon.parseDN = function(dn) {
	assert(typeof(dn) == "string", "Parameter dn must be string");

	var e = dn.split(",");
	var rdnlist = [];

	for (var i = 0; i < e.length; i++) {
		var p = e[i].split("=");

		if (p.length < 2) {
			throw new GPError(module.id, GPError.INVALID_DATA, i, "Missing '=' in RDN " + e[i]);
		}

		if (p.length > 2) {
			throw new GPError(module.id, GPError.INVALID_DATA, i, "Too many '=' in RDN " + e[i]);
		}

		var key = p[0].trim().toUpperCase();

		if (key.length == 0) {
			throw new GPError(module.id, GPError.INVALID_DATA, i, "Key in RDN " + e[i] + " can't be empty");
		}

		if (PKIXCommon.validRDN.indexOf(key) == -1) {
			throw new GPError(module.id, GPError.INVALID_DATA, i, key + " is not a supported RDN (Valid RDNs are " + PKIXCommon.validRDN + ")");
		}

		var value = p[1].trim();

		if (value.length == 0) {
			throw new GPError(module.id, GPError.INVALID_DATA, i, "Value for " + key + " can't be empty");
		}
		var rdn = { };
		rdn[key] = value;
		rdnlist.push(rdn);
	}
	return rdnlist;
}



/**
 * Convert a DN parsed with parseDN() back into the string format
 *
 * @param {Object[]} dn the dn array
 * @type String
 * @return the DN in string format
 */
PKIXCommon.dnToString = function(dn) {
	var str = "";

	for (var i = 0; i < dn.length; i++) {
		if (str.length > 0) {
			str += ",";
		}

		for (var j in dn[i]) {
			str += j + "=" + dn[i][j];
		}
	}
	return str;
}



PKIXCommon.findRDN = function(rdnlist, c) {
	for (var i = 0; i < rdnlist.length; i++) {
		var v = rdnlist[i][c];
		if (v) {
			return v;
		}
	}
}



PKIXCommon.countryNames = {
AF:"Afghanistan",
AX:"Aeland Islands",
AL:"Albania",
DZ:"Algeria",
AS:"American Samoa",
AD:"Andorra",
AO:"Angola",
AI:"Anguilla",
AQ:"Antarctica",
AG:"Antigua and Barbuda",
AR:"Argentina",
AM:"Armenia",
AW:"Aruba",
AU:"Australia",
AT:"Austria",
AZ:"Azerbaijan",
BS:"Bahamas",
BH:"Bahrain",
BD:"Bangladesh",
BB:"Barbados",
BY:"Belarus",
BE:"Belgium",
BZ:"Belize",
BJ:"Benin",
BM:"Bermuda",
BT:"Bhutan",
BO:"Bolivia, Plurinational State of",
BQ:"Bonaire, Sint Eustatius and Saba",
BA:"Bosnia and Herzegovina",
BW:"Botswana",
BV:"Bouvet Island",
BR:"Brazil",
IO:"British Indian Ocean Territory",
BN:"Brunei Darussalam",
BG:"Bulgaria",
BF:"Burkina Faso",
BI:"Burundi",
KH:"Cambodia",
CM:"Cameroon",
CA:"Canada",
CV:"Cape Verde",
KY:"Cayman Islands",
CF:"Central African Republic",
TD:"Chad",
CL:"Chile",
CN:"China",
CX:"Christmas Island",
CC:"Cocos (Keeling) Islands",
CO:"Colombia",
KM:"Comoros",
CG:"Congo",
CD:"Congo, the Democratic Republic of the",
CK:"Cook Islands",
CR:"Costa Rica",
CI:"Cote d'Ivoire",
HR:"Croatia",
CU:"Cuba",
CW:"Curacao",
CY:"Cyprus",
CZ:"Czech Republic",
DK:"Denmark",
DJ:"Djibouti",
DM:"Dominica",
DO:"Dominican Republic",
EC:"Ecuador",
EG:"Egypt",
SV:"El Salvador",
GQ:"Equatorial Guinea",
ER:"Eritrea",
EE:"Estonia",
ET:"Ethiopia",
FK:"Falkland Islands (Malvinas)",
FO:"Faroe Islands",
FJ:"Fiji",
FI:"Finland",
FR:"France",
GF:"French Guiana",
PF:"French Polynesia",
TF:"French Southern Territories",
GA:"Gabon",
GM:"Gambia",
GE:"Georgia",
DE:"Germany",
GH:"Ghana",
GI:"Gibraltar",
GR:"Greece",
GL:"Greenland",
GD:"Grenada",
GP:"Guadeloupe",
GU:"Guam",
GT:"Guatemala",
GG:"Guernsey",
GN:"Guinea",
GW:"Guinea-Bissau",
GY:"Guyana",
HT:"Haiti",
HM:"Heard Island and McDonald Islands",
VA:"Holy See (Vatican City State)",
HN:"Honduras",
HK:"Hong Kong",
HU:"Hungary",
IS:"Iceland",
IN:"India",
ID:"Indonesia",
IR:"Iran, Islamic Republic of",
IQ:"Iraq",
IE:"Ireland",
IM:"Isle of Man",
IL:"Israel",
IT:"Italy",
JM:"Jamaica",
JP:"Japan",
JE:"Jersey",
JO:"Jordan",
KZ:"Kazakhstan",
KE:"Kenya",
KI:"Kiribati",
KP:"Korea, Democratic People's Republic of",
KR:"Korea, Republic of",
KW:"Kuwait",
KG:"Kyrgyzstan",
LA:"Lao People's Democratic Republic",
LV:"Latvia",
LB:"Lebanon",
LS:"Lesotho",
LR:"Liberia",
LY:"Libya",
LI:"Liechtenstein",
LT:"Lithuania",
LU:"Luxembourg",
MO:"Macao",
MK:"Macedonia, the Former Yugoslav Republic of",
MG:"Madagascar",
MW:"Malawi",
MY:"Malaysia",
MV:"Maldives",
ML:"Mali",
MT:"Malta",
MH:"Marshall Islands",
MQ:"Martinique",
MR:"Mauritania",
MU:"Mauritius",
YT:"Mayotte",
MX:"Mexico",
FM:"Micronesia, Federated States of",
MD:"Moldova, Republic of",
MC:"Monaco",
MN:"Mongolia",
ME:"Montenegro",
MS:"Montserrat",
MA:"Morocco",
MZ:"Mozambique",
MM:"Myanmar",
NA:"Namibia",
NR:"Nauru",
NP:"Nepal",
NL:"Netherlands",
NC:"New Caledonia",
NZ:"New Zealand",
NI:"Nicaragua",
NE:"Niger",
NG:"Nigeria",
NU:"Niue",
NF:"Norfolk Island",
MP:"Northern Mariana Islands",
NO:"Norway",
OM:"Oman",
PK:"Pakistan",
PW:"Palau",
PS:"Palestine, State of",
PA:"Panama",
PG:"Papua New Guinea",
PY:"Paraguay",
PE:"Peru",
PH:"Philippines",
PN:"Pitcairn",
PL:"Poland",
PT:"Portugal",
PR:"Puerto Rico",
QA:"Qatar",
RE:"Reunion",
RO:"Romania",
RU:"Russian Federation",
RW:"Rwanda",
BL:"Saint Bartholemy",
SH:"Saint Helena, Ascension and Tristan da Cunha",
KN:"Saint Kitts and Nevis",
LC:"Saint Lucia",
MF:"Saint Martin (French part)",
PM:"Saint Pierre and Miquelon",
VC:"Saint Vincent and the Grenadines",
WS:"Samoa",
SM:"San Marino",
ST:"Sao Tome and Principe",
SA:"Saudi Arabia",
SN:"Senegal",
RS:"Serbia",
SC:"Seychelles",
SL:"Sierra Leone",
SG:"Singapore",
SX:"Sint Maarten (Dutch part)",
SK:"Slovakia",
SI:"Slovenia",
SB:"Solomon Islands",
SO:"Somalia",
ZA:"South Africa",
GS:"South Georgia and the South Sandwich Islands",
SS:"South Sudan",
ES:"Spain",
LK:"Sri Lanka",
SD:"Sudan",
SR:"Suriname",
SJ:"Svalbard and Jan Mayen",
SZ:"Swaziland",
SE:"Sweden",
CH:"Switzerland",
SY:"Syrian Arab Republic",
TW:"Taiwan, Province of China",
TJ:"Tajikistan",
TZ:"Tanzania, United Republic of",
TH:"Thailand",
TL:"Timor-Leste",
TG:"Togo",
TK:"Tokelau",
TO:"Tonga",
TT:"Trinidad and Tobago",
TN:"Tunisia",
TR:"Turkey",
TM:"Turkmenistan",
TC:"Turks and Caicos Islands",
TV:"Tuvalu",
UG:"Uganda",
UA:"Ukraine",
AE:"United Arab Emirates",
GB:"United Kingdom",
US:"United States",
UM:"United States Minor Outlying Islands",
UY:"Uruguay",
UZ:"Uzbekistan",
VU:"Vanuatu",
VE:"Venezuela, Bolivarian Republic of",
VN:"Viet Nam",
VG:"Virgin Islands, British",
VI:"Virgin Islands, U.S.",
WF:"Wallis and Futuna",
EH:"Western Sahara",
YE:"Yemen",
ZM:"Zambia",
ZW:"Zimbabwe"
};



/**
 * Extract subject from certificate as ASN1 object
 *
 * @param {X509} cert the certificate
 * @type ASN1
 * @return the subject as ASN1
 */
PKIXCommon.getSubjectAsASN1 = function(cert) {
	var a = new ASN1(cert.getBytes());
	return a.get(0).get(5);
}



/**
 * Extract issuer from certificate as ASN1 object
 *
 * @param {X509} cert the certificate
 * @type ASN1
 * @return the issuer as ASN1
 */
PKIXCommon.getIssuerAsASN1 = function(cert) {
	var a = new ASN1(cert.getBytes());
	return a.get(0).get(3);
}



/**
 * Convert binary data to PEM format
 *
 * @param {String} label the label to be used in the MIME header and footer
 * @param {ByteString} bin the binary data
 * @type String
 * @return the MIME/BASE64 encoded string
 */
PKIXCommon.toPEM = function(label, bin) {
	assert(typeof(label) == "string", "Parameter label must be string");
	assert(bin instanceof ByteString, "Parameter bin must be ByteString");

	var str = "-----BEGIN " + label + "-----\n";

	var b64 = bin.toString(BASE64);
	while(b64.length > 0) {
		str += b64.substr(0, 64) + "\n";
		b64 = b64.substr(64);
	}

	str += "-----END " + label + "-----\n";
	return str;
}



/**
 * Parse PEM format and extract binary data
 *
 * @param {String} label the label of the section
 * @param {String} bin the binary data
 * @type String
 * @return the MIME/BASE64 encoded string
 */
PKIXCommon.parsePEM = function(label, pem) {
	assert(typeof(label) == "string", "Parameter label must be string");
	assert(typeof(pem) == "string", "Parameter pem must be string");

	var lines = pem.split("\n");

	var b64str = "";
	var parse = false;
	for (var i = 0; i < lines.length; i++) {
		var str = lines[i];

		if (str == "-----BEGIN " + label + "-----") {
			parse = true;
		} else if (str == "-----END " + label + "-----") {
			break;
		} else if (parse) {
			b64str += str;
		}
	}

	return new ByteString(b64str, BASE64);
}



/**
 * Writes a byte string object to file
 *
 * <p>The filename is mapped to the workspace location.</p>
 *
 * @param {String} filename the fully qualified name of the file
 * @param {ByteString} content the content to write
 */
PKIXCommon.writeFileToDisk = function(filename, content) {
	var file = new java.io.FileOutputStream(filename);
	file.write(content);
	file.close();
}



/**
 * Loads a binary file from disk
 *
 * @param {String} filename the fully qualified file name
 * @return the binary content
 * @type ByteString
 */
PKIXCommon.readFileFromDisk = function(filename) {
	// Open stream
	var f = new java.io.FileInputStream(filename);

	// Determine file size
	var flen = f.available();

	// Allocate native byte array
	var bs = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, flen);

	// Read into byte array
	var len = f.read(bs);

	f.close();

	// Allocate JavaScript ByteBuffer from native/wrapped byte array
	var bb = new ByteBuffer(bs);

	// Convert to JavaScript ByteString
	var data = bb.toByteString();

	return data;
}



PKIXCommon.test = function() {
	var issuer = { C:"C", O:"O", OU:"OU", SP:"SP", L:"L", DC:"DC", T:"T", G:"G", SN:"SN", CN:"CN", SERIALNUMBER:"serial", DNQ:"DNQ" };
	var dn = PKIXCommon.encodeName(issuer);
	print(dn);

	var r = PKIXCommon.convertUnsignedInteger(new ByteString("00", HEX));
	assert(r.toString(HEX) == "00");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("80", HEX));
	assert(r.toString(HEX) == "0080");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("FF", HEX));
	assert(r.toString(HEX) == "00FF");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("0000", HEX));
	assert(r.toString(HEX) == "00");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("0080", HEX));
	assert(r.toString(HEX) == "0080");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("000080", HEX));
	assert(r.toString(HEX) == "0080");
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A simple X.509 CA setup
 */

var PKCS8 = require("scsh/pkcs/PKCS8").PKCS8;
var PKIXCommon = require("scsh/x509/PKIXCommon").PKIXCommon;
var X509CertificateGenerator = require("scsh/x509/X509CertificateGenerator").X509CertificateGenerator;
var CRLGenerator = require("scsh/x509/CRLGenerator").CRLGenerator;



/**
 * Create a signer using a X.509 certificate
 *
 * @class Class implementing a signer having a X.509 certificate
 * @constructor
 * @param {Crypto} crypto the crypto provider
 */
function X509Signer(crypto) {
	this.crypto = crypto;
}

exports.X509Signer = X509Signer;



/**
 * Set the signer key object
 *
 * @param {Key} signerKey the signer key
 */
X509Signer.prototype.setSignerKey = function(signerKey) {
	this.signerKey = signerKey;
}



/**
 * Set the signer certificates
 *
 * @param{X509} signerCert the signer's certificate
 */
X509Signer.prototype.setSignerCertificate = function(signerCert) {
	this.signerCert = signerCert;
	this.signerSubject = new ASN1(signerCert.getNative().getSubjectX500Principal().getEncoded());
}



/**
 * Return the signer's certificate
 *
 * @type X509
 * @return the signer's certificate
 */
X509Signer.prototype.getSignerCertificate = function() {
	return this.signerCert;
}



/**
 * Create a certification authority that issues X.509 certificates and CRLs
 *
 * @class Class implementing a certification authority issuing X.509 certificates and CRLs
 * @constructor
 * @param {Crypto} crypto the crypto provider
 */
function X509CA(crypto) {
	X509Signer.call(this, crypto);
	this.crldp = [];
}

X509CA.prototype = Object.create(X509Signer.prototype);
X509CA.constructor = X509CA;

exports.X509CA = X509CA;


/**
 * Add a CRL distribution point to issued certificates
 *
 * @param {String} crldp the URL of the distribution point
 */
X509CA.prototype.addCRLDistributionPoint = function(crldp) {
	this.crldp.push(crldp);
}



/**
 * Create a new randomly generated certificate serial number
 *
 * @private
 * @type ByteString
 * @return a 8 byte bytestring that resembles an unsigned integer
 */
X509CA.prototype.newSerialNumber = function() {
	var crypto = new Crypto();
	var serial = crypto.generateRandom(8);

	// Strip first bit to make integer unsigned
	if (serial.byteAt(0) > 0x7F) {
		serial = ByteString.valueOf(serial.byteAt(0) & 0x7F).concat(serial.bytes(1));
	}
	return serial;
}



/**
 * Issue a certificate
 *
 * @param {Key} publicKey the public key
 * @param {Object[]} subject an array of RDN objects in the form [ { C:"DE" }, { O:"CardContact" }, { OU:"CardContact Demo CA 1" }, { CN:"TLS client" } ].
 *			See pkixcommon.js for details
 * @param {String} profile an extension profile name for which a addExtFor<profile> method is defined. Predefined profiles are TLSServer, TLSClient and EmailAndTLSClient.
 * @param {Object} extvalues JSON object containing extension values
 * @type X509
 * @return the new X.509 certificate
 */
X509CA.prototype.issueCertificate = function(publicKey, subject, profile, extvalues) {

	var x = new X509CertificateGenerator(this.crypto);

	x.encodeECDomainParameter = false;
	x.reset();
	x.setSerialNumber(this.newSerialNumber());
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);
	x.setIssuer(this.signerSubject);
	var ced = new Date();
	var cxd = PKIXCommon.addDays(ced, 1095); // 3 years
	x.setNotBefore(ced);
	x.setNotAfter(cxd);
	x.setSubject(subject);
	x.setPublicKey(publicKey);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(this.signerCert.getPublicKey());

	if (profile != "SubCA") {
		x.addBasicConstraintsExtension(false);
	}

	if (this.crldp.length > 0) {
		x.addCRLDistributionPointURL(this.crldp);
	}

	if (typeof(this["addExtFor" + profile]) == "function") {
		this["addExtFor" + profile](x, extvalues);
	}

	return x.generateX509Certificate(this.signerKey);
}



/**
 * Extension handler method for TLS server certificates
 *
 * @private
 */
X509CA.prototype.addExtForTLSServer = function(certgen, extvalues) {

	certgen.addKeyUsageExtension( X509CertificateGenerator.keyAgreement |
								  X509CertificateGenerator.keyEncipherment);

	certgen.addExtendedKeyUsages(["id-csn-369791-tls-server", "id-kp-serverAuth"]);

	var ext = new ASN1("subjectAltName", ASN1.SEQUENCE,
						new ASN1("dNSName", 0x82, new ByteString(extvalues["dNSName"], ASCII))
					);
	certgen.addExtension("id-ce-subjectAltName", false, ext.getBytes());
}



/**
 * Extension handler method for TLS client certificates
 *
 * @private
 */
X509CA.prototype.addExtForTLSClient = function(certgen, extvalues) {
	certgen.addKeyUsageExtension( X509CertificateGenerator.digitalSignature);

	// certgen.addExtendedKeyUsages(["id-csn-369791-tls-client", "id-kp-clientAuth"]);
	certgen.addExtendedKeyUsages(["id-kp-clientAuth"]);
}



/**
 * Extension handler method for certificates suitable for TLS client authentication and e-Mail signature and encryption
 *
 * @private
 */
X509CA.prototype.addExtForEmailAndTLSClient = function(certgen, extvalues) {

	certgen.addKeyUsageExtension( X509CertificateGenerator.digitalSignature | X509CertificateGenerator.keyEncipherment);

//	print(extvalues.email);
	var ext = new ASN1("subjectAltName", ASN1.SEQUENCE,
						new ASN1("rfc822Name", 0x81, new ByteString(extvalues["email"], ASCII))
					);
	certgen.addExtension("id-ce-subjectAltName", false, ext.getBytes());

	certgen.addExtendedKeyUsages(["id-kp-clientAuth", "id-kp-emailProtection"]);
}



/**
 * Extension handler method for code signing certificates
 *
 * @private
 */
X509CA.prototype.addExtForCodeSigning = function(certgen, extvalues) {

	certgen.addKeyUsageExtension( X509CertificateGenerator.digitalSignature );

	certgen.addExtendedKeyUsages(["id-kp-codeSigning"]);
}



/**
 * Extension handler method for Sub-CA certificates
 *
 * @private
 */
X509CA.prototype.addExtForSubCA = function(certgen, extvalues) {

	certgen.addKeyUsageExtension(PKIXCommon.keyCertSign | PKIXCommon.cRLSign );
	if (typeof(extvalues.pathLenConstraint) != "undefined") {
		certgen.addBasicConstraintsExtension(true, extvalues.pathLenConstraint);
	}
}



/**
 * Issue a CRL
 *
 * @type ByteString
 * @return the encoded CRL
 */
X509CA.prototype.issueCRL = function() {
	var x = new CRLGenerator(this.crypto);

	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);
	x.setIssuer(this.signerSubject);
	var now = new Date();
	x.setThisUpdate(now);
	x.setNextUpdate(PKIXCommon.addDays(now, 10));

	var crl = x.generateCRL(this.signerKey);
	print("CRL:");
	print(crl);
	return crl.getBytes();
}



X509CA.dir = GPSystem.mapFilename("scsh/x509", GPSystem.USR);


/**
 * Setup the CA instance
 */
X509CA.setup = function() {
	var crypto = new Crypto();

	try	{
		var ks = new KeyStore("SUN", "PKCS12", X509CA.dir + "/DEMO-CA.p12", "openscdp");
		var priKey = new Key();
		priKey.setID("DEMOCA");

		ks.getKey(priKey, "openscdp");
		var cert = ks.getCertificate("DEMOCA");
		var pubKey = cert.getPublicKey();
	}
	catch(e) {
		var pubKey = new Key();
		pubKey.setSize(2048);
		pubKey.setType(Key.PUBLIC);

		var priKey = new Key();
		priKey.setType(Key.PRIVATE);

		crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);
	}

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber((new ByteString("02", HEX)).concat(crypto.generateRandom(7)));
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);
	var subject = [ { C:"DE" }, { O:"CardContact" }, { CN:"CardContact Demo CA 1" } ];
	x.setIssuer(subject);
	var ced = new Date("2012-02-24T15:21:27+0100");
	var cxd = PKIXCommon.addDays(ced, 7300); // 20 years
	x.setNotBefore(ced);
	x.setNotAfter(cxd);
	x.setSubject(subject);
	x.setPublicKey(pubKey);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(pubKey);
	x.addKeyUsageExtension(	PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );
	x.addBasicConstraintsExtension(true, 1);

	var cert = x.generateX509Certificate(priKey);
	print(cert);

	var ks = new KeyStore("SUN", "PKCS12");

	priKey.setID("DEMOCA");
	ks.setKey(priKey, "openscdp", [cert]);

	this.createSubCA(crypto, ks);

	ks.store(X509CA.dir + "/DEMO-CA.pkcs", "openscdp");
}



X509CA.createSubCA = function(crypto, ks) {
	var ca = new X509CA(crypto);

	var key = new Key();
	key.setID("DEMOCA");

	ks.getKey(key, "openscdp");
	ca.setSignerKey(key);

	var cert = ks.getCertificate("DEMOCA");
	ca.setSignerCertificate(cert);


	var subject = [ { C:"DE" }, { O:"CardContact" }, { CN:"CardContact Demo Sub CA 1" } ];

	var pubKey = new Key();
	pubKey.setSize(2048);
	pubKey.setType(Key.PUBLIC);

	var priKey = new Key();
	priKey.setType(Key.PRIVATE);

	crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

	var cert = ca.issueCertificate(pubKey, subject, "SubCA", { pathLenConstraint: 0 } );
	print(cert);

	priKey.setID("SUBCA");
	ks.setKey(priKey, "openscdp", [cert]);
}



/**
 * Test the CA setup
 */
X509CA.test = function() {
	var crypto = new Crypto();
	var ca = new X509CA(crypto);

	var ks = new KeyStore("SUN", "PKCS12", X509CA.dir + "/DEMO-CA.p12", "openscdp");
	var key = new Key();
	key.setID("DEMOCA");

	ks.getKey(key, "openscdp");
	ca.setSignerKey(key);

	var cert = ks.getCertificate("DEMOCA");
	ca.setSignerCertificate(cert);


	var subject = [ { C:"DE" }, { O:"CardContact" }, { OU:"CardContact Demo CA 1" }, { CN:"TLS server" } ];

	var pubKey = new Key();
	pubKey.setSize(2048);
	pubKey.setType(Key.PUBLIC);

	var priKey = new Key();
	priKey.setType(Key.PRIVATE);

	crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

	var extvalues = { dNSName: "www.openehic.org" };
	var cert = ca.issueCertificate(pubKey, subject, "TLSServer", extvalues);
	print(cert);

	var ks = new KeyStore("SUN", "PKCS12");

	priKey.setID("tlsserver");
	ks.setKey(priKey, "openscdp", [cert]);

	ks.store(X509CA.dir + "/www.openehic.org.jks", "openscdp");

	var p8Key = PKCS8.encodeKeyUsingPKCS8Format(priKey, pubKey);
	PKIXCommon.writeFileToDisk(X509CA.dir + "/www.openehic.org.pkcs8", p8Key);
	PKIXCommon.writeFileToDisk(X509CA.dir + "/www.openehic.org.cer", cert.getBytes());


	var subject = [ { C:"DE" }, { O:"CardContact" }, { OU:"CardContact Demo CA 1" }, { CN:"TLS client" } ];

	var pubKey = new Key();
	pubKey.setSize(2048);
	pubKey.setType(Key.PUBLIC);

	var priKey = new Key();
	priKey.setType(Key.PRIVATE);

	crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

	var cert = ca.issueCertificate(pubKey, subject, "TLSClient", null);
	print(cert);

	var ks = new KeyStore("SUN", "PKCS12");

	priKey.setID("tlsclient");
	ks.setKey(priKey, "openscdp", [cert]);

	ks.store(X509CA.dir + "/tlsclient.jks", "openscdp");

	var crl = ca.issueCRL();
	PKIXCommon.writeFileToDisk(X509CA.dir + "/democa.crl", crl);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A X509 certificate generator class following RFC5280
 */

var PKIXCommon = require("scsh/x509/PKIXCommon").PKIXCommon;



/**
 * Create a X.509 certificate generator.
 *
 * @class Class implementing a X.509 certificate generator
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider to use for signing operations
 */
function X509CertificateGenerator(crypto) {
	this.crypto = crypto;
	this.encodeECDomainParameter = true;
	this.reset();
}

exports.X509CertificateGenerator = X509CertificateGenerator;



/**
 * Resets all internal state variables.
 *
 */
X509CertificateGenerator.prototype.reset = function() {
	this.extensions = new Array();

}



/**
 * Sets the serial number.
 *
 * @param {ByteString} serialNumber the serial number for the certificate
 */
X509CertificateGenerator.prototype.setSerialNumber = function(serialNumber) {
	this.serialNumber = serialNumber;
}



/**
 * Sets the isser name.
 *
 * <p>The issuer name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * </pre>
 * @param {Object} issuer the issuer name
 */
X509CertificateGenerator.prototype.setIssuer = function(issuer) {
	this.issuer = issuer;
}



/**
 * Sets the effective date for the certificate.
 *
 * @param {String or Date} date the date in format YYMMDDHHMMSSZ
 */
X509CertificateGenerator.prototype.setNotBefore = function(date) {
	this.notBefore = date;
}



/**
 * Sets the expiration date for the certificate.
 *
 * @param {String or Date} date the date in format YYMMDDHHMMSSZ
 */
X509CertificateGenerator.prototype.setNotAfter = function(date) {
	this.notAfter = date;
}



/**
 * Sets the subject name.
 *
 * <p>The subject name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 * </pre>
 * @param {Object} subject the subject name
 */
X509CertificateGenerator.prototype.setSubject = function(subject) {
	this.subject = subject;
}



/**
 * Sets the subjects public key
 *
 * <p>The methods accepts ECC and RSA Public Keys.</p>
 *
 * @param {Key} publicKey the subjects public key
 */
X509CertificateGenerator.prototype.setPublicKey = function(publicKey) {
	this.publicKey = publicKey;
}



/**
 * Sets the signature algorithm.
 *
 * @param {Number} alg the signature algorithm.
 */
X509CertificateGenerator.prototype.setSignatureAlgorithm = function(alg) {
	this.signatureAlgorithm = alg;
}



/**
 * Adds an extension to the certificate
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        critical    BOOLEAN DEFAULT FALSE,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *</pre>
 * @param {String} extnID the extensions object identifier
 * @param {Boolean} critical the extension is critical
 * @param {ByteString} the extension value as ByteString
 */
X509CertificateGenerator.prototype.addExtension = function(extnID, critical, extnValue) {
	var t = new ASN1("extension", ASN1.SEQUENCE,
				new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	if (critical) {
		t.add(new ASN1("critical", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}

	t.add(new ASN1("extnValue", ASN1.OCTET_STRING, extnValue));
	this.extensions.push(t);

}



/**
 * Adds the key usage extension.
 *
 * <p>The following flags are defined:</p>
 * <pre>
 * PKIXCommon.digitalSignature = 0x0080;
 * PKIXCommon.nonRepudiation   = 0x0040;
 * PKIXCommon.keyEncipherment  = 0x0020;
 * PKIXCommon.dataEncipherment = 0x0010;
 * PKIXCommon.keyAgreement     = 0x0008;
 * PKIXCommon.keyCertSign      = 0x0004;
 * PKIXCommon.cRLSign          = 0x0002;
 * PKIXCommon.encipherOnly     = 0x0001;
 * PKIXCommon.decipherOnly     = 0x8000;
 * </pre>
 * @param {Number} the key usage flags as combination of the flags defined above.
 */
X509CertificateGenerator.prototype.addKeyUsageExtension = function(flags) {
	var t = new ASN1(ASN1.BIT_STRING, PKIXCommon.bitstringForInteger(flags));
	this.addExtension("2.5.29.15", true, t.getBytes());
}

// Deprecated: Use PKIXCommon. instead
X509CertificateGenerator.digitalSignature	= 0x0080;
X509CertificateGenerator.nonRepudiation		= 0x0040;
X509CertificateGenerator.keyEncipherment	= 0x0020;
X509CertificateGenerator.dataEncipherment	= 0x0010;
X509CertificateGenerator.keyAgreement		= 0x0008;
X509CertificateGenerator.keyCertSign		= 0x0004;
X509CertificateGenerator.cRLSign			= 0x0002;
X509CertificateGenerator.encipherOnly		= 0x0001;
X509CertificateGenerator.decipherOnly		= 0x8000;



/**
 * Adds the BasicConstraints extension.
 *
 * @param {Boolean} cA the certificate belongs to a CA
 * @param {Number} pathLenConstraint the maximum number of subordinate CA certificates
 */
X509CertificateGenerator.prototype.addBasicConstraintsExtension = function(cA, pathLenConstraint) {
	var t = new ASN1("BasicConstraints",ASN1.SEQUENCE);
	if (cA) {
		t.add(new ASN1("cA", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}
	if (pathLenConstraint >= 0) {
		var bb = new ByteBuffer();
		bb.append(pathLenConstraint);
		t.add(new ASN1("pathLenConstraint", ASN1.INTEGER, bb.toByteString()));
	}
	this.addExtension("2.5.29.19", true, t.getBytes());
}



/**
 * Adds the subject public key identifier extension based on the certificates subject key.
 *
 * <p>The key identifier is calculated as SHA-1 hash over the contents of the
 * subject public key (Without tag, length and number of unused bits.</p>
 */
X509CertificateGenerator.prototype.addSubjectKeyIdentifierExtension = function() {
	var spi = this.getSubjectPublicKeyInfo();
	var keyvalue = spi.get(1).value.bytes(1);
	var crypto = new Crypto();
	var hash = crypto.digest(Crypto.SHA_1, keyvalue);

	var t = new ASN1(ASN1.OCTET_STRING, hash);
	this.addExtension("2.5.29.14", false, t.getBytes());
}



/**
 * Adds the authority public key identifier extension based on the issuers key.
 *
 * <p>The key identifier is calculated as SHA-1 hash over the contents of the
 * issuer public key (Without tag, length and number of unused bits.</p>
 *
 * @param {Key/ByteString} publicKeyOrId the authority subject key or authority key identifier
 */
X509CertificateGenerator.prototype.addAuthorityKeyIdentifierExtension = function(publicKeyOrId) {
	if (publicKeyOrId instanceof Key) {
		if (publicKeyOrId.getComponent(Key.MODULUS)) {
			var spi = PKIXCommon.createRSASubjectPublicKeyInfo(publicKeyOrId);
		} else {
			var spi = PKIXCommon.createECSubjectPublicKeyInfo(publicKeyOrId, this.encodeECDomainParameter);
		}

		var keyvalue = spi.get(1).value.bytes(1);
		var crypto = new Crypto();
		var hash = crypto.digest(Crypto.SHA_1, keyvalue);
	} else {
		var hash = publicKeyOrId;
	}

	var t = new ASN1(ASN1.SEQUENCE,
					new ASN1(0x80, hash)
	);
	this.addExtension("2.5.29.35", false, t.getBytes());
}



/**
 * Adds the CRL distribution point URLs.
 *
 * @param {String[]} url a list of URLs
 */
X509CertificateGenerator.prototype.addCRLDistributionPointURL = function(url) {
	var t = new ASN1("cRLDistributionPoints", ASN1.SEQUENCE);

	for (var i = 0; i < url.length; i++) {
		t.add(	new ASN1("cRLDistributionPoint", ASN1.SEQUENCE,
					new ASN1("distributionPoint", 0xA0,
						new ASN1("fullName", 0xA0,
							new ASN1("uniformResourceIdentifier", 0x86, new ByteString(url[i], ASCII))
						)
					)
				));
	}
	this.addExtension("id-ce-cRLDistributionPoints", false, t.getBytes());
}



/**
 * Adds the extended key usage extension
 *
 * @param {String[]} oids the list of object identifier names
 * @param {Boolean} critical the extension is critical
 */
X509CertificateGenerator.prototype.addExtendedKeyUsages = function(oids, critical) {
	var t = new ASN1("extKeyUsages", ASN1.SEQUENCE);

	for (var i = 0; i < oids.length; i++) {
		t.add( new ASN1("keyPurposeId", ASN1.OBJECT_IDENTIFIER, new ByteString(oids[i], OID) ));
	}
	this.addExtension("id-ce-extKeyUsage", critical, t.getBytes());
}



/**
 * Gets the issuer name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
X509CertificateGenerator.prototype.getIssuer = function() {
	if (this.issuer instanceof ASN1) {
		return this.issuer;
	} else {
		return PKIXCommon.encodeName(this.issuer);
	}
}



/**
 * Gets the certificate validity as TLV object
 *
 * @return the certificates validity
 * @type ASN1
 */
X509CertificateGenerator.prototype.getValidity = function() {
	var t = new ASN1("validity", ASN1.SEQUENCE);

	var ts = this.notBefore;
	if (typeof(ts) != "string") {
		ts = PKIXCommon.dtoUTC(this.notBefore);
	}
	if (ts >= "500101000000Z") {
		ts = "20" + ts;
		t.add(new ASN1("notBefore", ASN1.GeneralizedTime, new ByteString(ts, ASCII)));
	} else {
		t.add(new ASN1("notBefore", ASN1.UTCTime, new ByteString(ts, ASCII)));
	}

	var ts = this.notAfter;
	if (typeof(ts) != "string") {
		ts = PKIXCommon.dtoUTC(this.notAfter);
	}
	if (ts >= "500101000000Z") {
		ts = "20" + ts;
		t.add(new ASN1("notAfter", ASN1.GeneralizedTime, new ByteString(ts, ASCII)));
	} else {
		t.add(new ASN1("notAfter", ASN1.UTCTime, new ByteString(ts, ASCII)));
	}
	return t;
}



/**
 * Gets the subject name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
X509CertificateGenerator.prototype.getSubject = function() {
	if (this.subject instanceof ASN1) {
		return this.subject;
	} else {
		return PKIXCommon.encodeName(this.subject);
	}
}



/**
 * Gets the subject's public key as TLV object
 *
 * @return the subject's public key info
 * @type ASN1
 */
X509CertificateGenerator.prototype.getSubjectPublicKeyInfo = function() {
	if (this.publicKey.getComponent(Key.MODULUS)) {
		return PKIXCommon.createRSASubjectPublicKeyInfo(this.publicKey);
	} else {
		return PKIXCommon.createECSubjectPublicKeyInfo(this.publicKey, this.encodeECDomainParameter);
	}
}



/**
 * Gets the certificate extension as TLV object
 *
 * @return the certificate extensions
 * @type ASN1
 */
X509CertificateGenerator.prototype.getExtensions = function() {
	var t = new ASN1("extensions", 0xA3);
	var s = new ASN1("extensions", ASN1.SEQUENCE);

	t.add(s);

	for (var i = 0; i < this.extensions.length; i++) {
		s.add(this.extensions[i]);
	}
	return t;
}



/**
 * Gets the part of the certificate that will be signed
 *
 * @return the TBSCertificate part
 * @type ASN1
 */
X509CertificateGenerator.prototype.getTbsCertificate = function() {
	var t = new ASN1("tbsCertificate", ASN1.SEQUENCE);
	t.add(new ASN1("version", 0xA0,
			new ASN1("version", ASN1.INTEGER, new ByteString("02", HEX))));
	t.add(new ASN1("serialNumber", ASN1.INTEGER, PKIXCommon.convertUnsignedInteger(this.serialNumber)));
	t.add(this.getSignatureAlgorithm());
	t.add(this.getIssuer());
	t.add(this.getValidity());
	t.add(this.getSubject());
	t.add(this.getSubjectPublicKeyInfo());
	t.add(this.getExtensions());
	return t;
}



/**
 * Gets the signature algorithm TLV object
 *
 * @return the signature algorithm object
 * @type ASN1
 */
X509CertificateGenerator.prototype.getSignatureAlgorithm = function() {
	return PKIXCommon.encodeSignatureAlgorithm(this.signatureAlgorithm);
}



/**
 * Generates the certificate.
 *
 * @return the generated certificate
 * @type X509
 */
X509CertificateGenerator.prototype.generateX509Certificate = function(privateKey) {
	var certificate = new ASN1("certificate", ASN1.SEQUENCE);

	var tbs = this.getTbsCertificate();
	certificate.add(tbs);
	certificate.add(this.getSignatureAlgorithm());

	var signature = this.crypto.sign(privateKey, this.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString("00", HEX)).concat(signature);

	var signatureValue = new ASN1("signatureValue", ASN1.BIT_STRING, signature);
	certificate.add(signatureValue);

//	print(certificate);
	return new X509(certificate.getBytes());
}



X509CertificateGenerator.RSATest = function() {

	var crypto = new Crypto();

	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setSize(1024);

	crypto.generateKeyPair(Crypto.RSA, caPublicKey, caPrivateKey);

//	var caPrivKey = new Key("profiles/kp_rsa_private.xml");

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString("01", HEX));
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
	x.setIssuer(issuer);
	x.setNotBefore("060825120000Z");
	x.setNotAfter("160825120000Z");
	var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Joe Doe" };
	x.setSubject(subject);

	x.setPublicKey(caPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );

	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(caPublicKey);

	var cert = x.generateX509Certificate(caPrivateKey);
	var fn = GPSystem.mapFilename("cert_rsa.cer", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, cert.getBytes());

	cert.verifyWith(cert);

	print(cert);
}



X509CertificateGenerator.ECCTest = function() {

	var crypto = new Crypto();

	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));

	crypto.generateKeyPair(Crypto.EC, caPublicKey, caPrivateKey);

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString("01", HEX));
	x.setSignatureAlgorithm(Crypto.ECDSA_SHA256);
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
	x.setIssuer(issuer);
	var t = new Date();
	x.setNotBefore(t);
	x.setNotAfter(PKIXCommon.addDays(t, 180));
	var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Joe Doe" };
	x.setSubject(subject);

	x.setPublicKey(caPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );

	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(caPublicKey);

	var cert = x.generateX509Certificate(caPrivateKey);

	var fn = GPSystem.mapFilename("cert_ecc.cer", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, cert.getBytes());

	cert.verifyWith(cert);

	print(cert);
	print(new ASN1(cert.getBytes()));
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A Issuer for X.509 Certificates
 */

var X509Signer = require('scsh/x509/X509Signer').X509Signer;

var PKIXCommon = require("scsh/x509/PKIXCommon").PKIXCommon;
var X509CertificateGenerator = require("scsh/x509/X509CertificateGenerator").X509CertificateGenerator;
var CRLGenerator = require("scsh/x509/CRLGenerator").CRLGenerator;



/**
 * Create a certification authority that issues X.509 certificates and CRLs
 *
 * @class Class implementing a certification authority issuing X.509 certificates and CRLs
 * @constructor
 * @param {DAOFactory} daof the factory that can create the required data access objects
 * @param {CryptoProviderFactory} cpf factory implementing getCryptoProvider() used to get access to crypto providers
 * @param {Holder} holder the holder object for this signer the database
 */
function X509CertificateIssuer(daof, cpf, holder) {
	X509Signer.call(this, daof, cpf, holder);
	this.crldp = [];
}

X509CertificateIssuer.prototype = Object.create(X509Signer.prototype);
X509CertificateIssuer.constructor = X509CertificateIssuer;

exports.X509CertificateIssuer = X509CertificateIssuer;



/**
 * Create a new certificate issuer
 *
 * @param {DAOFactory} daof the factory that can create the required data access objects
 * @param {String/Number} pathOrHolderId the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM") or the holderId from the database
 * @param {Number} certtype optional argument, default Holder.X509
 * @type Number
 * @return the newly created holder id
 */
X509CertificateIssuer.createCertificateIssuer = function(daof, pathOrHolderId, certtype, template) {
	return X509Signer.createSigner(daof, pathOrHolderId, certtype, template);
}



/**
 * Add a CRL distribution point to issued certificates
 *
 * @param {String} crldp the URL of the distribution point
 */
X509CertificateIssuer.prototype.addCRLDistributionPoint = function(crldp) {
	this.crldp.push(crldp);
}



/**
 * Create a new randomly generated certificate serial number
 *
 * @private
 * @type ByteString
 * @return a 8 byte bytestring that resembles an unsigned integer
 */
X509CertificateIssuer.prototype.newSerialNumber = function() {
	var crypto = new Crypto();
	var serial = crypto.generateRandom(8);

	// Strip first bit to make integer unsigned
	if (serial.byteAt(0) > 0x7F) {
		serial = ByteString.valueOf(serial.byteAt(0) & 0x7F).concat(serial.bytes(1));
	}
	return serial;
}



/**
 * Issue a self-signed certificate for the given keyId.
 *
 * The key must have been previously generated using the newSigner() method
 *
 * @param {ByteString} keyId the subject key identifier
 * @param {Number} srId service request id to be stored with issued certificate
 */
X509CertificateIssuer.prototype.issueSelfSignedCertificate = function(keyId, srId) {

	if (keyId) {
		var signerDAO = this.daof.getSignerDAO();
		var signer = signerDAO.getSignerByKeyId(this.holder, keyId);
	} else {
		var signer = this.signer;
	}

	if (!signer) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "No signer with keyId " + keyId + " found");
	}

	var cp = this.cpf.getCryptoProvider(signer.keyDomain, true);

	if (!cp) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "Signer is offline (Key Domain : " + this.signer.keyDomain + ")");
	}

	try	{
		var prk = cp.getPrivateKeyByKeyId(signer.keyId, signer.keyblob);

		if (prk == null) {
			throw new GPError(module.id, GPError.INVALID_DATA, 1, "No key with keyId " + signer.keyId + " found");
		}

		var req = this.getRequest(signer.keyId);

		if (req == null) {
			throw new GPError(module.id, GPError.INVALID_DATA, 1, "No request with keyId " + signer.keyId + " found");
		}

		var pub = req.getPublicKey();

		if (typeof(this.policy.restrictPublicKey) != "undefined") {
			pub.algorithmIdentifier = PKIXCommon.restrictedPublicKeyAlgorithmIdentifier(this.policy.restrictPublicKey);
		}

		var gen = new X509CertificateGenerator(cp.getCrypto());
		gen.encodeECDomainParameter = false;

		gen.reset();
		gen.setSerialNumber(this.newSerialNumber());
		gen.setSignatureAlgorithm(this.policy.signatureAlgorithm);
		var subject = req.getSubject();
		gen.setIssuer(subject);
		var ced = new Date();
		var cxd = PKIXCommon.addDays(ced, this.policy.validityDaysSelfSigned);
		gen.setNotBefore(ced);
		gen.setNotAfter(cxd);
		gen.setSubject(subject);
		gen.setPublicKey(pub);
		gen.addSubjectKeyIdentifierExtension();
		gen.addKeyUsageExtension(PKIXCommon.keyCertSign | PKIXCommon.cRLSign );
		gen.addBasicConstraintsExtension(true, this.policy.pathLenConstraint);

		var cert = gen.generateX509Certificate(prk);

		var id = this.storeCertificate(cert, true, signer.keyId, srId);
	}
	finally {
		cp.release();
	}

	return { id: id, cert: cert };
}



/**
 * Issue a new certificate for the given subject and public key
 *
 * @param {Number/String/Object} certholder the holder id, path or object
 * @param {Key} pubkey the public key
 * @param {Object} subject in ASN1 format or a format accepted by PKIXCommon.encodeName()
 * @param {Object[]} extensions array of certificate extensions objects with properties oid{String}, critical{boolean} and value{ByteString}
 * @param {Number} srId service request id to be stored with issued certificate
 * @type X509
 * @return the newly generated certificate
 */
X509CertificateIssuer.prototype.issueCertificate = function(certholder, pubkey, subject, extensions, srId) {
	assert(pubkey instanceof Key, "Argument pubkey must be instance of Key");

	if (typeof(certholder) != "object") {
		var holderdao = this.daof.getHolderDAO();

		if (typeof(pathOrHolderId) == "string") {
			certholder = holderdao.getHolder(certholder);
		} else {
			certholder = holderdao.getHolderById(certholder);
		}
	}

	if (!certholder) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "Holder " + certholder + " not found");
	}

	var icert = this.getSignerCertificate();

	if (!icert) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "No active signer found");
	}

	var cp = this.cpf.getCryptoProvider(this.signer.keyDomain, true);

	if (!cp) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "Signer is offline (Key Domain : " + this.signer.keyDomain + ")");
	}

	try	{
		var prk = cp.getPrivateKeyByKeyId(this.signer.keyId, this.signer.keyblob);

		if (prk == null) {
			throw new GPError(module.id, GPError.INVALID_DATA, 1, "No key with keyId " + this.signer.keyId + " found");
		}

		var issuer = PKIXCommon.getSubjectAsASN1(icert);

		var gen = new X509CertificateGenerator(cp.getCrypto());
		gen.encodeECDomainParameter = false;

		gen.reset();
		gen.setSerialNumber(this.newSerialNumber());
		gen.setSignatureAlgorithm(this.policy.signatureAlgorithm);
		gen.setIssuer(issuer);
		var ced = new Date();
		var cxd = PKIXCommon.addDays(ced, this.policy.validityDaysCertificates);
		gen.setNotBefore(ced);
		gen.setNotAfter(cxd);
		gen.setSubject(subject);
		gen.setPublicKey(pubkey);
		gen.addSubjectKeyIdentifierExtension();
		gen.addAuthorityKeyIdentifierExtension(icert.getSubjectKeyIdentifier());

		if ((typeof(this.policy.pathLenConstraint) != "undefined") && (this.policy.pathLenConstraint > 0)) {
			gen.addBasicConstraintsExtension(true, this.policy.pathLenConstraint - 1);
		} else {
			gen.addBasicConstraintsExtension(false, 0);
		}

		if (this.crldp.length > 0) {
			gen.addCRLDistributionPointURL(this.crldp);
		}

		if (typeof(extensions) == "object") {
			for (var i = 0; i < extensions.length; i++) {
				gen.addExtension(extensions[i].oid, extensions[i].critical, extensions[i].value);
			}
		}

		var cert = gen.generateX509Certificate(prk);

		var id = this.storeCertificateForHolder(certholder, cert, false, undefined, srId);
	}
	finally {
		cp.release();
	}
	return { id: id, cert: cert };
}



/**
 * Extension handler method for Sub-CA certificates
 *
 * @private
 */
X509CertificateIssuer.prototype.addExtForSubCA = function(certgen, extvalues) {

	certgen.addKeyUsageExtension(PKIXCommon.keyCertSign | PKIXCommon.cRLSign );
	certgen.addBasicConstraintsExtension(true, this.policy.pathLenConstraint - 1);
}



/**
 * Extension handler method for TLS server certificates
 *
 * @private
 */
X509CertificateIssuer.prototype.addExtForTLSServer = function(certgen, extvalues) {

	certgen.addKeyUsageExtension( PKIXCommon.keyAgreement | PKIXCommon.keyEncipherment);
	certgen.addBasicConstraintsExtension(false, 0);

	certgen.addExtendedKeyUsages(["id-csn-369791-tls-server", "id-kp-serverAuth"]);

	var ext = new ASN1("subjectAltName", ASN1.SEQUENCE,
						new ASN1("dNSName", 0x82, new ByteString(extvalues["dNSName"], ASCII))
					);
	certgen.addExtension("id-ce-subjectAltName", false, ext.getBytes());
}



/**
 * Extension handler method for TLS client certificates
 *
 * @private
 */
X509CertificateIssuer.prototype.addExtForTLSClient = function(certgen, extvalues) {
	certgen.addKeyUsageExtension( PKIXCommon.digitalSignature);
	certgen.addBasicConstraintsExtension(false, 0);

	// certgen.addExtendedKeyUsages(["id-csn-369791-tls-client", "id-kp-clientAuth"]);
	certgen.addExtendedKeyUsages(["id-kp-clientAuth"]);
}



/**
 * Extension handler method for certificates suitable for TLS client authentication and e-Mail signature and encryption
 *
 * @private
 */
X509CertificateIssuer.prototype.addExtForEmailAndTLSClient = function(certgen, extvalues) {

	certgen.addKeyUsageExtension( PKIXCommon.digitalSignature | PKIXCommon.keyEncipherment);
	certgen.addBasicConstraintsExtension(false, 0);

	var ext = new ASN1("subjectAltName", ASN1.SEQUENCE,
						new ASN1("rfc822Name", 0x81, new ByteString(extvalues["email"], ASCII))
					);
	certgen.addExtension("id-ce-subjectAltName", false, ext.getBytes());

	certgen.addExtendedKeyUsages(["id-kp-clientAuth", "id-kp-emailProtection"]);
}



/**
 * Issue a CRL
 *
 * @type CRL
 * @return the newly issued CRL
 */
X509CertificateIssuer.prototype.issueCRL = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "issueCRL()");

	var icert = this.getSignerCertificate();
	if (!icert) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "No active signer found");
	}

	var c = this.signer.getContent();
	if (c && c.crl) {
		var latestCRL = new CRLGenerator();
		var crlNumber = latestCRL.loadCRLEntries(new ByteString(c.crl, HEX));
		crlNumber++;
	}

	var cp = this.cpf.getCryptoProvider(this.signer.keyDomain, true);

	if (!cp) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "Signer is offline (Key Domain : " + this.signer.keyDomain + ")");
	}

	try	{
		var prk = cp.getPrivateKeyByKeyId(this.signer.keyId, this.signer.keyblob);

		if (prk == null) {
			throw new GPError(module.id, GPError.INVALID_DATA, 1, "No key with keyId " + this.signer.keyId + " found");
		}

		var x = new CRLGenerator(cp.getCrypto());

		x.reset();
		x.setSignatureAlgorithm(this.policy.signatureAlgorithm);
		var issuer = PKIXCommon.getSubjectAsASN1(icert);
		x.setIssuer(issuer);
		var now = new Date();
		x.setThisUpdate(now);
		x.setNextUpdate(PKIXCommon.addDays(now, this.policy.validityDaysCRL));

		var certdao = this.daof.getCertificateDAO();
		var revocationList = certdao.getRevokedCertificates(this.holder.id, now);

		for each (var cert in revocationList) {
			var serial = new ByteString(cert.serial, HEX);

			var reason = this.mapStatusToReasonCode(cert.status);

			if (cert.revocationDate) {
				var revocationDate = cert.revocationDate;
			} else {
				var revocationDate = now;
				certdao.updateRevocationDate(cert.id, now);
			}

			if (cert.invalidityDate) {
				var invalidityDate = cert.invalidityDate;
			} else {
				var invalidityDate = now;
			}
			var extensions = new ASN1("crlExtensions", ASN1.SEQUENCE);
			extensions.add(x.createInvalidityDateExt(invalidityDate));

			x.revokeCertificate(serial, revocationDate, reason, extensions);
		}

		if (!crlNumber) {
			var crlNumber = 1;
		}
		x.addCRLNumberExtension(crlNumber);

		var crl = x.generateCRL(prk);

		c.crl = crl.getBytes().toString(HEX);
		this.signer.setContent(c);
		var signerDAO = this.daof.getSignerDAO();
		signerDAO.updateContent(this.signer);
	}
	finally {
		cp.release();
	}
	return crl;
}



X509CertificateIssuer.prototype.mapStatusToReasonCode = function(status) {
	switch(status) {
	  case OCSPQuery.REVOKED:
		return null; // "...the reason code CRL entry extension SHOULD be absent instead of using the unspecified (0) reasonCode value." [RFC 5280, 5.3.1]
	  case OCSPQuery.KEYCOMPROMISE:
		return CRLGenerator.keyCompromise;
	  case OCSPQuery.CACOMPROMISE:
		return CRLGenerator.cACompromise;
	  case OCSPQuery.AFFILIATIONCHANGED:
		return CRLGenerator.affiliationChanged;
	  case OCSPQuery.SUPERSEDED:
		return CRLGenerator.superseded;
	  case OCSPQuery.CESSATIONOFOPERATION:
		return CRLGenerator.cessationOfOperation;
	  case OCSPQuery.CERTIFICATEHOLD:
		return CRLGenerator.certificateHold;
	  case OCSPQuery.REMOVEFROMCRL:
		return CRLGenerator.removeFromCRL;
	  case OCSPQuery.PRIVILEGEWITHDRAWN:
		return CRLGenerator.privilegeWithdrawn;
	  case OCSPQuery.AACOMPROMISE:
		return CRLGenerator.aACompromise;
	}

 	throw new GPError(module.id, GPError.INVALID_DATA, 1, "Unexpected status: " + status);
}



X509CertificateIssuer.prototype.getDNMask = function(holderId) {
	var signer = this.getSigner();
	var c = signer.getContent();
	return c.dnmask;
}



X509CertificateIssuer.prototype.isOperational = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "isOperational()");

	var icert = this.getSignerCertificate();
	if (!icert) {
		// No active signer found
		return false;
	}

	var cp = this.cpf.getCryptoProvider(this.signer.keyDomain, true);

	if (!cp) {
		// Signer offline
		return false;
	}

	try	{
		var prk = cp.getPrivateKeyByKeyId(this.signer.keyId, this.signer.keyblob);

		if (prk == null) {
			// Key not found
			return false;
		}
	} finally {
		cp.release();
	}

	return true;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Generic X509 certificate, request and key store
 */

var PKIXCommon = require('scsh/x509/PKIXCommon').PKIXCommon;
var Certificate = require('scsh/pki-db/Certificate').Certificate;
var Holder = require('scsh/pki-db/Holder').Holder;
var LongDate = require('scsh/pki-db/LongDate').LongDate;
var PKCS8 = require('scsh/pkcs/PKCS8').PKCS8;
var PKCS10 = require('scsh/pkcs/PKCS10').PKCS10;


/**
 * Create an object to access a X509 certificate store.
 *
 * @class Class that abstracts a certificate, request and key store for a X509 PKI.
 *
 * @constructor
 * @param {DAOFactory} DAOFactory the factory that can create data access objects for persistent information
 */
function X509CertificateStore(daof) {
	assert(daof, "Parameter doaf can't be empty");

	this.daof = daof;
	this.certtype = Holder.X509;
}

exports.X509CertificateStore = X509CertificateStore;



/**
 * Strip the last element of the path, effectively defining the parent within the path
 *
 * @param {String} path the path to strip the last element from
 * @returns the parent path or null for the root
 * @type String
 */
X509CertificateStore.parentPathOf = function(path) {
	assert(typeof(path) == "string", "Argument path must be string");
	var ofs = path.lastIndexOf("/");
	if (ofs <= 0) {
		return null;
	}
	return path.substr(0, ofs);
}



/**
 * Return the n-element of the path
 *
 * @param {String} path the path to return the last element from
 * @returns the last path element or null for the root
 * @type String
 */
X509CertificateStore.nthElementOf = function(path, n) {
	assert(typeof(path) == "string", "Argument path must be string");
	var pe = path.substr(1).split("/");
	if (typeof(n) == "undefined") {
		return pe[pe.length - 1];
	}
	return pe[n];
}



/**
 * Return a suitable crypto object. This may be overwritten by derived classes
 *
 * @type Crypto
 * @return the Crypto object
 */
X509CertificateStore.prototype.getCrypto = function() {
	if (this.crypto == undefined) {
		this.crypto = new Crypto();
	}
	return this.crypto;
}



/**
 * Check if holder exists for path or holderId
 *
 * @param {String/Number} pathOrHolderId
 * @type Holder
 * @return true if holder exists
 * @private
 */
X509CertificateStore.prototype.hasHolder = function(pathOrHolderId) {
	var holderdao = this.daof.getHolderDAO();

	if (typeof(pathOrHolderId) == "number") {
		var holder = holderdao.getHolderById(pathOrHolderId, this.certtype);
	} else {
		var holder = holderdao.getHolder(pathOrHolderId, this.certtype);
	}
	return holder != null;
}



/**
 * List certificate holders for a given PKI element
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @returns a list of holder ids, possibly empty
 * @type String[]
 */
X509CertificateStore.prototype.listHolders = function(pathOrHolderId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "listHolders(" + pathOrHolderId + ")");

	var holderdao = this.daof.getHolderDAO();

	var result = holderdao.getHolderList(pathOrHolderId, this.certtype);
	return result;
}



/**
 * Get existing holder object for given path or holderId
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {Boolean} create create if holder doesn't exist
 * @type Holder
 * @return the holder object
 * @private
 */
X509CertificateStore.prototype.getHolder = function(pathOrHolderId, create) {
	var holderdao = this.daof.getHolderDAO();

	if (typeof(pathOrHolderId) == "number") {
		var holder = holderdao.getHolderById(pathOrHolderId, this.certtype);
	} else {
		var holder = holderdao.getHolder(pathOrHolderId, this.certtype);
	}

	if (!holder) {
		if (!create) {
			throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate holder for " + pathOrHolderId);
		}
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found, creating new.");
		if (typeof(pathOrHolderId) == "number") {
			holder = holderdao.newHolderWithParent(0, this.certtype);
		} else {
			holder = holderdao.newHolder(pathOrHolderId, this.certtype);
		}
	}

	return holder;
}



/**
 * Create new signer based on key pair generated externally
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {String} name the unique name of the signer in the holder context
 * @param {Key} puk the public key
 * @param {ByteString} keyblob the wrapped private key
 * @type ByteString
 * @return the subject key identifier
 */
X509CertificateStore.prototype.newSigner = function(pathOrHolderId, name, puk, keyblob) {
	GPSystem.log(GPSystem.DEBUG, module.id, "newSigner(" + pathOrHolderId + "," + name + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var keyId = PKIXCommon.determineKeyIdentifier(puk);

	var template = {};

	if (keyblob instanceof ByteString)  {
		template.keyblob = keyblob;
	}

	var signerDAO = this.daof.getSignerDAO();
	signerDAO.newSigner(holder, name, keyId, template);
	return keyId;
}



/**
 * Get the signer identified by the keyId
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {ByteString} keyId the key identifier
 * @type Signer
 * @return this Signer object
 */
X509CertificateStore.prototype.getSigner = function(pathOrHolderId, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner(" + pathOrHolderId + "," + keyId + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var signerDAO = this.daof.getSignerDAO();

	var signer = signerDAO.getSignerByKeyId(holder, keyId);

	if (!signer) {
		return null;
	}

	return signer;
}



/**
 * Generate key pair
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {String} name the unique name of the signer in the holder context
 * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
 * @param {Key} prk the private key template
 * @param {Key} puk the public key template
 * @type ByteString
 * @return the subject key identifier
 */
X509CertificateStore.prototype.generateKeyPair = function(pathOrHolderId, name, algo, prk, puk) {
	GPSystem.log(GPSystem.DEBUG, module.id, "generateKeyPair(" + pathOrHolderId + "," + name + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var crypto = this.getCrypto();

	// Generate key pair
	crypto.generateKeyPair(algo, puk, prk);

	var keyId = PKIXCommon.determineKeyIdentifier(puk);

	var template = {
		keyblob: PKCS8.encodeKeyUsingPKCS8Format(prk)
	};

	var signerDAO = this.daof.getSignerDAO();
	signerDAO.newSigner(holder, name, keyId, template);
	return keyId;
}



/**
 * Get a private key in the certificate store
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {String} name the unique name of the signer in the holder context
 * @returns the private key or null if not found
 * @type Key
 */
X509CertificateStore.prototype.getPrivateKeyByName = function(pathOrHolderId, name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPrivateKey(" + pathOrHolderId + "," + name + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.getSignerByName(holder, name);

	if (!signer) {
		return signer;
	}

	return PKCS8.decodeKeyFromPKCS8Format(signer.keyblob);
}



/**
 * Get a private key in the certificate store
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {ByteString} keyId the unique key identifier
 * @returns the private key or null if not found
 * @type Key
 */
X509CertificateStore.prototype.getPrivateKeyByKeyId = function(pathOrHolderId, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getPrivateKeyByKeyId(" + pathOrHolderId + "," + keyId + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.getSignerByKeyId(holder, keyId);

	if (!signer) {
		return signer;
	}

	return PKCS8.decodeKeyFromPKCS8Format(signer.keyblob);
}



/**
 * Remove private key
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {String} name the unique name of the signer in the holder context
 * @returns true is deleted
 * @type boolean
 */
X509CertificateStore.prototype.deletePrivateKey = function(pathOrHolderId, name) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteRequest(" + pathOrHolderId + "," + name + ")");

	var holder = this.getHolder(pathOrHolderId, true);

	var signerDAO = this.daof.getSignerDAO();
	var signer = signerDAO.getSignerByName(holder, name.toString());

	if (!signer) {
		return false;
	}

	return signerDAO.deleteSigner(signer);
}



/**
 * Remove request
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {ByteString} keyId the unique keyId of the request in the holder context
 * @returns true is deleted
 * @type boolean
 */
X509CertificateStore.prototype.deleteRequest = function(pathOrHolderId, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "deleteRequest(" + pathOrHolderId + "," + keyId + ")");

	var holder = this.getHolder(pathOrHolderId, true);

	var requestDAO = this.daof.getRequestDAO();
	var request = requestDAO.getRequestByKeyId(holder, keyId);

	if (!request) {
		return false;
	}

	return requestDAO.deleteRequest(request);
}



/**
 * Store a certificate request in the certificate store
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {PKCS10} req the request
 * @type ByteString
 * @return the request's keyId
 */
X509CertificateStore.prototype.storeRequest = function(pathOrHolderId, req) {
	GPSystem.log(GPSystem.DEBUG, module.id, "storeRequest(" + pathOrHolderId + "," + req + ")");

	var holder = this.getHolder(pathOrHolderId, true);

	var requestDAO = this.daof.getRequestDAO();

	var puk = req.getPublicKey();
	var keyId = PKIXCommon.determineKeyIdentifier(puk);

	requestDAO.newRequest(holder, keyId, req.getBytes());

	return keyId;
}



/**
 * Return request for given keyId
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {ByteString} keyId the unique keyId of the request in the holder context
 * @type PKCS10
 * @return the request or null
 */
X509CertificateStore.prototype.getRequest = function(pathOrHolderId, keyId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getRequest(" + pathOrHolderId + "," + keyId + ")");

	var holder = this.getHolder(pathOrHolderId, true);

	var requestDAO = this.daof.getRequestDAO();
	var request = requestDAO.getRequestByKeyId(holder, keyId);

	var req = new PKCS10(request.bytes);
	return req;
}



/**
 * Store a certificate in the certificate store
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @param {X509} cert the certificate
 * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
 * @param {Number} srId service request id to be stored with issued certificate (optional)
 * @type Certificate
 * @return the Certificate entry from the database or null
 */
X509CertificateStore.prototype.storeCertificate = function(pathOrHolderId, cert, makeCurrent, srId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "storeCertificate(" + pathOrHolderId + ",'" + cert + "'," + makeCurrent + ")");

	var holderdao = this.daof.getHolderDAO();

	if (typeof(pathOrHolderId) == "number") {
		var holder = holderdao.getHolderById(pathOrHolderId, this.certtype);
		if (holder == null) {
			throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "Could not locate holder for id " + pathOrHolderId);
		}
	} else {
		var holder = holderdao.getHolder(pathOrHolderId, this.certtype);

		if (!holder) {
			GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found, creating new.");
			holder = holderdao.newHolder(pathOrHolderId, Holder.X509);
		}
	}

	var certdao = this.daof.getCertificateDAO();

	var issuer = cert.getIssuerDNString();
	var subject = cert.getSubjectDNString();
	var autid = cert.getAuthorityKeyIdentifier();
	var subid = cert.getSubjectKeyIdentifier();
	var serial = cert.getSerialNumber().toString(HEX);

	if ((autid && autid.equals(subid)) || issuer.equals(subject)) {
		dir = Certificate.SHORT;
	} else {
		dir = Certificate.UP;
	}

	var certificate = certdao.getCertificateBySerial(holder, serial, dir);

	if (certificate) {
		GPSystem.log(GPSystem.INFO, module.id, "storeCertificate() : We already have a different certificate for that serial number");
		GPSystem.log(GPSystem.INFO, module.id, "Existing: " + (new X509(certificate.bytes)));
		GPSystem.log(GPSystem.INFO, module.id, "New     : " + cert);

		return certificate;
	}

	var template = {
		keyId: PKIXCommon.determineKeyIdentifier(cert.getPublicKey()),
		expiry: new LongDate(cert.getNotAfter())
	};

	if (srId) {
		template.serviceRequestId = srId;
	}

	var certificate = certdao.newCertificate(holder, serial, dir, cert.getBytes(), template);

	if (makeCurrent || !holder.certId) {
		holderdao.updateCurrentCertificate(holder, certificate);
	}

	return certificate;
}



/**
 * Import a certificate that can be validated by one of certificates in the database.
 *
 * @param {X509} cert the certificate
 * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
 * @param {Number} srId service request id to be stored with issued certificate (optional)
 * @type Certificate
 * @return the Certificate entry from the database or null
 */
X509CertificateStore.prototype.importCertificate = function(cert, makeCurrent, srId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "importCertificate(" + cert + ")");

	var issuer = cert.getIssuerDNString();
	var subject = cert.getSubjectDNString();
	if (issuer.equals(subject)) {
		throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "importCertificate can not import self-signed certificates");
	}

	var certdao = this.daof.getCertificateDAO();

	var autid = cert.getAuthorityKeyIdentifier();
	var subid = cert.getSubjectKeyIdentifier();

	var certdto = certdao.getCertificateByKeyId(autid);

	if (certdto == null) {
		GPSystem.log(GPSystem.WARN, module.id, "No certificate with AuthorityKeyIdentifier " + autid.toString(HEX) + " found");
		return null;
	}

	var ca = new X509(certdto.bytes);
	cert.verifyWith(ca);

	var parentId = certdto.holderId;
	var name = PKIXCommon.makeName(PKIXCommon.parseDN(subject));

	var holderdao = this.daof.getHolderDAO();
	var holder = holderdao.getHolderByTypeAndName(parentId, name, Holder.X509);

	if (!holder) {
		GPSystem.log(GPSystem.DEBUG, module.id, "Holder not found, creating new.");
		holder = holderdao.newHolderForParent(parentId, Holder.X509, { name: name } );
	}

	var holderId = holder.id;

	return this.storeCertificate(holderId, cert, makeCurrent, srId);
}



/**
 * Get current key id
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @type ByteString
 * @return the current key id or null if none defined
 */
X509CertificateStore.prototype.getCurrentKeyIdAndCertificate = function(pathOrHolderId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentKeyId(" + pathOrHolderId + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var certdao = this.daof.getCertificateDAO();

	var certificate = certdao.getCurrentCertificate(holder);

	if (!certificate) {
		return null;
	}

	return { keyId: certificate.keyId, certificate: new X509(certificate.bytes) };
}



/**
 * Get current certificate for given path or holderId
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @type X509
 * @return the current certificate or null if none defined
 */
X509CertificateStore.prototype.getCurrentCertificate = function(pathOrHolderId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCertificate(" + pathOrHolderId + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var certdao = this.daof.getCertificateDAO();

	var certificate = certdao.getCurrentCertificate(holder);

	if (!certificate) {
		return null;
	}

	return new X509(certificate.bytes);
}



/**
 * Get certificate chain for given path or holderId
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @type X509[]
 * @return the certificate chain, starting with the current certificate of the holder and ending with the self-signed trust anchor
 */
X509CertificateStore.prototype.getCertificateChain = function(pathOrHolderId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCertificateChain(" + pathOrHolderId + ")");

	var chain = [];
	var certdao = this.daof.getCertificateDAO();

	do	{
		var holder = this.getHolder(pathOrHolderId, false);

		var certificate = certdao.getCurrentCertificate(holder);

		if (!certificate) {
			throw new GPError(module.id, GPError.INVALID_ARGUMENTS, 0, "No current certificate found for " + holder);
		}

		chain.push(new X509(certificate.bytes));
		pathOrHolderId = holder.parentId;
	} while (pathOrHolderId != undefined);

	return chain;
}



/**
 * Get current certificate for given path or holderId
 *
 * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
 * @type X509
 * @return the current certificate or null if none defined
 */
X509CertificateStore.prototype.getCurrentCertificateAndSigner = function(pathOrHolderId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "getCurrentCertificateAndSigner(" + pathOrHolderId + ")");

	var holder = this.getHolder(pathOrHolderId, false);

	var certdao = this.daof.getCertificateDAO();

	var certificate = certdao.getCurrentCertificate(holder);

	if (!certificate) {
		return null;
	}

	var cert = new X509(certificate.bytes);

	var signerDAO = this.daof.getSignerDAO();

	var signer = signerDAO.getSignerByKeyId(holder, certificate.keyId);

	if (!signer) {
		return null;
	}

	var prk = PKCS8.decodeKeyFromPKCS8Format(signer.keyblob);

	return { signerPrK: prk, signerCert: cert };
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview X509Name - Class to support X500 Names
 */

// 	Name ::= CHOICE {
// 	     RDNSequence }
//
// 	RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
//
// 	RelativeDistinguishedName ::=
// 		SET OF AttributeTypeAndValue
//
// 	AttributeTypeAndValue ::= SEQUENCE {
// 		type     AttributeType,
// 		value    AttributeValue }
//
// 	AttributeType ::= OBJECT IDENTIFIER
//
// 	AttributeValue ::= ANY DEFINED BY AttributeType



X509Name.name = "550429";
X509Name.surname = "550404";
X509Name.givenname = "55042A";
X509Name.initials = "55042B";
X509Name.generationQualifier = "55042C";
X509Name.commonName = "550403";
X509Name.localityName = "550407";
X509Name.stateOrProvinceName = "550408";
X509Name.organizationName = "55040A";
X509Name.organizationalUnitName = "55040B";
X509Name.title = "55040C";
X509Name.dnQualifier = "55042E";
X509Name.countryName = "550406";
X509Name.serialNumber = "550405";
X509Name.emailAddress = "2A864886F70D010901";



function X509Name(subjectDN) {
	this.rdn = new Array();
	this.parseRDNSequence(subjectDN);
}

exports.X509Name = X509Name;



X509Name.prototype.parseRDNSequence = function(rdnSeq) {
	if (rdnSeq instanceof ASN1) {
		if (!rdnSeq.isconstructed) {
			throw new GPError("X509Name", GPError.INVALID_DATA, 1, "Name must be constructed");
		}

		if (rdnSeq.tag != ASN1.SEQUENCE) {
			throw new GPError("X509Name", GPError.INVALID_DATA, 1, "RDNSequence must be SEQUENCE");
		}

		for (var i = 0; i < rdnSeq.elements; i++) {
			var set = rdnSeq.get(i)
			if (set.tag != ASN1.SET) {
				throw new GPError("X509Name", GPError.INVALID_DATA, 1, "RDNSequence must only contain SETs");
			}
			for (var j = 0; j < set.elements; j++) {
				var attr = set.get(j);
				if (attr.tag != ASN1.SEQUENCE) {
					throw new GPError("X509Name", GPError.INVALID_DATA, 1, "AttributeTypeAndValue must be SEQUENCE");
				}
				if (attr.elements != 2) {
					throw new GPError("X509Name", GPError.INVALID_DATA, 1, "AttributeTypeAndValue must have 2 elements");
				}
				var attrType = attr.get(0);
				if (attrType.tag != ASN1.OBJECT_IDENTIFIER) {
					throw new GPError("X509Name", GPError.INVALID_DATA, 1, "AttributeType must be OBJECT IDENTIFIER");
				}
				var oid = attrType.value.toString(HEX);
				var attrValue = attr.get(1);
				this.rdn[oid] = attrValue;
			}
		}
	} else {
		throw new GPError("X509Name", GPError.INVALID_TYPE, 1, "Argument must be of type ASN1");
	}
}



X509Name.prototype.hasRDN = function(oid) {
	return this.rdn[oid] != undefined;
}



X509Name.prototype.getRDNAsString = function(oid) {
	var r = this.rdn[oid];
	if (r == undefined) {
		throw new GPError("X509Name", GPError.INVALID_INDEX,0,"No matching RDN found");
	}

	if (r.tag == ASN1.UTF8String) {
		return r.value.toString(UTF8);
	} else {
		return r.value.toString(ASCII);
	}
}



X509Name.prototype.toString = function() {
	var result = "";

	if (this.hasRDN(X509Name.countryName)) {
		result += "C=" + this.getRDNAsString(X509Name.countryName);
	}

	if (this.hasRDN(X509Name.stateOrProvinceName)) {
		if (result.length > 0)
			result += ",";
		result += "ST=" + this.getRDNAsString(X509Name.stateOrProvinceName);
	}

	if (this.hasRDN(X509Name.organizationName)) {
		if (result.length > 0)
			result += ",";

		result += "O=" + this.getRDNAsString(X509Name.organizationName);
	}

	if (this.hasRDN(X509Name.organizationalUnitName)) {
		if (result.length > 0)
			result += ",";

		result += "OU=" + this.getRDNAsString(X509Name.organizationalUnitName);
	}

	if (this.hasRDN(X509Name.localityName)) {
		if (result.length > 0)
			result += ",";
		result += "L=" + this.getRDNAsString(X509Name.localityName);
	}

	if (this.hasRDN(X509Name.title)) {
		if (result.length > 0)
			result += ",";
		result += "T=" + this.getRDNAsString(X509Name.title);
	}

	if (this.hasRDN(X509Name.givenname)) {
		if (result.length > 0)
			result += ",";
		result += "G=" + this.getRDNAsString(X509Name.givenname);
	}

	if (this.hasRDN(X509Name.surname)) {
		if (result.length > 0)
			result += ",";
		result += "S=" + this.getRDNAsString(X509Name.surname);
	}

	if (this.hasRDN(X509Name.generationQualifier)) {
		if (result.length > 0)
			result += ",";
		result += "generationQualifier=" + this.getRDNAsString(X509Name.generationQualifier);
	}

	if (this.hasRDN(X509Name.name)) {
		if (result.length > 0)
			result += ",";
		result += "N=" + this.getRDNAsString(X509Name.name);
	}

	if (this.hasRDN(X509Name.initials)) {
		if (result.length > 0)
			result += ",";
		result += "initials=" + this.getRDNAsString(X509Name.initials);
	}

	if (this.hasRDN(X509Name.commonName)) {
		if (result.length > 0)
			result += ",";
		result += "CN=" + this.getRDNAsString(X509Name.commonName);
	}


	if (this.hasRDN(X509Name.serialNumber)) {
		if (result.length > 0)
			result += ",";
		result += "SERIALNUMBER=" + this.getRDNAsString(X509Name.serialNumber);
	}

	if (this.hasRDN(X509Name.dnQualifier)) {
		if (result.length > 0)
			result += ",";
		result += "DNQ=" + this.getRDNAsString(X509Name.dnQualifier);
	}

	if (this.hasRDN(X509Name.emailAddress)) {
		if (result.length > 0)
			result += ",";
		result += "E=" + this.getRDNAsString(X509Name.emailAddress);
	}

	return result;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A Signer backed by a X.509 certificate
 */

var Holder = require('scsh/pki-db/Holder').Holder;
var Certificate = require('scsh/pki-db/Certificate').Certificate;
var PKIXCommon = require('scsh/x509/PKIXCommon').PKIXCommon;
var PKCS10 = require('scsh/pkcs/PKCS10').PKCS10;
var PKCS10Generator = require('scsh/x509/PKCS10Generator').PKCS10Generator;
var LongDate = require('scsh/pki-db/LongDate').LongDate;



/**
 * Create a signer based on a X.509 certificate
 *
 * @class Class implementing a signer backed by a X.509 certificate
 * @constructor
 * @param {DAOFactory} daof the factory that can create the required data access objects
 * @param {CryptoProviderFactory} cpf factory implementing getCryptoProvider() used to get access to crypto providers
 * @param {Holder} holder the holder object for this signer
 */
function X509Signer(daof, cpf, holder) {
	this.daof = daof;
	this.cpf = cpf;
	this.holder = holder;

	if (this.holder == null) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "Certificate holder " + holder + " not found");
	}

	if (this.getSigner()) {
		this.parsePolicyFromSigner();
	}
}

exports.X509Signer = X509Signer;



/**
 * Create a new signer
 *
 * @param {DAOFactory} daof the factory that can create the required data access objects
 * @param {String/Number} pathOrHolderId the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM") or the holderId from the database
 * @param {Number} certtype optional argument, default Holder.X509
 * @param {Object} template template for database entry
 * @type Number
 * @return the newly created holder id
 */
X509Signer.createSigner = function(daof, pathOrHolderId, certtype, template) {
	if (typeof(certtype) == "undefined") {
		certtype = Holder.X509;
	}

	var holderdao = daof.getHolderDAO();
	if (typeof(pathOrHolderId) == "string") {
		var holder = holderdao.newHolder(pathOrHolderId, certtype, template);
	} else {
		if (typeof(pathOrHolderId) == "undefined") {
			pathOrHolderId = 0;
		}

		var holder = holderdao.newHolderForParent(pathOrHolderId, certtype, template);
	}

	return holder.id;
}



/**
 * Set policy for signer object.
 *
 * The policy object shall contain the following properties. Some elements are only used in the
 * derive X509CertificateIssuer class.
 *
 * <ul>
 * <li>distinguishedName - The distinguishedName object as defined in PKIXCommon.encodeName()</li>
 * <li>keySpecification - A Key object initialized with the key parameter.</li>
 * <li>signatureAlgorithm - A ByteString encoding the object identifier for the signature algorithm</li>
 * <li>validityDaysSelfSigned - Number of days the self-signed certificate is valid</li>
 * <li>validityDaysCertificates - Number of days the issued certificate is valid</li>
 * <li>validityDaysCRL - Number of days the issued certificate revocation list is valid</li>
 * <li>pathLenConstraint - Number of subordinate CAs</li>
 * <li>requestFormat - "pkcs10" or "sc-hsm"</li>
 * <li>overwriteKey - Set to true to overwrite a key with the same label</li>
 * <li>restrictPublicKey - Limit the public key of the self-signed root as per PKIXCommon.restrictedPublicKeyAlgorithmIdentifier()</li>
 * </ul>
 *
 * @see PKIXCommon.encodeName()
 * @param {String} crldp the URL of the distribution point
 */
X509Signer.prototype.setPolicy = function(policy) {
	this.policy = policy;
}



/**
 * Determine signer name for newly generated signer
 *
 * @type String
 * @return the unique name
 */
X509Signer.prototype.determineSignerName = function() {
	var name = this.holder.id + ":X509Signer " + this.holder.signerNo + 1 + " [" + Date() + "]";
	var holderdao = this.daof.getHolderDAO();
	holderdao.updateSignerNo(this.holder, this.holder.signerNo + 1);
	return name;
}



/**
 * Determine subject distinguished name for new signer
 *
 * @param {String} name
 * @type String
 * @return the distringuished name for the new signer
 */
X509Signer.prototype.determineDistinguishedName = function(name) {
	return this.policy.distinguishedName;
}



/**
 * Determine the key usage for the request
 *
 * @type Number
 * @return the key usage defined in PKIXCommon
 */
X509Signer.prototype.getRequestKeyUsage = function() {
	return PKIXCommon.digitalSignature;
}



/**
 * Create a new signer key pair
 *
 * @param {String} name the signer name
 * @type ByteString
 * @return the subject key identifier
 */
X509Signer.prototype.newSigner = function(name, template) {
	if (!name) {
		name = this.determineSignerName();
	}

	if (!template || !template.keyDomain) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "Cannot create a signer without a template containing the keyDomain");
	}

	var cp = this.cpf.getCryptoProvider(template.keyDomain, true);
	try	{
		if (this.policy.overwriteKey) {
			cp.deleteIfExists = true;
		}

		var k = cp.generateKeyPair(name, this.policy.keySpecification);
		var prk = k.prk;
		var puk = k.puk;
		var req = k.req;
		var keyblob;

		var keyId = PKIXCommon.determineKeyIdentifier(puk);

		if (typeof(cp.getWrappedKey) == "function") {
			template.keyblob = cp.getWrappedKey(name);
		}

		var signerDAO = this.daof.getSignerDAO();
		this.signer = signerDAO.newSigner(this.holder, name, keyId, template);

		if (this.policy.requestFormat != "sc-hsm") {
			var gen = new PKCS10Generator(cp.getCrypto());
			gen.setSignatureAlgorithm(this.policy.reqSignatureAlgorithm);
			gen.setSubject(this.determineDistinguishedName());
			gen.setPublicKey(puk);
			gen.addKeyUsageExtension(this.getRequestKeyUsage());
			req = gen.generateCertificationRequest(prk);
			req = req.getBytes();
		}

		var requestDAO = this.daof.getRequestDAO();
		requestDAO.newRequest(this.holder, keyId, req);
	}
	finally {
		cp.release();
	}

	return keyId;
}



/**
 * Return the holderId from the holder database for this element
 *
 * @type Number
 * @return the holderId
 */
X509Signer.prototype.getHolderId = function() {
	return this.holder.id;
}



/**
 * Return the holder from the holder database for this element
 *
 * @type Number
 * @return the holderId
 */
X509Signer.prototype.getHolder = function() {
	return this.holder;
}



/**
 * Return the signer from the signer database for this element
 *
 * @type Signer
 * @return the signer value object or null
 */
X509Signer.prototype.getSigner = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSigner()");
	if (this.signer) {
		GPSystem.log(GPSystem.DEBUG, module.id, "return cached signer");
		return this.signer;
	}

	var certDAO = this.daof.getCertificateDAO();
	this.currentCertificate = certDAO.getCurrentCertificate(this.holder);

	if (!this.currentCertificate) { // no active signer
		GPSystem.log(GPSystem.DEBUG, module.id, "no active signer for holder " + this.holder.id);
		return null;
	}

	var signerDAO = this.daof.getSignerDAO();
	this.signer = signerDAO.getSignerByKeyId(this.holder, this.currentCertificate.keyId);

	if (this.signer) {
		this.cpid = this.signer.keyDomain;
	}

	return this.signer;
}



/**
 * Parse the policy from the signer's values object
 *
 * @type Object
 * @return the policy
 */
X509Signer.prototype.parsePolicyFromSigner = function() {
	var signer = this.getSigner();

	if (signer == null) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "No active signer");
	}

	var c = signer.getContent();

	if (!c || !c.keySpecification) {
		return; // no policy
	}

	var dp = new Key();
	if (c.keySpecification.type == "EC") {
		dp.setComponent(Key.ECC_CURVE_OID, new ByteString(c.keySpecification.curve, OID));
	} else {
		dp.setSize(c.keySpecification.keysize);
	}

	var dn = PKIXCommon.parseDN(c.distinguishedName);

	this.policy = {
		distinguishedName: dn,
		signatureAlgorithm: c.signatureAlgorithm,
		reqSignatureAlgorithm: c.keySpecification.sigalg,
		validityDaysCertificates: c.validityDaysCertificates,
		validityDaysCRL: c.validityDaysCRL,
		pathLenConstraint: c.pathLenConstraint,
		keySpecification: dp
	}

	return this.policy;
}



X509Signer.prototype.getSubjectPolicyForRequest = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSubjectPolicyForRequest()");

	var signer = this.getSigner();

	if (signer == null) {
		throw new GPError(module.id, GPError.INVALID_DATA, 1, "No active signer");
	}

	var c = signer.getContent();

	var dp = new Key();
	if (c.keySpecification.type == "EC") {
		dp.setComponent(Key.ECC_CURVE_OID, new ByteString(c.keySpecification.curve, OID));
	} else {
		dp.setSize(c.keySpecification.keysize);
	}

	var policy = {
		reqSignatureAlgorithm: c.keySpecification.sigalg,
		keySpecification: dp
	}

	return policy;
}



/**
 * Get request for the given subject key identifier
 *
 * @param {ByteString} keyId the subject key identifier
 * @type ByteString
 * @return the raw request
 */
X509Signer.prototype.getRequestBinary = function(keyId) {
	var requestDAO = this.daof.getRequestDAO();
	var request = requestDAO.getRequestByKeyId(this.holder, keyId);

	if (request == null) {
		return null;
	}

	return request.bytes;
}



/**
 * Get request for the given subject key identifier
 *
 * @param {ByteString} keyId the subject key identifier
 * @type PKCS10
 * @return the PKCS10 request
 */
X509Signer.prototype.getRequest = function(keyId) {
	var requestDAO = this.daof.getRequestDAO();
	var request = requestDAO.getRequestByKeyId(this.holder, keyId);

	if (request == null) {
		return null;
	}

	var req = new PKCS10(request.bytes);
	return req;
}



/*
X509Signer.prototype.activateSigner = function(name) {
}



X509Signer.prototype.importCertificate = function(name) {
}



X509Signer.prototype.getSignerList = function(usableOnly) {
}
*/



/**
 * Store a certificate issued for a certain holder
 *
 * @param {X509} cert the certificate
 * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
 * @param {ByteString} keyId the key id that links this certificate to the signer (usually the subjectKeyIdentifier)
 * @param {Number} srId service request id
 * @type Number
 * @return the database id of the certificate
 */
X509Signer.prototype.storeCertificateForHolder = function(holder, cert, makeCurrent, keyId, srId) {
	GPSystem.log(GPSystem.DEBUG, module.id, "storeCertificateForHolder(" + holder + "'" + cert + "'," + makeCurrent + "," + keyId + ")");

	var certdao = this.daof.getCertificateDAO();

	var issuer = cert.getIssuerDNString();
	var subject = cert.getSubjectDNString();
	var autid = cert.getAuthorityKeyIdentifier();
	var subid = cert.getSubjectKeyIdentifier();
	var serial = cert.getSerialNumber().toString(HEX);

	if ((autid && autid.equals(subid)) || issuer.equals(subject)) {
		var dir = Certificate.SHORT;
	} else {
		var dir = Certificate.UP;
	}

	var certificate = certdao.getCertificateBySerial(holder, serial, dir);

	if (certificate) {
		GPSystem.log(GPSystem.INFO, module.id, "storeCertificate() : We already have a different certificate for that serial number");
		GPSystem.log(GPSystem.INFO, module.id, "Existing: " + (new X509(certificate.bytes)));
		GPSystem.log(GPSystem.INFO, module.id, "New     : " + cert);

		return;
	}

	if (typeof(keyId) == "undefined") {
		keyId = PKIXCommon.determineKeyIdentifier(cert.getPublicKey());
	}

	var template = {
		keyId: keyId,
		expiry: new LongDate(cert.getNotAfter())
	};

	if (srId) {
		template.serviceRequestId = srId;
	}

	var certificate = certdao.newCertificate(holder, serial, dir, cert.getBytes(), template);

	if (makeCurrent || !holder.certId) {
		var holderdao = this.daof.getHolderDAO();
		holderdao.updateCurrentCertificate(holder, certificate);
	}

	return certificate.id;
}



/**
 * Store a certificate issued for this signer
 *
 * @param {X509} cert the certificate
 * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
 * @param {ByteString} keyId the key id that links this certificate to the signer (usually the subjectKeyIdentifier)
 * @param {Number} srId service request id
 */
X509Signer.prototype.storeCertificate = function(cert, makeCurrent, keyId, srId) {
	return this.storeCertificateForHolder(this.holder, cert, makeCurrent, keyId, srId);
}



/**
 * Return the signer's certificate
 *
 * @type X509
 * @return the signer's certificate
 */
X509Signer.prototype.getSignerCertificate = function() {
	GPSystem.log(GPSystem.DEBUG, module.id, "getSignerCertificate()");
	if (!this.currentCertificate) {
		this.getSigner();
	}

	if (this.signer && !this.currentCertificate) {
		var certDAO = this.daof.getCertificateDAO();
		this.currentCertificate = certDAO.getCurrentCertificate(this.holder);
	} else if (!this.signer) {
		GPSystem.log(GPSystem.DEBUG, module.id, "no active signer for holder " + this.holder.id);
		return null;
	}

	return new X509(this.currentCertificate.bytes);
}
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		
		<title>JsDoc Reference - File Index</title>
		<meta name="generator" content="JsDoc Toolkit" />
		
		<style type="text/css">
		/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>
	
	<body>
		<div id="header">
</div>
		
		<div id="index">
			<div align="center"><a href="index.html">Class Index</a>
| <a href="files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="symbols/APDU.html">APDU</a></li>
	
	<li><a href="symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="symbols/CVC.html">CVC</a></li>
	
	<li><a href="symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="symbols/DF.html">DF</a></li>
	
	<li><a href="symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="symbols/FCP.html">FCP</a></li>
	
	<li><a href="symbols/File.html">File</a></li>
	
	<li><a href="symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="symbols/PACE.html">PACE</a></li>
	
	<li><a href="symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
		</div>
		
		<div id="content">
			<h1 class="classTitle">File Index</h1>
			
			
			<div>
				<h2><a href="symbols/src/eac_PublicKeyReference.js.html">PublicKeyReference.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|  
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 --------- 

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Public Key Reference, the value stored in CAR and CHR of CV-Certificates
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_RestrictedIdentification.js.html">RestrictedIdentification.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|  
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 --------- 

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of the ASN.1 structures for restricted identification
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/file_File.js.html">File.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
General File I/O Class
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/gp_GPSCP03.js.html">GPSCP03.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Support for Global Platform SCP03 protocol
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/pkcs_PKCS1.js.html">PKCS1.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2015 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Basic helper functions to encode and decode PKCS#1 padding
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/pkcs_PKCS10.js.html">PKCS10.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2015 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
PKCS#10 Decoder
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/pkcs_PKCS8.js.html">PKCS8.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Basic helper functions to convert PKCS#8 data to GP keys and vice versa
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/ram_RAMClient.js.html">RAMClient.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Remote Application Management over HTTP (RAMoverHTTP) client
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_CAConnection.js.html">CAConnection.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2016 CardContact Systems GmbH
|'##> <##'|  32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Online-CA Connection
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_CryptoProvider.js.html">CryptoProvider.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2011-2016 CardContact Systems GmbH
|'##> <##'|  Schuelerweg 38, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
SmartCard-HSM Crypto Provider
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_DKEK.js.html">DKEK.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
DKEK key wrapper
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_EACCryptoProvider.js.html">EACCryptoProvider.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2011-2016 CardContact Systems GmbH
|'##> <##'|  Schuelerweg 38, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
SmartCard-HSM Crypto Provider for EAC-PKI
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_HSMCVCertificateStore.js.html">HSMCVCertificateStore.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
A card verifiable certificate store using a SmartCard-HSM as key store
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_HSMKeyStore.js.html">HSMKeyStore.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Class implementing a key store for X.509 certificate and private keys stored on a SmartCard-HSM
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_ManagePKA.js.html">ManagePKA.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
SmartCard-HSM Public Key Authentication Support
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_PaperKeyEncoding.js.html">PaperKeyEncoding.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
PaperKey Encoder and Decoder
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/sc-hsm_SmartCardHSM.js.html">SmartCardHSM.js</a></h2>
				---------
|.##> <##.|  SmartCard-HSM Support Scripts
|#       #|
|#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
SmartCard-HSM Card Service
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_CRLGenerator.js.html">CRLGenerator.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Simple CRL generator class
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_DNEncoder.js.html">DNEncoder.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Encoder for Distinguished Names using input data and a mask
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_PKCS10Generator.js.html">PKCS10Generator.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
A PKCS#10 generator class based on RFC5280
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_PKIXCommon.js.html">PKIXCommon.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Common classes and functions for PKIX
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_X509CertificateGenerator.js.html">X509CertificateGenerator.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
A X509 certificate generator class following RFC5280
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_X509CertificateIssuer.js.html">X509CertificateIssuer.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
A Issuer for X.509 Certificates
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_X509CertificateStore.js.html">X509CertificateStore.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Generic X509 certificate, request and key store
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_X509Name.js.html">X509Name.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
X509Name - Class to support X500 Names
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/x509_X509Signer.js.html">X509Signer.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
A Signer backed by a X.509 certificate
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_APDU.js.html">APDU.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of ISO 7816-4 APDU processing
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_AccessController.js.html">AccessController.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 --------- 

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
AccessController base class
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_AuthenticationObject.js.html">AuthenticationObject.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
AuthenticationObject - Password, PIN or key container for external authentication
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_CommandInterpreter.js.html">CommandInterpreter.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of an ISO 7816-4 command interpreter
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_DF.js.html">DF.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a ISO 7816-4 file system simulation
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_DataUnitAPDU.js.html">DataUnitAPDU.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
AuthenticationObject - Password, PIN or key container for external authentication
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_FCP.js.html">FCP.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 --------- 

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a ISO 7816-4 file system simulation
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_FSNode.js.html">FSNode.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a ISO 7816-4 file system simulation
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_FileSelector.js.html">FileSelector.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a ISO 7816-4 file system simulation
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_FileSystemIdObject.js.html">FileSystemIdObject.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 --------- 

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of ISO 7816-4 APDU processing
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_LinearEF.js.html">LinearEF.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a ISO 7816-4 file system simulation
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_SecureChannelHandler.js.html">SecureChannelHandler.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a secure messaging channel as defined in ISO 7814-4 and eSign-K
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_SecureMessagingCommandAPDUDecoder.js.html">SecureMessagingCommandAPDUDecoder.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a secure messaging channel as defined in ISO 7814-4 and eSign-K
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_SecurityEnvironment.js.html">SecurityEnvironment.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Security environment - a container for security related data elements
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_SignatureKey.js.html">SignatureKey.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
SignatureKey - Object storing information related to PrK.QES
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_TransparentEF.js.html">TransparentEF.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of a ISO 7816-4 file system simulation
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/cardsim_TrustAnchor.js.html">TrustAnchor.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
TrustAnchor Base class for card verifiable certificate based access controller
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_CVC.js.html">CVC.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Support for card verifiable certificates and certificate requests according to EAC 1.1/2.0
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_CVCCA.js.html">CVCCA.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Simple CVC-CA
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_CVCertificateStore.js.html">CVCertificateStore.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Support for a card verifiable certificates store according to EAC 1.1/2.0 using Data Access Objects
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_ChipAuthentication.js.html">ChipAuthentication.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of the chip authentication protocol for both card and terminal
as defined for EAC 2.0
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_EAC20.js.html">EAC20.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of the Extended Access Control protocol in version 2.0
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_EAC2CVCertificateGenerator.js.html">EAC2CVCertificateGenerator.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
EAC2CVCertificateGenerator - Simple CV certificate generator class
based on "Advanced Security Mechanisms for Machine Readable Travel Documents", Version 2.0
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_EAC2CVRequestGenerator.js.html">EAC2CVRequestGenerator.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of Simple CV request generator based on
TR-03110 "Advanced Security Mechanisms for Machine Readable Travel Documents", Version 2.0
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_P11CVCertificateStore.js.html">P11CVCertificateStore.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
A card verifiable certificate store using a PKCS#11 device as key store
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/src/eac_PACE.js.html">PACE.js</a></h2>
				---------
|.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
|#       #|
|#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
|'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 ---------

 This file is part of OpenSCDP.

 OpenSCDP is free software; you can redistribute it and/or modify
 it under the terms of the GNU General Public License version 2 as
 published by the Free Software Foundation.

 OpenSCDP is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with OpenSCDP; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
Implementation of the PACE/SAC protocol for both card and terminal
				<dl>
					
					
					
					
				</dl>
			</div>
			<hr />
			
			
		</div>
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		
		<title>JsDoc Reference - Index</title>
		<meta name="generator" content="JsDoc Toolkit" />
		
		<style type="text/css">
		/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>
	
	<body>
		<div id="header">
</div>
		
		<div id="index">
			<div align="center"><a href="index.html">Class Index</a>
| <a href="files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="symbols/APDU.html">APDU</a></li>
	
	<li><a href="symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="symbols/CVC.html">CVC</a></li>
	
	<li><a href="symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="symbols/DF.html">DF</a></li>
	
	<li><a href="symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="symbols/FCP.html">FCP</a></li>
	
	<li><a href="symbols/File.html">File</a></li>
	
	<li><a href="symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="symbols/PACE.html">PACE</a></li>
	
	<li><a href="symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
		</div>
		
		<div id="content">
			<h1 class="classTitle">Class Index</h1>
			
			
			<div>
				<h2><a href="symbols/_global_.html">_global_</a></h2>
				
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/AccessController.html">AccessController</a></h2>
				
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/APDU.html">APDU</a></h2>
				Class implementing support for command and response APDUs
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/AuthenticationObject.html">AuthenticationObject</a></h2>
				Class implementing authentication objects like PINs, PACE passwords or keys
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/CAConnection.html">CAConnection</a></h2>
				Class implementing a CA web service connector
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/ChipAuthentication.html">ChipAuthentication</a></h2>
				This class implements the ChipAuthentication protocol
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></h2>
				<p>This class encodes and decodes ChipAuthenticationDomainParameterInfo objects.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></h2>
				<p>This class encodes and decodes ChipAuthenticationInfo objects.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></h2>
				<p>This class encodes and decodes ChipAuthenticationPublicKeyInfo objects.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/CommandInterpreter.html">CommandInterpreter</a></h2>
				Class implementing a command interpreter that handles ISO 7816-4 command APDUs
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/CRLGenerator.html">CRLGenerator</a></h2>
				Class implementing a CRL certificate generator
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/CVC.html">CVC</a></h2>
				Class implementing a decoder for card verifiable certificates or requests according to
       Extended Access Control (EAC) as defined in BSI TR-03110 1.11 and 2.02.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/CVCCA.html">CVCCA</a></h2>
				Class supporting a certification authority that can issue CVC certificates
for the EAC protocol.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/CVCertificateStore.html">CVCertificateStore</a></h2>
				Class that abstracts a certificate and key store for a EAC PKI.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/DataUnitAPDU.html">DataUnitAPDU</a></h2>
				Adapter class to decode APDUs for data unit handling
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/DF.html">DF</a></h2>
				Class implementing dedicated files
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/DKEK.html">DKEK</a></h2>
				
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/DNEncoder.html">DNEncoder</a></h2>
				
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/EAC20.html">EAC20</a></h2>
				Class implementing support for Extended Access Control V2
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></h2>
				Class implementing a generator for CV certificates according to EAC 1.1 and EAC 2.0 specifications.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></h2>
				Class implementing a generator for CVC requests
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/FCP.html">FCP</a></h2>
				Class storing File Control Parameter for a file system node
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/File.html">File</a></h2>
				Class implementing basic support for files
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/FileSelector.html">FileSelector</a></h2>
				Class implementing a file selector used to store information about the currently selected
       file system object and to process the SELECT APDU
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/FileSystemIdObject.html">FileSystemIdObject</a></h2>
				Abstract class for file system objects identified by an identifier
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/FSNode.html">FSNode</a></h2>
				Abstract class for file system nodes
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/GPSCP03.html">GPSCP03</a></h2>
				
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></h2>
				CV certificate store with SmartCard-HSM as secure key store
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/HSMKeyStore.html">HSMKeyStore</a></h2>
				Class implementing some simple access functions to generate key pairs and store certificates
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/LinearEF.html">LinearEF</a></h2>
				Class implementing linear EFs
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/ManagePKA.html">ManagePKA</a></h2>
				Class providing support for public key authentication
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></h2>
				CV certificate store with PKCS#11 as secure key store
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/PACE.html">PACE</a></h2>
				This class implements the PACE protocol
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></h2>
				<p>This class encodes and decodes PACEDomainParameterInfo objects.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/PACEInfo.html">PACEInfo</a></h2>
				<p>This class encodes and decodes PACEInfo objects.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></h2>
				Encoder / Decoder for PaperKeys
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/PKCS10Generator.html">PKCS10Generator</a></h2>
				Class implementing a PKCS#10 certificate request
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/PublicKeyReference.html">PublicKeyReference</a></h2>
				<p>A class that implements a public key reference to be used as CAR and CHR in
       card verifiable certificates (CVC).
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/RAMClient.html">RAMClient</a></h2>
				
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></h2>
				<p>This class encodes and decodes RestrictedIdentificationDomainParameterInfo objects.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></h2>
				<p>This class encodes and decodes RestrictedIdentificationInfo objects.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SecureChannelHandler.html">SecureChannelHandler</a></h2>
				Class implementing a secure messaging channel
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></h2>
				Decoder for a secure messaging APDU
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SecurityEnvironment.html">SecurityEnvironment</a></h2>
				Class implementing a security environment for cryptographic operations.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SignatureKey.html">SignatureKey</a></h2>
				Class implementing signature keys
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SmartCardHSM.html">SmartCardHSM</a></h2>
				Class implementing support for SmartCard-HSM access
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></h2>
				Wrapper to provide Crypto interface to SmartCard-HSM
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></h2>
				Class implementing the device initialization methods
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></h2>
				Class implementing key access
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></h2>
				Class implementing an encoder for the C-Data required in GENERATE ASYMMETRIC KEY PAIR
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></h2>
				Class implementing an encoder for the C-Data required in Generate Symmetric Key
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/TransparentEF.html">TransparentEF</a></h2>
				Class implementing a transparent EF
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/TrustAnchor.html">TrustAnchor</a></h2>
				Class implementing a CVC based access controller
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></h2>
				Class implementing a X.509 certificate generator
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></h2>
				Class implementing a certification authority issuing X.509 certificates and CRLs
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/X509CertificateStore.html">X509CertificateStore</a></h2>
				Class that abstracts a certificate, request and key store for a X509 PKI.
			</div>
			<hr />
			
			<div>
				<h2><a href="symbols/X509Signer.html">X509Signer</a></h2>
				Class implementing a signer backed by a X.509 certificate
			</div>
			<hr />
			
			
		</div>
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blankt">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - APDU</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class APDU
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing support for command and response APDUs
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_APDU.js.html">APDU.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class APDU.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/APDU.html#constructor">APDU</a></b>(command, cla, ins, p1, p2, data, Ne)
							</div>
							<div class="description">Create an APDU

<p>This constructor supports the signatures</p>
<ul>
 <li>APDU(ByteString command)</li>
 <li>APDU(Number cla, Number ins, Number p1, Number p2)</li>
 <li>APDU(Number cla, Number ins, Number p1, Number p2, data)</li>
 <li>APDU(Number cla, Number ins, Number p1, Number p2, data, Ne)</li>
</ul></div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class APDU.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#fromByteString">fromByteString</a></b>(bs)
								</div>
								<div class="description">Create an APDU object from the encoded form (Called internally)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getCData">getCData</a></b>()
								</div>
								<div class="description">Gets the command data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getCDataAsTLVList">getCDataAsTLVList</a></b>()
								</div>
								<div class="description">Gets the command data as a list of TLV objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getCLA">getCLA</a></b>()
								</div>
								<div class="description">Gets the class byte</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getCommandAPDU">getCommandAPDU</a></b>()
								</div>
								<div class="description">Get encoded command APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getINS">getINS</a></b>()
								</div>
								<div class="description">Gets the instruction byte</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getNe">getNe</a></b>()
								</div>
								<div class="description">Gets the number of expected bytes</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getP1">getP1</a></b>()
								</div>
								<div class="description">Gets the P1 byte</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getP2">getP2</a></b>()
								</div>
								<div class="description">Gets the P2 byte</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getRData">getRData</a></b>()
								</div>
								<div class="description">Get the response data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getResponseAPDU">getResponseAPDU</a></b>()
								</div>
								<div class="description">Get encoded response APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getSecureChannel">getSecureChannel</a></b>()
								</div>
								<div class="description">Return the secure channel, if any</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#getSW">getSW</a></b>()
								</div>
								<div class="description">Get the status word</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#hasCData">hasCData</a></b>()
								</div>
								<div class="description">Check if APDU has command data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#hasLe">hasLe</a></b>()
								</div>
								<div class="description">Check if APDU has Le field</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#hasRData">hasRData</a></b>()
								</div>
								<div class="description">Check if APDU has response data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#hasSecureChannel">hasSecureChannel</a></b>()
								</div>
								<div class="description">Test if a secure channel is defined for this APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#isAuthenticatedHeader">isAuthenticatedHeader</a></b>()
								</div>
								<div class="description">Test if command is send using secure messaging</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#isChained">isChained</a></b>()
								</div>
								<div class="description">Test if command chaining is indicated</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#isExtendedLength">isExtendedLength</a></b>()
								</div>
								<div class="description">Test if command uses extended length</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#isISO">isISO</a></b>()
								</div>
								<div class="description">Test if command is an ISO command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#isSecureMessaging">isSecureMessaging</a></b>()
								</div>
								<div class="description">Test if command is send using secure messaging</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#setCData">setCData</a></b>(cdata)
								</div>
								<div class="description">Set the command data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#setCLA">setCLA</a></b>(cla)
								</div>
								<div class="description">Sets the class byte, e.g.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#setRData">setRData</a></b>(data)
								</div>
								<div class="description">Sets the response data field for the response APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#setSecureChannel">setSecureChannel</a></b>(secureChannel)
								</div>
								<div class="description">Set secure channel object to be used in wrap and unwrap methods</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#setSW">setSW</a></b>(sw)
								</div>
								<div class="description">Sets the status word for the response ADPU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">APDU.<b><a href="../symbols/APDU.html#.test">test</a></b>()
								</div>
								<div class="description">Simple unit test</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#toString">toString</a></b>()
								</div>
								<div class="description">Return a human readable form of this object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#unwrap">unwrap</a></b>()
								</div>
								<div class="description">Unwrap APDU using secure channel</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/APDU.html#wrap">wrap</a></b>()
								</div>
								<div class="description">Wrap APDU using secure channel</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>APDU</b>(command, cla, ins, p1, p2, data, Ne)
				</div>
				
				<div class="description">
					Create an APDU

<p>This constructor supports the signatures</p>
<ul>
 <li>APDU(ByteString command)</li>
 <li>APDU(Number cla, Number ins, Number p1, Number p2)</li>
 <li>APDU(Number cla, Number ins, Number p1, Number p2, data)</li>
 <li>APDU(Number cla, Number ins, Number p1, Number p2, data, Ne)</li>
</ul>
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>command</b>
								
							</dt>
								<dd>the command APDU</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>cla</b>
								
							</dt>
								<dd>the class byte</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>ins</b>
								
							</dt>
								<dd>the instruction byte</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>p1</b>
								
							</dt>
								<dd>the first parameter</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>p2</b>
								
							</dt>
								<dd>the second parameter</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>data</b>
								
							</dt>
								<dd>the data field (optional)</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>Ne</b>
								
							</dt>
								<dd>the number of expected bytes (optional)</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="fromByteString"> </a>
					<div class="fixedFont">
					
					
					<b>fromByteString</b>(bs)
					
					</div>
					<div class="description">
						Create an APDU object from the encoded form (Called internally)
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>bs</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getCData"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCData</b>()
					
					</div>
					<div class="description">
						Gets the command data
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the command data, if any else undefined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCDataAsTLVList"> </a>
					<div class="fixedFont">
					
					<span class="light">{TLVList}</span>
					<b>getCDataAsTLVList</b>()
					
					</div>
					<div class="description">
						Gets the command data as a list of TLV objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the command data as TLV list, if any else undefined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCLA"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getCLA</b>()
					
					</div>
					<div class="description">
						Gets the class byte
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the class byte</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCommandAPDU"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCommandAPDU</b>()
					
					</div>
					<div class="description">
						Get encoded command APDU
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded command APDU</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getINS"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getINS</b>()
					
					</div>
					<div class="description">
						Gets the instruction byte
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the instruction byte</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getNe"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getNe</b>()
					
					</div>
					<div class="description">
						Gets the number of expected bytes
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the number of expected bytes or undefined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getP1"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getP1</b>()
					
					</div>
					<div class="description">
						Gets the P1 byte
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the P1 byte</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getP2"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getP2</b>()
					
					</div>
					<div class="description">
						Gets the P2 byte
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the P2 byte</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRData"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getRData</b>()
					
					</div>
					<div class="description">
						Get the response data
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the response data</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getResponseAPDU"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getResponseAPDU</b>()
					
					</div>
					<div class="description">
						Get encoded response APDU
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded response APDU</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSecureChannel"> </a>
					<div class="fixedFont">
					
					<span class="light">{SecureChannel}</span>
					<b>getSecureChannel</b>()
					
					</div>
					<div class="description">
						Return the secure channel, if any
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the secure channel</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSW"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getSW</b>()
					
					</div>
					<div class="description">
						Get the status word
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the status word</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasCData"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasCData</b>()
					
					</div>
					<div class="description">
						Check if APDU has command data
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if command APDU has data field</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasLe"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasLe</b>()
					
					</div>
					<div class="description">
						Check if APDU has Le field
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if command APDU has Le field</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasRData"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasRData</b>()
					
					</div>
					<div class="description">
						Check if APDU has response data
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if response APDU has data field</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasSecureChannel"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasSecureChannel</b>()
					
					</div>
					<div class="description">
						Test if a secure channel is defined for this APDU
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if secure channel is set</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isAuthenticatedHeader"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isAuthenticatedHeader</b>()
					
					</div>
					<div class="description">
						Test if command is send using secure messaging
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if secure messaging is using an authenticated header</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isChained"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isChained</b>()
					
					</div>
					<div class="description">
						Test if command chaining is indicated
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if chaining bit is set</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isExtendedLength"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isExtendedLength</b>()
					
					</div>
					<div class="description">
						Test if command uses extended length
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if APDU uses extended length</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isISO"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isISO</b>()
					
					</div>
					<div class="description">
						Test if command is an ISO command
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if command has ISO class byte</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isSecureMessaging"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isSecureMessaging</b>()
					
					</div>
					<div class="description">
						Test if command is send using secure messaging
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if secure messaging is indicated in CLA byte</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setCData"> </a>
					<div class="fixedFont">
					
					
					<b>setCData</b>(cdata)
					
					</div>
					<div class="description">
						Set the command data
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>cdata</b>
									
								</dt>
								<dd>the command data</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setCLA"> </a>
					<div class="fixedFont">
					
					
					<b>setCLA</b>(cla)
					
					</div>
					<div class="description">
						Sets the class byte, e.g. after a transformation
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>cla</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setRData"> </a>
					<div class="fixedFont">
					
					
					<b>setRData</b>(data)
					
					</div>
					<div class="description">
						Sets the response data field for the response APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the response data field</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSecureChannel"> </a>
					<div class="fixedFont">
					
					
					<b>setSecureChannel</b>(secureChannel)
					
					</div>
					<div class="description">
						Set secure channel object to be used in wrap and unwrap methods
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{SecureChannel}</span> <b>secureChannel</b>
									
								</dt>
								<dd>the channel</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSW"> </a>
					<div class="fixedFont">
					
					
					<b>setSW</b>(sw)
					
					</div>
					<div class="description">
						Sets the status word for the response ADPU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>sw</b>
									
								</dt>
								<dd>the status word</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".test"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">APDU.</span><b>test</b>()
					
					</div>
					<div class="description">
						Simple unit test
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Return a human readable form of this object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="unwrap"> </a>
					<div class="fixedFont">
					
					
					<b>unwrap</b>()
					
					</div>
					<div class="description">
						Unwrap APDU using secure channel
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="wrap"> </a>
					<div class="fixedFont">
					
					
					<b>wrap</b>()
					
					</div>
					<div class="description">
						Wrap APDU using secure channel
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - AccessController</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class AccessController
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_AccessController.js.html">AccessController.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class AccessController.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/AccessController.html#constructor">AccessController</a></b>()
							</div>
							<div class="description">Create an default controller granting read but denying write access</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class AccessController.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AccessController.html#checkCommandAccess">checkCommandAccess</a></b>(apdu, apdu)
								</div>
								<div class="description">Check if command is allowed</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AccessController.html#checkFileReadAccess">checkFileReadAccess</a></b>(apdu, node, node)
								</div>
								<div class="description">Check if read access to file system node is allowed</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AccessController.html#checkFileWriteAccess">checkFileWriteAccess</a></b>(apdu, node, node)
								</div>
								<div class="description">Check if write access to file system node is allowed</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>AccessController</b>()
				</div>
				
				<div class="description">
					Create an default controller granting read but denying write access
					
				</div>
				
				
				
				
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="checkCommandAccess"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>checkCommandAccess</b>(apdu, apdu)
					
					</div>
					<div class="description">
						Check if command is allowed
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU to check</dd>
							
								<dt>
									<b>apdu</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if access is allowed</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="checkFileReadAccess"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>checkFileReadAccess</b>(apdu, node, node)
					
					</div>
					<div class="description">
						Check if read access to file system node is allowed
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU used to access the object</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/FSNode.html">FSNode</a>}</span> <b>node</b>
									
								</dt>
								<dd>the file system object</dd>
							
								<dt>
									<b>node</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if access is allowed</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="checkFileWriteAccess"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>checkFileWriteAccess</b>(apdu, node, node)
					
					</div>
					<div class="description">
						Check if write access to file system node is allowed
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU used to access the object</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/FSNode.html">FSNode</a>}</span> <b>node</b>
									
								</dt>
								<dd>the file system object</dd>
							
								<dt>
									<b>node</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if access is allowed</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - AuthenticationObject</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class AuthenticationObject
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing authentication objects like PINs, PACE passwords or keys
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_AuthenticationObject.js.html">AuthenticationObject.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class AuthenticationObject.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/AuthenticationObject.html#constructor">AuthenticationObject</a></b>(name, type, id, value)
							</div>
							<div class="description">Create an authentication object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class AuthenticationObject.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#activate">activate</a></b>()
								</div>
								<div class="description">Activate authentication object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#changeReferenceData">changeReferenceData</a></b>(qualifier, value)
								</div>
								<div class="description">Change reference data, optionally verifying the old value before</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#deactivate">deactivate</a></b>()
								</div>
								<div class="description">Deactivate authentication object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#decreaseRetryCounter">decreaseRetryCounter</a></b>()
								</div>
								<div class="description">Deactivate authentication object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#getType">getType</a></b>()
								</div>
								<div class="description">Override from base class</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#resetRetryCounter">resetRetryCounter</a></b>(newValue)
								</div>
								<div class="description">Reset retry counter and optionally set new reference value</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#restoreRetryCounter">restoreRetryCounter</a></b>()
								</div>
								<div class="description">Deactivate authentication object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#terminate">terminate</a></b>()
								</div>
								<div class="description">Terminate authentication object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#toString">toString</a></b>()
								</div>
								<div class="description">Convert object to a human readable string</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/AuthenticationObject.html#verify">verify</a></b>(value)
								</div>
								<div class="description">Verify PIN value</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>AuthenticationObject</b>(name, type, id, value)
				</div>
				
				<div class="description">
					Create an authentication object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>name</b>
								
							</dt>
								<dd>the human readable name of the object</dd>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>type</b>
								
							</dt>
								<dd>one of AuthenticationObject.TYPE_PACE or AuthenticationObject.TYPE_PIN</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>id</b>
								
							</dt>
								<dd>the password or key id</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>value</b>
								
							</dt>
								<dd>the reference value</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="activate"> </a>
					<div class="fixedFont">
					
					
					<b>activate</b>()
					
					</div>
					<div class="description">
						Activate authentication object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="changeReferenceData"> </a>
					<div class="fixedFont">
					
					
					<b>changeReferenceData</b>(qualifier, value)
					
					</div>
					<div class="description">
						Change reference data, optionally verifying the old value before
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>qualifier</b>
									
								</dt>
								<dd>command qualifier, 00 = oldPIN||newPIN, 01 = newPIN</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>new reference value</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deactivate"> </a>
					<div class="fixedFont">
					
					
					<b>deactivate</b>()
					
					</div>
					<div class="description">
						Deactivate authentication object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="decreaseRetryCounter"> </a>
					<div class="fixedFont">
					
					
					<b>decreaseRetryCounter</b>()
					
					</div>
					<div class="description">
						Deactivate authentication object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="getType"> </a>
					<div class="fixedFont">
					
					
					<b>getType</b>()
					
					</div>
					<div class="description">
						Override from base class
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="resetRetryCounter"> </a>
					<div class="fixedFont">
					
					
					<b>resetRetryCounter</b>(newValue)
					
					</div>
					<div class="description">
						Reset retry counter and optionally set new reference value
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>newValue</b>
									
								</dt>
								<dd>new reference value</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="restoreRetryCounter"> </a>
					<div class="fixedFont">
					
					
					<b>restoreRetryCounter</b>()
					
					</div>
					<div class="description">
						Deactivate authentication object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="terminate"> </a>
					<div class="fixedFont">
					
					
					<b>terminate</b>()
					
					</div>
					<div class="description">
						Terminate authentication object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Convert object to a human readable string
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="verify"> </a>
					<div class="fixedFont">
					
					
					<b>verify</b>(value)
					
					</div>
					<div class="description">
						Verify PIN value
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>reference value</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - CAConnection</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class CAConnection
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a CA web service connector
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_CAConnection.js.html">CAConnection.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class CAConnection.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/CAConnection.html#constructor">CAConnection</a></b>(url)
							</div>
							<div class="description">Creates a web service connector to access an online CA</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class CAConnection.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CAConnection.html#close">close</a></b>()
								</div>
								<div class="description">Close the connector and release allocated resources</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CAConnection.html#getLastRequest">getLastRequest</a></b>()
								</div>
								<div class="description">Gets the last request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CAConnection.html#getLastResponse">getLastResponse</a></b>()
								</div>
								<div class="description">Gets the last response</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CAConnection.html#getLastReturnCode">getLastReturnCode</a></b>()
								</div>
								<div class="description">Get the last return code</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CAConnection.html#requestCertificate">requestCertificate</a></b>(certreq, messageID, responseURL, eMailAddress, activationCode)
								</div>
								<div class="description">Request a certificate from the CA using a web service</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>CAConnection</b>(url)
				</div>
				
				<div class="description">
					Creates a web service connector to access an online CA
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>url</b>
								
							</dt>
								<dd>the web service endpoint</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="close"> </a>
					<div class="fixedFont">
					
					
					<b>close</b>()
					
					</div>
					<div class="description">
						Close the connector and release allocated resources
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="getLastRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{XML}</span>
					<b>getLastRequest</b>()
					
					</div>
					<div class="description">
						Gets the last request
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the last request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getLastResponse"> </a>
					<div class="fixedFont">
					
					<span class="light">{XML}</span>
					<b>getLastResponse</b>()
					
					</div>
					<div class="description">
						Gets the last response
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the last response</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getLastReturnCode"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getLastReturnCode</b>()
					
					</div>
					<div class="description">
						Get the last return code
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the last return code received or null if none defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="requestCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString[]}</span>
					<b>requestCertificate</b>(certreq, messageID, responseURL, eMailAddress, activationCode)
					
					</div>
					<div class="description">
						Request a certificate from the CA using a web service
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>certreq</b>
									
								</dt>
								<dd>the certificate request</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>messageID</b>
									
								</dt>
								<dd>the messageID for asynchronous requests (optional)</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>responseURL</b>
									
								</dt>
								<dd>the URL to which the asynchronous response is send (optional)</dd>
							
								<dt>
									<b>eMailAddress</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>activationCode</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the new certificates</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - CRLGenerator</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class CRLGenerator
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a CRL certificate generator
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/x509_CRLGenerator.js.html">CRLGenerator.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class CRLGenerator.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/CRLGenerator.html#constructor">CRLGenerator</a></b>(crypto)
							</div>
							<div class="description">Create a Certificate Revocation List (CRL) generator.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class CRLGenerator.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#addAuthorityKeyIdentifierExtension">addAuthorityKeyIdentifierExtension</a></b>(publicKey)
								</div>
								<div class="description">Adds the authority public key identifier extension based on the issuers key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#addCRLNumberExtension">addCRLNumberExtension</a></b>(crlnumber)
								</div>
								<div class="description">Adds the CRL number extension.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#addExtension">addExtension</a></b>(extnID, critical, the)
								</div>
								<div class="description">Adds an extension to the CRL

<p>The structure is defined as:</p>
<pre>
   Extension  ::=  SEQUENCE  {
       extnID      OBJECT IDENTIFIER,
       critical    BOOLEAN DEFAULT FALSE,
       extnValue   OCTET STRING
                   -- contains the DER encoding of an ASN.1 value
                   -- corresponding to the extension type identified
                   -- by extnID
       }
</pre></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#addRevokedCertificate">addRevokedCertificate</a></b>(revokedCertificate)
								</div>
								<div class="description">Add a revoked certificate to the list.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#generateCRL">generateCRL</a></b>(privateKey)
								</div>
								<div class="description">Generates the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#getExtensions">getExtensions</a></b>()
								</div>
								<div class="description">Gets the CRL extension as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#getIssuer">getIssuer</a></b>()
								</div>
								<div class="description">Gets the issuer name as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#getNextUpdate">getNextUpdate</a></b>()
								</div>
								<div class="description">Gets the nextUpdate TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#getRevokedCertificates">getRevokedCertificates</a></b>()
								</div>
								<div class="description">Gets revoked certificates</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#getSignatureAlgorithm">getSignatureAlgorithm</a></b>()
								</div>
								<div class="description">Gets the signature algorithm TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#getTbsCertificateList">getTbsCertificateList</a></b>()
								</div>
								<div class="description">Gets the part of the CRL that will be signed</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#getThisUpdate">getThisUpdate</a></b>()
								</div>
								<div class="description">Gets the thisUpdate TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#loadCRLEntries">loadCRLEntries</a></b>(crlbin)
								</div>
								<div class="description">Load list of revoked certificates from an existing CRL</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#reset">reset</a></b>()
								</div>
								<div class="description">Resets all internal state variables.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#revokeCertificate">revokeCertificate</a></b>(serial, timestamp, reason, ext)
								</div>
								<div class="description">Add a revoked certificate to the list.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#setIssuer">setIssuer</a></b>(issuer)
								</div>
								<div class="description">Sets the isser name.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#setNextUpdate">setNextUpdate</a></b>(datetime)
								</div>
								<div class="description">Sets the timestamp for the next update</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#setSignatureAlgorithm">setSignatureAlgorithm</a></b>(alg)
								</div>
								<div class="description">Sets the signature algorithm.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CRLGenerator.html#setThisUpdate">setThisUpdate</a></b>(datetime)
								</div>
								<div class="description">Sets the timestamp for this CRL</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>CRLGenerator</b>(crypto)
				</div>
				
				<div class="description">
					Create a Certificate Revocation List (CRL) generator.
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider to use for signing operations</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="addAuthorityKeyIdentifierExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addAuthorityKeyIdentifierExtension</b>(publicKey)
					
					</div>
					<div class="description">
						Adds the authority public key identifier extension based on the issuers key.

<p>The key identifier is calculated as SHA-1 hash over the contents of the
issuer public key (Without tag, length and number of unused bits.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>publicKey</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addCRLNumberExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addCRLNumberExtension</b>(crlnumber)
					
					</div>
					<div class="description">
						Adds the CRL number extension.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>crlnumber</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addExtension</b>(extnID, critical, the)
					
					</div>
					<div class="description">
						Adds an extension to the CRL

<p>The structure is defined as:</p>
<pre>
   Extension  ::=  SEQUENCE  {
       extnID      OBJECT IDENTIFIER,
       critical    BOOLEAN DEFAULT FALSE,
       extnValue   OCTET STRING
                   -- contains the DER encoding of an ASN.1 value
                   -- corresponding to the extension type identified
                   -- by extnID
       }
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>extnID</b>
									
								</dt>
								<dd>the extensions object identifier</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>critical</b>
									
								</dt>
								<dd>the extension is critical</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>extension value as ByteString</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addRevokedCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>addRevokedCertificate</b>(revokedCertificate)
					
					</div>
					<div class="description">
						Add a revoked certificate to the list. This adds the complete DER encoded structure.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>revokedCertificate</b>
									
								</dt>
								<dd>the information related to the revoked certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="generateCRL"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509}</span>
					<b>generateCRL</b>(privateKey)
					
					</div>
					<div class="description">
						Generates the certificate.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>privateKey</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the generated certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getExtensions"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getExtensions</b>()
					
					</div>
					<div class="description">
						Gets the CRL extension as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CRL extensions</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getIssuer"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getIssuer</b>()
					
					</div>
					<div class="description">
						Gets the issuer name as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the issuer RDNSequence</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getNextUpdate"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getNextUpdate</b>()
					
					</div>
					<div class="description">
						Gets the nextUpdate TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the nextUpdate UTC encoded time</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRevokedCertificates"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getRevokedCertificates</b>()
					
					</div>
					<div class="description">
						Gets revoked certificates
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of revoked certificates</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSignatureAlgorithm"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getSignatureAlgorithm</b>()
					
					</div>
					<div class="description">
						Gets the signature algorithm TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signature algorithm object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getTbsCertificateList"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getTbsCertificateList</b>()
					
					</div>
					<div class="description">
						Gets the part of the CRL that will be signed
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TBSCertificate part</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getThisUpdate"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getThisUpdate</b>()
					
					</div>
					<div class="description">
						Gets the thisUpdate TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the thisUpdate UTC encoded time</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="loadCRLEntries"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>loadCRLEntries</b>(crlbin)
					
					</div>
					<div class="description">
						Load list of revoked certificates from an existing CRL
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>crlbin</b>
									
								</dt>
								<dd>the DER encoded CRL</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the value of the CRLNumber extension, 0 if extension not defined or -1 if file could not be loaded</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="reset"> </a>
					<div class="fixedFont">
					
					
					<b>reset</b>()
					
					</div>
					<div class="description">
						Resets all internal state variables.
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="revokeCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>revokeCertificate</b>(serial, timestamp, reason, ext)
					
					</div>
					<div class="description">
						Add a revoked certificate to the list. This adds the complete DER encoded structure.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>serial</b>
									
								</dt>
								<dd>the serial number of the certificate to revoke</dd>
							
								<dt>
									<span class="light fixedFont">{Date}</span> <b>timestamp</b>
									
								</dt>
								<dd>the revocation time, optional, default is now</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>reason</b>
									
								</dt>
								<dd>the revocation reason</dd>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>ext</b>
									
								</dt>
								<dd>the crl entry extensions</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setIssuer"> </a>
					<div class="fixedFont">
					
					
					<b>setIssuer</b>(issuer)
					
					</div>
					<div class="description">
						Sets the isser name.

<p>The issuer name must be a JavaScript object containing the properties:</p>
<ul>
 <li>C - the country</li>
 <li>O - the organization</li>
 <li>OU - the organization unit</li>
 <li>CN - the common name</li>
</ul>
<p>Example:</p>
<pre>
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>issuer</b>
									
								</dt>
								<dd>the issuer name</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setNextUpdate"> </a>
					<div class="fixedFont">
					
					
					<b>setNextUpdate</b>(datetime)
					
					</div>
					<div class="description">
						Sets the timestamp for the next update
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Date}</span> <b>datetime</b>
									
								</dt>
								<dd>the date and time of the next update</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSignatureAlgorithm"> </a>
					<div class="fixedFont">
					
					
					<b>setSignatureAlgorithm</b>(alg)
					
					</div>
					<div class="description">
						Sets the signature algorithm.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>alg</b>
									
								</dt>
								<dd>the signature algorithm, must be one of Crypto.RSA, Crypto.RSA_SHA256 or Crypto.ECDSA_SHA256</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setThisUpdate"> </a>
					<div class="fixedFont">
					
					
					<b>setThisUpdate</b>(datetime)
					
					</div>
					<div class="description">
						Sets the timestamp for this CRL
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Date}</span> <b>datetime</b>
									
								</dt>
								<dd>the current date and time</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - CVC</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class CVC
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a decoder for card verifiable certificates or requests according to
       Extended Access Control (EAC) as defined in BSI TR-03110 1.11 and 2.02.
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_CVC.js.html">CVC.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class CVC.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/CVC.html#constructor">CVC</a></b>(param)
							</div>
							<div class="description">Create a CVC object from a DER encoded ByteString.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class CVC.">
					<caption>Field Summary</caption>
					<thead>
						<tr>
							<th scope="col">Field Attributes</th>
							<th scope="col">Field Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.ATRIGHTS">ATRIGHTS</a></b>
								</div>
								<div class="description">Table of rights description for id-AT</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.id_TA_ECDSA">id_TA_ECDSA</a></b>
								</div>
								<div class="description">TA constants</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.ISRIGHTS">ISRIGHTS</a></b>
								</div>
								<div class="description">Table of rights description for id-IS</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.OBJECTNAMES">OBJECTNAMES</a></b>
								</div>
								<div class="description">Table of tag names</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.STRIGHTS">STRIGHTS</a></b>
								</div>
								<div class="description">Table of rights description for id-ST</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_AT">TAG_AT</a></b>
								</div>
								<div class="description">Authentication Template</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_AUT">TAG_AUT</a></b>
								</div>
								<div class="description">Relative Authorization</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_BODY">TAG_BODY</a></b>
								</div>
								<div class="description">Certificate Body</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_CAR">TAG_CAR</a></b>
								</div>
								<div class="description">Certification Authority Reference</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_CED">TAG_CED</a></b>
								</div>
								<div class="description">Certificate Effective Date</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_CHAT">TAG_CHAT</a></b>
								</div>
								<div class="description">Certificate Holder Authorisation Template</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_CHR">TAG_CHR</a></b>
								</div>
								<div class="description">Certificate Holder Reference</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_CPI">TAG_CPI</a></b>
								</div>
								<div class="description">Certificate Profile Identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_CVC">TAG_CVC</a></b>
								</div>
								<div class="description">CV Certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_CXD">TAG_CXD</a></b>
								</div>
								<div class="description">Certificate Expiration Date</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_ECC_A">TAG_ECC_A</a></b>
								</div>
								<div class="description">First coefficient a</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_ECC_B">TAG_ECC_B</a></b>
								</div>
								<div class="description">Second coefficient b</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_ECC_G">TAG_ECC_G</a></b>
								</div>
								<div class="description">Base Point G</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_ECC_H">TAG_ECC_H</a></b>
								</div>
								<div class="description">Cofactor f</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_ECC_N">TAG_ECC_N</a></b>
								</div>
								<div class="description">Order of the base point</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_ECC_P">TAG_ECC_P</a></b>
								</div>
								<div class="description">Prime Modulus</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_ECC_Q">TAG_ECC_Q</a></b>
								</div>
								<div class="description">Public Point y</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_EXTN">TAG_EXTN</a></b>
								</div>
								<div class="description">Certificate Extension</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_PUK">TAG_PUK</a></b>
								</div>
								<div class="description">Public Key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								CVC.<b><a href="../symbols/CVC.html#.TAG_SIG">TAG_SIG</a></b>
								</div>
								<div class="description">Signature</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class CVC.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#containsDomainParameter">containsDomainParameter</a></b>()
								</div>
								<div class="description">Return true of the certificate contains domain parameter</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.decodeECPublicKey">decodeECPublicKey</a></b>(pdo, key)
								</div>
								<div class="description">Decode a public key from the TR-03110 format</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#decorate">decorate</a></b>()
								</div>
								<div class="description">Decorate the ASN.1 object with the correct name</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.decorateTree">decorateTree</a></b>(node)
								</div>
								<div class="description">Function to recursively walk the ASN.1 tree</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#determineKeyIdentifier">determineKeyIdentifier</a></b>()
								</div>
								<div class="description">Determine the SubjectKeyIdentifier as defined in X.509</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.fromJSON">fromJSON</a></b>(obj)
								</div>
								<div class="description">Recreate object from JSON encoding</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getASN1">getASN1</a></b>()
								</div>
								<div class="description">Returns the certificate as ASN1 structure</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getBytes">getBytes</a></b>()
								</div>
								<div class="description">Returns the encoded certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getCAR">getCAR</a></b>()
								</div>
								<div class="description">Returns the certification authority reference (CAR).</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getCED">getCED</a></b>()
								</div>
								<div class="description">Returns the certificate effective date (CED).</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getCHAT">getCHAT</a></b>()
								</div>
								<div class="description">Returns the Certificate Holder Authorization Template.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getCHR">getCHR</a></b>()
								</div>
								<div class="description">Returns the certificate holder reference (CHR).</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getCPI">getCPI</a></b>()
								</div>
								<div class="description">Returns the certificate profile indicator (CPI)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getCXD">getCXD</a></b>()
								</div>
								<div class="description">Returns the certificate expiration date (CXD).</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getECPublicKey">getECPublicKey</a></b>(domParam)
								</div>
								<div class="description">Returns the EC public key contained in the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getECPublicKeyIdentifier">getECPublicKeyIdentifier</a></b>()
								</div>
								<div class="description">Return the x-coordinate of the EC Public Key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getExtension">getExtension</a></b>(extoid)
								</div>
								<div class="description">Returns the extension identified by the object identifier.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.getHashMech">getHashMech</a></b>(oid)
								</div>
								<div class="description">Return hash mechanism for object identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getLevel">getLevel</a></b>()
								</div>
								<div class="description">Return position of certificate in PKI hierachie</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getOuterCAR">getOuterCAR</a></b>()
								</div>
								<div class="description">Returns the outer certification authority reference (CAR).</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getPublicKey">getPublicKey</a></b>(domParam)
								</div>
								<div class="description">Returns the public key contained in the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getPublicKeyOID">getPublicKeyOID</a></b>()
								</div>
								<div class="description">Returns the public key object identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getRightsAsList">getRightsAsList</a></b>()
								</div>
								<div class="description">Return list of rights granted by the certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getRSAPublicKey">getRSAPublicKey</a></b>()
								</div>
								<div class="description">Returns the RSA public key contained in the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.getSignatureMech">getSignatureMech</a></b>(oid, keysize)
								</div>
								<div class="description">Return signature mechanism for object identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#getType">getType</a></b>()
								</div>
								<div class="description">Return a string describing the certificate type</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.I2O">I2O</a></b>(value, length)
								</div>
								<div class="description">Integer to octet string conversion</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#isAuthenticatedRequest">isAuthenticatedRequest</a></b>()
								</div>
								<div class="description">Determine if this is an authenticated request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#isCertificateRequest">isCertificateRequest</a></b>()
								</div>
								<div class="description">Determine if this is a certificate request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#isCountersignedRequest">isCountersignedRequest</a></b>()
								</div>
								<div class="description">Determine if this is a countersigned authenticated request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.isCurveOID">isCurveOID</a></b>(oid)
								</div>
								<div class="description">Return true of the object identifier denotes a curve</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.isECDSA">isECDSA</a></b>(oid)
								</div>
								<div class="description">Return true of the object identifier starts with id-TA-ECDSA</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#isExpired">isExpired</a></b>()
								</div>
								<div class="description">Determine if this certificate is expired</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.rewrapSignature">rewrapSignature</a></b>(signature, the)
								</div>
								<div class="description">Rewrap an ECDSA signature that contains redundant leading zeros in integer.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#toJSON">toJSON</a></b>()
								</div>
								<div class="description">Return object suitable for JSON encoding</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#toString">toString</a></b>()
								</div>
								<div class="description">Return a textual description of the certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.unwrapSignature">unwrapSignature</a></b>(signature, keylen)
								</div>
								<div class="description">Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
of the unsigned integer r and s</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#validate">validate</a></b>()
								</div>
								<div class="description">Validate ASN1 semantic for card verifiable certificate or certificate request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#verifyATWith">verifyATWith</a></b>(puk, oid, oid)
								</div>
								<div class="description">Verify outer signature of an authenticated request with public key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#verifyATWithCVC">verifyATWithCVC</a></b>(cvc, cvc)
								</div>
								<div class="description">Verify outer signature of an authenticated request with public key from card verifiable certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#verifyWith">verifyWith</a></b>(crypto, puk, oid)
								</div>
								<div class="description">Verify certificate signature with public key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVC.html#verifyWithCVC">verifyWithCVC</a></b>(cvc, cvc)
								</div>
								<div class="description">Verify certificate signature with public key from card verifiable certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVC.<b><a href="../symbols/CVC.html#.wrapSignature">wrapSignature</a></b>(signature)
								</div>
								<div class="description">Wrap an ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>CVC</b>(param)
				</div>
				
				<div class="description">
					Create a CVC object from a DER encoded ByteString.
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>param</b>
								
							</dt>
								<dd>the DER encoded certificate</dd>
						
						</dl>
					
					
					
					
					
						<dl class="detailList">
						<dt class="heading">Returns:</dt>
						
								<dd></dd>
						
						</dl>
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			
				<div class="sectionTitle">
					Field Detail
				</div>
				
					<a name=".ATRIGHTS"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>ATRIGHTS</b>
					
					</div>
					<div class="description">
						Table of rights description for id-AT
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".id_TA_ECDSA"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>id_TA_ECDSA</b>
					
					</div>
					<div class="description">
						TA constants
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".ISRIGHTS"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>ISRIGHTS</b>
					
					</div>
					<div class="description">
						Table of rights description for id-IS
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".OBJECTNAMES"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>OBJECTNAMES</b>
					
					</div>
					<div class="description">
						Table of tag names
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".STRIGHTS"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>STRIGHTS</b>
					
					</div>
					<div class="description">
						Table of rights description for id-ST
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_AT"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_AT</b>
					
					</div>
					<div class="description">
						Authentication Template
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_AUT"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_AUT</b>
					
					</div>
					<div class="description">
						Relative Authorization
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_BODY"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_BODY</b>
					
					</div>
					<div class="description">
						Certificate Body
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_CAR"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_CAR</b>
					
					</div>
					<div class="description">
						Certification Authority Reference
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_CED"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_CED</b>
					
					</div>
					<div class="description">
						Certificate Effective Date
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_CHAT"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_CHAT</b>
					
					</div>
					<div class="description">
						Certificate Holder Authorisation Template
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_CHR"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_CHR</b>
					
					</div>
					<div class="description">
						Certificate Holder Reference
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_CPI"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_CPI</b>
					
					</div>
					<div class="description">
						Certificate Profile Identifier
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_CVC"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_CVC</b>
					
					</div>
					<div class="description">
						CV Certificate
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_CXD"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_CXD</b>
					
					</div>
					<div class="description">
						Certificate Expiration Date
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_ECC_A"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_ECC_A</b>
					
					</div>
					<div class="description">
						First coefficient a
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_ECC_B"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_ECC_B</b>
					
					</div>
					<div class="description">
						Second coefficient b
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_ECC_G"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_ECC_G</b>
					
					</div>
					<div class="description">
						Base Point G
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_ECC_H"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_ECC_H</b>
					
					</div>
					<div class="description">
						Cofactor f
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_ECC_N"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_ECC_N</b>
					
					</div>
					<div class="description">
						Order of the base point
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_ECC_P"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_ECC_P</b>
					
					</div>
					<div class="description">
						Prime Modulus
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_ECC_Q"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_ECC_Q</b>
					
					</div>
					<div class="description">
						Public Point y
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_EXTN"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_EXTN</b>
					
					</div>
					<div class="description">
						Certificate Extension
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_PUK"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_PUK</b>
					
					</div>
					<div class="description">
						Public Key
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TAG_SIG"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>TAG_SIG</b>
					
					</div>
					<div class="description">
						Signature
						
						
					</div>
					
					

						
						
						
						

					
				
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="containsDomainParameter"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>containsDomainParameter</b>()
					
					</div>
					<div class="description">
						Return true of the certificate contains domain parameter
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if certificate contains domain parameter</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".decodeECPublicKey"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>decodeECPublicKey</b>(pdo, key)
					
					</div>
					<div class="description">
						Decode a public key from the TR-03110 format
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>pdo</b>
									
								</dt>
								<dd>the public key data object</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the key object to fill</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="decorate"> </a>
					<div class="fixedFont">
					
					
					<b>decorate</b>()
					
					</div>
					<div class="description">
						Decorate the ASN.1 object with the correct name
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name=".decorateTree"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>decorateTree</b>(node)
					
					</div>
					<div class="description">
						Function to recursively walk the ASN.1 tree
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>node</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="determineKeyIdentifier"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>determineKeyIdentifier</b>()
					
					</div>
					<div class="description">
						Determine the SubjectKeyIdentifier as defined in X.509
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".fromJSON"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Object}</span>
					<span class="light">CVC.</span><b>fromJSON</b>(obj)
					
					</div>
					<div class="description">
						Recreate object from JSON encoding
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>obj</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CVC object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getASN1"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getASN1</b>()
					
					</div>
					<div class="description">
						Returns the certificate as ASN1 structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate as ASN1 structure</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getBytes"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getBytes</b>()
					
					</div>
					<div class="description">
						Returns the encoded certificate
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the DER encoded certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCAR"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span>
					<b>getCAR</b>()
					
					</div>
					<div class="description">
						Returns the certification authority reference (CAR).
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CAR or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCED"> </a>
					<div class="fixedFont">
					
					<span class="light">{Date}</span>
					<b>getCED</b>()
					
					</div>
					<div class="description">
						Returns the certificate effective date (CED).
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CED or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCHAT"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getCHAT</b>()
					
					</div>
					<div class="description">
						Returns the Certificate Holder Authorization Template.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the chat or null if not defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCHR"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span>
					<b>getCHR</b>()
					
					</div>
					<div class="description">
						Returns the certificate holder reference (CHR).
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CHR</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCPI"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getCPI</b>()
					
					</div>
					<div class="description">
						Returns the certificate profile indicator (CPI)
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CPI or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCXD"> </a>
					<div class="fixedFont">
					
					<span class="light">{Date}</span>
					<b>getCXD</b>()
					
					</div>
					<div class="description">
						Returns the certificate expiration date (CXD).
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CXD or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getECPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getECPublicKey</b>(domParam)
					
					</div>
					<div class="description">
						Returns the EC public key contained in the certificate.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>domParam</b>
									
								</dt>
								<dd>optional domain parameter if they are not contained in certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the public key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getECPublicKeyIdentifier"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getECPublicKeyIdentifier</b>()
					
					</div>
					<div class="description">
						Return the x-coordinate of the EC Public Key.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getExtension"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getExtension</b>(extoid)
					
					</div>
					<div class="description">
						Returns the extension identified by the object identifier.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>extoid</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the extension including the OID or null if not defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getHashMech"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Number}</span>
					<span class="light">CVC.</span><b>getHashMech</b>(oid)
					
					</div>
					<div class="description">
						Return hash mechanism for object identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>the object identifer from the public key object</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the hash mechanism as Crypto. constant or -1 if not defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getLevel"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getLevel</b>()
					
					</div>
					<div class="description">
						Return position of certificate in PKI hierachie
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>Position in PKI hierachie: 0 unknown, 1-CVCA, 2-DVCA, 3-Terminal</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getOuterCAR"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span>
					<b>getOuterCAR</b>()
					
					</div>
					<div class="description">
						Returns the outer certification authority reference (CAR).
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the outer CAR or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getPublicKey</b>(domParam)
					
					</div>
					<div class="description">
						Returns the public key contained in the certificate.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>domParam</b>
									
								</dt>
								<dd>optional domain parameter if they are not contained in certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the public key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPublicKeyOID"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getPublicKeyOID</b>()
					
					</div>
					<div class="description">
						Returns the public key object identifier
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the object identifier assigned to the public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRightsAsList"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>getRightsAsList</b>()
					
					</div>
					<div class="description">
						Return list of rights granted by the certificate
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of rights</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRSAPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getRSAPublicKey</b>()
					
					</div>
					<div class="description">
						Returns the RSA public key contained in the certificate.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the public key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".getSignatureMech"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Number}</span>
					<span class="light">CVC.</span><b>getSignatureMech</b>(oid, keysize)
					
					</div>
					<div class="description">
						Return signature mechanism for object identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>the object identifer from the public key object</dd>
							
								<dt>
									<b>keysize</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signature mechanism as Crypto. constant or -1 if not defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getType"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getType</b>()
					
					</div>
					<div class="description">
						Return a string describing the certificate type
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a describing string</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".I2O"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>I2O</b>(value, length)
					
					</div>
					<div class="description">
						Integer to octet string conversion
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>value</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>length</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="isAuthenticatedRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>isAuthenticatedRequest</b>()
					
					</div>
					<div class="description">
						Determine if this is an authenticated request
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if authenticated request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isCertificateRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>isCertificateRequest</b>()
					
					</div>
					<div class="description">
						Determine if this is a certificate request
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isCountersignedRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>isCountersignedRequest</b>()
					
					</div>
					<div class="description">
						Determine if this is a countersigned authenticated request
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if countersigned authenticated request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".isCurveOID"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{boolean}</span>
					<span class="light">CVC.</span><b>isCurveOID</b>(oid)
					
					</div>
					<div class="description">
						Return true of the object identifier denotes a curve
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>oid</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if ECDSA based OID</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".isECDSA"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{boolean}</span>
					<span class="light">CVC.</span><b>isECDSA</b>(oid)
					
					</div>
					<div class="description">
						Return true of the object identifier starts with id-TA-ECDSA
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>oid</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if ECDSA based OID</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isExpired"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>isExpired</b>()
					
					</div>
					<div class="description">
						Determine if this certificate is expired
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if certificate is expired</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".rewrapSignature"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">CVC.</span><b>rewrapSignature</b>(signature, the)
					
					</div>
					<div class="description">
						Rewrap an ECDSA signature that contains redundant leading zeros in integer.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>signature</b>
									
								</dt>
								<dd>the signature</dd>
							
								<dt>
									<b>the</b>
									
								</dt>
								<dd>fixed signature</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="toJSON"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>toJSON</b>()
					
					</div>
					<div class="description">
						Return object suitable for JSON encoding
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a JSON encodable object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>toString</b>()
					
					</div>
					<div class="description">
						Return a textual description of the certificate
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a string containing information about the certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".unwrapSignature"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>unwrapSignature</b>(signature, keylen)
					
					</div>
					<div class="description">
						Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
of the unsigned integer r and s
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>signature</b>
									
								</dt>
								<dd>TLV encoded signature</dd>
							
								<dt>
									<b>keylen</b>
									
								</dt>
								<dd>optional parameter to specify the key lengths in bytes.</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>concatenation of r and s</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="validate"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>validate</b>()
					
					</div>
					<div class="description">
						Validate ASN1 semantic for card verifiable certificate or certificate request
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>null if no error, or error message</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyATWith"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>verifyATWith</b>(puk, oid, oid)
					
					</div>
					<div class="description">
						Verify outer signature of an authenticated request with public key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>the signature algorithm</dd>
							
								<dt>
									<b>oid</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the signature is valid</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyATWithCVC"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>verifyATWithCVC</b>(cvc, cvc)
					
					</div>
					<div class="description">
						Verify outer signature of an authenticated request with public key from card verifiable certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cvc</b>
									
								</dt>
								<dd>the card verifiable certificate used to obtain the public key</dd>
							
								<dt>
									<b>cvc</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the signature is valid</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyWith"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>verifyWith</b>(crypto, puk, oid)
					
					</div>
					<div class="description">
						Verify certificate signature with public key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto instance to use for verification</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>the signature algorithm</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the signature is valid</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyWithCVC"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>verifyWithCVC</b>(cvc, cvc)
					
					</div>
					<div class="description">
						Verify certificate signature with public key from card verifiable certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cvc</b>
									
								</dt>
								<dd>the card verifiable certificate used to obtain the public key</dd>
							
								<dt>
									<b>cvc</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the signature is valid</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".wrapSignature"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVC.</span><b>wrapSignature</b>(signature)
					
					</div>
					<div class="description">
						Wrap an ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>signature</b>
									
								</dt>
								<dd>ByteString containing the concatenation of r and s as unsigned integer values</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>ASN.1 SEQUENCE objects containing two signed integer r and s</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - CVCCA</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class CVCCA
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class supporting a certification authority that can issue CVC certificates
for the EAC protocol.
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_CVCCA.js.html">CVCCA.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class CVCCA.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/CVCCA.html#constructor">CVCCA</a></b>(crypto, certstore, path, parentId, path)
							</div>
							<div class="description">Creates a new CVC-CA instance</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class CVCCA.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#counterSignRequest">counterSignRequest</a></b>(req)
								</div>
								<div class="description">Counter-sign a request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#generateCertificate">generateCertificate</a></b>(req, policy)
								</div>
								<div class="description">Generate certificate for certificate request

<p>Certificate contents is defined through the policy object:</p>
<pre>
 	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
</pre></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#generateInitialRequest">generateInitialRequest</a></b>(car)
								</div>
								<div class="description">Generate an initial certificate request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#generateRequest">generateRequest</a></b>(car, forceInitial, signinitial)
								</div>
								<div class="description">Generate a certificate request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#generateRequestHSM">generateRequestHSM</a></b>(car, forceInitial, signinitial)
								</div>
								<div class="description">Generate a certificate request using a SmartCard-HSM based private key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#generateRequestHSMCP">generateRequestHSMCP</a></b>(prov, car, forceInitial, signinitial)
								</div>
								<div class="description">Generate a certificate request using a SmartCard-HSM based private key via EACCryptoProvider</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#generateSignedInitialRequest">generateSignedInitialRequest</a></b>(car)
								</div>
								<div class="description">Generate a signed initial certificate request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#getAuthenticPublicKey">getAuthenticPublicKey</a></b>(chr)
								</div>
								<div class="description">Return authentic public key with domain parameter for a given CHR subordinate to the CA</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#getCertificateList">getCertificateList</a></b>(fromCAR)
								</div>
								<div class="description">Returns a list of relevant certificates.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#getCrypto">getCrypto</a></b>()
								</div>
								<div class="description">Return a suitable crypto instance</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#getIssuedCertificate">getIssuedCertificate</a></b>(chr)
								</div>
								<div class="description">Return certificate issued by this CA</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#getPrivateKey">getPrivateKey</a></b>(path, chr)
								</div>
								<div class="description">Return private key handle, either from EACCryptoProvider or Certificate Store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#hasCertificate">hasCertificate</a></b>()
								</div>
								<div class="description">Returns true if this CA has a certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#importCertificate">importCertificate</a></b>(cert)
								</div>
								<div class="description">Import a certificate into the certificate store and make it the current certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#importCertificates">importCertificates</a></b>(certs)
								</div>
								<div class="description">Import a list of certificates into the certificate store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#isOperational">isOperational</a></b>()
								</div>
								<div class="description">Returns true if this CA is operational.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#isRootCA">isRootCA</a></b>()
								</div>
								<div class="description">Returns true if this is a root CA</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#removePreviouslyUsedKey">removePreviouslyUsedKey</a></b>(previous)
								</div>
								<div class="description">Remove previous key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#setCountryCodeForSequence">setCountryCodeForSequence</a></b>(countryseq)
								</div>
								<div class="description">Set country code to be included in sequence number of public key reference</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#setEACCryptoProviderFactory">setEACCryptoProviderFactory</a></b>(eaccp, eaccpid)
								</div>
								<div class="description">Set factory generating EACCryptoProvider for private key operations (create, use, delete)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#setKeySpec">setKeySpec</a></b>(keyparam, algorithm)
								</div>
								<div class="description">Sets the key specification for generating requests</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#setRemovePreviousKey">setRemovePreviousKey</a></b>(removePreviousKey)
								</div>
								<div class="description">Set flags that controls the removal of the previous key if the certificate for the new key is imported</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCCA.html#storeCertificate">storeCertificate</a></b>(cert)
								</div>
								<div class="description">Store issued certificate</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>CVCCA</b>(crypto, certstore, path, parentId, path)
				</div>
				
				<div class="description">
					Creates a new CVC-CA instance
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider to use</dd>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/CVCertificateStore.html">CVCertificateStore</a>}</span>  <b>certstore</b>
								
							</dt>
								<dd>the certificate store to use</dd>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>path</b>
								
							</dt>
								<dd>the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM")</dd>
						
							<dt>
								 <b>parentId</b>
								
							</dt>
								<dd></dd>
						
							<dt>
								 <b>path</b>
								
							</dt>
								<dd></dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="counterSignRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>counterSignRequest</b>(req)
					
					</div>
					<div class="description">
						Counter-sign a request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>req</b>
									
								</dt>
								<dd>the initial request</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateCertificate</b>(req, policy)
					
					</div>
					<div class="description">
						Generate certificate for certificate request

<p>Certificate contents is defined through the policy object:</p>
<pre>
 	var policy = { certificateValidityDays: 2,
				   chatRoleOID: new ByteString("id-IS", OID),
				   chatRights: new ByteString("E3", HEX),
				   includeDomainParameter: true,
				   extensions: []
				 };
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>req</b>
									
								</dt>
								<dd>the certificate request</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>policy</b>
									
								</dt>
								<dd>the object with policy settings</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateInitialRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateInitialRequest</b>(car)
					
					</div>
					<div class="description">
						Generate an initial certificate request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>car</b>
									
								</dt>
								<dd>the CA at which this request is addressed</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateRequest</b>(car, forceInitial, signinitial)
					
					</div>
					<div class="description">
						Generate a certificate request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>car</b>
									
								</dt>
								<dd>the CA at which this request is addressed</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>forceInitial</b>
									
								</dt>
								<dd>force an initial request, even if a current certificate is available</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>signinitial</b>
									
								</dt>
								<dd>sign with initial key (sequence = 00000)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateRequestHSM"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateRequestHSM</b>(car, forceInitial, signinitial)
					
					</div>
					<div class="description">
						Generate a certificate request using a SmartCard-HSM based private key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>car</b>
									
								</dt>
								<dd>the CA at which this request is addressed</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>forceInitial</b>
									
								</dt>
								<dd>force an initial request, even if a current certificate is available</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>signinitial</b>
									
								</dt>
								<dd>sign with initial key (sequence = 00000)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateRequestHSMCP"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateRequestHSMCP</b>(prov, car, forceInitial, signinitial)
					
					</div>
					<div class="description">
						Generate a certificate request using a SmartCard-HSM based private key via EACCryptoProvider
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/_global_.html#EACCryptoProvider">EACCryptoProvider</a>}</span> <b>prov</b>
									
								</dt>
								<dd>the EACCryptoProvider</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>car</b>
									
								</dt>
								<dd>the CA at which this request is addressed</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>forceInitial</b>
									
								</dt>
								<dd>force an initial request, even if a current certificate is available</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>signinitial</b>
									
								</dt>
								<dd>sign with initial key (sequence = 00000)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateSignedInitialRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateSignedInitialRequest</b>(car)
					
					</div>
					<div class="description">
						Generate a signed initial certificate request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>car</b>
									
								</dt>
								<dd>the CA at which this request is addressed</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getAuthenticPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getAuthenticPublicKey</b>(chr)
					
					</div>
					<div class="description">
						Return authentic public key with domain parameter for a given CHR subordinate to the CA
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder reference</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the public key or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCertificateList"> </a>
					<div class="fixedFont">
					
					
					<b>getCertificateList</b>(fromCAR)
					
					</div>
					<div class="description">
						Returns a list of relevant certificates.

<p>If the CA is the root CA, then all self-signed and link certificates are returned.</p>
<p>If the CA is a DVCA, then all certificates of the associated root and the current
   DVCA certificate is returned.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>fromCAR</b>
									
								</dt>
								<dd>the optional starting point for the list if not a root CA</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getCrypto"> </a>
					<div class="fixedFont">
					
					
					<b>getCrypto</b>()
					
					</div>
					<div class="description">
						Return a suitable crypto instance
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="getIssuedCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>getIssuedCertificate</b>(chr)
					
					</div>
					<div class="description">
						Return certificate issued by this CA
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder reference</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPrivateKey"> </a>
					<div class="fixedFont">
					
					
					<b>getPrivateKey</b>(path, chr)
					
					</div>
					<div class="description">
						Return private key handle, either from EACCryptoProvider or Certificate Store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>path</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>chr</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="hasCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasCertificate</b>()
					
					</div>
					<div class="description">
						Returns true if this CA has a certificate.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if this CA is operational</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="importCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>importCertificate</b>(cert)
					
					</div>
					<div class="description">
						Import a certificate into the certificate store and make it the current certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="importCertificates"> </a>
					<div class="fixedFont">
					
					
					<b>importCertificates</b>(certs)
					
					</div>
					<div class="description">
						Import a list of certificates into the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>[]}</span> <b>certs</b>
									
								</dt>
								<dd>the list of certificates</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="isOperational"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isOperational</b>()
					
					</div>
					<div class="description">
						Returns true if this CA is operational.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if this CA is operational</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isRootCA"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isRootCA</b>()
					
					</div>
					<div class="description">
						Returns true if this is a root CA
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if this is a root CA</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="removePreviouslyUsedKey"> </a>
					<div class="fixedFont">
					
					
					<b>removePreviouslyUsedKey</b>(previous)
					
					</div>
					<div class="description">
						Remove previous key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>previous</b>
									
								</dt>
								<dd>the previously used CHR</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setCountryCodeForSequence"> </a>
					<div class="fixedFont">
					
					
					<b>setCountryCodeForSequence</b>(countryseq)
					
					</div>
					<div class="description">
						Set country code to be included in sequence number of public key reference
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>countryseq</b>
									
								</dt>
								<dd>the two character country code</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setEACCryptoProviderFactory"> </a>
					<div class="fixedFont">
					
					
					<b>setEACCryptoProviderFactory</b>(eaccp, eaccpid)
					
					</div>
					<div class="description">
						Set factory generating EACCryptoProvider for private key operations (create, use, delete)
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/_global_.html#EACCryptoProvider">EACCryptoProvider</a>}</span> <b>eaccp</b>
									
								</dt>
								<dd>the EAC Crypto Provider for this instance</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>eaccpid</b>
									
								</dt>
								<dd>the instance id</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setKeySpec"> </a>
					<div class="fixedFont">
					
					
					<b>setKeySpec</b>(keyparam, algorithm)
					
					</div>
					<div class="description">
						Sets the key specification for generating requests
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>keyparam</b>
									
								</dt>
								<dd>a key object containing key parameters (e.g. EC Curve)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>algorithm</b>
									
								</dt>
								<dd>the terminal authentication algorithm object identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setRemovePreviousKey"> </a>
					<div class="fixedFont">
					
					
					<b>setRemovePreviousKey</b>(removePreviousKey)
					
					</div>
					<div class="description">
						Set flags that controls the removal of the previous key if the certificate for the new key is imported
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>removePreviousKey</b>
									
								</dt>
								<dd>true to remove, false to keep</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="storeCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>storeCertificate</b>(cert)
					
					</div>
					<div class="description">
						Store issued certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cert</b>
									
								</dt>
								<dd>a newly issued certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - CVCertificateStore</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class CVCertificateStore
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class that abstracts a certificate and key store for a EAC PKI.
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_CVCertificateStore.js.html">CVCertificateStore.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class CVCertificateStore.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/CVCertificateStore.html#constructor">CVCertificateStore</a></b>(DAOFactory)
							</div>
							<div class="description">Create an object to access a certificate store.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class CVCertificateStore.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVCertificateStore.<b><a href="../symbols/CVCertificateStore.html#.checkPath">checkPath</a></b>(path)
								</div>
								<div class="description">Check path

This method validates the path for semantic errors and should be called for input
validation before using the path in the certificate store API.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#deleteCertificate">deleteCertificate</a></b>(path, chr, selfsigned)
								</div>
								<div class="description">Remove certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#deletePrivateKey">deletePrivateKey</a></b>(path, chr)
								</div>
								<div class="description">Remove private key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#deleteRequest">deleteRequest</a></b>(path, chr)
								</div>
								<div class="description">Remove request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#deleteSigner">deleteSigner</a></b>(path, chr)
								</div>
								<div class="description">Remove Signer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#generateKeyPair">generateKeyPair</a></b>(path, chr, algo, prk, puk)
								</div>
								<div class="description">Generate key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getCertificate">getCertificate</a></b>(path, chr, selfsigned)
								</div>
								<div class="description">Return certificate for a given CHR

<p>This method returns a self-signed root certificate if the selfsigned
   parameter is set.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getCertificateBinary">getCertificateBinary</a></b>(path, chr, selfsigned)
								</div>
								<div class="description">Return certificate for a given CHR in binary format

<p>This method returns a self-signed root certificate if the selfsigned
   parameter is set.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getCertificateChain">getCertificateChain</a></b>(path, tochr, fromcar)
								</div>
								<div class="description">Return a chain of certificates resembling a path from root to end entity.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getCrypto">getCrypto</a></b>()
								</div>
								<div class="description">Return a suitable crypto object.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getCurrentCHR">getCurrentCHR</a></b>(path)
								</div>
								<div class="description">Return the current CHR for which a valid certificate exists</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getDefaultDomainParameter">getDefaultDomainParameter</a></b>(path)
								</div>
								<div class="description">Returns the default domain parameter for a given PKI</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getDefaultPublicKeyOID">getDefaultPublicKeyOID</a></b>(path)
								</div>
								<div class="description">Returns the default algorithm identifier OID from the most recent link certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getDomainParameter">getDomainParameter</a></b>(path, chr)
								</div>
								<div class="description">Returns the domain parameter for a certificate identified by its CHR

<p>This method traverses the certificate hierachie upwards and follows link certificates
   until domain parameter are found.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getIssuerPathFor">getIssuerPathFor</a></b>(cvc, cvcahint)
								</div>
								<div class="description">Determine path for certificate issuer

For CVCA and DVCA certificates we can determined the path from the CAR.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getNextCHR">getNextCHR</a></b>(path, countryseq)
								</div>
								<div class="description">Return the next CHR</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getPrivateKey">getPrivateKey</a></b>(path, chr)
								</div>
								<div class="description">Get a private key in the certificate store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getRequest">getRequest</a></b>(path, chr)
								</div>
								<div class="description">Return request for given CHR</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#getSigner">getSigner</a></b>(path, chr)
								</div>
								<div class="description">Get Signer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#insertCertificate">insertCertificate</a></b>(crypto, cvc, cvcahint, forceUpdate)
								</div>
								<div class="description">Insert a single certificates into the certificate store

<p>Before a certificate is imported, the signature is verified.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#insertCertificates">insertCertificates</a></b>(crypto, certlist, insertSelfSigned, cvcahint, forceUpdate)
								</div>
								<div class="description">Insert certificates into certificate store

<p>The import into the internal data structure is done in three steps:</p>
<ol>
 <li>If allowed, all self-signed certificates are imported</li>
 <li>All possible certificate chains are build</li>
 <li>Certificate chains are processed starting with the topmost certificate in the hierachie</li>
</ol>
<p>Certificates at the terminal level can only be imported, if the issuing
   DVCA certificate is contained in the list or a hint for the relevant CVCA is
   given in the first element of the path contained in parameter cvcahint.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#listCertificates">listCertificates</a></b>(path)
								</div>
								<div class="description">List certificates stored for given PKI element sorted by CHR</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#listHolders">listHolders</a></b>(path)
								</div>
								<div class="description">List certificate holders for a given PKI element</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#locateCertificate">locateCertificate</a></b>(chr)
								</div>
								<div class="description">Try locating a certificate with the given CHR

This method tries to find a specific certificate in the store, irrespectively of the holder.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#newSigner">newSigner</a></b>(path, chr, algo, prk, puk)
								</div>
								<div class="description">Create Signer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVCertificateStore.<b><a href="../symbols/CVCertificateStore.html#.nthElementOf">nthElementOf</a></b>(path, n)
								</div>
								<div class="description">Return the n-element of the path</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">CVCertificateStore.<b><a href="../symbols/CVCertificateStore.html#.parentPathOf">parentPathOf</a></b>(path)
								</div>
								<div class="description">Strip the last element of the path, effectively defining the parent within the path</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#setContextMarker">setContextMarker</a></b>(contextMarker)
								</div>
								<div class="description">Set a context marker that goes into the certificate type

The context marker allows to have different certificate stores with different
namespaces in the same database.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#setSignerNo">setSignerNo</a></b>(path, signerNo)
								</div>
								<div class="description">Set the new signer number, if it is larger than the current</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#storeCertificate">storeCertificate</a></b>(path, cert, makeCurrent, forceUpdate)
								</div>
								<div class="description">Store a certificate in the certificate store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#storeRequest">storeRequest</a></b>(path, req)
								</div>
								<div class="description">Store a certificate request in the certificate store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CVCertificateStore.html#validateCertificate">validateCertificate</a></b>(crypto, cvc, cvcahint)
								</div>
								<div class="description">Validate a certificate against a certificate already stored in the certificate store

<p>If the certificate is a terminal certificate, then the first element of the path given
   in cvcahint is used to determine the correct CVCA.</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>CVCertificateStore</b>(DAOFactory)
				</div>
				
				<div class="description">
					Create an object to access a certificate store.
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{DAOFactory}</span>  <b>DAOFactory</b>
								
							</dt>
								<dd>the factory that can create data access objects for persistent information</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name=".checkPath"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">CVCertificateStore.</span><b>checkPath</b>(path)
					
					</div>
					<div class="description">
						Check path

This method validates the path for semantic errors and should be called for input
validation before using the path in the certificate store API.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the path to validate</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deleteCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>deleteCertificate</b>(path, chr, selfsigned)
					
					</div>
					<div class="description">
						Remove certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this certificate</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>selfsigned</b>
									
								</dt>
								<dd>delete the self-signed root certificate rather than a link certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true is deleted</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deletePrivateKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>deletePrivateKey</b>(path, chr)
					
					</div>
					<div class="description">
						Remove private key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true is deleted</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deleteRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>deleteRequest</b>(path, chr)
					
					</div>
					<div class="description">
						Remove request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this request</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true is deleted</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deleteSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>deleteSigner</b>(path, chr)
					
					</div>
					<div class="description">
						Remove Signer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true is deleted</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateKeyPair"> </a>
					<div class="fixedFont">
					
					
					<b>generateKeyPair</b>(path, chr, algo, prk, puk)
					
					</div>
					<div class="description">
						Generate key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key pair</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>algo</b>
									
								</dt>
								<dd>the key generation algorithm (Crypto.EC or Crypto.RSA)</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>prk</b>
									
								</dt>
								<dd>the private key template</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key template</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>getCertificate</b>(path, chr, selfsigned)
					
					</div>
					<div class="description">
						Return certificate for a given CHR

<p>This method returns a self-signed root certificate if the selfsigned
   parameter is set. If not set or set to false, then matching link certificate,
   if any, is returned rather than the self-signed certificate.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>selfsigned</b>
									
								</dt>
								<dd>return the self-signed root certificate rather than a link certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCertificateBinary"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCertificateBinary</b>(path, chr, selfsigned)
					
					</div>
					<div class="description">
						Return certificate for a given CHR in binary format

<p>This method returns a self-signed root certificate if the selfsigned
   parameter is set. If not set or set to false, then matching link certificate,
   if any, is returned rather than the self-signed certificate.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>selfsigned</b>
									
								</dt>
								<dd>return the self-signed root certificate rather than a link certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCertificateChain"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>[]}</span>
					<b>getCertificateChain</b>(path, tochr, fromcar)
					
					</div>
					<div class="description">
						Return a chain of certificates resembling a path from root to end entity.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>tochr</b>
									
								</dt>
								<dd>the public key reference for the certificate at the end of the chain</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>fromcar</b>
									
								</dt>
								<dd>the public key reference for the certificate to start with or root if undefined</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of certificates starting with a self signed root certificate (fromcar undefined) a certificate
         issued by fromcar up to an including the certificate referenced by tochr. Return null if fromcar is not found.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCrypto"> </a>
					<div class="fixedFont">
					
					<span class="light">{Crypto}</span>
					<b>getCrypto</b>()
					
					</div>
					<div class="description">
						Return a suitable crypto object. This may be overwritten by derived classes
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the Crypto object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCurrentCHR"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span>
					<b>getCurrentCHR</b>(path)
					
					</div>
					<div class="description">
						Return the current CHR for which a valid certificate exists
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the current CHR for which a certificate exists or null if none exists</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getDefaultDomainParameter"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getDefaultDomainParameter</b>(path)
					
					</div>
					<div class="description">
						Returns the default domain parameter for a given PKI
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the domain parameter</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getDefaultPublicKeyOID"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getDefaultPublicKeyOID</b>(path)
					
					</div>
					<div class="description">
						Returns the default algorithm identifier OID from the most recent link certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the algorithm identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getDomainParameter"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getDomainParameter</b>(path, chr)
					
					</div>
					<div class="description">
						Returns the domain parameter for a certificate identified by its CHR

<p>This method traverses the certificate hierachie upwards and follows link certificates
   until domain parameter are found.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the CHR of the certificate to start the search with</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the domain parameter</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getIssuerPathFor"> </a>
					<div class="fixedFont">
					
					
					<b>getIssuerPathFor</b>(cvc, cvcahint)
					
					</div>
					<div class="description">
						Determine path for certificate issuer

For CVCA and DVCA certificates we can determined the path from the CAR. For Terminal
certificates we dont know the full path, as we don't know under which CVCA the DVCA operates
that issued the Terminal certificate. So we use a two-step heuristic which first tries to locate
the DVCA certificate based on the CAR and if that is not unique uses the cvcahint to determine the path
of the issuer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>cvc</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>cvcahint</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getNextCHR"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span>
					<b>getNextCHR</b>(path, countryseq)
					
					</div>
					<div class="description">
						Return the next CHR
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>countryseq</b>
									
								</dt>
								<dd>the 2 digit country code to include in the sequence number (optional)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the next CHR based on the sequence counter maintained in the configuration file</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPrivateKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getPrivateKey</b>(path, chr)
					
					</div>
					<div class="description">
						Get a private key in the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>getRequest</b>(path, chr)
					
					</div>
					<div class="description">
						Return request for given CHR
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for the certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the request or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getSigner</b>(path, chr)
					
					</div>
					<div class="description">
						Get Signer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key blob</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="insertCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>insertCertificate</b>(crypto, cvc, cvcahint, forceUpdate)
					
					</div>
					<div class="description">
						Insert a single certificates into the certificate store

<p>Before a certificate is imported, the signature is verified.</p>
<p>If the certificate is a terminal certificate, then the first element of the path given
   in cvcahint is used to determine the correct CVCA.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto provider to be used for certificate verification</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cvc</b>
									
								</dt>
								<dd>the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>cvcahint</b>
									
								</dt>
								<dd>the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>forceUpdate</b>
									
								</dt>
								<dd>true if certificate should be updated even if one already exists</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if the certificate was inserted</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="insertCertificates"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>[]}</span>
					<b>insertCertificates</b>(crypto, certlist, insertSelfSigned, cvcahint, forceUpdate)
					
					</div>
					<div class="description">
						Insert certificates into certificate store

<p>The import into the internal data structure is done in three steps:</p>
<ol>
 <li>If allowed, all self-signed certificates are imported</li>
 <li>All possible certificate chains are build</li>
 <li>Certificate chains are processed starting with the topmost certificate in the hierachie</li>
</ol>
<p>Certificates at the terminal level can only be imported, if the issuing
   DVCA certificate is contained in the list or a hint for the relevant CVCA is
   given in the first element of the path contained in parameter cvcahint.</p>
<p>Before a certificate is imported, the signature is verified.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto provider to be used for certificate verification</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>[]}</span> <b>certlist</b>
									
								</dt>
								<dd>the unordered list of certificates</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>insertSelfSigned</b>
									
								</dt>
								<dd>true, if the import of root certificates is allowed</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>cvcahint</b>
									
								</dt>
								<dd>the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>forceUpdate</b>
									
								</dt>
								<dd>true if certificate should be updated even if one already exists</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the (ideally empty) list of unprocessed certificates. This does not contains certificates
         that fail signature verification.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="listCertificates"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>[]}</span>
					<b>listCertificates</b>(path)
					
					</div>
					<div class="description">
						List certificates stored for given PKI element sorted by CHR
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a list of certificates, possibly empty</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="listHolders"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>listHolders</b>(path)
					
					</div>
					<div class="description">
						List certificate holders for a given PKI element
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a list of holder ids, possibly empty</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="locateCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>locateCertificate</b>(chr)
					
					</div>
					<div class="description">
						Try locating a certificate with the given CHR

This method tries to find a specific certificate in the store, irrespectively of the holder.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for the certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate or null if none found or more than one found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="newSigner"> </a>
					<div class="fixedFont">
					
					
					<b>newSigner</b>(path, chr, algo, prk, puk)
					
					</div>
					<div class="description">
						Create Signer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key pair</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>algo</b>
									
								</dt>
								<dd>the key generation algorithm (Crypto.EC or Crypto.RSA)</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>prk</b>
									
								</dt>
								<dd>the private key template</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key template</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".nthElementOf"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">CVCertificateStore.</span><b>nthElementOf</b>(path, n)
					
					</div>
					<div class="description">
						Return the n-element of the path
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the path to return the last element from</dd>
							
								<dt>
									<b>n</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the last path element or null for the root</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parentPathOf"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">CVCertificateStore.</span><b>parentPathOf</b>(path)
					
					</div>
					<div class="description">
						Strip the last element of the path, effectively defining the parent within the path
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the path to strip the last element from</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the parent path or null for the root</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setContextMarker"> </a>
					<div class="fixedFont">
					
					
					<b>setContextMarker</b>(contextMarker)
					
					</div>
					<div class="description">
						Set a context marker that goes into the certificate type

The context marker allows to have different certificate stores with different
namespaces in the same database. The default context marker is 0.

The context marker is stored with the Holder table.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>contextMarker</b>
									
								</dt>
								<dd>the marker</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSignerNo"> </a>
					<div class="fixedFont">
					
					
					<b>setSignerNo</b>(path, signerNo)
					
					</div>
					<div class="description">
						Set the new signer number, if it is larger than the current
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>signerNo</b>
									
								</dt>
								<dd>the new signer number</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="storeCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>storeCertificate</b>(path, cert, makeCurrent, forceUpdate)
					
					</div>
					<div class="description">
						Store a certificate in the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>makeCurrent</b>
									
								</dt>
								<dd>true if this certificate becomes the current certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>forceUpdate</b>
									
								</dt>
								<dd>true if certificate should be updated even if one already exists</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="storeRequest"> </a>
					<div class="fixedFont">
					
					
					<b>storeRequest</b>(path, req)
					
					</div>
					<div class="description">
						Store a certificate request in the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>req</b>
									
								</dt>
								<dd>the request</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="validateCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>validateCertificate</b>(crypto, cvc, cvcahint)
					
					</div>
					<div class="description">
						Validate a certificate against a certificate already stored in the certificate store

<p>If the certificate is a terminal certificate, then the first element of the path given
   in cvcahint is used to determine the correct CVCA.</p>

Throws an exception if the certificate can not be validated
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto provider to be used for certificate verification</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cvc</b>
									
								</dt>
								<dd>the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>cvcahint</b>
									
								</dt>
								<dd>the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>object containing the path and domain parameter used for validating the certificate. Returns null if no issuer could be found</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - ChipAuthentication</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class ChipAuthentication
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				This class implements the ChipAuthentication protocol
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_ChipAuthentication.js.html">ChipAuthentication.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class ChipAuthentication.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/ChipAuthentication.html#constructor">ChipAuthentication</a></b>(crypto, algo, domparam)
							</div>
							<div class="description">Create a ChipAuthentication protocol object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class ChipAuthentication.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#calculateAuthenticationToken">calculateAuthenticationToken</a></b>(the)
								</div>
								<div class="description">Calculate the authentication token over the public key received from
the other side</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#decodeEphemeralPublicKey">decodeEphemeralPublicKey</a></b>(encodedKey)
								</div>
								<div class="description">Decodes the ephemeral public key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#deriveKey">deriveKey</a></b>(input, counter, the)
								</div>
								<div class="description">Derive key from input parameter, counter and optional nonce</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">ChipAuthentication.<b><a href="../symbols/ChipAuthentication.html#.encodePublicKey">encodePublicKey</a></b>(oid, key, withDP)
								</div>
								<div class="description">Encode an ECC public key in the format defined by the EAC 2.0 specification</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#generateEphemeralCAKeyPair">generateEphemeralCAKeyPair</a></b>()
								</div>
								<div class="description">Generate ephemeral key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#getCompressedPublicKey">getCompressedPublicKey</a></b>()
								</div>
								<div class="description">Returns the x coordinate of the public key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#getEphemeralPublicKey">getEphemeralPublicKey</a></b>()
								</div>
								<div class="description">Returns the ephemeral public key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#performKeyAgreement">performKeyAgreement</a></b>(publicKey, nonce)
								</div>
								<div class="description">Performs the mapping operation with mapping data from the other side</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#setKeyPair">setKeyPair</a></b>(prk, puk)
								</div>
								<div class="description">Set chip authentication keys</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">ChipAuthentication.<b><a href="../symbols/ChipAuthentication.html#.stripLeadingZeros">stripLeadingZeros</a></b>(value)
								</div>
								<div class="description">Strips leading zeros of a ByteString</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthentication.html#verifyAuthenticationToken">verifyAuthenticationToken</a></b>(the)
								</div>
								<div class="description">Calculate and verify the authentication token over the public key received from
the other side</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>ChipAuthentication</b>(crypto, algo, domparam)
				</div>
				
				<div class="description">
					Create a ChipAuthentication protocol object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>algo</b>
								
							</dt>
								<dd>the algorithm OID</dd>
						
							<dt>
								<span class="light fixedFont">{Key}</span>  <b>domparam</b>
								
							</dt>
								<dd>the key object holding ECC domain parameter</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="calculateAuthenticationToken"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>calculateAuthenticationToken</b>(the)
					
					</div>
					<div class="description">
						Calculate the authentication token over the public key received from
the other side
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>MAC over the authentication data</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the MAC is valid</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="decodeEphemeralPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>decodeEphemeralPublicKey</b>(encodedKey)
					
					</div>
					<div class="description">
						Decodes the ephemeral public key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>encodedKey</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the decoded public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deriveKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>deriveKey</b>(input, counter, the)
					
					</div>
					<div class="description">
						Derive key from input parameter, counter and optional nonce
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>input</b>
									
								</dt>
								<dd>the first part of the hash input</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>counter</b>
									
								</dt>
								<dd>the counter value</dd>
							
								<dt>
									<span class="light fixedFont">{nonce}</span> <b>the</b>
									
								</dt>
								<dd>optional nonce inserted between the input and the counter</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".encodePublicKey"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">ChipAuthentication.</span><b>encodePublicKey</b>(oid, key, withDP)
					
					</div>
					<div class="description">
						Encode an ECC public key in the format defined by the EAC 2.0 specification
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>oid</b>
									
								</dt>
								<dd>the object identifier to encode</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the EC public key</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>withDP</b>
									
								</dt>
								<dd>true to encode domain parameter as well</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="generateEphemeralCAKeyPair"> </a>
					<div class="fixedFont">
					
					
					<b>generateEphemeralCAKeyPair</b>()
					
					</div>
					<div class="description">
						Generate ephemeral key pair
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="getCompressedPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCompressedPublicKey</b>()
					
					</div>
					<div class="description">
						Returns the x coordinate of the public key
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getEphemeralPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getEphemeralPublicKey</b>()
					
					</div>
					<div class="description">
						Returns the ephemeral public key
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performKeyAgreement"> </a>
					<div class="fixedFont">
					
					
					<b>performKeyAgreement</b>(publicKey, nonce)
					
					</div>
					<div class="description">
						Performs the mapping operation with mapping data from the other side
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>publicKey</b>
									
								</dt>
								<dd>the public key in encoded format</dd>
							
								<dt>
									<b>nonce</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setKeyPair"> </a>
					<div class="fixedFont">
					
					
					<b>setKeyPair</b>(prk, puk)
					
					</div>
					<div class="description">
						Set chip authentication keys
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>prk</b>
									
								</dt>
								<dd>the private key</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".stripLeadingZeros"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">ChipAuthentication.</span><b>stripLeadingZeros</b>(value)
					
					</div>
					<div class="description">
						Strips leading zeros of a ByteString
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>the ByteString value</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the stripped ByteString object, may be an empty ByteString</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyAuthenticationToken"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>verifyAuthenticationToken</b>(the)
					
					</div>
					<div class="description">
						Calculate and verify the authentication token over the public key received from
the other side
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>MAC over the authentication data</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the MAC is valid</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - ChipAuthenticationDomainParameterInfo</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class ChipAuthenticationDomainParameterInfo
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>This class encodes and decodes ChipAuthenticationDomainParameterInfo objects.</p>
<p>The class implements the following ASN.1 syntax:</p>
<pre>
	ChipAuthenticationDomainParameterInfo ::= SEQUENCE {
		protocol OBJECT IDENTIFIER(id-CA-DH | id-CA-ECDH),
		domainParameter AlgorithmIdentifier,
		keyId INTEGER OPTIONAL
}
</pre>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_ChipAuthentication.js.html">ChipAuthentication.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class ChipAuthenticationDomainParameterInfo.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/ChipAuthenticationDomainParameterInfo.html#constructor">ChipAuthenticationDomainParameterInfo</a></b>(the)
							</div>
							<div class="description">Create a ChipAuthenticationDomainParameterInfo object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class ChipAuthenticationDomainParameterInfo.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthenticationDomainParameterInfo.html#toTLV">toTLV</a></b>()
								</div>
								<div class="description">Convert object to TLV structure</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>ChipAuthenticationDomainParameterInfo</b>(the)
				</div>
				
				<div class="description">
					Create a ChipAuthenticationDomainParameterInfo object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ASN1}</span>  <b>the</b>
								
							</dt>
								<dd>optional tlv structure to initialize the object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="toTLV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>toTLV</b>()
					
					</div>
					<div class="description">
						Convert object to TLV structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV structure</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - ChipAuthenticationInfo</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class ChipAuthenticationInfo
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>This class encodes and decodes ChipAuthenticationInfo objects.</p>
<p>The class implements the following ASN.1 syntax:</p>
<pre>
	ChipAuthenticationInfo ::= SEQUENCE {
		protocol OBJECT IDENTIFIER(
			id-CA-DH-3DES-CBC-CBC |
			id-CA-DH-AES-CBC-CMAC-128 |
			id-CA-DH-AES-CBC-CMAC-192 |
			id-CA-DH-AES-CBC-CMAC-256 |
			id-CA-ECDH-3DES-CBC-CBC |
			id-CA-ECDH-AES-CBC-CMAC-128 |
			id-CA-ECDH-AES-CBC-CMAC-192 |
			id-CA-ECDH-AES-CBC-CMAC-256),
		version INTEGER, -- MUST be 1 or 2
		keyId INTEGER OPTIONAL
}
</pre>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_ChipAuthentication.js.html">ChipAuthentication.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class ChipAuthenticationInfo.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/ChipAuthenticationInfo.html#constructor">ChipAuthenticationInfo</a></b>(the)
							</div>
							<div class="description">Create a ChipAuthenticationInfo object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class ChipAuthenticationInfo.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthenticationInfo.html#toTLV">toTLV</a></b>()
								</div>
								<div class="description">Convert object to TLV structure</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>ChipAuthenticationInfo</b>(the)
				</div>
				
				<div class="description">
					Create a ChipAuthenticationInfo object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ASN1}</span>  <b>the</b>
								
							</dt>
								<dd>optional tlv structure to initialize the object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="toTLV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>toTLV</b>()
					
					</div>
					<div class="description">
						Convert object to TLV structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV structure</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - ChipAuthenticationPublicKeyInfo</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class ChipAuthenticationPublicKeyInfo
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>This class encodes and decodes ChipAuthenticationPublicKeyInfo objects.</p>
<p>The class implements the following ASN.1 syntax:</p>
<pre>
	ChipAuthenticationPublicKeyInfo ::= SEQUENCE {
		protocol OBJECT IDENTIFIER(id-PK-DH | id-PK-ECDH),
		chipAuthenticationPublicKey SubjectPublicKeyInfo,
		keyId INTEGER OPTIONAL
	}

	SubjectPublicKeyInfo ::= SEQUENCE {
		algorithm  AlgorithmIdentifier,
		subjectPublicKey BIT STRING
	}

	AlgorithmIdentifier ::= SEQUENCE {
		algorithm  OBJECT IDENTIFIER,
		parameters ANY DEFINED BY algorithm OPTIONAL
	}
</pre>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_ChipAuthentication.js.html">ChipAuthentication.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class ChipAuthenticationPublicKeyInfo.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/ChipAuthenticationPublicKeyInfo.html#constructor">ChipAuthenticationPublicKeyInfo</a></b>(the)
							</div>
							<div class="description">Create a ChipAuthenticationPublicKeyInfo object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class ChipAuthenticationPublicKeyInfo.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">ChipAuthenticationPublicKeyInfo.<b><a href="../symbols/ChipAuthenticationPublicKeyInfo.html#.convertUnsignedInteger">convertUnsignedInteger</a></b>(value)
								</div>
								<div class="description">Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">ChipAuthenticationPublicKeyInfo.<b><a href="../symbols/ChipAuthenticationPublicKeyInfo.html#.createECSubjectPublicKeyInfo">createECSubjectPublicKeyInfo</a></b>(publicKey, encodeECDomainParameter)
								</div>
								<div class="description">Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ChipAuthenticationPublicKeyInfo.html#toTLV">toTLV</a></b>()
								</div>
								<div class="description">Convert object to TLV structure</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>ChipAuthenticationPublicKeyInfo</b>(the)
				</div>
				
				<div class="description">
					Create a ChipAuthenticationPublicKeyInfo object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ASN1}</span>  <b>the</b>
								
							</dt>
								<dd>optional tlv structure to initialize the object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name=".convertUnsignedInteger"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">ChipAuthenticationPublicKeyInfo.</span><b>convertUnsignedInteger</b>(value)
					
					</div>
					<div class="description">
						Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.

This prevent interpretation of the integer representation if converted into
a signed ASN1 INTEGER.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>the value to convert</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the converted value</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".createECSubjectPublicKeyInfo"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">ChipAuthenticationPublicKeyInfo.</span><b>createECSubjectPublicKeyInfo</b>(publicKey, encodeECDomainParameter)
					
					</div>
					<div class="description">
						Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.

<p>The structure is defined as:</p>
<pre>
	SubjectPublicKeyInfo  ::=  SEQUENCE  {
		algorithm            AlgorithmIdentifier,
		subjectPublicKey     BIT STRING  }

	AlgorithmIdentifier  ::=  SEQUENCE  {
		algorithm               OBJECT IDENTIFIER,
		parameters              ANY DEFINED BY algorithm OPTIONAL  }

	id-ecPublicKey OBJECT IDENTIFIER ::= {
		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }

	ECParameters ::= CHOICE {
		namedCurve         OBJECT IDENTIFIER,
		implicitCurve      NULL,
		specifiedCurve     SpecifiedECDomain }
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>publicKey</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>encodeECDomainParameter</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the subjectPublicKey TLV structure</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="toTLV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>toTLV</b>()
					
					</div>
					<div class="description">
						Convert object to TLV structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV structure</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - CommandInterpreter</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class CommandInterpreter
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a command interpreter that handles ISO 7816-4 command APDUs
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_CommandInterpreter.js.html">CommandInterpreter.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class CommandInterpreter.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/CommandInterpreter.html#constructor">CommandInterpreter</a></b>(fileSelector)
							</div>
							<div class="description">Create a command interpreter</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class CommandInterpreter.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#changeReferenceData">changeReferenceData</a></b>(the)
								</div>
								<div class="description">Performs a CHANGE REFERENCE DATA command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#dispatch">dispatch</a></b>(apdu, ins)
								</div>
								<div class="description">Dispatch to command handler based on instruction code</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#handleSecMsgCommandAPDU">handleSecMsgCommandAPDU</a></b>(apdu)
								</div>
								<div class="description">Process a secure messaging command APDU, if secure messaging is active.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#handleSecMsgResponseAPDU">handleSecMsgResponseAPDU</a></b>(apdu)
								</div>
								<div class="description">Process a secure messaging response APDU, if secure messaging is active</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#hasSecureChannel">hasSecureChannel</a></b>()
								</div>
								<div class="description">Return status of secure channel</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#manageSecurityEnvironment">manageSecurityEnvironment</a></b>(apdu)
								</div>
								<div class="description">Process a MANAGE SECURITY ENVIRONMENT APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#processAPDU">processAPDU</a></b>(apdu)
								</div>
								<div class="description">Process a command APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#readBinary">readBinary</a></b>(apdu)
								</div>
								<div class="description">Process a READ BINARY APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#readRecord">readRecord</a></b>(apdu)
								</div>
								<div class="description">Process a READ RECORD APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#resetRetryCounter">resetRetryCounter</a></b>(the)
								</div>
								<div class="description">Performs a RESET RETRY COUNTER command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#setSecureChannel">setSecureChannel</a></b>(secureChannel)
								</div>
								<div class="description">Set secure channel</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#updateBinary">updateBinary</a></b>(apdu)
								</div>
								<div class="description">Process an UPDATE BINARY APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/CommandInterpreter.html#verify">verify</a></b>(the)
								</div>
								<div class="description">Performs a VERIFY command</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>CommandInterpreter</b>(fileSelector)
				</div>
				
				<div class="description">
					Create a command interpreter
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/FileSelector.html">FileSelector</a>}</span>  <b>fileSelector</b>
								
							</dt>
								<dd>the file selector object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="changeReferenceData"> </a>
					<div class="fixedFont">
					
					
					<b>changeReferenceData</b>(the)
					
					</div>
					<div class="description">
						Performs a CHANGE REFERENCE DATA command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>the</b>
									
								</dt>
								<dd>apdu</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="dispatch"> </a>
					<div class="fixedFont">
					
					
					<b>dispatch</b>(apdu, ins)
					
					</div>
					<div class="description">
						Dispatch to command handler based on instruction code
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the command and response APDU</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>ins</b>
									
								</dt>
								<dd>instruction code</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="handleSecMsgCommandAPDU"> </a>
					<div class="fixedFont">
					
					
					<b>handleSecMsgCommandAPDU</b>(apdu)
					
					</div>
					<div class="description">
						Process a secure messaging command APDU, if secure messaging is active.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the command APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="handleSecMsgResponseAPDU"> </a>
					<div class="fixedFont">
					
					
					<b>handleSecMsgResponseAPDU</b>(apdu)
					
					</div>
					<div class="description">
						Process a secure messaging response APDU, if secure messaging is active
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the response APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="hasSecureChannel"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasSecureChannel</b>()
					
					</div>
					<div class="description">
						Return status of secure channel
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if secure channel is active</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="manageSecurityEnvironment"> </a>
					<div class="fixedFont">
					
					
					<b>manageSecurityEnvironment</b>(apdu)
					
					</div>
					<div class="description">
						Process a MANAGE SECURITY ENVIRONMENT APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the command and response APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="processAPDU"> </a>
					<div class="fixedFont">
					
					
					<b>processAPDU</b>(apdu)
					
					</div>
					<div class="description">
						Process a command APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the command and response APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="readBinary"> </a>
					<div class="fixedFont">
					
					
					<b>readBinary</b>(apdu)
					
					</div>
					<div class="description">
						Process a READ BINARY APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the command and response APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="readRecord"> </a>
					<div class="fixedFont">
					
					
					<b>readRecord</b>(apdu)
					
					</div>
					<div class="description">
						Process a READ RECORD APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the command and response APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="resetRetryCounter"> </a>
					<div class="fixedFont">
					
					
					<b>resetRetryCounter</b>(the)
					
					</div>
					<div class="description">
						Performs a RESET RETRY COUNTER command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>the</b>
									
								</dt>
								<dd>apdu</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSecureChannel"> </a>
					<div class="fixedFont">
					
					
					<b>setSecureChannel</b>(secureChannel)
					
					</div>
					<div class="description">
						Set secure channel
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{SecureChannel}</span> <b>secureChannel</b>
									
								</dt>
								<dd>the secure channel to used for unwrapping and wrapping APDUs</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="updateBinary"> </a>
					<div class="fixedFont">
					
					
					<b>updateBinary</b>(apdu)
					
					</div>
					<div class="description">
						Process an UPDATE BINARY APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the command and response APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="verify"> </a>
					<div class="fixedFont">
					
					
					<b>verify</b>(the)
					
					</div>
					<div class="description">
						Performs a VERIFY command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>the</b>
									
								</dt>
								<dd>apdu</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - DF</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class DF
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing dedicated files
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_DF.js.html">DF.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class DF.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/DF.html#constructor">DF</a></b>(the)
							</div>
							<div class="description">Creates a Dedicated File (DF)

<p>The constructor supports as argument a list of child elements</p></div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class DF.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#add">add</a></b>(node)
								</div>
								<div class="description">Adds a new child node to the DF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#addMeta">addMeta</a></b>(name, value)
								</div>
								<div class="description">Add meta information to DF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#addObject">addObject</a></b>(o)
								</div>
								<div class="description">Add object to DF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#dump">dump</a></b>(indent)
								</div>
								<div class="description">Dump the file system system recursively starting this this node</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#isDF">isDF</a></b>()
								</div>
								<div class="description">Returns true as this is a DF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#selectByAID">selectByAID</a></b>(the)
								</div>
								<div class="description">Select a DF contained in the DF using the application identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#selectByFID">selectByFID</a></b>(the)
								</div>
								<div class="description">Select a file contained in the DF using the file identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DF.html#selectBySFI">selectBySFI</a></b>(the)
								</div>
								<div class="description">Select a file contained in the DF using the short file identifier</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>DF</b>(the)
				</div>
				
				<div class="description">
					Creates a Dedicated File (DF)

<p>The constructor supports as argument a list of child elements</p>
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/FCP.html">FCP</a>}</span>  <b>the</b>
								
							</dt>
								<dd>file control parameter</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="add"> </a>
					<div class="fixedFont">
					
					
					<b>add</b>(node)
					
					</div>
					<div class="description">
						Adds a new child node to the DF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/FSNode.html">FSNode</a>}</span> <b>node</b>
									
								</dt>
								<dd>the node to add</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addMeta"> </a>
					<div class="fixedFont">
					
					
					<b>addMeta</b>(name, value)
					
					</div>
					<div class="description">
						Add meta information to DF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>name of meta information</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>value</b>
									
								</dt>
								<dd>value of meta information</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addObject"> </a>
					<div class="fixedFont">
					
					
					<b>addObject</b>(o)
					
					</div>
					<div class="description">
						Add object to DF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>o</b>
									
								</dt>
								<dd>object to be added. Must have property type and id.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="dump"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>dump</b>(indent)
					
					</div>
					<div class="description">
						Dump the file system system recursively starting this this node
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>indent</b>
									
								</dt>
								<dd>the string to prefix the output with</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the dump</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isDF"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isDF</b>()
					
					</div>
					<div class="description">
						Returns true as this is a DF
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true this is a DF</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="selectByAID"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/FSNode.html">FSNode</a>}</span>
					<b>selectByAID</b>(the)
					
					</div>
					<div class="description">
						Select a DF contained in the DF using the application identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>application identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the found node or undefined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="selectByFID"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/FSNode.html">FSNode</a>}</span>
					<b>selectByFID</b>(the)
					
					</div>
					<div class="description">
						Select a file contained in the DF using the file identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>file identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the found node or undefined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="selectBySFI"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/FSNode.html">FSNode</a>}</span>
					<b>selectBySFI</b>(the)
					
					</div>
					<div class="description">
						Select a file contained in the DF using the short file identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>the</b>
									
								</dt>
								<dd>short file identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the found node or undefined</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - DKEK</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class DKEK
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_DKEK.js.html">DKEK.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class DKEK.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/DKEK.html#constructor">DKEK</a></b>(crypto)
							</div>
							<div class="description">Class supporting DKEK functions outside the SmartCard-HSM</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class DKEK.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#clear">clear</a></b>()
								</div>
								<div class="description">Zeroize DKEK</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#convertCRT2PEM">convertCRT2PEM</a></b>(pri, pub)
								</div>
								<div class="description">Wrap RSA or ECC key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">DKEK.<b><a href="../symbols/DKEK.html#.decryptKeyShare">decryptKeyShare</a></b>(keyshare, password)
								</div>
								<div class="description">Decrypt a DKEK share</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">DKEK.<b><a href="../symbols/DKEK.html#.deriveDKEKShareKey">deriveDKEKShareKey</a></b>(password, password)
								</div>
								<div class="description">Derive DKEK share encryption key from password</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#encodeAESKey">encodeAESKey</a></b>(key)
								</div>
								<div class="description">Wrap AES key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#encodeKey">encodeKey</a></b>(pri, pub)
								</div>
								<div class="description">Wrap RSA or ECC key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">DKEK.<b><a href="../symbols/DKEK.html#.encryptKeyShare">encryptKeyShare</a></b>(keyshare, password)
								</div>
								<div class="description">Encrypt a DKEK share</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#getKCV">getKCV</a></b>()
								</div>
								<div class="description">Return the Key Check Value (KCV) of the internal DKEK</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#getKENC">getKENC</a></b>()
								</div>
								<div class="description">Derive the encryption key from the DKEK</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#getKMAC">getKMAC</a></b>()
								</div>
								<div class="description">Derive the message authentication key from the DKEK</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DKEK.html#importDKEKShare">importDKEKShare</a></b>(share)
								</div>
								<div class="description">Import a DKEK share</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>DKEK</b>(crypto)
				</div>
				
				<div class="description">
					Class supporting DKEK functions outside the SmartCard-HSM
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="clear"> </a>
					<div class="fixedFont">
					
					
					<b>clear</b>()
					
					</div>
					<div class="description">
						Zeroize DKEK
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="convertCRT2PEM"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>convertCRT2PEM</b>(pri, pub)
					
					</div>
					<div class="description">
						Wrap RSA or ECC key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>pri</b>
									
								</dt>
								<dd>the private key in CRT format</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>pub</b>
									
								</dt>
								<dd>the public key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key in private exponent / modulus format</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".decryptKeyShare"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">DKEK.</span><b>decryptKeyShare</b>(keyshare, password)
					
					</div>
					<div class="description">
						Decrypt a DKEK share
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyshare</b>
									
								</dt>
								<dd>the encrypted key share as read from the .pbe file</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>password</b>
									
								</dt>
								<dd>the password</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>plain DKEK value</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".deriveDKEKShareKey"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">DKEK.</span><b>deriveDKEKShareKey</b>(password, password)
					
					</div>
					<div class="description">
						Derive DKEK share encryption key from password
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>password</b>
									
								</dt>
								<dd>the password</dd>
							
								<dt>
									<b>password</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the derived key (32 Byte) concatenated with the IV (16 Byte)</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="encodeAESKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>encodeAESKey</b>(key)
					
					</div>
					<div class="description">
						Wrap AES key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the secret key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the secret key wrapped with the DKEK</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="encodeKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>encodeKey</b>(pri, pub)
					
					</div>
					<div class="description">
						Wrap RSA or ECC key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>pri</b>
									
								</dt>
								<dd>the private key</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>pub</b>
									
								</dt>
								<dd>the public key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key wrapped with the DKEK</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".encryptKeyShare"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">DKEK.</span><b>encryptKeyShare</b>(keyshare, password)
					
					</div>
					<div class="description">
						Encrypt a DKEK share
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyshare</b>
									
								</dt>
								<dd>the key share</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>password</b>
									
								</dt>
								<dd>the password</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>Encrypted DKEK share value</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getKCV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getKCV</b>()
					
					</div>
					<div class="description">
						Return the Key Check Value (KCV) of the internal DKEK
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the KCV</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getKENC"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getKENC</b>()
					
					</div>
					<div class="description">
						Derive the encryption key from the DKEK
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encryption key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getKMAC"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getKMAC</b>()
					
					</div>
					<div class="description">
						Derive the message authentication key from the DKEK
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the message authentication key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="importDKEKShare"> </a>
					<div class="fixedFont">
					
					
					<b>importDKEKShare</b>(share)
					
					</div>
					<div class="description">
						Import a DKEK share
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>share</b>
									
								</dt>
								<dd>a 32 byte share</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - DNEncoder</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class DNEncoder
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/x509_DNEncoder.js.html">DNEncoder.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class DNEncoder.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/DNEncoder.html#constructor">DNEncoder</a></b>(mask)
							</div>
							<div class="description">An instance of this class allow generating a Distinguished Name from components
defined in the mask given as constructor.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class DNEncoder.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DNEncoder.html#encode">encode</a></b>()
								</div>
								<div class="description">Encode DN based on mask and previously set objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DNEncoder.html#setDN">setDN</a></b>(name, dn)
								</div>
								<div class="description">Register a DN under the given name.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DNEncoder.html#setMap">setMap</a></b>(name, map)
								</div>
								<div class="description">Register an object and it properties the given name.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DNEncoder.html#validate">validate</a></b>()
								</div>
								<div class="description">Validate DN mask against previously set reference objects

DN objects can be set with setDN(name, {}).</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>DNEncoder</b>(mask)
				</div>
				
				<div class="description">
					An instance of this class allow generating a Distinguished Name from components
defined in the mask given as constructor. The mask may contain placeholders in the
form ${major.minor} that are resolved against other DNs and objects set with setDN() or
setMap().
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>mask</b>
								
							</dt>
								<dd>the mask for generating the DN</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="encode"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>encode</b>()
					
					</div>
					<div class="description">
						Encode DN based on mask and previously set objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>DN in the format as returned by PKIXCommon.parseDN()</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setDN"> </a>
					<div class="fixedFont">
					
					
					<b>setDN</b>(name, dn)
					
					</div>
					<div class="description">
						Register a DN under the given name. Elements in the DN can be referenced by ${major.minor}
with major set to the name given as argument and minor being the component in the given DN.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the name for the major key</dd>
							
								<dt>
									<span class="light fixedFont">{String/Object}</span> <b>dn</b>
									
								</dt>
								<dd>the Distinguished Name given as String or in the format returned by PKIXCommon.parseDN.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setMap"> </a>
					<div class="fixedFont">
					
					
					<b>setMap</b>(name, map)
					
					</div>
					<div class="description">
						Register an object and it properties the given name. Elements in the object can be referenced by ${major.minor}
with major set to the name given as argument and minor being the member of the given object.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the name for the major key</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>map</b>
									
								</dt>
								<dd>the map object</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="validate"> </a>
					<div class="fixedFont">
					
					
					<b>validate</b>()
					
					</div>
					<div class="description">
						Validate DN mask against previously set reference objects

DN objects can be set with setDN(name, {}). The minor key is validated against the list of
valid RDN as defined in PKIXCommon.validRDN.

Other objects can be set with setMap(), but only the key names in the map are relevant. If the
object contains the property "any", then any minor keys are acceptable.

The method will throw an exception if a key is invalid.
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - DataUnitAPDU</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class DataUnitAPDU
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Adapter class to decode APDUs for data unit handling
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_DataUnitAPDU.js.html">DataUnitAPDU.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class DataUnitAPDU.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/DataUnitAPDU.html#constructor">DataUnitAPDU</a></b>(apdu)
							</div>
							<div class="description">Create an adapter to decode a APDU for data unit handling</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class DataUnitAPDU.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DataUnitAPDU.html#getCData">getCData</a></b>()
								</div>
								<div class="description">Get the command data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DataUnitAPDU.html#getFID">getFID</a></b>()
								</div>
								<div class="description">Gets the file identifier, if one defined</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DataUnitAPDU.html#getOffset">getOffset</a></b>()
								</div>
								<div class="description">Gets the offset</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DataUnitAPDU.html#getSFI">getSFI</a></b>()
								</div>
								<div class="description">Gets the short file identifier, if one defined</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/DataUnitAPDU.html#hasCData">hasCData</a></b>()
								</div>
								<div class="description">Returns true if command data in contained in the APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">DataUnitAPDU.<b><a href="../symbols/DataUnitAPDU.html#.test">test</a></b>()
								</div>
								<div class="description">Simple Unit Test</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>DataUnitAPDU</b>(apdu)
				</div>
				
				<div class="description">
					Create an adapter to decode a APDU for data unit handling
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span>  <b>apdu</b>
								
							</dt>
								<dd>the APDU to decode</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="getCData"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCData</b>()
					
					</div>
					<div class="description">
						Get the command data
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the command data</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getFID"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getFID</b>()
					
					</div>
					<div class="description">
						Gets the file identifier, if one defined
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the file identifier or null if not defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getOffset"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getOffset</b>()
					
					</div>
					<div class="description">
						Gets the offset
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the offset to read from or write to</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSFI"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getSFI</b>()
					
					</div>
					<div class="description">
						Gets the short file identifier, if one defined
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the short file identifier in the range 1 to 30 or -1 if not defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasCData"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasCData</b>()
					
					</div>
					<div class="description">
						Returns true if command data in contained in the APDU
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if command data contained</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".test"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">DataUnitAPDU.</span><b>test</b>()
					
					</div>
					<div class="description">
						Simple Unit Test
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - EAC20</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class EAC20
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing support for Extended Access Control V2
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_EAC20.js.html">EAC20.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class EAC20.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/EAC20.html#constructor">EAC20</a></b>(crypto, card)
							</div>
							<div class="description">Create a protocol object for EAC</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class EAC20.">
					<caption>Field Summary</caption>
					<thead>
						<tr>
							<th scope="col">Field Attributes</th>
							<th scope="col">Field Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								EAC20.<b><a href="../symbols/EAC20.html#.ID_CAN">ID_CAN</a></b>
								</div>
								<div class="description">PACE PWD is the CAN</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								EAC20.<b><a href="../symbols/EAC20.html#.ID_MRZ">ID_MRZ</a></b>
								</div>
								<div class="description">PACE PWD is the hashed MRZ</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								EAC20.<b><a href="../symbols/EAC20.html#.ID_PIN">ID_PIN</a></b>
								</div>
								<div class="description">PACE PWD is the PIN</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								EAC20.<b><a href="../symbols/EAC20.html#.ID_PUK">ID_PUK</a></b>
								</div>
								<div class="description">PACE PWD is the PUK</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class EAC20.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#calculateBACKey">calculateBACKey</a></b>(mrz, keyno)
								</div>
								<div class="description">Calculate the Basic Access Control (BAC) key from the MRZ</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">EAC20.<b><a href="../symbols/EAC20.html#.decodeDocumentNumber">decodeDocumentNumber</a></b>(mrz)
								</div>
								<div class="description">Decode document number from 2 or 3 line MRZ

<p>This method supports a document number in a three line MRZ longer than 10 digits.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#getCADomainParameterInfos">getCADomainParameterInfos</a></b>()
								</div>
								<div class="description">Return the list of ChipAuthenticationDomainParameterInfo objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#getCAInfos">getCAInfos</a></b>()
								</div>
								<div class="description">Return the list of ChipAuthenticationInfo objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#getCAKeyId">getCAKeyId</a></b>(privileged)
								</div>
								<div class="description">Return the key id of the chip authentication key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#getPACEDomainParameterInfos">getPACEDomainParameterInfos</a></b>()
								</div>
								<div class="description">Return the list of PACEDomainParameterInfo objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#getPACEInfos">getPACEInfos</a></b>()
								</div>
								<div class="description">Return the list of PACEInfo objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#getRIKeyId">getRIKeyId</a></b>(authOnly)
								</div>
								<div class="description">Return the key id of the restricted identification key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#getTrustAnchorCAR">getTrustAnchorCAR</a></b>(previous,)
								</div>
								<div class="description">Return the trust anchor's CAR as indicated by the card in the PACE protocol</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#hashMRZ">hashMRZ</a></b>(mrz)
								</div>
								<div class="description">Calculate the hash over document number, date of birth and date of expiration from 2 or 3 line MRZ

<pre>
2 line MRZ of Silver Data Set
  P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<
  L898902C<3UTO6908061F9406236ZE184226B<<<<<14
  '-DocNo--'   '-DoB-' '-DoE-'

3 line MRZ of Silver Data Set
  I<UTOL898902C<3<<<<<<<<<<<<<<<
       '-DocNo--'
  6908061F9406236UTO<<<<<<<<<<<1
  '-DoB-' '-DoE-'
  ERIKSON<<ANNA<MARIA<<<<<<<<<<<
</pre></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performBAC">performBAC</a></b>(kenc, kmac)
								</div>
								<div class="description">Perform BAC using the provided Kenc and Kmac values.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performBACWithMRZ">performBACWithMRZ</a></b>(kenc, kmac)
								</div>
								<div class="description">Perform BAC using the provided Kenc and Kmac values.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performChipAuthentication">performChipAuthentication</a></b>(keyid)
								</div>
								<div class="description">Perform chip authentication and establish a secure channel</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performChipAuthenticationV1">performChipAuthenticationV1</a></b>(keyid)
								</div>
								<div class="description">Perform chip authentication in version 1 and establish a secure channel</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performChipAuthenticationV2">performChipAuthenticationV2</a></b>()
								</div>
								<div class="description">Perform chip authentication in version 2 and establish a secure channel</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performPACE">performPACE</a></b>(parameterId, pwdid, pwd, chat, certExt)
								</div>
								<div class="description">Perform PACE using the indicated parameter set, the identified password, the password value and
an optional cardholder authentication template.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performRestrictedIdentification">performRestrictedIdentification</a></b>(keyId, sectorPublicKey, sectorPublicKeyIndex)
								</div>
								<div class="description">Perform restricted identification</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performTerminalAuthentication">performTerminalAuthentication</a></b>(termkey, auxdata, crypto)
								</div>
								<div class="description">Perform terminal authentication using a given terminal key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performTerminalAuthenticationFinal">performTerminalAuthenticationFinal</a></b>(signature)
								</div>
								<div class="description">Complete terminal authentication by submitting the signature to the card</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#performTerminalAuthenticationSetup">performTerminalAuthenticationSetup</a></b>(auxdata)
								</div>
								<div class="description">Prepare terminal authentication by setting the required security environment</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#prepareChipAuthentication">prepareChipAuthentication</a></b>(keyId)
								</div>
								<div class="description">Prepare chip authentication by generating the ephemeral key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#processSecurityInfos">processSecurityInfos</a></b>(si, fromCardSecurity)
								</div>
								<div class="description">Process a list of security infos from EF.CardInfo, EF.CardSecurity or EF.ChipSecurity</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readCardAccess">readCardAccess</a></b>()
								</div>
								<div class="description">Read EF.CardAccess and process security infos</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readCardSecurity">readCardSecurity</a></b>()
								</div>
								<div class="description">Read EF.CardSecurity and process security infos</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readChipSecurity">readChipSecurity</a></b>()
								</div>
								<div class="description">Read EF.ChipSecurity and process security infos</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readCVCA">readCVCA</a></b>()
								</div>
								<div class="description">Read EF.CVCA and process contained CARs</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readDG14">readDG14</a></b>()
								</div>
								<div class="description">Read EF.DG14 and process security infos</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readEFwithFID">readEFwithFID</a></b>(fid)
								</div>
								<div class="description">Select EF using FID and read elementary file</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readEFwithSFI">readEFwithSFI</a></b>(short)
								</div>
								<div class="description">Select and read EF using SFI</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#readTLVEFwithSFI">readTLVEFwithSFI</a></b>(short)
								</div>
								<div class="description">Select and read a TLV encoded EF using SFI</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#select_eID">select_eID</a></b>()
								</div>
								<div class="description">Select eID Application</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#select_eSign">select_eSign</a></b>()
								</div>
								<div class="description">Select eSign Application</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#selectADF">selectADF</a></b>(aid)
								</div>
								<div class="description">Select application DF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#selectLDS">selectLDS</a></b>()
								</div>
								<div class="description">Select ePass LDS Application</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#setIDPICC">setIDPICC</a></b>(id, kmac)
								</div>
								<div class="description">Set the ID_PICC used for terminal authentication in EAC 1.11</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#updateEFwithFID">updateEFwithFID</a></b>(fid, data)
								</div>
								<div class="description">Select EF using FID and update content</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#updateEFwithSFI">updateEFwithSFI</a></b>(short, data)
								</div>
								<div class="description">Select EF using SFI and update content</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#verifyAuxiliaryData">verifyAuxiliaryData</a></b>(oid)
								</div>
								<div class="description">Verify authenticated auxiliary data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC20.html#verifyCertificateChain">verifyCertificateChain</a></b>(cvcchain)
								</div>
								<div class="description">Submit a list of certificates to the card for verification</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>EAC20</b>(crypto, card)
				</div>
				
				<div class="description">
					Create a protocol object for EAC
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider</dd>
						
							<dt>
								<span class="light fixedFont">{Card}</span>  <b>card</b>
								
							</dt>
								<dd>the card object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			
				<div class="sectionTitle">
					Field Detail
				</div>
				
					<a name=".ID_CAN"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">EAC20.</span><b>ID_CAN</b>
					
					</div>
					<div class="description">
						PACE PWD is the CAN
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".ID_MRZ"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">EAC20.</span><b>ID_MRZ</b>
					
					</div>
					<div class="description">
						PACE PWD is the hashed MRZ
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".ID_PIN"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">EAC20.</span><b>ID_PIN</b>
					
					</div>
					<div class="description">
						PACE PWD is the PIN
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".ID_PUK"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">EAC20.</span><b>ID_PUK</b>
					
					</div>
					<div class="description">
						PACE PWD is the PUK
						
						
					</div>
					
					

						
						
						
						

					
				
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="calculateBACKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>calculateBACKey</b>(mrz, keyno)
					
					</div>
					<div class="description">
						Calculate the Basic Access Control (BAC) key from the MRZ
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>mrz</b>
									
								</dt>
								<dd>2 line or 3 line machine readable zone</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyno</b>
									
								</dt>
								<dd>Number of key to calculate (1 for Kenc and 2 for Kmac)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".decodeDocumentNumber"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">EAC20.</span><b>decodeDocumentNumber</b>(mrz)
					
					</div>
					<div class="description">
						Decode document number from 2 or 3 line MRZ

<p>This method supports a document number in a three line MRZ longer than 10 digits.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>mrz</b>
									
								</dt>
								<dd>the concatenation of the MRZ lines</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the document number</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCADomainParameterInfos"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a>[]}</span>
					<b>getCADomainParameterInfos</b>()
					
					</div>
					<div class="description">
						Return the list of ChipAuthenticationDomainParameterInfo objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of ChipAuthenticationDomainParameterInfo objects read from the card, indexed by the keyId</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCAInfos"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a>[]}</span>
					<b>getCAInfos</b>()
					
					</div>
					<div class="description">
						Return the list of ChipAuthenticationInfo objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of ChipAuthenticationInfo objects read from the card, indexed by the keyId</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCAKeyId"> </a>
					<div class="fixedFont">
					
					
					<b>getCAKeyId</b>(privileged)
					
					</div>
					<div class="description">
						Return the key id of the chip authentication key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>privileged</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key id</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPACEDomainParameterInfos"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a>[]}</span>
					<b>getPACEDomainParameterInfos</b>()
					
					</div>
					<div class="description">
						Return the list of PACEDomainParameterInfo objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of PACEDomainParameterInfo objects read from the card, indexed by the parameterId</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPACEInfos"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PACEInfo.html">PACEInfo</a>[]}</span>
					<b>getPACEInfos</b>()
					
					</div>
					<div class="description">
						Return the list of PACEInfo objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of PACEInfo objects read from the card, indexed by the parameterId</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRIKeyId"> </a>
					<div class="fixedFont">
					
					
					<b>getRIKeyId</b>(authOnly)
					
					</div>
					<div class="description">
						Return the key id of the restricted identification key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>authOnly</b>
									
								</dt>
								<dd>return the RI key available after authentication only (to calculate the pseudonym)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key id</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getTrustAnchorCAR"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span>
					<b>getTrustAnchorCAR</b>(previous,)
					
					</div>
					<div class="description">
						Return the trust anchor's CAR as indicated by the card in the PACE protocol
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>previous,</b>
									
								</dt>
								<dd>true to return the previous CAR, if any</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CertificationAuthorityReference (CAR)</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hashMRZ"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>hashMRZ</b>(mrz)
					
					</div>
					<div class="description">
						Calculate the hash over document number, date of birth and date of expiration from 2 or 3 line MRZ

<pre>
2 line MRZ of Silver Data Set
  P<UTOERIKSSON<<ANNA<MARIA<<<<<<<<<<<<<<<<<<<
  L898902C<3UTO6908061F9406236ZE184226B<<<<<14
  '-DocNo--'   '-DoB-' '-DoE-'

3 line MRZ of Silver Data Set
  I<UTOL898902C<3<<<<<<<<<<<<<<<
       '-DocNo--'
  6908061F9406236UTO<<<<<<<<<<<1
  '-DoB-' '-DoE-'
  ERIKSON<<ANNA<MARIA<<<<<<<<<<<
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>mrz</b>
									
								</dt>
								<dd>2 line or 3 line machine readable zone</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the SHA-1 hash over the concatenation of document number, date of birth and date of expiration</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performBAC"> </a>
					<div class="fixedFont">
					
					
					<b>performBAC</b>(kenc, kmac)
					
					</div>
					<div class="description">
						Perform BAC using the provided Kenc and Kmac values.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>kenc</b>
									
								</dt>
								<dd>the key Kenc</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>kmac</b>
									
								</dt>
								<dd>the key Kmac</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="performBACWithMRZ"> </a>
					<div class="fixedFont">
					
					
					<b>performBACWithMRZ</b>(kenc, kmac)
					
					</div>
					<div class="description">
						Perform BAC using the provided Kenc and Kmac values.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>kenc</b>
									
								</dt>
								<dd>the key Kenc</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>kmac</b>
									
								</dt>
								<dd>the key Kmac</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="performChipAuthentication"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>performChipAuthentication</b>(keyid)
					
					</div>
					<div class="description">
						Perform chip authentication and establish a secure channel
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyid</b>
									
								</dt>
								<dd>the key identifier (only required for ChipAuthentication in version 1)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if chip authentication was successfull</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performChipAuthenticationV1"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>performChipAuthenticationV1</b>(keyid)
					
					</div>
					<div class="description">
						Perform chip authentication in version 1 and establish a secure channel
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>keyid</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if chip authentication was successfull</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performChipAuthenticationV2"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>performChipAuthenticationV2</b>()
					
					</div>
					<div class="description">
						Perform chip authentication in version 2 and establish a secure channel
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if chip authentication was successfull</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performPACE"> </a>
					<div class="fixedFont">
					
					
					<b>performPACE</b>(parameterId, pwdid, pwd, chat, certExt)
					
					</div>
					<div class="description">
						Perform PACE using the indicated parameter set, the identified password, the password value and
an optional cardholder authentication template.

<p>This method supports PACE version 1 and 2. For version 2, parameterId with a value between 0 and 31 denotes
a standardized domain parameter as defined in TR-03110 2.04 or later.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>parameterId</b>
									
								</dt>
								<dd>the identifier for the PACEInfo and PACEDomainParameterInfo from EF.CardInfo. Use 0 for
                            the default.</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>pwdid</b>
									
								</dt>
								<dd>one of EAC20.ID_MRZ, EAC20.ID_CAN, EAC20.ID_PIN, EAC20.ID_PUK</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>pwd</b>
									
								</dt>
								<dd>the PACE password or PACE key</dd>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>chat</b>
									
								</dt>
								<dd>the CHAT data object with tag 7F4C or null</dd>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>certExt</b>
									
								</dt>
								<dd>the certificate extensions data object with tag 65 or null</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="performRestrictedIdentification"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>performRestrictedIdentification</b>(keyId, sectorPublicKey, sectorPublicKeyIndex)
					
					</div>
					<div class="description">
						Perform restricted identification
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyId</b>
									
								</dt>
								<dd>restricted identification key identifier</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>sectorPublicKey</b>
									
								</dt>
								<dd>the sector public key data</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>sectorPublicKeyIndex</b>
									
								</dt>
								<dd>optional argument that allows to select a specific sector public key in the terminal certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the sector specific identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performTerminalAuthentication"> </a>
					<div class="fixedFont">
					
					
					<b>performTerminalAuthentication</b>(termkey, auxdata, crypto)
					
					</div>
					<div class="description">
						Perform terminal authentication using a given terminal key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>termkey</b>
									
								</dt>
								<dd>the terminal private key</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>auxdata</b>
									
								</dt>
								<dd>auxiliary data (tag '67') to be included in terminal authentication</dd>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>optional alternative crypto provider (e.g. for key in SmartCard-HSM)</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="performTerminalAuthenticationFinal"> </a>
					<div class="fixedFont">
					
					
					<b>performTerminalAuthenticationFinal</b>(signature)
					
					</div>
					<div class="description">
						Complete terminal authentication by submitting the signature to the card
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>signature</b>
									
								</dt>
								<dd>the signature as concatenation of r and s</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="performTerminalAuthenticationSetup"> </a>
					<div class="fixedFont">
					
					
					<b>performTerminalAuthenticationSetup</b>(auxdata)
					
					</div>
					<div class="description">
						Prepare terminal authentication by setting the required security environment
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>auxdata</b>
									
								</dt>
								<dd>auxiliary data (tag '67') to be included in terminal authentication</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="prepareChipAuthentication"> </a>
					<div class="fixedFont">
					
					
					<b>prepareChipAuthentication</b>(keyId)
					
					</div>
					<div class="description">
						Prepare chip authentication by generating the ephemeral key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyId</b>
									
								</dt>
								<dd>the key identifier to be used for chip authentication</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="processSecurityInfos"> </a>
					<div class="fixedFont">
					
					
					<b>processSecurityInfos</b>(si, fromCardSecurity)
					
					</div>
					<div class="description">
						Process a list of security infos from EF.CardInfo, EF.CardSecurity or EF.ChipSecurity
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>si</b>
									
								</dt>
								<dd>the security info ASN Sequence</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>fromCardSecurity</b>
									
								</dt>
								<dd>true if security infos are taken from EF.CardSecurity, EF.ChipSecurity or EF.DG14</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="readCardAccess"> </a>
					<div class="fixedFont">
					
					
					<b>readCardAccess</b>()
					
					</div>
					<div class="description">
						Read EF.CardAccess and process security infos
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="readCardSecurity"> </a>
					<div class="fixedFont">
					
					
					<b>readCardSecurity</b>()
					
					</div>
					<div class="description">
						Read EF.CardSecurity and process security infos
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="readChipSecurity"> </a>
					<div class="fixedFont">
					
					
					<b>readChipSecurity</b>()
					
					</div>
					<div class="description">
						Read EF.ChipSecurity and process security infos
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="readCVCA"> </a>
					<div class="fixedFont">
					
					
					<b>readCVCA</b>()
					
					</div>
					<div class="description">
						Read EF.CVCA and process contained CARs
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="readDG14"> </a>
					<div class="fixedFont">
					
					
					<b>readDG14</b>()
					
					</div>
					<div class="description">
						Read EF.DG14 and process security infos
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="readEFwithFID"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>readEFwithFID</b>(fid)
					
					</div>
					<div class="description">
						Select EF using FID and read elementary file
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>2 byte file identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the content of the EF</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="readEFwithSFI"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>readEFwithSFI</b>(short)
					
					</div>
					<div class="description">
						Select and read EF using SFI
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>short</b>
									
								</dt>
								<dd>file identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the content of the EF</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="readTLVEFwithSFI"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>readTLVEFwithSFI</b>(short)
					
					</div>
					<div class="description">
						Select and read a TLV encoded EF using SFI
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>short</b>
									
								</dt>
								<dd>file identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV content of the EF</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="select_eID"> </a>
					<div class="fixedFont">
					
					
					<b>select_eID</b>()
					
					</div>
					<div class="description">
						Select eID Application
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="select_eSign"> </a>
					<div class="fixedFont">
					
					
					<b>select_eSign</b>()
					
					</div>
					<div class="description">
						Select eSign Application
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="selectADF"> </a>
					<div class="fixedFont">
					
					
					<b>selectADF</b>(aid)
					
					</div>
					<div class="description">
						Select application DF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>aid</b>
									
								</dt>
								<dd>the application identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="selectLDS"> </a>
					<div class="fixedFont">
					
					
					<b>selectLDS</b>()
					
					</div>
					<div class="description">
						Select ePass LDS Application
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="setIDPICC"> </a>
					<div class="fixedFont">
					
					
					<b>setIDPICC</b>(id, kmac)
					
					</div>
					<div class="description">
						Set the ID_PICC used for terminal authentication in EAC 1.11
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>id</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>kmac</b>
									
								</dt>
								<dd>the key Kmac</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="updateEFwithFID"> </a>
					<div class="fixedFont">
					
					
					<b>updateEFwithFID</b>(fid, data)
					
					</div>
					<div class="description">
						Select EF using FID and update content
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>2 byte file identifier</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>data to be written</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="updateEFwithSFI"> </a>
					<div class="fixedFont">
					
					
					<b>updateEFwithSFI</b>(short, data)
					
					</div>
					<div class="description">
						Select EF using SFI and update content
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>short</b>
									
								</dt>
								<dd>file identifier</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>data to be written</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="verifyAuxiliaryData"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>verifyAuxiliaryData</b>(oid)
					
					</div>
					<div class="description">
						Verify authenticated auxiliary data
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>the object identifier for the auxiliary data provided during terminal authentication</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true, if auxiliary data was verified</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyCertificateChain"> </a>
					<div class="fixedFont">
					
					
					<b>verifyCertificateChain</b>(cvcchain)
					
					</div>
					<div class="description">
						Submit a list of certificates to the card for verification
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>[]}</span> <b>cvcchain</b>
									
								</dt>
								<dd>the list of certificates, starting with link certificates, DVCA certificate and terminal certificate.</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - EAC2CVCertificateGenerator</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class EAC2CVCertificateGenerator
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a generator for CV certificates according to EAC 1.1 and EAC 2.0 specifications.
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_EAC2CVCertificateGenerator.js.html">EAC2CVCertificateGenerator.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class EAC2CVCertificateGenerator.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/EAC2CVCertificateGenerator.html#constructor">EAC2CVCertificateGenerator</a></b>(crypto)
							</div>
							<div class="description">Define a generator object for CV certificates</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class EAC2CVCertificateGenerator.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">EAC2CVCertificateGenerator.<b><a href="../symbols/EAC2CVCertificateGenerator.html#.decodeUncompressedECPoint">decodeUncompressedECPoint</a></b>(uncompressedPoint)
								</div>
								<div class="description">Decode x/y coordinates from uncompressed format</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">EAC2CVCertificateGenerator.<b><a href="../symbols/EAC2CVCertificateGenerator.html#.dtos">dtos</a></b>(d)
								</div>
								<div class="description">Convert date to string with format YYMMDD.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">EAC2CVCertificateGenerator.<b><a href="../symbols/EAC2CVCertificateGenerator.html#.encodeUncompressedECPoint">encodeUncompressedECPoint</a></b>(x, y)
								</div>
								<div class="description">Convert x/y coordinates to uncompressed format</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#generateCVCertificate">generateCVCertificate</a></b>(signingKey, taOID)
								</div>
								<div class="description">Generate a certificate based on the parameter set using the setter methods.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setCAR">setCAR</a></b>(CAR, CAR, CAR)
								</div>
								<div class="description">Set the certification authority reference</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setChatAuthorizationLevel">setChatAuthorizationLevel</a></b>(authLevel)
								</div>
								<div class="description">Set the authorization level of the authorization template for the generated certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setChatOID">setChatOID</a></b>(oid)
								</div>
								<div class="description">Set the object identifier of the authorization template for the generated certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setCHR">setCHR</a></b>(CHR, CHR, CHR)
								</div>
								<div class="description">Set the certificate holder reference</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setEffectiveDate">setEffectiveDate</a></b>(effectiveDate, effectiveDate)
								</div>
								<div class="description">Set the effective date</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setExpiryDate">setExpiryDate</a></b>(expiryDate, expiryDate)
								</div>
								<div class="description">Set the expiry date</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setExtensions">setExtensions</a></b>(extensions)
								</div>
								<div class="description">Set some additional extensions</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setIncludeDomainParameters">setIncludeDomainParameters</a></b>(value)
								</div>
								<div class="description">Set whether to include domain parameters in the certificate or not</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setProfileIdentifier">setProfileIdentifier</a></b>(profileID)
								</div>
								<div class="description">Set the profile identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setPublicKey">setPublicKey</a></b>(publicKey)
								</div>
								<div class="description">Set the public key to be included in the certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#setTAAlgorithmIdentifier">setTAAlgorithmIdentifier</a></b>(oid)
								</div>
								<div class="description">Set the algorithm identifier for terminal authentication</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVCertificateGenerator.html#stripLeadingZeros">stripLeadingZeros</a></b>(value)
								</div>
								<div class="description">Strips leading zeros of a ByteString</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>EAC2CVCertificateGenerator</b>(crypto)
				</div>
				
				<div class="description">
					Define a generator object for CV certificates
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider to be used</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name=".decodeUncompressedECPoint"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">EAC2CVCertificateGenerator.</span><b>decodeUncompressedECPoint</b>(uncompressedPoint)
					
					</div>
					<div class="description">
						Decode x/y coordinates from uncompressed format
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>uncompressedPoint</b>
									
								</dt>
								<dd>the uncompressed point</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the x-/y-coordinate of the point</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".dtos"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">EAC2CVCertificateGenerator.</span><b>dtos</b>(d)
					
					</div>
					<div class="description">
						Convert date to string with format YYMMDD.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Date}</span> <b>d</b>
									
								</dt>
								<dd>the date object.</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the date/time string.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".encodeUncompressedECPoint"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">EAC2CVCertificateGenerator.</span><b>encodeUncompressedECPoint</b>(x, y)
					
					</div>
					<div class="description">
						Convert x/y coordinates to uncompressed format
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>x</b>
									
								</dt>
								<dd>the x-coordinate of the point</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>y</b>
									
								</dt>
								<dd>the y-coordinate of the point</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the point in uncompressed format</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateCVCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateCVCertificate</b>(signingKey, taOID)
					
					</div>
					<div class="description">
						Generate a certificate based on the parameter set using the setter methods.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>signingKey</b>
									
								</dt>
								<dd>the key to be used for signing the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>taOID</b>
									
								</dt>
								<dd>the object identifier associated with the signing key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the CVC certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setCAR"> </a>
					<div class="fixedFont">
					
					
					<b>setCAR</b>(CAR, CAR, CAR)
					
					</div>
					<div class="description">
						Set the certification authority reference
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>CAR</b>
									
								</dt>
								<dd>the CAR value</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>CAR</b>
									
								</dt>
								<dd>the CAR value</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>CAR</b>
									
								</dt>
								<dd>the CAR value</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setChatAuthorizationLevel"> </a>
					<div class="fixedFont">
					
					
					<b>setChatAuthorizationLevel</b>(authLevel)
					
					</div>
					<div class="description">
						Set the authorization level of the authorization template for the generated certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>authLevel</b>
									
								</dt>
								<dd>the encoded authorization level</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setChatOID"> </a>
					<div class="fixedFont">
					
					
					<b>setChatOID</b>(oid)
					
					</div>
					<div class="description">
						Set the object identifier of the authorization template for the generated certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>the object identifier for the chat</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setCHR"> </a>
					<div class="fixedFont">
					
					
					<b>setCHR</b>(CHR, CHR, CHR)
					
					</div>
					<div class="description">
						Set the certificate holder reference
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>CHR</b>
									
								</dt>
								<dd>the CHR value</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>CHR</b>
									
								</dt>
								<dd>the CHR value</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>CHR</b>
									
								</dt>
								<dd>the CHR value</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setEffectiveDate"> </a>
					<div class="fixedFont">
					
					
					<b>setEffectiveDate</b>(effectiveDate, effectiveDate)
					
					</div>
					<div class="description">
						Set the effective date
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>effectiveDate</b>
									
								</dt>
								<dd>the effective date in the format YYMMDD</dd>
							
								<dt>
									<span class="light fixedFont">{Date}</span> <b>effectiveDate</b>
									
								</dt>
								<dd>the effective date as Date object</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setExpiryDate"> </a>
					<div class="fixedFont">
					
					
					<b>setExpiryDate</b>(expiryDate, expiryDate)
					
					</div>
					<div class="description">
						Set the expiry date
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>expiryDate</b>
									
								</dt>
								<dd>the expiry date in the format YYMMDD</dd>
							
								<dt>
									<span class="light fixedFont">{Date}</span> <b>expiryDate</b>
									
								</dt>
								<dd>the expiry date as Date object</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setExtensions"> </a>
					<div class="fixedFont">
					
					
					<b>setExtensions</b>(extensions)
					
					</div>
					<div class="description">
						Set some additional extensions
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Array of ASN.1 objects}</span> <b>extensions</b>
									
								</dt>
								<dd>array containing the ASN.1 encoded extensions for the certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setIncludeDomainParameters"> </a>
					<div class="fixedFont">
					
					
					<b>setIncludeDomainParameters</b>(value)
					
					</div>
					<div class="description">
						Set whether to include domain parameters in the certificate or not
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>value</b>
									
								</dt>
								<dd>the flag indicator</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setProfileIdentifier"> </a>
					<div class="fixedFont">
					
					
					<b>setProfileIdentifier</b>(profileID)
					
					</div>
					<div class="description">
						Set the profile identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>profileID</b>
									
								</dt>
								<dd>the profile identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setPublicKey"> </a>
					<div class="fixedFont">
					
					
					<b>setPublicKey</b>(publicKey)
					
					</div>
					<div class="description">
						Set the public key to be included in the certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>publicKey</b>
									
								</dt>
								<dd>the public key object to be certified</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setTAAlgorithmIdentifier"> </a>
					<div class="fixedFont">
					
					
					<b>setTAAlgorithmIdentifier</b>(oid)
					
					</div>
					<div class="description">
						Set the algorithm identifier for terminal authentication
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>the object identifier as specified in appendix A.6.4</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="stripLeadingZeros"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>stripLeadingZeros</b>(value)
					
					</div>
					<div class="description">
						Strips leading zeros of a ByteString
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>the ByteString value</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the stripped ByteString object, may be an empty ByteString</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - EAC2CVRequestGenerator</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class EAC2CVRequestGenerator
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a generator for CVC requests
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_EAC2CVRequestGenerator.js.html">EAC2CVRequestGenerator.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class EAC2CVRequestGenerator.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/EAC2CVRequestGenerator.html#constructor">EAC2CVRequestGenerator</a></b>(Crypto)
							</div>
							<div class="description">Constructor for request generator</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class EAC2CVRequestGenerator.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#generateAuthenticatedCVRequest">generateAuthenticatedCVRequest</a></b>(requestKey, authenticationKey, authCHR, taOID)
								</div>
								<div class="description">Generate authenticated request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#generateCVRequest">generateCVRequest</a></b>(privateKey)
								</div>
								<div class="description">Generate initial certificate request using the specified private key for signing</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#reset">reset</a></b>()
								</div>
								<div class="description">Reset the current generator object

TODO: Implement me</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#setCAR">setCAR</a></b>(car)
								</div>
								<div class="description">Set the certficate authorization reference (CAR) for the request

The usage of this method is optional - if no CAR is set, there will be no
"inner" CAR included within the certficate request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#setCHR">setCHR</a></b>(chr)
								</div>
								<div class="description">Set the certficate holder reference (CHR) for the request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#setExtensions">setExtensions</a></b>(extensions)
								</div>
								<div class="description">Set the extension values that should be included within the request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#setProfileIdentifier">setProfileIdentifier</a></b>(profileID)
								</div>
								<div class="description">Set the certificate profile identifier (CPI) for the request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#setPublicKey">setPublicKey</a></b>(publicKey)
								</div>
								<div class="description">Set the public key that should be encoded within the request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/EAC2CVRequestGenerator.html#setTAAlgorithmIdentifier">setTAAlgorithmIdentifier</a></b>(oid)
								</div>
								<div class="description">Set the object identifier that should be included in the public key domain parameters</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">EAC2CVRequestGenerator.<b><a href="../symbols/EAC2CVRequestGenerator.html#.signAuthenticatedCVRequest">signAuthenticatedCVRequest</a></b>(crypto, request, authenticationKey, authCHR, taOID)
								</div>
								<div class="description">Countersign request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">EAC2CVRequestGenerator.<b><a href="../symbols/EAC2CVRequestGenerator.html#.stripLeadingZeros">stripLeadingZeros</a></b>(value)
								</div>
								<div class="description">Strips leading zeros of a ByteString</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>EAC2CVRequestGenerator</b>(Crypto)
				</div>
				
				<div class="description">
					Constructor for request generator
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>Crypto</b>
								
							</dt>
								<dd>object to use</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="generateAuthenticatedCVRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>generateAuthenticatedCVRequest</b>(requestKey, authenticationKey, authCHR, taOID)
					
					</div>
					<div class="description">
						Generate authenticated request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>requestKey</b>
									
								</dt>
								<dd>Private key for the request signature</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>authenticationKey</b>
									
								</dt>
								<dd>Private key for used for signing and authenticating the request</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>authCHR</b>
									
								</dt>
								<dd>CHR of the authenticating authority</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>taOID</b>
									
								</dt>
								<dd>the public key object identifier of the authentication key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>The DER-encoded authenticated CV request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateCVRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>generateCVRequest</b>(privateKey)
					
					</div>
					<div class="description">
						Generate initial certificate request using the specified private key for signing
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>privateKey</b>
									
								</dt>
								<dd>Private key for signature creation</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>The DER-encoded CV request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="reset"> </a>
					<div class="fixedFont">
					
					
					<b>reset</b>()
					
					</div>
					<div class="description">
						Reset the current generator object

TODO: Implement me
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="setCAR"> </a>
					<div class="fixedFont">
					
					
					<b>setCAR</b>(car)
					
					</div>
					<div class="description">
						Set the certficate authorization reference (CAR) for the request

The usage of this method is optional - if no CAR is set, there will be no
"inner" CAR included within the certficate request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>car</b>
									
								</dt>
								<dd>CAR for the request</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setCHR"> </a>
					<div class="fixedFont">
					
					
					<b>setCHR</b>(chr)
					
					</div>
					<div class="description">
						Set the certficate holder reference (CHR) for the request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>chr</b>
									
								</dt>
								<dd>CHR for the request</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setExtensions"> </a>
					<div class="fixedFont">
					
					
					<b>setExtensions</b>(extensions)
					
					</div>
					<div class="description">
						Set the extension values that should be included within the request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString[]}</span> <b>extensions</b>
									
								</dt>
								<dd>Array of DER-encoded extensions</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setProfileIdentifier"> </a>
					<div class="fixedFont">
					
					
					<b>setProfileIdentifier</b>(profileID)
					
					</div>
					<div class="description">
						Set the certificate profile identifier (CPI) for the request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>profileID</b>
									
								</dt>
								<dd>CPI for the request</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setPublicKey"> </a>
					<div class="fixedFont">
					
					
					<b>setPublicKey</b>(publicKey)
					
					</div>
					<div class="description">
						Set the public key that should be encoded within the request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>publicKey</b>
									
								</dt>
								<dd>Public Key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setTAAlgorithmIdentifier"> </a>
					<div class="fixedFont">
					
					
					<b>setTAAlgorithmIdentifier</b>(oid)
					
					</div>
					<div class="description">
						Set the object identifier that should be included in the public key domain parameters
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>oid</b>
									
								</dt>
								<dd>Object identifier as specified in appendix A.6.4</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".signAuthenticatedCVRequest"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">EAC2CVRequestGenerator.</span><b>signAuthenticatedCVRequest</b>(crypto, request, authenticationKey, authCHR, taOID)
					
					</div>
					<div class="description">
						Countersign request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto provide to use for signing the request</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>request</b>
									
								</dt>
								<dd>the self-signed request</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>authenticationKey</b>
									
								</dt>
								<dd>Private key for used for signing and authenticating the request</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>authCHR</b>
									
								</dt>
								<dd>CHR of the authenticating authority</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>taOID</b>
									
								</dt>
								<dd>the public key object identifier of the authentication key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>The DER-encoded authenticated CV request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".stripLeadingZeros"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString

TODO: Move to Utils}</span>
					<span class="light">EAC2CVRequestGenerator.</span><b>stripLeadingZeros</b>(value)
					
					</div>
					<div class="description">
						Strips leading zeros of a ByteString
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>the ByteString value</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the stripped ByteString object, may be an empty ByteString</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - FCP</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class FCP
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class storing File Control Parameter for a file system node
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_FCP.js.html">FCP.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class FCP.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/FCP.html#constructor">FCP</a></b>()
							</div>
							<div class="description">Create a File Control Parameter containing information about a file system node</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the fields documented in the class FCP.">
					<caption>Field Summary</caption>
					<thead>
						<tr>
							<th scope="col">Field Attributes</th>
							<th scope="col">Field Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								FCP.<b><a href="../symbols/FCP.html#.DEDICATEDFILE">DEDICATEDFILE</a></b>
								</div>
								<div class="description">File type for DF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								FCP.<b><a href="../symbols/FCP.html#.LINEARFIXED">LINEARFIXED</a></b>
								</div>
								<div class="description">File type for record oriented EF with fixed record size</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								FCP.<b><a href="../symbols/FCP.html#.LINEARVARIABLE">LINEARVARIABLE</a></b>
								</div>
								<div class="description">File type for record oriented EF with variable record size</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">
								FCP.<b><a href="../symbols/FCP.html#.TRANSPARENT">TRANSPARENT</a></b>
								</div>
								<div class="description">File type for transparent EF</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class FCP.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FCP.html#getAID">getAID</a></b>()
								</div>
								<div class="description">Returns the Application Identifier (AID)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FCP.html#getBytes">getBytes</a></b>()
								</div>
								<div class="description">Returns the encoded FCP</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FCP.html#getFCI">getFCI</a></b>()
								</div>
								<div class="description">Returns the FCI</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FCP.html#getFID">getFID</a></b>()
								</div>
								<div class="description">Returns the File Identifier (FID)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FCP.html#getSFI">getSFI</a></b>()
								</div>
								<div class="description">Returns the Short File Identifier (SFI)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">FCP.<b><a href="../symbols/FCP.html#.newDF">newDF</a></b>(fid, aid, supl)
								</div>
								<div class="description">Construct a new FCP object for a DF.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">FCP.<b><a href="../symbols/FCP.html#.newFCP">newFCP</a></b>(fid, sfi, type, shareable, internal, supl)
								</div>
								<div class="description">Construct a new FCP object from parameters.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">FCP.<b><a href="../symbols/FCP.html#.newLinearEF">newLinearEF</a></b>(fid, sfi, type, recno, recsize, supl)
								</div>
								<div class="description">Construct a new FCP object for an EF of type linear.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">FCP.<b><a href="../symbols/FCP.html#.newTransparentEF">newTransparentEF</a></b>(fid, sfi, size, supl)
								</div>
								<div class="description">Construct a new FCP object for an EF of type transparent.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">FCP.<b><a href="../symbols/FCP.html#.short2bytestring">short2bytestring</a></b>(val)
								</div>
								<div class="description">Convert an integer value into an two byte ByteString</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FCP.html#toString">toString</a></b>()
								</div>
								<div class="description">Return a human readible string for this object</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>FCP</b>()
				</div>
				
				<div class="description">
					Create a File Control Parameter containing information about a file system node
					
				</div>
				
				
				
				
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			
				<div class="sectionTitle">
					Field Detail
				</div>
				
					<a name=".DEDICATEDFILE"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">FCP.</span><b>DEDICATEDFILE</b>
					
					</div>
					<div class="description">
						File type for DF
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".LINEARFIXED"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">FCP.</span><b>LINEARFIXED</b>
					
					</div>
					<div class="description">
						File type for record oriented EF with fixed record size
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".LINEARVARIABLE"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">FCP.</span><b>LINEARVARIABLE</b>
					
					</div>
					<div class="description">
						File type for record oriented EF with variable record size
						
						
					</div>
					
					

						
						
						
						

					<hr />
				
					<a name=".TRANSPARENT"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">FCP.</span><b>TRANSPARENT</b>
					
					</div>
					<div class="description">
						File type for transparent EF
						
						
					</div>
					
					

						
						
						
						

					
				
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="getAID"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getAID</b>()
					
					</div>
					<div class="description">
						Returns the Application Identifier (AID)
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the AID</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getBytes"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getBytes</b>()
					
					</div>
					<div class="description">
						Returns the encoded FCP
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded FCP</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getFCI"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getFCI</b>()
					
					</div>
					<div class="description">
						Returns the FCI
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the FCI</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getFID"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getFID</b>()
					
					</div>
					<div class="description">
						Returns the File Identifier (FID)
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the FID</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSFI"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getSFI</b>()
					
					</div>
					<div class="description">
						Returns the Short File Identifier (SFI)
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the SFI</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".newDF"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{<a href="../symbols/FCP.html">FCP</a>}</span>
					<span class="light">FCP.</span><b>newDF</b>(fid, aid, supl)
					
					</div>
					<div class="description">
						Construct a new FCP object for a DF.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String|ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the file identifier (2 Bytes)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>aid</b>
									
								</dt>
								<dd>the DF's application identifier (DFName)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>supl</b>
									
								</dt>
								<dd>supplemental information</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly constructed FCP object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".newFCP"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{<a href="../symbols/FCP.html">FCP</a>}</span>
					<span class="light">FCP.</span><b>newFCP</b>(fid, sfi, type, shareable, internal, supl)
					
					</div>
					<div class="description">
						Construct a new FCP object from parameters.

<p>This function should never be called directly. Use newTransparentDF(), newDF() or newLinearEF() instead.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String|ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the file identifier (2 Bytes)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>sfi</b>
									
								</dt>
								<dd>the short file identifier or -1 or 0 if not defined</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>type</b>
									
								</dt>
								<dd>the file type, one of FCP.DEDICATEDFILE, FCP.TRANSPARENT or FCP.LINEAR*</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>shareable</b>
									
								</dt>
								<dd>true, if file may be shared between logical channels</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>internal</b>
									
								</dt>
								<dd>true, if file is internal only and not externally selectable</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>supl</b>
									
								</dt>
								<dd>supplemental information</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly constructed FCP object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".newLinearEF"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{<a href="../symbols/FCP.html">FCP</a>}</span>
					<span class="light">FCP.</span><b>newLinearEF</b>(fid, sfi, type, recno, recsize, supl)
					
					</div>
					<div class="description">
						Construct a new FCP object for an EF of type linear.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String|ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the file identifier (2 Bytes)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>sfi</b>
									
								</dt>
								<dd>the short file identifier or -1 or 0 if not defined</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>type</b>
									
								</dt>
								<dd>the file type, one of FCP.LINEARFIXED or FCP.LINEARVARIABLE</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>recno</b>
									
								</dt>
								<dd>the maximum number of records</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>recsize</b>
									
								</dt>
								<dd>the maximum or fixed record size</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>supl</b>
									
								</dt>
								<dd>supplemental information</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly constructed FCP object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".newTransparentEF"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{<a href="../symbols/FCP.html">FCP</a>}</span>
					<span class="light">FCP.</span><b>newTransparentEF</b>(fid, sfi, size, supl)
					
					</div>
					<div class="description">
						Construct a new FCP object for an EF of type transparent.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String|ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the file identifier (2 Bytes)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>sfi</b>
									
								</dt>
								<dd>the short file identifier or -1 or 0 if not defined</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>size</b>
									
								</dt>
								<dd>the file size</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>supl</b>
									
								</dt>
								<dd>supplemental information</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly constructed FCP object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".short2bytestring"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">FCP.</span><b>short2bytestring</b>(val)
					
					</div>
					<div class="description">
						Convert an integer value into an two byte ByteString
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>val</b>
									
								</dt>
								<dd>the value</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the 2 byte encoded value MSB||LSB</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>toString</b>()
					
					</div>
					<div class="description">
						Return a human readible string for this object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the string</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - FSNode</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class FSNode
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Abstract class for file system nodes
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_FSNode.js.html">FSNode.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class FSNode.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/FSNode.html#constructor">FSNode</a></b>(fcp)
							</div>
							<div class="description">Construct a file system node</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class FSNode.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FSNode.html#getFCP">getFCP</a></b>()
								</div>
								<div class="description">Gets the file control parameter for this node</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FSNode.html#getParent">getParent</a></b>()
								</div>
								<div class="description">Gets the parent node for this node</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FSNode.html#isDF">isDF</a></b>()
								</div>
								<div class="description">Returns true if this is a DF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FSNode.html#setParent">setParent</a></b>(the)
								</div>
								<div class="description">Sets the parent for this node</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FSNode.html#toString">toString</a></b>()
								</div>
								<div class="description">Returns a human readible string</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>FSNode</b>(fcp)
				</div>
				
				<div class="description">
					Construct a file system node
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								 <b>fcp</b>
								
							</dt>
								<dd></dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="getFCP"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/FCP.html">FCP</a>}</span>
					<b>getFCP</b>()
					
					</div>
					<div class="description">
						Gets the file control parameter for this node
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the FCP</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getParent"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/DF.html">DF</a>}</span>
					<b>getParent</b>()
					
					</div>
					<div class="description">
						Gets the parent node for this node
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the parent node</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isDF"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isDF</b>()
					
					</div>
					<div class="description">
						Returns true if this is a DF
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if this is a DF</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setParent"> </a>
					<div class="fixedFont">
					
					
					<b>setParent</b>(the)
					
					</div>
					<div class="description">
						Sets the parent for this node
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/DF.html">DF</a>}</span> <b>the</b>
									
								</dt>
								<dd>parent node</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>toString</b>()
					
					</div>
					<div class="description">
						Returns a human readible string
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a string</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - File</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class File
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing basic support for files
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/file_File.js.html">File.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class File.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/File.html#constructor">File</a></b>(name, location)
							</div>
							<div class="description">Create a reference to a file system object (file or directory)</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class File.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#close">close</a></b>()
								</div>
								<div class="description">Close streams associated with file</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#exists">exists</a></b>()
								</div>
								<div class="description">Return true if file exists</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#getAbsolutePath">getAbsolutePath</a></b>(mode)
								</div>
								<div class="description">Return absolute path</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#getParentFile">getParentFile</a></b>()
								</div>
								<div class="description">Return the parent file of this file object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#list">list</a></b>()
								</div>
								<div class="description">Return list of files contained in the directory referenced by the File object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#readAllAsBinary">readAllAsBinary</a></b>()
								</div>
								<div class="description">Read complete file into ByteString object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#readAllAsString">readAllAsString</a></b>(encoding)
								</div>
								<div class="description">Read complete file into String object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/File.html#writeAll">writeAll</a></b>(obj, encoding)
								</div>
								<div class="description">Write the object to file</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>File</b>(name, location)
				</div>
				
				<div class="description">
					Create a reference to a file system object (file or directory)
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>name</b>
								
							</dt>
								<dd>relative or absolute file path</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>location</b>
								
							</dt>
								<dd>one of GPSystem.CWD, GPSystem.USR, GPSystem.SYS, GPSystem.AUTO to resolve relative names. Default GPSystem.CWD</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="close"> </a>
					<div class="fixedFont">
					
					
					<b>close</b>()
					
					</div>
					<div class="description">
						Close streams associated with file
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="exists"> </a>
					<div class="fixedFont">
					
					
					<b>exists</b>()
					
					</div>
					<div class="description">
						Return true if file exists
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="getAbsolutePath"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getAbsolutePath</b>(mode)
					
					</div>
					<div class="description">
						Return absolute path
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>mode</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the absolute path</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getParentFile"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/File.html">File</a>}</span>
					<b>getParentFile</b>()
					
					</div>
					<div class="description">
						Return the parent file of this file object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the parent file object or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="list"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>list</b>()
					
					</div>
					<div class="description">
						Return list of files contained in the directory referenced by the File object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of file names</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="readAllAsBinary"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>readAllAsBinary</b>()
					
					</div>
					<div class="description">
						Read complete file into ByteString object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the binary content</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="readAllAsString"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>readAllAsString</b>(encoding)
					
					</div>
					<div class="description">
						Read complete file into String object
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>encoding</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the text content</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="writeAll"> </a>
					<div class="fixedFont">
					
					
					<b>writeAll</b>(obj, encoding)
					
					</div>
					<div class="description">
						Write the object to file
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>obj</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>encoding</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - FileSelector</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class FileSelector
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a file selector used to store information about the currently selected
       file system object and to process the SELECT APDU
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_FileSelector.js.html">FileSelector.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class FileSelector.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/FileSelector.html#constructor">FileSelector</a></b>(mf)
							</div>
							<div class="description">Create a file selector object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class FileSelector.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#addAuthenticationState">addAuthenticationState</a></b>(global, ao)
								</div>
								<div class="description">Add authenticated object to the list of authentication states for the local DF or global MF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#enumerateObjects">enumerateObjects</a></b>(type)
								</div>
								<div class="description">Enumerate objects of a defined type</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#getCurrentEF">getCurrentEF</a></b>()
								</div>
								<div class="description">Returns the current EF, if any</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#getMeta">getMeta</a></b>(name)
								</div>
								<div class="description">Return meta data associated with the current DF or MF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#getObject">getObject</a></b>(type, id)
								</div>
								<div class="description">Return object of given type identified by id

<p>If bit b8 in the id is 1, then the search will start in the current DF.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#getSecurityEnvironment">getSecurityEnvironment</a></b>()
								</div>
								<div class="description">Return the current security environment</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#isAuthenticated">isAuthenticated</a></b>(global, ao)
								</div>
								<div class="description">Add authenticated object to the list of authentication states for the local DF or global MF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#processSelectAPDU">processSelectAPDU</a></b>(apdu)
								</div>
								<div class="description">Processes the SELECT APDU

<p>Supports in P1</p>
<ul>
 <li>'00' with empty data to select the MF</li>
 <li>'00' with "3F00" to select the MF</li>
 <li>'00' with fid to select an entry in the current DF</li>
 <li>'01' with fid to select a DF in the current DF</li>
 <li>'02' with fid to select an EF in the current DF</li>
 <li>'03' with empty data to select the parent</li>
</ul>
<p>Supports in P2</p>
<ul>
 <li>'00' with P1=='00' return no data</li>
 <li>'04' return FCP</li>
 <li>'0C' return no data</li>
</ul></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#selectFID">selectFID</a></b>(fid, check, df)
								</div>
								<div class="description">Select a DF entry by FID</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#selectMF">selectMF</a></b>()
								</div>
								<div class="description">Select the MF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#selectSFI">selectSFI</a></b>(sfi)
								</div>
								<div class="description">Select a DF entry by SFI</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSelector.html#toString">toString</a></b>()
								</div>
								<div class="description">Return a human readable string for this object</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>FileSelector</b>(mf)
				</div>
				
				<div class="description">
					Create a file selector object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/DF.html">DF</a>}</span>  <b>mf</b>
								
							</dt>
								<dd>the master file</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="addAuthenticationState"> </a>
					<div class="fixedFont">
					
					
					<b>addAuthenticationState</b>(global, ao)
					
					</div>
					<div class="description">
						Add authenticated object to the list of authentication states for the local DF or global MF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>global</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>ao</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="enumerateObjects"> </a>
					<div class="fixedFont">
					
					
					<b>enumerateObjects</b>(type)
					
					</div>
					<div class="description">
						Enumerate objects of a defined type
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>type</b>
									
								</dt>
								<dd>the type of the object</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of objects found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCurrentEF"> </a>
					<div class="fixedFont">
					
					<span class="light">{EF}</span>
					<b>getCurrentEF</b>()
					
					</div>
					<div class="description">
						Returns the current EF, if any
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the current EF or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getMeta"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>getMeta</b>(name)
					
					</div>
					<div class="description">
						Return meta data associated with the current DF or MF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the meta data name</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>The meta data</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getObject"> </a>
					<div class="fixedFont">
					
					
					<b>getObject</b>(type, id)
					
					</div>
					<div class="description">
						Return object of given type identified by id

<p>If bit b8 in the id is 1, then the search will start in the current DF. If the object
   is not found, the search is continued in the MF. If the bit is not set, then the search
   will only look into the MF.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>type</b>
									
								</dt>
								<dd>the type of the object</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>id</b>
									
								</dt>
								<dd>the id, bit b8 indicating local DF or global MF search</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the object of the requested type or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSecurityEnvironment"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>getSecurityEnvironment</b>()
					
					</div>
					<div class="description">
						Return the current security environment
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>Object with properties VEXK, CDIK, SMRES and SMCOM containing SecurityEnvironment objects</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isAuthenticated"> </a>
					<div class="fixedFont">
					
					
					<b>isAuthenticated</b>(global, ao)
					
					</div>
					<div class="description">
						Add authenticated object to the list of authentication states for the local DF or global MF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>global</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>ao</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="processSelectAPDU"> </a>
					<div class="fixedFont">
					
					
					<b>processSelectAPDU</b>(apdu)
					
					</div>
					<div class="description">
						Processes the SELECT APDU

<p>Supports in P1</p>
<ul>
 <li>'00' with empty data to select the MF</li>
 <li>'00' with "3F00" to select the MF</li>
 <li>'00' with fid to select an entry in the current DF</li>
 <li>'01' with fid to select a DF in the current DF</li>
 <li>'02' with fid to select an EF in the current DF</li>
 <li>'03' with empty data to select the parent</li>
</ul>
<p>Supports in P2</p>
<ul>
 <li>'00' with P1=='00' return no data</li>
 <li>'04' return FCP</li>
 <li>'0C' return no data</li>
</ul>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the select APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="selectFID"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/FSNode.html">FSNode</a>}</span>
					<b>selectFID</b>(fid, check, df)
					
					</div>
					<div class="description">
						Select a DF entry by FID
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the file identifier</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>check</b>
									
								</dt>
								<dd>if file matches expected type EF or DF</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>df</b>
									
								</dt>
								<dd>true if the check must check for a DF type, else a EF type</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the selected file system node</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="selectMF"> </a>
					<div class="fixedFont">
					
					
					<b>selectMF</b>()
					
					</div>
					<div class="description">
						Select the MF
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="selectSFI"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/FSNode.html">FSNode</a>}</span>
					<b>selectSFI</b>(sfi)
					
					</div>
					<div class="description">
						Select a DF entry by SFI
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>sfi</b>
									
								</dt>
								<dd>the short file identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the selected file system node</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Return a human readable string for this object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - FileSystemIdObject</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class FileSystemIdObject
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Abstract class for file system objects identified by an identifier
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_FileSystemIdObject.js.html">FileSystemIdObject.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class FileSystemIdObject.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/FileSystemIdObject.html#constructor">FileSystemIdObject</a></b>(name, id)
							</div>
							<div class="description">Create a file system object identifiable by an id</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class FileSystemIdObject.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSystemIdObject.html#getId">getId</a></b>()
								</div>
								<div class="description">Return id of object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSystemIdObject.html#getType">getType</a></b>()
								</div>
								<div class="description">Return type of object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/FileSystemIdObject.html#toString">toString</a></b>()
								</div>
								<div class="description">Return human readable string</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>FileSystemIdObject</b>(name, id)
				</div>
				
				<div class="description">
					Create a file system object identifiable by an id
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>name</b>
								
							</dt>
								<dd>the human readable name of the object</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>id</b>
								
							</dt>
								<dd>the id</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="getId"> </a>
					<div class="fixedFont">
					
					
					<b>getId</b>()
					
					</div>
					<div class="description">
						Return id of object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="getType"> </a>
					<div class="fixedFont">
					
					<span class="light">{string}</span>
					<b>getType</b>()
					
					</div>
					<div class="description">
						Return type of object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>type of object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Return human readable string
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - GPSCP03</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class GPSCP03
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/gp_GPSCP03.js.html">GPSCP03.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class GPSCP03.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/GPSCP03.html#constructor">GPSCP03</a></b>(crypto, kenc, kmac, kdek, aid)
							</div>
							<div class="description">Class implementing support for Global Platform SCP03 secure messaging protocol</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class GPSCP03.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#calculateHostCryptogram">calculateHostCryptogram</a></b>()
								</div>
								<div class="description">Calculate host cryptogram using the key derive method</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#deriveKey">deriveKey</a></b>(key, ddc, size, context)
								</div>
								<div class="description">Derive a session key or cryptogram</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#deriveSessionKeys">deriveSessionKeys</a></b>()
								</div>
								<div class="description">Derive S-ENC, S-MAC and S-RMAC session keys</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#determineCardChallenge">determineCardChallenge</a></b>()
								</div>
								<div class="description">Determine random or pseudo-random card challenge</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#externalAuthenticate">externalAuthenticate</a></b>(card, level, hostCryptogram)
								</div>
								<div class="description">Issue EXTERNAL AUTHENTICATE command to card.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#handleInitializeUpdate">handleInitializeUpdate</a></b>(hostCryptogram)
								</div>
								<div class="description">Handle processing of INITIALIZE UPDATE command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#handlePutKey">handlePutKey</a></b>(cdata)
								</div>
								<div class="description">Handle processing of PUT KEY command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#initializeUpdate">initializeUpdate</a></b>(card, keyVersion, keyId)
								</div>
								<div class="description">Issue INITIALIZE UPDATE command to card and parse response</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">GPSCP03.<b><a href="../symbols/GPSCP03.html#.parseKeyDataField">parseKeyDataField</a></b>(keyDataField)
								</div>
								<div class="description">Extract a key data field from C-Data in a PUT KEY APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#prepareKeyBlock">prepareKeyBlock</a></b>(dek, key)
								</div>
								<div class="description">Encrypt key and prepare key block for PUT KEY command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#reset">reset</a></b>()
								</div>
								<div class="description">Reset the internal state</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#setKeyInfo">setKeyInfo</a></b>(version, parami)
								</div>
								<div class="description">Set the key version and protocol parameter</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#setSequenceCounter">setSequenceCounter</a></b>(cnt)
								</div>
								<div class="description">Set the sequence number for pseudo-random card challenges</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">GPSCP03.<b><a href="../symbols/GPSCP03.html#.stripPadding">stripPadding</a></b>(the)
								</div>
								<div class="description">Strip the ISO padding from dechipered cryptogram</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#unwrap">unwrap</a></b>(apduToUnwrap, usageQualifier)
								</div>
								<div class="description">Called by the secure messaging wrapper to unwrap the response APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#unwrapCommandAPDU">unwrapCommandAPDU</a></b>(apdu)
								</div>
								<div class="description">Counterpart to wrap and meant to be used in a simulator</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#validateKeyBlock">validateKeyBlock</a></b>(keyblob)
								</div>
								<div class="description">Decrypt and validate key blob containing AES key wrapped with DEK</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#verifyCardCryptogram">verifyCardCryptogram</a></b>()
								</div>
								<div class="description">Verify card cryptogram</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#wrap">wrap</a></b>(apduToWrap, usageQualifier)
								</div>
								<div class="description">Called by the secure messaging wrapper to wrap the command APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/GPSCP03.html#wrapResponseAPDU">wrapResponseAPDU</a></b>(apdu)
								</div>
								<div class="description">Counterpart to unwrap and meant to be used in a simulator</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>GPSCP03</b>(crypto, kenc, kmac, kdek, aid)
				</div>
				
				<div class="description">
					Class implementing support for Global Platform SCP03 secure messaging protocol
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider</dd>
						
							<dt>
								<span class="light fixedFont">{Key}</span>  <b>kenc</b>
								
							</dt>
								<dd>the static secure channel encryption key</dd>
						
							<dt>
								<span class="light fixedFont">{Key}</span>  <b>kmac</b>
								
							</dt>
								<dd>the static secure channel message authentication code key</dd>
						
							<dt>
								<span class="light fixedFont">{Key}</span>  <b>kdek</b>
								
							</dt>
								<dd>the static data encryption key</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>aid</b>
								
							</dt>
								<dd>the AID to use for challenge calculation</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="calculateHostCryptogram"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>calculateHostCryptogram</b>()
					
					</div>
					<div class="description">
						Calculate host cryptogram using the key derive method
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the 8 byte cryptogram</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deriveKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>deriveKey</b>(key, ddc, size, context)
					
					</div>
					<div class="description">
						Derive a session key or cryptogram
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the master key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>ddc</b>
									
								</dt>
								<dd>the data derivation constant</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>size</b>
									
								</dt>
								<dd>the size of byte of the resulting key or cryptogram</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>context</b>
									
								</dt>
								<dd>the context (usually hostChallenge || cardChallenge)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the derived value</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deriveSessionKeys"> </a>
					<div class="fixedFont">
					
					
					<b>deriveSessionKeys</b>()
					
					</div>
					<div class="description">
						Derive S-ENC, S-MAC and S-RMAC session keys
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="determineCardChallenge"> </a>
					<div class="fixedFont">
					
					
					<b>determineCardChallenge</b>()
					
					</div>
					<div class="description">
						Determine random or pseudo-random card challenge
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="externalAuthenticate"> </a>
					<div class="fixedFont">
					
					
					<b>externalAuthenticate</b>(card, level, hostCryptogram)
					
					</div>
					<div class="description">
						Issue EXTERNAL AUTHENTICATE command to card.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Card}</span> <b>card</b>
									
								</dt>
								<dd>the card to use</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>level</b>
									
								</dt>
								<dd>the security level (a combination of bits B5 (R-ENC), B4 (R-MAC), B2 (C-ENC) and B1 (C-MAC))</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>hostCryptogram</b>
									
								</dt>
								<dd>optional parameter, calculated internally if missing</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="handleInitializeUpdate"> </a>
					<div class="fixedFont">
					
					
					<b>handleInitializeUpdate</b>(hostCryptogram)
					
					</div>
					<div class="description">
						Handle processing of INITIALIZE UPDATE command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>hostCryptogram</b>
									
								</dt>
								<dd>the cryptogram calculated at the host</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="handlePutKey"> </a>
					<div class="fixedFont">
					
					
					<b>handlePutKey</b>(cdata)
					
					</div>
					<div class="description">
						Handle processing of PUT KEY command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>cdata</b>
									
								</dt>
								<dd>the C-Data field of the APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="initializeUpdate"> </a>
					<div class="fixedFont">
					
					
					<b>initializeUpdate</b>(card, keyVersion, keyId)
					
					</div>
					<div class="description">
						Issue INITIALIZE UPDATE command to card and parse response
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Card}</span> <b>card</b>
									
								</dt>
								<dd>the card to use</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyVersion</b>
									
								</dt>
								<dd>the version of the key to use (0 for default)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyId</b>
									
								</dt>
								<dd>the key id to use (usually 0)</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".parseKeyDataField"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">GPSCP03.</span><b>parseKeyDataField</b>(keyDataField)
					
					</div>
					<div class="description">
						Extract a key data field from C-Data in a PUT KEY APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyDataField</b>
									
								</dt>
								<dd>the list of key data fields</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the extracted key data</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="prepareKeyBlock"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>prepareKeyBlock</b>(dek, key)
					
					</div>
					<div class="description">
						Encrypt key and prepare key block for PUT KEY command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>dek</b>
									
								</dt>
								<dd>the data encryption key</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the key to wrap</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key type, length, cryptogram and key check value</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="reset"> </a>
					<div class="fixedFont">
					
					
					<b>reset</b>()
					
					</div>
					<div class="description">
						Reset the internal state
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="setKeyInfo"> </a>
					<div class="fixedFont">
					
					
					<b>setKeyInfo</b>(version, parami)
					
					</div>
					<div class="description">
						Set the key version and protocol parameter
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>version</b>
									
								</dt>
								<dd>the key version indicated in INITIALIZE_UPDATE</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>parami</b>
									
								</dt>
								<dd>the i parameter for the SCP03 protocol (Default '00')</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSequenceCounter"> </a>
					<div class="fixedFont">
					
					
					<b>setSequenceCounter</b>(cnt)
					
					</div>
					<div class="description">
						Set the sequence number for pseudo-random card challenges
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>cnt</b>
									
								</dt>
								<dd>the last used counter value</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".stripPadding"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">GPSCP03.</span><b>stripPadding</b>(the)
					
					</div>
					<div class="description">
						Strip the ISO padding from dechipered cryptogram
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>plain text with padding</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the plain text without padding</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="unwrap"> </a>
					<div class="fixedFont">
					
					
					<b>unwrap</b>(apduToUnwrap, usageQualifier)
					
					</div>
					<div class="description">
						Called by the secure messaging wrapper to unwrap the response APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>apduToUnwrap</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>usageQualifier</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="unwrapCommandAPDU"> </a>
					<div class="fixedFont">
					
					
					<b>unwrapCommandAPDU</b>(apdu)
					
					</div>
					<div class="description">
						Counterpart to wrap and meant to be used in a simulator
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>apdu</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="validateKeyBlock"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>validateKeyBlock</b>(keyblob)
					
					</div>
					<div class="description">
						Decrypt and validate key blob containing AES key wrapped with DEK
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyblob</b>
									
								</dt>
								<dd>the wrapped key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the unwrapped key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyCardCryptogram"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>verifyCardCryptogram</b>()
					
					</div>
					<div class="description">
						Verify card cryptogram
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if cryptogram is valid</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="wrap"> </a>
					<div class="fixedFont">
					
					
					<b>wrap</b>(apduToWrap, usageQualifier)
					
					</div>
					<div class="description">
						Called by the secure messaging wrapper to wrap the command APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>apduToWrap</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>usageQualifier</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="wrapResponseAPDU"> </a>
					<div class="fixedFont">
					
					
					<b>wrapResponseAPDU</b>(apdu)
					
					</div>
					<div class="description">
						Counterpart to unwrap and meant to be used in a simulator
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>apdu</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - HSMCVCertificateStore</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class HSMCVCertificateStore
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				CV certificate store with SmartCard-HSM as secure key store
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_HSMCVCertificateStore.js.html">HSMCVCertificateStore.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class HSMCVCertificateStore.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/HSMCVCertificateStore.html#constructor">HSMCVCertificateStore</a></b>(daof, sc)
							</div>
							<div class="description">Create a CV certificate store using a SmartCard-HSM as secure key store</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class HSMCVCertificateStore.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMCVCertificateStore.html#deletePrivateKey">deletePrivateKey</a></b>(path, chr)
								</div>
								<div class="description">Get a private key in the certificate store.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMCVCertificateStore.html#generateRequest">generateRequest</a></b>(path, car, forceInitial, signinitial, keyspec, algo, countryseq)
								</div>
								<div class="description">Generate a certificate request using a private key in the SmartCard-HSM</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMCVCertificateStore.html#getCrypto">getCrypto</a></b>()
								</div>
								<div class="description">Get crypto object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMCVCertificateStore.html#getPrivateKey">getPrivateKey</a></b>(path, chr)
								</div>
								<div class="description">Get a private key in the certificate store.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">HSMCVCertificateStore.<b><a href="../symbols/HSMCVCertificateStore.html#.path2label">path2label</a></b>(path, chr)
								</div>
								<div class="description">Transform path and certificate holder into a label</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>HSMCVCertificateStore</b>(daof, sc)
				</div>
				
				<div class="description">
					Create a CV certificate store using a SmartCard-HSM as secure key store
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{DAOFactory}</span>  <b>daof</b>
								
							</dt>
								<dd>the factory that can create data access objects for persistent information</dd>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/SmartCardHSM.html">SmartCardHSM</a>}</span>  <b>sc</b>
								
							</dt>
								<dd>the SmartCard-HSM access object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="deletePrivateKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>deletePrivateKey</b>(path, chr)
					
					</div>
					<div class="description">
						Get a private key in the certificate store. Overrides method in CVCertificateStore.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateRequest</b>(path, car, forceInitial, signinitial, keyspec, algo, countryseq)
					
					</div>
					<div class="description">
						Generate a certificate request using a private key in the SmartCard-HSM
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>car</b>
									
								</dt>
								<dd>the CA at which this request is addressed</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>forceInitial</b>
									
								</dt>
								<dd>force an initial request, even if a current certificate is available</dd>
							
								<dt>
									<span class="light fixedFont">{boolean}</span> <b>signinitial</b>
									
								</dt>
								<dd>sign with initial key (sequence = 00000)</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>keyspec</b>
									
								</dt>
								<dd>a key object containing key parameters (e.g. EC Curve)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>algo</b>
									
								</dt>
								<dd>the terminal authentication algorithm object identifier</dd>
							
								<dt>
									<b>countryseq</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCrypto"> </a>
					<div class="fixedFont">
					
					<span class="light">{HSMCrypto}</span>
					<b>getCrypto</b>()
					
					</div>
					<div class="description">
						Get crypto object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the HSMCrypto object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPrivateKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getPrivateKey</b>(path, chr)
					
					</div>
					<div class="description">
						Get a private key in the certificate store. Overrides method in CVCertificateStore.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".path2label"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">HSMCVCertificateStore.</span><b>path2label</b>(path, chr)
					
					</div>
					<div class="description">
						Transform path and certificate holder into a label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the path</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder reference</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key label</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - HSMKeyStore</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class HSMKeyStore
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing some simple access functions to generate key pairs and store certificates
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_HSMKeyStore.js.html">HSMKeyStore.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class HSMKeyStore.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/HSMKeyStore.html#constructor">HSMKeyStore</a></b>(sc)
							</div>
							<div class="description">Create a simple key store front-end</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class HSMKeyStore.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#deleteCACertificate">deleteCACertificate</a></b>(label)
								</div>
								<div class="description">Delete CA certificate with given label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#deleteKey">deleteKey</a></b>(labelOrIdOrKey)
								</div>
								<div class="description">Delete key and certificate with given label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#enumerateKeys">enumerateKeys</a></b>()
								</div>
								<div class="description">Return list of keys</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#exportKey">exportKey</a></b>(labelOrIdOrKey)
								</div>
								<div class="description">Export a key blob, meta data and certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#generateECCKeyPair">generateECCKeyPair</a></b>(label, curve)
								</div>
								<div class="description">Generate an ECDSA key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#generateKey">generateKey</a></b>(label, initialized)
								</div>
								<div class="description">Generate a symmetric key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#generateKeyPair">generateKeyPair</a></b>(label, initialized)
								</div>
								<div class="description">Generate a key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#generateRSAKeyPair">generateRSAKeyPair</a></b>(label, keysize)
								</div>
								<div class="description">Generate a RSA key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#getCertificate">getCertificate</a></b>(labelOrIdOrKey)
								</div>
								<div class="description">Get raw certificate for given label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#getEndEntityCertificate">getEndEntityCertificate</a></b>(labelOrIdOrKey)
								</div>
								<div class="description">Get certificate for given label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#getKey">getKey</a></b>(the)
								</div>
								<div class="description">Get key for given label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#hasCertificate">hasCertificate</a></b>(labelOrIdOrKey)
								</div>
								<div class="description">Check if key has a certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#hasKey">hasKey</a></b>(the)
								</div>
								<div class="description">Check if key with label exists</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#importAESKey">importAESKey</a></b>(label, keyblob, keysize, keyid)
								</div>
								<div class="description">Import an AES key blob</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#importECCKey">importECCKey</a></b>(label, keyblob, keysize, keyid)
								</div>
								<div class="description">Import an ECC key blob</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#importKey">importKey</a></b>(keywrap)
								</div>
								<div class="description">Import a key blob, meta data and certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#importRSAKey">importRSAKey</a></b>(label, keyblob, keysize, keyid)
								</div>
								<div class="description">Import a RSA key blob</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#storeCACertificate">storeCACertificate</a></b>(label, cert)
								</div>
								<div class="description">Store CA certificate under given label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/HSMKeyStore.html#storeEndEntityCertificate">storeEndEntityCertificate</a></b>(labelOrIdOrKey, cert)
								</div>
								<div class="description">Store certificate under given label</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>HSMKeyStore</b>(sc)
				</div>
				
				<div class="description">
					Create a simple key store front-end
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/SmartCardHSM.html">SmartCardHSM</a>}</span>  <b>sc</b>
								
							</dt>
								<dd>the SmartCard-HSM card service</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="deleteCACertificate"> </a>
					<div class="fixedFont">
					
					
					<b>deleteCACertificate</b>(label)
					
					</div>
					<div class="description">
						Delete CA certificate with given label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label of certificate to be removed</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deleteKey"> </a>
					<div class="fixedFont">
					
					
					<b>deleteKey</b>(labelOrIdOrKey)
					
					</div>
					<div class="description">
						Delete key and certificate with given label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number/Key}</span> <b>labelOrIdOrKey</b>
									
								</dt>
								<dd>the label, id or object of the key to be removed</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="enumerateKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>enumerateKeys</b>()
					
					</div>
					<div class="description">
						Return list of keys
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of key names</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="exportKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>exportKey</b>(labelOrIdOrKey)
					
					</div>
					<div class="description">
						Export a key blob, meta data and certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number/Key}</span> <b>labelOrIdOrKey</b>
									
								</dt>
								<dd>the label, id or object of the key to be removed</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the blob with key, meta data and certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateECCKeyPair"> </a>
					<div class="fixedFont">
					
					
					<b>generateECCKeyPair</b>(label, curve)
					
					</div>
					<div class="description">
						Generate an ECDSA key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label under which the key pair shall be stored</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>curve</b>
									
								</dt>
								<dd>the curve object identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="generateKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>generateKey</b>(label, initialized)
					
					</div>
					<div class="description">
						Generate a symmetric key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label under which the key shall be stored</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a>}</span> <b>initialized</b>
									
								</dt>
								<dd>key spec generator</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the new key wrapped with the symmetric key defined with SmartCardHSMKeySpecGenerator.setWrappingKey()</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateKeyPair"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>generateKeyPair</b>(label, initialized)
					
					</div>
					<div class="description">
						Generate a key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label under which the key pair shall be stored</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a>}</span> <b>initialized</b>
									
								</dt>
								<dd>key spec generator</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the authenticated request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateRSAKeyPair"> </a>
					<div class="fixedFont">
					
					
					<b>generateRSAKeyPair</b>(label, keysize)
					
					</div>
					<div class="description">
						Generate a RSA key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label under which the key pair shall be stored</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keysize</b>
									
								</dt>
								<dd>the key size in bits (1024, 1536 or 2048)</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCertificate</b>(labelOrIdOrKey)
					
					</div>
					<div class="description">
						Get raw certificate for given label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number/Key}</span> <b>labelOrIdOrKey</b>
									
								</dt>
								<dd>the certificate label, id or key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getEndEntityCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509}</span>
					<b>getEndEntityCertificate</b>(labelOrIdOrKey)
					
					</div>
					<div class="description">
						Get certificate for given label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number/Key}</span> <b>labelOrIdOrKey</b>
									
								</dt>
								<dd>the certificate label, id or key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getKey</b>(the)
					
					</div>
					<div class="description">
						Get key for given label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String / Number}</span> <b>the</b>
									
								</dt>
								<dd>key label or id</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>hasCertificate</b>(labelOrIdOrKey)
					
					</div>
					<div class="description">
						Check if key has a certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number/Key}</span> <b>labelOrIdOrKey</b>
									
								</dt>
								<dd>the certificate label, id or key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true of a certificate is present</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>hasKey</b>(the)
					
					</div>
					<div class="description">
						Check if key with label exists
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String / Number}</span> <b>the</b>
									
								</dt>
								<dd>key label or id</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if key exists</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="importAESKey"> </a>
					<div class="fixedFont">
					
					
					<b>importAESKey</b>(label, keyblob, keysize, keyid)
					
					</div>
					<div class="description">
						Import an AES key blob
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyblob</b>
									
								</dt>
								<dd>the binary key in SmartCard-HSM format</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keysize</b>
									
								</dt>
								<dd>in bits</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyid</b>
									
								</dt>
								<dd>the PKCS#15 key id (CKA_ID)</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="importECCKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a>}</span>
					<b>importECCKey</b>(label, keyblob, keysize, keyid)
					
					</div>
					<div class="description">
						Import an ECC key blob
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyblob</b>
									
								</dt>
								<dd>the binary key in SmartCard-HSM format</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keysize</b>
									
								</dt>
								<dd>in bits</dd>
							
								<dt>
									<span class="light fixedFont">{Number/ByteString}</span> <b>keyid</b>
									
								</dt>
								<dd>the optional PKCS#15 key identifier.
Default value is the next free key id of the SmartCard-HSM.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="importKey"> </a>
					<div class="fixedFont">
					
					
					<b>importKey</b>(keywrap)
					
					</div>
					<div class="description">
						Import a key blob, meta data and certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keywrap</b>
									
								</dt>
								<dd>the binary key in SmartCard-HSM format</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="importRSAKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a>}</span>
					<b>importRSAKey</b>(label, keyblob, keysize, keyid)
					
					</div>
					<div class="description">
						Import a RSA key blob
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyblob</b>
									
								</dt>
								<dd>the binary key in SmartCard-HSM format</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keysize</b>
									
								</dt>
								<dd>in bits</dd>
							
								<dt>
									<span class="light fixedFont">{Number/ByteString}</span> <b>keyid</b>
									
								</dt>
								<dd>the optional PKCS#15 key identifier.
Default value is the next free key id of the SmartCard-HSM.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="storeCACertificate"> </a>
					<div class="fixedFont">
					
					
					<b>storeCACertificate</b>(label, cert)
					
					</div>
					<div class="description">
						Store CA certificate under given label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label under which the certificate shall be stored</dd>
							
								<dt>
									<span class="light fixedFont">{X509}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="storeEndEntityCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>storeEndEntityCertificate</b>(labelOrIdOrKey, cert)
					
					</div>
					<div class="description">
						Store certificate under given label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number/Key}</span> <b>labelOrIdOrKey</b>
									
								</dt>
								<dd>the label, id or object of the key for which the certificate should be stored</dd>
							
								<dt>
									<span class="light fixedFont">{X509}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - LinearEF</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class LinearEF
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing linear EFs
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_LinearEF.js.html">LinearEF.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class LinearEF.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/LinearEF.html#constructor">LinearEF</a></b>(the, records)
							</div>
							<div class="description">Creates a LinearEF</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class LinearEF.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/LinearEF.html#readRecord">readRecord</a></b>(apdu, recno, qualifier, length)
								</div>
								<div class="description">Reads a record from a linear EF</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>LinearEF</b>(the, records)
				</div>
				
				<div class="description">
					Creates a LinearEF
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/FCP.html">FCP</a>}</span>  <b>the</b>
								
							</dt>
								<dd>file control parameter</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString[]}</span>  <b>records</b>
								
							</dt>
								<dd>the array of records</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="readRecord"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>readRecord</b>(apdu, recno, qualifier, length)
					
					</div>
					<div class="description">
						Reads a record from a linear EF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU used for reading</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>recno</b>
									
								</dt>
								<dd>the record number</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>qualifier</b>
									
								</dt>
								<dd>the qualifier as encoded in bit b3 - b1 of P1</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>length</b>
									
								</dt>
								<dd>the length in bytes or 0 for all in short APDU or 65536 for all in extended APDUs</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the data read</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - ManagePKA</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class ManagePKA
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class providing support for public key authentication
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_ManagePKA.js.html">ManagePKA.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class ManagePKA.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/ManagePKA.html#constructor">ManagePKA</a></b>(sc, deviceId)
							</div>
							<div class="description">Manage Public Key Authentication</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class ManagePKA.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#canEnumeratePublicKeys">canEnumeratePublicKeys</a></b>()
								</div>
								<div class="description">Check if registered public keys can be enumerated</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#checkKeyStatus">checkKeyStatus</a></b>(chr)
								</div>
								<div class="description">Check status of public key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#describeStatus">describeStatus</a></b>()
								</div>
								<div class="description">Describe current status in human readable form</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#enumeratePublicKeys">enumeratePublicKeys</a></b>()
								</div>
								<div class="description">Enumerate names (CHR) or registered public keys</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#getAuthenticatedPublicKeys">getAuthenticatedPublicKeys</a></b>()
								</div>
								<div class="description">Get number of keys already authenticated in this session</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#getMissingPublicKeys">getMissingPublicKeys</a></b>()
								</div>
								<div class="description">Get number of public keys missing for complete setup</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#getNumberOfPublicKeys">getNumberOfPublicKeys</a></b>()
								</div>
								<div class="description">Get number of public keys (m)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#getRequiredPublicKeysForAuthentication">getRequiredPublicKeysForAuthentication</a></b>()
								</div>
								<div class="description">Get number of keys required for successfull authentication (n)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#isActive">isActive</a></b>()
								</div>
								<div class="description">Check if public key authentication is active for device</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#performAuthentication">performAuthentication</a></b>(srcsc, key)
								</div>
								<div class="description">Perform authentication with source SmartCard-HSM and key on that device</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/ManagePKA.html#registerPublicKey">registerPublicKey</a></b>(pk, devcert, dicacert, replace)
								</div>
								<div class="description">Validate and register public key</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>ManagePKA</b>(sc, deviceId)
				</div>
				
				<div class="description">
					Manage Public Key Authentication
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/SmartCardHSM.html">SmartCardHSM</a>}</span>  <b>sc</b>
								
							</dt>
								<dd>the SmartCard-HSM used as target for PKA</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>deviceId</b>
								
							</dt>
								<dd>the device id as returned by getCHR().getBytes() for the device certificate</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="canEnumeratePublicKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>canEnumeratePublicKeys</b>()
					
					</div>
					<div class="description">
						Check if registered public keys can be enumerated
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if enumeration is supported</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="checkKeyStatus"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>checkKeyStatus</b>(chr)
					
					</div>
					<div class="description">
						Check status of public key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference under which the public key is registered</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>ManagePKA.KEY_PRESENT if key is registered in SmartCard-HSM, ManagePKA.KEY_NOT_FOUND if not.
        ManagePKA.KEY_ALREADY_AUTHENTICATED is returned if the public key has already been authenticated</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="describeStatus"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>describeStatus</b>()
					
					</div>
					<div class="description">
						Describe current status in human readable form
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the status</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="enumeratePublicKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>enumeratePublicKeys</b>()
					
					</div>
					<div class="description">
						Enumerate names (CHR) or registered public keys
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>Object with property chr containing the PublicKeyReference and with property
        status containing ManagePKA.KEY_PRESENT if a key is registered at that slot,
        ManagePKA.KEY_NOT_FOUND if not. ManagePKA.KEY_ALREADY_AUTHENTICATED is returned
        if the public key has already been authenticated.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getAuthenticatedPublicKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getAuthenticatedPublicKeys</b>()
					
					</div>
					<div class="description">
						Get number of keys already authenticated in this session
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the number of keys already authenticated in this session</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getMissingPublicKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getMissingPublicKeys</b>()
					
					</div>
					<div class="description">
						Get number of public keys missing for complete setup
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the number of public keys missing for complete setup</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getNumberOfPublicKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getNumberOfPublicKeys</b>()
					
					</div>
					<div class="description">
						Get number of public keys (m)
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the number of public keys (m)</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRequiredPublicKeysForAuthentication"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getRequiredPublicKeysForAuthentication</b>()
					
					</div>
					<div class="description">
						Get number of keys required for successfull authentication (n)
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the number of keys required for successfull authentication (n)</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isActive"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isActive</b>()
					
					</div>
					<div class="description">
						Check if public key authentication is active for device
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if supported and active</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performAuthentication"> </a>
					<div class="fixedFont">
					
					
					<b>performAuthentication</b>(srcsc, key)
					
					</div>
					<div class="description">
						Perform authentication with source SmartCard-HSM and key on that device
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/SmartCardHSM.html">SmartCardHSM</a>}</span> <b>srcsc</b>
									
								</dt>
								<dd>the SmartCard-HSM containing the private key for authentication</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the private key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="registerPublicKey"> </a>
					<div class="fixedFont">
					
					
					<b>registerPublicKey</b>(pk, devcert, dicacert, replace)
					
					</div>
					<div class="description">
						Validate and register public key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>pk</b>
									
								</dt>
								<dd>public key in CSR format from card</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>devcert</b>
									
								</dt>
								<dd>device certificate</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>dicacert</b>
									
								</dt>
								<dd>device issuer certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>replace</b>
									
								</dt>
								<dd>the id of the key to be replaced (0-based) or undefined</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - P11CVCertificateStore</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class P11CVCertificateStore
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				CV certificate store with PKCS#11 as secure key store
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_P11CVCertificateStore.js.html">P11CVCertificateStore.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class P11CVCertificateStore.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/P11CVCertificateStore.html#constructor">P11CVCertificateStore</a></b>(daof, p11session)
							</div>
							<div class="description">Create a CV certificate store using a PKCS#11 device as secure key store</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class P11CVCertificateStore.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">P11CVCertificateStore.<b><a href="../symbols/P11CVCertificateStore.html#.determineCurve">determineCurve</a></b>(key)
								</div>
								<div class="description">Determine curve from key parameter</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/P11CVCertificateStore.html#generateKeyPair">generateKeyPair</a></b>(path, chr, algo, prk, puk)
								</div>
								<div class="description">Generate key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/P11CVCertificateStore.html#getCrypto">getCrypto</a></b>()
								</div>
								<div class="description">Get crypto object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/P11CVCertificateStore.html#getPrivateKey">getPrivateKey</a></b>(path, chr)
								</div>
								<div class="description">Get a private key in the certificate store.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">P11CVCertificateStore.<b><a href="../symbols/P11CVCertificateStore.html#.path2label">path2label</a></b>(path, chr)
								</div>
								<div class="description">Transform path and certificate holder into a label</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>P11CVCertificateStore</b>(daof, p11session)
				</div>
				
				<div class="description">
					Create a CV certificate store using a PKCS#11 device as secure key store
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{DAOFactory}</span>  <b>daof</b>
								
							</dt>
								<dd>the factory that can create data access objects for persistent information</dd>
						
							<dt>
								<span class="light fixedFont">{PKCS11Session}</span>  <b>p11session</b>
								
							</dt>
								<dd>logged in PKCS#11 session with device</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name=".determineCurve"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">P11CVCertificateStore.</span><b>determineCurve</b>(key)
					
					</div>
					<div class="description">
						Determine curve from key parameter
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the curve OID</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateKeyPair"> </a>
					<div class="fixedFont">
					
					
					<b>generateKeyPair</b>(path, chr, algo, prk, puk)
					
					</div>
					<div class="description">
						Generate key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key pair</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>algo</b>
									
								</dt>
								<dd>the key generation algorithm (Crypto.EC or Crypto.RSA)</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>prk</b>
									
								</dt>
								<dd>the private key template</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key template</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getCrypto"> </a>
					<div class="fixedFont">
					
					<span class="light">{HSMCrypto}</span>
					<b>getCrypto</b>()
					
					</div>
					<div class="description">
						Get crypto object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the HSMCrypto object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPrivateKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getPrivateKey</b>(path, chr)
					
					</div>
					<div class="description">
						Get a private key in the certificate store. Overrides method in CVCertificateStore.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the public key reference for this key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".path2label"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">P11CVCertificateStore.</span><b>path2label</b>(path, chr)
					
					</div>
					<div class="description">
						Transform path and certificate holder into a label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the path</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder reference</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key label</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - PACE</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class PACE
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				This class implements the PACE protocol
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_PACE.js.html">PACE.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class PACE.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/PACE.html#constructor">PACE</a></b>(crypto, algo, domainparam, version)
							</div>
							<div class="description">Create a PACE protocol object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class PACE.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#calculateAuthenticationToken">calculateAuthenticationToken</a></b>()
								</div>
								<div class="description">Calculate the authentication token over the public key received from
the other side</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#decryptNonce">decryptNonce</a></b>(nonce)
								</div>
								<div class="description">Decrypt and store nonce using PACE key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#deriveKey">deriveKey</a></b>(input, counter, the)
								</div>
								<div class="description">Derive key from input parameter, counter and optional nonce</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">PACE.<b><a href="../symbols/PACE.html#.encodePublicKey">encodePublicKey</a></b>(oid, key, withDP)
								</div>
								<div class="description">Encode an ECC public key in the format defined by the EAC 2.0 specification</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#generateEphemeralKeyPair">generateEphemeralKeyPair</a></b>(domainParameter)
								</div>
								<div class="description">Generate ephemeral ECC key pair.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#getEncryptedNonce">getEncryptedNonce</a></b>()
								</div>
								<div class="description">Generate nonce and encrypt using PACE key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#getEphemeralPublicKey">getEphemeralPublicKey</a></b>()
								</div>
								<div class="description">Returns the ephemeral public key based on the new domain parameter</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#getMappingData">getMappingData</a></b>()
								</div>
								<div class="description">Generates and returns the mapping data for this instance</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#getSymmetricAlgorithm">getSymmetricAlgorithm</a></b>()
								</div>
								<div class="description">Return algorithm type</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#hasMapping">hasMapping</a></b>()
								</div>
								<div class="description">Returns true, if the mapping has been performed.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#hasNonce">hasNonce</a></b>()
								</div>
								<div class="description">Returns true, if the nonce is known.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">PACE.<b><a href="../symbols/PACE.html#.keyToString">keyToString</a></b>(the)
								</div>
								<div class="description">Describe key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#performKeyAgreement">performKeyAgreement</a></b>(publicKey)
								</div>
								<div class="description">Performs the mapping operation with mapping data from the other side</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#performMapping">performMapping</a></b>(mappingData)
								</div>
								<div class="description">Performs the mapping operation with mapping data from the other side</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#setPACEKey">setPACEKey</a></b>(key)
								</div>
								<div class="description">Set the PACE key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#setPassword">setPassword</a></b>(pwd)
								</div>
								<div class="description">Set the password and derive the PACE key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">PACE.<b><a href="../symbols/PACE.html#.stripLeadingZeros">stripLeadingZeros</a></b>(value)
								</div>
								<div class="description">Strips leading zeros of a ByteString</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#toString">toString</a></b>()
								</div>
								<div class="description">Returns a human readable presentation of the current pace state.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACE.html#verifyAuthenticationToken">verifyAuthenticationToken</a></b>(the)
								</div>
								<div class="description">Calculate and verify the authentication token over the public key received from
the other side</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>PACE</b>(crypto, algo, domainparam, version)
				</div>
				
				<div class="description">
					Create a PACE protocol object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>algo</b>
								
							</dt>
								<dd>the algorithm OID</dd>
						
							<dt>
								<span class="light fixedFont">{Key}</span>  <b>domainparam</b>
								
							</dt>
								<dd>the key object holding ECC domain parameter</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>version</b>
								
							</dt>
								<dd>protocol version (1 or 2)</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="calculateAuthenticationToken"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>calculateAuthenticationToken</b>()
					
					</div>
					<div class="description">
						Calculate the authentication token over the public key received from
the other side
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the MAC over the authentication data</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="decryptNonce"> </a>
					<div class="fixedFont">
					
					
					<b>decryptNonce</b>(nonce)
					
					</div>
					<div class="description">
						Decrypt and store nonce using PACE key.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>nonce</b>
									
								</dt>
								<dd>the encrypted nonce</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deriveKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>deriveKey</b>(input, counter, the)
					
					</div>
					<div class="description">
						Derive key from input parameter, counter and optional nonce
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>input</b>
									
								</dt>
								<dd>the first part of the hash input</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>counter</b>
									
								</dt>
								<dd>the counter value</dd>
							
								<dt>
									<span class="light fixedFont">{nonce}</span> <b>the</b>
									
								</dt>
								<dd>optional nonce inserted between the input and the counter</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".encodePublicKey"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">PACE.</span><b>encodePublicKey</b>(oid, key, withDP)
					
					</div>
					<div class="description">
						Encode an ECC public key in the format defined by the EAC 2.0 specification
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>oid</b>
									
								</dt>
								<dd>the object identifier to encode</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the EC public key</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>withDP</b>
									
								</dt>
								<dd>true to encode domain parameter as well</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the ASN1 encoded public key object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateEphemeralKeyPair"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>generateEphemeralKeyPair</b>(domainParameter)
					
					</div>
					<div class="description">
						Generate ephemeral ECC key pair.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>domainParameter</b>
									
								</dt>
								<dd>the domain parameter for the key pair</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the ephemeral public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getEncryptedNonce"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getEncryptedNonce</b>()
					
					</div>
					<div class="description">
						Generate nonce and encrypt using PACE key.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encrypted nonce</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getEphemeralPublicKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getEphemeralPublicKey</b>()
					
					</div>
					<div class="description">
						Returns the ephemeral public key based on the new domain parameter
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getMappingData"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getMappingData</b>()
					
					</div>
					<div class="description">
						Generates and returns the mapping data for this instance
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the mapping data</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSymmetricAlgorithm"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getSymmetricAlgorithm</b>()
					
					</div>
					<div class="description">
						Return algorithm type
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>Either Key.DES or Key.AES</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasMapping"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>hasMapping</b>()
					
					</div>
					<div class="description">
						Returns true, if the mapping has been performed.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the mapping has been performed</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasNonce"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>hasNonce</b>()
					
					</div>
					<div class="description">
						Returns true, if the nonce is known.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the nonce is known</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".keyToString"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">PACE.</span><b>keyToString</b>(the)
					
					</div>
					<div class="description">
						Describe key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>the</b>
									
								</dt>
								<dd>key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the string describing the key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="performKeyAgreement"> </a>
					<div class="fixedFont">
					
					
					<b>performKeyAgreement</b>(publicKey)
					
					</div>
					<div class="description">
						Performs the mapping operation with mapping data from the other side
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>publicKey</b>
									
								</dt>
								<dd>the public key in encoded format</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="performMapping"> </a>
					<div class="fixedFont">
					
					
					<b>performMapping</b>(mappingData)
					
					</div>
					<div class="description">
						Performs the mapping operation with mapping data from the other side
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>mappingData</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setPACEKey"> </a>
					<div class="fixedFont">
					
					
					<b>setPACEKey</b>(key)
					
					</div>
					<div class="description">
						Set the PACE key.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>key</b>
									
								</dt>
								<dd>the PACE key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the PACE key.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setPassword"> </a>
					<div class="fixedFont">
					
					
					<b>setPassword</b>(pwd)
					
					</div>
					<div class="description">
						Set the password and derive the PACE key.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>pwd</b>
									
								</dt>
								<dd>the PACE password (Hash Value for MRZ and ASCII string for others)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the PACE key.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".stripLeadingZeros"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">PACE.</span><b>stripLeadingZeros</b>(value)
					
					</div>
					<div class="description">
						Strips leading zeros of a ByteString
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>the ByteString value</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the stripped ByteString object, may be an empty ByteString</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Returns a human readable presentation of the current pace state.
return {String} the object information
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="verifyAuthenticationToken"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>verifyAuthenticationToken</b>(the)
					
					</div>
					<div class="description">
						Calculate and verify the authentication token over the public key received from
the other side
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>MAC over the authentication data</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the MAC is valid</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - PACEDomainParameterInfo</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class PACEDomainParameterInfo
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>This class encodes and decodes PACEDomainParameterInfo objects.</p>
<p>The class implements the following ASN.1 syntax:</p>
<pre>
  PACEDomainParameterInfo ::= SEQUENCE {
  	protocol OBJECT IDENTIFIER(id-PACE-DH | id-PACE-ECDH),
  	domainParameter AlgorithmIdentifier,
  	parameterId INTEGER OPTIONAL
  }
</pre>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_PACE.js.html">PACE.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class PACEDomainParameterInfo.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/PACEDomainParameterInfo.html#constructor">PACEDomainParameterInfo</a></b>(the)
							</div>
							<div class="description">Create a PACEDomainParameterInfo object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class PACEDomainParameterInfo.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACEDomainParameterInfo.html#toTLV">toTLV</a></b>()
								</div>
								<div class="description">Convert object to TLV structure</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>PACEDomainParameterInfo</b>(the)
				</div>
				
				<div class="description">
					Create a PACEDomainParameterInfo object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ASN1}</span>  <b>the</b>
								
							</dt>
								<dd>optional tlv structure to initialize the object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="toTLV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>toTLV</b>()
					
					</div>
					<div class="description">
						Convert object to TLV structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV structure</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - PACEInfo</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class PACEInfo
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>This class encodes and decodes PACEInfo objects.</p>
<p>The class implements the following ASN.1 syntax:</p>
<pre>
PACEInfo ::= SEQUENCE {
		protocol	OBJECT IDENTIFIER,
		version INTEGER, -- MUST be 1 or 2
		parameterId INTEGER OPTIONAL
}
</pre>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_PACE.js.html">PACE.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class PACEInfo.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/PACEInfo.html#constructor">PACEInfo</a></b>(the)
							</div>
							<div class="description">Create a PACEInfo object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class PACEInfo.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PACEInfo.html#toTLV">toTLV</a></b>()
								</div>
								<div class="description">Convert object to TLV structure</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>PACEInfo</b>(the)
				</div>
				
				<div class="description">
					Create a PACEInfo object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ASN1}</span>  <b>the</b>
								
							</dt>
								<dd>optional tlv structure to initialize the object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="toTLV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>toTLV</b>()
					
					</div>
					<div class="description">
						Convert object to TLV structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV structure</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - PKCS10Generator</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class PKCS10Generator
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a PKCS#10 certificate request
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/x509_PKCS10Generator.js.html">PKCS10Generator.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class PKCS10Generator.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/PKCS10Generator.html#constructor">PKCS10Generator</a></b>(crypto)
							</div>
							<div class="description">Create a PKCS#10 certificate request</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class PKCS10Generator.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#addBasicConstraintsExtension">addBasicConstraintsExtension</a></b>(cA, pathLenConstraint)
								</div>
								<div class="description">Adds the BasicConstraints extension.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#addExtendedKeyUsageExtension">addExtendedKeyUsageExtension</a></b>(the)
								</div>
								<div class="description">Adds extended key usages</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#addExtension">addExtension</a></b>(extnID, the)
								</div>
								<div class="description">Adds an extension to the certificate

<p>The structure is defined as:</p>
<pre>
   Extension  ::=  SEQUENCE  {
       extnID      OBJECT IDENTIFIER,
       extnValue   OCTET STRING
                   -- contains the DER encoding of an ASN.1 value
                   -- corresponding to the extension type identified
                   -- by extnID
       }
</pre></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#addKeyUsageExtension">addKeyUsageExtension</a></b>(the)
								</div>
								<div class="description">Adds the key usage extension.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#generateCertificationRequest">generateCertificationRequest</a></b>(privateKey)
								</div>
								<div class="description">Generates the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#getAttributes">getAttributes</a></b>()
								</div>
								<div class="description">Gets the attributes as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#getExtensions">getExtensions</a></b>()
								</div>
								<div class="description">Gets the extension attribute as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#getSubject">getSubject</a></b>()
								</div>
								<div class="description">Gets the subject name as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#getSubjectPublicKeyInfo">getSubjectPublicKeyInfo</a></b>()
								</div>
								<div class="description">Gets the subject's public key as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#getTbsRequest">getTbsRequest</a></b>()
								</div>
								<div class="description">Gets the part of the request that will be signed</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#reset">reset</a></b>()
								</div>
								<div class="description">Resets all internal state variables.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#setPublicKey">setPublicKey</a></b>(publicKey)
								</div>
								<div class="description">Sets the subjects public key

<p>The methods accepts ECC and RSA Public Keys.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#setSignatureAlgorithm">setSignatureAlgorithm</a></b>(alg)
								</div>
								<div class="description">Sets the signature algorithm.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PKCS10Generator.html#setSubject">setSubject</a></b>(subject)
								</div>
								<div class="description">Sets the subject name.</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>PKCS10Generator</b>(crypto)
				</div>
				
				<div class="description">
					Create a PKCS#10 certificate request
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider to use for signing operations</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="addBasicConstraintsExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addBasicConstraintsExtension</b>(cA, pathLenConstraint)
					
					</div>
					<div class="description">
						Adds the BasicConstraints extension.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>cA</b>
									
								</dt>
								<dd>the certificate belongs to a CA</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>pathLenConstraint</b>
									
								</dt>
								<dd>the maximum number of subordinate CA certificates</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addExtendedKeyUsageExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addExtendedKeyUsageExtension</b>(the)
					
					</div>
					<div class="description">
						Adds extended key usages
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String[]}</span> <b>the</b>
									
								</dt>
								<dd>list of extended key usage object identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addExtension</b>(extnID, the)
					
					</div>
					<div class="description">
						Adds an extension to the certificate

<p>The structure is defined as:</p>
<pre>
   Extension  ::=  SEQUENCE  {
       extnID      OBJECT IDENTIFIER,
       extnValue   OCTET STRING
                   -- contains the DER encoding of an ASN.1 value
                   -- corresponding to the extension type identified
                   -- by extnID
       }
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>extnID</b>
									
								</dt>
								<dd>the extensions object identifier</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>extension value as ByteString</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addKeyUsageExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addKeyUsageExtension</b>(the)
					
					</div>
					<div class="description">
						Adds the key usage extension.

<p>The following flags are defined:</p>
<pre>
PKCS10Generator.digitalSignature = 0x0080;
PKCS10Generator.nonRepudiation   = 0x0040;
PKCS10Generator.keyEncipherment  = 0x0020;
PKCS10Generator.dataEncipherment = 0x0010;
PKCS10Generator.keyAgreement     = 0x0008;
PKCS10Generator.keyCertSign      = 0x0004;
PKCS10Generator.cRLSign          = 0x0002;
PKCS10Generator.encipherOnly     = 0x0001;
PKCS10Generator.decipherOnly     = 0x8000;
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>the</b>
									
								</dt>
								<dd>key usage flags as combination of the flags defined above.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="generateCertificationRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>generateCertificationRequest</b>(privateKey)
					
					</div>
					<div class="description">
						Generates the certificate.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>privateKey</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the generated certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getAttributes"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getAttributes</b>()
					
					</div>
					<div class="description">
						Gets the attributes as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the request attributes</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getExtensions"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getExtensions</b>()
					
					</div>
					<div class="description">
						Gets the extension attribute as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate extensions</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSubject"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getSubject</b>()
					
					</div>
					<div class="description">
						Gets the subject name as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the issuer RDNSequence</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSubjectPublicKeyInfo"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getSubjectPublicKeyInfo</b>()
					
					</div>
					<div class="description">
						Gets the subject's public key as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the subject's public key info</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getTbsRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getTbsRequest</b>()
					
					</div>
					<div class="description">
						Gets the part of the request that will be signed
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TBSCertificate part</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="reset"> </a>
					<div class="fixedFont">
					
					
					<b>reset</b>()
					
					</div>
					<div class="description">
						Resets all internal state variables.
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="setPublicKey"> </a>
					<div class="fixedFont">
					
					
					<b>setPublicKey</b>(publicKey)
					
					</div>
					<div class="description">
						Sets the subjects public key

<p>The methods accepts ECC and RSA Public Keys.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>publicKey</b>
									
								</dt>
								<dd>the subjects public key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSignatureAlgorithm"> </a>
					<div class="fixedFont">
					
					
					<b>setSignatureAlgorithm</b>(alg)
					
					</div>
					<div class="description">
						Sets the signature algorithm. Currently only Crypto.RSA is supported
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>alg</b>
									
								</dt>
								<dd>the signature algorithm, only Crypto.RSA supported</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSubject"> </a>
					<div class="fixedFont">
					
					
					<b>setSubject</b>(subject)
					
					</div>
					<div class="description">
						Sets the subject name.

<p>The subject name must be a JavaScript object containing the properties:</p>
<ul>
 <li>C - the country</li>
 <li>O - the organization</li>
 <li>OU - the organization unit</li>
 <li>CN - the common name</li>
</ul>
<p>Example:</p>
<pre>
	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>subject</b>
									
								</dt>
								<dd>the subject name</dd>
							
							</dl>
						
						
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">See:</dt>
							
								<dd><a href="../symbols/PKIXCommon.html#.encodeName">PKIXCommon.encodeName</a>()

The subject can also be passed an already encoded ASN.1 structure</dd>
							
							</dl>
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - PaperKeyEncoding</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class PaperKeyEncoding
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Encoder / Decoder for PaperKeys
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_PaperKeyEncoding.js.html">PaperKeyEncoding.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class PaperKeyEncoding.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/PaperKeyEncoding.html#constructor">PaperKeyEncoding</a></b>()
							</div>
							<div class="description">Create a PaperKey encoder/decoder</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class PaperKeyEncoding.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PaperKeyEncoding.html#decodeSegment">decodeSegment</a></b>(segment, str)
								</div>
								<div class="description">Decode an 8 byte segment from 12 input characters.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">PaperKeyEncoding.<b><a href="../symbols/PaperKeyEncoding.html#.dumpKey">dumpKey</a></b>(data)
								</div>
								<div class="description">Dump a key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PaperKeyEncoding.html#encodeSegment">encodeSegment</a></b>(segment, data)
								</div>
								<div class="description">Encode an 8 byte segment in human readable form.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">PaperKeyEncoding.<b><a href="../symbols/PaperKeyEncoding.html#.formatSegment">formatSegment</a></b>(str)
								</div>
								<div class="description">Format a segment by splitting the input after each 4 characters and inserting " - "</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>PaperKeyEncoding</b>()
				</div>
				
				<div class="description">
					Create a PaperKey encoder/decoder
					
				</div>
				
				
				
				
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="decodeSegment"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>decodeSegment</b>(segment, str)
					
					</div>
					<div class="description">
						Decode an 8 byte segment from 12 input characters.

Characters not in the alphabet are ignored.

Throws GPError with GPError.INVALID_LENGTH if the input does not contain at least 12 usable characters.
Throws GPError with GPError.SIGNATURE_FAILED if the check digit based validation fails.
Throws GPError with GPError.INVALID_DATA if the segment number does not match the expected value.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>segment</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>str</b>
									
								</dt>
								<dd>the user input</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the 8 byte segment</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".dumpKey"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">PaperKeyEncoding.</span><b>dumpKey</b>(data)
					
					</div>
					<div class="description">
						Dump a key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the key value (length must be a multiple of 8)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the formatted key with 3 groups of 4 digits per line</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="encodeSegment"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>encodeSegment</b>(segment, data)
					
					</div>
					<div class="description">
						Encode an 8 byte segment in human readable form.

Based on BASE64 encoding with visually confusable characters replaced.

I is replaced by !
O is replaced by *
l is replaced by %

A LUHN-64 character is appended.

A segment identifier is encoded in 2 bit at the end of the encoded 64 bit string.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>segment</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded string</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".formatSegment"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">PaperKeyEncoding.</span><b>formatSegment</b>(str)
					
					</div>
					<div class="description">
						Format a segment by splitting the input after each 4 characters and inserting " - "
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>str</b>
									
								</dt>
								<dd>the unformatted string</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the formatted string</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - PublicKeyReference</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class PublicKeyReference
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>A class that implements a public key reference to be used as CAR and CHR in
       card verifiable certificates (CVC).</p>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_PublicKeyReference.js.html">PublicKeyReference.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class PublicKeyReference.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/PublicKeyReference.html#constructor">PublicKeyReference</a></b>()
							</div>
							<div class="description"><p>Create a public key reference (CAR/CHR) from binary representation or individual fields.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class PublicKeyReference.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PublicKeyReference.html#equals">equals</a></b>(other)
								</div>
								<div class="description">Returns true if other public key reference equals this public key reference</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PublicKeyReference.html#getBytes">getBytes</a></b>()
								</div>
								<div class="description">Returns the binary encoded public key reference</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PublicKeyReference.html#getCountryCode">getCountryCode</a></b>()
								</div>
								<div class="description">Returns the 2 character country code</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PublicKeyReference.html#getHolder">getHolder</a></b>()
								</div>
								<div class="description">Returns the certificate holder name, which is the concatenation of the country code and the
holder mnemonic.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PublicKeyReference.html#getMnemonic">getMnemonic</a></b>()
								</div>
								<div class="description">Returns the variable length holder mnemonic</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PublicKeyReference.html#getSequenceNo">getSequenceNo</a></b>()
								</div>
								<div class="description">Returns the 5 character sequence number</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">PublicKeyReference.<b><a href="../symbols/PublicKeyReference.html#.test">test</a></b>()
								</div>
								<div class="description">Test function</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/PublicKeyReference.html#toString">toString</a></b>()
								</div>
								<div class="description">Returns the string representation of the public key reference</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>PublicKeyReference</b>()
				</div>
				
				<div class="description">
					<p>Create a public key reference (CAR/CHR) from binary representation or individual fields.</p>

<p>Use one of the following signatures:</p>

<ul>
 <li>PublicKeyReference(ByteString value) - binary public key reference</li>
 <li>PublicKeyReference(String value) - string encoded public key reference</li>
 <li>PublicKeyReference(String countryCode, String holderMnemonic, String sequenceNumber) - string encoded public key reference</li>
</ul>
<p>@see PublicKeyReference.test() for an example.</P>
					
				</div>
				
				
				
				
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="equals"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>equals</b>(other)
					
					</div>
					<div class="description">
						Returns true if other public key reference equals this public key reference
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>other</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if equals</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getBytes"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getBytes</b>()
					
					</div>
					<div class="description">
						Returns the binary encoded public key reference
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the public key reference</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCountryCode"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getCountryCode</b>()
					
					</div>
					<div class="description">
						Returns the 2 character country code
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the country code</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getHolder"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getHolder</b>()
					
					</div>
					<div class="description">
						Returns the certificate holder name, which is the concatenation of the country code and the
holder mnemonic.
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the holder name</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getMnemonic"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getMnemonic</b>()
					
					</div>
					<div class="description">
						Returns the variable length holder mnemonic
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the holder mnemonic</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSequenceNo"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getSequenceNo</b>()
					
					</div>
					<div class="description">
						Returns the 5 character sequence number
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the sequence number</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".test"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">PublicKeyReference.</span><b>test</b>()
					
					</div>
					<div class="description">
						Test function
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>toString</b>()
					
					</div>
					<div class="description">
						Returns the string representation of the public key reference
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the public key reference</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - RAMClient</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class RAMClient
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/ram_RAMClient.js.html">RAMClient.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class RAMClient.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/RAMClient.html#constructor">RAMClient</a></b>(card, url, session)
							</div>
							<div class="description">Create a client instance for attaching a card to a server via the RAMOverHTTP procotol</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class RAMClient.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">RAMClient.<b><a href="../symbols/RAMClient.html#.asSignedInteger">asSignedInteger</a></b>(val)
								</div>
								<div class="description">Prepend a 0, if the encoded integer is interpreted as negative value otherwise</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RAMClient.html#close">close</a></b>(id, msg)
								</div>
								<div class="description">Close connection, e.g.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RAMClient.html#setAPDULimit">setAPDULimit</a></b>(aPDULimit, forceFailSW)
								</div>
								<div class="description">Set a limiting number of APDUs

This is helpful for testing to intercept processing after a certain number
of APDUs (Default 100000).</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RAMClient.html#setHTTPLimit">setHTTPLimit</a></b>(aPDULimit, forceFailSW)
								</div>
								<div class="description">Set a limiting number of HTTP roundtrips

This is helpful for testing to intercept processing after a certain number
of HTTP roundtrips (Default 100000).</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RAMClient.html#setMaxAPDUSize">setMaxAPDUSize</a></b>(maxCAPDUSize, maxRAPDUSize)
								</div>
								<div class="description">Set a maximum command and response APDU size</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RAMClient.html#setNotificationListener">setNotificationListener</a></b>(the)
								</div>
								<div class="description">Set a notification listener.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RAMClient.html#update">update</a></b>()
								</div>
								<div class="description">Perform update operation</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>RAMClient</b>(card, url, session)
				</div>
				
				<div class="description">
					Create a client instance for attaching a card to a server via the RAMOverHTTP procotol
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Card}</span>  <b>card</b>
								
							</dt>
								<dd>the card instance to attach</dd>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>url</b>
								
							</dt>
								<dd>the URL to connect to</dd>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>session</b>
								
							</dt>
								<dd>the session cookie</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name=".asSignedInteger"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">RAMClient.</span><b>asSignedInteger</b>(val)
					
					</div>
					<div class="description">
						Prepend a 0, if the encoded integer is interpreted as negative value otherwise
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>val</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="close"> </a>
					<div class="fixedFont">
					
					
					<b>close</b>(id, msg)
					
					</div>
					<div class="description">
						Close connection, e.g. after exception on the client side
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>id</b>
									
								</dt>
								<dd>the message id</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>msg</b>
									
								</dt>
								<dd>the closing message</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setAPDULimit"> </a>
					<div class="fixedFont">
					
					
					<b>setAPDULimit</b>(aPDULimit, forceFailSW)
					
					</div>
					<div class="description">
						Set a limiting number of APDUs

This is helpful for testing to intercept processing after a certain number
of APDUs (Default 100000).
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>aPDULimit</b>
									
								</dt>
								<dd>the maximum number of APDU processing in update()</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>forceFailSW</b>
									
								</dt>
								<dd>the final SW1/SW2</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setHTTPLimit"> </a>
					<div class="fixedFont">
					
					
					<b>setHTTPLimit</b>(aPDULimit, forceFailSW)
					
					</div>
					<div class="description">
						Set a limiting number of HTTP roundtrips

This is helpful for testing to intercept processing after a certain number
of HTTP roundtrips (Default 100000).
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>aPDULimit</b>
									
								</dt>
								<dd>the maximum number of APDU processing in update()</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>forceFailSW</b>
									
								</dt>
								<dd>the final SW1/SW2</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setMaxAPDUSize"> </a>
					<div class="fixedFont">
					
					
					<b>setMaxAPDUSize</b>(maxCAPDUSize, maxRAPDUSize)
					
					</div>
					<div class="description">
						Set a maximum command and response APDU size
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>maxCAPDUSize</b>
									
								</dt>
								<dd>The maximum number of bytes in the command APDU</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>maxRAPDUSize</b>
									
								</dt>
								<dd>The maximum number of bytes in the response APDU</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setNotificationListener"> </a>
					<div class="fixedFont">
					
					
					<b>setNotificationListener</b>(the)
					
					</div>
					<div class="description">
						Set a notification listener.

The listener object must implement a notificationReceived() method that
receives the three parameter id, msg and ttc.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>the</b>
									
								</dt>
								<dd>listener object implementing notificationReceived()</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="update"> </a>
					<div class="fixedFont">
					
					
					<b>update</b>()
					
					</div>
					<div class="description">
						Perform update operation
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - RestrictedIdentificationDomainParameterInfo</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class RestrictedIdentificationDomainParameterInfo
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>This class encodes and decodes RestrictedIdentificationDomainParameterInfo objects.</p>
<p>The class implements the following ASN.1 syntax:</p>
<pre>
	RestrictedIdentificationDomainParameterInfo ::= SEQUENCE {
		protocol OBJECT IDENTIFIER(id-CA-DH | id-CA-ECDH),
		domainParameter AlgorithmIdentifier,
}
</pre>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_RestrictedIdentification.js.html">RestrictedIdentification.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class RestrictedIdentificationDomainParameterInfo.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html#constructor">RestrictedIdentificationDomainParameterInfo</a></b>(the)
							</div>
							<div class="description">Create a RestrictedIdentificationDomainParameterInfo object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class RestrictedIdentificationDomainParameterInfo.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html#toTLV">toTLV</a></b>()
								</div>
								<div class="description">Convert object to TLV structure</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>RestrictedIdentificationDomainParameterInfo</b>(the)
				</div>
				
				<div class="description">
					Create a RestrictedIdentificationDomainParameterInfo object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ASN1}</span>  <b>the</b>
								
							</dt>
								<dd>optional tlv structure to initialize the object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="toTLV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>toTLV</b>()
					
					</div>
					<div class="description">
						Convert object to TLV structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV structure</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - RestrictedIdentificationInfo</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class RestrictedIdentificationInfo
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				<p>This class encodes and decodes RestrictedIdentificationInfo objects.</p>
<p>The class implements the following ASN.1 syntax:</p>
<pre>
RestrictedIdentificationInfo ::= SEQUENCE {
  protocol  OBJECT IDENTIFIER(
            id-RI-DH-SHA-1  |
            id-RI-DH-SHA-224  |
            id-RI-DH-SHA-256  |
            id-RI-DH-SHA-384 |
            id-RI-DH-SHA-512 |
            id-RI-ECDH-SHA-1  |
            id-RI-ECDH-SHA-224  |
            id-RI-ECDH-SHA-256 |
            id-RI-ECDH-SHA-384 |
            id-RI-ECDH-SHA-512),
  params    ProtocolParams,
  maxKeyLen INTEGER OPTIONAL
}
ProtocolParams ::= SEQUENCE {
  version         INTEGER, -- MUST be 1
  keyId           INTEGER,
  authorizedOnly  BOOLEAN
}
</pre>
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/eac_RestrictedIdentification.js.html">RestrictedIdentification.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class RestrictedIdentificationInfo.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/RestrictedIdentificationInfo.html#constructor">RestrictedIdentificationInfo</a></b>(the)
							</div>
							<div class="description">Create a RestrictedIdentificationInfo object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class RestrictedIdentificationInfo.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/RestrictedIdentificationInfo.html#toTLV">toTLV</a></b>()
								</div>
								<div class="description">Convert object to TLV structure</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>RestrictedIdentificationInfo</b>(the)
				</div>
				
				<div class="description">
					Create a RestrictedIdentificationInfo object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ASN1}</span>  <b>the</b>
								
							</dt>
								<dd>optional tlv structure to initialize the object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="toTLV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>toTLV</b>()
					
					</div>
					<div class="description">
						Convert object to TLV structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TLV structure</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SecureChannelHandler</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SecureChannelHandler
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a secure messaging channel
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_SecureChannelHandler.js.html">SecureChannelHandler.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SecureChannelHandler.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SecureChannelHandler.html#constructor">SecureChannelHandler</a></b>(crypto)
							</div>
							<div class="description">Create a secure channel</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SecureChannelHandler.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#getIV">getIV</a></b>()
								</div>
								<div class="description">Return an initialisation vector based on the defined policy</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#setEncKey">setEncKey</a></b>(key)
								</div>
								<div class="description">Sets the key used for encryption</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#setEncSendSequenceCounter">setEncSendSequenceCounter</a></b>(ssc)
								</div>
								<div class="description">Set the send sequence counter for encryption calculation</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#setMacKey">setMacKey</a></b>(key)
								</div>
								<div class="description">Sets the key used for message authentication</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#setMACSendSequenceCounter">setMACSendSequenceCounter</a></b>(ssc)
								</div>
								<div class="description">Set the send sequence counter for MAC calculation</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#setSendSequenceCounterPolicy">setSendSequenceCounterPolicy</a></b>(policy)
								</div>
								<div class="description">Sets the policy for handling send sequence counters

See IsoSecureChannel for details</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#unwrap">unwrap</a></b>(apdu)
								</div>
								<div class="description">Unwrap a secure messaging APDU recovering the content</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureChannelHandler.html#wrap">wrap</a></b>(apdu)
								</div>
								<div class="description">Wrap an APDU for secure messaging</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SecureChannelHandler</b>(crypto)
				</div>
				
				<div class="description">
					Create a secure channel
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="getIV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getIV</b>()
					
					</div>
					<div class="description">
						Return an initialisation vector based on the defined policy
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the IV</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setEncKey"> </a>
					<div class="fixedFont">
					
					
					<b>setEncKey</b>(key)
					
					</div>
					<div class="description">
						Sets the key used for encryption
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the encryption key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setEncSendSequenceCounter"> </a>
					<div class="fixedFont">
					
					
					<b>setEncSendSequenceCounter</b>(ssc)
					
					</div>
					<div class="description">
						Set the send sequence counter for encryption calculation
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>ssc</b>
									
								</dt>
								<dd>the send sequence counter</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setMacKey"> </a>
					<div class="fixedFont">
					
					
					<b>setMacKey</b>(key)
					
					</div>
					<div class="description">
						Sets the key used for message authentication
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the message authentication key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setMACSendSequenceCounter"> </a>
					<div class="fixedFont">
					
					
					<b>setMACSendSequenceCounter</b>(ssc)
					
					</div>
					<div class="description">
						Set the send sequence counter for MAC calculation
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>ssc</b>
									
								</dt>
								<dd>the send sequence counter</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSendSequenceCounterPolicy"> </a>
					<div class="fixedFont">
					
					
					<b>setSendSequenceCounterPolicy</b>(policy)
					
					</div>
					<div class="description">
						Sets the policy for handling send sequence counters

See IsoSecureChannel for details
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>policy</b>
									
								</dt>
								<dd>one of IsoSecureChannel.SSC_DEFAULT_POLICY, SSC_SYNC_POLICY or SSC_SYNC_ENC_POLICY</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="unwrap"> </a>
					<div class="fixedFont">
					
					
					<b>unwrap</b>(apdu)
					
					</div>
					<div class="description">
						Unwrap a secure messaging APDU recovering the content
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU to unwrap</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="wrap"> </a>
					<div class="fixedFont">
					
					
					<b>wrap</b>(apdu)
					
					</div>
					<div class="description">
						Wrap an APDU for secure messaging
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU to wrap</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SecureMessagingCommandAPDUDecoder</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SecureMessagingCommandAPDUDecoder
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Decoder for a secure messaging APDU
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_SecureMessagingCommandAPDUDecoder.js.html">SecureMessagingCommandAPDUDecoder.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SecureMessagingCommandAPDUDecoder.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SecureMessagingCommandAPDUDecoder.html#constructor">SecureMessagingCommandAPDUDecoder</a></b>(channel, apdu)
							</div>
							<div class="description">Creates a decoder for a single secure messaging command APDU</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SecureMessagingCommandAPDUDecoder.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureMessagingCommandAPDUDecoder.html#buildMACInput">buildMACInput</a></b>()
								</div>
								<div class="description">Build the MAC input block</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureMessagingCommandAPDUDecoder.html#decryptBody">decryptBody</a></b>(key)
								</div>
								<div class="description">Decrypt the body of a secure messaging APDU</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureMessagingCommandAPDUDecoder.html#getLe">getLe</a></b>()
								</div>
								<div class="description">Return value of optional Le element with tag '97'</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SecureMessagingCommandAPDUDecoder.<b><a href="../symbols/SecureMessagingCommandAPDUDecoder.html#.pad">pad</a></b>(buffer, blocksize)
								</div>
								<div class="description">Applies ISO padding to the input buffer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SecureMessagingCommandAPDUDecoder.<b><a href="../symbols/SecureMessagingCommandAPDUDecoder.html#.removePadding">removePadding</a></b>(buffer)
								</div>
								<div class="description">Removes the ISO padding</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecureMessagingCommandAPDUDecoder.html#verifyMAC">verifyMAC</a></b>()
								</div>
								<div class="description">Verify the message authentication code (MAC)</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SecureMessagingCommandAPDUDecoder</b>(channel, apdu)
				</div>
				
				<div class="description">
					Creates a decoder for a single secure messaging command APDU
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{SecureChannel}</span>  <b>channel</b>
								
							</dt>
								<dd>the secure channel object</dd>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span>  <b>apdu</b>
								
							</dt>
								<dd>the secure messaging APDU</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="buildMACInput"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>buildMACInput</b>()
					
					</div>
					<div class="description">
						Build the MAC input block
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the MAC calculation input block</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="decryptBody"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>decryptBody</b>(key)
					
					</div>
					<div class="description">
						Decrypt the body of a secure messaging APDU
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the encryption key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the plain body or undefined if no encrypted body</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getLe"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getLe</b>()
					
					</div>
					<div class="description">
						Return value of optional Le element with tag '97'
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the value of the Le element</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".pad"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteBuffer}</span>
					<span class="light">SecureMessagingCommandAPDUDecoder.</span><b>pad</b>(buffer, blocksize)
					
					</div>
					<div class="description">
						Applies ISO padding to the input buffer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteBuffer}</span> <b>buffer</b>
									
								</dt>
								<dd>the input buffer</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>blocksize</b>
									
								</dt>
								<dd>the block size</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the buffer argument</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".removePadding"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">SecureMessagingCommandAPDUDecoder.</span><b>removePadding</b>(buffer)
					
					</div>
					<div class="description">
						Removes the ISO padding
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>buffer</b>
									
								</dt>
								<dd>the input with with padding</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the buffer without padding</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyMAC"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>verifyMAC</b>()
					
					</div>
					<div class="description">
						Verify the message authentication code (MAC)
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the MAC is valid</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SecurityEnvironment</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SecurityEnvironment
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a security environment for cryptographic operations.
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_SecurityEnvironment.js.html">SecurityEnvironment.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SecurityEnvironment.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SecurityEnvironment.html#constructor">SecurityEnvironment</a></b>()
							</div>
							<div class="description">Creates a security environment container that collects cryptographic reference templates (CRT)</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SecurityEnvironment.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecurityEnvironment.html#add">add</a></b>(tlv)
								</div>
								<div class="description">Adds a CRT identified by it's tag</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecurityEnvironment.html#addElements">addElements</a></b>(tname, tlv)
								</div>
								<div class="description">Adds CRT elements to a named template.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SecurityEnvironment.<b><a href="../symbols/SecurityEnvironment.html#.decorateCRT">decorateCRT</a></b>(asn1)
								</div>
								<div class="description">Decorates a tlv object from the CRT</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SecurityEnvironment.html#toString">toString</a></b>()
								</div>
								<div class="description">Return textual representation of security environment container</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SecurityEnvironment</b>()
				</div>
				
				<div class="description">
					Creates a security environment container that collects cryptographic reference templates (CRT)
					
				</div>
				
				
				
				
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="add"> </a>
					<div class="fixedFont">
					
					
					<b>add</b>(tlv)
					
					</div>
					<div class="description">
						Adds a CRT identified by it's tag
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>tlv</b>
									
								</dt>
								<dd>the tlv object</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addElements"> </a>
					<div class="fixedFont">
					
					
					<b>addElements</b>(tname, tlv)
					
					</div>
					<div class="description">
						Adds CRT elements to a named template.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>tname</b>
									
								</dt>
								<dd>the CRT name one of AT, KAT, HT, CCT, DST or CT</dd>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>tlv</b>
									
								</dt>
								<dd>the tlv object containing the CRT elements</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".decorateCRT"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">SecurityEnvironment.</span><b>decorateCRT</b>(asn1)
					
					</div>
					<div class="description">
						Decorates a tlv object from the CRT
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>asn1</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Return textual representation of security environment container
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SignatureKey</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SignatureKey
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing signature keys
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_SignatureKey.js.html">SignatureKey.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SignatureKey.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SignatureKey.html#constructor">SignatureKey</a></b>(name, id)
							</div>
							<div class="description">Create a signature key object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SignatureKey.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SignatureKey.html#getType">getType</a></b>()
								</div>
								<div class="description">Override from base class</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SignatureKey.html#terminate">terminate</a></b>()
								</div>
								<div class="description">Terminate authentication object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SignatureKey.html#toString">toString</a></b>()
								</div>
								<div class="description">Convert object to a human readable string</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SignatureKey</b>(name, id)
				</div>
				
				<div class="description">
					Create a signature key object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{String}</span>  <b>name</b>
								
							</dt>
								<dd>the human readable name of the object</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>id</b>
								
							</dt>
								<dd>the key id</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="getType"> </a>
					<div class="fixedFont">
					
					
					<b>getType</b>()
					
					</div>
					<div class="description">
						Override from base class
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="terminate"> </a>
					<div class="fixedFont">
					
					
					<b>terminate</b>()
					
					</div>
					<div class="description">
						Terminate authentication object
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Convert object to a human readable string
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SmartCardHSM</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SmartCardHSM
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing support for SmartCard-HSM access
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_SmartCardHSM.js.html">SmartCardHSM.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SmartCardHSM.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SmartCardHSM.html#constructor">SmartCardHSM</a></b>(card)
							</div>
							<div class="description">Create a SmartCard-HSM access object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SmartCardHSM.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#addCACertificateToMap">addCACertificateToMap</a></b>(cert, id, label)
								</div>
								<div class="description">Add a new CA certificate to the map</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#addKeyToMap">addKeyToMap</a></b>(key)
								</div>
								<div class="description">Add a new key to the map of keys</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#associateXKEKKeyDomain">associateXKEKKeyDomain</a></b>(keyDomain, keyDomainUID, keyDomainAssociation, keyDomainAssociation)
								</div>
								<div class="description">Associate XKEK Key Domain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildCertDescription">buildCertDescription</a></b>(commonObjectFlags, label, pubKey, certFID)
								</div>
								<div class="description">Create a PKCS#15 certificate description</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildDataObjectDescription">buildDataObjectDescription</a></b>(label, commonObjectFlags, fid, applicationName)
								</div>
								<div class="description">Create a PKCS#15 data object description</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildGAKPwithECC">buildGAKPwithECC</a></b>(innerCAR, algo, chr, dp, outerCAR, privateKey)
								</div>
								<div class="description">Build input for Generate Asymmetric Key Pair command for generating an ECC key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildGAKPwithRSA">buildGAKPwithRSA</a></b>(innerCAR, algo, chr, keysize, outerCAR)
								</div>
								<div class="description">Build input for Generate Asymmetric Key Pair command for generating a RSA key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildKeyDomainDescription">buildKeyDomainDescription</a></b>(label)
								</div>
								<div class="description">Create a PKCS#15 like KeyDomain description</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildPrkDforECC">buildPrkDforECC</a></b>(keyid, label, keysize)
								</div>
								<div class="description">Create a PKCS#15 PrivateECCKey description</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildPrkDforRSA">buildPrkDforRSA</a></b>(keyid, label, modulussize)
								</div>
								<div class="description">Create a PKCS#15 PrivateRSAKey description</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.buildSKDforAES">buildSKDforAES</a></b>(keyid, label, keysize)
								</div>
								<div class="description">Create a PKCS#15 SecretKey description</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#changeInitializationCode">changeInitializationCode</a></b>(initializationCode, newInitializationCode)
								</div>
								<div class="description">Change InitializationCode</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#changeUserPIN">changeUserPIN</a></b>(currentPIN, newPIN)
								</div>
								<div class="description">Change User PIN</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#createXKEKKeyDomain">createXKEKKeyDomain</a></b>(keyDomain, keyDomainMembership, keyDomainMembership)
								</div>
								<div class="description">Create XKEK Key Domain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#decipher">decipher</a></b>(keyid, algo, data)
								</div>
								<div class="description">Decipher cryptogram or agree shared secret using Diffie-Hellman</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.decodeAlgorithmList">decodeAlgorithmList</a></b>(list)
								</div>
								<div class="description">Decode algorithm list and return string array with names</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#deleteDataObject">deleteDataObject</a></b>(label)
								</div>
								<div class="description">Delete the data object references by the label.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#deleteFile">deleteFile</a></b>(fid)
								</div>
								<div class="description">Delete file system object (EF or key)</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#deleteKEK">deleteKEK</a></b>(keyDomain)
								</div>
								<div class="description">Delete the key encryption key in a key domain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#deleteKeyDomain">deleteKeyDomain</a></b>(keyDomain)
								</div>
								<div class="description">Delete the empty key domain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#deriveSymmetricKey">deriveSymmetricKey</a></b>(id, algo, derivationParam)
								</div>
								<div class="description">Derive Symmetric Key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#deriveXKEK">deriveXKEK</a></b>(keyDomain, derivationParam, derivationParam)
								</div>
								<div class="description">Derive XKEK</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#determineFreeCAId">determineFreeCAId</a></b>()
								</div>
								<div class="description">Determine an unused CA certificate identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.determineFreeFid">determineFreeFid</a></b>(the, the)
								</div>
								<div class="description">Determine a free FID in the list of FID for the given prefix.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.determineFreeId">determineFreeId</a></b>(the, the)
								</div>
								<div class="description">Determine a free id in the list of FID for the given prefix.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#determineFreeKeyId">determineFreeKeyId</a></b>()
								</div>
								<div class="description">Determine an unused key identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.disableUTSRCA">disableUTSRCA</a></b>()
								</div>
								<div class="description">Remove Root Certificate of Development SRCA

Always call this on a productive system</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.dumpKeyData">dumpKeyData</a></b>(keydata)
								</div>
								<div class="description">Dump C-Data of Generate Asymmetric Key Pair command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.encodeAlgorithmList">encodeAlgorithmList</a></b>(list)
								</div>
								<div class="description">Parse and encode the algorithm list containing either algorithm ids or names</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#enumerateCACertificates">enumerateCACertificates</a></b>()
								</div>
								<div class="description">Enumerate CA certificates</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#enumerateDataObjects">enumerateDataObjects</a></b>()
								</div>
								<div class="description">Enumerate Data Objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#enumerateKeys">enumerateKeys</a></b>()
								</div>
								<div class="description">Enumerate key objects in the SmartCard-HSM and build the map of keys</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#enumerateObjects">enumerateObjects</a></b>()
								</div>
								<div class="description">Enumerate Objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#generateAsymmetricKeyPair">generateAsymmetricKeyPair</a></b>(newkid, signkid, keydata)
								</div>
								<div class="description">Generate an asymmetric key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#generateRandom">generateRandom</a></b>(length)
								</div>
								<div class="description">Generate random data</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#generateSymmetricKey">generateSymmetricKey</a></b>(newkid, algo, keydata)
								</div>
								<div class="description">Generate a symmetric key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getCACertificate">getCACertificate</a></b>(label)
								</div>
								<div class="description">Return CA certificate with label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getCrypto">getCrypto</a></b>()
								</div>
								<div class="description">Get crypto object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getDataObjectFileIdentifier">getDataObjectFileIdentifier</a></b>(label)
								</div>
								<div class="description">Return the file identifier containing the data object.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getFreeMemory">getFreeMemory</a></b>()
								</div>
								<div class="description">Determine free memory</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getKey">getKey</a></b>(labelOrId)
								</div>
								<div class="description">Get a key reference object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getKeyDomainLabel">getKeyDomainLabel</a></b>(keyDomain)
								</div>
								<div class="description">Return the label associated with the key domain or undefined.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getKeyIds">getKeyIds</a></b>()
								</div>
								<div class="description">Get key ids</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getKeys">getKeys</a></b>()
								</div>
								<div class="description">Return a list of key objects</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getLabel">getLabel</a></b>()
								</div>
								<div class="description">Get Token Label</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getNativeCardService">getNativeCardService</a></b>()
								</div>
								<div class="description">Return the native OCF SmartCardHSMCardService</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getProvisioningURL">getProvisioningURL</a></b>()
								</div>
								<div class="description">Get ProvisioningURL</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getTokenManagementKeyKCV">getTokenManagementKeyKCV</a></b>()
								</div>
								<div class="description">Get Key Check Value of Token Management Key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getTokenManagementKeySalt">getTokenManagementKeySalt</a></b>()
								</div>
								<div class="description">Get salt for SO-PIN derivation using  the Token Management Key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#getVersionInfo">getVersionInfo</a></b>()
								</div>
								<div class="description">Return a string describing the SmartCard-HSM Version</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#hasDataObject">hasDataObject</a></b>(label)
								</div>
								<div class="description">Check if the data object is present</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#hasFile">hasFile</a></b>(fid)
								</div>
								<div class="description">Try selecting the file to see if is present</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#importDataObject">importDataObject</a></b>(label, privObj, data)
								</div>
								<div class="description">Import a data object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#importEncryptedKeyShare">importEncryptedKeyShare</a></b>(keyshare, password, keyDomain)
								</div>
								<div class="description">Decrypt and import a DKEK share</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#importKeyShare">importKeyShare</a></b>(keyDomain, keyshare)
								</div>
								<div class="description">Import DKEK share or query status</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#initDevice">initDevice</a></b>(options, initialPIN, initializationCode, retryCounterInitial, keyshares)
								</div>
								<div class="description">Initialize device and clear all keys and files</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#isInitialized">isInitialized</a></b>()
								</div>
								<div class="description">Return true is SmartCard-HSM is initialized</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#isPINResetEnabled">isPINResetEnabled</a></b>()
								</div>
								<div class="description">Check if the RESET RETRY COUNTER command can reset the PIN</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#isResetRetryCounterEnabled">isResetRetryCounterEnabled</a></b>()
								</div>
								<div class="description">Check if the RESET RETRY COUNTER command is enabled</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#logout">logout</a></b>()
								</div>
								<div class="description">Logout</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#openSecureChannel">openSecureChannel</a></b>(crypto, devAuthPK)
								</div>
								<div class="description">Open a secure channel using device authentication</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.parseCertificateList">parseCertificateList</a></b>(a)
								</div>
								<div class="description">Parse list of CVC in a binary blob</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#parseKeyDomainStatus">parseKeyDomainStatus</a></b>(status)
								</div>
								<div class="description">Parse the key domain status returned from the device</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#queryInitializationCodeStatus">queryInitializationCodeStatus</a></b>()
								</div>
								<div class="description">Request Initialization Code Status</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#queryKeyDomainStatus">queryKeyDomainStatus</a></b>(keyDomain)
								</div>
								<div class="description">Query the status of the key domain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#queryPINStatus">queryPINStatus</a></b>(p2)
								</div>
								<div class="description">Request PIN Status Information</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#queryUserPINStatus">queryUserPINStatus</a></b>()
								</div>
								<div class="description">Request PIN Status Information</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#readBinary">readBinary</a></b>(fid, offset, length)
								</div>
								<div class="description">Read transparent EF referenced by file identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#selectFile">selectFile</a></b>(fid)
								</div>
								<div class="description">Select the file or key an return the FCP</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.setTrustedSRCACertificates">setTrustedSRCACertificates</a></b>(srcalist)
								</div>
								<div class="description">Set the list of trusted SRCA certificates</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#sign">sign</a></b>(keyid, algo, data)
								</div>
								<div class="description">Sign data using referenced key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.stripLeadingZeros">stripLeadingZeros</a></b>(value)
								</div>
								<div class="description">Strips leading zeros of a ByteString</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#unblockUserPIN">unblockUserPIN</a></b>(initializationCode, newPIN)
								</div>
								<div class="description">Unblock and set User PIN</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#unwrapAndReplaceKey">unwrapAndReplaceKey</a></b>(id, keyblob)
								</div>
								<div class="description">Replace symmetric key value encrypted under current key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#unwrapKey">unwrapKey</a></b>(id, keyblob)
								</div>
								<div class="description">Unwrap key with DKEK</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#updateBinary">updateBinary</a></b>(fid, offset, data)
								</div>
								<div class="description">Update transparent EF referenced by file identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#updateKey">updateKey</a></b>(key)
								</div>
								<div class="description">Update key attributes, in particular the use counter</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#validateCertificateChain">validateCertificateChain</a></b>(crypto)
								</div>
								<div class="description">Validate device certificate chain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">SmartCardHSM.<b><a href="../symbols/SmartCardHSM.html#.validateCertificateChain">validateCertificateChain</a></b>(crypto, devAutCert)
								</div>
								<div class="description">Validate device certificate chain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#verifyCertificate">verifyCertificate</a></b>(cvc)
								</div>
								<div class="description">Verify card verifiable certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#verifyUserPIN">verifyUserPIN</a></b>(userPIN)
								</div>
								<div class="description">Verify User PIN</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSM.html#wrapKey">wrapKey</a></b>(id)
								</div>
								<div class="description">Wrap key under DKEK</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SmartCardHSM</b>(card)
				</div>
				
				<div class="description">
					Create a SmartCard-HSM access object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Card}</span>  <b>card</b>
								
							</dt>
								<dd>the card object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="addCACertificateToMap"> </a>
					<div class="fixedFont">
					
					
					<b>addCACertificateToMap</b>(cert, id, label)
					
					</div>
					<div class="description">
						Add a new CA certificate to the map
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{X509}</span> <b>cert</b>
									
								</dt>
								<dd>the CA certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>id</b>
									
								</dt>
								<dd>the corresponding id</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the corresponding label</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addKeyToMap"> </a>
					<div class="fixedFont">
					
					
					<b>addKeyToMap</b>(key)
					
					</div>
					<div class="description">
						Add a new key to the map of keys
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{HSMKey}</span> <b>key</b>
									
								</dt>
								<dd>the HSM key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="associateXKEKKeyDomain"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>associateXKEKKeyDomain</b>(keyDomain, keyDomainUID, keyDomainAssociation, keyDomainAssociation)
					
					</div>
					<div class="description">
						Associate XKEK Key Domain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyDomainUID</b>
									
								</dt>
								<dd>a encoded TLV object with tag 51 containing the key domain uid of the associated domain</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyDomainAssociation</b>
									
								</dt>
								<dd>a encoded TLV object with tag 56 or 57</dd>
							
								<dt>
									<b>keyDomainAssociation</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildCertDescription"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">SmartCardHSM.</span><b>buildCertDescription</b>(commonObjectFlags, label, pubKey, certFID)
					
					</div>
					<div class="description">
						Create a PKCS#15 certificate description
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>commonObjectFlags</b>
									
								</dt>
								<dd>default value is '0640'</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>pubKey</b>
									
								</dt>
								<dd>the public key</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>certFID</b>
									
								</dt>
								<dd>the file identifier of the certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate description</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildDataObjectDescription"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">SmartCardHSM.</span><b>buildDataObjectDescription</b>(label, commonObjectFlags, fid, applicationName)
					
					</div>
					<div class="description">
						Create a PKCS#15 data object description
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>commonObjectFlags</b>
									
								</dt>
								<dd>default value is '0640'</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the file identifier of the data object</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>applicationName</b>
									
								</dt>
								<dd>the application name (Default "SmartCard-HSM")</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the Data Object Description</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildGAKPwithECC"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">SmartCardHSM.</span><b>buildGAKPwithECC</b>(innerCAR, algo, chr, dp, outerCAR, privateKey)
					
					</div>
					<div class="description">
						Build input for Generate Asymmetric Key Pair command for generating an ECC key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>innerCAR</b>
									
								</dt>
								<dd>the CA the request shall be directed to</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>algo</b>
									
								</dt>
								<dd>the public key algorithm</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder reference associated with this key</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>dp</b>
									
								</dt>
								<dd>the domain parameter for the key</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>outerCAR</b>
									
								</dt>
								<dd>the certificate holder reference of the public key for verifying the outer signature</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>privateKey</b>
									
								</dt>
								<dd>optional parameter to supply a private key value for import. This only works with the development version
             of the SmartCard-HSM.</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildGAKPwithRSA"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">SmartCardHSM.</span><b>buildGAKPwithRSA</b>(innerCAR, algo, chr, keysize, outerCAR)
					
					</div>
					<div class="description">
						Build input for Generate Asymmetric Key Pair command for generating a RSA key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>innerCAR</b>
									
								</dt>
								<dd>the CA the request shall be directed to</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>algo</b>
									
								</dt>
								<dd>the public key algorithm</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder reference associated with this key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keysize</b>
									
								</dt>
								<dd>the module size in bits (1024, 1536 or 2048)</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>outerCAR</b>
									
								</dt>
								<dd>the certificate holder reference of the public key for verifying the outer signature</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildKeyDomainDescription"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">SmartCardHSM.</span><b>buildKeyDomainDescription</b>(label)
					
					</div>
					<div class="description">
						Create a PKCS#15 like KeyDomain description
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key domain label</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the KeyDomain description</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildPrkDforECC"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">SmartCardHSM.</span><b>buildPrkDforECC</b>(keyid, label, keysize)
					
					</div>
					<div class="description">
						Create a PKCS#15 PrivateECCKey description
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number/ByteString}</span> <b>keyid</b>
									
								</dt>
								<dd>the key identifier</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<b>keysize</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the PrivateECCKey description</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildPrkDforRSA"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">SmartCardHSM.</span><b>buildPrkDforRSA</b>(keyid, label, modulussize)
					
					</div>
					<div class="description">
						Create a PKCS#15 PrivateRSAKey description
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number/ByteString}</span> <b>keyid</b>
									
								</dt>
								<dd>the key identifier</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>modulussize</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the PrivateECCKey description</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".buildSKDforAES"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ASN1}</span>
					<span class="light">SmartCardHSM.</span><b>buildSKDforAES</b>(keyid, label, keysize)
					
					</div>
					<div class="description">
						Create a PKCS#15 SecretKey description
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number/ByteString}</span> <b>keyid</b>
									
								</dt>
								<dd>the key identifier</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the key label</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keysize</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the secret key description</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="changeInitializationCode"> </a>
					<div class="fixedFont">
					
					
					<b>changeInitializationCode</b>(initializationCode, newInitializationCode)
					
					</div>
					<div class="description">
						Change InitializationCode
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>initializationCode</b>
									
								</dt>
								<dd>current initialization code</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>newInitializationCode</b>
									
								</dt>
								<dd>new initialization code</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="changeUserPIN"> </a>
					<div class="fixedFont">
					
					
					<b>changeUserPIN</b>(currentPIN, newPIN)
					
					</div>
					<div class="description">
						Change User PIN
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>currentPIN</b>
									
								</dt>
								<dd>current user PIN value</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>newPIN</b>
									
								</dt>
								<dd>new user PIN value</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="createXKEKKeyDomain"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>createXKEKKeyDomain</b>(keyDomain, keyDomainMembership, keyDomainMembership)
					
					</div>
					<div class="description">
						Create XKEK Key Domain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyDomainMembership</b>
									
								</dt>
								<dd>either a 64 byte signature (old format) or a encoded TLV object with tag 54 or 55</dd>
							
								<dt>
									<b>keyDomainMembership</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="decipher"> </a>
					<div class="fixedFont">
					
					
					<b>decipher</b>(keyid, algo, data)
					
					</div>
					<div class="description">
						Decipher cryptogram or agree shared secret using Diffie-Hellman
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyid</b>
									
								</dt>
								<dd>the key identifier</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>algo</b>
									
								</dt>
								<dd>the algorithm identifier</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the the cryptogram or concatenation of x || y of ECC public key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the plain output</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".decodeAlgorithmList"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String[]}</span>
					<span class="light">SmartCardHSM.</span><b>decodeAlgorithmList</b>(list)
					
					</div>
					<div class="description">
						Decode algorithm list and return string array with names
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>list</b>
									
								</dt>
								<dd>the algorithm list, e.g. as returned in the key meta data</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of algorithm names</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deleteDataObject"> </a>
					<div class="fixedFont">
					
					
					<b>deleteDataObject</b>(label)
					
					</div>
					<div class="description">
						Delete the data object references by the label.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label of the data object</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deleteFile"> </a>
					<div class="fixedFont">
					
					
					<b>deleteFile</b>(fid)
					
					</div>
					<div class="description">
						Delete file system object (EF or key)
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the two byte file object identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deleteKEK"> </a>
					<div class="fixedFont">
					
					
					<b>deleteKEK</b>(keyDomain)
					
					</div>
					<div class="description">
						Delete the key encryption key in a key domain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the number of the key domain</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deleteKeyDomain"> </a>
					<div class="fixedFont">
					
					
					<b>deleteKeyDomain</b>(keyDomain)
					
					</div>
					<div class="description">
						Delete the empty key domain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the number of the key domain</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="deriveSymmetricKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>deriveSymmetricKey</b>(id, algo, derivationParam)
					
					</div>
					<div class="description">
						Derive Symmetric Key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>id</b>
									
								</dt>
								<dd>key id</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>algo</b>
									
								</dt>
								<dd>algorithm id (one of ALG_CBC_ENC, ALG_CBC_DEC, ALG_CMAC or ALG_DERIVE_SP800_56C)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>derivationParam</b>
									
								</dt>
								<dd>the derivation parameter</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>derived key value</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deriveXKEK"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>deriveXKEK</b>(keyDomain, derivationParam, derivationParam)
					
					</div>
					<div class="description">
						Derive XKEK
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>derivationParam</b>
									
								</dt>
								<dd></dd>
							
								<dt>
									<b>derivationParam</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="determineFreeCAId"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>determineFreeCAId</b>()
					
					</div>
					<div class="description">
						Determine an unused CA certificate identifier
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a free CA certificate identifier or -1 if all identifier in use</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".determineFreeFid"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">SmartCardHSM.</span><b>determineFreeFid</b>(the, the)
					
					</div>
					<div class="description">
						Determine a free FID in the list of FID for the given prefix.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>the</b>
									
								</dt>
								<dd>prefix to look at</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>list of FID as returned from the device</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a free two byte file identifier (FID) for the given prefix or null if range is exhausted.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".determineFreeId"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Number}</span>
					<span class="light">SmartCardHSM.</span><b>determineFreeId</b>(the, the)
					
					</div>
					<div class="description">
						Determine a free id in the list of FID for the given prefix.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>the</b>
									
								</dt>
								<dd>prefix to look at</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>list of FID as returned from the device</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a free id for the given prefix or -1 if range is exhausted.</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="determineFreeKeyId"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>determineFreeKeyId</b>()
					
					</div>
					<div class="description">
						Determine an unused key identifier
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a free key identifier or -1 if all key identifier in use</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".disableUTSRCA"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">SmartCardHSM.</span><b>disableUTSRCA</b>()
					
					</div>
					<div class="description">
						Remove Root Certificate of Development SRCA

Always call this on a productive system
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name=".dumpKeyData"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">SmartCardHSM.</span><b>dumpKeyData</b>(keydata)
					
					</div>
					<div class="description">
						Dump C-Data of Generate Asymmetric Key Pair command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keydata</b>
									
								</dt>
								<dd>the content of C-Data</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".encodeAlgorithmList"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">SmartCardHSM.</span><b>encodeAlgorithmList</b>(list)
					
					</div>
					<div class="description">
						Parse and encode the algorithm list containing either algorithm ids or names
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String | String[]}</span> <b>list</b>
									
								</dt>
								<dd>the list of algorithms</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the algorithm list</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="enumerateCACertificates"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>enumerateCACertificates</b>()
					
					</div>
					<div class="description">
						Enumerate CA certificates
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of certificate labels</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="enumerateDataObjects"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>enumerateDataObjects</b>()
					
					</div>
					<div class="description">
						Enumerate Data Objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of data object labels</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="enumerateKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>enumerateKeys</b>()
					
					</div>
					<div class="description">
						Enumerate key objects in the SmartCard-HSM and build the map of keys
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of key labels</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="enumerateObjects"> </a>
					<div class="fixedFont">
					
					
					<b>enumerateObjects</b>()
					
					</div>
					<div class="description">
						Enumerate Objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the enumeration</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateAsymmetricKeyPair"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>generateAsymmetricKeyPair</b>(newkid, signkid, keydata)
					
					</div>
					<div class="description">
						Generate an asymmetric key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>newkid</b>
									
								</dt>
								<dd>key identifier for new key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>signkid</b>
									
								</dt>
								<dd>key identifier for signing the new public key</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keydata</b>
									
								</dt>
								<dd>the key data template</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate signing request containing the new public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateRandom"> </a>
					<div class="fixedFont">
					
					
					<b>generateRandom</b>(length)
					
					</div>
					<div class="description">
						Generate random data
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>length</b>
									
								</dt>
								<dd>number of bytes</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the random bytes</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateSymmetricKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>generateSymmetricKey</b>(newkid, algo, keydata)
					
					</div>
					<div class="description">
						Generate a symmetric key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>newkid</b>
									
								</dt>
								<dd>key identifier for new key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>algo</b>
									
								</dt>
								<dd>key generation algorithm</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keydata</b>
									
								</dt>
								<dd>the key data template</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd></dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCACertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCACertificate</b>(label)
					
					</div>
					<div class="description">
						Return CA certificate with label
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the certificate label</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCrypto"> </a>
					<div class="fixedFont">
					
					<span class="light">{HSMCrypto}</span>
					<b>getCrypto</b>()
					
					</div>
					<div class="description">
						Get crypto object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the HSMCrypto object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getDataObjectFileIdentifier"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getDataObjectFileIdentifier</b>(label)
					
					</div>
					<div class="description">
						Return the file identifier containing the data object.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label.</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the two byte file identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getFreeMemory"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getFreeMemory</b>()
					
					</div>
					<div class="description">
						Determine free memory
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the number of available bytes (this values is capped to 32767 on JCOP 2.4.1)</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getKey</b>(labelOrId)
					
					</div>
					<div class="description">
						Get a key reference object
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number/ByteString}</span> <b>labelOrId</b>
									
								</dt>
								<dd>label or id of key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getKeyDomainLabel"> </a>
					<div class="fixedFont">
					
					
					<b>getKeyDomainLabel</b>(keyDomain)
					
					</div>
					<div class="description">
						Return the label associated with the key domain or undefined.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the number of the key domain</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getKeyIds"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number[]}</span>
					<b>getKeyIds</b>()
					
					</div>
					<div class="description">
						Get key ids
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a list of key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getKeys"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a>[]}</span>
					<b>getKeys</b>()
					
					</div>
					<div class="description">
						Return a list of key objects
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of keys</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getLabel"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getLabel</b>()
					
					</div>
					<div class="description">
						Get Token Label
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the token label from CIAInfo</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getNativeCardService"> </a>
					<div class="fixedFont">
					
					<span class="light">{de.cardcontact.opencard.service.smartcardhsm.SmartCardHSMCardService}</span>
					<b>getNativeCardService</b>()
					
					</div>
					<div class="description">
						Return the native OCF SmartCardHSMCardService
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the OCF SmartCardHSMCardService</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getProvisioningURL"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getProvisioningURL</b>()
					
					</div>
					<div class="description">
						Get ProvisioningURL
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the configured ProvisioningURL or undefined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getTokenManagementKeyKCV"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getTokenManagementKeyKCV</b>()
					
					</div>
					<div class="description">
						Get Key Check Value of Token Management Key
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the configured KCV of the Token Management Key or undefined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getTokenManagementKeySalt"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getTokenManagementKeySalt</b>()
					
					</div>
					<div class="description">
						Get salt for SO-PIN derivation using  the Token Management Key
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the configured salt</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getVersionInfo"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getVersionInfo</b>()
					
					</div>
					<div class="description">
						Return a string describing the SmartCard-HSM Version
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the version string</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasDataObject"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>hasDataObject</b>(label)
					
					</div>
					<div class="description">
						Check if the data object is present
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if the data object exists</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="hasFile"> </a>
					<div class="fixedFont">
					
					
					<b>hasFile</b>(fid)
					
					</div>
					<div class="description">
						Try selecting the file to see if is present
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the two byte file object identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="importDataObject"> </a>
					<div class="fixedFont">
					
					
					<b>importDataObject</b>(label, privObj, data)
					
					</div>
					<div class="description">
						Import a data object
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the unique label to reference the new data object</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>privObj</b>
									
								</dt>
								<dd>true to store the data object with read protection</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the data blob to store</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="importEncryptedKeyShare"> </a>
					<div class="fixedFont">
					
					
					<b>importEncryptedKeyShare</b>(keyshare, password, keyDomain)
					
					</div>
					<div class="description">
						Decrypt and import a DKEK share
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyshare</b>
									
								</dt>
								<dd>the encrypted key share as read from the .pbe file</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>password</b>
									
								</dt>
								<dd>the password</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the number of the key domain</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="importKeyShare"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>importKeyShare</b>(keyDomain, keyshare)
					
					</div>
					<div class="description">
						Import DKEK share or query status
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the number of the key domain</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyshare</b>
									
								</dt>
								<dd>32 byte key share</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="initDevice"> </a>
					<div class="fixedFont">
					
					
					<b>initDevice</b>(options, initialPIN, initializationCode, retryCounterInitial, keyshares)
					
					</div>
					<div class="description">
						Initialize device and clear all keys and files
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>options</b>
									
								</dt>
								<dd>two byte option mask</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>initialPIN</b>
									
								</dt>
								<dd>initial user PIN value</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>initializationCode</b>
									
								</dt>
								<dd>secret code for device initialization (set during first use)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>retryCounterInitial</b>
									
								</dt>
								<dd>retry counter for user PIN</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyshares</b>
									
								</dt>
								<dd>number of device key encryption key shares (optional)</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="isInitialized"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>isInitialized</b>()
					
					</div>
					<div class="description">
						Return true is SmartCard-HSM is initialized
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if initialized</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isPINResetEnabled"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>isPINResetEnabled</b>()
					
					</div>
					<div class="description">
						Check if the RESET RETRY COUNTER command can reset the PIN
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if enable during initialization</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isResetRetryCounterEnabled"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>isResetRetryCounterEnabled</b>()
					
					</div>
					<div class="description">
						Check if the RESET RETRY COUNTER command is enabled
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if enable during initialization</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="logout"> </a>
					<div class="fixedFont">
					
					
					<b>logout</b>()
					
					</div>
					<div class="description">
						Logout
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="openSecureChannel"> </a>
					<div class="fixedFont">
					
					<span class="light">{ISOSecureChannel}</span>
					<b>openSecureChannel</b>(crypto, devAuthPK)
					
					</div>
					<div class="description">
						Open a secure channel using device authentication
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto provider to use</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>devAuthPK</b>
									
								</dt>
								<dd>the device authentication public key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>Key.AES</b>
									
								</dt>
								<dd>or Key.DES to request AES or DES secure messaging (Default probe)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the initialized secure channel</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parseCertificateList"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>[]}</span>
					<span class="light">SmartCardHSM.</span><b>parseCertificateList</b>(a)
					
					</div>
					<div class="description">
						Parse list of CVC in a binary blob
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>a</b>
									
								</dt>
								<dd>binary blob (e.g an EF) containing concatenated CVCs</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the list of CVCs</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="parseKeyDomainStatus"> </a>
					<div class="fixedFont">
					
					<span class="light">{object}</span>
					<b>parseKeyDomainStatus</b>(status)
					
					</div>
					<div class="description">
						Parse the key domain status returned from the device
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>status</b>
									
								</dt>
								<dd>the R-DATA from the MANAGE KEY DOMAIN command</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the decoded status Info</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="queryInitializationCodeStatus"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>queryInitializationCodeStatus</b>()
					
					</div>
					<div class="description">
						Request Initialization Code Status
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the status word SW1/SW2 returned by the device</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="queryKeyDomainStatus"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>queryKeyDomainStatus</b>(keyDomain)
					
					</div>
					<div class="description">
						Query the status of the key domain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the number of the key domain which will be queried, default is 0</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and for a XKEK key domain the key domain UID{ByteString}</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="queryPINStatus"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>queryPINStatus</b>(p2)
					
					</div>
					<div class="description">
						Request PIN Status Information
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>p2</b>
									
								</dt>
								<dd>the PIN object id</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the status word SW1/SW2 returned by the device</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="queryUserPINStatus"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>queryUserPINStatus</b>()
					
					</div>
					<div class="description">
						Request PIN Status Information
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the status word SW1/SW2 returned by the device</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="readBinary"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>readBinary</b>(fid, offset, length)
					
					</div>
					<div class="description">
						Read transparent EF referenced by file identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the two byte file identifier (optional - use currently selected EF if absent)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>offset</b>
									
								</dt>
								<dd>the offset into the EF (optional)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>length</b>
									
								</dt>
								<dd>the number of byte to read (optional)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the data read from the EF</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="selectFile"> </a>
					<div class="fixedFont">
					
					
					<b>selectFile</b>(fid)
					
					</div>
					<div class="description">
						Select the file or key an return the FCP
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the two byte file object identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".setTrustedSRCACertificates"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					
					<span class="light">SmartCardHSM.</span><b>setTrustedSRCACertificates</b>(srcalist)
					
					</div>
					<div class="description">
						Set the list of trusted SRCA certificates
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString[]}</span> <b>srcalist</b>
									
								</dt>
								<dd>the list of binary encoded SRCA certificates</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="sign"> </a>
					<div class="fixedFont">
					
					
					<b>sign</b>(keyid, algo, data)
					
					</div>
					<div class="description">
						Sign data using referenced key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyid</b>
									
								</dt>
								<dd>the key identifier for signing</dd>
							
								<dt>
									<span class="light fixedFont">{algo}</span> <b>algo</b>
									
								</dt>
								<dd>the algorithm identifier</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the data to be signed</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signature value</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".stripLeadingZeros"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{ByteString}</span>
					<span class="light">SmartCardHSM.</span><b>stripLeadingZeros</b>(value)
					
					</div>
					<div class="description">
						Strips leading zeros of a ByteString
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>value</b>
									
								</dt>
								<dd>the ByteString value</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the stripped ByteString object, may be an empty ByteString</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="unblockUserPIN"> </a>
					<div class="fixedFont">
					
					
					<b>unblockUserPIN</b>(initializationCode, newPIN)
					
					</div>
					<div class="description">
						Unblock and set User PIN
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>initializationCode</b>
									
								</dt>
								<dd>the initialization code</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>newPIN</b>
									
								</dt>
								<dd>new user PIN value (optional)</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="unwrapAndReplaceKey"> </a>
					<div class="fixedFont">
					
					
					<b>unwrapAndReplaceKey</b>(id, keyblob)
					
					</div>
					<div class="description">
						Replace symmetric key value encrypted under current key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>id</b>
									
								</dt>
								<dd>key id</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyblob</b>
									
								</dt>
								<dd>the wrapped key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="unwrapKey"> </a>
					<div class="fixedFont">
					
					
					<b>unwrapKey</b>(id, keyblob)
					
					</div>
					<div class="description">
						Unwrap key with DKEK
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>id</b>
									
								</dt>
								<dd>key id</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyblob</b>
									
								</dt>
								<dd>the wrapped key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="updateBinary"> </a>
					<div class="fixedFont">
					
					
					<b>updateBinary</b>(fid, offset, data)
					
					</div>
					<div class="description">
						Update transparent EF referenced by file identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>fid</b>
									
								</dt>
								<dd>the two byte file identifier</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>offset</b>
									
								</dt>
								<dd>the offset into the EF</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the data to write</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="updateKey"> </a>
					<div class="fixedFont">
					
					
					<b>updateKey</b>(key)
					
					</div>
					<div class="description">
						Update key attributes, in particular the use counter
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{HSMKey}</span> <b>key</b>
									
								</dt>
								<dd>the HSM key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="validateCertificateChain"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>validateCertificateChain</b>(crypto)
					
					</div>
					<div class="description">
						Validate device certificate chain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto provider to use</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the device authentication public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".validateCertificateChain"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Key}</span>
					<span class="light">SmartCardHSM.</span><b>validateCertificateChain</b>(crypto, devAutCert)
					
					</div>
					<div class="description">
						Validate device certificate chain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto provider to use</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>devAutCert</b>
									
								</dt>
								<dd>the device certificate chain read from EF.C_DevAut</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the device authentication public key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verifyCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>verifyCertificate</b>(cvc)
					
					</div>
					<div class="description">
						Verify card verifiable certificate
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cvc</b>
									
								</dt>
								<dd>the card verifiable certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="verifyUserPIN"> </a>
					<div class="fixedFont">
					
					
					<b>verifyUserPIN</b>(userPIN)
					
					</div>
					<div class="description">
						Verify User PIN
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>userPIN</b>
									
								</dt>
								<dd>user PIN value</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the status word SW1/SW2 returned by the device</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="wrapKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>wrapKey</b>(id)
					
					</div>
					<div class="description">
						Wrap key under DKEK
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>id</b>
									
								</dt>
								<dd>key id</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>key blob with encrypted key value</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SmartCardHSMCrypto</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SmartCardHSMCrypto
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Wrapper to provide Crypto interface to SmartCard-HSM
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_SmartCardHSM.js.html">SmartCardHSM.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SmartCardHSMCrypto.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SmartCardHSMCrypto.html#constructor">SmartCardHSMCrypto</a></b>(crypto)
							</div>
							<div class="description">Create crypto object implementing access to the SmartCard-HSM</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SmartCardHSMCrypto.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMCrypto.html#decrypt">decrypt</a></b>(key, mech, data, iv)
								</div>
								<div class="description">Decrypt a message using the defined mechanism and key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMCrypto.html#sign">sign</a></b>(key, mech, message)
								</div>
								<div class="description">Sign a message using the defined mechanism and key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMCrypto.html#verify">verify</a></b>(key, mech, message, signature)
								</div>
								<div class="description">Verify a message using the defined mechanism and key</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SmartCardHSMCrypto</b>(crypto)
				</div>
				
				<div class="description">
					Create crypto object implementing access to the SmartCard-HSM
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the backend crypto provider</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="decrypt"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>decrypt</b>(key, mech, data, iv)
					
					</div>
					<div class="description">
						Decrypt a message using the defined mechanism and key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{HSMKey}</span> <b>key</b>
									
								</dt>
								<dd>the private key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>mech</b>
									
								</dt>
								<dd>the mechanism (e.g. Crypto.RSA_PKCS1)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the cryptogram</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>iv</b>
									
								</dt>
								<dd>the initialization vector for symmetric ciphers</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the plain text</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="sign"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>sign</b>(key, mech, message)
					
					</div>
					<div class="description">
						Sign a message using the defined mechanism and key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{HSMKey}</span> <b>key</b>
									
								</dt>
								<dd>the private key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>mech</b>
									
								</dt>
								<dd>the mechanism (e.g. Crypto.ECDSA)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>message</b>
									
								</dt>
								<dd>the message to be signed</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signature</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="verify"> </a>
					<div class="fixedFont">
					
					<span class="light">{Boolean}</span>
					<b>verify</b>(key, mech, message, signature)
					
					</div>
					<div class="description">
						Verify a message using the defined mechanism and key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>key</b>
									
								</dt>
								<dd>the public key</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>mech</b>
									
								</dt>
								<dd>the mechanism (e.g. Crypto.ECDSA)</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>message</b>
									
								</dt>
								<dd>the message to be signed</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>signature</b>
									
								</dt>
								<dd>the signature to verify</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if signature is valid</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SmartCardHSMInitializer</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SmartCardHSMInitializer
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing the device initialization methods
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_SmartCardHSM.js.html">SmartCardHSM.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SmartCardHSMInitializer.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SmartCardHSMInitializer.html#constructor">SmartCardHSMInitializer</a></b>(card)
							</div>
							<div class="description">Initialize SmartCard-HSM</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SmartCardHSMInitializer.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#initialize">initialize</a></b>()
								</div>
								<div class="description">Perform Initialization</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setBioTemplate">setBioTemplate</a></b>(slot, aid, param)
								</div>
								<div class="description">Select the biometric matching server for a one of the biometric templates</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setCombinedAuthenticationMode">setCombinedAuthenticationMode</a></b>(enable)
								</div>
								<div class="description">Enable the combined authentication mode of user pin and public key authentication.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setDKEKShares">setDKEKShares</a></b>(keyshares)
								</div>
								<div class="description">Set the number of DKEK shares</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setInitializationCode">setInitializationCode</a></b>(initializationCode)
								</div>
								<div class="description">Set the initialization code</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setKeyDomains">setKeyDomains</a></b>(keyDomains)
								</div>
								<div class="description">Set the number of key domains</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setLabel">setLabel</a></b>(label)
								</div>
								<div class="description">Set the label to be written to a minimal CIAInfo in EF 2F03</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setProvisioningURL">setProvisioningURL</a></b>(provisioningURL)
								</div>
								<div class="description">Set the provisioning URL to be written to fixed parameter in CB00.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setPublicKeyAuthenticationParameter">setPublicKeyAuthenticationParameter</a></b>(requiredPublicKeysForAuthentication, numberOfPublicKeys)
								</div>
								<div class="description">Set parameter for public key authentication with n-of-m scheme, namely the values for n and m</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setReplacePKAKeyMode">setReplacePKAKeyMode</a></b>(enable)
								</div>
								<div class="description">Enable or disable replacing of a PKA key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setResetRetryCounterMode">setResetRetryCounterMode</a></b>(enable)
								</div>
								<div class="description">Enable or disable RESET RETRY COUNTER command</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setResetRetryCounterResetOnlyMode">setResetRetryCounterResetOnlyMode</a></b>(resetOnly)
								</div>
								<div class="description">If enabled RESET RETRY COUNTER only resets the error counter.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setRetryCounterInitial">setRetryCounterInitial</a></b>(retryCounterInitial)
								</div>
								<div class="description">Set the retry counter

The SmartCard-HSM enforces a retry counter <= 3 for PIN length 6
The SmartCard-HSM enforces a retry counter <= 5 for PIN length 7
The SmartCard-HSM enforces a retry counter <= 10 for PIN length larger than 7</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setSessionPINMode">setSessionPINMode</a></b>(0)
								</div>
								<div class="description">Enable or disable session PIN mode</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setTokenManagementKey">setTokenManagementKey</a></b>(kcv, salt)
								</div>
								<div class="description">Set the key check value of the token management key and the optional salt
used for SO-PIN derivation</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setTransportPINMode">setTransportPINMode</a></b>(enable)
								</div>
								<div class="description">Enable or disable transport PIN mode</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMInitializer.html#setUserPIN">setUserPIN</a></b>(userPIN)
								</div>
								<div class="description">Set the User PIN</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SmartCardHSMInitializer</b>(card)
				</div>
				
				<div class="description">
					Initialize SmartCard-HSM
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Card}</span>  <b>card</b>
								
							</dt>
								<dd>the card object</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="initialize"> </a>
					<div class="fixedFont">
					
					
					<b>initialize</b>()
					
					</div>
					<div class="description">
						Perform Initialization
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="setBioTemplate"> </a>
					<div class="fixedFont">
					
					
					<b>setBioTemplate</b>(slot, aid, param)
					
					</div>
					<div class="description">
						Select the biometric matching server for a one of the biometric templates
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>slot</b>
									
								</dt>
								<dd>either 0 or 1 for first or second template</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>aid</b>
									
								</dt>
								<dd>the application identifier of the on-card biometric server</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>param</b>
									
								</dt>
								<dd>one byte parameter passed to the server during initialization</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setCombinedAuthenticationMode"> </a>
					<div class="fixedFont">
					
					
					<b>setCombinedAuthenticationMode</b>(enable)
					
					</div>
					<div class="description">
						Enable the combined authentication mode of user pin and public key authentication.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>enable</b>
									
								</dt>
								<dd>true (non-default) to require public key authentication and user authentication</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setDKEKShares"> </a>
					<div class="fixedFont">
					
					
					<b>setDKEKShares</b>(keyshares)
					
					</div>
					<div class="description">
						Set the number of DKEK shares
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyshares</b>
									
								</dt>
								<dd>number of DKEK shares in the range 0 to 255</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setInitializationCode"> </a>
					<div class="fixedFont">
					
					
					<b>setInitializationCode</b>(initializationCode)
					
					</div>
					<div class="description">
						Set the initialization code
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>initializationCode</b>
									
								</dt>
								<dd>an 8 byte code</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setKeyDomains"> </a>
					<div class="fixedFont">
					
					
					<b>setKeyDomains</b>(keyDomains)
					
					</div>
					<div class="description">
						Set the number of key domains
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomains</b>
									
								</dt>
								<dd>number of key domains</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setLabel"> </a>
					<div class="fixedFont">
					
					
					<b>setLabel</b>(label)
					
					</div>
					<div class="description">
						Set the label to be written to a minimal CIAInfo in EF 2F03
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>label</b>
									
								</dt>
								<dd>the label</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setProvisioningURL"> </a>
					<div class="fixedFont">
					
					
					<b>setProvisioningURL</b>(provisioningURL)
					
					</div>
					<div class="description">
						Set the provisioning URL to be written to fixed parameter in CB00.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>provisioningURL</b>
									
								</dt>
								<dd>the URL at which this SE will be provisioned</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setPublicKeyAuthenticationParameter"> </a>
					<div class="fixedFont">
					
					
					<b>setPublicKeyAuthenticationParameter</b>(requiredPublicKeysForAuthentication, numberOfPublicKeys)
					
					</div>
					<div class="description">
						Set parameter for public key authentication with n-of-m scheme, namely the values for n and m
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>requiredPublicKeysForAuthentication</b>
									
								</dt>
								<dd>number of key that must be authenticated for access</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>numberOfPublicKeys</b>
									
								</dt>
								<dd>to register</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setReplacePKAKeyMode"> </a>
					<div class="fixedFont">
					
					
					<b>setReplacePKAKeyMode</b>(enable)
					
					</div>
					<div class="description">
						Enable or disable replacing of a PKA key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>enable</b>
									
								</dt>
								<dd>true (non-default) to allow replacing of a PKA key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setResetRetryCounterMode"> </a>
					<div class="fixedFont">
					
					
					<b>setResetRetryCounterMode</b>(enable)
					
					</div>
					<div class="description">
						Enable or disable RESET RETRY COUNTER command
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>enable</b>
									
								</dt>
								<dd>true (default) to allow RESET RETRY COUNTER command to reset user PIN using the initialization code</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setResetRetryCounterResetOnlyMode"> </a>
					<div class="fixedFont">
					
					
					<b>setResetRetryCounterResetOnlyMode</b>(resetOnly)
					
					</div>
					<div class="description">
						If enabled RESET RETRY COUNTER only resets the error counter.
Otherwise  RRC allows changing the PIN
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>resetOnly</b>
									
								</dt>
								<dd>true to only reset the error counter, false otherwise (default)</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setRetryCounterInitial"> </a>
					<div class="fixedFont">
					
					
					<b>setRetryCounterInitial</b>(retryCounterInitial)
					
					</div>
					<div class="description">
						Set the retry counter

The SmartCard-HSM enforces a retry counter <= 3 for PIN length 6
The SmartCard-HSM enforces a retry counter <= 5 for PIN length 7
The SmartCard-HSM enforces a retry counter <= 10 for PIN length larger than 7
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>retryCounterInitial</b>
									
								</dt>
								<dd>in the range 1 to 10.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSessionPINMode"> </a>
					<div class="fixedFont">
					
					
					<b>setSessionPINMode</b>(0)
					
					</div>
					<div class="description">
						Enable or disable session PIN mode
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>0</b>
									
								</dt>
								<dd>- disable, 1 - enable with clear-on-reset 3 - enable with explicit clearing</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setTokenManagementKey"> </a>
					<div class="fixedFont">
					
					
					<b>setTokenManagementKey</b>(kcv, salt)
					
					</div>
					<div class="description">
						Set the key check value of the token management key and the optional salt
used for SO-PIN derivation
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>kcv</b>
									
								</dt>
								<dd>the key check value of the token management key</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>salt</b>
									
								</dt>
								<dd>the salt used to derive the SO-PIN</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setTransportPINMode"> </a>
					<div class="fixedFont">
					
					
					<b>setTransportPINMode</b>(enable)
					
					</div>
					<div class="description">
						Enable or disable transport PIN mode
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>enable</b>
									
								</dt>
								<dd>true (non-default) to set user PIN to transport state</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setUserPIN"> </a>
					<div class="fixedFont">
					
					
					<b>setUserPIN</b>(userPIN)
					
					</div>
					<div class="description">
						Set the User PIN
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>userPIN</b>
									
								</dt>
								<dd>a 6 to 16 byte code</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SmartCardHSMKey</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SmartCardHSMKey
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing key access
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_SmartCardHSM.js.html">SmartCardHSM.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SmartCardHSMKey.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SmartCardHSMKey.html#constructor">SmartCardHSMKey</a></b>(sc, id)
							</div>
							<div class="description">Create a key access object</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SmartCardHSMKey.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#decrypt">decrypt</a></b>(mech, data)
								</div>
								<div class="description">Decrypt data using a key in the SmartCard-HSM</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#getId">getId</a></b>()
								</div>
								<div class="description">Return the key identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#getLabel">getLabel</a></b>()
								</div>
								<div class="description">Return the key label as encoded in the PKCS#15 structure</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#getPKCS15Id">getPKCS15Id</a></b>()
								</div>
								<div class="description">Return the key id as encoded in the PKCS#15 structure</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#getSize">getSize</a></b>()
								</div>
								<div class="description">Return the key size in bits</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#getType">getType</a></b>()
								</div>
								<div class="description">Return the key type</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#setDescription">setDescription</a></b>(desc)
								</div>
								<div class="description">Set the PKCS#15 private key description</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#sign">sign</a></b>(mech, data)
								</div>
								<div class="description">Sign data using a key in the SmartCard-HSM</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKey.html#toString">toString</a></b>()
								</div>
								<div class="description">Return human readable string</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SmartCardHSMKey</b>(sc, id)
				</div>
				
				<div class="description">
					Create a key access object
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/SmartCardHSM.html">SmartCardHSM</a>}</span>  <b>sc</b>
								
							</dt>
								<dd>the card access object</dd>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>id</b>
								
							</dt>
								<dd>the key identifier</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="decrypt"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>decrypt</b>(mech, data)
					
					</div>
					<div class="description">
						Decrypt data using a key in the SmartCard-HSM
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>mech</b>
									
								</dt>
								<dd>the decipher mechanism</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>to be deciphered</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the plain message</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getId"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getId</b>()
					
					</div>
					<div class="description">
						Return the key identifier
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getLabel"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getLabel</b>()
					
					</div>
					<div class="description">
						Return the key label as encoded in the PKCS#15 structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key label</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPKCS15Id"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getPKCS15Id</b>()
					
					</div>
					<div class="description">
						Return the key id as encoded in the PKCS#15 structure
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSize"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getSize</b>()
					
					</div>
					<div class="description">
						Return the key size in bits
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key size in bits</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getType"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getType</b>()
					
					</div>
					<div class="description">
						Return the key type
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key type</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setDescription"> </a>
					<div class="fixedFont">
					
					
					<b>setDescription</b>(desc)
					
					</div>
					<div class="description">
						Set the PKCS#15 private key description
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>desc</b>
									
								</dt>
								<dd>the description</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="sign"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>sign</b>(mech, data)
					
					</div>
					<div class="description">
						Sign data using a key in the SmartCard-HSM
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>mech</b>
									
								</dt>
								<dd>the signing mechanism</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>to be signed</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signature</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="toString"> </a>
					<div class="fixedFont">
					
					
					<b>toString</b>()
					
					</div>
					<div class="description">
						Return human readable string
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SmartCardHSMKeySpecGenerator</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SmartCardHSMKeySpecGenerator
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing an encoder for the C-Data required in GENERATE ASYMMETRIC KEY PAIR
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_SmartCardHSM.js.html">SmartCardHSM.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SmartCardHSMKeySpecGenerator.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#constructor">SmartCardHSMKeySpecGenerator</a></b>(keytype, keysizeOrDP)
							</div>
							<div class="description">Create a key specification generator instance</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SmartCardHSMKeySpecGenerator.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#encode">encode</a></b>()
								</div>
								<div class="description">Return the encoded key specification</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#setAlgorithms">setAlgorithms</a></b>(algorithms)
								</div>
								<div class="description">Set algorithm list</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#setCHR">setCHR</a></b>(CHR)
								</div>
								<div class="description">Set certificate holder reference for key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#setInnerCAR">setInnerCAR</a></b>(CAR)
								</div>
								<div class="description">Set certificate holder reference of CA this request shall be sent to</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#setKeyDomain">setKeyDomain</a></b>(keyDomain)
								</div>
								<div class="description">Set key domain</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#setKeyUseCounter">setKeyUseCounter</a></b>(keyUseCounter)
								</div>
								<div class="description">Set key use counter for key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#setOuterCAR">setOuterCAR</a></b>(CAR)
								</div>
								<div class="description">Set holder reference of the key signing this request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMKeySpecGenerator.html#setWrappingKey">setWrappingKey</a></b>(wrappingKey)
								</div>
								<div class="description">Set wrapping key</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SmartCardHSMKeySpecGenerator</b>(keytype, keysizeOrDP)
				</div>
				
				<div class="description">
					Create a key specification generator instance
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Number}</span>  <b>keytype</b>
								
							</dt>
								<dd>must be either Crypto.RSA, Crypto.EC or Crypto.AES</dd>
						
							<dt>
								<span class="light fixedFont">{Number/Key}</span>  <b>keysizeOrDP</b>
								
							</dt>
								<dd>must be 1024, 1536, 2048, 3072 or 4096 for RSA, 128, 192 or 256 for AES and key object with Key.ECC_CURVE_OID set for EC</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="encode"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>encode</b>()
					
					</div>
					<div class="description">
						Return the encoded key specification
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setAlgorithms"> </a>
					<div class="fixedFont">
					
					
					<b>setAlgorithms</b>(algorithms)
					
					</div>
					<div class="description">
						Set algorithm list
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>algorithms</b>
									
								</dt>
								<dd>the list of algorithms allowed for this key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setCHR"> </a>
					<div class="fixedFont">
					
					
					<b>setCHR</b>(CHR)
					
					</div>
					<div class="description">
						Set certificate holder reference for key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>CHR</b>
									
								</dt>
								<dd>certificate holder reference</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setInnerCAR"> </a>
					<div class="fixedFont">
					
					
					<b>setInnerCAR</b>(CAR)
					
					</div>
					<div class="description">
						Set certificate holder reference of CA this request shall be sent to
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>CAR</b>
									
								</dt>
								<dd>certificate holder reference</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setKeyDomain"> </a>
					<div class="fixedFont">
					
					
					<b>setKeyDomain</b>(keyDomain)
					
					</div>
					<div class="description">
						Set key domain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the key domain to which the key shall be added</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setKeyUseCounter"> </a>
					<div class="fixedFont">
					
					
					<b>setKeyUseCounter</b>(keyUseCounter)
					
					</div>
					<div class="description">
						Set key use counter for key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{keyUseCounter}</span> <b>keyUseCounter</b>
									
								</dt>
								<dd>in the range 1 to 2^64 - 2</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setOuterCAR"> </a>
					<div class="fixedFont">
					
					
					<b>setOuterCAR</b>(CAR)
					
					</div>
					<div class="description">
						Set holder reference of the key signing this request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>CAR</b>
									
								</dt>
								<dd>certificate holder reference</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setWrappingKey"> </a>
					<div class="fixedFont">
					
					
					<b>setWrappingKey</b>(wrappingKey)
					
					</div>
					<div class="description">
						Set wrapping key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>wrappingKey</b>
									
								</dt>
								<dd>the key to used for wrapping a newly generated symmetric key</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - SmartCardHSMSymmetricKeySpecGenerator</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class SmartCardHSMSymmetricKeySpecGenerator
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing an encoder for the C-Data required in Generate Symmetric Key
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/sc-hsm_SmartCardHSM.js.html">SmartCardHSM.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class SmartCardHSMSymmetricKeySpecGenerator.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html#constructor">SmartCardHSMSymmetricKeySpecGenerator</a></b>(allowedAlgorithms)
							</div>
							<div class="description">Create a key specification generator instance for AES keys</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class SmartCardHSMSymmetricKeySpecGenerator.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html#encode">encode</a></b>()
								</div>
								<div class="description">Return the encoded AES key specification</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html#setKeyDomain">setKeyDomain</a></b>(keyDomain)
								</div>
								<div class="description">Set key domain</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>SmartCardHSMSymmetricKeySpecGenerator</b>(allowedAlgorithms)
				</div>
				
				<div class="description">
					Create a key specification generator instance for AES keys
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>allowedAlgorithms</b>
								
							</dt>
								<dd>the list of allowed algorithm identifier</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="encode"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>encode</b>()
					
					</div>
					<div class="description">
						Return the encoded AES key specification
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the encoded C-Data for Generate Symmetric Key</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setKeyDomain"> </a>
					<div class="fixedFont">
					
					
					<b>setKeyDomain</b>(keyDomain)
					
					</div>
					<div class="description">
						Set key domain
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>keyDomain</b>
									
								</dt>
								<dd>the key domain to which the key shall be added</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - TransparentEF</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class TransparentEF
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a transparent EF
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_TransparentEF.js.html">TransparentEF.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class TransparentEF.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/TransparentEF.html#constructor">TransparentEF</a></b>(fcp, contents)
							</div>
							<div class="description">Create a file system node that represents a transparent EF</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class TransparentEF.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TransparentEF.html#readBinary">readBinary</a></b>(apdu, offset, length)
								</div>
								<div class="description">Reads data from a transparent EF</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TransparentEF.html#updateBinary">updateBinary</a></b>(apdu, offset, data)
								</div>
								<div class="description">Update data in transparent EF</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>TransparentEF</b>(fcp, contents)
				</div>
				
				<div class="description">
					Create a file system node that represents a transparent EF
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/FCP.html">FCP</a>}</span>  <b>fcp</b>
								
							</dt>
								<dd>the FCP for this EF</dd>
						
							<dt>
								<span class="light fixedFont">{ByteString}</span>  <b>contents</b>
								
							</dt>
								<dd>the contents for this EF</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="readBinary"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>readBinary</b>(apdu, offset, length)
					
					</div>
					<div class="description">
						Reads data from a transparent EF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU used for reading</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>offset</b>
									
								</dt>
								<dd>the offset to read from</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>length</b>
									
								</dt>
								<dd>the length in bytes or 0 for all in short APDU or 65536 for all in extended APDUs</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the data read</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="updateBinary"> </a>
					<div class="fixedFont">
					
					
					<b>updateBinary</b>(apdu, offset, data)
					
					</div>
					<div class="description">
						Update data in transparent EF
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/APDU.html">APDU</a>}</span> <b>apdu</b>
									
								</dt>
								<dd>the APDU used for updating</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>offset</b>
									
								</dt>
								<dd>the offset to update</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>data</b>
									
								</dt>
								<dd>the data to write into the EF</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - TrustAnchor</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class TrustAnchor
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a CVC based access controller
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/cardsim_TrustAnchor.js.html">TrustAnchor.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class TrustAnchor.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/TrustAnchor.html#constructor">TrustAnchor</a></b>(root)
							</div>
							<div class="description">Create a TrustAnchor object that handles certificate validation, terminal authentication and access control</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class TrustAnchor.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#addCARforPACE">addCARforPACE</a></b>(response)
								</div>
								<div class="description">Add recent trust anchor to PACE response</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#checkCertificate">checkCertificate</a></b>(issuer, subject, dataProvider, dp)
								</div>
								<div class="description">Check certificate

<p>This method updates the current date for certificates issued by domestic DVCAs.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#getCertificateFor">getCertificateFor</a></b>(chr)
								</div>
								<div class="description">Return certificate for chr</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#getPublicKeyFor">getPublicKeyFor</a></b>(chr)
								</div>
								<div class="description">Get public key from certificate, possibly determine the domain parameter from previous trust anchors</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#getType">getType</a></b>()
								</div>
								<div class="description">Return type of file system object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#isIssuer">isIssuer</a></b>(chr)
								</div>
								<div class="description">Is a recent trust anchor issuer of the certificate chr in question</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#updateEFCVCA">updateEFCVCA</a></b>(dataProvider)
								</div>
								<div class="description">Update EF.CVCA with list of valid trust anchors</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#validateCertificateIssuedByCVCA">validateCertificateIssuedByCVCA</a></b>(crypto, cert, dataProvider)
								</div>
								<div class="description">Validate certificate issued by CVCA</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/TrustAnchor.html#validateCertificateIssuedByDVCA">validateCertificateIssuedByDVCA</a></b>(crypto, cert, dvca, dataProvider)
								</div>
								<div class="description">Validate certificate issued by CVCA</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>TrustAnchor</b>(root)
				</div>
				
				<div class="description">
					Create a TrustAnchor object that handles certificate validation, terminal authentication and access control
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span>  <b>root</b>
								
							</dt>
								<dd>the root certificate</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="addCARforPACE"> </a>
					<div class="fixedFont">
					
					
					<b>addCARforPACE</b>(response)
					
					</div>
					<div class="description">
						Add recent trust anchor to PACE response
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>response</b>
									
								</dt>
								<dd>the response object to receive tag 87 and 88</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="checkCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>checkCertificate</b>(issuer, subject, dataProvider, dp)
					
					</div>
					<div class="description">
						Check certificate

<p>This method updates the current date for certificates issued by domestic DVCAs.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>issuer</b>
									
								</dt>
								<dd>the issuing certificate</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>subject</b>
									
								</dt>
								<dd>the subjects certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>dataProvider</b>
									
								</dt>
								<dd>object implementing getDate(), setDate() and updateEFCVCA()</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>dp</b>
									
								</dt>
								<dd>domain parameter for checking the public key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="getCertificateFor"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/CVC.html">CVC</a>}</span>
					<b>getCertificateFor</b>(chr)
					
					</div>
					<div class="description">
						Return certificate for chr
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPublicKeyFor"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getPublicKeyFor</b>(chr)
					
					</div>
					<div class="description">
						Get public key from certificate, possibly determine the domain parameter from previous trust anchors
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the public key or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getType"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>getType</b>()
					
					</div>
					<div class="description">
						Return type of file system object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the type string</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="isIssuer"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>isIssuer</b>(chr)
					
					</div>
					<div class="description">
						Is a recent trust anchor issuer of the certificate chr in question
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/PublicKeyReference.html">PublicKeyReference</a>}</span> <b>chr</b>
									
								</dt>
								<dd>the certificate holder</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true if trust anchor issued certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="updateEFCVCA"> </a>
					<div class="fixedFont">
					
					
					<b>updateEFCVCA</b>(dataProvider)
					
					</div>
					<div class="description">
						Update EF.CVCA with list of valid trust anchors
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>dataProvider</b>
									
								</dt>
								<dd>object implementing getDate(), setDate() and updateEFCVCA()</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="validateCertificateIssuedByCVCA"> </a>
					<div class="fixedFont">
					
					
					<b>validateCertificateIssuedByCVCA</b>(crypto, cert, dataProvider)
					
					</div>
					<div class="description">
						Validate certificate issued by CVCA
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto object to use for verification</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate to validate</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>dataProvider</b>
									
								</dt>
								<dd>object implementing getDate(), setDate() and updateEFCVCA()</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="validateCertificateIssuedByDVCA"> </a>
					<div class="fixedFont">
					
					
					<b>validateCertificateIssuedByDVCA</b>(crypto, cert, dvca, dataProvider)
					
					</div>
					<div class="description">
						Validate certificate issued by CVCA
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Crypto}</span> <b>crypto</b>
									
								</dt>
								<dd>the crypto object to use for verification</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate to validate</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/CVC.html">CVC</a>}</span> <b>dvca</b>
									
								</dt>
								<dd>the issuing certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>dataProvider</b>
									
								</dt>
								<dd>object implementing getDate(), setDate() and updateEFCVCA()</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - X509CertificateGenerator</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class X509CertificateGenerator
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a X.509 certificate generator
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/x509_X509CertificateGenerator.js.html">X509CertificateGenerator.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class X509CertificateGenerator.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/X509CertificateGenerator.html#constructor">X509CertificateGenerator</a></b>(crypto)
							</div>
							<div class="description">Create a X.509 certificate generator.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class X509CertificateGenerator.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#addAuthorityKeyIdentifierExtension">addAuthorityKeyIdentifierExtension</a></b>(publicKeyOrId)
								</div>
								<div class="description">Adds the authority public key identifier extension based on the issuers key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#addBasicConstraintsExtension">addBasicConstraintsExtension</a></b>(cA, pathLenConstraint)
								</div>
								<div class="description">Adds the BasicConstraints extension.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#addCRLDistributionPointURL">addCRLDistributionPointURL</a></b>(url)
								</div>
								<div class="description">Adds the CRL distribution point URLs.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#addExtendedKeyUsages">addExtendedKeyUsages</a></b>(oids, critical)
								</div>
								<div class="description">Adds the extended key usage extension</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#addExtension">addExtension</a></b>(extnID, critical, the)
								</div>
								<div class="description">Adds an extension to the certificate

<p>The structure is defined as:</p>
<pre>
   Extension  ::=  SEQUENCE  {
       extnID      OBJECT IDENTIFIER,
       critical    BOOLEAN DEFAULT FALSE,
       extnValue   OCTET STRING
                   -- contains the DER encoding of an ASN.1 value
                   -- corresponding to the extension type identified
                   -- by extnID
       }
</pre></div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#addKeyUsageExtension">addKeyUsageExtension</a></b>(the)
								</div>
								<div class="description">Adds the key usage extension.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#addSubjectKeyIdentifierExtension">addSubjectKeyIdentifierExtension</a></b>()
								</div>
								<div class="description">Adds the subject public key identifier extension based on the certificates subject key.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#generateX509Certificate">generateX509Certificate</a></b>(privateKey)
								</div>
								<div class="description">Generates the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#getExtensions">getExtensions</a></b>()
								</div>
								<div class="description">Gets the certificate extension as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#getIssuer">getIssuer</a></b>()
								</div>
								<div class="description">Gets the issuer name as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#getSignatureAlgorithm">getSignatureAlgorithm</a></b>()
								</div>
								<div class="description">Gets the signature algorithm TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#getSubject">getSubject</a></b>()
								</div>
								<div class="description">Gets the subject name as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#getSubjectPublicKeyInfo">getSubjectPublicKeyInfo</a></b>()
								</div>
								<div class="description">Gets the subject's public key as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#getTbsCertificate">getTbsCertificate</a></b>()
								</div>
								<div class="description">Gets the part of the certificate that will be signed</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#getValidity">getValidity</a></b>()
								</div>
								<div class="description">Gets the certificate validity as TLV object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#reset">reset</a></b>()
								</div>
								<div class="description">Resets all internal state variables.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#setIssuer">setIssuer</a></b>(issuer)
								</div>
								<div class="description">Sets the isser name.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#setNotAfter">setNotAfter</a></b>(date)
								</div>
								<div class="description">Sets the expiration date for the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#setNotBefore">setNotBefore</a></b>(date)
								</div>
								<div class="description">Sets the effective date for the certificate.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#setPublicKey">setPublicKey</a></b>(publicKey)
								</div>
								<div class="description">Sets the subjects public key

<p>The methods accepts ECC and RSA Public Keys.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#setSerialNumber">setSerialNumber</a></b>(serialNumber)
								</div>
								<div class="description">Sets the serial number.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#setSignatureAlgorithm">setSignatureAlgorithm</a></b>(alg)
								</div>
								<div class="description">Sets the signature algorithm.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateGenerator.html#setSubject">setSubject</a></b>(subject)
								</div>
								<div class="description">Sets the subject name.</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>X509CertificateGenerator</b>(crypto)
				</div>
				
				<div class="description">
					Create a X.509 certificate generator.
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{Crypto}</span>  <b>crypto</b>
								
							</dt>
								<dd>the crypto provider to use for signing operations</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="addAuthorityKeyIdentifierExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addAuthorityKeyIdentifierExtension</b>(publicKeyOrId)
					
					</div>
					<div class="description">
						Adds the authority public key identifier extension based on the issuers key.

<p>The key identifier is calculated as SHA-1 hash over the contents of the
issuer public key (Without tag, length and number of unused bits.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key/ByteString}</span> <b>publicKeyOrId</b>
									
								</dt>
								<dd>the authority subject key or authority key identifier</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addBasicConstraintsExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addBasicConstraintsExtension</b>(cA, pathLenConstraint)
					
					</div>
					<div class="description">
						Adds the BasicConstraints extension.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>cA</b>
									
								</dt>
								<dd>the certificate belongs to a CA</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>pathLenConstraint</b>
									
								</dt>
								<dd>the maximum number of subordinate CA certificates</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addCRLDistributionPointURL"> </a>
					<div class="fixedFont">
					
					
					<b>addCRLDistributionPointURL</b>(url)
					
					</div>
					<div class="description">
						Adds the CRL distribution point URLs.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String[]}</span> <b>url</b>
									
								</dt>
								<dd>a list of URLs</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addExtendedKeyUsages"> </a>
					<div class="fixedFont">
					
					
					<b>addExtendedKeyUsages</b>(oids, critical)
					
					</div>
					<div class="description">
						Adds the extended key usage extension
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String[]}</span> <b>oids</b>
									
								</dt>
								<dd>the list of object identifier names</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>critical</b>
									
								</dt>
								<dd>the extension is critical</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addExtension</b>(extnID, critical, the)
					
					</div>
					<div class="description">
						Adds an extension to the certificate

<p>The structure is defined as:</p>
<pre>
   Extension  ::=  SEQUENCE  {
       extnID      OBJECT IDENTIFIER,
       critical    BOOLEAN DEFAULT FALSE,
       extnValue   OCTET STRING
                   -- contains the DER encoding of an ASN.1 value
                   -- corresponding to the extension type identified
                   -- by extnID
       }
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>extnID</b>
									
								</dt>
								<dd>the extensions object identifier</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>critical</b>
									
								</dt>
								<dd>the extension is critical</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>the</b>
									
								</dt>
								<dd>extension value as ByteString</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addKeyUsageExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addKeyUsageExtension</b>(the)
					
					</div>
					<div class="description">
						Adds the key usage extension.

<p>The following flags are defined:</p>
<pre>
PKIXCommon.digitalSignature = 0x0080;
PKIXCommon.nonRepudiation   = 0x0040;
PKIXCommon.keyEncipherment  = 0x0020;
PKIXCommon.dataEncipherment = 0x0010;
PKIXCommon.keyAgreement     = 0x0008;
PKIXCommon.keyCertSign      = 0x0004;
PKIXCommon.cRLSign          = 0x0002;
PKIXCommon.encipherOnly     = 0x0001;
PKIXCommon.decipherOnly     = 0x8000;
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>the</b>
									
								</dt>
								<dd>key usage flags as combination of the flags defined above.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="addSubjectKeyIdentifierExtension"> </a>
					<div class="fixedFont">
					
					
					<b>addSubjectKeyIdentifierExtension</b>()
					
					</div>
					<div class="description">
						Adds the subject public key identifier extension based on the certificates subject key.

<p>The key identifier is calculated as SHA-1 hash over the contents of the
subject public key (Without tag, length and number of unused bits.</p>
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="generateX509Certificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509}</span>
					<b>generateX509Certificate</b>(privateKey)
					
					</div>
					<div class="description">
						Generates the certificate.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<b>privateKey</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the generated certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getExtensions"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getExtensions</b>()
					
					</div>
					<div class="description">
						Gets the certificate extension as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate extensions</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getIssuer"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getIssuer</b>()
					
					</div>
					<div class="description">
						Gets the issuer name as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the issuer RDNSequence</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSignatureAlgorithm"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getSignatureAlgorithm</b>()
					
					</div>
					<div class="description">
						Gets the signature algorithm TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signature algorithm object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSubject"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getSubject</b>()
					
					</div>
					<div class="description">
						Gets the subject name as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the issuer RDNSequence</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSubjectPublicKeyInfo"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getSubjectPublicKeyInfo</b>()
					
					</div>
					<div class="description">
						Gets the subject's public key as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the subject's public key info</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getTbsCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getTbsCertificate</b>()
					
					</div>
					<div class="description">
						Gets the part of the certificate that will be signed
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the TBSCertificate part</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getValidity"> </a>
					<div class="fixedFont">
					
					<span class="light">{ASN1}</span>
					<b>getValidity</b>()
					
					</div>
					<div class="description">
						Gets the certificate validity as TLV object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificates validity</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="reset"> </a>
					<div class="fixedFont">
					
					
					<b>reset</b>()
					
					</div>
					<div class="description">
						Resets all internal state variables.
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="setIssuer"> </a>
					<div class="fixedFont">
					
					
					<b>setIssuer</b>(issuer)
					
					</div>
					<div class="description">
						Sets the isser name.

<p>The issuer name must be a JavaScript object containing the properties:</p>
<ul>
 <li>C - the country</li>
 <li>O - the organization</li>
 <li>OU - the organization unit</li>
 <li>CN - the common name</li>
</ul>
<p>Example:</p>
<pre>
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>issuer</b>
									
								</dt>
								<dd>the issuer name</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setNotAfter"> </a>
					<div class="fixedFont">
					
					
					<b>setNotAfter</b>(date)
					
					</div>
					<div class="description">
						Sets the expiration date for the certificate.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String or Date}</span> <b>date</b>
									
								</dt>
								<dd>the date in format YYMMDDHHMMSSZ</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setNotBefore"> </a>
					<div class="fixedFont">
					
					
					<b>setNotBefore</b>(date)
					
					</div>
					<div class="description">
						Sets the effective date for the certificate.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String or Date}</span> <b>date</b>
									
								</dt>
								<dd>the date in format YYMMDDHHMMSSZ</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setPublicKey"> </a>
					<div class="fixedFont">
					
					
					<b>setPublicKey</b>(publicKey)
					
					</div>
					<div class="description">
						Sets the subjects public key

<p>The methods accepts ECC and RSA Public Keys.</p>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>publicKey</b>
									
								</dt>
								<dd>the subjects public key</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSerialNumber"> </a>
					<div class="fixedFont">
					
					
					<b>setSerialNumber</b>(serialNumber)
					
					</div>
					<div class="description">
						Sets the serial number.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>serialNumber</b>
									
								</dt>
								<dd>the serial number for the certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSignatureAlgorithm"> </a>
					<div class="fixedFont">
					
					
					<b>setSignatureAlgorithm</b>(alg)
					
					</div>
					<div class="description">
						Sets the signature algorithm.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>alg</b>
									
								</dt>
								<dd>the signature algorithm.</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="setSubject"> </a>
					<div class="fixedFont">
					
					
					<b>setSubject</b>(subject)
					
					</div>
					<div class="description">
						Sets the subject name.

<p>The subject name must be a JavaScript object containing the properties:</p>
<ul>
 <li>C - the country</li>
 <li>O - the organization</li>
 <li>OU - the organization unit</li>
 <li>CN - the common name</li>
</ul>
<p>Example:</p>
<pre>
	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
</pre>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>subject</b>
									
								</dt>
								<dd>the subject name</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - X509CertificateIssuer</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class X509CertificateIssuer
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a certification authority issuing X.509 certificates and CRLs
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/x509_X509CertificateIssuer.js.html">X509CertificateIssuer.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class X509CertificateIssuer.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/X509CertificateIssuer.html#constructor">X509CertificateIssuer</a></b>(daof, cpf, holder)
							</div>
							<div class="description">Create a certification authority that issues X.509 certificates and CRLs</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class X509CertificateIssuer.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateIssuer.html#addCRLDistributionPoint">addCRLDistributionPoint</a></b>(crldp)
								</div>
								<div class="description">Add a CRL distribution point to issued certificates</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">X509CertificateIssuer.<b><a href="../symbols/X509CertificateIssuer.html#.createCertificateIssuer">createCertificateIssuer</a></b>(daof, pathOrHolderId, certtype, template)
								</div>
								<div class="description">Create a new certificate issuer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateIssuer.html#issueCertificate">issueCertificate</a></b>(certholder, pubkey, subject, extensions, srId)
								</div>
								<div class="description">Issue a new certificate for the given subject and public key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateIssuer.html#issueCRL">issueCRL</a></b>()
								</div>
								<div class="description">Issue a CRL</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateIssuer.html#issueSelfSignedCertificate">issueSelfSignedCertificate</a></b>(keyId, srId)
								</div>
								<div class="description">Issue a self-signed certificate for the given keyId.</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>X509CertificateIssuer</b>(daof, cpf, holder)
				</div>
				
				<div class="description">
					Create a certification authority that issues X.509 certificates and CRLs
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{DAOFactory}</span>  <b>daof</b>
								
							</dt>
								<dd>the factory that can create the required data access objects</dd>
						
							<dt>
								<span class="light fixedFont">{CryptoProviderFactory}</span>  <b>cpf</b>
								
							</dt>
								<dd>factory implementing getCryptoProvider() used to get access to crypto providers</dd>
						
							<dt>
								<span class="light fixedFont">{Holder}</span>  <b>holder</b>
								
							</dt>
								<dd>the holder object for this signer the database</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="addCRLDistributionPoint"> </a>
					<div class="fixedFont">
					
					
					<b>addCRLDistributionPoint</b>(crldp)
					
					</div>
					<div class="description">
						Add a CRL distribution point to issued certificates
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>crldp</b>
									
								</dt>
								<dd>the URL of the distribution point</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name=".createCertificateIssuer"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Number}</span>
					<span class="light">X509CertificateIssuer.</span><b>createCertificateIssuer</b>(daof, pathOrHolderId, certtype, template)
					
					</div>
					<div class="description">
						Create a new certificate issuer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{DAOFactory}</span> <b>daof</b>
									
								</dt>
								<dd>the factory that can create the required data access objects</dd>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>certtype</b>
									
								</dt>
								<dd>optional argument, default Holder.X509</dd>
							
								<dt>
									<b>template</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly created holder id</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="issueCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509}</span>
					<b>issueCertificate</b>(certholder, pubkey, subject, extensions, srId)
					
					</div>
					<div class="description">
						Issue a new certificate for the given subject and public key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{Number/String/Object}</span> <b>certholder</b>
									
								</dt>
								<dd>the holder id, path or object</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>pubkey</b>
									
								</dt>
								<dd>the public key</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>subject</b>
									
								</dt>
								<dd>in ASN1 format or a format accepted by PKIXCommon.encodeName()</dd>
							
								<dt>
									<span class="light fixedFont">{Object[]}</span> <b>extensions</b>
									
								</dt>
								<dd>array of certificate extensions objects with properties oid{String}, critical{boolean} and value{ByteString}</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>srId</b>
									
								</dt>
								<dd>service request id to be stored with issued certificate</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly generated certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="issueCRL"> </a>
					<div class="fixedFont">
					
					<span class="light">{CRL}</span>
					<b>issueCRL</b>()
					
					</div>
					<div class="description">
						Issue a CRL
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly issued CRL</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="issueSelfSignedCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>issueSelfSignedCertificate</b>(keyId, srId)
					
					</div>
					<div class="description">
						Issue a self-signed certificate for the given keyId.

The key must have been previously generated using the newSigner() method
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the subject key identifier</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>srId</b>
									
								</dt>
								<dd>service request id to be stored with issued certificate</dd>
							
							</dl>
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - X509CertificateStore</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class X509CertificateStore
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class that abstracts a certificate, request and key store for a X509 PKI.
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/x509_X509CertificateStore.js.html">X509CertificateStore.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class X509CertificateStore.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/X509CertificateStore.html#constructor">X509CertificateStore</a></b>(DAOFactory)
							</div>
							<div class="description">Create an object to access a X509 certificate store.</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class X509CertificateStore.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#deletePrivateKey">deletePrivateKey</a></b>(pathOrHolderId, name)
								</div>
								<div class="description">Remove private key</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#deleteRequest">deleteRequest</a></b>(pathOrHolderId, keyId)
								</div>
								<div class="description">Remove request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#generateKeyPair">generateKeyPair</a></b>(pathOrHolderId, name, algo, prk, puk)
								</div>
								<div class="description">Generate key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getCertificateChain">getCertificateChain</a></b>(pathOrHolderId)
								</div>
								<div class="description">Get certificate chain for given path or holderId</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getCrypto">getCrypto</a></b>()
								</div>
								<div class="description">Return a suitable crypto object.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getCurrentCertificate">getCurrentCertificate</a></b>(pathOrHolderId)
								</div>
								<div class="description">Get current certificate for given path or holderId</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getCurrentCertificateAndSigner">getCurrentCertificateAndSigner</a></b>(pathOrHolderId)
								</div>
								<div class="description">Get current certificate for given path or holderId</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getCurrentKeyIdAndCertificate">getCurrentKeyIdAndCertificate</a></b>(pathOrHolderId)
								</div>
								<div class="description">Get current key id</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getPrivateKeyByKeyId">getPrivateKeyByKeyId</a></b>(pathOrHolderId, keyId)
								</div>
								<div class="description">Get a private key in the certificate store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getPrivateKeyByName">getPrivateKeyByName</a></b>(pathOrHolderId, name)
								</div>
								<div class="description">Get a private key in the certificate store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getRequest">getRequest</a></b>(pathOrHolderId, keyId)
								</div>
								<div class="description">Return request for given keyId</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#getSigner">getSigner</a></b>(pathOrHolderId, keyId)
								</div>
								<div class="description">Get the signer identified by the keyId</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#importCertificate">importCertificate</a></b>(cert, makeCurrent, srId)
								</div>
								<div class="description">Import a certificate that can be validated by one of certificates in the database.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#listHolders">listHolders</a></b>(pathOrHolderId)
								</div>
								<div class="description">List certificate holders for a given PKI element</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#newSigner">newSigner</a></b>(pathOrHolderId, name, puk, keyblob)
								</div>
								<div class="description">Create new signer based on key pair generated externally</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">X509CertificateStore.<b><a href="../symbols/X509CertificateStore.html#.nthElementOf">nthElementOf</a></b>(path, n)
								</div>
								<div class="description">Return the n-element of the path</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">X509CertificateStore.<b><a href="../symbols/X509CertificateStore.html#.parentPathOf">parentPathOf</a></b>(path)
								</div>
								<div class="description">Strip the last element of the path, effectively defining the parent within the path</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#storeCertificate">storeCertificate</a></b>(pathOrHolderId, cert, makeCurrent, srId)
								</div>
								<div class="description">Store a certificate in the certificate store</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509CertificateStore.html#storeRequest">storeRequest</a></b>(pathOrHolderId, req)
								</div>
								<div class="description">Store a certificate request in the certificate store</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>X509CertificateStore</b>(DAOFactory)
				</div>
				
				<div class="description">
					Create an object to access a X509 certificate store.
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{DAOFactory}</span>  <b>DAOFactory</b>
								
							</dt>
								<dd>the factory that can create data access objects for persistent information</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="deletePrivateKey"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>deletePrivateKey</b>(pathOrHolderId, name)
					
					</div>
					<div class="description">
						Remove private key
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the unique name of the signer in the holder context</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true is deleted</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="deleteRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{boolean}</span>
					<b>deleteRequest</b>(pathOrHolderId, keyId)
					
					</div>
					<div class="description">
						Remove request
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the unique keyId of the request in the holder context</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>true is deleted</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="generateKeyPair"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>generateKeyPair</b>(pathOrHolderId, name, algo, prk, puk)
					
					</div>
					<div class="description">
						Generate key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the unique name of the signer in the holder context</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>algo</b>
									
								</dt>
								<dd>the key generation algorithm (Crypto.EC or Crypto.RSA)</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>prk</b>
									
								</dt>
								<dd>the private key template</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key template</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the subject key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCertificateChain"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509[]}</span>
					<b>getCertificateChain</b>(pathOrHolderId)
					
					</div>
					<div class="description">
						Get certificate chain for given path or holderId
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the certificate chain, starting with the current certificate of the holder and ending with the self-signed trust anchor</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCrypto"> </a>
					<div class="fixedFont">
					
					<span class="light">{Crypto}</span>
					<b>getCrypto</b>()
					
					</div>
					<div class="description">
						Return a suitable crypto object. This may be overwritten by derived classes
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the Crypto object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCurrentCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509}</span>
					<b>getCurrentCertificate</b>(pathOrHolderId)
					
					</div>
					<div class="description">
						Get current certificate for given path or holderId
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the current certificate or null if none defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCurrentCertificateAndSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509}</span>
					<b>getCurrentCertificateAndSigner</b>(pathOrHolderId)
					
					</div>
					<div class="description">
						Get current certificate for given path or holderId
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the current certificate or null if none defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getCurrentKeyIdAndCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getCurrentKeyIdAndCertificate</b>(pathOrHolderId)
					
					</div>
					<div class="description">
						Get current key id
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the current key id or null if none defined</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPrivateKeyByKeyId"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getPrivateKeyByKeyId</b>(pathOrHolderId, keyId)
					
					</div>
					<div class="description">
						Get a private key in the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the unique key identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getPrivateKeyByName"> </a>
					<div class="fixedFont">
					
					<span class="light">{Key}</span>
					<b>getPrivateKeyByName</b>(pathOrHolderId, name)
					
					</div>
					<div class="description">
						Get a private key in the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the unique name of the signer in the holder context</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the private key or null if not found</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/_global_.html#PKCS10">PKCS10</a>}</span>
					<b>getRequest</b>(pathOrHolderId, keyId)
					
					</div>
					<div class="description">
						Return request for given keyId
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the unique keyId of the request in the holder context</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the request or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{Signer}</span>
					<b>getSigner</b>(pathOrHolderId, keyId)
					
					</div>
					<div class="description">
						Get the signer identified by the keyId
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the key identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>this Signer object</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="importCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{Certificate}</span>
					<b>importCertificate</b>(cert, makeCurrent, srId)
					
					</div>
					<div class="description">
						Import a certificate that can be validated by one of certificates in the database.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{X509}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>makeCurrent</b>
									
								</dt>
								<dd>true if this certificate becomes the current certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>srId</b>
									
								</dt>
								<dd>service request id to be stored with issued certificate (optional)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the Certificate entry from the database or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="listHolders"> </a>
					<div class="fixedFont">
					
					<span class="light">{String[]}</span>
					<b>listHolders</b>(pathOrHolderId)
					
					</div>
					<div class="description">
						List certificate holders for a given PKI element
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>a list of holder ids, possibly empty</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="newSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>newSigner</b>(pathOrHolderId, name, puk, keyblob)
					
					</div>
					<div class="description">
						Create new signer based on key pair generated externally
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the unique name of the signer in the holder context</dd>
							
								<dt>
									<span class="light fixedFont">{Key}</span> <b>puk</b>
									
								</dt>
								<dd>the public key</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyblob</b>
									
								</dt>
								<dd>the wrapped private key</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the subject key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".nthElementOf"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">X509CertificateStore.</span><b>nthElementOf</b>(path, n)
					
					</div>
					<div class="description">
						Return the n-element of the path
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the path to return the last element from</dd>
							
								<dt>
									<b>n</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the last path element or null for the root</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name=".parentPathOf"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{String}</span>
					<span class="light">X509CertificateStore.</span><b>parentPathOf</b>(path)
					
					</div>
					<div class="description">
						Strip the last element of the path, effectively defining the parent within the path
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>path</b>
									
								</dt>
								<dd>the path to strip the last element from</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the parent path or null for the root</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="storeCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{Certificate}</span>
					<b>storeCertificate</b>(pathOrHolderId, cert, makeCurrent, srId)
					
					</div>
					<div class="description">
						Store a certificate in the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{X509}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>makeCurrent</b>
									
								</dt>
								<dd>true if this certificate becomes the current certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>srId</b>
									
								</dt>
								<dd>service request id to be stored with issued certificate (optional)</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the Certificate entry from the database or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="storeRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>storeRequest</b>(pathOrHolderId, req)
					
					</div>
					<div class="description">
						Store a certificate request in the certificate store
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/_global_.html#PKCS10">PKCS10</a>}</span> <b>req</b>
									
								</dt>
								<dd>the request</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the request's keyId</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - X509Signer</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Class X509Signer
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				Class implementing a signer backed by a X.509 certificate
				
				
					<br /><i>Defined in: </i> <a href="../symbols/src/x509_X509Signer.js.html">X509Signer.js</a>.
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			
			<table class="summaryTable" cellspacing="0" summary="A summary of the constructor documented in the class X509Signer.">
				<caption>Class Summary</caption>
				<thead>
					<tr>
						<th scope="col">Constructor Attributes</th>
						<th scope="col">Constructor Name and Description</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td class="attributes">&nbsp;</td>
						<td class="nameDescription" >
							<div class="fixedFont">
								<b><a href="../symbols/X509Signer.html#constructor">X509Signer</a></b>(daof, cpf, holder)
							</div>
							<div class="description">Create a signer based on a X.509 certificate</div>
						</td>
					</tr>
				</tbody>
			</table>
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class X509Signer.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&lt;static&gt; &nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont">X509Signer.<b><a href="../symbols/X509Signer.html#.createSigner">createSigner</a></b>(daof, pathOrHolderId, certtype, template)
								</div>
								<div class="description">Create a new signer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#determineDistinguishedName">determineDistinguishedName</a></b>(name)
								</div>
								<div class="description">Determine subject distinguished name for new signer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#determineSignerName">determineSignerName</a></b>()
								</div>
								<div class="description">Determine signer name for newly generated signer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#getHolder">getHolder</a></b>()
								</div>
								<div class="description">Return the holder from the holder database for this element</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#getHolderId">getHolderId</a></b>()
								</div>
								<div class="description">Return the holderId from the holder database for this element</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#getRequest">getRequest</a></b>(keyId)
								</div>
								<div class="description">Get request for the given subject key identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#getRequestBinary">getRequestBinary</a></b>(keyId)
								</div>
								<div class="description">Get request for the given subject key identifier</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#getRequestKeyUsage">getRequestKeyUsage</a></b>()
								</div>
								<div class="description">Determine the key usage for the request</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#getSigner">getSigner</a></b>()
								</div>
								<div class="description">Return the signer from the signer database for this element</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#getSignerCertificate">getSignerCertificate</a></b>()
								</div>
								<div class="description">Return the signer's certificate</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#newSigner">newSigner</a></b>(name, template)
								</div>
								<div class="description">Create a new signer key pair</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#parsePolicyFromSigner">parsePolicyFromSigner</a></b>()
								</div>
								<div class="description">Parse the policy from the signer's values object</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#setPolicy">setPolicy</a></b>(crldp)
								</div>
								<div class="description">Set policy for signer object.</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#storeCertificate">storeCertificate</a></b>(cert, makeCurrent, keyId, srId)
								</div>
								<div class="description">Store a certificate issued for this signer</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/X509Signer.html#storeCertificateForHolder">storeCertificateForHolder</a></b>(cert, makeCurrent, keyId, srId, srId)
								</div>
								<div class="description">Store a certificate issued for a certain holder</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			
			<div class="details"><a name="constructor"> </a>
				<div class="sectionTitle">
					Class Detail
				</div>
				
				<div class="fixedFont">
						<b>X509Signer</b>(daof, cpf, holder)
				</div>
				
				<div class="description">
					Create a signer based on a X.509 certificate
					
				</div>
				
				
				
				
					
						<dl class="detailList">
						<dt class="heading">Parameters:</dt>
						
							<dt>
								<span class="light fixedFont">{DAOFactory}</span>  <b>daof</b>
								
							</dt>
								<dd>the factory that can create the required data access objects</dd>
						
							<dt>
								<span class="light fixedFont">{CryptoProviderFactory}</span>  <b>cpf</b>
								
							</dt>
								<dd>factory implementing getCryptoProvider() used to get access to crypto providers</dd>
						
							<dt>
								<span class="light fixedFont">{Holder}</span>  <b>holder</b>
								
							</dt>
								<dd>the holder object for this signer</dd>
						
						</dl>
					
					
					
					
					
					
					

			</div>
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name=".createSigner"> </a>
					<div class="fixedFont">&lt;static&gt; 
					
					<span class="light">{Number}</span>
					<span class="light">X509Signer.</span><b>createSigner</b>(daof, pathOrHolderId, certtype, template)
					
					</div>
					<div class="description">
						Create a new signer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{DAOFactory}</span> <b>daof</b>
									
								</dt>
								<dd>the factory that can create the required data access objects</dd>
							
								<dt>
									<span class="light fixedFont">{String/Number}</span> <b>pathOrHolderId</b>
									
								</dt>
								<dd>the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM") or the holderId from the database</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>certtype</b>
									
								</dt>
								<dd>optional argument, default Holder.X509</dd>
							
								<dt>
									<span class="light fixedFont">{Object}</span> <b>template</b>
									
								</dt>
								<dd>template for database entry</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the newly created holder id</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="determineDistinguishedName"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>determineDistinguishedName</b>(name)
					
					</div>
					<div class="description">
						Determine subject distinguished name for new signer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the distringuished name for the new signer</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="determineSignerName"> </a>
					<div class="fixedFont">
					
					<span class="light">{String}</span>
					<b>determineSignerName</b>()
					
					</div>
					<div class="description">
						Determine signer name for newly generated signer
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the unique name</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getHolder"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getHolder</b>()
					
					</div>
					<div class="description">
						Return the holder from the holder database for this element
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the holderId</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getHolderId"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getHolderId</b>()
					
					</div>
					<div class="description">
						Return the holderId from the holder database for this element
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the holderId</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRequest"> </a>
					<div class="fixedFont">
					
					<span class="light">{<a href="../symbols/_global_.html#PKCS10">PKCS10</a>}</span>
					<b>getRequest</b>(keyId)
					
					</div>
					<div class="description">
						Get request for the given subject key identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the subject key identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the PKCS10 request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRequestBinary"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>getRequestBinary</b>(keyId)
					
					</div>
					<div class="description">
						Get request for the given subject key identifier
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the subject key identifier</dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the raw request</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getRequestKeyUsage"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>getRequestKeyUsage</b>()
					
					</div>
					<div class="description">
						Determine the key usage for the request
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the key usage defined in PKIXCommon</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{Signer}</span>
					<b>getSigner</b>()
					
					</div>
					<div class="description">
						Return the signer from the signer database for this element
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signer value object or null</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="getSignerCertificate"> </a>
					<div class="fixedFont">
					
					<span class="light">{X509}</span>
					<b>getSignerCertificate</b>()
					
					</div>
					<div class="description">
						Return the signer's certificate
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the signer's certificate</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="newSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{ByteString}</span>
					<b>newSigner</b>(name, template)
					
					</div>
					<div class="description">
						Create a new signer key pair
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>name</b>
									
								</dt>
								<dd>the signer name</dd>
							
								<dt>
									<b>template</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the subject key identifier</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="parsePolicyFromSigner"> </a>
					<div class="fixedFont">
					
					<span class="light">{Object}</span>
					<b>parsePolicyFromSigner</b>()
					
					</div>
					<div class="description">
						Parse the policy from the signer's values object
						
						
					</div>
					
					
					
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the policy</dd>
							
							</dl>
						
						
						

					<hr />
				
					<a name="setPolicy"> </a>
					<div class="fixedFont">
					
					
					<b>setPolicy</b>(crldp)
					
					</div>
					<div class="description">
						Set policy for signer object.

The policy object shall contain the following properties. Some elements are only used in the
derive X509CertificateIssuer class.

<ul>
<li>distinguishedName - The distinguishedName object as defined in PKIXCommon.encodeName()</li>
<li>keySpecification - A Key object initialized with the key parameter.</li>
<li>signatureAlgorithm - A ByteString encoding the object identifier for the signature algorithm</li>
<li>validityDaysSelfSigned - Number of days the self-signed certificate is valid</li>
<li>validityDaysCertificates - Number of days the issued certificate is valid</li>
<li>validityDaysCRL - Number of days the issued certificate revocation list is valid</li>
<li>pathLenConstraint - Number of subordinate CAs</li>
<li>requestFormat - "pkcs10" or "sc-hsm"</li>
<li>overwriteKey - Set to true to overwrite a key with the same label</li>
<li>restrictPublicKey - Limit the public key of the self-signed root as per PKIXCommon.restrictedPublicKeyAlgorithmIdentifier()</li>
</ul>
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{String}</span> <b>crldp</b>
									
								</dt>
								<dd>the URL of the distribution point</dd>
							
							</dl>
						
						
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">See:</dt>
							
								<dd><a href="../symbols/PKIXCommon.html#.encodeName">PKIXCommon.encodeName</a>()</dd>
							
							</dl>
						

					<hr />
				
					<a name="storeCertificate"> </a>
					<div class="fixedFont">
					
					
					<b>storeCertificate</b>(cert, makeCurrent, keyId, srId)
					
					</div>
					<div class="description">
						Store a certificate issued for this signer
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{X509}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>makeCurrent</b>
									
								</dt>
								<dd>true if this certificate becomes the current certificate</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the key id that links this certificate to the signer (usually the subjectKeyIdentifier)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>srId</b>
									
								</dt>
								<dd>service request id</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="storeCertificateForHolder"> </a>
					<div class="fixedFont">
					
					<span class="light">{Number}</span>
					<b>storeCertificateForHolder</b>(cert, makeCurrent, keyId, srId, srId)
					
					</div>
					<div class="description">
						Store a certificate issued for a certain holder
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{X509}</span> <b>cert</b>
									
								</dt>
								<dd>the certificate</dd>
							
								<dt>
									<span class="light fixedFont">{Boolean}</span> <b>makeCurrent</b>
									
								</dt>
								<dd>true if this certificate becomes the current certificate</dd>
							
								<dt>
									<span class="light fixedFont">{ByteString}</span> <b>keyId</b>
									
								</dt>
								<dd>the key id that links this certificate to the signer (usually the subjectKeyIdentifier)</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>srId</b>
									
								</dt>
								<dd>service request id</dd>
							
								<dt>
									<b>srId</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
							<dl class="detailList">
							<dt class="heading">Returns:</dt>
							
								<dd>the database id of the certificate</dd>
							
							</dl>
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:03 GMT+0200 (CEST)
		</div>
	</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
		<meta name="generator" content="JsDoc Toolkit" />
		
		<title>JsDoc Reference - _global_</title>

		<style type="text/css">
			/* default.css */
body
{
	font: 12px "Lucida Grande", Tahoma, Arial, Helvetica, sans-serif;
	width: 800px;
}

.header
{
	clear: both;
	background-color: #ccc;
	padding: 8px;
}

h1
{
	font-size: 150%;
	font-weight: bold;
	padding: 0;
	margin: 1em 0 0 .3em;
}

hr
{
	border: none 0;
	border-top: 1px solid #7F8FB1;
	height: 1px;
}

pre.code
{
	display: block;
	padding: 8px;
	border: 1px dashed #ccc;
}

#index
{
	margin-top: 24px;
	float: left;
	width: 160px;
	position: absolute;
	left: 8px;
	background-color: #F3F3F3;
	padding: 8px;
}

#content
{
	margin-left: 190px;
	width: 600px;
}

.classList
{
	list-style-type: none;
	padding: 0;
	margin: 0 0 0 8px;
	font-family: arial, sans-serif;
	font-size: 1em;
	overflow: auto;
}

.classList li
{
	padding: 0;
	margin: 0 0 8px 0;
}

.summaryTable { width: 100%; }

h1.classTitle
{
	font-size:170%;
	line-height:130%;
}

h2 { font-size: 110%; }
caption, div.sectionTitle
{
	background-color: #7F8FB1;
	color: #fff;
	font-size:130%;
	text-align: left;
	padding: 2px 6px 2px 6px;
	border: 1px #7F8FB1 solid;
}

div.sectionTitle { margin-bottom: 8px; }
.summaryTable thead { display: none; }

.summaryTable td
{
	vertical-align: top;
	padding: 4px;
	border-bottom: 1px #7F8FB1 solid;
	border-right: 1px #7F8FB1 solid;
}

/*col#summaryAttributes {}*/
.summaryTable td.attributes
{
	border-left: 1px #7F8FB1 solid;
	width: 140px;
	text-align: right;
}

td.attributes, .fixedFont
{
	line-height: 15px;
	color: #002EBE;
	font-family: "Courier New",Courier,monospace;
	font-size: 13px;
}

.summaryTable td.nameDescription
{
	text-align: left;
	font-size: 13px;
	line-height: 15px;
}

.summaryTable td.nameDescription, .description
{
	line-height: 15px;
	padding: 4px;
	padding-left: 4px;
}

.summaryTable { margin-bottom: 8px; }

ul.inheritsList
{
	list-style: square;
	margin-left: 20px;
	padding-left: 0;
}

.detailList {
	margin-left: 20px; 
	line-height: 15px;
}
.detailList dt { margin-left: 20px; }

.detailList .heading
{
	font-weight: bold;
	padding-bottom: 6px;
	margin-left: 0;
}

.light, td.attributes, .light a:link, .light a:visited
{
	color: #777;
	font-style: italic;
}

.fineprint
{
	text-align: right;
	font-size: 10px;
}
		</style>
	</head>

	<body>
<!-- ============================== header ================================= -->	
		<!-- begin static/header.html -->
		<div id="header">
</div>
		<!-- end static/header.html -->

<!-- ============================== classes index ============================ -->
		<div id="index">
			<!-- begin publish.classesIndex -->
			<div align="center"><a href="../index.html">Class Index</a>
| <a href="../files.html">File Index</a></div>
<hr />
<h2>Classes</h2>
<ul class="classList">
	
	<li><i><a href="../symbols/_global_.html">_global_</a></i></li>
	
	<li><a href="../symbols/AccessController.html">AccessController</a></li>
	
	<li><a href="../symbols/APDU.html">APDU</a></li>
	
	<li><a href="../symbols/AuthenticationObject.html">AuthenticationObject</a></li>
	
	<li><a href="../symbols/CAConnection.html">CAConnection</a></li>
	
	<li><a href="../symbols/ChipAuthentication.html">ChipAuthentication</a></li>
	
	<li><a href="../symbols/ChipAuthenticationDomainParameterInfo.html">ChipAuthenticationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationInfo.html">ChipAuthenticationInfo</a></li>
	
	<li><a href="../symbols/ChipAuthenticationPublicKeyInfo.html">ChipAuthenticationPublicKeyInfo</a></li>
	
	<li><a href="../symbols/CommandInterpreter.html">CommandInterpreter</a></li>
	
	<li><a href="../symbols/CRLGenerator.html">CRLGenerator</a></li>
	
	<li><a href="../symbols/CVC.html">CVC</a></li>
	
	<li><a href="../symbols/CVCCA.html">CVCCA</a></li>
	
	<li><a href="../symbols/CVCertificateStore.html">CVCertificateStore</a></li>
	
	<li><a href="../symbols/DataUnitAPDU.html">DataUnitAPDU</a></li>
	
	<li><a href="../symbols/DF.html">DF</a></li>
	
	<li><a href="../symbols/DKEK.html">DKEK</a></li>
	
	<li><a href="../symbols/DNEncoder.html">DNEncoder</a></li>
	
	<li><a href="../symbols/EAC20.html">EAC20</a></li>
	
	<li><a href="../symbols/EAC2CVCertificateGenerator.html">EAC2CVCertificateGenerator</a></li>
	
	<li><a href="../symbols/EAC2CVRequestGenerator.html">EAC2CVRequestGenerator</a></li>
	
	<li><a href="../symbols/FCP.html">FCP</a></li>
	
	<li><a href="../symbols/File.html">File</a></li>
	
	<li><a href="../symbols/FileSelector.html">FileSelector</a></li>
	
	<li><a href="../symbols/FileSystemIdObject.html">FileSystemIdObject</a></li>
	
	<li><a href="../symbols/FSNode.html">FSNode</a></li>
	
	<li><a href="../symbols/GPSCP03.html">GPSCP03</a></li>
	
	<li><a href="../symbols/HSMCVCertificateStore.html">HSMCVCertificateStore</a></li>
	
	<li><a href="../symbols/HSMKeyStore.html">HSMKeyStore</a></li>
	
	<li><a href="../symbols/LinearEF.html">LinearEF</a></li>
	
	<li><a href="../symbols/ManagePKA.html">ManagePKA</a></li>
	
	<li><a href="../symbols/P11CVCertificateStore.html">P11CVCertificateStore</a></li>
	
	<li><a href="../symbols/PACE.html">PACE</a></li>
	
	<li><a href="../symbols/PACEDomainParameterInfo.html">PACEDomainParameterInfo</a></li>
	
	<li><a href="../symbols/PACEInfo.html">PACEInfo</a></li>
	
	<li><a href="../symbols/PaperKeyEncoding.html">PaperKeyEncoding</a></li>
	
	<li><a href="../symbols/PKCS10Generator.html">PKCS10Generator</a></li>
	
	<li><a href="../symbols/PublicKeyReference.html">PublicKeyReference</a></li>
	
	<li><a href="../symbols/RAMClient.html">RAMClient</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationDomainParameterInfo.html">RestrictedIdentificationDomainParameterInfo</a></li>
	
	<li><a href="../symbols/RestrictedIdentificationInfo.html">RestrictedIdentificationInfo</a></li>
	
	<li><a href="../symbols/SecureChannelHandler.html">SecureChannelHandler</a></li>
	
	<li><a href="../symbols/SecureMessagingCommandAPDUDecoder.html">SecureMessagingCommandAPDUDecoder</a></li>
	
	<li><a href="../symbols/SecurityEnvironment.html">SecurityEnvironment</a></li>
	
	<li><a href="../symbols/SignatureKey.html">SignatureKey</a></li>
	
	<li><a href="../symbols/SmartCardHSM.html">SmartCardHSM</a></li>
	
	<li><a href="../symbols/SmartCardHSMCrypto.html">SmartCardHSMCrypto</a></li>
	
	<li><a href="../symbols/SmartCardHSMInitializer.html">SmartCardHSMInitializer</a></li>
	
	<li><a href="../symbols/SmartCardHSMKey.html">SmartCardHSMKey</a></li>
	
	<li><a href="../symbols/SmartCardHSMKeySpecGenerator.html">SmartCardHSMKeySpecGenerator</a></li>
	
	<li><a href="../symbols/SmartCardHSMSymmetricKeySpecGenerator.html">SmartCardHSMSymmetricKeySpecGenerator</a></li>
	
	<li><a href="../symbols/TransparentEF.html">TransparentEF</a></li>
	
	<li><a href="../symbols/TrustAnchor.html">TrustAnchor</a></li>
	
	<li><a href="../symbols/X509CertificateGenerator.html">X509CertificateGenerator</a></li>
	
	<li><a href="../symbols/X509CertificateIssuer.html">X509CertificateIssuer</a></li>
	
	<li><a href="../symbols/X509CertificateStore.html">X509CertificateStore</a></li>
	
	<li><a href="../symbols/X509Signer.html">X509Signer</a></li>
	
</ul>
<hr />
			<!-- end publish.classesIndex -->
		</div>
		
		<div id="content">
<!-- ============================== class title ============================ -->
			<h1 class="classTitle">
				
				Built-In Namespace _global_
			</h1>

<!-- ============================== class summary ========================== -->			
			<p class="description">
				
				
			
				
				
				
			</p>

<!-- ============================== constructor summary ==================== -->			
			

<!-- ============================== properties summary ===================== -->
			

<!-- ============================== methods summary ======================== -->
			
				
				
				<table class="summaryTable" cellspacing="0" summary="A summary of the methods documented in the class _global_.">
					<caption>Method Summary</caption>
					<thead>
						<tr>
							<th scope="col">Method Attributes</th>
							<th scope="col">Method Name and Description</th>
						</tr>
					</thead>
					<tbody>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/_global_.html#CryptoProvider">CryptoProvider</a></b>(sc, slot, slot)
								</div>
								<div class="description">Crypto Provider for accessing a SmartCard-HSM</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/_global_.html#EACCryptoProvider">EACCryptoProvider</a></b>(sc, id)
								</div>
								<div class="description">Crypto Provider for EAC-PKI</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/_global_.html#PKCS1">PKCS1</a></b>()
								</div>
								<div class="description">Empty constructor</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/_global_.html#PKCS10">PKCS10</a></b>(req)
								</div>
								<div class="description">Class supporting PKCS#10 certificate signing requests</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/_global_.html#PKCS8">PKCS8</a></b>()
								</div>
								<div class="description">Empty constructor</div>
							</td>
						</tr>
					
						<tr>
							<td class="attributes">&nbsp;</td>
							<td class="nameDescription">
								<div class="fixedFont"><b><a href="../symbols/_global_.html#PKIXCommon">PKIXCommon</a></b>()
								</div>
								<div class="description">Common functions and constants</div>
							</td>
						</tr>
					
					</tbody>
				</table>
				
				
				
			
<!-- ============================== events summary ======================== -->
			

<!-- ============================== constructor details ==================== -->		
			

<!-- ============================== field details ========================== -->		
			

<!-- ============================== method details ========================= -->		
			
				<div class="sectionTitle">
					Method Detail
				</div>
				
					<a name="CryptoProvider"> </a>
					<div class="fixedFont">
					
					
					<b>CryptoProvider</b>(sc, slot, slot)
					
					</div>
					<div class="description">
						Crypto Provider for accessing a SmartCard-HSM
						
							<br />
							<i>Defined in: </i> <a href="../symbols/src/sc-hsm_CryptoProvider.js.html">CryptoProvider.js</a>.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/SmartCardHSM.html">SmartCardHSM</a>}</span> <b>sc</b>
									
								</dt>
								<dd>the associated SmartCard-HSM</dd>
							
								<dt>
									<span class="light fixedFont">{Number}</span> <b>slot</b>
									
								</dt>
								<dd>the key domain slot. If undefined or -1 no key domain will be set</dd>
							
								<dt>
									<b>slot</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="EACCryptoProvider"> </a>
					<div class="fixedFont">
					
					
					<b>EACCryptoProvider</b>(sc, id)
					
					</div>
					<div class="description">
						Crypto Provider for EAC-PKI
						
							<br />
							<i>Defined in: </i> <a href="../symbols/src/sc-hsm_EACCryptoProvider.js.html">EACCryptoProvider.js</a>.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{<a href="../symbols/SmartCardHSM.html">SmartCardHSM</a>}</span> <b>sc</b>
									
								</dt>
								<dd>the associated SmartCard-HSM</dd>
							
								<dt>
									<b>id</b>
									
								</dt>
								<dd></dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="PKCS1"> </a>
					<div class="fixedFont">
					
					
					<b>PKCS1</b>()
					
					</div>
					<div class="description">
						Empty constructor
						
							<br />
							<i>Defined in: </i> <a href="../symbols/src/pkcs_PKCS1.js.html">PKCS1.js</a>.
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="PKCS10"> </a>
					<div class="fixedFont">
					
					
					<b>PKCS10</b>(req)
					
					</div>
					<div class="description">
						Class supporting PKCS#10 certificate signing requests
						
							<br />
							<i>Defined in: </i> <a href="../symbols/src/pkcs_PKCS10.js.html">PKCS10.js</a>.
						
						
					</div>
					
					
					
						
							<dl class="detailList">
							<dt class="heading">Parameters:</dt>
							
								<dt>
									<span class="light fixedFont">{ASN1}</span> <b>req</b>
									
								</dt>
								<dd>the certificate request</dd>
							
							</dl>
						
						
						
						
						
						
						

					<hr />
				
					<a name="PKCS8"> </a>
					<div class="fixedFont">
					
					
					<b>PKCS8</b>()
					
					</div>
					<div class="description">
						Empty constructor
						
							<br />
							<i>Defined in: </i> <a href="../symbols/src/pkcs_PKCS8.js.html">PKCS8.js</a>.
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					<hr />
				
					<a name="PKIXCommon"> </a>
					<div class="fixedFont">
					
					
					<b>PKIXCommon</b>()
					
					</div>
					<div class="description">
						Common functions and constants
						
							<br />
							<i>Defined in: </i> <a href="../symbols/src/x509_PKIXCommon.js.html">PKIXCommon.js</a>.
						
						
					</div>
					
					
					
						
						
						
						
						
						
						

					
				
			
			
<!-- ============================== event details ========================= -->		
			
			
			<hr />
		</div>

		
<!-- ============================== footer ================================= -->
		<div class="fineprint" style="clear:both">
			
			Documentation generated by <a href="http://code.google.com/p/jsdoc-toolkit/" target="_blank">JsDoc Toolkit</a> 2.4.0 on Thu Sep 18 2025 10:55:02 GMT+0200 (CEST)
		</div>
	</body>
</html>
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of ISO 7816-4 APDU processing
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Create an APDU
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * &lt;p>This constructor supports the signatures&lt;/p>
<span class='line'> 33</span>  * &lt;ul>
<span class='line'> 34</span>  *  &lt;li>APDU(ByteString command)&lt;/li>
<span class='line'> 35</span>  *  &lt;li>APDU(Number cla, Number ins, Number p1, Number p2)&lt;/li>
<span class='line'> 36</span>  *  &lt;li>APDU(Number cla, Number ins, Number p1, Number p2, data)&lt;/li>
<span class='line'> 37</span>  *  &lt;li>APDU(Number cla, Number ins, Number p1, Number p2, data, Ne)&lt;/li>
<span class='line'> 38</span>  * &lt;/ul>
<span class='line'> 39</span>  * @class Class implementing support for command and response APDUs
<span class='line'> 40</span>  * @constructor
<span class='line'> 41</span>  * @param {ByteString} command the command APDU
<span class='line'> 42</span>  * @param {Number} cla the class byte
<span class='line'> 43</span>  * @param {Number} ins the instruction byte
<span class='line'> 44</span>  * @param {Number} p1 the first parameter
<span class='line'> 45</span>  * @param {Number} p2 the second parameter
<span class='line'> 46</span>  * @param {ByteString} data the data field (optional)
<span class='line'> 47</span>  * @param {Number} Ne the number of expected bytes (optional)
<span class='line'> 48</span>  */</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arg</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Only one argument of type ByteString expected"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">			</span><span class="NAME">this.fromByteString</span><span class="PUNC">(</span><span class="NAME">arg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"4 to 6 arguments expected"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 61</span> 
<span class='line'> 62</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">			</span><span class="NAME">this.cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">			</span><span class="NAME">this.ins</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">			</span><span class="NAME">this.p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">			</span><span class="NAME">this.p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">3</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> 
<span class='line'> 72</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">					</span><span class="NAME">this.cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">					</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">				</span><span class="NAME">this.ne</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="NAME">this.rapdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="NAME">this.SW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> </span><span class="NAME">exports.APDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> 
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="NAME">APDU.INS_DEACTIVATE</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="NAME">APDU.INS_VERIFY</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="NAME">APDU.INS_MANAGE_SE</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="NAME">APDU.INS_CHANGE_REFERENCE_DATA</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x24</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">APDU.INS_PSO</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x2A</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="NAME">APDU.INS_RESET_RETRY_COUNTER</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x2C</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="NAME">APDU.INS_ACTIVATE</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x44</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="NAME">APDU.INS_GENERATE_KEY_PAIR</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x46</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="NAME">APDU.INS_GENERATE_KEY</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x48</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="NAME">APDU.INS_INITIALIZE_UPDATE</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x50</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> </span><span class="NAME">APDU.INS_EXTERNAL_AUTHENTICATE</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="NAME">APDU.INS_GET_CHALLENGE</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> </span><span class="NAME">APDU.INS_GENERAL_AUTHENTICATE</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> </span><span class="NAME">APDU.INS_COMPUTE_DIGITAL_SIGN</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x9E</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="NAME">APDU.INS_SELECT</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>111</span> </span><span class="NAME">APDU.INS_READBINARY</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="NAME">APDU.INS_READ_BINARY</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="NAME">APDU.INS_READ_RECORD</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="NAME">APDU.INS_VERIFY_CERTIFICATE</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xBE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="NAME">APDU.INS_GET_RESPONSE</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">APDU.INS_GET_DATA</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="NAME">APDU.INS_UPDATE_BINARY</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD6</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="NAME">APDU.INS_PUT_KEY</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="NAME">APDU.INS_PUT_DATA</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xDA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="NAME">APDU.INS_DELETE</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xE4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="NAME">APDU.INS_TERMINATE</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xE6</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="NAME">APDU.INS_SET_STATUS</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xF0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> 
<span class='line'>124</span> </span><span class="NAME">APDU.SW_OK</span><span class="WHIT">                 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/* Process completed                 */</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> </span><span class="NAME">APDU.SW_TIMEOUT</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6401</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/* Exec error: Command timeout       */</span><span class="WHIT">
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="NAME">APDU.SW_OKMOREDATA</span><span class="WHIT">         </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6100</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Process completed, more data available*/</span><span class="WHIT">
<span class='line'>129</span> </span><span class="NAME">APDU.SW_WARNING</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6200</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: NV-Ram not changed       */</span><span class="WHIT">
<span class='line'>130</span> </span><span class="NAME">APDU.SW_WARNING1</span><span class="WHIT">           </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6201</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: NV-Ram not changed 1     */</span><span class="WHIT">
<span class='line'>131</span> </span><span class="NAME">APDU.SW_DATAINV</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6281</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: Part of data corrupted   */</span><span class="WHIT">
<span class='line'>132</span> </span><span class="NAME">APDU.SW_EOF</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6282</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: End of file reached      */</span><span class="WHIT">
<span class='line'>133</span> </span><span class="NAME">APDU.SW_INVFILE</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6283</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/* Warning: Invalidated file         */</span><span class="WHIT">
<span class='line'>134</span> </span><span class="NAME">APDU.SW_INVFORMAT</span><span class="WHIT">          </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6284</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/* Warning: Invalid file control     */</span><span class="WHIT">
<span class='line'>135</span> </span><span class="NAME">APDU.SW_WARNINGNVCHG</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6300</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: NV-Ram changed           */</span><span class="WHIT">
<span class='line'>136</span> </span><span class="NAME">APDU.SW_WARNINGCOUNT</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x63C0</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: Warning with counter     */</span><span class="WHIT">
<span class='line'>137</span> </span><span class="NAME">APDU.SW_WARNING0LEFT</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x63C0</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: Verify fail, no try left */</span><span class="WHIT">
<span class='line'>138</span> </span><span class="NAME">APDU.SW_WARNING1LEFT</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x63C1</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: Verify fail, 1 try left  */</span><span class="WHIT">
<span class='line'>139</span> </span><span class="NAME">APDU.SW_WARNING2LEFT</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x63C2</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: Verify fail, 2 tries left*/</span><span class="WHIT">
<span class='line'>140</span> </span><span class="NAME">APDU.SW_WARNING3LEFT</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x63C3</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Warning: Verify fail, 3 tries left*/</span><span class="WHIT">
<span class='line'>141</span> </span><span class="NAME">APDU.SW_EXECERR</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6400</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Exec error: NV-Ram not changed    */</span><span class="WHIT">
<span class='line'>142</span> </span><span class="NAME">APDU.SW_MEMERR</span><span class="WHIT">             </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6501</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Exec error: Memory failure        */</span><span class="WHIT">
<span class='line'>143</span> </span><span class="NAME">APDU.SW_MEMERRWRITE</span><span class="WHIT">        </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6581</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Exec error: Memory failure        */</span><span class="WHIT">
<span class='line'>144</span> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="WHIT">        </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6700</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Wrong length      */</span><span class="WHIT">
<span class='line'>145</span> 
<span class='line'>146</span> </span><span class="NAME">APDU.SW_CLANOTSUPPORTED</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6800</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Function in CLA byte not supported */</span><span class="WHIT">
<span class='line'>147</span> </span><span class="NAME">APDU.SW_LCNOTSUPPORTED</span><span class="WHIT">     </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6881</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Logical channel not supported */</span><span class="WHIT">
<span class='line'>148</span> </span><span class="NAME">APDU.SW_SMNOTSUPPORTED</span><span class="WHIT">     </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6882</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Secure Messaging not supported */</span><span class="WHIT">
<span class='line'>149</span> </span><span class="NAME">APDU.SW_LASTCMDEXPECTED</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6883</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Last command of the chain expected */</span><span class="WHIT">
<span class='line'>150</span> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="WHIT">  </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6884</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Command chaining not supported */</span><span class="WHIT">
<span class='line'>151</span> 
<span class='line'>152</span> </span><span class="NAME">APDU.SW_COMNOTALLOWED</span><span class="WHIT">      </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6900</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Command not allowed */</span><span class="WHIT">
<span class='line'>153</span> </span><span class="NAME">APDU.SW_COMINCOMPATIBLE</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6981</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Command incompatible with file structure */</span><span class="WHIT">
<span class='line'>154</span> </span><span class="NAME">APDU.SW_SECSTATNOTSAT</span><span class="WHIT">      </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6982</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Security condition not satisfied */</span><span class="WHIT">
<span class='line'>155</span> </span><span class="NAME">APDU.SW_AUTHMETHLOCKED</span><span class="WHIT">     </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6983</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Authentication method locked */</span><span class="WHIT">
<span class='line'>156</span> </span><span class="NAME">APDU.SW_REFDATANOTUSABLE</span><span class="WHIT">   </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6984</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Reference data not usable */</span><span class="WHIT">
<span class='line'>157</span> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6985</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Condition of use not satisfied */</span><span class="WHIT">
<span class='line'>158</span> </span><span class="NAME">APDU.SW_COMNOTALLOWNOEF</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6986</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Command not allowed (no current EF) */</span><span class="WHIT">
<span class='line'>159</span> </span><span class="NAME">APDU.SW_SMOBJMISSING</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6987</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Expected secure messaging object missing */</span><span class="WHIT">
<span class='line'>160</span> </span><span class="NAME">APDU.SW_INCSMDATAOBJECT</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6988</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Incorrect secure messaging data object */</span><span class="WHIT">
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="NAME">APDU.SW_INVPARA</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A00</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Wrong parameter P1-P2 */</span><span class="WHIT">
<span class='line'>163</span> </span><span class="NAME">APDU.SW_INVDATA</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A80</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Incorrect parameter in the command data field*/</span><span class="WHIT">
<span class='line'>164</span> </span><span class="NAME">APDU.SW_FUNCNOTSUPPORTED</span><span class="WHIT">   </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A81</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Function not supported */</span><span class="WHIT">
<span class='line'>165</span> </span><span class="NAME">APDU.SW_NOAPPL</span><span class="WHIT">             </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A82</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: File not found    */</span><span class="WHIT">
<span class='line'>166</span> </span><span class="NAME">APDU.SW_FILENOTFOUND</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A82</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: File not found    */</span><span class="WHIT">
<span class='line'>167</span> </span><span class="NAME">APDU.SW_RECORDNOTFOUND</span><span class="WHIT">     </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A83</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Record not found    */</span><span class="WHIT">
<span class='line'>168</span> </span><span class="NAME">APDU.SW_OUTOFMEMORY</span><span class="WHIT">        </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A84</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Not enough memory space in the file   */</span><span class="WHIT">
<span class='line'>169</span> </span><span class="NAME">APDU.SW_INVLCTLV</span><span class="WHIT">           </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A85</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Nc inconsistent with TLV structure */</span><span class="WHIT">
<span class='line'>170</span> </span><span class="NAME">APDU.SW_INVACC</span><span class="WHIT">             </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A85</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Access cond. n/f  */</span><span class="WHIT">
<span class='line'>171</span> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A86</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Incorrect P1-P2   */</span><span class="WHIT">
<span class='line'>172</span> </span><span class="NAME">APDU.SW_INVLC</span><span class="WHIT">              </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A87</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Lc inconsistent with P1-P2 */</span><span class="WHIT">
<span class='line'>173</span> </span><span class="NAME">APDU.SW_RDNOTFOUND</span><span class="WHIT">         </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Reference data not found*/</span><span class="WHIT">
<span class='line'>174</span> </span><span class="NAME">APDU.SW_FILEEXISTS</span><span class="WHIT">         </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A89</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: File already exists */</span><span class="WHIT">
<span class='line'>175</span> </span><span class="NAME">APDU.SW_DFNAMEEXISTS</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6A8A</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: DF name already exists */</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> </span><span class="NAME">APDU.SW_INVP1P2</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6B00</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Wrong parameter P1-P2 */</span><span class="WHIT">
<span class='line'>178</span> </span><span class="NAME">APDU.SW_INVLE</span><span class="WHIT">              </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6C00</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Invalid Le        */</span><span class="WHIT">
<span class='line'>179</span> </span><span class="NAME">APDU.SW_INVINS</span><span class="WHIT">             </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6D00</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Wrong instruction */</span><span class="WHIT">
<span class='line'>180</span> </span><span class="NAME">APDU.SW_INVCLA</span><span class="WHIT">             </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6E00</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: Class not supported */</span><span class="WHIT">
<span class='line'>181</span> </span><span class="NAME">APDU.SW_ACNOTSATISFIED</span><span class="WHIT">     </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x9804</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/* Access conditions not satisfied   */</span><span class="WHIT">
<span class='line'>182</span> </span><span class="NAME">APDU.SW_NOMORESTORAGE</span><span class="WHIT">      </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x9210</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/* No more storage available         */</span><span class="WHIT">
<span class='line'>183</span> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x6F00</span><span class="PUNC">;</span><span class="WHIT">      	</span><span class="COMM">/*-Checking error: No precise diagnosis */</span><span class="WHIT">
<span class='line'>184</span> 
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="COMM">/**
<span class='line'>187</span>  * Create an APDU object from the encoded form (Called internally)
<span class='line'>188</span>  *
<span class='line'>189</span>  * @param {ByteString} bs
<span class='line'>190</span>  */</span><span class="WHIT">
<span class='line'>191</span> </span><span class="NAME">APDU.prototype.fromByteString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">bs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bs.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Command APDU must be at least 4 bytes long"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="NAME">this.cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="NAME">this.ins</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="NAME">this.p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="NAME">this.p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> 
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bs.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extended</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">		</span><span class="NAME">l</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">			</span><span class="NAME">extended</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Extended length APDU too short"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">			</span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">			</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">			</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">	</span><span class="COMM">// Case 3s / Case 3e / Case 4s / Case 4e</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid Lc in APDU"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">			</span><span class="NAME">this.cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">			</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">			</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> 
<span class='line'>226</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">	</span><span class="COMM">// Case 4s / Case 4e</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">				</span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">				</span><span class="NAME">l</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">extended</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">					</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">						</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid Le in extended APDU"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">					</span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">bs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">					</span><span class="NAME">l</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">				</span><span class="NAME">this.ne</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">extended</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">			</span><span class="NAME">this.ne</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">extended</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>241</span> 
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Too many bytes in APDU"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>246</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>247</span> 
<span class='line'>248</span> 
<span class='line'>249</span> 
<span class='line'>250</span> </span><span class="COMM">/**
<span class='line'>251</span>  * Get encoded command APDU
<span class='line'>252</span>  *
<span class='line'>253</span>  * @type ByteString
<span class='line'>254</span>  * @return the encoded command APDU
<span class='line'>255</span>  */</span><span class="WHIT">
<span class='line'>256</span> </span><span class="NAME">APDU.prototype.getCommandAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> 
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.cla</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.ins</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.p1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.p2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> 
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hasCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.cdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hasNe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.ne</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> 
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extended</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">hasCData</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.cdata.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">					</span><span class="PUNC">(</span><span class="NAME">hasNe</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.ne</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> 
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">extended</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>273</span> 
<span class='line'>274</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hasCData</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.cdata.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">extended</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.cdata.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.cdata.length</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.cdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>281</span> 
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hasNe</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">extended</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.ne</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.ne</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>288</span> 
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>291</span> 
<span class='line'>292</span> 
<span class='line'>293</span> 
<span class='line'>294</span> </span><span class="COMM">/**
<span class='line'>295</span>  * Get encoded response APDU
<span class='line'>296</span>  *
<span class='line'>297</span>  * @type ByteString
<span class='line'>298</span>  * @return the encoded response APDU
<span class='line'>299</span>  */</span><span class="WHIT">
<span class='line'>300</span> </span><span class="NAME">APDU.prototype.getResponseAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> 
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.rdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>304</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.rdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>306</span> 
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.SW</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.SW</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> 
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>312</span> 
<span class='line'>313</span> 
<span class='line'>314</span> 
<span class='line'>315</span> </span><span class="COMM">/**
<span class='line'>316</span>  * Gets the class byte
<span class='line'>317</span>  *
<span class='line'>318</span>  * @type Number
<span class='line'>319</span>  * @return the class byte
<span class='line'>320</span>  */</span><span class="WHIT">
<span class='line'>321</span> </span><span class="NAME">APDU.prototype.getCLA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.cla</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>324</span> 
<span class='line'>325</span> 
<span class='line'>326</span> 
<span class='line'>327</span> </span><span class="COMM">/**
<span class='line'>328</span>  * Sets the class byte, e.g. after a transformation
<span class='line'>329</span>  *
<span class='line'>330</span>  * @parameter {Number} the new CLA byte
<span class='line'>331</span>  */</span><span class="WHIT">
<span class='line'>332</span> </span><span class="NAME">APDU.prototype.setCLA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cla</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="NAME">this.cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>335</span> 
<span class='line'>336</span> 
<span class='line'>337</span> 
<span class='line'>338</span> </span><span class="COMM">/**
<span class='line'>339</span>  * Test if command is an ISO command
<span class='line'>340</span>  *
<span class='line'>341</span>  * @type boolean
<span class='line'>342</span>  * @return true if command has ISO class byte
<span class='line'>343</span>  */</span><span class="WHIT">
<span class='line'>344</span> </span><span class="NAME">APDU.prototype.isISO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> 
<span class='line'>349</span> 
<span class='line'>350</span> </span><span class="COMM">/**
<span class='line'>351</span>  * Test if command uses extended length
<span class='line'>352</span>  *
<span class='line'>353</span>  * @type boolean
<span class='line'>354</span>  * @return true if APDU uses extended length
<span class='line'>355</span>  */</span><span class="WHIT">
<span class='line'>356</span> </span><span class="NAME">APDU.prototype.isExtendedLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.cdata.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasLe</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.ne</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>359</span> 
<span class='line'>360</span> 
<span class='line'>361</span> 
<span class='line'>362</span> </span><span class="COMM">/**
<span class='line'>363</span>  * Test if command chaining is indicated
<span class='line'>364</span>  *
<span class='line'>365</span>  * @type boolean
<span class='line'>366</span>  * @return true if chaining bit is set
<span class='line'>367</span>  */</span><span class="WHIT">
<span class='line'>368</span> </span><span class="NAME">APDU.prototype.isChained</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>370</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>371</span> 
<span class='line'>372</span> 
<span class='line'>373</span> 
<span class='line'>374</span> </span><span class="COMM">/**
<span class='line'>375</span>  * Test if command is send using secure messaging
<span class='line'>376</span>  *
<span class='line'>377</span>  * @type boolean
<span class='line'>378</span>  * @return true if secure messaging is indicated in CLA byte
<span class='line'>379</span>  */</span><span class="WHIT">
<span class='line'>380</span> </span><span class="NAME">APDU.prototype.isSecureMessaging</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x08</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x08</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> 
<span class='line'>385</span> 
<span class='line'>386</span> </span><span class="COMM">/**
<span class='line'>387</span>  * Test if command is send using secure messaging
<span class='line'>388</span>  *
<span class='line'>389</span>  * @type boolean
<span class='line'>390</span>  * @return true if secure messaging is using an authenticated header
<span class='line'>391</span>  */</span><span class="WHIT">
<span class='line'>392</span> </span><span class="NAME">APDU.prototype.isAuthenticatedHeader</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>394</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>395</span> 
<span class='line'>396</span> 
<span class='line'>397</span> 
<span class='line'>398</span> </span><span class="COMM">/**
<span class='line'>399</span>  * Gets the instruction byte
<span class='line'>400</span>  *
<span class='line'>401</span>  * @type Number
<span class='line'>402</span>  * @return the instruction byte
<span class='line'>403</span>  */</span><span class="WHIT">
<span class='line'>404</span> </span><span class="NAME">APDU.prototype.getINS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.ins</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>407</span> 
<span class='line'>408</span> 
<span class='line'>409</span> 
<span class='line'>410</span> </span><span class="COMM">/**
<span class='line'>411</span>  * Gets the P1 byte
<span class='line'>412</span>  *
<span class='line'>413</span>  * @type Number
<span class='line'>414</span>  * @return the P1 byte
<span class='line'>415</span>  */</span><span class="WHIT">
<span class='line'>416</span> </span><span class="NAME">APDU.prototype.getP1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.p1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>419</span> 
<span class='line'>420</span> 
<span class='line'>421</span> 
<span class='line'>422</span> </span><span class="COMM">/**
<span class='line'>423</span>  * Gets the P2 byte
<span class='line'>424</span>  *
<span class='line'>425</span>  * @type Number
<span class='line'>426</span>  * @return the P2 byte
<span class='line'>427</span>  */</span><span class="WHIT">
<span class='line'>428</span> </span><span class="NAME">APDU.prototype.getP2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.p2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>431</span> 
<span class='line'>432</span> 
<span class='line'>433</span> 
<span class='line'>434</span> </span><span class="COMM">/**
<span class='line'>435</span>  * Set the command data
<span class='line'>436</span>  *
<span class='line'>437</span>  * @param {ByteString} cdata the command data
<span class='line'>438</span>  */</span><span class="WHIT">
<span class='line'>439</span> </span><span class="NAME">APDU.prototype.setCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">		</span><span class="NAME">this.cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">		</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.cdata</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>445</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>446</span> 
<span class='line'>447</span> 
<span class='line'>448</span> 
<span class='line'>449</span> </span><span class="COMM">/**
<span class='line'>450</span>  * Gets the command data
<span class='line'>451</span>  *
<span class='line'>452</span>  * @type ByteString
<span class='line'>453</span>  * @return the command data, if any else undefined
<span class='line'>454</span>  */</span><span class="WHIT">
<span class='line'>455</span> </span><span class="NAME">APDU.prototype.getCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.cdata</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>458</span> 
<span class='line'>459</span> 
<span class='line'>460</span> 
<span class='line'>461</span> </span><span class="COMM">/**
<span class='line'>462</span>  * Check if APDU has command data
<span class='line'>463</span>  *
<span class='line'>464</span>  * @type boolean
<span class='line'>465</span>  * @return true if command APDU has data field
<span class='line'>466</span>  */</span><span class="WHIT">
<span class='line'>467</span> </span><span class="NAME">APDU.prototype.hasCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>468</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.cdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>469</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>470</span> 
<span class='line'>471</span> 
<span class='line'>472</span> 
<span class='line'>473</span> </span><span class="COMM">/**
<span class='line'>474</span>  * Gets the command data as a list of TLV objects
<span class='line'>475</span>  *
<span class='line'>476</span>  * @type TLVList
<span class='line'>477</span>  * @return the command data as TLV list, if any else undefined
<span class='line'>478</span>  */</span><span class="WHIT">
<span class='line'>479</span> </span><span class="NAME">APDU.prototype.getCDataAsTLVList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No data in command APDU"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>483</span> 
<span class='line'>484</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>485</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TLVList</span><span class="PUNC">(</span><span class="NAME">this.cdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">TLV.EMV</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>488</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid TLV data in command APDU"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>490</span> 
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>492</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>493</span> 
<span class='line'>494</span> 
<span class='line'>495</span> 
<span class='line'>496</span> </span><span class="COMM">/**
<span class='line'>497</span>  * Gets the number of expected bytes
<span class='line'>498</span>  *
<span class='line'>499</span>  * @type Number
<span class='line'>500</span>  * @return the number of expected bytes or undefined
<span class='line'>501</span>  */</span><span class="WHIT">
<span class='line'>502</span> </span><span class="NAME">APDU.prototype.getNe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.ne</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>505</span> 
<span class='line'>506</span> 
<span class='line'>507</span> 
<span class='line'>508</span> </span><span class="COMM">/**
<span class='line'>509</span>  * Check if APDU has Le field
<span class='line'>510</span>  *
<span class='line'>511</span>  * @type boolean
<span class='line'>512</span>  * @return true if command APDU has Le field
<span class='line'>513</span>  */</span><span class="WHIT">
<span class='line'>514</span> </span><span class="NAME">APDU.prototype.hasLe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.ne</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>517</span> 
<span class='line'>518</span> 
<span class='line'>519</span> 
<span class='line'>520</span> </span><span class="COMM">/**
<span class='line'>521</span>  * Set secure channel object to be used in wrap and unwrap methods
<span class='line'>522</span>  *
<span class='line'>523</span>  * @param {SecureChannel} secureChannel the channel
<span class='line'>524</span>  */</span><span class="WHIT">
<span class='line'>525</span> </span><span class="NAME">APDU.prototype.setSecureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">secureChannel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="NAME">this.secureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">secureChannel</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>528</span> 
<span class='line'>529</span> 
<span class='line'>530</span> 
<span class='line'>531</span> </span><span class="COMM">/**
<span class='line'>532</span>  * Return the secure channel, if any
<span class='line'>533</span>  *
<span class='line'>534</span>  * @type SecureChannel
<span class='line'>535</span>  * @return the secure channel
<span class='line'>536</span>  */</span><span class="WHIT">
<span class='line'>537</span> </span><span class="NAME">APDU.prototype.getSecureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>538</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.secureChannel</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>539</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>540</span> 
<span class='line'>541</span> 
<span class='line'>542</span> 
<span class='line'>543</span> </span><span class="COMM">/**
<span class='line'>544</span>  * Test if a secure channel is defined for this APDU
<span class='line'>545</span>  *
<span class='line'>546</span>  * @type boolean
<span class='line'>547</span>  * @return true, if secure channel is set
<span class='line'>548</span>  */</span><span class="WHIT">
<span class='line'>549</span> </span><span class="NAME">APDU.prototype.hasSecureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>550</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.secureChannel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.secureChannel</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>551</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>552</span> 
<span class='line'>553</span> 
<span class='line'>554</span> 
<span class='line'>555</span> </span><span class="COMM">/**
<span class='line'>556</span>  * Wrap APDU using secure channel
<span class='line'>557</span>  */</span><span class="WHIT">
<span class='line'>558</span> </span><span class="NAME">APDU.prototype.wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasSecureChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT">		</span><span class="NAME">this.secureChannel.wrap</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>562</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>563</span> 
<span class='line'>564</span> 
<span class='line'>565</span> 
<span class='line'>566</span> </span><span class="COMM">/**
<span class='line'>567</span>  * Unwrap APDU using secure channel
<span class='line'>568</span>  */</span><span class="WHIT">
<span class='line'>569</span> </span><span class="NAME">APDU.prototype.unwrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>570</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasSecureChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">		</span><span class="NAME">this.secureChannel.unwrap</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>573</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>574</span> 
<span class='line'>575</span> 
<span class='line'>576</span> 
<span class='line'>577</span> </span><span class="COMM">/**
<span class='line'>578</span>  * Sets the response data field for the response APDU
<span class='line'>579</span>  *
<span class='line'>580</span>  * @param {ByteString} data the response data field
<span class='line'>581</span>  */</span><span class="WHIT">
<span class='line'>582</span> </span><span class="NAME">APDU.prototype.setRData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>584</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Too many bytes in APDU"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>585</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>586</span> </span><span class="WHIT">	</span><span class="NAME">this.rdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>587</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>588</span> 
<span class='line'>589</span> 
<span class='line'>590</span> 
<span class='line'>591</span> </span><span class="COMM">/**
<span class='line'>592</span>  * Get the response data
<span class='line'>593</span>  *
<span class='line'>594</span>  * @type ByteString
<span class='line'>595</span>  * @return the response data
<span class='line'>596</span>  */</span><span class="WHIT">
<span class='line'>597</span> </span><span class="NAME">APDU.prototype.getRData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>598</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.rdata</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>599</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>600</span> 
<span class='line'>601</span> 
<span class='line'>602</span> 
<span class='line'>603</span> </span><span class="COMM">/**
<span class='line'>604</span>  * Check if APDU has response data
<span class='line'>605</span>  *
<span class='line'>606</span>  * @type boolean
<span class='line'>607</span>  * @return true if response APDU has data field
<span class='line'>608</span>  */</span><span class="WHIT">
<span class='line'>609</span> </span><span class="NAME">APDU.prototype.hasRData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>610</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.rdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.rdata</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>611</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>612</span> 
<span class='line'>613</span> 
<span class='line'>614</span> 
<span class='line'>615</span> </span><span class="COMM">/**
<span class='line'>616</span>  * Sets the status word for the response ADPU
<span class='line'>617</span>  *
<span class='line'>618</span>  * @param {Number} sw the status word
<span class='line'>619</span>  */</span><span class="WHIT">
<span class='line'>620</span> </span><span class="NAME">APDU.prototype.setSW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sw</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>621</span> </span><span class="WHIT">	</span><span class="NAME">this.SW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>622</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>623</span> 
<span class='line'>624</span> 
<span class='line'>625</span> 
<span class='line'>626</span> </span><span class="COMM">/**
<span class='line'>627</span>  * Get the status word
<span class='line'>628</span>  *
<span class='line'>629</span>  * @type Number
<span class='line'>630</span>  * @return the status word
<span class='line'>631</span>  */</span><span class="WHIT">
<span class='line'>632</span> </span><span class="NAME">APDU.prototype.getSW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>633</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.SW</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>634</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>635</span> 
<span class='line'>636</span> 
<span class='line'>637</span> 
<span class='line'>638</span> </span><span class="COMM">/**
<span class='line'>639</span>  * Return a human readable form of this object
<span class='line'>640</span>  */</span><span class="WHIT">
<span class='line'>641</span> </span><span class="NAME">APDU.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>642</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getResponseAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>643</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>644</span> 
<span class='line'>645</span> 
<span class='line'>646</span> 
<span class='line'>647</span> </span><span class="COMM">/**
<span class='line'>648</span>  * Simple unit test
<span class='line'>649</span>  */</span><span class="WHIT">
<span class='line'>650</span> </span><span class="NAME">APDU.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT">	</span><span class="COMM">// Case 1</span><span class="WHIT">
<span class='line'>652</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>653</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>655</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>656</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>657</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>658</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>659</span> 
<span class='line'>660</span> </span><span class="WHIT">	</span><span class="COMM">// Case 2 Short</span><span class="WHIT">
<span class='line'>661</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>662</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>664</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>665</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C00"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>666</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>667</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>668</span> 
<span class='line'>669</span> </span><span class="WHIT">	</span><span class="COMM">// Case 2 Extended</span><span class="WHIT">
<span class='line'>670</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>671</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>672</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>673</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>674</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C000000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>675</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>676</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>677</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>678</span> 
<span class='line'>679</span> </span><span class="WHIT">	</span><span class="COMM">// Case 3 Short</span><span class="WHIT">
<span class='line'>680</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"3F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>681</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>682</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>683</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>684</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C023F00"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>685</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>686</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>687</span> 
<span class='line'>688</span> </span><span class="WHIT">	</span><span class="COMM">// Case 3 Extended</span><span class="WHIT">
<span class='line'>689</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>690</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>691</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>692</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>693</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>694</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C000100"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>695</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>696</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>697</span> 
<span class='line'>698</span> </span><span class="WHIT">	</span><span class="COMM">// Case 4 Short</span><span class="WHIT">
<span class='line'>699</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"3F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>700</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>701</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>702</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>703</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C023F0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>704</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>705</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>706</span> 
<span class='line'>707</span> </span><span class="WHIT">	</span><span class="COMM">// Case 4b Extended</span><span class="WHIT">
<span class='line'>708</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>709</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>710</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>711</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>712</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C000100"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>713</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>714</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>715</span> 
<span class='line'>716</span> </span><span class="WHIT">	</span><span class="COMM">// Case 4b Extended</span><span class="WHIT">
<span class='line'>717</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"3F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>718</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>719</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>720</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>721</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">b.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00A4000C0000023F000000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>722</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>723</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">a.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>724</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>725</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  --------- 
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview AccessController base class
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="WHIT"> 
<span class='line'> 28</span> </span><span class="COMM">/**
<span class='line'> 29</span>  * Create an default controller granting read but denying write access 
<span class='line'> 30</span>  * @Class Class implementing a default access controller
<span class='line'> 31</span>  * @constructor
<span class='line'> 32</span>  */</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">AccessController</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 34</span> </span><span class="WHIT">	</span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"AccessController"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 35</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 36</span> 
<span class='line'> 37</span> </span><span class="NAME">exports.AccessController</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">AccessController</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 38</span> 
<span class='line'> 39</span> 
<span class='line'> 40</span> 
<span class='line'> 41</span> </span><span class="COMM">/**
<span class='line'> 42</span>  * Check if read access to file system node is allowed
<span class='line'> 43</span>  *
<span class='line'> 44</span>  * @param {APDU} apdu the APDU used to access the object
<span class='line'> 45</span>  * @param {FSNode} node the file system object
<span class='line'> 46</span>  * @type boolean
<span class='line'> 47</span>  * @return true if access is allowed
<span class='line'> 48</span>  */</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">AccessController.prototype.checkFileReadAccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ci</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 52</span> 
<span class='line'> 53</span> 
<span class='line'> 54</span> 
<span class='line'> 55</span> </span><span class="COMM">/**
<span class='line'> 56</span>  * Check if write access to file system node is allowed
<span class='line'> 57</span>  *
<span class='line'> 58</span>  * @param {APDU} apdu the APDU used to access the object
<span class='line'> 59</span>  * @param {FSNode} node the file system object
<span class='line'> 60</span>  * @type boolean
<span class='line'> 61</span>  * @return true if access is allowed
<span class='line'> 62</span>  */</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="NAME">AccessController.prototype.checkFileWriteAccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ci</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 66</span> 
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="COMM">/**
<span class='line'> 70</span>  * Check if command is allowed
<span class='line'> 71</span>  *
<span class='line'> 72</span>  * @param {APDU} apdu the APDU to check
<span class='line'> 73</span>  * @type boolean
<span class='line'> 74</span>  * @return true if access is allowed
<span class='line'> 75</span>  */</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="NAME">AccessController.prototype.checkCommandAccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ci</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="NAME">AccessController.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.name</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 85</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview AuthenticationObject - Password, PIN or key container for external authentication
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="WHIT">  </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FileSystemIdObject'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FileSystemIdObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> </span><span class="COMM">/**
<span class='line'> 33</span>  * Create an authentication object
<span class='line'> 34</span>  *
<span class='line'> 35</span>  * @class Class implementing authentication objects like PINs, PACE passwords or keys
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @param {String} name the human readable name of the object
<span class='line'> 38</span>  * @param {String} type one of AuthenticationObject.TYPE_PACE or AuthenticationObject.TYPE_PIN
<span class='line'> 39</span>  * @param {Number} id the password or key id
<span class='line'> 40</span>  * @param {ByteString} value the reference value
<span class='line'> 41</span>  */</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">AuthenticationObject</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">FileSystemIdObject.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">this.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.retrycounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.initialretrycounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="NAME">this.usecounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="NAME">this.resetcounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="NAME">this.minLength</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="NAME">this.isActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">				</span><span class="COMM">// State after using ACTIVATE / DEACTIVATE</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="NAME">this.isEnabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">				</span><span class="COMM">// State after using ENABLE / DISABLE VERIFICATION REQUIREMENT</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="NAME">this.isTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="COMM">// State before first change PIN</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="NAME">this.isTerminated</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="COMM">// State after TERMINATE</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">	</span><span class="NAME">this.allowActivate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="NAME">this.allowDeactivate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">	</span><span class="NAME">this.allowEnable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">	</span><span class="NAME">this.allowDisable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">	</span><span class="NAME">this.allowResetRetryCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="NAME">this.allowResetValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">	</span><span class="NAME">this.allowTerminate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="NAME">this.unsuspendAuthenticationObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="NAME">this.unblockAuthenticationObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 65</span> 
<span class='line'> 66</span> </span><span class="NAME">AuthenticationObject.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="NAME">AuthenticationObject.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">AuthenticationObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="NAME">exports.AuthenticationObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">AuthenticationObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> 
<span class='line'> 71</span> 
<span class='line'> 72</span> </span><span class="NAME">AuthenticationObject.TYPE_PACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"pace"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="NAME">AuthenticationObject.TYPE_PIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"pin"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> 
<span class='line'> 76</span> 
<span class='line'> 77</span> </span><span class="COMM">/**
<span class='line'> 78</span>  * Override from base class
<span class='line'> 79</span>  */</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="NAME">AuthenticationObject.prototype.getType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> 
<span class='line'> 85</span> 
<span class='line'> 86</span> </span><span class="NAME">AuthenticationObject.prototype.isBlocked</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.initialretrycounter</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.retrycounter</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 89</span> 
<span class='line'> 90</span> 
<span class='line'> 91</span> 
<span class='line'> 92</span> </span><span class="NAME">AuthenticationObject.prototype.isSuspended</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.initialretrycounter</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.retrycounter</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> 
<span class='line'> 97</span> 
<span class='line'> 98</span> </span><span class="COMM">/**
<span class='line'> 99</span>  * Activate authentication object
<span class='line'>100</span>  */</span><span class="WHIT">
<span class='line'>101</span> </span><span class="NAME">AuthenticationObject.prototype.activate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.allowActivate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Activate not allowed for authentication object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="NAME">this.isActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>107</span> 
<span class='line'>108</span> 
<span class='line'>109</span> 
<span class='line'>110</span> </span><span class="COMM">/**
<span class='line'>111</span>  * Deactivate authentication object
<span class='line'>112</span>  */</span><span class="WHIT">
<span class='line'>113</span> </span><span class="NAME">AuthenticationObject.prototype.deactivate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.allowDeactivate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Deactivate not allowed for authentication object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="NAME">this.isActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>119</span> 
<span class='line'>120</span> 
<span class='line'>121</span> 
<span class='line'>122</span> </span><span class="COMM">/**
<span class='line'>123</span>  * Reset retry counter and optionally set new reference value
<span class='line'>124</span>  *
<span class='line'>125</span>  * @param {ByteString} newValue new reference value
<span class='line'>126</span>  */</span><span class="WHIT">
<span class='line'>127</span> </span><span class="NAME">AuthenticationObject.prototype.resetRetryCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.allowResetRetryCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reset retry counter not allowed for authentication object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newValue</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.allowResetValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reset retry counter not allowed with new value for authentication object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.resetcounter</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.resetcounter</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reset retry counter is 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="NAME">this.resetcounter</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newValue</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newValue.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.minLength</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"New reference data too short"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="NAME">this.retrycounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.initialretrycounter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">	</span><span class="NAME">this.isActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> 
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.initialretrycounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">		</span><span class="NAME">this.retrycounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.initialretrycounter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="NAME">this.isTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="NAME">this.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>153</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> 
<span class='line'>155</span> 
<span class='line'>156</span> 
<span class='line'>157</span> </span><span class="COMM">/**
<span class='line'>158</span>  * Change reference data, optionally verifying the old value before
<span class='line'>159</span>  *
<span class='line'>160</span>  * @param {Number} qualifier command qualifier, 00 = oldPIN||newPIN, 01 = newPIN
<span class='line'>161</span>  * @param {ByteString} value new reference value
<span class='line'>162</span>  */</span><span class="WHIT">
<span class='line'>163</span> </span><span class="NAME">AuthenticationObject.prototype.changeReferenceData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">qualifier</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.allowChangeReferenceData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Change reference data not allowed for authentication object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">qualifier</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.isTerminated</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Change reference data with P1=01 not allowed non terminated authentication object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.associatedKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.associatedKey.isTerminated</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_REFDATANOTUSABLE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Associated key is not terminated"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">qualifier</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.value.length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Command data does not contain a new PIN value for P1=00"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">qualifier</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">		</span><span class="NAME">this.verify</span><span class="PUNC">(</span><span class="NAME">value.left</span><span class="PUNC">(</span><span class="NAME">this.value.length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">this.value.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.minLength</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"New reference data too short"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="NAME">this.value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="NAME">this.isTerminated</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> 
<span class='line'>192</span> 
<span class='line'>193</span> </span><span class="COMM">/**
<span class='line'>194</span>  * Verify PIN value
<span class='line'>195</span>  *
<span class='line'>196</span>  * @param {ByteString} value reference value
<span class='line'>197</span>  */</span><span class="WHIT">
<span class='line'>198</span> </span><span class="NAME">AuthenticationObject.prototype.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isBlocked</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_AUTHMETHLOCKED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication method blocked"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isTerminated</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_REFDATANOTUSABLE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication method terminated"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="NAME">this.decreaseRetryCounter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.value.equals</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WARNINGCOUNT</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">this.retrycounter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="NAME">this.restoreRetryCounter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>212</span> 
<span class='line'>213</span> 
<span class='line'>214</span> 
<span class='line'>215</span> </span><span class="COMM">/**
<span class='line'>216</span>  * Deactivate authentication object
<span class='line'>217</span>  */</span><span class="WHIT">
<span class='line'>218</span> </span><span class="NAME">AuthenticationObject.prototype.decreaseRetryCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.initialretrycounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">		</span><span class="NAME">this.retrycounter</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>222</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>223</span> 
<span class='line'>224</span> 
<span class='line'>225</span> 
<span class='line'>226</span> </span><span class="COMM">/**
<span class='line'>227</span>  * Deactivate authentication object
<span class='line'>228</span>  */</span><span class="WHIT">
<span class='line'>229</span> </span><span class="NAME">AuthenticationObject.prototype.restoreRetryCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.initialretrycounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">		</span><span class="NAME">this.retrycounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.initialretrycounter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>233</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>234</span> 
<span class='line'>235</span> 
<span class='line'>236</span> 
<span class='line'>237</span> </span><span class="COMM">/**
<span class='line'>238</span>  * Terminate authentication object
<span class='line'>239</span>  */</span><span class="WHIT">
<span class='line'>240</span> </span><span class="NAME">AuthenticationObject.prototype.terminate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.allowTerminate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"AuthenticationObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Terminate not allowed for authentication object"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">	</span><span class="NAME">this.isTerminated</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> 
<span class='line'>248</span> 
<span class='line'>249</span> </span><span class="COMM">/**
<span class='line'>250</span>  * Convert object to a human readable string
<span class='line'>251</span>  */</span><span class="WHIT">
<span class='line'>252</span> </span><span class="NAME">AuthenticationObject.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isBlocked</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"blocked "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isTerminated</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">		</span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"terminated "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">			</span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"active "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isActive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">			</span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"enabled "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">			</span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"disabled "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isTransport</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">			</span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"transport "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">":"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") is "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.initialretrycounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" RC="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.retrycounter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>277</span> 
<span class='line'>278</span> 
<span class='line'>279</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of an ISO 7816-4 command interpreter
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="WHIT">   </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/TransparentEF'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">TransparentEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">LinearEF</span><span class="WHIT">        </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/LinearEF'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">LinearEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/DataUnitAPDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">DataUnitAPDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> </span><span class="COMM">/**
<span class='line'> 35</span>  * Create a command interpreter
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @class Class implementing a command interpreter that handles ISO 7816-4 command APDUs
<span class='line'> 38</span>  * @constructor
<span class='line'> 39</span>  * @param {FileSelector} fileSelector the file selector object
<span class='line'> 40</span>  */</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">CommandInterpreter</span><span class="PUNC">(</span><span class="NAME">fileSelector</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.fileSelector</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fileSelector</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 44</span> 
<span class='line'> 45</span> </span><span class="NAME">exports.CommandInterpreter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CommandInterpreter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> 
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="COMM">/**
<span class='line'> 50</span>  * Set secure channel
<span class='line'> 51</span>  *
<span class='line'> 52</span>  * @param {SecureChannel} secureChannel the secure channel to used for unwrapping and wrapping APDUs
<span class='line'> 53</span>  */</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="NAME">CommandInterpreter.prototype.setSecureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">secureChannel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">	</span><span class="NAME">this.secureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">secureChannel</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="COMM">/**
<span class='line'> 61</span>  * Return status of secure channel
<span class='line'> 62</span>  *
<span class='line'> 63</span>  * @type boolean
<span class='line'> 64</span>  * @return true if secure channel is active
<span class='line'> 65</span>  */</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="NAME">CommandInterpreter.prototype.hasSecureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.secureChannel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.secureChannel</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> 
<span class='line'> 72</span> </span><span class="COMM">/**
<span class='line'> 73</span>  * Process a READ BINARY APDU
<span class='line'> 74</span>  *
<span class='line'> 75</span>  * @param {APDU} apdu the command and response APDU
<span class='line'> 76</span>  */</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="NAME">CommandInterpreter.prototype.readBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">apdu.hasLe</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Wrong length - missing Le field"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isChained</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Chaining not supported in READ BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 85</span> 
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dua</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> 
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">dua.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Command data not expected in  READ BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ef</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dua.getSFI</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dua.getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.selectSFI</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.selectFID</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getCurrentEF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> 
<span class='line'>103</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_COMNOTALLOWNOEF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No current EF in READ BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>107</span> 
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_COMINCOMPATIBLE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"EF is not a transparent file in READ BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>111</span> 
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getMeta</span><span class="PUNC">(</span><span class="STRN">"accessController"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ac.checkFileReadAccess</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ef</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SECSTATNOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Read access not allowed as determined by "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>116</span> 
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dua.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getNe</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> 
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ef.readBinary</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> 
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setRData</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>124</span> 
<span class='line'>125</span> 
<span class='line'>126</span> 
<span class='line'>127</span> </span><span class="COMM">/**
<span class='line'>128</span>  * Process an UPDATE BINARY APDU
<span class='line'>129</span>  *
<span class='line'>130</span>  * @param {APDU} apdu the command and response APDU
<span class='line'>131</span>  */</span><span class="WHIT">
<span class='line'>132</span> </span><span class="NAME">CommandInterpreter.prototype.updateBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isChained</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Chaining not supported in READ BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">apdu.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No data found in UPDATE BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span> 
<span class='line'>141</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dua</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> 
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dua.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No data found in UPDATE BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>146</span> 
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ef</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dua.getSFI</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dua.getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> 
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.selectSFI</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.selectFID</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getCurrentEF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_COMNOTALLOWNOEF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No current EF in UPDATE BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>162</span> 
<span class='line'>163</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_COMINCOMPATIBLE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"EF is not a transparent file in UPDATE BINARY"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>166</span> 
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getMeta</span><span class="PUNC">(</span><span class="STRN">"accessController"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ac.checkFileWriteAccess</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ef</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SECSTATNOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Write access not allowed as determined by "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dua.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dua.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> 
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="NAME">ef.updateBinary</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>177</span> 
<span class='line'>178</span> 
<span class='line'>179</span> 
<span class='line'>180</span> </span><span class="COMM">/**
<span class='line'>181</span>  * Process a READ RECORD APDU
<span class='line'>182</span>  *
<span class='line'>183</span>  * @param {APDU} apdu the command and response APDU
<span class='line'>184</span>  */</span><span class="WHIT">
<span class='line'>185</span> </span><span class="NAME">CommandInterpreter.prototype.readRecord</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">apdu.hasLe</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Wrong length - missing Le field"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>189</span> 
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isChained</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Chaining not supported in READ RECORD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>193</span> 
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">recno</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">qualifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x7</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> 
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.selectSFI</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">		</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getCurrentEF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_COMNOTALLOWNOEF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No current EF in READ RECORD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">ef</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">LinearEF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_COMINCOMPATIBLE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"EF is not a linear file in READ RECORD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>211</span> 
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getMeta</span><span class="PUNC">(</span><span class="STRN">"accessController"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ac.checkFileReadAccess</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ef</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SECSTATNOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Read access not allowed as determined by "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>216</span> 
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ef.readRecord</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">recno</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">qualifier</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu.getNe</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> 
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setRData</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> 
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="COMM">/**
<span class='line'>225</span>  * Performs a VERIFY command
<span class='line'>226</span>  *
<span class='line'>227</span>  * @param {APDU} the apdu
<span class='line'>228</span>  */</span><span class="WHIT">
<span class='line'>229</span> </span><span class="NAME">CommandInterpreter.prototype.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isChained</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Chaining not supported in command"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>233</span> 
<span class='line'>234</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pinao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getObject</span><span class="PUNC">(</span><span class="NAME">AuthenticationObject.TYPE_PIN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">pinao</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_RDNOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"PIN with reference "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>238</span> 
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">		</span><span class="NAME">pinao.verify</span><span class="PUNC">(</span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.fileSelector.isAuthenticated</span><span class="PUNC">(</span><span class="NAME">ao</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">			</span><span class="NAME">pinao.determineStatus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>249</span> 
<span class='line'>250</span> 
<span class='line'>251</span> 
<span class='line'>252</span> </span><span class="COMM">/**
<span class='line'>253</span>  * Performs a CHANGE REFERENCE DATA command
<span class='line'>254</span>  *
<span class='line'>255</span>  * @param {APDU} the apdu
<span class='line'>256</span>  */</span><span class="WHIT">
<span class='line'>257</span> </span><span class="NAME">CommandInterpreter.prototype.changeReferenceData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isChained</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Chaining not supported in command"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">apdu.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Command must have C-data"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>264</span> 
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pinao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getObject</span><span class="PUNC">(</span><span class="NAME">AuthenticationObject.TYPE_PIN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">pinao</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_RDNOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"PIN with reference "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>269</span> 
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="NAME">pinao.changeReferenceData</span><span class="PUNC">(</span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> 
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>274</span> 
<span class='line'>275</span> 
<span class='line'>276</span> 
<span class='line'>277</span> </span><span class="COMM">/**
<span class='line'>278</span>  * Performs a RESET RETRY COUNTER command
<span class='line'>279</span>  *
<span class='line'>280</span>  * @param {APDU} the apdu
<span class='line'>281</span>  */</span><span class="WHIT">
<span class='line'>282</span> </span><span class="NAME">CommandInterpreter.prototype.resetRetryCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isChained</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Chaining not supported in command"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> 
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">apdu.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Command must have C-data"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x03</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Command must not have C-data"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid P1 or P2"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>299</span> 
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pinao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getObject</span><span class="PUNC">(</span><span class="NAME">AuthenticationObject.TYPE_PIN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">pinao</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_RDNOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"PIN with reference "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>304</span> 
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="NAME">pinao.resetRetryCounter</span><span class="PUNC">(</span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> 
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>309</span> 
<span class='line'>310</span> 
<span class='line'>311</span> 
<span class='line'>312</span> </span><span class="COMM">/**
<span class='line'>313</span>  * Process a MANAGE SECURITY ENVIRONMENT APDU
<span class='line'>314</span>  *
<span class='line'>315</span>  * @param {APDU} apdu the command and response APDU
<span class='line'>316</span>  */</span><span class="WHIT">
<span class='line'>317</span> </span><span class="NAME">CommandInterpreter.prototype.manageSecurityEnvironment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">se</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getSecurityEnvironment</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>322</span> 
<span class='line'>323</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x0F</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> 	</span><span class="COMM">// SET</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.APDU.SW_FUNCNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Only MANAGE SE set variant supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>326</span> 
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">p2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> 
<span class='line'>329</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">					</span><span class="COMM">// Verification, Encryption, External Authentication and Key Agreement</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">tlv.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Dirty trick to deserialize as TLV tree</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">		</span><span class="NAME">se.VEXK.add</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">					</span><span class="COMM">// Calculation, Decryption, Internal Authentication and Key Agreement</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">tlv.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Dirty trick to deserialize as TLV tree</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT">		</span><span class="NAME">se.CDIK.add</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">					</span><span class="COMM">// Secure Messaging Response</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">tlv.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Dirty trick to deserialize as TLV tree</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">		</span><span class="NAME">se.SMRES.add</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">					</span><span class="COMM">// Secure Messaging Command</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">tlv.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Dirty trick to deserialize as TLV tree</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">		</span><span class="NAME">se.SMCOM.add</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> 
<span class='line'>349</span> 
<span class='line'>350</span> </span><span class="COMM">/**
<span class='line'>351</span>  * Process a secure messaging command APDU, if secure messaging is active.
<span class='line'>352</span>  *
<span class='line'>353</span>  * @param {APDU} apdu the command APDU
<span class='line'>354</span>  */</span><span class="WHIT">
<span class='line'>355</span> </span><span class="NAME">CommandInterpreter.prototype.handleSecMsgCommandAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isSecureMessaging</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasSecureChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">			</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>359</span> </span><span class="WHIT">				</span><span class="NAME">apdu.setSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.secureChannel</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span> </span><span class="WHIT">				</span><span class="NAME">apdu.unwrap</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">			</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">				</span><span class="NAME">this.setSecureChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// Reset secure channel</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SMNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No secure messaging channel"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasSecureChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">			</span><span class="NAME">this.setSecureChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// Reset secure channel</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>374</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>375</span> 
<span class='line'>376</span> 
<span class='line'>377</span> 
<span class='line'>378</span> </span><span class="COMM">/**
<span class='line'>379</span>  * Process a secure messaging response APDU, if secure messaging is active
<span class='line'>380</span>  *
<span class='line'>381</span>  * @param {APDU} apdu the response APDU
<span class='line'>382</span>  */</span><span class="WHIT">
<span class='line'>383</span> </span><span class="NAME">CommandInterpreter.prototype.handleSecMsgResponseAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isSecureMessaging</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.hasSecureChannel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">		</span><span class="NAME">apdu.wrap</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>386</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>387</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>388</span> 
<span class='line'>389</span> 
<span class='line'>390</span> 
<span class='line'>391</span> </span><span class="COMM">/**
<span class='line'>392</span>  * Dispatch to command handler based on instruction code
<span class='line'>393</span>  *
<span class='line'>394</span>  * @param {APDU} apdu the command and response APDU
<span class='line'>395</span>  * @param {Number} ins instruction code
<span class='line'>396</span>  */</span><span class="WHIT">
<span class='line'>397</span> </span><span class="NAME">CommandInterpreter.prototype.dispatch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ins</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">apdu.isISO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_INVCLA</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>402</span> 
<span class='line'>403</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isChained</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CHAINNOTSUPPORTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Chaining not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>406</span> 
<span class='line'>407</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">ins</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>408</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_SELECT</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>409</span> </span><span class="WHIT">			</span><span class="NAME">this.fileSelector.processSelectAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_READ_BINARY</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">			</span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_UPDATE_BINARY</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">			</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_READ_RECORD</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">			</span><span class="NAME">this.readRecord</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_VERIFY</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>421</span> </span><span class="WHIT">			</span><span class="NAME">this.verify</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_RESET_RETRY_COUNTER</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">			</span><span class="NAME">this.resetRetryCounter</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_CHANGE_REFERENCE_DATA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT">			</span><span class="NAME">this.changeReferenceData</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">APDU.INS_MANAGE_SE</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT">			</span><span class="NAME">this.manageSecurityEnvironment</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">			</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_INVINS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>435</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>436</span> 
<span class='line'>437</span> 
<span class='line'>438</span> 
<span class='line'>439</span> </span><span class="COMM">/**
<span class='line'>440</span>  * Process a command APDU
<span class='line'>441</span>  *
<span class='line'>442</span>  * @param {APDU} apdu the command and response APDU
<span class='line'>443</span>  */</span><span class="WHIT">
<span class='line'>444</span> </span><span class="NAME">CommandInterpreter.prototype.processAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">		</span><span class="NAME">this.handleSecMsgCommandAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> 
<span class='line'>448</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCLA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ins</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getINS</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ins</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> </span><span class="WHIT">		</span><span class="NAME">ins</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xFE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span> 
<span class='line'>453</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.fileSelector.getMeta</span><span class="PUNC">(</span><span class="STRN">"accessController"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ac</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">ac.checkCommandAccess</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CommandInterpreter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SECSTATNOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Command not allowed as determined by "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>457</span> 
<span class='line'>458</span> </span><span class="WHIT">		</span><span class="NAME">this.dispatch</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ins</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">e.fileName</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"#"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e.lineNumber</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">": "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">e</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e.reason</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x6200</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">			</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">e.reason</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>466</span> </span><span class="WHIT">			</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>468</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>469</span> </span><span class="WHIT">	</span><span class="NAME">this.handleSecMsgResponseAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>470</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>471</span> 
<span class='line'>472</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a ISO 7816-4 file system simulation
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="WHIT">              </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FSNode'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FSNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="WHIT">  </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FileSystemIdObject'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FileSystemIdObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> </span><span class="COMM">/**
<span class='line'> 34</span>  * Creates a Dedicated File (DF)
<span class='line'> 35</span>  *
<span class='line'> 36</span>  * &lt;p>The constructor supports as argument a list of child elements&lt;/p>
<span class='line'> 37</span>  *
<span class='line'> 38</span>  * @class Class implementing dedicated files
<span class='line'> 39</span>  * @constructor
<span class='line'> 40</span>  * @param {FCP} the file control parameter
<span class='line'> 41</span>  */</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.childs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.fidmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">this.sfimap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.aidmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.meta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="NAME">FSNode.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> 
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">arguments.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">			</span><span class="NAME">this.add</span><span class="PUNC">(</span><span class="NAME">arg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> </span><span class="NAME">DF.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="NAME">DF.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> 
<span class='line'> 62</span> </span><span class="NAME">exports.DF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> </span><span class="COMM">/**
<span class='line'> 66</span>  * Adds a new child node to the DF
<span class='line'> 67</span>  *
<span class='line'> 68</span>  * @param {FSNode} node the node to add
<span class='line'> 69</span>  */</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="NAME">DF.prototype.add</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">	</span><span class="NAME">this.childs.push</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="NAME">node.setParent</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> 
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.getFCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> 
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">f.getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.fidmap</span><span class="PUNC">[</span><span class="NAME">fid</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"DF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_FILEEXISTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate file identifier "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">		</span><span class="NAME">this.fidmap</span><span class="PUNC">[</span><span class="NAME">fid</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.isDF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">f.getAID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">aid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.aidmap</span><span class="PUNC">[</span><span class="NAME">aid</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"DF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_FILEEXISTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate application identifier "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">			</span><span class="NAME">this.aidmap</span><span class="PUNC">[</span><span class="NAME">aid</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">f.getSFI</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="COMM">//		print("Found SFI " + sfi);</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sfimap</span><span class="PUNC">[</span><span class="NAME">sfi</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"DF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_FILEEXISTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate short file identifier "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">			</span><span class="NAME">this.sfimap</span><span class="PUNC">[</span><span class="NAME">sfi</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>102</span> 
<span class='line'>103</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>104</span> 
<span class='line'>105</span> 
<span class='line'>106</span> 
<span class='line'>107</span> </span><span class="COMM">/**
<span class='line'>108</span>  * Add meta information to DF
<span class='line'>109</span>  *
<span class='line'>110</span>  * @param {String} name name of meta information
<span class='line'>111</span>  * @param {Object} value value of meta information
<span class='line'>112</span>  */</span><span class="WHIT">
<span class='line'>113</span> </span><span class="NAME">DF.prototype.addMeta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">	</span><span class="NAME">this.meta</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>116</span> 
<span class='line'>117</span> 
<span class='line'>118</span> 
<span class='line'>119</span> </span><span class="COMM">/**
<span class='line'>120</span>  * Add object to DF
<span class='line'>121</span>  *
<span class='line'>122</span>  * @param {Object} o object to be added. Must have property type and id.
<span class='line'>123</span>  */</span><span class="WHIT">
<span class='line'>124</span> </span><span class="NAME">DF.prototype.addObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be instance of FileSystemIdObject"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.meta</span><span class="PUNC">[</span><span class="NAME">o.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="NAME">this.meta</span><span class="PUNC">[</span><span class="NAME">o.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="NAME">this.meta</span><span class="PUNC">[</span><span class="NAME">o.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">o.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> 
<span class='line'>132</span> 
<span class='line'>133</span> 
<span class='line'>134</span> </span><span class="COMM">/**
<span class='line'>135</span>  * Select a file contained in the DF using the file identifier
<span class='line'>136</span>  *
<span class='line'>137</span>  * @param {ByteString} the file identifier
<span class='line'>138</span>  * @type FSNode
<span class='line'>139</span>  * @return the found node or undefined
<span class='line'>140</span>  */</span><span class="WHIT">
<span class='line'>141</span> </span><span class="NAME">DF.prototype.selectByFID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.fidmap</span><span class="PUNC">[</span><span class="NAME">fid</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>144</span> 
<span class='line'>145</span> 
<span class='line'>146</span> 
<span class='line'>147</span> </span><span class="COMM">/**
<span class='line'>148</span>  * Select a file contained in the DF using the short file identifier
<span class='line'>149</span>  *
<span class='line'>150</span>  * @param {Number} the short file identifier
<span class='line'>151</span>  * @type FSNode
<span class='line'>152</span>  * @return the found node or undefined
<span class='line'>153</span>  */</span><span class="WHIT">
<span class='line'>154</span> </span><span class="NAME">DF.prototype.selectBySFI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sfimap</span><span class="PUNC">[</span><span class="NAME">sfi</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> 
<span class='line'>159</span> 
<span class='line'>160</span> </span><span class="COMM">/**
<span class='line'>161</span>  * Select a DF contained in the DF using the application identifier
<span class='line'>162</span>  *
<span class='line'>163</span>  * @param {ByteString} the application identifier
<span class='line'>164</span>  * @type FSNode
<span class='line'>165</span>  * @return the found node or undefined
<span class='line'>166</span>  */</span><span class="WHIT">
<span class='line'>167</span> </span><span class="NAME">DF.prototype.selectByAID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">aid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.aidmap</span><span class="PUNC">[</span><span class="NAME">aid</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> 
<span class='line'>172</span> 
<span class='line'>173</span> </span><span class="COMM">/**
<span class='line'>174</span>  * Returns true as this is a DF
<span class='line'>175</span>  *
<span class='line'>176</span>  * @type boolean
<span class='line'>177</span>  * @return true this is a DF
<span class='line'>178</span>  */</span><span class="WHIT">
<span class='line'>179</span> </span><span class="NAME">DF.prototype.isDF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>182</span> 
<span class='line'>183</span> 
<span class='line'>184</span> 
<span class='line'>185</span> </span><span class="COMM">/**
<span class='line'>186</span>  * Dump the file system system recursively starting this this node
<span class='line'>187</span>  *
<span class='line'>188</span>  * @param {String} indent the string to prefix the output with
<span class='line'>189</span>  * @type String
<span class='line'>190</span>  * @return the dump
<span class='line'>191</span>  */</span><span class="WHIT">
<span class='line'>192</span> </span><span class="NAME">DF.prototype.dump</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">indent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">indent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">		</span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> 
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">this</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.meta</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"  Meta:"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.meta</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">				</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.meta</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">					</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">						</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"    "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>210</span> 
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.childs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.childs</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> 
<span class='line'>214</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.dump</span><span class="PUNC">(</span><span class="STRN">"  "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"  "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">indent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>222</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview AuthenticationObject - Password, PIN or key container for external authentication
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="COMM">/**
<span class='line'> 32</span>  * Create an adapter to decode a APDU for data unit handling
<span class='line'> 33</span>  *
<span class='line'> 34</span>  * @class Adapter class to decode APDUs for data unit handling
<span class='line'> 35</span>  * @constructor
<span class='line'> 36</span>  * @param {APDU} apdu the APDU to decode
<span class='line'> 37</span>  */</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="WHIT">	</span><span class="NAME">this.apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> 
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> 
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.apdu.getINS</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Even instruction</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">				</span><span class="COMM">// SFI in P1</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">			</span><span class="NAME">this.offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">			</span><span class="NAME">this.sfi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x1F</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">			</span><span class="NAME">this.offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">		</span><span class="NAME">this.data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">									</span><span class="COMM">// Odd instruction</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="PUNC">;</span><span class="WHIT">				</span><span class="COMM">// FID in P1 P2</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">		</span><span class="COMM">// If bits b16 - b6 are all 0 and b5 - b1 are not all equal, then we have an SFI</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFE0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x1F</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x1F</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">30</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">			</span><span class="NAME">this.sfi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x1F</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">					</span><span class="COMM">// FID = 0000 means current file</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">p1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">p2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">			</span><span class="NAME">this.fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.apdu.getCDataAsTLVList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> 
<span class='line'> 66</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">a.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"DataUnitAPDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid data for odd instruction data handling command, less than one or more than two elements in TLV"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 69</span> 
<span class='line'> 70</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.index</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.getTag</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x54</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"DataUnitAPDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid data for odd instruction data handling command, first tag must be '54' offset"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> </span><span class="WHIT">		</span><span class="NAME">this.offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> 
<span class='line'> 77</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.index</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.getTag</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x53</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x73</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"DataUnitAPDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid data for odd instruction data handling command, second tag must be '53' or '73'"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="WHIT">			</span><span class="NAME">this.data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> 
<span class='line'> 89</span> </span><span class="NAME">exports.DataUnitAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> 
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="COMM">/**
<span class='line'> 94</span>  * Gets the short file identifier, if one defined
<span class='line'> 95</span>  *
<span class='line'> 96</span>  * @type Number
<span class='line'> 97</span>  * @return the short file identifier in the range 1 to 30 or -1 if not defined
<span class='line'> 98</span>  */</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="NAME">DataUnitAPDU.prototype.getSFI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sfi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>105</span> 
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> </span><span class="COMM">/**
<span class='line'>109</span>  * Gets the file identifier, if one defined
<span class='line'>110</span>  *
<span class='line'>111</span>  * @type ByteString
<span class='line'>112</span>  * @return the file identifier or null if not defined
<span class='line'>113</span>  */</span><span class="WHIT">
<span class='line'>114</span> </span><span class="NAME">DataUnitAPDU.prototype.getFID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.fid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>120</span> 
<span class='line'>121</span> 
<span class='line'>122</span> 
<span class='line'>123</span> </span><span class="COMM">/**
<span class='line'>124</span>  * Gets the offset
<span class='line'>125</span>  *
<span class='line'>126</span>  * @type Number
<span class='line'>127</span>  * @return the offset to read from or write to
<span class='line'>128</span>  */</span><span class="WHIT">
<span class='line'>129</span> </span><span class="NAME">DataUnitAPDU.prototype.getOffset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.offset</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> 
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="COMM">/**
<span class='line'>136</span>  * Get the command data
<span class='line'>137</span>  *
<span class='line'>138</span>  * @type ByteString
<span class='line'>139</span>  * @return the command data
<span class='line'>140</span>  */</span><span class="WHIT">
<span class='line'>141</span> </span><span class="NAME">DataUnitAPDU.prototype.getCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"APDU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No data in command APDU"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> 
<span class='line'>149</span> 
<span class='line'>150</span> </span><span class="COMM">/**
<span class='line'>151</span>  * Returns true if command data in contained in the APDU
<span class='line'>152</span>  *
<span class='line'>153</span>  * @type boolean
<span class='line'>154</span>  * @returns true if command data contained
<span class='line'>155</span>  */</span><span class="WHIT">
<span class='line'>156</span> </span><span class="NAME">DataUnitAPDU.prototype.hasCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.data</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>159</span> 
<span class='line'>160</span> 
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="COMM">/**
<span class='line'>163</span>  * Simple Unit Test
<span class='line'>164</span>  */</span><span class="WHIT">
<span class='line'>165</span> </span><span class="NAME">DataUnitAPDU.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7FFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> 
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"540100"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"5401FF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"540401000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x01000000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> 
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"1234"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7FFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> 
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> 
<span class='line'>227</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"5401005304"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> 
<span class='line'>233</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"5401FF5304"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> 
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"5404010000005304"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dh</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DataUnitAPDU</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getOffset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x01000000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dh.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>245</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  --------- 
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a ISO 7816-4 file system simulation
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Create a File Control Parameter containing information about a file system node
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class Class storing File Control Parameter for a file system node
<span class='line'> 33</span>  * @constructor
<span class='line'> 34</span>  */</span><span class="WHIT">
<span class='line'> 35</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 37</span> 
<span class='line'> 38</span> </span><span class="NAME">exports.FCP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span> 
<span class='line'> 40</span> 
<span class='line'> 41</span> </span><span class="COMM">/** File type for DF */</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="NAME">FCP.DEDICATEDFILE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x38</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> 
<span class='line'> 44</span> </span><span class="COMM">/** File type for transparent EF */</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="NAME">FCP.TRANSPARENT</span><span class="WHIT">   </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> </span><span class="COMM">/** File type for record oriented EF with fixed record size */</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="NAME">FCP.LINEARFIXED</span><span class="WHIT">   </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="COMM">/** File type for record oriented EF with variable record size */</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="NAME">FCP.LINEARVARIABLE</span><span class="WHIT">   </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> 
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="COMM">/**
<span class='line'> 55</span>  * Convert an integer value into an two byte ByteString
<span class='line'> 56</span>  *
<span class='line'> 57</span>  * @param {Number} val the value
<span class='line'> 58</span>  * @type ByteString
<span class='line'> 59</span>  * @return the 2 byte encoded value MSB||LSB
<span class='line'> 60</span>  */</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="NAME">FCP.short2bytestring</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="PUNC">(</span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> </span><span class="COMM">/**
<span class='line'> 71</span>  * Construct a new FCP object from parameters.
<span class='line'> 72</span>  *
<span class='line'> 73</span>  * &lt;p>This function should never be called directly. Use newTransparentDF(), newDF() or newLinearEF() instead.&lt;/p>
<span class='line'> 74</span>  *
<span class='line'> 75</span>  * @param {String|ByteString} fid the file identifier (2 Bytes)
<span class='line'> 76</span>  * @param {Number} sfi the short file identifier or -1 or 0 if not defined
<span class='line'> 77</span>  * @param {Number} type the file type, one of FCP.DEDICATEDFILE, FCP.TRANSPARENT or FCP.LINEAR*
<span class='line'> 78</span>  * @param {Boolean} shareable true, if file may be shared between logical channels
<span class='line'> 79</span>  * @param {Boolean} internal true, if file is internal only and not externally selectable
<span class='line'> 80</span>  * @param {ByteString} supl supplemental information
<span class='line'> 81</span>  * @type FCP
<span class='line'> 82</span>  * @return the newly constructed FCP object
<span class='line'> 83</span>  */</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="NAME">FCP.newFCP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">shareable</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">internal</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	
<span class='line'> 87</span> 	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"File Identifier must be 2 bytes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">			</span><span class="NAME">fcp.fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fid.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"File Identifier must be 2 bytes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">			</span><span class="NAME">fcp.fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type String or ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	
<span class='line'>103</span> 	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">30</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">			</span><span class="NAME">fcp.sfi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"SFI must be in the range 1 to 30 or 0 if not defined"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> 
<span class='line'>114</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="NAME">fcp.type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> 
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">shareable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"boolean"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type Boolean"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="NAME">fcp.shareable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">shareable</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> 
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">internal</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"boolean"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type Boolean"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="NAME">fcp.internal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">internal</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> 
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="NAME">fcp.supl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> 
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="COMM">/**
<span class='line'>136</span>  * Construct a new FCP object for an EF of type transparent.
<span class='line'>137</span>  *
<span class='line'>138</span>  * @param {String|ByteString} fid the file identifier (2 Bytes)
<span class='line'>139</span>  * @param {Number} sfi the short file identifier or -1 or 0 if not defined
<span class='line'>140</span>  * @param {Number} size the file size
<span class='line'>141</span>  * @param {ByteString} supl supplemental information
<span class='line'>142</span>  * @type FCP
<span class='line'>143</span>  * @return the newly constructed FCP object
<span class='line'>144</span>  */</span><span class="WHIT">
<span class='line'>145</span> </span><span class="NAME">FCP.newTransparentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">size</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument size must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>149</span> 
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">FCP.newFCP</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">FCP.TRANSPARENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> 
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="NAME">fcp.size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">size</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> 
<span class='line'>156</span> 
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="COMM">/**
<span class='line'>159</span>  * Construct a new FCP object for a DF.
<span class='line'>160</span>  *
<span class='line'>161</span>  * @param {String|ByteString} fid the file identifier (2 Bytes)
<span class='line'>162</span>  * @param {ByteString} aid the DF's application identifier (DFName)
<span class='line'>163</span>  * @param {ByteString} supl supplemental information
<span class='line'>164</span>  * @type FCP
<span class='line'>165</span>  * @return the newly constructed FCP object
<span class='line'>166</span>  */</span><span class="WHIT">
<span class='line'>167</span> </span><span class="NAME">FCP.newDF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">FCP.newFCP</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">FCP.DEDICATEDFILE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> 
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">aid</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">aid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">aid</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="PUNC">(</span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument size must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">		</span><span class="NAME">fcp.aid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>179</span> 
<span class='line'>180</span> 
<span class='line'>181</span> 
<span class='line'>182</span> </span><span class="COMM">/**
<span class='line'>183</span>  * Construct a new FCP object for an EF of type linear.
<span class='line'>184</span>  *
<span class='line'>185</span>  * @param {String|ByteString} fid the file identifier (2 Bytes)
<span class='line'>186</span>  * @param {Number} sfi the short file identifier or -1 or 0 if not defined
<span class='line'>187</span>  * @param {Number} type the file type, one of FCP.LINEARFIXED or FCP.LINEARVARIABLE
<span class='line'>188</span>  * @param {Number} recno the maximum number of records
<span class='line'>189</span>  * @param {Number} recsize the maximum or fixed record size
<span class='line'>190</span>  * @param {ByteString} supl supplemental information
<span class='line'>191</span>  * @type FCP
<span class='line'>192</span>  * @return the newly constructed FCP object
<span class='line'>193</span>  */</span><span class="WHIT">
<span class='line'>194</span> </span><span class="NAME">FCP.newLinearEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">recno</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">recsize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">recsize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument recsize must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">recno</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FCP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument recno must be of type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>201</span> 
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">FCP.newFCP</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">supl</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>205</span> 
<span class='line'>206</span> 
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="COMM">/**
<span class='line'>209</span>  * Returns the File Identifier (FID)
<span class='line'>210</span>  *
<span class='line'>211</span>  * @type ByteString
<span class='line'>212</span>  * @return the FID
<span class='line'>213</span>  */</span><span class="WHIT">
<span class='line'>214</span> </span><span class="NAME">FCP.prototype.getFID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.fid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> 
<span class='line'>219</span> 
<span class='line'>220</span> </span><span class="COMM">/**
<span class='line'>221</span>  * Returns the Application Identifier (AID)
<span class='line'>222</span>  *
<span class='line'>223</span>  * @type ByteString
<span class='line'>224</span>  * @return the AID
<span class='line'>225</span>  */</span><span class="WHIT">
<span class='line'>226</span> </span><span class="NAME">FCP.prototype.getAID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.aid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>229</span> 
<span class='line'>230</span> 
<span class='line'>231</span> 
<span class='line'>232</span> </span><span class="COMM">/**
<span class='line'>233</span>  * Returns the Short File Identifier (SFI)
<span class='line'>234</span>  *
<span class='line'>235</span>  * @type Number
<span class='line'>236</span>  * @return the SFI
<span class='line'>237</span>  */</span><span class="WHIT">
<span class='line'>238</span> </span><span class="NAME">FCP.prototype.getSFI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sfi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>241</span> 
<span class='line'>242</span> 
<span class='line'>243</span> 
<span class='line'>244</span> </span><span class="COMM">/**
<span class='line'>245</span>  * Returns the encoded FCP
<span class='line'>246</span>  *
<span class='line'>247</span>  * @type ByteString
<span class='line'>248</span>  * @return the encoded FCP
<span class='line'>249</span>  */</span><span class="WHIT">
<span class='line'>250</span> </span><span class="NAME">FCP.prototype.getBytes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fcp"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x62</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> 
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">		</span><span class="NAME">fcp.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fileSizeTransparent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">FCP.short2bytestring</span><span class="PUNC">(</span><span class="NAME">this.size</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>256</span> 
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.type</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">	
<span class='line'>260</span> 	</span><span class="COMM">// ToDo: extra type bytes</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">	
<span class='line'>262</span> 	</span><span class="NAME">fcp.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fileDescriptor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">	
<span class='line'>264</span> 	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">		</span><span class="NAME">fcp.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fileIdentifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.fid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">	
<span class='line'>268</span> 	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.aid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">		</span><span class="NAME">fcp.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"dFName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.aid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	
<span class='line'>272</span> 	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.sfi</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="NAME">fcp.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"shortFileIdentifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x88</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	
<span class='line'>278</span> 	</span><span class="KEYW">return</span><span class="PUNC">(</span><span class="NAME">fcp.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>280</span> 
<span class='line'>281</span> 
<span class='line'>282</span> 
<span class='line'>283</span> </span><span class="COMM">/**
<span class='line'>284</span>  * Returns the FCI
<span class='line'>285</span>  *
<span class='line'>286</span>  * @type ASN1
<span class='line'>287</span>  * @return the FCI
<span class='line'>288</span>  */</span><span class="WHIT">
<span class='line'>289</span> </span><span class="NAME">FCP.prototype.getFCI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fci</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fci"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6F</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> 
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.aid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">		</span><span class="NAME">fci.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"dFName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.aid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>295</span> 
<span class='line'>296</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.supl</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">		</span><span class="NAME">fci.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">this.supl</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>299</span> 
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="PUNC">(</span><span class="NAME">fci</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>302</span> 
<span class='line'>303</span> 
<span class='line'>304</span> 
<span class='line'>305</span> </span><span class="COMM">/**
<span class='line'>306</span>  * Return a human readible string for this object
<span class='line'>307</span>  *
<span class='line'>308</span>  * @type String
<span class='line'>309</span>  * @return the string
<span class='line'>310</span>  */</span><span class="WHIT">
<span class='line'>311</span> </span><span class="NAME">FCP.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"FCP("</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	
<span class='line'>314</span> 	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">	</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>321</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>322</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a ISO 7816-4 file system simulation
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Construct a file system node
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class Abstract class for file system nodes
<span class='line'> 33</span>  * @constructor
<span class='line'> 34</span>  */</span><span class="WHIT">
<span class='line'> 35</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT">	</span><span class="NAME">this.parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="WHIT">	</span><span class="NAME">this.fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 39</span> 
<span class='line'> 40</span> </span><span class="NAME">exports.FSNode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> 
<span class='line'> 42</span> 
<span class='line'> 43</span> 
<span class='line'> 44</span> </span><span class="COMM">/**
<span class='line'> 45</span>  * Sets the parent for this node
<span class='line'> 46</span>  *
<span class='line'> 47</span>  * @param {DF} the parent node
<span class='line'> 48</span>  */</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">FSNode.prototype.setParent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">parent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">parent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">parent.isDF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FSNode"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument parent must be of type DF"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="NAME">this.parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 55</span> 
<span class='line'> 56</span> 
<span class='line'> 57</span> 
<span class='line'> 58</span> </span><span class="COMM">/**
<span class='line'> 59</span>  * Gets the parent node for this node
<span class='line'> 60</span>  *
<span class='line'> 61</span>  * @type DF
<span class='line'> 62</span>  * @returns the parent node
<span class='line'> 63</span>  */</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="NAME">FSNode.prototype.getParent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.parent</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> </span><span class="COMM">/**
<span class='line'> 71</span>  * Gets the file control parameter for this node
<span class='line'> 72</span>  *
<span class='line'> 73</span>  * @type FCP
<span class='line'> 74</span>  * @returns the FCP
<span class='line'> 75</span>  */</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="NAME">FSNode.prototype.getFCP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.fcp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="COMM">/**
<span class='line'> 83</span>  * Returns true if this is a DF
<span class='line'> 84</span>  *
<span class='line'> 85</span>  * @type boolean
<span class='line'> 86</span>  * @return true if this is a DF
<span class='line'> 87</span>  */</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="NAME">FSNode.prototype.isDF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="COMM">/**
<span class='line'> 95</span>  * Returns a human readible string
<span class='line'> 96</span>  *
<span class='line'> 97</span>  * @type String
<span class='line'> 98</span>  * @return a string
<span class='line'> 99</span>  */</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">FSNode.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.fcp</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.fcp.getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"FSNode"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.fcp.getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a ISO 7816-4 file system simulation
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="WHIT">                 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FCP'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FCP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="WHIT">                  </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/DF'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">DF</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="WHIT">       </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/TransparentEF'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">TransparentEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SecurityEnvironment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/SecurityEnvironment'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SecurityEnvironment</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="COMM">/**
<span class='line'> 36</span>  * Create a file selector object
<span class='line'> 37</span>  *
<span class='line'> 38</span>  * @class Class implementing a file selector used to store information about the currently selected
<span class='line'> 39</span>  *        file system object and to process the SELECT APDU
<span class='line'> 40</span>  * @constructor
<span class='line'> 41</span>  * @param {DF} mf the master file
<span class='line'> 42</span>  */</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">FileSelector</span><span class="PUNC">(</span><span class="NAME">mf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">mf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">mf</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSelector"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument 1 must be of type DF"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 47</span> 
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="NAME">this.mf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="NAME">this.selectMF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> 
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="NAME">this.se</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">VEXK</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SecurityEnvironment</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CDIK</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SecurityEnvironment</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SMRES</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SecurityEnvironment</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SMCOM</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SecurityEnvironment</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="NAME">this.globalAuthenticationState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 54</span> 
<span class='line'> 55</span> </span><span class="NAME">exports.FileSelector</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">FileSelector</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> 
<span class='line'> 57</span> 
<span class='line'> 58</span> 
<span class='line'> 59</span> </span><span class="COMM">/**
<span class='line'> 60</span>  * Returns the current EF, if any
<span class='line'> 61</span>  *
<span class='line'> 62</span>  * @type EF
<span class='line'> 63</span>  * @return the current EF or null
<span class='line'> 64</span>  */</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="NAME">FileSelector.prototype.getCurrentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.currentEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> </span><span class="COMM">/**
<span class='line'> 72</span>  * Return the current security environment
<span class='line'> 73</span>  *
<span class='line'> 74</span>  * @type Object
<span class='line'> 75</span>  * @returns Object with properties VEXK, CDIK, SMRES and SMCOM containing SecurityEnvironment objects
<span class='line'> 76</span>  */</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="NAME">FileSelector.prototype.getSecurityEnvironment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.se</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> 
<span class='line'> 83</span> </span><span class="COMM">/**
<span class='line'> 84</span>  * Return meta data associated with the current DF or MF
<span class='line'> 85</span>  *
<span class='line'> 86</span>  * @param {String} name the meta data name
<span class='line'> 87</span>  * @type Object
<span class='line'> 88</span>  * @returns The meta data
<span class='line'> 89</span>  */</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="NAME">FileSelector.prototype.getMeta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">meta</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.currentDF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="COMM">//		print("DF selected: " + this.currentDF);</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">meta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.currentDF.meta</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="COMM">//		print("Found: " + meta);</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">meta</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">		</span><span class="NAME">meta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.mf.meta</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">meta</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>104</span> 
<span class='line'>105</span> 
<span class='line'>106</span> 
<span class='line'>107</span> </span><span class="COMM">/**
<span class='line'>108</span>  * Return object of given type identified by id
<span class='line'>109</span>  *
<span class='line'>110</span>  * &lt;p>If bit b8 in the id is 1, then the search will start in the current DF. If the object
<span class='line'>111</span>  *    is not found, the search is continued in the MF. If the bit is not set, then the search
<span class='line'>112</span>  *    will only look into the MF.&lt;/p>
<span class='line'>113</span>  *
<span class='line'>114</span>  * @param {String} type the type of the object
<span class='line'>115</span>  * @param {Number} id the id, bit b8 indicating local DF or global MF search
<span class='line'>116</span>  * @type {Object}
<span class='line'>117</span>  * @returns the object of the requested type or null if not found
<span class='line'>118</span>  */</span><span class="WHIT">
<span class='line'>119</span> </span><span class="NAME">FileSelector.prototype.getObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">olist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> 
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">		</span><span class="NAME">olist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.currentDF.meta</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">olist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">olist</span><span class="PUNC">[</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x7F</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> 
<span class='line'>127</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="NAME">olist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.mf.meta</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">olist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">olist</span><span class="PUNC">[</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x7F</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> 
<span class='line'>145</span> 
<span class='line'>146</span> </span><span class="COMM">/**
<span class='line'>147</span>  * Enumerate objects of a defined type
<span class='line'>148</span>  *
<span class='line'>149</span>  * @param {String} type the type of the object
<span class='line'>150</span>  * @type {Number[]}
<span class='line'>151</span>  * @returns the list of objects found
<span class='line'>152</span>  */</span><span class="WHIT">
<span class='line'>153</span> </span><span class="NAME">FileSelector.prototype.enumerateObjects</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">type</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">idlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> 
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.mf</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">this.currentDF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.currentDF.meta</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">			</span><span class="NAME">idlist.push</span><span class="PUNC">(</span><span class="NAME">o.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.mf.meta</span><span class="PUNC">[</span><span class="NAME">type</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">		</span><span class="NAME">idlist.push</span><span class="PUNC">(</span><span class="NAME">o.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>165</span> 
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">idlist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> 
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="COMM">/**
<span class='line'>172</span>  * Add authenticated object to the list of authentication states for the local DF or global MF
<span class='line'>173</span>  *
<span class='line'>174</span>  * @param{boolean} global true if global state else local DF state
<span class='line'>175</span>  * @param{AuthenticationObject} ao the authentication object for which authentication was successfull
<span class='line'>176</span>  */</span><span class="WHIT">
<span class='line'>177</span> </span><span class="NAME">FileSelector.prototype.addAuthenticationState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">global</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ao</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">global</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">		</span><span class="NAME">this.globalAuthenticationState.push</span><span class="PUNC">(</span><span class="NAME">ao</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">		</span><span class="NAME">this.localAuthenticationState.push</span><span class="PUNC">(</span><span class="NAME">ao</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>183</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>184</span> 
<span class='line'>185</span> 
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="COMM">/**
<span class='line'>188</span>  * Add authenticated object to the list of authentication states for the local DF or global MF
<span class='line'>189</span>  *
<span class='line'>190</span>  * @param{boolean} global true if global state else local DF state
<span class='line'>191</span>  * @param{AuthenticationObject} ao the authentication object for which authentication was successfull
<span class='line'>192</span>  */</span><span class="WHIT">
<span class='line'>193</span> </span><span class="NAME">FileSelector.prototype.isAuthenticated</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">global</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ao</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">global</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.globalAuthenticationState</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.localAuthenticationState</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aao</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">aao</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">ao</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> 
<span class='line'>207</span> 
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="COMM">/**
<span class='line'>210</span>  * Select the MF
<span class='line'>211</span>  */</span><span class="WHIT">
<span class='line'>212</span> </span><span class="NAME">FileSelector.prototype.selectMF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="NAME">this.currentDF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.mf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="NAME">this.currentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="NAME">this.localAuthenticationState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> 
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.mf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>219</span> 
<span class='line'>220</span> 
<span class='line'>221</span> 
<span class='line'>222</span> </span><span class="COMM">/**
<span class='line'>223</span>  * Select a DF entry by FID
<span class='line'>224</span>  *
<span class='line'>225</span>  * @param {ByteString} fid the file identifier
<span class='line'>226</span>  * @param {boolean} check if file matches expected type EF or DF
<span class='line'>227</span>  * @param {boolean} df true if the check must check for a DF type, else a EF type
<span class='line'>228</span>  * @type FSNode
<span class='line'>229</span>  * @return the selected file system node
<span class='line'>230</span>  */</span><span class="WHIT">
<span class='line'>231</span> </span><span class="NAME">FileSelector.prototype.selectFID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">check</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">df</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.currentDF.selectByFID</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> 
<span class='line'>234</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSelector"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_FILENOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"File "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>237</span> 
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">check</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">df</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">node.isDF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">df</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">node.isDF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSelector"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_FILENOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"File "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found or not of matching type"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>243</span> 
<span class='line'>244</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.isDF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">		</span><span class="NAME">this.currentDF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">		</span><span class="NAME">this.localAuthenticationState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">		</span><span class="NAME">this.currentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">		</span><span class="NAME">this.currentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>253</span> 
<span class='line'>254</span> 
<span class='line'>255</span> 
<span class='line'>256</span> </span><span class="COMM">/**
<span class='line'>257</span>  * Select a DF entry by SFI
<span class='line'>258</span>  *
<span class='line'>259</span>  * @param {Number} sfi the short file identifier
<span class='line'>260</span>  * @type FSNode
<span class='line'>261</span>  * @return the selected file system node
<span class='line'>262</span>  */</span><span class="WHIT">
<span class='line'>263</span> </span><span class="NAME">FileSelector.prototype.selectSFI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.currentDF.selectBySFI</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> 
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSelector"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_FILENOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"File with SFI "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>269</span> 
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="NAME">this.currentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>273</span> 
<span class='line'>274</span> 
<span class='line'>275</span> 
<span class='line'>276</span> </span><span class="COMM">/**
<span class='line'>277</span>  * Processes the SELECT APDU
<span class='line'>278</span>  *
<span class='line'>279</span>  * &lt;p>Supports in P1&lt;/p>
<span class='line'>280</span>  * &lt;ul>
<span class='line'>281</span>  *  &lt;li>'00' with empty data to select the MF&lt;/li>
<span class='line'>282</span>  *  &lt;li>'00' with "3F00" to select the MF&lt;/li>
<span class='line'>283</span>  *  &lt;li>'00' with fid to select an entry in the current DF&lt;/li>
<span class='line'>284</span>  *  &lt;li>'01' with fid to select a DF in the current DF&lt;/li>
<span class='line'>285</span>  *  &lt;li>'02' with fid to select an EF in the current DF&lt;/li>
<span class='line'>286</span>  *  &lt;li>'03' with empty data to select the parent&lt;/li>
<span class='line'>287</span>  * &lt;/ul>
<span class='line'>288</span>  * &lt;p>Supports in P2&lt;/p>
<span class='line'>289</span>  * &lt;ul>
<span class='line'>290</span>  *  &lt;li>'00' with P1=='00' return no data&lt;/li>
<span class='line'>291</span>  *  &lt;li>'04' return FCP&lt;/li>
<span class='line'>292</span>  *  &lt;li>'0C' return no data&lt;/li>
<span class='line'>293</span>  * &lt;/ul>
<span class='line'>294</span>  * @param {APDU} apdu the select APDU
<span class='line'>295</span>  */</span><span class="WHIT">
<span class='line'>296</span> </span><span class="NAME">FileSelector.prototype.processSelectAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> 
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSelector"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Incorrect parameter P2 ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">p2.toString</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">p1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"3F00"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">			</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.selectMF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">			</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.selectFID</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">		</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.selectFID</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">		</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.selectFID</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x03</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT">		</span><span class="COMM">// ToDo data must be missing APDU.SW_INVLC</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.currentEF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">			</span><span class="NAME">this.currentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">			</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.currentDF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT">			</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.currentDF.getParent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">				</span><span class="NAME">this.currentDF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">				</span><span class="NAME">this.localAuthenticationState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">				</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.currentDF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">		</span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.mf.selectByAID</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSelector"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_FILENOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Application "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">		</span><span class="NAME">this.currentDF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">		</span><span class="NAME">this.currentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">		</span><span class="NAME">this.localAuthenticationState</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">	</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSelector"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Incorrect parameter P1 ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">p1.toString</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">p2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setRData</span><span class="PUNC">(</span><span class="NAME">node.getFCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getFCI</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setRData</span><span class="PUNC">(</span><span class="NAME">node.getFCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>356</span> 
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>359</span> 
<span class='line'>360</span> 
<span class='line'>361</span> 
<span class='line'>362</span> </span><span class="COMM">/**
<span class='line'>363</span>  * Return a human readable string for this object
<span class='line'>364</span>  */</span><span class="WHIT">
<span class='line'>365</span> </span><span class="NAME">FileSelector.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"FileSelector: Current DF="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.currentDF</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" / Current EF="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.currentEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.globalAuthenticationState.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\nGlobally authenticated objects:"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aao</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.globalAuthenticationState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">aao.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.localAuthenticationState.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\nLocally authenticated objects:"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aao</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.localAuthenticationState</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">aao.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>380</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>381</span> 
<span class='line'>382</span> 
<span class='line'>383</span> 
<span class='line'>384</span> </span><span class="NAME">FileSelector.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>385</span> 
<span class='line'>386</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"A0000000010101"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>387</span> 
<span class='line'>388</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">(</span><span class="NAME">FCP.newDF</span><span class="PUNC">(</span><span class="STRN">"3F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>389</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">(</span><span class="NAME">FCP.newTransparentEF</span><span class="PUNC">(</span><span class="STRN">"2F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>390</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">(</span><span class="NAME">FCP.newTransparentEF</span><span class="PUNC">(</span><span class="STRN">"2F01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x17</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>391</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DF</span><span class="PUNC">(</span><span class="NAME">FCP.newDF</span><span class="PUNC">(</span><span class="STRN">"DF01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">							</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">(</span><span class="NAME">FCP.newTransparentEF</span><span class="PUNC">(</span><span class="STRN">"2F01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">						</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>394</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span> 
<span class='line'>396</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">mf.dump</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> 
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">mf.isDF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> 
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mf.selectByFID</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ef.isDF</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ef.getFCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"2F00"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ef</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mf.selectBySFI</span><span class="PUNC">(</span><span class="NUMB">0x17</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ef.getFCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"2F01"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> 
<span class='line'>407</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">df</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mf.selectByAID</span><span class="PUNC">(</span><span class="NAME">aid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">df.getFCP</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getFID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"DF01"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span> 
<span class='line'>410</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FileSelector</span><span class="PUNC">(</span><span class="NAME">mf</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> 
<span class='line'>412</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"3F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">	</span><span class="NAME">fs.processSelectAPDU</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">fs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> 
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2F00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="NAME">fs.processSelectAPDU</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">fs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> 
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"DF01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="NAME">fs.processSelectAPDU</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">fs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span> 
<span class='line'>427</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2F01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> </span><span class="WHIT">	</span><span class="NAME">fs.processSelectAPDU</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">fs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>432</span> 
<span class='line'>433</span> 
<span class='line'>434</span> </span><span class="COMM">// test();</span><span class="WHIT">
<span class='line'>435</span> 
<span class='line'>436</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  --------- 
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of ISO 7816-4 APDU processing
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Create a file system object identifiable by an id
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class Abstract class for file system objects identified by an identifier
<span class='line'> 33</span>  *
<span class='line'> 34</span>  * @param {String} name the human readable name of the object
<span class='line'> 35</span>  * @param {Number} id the id
<span class='line'> 36</span>  */</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="WHIT">	</span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="WHIT">	</span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 41</span> 
<span class='line'> 42</span> </span><span class="NAME">exports.FileSystemIdObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> 
<span class='line'> 44</span> 
<span class='line'> 45</span> </span><span class="COMM">/**
<span class='line'> 46</span>  * Return id of object
<span class='line'> 47</span>  */</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="NAME">FileSystemIdObject.prototype.getId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 51</span> 
<span class='line'> 52</span> 
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="COMM">/**
<span class='line'> 55</span>  * Return type of object
<span class='line'> 56</span>  * @type string
<span class='line'> 57</span>  * @return type of object
<span class='line'> 58</span>  */</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="NAME">FileSystemIdObject.prototype.getType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"FileSystemIdObject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.NOT_IMPLEMENTED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Derived class must override getType()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> </span><span class="COMM">/**
<span class='line'> 66</span>  * Return human readable string
<span class='line'> 67</span>  */</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="NAME">FileSystemIdObject.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 71</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a ISO 7816-4 file system simulation
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="WHIT">                 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FCP'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FCP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="WHIT">              </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FSNode'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FSNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> </span><span class="COMM">/**
<span class='line'> 34</span>  * Creates a LinearEF
<span class='line'> 35</span>  *
<span class='line'> 36</span>  * @class Class implementing linear EFs
<span class='line'> 37</span>  * @constructor
<span class='line'> 38</span>  * @param {FCP} the file control parameter
<span class='line'> 39</span>  * @param {ByteString[]} records the array of records
<span class='line'> 40</span>  */</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">LinearEF</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">records</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"LinearEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument 1 must be of type FCP"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="COMM">//	print(typeof(records));</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">records</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">records</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">records</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"LinearEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument 2 must be of type ByteString[]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="NAME">FSNode.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="NAME">this.records</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">records</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="NAME">LinearEF.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">LinearEF.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">LinearEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> 
<span class='line'> 57</span> </span><span class="NAME">exports.LinearEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">LinearEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> 
<span class='line'> 61</span> </span><span class="COMM">/**
<span class='line'> 62</span>  * Reads a record from a linear EF
<span class='line'> 63</span>  *
<span class='line'> 64</span>  * @param {APDU} apdu the APDU used for reading
<span class='line'> 65</span>  * @param {Number} recno the record number
<span class='line'> 66</span>  * @param {Number} qualifier the qualifier as encoded in bit b3 - b1 of P1
<span class='line'> 67</span>  * @param {Number} length the length in bytes or 0 for all in short APDU or 65536 for all in extended APDUs
<span class='line'> 68</span>  * @type ByteString
<span class='line'> 69</span>  * @return the data read
<span class='line'> 70</span>  */</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="NAME">LinearEF.prototype.readRecord</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">recno</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">qualifier</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">recno</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"LinearEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Record number must be type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">qualifier</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"LinearEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Qualifier must be type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 78</span> 
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">recno</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"LinearEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Current record referencing with P1=00 not support"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="NAME">recno</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">recno</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">this.records.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"LinearEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_RECORDNOTFOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Record number exeeds number of defined records"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 87</span> 
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">qualifier</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"LinearEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Only absolute record references supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">record</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.records</span><span class="PUNC">[</span><span class="NAME">recno</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">		</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">record.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">			</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>101</span> 
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">record.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_EOF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">		</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">record.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">record.left</span><span class="PUNC">(</span><span class="NAME">rlen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>111</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a secure messaging channel as defined in ISO 7814-4 and eSign-K
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SecureMessagingCommandAPDUDecoder</span><span class="WHIT">   </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/SecureMessagingCommandAPDUDecoder'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SecureMessagingCommandAPDUDecoder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> </span><span class="COMM">/**
<span class='line'> 33</span>  * Create a secure channel
<span class='line'> 34</span>  *
<span class='line'> 35</span>  * @class Class implementing a secure messaging channel
<span class='line'> 36</span>  * @constructor
<span class='line'> 37</span>  * @param {Crypto} crypto the crypto provider
<span class='line'> 38</span>  */</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SecureChannelHandler</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel.SSC_DEFAULT_POLICY</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 43</span> 
<span class='line'> 44</span> </span><span class="NAME">exports.SecureChannelHandler</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SecureChannelHandler</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> 
<span class='line'> 47</span> 
<span class='line'> 48</span> </span><span class="COMM">/**
<span class='line'> 49</span>  * Sets the policy for handling send sequence counters
<span class='line'> 50</span>  *
<span class='line'> 51</span>  * See IsoSecureChannel for details
<span class='line'> 52</span>  *
<span class='line'> 53</span>  * @param {Number} policy one of IsoSecureChannel.SSC_DEFAULT_POLICY, SSC_SYNC_POLICY or SSC_SYNC_ENC_POLICY
<span class='line'> 54</span>  */</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">SecureChannelHandler.prototype.setSendSequenceCounterPolicy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">policy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="NAME">this.policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> 
<span class='line'> 61</span> </span><span class="COMM">/**
<span class='line'> 62</span>  * Sets the key used for encryption
<span class='line'> 63</span>  *
<span class='line'> 64</span>  * @param {Key} key the encryption key
<span class='line'> 65</span>  */</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="NAME">SecureChannelHandler.prototype.setEncKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="NAME">this.encKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">		</span><span class="NAME">this.encBlockSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">		</span><span class="NAME">this.encMechanism</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">		</span><span class="NAME">this.iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">		</span><span class="NAME">this.encBlockSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">		</span><span class="NAME">this.encMechanism</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_CBC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">		</span><span class="NAME">this.iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="COMM">/**
<span class='line'> 83</span>  * Sets the key used for message authentication
<span class='line'> 84</span>  *
<span class='line'> 85</span>  * @param {Key} key the message authentication key
<span class='line'> 86</span>  */</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="NAME">SecureChannelHandler.prototype.setMacKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="NAME">this.macKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> 
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">		</span><span class="NAME">this.macBlockSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">		</span><span class="NAME">this.macMechanism</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">		</span><span class="NAME">this.macBlockSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">		</span><span class="NAME">this.macMechanism</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_MAC_EMV</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> 
<span class='line'>100</span> 
<span class='line'>101</span> </span><span class="COMM">/**
<span class='line'>102</span>  * Set the send sequence counter for MAC calculation
<span class='line'>103</span>  *
<span class='line'>104</span>  * @param {ByteString} ssc the send sequence counter
<span class='line'>105</span>  */</span><span class="WHIT">
<span class='line'>106</span> </span><span class="NAME">SecureChannelHandler.prototype.setMACSendSequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ssc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">	</span><span class="NAME">this.macSendSequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>109</span> 
<span class='line'>110</span> 
<span class='line'>111</span> 
<span class='line'>112</span> </span><span class="COMM">/**
<span class='line'>113</span>  * Set the send sequence counter for encryption calculation
<span class='line'>114</span>  *
<span class='line'>115</span>  * @param {ByteString} ssc the send sequence counter
<span class='line'>116</span>  */</span><span class="WHIT">
<span class='line'>117</span> </span><span class="NAME">SecureChannelHandler.prototype.setEncSendSequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">ssc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="NAME">this.encSendSequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>120</span> 
<span class='line'>121</span> 
<span class='line'>122</span> 
<span class='line'>123</span> </span><span class="COMM">/**
<span class='line'>124</span>  * Return an initialisation vector based on the defined policy
<span class='line'>125</span>  *
<span class='line'>126</span>  * @type ByteString
<span class='line'>127</span>  * @return the IV
<span class='line'>128</span>  */</span><span class="WHIT">
<span class='line'>129</span> </span><span class="NAME">SecureChannelHandler.prototype.getIV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.iv</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.policy</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel.SSC_SYNC_ENC_POLICY</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">		</span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.encKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.encMechanism</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.macSendSequenceCounter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.policy</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel.SSC_SYNC_POLICY</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.macSendSequenceCounter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.encSendSequenceCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">			</span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.encSendSequenceCounter</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>142</span> 
<span class='line'>143</span> 
<span class='line'>144</span> 
<span class='line'>145</span> </span><span class="COMM">/**
<span class='line'>146</span>  * Unwrap a secure messaging APDU recovering the content
<span class='line'>147</span>  *
<span class='line'>148</span>  * @param {APDU} apdu the APDU to unwrap
<span class='line'>149</span>  */</span><span class="WHIT">
<span class='line'>150</span> </span><span class="NAME">SecureChannelHandler.prototype.unwrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">decoder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SecureMessagingCommandAPDUDecoder</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">decoder.verifyMAC</span><span class="PUNC">(</span><span class="NAME">this.macKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SecureChannelHandler"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCSMDATAOBJECT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"MAC verification failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> 
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">decoder.getLe</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">		</span><span class="NAME">apdu.ne</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">le</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">		</span><span class="NAME">apdu.ne</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>162</span> 
<span class='line'>163</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">decoder.decryptBody</span><span class="PUNC">(</span><span class="NAME">this.encKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setCData</span><span class="PUNC">(</span><span class="NAME">plain</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>166</span> 
<span class='line'>167</span> 
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="COMM">/**
<span class='line'>170</span>  * Wrap an APDU for secure messaging
<span class='line'>171</span>  *
<span class='line'>172</span>  * @param {APDU} apdu the APDU to wrap
<span class='line'>173</span>  */</span><span class="WHIT">
<span class='line'>174</span> </span><span class="NAME">SecureChannelHandler.prototype.wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">macinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.macSendSequenceCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ssc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.macSendSequenceCounter.add</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">		</span><span class="NAME">this.macSendSequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">		</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">ssc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>184</span> 
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.hasRData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">padbuff</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NAME">apdu.getRData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">		</span><span class="NAME">SecureMessagingCommandAPDUDecoder.pad</span><span class="PUNC">(</span><span class="NAME">padbuff</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.encBlockSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getIV</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.encKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.encMechanism</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">padbuff.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">padind</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">do87</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TLV</span><span class="PUNC">(</span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">padind.concat</span><span class="PUNC">(</span><span class="NAME">cryptogram</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">TLV.EMV</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NAME">do87.getTLV</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NUMB">0x99</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NAME">apdu.getSW</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NAME">apdu.getSW</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> 
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">rdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="NAME">SecureMessagingCommandAPDUDecoder.pad</span><span class="PUNC">(</span><span class="NAME">macinp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.macBlockSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.macKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.macMechanism</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">macinp.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> 
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NUMB">0x8E</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NUMB">0x08</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="NAME">rdata.append</span><span class="PUNC">(</span><span class="NAME">mac.left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setRData</span><span class="PUNC">(</span><span class="NAME">rdata.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>212</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a secure messaging channel as defined in ISO 7814-4 and eSign-K
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">            </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="COMM">/**
<span class='line'> 32</span>  * Creates a decoder for a single secure messaging command APDU
<span class='line'> 33</span>  *
<span class='line'> 34</span>  * @class Decoder for a secure messaging APDU
<span class='line'> 35</span>  * @constructor
<span class='line'> 36</span>  * @param {SecureChannel} channel the secure channel object
<span class='line'> 37</span>  * @param {APDU} apdu the secure messaging APDU
<span class='line'> 38</span>  */</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SecureMessagingCommandAPDUDecoder</span><span class="PUNC">(</span><span class="NAME">channel</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span class="NAME">this.channel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">channel</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.tlvlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCDataAsTLVList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 44</span> 
<span class='line'> 45</span> </span><span class="NAME">exports.SecureMessagingCommandAPDUDecoder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SecureMessagingCommandAPDUDecoder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> 
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="COMM">/**
<span class='line'> 50</span>  * Verify the message authentication code (MAC)
<span class='line'> 51</span>  *
<span class='line'> 52</span>  * @type boolean
<span class='line'> 53</span>  * @return true if the MAC is valid
<span class='line'> 54</span>  */</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">SecureMessagingCommandAPDUDecoder.prototype.verifyMAC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">macinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.buildMACInput</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tlvlist.find</span><span class="PUNC">(</span><span class="NUMB">0x8E</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SecureMessagingCommandAPDUDecoder"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SMOBJMISSING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"MAC data object (8E) not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.channel.crypto.verify</span><span class="PUNC">(</span><span class="NAME">this.channel.macKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.channel.macMechanism</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">macinp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mac.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 66</span> 
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="COMM">/**
<span class='line'> 70</span>  * Build the MAC input block
<span class='line'> 71</span>  *
<span class='line'> 72</span>  * @type ByteString
<span class='line'> 73</span>  * @return the MAC calculation input block
<span class='line'> 74</span>  */</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="NAME">SecureMessagingCommandAPDUDecoder.prototype.buildMACInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">macinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.channel.macSendSequenceCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ssc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.channel.macSendSequenceCounter.add</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="NAME">this.channel.macSendSequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ssc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">		</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">ssc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.apdu.isAuthenticatedHeader</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">		</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">this.apdu.getCLA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">		</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">this.apdu.getINS</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">		</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">this.apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">		</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">this.apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">		</span><span class="NAME">SecureMessagingCommandAPDUDecoder.pad</span><span class="PUNC">(</span><span class="NAME">macinp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.channel.macBlockSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">someadded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.tlvlist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tlvlist.index</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv.getTag</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">			</span><span class="NAME">macinp.append</span><span class="PUNC">(</span><span class="NAME">tlv.getTLV</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">			</span><span class="NAME">someadded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">someadded</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">		</span><span class="NAME">SecureMessagingCommandAPDUDecoder.pad</span><span class="PUNC">(</span><span class="NAME">macinp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.channel.macBlockSize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">macinp.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="COMM">/**
<span class='line'>110</span>  * Decrypt the body of a secure messaging APDU
<span class='line'>111</span>  *
<span class='line'>112</span>  * @param {Key} key the encryption key
<span class='line'>113</span>  * @type ByteString
<span class='line'>114</span>  * @return the plain body or undefined if no encrypted body
<span class='line'>115</span>  */</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">SecureMessagingCommandAPDUDecoder.prototype.decryptBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tlvlist.find</span><span class="PUNC">(</span><span class="NUMB">0x87</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tlvlist.find</span><span class="PUNC">(</span><span class="NUMB">0x85</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">paddingIndicator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">body.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">paddingIndicator</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SecureMessagingCommandAPDUDecoder"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCSMDATAOBJECT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Padding indicator "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">paddingIndicator</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> 
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">body.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> 
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.channel.getIV</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.channel.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.channel.encKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.channel.encMechanism</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cryptogram</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SecureMessagingCommandAPDUDecoder.removePadding</span><span class="PUNC">(</span><span class="NAME">plain</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> 
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>141</span> 
<span class='line'>142</span> 
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="COMM">/**
<span class='line'>145</span>  * Return value of optional Le element with tag '97'
<span class='line'>146</span>  *
<span class='line'>147</span>  * @type Number
<span class='line'>148</span>  * @return the value of the Le element
<span class='line'>149</span>  */</span><span class="WHIT">
<span class='line'>150</span> </span><span class="NAME">SecureMessagingCommandAPDUDecoder.prototype.getLe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.tlvlist.find</span><span class="PUNC">(</span><span class="NUMB">0x97</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">le.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">le.getL</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>161</span> 
<span class='line'>162</span> 
<span class='line'>163</span> 
<span class='line'>164</span> </span><span class="COMM">/**
<span class='line'>165</span>  * Applies ISO padding to the input buffer
<span class='line'>166</span>  *
<span class='line'>167</span>  * @param {ByteBuffer} buffer the input buffer
<span class='line'>168</span>  * @param {Number} blocksize the block size
<span class='line'>169</span>  * @type ByteBuffer
<span class='line'>170</span>  * @return the buffer argument
<span class='line'>171</span>  */</span><span class="WHIT">
<span class='line'>172</span> </span><span class="NAME">SecureMessagingCommandAPDUDecoder.pad</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blocksize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="NAME">buffer.append</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">buffer.length</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NAME">blocksize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">		</span><span class="NAME">buffer.append</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">buffer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>179</span> 
<span class='line'>180</span> 
<span class='line'>181</span> 
<span class='line'>182</span> </span><span class="COMM">/**
<span class='line'>183</span>  * Removes the ISO padding
<span class='line'>184</span>  *
<span class='line'>185</span>  * @param {ByteString} buffer the input with with padding
<span class='line'>186</span>  * @type ByteString
<span class='line'>187</span>  * @return the buffer without padding
<span class='line'>188</span>  */</span><span class="WHIT">
<span class='line'>189</span> </span><span class="NAME">SecureMessagingCommandAPDUDecoder.removePadding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">buffer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">buffer.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">buffer.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">buffer.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SecureMessagingCommandAPDUDecoder"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCSMDATAOBJECT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid ISO padding"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>199</span> 
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">buffer.left</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>202</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Security environment - a container for security related data elements
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Creates a security environment container that collects cryptographic reference templates (CRT)
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class Class implementing a security environment for cryptographic operations.
<span class='line'> 33</span>  * @constructor
<span class='line'> 34</span>  */</span><span class="WHIT">
<span class='line'> 35</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SecurityEnvironment</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT">	</span><span class="NAME">this.t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">AT</span><span class="PUNC">:</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">KAT</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HT</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CCT</span><span class="PUNC">:</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">DST</span><span class="PUNC">:</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CT</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 38</span> 
<span class='line'> 39</span> </span><span class="NAME">exports.SecurityEnvironment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SecurityEnvironment</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> 
<span class='line'> 41</span> 
<span class='line'> 42</span> 
<span class='line'> 43</span> </span><span class="COMM">/**
<span class='line'> 44</span>  * Adds CRT elements to a named template.
<span class='line'> 45</span>  *
<span class='line'> 46</span>  * @param {String} tname the CRT name one of AT, KAT, HT, CCT, DST or CT
<span class='line'> 47</span>  * @param {ASN1} tlv the tlv object containing the CRT elements
<span class='line'> 48</span>  **/</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">SecurityEnvironment.prototype.addElements</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">tname</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.t</span><span class="PUNC">[</span><span class="NAME">tname</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">			</span><span class="NAME">SecurityEnvironment.decorateCRT</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">			</span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">t.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">o.tag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">					</span><span class="NAME">t.remove</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">					</span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">			</span><span class="NAME">SecurityEnvironment.decorateCRT</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">		</span><span class="NAME">this.t</span><span class="PUNC">[</span><span class="NAME">tname</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 73</span> 
<span class='line'> 74</span> 
<span class='line'> 75</span> 
<span class='line'> 76</span> </span><span class="COMM">/**
<span class='line'> 77</span>  * Adds a CRT identified by it's tag
<span class='line'> 78</span>  *
<span class='line'> 79</span>  * @param {ASN1} tlv the tlv object
<span class='line'> 80</span>  */</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="NAME">SecurityEnvironment.prototype.add</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">tlv.tag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">		</span><span class="NAME">tlv.setName</span><span class="PUNC">(</span><span class="STRN">"AT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xA6</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">		</span><span class="NAME">tlv.setName</span><span class="PUNC">(</span><span class="STRN">"KAT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xAA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">		</span><span class="NAME">tlv.setName</span><span class="PUNC">(</span><span class="STRN">"HT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xB4</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">		</span><span class="NAME">tlv.setName</span><span class="PUNC">(</span><span class="STRN">"CCT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">		</span><span class="NAME">tlv.setName</span><span class="PUNC">(</span><span class="STRN">"DST"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xB8</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">		</span><span class="NAME">tlv.setName</span><span class="PUNC">(</span><span class="STRN">"CT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SecurityEnvironment"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tlv.tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid tag for CRT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="NAME">this.addElements</span><span class="PUNC">(</span><span class="NAME">tlv.name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="COMM">/**
<span class='line'>110</span>  * Return textual representation of security environment container
<span class='line'>111</span>  */</span><span class="WHIT">
<span class='line'>112</span> </span><span class="NAME">SecurityEnvironment.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> 
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.t.AT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Authentication Template (AT)\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.t.AT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.t.KAT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Key Agreement Template (KAT)\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.t.KAT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.t.HT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Hash Template (HT)\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.t.HT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.t.CCT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Cryptographic Checksum Template (CCT)\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.t.CCT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.t.DST</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Digital Signature Template (DST)\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.t.DST</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.t.CT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Confidentiality Template (CT)\n"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.t.CT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> 
<span class='line'>137</span> 
<span class='line'>138</span> </span><span class="COMM">/**
<span class='line'>139</span>  * Decorates a tlv object from the CRT
<span class='line'>140</span>  */</span><span class="WHIT">
<span class='line'>141</span> </span><span class="NAME">SecurityEnvironment.decorateCRT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">asn1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">asn1.tag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"cryptographicMechanism 80"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"fileIdentifierOrPath 81"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"dFName 82"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"secretOrPublicKeyReference 83"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"sessionOrPrivateKeyReference 84"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"nullBlock 85"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"chainingBlock 86"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"initialBlock 87"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x88</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"previousChallenge 88"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x89</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"proprietaryDataElementIndex 89"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x8A</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"proprietaryDataElementIndex 8A"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x8B</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"proprietaryDataElementIndex 8B"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x8C</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"proprietaryDataElementIndex 8C"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x8D</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"proprietaryDataElementIndex 8D"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x90</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"cardHashCode 90"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x91</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"ephemeralPublicKey 91"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x92</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"cardTimeStamp 92"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x93</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"dsiCounter 93"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x94</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"challengeOrDerivationParameter 94"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x95</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"usageQualifier 95"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x8E</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"cryptographicContentReference 8E"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x67</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"auxiliaryAuthenticatedData 67"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x67</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"auxiliaryAuthenticatedData 67"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x7F4C</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">		</span><span class="NAME">asn1.setName</span><span class="PUNC">(</span><span class="STRN">"certificateHolderAuthorisationTemplate 7F4C"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>216</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>217</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview SignatureKey - Object storing information related to PrK.QES
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="WHIT">  </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FileSystemIdObject'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FileSystemIdObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> </span><span class="COMM">/**
<span class='line'> 33</span>  * Create a signature key object
<span class='line'> 34</span>  *
<span class='line'> 35</span>  * @class Class implementing signature keys
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @param {String} name the human readable name of the object
<span class='line'> 38</span>  * @param {Number} id the key id
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SignatureKey</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">FileSystemIdObject.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.isTerminated</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="COMM">// State after TERMINATE</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.allowTerminate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="NAME">SignatureKey.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="NAME">SignatureKey.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SignatureKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="NAME">exports.SignatureKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SignatureKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> 
<span class='line'> 51</span> 
<span class='line'> 52</span> </span><span class="NAME">SignatureKey.TYPE_KEY</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"signaturekey"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> 
<span class='line'> 55</span> 
<span class='line'> 56</span> </span><span class="COMM">/**
<span class='line'> 57</span>  * Override from base class
<span class='line'> 58</span>  */</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="NAME">SignatureKey.prototype.getType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">SignatureKey.TYPE_KEY</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"signaturekey"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> </span><span class="COMM">/**
<span class='line'> 66</span>  * Terminate authentication object
<span class='line'> 67</span>  */</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="NAME">SignatureKey.prototype.terminate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.allowTerminate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SignatureKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Terminate not allowed for signature key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="NAME">this.isTerminated</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> 
<span class='line'> 76</span> 
<span class='line'> 77</span> </span><span class="COMM">/**
<span class='line'> 78</span>  * Convert object to a human readable string
<span class='line'> 79</span>  */</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="NAME">SignatureKey.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isTerminated</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">" terminated"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">" active"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> 
<span class='line'> 85</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of a ISO 7816-4 file system simulation
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT">                </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="WHIT">                 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FCP'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FCP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="WHIT">              </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FSNode'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FSNode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> </span><span class="COMM">/**
<span class='line'> 34</span>  * Create a file system node that represents a transparent EF
<span class='line'> 35</span>  *
<span class='line'> 36</span>  * @class Class implementing a transparent EF
<span class='line'> 37</span>  * @constructor
<span class='line'> 38</span>  * @param {FCP} fcp the FCP for this EF
<span class='line'> 39</span>  * @param {ByteString} contents the contents for this EF
<span class='line'> 40</span>  */</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">contents</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">FCP</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument 1 must be of type FCP"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">contents</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">contents</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">contents</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument 2 must be of type ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="NAME">FSNode.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="NAME">this.content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">contents</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="NAME">TransparentEF.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FSNode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">TransparentEF.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> 
<span class='line'> 57</span> </span><span class="NAME">exports.TransparentEF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">TransparentEF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> 
<span class='line'> 61</span> </span><span class="COMM">/**
<span class='line'> 62</span>  * Reads data from a transparent EF
<span class='line'> 63</span>  *
<span class='line'> 64</span>  * @param {APDU} apdu the APDU used for reading
<span class='line'> 65</span>  * @param {Number} offset the offset to read from
<span class='line'> 66</span>  * @param {Number} length the length in bytes or 0 for all in short APDU or 65536 for all in extended APDUs
<span class='line'> 67</span>  * @type ByteString
<span class='line'> 68</span>  * @return the data read
<span class='line'> 69</span>  */</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="NAME">TransparentEF.prototype.readBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Offset must be type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Length must be type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">this.content.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Offset out of range"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">		</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.content.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">			</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 89</span> 
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">this.content.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_EOF</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">		</span><span class="NAME">rlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.content.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 96</span> 
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.content.bytes</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rlen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 99</span> 
<span class='line'>100</span> 
<span class='line'>101</span> 
<span class='line'>102</span> </span><span class="COMM">/**
<span class='line'>103</span>  * Update data in transparent EF
<span class='line'>104</span>  *
<span class='line'>105</span>  * @param {APDU} apdu the APDU used for updating
<span class='line'>106</span>  * @param {Number} offset the offset to update
<span class='line'>107</span>  * @param {ByteString} data the data to write into the EF
<span class='line'>108</span>  */</span><span class="WHIT">
<span class='line'>109</span> </span><span class="NAME">TransparentEF.prototype.updateBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Offset must be type Number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_GENERALERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Data must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>116</span> 
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">this.fcp.size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_WRONGLENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Writing beyond file limit"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>120</span> 
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.content</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">this.content.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Offset out of range"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newcontent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.content.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.content.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">newcontent.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">			</span><span class="NAME">newcontent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newcontent.concat</span><span class="PUNC">(</span><span class="NAME">this.content.bytes</span><span class="PUNC">(</span><span class="NAME">newcontent.length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TransparentEF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INCP1P2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Offset out of range"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newcontent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="NAME">this.content</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newcontent</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="NAME">apdu.setSW</span><span class="PUNC">(</span><span class="NAME">APDU.SW_OK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>139</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview TrustAnchor Base class for card verifiable certificate based access controller
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/FileSystemIdObject'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">FileSystemIdObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/eac/CVC"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> </span><span class="COMM">/**
<span class='line'> 34</span>  * Create a TrustAnchor object that handles certificate validation, terminal authentication and access control
<span class='line'> 35</span>  *
<span class='line'> 36</span>  * @constructor
<span class='line'> 37</span>  * @class Class implementing a CVC based access controller
<span class='line'> 38</span>  * @param {CVC} root the root certificate
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">TrustAnchor</span><span class="PUNC">(</span><span class="NAME">root</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">root</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 44</span> 
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">this.chain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.chain.push</span><span class="PUNC">(</span><span class="NAME">root</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.recentCAROnly</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">					</span><span class="COMM">// Maintain only the latest trust anchor</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="COMM">// Save in file system under id, which is the last byte in the CHAT OID</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">root.getCHAT</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chat.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">root.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Use the name of the CVCA</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="NAME">FileSystemIdObject.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 55</span> 
<span class='line'> 56</span> </span><span class="NAME">TrustAnchor.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">FileSystemIdObject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="NAME">TrustAnchor.prototype.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">TrustAnchor</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> </span><span class="NAME">TrustAnchor.TYPE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"TrustAnchor"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="NAME">TrustAnchor.idIS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> 
<span class='line'> 62</span> </span><span class="NAME">exports.TrustAnchor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">TrustAnchor</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> </span><span class="COMM">/**
<span class='line'> 66</span>  * Return type of file system object
<span class='line'> 67</span>  *
<span class='line'> 68</span>  * @type String
<span class='line'> 69</span>  * @return the type string
<span class='line'> 70</span>  */</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="NAME">TrustAnchor.prototype.getType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">TrustAnchor.TYPE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> 
<span class='line'> 76</span> 
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="COMM">/**
<span class='line'> 79</span>  * Add recent trust anchor to PACE response
<span class='line'> 80</span>  *
<span class='line'> 81</span>  * @param {ASN1} response the response object to receive tag 87 and 88
<span class='line'> 82</span>  */</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="NAME">TrustAnchor.prototype.addCARforPACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">response</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.chain.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="NAME">response.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.recentCAROnly</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">		</span><span class="NAME">response.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x88</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 90</span> 
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="COMM">/**
<span class='line'> 94</span>  * Is a recent trust anchor issuer of the certificate chr in question
<span class='line'> 95</span>  *
<span class='line'> 96</span>  * @param {PublicKeyReference} chr the certificate holder
<span class='line'> 97</span>  * @type boolean
<span class='line'> 98</span>  * @return true if trust anchor issued certificate
<span class='line'> 99</span>  */</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">TrustAnchor.prototype.isIssuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificateFor</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="COMM">//	print("isIssuer(" + chr + "):");</span><span class="WHIT">
<span class='line'>103</span> </span><span class="COMM">//	print(cvc);</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="COMM">/**
<span class='line'>110</span>  * Get public key from certificate, possibly determine the domain parameter from previous trust anchors
<span class='line'>111</span>  *
<span class='line'>112</span>  * @param {PublicKeyReference} chr the certificate holder
<span class='line'>113</span>  * @type Key
<span class='line'>114</span>  * @return the public key or null
<span class='line'>115</span>  */</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">TrustAnchor.prototype.getPublicKeyFor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="COMM">//	print("Get public key for " + chr);</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.chain.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">cl</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>121</span> 
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>123</span> </span><span class="COMM">//		print("chr not found");</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>126</span> 
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cl</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">containsDomainParameter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span> </span><span class="COMM">//		print("Looking for DPs down the chain");</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cl</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">containsDomainParameter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">cl</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>134</span> </span><span class="COMM">//		print("Found domain parameter in " + this.chain[cl]);</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getPublicKey</span><span class="PUNC">(</span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>138</span> </span><span class="COMM">//		print(this.chain[i]);</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>141</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>142</span> 
<span class='line'>143</span> 
<span class='line'>144</span> 
<span class='line'>145</span> </span><span class="COMM">/**
<span class='line'>146</span>  * Return certificate for chr
<span class='line'>147</span>  *
<span class='line'>148</span>  * @param {PublicKeyReference} chr the certificate holder
<span class='line'>149</span>  * @type CVC
<span class='line'>150</span>  * @return the certificate or null
<span class='line'>151</span>  */</span><span class="WHIT">
<span class='line'>152</span> </span><span class="NAME">TrustAnchor.prototype.getCertificateFor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.chain.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.recentCAROnly</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>164</span> 
<span class='line'>165</span> 
<span class='line'>166</span> 
<span class='line'>167</span> </span><span class="COMM">/**
<span class='line'>168</span>  * Update EF.CVCA with list of valid trust anchors
<span class='line'>169</span>  *
<span class='line'>170</span>  * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
<span class='line'>171</span>  */</span><span class="WHIT">
<span class='line'>172</span> </span><span class="NAME">TrustAnchor.prototype.updateEFCVCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dataProvider</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.chain.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.recentCAROnly</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chain</span><span class="PUNC">[</span><span class="NAME">cl</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="NAME">dataProvider.updateEFCVCA</span><span class="PUNC">(</span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>182</span> 
<span class='line'>183</span> 
<span class='line'>184</span> 
<span class='line'>185</span> </span><span class="COMM">/**
<span class='line'>186</span>  * Check certificate
<span class='line'>187</span>  *
<span class='line'>188</span>  * &lt;p>This method updates the current date for certificates issued by domestic DVCAs.&lt;/p>
<span class='line'>189</span>  * @param {CVC} issuer the issuing certificate
<span class='line'>190</span>  * @param {CVC} subject the subjects certificate
<span class='line'>191</span>  * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
<span class='line'>192</span>  * @param {Key} dp domain parameter for checking the public key
<span class='line'>193</span>  */</span><span class="WHIT">
<span class='line'>194</span> </span><span class="NAME">TrustAnchor.prototype.checkCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataProvider</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="COMM">// Some basic sanity checks</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">subject.getCXD</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">subject.getCED</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate expiration is before effective date"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>199</span> 
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">subject.getPublicKey</span><span class="PUNC">(</span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">puk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">puk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">puk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid public key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">e.message</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chatissuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">issuer.getCHAT</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chatsubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">subject.getCHAT</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> 
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rolesubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chatsubject.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">chatissuer.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.equals</span><span class="PUNC">(</span><span class="NAME">rolesubject</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Role mismatch"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rightsissuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chatissuer.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rightssubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chatsubject.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rightsissuer.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">rightssubject.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Different size in rights mask of chat"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>224</span> 
<span class='line'>225</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">typeissuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rightsissuer.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">typesubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rightssubject.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="COMM">// C0 - CVCA, 80 - DV domestic, 40 - DV foreign, 00 - Terminal</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">typeissuer</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Ignore domestic and foreign</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">		</span><span class="NAME">typeissuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">typesubject</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">		</span><span class="NAME">typesubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>235</span> </span><span class="COMM">//	print("issuer " + typeissuer);</span><span class="WHIT">
<span class='line'>236</span> </span><span class="COMM">//	print("subject " + typesubject);</span><span class="WHIT">
<span class='line'>237</span> 
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">typesubject</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">typeissuer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">typeissuer</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">typesubject</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">typeissuer</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate hierachy invalid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>242</span> 
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">issuer.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">subject.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key algorithm mismatch"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">date</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dataProvider.getDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">typesubject</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">			</span><span class="COMM">// CVCA certificates do not expire</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">subject.getCXD</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate is expired"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>253</span> </span><span class="COMM">//		print("Add to chain: " + subject);</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">		</span><span class="NAME">this.chain.push</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">							</span><span class="COMM">// Add new CVCA link to the chain</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rolesubject.equals</span><span class="PUNC">(</span><span class="NAME">TrustAnchor.idIS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">			</span><span class="NAME">this.updateEFCVCA</span><span class="PUNC">(</span><span class="NAME">dataProvider</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">					</span><span class="COMM">// Update /DF.ePass/EF.CVCA</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>259</span> 
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">rightsissuer.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">			</span><span class="COMM">// Trust all except foreign DVCAs</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">subject.getCED</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">			</span><span class="NAME">dataProvider.setDate</span><span class="PUNC">(</span><span class="NAME">subject.getCED</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>265</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>266</span> 
<span class='line'>267</span> 
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="COMM">/**
<span class='line'>270</span>  * Validate certificate issued by CVCA
<span class='line'>271</span>  *
<span class='line'>272</span>  * @param {Crypto} crypto the crypto object to use for verification
<span class='line'>273</span>  * @param {CVC} cert the certificate to validate
<span class='line'>274</span>  * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
<span class='line'>275</span>  */</span><span class="WHIT">
<span class='line'>276</span> </span><span class="NAME">TrustAnchor.prototype.validateCertificateIssuedByCVCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataProvider</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificateFor</span><span class="PUNC">(</span><span class="NAME">cert.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyFor</span><span class="PUNC">(</span><span class="NAME">cert.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">cert.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not verify certificate signature"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="NAME">this.checkCertificate</span><span class="PUNC">(</span><span class="NAME">cc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataProvider</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> 
<span class='line'>285</span> 
<span class='line'>286</span> 
<span class='line'>287</span> </span><span class="COMM">/**
<span class='line'>288</span>  * Validate certificate issued by CVCA
<span class='line'>289</span>  *
<span class='line'>290</span>  * @param {Crypto} crypto the crypto object to use for verification
<span class='line'>291</span>  * @param {CVC} cert the certificate to validate
<span class='line'>292</span>  * @param {CVC} dvca the issuing certificate
<span class='line'>293</span>  * @param {Object} dataProvider object implementing getDate(), setDate() and updateEFCVCA()
<span class='line'>294</span>  */</span><span class="WHIT">
<span class='line'>295</span> </span><span class="NAME">TrustAnchor.prototype.validateCertificateIssuedByDVCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dvca</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataProvider</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyFor</span><span class="PUNC">(</span><span class="NAME">dvca.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>297</span> </span><span class="COMM">//	print(dp);</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">cert.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dvca.getPublicKey</span><span class="PUNC">(</span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dvca.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"TrustAnchor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not verify certificate signature"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="NAME">this.checkCertificate</span><span class="PUNC">(</span><span class="NAME">dvca</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dataProvider</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dvca.getPublicKey</span><span class="PUNC">(</span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>303</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Support for card verifiable certificates and certificate requests according to EAC 1.1/2.0
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> </span><span class="COMM">/**
<span class='line'> 34</span>  * Create a CVC object from a DER encoded ByteString.
<span class='line'> 35</span>  *
<span class='line'> 36</span>  * @class Class implementing a decoder for card verifiable certificates or requests according to
<span class='line'> 37</span>  *        Extended Access Control (EAC) as defined in BSI TR-03110 1.11 and 2.02.
<span class='line'> 38</span>  * @constructor
<span class='line'> 39</span>  * @param {ByteString} param the DER encoded certificate
<span class='line'> 40</span>  * @return
<span class='line'> 41</span>  */</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arg</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">			</span><span class="NAME">this.asn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">			</span><span class="NAME">this.bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arg</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">			</span><span class="NAME">this.bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">			</span><span class="NAME">this.asn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">this.bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type ByteString or ASN1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.asn.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_AT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">			</span><span class="NAME">this.body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.asn.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CVC</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">			</span><span class="NAME">this.body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument is neither a CVC or CVC request"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> </span><span class="NAME">exports.CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> 
<span class='line'> 66</span> </span><span class="NAME">CVC.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="COMM">/** Authentication Template */</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="NAME">CVC.TAG_AT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x67</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="COMM">/** CV Certificate */</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="NAME">CVC.TAG_CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x7F21</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="COMM">/** Certificate Body */</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="NAME">CVC.TAG_BODY</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x7F4E</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="COMM">/** Certificate Profile Identifier */</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="NAME">CVC.TAG_CPI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x5F29</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="COMM">/** Certification Authority Reference */</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="NAME">CVC.TAG_CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="COMM">/** Public Key */</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="NAME">CVC.TAG_PUK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="COMM">/** Prime Modulus */</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="NAME">CVC.TAG_ECC_P</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="COMM">/** First coefficient a */</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="NAME">CVC.TAG_ECC_A</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="COMM">/** Second coefficient b */</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="NAME">CVC.TAG_ECC_B</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="COMM">/** Base Point G */</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="NAME">CVC.TAG_ECC_G</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="COMM">/** Order of the base point */</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="NAME">CVC.TAG_ECC_N</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="COMM">/** Public Point y */</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="NAME">CVC.TAG_ECC_Q</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="COMM">/** Cofactor f */</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="NAME">CVC.TAG_ECC_H</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="COMM">/** Certificate Holder Reference */</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="NAME">CVC.TAG_CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x5F20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="COMM">/** Certificate Holder Authorisation Template */</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="NAME">CVC.TAG_CHAT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x7F4C</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="COMM">/** Relative Authorization */</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">CVC.TAG_AUT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x53</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="COMM">/** Certificate Extension */</span><span class="WHIT">
<span class='line'>102</span> </span><span class="NAME">CVC.TAG_EXTN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x65</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="COMM">/** Certificate Effective Date */</span><span class="WHIT">
<span class='line'>104</span> </span><span class="NAME">CVC.TAG_CED</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x5F25</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="COMM">/** Certificate Expiration Date */</span><span class="WHIT">
<span class='line'>106</span> </span><span class="NAME">CVC.TAG_CXD</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x5F24</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="COMM">/** Signature */</span><span class="WHIT">
<span class='line'>108</span> </span><span class="NAME">CVC.TAG_SIG</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x5F37</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> 
<span class='line'>110</span> 
<span class='line'>111</span> </span><span class="COMM">/** Table of tag names */</span><span class="WHIT">
<span class='line'>112</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>113</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_AT</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Authentication Template"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_CVC</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CV Certificate"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_BODY</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Certificate Body"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_CPI</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Certificate Profile Indicator"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_CAR</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Certification Authority Reference"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Public Key"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_ECC_P</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Prime/Modulus"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_ECC_A</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"First coefficient a/Exponent"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_ECC_B</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Second coefficient b"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_ECC_G</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Base Point G"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_ECC_N</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Order of the base point"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_ECC_Q</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Public Point y"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_ECC_H</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Cofactor f"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_CHR</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Certificate Holder Reference"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_CHAT</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Certificate Holder Authentication Template"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_AUT</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Relative Authorization"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_EXTN</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Extension"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_CED</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Certificate Effective Date"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_CXD</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Certificate Expiration Date"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">CVC.TAG_SIG</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Signature"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> 
<span class='line'>134</span> </span><span class="NAME">CVC.PUK_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_ECC_P</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">512</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_ECC_A</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">512</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_ECC_B</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">66</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_ECC_G</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">133</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_ECC_N</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">66</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_ECC_Q</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">133</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_ECC_H</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>143</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> 
<span class='line'>145</span> </span><span class="NAME">CVC.REQ_BODY_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CPI</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CAR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.PUK_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_EXTN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>151</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> 
<span class='line'>153</span> </span><span class="NAME">CVC.REQ_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_BODY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.REQ_BODY_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_SIG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">40</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">550</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="NAME">CVC.ATREQ_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CVC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.REQ_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CAR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_SIG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">40</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">550</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>162</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> 
<span class='line'>164</span> </span><span class="NAME">CVC.CHAT_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_AUT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>167</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="NAME">CVC.CERT_BODY_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CPI</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CAR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.PUK_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CHAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.CHAT_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_CXD</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_EXTN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">optional</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>178</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> 
<span class='line'>180</span> </span><span class="NAME">CVC.CERT_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_BODY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.CERT_BODY_SYNTAX</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_SIG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxlen</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">550</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>183</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> 
<span class='line'>185</span> 
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="COMM">/** Table of rights description for id-IS */</span><span class="WHIT">
<span class='line'>188</span> </span><span class="NAME">CVC.ISRIGHTS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="STRN">"Read access to ePassport application: DG 3 (Fingerprint)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="STRN">"Read access to ePassport application: DG 4 (Iris)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 3)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 4)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 5)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="STRN">"Read access to eID application"</span><span class="WHIT">
<span class='line'>195</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="NAME">CVC.idIS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> 
<span class='line'>198</span> 
<span class='line'>199</span> </span><span class="COMM">/** Table of rights description for id-AT */</span><span class="WHIT">
<span class='line'>200</span> </span><span class="NAME">CVC.ATRIGHTS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="STRN">"Age Verification"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="STRN">"Community ID Verification"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="STRN">"Restricted Identification"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="STRN">"Privileged Terminal"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="STRN">"CAN allowed"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="STRN">"PIN Management"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="STRN">"Install Certificate"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="STRN">"Install Qualified Certificate"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 1 (Document Type)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 2 (Issuing State)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 3 (Date of Expiration)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 4 (Given Name)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 5 (Surname)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 6 (Pseudonym)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 7 (Academic Grade)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 8 (Date of Birth)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>218</span> 
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 9 (Place of Birth)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 10"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 11"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 12"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 13"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 14"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 15"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 16"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 17 (Place of Residence)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 18 (Community ID)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 19 (Conditions I-eAT)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 20 (Conditions II-eAT)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">	</span><span class="STRN">"Read Access DG 21"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 29)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 30)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 31)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>236</span> 
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 32)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="STRN">"Write Access DG 21"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="STRN">"Write Access DG 20 (Conditions II-eAT)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="STRN">"Write Access DG 19 (Conditions I-eAT)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="STRN">"Write Access DG 18 (Community ID)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">	</span><span class="STRN">"Write Access DG 17 (Place of Residence)"</span><span class="WHIT">
<span class='line'>243</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> </span><span class="NAME">CVC.idAT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-AT"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> 
<span class='line'>246</span> 
<span class='line'>247</span> 
<span class='line'>248</span> </span><span class="COMM">/** Table of rights description for id-ST */</span><span class="WHIT">
<span class='line'>249</span> </span><span class="NAME">CVC.STRIGHTS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">	</span><span class="STRN">"Generate electronic signature"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="STRN">"Generate qualified electronic signature"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 2)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 3)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 4)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">	</span><span class="STRN">"RFU (Bit 5)"</span><span class="WHIT">
<span class='line'>256</span> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> </span><span class="NAME">CVC.idST</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ST"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> 
<span class='line'>259</span> </span><span class="NAME">CVC.idSC_HSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2B0601040181C31F030101"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> </span><span class="NAME">CVC.idBW_SE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2B0601040181C31F030102"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> 
<span class='line'>262</span> 
<span class='line'>263</span> 
<span class='line'>264</span> </span><span class="COMM">/** TA constants */</span><span class="WHIT">
<span class='line'>265</span> </span><span class="NAME">CVC.id_TA_ECDSA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="NAME">CVC.id_TA_ECDSA_SHA_1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="NAME">CVC.id_TA_ECDSA_SHA_224</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-224"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="NAME">CVC.id_TA_ECDSA_SHA_256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="NAME">CVC.id_TA_ECDSA_SHA_384</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="NAME">CVC.id_TA_ECDSA_SHA_512</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_512</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-PSS-SHA-1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-PSS-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_512</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-PSS-SHA-512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> 
<span class='line'>278</span> </span><span class="NAME">CVC.id_ECPUBLICKEY</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ecPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="NAME">CVC.id_ANSIX9</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) prime(1)"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="NAME">CVC.id_CERTICOM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"iso(1) identified-organization(3) certicom(132) curve(0)"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="NAME">CVC.id_BRAINPOOL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ellipticCurve"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> 
<span class='line'>283</span> </span><span class="NAME">CVC.id_ECDSA_WITH_SHA2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) ecdsa-with-SHA2(3)"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>284</span> </span><span class="NAME">CVC.id_ECDSA_WITH_SHA256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="NAME">CVC.id_ECDSA_WITH_SHA384</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>286</span> </span><span class="NAME">CVC.id_ECDSA_WITH_SHA512</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> 
<span class='line'>288</span> 
<span class='line'>289</span> 
<span class='line'>290</span> 
<span class='line'>291</span> </span><span class="COMM">/**
<span class='line'>292</span>  * Return signature mechanism for object identifier
<span class='line'>293</span>  *
<span class='line'>294</span>  * @param {ByteString} oid the object identifer from the public key object
<span class='line'>295</span>  * @returns the signature mechanism as Crypto. constant or -1 if not defined
<span class='line'>296</span>  * @type Number
<span class='line'>297</span>  */</span><span class="WHIT">
<span class='line'>298</span> </span><span class="NAME">CVC.getSignatureMech</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_224</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>304</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_384</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECDSA_WITH_SHA256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECDSA_WITH_SHA384</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECDSA_WITH_SHA512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isCurveOID</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument keysize must be number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">512</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">384</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">224</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>339</span> 
<span class='line'>340</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>341</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>342</span> 
<span class='line'>343</span> 
<span class='line'>344</span> 
<span class='line'>345</span> </span><span class="COMM">/**
<span class='line'>346</span>  * Return hash mechanism for object identifier
<span class='line'>347</span>  *
<span class='line'>348</span>  * @param {ByteString} oid the object identifer from the public key object
<span class='line'>349</span>  * @returns the hash mechanism as Crypto. constant or -1 if not defined
<span class='line'>350</span>  * @type Number
<span class='line'>351</span>  */</span><span class="WHIT">
<span class='line'>352</span> </span><span class="NAME">CVC.getHashMech</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_224</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_384</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>360</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA_SHA_512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECDSA_WITH_SHA256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECDSA_WITH_SHA384</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECDSA_WITH_SHA512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_v1_5_SHA_512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_RSA_PSS_SHA_512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> 
<span class='line'>385</span> 
<span class='line'>386</span> </span><span class="COMM">/**
<span class='line'>387</span>  * Return true of the object identifier denotes a curve
<span class='line'>388</span>  *
<span class='line'>389</span>  * @type boolean
<span class='line'>390</span>  * @return true, if ECDSA based OID
<span class='line'>391</span>  */</span><span class="WHIT">
<span class='line'>392</span> </span><span class="NAME">CVC.isCurveOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.startsWith</span><span class="PUNC">(</span><span class="NAME">CVC.id_BRAINPOOL</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.id_BRAINPOOL.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>394</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.startsWith</span><span class="PUNC">(</span><span class="NAME">CVC.id_ANSIX9</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.id_ANSIX9.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.startsWith</span><span class="PUNC">(</span><span class="NAME">CVC.id_CERTICOM</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.id_CERTICOM.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>404</span> 
<span class='line'>405</span> 
<span class='line'>406</span> 
<span class='line'>407</span> </span><span class="COMM">/**
<span class='line'>408</span>  * Return true of the object identifier starts with id-TA-ECDSA
<span class='line'>409</span>  *
<span class='line'>410</span>  * @type boolean
<span class='line'>411</span>  * @return true, if ECDSA based OID
<span class='line'>412</span>  */</span><span class="WHIT">
<span class='line'>413</span> </span><span class="NAME">CVC.isECDSA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.startsWith</span><span class="PUNC">(</span><span class="NAME">CVC.id_TA_ECDSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.id_TA_ECDSA.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.startsWith</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECDSA_WITH_SHA2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.id_ECDSA_WITH_SHA2.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.id_ECPUBLICKEY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>421</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isCurveOID</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>426</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>427</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>428</span> 
<span class='line'>429</span> 
<span class='line'>430</span> 
<span class='line'>431</span> </span><span class="COMM">/**
<span class='line'>432</span>  * Wrap an ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279
<span class='line'>433</span>  *
<span class='line'>434</span>  * @param signature ByteString containing the concatenation of r and s as unsigned integer values
<span class='line'>435</span>  * @returns ASN.1 SEQUENCE objects containing two signed integer r and s
<span class='line'>436</span>  */</span><span class="WHIT">
<span class='line'>437</span> </span><span class="NAME">CVC.wrapSignature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signature.length</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> 
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="COMM">// r and s are unsigned big integer. We might need to pad a zero for ASN.1 INTEGER which is signed</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signature.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">r.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">		</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">		</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>448</span> 
<span class='line'>449</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signature.bytes</span><span class="PUNC">(</span><span class="NAME">len</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">s.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>451</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>456</span> 
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> 
<span class='line'>461</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>463</span> 
<span class='line'>464</span> 
<span class='line'>465</span> 
<span class='line'>466</span> </span><span class="COMM">/**
<span class='line'>467</span>  * Integer to octet string conversion
<span class='line'>468</span>  */</span><span class="WHIT">
<span class='line'>469</span> </span><span class="NAME">CVC.I2O</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>470</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>473</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>474</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.PAD.left</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>478</span> </span><span class="NAME">CVC.PAD</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> 
<span class='line'>480</span> 
<span class='line'>481</span> 
<span class='line'>482</span> </span><span class="COMM">/**
<span class='line'>483</span>  * Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
<span class='line'>484</span>  * of the unsigned integer r and s
<span class='line'>485</span>  *
<span class='line'>486</span>  * @param signature TLV encoded signature
<span class='line'>487</span>  * @param keylen optional parameter to specify the key lengths in bytes.
<span class='line'>488</span>  * @returns concatenation of r and s
<span class='line'>489</span>  */</span><span class="WHIT">
<span class='line'>490</span> </span><span class="NAME">CVC.unwrapSignature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keylen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.I2O</span><span class="PUNC">(</span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.I2O</span><span class="PUNC">(</span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>495</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">00</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>498</span> </span><span class="WHIT">			</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>499</span> 
<span class='line'>500</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">00</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">			</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>504</span> 
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r.concat</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>507</span> 
<span class='line'>508</span> 
<span class='line'>509</span> 
<span class='line'>510</span> </span><span class="COMM">/**
<span class='line'>511</span>  * Rewrap an ECDSA signature that contains redundant leading zeros in integer.
<span class='line'>512</span>  *
<span class='line'>513</span>  * @param signature the signature
<span class='line'>514</span>  * @type ByteString
<span class='line'>515</span>  * @param the fixed signature
<span class='line'>516</span>  */</span><span class="WHIT">
<span class='line'>517</span> </span><span class="NAME">CVC.rewrapSignature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>518</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">r.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>521</span> </span><span class="WHIT">		</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>523</span> 
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">s.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">s.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>528</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>529</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>530</span> 
<span class='line'>531</span> 
<span class='line'>532</span> 
<span class='line'>533</span> </span><span class="COMM">/**
<span class='line'>534</span>  * Check a ASN sequence against a structure description
<span class='line'>535</span>  *
<span class='line'>536</span>  * @private
<span class='line'>537</span>  * @param {Object} s the structure description
<span class='line'>538</span>  * @param {ASN1} asn the asn sequence
<span class='line'>539</span>  * @type String
<span class='line'>540</span>  * @return null if valid or the validation error message
<span class='line'>541</span>  */</span><span class="WHIT">
<span class='line'>542</span> </span><span class="NAME">CVC.checkStructure</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">asn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>543</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>544</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">s.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>545</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>546</span> 
<span class='line'>547</span> </span><span class="COMM">//		print("Checking tag " + d.tag.toString(HEX));</span><span class="WHIT">
<span class='line'>548</span> 
<span class='line'>549</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">asn.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>550</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">asn.get</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>551</span> 
<span class='line'>552</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">d.tag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>553</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">d.minlen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.value.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">d.minlen</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>554</span> </span><span class="WHIT">					</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Length ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">a.value.length</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") of "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">d.tag</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.tag.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") less than "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.minlen</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>556</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">d.maxlen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.value.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">d.maxlen</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>557</span> </span><span class="WHIT">					</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Length ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">a.value.length</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") of "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">d.tag</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.tag.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") more than "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.maxlen</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">d.content</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT">					</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.checkStructure</span><span class="PUNC">(</span><span class="NAME">d.content</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">					</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT">						</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>564</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>565</span> </span><span class="WHIT">				</span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>567</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">d.optional</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>568</span> </span><span class="WHIT">					</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Expecting "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">d.tag</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.tag.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") but found tag "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">a.tag.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>569</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>570</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>572</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">d.optional</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Expecting "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">d.tag</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d.tag.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") but sequence is exhaused"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>575</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>579</span> 
<span class='line'>580</span> 
<span class='line'>581</span> 
<span class='line'>582</span> </span><span class="COMM">/**
<span class='line'>583</span>  * Validate ASN1 semantic for card verifiable certificate or certificate request
<span class='line'>584</span>  *
<span class='line'>585</span>  * @type String
<span class='line'>586</span>  * @return null if no error, or error message
<span class='line'>587</span>  */</span><span class="WHIT">
<span class='line'>588</span> </span><span class="NAME">CVC.prototype.validate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>589</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.asn.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_AT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT">		</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.checkStructure</span><span class="PUNC">(</span><span class="NAME">CVC.ATREQ_SYNTAX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.asn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>592</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>593</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CED</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>594</span> </span><span class="WHIT">			</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.checkStructure</span><span class="PUNC">(</span><span class="NAME">CVC.CERT_SYNTAX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.asn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>595</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>596</span> </span><span class="WHIT">			</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.checkStructure</span><span class="PUNC">(</span><span class="NAME">CVC.REQ_SYNTAX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.asn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>597</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>598</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>599</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>600</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>601</span> 
<span class='line'>602</span> 
<span class='line'>603</span> 
<span class='line'>604</span> </span><span class="COMM">/**
<span class='line'>605</span>  * Return true of the certificate contains domain parameter
<span class='line'>606</span>  *
<span class='line'>607</span>  * @type boolean
<span class='line'>608</span>  * @return true, if certificate contains domain parameter
<span class='line'>609</span>  */</span><span class="WHIT">
<span class='line'>610</span> </span><span class="NAME">CVC.prototype.containsDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>611</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>612</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>613</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>614</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>615</span> 
<span class='line'>616</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x84</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Generator</span><span class="WHIT">
<span class='line'>617</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>618</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>619</span> 
<span class='line'>620</span> 
<span class='line'>621</span> 
<span class='line'>622</span> </span><span class="COMM">/**
<span class='line'>623</span>  * Returns the certificate profile indicator (CPI)
<span class='line'>624</span>  *
<span class='line'>625</span>  * @return the CPI or null
<span class='line'>626</span>  * @type Number
<span class='line'>627</span>  */</span><span class="WHIT">
<span class='line'>628</span> </span><span class="NAME">CVC.prototype.getCPI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cpido</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CPI</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>630</span> 
<span class='line'>631</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cpido</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>632</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>633</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>634</span> 
<span class='line'>635</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cpido.value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>636</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>637</span> 
<span class='line'>638</span> 
<span class='line'>639</span> 
<span class='line'>640</span> </span><span class="COMM">/**
<span class='line'>641</span>  * Returns the certification authority reference (CAR).
<span class='line'>642</span>  *
<span class='line'>643</span>  * @return the CAR or null
<span class='line'>644</span>  * @type PublicKeyReference
<span class='line'>645</span>  */</span><span class="WHIT">
<span class='line'>646</span> </span><span class="NAME">CVC.prototype.getCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>647</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cardo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span> 
<span class='line'>649</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cardo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>650</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>652</span> 
<span class='line'>653</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">cardo.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>654</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>655</span> 
<span class='line'>656</span> 
<span class='line'>657</span> 
<span class='line'>658</span> </span><span class="COMM">/**
<span class='line'>659</span>  * Returns the certificate holder reference (CHR).
<span class='line'>660</span>  *
<span class='line'>661</span>  * @return the CHR
<span class='line'>662</span>  * @type PublicKeyReference
<span class='line'>663</span>  */</span><span class="WHIT">
<span class='line'>664</span> </span><span class="NAME">CVC.prototype.getCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>665</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chrdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CHR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>666</span> 
<span class='line'>667</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">chrdo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>668</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a CHR"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>669</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>670</span> 
<span class='line'>671</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">chrdo.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>672</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>673</span> 
<span class='line'>674</span> 
<span class='line'>675</span> 
<span class='line'>676</span> </span><span class="COMM">/**
<span class='line'>677</span>  * Returns the certificate effective date (CED).
<span class='line'>678</span>  *
<span class='line'>679</span>  * @return the CED or null
<span class='line'>680</span>  * @type Date
<span class='line'>681</span>  */</span><span class="WHIT">
<span class='line'>682</span> </span><span class="NAME">CVC.prototype.getCED</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>683</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ceddo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CED</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>684</span> 
<span class='line'>685</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ceddo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>686</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT">
<span class='line'>687</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>688</span> 
<span class='line'>689</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ceddo.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>690</span> 
<span class='line'>691</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>692</span> </span><span class="WHIT">	</span><span class="NAME">d.setFullYear</span><span class="PUNC">(</span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2000</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>693</span> </span><span class="WHIT">				  </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>694</span> </span><span class="WHIT">				  </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>695</span> </span><span class="WHIT">	</span><span class="NAME">d.setHours</span><span class="PUNC">(</span><span class="NUMB">12</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>696</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>697</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>698</span> 
<span class='line'>699</span> 
<span class='line'>700</span> 
<span class='line'>701</span> </span><span class="COMM">/**
<span class='line'>702</span>  * Returns the certificate expiration date (CXD).
<span class='line'>703</span>  *
<span class='line'>704</span>  * @return the CXD or null
<span class='line'>705</span>  * @type Date
<span class='line'>706</span>  */</span><span class="WHIT">
<span class='line'>707</span> </span><span class="NAME">CVC.prototype.getCXD</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>708</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cxddo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CXD</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>709</span> 
<span class='line'>710</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cxddo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>711</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT">
<span class='line'>712</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>713</span> 
<span class='line'>714</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cxddo.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>715</span> 
<span class='line'>716</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>717</span> </span><span class="WHIT">	</span><span class="NAME">d.setFullYear</span><span class="PUNC">(</span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2000</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>718</span> </span><span class="WHIT">				  </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>719</span> </span><span class="WHIT">				  </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">b.byteAt</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>720</span> </span><span class="WHIT">	</span><span class="NAME">d.setHours</span><span class="PUNC">(</span><span class="NUMB">12</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>721</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>722</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>723</span> 
<span class='line'>724</span> 
<span class='line'>725</span> 
<span class='line'>726</span> </span><span class="COMM">/**
<span class='line'>727</span>  * Returns the outer certification authority reference (CAR).
<span class='line'>728</span>  *
<span class='line'>729</span>  * @return the outer CAR or null
<span class='line'>730</span>  * @type PublicKeyReference
<span class='line'>731</span>  */</span><span class="WHIT">
<span class='line'>732</span> </span><span class="NAME">CVC.prototype.getOuterCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>733</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.isAuthenticatedRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>734</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>735</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>736</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cardo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>737</span> 
<span class='line'>738</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cardo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>739</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="WHIT">
<span class='line'>740</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>741</span> 
<span class='line'>742</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">cardo.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>743</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>744</span> 
<span class='line'>745</span> 
<span class='line'>746</span> 
<span class='line'>747</span> </span><span class="COMM">/**
<span class='line'>748</span>  * Returns the extension identified by the object identifier.
<span class='line'>749</span>  *
<span class='line'>750</span>  * @return the extension including the OID or null if not defined
<span class='line'>751</span>  * @type ASN1
<span class='line'>752</span>  */</span><span class="WHIT">
<span class='line'>753</span> </span><span class="NAME">CVC.prototype.getExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">extoid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>754</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_EXTN</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>755</span> 
<span class='line'>756</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">extdo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>757</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>758</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>759</span> 
<span class='line'>760</span> </span><span class="COMM">//	print(extdo);</span><span class="WHIT">
<span class='line'>761</span> 
<span class='line'>762</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">extdo.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>763</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">extdo.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>764</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ext.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>765</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">oid.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>766</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">extoid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>767</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>768</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>769</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>770</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>771</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>772</span> 
<span class='line'>773</span> 
<span class='line'>774</span> 
<span class='line'>775</span> </span><span class="COMM">/**
<span class='line'>776</span>  * Returns the Certificate Holder Authorization Template.
<span class='line'>777</span>  *
<span class='line'>778</span>  * @return the chat or null if not defined
<span class='line'>779</span>  * @type ASN1
<span class='line'>780</span>  */</span><span class="WHIT">
<span class='line'>781</span> </span><span class="NAME">CVC.prototype.getCHAT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>782</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CHAT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>783</span> 
<span class='line'>784</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">chat</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>785</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>786</span> 
<span class='line'>787</span> 
<span class='line'>788</span> 
<span class='line'>789</span> </span><span class="COMM">/**
<span class='line'>790</span>  * Returns the public key object identifier
<span class='line'>791</span>  *
<span class='line'>792</span>  * @returns the object identifier assigned to the public key
<span class='line'>793</span>  * @type ByteString
<span class='line'>794</span>  */</span><span class="WHIT">
<span class='line'>795</span> </span><span class="NAME">CVC.prototype.getPublicKeyOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>796</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>797</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>798</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a public key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>799</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>800</span> 
<span class='line'>801</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>803</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key does not contain an object identifier"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>804</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>805</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>806</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>807</span> 
<span class='line'>808</span> 
<span class='line'>809</span> 
<span class='line'>810</span> </span><span class="COMM">/**
<span class='line'>811</span>  * Decode a public key from the TR-03110 format
<span class='line'>812</span>  *
<span class='line'>813</span>  * @param {ASN1} pdo the public key data object
<span class='line'>814</span>  * @param {Key} key the key object to fill
<span class='line'>815</span>  */</span><span class="WHIT">
<span class='line'>816</span> </span><span class="NAME">CVC.decodeECPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>817</span> 
<span class='line'>818</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x86</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Public point</span><span class="WHIT">
<span class='line'>819</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>820</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a public key value"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>821</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>822</span> 
<span class='line'>823</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>824</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b.left</span><span class="PUNC">(</span><span class="NAME">b.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>825</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b.right</span><span class="PUNC">(</span><span class="NAME">b.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>826</span> 
<span class='line'>827</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Prime modulus</span><span class="WHIT">
<span class='line'>828</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>829</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>830</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>831</span> 
<span class='line'>832</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x82</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// First coefficient a</span><span class="WHIT">
<span class='line'>833</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>834</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>835</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>836</span> 
<span class='line'>837</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// First coefficient b</span><span class="WHIT">
<span class='line'>838</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>839</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>840</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>841</span> 
<span class='line'>842</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x84</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Base Point G</span><span class="WHIT">
<span class='line'>843</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>844</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>845</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b.left</span><span class="PUNC">(</span><span class="NAME">b.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>846</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">b.right</span><span class="PUNC">(</span><span class="NAME">b.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>847</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>848</span> 
<span class='line'>849</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x85</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Order of the base point</span><span class="WHIT">
<span class='line'>850</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>851</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>852</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>853</span> 
<span class='line'>854</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x87</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Cofactor f</span><span class="WHIT">
<span class='line'>855</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>856</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>857</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>858</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>859</span> 
<span class='line'>860</span> 
<span class='line'>861</span> 
<span class='line'>862</span> </span><span class="COMM">/**
<span class='line'>863</span>  * Returns the EC public key contained in the certificate.
<span class='line'>864</span>  *
<span class='line'>865</span>  * @param {Key} domParam optional domain parameter if they are not contained in certificate
<span class='line'>866</span>  * @return the public key object
<span class='line'>867</span>  * @type Key
<span class='line'>868</span>  */</span><span class="WHIT">
<span class='line'>869</span> </span><span class="NAME">CVC.prototype.getECPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">domParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>870</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>871</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isCurveOID</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>872</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>873</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>874</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">domParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>875</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">domParam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>876</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>877</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.domParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>878</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domParam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>879</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>880</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>881</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>882</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>883</span> 
<span class='line'>884</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>885</span> 
<span class='line'>886</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>887</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>888</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a public key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>889</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>890</span> 
<span class='line'>891</span> </span><span class="WHIT">	</span><span class="NAME">CVC.decodeECPublicKey</span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>892</span> 
<span class='line'>893</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>894</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>895</span> 
<span class='line'>896</span> 
<span class='line'>897</span> 
<span class='line'>898</span> </span><span class="COMM">/**
<span class='line'>899</span>  * Returns the RSA public key contained in the certificate.
<span class='line'>900</span>  *
<span class='line'>901</span>  * @return the public key object
<span class='line'>902</span>  * @type Key
<span class='line'>903</span>  */</span><span class="WHIT">
<span class='line'>904</span> </span><span class="NAME">CVC.prototype.getRSAPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>905</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>906</span> 
<span class='line'>907</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>908</span> 
<span class='line'>909</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>910</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>911</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a public key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>912</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>913</span> 
<span class='line'>914</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// modulus</span><span class="WHIT">
<span class='line'>915</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>916</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>917</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>918</span> 
<span class='line'>919</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x82</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// public exponent</span><span class="WHIT">
<span class='line'>920</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>921</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>922</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>923</span> 
<span class='line'>924</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>925</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>926</span> 
<span class='line'>927</span> 
<span class='line'>928</span> 
<span class='line'>929</span> </span><span class="COMM">/**
<span class='line'>930</span>  * Returns the public key contained in the certificate.
<span class='line'>931</span>  *
<span class='line'>932</span>  * @param {Key} domParam optional domain parameter if they are not contained in certificate
<span class='line'>933</span>  * @return the public key object
<span class='line'>934</span>  * @type Key
<span class='line'>935</span>  */</span><span class="WHIT">
<span class='line'>936</span> </span><span class="NAME">CVC.prototype.getPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">domParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>937</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pkoid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>938</span> 
<span class='line'>939</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">pkoid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>940</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getECPublicKey</span><span class="PUNC">(</span><span class="NAME">domParam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>941</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>942</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getRSAPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>943</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>944</span> 
<span class='line'>945</span> 
<span class='line'>946</span> 
<span class='line'>947</span> </span><span class="COMM">/**
<span class='line'>948</span>  * Determine the SubjectKeyIdentifier as defined in X.509
<span class='line'>949</span>  *
<span class='line'>950</span>  * @return the key identifier
<span class='line'>951</span>  * @type ByteString
<span class='line'>952</span>  */</span><span class="WHIT">
<span class='line'>953</span> </span><span class="NAME">CVC.prototype.determineKeyIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>954</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>955</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>956</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a public key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>957</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>958</span> 
<span class='line'>959</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pkoid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>960</span> 
<span class='line'>961</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>962</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">pkoid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>963</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x86</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Public point</span><span class="WHIT">
<span class='line'>964</span> </span><span class="WHIT">		</span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>965</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>966</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">modulus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// modulus</span><span class="WHIT">
<span class='line'>967</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">modulus.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>968</span> </span><span class="WHIT">			</span><span class="NAME">modulus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">modulus</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>969</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>970</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">exponent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x82</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// public exponent</span><span class="WHIT">
<span class='line'>971</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsapub</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"RSAPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>972</span> </span><span class="WHIT">				      </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">modulus</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>973</span> </span><span class="WHIT">				      </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"publicKeyExponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exponent</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>974</span> 
<span class='line'>975</span> </span><span class="WHIT">		</span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsapub.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>976</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>977</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CVC.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>978</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>979</span> 
<span class='line'>980</span> 
<span class='line'>981</span> 
<span class='line'>982</span> </span><span class="COMM">/**
<span class='line'>983</span>  * Return the x-coordinate of the EC Public Key.
<span class='line'>984</span>  *
<span class='line'>985</span>  * @return the key identifier
<span class='line'>986</span>  * @type ByteString
<span class='line'>987</span>  */</span><span class="WHIT">
<span class='line'>988</span> </span><span class="NAME">CVC.prototype.getECPublicKeyIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>989</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_PUK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>990</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pdo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>991</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a public key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>992</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>993</span> 
<span class='line'>994</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pkoid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>995</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">pkoid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>996</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate does not contain a EC Public Key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>997</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>998</span> 
<span class='line'>999</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdo.find</span><span class="PUNC">(</span><span class="NUMB">0x86</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Public point</span><span class="WHIT">
<span class='line'>1000</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1001</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">d.value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1002</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1003</span> 
<span class='line'>1004</span> 
<span class='line'>1005</span> 
<span class='line'>1006</span> </span><span class="COMM">/**
<span class='line'>1007</span>  * Determine if this is an authenticated request
<span class='line'>1008</span>  *
<span class='line'>1009</span>  * @returns true, if authenticated request
<span class='line'>1010</span>  * @type Boolean
<span class='line'>1011</span>  */</span><span class="WHIT">
<span class='line'>1012</span> </span><span class="NAME">CVC.prototype.isAuthenticatedRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1013</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.asn.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_AT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1014</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1015</span> 
<span class='line'>1016</span> 
<span class='line'>1017</span> 
<span class='line'>1018</span> </span><span class="COMM">/**
<span class='line'>1019</span>  * Determine if this is a certificate request
<span class='line'>1020</span>  *
<span class='line'>1021</span>  * @returns true, if certificate request
<span class='line'>1022</span>  * @type Boolean
<span class='line'>1023</span>  */</span><span class="WHIT">
<span class='line'>1024</span> </span><span class="NAME">CVC.prototype.isCertificateRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1025</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isAuthenticatedRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1026</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1027</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1028</span> 
<span class='line'>1029</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ced</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCED</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1030</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ced</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1031</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1032</span> 
<span class='line'>1033</span> 
<span class='line'>1034</span> 
<span class='line'>1035</span> </span><span class="COMM">/**
<span class='line'>1036</span>  * Determine if this is a countersigned authenticated request
<span class='line'>1037</span>  *
<span class='line'>1038</span>  * @returns true, if countersigned authenticated request
<span class='line'>1039</span>  * @type Boolean
<span class='line'>1040</span>  */</span><span class="WHIT">
<span class='line'>1041</span> </span><span class="NAME">CVC.prototype.isCountersignedRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1042</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.isAuthenticatedRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1043</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1044</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1045</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">this.getOuterCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1046</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1047</span> 
<span class='line'>1048</span> 
<span class='line'>1049</span> 
<span class='line'>1050</span> </span><span class="COMM">/**
<span class='line'>1051</span>  * Determine if this certificate is expired
<span class='line'>1052</span>  *
<span class='line'>1053</span>  * @returns true, if certificate is expired
<span class='line'>1054</span>  * @type Boolean
<span class='line'>1055</span>  */</span><span class="WHIT">
<span class='line'>1056</span> </span><span class="NAME">CVC.prototype.isExpired</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1057</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">now</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1058</span> </span><span class="WHIT">	</span><span class="NAME">now.setHours</span><span class="PUNC">(</span><span class="NUMB">12</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1059</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">now.valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">this.getCXD</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">valueOf</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1060</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1061</span> 
<span class='line'>1062</span> 
<span class='line'>1063</span> 
<span class='line'>1064</span> </span><span class="COMM">/**
<span class='line'>1065</span>  * Verify certificate signature with public key
<span class='line'>1066</span>  *
<span class='line'>1067</span>  * @param {Crypto} crypto the crypto instance to use for verification
<span class='line'>1068</span>  * @param {Key} puk the public key
<span class='line'>1069</span>  * @param {ByteString} oid the signature algorithm
<span class='line'>1070</span>  * @returns true if the signature is valid
<span class='line'>1071</span>  * @type Boolean
<span class='line'>1072</span>  */</span><span class="WHIT">
<span class='line'>1073</span> </span><span class="NAME">CVC.prototype.verifyWith</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1074</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.asn.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_AT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1075</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1076</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1077</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1078</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1079</span> 
<span class='line'>1080</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1081</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1082</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1083</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.getSignatureMech</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1084</span> 
<span class='line'>1085</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1086</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.wrapSignature</span><span class="PUNC">(</span><span class="NAME">signature.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1087</span> </span><span class="WHIT">		</span><span class="NAME">this.domParam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1088</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1089</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signature.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1090</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1091</span> 
<span class='line'>1092</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.body.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1093</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1094</span> 
<span class='line'>1095</span> 
<span class='line'>1096</span> 
<span class='line'>1097</span> </span><span class="COMM">/**
<span class='line'>1098</span>  * Verify certificate signature with public key from card verifiable certificate
<span class='line'>1099</span>  *
<span class='line'>1100</span>  * @param {CVC} cvc the card verifiable certificate used to obtain the public key
<span class='line'>1101</span>  * @returns true if the signature is valid
<span class='line'>1102</span>  * @type Boolean
<span class='line'>1103</span>  */</span><span class="WHIT">
<span class='line'>1104</span> </span><span class="NAME">CVC.prototype.verifyWithCVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1105</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1106</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1107</span> 
<span class='line'>1108</span> 
<span class='line'>1109</span> 
<span class='line'>1110</span> </span><span class="COMM">/**
<span class='line'>1111</span>  * Verify outer signature of an authenticated request with public key
<span class='line'>1112</span>  *
<span class='line'>1113</span>  * @param {Key} puk the public key
<span class='line'>1114</span>  * @param {ByteString} oid the signature algorithm
<span class='line'>1115</span>  * @returns true if the signature is valid
<span class='line'>1116</span>  * @type Boolean
<span class='line'>1117</span>  */</span><span class="WHIT">
<span class='line'>1118</span> </span><span class="NAME">CVC.prototype.verifyATWith</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1119</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.isAuthenticatedRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1120</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Not an authenticated request"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1121</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1122</span> 
<span class='line'>1123</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1124</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">this.asn.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1125</span> 
<span class='line'>1126</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1127</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1128</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1129</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.getSignatureMech</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1130</span> 
<span class='line'>1131</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1132</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.wrapSignature</span><span class="PUNC">(</span><span class="NAME">signature.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1133</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1134</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signature.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1135</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1136</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1137</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1138</span> 
<span class='line'>1139</span> 
<span class='line'>1140</span> 
<span class='line'>1141</span> </span><span class="COMM">/**
<span class='line'>1142</span>  * Verify outer signature of an authenticated request with public key from card verifiable certificate
<span class='line'>1143</span>  *
<span class='line'>1144</span>  * @param {CVC} cvc the card verifiable certificate used to obtain the public key
<span class='line'>1145</span>  * @returns true if the signature is valid
<span class='line'>1146</span>  * @type Boolean
<span class='line'>1147</span>  */</span><span class="WHIT">
<span class='line'>1148</span> </span><span class="NAME">CVC.prototype.verifyATWithCVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1149</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.verifyATWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1150</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1151</span> 
<span class='line'>1152</span> 
<span class='line'>1153</span> 
<span class='line'>1154</span> </span><span class="COMM">/**
<span class='line'>1155</span>  * Returns the encoded certificate
<span class='line'>1156</span>  *
<span class='line'>1157</span>  * @return the DER encoded certificate
<span class='line'>1158</span>  * @type ByteString
<span class='line'>1159</span>  */</span><span class="WHIT">
<span class='line'>1160</span> </span><span class="NAME">CVC.prototype.getBytes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1161</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bin</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1162</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1163</span> 
<span class='line'>1164</span> 
<span class='line'>1165</span> 
<span class='line'>1166</span> </span><span class="COMM">/**
<span class='line'>1167</span>  * Returns the certificate as ASN1 structure
<span class='line'>1168</span>  *
<span class='line'>1169</span>  * @return the certificate as ASN1 structure
<span class='line'>1170</span>  * @type ASN1
<span class='line'>1171</span>  */</span><span class="WHIT">
<span class='line'>1172</span> </span><span class="NAME">CVC.prototype.getASN1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1173</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.asn</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1174</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1175</span> 
<span class='line'>1176</span> 
<span class='line'>1177</span> 
<span class='line'>1178</span> </span><span class="COMM">/**
<span class='line'>1179</span>  * Function to recursively walk the ASN.1 tree
<span class='line'>1180</span>  */</span><span class="WHIT">
<span class='line'>1181</span> </span><span class="NAME">CVC.decorateTree</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1182</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.OBJECTNAMES</span><span class="PUNC">[</span><span class="NAME">node.tag</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1183</span> 
<span class='line'>1184</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1185</span> </span><span class="WHIT">		</span><span class="NAME">node.setName</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1186</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1187</span> 
<span class='line'>1188</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.isconstructed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1189</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">node.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1190</span> </span><span class="WHIT">			</span><span class="NAME">CVC.decorateTree</span><span class="PUNC">(</span><span class="NAME">node.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1191</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1192</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1193</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1194</span> 
<span class='line'>1195</span> 
<span class='line'>1196</span> 
<span class='line'>1197</span> </span><span class="COMM">/**
<span class='line'>1198</span>  * Decorate the ASN.1 object with the correct name
<span class='line'>1199</span>  */</span><span class="WHIT">
<span class='line'>1200</span> </span><span class="NAME">CVC.prototype.decorate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1201</span> </span><span class="WHIT">	</span><span class="NAME">CVC.decorateTree</span><span class="PUNC">(</span><span class="NAME">this.asn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1202</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cxddo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.body.find</span><span class="PUNC">(</span><span class="NAME">CVC.TAG_CXD</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1203</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cxddo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1204</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.asn.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_AT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1205</span> </span><span class="WHIT">			</span><span class="NAME">this.asn.setName</span><span class="PUNC">(</span><span class="STRN">"Authenticated CVC Request"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1206</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1207</span> </span><span class="WHIT">			</span><span class="NAME">this.asn.setName</span><span class="PUNC">(</span><span class="STRN">"CVC Request"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1208</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1209</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1210</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1211</span> 
<span class='line'>1212</span> 
<span class='line'>1213</span> 
<span class='line'>1214</span> </span><span class="COMM">/**
<span class='line'>1215</span>  * Return list of rights granted by the certificate
<span class='line'>1216</span>  *
<span class='line'>1217</span>  * @returns the list of rights
<span class='line'>1218</span>  * @type String[]
<span class='line'>1219</span>  */</span><span class="WHIT">
<span class='line'>1220</span> </span><span class="NAME">CVC.prototype.getRightsAsList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1221</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1222</span> 
<span class='line'>1223</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rtab</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1224</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCHAT</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1225</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1226</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1227</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1228</span> 
<span class='line'>1229</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chat.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1230</span> 
<span class='line'>1231</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idIS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1232</span> </span><span class="WHIT">		</span><span class="NAME">rtab</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.ISRIGHTS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1233</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idAT</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1234</span> </span><span class="WHIT">		</span><span class="NAME">rtab</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.ATRIGHTS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1235</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idST</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1236</span> </span><span class="WHIT">		</span><span class="NAME">rtab</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.STRIGHTS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1237</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1238</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1239</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1240</span> 
<span class='line'>1241</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mask</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chat.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1242</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1243</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mask.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1244</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">akku</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mask.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1245</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1246</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">akku</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1247</span> </span><span class="WHIT">				</span><span class="NAME">list.push</span><span class="PUNC">(</span><span class="NAME">rtab</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1248</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1249</span> </span><span class="WHIT">			</span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1250</span> </span><span class="WHIT">			</span><span class="NAME">akku</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1251</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1252</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1253</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1254</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1255</span> 
<span class='line'>1256</span> 
<span class='line'>1257</span> 
<span class='line'>1258</span> </span><span class="COMM">/**
<span class='line'>1259</span>  * Return position of certificate in PKI hierachie
<span class='line'>1260</span>  *
<span class='line'>1261</span>  * @returns Position in PKI hierachie: 0 unknown, 1-CVCA, 2-DVCA, 3-Terminal
<span class='line'>1262</span>  * @type Number
<span class='line'>1263</span>  */</span><span class="WHIT">
<span class='line'>1264</span> </span><span class="NAME">CVC.prototype.getLevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1265</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCHAT</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1266</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">chat</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1267</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1268</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1269</span> 
<span class='line'>1270</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chat.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1271</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1272</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1273</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1274</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1275</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1276</span> 
<span class='line'>1277</span> 
<span class='line'>1278</span> 
<span class='line'>1279</span> </span><span class="COMM">/**
<span class='line'>1280</span>  * Return a string describing the certificate type
<span class='line'>1281</span>  *
<span class='line'>1282</span>  * @returns a describing string
<span class='line'>1283</span>  * @type String
<span class='line'>1284</span>  */</span><span class="WHIT">
<span class='line'>1285</span> </span><span class="NAME">CVC.prototype.getType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1286</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ced</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCED</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1287</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCHAT</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1288</span> 
<span class='line'>1289</span> </span><span class="WHIT">	</span><span class="COMM">// Decode certificate / request type</span><span class="WHIT">
<span class='line'>1290</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CVC "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1291</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ced</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1292</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.asn.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">CVC.TAG_AT</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1293</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"AT-CVREQ "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1294</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1295</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CVREQ "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1296</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1297</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1298</span> 
<span class='line'>1299</span> </span><span class="WHIT">	</span><span class="COMM">// Decode CA type</span><span class="WHIT">
<span class='line'>1300</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1301</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chat.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1302</span> 
<span class='line'>1303</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idSC_HSM</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idBW_SE</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1304</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idSC_HSM</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1305</span> </span><span class="WHIT">				</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"id-SC-HSM "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1306</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1307</span> </span><span class="WHIT">				</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"id-BW-SE "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1308</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1309</span> </span><span class="WHIT">			</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">chat.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1310</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"SRCA "</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1311</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"DICA "</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1312</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"MICA "</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1313</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Device "</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1314</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1315</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1316</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">trustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1317</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">untrustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1318</span> 
<span class='line'>1319</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idIS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1320</span> </span><span class="WHIT">				</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"id-IS "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1321</span> </span><span class="WHIT">				</span><span class="NAME">trustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(official domestic) "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1322</span> </span><span class="WHIT">				</span><span class="NAME">untrustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(official foreign) "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1323</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idAT</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1324</span> </span><span class="WHIT">				</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"id-AT "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1325</span> </span><span class="WHIT">				</span><span class="NAME">trustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(official domestic) "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1326</span> </span><span class="WHIT">				</span><span class="NAME">untrustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(non-official / foreign) "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1327</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.equals</span><span class="PUNC">(</span><span class="NAME">CVC.idST</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1328</span> </span><span class="WHIT">				</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"id-ST "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1329</span> </span><span class="WHIT">				</span><span class="NAME">trustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(accreditation body) "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1330</span> </span><span class="WHIT">				</span><span class="NAME">untrustedDV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(certification service provider) "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1331</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1332</span> </span><span class="WHIT">				</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oid.toString</span><span class="PUNC">(</span><span class="NAME">OID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1333</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1334</span> 
<span class='line'>1335</span> </span><span class="WHIT">			</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">chat.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1336</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CVCA "</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1337</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"DV "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">trustedDV</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1338</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"DV "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">untrustedDV</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1339</span> </span><span class="WHIT">				</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Terminal "</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1340</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1341</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1342</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1343</span> 
<span class='line'>1344</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1345</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1346</span> 
<span class='line'>1347</span> 
<span class='line'>1348</span> 
<span class='line'>1349</span> </span><span class="COMM">/**
<span class='line'>1350</span>  * Return a textual description of the certificate
<span class='line'>1351</span>  *
<span class='line'>1352</span>  * @returns a string containing information about the certificate
<span class='line'>1353</span>  * @type String
<span class='line'>1354</span>  */</span><span class="WHIT">
<span class='line'>1355</span> </span><span class="NAME">CVC.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1356</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1357</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ced</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCED</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1358</span> 
<span class='line'>1359</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1360</span> 
<span class='line'>1361</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1362</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CAR="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1363</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1364</span> 
<span class='line'>1365</span> </span><span class="WHIT">	</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CHR="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1366</span> 
<span class='line'>1367</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ced</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1368</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CED="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ced.toLocaleDateString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1369</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1370</span> 
<span class='line'>1371</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cxd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCXD</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1372</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cxd</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1373</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CXD="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cxd.toLocaleDateString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1374</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1375</span> 
<span class='line'>1376</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isAuthenticatedRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1377</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"oCAR="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getOuterCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1378</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1379</span> 
<span class='line'>1380</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1381</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1382</span> 
<span class='line'>1383</span> 
<span class='line'>1384</span> 
<span class='line'>1385</span> </span><span class="COMM">/**
<span class='line'>1386</span>  * Return object suitable for JSON encoding
<span class='line'>1387</span>  *
<span class='line'>1388</span>  * @returns a JSON encodable object
<span class='line'>1389</span>  * @type Object
<span class='line'>1390</span>  */</span><span class="WHIT">
<span class='line'>1391</span> </span><span class="NAME">CVC.prototype.toJSON</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1392</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">clazz</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"CVC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.bin</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1393</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1394</span> 
<span class='line'>1395</span> 
<span class='line'>1396</span> 
<span class='line'>1397</span> </span><span class="COMM">/**
<span class='line'>1398</span>  * Recreate object from JSON encoding
<span class='line'>1399</span>  *
<span class='line'>1400</span>  * @returns the CVC object
<span class='line'>1401</span>  * @type Object
<span class='line'>1402</span>  */</span><span class="WHIT">
<span class='line'>1403</span> </span><span class="NAME">CVC.fromJSON</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1404</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">obj.clazz.equals</span><span class="PUNC">(</span><span class="STRN">"CVC"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"JSON object must contain clazz: CVC"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1405</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">obj.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1406</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1407</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Simple CVC-CA
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVCertificateStore'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/EAC2CVRequestGenerator'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">EAC2CVRequestGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/EAC2CVCertificateGenerator'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">EAC2CVCertificateGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 34</span> 
<span class='line'> 35</span> 
<span class='line'> 36</span> 
<span class='line'> 37</span> </span><span class="COMM">/**
<span class='line'> 38</span>  * Creates a new CVC-CA instance
<span class='line'> 39</span>  *
<span class='line'> 40</span>  * @class Class supporting a certification authority that can issue CVC certificates
<span class='line'> 41</span>  * for the EAC protocol.
<span class='line'> 42</span>  *
<span class='line'> 43</span>  * @constructor
<span class='line'> 44</span>  * @param {Crypto} crypto the crypto provider to use
<span class='line'> 45</span>  * @param {CVCertificateStore} certstore the certificate store to use
<span class='line'> 46</span>  * @param {String} path the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM")
<span class='line'> 47</span>  */</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certstore</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">holderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parentId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"new("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">certstore</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parentId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> 
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="NAME">this.certstore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certstore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">	</span><span class="COMM">// ToDo: Remove after migration</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="NAME">this.holderId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">		</span><span class="NAME">this.parentId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parentId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isRootCA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// CVCA</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">			</span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holderId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">					</span><span class="COMM">// DVCA</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">			</span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parentId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holderId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">		</span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pe.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">		</span><span class="NAME">this.holderId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">			</span><span class="NAME">this.parentId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">			</span><span class="NAME">this.parentId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.holderId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="NAME">this.keyspec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="NAME">this.keyspec.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="NAME">this.taAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="NAME">this.countryseq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 80</span> 
<span class='line'> 81</span> </span><span class="NAME">exports.CVCCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> 
<span class='line'> 83</span> 
<span class='line'> 84</span> 
<span class='line'> 85</span> </span><span class="COMM">/**
<span class='line'> 86</span>  * Set factory generating EACCryptoProvider for private key operations (create, use, delete)
<span class='line'> 87</span>  *
<span class='line'> 88</span>  * @param {EACCryptoProvider} eaccp the EAC Crypto Provider for this instance
<span class='line'> 89</span>  * @param {String} eaccpid the instance id
<span class='line'> 90</span>  */</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="NAME">CVCCA.prototype.setEACCryptoProviderFactory</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">eaccpf</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">eaccpid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="NAME">this.eaccpf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">eaccpf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="NAME">this.eaccpid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">eaccpid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> 
<span class='line'> 97</span> 
<span class='line'> 98</span> </span><span class="COMM">/**
<span class='line'> 99</span>  * Return a suitable crypto instance
<span class='line'>100</span>  *
<span class='line'>101</span>  */</span><span class="WHIT">
<span class='line'>102</span> </span><span class="NAME">CVCCA.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCrypto()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> 
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.eaccpf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eaccp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.eaccpf.getEACCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.eaccpid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">eaccp.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> 
<span class='line'>114</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>115</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>116</span> 
<span class='line'>117</span> 
<span class='line'>118</span> 
<span class='line'>119</span> </span><span class="COMM">/**
<span class='line'>120</span>  * Returns true if this is a root CA
<span class='line'>121</span>  *
<span class='line'>122</span>  * @returns true if this is a root CA
<span class='line'>123</span>  * @type boolean
<span class='line'>124</span>  */</span><span class="WHIT">
<span class='line'>125</span> </span><span class="NAME">CVCCA.prototype.isRootCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"isRootCA()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.holderId</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">this.parentId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>130</span> 
<span class='line'>131</span> 
<span class='line'>132</span> 
<span class='line'>133</span> </span><span class="COMM">/**
<span class='line'>134</span>  * Returns true if this CA has a certificate.
<span class='line'>135</span>  *
<span class='line'>136</span>  * @returns true if this CA is operational
<span class='line'>137</span>  * @type boolean
<span class='line'>138</span>  */</span><span class="WHIT">
<span class='line'>139</span> </span><span class="NAME">CVCCA.prototype.hasCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"hasCertificate()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span> 
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>145</span> 
<span class='line'>146</span> 
<span class='line'>147</span> 
<span class='line'>148</span> </span><span class="COMM">/**
<span class='line'>149</span>  * Returns true if this CA is operational.
<span class='line'>150</span>  *
<span class='line'>151</span>  * @returns true if this CA is operational
<span class='line'>152</span>  * @type boolean
<span class='line'>153</span>  */</span><span class="WHIT">
<span class='line'>154</span> </span><span class="NAME">CVCCA.prototype.isOperational</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"isOperational()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> 
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">cvc.isExpired</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>164</span> 
<span class='line'>165</span> 
<span class='line'>166</span> 
<span class='line'>167</span> </span><span class="COMM">/**
<span class='line'>168</span>  * Sets the key specification for generating requests
<span class='line'>169</span>  *
<span class='line'>170</span>  * @param {Key} keyparam a key object containing key parameters (e.g. EC Curve)
<span class='line'>171</span>  * @param {ByteString} algorithm the terminal authentication algorithm object identifier
<span class='line'>172</span>  */</span><span class="WHIT">
<span class='line'>173</span> </span><span class="NAME">CVCCA.prototype.setKeySpec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyparam</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"setKeySpec("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyparam</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="NAME">this.keyspec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyparam</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="NAME">this.taAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>179</span> 
<span class='line'>180</span> 
<span class='line'>181</span> 
<span class='line'>182</span> </span><span class="COMM">/**
<span class='line'>183</span>  * Set flags that controls the removal of the previous key if the certificate for the new key is imported
<span class='line'>184</span>  *
<span class='line'>185</span>  * @param {boolean} removePreviousKey true to remove, false to keep
<span class='line'>186</span>  */</span><span class="WHIT">
<span class='line'>187</span> </span><span class="NAME">CVCCA.prototype.setRemovePreviousKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">removePreviousKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"setRemovePreviousKey("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">removePreviousKey</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> 
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="NAME">this.removePreviousKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">removePreviousKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="COMM">/**
<span class='line'>196</span>  * Set country code to be included in sequence number of public key reference
<span class='line'>197</span>  *
<span class='line'>198</span>  * @param {String} countryseq the two character country code
<span class='line'>199</span>  */</span><span class="WHIT">
<span class='line'>200</span> </span><span class="NAME">CVCCA.prototype.setCountryCodeForSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">countryseq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"setCountryCodeForSequence("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="NAME">this.countryseq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>205</span> 
<span class='line'>206</span> 
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="COMM">/**
<span class='line'>209</span>  * Return private key handle, either from EACCryptoProvider or Certificate Store
<span class='line'>210</span>  *
<span class='line'>211</span>  */</span><span class="WHIT">
<span class='line'>212</span> </span><span class="NAME">CVCCA.prototype.getPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getPrivateKey("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> 
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.eaccpf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eaccp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.eaccpf.getEACCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.eaccpid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getSigner</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">eaccp.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prkey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">blob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Have a key but no matching signer</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Signer "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found in database, but on crypto device. Creating signer now."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="WHIT">			</span><span class="COMM">// Calculate current signer number</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">seq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chr.getSequenceNo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">seq.substr</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="COMM">// Full 5 digit sequence</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">cnt</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">seq.substr</span><span class="PUNC">(</span><span class="PUNC">-</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// 3 Digit sequence number</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Setting signer number to "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">			</span><span class="NAME">this.certstore.setSignerNo</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">			</span><span class="NAME">this.certstore.newSigner</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">prkey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.certstore.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>239</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> 
<span class='line'>242</span> 
<span class='line'>243</span> </span><span class="COMM">/**
<span class='line'>244</span>  * Generate a certificate request
<span class='line'>245</span>  *
<span class='line'>246</span>  * @param {PublicKeyReference} car the CA at which this request is addressed
<span class='line'>247</span>  * @param {boolean} forceInitial force an initial request, even if a current certificate is available
<span class='line'>248</span>  * @param {boolean} signinitial sign with initial key (sequence = 00000)
<span class='line'>249</span>  * @return the certificate request
<span class='line'>250</span>  * @type CVC
<span class='line'>251</span>  */</span><span class="WHIT">
<span class='line'>252</span> </span><span class="NAME">CVCCA.prototype.generateRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> 
<span class='line'>255</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.certstore.sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.generateRequestHSM</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>258</span> 
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.eaccpf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eaccp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.eaccpf.getEACCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.eaccpid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">eaccp.generateRequest</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.generateRequestHSMCP</span><span class="PUNC">(</span><span class="NAME">eaccp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>265</span> 
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="COMM">// Obtain key parameter</span><span class="WHIT">
<span class='line'>267</span> 
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyspec.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.keyspec</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="NAME">prk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyalg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.EC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="NAME">prk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyalg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.keyspec</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="NAME">puk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> 
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="COMM">// Determine CHR</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getNextCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.countryseq</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> 
<span class='line'>284</span> </span><span class="WHIT">	</span><span class="COMM">// Generate key pair</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.eaccpf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eaccp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.eaccpf.getEACCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.eaccpid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">		</span><span class="NAME">eaccp.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">		</span><span class="NAME">this.certstore.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>291</span> 
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="COMM">// Generate certificate request</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator</span><span class="PUNC">(</span><span class="NAME">this.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> 
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="COMM">// Set CPI</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">	</span><span class="NAME">reqGenerator.setProfileIdentifier</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>297</span> 
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="COMM">// Set public key for request</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="NAME">reqGenerator.setPublicKey</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> 
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="COMM">// Set oid of algorithm</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">	</span><span class="NAME">reqGenerator.setTAAlgorithmIdentifier</span><span class="PUNC">(</span><span class="NAME">this.taAlgorithmIdentifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="WHIT">	</span><span class="COMM">// Set CHR for the request</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="NAME">reqGenerator.setCHR</span><span class="PUNC">(</span><span class="NAME">nextchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> 
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">		</span><span class="NAME">reqGenerator.setCAR</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>310</span> 
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">forceinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">previousprk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">previouscvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">reqGenerator.generateAuthenticatedCVRequest</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">previousprk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">previouscvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">		</span><span class="COMM">// Generate the request</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">initialchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">nextchr.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"00000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">firstprk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initialchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">reqGenerator.generateAuthenticatedCVRequest</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">firstprk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initialchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">reqGenerator.generateCVRequest</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>325</span> 
<span class='line'>326</span> </span><span class="WHIT">	</span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> 
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="NAME">this.certstore.storeRequest</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>332</span> 
<span class='line'>333</span> 
<span class='line'>334</span> 
<span class='line'>335</span> </span><span class="COMM">/**
<span class='line'>336</span>  * Generate a certificate request using a SmartCard-HSM based private key
<span class='line'>337</span>  *
<span class='line'>338</span>  * @param {PublicKeyReference} car the CA at which this request is addressed
<span class='line'>339</span>  * @param {boolean} forceInitial force an initial request, even if a current certificate is available
<span class='line'>340</span>  * @param {boolean} signinitial sign with initial key (sequence = 00000)
<span class='line'>341</span>  * @return the certificate request
<span class='line'>342</span>  * @type CVC
<span class='line'>343</span>  */</span><span class="WHIT">
<span class='line'>344</span> </span><span class="NAME">CVCCA.prototype.generateRequestHSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateRequestHSM("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> 
<span class='line'>347</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.generateRequest</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.keyspec</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.taAlgorithmIdentifier</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.countryseq</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="NAME">this.certstore.storeRequest</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>349</span> 
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>352</span> 
<span class='line'>353</span> 
<span class='line'>354</span> 
<span class='line'>355</span> </span><span class="COMM">/**
<span class='line'>356</span>  * Generate a certificate request using a SmartCard-HSM based private key via EACCryptoProvider
<span class='line'>357</span>  *
<span class='line'>358</span>  * @param {EACCryptoProvider} prov the EACCryptoProvider
<span class='line'>359</span>  * @param {PublicKeyReference} car the CA at which this request is addressed
<span class='line'>360</span>  * @param {boolean} forceInitial force an initial request, even if a current certificate is available
<span class='line'>361</span>  * @param {boolean} signinitial sign with initial key (sequence = 00000)
<span class='line'>362</span>  * @return the certificate request
<span class='line'>363</span>  * @type CVC
<span class='line'>364</span>  */</span><span class="WHIT">
<span class='line'>365</span> </span><span class="NAME">CVCCA.prototype.generateRequestHSMCP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">prov</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateRequestHSM("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> 
<span class='line'>368</span> </span><span class="WHIT">	</span><span class="COMM">// Determine CHR</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getNextCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.countryseq</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"CHR "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" already in use, skipping to next CHR"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>378</span> 
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">prov.generateRequest</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.keyspec</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.taAlgorithmIdentifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">	</span><span class="NAME">this.certstore.storeRequest</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">	</span><span class="NAME">this.certstore.newSigner</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> 
<span class='line'>383</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>384</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>385</span> 
<span class='line'>386</span> 
<span class='line'>387</span> 
<span class='line'>388</span> </span><span class="COMM">/**
<span class='line'>389</span>  * Counter-sign a request
<span class='line'>390</span>  *
<span class='line'>391</span>  * @param {CVC} req the initial request
<span class='line'>392</span>  * @return the certificate request
<span class='line'>393</span>  * @type CVC
<span class='line'>394</span>  */</span><span class="WHIT">
<span class='line'>395</span> </span><span class="NAME">CVCCA.prototype.counterSignRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"counterSignRequest('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"')"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> 
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">request.isAuthenticatedRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> 
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> 
<span class='line'>403</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cacvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cacvc</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> 
<span class='line'>406</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signingTAAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cacvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> 
<span class='line'>409</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.signAuthenticatedCVRequest</span><span class="PUNC">(</span><span class="NAME">this.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">request.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signingTAAlgorithmIdentifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>412</span> 
<span class='line'>413</span> 
<span class='line'>414</span> 
<span class='line'>415</span> </span><span class="COMM">/**
<span class='line'>416</span>  * Generate an initial certificate request
<span class='line'>417</span>  *
<span class='line'>418</span>  * @param {PublicKeyReference} car the CA at which this request is addressed
<span class='line'>419</span>  * @return the certificate request
<span class='line'>420</span>  * @type CVC
<span class='line'>421</span>  */</span><span class="WHIT">
<span class='line'>422</span> </span><span class="NAME">CVCCA.prototype.generateInitialRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateInitialRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> 
<span class='line'>425</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.generateRequest</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>427</span> 
<span class='line'>428</span> 
<span class='line'>429</span> 
<span class='line'>430</span> </span><span class="COMM">/**
<span class='line'>431</span>  * Generate a signed initial certificate request
<span class='line'>432</span>  *
<span class='line'>433</span>  * @param {PublicKeyReference} car the CA at which this request is addressed
<span class='line'>434</span>  * @return the certificate request
<span class='line'>435</span>  * @type CVC
<span class='line'>436</span>  */</span><span class="WHIT">
<span class='line'>437</span> </span><span class="NAME">CVCCA.prototype.generateSignedInitialRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateSignedInitialRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> 
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.generateRequest</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>442</span> 
<span class='line'>443</span> 
<span class='line'>444</span> 
<span class='line'>445</span> </span><span class="COMM">/**
<span class='line'>446</span>  * Generate certificate for certificate request
<span class='line'>447</span>  *
<span class='line'>448</span>  * &lt;p>Certificate contents is defined through the policy object:&lt;/p>
<span class='line'>449</span>  * &lt;pre>
<span class='line'>450</span>  *  	var policy = { certificateValidityDays: 2,
<span class='line'>451</span>  * 				   chatRoleOID: new ByteString("id-IS", OID),
<span class='line'>452</span>  * 				   chatRights: new ByteString("E3", HEX),
<span class='line'>453</span>  * 				   includeDomainParameter: true,
<span class='line'>454</span>  * 				   extensions: []
<span class='line'>455</span>  * 				 };
<span class='line'>456</span>  * &lt;/pre>
<span class='line'>457</span>  *
<span class='line'>458</span>  * @param {CVC} req the certificate request
<span class='line'>459</span>  * @param {Object} policy the object with policy settings
<span class='line'>460</span>  * @returns the certificate
<span class='line'>461</span>  * @type CVC
<span class='line'>462</span>  */</span><span class="WHIT">
<span class='line'>463</span> </span><span class="NAME">CVCCA.prototype.generateCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateCertificate('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"'"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> 
<span class='line'>466</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">maxExpDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> 
<span class='line'>469</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">				</span><span class="COMM">// No CA certificate found</span><span class="WHIT">
<span class='line'>470</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isRootCA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT">			</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Generate a self-signed root certificate</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>473</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVCCA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No current certificate found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>474</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">policy.publicKeyOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signingTAAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">policy.publicKeyOID</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signingTAAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cacvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signingTAAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cacvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">policy.shellModelForExpirationDate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT">			</span><span class="NAME">maxExpDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cacvc.getCXD</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>487</span> 
<span class='line'>488</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">generator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator</span><span class="PUNC">(</span><span class="NAME">this.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="NAME">generator.setCAR</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT">	</span><span class="NAME">generator.setCHR</span><span class="PUNC">(</span><span class="NAME">req.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">effDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">policy.ced</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">		</span><span class="NAME">effDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">policy.ced</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>495</span> </span><span class="WHIT">	</span><span class="NAME">effDate.setHours</span><span class="PUNC">(</span><span class="NUMB">12</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">expDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">policy.certificateValidityDays</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">1000</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">60</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">60</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">effDate.getTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> </span><span class="WHIT">	</span><span class="NAME">expDate.setHours</span><span class="PUNC">(</span><span class="NUMB">12</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>498</span> 
<span class='line'>499</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">maxExpDate</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>500</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">effDate.getTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">maxExpDate.getTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVCCA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"CA certificate is expired"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">		</span><span class="COMM">// Expiration date of issued certificate must not exceed expiration date of issuing CA</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">expDate.getTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">maxExpDate.getTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">			</span><span class="NAME">expDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">maxExpDate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>507</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>508</span> 
<span class='line'>509</span> </span><span class="WHIT">	</span><span class="NAME">generator.setEffectiveDate</span><span class="PUNC">(</span><span class="NAME">effDate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT">	</span><span class="NAME">generator.setExpiryDate</span><span class="PUNC">(</span><span class="NAME">expDate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span> </span><span class="WHIT">	</span><span class="NAME">generator.setChatOID</span><span class="PUNC">(</span><span class="NAME">policy.chatRoleOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> </span><span class="WHIT">	</span><span class="NAME">generator.setChatAuthorizationLevel</span><span class="PUNC">(</span><span class="NAME">policy.chatRights</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> </span><span class="WHIT">	</span><span class="NAME">generator.setPublicKey</span><span class="PUNC">(</span><span class="NAME">req.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT">	</span><span class="NAME">generator.setProfileIdentifier</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">policy.publicKeyOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT">		</span><span class="NAME">generator.setTAAlgorithmIdentifier</span><span class="PUNC">(</span><span class="NAME">policy.publicKeyOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>518</span> </span><span class="WHIT">		</span><span class="NAME">generator.setTAAlgorithmIdentifier</span><span class="PUNC">(</span><span class="NAME">req.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>520</span> 
<span class='line'>521</span> </span><span class="WHIT">	</span><span class="NAME">generator.setIncludeDomainParameters</span><span class="PUNC">(</span><span class="NAME">policy.includeDomainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="NAME">generator.setExtensions</span><span class="PUNC">(</span><span class="NAME">policy.extensions</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>523</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">generator.generateCVCertificate</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signingTAAlgorithmIdentifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>525</span> 
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>528</span> 
<span class='line'>529</span> 
<span class='line'>530</span> 
<span class='line'>531</span> </span><span class="COMM">/**
<span class='line'>532</span>  * Store issued certificate
<span class='line'>533</span>  *
<span class='line'>534</span>  * @param {CVC} cert a newly issued certificate
<span class='line'>535</span>  */</span><span class="WHIT">
<span class='line'>536</span> </span><span class="NAME">CVCCA.prototype.storeCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>537</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeCertificate('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"')"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>538</span> 
<span class='line'>539</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chrHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">	</span><span class="NAME">this.certstore.storeCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chrHolder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>542</span> 
<span class='line'>543</span> 
<span class='line'>544</span> 
<span class='line'>545</span> </span><span class="COMM">/**
<span class='line'>546</span>  * Remove previous key
<span class='line'>547</span>  *
<span class='line'>548</span>  * @param {PublicKeyReference} previous the previously used CHR
<span class='line'>549</span>  */</span><span class="WHIT">
<span class='line'>550</span> </span><span class="NAME">CVCCA.prototype.removePreviouslyUsedKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">previous</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>551</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"removePreviouslyUsedKey('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">previous</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"')"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>552</span> 
<span class='line'>553</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">previous.equals</span><span class="PUNC">(</span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>554</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"CHR "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">previous</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is still the active key. Not deleting it"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>557</span> 
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.eaccpf</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">eaccp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.eaccpf.getEACCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.eaccpid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT">		</span><span class="NAME">eaccp.deletePrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">previous</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT">		</span><span class="NAME">this.certstore.deletePrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">previous</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>564</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>565</span> 
<span class='line'>566</span> 
<span class='line'>567</span> 
<span class='line'>568</span> </span><span class="COMM">/**
<span class='line'>569</span>  * Import a certificate into the certificate store and make it the current certificate
<span class='line'>570</span>  *
<span class='line'>571</span>  * @param {CVC} cert the certificate
<span class='line'>572</span>  */</span><span class="WHIT">
<span class='line'>573</span> </span><span class="NAME">CVCCA.prototype.importCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>574</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"importCertificate('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"')"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>575</span> 
<span class='line'>576</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPrivateKey</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVCCA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid certificate, no matching private key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>581</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>582</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" already existing"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>584</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>585</span> 
<span class='line'>586</span> </span><span class="WHIT">	</span><span class="COMM">// Save currentchr</span><span class="WHIT">
<span class='line'>587</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>588</span> 
<span class='line'>589</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isRootCA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.isOperational</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT">		</span><span class="NAME">this.certstore.storeCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>592</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.certstore.insertCertificate</span><span class="PUNC">(</span><span class="NAME">this.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>593</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CVCCA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not validate certificate"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>594</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>595</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>596</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.removePreviousKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>597</span> </span><span class="WHIT">		</span><span class="NAME">this.removePreviouslyUsedKey</span><span class="PUNC">(</span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>598</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>599</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>600</span> 
<span class='line'>601</span> 
<span class='line'>602</span> 
<span class='line'>603</span> </span><span class="COMM">/**
<span class='line'>604</span>  * Import a list of certificates into the certificate store
<span class='line'>605</span>  *
<span class='line'>606</span>  * @param {CVC[]} certs the list of certificates
<span class='line'>607</span>  */</span><span class="WHIT">
<span class='line'>608</span> </span><span class="NAME">CVCCA.prototype.importCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">certs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>609</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"importCertificates('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">certs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"')"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>610</span> 
<span class='line'>611</span> </span><span class="WHIT">	</span><span class="COMM">// Save currentchr</span><span class="WHIT">
<span class='line'>612</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>613</span> 
<span class='line'>614</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.insertCertificates</span><span class="PUNC">(</span><span class="NAME">this.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>615</span> 
<span class='line'>616</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.removePreviousKey</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>617</span> </span><span class="WHIT">		</span><span class="NAME">this.removePreviouslyUsedKey</span><span class="PUNC">(</span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>618</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>619</span> 
<span class='line'>620</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>621</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>622</span> 
<span class='line'>623</span> 
<span class='line'>624</span> 
<span class='line'>625</span> </span><span class="COMM">/**
<span class='line'>626</span>  * Returns a list of relevant certificates.
<span class='line'>627</span>  *
<span class='line'>628</span>  * &lt;p>If the CA is the root CA, then all self-signed and link certificates are returned.&lt;/p>
<span class='line'>629</span>  * &lt;p>If the CA is a DVCA, then all certificates of the associated root and the current
<span class='line'>630</span>  *    DVCA certificate is returned.&lt;/p>
<span class='line'>631</span>  *
<span class='line'>632</span>  * @param {PublicKeyReference} fromCAR the optional starting point for the list if not a root CA
<span class='line'>633</span>  */</span><span class="WHIT">
<span class='line'>634</span> </span><span class="NAME">CVCCA.prototype.getCertificateList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fromCAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>635</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCertificateList("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fromCAR</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>636</span> 
<span class='line'>637</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>638</span> 
<span class='line'>639</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isRootCA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>640</span> </span><span class="WHIT">		</span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.listCertificates</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>641</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>642</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>643</span> 
<span class='line'>644</span> </span><span class="WHIT">		</span><span class="KEYW">while</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>645</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>646</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>647</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>649</span> </span><span class="WHIT">					</span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>650</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT">					</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>652</span> </span><span class="WHIT">					</span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>653</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>655</span> </span><span class="WHIT">				</span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificateChain</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fromCAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>656</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>657</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>658</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>659</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>660</span> 
<span class='line'>661</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>662</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>663</span> 
<span class='line'>664</span> 
<span class='line'>665</span> 
<span class='line'>666</span> </span><span class="COMM">/**
<span class='line'>667</span>  * Return certificate issued by this CA
<span class='line'>668</span>  *
<span class='line'>669</span>  * @param {PublicKeyReference} chr the certificate holder reference
<span class='line'>670</span>  * @returns the certificate or null if not found
<span class='line'>671</span>  * @type CVC
<span class='line'>672</span>  */</span><span class="WHIT">
<span class='line'>673</span> </span><span class="NAME">CVCCA.prototype.getIssuedCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>674</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getIssuedCertificate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>675</span> 
<span class='line'>676</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>677</span> 
<span class='line'>678</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>679</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>680</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"No certificate found for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>681</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>682</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>683</span> 
<span class='line'>684</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>685</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>686</span> 
<span class='line'>687</span> 
<span class='line'>688</span> 
<span class='line'>689</span> </span><span class="COMM">/**
<span class='line'>690</span>  * Return authentic public key with domain parameter for a given CHR subordinate to the CA
<span class='line'>691</span>  *
<span class='line'>692</span>  * @param {PublicKeyReference} chr the certificate holder reference
<span class='line'>693</span>  * @returns the public key or null
<span class='line'>694</span>  * @type Key
<span class='line'>695</span>  */</span><span class="WHIT">
<span class='line'>696</span> </span><span class="NAME">CVCCA.prototype.getAuthenticPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>697</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getAuthenticPublicKey("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>698</span> 
<span class='line'>699</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getIssuedCertificate</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>700</span> 
<span class='line'>701</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>702</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>703</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>704</span> 
<span class='line'>705</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.isRootCA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>706</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getDomainParameter</span><span class="PUNC">(</span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>707</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>708</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dvcacvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getCertificate</span><span class="PUNC">(</span><span class="NAME">this.path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>709</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">dvcacvc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>710</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"No certificate found for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>711</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>712</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>713</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.certstore.getDomainParameter</span><span class="PUNC">(</span><span class="NAME">dvcacvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>714</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>715</span> 
<span class='line'>716</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="PUNC">(</span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>717</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>718</span> 
<span class='line'>719</span> 
<span class='line'>720</span> 
<span class='line'>721</span> </span><span class="NAME">CVCCA.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">daofcvca</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">daofdvca</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">daofterm</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>722</span> 
<span class='line'>723</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>724</span> 
<span class='line'>725</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="PUNC">(</span><span class="NAME">daofcvca</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>726</span> </span><span class="WHIT">	</span><span class="NAME">ss.setContextMarker</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>727</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"/UTCVCA"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>728</span> 
<span class='line'>729</span> </span><span class="WHIT">	</span><span class="COMM">// Create a new request</span><span class="WHIT">
<span class='line'>730</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateRequest</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>731</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Request: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>732</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">req.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>733</span> 
<span class='line'>734</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">req.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>735</span> 
<span class='line'>736</span> </span><span class="WHIT">	</span><span class="COMM">// Create self-signed or link certificate based on request</span><span class="WHIT">
<span class='line'>737</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>738</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>739</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>740</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>741</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>742</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>743</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>744</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>745</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>746</span> 
<span class='line'>747</span> </span><span class="WHIT">	</span><span class="COMM">// Import certificate into store, making it the most current certificate</span><span class="WHIT">
<span class='line'>748</span> </span><span class="WHIT">	</span><span class="NAME">cvca.importCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>749</span> 
<span class='line'>750</span> </span><span class="WHIT">	</span><span class="COMM">// Generate additional self-signed root certificate</span><span class="WHIT">
<span class='line'>751</span> </span><span class="WHIT">	</span><span class="COMM">// This must be done after the link certificate has been imported</span><span class="WHIT">
<span class='line'>752</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>753</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>754</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>755</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>756</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>757</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>758</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>759</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>760</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>761</span> 
<span class='line'>762</span> </span><span class="WHIT">	</span><span class="COMM">// Import certificate into store, making it the most current certificate</span><span class="WHIT">
<span class='line'>763</span> </span><span class="WHIT">	</span><span class="NAME">cvca.importCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>764</span> 
<span class='line'>765</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="PUNC">(</span><span class="NAME">daofdvca</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>766</span> </span><span class="WHIT">	</span><span class="NAME">ss.setContextMarker</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>767</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dvca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"/UTCVCA/UTDVCA"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>768</span> 
<span class='line'>769</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.getCertificateList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>770</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dvca.importCertificates</span><span class="PUNC">(</span><span class="NAME">certlist</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>771</span> 
<span class='line'>772</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">list.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>773</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Warning: Could not import the following certificates"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>774</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>775</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>776</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>777</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>778</span> 
<span class='line'>779</span> </span><span class="WHIT">	</span><span class="COMM">// Create a new request</span><span class="WHIT">
<span class='line'>780</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dvca.generateRequest</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>781</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Request: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>782</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">req.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>783</span> 
<span class='line'>784</span> </span><span class="WHIT">	</span><span class="COMM">// Sign this request with root CA</span><span class="WHIT">
<span class='line'>785</span> </span><span class="WHIT">	</span><span class="COMM">// This must be done after the link certificate has been imported</span><span class="WHIT">
<span class='line'>786</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>787</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>788</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"A3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>789</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>790</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>791</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>792</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>793</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>794</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>795</span> 
<span class='line'>796</span> </span><span class="WHIT">	</span><span class="NAME">cvca.storeCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>797</span> </span><span class="WHIT">	</span><span class="NAME">dvca.importCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>798</span> 
<span class='line'>799</span> 
<span class='line'>800</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="PUNC">(</span><span class="NAME">daofterm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>801</span> </span><span class="WHIT">	</span><span class="NAME">ss.setContextMarker</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">term</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"/UTCVCA/UTDVCA/UTTERM"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>803</span> 
<span class='line'>804</span> </span><span class="WHIT">	</span><span class="NAME">term.setRemovePreviousKey</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>805</span> 
<span class='line'>806</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dvca.getCertificateList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>807</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Certificate list: "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>808</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">certlist</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>809</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">term.importCertificates</span><span class="PUNC">(</span><span class="NAME">certlist</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>810</span> 
<span class='line'>811</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">list.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>812</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Warning: Could not import the following certificates"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>813</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>814</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>815</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>816</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>817</span> 
<span class='line'>818</span> </span><span class="WHIT">	</span><span class="COMM">// Create a new request</span><span class="WHIT">
<span class='line'>819</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">term.generateRequest</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>820</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Request: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>821</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">req.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>822</span> 
<span class='line'>823</span> </span><span class="WHIT">	</span><span class="COMM">// Sign this request with DVCA</span><span class="WHIT">
<span class='line'>824</span> </span><span class="WHIT">	</span><span class="COMM">// This must be done after the link certificate has been imported</span><span class="WHIT">
<span class='line'>825</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>826</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>827</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"23"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>828</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>829</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>830</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>831</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>832</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>833</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>834</span> 
<span class='line'>835</span> </span><span class="WHIT">	</span><span class="NAME">dvca.storeCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>836</span> </span><span class="WHIT">	</span><span class="NAME">term.importCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>837</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>838</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Support for a card verifiable certificates store according to EAC 1.1/2.0 using Data Access Objects
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/Certificate'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Certificate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/Holder'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Holder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKCS8</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pkcs/PKCS8'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKCS8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> 
<span class='line'> 36</span> </span><span class="COMM">/**
<span class='line'> 37</span>  * Create an object to access a certificate store.
<span class='line'> 38</span>  *
<span class='line'> 39</span>  * @class Class that abstracts a certificate and key store for a EAC PKI.
<span class='line'> 40</span>  *
<span class='line'> 41</span>  * @constructor
<span class='line'> 42</span>  * @param {DAOFactory} DAOFactory the factory that can create data access objects for persistent information
<span class='line'> 43</span>  */</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter doaf can't be empty"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">DAOFactoryFileSystem</span><span class="WHIT">    </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/DAOFactoryFileSystem'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">DAOFactoryFileSystem</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">		</span><span class="NAME">daof</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DAOFactoryFileSystem</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 51</span> 
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="NAME">this.daof</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">daof</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="NAME">this.certtype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Holder.CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 55</span> 
<span class='line'> 56</span> </span><span class="NAME">exports.CVCertificateStore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="COMM">/**
<span class='line'> 61</span>  * Check path
<span class='line'> 62</span>  *
<span class='line'> 63</span>  * This method validates the path for semantic errors and should be called for input
<span class='line'> 64</span>  * validation before using the path in the certificate store API.
<span class='line'> 65</span>  *
<span class='line'> 66</span>  * @param {String} path the path to validate
<span class='line'> 67</span>  */</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="NAME">CVCertificateStore.checkPath</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">path.indexOf</span><span class="PUNC">(</span><span class="STRN">"/.."</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">path.indexOf</span><span class="PUNC">(</span><span class="STRN">"../"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">path.indexOf</span><span class="PUNC">(</span><span class="STRN">"\\.."</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">path.indexOf</span><span class="PUNC">(</span><span class="STRN">"..\\"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">path.indexOf</span><span class="PUNC">(</span><span class="STRN">"\0"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">path.indexOf</span><span class="PUNC">(</span><span class="STRN">"~"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Path \""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\" contains illegal characters"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pa</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">pa.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pa.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Path must not contain less than one or more that three elements"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pa</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Path must start with /"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">pa.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">pa</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pa</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">11</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Path element length must be between 3 and 11"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="COMM">/**
<span class='line'> 95</span>  * Strip the last element of the path, effectively defining the parent within the path
<span class='line'> 96</span>  *
<span class='line'> 97</span>  * @param {String} path the path to strip the last element from
<span class='line'> 98</span>  * @returns the parent path or null for the root
<span class='line'> 99</span>  * @type String
<span class='line'>100</span>  */</span><span class="WHIT">
<span class='line'>101</span> </span><span class="NAME">CVCertificateStore.parentPathOf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> 
<span class='line'>110</span> 
<span class='line'>111</span> </span><span class="COMM">/**
<span class='line'>112</span>  * Return the n-element of the path
<span class='line'>113</span>  *
<span class='line'>114</span>  * @param {String} path the path to return the last element from
<span class='line'>115</span>  * @returns the last path element or null for the root
<span class='line'>116</span>  * @type String
<span class='line'>117</span>  */</span><span class="WHIT">
<span class='line'>118</span> </span><span class="NAME">CVCertificateStore.nthElementOf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">pe.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">n</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> 
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="COMM">/**
<span class='line'>129</span>  * Set a context marker that goes into the certificate type
<span class='line'>130</span>  *
<span class='line'>131</span>  * The context marker allows to have different certificate stores with different
<span class='line'>132</span>  * namespaces in the same database. The default context marker is 0.
<span class='line'>133</span>  *
<span class='line'>134</span>  * The context marker is stored with the Holder table.
<span class='line'>135</span>  *
<span class='line'>136</span>  * @param {Number} contextMarker the marker
<span class='line'>137</span>  */</span><span class="WHIT">
<span class='line'>138</span> </span><span class="NAME">CVCertificateStore.prototype.setContextMarker</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">contextMarker</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="NAME">this.certtype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">contextMarker</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Holder.CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>141</span> 
<span class='line'>142</span> 
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="COMM">/**
<span class='line'>145</span>  * Return a suitable crypto object. This may be overwritten by derived classes
<span class='line'>146</span>  *
<span class='line'>147</span>  * @type Crypto
<span class='line'>148</span>  * @return the Crypto object
<span class='line'>149</span>  */</span><span class="WHIT">
<span class='line'>150</span> </span><span class="NAME">CVCertificateStore.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> 
<span class='line'>157</span> 
<span class='line'>158</span> 
<span class='line'>159</span> </span><span class="COMM">/**
<span class='line'>160</span>  * Check if holder exists for path
<span class='line'>161</span>  *
<span class='line'>162</span>  * @param {String} path
<span class='line'>163</span>  * @type Holder
<span class='line'>164</span>  * @return true if holder exists
<span class='line'>165</span>  * @private
<span class='line'>166</span>  */</span><span class="WHIT">
<span class='line'>167</span> </span><span class="NAME">CVCertificateStore.prototype.hasHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> 
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> 
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="COMM">/**
<span class='line'>177</span>  * List certificate holders for a given PKI element
<span class='line'>178</span>  *
<span class='line'>179</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>180</span>  * @returns a list of holder ids, possibly empty
<span class='line'>181</span>  * @type String[]
<span class='line'>182</span>  */</span><span class="WHIT">
<span class='line'>183</span> </span><span class="NAME">CVCertificateStore.prototype.listHolders</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"listHolders("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> 
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolderList</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> </span><span class="COMM">/**
<span class='line'>195</span>  * Get existing holder object for given path
<span class='line'>196</span>  *
<span class='line'>197</span>  * @param {String} path
<span class='line'>198</span>  * @param {Boolean} create create if holder doesn't exist
<span class='line'>199</span>  * @type Holder
<span class='line'>200</span>  * @return the holder object
<span class='line'>201</span>  * @private
<span class='line'>202</span>  */</span><span class="WHIT">
<span class='line'>203</span> </span><span class="NAME">CVCertificateStore.prototype.getHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">create</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> 
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">create</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate holder for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found, creating new."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">		</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>215</span> 
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>218</span> 
<span class='line'>219</span> 
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="COMM">/**
<span class='line'>222</span>  * Return the current CHR for which a valid certificate exists
<span class='line'>223</span>  *
<span class='line'>224</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>225</span>  * @returns the current CHR for which a certificate exists or null if none exists
<span class='line'>226</span>  * @type PublicKeyReference
<span class='line'>227</span>  */</span><span class="WHIT">
<span class='line'>228</span> </span><span class="NAME">CVCertificateStore.prototype.getCurrentCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCurrentCHR("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> 
<span class='line'>233</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> 
<span class='line'>235</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>239</span> 
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> 
<span class='line'>242</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCurrentCHR("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") : No current certificate"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>247</span> 
<span class='line'>248</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCurrentCHR("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>253</span> 
<span class='line'>254</span> 
<span class='line'>255</span> 
<span class='line'>256</span> </span><span class="COMM">/**
<span class='line'>257</span>  * Return the next CHR
<span class='line'>258</span>  *
<span class='line'>259</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>260</span>  * @param {String} countryseq the 2 digit country code to include in the sequence number (optional)
<span class='line'>261</span>  * @returns the next CHR based on the sequence counter maintained in the configuration file
<span class='line'>262</span>  * @type PublicKeyReference
<span class='line'>263</span>  */</span><span class="WHIT">
<span class='line'>264</span> </span><span class="NAME">CVCertificateStore.prototype.getNextCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getNextCHR("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> 
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> 
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found, creating new."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">		</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>275</span> 
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="NAME">holderdao.updateSignerNo</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">holder.signerNo</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> 
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getCHRForSequenceNumber</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">holder.signerNo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>280</span> 
<span class='line'>281</span> 
<span class='line'>282</span> 
<span class='line'>283</span> </span><span class="COMM">/**
<span class='line'>284</span>  * Set the new signer number, if it is larger than the current
<span class='line'>285</span>  *
<span class='line'>286</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>287</span>  * @param {Number} signerNo the new signer number
<span class='line'>288</span>  */</span><span class="WHIT">
<span class='line'>289</span> </span><span class="NAME">CVCertificateStore.prototype.setSignerNo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signerNo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"setSignerNo("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signerNo</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> 
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> 
<span class='line'>294</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> 
<span class='line'>296</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found, creating new."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">		</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>300</span> 
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signerNo</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">holder.signerNo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">		</span><span class="NAME">holderdao.updateSignerNo</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signerNo</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>304</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>305</span> 
<span class='line'>306</span> 
<span class='line'>307</span> 
<span class='line'>308</span> </span><span class="COMM">/**
<span class='line'>309</span>  * Generate key pair
<span class='line'>310</span>  *
<span class='line'>311</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>312</span>  * @param {PublicKeyReference} chr the public key reference for this key pair
<span class='line'>313</span>  * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
<span class='line'>314</span>  * @param {Key} prk the private key template
<span class='line'>315</span>  * @param {Key} puk the public key template
<span class='line'>316</span>  */</span><span class="WHIT">
<span class='line'>317</span> </span><span class="NAME">CVCertificateStore.prototype.generateKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateKeyPair("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> 
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>321</span> 
<span class='line'>322</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> 
<span class='line'>324</span> </span><span class="WHIT">	</span><span class="COMM">// Generate key pair</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> 
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.newSigner</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p8</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="NAME">signerDAO.updateSignerKey</span><span class="PUNC">(</span><span class="NAME">signer</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>333</span> 
<span class='line'>334</span> 
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="COMM">/**
<span class='line'>337</span>  * Get a private key in the certificate store
<span class='line'>338</span>  *
<span class='line'>339</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>340</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>341</span>  * @returns the private key or null if not found
<span class='line'>342</span>  * @type Key
<span class='line'>343</span>  */</span><span class="WHIT">
<span class='line'>344</span> </span><span class="NAME">CVCertificateStore.prototype.getPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getPrivateKey("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> 
<span class='line'>347</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> 
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> 
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>355</span> 
<span class='line'>356</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>358</span> 
<span class='line'>359</span> 
<span class='line'>360</span> 
<span class='line'>361</span> </span><span class="COMM">/**
<span class='line'>362</span>  * Remove private key
<span class='line'>363</span>  *
<span class='line'>364</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>365</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>366</span>  * @returns true is deleted
<span class='line'>367</span>  * @type boolean
<span class='line'>368</span>  */</span><span class="WHIT">
<span class='line'>369</span> </span><span class="NAME">CVCertificateStore.prototype.deletePrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"deleteRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> 
<span class='line'>372</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> 
<span class='line'>374</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByName</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> 
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>380</span> 
<span class='line'>381</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signerDAO.deleteSigner</span><span class="PUNC">(</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> 
<span class='line'>385</span> 
<span class='line'>386</span> </span><span class="COMM">/**
<span class='line'>387</span>  * Create Signer
<span class='line'>388</span>  *
<span class='line'>389</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>390</span>  * @param {PublicKeyReference} chr the public key reference for this key pair
<span class='line'>391</span>  * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
<span class='line'>392</span>  * @param {Key} prk the private key template
<span class='line'>393</span>  * @param {Key} puk the public key template
<span class='line'>394</span>  */</span><span class="WHIT">
<span class='line'>395</span> </span><span class="NAME">CVCertificateStore.prototype.newSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"newSigner("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> 
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> 
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.newSigner</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> 
<span class='line'>405</span> 
<span class='line'>406</span> </span><span class="COMM">/**
<span class='line'>407</span>  * Get Signer
<span class='line'>408</span>  *
<span class='line'>409</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>410</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>411</span>  * @returns the private key blob
<span class='line'>412</span>  * @type ByteString
<span class='line'>413</span>  */</span><span class="WHIT">
<span class='line'>414</span> </span><span class="NAME">CVCertificateStore.prototype.getSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getSigner("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> 
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.hasHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>420</span> 
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span> 
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> 
<span class='line'>426</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>429</span> 
<span class='line'>430</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signer.keyblob</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">blob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">		</span><span class="NAME">blob</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>434</span> 
<span class='line'>435</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>437</span> 
<span class='line'>438</span> 
<span class='line'>439</span> 
<span class='line'>440</span> </span><span class="COMM">/**
<span class='line'>441</span>  * Remove Signer
<span class='line'>442</span>  *
<span class='line'>443</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>444</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>445</span>  * @returns true is deleted
<span class='line'>446</span>  * @type boolean
<span class='line'>447</span>  */</span><span class="WHIT">
<span class='line'>448</span> </span><span class="NAME">CVCertificateStore.prototype.deleteSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"deleteSigner("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> 
<span class='line'>451</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span> 
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByName</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> 
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>459</span> 
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signerDAO.deleteSigner</span><span class="PUNC">(</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>462</span> 
<span class='line'>463</span> 
<span class='line'>464</span> 
<span class='line'>465</span> </span><span class="COMM">/**
<span class='line'>466</span>  * Store a certificate request in the certificate store
<span class='line'>467</span>  *
<span class='line'>468</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>469</span>  * @param {CVC} req the request
<span class='line'>470</span>  */</span><span class="WHIT">
<span class='line'>471</span> </span><span class="NAME">CVCertificateStore.prototype.storeRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>473</span> 
<span class='line'>474</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>475</span> 
<span class='line'>476</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> 
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> </span><span class="WHIT">	</span><span class="NAME">requestDAO.newRequest</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>480</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>481</span> 
<span class='line'>482</span> 
<span class='line'>483</span> 
<span class='line'>484</span> </span><span class="COMM">/**
<span class='line'>485</span>  * Return request for given CHR
<span class='line'>486</span>  *
<span class='line'>487</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>488</span>  * @param {PublicKeyReference} chr the public key reference for the certificate
<span class='line'>489</span>  * @type CVC
<span class='line'>490</span>  * @return the request or null
<span class='line'>491</span>  */</span><span class="WHIT">
<span class='line'>492</span> </span><span class="NAME">CVCertificateStore.prototype.getRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span> 
<span class='line'>495</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>496</span> 
<span class='line'>497</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">requestDAO.getRequestByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>499</span> 
<span class='line'>500</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">request</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>503</span> 
<span class='line'>504</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">request.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>507</span> 
<span class='line'>508</span> 
<span class='line'>509</span> 
<span class='line'>510</span> </span><span class="COMM">/**
<span class='line'>511</span>  * Remove request
<span class='line'>512</span>  *
<span class='line'>513</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>514</span>  * @param {PublicKeyReference} chr the public key reference for this request
<span class='line'>515</span>  * @returns true is deleted
<span class='line'>516</span>  * @type boolean
<span class='line'>517</span>  */</span><span class="WHIT">
<span class='line'>518</span> </span><span class="NAME">CVCertificateStore.prototype.deleteRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"deleteRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> 
<span class='line'>521</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> 
<span class='line'>523</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">requestDAO.getRequestByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>525</span> 
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">request</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>527</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>528</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>529</span> 
<span class='line'>530</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">requestDAO.deleteRequest</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>531</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>532</span> 
<span class='line'>533</span> 
<span class='line'>534</span> 
<span class='line'>535</span> </span><span class="COMM">/**
<span class='line'>536</span>  * Store a certificate in the certificate store
<span class='line'>537</span>  *
<span class='line'>538</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>539</span>  * @param {CVC} cert the certificate
<span class='line'>540</span>  * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
<span class='line'>541</span>  * @param {Boolean} forceUpdate true if certificate should be updated even if one already exists
<span class='line'>542</span>  */</span><span class="WHIT">
<span class='line'>543</span> </span><span class="NAME">CVCertificateStore.prototype.storeCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>544</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeCertificate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">",'"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"',"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> 
<span class='line'>546</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>547</span> 
<span class='line'>548</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>549</span> 
<span class='line'>550</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>551</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found, creating new."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>552</span> </span><span class="WHIT">		</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>553</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>554</span> 
<span class='line'>555</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> 
<span class='line'>557</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Certificate.UP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>560</span> 
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car.equals</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT">		</span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Certificate.SHORT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>564</span> 
<span class='line'>565</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCertificateBySerial</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> 
<span class='line'>567</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>568</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ecvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>569</span> 
<span class='line'>570</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeCertificate() : We already have a certificate for that serial number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Existing: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ecvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"New     : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Both are "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"identical"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"different"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> 
<span class='line'>575</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ecvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">ecvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Certificate.UP</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"This is an additional link certificate for an existing root certificate"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>578</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>581</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>582</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>583</span> 
<span class='line'>584</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">template</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>585</span> </span><span class="WHIT">		</span><span class="NAME">keyId</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>586</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>587</span> 
<span class='line'>588</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.newCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>589</span> 
<span class='line'>590</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">makeCurrent</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT">		</span><span class="NAME">holderdao.updateCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>592</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>593</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>594</span> 
<span class='line'>595</span> 
<span class='line'>596</span> 
<span class='line'>597</span> </span><span class="COMM">/**
<span class='line'>598</span>  * Return certificate for a given CHR in binary format
<span class='line'>599</span>  *
<span class='line'>600</span>  * &lt;p>This method returns a self-signed root certificate if the selfsigned
<span class='line'>601</span>  *    parameter is set. If not set or set to false, then matching link certificate,
<span class='line'>602</span>  *    if any, is returned rather than the self-signed certificate.&lt;/p>
<span class='line'>603</span>  *
<span class='line'>604</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>605</span>  * @param {PublicKeyReference} chr the public key reference for the certificate
<span class='line'>606</span>  * @param {boolean} selfsigned return the self-signed root certificate rather than a link certificate
<span class='line'>607</span>  * @returns the certificate or null if not found
<span class='line'>608</span>  * @type ByteString
<span class='line'>609</span>  */</span><span class="WHIT">
<span class='line'>610</span> </span><span class="NAME">CVCertificateStore.prototype.getCertificateBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>611</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCertificateBinary("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>612</span> 
<span class='line'>613</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>614</span> 
<span class='line'>615</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>616</span> 
<span class='line'>617</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>618</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder at "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>619</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>620</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>621</span> 
<span class='line'>622</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificateDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>623</span> 
<span class='line'>624</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certificateDAO.getCertificateBySerial</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">Certificate.SHORT</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Certificate.UP</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>625</span> 
<span class='line'>626</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>627</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>630</span> 
<span class='line'>631</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCertificateBinary:"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">certificate.bytes.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>632</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certificate.bytes</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>633</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>634</span> 
<span class='line'>635</span> 
<span class='line'>636</span> 
<span class='line'>637</span> </span><span class="COMM">/**
<span class='line'>638</span>  * Return certificate for a given CHR
<span class='line'>639</span>  *
<span class='line'>640</span>  * &lt;p>This method returns a self-signed root certificate if the selfsigned
<span class='line'>641</span>  *    parameter is set. If not set or set to false, then matching link certificate,
<span class='line'>642</span>  *    if any, is returned rather than the self-signed certificate.&lt;/p>
<span class='line'>643</span>  *
<span class='line'>644</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>645</span>  * @param {PublicKeyReference} chr the public key reference for the certificate
<span class='line'>646</span>  * @param {boolean} selfsigned return the self-signed root certificate rather than a link certificate
<span class='line'>647</span>  * @returns the certificate or null if not found
<span class='line'>648</span>  * @type CVC
<span class='line'>649</span>  */</span><span class="WHIT">
<span class='line'>650</span> </span><span class="NAME">CVCertificateStore.prototype.getCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificateBinary</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>652</span> 
<span class='line'>653</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>655</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>656</span> 
<span class='line'>657</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>658</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>659</span> </span><span class="WHIT">		</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>660</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>661</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>662</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>664</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>665</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>666</span> 
<span class='line'>667</span> 
<span class='line'>668</span> 
<span class='line'>669</span> </span><span class="COMM">/**
<span class='line'>670</span>  * Try locating a certificate with the given CHR
<span class='line'>671</span>  *
<span class='line'>672</span>  * This method tries to find a specific certificate in the store, irrespectively of the holder.
<span class='line'>673</span>  *
<span class='line'>674</span>  * @param {PublicKeyReference} chr the public key reference for the certificate
<span class='line'>675</span>  * @returns the certificate or null if none found or more than one found
<span class='line'>676</span>  * @type CVC
<span class='line'>677</span>  */</span><span class="WHIT">
<span class='line'>678</span> </span><span class="NAME">CVCertificateStore.prototype.locateCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>679</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"locateCertificate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>680</span> 
<span class='line'>681</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificateDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>682</span> 
<span class='line'>683</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">certificateDAO.getCertificateBySerialAndType</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>684</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>685</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>686</span> 
<span class='line'>687</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certificateDAO.getCertificateBySerialAndType</span><span class="PUNC">(</span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>688</span> 
<span class='line'>689</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>690</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found or not unique"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>691</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>692</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>693</span> 
<span class='line'>694</span> </span><span class="WHIT">	</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>695</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>696</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>697</span> 
<span class='line'>698</span> 
<span class='line'>699</span> 
<span class='line'>700</span> </span><span class="COMM">/**
<span class='line'>701</span>  * Remove certificate
<span class='line'>702</span>  *
<span class='line'>703</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>704</span>  * @param {PublicKeyReference} chr the public key reference for this certificate
<span class='line'>705</span>  * @param {boolean} selfsigned delete the self-signed root certificate rather than a link certificate
<span class='line'>706</span>  * @returns true is deleted
<span class='line'>707</span>  * @type boolean
<span class='line'>708</span>  */</span><span class="WHIT">
<span class='line'>709</span> </span><span class="NAME">CVCertificateStore.prototype.deleteCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>710</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"deleteCertificate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>711</span> 
<span class='line'>712</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>713</span> 
<span class='line'>714</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>715</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>716</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>717</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>718</span> 
<span class='line'>719</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificateDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>720</span> 
<span class='line'>721</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certificateDAO.getCertificateBySerial</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">selfsigned</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">Certificate.SHORT</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">Certificate.UP</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>722</span> 
<span class='line'>723</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>724</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>725</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>726</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certificateDAO.deleteCertificate</span><span class="PUNC">(</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>727</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>728</span> 
<span class='line'>729</span> 
<span class='line'>730</span> 
<span class='line'>731</span> </span><span class="COMM">/**
<span class='line'>732</span>  * Return a chain of certificates resembling a path from root to end entity.
<span class='line'>733</span>  *
<span class='line'>734</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>735</span>  * @param {PublicKeyReference} tochr the public key reference for the certificate at the end of the chain
<span class='line'>736</span>  * @param {PublicKeyReference} fromcar the public key reference for the certificate to start with or root if undefined
<span class='line'>737</span>  * @returns the list of certificates starting with a self signed root certificate (fromcar undefined) a certificate
<span class='line'>738</span>  *          issued by fromcar up to an including the certificate referenced by tochr. Return null if fromcar is not found.
<span class='line'>739</span>  * @type CVC[]
<span class='line'>740</span>  */</span><span class="WHIT">
<span class='line'>741</span> </span><span class="NAME">CVCertificateStore.prototype.getCertificateChain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tochr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fromcar</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>742</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCertificateChain("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">tochr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fromcar</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>743</span> 
<span class='line'>744</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>745</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tochr</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>746</span> 
<span class='line'>747</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>748</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>749</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>750</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>751</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>752</span> </span><span class="WHIT">		</span><span class="NAME">chain.push</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>753</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">fromcar</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>754</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>755</span> </span><span class="WHIT">				</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>756</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>757</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>758</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">fromcar</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>759</span> </span><span class="WHIT">				</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>760</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>761</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>762</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// fromcar not found along the chain</span><span class="WHIT">
<span class='line'>763</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>764</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>765</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>766</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>767</span> </span><span class="WHIT">			</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>768</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>769</span> </span><span class="WHIT">		</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>770</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>771</span> 
<span class='line'>772</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">chain.reverse</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>773</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>774</span> 
<span class='line'>775</span> 
<span class='line'>776</span> 
<span class='line'>777</span> </span><span class="COMM">/**
<span class='line'>778</span>  * List certificates stored for given PKI element sorted by CHR
<span class='line'>779</span>  *
<span class='line'>780</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>781</span>  * @returns a list of certificates, possibly empty
<span class='line'>782</span>  * @type CVC[]
<span class='line'>783</span>  */</span><span class="WHIT">
<span class='line'>784</span> </span><span class="NAME">CVCertificateStore.prototype.listCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>785</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"listCertificates("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>786</span> 
<span class='line'>787</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>788</span> 
<span class='line'>789</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>790</span> 
<span class='line'>791</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificateDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>792</span> 
<span class='line'>793</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certificateDAO.enumerateCertificates</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>794</span> 
<span class='line'>795</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificates</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>796</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No certificates found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>797</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>798</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>799</span> 
<span class='line'>800</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">certificates.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>801</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">certificates</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT">		</span><span class="NAME">result.push</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>803</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>804</span> 
<span class='line'>805</span> </span><span class="WHIT">	</span><span class="NAME">result.sort</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">,</span><span class="NAME">b</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">b.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">b.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>806</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"listCertificates:"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">result.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>807</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>808</span> 
<span class='line'>809</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>810</span> 
<span class='line'>811</span> 
<span class='line'>812</span> 
<span class='line'>813</span> </span><span class="COMM">/**
<span class='line'>814</span>  * Returns the domain parameter for a certificate identified by its CHR
<span class='line'>815</span>  *
<span class='line'>816</span>  * &lt;p>This method traverses the certificate hierachie upwards and follows link certificates
<span class='line'>817</span>  *    until domain parameter are found.&lt;/p>
<span class='line'>818</span>  *
<span class='line'>819</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>820</span>  * @param {PublicKeyReference} chr the CHR of the certificate to start the search with
<span class='line'>821</span>  * @return the domain parameter
<span class='line'>822</span>  * @type Key
<span class='line'>823</span>  */</span><span class="WHIT">
<span class='line'>824</span> </span><span class="NAME">CVCertificateStore.prototype.getDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>825</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getDomainParameter("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>826</span> 
<span class='line'>827</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">	</span><span class="COMM">// ToDo remove after migration</span><span class="WHIT">
<span class='line'>828</span> </span><span class="WHIT">		</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>829</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>830</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>831</span> 
<span class='line'>832</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>833</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>834</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>835</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>836</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>837</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>838</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>839</span> </span><span class="WHIT">			</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>840</span> </span><span class="WHIT">			</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>841</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>842</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>843</span> 
<span class='line'>844</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>845</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>846</span> 
<span class='line'>847</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>848</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" in "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>849</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>850</span> 
<span class='line'>851</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>852</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">p.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>853</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>854</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>855</span> </span><span class="WHIT">		</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>856</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">chr.equals</span><span class="PUNC">(</span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>857</span> 
<span class='line'>858</span> </span><span class="WHIT">	</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate CVCA certificate with domain parameter"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>859</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>860</span> 
<span class='line'>861</span> 
<span class='line'>862</span> 
<span class='line'>863</span> </span><span class="COMM">/**
<span class='line'>864</span>  * Returns the default domain parameter for a given PKI
<span class='line'>865</span>  *
<span class='line'>866</span>  * @param {String} path the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
<span class='line'>867</span>  * @return the domain parameter
<span class='line'>868</span>  * @type Key
<span class='line'>869</span>  */</span><span class="WHIT">
<span class='line'>870</span> </span><span class="NAME">CVCertificateStore.prototype.getDefaultDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>871</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getDefaultDomainParameter("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>872</span> 
<span class='line'>873</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>874</span> </span><span class="WHIT">	</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentCHR</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>875</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>876</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate current CVCA certificate"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>877</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>878</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getDomainParameter</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>879</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>880</span> 
<span class='line'>881</span> 
<span class='line'>882</span> 
<span class='line'>883</span> </span><span class="COMM">/**
<span class='line'>884</span>  * Returns the default algorithm identifier OID from the most recent link certificate
<span class='line'>885</span>  *
<span class='line'>886</span>  * @param {String} path the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
<span class='line'>887</span>  * @return the algorithm identifier
<span class='line'>888</span>  * @type ByteString
<span class='line'>889</span>  */</span><span class="WHIT">
<span class='line'>890</span> </span><span class="NAME">CVCertificateStore.prototype.getDefaultPublicKeyOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>891</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getDefaultPublicKeyOID("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>892</span> 
<span class='line'>893</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>894</span> </span><span class="WHIT">	</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentCHR</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>895</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>896</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate current CVCA certificate"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>897</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>898</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificate</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>899</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>900</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate current CVCA certificate"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>901</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>902</span> 
<span class='line'>903</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>904</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>905</span> 
<span class='line'>906</span> 
<span class='line'>907</span> 
<span class='line'>908</span> </span><span class="COMM">/**
<span class='line'>909</span>  * Encode a three character alpha-numeric sequence number
<span class='line'>910</span>  *
<span class='line'>911</span>  * &lt;p>This function encodes values in the range 0 to 999 as numeric string with leading zeros.&lt;/p>
<span class='line'>912</span>  * &lt;p>Value in the range 1000 to 34695 (999 + 26 * 36 * 36) are encoded as alphanumeric string.&lt;/p>
<span class='line'>913</span>  * &lt;p>Value beyond 34696 are truncated&lt;/p>
<span class='line'>914</span>  *
<span class='line'>915</span>  * @param {Number} value integer sequence value
<span class='line'>916</span>  * @type String
<span class='line'>917</span>  * @return the 3 character string
<span class='line'>918</span>  * @private
<span class='line'>919</span>  */</span><span class="WHIT">
<span class='line'>920</span> </span><span class="NAME">CVCertificateStore.encodeBase36</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>921</span> </span><span class="WHIT">	</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">1000</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">26</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">36</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">36</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>922</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">seq</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>923</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>924</span> </span><span class="WHIT">		</span><span class="NAME">seq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>925</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>926</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">11960</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="NUMB">10</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">36</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">36</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1000</span><span class="WHIT">
<span class='line'>927</span> </span><span class="WHIT">		</span><span class="NAME">seq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>928</span> </span><span class="WHIT">		</span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>929</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">36</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>930</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>931</span> </span><span class="WHIT">				</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">55</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>932</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>933</span> </span><span class="WHIT">				</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">48</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>934</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>935</span> </span><span class="WHIT">			</span><span class="NAME">seq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">String.fromCharCode</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">seq</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>936</span> </span><span class="WHIT">			</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">36</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>937</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>938</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>939</span> </span><span class="WHIT">	</span><span class="NAME">seq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"000"</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">seq.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">seq</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>940</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">seq</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>941</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>942</span> 
<span class='line'>943</span> 
<span class='line'>944</span> 
<span class='line'>945</span> </span><span class="COMM">/**
<span class='line'>946</span>  * Create a CHR for the given path and sequence number
<span class='line'>947</span>  *
<span class='line'>948</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>949</span>  * @param {Number} the sequence number to be translated
<span class='line'>950</span>  * @param {String} countryseq the 2 digit country code to include in the sequence number (optional)
<span class='line'>951</span>  * @return the CHR
<span class='line'>952</span>  * @type PublicKeyReference
<span class='line'>953</span>  * @private
<span class='line'>954</span>  */</span><span class="WHIT">
<span class='line'>955</span> </span><span class="NAME">CVCertificateStore.prototype.getCHRForSequenceNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>956</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>957</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">pe.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>958</span> 
<span class='line'>959</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>960</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">countryseq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>961</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore.encodeBase36</span><span class="PUNC">(</span><span class="NAME">sequence</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>962</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>963</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sequence</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>964</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0000"</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">4</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">5</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>965</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>966</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>967</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>968</span> 
<span class='line'>969</span> 
<span class='line'>970</span> 
<span class='line'>971</span> </span><span class="COMM">/**
<span class='line'>972</span>  * Determine path for certificate issuer
<span class='line'>973</span>  *
<span class='line'>974</span>  * For CVCA and DVCA certificates we can determined the path from the CAR. For Terminal
<span class='line'>975</span>  * certificates we dont know the full path, as we don't know under which CVCA the DVCA operates
<span class='line'>976</span>  * that issued the Terminal certificate. So we use a two-step heuristic which first tries to locate
<span class='line'>977</span>  * the DVCA certificate based on the CAR and if that is not unique uses the cvcahint to determine the path
<span class='line'>978</span>  * of the issuer
<span class='line'>979</span>  */</span><span class="WHIT">
<span class='line'>980</span> </span><span class="NAME">CVCertificateStore.prototype.getIssuerPathFor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>981</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getIssuerPathFor('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"',"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>982</span> 
<span class='line'>983</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>984</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">level</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getLevel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>985</span> 
<span class='line'>986</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">level</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>987</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>988</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>989</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cacert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.locateCertificate</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>990</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cacert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>991</span> </span><span class="WHIT">			</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cacert.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>992</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getIssuerPathFor() using path based on located issuer certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>993</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>994</span> </span><span class="WHIT">			</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore.nthElementOf</span><span class="PUNC">(</span><span class="NAME">cvcahint</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>995</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getIssuerPathFor() using path based on hint "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>996</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>997</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>998</span> 
<span class='line'>999</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1000</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1001</span> 
<span class='line'>1002</span> 
<span class='line'>1003</span> 
<span class='line'>1004</span> </span><span class="COMM">/**
<span class='line'>1005</span>  * Validate a certificate against a certificate already stored in the certificate store
<span class='line'>1006</span>  *
<span class='line'>1007</span>  * &lt;p>If the certificate is a terminal certificate, then the first element of the path given
<span class='line'>1008</span>  *    in cvcahint is used to determine the correct CVCA.&lt;/p>
<span class='line'>1009</span>  *
<span class='line'>1010</span>  * Throws an exception if the certificate can not be validated
<span class='line'>1011</span>  *
<span class='line'>1012</span>  * @param {Crypto} crypto the crypto provider to be used for certificate verification
<span class='line'>1013</span>  * @param {CVC} cvc the certificate
<span class='line'>1014</span>  * @param {String} cvcahint the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
<span class='line'>1015</span>  * @returns object containing the path and domain parameter used for validating the certificate. Returns null if no issuer could be found
<span class='line'>1016</span>  * @type Object
<span class='line'>1017</span>  */</span><span class="WHIT">
<span class='line'>1018</span> </span><span class="NAME">CVCertificateStore.prototype.validateCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1019</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"validateCertificate('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"',"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1020</span> 
<span class='line'>1021</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1022</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">level</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getLevel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1023</span> 
<span class='line'>1024</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car.equals</span><span class="PUNC">(</span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// Self signed</span><span class="WHIT">
<span class='line'>1025</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">level</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1026</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Self-signed certificates only allowed for CVCA: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1027</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Self-signed certificates only allowed for CVCA: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1028</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1029</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cvc.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1030</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Self-signed certificate failed signature verification. "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1031</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Self-signed certificate failed signature verification. "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1032</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1033</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1034</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1035</span> 
<span class='line'>1036</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getIssuerPathFor</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1037</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cacert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1038</span> 
<span class='line'>1039</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cacert</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1040</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Can't find issuer "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1041</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1042</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1043</span> 
<span class='line'>1044</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cacert.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1045</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1046</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getDomainParameter</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1047</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1048</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1049</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1050</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cacert.getPublicKey</span><span class="PUNC">(</span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1051</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">result</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1052</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" failed signature verification with "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cacert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1053</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" failed signature verification with "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cacert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1054</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1055</span> 
<span class='line'>1056</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1057</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1058</span> 
<span class='line'>1059</span> 
<span class='line'>1060</span> 
<span class='line'>1061</span> </span><span class="COMM">/**
<span class='line'>1062</span>  * Insert a single certificates into the certificate store
<span class='line'>1063</span>  *
<span class='line'>1064</span>  * &lt;p>Before a certificate is imported, the signature is verified.&lt;/p>
<span class='line'>1065</span>  * &lt;p>If the certificate is a terminal certificate, then the first element of the path given
<span class='line'>1066</span>  *    in cvcahint is used to determine the correct CVCA.&lt;/p>
<span class='line'>1067</span>  *
<span class='line'>1068</span>  * @param {Crypto} crypto the crypto provider to be used for certificate verification
<span class='line'>1069</span>  * @param {CVC} cvc the certificate
<span class='line'>1070</span>  * @param {String} cvcahint the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
<span class='line'>1071</span>  * @param {Boolean} forceUpdate true if certificate should be updated even if one already exists
<span class='line'>1072</span>  * @returns true, if the certificate was inserted
<span class='line'>1073</span>  * @type boolean
<span class='line'>1074</span>  */</span><span class="WHIT">
<span class='line'>1075</span> </span><span class="NAME">CVCertificateStore.prototype.insertCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1076</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"insertCertificate('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"',"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1077</span> 
<span class='line'>1078</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1079</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getIssuerPathFor</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1080</span> 
<span class='line'>1081</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cacert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1082</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cacert</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1083</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Can't find issuer "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1084</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1085</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1086</span> 
<span class='line'>1087</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">cacert.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1088</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getDomainParameter</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1089</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1090</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1091</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1092</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cacert.getPublicKey</span><span class="PUNC">(</span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cacert.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1093</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">result</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1094</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" failed signature verification with "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cacert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1095</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1096</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1097</span> 
<span class='line'>1098</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1099</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chr.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1100</span> 
<span class='line'>1101</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">car.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">	</span><span class="COMM">// Link certificate</span><span class="WHIT">
<span class='line'>1102</span> </span><span class="WHIT">		</span><span class="NAME">this.storeCertificate</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1103</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">							</span><span class="COMM">// Subordinate certificate</span><span class="WHIT">
<span class='line'>1104</span> </span><span class="WHIT">		</span><span class="NAME">this.storeCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1106</span> 
<span class='line'>1107</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1108</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1109</span> 
<span class='line'>1110</span> 
<span class='line'>1111</span> 
<span class='line'>1112</span> </span><span class="COMM">/**
<span class='line'>1113</span>  * Insert certificates into certificate store
<span class='line'>1114</span>  *
<span class='line'>1115</span>  * &lt;p>The import into the internal data structure is done in three steps:&lt;/p>
<span class='line'>1116</span>  * &lt;ol>
<span class='line'>1117</span>  *  &lt;li>If allowed, all self-signed certificates are imported&lt;/li>
<span class='line'>1118</span>  *  &lt;li>All possible certificate chains are build&lt;/li>
<span class='line'>1119</span>  *  &lt;li>Certificate chains are processed starting with the topmost certificate in the hierachie&lt;/li>
<span class='line'>1120</span>  * &lt;/ol>
<span class='line'>1121</span>  * &lt;p>Certificates at the terminal level can only be imported, if the issuing
<span class='line'>1122</span>  *    DVCA certificate is contained in the list or a hint for the relevant CVCA is
<span class='line'>1123</span>  *    given in the first element of the path contained in parameter cvcahint.&lt;/p>
<span class='line'>1124</span>  * &lt;p>Before a certificate is imported, the signature is verified.&lt;/p>
<span class='line'>1125</span>  *
<span class='line'>1126</span>  * @param {Crypto} crypto the crypto provider to be used for certificate verification
<span class='line'>1127</span>  * @param {CVC[]} certlist the unordered list of certificates
<span class='line'>1128</span>  * @param {Boolean} insertSelfSigned true, if the import of root certificates is allowed
<span class='line'>1129</span>  * @param {String} cvcahint the PKI path (e.g. "/UTCVCA1/UTDVCA1/UTTERM"). Only the first path element is relevant
<span class='line'>1130</span>  * @param {Boolean} forceUpdate true if certificate should be updated even if one already exists
<span class='line'>1131</span>  * @returns the (ideally empty) list of unprocessed certificates. This does not contains certificates
<span class='line'>1132</span>  *          that fail signature verification.
<span class='line'>1133</span>  * @type CVC[]
<span class='line'>1134</span>  */</span><span class="WHIT">
<span class='line'>1135</span> </span><span class="NAME">CVCertificateStore.prototype.insertCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">insertSelfSigned</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1136</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"insertCertificates('"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"',"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">insertSelfSigned</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1137</span> 
<span class='line'>1138</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chrmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1139</span> 
<span class='line'>1140</span> </span><span class="WHIT">	</span><span class="COMM">// Iterate certificate list and store self-signed certificates, if allowed</span><span class="WHIT">
<span class='line'>1141</span> </span><span class="WHIT">	</span><span class="COMM">// Generate a map of certificate holder references</span><span class="WHIT">
<span class='line'>1142</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unprocessed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1143</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">certlist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1144</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1145</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1146</span> 
<span class='line'>1147</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// Self signed</span><span class="WHIT">
<span class='line'>1148</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1149</span> 
<span class='line'>1150</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1151</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1152</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">insertSelfSigned</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Store self-signed certificates</span><span class="WHIT">
<span class='line'>1153</span> </span><span class="WHIT">					</span><span class="NAME">this.storeCertificate</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1154</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1155</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1156</span> </span><span class="WHIT">				</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Self-signed certificate failed signature verification. "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1157</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1158</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1159</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">end</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">stored</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1160</span> </span><span class="WHIT">			</span><span class="NAME">unprocessed.push</span><span class="PUNC">(</span><span class="NAME">state</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1161</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">chrmap</span><span class="PUNC">[</span><span class="NAME">chr</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1162</span> </span><span class="WHIT">				</span><span class="NAME">chrmap</span><span class="PUNC">[</span><span class="NAME">chr</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1163</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1164</span> </span><span class="WHIT">				</span><span class="COMM">// Duplicate CHRs for terminals are allowed</span><span class="WHIT">
<span class='line'>1165</span> </span><span class="WHIT">				</span><span class="NAME">chrmap</span><span class="PUNC">[</span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1166</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1167</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1168</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1169</span> 
<span class='line'>1170</span> </span><span class="WHIT">	</span><span class="COMM">// Mark certificates that are surely CAs, because an issued certificate is contained in the list</span><span class="WHIT">
<span class='line'>1171</span> </span><span class="WHIT">	</span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">unprocessed</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1172</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">certlist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1173</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">cvc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1174</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chrmap</span><span class="PUNC">[</span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1175</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">state</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1176</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Mark as CA: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">state.cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1177</span> </span><span class="WHIT">			</span><span class="NAME">state.end</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1178</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1179</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1180</span> 
<span class='line'>1181</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unprocessed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1182</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">certlist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1183</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1184</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">state.end</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Find all certificates which are at the end of the chain</span><span class="WHIT">
<span class='line'>1185</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1186</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lastpathelement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state.cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1187</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">lastpathelement</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1188</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">singlecert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1189</span> </span><span class="WHIT">			</span><span class="KEYW">while</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Build a certificate chain and the path for the last certificate</span><span class="WHIT">
<span class='line'>1190</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pathelement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">state.cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1191</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pathelement</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">lastpathelement</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// CVCA Link Certificates don't add to the path</span><span class="WHIT">
<span class='line'>1192</span> </span><span class="WHIT">					</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathelement</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1193</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1194</span> </span><span class="WHIT">				</span><span class="NAME">lastpathelement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pathelement</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1195</span> 
<span class='line'>1196</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">state.stored</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">			</span><span class="COMM">// If not already stored, add to the list</span><span class="WHIT">
<span class='line'>1197</span> </span><span class="WHIT">					</span><span class="NAME">list.push</span><span class="PUNC">(</span><span class="NAME">state</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1198</span> </span><span class="WHIT">					</span><span class="NAME">state.stored</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1199</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1200</span> </span><span class="WHIT">				</span><span class="NAME">state</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chrmap</span><span class="PUNC">[</span><span class="NAME">state.cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1201</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">state</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1202</span> </span><span class="WHIT">					</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1203</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1204</span> </span><span class="WHIT">				</span><span class="NAME">singlecert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1205</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1206</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">singlecert</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1207</span> </span><span class="WHIT">				</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Single certificate might be a terminal certificate, using cvca hint "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1208</span> </span><span class="WHIT">				</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvcahint</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1209</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1210</span> </span><span class="WHIT">				</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Path is "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1211</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1212</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">	</span><span class="COMM">// Process chain in reverse order</span><span class="WHIT">
<span class='line'>1213</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">j</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">cvc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1214</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.insertCertificate</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceUpdate</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1215</span> </span><span class="WHIT">					</span><span class="NAME">unprocessed.push</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1216</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1217</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1218</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1219</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1220</span> 
<span class='line'>1221</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">unprocessed</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1222</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1223</span> </span><span class="COMM">// For backward compatibility</span><span class="WHIT">
<span class='line'>1224</span> </span><span class="NAME">CVCertificateStore.prototype.insertCertificates2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore.prototype.insertCertificates</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1225</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of the chip authentication protocol for both card and terminal
<span class='line'> 25</span>  * as defined for EAC 2.0
<span class='line'> 26</span>  */</span><span class="WHIT">
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> </span><span class="COMM">/**
<span class='line'> 31</span>  * Create a ChipAuthenticationInfo object
<span class='line'> 32</span>  *
<span class='line'> 33</span>  * @class &lt;p>This class encodes and decodes ChipAuthenticationInfo objects.&lt;/p>
<span class='line'> 34</span>  * &lt;p>The class implements the following ASN.1 syntax:&lt;/p>
<span class='line'> 35</span>  * &lt;pre>
<span class='line'> 36</span>  *	ChipAuthenticationInfo ::= SEQUENCE {
<span class='line'> 37</span>  *		protocol OBJECT IDENTIFIER(
<span class='line'> 38</span>  *			id-CA-DH-3DES-CBC-CBC |
<span class='line'> 39</span>  *			id-CA-DH-AES-CBC-CMAC-128 |
<span class='line'> 40</span>  *			id-CA-DH-AES-CBC-CMAC-192 |
<span class='line'> 41</span>  *			id-CA-DH-AES-CBC-CMAC-256 |
<span class='line'> 42</span>  *			id-CA-ECDH-3DES-CBC-CBC |
<span class='line'> 43</span>  *			id-CA-ECDH-AES-CBC-CMAC-128 |
<span class='line'> 44</span>  *			id-CA-ECDH-AES-CBC-CMAC-192 |
<span class='line'> 45</span>  *			id-CA-ECDH-AES-CBC-CMAC-256),
<span class='line'> 46</span>  *		version INTEGER, -- MUST be 1 or 2
<span class='line'> 47</span>  *		keyId INTEGER OPTIONAL
<span class='line'> 48</span>  * }
<span class='line'> 49</span>  * &lt;/pre>
<span class='line'> 50</span>  * @constructor
<span class='line'> 51</span>  * @param {ASN1} the optional tlv structure to initialize the object
<span class='line'> 52</span>  */</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationInfo</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">		</span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">		</span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> 
<span class='line'> 67</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">			</span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 72</span> 
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 75</span> 
<span class='line'> 76</span> </span><span class="NAME">exports.ChipAuthenticationInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> 
<span class='line'> 78</span> 
<span class='line'> 79</span> </span><span class="COMM">/**
<span class='line'> 80</span>  * Convert object to TLV structure
<span class='line'> 81</span>  *
<span class='line'> 82</span>  * @return the TLV structure
<span class='line'> 83</span>  * @type ASN1
<span class='line'> 84</span>  */</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="NAME">ChipAuthenticationInfo.prototype.toTLV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> 
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> 
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.version</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyId</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 99</span> 
<span class='line'>100</span> 
<span class='line'>101</span> 
<span class='line'>102</span> </span><span class="NAME">ChipAuthenticationInfo.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"ChipAuthenticationInfo(protocol="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", version="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", keyId="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>105</span> 
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> </span><span class="COMM">/**
<span class='line'>109</span>  * Create a ChipAuthenticationDomainParameterInfo object
<span class='line'>110</span>  *
<span class='line'>111</span>  * @class &lt;p>This class encodes and decodes ChipAuthenticationDomainParameterInfo objects.&lt;/p>
<span class='line'>112</span>  * &lt;p>The class implements the following ASN.1 syntax:&lt;/p>
<span class='line'>113</span>  * &lt;pre>
<span class='line'>114</span>  *	ChipAuthenticationDomainParameterInfo ::= SEQUENCE {
<span class='line'>115</span>  *		protocol OBJECT IDENTIFIER(id-CA-DH | id-CA-ECDH),
<span class='line'>116</span>  *		domainParameter AlgorithmIdentifier,
<span class='line'>117</span>  *		keyId INTEGER OPTIONAL
<span class='line'>118</span>  * }
<span class='line'>119</span>  * &lt;/pre>
<span class='line'>120</span>  * @constructor
<span class='line'>121</span>  * @param {ASN1} the optional tlv structure to initialize the object
<span class='line'>122</span>  */</span><span class="WHIT">
<span class='line'>123</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationDomainParameterInfo</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">		</span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">oid.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">				</span><span class="NAME">this.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curveoid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">curveoid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthenticationPublicKeyInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Standardized domain parameter "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is unknown"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">				</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">				</span><span class="NAME">this.domainParameter.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">curveoid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">				</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ECCUtils.decodeECParameters</span><span class="PUNC">(</span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> 
<span class='line'>155</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">			</span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>161</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>162</span> 
<span class='line'>163</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">exports</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="NAME">exports.ChipAuthenticationDomainParameterInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationDomainParameterInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> 
<span class='line'>166</span> 
<span class='line'>167</span> </span><span class="COMM">/**
<span class='line'>168</span>  * Convert object to TLV structure
<span class='line'>169</span>  *
<span class='line'>170</span>  * @return the TLV structure
<span class='line'>171</span>  * @type ASN1
<span class='line'>172</span>  */</span><span class="WHIT">
<span class='line'>173</span> </span><span class="NAME">ChipAuthenticationDomainParameterInfo.prototype.toTLV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> 
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="NAME">c.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">		</span><span class="NAME">c.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyId</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="NAME">ChipAuthenticationDomainParameterInfo.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"ChipAuthenticationDomainParameterInfo(protocol="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", keyId="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>198</span> 
<span class='line'>199</span> 
<span class='line'>200</span> 
<span class='line'>201</span> </span><span class="COMM">/**
<span class='line'>202</span>  * Create a ChipAuthenticationPublicKeyInfo object
<span class='line'>203</span>  *
<span class='line'>204</span>  * @class &lt;p>This class encodes and decodes ChipAuthenticationPublicKeyInfo objects.&lt;/p>
<span class='line'>205</span>  * &lt;p>The class implements the following ASN.1 syntax:&lt;/p>
<span class='line'>206</span>  * &lt;pre>
<span class='line'>207</span>  *	ChipAuthenticationPublicKeyInfo ::= SEQUENCE {
<span class='line'>208</span>  *		protocol OBJECT IDENTIFIER(id-PK-DH | id-PK-ECDH),
<span class='line'>209</span>  *		chipAuthenticationPublicKey SubjectPublicKeyInfo,
<span class='line'>210</span>  *		keyId INTEGER OPTIONAL
<span class='line'>211</span>  *	}
<span class='line'>212</span>  *
<span class='line'>213</span>  *	SubjectPublicKeyInfo ::= SEQUENCE {
<span class='line'>214</span>  *		algorithm  AlgorithmIdentifier,
<span class='line'>215</span>  *		subjectPublicKey BIT STRING
<span class='line'>216</span>  *	}
<span class='line'>217</span>  *
<span class='line'>218</span>  *	AlgorithmIdentifier ::= SEQUENCE {
<span class='line'>219</span>  *		algorithm  OBJECT IDENTIFIER,
<span class='line'>220</span>  *		parameters ANY DEFINED BY algorithm OPTIONAL
<span class='line'>221</span>  *	}
<span class='line'>222</span>  * &lt;/pre>
<span class='line'>223</span>  * @constructor
<span class='line'>224</span>  * @param {ASN1} the optional tlv structure to initialize the object
<span class='line'>225</span>  */</span><span class="WHIT">
<span class='line'>226</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// protocol</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">		</span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> 
<span class='line'>236</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">					</span><span class="COMM">// Subject public key info</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> 
<span class='line'>240</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">algo.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">				</span><span class="COMM">// Algorithm Identifier</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">algo.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> 
<span class='line'>244</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">algo.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">							</span><span class="COMM">// algorithm</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">oid.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">		</span><span class="NAME">this.algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oid.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>247</span> 
<span class='line'>248</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">			</span><span class="NAME">this.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">algo.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curveoid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">curveoid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthenticationPublicKeyInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Standardized domain parameter "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is unknown"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">curveoid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ECCUtils.decodeECParameters</span><span class="PUNC">(</span><span class="NAME">algo.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>259</span> 
<span class='line'>260</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">puk.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">		</span><span class="NAME">this.publicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">puk.value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> 
<span class='line'>264</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">			</span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>270</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>271</span> 
<span class='line'>272</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">exports</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="NAME">exports.ChipAuthenticationPublicKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationPublicKeyInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> 
<span class='line'>275</span> 
<span class='line'>276</span> 
<span class='line'>277</span> </span><span class="COMM">/**
<span class='line'>278</span>  * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
<span class='line'>279</span>  *
<span class='line'>280</span>  * This prevent interpretation of the integer representation if converted into
<span class='line'>281</span>  * a signed ASN1 INTEGER.
<span class='line'>282</span>  *
<span class='line'>283</span>  * @param {ByteString} value the value to convert
<span class='line'>284</span>  * @return the converted value
<span class='line'>285</span>  * @type ByteString
<span class='line'>286</span>  */</span><span class="WHIT">
<span class='line'>287</span> </span><span class="NAME">ChipAuthenticationPublicKeyInfo.convertUnsignedInteger</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>289</span> 
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> 
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>298</span> 
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>301</span> 
<span class='line'>302</span> 
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="COMM">/**
<span class='line'>305</span>  * Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.
<span class='line'>306</span>  *
<span class='line'>307</span>  * &lt;p>The structure is defined as:&lt;/p>
<span class='line'>308</span>  * &lt;pre>
<span class='line'>309</span>  *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
<span class='line'>310</span>  *		algorithm            AlgorithmIdentifier,
<span class='line'>311</span>  *		subjectPublicKey     BIT STRING  }
<span class='line'>312</span>  *
<span class='line'>313</span>  *	AlgorithmIdentifier  ::=  SEQUENCE  {
<span class='line'>314</span>  *		algorithm               OBJECT IDENTIFIER,
<span class='line'>315</span>  *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
<span class='line'>316</span>  *
<span class='line'>317</span>  *	id-ecPublicKey OBJECT IDENTIFIER ::= {
<span class='line'>318</span>  *		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
<span class='line'>319</span>  *
<span class='line'>320</span>  *	ECParameters ::= CHOICE {
<span class='line'>321</span>  *		namedCurve         OBJECT IDENTIFIER,
<span class='line'>322</span>  *		implicitCurve      NULL,
<span class='line'>323</span>  *		specifiedCurve     SpecifiedECDomain }
<span class='line'>324</span>  * &lt;/pre>
<span class='line'>325</span>  * @return the subjectPublicKey TLV structure
<span class='line'>326</span>  * @type ASN1
<span class='line'>327</span>  */</span><span class="WHIT">
<span class='line'>328</span> </span><span class="NAME">ChipAuthenticationPublicKeyInfo.createECSubjectPublicKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodeECDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectPublicKeyInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> 
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"1.2.840.10045.2.1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">		</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> 
<span class='line'>335</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">encodeECDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Make sure curve components are available if only curve oid is defined</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">			</span><span class="NAME">publicKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">		</span><span class="NAME">groupCAPuk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">groupCAPuk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ecParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"ecParameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"version"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fieldID"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fieldType"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"prime-field"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"prime"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">						</span><span class="NAME">ChipAuthenticationPublicKeyInfo.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"curve"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"a"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">						</span><span class="NAME">ChipAuthenticationPublicKeyInfo.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"b"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">						</span><span class="NAME">ChipAuthenticationPublicKeyInfo.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"base"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">						</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"order"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">					</span><span class="NAME">ChipAuthenticationPublicKeyInfo.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> 
<span class='line'>360</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cofactor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">cofactor.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cofactor.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">cofactor.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT">			</span><span class="NAME">ecParameter.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cofactor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cofactor.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">		</span><span class="NAME">algorithm.add</span><span class="PUNC">(</span><span class="NAME">ecParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">		</span><span class="NAME">algorithm.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>370</span> 
<span class='line'>371</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">algorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>372</span> 
<span class='line'>373</span> </span><span class="WHIT">	</span><span class="COMM">// Prefix a 00 to form correct bitstring</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">	</span><span class="COMM">// Prefix a 04 to indicate uncompressed format</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0004"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">	</span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keybin.concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keybin.concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> 
<span class='line'>380</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>382</span> 
<span class='line'>383</span> 
<span class='line'>384</span> 
<span class='line'>385</span> </span><span class="COMM">/**
<span class='line'>386</span>  * Convert object to TLV structure
<span class='line'>387</span>  *
<span class='line'>388</span>  * @return the TLV structure
<span class='line'>389</span>  * @type ASN1
<span class='line'>390</span>  */</span><span class="WHIT">
<span class='line'>391</span> </span><span class="NAME">ChipAuthenticationPublicKeyInfo.prototype.toTLV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"chipAuthenticationPublicKeyInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> 
<span class='line'>394</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"protocol"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span> 
<span class='line'>396</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algorithm.equals</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ecPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spki</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationPublicKeyInfo.createECSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">this.publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algoid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.algorithm</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algorithm.equals</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">			</span><span class="NAME">algoid.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spki</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">		</span><span class="NAME">spki.add</span><span class="PUNC">(</span><span class="NAME">algoid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0004"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> </span><span class="WHIT">		</span><span class="NAME">spki.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"publicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> 
<span class='line'>409</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>410</span> 
<span class='line'>411</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">spki</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> 
<span class='line'>413</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyId</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>418</span> 
<span class='line'>419</span> 
<span class='line'>420</span> 
<span class='line'>421</span> </span><span class="NAME">ChipAuthenticationPublicKeyInfo.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"ChipAuthenticationPublicKeyInfo(protocol="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", algorithm="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.algorithm</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", publicKey="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.publicKey</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", keyId="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>424</span> 
<span class='line'>425</span> 
<span class='line'>426</span> 
<span class='line'>427</span> </span><span class="COMM">/**
<span class='line'>428</span>  * Create a ChipAuthentication protocol object
<span class='line'>429</span>  *
<span class='line'>430</span>  * @class This class implements the ChipAuthentication protocol
<span class='line'>431</span>  *
<span class='line'>432</span>  * @constructor
<span class='line'>433</span>  *
<span class='line'>434</span>  * @param {Crypto} crypto the crypto provider
<span class='line'>435</span>  * @param {ByteString} algo the algorithm OID
<span class='line'>436</span>  * @param {Key} domparam the key object holding ECC domain parameter
<span class='line'>437</span>  */</span><span class="WHIT">
<span class='line'>438</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">domparam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">	</span><span class="NAME">this.domparam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domparam</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">	</span><span class="NAME">this.includeDPinAuthToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">	</span><span class="NAME">this.noPadding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> 
<span class='line'>445</span> </span><span class="COMM">//	print(ECCUtils.ECParametersToString(domparam));</span><span class="WHIT">
<span class='line'>446</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>447</span> 
<span class='line'>448</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">exports</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">	</span><span class="NAME">exports.ChipAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> 
<span class='line'>451</span> 
<span class='line'>452</span> </span><span class="NAME">ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH-3DES-CBC-CBC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>453</span> </span><span class="NAME">ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_128</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH-AES-CBC-CMAC-128"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> </span><span class="NAME">ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_192</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH-AES-CBC-CMAC-192"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="NAME">ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH-AES-CBC-CMAC-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> 
<span class='line'>457</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">8</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp192r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">9</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP192r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">10</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp224r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">11</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP224r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">12</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp256r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>463</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">13</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">14</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP320r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">15</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp384r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>466</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">16</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP384r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">17</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP512r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> </span><span class="NAME">ChipAuthentication.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">18</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp521r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>469</span> 
<span class='line'>470</span> 
<span class='line'>471</span> </span><span class="COMM">/**
<span class='line'>472</span>  * Derive key from input parameter, counter and optional nonce
<span class='line'>473</span>  *
<span class='line'>474</span>  * @param {ByteString} input the first part of the hash input
<span class='line'>475</span>  * @param {Number} counter the counter value
<span class='line'>476</span>  * @param {nonce} the optional nonce inserted between the input and the counter
<span class='line'>477</span>  * @return the key object
<span class='line'>478</span>  * @type Key
<span class='line'>479</span>  */</span><span class="WHIT">
<span class='line'>480</span> </span><span class="NAME">ChipAuthentication.prototype.deriveKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">input</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">counter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">		</span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.concat</span><span class="PUNC">(</span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>484</span> 
<span class='line'>485</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="STRN">"000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">counter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> 
<span class='line'>488</span> </span><span class="WHIT">	</span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.concat</span><span class="PUNC">(</span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span> 
<span class='line'>490</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span> 
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.DES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest.left</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>495</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_128</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest.left</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_192</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest.left</span><span class="PUNC">(</span><span class="NUMB">24</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_AES_CBC_CMAC_256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthentication"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Algorithm not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>507</span> 
<span class='line'>508</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>509</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>510</span> 
<span class='line'>511</span> 
<span class='line'>512</span> 
<span class='line'>513</span> </span><span class="COMM">/**
<span class='line'>514</span>  * Generate ephemeral key pair
<span class='line'>515</span>  */</span><span class="WHIT">
<span class='line'>516</span> </span><span class="NAME">ChipAuthentication.prototype.generateEphemeralCAKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT">	</span><span class="NAME">this.prkCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>518</span> </span><span class="WHIT">	</span><span class="NAME">this.prkCA.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>519</span> 
<span class='line'>520</span> </span><span class="WHIT">	</span><span class="NAME">this.pukCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span> </span><span class="WHIT">	</span><span class="NAME">this.pukCA.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> 
<span class='line'>523</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.pukCA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.prkCA</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>525</span> 
<span class='line'>526</span> 
<span class='line'>527</span> 
<span class='line'>528</span> </span><span class="COMM">/**
<span class='line'>529</span>  * Set chip authentication keys
<span class='line'>530</span>  *
<span class='line'>531</span>  * @param {Key} prk the private key
<span class='line'>532</span>  * @param {Key} puk the public key
<span class='line'>533</span>  */</span><span class="WHIT">
<span class='line'>534</span> </span><span class="NAME">ChipAuthentication.prototype.setKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>535</span> </span><span class="WHIT">	</span><span class="NAME">this.prkCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> </span><span class="WHIT">	</span><span class="NAME">this.pukCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>537</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>538</span> 
<span class='line'>539</span> 
<span class='line'>540</span> 
<span class='line'>541</span> </span><span class="COMM">/**
<span class='line'>542</span>  * Returns the x coordinate of the public key
<span class='line'>543</span>  *
<span class='line'>544</span>  * @return the encoded public key
<span class='line'>545</span>  * @type ByteString
<span class='line'>546</span>  */</span><span class="WHIT">
<span class='line'>547</span> </span><span class="NAME">ChipAuthentication.prototype.getCompressedPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>548</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.pukCA.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>549</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>550</span> 
<span class='line'>551</span> 
<span class='line'>552</span> 
<span class='line'>553</span> </span><span class="COMM">/**
<span class='line'>554</span>  * Returns the ephemeral public key
<span class='line'>555</span>  *
<span class='line'>556</span>  * @return the encoded public key
<span class='line'>557</span>  * @type ByteString
<span class='line'>558</span>  */</span><span class="WHIT">
<span class='line'>559</span> </span><span class="NAME">ChipAuthentication.prototype.getEphemeralPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ecpk.concat</span><span class="PUNC">(</span><span class="NAME">this.pukCA.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT">	</span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ecpk.concat</span><span class="PUNC">(</span><span class="NAME">this.pukCA.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ecpk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>564</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>565</span> 
<span class='line'>566</span> 
<span class='line'>567</span> 
<span class='line'>568</span> </span><span class="COMM">/**
<span class='line'>569</span>  * Decodes the ephemeral public key
<span class='line'>570</span>  *
<span class='line'>571</span>  * @return the decoded public key
<span class='line'>572</span>  * @type ByteString
<span class='line'>573</span>  */</span><span class="WHIT">
<span class='line'>574</span> </span><span class="NAME">ChipAuthentication.prototype.decodeEphemeralPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">encodedKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>575</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">encodedKey.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthentication"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Terminal ephemeral public key does not start with '04'"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>578</span> 
<span class='line'>579</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>581</span> 
<span class='line'>582</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">encodedKey.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthentication"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Length of terminal ephemeral public key does not match curve"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>584</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>585</span> 
<span class='line'>586</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>587</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodedKey.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>588</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodedKey.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>589</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>590</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>591</span> 
<span class='line'>592</span> 
<span class='line'>593</span> 
<span class='line'>594</span> </span><span class="COMM">/**
<span class='line'>595</span>  * Performs the mapping operation with mapping data from the other side
<span class='line'>596</span>  *
<span class='line'>597</span>  * @param {ByteString} publicKey the public key in encoded format
<span class='line'>598</span>  */</span><span class="WHIT">
<span class='line'>599</span> </span><span class="NAME">ChipAuthentication.prototype.performKeyAgreement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>600</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKey.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>601</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthentication"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key must start with '04'"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>602</span> 
<span class='line'>603</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">nonce</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">nonce</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>604</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthentication"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"nonce must be of type ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>605</span> 
<span class='line'>606</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKey.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>607</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">this.prkCA.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>608</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"ChipAuthentication"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key size does not match private key size"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>609</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>610</span> 
<span class='line'>611</span> </span><span class="WHIT">	</span><span class="NAME">this.otherPuK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>612</span> </span><span class="WHIT">	</span><span class="NAME">this.otherPuK.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.bytes</span><span class="PUNC">(</span><span class="WHIT">    </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>613</span> </span><span class="WHIT">	</span><span class="NAME">this.otherPuK.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.bytes</span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>614</span> 
<span class='line'>615</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.prkCA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>616</span> </span><span class="COMM">//	GPSystem.trace("Shared Secret K:");</span><span class="WHIT">
<span class='line'>617</span> </span><span class="COMM">//	GPSystem.trace(k);</span><span class="WHIT">
<span class='line'>618</span> </span><span class="WHIT">	</span><span class="NAME">this.kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>619</span> </span><span class="WHIT">	</span><span class="NAME">this.kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>620</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>621</span> 
<span class='line'>622</span> 
<span class='line'>623</span> 
<span class='line'>624</span> </span><span class="COMM">/**
<span class='line'>625</span>  * Calculate and verify the authentication token over the public key received from
<span class='line'>626</span>  * the other side
<span class='line'>627</span>  *
<span class='line'>628</span>  * @param {ByteString} the MAC over the authentication data
<span class='line'>629</span>  * @return true if the MAC is valid
<span class='line'>630</span>  * @type Boolean
<span class='line'>631</span>  */</span><span class="WHIT">
<span class='line'>632</span> </span><span class="NAME">ChipAuthentication.prototype.verifyAuthenticationToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>633</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication.encodePublicKey</span><span class="PUNC">(</span><span class="NAME">this.algo.toString</span><span class="PUNC">(</span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.pukCA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.includeDPinAuthToken</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>634</span> </span><span class="COMM">//	GPSystem.trace("Authentication Token for verification:");</span><span class="WHIT">
<span class='line'>635</span> </span><span class="COMM">//	GPSystem.trace(t);</span><span class="WHIT">
<span class='line'>636</span> 
<span class='line'>637</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>638</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.noPadding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>639</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>640</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>641</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>642</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>643</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_MAC_EMV</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>644</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">at.equals</span><span class="PUNC">(</span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>645</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>646</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>647</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">at.left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>649</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>650</span> 
<span class='line'>651</span> 
<span class='line'>652</span> 
<span class='line'>653</span> </span><span class="COMM">/**
<span class='line'>654</span>  * Calculate the authentication token over the public key received from
<span class='line'>655</span>  * the other side
<span class='line'>656</span>  *
<span class='line'>657</span>  * @param {ByteString} the MAC over the authentication data
<span class='line'>658</span>  * @return true if the MAC is valid
<span class='line'>659</span>  * @type Boolean
<span class='line'>660</span>  */</span><span class="WHIT">
<span class='line'>661</span> </span><span class="NAME">ChipAuthentication.prototype.calculateAuthenticationToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>662</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication.encodePublicKey</span><span class="PUNC">(</span><span class="NAME">this.algo.toString</span><span class="PUNC">(</span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.otherPuK</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.includeDPinAuthToken</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="COMM">//	GPSystem.trace("Authentication Token for signing:");</span><span class="WHIT">
<span class='line'>664</span> </span><span class="COMM">//	GPSystem.trace(t);</span><span class="WHIT">
<span class='line'>665</span> 
<span class='line'>666</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>667</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.noPadding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>668</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>669</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>670</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>671</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>672</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_MAC_EMV</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>673</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>674</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>675</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>676</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">at</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>677</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>678</span> 
<span class='line'>679</span> 
<span class='line'>680</span> 
<span class='line'>681</span> </span><span class="COMM">/**
<span class='line'>682</span>  * Strips leading zeros of a ByteString
<span class='line'>683</span>  *
<span class='line'>684</span>  * @param {ByteString} value the ByteString value
<span class='line'>685</span>  * @return the stripped ByteString object, may be an empty ByteString
<span class='line'>686</span>  * @type ByteString
<span class='line'>687</span>  */</span><span class="WHIT">
<span class='line'>688</span> </span><span class="NAME">ChipAuthentication.stripLeadingZeros</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>689</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>690</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>691</span> 
<span class='line'>692</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>693</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>694</span> 
<span class='line'>695</span> 
<span class='line'>696</span> 
<span class='line'>697</span> </span><span class="COMM">/**
<span class='line'>698</span>  * Encode an ECC public key in the format defined by the EAC 2.0 specification
<span class='line'>699</span>  *
<span class='line'>700</span>  * @param {String} oid the object identifier to encode
<span class='line'>701</span>  * @param {Key} key the EC public key
<span class='line'>702</span>  * @param {Boolean} withDP true to encode domain parameter as well
<span class='line'>703</span>  */</span><span class="WHIT">
<span class='line'>704</span> </span><span class="NAME">ChipAuthentication.encodePublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">withDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>705</span> 
<span class='line'>706</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"ecPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>707</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"objectIdentifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>708</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">withDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>709</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"primeModulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>710</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"firstCoefficient"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>711</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"secondCoefficient"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>712</span> 
<span class='line'>713</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>714</span> </span><span class="WHIT">		</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>715</span> </span><span class="WHIT">		</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>716</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"basePoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">point</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>717</span> 
<span class='line'>718</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"orderOfTheBasePoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>719</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>720</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>721</span> </span><span class="WHIT">	</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>722</span> </span><span class="WHIT">	</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>723</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"publicPoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">point</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>724</span> 
<span class='line'>725</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">withDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>726</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cofactor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>727</span> </span><span class="WHIT">		</span><span class="NAME">cofactor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">cofactor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>728</span> 
<span class='line'>729</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cofactor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cofactor</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>730</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>731</span> 
<span class='line'>732</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>733</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>734</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of the Extended Access Control protocol in version 2.0
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PACEDomainParameterInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PACE'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PACEDomainParameterInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PACEInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PACE'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PACEInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PACE'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PACE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/ChipAuthentication'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ChipAuthenticationInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationDomainParameterInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/ChipAuthentication'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ChipAuthenticationDomainParameterInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationPublicKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/ChipAuthentication'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ChipAuthenticationPublicKeyInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/ChipAuthentication'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ChipAuthentication</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span> 
<span class='line'> 40</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentification</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/RestrictedIdentification'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">RestrictedIdentification</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/RestrictedIdentification'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">RestrictedIdentificationInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationDomainParameterInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/RestrictedIdentification'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">RestrictedIdentificationDomainParameterInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> 
<span class='line'> 44</span> 
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="COMM">/**
<span class='line'> 47</span>  * Create a protocol object for EAC
<span class='line'> 48</span>  *
<span class='line'> 49</span>  * @class Class implementing support for Extended Access Control V2
<span class='line'> 50</span>  * @constructor
<span class='line'> 51</span>  * @param {Crypto} crypto the crypto provider
<span class='line'> 52</span>  * @param {Card} card the card object
<span class='line'> 53</span>  */</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">EAC20</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">card</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="NAME">this.card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">card</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">	</span><span class="NAME">this.sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">	</span><span class="NAME">this.includeDPinAuthToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Standard for PACE version >= 2</span><span class="WHIT">
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="NAME">this.PACEInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">	</span><span class="NAME">this.PACEDPs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="NAME">this.CAInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="NAME">this.CADPs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="NAME">this.CAPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> 
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="NAME">this.RIInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">	</span><span class="NAME">this.maxRData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">	</span><span class="NAME">this.maxCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">239</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Used for update binary</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">	</span><span class="NAME">this.useFID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Use FIDs rather than SFIs</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">	</span><span class="NAME">this.verbose</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="NAME">this.selectADFwithoutSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// Send SELECT ADF without SM (for applets)</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> </span><span class="NAME">exports.EAC20</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> 
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="COMM">/** PACE PWD is the hashed MRZ */</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="NAME">EAC20.ID_MRZ</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="COMM">/** PACE PWD is the CAN */</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="NAME">EAC20.ID_CAN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="COMM">/** PACE PWD is the PIN */</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="NAME">EAC20.ID_PIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="COMM">/** PACE PWD is the PUK */</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="NAME">EAC20.ID_PUK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> 
<span class='line'> 87</span> </span><span class="NAME">EAC20.AID_LDS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"A0000002471001"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="NAME">EAC20.AID_eID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E80704007F00070302"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="NAME">EAC20.AID_eSign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"A000000167455349474E"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> 
<span class='line'> 91</span> </span><span class="NAME">EAC20.SFI_CVCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x1C</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="NAME">EAC20.SFI_ChipSecurity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x1B</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="NAME">EAC20.SFI_CardAccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x1C</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="NAME">EAC20.SFI_CardSecurity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x1D</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="NAME">EAC20.SFI_COM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x1E</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> 
<span class='line'> 97</span> 
<span class='line'> 98</span> </span><span class="NAME">EAC20.prototype.log</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.verbose</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>102</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>103</span> 
<span class='line'>104</span> 
<span class='line'>105</span> 
<span class='line'>106</span> </span><span class="COMM">/**
<span class='line'>107</span>  * Process a list of security infos from EF.CardInfo, EF.CardSecurity or EF.ChipSecurity
<span class='line'>108</span>  *
<span class='line'>109</span>  * @param {ASN1} si the security info ASN Sequence
<span class='line'>110</span>  * @param {boolean} fromCardSecurity true if security infos are taken from EF.CardSecurity, EF.ChipSecurity or EF.DG14
<span class='line'>111</span>  */</span><span class="WHIT">
<span class='line'>112</span> </span><span class="NAME">EAC20.prototype.processSecurityInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">si</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fromCardSecurity</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"SecurityInfos:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">si</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> 
<span class='line'>116</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_PACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-PACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_PACE_DH_GM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-PACE-DH-GM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_PACE_ECDH_GM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-PACE-ECDH-GM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_PACE_DH_IM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-PACE-DH-IM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_PACE_ECDH_IM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-PACE-ECDH-IM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_PK_ECDH</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-PK-ECDH"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_CA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_CA_DH</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-DH"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_CA_ECDH</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_TA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id_PT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-PT"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">si.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">si.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">o.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.elements</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> 
<span class='line'>132</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">oid.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.startsWith</span><span class="PUNC">(</span><span class="NAME">id_TA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">id_TA.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">			</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"TA : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.startsWith</span><span class="PUNC">(</span><span class="NAME">id_PACE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">id_PACE.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_PACE_DH_GM</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">				</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_PACE_ECDH_GM</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">				</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_PACE_DH_IM</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">				</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_PACE_ECDH_GM</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"PaceDomainParameterInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pdpi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PACEDomainParameterInfo</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">pdpi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> 
<span class='line'>147</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdpi.parameterId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> 
<span class='line'>149</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">					</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>152</span> 
<span class='line'>153</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCardSecurity</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.PACEDPs</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate parameterId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for PACEDomainParameter"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> 
<span class='line'>157</span> </span><span class="WHIT">				</span><span class="NAME">this.PACEDPs</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pdpi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"PaceInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> 
<span class='line'>161</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PACEInfo</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">pi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> 
<span class='line'>164</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pi.parameterId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> 
<span class='line'>166</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">					</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>169</span> 
<span class='line'>170</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pi.version</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">					</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCardSecurity</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.PACEInfos</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">						</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate parameterId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for PACEInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">					</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">				</span><span class="NAME">this.PACEInfos</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_PK_ECDH</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">			</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"ChipAuthenticationPublicKeyInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> 
<span class='line'>182</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">capki</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">			</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">capki</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> 
<span class='line'>185</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">capki.keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Using default key id 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">				</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCardSecurity</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.CAPublicKeys</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationPublicKeyInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">			</span><span class="NAME">this.CAPublicKeys</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">capki</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.startsWith</span><span class="PUNC">(</span><span class="NAME">id_CA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">id_CA.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_CA_DH</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">				</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_CA_ECDH</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"ChipAuthenticationDomainParameterInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> 
<span class='line'>202</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cadpi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationDomainParameterInfo</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">cadpi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> 
<span class='line'>205</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cadpi.keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> 
<span class='line'>207</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">					</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Using default key id 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">					</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>211</span> 
<span class='line'>212</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCardSecurity</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.CADPs</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationDomainParameter"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>215</span> 
<span class='line'>216</span> </span><span class="WHIT">				</span><span class="NAME">this.CADPs</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cadpi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"ChipAuthenticationInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> 
<span class='line'>220</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cai</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ChipAuthenticationInfo</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">cai</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> 
<span class='line'>223</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cai.keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> 
<span class='line'>225</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">					</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Using default key id 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">					</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>229</span> 
<span class='line'>230</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCardSecurity</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.CAInfos</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>233</span> 
<span class='line'>234</span> </span><span class="WHIT">				</span><span class="NAME">this.CAInfos</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cai</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.startsWith</span><span class="PUNC">(</span><span class="NAME">RestrictedIdentification.id_RI</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentification.id_RI.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">RestrictedIdentification.id_RI_DH</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">				</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">RestrictedIdentification.id_RI_ECDH</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"RestrictedIdentificationDomainParameterInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ridpi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationDomainParameterInfo</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">ridpi</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> 
<span class='line'>244</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCardSecurity</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.RIDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate RestrictedIdentificationDomainParameter"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">				</span><span class="NAME">this.RIDP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ridpi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"RestrictedIdentificationInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> 
<span class='line'>251</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rii</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationInfo</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">				</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">rii</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> 
<span class='line'>254</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rii.keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> 
<span class='line'>256</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">					</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Using default key id 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">					</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>260</span> 
<span class='line'>261</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">fromCardSecurity</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.RIInfos</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for RestrictedIdentificationInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>264</span> 
<span class='line'>265</span> </span><span class="WHIT">				</span><span class="NAME">this.RIInfos</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rii</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="NAME">id_PT</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">			</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"PrivilegedTerminalInfo : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">			</span><span class="NAME">this.processSecurityInfos</span><span class="PUNC">(</span><span class="NAME">o.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fromCardSecurity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>272</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>273</span> 
<span class='line'>274</span> 
<span class='line'>275</span> 
<span class='line'>276</span> </span><span class="COMM">/**
<span class='line'>277</span>  * Select EF using FID and read elementary file
<span class='line'>278</span>  *
<span class='line'>279</span>  * @param {ByteString} fid 2 byte file identifier
<span class='line'>280</span>  * @type ByteString
<span class='line'>281</span>  * @return the content of the EF
<span class='line'>282</span>  */</span><span class="WHIT">
<span class='line'>283</span> </span><span class="NAME">EAC20.prototype.readEFwithFID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">fid.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Length of fid must be 2 bytes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>286</span> 
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.maxRData</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> 
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>297</span> 
<span class='line'>298</span> 
<span class='line'>299</span> 
<span class='line'>300</span> </span><span class="COMM">/**
<span class='line'>301</span>  * Select EF using FID and update content
<span class='line'>302</span>  *
<span class='line'>303</span>  * @param {ByteString} fid 2 byte file identifier
<span class='line'>304</span>  * @param {ByteString} data data to be written
<span class='line'>305</span>  */</span><span class="WHIT">
<span class='line'>306</span> </span><span class="NAME">EAC20.prototype.updateEFwithFID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">fid.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Length of fid must be 2 bytes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> 
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">		</span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.bytes</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>317</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>318</span> 
<span class='line'>319</span> 
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="COMM">/**
<span class='line'>322</span>  * Select and read EF using SFI
<span class='line'>323</span>  *
<span class='line'>324</span>  * @param {Number} short file identifier
<span class='line'>325</span>  * @type ByteString
<span class='line'>326</span>  * @return the content of the EF
<span class='line'>327</span>  */</span><span class="WHIT">
<span class='line'>328</span> </span><span class="NAME">EAC20.prototype.readEFwithSFI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> 
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.useFID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x0100</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.readEFwithFID</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.maxRData</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> 
<span class='line'>338</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.maxRData</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>345</span> 
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>348</span> 
<span class='line'>349</span> 
<span class='line'>350</span> 
<span class='line'>351</span> </span><span class="COMM">/**
<span class='line'>352</span>  * Select and read a TLV encoded EF using SFI
<span class='line'>353</span>  *
<span class='line'>354</span>  * @param {Number} short file identifier
<span class='line'>355</span>  * @type ByteString
<span class='line'>356</span>  * @return the TLV content of the EF
<span class='line'>357</span>  */</span><span class="WHIT">
<span class='line'>358</span> </span><span class="NAME">EAC20.prototype.readTLVEFwithSFI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>359</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span> 
<span class='line'>361</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.useFID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x0100</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.readEFwithFID</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>365</span> 
<span class='line'>366</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.maxRData</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> 
<span class='line'>368</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.maxRData</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> 
<span class='line'>376</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>378</span> 
<span class='line'>379</span> 
<span class='line'>380</span> 
<span class='line'>381</span> </span><span class="COMM">/**
<span class='line'>382</span>  * Select EF using SFI and update content
<span class='line'>383</span>  *
<span class='line'>384</span>  * @param {Number} short file identifier
<span class='line'>385</span>  * @param {ByteString} data data to be written
<span class='line'>386</span>  */</span><span class="WHIT">
<span class='line'>387</span> </span><span class="NAME">EAC20.prototype.updateEFwithSFI</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">sfi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> 
<span class='line'>390</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.useFID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>391</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x0100</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.updateEFwithFID</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>394</span> 
<span class='line'>395</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">sfi</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">		</span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.bytes</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">		</span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>404</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>405</span> 
<span class='line'>406</span> 
<span class='line'>407</span> 
<span class='line'>408</span> </span><span class="COMM">/**
<span class='line'>409</span>  * Select application DF
<span class='line'>410</span>  *
<span class='line'>411</span>  * @param {ByteString} aid the application identifier
<span class='line'>412</span>  */</span><span class="WHIT">
<span class='line'>413</span> </span><span class="NAME">EAC20.prototype.selectADF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">aid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.selectADFwithoutSM</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendApdu</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>419</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>420</span> 
<span class='line'>421</span> 
<span class='line'>422</span> 
<span class='line'>423</span> </span><span class="COMM">/**
<span class='line'>424</span>  * Select ePass LDS Application
<span class='line'>425</span>  */</span><span class="WHIT">
<span class='line'>426</span> </span><span class="NAME">EAC20.prototype.selectLDS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT">	</span><span class="NAME">this.selectADF</span><span class="PUNC">(</span><span class="NAME">EAC20.AID_LDS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>429</span> 
<span class='line'>430</span> 
<span class='line'>431</span> 
<span class='line'>432</span> </span><span class="COMM">/**
<span class='line'>433</span>  * Select eID Application
<span class='line'>434</span>  */</span><span class="WHIT">
<span class='line'>435</span> </span><span class="NAME">EAC20.prototype.select_eID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="NAME">this.selectADF</span><span class="PUNC">(</span><span class="NAME">EAC20.AID_eID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>437</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>438</span> 
<span class='line'>439</span> 
<span class='line'>440</span> 
<span class='line'>441</span> </span><span class="COMM">/**
<span class='line'>442</span>  * Select eSign Application
<span class='line'>443</span>  */</span><span class="WHIT">
<span class='line'>444</span> </span><span class="NAME">EAC20.prototype.select_eSign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="NAME">this.selectADF</span><span class="PUNC">(</span><span class="NAME">EAC20.AID_eSign</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>447</span> 
<span class='line'>448</span> 
<span class='line'>449</span> 
<span class='line'>450</span> </span><span class="COMM">/**
<span class='line'>451</span>  * Read EF.DG14 and process security infos
<span class='line'>452</span>  *
<span class='line'>453</span>  */</span><span class="WHIT">
<span class='line'>454</span> </span><span class="NAME">EAC20.prototype.readDG14</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cibin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readEFwithSFI</span><span class="PUNC">(</span><span class="NUMB">14</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">citlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cibin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">citlv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> 
<span class='line'>459</span> </span><span class="WHIT">	</span><span class="NAME">this.processSecurityInfos</span><span class="PUNC">(</span><span class="NAME">citlv.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>461</span> 
<span class='line'>462</span> 
<span class='line'>463</span> 
<span class='line'>464</span> </span><span class="COMM">/**
<span class='line'>465</span>  * Read EF.CVCA and process contained CARs
<span class='line'>466</span>  *
<span class='line'>467</span>  */</span><span class="WHIT">
<span class='line'>468</span> </span><span class="NAME">EAC20.prototype.readCVCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>469</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvcabin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readEFwithSFI</span><span class="PUNC">(</span><span class="NAME">EAC20.SFI_CVCA</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>470</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cvcabin.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>471</span> 
<span class='line'>472</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cvcabin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>473</span> </span><span class="WHIT">	</span><span class="NAME">this.lastCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">cvca.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>474</span> 
<span class='line'>475</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvcabin.byteAt</span><span class="PUNC">(</span><span class="NAME">cvca.size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cvcabin.bytes</span><span class="PUNC">(</span><span class="NAME">cvca.size</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT">		</span><span class="NAME">this.previousCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">cvca.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>479</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>480</span> 
<span class='line'>481</span> 
<span class='line'>482</span> 
<span class='line'>483</span> </span><span class="COMM">/**
<span class='line'>484</span>  * Read EF.CardAccess and process security infos
<span class='line'>485</span>  *
<span class='line'>486</span>  */</span><span class="WHIT">
<span class='line'>487</span> </span><span class="NAME">EAC20.prototype.readCardAccess</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>488</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cibin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readEFwithSFI</span><span class="PUNC">(</span><span class="NAME">EAC20.SFI_CardAccess</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">citlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cibin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">citlv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span> 
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="NAME">this.processSecurityInfos</span><span class="PUNC">(</span><span class="NAME">citlv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>493</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>494</span> 
<span class='line'>495</span> </span><span class="COMM">// Deprecated</span><span class="WHIT">
<span class='line'>496</span> </span><span class="NAME">EAC20.prototype.readCardInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC20.prototype.readCardAccess</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> 
<span class='line'>498</span> 
<span class='line'>499</span> 
<span class='line'>500</span> </span><span class="COMM">/**
<span class='line'>501</span>  * Read EF.CardSecurity and process security infos
<span class='line'>502</span>  */</span><span class="WHIT">
<span class='line'>503</span> </span><span class="NAME">EAC20.prototype.readCardSecurity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">csbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readEFwithSFI</span><span class="PUNC">(</span><span class="NAME">EAC20.SFI_CardSecurity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cstlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">csbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"EF.CardSecurity:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>507</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">cstlv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>508</span> 
<span class='line'>509</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cms</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CMSSignedData</span><span class="PUNC">(</span><span class="NAME">csbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> 
<span class='line'>511</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cms.getSignedDataCertificates</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> 
<span class='line'>513</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"EF.CardSecurity Certificates:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">certs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">certs</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>517</span> 
<span class='line'>518</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"DocSigner Signature is "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cms.isSignerInfoSignatureValid</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"valid"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"not valid"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>519</span> 
<span class='line'>520</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cms.getSignedContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span> 
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>523</span> 
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cstlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>525</span> 
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">cstlv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> 
<span class='line'>528</span> </span><span class="WHIT">	</span><span class="NAME">this.processSecurityInfos</span><span class="PUNC">(</span><span class="NAME">cstlv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>529</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>530</span> 
<span class='line'>531</span> 
<span class='line'>532</span> 
<span class='line'>533</span> </span><span class="COMM">/**
<span class='line'>534</span>  * Read EF.ChipSecurity and process security infos
<span class='line'>535</span>  */</span><span class="WHIT">
<span class='line'>536</span> </span><span class="NAME">EAC20.prototype.readChipSecurity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>537</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">csbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readEFwithSFI</span><span class="PUNC">(</span><span class="NAME">EAC20.SFI_ChipSecurity</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>538</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cstlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">csbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"EF.ChipSecurity:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">cstlv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> 
<span class='line'>542</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cms</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CMSSignedData</span><span class="PUNC">(</span><span class="NAME">csbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>543</span> 
<span class='line'>544</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cms.getSignedDataCertificates</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> 
<span class='line'>546</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"EF.ChipSecurity Certificates:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>547</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">certs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>548</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">certs</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>549</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>550</span> 
<span class='line'>551</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"DocSigner Signature is "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cms.isSignerInfoSignatureValid</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"valid"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"not valid"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>552</span> 
<span class='line'>553</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cms.getSignedContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>554</span> 
<span class='line'>555</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> 
<span class='line'>557</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cstlv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> 
<span class='line'>559</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">cstlv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>560</span> 
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="NAME">this.processSecurityInfos</span><span class="PUNC">(</span><span class="NAME">cstlv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>563</span> 
<span class='line'>564</span> 
<span class='line'>565</span> 
<span class='line'>566</span> </span><span class="COMM">/**
<span class='line'>567</span>  * Return the list of PACEInfo objects
<span class='line'>568</span>  *
<span class='line'>569</span>  * @return the list of PACEInfo objects read from the card, indexed by the parameterId
<span class='line'>570</span>  * @type PACEInfo[]
<span class='line'>571</span>  */</span><span class="WHIT">
<span class='line'>572</span> </span><span class="NAME">EAC20.prototype.getPACEInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.PACEInfos</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>575</span> 
<span class='line'>576</span> 
<span class='line'>577</span> 
<span class='line'>578</span> </span><span class="COMM">/**
<span class='line'>579</span>  * Return the list of PACEDomainParameterInfo objects
<span class='line'>580</span>  *
<span class='line'>581</span>  * @return the list of PACEDomainParameterInfo objects read from the card, indexed by the parameterId
<span class='line'>582</span>  * @type PACEDomainParameterInfo[]
<span class='line'>583</span>  */</span><span class="WHIT">
<span class='line'>584</span> </span><span class="NAME">EAC20.prototype.getPACEDomainParameterInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>585</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.PACEDPs</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>586</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>587</span> 
<span class='line'>588</span> 
<span class='line'>589</span> 
<span class='line'>590</span> </span><span class="COMM">/**
<span class='line'>591</span>  * Return the list of ChipAuthenticationInfo objects
<span class='line'>592</span>  *
<span class='line'>593</span>  * @return the list of ChipAuthenticationInfo objects read from the card, indexed by the keyId
<span class='line'>594</span>  * @type ChipAuthenticationInfo[]
<span class='line'>595</span>  */</span><span class="WHIT">
<span class='line'>596</span> </span><span class="NAME">EAC20.prototype.getCAInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>597</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.CAInfos</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>598</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>599</span> 
<span class='line'>600</span> 
<span class='line'>601</span> 
<span class='line'>602</span> </span><span class="COMM">/**
<span class='line'>603</span>  * Return the list of ChipAuthenticationDomainParameterInfo objects
<span class='line'>604</span>  *
<span class='line'>605</span>  * @return the list of ChipAuthenticationDomainParameterInfo objects read from the card, indexed by the keyId
<span class='line'>606</span>  * @type ChipAuthenticationDomainParameterInfo[]
<span class='line'>607</span>  */</span><span class="WHIT">
<span class='line'>608</span> </span><span class="NAME">EAC20.prototype.getCADomainParameterInfos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>609</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.CADPs</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>610</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>611</span> 
<span class='line'>612</span> 
<span class='line'>613</span> 
<span class='line'>614</span> </span><span class="COMM">/**
<span class='line'>615</span>  * Return the key id of the chip authentication key
<span class='line'>616</span>  *
<span class='line'>617</span>  * @return the key id
<span class='line'>618</span>  * @type
<span class='line'>619</span>  */</span><span class="WHIT">
<span class='line'>620</span> </span><span class="NAME">EAC20.prototype.getCAKeyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privileged</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>621</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.CAInfos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Locate first entry in list</span><span class="WHIT">
<span class='line'>622</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.CAInfos</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>623</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">privileged</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>624</span> </span><span class="WHIT">				</span><span class="NAME">privileged</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Select second key if privileged key requested</span><span class="WHIT">
<span class='line'>625</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>626</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.CAInfos</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>627</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>630</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>631</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>632</span> 
<span class='line'>633</span> 
<span class='line'>634</span> 
<span class='line'>635</span> </span><span class="COMM">/**
<span class='line'>636</span>  * Return the key id of the restricted identification key
<span class='line'>637</span>  *
<span class='line'>638</span>  * @param {boolean} authOnly return the RI key available after authentication only (to calculate the pseudonym)
<span class='line'>639</span>  * @return the key id
<span class='line'>640</span>  * @type
<span class='line'>641</span>  */</span><span class="WHIT">
<span class='line'>642</span> </span><span class="NAME">EAC20.prototype.getRIKeyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">authOnly</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>643</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rii</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.RIInfos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>644</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">authOnly</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">rii.authorizedOnly</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>645</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rii.keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>646</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>647</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>648</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>649</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>650</span> 
<span class='line'>651</span> 
<span class='line'>652</span> 
<span class='line'>653</span> </span><span class="COMM">/**
<span class='line'>654</span>  * Decode document number from 2 or 3 line MRZ
<span class='line'>655</span>  *
<span class='line'>656</span>  * &lt;p>This method supports a document number in a three line MRZ longer than 10 digits.&lt;/p>
<span class='line'>657</span>  *
<span class='line'>658</span>  * @param {String} mrz the concatenation of the MRZ lines
<span class='line'>659</span>  * @type String
<span class='line'>660</span>  * @return the document number
<span class='line'>661</span>  */</span><span class="WHIT">
<span class='line'>662</span> </span><span class="NAME">EAC20.decodeDocumentNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mrz.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">88</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">			</span><span class="COMM">// Two line MRZ</span><span class="WHIT">
<span class='line'>664</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">docno</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mrz.substr</span><span class="PUNC">(</span><span class="NUMB">44</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>665</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">						</span><span class="COMM">// Three line MRZ</span><span class="WHIT">
<span class='line'>666</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mrz.charAt</span><span class="PUNC">(</span><span class="NUMB">14</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"&lt;"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>667</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sep</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mrz.indexOf</span><span class="PUNC">(</span><span class="STRN">"&lt;"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>668</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">docno</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mrz.substr</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">,</span><span class="NUMB">9</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">mrz.substring</span><span class="PUNC">(</span><span class="NUMB">15</span><span class="PUNC">,</span><span class="NAME">sep</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>669</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>670</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">docno</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mrz.substr</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>671</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>672</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>673</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">docno</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>674</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>675</span> 
<span class='line'>676</span> 
<span class='line'>677</span> </span><span class="COMM">/**
<span class='line'>678</span>  * Calculate the hash over document number, date of birth and date of expiration from 2 or 3 line MRZ
<span class='line'>679</span>  *
<span class='line'>680</span>  * &lt;pre>
<span class='line'>681</span>  * 2 line MRZ of Silver Data Set
<span class='line'>682</span>  *   P&lt;UTOERIKSSON&lt;&lt;ANNA&lt;MARIA&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
<span class='line'>683</span>  *   L898902C&lt;3UTO6908061F9406236ZE184226B&lt;&lt;&lt;&lt;&lt;14
<span class='line'>684</span>  *   '-DocNo--'   '-DoB-' '-DoE-'
<span class='line'>685</span>  *
<span class='line'>686</span>  * 3 line MRZ of Silver Data Set
<span class='line'>687</span>  *   I&lt;UTOL898902C&lt;3&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
<span class='line'>688</span>  *        '-DocNo--'
<span class='line'>689</span>  *   6908061F9406236UTO&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;1
<span class='line'>690</span>  *   '-DoB-' '-DoE-'
<span class='line'>691</span>  *   ERIKSON&lt;&lt;ANNA&lt;MARIA&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
<span class='line'>692</span>  * &lt;/pre>
<span class='line'>693</span>  *
<span class='line'>694</span>  * @param {String} mrz 2 line or 3 line machine readable zone
<span class='line'>695</span>  * @type ByteString
<span class='line'>696</span>  * @return the SHA-1 hash over the concatenation of document number, date of birth and date of expiration
<span class='line'>697</span>  */</span><span class="WHIT">
<span class='line'>698</span> </span><span class="NAME">EAC20.prototype.hashMRZ</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>699</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash_input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">EAC20.decodeDocumentNumber</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>700</span> </span><span class="WHIT">	</span><span class="COMM">// Convert to byte string</span><span class="WHIT">
<span class='line'>701</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">strbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>702</span> 
<span class='line'>703</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">strbin.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">88</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">			</span><span class="COMM">// 2 line MRZ</span><span class="WHIT">
<span class='line'>704</span> </span><span class="WHIT">		</span><span class="COMM">// Extract Date of Birth and Date of Expiration</span><span class="WHIT">
<span class='line'>705</span> </span><span class="WHIT">		</span><span class="NAME">hash_input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hash_input.concat</span><span class="PUNC">(</span><span class="NAME">strbin.bytes</span><span class="PUNC">(</span><span class="NUMB">57</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>706</span> </span><span class="WHIT">		</span><span class="NAME">hash_input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hash_input.concat</span><span class="PUNC">(</span><span class="NAME">strbin.bytes</span><span class="PUNC">(</span><span class="NUMB">65</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>707</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">strbin.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">90</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// 3 line MRZ</span><span class="WHIT">
<span class='line'>708</span> </span><span class="WHIT">		</span><span class="COMM">// Extract Date of Birth and Date of Expiration</span><span class="WHIT">
<span class='line'>709</span> </span><span class="WHIT">		</span><span class="NAME">hash_input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hash_input.concat</span><span class="PUNC">(</span><span class="NAME">strbin.bytes</span><span class="PUNC">(</span><span class="NUMB">30</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>710</span> </span><span class="WHIT">		</span><span class="NAME">hash_input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hash_input.concat</span><span class="PUNC">(</span><span class="NAME">strbin.bytes</span><span class="PUNC">(</span><span class="NUMB">38</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>711</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>712</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">strbin.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"MRZ must be either 88 or 90 character long"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>713</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>714</span> 
<span class='line'>715</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Hash Input : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hash_input.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>716</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mrz_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hash_input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>717</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"MRZ Hash : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">mrz_hash</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>718</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">mrz_hash</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>719</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>720</span> 
<span class='line'>721</span> 
<span class='line'>722</span> 
<span class='line'>723</span> </span><span class="COMM">/**
<span class='line'>724</span>  * Calculate the Basic Access Control (BAC) key from the MRZ
<span class='line'>725</span>  *
<span class='line'>726</span>  * @param {String} mrz 2 line or 3 line machine readable zone
<span class='line'>727</span>  * @param {Number} keyno Number of key to calculate (1 for Kenc and 2 for Kmac)
<span class='line'>728</span>  * @type Key
<span class='line'>729</span>  * @returns the key object
<span class='line'>730</span>  */</span><span class="WHIT">
<span class='line'>731</span> </span><span class="NAME">EAC20.prototype.calculateBACKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyno</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>732</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mrz_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.hashMRZ</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>733</span> 
<span class='line'>734</span> </span><span class="WHIT">	</span><span class="COMM">// Extract first 16 byte and append 00000001 or 00000002</span><span class="WHIT">
<span class='line'>735</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NAME">mrz_hash.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>736</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>737</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">keyno</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>738</span> 
<span class='line'>739</span> </span><span class="WHIT">	</span><span class="COMM">// Hash again to calculate key value</span><span class="WHIT">
<span class='line'>740</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>741</span> </span><span class="WHIT">	</span><span class="NAME">keyval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyval.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>742</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Value of Key : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>743</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>744</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.DES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>745</span> 
<span class='line'>746</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>747</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>748</span> 
<span class='line'>749</span> 
<span class='line'>750</span> 
<span class='line'>751</span> </span><span class="COMM">/**
<span class='line'>752</span>  * Perform BAC using the provided Kenc and Kmac values.
<span class='line'>753</span>  *
<span class='line'>754</span>  * @param {Key} kenc the key Kenc
<span class='line'>755</span>  * @param {Key} kmac the key Kmac
<span class='line'>756</span>  */</span><span class="WHIT">
<span class='line'>757</span> </span><span class="NAME">EAC20.prototype.performBACWithMRZ</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>758</span> </span><span class="WHIT">	</span><span class="NAME">this.setIDPICC</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">EAC20.decodeDocumentNumber</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>759</span> 
<span class='line'>760</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.calculateBACKey</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>761</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.calculateBACKey</span><span class="PUNC">(</span><span class="NAME">mrz</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>762</span> 
<span class='line'>763</span> </span><span class="WHIT">	</span><span class="NAME">this.performBAC</span><span class="PUNC">(</span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>764</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>765</span> 
<span class='line'>766</span> 
<span class='line'>767</span> 
<span class='line'>768</span> </span><span class="COMM">/**
<span class='line'>769</span>  * Perform BAC using the provided Kenc and Kmac values.
<span class='line'>770</span>  *
<span class='line'>771</span>  * @param {Key} kenc the key Kenc
<span class='line'>772</span>  * @param {Key} kmac the key Kmac
<span class='line'>773</span>  */</span><span class="WHIT">
<span class='line'>774</span> </span><span class="NAME">EAC20.prototype.performBAC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>775</span> 
<span class='line'>776</span> </span><span class="WHIT">	</span><span class="COMM">// GET CHALLENGE</span><span class="WHIT">
<span class='line'>777</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rndicc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendApdu</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x08</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>778</span> 
<span class='line'>779</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rndifd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>780</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kifd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>781</span> 
<span class='line'>782</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rndifd.concat</span><span class="PUNC">(</span><span class="NAME">rndicc</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">kifd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>783</span> 
<span class='line'>784</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>785</span> 
<span class='line'>786</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_MAC_EMV</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cryptogram.pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>787</span> 
<span class='line'>788</span> </span><span class="WHIT">	</span><span class="COMM">// EXTERNAL AUTHENTICATE</span><span class="WHIT">
<span class='line'>789</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">autresp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendApdu</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cryptogram.concat</span><span class="PUNC">(</span><span class="NAME">mac</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>790</span> 
<span class='line'>791</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>792</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Mutual authenticate failed with "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.card.SW.toString</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" \""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.card.SWMSG</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\". MRZ correct ?"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>793</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Card did not accept MAC in BAC establishment"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>794</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>795</span> 
<span class='line'>796</span> </span><span class="WHIT">	</span><span class="NAME">cryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">autresp.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>797</span> </span><span class="WHIT">	</span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">autresp.bytes</span><span class="PUNC">(</span><span class="NUMB">32</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>798</span> 
<span class='line'>799</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.crypto.verify</span><span class="PUNC">(</span><span class="NAME">kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_MAC_EMV</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cryptogram.pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>800</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Card MAC did not verify correctly"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>801</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>802</span> 
<span class='line'>803</span> </span><span class="WHIT">	</span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cryptogram</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>804</span> 
<span class='line'>805</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">plain.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">rndicc</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>806</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Card response does not contain matching RND.ICC"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>807</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>808</span> 
<span class='line'>809</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">plain.bytes</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">rndifd</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>810</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Card response does not contain matching RND.IFD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>811</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>812</span> 
<span class='line'>813</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kicc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plain.bytes</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>814</span> </span><span class="WHIT">	</span><span class="NAME">keyinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kicc.xor</span><span class="PUNC">(</span><span class="NAME">kifd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>815</span> 
<span class='line'>816</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hashin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyinp.concat</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000001"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>817</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kencval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>818</span> </span><span class="WHIT">	</span><span class="NAME">kencval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kencval.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>819</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>820</span> </span><span class="WHIT">	</span><span class="NAME">kenc.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.DES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kencval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>821</span> 
<span class='line'>822</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hashin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyinp.concat</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000002"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>823</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmacval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>824</span> </span><span class="WHIT">	</span><span class="NAME">kmacval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kmacval.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>825</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>826</span> </span><span class="WHIT">	</span><span class="NAME">kmac.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.DES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kmacval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>827</span> 
<span class='line'>828</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ssc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rndicc.bytes</span><span class="PUNC">(</span><span class="NUMB">4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">rndifd.bytes</span><span class="PUNC">(</span><span class="NUMB">4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>829</span> 
<span class='line'>830</span> </span><span class="WHIT">	</span><span class="NAME">this.sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>831</span> </span><span class="WHIT">	</span><span class="NAME">this.sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>832</span> </span><span class="WHIT">	</span><span class="NAME">this.sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>833</span> </span><span class="WHIT">	</span><span class="NAME">this.sm.setSendSequenceCounter</span><span class="PUNC">(</span><span class="NAME">ssc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>834</span> 
<span class='line'>835</span> </span><span class="WHIT">	</span><span class="NAME">this.card.setCredential</span><span class="PUNC">(</span><span class="NAME">this.sm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>836</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>837</span> 
<span class='line'>838</span> 
<span class='line'>839</span> 
<span class='line'>840</span> </span><span class="COMM">/**
<span class='line'>841</span>  * Perform PACE using the indicated parameter set, the identified password, the password value and
<span class='line'>842</span>  * an optional cardholder authentication template.
<span class='line'>843</span>  *
<span class='line'>844</span>  * &lt;p>This method supports PACE version 1 and 2. For version 2, parameterId with a value between 0 and 31 denotes
<span class='line'>845</span>  * a standardized domain parameter as defined in TR-03110 2.04 or later.&lt;/p>
<span class='line'>846</span>  *
<span class='line'>847</span>  * @param {Number} parameterId the identifier for the PACEInfo and PACEDomainParameterInfo from EF.CardInfo. Use 0 for
<span class='line'>848</span>  *                             the default.
<span class='line'>849</span>  * @param {Number} pwdid one of EAC20.ID_MRZ, EAC20.ID_CAN, EAC20.ID_PIN, EAC20.ID_PUK
<span class='line'>850</span>  * @param {ByteString} pwd the PACE password or PACE key
<span class='line'>851</span>  * @param {ASN1} chat the CHAT data object with tag 7F4C or null
<span class='line'>852</span>  * @param {ASN1} certExt the certificate extensions data object with tag 65 or null
<span class='line'>853</span>  */</span><span class="WHIT">
<span class='line'>854</span> </span><span class="NAME">EAC20.prototype.performPACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">parameterId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pwdid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pwd</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chat</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certExt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>855</span> 
<span class='line'>856</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">paceinfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.PACEInfos</span><span class="PUNC">[</span><span class="NAME">parameterId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>857</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">paceinfo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>858</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown parameterId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parameterId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for PACEInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>859</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>860</span> 
<span class='line'>861</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">domainParameter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>862</span> 
<span class='line'>863</span> </span><span class="WHIT">	</span><span class="COMM">// Used for Chip Authentication</span><span class="WHIT">
<span class='line'>864</span> </span><span class="WHIT">	</span><span class="NAME">this.includeDPinAuthToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">paceinfo.version</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>865</span> 
<span class='line'>866</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">paceinfo.version</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">paceinfo.version</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parameterId</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">31</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>867</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pacedp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.PACEDPs</span><span class="PUNC">[</span><span class="NAME">parameterId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>868</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pacedp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>869</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown parameterId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">parameterId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for PACEDomainParameterInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>870</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>871</span> </span><span class="WHIT">		</span><span class="NAME">domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pacedp.domainParameter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>872</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>873</span> </span><span class="WHIT">		</span><span class="NAME">domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACEDomainParameterInfo.getStandardizedDomainParameter</span><span class="PUNC">(</span><span class="NAME">parameterId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>874</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>875</span> 
<span class='line'>876</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">pwd</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">pwd</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>877</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument pwd must be of type ByteString or Key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>878</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>879</span> 
<span class='line'>880</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">chat</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>881</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument chat must be of type ASN1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>882</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>883</span> 
<span class='line'>884</span> 
<span class='line'>885</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pace</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PACE</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">paceinfo.protocol</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">domainParameter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">paceinfo.version</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>886</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pwd</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="PUNC">(</span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>887</span> </span><span class="WHIT">		</span><span class="NAME">pace.setPassword</span><span class="PUNC">(</span><span class="NAME">pwd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>888</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>889</span> </span><span class="WHIT">		</span><span class="NAME">pace.setPACEKey</span><span class="PUNC">(</span><span class="NAME">pwd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>890</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>891</span> 
<span class='line'>892</span> </span><span class="WHIT">	</span><span class="COMM">// Manage SE</span><span class="WHIT">
<span class='line'>893</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>894</span> </span><span class="WHIT">	</span><span class="NAME">crt.append</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">paceinfo.protocol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>895</span> </span><span class="WHIT">	</span><span class="NAME">crt.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"8301"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>896</span> </span><span class="WHIT">	</span><span class="NAME">crt.append</span><span class="PUNC">(</span><span class="NAME">pwdid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>897</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chat</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>898</span> </span><span class="WHIT">		</span><span class="NAME">crt.append</span><span class="PUNC">(</span><span class="NAME">chat.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>899</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>900</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">certExt</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>901</span> </span><span class="WHIT">		</span><span class="NAME">crt.append</span><span class="PUNC">(</span><span class="NAME">certExt.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>902</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>903</span> 
<span class='line'>904</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xC1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">crt.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x63C2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x63C1</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>905</span> 
<span class='line'>906</span> </span><span class="WHIT">	</span><span class="COMM">// General Authenticate</span><span class="WHIT">
<span class='line'>907</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>908</span> 
<span class='line'>909</span> </span><span class="WHIT">	</span><span class="NAME">dadobin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>910</span> 
<span class='line'>911</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>912</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>913</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>914</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encryptedNonceDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>915</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">encryptedNonceDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>916</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encryptedNonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">encryptedNonceDO.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>917</span> 
<span class='line'>918</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Encrypted nonce: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">encryptedNonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>919</span> 
<span class='line'>920</span> </span><span class="WHIT">	</span><span class="NAME">pace.decryptNonce</span><span class="PUNC">(</span><span class="NAME">encryptedNonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>921</span> 
<span class='line'>922</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mappingData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pace.getMappingData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>923</span> 
<span class='line'>924</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mappingData</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>925</span> 
<span class='line'>926</span> </span><span class="WHIT">	</span><span class="NAME">dadobin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>927</span> 
<span class='line'>928</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>929</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>930</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>931</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mappingDataDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>932</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">mappingDataDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>933</span> 
<span class='line'>934</span> </span><span class="WHIT">	</span><span class="NAME">pace.performMapping</span><span class="PUNC">(</span><span class="NAME">mappingDataDO.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>935</span> 
<span class='line'>936</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pace.getEphemeralPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>937</span> 
<span class='line'>938</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>939</span> 
<span class='line'>940</span> </span><span class="WHIT">	</span><span class="NAME">dadobin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>941</span> 
<span class='line'>942</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>943</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>944</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>945</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyICC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>946</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ephemeralPublicKeyICC.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>947</span> 
<span class='line'>948</span> </span><span class="WHIT">	</span><span class="NAME">this.idPICC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyICC.value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ephemeralPublicKeyICC.value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>949</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"ID_PICC : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.idPICC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>950</span> 
<span class='line'>951</span> </span><span class="WHIT">	</span><span class="NAME">pace.performKeyAgreement</span><span class="PUNC">(</span><span class="NAME">ephemeralPublicKeyICC.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>952</span> 
<span class='line'>953</span> 
<span class='line'>954</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pace.calculateAuthenticationToken</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>955</span> 
<span class='line'>956</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x85</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>957</span> 
<span class='line'>958</span> </span><span class="WHIT">	</span><span class="NAME">dadobin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x63C2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x63C1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x63C0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6283</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>959</span> 
<span class='line'>960</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFF0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x63C0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>961</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.DEVICE_ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication failed: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" tries left"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>962</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>963</span> 
<span class='line'>964</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6300</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>965</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.DEVICE_ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>966</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>967</span> 
<span class='line'>968</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>969</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">dado</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>970</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>971</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>972</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>973</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authTokenDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>974</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">authTokenDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>975</span> 
<span class='line'>976</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>977</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cardo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>978</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cardo.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>979</span> </span><span class="WHIT">		</span><span class="NAME">this.lastCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">cardo.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>980</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>981</span> 
<span class='line'>982</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>983</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cardo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>984</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cardo.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x88</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>985</span> </span><span class="WHIT">		</span><span class="NAME">this.previousCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">cardo.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>986</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>987</span> 
<span class='line'>988</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>989</span> 
<span class='line'>990</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pace.verifyAuthenticationToken</span><span class="PUNC">(</span><span class="NAME">authTokenDO.value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>991</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Authentication token valid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>992</span> 
<span class='line'>993</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">symalgo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pace.getSymmetricAlgorithm</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>994</span> 
<span class='line'>995</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">symalgo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>996</span> </span><span class="WHIT">			</span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel.SSC_SYNC_ENC_POLICY</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>997</span> </span><span class="WHIT">			</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">pace.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>998</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">pace.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>999</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMACSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1000</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1001</span> </span><span class="WHIT">			</span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1002</span> </span><span class="WHIT">			</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">pace.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1003</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">pace.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1004</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMACSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1005</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1006</span> </span><span class="WHIT">		</span><span class="NAME">this.card.setCredential</span><span class="PUNC">(</span><span class="NAME">sm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1007</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1008</span> </span><span class="WHIT">	</span><span class="NAME">this.sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1009</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1010</span> 
<span class='line'>1011</span> 
<span class='line'>1012</span> 
<span class='line'>1013</span> </span><span class="COMM">/**
<span class='line'>1014</span>  * Return the trust anchor's CAR as indicated by the card in the PACE protocol
<span class='line'>1015</span>  *
<span class='line'>1016</span>  * @param {boolean} previous, true to return the previous CAR, if any
<span class='line'>1017</span>  * @return the CertificationAuthorityReference (CAR)
<span class='line'>1018</span>  * @type PublicKeyReference
<span class='line'>1019</span>  */</span><span class="WHIT">
<span class='line'>1020</span> </span><span class="NAME">EAC20.prototype.getTrustAnchorCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">previous</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1021</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">previous</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1022</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.previousCAR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1023</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1024</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.lastCAR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1025</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1026</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1027</span> 
<span class='line'>1028</span> 
<span class='line'>1029</span> 
<span class='line'>1030</span> </span><span class="COMM">/**
<span class='line'>1031</span>  * Submit a list of certificates to the card for verification
<span class='line'>1032</span>  *
<span class='line'>1033</span>  * @param {CVC[]} cvcchain the list of certificates, starting with link certificates, DVCA certificate and terminal certificate.
<span class='line'>1034</span>  */</span><span class="WHIT">
<span class='line'>1035</span> </span><span class="NAME">EAC20.prototype.verifyCertificateChain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cvcchain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1036</span> 
<span class='line'>1037</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvcchain.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1038</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1039</span> </span><span class="WHIT">		</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1040</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvcchain</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1041</span> 
<span class='line'>1042</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1043</span> 
<span class='line'>1044</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1045</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1046</span> 
<span class='line'>1047</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1048</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1049</span> 
<span class='line'>1050</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">cvcchain.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1051</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvcchain</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1052</span> 
<span class='line'>1053</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1054</span> 
<span class='line'>1055</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1056</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1057</span> 
<span class='line'>1058</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1059</span> 
<span class='line'>1060</span> </span><span class="WHIT">		</span><span class="COMM">// Extract value of 7F21</span><span class="WHIT">
<span class='line'>1061</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TLVList</span><span class="PUNC">(</span><span class="NAME">cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">TLV.EMV</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1062</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tl.index</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1063</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1064</span> 
<span class='line'>1065</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1066</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1067</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x2A</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xBE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1068</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1069</span> 
<span class='line'>1070</span> </span><span class="WHIT">	</span><span class="NAME">this.terminalCert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvcchain</span><span class="PUNC">[</span><span class="NAME">cvcchain.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1071</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1072</span> 
<span class='line'>1073</span> 
<span class='line'>1074</span> 
<span class='line'>1075</span> </span><span class="COMM">/**
<span class='line'>1076</span>  * Set the ID_PICC used for terminal authentication in EAC 1.11
<span class='line'>1077</span>  *
<span class='line'>1078</span>  * @param {ByteString} id
<span class='line'>1079</span>  * @param {Key} kmac the key Kmac
<span class='line'>1080</span>  */</span><span class="WHIT">
<span class='line'>1081</span> </span><span class="NAME">EAC20.prototype.setIDPICC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">idPICC</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1082</span> </span><span class="WHIT">	</span><span class="NAME">this.idPICC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">idPICC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1083</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1084</span> 
<span class='line'>1085</span> 
<span class='line'>1086</span> 
<span class='line'>1087</span> </span><span class="COMM">/**
<span class='line'>1088</span>  * Perform terminal authentication using a given terminal key
<span class='line'>1089</span>  *
<span class='line'>1090</span>  * @param {Key} termkey the terminal private key
<span class='line'>1091</span>  * @param {ByteString} auxdata auxiliary data (tag '67') to be included in terminal authentication
<span class='line'>1092</span>  * @param {Crypto} crypto optional alternative crypto provider (e.g. for key in SmartCard-HSM)
<span class='line'>1093</span>  */</span><span class="WHIT">
<span class='line'>1094</span> </span><span class="NAME">EAC20.prototype.performTerminalAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">termkey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">auxdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1095</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.performTerminalAuthenticationSetup</span><span class="PUNC">(</span><span class="NAME">auxdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1096</span> 
<span class='line'>1097</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1098</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1099</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1100</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">termkey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CVC.getSignatureMech</span><span class="PUNC">(</span><span class="NAME">this.terminalCert.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1101</span> 
<span class='line'>1102</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">termkey.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1103</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1104</span> </span><span class="WHIT">		</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">termkey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1106</span> </span><span class="WHIT">		</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1107</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1108</span> 
<span class='line'>1109</span> </span><span class="WHIT">	</span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.unwrapSignature</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1110</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Signature (Encoded):"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1111</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1112</span> 
<span class='line'>1113</span> </span><span class="WHIT">	</span><span class="NAME">this.performTerminalAuthenticationFinal</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1114</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1115</span> 
<span class='line'>1116</span> 
<span class='line'>1117</span> 
<span class='line'>1118</span> </span><span class="COMM">/**
<span class='line'>1119</span>  * Prepare terminal authentication by setting the required security environment
<span class='line'>1120</span>  *
<span class='line'>1121</span>  * @param {ByteString} auxdata auxiliary data (tag '67') to be included in terminal authentication
<span class='line'>1122</span>  */</span><span class="WHIT">
<span class='line'>1123</span> </span><span class="NAME">EAC20.prototype.performTerminalAuthenticationSetup</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">auxdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1124</span> 
<span class='line'>1125</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">idIFD</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ca.getCompressedPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1126</span> 
<span class='line'>1127</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1128</span> 
<span class='line'>1129</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.cakeyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1130</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.terminalCert.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1131</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1132</span> 
<span class='line'>1133</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.terminalCert.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1134</span> 
<span class='line'>1135</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.cakeyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1136</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">auxdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1137</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">auxdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1138</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1139</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x91</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">idIFD</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1140</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1141</span> 
<span class='line'>1142</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1143</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Manage SE data:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1144</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">msedata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1145</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1146</span> 
<span class='line'>1147</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">challenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1148</span> 
<span class='line'>1149</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1150</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.idPICC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1151</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">challenge</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1152</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">idIFD</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1153</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">auxdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1154</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">auxdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1155</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1156</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1157</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Signature Input:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1158</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">signatureInput</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1159</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1160</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1161</span> 
<span class='line'>1162</span> 
<span class='line'>1163</span> 
<span class='line'>1164</span> </span><span class="COMM">/**
<span class='line'>1165</span>  * Complete terminal authentication by submitting the signature to the card
<span class='line'>1166</span>  *
<span class='line'>1167</span>  * @param {ByteString} signature the signature as concatenation of r and s
<span class='line'>1168</span>  */</span><span class="WHIT">
<span class='line'>1169</span> </span><span class="NAME">EAC20.prototype.performTerminalAuthenticationFinal</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1170</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1171</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1172</span> 
<span class='line'>1173</span> 
<span class='line'>1174</span> 
<span class='line'>1175</span> </span><span class="COMM">/**
<span class='line'>1176</span>  * Perform chip authentication in version 1 and establish a secure channel
<span class='line'>1177</span>  *
<span class='line'>1178</span>  * @return true, if chip authentication was successfull
<span class='line'>1179</span>  * @type boolean
<span class='line'>1180</span>  */</span><span class="WHIT">
<span class='line'>1181</span> </span><span class="NAME">EAC20.prototype.performChipAuthenticationV1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1182</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"performChipAuthenticationV1() called"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1183</span> 
<span class='line'>1184</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1185</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1186</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1187</span> 
<span class='line'>1188</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cainfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.CAInfos</span><span class="PUNC">[</span><span class="NAME">keyid</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1189</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cainfo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1190</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1191</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1192</span> 
<span class='line'>1193</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">capuk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.CAPublicKeys</span><span class="PUNC">[</span><span class="NAME">keyid</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1194</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">capuk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1195</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationPublicKeyInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1196</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1197</span> 
<span class='line'>1198</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">capuk.domainParameter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1199</span> 
<span class='line'>1200</span> </span><span class="WHIT">	</span><span class="NAME">this.ca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cainfo.protocol</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">domainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1201</span> 
<span class='line'>1202</span> </span><span class="WHIT">	</span><span class="NAME">this.ca.generateEphemeralCAKeyPair</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1203</span> 
<span class='line'>1204</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cainfo.protocol.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1205</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1206</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x91</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.ca.getEphemeralPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1207</span> 
<span class='line'>1208</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cainfo.keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1209</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"8401"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1210</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">cainfo.keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1211</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1212</span> 
<span class='line'>1213</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1214</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Manage SE data:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1215</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">msedata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1216</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1217</span> 
<span class='line'>1218</span> </span><span class="WHIT">		</span><span class="NAME">this.ca.performKeyAgreement</span><span class="PUNC">(</span><span class="NAME">capuk.publicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1219</span> 
<span class='line'>1220</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Create DES based secure channel"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1221</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1222</span> </span><span class="WHIT">		</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1223</span> </span><span class="WHIT">		</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1224</span> </span><span class="WHIT">		</span><span class="NAME">sm.setSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1225</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1226</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1227</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cainfo.protocol</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1228</span> 
<span class='line'>1229</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cainfo.keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1230</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"8401"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1231</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">cainfo.keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1232</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1233</span> 
<span class='line'>1234</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1235</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Manage SE data:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1236</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">msedata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1237</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1238</span> 
<span class='line'>1239</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ca.getEphemeralPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1240</span> 
<span class='line'>1241</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1242</span> 
<span class='line'>1243</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1244</span> 
<span class='line'>1245</span> </span><span class="WHIT">		</span><span class="NAME">this.ca.performKeyAgreement</span><span class="PUNC">(</span><span class="NAME">capuk.publicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1246</span> 
<span class='line'>1247</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Create AES based secure channel"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1248</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel.SSC_SYNC_ENC_POLICY</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1249</span> </span><span class="WHIT">		</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1250</span> </span><span class="WHIT">		</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1251</span> </span><span class="WHIT">		</span><span class="NAME">sm.setMACSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1252</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1253</span> 
<span class='line'>1254</span> </span><span class="WHIT">	</span><span class="NAME">this.card.setCredential</span><span class="PUNC">(</span><span class="NAME">sm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1255</span> </span><span class="WHIT">	</span><span class="NAME">this.sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1256</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1257</span> 
<span class='line'>1258</span> 
<span class='line'>1259</span> 
<span class='line'>1260</span> </span><span class="COMM">/**
<span class='line'>1261</span>  * Prepare chip authentication by generating the ephemeral key pair
<span class='line'>1262</span>  *
<span class='line'>1263</span>  * @param {Number} keyId the key identifier to be used for chip authentication
<span class='line'>1264</span>  */</span><span class="WHIT">
<span class='line'>1265</span> </span><span class="NAME">EAC20.prototype.prepareChipAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1266</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"prepareChipAuthentication() called"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1267</span> 
<span class='line'>1268</span> </span><span class="WHIT">	</span><span class="NAME">this.cakeyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1269</span> 
<span class='line'>1270</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cainfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.CAInfos</span><span class="PUNC">[</span><span class="NAME">keyId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1271</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cainfo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1272</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1273</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1274</span> 
<span class='line'>1275</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cadp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.CADPs</span><span class="PUNC">[</span><span class="NAME">keyId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1276</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cadp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1277</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationDomainParameterInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1278</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1279</span> </span><span class="WHIT">	</span><span class="NAME">this.cadp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cadp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1280</span> 
<span class='line'>1281</span> </span><span class="WHIT">	</span><span class="NAME">this.ca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cainfo.protocol</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cadp.domainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1282</span> 
<span class='line'>1283</span> </span><span class="WHIT">	</span><span class="NAME">this.ca.includeDPinAuthToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.includeDPinAuthToken</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1284</span> </span><span class="WHIT">	</span><span class="NAME">this.ca.generateEphemeralCAKeyPair</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1285</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1286</span> 
<span class='line'>1287</span> 
<span class='line'>1288</span> 
<span class='line'>1289</span> </span><span class="COMM">/**
<span class='line'>1290</span>  * Perform chip authentication in version 2 and establish a secure channel
<span class='line'>1291</span>  *
<span class='line'>1292</span>  * @return true, if chip authentication was successfull
<span class='line'>1293</span>  * @type boolean
<span class='line'>1294</span>  */</span><span class="WHIT">
<span class='line'>1295</span> </span><span class="NAME">EAC20.prototype.performChipAuthenticationV2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1296</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"performChipAuthenticationV2() called"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1297</span> 
<span class='line'>1298</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cainfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.CAInfos</span><span class="PUNC">[</span><span class="NAME">this.cakeyId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1299</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cainfo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1300</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.cakeyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1301</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1302</span> 
<span class='line'>1303</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.ca.algo</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">cainfo.protocol</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1304</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Special handling for ChipAuthenticationInfo in EF.CardSecurity overwriting ChipAuthenticationInfo in EF.CardAccess"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1305</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Protocol in EF.CardAccess: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.ca.algo</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1306</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Protocol is EF.CardSecurity: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cainfo.protocol</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1307</span> </span><span class="WHIT">		</span><span class="NAME">this.ca.algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cainfo.protocol</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1308</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1309</span> 
<span class='line'>1310</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">capuk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.CAPublicKeys</span><span class="PUNC">[</span><span class="NAME">this.cakeyId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1311</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">capuk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1312</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"EAC20"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.cakeyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" for ChipAuthenticationPublicKeyInfo"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1313</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1314</span> 
<span class='line'>1315</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1316</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cainfo.protocol</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1317</span> 
<span class='line'>1318</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cainfo.keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1319</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"8401"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1320</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">cainfo.keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1321</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1322</span> 
<span class='line'>1323</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1324</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Manage SE data:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1325</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">msedata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1326</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1327</span> 
<span class='line'>1328</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ca.getEphemeralPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1329</span> 
<span class='line'>1330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1331</span> 
<span class='line'>1332</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dadobin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1333</span> 
<span class='line'>1334</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1335</span> 
<span class='line'>1336</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1337</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1338</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1339</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nonceDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1340</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">nonceDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1341</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nonceDO.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1342</span> 
<span class='line'>1343</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authTokenDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1344</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">authTokenDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1345</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">authTokenDO.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1346</span> 
<span class='line'>1347</span> </span><span class="WHIT">	</span><span class="NAME">this.ca.performKeyAgreement</span><span class="PUNC">(</span><span class="NAME">capuk.publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1348</span> 
<span class='line'>1349</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ca.verifyAuthenticationToken</span><span class="PUNC">(</span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1350</span> 
<span class='line'>1351</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1352</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Authentication token valid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1353</span> 
<span class='line'>1354</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.ca.algo.equals</span><span class="PUNC">(</span><span class="NAME">ChipAuthentication.id_CA_ECDH_3DES_CBC_CBC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1355</span> </span><span class="WHIT">			</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Create DES based secure channel"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1356</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1357</span> </span><span class="WHIT">			</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1358</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1359</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMACSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1360</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1361</span> </span><span class="WHIT">			</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Create AES based secure channel"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1362</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel.SSC_SYNC_ENC_POLICY</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1363</span> </span><span class="WHIT">			</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1364</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">this.ca.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1365</span> </span><span class="WHIT">			</span><span class="NAME">sm.setMACSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1366</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1367</span> </span><span class="WHIT">		</span><span class="NAME">this.card.setCredential</span><span class="PUNC">(</span><span class="NAME">sm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1368</span> </span><span class="WHIT">		</span><span class="NAME">this.sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1369</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1370</span> </span><span class="WHIT">		</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Authentication token invalid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1371</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1372</span> 
<span class='line'>1373</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1374</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1375</span> 
<span class='line'>1376</span> 
<span class='line'>1377</span> 
<span class='line'>1378</span> </span><span class="COMM">/**
<span class='line'>1379</span>  * Verify authenticated auxiliary data
<span class='line'>1380</span>  *
<span class='line'>1381</span>  * @param {ByteString} oid the object identifier for the auxiliary data provided during terminal authentication
<span class='line'>1382</span>  * @return true, if auxiliary data was verified
<span class='line'>1383</span>  * @type boolean
<span class='line'>1384</span>  */</span><span class="WHIT">
<span class='line'>1385</span> </span><span class="NAME">EAC20.prototype.verifyAuxiliaryData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1386</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1387</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="NUMB">0x6300</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1388</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1389</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1390</span> 
<span class='line'>1391</span> 
<span class='line'>1392</span> 
<span class='line'>1393</span> </span><span class="COMM">/**
<span class='line'>1394</span>  * Perform chip authentication and establish a secure channel
<span class='line'>1395</span>  *
<span class='line'>1396</span>  * @param {Number} keyid the key identifier (only required for ChipAuthentication in version 1)
<span class='line'>1397</span>  * @return true, if chip authentication was successfull
<span class='line'>1398</span>  * @type boolean
<span class='line'>1399</span>  */</span><span class="WHIT">
<span class='line'>1400</span> </span><span class="NAME">EAC20.prototype.performChipAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1401</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.cakeyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1402</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.performChipAuthenticationV2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1403</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1404</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.performChipAuthenticationV1</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1405</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1406</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1407</span> 
<span class='line'>1408</span> 
<span class='line'>1409</span> 
<span class='line'>1410</span> </span><span class="COMM">/**
<span class='line'>1411</span>  * Perform restricted identification
<span class='line'>1412</span>  *
<span class='line'>1413</span>  * @param {Number} keyId restricted identification key identifier
<span class='line'>1414</span>  * @param {ByteString} sectorPublicKey the sector public key data
<span class='line'>1415</span>  * @param {Number} sectorPublicKeyIndex optional argument that allows to select a specific sector public key in the terminal certificate
<span class='line'>1416</span>  * @return the sector specific identifier
<span class='line'>1417</span>  * @type ByteString
<span class='line'>1418</span>  */</span><span class="WHIT">
<span class='line'>1419</span> </span><span class="NAME">EAC20.prototype.performRestrictedIdentification</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sectorPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sectorPublicKeyIndex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1420</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1421</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RI-ECDH-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1422</span> 
<span class='line'>1423</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"8401"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1424</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1425</span> 
<span class='line'>1426</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1427</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Manage SE data:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1428</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">msedata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1429</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msedata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1430</span> 
<span class='line'>1431</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1432</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sectorPublicKeyIndex</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1433</span> </span><span class="WHIT">		</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sectorPublicKeyIndex</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1434</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1435</span> 
<span class='line'>1436</span> </span><span class="WHIT">	</span><span class="COMM">// ToDo change to sectorPublicKey.value</span><span class="WHIT">
<span class='line'>1437</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">tag</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sectorPublicKey.bytes</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1438</span> 
<span class='line'>1439</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"GA Input: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1440</span> 
<span class='line'>1441</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dadobin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1442</span> 
<span class='line'>1443</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1444</span> 
<span class='line'>1445</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1446</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1447</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1448</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nonceDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1449</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">nonceDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">nonceDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1450</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sectorId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nonceDO.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1451</span> 
<span class='line'>1452</span> </span><span class="WHIT">	</span><span class="NAME">this.log</span><span class="PUNC">(</span><span class="STRN">"Sector specific identifier: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sectorId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1453</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">sectorId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1454</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1455</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview EAC2CVCertificateGenerator - Simple CV certificate generator class
<span class='line'> 25</span>  * based on "Advanced Security Mechanisms for Machine Readable Travel Documents", Version 2.0
<span class='line'> 26</span>  */</span><span class="WHIT">
<span class='line'> 27</span> 
<span class='line'> 28</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> </span><span class="COMM">/**
<span class='line'> 35</span>  * Define a generator object for CV certificates
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @class Class implementing a generator for CV certificates according to EAC 1.1 and EAC 2.0 specifications.
<span class='line'> 38</span>  *
<span class='line'> 39</span>  * @constructor
<span class='line'> 40</span>  * @param {Crypto} crypto the crypto provider to be used
<span class='line'> 41</span>  */</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="NAME">exports.EAC2CVCertificateGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> 
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="COMM">/**
<span class='line'> 50</span>  * Convert x/y coordinates to uncompressed format
<span class='line'> 51</span>  *
<span class='line'> 52</span>  * @param {ByteString} x the x-coordinate of the point
<span class='line'> 53</span>  * @param {ByteString} y the y-coordinate of the point
<span class='line'> 54</span>  * @return the point in uncompressed format
<span class='line'> 55</span>  * @type ByteString
<span class='line'> 56</span>  */</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="NAME">EAC2CVCertificateGenerator.encodeUncompressedECPoint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> 
<span class='line'> 61</span> </span><span class="WHIT">	</span><span class="COMM">// uncompressed encoding</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> 
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> </span><span class="COMM">/**
<span class='line'> 72</span>  * Decode x/y coordinates from uncompressed format
<span class='line'> 73</span>  *
<span class='line'> 74</span>  * @param {ByteString} uncompressedPoint the uncompressed point
<span class='line'> 75</span>  * @return the x-/y-coordinate of the point
<span class='line'> 76</span>  * @type ByteString
<span class='line'> 77</span>  */</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="NAME">EAC2CVCertificateGenerator.decodeUncompressedECPoint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">uncompressedPoint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="COMM">// Determine the size of the coordinates ignoring the indicator byte '04'</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">uncompressedPoint.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> 
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> 
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">uncompressedPoint.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">yValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">uncompressedPoint.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> 
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">:</span><span class="NAME">xValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">:</span><span class="NAME">yValue</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 90</span> 
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="COMM">/**
<span class='line'> 94</span>  * Convert integer to fixed length string with leading zeros.
<span class='line'> 95</span>  *
<span class='line'> 96</span>  * @private
<span class='line'> 97</span>  * @param {Number} value the value to convert to a string.
<span class='line'> 98</span>  * @param {Number} digits the number of digits in output string. Must be &lt;= 20.
<span class='line'> 99</span>  * @return the 0-padded string
<span class='line'>100</span>  * @type String
<span class='line'>101</span>  */</span><span class="WHIT">
<span class='line'>102</span> </span><span class="NAME">EAC2CVCertificateGenerator.itos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digits</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Digits must be &lt;= 20"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">	</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0000000000000000000"</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">19</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>110</span> 
<span class='line'>111</span> 
<span class='line'>112</span> 
<span class='line'>113</span> </span><span class="COMM">/**
<span class='line'>114</span>  * Convert date to string with format YYMMDD.
<span class='line'>115</span>  *
<span class='line'>116</span>  * @param {Date} d the date object.
<span class='line'>117</span>  * @return the date/time string.
<span class='line'>118</span>  * @type String
<span class='line'>119</span>  */</span><span class="WHIT">
<span class='line'>120</span> </span><span class="NAME">EAC2CVCertificateGenerator.dtos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator.itos</span><span class="PUNC">(</span><span class="NAME">d.getFullYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">			</span><span class="NAME">EAC2CVCertificateGenerator.itos</span><span class="PUNC">(</span><span class="NAME">d.getMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">			</span><span class="NAME">EAC2CVCertificateGenerator.itos</span><span class="PUNC">(</span><span class="NAME">d.getDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>126</span> 
<span class='line'>127</span> 
<span class='line'>128</span> 
<span class='line'>129</span> </span><span class="COMM">/**
<span class='line'>130</span>  * Set the profile identifier
<span class='line'>131</span>  *
<span class='line'>132</span>  * @param {Number} profileID the profile identifier
<span class='line'>133</span>  */</span><span class="WHIT">
<span class='line'>134</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setProfileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">profileID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="NAME">this.profileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">profileID</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>137</span> 
<span class='line'>138</span> 
<span class='line'>139</span> 
<span class='line'>140</span> </span><span class="COMM">/**
<span class='line'>141</span>  * Set the certification authority reference
<span class='line'>142</span>  *
<span class='line'>143</span>  * @param {String} CAR the CAR value
<span class='line'>144</span>  * @param {ByteString} CAR the CAR value
<span class='line'>145</span>  * @param {PublicKeyReference} CAR the CAR value
<span class='line'>146</span>  */</span><span class="WHIT">
<span class='line'>147</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">CAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CAR</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="NAME">this.CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CAR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CAR</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="NAME">this.CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CAR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="NAME">this.CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">CAR.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> 
<span class='line'>157</span> 
<span class='line'>158</span> 
<span class='line'>159</span> </span><span class="COMM">/**
<span class='line'>160</span>  * Set the certificate holder reference
<span class='line'>161</span>  *
<span class='line'>162</span>  * @param {String} CHR the CHR value
<span class='line'>163</span>  * @param {ByteString} CHR the CHR value
<span class='line'>164</span>  * @param {PublicKeyReference} CHR the CHR value
<span class='line'>165</span>  */</span><span class="WHIT">
<span class='line'>166</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">CHR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CHR</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">		</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CHR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CHR</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">		</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CHR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">		</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">CHR.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> 
<span class='line'>177</span> 
<span class='line'>178</span> </span><span class="COMM">/**
<span class='line'>179</span>  * Set the effective date
<span class='line'>180</span>  *
<span class='line'>181</span>  * @param {String} effectiveDate the effective date in the format YYMMDD
<span class='line'>182</span>  * @param {Date} effectiveDate the effective date as Date object
<span class='line'>183</span>  */</span><span class="WHIT">
<span class='line'>184</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setEffectiveDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">effectiveDate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">effectiveDate</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">		</span><span class="NAME">this.effectiveDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator.dtos</span><span class="PUNC">(</span><span class="NAME">effectiveDate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="NAME">this.effectiveDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">effectiveDate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>190</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> </span><span class="COMM">/**
<span class='line'>195</span>  * Set the expiry date
<span class='line'>196</span>  *
<span class='line'>197</span>  * @param {String} expiryDate the expiry date in the format YYMMDD
<span class='line'>198</span>  * @param {Date} expiryDate the expiry date as Date object
<span class='line'>199</span>  */</span><span class="WHIT">
<span class='line'>200</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setExpiryDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">expiryDate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">expiryDate</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">		</span><span class="NAME">this.expiryDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator.dtos</span><span class="PUNC">(</span><span class="NAME">expiryDate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="NAME">this.expiryDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">expiryDate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>207</span> 
<span class='line'>208</span> 
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="COMM">/**
<span class='line'>211</span>  * Set the object identifier of the authorization template for the generated certificate
<span class='line'>212</span>  *
<span class='line'>213</span>  * @param {ByteString} oid the object identifier for the chat
<span class='line'>214</span>  */</span><span class="WHIT">
<span class='line'>215</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setChatOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="NAME">this.chatOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>218</span> 
<span class='line'>219</span> 
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="COMM">/**
<span class='line'>222</span>  * Set the authorization level of the authorization template for the generated certificate
<span class='line'>223</span>  *
<span class='line'>224</span>  * @param {ByteString} authLevel the encoded authorization level
<span class='line'>225</span>  */</span><span class="WHIT">
<span class='line'>226</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setChatAuthorizationLevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">authLevel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">	</span><span class="NAME">this.chatAuthorizationLevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">authLevel</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>229</span> 
<span class='line'>230</span> 
<span class='line'>231</span> 
<span class='line'>232</span> </span><span class="COMM">/**
<span class='line'>233</span>  * Set the algorithm identifier for terminal authentication
<span class='line'>234</span>  *
<span class='line'>235</span>  * @param {ByteString} oid the object identifier as specified in appendix A.6.4
<span class='line'>236</span>  */</span><span class="WHIT">
<span class='line'>237</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setTAAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="NAME">this.taOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> 
<span class='line'>242</span> 
<span class='line'>243</span> </span><span class="COMM">/**
<span class='line'>244</span>  * Set some additional extensions
<span class='line'>245</span>  *
<span class='line'>246</span>  * @param {Array of ASN.1 objects} extensions array containing the ASN.1 encoded extensions for the certificate
<span class='line'>247</span>  */</span><span class="WHIT">
<span class='line'>248</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setExtensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">extensions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>251</span> 
<span class='line'>252</span> 
<span class='line'>253</span> 
<span class='line'>254</span> </span><span class="COMM">/**
<span class='line'>255</span>  * Set the public key to be included in the certificate
<span class='line'>256</span>  *
<span class='line'>257</span>  * @param {Key} publicKey the public key object to be certified
<span class='line'>258</span>  */</span><span class="WHIT">
<span class='line'>259</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="NAME">this.publicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>262</span> 
<span class='line'>263</span> 
<span class='line'>264</span> 
<span class='line'>265</span> </span><span class="COMM">/**
<span class='line'>266</span>  * Set whether to include domain parameters in the certificate or not
<span class='line'>267</span>  *
<span class='line'>268</span>  * @param {Boolean} value the flag indicator
<span class='line'>269</span>  */</span><span class="WHIT">
<span class='line'>270</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.setIncludeDomainParameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="NAME">this.includeDomainParameters</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>273</span> 
<span class='line'>274</span> 
<span class='line'>275</span> 
<span class='line'>276</span> </span><span class="COMM">/**
<span class='line'>277</span>  * Internal functions for the generation of a certificate
<span class='line'>278</span>  * @private
<span class='line'>279</span>  */</span><span class="WHIT">
<span class='line'>280</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certification Authority Reference"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.CAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> 
<span class='line'>285</span> 
<span class='line'>286</span> 
<span class='line'>287</span> </span><span class="COMM">/**
<span class='line'>288</span>  * Internal functions for the generation of a certificate
<span class='line'>289</span>  * @private
<span class='line'>290</span>  */</span><span class="WHIT">
<span class='line'>291</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certification Holder Reference"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.CHR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>295</span> 
<span class='line'>296</span> 
<span class='line'>297</span> 
<span class='line'>298</span> </span><span class="COMM">/**
<span class='line'>299</span>  * Internal functions for the generation of a certificate
<span class='line'>300</span>  * @private
<span class='line'>301</span>  */</span><span class="WHIT">
<span class='line'>302</span> </span><span class="NAME">EAC2CVCertificateGenerator.convertDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">temp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">date</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">singleByte</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> 
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">temp.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">temp.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">0x30</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>311</span> 
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>314</span> 
<span class='line'>315</span> 
<span class='line'>316</span> 
<span class='line'>317</span> </span><span class="COMM">/**
<span class='line'>318</span>  * Internal functions for the generation of a certificate
<span class='line'>319</span>  * @private
<span class='line'>320</span>  */</span><span class="WHIT">
<span class='line'>321</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getEffectiveDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Effective Date"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F25</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">			</span><span class="NAME">EAC2CVCertificateGenerator.convertDate</span><span class="PUNC">(</span><span class="NAME">this.effectiveDate</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>326</span> 
<span class='line'>327</span> 
<span class='line'>328</span> 
<span class='line'>329</span> </span><span class="COMM">/**
<span class='line'>330</span>  * Internal functions for the generation of a certificate
<span class='line'>331</span>  * @private
<span class='line'>332</span>  */</span><span class="WHIT">
<span class='line'>333</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getExpiryDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Expiration Date"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F24</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT">			</span><span class="NAME">EAC2CVCertificateGenerator.convertDate</span><span class="PUNC">(</span><span class="NAME">this.expiryDate</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>338</span> 
<span class='line'>339</span> 
<span class='line'>340</span> 
<span class='line'>341</span> </span><span class="COMM">/**
<span class='line'>342</span>  * Internal functions for the generation of a certificate
<span class='line'>343</span>  * @private
<span class='line'>344</span>  */</span><span class="WHIT">
<span class='line'>345</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getCHAT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Holder Authorization Template"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F4C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Object Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chatOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authLevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Authorization Level"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x53</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chatAuthorizationLevel</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> 
<span class='line'>351</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">authLevel</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> 
<span class='line'>354</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>356</span> 
<span class='line'>357</span> 
<span class='line'>358</span> 
<span class='line'>359</span> </span><span class="COMM">/**
<span class='line'>360</span>  * Strips leading zeros of a ByteString
<span class='line'>361</span>  *
<span class='line'>362</span>  * @param {ByteString} value the ByteString value
<span class='line'>363</span>  * @return the stripped ByteString object, may be an empty ByteString
<span class='line'>364</span>  * @type ByteString
<span class='line'>365</span>  */</span><span class="WHIT">
<span class='line'>366</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.stripLeadingZeros</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> 
<span class='line'>370</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>372</span> 
<span class='line'>373</span> 
<span class='line'>374</span> 
<span class='line'>375</span> </span><span class="COMM">/**
<span class='line'>376</span>  * Get the encoded public key including domain parameters
<span class='line'>377</span>  *
<span class='line'>378</span>  * @private
<span class='line'>379</span>  */</span><span class="WHIT">
<span class='line'>380</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>381</span> 
<span class='line'>382</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>383</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Object Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.taOID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>384</span> 
<span class='line'>385</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>386</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.includeDomainParameters</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>387</span> 
<span class='line'>388</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Prime Modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"First coefficient a"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>390</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Second coefficient b"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>391</span> 
<span class='line'>392</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Base Point G"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator.encodeUncompressedECPoint</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> 
<span class='line'>394</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Order of the base point"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>396</span> 
<span class='line'>397</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Point y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator.encodeUncompressedECPoint</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> 
<span class='line'>399</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.includeDomainParameters</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Cofactor f"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Composite Modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Exponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>406</span> 
<span class='line'>407</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>409</span> 
<span class='line'>410</span> 
<span class='line'>411</span> 
<span class='line'>412</span> </span><span class="COMM">/**
<span class='line'>413</span>  * Internal functions for the generation of a certificate
<span class='line'>414</span>  * @private
<span class='line'>415</span>  */</span><span class="WHIT">
<span class='line'>416</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getProfileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>417</span> 
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.profileIdentifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> 
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Profile Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F29</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>424</span> 
<span class='line'>425</span> 
<span class='line'>426</span> 
<span class='line'>427</span> </span><span class="COMM">/**
<span class='line'>428</span>  * Internal functions for the generation of a certificate
<span class='line'>429</span>  * @private
<span class='line'>430</span>  */</span><span class="WHIT">
<span class='line'>431</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getExtensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x65</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.extensions.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>437</span> 
<span class='line'>438</span> 
<span class='line'>439</span> 
<span class='line'>440</span> </span><span class="COMM">/**
<span class='line'>441</span>  * Internal functions for the generation of a certificate
<span class='line'>442</span>  * @private
<span class='line'>443</span>  */</span><span class="WHIT">
<span class='line'>444</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.getCertificateBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>445</span> 
<span class='line'>446</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Body"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F4E</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> 
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getProfileIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>449</span> 
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> 
<span class='line'>452</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>453</span> 
<span class='line'>454</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> 
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getCHAT</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> 
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getEffectiveDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> 
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getExpiryDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> 
<span class='line'>462</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.extensions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getExtensions</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>465</span> 
<span class='line'>466</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>468</span> 
<span class='line'>469</span> 
<span class='line'>470</span> 
<span class='line'>471</span> </span><span class="COMM">/**
<span class='line'>472</span>  * Generate a certificate based on the parameter set using the setter methods.
<span class='line'>473</span>  *
<span class='line'>474</span>  * @param {Key} signingKey the key to be used for signing the certificate
<span class='line'>475</span>  * @param {ByteString} taOID the object identifier associated with the signing key
<span class='line'>476</span>  * @return the CVC certificate
<span class='line'>477</span>  * @type CVC
<span class='line'>478</span>  */</span><span class="WHIT">
<span class='line'>479</span> </span><span class="NAME">EAC2CVCertificateGenerator.prototype.generateCVCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">signingKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>480</span> 
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CV Certificate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F21</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> 
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificateBody</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>484</span> 
<span class='line'>485</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT">		</span><span class="NAME">outertaOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.taOID</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>488</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.getSignatureMech</span><span class="PUNC">(</span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">signingKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">body.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>490</span> 
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signingKey.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Signature"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F37</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CVC.unwrapSignature</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>495</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Signature"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F37</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>497</span> 
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="NAME">certificate.add</span><span class="PUNC">(</span><span class="NAME">body</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>499</span> 
<span class='line'>500</span> </span><span class="WHIT">	</span><span class="NAME">certificate.add</span><span class="PUNC">(</span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> 
<span class='line'>502</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>503</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>504</span> 
<span class='line'>505</span> 
<span class='line'>506</span> 
<span class='line'>507</span> </span><span class="NAME">EAC2CVCertificateGenerator.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>508</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>509</span> </span><span class="WHIT">		</span><span class="NAME">generator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">EAC2CVCertificateGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> 
<span class='line'>511</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"decvca00000"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> </span><span class="WHIT">		</span><span class="NAME">generator.setCAR</span><span class="PUNC">(</span><span class="NAME">CAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> 
<span class='line'>514</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"decvca00000"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">		</span><span class="NAME">generator.setCHR</span><span class="PUNC">(</span><span class="NAME">CHR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> 
<span class='line'>517</span> </span><span class="WHIT">		</span><span class="NAME">generator.setEffectiveDate</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>518</span> 
<span class='line'>519</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">notAfter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"110225"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> </span><span class="WHIT">		</span><span class="NAME">generator.setExpiryDate</span><span class="PUNC">(</span><span class="NAME">notAfter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span> 
<span class='line'>522</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chatOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0.4.0.127.0.7.3.1.2.1"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// inspection system</span><span class="WHIT">
<span class='line'>523</span> </span><span class="WHIT">		</span><span class="NAME">generator.setChatOID</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">chatOID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> 
<span class='line'>525</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chatAuth</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"E3"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// CVCA, read access to eID, DG3, DG4</span><span class="WHIT">
<span class='line'>526</span> 
<span class='line'>527</span> </span><span class="WHIT">		</span><span class="NAME">generator.setChatAuthorizationLevel</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">chatAuth</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>528</span> 
<span class='line'>529</span> </span><span class="WHIT">		</span><span class="NAME">generator.setPublicKey</span><span class="PUNC">(</span><span class="NAME">pubKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>530</span> 
<span class='line'>531</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">profileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>532</span> 
<span class='line'>533</span> </span><span class="WHIT">		</span><span class="NAME">generator.setProfileIdentifier</span><span class="PUNC">(</span><span class="NAME">profileIdentifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>534</span> 
<span class='line'>535</span> </span><span class="WHIT">		</span><span class="NAME">generator.setTAAlgorithmIdentifier</span><span class="PUNC">(</span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> 
<span class='line'>537</span> </span><span class="WHIT">		</span><span class="COMM">//var extensions = new Array();</span><span class="WHIT">
<span class='line'>538</span> </span><span class="WHIT">		</span><span class="COMM">//extensions[0] = new ASN1("ext1", ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX));</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT">		</span><span class="COMM">//extensions[1] = new ASN1("ext2", ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX));</span><span class="WHIT">
<span class='line'>540</span> 
<span class='line'>541</span> </span><span class="WHIT">		</span><span class="COMM">//generator.setExtensions(extensions);</span><span class="WHIT">
<span class='line'>542</span> 
<span class='line'>543</span> </span><span class="WHIT">		</span><span class="NAME">generator.setIncludeDomainParameters</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>544</span> 
<span class='line'>545</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">generator.generateCVCertificate</span><span class="PUNC">(</span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>546</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>547</span> 
<span class='line'>548</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>549</span> </span><span class="WHIT">		</span><span class="NAME">cvc.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>550</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>551</span> 
<span class='line'>552</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>553</span> 
<span class='line'>554</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>557</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256t1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256t1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> 
<span class='line'>562</span> </span><span class="WHIT">	</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> 
<span class='line'>564</span> 
<span class='line'>565</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>568</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>569</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"secp521r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>570</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"secp521r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span> 
<span class='line'>573</span> </span><span class="WHIT">	</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> 
<span class='line'>575</span> 
<span class='line'>576</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setSize</span><span class="PUNC">(</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>581</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>582</span> 
<span class='line'>583</span> </span><span class="WHIT">	</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>584</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>585</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2010 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of Simple CV request generator based on
<span class='line'> 25</span>  * TR-03110 "Advanced Security Mechanisms for Machine Readable Travel Documents", Version 2.0
<span class='line'> 26</span>  *
<span class='line'> 27</span>  */</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="COMM">/**
<span class='line'> 36</span>  * Constructor for request generator
<span class='line'> 37</span>  *
<span class='line'> 38</span>  * @class Class implementing a generator for CVC requests
<span class='line'> 39</span>  *
<span class='line'> 40</span>  * @constructor
<span class='line'> 41</span>  * @param {Crypto} Crypto object to use
<span class='line'> 42</span>  */</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> </span><span class="NAME">exports.EAC2CVRequestGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> 
<span class='line'> 50</span> 
<span class='line'> 51</span> </span><span class="COMM">/*
<span class='line'> 52</span>  * Convert x/y coordinates to uncompressed format
<span class='line'> 53</span>  *
<span class='line'> 54</span>  * x/y - coordinates of EC point
<span class='line'> 55</span>  *
<span class='line'> 56</span>  * return ByteString containing compressed format
<span class='line'> 57</span>  *
<span class='line'> 58</span>  * TODO: Move to ECUtils
<span class='line'> 59</span>  */</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="NAME">EAC2CVRequestGenerator.encodeUncompressedECPoint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 61</span> 
<span class='line'> 62</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> </span><span class="WHIT">    </span><span class="COMM">// uncompressed encoding</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">    </span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">    </span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">    </span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="WHIT">    </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 71</span> 
<span class='line'> 72</span> 
<span class='line'> 73</span> 
<span class='line'> 74</span> </span><span class="COMM">/**
<span class='line'> 75</span>  * Strips leading zeros of a ByteString
<span class='line'> 76</span>  *
<span class='line'> 77</span>  * @param {ByteString} value the ByteString value
<span class='line'> 78</span>  * @return the stripped ByteString object, may be an empty ByteString
<span class='line'> 79</span>  * @type ByteString
<span class='line'> 80</span>  *
<span class='line'> 81</span>  * TODO: Move to Utils
<span class='line'> 82</span>  */</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> 
<span class='line'> 87</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 89</span> 
<span class='line'> 90</span> 
<span class='line'> 91</span> 
<span class='line'> 92</span> </span><span class="COMM">/**
<span class='line'> 93</span>  * Set the public key that should be encoded within the request
<span class='line'> 94</span>  *
<span class='line'> 95</span>  * @param {Key} publicKey Public Key
<span class='line'> 96</span>  */</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.setPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">	</span><span class="NAME">this.publicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>100</span> 
<span class='line'>101</span> 
<span class='line'>102</span> 
<span class='line'>103</span> </span><span class="COMM">/**
<span class='line'>104</span>  * Set the certficate holder reference (CHR) for the request
<span class='line'>105</span>  *
<span class='line'>106</span>  * @param {String} chr CHR for the request
<span class='line'>107</span>  */</span><span class="WHIT">
<span class='line'>108</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.setCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">		</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chr</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">		</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">		</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>116</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>117</span> 
<span class='line'>118</span> 
<span class='line'>119</span> 
<span class='line'>120</span> </span><span class="COMM">/**
<span class='line'>121</span>  * Reset the current generator object
<span class='line'>122</span>  *
<span class='line'>123</span>  * TODO: Implement me
<span class='line'>124</span>  */</span><span class="WHIT">
<span class='line'>125</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.reset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>127</span> 
<span class='line'>128</span> 
<span class='line'>129</span> 
<span class='line'>130</span> </span><span class="COMM">/**
<span class='line'>131</span>  * Set the certificate profile identifier (CPI) for the request
<span class='line'>132</span>  *
<span class='line'>133</span>  * @param {Number} profileID CPI for the request
<span class='line'>134</span>  */</span><span class="WHIT">
<span class='line'>135</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.setProfileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">profileID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="NAME">this.profileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">profileID</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>138</span> 
<span class='line'>139</span> 
<span class='line'>140</span> 
<span class='line'>141</span> </span><span class="COMM">/**
<span class='line'>142</span>  * Set the certficate authorization reference (CAR) for the request
<span class='line'>143</span>  *
<span class='line'>144</span>  * The usage of this method is optional - if no CAR is set, there will be no
<span class='line'>145</span>  * "inner" CAR included within the certficate request
<span class='line'>146</span>  *
<span class='line'>147</span>  * @param {String} car CAR for the request
<span class='line'>148</span>  */</span><span class="WHIT">
<span class='line'>149</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.setCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="NAME">this.CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="NAME">this.CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">car.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">		</span><span class="NAME">this.CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">car.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>157</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>158</span> 
<span class='line'>159</span> 
<span class='line'>160</span> 
<span class='line'>161</span> </span><span class="COMM">/**
<span class='line'>162</span>  * Set the extension values that should be included within the request
<span class='line'>163</span>  *
<span class='line'>164</span>  * @param {ByteString[]} extensions Array of DER-encoded extensions
<span class='line'>165</span>  */</span><span class="WHIT">
<span class='line'>166</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.setExtensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">extensions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>169</span> 
<span class='line'>170</span> 
<span class='line'>171</span> 
<span class='line'>172</span> </span><span class="COMM">/**
<span class='line'>173</span>  * Set the object identifier that should be included in the public key domain parameters
<span class='line'>174</span>  *
<span class='line'>175</span>  * @param {ByteString} oid Object identifier as specified in appendix A.6.4
<span class='line'>176</span>  */</span><span class="WHIT">
<span class='line'>177</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.setTAAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="NAME">this.taOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>180</span> 
<span class='line'>181</span> 
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="COMM">/**
<span class='line'>184</span>  * Get the CAR as ByteString object
<span class='line'>185</span>  *
<span class='line'>186</span>  * @private
<span class='line'>187</span>  */</span><span class="WHIT">
<span class='line'>188</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.getCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certification Authority Reference"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.CAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="COMM">/**
<span class='line'>196</span>  * Get the CHR as ByteString object
<span class='line'>197</span>  *
<span class='line'>198</span>  * @private
<span class='line'>199</span>  */</span><span class="WHIT">
<span class='line'>200</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.getCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certification Holder Reference"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.CHR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span> 
<span class='line'>205</span> 
<span class='line'>206</span> 
<span class='line'>207</span> </span><span class="COMM">/**
<span class='line'>208</span>  * Get the encoded public key including domain parameters
<span class='line'>209</span>  *
<span class='line'>210</span>  * @private
<span class='line'>211</span>  */</span><span class="WHIT">
<span class='line'>212</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.getPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>213</span> 
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Object Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.taOID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> 
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Prime Modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"First coefficient a"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Second coefficient b"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Base Point G"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.encodeUncompressedECPoint</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Order of the base point"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Point y"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.encodeUncompressedECPoint</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> 
<span class='line'>226</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Cofactor f"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Composite Modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Exponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>231</span> 
<span class='line'>232</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>234</span> 
<span class='line'>235</span> 
<span class='line'>236</span> 
<span class='line'>237</span> </span><span class="COMM">/**
<span class='line'>238</span>  * Get the encoded CPI as ByteString
<span class='line'>239</span>  *
<span class='line'>240</span>  * @private
<span class='line'>241</span>  */</span><span class="WHIT">
<span class='line'>242</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.getProfileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.profileIdentifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> 
<span class='line'>246</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Profile Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F29</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>249</span> 
<span class='line'>250</span> 
<span class='line'>251</span> 
<span class='line'>252</span> </span><span class="COMM">/**
<span class='line'>253</span>  * Get the DER-encoded extension vector
<span class='line'>254</span>  *
<span class='line'>255</span>  * @private
<span class='line'>256</span>  */</span><span class="WHIT">
<span class='line'>257</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.getExtensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x65</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.extensions.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>263</span> 
<span class='line'>264</span> 
<span class='line'>265</span> 
<span class='line'>266</span> </span><span class="COMM">/**
<span class='line'>267</span>  * Get the encoded certificate request body
<span class='line'>268</span>  *
<span class='line'>269</span>  * @private
<span class='line'>270</span>  */</span><span class="WHIT">
<span class='line'>271</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.getCertificateBody</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>272</span> 
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certificate Body"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F4E</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getProfileIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> 
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.CAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>279</span> 
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> 
<span class='line'>283</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.extensions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getExtensions</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>288</span> 
<span class='line'>289</span> 
<span class='line'>290</span> 
<span class='line'>291</span> </span><span class="COMM">/**
<span class='line'>292</span>  * Generate initial certificate request using the specified private key for signing
<span class='line'>293</span>  *
<span class='line'>294</span>  * @param {Key} privateKey Private key for signature creation
<span class='line'>295</span>  * @return The DER-encoded CV request
<span class='line'>296</span>  * @type ASN1
<span class='line'>297</span>  */</span><span class="WHIT">
<span class='line'>298</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.generateCVRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CV Certificate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F21</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> 
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">body</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificateBody</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> 
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="NAME">request.add</span><span class="PUNC">(</span><span class="NAME">body</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>304</span> 
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.getSignatureMech</span><span class="PUNC">(</span><span class="NAME">this.taOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">body.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">this.taOID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">privateKey.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Signature"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F37</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CVC.unwrapSignature</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Signature"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F37</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>313</span> 
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="NAME">request.add</span><span class="PUNC">(</span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> 
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">request</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>318</span> 
<span class='line'>319</span> 
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="COMM">/**
<span class='line'>322</span>  * Countersign request
<span class='line'>323</span>  *
<span class='line'>324</span>  * @param {Crypto} crypto the crypto provide to use for signing the request
<span class='line'>325</span>  * @param {CVC} request the self-signed request
<span class='line'>326</span>  * @param {Key} authenticationKey Private key for used for signing and authenticating the request
<span class='line'>327</span>  * @param {PublicKeyReference} authCHR CHR of the authenticating authority
<span class='line'>328</span>  * @param {ByteString} taOID the public key object identifier of the authentication key
<span class='line'>329</span>  *
<span class='line'>330</span>  * @return The DER-encoded authenticated CV request
<span class='line'>331</span>  * @type ASN1
<span class='line'>332</span>  */</span><span class="WHIT">
<span class='line'>333</span> </span><span class="NAME">EAC2CVRequestGenerator.signAuthenticatedCVRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authenticationKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authCHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Authentication"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x67</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Certification Authority Reference"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authCHR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> 
<span class='line'>338</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> 
<span class='line'>340</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.getSignatureMech</span><span class="PUNC">(</span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">authenticationKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signatureInput</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>342</span> 
<span class='line'>343</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">CVC.isECDSA</span><span class="PUNC">(</span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">authenticationKey.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Signature"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F37</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CVC.unwrapSignature</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keylen</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Signature"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F37</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>349</span> 
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="NAME">authRequest.add</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">	</span><span class="NAME">authRequest.add</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="NAME">authRequest.add</span><span class="PUNC">(</span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> 
<span class='line'>354</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">authRequest</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>356</span> 
<span class='line'>357</span> 
<span class='line'>358</span> 
<span class='line'>359</span> </span><span class="COMM">/**
<span class='line'>360</span>  * Generate authenticated request
<span class='line'>361</span>  *
<span class='line'>362</span>  * @param {Key} requestKey Private key for the request signature
<span class='line'>363</span>  * @param {Key} authenticationKey Private key for used for signing and authenticating the request
<span class='line'>364</span>  * @param {PublicKeyReference} authCHR CHR of the authenticating authority
<span class='line'>365</span>  * @param {ByteString} taOID the public key object identifier of the authentication key
<span class='line'>366</span>  *
<span class='line'>367</span>  * @return The DER-encoded authenticated CV request
<span class='line'>368</span>  * @type ASN1
<span class='line'>369</span>  */</span><span class="WHIT">
<span class='line'>370</span> </span><span class="NAME">EAC2CVRequestGenerator.prototype.generateAuthenticatedCVRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">requestKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authenticationKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authCHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>371</span> 
<span class='line'>372</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.generateCVRequest</span><span class="PUNC">(</span><span class="NAME">requestKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> 
<span class='line'>374</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">		</span><span class="NAME">outertaOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.taOID</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator.signAuthenticatedCVRequest</span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">request</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authenticationKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">authCHR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outertaOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>378</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>379</span> 
<span class='line'>380</span> 
<span class='line'>381</span> 
<span class='line'>382</span> </span><span class="NAME">EAC2CVRequestGenerator.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>383</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">EAC2CVRequestGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>385</span> 
<span class='line'>386</span> </span><span class="WHIT">		</span><span class="COMM">// Set CPI</span><span class="WHIT">
<span class='line'>387</span> </span><span class="WHIT">		</span><span class="NAME">reqGenerator.setProfileIdentifier</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> 
<span class='line'>389</span> </span><span class="WHIT">		</span><span class="COMM">// Set "inner" CAR</span><span class="WHIT">
<span class='line'>390</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"decvca00000"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>391</span> </span><span class="WHIT">		</span><span class="NAME">reqGenerator.setCAR</span><span class="PUNC">(</span><span class="NAME">CAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>392</span> 
<span class='line'>393</span> </span><span class="WHIT">		</span><span class="COMM">// Set public key for request</span><span class="WHIT">
<span class='line'>394</span> </span><span class="WHIT">		</span><span class="NAME">reqGenerator.setPublicKey</span><span class="PUNC">(</span><span class="NAME">pubKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span> 
<span class='line'>396</span> </span><span class="WHIT">		</span><span class="COMM">// Set oid of algorithm</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">		</span><span class="NAME">reqGenerator.setTAAlgorithmIdentifier</span><span class="PUNC">(</span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> 
<span class='line'>399</span> </span><span class="WHIT">		</span><span class="COMM">// Set some dummy extensions</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ext1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"ext1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"06022A11"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ext2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"ext2"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"06022A12"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">		</span><span class="NAME">reqGenerator.setExtensions</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">ext1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ext2</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> </span><span class="WHIT">		</span><span class="COMM">// Set CHR for the request</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"dedvca00001"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">		</span><span class="NAME">reqGenerator.setCHR</span><span class="PUNC">(</span><span class="NAME">CHR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> 
<span class='line'>408</span> </span><span class="WHIT">		</span><span class="COMM">// Generate the request</span><span class="WHIT">
<span class='line'>409</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">reqGenerator.generateAuthenticatedCVRequest</span><span class="PUNC">(</span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"dedvca00000"</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> 
<span class='line'>412</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvreq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">cvreq</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>414</span> 
<span class='line'>415</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cvreq.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cvreq.verifyATWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">taOID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>418</span> 
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> 
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256t1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256t1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> 
<span class='line'>429</span> </span><span class="WHIT">	</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> 
<span class='line'>431</span> 
<span class='line'>432</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"secp521r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"secp521r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> 
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> 
<span class='line'>442</span> 
<span class='line'>443</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> </span><span class="WHIT">	</span><span class="NAME">pubKey.setSize</span><span class="PUNC">(</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>449</span> 
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="NAME">test</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>452</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview A card verifiable certificate store using a PKCS#11 device as key store
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT">	 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT">			 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="WHIT">	 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVCertificateStore'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="WHIT">		 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVCCA'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVCCA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> 
<span class='line'> 36</span> </span><span class="COMM">/**
<span class='line'> 37</span>  * Create a CV certificate store using a PKCS#11 device as secure key store
<span class='line'> 38</span>  *
<span class='line'> 39</span>  * @class CV certificate store with PKCS#11 as secure key store
<span class='line'> 40</span>  * @constructor
<span class='line'> 41</span>  * @param {DAOFactory} daof the factory that can create data access objects for persistent information
<span class='line'> 42</span>  * @param {PKCS11Session} p11session logged in PKCS#11 session with device
<span class='line'> 43</span>  */</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">P11CVCertificateStore</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p11session</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">CVCertificateStore.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">daof</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.p11session</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p11session</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">P11Crypto</span><span class="PUNC">(</span><span class="NAME">p11session</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="NAME">P11CVCertificateStore.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.create</span><span class="PUNC">(</span><span class="NAME">CVCertificateStore.prototype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="NAME">P11CVCertificateStore.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">P11CVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> 
<span class='line'> 53</span> </span><span class="NAME">exports.P11CVCertificateStore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">P11CVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> 
<span class='line'> 55</span> 
<span class='line'> 56</span> 
<span class='line'> 57</span> </span><span class="COMM">/**
<span class='line'> 58</span>  * Get crypto object
<span class='line'> 59</span>  *
<span class='line'> 60</span>  * @type HSMCrypto
<span class='line'> 61</span>  * @return the HSMCrypto object
<span class='line'> 62</span>  */</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="NAME">P11CVCertificateStore.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 66</span> 
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="COMM">/**
<span class='line'> 70</span>  * Transform path and certificate holder into a label
<span class='line'> 71</span>  *
<span class='line'> 72</span>  * @param {String} path the path
<span class='line'> 73</span>  * @param {PublicKeyReference} chr the certificate holder reference
<span class='line'> 74</span>  * @type String
<span class='line'> 75</span>  * @return the key label
<span class='line'> 76</span>  */</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="NAME">P11CVCertificateStore.path2label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.getSequenceNo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> 
<span class='line'> 83</span> </span><span class="COMM">/**
<span class='line'> 84</span>  * Get a private key in the certificate store. Overrides method in CVCertificateStore.
<span class='line'> 85</span>  *
<span class='line'> 86</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'> 87</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'> 88</span>  * @returns the private key or null if not found
<span class='line'> 89</span>  * @type Key
<span class='line'> 90</span>  */</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="NAME">P11CVCertificateStore.prototype.getPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">P11CVCertificateStore.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">	</span><span class="NAME">attr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_CLASS</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Object.CKO_PRIVATE_KEY</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="NAME">attr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_LABEL</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.p11session.enumerateObjects</span><span class="PUNC">(</span><span class="NAME">attr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">o.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">o.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="NAME">PKCS11Object.CKA_LABEL</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"P11CVCertificateStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">o.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Duplicate key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>110</span> 
<span class='line'>111</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p11key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> 
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> 
<span class='line'>116</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curve</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p11key.getAttribute</span><span class="PUNC">(</span><span class="NAME">PKCS11Object.CKA_EC_PARAMS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">curve</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">curve</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> 
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="NAME">key.p11</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p11key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> 
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="COMM">/**
<span class='line'>129</span>  * Determine curve from key parameter
<span class='line'>130</span>  *
<span class='line'>131</span>  * @param {Key} key the key
<span class='line'>132</span>  * @type ByteString
<span class='line'>133</span>  * @return the curve OID
<span class='line'>134</span>  */</span><span class="WHIT">
<span class='line'>135</span> </span><span class="NAME">P11CVCertificateStore.determineCurve</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curves</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP192r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP224r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP384r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP512r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">curves.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="NAME">spec.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">curves</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">spec.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">curves</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"P11CVCertificateStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown curve"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> 
<span class='line'>159</span> 
<span class='line'>160</span> </span><span class="COMM">/**
<span class='line'>161</span>  * Generate key pair
<span class='line'>162</span>  *
<span class='line'>163</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>164</span>  * @param {PublicKeyReference} chr the public key reference for this key pair
<span class='line'>165</span>  * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
<span class='line'>166</span>  * @param {Key} prk the private key template
<span class='line'>167</span>  * @param {Key} puk the public key template
<span class='line'>168</span>  */</span><span class="WHIT">
<span class='line'>169</span> </span><span class="NAME">P11CVCertificateStore.prototype.generateKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">P11CVCertificateStore.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priAttr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="NAME">priAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_TOKEN</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="NAME">priAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_SIGN</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="NAME">priAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_SENSITIVE</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="NAME">priAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_PRIVATE</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="NAME">priAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_LABEL</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> 
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubAttr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="NAME">pubAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_TOKEN</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="NAME">pubAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_VERIFY</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="NAME">pubAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_LABEL</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">		</span><span class="NAME">pubAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_MODULUS_BITS</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">puk.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="NAME">pubAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_PUBLIC_EXPONENT</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"010001"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.p11session.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">PKCS11Session.CKM_RSA_PKCS_KEY_PAIR_GEN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubAttr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priAttr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keys</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="NAME">PKCS11Object.CKA_VALUE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">pk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">		</span><span class="NAME">puk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pk.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">puk.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">		</span><span class="NAME">puk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pk.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curve</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">P11CVCertificateStore.determineCurve</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curveasn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">curve</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> 
<span class='line'>200</span> </span><span class="WHIT">		</span><span class="NAME">pubAttr</span><span class="PUNC">[</span><span class="NAME">PKCS11Object.CKA_EC_PARAMS</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">curveasn.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.p11session.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">PKCS11Session.CKM_EC_KEY_PAIR_GEN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubAttr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priAttr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keys</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="NAME">PKCS11Object.CKA_VALUE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pk.value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> 
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="NAME">prk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">curve</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">		</span><span class="NAME">puk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">point.left</span><span class="PUNC">(</span><span class="NAME">point.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">		</span><span class="NAME">puk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">point.right</span><span class="PUNC">(</span><span class="NAME">point.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>211</span> 
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="NAME">puk.p11</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keys</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="NAME">prk.p11</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keys</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>215</span> 
<span class='line'>216</span> 
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">P11Crypto</span><span class="PUNC">(</span><span class="NAME">p11session</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="NAME">this.p11session</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p11session</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>222</span> 
<span class='line'>223</span> 
<span class='line'>224</span> 
<span class='line'>225</span> </span><span class="NAME">P11Crypto.prototype.sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mech_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> 
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_ECDSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">			</span><span class="NAME">mech_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">			</span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_ECDSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">			</span><span class="NAME">mech_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">			</span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_ECDSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">			</span><span class="NAME">mech_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">			</span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_ECDSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">			</span><span class="NAME">mech_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">			</span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_ECDSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">			</span><span class="NAME">mech_hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">			</span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_ECDSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">			</span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_SHA1_RSA_PKCS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_SHA256_RSA_PKCS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_SHA512_RSA_PKCS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_SHA1_RSA_PKCS_PSS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_SHA256_RSA_PKCS_PSS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">			</span><span class="NAME">ckm_sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS11Session.CKM_SHA512_RSA_PKCS_PSS</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"P11Crypto"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported mechanism"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>281</span> 
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mech_hash</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">		</span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">mech_hash</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>285</span> 
<span class='line'>286</span> </span><span class="WHIT">	</span><span class="COMM">// Test with single step C_Sign</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="NAME">this.p11session.signInit</span><span class="PUNC">(</span><span class="NAME">ckm_sign</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.p11</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> 
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.p11session.sign</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> 
<span class='line'>291</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">wrap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">		</span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.wrapSignature</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>294</span> 
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>297</span> 
<span class='line'>298</span> 
<span class='line'>299</span> 
<span class='line'>300</span> </span><span class="NAME">P11Crypto.prototype.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto.verify</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>303</span> 
<span class='line'>304</span> 
<span class='line'>305</span> 
<span class='line'>306</span> </span><span class="NAME">P11CVCertificateStore.testPath</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.mapFilename</span><span class="PUNC">(</span><span class="STRN">"testca"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPSystem.CWD</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> 
<span class='line'>308</span> </span><span class="NAME">P11CVCertificateStore.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PKCS11Provider</span><span class="PUNC">(</span><span class="STRN">"/usr/local/lib/opensc-pkcs11.so"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> 
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">slots</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p.getSlots</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">slots</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">slot</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">slots</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> 
<span class='line'>316</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Using slot: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">slot.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> 
<span class='line'>318</span> </span><span class="WHIT">		</span><span class="COMM">// Open R/W session</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PKCS11Session</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">slot.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="WHIT">		</span><span class="COMM">// Login with USER PIN</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">		</span><span class="NAME">s.login</span><span class="PUNC">(</span><span class="STRN">"648219"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> 
<span class='line'>324</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">P11CVCertificateStore</span><span class="PUNC">(</span><span class="NAME">P11CVCertificateStore.testPath</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/cvca"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> 
<span class='line'>326</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cs.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> 
<span class='line'>328</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">		</span><span class="NAME">prk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">		</span><span class="NAME">prk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">		</span><span class="NAME">puk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">		</span><span class="NAME">puk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> 
<span class='line'>335</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"DE00001"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">		</span><span class="NAME">cs.generateKeyPair</span><span class="PUNC">(</span><span class="STRN">"/test"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"Hello World"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> 
<span class='line'>339</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>341</span> 
<span class='line'>342</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>344</span> 
<span class='line'>345</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> 
<span class='line'>351</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sig</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> 
<span class='line'>354</span> 
<span class='line'>355</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"/UTCVCA"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>356</span> 
<span class='line'>357</span> </span><span class="WHIT">		</span><span class="COMM">// Create a new request</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UTCVCA00000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> 
<span class='line'>360</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateRequest</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Request: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">req.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> 
<span class='line'>364</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">req.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> 
<span class='line'>366</span> </span><span class="WHIT">		</span><span class="COMM">// Create self-signed or link certificate based on request</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> 
<span class='line'>377</span> </span><span class="WHIT">		</span><span class="COMM">// Import certificate into store, making it the most current certificate</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">		</span><span class="NAME">cvca.storeCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> 
<span class='line'>380</span> </span><span class="WHIT">		</span><span class="COMM">// Generate additional self-signed root certificate</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">		</span><span class="COMM">// This must be done after the link certificate has been imported</span><span class="WHIT">
<span class='line'>382</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>383</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>386</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>387</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>390</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>391</span> 
<span class='line'>392</span> </span><span class="WHIT">		</span><span class="COMM">// Import certificate into store, making it the most current certificate</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">		</span><span class="NAME">cvca.storeCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>394</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT">	</span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">		</span><span class="NAME">p.cleanup</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>398</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>399</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of the PACE/SAC protocol for both card and terminal
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Create a PACEInfo object
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class &lt;p>This class encodes and decodes PACEInfo objects.&lt;/p>
<span class='line'> 33</span>  * &lt;p>The class implements the following ASN.1 syntax:&lt;/p>
<span class='line'> 34</span>  * &lt;pre>
<span class='line'> 35</span>  * PACEInfo ::= SEQUENCE {
<span class='line'> 36</span>  * 		protocol	OBJECT IDENTIFIER,
<span class='line'> 37</span>  * 		version INTEGER, -- MUST be 1 or 2
<span class='line'> 38</span>  * 		parameterId INTEGER OPTIONAL
<span class='line'> 39</span>  * }
<span class='line'> 40</span>  * &lt;/pre>
<span class='line'> 41</span>  * @constructor
<span class='line'> 42</span>  * @param {ASN1} the optional tlv structure to initialize the object
<span class='line'> 43</span>  */</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PACEInfo</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">		</span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">		</span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">			</span><span class="NAME">this.parameterId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 65</span> 
<span class='line'> 66</span> </span><span class="NAME">exports.PACEInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACEInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> </span><span class="COMM">/**
<span class='line'> 71</span>  * Convert object to TLV structure
<span class='line'> 72</span>  *
<span class='line'> 73</span>  * @return the TLV structure
<span class='line'> 74</span>  * @type ASN1
<span class='line'> 75</span>  */</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="NAME">PACEInfo.prototype.toTLV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> 
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> 
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.version</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> 
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.parameterId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.parameterId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> 
<span class='line'> 94</span> 
<span class='line'> 95</span> </span><span class="NAME">PACEInfo.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"PACEInfo(protocol="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", version="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", parameterId="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.parameterId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> 
<span class='line'>100</span> 
<span class='line'>101</span> </span><span class="COMM">/**
<span class='line'>102</span>  * Create a PACEDomainParameterInfo object
<span class='line'>103</span>  *
<span class='line'>104</span>  * @class &lt;p>This class encodes and decodes PACEDomainParameterInfo objects.&lt;/p>
<span class='line'>105</span>  * &lt;p>The class implements the following ASN.1 syntax:&lt;/p>
<span class='line'>106</span>  * &lt;pre>
<span class='line'>107</span>  *   PACEDomainParameterInfo ::= SEQUENCE {
<span class='line'>108</span>  *   	protocol OBJECT IDENTIFIER(id-PACE-DH | id-PACE-ECDH),
<span class='line'>109</span>  *   	domainParameter AlgorithmIdentifier,
<span class='line'>110</span>  *   	parameterId INTEGER OPTIONAL
<span class='line'>111</span>  *   }
<span class='line'>112</span>  * &lt;/pre>
<span class='line'>113</span>  * @constructor
<span class='line'>114</span>  * @param {ASN1} the optional tlv structure to initialize the object
<span class='line'>115</span>  */</span><span class="WHIT">
<span class='line'>116</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PACEDomainParameterInfo</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> 
<span class='line'>121</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">		</span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> 
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ECCUtils.decodeECParameters</span><span class="PUNC">(</span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">			</span><span class="NAME">this.parameterId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>141</span> 
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>143</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>144</span> 
<span class='line'>145</span> </span><span class="NAME">exports.PACEDomainParameterInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACEDomainParameterInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> 
<span class='line'>147</span> 
<span class='line'>148</span> 
<span class='line'>149</span> </span><span class="COMM">/**
<span class='line'>150</span>  * Convert object to TLV structure
<span class='line'>151</span>  *
<span class='line'>152</span>  * @return the TLV structure
<span class='line'>153</span>  * @type ASN1
<span class='line'>154</span>  */</span><span class="WHIT">
<span class='line'>155</span> </span><span class="NAME">PACEDomainParameterInfo.prototype.toTLV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> 
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">		</span><span class="NAME">c.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">		</span><span class="NAME">c.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>165</span> 
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.parameterId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.parameterId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> 
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="NAME">PACEDomainParameterInfo.getStandardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>184</span> 
<span class='line'>185</span> 
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="NAME">PACEDomainParameterInfo.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"PACEDomainParameterInfo(protocol="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", parameterId="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.parameterId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> 
<span class='line'>192</span> 
<span class='line'>193</span> </span><span class="COMM">/**
<span class='line'>194</span>  * Create a PACE protocol object
<span class='line'>195</span>  *
<span class='line'>196</span>  * @class This class implements the PACE protocol
<span class='line'>197</span>  *
<span class='line'>198</span>  * @constructor
<span class='line'>199</span>  *
<span class='line'>200</span>  * @param {Crypto} crypto the crypto provider
<span class='line'>201</span>  * @param {ByteString} algo the algorithm OID
<span class='line'>202</span>  * @param {Key} domainparam the key object holding ECC domain parameter
<span class='line'>203</span>  * @param {Number} version protocol version (1 or 2)
<span class='line'>204</span>  */</span><span class="WHIT">
<span class='line'>205</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PACE</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">domparam</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">version</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">algo.toString</span><span class="PUNC">(</span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="NAME">this.domparam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domparam</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">version</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">		</span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">version</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">		</span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>215</span> 
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM_3DES_CBC_CBC</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">		</span><span class="NAME">this.symalgo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">		</span><span class="NAME">this.symalgo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Key.AES</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="NAME">this.sym</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.AES</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>224</span> 
<span class='line'>225</span> </span><span class="NAME">exports.PACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> 
<span class='line'>227</span> 
<span class='line'>228</span> 
<span class='line'>229</span> </span><span class="COMM">/**
<span class='line'>230</span>  * Return algorithm type
<span class='line'>231</span>  *
<span class='line'>232</span>  * @type Number
<span class='line'>233</span>  * @returns Either Key.DES or Key.AES
<span class='line'>234</span>  */</span><span class="WHIT">
<span class='line'>235</span> </span><span class="NAME">PACE.prototype.getSymmetricAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.symalgo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>238</span> 
<span class='line'>239</span> 
<span class='line'>240</span> 
<span class='line'>241</span> </span><span class="COMM">/**
<span class='line'>242</span>  * Derive key from input parameter, counter and optional nonce
<span class='line'>243</span>  *
<span class='line'>244</span>  * @param {ByteString} input the first part of the hash input
<span class='line'>245</span>  * @param {Number} counter the counter value
<span class='line'>246</span>  * @param {nonce} the optional nonce inserted between the input and the counter
<span class='line'>247</span>  * @return the key object
<span class='line'>248</span>  * @type Key
<span class='line'>249</span>  */</span><span class="WHIT">
<span class='line'>250</span> </span><span class="NAME">PACE.prototype.deriveKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">input</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">counter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">		</span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.concat</span><span class="PUNC">(</span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>254</span> 
<span class='line'>255</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="STRN">"000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">counter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> 
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">input.concat</span><span class="PUNC">(</span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> 
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> 
<span class='line'>262</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM_3DES_CBC_CBC</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.DES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest.left</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_128</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest.left</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_192</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest.left</span><span class="PUNC">(</span><span class="NUMB">24</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digest</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"pace"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Algorithm not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>279</span> 
<span class='line'>280</span> 
<span class='line'>281</span> 
<span class='line'>282</span> </span><span class="COMM">/**
<span class='line'>283</span>  * Set the password and derive the PACE key.
<span class='line'>284</span>  * @param {ByteString} pwd the PACE password (Hash Value for MRZ and ASCII string for others)
<span class='line'>285</span>  * @return the PACE key.
<span class='line'>286</span>  */</span><span class="WHIT">
<span class='line'>287</span> </span><span class="NAME">PACE.prototype.setPassword</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pwd</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="NAME">this.pacekey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">pwd</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>289</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>290</span> 
<span class='line'>291</span> 
<span class='line'>292</span> 
<span class='line'>293</span> </span><span class="COMM">/**
<span class='line'>294</span>  * Set the PACE key.
<span class='line'>295</span>  * @param {ByteString} key the PACE key
<span class='line'>296</span>  * @return the PACE key.
<span class='line'>297</span>  */</span><span class="WHIT">
<span class='line'>298</span> </span><span class="NAME">PACE.prototype.setPACEKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="NAME">this.pacekey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>301</span> 
<span class='line'>302</span> 
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="COMM">/**
<span class='line'>305</span>  * Generate nonce and encrypt using PACE key.
<span class='line'>306</span>  * @return the encrypted nonce
<span class='line'>307</span>  * @type ByteString
<span class='line'>308</span>  */</span><span class="WHIT">
<span class='line'>309</span> </span><span class="NAME">PACE.prototype.getEncryptedNonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="NAME">this.nonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.symalgo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encnonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.pacekey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encnonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.pacekey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">encnonce</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>318</span> 
<span class='line'>319</span> 
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="COMM">/**
<span class='line'>322</span>  * Decrypt and store nonce using PACE key.
<span class='line'>323</span>  *
<span class='line'>324</span>  * @param {ByteString} nonce the encrypted nonce
<span class='line'>325</span>  */</span><span class="WHIT">
<span class='line'>326</span> </span><span class="NAME">PACE.prototype.decryptNonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">encnonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.symalgo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">		</span><span class="NAME">this.nonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.pacekey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encnonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">		</span><span class="NAME">this.nonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.pacekey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encnonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>332</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>333</span> 
<span class='line'>334</span> 
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="COMM">/**
<span class='line'>337</span>  * Returns true, if the nonce is known.
<span class='line'>338</span>  * @return true if the nonce is known
<span class='line'>339</span>  * @type Boolean
<span class='line'>340</span>  */</span><span class="WHIT">
<span class='line'>341</span> </span><span class="NAME">PACE.prototype.hasNonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>343</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>344</span> 
<span class='line'>345</span> 
<span class='line'>346</span> 
<span class='line'>347</span> </span><span class="COMM">/**
<span class='line'>348</span>  * Generate ephemeral ECC key pair.
<span class='line'>349</span>  *
<span class='line'>350</span>  * @param domainParameter the domain parameter for the key pair
<span class='line'>351</span>  * @return the ephemeral public key
<span class='line'>352</span>  * @type Key
<span class='line'>353</span>  */</span><span class="WHIT">
<span class='line'>354</span> </span><span class="NAME">PACE.prototype.generateEphemeralKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">domainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">	</span><span class="NAME">this.prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">domainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">	</span><span class="NAME">this.prk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> 
<span class='line'>358</span> </span><span class="WHIT">	</span><span class="NAME">this.puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">domainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> </span><span class="WHIT">	</span><span class="NAME">this.puk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span> 
<span class='line'>361</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> 
<span class='line'>363</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.puk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>364</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>365</span> 
<span class='line'>366</span> 
<span class='line'>367</span> 
<span class='line'>368</span> </span><span class="COMM">/**
<span class='line'>369</span>  * Generates and returns the mapping data for this instance
<span class='line'>370</span>  * @return the mapping data
<span class='line'>371</span>  * @type ByteString
<span class='line'>372</span>  */</span><span class="WHIT">
<span class='line'>373</span> </span><span class="NAME">PACE.prototype.getMappingData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.prk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">		</span><span class="NAME">this.generateEphemeralKeyPair</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>377</span> 
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ecpk.concat</span><span class="PUNC">(</span><span class="NAME">this.puk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">	</span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ecpk.concat</span><span class="PUNC">(</span><span class="NAME">this.puk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ecpk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> 
<span class='line'>385</span> 
<span class='line'>386</span> </span><span class="COMM">/**
<span class='line'>387</span>  * Performs the mapping operation with mapping data from the other side
<span class='line'>388</span>  *
<span class='line'>389</span>  */</span><span class="WHIT">
<span class='line'>390</span> </span><span class="NAME">PACE.prototype.performMapping</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mappingData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>391</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mappingData.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"PACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key must start with '04'"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> 
<span class='line'>394</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"PACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6985</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Nonce is not yet defined"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span> 
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mappingData.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">this.prk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"PACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key size does not match private key size"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>401</span> 
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDHP</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mappingData.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">H</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">	</span><span class="NAME">H.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> </span><span class="WHIT">	</span><span class="NAME">H.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h.bytes</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> 
<span class='line'>409</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">G</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">	</span><span class="COMM">// Copy generator point into public key point</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">	</span><span class="NAME">G.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">G.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">	</span><span class="NAME">G.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">G.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> 
<span class='line'>414</span> </span><span class="WHIT">	</span><span class="COMM">// Calculate G' = s * G + P, where P is initially stored in H and</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="COMM">// G' is finally stored in H.</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto.deriveKey</span><span class="PUNC">(</span><span class="NAME">G</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.EC_MULTIPLY_ADD</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.nonce</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">H</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> 
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="COMM">// Create new domain parameter with G'</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="NAME">this.ephDomParam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.domparam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="NAME">this.ephDomParam.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">H.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="NAME">this.ephDomParam.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">H.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>423</span> 
<span class='line'>424</span> 
<span class='line'>425</span> 
<span class='line'>426</span> </span><span class="COMM">/**
<span class='line'>427</span>  * Returns the ephemeral public key based on the new domain parameter
<span class='line'>428</span>  *
<span class='line'>429</span>  * @return the encoded public key
<span class='line'>430</span>  * @type ByteString
<span class='line'>431</span>  */</span><span class="WHIT">
<span class='line'>432</span> </span><span class="NAME">PACE.prototype.getEphemeralPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">	</span><span class="NAME">this.generateEphemeralKeyPair</span><span class="PUNC">(</span><span class="NAME">this.ephDomParam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">	</span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ecpk.concat</span><span class="PUNC">(</span><span class="NAME">this.puk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="NAME">ecpk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ecpk.concat</span><span class="PUNC">(</span><span class="NAME">this.puk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ecpk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>439</span> 
<span class='line'>440</span> 
<span class='line'>441</span> 
<span class='line'>442</span> </span><span class="COMM">/**
<span class='line'>443</span>  * Performs the mapping operation with mapping data from the other side
<span class='line'>444</span>  *
<span class='line'>445</span>  * @param {ByteString} publicKey the public key in encoded format
<span class='line'>446</span>  */</span><span class="WHIT">
<span class='line'>447</span> </span><span class="NAME">PACE.prototype.performKeyAgreement</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKey.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"PACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key must start with '04'"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> 
<span class='line'>451</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>452</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"PACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6985</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Nonce is not yet defined"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>453</span> 
<span class='line'>454</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKey.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">this.prk.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"PACE"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Public key size does not match private key size"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>458</span> 
<span class='line'>459</span> </span><span class="WHIT">	</span><span class="NAME">this.otherPuK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="NAME">this.ephDomParam</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="NAME">this.otherPuK.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.bytes</span><span class="PUNC">(</span><span class="WHIT">    </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT">	</span><span class="NAME">this.otherPuK.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.bytes</span><span class="PUNC">(</span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> 
<span class='line'>463</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Shared Secret K:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>466</span> </span><span class="WHIT">	</span><span class="NAME">this.kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">	</span><span class="NAME">this.kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> 
<span class='line'>469</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>470</span> 
<span class='line'>471</span> 
<span class='line'>472</span> 
<span class='line'>473</span> </span><span class="COMM">/**
<span class='line'>474</span>  * Strips leading zeros of a ByteString
<span class='line'>475</span>  *
<span class='line'>476</span>  * @param {ByteString} value the ByteString value
<span class='line'>477</span>  * @return the stripped ByteString object, may be an empty ByteString
<span class='line'>478</span>  * @type ByteString
<span class='line'>479</span>  */</span><span class="WHIT">
<span class='line'>480</span> </span><span class="NAME">PACE.stripLeadingZeros</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>483</span> 
<span class='line'>484</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>486</span> 
<span class='line'>487</span> 
<span class='line'>488</span> 
<span class='line'>489</span> </span><span class="COMM">/**
<span class='line'>490</span>  * Encode an ECC public key in the format defined by the EAC 2.0 specification
<span class='line'>491</span>  *
<span class='line'>492</span>  * @param {String} oid the object identifier to encode
<span class='line'>493</span>  * @param {Key} key the EC public key
<span class='line'>494</span>  * @param {Boolean} withDP true to encode domain parameter as well
<span class='line'>495</span>  * @type ASN1
<span class='line'>496</span>  * @returns the ASN1 encoded public key object
<span class='line'>497</span>  */</span><span class="WHIT">
<span class='line'>498</span> </span><span class="NAME">PACE.encodePublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">withDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>499</span> 
<span class='line'>500</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"ecPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"objectIdentifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">withDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"primeModulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"firstCoefficient"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"secondCoefficient"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> 
<span class='line'>507</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>508</span> </span><span class="WHIT">		</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>509</span> </span><span class="WHIT">		</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"basePoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">point</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span> 
<span class='line'>512</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"orderOfTheBasePoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">	</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT">	</span><span class="NAME">point</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">point.concat</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"publicPoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">point</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>518</span> 
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">withDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>520</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cofactor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span> </span><span class="WHIT">		</span><span class="NAME">cofactor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">cofactor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> 
<span class='line'>523</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cofactor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cofactor</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>525</span> 
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>528</span> 
<span class='line'>529</span> 
<span class='line'>530</span> 
<span class='line'>531</span> </span><span class="COMM">/**
<span class='line'>532</span>  * Calculate the authentication token over the public key received from
<span class='line'>533</span>  * the other side
<span class='line'>534</span>  *
<span class='line'>535</span>  * @return the MAC over the authentication data
<span class='line'>536</span>  * @type ByteString
<span class='line'>537</span>  */</span><span class="WHIT">
<span class='line'>538</span> </span><span class="NAME">PACE.prototype.calculateAuthenticationToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.encodePublicKey</span><span class="PUNC">(</span><span class="NAME">this.algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.otherPuK</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Authentication Token:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>542</span> 
<span class='line'>543</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.symalgo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>544</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_MAC_EMV</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>546</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>547</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>548</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>549</span> 
<span class='line'>550</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">at</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>551</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>552</span> 
<span class='line'>553</span> 
<span class='line'>554</span> 
<span class='line'>555</span> </span><span class="COMM">/**
<span class='line'>556</span>  * Calculate and verify the authentication token over the public key received from
<span class='line'>557</span>  * the other side
<span class='line'>558</span>  *
<span class='line'>559</span>  * @param {ByteString} the MAC over the authentication data
<span class='line'>560</span>  * @return true if the MAC is valid
<span class='line'>561</span>  * @type Boolean
<span class='line'>562</span>  */</span><span class="WHIT">
<span class='line'>563</span> </span><span class="NAME">PACE.prototype.verifyAuthenticationToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>564</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.encodePublicKey</span><span class="PUNC">(</span><span class="NAME">this.algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>565</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Authentication Token:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span> 
<span class='line'>568</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.symalgo</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>569</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>570</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.DES_MAC_EMV</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>572</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">at</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>574</span> 
<span class='line'>575</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">at.equals</span><span class="PUNC">(</span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>576</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>577</span> 
<span class='line'>578</span> 
<span class='line'>579</span> 
<span class='line'>580</span> </span><span class="COMM">/**
<span class='line'>581</span>  * Returns true, if the mapping has been performed.
<span class='line'>582</span>  * @return true if the mapping has been performed
<span class='line'>583</span>  * @type Boolean
<span class='line'>584</span>  */</span><span class="WHIT">
<span class='line'>585</span> </span><span class="NAME">PACE.prototype.hasMapping</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>586</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.ephDomParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>587</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>588</span> 
<span class='line'>589</span> 
<span class='line'>590</span> 
<span class='line'>591</span> </span><span class="COMM">/**
<span class='line'>592</span>  * Describe key
<span class='line'>593</span>  * @param {Key} the key
<span class='line'>594</span>  * @return the string describing the key
<span class='line'>595</span>  * @type String
<span class='line'>596</span>  */</span><span class="WHIT">
<span class='line'>597</span> </span><span class="NAME">PACE.keyToString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>598</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>599</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>600</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">kval</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>601</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(AES) "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kval</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>602</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>603</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.DES</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>604</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">kval</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>605</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"(DES) "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kval</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>606</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>607</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>608</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>609</span> 
<span class='line'>610</span> 
<span class='line'>611</span> 
<span class='line'>612</span> </span><span class="COMM">/**
<span class='line'>613</span>  * Returns a human readable presentation of the current pace state.
<span class='line'>614</span>  * return {String} the object information
<span class='line'>615</span>  */</span><span class="WHIT">
<span class='line'>616</span> </span><span class="NAME">PACE.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>617</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Algorithm "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.algo</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>618</span> 
<span class='line'>619</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.pacekey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>620</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"PACE Key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">PACE.keyToString</span><span class="PUNC">(</span><span class="NAME">this.pacekey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>621</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>622</span> 
<span class='line'>623</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.nonce</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>624</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Nonce "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.nonce</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>625</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>626</span> 
<span class='line'>627</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.ephDomParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Point G' "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.ephDomParam.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.ephDomParam.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>630</span> 
<span class='line'>631</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.kenc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>632</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Kenc "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">PACE.keyToString</span><span class="PUNC">(</span><span class="NAME">this.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>633</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>634</span> 
<span class='line'>635</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>636</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Kmac"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">PACE.keyToString</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>637</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>638</span> 
<span class='line'>639</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>640</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>641</span> 
<span class='line'>642</span> 
<span class='line'>643</span> </span><span class="NAME">PACE.bsi_de</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0.4.0.127.0.7"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>644</span> </span><span class="NAME">PACE.id_PACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.bsi_de</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".2.2.4"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>645</span> </span><span class="NAME">PACE.id_PACE_ECDH_GM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".2"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>646</span> </span><span class="NAME">PACE.id_PACE_ECDH_GM_3DES_CBC_CBC</span><span class="WHIT">     </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>647</span> </span><span class="NAME">PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_128</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".2"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span> </span><span class="NAME">PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_192</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".3"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>649</span> </span><span class="NAME">PACE.id_PACE_ECDH_GM_AES_CBC_CMAC_256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.id_PACE_ECDH_GM</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".4"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>650</span> 
<span class='line'>651</span> </span><span class="NAME">PACE.id_roles</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.bsi_de</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".3.1.2"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>652</span> </span><span class="NAME">PACE.id_IS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PACE.id_roles</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">".1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>653</span> 
<span class='line'>654</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|  
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  --------- 
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  * 
<span class='line'> 24</span>  * @fileoverview Public Key Reference, the value stored in CAR and CHR of CV-Certificates
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> </span><span class="WHIT"> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> </span><span class="COMM">/**
<span class='line'> 31</span>  * &lt;p>Create a public key reference (CAR/CHR) from binary representation or individual fields.&lt;/p>
<span class='line'> 32</span>  *
<span class='line'> 33</span>  * &lt;p>Use one of the following signatures:&lt;/p>
<span class='line'> 34</span>  *
<span class='line'> 35</span>  * &lt;ul>
<span class='line'> 36</span>  *  &lt;li>PublicKeyReference(ByteString value) - binary public key reference&lt;/li>
<span class='line'> 37</span>  *  &lt;li>PublicKeyReference(String value) - string encoded public key reference&lt;/li>
<span class='line'> 38</span>  *  &lt;li>PublicKeyReference(String countryCode, String holderMnemonic, String sequenceNumber) - string encoded public key reference&lt;/li>
<span class='line'> 39</span>  * &lt;/ul>
<span class='line'> 40</span>  * &lt;p>@see PublicKeyReference.test() for an example.&lt;/P>
<span class='line'> 41</span>  *
<span class='line'> 42</span>  * @class &lt;p>A class that implements a public key reference to be used as CAR and CHR in
<span class='line'> 43</span>  *        card verifiable certificates (CVC).&lt;/p>
<span class='line'> 44</span>  * @constructor
<span class='line'> 45</span>  */</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">arguments.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">				</span><span class="NAME">this.bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">				</span><span class="NAME">this.bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sq</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">arguments</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">			</span><span class="NAME">this.bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">cc</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">mn</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sq</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> </span><span class="NAME">exports.PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> 
<span class='line'> 65</span> 
<span class='line'> 66</span> 
<span class='line'> 67</span> </span><span class="COMM">/**
<span class='line'> 68</span>  * Returns the 2 character country code
<span class='line'> 69</span>  *
<span class='line'> 70</span>  * @return the country code
<span class='line'> 71</span>  * @type String
<span class='line'> 72</span>  */</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="NAME">PublicKeyReference.prototype.getCountryCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bin.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 76</span> 
<span class='line'> 77</span> 
<span class='line'> 78</span> 
<span class='line'> 79</span> </span><span class="COMM">/**
<span class='line'> 80</span>  * Returns the variable length holder mnemonic
<span class='line'> 81</span>  *
<span class='line'> 82</span>  * @return the holder mnemonic
<span class='line'> 83</span>  * @type String
<span class='line'> 84</span>  */</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="NAME">PublicKeyReference.prototype.getMnemonic</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bin.bytes</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.bin.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> 
<span class='line'> 89</span> 
<span class='line'> 90</span> 
<span class='line'> 91</span> </span><span class="COMM">/**
<span class='line'> 92</span>  * Returns the 5 character sequence number
<span class='line'> 93</span>  *
<span class='line'> 94</span>  * @return the sequence number
<span class='line'> 95</span>  * @type String
<span class='line'> 96</span>  */</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="NAME">PublicKeyReference.prototype.getSequenceNo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bin.bytes</span><span class="PUNC">(</span><span class="NAME">this.bin.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>100</span> 
<span class='line'>101</span> 
<span class='line'>102</span> 
<span class='line'>103</span> </span><span class="COMM">/**
<span class='line'>104</span>  * Returns the certificate holder name, which is the concatenation of the country code and the
<span class='line'>105</span>  * holder mnemonic.
<span class='line'>106</span>  *
<span class='line'>107</span>  * @return the holder name
<span class='line'>108</span>  * @type String
<span class='line'>109</span>  */</span><span class="WHIT">
<span class='line'>110</span> </span><span class="NAME">PublicKeyReference.prototype.getHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.getCountryCode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getMnemonic</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> 
<span class='line'>114</span> 
<span class='line'>115</span> 
<span class='line'>116</span> </span><span class="COMM">/**
<span class='line'>117</span>  * Returns the binary encoded public key reference
<span class='line'>118</span>  *
<span class='line'>119</span>  * @return the public key reference
<span class='line'>120</span>  * @type ByteString
<span class='line'>121</span>  */</span><span class="WHIT">
<span class='line'>122</span> </span><span class="NAME">PublicKeyReference.prototype.getBytes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bin</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> 
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="COMM">/**
<span class='line'>129</span>  * Returns the string representation of the public key reference
<span class='line'>130</span>  *
<span class='line'>131</span>  * @return the public key reference
<span class='line'>132</span>  * @type String
<span class='line'>133</span>  */</span><span class="WHIT">
<span class='line'>134</span> </span><span class="NAME">PublicKeyReference.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bin.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>137</span> 
<span class='line'>138</span> 
<span class='line'>139</span> 
<span class='line'>140</span> </span><span class="COMM">/**
<span class='line'>141</span>  * Returns true if other public key reference equals this public key reference
<span class='line'>142</span>  *
<span class='line'>143</span>  * @return true if equals
<span class='line'>144</span>  * @type boolean
<span class='line'>145</span>  */</span><span class="WHIT">
<span class='line'>146</span> </span><span class="NAME">PublicKeyReference.prototype.equals</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">other</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.bin.equals</span><span class="PUNC">(</span><span class="NAME">other.bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>149</span> 
<span class='line'>150</span> 
<span class='line'>151</span> 
<span class='line'>152</span> </span><span class="COMM">/**
<span class='line'>153</span>  * Test function
<span class='line'>154</span>  */</span><span class="WHIT">
<span class='line'>155</span> </span><span class="NAME">PublicKeyReference.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"UTABCDF0000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getCountryCode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"UT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getMnemonic</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"ABCD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getSequenceNo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"F0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"UTABCD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	
<span class='line'>162</span> 	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UT"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"ABCD"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"F0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getCountryCode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"UT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getMnemonic</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"ABCD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getSequenceNo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"F0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"UTABCD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	
<span class='line'>168</span> 	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UTABCDF0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getCountryCode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"UT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getMnemonic</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"ABCD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getSequenceNo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"F0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"UTABCD"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	
<span class='line'>174</span> 	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"UTABCDF0000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|  
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  --------- 
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Implementation of the ASN.1 structures for restricted identification
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Create a RestrictedIdentificationInfo object
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class &lt;p>This class encodes and decodes RestrictedIdentificationInfo objects.&lt;/p>
<span class='line'> 33</span>  * &lt;p>The class implements the following ASN.1 syntax:&lt;/p>
<span class='line'> 34</span>  * &lt;pre>
<span class='line'> 35</span>  * RestrictedIdentificationInfo ::= SEQUENCE {
<span class='line'> 36</span>  *   protocol  OBJECT IDENTIFIER(
<span class='line'> 37</span>  *             id-RI-DH-SHA-1  |
<span class='line'> 38</span>  *             id-RI-DH-SHA-224  |
<span class='line'> 39</span>  *             id-RI-DH-SHA-256  |
<span class='line'> 40</span>  *             id-RI-DH-SHA-384 |
<span class='line'> 41</span>  *             id-RI-DH-SHA-512 |
<span class='line'> 42</span>  *             id-RI-ECDH-SHA-1  |
<span class='line'> 43</span>  *             id-RI-ECDH-SHA-224  |
<span class='line'> 44</span>  *             id-RI-ECDH-SHA-256 |
<span class='line'> 45</span>  *             id-RI-ECDH-SHA-384 |
<span class='line'> 46</span>  *             id-RI-ECDH-SHA-512),
<span class='line'> 47</span>  *   params    ProtocolParams,
<span class='line'> 48</span>  *   maxKeyLen INTEGER OPTIONAL
<span class='line'> 49</span>  * }
<span class='line'> 50</span>  * ProtocolParams ::= SEQUENCE {
<span class='line'> 51</span>  *   version         INTEGER, -- MUST be 1
<span class='line'> 52</span>  *   keyId           INTEGER,
<span class='line'> 53</span>  *   authorizedOnly  BOOLEAN
<span class='line'> 54</span>  * }
<span class='line'> 55</span>  * &lt;/pre>
<span class='line'> 56</span>  * @constructor
<span class='line'> 57</span>  * @param {ASN1} the optional tlv structure to initialize the object
<span class='line'> 58</span>  */</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationInfo</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">		</span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">params</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">params.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">params.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 72</span> 
<span class='line'> 73</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">params.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">		</span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">params.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> 
<span class='line'> 76</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">params.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">		</span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">params.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> 
<span class='line'> 79</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">params.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.BOOLEAN</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="NAME">this.authorizedOnly</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">params.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tlv.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">			</span><span class="NAME">this.maxKeyLen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 89</span> 
<span class='line'> 90</span> </span><span class="NAME">exports.RestrictedIdentificationInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="COMM">/**
<span class='line'> 95</span>  * Convert object to TLV structure
<span class='line'> 96</span>  *
<span class='line'> 97</span>  * @return the TLV structure
<span class='line'> 98</span>  * @type ASN1
<span class='line'> 99</span>  */</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">RestrictedIdentificationInfo.prototype.toTLV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.version</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyId</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BOOLEAN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.authorizedOnly</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> 
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.maxKeyLen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.maxKeyLen</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>115</span> 
<span class='line'>116</span> 
<span class='line'>117</span> 
<span class='line'>118</span> </span><span class="NAME">RestrictedIdentificationInfo.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"RestrictedIdentificationInfo(protocol="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", version="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.version</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", keyId="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">",authOnly="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.authorizedOnly</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">",maxKeyLen="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.maxKeyLen</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>121</span> 
<span class='line'>122</span> 
<span class='line'>123</span> 
<span class='line'>124</span> </span><span class="COMM">/**
<span class='line'>125</span>  * Create a RestrictedIdentificationDomainParameterInfo object
<span class='line'>126</span>  *
<span class='line'>127</span>  * @class &lt;p>This class encodes and decodes RestrictedIdentificationDomainParameterInfo objects.&lt;/p>
<span class='line'>128</span>  * &lt;p>The class implements the following ASN.1 syntax:&lt;/p>
<span class='line'>129</span>  * &lt;pre>
<span class='line'>130</span>  *	RestrictedIdentificationDomainParameterInfo ::= SEQUENCE {
<span class='line'>131</span>  *		protocol OBJECT IDENTIFIER(id-CA-DH | id-CA-ECDH),
<span class='line'>132</span>  *		domainParameter AlgorithmIdentifier,
<span class='line'>133</span>  * }
<span class='line'>134</span>  * &lt;/pre>
<span class='line'>135</span>  * @constructor
<span class='line'>136</span>  * @param {ASN1} the optional tlv structure to initialize the object
<span class='line'>137</span>  */</span><span class="WHIT">
<span class='line'>138</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationDomainParameterInfo</span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlv</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">tlv.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">		
<span class='line'>143</span> 		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">		</span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">		
<span class='line'>148</span> 		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tlv.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">t.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> 
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">			</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">oid.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.value.equals</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">				</span><span class="NAME">this.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curveoid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">curveoid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"RestrictedIdentificationPublicKeyInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Standardized domain parameter "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is unknown"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">				</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">				</span><span class="NAME">this.domainParameter.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">curveoid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">				</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ECCUtils.decodeECParameters</span><span class="PUNC">(</span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>170</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> </span><span class="NAME">exports.RestrictedIdentificationDomainParameterInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentificationDomainParameterInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> 
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="COMM">/**
<span class='line'>177</span>  * Convert object to TLV structure
<span class='line'>178</span>  *
<span class='line'>179</span>  * @return the TLV structure
<span class='line'>180</span>  * @type ASN1
<span class='line'>181</span>  */</span><span class="WHIT">
<span class='line'>182</span> </span><span class="NAME">RestrictedIdentificationDomainParameterInfo.prototype.toTLV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> 
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">		</span><span class="NAME">c.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"standardizedDomainParameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">		</span><span class="NAME">c.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.standardizedDomainParameter</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>198</span> 
<span class='line'>199</span> 
<span class='line'>200</span> 
<span class='line'>201</span> </span><span class="NAME">RestrictedIdentificationDomainParameterInfo.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"RestrictedIdentificationDomainParameterInfo(protocol="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.protocol</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", keyId="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span> 
<span class='line'>205</span> 
<span class='line'>206</span> </span><span class="NAME">RestrictedIdentification</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="NAME">id_RI</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RI"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="NAME">id_RI_DH</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RI-DH"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="NAME">id_RI_ECDH</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RI-ECDH"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>210</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> 
<span class='line'>212</span> </span><span class="NAME">exports.RestrictedIdentification</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RestrictedIdentification</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> 
<span class='line'>214</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">8</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp192r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">9</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP192r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">10</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp224r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">11</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP224r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">12</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp256r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">13</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">14</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP320r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">15</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp384r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">16</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP384r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">17</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"brainpoolP512r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="NAME">RestrictedIdentification.standardizedDomainParameter</span><span class="PUNC">[</span><span class="NUMB">18</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"secp521r1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview General File I/O Class
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Create a reference to a file system object (file or directory)
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class Class implementing basic support for files
<span class='line'> 33</span>  * @constructor
<span class='line'> 34</span>  * @param {String} name relative or absolute file path
<span class='line'> 35</span>  * @param {Number} location one of GPSystem.CWD, GPSystem.USR, GPSystem.SYS, GPSystem.AUTO to resolve relative names. Default GPSystem.CWD
<span class='line'> 36</span>  */</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">File</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">location</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="WHIT">	</span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="WHIT">	</span><span class="NAME">this.location</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">location</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 41</span> 
<span class='line'> 42</span> </span><span class="NAME">exports.File</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">File</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> 
<span class='line'> 44</span> 
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="COMM">/**
<span class='line'> 47</span>  * Return absolute path
<span class='line'> 48</span>  *
<span class='line'> 49</span>  * @param{Number} mode one of GPSystem.AUTO, GPSystem.CWD, GPSystem.USR or GPSystem.SYS. See GPSystem.mapFilename() for details
<span class='line'> 50</span>  * @type String
<span class='line'> 51</span>  * @return the absolute path
<span class='line'> 52</span>  */</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="NAME">File.prototype.getAbsolutePath</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.location</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">			</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.AUTO</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">			</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.location</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 61</span> 
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.mapFilename</span><span class="PUNC">(</span><span class="NAME">this.name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> </span><span class="COMM">/**
<span class='line'> 72</span>  * @private
<span class='line'> 73</span>  * Return a java.io.File object
<span class='line'> 74</span>  */</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="NAME">File.prototype.getFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.file</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getAbsolutePath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">			</span><span class="NAME">this.file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">java.io.File</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.file</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 84</span> 
<span class='line'> 85</span> 
<span class='line'> 86</span> 
<span class='line'> 87</span> </span><span class="COMM">/**
<span class='line'> 88</span>  * Return true if file exists
<span class='line'> 89</span>  */</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="NAME">File.prototype.exists</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getFile</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">f</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">f.exists</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> 
<span class='line'>100</span> 
<span class='line'>101</span> </span><span class="COMM">/**
<span class='line'>102</span>  * Close streams associated with file
<span class='line'>103</span>  */</span><span class="WHIT">
<span class='line'>104</span> </span><span class="NAME">File.prototype.close</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.os</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">		</span><span class="NAME">this.os.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">		</span><span class="KEYW">delete</span><span class="PUNC">(</span><span class="NAME">this.os</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>109</span> 
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.is</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">		</span><span class="NAME">this.is.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">		</span><span class="KEYW">delete</span><span class="PUNC">(</span><span class="NAME">this.is</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>114</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>115</span> 
<span class='line'>116</span> 
<span class='line'>117</span> 
<span class='line'>118</span> </span><span class="COMM">/**
<span class='line'>119</span>  * @private
<span class='line'>120</span>  * Return a java.io.FileInputStream
<span class='line'>121</span>  */</span><span class="WHIT">
<span class='line'>122</span> </span><span class="NAME">File.prototype.getInputStream</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.is</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getAbsolutePath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"File "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">		</span><span class="NAME">this.is</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">java.io.FileInputStream</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.is</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> 
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="COMM">/**
<span class='line'>136</span>  * @private
<span class='line'>137</span>  * Return a java.io.FileOutputStream
<span class='line'>138</span>  */</span><span class="WHIT">
<span class='line'>139</span> </span><span class="NAME">File.prototype.getOutputStream</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.os</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getAbsolutePath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OBJECT_NOT_FOUND</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"File "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">		</span><span class="NAME">this.os</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">java.io.FileOutputStream</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.os</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>149</span> 
<span class='line'>150</span> 
<span class='line'>151</span> 
<span class='line'>152</span> </span><span class="COMM">/**
<span class='line'>153</span>  * Read complete file into ByteString object
<span class='line'>154</span>  *
<span class='line'>155</span>  * @type ByteString
<span class='line'>156</span>  * @return the binary content
<span class='line'>157</span>  */</span><span class="WHIT">
<span class='line'>158</span> </span><span class="NAME">File.prototype.readAllAsBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">is</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getInputStream</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> 
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="COMM">// Determine file size</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">flen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">is.available</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> 
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="COMM">// Allocate native byte array</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">java.lang.reflect.Array.newInstance</span><span class="PUNC">(</span><span class="NAME">java.lang.Byte.TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">flen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> 
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="COMM">// Read into byte array</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">is.read</span><span class="PUNC">(</span><span class="NAME">bs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> 
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="NAME">this.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="COMM">// Allocate JavaScript ByteBuffer from native/wrapped byte array</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NAME">bs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> 
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="COMM">// Convert to JavaScript ByteString</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> 
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>180</span> 
<span class='line'>181</span> 
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="COMM">/**
<span class='line'>184</span>  * Read complete file into String object
<span class='line'>185</span>  *
<span class='line'>186</span>  * @type String
<span class='line'>187</span>  * @return the text content
<span class='line'>188</span>  */</span><span class="WHIT">
<span class='line'>189</span> </span><span class="NAME">File.prototype.readAllAsString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">encoding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">encoding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="NAME">encoding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.readAllAsBinary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">encoding</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>197</span> 
<span class='line'>198</span> 
<span class='line'>199</span> 
<span class='line'>200</span> </span><span class="COMM">/**
<span class='line'>201</span>  * Write the object to file
<span class='line'>202</span>  *
<span class='line'>203</span>  * @param{Object} obj to write to file (Using toString() for any other than String and ByteString)
<span class='line'>204</span>  * @param{Number} one of UTF8 or ASCII (Default is UTF8)
<span class='line'>205</span>  */</span><span class="WHIT">
<span class='line'>206</span> </span><span class="NAME">File.prototype.writeAll</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encoding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">		</span><span class="NAME">obj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">obj.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">encoding</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">			</span><span class="NAME">encoding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">		</span><span class="NAME">obj</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encoding</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>216</span> 
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">os</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getOutputStream</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="NAME">os.write</span><span class="PUNC">(</span><span class="NAME">obj</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="NAME">this.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> 
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="COMM">/**
<span class='line'>225</span>  * Return list of files contained in the directory referenced by the File object
<span class='line'>226</span>  *
<span class='line'>227</span>  * @type String[]
<span class='line'>228</span>  * @return the list of file names
<span class='line'>229</span>  */</span><span class="WHIT">
<span class='line'>230</span> </span><span class="NAME">File.prototype.list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getFile</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">list</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">jslist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> 
<span class='line'>234</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">			</span><span class="NAME">jslist.push</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">String</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>239</span> 
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">jslist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>242</span> 
<span class='line'>243</span> 
<span class='line'>244</span> 
<span class='line'>245</span> </span><span class="COMM">/**
<span class='line'>246</span>  * Return the parent file of this file object
<span class='line'>247</span>  *
<span class='line'>248</span>  * @type File
<span class='line'>249</span>  * @return the parent file object or null
<span class='line'>250</span>  */</span><span class="WHIT">
<span class='line'>251</span> </span><span class="NAME">File.prototype.getParentFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getFile</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.getParent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">File</span><span class="PUNC">(</span><span class="NAME">parent</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>259</span> 
<span class='line'>260</span> 
<span class='line'>261</span> 
<span class='line'>262</span> </span><span class="NAME">File.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">File</span><span class="PUNC">(</span><span class="STRN">"test.bin"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"Hello World"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="NAME">file.writeAll</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> 
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">File</span><span class="PUNC">(</span><span class="STRN">"test.bin"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.readAllAsBinary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">c.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> 
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">File</span><span class="PUNC">(</span><span class="STRN">"test.txt"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Hello World"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="NAME">file.writeAll</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> 
<span class='line'>275</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">File</span><span class="PUNC">(</span><span class="STRN">"test.txt"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.readAllAsString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> 
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">file.getParentFile</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">dir.getAbsolutePath</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">dir.list</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> 
<span class='line'>283</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Support for Global Platform SCP03 protocol
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/cardsim/APDU'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">APDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="COMM">/**
<span class='line'> 32</span>  * Class implementing support for Global Platform SCP03 secure messaging protocol
<span class='line'> 33</span>  *
<span class='line'> 34</span>  * @constructor
<span class='line'> 35</span>  * @param {Crypto} crypto the crypto provider
<span class='line'> 36</span>  * @param {Key} kenc the static secure channel encryption key
<span class='line'> 37</span>  * @param {Key} kmac the static secure channel message authentication code key
<span class='line'> 38</span>  * @param {Key} kdek the static data encryption key
<span class='line'> 39</span>  * @param {ByteString} aid the AID to use for challenge calculation
<span class='line'> 40</span>  */</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">GPSCP03</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kdek</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">this.kdek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kdek</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.chaining</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.enccnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="NAME">this.keyVersion</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="NAME">this.parami</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> 
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">aid</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">aid</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument aid must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">		</span><span class="NAME">this.aid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">		</span><span class="NAME">this.aid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"A000000151000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="NAME">exports.GPSCP03</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSCP03</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> 
<span class='line'> 62</span> 
<span class='line'> 63</span> 
<span class='line'> 64</span> </span><span class="COMM">/**
<span class='line'> 65</span>  * Strip the ISO padding from dechipered cryptogram
<span class='line'> 66</span>  *
<span class='line'> 67</span>  * @param {ByteString} the plain text with padding
<span class='line'> 68</span>  * @type ByteString
<span class='line'> 69</span>  * @return the plain text without padding
<span class='line'> 70</span>  */</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="NAME">GPSCP03.stripPadding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">plain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plain.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plain.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">		</span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plain.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Padding check failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">plain.left</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> 
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="COMM">/**
<span class='line'> 85</span>  * Reset the internal state
<span class='line'> 86</span>  **/</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="NAME">GPSCP03.prototype.reset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="NAME">this.chaining</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="NAME">this.enccnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> 
<span class='line'> 94</span> 
<span class='line'> 95</span> </span><span class="COMM">/**
<span class='line'> 96</span>  * Called by the secure messaging wrapper to wrap the command APDU
<span class='line'> 97</span>  */</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="NAME">GPSCP03.prototype.wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apduToWrap</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">usageQualifier</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 99</span> 
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">apdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">APDU</span><span class="PUNC">(</span><span class="NAME">apduToWrap</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> 
<span class='line'>103</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.enccnt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2_16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="WHIT">				</span><span class="NAME">apdu.setCData</span><span class="PUNC">(</span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encinp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">			</span><span class="NAME">apdu.setCData</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>114</span> 
<span class='line'>115</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.chaining</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> 
<span class='line'>118</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCLA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">			</span><span class="COMM">// GP Format</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">			</span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">			</span><span class="NAME">apdu.cla</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">			</span><span class="COMM">// ISO Format</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">			</span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x90</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">			</span><span class="NAME">apdu.cla</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">cla</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getINS</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">lc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">lc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span> 
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.skmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="NAME">this.chaining</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> 
<span class='line'>146</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setCData</span><span class="PUNC">(</span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">mac.left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.clatransformation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">			</span><span class="NAME">apdu.setCLA</span><span class="PUNC">(</span><span class="NAME">this.clatransformation</span><span class="PUNC">(</span><span class="NAME">apdu.getCLA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>151</span> 
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="NAME">apduToWrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCommandAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">apduToWrap</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> 
<span class='line'>157</span> 
<span class='line'>158</span> 
<span class='line'>159</span> </span><span class="COMM">/**
<span class='line'>160</span>  * Called by the secure messaging wrapper to unwrap the response APDU
<span class='line'>161</span>  */</span><span class="WHIT">
<span class='line'>162</span> </span><span class="NAME">GPSCP03.prototype.unwrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">usageQualifier</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.chaining</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.left</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.right</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.skrmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">mac.equals</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.bytes</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"MAC on R-Data failed verification"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> 
<span class='line'>175</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.enccnt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apduToUnwrap.left</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">			</span><span class="NAME">apduToUnwrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSCP03.stripPadding</span><span class="PUNC">(</span><span class="NAME">plain</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.right</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">			</span><span class="NAME">apduToUnwrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apduToUnwrap.left</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">apduToUnwrap.right</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="NAME">this.enccnt</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> 
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">apduToUnwrap</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> 
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> </span><span class="COMM">/**
<span class='line'>195</span>  * Counterpart to wrap and meant to be used in a simulator
<span class='line'>196</span>  */</span><span class="WHIT">
<span class='line'>197</span> </span><span class="NAME">GPSCP03.prototype.unwrapCommandAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_CONDOFUSENOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No secure messaging active"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>201</span> 
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">apdu.hasCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SMOBJMISSING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"MAC on C-Data missing"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.chaining</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCLA</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">			</span><span class="COMM">// GP Format</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">			</span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">			</span><span class="COMM">// ISO Format</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">			</span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x90</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">cla</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getINS</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getP1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getP2</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> 
<span class='line'>223</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">apdu.isExtendedLength</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">lc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">lc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NAME">lc</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> 
<span class='line'>233</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.skmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> 
<span class='line'>235</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">mac.left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">right</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SECSTATNOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"MAC on C-Data failed verification"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>238</span> 
<span class='line'>239</span> </span><span class="WHIT">		</span><span class="NAME">this.chaining</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setCData</span><span class="PUNC">(</span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NAME">lc</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>242</span> 
<span class='line'>243</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">lc</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.enccnt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">apdu.getCData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">			</span><span class="NAME">apdu.setCData</span><span class="PUNC">(</span><span class="NAME">GPSCP03.stripPadding</span><span class="PUNC">(</span><span class="NAME">plain</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>250</span> 
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>252</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>253</span> 
<span class='line'>254</span> 
<span class='line'>255</span> 
<span class='line'>256</span> </span><span class="COMM">/**
<span class='line'>257</span>  * Counterpart to unwrap and meant to be used in a simulator
<span class='line'>258</span>  */</span><span class="WHIT">
<span class='line'>259</span> </span><span class="NAME">GPSCP03.prototype.wrapResponseAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">apdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">apdu.hasRData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.enccnt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ivinp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">apdu.getRData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2_16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> 
<span class='line'>266</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">this.skenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">			</span><span class="NAME">apdu.setRData</span><span class="PUNC">(</span><span class="NAME">cryptogram</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>269</span> 
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.chaining</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> 
<span class='line'>273</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">apdu.getResponseAPDU</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> 
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">this.skrmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> 
<span class='line'>277</span> </span><span class="WHIT">		</span><span class="NAME">apdu.setRData</span><span class="PUNC">(</span><span class="NAME">apdu.hasRData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">apdu.getRData</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">mac</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>279</span> 
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="NAME">this.enccnt</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>282</span> 
<span class='line'>283</span> 
<span class='line'>284</span> 
<span class='line'>285</span> </span><span class="NAME">GPSCP03.prototype.setCLATransformation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">clatransformation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">clatransformation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument clatransformation must be a function"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="NAME">this.clatransformation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">clatransformation</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>289</span> 
<span class='line'>290</span> 
<span class='line'>291</span> 
<span class='line'>292</span> </span><span class="COMM">/**
<span class='line'>293</span>  * Issue INITIALIZE UPDATE command to card and parse response
<span class='line'>294</span>  *
<span class='line'>295</span>  * @param {Card} card the card to use
<span class='line'>296</span>  * @param {Number} keyVersion the version of the key to use (0 for default)
<span class='line'>297</span>  * @param {Number} keyId the key id to use (usually 0)
<span class='line'>298</span>  */</span><span class="WHIT">
<span class='line'>299</span> </span><span class="NAME">GPSCP03.prototype.initializeUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyVersion</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="NAME">this.hostChallenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> 
<span class='line'>302</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.clatransformation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>304</span> </span><span class="WHIT">		</span><span class="NAME">cla</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.clatransformation</span><span class="PUNC">(</span><span class="NAME">cla</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>306</span> 
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">card.sendApdu</span><span class="PUNC">(</span><span class="NAME">cla</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x50</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyVersion</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.hostChallenge</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> 
<span class='line'>309</span> </span><span class="WHIT">	</span><span class="NAME">this.diversificationData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="NAME">this.keyInformation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.bytes</span><span class="PUNC">(</span><span class="NUMB">10</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="NAME">this.keyVersion</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.keyInformation.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="NAME">this.parami</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.keyInformation.byteAt</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	</span><span class="NAME">this.cardChallenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.bytes</span><span class="PUNC">(</span><span class="NUMB">13</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="NAME">this.cardCryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.bytes</span><span class="PUNC">(</span><span class="NUMB">21</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">29</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">		</span><span class="NAME">this.sequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.bytes</span><span class="PUNC">(</span><span class="NUMB">29</span><span class="PUNC">,</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sequenceCounter.concat</span><span class="PUNC">(</span><span class="NAME">this.aid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">this.cardChallenge</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Pseudo-random card challenge does not match Kenc"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>321</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>322</span> 
<span class='line'>323</span> 
<span class='line'>324</span> 
<span class='line'>325</span> </span><span class="COMM">/**
<span class='line'>326</span>  * Set the sequence number for pseudo-random card challenges
<span class='line'>327</span>  *
<span class='line'>328</span>  * @param {ByteString} cnt the last used counter value
<span class='line'>329</span>  */</span><span class="WHIT">
<span class='line'>330</span> </span><span class="NAME">GPSCP03.prototype.setSequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cnt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument cnt must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">cnt.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument cnt must be 3 bytes long"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="NAME">this.sequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>335</span> 
<span class='line'>336</span> 
<span class='line'>337</span> 
<span class='line'>338</span> </span><span class="COMM">/**
<span class='line'>339</span>  * Set the key version and protocol parameter
<span class='line'>340</span>  *
<span class='line'>341</span>  * @param {Number} version the key version indicated in INITIALIZE_UPDATE
<span class='line'>342</span>  * @param {Number} parami the i parameter for the SCP03 protocol (Default '00')
<span class='line'>343</span>  */</span><span class="WHIT">
<span class='line'>344</span> </span><span class="NAME">GPSCP03.prototype.setKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">version</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parami</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">version</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument version must be of type number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">parami</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT">		</span><span class="NAME">this.parami</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parami</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="NAME">this.keyVersion</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">version</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="NAME">this.keyInformation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyVersion</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x03</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.parami</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>352</span> 
<span class='line'>353</span> 
<span class='line'>354</span> 
<span class='line'>355</span> </span><span class="COMM">/**
<span class='line'>356</span>  * Determine random or pseudo-random card challenge
<span class='line'>357</span>  *
<span class='line'>358</span>  */</span><span class="WHIT">
<span class='line'>359</span> </span><span class="NAME">GPSCP03.prototype.determineCardChallenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>360</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.sequenceCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">		</span><span class="NAME">this.cardChallenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sequenceCounter.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT">		</span><span class="NAME">this.sequenceCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">cnt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sequenceCounter.concat</span><span class="PUNC">(</span><span class="NAME">this.aid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">		</span><span class="NAME">this.cardChallenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>368</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>369</span> 
<span class='line'>370</span> 
<span class='line'>371</span> 
<span class='line'>372</span> </span><span class="COMM">/**
<span class='line'>373</span>  * Handle processing of INITIALIZE UPDATE command
<span class='line'>374</span>  *
<span class='line'>375</span>  * @param {ByteString} hostCryptogram the cryptogram calculated at the host
<span class='line'>376</span>  */</span><span class="WHIT">
<span class='line'>377</span> </span><span class="NAME">GPSCP03.prototype.handleInitializeUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hostChallenge</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="NAME">this.hostChallenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hostChallenge</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="NAME">this.determineCardChallenge</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>380</span> 
<span class='line'>381</span> </span><span class="WHIT">	</span><span class="NAME">this.diversificationData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0102030405060708090A"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> 
<span class='line'>383</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyInformation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">		</span><span class="NAME">this.keyInformation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"010300"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>386</span> 
<span class='line'>387</span> </span><span class="WHIT">	</span><span class="NAME">this.deriveSessionKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.hostChallenge.concat</span><span class="PUNC">(</span><span class="NAME">this.cardChallenge</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> </span><span class="WHIT">	</span><span class="NAME">this.cardCryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.skmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>390</span> 
<span class='line'>391</span> </span><span class="WHIT">	</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">	</span><span class="NAME">this.chaining</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> 
<span class='line'>394</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.diversificationData</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.keyVersion</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">0x03</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.parami</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.cardChallenge</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.cardCryptogram</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sequenceCounter</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.sequenceCounter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>406</span> 
<span class='line'>407</span> 
<span class='line'>408</span> 
<span class='line'>409</span> </span><span class="COMM">/**
<span class='line'>410</span>  * Issue EXTERNAL AUTHENTICATE command to card.
<span class='line'>411</span>  *
<span class='line'>412</span>  * @param {Card} card the card to use
<span class='line'>413</span>  * @param {Number} level the security level (a combination of bits B5 (R-ENC), B4 (R-MAC), B2 (C-ENC) and B1 (C-MAC))
<span class='line'>414</span>  * @param {ByteString} hostCryptogram optional parameter, calculated internally if missing
<span class='line'>415</span>  */</span><span class="WHIT">
<span class='line'>416</span> </span><span class="NAME">GPSCP03.prototype.externalAuthenticate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">level</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hostCryptogram</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">card</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Card</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument card must be instance of Card"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">level</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument level must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">level</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="PUNC">~</span><span class="NUMB">0x33</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument level must use only bits B5,B4,B2 or B1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">hostCryptogram</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hostCryptogram</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"hostCryptogram must be missing or ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> 
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hostCryptogram</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">		</span><span class="NAME">this.calculateHostCryptogram</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>425</span> </span><span class="WHIT">		</span><span class="NAME">this.hostCryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hostCryptogram</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT">	</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> 
<span class='line'>429</span> </span><span class="WHIT">	</span><span class="NAME">card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">level</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.hostCryptogram</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT">	</span><span class="NAME">this.seclevel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">level</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT">	</span><span class="NAME">this.enccnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>432</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>433</span> 
<span class='line'>434</span> 
<span class='line'>435</span> 
<span class='line'>436</span> </span><span class="COMM">/**
<span class='line'>437</span>  * Handle processing of PUT KEY command
<span class='line'>438</span>  *
<span class='line'>439</span>  * @param {ByteString} cdata the C-Data field of the APDU
<span class='line'>440</span>  */</span><span class="WHIT">
<span class='line'>441</span> </span><span class="NAME">GPSCP03.prototype.handlePutKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cdata.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">	</span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cdata.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSCP03.parseKeyDataField</span><span class="PUNC">(</span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.validateKeyBlock</span><span class="PUNC">(</span><span class="NAME">kd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">	</span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cdata.bytes</span><span class="PUNC">(</span><span class="NAME">kd.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> 
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSCP03.parseKeyDataField</span><span class="PUNC">(</span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.validateKeyBlock</span><span class="PUNC">(</span><span class="NAME">kd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cdata.bytes</span><span class="PUNC">(</span><span class="NAME">kd.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> 
<span class='line'>452</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSCP03.parseKeyDataField</span><span class="PUNC">(</span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kdek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.validateKeyBlock</span><span class="PUNC">(</span><span class="NAME">kd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> 
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="NAME">this.keyVersion</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">version</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="NAME">this.kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="NAME">this.kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="NAME">this.kdek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kdek</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>460</span> 
<span class='line'>461</span> 
<span class='line'>462</span> 
<span class='line'>463</span> </span><span class="COMM">/**
<span class='line'>464</span>  * Derive S-ENC, S-MAC and S-RMAC session keys
<span class='line'>465</span>  */</span><span class="WHIT">
<span class='line'>466</span> </span><span class="NAME">GPSCP03.prototype.deriveSessionKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.hostChallenge.concat</span><span class="PUNC">(</span><span class="NAME">this.cardChallenge</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> 
<span class='line'>469</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.kmac.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>470</span> 
<span class='line'>471</span> </span><span class="WHIT">	</span><span class="COMM">// Derive S-MAC</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>473</span> </span><span class="WHIT">	</span><span class="NAME">this.skmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>474</span> </span><span class="WHIT">	</span><span class="NAME">this.skmac.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>475</span> 
<span class='line'>476</span> </span><span class="WHIT">	</span><span class="COMM">// Derive S-RMAC</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="NAME">this.skrmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> </span><span class="WHIT">	</span><span class="NAME">this.skrmac.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>480</span> 
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="COMM">// Derive S-ENC</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="NAME">this.skenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT">	</span><span class="NAME">this.skenc.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>486</span> 
<span class='line'>487</span> 
<span class='line'>488</span> 
<span class='line'>489</span> </span><span class="COMM">/**
<span class='line'>490</span>  * Verify card cryptogram
<span class='line'>491</span>  *
<span class='line'>492</span>  * @type boolean
<span class='line'>493</span>  * @return true if cryptogram is valid
<span class='line'>494</span>  */</span><span class="WHIT">
<span class='line'>495</span> </span><span class="NAME">GPSCP03.prototype.verifyCardCryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.hostChallenge.concat</span><span class="PUNC">(</span><span class="NAME">this.cardChallenge</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> 
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ss</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.skmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ss.equals</span><span class="PUNC">(</span><span class="NAME">this.cardCryptogram</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>501</span> 
<span class='line'>502</span> 
<span class='line'>503</span> 
<span class='line'>504</span> </span><span class="COMM">/**
<span class='line'>505</span>  * Calculate host cryptogram using the key derive method
<span class='line'>506</span>  *
<span class='line'>507</span>  * @type ByteString
<span class='line'>508</span>  * @return the 8 byte cryptogram
<span class='line'>509</span>  */</span><span class="WHIT">
<span class='line'>510</span> </span><span class="NAME">GPSCP03.prototype.calculateHostCryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>511</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">context</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.hostChallenge.concat</span><span class="PUNC">(</span><span class="NAME">this.cardChallenge</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> 
<span class='line'>513</span> </span><span class="WHIT">	</span><span class="NAME">this.hostCryptogram</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deriveKey</span><span class="PUNC">(</span><span class="NAME">this.skmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.hostCryptogram</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>515</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>516</span> 
<span class='line'>517</span> 
<span class='line'>518</span> 
<span class='line'>519</span> </span><span class="COMM">/**
<span class='line'>520</span>  * Encrypt key and prepare key block for PUT KEY command
<span class='line'>521</span>  *
<span class='line'>522</span>  * @param {Key} dek the data encryption key
<span class='line'>523</span>  * @param {Key} key the key to wrap
<span class='line'>524</span>  * @type ByteString
<span class='line'>525</span>  * @return the key type, length, cryptogram and key check value
<span class='line'>526</span>  */</span><span class="WHIT">
<span class='line'>527</span> </span><span class="NAME">GPSCP03.prototype.prepareKeyBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dek</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>528</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dek</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument dek must be instance of Key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>529</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument key must be instance of Key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>530</span> 
<span class='line'>531</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>532</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ones</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01010101010101010101010101010101"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>533</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kcv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ones</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>534</span> 
<span class='line'>535</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ck</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">dek</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>537</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ckbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="STRN">"88"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>538</span> </span><span class="WHIT">	</span><span class="NAME">ckbin.append</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT">	</span><span class="NAME">ckbin.append</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">	</span><span class="NAME">ckbin.append</span><span class="PUNC">(</span><span class="NAME">ck</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> </span><span class="WHIT">	</span><span class="NAME">ckbin.append</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>542</span> </span><span class="WHIT">	</span><span class="NAME">ckbin.append</span><span class="PUNC">(</span><span class="NAME">kcv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>543</span> 
<span class='line'>544</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ckbin.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>546</span> 
<span class='line'>547</span> 
<span class='line'>548</span> 
<span class='line'>549</span> </span><span class="COMM">/**
<span class='line'>550</span>  * Extract a key data field from C-Data in a PUT KEY APDU
<span class='line'>551</span>  *
<span class='line'>552</span>  * @param {ByteString} keyDataField the list of key data fields
<span class='line'>553</span>  * @type ByteString
<span class='line'>554</span>  * @return the extracted key data
<span class='line'>555</span>  */</span><span class="WHIT">
<span class='line'>556</span> </span><span class="NAME">GPSCP03.parseKeyDataField</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDataField</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>557</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyDataField.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">keyDataField.byteAt</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Field length does not match"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT">	</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyDataField.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keyDataField.left</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>564</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>565</span> 
<span class='line'>566</span> 
<span class='line'>567</span> 
<span class='line'>568</span> </span><span class="COMM">/**
<span class='line'>569</span>  * Decrypt and validate key blob containing AES key wrapped with DEK
<span class='line'>570</span>  *
<span class='line'>571</span>  * @param {ByteString} keyblob the wrapped key
<span class='line'>572</span>  * @type Key
<span class='line'>573</span>  * @return the unwrapped key
<span class='line'>574</span>  */</span><span class="WHIT">
<span class='line'>575</span> </span><span class="NAME">GPSCP03.prototype.validateKeyBlock</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">keyblob</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument keyblob must be instance of ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> 
<span class='line'>578</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyblob.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x88</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"AES key blob must start with '88'"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>581</span> 
<span class='line'>582</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyblob.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>584</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_INVDATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Length exceeds key blob"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>585</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>586</span> 
<span class='line'>587</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kcvlen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.byteAt</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>588</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ck</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>589</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.kdek</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ck</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>591</span> 
<span class='line'>592</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>593</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>594</span> 
<span class='line'>595</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ones</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01010101010101010101010101010101"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>596</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kcv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_ECB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ones</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NAME">kcvlen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>597</span> 
<span class='line'>598</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">keyblob.right</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">kcv</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>599</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">APDU.SW_SECSTATNOTSAT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"KCV does not match"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>600</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>601</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>602</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>603</span> 
<span class='line'>604</span> 
<span class='line'>605</span> 
<span class='line'>606</span> </span><span class="COMM">/**
<span class='line'>607</span>  * Derive a session key or cryptogram
<span class='line'>608</span>  *
<span class='line'>609</span>  * @param {Key} key the master key
<span class='line'>610</span>  * @param {Number} ddc the data derivation constant
<span class='line'>611</span>  * @param {Number} size the size of byte of the resulting key or cryptogram
<span class='line'>612</span>  * @param {ByteString} context the context (usually hostChallenge || cardChallenge)
<span class='line'>613</span>  * @return the derived value
<span class='line'>614</span>  * @type ByteString
<span class='line'>615</span>  */</span><span class="WHIT">
<span class='line'>616</span> </span><span class="NAME">GPSCP03.prototype.deriveKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ddc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">size</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">context</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>617</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument key must be instance of Key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>618</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">ddc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument ddc must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>619</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument size must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>620</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">context</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument context must be instance of ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>621</span> 
<span class='line'>622</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>623</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">os</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">size</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>624</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>625</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">os</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>626</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>627</span> </span><span class="WHIT">		</span><span class="NAME">dp.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">ddc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT">		</span><span class="NAME">dp.append</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT">		</span><span class="NAME">dp.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">size</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>630</span> </span><span class="WHIT">		</span><span class="NAME">dp.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">iter</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>631</span> </span><span class="WHIT">		</span><span class="NAME">dp.append</span><span class="PUNC">(</span><span class="NAME">context</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>632</span> 
<span class='line'>633</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>634</span> 
<span class='line'>635</span> </span><span class="WHIT">		</span><span class="NAME">dd.append</span><span class="PUNC">(</span><span class="NAME">mac.left</span><span class="PUNC">(</span><span class="NAME">os</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">mac.length</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">mac.length</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">os</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>636</span> </span><span class="WHIT">		</span><span class="NAME">os</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">mac.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>637</span> </span><span class="WHIT">		</span><span class="NAME">iter</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>638</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>639</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">dd.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>640</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>641</span> 
<span class='line'>642</span> 
<span class='line'>643</span> 
<span class='line'>644</span> </span><span class="NAME">GPSCP03.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>645</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>646</span> 
<span class='line'>647</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>648</span> </span><span class="WHIT">	</span><span class="NAME">kmac.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"404142434445464748494a4b4c4d4e4f"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>649</span> 
<span class='line'>650</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT">	</span><span class="NAME">kenc.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"404142434445464748494a4b4c4d4e4f"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>652</span> 
<span class='line'>653</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kdek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT">	</span><span class="NAME">kdek.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"404142434445464748494a4b4c4d4e4f"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>655</span> 
<span class='line'>656</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Card</span><span class="PUNC">(</span><span class="NAME">_scsh3.reader</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>657</span> 
<span class='line'>658</span> </span><span class="WHIT">	</span><span class="NAME">card.sendApdu</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"A000000151000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>659</span> 
<span class='line'>660</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">scp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPSCP03</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kdek</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>661</span> 
<span class='line'>662</span> </span><span class="WHIT">	</span><span class="NAME">scp.initializeUpdate</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT">	</span><span class="NAME">scp.deriveSessionKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>664</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">scp.verifyCardCryptogram</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>665</span> </span><span class="WHIT">	</span><span class="NAME">card.setCredential</span><span class="PUNC">(</span><span class="NAME">scp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>666</span> </span><span class="WHIT">	</span><span class="NAME">scp.externalAuthenticate</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>667</span> 
<span class='line'>668</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E82B0601040181C31F0202"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>669</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x4F</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>670</span> 
<span class='line'>671</span> </span><span class="WHIT">	</span><span class="NAME">card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xE4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>672</span> </span><span class="WHIT">	</span><span class="NAME">card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xE4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>673</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>674</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2015 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Basic helper functions to encode and decode PKCS#1 padding
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Empty constructor
<span class='line'> 31</span>  */</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PKCS1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">exports</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT">	</span><span class="NAME">exports.PKCS1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> 
<span class='line'> 38</span> 
<span class='line'> 39</span> </span><span class="COMM">/**
<span class='line'> 40</span>  * Mask Generation Function 1
<span class='line'> 41</span>  *
<span class='line'> 42</span>  * @param {Crypto} crypto instance providing hash
<span class='line'> 43</span>  * @param {Number} hashalg Hash algorithm (one of Crypto.SHA_xxx)
<span class='line'> 44</span>  * @param {ByteString} mgfSeed Seed byte string
<span class='line'> 45</span>  * @param {Number} maskLen length of requested masked
<span class='line'> 46</span>  * @type ByteString
<span class='line'> 47</span>  * @return the generated mask
<span class='line'> 48</span>  */</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">PKCS1.MGF1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mgfSeed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maskLen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">maskLen</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">maskLen</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"maskLen out of range"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> 
<span class='line'> 55</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">t.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">maskLen</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">		</span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.concat</span><span class="PUNC">(</span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">hashalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mgfSeed.concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">		</span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.left</span><span class="PUNC">(</span><span class="NAME">maskLen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> </span><span class="COMM">/**
<span class='line'> 66</span>  * EME-OAEP decoder as defined in PKCS#1 V2.1 chapter 7.1.2
<span class='line'> 67</span>  *
<span class='line'> 68</span>  * @param {Crypto} crypto instance providing hash function
<span class='line'> 69</span>  * @param {ByteString} label additional label for encryption
<span class='line'> 70</span>  * @param {Number} hashalg Hash algorithm (one of Crypto.SHA_xxx)
<span class='line'> 71</span>  * @param {ByteString} em encoded messages after RSA decrypt
<span class='line'> 72</span>  * @type ByteString
<span class='line'> 73</span>  * @return null if padding error or recovered message
<span class='line'> 74</span>  */</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="NAME">PKCS1.decode_EME_OAEP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">em</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">		</span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lHash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">hashalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hLen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lHash.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">em.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">maskedSeed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">em.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hLen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">maskedDB</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">em.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">hLen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> 
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">seedMask</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS1.MGF1</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maskedDB</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hLen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">seed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">maskedSeed.xor</span><span class="PUNC">(</span><span class="NAME">seedMask</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dbMask</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS1.MGF1</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">seed</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">em.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">hLen</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">DB</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">maskedDB.xor</span><span class="PUNC">(</span><span class="NAME">dbMask</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> 
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DB.left</span><span class="PUNC">(</span><span class="NAME">hLen</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">lHash</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">hLen</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">DB.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">DB.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">		</span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">DB.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c3</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">DB.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c4</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">hLen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> 
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">c1</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">c2</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">c3</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">c4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">DB.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>107</span> 
<span class='line'>108</span> 
<span class='line'>109</span> 
<span class='line'>110</span> </span><span class="COMM">/**
<span class='line'>111</span>  * EME-PKCS1-v1_5 decoder as defined in PKCS#1 V2.1 chapter 7.2.2
<span class='line'>112</span>  *
<span class='line'>113</span>  * @param {ByteString} em encoded messages after RSA decrypt
<span class='line'>114</span>  * @type ByteString
<span class='line'>115</span>  * @return null if padding error or recovered message
<span class='line'>116</span>  */</span><span class="WHIT">
<span class='line'>117</span> </span><span class="NAME">PKCS1.decode_EME_V15</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">em</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">em.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">em.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> 
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">em.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">em.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> 
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c3</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">em.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> 
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">c1</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">c2</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">c3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">em.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>130</span> 
<span class='line'>131</span> 
<span class='line'>132</span> 
<span class='line'>133</span> </span><span class="NAME">PKCS1.ALLFF</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="COMM">/**
<span class='line'>136</span>  * EMSA-PKCS-v1_5 encoder as defined in PKCS#1 V2.1 chapter 9.2
<span class='line'>137</span>  *
<span class='line'>138</span>  * This method uses the length of the hash to determine the hash algorithm, i.e. MD5(16), SHA-1(20), SHA-224(28), SHA-256(32), SHA-384(48) or SHA-512(64)
<span class='line'>139</span>  *
<span class='line'>140</span>  * @param {Number} keysize the key size in bits
<span class='line'>141</span>  * @param {ByteString} hash the hash value
<span class='line'>142</span>  * @type ByteString
<span class='line'>143</span>  * @return the encoded message
<span class='line'>144</span>  */</span><span class="WHIT">
<span class='line'>145</span> </span><span class="NAME">PKCS1.encode_EMSA_V15</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">hash.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-md5"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">28</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha224"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">48</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid hash length"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">di</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">			    </span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">		     </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">di.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">em</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="STRN">"0001"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pslen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">t.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pslen</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pslen</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">pslen</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">		</span><span class="NAME">em.append</span><span class="PUNC">(</span><span class="NAME">PKCS1.ALLFF.left</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">		</span><span class="NAME">pslen</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="NAME">em.append</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="NAME">em.append</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">em.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>188</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2015 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview PKCS#10 Decoder
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/x509/PKIXCommon'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">X509Name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/x509/X509Name'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">X509Name</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="COMM">/**
<span class='line'> 32</span>  * Class supporting PKCS#10 certificate signing requests
<span class='line'> 33</span>  *
<span class='line'> 34</span>  * @param {ASN1} req the certificate request
<span class='line'> 35</span>  */</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PKCS10</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 37</span> 
<span class='line'> 38</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="WHIT">		</span><span class="NAME">this.req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">asn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">		</span><span class="NAME">this.req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">asn</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be either type of ByteString or ASN1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.reqInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.req.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="NAME">this.sigAlg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.req.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="NAME">this.sig</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.req.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 51</span> 
<span class='line'> 52</span> </span><span class="NAME">exports.PKCS10</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="NAME">PKCS10.RSA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"rsaEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">PKCS10.RSA_PSS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="NAME">PKCS10.EC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ecPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="COMM">/**
<span class='line'> 61</span>  * Get the encoded request
<span class='line'> 62</span>  *
<span class='line'> 63</span>  * @return the encoded request
<span class='line'> 64</span>  * @type ByteString
<span class='line'> 65</span>  */</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="NAME">PKCS10.prototype.getBytes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.req.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> 
<span class='line'> 72</span> </span><span class="COMM">/**
<span class='line'> 73</span>  * Gets the subject name as TLV object
<span class='line'> 74</span>  *
<span class='line'> 75</span>  * @return the issuer RDNSequence
<span class='line'> 76</span>  * @type ASN1
<span class='line'> 77</span>  */</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="NAME">PKCS10.prototype.getSubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.reqInfo.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> 
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="COMM">/**
<span class='line'> 85</span>  * Get the public key
<span class='line'> 86</span>  *
<span class='line'> 87</span>  * @type key
<span class='line'> 88</span>  * @return the public key
<span class='line'> 89</span>  */</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="NAME">PKCS10.prototype.getPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.reqInfo.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bitString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.reqInfo.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// subjectPublicKey</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="NAME">bitString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.removeLeadingZeroBytes</span><span class="PUNC">(</span><span class="NAME">bitString</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">algorithm.equals</span><span class="PUNC">(</span><span class="NAME">PKCS10.RSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">algorithm.equals</span><span class="PUNC">(</span><span class="NAME">PKCS10.RSA_PSS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">bitString</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.removeLeadingZeroBytes</span><span class="PUNC">(</span><span class="NAME">p.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.removeLeadingZeroBytes</span><span class="PUNC">(</span><span class="NAME">p.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.reqInfo.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bitString.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Only uncompressed keys supported (04)"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bitString.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bitString.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bitString.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>112</span> 
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>115</span> 
<span class='line'>116</span> 
<span class='line'>117</span> 
<span class='line'>118</span> </span><span class="COMM">/**
<span class='line'>119</span>  * Get the signature algorithm as Crypto.X constant
<span class='line'>120</span>  *
<span class='line'>121</span>  * @type Number
<span class='line'>122</span>  * @return the signature algorithm
<span class='line'>123</span>  */</span><span class="WHIT">
<span class='line'>124</span> </span><span class="NAME">PKCS10.prototype.getSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algOID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sigAlg.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sigAlg.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">param</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sigAlg.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.decodeSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">algOID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">param</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> 
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">alg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid algorithm"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>136</span> 
<span class='line'>137</span> 
<span class='line'>138</span> 
<span class='line'>139</span> </span><span class="COMM">/**
<span class='line'>140</span>  * Get the signature value
<span class='line'>141</span>  *
<span class='line'>142</span>  * @type ByteString
<span class='line'>143</span>  * @return the signature
<span class='line'>144</span>  */</span><span class="WHIT">
<span class='line'>145</span> </span><span class="NAME">PKCS10.prototype.getSignature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sig.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signature.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signature.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>153</span> 
<span class='line'>154</span> 
<span class='line'>155</span> 
<span class='line'>156</span> </span><span class="COMM">/**
<span class='line'>157</span>  * Verify signature
<span class='line'>158</span>  *
<span class='line'>159</span>  * @param {Key} pubKey optional public key to use for verification
<span class='line'>160</span>  * @type boolean
<span class='line'>161</span>  * @return true if signature is valid
<span class='line'>162</span>  */</span><span class="WHIT">
<span class='line'>163</span> </span><span class="NAME">PKCS10.prototype.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pubKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">pubKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSignatureAlgorithm</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSignature</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">crypto.verify</span><span class="PUNC">(</span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.reqInfo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> 
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="NAME">PKCS10.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"PKCS#10 Request:"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">k.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Type=RSA,"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Type=EC,"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curve</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ASN1.nameForObjectIdentifier</span><span class="PUNC">(</span><span class="NAME">k.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">curve</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">			</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Curve="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">curve</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="NAME">s</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Size="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">k.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSubject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509Name</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">xName.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>196</span> 
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>199</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Basic helper functions to convert PKCS#8 data to GP keys and vice versa
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Empty constructor
<span class='line'> 31</span>  */</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PKCS8</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">exports</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT">	</span><span class="NAME">exports.PKCS8</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> 
<span class='line'> 38</span> 
<span class='line'> 39</span> </span><span class="NAME">PKCS8.idEcPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ecPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="NAME">PKCS8.rsaEncryption</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"1.2.840.113549.1.1.1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> 
<span class='line'> 42</span> </span><span class="COMM">/**
<span class='line'> 43</span>  * Convert x/y coordinates to uncompressed format
<span class='line'> 44</span>  *
<span class='line'> 45</span>  * @param {ByteString} x the x coordinate
<span class='line'> 46</span>  * @param {ByteString} y the y coordinate
<span class='line'> 47</span>  * @type ByteString
<span class='line'> 48</span>  * @return ByteString containing compressed format
<span class='line'> 49</span>  *
<span class='line'> 50</span>  */</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="NAME">PKCS8.encodeUncompressedECPoint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">,</span><span class="NAME">y</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 52</span> 
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> 
<span class='line'> 55</span> </span><span class="WHIT">	</span><span class="COMM">// uncompressed encoding</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">x</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> </span><span class="COMM">/**
<span class='line'> 66</span>  * Convert uncompressed format to x and y coordinates
<span class='line'> 67</span>  *
<span class='line'> 68</span>  * @param {ByteString} compressed point
<span class='line'> 69</span>  * @type Object
<span class='line'> 70</span>  * @return Object with ByteString properties x and y
<span class='line'> 71</span>  *
<span class='line'> 72</span>  */</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="NAME">PKCS8.decodeUncompressedECPoint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">uncompressedPoint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="COMM">// Determine the size of the coordinates ignoring the indicator byte '04'</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">uncompressedPoint.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">xValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">uncompressedPoint.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">yValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">uncompressedPoint.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sizeOfCoordinate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> 
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">:</span><span class="NAME">xValue</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">:</span><span class="NAME">yValue</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 85</span> 
<span class='line'> 86</span> 
<span class='line'> 87</span> 
<span class='line'> 88</span> </span><span class="COMM">/**
<span class='line'> 89</span>  * Integer to octet string conversion
<span class='line'> 90</span>  *
<span class='line'> 91</span>  * @param {ByteString} value the encoded integer value
<span class='line'> 92</span>  * @param {Number} the number of digits
<span class='line'> 93</span>  * @type ByteString
<span class='line'> 94</span>  * @return the truncated or padded result
<span class='line'> 95</span>  */</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="NAME">PKCS8.I2O</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.PAD.left</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>105</span> </span><span class="NAME">PKCS8.PAD</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="COMM">/**
<span class='line'>110</span>  * Strips leading zeros of a ByteString
<span class='line'>111</span>  *
<span class='line'>112</span>  * @param {ByteString} value the ByteString value
<span class='line'>113</span>  * @return the stripped ByteString object, may be an empty ByteString
<span class='line'>114</span>  * @type ByteString
<span class='line'>115</span>  */</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">PKCS8.stripLeadingZeros</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">size</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">limit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="NAME">limit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">size</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>122</span> 
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">limit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>128</span> 
<span class='line'>129</span> 
<span class='line'>130</span> 
<span class='line'>131</span> </span><span class="COMM">/**
<span class='line'>132</span>  * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
<span class='line'>133</span>  *
<span class='line'>134</span>  * This prevent interpretation of the integer representation if converted into
<span class='line'>135</span>  * a signed ASN1 INTEGER.
<span class='line'>136</span>  *
<span class='line'>137</span>  * @param {ByteString} value the value to convert
<span class='line'>138</span>  * @return the converted value
<span class='line'>139</span>  * @type ByteString
<span class='line'>140</span>  */</span><span class="WHIT">
<span class='line'>141</span> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> 
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>152</span> 
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> 
<span class='line'>156</span> 
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="COMM">/**
<span class='line'>159</span>  * Encode a given GP ECC private key as specified by the PKCS#8 format
<span class='line'>160</span>  *
<span class='line'>161</span>  * @param {Key} the private key object that should be encoded
<span class='line'>162</span>  * @return the encoded PKCS#8 private key
<span class='line'>163</span>  * @type ByteString
<span class='line'>164</span>  */</span><span class="WHIT">
<span class='line'>165</span> </span><span class="NAME">PKCS8.encodeECCKeyUsingPKCS8Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">privateKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> 
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="COMM">// Set the version number - must be zero</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyInfo.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">privateKeyAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyAlgorithm.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.idEcPublicKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">domainInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="COMM">// Cofactor - must be 1</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="NAME">domainInfo.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">field</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> 
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="COMM">// we are using a prime field</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="NAME">field.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"prime-field"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// prime field</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">primeOrder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">primeOrder.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// signed int? -> add 0x00</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">		</span><span class="NAME">field.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="NAME">field.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="NAME">domainInfo.add</span><span class="PUNC">(</span><span class="NAME">field</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="COMM">// Coefficients a and b</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">coeff</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="COMM">// first coefficient</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="NAME">coeff.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> 
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="COMM">// second coefficient</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="NAME">coeff.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> 
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="NAME">domainInfo.add</span><span class="PUNC">(</span><span class="NAME">coeff</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> 
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="COMM">// Base point (uncompressed)</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="NAME">domainInfo.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeUncompressedECPoint</span><span class="PUNC">(</span><span class="NAME">gx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">gy</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="COMM">// group order generated by the base point</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">groupOrder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">groupOrder.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// signed int? -> add 0x00</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">		</span><span class="NAME">domainInfo.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">		</span><span class="NAME">domainInfo.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyAlgorithm.add</span><span class="PUNC">(</span><span class="NAME">domainInfo</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> 
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="COMM">// encode the key information</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyInfo.add</span><span class="PUNC">(</span><span class="NAME">privateKeyAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> 
<span class='line'>223</span> </span><span class="WHIT">	</span><span class="COMM">// encode the private key</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encodedPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> 
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="NAME">key.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">	</span><span class="NAME">key.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pk</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="NAME">encodedPrivateKey.add</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> 
<span class='line'>233</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyInfo.add</span><span class="PUNC">(</span><span class="NAME">encodedPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> 
<span class='line'>235</span> </span><span class="COMM">//	print(privateKeyInfo);</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">privateKeyInfo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>238</span> 
<span class='line'>239</span> 
<span class='line'>240</span> 
<span class='line'>241</span> </span><span class="COMM">/**
<span class='line'>242</span>  * Encode RSA private key as defined in PKCS#1
<span class='line'>243</span>  *
<span class='line'>244</span>  * RSAPrivateKey ::= SEQUENCE {
<span class='line'>245</span>  *     version           Version,
<span class='line'>246</span>  *     modulus           INTEGER,  -- n
<span class='line'>247</span>  *     publicExponent    INTEGER,  -- e
<span class='line'>248</span>  *     privateExponent   INTEGER,  -- d
<span class='line'>249</span>  *     prime1            INTEGER,  -- p
<span class='line'>250</span>  *     prime2            INTEGER,  -- q
<span class='line'>251</span>  *     exponent1         INTEGER,  -- d mod (p-1)
<span class='line'>252</span>  *     exponent2         INTEGER,  -- d mod (q-1)
<span class='line'>253</span>  *     coefficient       INTEGER,  -- (inverse of q) mod p
<span class='line'>254</span>  *     otherPrimeInfos   OtherPrimeInfos OPTIONAL
<span class='line'>255</span>  * }
<span class='line'>256</span>  * @param {Key} privateKey the private RSA key in CRT format
<span class='line'>257</span>  * @type ByteString
<span class='line'>258</span>  * @return the encoded RSA key
<span class='line'>259</span>  */</span><span class="WHIT">
<span class='line'>260</span> </span><span class="NAME">PKCS8.encodeRSAKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsaPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> 
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">		</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">		</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">		</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Private Exponent not at interface for CRT format</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">	</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_Q</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">	</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DP1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DQ1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="NAME">rsaPrivateKey.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_PQ</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> 
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsaPrivateKey.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>281</span> 
<span class='line'>282</span> 
<span class='line'>283</span> 
<span class='line'>284</span> </span><span class="COMM">/**
<span class='line'>285</span>  * Encode a given GP RSA private key as specified by the PKCS#8 format
<span class='line'>286</span>  *
<span class='line'>287</span>  * @param {Key} the private key object that should be encoded
<span class='line'>288</span>  * @return the encoded PKCS#8 private key
<span class='line'>289</span>  * @type ByteString
<span class='line'>290</span>  */</span><span class="WHIT">
<span class='line'>291</span> </span><span class="NAME">PKCS8.encodeRSAKeyUsingPKCS8Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">privateKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> 
<span class='line'>294</span> </span><span class="WHIT">	</span><span class="COMM">// Set the version number - must be zero</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyInfo.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> 
<span class='line'>297</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">privateKeyAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyAlgorithm.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.rsaEncryption</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyAlgorithm.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.NULL</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> 
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="COMM">// encode the key information</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyInfo.add</span><span class="PUNC">(</span><span class="NAME">privateKeyAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="WHIT">	</span><span class="COMM">// encode the private key</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">encodedPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeRSAKey</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> 
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="NAME">privateKeyInfo.add</span><span class="PUNC">(</span><span class="NAME">encodedPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> 
<span class='line'>309</span> </span><span class="COMM">//	print(privateKeyInfo);</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">privateKeyInfo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>312</span> 
<span class='line'>313</span> 
<span class='line'>314</span> 
<span class='line'>315</span> </span><span class="COMM">/**
<span class='line'>316</span>  * Encode a given GP private key as specified by the PKCS#8 format
<span class='line'>317</span>  *
<span class='line'>318</span>  * For now we only support the encoding of ECC private keys in a prime field
<span class='line'>319</span>  *
<span class='line'>320</span>  * @param {Key} the private key object that should be encoded
<span class='line'>321</span>  * @return the encoded PKCS#8 private key
<span class='line'>322</span>  * @type ByteString
<span class='line'>323</span>  */</span><span class="WHIT">
<span class='line'>324</span> </span><span class="NAME">PKCS8.encodeKeyUsingPKCS8Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>325</span> 
<span class='line'>326</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">privateKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeECCKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeRSAKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>332</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>333</span> 
<span class='line'>334</span> 
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="COMM">/**
<span class='line'>337</span>  * Decode a given PKCS#8 ECC private key from the given TLV objects and create a GP key object
<span class='line'>338</span>  *
<span class='line'>339</span>  * For now we only support the decoding of ECC private keys in a prime field
<span class='line'>340</span>  *
<span class='line'>341</span>  * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
<span class='line'>342</span>  * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
<span class='line'>343</span>  * @return the GP key object
<span class='line'>344</span>  * @type Key
<span class='line'>345</span>  */</span><span class="WHIT">
<span class='line'>346</span> </span><span class="NAME">PKCS8.decodeECCKeyFromPKCS8Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">domainParameter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodedKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>349</span> 
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> 
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">domainParameter.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">domainParameter.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">		</span><span class="COMM">// Decode the domain parameters</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cofactor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domainParameter.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cofactor.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> 
<span class='line'>359</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">order</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domainParameter.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">order.value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>361</span> 
<span class='line'>362</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">coeff_A</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domainParameter.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">coeff_A.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>364</span> 
<span class='line'>365</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">coeff_B</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domainParameter.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">coeff_B.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> 
<span class='line'>368</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">generatorPoint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domainParameter.get</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> 
<span class='line'>370</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">coordinates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeUncompressedECPoint</span><span class="PUNC">(</span><span class="NAME">generatorPoint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> 
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">coordinates.x</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">coordinates.y</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>374</span> 
<span class='line'>375</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">groupOrder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">domainParameter.get</span><span class="PUNC">(</span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> 
<span class='line'>377</span> </span><span class="WHIT">		</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">groupOrder.value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>379</span> 
<span class='line'>380</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_D</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodedKey.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> 
<span class='line'>382</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>383</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>384</span> 
<span class='line'>385</span> 
<span class='line'>386</span> 
<span class='line'>387</span> </span><span class="COMM">/**
<span class='line'>388</span>  * Decode a PKCS#1 encoded RSA private key from the given TLV objects and create a GP key object with the private key
<span class='line'>389</span>  *
<span class='line'>390</span>  * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
<span class='line'>391</span>  * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
<span class='line'>392</span>  * @return the GP key object
<span class='line'>393</span>  * @type Key
<span class='line'>394</span>  */</span><span class="WHIT">
<span class='line'>395</span> </span><span class="NAME">PKCS8.decodeRSAPrivateKeyFromPKCS1Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>396</span> 
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> 
<span class='line'>399</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>400</span> 
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>404</span> 
<span class='line'>405</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">e.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">e.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>410</span> 
<span class='line'>411</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> 
<span class='line'>413</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">,</span><span class="WHIT">   </span><span class="NAME">p</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_Q</span><span class="PUNC">,</span><span class="WHIT">   </span><span class="NAME">PKCS8.I2O</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DP1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.I2O</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">6</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DQ1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.I2O</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_PQ</span><span class="PUNC">,</span><span class="WHIT">  </span><span class="NAME">PKCS8.I2O</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> 
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>422</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>423</span> 
<span class='line'>424</span> 
<span class='line'>425</span> 
<span class='line'>426</span> </span><span class="COMM">/**
<span class='line'>427</span>  * Decode a PKCS#1 encoded RSA private key from the given TLV objects and create a GP key object with the public key
<span class='line'>428</span>  *
<span class='line'>429</span>  * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
<span class='line'>430</span>  * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
<span class='line'>431</span>  * @return the GP key object
<span class='line'>432</span>  * @type Key
<span class='line'>433</span>  */</span><span class="WHIT">
<span class='line'>434</span> </span><span class="NAME">PKCS8.decodeRSAPublicKeyFromPKCS1Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>435</span> 
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>437</span> 
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> 
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>443</span> 
<span class='line'>444</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">e.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">e.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>449</span> 
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> 
<span class='line'>452</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">,</span><span class="WHIT">  </span><span class="NAME">PKCS8.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="NAME">key.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKCS8.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> 
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>457</span> 
<span class='line'>458</span> 
<span class='line'>459</span> 
<span class='line'>460</span> </span><span class="COMM">/**
<span class='line'>461</span>  * Decode a given PKCS#8 RSA private key from the given TLV objects and create a GP key object
<span class='line'>462</span>  *
<span class='line'>463</span>  * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
<span class='line'>464</span>  * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
<span class='line'>465</span>  * @return the GP key object
<span class='line'>466</span>  * @type Key
<span class='line'>467</span>  */</span><span class="WHIT">
<span class='line'>468</span> </span><span class="NAME">PKCS8.decodeRSAKeyFromPKCS8Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">algparam</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>469</span> 
<span class='line'>470</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>471</span> 
<span class='line'>472</span> </span><span class="WHIT">	</span><span class="NAME">key.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>473</span> 
<span class='line'>474</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">algparam.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">algparam.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">algparam.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> 
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeRSAPrivateKeyFromPKCS1Format</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>480</span> 
<span class='line'>481</span> 
<span class='line'>482</span> 
<span class='line'>483</span> </span><span class="COMM">/**
<span class='line'>484</span>  * Decode a given PKCS#8 private key from the given ByteString and create a GP key object
<span class='line'>485</span>  *
<span class='line'>486</span>  * For now we only support the decoding of ECC private keys in a prime field
<span class='line'>487</span>  *
<span class='line'>488</span>  * @param {ByteString} the private key object in PKCS#8 format
<span class='line'>489</span>  * @return the GP key object
<span class='line'>490</span>  * @type Key
<span class='line'>491</span>  */</span><span class="WHIT">
<span class='line'>492</span> </span><span class="NAME">PKCS8.decodeKeyFromPKCS8Format</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">encodedKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p8</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">encodedKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span> 
<span class='line'>495</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p8.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p8.elements</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> 
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">version</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p8.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">version.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">version.value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> 
<span class='line'>502</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pkai</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p8.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">pkai.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">pkai.isconstructed</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">pkai.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pkai.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>507</span> 
<span class='line'>508</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">keytype.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>509</span> 
<span class='line'>510</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algparam</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pkai.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span> 
<span class='line'>512</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">privateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p8.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">privateKey.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">privateKey.isconstructed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">		</span><span class="NAME">privateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">privateKey.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT">		</span><span class="NAME">privateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">privateKey.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>518</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>519</span> 
<span class='line'>520</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype.value.equals</span><span class="PUNC">(</span><span class="NAME">PKCS8.rsaEncryption</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>521</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeRSAKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">algparam</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype.value.equals</span><span class="PUNC">(</span><span class="NAME">PKCS8.idEcPublicKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>523</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeECCKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">algparam</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Unknown key type "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keytype.value.toString</span><span class="PUNC">(</span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>527</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>528</span> 
<span class='line'>529</span> 
<span class='line'>530</span> 
<span class='line'>531</span> </span><span class="COMM">/**
<span class='line'>532</span>  * Simple self-test
<span class='line'>533</span>  */</span><span class="WHIT">
<span class='line'>534</span> </span><span class="NAME">PKCS8.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>535</span> 
<span class='line'>536</span> </span><span class="WHIT">	</span><span class="COMM">// Set OID for EC curve</span><span class="WHIT">
<span class='line'>537</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ecCurve</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"1.3.36.3.3.2.8.1.1.7"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>538</span> 
<span class='line'>539</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="STRN">"BC"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> 
<span class='line'>541</span> </span><span class="WHIT">    </span><span class="COMM">// Create empty public key object</span><span class="WHIT">
<span class='line'>542</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>543</span> </span><span class="WHIT">    </span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>544</span> </span><span class="WHIT">    </span><span class="NAME">pubKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">ecCurve</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> 
<span class='line'>546</span> </span><span class="WHIT">    </span><span class="COMM">// Create empty private key object</span><span class="WHIT">
<span class='line'>547</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>548</span> </span><span class="WHIT">    </span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>549</span> </span><span class="WHIT">    </span><span class="NAME">priKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">ecCurve</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>550</span> 
<span class='line'>551</span> </span><span class="WHIT">    </span><span class="COMM">// Generate key pair</span><span class="WHIT">
<span class='line'>552</span> </span><span class="WHIT">    </span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>553</span> 
<span class='line'>554</span> </span><span class="WHIT">    </span><span class="COMM">// Encode</span><span class="WHIT">
<span class='line'>555</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p8Key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> 
<span class='line'>557</span> </span><span class="WHIT">    </span><span class="COMM">// Decode</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">decodedKeyObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">p8Key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>559</span> 
<span class='line'>560</span> </span><span class="WHIT">    </span><span class="COMM">// Compare</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_D</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_D</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> 
<span class='line'>563</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>564</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>565</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">pubKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">pubKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span> 
<span class='line'>568</span> </span><span class="WHIT">    </span><span class="COMM">// Encode</span><span class="WHIT">
<span class='line'>569</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">refp8Key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>570</span> 
<span class='line'>571</span> </span><span class="WHIT">    </span><span class="COMM">// Compare</span><span class="WHIT">
<span class='line'>572</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p8Key.equals</span><span class="PUNC">(</span><span class="NAME">refp8Key</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>573</span> 
<span class='line'>574</span> 
<span class='line'>575</span> </span><span class="WHIT">    </span><span class="COMM">// Create empty public key object</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">    </span><span class="NAME">pubKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> </span><span class="WHIT">    </span><span class="NAME">pubKey.setSize</span><span class="PUNC">(</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>579</span> 
<span class='line'>580</span> </span><span class="WHIT">    </span><span class="COMM">// Create empty private key object</span><span class="WHIT">
<span class='line'>581</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>582</span> </span><span class="WHIT">    </span><span class="NAME">priKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>583</span> 
<span class='line'>584</span> </span><span class="WHIT">    </span><span class="COMM">// Generate key pair</span><span class="WHIT">
<span class='line'>585</span> </span><span class="WHIT">    </span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>586</span> 
<span class='line'>587</span> </span><span class="WHIT">    </span><span class="COMM">// Encode</span><span class="WHIT">
<span class='line'>588</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p8Key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>589</span> 
<span class='line'>590</span> </span><span class="WHIT">    </span><span class="COMM">// Decode</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">decodedKeyObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">p8Key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>592</span> 
<span class='line'>593</span> </span><span class="WHIT">    </span><span class="COMM">// Compare</span><span class="WHIT">
<span class='line'>594</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>595</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_Q</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_Q</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>596</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DP1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DP1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>597</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DQ1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DQ1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>598</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_PQ</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_PQ</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>599</span> 
<span class='line'>600</span> </span><span class="WHIT">    </span><span class="COMM">// Encode</span><span class="WHIT">
<span class='line'>601</span> </span><span class="WHIT">    </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">refp8Key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">decodedKeyObject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>602</span> 
<span class='line'>603</span> </span><span class="WHIT">    </span><span class="COMM">// Compare</span><span class="WHIT">
<span class='line'>604</span> </span><span class="WHIT">    </span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">p8Key.equals</span><span class="PUNC">(</span><span class="NAME">refp8Key</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>605</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>606</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Remote Application Management over HTTP (RAMoverHTTP) client
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="COMM">/**
<span class='line'> 28</span>  * Create a client instance for attaching a card to a server via the RAMOverHTTP procotol
<span class='line'> 29</span>  *
<span class='line'> 30</span>  * @Class Class implementing a RAMOverHTTP client
<span class='line'> 31</span>  * @constructor
<span class='line'> 32</span>  * @param {Card} card the card instance to attach
<span class='line'> 33</span>  * @param {String} url the URL to connect to
<span class='line'> 34</span>  * @param {String} session the session cookie
<span class='line'> 35</span>  */</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">RAMClient</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">session</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="WHIT">	</span><span class="NAME">this.card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">card</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="WHIT">	</span><span class="NAME">this.url</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="WHIT">	</span><span class="NAME">this.session</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">session</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span class="NAME">this.httpCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.apduCount</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.aPDULimit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">100000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.httpcount</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.httplimit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">100000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">this.forceFailSW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.returnAllSW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> 
<span class='line'> 50</span> 
<span class='line'> 51</span> </span><span class="NAME">exports.RAMClient</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">RAMClient</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> 
<span class='line'> 53</span> 
<span class='line'> 54</span> 
<span class='line'> 55</span> </span><span class="COMM">/**
<span class='line'> 56</span>  * Prepend a 0, if the encoded integer is interpreted as negative value otherwise
<span class='line'> 57</span>  */</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="NAME">RAMClient.asSignedInteger</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">enc.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">		</span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 65</span> 
<span class='line'> 66</span> 
<span class='line'> 67</span> 
<span class='line'> 68</span> </span><span class="COMM">/**
<span class='line'> 69</span>  * @private
<span class='line'> 70</span>  */</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="NAME">RAMClient.prototype.encodeInitiation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">atr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xE8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xC0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">atr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.maxCAPDUSize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">		</span><span class="NAME">pit.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xC1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">RAMClient.asSignedInteger</span><span class="PUNC">(</span><span class="NAME">this.maxCAPDUSize</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.maxRAPDUSize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">		</span><span class="NAME">pit.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xC2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">RAMClient.asSignedInteger</span><span class="PUNC">(</span><span class="NAME">this.maxRAPDUSize</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pit.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> 
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="COMM">/**
<span class='line'> 85</span>  * Set a notification listener.
<span class='line'> 86</span>  *
<span class='line'> 87</span>  * The listener object must implement a notificationReceived() method that
<span class='line'> 88</span>  * receives the three parameter id, msg and ttc.
<span class='line'> 89</span>  *
<span class='line'> 90</span>  * @param {Object} the listener object implementing notificationReceived()
<span class='line'> 91</span>  */</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="NAME">RAMClient.prototype.setNotificationListener</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">notificationListener</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="NAME">this.notificationListener</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">notificationListener</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> 
<span class='line'> 97</span> 
<span class='line'> 98</span> </span><span class="COMM">/**
<span class='line'> 99</span>  * Set a limiting number of APDUs
<span class='line'>100</span>  *
<span class='line'>101</span>  * This is helpful for testing to intercept processing after a certain number
<span class='line'>102</span>  * of APDUs (Default 100000).
<span class='line'>103</span>  *
<span class='line'>104</span>  * @param {Number} aPDULimit the maximum number of APDU processing in update()
<span class='line'>105</span>  * @param {Number} forceFailSW the final SW1/SW2
<span class='line'>106</span>  */</span><span class="WHIT">
<span class='line'>107</span> </span><span class="NAME">RAMClient.prototype.setAPDULimit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">aPDULimit</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceFailSW</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="NAME">this.aPDULimit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">aPDULimit</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">	</span><span class="NAME">this.forceFailSW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">forceFailSW</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>111</span> 
<span class='line'>112</span> 
<span class='line'>113</span> 
<span class='line'>114</span> </span><span class="COMM">/**
<span class='line'>115</span>  * Set a limiting number of HTTP roundtrips
<span class='line'>116</span>  *
<span class='line'>117</span>  * This is helpful for testing to intercept processing after a certain number
<span class='line'>118</span>  * of HTTP roundtrips (Default 100000).
<span class='line'>119</span>  *
<span class='line'>120</span>  * @param {Number} aPDULimit the maximum number of APDU processing in update()
<span class='line'>121</span>  * @param {Number} forceFailSW the final SW1/SW2
<span class='line'>122</span>  */</span><span class="WHIT">
<span class='line'>123</span> </span><span class="NAME">RAMClient.prototype.setHTTPLimit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">httplimit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="NAME">this.httplimit</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">httplimit</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>126</span> 
<span class='line'>127</span> 
<span class='line'>128</span> 
<span class='line'>129</span> </span><span class="COMM">/**
<span class='line'>130</span>  * Set a maximum command and response APDU size
<span class='line'>131</span>  *
<span class='line'>132</span>  * @param {Number} maxCAPDUSize The maximum number of bytes in the command APDU
<span class='line'>133</span>  * @param {Number} maxRAPDUSize The maximum number of bytes in the response APDU
<span class='line'>134</span>  */</span><span class="WHIT">
<span class='line'>135</span> </span><span class="NAME">RAMClient.prototype.setMaxAPDUSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">maxCAPDUSize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">maxRAPDUSize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="NAME">this.maxCAPDUSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">maxCAPDUSize</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="NAME">this.maxRAPDUSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">maxRAPDUSize</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>139</span> 
<span class='line'>140</span> 
<span class='line'>141</span> 
<span class='line'>142</span> </span><span class="COMM">/**
<span class='line'>143</span>  * @private
<span class='line'>144</span>  */</span><span class="WHIT">
<span class='line'>145</span> </span><span class="NAME">RAMClient.prototype.getURLConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.connectionFactory</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">		</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.connectionFactory.getConnection</span><span class="PUNC">(</span><span class="NAME">this.url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.session</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">URLConnection</span><span class="PUNC">(</span><span class="NAME">this.url</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.session</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="COMM">//			print(typeof(this.session));</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">			</span><span class="NAME">c.addHeaderField</span><span class="PUNC">(</span><span class="STRN">"Cookie"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.session</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="NAME">c.addHeaderField</span><span class="PUNC">(</span><span class="STRN">"Content-Type"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"application/org.openscdp-content-mgt-response;version=1.0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>158</span> 
<span class='line'>159</span> 
<span class='line'>160</span> 
<span class='line'>161</span> </span><span class="COMM">/**
<span class='line'>162</span>  * @private
<span class='line'>163</span>  */</span><span class="WHIT">
<span class='line'>164</span> </span><span class="NAME">RAMClient.prototype.initialConnect</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getURLConnection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">atr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.getATR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.encodeInitiation</span><span class="PUNC">(</span><span class="NAME">atr.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.postBinary</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> 
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cookie</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.getHeaderField</span><span class="PUNC">(</span><span class="STRN">"Set-Cookie"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cookie</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="COMM">//		print(cookie);</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">		</span><span class="NAME">this.session</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cookie</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="NAME">this.httpCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.responseCode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cst</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>179</span> 
<span class='line'>180</span> 
<span class='line'>181</span> 
<span class='line'>182</span> </span><span class="COMM">/**
<span class='line'>183</span>  * @private
<span class='line'>184</span>  */</span><span class="WHIT">
<span class='line'>185</span> </span><span class="NAME">RAMClient.prototype.next</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">rst</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getURLConnection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.postBinary</span><span class="PUNC">(</span><span class="NAME">rst</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> 
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="NAME">this.httpCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c.responseCode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cst</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="COMM">/**
<span class='line'>196</span>  * @private
<span class='line'>197</span>  */</span><span class="WHIT">
<span class='line'>198</span> </span><span class="NAME">RAMClient.prototype.processAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">capdu</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rapdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.plainApdu</span><span class="PUNC">(</span><span class="NAME">capdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="NAME">rapdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rapdu.concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="NAME">this.apduCount</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.apduCount</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">this.aPDULimit</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.forceFailSW</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="NAME">rapdu</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.forceFailSW</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x23</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">rapdu</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>208</span> 
<span class='line'>209</span> 
<span class='line'>210</span> 
<span class='line'>211</span> </span><span class="COMM">/**
<span class='line'>212</span>  * @private
<span class='line'>213</span>  */</span><span class="WHIT">
<span class='line'>214</span> </span><span class="NAME">RAMClient.prototype.processReset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">atr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.reset</span><span class="PUNC">(</span><span class="NAME">Card.RESET_COLD</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">atr</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Atr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">		</span><span class="NAME">atr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">atr.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xC0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">atr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> 
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="COMM">/**
<span class='line'>225</span>  * @private
<span class='line'>226</span>  */</span><span class="WHIT">
<span class='line'>227</span> </span><span class="NAME">RAMClient.prototype.processNotify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.notificationListener</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">e.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toSigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">e.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toString</span><span class="PUNC">(</span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ttc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">			</span><span class="NAME">ttc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">e.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">		</span><span class="NAME">this.notificationListener.notificationReceived</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ttc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Notify:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>240</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>241</span> 
<span class='line'>242</span> 
<span class='line'>243</span> 
<span class='line'>244</span> </span><span class="NAME">RAMClient.SW9000</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"9000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> 
<span class='line'>246</span> </span><span class="COMM">/**
<span class='line'>247</span>  * @private
<span class='line'>248</span>  */</span><span class="WHIT">
<span class='line'>249</span> </span><span class="NAME">RAMClient.prototype.process</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cst</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>250</span> </span><span class="COMM">//	print(cst);</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cst</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="COMM">//	print(a);</span><span class="WHIT">
<span class='line'>253</span> 
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xAB</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> 
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> 
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">a.elements</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">		</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">e.tag</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">				</span><span class="COMM">// Abort processing of APDU sequence if SW != 9000</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">rsp.value.right</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">RAMClient.SW9000</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">					</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Abort sequence"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">					</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">					</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.elements</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">					</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">				</span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.processAPDU</span><span class="PUNC">(</span><span class="NAME">e.value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.returnAllSW</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">					</span><span class="NAME">rst.add</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">				</span><span class="NAME">cnt</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">				</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xC0</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">				</span><span class="NAME">rst.add</span><span class="PUNC">(</span><span class="NAME">this.processReset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">				</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0xE0</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">				</span><span class="NAME">this.processNotify</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">				</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> 
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.returnAllSW</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">		</span><span class="NAME">rst.add</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="NAME">rst.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">RAMClient.asSignedInteger</span><span class="PUNC">(</span><span class="NAME">cnt</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>289</span> </span><span class="COMM">//	print(rst);</span><span class="WHIT">
<span class='line'>290</span> </span><span class="COMM">//	print(rst.getBytes());</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rst.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>293</span> 
<span class='line'>294</span> 
<span class='line'>295</span> 
<span class='line'>296</span> </span><span class="COMM">/**
<span class='line'>297</span>  * Close connection, e.g. after exception on the client side
<span class='line'>298</span>  *
<span class='line'>299</span>  * @param {Number} id the message id
<span class='line'>300</span>  * @param {String} msg the closing message
<span class='line'>301</span>  */</span><span class="WHIT">
<span class='line'>302</span> </span><span class="NAME">RAMClient.prototype.close</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">msg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getURLConnection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>304</span> 
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xAB</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xE1</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">				 </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">RAMClient.asSignedInteger</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">				 </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">msg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">			    </span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">		      </span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> 
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.next</span><span class="PUNC">(</span><span class="NAME">rst</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.httpCode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.process</span><span class="PUNC">(</span><span class="NAME">cst</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">		</span><span class="NAME">cst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.next</span><span class="PUNC">(</span><span class="NAME">rst</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>317</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>318</span> 
<span class='line'>319</span> 
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="COMM">/**
<span class='line'>322</span>  * Perform update operation
<span class='line'>323</span>  */</span><span class="WHIT">
<span class='line'>324</span> </span><span class="NAME">RAMClient.prototype.update</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="NAME">this.httpCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT">	</span><span class="NAME">this.apduCount</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.initialConnect</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.httpCode</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.httpcount</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.httplimit</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">		</span><span class="NAME">this.httpcount</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.process</span><span class="PUNC">(</span><span class="NAME">cst</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">		</span><span class="NAME">cst</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.next</span><span class="PUNC">(</span><span class="NAME">rst</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>333</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>334</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2016 CardContact Systems GmbH
<span class='line'>  6</span>  * |'##> &lt;##'|  32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Online-CA Connection
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Creates a web service connector to access an online CA
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class Class implementing a CA web service connector
<span class='line'> 33</span>  * @constructor
<span class='line'> 34</span>  * @param {String} url the web service endpoint
<span class='line'> 35</span>  */</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">CAConnection</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="WHIT">	</span><span class="NAME">this.url</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="WHIT">	</span><span class="NAME">this.soapcon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SOAPConnection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="WHIT">	</span><span class="NAME">this.verbose</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span class="NAME">this.lastReturnCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 42</span> 
<span class='line'> 43</span> </span><span class="NAME">exports.CAConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CAConnection</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> 
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="COMM">/**
<span class='line'> 47</span>  * Get the last return code
<span class='line'> 48</span>  *
<span class='line'> 49</span>  * @returns the last return code received or null if none defined
<span class='line'> 50</span>  * @type String
<span class='line'> 51</span>  */</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="NAME">CAConnection.prototype.getLastReturnCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.lastReturnCode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 55</span> 
<span class='line'> 56</span> 
<span class='line'> 57</span> 
<span class='line'> 58</span> </span><span class="COMM">/**
<span class='line'> 59</span>  * Gets the last request
<span class='line'> 60</span>  *
<span class='line'> 61</span>  * @returns the last request
<span class='line'> 62</span>  * @type XML
<span class='line'> 63</span>  */</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="NAME">CAConnection.prototype.getLastRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.request</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> </span><span class="COMM">/**
<span class='line'> 71</span>  * Gets the last response
<span class='line'> 72</span>  *
<span class='line'> 73</span>  * @returns the last response
<span class='line'> 74</span>  * @type XML
<span class='line'> 75</span>  */</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="NAME">CAConnection.prototype.getLastResponse</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.response</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="COMM">/**
<span class='line'> 83</span>  * Close the connector and release allocated resources
<span class='line'> 84</span>  */</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="NAME">CAConnection.prototype.close</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="NAME">this.soapcon.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> 
<span class='line'> 89</span> 
<span class='line'> 90</span> 
<span class='line'> 91</span> </span><span class="COMM">/**
<span class='line'> 92</span>  * Request a certificate from the CA using a web service
<span class='line'> 93</span>  *
<span class='line'> 94</span>  * @param {ByteString} certreq the certificate request
<span class='line'> 95</span>  * @param {String} messageID the messageID for asynchronous requests (optional)
<span class='line'> 96</span>  * @param {String} responseURL the URL to which the asynchronous response is send (optional)
<span class='line'> 97</span>  * @returns the new certificates
<span class='line'> 98</span>  * @type ByteString[]
<span class='line'> 99</span>  */</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">CAConnection.prototype.requestCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">certreq</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">devicecert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">commonName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">eMailAddress</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">activationCode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> 
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="NAME">this.lastReturnCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> 
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">soapConnection</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SOAPConnection</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> 
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ns</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Namespace</span><span class="PUNC">(</span><span class="STRN">"http://www.openscdp.org/CAService"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> 
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">		</span><span class="PUNC">&lt;</span><span class="NAME">ns</span><span class="PUNC">:</span><span class="NAME">RequestCertificate</span><span class="WHIT"> </span><span class="NAME">xmlns</span><span class="PUNC">:</span><span class="NAME">ns</span><span class="PUNC">=</span><span class="PUNC">{</span><span class="NAME">ns</span><span class="PUNC">}</span><span class="PUNC">></span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">			</span><span class="PUNC">&lt;</span><span class="NAME">CertificateSigningRequest</span><span class="PUNC">></span><span class="PUNC">{</span><span class="NAME">certreq.toString</span><span class="PUNC">(</span><span class="NAME">BASE64</span><span class="PUNC">)</span><span class="PUNC">}</span><span class="PUNC">&lt;</span><span class="REGX">/CertificateSigningRequest>
<span class='line'>111</span> 			&lt;DeviceCertificate>{devicecert.toString(BASE64)}&lt;/</span><span class="NAME">DeviceCertificate</span><span class="PUNC">></span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">			</span><span class="PUNC">&lt;</span><span class="NAME">CommonName</span><span class="PUNC">></span><span class="PUNC">{</span><span class="NAME">commonName</span><span class="PUNC">}</span><span class="PUNC">&lt;</span><span class="REGX">/CommonName>
<span class='line'>113</span> 			&lt;eMailAddress>{eMailAddress}&lt;/</span><span class="NAME">eMailAddress</span><span class="PUNC">></span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">		</span><span class="PUNC">&lt;</span><span class="REGX">/ns:RequestCertificate>
<span class='line'>115</span> 
<span class='line'>116</span> 	if (activationCode) {
<span class='line'>117</span> 		request.eMailAddress += &lt;ActivationCode>{activationCode}&lt;/</span><span class="NAME">ActivationCode</span><span class="PUNC">></span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>119</span> 
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.verbose</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">request.toXMLString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>123</span> 
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="NAME">this.request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">request</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">response</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.soapcon.call</span><span class="PUNC">(</span><span class="NAME">this.url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">request</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.verbose</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">response.toXMLString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"SOAP call to "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.url</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" failed : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"CAConnection"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.DEVICE_ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"RequestCertificate failed with : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="NAME">this.response</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">response</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> 
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> 
<span class='line'>141</span> </span><span class="WHIT">	</span><span class="NAME">this.lastReturnCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">response.ReturnCode.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> 
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.lastReturnCode</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"ok"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>146</span> 
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="STRN">"Received certificates:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">response.Certificates.Certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">BASE64</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="NAME">certlist.push</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>153</span> 
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2011-2016 CardContact Systems GmbH
<span class='line'>  6</span>  * |'##> &lt;##'|  Schuelerweg 38, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview SmartCard-HSM Crypto Provider
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="WHIT">				</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSM</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMSymmetricKeySpecGenerator</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSMSymmetricKeySpecGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">HSMKeyStore</span><span class="WHIT">					</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/HSMKeyStore'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">HSMKeyStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> </span><span class="COMM">/**
<span class='line'> 35</span>  * Crypto Provider for accessing a SmartCard-HSM
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @param {SmartCardHSM} sc the associated SmartCard-HSM
<span class='line'> 38</span>  * @param {Number} slot the key domain slot. If undefined or -1 no key domain will be set
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">CryptoProvider</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">slot</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.slot</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">slot</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// the key domain slot</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.setSmartCardHSM</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.deleteIfExists</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> </span><span class="NAME">exports.CryptoProvider</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CryptoProvider</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> 
<span class='line'> 50</span> 
<span class='line'> 51</span> </span><span class="COMM">/**
<span class='line'> 52</span>  * Replace SmartCard-HSM
<span class='line'> 53</span>  *
<span class='line'> 54</span>  * @param {SmartCardHSM} sc the new SmartCard-HSM
<span class='line'> 55</span>  */</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="NAME">CryptoProvider.prototype.setSmartCardHSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">	</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">	</span><span class="NAME">this.ks</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">HSMKeyStore</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 60</span> 
<span class='line'> 61</span> 
<span class='line'> 62</span> 
<span class='line'> 63</span> </span><span class="COMM">/**
<span class='line'> 64</span>  * Release this crypto provider
<span class='line'> 65</span>  *
<span class='line'> 66</span>  * The release() method shall be called if the provider is not used anymore
<span class='line'> 67</span>  * Place the release in the finally statement of a try/catch block
<span class='line'> 68</span>  */</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="NAME">CryptoProvider.prototype.release</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 71</span> 
<span class='line'> 72</span> 
<span class='line'> 73</span> 
<span class='line'> 74</span> </span><span class="COMM">/**
<span class='line'> 75</span>  * Get crypto object
<span class='line'> 76</span>  *
<span class='line'> 77</span>  * This method is part of the API.
<span class='line'> 78</span>  *
<span class='line'> 79</span>  * @type HSMCrypto
<span class='line'> 80</span>  * @return the HSMCrypto object
<span class='line'> 81</span>  */</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="NAME">CryptoProvider.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> 
<span class='line'> 89</span> 
<span class='line'> 90</span> 
<span class='line'> 91</span> </span><span class="COMM">/**
<span class='line'> 92</span>  * Get a handle for a private key stored on the SmartCard-HSM
<span class='line'> 93</span>  *
<span class='line'> 94</span>  * @param {String} label the label of the private key
<span class='line'> 95</span>  * @param {ByteString} blob the optional key blob
<span class='line'> 96</span>  * @returns the private key
<span class='line'> 97</span>  * @type Key
<span class='line'> 98</span>  */</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="NAME">CryptoProvider.prototype.getPrivateKeyByLabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getPrivateKeyByLabel("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ks.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>105</span> 
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> </span><span class="COMM">/**
<span class='line'>109</span>  * Get a handle for a private key stored on the SmartCard-HSM
<span class='line'>110</span>  *
<span class='line'>111</span>  * @param {String} label the label of the private key
<span class='line'>112</span>  * @param {ByteString} blob the optional key blob
<span class='line'>113</span>  * @returns the private key
<span class='line'>114</span>  * @type Key
<span class='line'>115</span>  */</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">CryptoProvider.prototype.getPrivateKeyByKeyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getPrivateKeyByKeyId("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ks.getKey</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>122</span> 
<span class='line'>123</span> 
<span class='line'>124</span> 
<span class='line'>125</span> </span><span class="COMM">/**
<span class='line'>126</span>  * Generate a key pair under the given label with the key characteristics defined in keyspec
<span class='line'>127</span>  *
<span class='line'>128</span>  * @param {String} label the label for this key
<span class='line'>129</span>  * @param {Key} the key specification
<span class='line'>130</span>  * @return an object containing the private key as property prk and the public key as property puk
<span class='line'>131</span>  * @type Object
<span class='line'>132</span>  */</span><span class="WHIT">
<span class='line'>133</span> </span><span class="NAME">CryptoProvider.prototype.generateKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateKeyPair("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.ks.hasKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.deleteIfExists</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">			</span><span class="NAME">this.ks.deleteKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"A key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyspec.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>149</span> 
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.slot</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"set key domain to "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.slot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="NAME">kg.setKeyDomain</span><span class="PUNC">(</span><span class="NAME">this.slot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> 
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ks.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ks.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">req.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>160</span> 
<span class='line'>161</span> 
<span class='line'>162</span> 
<span class='line'>163</span> </span><span class="COMM">/**
<span class='line'>164</span>  * Delete private key
<span class='line'>165</span>  *
<span class='line'>166</span>  * @param {String} label the key label
<span class='line'>167</span>  */</span><span class="WHIT">
<span class='line'>168</span> </span><span class="NAME">CryptoProvider.prototype.deletePrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="NAME">this.ks.deleteKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> 
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="COMM">/**
<span class='line'>175</span>  * Generate a symmetric key under the given label
<span class='line'>176</span>  *
<span class='line'>177</span>  * @param {String} label the label for this key
<span class='line'>178</span>  * @param {Number} keySize either 128, 192 or 256
<span class='line'>179</span>  * @param {ByteString} allowedAlgorithms the optional list of allowed algorithms (0x10 for encryption, 0x11 for decryption, 0x18 for CMAC). By default all algorithms are allowed.
<span class='line'>180</span>  * @param {String} wrappingKeyLabel the label of the optional wrapping key
<span class='line'>181</span>  * @return the new key wrapped with the wrapping key
<span class='line'>182</span>  * @type ByteString
<span class='line'>183</span>  */</span><span class="WHIT">
<span class='line'>184</span> </span><span class="NAME">CryptoProvider.prototype.generateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keySize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">allowedAlgorithms</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">wrappingKeyLabel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateKey("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">", "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keySize</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> 
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.ks.hasKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.deleteIfExists</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">			</span><span class="NAME">this.ks.deleteKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"A key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">allowedAlgorithms</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">allowedAlgorithms</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"101118"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>198</span> 
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">Crypto.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keySize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="NAME">kg.setAlgorithms</span><span class="PUNC">(</span><span class="NAME">allowedAlgorithms</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> 
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">wrappingKeyLabel</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.ks.hasKey</span><span class="PUNC">(</span><span class="NAME">wrappingKeyLabel</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"A key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">wrappingKeyLabel</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrappingKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ks.getKey</span><span class="PUNC">(</span><span class="NAME">wrappingKeyLabel</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="NAME">kg.wrappingKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">wrappingKey.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.slot</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"set key domain to "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.slot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">		</span><span class="NAME">kg.setKeyDomain</span><span class="PUNC">(</span><span class="NAME">this.slot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>214</span> 
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrapbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.ks.generateKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">wrapbin</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>218</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview DKEK key wrapper
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Class supporting DKEK functions outside the SmartCard-HSM
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @constructor
<span class='line'> 33</span>  * @param {Crypto} crypto the crypto provider
<span class='line'> 34</span>  */</span><span class="WHIT">
<span class='line'> 35</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">DKEK</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="WHIT">	</span><span class="NAME">this.dkek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000000000000000000000000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 39</span> 
<span class='line'> 40</span> </span><span class="NAME">exports.DKEK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DKEK</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> 
<span class='line'> 42</span> 
<span class='line'> 43</span> 
<span class='line'> 44</span> </span><span class="COMM">/**
<span class='line'> 45</span>  * Import a DKEK share
<span class='line'> 46</span>  *
<span class='line'> 47</span>  * @param {ByteString} share a 32 byte share
<span class='line'> 48</span>  */</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">DKEK.prototype.importDKEKShare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">share</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">share</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Share must be of type ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">share.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Share must be 32 byte long"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ndkek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.dkek.xor</span><span class="PUNC">(</span><span class="NAME">share</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="NAME">this.dkek.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="NAME">this.dkek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ndkek</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 56</span> 
<span class='line'> 57</span> 
<span class='line'> 58</span> 
<span class='line'> 59</span> </span><span class="COMM">/**
<span class='line'> 60</span>  * Zeroize DKEK
<span class='line'> 61</span>  *
<span class='line'> 62</span>  */</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="NAME">DKEK.prototype.clear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="NAME">this.dkek.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 66</span> 
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="COMM">/**
<span class='line'> 70</span>  * Return the Key Check Value (KCV) of the internal DKEK
<span class='line'> 71</span>  *
<span class='line'> 72</span>  * @type ByteString
<span class='line'> 73</span>  * @return the KCV
<span class='line'> 74</span>  */</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="NAME">DKEK.prototype.getKCV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.dkek</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 78</span> 
<span class='line'> 79</span> 
<span class='line'> 80</span> 
<span class='line'> 81</span> </span><span class="COMM">/**
<span class='line'> 82</span>  * Derive the encryption key from the DKEK
<span class='line'> 83</span>  *
<span class='line'> 84</span>  * @type ByteString
<span class='line'> 85</span>  * @return the encryption key
<span class='line'> 86</span>  */</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="NAME">DKEK.prototype.getKENC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kencval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.dkek.concat</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000001"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="NAME">kenc.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kencval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> 
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="COMM">/**
<span class='line'> 97</span>  * Derive the message authentication key from the DKEK
<span class='line'> 98</span>  *
<span class='line'> 99</span>  * @type ByteString
<span class='line'>100</span>  * @return the message authentication key
<span class='line'>101</span>  */</span><span class="WHIT">
<span class='line'>102</span> </span><span class="NAME">DKEK.prototype.getKMAC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmacval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.dkek.concat</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000002"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">	</span><span class="NAME">kmac.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kmacval</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> 
<span class='line'>110</span> 
<span class='line'>111</span> </span><span class="COMM">/**
<span class='line'>112</span>  * Derive DKEK share encryption key from password
<span class='line'>113</span>  *
<span class='line'>114</span>  * @param {ByteString} password the password
<span class='line'>115</span>  * @type ByteString
<span class='line'>116</span>  * @return the derived key (32 Byte) concatenated with the IV (16 Byte)
<span class='line'>117</span>  */</span><span class="WHIT">
<span class='line'>118</span> </span><span class="NAME">DKEK.deriveDKEKShareKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">salt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> 
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyivbuff</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NUMB">48</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> 
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Derive DKEK share encryption key (Step "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" of 3)..."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.concat</span><span class="PUNC">(</span><span class="NAME">password</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">		</span><span class="NAME">d.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">		</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> 
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.concat</span><span class="PUNC">(</span><span class="NAME">salt</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">		</span><span class="NAME">d.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">		</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> 
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">			</span><span class="COMM">// Try the fast hash available in scdp4j 3.8</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.MD5</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">10000000</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">			</span><span class="NAME">d.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">			</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">			</span><span class="COMM">// Fallback to slow variant</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">10000000</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">--</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">				</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.MD5</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">		</span><span class="NAME">keyivbuff.append</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>148</span> 
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyivbuff.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="NAME">keyivbuff.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keyiv</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>153</span> 
<span class='line'>154</span> 
<span class='line'>155</span> 
<span class='line'>156</span> </span><span class="COMM">/**
<span class='line'>157</span>  * Encrypt a DKEK share
<span class='line'>158</span>  *
<span class='line'>159</span>  * @param {ByteString} keyshare the key share
<span class='line'>160</span>  * @param {ByteString} password the password
<span class='line'>161</span>  * @type ByteString
<span class='line'>162</span>  * @return Encrypted DKEK share value
<span class='line'>163</span>  */</span><span class="WHIT">
<span class='line'>164</span> </span><span class="NAME">DKEK.encryptKeyShare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyshare</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">keyshare</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument keyshare must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">keyshare.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument keyshare must be 32 bytes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">password</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument password must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">salt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DKEK.deriveDKEKShareKey</span><span class="PUNC">(</span><span class="NAME">salt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="NAME">k.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyiv.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyiv.bytes</span><span class="PUNC">(</span><span class="NUMB">32</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="NAME">keyiv.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyshare.concat</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"10101010101010101010101010101010"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cipher</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="NAME">plain.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="NAME">k.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"Salted__"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">salt</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">cipher</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>187</span> 
<span class='line'>188</span> 
<span class='line'>189</span> 
<span class='line'>190</span> </span><span class="COMM">/**
<span class='line'>191</span>  * Decrypt a DKEK share
<span class='line'>192</span>  *
<span class='line'>193</span>  * @param {ByteString} keyshare the encrypted key share as read from the .pbe file
<span class='line'>194</span>  * @param {ByteString} password the password
<span class='line'>195</span>  * @type ByteString
<span class='line'>196</span>  * @return plain DKEK value
<span class='line'>197</span>  */</span><span class="WHIT">
<span class='line'>198</span> </span><span class="NAME">DKEK.decryptKeyShare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyshare</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">password</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument password must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keyshare.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">keyshare.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="STRN">"Salted__"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Does not seem to be an encrypted key share"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>203</span> 
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">salt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyshare.bytes</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> 
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyiv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DKEK.deriveDKEKShareKey</span><span class="PUNC">(</span><span class="NAME">salt</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="NAME">k.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyiv.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyiv.bytes</span><span class="PUNC">(</span><span class="NUMB">32</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="NAME">keyiv.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> 
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyshare.bytes</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="NAME">k.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> 
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"10101010101010101010101010101010"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">plain.right</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decryption of DKEK failed. Wrong password ?"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plain.left</span><span class="PUNC">(</span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="NAME">plain.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">val</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>226</span> 
<span class='line'>227</span> 
<span class='line'>228</span> 
<span class='line'>229</span> </span><span class="COMM">/**
<span class='line'>230</span>  * Test DKEK share encryption / decryption
<span class='line'>231</span>  *
<span class='line'>232</span>  * @private
<span class='line'>233</span>  */</span><span class="WHIT">
<span class='line'>234</span> </span><span class="NAME">DKEK.testDKEK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dkek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">password</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"Password"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DKEK.encryptKeyShare</span><span class="PUNC">(</span><span class="NAME">dkek</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DKEK.decryptKeyShare</span><span class="PUNC">(</span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dkek.equals</span><span class="PUNC">(</span><span class="NAME">plain</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Reference does not match"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>242</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>243</span> 
<span class='line'>244</span> 
<span class='line'>245</span> 
<span class='line'>246</span> </span><span class="COMM">/**
<span class='line'>247</span>  * Wrap AES key
<span class='line'>248</span>  *
<span class='line'>249</span>  * @param {Key} key the secret key
<span class='line'>250</span>  * @type ByteString
<span class='line'>251</span>  * @return the secret key wrapped with the DKEK
<span class='line'>252</span>  */</span><span class="WHIT">
<span class='line'>253</span> </span><span class="NAME">DKEK.prototype.encodeAESKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.getKCV</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> 
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">key.getType</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.SECRET</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>258</span> 
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">15</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> 
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">daid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2.16.840.1.101.3.4.1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">daid.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">daid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> 
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">aaid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"10 11 18 99"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">aaid.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">aaid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> 
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NUMB">256</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">this.crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> 
<span class='line'>275</span> </span><span class="WHIT">	</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">key.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">key.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> 
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unpadded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">unpadded.pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="NAME">unpadded.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> 
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plain.length</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// pad() padds to 8 byte blocks, but we 16 byte blocks</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nplain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plain.concat</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">		</span><span class="NAME">plain.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">		</span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nplain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>287</span> 
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKENC</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cipher</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">	</span><span class="NAME">kenc.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="NAME">plain.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> 
<span class='line'>294</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">cipher</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> 
<span class='line'>296</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKMAC</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="NAME">kmac.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> 
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>302</span> 
<span class='line'>303</span> 
<span class='line'>304</span> 
<span class='line'>305</span> </span><span class="COMM">/**
<span class='line'>306</span>  * Wrap RSA or ECC key
<span class='line'>307</span>  *
<span class='line'>308</span>  * @param {Key} pri the private key in CRT format
<span class='line'>309</span>  * @param {Key} pub the public key
<span class='line'>310</span>  * @type Key
<span class='line'>311</span>  * @return the private key in private exponent / modulus format
<span class='line'>312</span>  */</span><span class="WHIT">
<span class='line'>313</span> </span><span class="NAME">DKEK.prototype.convertCRT2PEM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pri</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pub</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">n</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.sub</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">	</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.sub</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_Q</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">	</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r.biAdd</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">e.modInverse</span><span class="PUNC">(</span><span class="NAME">r</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>321</span> 
<span class='line'>322</span> </span><span class="WHIT">	</span><span class="COMM">// Strip leading zero in private exponent</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">d.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">		</span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>326</span> 
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="NAME">nk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">	</span><span class="NAME">nk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="NAME">nk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">nk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>333</span> 
<span class='line'>334</span> 
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="COMM">/**
<span class='line'>337</span>  * Wrap RSA or ECC key
<span class='line'>338</span>  *
<span class='line'>339</span>  * @param {Key} pri the private key
<span class='line'>340</span>  * @param {Key} pub the public key
<span class='line'>341</span>  * @type ByteString
<span class='line'>342</span>  * @return the private key wrapped with the DKEK
<span class='line'>343</span>  */</span><span class="WHIT">
<span class='line'>344</span> </span><span class="NAME">DKEK.prototype.encodeKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pri</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pub</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.getKCV</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">mod</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mod</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">		</span><span class="COMM">// Convert RSA keys larger than 2048 bit and in CRT format</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">mod.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">			</span><span class="NAME">pri</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.convertCRT2PEM</span><span class="PUNC">(</span><span class="NAME">pri</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pub</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">6</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>359</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NUMB">12</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>364</span> 
<span class='line'>365</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">algo.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">algo</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> 
<span class='line'>368</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> 
<span class='line'>372</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NUMB">4096</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">	</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">this.crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>374</span> 
<span class='line'>375</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> 
<span class='line'>378</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DP1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> 
<span class='line'>383</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_DQ1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>386</span> 
<span class='line'>387</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_P</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>390</span> 
<span class='line'>391</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_PQ</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>394</span> 
<span class='line'>395</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.CRT_Q</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">			</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> 
<span class='line'>408</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> 
<span class='line'>414</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> 
<span class='line'>418</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> 
<span class='line'>422</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> 
<span class='line'>426</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>429</span> 
<span class='line'>430</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> 
<span class='line'>434</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pri.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_D</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>437</span> 
<span class='line'>438</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">pub.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">c.length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">		</span><span class="NAME">kb.append</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>442</span> 
<span class='line'>443</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">unpadded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">unpadded.pad</span><span class="PUNC">(</span><span class="NAME">Crypto.ISO9797_METHOD_2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="NAME">unpadded.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> 
<span class='line'>447</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">plain.length</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// pad() padds to 8 byte blocks, but we 16 byte blocks</span><span class="WHIT">
<span class='line'>448</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nplain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plain.concat</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">		</span><span class="NAME">plain.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">		</span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nplain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>452</span> </span><span class="WHIT">	</span><span class="COMM">// print(plain);</span><span class="WHIT">
<span class='line'>453</span> 
<span class='line'>454</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kenc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKENC</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cipher</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.encrypt</span><span class="PUNC">(</span><span class="NAME">kenc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="NAME">kenc.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="NAME">plain.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> 
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">cipher</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> 
<span class='line'>462</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kmac</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKMAC</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">kmac</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="NAME">kmac.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.AES</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> 
<span class='line'>466</span> </span><span class="COMM">//	this.dumpKeyBLOB(bb.toByteString());</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>469</span> 
<span class='line'>470</span> </span><span class="NAME">DKEK.prototype.encodeRSAKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DKEK.prototype.encodeKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>471</span> 
<span class='line'>472</span> 
<span class='line'>473</span> 
<span class='line'>474</span> </span><span class="NAME">DKEK.prototype.dumpKeyBLOB</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT">	</span><span class="COMM">// Verify MAC on last 16 byte of blob</span><span class="WHIT">
<span class='line'>476</span> 
<span class='line'>477</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">macok</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.verify</span><span class="PUNC">(</span><span class="NAME">this.getKMAC</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob.right</span><span class="PUNC">(</span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>478</span> 
<span class='line'>479</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.byteAt</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Values from key blob:"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"---------------------"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Checking the MAC      : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">macok</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="STRN">"Passed"</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"Failed"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"KCV                   : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"    [Must match the KCV of the DKEK for import]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Key type              : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"    [5=RSA, 6=RSA-CRT, 12=ECC, 15=AES]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span> 
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>488</span> 
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyblob.byteAt</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x60</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Default Algorithm ID  : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")     [Wrong encoding in V3.0 to V3.2]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Default Algorithm ID  : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">OID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")     [Default algorithm]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>494</span> 
<span class='line'>495</span> </span><span class="WHIT">	</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> 
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Allowed Algorithm IDs : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>499</span> 
<span class='line'>500</span> </span><span class="WHIT">	</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>502</span> 
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Access Conditions     : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")    [Not used]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> 
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>507</span> 
<span class='line'>508</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Key OID               : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")    [Not used]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>509</span> 
<span class='line'>510</span> </span><span class="WHIT">	</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span> 
<span class='line'>512</span> 
<span class='line'>513</span> </span><span class="WHIT">	</span><span class="COMM">// Decrypt key data</span><span class="WHIT">
<span class='line'>514</span> 
<span class='line'>515</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plainkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">this.getKENC</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CBC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT">	</span><span class="COMM">// print(plainkey);</span><span class="WHIT">
<span class='line'>518</span> 
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Randomize             : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"    [Random data prepended at export]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> 
<span class='line'>521</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Key size              : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"    [Key size in bits (ECC/RSA) or bytes (AES)]"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>523</span> 
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>525</span> 
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>527</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>528</span> 
<span class='line'>529</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Private Exponent      : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>530</span> 
<span class='line'>531</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>532</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>533</span> 
<span class='line'>534</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Modulus               : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>535</span> 
<span class='line'>536</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>537</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>538</span> 
<span class='line'>539</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Public Exponent       : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>541</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>542</span> 
<span class='line'>543</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"DP1 = d mod (p - 1)   : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>544</span> 
<span class='line'>545</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>546</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>547</span> 
<span class='line'>548</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"DQ1 = d mod (q - 1)   : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>549</span> 
<span class='line'>550</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>551</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>552</span> 
<span class='line'>553</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Prime factor p        : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>554</span> 
<span class='line'>555</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>557</span> 
<span class='line'>558</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"PQ = q - 1 mod p      : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>559</span> 
<span class='line'>560</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> 
<span class='line'>563</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Prime factor q        : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>564</span> 
<span class='line'>565</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span> 
<span class='line'>568</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Modulus               : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>569</span> 
<span class='line'>570</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span> 
<span class='line'>573</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Public Exponent       : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>575</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>576</span> 
<span class='line'>577</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"A                     : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> 
<span class='line'>579</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>581</span> 
<span class='line'>582</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"B                     : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>583</span> 
<span class='line'>584</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>585</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>586</span> 
<span class='line'>587</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Prime factor P        : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>588</span> 
<span class='line'>589</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>591</span> 
<span class='line'>592</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Order                 : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>593</span> 
<span class='line'>594</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>595</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>596</span> 
<span class='line'>597</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Generator G           : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>598</span> 
<span class='line'>599</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>600</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>601</span> 
<span class='line'>602</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Secret D              : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>603</span> 
<span class='line'>604</span> </span><span class="WHIT">		</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>605</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>606</span> 
<span class='line'>607</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Public Point Q        : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>608</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">15</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>609</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Key Value             : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">plainkey.bytes</span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>610</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>611</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown key type "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keytype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>612</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>613</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>614</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2011-2016 CardContact Systems GmbH
<span class='line'>  6</span>  * |'##> &lt;##'|  Schuelerweg 38, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview SmartCard-HSM Crypto Provider for EAC-PKI
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT">					</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSM</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="COMM">/**
<span class='line'> 36</span>  * Crypto Provider for EAC-PKI
<span class='line'> 37</span>  *
<span class='line'> 38</span>  * @param {SmartCardHSM} sc the associated SmartCard-HSM
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">EACCryptoProvider</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="NAME">exports.EACCryptoProvider</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EACCryptoProvider</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> 
<span class='line'> 48</span> </span><span class="NAME">EACCryptoProvider.CVCCACERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">EACCryptoProvider.PATH_EF_FID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xD100</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> 
<span class='line'> 51</span> 
<span class='line'> 52</span> 
<span class='line'> 53</span> </span><span class="COMM">/**
<span class='line'> 54</span>  * Replace SmartCard-HSM
<span class='line'> 55</span>  *
<span class='line'> 56</span>  * @param {SmartCardHSM} sc the new SmartCard-HSM
<span class='line'> 57</span>  */</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="NAME">EACCryptoProvider.prototype.setSmartCardHSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">	</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="NAME">sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 62</span> 
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> </span><span class="COMM">/**
<span class='line'> 66</span>  * Get crypto object
<span class='line'> 67</span>  *
<span class='line'> 68</span>  * This method is part of the API.
<span class='line'> 69</span>  *
<span class='line'> 70</span>  * @type HSMCrypto
<span class='line'> 71</span>  * @return the HSMCrypto object
<span class='line'> 72</span>  */</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="NAME">EACCryptoProvider.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="COMM">/**
<span class='line'> 83</span>  * Transform path and certificate holder into a label
<span class='line'> 84</span>  *
<span class='line'> 85</span>  * @param {String} path the path
<span class='line'> 86</span>  * @param {PublicKeyReference} chr the certificate holder reference
<span class='line'> 87</span>  * @type String
<span class='line'> 88</span>  * @return the key label
<span class='line'> 89</span>  */</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="NAME">EACCryptoProvider.path2label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.getSequenceNo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> 
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="COMM">/**
<span class='line'> 97</span>  * Get a handle for a private key stored on the SmartCard-HSM
<span class='line'> 98</span>  *
<span class='line'> 99</span>  * This method is part of the API.
<span class='line'>100</span>  *
<span class='line'>101</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>102</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>103</span>  * @param {ByteString} blob the optional key blob
<span class='line'>104</span>  * @returns the private key or null if not found
<span class='line'>105</span>  * @type Key
<span class='line'>106</span>  */</span><span class="WHIT">
<span class='line'>107</span> </span><span class="NAME">EACCryptoProvider.prototype.getPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">blob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EACCryptoProvider.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Get private key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> 
<span class='line'>111</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> 
<span class='line'>114</span> 
<span class='line'>115</span> 
<span class='line'>116</span> </span><span class="COMM">/**
<span class='line'>117</span>  * Delete private key from SmartCard-HSM
<span class='line'>118</span>  *
<span class='line'>119</span>  * This method is part of the API.
<span class='line'>120</span>  *
<span class='line'>121</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>122</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>123</span>  */</span><span class="WHIT">
<span class='line'>124</span> </span><span class="NAME">EACCryptoProvider.prototype.deletePrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EACCryptoProvider.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Delete private key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>131</span> 
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.KEYPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> 
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="COMM">// Ignore</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>147</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>148</span> 
<span class='line'>149</span> 
<span class='line'>150</span> 
<span class='line'>151</span> </span><span class="COMM">/**
<span class='line'>152</span>  * Generate a certificate request using a private key in the SmartCard-HSM
<span class='line'>153</span>  *
<span class='line'>154</span>  * This method is part of the API.
<span class='line'>155</span>  *
<span class='line'>156</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>157</span>  * @param {PublicKeyReference} currentchr the current CHR for the key in use
<span class='line'>158</span>  * @param {PublicKeyReference} nextchr the next available CHR
<span class='line'>159</span>  * @param {PublicKeyReference} car the CA at which this request is addressed
<span class='line'>160</span>  * @param {boolean} forceInitial force an initial request, even if a current certificate is available
<span class='line'>161</span>  * @param {boolean} signinitial sign with initial key (sequence = 00000)
<span class='line'>162</span>  * @param {Key} keyspec a key object containing key parameters (e.g. EC Curve)
<span class='line'>163</span>  * @param {ByteString} algo the terminal authentication algorithm object identifier
<span class='line'>164</span>  * @return the certificate request
<span class='line'>165</span>  * @type CVC
<span class='line'>166</span>  */</span><span class="WHIT">
<span class='line'>167</span> </span><span class="NAME">EACCryptoProvider.prototype.generateRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">EACCryptoProvider.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Generate private key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">			</span><span class="COMM">// CAR is not optional in SmartCard-HSM generated requests</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">		</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="COMM">// Use the CHR if no CAR defined.</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyspec.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyspec.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyspec.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">528</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">			</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">521</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforECC</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforRSA</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>198</span> 
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="NAME">kg.defaultAlgo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="NAME">kg.setInnerCAR</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="NAME">kg.setCHR</span><span class="PUNC">(</span><span class="NAME">nextchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"key domain slot "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"set key domain slot to "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="NAME">kg.setKeyDomain</span><span class="PUNC">(</span><span class="NAME">this.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kg.encode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"gakp cdata"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> 
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.generateAsymmetricKeyPair</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> 
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> 
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">reqbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">a.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">reqbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> 
<span class='line'>232</span> </span><span class="COMM">// ---- Functions below are used to synchronize Certificates between the certstore and SmartCard-HSM</span><span class="WHIT">
<span class='line'>233</span> 
<span class='line'>234</span> </span><span class="COMM">/**
<span class='line'>235</span>  * Read the systems path from the SmartCard-HSM
<span class='line'>236</span>  *
<span class='line'>237</span>  * The path is used to configure the namespace for the node to which the SmartCard-HSM is connected
<span class='line'>238</span>  */</span><span class="WHIT">
<span class='line'>239</span> </span><span class="NAME">EACCryptoProvider.prototype.getPathFromDevice</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">EACCryptoProvider.PATH_EF_FID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.sc.hasFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.readBinary</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>247</span> 
<span class='line'>248</span> 
<span class='line'>249</span> 
<span class='line'>250</span> </span><span class="COMM">/**
<span class='line'>251</span>  * Enumerate keys on the SmartCard-HSM
<span class='line'>252</span>  *
<span class='line'>253</span>  * The method returns an array of objects with the following properties
<span class='line'>254</span>  *
<span class='line'>255</span>  * label       String - The key name on the device
<span class='line'>256</span>  * path        String - The label transformed into a PKI path
<span class='line'>257</span>  * chr         PublicKeyReference - the CHR for the key
<span class='line'>258</span>  * kid         Number - The key identifier on the device
<span class='line'>259</span>  * cvc         CVC - the card verifiable certificate or undefined if none on the device
<span class='line'>260</span>  *
<span class='line'>261</span>  * @type Object[]
<span class='line'>262</span>  * @return the list of keys on the device
<span class='line'>263</span>  */</span><span class="WHIT">
<span class='line'>264</span> </span><span class="NAME">EACCryptoProvider.prototype.enumerateKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> 
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">label</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">label.indexOf</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">			</span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>273</span> 
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">label.split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">pe.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> 
<span class='line'>277</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">pe.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">			</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">		</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> 
<span class='line'>283</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> 
<span class='line'>286</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.hasFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.readBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">			</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">certbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">		</span><span class="NAME">keylist.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>294</span> 
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>297</span> 
<span class='line'>298</span> 
<span class='line'>299</span> 
<span class='line'>300</span> </span><span class="COMM">/**
<span class='line'>301</span>  * Enumerate CVC certificates for CAs
<span class='line'>302</span>  *
<span class='line'>303</span>  * @type CVC[]
<span class='line'>304</span>  * @return the list of CA certificates on the device
<span class='line'>305</span>  */</span><span class="WHIT">
<span class='line'>306</span> </span><span class="NAME">EACCryptoProvider.prototype.enumerateCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fids</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.enumerateObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> 
<span class='line'>309</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> 
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">fids.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fids.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">EACCryptoProvider.CVCCACERTIFICATEPREFIX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fids.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">			</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.readBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">				</span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">certbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">				</span><span class="NAME">certlist.push</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">			</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">				</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Trying to read certificate : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>324</span> 
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>327</span> 
<span class='line'>328</span> 
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="COMM">/**
<span class='line'>331</span>  * Delete CA certificates on device
<span class='line'>332</span>  */</span><span class="WHIT">
<span class='line'>333</span> </span><span class="NAME">EACCryptoProvider.prototype.deleteCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fids</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.enumerateObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">fids.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fids.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">EACCryptoProvider.CVCCACERTIFICATEPREFIX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fids.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">			</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>342</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>343</span> 
<span class='line'>344</span> 
<span class='line'>345</span> 
<span class='line'>346</span> </span><span class="COMM">/**
<span class='line'>347</span>  * Delete certificate on device for a given key
<span class='line'>348</span>  *
<span class='line'>349</span>  * @param {Object} k the key as returned by enumerateKeys()
<span class='line'>350</span>  */</span><span class="WHIT">
<span class='line'>351</span> </span><span class="NAME">EACCryptoProvider.prototype.deleteCertificateForKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">k</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">k.kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>355</span> 
<span class='line'>356</span> 
<span class='line'>357</span> 
<span class='line'>358</span> </span><span class="COMM">/**
<span class='line'>359</span>  * Export CA and EE certificates
<span class='line'>360</span>  *
<span class='line'>361</span>  * This method erases all existing CA certificates on the device first
<span class='line'>362</span>  *
<span class='line'>363</span>  * @param {String} path the PKI path to be exported
<span class='line'>364</span>  * @param {CVC[]} eecertlist the list of end-entity certificates
<span class='line'>365</span>  * @param {CVC[]} cacertlist the list of CA certificates
<span class='line'>366</span>  */</span><span class="WHIT">
<span class='line'>367</span> </span><span class="NAME">EACCryptoProvider.prototype.exportCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">eecertlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cacertlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">	</span><span class="NAME">this.deleteCertificates</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> 
<span class='line'>370</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> 
<span class='line'>372</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">keylist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Find matching certificate for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">k.label</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> 
<span class='line'>377</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">eecertlist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">eecertlist</span><span class="PUNC">[</span><span class="NAME">j</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> 
<span class='line'>380</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">k.chr</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">				</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Found matching certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">k.kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">k.cvc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">					</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">k.cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">equals</span><span class="PUNC">(</span><span class="NAME">cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>386</span> </span><span class="WHIT">						</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>387</span> </span><span class="WHIT">						</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>389</span> </span><span class="WHIT">						</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate already on device - not saved"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>390</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>391</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">					</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>394</span> 
<span class='line'>395</span> </span><span class="WHIT">				</span><span class="NAME">cnt</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>399</span> 
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">cacertlist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cacertlist</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">EACCryptoProvider.CVCCACERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Writing to "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" the certificate "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT">		</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">		</span><span class="NAME">cnt</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>407</span> 
<span class='line'>408</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Writing path "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">EACCryptoProvider.PATH_EF_FID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT"> 	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">		</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">		</span><span class="COMM">// Ignore</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>416</span> 
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> 
<span class='line'>419</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">cnt</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>421</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview A card verifiable certificate store using a SmartCard-HSM as key store
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT">	 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT">					 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVC'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVCertificateStore</span><span class="WHIT">	 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVCertificateStore'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="WHIT">		 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSM</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="WHIT">		 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 34</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="WHIT">				 </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/CVCCA'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVCCA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 35</span> 
<span class='line'> 36</span> 
<span class='line'> 37</span> 
<span class='line'> 38</span> </span><span class="COMM">/**
<span class='line'> 39</span>  * Create a CV certificate store using a SmartCard-HSM as secure key store
<span class='line'> 40</span>  *
<span class='line'> 41</span>  * @class CV certificate store with SmartCard-HSM as secure key store
<span class='line'> 42</span>  * @constructor
<span class='line'> 43</span>  * @param {DAOFactory} daof the factory that can create data access objects for persistent information
<span class='line'> 44</span>  * @param {SmartCardHSM} sc the SmartCard-HSM access object
<span class='line'> 45</span>  */</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">CVCertificateStore.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">daof</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">		</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="WHIT">		</span><span class="NAME">sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="NAME">HSMCVCertificateStore.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.create</span><span class="PUNC">(</span><span class="NAME">CVCertificateStore.prototype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">HSMCVCertificateStore.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> 
<span class='line'> 57</span> </span><span class="NAME">exports.HSMCVCertificateStore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> 
<span class='line'> 61</span> </span><span class="NAME">HSMCVCertificateStore.prototype.setSmartCardHSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="NAME">sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 65</span> 
<span class='line'> 66</span> 
<span class='line'> 67</span> 
<span class='line'> 68</span> </span><span class="COMM">/**
<span class='line'> 69</span>  * Get crypto object
<span class='line'> 70</span>  *
<span class='line'> 71</span>  * @type HSMCrypto
<span class='line'> 72</span>  * @return the HSMCrypto object
<span class='line'> 73</span>  */</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="NAME">HSMCVCertificateStore.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> 
<span class='line'> 83</span> </span><span class="COMM">/**
<span class='line'> 84</span>  * Transform path and certificate holder into a label
<span class='line'> 85</span>  *
<span class='line'> 86</span>  * @param {String} path the path
<span class='line'> 87</span>  * @param {PublicKeyReference} chr the certificate holder reference
<span class='line'> 88</span>  * @type String
<span class='line'> 89</span>  * @return the key label
<span class='line'> 90</span>  */</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="NAME">HSMCVCertificateStore.path2label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">chr.getSequenceNo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 94</span> 
<span class='line'> 95</span> 
<span class='line'> 96</span> 
<span class='line'> 97</span> </span><span class="COMM">/**
<span class='line'> 98</span>  * Get a private key in the certificate store. Overrides method in CVCertificateStore.
<span class='line'> 99</span>  *
<span class='line'>100</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>101</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>102</span>  * @returns the private key or null if not found
<span class='line'>103</span>  * @type Key
<span class='line'>104</span>  */</span><span class="WHIT">
<span class='line'>105</span> </span><span class="NAME">HSMCVCertificateStore.prototype.getPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Get private key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>111</span> 
<span class='line'>112</span> 
<span class='line'>113</span> 
<span class='line'>114</span> </span><span class="COMM">/**
<span class='line'>115</span>  * Generate a certificate request using a private key in the SmartCard-HSM
<span class='line'>116</span>  *
<span class='line'>117</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1")
<span class='line'>118</span>  * @param {PublicKeyReference} car the CA at which this request is addressed
<span class='line'>119</span>  * @param {boolean} forceInitial force an initial request, even if a current certificate is available
<span class='line'>120</span>  * @param {boolean} signinitial sign with initial key (sequence = 00000)
<span class='line'>121</span>  * @param {Key} keyspec a key object containing key parameters (e.g. EC Curve)
<span class='line'>122</span>  * @param {ByteString} algo the terminal authentication algorithm object identifier
<span class='line'>123</span>  * @return the certificate request
<span class='line'>124</span>  * @type CVC
<span class='line'>125</span>  */</span><span class="WHIT">
<span class='line'>126</span> </span><span class="NAME">HSMCVCertificateStore.prototype.generateRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signinitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="COMM">// Determine CHR</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCurrentCHR</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getNextCHR</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">countryseq</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">			</span><span class="COMM">// CAR is not optional in SmartCard-HSM generated requests</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="COMM">// Use the CHR if no CAR defined.</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">forceinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">curlabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">curlabel</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMCVCertificateStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.DEVICE_ERROR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">curlabel</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">outerCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">currentchr</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> 
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyspec.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyspec.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"1:Keysize "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyspec.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">			</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"2:Keysize "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildGAKPwithECC</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outerCAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforECC</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildGAKPwithRSA</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nextchr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outerCAR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforRSA</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyspec.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.generateAsymmetricKeyPair</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">currentchr</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">forceinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">signinitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">reqbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">		</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">a.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">reqbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>181</span> 
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>188</span> 
<span class='line'>189</span> 
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="COMM">/**
<span class='line'>192</span>  * Get a private key in the certificate store. Overrides method in CVCertificateStore.
<span class='line'>193</span>  *
<span class='line'>194</span>  * @param {String} path the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1/UTTERM")
<span class='line'>195</span>  * @param {PublicKeyReference} chr the public key reference for this key
<span class='line'>196</span>  * @returns the private key or null if not found
<span class='line'>197</span>  * @type Key
<span class='line'>198</span>  */</span><span class="WHIT">
<span class='line'>199</span> </span><span class="NAME">HSMCVCertificateStore.prototype.deletePrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore.path2label</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Get private key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>205</span> 
<span class='line'>206</span> 
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="NAME">HSMCVCertificateStore.testPath</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.mapFilename</span><span class="PUNC">(</span><span class="STRN">"testca"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPSystem.CWD</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="NAME">HSMCVCertificateStore.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Card</span><span class="PUNC">(</span><span class="NAME">_scsh3.reader</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> 
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="NAME">sc.verifyUserPIN</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"648219"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">HSMCVCertificateStore</span><span class="PUNC">(</span><span class="NAME">HSMCVCertificateStore.testPath</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/cvca"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> 
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> 
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVCCA</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"/UTCVCA"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="WHIT">	</span><span class="COMM">// Create a new request</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UTCVCA00000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateRequest</span><span class="PUNC">(</span><span class="NAME">car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Request: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">req.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">req.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> 
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="COMM">// Create self-signed or link certificate based on request</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="COMM">// Import certificate into store, making it the most current certificate</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">	</span><span class="NAME">cvca.storeCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> 
<span class='line'>244</span> </span><span class="WHIT">	</span><span class="COMM">// Generate additional self-signed root certificate</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="COMM">// This must be done after the link certificate has been imported</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">certificateValidityDays</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">				   </span><span class="NAME">chatRoleOID</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-IS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">				   </span><span class="NAME">chatRights</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E3"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">				   </span><span class="NAME">includeDomainParameter</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">				   </span><span class="NAME">extensions</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">				 </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvca.generateCertificate</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">cert.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> 
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="COMM">// Import certificate into store, making it the most current certificate</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="NAME">cvca.storeCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>259</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Class implementing a key store for X.509 certificate and private keys stored on a SmartCard-HSM
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/eac/PublicKeyReference'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSM</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/sc-hsm/SmartCardHSM'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/eac/CVC"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> 
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> </span><span class="COMM">/**
<span class='line'> 35</span>  * Create a simple key store front-end
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @class Class implementing some simple access functions to generate key pairs and store certificates
<span class='line'> 38</span>  * @param {SmartCardHSM} sc the SmartCard-HSM card service
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">HSMKeyStore</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UTNULL00000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UTNULL00000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="NAME">exports.HSMKeyStore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">HSMKeyStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> 
<span class='line'> 48</span> 
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="COMM">/**
<span class='line'> 51</span>  * Generate a key pair
<span class='line'> 52</span>  *
<span class='line'> 53</span>  * @param {String} label the label under which the key pair shall be stored
<span class='line'> 54</span>  * @param {SmartCardHSMKeySpecGenerator} initialized key spec generator
<span class='line'> 55</span>  * @type CVC
<span class='line'> 56</span>  * @return the authenticated request
<span class='line'> 57</span>  */</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="NAME">HSMKeyStore.prototype.generateKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">spec</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">spec.keytype</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">spec.keytype</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">Crypto.EC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported key type"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.generateAsymmetricKeyPair</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">spec.encode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">reqbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.determineKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> 
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">spec.keytype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforRSA</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">spec.keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.EC</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforECC</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">spec.domainParameter.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported key type"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 84</span> 
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> 
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> 
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="COMM">/**
<span class='line'> 97</span>  * Generate a symmetric key
<span class='line'> 98</span>  *
<span class='line'> 99</span>  * @param {String} label the label under which the key shall be stored
<span class='line'>100</span>  * @param {SmartCardHSMKeySpecGenerator} initialized key spec generator
<span class='line'>101</span>  * @type ByteString
<span class='line'>102</span>  * @return the new key wrapped with the symmetric key defined with SmartCardHSMKeySpecGenerator.setWrappingKey()
<span class='line'>103</span>  */</span><span class="WHIT">
<span class='line'>104</span> </span><span class="NAME">HSMKeyStore.prototype.generateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">spec</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>105</span> 
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">spec.keytype</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">Crypto.AES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>107</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported key type"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>109</span> 
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>114</span> 
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> 
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">genalg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">spec.keysize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">128</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">genalg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">192</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">genalg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">genalg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB2</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported key size"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>124</span> 
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrapbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.generateSymmetricKey</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">genalg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">spec.encode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> 
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">deralg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">spec.algorithms.find</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.ALG_CMAC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">		</span><span class="NAME">deralg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.ALG_CMAC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">spec.algorithms.find</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.ALG_DERIVE_SP800_56C</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">		</span><span class="NAME">deralg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.ALG_DERIVE_SP800_56C</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>133</span> 
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">deralg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.deriveSymmetricKey</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">deralg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"KeyCheckValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>140</span> 
<span class='line'>141</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildSKDforAES</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">spec.keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> 
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> 
<span class='line'>146</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">wrapbin</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>151</span> 
<span class='line'>152</span> 
<span class='line'>153</span> 
<span class='line'>154</span> </span><span class="COMM">/**
<span class='line'>155</span>  * Generate a RSA key pair
<span class='line'>156</span>  *
<span class='line'>157</span>  * @param {String} label the label under which the key pair shall be stored
<span class='line'>158</span>  * @param {Number} keysize the key size in bits (1024, 1536 or 2048)
<span class='line'>159</span>  */</span><span class="WHIT">
<span class='line'>160</span> </span><span class="NAME">HSMKeyStore.prototype.generateRSAKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildGAKPwithRSA</span><span class="PUNC">(</span><span class="NAME">this.car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforRSA</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.generateAsymmetricKeyPair</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">reqbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> 
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>185</span> 
<span class='line'>186</span> 
<span class='line'>187</span> 
<span class='line'>188</span> </span><span class="COMM">/**
<span class='line'>189</span>  * Generate an ECDSA key pair
<span class='line'>190</span>  *
<span class='line'>191</span>  * @param {String} label the label under which the key pair shall be stored
<span class='line'>192</span>  * @param {String} curve the curve object identifier
<span class='line'>193</span>  */</span><span class="WHIT">
<span class='line'>194</span> </span><span class="NAME">HSMKeyStore.prototype.generateECCKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">curve</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> 
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="NAME">dp.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">curve</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildGAKPwithECC</span><span class="PUNC">(</span><span class="NAME">this.car</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> </span><span class="COMM">//	print("Keysize: " + dp.getSize());</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforECC</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> 
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.generateAsymmetricKeyPair</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> 
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">reqbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>224</span> 
<span class='line'>225</span> 
<span class='line'>226</span> 
<span class='line'>227</span> </span><span class="COMM">/**
<span class='line'>228</span>  * Import a key blob, meta data and certificate
<span class='line'>229</span>  *
<span class='line'>230</span>  * @param {ByteString} keywrap the binary key in SmartCard-HSM format
<span class='line'>231</span>  */</span><span class="WHIT">
<span class='line'>232</span> </span><span class="NAME">HSMKeyStore.prototype.importKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keywrap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>233</span> 
<span class='line'>234</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">keywrap</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> 
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> 
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Key identifier exhausted"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>242</span> 
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.unwrapKey</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">wrap</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> 
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">meta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">		</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">meta.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">		</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">meta</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>252</span> 
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">a.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">		</span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bin.concat</span><span class="PUNC">(</span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> 
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> 
<span class='line'>262</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>264</span> 
<span class='line'>265</span> 
<span class='line'>266</span> 
<span class='line'>267</span> </span><span class="COMM">/**
<span class='line'>268</span>  * Export a key blob, meta data and certificate
<span class='line'>269</span>  *
<span class='line'>270</span>  * @param {String/Number/Key} labelOrIdOrKey the label, id or object of the key to be removed
<span class='line'>271</span>  * @type ByteString
<span class='line'>272</span>  * @return the blob with key, meta data and certificate
<span class='line'>273</span>  */</span><span class="WHIT">
<span class='line'>274</span> </span><span class="NAME">HSMKeyStore.prototype.exportKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>275</span> 
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKey</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>280</span> 
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not find a key with label or id "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>286</span> 
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">wrap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.wrapKey</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">wrap</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>289</span> 
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">meta</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.readBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">		</span><span class="NAME">a.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">meta</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> 
<span class='line'>294</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.hasFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.readBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>297</span> 
<span class='line'>298</span> </span><span class="WHIT">			</span><span class="COMM">// Copy list of CVCs</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">cert.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x67</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cert.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7F</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.parseCertificateList</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">				</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">					</span><span class="NAME">a.add</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>304</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">cert.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x67</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">list.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">					</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Adding device and DICA certificate to export"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">					</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">devAutCert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.readBinary</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.C_DevAut</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">					</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.parseCertificateList</span><span class="PUNC">(</span><span class="NAME">devAutCert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">					</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">						</span><span class="NAME">a.add</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">				</span><span class="NAME">a.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Ignoring meta data or certificate: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>322</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>323</span> 
<span class='line'>324</span> 
<span class='line'>325</span> 
<span class='line'>326</span> </span><span class="COMM">/**
<span class='line'>327</span>  * Import a RSA key blob
<span class='line'>328</span>  *
<span class='line'>329</span>  * @param {String} label the key label
<span class='line'>330</span>  * @param {ByteString} keyblob the binary key in SmartCard-HSM format
<span class='line'>331</span>  * @param {Number} keysize in bits
<span class='line'>332</span>  * @param {Number/ByteString} keyid the optional PKCS#15 key identifier.
<span class='line'>333</span>  * Default value is the next free key id of the SmartCard-HSM.
<span class='line'>334</span>  * @type SmartCardHSMKey
<span class='line'>335</span>  */</span><span class="WHIT">
<span class='line'>336</span> </span><span class="NAME">HSMKeyStore.prototype.importRSAKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.byteAt</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyblob does not contain a RSA key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>341</span> 
<span class='line'>342</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"A key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.unwrapKey</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>349</span> 
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>353</span> 
<span class='line'>354</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforRSA</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> 
<span class='line'>356</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> 
<span class='line'>359</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> 
<span class='line'>363</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>364</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>365</span> 
<span class='line'>366</span> 
<span class='line'>367</span> 
<span class='line'>368</span> </span><span class="COMM">/**
<span class='line'>369</span>  * Import an ECC key blob
<span class='line'>370</span>  *
<span class='line'>371</span>  * @param {String} label the key label
<span class='line'>372</span>  * @param {ByteString} keyblob the binary key in SmartCard-HSM format
<span class='line'>373</span>  * @param {Number} keysize in bits
<span class='line'>374</span>  * @param {Number/ByteString} keyid the optional PKCS#15 key identifier.
<span class='line'>375</span>  * Default value is the next free key id of the SmartCard-HSM.
<span class='line'>376</span>  * @type SmartCardHSMKey
<span class='line'>377</span>  */</span><span class="WHIT">
<span class='line'>378</span> </span><span class="NAME">HSMKeyStore.prototype.importECCKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob.byteAt</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyblob does not contain an ECC key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>383</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"A key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>386</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>387</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> 
<span class='line'>389</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.unwrapKey</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>390</span> 
<span class='line'>391</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>392</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>394</span> 
<span class='line'>395</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildPrkDforECC</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span> 
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> 
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>406</span> 
<span class='line'>407</span> 
<span class='line'>408</span> 
<span class='line'>409</span> </span><span class="COMM">/**
<span class='line'>410</span>  * Import an AES key blob
<span class='line'>411</span>  *
<span class='line'>412</span>  * @param {String} label the key label
<span class='line'>413</span>  * @param {ByteString} keyblob the binary key in SmartCard-HSM format
<span class='line'>414</span>  * @param {Number} keysize in bits
<span class='line'>415</span>  * @param {ByteString} keyid the PKCS#15 key id (CKA_ID)
<span class='line'>416</span>  * @type
<span class='line'>417</span>  */</span><span class="WHIT">
<span class='line'>418</span> </span><span class="NAME">HSMKeyStore.prototype.importAESKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>419</span> 
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"A key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeKeyId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> 
<span class='line'>426</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.unwrapKey</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>427</span> 
<span class='line'>428</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>431</span> 
<span class='line'>432</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keydesc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildSKDforAES</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> 
<span class='line'>434</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydesc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> 
<span class='line'>437</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">this.sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="NAME">hkey.setDescription</span><span class="PUNC">(</span><span class="NAME">keydesc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addKeyToMap</span><span class="PUNC">(</span><span class="NAME">hkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>440</span> 
<span class='line'>441</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">hkey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>443</span> 
<span class='line'>444</span> 
<span class='line'>445</span> 
<span class='line'>446</span> </span><span class="COMM">/**
<span class='line'>447</span>  * Store certificate under given label
<span class='line'>448</span>  *
<span class='line'>449</span>  * @param {String/Number/Key} labelOrIdOrKey the label, id or object of the key for which the certificate should be stored
<span class='line'>450</span>  * @param {X509} cert the certificate
<span class='line'>451</span>  */</span><span class="WHIT">
<span class='line'>452</span> </span><span class="NAME">HSMKeyStore.prototype.storeEndEntityCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">		</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKey</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>457</span> 
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>459</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not find a key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>463</span> 
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>466</span> </span><span class="WHIT">		</span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>468</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>469</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>470</span> 
<span class='line'>471</span> 
<span class='line'>472</span> 
<span class='line'>473</span> </span><span class="COMM">/**
<span class='line'>474</span>  * Store CA certificate under given label
<span class='line'>475</span>  *
<span class='line'>476</span>  * @param {String} label the label under which the certificate shall be stored
<span class='line'>477</span>  * @param {X509} cert the certificate
<span class='line'>478</span>  */</span><span class="WHIT">
<span class='line'>479</span> </span><span class="NAME">HSMKeyStore.prototype.storeCACertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.enumerateCACertificates</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.caidmap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">		</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.determineFreeCAId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>485</span> 
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.CACERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>488</span> 
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">descr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildCertDescription</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.CERTDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">descr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.addCACertificateToMap</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>493</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>494</span> 
<span class='line'>495</span> 
<span class='line'>496</span> 
<span class='line'>497</span> </span><span class="COMM">/**
<span class='line'>498</span>  * Delete CA certificate with given label
<span class='line'>499</span>  *
<span class='line'>500</span>  * @param {String} label the label of certificate to be removed
<span class='line'>501</span>  */</span><span class="WHIT">
<span class='line'>502</span> </span><span class="NAME">HSMKeyStore.prototype.deleteCACertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getCACertificate</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> 
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not find a certificate with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>507</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>508</span> 
<span class='line'>509</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.CERTDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.CACERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.enumerateCACertificates</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>514</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>515</span> 
<span class='line'>516</span> 
<span class='line'>517</span> 
<span class='line'>518</span> </span><span class="COMM">/**
<span class='line'>519</span>  * Delete key and certificate with given label
<span class='line'>520</span>  *
<span class='line'>521</span>  * @param {String/Number/Key} labelOrIdOrKey the label, id or object of the key to be removed
<span class='line'>522</span>  */</span><span class="WHIT">
<span class='line'>523</span> </span><span class="NAME">HSMKeyStore.prototype.deleteKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT">		</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKey</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>528</span> 
<span class='line'>529</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>530</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>531</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>532</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not find a key with label "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>533</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>534</span> 
<span class='line'>535</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.KEYPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>537</span> 
<span class='line'>538</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">		</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> 
<span class='line'>542</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>543</span> </span><span class="WHIT">		</span><span class="NAME">this.sc.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>544</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>545</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>546</span> </span><span class="WHIT">		</span><span class="COMM">// Ignore</span><span class="WHIT">
<span class='line'>547</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>548</span> 
<span class='line'>549</span> </span><span class="WHIT">	</span><span class="NAME">this.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>550</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>551</span> 
<span class='line'>552</span> 
<span class='line'>553</span> 
<span class='line'>554</span> </span><span class="COMM">/**
<span class='line'>555</span>  * Return list of keys
<span class='line'>556</span>  *
<span class='line'>557</span>  * @type String[]
<span class='line'>558</span>  * @return the list of key names
<span class='line'>559</span>  */</span><span class="WHIT">
<span class='line'>560</span> </span><span class="NAME">HSMKeyStore.prototype.enumerateKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>563</span> 
<span class='line'>564</span> 
<span class='line'>565</span> 
<span class='line'>566</span> </span><span class="COMM">/**
<span class='line'>567</span>  * Check if key with label exists
<span class='line'>568</span>  *
<span class='line'>569</span>  * @param {String / Number} the key label or id
<span class='line'>570</span>  * @type Boolean
<span class='line'>571</span>  * @return true if key exists
<span class='line'>572</span>  */</span><span class="WHIT">
<span class='line'>573</span> </span><span class="NAME">HSMKeyStore.prototype.hasKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>574</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>575</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>576</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>577</span> 
<span class='line'>578</span> 
<span class='line'>579</span> 
<span class='line'>580</span> </span><span class="COMM">/**
<span class='line'>581</span>  * Get key for given label
<span class='line'>582</span>  *
<span class='line'>583</span>  * @param {String / Number} the key label or id
<span class='line'>584</span>  * @type Key
<span class='line'>585</span>  * @return the key
<span class='line'>586</span>  */</span><span class="WHIT">
<span class='line'>587</span> </span><span class="NAME">HSMKeyStore.prototype.getKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>588</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getKey</span><span class="PUNC">(</span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>589</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>590</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"HSMKeyStore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not find a key with label/id "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>591</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>592</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>593</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>594</span> 
<span class='line'>595</span> 
<span class='line'>596</span> 
<span class='line'>597</span> </span><span class="COMM">/**
<span class='line'>598</span>  * Check if key has a certificate
<span class='line'>599</span>  *
<span class='line'>600</span>  * @param {String/Number/Key} labelOrIdOrKey the certificate label, id or key
<span class='line'>601</span>  * @type Boolean
<span class='line'>602</span>  * @return true of a certificate is present
<span class='line'>603</span>  */</span><span class="WHIT">
<span class='line'>604</span> </span><span class="NAME">HSMKeyStore.prototype.hasCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>605</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>606</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>607</span> </span><span class="WHIT">		</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKey</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>608</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>609</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>610</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>611</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.hasFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>612</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>613</span> 
<span class='line'>614</span> 
<span class='line'>615</span> 
<span class='line'>616</span> </span><span class="COMM">/**
<span class='line'>617</span>  * Get raw certificate for given label
<span class='line'>618</span>  *
<span class='line'>619</span>  * @param {String/Number/Key} labelOrIdOrKey the certificate label, id or key
<span class='line'>620</span>  * @type ByteString
<span class='line'>621</span>  * @return the certificate
<span class='line'>622</span>  */</span><span class="WHIT">
<span class='line'>623</span> </span><span class="NAME">HSMKeyStore.prototype.getCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>624</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>625</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>626</span> </span><span class="WHIT">		</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getKey</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>627</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>630</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.readBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>631</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certbin</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>632</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>633</span> 
<span class='line'>634</span> 
<span class='line'>635</span> 
<span class='line'>636</span> </span><span class="COMM">/**
<span class='line'>637</span>  * Get certificate for given label
<span class='line'>638</span>  *
<span class='line'>639</span>  * @param {String/Number/Key} labelOrIdOrKey the certificate label, id or key
<span class='line'>640</span>  * @type X509
<span class='line'>641</span>  * @return the certificate
<span class='line'>642</span>  */</span><span class="WHIT">
<span class='line'>643</span> </span><span class="NAME">HSMKeyStore.prototype.getEndEntityCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>644</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCertificate</span><span class="PUNC">(</span><span class="NAME">labelOrIdOrKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>645</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>646</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>647</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview SmartCard-HSM Public Key Authentication Support
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/eac/CVC"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/eac/PublicKeyReference"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> </span><span class="COMM">/**
<span class='line'> 33</span>  * Manage Public Key Authentication
<span class='line'> 34</span>  *
<span class='line'> 35</span>  * @class Class providing support for public key authentication
<span class='line'> 36</span>  * @constructor
<span class='line'> 37</span>  * @param {SmartCardHSM} sc the SmartCard-HSM used as target for PKA
<span class='line'> 38</span>  * @param {ByteString} deviceId the device id as returned by getCHR().getBytes() for the device certificate
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">ManagePKA</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">deviceId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> 
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.deviceId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">deviceId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc.card</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> 		</span><span class="COMM">// Dummy</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.missingPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="WHIT">	</span><span class="NAME">this.authenticatedPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 51</span> 
<span class='line'> 52</span> </span><span class="NAME">exports.ManagePKA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ManagePKA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> 
<span class='line'> 55</span> 
<span class='line'> 56</span> </span><span class="COMM">/**
<span class='line'> 57</span>  * Update internal status
<span class='line'> 58</span>  * @private
<span class='line'> 59</span>  */</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="NAME">ManagePKA.prototype.updateStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">	</span><span class="NAME">this.numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="NAME">this.missingPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="NAME">this.authenticatedPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 66</span> 
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> </span><span class="COMM">/**
<span class='line'> 70</span>  * Check if public key authentication is active for device
<span class='line'> 71</span>  *
<span class='line'> 72</span>  * @type boolean
<span class='line'> 73</span>  * @return true if supported and active
<span class='line'> 74</span>  */</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="NAME">ManagePKA.prototype.isActive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="NAME">this.updateStatus</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> 
<span class='line'> 85</span> 
<span class='line'> 86</span> </span><span class="COMM">/**
<span class='line'> 87</span>  * Check if registered public keys can be enumerated
<span class='line'> 88</span>  *
<span class='line'> 89</span>  * @type boolean
<span class='line'> 90</span>  * @return true if enumeration is supported
<span class='line'> 91</span>  */</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="NAME">ManagePKA.prototype.canEnumeratePublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x9001</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A86</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x6A86</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 96</span> 
<span class='line'> 97</span> 
<span class='line'> 98</span> 
<span class='line'> 99</span> </span><span class="NAME">ManagePKA.KEY_PRESENT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">ManagePKA.KEY_NOT_FOUND</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="NAME">ManagePKA.KEY_ALREADY_AUTHENTICATED</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> 
<span class='line'>103</span> </span><span class="COMM">/**
<span class='line'>104</span>  * Check status of public key
<span class='line'>105</span>  *
<span class='line'>106</span>  * @param {PublicKeyReference} chr the public key reference under which the public key is registered
<span class='line'>107</span>  * @type Number
<span class='line'>108</span>  * @return ManagePKA.KEY_PRESENT if key is registered in SmartCard-HSM, ManagePKA.KEY_NOT_FOUND if not.
<span class='line'>109</span>  *         ManagePKA.KEY_ALREADY_AUTHENTICATED is returned if the public key has already been authenticated
<span class='line'>110</span>  */</span><span class="WHIT">
<span class='line'>111</span> </span><span class="NAME">ManagePKA.prototype.checkKeyStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">chr</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> 
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6985</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> 
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ManagePKA.KEY_PRESENT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ManagePKA.KEY_NOT_FOUND</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x6985</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ManagePKA.KEY_ALREADY_AUTHENTICATED</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>122</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>123</span> 
<span class='line'>124</span> 
<span class='line'>125</span> 
<span class='line'>126</span> </span><span class="COMM">/**
<span class='line'>127</span>  * Perform authentication with source SmartCard-HSM and key on that device
<span class='line'>128</span>  *
<span class='line'>129</span>  * @param {SmartCardHSM} srcsc the SmartCard-HSM containing the private key for authentication
<span class='line'>130</span>  * @param {Key} key the private key
<span class='line'>131</span>  */</span><span class="WHIT">
<span class='line'>132</span> </span><span class="NAME">ManagePKA.prototype.performAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">srcsc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">challenge</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">input</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.deviceId.concat</span><span class="PUNC">(</span><span class="NAME">challenge</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">srcsc.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> 
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">input</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> 
<span class='line'>141</span> </span><span class="WHIT">	</span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CVC.unwrapSignature</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="NAME">this.updateStatus</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> 
<span class='line'>149</span> 
<span class='line'>150</span> </span><span class="COMM">/**
<span class='line'>151</span>  * Get number of public keys (m)
<span class='line'>152</span>  *
<span class='line'>153</span>  * @type Number
<span class='line'>154</span>  * @return the number of public keys (m)
<span class='line'>155</span>  */</span><span class="WHIT">
<span class='line'>156</span> </span><span class="NAME">ManagePKA.prototype.getNumberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.numberOfPublicKeys</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>159</span> 
<span class='line'>160</span> 
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="COMM">/**
<span class='line'>163</span>  * Get number of public keys missing for complete setup
<span class='line'>164</span>  *
<span class='line'>165</span>  * @type Number
<span class='line'>166</span>  * @return the number of public keys missing for complete setup
<span class='line'>167</span>  */</span><span class="WHIT">
<span class='line'>168</span> </span><span class="NAME">ManagePKA.prototype.getMissingPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.missingPublicKeys</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>171</span> 
<span class='line'>172</span> 
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="COMM">/**
<span class='line'>175</span>  * Get number of keys required for successfull authentication (n)
<span class='line'>176</span>  *
<span class='line'>177</span>  * @type Number
<span class='line'>178</span>  * @return the number of keys required for successfull authentication (n)
<span class='line'>179</span>  */</span><span class="WHIT">
<span class='line'>180</span> </span><span class="NAME">ManagePKA.prototype.getRequiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> 
<span class='line'>185</span> </span><span class="COMM">/**
<span class='line'>186</span>  * Get number of keys already authenticated in this session
<span class='line'>187</span>  *
<span class='line'>188</span>  * @type Number
<span class='line'>189</span>  * @return the number of keys already authenticated in this session
<span class='line'>190</span>  */</span><span class="WHIT">
<span class='line'>191</span> </span><span class="NAME">ManagePKA.prototype.getAuthenticatedPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.authenticatedPublicKeys</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>194</span> 
<span class='line'>195</span> 
<span class='line'>196</span> 
<span class='line'>197</span> </span><span class="COMM">/**
<span class='line'>198</span>  * Describe current status in human readable form
<span class='line'>199</span>  *
<span class='line'>200</span>  * @type String
<span class='line'>201</span>  * @return the status
<span class='line'>202</span>  */</span><span class="WHIT">
<span class='line'>203</span> </span><span class="NAME">ManagePKA.prototype.describeStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.missingPublicKeys</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.missingPublicKeys</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" missing key(s) in "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" of "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" public key authentication"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.authenticatedPublicKeys</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" authenticated public key(s) in "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" of "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" scheme"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>209</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>210</span> 
<span class='line'>211</span> 
<span class='line'>212</span> 
<span class='line'>213</span> </span><span class="COMM">/**
<span class='line'>214</span>  * Enumerate names (CHR) or registered public keys
<span class='line'>215</span>  *
<span class='line'>216</span>  * @type Object
<span class='line'>217</span>  * @return Object with property chr containing the PublicKeyReference and with property
<span class='line'>218</span>  *         status containing ManagePKA.KEY_PRESENT if a key is registered at that slot,
<span class='line'>219</span>  *         ManagePKA.KEY_NOT_FOUND if not. ManagePKA.KEY_ALREADY_AUTHENTICATED is returned
<span class='line'>220</span>  *         if the public key has already been authenticated.
<span class='line'>221</span>  */</span><span class="WHIT">
<span class='line'>222</span> </span><span class="NAME">ManagePKA.prototype.enumeratePublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> 
<span class='line'>225</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.numberOfPublicKeys</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x9001</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">			</span><span class="NAME">list.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">ManagePKA.KEY_NOT_FOUND</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="NAME">bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">				</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ManagePKA.KEY_PRESENT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">				</span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ManagePKA.KEY_ALREADY_AUTHENTICATED</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">			</span><span class="NAME">list.push</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>242</span> 
<span class='line'>243</span> 
<span class='line'>244</span> 
<span class='line'>245</span> </span><span class="COMM">/**
<span class='line'>246</span>  * Validate and register public key
<span class='line'>247</span>  *
<span class='line'>248</span>  * @param {CVC} pk public key in CSR format from card
<span class='line'>249</span>  * @param {CVC} devcert device certificate
<span class='line'>250</span>  * @param {CVC} dicacert device issuer certificate
<span class='line'>251</span>  * @param {Number} replace the id of the key to be replaced (0-based) or undefined
<span class='line'>252</span>  */</span><span class="WHIT">
<span class='line'>253</span> </span><span class="NAME">ManagePKA.prototype.registerPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">devcert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dicacert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">replace</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pk.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication key must be a 256 bit EC key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>257</span> 
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.verifyCertificate</span><span class="PUNC">(</span><span class="NAME">dicacert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="NAME">this.sc.verifyCertificate</span><span class="PUNC">(</span><span class="NAME">devcert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> 
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pk.getOuterCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> 
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> 
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> 
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="COMM">// Extract value of 67</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TLVList</span><span class="PUNC">(</span><span class="NAME">pk.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">TLV.EMV</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tl.index</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> 
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">replace</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">replace</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>280</span> 
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="NAME">this.updateStatus</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview PaperKey Encoder and Decoder
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Create a PaperKey encoder/decoder
<span class='line'> 31</span>  *
<span class='line'> 32</span>  * @class Encoder / Decoder for PaperKeys
<span class='line'> 33</span>  * @constructor
<span class='line'> 34</span>  */</span><span class="WHIT">
<span class='line'> 35</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="WHIT">	</span><span class="NAME">this.base</span><span class="WHIT">  </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="WHIT">	</span><span class="NAME">this.alpha</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ABCDEFGH!JKLMN*PQRSTUVWXYZabcdefghijk%mnopqrstuvwxyz0123456789+/"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 39</span> 
<span class='line'> 40</span> </span><span class="NAME">exports.PaperKeyEncoding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> 
<span class='line'> 42</span> </span><span class="NAME">PaperKeyEncoding.E_INV_LENGTH</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Input does not contain 12 characters"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="NAME">PaperKeyEncoding.E_WRONG_SEGMENT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Wrong segment number"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="NAME">PaperKeyEncoding.E_CHECK_FAILED</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Check value failed"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> 
<span class='line'> 47</span> 
<span class='line'> 48</span> </span><span class="COMM">/**
<span class='line'> 49</span>  * Encode an 8 byte segment in human readable form.
<span class='line'> 50</span>  *
<span class='line'> 51</span>  * Based on BASE64 encoding with visually confusable characters replaced.
<span class='line'> 52</span>  *
<span class='line'> 53</span>  * I is replaced by !
<span class='line'> 54</span>  * O is replaced by *
<span class='line'> 55</span>  * l is replaced by %
<span class='line'> 56</span>  *
<span class='line'> 57</span>  * A LUHN-64 character is appended.
<span class='line'> 58</span>  *
<span class='line'> 59</span>  * A segment identifier is encoded in 2 bit at the end of the encoded 64 bit string.
<span class='line'> 60</span>  *
<span class='line'> 61</span>  * @param {Number} segment
<span class='line'> 62</span>  * @param {ByteString} data
<span class='line'> 63</span>  * @type String
<span class='line'> 64</span>  * @return the encoded string
<span class='line'> 65</span>  */</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="NAME">PaperKeyEncoding.prototype.encodeSegment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">segment</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">segment</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">segment</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"segment must be a positive number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 70</span> 
<span class='line'> 71</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"data must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"data must be 8 byte"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 78</span> 
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> 
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="COMM">// Append segment number's less 2 bit</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">segment</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 83</span> 
<span class='line'> 84</span> </span><span class="COMM">//	print(data.toString(BASE64));</span><span class="WHIT">
<span class='line'> 85</span> 
<span class='line'> 86</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 88</span> 
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">18</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x3F</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="WHIT">		</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="COMM">//		print("s = " + s + " cf = " + cf + " cs = " + cs);</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">		</span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">^</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> 
<span class='line'> 97</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.alpha.charAt</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x3F</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> 
<span class='line'>101</span> </span><span class="WHIT">		</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="COMM">//		print("s = " + s + " cf = " + cf + " cs = " + cs);</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">		</span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">^</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> 
<span class='line'>105</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.alpha.charAt</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> </span><span class="WHIT">		</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x3F</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="WHIT">		</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="COMM">//		print("s = " + s + " cf = " + cf + " cs = " + cs);</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">		</span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">^</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> 
<span class='line'>113</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.alpha.charAt</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> 
<span class='line'>115</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">			</span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x3F</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> 
<span class='line'>118</span> </span><span class="WHIT">			</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="COMM">//			print("s = " + s + " cf = " + cf + " cs = " + cs);</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">			</span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">^</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> 
<span class='line'>122</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.alpha.charAt</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.alpha.charAt</span><span class="PUNC">(</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x3F</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>130</span> 
<span class='line'>131</span> 
<span class='line'>132</span> 
<span class='line'>133</span> </span><span class="COMM">/**
<span class='line'>134</span>  * Decode an 8 byte segment from 12 input characters.
<span class='line'>135</span>  *
<span class='line'>136</span>  * Characters not in the alphabet are ignored.
<span class='line'>137</span>  *
<span class='line'>138</span>  * Throws GPError with GPError.INVALID_LENGTH if the input does not contain at least 12 usable characters.
<span class='line'>139</span>  * Throws GPError with GPError.SIGNATURE_FAILED if the check digit based validation fails.
<span class='line'>140</span>  * Throws GPError with GPError.INVALID_DATA if the segment number does not match the expected value.
<span class='line'>141</span>  *
<span class='line'>142</span>  * @param {Number} segment
<span class='line'>143</span>  * @param {String} str the user input
<span class='line'>144</span>  * @type ByteString
<span class='line'>145</span>  * @return the 8 byte segment
<span class='line'>146</span>  */</span><span class="WHIT">
<span class='line'>147</span> </span><span class="NAME">PaperKeyEncoding.prototype.decodeSegment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">segment</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">segment</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">segment</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"segment must be a positive number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>151</span> 
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"str must be String"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>155</span> 
<span class='line'>156</span> </span><span class="COMM">//	print(str);</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> 
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> 
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ch</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.charAt</span><span class="PUNC">(</span><span class="NAME">p</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ch</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_LENGTH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding.E_INV_LENGTH</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.alpha.indexOf</span><span class="PUNC">(</span><span class="NAME">ch</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.base.indexOf</span><span class="PUNC">(</span><span class="NAME">ch</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> 
<span class='line'>176</span> </span><span class="WHIT">		</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="COMM">//		print("v = " + v + " cf = " + cf + " cs = " + cs);</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">		</span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="WHIT"> </span><span class="PUNC">^</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> 
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> 
<span class='line'>182</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>183</span> </span><span class="WHIT">			</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">			</span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>187</span> 
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">a</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> 
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">cf</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x3F</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.SIGNATURE_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding.E_CHECK_FAILED</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="COMM">//	print(bb);</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">bb.byteAt</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">segment</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding.E_WRONG_SEGMENT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>199</span> 
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">left</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="NAME">bb.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span> 
<span class='line'>205</span> 
<span class='line'>206</span> 
<span class='line'>207</span> </span><span class="COMM">/**
<span class='line'>208</span>  * Format a segment by splitting the input after each 4 characters and inserting " - "
<span class='line'>209</span>  *
<span class='line'>210</span>  * @param {String} str the unformatted string
<span class='line'>211</span>  * @type String
<span class='line'>212</span>  * @return the formatted string
<span class='line'>213</span>  */</span><span class="WHIT">
<span class='line'>214</span> </span><span class="NAME">PaperKeyEncoding.formatSegment</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">			</span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" - "</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">		</span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str.substr</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">		</span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">res</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>226</span> 
<span class='line'>227</span> 
<span class='line'>228</span> 
<span class='line'>229</span> </span><span class="COMM">/**
<span class='line'>230</span>  * Dump a key
<span class='line'>231</span>  *
<span class='line'>232</span>  * @param {ByteString} data the key value (length must be a multiple of 8)
<span class='line'>233</span>  * @type String
<span class='line'>234</span>  * @return the formatted key with 3 groups of 4 digits per line
<span class='line'>235</span>  */</span><span class="WHIT">
<span class='line'>236</span> </span><span class="NAME">PaperKeyEncoding.dumpKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">data</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"data must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"data must be a multiple of 8 byte"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>244</span> 
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">segments</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> 
<span class='line'>249</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">segments</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding.formatSegment</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>256</span> 
<span class='line'>257</span> 
<span class='line'>258</span> 
<span class='line'>259</span> </span><span class="NAME">PaperKeyEncoding.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> 
<span class='line'>262</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"AAAAAAAAAAAA"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"All zero seg 0 encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> 
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"AAAAAAAAAADG"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"All zero seg 3 encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> 
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"AAAAAAAAAADG"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"All zero seg 7 encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> 
<span class='line'>276</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Did not detect wrong segment"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">e.error</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Must be GPError.INVALID_DATA"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">e.message</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding.E_WRONG_SEGMENT</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Must be PaperKeyEncoding.E_WRONG_SEGMENT"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> 
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"AAAAAAAAAADA"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Did not detect wrong check digit"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">e.error</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">GPError.SIGNATURE_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Must be GPError.SIGNATURE_FAILED"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">e.message</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding.E_CHECK_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Must be PaperKeyEncoding.E_CHECK_FAILED"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>293</span> 
<span class='line'>294</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ref.not</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"//////////8p"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"All one seg 0 encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"///////////v"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"All one seg 3 encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x04</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"BAAAAAAAAAAC"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"First one encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> 
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x10</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"ABAAAAAAAAAB"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Second one encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> 
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0xFC</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"/AAAAAAAAAA+"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"First max encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>321</span> 
<span class='line'>322</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x03F0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ref</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="STRN">"A/AAAAAAAAA/"</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Second max encoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">ref.equals</span><span class="PUNC">(</span><span class="NAME">res</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decoding failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> 
<span class='line'>328</span> 
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> 
<span class='line'>332</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">PaperKeyEncoding.dumpKey</span><span class="PUNC">(</span><span class="NAME">kv</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> 
<span class='line'>335</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PaperKeyEncoding.formatSegment</span><span class="PUNC">(</span><span class="NAME">pc.encodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kv</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Dialog.prompt</span><span class="PUNC">(</span><span class="STRN">"Enter segment "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"User abort"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">		</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pc.decodeSegment</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">kv.equals</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Entered value does not match key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">		</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">			</span><span class="NAME">Dialog.prompt</span><span class="PUNC">(</span><span class="NAME">e.message</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>353</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>354</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  SmartCard-HSM Support Scripts
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 2011-2012 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview SmartCard-HSM Card Service
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="COMM">// Imports</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/eac/CVC"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CVC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/eac/PublicKeyReference"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PublicKeyReference</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/eac/ChipAuthentication"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">ChipAuthentication</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKCS1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/pkcs/PKCS1"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKCS1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">DKEK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/sc-hsm/DKEK"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">DKEK</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Bitmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/utils/Bitmap"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Bitmap</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 34</span> 
<span class='line'> 35</span> 
<span class='line'> 36</span> 
<span class='line'> 37</span> </span><span class="COMM">/**
<span class='line'> 38</span>  * Create a SmartCard-HSM access object
<span class='line'> 39</span>  * @class Class implementing support for SmartCard-HSM access
<span class='line'> 40</span>  * @constructor
<span class='line'> 41</span>  * @param {Card} card the card object
<span class='line'> 42</span>  */</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">this.card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">card</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.maxCAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1232</span><span class="PUNC">;</span><span class="WHIT">			</span><span class="COMM">// APDU buffer limit in JCOP 3</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1232</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// The APDU transport does not support the full response side</span><span class="WHIT">
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">card.readerName.indexOf</span><span class="PUNC">(</span><span class="STRN">"Secure Flash Card"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">		</span><span class="NAME">this.maxCAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">478</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">		</span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">506</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">		</span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">card.readerName.indexOf</span><span class="PUNC">(</span><span class="STRN">"REINER SCT cyberJack"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="NAME">this.maxCAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1014</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">		</span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1014</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="WHIT">		</span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">card.readerName.indexOf</span><span class="PUNC">(</span><span class="STRN">"ACS APG8201"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">		</span><span class="NAME">this.maxCAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1141</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">		</span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1141</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">		</span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">card.readerName.indexOf</span><span class="PUNC">(</span><span class="STRN">"Gemalto IDBridge"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">		</span><span class="NAME">this.maxCAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">262</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">		</span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">499</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">		</span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.card.maxReaderCAPDU</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.maxReaderCAPDU</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.maxCAPDU</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 70</span> </span><span class="WHIT">			</span><span class="NAME">this.maxCAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.maxReaderCAPDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 71</span> </span><span class="WHIT">			</span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 72</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 74</span> 
<span class='line'> 75</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.card.maxReaderRAPDU</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.maxReaderRAPDU</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.maxRAPDU</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">			</span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.maxReaderRAPDU</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">			</span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="COMM">// 9 Byte CLA|INS|P1|P2|LcEx||LeEx</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">	</span><span class="COMM">// 19 Byte SM overhead (Tag 85, 3 byte length, 1 byte padding indicator, tag 97 02 &lt;Le> and tag 8E 08 &lt;mac></span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="COMM">// 1 byte required for padding</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="NAME">this.maxCData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.maxCAPDU</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">19</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="COMM">//	print("maxCData=" + this.maxCData);</span><span class="WHIT">
<span class='line'> 87</span> 
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="COMM">// 19 Byte SM overhead (Tag 85, 3 byte length, 1 byte padding indicator, tag 99 02 SW1SW2 and tag 8E 08 &lt;mac></span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="COMM">// 2 byte SW1/SW2</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="COMM">// 1 byte required for padding</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="NAME">this.maxRData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.floor</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">18</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">/</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="COMM">//	print("maxRData=" + this.maxRData);</span><span class="WHIT">
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="NAME">this.useExternalHashInECDSA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// Disable hashing in card if affected by bug #93</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="COMM">// Check if SmartCard-HSM is already selected and authenticated</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> 
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">		</span><span class="NAME">this.logout</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Select application</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>102</span> 
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="NAME">this.namemap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="NAME">this.idmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> </span><span class="NAME">exports.SmartCardHSM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> 
<span class='line'>110</span> </span><span class="NAME">SmartCardHSM.C_DevAut</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2F02"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>111</span> </span><span class="NAME">SmartCardHSM.EF_TokenInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"2F03"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="NAME">SmartCardHSM.EF_StaticTokenInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"CB00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> 
<span class='line'>114</span> </span><span class="NAME">SmartCardHSM.PrK_DevAut</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="NAME">SmartCardHSM.PIN_User</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>116</span> 
<span class='line'>117</span> </span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xC4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="NAME">SmartCardHSM.KDDPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xC7</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="NAME">SmartCardHSM.CERTDPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xC8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="NAME">SmartCardHSM.DODPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xC9</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="NAME">SmartCardHSM.CACERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="NAME">SmartCardHSM.KEYMETAPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCB</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// Changed in V2.3</span><span class="WHIT">
<span class='line'>123</span> </span><span class="NAME">SmartCardHSM.READONLYDATAPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCB</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// Starting with V2.3</span><span class="WHIT">
<span class='line'>124</span> </span><span class="NAME">SmartCardHSM.KEYPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="NAME">SmartCardHSM.CONFIDENTIALDATAPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCD</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> </span><span class="NAME">SmartCardHSM.EECERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCE</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="NAME">SmartCardHSM.PUBLICDATAPREFIX</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xCF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> 
<span class='line'>129</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> 
<span class='line'>131</span> </span><span class="COMM">// Symmetric</span><span class="WHIT">
<span class='line'>132</span> </span><span class="NAME">SmartCardHSM.ALG_CBC_ENC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="NAME">SmartCardHSM.ALG_CBC_DEC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x11</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="NAME">SmartCardHSM.ALG_CMAC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x18</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_CBC_ENC</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CBC_ENC"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_CBC_DEC</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CBC_DEC"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>138</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_CMAC</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CMAC"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> 
<span class='line'>140</span> 
<span class='line'>141</span> </span><span class="COMM">// RSA Block</span><span class="WHIT">
<span class='line'>142</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_RAW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_DECRYPT_RAW</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x21</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>144</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_DECRYPT_V15</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>145</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_DECRYPT_OAEP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x23</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> 
<span class='line'>147</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_RAW</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_RAW"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_DECRYPT_RAW</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_DECRYPT_RAW"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_DECRYPT_V15</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_DECRYPT_V15"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_DECRYPT_OAEP</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_DECRYPT_OAEP"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>151</span> 
<span class='line'>152</span> 
<span class='line'>153</span> </span><span class="COMM">// RSA Sign with hash and PKCS#1 V1.5</span><span class="WHIT">
<span class='line'>154</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_V15_SHA1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x31</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_V15_SHA256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x33</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_V15_SHA512</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x35</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_V15_SHA1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_V15_SHA1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_V15_SHA256</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_V15_SHA256"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_V15_SHA512</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_V15_SHA512"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> 
<span class='line'>162</span> 
<span class='line'>163</span> </span><span class="COMM">// RSA Sign with hash and PSS</span><span class="WHIT">
<span class='line'>164</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS_SHA1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS_SHA256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x43</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS_SHA512</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x45</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_PSS"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>170</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS_SHA1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_PSS_SHA1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS_SHA256</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_PSS_SHA256"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_RSA_SIGN_PSS_SHA512</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"RSA_PSS_SHA512"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> 
<span class='line'>175</span> </span><span class="COMM">// ECDSA</span><span class="WHIT">
<span class='line'>176</span> </span><span class="NAME">SmartCardHSM.ALG_ECDSA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x70</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> </span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x71</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA224</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x72</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x73</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA384</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x74</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA512</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x75</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDSA</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDSA"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDSA_SHA1"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA224</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDSA_SHA224"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA256</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDSA_SHA256"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA384</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDSA_SHA384"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDSA_SHA512</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDSA_SHA512"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> 
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="COMM">// ECDH</span><span class="WHIT">
<span class='line'>192</span> </span><span class="NAME">SmartCardHSM.ALG_ECDH</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="NAME">SmartCardHSM.ALG_ECDHAutPuk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="NAME">SmartCardHSM.ALG_ECDHXKEK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDH</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDH"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDHAutPuk</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDH_AUTPUK"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_ECDHXKEK</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ECDH_XKEK"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> 
<span class='line'>200</span> 
<span class='line'>201</span> </span><span class="COMM">// Wrap</span><span class="WHIT">
<span class='line'>202</span> </span><span class="NAME">SmartCardHSM.ALG_WRAP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x92</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="NAME">SmartCardHSM.ALG_UNWRAP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x93</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="NAME">SmartCardHSM.ALG_REPLACE</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x94</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> 
<span class='line'>206</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_WRAP</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"WRAP"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_UNWRAP</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"UNWRAP"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_REPLACE</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"REPLACE"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>209</span> 
<span class='line'>210</span> 
<span class='line'>211</span> </span><span class="COMM">// Derive</span><span class="WHIT">
<span class='line'>212</span> </span><span class="NAME">SmartCardHSM.ALG_DERIVE_EC_KEY</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x98</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>213</span> </span><span class="NAME">SmartCardHSM.ALG_DERIVE_SP800_56C</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x99</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> 
<span class='line'>215</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_DERIVE_EC_KEY</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"DERIVE_EC"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_DERIVE_SP800_56C</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"DERIVE_SP800_56C"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> 
<span class='line'>219</span> </span><span class="NAME">SmartCardHSM.ALG_SIGN_DEFAULT</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_SIGN_DEFAULT</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"SIGN_DEFAULT"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> 
<span class='line'>223</span> </span><span class="COMM">// Key Generation</span><span class="WHIT">
<span class='line'>224</span> </span><span class="NAME">SmartCardHSM.ALG_GENERATE_AES128</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="NAME">SmartCardHSM.ALG_GENERATE_AES192</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="NAME">SmartCardHSM.ALG_GENERATE_AES256</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0xB2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_GENERATE_AES128</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"GENERATE_AES128"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_GENERATE_AES192</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"GENERATE_AES192"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">SmartCardHSM.ALG_GENERATE_AES256</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"GENERATE_AES256"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>231</span> 
<span class='line'>232</span> 
<span class='line'>233</span> </span><span class="NAME">SmartCardHSM.ALGOMAP</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.ALGORITHMS.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="NAME">SmartCardHSM.ALGOMAP</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>239</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> 
<span class='line'>242</span> </span><span class="NAME">SmartCardHSM.rootCerts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="NAME">DESRCACC100001</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"7F218201B47F4E82016C5F290100420E44455352434143433130303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A78641046D025A8026CDBA245F10DF1B72E9880FFF746DAB40A43A3D5C6BEBF27707C30F6DEA72430EE3287B0665C1EAA6EAA4FA26C46303001983F82BD1AA31E03DA0628701015F200E44455352434143433130303030317F4C10060B2B0601040181C31F0301015301C05F25060102010100095F24060302010100085F37409DBB382B1711D2BAACB0C623D40C6267D0B52BA455C01F56333DC9554810B9B2878DAF9EC3ADA19C7B065D780D6C9C3C2ECEDFD78DEB18AF40778ADF89E861CA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">	</span><span class="NAME">UTSRCACC100001</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"7F218201B47F4E82016C5F290100420E55545352434143433130303030317F4982011D060A04007F000702020202038120A9FB57DBA1EEA9BC3E660A909D838D726E3BF623D52620282013481D1F6E537782207D5A0975FC2C3057EEF67530417AFFE7FB8055C126DC5C6CE94A4B44F330B5D9832026DC5C6CE94A4B44F330B5D9BBD77CBF958416295CF7E1CE6BCCDC18FF8C07B68441048BD2AEB9CB7E57CB2C4B482FFC81B7AFB9DE27E1E3BD23C23A4453BD9ACE3262547EF835C3DAC4FD97F8461A14611DC9C27745132DED8E545C1D54C72F0469978520A9FB57DBA1EEA9BC3E660A909D838D718C397AA3B561A6F7901E0E82974856A7864104A041FEB2FD116B2AD19CA6B7EACD71C9892F941BB88D67DCEEC92501F070011957E22122BA6C2CF5FF02936F482E35A6129CCBBA8E9383836D3106879C408EF08701015F200E55545352434143433130303030317F4C10060B2B0601040181C31F0301015301C05F25060102010100095F24060302010100085F3740914DD0FA00615C44048D1467435400423A4AD1BD37FD98D6DE84FD8037489582325C72956D4FDFABC6EDBA48184A754F37F1BE5142DD1C27D66569308CE19AAF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>245</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> </span><span class="NAME">SmartCardHSM.devAutPuk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="NAME">SmartCardHSM.devAutPuk.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="NAME">SmartCardHSM.devAutPuk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="NAME">SmartCardHSM.devAutPuk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"4C01EA36C5065FF47E8F0676A77CDCED6C8F745E6784F7807F5520124F81ED05"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> </span><span class="NAME">SmartCardHSM.devAutPuk.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"4112DCE471CA003442830A10C75B31F9BFADD60628F47131628C7254AD8B956A"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> 
<span class='line'>253</span> 
<span class='line'>254</span> 
<span class='line'>255</span> </span><span class="COMM">/**
<span class='line'>256</span>  * Remove Root Certificate of Development SRCA
<span class='line'>257</span>  *
<span class='line'>258</span>  * Always call this on a productive system
<span class='line'>259</span>  */</span><span class="WHIT">
<span class='line'>260</span> </span><span class="NAME">SmartCardHSM.disableUTSRCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.rootCerts.UTSRCACC100001</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>263</span> 
<span class='line'>264</span> 
<span class='line'>265</span> 
<span class='line'>266</span> </span><span class="COMM">/**
<span class='line'>267</span>  * Set the list of trusted SRCA certificates
<span class='line'>268</span>  *
<span class='line'>269</span>  * @param {ByteString[]} srcalist the list of binary encoded SRCA certificates
<span class='line'>270</span>  */</span><span class="WHIT">
<span class='line'>271</span> </span><span class="NAME">SmartCardHSM.setTrustedSRCACertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">srcalist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">	</span><span class="NAME">SmartCardHSM.rootCerts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">srcalist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">srcalist</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Adding as trusted SRCA certificate : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">		</span><span class="NAME">SmartCardHSM.rootCerts</span><span class="PUNC">[</span><span class="NAME">cert.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>278</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>279</span> 
<span class='line'>280</span> 
<span class='line'>281</span> 
<span class='line'>282</span> </span><span class="COMM">/**
<span class='line'>283</span>  * Parse list of CVC in a binary blob
<span class='line'>284</span>  *
<span class='line'>285</span>  * @param {ByteString} a binary blob (e.g an EF) containing concatenated CVCs
<span class='line'>286</span>  * @type CVC[]
<span class='line'>287</span>  * @return the list of CVCs
<span class='line'>288</span>  */</span><span class="WHIT">
<span class='line'>289</span> </span><span class="NAME">SmartCardHSM.parseCertificateList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">bin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">a.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">		</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">			</span><span class="NAME">list.push</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">		</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">			</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Index "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is not a CVC"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">			</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>303</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>304</span> 
<span class='line'>305</span> 
<span class='line'>306</span> 
<span class='line'>307</span> </span><span class="COMM">/**
<span class='line'>308</span>  * Validate device certificate chain
<span class='line'>309</span>  *
<span class='line'>310</span>  * @param {Crypto} crypto the crypto provider to use
<span class='line'>311</span>  * @param {ByteString} devAutCert the device certificate chain read from EF.C_DevAut
<span class='line'>312</span>  * @type Key
<span class='line'>313</span>  * @return the device authentication public key
<span class='line'>314</span>  */</span><span class="WHIT">
<span class='line'>315</span> </span><span class="NAME">SmartCardHSM.validateCertificateChain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">devAutCert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="COMM">// Device device certificate</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">devAutCert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>318</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Device Certificate    : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> 
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"DECA00001"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// CA used for development version up to 0.17</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.rootCerts.UTSRCACC100001</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Device certificate DECA00001 disabled"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cvc.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.devAutPuk</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Device certificate verification failed for CAR=DECA00001"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">devicecert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">:</span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">:</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>332</span> 
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="COMM">// Decode device issuer certificate</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">size</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">devAutCert.left</span><span class="PUNC">(</span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dica</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">(</span><span class="NAME">devAutCert.bytes</span><span class="PUNC">(</span><span class="NAME">len</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Device Issuer CA      : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dica</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> 
<span class='line'>339</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.rootCerts</span><span class="PUNC">[</span><span class="NAME">dica.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown or disabled root CA "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dica.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>343</span> 
<span class='line'>344</span> </span><span class="WHIT">	</span><span class="COMM">// Determine root certificateSmartCardHSM.rootCerts[dica.getCAR()]</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">srca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.rootCerts</span><span class="PUNC">[</span><span class="NAME">dica.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"SmartCard-HSM Root CA : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">srca</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>347</span> 
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="COMM">// Validate chain</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">srcapuk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">srca.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">srca.getPublicKeyOID</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">dica.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srcapuk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"DICA certificate not verified"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>355</span> 
<span class='line'>356</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dicapuk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dica.getPublicKey</span><span class="PUNC">(</span><span class="NAME">srcapuk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cvc.verifyWith</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dicapuk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Device certificate verification failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>360</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>361</span> 
<span class='line'>362</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">srca.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dica.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"/"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getHolder</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">srca</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">srca</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dica</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">dica</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">devicecert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">cvc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">:</span><span class="NAME">cvc.getPublicKey</span><span class="PUNC">(</span><span class="NAME">srcapuk</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">path</span><span class="PUNC">:</span><span class="NAME">path</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>364</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>365</span> 
<span class='line'>366</span> 
<span class='line'>367</span> 
<span class='line'>368</span> </span><span class="COMM">/**
<span class='line'>369</span>  * Decode algorithm list and return string array with names
<span class='line'>370</span>  *
<span class='line'>371</span>  * @param {ByteString} list the algorithm list, e.g. as returned in the key meta data
<span class='line'>372</span>  * @type String[]
<span class='line'>373</span>  * @return the list of algorithm names
<span class='line'>374</span>  */</span><span class="WHIT">
<span class='line'>375</span> </span><span class="NAME">SmartCardHSM.decodeAlgorithmList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">		</span><span class="NAME">a.push</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.ALGORITHMS</span><span class="PUNC">[</span><span class="NAME">list.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>380</span> 
<span class='line'>381</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> 
<span class='line'>385</span> 
<span class='line'>386</span> </span><span class="COMM">/**
<span class='line'>387</span>  * Parse and encode the algorithm list containing either algorithm ids or names
<span class='line'>388</span>  *
<span class='line'>389</span>  * @param {String | String[]} list the list of algorithms
<span class='line'>390</span>  * @type ByteString
<span class='line'>391</span>  * @return the algorithm list
<span class='line'>392</span>  */</span><span class="WHIT">
<span class='line'>393</span> </span><span class="NAME">SmartCardHSM.encodeAlgorithmList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>394</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">list</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">list.indexOf</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">			</span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">list.split</span><span class="PUNC">(</span><span class="STRN">"."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">			</span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">list.split</span><span class="PUNC">(</span><span class="STRN">","</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>401</span> 
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">list.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">NaN</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>408</span> </span><span class="WHIT">			</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseInt</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">isNaN</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.ALGOMAP</span><span class="PUNC">[</span><span class="NAME">e.toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">				</span><span class="NAME">print</span><span class="PUNC">(</span><span class="STRN">"Unknown keyword or number "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>419</span> 
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>422</span> 
<span class='line'>423</span> 
<span class='line'>424</span> 
<span class='line'>425</span> </span><span class="COMM">/**
<span class='line'>426</span>  * Return a string describing the SmartCard-HSM Version
<span class='line'>427</span>  *
<span class='line'>428</span>  * @type String
<span class='line'>429</span>  * @return the version string
<span class='line'>430</span>  */</span><span class="WHIT">
<span class='line'>431</span> </span><span class="NAME">SmartCardHSM.prototype.getVersionInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.major</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"Version unknown"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>435</span> 
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"Version "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.major</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"."</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.minor</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>437</span> 
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.platform</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">		</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">this.platform</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" on JCOP"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" Demo on JCOP"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" on JCOP 2.4.1r3"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" on JCOP 2.4.2r3"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" on JCOP 2.4.2r1"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" on JCOP 3"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" on JCOP 4"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">" on JCOP 4.5"</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>448</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>452</span> 
<span class='line'>453</span> 
<span class='line'>454</span> 
<span class='line'>455</span> </span><span class="COMM">/**
<span class='line'>456</span>  * Return the native OCF SmartCardHSMCardService
<span class='line'>457</span>  *
<span class='line'>458</span>  * @type de.cardcontact.opencard.service.smartcardhsm.SmartCardHSMCardService
<span class='line'>459</span>  * @return the OCF SmartCardHSMCardService
<span class='line'>460</span>  */</span><span class="WHIT">
<span class='line'>461</span> </span><span class="NAME">SmartCardHSM.prototype.getNativeCardService</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.nativeCardService</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.nativeCardService</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>465</span> </span><span class="WHIT">	</span><span class="NAME">this.nativeCardService</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.getCardService</span><span class="PUNC">(</span><span class="STRN">"de.cardcontact.opencard.service.smartcardhsm.SmartCardHSMCardService"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>466</span> 
<span class='line'>467</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.nativeCardService</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>469</span> 
<span class='line'>470</span> 
<span class='line'>471</span> 
<span class='line'>472</span> </span><span class="COMM">/**
<span class='line'>473</span>  * Validate device certificate chain
<span class='line'>474</span>  *
<span class='line'>475</span>  * @param {Crypto} crypto the crypto provider to use
<span class='line'>476</span>  * @type Key
<span class='line'>477</span>  * @return the device authentication public key
<span class='line'>478</span>  */</span><span class="WHIT">
<span class='line'>479</span> </span><span class="NAME">SmartCardHSM.prototype.validateCertificateChain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="COMM">// Read concatenation of both certificates</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">devAutCert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.C_DevAut</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.validateCertificateChain</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">devAutCert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">chain</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">chain.publicKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>488</span> 
<span class='line'>489</span> 
<span class='line'>490</span> 
<span class='line'>491</span> </span><span class="COMM">/**
<span class='line'>492</span>  * Open a secure channel using device authentication
<span class='line'>493</span>  *
<span class='line'>494</span>  * @param {Crypto} crypto the crypto provider to use
<span class='line'>495</span>  * @param {Key} devAuthPK the device authentication public key
<span class='line'>496</span>  * @param {Number} Key.AES or Key.DES to request AES or DES secure messaging (Default probe)
<span class='line'>497</span>  * @type ISOSecureChannel
<span class='line'>498</span>  * @return the initialized secure channel
<span class='line'>499</span>  */</span><span class="WHIT">
<span class='line'>500</span> </span><span class="NAME">SmartCardHSM.prototype.openSecureChannel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">devAuthPK</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">smtype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>501</span> 
<span class='line'>502</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">type</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>503</span> 
<span class='line'>504</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">smtype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">		</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">smtype</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>507</span> </span><span class="WHIT">		</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Key.AES</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>508</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>509</span> 
<span class='line'>510</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>511</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH-3DES-CBC-CBC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>513</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH-AES-CBC-CMAC-128"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>515</span> 
<span class='line'>516</span> </span><span class="WHIT">	</span><span class="COMM">// Try AES first and fallback to DES is not supported by card</span><span class="WHIT">
<span class='line'>517</span> 
<span class='line'>518</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> 
<span class='line'>521</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A80</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> 
<span class='line'>523</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6A80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">smtype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Requested secure messaging not supported"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>527</span> 
<span class='line'>528</span> </span><span class="WHIT">		</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>529</span> 
<span class='line'>530</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-CA-ECDH-3DES-CBC-CBC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>531</span> 
<span class='line'>532</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>533</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>534</span> 
<span class='line'>535</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>537</span> 
<span class='line'>538</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ChipAuthentication</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">protocol</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">devAuthPK</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">	</span><span class="COMM">// For domain parameter</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT">	</span><span class="NAME">ca.noPadding</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">	</span><span class="NAME">ca.generateEphemeralCAKeyPair</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> 
<span class='line'>542</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ca.getEphemeralPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>543</span> 
<span class='line'>544</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x7C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ephemeralPublicKeyIfd</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> 
<span class='line'>546</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dadobin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.CPRO</span><span class="PUNC">|</span><span class="NAME">Card.CENC</span><span class="PUNC">|</span><span class="NAME">Card.RPRO</span><span class="PUNC">|</span><span class="NAME">Card.RENC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dado.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>547</span> 
<span class='line'>548</span> </span><span class="COMM">//	GPSystem.log(GPSystem.DEBUG, module.id, dadobin);</span><span class="WHIT">
<span class='line'>549</span> 
<span class='line'>550</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dado</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">dadobin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>551</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x7C</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>552</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">dado.elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>553</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nonceDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>554</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">nonceDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">nonceDO.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> 
<span class='line'>557</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authTokenDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dado.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">authTokenDO.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">authToken</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">authTokenDO.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>560</span> 
<span class='line'>561</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>562</span> </span><span class="WHIT">	</span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">enc.concat</span><span class="PUNC">(</span><span class="NAME">devAuthPK.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT">	</span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">enc.concat</span><span class="PUNC">(</span><span class="NAME">devAuthPK.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>564</span> 
<span class='line'>565</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Encoded CA public key: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">	</span><span class="NAME">ca.performKeyAgreement</span><span class="PUNC">(</span><span class="NAME">enc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">nonce</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ca.verifyAuthenticationToken</span><span class="PUNC">(</span><span class="NAME">authToken</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>568</span> 
<span class='line'>569</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">result</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>570</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication token invalid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Authentication token invalid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Authentication token valid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> 
<span class='line'>575</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Key.DES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">		</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">ca.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> </span><span class="WHIT">		</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">ca.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT">		</span><span class="NAME">sm.setMACSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>581</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">IsoSecureChannel.SSC_SYNC_ENC_POLICY</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>582</span> </span><span class="WHIT">		</span><span class="NAME">sm.setEncKey</span><span class="PUNC">(</span><span class="NAME">ca.kenc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT">		</span><span class="NAME">sm.setMacKey</span><span class="PUNC">(</span><span class="NAME">ca.kmac</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>584</span> </span><span class="WHIT">		</span><span class="NAME">sm.setMACSendSequenceCounter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00000000000000000000000000000000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>585</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>586</span> 
<span class='line'>587</span> </span><span class="WHIT">	</span><span class="NAME">this.card.setCredential</span><span class="PUNC">(</span><span class="NAME">sm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>588</span> </span><span class="WHIT">	</span><span class="NAME">this.smactive</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>589</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">sm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>590</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>591</span> 
<span class='line'>592</span> 
<span class='line'>593</span> 
<span class='line'>594</span> </span><span class="COMM">/**
<span class='line'>595</span>  * Update transparent EF referenced by file identifier
<span class='line'>596</span>  *
<span class='line'>597</span>  * @param {ByteString} fid the two byte file identifier
<span class='line'>598</span>  * @param {Number} offset the offset into the EF
<span class='line'>599</span>  * @param {ByteString} data the data to write
<span class='line'>600</span>  */</span><span class="WHIT">
<span class='line'>601</span> </span><span class="NAME">SmartCardHSM.prototype.updateBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>602</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>603</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>604</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>605</span> 
<span class='line'>606</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bytesLeft</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>607</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>608</span> 
<span class='line'>609</span> </span><span class="WHIT">	</span><span class="COMM">// 8 bytes are required for T54(4) and T53(4)</span><span class="WHIT">
<span class='line'>610</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">blksize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>611</span> 
<span class='line'>612</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bytesLeft</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>613</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">toSend</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bytesLeft</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NAME">blksize</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">blksize</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">bytesLeft</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>614</span> 
<span class='line'>615</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t54</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>616</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t53</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x53</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data.bytes</span><span class="PUNC">(</span><span class="NAME">sent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">toSend</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>617</span> 
<span class='line'>618</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t54.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">t53.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>619</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>620</span> 
<span class='line'>621</span> </span><span class="WHIT">		</span><span class="NAME">bytesLeft</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">toSend</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>622</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">toSend</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>623</span> </span><span class="WHIT">		</span><span class="NAME">sent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">toSend</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>624</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>625</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>626</span> 
<span class='line'>627</span> 
<span class='line'>628</span> 
<span class='line'>629</span> </span><span class="COMM">/**
<span class='line'>630</span>  * Read transparent EF referenced by file identifier
<span class='line'>631</span>  *
<span class='line'>632</span>  * @param {ByteString} fid the two byte file identifier (optional - use currently selected EF if absent)
<span class='line'>633</span>  * @param {Number} offset the offset into the EF (optional)
<span class='line'>634</span>  * @param {Number} length the number of byte to read (optional)
<span class='line'>635</span>  * @type ByteString
<span class='line'>636</span>  * @return the data read from the EF
<span class='line'>637</span>  */</span><span class="WHIT">
<span class='line'>638</span> </span><span class="NAME">SmartCardHSM.prototype.readBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>639</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>640</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>641</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>642</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>643</span> </span><span class="WHIT">		</span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>644</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>645</span> 
<span class='line'>646</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>647</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>648</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t54</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">offset</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>649</span> 
<span class='line'>650</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.limitedAPDUTransport</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.smactive</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">				</span><span class="COMM">// Is a length defined ?</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">this.maxRData</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NAME">this.maxRData</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Truncate if larger than maximum APDU size ?</span><span class="WHIT">
<span class='line'>652</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>653</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">le</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.maxRAPDU</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">;</span><span class="WHIT">					</span><span class="COMM">// Get all with Le=0 in either short or extended APDU mode</span><span class="WHIT">
<span class='line'>654</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>655</span> 
<span class='line'>656</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t54.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">le</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6282</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>657</span> 
<span class='line'>658</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>659</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>660</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>661</span> 
<span class='line'>662</span> </span><span class="WHIT">		</span><span class="NAME">rsp.append</span><span class="PUNC">(</span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT">		</span><span class="NAME">offset</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>664</span> 
<span class='line'>665</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">					</span><span class="COMM">// Length was defined, see if we already got everything</span><span class="WHIT">
<span class='line'>666</span> </span><span class="WHIT">			</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">data.length</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>667</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>668</span> </span><span class="WHIT">				</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>669</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>670</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>671</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6282</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>672</span> 
<span class='line'>673</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>674</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>675</span> 
<span class='line'>676</span> 
<span class='line'>677</span> 
<span class='line'>678</span> </span><span class="COMM">/**
<span class='line'>679</span>  * Select the file or key an return the FCP
<span class='line'>680</span>  *
<span class='line'>681</span>  * @param {ByteString} fid the two byte file object identifier
<span class='line'>682</span>  */</span><span class="WHIT">
<span class='line'>683</span> </span><span class="NAME">SmartCardHSM.prototype.selectFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>684</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>685</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>686</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>687</span> 
<span class='line'>688</span> 
<span class='line'>689</span> 
<span class='line'>690</span> </span><span class="COMM">/**
<span class='line'>691</span>  * Try selecting the file to see if is present
<span class='line'>692</span>  *
<span class='line'>693</span>  * @param {ByteString} fid the two byte file object identifier
<span class='line'>694</span>  */</span><span class="WHIT">
<span class='line'>695</span> </span><span class="NAME">SmartCardHSM.prototype.hasFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>696</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>697</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>698</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>699</span> 
<span class='line'>700</span> 
<span class='line'>701</span> 
<span class='line'>702</span> </span><span class="COMM">/**
<span class='line'>703</span>  * Delete file system object (EF or key)
<span class='line'>704</span>  *
<span class='line'>705</span>  * @param {ByteString} fid the two byte file object identifier
<span class='line'>706</span>  */</span><span class="WHIT">
<span class='line'>707</span> </span><span class="NAME">SmartCardHSM.prototype.deleteFile</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>708</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xE4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>709</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>710</span> 
<span class='line'>711</span> 
<span class='line'>712</span> 
<span class='line'>713</span> </span><span class="COMM">/**
<span class='line'>714</span>  * Strips leading zeros of a ByteString
<span class='line'>715</span>  *
<span class='line'>716</span>  * @param {ByteString} value the ByteString value
<span class='line'>717</span>  * @return the stripped ByteString object, may be an empty ByteString
<span class='line'>718</span>  * @type ByteString
<span class='line'>719</span>  */</span><span class="WHIT">
<span class='line'>720</span> </span><span class="NAME">SmartCardHSM.stripLeadingZeros</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>721</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>722</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>723</span> 
<span class='line'>724</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value.right</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>725</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>726</span> 
<span class='line'>727</span> 
<span class='line'>728</span> 
<span class='line'>729</span> </span><span class="COMM">/**
<span class='line'>730</span>  * Build input for Generate Asymmetric Key Pair command for generating an ECC key pair
<span class='line'>731</span>  *
<span class='line'>732</span>  * @param {PublicKeyReference} innerCAR the CA the request shall be directed to
<span class='line'>733</span>  * @param {ByteString} algo the public key algorithm
<span class='line'>734</span>  * @param {PublicKeyReference} chr the certificate holder reference associated with this key
<span class='line'>735</span>  * @param {Key} dp the domain parameter for the key
<span class='line'>736</span>  * @param {PublicKeyReference} outerCAR the certificate holder reference of the public key for verifying the outer signature
<span class='line'>737</span>  * @param {Key} privateKey optional parameter to supply a private key value for import. This only works with the development version
<span class='line'>738</span>  *              of the SmartCard-HSM.
<span class='line'>739</span>  * @type ByteString
<span class='line'>740</span>  * @return the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR
<span class='line'>741</span>  */</span><span class="WHIT">
<span class='line'>742</span> </span><span class="NAME">SmartCardHSM.buildGAKPwithECC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">innerCAR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outerCAR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>743</span> 
<span class='line'>744</span> </span><span class="WHIT">	</span><span class="COMM">// Encode G</span><span class="WHIT">
<span class='line'>745</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>746</span> </span><span class="WHIT">	</span><span class="COMM">// uncompressed encoding</span><span class="WHIT">
<span class='line'>747</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>748</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">dp.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>749</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">dp.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>750</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">G</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>751</span> 
<span class='line'>752</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>753</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CPI"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F29</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>754</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CAR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">innerCAR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>755</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>756</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Object Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>757</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Prime Modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>758</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"First coefficient a"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>759</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Second coefficient b"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>760</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Base Point G"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">G</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>761</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Order of the base point"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>762</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Cofactor f"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">dp.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>763</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>764</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CHR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>765</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>766</span> 
<span class='line'>767</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">outerCAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>768</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"OuterCAR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x45</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outerCAR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>769</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>770</span> 
<span class='line'>771</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">priKey</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>772</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Private Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x8A</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">priKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_D</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>773</span> </span><span class="WHIT">		</span><span class="NAME">t.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">add</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>774</span> </span><span class="COMM">//		GPSystem.log(GPSystem.DEBUG, module.id, t);</span><span class="WHIT">
<span class='line'>775</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>776</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>777</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>778</span> 
<span class='line'>779</span> 
<span class='line'>780</span> 
<span class='line'>781</span> </span><span class="COMM">/**
<span class='line'>782</span>  * Build input for Generate Asymmetric Key Pair command for generating a RSA key pair
<span class='line'>783</span>  *
<span class='line'>784</span>  * @param {PublicKeyReference} innerCAR the CA the request shall be directed to
<span class='line'>785</span>  * @param {ByteString} algo the public key algorithm
<span class='line'>786</span>  * @param {PublicKeyReference} chr the certificate holder reference associated with this key
<span class='line'>787</span>  * @param {Number} keysize the module size in bits (1024, 1536 or 2048)
<span class='line'>788</span>  * @param {PublicKeyReference} outerCAR the certificate holder reference of the public key for verifying the outer signature
<span class='line'>789</span>  * @type ByteString
<span class='line'>790</span>  * @return the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR
<span class='line'>791</span>  */</span><span class="WHIT">
<span class='line'>792</span> </span><span class="NAME">SmartCardHSM.buildGAKPwithRSA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">innerCAR</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outerCAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>793</span> 
<span class='line'>794</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>795</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CPI"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F29</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>796</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CAR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">innerCAR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>797</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>798</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Object Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>799</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key Exponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">65537</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>800</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Key Size"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>801</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CHR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>803</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>804</span> 
<span class='line'>805</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">outerCAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>806</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"OuterCAR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x45</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">outerCAR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>807</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>808</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>809</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>810</span> 
<span class='line'>811</span> 
<span class='line'>812</span> 
<span class='line'>813</span> </span><span class="COMM">/**
<span class='line'>814</span>  * Create a PKCS#15 PrivateECCKey description
<span class='line'>815</span>  *
<span class='line'>816</span>  * @param {Number/ByteString} keyid the key identifier
<span class='line'>817</span>  * @param {String} label the key label
<span class='line'>818</span>  * @type ASN1
<span class='line'>819</span>  * @return the PrivateECCKey description
<span class='line'>820</span>  */</span><span class="WHIT">
<span class='line'>821</span> </span><span class="NAME">SmartCardHSM.buildPrkDforECC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>822</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>823</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>824</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>825</span> 
<span class='line'>826</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prkd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> 	</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>827</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>828</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>829</span> </span><span class="COMM">//						new ASN1(ASN1.BIT_STRING, new ByteString("0780", HEX)),</span><span class="WHIT">
<span class='line'>830</span> </span><span class="COMM">//						new ASN1(ASN1.OCTET_STRING, new ByteString("01", HEX))</span><span class="WHIT">
<span class='line'>831</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>832</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>833</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>834</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"072080"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>835</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>836</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA1</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>837</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>838</span> </span><span class="WHIT">							</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>839</span> </span><span class="WHIT">								</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>840</span> </span><span class="WHIT">							</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>841</span> </span><span class="WHIT">						</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>842</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>843</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>844</span> 
<span class='line'>845</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>846</span> </span><span class="WHIT">		</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Key size must be > 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>847</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tlvint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>848</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tlvint.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>849</span> </span><span class="WHIT">			</span><span class="NAME">tlvint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">tlvint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>850</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>851</span> </span><span class="WHIT">		</span><span class="NAME">prkd.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tlvint</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>852</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>853</span> 
<span class='line'>854</span> </span><span class="COMM">//	GPSystem.log(GPSystem.DEBUG, module.id, prkd);</span><span class="WHIT">
<span class='line'>855</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">prkd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>856</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>857</span> 
<span class='line'>858</span> 
<span class='line'>859</span> 
<span class='line'>860</span> </span><span class="COMM">/**
<span class='line'>861</span>  * Create a PKCS#15 PrivateRSAKey description
<span class='line'>862</span>  *
<span class='line'>863</span>  * @param {Number/ByteString} keyid the key identifier
<span class='line'>864</span>  * @param {String} label the key label
<span class='line'>865</span>  * @param {Number} modulussize
<span class='line'>866</span>  * @type ASN1
<span class='line'>867</span>  * @return the PrivateECCKey description
<span class='line'>868</span>  */</span><span class="WHIT">
<span class='line'>869</span> </span><span class="NAME">SmartCardHSM.buildPrkDforRSA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">modulussize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>870</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>871</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>872</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>873</span> 
<span class='line'>874</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prkd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> 	</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>875</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>876</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>877</span> </span><span class="COMM">//						new ASN1(ASN1.BIT_STRING, new ByteString("0780", HEX)),</span><span class="WHIT">
<span class='line'>878</span> </span><span class="COMM">//						new ASN1(ASN1.OCTET_STRING, new ByteString("01", HEX))</span><span class="WHIT">
<span class='line'>879</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>880</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>881</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>882</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0274"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>883</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>884</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA1</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>885</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>886</span> </span><span class="WHIT">							</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>887</span> </span><span class="WHIT">								</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>888</span> </span><span class="WHIT">							</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>889</span> </span><span class="WHIT">							</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">modulussize</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>890</span> </span><span class="WHIT">						</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>891</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>892</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>893</span> </span><span class="COMM">//	GPSystem.log(GPSystem.DEBUG, module.id, prkd);</span><span class="WHIT">
<span class='line'>894</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">prkd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>895</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>896</span> 
<span class='line'>897</span> 
<span class='line'>898</span> 
<span class='line'>899</span> </span><span class="COMM">/**
<span class='line'>900</span>  * Create a PKCS#15 SecretKey description
<span class='line'>901</span>  *
<span class='line'>902</span>  * @param {Number/ByteString} keyid the key identifier
<span class='line'>903</span>  * @param {String} label the key label
<span class='line'>904</span>  * @param {Number} keysize
<span class='line'>905</span>  * @type ASN1
<span class='line'>906</span>  * @return the secret key description
<span class='line'>907</span>  */</span><span class="WHIT">
<span class='line'>908</span> </span><span class="NAME">SmartCardHSM.buildSKDforAES</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>909</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>910</span> </span><span class="WHIT">		</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>911</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>912</span> 
<span class='line'>913</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">skd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>914</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA8</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>915</span> </span><span class="WHIT">			</span><span class="COMM">// CommonObjectAttributes</span><span class="WHIT">
<span class='line'>916</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>917</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>918</span> </span><span class="WHIT">				</span><span class="COMM">//						new ASN1(ASN1.BIT_STRING, new ByteString("0780", HEX)),</span><span class="WHIT">
<span class='line'>919</span> </span><span class="WHIT">				</span><span class="COMM">//						new ASN1(ASN1.OCTET_STRING, new ByteString("01", HEX))</span><span class="WHIT">
<span class='line'>920</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>921</span> </span><span class="WHIT">			</span><span class="COMM">// ClassAttributes: CommonKeyAttributes</span><span class="WHIT">
<span class='line'>922</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>923</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>924</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"07C010"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>925</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>926</span> </span><span class="WHIT">			</span><span class="COMM">// SubClassAttribute: CommonSecretKeyAttributes</span><span class="WHIT">
<span class='line'>927</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>928</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>929</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>930</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>931</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>932</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA1</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>933</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>934</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>935</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>936</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>937</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>938</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>939</span> 
<span class='line'>940</span> </span><span class="WHIT">		</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>941</span> </span><span class="COMM">//	GPSystem.log(GPSystem.DEBUG, module.id, skd);</span><span class="WHIT">
<span class='line'>942</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">skd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>943</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>944</span> 
<span class='line'>945</span> 
<span class='line'>946</span> 
<span class='line'>947</span> </span><span class="COMM">/**
<span class='line'>948</span>  * Create a PKCS#15 certificate description
<span class='line'>949</span>  *
<span class='line'>950</span>  * @param {ByteString} commonObjectFlags default value is '0640'
<span class='line'>951</span>  * @param {String} label the key label
<span class='line'>952</span>  * @param {Key} pubKey the public key
<span class='line'>953</span>  * @param {ByteString} certFID the file identifier of the certificate
<span class='line'>954</span>  * @type ASN1
<span class='line'>955</span>  * @return the certificate description
<span class='line'>956</span>  */</span><span class="WHIT">
<span class='line'>957</span> </span><span class="NAME">SmartCardHSM.buildCertDescription</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">commonObjectFlags</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certFID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>958</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">commonObjectFlags</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>959</span> </span><span class="WHIT">		</span><span class="NAME">commonObjectFlags</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0x0640"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>960</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>961</span> 
<span class='line'>962</span> </span><span class="WHIT">	</span><span class="COMM">// generate subject key id</span><span class="WHIT">
<span class='line'>963</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">qx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pubKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>964</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">qx</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>965</span> </span><span class="WHIT">	  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">qx</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>966</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>967</span> </span><span class="WHIT">	  </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pubKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>968</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>969</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>970</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subjectKeyID</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">enc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>971</span> 
<span class='line'>972</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">desc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> 	</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>973</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">			</span><span class="COMM">// common object attributes</span><span class="WHIT">
<span class='line'>974</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>975</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">commonObjectFlags</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>976</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>977</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">			</span><span class="COMM">// common certificate attributes</span><span class="WHIT">
<span class='line'>978</span> </span><span class="WHIT">					  </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subjectKeyID</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>979</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>980</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA1</span><span class="PUNC">,</span><span class="WHIT">					</span><span class="COMM">// type attributes</span><span class="WHIT">
<span class='line'>981</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">			</span><span class="COMM">// x.509 certificate attributes</span><span class="WHIT">
<span class='line'>982</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">			</span><span class="COMM">// path</span><span class="WHIT">
<span class='line'>983</span> </span><span class="WHIT">							</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certFID</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>984</span> </span><span class="WHIT">						</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>985</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>986</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>987</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>988</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">desc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>989</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>990</span> 
<span class='line'>991</span> 
<span class='line'>992</span> 
<span class='line'>993</span> </span><span class="COMM">/**
<span class='line'>994</span>  * Create a PKCS#15 data object description
<span class='line'>995</span>  *
<span class='line'>996</span>  * @param {String} label the key label
<span class='line'>997</span>  * @param {ByteString} commonObjectFlags default value is '0640'
<span class='line'>998</span>  * @param {ByteString} fid the file identifier of the data object
<span class='line'>999</span>  * @param {String} applicationName the application name (Default "SmartCard-HSM")
<span class='line'>1000</span>  * @type ASN1
<span class='line'>1001</span>  * @return the Data Object Description
<span class='line'>1002</span>  */</span><span class="WHIT">
<span class='line'>1003</span> </span><span class="NAME">SmartCardHSM.buildDataObjectDescription</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">commonObjectFlags</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">applicationName</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1004</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">privateDO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fid.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.CONFIDENTIALDATAPREFIX</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1005</span> 
<span class='line'>1006</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">applicationName</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1007</span> </span><span class="WHIT">		</span><span class="NAME">applicationName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"SmartCard-HSM"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1008</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1009</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">commonObjectFlags</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1010</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">privateDO</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1011</span> </span><span class="WHIT">			</span><span class="NAME">commonObjectFlags</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0x06C0"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1012</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1013</span> </span><span class="WHIT">			</span><span class="NAME">commonObjectFlags</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0x0640"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1014</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1015</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1016</span> 
<span class='line'>1017</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">desc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> 	</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1018</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">			</span><span class="COMM">// common object attributes</span><span class="WHIT">
<span class='line'>1019</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1020</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">commonObjectFlags</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1021</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1022</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">			</span><span class="COMM">// common data object attributes</span><span class="WHIT">
<span class='line'>1023</span> </span><span class="WHIT">					  </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">applicationName</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1024</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1025</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0xA1</span><span class="PUNC">,</span><span class="WHIT">					</span><span class="COMM">// type attributes</span><span class="WHIT">
<span class='line'>1026</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">			</span><span class="COMM">// path</span><span class="WHIT">
<span class='line'>1027</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1028</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1029</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1030</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1031</span> 
<span class='line'>1032</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">privateDO</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1033</span> </span><span class="WHIT">		</span><span class="NAME">desc.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1034</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1035</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">desc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1036</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1037</span> 
<span class='line'>1038</span> 
<span class='line'>1039</span> 
<span class='line'>1040</span> </span><span class="COMM">/**
<span class='line'>1041</span>  * Create a PKCS#15 like KeyDomain description
<span class='line'>1042</span>  *
<span class='line'>1043</span>  * @param {String} label the key domain label
<span class='line'>1044</span>  * @type ASN1
<span class='line'>1045</span>  * @return the KeyDomain description
<span class='line'>1046</span>  */</span><span class="WHIT">
<span class='line'>1047</span> </span><span class="NAME">SmartCardHSM.buildKeyDomainDescription</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1048</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kdd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> 	</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1049</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1050</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1051</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1052</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1053</span> 
<span class='line'>1054</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">kdd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1055</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1056</span> 
<span class='line'>1057</span> 
<span class='line'>1058</span> 
<span class='line'>1059</span> </span><span class="COMM">/**
<span class='line'>1060</span>  * Dump C-Data of Generate Asymmetric Key Pair command
<span class='line'>1061</span>  *
<span class='line'>1062</span>  * @param {ByteString} keydata the content of C-Data
<span class='line'>1063</span>  */</span><span class="WHIT">
<span class='line'>1064</span> </span><span class="NAME">SmartCardHSM.dumpKeyData</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1065</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1066</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1067</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">a.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1068</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">a.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1069</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1070</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1071</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1072</span> 
<span class='line'>1073</span> 
<span class='line'>1074</span> 
<span class='line'>1075</span> </span><span class="COMM">/**
<span class='line'>1076</span>  * Generate an asymmetric key pair
<span class='line'>1077</span>  *
<span class='line'>1078</span>  * @param {Number} newkid key identifier for new key
<span class='line'>1079</span>  * @param {Number} signkid key identifier for signing the new public key
<span class='line'>1080</span>  * @param {ByteString} keydata the key data template
<span class='line'>1081</span>  * @type ByteString
<span class='line'>1082</span>  * @return the certificate signing request containing the new public key
<span class='line'>1083</span>  */</span><span class="WHIT">
<span class='line'>1084</span> </span><span class="NAME">SmartCardHSM.prototype.generateAsymmetricKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1085</span> 
<span class='line'>1086</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.limitedAPDUTransport</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// Use extended length</span><span class="WHIT">
<span class='line'>1087</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x46</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1088</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1089</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x46</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1090</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0xCE00</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1091</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1092</span> 
<span class='line'>1093</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1094</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1095</span> 
<span class='line'>1096</span> 
<span class='line'>1097</span> 
<span class='line'>1098</span> </span><span class="COMM">/**
<span class='line'>1099</span>  * Generate a symmetric key
<span class='line'>1100</span>  *
<span class='line'>1101</span>  * @param {Number} newkid key identifier for new key
<span class='line'>1102</span>  * @param {Number} algo key generation algorithm
<span class='line'>1103</span>  * @param {ByteString} keydata the key data template
<span class='line'>1104</span>  * @type ByteString
<span class='line'>1105</span>  * @return
<span class='line'>1106</span>  */</span><span class="WHIT">
<span class='line'>1107</span> </span><span class="NAME">SmartCardHSM.prototype.generateSymmetricKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1108</span> 
<span class='line'>1109</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x48</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newkid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keydata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1110</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1111</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1112</span> 
<span class='line'>1113</span> 
<span class='line'>1114</span> 
<span class='line'>1115</span> </span><span class="COMM">/**
<span class='line'>1116</span>  * Return true is SmartCard-HSM is initialized
<span class='line'>1117</span>  *
<span class='line'>1118</span>  * @type Boolean
<span class='line'>1119</span>  * @return true if initialized
<span class='line'>1120</span>  */</span><span class="WHIT">
<span class='line'>1121</span> </span><span class="NAME">SmartCardHSM.prototype.isInitialized</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1122</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queryUserPINStatus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1123</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6984</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// V1.2: Not initialized / V2.0: Transport PIN</span><span class="WHIT">
<span class='line'>1124</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.queryInitializationCodeStatus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1125</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1126</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1127</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1128</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1129</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1130</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1131</span> 
<span class='line'>1132</span> 
<span class='line'>1133</span> 
<span class='line'>1134</span> </span><span class="COMM">/**
<span class='line'>1135</span>  * Initialize device and clear all keys and files
<span class='line'>1136</span>  *
<span class='line'>1137</span>  * @param {ByteString} options two byte option mask
<span class='line'>1138</span>  * @param {ByteString} initialPIN initial user PIN value
<span class='line'>1139</span>  * @param {ByteString} initializationCode secret code for device initialization (set during first use)
<span class='line'>1140</span>  * @param {Number} retryCounterInitial retry counter for user PIN
<span class='line'>1141</span>  * @param {Number} keyshares number of device key encryption key shares (optional)
<span class='line'>1142</span>  */</span><span class="WHIT">
<span class='line'>1143</span> </span><span class="NAME">SmartCardHSM.prototype.initDevice</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initialPIN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializationCode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">retryCounterInitial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyshares</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1144</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1145</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">options</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1146</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initialPIN</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1147</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializationCode</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1148</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x91</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">retryCounterInitial</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1149</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1150</span> 
<span class='line'>1151</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyshares</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1152</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x92</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">keyshares</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1153</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1154</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x50</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">s.value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1155</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1156</span> 
<span class='line'>1157</span> 
<span class='line'>1158</span> 
<span class='line'>1159</span> </span><span class="COMM">/**
<span class='line'>1160</span>  * Determine free memory
<span class='line'>1161</span>  *
<span class='line'>1162</span>  * @type Number
<span class='line'>1163</span>  * @return the number of available bytes (this values is capped to 32767 on JCOP 2.4.1)
<span class='line'>1164</span>  */</span><span class="WHIT">
<span class='line'>1165</span> </span><span class="NAME">SmartCardHSM.prototype.getFreeMemory</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1166</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x50</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6700</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1167</span> 
<span class='line'>1168</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1169</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1170</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1171</span> 
<span class='line'>1172</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1173</span> </span><span class="WHIT">	</span><span class="NAME">this.major</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.byteAt</span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1174</span> </span><span class="WHIT">	</span><span class="NAME">this.minor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.byteAt</span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1175</span> </span><span class="WHIT">	</span><span class="NAME">this.platform</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rsp.byteAt</span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1176</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp.bytes</span><span class="PUNC">(</span><span class="NAME">rsp.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1177</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1178</span> 
<span class='line'>1179</span> 
<span class='line'>1180</span> 
<span class='line'>1181</span> </span><span class="COMM">/**
<span class='line'>1182</span>  * Check if the RESET RETRY COUNTER command is enabled
<span class='line'>1183</span>  *
<span class='line'>1184</span>  * @type Boolean
<span class='line'>1185</span>  * @return true if enable during initialization
<span class='line'>1186</span>  */</span><span class="WHIT">
<span class='line'>1187</span> </span><span class="NAME">SmartCardHSM.prototype.isResetRetryCounterEnabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1188</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1189</span> </span><span class="WHIT">		</span><span class="NAME">this.getFreeMemory</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1190</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1191</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1192</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1193</span> 
<span class='line'>1194</span> 
<span class='line'>1195</span> 
<span class='line'>1196</span> </span><span class="COMM">/**
<span class='line'>1197</span>  * Check if the RESET RETRY COUNTER command can reset the PIN
<span class='line'>1198</span>  *
<span class='line'>1199</span>  * @type Boolean
<span class='line'>1200</span>  * @return true if enable during initialization
<span class='line'>1201</span>  */</span><span class="WHIT">
<span class='line'>1202</span> </span><span class="NAME">SmartCardHSM.prototype.isPINResetEnabled</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1203</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1204</span> </span><span class="WHIT">		</span><span class="NAME">this.getFreeMemory</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1205</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1206</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1207</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1208</span> 
<span class='line'>1209</span> 
<span class='line'>1210</span> 
<span class='line'>1211</span> </span><span class="COMM">/**
<span class='line'>1212</span>  * Parse the key domain status returned from the device
<span class='line'>1213</span>  *
<span class='line'>1214</span>  * @param {ByteString} status the R-DATA from the MANAGE KEY DOMAIN command
<span class='line'>1215</span>  * @type object
<span class='line'>1216</span>  * @return the decoded status Info
<span class='line'>1217</span>  */</span><span class="WHIT">
<span class='line'>1218</span> </span><span class="NAME">SmartCardHSM.prototype.parseKeyDomainStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1219</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1220</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1221</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1222</span> 
<span class='line'>1223</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">statusObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1224</span> </span><span class="WHIT">		</span><span class="NAME">sw</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1225</span> </span><span class="WHIT">		</span><span class="NAME">shares</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1226</span> </span><span class="WHIT">		</span><span class="NAME">outstanding</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1227</span> </span><span class="WHIT">		</span><span class="NAME">kcv</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">status.bytes</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1228</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1229</span> 
<span class='line'>1230</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1231</span> </span><span class="WHIT">		</span><span class="NAME">statusObject.keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status.bytes</span><span class="PUNC">(</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1232</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1233</span> 
<span class='line'>1234</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">statusObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1235</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1236</span> 
<span class='line'>1237</span> 
<span class='line'>1238</span> 
<span class='line'>1239</span> </span><span class="COMM">/*
<span class='line'>1240</span>  * Create DKEK Key Domain
<span class='line'>1241</span>  *
<span class='line'>1242</span>  * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
<span class='line'>1243</span>  * @param {Number} shares the number of DKEK shares to import
<span class='line'>1244</span>  * @type Object
<span class='line'>1245</span>  * @return object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}
<span class='line'>1246</span>  */</span><span class="WHIT">
<span class='line'>1247</span> </span><span class="NAME">SmartCardHSM.prototype.createDKEKKeyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">shares</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1248</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1249</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomain must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1250</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1251</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">shares</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1252</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"shares must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1253</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1254</span> 
<span class='line'>1255</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1256</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"label must be a string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1257</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1258</span> 
<span class='line'>1259</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">shares</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1260</span> 
<span class='line'>1261</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.parseKeyDomainStatus</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1262</span> 
<span class='line'>1263</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1264</span> </span><span class="WHIT">		</span><span class="NAME">status.label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1265</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.KDDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1266</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1267</span> </span><span class="WHIT">			</span><span class="NAME">this.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1268</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1269</span> 
<span class='line'>1270</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kdd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildKeyDomainDescription</span><span class="PUNC">(</span><span class="NAME">status.label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1271</span> </span><span class="WHIT">		</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kdd.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1272</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1273</span> 
<span class='line'>1274</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1275</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1276</span> 
<span class='line'>1277</span> 
<span class='line'>1278</span> 
<span class='line'>1279</span> </span><span class="COMM">/**
<span class='line'>1280</span>  * Create XKEK Key Domain
<span class='line'>1281</span>  *
<span class='line'>1282</span>  * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
<span class='line'>1283</span>  * @param {ByteString} keyDomainMembership either a 64 byte signature (old format) or a encoded TLV object with tag 54 or 55
<span class='line'>1284</span>  * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}
<span class='line'>1285</span>  * @type Object
<span class='line'>1286</span>  */</span><span class="WHIT">
<span class='line'>1287</span> </span><span class="NAME">SmartCardHSM.prototype.createXKEKKeyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">groupSignerPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomainMembership</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1288</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1289</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomain must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1290</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1291</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1292</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomain must be between 0 and 255"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1293</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1294</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">groupSignerPublicKey</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1295</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"groupSignerPublicKey must be a CVC instance"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1296</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1297</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">keyDomainMembership</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1298</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomainMembership must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1299</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1300</span> 
<span class='line'>1301</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">groupSignerPublicKey.getOuterCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1302</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">groupSignerPublicKey.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1303</span> 
<span class='line'>1304</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1306</span> 
<span class='line'>1307</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1308</span> 
<span class='line'>1309</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyDomainMembership.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1310</span> </span><span class="WHIT">		</span><span class="NAME">keyDomainMembership</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x53</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomainMembership</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1311</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1312</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">groupSignerPublicKey.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.concat</span><span class="PUNC">(</span><span class="NAME">keyDomainMembership</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1313</span> 
<span class='line'>1314</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cdata.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1315</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1316</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1317</span> </span><span class="WHIT">		</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x2F10</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1318</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1319</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1320</span> 
<span class='line'>1321</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.parseKeyDomainStatus</span><span class="PUNC">(</span><span class="NAME">rsp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1322</span> 
<span class='line'>1323</span> </span><span class="WHIT">	</span><span class="NAME">status.label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">chr.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1324</span> 
<span class='line'>1325</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.KDDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1326</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1327</span> </span><span class="WHIT">		</span><span class="NAME">this.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1328</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1329</span> 
<span class='line'>1330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kdd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildKeyDomainDescription</span><span class="PUNC">(</span><span class="NAME">status.label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1331</span> </span><span class="WHIT">	</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kdd.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1332</span> 
<span class='line'>1333</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1334</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1335</span> 
<span class='line'>1336</span> 
<span class='line'>1337</span> 
<span class='line'>1338</span> </span><span class="COMM">/**
<span class='line'>1339</span>  * Associate XKEK Key Domain
<span class='line'>1340</span>  *
<span class='line'>1341</span>  * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
<span class='line'>1342</span>  * @param {ByteString} keyDomainUID a encoded TLV object with tag 51 containing the key domain uid of the associated domain
<span class='line'>1343</span>  * @param {ByteString} keyDomainAssociation a encoded TLV object with tag 56 or 57
<span class='line'>1344</span>  * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}
<span class='line'>1345</span>  * @type Object
<span class='line'>1346</span>  */</span><span class="WHIT">
<span class='line'>1347</span> </span><span class="NAME">SmartCardHSM.prototype.associateXKEKKeyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">groupSignerPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomainUID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomainAssociation</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1348</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1349</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomain must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1350</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1351</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1352</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomain must be between 0 and 255"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1353</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1354</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">groupSignerPublicKey</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1355</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"groupSignerPublicKey must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1356</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1357</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">keyDomainUID</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1358</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomainUID must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1359</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1360</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">keyDomainAssociation</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1361</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomainAssociation must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1362</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1363</span> 
<span class='line'>1364</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">groupSignerPublicKey.getOuterCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1365</span> 
<span class='line'>1366</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1367</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1368</span> 
<span class='line'>1369</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1370</span> 
<span class='line'>1371</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">groupSignerPublicKey.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.concat</span><span class="PUNC">(</span><span class="NAME">keyDomainUID</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">keyDomainAssociation</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1372</span> 
<span class='line'>1373</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cdata.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1374</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x05</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1375</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1376</span> </span><span class="WHIT">		</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x2F10</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1377</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x05</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1378</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1379</span> 
<span class='line'>1380</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.parseKeyDomainStatus</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1381</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1382</span> 
<span class='line'>1383</span> 
<span class='line'>1384</span> 
<span class='line'>1385</span> </span><span class="COMM">/**
<span class='line'>1386</span>  * Derive XKEK
<span class='line'>1387</span>  *
<span class='line'>1388</span>  * @param {Number} keyDomain number of key domain in the range 0 to the maximum defined in the INITIALIZE DEVICE command
<span class='line'>1389</span>  * @param {ByteString} derivationParam
<span class='line'>1390</span>  * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and the key domain UID{ByteString}
<span class='line'>1391</span>  * @type Object
<span class='line'>1392</span>  */</span><span class="WHIT">
<span class='line'>1393</span> </span><span class="NAME">SmartCardHSM.prototype.deriveXKEK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">peerPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">derivationParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1394</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1395</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyid must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1396</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1397</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1398</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyid must be between 1 and 255"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1399</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1400</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">peerPublicKey</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">CVC</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1401</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"peerPublicKey must be a CVC"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1402</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1403</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">derivationParam</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1404</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"derivationParam must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1405</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1406</span> 
<span class='line'>1407</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">peerPublicKey.getOuterCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1408</span> 
<span class='line'>1409</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1410</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1411</span> 
<span class='line'>1412</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1413</span> 
<span class='line'>1414</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kdp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x50</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">derivationParam</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1415</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">peerPublicKey.getASN1</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.concat</span><span class="PUNC">(</span><span class="NAME">kdp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1416</span> 
<span class='line'>1417</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cdata.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1418</span> </span><span class="WHIT">		</span><span class="COMM">// Le is usually not required, but versions 3.1 to 3.3 fail without Le (#178)</span><span class="WHIT">
<span class='line'>1419</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x62</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1420</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1421</span> </span><span class="WHIT">		</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x2F10</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cdata</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1422</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x62</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1423</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1424</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1425</span> 
<span class='line'>1426</span> 
<span class='line'>1427</span> 
<span class='line'>1428</span> </span><span class="COMM">/**
<span class='line'>1429</span>  * Query the status of the key domain
<span class='line'>1430</span>  *
<span class='line'>1431</span>  * @param {Number} keyDomain the number of the key domain which will be queried, default is 0
<span class='line'>1432</span>  * @type Object
<span class='line'>1433</span>  * @return object with properties sw{Number}, shares{Number}, outstanding{Number}, kcv{ByteString} and for a XKEK key domain the key domain UID{ByteString}
<span class='line'>1434</span>  */</span><span class="WHIT">
<span class='line'>1435</span> </span><span class="NAME">SmartCardHSM.prototype.queryKeyDomainStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1436</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1437</span> </span><span class="WHIT">		</span><span class="NAME">keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1438</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1439</span> 
<span class='line'>1440</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1441</span> 
<span class='line'>1442</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.parseKeyDomainStatus</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1443</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1444</span> 
<span class='line'>1445</span> 
<span class='line'>1446</span> 
<span class='line'>1447</span> </span><span class="COMM">/**
<span class='line'>1448</span>  * Delete the key encryption key in a key domain
<span class='line'>1449</span>  *
<span class='line'>1450</span>  * @param {Number} keyDomain the number of the key domain
<span class='line'>1451</span>  */</span><span class="WHIT">
<span class='line'>1452</span> </span><span class="NAME">SmartCardHSM.prototype.deleteKEK</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1453</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1454</span> 
<span class='line'>1455</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.parseKeyDomainStatus</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1456</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1457</span> 
<span class='line'>1458</span> 
<span class='line'>1459</span> 
<span class='line'>1460</span> </span><span class="COMM">/**
<span class='line'>1461</span>  * Delete the empty key domain
<span class='line'>1462</span>  *
<span class='line'>1463</span>  * @param {Number} keyDomain the number of the key domain
<span class='line'>1464</span>  */</span><span class="WHIT">
<span class='line'>1465</span> </span><span class="NAME">SmartCardHSM.prototype.deleteKeyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1466</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x03</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1467</span> 
<span class='line'>1468</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.KDDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1469</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1470</span> </span><span class="WHIT">		</span><span class="NAME">this.deleteFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1471</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1472</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1473</span> 
<span class='line'>1474</span> 
<span class='line'>1475</span> 
<span class='line'>1476</span> </span><span class="COMM">/**
<span class='line'>1477</span>  * Return the label associated with the key domain or undefined.
<span class='line'>1478</span>  *
<span class='line'>1479</span>  * @param {Number} keyDomain the number of the key domain
<span class='line'>1480</span>  */</span><span class="WHIT">
<span class='line'>1481</span> </span><span class="NAME">SmartCardHSM.prototype.getKeyDomainLabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1482</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.KDDPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1483</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1484</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1485</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">bin.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x30</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1486</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1487</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1488</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1489</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toString</span><span class="PUNC">(</span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1490</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1491</span> </span><span class="WHIT">		</span><span class="COMM">// Return undefined if no description is set</span><span class="WHIT">
<span class='line'>1492</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1493</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1494</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1495</span> 
<span class='line'>1496</span> 
<span class='line'>1497</span> 
<span class='line'>1498</span> </span><span class="COMM">/**
<span class='line'>1499</span>  * Import DKEK share or query status
<span class='line'>1500</span>  *
<span class='line'>1501</span>  * @param {Number} keyDomain the number of the key domain
<span class='line'>1502</span>  * @param {ByteString} keyshare 32 byte key share
<span class='line'>1503</span>  * @type Object
<span class='line'>1504</span>  * @return object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}
<span class='line'>1505</span>  */</span><span class="WHIT">
<span class='line'>1506</span> </span><span class="NAME">SmartCardHSM.prototype.importKeyShare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyshare</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1507</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1508</span> </span><span class="WHIT">		</span><span class="NAME">keyshare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1509</span> </span><span class="WHIT">		</span><span class="NAME">keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1510</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1511</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyshare</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1512</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyshare</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1513</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1514</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">status</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x52</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1515</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1516</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1517</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">sw</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1518</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1519</span> 
<span class='line'>1520</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">statusObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1521</span> </span><span class="WHIT">		</span><span class="NAME">sw</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1522</span> </span><span class="WHIT">		</span><span class="NAME">shares</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1523</span> </span><span class="WHIT">		</span><span class="NAME">outstanding</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">status.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1524</span> </span><span class="WHIT">		</span><span class="NAME">kcv</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">status.bytes</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>1525</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1526</span> 
<span class='line'>1527</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">status.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1528</span> </span><span class="WHIT">		</span><span class="NAME">statusObject.keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">status.bytes</span><span class="PUNC">(</span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1529</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1530</span> 
<span class='line'>1531</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">statusObject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1532</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1533</span> 
<span class='line'>1534</span> 
<span class='line'>1535</span> 
<span class='line'>1536</span> </span><span class="COMM">/**
<span class='line'>1537</span>  * Decrypt and import a DKEK share
<span class='line'>1538</span>  *
<span class='line'>1539</span>  * @param {ByteString} keyshare the encrypted key share as read from the .pbe file
<span class='line'>1540</span>  * @param {ByteString} password the password
<span class='line'>1541</span>  * @param {Number} keyDomain the number of the key domain
<span class='line'>1542</span>  * @return object with properties sw{Number}, shares{Number}, outstanding{Number} and kcv{ByteString}
<span class='line'>1543</span>  */</span><span class="WHIT">
<span class='line'>1544</span> </span><span class="NAME">SmartCardHSM.prototype.importEncryptedKeyShare</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyshare</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1545</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1546</span> </span><span class="WHIT">		</span><span class="NAME">keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1547</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1548</span> 
<span class='line'>1549</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dkek</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DKEK.decryptKeyShare</span><span class="PUNC">(</span><span class="NAME">keyshare</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">password</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1550</span> </span><span class="COMM">//	print("Importing into SmartCard-HSM");</span><span class="WHIT">
<span class='line'>1551</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.importKeyShare</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dkek</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1552</span> </span><span class="WHIT">	</span><span class="NAME">dkek.clear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1553</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1554</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1555</span> 
<span class='line'>1556</span> 
<span class='line'>1557</span> 
<span class='line'>1558</span> </span><span class="COMM">/**
<span class='line'>1559</span>  * Wrap key under DKEK
<span class='line'>1560</span>  *
<span class='line'>1561</span>  * @param {Number} id key id
<span class='line'>1562</span>  * @type ByteString
<span class='line'>1563</span>  * @return key blob with encrypted key value
<span class='line'>1564</span>  */</span><span class="WHIT">
<span class='line'>1565</span> </span><span class="NAME">SmartCardHSM.prototype.wrapKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1566</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x72</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x92</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1567</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1568</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1569</span> 
<span class='line'>1570</span> 
<span class='line'>1571</span> 
<span class='line'>1572</span> </span><span class="COMM">/**
<span class='line'>1573</span>  * Unwrap key with DKEK
<span class='line'>1574</span>  *
<span class='line'>1575</span>  * @param {Number} id key id
<span class='line'>1576</span>  * @param {ByteString} keyblob the wrapped key
<span class='line'>1577</span>  */</span><span class="WHIT">
<span class='line'>1578</span> </span><span class="NAME">SmartCardHSM.prototype.unwrapKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1579</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyblob.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1580</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x74</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x93</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1581</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1582</span> </span><span class="WHIT">		</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x2F10</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1583</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x74</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x93</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1584</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1585</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1586</span> 
<span class='line'>1587</span> 
<span class='line'>1588</span> 
<span class='line'>1589</span> </span><span class="COMM">/**
<span class='line'>1590</span>  * Replace symmetric key value encrypted under current key
<span class='line'>1591</span>  *
<span class='line'>1592</span>  * @param {Number} id key id
<span class='line'>1593</span>  * @param {ByteString} keyblob the wrapped key
<span class='line'>1594</span>  */</span><span class="WHIT">
<span class='line'>1595</span> </span><span class="NAME">SmartCardHSM.prototype.unwrapAndReplaceKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1596</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x74</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x94</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1597</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1598</span> 
<span class='line'>1599</span> 
<span class='line'>1600</span> 
<span class='line'>1601</span> </span><span class="COMM">/**
<span class='line'>1602</span>  * Derive Symmetric Key
<span class='line'>1603</span>  *
<span class='line'>1604</span>  * @param {Number} id key id
<span class='line'>1605</span>  * @param {Number} algo algorithm id (one of ALG_CBC_ENC, ALG_CBC_DEC, ALG_CMAC or ALG_DERIVE_SP800_56C)
<span class='line'>1606</span>  * @param {ByteString} derivationParam the derivation parameter
<span class='line'>1607</span>  * @type ByteString
<span class='line'>1608</span>  * @return derived key value
<span class='line'>1609</span>  */</span><span class="WHIT">
<span class='line'>1610</span> </span><span class="NAME">SmartCardHSM.prototype.deriveSymmetricKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">derivationParam</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1611</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">derivedKeyValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x78</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">derivationParam</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1612</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">derivedKeyValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1613</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1614</span> 
<span class='line'>1615</span> 
<span class='line'>1616</span> 
<span class='line'>1617</span> </span><span class="COMM">/**
<span class='line'>1618</span>  * Verify User PIN
<span class='line'>1619</span>  *
<span class='line'>1620</span>  * @param {ByteString} userPIN user PIN value
<span class='line'>1621</span>  * @return the status word SW1/SW2 returned by the device
<span class='line'>1622</span>  */</span><span class="WHIT">
<span class='line'>1623</span> </span><span class="NAME">SmartCardHSM.prototype.verifyUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">userPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1624</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">userPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1625</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">userPIN</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1626</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1627</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1628</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getNativeCardService</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1629</span> </span><span class="WHIT">		</span><span class="NAME">cs.verifyPassword</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1630</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.queryUserPINStatus</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1631</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1632</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1633</span> 
<span class='line'>1634</span> 
<span class='line'>1635</span> 
<span class='line'>1636</span> </span><span class="COMM">/**
<span class='line'>1637</span>  * Logout
<span class='line'>1638</span>  *
<span class='line'>1639</span>  */</span><span class="WHIT">
<span class='line'>1640</span> </span><span class="NAME">SmartCardHSM.prototype.logout</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1641</span> </span><span class="WHIT">	</span><span class="NAME">this.card.clearCredential</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1642</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendApdu</span><span class="PUNC">(</span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA4</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x04</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"E82B0601040181C31F0201"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1643</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1644</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.find</span><span class="PUNC">(</span><span class="NUMB">0x85</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1645</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.bytes</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1646</span> </span><span class="WHIT">	</span><span class="NAME">this.major</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.byteAt</span><span class="PUNC">(</span><span class="NAME">v.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1647</span> </span><span class="WHIT">	</span><span class="NAME">this.minor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.byteAt</span><span class="PUNC">(</span><span class="NAME">v.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1648</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">v.length</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1649</span> </span><span class="WHIT">		</span><span class="NAME">this.platform</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">v.byteAt</span><span class="PUNC">(</span><span class="NAME">v.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1650</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1651</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1652</span> 
<span class='line'>1653</span> 
<span class='line'>1654</span> 
<span class='line'>1655</span> </span><span class="COMM">/**
<span class='line'>1656</span>  * Change User PIN
<span class='line'>1657</span>  *
<span class='line'>1658</span>  * @param {ByteString} currentPIN current user PIN value
<span class='line'>1659</span>  * @param {ByteString} newPIN new user PIN value
<span class='line'>1660</span>  */</span><span class="WHIT">
<span class='line'>1661</span> </span><span class="NAME">SmartCardHSM.prototype.changeUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">currentPIN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1662</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x24</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">currentPIN.concat</span><span class="PUNC">(</span><span class="NAME">newPIN</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1663</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1664</span> 
<span class='line'>1665</span> 
<span class='line'>1666</span> 
<span class='line'>1667</span> </span><span class="COMM">/**
<span class='line'>1668</span>  * Unblock and set User PIN
<span class='line'>1669</span>  *
<span class='line'>1670</span>  * @param {ByteString} initializationCode the initialization code
<span class='line'>1671</span>  * @param {ByteString} newPIN new user PIN value (optional)
<span class='line'>1672</span>  */</span><span class="WHIT">
<span class='line'>1673</span> </span><span class="NAME">SmartCardHSM.prototype.unblockUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">initializationCode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1674</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1675</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x2C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializationCode.concat</span><span class="PUNC">(</span><span class="NAME">newPIN</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1676</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1677</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x2C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x01</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializationCode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1678</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1679</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1680</span> 
<span class='line'>1681</span> 
<span class='line'>1682</span> 
<span class='line'>1683</span> </span><span class="COMM">/**
<span class='line'>1684</span>  * Change InitializationCode
<span class='line'>1685</span>  *
<span class='line'>1686</span>  * @param {ByteString} initializationCode current initialization code
<span class='line'>1687</span>  * @param {ByteString} newInitializationCode new initialization code
<span class='line'>1688</span>  */</span><span class="WHIT">
<span class='line'>1689</span> </span><span class="NAME">SmartCardHSM.prototype.changeInitializationCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">initializationCode</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">newInitializationCode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1690</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x24</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x88</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">initializationCode.concat</span><span class="PUNC">(</span><span class="NAME">newInitializationCode</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1691</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1692</span> 
<span class='line'>1693</span> 
<span class='line'>1694</span> 
<span class='line'>1695</span> </span><span class="NAME">SmartCardHSM.describePINStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">sw</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1696</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1697</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">sw</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1698</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>1699</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" authenticated"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1700</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1701</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x6984</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>1702</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" in transport mode or device not initialized"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1703</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1704</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>1705</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not initialized"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1706</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1707</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x6983</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>1708</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" blocked"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1709</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1710</span> </span><span class="WHIT">	</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x6300</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>1711</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not authenticated"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1712</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1713</span> </span><span class="WHIT">	</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>1714</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not verified, "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">sw</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" tries remaining"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1715</span> </span><span class="WHIT">		</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1716</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1717</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">sw</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1718</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1719</span> 
<span class='line'>1720</span> 
<span class='line'>1721</span> 
<span class='line'>1722</span> </span><span class="COMM">/**
<span class='line'>1723</span>  * Request PIN Status Information
<span class='line'>1724</span>  *
<span class='line'>1725</span>  * @param {Number} p2 the PIN object id
<span class='line'>1726</span>  * @type Number
<span class='line'>1727</span>  * @return the status word SW1/SW2 returned by the device
<span class='line'>1728</span>  */</span><span class="WHIT">
<span class='line'>1729</span> </span><span class="NAME">SmartCardHSM.prototype.queryPINStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">p2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1730</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1731</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.card.SW</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1732</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1733</span> 
<span class='line'>1734</span> 
<span class='line'>1735</span> 
<span class='line'>1736</span> </span><span class="COMM">/**
<span class='line'>1737</span>  * Request PIN Status Information
<span class='line'>1738</span>  *
<span class='line'>1739</span>  * @type Number
<span class='line'>1740</span>  * @return the status word SW1/SW2 returned by the device
<span class='line'>1741</span>  */</span><span class="WHIT">
<span class='line'>1742</span> </span><span class="NAME">SmartCardHSM.prototype.queryUserPINStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1743</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.queryPINStatus</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1744</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1745</span> 
<span class='line'>1746</span> 
<span class='line'>1747</span> 
<span class='line'>1748</span> </span><span class="COMM">/**
<span class='line'>1749</span>  * Request Initialization Code Status
<span class='line'>1750</span>  *
<span class='line'>1751</span>  * @type Number
<span class='line'>1752</span>  * @return the status word SW1/SW2 returned by the device
<span class='line'>1753</span>  */</span><span class="WHIT">
<span class='line'>1754</span> </span><span class="NAME">SmartCardHSM.prototype.queryInitializationCodeStatus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1755</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.queryPINStatus</span><span class="PUNC">(</span><span class="NUMB">0x88</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1756</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1757</span> 
<span class='line'>1758</span> 
<span class='line'>1759</span> 
<span class='line'>1760</span> </span><span class="COMM">/**
<span class='line'>1761</span>  * Enumerate Objects
<span class='line'>1762</span>  *
<span class='line'>1763</span>  * @return the enumeration
<span class='line'>1764</span>  */</span><span class="WHIT">
<span class='line'>1765</span> </span><span class="NAME">SmartCardHSM.prototype.enumerateObjects</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1766</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x58</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">65536</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1767</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1768</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1769</span> 
<span class='line'>1770</span> 
<span class='line'>1771</span> 
<span class='line'>1772</span> </span><span class="COMM">/**
<span class='line'>1773</span>  * Generate random data
<span class='line'>1774</span>  *
<span class='line'>1775</span>  * @param {Number} length number of bytes
<span class='line'>1776</span>  * @return the random bytes
<span class='line'>1777</span>  */</span><span class="WHIT">
<span class='line'>1778</span> </span><span class="NAME">SmartCardHSM.prototype.generateRandom</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1779</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">length</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1780</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1781</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1782</span> 
<span class='line'>1783</span> 
<span class='line'>1784</span> 
<span class='line'>1785</span> </span><span class="COMM">/**
<span class='line'>1786</span>  * Sign data using referenced key
<span class='line'>1787</span>  *
<span class='line'>1788</span>  * @param {Number} keyid the key identifier for signing
<span class='line'>1789</span>  * @param {algo} algo the algorithm identifier
<span class='line'>1790</span>  * @param {ByteString} data the data to be signed
<span class='line'>1791</span>  * @return the signature value
<span class='line'>1792</span>  */</span><span class="WHIT">
<span class='line'>1793</span> </span><span class="NAME">SmartCardHSM.prototype.sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1794</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">data.length</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NAME">this.maxCData</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1795</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x68</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x10000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1796</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1797</span> </span><span class="WHIT">		</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">0x2F10</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1798</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x68</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x10000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1799</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1800</span> 
<span class='line'>1801</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1802</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1803</span> 
<span class='line'>1804</span> 
<span class='line'>1805</span> 
<span class='line'>1806</span> </span><span class="COMM">/**
<span class='line'>1807</span>  * Decipher cryptogram or agree shared secret using Diffie-Hellman
<span class='line'>1808</span>  *
<span class='line'>1809</span>  * @param {Number} keyid the key identifier
<span class='line'>1810</span>  * @param {Number} algo the algorithm identifier
<span class='line'>1811</span>  * @param {ByteString} data the the cryptogram or concatenation of x || y of ECC public key
<span class='line'>1812</span>  * @return the plain output
<span class='line'>1813</span>  */</span><span class="WHIT">
<span class='line'>1814</span> </span><span class="NAME">SmartCardHSM.prototype.decipher</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1815</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x62</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1816</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rsp</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1817</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1818</span> 
<span class='line'>1819</span> 
<span class='line'>1820</span> 
<span class='line'>1821</span> </span><span class="COMM">/**
<span class='line'>1822</span>  * Verify card verifiable certificate
<span class='line'>1823</span>  *
<span class='line'>1824</span>  * @param {CVC} cvc the card verifiable certificate
<span class='line'>1825</span>  **/</span><span class="WHIT">
<span class='line'>1826</span> </span><span class="NAME">SmartCardHSM.prototype.verifyCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cvc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1827</span> 
<span class='line'>1828</span> </span><span class="WHIT">	</span><span class="COMM">// Check if public key is already known</span><span class="WHIT">
<span class='line'>1829</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCHR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1830</span> 
<span class='line'>1831</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">chr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1832</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1833</span> 
<span class='line'>1834</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A88</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1835</span> 
<span class='line'>1836</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x9000</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1837</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1838</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1839</span> 
<span class='line'>1840</span> </span><span class="WHIT">	</span><span class="COMM">// Select public key for verification</span><span class="WHIT">
<span class='line'>1841</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">car</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cvc.getCAR</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1842</span> 
<span class='line'>1843</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukrefdo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">car</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1844</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pukrefdo.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1845</span> 
<span class='line'>1846</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x22</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xB6</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pukref</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1847</span> 
<span class='line'>1848</span> </span><span class="WHIT">	</span><span class="COMM">// Extract value of 7F21</span><span class="WHIT">
<span class='line'>1849</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">TLVList</span><span class="PUNC">(</span><span class="NAME">cvc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">TLV.EMV</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1850</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tl.index</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1851</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">t.getValue</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1852</span> 
<span class='line'>1853</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x2A</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xBE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1854</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1855</span> 
<span class='line'>1856</span> 
<span class='line'>1857</span> 
<span class='line'>1858</span> </span><span class="COMM">/**
<span class='line'>1859</span>  * Enumerate CA certificates
<span class='line'>1860</span>  *
<span class='line'>1861</span>  * @type String[]
<span class='line'>1862</span>  * @return the list of certificate labels
<span class='line'>1863</span>  */</span><span class="WHIT">
<span class='line'>1864</span> </span><span class="NAME">SmartCardHSM.prototype.enumerateCACertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1865</span> </span><span class="WHIT">	</span><span class="NAME">this.canamemap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1866</span> </span><span class="WHIT">	</span><span class="NAME">this.caidmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="WHIT">
<span class='line'>1867</span> </span><span class="WHIT">	</span><span class="NAME">this.caids</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1868</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1869</span> 
<span class='line'>1870</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.enumerateObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1871</span> 
<span class='line'>1872</span> </span><span class="WHIT">	</span><span class="COMM">// Process PKCS#15 certificate descriptions</span><span class="WHIT">
<span class='line'>1873</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">fobs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1874</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.CERTDPREFIX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1875</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1876</span> </span><span class="WHIT">			</span><span class="NAME">this.caids.push</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1877</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.CACERTIFICATEPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1878</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">descbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">fobs.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1879</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">asn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">descbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1880</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">coa</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">asn.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1881</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">coa.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1882</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">coa.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1883</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1884</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"No label ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1885</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1886</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1887</span> </span><span class="WHIT">			</span><span class="NAME">certlist.push</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1888</span> </span><span class="WHIT">			</span><span class="NAME">this.canamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1889</span> </span><span class="WHIT">			</span><span class="NAME">cert.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1890</span> </span><span class="WHIT">			</span><span class="NAME">this.caidmap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1891</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1892</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1893</span> 
<span class='line'>1894</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1895</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1896</span> 
<span class='line'>1897</span> 
<span class='line'>1898</span> 
<span class='line'>1899</span> </span><span class="COMM">/**
<span class='line'>1900</span>  * Return CA certificate with label
<span class='line'>1901</span>  *
<span class='line'>1902</span>  * @param {String} label the certificate label
<span class='line'>1903</span>  * @type ByteString
<span class='line'>1904</span>  * @return the encoded certificate
<span class='line'>1905</span>  */</span><span class="WHIT">
<span class='line'>1906</span> </span><span class="NAME">SmartCardHSM.prototype.getCACertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1907</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.caids</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1908</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateCACertificates</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1909</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1910</span> 
<span class='line'>1911</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.canamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1912</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1913</span> 
<span class='line'>1914</span> 
<span class='line'>1915</span> 
<span class='line'>1916</span> </span><span class="COMM">/**
<span class='line'>1917</span>  * Determine an unused CA certificate identifier
<span class='line'>1918</span>  *
<span class='line'>1919</span>  * @type Number
<span class='line'>1920</span>  * @return a free CA certificate identifier or -1 if all identifier in use
<span class='line'>1921</span>  */</span><span class="WHIT">
<span class='line'>1922</span> </span><span class="NAME">SmartCardHSM.prototype.determineFreeCAId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1923</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.enumerateObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1924</span> 
<span class='line'>1925</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.determineFreeId</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.CACERTIFICATEPREFIX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1926</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1927</span> 
<span class='line'>1928</span> 
<span class='line'>1929</span> 
<span class='line'>1930</span> </span><span class="COMM">/**
<span class='line'>1931</span>  * Add a new CA certificate to the map
<span class='line'>1932</span>  *
<span class='line'>1933</span>  * @param {X509} cert the CA certificate
<span class='line'>1934</span>  * @param {Number} id the corresponding id
<span class='line'>1935</span>  * @param {String} label the corresponding label
<span class='line'>1936</span>  */</span><span class="WHIT">
<span class='line'>1937</span> </span><span class="NAME">SmartCardHSM.prototype.addCACertificateToMap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1938</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.caidmap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1939</span> </span><span class="WHIT">		</span><span class="COMM">// new id</span><span class="WHIT">
<span class='line'>1940</span> </span><span class="WHIT">		</span><span class="NAME">this.caids.push</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1941</span> </span><span class="WHIT">		</span><span class="NAME">this.caidmap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1942</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1943</span> </span><span class="WHIT">	</span><span class="NAME">this.canamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1944</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1945</span> 
<span class='line'>1946</span> 
<span class='line'>1947</span> 
<span class='line'>1948</span> </span><span class="COMM">/**
<span class='line'>1949</span>  * Enumerate key objects in the SmartCard-HSM and build the map of keys
<span class='line'>1950</span>  *
<span class='line'>1951</span>  * @type String[]
<span class='line'>1952</span>  * @return the list of key labels
<span class='line'>1953</span>  */</span><span class="WHIT">
<span class='line'>1954</span> </span><span class="NAME">SmartCardHSM.prototype.enumerateKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1955</span> </span><span class="WHIT">	</span><span class="NAME">this.namemap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1956</span> </span><span class="WHIT">	</span><span class="NAME">this.idmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1957</span> </span><span class="WHIT">	</span><span class="NAME">this.idlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1958</span> </span><span class="WHIT">	</span><span class="NAME">this.p15idmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1959</span> 
<span class='line'>1960</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.enumerateObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1961</span> 
<span class='line'>1962</span> </span><span class="WHIT">	</span><span class="COMM">// Process keys</span><span class="WHIT">
<span class='line'>1963</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">fobs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1964</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.KEYPREFIX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1965</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1966</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1967</span> </span><span class="COMM">//				GPSystem.log(GPSystem.DEBUG, module.id, "Found key: " + kid);</span><span class="WHIT">
<span class='line'>1968</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1969</span> </span><span class="WHIT">				</span><span class="NAME">this.idmap</span><span class="PUNC">[</span><span class="NAME">kid</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1970</span> </span><span class="WHIT">				</span><span class="NAME">this.idlist.push</span><span class="PUNC">(</span><span class="NAME">kid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1971</span> </span><span class="WHIT">				</span><span class="NAME">this.updateKey</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1972</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1973</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1974</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1975</span> 
<span class='line'>1976</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1977</span> </span><span class="WHIT">	</span><span class="COMM">// Process PKCS#15 private key descriptions</span><span class="WHIT">
<span class='line'>1978</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">fobs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1979</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.PRKDPREFIX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1980</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1981</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">descbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">fobs.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1982</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">descbin.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1983</span> </span><span class="WHIT">				</span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1984</span> </span><span class="WHIT">					</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">desc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">descbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1985</span> </span><span class="WHIT">					</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">desc.elements</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1986</span> </span><span class="WHIT">						</span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1987</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1988</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1989</span> </span><span class="WHIT">				</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1990</span> </span><span class="WHIT">					</span><span class="KEYW">continue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1991</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1992</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.idmap</span><span class="PUNC">[</span><span class="NAME">kid</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1993</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1994</span> </span><span class="WHIT">					</span><span class="NAME">key.setDescription</span><span class="PUNC">(</span><span class="NAME">desc</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1995</span> </span><span class="WHIT">					</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getLabel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1996</span> </span><span class="COMM">//					GPSystem.log(GPSystem.DEBUG, module.id, key.getId() + " - " + label);</span><span class="WHIT">
<span class='line'>1997</span> </span><span class="WHIT">					</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1998</span> </span><span class="WHIT">						</span><span class="NAME">keylist.push</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1999</span> </span><span class="WHIT">						</span><span class="NAME">this.namemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2000</span> </span><span class="WHIT">					</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2001</span> </span><span class="WHIT">					</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p15id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getPKCS15Id</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2002</span> </span><span class="WHIT">					</span><span class="NAME">this.p15idmap</span><span class="PUNC">[</span><span class="NAME">p15id.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2003</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2004</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2005</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2006</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2007</span> 
<span class='line'>2008</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2009</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2010</span> 
<span class='line'>2011</span> 
<span class='line'>2012</span> 
<span class='line'>2013</span> </span><span class="COMM">/**
<span class='line'>2014</span>  * Get key ids
<span class='line'>2015</span>  *
<span class='line'>2016</span>  * @type Number[]
<span class='line'>2017</span>  * @return a list of key identifier
<span class='line'>2018</span>  */</span><span class="WHIT">
<span class='line'>2019</span> </span><span class="NAME">SmartCardHSM.prototype.getKeyIds</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2020</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.idlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2021</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2022</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2023</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.idlist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2024</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2025</span> 
<span class='line'>2026</span> 
<span class='line'>2027</span> 
<span class='line'>2028</span> </span><span class="COMM">/**
<span class='line'>2029</span>  * Determine an unused key identifier
<span class='line'>2030</span>  *
<span class='line'>2031</span>  * @type Number
<span class='line'>2032</span>  * @return a free key identifier or -1 if all key identifier in use
<span class='line'>2033</span>  */</span><span class="WHIT">
<span class='line'>2034</span> </span><span class="NAME">SmartCardHSM.prototype.determineFreeKeyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2035</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.idlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2036</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2037</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2038</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">256</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2039</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.idmap</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2040</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2041</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2042</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2043</span> </span><span class="WHIT">	</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSM"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.OUT_OF_MEMORY</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Key idx exhausted"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2044</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2045</span> 
<span class='line'>2046</span> 
<span class='line'>2047</span> 
<span class='line'>2048</span> </span><span class="COMM">/**
<span class='line'>2049</span>  * Update key attributes, in particular the use counter
<span class='line'>2050</span>  *
<span class='line'>2051</span>  * @param {HSMKey} key the HSM key
<span class='line'>2052</span>  */</span><span class="WHIT">
<span class='line'>2053</span> </span><span class="NAME">SmartCardHSM.prototype.updateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2054</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.KEYPREFIX</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2055</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2056</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fcp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.selectFile</span><span class="PUNC">(</span><span class="NAME">fid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2057</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2058</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2059</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2060</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2061</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">fcp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2062</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.find</span><span class="PUNC">(</span><span class="NUMB">0xA5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2063</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">pi</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2064</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2065</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2066</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pi.find</span><span class="PUNC">(</span><span class="NUMB">0x90</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2067</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">kc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2068</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kc.value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2069</span> 
<span class='line'>2070</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0xFFFFFFFF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2071</span> </span><span class="WHIT">			</span><span class="NAME">key.useCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2072</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2073</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2074</span> 
<span class='line'>2075</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pi.find</span><span class="PUNC">(</span><span class="NUMB">0x91</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2076</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">kd</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2077</span> </span><span class="WHIT">		</span><span class="NAME">key.algorithms</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kd.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2078</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2079</span> 
<span class='line'>2080</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pi.find</span><span class="PUNC">(</span><span class="NUMB">0x92</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2081</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">kd</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2082</span> </span><span class="WHIT">		</span><span class="NAME">key.keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kd.value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2083</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2084</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2085</span> 
<span class='line'>2086</span> 
<span class='line'>2087</span> 
<span class='line'>2088</span> </span><span class="COMM">/**
<span class='line'>2089</span>  * Add a new key to the map of keys
<span class='line'>2090</span>  *
<span class='line'>2091</span>  * @param {HSMKey} key the HSM key
<span class='line'>2092</span>  */</span><span class="WHIT">
<span class='line'>2093</span> </span><span class="NAME">SmartCardHSM.prototype.addKeyToMap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2094</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getId</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2095</span> </span><span class="WHIT">	</span><span class="NAME">this.idmap</span><span class="PUNC">[</span><span class="NAME">id</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2096</span> 
<span class='line'>2097</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getLabel</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2098</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2099</span> </span><span class="WHIT">		</span><span class="NAME">this.namemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2100</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2101</span> 
<span class='line'>2102</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p15id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key.getPKCS15Id</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2103</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p15id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2104</span> </span><span class="WHIT">		</span><span class="NAME">this.p15idmap</span><span class="PUNC">[</span><span class="NAME">p15id.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2105</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2106</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2107</span> 
<span class='line'>2108</span> 
<span class='line'>2109</span> 
<span class='line'>2110</span> </span><span class="COMM">/**
<span class='line'>2111</span>  * Get a key reference object
<span class='line'>2112</span>  *
<span class='line'>2113</span>  * @param {String/Number/ByteString} labelOrId label or id of key
<span class='line'>2114</span>  * @returns the key or null if not found
<span class='line'>2115</span>  * @type Key
<span class='line'>2116</span>  */</span><span class="WHIT">
<span class='line'>2117</span> </span><span class="NAME">SmartCardHSM.prototype.getKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2118</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.idlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2119</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2120</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2121</span> 
<span class='line'>2122</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2123</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.idmap</span><span class="PUNC">[</span><span class="NAME">labelOrId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2124</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">labelOrId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2125</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.namemap</span><span class="PUNC">[</span><span class="NAME">labelOrId</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2126</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2127</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.p15idmap</span><span class="PUNC">[</span><span class="NAME">labelOrId.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2128</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2129</span> 
<span class='line'>2130</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2131</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2132</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2133</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2134</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2135</span> 
<span class='line'>2136</span> 
<span class='line'>2137</span> 
<span class='line'>2138</span> </span><span class="COMM">/**
<span class='line'>2139</span>  * Return a list of key objects
<span class='line'>2140</span>  *
<span class='line'>2141</span>  * @type SmartCardHSMKey[]
<span class='line'>2142</span>  * @return the list of keys
<span class='line'>2143</span>  */</span><span class="WHIT">
<span class='line'>2144</span> </span><span class="NAME">SmartCardHSM.prototype.getKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2145</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.idlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2146</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2147</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2148</span> 
<span class='line'>2149</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2150</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">this.idmap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2151</span> </span><span class="WHIT">		</span><span class="NAME">keylist.push</span><span class="PUNC">(</span><span class="NAME">this.idmap</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2152</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2153</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keylist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2154</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2155</span> 
<span class='line'>2156</span> 
<span class='line'>2157</span> 
<span class='line'>2158</span> </span><span class="COMM">/**
<span class='line'>2159</span>  * Determine a free id in the list of FID for the given prefix.
<span class='line'>2160</span>  *
<span class='line'>2161</span>  * @param {Number} the prefix to look at
<span class='line'>2162</span>  * @param {ByteString} the list of FID as returned from the device
<span class='line'>2163</span>  * @type Number
<span class='line'>2164</span>  * @return a free id for the given prefix or -1 if range is exhausted.
<span class='line'>2165</span>  */</span><span class="WHIT">
<span class='line'>2166</span> </span><span class="NAME">SmartCardHSM.determineFreeId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">prefix</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2167</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">map</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Bitmap</span><span class="PUNC">(</span><span class="NUMB">256</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2168</span> 
<span class='line'>2169</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">fobs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2170</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">prefix</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2171</span> </span><span class="WHIT">			</span><span class="NAME">map.toggle</span><span class="PUNC">(</span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2172</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2173</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2174</span> 
<span class='line'>2175</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">map.determineFirstUnset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2176</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2177</span> 
<span class='line'>2178</span> 
<span class='line'>2179</span> 
<span class='line'>2180</span> </span><span class="COMM">/**
<span class='line'>2181</span>  * Determine a free FID in the list of FID for the given prefix.
<span class='line'>2182</span>  *
<span class='line'>2183</span>  * @param {Number} the prefix to look at
<span class='line'>2184</span>  * @param {ByteString} the list of FID as returned from the device
<span class='line'>2185</span>  * @type ByteString
<span class='line'>2186</span>  * @return a free two byte file identifier (FID) for the given prefix or null if range is exhausted.
<span class='line'>2187</span>  */</span><span class="WHIT">
<span class='line'>2188</span> </span><span class="NAME">SmartCardHSM.determineFreeFid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">prefix</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2189</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.determineFreeId</span><span class="PUNC">(</span><span class="NAME">prefix</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2190</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2191</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2192</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2193</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">prefix</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2194</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2195</span> 
<span class='line'>2196</span> 
<span class='line'>2197</span> 
<span class='line'>2198</span> </span><span class="COMM">/**
<span class='line'>2199</span>  * Enumerate Data Objects
<span class='line'>2200</span>  *
<span class='line'>2201</span>  * @type String[]
<span class='line'>2202</span>  * @return the list of data object labels
<span class='line'>2203</span>  */</span><span class="WHIT">
<span class='line'>2204</span> </span><span class="NAME">SmartCardHSM.prototype.enumerateDataObjects</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2205</span> </span><span class="WHIT">	</span><span class="NAME">this.donamemap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2206</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dolist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2207</span> 
<span class='line'>2208</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.enumerateObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2209</span> 
<span class='line'>2210</span> </span><span class="WHIT">	</span><span class="COMM">// Process PKCS#15 data object descriptions</span><span class="WHIT">
<span class='line'>2211</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">fobs.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2212</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fobs.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.DODPREFIX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2213</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">descfid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fobs.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2214</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">descbin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">descfid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2215</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">asn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">descbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2216</span> </span><span class="COMM">//			print(asn);</span><span class="WHIT">
<span class='line'>2217</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">coa</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">asn.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2218</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">coa.elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2219</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">coa.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2220</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2221</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"No label ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2222</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2223</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">taga1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">asn.find</span><span class="PUNC">(</span><span class="NUMB">0xA1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2224</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">taga1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2225</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">taga1.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2226</span> </span><span class="WHIT">				</span><span class="NAME">this.donamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">descfid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">descfid</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2227</span> </span><span class="WHIT">				</span><span class="NAME">dolist.push</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2228</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2229</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2230</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2231</span> 
<span class='line'>2232</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">dolist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2233</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2234</span> 
<span class='line'>2235</span> 
<span class='line'>2236</span> 
<span class='line'>2237</span> </span><span class="COMM">/**
<span class='line'>2238</span>  * Check if the data object is present
<span class='line'>2239</span>  *
<span class='line'>2240</span>  * @param {String} label the label
<span class='line'>2241</span>  * @type boolean
<span class='line'>2242</span>  * @return true if the data object exists
<span class='line'>2243</span>  */</span><span class="WHIT">
<span class='line'>2244</span> </span><span class="NAME">SmartCardHSM.prototype.hasDataObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2245</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.donamemap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2246</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateDataObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2247</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2248</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.donamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2249</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2250</span> 
<span class='line'>2251</span> 
<span class='line'>2252</span> 
<span class='line'>2253</span> </span><span class="COMM">/**
<span class='line'>2254</span>  * Return the file identifier containing the data object.
<span class='line'>2255</span>  *
<span class='line'>2256</span>  * @param {String} label the label.
<span class='line'>2257</span>  * @type ByteString
<span class='line'>2258</span>  * @return the two byte file identifier
<span class='line'>2259</span>  */</span><span class="WHIT">
<span class='line'>2260</span> </span><span class="NAME">SmartCardHSM.prototype.getDataObjectFileIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2261</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.donamemap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2262</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateDataObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2263</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2264</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.donamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2265</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2266</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Data object "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2267</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2268</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">e.datafid</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2269</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2270</span> 
<span class='line'>2271</span> 
<span class='line'>2272</span> 
<span class='line'>2273</span> </span><span class="COMM">/**
<span class='line'>2274</span>  * Import a data object
<span class='line'>2275</span>  *
<span class='line'>2276</span>  * @param {String} label the unique label to reference the new data object
<span class='line'>2277</span>  * @param {Boolean} privObj true to store the data object with read protection
<span class='line'>2278</span>  * @param {ByteString} data the data blob to store
<span class='line'>2279</span>  */</span><span class="WHIT">
<span class='line'>2280</span> </span><span class="NAME">SmartCardHSM.prototype.importDataObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">privObj</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2281</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.enumerateObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2282</span> 
<span class='line'>2283</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.donamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2284</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2285</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Data object "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" does already exist"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2286</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2287</span> 
<span class='line'>2288</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">privObj</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2289</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.determineFreeFid</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.CONFIDENTIALDATAPREFIX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2290</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2291</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.determineFreeFid</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.PUBLICDATAPREFIX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2292</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2293</span> 
<span class='line'>2294</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">datafid</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2295</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Out of space for data objects"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2296</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2297</span> 
<span class='line'>2298</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">desc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.buildDataObjectDescription</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"KeyManager"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2299</span> 
<span class='line'>2300</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">descfid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.determineFreeFid</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.DODPREFIX</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">fobs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2301</span> 
<span class='line'>2302</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">descfid</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2303</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Out of space for data objects descriptor"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2304</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2305</span> 
<span class='line'>2306</span> </span><span class="WHIT">	</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">datafid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2307</span> </span><span class="WHIT">	</span><span class="NAME">this.updateBinary</span><span class="PUNC">(</span><span class="NAME">descfid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">desc.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2308</span> </span><span class="WHIT">	</span><span class="NAME">this.donamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">datafid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">descfid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">descfid</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2309</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2310</span> 
<span class='line'>2311</span> 
<span class='line'>2312</span> 
<span class='line'>2313</span> </span><span class="COMM">/**
<span class='line'>2314</span>  * Delete the data object references by the label.
<span class='line'>2315</span>  *
<span class='line'>2316</span>  * @param {String} label the label of the data object
<span class='line'>2317</span>  */</span><span class="WHIT">
<span class='line'>2318</span> </span><span class="NAME">SmartCardHSM.prototype.deleteDataObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2319</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.donamemap</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2320</span> </span><span class="WHIT">		</span><span class="NAME">this.enumerateDataObjects</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2321</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2322</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.donamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2323</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2324</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Data object "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2325</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2326</span> </span><span class="WHIT">	</span><span class="NAME">this.deleteFile</span><span class="PUNC">(</span><span class="NAME">e.descfid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2327</span> </span><span class="WHIT">	</span><span class="NAME">this.deleteFile</span><span class="PUNC">(</span><span class="NAME">e.datafid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2328</span> </span><span class="WHIT">	</span><span class="KEYW">delete</span><span class="WHIT"> </span><span class="NAME">this.donamemap</span><span class="PUNC">[</span><span class="NAME">label</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2329</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2330</span> 
<span class='line'>2331</span> 
<span class='line'>2332</span> 
<span class='line'>2333</span> </span><span class="COMM">/**
<span class='line'>2334</span>  * Get crypto object
<span class='line'>2335</span>  *
<span class='line'>2336</span>  * @type HSMCrypto
<span class='line'>2337</span>  * @return the HSMCrypto object
<span class='line'>2338</span>  */</span><span class="WHIT">
<span class='line'>2339</span> </span><span class="NAME">SmartCardHSM.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2340</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2341</span> </span><span class="WHIT">		</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMCrypto</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2342</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2343</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2344</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2345</span> 
<span class='line'>2346</span> 
<span class='line'>2347</span> 
<span class='line'>2348</span> </span><span class="COMM">/**
<span class='line'>2349</span>  * @private
<span class='line'>2350</span>  */</span><span class="WHIT">
<span class='line'>2351</span> </span><span class="NAME">SmartCardHSM.prototype.getTokenInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2352</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.tokenInfo</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2353</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.tokenInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2354</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2355</span> 
<span class='line'>2356</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.hasFile</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EF_TokenInfo</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2357</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2358</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2359</span> 
<span class='line'>2360</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EF_TokenInfo</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2361</span> </span><span class="WHIT">	</span><span class="NAME">this.tokenInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2362</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.tokenInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2363</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2364</span> 
<span class='line'>2365</span> 
<span class='line'>2366</span> 
<span class='line'>2367</span> </span><span class="COMM">/**
<span class='line'>2368</span>  * Get Token Label
<span class='line'>2369</span>  *
<span class='line'>2370</span>  * @type String
<span class='line'>2371</span>  * @return the token label from CIAInfo
<span class='line'>2372</span>  */</span><span class="WHIT">
<span class='line'>2373</span> </span><span class="NAME">SmartCardHSM.prototype.getLabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2374</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ti</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getTokenInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2375</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ti</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2376</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2377</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2378</span> 
<span class='line'>2379</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ti.find</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2380</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2381</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2382</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2383</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.value.toString</span><span class="PUNC">(</span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2384</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2385</span> 
<span class='line'>2386</span> 
<span class='line'>2387</span> 
<span class='line'>2388</span> </span><span class="COMM">/**
<span class='line'>2389</span>  * @private
<span class='line'>2390</span>  */</span><span class="WHIT">
<span class='line'>2391</span> </span><span class="NAME">SmartCardHSM.prototype.getStaticTokenInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2392</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.staticTokenInfo</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2393</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.staticTokenInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2394</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2395</span> 
<span class='line'>2396</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.hasFile</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EF_StaticTokenInfo</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2397</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2398</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2399</span> 
<span class='line'>2400</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.readBinary</span><span class="PUNC">(</span><span class="NAME">SmartCardHSM.EF_StaticTokenInfo</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2401</span> </span><span class="WHIT">	</span><span class="NAME">this.staticTokenInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">bin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2402</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.staticTokenInfo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2403</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2404</span> 
<span class='line'>2405</span> 
<span class='line'>2406</span> 
<span class='line'>2407</span> </span><span class="COMM">/**
<span class='line'>2408</span>  * Get ProvisioningURL
<span class='line'>2409</span>  *
<span class='line'>2410</span>  * @type String
<span class='line'>2411</span>  * @return the configured ProvisioningURL or undefined
<span class='line'>2412</span>  */</span><span class="WHIT">
<span class='line'>2413</span> </span><span class="NAME">SmartCardHSM.prototype.getProvisioningURL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2414</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ti</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getStaticTokenInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2415</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ti</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2416</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2417</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2418</span> 
<span class='line'>2419</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ti.find</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2420</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2421</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2422</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2423</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.value.toString</span><span class="PUNC">(</span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2424</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2425</span> 
<span class='line'>2426</span> 
<span class='line'>2427</span> 
<span class='line'>2428</span> </span><span class="COMM">/**
<span class='line'>2429</span>  * Get Key Check Value of Token Management Key
<span class='line'>2430</span>  *
<span class='line'>2431</span>  * @type ByteString
<span class='line'>2432</span>  * @return the configured KCV of the Token Management Key or undefined
<span class='line'>2433</span>  */</span><span class="WHIT">
<span class='line'>2434</span> </span><span class="NAME">SmartCardHSM.prototype.getTokenManagementKeyKCV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2435</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ti</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getStaticTokenInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2436</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ti</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2437</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2438</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2439</span> 
<span class='line'>2440</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ti.find</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2441</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2442</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2443</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2444</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2445</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2446</span> 
<span class='line'>2447</span> 
<span class='line'>2448</span> 
<span class='line'>2449</span> </span><span class="COMM">/**
<span class='line'>2450</span>  * Get salt for SO-PIN derivation using  the Token Management Key
<span class='line'>2451</span>  *
<span class='line'>2452</span>  * @type ByteString
<span class='line'>2453</span>  * @return the configured salt
<span class='line'>2454</span>  */</span><span class="WHIT">
<span class='line'>2455</span> </span><span class="NAME">SmartCardHSM.prototype.getTokenManagementKeySalt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2456</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ti</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getStaticTokenInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2457</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ti</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2458</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2459</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2460</span> 
<span class='line'>2461</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ti.find</span><span class="PUNC">(</span><span class="NUMB">0x82</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2462</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">a</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2463</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2464</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2465</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2466</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2467</span> 
<span class='line'>2468</span> 
<span class='line'>2469</span> 
<span class='line'>2470</span> </span><span class="COMM">/**
<span class='line'>2471</span>  * Create crypto object implementing access to the SmartCard-HSM
<span class='line'>2472</span>  *
<span class='line'>2473</span>  * @class Wrapper to provide Crypto interface to SmartCard-HSM
<span class='line'>2474</span>  * @constructor
<span class='line'>2475</span>  * @param {Crypto} crypto the backend crypto provider
<span class='line'>2476</span>  */</span><span class="WHIT">
<span class='line'>2477</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMCrypto</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2478</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2479</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2480</span> 
<span class='line'>2481</span> 
<span class='line'>2482</span> 
<span class='line'>2483</span> </span><span class="COMM">/**
<span class='line'>2484</span>  * Sign a message using the defined mechanism and key
<span class='line'>2485</span>  *
<span class='line'>2486</span>  * @param {HSMKey} key the private key
<span class='line'>2487</span>  * @param {Number} mech the mechanism (e.g. Crypto.ECDSA)
<span class='line'>2488</span>  * @param {ByteString} message the message to be signed
<span class='line'>2489</span>  * @type ByteString
<span class='line'>2490</span>  * @return the signature
<span class='line'>2491</span>  */</span><span class="WHIT">
<span class='line'>2492</span> </span><span class="NAME">SmartCardHSMCrypto.prototype.sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2493</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2494</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key.sign</span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2495</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2496</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2497</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2498</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2499</span> 
<span class='line'>2500</span> 
<span class='line'>2501</span> 
<span class='line'>2502</span> </span><span class="COMM">/**
<span class='line'>2503</span>  * Decrypt a message using the defined mechanism and key
<span class='line'>2504</span>  *
<span class='line'>2505</span>  * @param {HSMKey} key the private key
<span class='line'>2506</span>  * @param {Number} mech the mechanism (e.g. Crypto.RSA_PKCS1)
<span class='line'>2507</span>  * @param {ByteString} data the cryptogram
<span class='line'>2508</span>  * @param {ByteString} iv the initialization vector for symmetric ciphers
<span class='line'>2509</span>  * @type ByteString
<span class='line'>2510</span>  * @return the plain text
<span class='line'>2511</span>  */</span><span class="WHIT">
<span class='line'>2512</span> </span><span class="NAME">SmartCardHSMCrypto.prototype.decrypt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2513</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2514</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">key.decrypt</span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2515</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2516</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto.decrypt</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">iv</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2517</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2518</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2519</span> 
<span class='line'>2520</span> 
<span class='line'>2521</span> 
<span class='line'>2522</span> </span><span class="COMM">/**
<span class='line'>2523</span>  * Verify a message using the defined mechanism and key
<span class='line'>2524</span>  *
<span class='line'>2525</span>  * @param {Key} key the public key
<span class='line'>2526</span>  * @param {Number} mech the mechanism (e.g. Crypto.ECDSA)
<span class='line'>2527</span>  * @param {ByteString} message the message to be signed
<span class='line'>2528</span>  * @param {ByteString} signature the signature to verify
<span class='line'>2529</span>  * @type Boolean
<span class='line'>2530</span>  * @return true if signature is valid
<span class='line'>2531</span>  */</span><span class="WHIT">
<span class='line'>2532</span> </span><span class="NAME">SmartCardHSMCrypto.prototype.verify</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2533</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto.verify</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2534</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2535</span> 
<span class='line'>2536</span> 
<span class='line'>2537</span> 
<span class='line'>2538</span> </span><span class="COMM">/**
<span class='line'>2539</span>  * Create a key access object
<span class='line'>2540</span>  *
<span class='line'>2541</span>  * @class Class implementing key access
<span class='line'>2542</span>  * @param {SmartCardHSM} sc the card access object
<span class='line'>2543</span>  * @param {Number} id the key identifier
<span class='line'>2544</span>  */</span><span class="WHIT">
<span class='line'>2545</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">(</span><span class="NAME">sc</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2546</span> </span><span class="WHIT">	</span><span class="NAME">this.sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2547</span> </span><span class="WHIT">	</span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2548</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.useExternalHashInECDSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2549</span> </span><span class="WHIT">		</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2550</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2551</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2552</span> 
<span class='line'>2553</span> </span><span class="NAME">exports.SmartCardHSMKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2554</span> 
<span class='line'>2555</span> 
<span class='line'>2556</span> </span><span class="COMM">/**
<span class='line'>2557</span>  * Set the PKCS#15 private key description
<span class='line'>2558</span>  *
<span class='line'>2559</span>  * @param {ASN1} desc the description
<span class='line'>2560</span>  */</span><span class="WHIT">
<span class='line'>2561</span> </span><span class="NAME">SmartCardHSMKey.prototype.setDescription</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">desc</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2562</span> </span><span class="WHIT">	</span><span class="NAME">this.desc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">desc</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2563</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2564</span> 
<span class='line'>2565</span> 
<span class='line'>2566</span> 
<span class='line'>2567</span> </span><span class="COMM">/**
<span class='line'>2568</span>  * Return the key identifier
<span class='line'>2569</span>  *
<span class='line'>2570</span>  * @type Number
<span class='line'>2571</span>  * @return the key identifier
<span class='line'>2572</span>  */</span><span class="WHIT">
<span class='line'>2573</span> </span><span class="NAME">SmartCardHSMKey.prototype.getId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2574</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2575</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2576</span> 
<span class='line'>2577</span> 
<span class='line'>2578</span> 
<span class='line'>2579</span> </span><span class="COMM">/**
<span class='line'>2580</span>  * Return the key label as encoded in the PKCS#15 structure
<span class='line'>2581</span>  *
<span class='line'>2582</span>  * @type String
<span class='line'>2583</span>  * @return the key label
<span class='line'>2584</span>  */</span><span class="WHIT">
<span class='line'>2585</span> </span><span class="NAME">SmartCardHSMKey.prototype.getLabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2586</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2587</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2588</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2589</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">this.desc.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">elements</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.desc.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">0x0C</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2590</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2591</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2592</span> 
<span class='line'>2593</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.desc.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toString</span><span class="PUNC">(</span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2594</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2595</span> 
<span class='line'>2596</span> 
<span class='line'>2597</span> 
<span class='line'>2598</span> </span><span class="COMM">/**
<span class='line'>2599</span>  * Return the key id as encoded in the PKCS#15 structure
<span class='line'>2600</span>  *
<span class='line'>2601</span>  * @type ByteString
<span class='line'>2602</span>  * @return the key identifier
<span class='line'>2603</span>  */</span><span class="WHIT">
<span class='line'>2604</span> </span><span class="NAME">SmartCardHSMKey.prototype.getPKCS15Id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2605</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2606</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2607</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2608</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.desc.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2609</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2610</span> 
<span class='line'>2611</span> 
<span class='line'>2612</span> 
<span class='line'>2613</span> </span><span class="COMM">/**
<span class='line'>2614</span>  * Return the key size in bits
<span class='line'>2615</span>  *
<span class='line'>2616</span>  * @type Number
<span class='line'>2617</span>  * @return the key size in bits
<span class='line'>2618</span>  */</span><span class="WHIT">
<span class='line'>2619</span> </span><span class="NAME">SmartCardHSMKey.prototype.getSize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2620</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2621</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2622</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2623</span> </span><span class="COMM">//	GPSystem.log(GPSystem.DEBUG, module.id, this.desc);</span><span class="WHIT">
<span class='line'>2624</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">elements</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">	</span><span class="COMM">// Fix a bug from early versions</span><span class="WHIT">
<span class='line'>2625</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.desc.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2626</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2627</span> 
<span class='line'>2628</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2629</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.desc.get</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2630</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2631</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.desc.find</span><span class="PUNC">(</span><span class="NUMB">0xA1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2632</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a1.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2633</span> 
<span class='line'>2634</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">size</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">528</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2635</span> </span><span class="WHIT">			</span><span class="NAME">size</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">521</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Fix bug in OpenSCDP returning the wrong key size for secp521 keys</span><span class="WHIT">
<span class='line'>2636</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2637</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2638</span> 
<span class='line'>2639</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">size</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2640</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2641</span> 
<span class='line'>2642</span> 
<span class='line'>2643</span> 
<span class='line'>2644</span> </span><span class="COMM">/**
<span class='line'>2645</span>  * Return the key type
<span class='line'>2646</span>  *
<span class='line'>2647</span>  * @type String
<span class='line'>2648</span>  * @return the key type
<span class='line'>2649</span>  */</span><span class="WHIT">
<span class='line'>2650</span> </span><span class="NAME">SmartCardHSMKey.prototype.getType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2651</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2652</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2653</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2654</span> 
<span class='line'>2655</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2656</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"EC"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2657</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x30</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2658</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"RSA"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2659</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.desc.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2660</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"AES"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2661</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2662</span> 
<span class='line'>2663</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2664</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2665</span> 
<span class='line'>2666</span> 
<span class='line'>2667</span> 
<span class='line'>2668</span> </span><span class="COMM">/**
<span class='line'>2669</span>  * Sign data using a key in the SmartCard-HSM
<span class='line'>2670</span>  *
<span class='line'>2671</span>  * @param {Number} mech the signing mechanism
<span class='line'>2672</span>  * @param {ByteString} data to be signed
<span class='line'>2673</span>  * @type ByteString
<span class='line'>2674</span>  * @return the signature
<span class='line'>2675</span>  */</span><span class="WHIT">
<span class='line'>2676</span> </span><span class="NAME">SmartCardHSMKey.prototype.sign</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2677</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2678</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2679</span> </span><span class="WHIT">		</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2680</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2681</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2682</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2683</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2684</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x31</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2685</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2686</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA224</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2687</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x32</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2688</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2689</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2690</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x33</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2691</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2692</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA384</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2693</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x34</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2694</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2695</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2696</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x35</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2697</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2698</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PKCS1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2699</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.major</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.sc.major</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2700</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x30</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2701</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2702</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2703</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2704</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">keysize</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2705</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Can't determine key size"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2706</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2707</span> </span><span class="WHIT">				</span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS1.encode_EMSA_V15</span><span class="PUNC">(</span><span class="NAME">keysize</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2708</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2709</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2710</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2711</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2712</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x40</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2713</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2714</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2715</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x41</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2716</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2717</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA224</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2718</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2719</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2720</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2721</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x43</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2722</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2723</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA384</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2724</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x44</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2725</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2726</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2727</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x45</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2728</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2729</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2730</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x70</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2731</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2732</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2733</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.useExternalHashInECDSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2734</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x70</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2735</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2736</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2737</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x71</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2738</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2739</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2740</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2741</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.useExternalHashInECDSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2742</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x70</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2743</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_224</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2744</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2745</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x72</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2746</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2747</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2748</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2749</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.useExternalHashInECDSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2750</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x70</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2751</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2752</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2753</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x73</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2754</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2755</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2756</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2757</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.useExternalHashInECDSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2758</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x70</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2759</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2760</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2761</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x74</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2762</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2763</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2764</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2765</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.sc.useExternalHashInECDSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2766</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x70</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2767</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2768</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2769</span> </span><span class="WHIT">				</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x75</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2770</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2771</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2772</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.AES_CMAC</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2773</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.deriveSymmetricKey</span><span class="PUNC">(</span><span class="NAME">this.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.ALG_CMAC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2774</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2775</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported crypto mechanism"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2776</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2777</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2778</span> 
<span class='line'>2779</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.sc.sign</span><span class="PUNC">(</span><span class="NAME">this.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2780</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2781</span> 
<span class='line'>2782</span> 
<span class='line'>2783</span> 
<span class='line'>2784</span> </span><span class="COMM">/**
<span class='line'>2785</span>  * Decrypt data using a key in the SmartCard-HSM
<span class='line'>2786</span>  *
<span class='line'>2787</span>  * @param {Number} mech the decipher mechanism
<span class='line'>2788</span>  * @param {ByteString} data to be deciphered
<span class='line'>2789</span>  * @type ByteString
<span class='line'>2790</span>  * @return the plain message
<span class='line'>2791</span>  */</span><span class="WHIT">
<span class='line'>2792</span> </span><span class="NAME">SmartCardHSMKey.prototype.decrypt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2793</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2794</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2795</span> </span><span class="WHIT">		</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">mech</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2796</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2797</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2798</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PKCS1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2799</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2800</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_OAEP_SHA224</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2801</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2802</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2803</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_OAEP_SHA256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2804</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2805</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2806</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_OAEP_SHA384</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2807</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2808</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2809</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_OAEP_SHA512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2810</span> </span><span class="WHIT">			</span><span class="NAME">algo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2811</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2812</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>2813</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported crypto mechanism"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2814</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2815</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2816</span> 
<span class='line'>2817</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">em</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.decipher</span><span class="PUNC">(</span><span class="NAME">this.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x21</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2818</span> 
<span class='line'>2819</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">em</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2820</span> 
<span class='line'>2821</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mech</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2822</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mech</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PKCS1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2823</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS1.decode_EME_V15</span><span class="PUNC">(</span><span class="NAME">em</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2824</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2825</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.sc.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2826</span> 
<span class='line'>2827</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS1.decode_EME_OAEP</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">em</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2828</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2829</span> 
<span class='line'>2830</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">plain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2831</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.CRYPTO_FAILED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">mech</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Decryption failed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2832</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2833</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2834</span> 
<span class='line'>2835</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">plain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2836</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2837</span> 
<span class='line'>2838</span> 
<span class='line'>2839</span> 
<span class='line'>2840</span> </span><span class="COMM">/**
<span class='line'>2841</span>  * Return human readable string
<span class='line'>2842</span>  */</span><span class="WHIT">
<span class='line'>2843</span> </span><span class="NAME">SmartCardHSMKey.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2844</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"SmartCardHSMKey(id="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2845</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2846</span> 
<span class='line'>2847</span> 
<span class='line'>2848</span> 
<span class='line'>2849</span> </span><span class="COMM">/**
<span class='line'>2850</span>  * Initialize SmartCard-HSM
<span class='line'>2851</span>  *
<span class='line'>2852</span>  * @class Class implementing the device initialization methods
<span class='line'>2853</span>  * @param {Card} card the card object
<span class='line'>2854</span>  */</span><span class="WHIT">
<span class='line'>2855</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMInitializer</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2856</span> </span><span class="WHIT">	</span><span class="NAME">this.card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">card</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2857</span> </span><span class="WHIT">	</span><span class="NAME">this.initializationCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"57621880"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2858</span> </span><span class="WHIT">	</span><span class="NAME">this.userPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"648219"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2859</span> </span><span class="WHIT">	</span><span class="NAME">this.userPINSet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2860</span> </span><span class="WHIT">	</span><span class="NAME">this.useDefaultUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2861</span> </span><span class="WHIT">	</span><span class="NAME">this.retryCounterInitial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2862</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0001</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2863</span> </span><span class="WHIT">	</span><span class="NAME">this.keyshares</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2864</span> </span><span class="WHIT">	</span><span class="NAME">this.keyDomains</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2865</span> </span><span class="WHIT">	</span><span class="NAME">this.numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2866</span> </span><span class="WHIT">	</span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2867</span> </span><span class="WHIT">	</span><span class="NAME">this.bioslot</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2868</span> </span><span class="WHIT">	</span><span class="NAME">this.label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2869</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2870</span> 
<span class='line'>2871</span> </span><span class="NAME">exports.SmartCardHSMInitializer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMInitializer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2872</span> 
<span class='line'>2873</span> 
<span class='line'>2874</span> 
<span class='line'>2875</span> </span><span class="COMM">/**
<span class='line'>2876</span>  * Set the initialization code
<span class='line'>2877</span>  *
<span class='line'>2878</span>  * @param {ByteString} initializationCode an 8 byte code
<span class='line'>2879</span>  */</span><span class="WHIT">
<span class='line'>2880</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setInitializationCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">initializationCode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2881</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">initializationCode</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2882</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"initializationCode must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2883</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2884</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">initializationCode.length</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2885</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"initializationCode must have 8 bytes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2886</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2887</span> 
<span class='line'>2888</span> </span><span class="WHIT">	</span><span class="NAME">this.initializationCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">initializationCode</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2889</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2890</span> 
<span class='line'>2891</span> 
<span class='line'>2892</span> 
<span class='line'>2893</span> </span><span class="COMM">/**
<span class='line'>2894</span>  * Set the User PIN
<span class='line'>2895</span>  *
<span class='line'>2896</span>  * @param {ByteString} userPIN a 6 to 16 byte code
<span class='line'>2897</span>  */</span><span class="WHIT">
<span class='line'>2898</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">userPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2899</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">userPIN</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2900</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"userPIN must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2901</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2902</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">userPIN.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">userPIN.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">16</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2903</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"userPIN must be between 6 and 16 bytes"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2904</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2905</span> 
<span class='line'>2906</span> </span><span class="WHIT">	</span><span class="NAME">this.userPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">userPIN</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2907</span> </span><span class="WHIT">	</span><span class="NAME">this.userPINSet</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2908</span> </span><span class="WHIT">	</span><span class="NAME">this.useDefaultUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2909</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2910</span> 
<span class='line'>2911</span> 
<span class='line'>2912</span> 
<span class='line'>2913</span> </span><span class="COMM">/**
<span class='line'>2914</span>  * Set the retry counter
<span class='line'>2915</span>  *
<span class='line'>2916</span>  * The SmartCard-HSM enforces a retry counter &lt;= 3 for PIN length 6
<span class='line'>2917</span>  * The SmartCard-HSM enforces a retry counter &lt;= 5 for PIN length 7
<span class='line'>2918</span>  * The SmartCard-HSM enforces a retry counter &lt;= 10 for PIN length larger than 7
<span class='line'>2919</span>  *
<span class='line'>2920</span>  * @param {Number} retryCounterInitial in the range 1 to 10.
<span class='line'>2921</span>  */</span><span class="WHIT">
<span class='line'>2922</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setRetryCounterInitial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">retryCounterInitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2923</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">retryCounterInitial</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2924</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"retryCounterInitial must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2925</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2926</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">retryCounterInitial</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">retryCounterInitial</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2927</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"retryCounterInitial must be between 1 and 10"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2928</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2929</span> </span><span class="WHIT">	</span><span class="NAME">this.retryCounterInitial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">retryCounterInitial</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2930</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2931</span> 
<span class='line'>2932</span> 
<span class='line'>2933</span> 
<span class='line'>2934</span> </span><span class="COMM">/**
<span class='line'>2935</span>  * Set the number of DKEK shares
<span class='line'>2936</span>  *
<span class='line'>2937</span>  * @param {Number} keyshares number of DKEK shares in the range 0 to 255
<span class='line'>2938</span>  */</span><span class="WHIT">
<span class='line'>2939</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setDKEKShares</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyshares</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2940</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyshares</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2941</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyshares must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2942</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2943</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keyshares</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyshares</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2944</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyshares must be between 0 and 255"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2945</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2946</span> </span><span class="WHIT">	</span><span class="NAME">this.keyshares</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyshares</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2947</span> </span><span class="WHIT">	</span><span class="NAME">this.keyDomains</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2948</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2949</span> 
<span class='line'>2950</span> 
<span class='line'>2951</span> 
<span class='line'>2952</span> </span><span class="COMM">/**
<span class='line'>2953</span>  * Set the number of key domains
<span class='line'>2954</span>  *
<span class='line'>2955</span>  * @param {Number} keyDomains number of key domains
<span class='line'>2956</span>  */</span><span class="WHIT">
<span class='line'>2957</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setKeyDomains</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomains</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2958</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyDomains</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2959</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyDomains must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2960</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2961</span> 
<span class='line'>2962</span> </span><span class="WHIT">	</span><span class="NAME">this.keyDomains</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyDomains</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2963</span> </span><span class="WHIT">	</span><span class="NAME">this.keyshares</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2964</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2965</span> 
<span class='line'>2966</span> 
<span class='line'>2967</span> 
<span class='line'>2968</span> </span><span class="COMM">/**
<span class='line'>2969</span>  * Enable or disable RESET RETRY COUNTER command
<span class='line'>2970</span>  *
<span class='line'>2971</span>  * @param {Boolean} enable true (default) to allow RESET RETRY COUNTER command to reset user PIN using the initialization code
<span class='line'>2972</span>  */</span><span class="WHIT">
<span class='line'>2973</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setResetRetryCounterMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2974</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2975</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2976</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2977</span> 
<span class='line'>2978</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFFE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2979</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2980</span> 
<span class='line'>2981</span> 
<span class='line'>2982</span> 
<span class='line'>2983</span> </span><span class="COMM">/**
<span class='line'>2984</span>  * Enable or disable transport PIN mode
<span class='line'>2985</span>  *
<span class='line'>2986</span>  * @param {Boolean} enable true (non-default) to set user PIN to transport state
<span class='line'>2987</span>  */</span><span class="WHIT">
<span class='line'>2988</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setTransportPINMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2989</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>2990</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2991</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2992</span> 
<span class='line'>2993</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFFD</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>2994</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>2995</span> 
<span class='line'>2996</span> 
<span class='line'>2997</span> 
<span class='line'>2998</span> </span><span class="COMM">/**
<span class='line'>2999</span>  * Enable or disable session PIN mode
<span class='line'>3000</span>  *
<span class='line'>3001</span>  * @param {Number} 0 - disable, 1 - enable with clear-on-reset 3 - enable with explicit clearing
<span class='line'>3002</span>  */</span><span class="WHIT">
<span class='line'>3003</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setSessionPINMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3004</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument mode must be number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3005</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument mode must be 0, 1 or 3"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3006</span> 
<span class='line'>3007</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFF3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">mode</span><span class="WHIT"> </span><span class="PUNC">&lt;&lt;</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3008</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3009</span> 
<span class='line'>3010</span> 
<span class='line'>3011</span> 
<span class='line'>3012</span> </span><span class="COMM">/**
<span class='line'>3013</span>  * Enable or disable replacing of a PKA key
<span class='line'>3014</span>  *
<span class='line'>3015</span>  * @param {Boolean} enable true (non-default) to allow replacing of a PKA key
<span class='line'>3016</span>  */</span><span class="WHIT">
<span class='line'>3017</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setReplacePKAKeyMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3018</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3019</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3020</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3021</span> 
<span class='line'>3022</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFF7</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3023</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3024</span> 
<span class='line'>3025</span> 
<span class='line'>3026</span> 
<span class='line'>3027</span> </span><span class="COMM">/**
<span class='line'>3028</span>  * Enable the combined authentication mode of user pin and public key authentication.
<span class='line'>3029</span>  *
<span class='line'>3030</span>  * @param {Boolean} enable true (non-default) to require public key authentication and user authentication
<span class='line'>3031</span>  */</span><span class="WHIT">
<span class='line'>3032</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setCombinedAuthenticationMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3033</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">enable</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3034</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3035</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3036</span> 
<span class='line'>3037</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFEF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">enable</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">16</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3038</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3039</span> 
<span class='line'>3040</span> 
<span class='line'>3041</span> 
<span class='line'>3042</span> </span><span class="COMM">/**
<span class='line'>3043</span>  * If enabled RESET RETRY COUNTER only resets the error counter.
<span class='line'>3044</span>  * Otherwise  RRC allows changing the PIN
<span class='line'>3045</span>  *
<span class='line'>3046</span>  * @param {Boolean} resetOnly true to only reset the error counter, false otherwise (default)
<span class='line'>3047</span>  */</span><span class="WHIT">
<span class='line'>3048</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setResetRetryCounterResetOnlyMode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">resetOnly</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3049</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">resetOnly</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3050</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">resetOnly</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3051</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3052</span> 
<span class='line'>3053</span> </span><span class="WHIT">	</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFFDF</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">resetOnly</span><span class="WHIT"> </span><span class="PUNC">?</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="WHIT"> </span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3054</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3055</span> 
<span class='line'>3056</span> 
<span class='line'>3057</span> 
<span class='line'>3058</span> </span><span class="COMM">/**
<span class='line'>3059</span>  * Set parameter for public key authentication with n-of-m scheme, namely the values for n and m
<span class='line'>3060</span>  *
<span class='line'>3061</span>  * @param {Number} requiredPublicKeysForAuthentication number of key that must be authenticated for access
<span class='line'>3062</span>  * @param {Number} numberOfPublicKeys to register
<span class='line'>3063</span>  */</span><span class="WHIT">
<span class='line'>3064</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setPublicKeyAuthenticationParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">requiredPublicKeysForAuthentication</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">numberOfPublicKeys</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3065</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">90</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3066</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"numberOfPublicKeys must be between 1 and 90"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3067</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3068</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NAME">numberOfPublicKeys</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3069</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMInitializer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"requiredPublicKeysForAuthentication must be between 1 and "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">numberOfPublicKeys</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3070</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3071</span> </span><span class="WHIT">	</span><span class="NAME">this.numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">numberOfPublicKeys</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3072</span> </span><span class="WHIT">	</span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">requiredPublicKeysForAuthentication</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3073</span> </span><span class="WHIT">	</span><span class="NAME">this.useDefaultUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3074</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3075</span> 
<span class='line'>3076</span> 
<span class='line'>3077</span> 
<span class='line'>3078</span> </span><span class="COMM">/**
<span class='line'>3079</span>  * Select the biometric matching server for a one of the biometric templates
<span class='line'>3080</span>  *
<span class='line'>3081</span>  * @param {Number} slot either 0 or 1 for first or second template
<span class='line'>3082</span>  * @param {ByteString} aid the application identifier of the on-card biometric server
<span class='line'>3083</span>  * @param {Number} param one byte parameter passed to the server during initialization
<span class='line'>3084</span>  */</span><span class="WHIT">
<span class='line'>3085</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setBioTemplate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">slot</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">param</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3086</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">slot</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"slot must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3087</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">slot</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">slot</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"slot must be either 0 or 1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3088</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">aid</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"aid must be a ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3089</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">param</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"param must be a number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3090</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">param</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">param</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">255</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"param must be between 0 and 255"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3091</span> 
<span class='line'>3092</span> </span><span class="WHIT">	</span><span class="NAME">this.bioslot</span><span class="PUNC">[</span><span class="NAME">slot</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">aid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">param</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">param</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3093</span> </span><span class="WHIT">	</span><span class="NAME">this.useDefaultUserPIN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3094</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3095</span> 
<span class='line'>3096</span> 
<span class='line'>3097</span> 
<span class='line'>3098</span> </span><span class="COMM">/**
<span class='line'>3099</span>  * Set the label to be written to a minimal CIAInfo in EF 2F03
<span class='line'>3100</span>  *
<span class='line'>3101</span>  * @param {String} label the label
<span class='line'>3102</span>  */</span><span class="WHIT">
<span class='line'>3103</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setLabel</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3104</span> </span><span class="WHIT">	</span><span class="NAME">this.label</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">label</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3106</span> 
<span class='line'>3107</span> 
<span class='line'>3108</span> 
<span class='line'>3109</span> </span><span class="COMM">/**
<span class='line'>3110</span>  * Set the provisioning URL to be written to fixed parameter in CB00.
<span class='line'>3111</span>  *
<span class='line'>3112</span>  * @param {String} provisioningURL the URL at which this SE will be provisioned
<span class='line'>3113</span>  */</span><span class="WHIT">
<span class='line'>3114</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setProvisioningURL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">provisioningURL</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3115</span> </span><span class="WHIT">	</span><span class="NAME">this.provisioningURL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">provisioningURL</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3116</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3117</span> 
<span class='line'>3118</span> 
<span class='line'>3119</span> 
<span class='line'>3120</span> </span><span class="COMM">/**
<span class='line'>3121</span>  * Set the key check value of the token management key and the optional salt
<span class='line'>3122</span>  * used for SO-PIN derivation
<span class='line'>3123</span>  *
<span class='line'>3124</span>  * @param {ByteString} kcv the key check value of the token management key
<span class='line'>3125</span>  * @param {ByteString} salt the salt used to derive the SO-PIN
<span class='line'>3126</span>  */</span><span class="WHIT">
<span class='line'>3127</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.setTokenManagementKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">kcv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">salt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3128</span> </span><span class="WHIT">	</span><span class="NAME">this.tokenManagementKeyKCV</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">kcv</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3129</span> </span><span class="WHIT">	</span><span class="NAME">this.tokenManagementKeySalt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">salt</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3130</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3131</span> 
<span class='line'>3132</span> 
<span class='line'>3133</span> 
<span class='line'>3134</span> </span><span class="COMM">/**
<span class='line'>3135</span>  * Perform Initialization
<span class='line'>3136</span>  */</span><span class="WHIT">
<span class='line'>3137</span> </span><span class="NAME">SmartCardHSMInitializer.prototype.initialize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3138</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">	</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.options</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3139</span> 
<span class='line'>3140</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.userPINSet</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.useDefaultUserPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3141</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.userPIN</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3142</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3143</span> 
<span class='line'>3144</span> </span><span class="WHIT">	</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.initializationCode</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3145</span> 
<span class='line'>3146</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.userPINSet</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.useDefaultUserPIN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3147</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x91</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.retryCounterInitial</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3148</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3149</span> 
<span class='line'>3150</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.keyshares</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3151</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x92</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyshares</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3152</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3153</span> 
<span class='line'>3154</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.keyDomains</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3155</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x97</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyDomains</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3156</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3157</span> 
<span class='line'>3158</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.numberOfPublicKeys</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3159</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x93</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.numberOfPublicKeys</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.requiredPublicKeysForAuthentication</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3160</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3161</span> 
<span class='line'>3162</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.bioslot</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3163</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.bioslot</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3164</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x95</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">o.param</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">o.aid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3165</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3166</span> 
<span class='line'>3167</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.bioslot</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3168</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.bioslot</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3169</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x96</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">o.param</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">o.aid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3170</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3171</span> 
<span class='line'>3172</span> </span><span class="WHIT">	</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x50</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">s.value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x6A84</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3173</span> 
<span class='line'>3174</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.card.SW</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x6A84</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3175</span> </span><span class="WHIT">		</span><span class="COMM">// Due to the nature of the JCRE, a first call to initialize may run out of memory,</span><span class="WHIT">
<span class='line'>3176</span> </span><span class="WHIT">		</span><span class="COMM">// as the garbage collector for the removed objects is only run during the next</span><span class="WHIT">
<span class='line'>3177</span> </span><span class="WHIT">		</span><span class="COMM">// APDU invocation.</span><span class="WHIT">
<span class='line'>3178</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x50</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">s.value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3179</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3180</span> 
<span class='line'>3181</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3182</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3183</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3184</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x53</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3185</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3186</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3187</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">this.label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3188</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x03</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0500"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>3189</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>3190</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3191</span> 
<span class='line'>3192</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.EF_TokenInfo.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3193</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.EF_TokenInfo.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3194</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a.value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3195</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3196</span> 
<span class='line'>3197</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.provisioningURL</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.tokenManagementKeyKCV</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">this.tokenManagementKeySalt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3198</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3199</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.provisioningURL</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3200</span> </span><span class="WHIT">			</span><span class="NAME">l.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">this.provisioningURL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3201</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3202</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.tokenManagementKeyKCV</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3203</span> </span><span class="WHIT">			</span><span class="NAME">l.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.tokenManagementKeyKCV</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3204</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3205</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.tokenManagementKeySalt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3206</span> </span><span class="WHIT">			</span><span class="NAME">l.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.tokenManagementKeySalt</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3207</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3208</span> 
<span class='line'>3209</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3210</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x54</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3211</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x53</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>3212</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3213</span> 
<span class='line'>3214</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.EF_StaticTokenInfo.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3215</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.EF_StaticTokenInfo.byteAt</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3216</span> </span><span class="WHIT">		</span><span class="NAME">this.card.sendSecMsgApdu</span><span class="PUNC">(</span><span class="NAME">Card.ALL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xD7</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">p2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">a.value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="NUMB">0x9000</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3217</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3218</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3219</span> 
<span class='line'>3220</span> 
<span class='line'>3221</span> 
<span class='line'>3222</span> </span><span class="COMM">/**
<span class='line'>3223</span>  * Create a key specification generator instance
<span class='line'>3224</span>  *
<span class='line'>3225</span>  * @class Class implementing an encoder for the C-Data required in GENERATE ASYMMETRIC KEY PAIR
<span class='line'>3226</span>  * @param {Number} keytype must be either Crypto.RSA, Crypto.EC or Crypto.AES
<span class='line'>3227</span>  * @param {Number/Key} keysizeOrDP must be 1024, 1536, 2048, 3072 or 4096 for RSA, 128, 192 or 256 for AES and key object with Key.ECC_CURVE_OID set for EC
<span class='line'>3228</span>  */</span><span class="WHIT">
<span class='line'>3229</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keysizeOrDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3230</span> </span><span class="WHIT">	</span><span class="NAME">this.keytype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keytype</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3231</span> 
<span class='line'>3232</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">keytype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3233</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>3234</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keysizeOrDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3235</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKeySpecGenerator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keysizeIdDP must be of a number for RSA keys"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3236</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3237</span> </span><span class="WHIT">			</span><span class="NAME">this.keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keysizeOrDP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3238</span> </span><span class="WHIT">			</span><span class="NAME">this.defaultAlgo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-RSA-v1-5-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3239</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3240</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.EC</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>3241</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keysizeOrDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">keysizeOrDP</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3242</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKeySpecGenerator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keysizeIdDP must be a Key instance"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3243</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3244</span> </span><span class="WHIT">			</span><span class="NAME">this.domainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keysizeOrDP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3245</span> </span><span class="WHIT">			</span><span class="NAME">this.defaultAlgo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-TA-ECDSA-SHA-256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3246</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3247</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.AES</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>3248</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keysizeOrDP</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3249</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKeySpecGenerator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keysizeIdDP must be of a number for AES keys"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3250</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3251</span> </span><span class="WHIT">			</span><span class="NAME">this.keysize</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keysizeOrDP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3252</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3253</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>3254</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKeySpecGenerator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keytype must be Crypto.RSA or Crypto.EC"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3255</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3256</span> </span><span class="WHIT">	</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UTDUMMY00001"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3257</span> </span><span class="WHIT">	</span><span class="NAME">this.innerCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PublicKeyReference</span><span class="PUNC">(</span><span class="STRN">"UTDUMMY00001"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3258</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3259</span> 
<span class='line'>3260</span> </span><span class="NAME">exports.SmartCardHSMKeySpecGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3261</span> 
<span class='line'>3262</span> 
<span class='line'>3263</span> 
<span class='line'>3264</span> </span><span class="COMM">/**
<span class='line'>3265</span>  * Set key use counter for key
<span class='line'>3266</span>  *
<span class='line'>3267</span>  * @param {keyUseCounter} keyUseCounter in the range 1 to 2^64 - 2
<span class='line'>3268</span>  */</span><span class="WHIT">
<span class='line'>3269</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.setKeyUseCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyUseCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3270</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">keyUseCounter</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyUseCounter</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0xFFFFFFFF</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3271</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"SmartCardHSMKeySpecGenerator"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"keyUseCounter must be between 0 and 0xFFFFFFFF"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3272</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3273</span> </span><span class="WHIT">	</span><span class="NAME">this.keyUseCounter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyUseCounter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3274</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3275</span> 
<span class='line'>3276</span> 
<span class='line'>3277</span> 
<span class='line'>3278</span> </span><span class="COMM">/**
<span class='line'>3279</span>  * Set key domain
<span class='line'>3280</span>  *
<span class='line'>3281</span>  * @param {Number} keyDomain the key domain to which the key shall be added
<span class='line'>3282</span>  */</span><span class="WHIT">
<span class='line'>3283</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.setKeyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3284</span> </span><span class="WHIT">	</span><span class="NAME">this.keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3285</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3286</span> 
<span class='line'>3287</span> 
<span class='line'>3288</span> 
<span class='line'>3289</span> </span><span class="COMM">/**
<span class='line'>3290</span>  * Set wrapping key
<span class='line'>3291</span>  *
<span class='line'>3292</span>  * @param {Number} wrappingKey the key to used for wrapping a newly generated symmetric key
<span class='line'>3293</span>  */</span><span class="WHIT">
<span class='line'>3294</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.setWrappingKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">wrappingKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3295</span> </span><span class="WHIT">	</span><span class="NAME">this.wrappingKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">wrappingKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3296</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3297</span> 
<span class='line'>3298</span> 
<span class='line'>3299</span> 
<span class='line'>3300</span> </span><span class="COMM">/**
<span class='line'>3301</span>  * Set algorithm list
<span class='line'>3302</span>  *
<span class='line'>3303</span>  * @param {ByteString} algorithms the list of algorithms allowed for this key
<span class='line'>3304</span>  */</span><span class="WHIT">
<span class='line'>3305</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.setAlgorithms</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">algorithms</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3306</span> </span><span class="WHIT">	</span><span class="NAME">this.algorithms</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">algorithms</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3307</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3308</span> 
<span class='line'>3309</span> 
<span class='line'>3310</span> 
<span class='line'>3311</span> </span><span class="COMM">/**
<span class='line'>3312</span>  * Set certificate holder reference for key
<span class='line'>3313</span>  *
<span class='line'>3314</span>  * @param {PublicKeyReference} CHR certificate holder reference
<span class='line'>3315</span>  */</span><span class="WHIT">
<span class='line'>3316</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.setCHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">CHR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3317</span> </span><span class="WHIT">	</span><span class="NAME">this.CHR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CHR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3318</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3319</span> 
<span class='line'>3320</span> 
<span class='line'>3321</span> 
<span class='line'>3322</span> </span><span class="COMM">/**
<span class='line'>3323</span>  * Set certificate holder reference of CA this request shall be sent to
<span class='line'>3324</span>  *
<span class='line'>3325</span>  * @param {PublicKeyReference} CAR certificate holder reference
<span class='line'>3326</span>  */</span><span class="WHIT">
<span class='line'>3327</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.setInnerCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">CAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3328</span> </span><span class="WHIT">	</span><span class="NAME">this.innerCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CAR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3329</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3330</span> 
<span class='line'>3331</span> 
<span class='line'>3332</span> 
<span class='line'>3333</span> </span><span class="COMM">/**
<span class='line'>3334</span>  * Set holder reference of the key signing this request
<span class='line'>3335</span>  *
<span class='line'>3336</span>  * @param {PublicKeyReference} CAR certificate holder reference
<span class='line'>3337</span>  */</span><span class="WHIT">
<span class='line'>3338</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.setOuterCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">CAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3339</span> </span><span class="WHIT">	</span><span class="NAME">this.outerCAR</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CAR</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3340</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3341</span> 
<span class='line'>3342</span> 
<span class='line'>3343</span> 
<span class='line'>3344</span> </span><span class="COMM">/**
<span class='line'>3345</span>  * @private
<span class='line'>3346</span>  */</span><span class="WHIT">
<span class='line'>3347</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.encodeRSAKeySpec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3348</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3349</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Object Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.defaultAlgo</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3350</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key Exponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NUMB">65537</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3351</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Key Size"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x02</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keysize</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>3352</span> </span><span class="WHIT">		</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3353</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3354</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3355</span> 
<span class='line'>3356</span> 
<span class='line'>3357</span> 
<span class='line'>3358</span> </span><span class="COMM">/**
<span class='line'>3359</span>  * @private
<span class='line'>3360</span>  */</span><span class="WHIT">
<span class='line'>3361</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.encodeECKeySpec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3362</span> </span><span class="WHIT">	</span><span class="COMM">// Encode G</span><span class="WHIT">
<span class='line'>3363</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3364</span> </span><span class="WHIT">	</span><span class="COMM">// uncompressed encoding</span><span class="WHIT">
<span class='line'>3365</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3366</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.domainParameter.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3367</span> </span><span class="WHIT">	</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">this.domainParameter.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3368</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">G</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3369</span> 
<span class='line'>3370</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Public Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x7F49</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3371</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Object Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x06</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.defaultAlgo</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3372</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Prime Modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.domainParameter.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3373</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"First coefficient a"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.domainParameter.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3374</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Second coefficient b"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x83</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.domainParameter.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3375</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Base Point G"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x84</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">G</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3376</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Order of the base point"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x85</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.domainParameter.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>3377</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Cofactor f"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x87</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM.stripLeadingZeros</span><span class="PUNC">(</span><span class="NAME">this.domainParameter.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>3378</span> </span><span class="WHIT">		</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3379</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3380</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3381</span> 
<span class='line'>3382</span> 
<span class='line'>3383</span> 
<span class='line'>3384</span> </span><span class="COMM">/**
<span class='line'>3385</span>  * @private
<span class='line'>3386</span>  */</span><span class="WHIT">
<span class='line'>3387</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.encodeKeySpec</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3388</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.keytype</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3389</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.encodeRSAKeySpec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3390</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3391</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.encodeECKeySpec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3392</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3393</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3394</span> 
<span class='line'>3395</span> 
<span class='line'>3396</span> 
<span class='line'>3397</span> </span><span class="COMM">/**
<span class='line'>3398</span>  * Return the encoded key specification
<span class='line'>3399</span>  *
<span class='line'>3400</span>  * @type ByteString
<span class='line'>3401</span>  * @return the encoded C-Data for GENERATE ASYMMETRIC KEY PAIR
<span class='line'>3402</span>  */</span><span class="WHIT">
<span class='line'>3403</span> </span><span class="NAME">SmartCardHSMKeySpecGenerator.prototype.encode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3404</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3405</span> 
<span class='line'>3406</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.keytype</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">Crypto.AES</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3407</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CPI"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F29</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3408</span> 
<span class='line'>3409</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.innerCAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.innerCAR</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3410</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CAR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x42</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.innerCAR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3411</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3412</span> 
<span class='line'>3413</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.encodeKeySpec</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3414</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"CHR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x5F20</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.CHR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3415</span> 
<span class='line'>3416</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.outerCAR</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3417</span> </span><span class="WHIT">			</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"OuterCAR"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x45</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.outerCAR.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3418</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3419</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3420</span> 
<span class='line'>3421</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyUseCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3422</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Key use counter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x90</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyUseCounter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3423</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3424</span> 
<span class='line'>3425</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.algorithms</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3426</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Algorithms"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x91</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.algorithms</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3427</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3428</span> 
<span class='line'>3429</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3430</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"KeyDomain"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x92</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyDomain</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3431</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3432</span> 
<span class='line'>3433</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.wrappingKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3434</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Wrapping Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x93</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.wrappingKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3435</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3436</span> 
<span class='line'>3437</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3438</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3439</span> 
<span class='line'>3440</span> 
<span class='line'>3441</span> 
<span class='line'>3442</span> </span><span class="COMM">/**
<span class='line'>3443</span>  * Create a key specification generator instance for AES keys
<span class='line'>3444</span>  *
<span class='line'>3445</span>  * @class Class implementing an encoder for the C-Data required in Generate Symmetric Key
<span class='line'>3446</span>  * @param {ByteString} allowedAlgorithms the list of allowed algorithm identifier
<span class='line'>3447</span>  */</span><span class="WHIT">
<span class='line'>3448</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMSymmetricKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">allowedAlgorithms</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3449</span> </span><span class="WHIT">	</span><span class="NAME">this.algorithms</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">allowedAlgorithms</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3450</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3451</span> 
<span class='line'>3452</span> </span><span class="NAME">exports.SmartCardHSMSymmetricKeySpecGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMSymmetricKeySpecGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3453</span> 
<span class='line'>3454</span> 
<span class='line'>3455</span> 
<span class='line'>3456</span> </span><span class="COMM">/**
<span class='line'>3457</span>  * Set key domain
<span class='line'>3458</span>  *
<span class='line'>3459</span>  * @param {Number} keyDomain the key domain to which the key shall be added
<span class='line'>3460</span>  */</span><span class="WHIT">
<span class='line'>3461</span> </span><span class="NAME">SmartCardHSMSymmetricKeySpecGenerator.prototype.setKeyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3462</span> </span><span class="WHIT">	</span><span class="NAME">this.keyDomain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyDomain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3463</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3464</span> 
<span class='line'>3465</span> 
<span class='line'>3466</span> 
<span class='line'>3467</span> </span><span class="COMM">/**
<span class='line'>3468</span>  * Return the encoded AES key specification
<span class='line'>3469</span>  *
<span class='line'>3470</span>  * @type ByteString
<span class='line'>3471</span>  * @return the encoded C-Data for Generate Symmetric Key
<span class='line'>3472</span>  */</span><span class="WHIT">
<span class='line'>3473</span> </span><span class="NAME">SmartCardHSMSymmetricKeySpecGenerator.prototype.encode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3474</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x30</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3475</span> 
<span class='line'>3476</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Algorithms"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x91</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.algorithms</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3477</span> 
<span class='line'>3478</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyUseCounter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3479</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Key use counter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x90</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyUseCounter</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3480</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3481</span> 
<span class='line'>3482</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3483</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Key Domain"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x92</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">this.keyDomain</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3484</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3485</span> 
<span class='line'>3486</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.wrappingKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3487</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"Wrapping Key"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x93</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.wrappingKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3488</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3489</span> 
<span class='line'>3490</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t.value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3491</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3492</span> 
<span class='line'>3493</span> 
<span class='line'>3494</span> 
<span class='line'>3495</span> </span><span class="NAME">SmartCardHSM.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>3496</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3497</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">card</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Card</span><span class="PUNC">(</span><span class="NAME">_scsh3.reader</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3498</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSM</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3499</span> 
<span class='line'>3500</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sci</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMInitializer</span><span class="PUNC">(</span><span class="NAME">card</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3501</span> </span><span class="WHIT">	</span><span class="NAME">sci.initialize</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3502</span> 
<span class='line'>3503</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc.validateCertificateChain</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3504</span> </span><span class="WHIT">	</span><span class="NAME">sc.openSecureChannel</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3505</span> 
<span class='line'>3506</span> </span><span class="WHIT">	</span><span class="NAME">sc.verifyUserPIN</span><span class="PUNC">(</span><span class="NAME">sci.userPIN</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3507</span> 
<span class='line'>3508</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3509</span> </span><span class="WHIT">	</span><span class="NAME">sc.generateAsymmetricKeyPair</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kg.encode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3510</span> 
<span class='line'>3511</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3512</span> </span><span class="WHIT">	</span><span class="NAME">dp.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3513</span> 
<span class='line'>3514</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">kg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">SmartCardHSMKeySpecGenerator</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3515</span> </span><span class="WHIT">	</span><span class="NAME">sc.generateAsymmetricKeyPair</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">kg.encode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3516</span> 
<span class='line'>3517</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">list</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc.enumerateKeys</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3518</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Keys on device: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">list</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3519</span> 
<span class='line'>3520</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3521</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">message</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"Hello World"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3522</span> 
<span class='line'>3523</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc.getKey</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3524</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3525</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Signature: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3526</span> 
<span class='line'>3527</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">sc.getKey</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3528</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.sign</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">message</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3529</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Signature: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>3530</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>3531</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview
<span class='line'> 25</span>  * Simple CRL generator class
<span class='line'> 26</span>  */</span><span class="WHIT">
<span class='line'> 27</span> 
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/x509/PKIXCommon"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> 
<span class='line'> 32</span> </span><span class="COMM">/**
<span class='line'> 33</span>  * Create a Certificate Revocation List (CRL) generator.
<span class='line'> 34</span>  *
<span class='line'> 35</span>  * @class Class implementing a CRL certificate generator
<span class='line'> 36</span>  * @constructor
<span class='line'> 37</span>  *
<span class='line'> 38</span>  * @param {Crypto} crypto the crypto provider to use for signing operations
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">CRLGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 44</span> 
<span class='line'> 45</span> </span><span class="NAME">exports.CRLGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">CRLGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> 
<span class='line'> 48</span> </span><span class="NAME">CRLGenerator.unspecified</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">CRLGenerator.keyCompromise</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="NAME">CRLGenerator.cACompromise</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="NAME">CRLGenerator.affiliationChanged</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="NAME">CRLGenerator.superseded</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">4</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="NAME">CRLGenerator.cessationOfOperation</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="NAME">CRLGenerator.certificateHold</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">6</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">CRLGenerator.removeFromCRL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="NAME">CRLGenerator.privilegeWithdrawn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">9</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="NAME">CRLGenerator.aACompromise</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> 
<span class='line'> 61</span> </span><span class="COMM">/**
<span class='line'> 62</span>  * Resets all internal state variables.
<span class='line'> 63</span>  *
<span class='line'> 64</span>  */</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="NAME">CRLGenerator.prototype.reset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="NAME">this.revokedCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="WHIT">	</span><span class="NAME">this.nextUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 70</span> 
<span class='line'> 71</span> 
<span class='line'> 72</span> 
<span class='line'> 73</span> </span><span class="COMM">/**
<span class='line'> 74</span>  * Sets the isser name.
<span class='line'> 75</span>  *
<span class='line'> 76</span>  * &lt;p>The issuer name must be a JavaScript object containing the properties:&lt;/p>
<span class='line'> 77</span>  * &lt;ul>
<span class='line'> 78</span>  *  &lt;li>C - the country&lt;/li>
<span class='line'> 79</span>  *  &lt;li>O - the organization&lt;/li>
<span class='line'> 80</span>  *  &lt;li>OU - the organization unit&lt;/li>
<span class='line'> 81</span>  *  &lt;li>CN - the common name&lt;/li>
<span class='line'> 82</span>  * &lt;/ul>
<span class='line'> 83</span>  * &lt;p>Example:&lt;/p>
<span class='line'> 84</span>  * &lt;pre>
<span class='line'> 85</span>  *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
<span class='line'> 86</span>  * &lt;/pre>
<span class='line'> 87</span>  * @param {Object} issuer the issuer name
<span class='line'> 88</span>  */</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="NAME">CRLGenerator.prototype.setIssuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="NAME">this.issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> 
<span class='line'> 94</span> 
<span class='line'> 95</span> </span><span class="COMM">/**
<span class='line'> 96</span>  * Sets the timestamp for this CRL
<span class='line'> 97</span>  *
<span class='line'> 98</span>  * @param {Date} datetime the current date and time
<span class='line'> 99</span>  */</span><span class="WHIT">
<span class='line'>100</span> </span><span class="NAME">CRLGenerator.prototype.setThisUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">datetime</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">	</span><span class="NAME">this.thisUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">datetime</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>103</span> 
<span class='line'>104</span> 
<span class='line'>105</span> 
<span class='line'>106</span> </span><span class="COMM">/**
<span class='line'>107</span>  * Sets the timestamp for the next update
<span class='line'>108</span>  *
<span class='line'>109</span>  * @param {Date} datetime the date and time of the next update
<span class='line'>110</span>  */</span><span class="WHIT">
<span class='line'>111</span> </span><span class="NAME">CRLGenerator.prototype.setNextUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">datetime</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="NAME">this.nextUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">datetime</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>114</span> 
<span class='line'>115</span> 
<span class='line'>116</span> 
<span class='line'>117</span> </span><span class="COMM">/**
<span class='line'>118</span>  * Sets the signature algorithm.
<span class='line'>119</span>  *
<span class='line'>120</span>  * @param {Number} alg the signature algorithm, must be one of Crypto.RSA, Crypto.RSA_SHA256 or Crypto.ECDSA_SHA256
<span class='line'>121</span>  */</span><span class="WHIT">
<span class='line'>122</span> </span><span class="NAME">CRLGenerator.prototype.setSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="NAME">this.signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>125</span> 
<span class='line'>126</span> 
<span class='line'>127</span> 
<span class='line'>128</span> </span><span class="COMM">/**
<span class='line'>129</span>  * Adds an extension to the CRL
<span class='line'>130</span>  *
<span class='line'>131</span>  * &lt;p>The structure is defined as:&lt;/p>
<span class='line'>132</span>  * &lt;pre>
<span class='line'>133</span>  *    Extension  ::=  SEQUENCE  {
<span class='line'>134</span>  *        extnID      OBJECT IDENTIFIER,
<span class='line'>135</span>  *        critical    BOOLEAN DEFAULT FALSE,
<span class='line'>136</span>  *        extnValue   OCTET STRING
<span class='line'>137</span>  *                    -- contains the DER encoding of an ASN.1 value
<span class='line'>138</span>  *                    -- corresponding to the extension type identified
<span class='line'>139</span>  *                    -- by extnID
<span class='line'>140</span>  *        }
<span class='line'>141</span>  *&lt;/pre>
<span class='line'>142</span>  * @param {String} extnID the extensions object identifier
<span class='line'>143</span>  * @param {Boolean} critical the extension is critical
<span class='line'>144</span>  * @param {ByteString} the extension value as ByteString
<span class='line'>145</span>  */</span><span class="WHIT">
<span class='line'>146</span> </span><span class="NAME">CRLGenerator.prototype.addExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">extnID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">critical</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extnValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extension"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnID"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">extnID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> 
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">critical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"critical"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BOOLEAN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"FF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>154</span> 
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extnValue</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions.push</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>159</span> 
<span class='line'>160</span> 
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="COMM">/**
<span class='line'>163</span>  * Adds the authority public key identifier extension based on the issuers key.
<span class='line'>164</span>  *
<span class='line'>165</span>  * &lt;p>The key identifier is calculated as SHA-1 hash over the contents of the
<span class='line'>166</span>  * issuer public key (Without tag, length and number of unused bits.&lt;/p>
<span class='line'>167</span>  */</span><span class="WHIT">
<span class='line'>168</span> </span><span class="NAME">CRLGenerator.prototype.addAuthorityKeyIdentifierExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createRSASubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createECSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.encodeECDomainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> 
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">spi.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>177</span> 
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"id-ce-authorityKeyIdentifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> 
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="COMM">/**
<span class='line'>187</span>  * Adds the CRL number extension.
<span class='line'>188</span>  *
<span class='line'>189</span>  */</span><span class="WHIT">
<span class='line'>190</span> </span><span class="NAME">CRLGenerator.prototype.addCRLNumberExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crlnumber</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">					</span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">crlnumber</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"id-ce-cRLNumber"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>196</span> 
<span class='line'>197</span> 
<span class='line'>198</span> 
<span class='line'>199</span> </span><span class="COMM">/**
<span class='line'>200</span>  * Add a revoked certificate to the list. This adds the complete DER encoded structure.
<span class='line'>201</span>  *
<span class='line'>202</span>  * @param {ASN1} revokedCertificate the information related to the revoked certificate
<span class='line'>203</span>  */</span><span class="WHIT">
<span class='line'>204</span> </span><span class="NAME">CRLGenerator.prototype.addRevokedCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">revokedCertificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="NAME">this.revokedCertificates.push</span><span class="PUNC">(</span><span class="NAME">revokedCertificate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>207</span> 
<span class='line'>208</span> 
<span class='line'>209</span> 
<span class='line'>210</span> </span><span class="NAME">CRLGenerator.prototype.createInvalidityDateExt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">invalidityDate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extension"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnID"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">				 </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ce-invalidityDate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> 
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extnValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"invalidityDate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.GeneralizedTime</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">				 </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.dtoUTCFullYear</span><span class="PUNC">(</span><span class="NAME">invalidityDate</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> 
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extnValue.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> 
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>222</span> 
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="COMM">/**
<span class='line'>225</span>  * Add a revoked certificate to the list. This adds the complete DER encoded structure.
<span class='line'>226</span>  *
<span class='line'>227</span>  * @param {ByteString} serial the serial number of the certificate to revoke
<span class='line'>228</span>  * @param {Date} timestamp the revocation time, optional, default is now
<span class='line'>229</span>  * @param {Number} reason the revocation reason
<span class='line'>230</span>  * @param {ASN1} ext the crl entry extensions
<span class='line'>231</span>  */</span><span class="WHIT">
<span class='line'>232</span> </span><span class="NAME">CRLGenerator.prototype.revokeCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">serial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">timestamp</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">reason</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">timestamp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">		</span><span class="NAME">timestamp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"revokedCertificate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"userCertificate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">serial</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"revocationTime"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.UTCTime</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.dtoUTC</span><span class="PUNC">(</span><span class="NAME">timestamp</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> 
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">ext</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="NAME">ext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"crlExtensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>244</span> 
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">reason</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">reason</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">		</span><span class="NAME">ext.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"reason"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnID"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ce-cRLReasons"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">						</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cRLReason"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.ENUMERATED</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">reason</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>253</span> 
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ext.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">ext</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>257</span> 
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="NAME">this.revokedCertificates.push</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>260</span> 
<span class='line'>261</span> 
<span class='line'>262</span> 
<span class='line'>263</span> </span><span class="COMM">/**
<span class='line'>264</span>  * Load list of revoked certificates from an existing CRL
<span class='line'>265</span>  *
<span class='line'>266</span>  * @param {ByteString} crlbin the DER encoded CRL
<span class='line'>267</span>  * @type Number
<span class='line'>268</span>  * @return the value of the CRLNumber extension, 0 if extension not defined or -1 if file could not be loaded
<span class='line'>269</span>  */</span><span class="WHIT">
<span class='line'>270</span> </span><span class="NAME">CRLGenerator.prototype.loadCRLEntries</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crlbin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crlnumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>272</span> 
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">crlbin</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">		</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">crl</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tbs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crl.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tbs.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tbs.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Skip version if present</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">			</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">		</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">3</span><span class="PUNC">;</span><span class="WHIT">		</span><span class="COMM">// Skip signature, issuer, thisUpdate</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tbs.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tbs.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.UTCTime</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// nextUpdate if present</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">			</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>284</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tbs.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tbs.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tbs.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">				</span><span class="NAME">this.revokedCertificates.push</span><span class="PUNC">(</span><span class="NAME">tbs.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">			</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">tbs.elements</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">tbs.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">tbs.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ce-cRLNumber"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">l.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">l.get</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ext.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.equals</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>297</span> </span><span class="WHIT">					</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extval</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ext.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">					</span><span class="NAME">crlnumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">extval.value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>301</span> 
<span class='line'>302</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>304</span> </span><span class="WHIT">	</span><span class="KEYW">catch</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>305</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.trace</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">crlnumber</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>310</span> 
<span class='line'>311</span> 
<span class='line'>312</span> 
<span class='line'>313</span> </span><span class="COMM">/**
<span class='line'>314</span>  * Gets the issuer name as TLV object
<span class='line'>315</span>  *
<span class='line'>316</span>  * @return the issuer RDNSequence
<span class='line'>317</span>  * @type ASN1
<span class='line'>318</span>  */</span><span class="WHIT">
<span class='line'>319</span> </span><span class="NAME">CRLGenerator.prototype.getIssuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>320</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.issuer</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>321</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.issuer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodeName</span><span class="PUNC">(</span><span class="NAME">this.issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>325</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>326</span> 
<span class='line'>327</span> 
<span class='line'>328</span> 
<span class='line'>329</span> </span><span class="COMM">/**
<span class='line'>330</span>  * Gets the thisUpdate TLV object
<span class='line'>331</span>  *
<span class='line'>332</span>  * @return the thisUpdate UTC encoded time
<span class='line'>333</span>  * @type ASN1
<span class='line'>334</span>  */</span><span class="WHIT">
<span class='line'>335</span> </span><span class="NAME">CRLGenerator.prototype.getThisUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"thisUpdate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.UTCTime</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.dtoUTC</span><span class="PUNC">(</span><span class="NAME">this.thisUpdate</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>339</span> 
<span class='line'>340</span> 
<span class='line'>341</span> 
<span class='line'>342</span> </span><span class="COMM">/**
<span class='line'>343</span>  * Gets the nextUpdate TLV object
<span class='line'>344</span>  *
<span class='line'>345</span>  * @return the nextUpdate UTC encoded time
<span class='line'>346</span>  * @type ASN1
<span class='line'>347</span>  */</span><span class="WHIT">
<span class='line'>348</span> </span><span class="NAME">CRLGenerator.prototype.getNextUpdate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"nextUpdate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.UTCTime</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.dtoUTC</span><span class="PUNC">(</span><span class="NAME">this.nextUpdate</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>352</span> 
<span class='line'>353</span> 
<span class='line'>354</span> 
<span class='line'>355</span> </span><span class="COMM">/**
<span class='line'>356</span>  * Gets the signature algorithm TLV object
<span class='line'>357</span>  *
<span class='line'>358</span>  * @return the signature algorithm object
<span class='line'>359</span>  * @type ASN1
<span class='line'>360</span>  */</span><span class="WHIT">
<span class='line'>361</span> </span><span class="NAME">CRLGenerator.prototype.getSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodeSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">this.signatureAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>364</span> 
<span class='line'>365</span> 
<span class='line'>366</span> 
<span class='line'>367</span> </span><span class="COMM">/**
<span class='line'>368</span>  * Gets revoked certificates
<span class='line'>369</span>  *
<span class='line'>370</span>  * @return the list of revoked certificates
<span class='line'>371</span>  * @type ASN1
<span class='line'>372</span>  */</span><span class="WHIT">
<span class='line'>373</span> </span><span class="NAME">CRLGenerator.prototype.getRevokedCertificates</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"revokedCertificates"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.revokedCertificates.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.revokedCertificates</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>380</span> 
<span class='line'>381</span> 
<span class='line'>382</span> 
<span class='line'>383</span> </span><span class="COMM">/**
<span class='line'>384</span>  * Gets the CRL extension as TLV object
<span class='line'>385</span>  *
<span class='line'>386</span>  * @return the CRL extensions
<span class='line'>387</span>  * @type ASN1
<span class='line'>388</span>  */</span><span class="WHIT">
<span class='line'>389</span> </span><span class="NAME">CRLGenerator.prototype.getExtensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>390</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>391</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>392</span> 
<span class='line'>393</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>394</span> 
<span class='line'>395</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.extensions.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="NAME">this.extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>400</span> 
<span class='line'>401</span> 
<span class='line'>402</span> 
<span class='line'>403</span> </span><span class="COMM">/**
<span class='line'>404</span>  * Gets the part of the CRL that will be signed
<span class='line'>405</span>  *
<span class='line'>406</span>  * @return the TBSCertificate part
<span class='line'>407</span>  * @type ASN1
<span class='line'>408</span>  */</span><span class="WHIT">
<span class='line'>409</span> </span><span class="NAME">CRLGenerator.prototype.getTbsCertificateList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"tbsCertList"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"version"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getSignatureAlgorithm</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getIssuer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getThisUpdate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.nextUpdate</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getNextUpdate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.revokedCertificates.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getRevokedCertificates</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.extensions.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getExtensions</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>426</span> 
<span class='line'>427</span> 
<span class='line'>428</span> 
<span class='line'>429</span> </span><span class="COMM">/**
<span class='line'>430</span>  * Generates the certificate.
<span class='line'>431</span>  *
<span class='line'>432</span>  * @return the generated certificate
<span class='line'>433</span>  * @type X509
<span class='line'>434</span>  */</span><span class="WHIT">
<span class='line'>435</span> </span><span class="NAME">CRLGenerator.prototype.generateCRL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"certificateList"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>437</span> 
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tbs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getTbsCertificateList</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">	</span><span class="NAME">certlist.add</span><span class="PUNC">(</span><span class="NAME">tbs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="NAME">certlist.add</span><span class="PUNC">(</span><span class="NAME">this.getSignatureAlgorithm</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> 
<span class='line'>442</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.signatureAlgorithm</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tbs.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">	</span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> 
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"signatureValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">	</span><span class="NAME">certlist.add</span><span class="PUNC">(</span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>447</span> 
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certlist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>449</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>450</span> 
<span class='line'>451</span> 
<span class='line'>452</span> 
<span class='line'>453</span> </span><span class="NAME">CRLGenerator.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>454</span> 
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> 
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="NAME">caPrivateKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> 
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT">	</span><span class="NAME">caPublicKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">	</span><span class="NAME">caPublicKey.setSize</span><span class="PUNC">(</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>463</span> 
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">caPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">caPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> 
<span class='line'>466</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CRLGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> 
<span class='line'>468</span> </span><span class="WHIT">	</span><span class="NAME">x.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>469</span> </span><span class="WHIT">	</span><span class="NAME">x.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>470</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"UT"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"ACME Corporation"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"Test-CA"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT">	</span><span class="NAME">x.setIssuer</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">now</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>473</span> </span><span class="WHIT">	</span><span class="NAME">x.setThisUpdate</span><span class="PUNC">(</span><span class="NAME">now</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>474</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextMonth</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT">	</span><span class="NAME">nextMonth.setMonth</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">now.getMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT">	</span><span class="NAME">x.setNextUpdate</span><span class="PUNC">(</span><span class="NAME">nextMonth</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT">	</span><span class="NAME">x.addAuthorityKeyIdentifierExtension</span><span class="PUNC">(</span><span class="NAME">caPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="NAME">x.addCRLNumberExtension</span><span class="PUNC">(</span><span class="NUMB">11</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> 
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="NAME">x.revokeCertificate</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="NAME">x.revokeCertificate</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"80"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="NAME">x.revokeCertificate</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"80"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.keyCompromise</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="NAME">x.revokeCertificate</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"80"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.superseded</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"crlExtensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>484</span> 
<span class='line'>485</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"crlExtensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="NAME">extensions.add</span><span class="PUNC">(</span><span class="NAME">x.createInvalidityDateExt</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT"> 	</span><span class="NAME">x.revokeCertificate</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"80"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.superseded</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>488</span> 
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x.generateCRL</span><span class="PUNC">(</span><span class="NAME">caPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>490</span> 
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.mapFilename</span><span class="PUNC">(</span><span class="STRN">"crl.crl"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPSystem.USR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="NAME">PKIXCommon.writeFileToDisk</span><span class="PUNC">(</span><span class="NAME">fn</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">crl.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>493</span> 
<span class='line'>494</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">crl</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>495</span> 
<span class='line'>496</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CRLGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> </span><span class="WHIT">	</span><span class="NAME">x.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="NAME">x.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"UT"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"ACME Corporation"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"Test-CA"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span> </span><span class="WHIT">	</span><span class="NAME">x.setIssuer</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">now</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">	</span><span class="NAME">x.setThisUpdate</span><span class="PUNC">(</span><span class="NAME">now</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nextMonth</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">	</span><span class="NAME">nextMonth.setMonth</span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">now.getMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">12</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="NAME">x.setNextUpdate</span><span class="PUNC">(</span><span class="NAME">nextMonth</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crlnumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x.loadCRLEntries</span><span class="PUNC">(</span><span class="NAME">crl.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>507</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">crlnumber</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">11</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>508</span> </span><span class="WHIT">	</span><span class="NAME">x.addAuthorityKeyIdentifierExtension</span><span class="PUNC">(</span><span class="NAME">caPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>509</span> </span><span class="WHIT">	</span><span class="NAME">x.addCRLNumberExtension</span><span class="PUNC">(</span><span class="NAME">crlnumber</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> 
<span class='line'>511</span> </span><span class="WHIT">	</span><span class="NAME">x.revokeCertificate</span><span class="PUNC">(</span><span class="NAME">crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.keyCompromise</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>512</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x.generateCRL</span><span class="PUNC">(</span><span class="NAME">caPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> </span><span class="COMM">//	PKIXCommon.writeFileToDisk(fn, crl.getBytes());</span><span class="WHIT">
<span class='line'>514</span> 
<span class='line'>515</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">crl</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>517</span> 
<span class='line'>518</span> 
<span class='line'>519</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2016 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Encoder for Distinguished Names using input data and a mask
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/x509/PKIXCommon"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="COMM">/**
<span class='line'> 32</span>  * An instance of this class allow generating a Distinguished Name from components
<span class='line'> 33</span>  * defined in the mask given as constructor. The mask may contain placeholders in the
<span class='line'> 34</span>  * form ${major.minor} that are resolved against other DNs and objects set with setDN() or
<span class='line'> 35</span>  * setMap().
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @constructor
<span class='line'> 38</span>  * @param {String} mask the mask for generating the DN
<span class='line'> 39</span>  */</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">DNEncoder</span><span class="PUNC">(</span><span class="NAME">mask</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.dnmask</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.parseDN</span><span class="PUNC">(</span><span class="NAME">mask</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.dnmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="WHIT">	</span><span class="NAME">this.objmap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="NAME">exports.DNEncoder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">DNEncoder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> 
<span class='line'> 48</span> 
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="COMM">/**
<span class='line'> 51</span>  * Register a DN under the given name. Elements in the DN can be referenced by ${major.minor}
<span class='line'> 52</span>  * with major set to the name given as argument and minor being the component in the given DN.
<span class='line'> 53</span>  *
<span class='line'> 54</span>  * @param {String} name the name for the major key
<span class='line'> 55</span>  * @param {String/Object} dn the Distinguished Name given as String or in the format returned by PKIXCommon.parseDN.
<span class='line'> 56</span>  */</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="NAME">DNEncoder.prototype.setDN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">dn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="WHIT">		</span><span class="NAME">dn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.parseDN</span><span class="PUNC">(</span><span class="NAME">dn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">	</span><span class="NAME">this.dnmap</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> 
<span class='line'> 64</span> 
<span class='line'> 65</span> 
<span class='line'> 66</span> </span><span class="COMM">/**
<span class='line'> 67</span>  * Register an object and it properties the given name. Elements in the object can be referenced by ${major.minor}
<span class='line'> 68</span>  * with major set to the name given as argument and minor being the member of the given object.
<span class='line'> 69</span>  *
<span class='line'> 70</span>  * @param {String} name the name for the major key
<span class='line'> 71</span>  * @param {Object} map the map object
<span class='line'> 72</span>  */</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="NAME">DNEncoder.prototype.setMap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">map</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="NAME">this.objmap</span><span class="PUNC">[</span><span class="NAME">name</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">map</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 76</span> 
<span class='line'> 77</span> 
<span class='line'> 78</span> 
<span class='line'> 79</span> </span><span class="COMM">/**
<span class='line'> 80</span>  * Replace key with value from DN
<span class='line'> 81</span>  * @private
<span class='line'> 82</span>  * @param {Object} o the DN object
<span class='line'> 83</span>  * @param {String} major the major key value
<span class='line'> 84</span>  * @param {String} minor the minor key value
<span class='line'> 85</span>  * @type String
<span class='line'> 86</span>  * @return the replacement value
<span class='line'> 87</span>  */</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="NAME">DNEncoder.prototype.replaceFromDN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.findRDN</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minor.toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">v</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Element "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found in "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> 
<span class='line'> 97</span> 
<span class='line'> 98</span> </span><span class="COMM">/**
<span class='line'> 99</span>  * Replace key with value from object
<span class='line'>100</span>  * @private
<span class='line'>101</span>  * @param {Object} o the object
<span class='line'>102</span>  * @param {String} major the major key value
<span class='line'>103</span>  * @param {String} minor the minor key value
<span class='line'>104</span>  * @type String
<span class='line'>105</span>  * @return the replacement value
<span class='line'>106</span>  */</span><span class="WHIT">
<span class='line'>107</span> </span><span class="NAME">DNEncoder.prototype.replaceFromObject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>108</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">[</span><span class="NAME">minor</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>109</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Element "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found in "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>111</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">o</span><span class="PUNC">[</span><span class="NAME">minor</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>112</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>113</span> 
<span class='line'>114</span> 
<span class='line'>115</span> 
<span class='line'>116</span> </span><span class="COMM">/**
<span class='line'>117</span>  * Replace key
<span class='line'>118</span>  * @private
<span class='line'>119</span>  * @param {String} key the in the format ${major.minor}
<span class='line'>120</span>  * @type String
<span class='line'>121</span>  * @return the replacement value
<span class='line'>122</span>  */</span><span class="WHIT">
<span class='line'>123</span> </span><span class="NAME">DNEncoder.prototype.replace</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/\$\{(\w+)\.(\w+)\}/</span><span class="PUNC">.</span><span class="NAME">exec</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"The expression "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is not valid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>128</span> 
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">major</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> 
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.dnmap</span><span class="PUNC">[</span><span class="NAME">major</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.replaceFromDN</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.objmap</span><span class="PUNC">[</span><span class="NAME">major</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> 
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.replaceFromObject</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown major key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>144</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>145</span> 
<span class='line'>146</span> 
<span class='line'>147</span> 
<span class='line'>148</span> </span><span class="COMM">/**
<span class='line'>149</span>  * Check key for validity
<span class='line'>150</span>  * @private
<span class='line'>151</span>  * @param {String} key the in the format ${major.minor}
<span class='line'>152</span>  */</span><span class="WHIT">
<span class='line'>153</span> </span><span class="NAME">DNEncoder.prototype.check</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="REGX">/\$\{(\w+)\.(\w+)\}/</span><span class="PUNC">.</span><span class="NAME">exec</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"The expression "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is not valid"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>158</span> 
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">major</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">r</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.dnmap</span><span class="PUNC">[</span><span class="NAME">major</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">PKIXCommon.validRDN.indexOf</span><span class="PUNC">(</span><span class="NAME">minor.toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is not a supported RDN (Valid RDNs are "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.validRDN</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.objmap</span><span class="PUNC">[</span><span class="NAME">major</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> 
<span class='line'>170</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o.any</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">o</span><span class="PUNC">[</span><span class="NAME">minor</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown minor key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">minor</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown major key "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">major</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>180</span> 
<span class='line'>181</span> 
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="COMM">/**
<span class='line'>184</span>  * Iterate replacement strings
<span class='line'>185</span>  * @private
<span class='line'>186</span>  *
<span class='line'>187</span>  * @param {String} func the name of the replacement function
<span class='line'>188</span>  */</span><span class="WHIT">
<span class='line'>189</span> </span><span class="NAME">DNEncoder.prototype.iterate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">func</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.dnmask.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rdn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.dnmask</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nrdn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">rdn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">inp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rdn</span><span class="PUNC">[</span><span class="NAME">k</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="COMM">//			print(k + "=" + inp);</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fixed</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">inp.split</span><span class="PUNC">(</span><span class="REGX">/\$\{.+?\}/</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> </span><span class="COMM">//			print("Fixed[" + fixed.length + "]: " + fixed);</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">inp.match</span><span class="PUNC">(</span><span class="REGX">/\$\{.+?\}/g</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keys</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">				</span><span class="NAME">keys</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span> </span><span class="COMM">//			print("Keys[" + keys.length + "] : " + keys);</span><span class="WHIT">
<span class='line'>205</span> 
<span class='line'>206</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">fixed.length</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keys.length</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>208</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">					</span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">fixed</span><span class="PUNC">[</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">					</span><span class="NAME">res</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">[</span><span class="NAME">func</span><span class="PUNC">]</span><span class="PUNC">(</span><span class="NAME">keys</span><span class="PUNC">[</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">			</span><span class="NAME">nrdn</span><span class="PUNC">[</span><span class="NAME">k</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">res</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">		</span><span class="NAME">dn.push</span><span class="PUNC">(</span><span class="NAME">nrdn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>220</span> 
<span class='line'>221</span> 
<span class='line'>222</span> 
<span class='line'>223</span> </span><span class="COMM">/**
<span class='line'>224</span>  * Encode DN based on mask and previously set objects
<span class='line'>225</span>  *
<span class='line'>226</span>  * @type Object
<span class='line'>227</span>  * @return DN in the format as returned by PKIXCommon.parseDN()
<span class='line'>228</span>  */</span><span class="WHIT">
<span class='line'>229</span> </span><span class="NAME">DNEncoder.prototype.encode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.iterate</span><span class="PUNC">(</span><span class="STRN">"replace"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>231</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>232</span> 
<span class='line'>233</span> 
<span class='line'>234</span> 
<span class='line'>235</span> </span><span class="COMM">/**
<span class='line'>236</span>  * Validate DN mask against previously set reference objects
<span class='line'>237</span>  *
<span class='line'>238</span>  * DN objects can be set with setDN(name, {}). The minor key is validated against the list of
<span class='line'>239</span>  * valid RDN as defined in PKIXCommon.validRDN.
<span class='line'>240</span>  *
<span class='line'>241</span>  * Other objects can be set with setMap(), but only the key names in the map are relevant. If the
<span class='line'>242</span>  * object contains the property "any", then any minor keys are acceptable.
<span class='line'>243</span>  *
<span class='line'>244</span>  * The method will throw an exception if a key is invalid.
<span class='line'>245</span>  */</span><span class="WHIT">
<span class='line'>246</span> </span><span class="NAME">DNEncoder.prototype.validate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.iterate</span><span class="PUNC">(</span><span class="STRN">"check"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>249</span> 
<span class='line'>250</span> 
<span class='line'>251</span> 
<span class='line'>252</span> </span><span class="NAME">DNEncoder.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">DNEncoder</span><span class="PUNC">(</span><span class="STRN">"c=${issuer.c},o=${issuer.o},cn=ABC ${issuer.o}${servicerequest.commonName} DEF"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> 
<span class='line'>255</span> </span><span class="WHIT">	</span><span class="NAME">d.setDN</span><span class="PUNC">(</span><span class="STRN">"issuer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"c=UT,o=ACME,cn=ACME Root CA"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> 
<span class='line'>257</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">sr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">		</span><span class="NAME">commonName</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="STRN">"Hello"</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> 
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="NAME">d.setMap</span><span class="PUNC">(</span><span class="STRN">"servicerequest"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">sr</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> 
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="NAME">d.validate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.dnToString</span><span class="PUNC">(</span><span class="NAME">d.encode</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>266</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview A PKCS#10 generator class based on RFC5280
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/x509/PKIXCommon'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="COMM">/**
<span class='line'> 32</span>  * Create a PKCS#10 certificate request
<span class='line'> 33</span>  *
<span class='line'> 34</span>  * @class Class implementing a PKCS#10 certificate request
<span class='line'> 35</span>  * @constructor
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @param {Crypto} crypto the crypto provider to use for signing operations
<span class='line'> 38</span>  */</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PKCS10Generator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 43</span> 
<span class='line'> 44</span> </span><span class="NAME">exports.PKCS10Generator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS10Generator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> 
<span class='line'> 47</span> 
<span class='line'> 48</span> </span><span class="COMM">/**
<span class='line'> 49</span>  * Resets all internal state variables.
<span class='line'> 50</span>  *
<span class='line'> 51</span>  */</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="NAME">PKCS10Generator.prototype.reset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="NAME">this.attributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 56</span> 
<span class='line'> 57</span> 
<span class='line'> 58</span> 
<span class='line'> 59</span> </span><span class="COMM">/**
<span class='line'> 60</span>  * Sets the subject name.
<span class='line'> 61</span>  *
<span class='line'> 62</span>  * &lt;p>The subject name must be a JavaScript object containing the properties:&lt;/p>
<span class='line'> 63</span>  * &lt;ul>
<span class='line'> 64</span>  *  &lt;li>C - the country&lt;/li>
<span class='line'> 65</span>  *  &lt;li>O - the organization&lt;/li>
<span class='line'> 66</span>  *  &lt;li>OU - the organization unit&lt;/li>
<span class='line'> 67</span>  *  &lt;li>CN - the common name&lt;/li>
<span class='line'> 68</span>  * &lt;/ul>
<span class='line'> 69</span>  * &lt;p>Example:&lt;/p>
<span class='line'> 70</span>  * &lt;pre>
<span class='line'> 71</span>  *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
<span class='line'> 72</span>  * &lt;/pre>
<span class='line'> 73</span>  * @see PKIXCommon.encodeName()
<span class='line'> 74</span>  *
<span class='line'> 75</span>  * The subject can also be passed an already encoded ASN.1 structure
<span class='line'> 76</span>  *
<span class='line'> 77</span>  * @param {Object} subject the subject name
<span class='line'> 78</span>  */</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="NAME">PKCS10Generator.prototype.setSubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="NAME">this.subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 82</span> 
<span class='line'> 83</span> 
<span class='line'> 84</span> 
<span class='line'> 85</span> </span><span class="COMM">/**
<span class='line'> 86</span>  * Sets the subjects public key
<span class='line'> 87</span>  *
<span class='line'> 88</span>  * &lt;p>The methods accepts ECC and RSA Public Keys.&lt;/p>
<span class='line'> 89</span>  *
<span class='line'> 90</span>  * @param {Key} publicKey the subjects public key
<span class='line'> 91</span>  */</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="NAME">PKCS10Generator.prototype.setPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="NAME">this.publicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 95</span> 
<span class='line'> 96</span> 
<span class='line'> 97</span> 
<span class='line'> 98</span> </span><span class="COMM">/**
<span class='line'> 99</span>  * Sets the signature algorithm. Currently only Crypto.RSA is supported
<span class='line'>100</span>  *
<span class='line'>101</span>  * @param {Number} alg the signature algorithm, only Crypto.RSA supported
<span class='line'>102</span>  */</span><span class="WHIT">
<span class='line'>103</span> </span><span class="NAME">PKCS10Generator.prototype.setSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="NAME">this.signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>105</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> 
<span class='line'>109</span> </span><span class="COMM">/**
<span class='line'>110</span>  * Adds an extension to the certificate
<span class='line'>111</span>  *
<span class='line'>112</span>  * &lt;p>The structure is defined as:&lt;/p>
<span class='line'>113</span>  * &lt;pre>
<span class='line'>114</span>  *    Extension  ::=  SEQUENCE  {
<span class='line'>115</span>  *        extnID      OBJECT IDENTIFIER,
<span class='line'>116</span>  *        extnValue   OCTET STRING
<span class='line'>117</span>  *                    -- contains the DER encoding of an ASN.1 value
<span class='line'>118</span>  *                    -- corresponding to the extension type identified
<span class='line'>119</span>  *                    -- by extnID
<span class='line'>120</span>  *        }
<span class='line'>121</span>  *&lt;/pre>
<span class='line'>122</span>  * @param {String} extnID the extensions object identifier
<span class='line'>123</span>  * @param {ByteString} the extension value as ByteString
<span class='line'>124</span>  */</span><span class="WHIT">
<span class='line'>125</span> </span><span class="NAME">PKCS10Generator.prototype.addExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">extnID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extnValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extension"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnID"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">extnID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> 
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extnValue</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions.push</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>133</span> 
<span class='line'>134</span> 
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="COMM">/**
<span class='line'>137</span>  * Adds the key usage extension.
<span class='line'>138</span>  *
<span class='line'>139</span>  * &lt;p>The following flags are defined:&lt;/p>
<span class='line'>140</span>  * &lt;pre>
<span class='line'>141</span>  * PKCS10Generator.digitalSignature = 0x0080;
<span class='line'>142</span>  * PKCS10Generator.nonRepudiation   = 0x0040;
<span class='line'>143</span>  * PKCS10Generator.keyEncipherment  = 0x0020;
<span class='line'>144</span>  * PKCS10Generator.dataEncipherment = 0x0010;
<span class='line'>145</span>  * PKCS10Generator.keyAgreement     = 0x0008;
<span class='line'>146</span>  * PKCS10Generator.keyCertSign      = 0x0004;
<span class='line'>147</span>  * PKCS10Generator.cRLSign          = 0x0002;
<span class='line'>148</span>  * PKCS10Generator.encipherOnly     = 0x0001;
<span class='line'>149</span>  * PKCS10Generator.decipherOnly     = 0x8000;
<span class='line'>150</span>  * &lt;/pre>
<span class='line'>151</span>  * @param {Number} the key usage flags as combination of the flags defined above.
<span class='line'>152</span>  */</span><span class="WHIT">
<span class='line'>153</span> </span><span class="NAME">PKCS10Generator.prototype.addKeyUsageExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">flags</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.bitstringForInteger</span><span class="PUNC">(</span><span class="NAME">flags</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"2.5.29.15"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>157</span> 
<span class='line'>158</span> </span><span class="COMM">// Deprecated: Use PKIXCommon. instead</span><span class="WHIT">
<span class='line'>159</span> </span><span class="NAME">PKCS10Generator.digitalSignature</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0080</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="NAME">PKCS10Generator.nonRepudiation</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0040</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="NAME">PKCS10Generator.keyEncipherment</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0020</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="NAME">PKCS10Generator.dataEncipherment</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0010</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="NAME">PKCS10Generator.keyAgreement</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0008</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="NAME">PKCS10Generator.keyCertSign</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0004</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="NAME">PKCS10Generator.cRLSign</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0002</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="NAME">PKCS10Generator.encipherOnly</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0001</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="NAME">PKCS10Generator.decipherOnly</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x8000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> 
<span class='line'>169</span> 
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="COMM">/**
<span class='line'>172</span>  * Adds extended key usages
<span class='line'>173</span>  *
<span class='line'>174</span>  * @param {String[]} the list of extended key usage object identifier
<span class='line'>175</span>  */</span><span class="WHIT">
<span class='line'>176</span> </span><span class="NAME">PKCS10Generator.prototype.addExtendedKeyUsageExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyusages</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">keyusages.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">keyusages</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"id-ce-extKeyUsage"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> 
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="COMM">/**
<span class='line'>187</span>  * Adds the BasicConstraints extension.
<span class='line'>188</span>  *
<span class='line'>189</span>  * @param {Boolean} cA the certificate belongs to a CA
<span class='line'>190</span>  * @param {Number} pathLenConstraint the maximum number of subordinate CA certificates
<span class='line'>191</span>  */</span><span class="WHIT">
<span class='line'>192</span> </span><span class="NAME">PKCS10Generator.prototype.addBasicConstraintsExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pathLenConstraint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"BasicConstraints"</span><span class="PUNC">,</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>195</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BOOLEAN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"FF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pathLenConstraint</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">pathLenConstraint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"pathLenConstraint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"2.5.29.19"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>204</span> 
<span class='line'>205</span> 
<span class='line'>206</span> 
<span class='line'>207</span> </span><span class="COMM">/**
<span class='line'>208</span>  * Gets the subject name as TLV object
<span class='line'>209</span>  *
<span class='line'>210</span>  * @return the issuer RDNSequence
<span class='line'>211</span>  * @type ASN1
<span class='line'>212</span>  */</span><span class="WHIT">
<span class='line'>213</span> </span><span class="NAME">PKCS10Generator.prototype.getSubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.subject</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.subject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodeName</span><span class="PUNC">(</span><span class="NAME">this.subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>219</span> 
<span class='line'>220</span> 
<span class='line'>221</span> 
<span class='line'>222</span> </span><span class="COMM">/**
<span class='line'>223</span>  * Gets the subject's public key as TLV object
<span class='line'>224</span>  *
<span class='line'>225</span>  * @return the subject's public key info
<span class='line'>226</span>  * @type ASN1
<span class='line'>227</span>  */</span><span class="WHIT">
<span class='line'>228</span> </span><span class="NAME">PKCS10Generator.prototype.getSubjectPublicKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createRSASubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">this.publicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createECSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">this.publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.encodeECDomainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>234</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>235</span> 
<span class='line'>236</span> 
<span class='line'>237</span> 
<span class='line'>238</span> </span><span class="COMM">/**
<span class='line'>239</span>  * Gets the extension attribute as TLV object
<span class='line'>240</span>  *
<span class='line'>241</span>  * @return the certificate extensions
<span class='line'>242</span>  * @type ASN1
<span class='line'>243</span>  */</span><span class="WHIT">
<span class='line'>244</span> </span><span class="NAME">PKCS10Generator.prototype.getExtensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"1.2.840.113549 1 9 14"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SET</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">	</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="NAME">l</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>251</span> 
<span class='line'>252</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.extensions.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">		</span><span class="NAME">l.add</span><span class="PUNC">(</span><span class="NAME">this.extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>257</span> 
<span class='line'>258</span> 
<span class='line'>259</span> 
<span class='line'>260</span> </span><span class="COMM">/**
<span class='line'>261</span>  * Gets the attributes as TLV object
<span class='line'>262</span>  *
<span class='line'>263</span>  * @return the request attributes
<span class='line'>264</span>  * @type ASN1
<span class='line'>265</span>  */</span><span class="WHIT">
<span class='line'>266</span> </span><span class="NAME">PKCS10Generator.prototype.getAttributes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"attributes"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.extensions.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getExtensions</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>272</span> 
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.attributes.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.attributes</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>276</span> 
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>278</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>279</span> 
<span class='line'>280</span> 
<span class='line'>281</span> 
<span class='line'>282</span> </span><span class="COMM">/**
<span class='line'>283</span>  * Gets the part of the request that will be signed
<span class='line'>284</span>  *
<span class='line'>285</span>  * @return the TBSCertificate part
<span class='line'>286</span>  * @type ASN1
<span class='line'>287</span>  */</span><span class="WHIT">
<span class='line'>288</span> </span><span class="NAME">PKCS10Generator.prototype.getTbsRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"certificationRequestInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getSubject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getAttributes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>296</span> 
<span class='line'>297</span> 
<span class='line'>298</span> 
<span class='line'>299</span> </span><span class="COMM">/**
<span class='line'>300</span>  * Generates the certificate.
<span class='line'>301</span>  *
<span class='line'>302</span>  * @return the generated certificate
<span class='line'>303</span>  * @type ASN1
<span class='line'>304</span>  */</span><span class="WHIT">
<span class='line'>305</span> </span><span class="NAME">PKCS10Generator.prototype.generateCertificationRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"certificationRequest"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> 
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tbs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getTbsRequest</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">	</span><span class="NAME">request.add</span><span class="PUNC">(</span><span class="NAME">tbs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="NAME">request.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.encodeSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">this.signatureAlgorithm</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>311</span> 
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.signatureAlgorithm</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tbs.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	</span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>314</span> 
<span class='line'>315</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"signatureValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="NAME">request.add</span><span class="PUNC">(</span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> 
<span class='line'>318</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">request</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>320</span> 
<span class='line'>321</span> 
<span class='line'>322</span> 
<span class='line'>323</span> </span><span class="NAME">PKCS10Generator.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>324</span> 
<span class='line'>325</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> 
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="NAME">reqPrivateKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reqPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="NAME">reqPublicKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">	</span><span class="NAME">reqPublicKey.setSize</span><span class="PUNC">(</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> 
<span class='line'>334</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">reqPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">reqPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> 
<span class='line'>336</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PKCS10Generator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> 
<span class='line'>338</span> </span><span class="WHIT">	</span><span class="NAME">x.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">	</span><span class="NAME">x.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> 
<span class='line'>341</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">{</span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"UT"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"Utopia CA"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">OU</span><span class="PUNC">:</span><span class="STRN">"ACME Corporation"</span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"Joe Doe"</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>342</span> 
<span class='line'>343</span> </span><span class="WHIT">	</span><span class="NAME">x.setSubject</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>344</span> 
<span class='line'>345</span> </span><span class="WHIT">	</span><span class="NAME">x.setPublicKey</span><span class="PUNC">(</span><span class="NAME">reqPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> 
<span class='line'>347</span> </span><span class="WHIT">	</span><span class="NAME">x.addKeyUsageExtension</span><span class="PUNC">(</span><span class="WHIT">	</span><span class="NAME">PKIXCommon.digitalSignature</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">							</span><span class="NAME">PKIXCommon.keyCertSign</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">							</span><span class="NAME">PKIXCommon.cRLSign</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> 
<span class='line'>351</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x.generateCertificationRequest</span><span class="PUNC">(</span><span class="NAME">reqPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.mapFilename</span><span class="PUNC">(</span><span class="STRN">"cert.csr"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPSystem.USR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">	</span><span class="NAME">PKIXCommon.writeFileToDisk</span><span class="PUNC">(</span><span class="NAME">fn</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> 
<span class='line'>355</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>356</span> 
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>359</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Common classes and functions for PKIX
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> 
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="COMM">/**
<span class='line'> 30</span>  * Common functions and constants
<span class='line'> 31</span>  */</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="NAME">exports.PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 36</span> 
<span class='line'> 37</span> 
<span class='line'> 38</span> </span><span class="NAME">PKIXCommon.digitalSignature</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0080</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="NAME">PKIXCommon.nonRepudiation</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0040</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="NAME">PKIXCommon.keyEncipherment</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0020</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="NAME">PKIXCommon.dataEncipherment</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0010</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="NAME">PKIXCommon.keyAgreement</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0008</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="NAME">PKIXCommon.keyCertSign</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0004</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="NAME">PKIXCommon.cRLSign</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0002</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="NAME">PKIXCommon.encipherOnly</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0001</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="NAME">PKIXCommon.decipherOnly</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x8000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> 
<span class='line'> 48</span> 
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="COMM">/**
<span class='line'> 51</span>  * Convert integer to fixed length string with leading zeros.
<span class='line'> 52</span>  *
<span class='line'> 53</span>  * @private
<span class='line'> 54</span>  * @param {Number} value the value to convert to a string.
<span class='line'> 55</span>  * @param {Number} digits the number of digits in output string. Must be &lt;= 20.
<span class='line'> 56</span>  * @return the 0-padded string
<span class='line'> 57</span>  * @type String
<span class='line'> 58</span>  */</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="NAME">PKIXCommon.itos</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">digits</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 60</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Error</span><span class="PUNC">(</span><span class="STRN">"Digits must be &lt;= 20"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"0000000000000000000"</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">19</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">digits</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">str.length</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">str</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> </span><span class="COMM">/**
<span class='line'> 71</span>  * Convert date and time to UTC string with format YYMMDDHHMMSSZ.
<span class='line'> 72</span>  *
<span class='line'> 73</span>  * @param {Date} d the date object.
<span class='line'> 74</span>  * @return the date/time string.
<span class='line'> 75</span>  * @type String
<span class='line'> 76</span>  */</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="NAME">PKIXCommon.dtoUTC</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCFullYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">%</span><span class="WHIT"> </span><span class="NUMB">100</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCHours</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCMinutes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"Z"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 86</span> 
<span class='line'> 87</span> 
<span class='line'> 88</span> 
<span class='line'> 89</span> </span><span class="COMM">/**
<span class='line'> 90</span>  * Convert date and time to UTC string with format YYYYMMDDHHMMSSZ.
<span class='line'> 91</span>  *
<span class='line'> 92</span>  * @param {Date} d the date object.
<span class='line'> 93</span>  * @return the date/time string.
<span class='line'> 94</span>  * @type String
<span class='line'> 95</span>  */</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="NAME">PKIXCommon.dtoUTCFullYear</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> 	</span><span class="NAME">d.getUTCFullYear</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCMonth</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCDate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCHours</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCMinutes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.itos</span><span class="PUNC">(</span><span class="NAME">d.getUTCSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"Z"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">s</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>104</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>105</span> 
<span class='line'>106</span> 
<span class='line'>107</span> 
<span class='line'>108</span> </span><span class="COMM">/**
<span class='line'>109</span>  * Add the specified number of days to a date object
<span class='line'>110</span>  *
<span class='line'>111</span>  * @param {Date} d the date object
<span class='line'>112</span>  * @param {Number} days the number of days to add, may be negative
<span class='line'>113</span>  * @type Date
<span class='line'>114</span>  * @return a new Date object
<span class='line'>115</span>  */</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">PKIXCommon.addDays</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">days</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hour</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.getUTCHours</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">minute</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.getUTCMinutes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">second</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">d.getUTCSeconds</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="NAME">d</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="NAME">cd.setHours</span><span class="PUNC">(</span><span class="NUMB">12</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> 
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cd.getTime</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">	</span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">days</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">24</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">60</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">60</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NUMB">1000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">nd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="NAME">ts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>126</span> 
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="NAME">nd.setUTCHours</span><span class="PUNC">(</span><span class="NAME">hour</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>128</span> </span><span class="WHIT">	</span><span class="NAME">nd.setUTCMinutes</span><span class="PUNC">(</span><span class="NAME">minute</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="NAME">nd.setUTCSeconds</span><span class="PUNC">(</span><span class="NAME">second</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">nd</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>132</span> 
<span class='line'>133</span> 
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="COMM">/**
<span class='line'>136</span>  * Converts the integer value into a BIT STRING value.
<span class='line'>137</span>  * &lt;p>The function interprets the integer value as bitmap, where
<span class='line'>138</span>  * bit 0 is the most significant bit of the least significant byte.&lt;/p>
<span class='line'>139</span>  * &lt;p>The function adds the minimum number of bytes to the final bit string
<span class='line'>140</span>  * and encodes the "number of unused bits at the beginning.&lt;/p>
<span class='line'>141</span>  *
<span class='line'>142</span>  * @param {Number} val the value to convert
<span class='line'>143</span>  * @return the bit string
<span class='line'>144</span>  * @type ByteString
<span class='line'>145</span>  */</span><span class="WHIT">
<span class='line'>146</span> </span><span class="NAME">PKIXCommon.bitstringForInteger</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">val</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> 
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="COMM">// Encode starting with the least significant byte</span><span class="WHIT">
<span class='line'>151</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0xFF</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">b</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">		</span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">val</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>156</span> 
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="COMM">// Determine number of unused bits</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">8</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="PUNC">(</span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">		</span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">		</span><span class="NAME">b</span><span class="WHIT"> </span><span class="PUNC">>></span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>163</span> 
<span class='line'>164</span> </span><span class="WHIT">	</span><span class="NAME">bb.insert</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>166</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>167</span> 
<span class='line'>168</span> 
<span class='line'>169</span> 
<span class='line'>170</span> </span><span class="COMM">/**
<span class='line'>171</span>  * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
<span class='line'>172</span>  *
<span class='line'>173</span>  * This prevent interpretation of the integer representation if converted into
<span class='line'>174</span>  * a signed ASN1 INTEGER.
<span class='line'>175</span>  *
<span class='line'>176</span>  * @param {ByteString} value the value to convert
<span class='line'>177</span>  * @return the converted value
<span class='line'>178</span>  * @type ByteString
<span class='line'>179</span>  */</span><span class="WHIT">
<span class='line'>180</span> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> 
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0x80</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>194</span> 
<span class='line'>195</span> 
<span class='line'>196</span> 
<span class='line'>197</span> </span><span class="COMM">/**
<span class='line'>198</span>  * Removes leading zero byte.
<span class='line'>199</span>  *
<span class='line'>200</span>  * @param {ByteString} value the value to process
<span class='line'>201</span>  * @return the processed ByteString without leading zero byte
<span class='line'>202</span>  * @type ByteString
<span class='line'>203</span>  */</span><span class="WHIT">
<span class='line'>204</span> </span><span class="NAME">PKIXCommon.removeLeadingZeroBytes</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">value.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0x00</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">		</span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>211</span> 
<span class='line'>212</span> 
<span class='line'>213</span> 
<span class='line'>214</span> </span><span class="COMM">/**
<span class='line'>215</span>  * Encode PSS algorithm parameter
<span class='line'>216</span>  */</span><span class="WHIT">
<span class='line'>217</span> </span><span class="NAME">PKIXCommon.encodePSSAlgorithmParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">hashAlgorithm</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">saltLength</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">param</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">  </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>219</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"hashAlgorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"sha256Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashAlgorithm</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"maskGenAlgorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA1</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"mgf1SHA256Identifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>225</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"pkcs-1 8"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="COMM">// id-mgf1</span><span class="WHIT">
<span class='line'>226</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hashAlgorithm</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"hashAlgorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA2</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>230</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"saltLength"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">saltLength</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>231</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> 
<span class='line'>233</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">param</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>235</span> 
<span class='line'>236</span> 
<span class='line'>237</span> 
<span class='line'>238</span> </span><span class="COMM">/**
<span class='line'>239</span>  * Gets the signature algorithm TLV object
<span class='line'>240</span>  *
<span class='line'>241</span>  * @return the signature algorithm object
<span class='line'>242</span>  * @type ASN1
<span class='line'>243</span>  */</span><span class="WHIT">
<span class='line'>244</span> </span><span class="NAME">PKIXCommon.encodeSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"signatureAlgorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> 
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha1WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>249</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha256WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA384</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha384WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA512</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha512WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.encodePSSAlgorithmParameter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA384</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.encodePSSAlgorithmParameter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">48</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA512</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>269</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.encodePSSAlgorithmParameter</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>272</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>274</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA224"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>275</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>276</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>277</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signatureAlgorithm</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid algorithm"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> 
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>286</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>287</span> 
<span class='line'>288</span> 
<span class='line'>289</span> 
<span class='line'>290</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>291</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha1WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha256WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha384WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"sha512WithRSAEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>297</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA224"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>299</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"ecdsa-with-SHA512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Crypto.ECDSA_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> 
<span class='line'>302</span> 
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="COMM">/**
<span class='line'>305</span>  * Return Crypto.x constant for given signatureAlgorithm
<span class='line'>306</span>  *
<span class='line'>307</span>  * @param {ByteString} signatureAlgorithm the algorithm
<span class='line'>308</span>  * @param {ByteString} param the parameter (optional)
<span class='line'>309</span>  * @type Number
<span class='line'>310</span>  * @return the Crypto.X constant
<span class='line'>311</span>  */</span><span class="WHIT">
<span class='line'>312</span> </span><span class="NAME">PKIXCommon.decodeSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">param</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signatureAlgorithm.equals</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">param</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>317</span> 
<span class='line'>318</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">param</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>319</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hashAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">a.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">o</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// hashAlgorithm</span><span class="WHIT">
<span class='line'>324</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> </span><span class="WHIT">				</span><span class="NAME">hashAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.decodeHashAlgorithm</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>326</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// MGF</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">				</span><span class="COMM">// Check MGF</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">m</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">m.equals</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"pkcs-1 8"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>330</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unsupported MGF"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>332</span> 
<span class='line'>333</span> </span><span class="WHIT">				</span><span class="COMM">// Check hashAlgorithm</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.decodeHashAlgorithm</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hashAlgorithm</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">					</span><span class="NAME">hashAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>338</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">hashAlgorithm</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>339</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Signature hash algorithm and MGF hash algorithm must be the same"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// saltLength</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">				</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">hashAlgorithm</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>343</span> </span><span class="WHIT">					</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_224</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>344</span> </span><span class="WHIT">						</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">expectedSalt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">28</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>345</span> </span><span class="WHIT">						</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">					</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT">						</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">expectedSalt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">32</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">						</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">					</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">						</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">expectedSalt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">48</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">						</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">					</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">						</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">expectedSalt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> </span><span class="WHIT">						</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">					</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">					</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">						</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">expectedSalt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">20</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>359</span> 
<span class='line'>360</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">salt</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">salt</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">expectedSalt</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"saltLength ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">salt</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">") must match hash size ("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">expectedSalt</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">o.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0xA3</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// trailerField</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">trailerField</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">o.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.toUnsigned</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">trailerField</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"trailerField value must be 1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>371</span> 
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">hashAlgorithm</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_224</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>374</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">			</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>382</span> </span><span class="WHIT">			</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>383</span> </span><span class="WHIT">				</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>386</span> 
<span class='line'>387</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.algIdMap</span><span class="PUNC">[</span><span class="NAME">signatureAlgorithm.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>390</span> 
<span class='line'>391</span> 
<span class='line'>392</span> </span><span class="COMM">/**
<span class='line'>393</span>  * Return Crypto.SHA_x constant for given OID
<span class='line'>394</span>  *
<span class='line'>395</span>  * @param {ByteString} oid the hash OID
<span class='line'>396</span>  * @type Number
<span class='line'>397</span>  * @return the Crypto.SHA_x constant
<span class='line'>398</span>  */</span><span class="WHIT">
<span class='line'>399</span> </span><span class="NAME">PKIXCommon.decodeHashAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">	</span><span class="COMM">//var oid = algorithmId.get(0).get(0).value.toString(HEX);</span><span class="WHIT">
<span class='line'>401</span> 
<span class='line'>402</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">oid.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha224"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>406</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_224</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>407</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>408</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_256</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>410</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_384</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.SHA_512</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_MECH</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Invalid algorithm"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>416</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>417</span> 
<span class='line'>418</span> 
<span class='line'>419</span> 
<span class='line'>420</span> </span><span class="COMM">/**
<span class='line'>421</span>  * Return Crypto.RSA or Crypto.EC depending on signature algorithm
<span class='line'>422</span>  *
<span class='line'>423</span>  * @param {Number} alg signature algorithm (one of Crypto.X)
<span class='line'>424</span>  * @type Number
<span class='line'>425</span>  * @return either Crypto.RSA or Crypto.EC
<span class='line'>426</span>  */</span><span class="WHIT">
<span class='line'>427</span> </span><span class="NAME">PKIXCommon.keyTypeForAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>428</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT">     </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA384</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_SHA512</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA224</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA256</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA384</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">		</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA_PSS_SHA512</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.RSA</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">Crypto.EC</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>441</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>442</span> 
<span class='line'>443</span> 
<span class='line'>444</span> 
<span class='line'>445</span> </span><span class="COMM">/**
<span class='line'>446</span>  * Create tailored AlgorithmIdentifier that restricts usage of the public key.
<span class='line'>447</span>  *
<span class='line'>448</span>  * @param{String} restriction The restriction to apply.
<span class='line'>449</span>  * @type ASN1
<span class='line'>450</span>  * @return the tailored AlgorithmIdentifier;
<span class='line'>451</span>  */</span><span class="WHIT">
<span class='line'>452</span> </span><span class="NAME">PKIXCommon.restrictedPublicKeyAlgorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">restriction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">restriction</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"PSS-SHA1"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puboid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"PSS-SHA224"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>459</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puboid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha224"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"PSS-SHA256"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puboid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha256"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>466</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"PSS-SHA384"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puboid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>468</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha384"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>469</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>470</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"PSS-SHA512"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puboid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-RSASSA-PSS"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-sha512"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>473</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>474</span> </span><span class="WHIT">		</span><span class="KEYW">case</span><span class="WHIT"> </span><span class="STRN">"OEAP"</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT">		</span><span class="KEYW">default</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unknown public key restriction "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.policy.restrictPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>478</span> 
<span class='line'>479</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">info</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodePSSAlgorithmParameter</span><span class="PUNC">(</span><span class="NAME">hash</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puboid</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">		</span><span class="NAME">info</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>484</span> 
<span class='line'>485</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>486</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>487</span> 
<span class='line'>488</span> 
<span class='line'>489</span> 
<span class='line'>490</span> </span><span class="COMM">/**
<span class='line'>491</span>  * Encode EC Parameter for inclusion in the AlgorithmIdentifier structure.
<span class='line'>492</span>  *
<span class='line'>493</span>  * @param{Key} publicKey the public key.
<span class='line'>494</span>  * @type ASN1
<span class='line'>495</span>  * @return the encoded ECParameter.
<span class='line'>496</span>  */</span><span class="WHIT">
<span class='line'>497</span> </span><span class="NAME">PKIXCommon.encodeECParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">		</span><span class="COMM">// Make sure curve components are available if only curve oid is defined</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT">		</span><span class="NAME">publicKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ecParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">		</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"ecParameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"version"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fieldID"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fieldType"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"prime-field"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"prime"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>507</span> </span><span class="WHIT">					</span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_P</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>508</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>509</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"curve"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"a"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_A</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>511</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"b"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_B</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>512</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>513</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"base"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>514</span> </span><span class="WHIT">					</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"04"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_GY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"order"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT">				</span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_N</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT">		</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>518</span> 
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cofactor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_H</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">cofactor.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cofactor.byteAt</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">cofactor.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>523</span> </span><span class="WHIT">		</span><span class="NAME">ecParameter.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cofactor"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cofactor.bytes</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">ecParameter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>526</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>527</span> 
<span class='line'>528</span> 
<span class='line'>529</span> 
<span class='line'>530</span> </span><span class="COMM">/**
<span class='line'>531</span>  * Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.
<span class='line'>532</span>  *
<span class='line'>533</span>  * &lt;p>The structure is defined as:&lt;/p>
<span class='line'>534</span>  * &lt;pre>
<span class='line'>535</span>  *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
<span class='line'>536</span>  *		algorithm            AlgorithmIdentifier,
<span class='line'>537</span>  *		subjectPublicKey     BIT STRING  }
<span class='line'>538</span>  *
<span class='line'>539</span>  *	AlgorithmIdentifier  ::=  SEQUENCE  {
<span class='line'>540</span>  *		algorithm               OBJECT IDENTIFIER,
<span class='line'>541</span>  *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
<span class='line'>542</span>  *
<span class='line'>543</span>  *	id-ecPublicKey OBJECT IDENTIFIER ::= {
<span class='line'>544</span>  *		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
<span class='line'>545</span>  *
<span class='line'>546</span>  *	ECParameters ::= CHOICE {
<span class='line'>547</span>  *		namedCurve         OBJECT IDENTIFIER,
<span class='line'>548</span>  *		implicitCurve      NULL,
<span class='line'>549</span>  *		specifiedCurve     SpecifiedECDomain }
<span class='line'>550</span>  * &lt;/pre>
<span class='line'>551</span>  * @return the subjectPublicKey TLV structure
<span class='line'>552</span>  * @type ASN1
<span class='line'>553</span>  */</span><span class="WHIT">
<span class='line'>554</span> </span><span class="NAME">PKIXCommon.createECSubjectPublicKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodeECDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>555</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectPublicKeyInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>556</span> 
<span class='line'>557</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey.algorithmIdentifier</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">algorithm</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>559</span> </span><span class="WHIT">		</span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>560</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"id-ecPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>561</span> 
<span class='line'>562</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">encodeECDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>564</span> </span><span class="WHIT">			</span><span class="NAME">algorithm.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.encodeECParameter</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>565</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">			</span><span class="NAME">algorithm.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>568</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>569</span> 
<span class='line'>570</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">algorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span> 
<span class='line'>572</span> </span><span class="WHIT">	</span><span class="COMM">// Prefix a 00 to form correct bitstring</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">	</span><span class="COMM">// Prefix a 04 to indicate uncompressed format</span><span class="WHIT">
<span class='line'>574</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0004"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>575</span> </span><span class="WHIT">	</span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keybin.concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>576</span> </span><span class="WHIT">	</span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keybin.concat</span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_QY</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>577</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> 
<span class='line'>579</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>581</span> 
<span class='line'>582</span> 
<span class='line'>583</span> 
<span class='line'>584</span> </span><span class="COMM">/**
<span class='line'>585</span>  * Creates the RSA Public Key as subjectPublicKeyInfo TLV structure object.
<span class='line'>586</span>  *
<span class='line'>587</span>  * &lt;p>The structure is defined as:&lt;/p>
<span class='line'>588</span>  * &lt;pre>
<span class='line'>589</span>  *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
<span class='line'>590</span>  *		algorithm            AlgorithmIdentifier,
<span class='line'>591</span>  *		subjectPublicKey     BIT STRING  }
<span class='line'>592</span>  *
<span class='line'>593</span>  *	AlgorithmIdentifier  ::=  SEQUENCE  {
<span class='line'>594</span>  *		algorithm               OBJECT IDENTIFIER,
<span class='line'>595</span>  *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
<span class='line'>596</span>  *
<span class='line'>597</span>  *	pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }
<span class='line'>598</span>  *
<span class='line'>599</span>  *	rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}
<span class='line'>600</span>  *
<span class='line'>601</span>  *	RSAPublicKey ::= SEQUENCE {
<span class='line'>602</span>  *		modulus            INTEGER,    -- n
<span class='line'>603</span>  *		publicExponent     INTEGER  }  -- e
<span class='line'>604</span>  * &lt;/pre>
<span class='line'>605</span>  *
<span class='line'>606</span>  * @return the subjectPublicKey TLV structure
<span class='line'>607</span>  * @type ASN1
<span class='line'>608</span>  */</span><span class="WHIT">
<span class='line'>609</span> </span><span class="NAME">PKIXCommon.createRSASubjectPublicKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>610</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectPublicKeyInfo"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>611</span> 
<span class='line'>612</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey.algorithmIdentifier</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>613</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">algorithm</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>614</span> </span><span class="WHIT">		</span><span class="NAME">algorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>615</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"algorithm"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"rsaEncryption"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>616</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"parameters"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.NULL</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">""</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>617</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>618</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>619</span> 
<span class='line'>620</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">algorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>621</span> </span><span class="WHIT">	</span><span class="COMM">// Prefix a 00 to form correct bitstring</span><span class="WHIT">
<span class='line'>622</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>623</span> 
<span class='line'>624</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">modulus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>625</span> </span><span class="WHIT">	</span><span class="NAME">modulus</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">modulus</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>626</span> 
<span class='line'>627</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">exponent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.EXPONENT</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>628</span> </span><span class="WHIT">	</span><span class="NAME">exponent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">exponent</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>629</span> 
<span class='line'>630</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rsapub</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"RSAPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>631</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"modulus"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">modulus</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>632</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"publicKeyExponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">exponent</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>633</span> 
<span class='line'>634</span> </span><span class="WHIT">	</span><span class="NAME">keybin</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keybin.concat</span><span class="PUNC">(</span><span class="NAME">rsapub.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>635</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectPublicKey"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keybin</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>636</span> 
<span class='line'>637</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>638</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>639</span> 
<span class='line'>640</span> 
<span class='line'>641</span> 
<span class='line'>642</span> </span><span class="COMM">/**
<span class='line'>643</span>  * Determine key identifier according to RFC5280 using SHA-1 over the SubjectPublicKeyInfo
<span class='line'>644</span>  *
<span class='line'>645</span>  * @param {Key} publicKey the public key
<span class='line'>646</span>  * @param {Boolean} encodeECDomainParameter true to include domain parameter in SPKI of EC key
<span class='line'>647</span>  */</span><span class="WHIT">
<span class='line'>648</span> </span><span class="NAME">PKIXCommon.determineKeyIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodeECDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>649</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">encodeECDomainParameter</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>650</span> </span><span class="WHIT">		</span><span class="NAME">encodeECDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>651</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>652</span> 
<span class='line'>653</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spki</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>654</span> 
<span class='line'>655</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>656</span> </span><span class="WHIT">		</span><span class="NAME">spki</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createRSASubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>657</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>658</span> </span><span class="WHIT">		</span><span class="NAME">spki</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createECSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">encodeECDomainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>659</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>660</span> 
<span class='line'>661</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">spki.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>662</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>663</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>664</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>665</span> 
<span class='line'>666</span> 
<span class='line'>667</span> 
<span class='line'>668</span> </span><span class="COMM">/**
<span class='line'>669</span>  * Creates a relative distinguished name component.
<span class='line'>670</span>  *
<span class='line'>671</span>  * &lt;p>The structure is defined as:&lt;/p>
<span class='line'>672</span>  * &lt;pre>
<span class='line'>673</span>  *	RelativeDistinguishedName ::=
<span class='line'>674</span>  *		SET SIZE (1..MAX) OF AttributeTypeAndValue
<span class='line'>675</span>  *
<span class='line'>676</span>  *	AttributeTypeAndValue ::= SEQUENCE {
<span class='line'>677</span>  *		type     AttributeType,
<span class='line'>678</span>  *		value    AttributeValue }
<span class='line'>679</span>  *
<span class='line'>680</span>  *	AttributeType ::= OBJECT IDENTIFIER
<span class='line'>681</span>  *
<span class='line'>682</span>  *	AttributeValue ::= ANY -- DEFINED BY AttributeType
<span class='line'>683</span>  *
<span class='line'>684</span>  *	DirectoryString ::= CHOICE {
<span class='line'>685</span>  *		teletexString           TeletexString (SIZE (1..MAX)),
<span class='line'>686</span>  *		printableString         PrintableString (SIZE (1..MAX)),
<span class='line'>687</span>  *		universalString         UniversalString (SIZE (1..MAX)),
<span class='line'>688</span>  *		utf8String              UTF8String (SIZE (1..MAX)),
<span class='line'>689</span>  *		bmpString               BMPString (SIZE (1..MAX)) }
<span class='line'>690</span>  *&lt;/pre>
<span class='line'>691</span>  *
<span class='line'>692</span>  * @param {String} name the components name
<span class='line'>693</span>  * @param {String} oid the oid for the RDN
<span class='line'>694</span>  * @param {ASN1} value the value object
<span class='line'>695</span>  * @return the
<span class='line'>696</span>  */</span><span class="WHIT">
<span class='line'>697</span> </span><span class="NAME">PKIXCommon.makeRDN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>698</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SET</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>699</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>700</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>701</span> </span><span class="WHIT">					</span><span class="NAME">value</span><span class="WHIT">
<span class='line'>702</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>703</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>704</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>705</span> 
<span class='line'>706</span> 
<span class='line'>707</span> 
<span class='line'>708</span> </span><span class="COMM">/**
<span class='line'>709</span>  * Adds names from the name object to the RDNSequence.
<span class='line'>710</span>  *
<span class='line'>711</span>  * @param {ASN1} t the sequence object
<span class='line'>712</span>  * @param {Object} name the name object
<span class='line'>713</span>  */</span><span class="WHIT">
<span class='line'>714</span> </span><span class="NAME">PKIXCommon.addNames</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>715</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.C</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>716</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"country"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-countryName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.PrintableString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.C</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>717</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>718</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.ST</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>719</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"stateOrProvinceName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-stateOrProvinceName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.ST</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>720</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>721</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.O</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>722</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"organization"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-organizationName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.O</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>723</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>724</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.OU</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>725</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"organizationalUnit"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-organizationalUnitName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.OU</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>726</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>727</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.S</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>728</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"stateOrProvince"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-stateOrProvinceName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.S</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>729</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>730</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.L</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>731</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"locality"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-localityName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.L</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>732</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>733</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.DC</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>734</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"domainComponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-domainComponent"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.DC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>735</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>736</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.T</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>737</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"title"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-title"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.T</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>738</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>739</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.G</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>740</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"givenName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-givenName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.G</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>741</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>742</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.SN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>743</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"surname"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-surname"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.SN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>744</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>745</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.CN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>746</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"commonName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-commonName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.CN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>747</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>748</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.SERIALNUMBER</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>749</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"serialNumber"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-serialNumber"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.SERIALNUMBER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>750</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>751</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.DNQ</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>752</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"dnQualifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-at-dnQualifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.DNQ</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>753</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>754</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.E</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>755</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"emailAddress"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-emailAddress"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.IA5String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.E</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>756</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>757</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">name.UID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>758</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.makeRDN</span><span class="PUNC">(</span><span class="STRN">"userId"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-userId"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">name.UID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>759</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>760</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>761</span> 
<span class='line'>762</span> 
<span class='line'>763</span> 
<span class='line'>764</span> </span><span class="NAME">PKIXCommon.validRDN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="WHIT"> </span><span class="STRN">"C"</span><span class="PUNC">,</span><span class="STRN">"ST"</span><span class="PUNC">,</span><span class="STRN">"L"</span><span class="PUNC">,</span><span class="STRN">"O"</span><span class="PUNC">,</span><span class="STRN">"OU"</span><span class="PUNC">,</span><span class="STRN">"S"</span><span class="PUNC">,</span><span class="STRN">"DC"</span><span class="PUNC">,</span><span class="STRN">"T"</span><span class="PUNC">,</span><span class="STRN">"G"</span><span class="PUNC">,</span><span class="STRN">"SN"</span><span class="PUNC">,</span><span class="STRN">"PSEUDONYM"</span><span class="PUNC">,</span><span class="STRN">"CN"</span><span class="PUNC">,</span><span class="STRN">"SERIALNUMBER"</span><span class="PUNC">,</span><span class="STRN">"DNQ"</span><span class="PUNC">,</span><span class="STRN">"E"</span><span class="PUNC">,</span><span class="STRN">"UID"</span><span class="WHIT"> </span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>765</span> 
<span class='line'>766</span> </span><span class="COMM">/**
<span class='line'>767</span>  * Gets the dn as TLV object
<span class='line'>768</span>  *
<span class='line'>769</span>  * &lt;p>This function support two format for names&lt;/p>
<span class='line'>770</span>  * &lt;pre>
<span class='line'>771</span>  *  var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
<span class='line'>772</span>  * or
<span class='line'>773</span>  *  var issuer = [ { C:"UT"}, { O:"ACME Corporation" }, { CN:"Test-CA"} ];
<span class='line'>774</span>  * &lt;/pre>
<span class='line'>775</span>  *
<span class='line'>776</span>  * &lt;p>It supports the following RDNs:&lt;/p>
<span class='line'>777</span>  * &lt;ul>
<span class='line'>778</span>  * &lt;li>C - country&lt;/li>
<span class='line'>779</span>  * &lt;li>ST - state&lt;/li>
<span class='line'>780</span>  * &lt;li>O - organization&lt;/li>
<span class='line'>781</span>  * &lt;li>OU - organizational unit&lt;/li>
<span class='line'>782</span>  * &lt;li>S - state or province&lt;/li>
<span class='line'>783</span>  * &lt;li>L - locality&lt;/li>
<span class='line'>784</span>  * &lt;li>DC - domain component&lt;/li>
<span class='line'>785</span>  * &lt;li>T - title&lt;/li>
<span class='line'>786</span>  * &lt;li>G - given name&lt;/li>
<span class='line'>787</span>  * &lt;li>SN - surname&lt;/li>
<span class='line'>788</span>  * &lt;li>CN - common name&lt;/li>
<span class='line'>789</span>  * &lt;li>SERIALNUMBER - serial number&lt;/li>
<span class='line'>790</span>  * &lt;li>DNQ - domain name qualifier&lt;/li>
<span class='line'>791</span>  * &lt;li>E - e-mail address&lt;/li>
<span class='line'>792</span>  * &lt;li>UID - user Id&lt;/li>
<span class='line'>793</span>  * &lt;p>The first format sorts the RDS in the sequence C,ST,L,O,OU,S,DC,T,G,SN,PSEUDONYM,CN,SERIALNUMBER,DNQ,E,UID&lt;/p>
<span class='line'>794</span>  * &lt;/ul>
<span class='line'>795</span>  * @param {Object} name the name object
<span class='line'>796</span>  * @return the RDNSequence
<span class='line'>797</span>  * @type ASN1
<span class='line'>798</span>  */</span><span class="WHIT">
<span class='line'>799</span> </span><span class="NAME">PKIXCommon.encodeName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>800</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subject"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>801</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">name.C</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>802</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">name.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>803</span> </span><span class="WHIT">			</span><span class="NAME">PKIXCommon.addNames</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>804</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>805</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>806</span> </span><span class="WHIT">		</span><span class="NAME">PKIXCommon.addNames</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>807</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>808</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>809</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>810</span> 
<span class='line'>811</span> 
<span class='line'>812</span> 
<span class='line'>813</span> </span><span class="COMM">/**
<span class='line'>814</span>  * Return the value of the last RDN
<span class='line'>815</span>  *
<span class='line'>816</span>  * @param {Object[]} dn the dn array
<span class='line'>817</span>  * @type String
<span class='line'>818</span>  * @return the value of the last RDN
<span class='line'>819</span>  */</span><span class="WHIT">
<span class='line'>820</span> </span><span class="NAME">PKIXCommon.makeName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">rdnlist</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>821</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rdnlist.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>822</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>823</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>824</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">l</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rdnlist</span><span class="PUNC">[</span><span class="NAME">rdnlist.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>825</span> 
<span class='line'>826</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>827</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">l</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>828</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>829</span> 
<span class='line'>830</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>831</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>832</span> 
<span class='line'>833</span> 
<span class='line'>834</span> 
<span class='line'>835</span> </span><span class="NAME">PKIXCommon.parseDN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>836</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">dn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter dn must be string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>837</span> 
<span class='line'>838</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">e</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">dn.split</span><span class="PUNC">(</span><span class="STRN">","</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>839</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rdnlist</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>840</span> 
<span class='line'>841</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">e.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>842</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">p</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"="</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>843</span> 
<span class='line'>844</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p.length</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>845</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Missing '=' in RDN "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>846</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>847</span> 
<span class='line'>848</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">p.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>849</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Too many '=' in RDN "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>850</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>851</span> 
<span class='line'>852</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toUpperCase</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>853</span> 
<span class='line'>854</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">key.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>855</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Key in RDN "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">e</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" can't be empty"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>856</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>857</span> 
<span class='line'>858</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">PKIXCommon.validRDN.indexOf</span><span class="PUNC">(</span><span class="NAME">key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>859</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" is not a supported RDN (Valid RDNs are "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.validRDN</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>860</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>861</span> 
<span class='line'>862</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">value</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">p</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">trim</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>863</span> 
<span class='line'>864</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">value.length</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>865</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Value for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">key</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" can't be empty"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>866</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>867</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">rdn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>868</span> </span><span class="WHIT">		</span><span class="NAME">rdn</span><span class="PUNC">[</span><span class="NAME">key</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">value</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>869</span> </span><span class="WHIT">		</span><span class="NAME">rdnlist.push</span><span class="PUNC">(</span><span class="NAME">rdn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>870</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>871</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">rdnlist</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>872</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>873</span> 
<span class='line'>874</span> 
<span class='line'>875</span> 
<span class='line'>876</span> </span><span class="COMM">/**
<span class='line'>877</span>  * Convert a DN parsed with parseDN() back into the string format
<span class='line'>878</span>  *
<span class='line'>879</span>  * @param {Object[]} dn the dn array
<span class='line'>880</span>  * @type String
<span class='line'>881</span>  * @return the DN in string format
<span class='line'>882</span>  */</span><span class="WHIT">
<span class='line'>883</span> </span><span class="NAME">PKIXCommon.dnToString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">dn</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>884</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>885</span> 
<span class='line'>886</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">dn.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>887</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>888</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>889</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>890</span> 
<span class='line'>891</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>892</span> </span><span class="WHIT">			</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">j</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>893</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>894</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>895</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>896</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>897</span> 
<span class='line'>898</span> 
<span class='line'>899</span> 
<span class='line'>900</span> </span><span class="NAME">PKIXCommon.findRDN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">rdnlist</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">c</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>901</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">rdnlist.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>902</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">v</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rdnlist</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NAME">c</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>903</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">v</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>904</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">v</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>905</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>906</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>907</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>908</span> 
<span class='line'>909</span> 
<span class='line'>910</span> 
<span class='line'>911</span> </span><span class="NAME">PKIXCommon.countryNames</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>912</span> </span><span class="NAME">AF</span><span class="PUNC">:</span><span class="STRN">"Afghanistan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>913</span> </span><span class="NAME">AX</span><span class="PUNC">:</span><span class="STRN">"Aeland Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>914</span> </span><span class="NAME">AL</span><span class="PUNC">:</span><span class="STRN">"Albania"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>915</span> </span><span class="NAME">DZ</span><span class="PUNC">:</span><span class="STRN">"Algeria"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>916</span> </span><span class="NAME">AS</span><span class="PUNC">:</span><span class="STRN">"American Samoa"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>917</span> </span><span class="NAME">AD</span><span class="PUNC">:</span><span class="STRN">"Andorra"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>918</span> </span><span class="NAME">AO</span><span class="PUNC">:</span><span class="STRN">"Angola"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>919</span> </span><span class="NAME">AI</span><span class="PUNC">:</span><span class="STRN">"Anguilla"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>920</span> </span><span class="NAME">AQ</span><span class="PUNC">:</span><span class="STRN">"Antarctica"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>921</span> </span><span class="NAME">AG</span><span class="PUNC">:</span><span class="STRN">"Antigua and Barbuda"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>922</span> </span><span class="NAME">AR</span><span class="PUNC">:</span><span class="STRN">"Argentina"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>923</span> </span><span class="NAME">AM</span><span class="PUNC">:</span><span class="STRN">"Armenia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>924</span> </span><span class="NAME">AW</span><span class="PUNC">:</span><span class="STRN">"Aruba"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>925</span> </span><span class="NAME">AU</span><span class="PUNC">:</span><span class="STRN">"Australia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>926</span> </span><span class="NAME">AT</span><span class="PUNC">:</span><span class="STRN">"Austria"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>927</span> </span><span class="NAME">AZ</span><span class="PUNC">:</span><span class="STRN">"Azerbaijan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>928</span> </span><span class="NAME">BS</span><span class="PUNC">:</span><span class="STRN">"Bahamas"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>929</span> </span><span class="NAME">BH</span><span class="PUNC">:</span><span class="STRN">"Bahrain"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>930</span> </span><span class="NAME">BD</span><span class="PUNC">:</span><span class="STRN">"Bangladesh"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>931</span> </span><span class="NAME">BB</span><span class="PUNC">:</span><span class="STRN">"Barbados"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>932</span> </span><span class="NAME">BY</span><span class="PUNC">:</span><span class="STRN">"Belarus"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>933</span> </span><span class="NAME">BE</span><span class="PUNC">:</span><span class="STRN">"Belgium"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>934</span> </span><span class="NAME">BZ</span><span class="PUNC">:</span><span class="STRN">"Belize"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>935</span> </span><span class="NAME">BJ</span><span class="PUNC">:</span><span class="STRN">"Benin"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>936</span> </span><span class="NAME">BM</span><span class="PUNC">:</span><span class="STRN">"Bermuda"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>937</span> </span><span class="NAME">BT</span><span class="PUNC">:</span><span class="STRN">"Bhutan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>938</span> </span><span class="NAME">BO</span><span class="PUNC">:</span><span class="STRN">"Bolivia, Plurinational State of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>939</span> </span><span class="NAME">BQ</span><span class="PUNC">:</span><span class="STRN">"Bonaire, Sint Eustatius and Saba"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>940</span> </span><span class="NAME">BA</span><span class="PUNC">:</span><span class="STRN">"Bosnia and Herzegovina"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>941</span> </span><span class="NAME">BW</span><span class="PUNC">:</span><span class="STRN">"Botswana"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>942</span> </span><span class="NAME">BV</span><span class="PUNC">:</span><span class="STRN">"Bouvet Island"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>943</span> </span><span class="NAME">BR</span><span class="PUNC">:</span><span class="STRN">"Brazil"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>944</span> </span><span class="NAME">IO</span><span class="PUNC">:</span><span class="STRN">"British Indian Ocean Territory"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>945</span> </span><span class="NAME">BN</span><span class="PUNC">:</span><span class="STRN">"Brunei Darussalam"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>946</span> </span><span class="NAME">BG</span><span class="PUNC">:</span><span class="STRN">"Bulgaria"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>947</span> </span><span class="NAME">BF</span><span class="PUNC">:</span><span class="STRN">"Burkina Faso"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>948</span> </span><span class="NAME">BI</span><span class="PUNC">:</span><span class="STRN">"Burundi"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>949</span> </span><span class="NAME">KH</span><span class="PUNC">:</span><span class="STRN">"Cambodia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>950</span> </span><span class="NAME">CM</span><span class="PUNC">:</span><span class="STRN">"Cameroon"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>951</span> </span><span class="NAME">CA</span><span class="PUNC">:</span><span class="STRN">"Canada"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>952</span> </span><span class="NAME">CV</span><span class="PUNC">:</span><span class="STRN">"Cape Verde"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>953</span> </span><span class="NAME">KY</span><span class="PUNC">:</span><span class="STRN">"Cayman Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>954</span> </span><span class="NAME">CF</span><span class="PUNC">:</span><span class="STRN">"Central African Republic"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>955</span> </span><span class="NAME">TD</span><span class="PUNC">:</span><span class="STRN">"Chad"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>956</span> </span><span class="NAME">CL</span><span class="PUNC">:</span><span class="STRN">"Chile"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>957</span> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"China"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>958</span> </span><span class="NAME">CX</span><span class="PUNC">:</span><span class="STRN">"Christmas Island"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>959</span> </span><span class="NAME">CC</span><span class="PUNC">:</span><span class="STRN">"Cocos (Keeling) Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>960</span> </span><span class="NAME">CO</span><span class="PUNC">:</span><span class="STRN">"Colombia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>961</span> </span><span class="NAME">KM</span><span class="PUNC">:</span><span class="STRN">"Comoros"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>962</span> </span><span class="NAME">CG</span><span class="PUNC">:</span><span class="STRN">"Congo"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>963</span> </span><span class="NAME">CD</span><span class="PUNC">:</span><span class="STRN">"Congo, the Democratic Republic of the"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>964</span> </span><span class="NAME">CK</span><span class="PUNC">:</span><span class="STRN">"Cook Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>965</span> </span><span class="NAME">CR</span><span class="PUNC">:</span><span class="STRN">"Costa Rica"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>966</span> </span><span class="NAME">CI</span><span class="PUNC">:</span><span class="STRN">"Cote d'Ivoire"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>967</span> </span><span class="NAME">HR</span><span class="PUNC">:</span><span class="STRN">"Croatia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>968</span> </span><span class="NAME">CU</span><span class="PUNC">:</span><span class="STRN">"Cuba"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>969</span> </span><span class="NAME">CW</span><span class="PUNC">:</span><span class="STRN">"Curacao"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>970</span> </span><span class="NAME">CY</span><span class="PUNC">:</span><span class="STRN">"Cyprus"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>971</span> </span><span class="NAME">CZ</span><span class="PUNC">:</span><span class="STRN">"Czech Republic"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>972</span> </span><span class="NAME">DK</span><span class="PUNC">:</span><span class="STRN">"Denmark"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>973</span> </span><span class="NAME">DJ</span><span class="PUNC">:</span><span class="STRN">"Djibouti"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>974</span> </span><span class="NAME">DM</span><span class="PUNC">:</span><span class="STRN">"Dominica"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>975</span> </span><span class="NAME">DO</span><span class="PUNC">:</span><span class="STRN">"Dominican Republic"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>976</span> </span><span class="NAME">EC</span><span class="PUNC">:</span><span class="STRN">"Ecuador"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>977</span> </span><span class="NAME">EG</span><span class="PUNC">:</span><span class="STRN">"Egypt"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>978</span> </span><span class="NAME">SV</span><span class="PUNC">:</span><span class="STRN">"El Salvador"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>979</span> </span><span class="NAME">GQ</span><span class="PUNC">:</span><span class="STRN">"Equatorial Guinea"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>980</span> </span><span class="NAME">ER</span><span class="PUNC">:</span><span class="STRN">"Eritrea"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>981</span> </span><span class="NAME">EE</span><span class="PUNC">:</span><span class="STRN">"Estonia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>982</span> </span><span class="NAME">ET</span><span class="PUNC">:</span><span class="STRN">"Ethiopia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>983</span> </span><span class="NAME">FK</span><span class="PUNC">:</span><span class="STRN">"Falkland Islands (Malvinas)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>984</span> </span><span class="NAME">FO</span><span class="PUNC">:</span><span class="STRN">"Faroe Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>985</span> </span><span class="NAME">FJ</span><span class="PUNC">:</span><span class="STRN">"Fiji"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>986</span> </span><span class="NAME">FI</span><span class="PUNC">:</span><span class="STRN">"Finland"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>987</span> </span><span class="NAME">FR</span><span class="PUNC">:</span><span class="STRN">"France"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>988</span> </span><span class="NAME">GF</span><span class="PUNC">:</span><span class="STRN">"French Guiana"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>989</span> </span><span class="NAME">PF</span><span class="PUNC">:</span><span class="STRN">"French Polynesia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>990</span> </span><span class="NAME">TF</span><span class="PUNC">:</span><span class="STRN">"French Southern Territories"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>991</span> </span><span class="NAME">GA</span><span class="PUNC">:</span><span class="STRN">"Gabon"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>992</span> </span><span class="NAME">GM</span><span class="PUNC">:</span><span class="STRN">"Gambia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>993</span> </span><span class="NAME">GE</span><span class="PUNC">:</span><span class="STRN">"Georgia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>994</span> </span><span class="NAME">DE</span><span class="PUNC">:</span><span class="STRN">"Germany"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>995</span> </span><span class="NAME">GH</span><span class="PUNC">:</span><span class="STRN">"Ghana"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>996</span> </span><span class="NAME">GI</span><span class="PUNC">:</span><span class="STRN">"Gibraltar"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>997</span> </span><span class="NAME">GR</span><span class="PUNC">:</span><span class="STRN">"Greece"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>998</span> </span><span class="NAME">GL</span><span class="PUNC">:</span><span class="STRN">"Greenland"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>999</span> </span><span class="NAME">GD</span><span class="PUNC">:</span><span class="STRN">"Grenada"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1000</span> </span><span class="NAME">GP</span><span class="PUNC">:</span><span class="STRN">"Guadeloupe"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1001</span> </span><span class="NAME">GU</span><span class="PUNC">:</span><span class="STRN">"Guam"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1002</span> </span><span class="NAME">GT</span><span class="PUNC">:</span><span class="STRN">"Guatemala"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1003</span> </span><span class="NAME">GG</span><span class="PUNC">:</span><span class="STRN">"Guernsey"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1004</span> </span><span class="NAME">GN</span><span class="PUNC">:</span><span class="STRN">"Guinea"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1005</span> </span><span class="NAME">GW</span><span class="PUNC">:</span><span class="STRN">"Guinea-Bissau"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1006</span> </span><span class="NAME">GY</span><span class="PUNC">:</span><span class="STRN">"Guyana"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1007</span> </span><span class="NAME">HT</span><span class="PUNC">:</span><span class="STRN">"Haiti"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1008</span> </span><span class="NAME">HM</span><span class="PUNC">:</span><span class="STRN">"Heard Island and McDonald Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1009</span> </span><span class="NAME">VA</span><span class="PUNC">:</span><span class="STRN">"Holy See (Vatican City State)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1010</span> </span><span class="NAME">HN</span><span class="PUNC">:</span><span class="STRN">"Honduras"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1011</span> </span><span class="NAME">HK</span><span class="PUNC">:</span><span class="STRN">"Hong Kong"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1012</span> </span><span class="NAME">HU</span><span class="PUNC">:</span><span class="STRN">"Hungary"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1013</span> </span><span class="NAME">IS</span><span class="PUNC">:</span><span class="STRN">"Iceland"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1014</span> </span><span class="NAME">IN</span><span class="PUNC">:</span><span class="STRN">"India"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1015</span> </span><span class="NAME">ID</span><span class="PUNC">:</span><span class="STRN">"Indonesia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1016</span> </span><span class="NAME">IR</span><span class="PUNC">:</span><span class="STRN">"Iran, Islamic Republic of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1017</span> </span><span class="NAME">IQ</span><span class="PUNC">:</span><span class="STRN">"Iraq"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1018</span> </span><span class="NAME">IE</span><span class="PUNC">:</span><span class="STRN">"Ireland"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1019</span> </span><span class="NAME">IM</span><span class="PUNC">:</span><span class="STRN">"Isle of Man"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1020</span> </span><span class="NAME">IL</span><span class="PUNC">:</span><span class="STRN">"Israel"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1021</span> </span><span class="NAME">IT</span><span class="PUNC">:</span><span class="STRN">"Italy"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1022</span> </span><span class="NAME">JM</span><span class="PUNC">:</span><span class="STRN">"Jamaica"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1023</span> </span><span class="NAME">JP</span><span class="PUNC">:</span><span class="STRN">"Japan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1024</span> </span><span class="NAME">JE</span><span class="PUNC">:</span><span class="STRN">"Jersey"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1025</span> </span><span class="NAME">JO</span><span class="PUNC">:</span><span class="STRN">"Jordan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1026</span> </span><span class="NAME">KZ</span><span class="PUNC">:</span><span class="STRN">"Kazakhstan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1027</span> </span><span class="NAME">KE</span><span class="PUNC">:</span><span class="STRN">"Kenya"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1028</span> </span><span class="NAME">KI</span><span class="PUNC">:</span><span class="STRN">"Kiribati"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1029</span> </span><span class="NAME">KP</span><span class="PUNC">:</span><span class="STRN">"Korea, Democratic People's Republic of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1030</span> </span><span class="NAME">KR</span><span class="PUNC">:</span><span class="STRN">"Korea, Republic of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1031</span> </span><span class="NAME">KW</span><span class="PUNC">:</span><span class="STRN">"Kuwait"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1032</span> </span><span class="NAME">KG</span><span class="PUNC">:</span><span class="STRN">"Kyrgyzstan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1033</span> </span><span class="NAME">LA</span><span class="PUNC">:</span><span class="STRN">"Lao People's Democratic Republic"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1034</span> </span><span class="NAME">LV</span><span class="PUNC">:</span><span class="STRN">"Latvia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1035</span> </span><span class="NAME">LB</span><span class="PUNC">:</span><span class="STRN">"Lebanon"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1036</span> </span><span class="NAME">LS</span><span class="PUNC">:</span><span class="STRN">"Lesotho"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1037</span> </span><span class="NAME">LR</span><span class="PUNC">:</span><span class="STRN">"Liberia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1038</span> </span><span class="NAME">LY</span><span class="PUNC">:</span><span class="STRN">"Libya"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1039</span> </span><span class="NAME">LI</span><span class="PUNC">:</span><span class="STRN">"Liechtenstein"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1040</span> </span><span class="NAME">LT</span><span class="PUNC">:</span><span class="STRN">"Lithuania"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1041</span> </span><span class="NAME">LU</span><span class="PUNC">:</span><span class="STRN">"Luxembourg"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1042</span> </span><span class="NAME">MO</span><span class="PUNC">:</span><span class="STRN">"Macao"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1043</span> </span><span class="NAME">MK</span><span class="PUNC">:</span><span class="STRN">"Macedonia, the Former Yugoslav Republic of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1044</span> </span><span class="NAME">MG</span><span class="PUNC">:</span><span class="STRN">"Madagascar"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1045</span> </span><span class="NAME">MW</span><span class="PUNC">:</span><span class="STRN">"Malawi"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1046</span> </span><span class="NAME">MY</span><span class="PUNC">:</span><span class="STRN">"Malaysia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1047</span> </span><span class="NAME">MV</span><span class="PUNC">:</span><span class="STRN">"Maldives"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1048</span> </span><span class="NAME">ML</span><span class="PUNC">:</span><span class="STRN">"Mali"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1049</span> </span><span class="NAME">MT</span><span class="PUNC">:</span><span class="STRN">"Malta"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1050</span> </span><span class="NAME">MH</span><span class="PUNC">:</span><span class="STRN">"Marshall Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1051</span> </span><span class="NAME">MQ</span><span class="PUNC">:</span><span class="STRN">"Martinique"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1052</span> </span><span class="NAME">MR</span><span class="PUNC">:</span><span class="STRN">"Mauritania"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1053</span> </span><span class="NAME">MU</span><span class="PUNC">:</span><span class="STRN">"Mauritius"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1054</span> </span><span class="NAME">YT</span><span class="PUNC">:</span><span class="STRN">"Mayotte"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1055</span> </span><span class="NAME">MX</span><span class="PUNC">:</span><span class="STRN">"Mexico"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1056</span> </span><span class="NAME">FM</span><span class="PUNC">:</span><span class="STRN">"Micronesia, Federated States of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1057</span> </span><span class="NAME">MD</span><span class="PUNC">:</span><span class="STRN">"Moldova, Republic of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1058</span> </span><span class="NAME">MC</span><span class="PUNC">:</span><span class="STRN">"Monaco"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1059</span> </span><span class="NAME">MN</span><span class="PUNC">:</span><span class="STRN">"Mongolia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1060</span> </span><span class="NAME">ME</span><span class="PUNC">:</span><span class="STRN">"Montenegro"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1061</span> </span><span class="NAME">MS</span><span class="PUNC">:</span><span class="STRN">"Montserrat"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1062</span> </span><span class="NAME">MA</span><span class="PUNC">:</span><span class="STRN">"Morocco"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1063</span> </span><span class="NAME">MZ</span><span class="PUNC">:</span><span class="STRN">"Mozambique"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1064</span> </span><span class="NAME">MM</span><span class="PUNC">:</span><span class="STRN">"Myanmar"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1065</span> </span><span class="NAME">NA</span><span class="PUNC">:</span><span class="STRN">"Namibia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1066</span> </span><span class="NAME">NR</span><span class="PUNC">:</span><span class="STRN">"Nauru"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1067</span> </span><span class="NAME">NP</span><span class="PUNC">:</span><span class="STRN">"Nepal"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1068</span> </span><span class="NAME">NL</span><span class="PUNC">:</span><span class="STRN">"Netherlands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1069</span> </span><span class="NAME">NC</span><span class="PUNC">:</span><span class="STRN">"New Caledonia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1070</span> </span><span class="NAME">NZ</span><span class="PUNC">:</span><span class="STRN">"New Zealand"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1071</span> </span><span class="NAME">NI</span><span class="PUNC">:</span><span class="STRN">"Nicaragua"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1072</span> </span><span class="NAME">NE</span><span class="PUNC">:</span><span class="STRN">"Niger"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1073</span> </span><span class="NAME">NG</span><span class="PUNC">:</span><span class="STRN">"Nigeria"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1074</span> </span><span class="NAME">NU</span><span class="PUNC">:</span><span class="STRN">"Niue"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1075</span> </span><span class="NAME">NF</span><span class="PUNC">:</span><span class="STRN">"Norfolk Island"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1076</span> </span><span class="NAME">MP</span><span class="PUNC">:</span><span class="STRN">"Northern Mariana Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1077</span> </span><span class="NAME">NO</span><span class="PUNC">:</span><span class="STRN">"Norway"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1078</span> </span><span class="NAME">OM</span><span class="PUNC">:</span><span class="STRN">"Oman"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1079</span> </span><span class="NAME">PK</span><span class="PUNC">:</span><span class="STRN">"Pakistan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1080</span> </span><span class="NAME">PW</span><span class="PUNC">:</span><span class="STRN">"Palau"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1081</span> </span><span class="NAME">PS</span><span class="PUNC">:</span><span class="STRN">"Palestine, State of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1082</span> </span><span class="NAME">PA</span><span class="PUNC">:</span><span class="STRN">"Panama"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1083</span> </span><span class="NAME">PG</span><span class="PUNC">:</span><span class="STRN">"Papua New Guinea"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1084</span> </span><span class="NAME">PY</span><span class="PUNC">:</span><span class="STRN">"Paraguay"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1085</span> </span><span class="NAME">PE</span><span class="PUNC">:</span><span class="STRN">"Peru"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1086</span> </span><span class="NAME">PH</span><span class="PUNC">:</span><span class="STRN">"Philippines"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1087</span> </span><span class="NAME">PN</span><span class="PUNC">:</span><span class="STRN">"Pitcairn"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1088</span> </span><span class="NAME">PL</span><span class="PUNC">:</span><span class="STRN">"Poland"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1089</span> </span><span class="NAME">PT</span><span class="PUNC">:</span><span class="STRN">"Portugal"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1090</span> </span><span class="NAME">PR</span><span class="PUNC">:</span><span class="STRN">"Puerto Rico"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1091</span> </span><span class="NAME">QA</span><span class="PUNC">:</span><span class="STRN">"Qatar"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1092</span> </span><span class="NAME">RE</span><span class="PUNC">:</span><span class="STRN">"Reunion"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1093</span> </span><span class="NAME">RO</span><span class="PUNC">:</span><span class="STRN">"Romania"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1094</span> </span><span class="NAME">RU</span><span class="PUNC">:</span><span class="STRN">"Russian Federation"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1095</span> </span><span class="NAME">RW</span><span class="PUNC">:</span><span class="STRN">"Rwanda"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1096</span> </span><span class="NAME">BL</span><span class="PUNC">:</span><span class="STRN">"Saint Bartholemy"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1097</span> </span><span class="NAME">SH</span><span class="PUNC">:</span><span class="STRN">"Saint Helena, Ascension and Tristan da Cunha"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1098</span> </span><span class="NAME">KN</span><span class="PUNC">:</span><span class="STRN">"Saint Kitts and Nevis"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1099</span> </span><span class="NAME">LC</span><span class="PUNC">:</span><span class="STRN">"Saint Lucia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1100</span> </span><span class="NAME">MF</span><span class="PUNC">:</span><span class="STRN">"Saint Martin (French part)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1101</span> </span><span class="NAME">PM</span><span class="PUNC">:</span><span class="STRN">"Saint Pierre and Miquelon"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1102</span> </span><span class="NAME">VC</span><span class="PUNC">:</span><span class="STRN">"Saint Vincent and the Grenadines"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1103</span> </span><span class="NAME">WS</span><span class="PUNC">:</span><span class="STRN">"Samoa"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1104</span> </span><span class="NAME">SM</span><span class="PUNC">:</span><span class="STRN">"San Marino"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1105</span> </span><span class="NAME">ST</span><span class="PUNC">:</span><span class="STRN">"Sao Tome and Principe"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1106</span> </span><span class="NAME">SA</span><span class="PUNC">:</span><span class="STRN">"Saudi Arabia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1107</span> </span><span class="NAME">SN</span><span class="PUNC">:</span><span class="STRN">"Senegal"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1108</span> </span><span class="NAME">RS</span><span class="PUNC">:</span><span class="STRN">"Serbia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1109</span> </span><span class="NAME">SC</span><span class="PUNC">:</span><span class="STRN">"Seychelles"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1110</span> </span><span class="NAME">SL</span><span class="PUNC">:</span><span class="STRN">"Sierra Leone"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1111</span> </span><span class="NAME">SG</span><span class="PUNC">:</span><span class="STRN">"Singapore"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1112</span> </span><span class="NAME">SX</span><span class="PUNC">:</span><span class="STRN">"Sint Maarten (Dutch part)"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1113</span> </span><span class="NAME">SK</span><span class="PUNC">:</span><span class="STRN">"Slovakia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1114</span> </span><span class="NAME">SI</span><span class="PUNC">:</span><span class="STRN">"Slovenia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1115</span> </span><span class="NAME">SB</span><span class="PUNC">:</span><span class="STRN">"Solomon Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1116</span> </span><span class="NAME">SO</span><span class="PUNC">:</span><span class="STRN">"Somalia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1117</span> </span><span class="NAME">ZA</span><span class="PUNC">:</span><span class="STRN">"South Africa"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1118</span> </span><span class="NAME">GS</span><span class="PUNC">:</span><span class="STRN">"South Georgia and the South Sandwich Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1119</span> </span><span class="NAME">SS</span><span class="PUNC">:</span><span class="STRN">"South Sudan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1120</span> </span><span class="NAME">ES</span><span class="PUNC">:</span><span class="STRN">"Spain"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1121</span> </span><span class="NAME">LK</span><span class="PUNC">:</span><span class="STRN">"Sri Lanka"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1122</span> </span><span class="NAME">SD</span><span class="PUNC">:</span><span class="STRN">"Sudan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1123</span> </span><span class="NAME">SR</span><span class="PUNC">:</span><span class="STRN">"Suriname"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1124</span> </span><span class="NAME">SJ</span><span class="PUNC">:</span><span class="STRN">"Svalbard and Jan Mayen"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1125</span> </span><span class="NAME">SZ</span><span class="PUNC">:</span><span class="STRN">"Swaziland"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1126</span> </span><span class="NAME">SE</span><span class="PUNC">:</span><span class="STRN">"Sweden"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1127</span> </span><span class="NAME">CH</span><span class="PUNC">:</span><span class="STRN">"Switzerland"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1128</span> </span><span class="NAME">SY</span><span class="PUNC">:</span><span class="STRN">"Syrian Arab Republic"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1129</span> </span><span class="NAME">TW</span><span class="PUNC">:</span><span class="STRN">"Taiwan, Province of China"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1130</span> </span><span class="NAME">TJ</span><span class="PUNC">:</span><span class="STRN">"Tajikistan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1131</span> </span><span class="NAME">TZ</span><span class="PUNC">:</span><span class="STRN">"Tanzania, United Republic of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1132</span> </span><span class="NAME">TH</span><span class="PUNC">:</span><span class="STRN">"Thailand"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1133</span> </span><span class="NAME">TL</span><span class="PUNC">:</span><span class="STRN">"Timor-Leste"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1134</span> </span><span class="NAME">TG</span><span class="PUNC">:</span><span class="STRN">"Togo"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1135</span> </span><span class="NAME">TK</span><span class="PUNC">:</span><span class="STRN">"Tokelau"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1136</span> </span><span class="NAME">TO</span><span class="PUNC">:</span><span class="STRN">"Tonga"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1137</span> </span><span class="NAME">TT</span><span class="PUNC">:</span><span class="STRN">"Trinidad and Tobago"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1138</span> </span><span class="NAME">TN</span><span class="PUNC">:</span><span class="STRN">"Tunisia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1139</span> </span><span class="NAME">TR</span><span class="PUNC">:</span><span class="STRN">"Turkey"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1140</span> </span><span class="NAME">TM</span><span class="PUNC">:</span><span class="STRN">"Turkmenistan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1141</span> </span><span class="NAME">TC</span><span class="PUNC">:</span><span class="STRN">"Turks and Caicos Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1142</span> </span><span class="NAME">TV</span><span class="PUNC">:</span><span class="STRN">"Tuvalu"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1143</span> </span><span class="NAME">UG</span><span class="PUNC">:</span><span class="STRN">"Uganda"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1144</span> </span><span class="NAME">UA</span><span class="PUNC">:</span><span class="STRN">"Ukraine"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1145</span> </span><span class="NAME">AE</span><span class="PUNC">:</span><span class="STRN">"United Arab Emirates"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1146</span> </span><span class="NAME">GB</span><span class="PUNC">:</span><span class="STRN">"United Kingdom"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1147</span> </span><span class="NAME">US</span><span class="PUNC">:</span><span class="STRN">"United States"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1148</span> </span><span class="NAME">UM</span><span class="PUNC">:</span><span class="STRN">"United States Minor Outlying Islands"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1149</span> </span><span class="NAME">UY</span><span class="PUNC">:</span><span class="STRN">"Uruguay"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1150</span> </span><span class="NAME">UZ</span><span class="PUNC">:</span><span class="STRN">"Uzbekistan"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1151</span> </span><span class="NAME">VU</span><span class="PUNC">:</span><span class="STRN">"Vanuatu"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1152</span> </span><span class="NAME">VE</span><span class="PUNC">:</span><span class="STRN">"Venezuela, Bolivarian Republic of"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1153</span> </span><span class="NAME">VN</span><span class="PUNC">:</span><span class="STRN">"Viet Nam"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1154</span> </span><span class="NAME">VG</span><span class="PUNC">:</span><span class="STRN">"Virgin Islands, British"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1155</span> </span><span class="NAME">VI</span><span class="PUNC">:</span><span class="STRN">"Virgin Islands, U.S."</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1156</span> </span><span class="NAME">WF</span><span class="PUNC">:</span><span class="STRN">"Wallis and Futuna"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1157</span> </span><span class="NAME">EH</span><span class="PUNC">:</span><span class="STRN">"Western Sahara"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1158</span> </span><span class="NAME">YE</span><span class="PUNC">:</span><span class="STRN">"Yemen"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1159</span> </span><span class="NAME">ZM</span><span class="PUNC">:</span><span class="STRN">"Zambia"</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>1160</span> </span><span class="NAME">ZW</span><span class="PUNC">:</span><span class="STRN">"Zimbabwe"</span><span class="WHIT">
<span class='line'>1161</span> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1162</span> 
<span class='line'>1163</span> 
<span class='line'>1164</span> 
<span class='line'>1165</span> </span><span class="COMM">/**
<span class='line'>1166</span>  * Extract subject from certificate as ASN1 object
<span class='line'>1167</span>  *
<span class='line'>1168</span>  * @param {X509} cert the certificate
<span class='line'>1169</span>  * @type ASN1
<span class='line'>1170</span>  * @return the subject as ASN1
<span class='line'>1171</span>  */</span><span class="WHIT">
<span class='line'>1172</span> </span><span class="NAME">PKIXCommon.getSubjectAsASN1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1173</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1174</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1175</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1176</span> 
<span class='line'>1177</span> 
<span class='line'>1178</span> 
<span class='line'>1179</span> </span><span class="COMM">/**
<span class='line'>1180</span>  * Extract issuer from certificate as ASN1 object
<span class='line'>1181</span>  *
<span class='line'>1182</span>  * @param {X509} cert the certificate
<span class='line'>1183</span>  * @type ASN1
<span class='line'>1184</span>  * @return the issuer as ASN1
<span class='line'>1185</span>  */</span><span class="WHIT">
<span class='line'>1186</span> </span><span class="NAME">PKIXCommon.getIssuerAsASN1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1187</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">a</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1188</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">a.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">get</span><span class="PUNC">(</span><span class="NUMB">3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1189</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1190</span> 
<span class='line'>1191</span> 
<span class='line'>1192</span> 
<span class='line'>1193</span> </span><span class="COMM">/**
<span class='line'>1194</span>  * Convert binary data to PEM format
<span class='line'>1195</span>  *
<span class='line'>1196</span>  * @param {String} label the label to be used in the MIME header and footer
<span class='line'>1197</span>  * @param {ByteString} bin the binary data
<span class='line'>1198</span>  * @type String
<span class='line'>1199</span>  * @return the MIME/BASE64 encoded string
<span class='line'>1200</span>  */</span><span class="WHIT">
<span class='line'>1201</span> </span><span class="NAME">PKIXCommon.toPEM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bin</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1202</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter label must be string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1203</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">bin</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter bin must be ByteString"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1204</span> 
<span class='line'>1205</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"-----BEGIN "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"-----\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1206</span> 
<span class='line'>1207</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b64</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bin.toString</span><span class="PUNC">(</span><span class="NAME">BASE64</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1208</span> </span><span class="WHIT">	</span><span class="KEYW">while</span><span class="PUNC">(</span><span class="NAME">b64.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1209</span> </span><span class="WHIT">		</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">b64.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">64</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1210</span> </span><span class="WHIT">		</span><span class="NAME">b64</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">b64.substr</span><span class="PUNC">(</span><span class="NUMB">64</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1211</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1212</span> 
<span class='line'>1213</span> </span><span class="WHIT">	</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"-----END "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"-----\n"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1214</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1215</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1216</span> 
<span class='line'>1217</span> 
<span class='line'>1218</span> 
<span class='line'>1219</span> </span><span class="COMM">/**
<span class='line'>1220</span>  * Parse PEM format and extract binary data
<span class='line'>1221</span>  *
<span class='line'>1222</span>  * @param {String} label the label of the section
<span class='line'>1223</span>  * @param {String} bin the binary data
<span class='line'>1224</span>  * @type String
<span class='line'>1225</span>  * @return the MIME/BASE64 encoded string
<span class='line'>1226</span>  */</span><span class="WHIT">
<span class='line'>1227</span> </span><span class="NAME">PKIXCommon.parsePEM</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1228</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">label</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter label must be string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1229</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pem</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter pem must be string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1230</span> 
<span class='line'>1231</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pem.split</span><span class="PUNC">(</span><span class="STRN">"\n"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1232</span> 
<span class='line'>1233</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">b64str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1234</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parse</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1235</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">lines.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1236</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">lines</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1237</span> 
<span class='line'>1238</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"-----BEGIN "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"-----"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1239</span> </span><span class="WHIT">			</span><span class="NAME">parse</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1240</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">str</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"-----END "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">label</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"-----"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1241</span> </span><span class="WHIT">			</span><span class="KEYW">break</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1242</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">parse</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1243</span> </span><span class="WHIT">			</span><span class="NAME">b64str</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">str</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1244</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1245</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1246</span> 
<span class='line'>1247</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">b64str</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">BASE64</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1248</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1249</span> 
<span class='line'>1250</span> 
<span class='line'>1251</span> 
<span class='line'>1252</span> </span><span class="COMM">/**
<span class='line'>1253</span>  * Writes a byte string object to file
<span class='line'>1254</span>  *
<span class='line'>1255</span>  * &lt;p>The filename is mapped to the workspace location.&lt;/p>
<span class='line'>1256</span>  *
<span class='line'>1257</span>  * @param {String} filename the fully qualified name of the file
<span class='line'>1258</span>  * @param {ByteString} content the content to write
<span class='line'>1259</span>  */</span><span class="WHIT">
<span class='line'>1260</span> </span><span class="NAME">PKIXCommon.writeFileToDisk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">filename</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">content</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1261</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">file</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">java.io.FileOutputStream</span><span class="PUNC">(</span><span class="NAME">filename</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1262</span> </span><span class="WHIT">	</span><span class="NAME">file.write</span><span class="PUNC">(</span><span class="NAME">content</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1263</span> </span><span class="WHIT">	</span><span class="NAME">file.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1264</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1265</span> 
<span class='line'>1266</span> 
<span class='line'>1267</span> 
<span class='line'>1268</span> </span><span class="COMM">/**
<span class='line'>1269</span>  * Loads a binary file from disk
<span class='line'>1270</span>  *
<span class='line'>1271</span>  * @param {String} filename the fully qualified file name
<span class='line'>1272</span>  * @return the binary content
<span class='line'>1273</span>  * @type ByteString
<span class='line'>1274</span>  */</span><span class="WHIT">
<span class='line'>1275</span> </span><span class="NAME">PKIXCommon.readFileFromDisk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">filename</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1276</span> </span><span class="WHIT">	</span><span class="COMM">// Open stream</span><span class="WHIT">
<span class='line'>1277</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">f</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">java.io.FileInputStream</span><span class="PUNC">(</span><span class="NAME">filename</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1278</span> 
<span class='line'>1279</span> </span><span class="WHIT">	</span><span class="COMM">// Determine file size</span><span class="WHIT">
<span class='line'>1280</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">flen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">f.available</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1281</span> 
<span class='line'>1282</span> </span><span class="WHIT">	</span><span class="COMM">// Allocate native byte array</span><span class="WHIT">
<span class='line'>1283</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">java.lang.reflect.Array.newInstance</span><span class="PUNC">(</span><span class="NAME">java.lang.Byte.TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">flen</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1284</span> 
<span class='line'>1285</span> </span><span class="WHIT">	</span><span class="COMM">// Read into byte array</span><span class="WHIT">
<span class='line'>1286</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">f.read</span><span class="PUNC">(</span><span class="NAME">bs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1287</span> 
<span class='line'>1288</span> </span><span class="WHIT">	</span><span class="NAME">f.close</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1289</span> 
<span class='line'>1290</span> </span><span class="WHIT">	</span><span class="COMM">// Allocate JavaScript ByteBuffer from native/wrapped byte array</span><span class="WHIT">
<span class='line'>1291</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="NAME">bs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1292</span> 
<span class='line'>1293</span> </span><span class="WHIT">	</span><span class="COMM">// Convert to JavaScript ByteString</span><span class="WHIT">
<span class='line'>1294</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">data</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1295</span> 
<span class='line'>1296</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">data</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1297</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1298</span> 
<span class='line'>1299</span> 
<span class='line'>1300</span> 
<span class='line'>1301</span> </span><span class="NAME">PKIXCommon.test</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>1302</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"C"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"O"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OU</span><span class="PUNC">:</span><span class="STRN">"OU"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SP</span><span class="PUNC">:</span><span class="STRN">"SP"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">L</span><span class="PUNC">:</span><span class="STRN">"L"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">DC</span><span class="PUNC">:</span><span class="STRN">"DC"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">T</span><span class="PUNC">:</span><span class="STRN">"T"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">G</span><span class="PUNC">:</span><span class="STRN">"G"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SN</span><span class="PUNC">:</span><span class="STRN">"SN"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"CN"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">SERIALNUMBER</span><span class="PUNC">:</span><span class="STRN">"serial"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">DNQ</span><span class="PUNC">:</span><span class="STRN">"DNQ"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1303</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodeName</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1304</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">dn</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1305</span> 
<span class='line'>1306</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1307</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">r.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1308</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"80"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1309</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">r.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"0080"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1310</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"FF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1311</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">r.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00FF"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1312</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0000"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1313</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">r.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"00"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1314</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"0080"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1315</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">r.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"0080"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1316</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"000080"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1317</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">r.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"0080"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>1318</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>1319</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview A X509 certificate generator class following RFC5280
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/x509/PKIXCommon"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> 
<span class='line'> 30</span> 
<span class='line'> 31</span> </span><span class="COMM">/**
<span class='line'> 32</span>  * Create a X.509 certificate generator.
<span class='line'> 33</span>  *
<span class='line'> 34</span>  * @class Class implementing a X.509 certificate generator
<span class='line'> 35</span>  * @constructor
<span class='line'> 36</span>  *
<span class='line'> 37</span>  * @param {Crypto} crypto the crypto provider to use for signing operations
<span class='line'> 38</span>  */</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">X509CertificateGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="WHIT">	</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="WHIT">	</span><span class="NAME">this.encodeECDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 42</span> </span><span class="WHIT">	</span><span class="NAME">this.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 44</span> 
<span class='line'> 45</span> </span><span class="NAME">exports.X509CertificateGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">X509CertificateGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> 
<span class='line'> 47</span> 
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="COMM">/**
<span class='line'> 50</span>  * Resets all internal state variables.
<span class='line'> 51</span>  *
<span class='line'> 52</span>  */</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="NAME">X509CertificateGenerator.prototype.reset</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> 
<span class='line'> 56</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 57</span> 
<span class='line'> 58</span> 
<span class='line'> 59</span> 
<span class='line'> 60</span> </span><span class="COMM">/**
<span class='line'> 61</span>  * Sets the serial number.
<span class='line'> 62</span>  *
<span class='line'> 63</span>  * @param {ByteString} serialNumber the serial number for the certificate
<span class='line'> 64</span>  */</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="NAME">X509CertificateGenerator.prototype.setSerialNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">serialNumber</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="NAME">this.serialNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">serialNumber</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> </span><span class="COMM">/**
<span class='line'> 72</span>  * Sets the isser name.
<span class='line'> 73</span>  *
<span class='line'> 74</span>  * &lt;p>The issuer name must be a JavaScript object containing the properties:&lt;/p>
<span class='line'> 75</span>  * &lt;ul>
<span class='line'> 76</span>  *  &lt;li>C - the country&lt;/li>
<span class='line'> 77</span>  *  &lt;li>O - the organization&lt;/li>
<span class='line'> 78</span>  *  &lt;li>OU - the organization unit&lt;/li>
<span class='line'> 79</span>  *  &lt;li>CN - the common name&lt;/li>
<span class='line'> 80</span>  * &lt;/ul>
<span class='line'> 81</span>  * &lt;p>Example:&lt;/p>
<span class='line'> 82</span>  * &lt;pre>
<span class='line'> 83</span>  *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
<span class='line'> 84</span>  * &lt;/pre>
<span class='line'> 85</span>  * @param {Object} issuer the issuer name
<span class='line'> 86</span>  */</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="NAME">X509CertificateGenerator.prototype.setIssuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">	</span><span class="NAME">this.issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 90</span> 
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="COMM">/**
<span class='line'> 94</span>  * Sets the effective date for the certificate.
<span class='line'> 95</span>  *
<span class='line'> 96</span>  * @param {String or Date} date the date in format YYMMDDHHMMSSZ
<span class='line'> 97</span>  */</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="NAME">X509CertificateGenerator.prototype.setNotBefore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="NAME">this.notBefore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">date</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>101</span> 
<span class='line'>102</span> 
<span class='line'>103</span> 
<span class='line'>104</span> </span><span class="COMM">/**
<span class='line'>105</span>  * Sets the expiration date for the certificate.
<span class='line'>106</span>  *
<span class='line'>107</span>  * @param {String or Date} date the date in format YYMMDDHHMMSSZ
<span class='line'>108</span>  */</span><span class="WHIT">
<span class='line'>109</span> </span><span class="NAME">X509CertificateGenerator.prototype.setNotAfter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">date</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>110</span> </span><span class="WHIT">	</span><span class="NAME">this.notAfter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">date</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>111</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>112</span> 
<span class='line'>113</span> 
<span class='line'>114</span> 
<span class='line'>115</span> </span><span class="COMM">/**
<span class='line'>116</span>  * Sets the subject name.
<span class='line'>117</span>  *
<span class='line'>118</span>  * &lt;p>The subject name must be a JavaScript object containing the properties:&lt;/p>
<span class='line'>119</span>  * &lt;ul>
<span class='line'>120</span>  *  &lt;li>C - the country&lt;/li>
<span class='line'>121</span>  *  &lt;li>O - the organization&lt;/li>
<span class='line'>122</span>  *  &lt;li>OU - the organization unit&lt;/li>
<span class='line'>123</span>  *  &lt;li>CN - the common name&lt;/li>
<span class='line'>124</span>  * &lt;/ul>
<span class='line'>125</span>  * &lt;p>Example:&lt;/p>
<span class='line'>126</span>  * &lt;pre>
<span class='line'>127</span>  *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
<span class='line'>128</span>  * &lt;/pre>
<span class='line'>129</span>  * @param {Object} subject the subject name
<span class='line'>130</span>  */</span><span class="WHIT">
<span class='line'>131</span> </span><span class="NAME">X509CertificateGenerator.prototype.setSubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="NAME">this.subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>134</span> 
<span class='line'>135</span> 
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="COMM">/**
<span class='line'>138</span>  * Sets the subjects public key
<span class='line'>139</span>  *
<span class='line'>140</span>  * &lt;p>The methods accepts ECC and RSA Public Keys.&lt;/p>
<span class='line'>141</span>  *
<span class='line'>142</span>  * @param {Key} publicKey the subjects public key
<span class='line'>143</span>  */</span><span class="WHIT">
<span class='line'>144</span> </span><span class="NAME">X509CertificateGenerator.prototype.setPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="NAME">this.publicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKey</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> 
<span class='line'>149</span> 
<span class='line'>150</span> </span><span class="COMM">/**
<span class='line'>151</span>  * Sets the signature algorithm.
<span class='line'>152</span>  *
<span class='line'>153</span>  * @param {Number} alg the signature algorithm.
<span class='line'>154</span>  */</span><span class="WHIT">
<span class='line'>155</span> </span><span class="NAME">X509CertificateGenerator.prototype.setSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">alg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="NAME">this.signatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">alg</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>158</span> 
<span class='line'>159</span> 
<span class='line'>160</span> 
<span class='line'>161</span> </span><span class="COMM">/**
<span class='line'>162</span>  * Adds an extension to the certificate
<span class='line'>163</span>  *
<span class='line'>164</span>  * &lt;p>The structure is defined as:&lt;/p>
<span class='line'>165</span>  * &lt;pre>
<span class='line'>166</span>  *    Extension  ::=  SEQUENCE  {
<span class='line'>167</span>  *        extnID      OBJECT IDENTIFIER,
<span class='line'>168</span>  *        critical    BOOLEAN DEFAULT FALSE,
<span class='line'>169</span>  *        extnValue   OCTET STRING
<span class='line'>170</span>  *                    -- contains the DER encoding of an ASN.1 value
<span class='line'>171</span>  *                    -- corresponding to the extension type identified
<span class='line'>172</span>  *                    -- by extnID
<span class='line'>173</span>  *        }
<span class='line'>174</span>  *&lt;/pre>
<span class='line'>175</span>  * @param {String} extnID the extensions object identifier
<span class='line'>176</span>  * @param {Boolean} critical the extension is critical
<span class='line'>177</span>  * @param {ByteString} the extension value as ByteString
<span class='line'>178</span>  */</span><span class="WHIT">
<span class='line'>179</span> </span><span class="NAME">X509CertificateGenerator.prototype.addExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">extnID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">critical</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extnValue</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extension"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">				</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnID"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">extnID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">			</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">critical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"critical"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BOOLEAN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"FF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>187</span> 
<span class='line'>188</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extnValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extnValue</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="NAME">this.extensions.push</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>190</span> 
<span class='line'>191</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> 
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="COMM">/**
<span class='line'>196</span>  * Adds the key usage extension.
<span class='line'>197</span>  *
<span class='line'>198</span>  * &lt;p>The following flags are defined:&lt;/p>
<span class='line'>199</span>  * &lt;pre>
<span class='line'>200</span>  * PKIXCommon.digitalSignature = 0x0080;
<span class='line'>201</span>  * PKIXCommon.nonRepudiation   = 0x0040;
<span class='line'>202</span>  * PKIXCommon.keyEncipherment  = 0x0020;
<span class='line'>203</span>  * PKIXCommon.dataEncipherment = 0x0010;
<span class='line'>204</span>  * PKIXCommon.keyAgreement     = 0x0008;
<span class='line'>205</span>  * PKIXCommon.keyCertSign      = 0x0004;
<span class='line'>206</span>  * PKIXCommon.cRLSign          = 0x0002;
<span class='line'>207</span>  * PKIXCommon.encipherOnly     = 0x0001;
<span class='line'>208</span>  * PKIXCommon.decipherOnly     = 0x8000;
<span class='line'>209</span>  * &lt;/pre>
<span class='line'>210</span>  * @param {Number} the key usage flags as combination of the flags defined above.
<span class='line'>211</span>  */</span><span class="WHIT">
<span class='line'>212</span> </span><span class="NAME">X509CertificateGenerator.prototype.addKeyUsageExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">flags</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.bitstringForInteger</span><span class="PUNC">(</span><span class="NAME">flags</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"2.5.29.15"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>215</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>216</span> 
<span class='line'>217</span> </span><span class="COMM">// Deprecated: Use PKIXCommon. instead</span><span class="WHIT">
<span class='line'>218</span> </span><span class="NAME">X509CertificateGenerator.digitalSignature</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0080</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> </span><span class="NAME">X509CertificateGenerator.nonRepudiation</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0040</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>220</span> </span><span class="NAME">X509CertificateGenerator.keyEncipherment</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0020</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> </span><span class="NAME">X509CertificateGenerator.dataEncipherment</span><span class="WHIT">	</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0010</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>222</span> </span><span class="NAME">X509CertificateGenerator.keyAgreement</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0008</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="NAME">X509CertificateGenerator.keyCertSign</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0004</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> </span><span class="NAME">X509CertificateGenerator.cRLSign</span><span class="WHIT">			</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0002</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> </span><span class="NAME">X509CertificateGenerator.encipherOnly</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x0001</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>226</span> </span><span class="NAME">X509CertificateGenerator.decipherOnly</span><span class="WHIT">		</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0x8000</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> 
<span class='line'>229</span> 
<span class='line'>230</span> </span><span class="COMM">/**
<span class='line'>231</span>  * Adds the BasicConstraints extension.
<span class='line'>232</span>  *
<span class='line'>233</span>  * @param {Boolean} cA the certificate belongs to a CA
<span class='line'>234</span>  * @param {Number} pathLenConstraint the maximum number of subordinate CA certificates
<span class='line'>235</span>  */</span><span class="WHIT">
<span class='line'>236</span> </span><span class="NAME">X509CertificateGenerator.prototype.addBasicConstraintsExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pathLenConstraint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"BasicConstraints"</span><span class="PUNC">,</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cA</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BOOLEAN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"FF"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pathLenConstraint</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">bb</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteBuffer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> </span><span class="WHIT">		</span><span class="NAME">bb.append</span><span class="PUNC">(</span><span class="NAME">pathLenConstraint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>244</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"pathLenConstraint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">bb.toByteString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"2.5.29.19"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>247</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>248</span> 
<span class='line'>249</span> 
<span class='line'>250</span> 
<span class='line'>251</span> </span><span class="COMM">/**
<span class='line'>252</span>  * Adds the subject public key identifier extension based on the certificates subject key.
<span class='line'>253</span>  *
<span class='line'>254</span>  * &lt;p>The key identifier is calculated as SHA-1 hash over the contents of the
<span class='line'>255</span>  * subject public key (Without tag, length and number of unused bits.&lt;/p>
<span class='line'>256</span>  */</span><span class="WHIT">
<span class='line'>257</span> </span><span class="NAME">X509CertificateGenerator.prototype.addSubjectKeyIdentifierExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">spi.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>262</span> 
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.OCTET_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"2.5.29.14"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>266</span> 
<span class='line'>267</span> 
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="COMM">/**
<span class='line'>270</span>  * Adds the authority public key identifier extension based on the issuers key.
<span class='line'>271</span>  *
<span class='line'>272</span>  * &lt;p>The key identifier is calculated as SHA-1 hash over the contents of the
<span class='line'>273</span>  * issuer public key (Without tag, length and number of unused bits.&lt;/p>
<span class='line'>274</span>  *
<span class='line'>275</span>  * @param {Key/ByteString} publicKeyOrId the authority subject key or authority key identifier
<span class='line'>276</span>  */</span><span class="WHIT">
<span class='line'>277</span> </span><span class="NAME">X509CertificateGenerator.prototype.addAuthorityKeyIdentifierExtension</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">publicKeyOrId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKeyOrId</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>279</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">publicKeyOrId.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createRSASubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">publicKeyOrId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>282</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">spi</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createECSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">publicKeyOrId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.encodeECDomainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>284</span> 
<span class='line'>285</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">spi.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">value.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.digest</span><span class="PUNC">(</span><span class="NAME">Crypto.SHA_1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyvalue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">publicKeyOrId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>291</span> 
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NUMB">0x80</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">hash</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">	</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"2.5.29.35"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>297</span> 
<span class='line'>298</span> 
<span class='line'>299</span> 
<span class='line'>300</span> </span><span class="COMM">/**
<span class='line'>301</span>  * Adds the CRL distribution point URLs.
<span class='line'>302</span>  *
<span class='line'>303</span>  * @param {String[]} url a list of URLs
<span class='line'>304</span>  */</span><span class="WHIT">
<span class='line'>305</span> </span><span class="NAME">X509CertificateGenerator.prototype.addCRLDistributionPointURL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>306</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cRLDistributionPoints"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>307</span> 
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">url.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="WHIT">	</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"cRLDistributionPoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">					</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"distributionPoint"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"fullName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">							</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"uniformResourceIdentifier"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x86</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">						</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">				</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>317</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"id-ce-cRLDistributionPoints"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>318</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>319</span> 
<span class='line'>320</span> 
<span class='line'>321</span> 
<span class='line'>322</span> </span><span class="COMM">/**
<span class='line'>323</span>  * Adds the extended key usage extension
<span class='line'>324</span>  *
<span class='line'>325</span>  * @param {String[]} oids the list of object identifier names
<span class='line'>326</span>  * @param {Boolean} critical the extension is critical
<span class='line'>327</span>  */</span><span class="WHIT">
<span class='line'>328</span> </span><span class="NAME">X509CertificateGenerator.prototype.addExtendedKeyUsages</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oids</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">critical</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>329</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extKeyUsages"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>330</span> 
<span class='line'>331</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">oids.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"keyPurposeId"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">oids</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">	</span><span class="NAME">this.addExtension</span><span class="PUNC">(</span><span class="STRN">"id-ce-extKeyUsage"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">critical</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">t.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>336</span> 
<span class='line'>337</span> 
<span class='line'>338</span> 
<span class='line'>339</span> </span><span class="COMM">/**
<span class='line'>340</span>  * Gets the issuer name as TLV object
<span class='line'>341</span>  *
<span class='line'>342</span>  * @return the issuer RDNSequence
<span class='line'>343</span>  * @type ASN1
<span class='line'>344</span>  */</span><span class="WHIT">
<span class='line'>345</span> </span><span class="NAME">X509CertificateGenerator.prototype.getIssuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>346</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.issuer</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.issuer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>349</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodeName</span><span class="PUNC">(</span><span class="NAME">this.issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>351</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>352</span> 
<span class='line'>353</span> 
<span class='line'>354</span> 
<span class='line'>355</span> </span><span class="COMM">/**
<span class='line'>356</span>  * Gets the certificate validity as TLV object
<span class='line'>357</span>  *
<span class='line'>358</span>  * @return the certificates validity
<span class='line'>359</span>  * @type ASN1
<span class='line'>360</span>  */</span><span class="WHIT">
<span class='line'>361</span> </span><span class="NAME">X509CertificateGenerator.prototype.getValidity</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"validity"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>363</span> 
<span class='line'>364</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.notBefore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">ts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>366</span> </span><span class="WHIT">		</span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.dtoUTC</span><span class="PUNC">(</span><span class="NAME">this.notBefore</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>367</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="STRN">"500101000000Z"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>369</span> </span><span class="WHIT">		</span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"20"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ts</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>370</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"notBefore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.GeneralizedTime</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">ts</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"notBefore"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.UTCTime</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">ts</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>373</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>374</span> 
<span class='line'>375</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.notAfter</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>376</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">ts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">		</span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.dtoUTC</span><span class="PUNC">(</span><span class="NAME">this.notAfter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="STRN">"500101000000Z"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">		</span><span class="NAME">ts</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"20"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">ts</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"notAfter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.GeneralizedTime</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">ts</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>383</span> </span><span class="WHIT">		</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"notAfter"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.UTCTime</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">ts</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>384</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>386</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>387</span> 
<span class='line'>388</span> 
<span class='line'>389</span> 
<span class='line'>390</span> </span><span class="COMM">/**
<span class='line'>391</span>  * Gets the subject name as TLV object
<span class='line'>392</span>  *
<span class='line'>393</span>  * @return the issuer RDNSequence
<span class='line'>394</span>  * @type ASN1
<span class='line'>395</span>  */</span><span class="WHIT">
<span class='line'>396</span> </span><span class="NAME">X509CertificateGenerator.prototype.getSubject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.subject</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>398</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.subject</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>399</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodeName</span><span class="PUNC">(</span><span class="NAME">this.subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>402</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>403</span> 
<span class='line'>404</span> 
<span class='line'>405</span> 
<span class='line'>406</span> </span><span class="COMM">/**
<span class='line'>407</span>  * Gets the subject's public key as TLV object
<span class='line'>408</span>  *
<span class='line'>409</span>  * @return the subject's public key info
<span class='line'>410</span>  * @type ASN1
<span class='line'>411</span>  */</span><span class="WHIT">
<span class='line'>412</span> </span><span class="NAME">X509CertificateGenerator.prototype.getSubjectPublicKeyInfo</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.publicKey.getComponent</span><span class="PUNC">(</span><span class="NAME">Key.MODULUS</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>414</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createRSASubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">this.publicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>415</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>416</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.createECSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="NAME">this.publicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.encodeECDomainParameter</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>417</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>418</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>419</span> 
<span class='line'>420</span> 
<span class='line'>421</span> 
<span class='line'>422</span> </span><span class="COMM">/**
<span class='line'>423</span>  * Gets the certificate extension as TLV object
<span class='line'>424</span>  *
<span class='line'>425</span>  * @return the certificate extensions
<span class='line'>426</span>  * @type ASN1
<span class='line'>427</span>  */</span><span class="WHIT">
<span class='line'>428</span> </span><span class="NAME">X509CertificateGenerator.prototype.getExtensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA3</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">s</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"extensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>431</span> 
<span class='line'>432</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">s</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> 
<span class='line'>434</span> </span><span class="WHIT">	</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.extensions.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">		</span><span class="NAME">s.add</span><span class="PUNC">(</span><span class="NAME">this.extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>439</span> 
<span class='line'>440</span> 
<span class='line'>441</span> 
<span class='line'>442</span> </span><span class="COMM">/**
<span class='line'>443</span>  * Gets the part of the certificate that will be signed
<span class='line'>444</span>  *
<span class='line'>445</span>  * @return the TBSCertificate part
<span class='line'>446</span>  * @type ASN1
<span class='line'>447</span>  */</span><span class="WHIT">
<span class='line'>448</span> </span><span class="NAME">X509CertificateGenerator.prototype.getTbsCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"tbsCertificate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"version"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0xA0</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>451</span> </span><span class="WHIT">			</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"version"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"02"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"serialNumber"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.INTEGER</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.convertUnsignedInteger</span><span class="PUNC">(</span><span class="NAME">this.serialNumber</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getSignatureAlgorithm</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getIssuer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getValidity</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getSubject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getSubjectPublicKeyInfo</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> </span><span class="WHIT">	</span><span class="NAME">t.add</span><span class="PUNC">(</span><span class="NAME">this.getExtensions</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>459</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">t</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>461</span> 
<span class='line'>462</span> 
<span class='line'>463</span> 
<span class='line'>464</span> </span><span class="COMM">/**
<span class='line'>465</span>  * Gets the signature algorithm TLV object
<span class='line'>466</span>  *
<span class='line'>467</span>  * @return the signature algorithm object
<span class='line'>468</span>  * @type ASN1
<span class='line'>469</span>  */</span><span class="WHIT">
<span class='line'>470</span> </span><span class="NAME">X509CertificateGenerator.prototype.getSignatureAlgorithm</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.encodeSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">this.signatureAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>472</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>473</span> 
<span class='line'>474</span> 
<span class='line'>475</span> 
<span class='line'>476</span> </span><span class="COMM">/**
<span class='line'>477</span>  * Generates the certificate.
<span class='line'>478</span>  *
<span class='line'>479</span>  * @return the generated certificate
<span class='line'>480</span>  * @type X509
<span class='line'>481</span>  */</span><span class="WHIT">
<span class='line'>482</span> </span><span class="NAME">X509CertificateGenerator.prototype.generateX509Certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"certificate"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>484</span> 
<span class='line'>485</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">tbs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getTbsCertificate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>486</span> </span><span class="WHIT">	</span><span class="NAME">certificate.add</span><span class="PUNC">(</span><span class="NAME">tbs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT">	</span><span class="NAME">certificate.add</span><span class="PUNC">(</span><span class="NAME">this.getSignatureAlgorithm</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>488</span> 
<span class='line'>489</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.crypto.sign</span><span class="PUNC">(</span><span class="NAME">privateKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.signatureAlgorithm</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tbs.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT">	</span><span class="NAME">signature</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"00"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span> 
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signatureValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"signatureValue"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.BIT_STRING</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">	</span><span class="NAME">certificate.add</span><span class="PUNC">(</span><span class="NAME">signatureValue</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>494</span> 
<span class='line'>495</span> </span><span class="COMM">//	print(certificate);</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certificate.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>498</span> 
<span class='line'>499</span> 
<span class='line'>500</span> 
<span class='line'>501</span> </span><span class="NAME">X509CertificateGenerator.RSATest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>502</span> 
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> 
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>506</span> </span><span class="WHIT">	</span><span class="NAME">caPrivateKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>507</span> 
<span class='line'>508</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>509</span> </span><span class="WHIT">	</span><span class="NAME">caPublicKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT">	</span><span class="NAME">caPublicKey.setSize</span><span class="PUNC">(</span><span class="NUMB">1024</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span> 
<span class='line'>512</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">caPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">caPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> 
<span class='line'>514</span> </span><span class="COMM">//	var caPrivKey = new Key("profiles/kp_rsa_private.xml");</span><span class="WHIT">
<span class='line'>515</span> 
<span class='line'>516</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509CertificateGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>517</span> 
<span class='line'>518</span> </span><span class="WHIT">	</span><span class="NAME">x.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="NAME">x.setSerialNumber</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> </span><span class="WHIT">	</span><span class="NAME">x.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">Crypto.RSA</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"UT"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"ACME Corporation"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"Test-CA"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="NAME">x.setIssuer</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>523</span> </span><span class="WHIT">	</span><span class="NAME">x.setNotBefore</span><span class="PUNC">(</span><span class="STRN">"060825120000Z"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> </span><span class="WHIT">	</span><span class="NAME">x.setNotAfter</span><span class="PUNC">(</span><span class="STRN">"160825120000Z"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>525</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"UT"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"Utopia CA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OU</span><span class="PUNC">:</span><span class="STRN">"ACME Corporation"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"Joe Doe"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="NAME">x.setSubject</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> 
<span class='line'>528</span> </span><span class="WHIT">	</span><span class="NAME">x.setPublicKey</span><span class="PUNC">(</span><span class="NAME">caPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>529</span> 
<span class='line'>530</span> </span><span class="WHIT">	</span><span class="NAME">x.addKeyUsageExtension</span><span class="PUNC">(</span><span class="WHIT">	</span><span class="NAME">PKIXCommon.digitalSignature</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT">
<span class='line'>531</span> </span><span class="WHIT">							</span><span class="NAME">PKIXCommon.keyCertSign</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT">
<span class='line'>532</span> </span><span class="WHIT">							</span><span class="NAME">PKIXCommon.cRLSign</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>533</span> 
<span class='line'>534</span> </span><span class="WHIT">	</span><span class="NAME">x.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>535</span> </span><span class="WHIT">	</span><span class="NAME">x.addSubjectKeyIdentifierExtension</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> </span><span class="WHIT">	</span><span class="NAME">x.addAuthorityKeyIdentifierExtension</span><span class="PUNC">(</span><span class="NAME">caPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>537</span> 
<span class='line'>538</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x.generateX509Certificate</span><span class="PUNC">(</span><span class="NAME">caPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>539</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.mapFilename</span><span class="PUNC">(</span><span class="STRN">"cert_rsa.cer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPSystem.USR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>540</span> </span><span class="WHIT">	</span><span class="NAME">PKIXCommon.writeFileToDisk</span><span class="PUNC">(</span><span class="NAME">fn</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>541</span> 
<span class='line'>542</span> </span><span class="WHIT">	</span><span class="NAME">cert.verifyWith</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>543</span> 
<span class='line'>544</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>545</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>546</span> 
<span class='line'>547</span> 
<span class='line'>548</span> 
<span class='line'>549</span> </span><span class="NAME">X509CertificateGenerator.ECCTest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>550</span> 
<span class='line'>551</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>552</span> 
<span class='line'>553</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caPrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>554</span> </span><span class="WHIT">	</span><span class="NAME">caPrivateKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PRIVATE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span> 
<span class='line'>556</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">caPublicKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>557</span> </span><span class="WHIT">	</span><span class="NAME">caPublicKey.setType</span><span class="PUNC">(</span><span class="NAME">Key.PUBLIC</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="NAME">caPublicKey.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"brainpoolP256r1"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>559</span> 
<span class='line'>560</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">Crypto.EC</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">caPublicKey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">caPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> 
<span class='line'>562</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509CertificateGenerator</span><span class="PUNC">(</span><span class="NAME">crypto</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>563</span> 
<span class='line'>564</span> </span><span class="WHIT">	</span><span class="NAME">x.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>565</span> </span><span class="WHIT">	</span><span class="NAME">x.setSerialNumber</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="STRN">"01"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>566</span> </span><span class="WHIT">	</span><span class="NAME">x.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">Crypto.ECDSA_SHA256</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>567</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"UT"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"ACME Corporation"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"Test-CA"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>568</span> </span><span class="WHIT">	</span><span class="NAME">x.setIssuer</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>569</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">t</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>570</span> </span><span class="WHIT">	</span><span class="NAME">x.setNotBefore</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>571</span> </span><span class="WHIT">	</span><span class="NAME">x.setNotAfter</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.addDays</span><span class="PUNC">(</span><span class="NAME">t</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">180</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>572</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">C</span><span class="PUNC">:</span><span class="STRN">"UT"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">O</span><span class="PUNC">:</span><span class="STRN">"Utopia CA"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OU</span><span class="PUNC">:</span><span class="STRN">"ACME Corporation"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">CN</span><span class="PUNC">:</span><span class="STRN">"Joe Doe"</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">	</span><span class="NAME">x.setSubject</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> 
<span class='line'>575</span> </span><span class="WHIT">	</span><span class="NAME">x.setPublicKey</span><span class="PUNC">(</span><span class="NAME">caPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>576</span> 
<span class='line'>577</span> </span><span class="WHIT">	</span><span class="NAME">x.addKeyUsageExtension</span><span class="PUNC">(</span><span class="WHIT">	</span><span class="NAME">PKIXCommon.digitalSignature</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT">
<span class='line'>578</span> </span><span class="WHIT">							</span><span class="NAME">PKIXCommon.keyCertSign</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT">
<span class='line'>579</span> </span><span class="WHIT">							</span><span class="NAME">PKIXCommon.cRLSign</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> 
<span class='line'>581</span> </span><span class="WHIT">	</span><span class="NAME">x.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>582</span> </span><span class="WHIT">	</span><span class="NAME">x.addSubjectKeyIdentifierExtension</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT">	</span><span class="NAME">x.addAuthorityKeyIdentifierExtension</span><span class="PUNC">(</span><span class="NAME">caPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>584</span> 
<span class='line'>585</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x.generateX509Certificate</span><span class="PUNC">(</span><span class="NAME">caPrivateKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>586</span> 
<span class='line'>587</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">fn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">GPSystem.mapFilename</span><span class="PUNC">(</span><span class="STRN">"cert_ecc.cer"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPSystem.USR</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>588</span> </span><span class="WHIT">	</span><span class="NAME">PKIXCommon.writeFileToDisk</span><span class="PUNC">(</span><span class="NAME">fn</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>589</span> 
<span class='line'>590</span> </span><span class="WHIT">	</span><span class="NAME">cert.verifyWith</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>591</span> 
<span class='line'>592</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>593</span> </span><span class="WHIT">	</span><span class="NAME">print</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>594</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>595</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview A Issuer for X.509 Certificates
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">X509Signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/x509/X509Signer'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">X509Signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> 
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/x509/PKIXCommon"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">X509CertificateGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/x509/X509CertificateGenerator"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">X509CertificateGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">CRLGenerator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">"scsh/x509/CRLGenerator"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">CRLGenerator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> 
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="COMM">/**
<span class='line'> 36</span>  * Create a certification authority that issues X.509 certificates and CRLs
<span class='line'> 37</span>  *
<span class='line'> 38</span>  * @class Class implementing a certification authority issuing X.509 certificates and CRLs
<span class='line'> 39</span>  * @constructor
<span class='line'> 40</span>  * @param {DAOFactory} daof the factory that can create the required data access objects
<span class='line'> 41</span>  * @param {CryptoProviderFactory} cpf factory implementing getCryptoProvider() used to get access to crypto providers
<span class='line'> 42</span>  * @param {Holder} holder the holder object for this signer the database
<span class='line'> 43</span>  */</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">X509CertificateIssuer</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cpf</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="WHIT">	</span><span class="NAME">X509Signer.call</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cpf</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.crldp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 48</span> 
<span class='line'> 49</span> </span><span class="NAME">X509CertificateIssuer.prototype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Object.create</span><span class="PUNC">(</span><span class="NAME">X509Signer.prototype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="NAME">X509CertificateIssuer.constructor</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">X509CertificateIssuer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> 
<span class='line'> 52</span> </span><span class="NAME">exports.X509CertificateIssuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">X509CertificateIssuer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> 
<span class='line'> 55</span> 
<span class='line'> 56</span> </span><span class="COMM">/**
<span class='line'> 57</span>  * Create a new certificate issuer
<span class='line'> 58</span>  *
<span class='line'> 59</span>  * @param {DAOFactory} daof the factory that can create the required data access objects
<span class='line'> 60</span>  * @param {String/Number} pathOrHolderId the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM") or the holderId from the database
<span class='line'> 61</span>  * @param {Number} certtype optional argument, default Holder.X509
<span class='line'> 62</span>  * @type Number
<span class='line'> 63</span>  * @return the newly created holder id
<span class='line'> 64</span>  */</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="NAME">X509CertificateIssuer.createCertificateIssuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certtype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">X509Signer.createSigner</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certtype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 68</span> 
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> </span><span class="COMM">/**
<span class='line'> 72</span>  * Add a CRL distribution point to issued certificates
<span class='line'> 73</span>  *
<span class='line'> 74</span>  * @param {String} crldp the URL of the distribution point
<span class='line'> 75</span>  */</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="NAME">X509CertificateIssuer.prototype.addCRLDistributionPoint</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">crldp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 77</span> </span><span class="WHIT">	</span><span class="NAME">this.crldp.push</span><span class="PUNC">(</span><span class="NAME">crldp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 78</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 79</span> 
<span class='line'> 80</span> 
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="COMM">/**
<span class='line'> 83</span>  * Create a new randomly generated certificate serial number
<span class='line'> 84</span>  *
<span class='line'> 85</span>  * @private
<span class='line'> 86</span>  * @type ByteString
<span class='line'> 87</span>  * @return a 8 byte bytestring that resembles an unsigned integer
<span class='line'> 88</span>  */</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="NAME">X509CertificateIssuer.prototype.newSerialNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crypto.generateRandom</span><span class="PUNC">(</span><span class="NUMB">8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 92</span> 
<span class='line'> 93</span> </span><span class="WHIT">	</span><span class="COMM">// Strip first bit to make integer unsigned</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">serial.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0x7F</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">		</span><span class="NAME">serial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">ByteString.valueOf</span><span class="PUNC">(</span><span class="NAME">serial.byteAt</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&</span><span class="WHIT"> </span><span class="NUMB">0x7F</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">concat</span><span class="PUNC">(</span><span class="NAME">serial.bytes</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 99</span> 
<span class='line'>100</span> 
<span class='line'>101</span> 
<span class='line'>102</span> </span><span class="COMM">/**
<span class='line'>103</span>  * Issue a self-signed certificate for the given keyId.
<span class='line'>104</span>  *
<span class='line'>105</span>  * The key must have been previously generated using the newSigner() method
<span class='line'>106</span>  *
<span class='line'>107</span>  * @param {ByteString} keyId the subject key identifier
<span class='line'>108</span>  * @param {Number} srId service request id to be stored with issued certificate
<span class='line'>109</span>  */</span><span class="WHIT">
<span class='line'>110</span> </span><span class="NAME">X509CertificateIssuer.prototype.issueSelfSignedCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>111</span> 
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>113</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByKeyId</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>116</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>118</span> 
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No signer with keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>122</span> 
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.cpf.getCryptoProvider</span><span class="PUNC">(</span><span class="NAME">signer.keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>124</span> 
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Signer is offline (Key Domain : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.signer.keyDomain</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>128</span> 
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cp.getPrivateKeyByKeyId</span><span class="PUNC">(</span><span class="NAME">signer.keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> 
<span class='line'>132</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No key with keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signer.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getRequest</span><span class="PUNC">(</span><span class="NAME">signer.keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> 
<span class='line'>138</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No request with keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">signer.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>141</span> 
<span class='line'>142</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pub</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.policy.restrictPublicKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">			</span><span class="NAME">pub.algorithmIdentifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.restrictedPublicKeyAlgorithmIdentifier</span><span class="PUNC">(</span><span class="NAME">this.policy.restrictPublicKey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509CertificateGenerator</span><span class="PUNC">(</span><span class="NAME">cp.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="NAME">gen.encodeECDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> 
<span class='line'>151</span> </span><span class="WHIT">		</span><span class="NAME">gen.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>152</span> </span><span class="WHIT">		</span><span class="NAME">gen.setSerialNumber</span><span class="PUNC">(</span><span class="NAME">this.newSerialNumber</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="NAME">gen.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">this.policy.signatureAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getSubject</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> </span><span class="WHIT">		</span><span class="NAME">gen.setIssuer</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>156</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ced</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cxd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.addDays</span><span class="PUNC">(</span><span class="NAME">ced</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.policy.validityDaysSelfSigned</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">		</span><span class="NAME">gen.setNotBefore</span><span class="PUNC">(</span><span class="NAME">ced</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">		</span><span class="NAME">gen.setNotAfter</span><span class="PUNC">(</span><span class="NAME">cxd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">		</span><span class="NAME">gen.setSubject</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">		</span><span class="NAME">gen.setPublicKey</span><span class="PUNC">(</span><span class="NAME">pub</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">		</span><span class="NAME">gen.addSubjectKeyIdentifierExtension</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">		</span><span class="NAME">gen.addKeyUsageExtension</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.keyCertSign</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.cRLSign</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">		</span><span class="NAME">gen.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.policy.pathLenConstraint</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> 
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gen.generateX509Certificate</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> 
<span class='line'>168</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.storeCertificate</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signer.keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="NAME">cp.release</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> 
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="COMM">/**
<span class='line'>180</span>  * Issue a new certificate for the given subject and public key
<span class='line'>181</span>  *
<span class='line'>182</span>  * @param {Number/String/Object} certholder the holder id, path or object
<span class='line'>183</span>  * @param {Key} pubkey the public key
<span class='line'>184</span>  * @param {Object} subject in ASN1 format or a format accepted by PKIXCommon.encodeName()
<span class='line'>185</span>  * @param {Object[]} extensions array of certificate extensions objects with properties oid{String}, critical{boolean} and value{ByteString}
<span class='line'>186</span>  * @param {Number} srId service request id to be stored with issued certificate
<span class='line'>187</span>  * @type X509
<span class='line'>188</span>  * @return the newly generated certificate
<span class='line'>189</span>  */</span><span class="WHIT">
<span class='line'>190</span> </span><span class="NAME">X509CertificateIssuer.prototype.issueCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">certholder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pubkey</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">pubkey</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument pubkey must be instance of Key"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> 
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">certholder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">			</span><span class="NAME">certholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">certholder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">			</span><span class="NAME">certholder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolderById</span><span class="PUNC">(</span><span class="NAME">certholder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>202</span> 
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certholder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">certholder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> 
<span class='line'>207</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">icert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSignerCertificate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">icert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No active signer found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>212</span> 
<span class='line'>213</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.cpf.getCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.signer.keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> 
<span class='line'>215</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Signer is offline (Key Domain : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.signer.keyDomain</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>218</span> 
<span class='line'>219</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>220</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cp.getPrivateKeyByKeyId</span><span class="PUNC">(</span><span class="NAME">this.signer.keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No key with keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.signer.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>225</span> 
<span class='line'>226</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.getSubjectAsASN1</span><span class="PUNC">(</span><span class="NAME">icert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> 
<span class='line'>228</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509CertificateGenerator</span><span class="PUNC">(</span><span class="NAME">cp.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="WHIT">		</span><span class="NAME">gen.encodeECDomainParameter</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> </span><span class="WHIT">		</span><span class="NAME">gen.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>232</span> </span><span class="WHIT">		</span><span class="NAME">gen.setSerialNumber</span><span class="PUNC">(</span><span class="NAME">this.newSerialNumber</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>233</span> </span><span class="WHIT">		</span><span class="NAME">gen.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">this.policy.signatureAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>234</span> </span><span class="WHIT">		</span><span class="NAME">gen.setIssuer</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>235</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ced</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>236</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cxd</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.addDays</span><span class="PUNC">(</span><span class="NAME">ced</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.policy.validityDaysCertificates</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>237</span> </span><span class="WHIT">		</span><span class="NAME">gen.setNotBefore</span><span class="PUNC">(</span><span class="NAME">ced</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>238</span> </span><span class="WHIT">		</span><span class="NAME">gen.setNotAfter</span><span class="PUNC">(</span><span class="NAME">cxd</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>239</span> </span><span class="WHIT">		</span><span class="NAME">gen.setSubject</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">		</span><span class="NAME">gen.setPublicKey</span><span class="PUNC">(</span><span class="NAME">pubkey</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="WHIT">		</span><span class="NAME">gen.addSubjectKeyIdentifierExtension</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>242</span> </span><span class="WHIT">		</span><span class="NAME">gen.addAuthorityKeyIdentifierExtension</span><span class="PUNC">(</span><span class="NAME">icert.getSubjectKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>243</span> 
<span class='line'>244</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">this.policy.pathLenConstraint</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.policy.pathLenConstraint</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>245</span> </span><span class="WHIT">			</span><span class="NAME">gen.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.policy.pathLenConstraint</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>246</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">			</span><span class="NAME">gen.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>249</span> 
<span class='line'>250</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.crldp.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>251</span> </span><span class="WHIT">			</span><span class="NAME">gen.addCRLDistributionPointURL</span><span class="PUNC">(</span><span class="NAME">this.crldp</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>253</span> 
<span class='line'>254</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">extensions</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"object"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">extensions.length</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">				</span><span class="NAME">gen.addExtension</span><span class="PUNC">(</span><span class="NAME">extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">oid</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">critical</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">value</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>258</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>259</span> 
<span class='line'>260</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gen.generateX509Certificate</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> 
<span class='line'>262</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.storeCertificateForHolder</span><span class="PUNC">(</span><span class="NAME">certholder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>265</span> </span><span class="WHIT">		</span><span class="NAME">cp.release</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>269</span> 
<span class='line'>270</span> 
<span class='line'>271</span> 
<span class='line'>272</span> </span><span class="COMM">/**
<span class='line'>273</span>  * Extension handler method for Sub-CA certificates
<span class='line'>274</span>  *
<span class='line'>275</span>  * @private
<span class='line'>276</span>  */</span><span class="WHIT">
<span class='line'>277</span> </span><span class="NAME">X509CertificateIssuer.prototype.addExtForSubCA</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">certgen</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extvalues</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>278</span> 
<span class='line'>279</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addKeyUsageExtension</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.keyCertSign</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.cRLSign</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">true</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.policy.pathLenConstraint</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>282</span> 
<span class='line'>283</span> 
<span class='line'>284</span> 
<span class='line'>285</span> </span><span class="COMM">/**
<span class='line'>286</span>  * Extension handler method for TLS server certificates
<span class='line'>287</span>  *
<span class='line'>288</span>  * @private
<span class='line'>289</span>  */</span><span class="WHIT">
<span class='line'>290</span> </span><span class="NAME">X509CertificateIssuer.prototype.addExtForTLSServer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">certgen</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extvalues</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>291</span> 
<span class='line'>292</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addKeyUsageExtension</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.keyAgreement</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.keyEncipherment</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>294</span> 
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addExtendedKeyUsages</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"id-csn-369791-tls-server"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-kp-serverAuth"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>296</span> 
<span class='line'>297</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectAltName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"dNSName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x82</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">extvalues</span><span class="PUNC">[</span><span class="STRN">"dNSName"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addExtension</span><span class="PUNC">(</span><span class="STRN">"id-ce-subjectAltName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ext.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>301</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>302</span> 
<span class='line'>303</span> 
<span class='line'>304</span> 
<span class='line'>305</span> </span><span class="COMM">/**
<span class='line'>306</span>  * Extension handler method for TLS client certificates
<span class='line'>307</span>  *
<span class='line'>308</span>  * @private
<span class='line'>309</span>  */</span><span class="WHIT">
<span class='line'>310</span> </span><span class="NAME">X509CertificateIssuer.prototype.addExtForTLSClient</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">certgen</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extvalues</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addKeyUsageExtension</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.digitalSignature</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>313</span> 
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="COMM">// certgen.addExtendedKeyUsages(["id-csn-369791-tls-client", "id-kp-clientAuth"]);</span><span class="WHIT">
<span class='line'>315</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addExtendedKeyUsages</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"id-kp-clientAuth"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>316</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>317</span> 
<span class='line'>318</span> 
<span class='line'>319</span> 
<span class='line'>320</span> </span><span class="COMM">/**
<span class='line'>321</span>  * Extension handler method for certificates suitable for TLS client authentication and e-Mail signature and encryption
<span class='line'>322</span>  *
<span class='line'>323</span>  * @private
<span class='line'>324</span>  */</span><span class="WHIT">
<span class='line'>325</span> </span><span class="NAME">X509CertificateIssuer.prototype.addExtForEmailAndTLSClient</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">certgen</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extvalues</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>326</span> 
<span class='line'>327</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addKeyUsageExtension</span><span class="PUNC">(</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.digitalSignature</span><span class="WHIT"> </span><span class="PUNC">|</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.keyEncipherment</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addBasicConstraintsExtension</span><span class="PUNC">(</span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ext</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"subjectAltName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>331</span> </span><span class="WHIT">						</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"rfc822Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0x81</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">extvalues</span><span class="PUNC">[</span><span class="STRN">"email"</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>332</span> </span><span class="WHIT">					</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addExtension</span><span class="PUNC">(</span><span class="STRN">"id-ce-subjectAltName"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ext.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> 
<span class='line'>335</span> </span><span class="WHIT">	</span><span class="NAME">certgen.addExtendedKeyUsages</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="STRN">"id-kp-clientAuth"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"id-kp-emailProtection"</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>336</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>337</span> 
<span class='line'>338</span> 
<span class='line'>339</span> 
<span class='line'>340</span> </span><span class="COMM">/**
<span class='line'>341</span>  * Issue a CRL
<span class='line'>342</span>  *
<span class='line'>343</span>  * @type CRL
<span class='line'>344</span>  * @return the newly issued CRL
<span class='line'>345</span>  */</span><span class="WHIT">
<span class='line'>346</span> </span><span class="NAME">X509CertificateIssuer.prototype.issueCRL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>347</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"issueCRL()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>348</span> 
<span class='line'>349</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">icert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSignerCertificate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>350</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">icert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>351</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No active signer found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>352</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>353</span> 
<span class='line'>354</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.signer.getContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>355</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">c.crl</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>356</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">latestCRL</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CRLGenerator</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crlNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">latestCRL.loadCRLEntries</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">c.crl</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">		</span><span class="NAME">crlNumber</span><span class="PUNC">++</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>360</span> 
<span class='line'>361</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.cpf.getCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.signer.keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> 
<span class='line'>363</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>364</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Signer is offline (Key Domain : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.signer.keyDomain</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>366</span> 
<span class='line'>367</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>368</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cp.getPrivateKeyByKeyId</span><span class="PUNC">(</span><span class="NAME">this.signer.keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>369</span> 
<span class='line'>370</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>371</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No key with keyId "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.signer.keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>372</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>373</span> 
<span class='line'>374</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">CRLGenerator</span><span class="PUNC">(</span><span class="NAME">cp.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>375</span> 
<span class='line'>376</span> </span><span class="WHIT">		</span><span class="NAME">x.reset</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">		</span><span class="NAME">x.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">this.policy.signatureAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.getSubjectAsASN1</span><span class="PUNC">(</span><span class="NAME">icert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> </span><span class="WHIT">		</span><span class="NAME">x.setIssuer</span><span class="PUNC">(</span><span class="NAME">issuer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>380</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">now</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">		</span><span class="NAME">x.setThisUpdate</span><span class="PUNC">(</span><span class="NAME">now</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="WHIT">		</span><span class="NAME">x.setNextUpdate</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.addDays</span><span class="PUNC">(</span><span class="NAME">now</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.policy.validityDaysCRL</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">revocationList</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getRevokedCertificates</span><span class="PUNC">(</span><span class="NAME">this.holder.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">now</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>386</span> 
<span class='line'>387</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="NAME">each</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">revocationList</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>388</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">cert.serial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>389</span> 
<span class='line'>390</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">reason</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.mapStatusToReasonCode</span><span class="PUNC">(</span><span class="NAME">cert.status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>391</span> 
<span class='line'>392</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cert.revocationDate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>393</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">revocationDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.revocationDate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>394</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>395</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">revocationDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">now</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>396</span> </span><span class="WHIT">				</span><span class="NAME">certdao.updateRevocationDate</span><span class="PUNC">(</span><span class="NAME">cert.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">now</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>397</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>398</span> 
<span class='line'>399</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">cert.invalidityDate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>400</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">invalidityDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.invalidityDate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>401</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>402</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">invalidityDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">now</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>404</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">(</span><span class="STRN">"crlExtensions"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>405</span> </span><span class="WHIT">			</span><span class="NAME">extensions.add</span><span class="PUNC">(</span><span class="NAME">x.createInvalidityDateExt</span><span class="PUNC">(</span><span class="NAME">invalidityDate</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> 
<span class='line'>407</span> </span><span class="WHIT">			</span><span class="NAME">x.revokeCertificate</span><span class="PUNC">(</span><span class="NAME">serial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">revocationDate</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">reason</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">extensions</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>409</span> 
<span class='line'>410</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">crlNumber</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crlNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>413</span> </span><span class="WHIT">		</span><span class="NAME">x.addCRLNumberExtension</span><span class="PUNC">(</span><span class="NAME">crlNumber</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>414</span> 
<span class='line'>415</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">x.generateCRL</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>416</span> 
<span class='line'>417</span> </span><span class="WHIT">		</span><span class="NAME">c.crl</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">crl.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">		</span><span class="NAME">this.signer.setContent</span><span class="PUNC">(</span><span class="NAME">c</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>420</span> </span><span class="WHIT">		</span><span class="NAME">signerDAO.updateContent</span><span class="PUNC">(</span><span class="NAME">this.signer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">		</span><span class="NAME">cp.release</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>425</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">crl</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>427</span> 
<span class='line'>428</span> 
<span class='line'>429</span> 
<span class='line'>430</span> </span><span class="NAME">X509CertificateIssuer.prototype.mapStatusToReasonCode</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT">	</span><span class="KEYW">switch</span><span class="PUNC">(</span><span class="NAME">status</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.REVOKED</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// "...the reason code CRL entry extension SHOULD be absent instead of using the unspecified (0) reasonCode value." [RFC 5280, 5.3.1]</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.KEYCOMPROMISE</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.keyCompromise</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.CACOMPROMISE</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.cACompromise</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.AFFILIATIONCHANGED</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.affiliationChanged</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.SUPERSEDED</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.superseded</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.CESSATIONOFOPERATION</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.cessationOfOperation</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>444</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.CERTIFICATEHOLD</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.certificateHold</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.REMOVEFROMCRL</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>447</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.removeFromCRL</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>448</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.PRIVILEGEWITHDRAWN</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.privilegeWithdrawn</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">	  </span><span class="KEYW">case</span><span class="WHIT"> </span><span class="NAME">OCSPQuery.AACOMPROMISE</span><span class="PUNC">:</span><span class="WHIT">
<span class='line'>451</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">CRLGenerator.aACompromise</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>453</span> 
<span class='line'>454</span> </span><span class="WHIT"> 	</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Unexpected status: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">status</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>456</span> 
<span class='line'>457</span> 
<span class='line'>458</span> 
<span class='line'>459</span> </span><span class="NAME">X509CertificateIssuer.prototype.getDNMask</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">holderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSigner</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signer.getContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">c.dnmask</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>463</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>464</span> 
<span class='line'>465</span> 
<span class='line'>466</span> 
<span class='line'>467</span> </span><span class="NAME">X509CertificateIssuer.prototype.isOperational</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>468</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"isOperational()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>469</span> 
<span class='line'>470</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">icert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSignerCertificate</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">icert</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">		</span><span class="COMM">// No active signer found</span><span class="WHIT">
<span class='line'>473</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>474</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>475</span> 
<span class='line'>476</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.cpf.getCryptoProvider</span><span class="PUNC">(</span><span class="NAME">this.signer.keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>477</span> 
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">cp</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>479</span> </span><span class="WHIT">		</span><span class="COMM">// Signer offline</span><span class="WHIT">
<span class='line'>480</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>482</span> 
<span class='line'>483</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>484</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cp.getPrivateKeyByKeyId</span><span class="PUNC">(</span><span class="NAME">this.signer.keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span> 
<span class='line'>486</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>487</span> </span><span class="WHIT">			</span><span class="COMM">// Key not found</span><span class="WHIT">
<span class='line'>488</span> </span><span class="WHIT">			</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>489</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT">		</span><span class="NAME">cp.release</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>493</span> 
<span class='line'>494</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>495</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>496</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview Generic X509 certificate, request and key store
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/x509/PKIXCommon'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/Certificate'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Certificate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/Holder'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Holder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">LongDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/LongDate'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">LongDate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKCS8</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pkcs/PKCS8'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKCS8</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKCS10</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pkcs/PKCS10'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKCS10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> </span><span class="COMM">/**
<span class='line'> 36</span>  * Create an object to access a X509 certificate store.
<span class='line'> 37</span>  *
<span class='line'> 38</span>  * @class Class that abstracts a certificate, request and key store for a X509 PKI.
<span class='line'> 39</span>  *
<span class='line'> 40</span>  * @constructor
<span class='line'> 41</span>  * @param {DAOFactory} DAOFactory the factory that can create data access objects for persistent information
<span class='line'> 42</span>  */</span><span class="WHIT">
<span class='line'> 43</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">X509CertificateStore</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 44</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Parameter doaf can't be empty"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 45</span> 
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.daof</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">daof</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.certtype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Holder.X509</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="NAME">exports.X509CertificateStore</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">X509CertificateStore</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> 
<span class='line'> 52</span> 
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="COMM">/**
<span class='line'> 55</span>  * Strip the last element of the path, effectively defining the parent within the path
<span class='line'> 56</span>  *
<span class='line'> 57</span>  * @param {String} path the path to strip the last element from
<span class='line'> 58</span>  * @returns the parent path or null for the root
<span class='line'> 59</span>  * @type String
<span class='line'> 60</span>  */</span><span class="WHIT">
<span class='line'> 61</span> </span><span class="NAME">X509CertificateStore.parentPathOf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 62</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument path must be string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 63</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.lastIndexOf</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ofs</span><span class="WHIT"> </span><span class="PUNC">&lt;=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ofs</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 68</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> 
<span class='line'> 72</span> </span><span class="COMM">/**
<span class='line'> 73</span>  * Return the n-element of the path
<span class='line'> 74</span>  *
<span class='line'> 75</span>  * @param {String} path the path to return the last element from
<span class='line'> 76</span>  * @returns the last path element or null for the root
<span class='line'> 77</span>  * @type String
<span class='line'> 78</span>  */</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="NAME">X509CertificateStore.nthElementOf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">	</span><span class="NAME">assert</span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">path</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument path must be string"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">path.substr</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">split</span><span class="PUNC">(</span><span class="STRN">"/"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">pe.length</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">pe</span><span class="PUNC">[</span><span class="NAME">n</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 87</span> 
<span class='line'> 88</span> 
<span class='line'> 89</span> 
<span class='line'> 90</span> </span><span class="COMM">/**
<span class='line'> 91</span>  * Return a suitable crypto object. This may be overwritten by derived classes
<span class='line'> 92</span>  *
<span class='line'> 93</span>  * @type Crypto
<span class='line'> 94</span>  * @return the Crypto object
<span class='line'> 95</span>  */</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="NAME">X509CertificateStore.prototype.getCrypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">		</span><span class="NAME">this.crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Crypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.crypto</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>102</span> 
<span class='line'>103</span> 
<span class='line'>104</span> 
<span class='line'>105</span> </span><span class="COMM">/**
<span class='line'>106</span>  * Check if holder exists for path or holderId
<span class='line'>107</span>  *
<span class='line'>108</span>  * @param {String/Number} pathOrHolderId
<span class='line'>109</span>  * @type Holder
<span class='line'>110</span>  * @return true if holder exists
<span class='line'>111</span>  * @private
<span class='line'>112</span>  */</span><span class="WHIT">
<span class='line'>113</span> </span><span class="NAME">X509CertificateStore.prototype.hasHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>114</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>115</span> 
<span class='line'>116</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolderById</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>122</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>123</span> 
<span class='line'>124</span> 
<span class='line'>125</span> 
<span class='line'>126</span> </span><span class="COMM">/**
<span class='line'>127</span>  * List certificate holders for a given PKI element
<span class='line'>128</span>  *
<span class='line'>129</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>130</span>  * @returns a list of holder ids, possibly empty
<span class='line'>131</span>  * @type String[]
<span class='line'>132</span>  */</span><span class="WHIT">
<span class='line'>133</span> </span><span class="NAME">X509CertificateStore.prototype.listHolders</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>134</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"listHolders("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>135</span> 
<span class='line'>136</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> 
<span class='line'>138</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolderList</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>140</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>141</span> 
<span class='line'>142</span> 
<span class='line'>143</span> 
<span class='line'>144</span> </span><span class="COMM">/**
<span class='line'>145</span>  * Get existing holder object for given path or holderId
<span class='line'>146</span>  *
<span class='line'>147</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>148</span>  * @param {Boolean} create create if holder doesn't exist
<span class='line'>149</span>  * @type Holder
<span class='line'>150</span>  * @return the holder object
<span class='line'>151</span>  * @private
<span class='line'>152</span>  */</span><span class="WHIT">
<span class='line'>153</span> </span><span class="NAME">X509CertificateStore.prototype.getHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">create</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> 
<span class='line'>156</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolderById</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>159</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">create</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>164</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate holder for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>165</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found, creating new."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">			</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolderWithParent</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">			</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> 
<span class='line'>178</span> 
<span class='line'>179</span> </span><span class="COMM">/**
<span class='line'>180</span>  * Create new signer based on key pair generated externally
<span class='line'>181</span>  *
<span class='line'>182</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>183</span>  * @param {String} name the unique name of the signer in the holder context
<span class='line'>184</span>  * @param {Key} puk the public key
<span class='line'>185</span>  * @param {ByteString} keyblob the wrapped private key
<span class='line'>186</span>  * @type ByteString
<span class='line'>187</span>  * @return the subject key identifier
<span class='line'>188</span>  */</span><span class="WHIT">
<span class='line'>189</span> </span><span class="NAME">X509CertificateStore.prototype.newSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"newSigner("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> 
<span class='line'>194</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.determineKeyIdentifier</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">template</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> 
<span class='line'>198</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">keyblob</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">)</span><span class="WHIT">  </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="NAME">template.keyblob</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>201</span> 
<span class='line'>202</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">	</span><span class="NAME">signerDAO.newSigner</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> 
<span class='line'>207</span> 
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="COMM">/**
<span class='line'>210</span>  * Get the signer identified by the keyId
<span class='line'>211</span>  *
<span class='line'>212</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>213</span>  * @param {ByteString} keyId the key identifier
<span class='line'>214</span>  * @type Signer
<span class='line'>215</span>  * @return this Signer object
<span class='line'>216</span>  */</span><span class="WHIT">
<span class='line'>217</span> </span><span class="NAME">X509CertificateStore.prototype.getSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getSigner("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>219</span> 
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>221</span> 
<span class='line'>222</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> 
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>225</span> 
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>227</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>229</span> 
<span class='line'>230</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>231</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>232</span> 
<span class='line'>233</span> 
<span class='line'>234</span> 
<span class='line'>235</span> </span><span class="COMM">/**
<span class='line'>236</span>  * Generate key pair
<span class='line'>237</span>  *
<span class='line'>238</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>239</span>  * @param {String} name the unique name of the signer in the holder context
<span class='line'>240</span>  * @param {Number} algo the key generation algorithm (Crypto.EC or Crypto.RSA)
<span class='line'>241</span>  * @param {Key} prk the private key template
<span class='line'>242</span>  * @param {Key} puk the public key template
<span class='line'>243</span>  * @type ByteString
<span class='line'>244</span>  * @return the subject key identifier
<span class='line'>245</span>  */</span><span class="WHIT">
<span class='line'>246</span> </span><span class="NAME">X509CertificateStore.prototype.generateKeyPair</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>247</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"generateKeyPair("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>248</span> 
<span class='line'>249</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>250</span> 
<span class='line'>251</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">crypto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>252</span> 
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="COMM">// Generate key pair</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">	</span><span class="NAME">crypto.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">algo</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> 
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.determineKeyIdentifier</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>257</span> 
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">template</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">		</span><span class="NAME">keyblob</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">PKCS8.encodeKeyUsingPKCS8Format</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>260</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>261</span> 
<span class='line'>262</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">	</span><span class="NAME">signerDAO.newSigner</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>265</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>266</span> 
<span class='line'>267</span> 
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="COMM">/**
<span class='line'>270</span>  * Get a private key in the certificate store
<span class='line'>271</span>  *
<span class='line'>272</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>273</span>  * @param {String} name the unique name of the signer in the holder context
<span class='line'>274</span>  * @returns the private key or null if not found
<span class='line'>275</span>  * @type Key
<span class='line'>276</span>  */</span><span class="WHIT">
<span class='line'>277</span> </span><span class="NAME">X509CertificateStore.prototype.getPrivateKeyByName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>278</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getPrivateKey("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>279</span> 
<span class='line'>280</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>281</span> 
<span class='line'>282</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>283</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByName</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>284</span> 
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>286</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>288</span> 
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>290</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>291</span> 
<span class='line'>292</span> 
<span class='line'>293</span> 
<span class='line'>294</span> </span><span class="COMM">/**
<span class='line'>295</span>  * Get a private key in the certificate store
<span class='line'>296</span>  *
<span class='line'>297</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>298</span>  * @param {ByteString} keyId the unique key identifier
<span class='line'>299</span>  * @returns the private key or null if not found
<span class='line'>300</span>  * @type Key
<span class='line'>301</span>  */</span><span class="WHIT">
<span class='line'>302</span> </span><span class="NAME">X509CertificateStore.prototype.getPrivateKeyByKeyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>303</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getPrivateKeyByKeyId("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>304</span> 
<span class='line'>305</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>306</span> 
<span class='line'>307</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>309</span> 
<span class='line'>310</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>313</span> 
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>315</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>316</span> 
<span class='line'>317</span> 
<span class='line'>318</span> 
<span class='line'>319</span> </span><span class="COMM">/**
<span class='line'>320</span>  * Remove private key
<span class='line'>321</span>  *
<span class='line'>322</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>323</span>  * @param {String} name the unique name of the signer in the holder context
<span class='line'>324</span>  * @returns true is deleted
<span class='line'>325</span>  * @type boolean
<span class='line'>326</span>  */</span><span class="WHIT">
<span class='line'>327</span> </span><span class="NAME">X509CertificateStore.prototype.deletePrivateKey</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"deleteRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> 
<span class='line'>332</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByName</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name.toString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>334</span> 
<span class='line'>335</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>338</span> 
<span class='line'>339</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">signerDAO.deleteSigner</span><span class="PUNC">(</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>340</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>341</span> 
<span class='line'>342</span> 
<span class='line'>343</span> 
<span class='line'>344</span> </span><span class="COMM">/**
<span class='line'>345</span>  * Remove request
<span class='line'>346</span>  *
<span class='line'>347</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>348</span>  * @param {ByteString} keyId the unique keyId of the request in the holder context
<span class='line'>349</span>  * @returns true is deleted
<span class='line'>350</span>  * @type boolean
<span class='line'>351</span>  */</span><span class="WHIT">
<span class='line'>352</span> </span><span class="NAME">X509CertificateStore.prototype.deleteRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>353</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"deleteRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>354</span> 
<span class='line'>355</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>356</span> 
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">requestDAO.getRequestByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> 
<span class='line'>360</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">request</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>363</span> 
<span class='line'>364</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">requestDAO.deleteRequest</span><span class="PUNC">(</span><span class="NAME">request</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>366</span> 
<span class='line'>367</span> 
<span class='line'>368</span> 
<span class='line'>369</span> </span><span class="COMM">/**
<span class='line'>370</span>  * Store a certificate request in the certificate store
<span class='line'>371</span>  *
<span class='line'>372</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>373</span>  * @param {PKCS10} req the request
<span class='line'>374</span>  * @type ByteString
<span class='line'>375</span>  * @return the request's keyId
<span class='line'>376</span>  */</span><span class="WHIT">
<span class='line'>377</span> </span><span class="NAME">X509CertificateStore.prototype.storeRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> 
<span class='line'>380</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>381</span> 
<span class='line'>382</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.determineKeyIdentifier</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>386</span> 
<span class='line'>387</span> </span><span class="WHIT">	</span><span class="NAME">requestDAO.newRequest</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>388</span> 
<span class='line'>389</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>390</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>391</span> 
<span class='line'>392</span> 
<span class='line'>393</span> 
<span class='line'>394</span> </span><span class="COMM">/**
<span class='line'>395</span>  * Return request for given keyId
<span class='line'>396</span>  *
<span class='line'>397</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>398</span>  * @param {ByteString} keyId the unique keyId of the request in the holder context
<span class='line'>399</span>  * @type PKCS10
<span class='line'>400</span>  * @return the request or null
<span class='line'>401</span>  */</span><span class="WHIT">
<span class='line'>402</span> </span><span class="NAME">X509CertificateStore.prototype.getRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>403</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getRequest("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>404</span> 
<span class='line'>405</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>406</span> 
<span class='line'>407</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>408</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">requestDAO.getRequestByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>409</span> 
<span class='line'>410</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PKCS10</span><span class="PUNC">(</span><span class="NAME">request.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>411</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>412</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>413</span> 
<span class='line'>414</span> 
<span class='line'>415</span> 
<span class='line'>416</span> </span><span class="COMM">/**
<span class='line'>417</span>  * Store a certificate in the certificate store
<span class='line'>418</span>  *
<span class='line'>419</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>420</span>  * @param {X509} cert the certificate
<span class='line'>421</span>  * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
<span class='line'>422</span>  * @param {Number} srId service request id to be stored with issued certificate (optional)
<span class='line'>423</span>  * @type Certificate
<span class='line'>424</span>  * @return the Certificate entry from the database or null
<span class='line'>425</span>  */</span><span class="WHIT">
<span class='line'>426</span> </span><span class="NAME">X509CertificateStore.prototype.storeCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>427</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeCertificate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">",'"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"',"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>428</span> 
<span class='line'>429</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> 
<span class='line'>431</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"number"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolderById</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>433</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>434</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Could not locate holder for id "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>435</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.certtype</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> 
<span class='line'>439</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>440</span> </span><span class="WHIT">			</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found, creating new."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>441</span> </span><span class="WHIT">			</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Holder.X509</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>443</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>444</span> 
<span class='line'>445</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> 
<span class='line'>447</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getIssuerDNString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSubjectDNString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">autid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getAuthorityKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSubjectKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>451</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSerialNumber</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span> 
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">autid</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">autid.equals</span><span class="PUNC">(</span><span class="NAME">subid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">issuer.equals</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">		</span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Certificate.SHORT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>456</span> </span><span class="WHIT">		</span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Certificate.UP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>458</span> 
<span class='line'>459</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCertificateBySerial</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>460</span> 
<span class='line'>461</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeCertificate() : We already have a different certificate for that serial number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>463</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Existing: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>464</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"New     : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> 
<span class='line'>466</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>467</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>468</span> 
<span class='line'>469</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">template</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>470</span> </span><span class="WHIT">		</span><span class="NAME">keyId</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.determineKeyIdentifier</span><span class="PUNC">(</span><span class="NAME">cert.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>471</span> </span><span class="WHIT">		</span><span class="NAME">expiry</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">LongDate</span><span class="PUNC">(</span><span class="NAME">cert.getNotAfter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>472</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>473</span> 
<span class='line'>474</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>475</span> </span><span class="WHIT">		</span><span class="NAME">template.serviceRequestId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>476</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>477</span> 
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.newCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> 
<span class='line'>480</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">makeCurrent</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">holder.certId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>481</span> </span><span class="WHIT">		</span><span class="NAME">holderdao.updateCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>482</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>483</span> 
<span class='line'>484</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>485</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>486</span> 
<span class='line'>487</span> 
<span class='line'>488</span> 
<span class='line'>489</span> </span><span class="COMM">/**
<span class='line'>490</span>  * Import a certificate that can be validated by one of certificates in the database.
<span class='line'>491</span>  *
<span class='line'>492</span>  * @param {X509} cert the certificate
<span class='line'>493</span>  * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
<span class='line'>494</span>  * @param {Number} srId service request id to be stored with issued certificate (optional)
<span class='line'>495</span>  * @type Certificate
<span class='line'>496</span>  * @return the Certificate entry from the database or null
<span class='line'>497</span>  */</span><span class="WHIT">
<span class='line'>498</span> </span><span class="NAME">X509CertificateStore.prototype.importCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"importCertificate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span> 
<span class='line'>501</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getIssuerDNString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>502</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSubjectDNString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">issuer.equals</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>504</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"importCertificate can not import self-signed certificates"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>505</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>506</span> 
<span class='line'>507</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>508</span> 
<span class='line'>509</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">autid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getAuthorityKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>510</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSubjectKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>511</span> 
<span class='line'>512</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdto</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCertificateByKeyId</span><span class="PUNC">(</span><span class="NAME">autid</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>513</span> 
<span class='line'>514</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">certdto</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>515</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.WARN</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No certificate with AuthorityKeyIdentifier "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">autid.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>516</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>517</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>518</span> 
<span class='line'>519</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">ca</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certdto.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>520</span> </span><span class="WHIT">	</span><span class="NAME">cert.verifyWith</span><span class="PUNC">(</span><span class="NAME">ca</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>521</span> 
<span class='line'>522</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">parentId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdto.holderId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>523</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.makeName</span><span class="PUNC">(</span><span class="NAME">PKIXCommon.parseDN</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>524</span> 
<span class='line'>525</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>526</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.getHolderByTypeAndName</span><span class="PUNC">(</span><span class="NAME">parentId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Holder.X509</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>527</span> 
<span class='line'>528</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>529</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Holder not found, creating new."</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>530</span> </span><span class="WHIT">		</span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolderForParent</span><span class="PUNC">(</span><span class="NAME">parentId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">Holder.X509</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>531</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>532</span> 
<span class='line'>533</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holder.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>534</span> 
<span class='line'>535</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.storeCertificate</span><span class="PUNC">(</span><span class="NAME">holderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>536</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>537</span> 
<span class='line'>538</span> 
<span class='line'>539</span> 
<span class='line'>540</span> </span><span class="COMM">/**
<span class='line'>541</span>  * Get current key id
<span class='line'>542</span>  *
<span class='line'>543</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>544</span>  * @type ByteString
<span class='line'>545</span>  * @return the current key id or null if none defined
<span class='line'>546</span>  */</span><span class="WHIT">
<span class='line'>547</span> </span><span class="NAME">X509CertificateStore.prototype.getCurrentKeyIdAndCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>548</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCurrentKeyId("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>549</span> 
<span class='line'>550</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>551</span> 
<span class='line'>552</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>553</span> 
<span class='line'>554</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>555</span> 
<span class='line'>556</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>557</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>558</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>559</span> 
<span class='line'>560</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">certificate.keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>561</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>562</span> 
<span class='line'>563</span> 
<span class='line'>564</span> 
<span class='line'>565</span> </span><span class="COMM">/**
<span class='line'>566</span>  * Get current certificate for given path or holderId
<span class='line'>567</span>  *
<span class='line'>568</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>569</span>  * @type X509
<span class='line'>570</span>  * @return the current certificate or null if none defined
<span class='line'>571</span>  */</span><span class="WHIT">
<span class='line'>572</span> </span><span class="NAME">X509CertificateStore.prototype.getCurrentCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>573</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCurrentCertificate("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>574</span> 
<span class='line'>575</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>576</span> 
<span class='line'>577</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>578</span> 
<span class='line'>579</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>580</span> 
<span class='line'>581</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>582</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>583</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>584</span> 
<span class='line'>585</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>586</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>587</span> 
<span class='line'>588</span> 
<span class='line'>589</span> 
<span class='line'>590</span> </span><span class="COMM">/**
<span class='line'>591</span>  * Get certificate chain for given path or holderId
<span class='line'>592</span>  *
<span class='line'>593</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>594</span>  * @type X509[]
<span class='line'>595</span>  * @return the certificate chain, starting with the current certificate of the holder and ending with the self-signed trust anchor
<span class='line'>596</span>  */</span><span class="WHIT">
<span class='line'>597</span> </span><span class="NAME">X509CertificateStore.prototype.getCertificateChain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>598</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCertificateChain("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>599</span> 
<span class='line'>600</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">chain</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>601</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>602</span> 
<span class='line'>603</span> </span><span class="WHIT">	</span><span class="KEYW">do</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>604</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>605</span> 
<span class='line'>606</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>607</span> 
<span class='line'>608</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>609</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_ARGUMENTS</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No current certificate found for "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>610</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>611</span> 
<span class='line'>612</span> </span><span class="WHIT">		</span><span class="NAME">chain.push</span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>613</span> </span><span class="WHIT">		</span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holder.parentId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>614</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>615</span> 
<span class='line'>616</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">chain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>617</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>618</span> 
<span class='line'>619</span> 
<span class='line'>620</span> 
<span class='line'>621</span> </span><span class="COMM">/**
<span class='line'>622</span>  * Get current certificate for given path or holderId
<span class='line'>623</span>  *
<span class='line'>624</span>  * @param {String/Number} pathOrHolderId the relative path of the PKI element (e.g. "/UTCVCA1/UTDVCA1") or the holderId from the database
<span class='line'>625</span>  * @type X509
<span class='line'>626</span>  * @return the current certificate or null if none defined
<span class='line'>627</span>  */</span><span class="WHIT">
<span class='line'>628</span> </span><span class="NAME">X509CertificateStore.prototype.getCurrentCertificateAndSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>629</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getCurrentCertificateAndSigner("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>630</span> 
<span class='line'>631</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>632</span> 
<span class='line'>633</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>634</span> 
<span class='line'>635</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>636</span> 
<span class='line'>637</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>638</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>639</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>640</span> 
<span class='line'>641</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>642</span> 
<span class='line'>643</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>644</span> 
<span class='line'>645</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByKeyId</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certificate.keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>646</span> 
<span class='line'>647</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>648</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>649</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>650</span> 
<span class='line'>651</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKCS8.decodeKeyFromPKCS8Format</span><span class="PUNC">(</span><span class="NAME">signer.keyblob</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>652</span> 
<span class='line'>653</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="NAME">signerPrK</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">signerCert</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>654</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>655</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2018 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview X509Name - Class to support X500 Names
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="COMM">// 	Name ::= CHOICE {</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="COMM">// 	     RDNSequence }</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="COMM">//</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="COMM">// 	RDNSequence ::= SEQUENCE OF RelativeDistinguishedName</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="COMM">//</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="COMM">// 	RelativeDistinguishedName ::=</span><span class="WHIT">
<span class='line'> 33</span> </span><span class="COMM">// 		SET OF AttributeTypeAndValue</span><span class="WHIT">
<span class='line'> 34</span> </span><span class="COMM">//</span><span class="WHIT">
<span class='line'> 35</span> </span><span class="COMM">// 	AttributeTypeAndValue ::= SEQUENCE {</span><span class="WHIT">
<span class='line'> 36</span> </span><span class="COMM">// 		type     AttributeType,</span><span class="WHIT">
<span class='line'> 37</span> </span><span class="COMM">// 		value    AttributeValue }</span><span class="WHIT">
<span class='line'> 38</span> </span><span class="COMM">//</span><span class="WHIT">
<span class='line'> 39</span> </span><span class="COMM">// 	AttributeType ::= OBJECT IDENTIFIER</span><span class="WHIT">
<span class='line'> 40</span> </span><span class="COMM">//</span><span class="WHIT">
<span class='line'> 41</span> </span><span class="COMM">// 	AttributeValue ::= ANY DEFINED BY AttributeType</span><span class="WHIT">
<span class='line'> 42</span> 
<span class='line'> 43</span> 
<span class='line'> 44</span> 
<span class='line'> 45</span> </span><span class="NAME">X509Name.name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"550429"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="NAME">X509Name.surname</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"550404"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="NAME">X509Name.givenname</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"55042A"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="NAME">X509Name.initials</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"55042B"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> </span><span class="NAME">X509Name.generationQualifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"55042C"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 50</span> </span><span class="NAME">X509Name.commonName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"550403"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="NAME">X509Name.localityName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"550407"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="NAME">X509Name.stateOrProvinceName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"550408"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 53</span> </span><span class="NAME">X509Name.organizationName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"55040A"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 54</span> </span><span class="NAME">X509Name.organizationalUnitName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"55040B"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="NAME">X509Name.title</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"55040C"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="NAME">X509Name.dnQualifier</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"55042E"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="NAME">X509Name.countryName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"550406"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 58</span> </span><span class="NAME">X509Name.serialNumber</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"550405"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 59</span> </span><span class="NAME">X509Name.emailAddress</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"2A864886F70D010901"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> 
<span class='line'> 61</span> 
<span class='line'> 62</span> 
<span class='line'> 63</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">X509Name</span><span class="PUNC">(</span><span class="NAME">subjectDN</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 64</span> </span><span class="WHIT">	</span><span class="NAME">this.rdn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Array</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 65</span> </span><span class="WHIT">	</span><span class="NAME">this.parseRDNSequence</span><span class="PUNC">(</span><span class="NAME">subjectDN</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 66</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 67</span> 
<span class='line'> 68</span> </span><span class="NAME">exports.X509Name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">X509Name</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 69</span> 
<span class='line'> 70</span> 
<span class='line'> 71</span> 
<span class='line'> 72</span> </span><span class="NAME">X509Name.prototype.parseRDNSequence</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">rdnSeq</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rdnSeq</span><span class="WHIT"> </span><span class="KEYW">instanceof</span><span class="WHIT"> </span><span class="NAME">ASN1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">rdnSeq.isconstructed</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Name must be constructed"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">rdnSeq.tag</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">			</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"RDNSequence must be SEQUENCE"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 81</span> 
<span class='line'> 82</span> </span><span class="WHIT">		</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">rdnSeq.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">set</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">rdnSeq.get</span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">			</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">set.tag</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">ASN1.SET</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 85</span> </span><span class="WHIT">				</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"RDNSequence must only contain SETs"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 86</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">			</span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">set.elements</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">j</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 88</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attr</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">set.get</span><span class="PUNC">(</span><span class="NAME">j</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 89</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">attr.tag</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">ASN1.SEQUENCE</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"AttributeTypeAndValue must be SEQUENCE"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 91</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 92</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">attr.elements</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 93</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"AttributeTypeAndValue must have 2 elements"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 94</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 95</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attrType</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attr.get</span><span class="PUNC">(</span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 96</span> </span><span class="WHIT">				</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">attrType.tag</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">ASN1.OBJECT_IDENTIFIER</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 97</span> </span><span class="WHIT">					</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"AttributeType must be OBJECT IDENTIFIER"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 98</span> </span><span class="WHIT">				</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 99</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">oid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attrType.value.toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>100</span> </span><span class="WHIT">				</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">attrValue</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attr.get</span><span class="PUNC">(</span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>101</span> </span><span class="WHIT">				</span><span class="NAME">this.rdn</span><span class="PUNC">[</span><span class="NAME">oid</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">attrValue</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>102</span> </span><span class="WHIT">			</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>103</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>104</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>105</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_TYPE</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Argument must be of type ASN1"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>106</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>107</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>108</span> 
<span class='line'>109</span> 
<span class='line'>110</span> 
<span class='line'>111</span> </span><span class="NAME">X509Name.prototype.hasRDN</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>112</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.rdn</span><span class="PUNC">[</span><span class="NAME">oid</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>113</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>114</span> 
<span class='line'>115</span> 
<span class='line'>116</span> 
<span class='line'>117</span> </span><span class="NAME">X509Name.prototype.getRDNAsString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">oid</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>118</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.rdn</span><span class="PUNC">[</span><span class="NAME">oid</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>119</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>120</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="STRN">"X509Name"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_INDEX</span><span class="PUNC">,</span><span class="NUMB">0</span><span class="PUNC">,</span><span class="STRN">"No matching RDN found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>121</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>122</span> 
<span class='line'>123</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">r.tag</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="NAME">ASN1.UTF8String</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>124</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r.value.toString</span><span class="PUNC">(</span><span class="NAME">UTF8</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>125</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>126</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">r.value.toString</span><span class="PUNC">(</span><span class="NAME">ASCII</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>127</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>128</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>129</span> 
<span class='line'>130</span> 
<span class='line'>131</span> 
<span class='line'>132</span> </span><span class="NAME">X509Name.prototype.toString</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>133</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>134</span> 
<span class='line'>135</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.countryName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>136</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"C="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.countryName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>137</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>138</span> 
<span class='line'>139</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.stateOrProvinceName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>140</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>141</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>142</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"ST="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.stateOrProvinceName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>143</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>144</span> 
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.organizationName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>146</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>147</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>148</span> 
<span class='line'>149</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"O="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.organizationName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>150</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>151</span> 
<span class='line'>152</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.organizationalUnitName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>153</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>154</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>155</span> 
<span class='line'>156</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"OU="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.organizationalUnitName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>158</span> 
<span class='line'>159</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.localityName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>160</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>161</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>162</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"L="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.localityName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>163</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>164</span> 
<span class='line'>165</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.title</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>166</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>167</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>168</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"T="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.title</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>169</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>170</span> 
<span class='line'>171</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.givenname</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>173</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>174</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"G="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.givenname</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>176</span> 
<span class='line'>177</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.surname</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>178</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"S="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.surname</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>182</span> 
<span class='line'>183</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.generationQualifier</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>184</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"generationQualifier="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.generationQualifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>188</span> 
<span class='line'>189</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.name</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>190</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>191</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"N="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>194</span> 
<span class='line'>195</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.initials</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>196</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"initials="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.initials</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>199</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>200</span> 
<span class='line'>201</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.commonName</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"CN="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.commonName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>206</span> 
<span class='line'>207</span> 
<span class='line'>208</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.serialNumber</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>209</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"SERIALNUMBER="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.serialNumber</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>213</span> 
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.dnQualifier</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>215</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>216</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"DNQ="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.dnQualifier</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>218</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>219</span> 
<span class='line'>220</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.hasRDN</span><span class="PUNC">(</span><span class="NAME">X509Name.emailAddress</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>221</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">result.length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>222</span> </span><span class="WHIT">			</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">","</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>223</span> </span><span class="WHIT">		</span><span class="NAME">result</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"E="</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.getRDNAsString</span><span class="PUNC">(</span><span class="NAME">X509Name.emailAddress</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>224</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>225</span> 
<span class='line'>226</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">result</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>227</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>228</span> </span></pre></body></html><html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"> <style>
	.KEYW {color: #933;}
	.COMM {color: #bbb; font-style: italic;}
	.NUMB {color: #393;}
	.STRN {color: #393;}
	.REGX {color: #339;}
	.line {border-right: 1px dotted #666; color: #666; font-style: normal;}
	</style></head><body><pre><span class='line'>  1</span> <span class="COMM">/**
<span class='line'>  2</span>  *  ---------
<span class='line'>  3</span>  * |.##> &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
<span class='line'>  4</span>  * |#       #|
<span class='line'>  5</span>  * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
<span class='line'>  6</span>  * |'##> &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
<span class='line'>  7</span>  *  ---------
<span class='line'>  8</span>  *
<span class='line'>  9</span>  *  This file is part of OpenSCDP.
<span class='line'> 10</span>  *
<span class='line'> 11</span>  *  OpenSCDP is free software; you can redistribute it and/or modify
<span class='line'> 12</span>  *  it under the terms of the GNU General Public License version 2 as
<span class='line'> 13</span>  *  published by the Free Software Foundation.
<span class='line'> 14</span>  *
<span class='line'> 15</span>  *  OpenSCDP is distributed in the hope that it will be useful,
<span class='line'> 16</span>  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
<span class='line'> 17</span>  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
<span class='line'> 18</span>  *  GNU General Public License for more details.
<span class='line'> 19</span>  *
<span class='line'> 20</span>  *  You should have received a copy of the GNU General Public License
<span class='line'> 21</span>  *  along with OpenSCDP; if not, write to the Free Software
<span class='line'> 22</span>  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
<span class='line'> 23</span>  *
<span class='line'> 24</span>  * @fileoverview A Signer backed by a X.509 certificate
<span class='line'> 25</span>  */</span><span class="WHIT">
<span class='line'> 26</span> 
<span class='line'> 27</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/Holder'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Holder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 28</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">Certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/Certificate'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">Certificate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 29</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKIXCommon</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/x509/PKIXCommon'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKIXCommon</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 30</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKCS10</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pkcs/PKCS10'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKCS10</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 31</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">PKCS10Generator</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/x509/PKCS10Generator'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">PKCS10Generator</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 32</span> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">LongDate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">require</span><span class="PUNC">(</span><span class="STRN">'scsh/pki-db/LongDate'</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">LongDate</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 33</span> 
<span class='line'> 34</span> 
<span class='line'> 35</span> 
<span class='line'> 36</span> </span><span class="COMM">/**
<span class='line'> 37</span>  * Create a signer based on a X.509 certificate
<span class='line'> 38</span>  *
<span class='line'> 39</span>  * @class Class implementing a signer backed by a X.509 certificate
<span class='line'> 40</span>  * @constructor
<span class='line'> 41</span>  * @param {DAOFactory} daof the factory that can create the required data access objects
<span class='line'> 42</span>  * @param {CryptoProviderFactory} cpf factory implementing getCryptoProvider() used to get access to crypto providers
<span class='line'> 43</span>  * @param {Holder} holder the holder object for this signer
<span class='line'> 44</span>  */</span><span class="WHIT">
<span class='line'> 45</span> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="NAME">X509Signer</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cpf</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 46</span> </span><span class="WHIT">	</span><span class="NAME">this.daof</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">daof</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 47</span> </span><span class="WHIT">	</span><span class="NAME">this.cpf</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cpf</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 48</span> </span><span class="WHIT">	</span><span class="NAME">this.holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 49</span> 
<span class='line'> 50</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 51</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Certificate holder "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" not found"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 52</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 53</span> 
<span class='line'> 54</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.getSigner</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 55</span> </span><span class="WHIT">		</span><span class="NAME">this.parsePolicyFromSigner</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 56</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 57</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 58</span> 
<span class='line'> 59</span> </span><span class="NAME">exports.X509Signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">X509Signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 60</span> 
<span class='line'> 61</span> 
<span class='line'> 62</span> 
<span class='line'> 63</span> </span><span class="COMM">/**
<span class='line'> 64</span>  * Create a new signer
<span class='line'> 65</span>  *
<span class='line'> 66</span>  * @param {DAOFactory} daof the factory that can create the required data access objects
<span class='line'> 67</span>  * @param {String/Number} pathOrHolderId the path of holderIDs (eg. "/UTCVCA/UTDVCA/UTTERM") or the holderId from the database
<span class='line'> 68</span>  * @param {Number} certtype optional argument, default Holder.X509
<span class='line'> 69</span>  * @param {Object} template template for database entry
<span class='line'> 70</span>  * @type Number
<span class='line'> 71</span>  * @return the newly created holder id
<span class='line'> 72</span>  */</span><span class="WHIT">
<span class='line'> 73</span> </span><span class="NAME">X509Signer.createSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">daof</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certtype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 74</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">certtype</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 75</span> </span><span class="WHIT">		</span><span class="NAME">certtype</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Holder.X509</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 76</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 77</span> 
<span class='line'> 78</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 79</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"string"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 80</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolder</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certtype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 81</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 82</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'> 83</span> </span><span class="WHIT">			</span><span class="NAME">pathOrHolderId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 84</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 85</span> 
<span class='line'> 86</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">holderdao.newHolderForParent</span><span class="PUNC">(</span><span class="NAME">pathOrHolderId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certtype</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 87</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 88</span> 
<span class='line'> 89</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">holder.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'> 90</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'> 91</span> 
<span class='line'> 92</span> 
<span class='line'> 93</span> 
<span class='line'> 94</span> </span><span class="COMM">/**
<span class='line'> 95</span>  * Set policy for signer object.
<span class='line'> 96</span>  *
<span class='line'> 97</span>  * The policy object shall contain the following properties. Some elements are only used in the
<span class='line'> 98</span>  * derive X509CertificateIssuer class.
<span class='line'> 99</span>  *
<span class='line'>100</span>  * &lt;ul>
<span class='line'>101</span>  * &lt;li>distinguishedName - The distinguishedName object as defined in PKIXCommon.encodeName()&lt;/li>
<span class='line'>102</span>  * &lt;li>keySpecification - A Key object initialized with the key parameter.&lt;/li>
<span class='line'>103</span>  * &lt;li>signatureAlgorithm - A ByteString encoding the object identifier for the signature algorithm&lt;/li>
<span class='line'>104</span>  * &lt;li>validityDaysSelfSigned - Number of days the self-signed certificate is valid&lt;/li>
<span class='line'>105</span>  * &lt;li>validityDaysCertificates - Number of days the issued certificate is valid&lt;/li>
<span class='line'>106</span>  * &lt;li>validityDaysCRL - Number of days the issued certificate revocation list is valid&lt;/li>
<span class='line'>107</span>  * &lt;li>pathLenConstraint - Number of subordinate CAs&lt;/li>
<span class='line'>108</span>  * &lt;li>requestFormat - "pkcs10" or "sc-hsm"&lt;/li>
<span class='line'>109</span>  * &lt;li>overwriteKey - Set to true to overwrite a key with the same label&lt;/li>
<span class='line'>110</span>  * &lt;li>restrictPublicKey - Limit the public key of the self-signed root as per PKIXCommon.restrictedPublicKeyAlgorithmIdentifier()&lt;/li>
<span class='line'>111</span>  * &lt;/ul>
<span class='line'>112</span>  *
<span class='line'>113</span>  * @see PKIXCommon.encodeName()
<span class='line'>114</span>  * @param {String} crldp the URL of the distribution point
<span class='line'>115</span>  */</span><span class="WHIT">
<span class='line'>116</span> </span><span class="NAME">X509Signer.prototype.setPolicy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">policy</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>117</span> </span><span class="WHIT">	</span><span class="NAME">this.policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>118</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>119</span> 
<span class='line'>120</span> 
<span class='line'>121</span> 
<span class='line'>122</span> </span><span class="COMM">/**
<span class='line'>123</span>  * Determine signer name for newly generated signer
<span class='line'>124</span>  *
<span class='line'>125</span>  * @type String
<span class='line'>126</span>  * @return the unique name
<span class='line'>127</span>  */</span><span class="WHIT">
<span class='line'>128</span> </span><span class="NAME">X509Signer.prototype.determineSignerName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>129</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.holder.id</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">":X509Signer "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.holder.signerNo</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">" ["</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">Date</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"]"</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>130</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>131</span> </span><span class="WHIT">	</span><span class="NAME">holderdao.updateSignerNo</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.holder.signerNo</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>132</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>133</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>134</span> 
<span class='line'>135</span> 
<span class='line'>136</span> 
<span class='line'>137</span> </span><span class="COMM">/**
<span class='line'>138</span>  * Determine subject distinguished name for new signer
<span class='line'>139</span>  *
<span class='line'>140</span>  * @param {String} name
<span class='line'>141</span>  * @type String
<span class='line'>142</span>  * @return the distringuished name for the new signer
<span class='line'>143</span>  */</span><span class="WHIT">
<span class='line'>144</span> </span><span class="NAME">X509Signer.prototype.determineDistinguishedName</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>145</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.policy.distinguishedName</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>146</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>147</span> 
<span class='line'>148</span> 
<span class='line'>149</span> 
<span class='line'>150</span> </span><span class="COMM">/**
<span class='line'>151</span>  * Determine the key usage for the request
<span class='line'>152</span>  *
<span class='line'>153</span>  * @type Number
<span class='line'>154</span>  * @return the key usage defined in PKIXCommon
<span class='line'>155</span>  */</span><span class="WHIT">
<span class='line'>156</span> </span><span class="NAME">X509Signer.prototype.getRequestKeyUsage</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>157</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.digitalSignature</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>158</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>159</span> 
<span class='line'>160</span> 
<span class='line'>161</span> 
<span class='line'>162</span> </span><span class="COMM">/**
<span class='line'>163</span>  * Create a new signer key pair
<span class='line'>164</span>  *
<span class='line'>165</span>  * @param {String} name the signer name
<span class='line'>166</span>  * @type ByteString
<span class='line'>167</span>  * @return the subject key identifier
<span class='line'>168</span>  */</span><span class="WHIT">
<span class='line'>169</span> </span><span class="NAME">X509Signer.prototype.newSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>170</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">name</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>171</span> </span><span class="WHIT">		</span><span class="NAME">name</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.determineSignerName</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>172</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>173</span> 
<span class='line'>174</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">template</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">template.keyDomain</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>175</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Cannot create a signer without a template containing the keyDomain"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>176</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>177</span> 
<span class='line'>178</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">cp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.cpf.getCryptoProvider</span><span class="PUNC">(</span><span class="NAME">template.keyDomain</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>179</span> </span><span class="WHIT">	</span><span class="KEYW">try</span><span class="WHIT">	</span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>180</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.policy.overwriteKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>181</span> </span><span class="WHIT">			</span><span class="NAME">cp.deleteIfExists</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>182</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>183</span> 
<span class='line'>184</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">k</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cp.generateKeyPair</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.policy.keySpecification</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>185</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">prk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">k.prk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>186</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">puk</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">k.puk</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>187</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">k.req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>188</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyblob</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>189</span> 
<span class='line'>190</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.determineKeyIdentifier</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>191</span> 
<span class='line'>192</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">cp.getWrappedKey</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"function"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>193</span> </span><span class="WHIT">			</span><span class="NAME">template.keyblob</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cp.getWrappedKey</span><span class="PUNC">(</span><span class="NAME">name</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>194</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>195</span> 
<span class='line'>196</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>197</span> </span><span class="WHIT">		</span><span class="NAME">this.signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.newSigner</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">name</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>198</span> 
<span class='line'>199</span> </span><span class="WHIT">		</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.policy.requestFormat</span><span class="WHIT"> </span><span class="PUNC">!=</span><span class="WHIT"> </span><span class="STRN">"sc-hsm"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>200</span> </span><span class="WHIT">			</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">gen</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PKCS10Generator</span><span class="PUNC">(</span><span class="NAME">cp.getCrypto</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>201</span> </span><span class="WHIT">			</span><span class="NAME">gen.setSignatureAlgorithm</span><span class="PUNC">(</span><span class="NAME">this.policy.reqSignatureAlgorithm</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>202</span> </span><span class="WHIT">			</span><span class="NAME">gen.setSubject</span><span class="PUNC">(</span><span class="NAME">this.determineDistinguishedName</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>203</span> </span><span class="WHIT">			</span><span class="NAME">gen.setPublicKey</span><span class="PUNC">(</span><span class="NAME">puk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>204</span> </span><span class="WHIT">			</span><span class="NAME">gen.addKeyUsageExtension</span><span class="PUNC">(</span><span class="NAME">this.getRequestKeyUsage</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>205</span> </span><span class="WHIT">			</span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">gen.generateCertificationRequest</span><span class="PUNC">(</span><span class="NAME">prk</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>206</span> </span><span class="WHIT">			</span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">req.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>207</span> </span><span class="WHIT">		</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>208</span> 
<span class='line'>209</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>210</span> </span><span class="WHIT">		</span><span class="NAME">requestDAO.newRequest</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>211</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>212</span> </span><span class="WHIT">	</span><span class="KEYW">finally</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>213</span> </span><span class="WHIT">		</span><span class="NAME">cp.release</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>214</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>215</span> 
<span class='line'>216</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>217</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>218</span> 
<span class='line'>219</span> 
<span class='line'>220</span> 
<span class='line'>221</span> </span><span class="COMM">/**
<span class='line'>222</span>  * Return the holderId from the holder database for this element
<span class='line'>223</span>  *
<span class='line'>224</span>  * @type Number
<span class='line'>225</span>  * @return the holderId
<span class='line'>226</span>  */</span><span class="WHIT">
<span class='line'>227</span> </span><span class="NAME">X509Signer.prototype.getHolderId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>228</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.holder.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>229</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>230</span> 
<span class='line'>231</span> 
<span class='line'>232</span> 
<span class='line'>233</span> </span><span class="COMM">/**
<span class='line'>234</span>  * Return the holder from the holder database for this element
<span class='line'>235</span>  *
<span class='line'>236</span>  * @type Number
<span class='line'>237</span>  * @return the holderId
<span class='line'>238</span>  */</span><span class="WHIT">
<span class='line'>239</span> </span><span class="NAME">X509Signer.prototype.getHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>240</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.holder</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>241</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>242</span> 
<span class='line'>243</span> 
<span class='line'>244</span> 
<span class='line'>245</span> </span><span class="COMM">/**
<span class='line'>246</span>  * Return the signer from the signer database for this element
<span class='line'>247</span>  *
<span class='line'>248</span>  * @type Signer
<span class='line'>249</span>  * @return the signer value object or null
<span class='line'>250</span>  */</span><span class="WHIT">
<span class='line'>251</span> </span><span class="NAME">X509Signer.prototype.getSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>252</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getSigner()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>253</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>254</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"return cached signer"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>255</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>256</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>257</span> 
<span class='line'>258</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>259</span> </span><span class="WHIT">	</span><span class="NAME">this.currentCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certDAO.getCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>260</span> 
<span class='line'>261</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.currentCertificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT"> </span><span class="COMM">// no active signer</span><span class="WHIT">
<span class='line'>262</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"no active signer for holder "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.holder.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>263</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>264</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>265</span> 
<span class='line'>266</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signerDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getSignerDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>267</span> </span><span class="WHIT">	</span><span class="NAME">this.signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signerDAO.getSignerByKeyId</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.currentCertificate.keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>268</span> 
<span class='line'>269</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>270</span> </span><span class="WHIT">		</span><span class="NAME">this.cpid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.signer.keyDomain</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>271</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>272</span> 
<span class='line'>273</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.signer</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>274</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>275</span> 
<span class='line'>276</span> 
<span class='line'>277</span> 
<span class='line'>278</span> </span><span class="COMM">/**
<span class='line'>279</span>  * Parse the policy from the signer's values object
<span class='line'>280</span>  *
<span class='line'>281</span>  * @type Object
<span class='line'>282</span>  * @return the policy
<span class='line'>283</span>  */</span><span class="WHIT">
<span class='line'>284</span> </span><span class="NAME">X509Signer.prototype.parsePolicyFromSigner</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>285</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSigner</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>286</span> 
<span class='line'>287</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>288</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No active signer"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>289</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>290</span> 
<span class='line'>291</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signer.getContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>292</span> 
<span class='line'>293</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">c.keySpecification</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>294</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// no policy</span><span class="WHIT">
<span class='line'>295</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>296</span> 
<span class='line'>297</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>298</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c.keySpecification.type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"EC"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>299</span> </span><span class="WHIT">		</span><span class="NAME">dp.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">c.keySpecification.curve</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>300</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>301</span> </span><span class="WHIT">		</span><span class="NAME">dp.setSize</span><span class="PUNC">(</span><span class="NAME">c.keySpecification.keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>302</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>303</span> 
<span class='line'>304</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.parseDN</span><span class="PUNC">(</span><span class="NAME">c.distinguishedName</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>305</span> 
<span class='line'>306</span> </span><span class="WHIT">	</span><span class="NAME">this.policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>307</span> </span><span class="WHIT">		</span><span class="NAME">distinguishedName</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">dn</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>308</span> </span><span class="WHIT">		</span><span class="NAME">signatureAlgorithm</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">c.signatureAlgorithm</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>309</span> </span><span class="WHIT">		</span><span class="NAME">reqSignatureAlgorithm</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">c.keySpecification.sigalg</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>310</span> </span><span class="WHIT">		</span><span class="NAME">validityDaysCertificates</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">c.validityDaysCertificates</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>311</span> </span><span class="WHIT">		</span><span class="NAME">validityDaysCRL</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">c.validityDaysCRL</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>312</span> </span><span class="WHIT">		</span><span class="NAME">pathLenConstraint</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">c.pathLenConstraint</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>313</span> </span><span class="WHIT">		</span><span class="NAME">keySpecification</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT">
<span class='line'>314</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>315</span> 
<span class='line'>316</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.policy</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>317</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>318</span> 
<span class='line'>319</span> 
<span class='line'>320</span> 
<span class='line'>321</span> </span><span class="NAME">X509Signer.prototype.getSubjectPolicyForRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>322</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getSubjectPolicyForRequest()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>323</span> 
<span class='line'>324</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.getSigner</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>325</span> 
<span class='line'>326</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">signer</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>327</span> </span><span class="WHIT">		</span><span class="KEYW">throw</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">GPError</span><span class="PUNC">(</span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">GPError.INVALID_DATA</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"No active signer"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>328</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>329</span> 
<span class='line'>330</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">c</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">signer.getContent</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>331</span> 
<span class='line'>332</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Key</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>333</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">c.keySpecification.type</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"EC"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>334</span> </span><span class="WHIT">		</span><span class="NAME">dp.setComponent</span><span class="PUNC">(</span><span class="NAME">Key.ECC_CURVE_OID</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">ByteString</span><span class="PUNC">(</span><span class="NAME">c.keySpecification.curve</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">OID</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>335</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>336</span> </span><span class="WHIT">		</span><span class="NAME">dp.setSize</span><span class="PUNC">(</span><span class="NAME">c.keySpecification.keysize</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>337</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>338</span> 
<span class='line'>339</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>340</span> </span><span class="WHIT">		</span><span class="NAME">reqSignatureAlgorithm</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">c.keySpecification.sigalg</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>341</span> </span><span class="WHIT">		</span><span class="NAME">keySpecification</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">dp</span><span class="WHIT">
<span class='line'>342</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>343</span> 
<span class='line'>344</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">policy</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>345</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>346</span> 
<span class='line'>347</span> 
<span class='line'>348</span> 
<span class='line'>349</span> </span><span class="COMM">/**
<span class='line'>350</span>  * Get request for the given subject key identifier
<span class='line'>351</span>  *
<span class='line'>352</span>  * @param {ByteString} keyId the subject key identifier
<span class='line'>353</span>  * @type ByteString
<span class='line'>354</span>  * @return the raw request
<span class='line'>355</span>  */</span><span class="WHIT">
<span class='line'>356</span> </span><span class="NAME">X509Signer.prototype.getRequestBinary</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>357</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>358</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">requestDAO.getRequestByKeyId</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>359</span> 
<span class='line'>360</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>361</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>362</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>363</span> 
<span class='line'>364</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">request.bytes</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>365</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>366</span> 
<span class='line'>367</span> 
<span class='line'>368</span> 
<span class='line'>369</span> </span><span class="COMM">/**
<span class='line'>370</span>  * Get request for the given subject key identifier
<span class='line'>371</span>  *
<span class='line'>372</span>  * @param {ByteString} keyId the subject key identifier
<span class='line'>373</span>  * @type PKCS10
<span class='line'>374</span>  * @return the PKCS10 request
<span class='line'>375</span>  */</span><span class="WHIT">
<span class='line'>376</span> </span><span class="NAME">X509Signer.prototype.getRequest</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>377</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">requestDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getRequestDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>378</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">requestDAO.getRequestByKeyId</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>379</span> 
<span class='line'>380</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">request</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>381</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>382</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>383</span> 
<span class='line'>384</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">req</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">PKCS10</span><span class="PUNC">(</span><span class="NAME">request.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>385</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">req</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>386</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>387</span> 
<span class='line'>388</span> 
<span class='line'>389</span> 
<span class='line'>390</span> </span><span class="COMM">/*
<span class='line'>391</span> X509Signer.prototype.activateSigner = function(name) {
<span class='line'>392</span> }
<span class='line'>393</span> 
<span class='line'>394</span> 
<span class='line'>395</span> 
<span class='line'>396</span> X509Signer.prototype.importCertificate = function(name) {
<span class='line'>397</span> }
<span class='line'>398</span> 
<span class='line'>399</span> 
<span class='line'>400</span> 
<span class='line'>401</span> X509Signer.prototype.getSignerList = function(usableOnly) {
<span class='line'>402</span> }
<span class='line'>403</span> */</span><span class="WHIT">
<span class='line'>404</span> 
<span class='line'>405</span> 
<span class='line'>406</span> 
<span class='line'>407</span> </span><span class="COMM">/**
<span class='line'>408</span>  * Store a certificate issued for a certain holder
<span class='line'>409</span>  *
<span class='line'>410</span>  * @param {X509} cert the certificate
<span class='line'>411</span>  * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
<span class='line'>412</span>  * @param {ByteString} keyId the key id that links this certificate to the signer (usually the subjectKeyIdentifier)
<span class='line'>413</span>  * @param {Number} srId service request id
<span class='line'>414</span>  * @type Number
<span class='line'>415</span>  * @return the database id of the certificate
<span class='line'>416</span>  */</span><span class="WHIT">
<span class='line'>417</span> </span><span class="NAME">X509Signer.prototype.storeCertificateForHolder</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>418</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeCertificateForHolder("</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">holder</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"'"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"',"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">","</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">")"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>419</span> 
<span class='line'>420</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>421</span> 
<span class='line'>422</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">issuer</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getIssuerDNString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>423</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subject</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSubjectDNString</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>424</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">autid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getAuthorityKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>425</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">subid</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSubjectKeyIdentifier</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>426</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cert.getSerialNumber</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NAME">HEX</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>427</span> 
<span class='line'>428</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">autid</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">autid.equals</span><span class="PUNC">(</span><span class="NAME">subid</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">issuer.equals</span><span class="PUNC">(</span><span class="NAME">subject</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>429</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Certificate.SHORT</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>430</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>431</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Certificate.UP</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>432</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>433</span> 
<span class='line'>434</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.getCertificateBySerial</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>435</span> 
<span class='line'>436</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>437</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"storeCertificate() : We already have a different certificate for that serial number"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>438</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"Existing: "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">certificate.bytes</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>439</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.INFO</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"New     : "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>440</span> 
<span class='line'>441</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>442</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>443</span> 
<span class='line'>444</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="KEYW">typeof</span><span class="PUNC">(</span><span class="NAME">keyId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">==</span><span class="WHIT"> </span><span class="STRN">"undefined"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>445</span> </span><span class="WHIT">		</span><span class="NAME">keyId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">PKIXCommon.determineKeyIdentifier</span><span class="PUNC">(</span><span class="NAME">cert.getPublicKey</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>446</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>447</span> 
<span class='line'>448</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">template</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>449</span> </span><span class="WHIT">		</span><span class="NAME">keyId</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT">
<span class='line'>450</span> </span><span class="WHIT">		</span><span class="NAME">expiry</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">LongDate</span><span class="PUNC">(</span><span class="NAME">cert.getNotAfter</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT">
<span class='line'>451</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>452</span> 
<span class='line'>453</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>454</span> </span><span class="WHIT">		</span><span class="NAME">template.serviceRequestId</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>455</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>456</span> 
<span class='line'>457</span> </span><span class="WHIT">	</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certdao.newCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">serial</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">dir</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert.getBytes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">template</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>458</span> 
<span class='line'>459</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">makeCurrent</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">holder.certId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>460</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">holderdao</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getHolderDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>461</span> </span><span class="WHIT">		</span><span class="NAME">holderdao.updateCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">certificate</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>462</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>463</span> 
<span class='line'>464</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">certificate.id</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>465</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>466</span> 
<span class='line'>467</span> 
<span class='line'>468</span> 
<span class='line'>469</span> </span><span class="COMM">/**
<span class='line'>470</span>  * Store a certificate issued for this signer
<span class='line'>471</span>  *
<span class='line'>472</span>  * @param {X509} cert the certificate
<span class='line'>473</span>  * @param {Boolean} makeCurrent true if this certificate becomes the current certificate
<span class='line'>474</span>  * @param {ByteString} keyId the key id that links this certificate to the signer (usually the subjectKeyIdentifier)
<span class='line'>475</span>  * @param {Number} srId service request id
<span class='line'>476</span>  */</span><span class="WHIT">
<span class='line'>477</span> </span><span class="NAME">X509Signer.prototype.storeCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>478</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">this.storeCertificateForHolder</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">cert</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">makeCurrent</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">keyId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">srId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>479</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>480</span> 
<span class='line'>481</span> 
<span class='line'>482</span> 
<span class='line'>483</span> </span><span class="COMM">/**
<span class='line'>484</span>  * Return the signer's certificate
<span class='line'>485</span>  *
<span class='line'>486</span>  * @type X509
<span class='line'>487</span>  * @return the signer's certificate
<span class='line'>488</span>  */</span><span class="WHIT">
<span class='line'>489</span> </span><span class="NAME">X509Signer.prototype.getSignerCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>490</span> </span><span class="WHIT">	</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"getSignerCertificate()"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>491</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.currentCertificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>492</span> </span><span class="WHIT">		</span><span class="NAME">this.getSigner</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>493</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>494</span> 
<span class='line'>495</span> </span><span class="WHIT">	</span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.signer</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="PUNC">!</span><span class="NAME">this.currentCertificate</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>496</span> </span><span class="WHIT">		</span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">certDAO</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.daof.getCertificateDAO</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>497</span> </span><span class="WHIT">		</span><span class="NAME">this.currentCertificate</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">certDAO.getCurrentCertificate</span><span class="PUNC">(</span><span class="NAME">this.holder</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>498</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">this.signer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
<span class='line'>499</span> </span><span class="WHIT">		</span><span class="NAME">GPSystem.log</span><span class="PUNC">(</span><span class="NAME">GPSystem.DEBUG</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">module.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"no active signer for holder "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">this.holder.id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>500</span> </span><span class="WHIT">		</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>501</span> </span><span class="WHIT">	</span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>502</span> 
<span class='line'>503</span> </span><span class="WHIT">	</span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">X509</span><span class="PUNC">(</span><span class="NAME">this.currentCertificate.bytes</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
<span class='line'>504</span> </span><span class="PUNC">}</span><span class="WHIT">
<span class='line'>505</span> </span></pre></body></html>PK
   F.\           	   META-INF/ PK
   F.\@=   R      META-INF/MANIFEST.MFMLK-.
K-*ϳR03
.HMLLN,!-x<srRsSJdyx PK
   F.\              de/ PK
   F.\              de/cardcontact/ PK
   F.\              de/cardcontact/scdp/ PK
   F.\              de/cardcontact/scdp/scsh3/ PK
   F.\"J,  !  *   de/cardcontact/scdp/scsh3/TaskTracer.classVksF=G@ 	B)(wx%54w7(%גC;/|hfL@T۳p^0d+{]
4^f@@B,қ-ܞWv(q@2D-`YlY+۾J;,v!;QTMڪ&B']ZBYzEy,KàZ
w\xWcbc`asY7EǴ.__r@ɰFoٱJF>CC5bnnCrɷe޵%[UCkaUw-f]
tEPeI=|e 	Lfʩ(q]1 xOg0#ZAA ۮ/AƝfKْZT.{I
3X
--אf7W{(o,)]F}is9>g㛔vJ۠&pg=Y*,Лm;[r-\5
~fcQuujQN:Y.#egG2]r<5Q̨ڔqңN˚T8簖CO9fE-TAtJ[Ǌa- i2,ŘH޷d5N	"r<>^lSͶٵk1z&4trxjymW|9t
~j>u_ۂx[/N{|A%IH~@f2uG{EB#ڝ0W|?de
r݁c_!xl^י_c_V!6lޔ^Us6WfS/bTʘRKbZQ	[5!<Uue(J| 'ࣙX?ZIx%x\=/ۄfr6Ώ4|+r;o 
ˑM]Hr!<17iq|Y[1P!JG#Z<9;'; )λsyϰhwGسLS=0A8y1:\}Mv8~|IRN$#1
g6R1K5R"j]Qn+N8G܏Z ci{l|h	<D1`1Q;ΦS
|:,㱷85FWǾed^ee9²h&7ah~zȸ 1C6MeL>[ZʫZ{ﰝaKar_8W ]^G!'ӈl_4&֦4Cj6vl\*1R"YEg#~4k=\/xPK
   F.\K1    &   de/cardcontact/scdp/scsh3/Task$1.class]OAߡҲJ[U"l^`"JlD^xa۱%;HW&ޘh21	e3s>sf__x?1drzqCtX_=tC~Ga\0;F&ڴi(Ie-˸0a->Y@Qa(~)@aTҬ3djZ=MQRXYUST)މci].Cv|V:d!vy"D5}/ WךԉmSܤ	eT14	Ŧu\UŚvwsSG3Xsmy Nz0>Q}G3āigvl;΋[;ԉ-͋XSR"وBcc)S Hu)1qIfIV`c+ǘl|G=O81o<7Iu>UhOq>!xOy}
,2S?NYsV5445h
PK
   F.\w    4   de/cardcontact/scdp/scsh3/TextPaneOutputStream.classV[wUNw'Tr161qD;Ѐ0JpH`' 	hdT+Ia!0:8/yf-IDҵ`-I.g2߮dQ콿9wD
L4YuТ}Z<]媞оm+4u\GWoA-&Za*+قV
2g%}r`1]J
l8X.n1T~N<?dalS뚎Bw^_Vw6{J*g]Fd'rwڞu.[!bUv4@;x
oы%{s+r5a*|{nQHj78
ւ{%9oqmvɢ.38RVÓRBUG=</VM<-
Dc"w|G3FhGWdXTmcl2d2povA\O;3M
m@q7*e;hQ0dbXc8As#{ߛ8Qi/Sawj7oxQs+r]<"5N\*ex?
-DጉvEoΙ8lgY[\ְ5N]k^5p_;k
 v
o$:Vh!˼91*(1bé͉κO`Ĝ6mm}ƫ8w: OMN<kaHkWm2Di{tma \#MTr#Ʃ ɌܯS4	]ty33DKf(oY ^We]I[sX+E{u-5	C~_ъYk6AwdEz~fV[u'U^/#ܪOp#PxQxE	V^\
ʛ0ϧ˯ ?@z*nHgn-
O:_+<
Yu3Irǰ-xoɡGPF:t?
4D'@
Xxfafvh3?j73r԰ f}mj v'ywdZ&I8E.h=$L)ņ|2O0ß5@dMQUǻ?V{YA?
LvlGg6=CKLY&g!IkDI*]eۄBh'H(z)z.ܗЕGb)]TgEl]ߙ\Yq0#2wkJtݱ^Rgz6gEL]:	H5&:%WN<Sc#LZ)8-yL&c߅jgǸÔ6^QmD1[bK-!zz8ئm!:uh8|rМZβ`!lvRbdܻ%,h_'311NOiO
6gAO2;C(%	3<.½ah!"5A$i
c_?j*!*gSQ/*	u	^ӀFD#.GΜggPK
   F.\*P  ?  -   de/cardcontact/scdp/scsh3/OutlineNode$5.classS[oA e-zZ}01/F#(
/>aL;KLI ԦJd;{-g~Sl簂K0lh+Ox{)j,j;9kRDݥTm+"g\^QಋUJ3>^̈́O2zcCk.*Rr:GfgvqMpڔ)"ż:{n:P9}"%T$1dHw`]LF"?MV*C3AX.AmM#u<%!?PID,6MS-8S5v,M%?BwU;PGArD(8^jt{{qJE_}#:!cJ[^ JU9t{d=3o:kN4"tf(['56x5)oÞ&XN%˛UG4Y&ZScf~~PK
   F.\ɳ  D  *   de/cardcontact/scdp/scsh3/GUIShell$8.classRn@=[:iZJ)I0T*@US-yCY#&B"QR%̞9h4?}!g0F4~LA$8ʔ	tCv@g|xvæ36\r"TA@aGJ̖l\1gB_;[AKؕJ(qI`&	)<L0цw	TDxԧ|_S\H='E~\X?ɴ4wY>X`N,ԖpqӤpU;ѼWꎊL'j%3bk%0 QvI;FV!Ї8yb)gyi6uw;ZM^/<)FX1޺)gqW8⼨_ `*1|VUPX"PF5\?zwrڟ!vu
w`	]g:Vᗕ:n<G
PK
   F.\Z:  "{  (   de/cardcontact/scdp/scsh3/GUIShell.class}|[)˲c2I8eg8!,˶Y2)g
-3B MH].RV|$I_Eι}s 0]Bi.Y[K[%#?@(@n衃ǀ`0m_8bQ_C+D'.ZUY˱-pU)P28m@5zNmYdC{Y[,k|p0h6nRC03Zni
.05pfߍjyiq#ZotSj[iyͶB$DSm0Ikl~U7 AN61A1TCme#zսԀ	&^j>$&[(ΦL܍cp3UWC FT9ۀ9a&*p
Gfo5{V-]hPև1ԲЀE{#ȝѰiCKCO_*p6g2+Xh,eԨ"m!g*VS ?տ6#k
#:ZcđpF.hꍁ:PF?Gu.
]Mg
95EAth&q6V162^ocXn= &h!b04/qjZ
8GEQwDD6Us!7QQs[
P4ڍq685\.BipD".w-FA5;\<kiy#8~]±UXN+IX XqWƀk:f\|8+ʪJ﬐HX0efvn(!֊**z0~"6$ɂ DoDYS~#eNv]_Ýj;n{ϫ:׀Ȟކ5PCxq?GsMn+n7F/M0'W]HIļX`ʀA亨?fxyfYE2!2%I;8/?ޥ1qڡOy9:<jc8kyR-^"J)	CH˗'
x
~sVӢeJ7<cPfpo
<k.*U"!<22\Wͷ:z/{?{Հh)H~F<'xsL3M
,75-(`9HŞ4_
TX;
ޅ@uYVEUQR+T%8c#Ϙ4>+i
4"1@0mlAS#j2(eFb}
3
#L+jDBU(_W(2H&cKL
6$Q+kL랙kkjC-+_PX3X[Փc̱`QwA0܊"
^K8Ta4988F&IbHK 
faef0C|eXvY	":z0z`Pf"VSk)	:ŊhbbQ }ሿ_F2Φ..ZP=/z'7OS5LR]l0bj
tb$2o<`ThKQ]LY-ee!FVt+<l$;0EN9%I83xg*G*efAIp1Zjm|`lImVV5TT_U-la>AAUcA|6`:CHZ8oEhHv܅̃NNTfZV.,a3B<reֺ~;DUh[kk87T|c+.QF m+sc+-BC`K#<T*j*Vd'8m?kV%\f%c荠L{4XŨnV58 :ndrFwٺ=FNt Y-km抭PI%Z5X=sKKБO+p$`	]bp#$lfNpҒE'-=FMYYhY8HaG1{Ĥ(2E<,8`v:#;g3YVIBAnڲM؅:`zde:zَ7&y%p7h.KnUvpCJ]E~n)!ڸkv-øl $5̰(;YAS`M(h('&dpUn@vϮٞt$zOPK;n#	z~ʣ<mi9p/ǑIwNZ{o`mU 6=lzѪz ǠI/2DG8Ǜc:-:ezRv?MpGTyaXaͿ=l j=
?T+:+Mcƚ`b8'JL&AԶz#S%5ɠ=aC#]$O)RUXRq{6%LCGz `~he9	IgϧXa<7XCɐ=N#\oW1%#f6,G`(뺔
3)Kb~:LE)/E6;
	0Qϱw
{faǦ)bo 訒PfyUe-٧}F,
^jTilp0&O[t
?-x}"PCj̖ptv$]T@N=;vةs) uӊ,2)Y8@iyl&K RaRRu[l7ǠBc [LSPfS0uaԉ Bz$5H%XK`RxSS@Ioj+4x/wݼ1US	6ߙG&O!l2!W|Y>
vȆjV7cQs-gUЃOq,x/L38(o*+ץ݊zq7_lJĴ}>\h(BJK'G"U%<u\k\zbԚQXps=Dk|ByՌ	*\*e)0gt^wbNuc'6p<7nЃbcfhlf!Ԑޜ:6XAtu@Q]mZRu:183<R7?E
Ŷ*ː?P<l&ux7yn@[
>rplC5˩#>S(niA*Ubq/RQ ֡*%|'jP/7	&) W?%i_ ܨ_ϑn4M*Q`uYB +?{1ߦvo!Ԫ16VCg
dgy<ptcfi)^3;+u?ή%OUW
Agau C(-M~z>olM lNeJ0g<
~q)hXKꁖaGA3[-F'2/}?lv{["2PI'
XkE=5PMV3
[/7-zQpW\T$
Wж/En[CTYa:=j.i2oCN:-Eɔ!Yh9zfoͿ1}B0 ڛko#Q4o+D[Dz7fbZi!54]I&cQ\rO
/
Z}kT"8?'Wj/!3ȦU.KWiD-GM͞Ώvɒ3ߑG
(H;}	oi2VQ!!hS2
]PlA NTLƩOsnAeY? 
 UҠe:U
4':VGE?Cdr2h{cȆ!f8<!3Bi-v!
^J&ӈ&K6F=bI#
s$S.GAVg9RU/toZl.=L74L\PdBCQLVSܢȋ],b"jP1nChN"b!V%͡,R	EhWRM-o6ob!
!.S-k	՚E9=]{^**B(sՋ
Q`C ڊ2`s){[ڟbʭƪpSdck1rCHU{jr]Ԣ̴4JΕưGk#|N[	c:z_k$9@`JU8TBȷ͇6?/݈JTKjYnUnCIK´@,
N?-HP2%v@MYClUsq||eUedT-
R,i32Lw Q1^N.JɅ{DLl1VAڛ$
*ziF}L,#pwlP)S@8wS]@΍ĶeNŅ!EmqءR4pz`e 7e\/)#|U%e|JC\<,]S
yuz]`MiPyzXm$d2I:8ungn*][ Rmi#Dq!wd_rIu)&X0]̌s^C'~nDq:30joq!~IA}mʐy	Úx0q8p0CxX7c~@z?yMOt#'ww	oֱNGMوN.3LU@C6r{BÛU^oDc"1/&%/~MCC<MBԼ #8,cU^{ĳ*!xUY!~OQ뜯"\AE0 @ (%3²_yZw4Eo?MC$9f,*w4QXUF6
Cw]C'O8?nR2=J,Dm5B]tQ1zݺg"fOſt!->yѪ0HVZc= BJLU
q)mT|a/WȡK'nѨ>6/%V[Զ>u&|>!w*UG
	R.V@'/Eg4Che`1&\*Rŧԥ9XL+I]bKeC8N$;&g$
 >ư
Uxd*rLngpұ`gh9Ԑ(+"bEhs Q<P`IhiSCf<K!~2:8~!h|7nI+ogd.Qm	oRl-KW6Bd
Y"1vb0/&Ru9A1\mZ?uS9UN9ڱ8u2	r!OVʲrV!Tg#g\뺸{9SIVYn&\lJixqFr$#2d5 )ke\.Wǭ5i,9QpC(]e+WrM
_rOȿe%)%==#Gw_&99Vd!p!^YbB!Eݲs>%
6/=QPk|ِזSn.!-2L{6c0YȨy"v:j͐iRPڊ~ܖ&p{ن<h[
f9ϐSO'JE$LF$r;#+C;;
ym}y0Iǻ4JaܪV/E+䕺ʐWtKx	X-صW֞ʊt:.7
F30(~oW׹2_UeKVr	z=rܭ˟t_U+V# TH.J4]|åAr+rF|5
NB1)fLr/ɚx]>ZӮiCGu!IPƎT;_|J՟M!C>L!T*4?԰$cny e~l7dj
M{А[P(
I(0!a;NcƜH|AY
1ނrR*F-05o
;#B9C>>̉*
AhȗQBPMސ"}^3^:֢gCBV3%--+=!hk6;IOvM:nH}+2]~h}
S]~xotI7>.җ\`Uy-]JV2lM)䍵Eyj/f/>^θ.}*'Qґ.n6-mkGj;YJHޭJkq7D_dF1#g 7IBo+je0?<BjjoBY)00 nm6-QݓvMEL8)".!s9-fn]
-<e?ME/ƞDkoɿ
)#f2&.Lv퉏+h1@NIMFqEikOtuuTR\eΎӭԅJ u]$I6hnWQj?b~8A]ꦛ[ϖhnoJrI)QNMÏ;FZ__o(eDjwv|΅]L(ĚVeTX#P#Vfx1%fzuz
hY*յVMNrZI"(mXuM#Ml߅Hԑ1GQӚ)Z.U'd\tuo6ILzTE^i1#')	UeN9ZǼncQ@-NZ¿"őpm.2Pܼ->fd@dǟ`څ_[j>&\4FB
i=~K*DHtSUY7rxTu.?2隩</%eDhm
so
e*"D=ȉ<7WJ%2fON@PzѰƚ
>.\vv]`}څOIcKͫZݒ]N:.
2Z}$2D&CS)ʽ`
*YnbdYqk;Ph+I=#ЗK9Hpdfsk"\c/Cl1xms&M0x҄IsrP-~qQN5,Bmٲ%
|)3Dr4F-94q~	ɤ)`Is%֮DfFKq)K><&OurPr_"XG_
e"?k7XЎv!k]Qma4cp@~$	av?P8xߟq?;ޟ/Pq}u=Pm}**`UGZh<WerU?**isV*XeU.\mu<YgXUyDpѳ7om8WXV#J/k:{FU<BRU~tާiL^hb=e>z, B g+`@^ӏ~N?'~ODB?3g̥2s*,SK?kgl(3ڡ 𱩮 5Q|k; v9~.,y vb+Ujo=qm"{b@f[7nc6n`#lXD8"s]KX;7t	>q{[p#pz%r{]~-	7fx71'8w+p/_`>$D,[$RIO_op9k#_ƕж?	wf5Sq[/
/:-8zޏ}}nq8ٽDz5{T@d}%,s`~|8U0
:ῄַ;|>ZWkg pA"nA-ڌ&xޅH!nGP C	&(@+X_h|!-(2;s
LM
wyT$_܉_?pYm?b ?SbV~[7#{Թ$uQuQ5 QԍJg_}X{&"Dw!J-w]'[βY6	!68HeA
d#Ykj-,(_+lgc)8׌bf(V{!yǬlgIpv&8[[Ɯ-5_WXPk|SY6FaFt6XFC
>A3m,7aEp3+jc 5d͚H-KqJfenڄ &u6RGLgzu/LjC;L<]=R',RO4ImRBxg62$ECGC)[tY+XZobR
*'{mkӀ}+pA{`%-b*=Ejl-oɈ}$C2q9dhk!	l_mMu'M@a8ڨ0
l=BV@%vf5s'k,gT2ya<Сlb7g>둵{~N. ,JVp?;Y6j27.A=~gRc: rXJXK"8\<a9dL&8ή'ʫ5͉tCGnF`
ۥ2L@&^	l ,lH.T3o8'!6nigMl8	Rb$Dn(xܫk3_~*M,ҁ?#pd>GNP~>VѶMYÐ}QX}q mӈ31~9SLbR*S#%:li!3u2T;{9Dx:8-=WWQ_q0ɁtXMBX=Qww=Wjg/Q.U,̷7}Tbojn
r17\[
'a"{j.wgėSOǵoRb
;UI=NA]Q6 ٿ>+S!e}C/;8WB/OO3|s:8+}"3f*G
J鯲W*}E˱ðZ
"YFv.ȷǚ8q^c=t<v<K<6$dq.aנ!`
2Tu.[]gaXO9n
dx=q<O<㗍Gp> )|tNAzaG>Ќ͠l>o18;i!<5q-@\"|W[fZ#YaLYT͋M|g!..ҴB\f#.sSSfBik먥'sx$&OsXvihGScMGTD
FB!_@`B*D|m2ed2VCG>܀07; BO!_a-}>ZqچL]g+>?֫¨"Q1jC6mA
b61gcv-bFZcξ0w꺂lRXZ*|
4/Et.l~#⻐7vDW̆GHA̀JOKEo"Szk	u4'zfDt"z!zz#^6zG(#zKz3ڹ׉Ҍ-MG)DiD5DuDOޛ)=zmnn1B[qnHc&ۭvX`݊NHlrߊt{ C>}@9}UR98,#)(R@Y&}(b&NB(MkQQQ<
q
)B@EC2Q\&RDRjig2ԛ_ M,zve#$'kMR&磿"eAKD ',D@dDsRrBPt'|$L KcFc;3}ck/p
F?rD`o_,w`*2*[0e+cyayl2X"eqgYe*V6l[rUnVyUoq*o[iis7Fq~.V^a/dwe/\R#2/;t+sI-5۫Be{a^/Wdk:3gLo?)4l-sƉÕ'YXȦElX*V!Ula*vXEuUbb"g׈Fv[}/c(g7=Ifo'm2l3;Þ\\x?DPzFK
I`q\O'߁Wc]]c=  0@P9akNz_[F3J|.@k'>UL܅>/`FQ{]22,J8ԉ'txů^<	7ըɢ6hՁ
ѤhG`ί}_K-jK2p*$;'>!ΟGdW?_)8 ?RRPNx=+0@
נPf7 g *UR̶"ac)ـz 8tr\[%<ګ8zWPLں8+BwpO=Ż0D'j0aI=!6uARV Sަ7s%+Afߍp޶RXL8ڻ0i-p9į*(sk_m72(JjAt,6X`֩ =)uP!7J.Uʢ2zl'`9 tCLnQu'+a*!X3 ۮFk)5EJΩi;(/-oHsi[7H%RQ@
ȕ('2|݋a,@*e
%Õl.WDVC6n/G`Y_I<qENz`Wq=lƍ]]q]]PP7"$% g=P΄r6.p.yp<d,p\ Bi6@Y,qZn4#FYh9-}4|GtU_R֜[9e"Tn30٢A׃b@)נkţuȖE4r-f#_Q4KػσdJcɻ)d\[TN1@Eؾ f^SP$[,ˤPj`"[eF:a^p-ebYX!P͈qqAX-:DL-TjC`TP-"Cl!jv;m"N6#HV'8?2EjCߌf!BPn|!/BL^?;*y)\+w.y.UO^ZxZ^/ɛOr-M'4܈	Mhcqw &t2dqhNV[u)xdU5~+':{ǖwPf-Jף=BoAv|-҃6;9KЇ\).+n͔C3xӴڣ.1M`95@NϜo
ӴGNO놸EI-#G[%WNDr0^b2&8L0C> TN$^>~M0W+BՠIS OZ)0&iM&jJq$p8]PM	ҩd衋Ѩݐ+.a6Y-#i83LͰ|夅;]<-մ*teOHkw+Ǜ]Xϒ:RhO@HHN@m!cbM].}~ ccmccÞ
*,I3Kc.fŴo3).w{SѤC'vimcMi{96Ȭ.dȻ
}c?tT"
B#_?Qp*ƶ2"d;,\\BhCN%.b1_IcT=Qxh0Z k W&c4^- B~DUq܄6	<jsl㏃lJRh%کmŹ}q7kF9YTZYA潧
?Lg4]1^DGUiզOp:vkry!L[,Ӗ[eӮb!TwuECLS$og`^3tzk5Z-[ea֬V^sLOf oBg,Zx^|rSs/G3aɈMیlVѶm;ζt">m 
(1pdG(M7(W [
yPxV9b/w!W%bh @rd콴uz߁x;Vb/[@/߈%5X
`EkWAv5ӮCMhoBWh7,n)|
RxT\PLj*s3*>3Pmev謔ş	蝨;>'
nޜct
uvGs'kk;`>uW.> {7\]"]	ͤn7=w$8͔{=f*ƲSutt](YuZK'PI0.Z!<IedTcpMgoSO: 1r:Ě8搜.eH7qm
)E#lSZh	a%5tUs߂o[d6,^"̇P--%AdGaƻ`$מ3:bsp<^f%U{~wkС	Oi紿k-mT{>owӴ[yYO6R>c2?Zվd>+Ҿam95ր@-|+c3I#Cj=TesTl֠lzkr&N֨5YAqbs.|[QM\34kWZ;K^Kn$blj\=$O*|Sea\A{o/ES6h3%aK.uy |Wiۊ޸Z G&9ӌݷltgVu#UqT]D~).[Ƨ>aÖYUt.5
ylQ1./4W)W6H ٮAE05F@kTFC+בZe'-W{#*mF.Z.Lnpp6
gj)܂\JY,ǴlyM\^GiD|	t]urR+SނByk퀼F;]u-iR~E* M me	438tݕYY"*F"L-%Pᚁ?6f5]`kfy]`..quPkAr4P"R&J-6G\*֊#Q6vAB憯I¢94=$C>	nܣK#!,SqyY|x^oh?=O,zT!< :w	­C%9v-C-媅\QWLq]0u&ӋT+\
uMp+ 4Z컱nXŔ36$@"k??EZD. l HƣX=83P	Q2CZhSOߪmjz=.qH-oky5.;8sЋH^~~w*{
 (w($ RӬ*ZlY]f]݈̐PK
   F.\8b&    +   de/cardcontact/scdp/scsh3/GUIShell$11.classn@I6iKJI!In)A82)4\ojM%މ< uHRkޙofw?}J k!g#æ/Ǿ)=$?O2<p^t{C!e}aRcG(dlc6CqGr8o{P2d~	KXX
:`XsSx9P鞎Qװff:n0^`&A[Ű3WL4(RN䓱ϵ(`xܸ5N*nd4{>F}FmL:5M+M9FIq&Y\GI`Ȱ JBѝP(܋&'^?w
BybTFa1P|1P(H(!*%I"ӜpZ5J㛥wiI䑡3iܥo|Px{$צ^OLR>3<ƌud
Z99buv֧~i6n$mEPИq<=Mi:LRmwӝ%8i,==PK
   F.\T_W  B  3   de/cardcontact/scdp/scsh3/FileNameRegexFilter.classS[OA-K
[otU4>/	kHmtݩO?`?e<3ELl3g;s''xAc.RgXy?C/z޾HPj0
ŝ4.! b.jKz-4EO&lYmޕ<bMd(1pboD~.38}%.D:^`V-8q1Se':n@
]?by?(d)Gdp7t%$Nk6lyД'd8RA#:D4+උ;<	QPq!̩ᷨAwO\eq0ۊX5F}0Q+2};&k~,+K<;>?Z=2T?A
h;F]h*}+*ǘj$[%!Y2`=CìgWtc|ӟJas'֨`J˸O93S<Y$e	RfKS!mG&J崮q[Hw*FY PK
   F.\ 7x    1   de/cardcontact/scdp/scsh3/PreferencesDialog.classVs[Vv,q"G J(E
j
)$v;86-ZXזUՖWj˻-}R^m):ZL;us^ftwϞǷ9gw?p'>#(:%
fD]4^Ө3W6-#Б9GkK譨Lp*e򌲗q˕:3uL9*+)ΎhlR[RŖpc^e9BP@w1L>@(UQWy%nMj` X$[$(<eLH3mQ\'$.F@3;w;$	CFᙶ$&^uhԼBvp]9Z1{$""OYaâS=e[$nEF`=hٲ&^0LK9De$+^nv
˨15BAKCq;%͕Y7skI,v-abjBwq(2TS4N
/J{%O`-3[@vȰ(>:H	jK!E1,q鲊AIlP/˖(*B<XaL ]ڋEۙs)*骚*s-%+t=ƩKǧjBbPj޶kʰ0~ey}khXr(mBY,14UՌc7JrQM'5**cJѩT8?4ʑ&GZ<@2$mAI{t*
)0OscSᡡviK:5#ʭètKmf{	Xb'$N5EvN
l,;T|;,	lcZhetK<hZސë|l+	Dld^xOЂMn*˲Oi
єӅY4]:Ў&Ӫg~)Кrx_1svEOR_3K/k1G}@Fwxx5%~_R9V xè	L7ϯ$~t㪊W&%'{nMK$gk,(>ߑxъb_c.dWrF0wW<^դ-ryWpgOUw9DSp4T(wvŨ	Ij:Q2Q+D)2NMay&~Wԣ.,cdRJʠjcE\NɊ@=ߗڊp?/kߺ!}zh[DZuLѡ5:abxE>/{04Bڬ/ӽ[pe;HW2}|_b	2FQ݈}lHw@Wo>@k||-їN|m4K0;6`1.!Eu=d= 2]!Xb"!vL_]K9JfyP^콀K yDb/q%|Q/@4ۗ5EV/q|3́<>NC.(<J|ax>K/&CS5H_@!U)g&RNuqSp4xnXt+SDi\7͜>Y|LL!
jd"7|Ͱ2X;@b.`
%6I-`DO|I~uܓFwL&XgA-N 5\y|e9CgPK
   F.\U      6   de/cardcontact/scdp/scsh3/TextPaneAppendListener.classmA1q^E%$!!jponzĳ<mpr|`@AXZy[2hRR9f[Ȗ@0]Fًܝk֑0	lDڛ׼&LU9=yA.PK
   F.\G  /  0   de/cardcontact/scdp/scsh3/TaskCellRenderer.classW[{]'<<!U(dى&Dr
.ȱX3B3J{mI^CA/}/]{FvCY{?~o qB(z.wr
ƒi+NXO*$G5X[vUjz]naBlKF\r(iTϫKJδGMl̚BEQ
l0aP~)
$lfU݂{٬vX9]HЙeW'MjvY򳣝SԹINvܡ=:]
wC
UYN&*^pX=4"ґmxkq:0У:RSY5V̜+-Cގ#:"vr~X6d0HD:>cLNNv->2L[n:?{fdV}u4ܯp͓28##9X1.δA%Kˡ;=Q4aVa()9:/&|X1!NuӦ&xHYC9s߂h?]M,^M^ulH˪WYU?]c6G'Hgĳ9ų3=gU8u,B(OGIQѴ	6J+5Y6qO\ۭ>I<HRvdb%ݢgʭF,07!,`YGE6KP&+ulYqrPyEӳ:j`ԴI.u\0q$l;2PpEsx>LPn &&O>
Vg릆O)B[)/Zˎkq:KD8Ys˄SsdcZ[pK=o,7'#~Ţ7)p &ҳb^	#Vp^:0(#;T7HcV}`ov%^;9w:jhKa/.s;߁U\	6EBaXlE.)(GHV-*%:ɼrKuo5WX6ɚ-/M˨5mC6ݼxѭJ%n
gQ[_3Ӧ_qޞ^:~'wzo9>ň+
/o/Mm;Tpݕz]FK79öofc#CM;\
÷d?J(0bIOy4{'0_d0ހJou_	?y8x==yy-4I^k`t53GBȆD^{I/DD-\C4MD6v@'8N< ES6>!܇TcB|1.!|/я^#i8dBס47-iN1o}8q/_ǉLoMeb	-ZL,5@JVs
L%zIp#\ǾL_*@q(r)9>@Ls┴vUiRc
H('i@os؍?-Ib<B$<Gx4$<<<x%W&&9t?CIm_:~^DW	O[aYwrL븊idTz?ďh~^?J>S$d}[NA::_n&ϸ?_Wlc{?OA+lUPK
   F.\m'
    &   de/cardcontact/scdp/scsh3/Dialog.classXyx~?v7b`աV6xmd
Q[.BH	[NK6;,	PERV'ҪE"ba?hofHvI>Ov;~o{^ 0	c|
*8ô\>'t;mN}=yciZ#\+䜋|nAXHu+6vv:SΞXf_aU@!Lu*Cb.^@0W6N]<>Cts(1zs24x\[D^/%+W;r%ƉLW!D*Vrry;1k~hEѡ%̜5)t	ǣ0ZR5]R0g[Ee-K_T+WL\nYҀQpb%ۉ1]q
*$Pd-sp]fk`nqrYQtrf׀*ك}Qsn,Rp&m;Z8[98T8/cO$<#I4i#s4,NW4/ m[z-H֗
+BΫQ*Z&ڌb#O˨q_S#vq1kN0 R¸,Qс'2dj&,JtcXT́b.̜cRAI.NDlubĬ[֪J=/S
x:[yxM\$c.3?>B1VG=;ĕ*t`uger$˯c0_Ψ0+붓*di)J(pw(ar%KYӴ
CQaŀ`hiAQU`aeIٞ8GOH5<GEIT5 !2.y0G2*l-Ald65IlVq
6Qv˱H*ZuSݍBtEz{%ע]>.Fc4,#bXX!]mTLFذYȯr>b>ˀ-O}y^͸ET܊1Z"c0u/H^X&>-l
 KLWAVm4!&bd4!|\y7P:o #S@ޔżtzkFRi*ҩs3qj.%6fiΓ)^UH
n-w(V}K	Ѵct
_LIݳJ
U=-wJ7񴶬n+Gl<n\VEz3g\qB1>TbkvUz
"5Pd<.4ɺ^me3ty()hjC^)qua2EcfY<揗Iivhrs"IִJ:JSdں'X[*wR-uCvƇQWێQI4j=	hI/ыnQ𚂟1ƍ;R`8,`,YiBp"͒4^\b8Y3cOaT'yk3:(]d2؏>	=Lްfx/Nq6=9WYexa6-cqI
VxV&䅂ؤ-$
?t|wB.wv74܋Cd	?>Jowi7S.|ָgA>U ae9ef_}hQ`YC؆/Yu 2>4j}#zX{u官GxpG_Wt_tx,z~)KmT+x6	_NwĮ2Oij
|ݓY~e'ȁOI"Y3vt} |{1$uuFpJ.GCRєa<`4ͷaV#'Y#H
A7W-qa2@XkӔxT.KF(ًU˴n,Ov`c4L;ho+|3,M{5ɈT)AS
@Sb+uHU}L9aIk᧏|Zk7
ԂðcB/# viX7SJ-&ZxLF|R;ۆpTskuGkC8 q"Q5Zu+oPYҙviy]n(S4~h~6
cztFd7b#nܭL36`Dع{/i)b2ACd<"N6ьGE+vxBNO3³b#[1"sqy/E
=~-3#=s|Fh{EiW\Jʻp^THy*Tʼ;kaZԄV\Cu,M|`PwHf$w>J~`U.G;=\,\SpHxA?ďhՏ)wѦ  
h8ݥ8Xx'qA(
~x=ro().\
b"6ܢݿqko;sk`?PK
   F.\u5  (  $   de/cardcontact/scdp/scsh3/Task.classYxuYƲlEe=YllcI6l#FҎ؝l	!&I!yhĤaS.`4!M>h^MӦ3MB!3J^=K}ޙs=?;/e0!#37R=q+iq;ұt>$(2L[5ڐZX(hnR}!0x*1l:qplǔ}ks鑎/)ERFLF~!PCRDf_Hlgm>24,j&IS~3-TDRT4󰙴#sҤYcI0m);U@kC
=f4JkVPcr)kLGm
ؠuکD)kdRUXZG
j3soKg98(%-7YМX@PȚ9<ARp	ehHF=hvpho&V2T&|r-[P2#Hp){%]C.ˊ#Q#՗"a\:6AݟFފdG߼<ZZr(5'C#qsXC>_#hNQ!\+X)ʤ-/q0vz
-:Z"6c'1ߌRQ=Ti0oAѮCŌ֓H[iSEn7`#\3iA-U*kWAW>A(ݟ{:g)s:l*"7Л<Ī-7\ΙVMoraM0¤9syGLS&
^͞*LvlqVD,Aϥ2$]8cPƝZPy3Ry#gwH~
3/-1df@wO"i!TpTǝKyLGӶ9hT.qݗb1L3!zީ]:Ż)\ˆJ鴡b6uASNm!Fy4y?l}^52%5Ag)Zs
xH)b
watwSju<g/7mu<O2rд2GbR*ږp(8~Cçt|a7ݣ1Y*&8IS"ݵf)agu|'D<wZ E
a<Tۂkf2wY
w{N8I:^&0	fQ"y:d
%SLTUxFǳe n~XT?{4
0m/bEa>1G|> 
Oo7R*1+KxYEڶ&:'d_b7
8l6RluLf4|U~N]uCc&ި}t،]5QTuL&;f(W:_sk;V
_`nk83,UM-qGN&Q(ظwT!;㹷73JGauNsH<vh'aMVֶ-G:?ff'80*3Tz2;}bSg8q*]?i\25bjf
4V&mP4n

[Iqlu7XF-j:ޚ"IWֈ*6T-iHlKJj8E4]Bsw<<+'%<?S0gMb9Ȑ]:94LkV7Mq"x5)$2<H5Y!#P*tY&Ց9N`Yޙ4.+Il=;9
(f
")$Qe
	JI.kYT%tߩJf1,5J#ZqTVNkŔb\wBt؉tNS
\njVbKNe.MN4ay<veMefLM^ Av&xud.%Z1H%Գ7ѹ:y@aImueSp|f6Gmsh@TQ(ˡcMY'TK$;	|I<^ȊD%ȋQ1MW8r
z3I&`;NӾmcFޜuɆt6_̞}2lr~2GU7Ɯ}AT6.WɭMS>tCMz)O6xXz4ffpJ04CBґ9!Uڙdsҩ'_	Y>f[w^+5|zlҖM-bxKOWH]UUUgd^1&D_]PՕd
AGӲ&;qgk7vZTܼ.BPiEw0%}P}JJ"<6 K? "RDӥ|^cj\_
hA w;Im

|^7ՏA=pge-kQ,EOc](&孂]TىC=SOuL6oƅrlz:xݶQ"ql{1p#^4uϡQpwY4a)]zыH`-CLVv8:nd6^ZTI{)D_XZNqxA^"㺺(nTF6Xđ&jr0h],C%ϹM]@n ރ/z
|J<]|=9IޕOۻ\o1ޏ"ڶ۶P}\&D5t~`B!oȳ__<	N Tֶ:`k#šQO^GX0> <ѳ')]
]+<=u`
:~qwm>G}}k#ǜcJ{G/1<N"fŧE`<2f|W,hjr#uX-ҹC39pBO_>;z92]|66O'IhYĉyQacn,(;'~k3闸Yzem_q7zofn9IkQ*7͌[<sw:7!'uSNryq>	T_#,_g|Vw7_J_J_J?[yz/o+/Fn/p/%i#|}I'$kg0][Rs +Ǿr|(|=Ṯ?3\%zPፎVli
<_꾻ش9T7AѕF~
L\erBq, /=sS2Y\R:[i"zA@&nԿA30zU^9Ҋ@|P6%%?ǟFTABaP%a\"zVy;|
7tA{UUY!~6eU{╎QyÏ"p^e/W-Ï<oE/=ڒ`[ʤ	*
";?";g1QP9_HzmXPNu"<_ssT0O4{Hʈ",EX%K^1H*YkevE8 k#k1(U,Yq?=(uxLLKP'+`&4x/e@A2}\$I/1$.9+U$WDWeXױu:a>?tFmƥ6Ix\s8L*/Hiw~mg7NgdiYYVVdLV8QUnVqdB~_Ɯu9IP/WvٖkhF-)e4]AHDEǀrS5$E*^)HI/1V͖duEPϴ(ܫ|i
Y
WRJ+U~,.շS.V?4&[?FONȺ]%Co@VMa9,#^XF<ThZ:}Dz VUxk<1X[WQ0*FYR],w3従>9ݸkIUfZ}Z}Z}Z=Jq\Ǽryn^윭ԬYzD[ҰQC&wk@8Y.
j|wl)eyrioLoLoLgL^B\fIϩbyc PK
   F.\ƕo
    *   de/cardcontact/scdp/scsh3/GUIShell$5.classR]OA=SJXJAQĊmAcJLbߧcd;Kf?DLP(Ým	ܽ9g_OH`,qp=|/{՞D=w߼kz")tqTs F$]FgHV aԴ87jEjESiLcazuaSϥ`o`jJpyi9rp%!EGJ6M:pկQ=T3bou;!ef6W%7+nV	UwrM<nP#>ҨĸXHodƱ[Fbȵp̞!m酑&"AJwSCw43,_E2{B6NCJ!Zh,ghY`'X 
E
;6SY
VYtE0 Ƈubi<ʈN{,T9;7ܺRr1%# U<=I#^Zc=sPK
   F.\΋    -   de/cardcontact/scdp/scsh3/OutlineNode$6.classRn@=:I
qSR Ix "U^x@{raw]R| uZ.j3g̞?}PtPrq3+C0a4&G$i$ʻ<i%|wןb9lQcy.*NcnF@motةy\1x'pm籌bկy]\ez`ɘh3/<v*CLJ>Ha?;%jU,uHVҐ'}bKfkVpF;^<dҋ*t^PŖ;`[^^0I5VQ9XfX>SE+hZZ&Cá{ UC'݋U<6~(tN:
y'fn W.yj
BuXspϳ
a/_5iοWിbs\ ;C4`)nRX$+x[ʭ{FqĶ掸8YSn;Vigy~PK
   F.\6E  S  (   de/cardcontact/scdp/scsh3/JSFilter.classRn0=nӦMӮ+Vƀ`H 
!M\TnCڝxM"Qx]Mx(4]+>_ xG
(ڰ\PfXy^AFޑ`ǩPKB1HNwAU\x260d#t>eoC>zOcN¾V堅K6\,t_ Eqb`W\\5_'P<\'7.nCEDaFbd6~dۦN(0#AP6Vk;DsCɡPEk|ϕ4|#2OEA Msy7Qe%ob$$1NPI.Or;
fq
6gV
`"y?ߡ&EFVw2pzK;Sdڌ 2gSJSOqumLжhx*=fENoH:ֱA*Mzhbk˹r6s2PK
   F.\c  L  *   de/cardcontact/scdp/scsh3/GUIShell$1.classRn@quP 
%N0EPThKJ8pګfx+$ā8 /Zϗ>fPᅘE8E:I(ѽ`$P6#[w	?9Ay|bbq(I擇)?0 RIP 5,8c'1ThlHQ}8|.0ԝy^<xgKihz!jt+YSЗJlwEw3,gC^H?*ze+Po-&-,R1,Em<\1|\$⑴'c9tMLݞ3+X%g5qμ-552)%nƵi*4k^#FKmVw`8ee _qbcBWͺװtEE`Q-}_JwqL5yoeǻqo!r}D/PK
   F.\`!    *   de/cardcontact/scdp/scsh3/GUIShell$6.classTRA=rp1	Ȣ(
K 
cR*|/ t>}FHG+0LYHnJ7-YB*jC~rų1D
##apo]߱G9SڮCmǖzSE3jPe8^atB7"²eɵ{\ы> &v*w_ڲ2<cP%SQ񊐏]QdN'	gq\H:00O$CSUTJH긊	ͬ[e=B)idz^)TXs+p_WL鸮P[ܗT|<s<m |ڎ툕F}Cxk|Fk:lu?R0L#_r.KxUfTrSJ,ͪغFHClS^-)9`ˈ@	jķ(nzV1i8,9fPIȪkx4Uےp)4?aD)#+\ƨGx}cg^*T$~qL d&2S~fF hp&71RkN-&.B3kD==$`LI}$=qEip0X,m3b!/Hi_ah0}530[] K!lP"%\i#:cWPK
   F.\Kج      :   de/cardcontact/scdp/scsh3/OutlineNodeRendererSupport.classuN10s
4Љ2DJ*Ҕ1 H&&nɾGƑ04	%Vxֆ.Vӕ&G:1f7!E+M%[C3)$1,V/Mu`Aim[] c&#IB)<LPK
   F.\`    +   de/cardcontact/scdp/scsh3/Preferences.classWw+٬,m!C!`	Ũ&V#4"maY+-IڦM+-p919jEkvf}ͮ,nEBXGFl;o.}E47r;6)
Q
x"h5CÞiї7|yOWxČD)/l
ъU)":"VujH[(7]>+IP3Dʔ*UgԱE2ҭ6wݘ4
|]esZ֚Q F&gfb:vih7x)/*N\9
F+=ϕD{ѭ#i 5)]zr,ixs5qBi?~*/1;y.3Qpxg;fɡI)
`Ux
Okq8n(2kariZ#T5Mʅ#-yJ눜(%mxhztNz1SZ|e2h`' )[e3_/nI^²(p QİF4U3??fy܂H8v)pl$W$	|	_)VdJ*R1-<22s`1Mn)ġaF	7ױ,yu,()Q\E! \`ЂT-+d.p_OM7U";
Bѡ\zh\Slf07SdJriμiҷe%.֘y*i؛lQdڳNCh*m>
(L*aᵪ(p'y o( m.
ll>i	֞R9JbŒ:nf"nkf+0ax\f)hN׃0rt\{/s؎XfeX8sim>#FoeNSX8|-~%2KEaΖJql"ꘟӉ!f8ZpRvYV'S*	+]4m[:neCQ۔cOlPG!T
K/_soWreGw?p0uZJ'
ZEo!]AL]lNelh&Bxϩ0.#'8n`4 WH>\kEﾅo*?1>6Mg$5y@|ﾇ'cp}8)d1{^ ;8	ZVa9/!K?rʟ0A\')W2bGp\HSn9sCP
{T,}/]xvy*9M9f)Z6pUom{
@@K9Jsx$7H16KGɏ70*ښskʻzcwݾzU->G!~Ȼ-xwak  uGxGh!#1Z˭ӥ@L/i~!
{inV0}07~/mpW[
 4A/z%5v콇$ĕ~o_o5X+s%|źj6z6W<JOa|Hw:>:Stg٢X1kb>j FkJr-Zkxǈ-ur|<&Vֻ*1W]]֓:o{u]G$>wjAG~ʃUp4:Zx)
;'#1x~%/į> ~͕߫'屆?/PK
   F.\l  27  +   de/cardcontact/scdp/scsh3/OutlineNode.classZ	xT~Ldr !`KH$Q	D jI203gT֥V(n*"IJmjk[ٽVknwы~ΜL&d<Of~?gXB<
n]==H$X-#ýf}
nkn3B&!p4lGȫP /
4tB'Tt`#YuGI3kb
ƍ(ߒӎF3^G	>cWo0!2h*1h`݌]dS0P`
Fc>Q4DE;i#p<a1CLbCHGPڒey
b&AeUy(-_F"FGy0Qޙp,CiU#2v1Ѕq77XPjPa:fCFI&]MFh|!Zǔʖ1q8-i,?kD /Du3r]im!?VYHXc	fYXFW7Wm6h9	̦)Pq9j$vFt| Sn'6Rحфoi/ޒNYȍ([6/V1dbt͛06;3UfLZDJU4se.}k	XC_mv'vW[.4fYz/~0q+a05!%%8%'Q	ڡdE}ֵ6:4ۍD4i^2|P4[cɄ1H4;qw6!ia0-z`4%'hFC>fVVQhwc#nt	xS7U>S6T+eCr6h7>lӆ^\N(bl2"¼̞Qd1<_h!a+[VбɊ3#B"xqCȷʮ<kqa')tMA@Gu\xȋ,Du܄Yaf.3%F
cq65⼩dxܴEsp;p7awvF;w*8Ofd|^ʆͰJa8#h	SһuhTI@cmU*
O><OQ?	rGR!NQٖw֟ߦz+/x(AUޓL.Yn5(>1|3\4"\Kh]I2z%sx]S0:,0=,MՍwpvub:7zb;
Ol3|8>1R?!i$Ӝ_G@nM0T1v1Ѥ2ץIc%8Vf闳䦪
^|͟P[˃_UY,b{:O/aG9}' "9Y|x	/h6G~wY%gayL!q?ďVܩn暑
Yw[VgcV^:7}x02[8:gz!,("zcDW~3%>7je=ǿIlHSl-㿥)q'{yyl<G?.\]k;G(A"\^t&Ⱥ[,=J+>#mE^B[a\3؛1qN,*r@@3"hhmStn0㦗&pބn$*UXCN3z
tPvi@6
c׸3@uA3-.[5*g7md4K#"%OI<v*hh]c9%Tg_HTS
2df,u12Xh!-tΐ)\)`$Y:-K=kt6ih	5Hvst:Yw/Ϙ*g%Ye0#Ufg繏hF:<9vڮ28NN'ӽZq<hѩ5`ȻV6HHw'5e6Rr6vF:hŴA:]"[bd=`z=<P Y-Svc547nL8XT]Jyш3Pܞ앃D4NUsRq	8m4<?3G\  	ٳFKa!IILɞF|u\!+ଇn;/L$lj<2uϘ8K;0ҖUo\8UL"ǒu	ƻXYdZ)wuc
 kl+@ǵglo
Y$ѿNS
-qa^`hBtWڋ%R\fEN9Ǆj%=;oNNVLFr:elN橓
mԹ%g(ѝYc95(JN:< Ug;|'1ӺZθK
W#+&}*?x"ԡo/vƆZY
YwoPZQ硌S
op!1֘E`OalⱞѷevqgV7ˉpeа<L<C5S,b;9K\nʉy`6/X.Ur sNH^0
Úm԰
GOd\5ѺgŮKnn9H!%;hר|
5w$K0U}Cgi􄹵Mx.r<k0u(u2RQ]B^!l勬͈w=Am:0x#{ǒ*,8-5F3\Wpf0HO|SF?렒YݹYMߪ݄{c^h,b$>g!j8&/æcȯӐh('vj*r_߰sO3(H!v.c1	D ~[Ο!P'{7SLj޹"j:
:((>~"9 0˙[i~[4)$"Qowy%O8գִyylwÌڒg ,e\Y
`+`ݹpw?(GnfFQPiq8%|
dRRI@;h'.W<;vn#<@t_Yw%]e_o~
Z&ixv6/U4L`zL2W)r>b96fF]sC}8qpcpӏVvchPڏu
|u݇MՇ˟B=}>?dW=}rЩcnb{܂Rʘ'n{ؽE+c# >$ )/kmhbK]}<zz7sF7@&эd &G'p
$p -x/}\i~yn~)}_<y&&(RQ:8M~Ex(Ê⼒s;Ncx<C'k~
qяN<8cN0ϱIN!ۼx'|	3
H-~v@0Gus6LK0[6	yjFkt/i&urLf^k$xJ(XY3@:%<{p(rz~&~w?9-`q5g1oo{&]o؎
 )6B5LYpTAw^ݽ6k2 ΰnmpSmγ`)E{w
]<{"	n'0|%<7y}R)OuJUJdݜ19

Ӳ"GEj93RMQ )b^{oW~N0]#Bf"2),oJ,m>4uͣ5K/<	pR|=C<ocV,~5_סb1-J:;-6;4;4;4;,vTJ:AOVB	:(ߣp-_V-1JrNXb9]
G+-W8ZhYITZry-?eGH]y9`#1f}Ŏ4F𸔝<15-<MMMMft
-ys=b[e2C#/Wm?n^$FI?~5nx6FZiӹf}#RGնcÍl=@ZM7m~ELJfu+p5q
+Y[m>_͞ގ`oovn}+I<
˞t-c:kaK{^8K>jQo?E+R\}3OzJ%$>b=5'MӊR/CUeqnX@O**>ApMGmzgl|)9$ߣϩI.YDß5#$eW-(9,ܷy9\C[qM%Lz2+z4v+z)\9S~)1"[2(_Et{6Z>a?y_kw3w9| jhCp="rbSntx70ʲ{eOۿ
h&yi.;@tv'M\,=kQvr&GNs)ZjW'Cf0p\uJ]Ҙu) L6w%Lj'y\$w1T=<O-5<
Qs8ׅjIVjsUL"a&ϲXekѸLYKP$FUS$eb+
ٲ'whϳm1xdĐ+kx)῔'mLn䞥YMF.}Y;A_g$.y֪
: c4kS?[)wĖ͛ K=iNPTEp"(Ngc~Z*7mvRlC}w]Gk2eוlk؏>k1ӵ],
8u#VnB
u݉ݮpn\nq݋]POWm؂Zع*#.H'y~>v7[8>@/Kor=Jlh`F0
5E0[ѷ1mxB1۶+mlu,}}#ʼ8GzabYuļ-5lRy2'wW24ةYE^6}g';lϴ	pǧBZV9Yơ^&dn~%KIpԪҏ$'#xs%Wҏ9k{>b__ߴ\߄PK
   F.\V     1   de/cardcontact/scdp/scsh3/AbstractTreeModel.classPN0צ	@K66(EHS`iq,jvbBb(K@0 d|_^b~  !akUUzp*D,WUySו̔Ɵkÿg1b=Fx~\M]Bf+RXJkZ%~e(SB<igr{8':F|8+
f`z⢇1-l2&fî}Թ? PK
   F.\B9V  2  (   de/cardcontact/scdp/scsh3/Observer.classVkwU7v0})JI B%-HKtrNęI)Eg(k?3C>t7w{>{o .$bԡ^dQ,+ZVb?s.wlGE)PvCx&;ހt$
!p|GM@ U5\tzVZAd-o}7[%HzL`@f)M[v =)9-d1m驊c$q uc
]o:7.٥S@ 7"Id?ht_v<wqDGHtR%?MHkN鐴.=QLa&9Y}k34%WNI
mp?bl^R9=e 򟙯Z%GGE*rxO(Xw<,	FjWBp9hEȟq,mT<vd
ݶڵ
{1%
le@؎: b7jC|$ppޜ2v0ÙNcY7/%э~1 `J9ߗa@^
\>iہĐOR-o^myj\r,U
m:^e~RzcJKU.ɸ깺36(Y?D*V_g"dEN#5cgr`HΈ|_,3L1k@(%6U
EK>_ɖE;pbW1ֳ_TxkpvRUqRu+%mŷq5&u
T<,7׃Uq3lg۠eaFNoN$U5VǞwγ]clTSOųU>8d{bWxKx{SE8ƦceSGY6i#Ի7]t54nñ.+JCЋOdD[pU_Z_.lnmJm]]btߓj[_x.kmZe6[;KmZMm@(*DG
7pCΠ	I1PRp x0:k2
xĉF*4'{zqf]dpwEv'`'B"p&I$N[!\xa5j:[-ӚQnܶTsCrqkB'G.7]~F:Wpx~GwAtƵ|v7qcz	0K؇ytLvg`,Xj履P9z }Ep+OBmy;|PK
   F.\!1  W
  3   de/cardcontact/scdp/scsh3/OutlineNodeRenderer.classU]WWݗ$LFA1VmU!BH(Zhl (Cr!cifG_iW]˾?Ї~;	(>̙{w}=
!
a$j[1Ŵ_2}M.u˟u[eY5Q61PFCT`Zix	ÍCC(؋NLZؾQ^USu2m9}b&=sF"vlc5q =]eѯ1)8+3<bH^*:!x/p:CY;4sS<p48{7*5m7))DS:Nmq7,(ܶl7+_G
KFUd_K:4j)Q81%cQ*-F;
sKAfq̌[gX[d5s>M'Zo::t\%#b9KcK_InyK}nn.?פ`-
(]שc5TyW)J:'gR*k:c^V'ӳFQ#(ĕPcMHG{io!m1#1D΂4/kƼőS2f`د+NF(u6$nU5ݥF.79zwN^$*Q@Tç$UοY`͒ȪAaհ7
,V!Oو9A2WZX\Y\swJuJ/:ZI*
Zp9c8wBuÉŗj¦Te33θښ/Lӱz-Zw[NW7&Dΰlu*)θZޠ4
z-8jW^
gjc|x˚I@W1DWh#s
S|ǃ#i
|UhbIv9ԏn3DȄ
x$33+Gd":<.axA^dэQ2b 9s:gnG"k0TVAԗpVQb?>=1GS^
4E4tj@}
#,qARb<hq~vwdd/g8J6p9Oğ!J7K)є7dK)p,9#=K$F6j1r;P%a>w;H4//DLҩH Ey/LP`-
"H`U`9/rwɻVةTӐnaO˫A9YX7-l>>XF?PK
   F.\0=?    1   de/cardcontact/scdp/scsh3/ScriptEventRunner.classVkWG~*^
Z+
	1ڪQlEl	P]1YHv
Qȱ=^D1T8ٙ2;7 Z26ъ6֒(YN!1]hd;v0"@;:DL)D9	\s
~l"J0$VqGO[rR`(zD}`JVBmk5_7d.HvnV	t7@fv
ZDVXUn^M "To-
&2rh&8hm-02v(|0#[WMhFނg=rKap\`Q$81n/p1hbQp*niЌac[*ڎ;vD)q!+~ L!鑠5m71E.r2sx{&@3vSӃ@_E7H߷
^2FdS4*=
R3dⲺ/[T'uJvkv(	/[`f	y"U_zA
&L|43aJ`GAS[^ߒ
֯4iG78{6p!6"6	fHJ.צḳ9&Lm#̺M!Ѩg:wU]F>cyz/̈́Ge&Wuyq/[r_wԻEp;K`b4P`}!鰼ir~̞ΜZ#nc{p˙>fuCn+mU
jIw	\Œ4
綳.j"_uŚӔK'bj0^A]e@2=iu^zs\10Z|_ar߱վZ_5e	أؘ1|[vc_)D4Ft	vFO޳}`N頍ϓO]gЋMI	wޯO#z0B0|No51їH&6N<Fd'%=5$1J.1=43:$]^l)5n?F&8{hHKtw&2^)L}mKyb:пtϯv܃00p!L]~_(t?c3B3{lM@NGb7<#i7BJ+;ЕuU%i?פJ8a}YDFψi8lLc(_1"+#<"ed,jM؝:Gz[Ǿ^Jlh[5iͣ\
vkE8{o=zPK
   F.\)  >  -   de/cardcontact/scdp/scsh3/OutlineNode$4.classSn@=ۄ8\4qC-HxTymUݭuWH-H<|bvKUTvƳ̙;X/`	YcX?8PR@I0>#nB)vX4:RHX]wQ0B%CWE:be>q?rE@
kL5,+.BMn{gn7p-q[JmJ)"E]|i
c>"_9C^2d{v0	#*ѐǡi0ht4A8\13q*ƁMu4FJB9z.<$tD-f8jU<QE7	 ߣ'ݝw?ƴпmsYgwDߪݒRĽ'HP%/.* c> yzd	>}EQgxHk|6,L{t(b111*d/~hY)xbhڿ*ZhHO-PK
   F.\6  6  *   de/cardcontact/scdp/scsh3/GUIShell$7.classRn@=뤱i
-Ŕ$H<U@"B󾱗ĕB"-H%̞9h4_~:,TlT=̠"xG<ҁC:al45=N
.mf14)`ox "M|MJ=p%|lz^~'%e#t BILBn<V0bES\'e~RsaX? Zn,avG1-"Ӥt5wy!mJhGq{XmHWi1aXl@8xqDήPyȊד4ԭ+%nB95RўY2UPIyYq;>u>~g0tRp5,&1q1%?LnYö~fseY!砬Us@/PK
   F.\?:  9
  <   de/cardcontact/scdp/scsh3/SCSHReaderConfigurationModel.classV[WWNKT{$ j&AIU!9&#L:3{EW]bku_t.w&Cəs>y N"hю3*nؾQSN];Kw
+5#tӎ}׬6\7;T%qδM@`ԅNti]\\sjB01ha
n|lP5:v(+5îJ/]kحc
+JGW-$D4W>	&LAZJ1Lb3S5:[YWVv4
i
߆w~pP{ծ@b
,;	v3:㈆H[MfxyyyK1Q;X^M`z	kH	\+FKUfIpZw@o~37li?2ؚu
sdK 8'81/d&RyCc=WؚǒB#dE&5\1KXMS#{QW\tUb1	^5㯽mjqcƌ5+UjGH^]:>R$O㖎%R	n+mވeѬHĊvԍ3mo,IhYRqʆU2\S}QfRco@&>' m-g`
Xk]|Ψ1
uꪣkQ__mz[ߌو*
E=59ל_CCEW3Eg^elvIC~ J}M)îX;uF};⃺\vkWKB
*Ѳa+%%+Smf2<Ozዳ5|'lMc>E?#|e6Oq|s9qw8~Ư<ch%t?
r@<2*@0S*$:B髝bg=/o>!0IR/ψ
?	 7}1Nk(>pTT#t
gpk8<O1Y~٬UIZw"Ep6$uTQ#.ڛ܍{50:EyːWOp=t	ѾГ}%+lJIn|8	b)b3|W{p-r'C|=8bՇKµk\6lhA=n`|-GPK
   F.\1,+  F  ,   de/cardcontact/scdp/scsh3/OptionDialog.classX	|&Y,	7n U+TbH %44dwlvDjKZm(╍5*TjGa솀Xf=`@5tPᨈY6]GzHvWǎZ:
Oƣ"3jc]]0;f;[D49LEk ~iƣJHVamPEkceLƸpD.#bkfPb1;^S!x+Mɍ^ZDqV#ٛ0Ch\NuLTZ8¶5L
3uY
ŹFuvvE!hܦGh
!,+M TstYL)
*Z5ǽ2f<@q,(	t|'pKJhbdtvDϦPֈOlf#n4|dXXh46[v ' $v¤,.I7:̈́^ӰTG=>P+m%6+aK{Nsy5HeXPDӜSC`ơI
tbfs#w4|a8XF-jb)h#WX	Kv6ejBEv=VdG%YO/Kzmۊq:EI?8-&:8gm8 ]?L!8C(!&ԨۈGd1R.6FMey
ΥT抑&nꭲ,OeX^"FlҰYPVֹɅE-4"<s	
ˏ,t1k:
agʏ~Og04\8|wn-6p.DaBhHP=>gkD:o%di$j1 !Z5VaZ73#
=,z3zqLg	iqB#31[`VV$>C(tIژ4͛'¾Fvg֏U^j$m?nam`npG9g`$i	;&jw$jC|XK&7"G|7Du܃~ilg)}eWWxx
}#/BD}:p
2K:5Ia#{𨎟i4YM^䱼VVWh6t0䉣OАUeR P.>Y/5ѡq+y/W<=nV4Y'X$~ÐpW%/Aژn~>p "^[jLPԧq~CǛx][ܞblH0KØ-P<Kh<?OgT>b5\*cWV2bɃ$Z=	(ƏZ/|Vtlj>_cҸ-'6&)j=s)"4PL}UB\<#sB]i"o[.*Rr3Daa4{<j}N(iɽLv+aPXʷ7鳻;xx]7;,#(A8811iXv
Y:&[dxꙺ4G
E!#PYI'GP> ֛H3VEH ٶLtXnQ8 ;O>
߻}DV76]sJ7Ox0IRpk
oayraq<ܜ7/Λo<&7h)*@>le5 uP*r&Gs4ݥSJQ*,Fy"ܼG*U?ʹ(ĸ Ǥ{0*i`vId;(y4cJ՜ >A,lĉm% 
s}e>bI
'[/A4TA)	Xz6w/P\?~Iv%6(kI!~5~a-\--iש  |&y*=0]OF&Mѧq&nGM6{ыECelUssz!5<qz#'jG}
5^M?+TG}|q4
ykjhS05!e8wC
{O&Df䕩r//ڪpQ?..el|7X&#CܖrƱHqKe8;Npwd|5IMV>T񔺂
y]eU?;A;;Mn%dJԩbv܆IGb;V{Cu5b`̈́Ly'	0n݆R	tg?C_6Y4A͗ˋ?L ~`ކl,hƺg{bVYD?bÍmW5cMjŜ0f$<d<gV%~> cR)87wBsSx5םr%ȫc=#J2jȶeG~gmGXl6ǀ^Q'
Ob
b?͔i,shzLVSb?Wij:*fpGH
Uj*sPQaPa1N`WClМH1&;7?6cZsBO
vfn_%Qp=I~zab޿v9s)*KSJTAvC`/rN	Ke
fUT5԰n
d]}5mJx7+-vdb:ZRI3gqBUzYR-Y#H;2IXL~T9PK
   F.\)-Z    -   de/cardcontact/scdp/scsh3/OutlineNode$1.classT]OA=KʇZ]>VDC/I,v2Kvg	LD(i	D!Mf9?Ͽx9߆` !?	X*?P^4Uo+S|3yiaȏJI+{RUu!9](AKD;pttXGDGecVˣ[6n;$Ca?ȗMokohBa/Wvs3\OfJ8o2bXw.<ࡍY]0*dԤ>-)^#S^d@Uvm{I9/_ybL:dcX?a6	Z%RJoJ+U:mє'doY
3us˺8Va|?dD,?u\w(=OD*ocUmzWՏ߿UuC<U|85)yiSU*	BA_t0Et?- ጻs۰ݥ6ƈ{/F3O U P1T.$ͬ32)ԀM#Oc+_KHx~%T7%\gަ&2F͌_PK
   F.\]	    *   de/cardcontact/scdp/scsh3/GUIShell$4.classTNQ]gZhiEb[*RT,EK
!)~99~K胏>MƸP:묽/ cBu4!i	e4|ڢ_0^)*¶9fYq/!b:665S6f7|YSV]NU0t
g؜P%8^oA#H踆˳3mƚؕ=
T`tv+n=A
.D1,	[RXЙJtD?CȬ,J+-bѼkk¡@8$j8cw"H긋"Z()1 cT]MUJE*}c0f*I+0L:s-z{ꈕzmCxk|&OG5ν:7a5Z#Wȗ	Ͻ:R`VjblLߑئrG@-#
)A[>eP+uUuh=9HʂcڮO٤^p)j3St׮Oo/|GiY"֘,~qYʓ= d"% =g3CG00	VQGh`AGhח?:9*4
g ݔĵh>WwJ䉠I<EǑt y`М1xA0
,OZPK
   F.\!_    +   de/cardcontact/scdp/scsh3/GUIShell$10.classSn@=\
iʵMi^⁇ ^J"$6Ҹuk~>Bn
xHj;;g'gpCBFy;p}H&O\?ѢO' PuRlRQD8a}EȰρ<u_<
/Pɱ7F7
-amJ!Z%TpB"j
9x;~B?d`4nᶅ;6ʱF#qDo5?XXf^ަR^(D:^YhveX)NaOĝIU/yqYOkFoQIs&N%C/^/BiH?X$oɰ>;miwPaE"RBaT*z&4dF+1G"\!dd9;cXw,|5UZĉ9J3rƾa5f-:!O7,-i=_Rgiev
85'
ofRPK
   F.\P~    -   de/cardcontact/scdp/scsh3/OutlineNode$7.classSMo@}8I
ISm&)B*Q
-"U.Y%u]7?5Z>ZՒgv߾y3;5AA9	+"276zLL(
dmPaR:c#v=>PC-[pQDiJ3"AឥV	.;ࢌ
b^(KOl+9]\e?5\?
C1ѩ>a~JFUB(D)YA?_x!F۳d/bN䋰'`ΌMht
J$l(B%/X9ƿoKZ)?4JQ4pLX>SF+Mz|Dao	{Nh/`ȳɴYTIvKH\ؐ<4B)CX	tALb`Ƀ᷌k,\= 5i~862k+iobbʩ0Z+qfJ69}}:Nr2oN.)RC3x~~PK
   F.\h@e    &   de/cardcontact/scdp/scsh3/Task$2.classn@%NCҔRZ(%)u	Ap( "A"U8oqqmK_){ K f@J|Y|p	9<
p<^KhG!B:dcb].Z(P:a$Ep=̑y.,L@ʯe+:/XOyMʓR2qĊXe*r"/?	 }ʐken⦅ul0ϻ
) v?2qvq&">
èXk[$o
}eA$H$knpȓ@
GFKmGOt$ʃ8K<2P
U/"/%@7C.ݣ_	}!WX(~ȥ4ˠD0U5q Y!mi`+KQQ;͓)3ioLq^3_P5[(w5AqhwyWiWrZdO>!ϸ]ָ[@SG`6`OPPK
   F.\ޙk    *   de/cardcontact/scdp/scsh3/GUIShell$2.classT[WW6&	[TSM0	im0s3Y3'Z6<tCQϐj*fg}_ J1
:zKH°|O4Bˮ.wpW֜0u;䒈#!:al6
sGb[x(Pf]Cp<GbL%j1Óz>
	G
*Ϯ8^X*8d$GqLq'd'$J$īBGҙHǁF1]p0Z* [t|=[2a2yh\{8K
,	WXR-t>SI"5qid%Ku#s5Qِ$~i.s_a1)PP1݆ mwMNɇ9
Q"$ESaP"Wt\U< =D:>ZLKVTS-bW꥜0EGN,euhqc}\}-ad*}Xm
wtEՄm		&Y^U֢Wpuݲ`KCGBmc}\㉕ֆ˚w[1G[n	"zj&GзT&3{lPmѹ%h[ؓ%Xⶣ6m*_,ϫ;O*YkǮ^AI{ߖH|EF<,&Gqq44.K]Cx4ɉ_AA{٬6 k,߳§DROtN(aSS>Midg&ǹm<C8)1c\}T+{M̵?pĒB@g[3@qv0KKVG'</+&Xge82O=zsr7f /U0# 6ۢ(PK
   F.\>cMN    -   de/cardcontact/scdp/scsh3/OutlineNode$3.classS]OA=c+eBoď"*>Ԑ"B"/>e;iLglcW&EoƻSu{Ι3wf<29d=\bQhZV6lG
qg-No/1BY6Z["ՇbҵF=Q`ȧ#da,^k	0KYz Y$9LyF@l|<JuLcWr3,e|ZѠdX>wѵnVsnc0axWM*m}%V8h$6ܓ7.I^'Jun͜ר6Ǔt8(g~Pڎ-P^툶
mb1b(D|SSմ#幊j7薇USf"+z;8J]vՇB0Hqdā
6gkq)UM콽ulnt{/fCqcܡ2	F9S,LotNУG>)g)KG`rxe#	|Eύg +SZT2S`}hcpD|#+Oɖ~f;l+x*x	PK
   F.\Wf    0   de/cardcontact/scdp/scsh3/TreeModelSupport.class]SW'nH"`(BKЙ3X]fwC^_kg|ۙNStZg	C<sw$ATCL)|lFôo>5_m˶;\~CCM@CIu0 PKfcf7Z}okJYqQm8
t%%>cg⁚e{r7k)@%CZ a+
-m
~V9mgWjgR'8OWZ\-]ӷE\0c3%0ezmxA[⬎	$mwGچk(L=e~c˖K[I1c<5%VSYQlꈬٞt}YW:!esθ96۬MWvbg_ʖ-כۛҽgn6f66LRb߲سѧDkNGoF*s"SdO*NnW<? 6;>d<9\x{#KT[YW  +FƘwK(#`;_%ϹM>A}1Ho壄ہghiL;^|$0+a84fof:i^)JwUs|AAH3cU
RCC?
RA~˘
29wVDe
.4ȯߠ7>cC&pSoQ@Y+l'B8+V5X"#$96o&3%Kˌr'[;6ާ=4%Qg=6x4FDY$
-W~PK
   F.\&ͨ      5   de/cardcontact/scdp/scsh3/TreePopupMenuListener.classm@Dh)
@a~@f]#N̼ޏ'5=Y(irUk'VM{[a>ԍo2>-c&ƀ0)e+E%U/%+GHܯMoAޝY-ongX{xWTLY@#!`;0 PK
   F.\ձG    *   de/cardcontact/scdp/scsh3/GUIShell$9.classS[o0K/+]uf F/cIِh+rfBZAB{I<;߹?<W
6JepB<
Df<<hQ'wݡcga6FyLxAG(ۨP93JB3,'H{/ǙP덙mc,#=Bt㺅4ډsrfp"({PhUMlI11Tyb$$,;%ƥm.%ĂARU}P%(üIq"}F|qYdXBlNZ؍%li.($O*ts:bOq(C
Bau/d=I{Hl?Q@J\)BT]u= I.#iAп{$iOHn1,wk_
>ĉ{MfhV+A7iU?j߰xZLj0":S.MƚHPK
   F.\ڃ  o  *   de/cardcontact/scdp/scsh3/GUIShell$3.classRn@=q8i(P(ia<PT	U^Wy7M,$nmEBvwsƣ7 pwmX.Pb"<Tj@[Ը<yEx-ʻOʘḨeC$\gj{X0A
6..j<Q:&wpl\v+)-&8;eU3C!u(q*1ѥ6ic@i$d(W|MCx	hd8&Yn{.7i6Úg<61Y,㼧㽼<2LRѾ4rAH6q_iLuo@͈<="rO(*ۑ4݄+%n,*XBzZ\#:E;^"
=Rt
&3<nhљO`Z
E
_.DCbIłg`Nj74H
[؉PK
   F.\w     (   de/cardcontact/scdp/scsh3/Launcher.classY{`T<a	I y@|+D&!Edn!ڪX	Vjllmmnm>sd&?29*dE(@)&	n5xq3a	&]Oe'#!DC0/fXt鉥Uj%{4	̴t[Җ~+h
LAJi%7n'YPdZI.;4L4cF=<='Qmv
a`foێ`&	DAwP0hx
D
z5jU|j_sح_6+ީNCJb:~%JԆPg` Yr/ע8Cqu[;8Gpk{LU<y"4f砙vM<`cEGt0J2z	"7OfJDJJ4Iө@0#Gz`Ɠ42
A`
gAsr63iy8!|b|$r];Fh'"kՄ/.1<(WkEzlXָCCpcmPd*nJ"m;ŋ
\Op%ϻ6-3ML[#(W=}i{(Ϋ/aneL eN>Ъ8ܙF)mL#Ǡ,9f\	)W#;PZ6!X 	cXJ#au<ҶciQ;
2
=:=x]l跒5E]O-q'\+=H7EǮN!{썔kk4V&px6ك[v7&WOpBDiPWjbwĚrO
&-IjQ縈.w3
v^+b#碬ZI0Uwp^qTV/-/-
yصSvúU58m8sQ)ؤ~+*{
<'TB}|ۉ]W՛3j
J/NXy(ڮP<V ~Kn?t|zMEcv4isD>:zX0bV%</0
V7'5[砮umE=Ci-ِ8޶!ck^U7DeۉxJҟa|S1s1
GMU:2Ʒ;
Uޣ&Va`Fk(
ZʑSv2c4V
Z<\i]
3|k
{T1;95yv0e'-M}6#x?'|OVǢkp-L+tYaskMkmn\Үc~C:Jߨjce6wr1w榮敛;ֵtt)ֿ)~F>˽BMf?B]B{+|
WTӺS0ˣ3.{J2oy]}4o5+A{PGq{~?jmӖwtOǟ3P˂"qon"A뇈!ERLǙ6RC&)խzgaC&bsCr0Du)LўКDMǮTR%SbŃFW9j)ĽLC2Ð ,_[lC	L%H
q3&?mahInu3nKrTg3CNU'ĝ,EE6dhQ(`Z&23ޒ:CJD^N|.ز6ozjNEm9r.+up1㰜o140XI'\dHe\5/'V<{NbkHLYmi_%tꃰՏiO,|Iq;Jݐᛲɯ+!`y4S)]ZTY ײ=>g-ސ
rY)MͲ9h
޸űCa걛R6S8h_~?%![*YՌ1C,5cmC<fnCϧGUFDd+𕱤+R8ʠ$Cb *uӕA_sj*elVH	ks7Щ<ߞWF+sUoz//m	fTQc)tS
;n{ctЎ	>zr_[N=ߠܰNMhHVSƽD3r{DVʜb~&Do:v>,rAQ{ b=mf*P8u~<;(fs+k-v'[
j2'NR_DBN8bŽZTR5Bs\,-ߎ144	-^,{bEO[fSwbT1g$gِ<Uy6m4N`'2LPn
 }kJXVJGCڑ
_^M$d&TqCX^dw'u|ےd5%LǱ&c1O<6(
d6E(!~<q:`7&o
oi8#D!";JkfL ?e5%PYS| kbffNzY)5G.v\rMU8kq:d'!\+qr}p-渪k,g68s1ScΖS+0&gl"̕82spWɍ}΋{DQYMRJ28jI
6*{+<Fk%C@G~eo^mnF<M$J;u2HթږvRIz_O6n&'%uܱnV~UJW*ݏuW>T'yjp_P2xʃ#=ύξtUwI|+#8p g^/u=z{+qs	|#p^	1K8B#Dge@+,\R}on'Lvr(;ɘ~u%6/ŐallCq	A7_&%upp=ނq+mwa܉'p:w{gr:dnaGf<&𸼈'O񔼍'3>-*sE`A̔&t~Hr|rC	IrCH?ep*`7#ۛ~j'ꗜĻuU5ik:v3
pU38;RKH
PL/c'#(cW0_C-sM\Ȝa=AS)g9P@	dI"MYDs.,﹛U(>!$»3KJTRU	%="F[>eO2q67#Vn)}G!/z
es3r2T
PAdJ3rZmFj'(\|L 9h~La~36*'X2WI)lZ=4MZyjYs^/P~r:;!~f(	!sE;(p@w&%]Kk2r^:j
6U>ru1S=)rwc.K圃D5gdWey͋u9"it]dҌtg0s.8^UH+\Fz;f+{t߳XԟA'[˥[[%d2{>J2|&U8$m
9j,REx!Z{p즕T%M#Sj
DǤ3g.!ȏeFJ_wM_ͅ|}")ei뚣&Ƒ9+(v< ߭DXK&XCFt^uP뒽k1}'"DjrE.˜@P#rڄQ	j^Cu<Z5E12P"Oz2|^gaΞE/IG%yYYPK
   F.\Wϰ    *   de/cardcontact/scdp/scsh3/Launcher$1.classRMO@}RJ?(iKS%)zP$@7Ub+&HEH.AH;3~3wW|XB>J(3c)Å	ҡ_<a(aτf't,Ǣ%T'<
#G90j<QN>=<QEv?^ϰl16Y,Qdo<Sieg<O?
m[s;jd7\kCly˷ɟ,T}S"4!f7>afFtܓf)%nʵ|>mKVoMb#UY]J6x	޾׾|Fg`~1M~NUr^մ`|
׽2[)bݡ^cyu{AwGPK
   F.\,ܽ  ]  .   de/cardcontact/scdp/scsh3/AccessTerminal.classWkT~>v]ƈuAp 
$avef33HnK6I/6IiMVZ{M/I9_sڦ7 E=f{y}w}W!a
lsԘ3iez>{kTol@(Y
hɌ2t7c8~329>ݩ0=t,[
h
YFdzyվy

UX),۴}i	z"坴>slYE\`B*X6tvAlT^P6|˱cXܮ!w.6§o
9+6Keu]llTpM-oeT;6b&m9zLdk^yK6wvJ@$]m3CI?M맜Pzlz_PT*u>l4
iS
[vnyDz}=3yڜ#Ҽ{bhBH>VA홮9O\+3Wl!Ƥ6uYCm@圭BQq?؎
r8(> p[	Jr؊.
8$0;/r%`_
/@}pՕZTW<9Z/+G<a GV.FG8z6oY~[>X\嗶<ߴ%kA5ǉ(P'S6_;UNB H/3
F5d1F˧3ˎZAk7V
<GC1LġehL.lV%9I4.r|\I9i˕S&	'C>l}ACZ,qT&)#b(>>!/v9f餰v&o̳>OcɶhHFJ0D.)xN`
Y@PZzt=\8/y?6^uv+#ONvcP|Op^UIΏ
nR_;΋ao zǶy' 7|\:r*ZѺ[
EM}
dOT*#ÌICyd6̝ew''r`Y/mDr"X>Qb<գgz
BᡠeV-ꘌAAe.G\l*xC`M	ovr,ʰ˘~Og׌jIM4ˠp\.	ɌTxӊaI^O8>yLxUUo
~#oB'ݲǝQXhNѡ=(X0z?Ljӎ3ϕh)╨n6^{-d|KLVm͆ԭ)& +#7%
̫Y>0ygfYH?3sUm<w{Z;@U4DE>*(|񙢣fYδ
x	O5-BULKS
Ux_.LTֽE՗!j{(tfLcj8IDfmSHq@|4vwM]	5qo/$o@7s}V<Q>4')ʍxWVOs"U+҉`<#VԄ*(+=Wukcqx&I>/.)Cpj$C<E$"USAe]|b"{^qpx;qyi<18xA-FSޔaqw^l/<+0.6HbBĤhOHɆIW2)|
_
,7
W%k8:Ge[6ϵAkdRw!H^稜}(:\SI'C
\TCBW|JF_jfOj=5zIylW
ej96gKژ^b%m\+]lߏ/3%4?bR?>KA_r3E+Q2S8U?~籦!9hl[
5^C m"$L%IO(5$F=)00Iw*\Fڕ+/
g	_1%	?PK
   F.\J	    0   de/cardcontact/scdp/scsh3/OutlineTreeModel.classXkT\W0pa@ !8<ff $M&@i(vx")!6dDGGk-)IS4?_]>6{2a&f{}>{e 77.8#a9bd0lN'q8slo0cFD-
'<E(Dbőz'pHrc@]`Q22,pZR,3Qe:Q!P2j$;d4:*ÉQ/F+eA'+'iY
iǥ]V+J5X+PD`ܐ4W7da#`s$m=|%]~Mh0&(MoAe(?[;ޜ8$_҉4iX0O3z#S^.fl@	t5,	,Juȟѯzq@H8nbJ	#464r#R1v`hdJd8hLGlO2˔/5Woziq3v1#syoщwE9/p{v8J:#5]q{ؔ1,

W/,\Eβ	> {,-Lܽ:޿W1$>ܮaP~	ϼ]'D8U+/Y[rqr|@8H	ʮ36>*U1i
l%N$/!tbHH$8Y,H!(z25cX*tD*ttQq94/Jݞ9G=	|NIZ,̯vgqBGLИ:j2cI;60挏Ḇ,E2/	75#:>*Vd<dh[<q
ɷˁ:>t.ܧ~< PaX<erMçjmD'$]Q25CHix?oFUk
0NU
=㇍^Y(<2U3ɱpB1c|h57*3QŢbEl=]3jy
tZ:dL8?dZ,W{iJjliȒ&:"GМ碈t1L*IUGj5<?au1]B!!kbxjO34pJ/ƔܽZ^$#4I>0/-^(vc-g2<U{ru&&A]P+LqYv:#QEH%i悞2&4(6)|7;=T[Sn
ϗeALǥQU͌u7B>;,brYP˛pȫuUGz9w,W 99~VPy4p
_ /	i3}s6dR09a-vpfQ22CK#ⲉ8W˙/ʁ|K1%Vڈ7`5|7-؀[*aiȥ6r\'K"?oY7Ogݙ&l0z/mG췜/uijKXv!=O(iqzN8nJz!Np;S$xb,㉤CX9#<+cLS&y;eJ;J`'#*Gr8)4TWҌ"+_P"~9_r
8n0ߒmƆעA[s;g.ƶ9WAD|˹*xN'C9`Ci|sk1tm*k8se9e!JW@*ԈagY^ČQ]諛y5&ƺitEns4V9ET)UU!s]EDW(e
*C9~<^b7:^8?%l;W!~O?՟ĭ)ؔk,q9ߤߒ`{!=j(I΢u;?Iτ7565.+ %J<ڙ8Q)Α3ͥ>tNiZn'U;DDI?\7WlNUeH	VoY$dy4+<qH, /
.bT	%ɻqad$HF*td5I֐d<3	&fk)
dL7b#lJk?S]Y/]bKDzJAbg-3GD^#VX96e.(:6~9cgkbʮv^Өp;gq%ߝ|tzl5S@xDB8 [AK+tCkHf`++UFJ̢|7oAXK%̯_PK
   F.\wXa    -   de/cardcontact/scdp/scsh3/OutlineNode$2.classT]O@=KE]d|T5MHݒ2C)!+V|5w%ds;=xCzmX0r/0B <)mzۙ#dK+~\JTDwŪ\r34=hFq0sco7W,7Y"8(`-!?a`<qƄI
žhx< o"5re/)L۸>f:Tp1+{]!fm<rO#Dũxk[wZeU>dB1OõW1H	n
;Rp'R2=?mT3J*e(TvU7C~GfI7"pYA,H46j
VFҍL*sd\I;QA)oU~ǀ>USڑu)K7S^é	OSbd%XqZP{OMDxJ8O}B]lvZt'ob8e)ES$ےuwO=;] xp6o$"QBۡ-,On
XҰPK
   F.\|  t  ,   de/cardcontact/scdp/scsh3/TrafficLight.classR]oG=&8&$%!|;-#Iu?@+uXg]į^x)#7^ ?	!l1`;w=s^ 8&bHXH"%+ˢ|KNs
	s4 m*үٞJ;,v4}Y;vi4IB*(XCV`tȖTZE Stg`B`$Pᒴ5|>GV51%`4T<GhQnxVﴤ岉Ø1pQ}Xd՗c{!:+	''/65묅<
,;}٢Q[8E$Wo,/o~᫶tD2٪*_\+4乴
QvDɫ}U;ߖwZd+MI6~鰽\v8f[QE=c`'C
lO1[ܢ{uF_$R:V
zJs=089>|O1y~2/C``GeH0O"9d0X#b}T9=PW^OWz;z)ğ)<.,D9EN㒻q X7$a2^0B)l`Rq~-oZ${fWZO~Hf*34p<5{^[سܵGG#uRm̾K+C_a&M2U2aJ~6~%oCEPK
   F.\           	          A    META-INF/PK
   F.\@=   R              )   META-INF/MANIFEST.MFPK
   F.\                     A   de/PK
   F.\                     A   de/cardcontact/PK
   F.\                     A   de/cardcontact/scdp/PK
   F.\                     A  de/cardcontact/scdp/scsh3/PK
   F.\"J,  !  *           X  de/cardcontact/scdp/scsh3/TaskTracer.classPK
   F.\K1    &             de/cardcontact/scdp/scsh3/Task$1.classPK
   F.\w    4           A	  de/cardcontact/scdp/scsh3/TextPaneOutputStream.classPK
   F.\*P  ?  -             de/cardcontact/scdp/scsh3/OutlineNode$5.classPK
   F.\ɳ  D  *           ~  de/cardcontact/scdp/scsh3/GUIShell$8.classPK
   F.\Z:  "{  (             de/cardcontact/scdp/scsh3/GUIShell.classPK
   F.\8b&    +           DO  de/cardcontact/scdp/scsh3/GUIShell$11.classPK
   F.\T_W  B  3           Q  de/cardcontact/scdp/scsh3/FileNameRegexFilter.classPK
   F.\ 7x    1           [T  de/cardcontact/scdp/scsh3/PreferencesDialog.classPK
   F.\U      6           [  de/cardcontact/scdp/scsh3/TextPaneAppendListener.classPK
   F.\G  /  0           w\  de/cardcontact/scdp/scsh3/TaskCellRenderer.classPK
   F.\m'
    &           c  de/cardcontact/scdp/scsh3/Dialog.classPK
   F.\u5  (  $           m  de/cardcontact/scdp/scsh3/Task.classPK
   F.\ƕo
    *           O  de/cardcontact/scdp/scsh3/GUIShell$5.classPK
   F.\΋    -             de/cardcontact/scdp/scsh3/OutlineNode$6.classPK
   F.\6E  S  (             de/cardcontact/scdp/scsh3/JSFilter.classPK
   F.\c  L  *           R  de/cardcontact/scdp/scsh3/GUIShell$1.classPK
   F.\`!    *           }  de/cardcontact/scdp/scsh3/GUIShell$6.classPK
   F.\Kج      :             de/cardcontact/scdp/scsh3/OutlineNodeRendererSupport.classPK
   F.\`    +             de/cardcontact/scdp/scsh3/Preferences.classPK
   F.\l  27  +           b  de/cardcontact/scdp/scsh3/OutlineNode.classPK
   F.\V     1             de/cardcontact/scdp/scsh3/AbstractTreeModel.classPK
   F.\B9V  2  (             de/cardcontact/scdp/scsh3/Observer.classPK
   F.\!1  W
  3             de/cardcontact/scdp/scsh3/OutlineNodeRenderer.classPK
   F.\0=?    1           !  de/cardcontact/scdp/scsh3/ScriptEventRunner.classPK
   F.\)  >  -             de/cardcontact/scdp/scsh3/OutlineNode$4.classPK
   F.\6  6  *             de/cardcontact/scdp/scsh3/GUIShell$7.classPK
   F.\?:  9
  <           ;  de/cardcontact/scdp/scsh3/SCSHReaderConfigurationModel.classPK
   F.\1,+  F  ,             de/cardcontact/scdp/scsh3/OptionDialog.classPK
   F.\)-Z    -             de/cardcontact/scdp/scsh3/OutlineNode$1.classPK
   F.\]	    *             de/cardcontact/scdp/scsh3/GUIShell$4.classPK
   F.\!_    +             de/cardcontact/scdp/scsh3/GUIShell$10.classPK
   F.\P~    -             de/cardcontact/scdp/scsh3/OutlineNode$7.classPK
   F.\h@e    &           m  de/cardcontact/scdp/scsh3/Task$2.classPK
   F.\ޙk    *             de/cardcontact/scdp/scsh3/GUIShell$2.classPK
   F.\>cMN    -             de/cardcontact/scdp/scsh3/OutlineNode$3.classPK
   F.\Wf    0           k  de/cardcontact/scdp/scsh3/TreeModelSupport.classPK
   F.\&ͨ      5             de/cardcontact/scdp/scsh3/TreePopupMenuListener.classPK
   F.\ձG    *             de/cardcontact/scdp/scsh3/GUIShell$9.classPK
   F.\ڃ  o  *           g  de/cardcontact/scdp/scsh3/GUIShell$3.classPK
   F.\w     (             de/cardcontact/scdp/scsh3/Launcher.classPK
   F.\Wϰ    *           c  de/cardcontact/scdp/scsh3/Launcher$1.classPK
   F.\,ܽ  ]  .           P de/cardcontact/scdp/scsh3/AccessTerminal.classPK
   F.\J	    0           +
 de/cardcontact/scdp/scsh3/OutlineTreeModel.classPK
   F.\wXa    -           1 de/cardcontact/scdp/scsh3/OutlineNode$2.classPK
   F.\|  t  ,            de/cardcontact/scdp/scsh3/TrafficLight.classPK    4 4   ?   PK
   ys[           	   META-INF/ PK
   ys[m=   R      META-INF/MANIFEST.MFMLK-.
K-*ϳR03
.HMLLN,!-x<srRsSJd-Lyx PK
   xs[              de/ PK
   xs[              de/cardcontact/ PK
   xs[              de/cardcontact/scdp/ PK
   xs[              de/cardcontact/scdp/cms/ PK
   xs[ 
=  3?  -   de/cardcontact/scdp/cms/JsCMSSignedData.class[xTյ$g2sB Ƞ(	R$ barLf$<Uj}QUbZK/[󶽽*眜LI2p_O}{ֿx9 _|Аc d{ugbo4WSd+]d
o0#iAx4XW^Ѣ˵fu$l$p$]vUG:S+Skq!{
zefxU^x"nrp*X
&x=1wS_J$Ӎd")(+_&Ut2oha<tL0p&
e;Pw:KU/Iw&e"jLգBX7t-lB!slwU/ݓ6m:%L[:SS|wO;S`zO98*(Iw$gvP(6tNqwR6q|'NcTŇIaoVI	<[0
ʽg	˷,h)$U1GZiգoA]
+j|A]?vAh<E
c֠$Z鿔LY"LXb jjjظaچ
%n\qaZuX0_}]mum	LDu*omѸ>2=Ugf,.[RDuKW67jjh\ZjEtIsk,ol-oljb`|Mܪϩ`EUXAV4
]Z(k6k`b8YamMz\c&43F]A^.+q.3P<#䎕؁zT.S0\amVL[tlJ(X"T:Iͫ["*Fۉ}؊J@;:(g+"v*mJRT)ed31$t*&.n&g,BZG߄sIV$6\jTE]TN6`ësi3:`-*7pnQxbnSJO047:n6pnFkxM8TF'،ѕɾX/1V.wSa?>$r*n<y.[0gvq1d8rC{}ޣdSȓZ`\V<da8_xrhjP+V3laU`%݃[{!YYL=u08^LYަP+%(ʋjt>3CmthV3kO*?DV4]ʯ
|vUȋc,4CVsw!IV*Sgy	|ʎ{>AX>B<gxN,I&{TYE)L
$Ns>/(imME*˳(F㼈/J_fˢa25S_g|_u/2v^oli^<wGh{o:c~~4IqEO/7YHb}?mlRVn`QWc?1SD3s_tO1;^qׯ{4>Kzј!ڟ/"l姿1[M5vvx{vr wv^Q`|f*$֞HFY4(S͝MfS_M;\$/S :e]7xF\mgx0$ͩۻA7p.Y#z;:.2תI>H.,
E'庛)K1^u9'o!Ė9:hqGjr5k2f2֐RrfvkhIZvh$Vm/e2A(a3` JQ=q܉<خ9#NWkWjw*Gr!+.g7=VY'e!pD[2ÐrۂJrƩFf2שׂpp3
+,I!s.2ȗuB_^Ln"'kiJS/8^Y*-+ z"Ĕ-cpZ3iOw!`$	Dt9ڤbATȯ	+#a;ԇc>色j_wCW.aWĐR0M"q
6g*H?yQ5GPZد,7d;l!j6>tYV@V.ƣKhQ2*u	f1|
ͬo u.5d4HQoY_˶b*.WѸѐVla) Y.gi󢾛I8Nh)Mqpi/6RV+pGoK\xݱ%5P?46DFb{׆;
z		u4nNb-ȥ%0|vr[_gsn},JHE;,:Hu%˜+robE2ߨǏwiGLvb2.)z`Tih|qwQje;LƔC MsM1=ETG(eѕSEQl!dQr1v9@]D#mЋ܇Gu\.b/ssK-[5s
ں &h*kcx&é7Iܒ±,A7shkc<ܣ"}Ki<QbkݮQŴ-9ve#]]MU ցв]eCa(rUβoM٧ƕs#^J`B3SH0;7Ll7JB!#)wiw1izӗS+E11ʙe~Kd!WǵumesﯳSt%1]5Z r@8s7RdÎs7Ϙߙ+XZt}3(0Z59V|a=1fjak*%!l3s^:/UR
\nV8|uBMU$Ix`Jt6ܒ@x3ЭOb\;t8y\ڮ8խ졸CNI3u|Md\U<~PU%K4Kp3ݑhM)K]~_"I4{
벰*lUxkLM[H_yX)"-ΤzLZXOf޹
P\VfJ?((I0y4=A~[$"W@mV}%&bls|^
{F#Wd<0QZ3s8Q_L>ẉ'-mP7
I;G=I:$nd>+-<./^E39Ke8K%@=t c(UZXø7E#ysOb(yL?1XRW:9ߋG1}ckԌ¼y#Tb1ajRq!'!8{Pq6d\sq#W5sխhm؆;#0S<* 	U-#-=ȣ xG=s/"u&5Er5{(]#:X;u9SQY(]wo,]KҐt8~S~18A[]Q!
!*F;&jx;%)Y*KgqqCT<Ocv/V:x=IS־m9Nir3wk`Ԭ-1kV hnVi( MNRR34j2dDW,Kp˔U/iBO>GZ[(|[ko@a/}eg-|aE12V[(EɒGPTY2M+u{67R}fiáSGGT,X6Qy'
b~s/q~)ȟ?Yh;0O}ݲ.r_b}AlrCl[ǑN
w{8Rm^
f|V-@)*`(~]!qr@V?>^|!OL`&NS
uv]m~ _6W-Lq+x SA1j}{cxӡSte&e҃1R*抁:)&R2LE}/XyDOn....G1F$X$LUʰ^aS8b|]Wڳs2th74I|GOQQ->&wD*1;Gj*xb 1Y(S(<":N#\<%XUXUXUXMq*#LF{R>?-V"d^R
̣TB*Rt-UtW)%|i(S>B#&0|jҔ9yBQG|Q>|u8ד<L'{Ysx_7D4]m)˩Heˢ5:z,&$c_a;;;{<(}ԃIY (\bPWļ~\"hopk
鄋Sq8ҋ= 3,ڴ(I:q`]ER+Vn?.Xk]\&` k"<`*[e ngnsh3gF.&* a/;/B˼.V)]FjxXJ,oE,Dn\)"lGk\Lq1p1bz\fJAn!bOt}N\'<iūL^u>X9i3,0@z4l>
33ʐ͋qkX0)Sb")d*3Lcr'ݎnݞzicffANV~"x}L׎vǵ=sǵcµcȵ%vaۑd9ImeM_vY4jxܕ+0WBUw-ZYE0Ei?V
K
?)L;JmN3}fj2
G"?fӌzs)fق"f!5؏F> rWᗟ?Hnߏ^P>PLPUwA%VZ@11.|䩠xcCm^tTέú2Pҧvl`lY68ȟx"(t?Y^Cmĺ]Ӑ<Z+5nܥ6Ohcf6:z]uMc #/ZtƦ2bfˈ:#ceD/ˈhgZ|ѐdg#_'_lgpEKt;jx\N}9ߤ<8XV^x|z!uU<@3;n u1z8q2yHBmk1<MyZ%.ѪJ\\G0#99997΍F'Wэ+Hl>|Er2άJJT6~g-b +jb'a3æ¯VMTWa_6Pn_핷BA%D,}VckNf2Sŕ%<T*ZRH땪^,!y	5}d~Ѕ#dht_<]1SLX5įU-',9~ F~Brlj,n:!
.;*+90`!5~&+y{3	P|iRԈ|+}li:4QĹZӵNh	:NK.4hWR-iitk=ڽY:8݄-v+^nǫv'k^/jH,X{yC{tjWHx	Y5_
fZ55R5!ɦgK%Lۆ,&{Q79:Gs8:Gbϒ:!O.ŏ8lw5~0xh}PA|@gwXo),xadOZ@OaސJ{\(<V:F~u.{PK
   xs[s.I
    0   de/cardcontact/scdp/cms/JsCMSEnvelopedData.classXcv7ac#"@$
$H1$ufxU{ѻ&Jmckkkkhw|?|2;>W\P
+Vw/=h&ZG;ٺefXu%]=7)(V)L1]z:hD&ٱvCKkcꠑLgf	̞
>w5ZѵT$v"]oI#lJwt*`P!<4+[F&m9FP,ceBsS1,I;n8`
nw2ZSn	Kkj);p=,b#vN7 .XJ}Fʉem7g cD7a!K	sJdh~kQ65]ٔc)TRi+MtvˮsB%VJ m82[a%k| ["eF\zV`θ_xF\̔M
GjI31Rz:AsSw$m$b2p1k
j^cV	)i#:\b#"fqAS Ԣe,
GvVW(($=֣!m[ZefƤŦDZ5hI1:M,C
=k@L똴7A!n6ɖf"ZE-eVBebi&ۉj$Tu#p7ڟ&2>%hiV'm۱W>:i@7vDku\ʺ9Z2RiG1M7/<.TtA2
BZ)ЃlÂwҟCݒ]Xk\
ͩAj$U!S6V'ϖMjy7)T xU%2#6EeS^JTq<FSơh))ZJbn($c]Z<-mٴI*nkFUq<+#wx190~Mr܅ܣ+P1YD@9=Cjܧ~|aj/AyP~]6OY5:]VyΧfkݑ7%(fbX2N+-8g"P!c*GvrZ)xw .g
۰L-fX6G,
 $M6-5|^v^A=
nȟ7lپ.-MI46_F"PSbgZPe$5l8(btϬņlOuU%YϹEk32w̖fu3[sI(ā`Jnj01>4OLYK(zz[LP!,93xĮؔ8ҖT!EPk2SezRMҒU劇2K;JX%S$I>b0pFyatr@4@]':3U`4=Q.g_œXd^Y-/B9p<RQsϑR:;P-!^]7ql4g̱ ۚZŔ͟|<J-,n Q|Oe88Yxļq?SBx4~wq%>ë:*s<W^WTOy'qRTanpM_(ØQSz14}Cǽ"}'07#NbgT,F==e¾aXuR"xǨ):;kt2u'NFpb1?Vkq54)vCnf`OKxpE
X]Xt<i"fш/îU(,oUfu/YCFb>aQoTWk|>FfݣQ-q0ַ,{6ȿz|dxPy346s221WrLRJ)1Na?rW-^˽[ʝ^Í#Ha<V9`x:FKOd!f1-!р;>%Jw#.܌q߽88Ϣx 
OFby<؆\KDFz̣z.g\|ܻo_};Kw=btxHiȗ?ď1B.uT*X:)XᲢ]DJSb$IJx<	c;8nbŻ%PNJ+HD-$6/#h¡WYٸi?@HSzt˕0[
vZ+6mVVO1&&֋J9'&όҸKY9e
RӪ|naAP߱~
7zխ0,.#~Z#D<1*_)%q7P0SC?`PHQ	x
?PK
   xs[  6  ,   de/cardcontact/scdp/cms/JsCMSGenerator.classZ	xT~d;܄H6 @C&	&300s'@hVkڪZui-ݔJFEݬnvZsg
$y#s=snc,?:l
69C{jg=V͝;oDGVK5jlg7zHvU[xVA#쉄hC>t
:
1Np#<a7x*뱦XkrPesNbj
FU&5͈EQI&ꘄGT!9@T~p~aASr+:
m834Åg|-0P
GaҨlO5)SpgkeY0VDvipvWqnCX0&+K)*Jv%PJ!H}0/QxӴju=
\P\c!36n`}&ק٠uۨ5zEĥ:΅[`P:۱rumi_Tj˪V<
JԄRۨzmɥzT+_
}6h	zh }OmS"B]S{]CsKL;
UZ
:Z
MjTC5uMm5m	LJТ"}\+"FT,MFVr9n}hz
:6bYcs)eeV*lԱ	G'ڴRMCyӋ;׎nz0<Wwi9*k]	As،N^
Pl1b7UUj~؆.
uuCl`F
{J<	r`':B!u(gC^׿5Qlbi@S6賃:`Ok7׎]`
]Hi}.ÌBDr{ws*tuizM5Z2Q.ӚUjѺfŻٲfF4#ǧLe<gX=4Q`JprP*ӘQqJau*LVzvx^p+|JHg9p)>|$
:Sx|a#v-a..5|T*RƠz.?4=ሪnvWZimJ8nd@w}*Lfj:>Or:t1eӯVf)+>]Д`O'UK|F][өuõĨKY[z6WY]	x{)fe [ܧ㔡c%ʼ_pn:9ITP"L惂ť4 >|QԗKJOeKW	FceII:U<<a,MV҈7҄Qb2Wlʓ[ãCZc)u A
YX6lxԠуj3n"xn#bMwX%O
_u6ί5Z.mFzqr6~Fú-5u-<
͚iy|kML*o'2{o4!|+kf}C!JoKRя'@I
"6
5F[Z=
yU:SF{#{w /"[xRX=ᘆx?ax"c6Y'Ҳjt`&A/9樎!~㷊{FnM$k-́7{
oxKeo%#:93{
'/Iخ}
4C̄%)z&׎
RZ\ėgfWkT%ur*6r?
/#X0j+WL{<a8QҴ>.x?eЀqy:\`L4zC>liKpQvI֕:yf4MNUšWfjUu!B]IQ)bogﵲةsx#ɗblrM+OE81ĜG&Z3yNFarE9]L1:}7FӖk2m4ʠiRr4*Oΐ35qrr&g?pZ,ݲ!SeڐY
rB|TYjMQG҅WyzSa!R4gSޮj檚*-:zg$T5ZzM`1e.dub4xĠ>
ъk'*isK;7I7@jȱܭrp[+W.JSnm(0[j+|]jd`'%O@caJAZ'X	GF'yOhV+h0j!kBMti&AQ
̈A("zC=iv}*6
iQ!"&'OҪKLowQj
\&-Od.Ʈ;fro<'fPU7nU<W eSFzHFyCGwy~$8e6UN$4~O'ԯV(TE%G,;BJ)=0\|eAWИ޽M7OsR>	d`S8]fQ!2zjm\hͺja
]܈n4z;p⁒M]{cv?]DiZGm
v^Hwt}#
 -aF6:$pJY҄o1~M==T^6Z_"=)h%z;==1x	2-1n5A?>=]!0T΀nҫRڙane=P$Ìm1m%eNhJ,/I)KH7hff8Ɂ
lY_F6bAˁ3Ӯ0DgM~N7ӆHy,]GzViv
ܧ~+Lv
|ˍ2cd~y{(Y{rI(KZfzS[of|hv=s$1oi4)BAQAMY6S陡3?a`;L'*jP󒌮tvJ>d(8?<&y@ŕn3 ̈́zTP9ȟ䥬B_,Nn>4CGDT@tF>vj6|3LUM
h(pb8r;@+f*dppRyB&ϸwׂdfAsÆT4!QhYp4>B)}:MWQ6+jӌ ް׸ҿ	Cj|d1W1EvNVBSe"PMd:.J8>3\U/1{o.Ny|(=dd8|Z!"bBx6Z0-r<R>jZ{L,Qa
`*dg|mv7&N܍ʢIyXaa;Ǚ3vK9Y*%G)
,Hnt|e),XO[⭈ W֖5ȫ#r:LG6RA8~z$7u-^ūsDB-QlǊIX~;0v *KWt|Rf"Z,XE>%)IEJvUȖ4mGuzI!&s$=xB}
4K%i.+VIe$;3g
.&Ż;.]cƄx;PPQT]EрUG9)#$<
#؝[Qdv[scg,pE2Tcq^E~jBGmL(ۘP1lcLY(l9fFvkr&4ٯaRBB
iMB!#~cϿ y0I]NUv+Hr8$ށBBRTTl&0mws+mQfXD^]ܹo7s*sTvnjJ[Vby pj!i~\}׺OQ6ԏptҏb;Tӭ:Ϻs~:.tE38NݙǗ$(W
8NK%	Zq}ә:,b8b؏YȪy,ZSD<ٸ^ΗZG=czva0F& 4;%%. R
)BR522.	LAHcgV{xHf㠔∔92/<*𺜃d (K)J,\VVH'X^Ϛ
R#>dٺK.H}eO/nŃ%2
^-_HW)rS#(P'R3lJX[e^;n$,Ō5<F#)f\rZqb/-3Gp5ޖ'oZƔg1n(peAmmq`m59Lpk59Z..i
hw8F^a3H
+gSxvA&4VSl?4YVN(^((~(֝Sូu~9gQ0;r{Iwiǿ$_Fp!եM*6XNAq@jQZYLqHʕC+s(͙Kyr_$suovعdf}X+[,[!*^td>,q	r#S;4~&ޣL^&1-?$r-jkL4lw%ϲ.a<'ϓdB|D9H^oZX,So(goʋ$4K$ޝX!/wG116ȕ+,㘭6ÚPË~5ɱ`;w>+9`mмM\'
&kcPj&er8e[(uWՈJ[6aNr]5,a]~|u!a+J$PF[1RT~J<d]RK';['?_DT^cVeZ*TLr4=[vs['yEm<+e79T;#m`I=G^Уviw~lKQ^6mDDzkVEgba=Z1>QW*F\q7"Hr yutKdI"pk>pyn>T~,Q-0(KCz<ex7|6ycy<A:HWѣeyyi"ѤLD+1W^رk2 Uf-]myY
:Kf~7,=fXRfO%ҡctXӏLoۘr='oп.Jh5M;N0Cq7U'F%lH-x֢MĎs(7xC@rˎ[V??PK
   xs[              de/cardcontact/scdp/xmldsig/ PK
   xs[wj3  E?  0   de/cardcontact/scdp/xmldsig/JsXMLSignature.class[	S?Myc`:{f 
 #32=73L gkՊKmmkmkj[u_l֮.RCB~Hr߹{lo}I"Z\"Td'ӬH;8
ƐǂфG~C;Lɱ8&2ntFN\:T0~#G	ßw@(yώo	`dr^3ffS,LCe3OjTgOӨֹccJn1uX&"^^~#H#.3	h4۟HD}^]vi{_;Ż-sÍbyN<q:	L76"Q3ôZ테p'G,նvnh".Ա~mkڻht*}ڦ`-20`q@{훓5g(464BܑMgS"\f
7wY۾Bs}{#]ۼ(ifxJx>
@e=jTSv#n
f&֯h6@--5kKK|bY9yFj.;<?lco00c _dӹ^#S}eD֪!gVpu8n22Fw0.⢥tJg괌3M)6<fF#D{,kGyF J΢ULq}_[i/ց"Emy\ÊYg봚:4bDbp`pŚ.sTZSaKfp<a 2O{'!*ޤf{S俧BRhy:O0gqYk
s
9=tV)bvުT].$NFte0d
!Ǭ<ȳm)b'nߠN;h'週ӄ7%ȇ3a{i@0E*Ȯe:ޟ;9~3*}l'	Лrq5 @G[w?Qڣt	m"a]"	/F@?tJ郂}IKD,f?t%*ηFjNF [؉J0LJE{:]+dpac]f<nnb^yX]WЍ:}>!D;T$eEό'Rӧi2ohE\AzOΞ 
~eQboL:C(onO4tm*)nԒCї@߬6b}N쉊se{,4}~Y@-ݧ|=qFUAq~#c^4(*lF}NTՉT)%cK`\)- 01m(';LNqFnU'[j!kYm0j7QUzug&}ChY![[D*}ԂVͳ(*}iF~LǦw~_xg,n4Z=>"135INzڜ(tӤ?W9(}}LiR*ΤLqazQD-_,2n.z~k+0/7>7`b 厯)Q;T#n):^Ew!f
?G^WFA!_tz,7dƂ|SA11&Mܽ4fN
wEo;*Cwh25bq3K.`L6wes[ŢtELǣ\g CztQ9^,٪wGE`.fU5v2^'0y1ip
T
/5
Dҳ[Qzq:B=H"9.\):ySEn3f$D9.Uqpq*y{IPnٵ"n3&|*Or8 M%U>
H@|:Z Y]B`"Oy:@TLPRlBY:p- [V>I1g&I)L
h)$+_W$9,G&9!#JbyM8Ƀrn*y.(EO}k\Jhuq/@?!GM\3;0&tnaхj\|gTɘf֓'RJĽI)EݪqlԴCMPZVS
|4tj]|哧EZTσ>ZvAj;l?Nf:I)\A_W9VQ2%NRJn$)UyӨTf#avXU'g"ܤfނx:7b7wsy:| U_`lDkYNq$cv:,2*jB<Bq"d&"a+NsԯkDP$컨TSPNC<`DBɲhrb"Q/Bu̱G$21ILCS7l)H/!Rn؀l2/ėYo􉪲iqM#S4V9_e:RDvrZq\bV\l,}!47	B:q^jދU߀88^`
^ |] :0a0<h	L4BqrODJrHWʥUOZdѾf0U$3*߂ƅ?43=}ږ(v"Vu;0Zq>HTuMw*NydQK1Kx-Ŭ3メ/vw#Egl
*^Ou
?t1^uL]ZwvZ޳d?ΏGcɇ
XmD輡cSdd?K0<_-O,|qѪvi+ܬ
Gfl8-Dh%VN[Ȉ-i]xG8mDK:.@22J97*elg(hcqiؠ;M<'VmZ[.d>s*zϺ"xf""xtf2nLvU>kL=Z7ęJwb//@mTvˈJ0ʿF<(xM++.X;@o	z?6~㭴D& %l+/(~L.uˋ2PI sA@S!y3DSqpʩM"sbmBEՇ8eXa>"[b&ZsDcAy(;tQRD)Y:pdʕ,n @uyi[*LMӭDoo0&;ô#(ٱ;XHFL`޳lsSRO ő
@(Q9^TYT,33/O2g-ʄdE#=edmy"Z\䃋4q`-FE
HXjcܟaʄBT"5aL neVHEY3[XX`'zBq>XXT7U9ǝUf!rNNאdeoYdꋯY%!vwGbJ$.tt؛k_.bT$<(:/U*P.m/Lny$@jD-G;U.C9[UVC3EvI~Ȕ?oΎIB*#qT"LEip=E
ftcB,+eGC$O|լ)koQa/_IKXbrTkԪyA"SML3aAvȋ2㪲-SzVPŜeELF
9h"?ļ>@q2Fn5u{:"wrA7$
b[s|#1O\Ǐ{Bɕ%
nQS|OӮ$Fby=tgM-KNuɩ}>ջGǔz=ɺ>ͺ8=ͺ᮵.ݍօb]qϳ.F'⦫h}^}
ͧQZE9tڒoHor1`o;vobw[Hs%
Qe0u<K8DږgV$7
hqx앎|G}ƂrcPh!n)6L	yô{.}.uG|.	0}q=x/JZGcyV(v(@wB&}PWh;7@%4>	p<D7WA}X*3
D;]a]߃೓?:|!TZ?˗ÕS(?!%>_0X-]/^6%F9-#M*JY҅x':F^r忩Rc{xP`TÿŦS`w2M\ڀʏͷQeW.ë<xk^>|}4}E|wN|ToeE} /Ԇ'>i-*
>ly@о>G<ZS|򸞦n*&q07]}Ǿ^4р7@ܡ}9b2G)oAY{t*I~>ܽ@i*Hk间^2z>DܿЍ0Eo{oӳޥ`U7V:J"~AGeWBO4H2?B_?GiĩSlWӳSk_d?gv6~v-~cH}#dN3$:5~+=I?Jk=ˁ?MSGV?}w,H&T`S@
|785T6S&aQXNԊJ<)80M}*=x'okL>xīmk-sW|s?
ֽ)GYm~+8=.`|~y^RyZGPSohvcLAh&OD\M|:i gQ;e/=-t Σgy}O^%'>-z+<y+1`5i@֤YLV Bd]LMm0a@Ҩtzaޤ\3HSlC(ρ53&ë#ҋcɩX]$%Š`=	R]aAC-|)<y&a-DTiA==0FC-6`\`|hB$-Z9KOk9H=^RHycҾΤ}E<e_\%틫}q/mKڷJکJ:>[Tۤ!1j҂drN9);p
T Aul#ҚPb*8(f58UfҫtAy{-|=4y<FUX|f|p1ZZҒrbay"Ѝ]4RAǈ
jZnvn29vՀ0Lk<ļ~?
1veq@۱/Rd)QgJV1F')Et)NY|+J%=AOb\8C#\(FK&}Tok<L.Q34]\Md)	Pz|yHC
<3}vQCuBJ3er|i &Y0ԍd3Z~"mEL9L,^Ǖ]Xq+c`I4mvC۽%JQ)hJ_T'U ExGD}`aCܴc{]i?8p0/j8Q;r
^I([5g4|i}NPu>Fr}t\a.ϨaTx9PDe!G44~ V~ ǿ@Hybe2]Ϳ
SZ{ej+Â"NU{D,a*S ޱPNSids0`+u)SivjS+3 
4GHϣzFEKS:8Ai>.#ҤxȪ.4+5kNp@}c8>2/aB1znz_ _\l|\l
s!2񵲹)4_R#JF!@Etdo
~Q I$I1
je9&TߤW@hPYF2ȿR!
P	MWҬB?NOa.b5DTtw0Nl߶Ehn?ߵa?{&
Dq*B`r*\zgYJX1LS(K14Y9C9rJҖ>V,uB\B:[_!}]Y)CC9Xk9Go-2,U9W9<PK
   xs[              de/cardcontact/scdp/cardsim/ PK
   xs[3     0   de/cardcontact/scdp/cardsim/ICardSimulator.classPNQ=+*Jeon4
jB+,W5
?2΢!4s̜y8AGpqt9]huT,/`DZDexj-K>\l=
zUs<>ꄣ߬VDT5[{~D:ޗ0WqE˃Dyp:f#d~eK/[2*<}ׅ	XedYbD9PK
   xs[m3    9   de/cardcontact/scdp/cardsim/CardSimulationException.classJ@ԶѴ
FpZ0nj%f?u$D|_A\	.| Jqs~w澾= 8¦먠о܋{;!V%z#N6Lm|,3<
E-3"\Q7<Uq42U<
dj:;a`D˵
x`wr$
_iy3^YDJOq8ѨZCo284o3$K<U?0 vН-\:U,<5RF	4(#gM.USt? PK
   xs[r@XzZ  
  :   de/cardcontact/scdp/cardsim/ICardSimulator$ResetType.classSOP=vtk j;|@`,X\B=kIa!
?G{Vgٚ~+,hc)rE˛k덀Q<R$"y(
`-Nы|%ɔPPLx\7,X`0ƫ*]׭ћB=(2 
CT/</o/%ln0[ aNnxoKkOKneI,0C
CܹTș4<
2XŘ0,N#!_$ZTitUPl5{"{ݼ+Ub%xP/3=u!kM:TK!O14۩Ң,{A6ܚ3ݨ{/}^NII%YK1Xa(b$rګћ7	X{H?Urcp((?	̏@ٮj6(ϢMݚEV:Gķ]tZ?QpPRuZP:%44z 41|k
LHx0ݦ\̈]}N	SU)4Ub)&=QT̩PK
   xs[           !   de/cardcontact/scdp/cardsim/jcop/ PK
   xs[]lU    =   de/cardcontact/scdp/cardsim/jcop/JCOPSimulationProtocol.classV[oEz^6&I	45P(Ѐ8ҭIw:\J!"$(
ĥ&<ğ@@fs̹g&_q<p**(
?-kɚf.$GW xa?A=*\mU=Yj2]&J	<VQo4װZ&2̒kZ]/95dl4ݖxLzZ:.\9]h?!$pE]wmA/h"-`VUhW_@mͦVWG0kV	Gm3;!Wk,EτqU\
&[#2%6n#HȾ(󵦳vA7
lR7fȥʼhs#؉[6׵%=c=lW3];t:saLw|T<7Y(eR	54gZS(S&M))a),SC%)eEʖJYooũt*?,ȍ@pn\*ďg&YOdӇJJDvŞ=ĺ].|?p쎺!h.ot~T%VEh!0.9909	;	vhxڋ*gptH:-aFK4W<悻	QTl`*'=^2DGEϴ=׭S騎^t*xC?+յZ8ź;\vE4do!x-u\[kLUuᢩbY#0ekIo{j$Ӱl΋}etfVk3fcIQ˯&2ZV3۝w+WмesHl_*yٷ!{$gi\UqR`%NZq
oz=xw(vw𷓿#gx;t!?gOv{[OM|us{$/(<5x"!ރ*?k+?}ݒ۹giï c롭8H3؂Yt؆ELP
8 /tR".܎)U)w{zaڞ6(prj'*p-oR~򽸏/PC=+ݡD9QgHϔGQT0@k\+3Ɋ0vsvE"%lˈ܈Wq^#`?doyᎷBZ|{,)G=@di7;xL/e(%~NBQrB?}9UsJ=[:Brz#C<?'F;%F\Fxr}HУN'υ<mҚ[@_eeOTz5Y|Ċ'?0>!>?eU?J|Id~}
{+
a!zhwsoW9ǉ~'GapGqӐGwYMWC0I+p*,Df{,Q"[W	X
՟:Uja!g`69>'PK
   xs[i8  N  >   de/cardcontact/scdp/cardsim/jcop/JCOPSimulationAdapter$1.classSn@=ۤq6Z
5DA!"7C$j]/׎lg@B~  fJ!
Xg̜o rCțFK[Qrډ{=u(騽~S5R[M\:D ;)O%Ca}047,x"J&Nd;]'NϪKMRbg,_Z?XZ:TЦ[51
C.,TM8ž
yw
L0}n<ܶ;
%Q2126jni+9-ϫ;fϛzjPhvHEB>FX'N
ےqoT:Ƈy/qc!J_.kQA
Dk2݉|7VndÓI8Jȑ醡'LbX>F2K7u+VwUg\eQ4>|.N#p2zN<G[Q8&qS*kXm+abW_!*@KU(nTvCsY<C̘,RR6K=wPK
   xs[XQD    F   de/cardcontact/scdp/cardsim/jcop/JCOPSimulationProtocolException.classQJA=IVhbb"`E$Q4M?ݙ;+!?_',Ż`aas3;}~|U3u+"Cuop=NnXe4C@ie[o#G큃9C_zG0raXLU荅xE$ij/2Sex0QL영uFǖk;A"/owSȵ/J]yetɇ))*f8M'qG٨_M	yҹ5 lM kK	t7THi
;SSf9(
*VZS PK
   xs[
2	p
  1  <   de/cardcontact/scdp/cardsim/jcop/JCOPSimulationAdapter.classW	x\Uo76KJ+id2
dHedi2
vuyd0MK"fXTh$)PPE UޙLk!ߗ.gϹ>]w8	JtLrh
7QWl%rxPctcfCHŢv5n%Ղc7lɆen?7\N4ǌk-+HXb:EG*)MFL:%֚jS1M@wf3mGLj9=s:a
q$Y;U3Ǽi8Jјyѡkn*{F19hFS]H1sJv}8Ft@
c|akݮjEKy'^V:uC=oA;5ܳ,_k$\G kP`r4/ݦ;d]cqNpE8y$#Yhh6
ܤcoI`0TrT#4hD4,ʕuʕrQOIO!C:LJd[	eQ5tVA$ˡ%3&wVRq1X
g$1yKjY15cEͤ3mx4:#*papgvg6nDE5ul 3˝6q-`a>qt`2eGɭLb2lI+n&$*--crjH،-.e:ٚjF2=0'onQ@)wǋzqBkYWv$>:>#^96#ơek:|sE/aoI&4	HnO9.%wW}¾-m3+\|Y.CzEC^Ku|1v*f%_Hf2FwC!+pc*n;bvڕIC7djEBkqZkn芴.|[532V	n6\)nLCde4L_,I͸1&QG-:pIf矐ĄoӱSZhoo
T
?=ƮrC]]]R;t)yYT`v!~DGd7W<Rt=F?OޑdI?q
{wSbjx^Y	v=yF1ĩ,z٠*a+aכHmu؎#eyvxO/:\7gh"*ժǫHH柠`=b֍
Sݓ>s*CvR/w/,VJS(l*_:&Aq	y P7帎ƴTNRKm愁')YMD5lmqSFt{SQ;^
!ˋ>3L۩
ќ=azMti<~DnW,e.MuYxb=xY^6ڬWjmRE
^"!p`p^2~*]8QDGydek':?\<Q/v^|*55W#Oj䣈<J0yJA!L?U&Pfav`BN%'`9J؉TLa+=gPFj~GdxT~
t}x,E}n)S;+/=s*K7mÒe!kU&-PMYN2%)EI&)g>~00N:"'>$&+38UH.BvoFy혟wNpqqN׸$UEiԸ%;3A9Lar!jbޮʯ2UÈPZ9 Ox %8haM֞%px!=xt	O\J..GW
tבup
6
lvޢaUP,=ߐD)[8f9J8̓wǱ3F "bʙ;[~'1ŕs RwZQǆ	5/S}AfRTǏ=|A#G{q9:¤^ɔ^q-z=q}4+Y;YO4]Pc[S3yT)"^'kvdm[wxsƗLr+X_Rf.|uH%DULLؖ Rm%K᧎_kWfx}fq&ѭ(6mޮcU#@^	p4#ym&KGhоStA|5}
zgcĵj}=xX$rя3rO0OR?EO#?g"^ϣ/PK8/3_5O
3d?5x//%x1"<**O1Qǅ9FY	ϋ)xETu1tŒ!JLj=_E#X$_4:TD8Nv	g0;?ѮiW1=Mh\h_. v#jM(KCFx\ݑ
ɺQV4]5ϨJ²o;9 ofxpX^x̬JOzpPK
   xs[۫  
  8   de/cardcontact/scdp/cardsim/ICardSimulationAdapter.classQ=O0}&
XK,]"*"QGe;H5~ ?
DC%<;=?? ,@pPR*TVnڄ
1IΥͪrʍe#U\+\.ej4AD}+=<|cvbݨ<ct]+7sb
.}ŏ¤,g]WgB}b8! `^\pGpS@|7|=4-[c*8r{C;cNoϿPK
   xs[I6  <  G   de/cardcontact/scdp/cardsim/ICardSimulationAdapter$LifeCycleState.classTkOQ=KE*b[W,4-閒Ov%-i$+)(cɝιgfΝ7 /)b@@n$uUכN96ɼBTѱ4lٺv邹g(tP1ჟlP
5J2,WMݐ!3,ŜRɭ3gvKFa\\*3䶌aʮnw%l-lT ?1ʸAA
bv%-Ov!1iZoB4HڑfuҞإh%@uZ\%gd<FL?mڦ*`$W%ԕ		aX"WWFҬSB6ƮѪh!;ȍv5LV-絵zҜ$ܷ5"'qM? T;6;-0ȱXiRS4f.`m9cs<	zKL]lkCv(s#)2yd/'c#ysSğ낿#B!0K^5@#0})%\DIGsVAv\!krተ+Zv5g5jM"֤.ޅIXŊB"q)'pg;O|	r穟;ܙNR`丧]d҂U}SPK
   xs[~;>  \  9   de/cardcontact/scdp/cardsim/JsCardSimulationAdapter.classY	|^M2 )J6	$Kx !H0$8l&fg^֫jo/^h1P֞bmk{[lJoχOS"x4xun]u=X<nm10RQ;t7WnbF9D9Oj/F JtBaE
#j%#ԥI5-O5rI
'f%uIǴS!U-iNQrx&RNtB-m (pz^`RXcfdm9y%5`B*tDR7]uYرDHUK,%Ld
agb| N,[dw5vѭlITVS)"22
COr"چv	h0Mt)CW%& O Uƕ/A
fhu8Bx=j
?DdS]`К{"5,6~^%t|8U)?-04#0)ߖdl۲8[F+5u1c$8-Հ:nڶ(Ӵ]ܧygYN8i{LqT`B=aKY>LRqhGm5s9M9VRNX)'<v:QZC5X3tX*6NgE
{
X5ױ&7j7
K-۝ByIP:LVIf3ld&ҤmETjѪ%ke2tlF9S<d7ut١uMKWm1VN> prV:f[#iJ[ulBy =t-ۤ`e%d\G(ُ^
Ëw8fF 	f"øm:i;<GS;t;XHXF6.p]vWwV.Jp
Nu|XDW,aֵuY'i'4zZvT.,܃.fխ6(z
>0s.&TxY!V7
p_p6 ̶5YǇaPR~
!kb!1<:BW74p;a3;la#i8F<lʬ_[0w.
w(>ƂtD1N>cftO$>ż05%91M9(TrL
\|y6וKKAAK)K63>s<;eYC#Ͳ;b	#n<"Yz;fM;E63=DO%7/\m32qcV]ʉෲSkgi`Œn8v'NwkIa(<Lg6ƍT*h̖TZ[Q[RJ;U*XzDPH@E6T"3c`HM%ZmMۓTLl`0w!I@E`j#[WIvNv(ѤO(*ߙNel̰
8^:ivޝR	%(nթ,p_R^g&s~)gzw2*ےt\u
G4$`Au?q1EEdGZ۔@Cե?S5(vjrJQsiL8L.ϋ-aL*%'*_V]RC;ޜ܅ˌDGLMmdvJnUCE4sLE܍[6ޜK(;=,H1M']JO,ƙEx*q+j"}؟=cBWo[|EJ>PVZ<M>F=6<i9^^ދqpEpIa+n&'8zwN_M-Փz8u5Pcz1%|9_ƹ،gȁG+^5@`^LtL.C>ۋr޿G>a^P>ǹ@w+E$jy)lX\ɼEE-L,k)1Je

S8k4R}OSX
&G>^gHRv(:jr6z	񐕚CS=ЎyMJ%΍هɩVC(jt
ZTj3)Uf㻮*TUJ'+^; :*5avoEĶ<-AJn(vF0U0U0U0U0BQEiCP좨?|S5Jf>`8hB0p*sp*sp*sp*]8~qd,8qn%E^7(;S%ҧ2}!_}Lޣ!as{7ac-OZr{	j](-!Lp1֊1|>'H-'tty4Jua#G~Λ/
ƍx.xEKL /98?Tr>g!/ p~ܑ&4BC	SJ|&'%5սH1j3H!}]Ӌ]UjIsz-FB>| nYm/x2ݭ
<f+]qk=Dqj(<1MR^#*Kx2/uB~Bz//wE@$B~Nq`7QƗYސY(;.9Vlީa9
7Ro_qo&>4Sqv>lz>|[=o	y{>ܷ,H|OM	Fe#NS0NL1g"|{E8:zUr1zݤ,OVx!^Qem=TT`k}M/ڋ/dNDJ0K*<
ϣ0QSs2硖9|s
OgE)<7u~x=xE%o?x]e"<썅!cRPK
   xs[              de/cardcontact/scdp/js/ PK
   xs[@$  Z  '   de/cardcontact/scdp/js/JsCardFile.class|	xT{;֑5+AB $u'Hfҙ	.umm]T[Z.jJ i]Zvju֯ťޛ;3Y)ϓ98U
	Br	cu=]``"&%xawxͅ[á$!H4<WTn0!㝡X4%޺&]{%xRw/ܴD!D6F7׵DḉbAzQKC}Hrg]K"wH=(@TF0*Z*7b3R<QnhM=D7\i<z0;mif&sy5Ovy ̝Ʀ-ԓluckJQy.pӖ`4ցG`B-՝cj#X]WN
JpH(\lb80e51@<ҹ>R1UYpr,©X(4$MCD2ܓNLXhiЖ2V|M+6O^1݊J(GcIanvw;/JFbQabXBȏ{cds<+I&YXéR_2ҝkonmZސJaª9àX	]!X 
Y[Gs5ڰ$c	N&5`L<g1FM1׃2,p$%l̾1EH+Dy-l9xlGcY"lK0NZ'|Q(+ik<ONsN>:-\s&%)u	e}QQbY2+6,^l[0u|NMW`"Ѱicct0cXap[F[O/zCZǶM߃h.2s.s2pf/.EmOp&2=6a`o?f㸖PllUH~JbzIz(1?щ-M|xl{3ڀzc;`$0a||tFfFka؃[,|ebw>png8x Ж`1iXM½;wǨl`in11γa'ɾDG,ޙF]½ŨuеEo%q _&=nn~j@$tuu,,MЃٸ)%qE<4&Sp'
v+;7it~U 1&b}IYAj8rlQ+--%
a3(o"~Kv&ɏwD`TLl{Βʑ[>aI|4HpA-=ei<"Z¬s0guGo;lY(!¼9<o{>r+y8KA0{8!F'~%T 'w#	?cȾ3	v(/¸eN{~jF伓d#f
CNGL¬(BaT6KY8J-Fgo*Kzׇ=F}&Oяl'YBJV5,o-X
,Nd[?eBzd}^3f#b=(Gr=MD*u#"rl$-TcA2-*\rn-*Np̂vDIETV(0Y7)T<8K߲&凨HIer-e*C2΢"+0a'&X4QW7K7MhFۃݑNgߢd|ag8};Mn1֒~`K˄Yͦ
Vt]Xٹ^jUe*hgs,v$4giĚMtEiA$>&$\,^x"HH:ZH "E`i[=iRaљ*|Q$Ld	M&-!4fk12s6ǺMb>4RpbCs4c	xhExO0_m
7EH+-2A%z݉hEkw\f֜^:tQI-:KBXZɘ}:Z8FFܓ?eAy堛k;\X:\ɤyw	e8Db83::eWVa8=1ZZXH-Bp<ҵٞ&lj]]"mnGflk][&ĖSN6:>Bsp'X&DRèyn꘶JBVAX4*kzLZ"Pv1siE%ɘʇE32>J3y.V^'n^0ȱGFYۤT
2+c}eK1h$aP#?lO~\G8eh=J^)
q/]OeķnÑLt3aBS!tf}Gxj>>C1$	W2RV>q|x<,XJYt;}ޮ #@#%KL37Vh}Q^A|gZں=wz苄%%p*.d"E_yg66}xE3"ҐURe҃@qE*
iC-=C38EjW@/Nrub}͢Law\Xe&FM!Ä
!tĢ7EBEhB290j]8x"yqz¤'-ӳ	AEOK@%vxYF]'PEߡrۗTQ6(-;<^d<cr{Ǫ^z~bB?<e40*ecCr\*r&ҽs*_)1ũ5a6kHΚ(
9ֆE-\
[N()L:Q$M5K*Ƚ.2m ܵku':;Cr!ǃ&VBzk$p{C0{Hn$U
+$D#ެ(x{qMN"Ĉw7IyC<;3X2Ƒpþ\w2uHac1mkB	.g~:}^|f7ؠsaԗLh(Yav ^abS[
G&JIX0`IwA$:^m3lM0^Im[Umj^ݥ*aj>>hBn+!jnU${nl
n:bIb)r16Ub<P2sAz;wu^`ȫʉtwUAFN$tYF=Q)Z4S2@M~%g
_q2Q3SϽYy،2Tlg**%]VǶNU`ԣڲ4*
+MkN$iN!UR˨U41`<kN4L>'BQjwݱF؟lU-9򷄃"v_eʹi%3ckD"ꑿR2_*\>I1Uέd9hj2kPG𯾏dktĲ:'LK&DO_Da䚘}S]ra2}0Y*fINXG5m._ɞ=ZQzĹ63D=|fV%	5K7S[=LmC.J}9;GbIΩ-DQvWZ>ٹqfbjHt{l[YNؗzkz]'Xm}=c+wV])΁bG[T'?0#AgU&hzAVTڍ)&`B <݊Ub64uk֪UZ&C
^O|Wwל4Vz[ ڎ3֙=4hyiSugjי>եGP8Tvܚ$-S}{W~~_ϐ\v̒*>Ł*xwĘ^0!q?I2lǍءHٻ/Enz4&z!KAu!
%isYް,n+].hf<z(^@dSz!YSWsMG`n<3 V߫yO܋'`0KuKu*.K7A@x+#r]ݏ>×[i	t@`X3w̯>F#-y`\ʧh!Eܼ 2~\ȯ<tOe9Wyqpx:ʡ;Ӟ39'&ܾY`Sm,R$;7W0AaQ &חۏ/ȯ|,>`Lu0<ft`5*RA7=.u}_QחUuAP?p31r+Jq[1w`.<{9YAZ7*VXyxw
*|iiS4OS|v;q|ntG|ag"=Enx^wu59[pi:XZL^"װerjǱFhyikJU%VVb"@+a2wils2Ԉ¼p	slQ<6ʉL5ĥ=oH./1qz_i3"m/cxx:Mn?YOQIq!^-0XF6]zn{JT=!&HXr=!"&ؔ 7<lWbOWGbn7h?RXffpG(<@1Pq	DekCNM;Q`N3Q0nZf\!򴩚1V^.ͫŬ{
i4sٔ9Vʄʹ(
c(S)_Qsv
nMc@%PTk:CES0jrxsP"]5x0kB[][˒u_-ruXZXq`2kPWsTPN30&qH2]ESQM~ +dMrRSʑW+`KO\o+MVlh6e#I 9]݇bB&w=G|, E(h<r;iSu`dʰa+WֱYl%gd6%d#OOUuM!Ep4B>j{K&j{{{soPJ2,aTASckx6wk+eh>bZ5k$ZϨ9sy{N86a%}$9s\䜑V9L
+ș$>Q|t=
F,W/r uWXǫ)
ނ63R"mħ+re+).2lSl:Z._VPzZjLKX>5QXJUhk\LteS4٬teґehAZտ7nfV}ϝV<VI{Vȼ?0S F筪e|&U`V	`j2 Gf*`` <Ȭ<̠J5v%=J} ^DuUcIs#-w\1`1Hk+\hWkk6tb	Y'	*`{,J9Di=ǕW&s\qd2^ulCe43TK=/'րJ9,q*OXT-6%\J|}gom;\n_Qr^G*͙X뚁`Rj.[2HUc!Qi_
?Xd͆l"c+pwAؕLWs 4Q>qG];2$z|L
0Oa'$Z)r{6r}l&:	.]p~vîZVj9q>h:Y-3VU A i9$gРddN~5@auq^FyJbVK.%@ل\ީt?q6KG`[Ubcr*1Me12N2m>ViM[F=تّ٥DǚHr@\xmsͅ6^<N%hU4(~*.(99|;MLm8pO`!**d^Ot+mdtX֪\(_NUWB_:}(S+LbFcњ9kCmLC2wkD[1#FF݀hS]tq@X$H'_?Ocj9O%J\镸+'<d̍nfn37̍1s{Ifn`}P]8*sf<J>U'TlEXjUi"!gh7O1{x[cl1"Gy5iOssG rf*GPv'O	Npt"겏uЎv8qxw3Ύ8;cv;36mw1nvݞOnKgp5Ѕ򡻝:Dp੯mWnWnWnWn4C{kvyy%{3+[8S
jgh=E{
)&7}^TI`٦CϑOR^5r˨9`V~j	x|Ѫ{yim<B6{e }8wXFI>SPc[{rP}ܳP=rܷqg_{6zvr1Jҳ@z&1}vt9I\dvj93SICwS>B{B	u}{Yl2"/]`:\y{1KGna^B,Ջѡ"Ez9.ܠOn}"dܣO~n?ѯoq}:g%nxoxS~Oz-y
4(eN[-gw[
LMZIJ,A֪bVjsNq9?S6nZksМ0
ujҳֳљ^,mh%S,G1yvQZk{OЮSZzTl[:ȗX$\
'vF|vIrĸI6q(h.~3PIbL՗`ބEz[]^*rW;
,p$T+p[8f^XX}i'
Χj+G認OX
'b9/Oikk0VLlT1_?gvIrڤҟ	]8@Mwk:Yb<:_@L'NJђj{=xM-
3N,=-S%Jm=lnnDJZ?}vP*w1[0F(1LnU7-nv슳gu:o+fia"Ib]f'{9'f(K7sU3WY@^c{).yW{85't^KucP ?}w`7=5݁"fffYrӗWTFx(o_[=of-N?UؠF6|X=Cqܨ߃bEܥ	a讶9W$Ϲ"yI9ֶp`/j[vm$ߣus"zX`U#Sn-}W}Hq֐97l72^ӲKRggyI?2 yM/8=Şa<^Tϣ9O0A<A|z A>< KA@-Hd<1
(Ш%,_AslU\ƵoW-^5ܯCB6]$"E	/Hx\"A#
/)L>0aV`)nRrܠ0!	^D>E0Va@aR0щ!

AS(+$=FL22p\:yU'M^y!}ރt0r9_9LX@^z
PaK_zBc1ycT1F_U_+x+3Pa3U~z[WgFQbw|(r~en珪ы|3z}^_R^rT~vm%rjW߇*kIJT^^x'rK辣OCyY^(KQ==ĸhswf 库#E^Ǒ\oFPAy9(74L19Xhcf۹(FuF9n0bo7ÇIxؘGx)c7f'Lf»l*6*hQEӌji)F-irc.<
rfc!u2t=xwb

pplǀÉLLSR%4$1`7BihZeju+,3TXn媖薩Z)<BZk;8Bb!hi;YhKa|_=KOB<he;_Mk?HILz<7)7B2wPraG8!<@]àOˌiy>-..ƠҊ~ܥ]]]UѮkO1vvPK
   xs[16,  6  #   de/cardcontact/scdp/js/JsX509.classZ	xTg~dr0i!L)C(HI! a-]&'a`23uCܪ]\v.Z\V
-RjmZWUݼZ[?3'3	ާy99}v^8`<n^spoP,DE2t,
w[dWڰk
|%bwܭ@D%L.+D6͆3ѮTxO&ܞپdr'jŬuJB8cEұzV3ZE#Yɏ\Q5vn(Ilhx
E2D4K&b&&a̡ZuTT2]N'ӂI^H'ܙM=Ms03q>QRGpsukq@T=mN`}m.{g+6_YnR-h/ZZ
1QJko2}PXٶD&ID
Sx<|&XRkߜNG%R}YneEz|!=jl	
Ƌxڝ-
\"c%4,OqRFT.SglR5r-n`9V+-d"[k>Ho1ъU)Ob|RF٥>U MXcb-.Tew39V2r]D6;oLк;H a+nzO)/5Rv4GnݛTdl>s]o[Tb؁+蛽ԚXJD)0k[IZ\E6	J\iS8V䑯GTM&5Aӏn|ľ^+
etNvSVh0@R6Þ\dCr#DcHqH(W>O̔k՜Θ*ъ}8:Բ}&euMuqjJ"]\SjF-6f+Mz܀
dⰊgKM"٤	Gp o
[q33YWPQ+v]	Ƶ*5x[p+E'}4^[/>y,Yh
wx7M@Jd[#>\*J^*%+w%YF2ٸd
.u
%iRjcʐUԾhT&>ҧhD%>"tZ+L/;^ft`c~NDR5zR&>TjwTi1:;Yyv'N-b
c߮K*y3y8u6Ydã*߮c|RSU=e8M|wb#M|ITiܝU
9ݰ,h,X{C Okn)|C0UmxDޡ2W?eh)K=245M|>I3m;ՉhKcc9f37Gzz.{ 0]#Sm>3W޴!
8xC?RN G򗟘g	&΍L*[6S> X]i:PM9Vٟ+6UeӨ"lط+ҋKLΎnV7,-;tg<2ا8;**IVm	Έuq/AxɏξxH{xՂu-Q0b9U<3֓HY0PSC= 1LK͐R5PT/R &266ʛbVC],8	\_4/YsǙbTq2Ǚ<T-WM?ߔi2$d[
"
aH0c㥛q2]ؑjtW2[PupqhQԙ2OctgUڡyH1s)z4"hK`fm C-.)a[:ҭDE49tCWd+=]2nVSNF#֒;ғc6\aaic@k<تUv__h~nhK<Ϟ>9דCeSnٵܒ5:MW&
\QsFAMWr郭'"¥_̑DNW9_I7S1e	^$J MR_#N:Y-oO7ٻ>4d!;vdp̨o=5ú1-#Ri4+`[.Y4z>C:HyCƋZ{_= FEl/kgϛъңm#Oד٫Z9w].7kgDyHS=-yskcIO
cƬbJoi-֫hP\fK"HT7\'RqՏ #JjLJ3ƛמeqaGdb+/y/+j0WXф7iwԲϱW5
r+& 
kxw48[U|oR]4<)ToRɕ%txcK7㇁xqdj۪)2u4;߅;{{RZѩGRzcuJeUY3Bۑs1RlqeHzaasma'DOv>:}騵FWJAK2e[Lw]q>L@>+yD<H,/ʕZoTwԹE]q+ۗ*iBլ߰-Z#xgL0-cD(0E(f(`Bf	V[
P6|(:CZ:!c-ȏS$nG2a0ES&7#\_'(HǾCEa-7'L:YPH}vGUh9Mj["aujeFH6:D'żN%r	k0yQ#25@qH|Cj,W84ÃU'Ӟ)ME^]sDc9}U{Rt\[-}[
{+y4)BZUy|{;1<r13Ͻ	܍6>FM7
<YjO$vT{Qqi,%~GQNUj_?^;@q>]݈֟Ǒx]QlsѨ6T=2.'qj8nSI~G8vVy_9Fсa9-yKƉ@A\,d9s`?_ЉЃ8z#o]x3>q[?CPZVjb܉FMr~cru.s#e
9YKL&mS6kr [d++vmQ2(@Аy~5}1z-.+CVk^/kW?z^PY1Ϯs\Szx?/8&杆lOެ^ >^^/-`v7/o7:}C'^jQKrVC}@JG.r[<y>ޛhFO}=t=oV{0n	KMJd
|zNqx3M,$;Z7AEΩS79nʝ:+l!/b!1e|4䑹m(?/?QdG)t*=Xyl	g}}?ʫ'z
:gGA~Lp~ϱ?01Qkؖ_ e/`^jx}>wn+blRߙ<4*Gbz%O!PB~!_1XXj_s=y"4$18>(|r?s6
b*&*	Rɘ&1]&aLq暴dtr#+}LpAz:.C7"Gώ\].$Թn9*_<M><pı՞~<|':u'U~|ЇOqEbL%{soGŎmU8(SuGhĹjڬjjh*][Sqڭ]3E૧t~Q{÷;;FI<OcZy^/R'u
PX$Hܾ5Ls*F\ZGsy0{ 7LӈM9;<_)5kPL=o7k˛Yax=O㷌_e9V[Y;)ϕi;.*Ɏ``ah^d)F@`fyve9z/m;.JsL^]ib[:$JMnQϔ:U5_ԍzUnM_gGq]/c /wc4Sv!5R~iEoajQZ

mUx;).wb<fr7
y?{sZ>|7Gp|Qm{VZ&]^_	|z;t~zУ<p,=Xz@ҳ>C<>َFLS"ۯ_xi!L[<\Kr<x)8< wZb{2<A{943?0>Oߨ	ݰLy@=L<B(I8rD9C&Q Qΐ(_"QL(O(g($S$Jy|[us')}>9yΡs}sY>GNRݦbKG<%͐q*-Be9
3W=ØcnS(j5<$r73pnZmyUuL֮mBcGOm|Cі?FX~KX-?f_K~տAL~N[q:K+a*PbIlupW
,%&nʡկ8YjKȤzKO!V`*U}'eƎr/}
E#|3g@jm=SJ=J/1&<+6b{{w&TR0(/gs	f\rc˃2tUͮ25*\5\qknrMu|b6u||ۑC@=~c#8v8!ءWJ:s#mW,Զ/3ΡxAM%EO2S)^LTfv(u;/?6R%.?!򁜨ޜv^:mOHc~` رt]1vw+=8EOt+OhYz)'^y_J4yD_?Q}=	}~E_*8DPK
   xs[Hu    *   de/cardcontact/scdp/js/JsWrapFactory.classT[OA=W-D^(@C	6@%)D2mvk/|0>}G6Fdz|X0C@Bn0Lg7hpwx䄢%!opG>Í%Og6LDB,k;<9/	oGNe#{-:E1r߅)q.C"!a!Y4 !00эk}Vd(|wwWHrqTtǫ
Y̔/e.!ъnreKsC1eH풋2ZwB
%4u=J}NzW;!
Fi(}ݬc*olPyg1!D05[g+cez"'hRպŎIu'i[X>^.>Y!_V[vHOד8%kJ::us
	/bPOL].>ْf,?UcƩGy$^,`јLU/b>!O$afccG'wD5?]t1{C.i;!hfD!CfU+yZblm)>ӣPK
   xs["m     %   de/cardcontact/scdp/js/JsScript.classW[wuI)D\6DI`j` x4ǖfT6m6I6MMBvZ]}Z>;G1XZ}3ggo{3[ vOTE AN?u.[/ꮑr^K=ތyw4<˶n
!fiñ=%aBD 4AFQjq1d"~S}AwSr:F[v̌b4nPM˱B ozEiѭ2[aViIZ;dbe1TtV`[F3YarNx<8љ>d6;{'-o#mT΅S|؈'3-2"p-籂YYs:(@2mIԦq"=yE`[O"A
p^	omZSI,
|=fi3S)9K`U)a˥$w#!|#3G[ds$Wq	{S6;O߳Q|QJgudGK8NBtNr?%wk &K3eHF{輇Tg9(ZGcQtrnm&ZԣƇS
ZU~tGqls%[ZF̮c5fLʅpTQȚ\/kƝw)gƋPj8'-#x4	UQu
y,DkW`BK,WRVUQEя21gvӤ'|*NLbvͼgͼz:v@@<*n=S0{m22˝zn淪vY2)\Hr|/Mκ8jpn[\rU>_]^2~.ւmbKLݣ)9->H
ˡ2O}ur@eS!2(	hcL-9bٝpH	v*k2۵e,(r!ylb%xQs6h1_
H9J4],cJVƣ߇!Va0
R
l%.ku		=b"?xН^UiYK]EGn5}"]jNTzRGwIuހv]4'}2K,[uYp^Fv:cg+s̘K87ŝfh3.3S!`2ێ.xp-pfq&ff^qO8ϰEa!;> }C|@1püx89/[O!gC|D{PM@hQ .<>
8XRVRՄo<wEU+Qn	l	7X">1eIHD2ߩ5͓Ǳ2EG2D&Xr6Q))UؒBczۥR)P'b$t2mcZMOwUc1CSK/( oI1ʳOcc5q@7VYSX8K:ǿ8AR:30aYrLUZS|fVF	ug\VIJ[\BV"x_~
^WLju\Q	CP4o[e>ŷܢ/u˜2	|#59|>j#t4C
?^ѰwIC]m}.}Рiʊ*zė5᭒KD	Ib'ރ㼢pXWaBB^'"¡1_Џ0~_;Q~$}dgLudVz*ӁВA$9cx^|24=8z/#IcI=m
Ur2& Kfo\&dsM:,a|B8|z!4i,2XdJXl[~CTێU\,}8jTQ.vHSL2~AE(~RӇC+1ȻPK
   xs[<#
  l  #   de/cardcontact/scdp/js/JsTask.classXitƒ<2m%88A1-;

vc&Drde]R(ЍBZeiHcH&tl](iF=x,;8=<=w?G%kTI56w&S)=6o8^76
qGAtiQ૫"@[20Ga.)X0bqJʹǝOdbCvlݧ[hvt'k+w	:V2=ЬBA}!Fz 6\\ۍx1kX*vخh#QXN:TFY2N+b$N-.kds(kXci21 U	bXZi8'(X:PP6`8fMdsL1Yj$4R)^C
ƶU;p273xz٫/e
"3%Gьi8o)y1bџ 
+ͼYi8]+Z4f9;fr;C8M*5,d;ayR3ĺ-VmհRuذm}l~qdXx1t$m:Mvds6wfZ =Gù8OȘaYPU&Ba]+ѥ4#mSvXUPZ67P YHUS=ٴ6:Ǎ L9*>G#Y[FT/
:]Yj6`4
3,*#A#`Bq1!W*ȂxQKpKESI;cچۤ!.cfD-44lA{0$mi(qq$5%|KA*.f3Յ0++=&Ud;s\Gf.2tDΠhM+aZ_W/)g/tZ.2zScCN\*og/2VCJ^"7b] m9IEWva54yw]1c&A/I)PtJVux/OHx6)&E|	J`2mzy.Íx4܌[XD
K\fl-PA>,[j>`QF|1zw^P:F'oh.F4oSڬ'y{qݶ.
}l	9O%ڧ4|w|Jg˝peP)7UQsIi
ex xH籛o`=gZwgWWgoGkVK{4|BgTJugTU?1@PwO0A)
idtH5['c	ڧ`A]SPKs}N9)F&|e8n)>43fvʹXdX}"mdCկ[Iٝ;I[$iw=EQۯWD+NP)M7.C;9V`o,硋;l"!`uyw31[SLA4(m3n^!\ù{7_v6ń+(3:P\]|,߇ܗ&%/%N˨z; UM/;IHMvdU3]Kۘgꌨc7tr@6ȚYR:kIm[^3kōsb+"Jy<p|)XۑOT5Kp,?ヘqv<Ι]`Nt/hXArWw|
~v!tktw2(\=a*r#b!g9sjY]>qu8F(N6-#h@% d5t$4b-g{^(9$.J1:OHq
G%ܵd)s9,Sv{K<>p3
t]Ѱ'm}aoAۅ
NVTpWChC#:u{~/.ʿ	Z5i_ 1gĳ$J|!1zߥ9WVY8\l*yf>m>p &o_X¼[$(ͫSsC~~J)JK=(S|
\K^GFȼPdn֛fuổvf\ nI`ݯƐn<sF+*|`S4[70Ų=swńzJ4m壱C"伸!Py$~CPz;DC&"^@Y_
[uaL
]q7Mst0u`(~,t=
qXH
c@4zuU>Ax<\ꕃ+XQ(\(SG12dj<ǧ <Y{&YZHz>W&\4'iiFFY%g#Xz!(o W`iZ|+X|~&f
j?[1.haRR^j<:5NGgK\B	r;/! QUكGpS}(oR*{Ł.MsyW'
He\+Wx/{4za/ǗFVPG% 
,sZ8$</kELUqu*^Qa**B(CtO.`夳3G'r mʻ*=JnWEHGQ
HGaĪPK
   xs[
#.  W4  #   de/cardcontact/scdp/js/JsASN1.class[x\U׼L2iҴi3}GڤP0-I:-S4i2m2f&% (o@#mE+ *zzQo{{3I:~Lg_k+=\dppG07MDjGvFT/SۦDn7x"Y.pV[o+3kT,Ld"Lm:ݞ]ok>ˋ"z|ֶ&Y=DWm81̔2"3=;k#]E(AxEVWVT1	bxlI%TfࢪSZ)@[&Ot
]l^ʃ[Zu^LC{1DKkx}}{ȋPu:6/N㎆uB=DoVZ-(jwW{1W_ʯ̣MM^Teք;+)8*D,/5[qVPBBM[Y<6ܱ6JWzq
m\Zٲ&γ۸5Dׇ:ׅɳTm]jneL6x4[OQ{=|h_rVן#WI^Ӌ0W	36cE<'cZ}N3/-郁hEeb	*
[E s|`(Yٴ5ef)U
ʊtQV)6g߰+cUܠuq9"ֻƞݺ1֭fJw]~t#N?ӍD:f̘~IÏotՄIjpTkWBZkDZsRy~ٱ>O2ۏ
!BW_bJWp$QkRNɒd
TQ+\;iG5RxU5/$d&cOFmh&Lz`~ 1)/ʄR$XQuoHIEz~{{2f^Ex>-UPN%Og9Bp5,'2@SNa~|IWv1n~ܡr͛IZ2UmVu^f6ZLƧU{B
|ͫP"Q[~|T\Đ5H1帇c_0&
Va|܏GUzx\pF}6ξ`fWr6'x
{#;L&[4tl0/s
ZރOI|DU^`KdF5[$Y7#_|[\ XV@
f`eg t۳誰S9y?*H[H˭3m5#hޜ`U/+S)O7$Sx5Ń`<Lg)T~WxJUҗ8oRe^|ݏo"Y!,{ҵmFwvRUOJ]ڷLNzF{[(9{oSP=)7T-\ߏkL|j(r`~Ǐ_
≘k

_o~2-,T?/;sx̓ Hf/Nrw_>_5RdZ幑B`Zex#SmҌ@9OMI1%>RBz6ZSAf5'	+.cM%ٱxgH_71dgFxU[x.]=/»X	[A~mnRprCw"=9GUƫ:d༱pW*-
&㮝Y;)~*Ӭzᗙ0	m|
*#geC\>"\nY`(eɘ*=2/Rc
(76LܛaG%ĺl>"7ad
v5j&:pUE($T\EW;Ng<o݇iK"8'Oߘ*r-c|64c4W=w:ga?TKf:P|_*IӫLgFNx^U@%mt׎>OCx_'X+tt]o!]lim"_l;>T
\l,ٞ*O5kT!8=wnKkS_L5Z_>0բcrP;V`n'1ȔSg3QU~*W	FIqt:Dyeh&s0{ظbk`BNѩow2-It
F#ʀ
ӴC=T㇘j͟c5B
Q|<L2h"*݄TFBH*kLS*<<z6Aj쇲{bdeW9:4e^m51mr~kҹoH4w{},!jf
h$O,R8S&!s_5
NlQRp?.P]=cnmLDBMfduj4&zn%h~S+jK檸BbT1w[kftG,C<.'.ڔxbgr*ΡwFK腑DLjJ&wؾoD4Fzz,G|N .ȋcɹ5U}3vaU_Dp'fJfڐ8-<-["f,oB>Vy:/nxfZ? *ы[Y¿""e^ev`]1ՙey6qupRKŇQy 1ReE54kY{apAEltEmr"=69GMV)k.5o?S5E.5]lK44]bu^hk,^r@lAmz'*MO5]ik4=զ4=ͦ5=#Kg7fwJт{h'ՁNG&l=؄Ǳ/R|g\.ňTljDe)brLٌm]vtˍ=.cF^wA+\O2|Z5U#+`f~voOe\\>Q9;lZqk]甽'~6mkeŸ%@va
=0|/T@fVD1Nif%)+!!qyDVʾM)Ͽ)_]bɖn-fHQl#>m#E]P[EY^K
;ɂM6b,l0-rem_J.SOb >j>u/S0h,YLT
Ⓥ:%o84nx˯=몟q=Қr
al<ֹKR穮p/z݅	EÂ:unt܅K=?Oe4[/B<Pg\cw]j&yk|wăJsa1>LÃػ؋2WVV.L)~}?J]:aXAW݋)u>ţCx1%/R
sm)yF/
tD0Og{K{aYMh:wFL g*Ky%5
x\0ҧ=ë>~*Yn%m+PcfON(aט^GЅ7(0_q\Dmgs诋J)/I9(qB*#L&K@*e9u2]aPiQΐm2[zeG;ȭR-I
E,DZ6iC
55|Leobfmc3!KkeP eUN\C=>Kn]K1_nՖd2`!]'p:7$nv.l
|
:-'@|'=z$\pl
ɭ\&==kU@m|5Y5bVI:!
1eSޫ7s\	<K
UΫJXa܃fQ)
y] ԰ηYX3-~nﺴ:CZe{O|A%x5(UkWeaaYL,_A,mELm0G)r	^2ȏJ'1OIIӉRdr܋2D^P鳒OWpzġRL'|B:91vn4]:M<sȨdi2
 03ǱHbGA~ٙ'(ERu_UN[.q鰺n+waWl|=.,|\V|;<m{I*ч`,Rٍ56ULnRvQNEYME	.4!,7Z,~cS+sXuT;!uan?TDqN݄l%ע_|j
.Z_O97>`s='`#dteFgVW4Ag33lhO0 52D1DfnbrQ4h8?søBnVܵqVģI4 xY[_#:7c[D
^!b,B稝G$8j'Q;	#I>EPͤ2ZO{;k(=We9d9AY^GPf8EVzI0:^VQ梜+3UˌK4k7X ѷxKwlExeY_N|}'}m`GQZyWbFʜӾZ|af"P_#l+m+m+:>uPas:qw$_Yґ:5˪uUF9ת}+D*<mu	"jOUA.F]z6d8C~Ek7l$B[P|or+lQ[C.l+tQݠQ4m!m!m!uC)h5hdM/y/Gj4Up]!TE+DzutnËAnh1oG|bLt1QYq@ٶmg:^T*CF>)(K>rGT֏b0A)ًv5D&☪4lD稂rL)4ef:*iT,pBt,r6,$yܬFm#ödfԭ^x:'Qeddl VԾ8n.+sMUS\?$(`<Y~M?E
ըr,B,uC&Uqsf7/!t)ӏ46Swn>0{şqxGA9=/o^XE~{;&*7bþs4uȝ,{_[oȭ*68;37 dAة79@./BO'XOwskN9W-i\k<uPfh:ޞ%I=%:OnQϨҫe޾ow"^OC;#~RDGd'e|PK
   xs[8  -  '   de/cardcontact/scdp/js/JsKeyStore.classYx\e~LNt^HRt6mJo+&fLD(wiAeQ+-՚Z뢫nQDEYQ/}LNf	ϳ<sw{o  J26WpF*+;HD:ۣX:ޝk֗hKZaŲyd<Hપ^~03[X4K%X.kԭ\hjΦҖNZ$eXO:U?^m;Xs~[<a%]'mut<MgvG3t41%-i+)nɮɇW)p,'SpDj
G3ᶞd,O%fc`0ltk'}XSlc:J*U>0&ރ3YГ'2uڭXŽ1uw1wVU1Ceo^Ԥ)L(6}O/[,Ac3$p4JfT,<dÙn+onWP`_N8
sMgʳԎřƝm"'wY;cVR^}&akY#2';:3"db}8O`6wEN\޼*E8L,t+̆x}n4XjbJs)@WM[lk5g+=W+F<j\&pW5U7WMZ#Ӓ)^ɗC%Xp`O)LWwNd]"S9SݹLl&mm0nJp(ĥvIS.NƘdd'9jr`؊OJ\ee2QUE\dLNaT )]BSp<8jJv],DTNɨVoY@;ROՖ% ܳ&zZS}%r+ѭbrggPl4Z]NH;ᑦbv
dĻKvF/m4ߗj :b{=nPQ0.',7KEGq3˦ڣi
{L܊8HE[ȓRz}텥i.D&ь
fgz5&YNý&>#'i4FT>ABQ5cۣULƄSF:O׃3'ڥx6#$P鯫9
=E?n09)S٥dkA<h.;~xO22v6e <ei(6;{|8
<C EX<莁mY-m6AGTke%B_[}8JWf5aVWUgPÎY_7"	ŧ1mHU7M|߶
8g	FhWVHz1f8iʄ֕=4ݶT:mFM
f
պyYÿ	fƌcq܅[.﶑+6i0VxeJѺmx	?gqU.^?e{QsNyGx0K*CtUEsp=j]޼z_xMDDI7&~E=ؘ̦	m
aK1U>&~?حi: s?	QpK0oSVR=YXj[i.Pa*x/v1_ӒtBLs/'MS<N2+3w ئH)n~s -+>ZaO,c:rGQbU
P5P~xCʘ#C8 5\5u
FXJ34eTzc]:f8\Kf'}\ƲJ$;!ɟW䯖L꼑shVVKؔKCi3Lh)a.i@ +N}}4cyLtFIݻWYOZ{Z:)	<>Itg~W)SoghC"ؒ̎2+{}/V$udXV}*9
7w$eEţЯWNaX"MO+!TvF>ZkPXM
wYM%*BE;tjCTɖ˪SHn6n8٦}&֎Ɲx̭;2ܺwvk:Aސ%,5g#"8V('uTcyӧm=I=}0.}'f;`շO3
;Qd>2J
C
>nS_l=g&W>K>;uudv*޹pdT0{8ʝ;,TM
bG3kG=xܐ!;>9cە.Rl`oD´!tk3g٣iwB޻hNcR]ٳH{I*evX[d!hۨހwN+QEt~sho<lMXCG*:'[4D8=;<q>h30{姰>J)x`U{5X=pS2iu;ce_pdȾS,d̄% ,4SgLR~,u|:y5!/|\Qŧf9 siLS?Oj1e"qh,dNnSn"5R˫ș7+8	g+Z,=KrKrK=s1xŞb̕rRȴ}'q÷ "#GQc9< 6C5_ZR9%@{kx>5_5IMUt䵟ƅ<^/<,"!Oy]/Fɧ054WbUm
9S=%_wfȫجĤA)>WϠPHB1TF&}ߋH/ʎayA\CB?+30:]	BpĐ^?2^|1BF׋[~[Cv{	~r۱P%,QCD1dB\9q!77rMnƽ؃OV<8Ӹ}xORx`B?$n<,&>-lQr9<%]kqXKr'ȧqTTf)%ȏ,'aPonur.J;_J>ʬIR<?:y?zE"y|iPXpg4k*gxL+J]SGnYɩQ?Z8"+;t?co֊bȪo`g0dzy
fZC.C̽`+Z'Joyh)&8bѰ#xԸzqOo<q^Rwx4C;7n0d!b
Y
|>>B!1t""a^
ߥAJwۏ(r$<Z6ӣ.#e,]EEur)Wx)V.S9g]NS~':C=G
*UC)c
AAWӗz^Lq.OAU#܀NzO.4YFti/>uciC1\8!kX!6;7m61bܘ'R2$#ӊxy܇<H/7O9}^k1Qp:Ę/
˥ąME+}"O%&[d 	TrtrLrrLr$rF|]}~^k
dFmVg~8J!\Ѣ٥AgAbp؟;2VsʙnObJC(=MA"6# ؔ$DN~x !}l4pRHT_:EˆCPR{SsSG2qjUCphj
8dgntzyC^Y5u+اR*(BkJ/֋o,;#އB7-C/b^|_H5F=p87,U?bnG>ه&N*+75
{o#ůpT8(LBDl֜:֚yDa)VOk	뉐vYn{ur1n&sC|lӲڄf8.&W"-V}.qrqD%*6-h~$%L`Pϻy?lfu˕^Ѩ0_9eExN@;{dr?ocCZ>'PmH66*
`v;qǠ|Uy1^DT:Po߇7#?n"D	g
0dv) Vu֐-"`b&`%`'`>DHD|CRAW΍rn{H)8>+	F
nF.`_*>sh	Nr¾	\7a\}:aǰ-5:yͩ=xU
Gicڪ9<cϱg[P Z.C+)n
&@Cƭ!	yCFPQJGy"Gܫ'fĨ!dAD
T	O8?[>T*կ`|]p<U얾<6mTyzP;t83
37&"89^ \'Ukj
a'Dli[Ojg;/!QIJLH9~N鿠~i*_a]oH^~O}F#lt<rA#sUdIHlPkC	T#'1KCnpE Xnp$3읮/aU.qċ%>*2m"[cOs>͎:&yFeG57Fv{[+|PK
   xs[WA  z#  (   de/cardcontact/scdp/js/JsOCSPQuery.classY{|[W}q%E%N4i_K[V)~(Gvl!u^K׶YRʓ2tP^؀AWB)t$4kQFul=F7H}ص|{s~{\ϞI4Po>6̱l.Nu+mfvGrFȄE8D A
0!,:cu3.m=mZLujav
.`!m=3 p;N64z>/رVlOB>iXF=2]T8LF`	,
=R5Zl3ko
&D5,f,3Q97
J˧~dj*{=lpYo[C$2Vl֧
`5esiVld)T1HшsBXaz:{,개c7fW29S4FQz=hM0h6w}2%3kiMsU_!326B42ZnP4pw[oo;^9IFfwM^r
IɾF4=cfFY(#JZI$ILMpޝ :L߻+9K Q9tlݚIv&{S];Rm=}D'w%T^ v
v%[]=Żz[ySWO ?9IlKMn:Nt`L1|VS
7%}3iPd'<7okCx;']e2-nhހHidN
&H޼7kɲuhm3%hcg"i.	VG&/f&¶!&? (GXFSYg( kȚY	vUPAYOva:ኜ|݁J&q(cqUwhx'P
'SU8z5<(t׸nJF>mn2:#l>67K}cYK)#:q<{%AvaJx9IE%LÝu?C(,Z<!;g`pgytD0>CI4bG5l	ŻG] xUu'	`Unaf?/qo,$&A&"-F\/C>ͬ5}%Ndɣ׬.N#j^>7u)HN<χIwIBx
O*k;dzOR;
40:NvG}8H0J"O"Wx^SkVI
sѣ)]z-r.,SxHϕ(*dUÜ*M格^&rCcgkg;
>+[VY,m+O	ٶlu{,T(L{i56I7Ң'6i
ݙͧCE%XE~BY"e=V2GҋUbnx[-
ߦWvW(ŚƓ|(VsX7?+k+fJYsemR_4vA&kjl>>'GI7@X) (x+M
ԤIdM"wM+^=%,SM
_=7L9;Cd,(o!{jM^=wϤ6gPKlM
=#.&Nƶ\N?.1i)G0ͤT/f@dp]p,nµ$۠kTm}]ý-V)
%3ml"]WQoqՎQwx!cE}H,K5q1e\:?Xo8h_22|&gXR4q=}uGt@*j[,](2S1]$XxHb:˨j"L*y
2Y\fǓYecXX/*4eaB"_qF7a>9烟]5h_-9N]mg}_~甍kvjqUH)n)*"=-^,yCcz-<Ugf/'c)l>k%d#?hkQ,ZE}QiJITuF˷Sٝlw}dA"aƈH:ޅe}N ~G3i$^k8 >?Ԡy1ۻqw'|ES¨S_֋K%sNzy__$6Wo,97zf9-rXqoVcw;V1wUv5κj<{8Sj<8rLoظ%lAzp;q>wx 8#+C௕/o/q=.H4noz꼑3|EQ2z!|)=qs][%; wD'yA6!NiKʽ. Vӄ&|r䇱(CS͔Tk7$VDV	72,˯`"]j/
sB"S#aQWA^@]'B)L4I'1Y;itLݟb|J<ɷܧ(4%qAE+0I\LR.&)L^uDBx_E$LP<]Az")F
ҸYXyDr&Z|)eCJGLWp䡶@}9<{ڂhjAP4tF~ZAj<x0(N\r&⁨#>銇隠rMPʮi{N3u'Ϝ<GT:+-tF+Jw0om>:^?7\w3ݻfNEX6a:͸||5bRa,/au2[yn~ ̜82K..TRK*lg*.8+Bgzh
B!2%!Q"ʯ\+	q	k5<yk#끲p),8㚤N	nN>+մ+/5k2-Zq|+LM?~|UЖj;@uaLC.C.C.CnzMO-NzڈF
/^kᔉJPPt:V=TiP/N0}Y

ϨSG3NC,\,jq2⹂XDJ"dz
8,"E"$
(sQ>|Eynѻ࠼]ƕt1$
Y1>'y}2/ikM͑/J/VIڈ&'MgvtƩ5]L=Ets8Bb>w;5U._Z~שqUK<(e;/3}V_5.< كZ1D!&ކ5>o&q[=UTϸG܅#wEG
4S=W
8]13{h$.ͶhMf{D/.rybzb ?PK
   xs[    7   de/cardcontact/scdp/js/URLConnectionStreamHandler.classRMO@}1!4P~I$,"HPr߬W(-۩Z-~ ?
ulA
̼yofVsws`omP6a0
aR|V{~ꝥWG*&TTaj®a5\)b_:2uGeCLP?#IpdgE/jhI<**ZN+YhC={΀`C_@㫡3M/b4qFz$O:~-FJp-X̟&؇?DA~9 \ucl	36,J|YĖsXb#3^?05l(}QpPWXr/SZey7?'F^Aɚ(YXk77͜PK
   xs[a  <  %   de/cardcontact/scdp/js/GPTracer.classQMK@צMMZ
xH/Q6GiLk(qP=(t;af{>c)T&ib-EA	ʇGb)B6YBi$JUfta~Tӄ\GOPqv|$LMrJ~޵B=QjJFA`R(v	WGнamy>vzWeZ&tV/mmZh^
9ѷ&6 [=밍7vO PK
   xs[[F  	  ;   de/cardcontact/scdp/js/SecureChannelCredentialWrapper.classUmSW~nb@Ixي/ -ZR!ѐNg.۰njTaԱ_K:鹛ݻsk :
b8˿Ͳz{Wh.Cn-,Ez#8õP5n4t檎VZnH٢$LW#Wf9,Ը#83>Gcg,Vth^uլۆCL`!𔜇>TQ0pKva[cXu*ںYNƷ8a#|ДQ5+nrCMY
7Kwr=e!xq%Q)`Z\UI=.7ӴWݠ/3='|0pH4m,0&Kx>)L+`*Å6SI|O Ωm,k㱶oI^`W75X%R~k
Zod,ذuy`
jYeR&DI<N2!5!O_WpaXƎl0;i
I;fb鮛.ڧ	tF7z-Mya0cQy{c1$xi$8RJӵE;Gb'!c&nNa^-ը]4yvg[H[&FXٴd.v/KPj8kmP?r!Rǔ0٥Y8klM%+bVc>	AP;bN%/$_gZx9
q_hweùü*ҍ0*=^0Cnl8;
c_1w,}MAd9E
78pϰ!S/='+g+LFq)8@~>J}s.^|!z|JB{)@lb9 Oڢ*AʠkX'xCX}462<$OA	"yT^}+_dpbGX'߲^:Z'<	0IL-bY%hdأ׆W?PK
   xs[Yt   H  ,   de/cardcontact/scdp/js/JsURLConnection.class{	|Tսwf&w\ $ B"($  8$7a`2f&lZ[/v!@Em-ֺ^m}l]P߹w$}(w9wmΝ|G\R1kF]P(P%=k-obřLilrL%iJUE@[:]%V,vƺH80bݑp̪[L 
5i1
Kt6YXRu(nGZoR@ẘnuV4Vi:{Pj㻪]Bi(lH;旾"ƈTCF+,=gT,rU-i/13y1?Z&M$9`4 
)&Mf3śhGji&Th$hB+M.cH+'E֮20ljxIhb;"QZ"=qgRtF@nyLyzx0T݊!hՒGotS'ܾChc0OkLZ?AiCtAKLZJ
L29L^lmM<@7Meuځ.چiE&5RSv"URMؔb龰rh9=TXa&e/1VcDC0uca65BhՎmVŠud%+Хh#MyDYyK6QӨV Ctu0Ox ǦA3TZL */9ٱ0Y^il'>q6Š&d:"áKVG0lB=8A>Li嶙=U]O4
rN80i'JŠj[Z,nQ]AWtIW5AfѮLakG6z\v&YhZigWΞ1OTפc,o]}<jS&.n4t\,F3[ҠC#}BPٲi~â(1V
"V85I>Hvi]&M0LYP#,h32z(V&N.Oy@_Lh2h##6LϤCOÍX&tʈ5ٶ0
SLPs7zWZzX|Eڋaݩgb=T*;bPx;=S/8\ؒC}tȠ&o"%Hn\)L46'
zʤǧ)G/H. b#/uFdo0{dXr̤ҳdLc˄ģLzKS K VX=/TX"1|Qd{i6`u^1Lz~.D#uQ0hdٟ:~T<Չ&%v4d &C!_+^kY7LNAxJ]cE,k.m>IlCD]wP=hcI? 	&nـBMjsmnhϡ7hC>1)I`ܠOk2?.H+%+(zӠ:N8о)oG褓_Zm06eػ2KoJI'wG@JwQ]p)=qG1>Œxsa$Xit޲8
RS><6Eɦ`N~
Utyut79_Kvt0PMvJQ']LEb:?ˤggIyNzƙ\"="KcJ}'}M>0h%EKVMn)xSx*8N)c!zfr9WfF%F=qC	2y:Waa,32\&sb(xEC#ѵqpgƳ!d&҇ttX"kiwX+FyZA;ky>rIx-I"{>~)3^bRFњFބt VfHfhVwJfOq+ez%k[e%rc8=@W|)+p21Nq"s3y}Rԗ×F/79 +d0-Yr
6񟤇8^46ŋzPg qBۥZ,:CuӀa#C1tˀ|2b!Q}('mwH2TQ:Xw@((MFƺA$]ɳhH)MLQoZ/J&?aUepSk'_jlbeQo۠jGo]|vE-iVa.o_U/ɟÑ<]R̼ɊoĬVȊ[k0/CJH0$#-]jՊ6bMoAʧUFy_Кt?y'Ep@-W(6*C(^Q oI7(֣M<|X0#)MiRMPsGiQ49i]4	Q_L$`J1*[&[P%]rO	AYI3&+1nT<JP'@6M~_Q^;K`\~WM9JZ4ɚ?5gs Q<nlHź4Wk`+#g6ho.3trn3ZQ/iX9>8cڗF)%	At*m 4?aR_Bݻ]Xk$hdEWqF
 ޝFo|s1,Vkܐ-1hO>}Z{`활*YPi2:g<6-SO(v8,K
|Za`ځ:x	.;@[.0o(L,Fҿe7ޣL&C~C%g-jj8SӲDrYKҲv(Mkj<m-`3
GQ_PC7&Qj^e)\	9bz_CxWt#n=~lƞ$q8DcKNl0`H@Ǭ85ʞ=0!Pӄ~"<hsVL
5PS͠:T#h;3l0tX@si"cUcllUFmOS۱J'ݜ#%;3mv{"-I2j*PՕp|Უ'*3c6.Hq52s"n9{Zt^v: KbpcBVGOX?Iνȟ*N|v8}9C*7~-(|WZHOTSF%c:M7Ո (}mһSؤ!kM9B<m4W΢tӥ;7ToLQ&I)m_$8h0(/.s!/D@]ǆeHV5i%5Vќ[lԪ!']ؤHdkOwkb3;`@(U
axZ(ҚR+ tq9[&o:%*
K%K8NxӸ4ByiBa8QvGۑ1ihI{ZzIdwL;eUH'e<=bJxR'cK7X*]BW7koD5J$ɝ ?x ޲r5nIPbPR)Ɠ1ޘo_Gk+gq<}/ G9cb}s˝*g;YN<5];?7~-tDEgsETF,?&D_h]Arur>@C2\.6ZƖgqr V&
Teϖ#T ?@ь4ץMPZ	%hZ\BʩPf%]
ZKz@2ZN`fĝh#Rzϓhtnڜ2淝{Ce
˃hY!Qsw)Ъ}4&dy"oQV/?LQ"~,UL0XP G"w=v*54j&4S`w{O-C>	Sx̓R1)/&uKd4P^6VptlGՎ|叓~
)E>ud~DV]2h~y<ɳX{^x^)/v*+-u-{x++z#ͅrv(ٻ{D,tt?ͧ鋚j:U*Oʅ|ϳ	y<³#Zhj(Lȓ!
SߣYjZ{SgT`a>QM78xDƕ_@0=6(+`59B[#]-My6-4P<
\63zr{zg4NjkZ*5R"7Pm8Ƀs84~>/`E908NO/odt..2Va4X~`C!+ep/}~ʭ^t/n瘚*ї|)zsEgf𾓿xc@w)ct)z)@l/hl=Gߪ*ʒ^ nG?n#x~,T?V!@~UYKG:/|bǍ}Tl߉wͣvs~;$q7uzKOr8Z7 ;@paHV:3rE5zO;9\M|N΃ʇӃO\@Op!:DzGK\D<rI(#y<	\Fzq=bFST	<AJx<Ei=&֨jdIjy
TU?i*
UQxRZ͐Hʕy:[̈́VXN	1%ŗߣ'~A}:P&DVq{$ƾj[6vПgW&ܜ.+RxUErx`pFpV[)?[hG$MF4^f9/M+t=9KCs&,/Χ<@/>,',9K.ΖMAC$=O2N$}䝸b>q/=ĊLi˩WP_L3ܒ<yNRAV`[˚QnyUWJ>P?̗uXl#
yj64;z39\5J*1ZjkL_v`p@x<<=o?w9k#<o]S~D5Ǩ/\]V;Gh_P.JWT=)AgCnQ:=S!8HN4c<厧Yfz" { r#7fR<
]EN˭dг&jTJ}"dH%ya%u<0Kl
A$f{kV`QlJCvwwDz/U}h#0h>%˴=[!lu>.:VP5fYxZ-qE{")zv[s!M%->	oj9o<@%tXBe!?7dcW`&,H-Y*͂9^\6/ok|Gx1Xs
U<YsWzx{?BB4km`_6jMk,\0WXZm1BZXcŴ[|5"I|~~#LYnQCλޭUr~	QwCSCeŇ(0~F;
s=I[gˏѹ,ߧ%ji2\GèF-̯!~F}h{m9_ڥxg.UU,t.5:T?>ZBhBT:+sՅڹ^Υ@CD0L2?otPKO sߡ)Pwp+ȔN%fq b3,9b
(o)j,(S)cMG5SRJҵV; I3r:@4mT&&h2AfaO{0QQ	F v~7w#Hc| $Rb*AT6`ʥ(5vt 6xc`
Y"Ո4AG͢I5C;Xاu9w
s
ximj6p
y?D#uK]v
%>J;h2kXrd$kn0֝U	lp1pd/B
/yH
O_nWtU~*rƧ[\IƃM/S\o?=7!T(|HysC[&"OOiHfitRsWUTi:ZzWi"@LxyUO_ܯ.R:}tX->mҮM1bz`.X:4
pU]8ƧpWrwy6k:xNIowT rd8$#I(ԙJ{ĦoGrd#e(v"W	b/iScߊ}K=iJm/}D]@H`T
𺔆50ZuT6R9R vZ,ڠ:, pժVZOICf"(b8-0.q2-
|,/C@3Y:JdHZ)JbR(*F*&] +_\MjR{v{h w_+o,рEA[.r<o%r#C؀VEf&3\RlwfY.v+("QG+"N4<%
CK0OcH?T
Qm-uH%FAgX_j|Hhw	RH{ЉI\F]F]F]F:_.AZ岴=hyE%;QOT~wE]﬘.gD}W0due"&y"Bԫ(@~"vDDD+v#(0&#bv3b-I cc'1uk/:9e
<MWCyhæ?jEp]Gz9)l|J<Y4Oq.s]u8'K׼SlIם܌abl(6 /fX1~&EcDc(~FrMVQқJKPz5O&JYZ&Hc(^uf>*_>L3Y43=s3̣<59.̧hg<uͳu%ZE+m\uUU^GESZ!Py]ר
x)[,D
mʑ-A@7#oL2׺Wbh\= #V}4[!0*M18Wq\ƹfy'ss'[ItC\rr)Vs9|hwў=8-=Ax|-kжNe<Wի4Ƴ;u/-$'sY>e|]g8,R_&#\oڐb눱B?Uy O*
ERW%>Ue ?yDS
nDwbE=wD}4Y<"2Wet\閹:lf!&ZAw	ݢ:RMTdPftp_/o\Sr~(|<ų&Lr
2L绋_:Ğ'S>ȣ

.S
cθnם[_׫Z}N_׏G0*u$?PK
   xs[\  a  "   de/cardcontact/scdp/js/JsCRL.classWS.zEQ8r q4Q"]YV ʻ+hӴi>>C㙎SgOڙtݕH0{sw=?+(:!a)e*Y.Y2g4<ez	RNDЩ!.*ʌ;Eö<2Qf779SИҟqQsLo9cH\8yd#rE-I*4t+i^rVrZ.bRws5Lۊ"5a/	lH&%ڿˑUv֔u)xi(@BÃ1C}ܪyf͜rJyi,Jj6IMR`<5-٭g_ڴTG<+"D@1B!\Xc-aΙo;Ġ$zeMbGTZm򬆴VeOi |r}9oUk%^"1CF B+L/
Eя'uOԥ!P/$>gI6419aP`>y)ȫ5I0x\ħo&kgViY*_sQ`t'Im=rc(>M=<JmeYzk5$;dq:<^1ҕ[*F`ƌ35	n5gp.bRۛw܆@e`>ߖR%CVUu)(`Js7Ӹ.	lTIEpY(K"-/Y~rU&72)i;"HkZ71`"ƥbIMa(YGӦ7ϙ {Z`پ@O;zυNLoU"е~^Q(vUfs^Vy_L鎩AoޤeWe)+[kuj	eWiUmieًp"K@JkݾVB5SWMޘswgsL^JJIIUPwJt*y.ԙہMք> y,~U Hz猆oKDfO|WhCRͺNjߛ_M,]!&tϼFܖ_;`G`{q=Sd4C>ʽ;k͚/-5ǐ#>~Sm{L/:.y'Q?sU~>lӺf/F(5ݼ5JOV,ݾ1^U[vϳ[KoUcZ0=WzM%E/Ť`[lVJ#ɣ߮wqYV/J8|>,r^fm@lq?i_BG	$lbuITq(G-z=/
nhlR*Ec:v^Cϑx@0YÃxr
'
6RD0D&M|6?sg!K0p;0%c7-f*N$"٤ԗ?Eb0:MGxpGc?\9JϰeY9IL<.yȖ*fpo2^@J2Y	GОD5S.X*N`$ШaVyңoxb9#W?ZwUS^	_ $1!C0FkH{mJum% K.&]76_jc@H @F.Euھm/=!}g?npPm
Fw`PK
   xs[nA    (   de/cardcontact/scdp/js/JsTLSSocket.classXtWyvvGZ"keYZ9ױ-eo'HNe##ÁdI+vԝYVZZ
-)N[!$൪7@R(Omٗph?}e" Jӡ# ND'x"aF)Ӊn_
汄uؘs{ɸ{i(4UCV4fbv5cnԉ
MFǜ!gߎ[ 'R#E٨vy*V ҎvH+Nݓ['2P%w['65k89i:q;5$Iɑh'GK(\FlغFi7pR#(lLc)locϊh/hєv{ww`TW؂ur-/BS%ڨ(4`I@NDsN.ū聴Zqk
[VqB$=u(LhK)n
]@厬[z{mݟK:&ݸydR);^3ЁNz5ǔ޶q;]@̈́9nQL|[ySA܈nzh>JuB`v
wS:'<HDW`&Jqdt#L"cV''H,M0Ɯ{GtSD.t-@f^3IP:;uRo
鄛<6G[#.rMތ;2%lh\JnF4p1"IWttfIŇI9,&)GnqkWۂk	)G0]sLKL"QN$KpS"a5ƔD #..	Ʉ\on\pY,/_XC
@_gYw|XqX̹瞬u*^D~$I'?LY1{Jɘޢmo4tI~;NϏIh]:3x7X2]+>,:gٸ>\)_Rx/ޗ-YU|@ǃ*.[8v'Ӳ6[KQ/^Y0c_H&a67N0>jÉ3
"HO,1YW:NS_)>)eɌY ,4)|+2R#ͱC:fcg`}wI424>`wH"܊h?a|V$oŨqQJǟ3K>PD~P'ǐ(ܠ{_(c	۱Wԟ)(/BM_7<#F%nY`[67&6j'gE+*}AXd:3v@y寮y#_wHϏ%>shxKORR 71id~g'5w4No]T]?&vLX9JTZ@:EåH'cgi 
tyXY#/$02S#DjeI]Q)쳎w$V6sx9̦ˤG:~2C6AcNBO81jgӠ@Ix[Vep:_,,
[İܸrFqIyŖZ3+mX Ke[\1-Řφ}"-ӱrr.=H8)/oluBEO/rtMn>!kq&drOXtayC-/lŧeZ;fJ6,[j@-b|W.Ȭʚ.+D@t*fˏE}f`^h
b.sMR+ǭl]PM,w(',gkm'X.qдN3g?^*v1*OL&T,ȰNEDڝ2񡈙+!\OmdsCGKd"	'y*ͧichqH"gg^GZkIO[!5")2l^-,Ta;R[.x;޶*+{	X#fvY% PxWk~oP
};Q5
UcUv\<Yoy1|Y.Q)T[\K>ׁ+ɣ9kxk/T{.T@M*n-?_[F ǁPm?PzDڴ&|bcfxa-tvnsimgYJv<vz"L

M&i,RpF(o\7`(PC+
?R
E I.!_Rs%s<دtDON󱷚2/CAC)m	նj9<
ά]J|=mh@E1jń,8-J2x_:~g%YO:J>OPi*u6-n47v
8wNފ.ظ'y3T	Mr,% WAY^!>89.it`LVQ 
^]WШG^6]%_#͟~	r8ל#z9S~	53};gNTy	g04Tߺ2$[ZEOf@ZN{nx]ߘ%靅{g	hv0[VM7K66Z3]F<?f Z1iA9x{_79-{{ITA"Cay#G*g0t}$s<S>y~Yr
/J?fڎrQ"|&|A0jqBr *Fs?|{ob-^`Tb6IiExuE9r9.U8UE~<MYzTSs{[	h } >fq O*%g`o$ _@9ȵ%,y[`4I)NT}Rc=qV
QӥB:JtBWkJ,Z.-$OH	Ur	W&3TP2ט
g*LQ^ȇ|x·lxoe*GF.?CD8̣$4SoxloeOSƧpᙾ
a7Fo{@!_־?IWhg63Lzv`,9~O % BծOSL, G֭1O	psjEc(N-JyjWh)=VTSbI  2qqNnz0Ul:Khsd%I'=}dؚT(}'}DJGSo		fB)	x%c
,9whȻCC!F'3cy޶>>'R]U2i2*$fS4QQP#*(^9dJ(xl}^y"V	*x앲y]4xE=7N&%<I4sE[ īsz^שճ]=oP׈}^&:~q PK
   xs[ǻ  4  ,   de/cardcontact/scdp/js/GPRuntimeHelper.classT9sP֗|($&0&4Tfh8	[Y~#ddI#)Z!CPQ8ᘤTjW߷Ǭ}BZCFG9By,N
6ciEst1( tHGE5
8x|EDl8wO?I[".aYCYe6&uVыOie[F}?Y~ 1]n.Lol7.TUWȔ'ҍI	b4\#.t2/'f
bp"t}D)n&owE.+Ihv:vn#,uW04		Ş?-QF܄$l*zR u8,2XlC:\
< Ud]@
ΒߪKd]k~vnJțPjbUt(@ŨwPa*,MdR_
[f]e/;.ב RX`OC^{$P4PK
   xs[~N    #   de/cardcontact/scdp/js/JsLDAP.classXy|1	G8dT 
HB Q<
R H	G	 v'f'Bz`jZ*h[Ko{զv6$$!7{~^^g Lb(@@CPGaTboMfzs&TWY~uikVOOeR@ir
I2a:Ʉ̄W&nYu.0^JJf$c{%,6i+Yb%LKٙa!:X`LUsB1:VxsvFJʴiTly1BHg`-謗Jf+XBГ%_zνKWŪݙ#O~n6zkc$,
gsٽZyEZhcJlxnIKUpڍ%ޖV$7{gD98W`؛gmMooI55@ܥkI6Zm	UZUuLy
^ZQf0MR9tU41ʯ9X~m̘-)	_NT%T>T4;R!e2OvKT$SZQG6/g-gB\DfKK{سgWQcoJ%-"5\*Pm%ɔc *kr!I9bL*%~똁w1[,q}qyYgw[~:ya&ȗ4ƚ,ofU̚2O/pFǄHylI}
[^F ,n
D3|?
XC`9} 3c<벞\tZ\_a:/Xax/Z.KU9A*f̨=I|Ui2/BtP3G$t$njkn
!AUKeL@f戕I>jptQBZ6]&72Қ9c6y7,eO.<n(X5;j
A\CRxV>BF3AD^f
nx)ul
3rsM[aF7I%ˈnc*c%,p3npj~)Lz{Nr$ܞ:Rq{u|;OVE"]>ivgN*y-}EDM~	}8L'!+i7]'t<Y'V+(xD}Rnil)'y\ǧEUZza=Fy*S=뷆}N*qkS.7߽xBnkx;i[b4gԞ"n2A;KZXr!e֨Eo/f6S*m>ݳ:9l(-%qu/PY@~WLVIeuYmYg9Ksq~S^KgE\e57JzWd%L[͎^Vאy]a   И^y%%U_tɰ^ro$/YdmJDc੒C-_&I ד
VEW4 Oɣ_]
?gZD.ä7\eA)'%TtÓW#m3J8M9Z<DRlu!B|5
4n@2]u.	MlInwֿLLZ%0Q$C#_\48WGv^N`ff,QU?Xy,UTt+SiO]dA*U
9'ٶʘ-N"1Q	Q$0$̩&{Eǿ4
lZ}Üf&񵶽! TENק1)f2.@r%""JHpʴjb>w͚߆6%a9cR0<>ϳq7[>V_ФO*|#bȧ3%
SS24
8TC(\-aXy`s0`(}cW' &CGQƤxO)l+غ?O[iF\cg#Q6`>#F]b^}bL\z\e]A]kЂ+q-rK޿	Wj}(dkp-9[3"CZ`ttiU
?6hl.~yna^Pž"~915&B<zxQV
~CF0sX5^'4܎DGDwvËĤ-wxQ軝*[tFdDlÖC~7dm1%#<܈㺸gnDSe_>צ)vbwS+IFb<y
6|a:R Wa+y]k`6\q=n
؎M7qVbs9ENƫWȶa~S./Krx
"Sx5
sib~K-D=e$We^3W	+_WrNƾ2ޒ¸Y/or}(4R;
o]79,ۼf2Ŀ
 i\W^^6nˏA3KqUFRC,;˔d֙ gI#؍r<F}Cb!Pe9$DLĺN(O:/dJ3qq:V%317ſXLAw\B
O5C
6vG\$ԎH#x+09ǂGb!t<fD˖2Nu	|QT|(U1GVx6v<'DI~JN~0\bwcY.&YZ=4nD3CWqCF%mp'AvX4#ϱJ>$oMU7ȬαשEX'ĉrBjg 
8ީ
8ީ"0 [!0#٩)-ԁI
=A.z{"}	REXHb+!!sck!΀?PK
   xs[/=     /   de/cardcontact/scdp/js/JsIsoSecureChannel.classYy|\U=7ҦiS
tKi!SB"e:N:mVP((hEQZ$

n("M&dV㟼7ww{'ya (CSn	ߕb!ghGѤZ昶vs6HQYVxUU*!=NPHiWMF"SǵG#$Z\~rz\Z/7b<J<I=#tf?ww{P&P:Ҁ8;lZָuZ67L0d)nj^Spp#vxjIĢxK@Io+pҹ)*NE&H4Y4yQӥSMUmR*f`%ZtnU6	㣞yP%0^l_H+YQQ+)tq8lY*fəw
k[[ypY#IYYk,E*BFŖT<lFq/`y*\)y1~%٨	Vyhz,PP",+Sf4fV-M7,ZiIX}to:iW pj.7:-;i&?$4DS]ZܬJ-fwR
y+TDU2ꉝ
Fz}.ԔꬡT܌viZR
[/U8OE3V2uh&sm敉Ë%hQq>Zܧ%]vք(ʪ0gq{DsenWю
Ķ#KiʪoC"'①=E3Z A5ݞ-w%*B,0#~HUm\E-*:U<lqmgS0C4&7.jeNۤ>z!q9KE\ΪxX&3dS
	]s}S]]xe/SEJ҂v!DtU%@Kqyީv<y!\!P7|;aH~o3άL{q9zU[fW2FC8L!eyhՌd"nh6SZL*nC]j`6MеbYhA>[Ӻ=3gxש7UFDkCD+?Fɕ9&.s3,T{% nSAcCaE>Ӹ}Xʛ|9%Г7M4])]>2{|y]s5drEBbV]/HuBN/YMWU#nZɡT/OxMv0Y7ñPOݜJȘfl!@"f פ6k:ɖ<@'xtjQ9=4Fvjr˜Gzz8Ba{Y3jlmA YPsC1̲T&3]YE
OaSfb&13rT)C:
K8=e3vFMo*Gؔa;$/w0\&t1v6JGdH"xt[ɓ8J:fI%ӡ.z4Vh&KRb4}9Ӷ|5mvg^fH}]K6Z|<,$n^ˬ͆LBScKTt\xR)E˘T)xBy[TgSd Ku`t$
dx[l9:m)sG6QVnNc2-kᐩE=Fyw(>m8v8~s
4

&RzX[~Vud7n5,y*v}i<p: J!OE ՋN[e7S>WCT?%;&s|1j/AShM;Ol	5$k#ҫjaMC(o~J{:{{?46w=`֢-Xkt_#(j9_㘤F)~(#mB z,.U8f8lB5Gd/sQl /a`\''=%uCcM܇lGI?.jU}sXζO$3HL
'af^ż֬Jy3ĵ·-L<',&ZfI<}摼is%ɉYWT|
~`	~IAZ܇MzOj&~F4rI^6a?lȋ9US6%RG(u-uZJsYNTU<uu{;lU}J9USaRGZyp4䣟WJ-z?]y&,F<{##<Ha)q.s/wa@(~@p
_SY̳0\enZFo;ipLyzQ{/)Pvyy)x9CiOޣt F$3GQ15A?YNސm1brTFND</K2ƕ&׸UWu-f1c}4hЛѠ7AoF

f4hhPϽ_IkP	a4miTpx"HMVa{t"isJGI>ևKz6>"dflH7H1D	jYTIhe8_gUUZ3f8kMs6
gZ8j>gs:!7{S{%/{yxA^fJRC^jɋM^fwɋeTԞ1ۇz',XnyYmIwkF&]_3#'I1+D,~ Dm/$qh'Z\&QRl&"z4%VF
潚iŒcJ~=#ƻwek$ ޝC{^I{1cYx:⽞xo w/L{~'=# {>#~  "އg^;=W83򹈠=ޡ"2Y:"$0I<3l]89=NN?Dޔ.~*PK
   xs[;o     -   de/cardcontact/scdp/js/JsSOAPConnection.classX	xTof&o2y0qpP,Z'
 IQ}yIfａ@Ej[-]f]aV[Zj,f|~;{ιϹ~Ĕ C\]d҈l5NNdHz=IsmV3
TH'%ƦMӥ@d 8t]J;v?TuZ1+Y4LQzacV5bnĉ3N\',M	+-P+Ml2mG
vJۑtv"GP`m~LrՏj-:$8^GӸ;n&&2X9.>mc]6Ci,`&N1'	.BM$2ߌm3m@LS)\ot.xW蘃5}"`~J5
	ZtéD4!^E,M;:b1x}XD|
lpᴛ56:N"a[Ogtӯ8їnm[v ѦLEU8ŔKu	m1ݜp	+0:V`%smk2'Ɩq>v)8hq.V41JL2r^WggC۵VX5Vu<M	v,EV*"hk4\'0cThɸ,e7)utcQYun݄ӱL+/<͉VPZ\lŅxt\8e\#m+X6ey[8
 !D/ZJf,ͅhnx_"F~	l)LLɸ
AN"!BflG_Iޘ$:R:<Ño6A.QYѐ%3yN62rLf(p˧^ZT"
\9u,pB W*W?	ndgzA+e:@׏( j)ۡl\9
ЕFKǻ^SZ2F!ަ:HǓ&/qlnhi6yŝr{4t\7_a?}RJ= :de8
>:څDn$rĕW~|a&:n[awg\I,6
J[>FiɦKZ)	cx80wc
q.In?}3ұk#*ZvM6c$emm2^?^<F1̶89{	_IUٴMMc.prST_~з9
eO"9=7)<NLFe-/Cxy3UQUe0DΰȔ%|g$]5掕(2gB7y(bjxRslQ&P-{`M?}c'TMbȉҝr]5.t2=q+&fF犍
]ZʻQ1~e*Ƅ%Yq%**WEj
'E'cbtqokr;>_KNUXem`[қ8¹'I(ʒlZ
$J*(^/3N6t[Y;fJ
/.meFtSW-D@T	&<~Dz_/û`Ni7qfwZֶlq[J[1*Ik&pR|H½a5jFv.T-JGN(\)*3Xw:VWh^Dк%usV
 >!:q ߅Ilk$9s Dsa>P&΢8̑|oGSs*rtq{ՓZG-T{rKprsS['k`ȓJ7 Je8
GF"(%|9otyI-A8}j.XsyhBސo= Q~GNEc	q~ꞅXE96&js[)TI9b8,|OpD5|]Lx
Tķ43Ӌosv^	I5,n.9ċ0O=UQgV1hM&A4Wܵ Ķhm;JGn脖ЄA4L]xZ:5W#-^{ꓸ%My5)p9#x%Wٯ%'	7X=句-6;o5+fZq7}/{I"?5m~h)	j)ODq@;3sZxRqnr+FVѯ-~sVӆn8SmUTݫa?){+ħ^"F53A/}-I|>2^D<Þ;0-7pGKˍ(~q	q<{rwN.{-G3|2/M'd|uzܕ+^WDKd:4g6~KXB.c_l񼐻g0&߈
F22kjOF2Ǫ_1=VEKu*re4,pW|%W`RUhU|PGgua"l#9:Le><^N'3+Ī{<YkdœO֚?YNV3˚1-_3+qE_QxU/U
Q~.&B:1ILFPK
   xs[bI  (  &   de/cardcontact/scdp/js/GPRuntime.classuRn@=& %@PJm iQVqT@{9ǖ=FbG!TX=ι_;e\b"c{گTA((0Lnϸ؎Tb"먠Pd^0LUp:u
{pٽl%sh<b0o;ah#*.Ո2aPCMpO\mTH%!A0avUɮc]䨖(R"#BDI)bI^XTst^Lg	D°iZ.'<US!kyE9#Dx\	BbSDt¬w*{lBôFķ#^Rp,ψ^]ʎL3'_DKB5sxnDx6s<zsM< f&ނ>	jJ_Q>PK
   xs[,E  C  .   de/cardcontact/scdp/js/GPTracer$LogLevel.classTOP=ePA
#i6KWgILwHh4|2,QX=^ `UtRMkm7L_nG]奴vK-'
0"/+ys\VefeʀK
** kj!W$9V*iHzI.f_G#0`7HtڮE錶kc-k>q'pS¤)"seG
kU
XL^uN'w}v[ ןQm~Apr3SgdDe(22`*7!$<in(Zގm;!X\ERkS7<	kYlOw69v5GP:S+7`P?ƙ?gZk62xʙcԦbuvǗP0aʦZ?x6ISqh>Hq}: h ƃd11n7U *S6Mb=}|LCRğ£ƒB'7,,1_Ho0=??%7!x9KDn|F!7$4"=
޿#ϰ	6>NNwIZēL'1d#<ɬē1b蠯l <Qq%>#eG PK
   xs[              de/cardcontact/scdp/sss/ PK
   xs[{?
  \  2   de/cardcontact/scdp/sss/JsShamirSharedSecret.classWkwc=FƉDdl ؔ0&$dfFI,/(mhЂ`Bhiޑd;j/k;Ws_>"+xTx5WpnʥF|^Ov2GTmC{,x_E@b>Ur|˲^vPiD&
PꬑV6S,8zIٙhʶfoX1->-#gd,CldW[A,R|a :O2z!V(:!|t;T8fDKUtDCH/dEhYE.ȼ^ȥ,:=gSs˷K ThGmV4b;ehY
ΰUe-6PΩX穐0gL]]*8戱@t)!d='(X"p̥IVΰhE\Cm
96Ov
EGDțQ,Sg:!_;.԰q?!36
IȔ,Kq^Gi9+tWQ .QpNWEHɖ5Gh*xЭGe8oߘ#
uؙ蘂tt?q͸RZ	6Ng51I2i>-bդ"-JSTN&BNs;OkT\^sK,S"yT	mh|sv"GS^S{Vz
p͞T$BFEVI
í`,m*eJMqd^̫0u$Ͳ!*WC<Iahz((
4(jō.2<61D[)5u?1p@8إ!Nb/\4,.cfŜa:Y9-ˉ
kcnWe1bqcdvЎaY'ϕlGoYbe"7p'RN

:W
i&"q{5|YD`lyk:ΉӉSX5<iu<_됯agɅc$CxTؙ5G_daz߰lkҗ)P6fe]ɧw2yhwͧ).^`}K	zR@Wޞb^Q;D6뚺kซF{mA-'jմ
q:X4/_u=M]@bgCU<h
ֿ/ēqx#y{q
"xPS,l5o<0J1(-hY!n0M1\ǮxŢ/CqD2dN%#oD~^3+l.ʔpF5ғ	BX^#3fzd<h2yjv~|*+"'Fҙdw|00dVCxYKgJ$-*ʳ<'{*^P񾂖9So}Œ16XV]#Lq/D
+8O {̒c~si999p);'/GkGw_ly/~4Vrclڈ}Ti:s|I,Ia_xIv
!;ÛXNaN*Zq/aͳTh?}kp1;:U')
>᰷y'=*Q້w#܄3J\p{Q4gy;
s_(I`~1VF'C)~&>1]lly1!5./TQ^]-k\pmǽWm$'y|LǴkA\Ϙvt .u`!e;%@Jyi.DK'ë}IlO$zyЫLb{/*B"Sر3kRUmµILrh^|Wn9L8~!9LK6Ux{饍"W?wx*<`ڈ8<" xx$L0 mW
P7.PU*dB,/˽M5ϯ~S8w!^I \
PNn[$****pP#~[
=ފRmHFU}B~"*~'HjwŻ勉^Z{IcxӍai	?;fp9ˀQ*ƱocާFoMD#ՙ[ܙȌ6aKRGc)#YG6FBc-Q%ΐGoOᡝ9*{ |+y鸟=@x]\GYcx	YJ IK|}Bsdx->Cp'
w*{eZ(dl?r'cRB۔5@4[ߟd3V&W
PTMU*
ʂE"nP2;?PK
   xs[J1e  v  )   de/cardcontact/scdp/sss/SecretShare.classQ]KA=צi}j
=DAԃ!8úkQ 	z;D>ws̝ϯ !TidJC H
2g~CZd\3%wEw'ۿQtCJPqX?@IOMGQ'^GkŤOEtܓ);W:"~\ITw[Z]\{2
]yk/#1=3AOТhr&_J
E
̮`ٍ
/PXFM,X!ٛӰ
TچJ%`sa)보
G<c#8'4Xr/K6];PK
   xs[ӲW    1   de/cardcontact/scdp/sss/ShamirSecretSharing.classWsJby#M-+q 10QЦYKkYVNФI;db^_鴓v:i2ô^6s=;9{뗯Xס (`5E'vYYO U^y>!%JtrBً@L.Lo0Oٞ0b`@kJdM7ulzr67(ˉ̠Y*+ZnӅ
Ei'Łǆi%\8X=%sq/x=tlO{LGXg
#,xjle+nOdc9
xP d[c^ڑ!D*Gb5 k^suRZp	7lh`..,kY
fqAP<0Sy"HCQDOrq밞@܌Vݹ	ItctsX੻;q6薩
*E0Rҭ9؂O؊^y7T5Y$EXΔ[XZ`iy>PşYԯ/-~iѿo{bOྦྷɐ*rsD)<dCR!){rL3g%[KVKr[FulnSu
tHF9` ?
1lw\ Lɦ{f̳f5&lV_o{XVV[PT]Fbp"V57-G!1>_дcak-MJdd\*V7R)c[F۲=y- L;]1n8<fn;eOf>SۦGg'w`~kLBM@VV~J֫t7])J$9}Gѯ!I2ְ])Y:ar̹]k_ͳJelU2i5;zX](q*n-H-S#8Sf촼A'W#8S:~ +IuZ^d:Ы7wb6I*L;peN'lQNCo5=f)xVgE4嬼kYM&-7NMj'ioo?nBM$htKٶ>kud# thUn]WTRL٣Rr>8|GԦuа#U%|.(ã
Ρ+\@8-d<Z2x>} ںP4OXp_Cp,X8s4$NR\q
m5X ~HL#ۯv%OW^|؏qwYxEJ8N1_bV*A{c55#DSQ6Α!$jDQ5eB>ΑO>U?w')=Gi>zgY&Lz;t<_HUs?Fjh7RXGDt:XAV>q
7
Ӄ}O[E֫'lIM6
r:&%m2Sx,0M}q9;_%~~0//0/Q~'
6qm+ ֋$Pj$j$q6%4#w#A:/V!;[.I˴Q%ylY}~Auz'[%}%ٻAJZ4pK44c	d$f1
K{%N`R.šxT([jE|\Fi[mYӊrli6i}LlRx?_gY$$b\`y\$@ff2 =2co17z;oix_.HxGhl 'D<
_RŬ O>Ff +zY_HG!UbGk;ޣՎ?UWqʫ<I1wgL)uTu\,-j$:	-i
ݬTkV{ߢߞj(*.{o8IP-%w{]k\zgl?%/PK
   xs[              de/cardcontact/scdp/pkcs11/ PK
   xs[{g    1   de/cardcontact/scdp/pkcs11/JsPKCS11Provider.classX	xT=7KH YQHY	R `#2{Ònť*jѪ-M7B U*V]BW{k{kUz}/C	~~~o7Ͼ}Q 3
_T5O$&ÊfiQ7Q[?;s<+ !@U̬X4]mEctKԚ6zlImi2Mpj
sFēM5ra:c@ <^jJI+ڽ}͕dQRPk*M J^+ʢF,֛&f̰6dQ;JƉ8	N Z`n!h33/-ojŊƣL`|Xfxªim6-PTs'BP^?(5^cʡQhSq@ɴ<8
K$RGh(gza57i.j
g蘆3F[Aץ5רey\q<g|:Α25:f\*RYyrtv:URZ|@|P`Z`l&nont^#;c]rsAWQTuDʹ
K&\)]p
ARy7e4LXt|ƴ-&*j+v3Gm$m^cŸPEX!0nΤ6ϵ\ohzw^7k/&xGvU2kфi$ikt\"؟1[SLIZdL@5Du@'#mc"E'f&fưMNgZ+z\}ܒ¤pq4C`dOR!ZA'JHT
Nd2V42a[:ldYIfw񚡰g!Y?ݹ.iNhUܖL2'Gu<1WhRU8m%ıٰZJ\\+Mމ$O$IScJ~q1OKo卾qul-|Tmq	Zym:>Yd7raL2;͗gA
Oa'p~9o80|
c2D6d~1BNj}pW5|QrO12#|nh||YWUBg6c6Un) :n
4T +4<RJT)=xX֦rbgIй<	Tm')lVnp&Fh/op-CtnIF=Tx@4a9Ŷ.0YMIJ߱[f956IsiuP$[{F&.Ig?4<Dg &rmh)2٨Jm6pHd^׬

i7Yӎ&JSbZ7AVhy4Sw
q#|5imɤl-4u}nFCֹPwmP3+(DȚKRL[~ޞQ=ir2	M4$uF:.
X(}%5gY;'Jؘ46{ǵ@
?=Q\gzlq00+J93a7	{;O3QnNemA}:kTFuU`v4%&Ԙf悸Ҿ9|T8/0Ci7bpDHjBg&&*Dzܸ2	gw:.21^YS-t";~[D#	L
e,&bđm+[u_xXrb~RqÆT6Rq~*Z̭eIʲ`%fFL	C|T;&_,ؠM^V4
Pg!1BRZY,oI~J|s||E13-,Ƿ+u=򛧸dOn:
WQTuuہ@N0r95u!j?#?aCbdN?G=0F]*
,~l"~*DVrWg8a'l؈F%Fpց D#иF܅{&Jӗ
`\Hc%z4,,޸Pb@[b
n%RaX \NhCb?p~(O3j3w+9a ~ȕ߆F/PAâ1%?y.ѾʽRA/G+|3g}RU\2!Ux^JEqJ9:c^y"OoA\Fcp&JUxEe
~(](|
Cq
/w~'<A";~"S*v҈ሿ"AeUw ,MH(I
<Cjrxv~+;bNFʊE`cA;/gϼ=r3ݵg-˅3*g$Qphx]_IV
J	IHd
:l!)>5+4	5D,"쉘Áh¡LLm`D
KW;p-;
F=>gRA|ʍ`ׁHRnmǨH+p':8瓔/st&~ M|O.J `<m:<yŽOڧ3~?}	"݆";)=
Ŀ1ʹ9Gهsdv.fx*+Jopη)WШv
ۊ`)ots8J=BB7B&ot)s7ssH3v+
.G"!,Έ&$ I<@>H*^l^(;pہ]س~u`_Xr.);<#ʪǥ_3}dkcB_'/WEG/W0̔3i 39ıHkLޯd0ѕD}[؅/s/EqGA	]v<`wv<NxSz\R/g9JA:B]1|sj$71FîrZJ]J^znX@2W 0Y"F~@Nŉ$q2PK
   xs[̚P  -
  4   de/cardcontact/scdp/pkcs11/PKCS11GenericObject.classU]SU~	YHC`ԶwJ[Z-X]RB$@!ָlV%d6oљz.o/>g7%2uy89ǫv
Txj5#^6j^/ǦF!ȴe[=KsffU쩅(:Щ 	KfНQ]p5Tm
kX]iןd>	p4Mu]ڬPaAIWzZ8Uc]ٟb~:8>1q\#K%7QІ.@pL5fxf;1\@鲐{̨0#9pWN[;)I>Y(f*-
Dj8UJT욫^!6%'eɹdBk,XGi^^I'Ŕ.m
r6JbjsZ"p:VJnNx1-ebqYͪ-esr2"#dFK̫\F%J9&)GZbV#1=y^!}|S]XDĂu-\?4YtbUݱ$n#m=z'gnk~pXnW ՞fLMT9Rd̅lN<o[Xlf:+Um&rLÞܘ̴p_wQ+GvFz
r֖u>q_VLҁhRwsΒ;{ฌy
n97 Fx8׉' E<]-{1'px65D89Z54<2>Q~y|n+yrB+^"-D9ߩ/P2/ѵ>p_xt{\{Ѿp|Eo־s')9O`5`}Zgzݢ^g2I/<x2q
hq,p>9-h{^+_l?W/!W*"3<^#^u}^PFPʼ~E~DmsP/آͱK>LZV,y+ PK
   xs[|  (  /   de/cardcontact/scdp/pkcs11/JsPKCS11Object.classYy|[Օv;JqNyIMgYN	AD$ZB2KZJKؒ 
-mҝuڡee}rLC~{9=
$&8a8N'sX&Շ?ѾٷYxSSJ(ub
~>R\4-lCClW7А$Аߗ0P[&L<&G790=eш&Tݧk"YH2p܎NT`aaJ6VrJFM29_&*<!T&CL<9TS9('15'Jf;ƶ<WiLy&	L苦C8
I{K[Bj6ˤf*ƓLׯҌwX"6`dXM#YԀ;=+<,t8,"2JVƷ0!Iêo[LMW7rrW"MuK僢'S/7S,I1kިj2k5MQUwb8՜N9>$N9bm˧g3)&mZIbY!9V8H8mp+r;qUw';ecYq|O,;	3
SyT3PG<&FTmE8Zn"$z<EI9UF)D'X^Q6"(|bZ<b.29JQ09+}+ALQLto9_cdO0	-B8*4am'*{zSÀbs)ia]aǖ4cdQdgbډ7X4.l.1a`V2vx2˧PrIcOcjv[; ٴH@6%m6w4_F{:#-JXaM]/u80_'ծGm&mns Ix>a~9`WwszH
{XH!7K2[.SA
NJvRJ/0Utk݁kyJ%ӛ6_7-"|N(;7k*+ w/2=JU"k}p9EDD½],%އE?2h|Att7+:D5Xp8MĖz8
x=9c՝Afk*ѻVQ".swՉt3^4(5H[7ڍwseQE"zmyA,nyxb	:B}`o?->Jd]Pr1~\
WOr[#H>V6).=˵0.tPX	EN2Cb_GXW;|^WB"0?!k*9u}?C,BbipEr~k#~3cr@_CŚus::J[畋Kԙ1EuY-LttK, ϺZ
+^*h𱏊%әSz_$rc6ߺj-9G|ޖ"!V]a7PI$s%QkdqъtPVv>tF,r]mڑu~hm`HqT6k)&˵BrUZ;h.JmBod}et4G,||l"[,w6s9M",pyNZHǱ_x	R*
xxθ7"vR(dڽśWEGD\FUIˈ+)Iu_b׸jNtN .]F)*V+D'+1bXN jB- Jbauʿ6@`7UT*,S|f⢭P#]4I'xlV5_Ot19ą~a=/7Uдz~K740P4/$qB&>d1dp!Ov[}Ҭ8m_<wd+B,=CH>Q^P!xH։C4'Y2nÜްlbO5s&cdnۜ}>WI9Nm?O_B}:AX0;2sOrV9qޜE&죟"Q'*NщC4)iRb~/$N8&TNM`vr^L![ߋs<iȻkv*H8JCLLm]t\*q$Xh]
mt])]O7F'&/,Oڢgiͦ2{.('];مTjH'YU:7H|9|aah"[dRh{-&enyDQNf)p>CT5SR'ƭ@kjhb`95SJZ/C,KG]SmjP1VC֚a;QZC~r%\u+05j=ٵ叁錔Y\`ݏō=Fk<1¯aUMPiUZai d<O̲
m\Z%,4a&]6hlbe N;~đ\.0nDJ#"<4)@:N\x3f^K&+nuI鰖T}v8Z160hamduw&/wkGpjyRxBƓ }VXYz5g{m1vm%੽J>=BȄu2٤l#ُXF2X(db#ΩT!R++[h'UK
~Ysj*p!汳jq1N%8eq v\ŽW|	⫸z|7)vK	/f[4wyv/\d'[ⷫ-J}v?8}O*td_M4ĘEZK[(a/Y(ćv>^>fJ2"lp̩u<׼[ֵS4-FѴEf4/MѼT4Fr,+H_W|m|c7iskF2ڷ\` I`.<<p.6;$p.5eU	\n wJ
KW7%pp~	쓀 HC((xQ	|pP~[xB%	$0  /@? |xAX` ?B3_I`$[	x	,3$` oH`NJ2$5?I "-~xWM
 ]Ĥ!&D$b* ҢEC9M.ӶҀ`TY0 1+|ڃow!u>XB7wc^܂}x}xϱ7 C$QGRE<F8%' 
K{84g]|dLs?45G6t3
yN`?1ݎM০ogsklï̳k/W7y#^6'<j7{;c9i~0?Zx2,_,+Wo[6KYvo|`ZG5|byO5u6XWպlaUeEo9L|9`c`N5bA8nt殰4ºmF;)su^-Q+*Zi^^
ըEzA`,`QEsQu4KY tcԂKJ۴
0L
0L;޺^˵ɧWGl
*DNش'\p|u!"cч-/QNBwx*UL؜F$!Hr$ͱݭT%A䴊lbNfNaP+K"|/Sϥ Fg3bVxKub	g!Ę5Zfn:çtWXBc>NT:$\$FffLf#2R.*
aRnIFFFƉ5l&dq]_2|f>j[vPV{X-+l<lyMr8vq\Y|
unUjX̰xa2bͺcuG::63]mW5Q7횾@鋨PK
   xs[¸'  k  0   de/cardcontact/scdp/pkcs11/JsPKCS11Session.class\	xT?7L a
 	:ITIL@.K]RqZ
.uWpmmںպVRE̽o&ûss{Λ}< R?P0,0%y+Z465V"mѼGhQSrѲp}wRcsc>g߁phՇ[h^5uy}$??oz&?&44"f[Z͑XUmּltTNqIs(imąimM[lC.q3ېA bf]uM*uS,A;3J^SyI^ys4$fA/aw>3\4YLL݇9<g.3? ]Um8O[t53zC5Ѷ%nD8a Z˭
]	m&!
LaT,ahʹ@E*8,.Y^pK/SިlGĺqq^0@Z$>QVu	dvPC&`2DW=,%6eY76
zqdZGbI˂s6L|ˤ	ǉc*`ڂ2%)UJ9%zlAkǻ5ZP=L%9O	-tO)q8@JPJKJm%	Vfv-Ce6,Qxj96,=ʂ5
*Z\ .+"%vj_$tcFi+ws9ÍQ^"zCܫ#ҲSy9>ߍ/t#|_ʵc^*j!l\N"4>ݕrJ
,5@V
,Hxj0I87bU,4ڰE-4ba/S?Un
SI\Oug̸څwP»w7׺7BUvWQ.O}N|A| 2+Hotz{d0<Z@lYyTc}9|\?'qJ]kZ8گ%o[*Jv\w\ {*&jHvzُ$8؍FʟJgU_K?}*gfgu%`]`VeGY`6$$kA		Dp@۔ʙ|ybCN͌quUATfvZi@<RC%i 0[Y.'w|L9l"ט=&ɓlkxtNH:o ]:WLАdƒT=ef<啸,%AG*$J|p'Z0PR5&PdpKD#C)$ܢX!9R/&w
̕\i2E"y.͔dKw+HCʂbqIc q;,;SۙRIǏ2 T`r@%JD^7|4H2Yޝ̥Uu3̪ɱ
F((T/1	6	&aOM+"	>/Iep0S&55
JXWg̷<i`BD(|$ugkff2'͕fWҦ\hWB%q]Լk8n90dI\3mΔ)3p20r`i	&Zdd9׌$"ش|ev
VNCLJ
rud90sS'bOKc:#a"e	eX#/)Uj0Z']pO|DdD.tt{H ~"]Įzr<U HWJCǊU5vQqdׇ[ًnE7GQ'ג!#OiKs4|JnEmm-mor&"79fŐd/ڣM@ےҥa_Ϟq&<3[$sZNjkYn6
XҚ7kot+nխ	k*'eU "	B`wS<]Pu{sqE8xJ}9y.`]7G`[%v8d'̏K4C?2s"{<ۦl%; Uz$m㽆MrC;jOg\oHg)#q<A3Yg3MqyN^Y[d+fSi<C^sA'i y@"<>]Oh9;,;%CH&x"8Ujjb}іҥ@[[h5{S[|C^'XZM-Kk0-eaCd>.awGo3g1=O(FB!N¦	V93_G_!&Xt"ž]\n@5^
h S89Z	:gs|/	Vʣ9Xӝ^<#sCG:uZI7v1~|b$WqMUnQFK5)9oSƧ>)ʾV`-]tqhW3KnFDnph!}4hOYxqQ*
оƮٮ^qgt<mt ދ4N<"AL`VPUﵩvM"0
tCsh|6wԂ)>ҡhL̽JpT' $ӱ <er2SSLE;b@ioV-Ֆ|+.>BvDZcָRp/-:@C
?-8XzHo:;cEKĶ-ZESv63(7Fx5^jjld<ڦԱnifʡ;~Q	
ZG	P<th=_}K0ז`=Q[Tt9t.^լÜ<KbpCZЅ,`X)͡40v_,Y5
s{.9tKp<w0
b.apD4tC&<gBʗ Zʶno[{	aġQfK
/z
t)B|CTvXj=/v-E9lAW!8ϡKJAlnB|C/KJ\2UH/q=8k$ֲڢ=y&w=4Ltjl
7j'OBk
@?u<-+Ym
5c'}>9<}ŢplPP[#kKЌ.mīrdCg)}Qh=1⼴~{|p)9.1.t?>^pz,-ev1ÚCj*0%KjΤ,`S56aLW>z
#i-aH'f%lawD|46

Ҋ%V:f,{OVK
]>3ʏEaKjeyY$&og#Q֣,v蹅ۛ݊yUK[v%\E/5K==6V{[f`Wo[sfΝ?:_c4g_dX-1=Sb]0K@KY%	c'I
c0zpy"Ba>4#Q,B+X9r^tZ:ZLl1v8-g7NSQ:n_}Q;jmkO^ĸr^""&?_%jJv&¨ٸpU(T$qe֢PD<J93g$|[[LTBn
Gn	&V^Oq~4#x;Y6:Olxy&Y;yGA xKTغ1WGilEIrkIAqw;ojYVtӚF2l*\%C3ѥ-
n^i,`&0DyeLSB,A\.~eG14ņhiYz
dCg_Ov4TӈwmWqg˿$-
M܂E6Hd/čb_sT8-¾2Y(>l:np+H)h.avǄnXuLq|?ApKeK͗B/Y>ĒedKb1Wތ7)/8/N2+

 ȢW+_aBwL? ? a%{\ !L6^ #G`z5~v)&	Ebz
1n⟄n$FɌ^juz94O\=r@o*>iA^2vAܴl4UskzTskzU(ִTs8kڪ95SumoT{,oU{<ov!o;}4owQ"ړx;U}ov	ogvoT)=FvjO=ǩ,>Nx;ռ]ڳyTvjj/d3( H 
ДX, m֥v]& m&hK6`Z0Xm *` ;Nh\ #`@@n /vEОX ڕrjW^& +]+h\- 
Є( u 6@[fho-M bw@[70 @3y 4w	@3y ؃{H 
xD 
xL 
xB O%L" ^H  }$ }* }. 77h] ̽+ }>s
@Є 4a- }>>b>bJ_
$|%E
/z@CH' F@Z5b
dxҦ[ Ո#vtJ
dFrF2V#=rFz	dFz2ȍ/MfM"5rTd@hdDd@jd@id@nXܪM#]#GdFFx>#tOu)O@F4.FfīY4R%[#id@+THwlE[D+:J'"_)V:	N҉XtNDʒ:^#"gI-ЈHZR5"[tʖND⢓t"2*%x%Z#"yI=I#"{I
iD/4"z&DH"IuE$äbHbR]1Ad1giD14"Գ5"s4"2lE*becW
D,?T&"zX
°6R
a`9
M!V2N&EFC,(Yd
$*N!j֐}p*y~Np:gp&̓88"8Fz6yt+8>WB!\D_\lKpq,72#mp4_[*c'\m<	
pl4S:/\ocF6'fd<n6/-Ͱ'e|n3{p3~wzfvOizݞMs<z^]`K}p7N3w!o<=G11x'x.<Z6쳲ik<cóx:Zk-޺`m1/YA^ëvŞ
krx>
ް/7M}7~޶_; _)|-VG_cߝoߋ}s(,|?篇<Ao1Rz3%xR7e&Rꈝr2#+IJ6&]R&]S^#R>&!$ݙ@2rԒ
9r֓,&A
?[TtXMfV(V[6<-Xa6/\l=En5>LnTDRStr.r<D"[L4v>),^p/UdGv/2!ezιβL5`ۀ{lX f[FC`dYqUЎ)0cH? B!GC>IPE	1
R<ep12-V1dw_w<o5z	wa$z&9t'^LtJ MkyB,rE"[	nσ=L >=IY3RtCuIŝ1uiz; Lqyrk 5˛e$/$]Tm^d ȲMCwrSFC
;|&3H- 'pCYC9Y2jc9t^n#HV?(za@00 &rۧy ,2_	کZ牘u0{zfuI<Yi ^009tG0rX#hspRi/ۄRX)].VJJ\UWu Ѓ0O
7{bEdESדQBr !0(QȯWA"\D&F<`:I` >Ii|b" f":X%0P֕#C`C@wa0O\!h5$."6J
M" Ev-0ڃ#fʹwSJȗee#rө7˷5gdgFaa2xɭ?؁]1dƑa"(0<B
f.ȳ<p9=l[ȋCkЦcг5Mr|z⃓PȈ]ovaQEC3?Ioǃ5~X3ǔ9"_s~]'_A!z/zVm7vm;43vWsy^o'Ǆfلifswp^ڿg,"=| Vcn;aG'=<a	
G cO|
s簀
S
f R}|6t,8B_Sp<<lUܪUs:ѿ y<
@؋dq?7)`&}Rp>?$0A5,y 3owuPR|Nc>qe01ZַHyg]G(9Y)فEgC#BL08!!E'.8J\8veBcqG
~e ^P@1/0fC=t4ѡp2=
N9p*(rFXlc^:бp?h!@'hN$λ;;B}wZw$yOwŻO%}=λzOrV@뻭>8 ߯S
o8O|r~.gAē2Kx
uA/>jK'K>CcըC"/#.yHֺc#S#S$#sh#T.,;FY*U"PH$\$<$BPKOz+"t	bep=].K%ERiThڢB(W9WRHZ'2IE"0Dhv$'AẰ^1$TW\c=	h2+lNwM|~E,	"|1ipJ!G!G^fgSqe!@OG3\Y\Y\9r.Li8^'ҋa9rrr>WhP;
x௃;	9ok`KxE1ŠW^Qz\1hdd\qg4קYZgC+rq1h1u/xN^xgUb70#KAxz6{UIdR=3#}Ȅ	)¯$!%zKIYA1g.dw;9;999!s)XЇ1xa)}V'!Ja,@ϡ 7`= gx/IMWfb^Ś5;knS~YSL~_Ma}",H(*OoAɕΕ~$'ʈ&K>W!ۖ{<	0Av ҅=YLad'
0 }R}f:
2wnSʩI69rFI" s2۠WO^XsNrZ
UAMCHAO4x6`_$ŗ8s\KBb|! 3 7ʰ`၍4lNVt~tA|N<H5Ap
-A:EB[0A`ї-tkwx/H;<۱wChUJM<h*3?/`e<%N:xkv .B_;74B??dAP`iQ/deeeeO8Gkw!c<<
b\bmc9^}*_8qav
x]Ÿ""Ehɐk`q,Z8(5Jԛ1PFFF(e
כ	oqЀdob@ZNи6dBVFgC7c.3`,F-7NTztݹ7b`$Us]zH;uu
Flcn55HSaqL1BqTg||5R\a <E / x1K0 	@b<!M|;㱤+"QheyաgI-|¿$Ӻu
x7F0vp#7'nV<7nѿƯ۹[J۲h]l[l[l[B@CGnG/hab$̎GBوpHa\Q4cD=ڋq%6^E9 FaI;ޚ+$Iws$%ܘE_G6x0xw xʌԍ1*;LUv0Uauc7f6H^Ssa΅32L
=MM60a@
3s!b:37{Uf`fF7i)M;|Ǽ-Iމ̱0<ƙP`Nif7o7iI3Ʃ@DTqGԠqqqq?0N)G!s5IrO <Ol?TjUsڣ	͐fB_3
6hF`&\4,Q6)Q6)Q6)Q)8b`i6J<C\۩`i^ֿe+Wb˫1Xn`,7b&1Xތr1Xފ6weJL<= Z!xƃ'0<`x{$9354S&Sh8qE|8ݾE I_=c< ix(0ㅉ=)Xjc/u qv`0Yf}1{e?AjXQ.MK3Sz͆!3#<C2}{];.*%sJ\dd,\ɽ3FFBw#ч@9g埣gg?'bc2ǧc?PK
   xs[              de/cardcontact/scdp/engine/ PK
   xs[95    5   de/cardcontact/scdp/engine/GPTracerSLFAdapter$1.classSn@=
-`ڤКR
 Dh$U}ڬW+	3 !P?BZ Qb;{vf쌿z16H !#Cɖ-|/"2Ca\%GeȌ;!j|hiY4u\`(VqDa6;'G
~lP 4P8ԋ:&Q`HoW_0_˘bv<Nqr]Uq^l89ҵA*Y8UoZq-&*"nXUV[17u܊Z[4qVo EĐ}&\s籘}ےaҢ;ld=QPo2Oq!k`M)UO~x|[I_$MF'-5l0,37E4Ь0J툹%˄N[K{^p`zf:Am	fc~0+!Kd dmUC6bLk?D)܍*Z~̬alv	J,MO!PK
   xs[ 
  O
  2   de/cardcontact/scdp/engine/PrintStreamTracer.classV[oG=c@Jb;Ʀ4mL !hzl5u*%  QџQUfq1439.ߗ?$BXf (CE;+Kk,/33Z1u$`E^t~iEX(,ǟ=7=n
!Im<`8Z١"+Yo-/G/:D!ӍbYF=UqW*bSLuC#%)'m$J-)8PpVJt׫[Ufp N2ZM}K3\_ڿ>bigk㷧b0.*4
ez@C:ΡJ^P>ˁST8
|G6:1`4k.{_6).2|wۅtm
K/hpIǨ˸pKJ)
BZK*u
LCJHFC84DӔLvq]6o?32Jtl`n]P?T%ˢeHU\5YrU]Zo
JL'4Tv,oW(;v	67=([ڭoRp^lVӧh
3$T&-Oxu}:_ud+	ұ&N0ZΦ.EΝ$-G?ASEFN{
^ (s۞|QRc#1t3`86o6_l;:huz_:tݔ
mt
EF,=A5'(Gp7iHC4^sg8rCT%ݩА=>a\WjO!`IfF]	xpӹ_qh'/}XH߀K
umAM6jj?RGJI$M5PEsyұ#!,ӑ]Ah@59FesCG>pgRg}(#ڀvn/ Fh#r9KlarA	CRJbUB|<A^%I( Uy(YYٷ8iWS!L ȝ'{J!pP'"쉜laI^:trvU9bQ,N/Tz%(1Kd7\{P|Iz\oLaʲN҇iVON@ PK
   xs[  
  &   de/cardcontact/scdp/engine/Shell.classVIsGږ46c6; / Xf3%Ld<1F̌qd!ˁrC.\!E+T(1U#I-R0==o_)JC4
7c:0gfIV2=lrQjC:69n6w\HgvO拎[YgZ9`{jmuбXKL`LB6VRNhSl'yڵ~w-#@RUs<q
(VxQF'Q*^[zZ
P:54b~^ױk3rF|)v	$}ݧ^Ym4ڠD)&-
MUDjB&b]	ihױ+ad'֯a*$[LvdH؊7H!+D`w۱CN[`,c~n4y+ۡJ/
4%mtiH؃w,@Am[cLj|ܦ>eyktrѣ᠎C8 AR@IWΊVS
lYNaL)g%XJkpdeA a*.$2	5)vr+دl#8$N	,r!0ͭ*a6M=˵\zlsXӸȕ77[3Oy@\:+D
e<vq2?YqOM$,amjI./W̳q1OELq+;8R@*xNUB
7;; YF/6pE`̟]8i]?4Vd$oQEH~!F2ovglǒ3m>T4I&CR+Yi:z(m~<3w.:U`k;HQygJ~4}Z5'(ԜqXDb;y>r"|PWQ'<
*jN5vC)7DxuEp
WӜ,яߵ8|_fB>P|GR
˿q	9
yTQhipX#F@m}Sz Tߜk	~8m	aPu;]lA媩l.pʥe	c
C/ǔ^y);ʲ0NJZX*=8[\ٟHP&JInw>aq<ߘ輇=Cg&eۺ"IQ*U	}qb/Efsx,
Jeb'c8qb?GA"7Y|Z;Dz-:`
(jԬD$7U\jAgƵ/uOLVek$t@{G<$DcvZοzqEhZ]Flki4icAKMXq|(n ^JKH{rܢWj1ԢbwZ[R}:Câ	@<f95}&|O9$Qhp_(_PK
   xs[GG    1   de/cardcontact/scdp/engine/CommandProcessor.classXWN,byڐFG
<A6R&fݝlB[*P[+UVuYVUU?nnX"O{^sܳ|߷2<
AMtT	Z4ԓ1#wi&j2:hnۦ%j4m*FCP$v%=V˨ELȏEXmPJav{xJJLwæ&F<	,##PSIw
ӝ۱TF;DW)=)4iA[&'T$Y\F@bcă$	An;SaS㚞r3G=)ج&eI'BTM\BsiHn^`.,Jºb%GFRZEJY	+E؂q5vU7.32?VA#$ȩ\]тu2Zlm5Aԛ0u-=<9lvf}XډI6Hp[խjBay3ȸGAB_;advf>7D&$t=Iƽ\#l}2ڔN\3sr:]؎J?:Kn]PnbZ2`$?IhZO2'8
5
rن2ljZ~j0>
%S"~`(DCRaXB[6^bGtL[651 k~Bū$*nw㠈A|Aq!'FJl+XP~BUۭe(A/˲ƍ"Q}I1#6n_
xPB-=;T<mĉY3h $}2;4f$9jR`{W^:\t5O(q	wNkc}~^*APpR\<h:BrOn7&o)SX*Ja8i_*dQ{pFESUx7㜂n ʹ#\PU<"I+iYy	Q@Xڽ/spد+x	ߠCI}rTRMZDcŐ$nRx͚?.8ڷWsqu99<v |Gw8*tR}F8wNiq]$Wӌp5aO'FukXxͻ'ny|D=Θ'[(>UU7kx[Vn)AkHze,eݨ5,>PrC)
@Q&WEeN3Pk<TEblOٻ:φ]UXdnVXRvT
vb!w'*Yl		._rڹPΦh-h)[2ޗ.	o:X+XA
rd[oH8rx_%''%qsG)%7!g0Œi[Өi,ixws
h"XYl?}hXn/iTC|"L뻗 (w:b\&]
7`vp݂vewy QIo/F$,n^G3he]/ǽXps-];i!re᷋nqrQRb\&?I#!,ȿa7x~ʴ~
wsֺKds!v9y,tg<,|x%WP2 2|22dw˸+Ƴ[c*z\
Mcx3ym4Y?{_`6 5ix[g@k Uwx^#Oj[{,1⧮*PA/,җfpz؏՗:|efT@gh.v>M||+ g|	iA<C	ŨC4%F	(j&i;Y@2q?C݇ieGQOR%eg}ۗ3Ǔx)}O1u6o>ĳ:'6~w.:}
o>z&wԐex5o%9ŝm_hWKvB'h#oW%K/NO^)B-kPK
   xs[0?    /   de/cardcontact/scdp/engine/ScriptExecutor.classV[sE=LL. ;f	Yb  M$&$Nfd23&PTii)e$TO>п`YMH$V;}O?hJATj8c$=rl)eb:@Ȥiӱ}%=h2mV7&ͼ︄CcJϳAqLUT`mkxA V6Ip3i=Yy1T!`jt,bݕYDYRxQb&X$I%xPݾKT}R*XF&غSԺ:^RG̬4/uF,ۗП*H	
h2'+hґTvaǲ5"X2o̔9r6c:^E3W;`r9oeFRYleLORק^Ұ]`ӒbK{}!=6:^Nmڲ؍=7F2}Bw
{NBeW!}bh~mxC`٠iR<_Jfz<iojH@ҥdڲ΀v
ɤN!EL#KY.6S\WGl~TzӧlǥWñlgZj	oPIh5L_;Yc3
?2gN+3(3EgN*	%;1Yv^õT8,Oa,Qtc)hN1K
L
;"Ro(g@y+.b8.XY9:=wtf2Luyӹg}'PSl穀\wk.
gܸW.o}srɻoNliRXËD-|ք^	Wmsiw=D.D.PuEub		2|.-xӄф2Te_퐜x8ACAq%~@uV=B3{,.,aG "^2iOAEid"Sd쩍,IM+FXn7u5zqwc#ES!qz:jc	
zX5ND)B+5r}n[[qczX	VNCӐipjAEZt~muKK6\@NoTA]5=Җÿ}\l

?3*y`Ecm4imtǋ-ZV2}C	[.^>,@\
P^".Q̘+*?13> 7ޅO!q_m7%WC5}y_`{
|O] sl&u5P7?87k^2rɓmI,hWE&<{܅
xTCV
=.hجq}cxyϿfJY	}\
PK
   xs[x  {  3   de/cardcontact/scdp/engine/LogbackInitializer.classU]SF=kI6 -86+_m>L>Z
9&@Ie׎YrWrtLtԇNһI 3ޕv=ܳw޼ baΟs^,oՅ2-:fg:Р8/kfVM˯Մ\vNDX<6Z4d-n?3mcw|/ۡQ|˺/gW#WZKrבD\
cN0RJ{g
|$|9cDߏ%d"j<CW6Y/oۢ:c
0"
bRPHz*zK<겔11	1ːn.a\VlʚJӬյ:
#9
rXe/	sqŚHo
7H=d*ftᒁJcZ팊Twߕx5\>Z
U
Mn{4uQ*EM6hk|K7x.\i]EyЊ); aȎtw-rnRK~ ij[-!7K+)uX&z,O>Jasg	a.T90hMM` +oFi8W2ǥڣ#Qu+gxFD%^##QhAmR>4]/z;ͤ<8lbơhqE	u:=h1bBK*w']|=L	jc䥢	
EPQ'^Kde˘ŕ$qJQ"i<Df
X#^1ޑiLúF=x: Eyv.53:5/tW{R/N$bz
IL	)t=	ⲉY'Z6b4qKO?PK
   xs[=   P  4   de/cardcontact/scdp/engine/FileResourceContext.classON0}צ	
Xj6KNH;ΩJbBbQҳݳOo
tDkUJ=k6Zg{qLpDS9W)^uGnmmx.s~/yU0a~ɹ~y)iV].um['F657)pgƋΑHHS'C.q'8PK
   xs[Ers&  0  3   de/cardcontact/scdp/engine/GPTracerSLFAdapter.classVoSe=}TP*e[AٰPcww]G魷wW_bb&Fc0D
0n&hbb?`wC<+ss~oo.nxcj8f#f	x62)k3^)("ИÚj&4#cilX$S=}OjޒPn
Z1'T&ubtT7F. "jVRE5b:,2d8]7ɤnv/II/	3%	KT H'M,ml't'1pө2/+Xbs"`a&R5-s-O{Z3PJ=@e*MHveԑ!aLE*͌>4*hwT33gYA.4L{ˋw"?fSgIxm,׏kzJֳ^</Nk"3l&,`SlS%,UAq(<ڮ5Iq b
v#^+e^/sfJ-M̲X<` Ӻ,
Dc# q>[1BD#^TpIJyܳkGX&$y|}B)p)eCg	:V
MMU3s{erTG*v"VIRP8u	SNDF2ebؕ[3¢#G辱CSA:1Om+sYi9{ҭɗj(QNqOsk(s.DTQnFj.ӴdnK_ljtz9NA),]ixCiTDg=!f2-E*邬E+rOq@C/5dm&ɸY5{Ģ<&UBZmx滆|9ENSJmF+.Fϴ+=(9i&C78IyVo>$w'tH y4<Y0$
^^ye9/tM1'4+Q;Km%cΩ!j}u7z9q}f.2 x?dg012v2r@+xBm<}fyx99}<uV5`?\0"/J>+(oP|9()06.Ы
K'ŉGģğ!
$Rb5bLR1.P"?K9%}~+17ğ?)
SӢggEΉ
8/-o}xGhxWi'_dM&Yˣ:#I$W*_m1E?:AlI%Ts~[\g"qJI|nJdw\ʊRZ<%k5C,g.-z9Wס}sLJu'
kd^"9FsU괬3Jbz4OU	]c8PK
   xs[|]uer    2   de/cardcontact/scdp/engine/SCDPErrorReporter.classUmsF~α-G\^(H,hiR$J2~ȇDyNKC 3a%%`dٽ}_p`@ByuMp5Cxza`<
bn@sW;h;"hzpk*%CіJEPZq7N\;bj5DeU%$AE.xu٬M3dWn>\`(BzZ:b(zk$:d:YߺEY̗zup
|kN21\|sXs]-nR~G-KuDD,Uiɿ<Nkkgv}⊶dP50Pڳ1jC\6Pb߉*ܵzKTg5٠uօNkU%ꓦX.uWkQ/NUe0* Hj0͘'D3ފ|c`xq(s"IyGzDd49nIC*BFhq~6p#jts[~y]~xzl{"	]4|R
ˍNOvw:-ѧz!j=-h(
lFj>CA+|l-w&/L/4iѓF0M,9=E9gk_72{N |4kT RiY$O0\~S'^0
#Yl11yv%FIΥø5')KC0~$]6..GWR/ֺ^XebSR|ziZ)Z)Z)+Ϳ.~G]◘xqu))]\q"<PsiU$Q$=| PK
   xs[
    -   de/cardcontact/scdp/engine/ScriptRunner.classXy`gu}]z55>dǱ8u"b!N6R",BXCqǻci23+Y&
iZJ,$MiIz'E^r~}s ^vPj.;aLO<vL{
Z!rx
X!Ԍ뙓d0Xvbرr^sLcg
{536LyFKL>aƭH+r9ӑte8"!
بahTX_e+-/l4,RxOr
t\%!>ɡ	Ǟ6eMu@>y1Ҝ\d"ovjR.1v;o䄉	t46i8^
c_
-%.xV6qSB8pfl#C{Oͼgٹ(^[6e_S>`L)I-=Y62q*qk"'FhC;
Zo6ԑh

x%Wh[zTt&M&sr=gFn*Ds%h8n)y]Lѧe#%ҽاZ`pdf
HVZnw! "s񚫐lU
{ng$V .d8H%dӦ~n
ARAⷎ9vPyx`nO
.RvBF&#\\n"]m;4c
e;=l.PNa{m{[>fdwv&KD])GIZfΫ&"pbEȢWA"<P[E	
Y|B.H\V!~0הr43xk챝1ҧg҆e	IuʘN%'cԽWF_	L#l6"Ĩd˄~
z鳲f-FFo=A,
WW.a
J}
rwNI7o-ߢ{Z41];m5}[Eʝ)=KGrm<𰎷Ǐ2gEbYn]X^Tر[BRzG{>D2Ҟsp~9F"$~%BXT_hvmgqR}7g'`|(-/V~O%<ͷNe4TO+Uxd"h=3ej#/(.?pDڤ}	!q}!	+gU_'eAuq&&Y7h^Ǳh~Z\$5OKu'
^ƞfR9*T\uJYf:A1& Y`.V.(+]Z0,5Sf6+Mfa3oV:
e,ٯ4SJ|]' _,xB׋:~/Ʋʑ=hg
R/ϊE8	ȿ?:p2Ii"N#$v6/{"
kK/ZV*,~EWsaoH4i4#sʨM2Rԇ:%S~Gwpm`7[&+PRxRA2S;kH*L3C+.1{p,'ބŢeoiʽNQqIŷ%%jJe&!7yR+Ԙ.ղd?Z]BqP4Ms1VI޹-f9p*Dk/HV_ZׯY
Bq}A
wXTR/*S}F?"HC^,SLCIb}c1qW渟
?T|

cS1bfMoθjՕ1K]5\+Z)Y>\g"a v#ɚ>YWI1W˳w]g[.4ٔ=Q<C*Ub/hjg}ShʤH@£5!~YW#mo5(K䨟,<T맠Z63>?G'
\9+[%ŎʿlZ?msxEt氥"'eοa0J&
wK4PמG,h_íZ1݃;"bX(ޓoLu;ßM!u~~xc]wrp4)
^Y
i7:vOJm_wa/zC0Q~8,~Fo?q$}g3KkLbrSKio@7܌Na)nJy#9=y3ý wQ[p?	R&mh?Ԭk!}M~sZ^f
&
ݫjT{{aN{OZOW4\u{P]6x?K<cT"N/`^]X<>7/`Lsjh?qtxuPDsxT:? <6ְ9<._ïbKw13ݑ'#3M^ۇhieuf| WCIt#؍'у^9=GIJ4e<Kigs<%>gs(9߇#6TTn"b|;֨zNy}Y8cZ8fGTZ"?F)
{$.:&s~Yz/F+OP=L3y̏9T`%D 1(6c+_S"h˗EËy'z/e/+QWAaBC؈;"Ʀ1!7^n<^dn<^dt_+#t?i{_|gk6>i]Cq#m?q#Q*х3J{yhS~661nQv1}@i$8O+G8:ea;N#܀"&-uk0Tܷ^Bڠ6ѴT%^NG::A#^7E }7oԿl7vPs]PWdCdCIl]X;zYy fupl=r]r^VtU=	kyT8#M1ZfR7zGjJУ,5q:Ѥ!¨:Df
@6աh?PK
   xs[nC7  -  6   de/cardcontact/scdp/engine/FileResourceContextFS.classPJAkuK̓dŋK$Ń'C"x(wKhk|{p-9|Q"t#HF2&6PX*뉺PdJ㹺7҉9%䛭<	˙7ҩ&IZ܉@'V|L53!K"Elz>R&DP:`p.ʜ6[y!>l;|ߟe.}k\ˌ~;/pµ<]܃}T5jPlul,<b]ɒk¦U5 PK
   xs[Muϗ      9   de/cardcontact/scdp/engine/ScriptCompletionListener.classu1
@DGMFK{mR
X׿!,<N{O ;L2$:.je(qu
mjֻܶQC¼wjJuT0k1*g´r<M	P!?PK
   xs[yc  /	  ,   de/cardcontact/scdp/engine/VersionInfo.classUWG
	$YmkEI &XV,bmuaaw(I7rG$J(af߽w?yx*Ð4w̜c&B۵YH*@'2\eUsC
sUm[][~`{{*LNe}q"8TKctvFYc8_7xs-3|bt
B
u=]:[VH߀Au3~0|!l
;;ZT|}cAim5pt\U=OChp^yQ1*s5dcȩ6`nMi]LuD`RM܊aJט>r
yH&o
j<5Ve]	(VMgQ`8=Ȏg'??955((⼾XPQc	`dO0BT.RPҗ
)ii2bEp/ıPJYi-?6vZ~,?I
&ь @-dH_7=-ml)EJ%WZܮq\sgΪۂn1Me*}\{RTGsʼXλIkP@;0
>	JAFfu}߷l5y!(pë}=XS`I9thvw-zAONy6.nPC+{
RQ0ǰC>=j,K86Kue9hwͰ|j(D&7S}?SR&a1{fjW'|Uvc]/pX=rkᶢPɃW>*1@P[M0.4U3N	1|/o-+sD#;H6z6Z'AR]&zMtaK#hgwThL
j<צ|
W}~oۡ	$y5ο:E6?G,7d `DK<[dGdfqF/0#ތܒو4{^Q	\&*OnL`f }B&[4ʦ0CG41+3BR[
Sn)# ɸԅd$2t2	Z-Y0\4p_PK
   xs[0(0  
  6   de/cardcontact/scdp/engine/FileResourceLocatorFS.classUse}I&@(	mrr/VC-nf7m|pMg``Z'ia>|9w~w8Bk؀ޜ1
/gN`A7sَ	wie]\Oav`X =Ո(5t4Axi}F&~`^3526	ed[7I&Iid=rK`;s\հY@t^ϡMCMY\4̤B!4g[lՖcM1`CTZKVn/Erj-~+N^]r!f'g|wXҜIjRыFVg6wթC~zxϜ(:'(t!ҕ7
c-ujWGdG״\1$):Fq<A$uIjP/IͫlpZ`ki)Ⳍ|0$qNFKRr@G!vsܸ1ZƊ˻`Hפ)ów	m@v5eJ>3O2y2i
M 4pf+}.K%YUu,<b&k#Q%:HL*i:(<<ETO)JZeqskiYB[d%*l[`-:T0Km^8!Doy8gzjy׌9J߇wqykK{~8F!*;K<ddP3cH|*C\N+άɝ|ͦDRUT[驐N018$38
R2vkcxՌпtijxϽ2$}UHLt*^aBǤ!9\&>!Rhc=sw@d/G^B5Qk^fwK}[X([5֋eVc=JGq` jM7
5]H"w*MQ\!W)9y, xa	_:Im|+`
pA*.b7.0sVGTc[=FRCctGroEzۯ]'zQRjof9ƅ%|j2kf'Vb_#Bf&Q))HFRzEU|*߰8ugg,sV741&:S<Jv}9EhqHB[8f˄6A:
vYPK
   xs[J7  ,  4   de/cardcontact/scdp/engine/FileResourceLocator.classRMO1},	Z |JCEB,BBE(nήI6jשYpBG!B+|7c6+(X7!#qRPUZ=BVo1LhDF[X?
ؗU$OdjI [&$0⊣~#3щ-6Z!D2ZZoS(icWRu`>rh5L,' :ϵ:[q@Ʈ_Z<a<2uZgJ"u!Y6k^Paj:Vm4\0?=n*oean
c;Ϟ~MQc쿰'|xNg_t_o͙n7,_@S(xi02˘~oXRV	PK
   xs[{ơ  7  '   de/cardcontact/scdp/engine/Engine.class[	`TLdxaְ="CI@`K8	3_ۺ*Z[VۺjE[[Zw{$@w]wr3<ÏXja τǂ]h8YvKݖER+y%-8X9vU[8md[{Oz}LMRn>=ǺXjm	eRp
&JV^Aw#&N0SΪH4R'TU;K4WO} 	I;@$zÝvHF18TҢzͰ0:ͩp";%[Y_[ӹfB
*0s[	-<9[XʋVGÀCS]P.8ykƇx[$[^ʷa0jm*@%L,phXnwX&76m5+zj4,:T]Q̥t#]e&ΰPA~oS[|Y\rA	#Jq5>, =Oϲp6j9sIEڜނxӜJDb5cuIul4nF[SՂIC*
h!%ȲDj8<CR+7Zy܃u6ן~F](JZi溋6pOІPmCh3.lZI,\Im&-4l
+W?"b%fD5d.٬GICKll0<XkK[9
)e^7HnyVK- K!Z\X/Ż-CtY3׆-㽂c5CfP~WJzCҢ?h|%9#UVQ\m\K6;ޔL!H8:>r "p=L57{tps8]N#xonSqvH:ߌ[p
w{ԋ9AL{us$'nV{c;̠npĦոHj+L	T&p.7ܭvGy!-
{,܋35
M9G$d&8p?yA>2;	Jsb=L}vx=(x	>hP̏g4Ynga?0*I\f	̥Q9V	
[x}N8z69,-O7'I::8mM
g
_osuD<'R*x_R8*l1-|ϑ<k6AӰeu6Gf2tmwwc;ImR+^}73IHq{כ[0*G+F'[B,i-UE.ۑT{eTv/3t~*Lu!1;Uq}H~b*@GY%2s&]Ibyiǭh_7GoTM12JԻ-OũOL2g:
?*&X1
5kOI;O0xx9T̾>άQO4XxKvΨ#)nT<^%<^`uK, X]`wv&:UCT_|#+w2e9Է2ޒ	$f=:dXck׫ѓ,	Pr%St9C
+0D7rʓd`ޠS*vKT̴dvq7>̱dcYأ[ǥ҉,9dtv"_R9iI)LG\:Ч?HҤbpJ0+=n:RNQSG y/SNdJ'琔G=EcT&39VS,9۔ZKΑ[#xZS:CZ_e}x/ʔՖQNx}sv_3?Ws-y4v=a>i"u*wtGz,9O;6Mէ <Ae*Xkں`jfܤnoJUUoiɅ.zfclF.$,'ބ/nJ޶Y.Dw2NeQW?ZMDP6j;q*'vy~IܔK'ZHFƷ(}JGKazW 5\	x%gѓ7ʞ^m7hlwX>bbrO936:vЍN.lJ{NttX)<FJh#F T5*.v>ԣ挺.»vq9:LygAџISn%2iQ3mkt7SfrN"a2C9mWg$챁ةwfMrAN0%3Xf&Sr032(H=#A2sIVne(MUmOZhGLJ'\d;g!9a'{͜v~$gb_Pڵ8޳Z{1{5u];
kz{IF;K/l&_jj43J	asic:yTEfrUp
3rn7&"~R-2\a]5|Z2+'R<,=U>
Y͙C-C&nX蹓,I'7LJdJ%]0x䪯8dzZeB]'wzsbqIj

87_
7gpЙ+좢a,ɗg
SN{QN2PjQ:nEQ[Kj
ȓF|)!0dbU<++G6:7LIu	oZ ɇ+<|j)~9xL8/k)o@aFrRmJ؛I>3p=j'70T9XLQF#)'o28)X<Uԡ%ŤS*>C3O<S*O8^gVE3|.0''k
ЩMduiE	G2ܕ9JI 3T̫G}H_oM:sy5	:Z^@><^KBJ=,GPxv$|'c+ɛ
pzciyLއ=#X:qAh\֤ڼYMTS~Vzdf5mPM=u[ͺ-{;u[A!km;?7c*?XH"nT=P+Є+ъэk^\ģ_n?[
pX\ʙeS ]n{h401Vh49 _ASީgrgUw
;]uaW̘y/fX\)>tކgߕ+=ZHA)Ә0^4:>f`kfSkjݠﮔ(ռ79uv6Ws\Q|%ssZ˃HV{+ʃ^/6F_y'qn'd+IҨRSRn<jp
Z E(r P"]([|aF.۟Fj{Lit8J[:^$_r#ǎ)7ɇnfa|D[#Mlui>µW;;[8))-+UMWziW䝪e5w!]]fMZi
5Xj"h{}ɂ7w}k
<4ݜ
.KhOPo_#gP>F#4eAFPEȽi>N?|ҝJ=a@|(4FMC\tV+&C՞YL:=qpw=^c^ΗjS==ܔ?ZOCվ/>?yAN~~L.j`As#؀.
ԅ:4XEBf"L9ܶQ,P&'3ZʱZ8VN[Ttx,ei}r?cUO{56#;AyP>%&ʰYJl
W
9&s3տclPdCx{i@y׺JL=Ga96 eyO{?&eo>WZ8",WR YM"	<̗,ⵆrp
=JV6
[<B黃CЗYX`MTvFH(
!ySz)e4?]v̠nexn#2X	
z&(Wc5}}
|fC4A"*<H|?fUr
\F/vSܮHoIԩd+Q=9)C
o/Ol|:J\;z/Z:"mn}mAFeLWPWz(m4׾G`BvRhNE1Į)MzYL^{x^ty*$NRZSEY(F c͉t̥zudR^J/@jpL,U;ׂR''`/|}1/Sql[,kiGl}GR+TAr?^T\)^Ă`A0_WվyX@_=c<}]u@/WT\sx&L%c'JadDs>6PW3vy+Ti7Ӌ)4"V>KhNQQmiCM앧i6ywЩx:ܙMӤnkGcH$_B
R:2xg٥:kgL7eʇT^qsj6n@nr,LO^$>	MHk| J 9˩D@5CYyzx6ȣB|,f%;&ʿH0O^'K+ohߡʃ|fh
oH^3|YNAzw!olwNNx1Zdx@&B
G$ZvP7Ɍ%tkT0Nms&:K ߕ)vmm4MJ|B֢2^c&3

ȋ,wB'#X]R3mpQ_6gPןO2:&t	$?tYS<2g.='n5['ҧ6Q(K5UEqSRyfT<)N'3iCZ'RDWh[1SUg.GqjC*1>,
t܃|4빯cqXv6a`iL16;cъEff\%ƅ6.r#sv6l5:6c+v\ntzlpO's1Y~*?#Lן/$
a'߾Mt/t3p!/W=fj	H̓M,1uxϛ7r'ͽiopjh:pP4vԻr!FA;t&>9_]hTbVfeq%Ѿ
5ͬ膉zQC$vA4!YZϑ`'c`J[3иAN2c+#e,0&'IGXr&փX9s"A6փ=$[8)XBEaEW詝%Bz|:?>	43EE7,PK
   xs[9  C  1   de/cardcontact/scdp/engine/Engine$MyFactory.classSRPN4Q[/EE6;Vqܜ&GI'I|Ψrs\۟?t	$eHRcXq}|3\k-ŉ︧s-7ZOP1np4&=Gs(Lc,r>l?	Tx?66e\cX:ZPn&zȽڽ袆[MXg,<j(CkʟOX1H-$.l{<%hg|M?<+xI	ㄡ<+._6!X!K[|;Pwk,#A|fZ$m5'(Vzej5;Izigf	X'	ߠ~[
/ a -%,(=s9KyRY)cQ`,(d xE&zPېQ*d+X%3klB6hX9FsmԿB;ِO20CBR5Kjca%K|_PK
   xs[Ud    /   de/cardcontact/scdp/engine/ExecuteRequest.classVsUNnۆ-WPZ$I[PhPBhZvMӦI`e'}vtf/3^xտFa$ڲM u2990R!5DtD8o6Y.fm/ވ@8nG5u.ۆe:yRL3\+dBlc˶UKRNԵ*Klܜ]*
K-ulFw-DيS0+wiH;#&ŴY@jt4^-[^RVl[um7Wt_wseLVuN\-ײ^ұ{B*	n SY\*l(9{ut<ǴlG5g/N)HZ޲fK[:ṽ
ǑF>8@®&OT3|Iʎ:ڵ=xũ*pfMUu,-=jt\-
h5I=udZ$!5Kƕ/
%ۭ8FpR)8-UI3059ri pcgYTEP8sk0|ly3<kzCۙ^؜0ӦSߵ͈lM{M1̚I3_ΘւF?	lÛ2d*nd%fz9I6}׵ZA~~kŠ,I	t-8UV@˞PيL耓 )_]{Z']cx0a.*(Su+Z9 W|ġv!zR3DjG|/5af>,8)'_O܏r>"-@C6ɡS	9CWWIؗNDxr_tp<va=<.`/)Ox8'%׀o&0	*JB

E(0oF̳$t*0t"A '[@:œQB:ͯ!jLMj4`eTBj%cV+ZIQR^BpԒ>&-Ƹ=*un:c*)Yeo {
Q1Ub|351Ӹi5@+f
d~;V3_	d;W3_dwwf|,q-RA땋0$GxO}k}d/78PDlC&D47KDRD;d;$<'X$ưxZuݧRc.,2+%f-e=QŻ;?2>(\<^x5ZPIVEo"e+Yw|Vҧm1EnGOlӐ~SCH ߱y PK
   xs[Ie	    5   de/cardcontact/scdp/engine/BaseCommandProcessor.classW{x=7l22(/BIx-M"v؝$K63,Z}XUbԢ-,)XmV҇mm}O?,N6a޹s;Ω};SSQ"1۵Z(mvKעEǌL`Xټp#
z(Yшi8Z	ّh"m1Ch^kvvjFteFt6-Ŵv
׹{+f8Mnw`]seXAc_a#^_b&
Z=. ~g0ET|%,3&Phc:߁ WT1[wN]>*`@iu)bΪz$阖<(x\`֠ *@AHŇq4juq-$M]BwB
eVټV+X$075Vңn)X,P' .ɰm JN7),Wq3H,63jmSts<ݼ SbU*V˴CK*!Ե*²T
[IݏO@^AeSG3lB_;'d5hBNebD4gSigv4ñ!UUl̗m9kzy ^UtlG2؊|Rŧ$И٥Hjq;f^jC#wa'7R`ئ1^zi?3oۮG@
:U2.lhʹ 2;H|r8GE;FF܀^yQfJ[β=iF
`UreC7궙"z`hq]ҼR^v3*>Z49#`Pr]'	af,F_Pqn96dsa)Z
y5J|Qŗ$}WH37K3"q֣ܦ7亯nK)k1z+͍nIy:ɳNɚOA[`PaOiX2J*Lu*p{q1{jN>ȧi~|[xЍ{7*."CVD:Z"\ٺ^K:&Wݴ}xu'^JcKCCa0>UwEKYZԼ}-PeBG˳!ٹMe4ČpG91'(^\^s]t\.3x.YeYΧc9_~w եd=P08*.dw%`z)0"e鍤CF3`1rWR($y뵄~!=4/l
7+,zV2$le(-&eoF&@{37|\ jLӡnizi7"97GJ;ݓ=j5IaZ{eMLq.3͎d"A>=	=-QM1G<w[V;T5,冀n[g%/d:T/=3)ԢG!'I~rs2&<?~1]ab߿?~srIyc:\{G a(1R>Ɣ;I1<8-\#|΢#g	?
e4~!&aa9Jj?QWa2"𷨼[!޵41"LHd)DI𴇵!8
R `#@Gd@Gkh#x[0͇U+J,} ,;c$VYNb`XA+ObT۹;+"Y\\hcX.L1G#h=J.OF7kƥVp]O׍@Ua%HZY;ܡA#**Sh:énNa~N~6hFShB)ר0>˺Q!ڏҊʠ5L`Wc%++	ʞƌ*_ك8IS{p~9[3L*_Rt<	Ӽ^jbF{X"Ij'ܒodDqqDX]D5w!%Ü^+ۭ8;0{|cAqȷ7(4ﳊ?#H/1G$<%㸘ψxVU|:דQԎ0<~2RG	lj&yq'K\(//ƜR

ga*
g=I3ong1C]04^RI؊륽Tk0U#MHNQ%72	L,WPWӯa1^I;Uk3ռhtOg'<
z+d&L2Mr<l=<Os[+(WPg\jnomyB PK
   xs[           !   de/cardcontact/scdp/cryptoscript/ PK
   xs[&n
  !  8   de/cardcontact/scdp/cryptoscript/ScriptInterpreter.classWklwƻ^aC%jIā8bYl,$NGy<\<MR"h+5jEUU?*(QRE3	ڹsG'sAR
p۬dA5I|5e̏`)MY
D.3DАO
D`瓹t#Mg`9O3ϵ#
%Z܂R! ;zK뼪@T
%VK2p!jVg#MGOOmO#BA3/Xc
e\.1
i<Tgm
ϼ`v&Kvf'Fөj;kT+p*pB.n
+
zw7jjq$zt}FȎyp!4b-[.+3\2F\L$Y;c!lq}_^BZ鮱Ĉ:٬	ݳ<Ʋ 6),aWس>Wۙj	ס"|ʷ޵!\w6
z[sXu"7<>fe
8CՔ;lХu0~ފ4GrxƖ7+VrٓJ[yzC?Uo7i,=!鱑?!"R25=.dB<?B)z[hFz(a|qZ#MWaC͗O'm9[U-JgcVnwbp3U]v21ڛȥ؝4
yuWwVhtI'FCU!DڞȊl?|.ImSWu#.}cA֕Fudo}~2
^`eT^_mI1Ng^ypvPŠΨfl)	jQe#R2R6X_%jic9bMi{\ښ֮_rG₋I,,--%d9loA՛}o"^&0a\
	Q3e(㳆b]834j5֢;`#HO
.4هf#Gy%XX]#lc[^]6XvBh˂"mhowzQN%q,~wsg=xUE2p0#="yhvz+1C_c<\cԪQc`-V8tl@9;zFމ
\9:)jwPcK;~V
*=U?8)$0^v\&oEELϜKHW`ۇ0bbne'"0~v{`qc	_y2ͮe+=.
x4f4Έ%JOqU\,^	[[mA^:V@O^wUZ$FCLEl*&}Dc[">L<"*\=:@X1SMiloE=KÞ_hi|K_=/Rm2,ŕԤK7g}HŲs:wFB~~c
k	agI&
풅@#ɫ6Wgű'XwW	EsSrdV.Wtc^t^u.w~t}H"̨esRacs+W	9W%9z珌x*_T9gId@GDAb}Stfj:U[m(RR?5lYaeαG^Q;Dmq+G,YEd?:&M񠠉1%JgQ>*'P1n=$QNFfaSjsDCShi4ֹp%f<@ux6xֺ~Bs1}U
C^B =:5K#!n>`$:&'=Dsā
PKP2T˱ZEѨbhVج.6{ԥEa*Y!u `;RSl~J, óqT~1z"ylFyi5yž]c60
)}3o^a3ltϱa3xi=%Iu+X:R(v*s"PύZ\S-_T֫VlTmOVtkW];OmQT7R7`J«Fz3ui5aѥ'#.'_ã.'$bx|S"<&{y!|RR3*Q0ڸbNHn
gn:Ջ"k1C^Չ696l(SXdn޳ء"vyl¤\6x싱Q8huVyO<I$|?2R&͎WE<~333/;xis{'{w7 :)3o.gsy
WBN9-Mܯ/(h_$Tr5򾩙wQaGQPP68rxX*	OxNMEuQww:}guGz(9̻1[~$FpO'(QvƯJ?aгPK
   xs[|w  '  5   de/cardcontact/scdp/cryptoscript/JsCryptoScript.classY
|TՕz3ɋ$	"/d!bH`B%$3| Ekm]ju[Zkw%PQZnwںZnek~f		$_7w9s{.g ,KۀǄ>DWUO/JxE=BVS+D#UҲ 2
Sê
X4
xU8Oy'O[@V8a%S	+#0c\U5D)S-jAv	ȥV
iW54_a
&&b7{\mu
MYxw"V(tTئ*UVbl"K2"dlA#1C3ed/-+	%Xⰻ(	%K:p*fa.10̥[Æz"0l	+K%@\w(UXE]eY(C
'phVSd՚DWn+JHBfJ6n#ueLٴml,k5P%Pt!XHϻBbJ!tMʧΒTo*,,RL3v'b$\9Gqit4[qZ&jPdk"s/g_<:u5	L ͱd-rZ밞⊦E;:;{J[Z\Ɨ;/7q9;7XѮ,l&M&ǃ%ӪTIIXae[\iW	<8ٞ1
Sw[]|7$Vf6FTKc_ga~\-0e$$%	+KttFɔ\n"z'bd<wDv$ODR|AG`ΫnJ;dٲt֬EKJ	RO/C'GDz)ֵmPD
ir%3|	2/-otAt3q->JgYBqii	LBBc&nJ&CJF$dfBEVO<իrt|	urt9	yj5e O]O'wpCήf.و㱸}ߞgՂ}oC"g/Ԓ1uVR#eIfEol~|Y`fDg.VjeEK-^zy	+L-+CH֑`ja<B&-mi6\f͆>'oउS4N3Wz0U1T,?=FF4F@VK(O88wR*Tl/k4
?,'ȷX@2nJ6IaH>hs:PwHRՕkLy6-APw>x_.@;׷)ý#İudHڔi[$D::v&=-TPi2G1}ZJ&mp9{ʆD:VyӟVηen
Ô%菉`!a%CvL`O$ڿ@Ƌtj%64pdڕ<. jDk82foGgX0#fHz*vj;,/)T,.ǲZVOkyۀ/L@9>Nb*7?-V
xgؤi"a 
n3i5x2It!D6G֒2uۓT-%O;y#'O'FF6 5ݡsǵl"]Qֱ`{Z7%t*0ya#-9NyKd=3YWײlك]JW$#јSJ/Nw_z}r{=	eZAe<o\SOCEY-t"lH.d7a*^9[sA!տSb5I9
bRkd('`<~`_?:^I)Ւ+N 		䕟Fp[ycs:f*7fnd	sФTbr$
jA2nt`SsO?UUqqJ?.̟^Bi{3/r*ssNaUs
˫=Oc~s++Rtii/эilİ (<Klx[5q5	?!69)^4\V#+_7T9nSuG3Վ7Y  nȟ^vKS衰~Q]z?	zQ_'
<{
5ƈ+jB#諐yA/>
E{!G?I|&o'1E3w`1f5ky%k=ӽX7y,z?c^[sϭ*.5/M3u_KQQw3C(Qd/DYL4N
u_:as(W4ӧcIRDt<BE}F_i9 ~_;8W%X>Jčo!"7ϝK^#T-$(d~l>g()zc,*
,7U.wƻ\]9x+7,i^Y?Y4Ta3v
?uG+I{9,i*CE<<pG-aQ~}T2Geiы/1}_&WȵWQKҦr[R+?xOٴ%jUi;Cgw8fȚ+7˧	w?CRoϔ{Vw
`@MRUVYRoq
tzǐ_㫠
}^QRF㥋Udt۳(x9!˨zrXI+\McG	vg5@>abIaE8v'42zAybwaH)
w;E50^"k04JNj>GY |ڰ
Y
k#0vlSEg0dLjE _E(Qeb>QbE.E&
	AY[ެ-o֖7k83U@
a@hB}KS&bCOK衃)-.UWc#D4?Bzq&?4h?4h?4h?4h.o;.H؋4a95^;? ֣QgE+l%?;ȟ?;1OR,'+Dk8<"viۥyԬy\5^G.pTz۪\9Oys\yϏs3ёcڣCǐQ>ۘ۵Wzk	)Eb?zEk'qn76q.n!qOvnz]>:g1=0#esq7M|➌9Y{d:~]1sQ |D_&?@xw'k8!P!,싈U"]?d1/58_z?i/_?L?_Z3S7AOBCNً;lߝI_/F]=ww!Y]U]foifob<{uۘ!*we=ŋh/MKBL7x~S<"5
uBs
i<>k>?}~\W#bMMD]d|#L0Gm~5
mIwHw?m
4`H.\]AFPhF0y| 'ID$@)AE3;uughpS~v=%xը#ah
l#5ңF3U.GTYl:oL{KZ*TrTfkZracvQcL4i1ARBz}xjI|·(\۬K|dSR]QAKԵ\kZͮzlqNWB{_&\RAڵg۞iמiמiמiמiw<.QFNuط}Y8pR<vvnFƮ)^<c$OU
N5[^Z0]W} ]/k_PK
   xs[l    .   de/cardcontact/scdp/cryptoscript/OpCodes.classMYO@YP@DBMT1QJԥ1ҒRMj>4ޏlawݙ @BjքՄ𵦨54=5|)
fzGK[έfg5ՂY2<wo9U"P%#) SKđEdgAd4~L|;I2e2٭i'S*jY3\?>sJ1jD$Ͳ{{+=YFf2bKG*6Ϥ~<]ݖP`[>k`z@/DvQ!qt8$Ni(zx!DMg9i,zx@^"^F׈ě\oPK
   xs[m;   /  6   de/cardcontact/scdp/cryptoscript/CryptoInterface.class]MN0KӖVeٱ&"ˮxc9 
aG톑f>͌pDҰ".jj OQ"M,1XnVvzz2E`[' U4@i 0ɨo}U~οؖVۋgIJ=^ɲX_Ƌ8@"E>D]9|b#<L4'XPK
   xs[              de/cardcontact/scdp/ocsp/ PK
   xs[1:g!    1   de/cardcontact/scdp/ocsp/OCSPQueryException.classN0۴%Ph)$V$.Lew+$rTv	D'<;.h0,&<gD4\$1AB"4푯kmGRtX'aT,sr'cA$,Kw{Wpk1ONsE̯t0T
כF 2c3JFex-WLB2~%ުDkz TTw2Q5^*VbSUV-A6)Rd	Ñ"aj]m_oPK
   xs[U  2  (   de/cardcontact/scdp/ocsp/OCSPQuery.classZ|S?MĠ}ЖgжR(8%$m Mbթ{N:9S:NS9t:usnS7MҴMyOocDTpF6r%;S6oUjۼř@|+Ӡ|2U>o^_*G¾XcftQ@ݬ0L@4ѪKԀF'Z2ޠ	
JLx Xx#N* ldPM1Q+ة*i:SC8[9<
xЬ
G̨7Vmy̪|ޕ^3o}AZ
oh@ A3A:nfqL13Z]<ݎx4-m_+8gta,L%=DţJzeL2-$tǴhmFCPʩҠ*Q	*
L-=m`X8XĔsj8w&}mhk(=䠥vs[x/_ꠓIAlDY õ0х]4'ݾ>Hadq"f1CuL
f,f--j)Y=C}ᠿLv?t D4yM4-4{M@n9vKuj1`G8&:9/Lӡ=÷'kS63%c/i-ӒQZN2#l։sZ4w$Cm`*ɎN9垕yMg):)鬎:(T `oG͐&  ~|s,?+K}- ցr){}U^O(œmݴED)c#6,fG^%ߠ tbCUC:
#N{bLGjn*BmTՙ&NҠl i(<;w%>C5n5;D&!(B.2t1|ְY=_3l'9 Х:}ɠrxKpVsG\
dǗ
S|IJCAе^@eQ186:	3&GĖk:df#o-0Ɛ%xҍ\o56WH86
+xf'AiMPC8ߠ}LRM߃dS<I[GF|CRQ19YAN1]AR'{B@~Ƞ2==,3c2נ}21
P,
UanQ-񚶎NAd
!-fObh6C>'=A?I1tQ)[ґy.AOOCC'sS6v@uTd%?WF"AQVpUIEg:=kЯ3!G)Ȇ;z*69\6ēgyY~A`l\30w@,l!wO8
랻.dE{rs\aKQ0g鎌bПU+|XB:۟>uN1\AEH_#rK6֋NowAc AYS 3SnBaA{b*CDK.?'n{<$eIoYevנ-$
FxTC}StxZq`pbP8>]klN-Š)͘\!,ةsRo8>pW:e<zS@<Qb)=BsypM FA_8)#O!LP6~(9g tq(
!7"v"=+=[<<x	K)ϲsc,
b'ߐVe"<ɾPUBir!o-Hf4:C5QfvzC 50_yhBY}f
voݛbhv3*9 E1W>j&wrSSt:LH<$O0RK:>=lvU{/+\'|
s
 $s>bJAuFV4yʺ
B>b둠q=2h[ VxiLJ{8c`F7­@,]R'	kZ)hU`&ݤǋ"/
NnM)DL̘VM /.X$ky
>?tQlXY42x{oU?'[,5.x8/t"ý$gsf\h[%b)>3oEՕ*R|vgs2f$'w0-$Uٚ)`JUӠע@V&"#ѕJ0F\Ѻ`M4s;NO|V%:ąIR}栠8Noo ;-MJݺͦIY+W6aDNh%,
LD	.\ff77<P#drWřw[US-ճ5__E!+
*_}d ?|4IY˝|hפ-D*oiW׈2uo\,jη[24Z\#;ߙ
)~kXR
=P*kU*LH6[Wk.նqtǭnnhkYhAk>g[64յj@5Xq5O2Cl[Ն9Ք 2N*OC]gcS[ڲholij\
2(vin<qie{EEn	V՝V0hwuP͐I
H?9x&yy-bsǑ/j
Y.[$fuݩ.MVIP\+v ϴt:+eDk(28'O@XL]xq{8rYvM[Hܲg@UsY#RbCaC\D] '"14<B449{k	R	(k!pOOL.r7[YQ(R&@Efޗ[I9KQלpd N("Òw9%8W|ٞCp[(ˑp)z@[ǺEcQXs1<PXKq*6#dXT͍ܣf
wEiRO GsqOBFZ!,r@g
JY 0$X	vmS+֦tf@CInVOr'u >prӔeYI
`>֡dZaU@Dܯ~(tmYmKΟ_z?nCs#Skw
R+ߌȺgհU"Xjf6L&%s!͘GkF6]+9*Z9/Xi9HCbw"S==ߛe0F?߃Gߛ߇XFqɐO-[RFm G="[SlnwӸ}Tн\g4gIб	:~7I֊U< x3i-r2r}:SuxYb:ۀi	uI砟OIr~(XJdM'NN9?]D{\ݣz/rexvH&|~\(.K%sdx*+0xD!<6zbv|W
eexv{vVmVmw55P3Wr$i+}W 51{+Mw{)FRv6+)(C)%̜DRDgr4BҔr4=DzNKК}]ZQw7>H4W sZ1XXNpN*hЎP_
F4cE8.Xq)et*]XLi9( '=d@y~lJ+O?+ʣI;GB'b¤-9@r1qs'GsL599n)Һi?u7yWy5WtC(mJ+λ_i
KZ	"	ҀITXqТ
i'ދջVOS"b5'Js;SdM`1@V~-)Cؐ!ӹ:]Bt!%ŌF
#"\0zjp:ea`-0'g Gw)M]iWMnq-Ab~I#ŹGX=0 A?BIj{SQd_X5	EȡBu[#A+֋gqnq^S's ;q^5b;b{&#oMBECu01޿uoL_r
'Gu9
Yv9u[lyjgf*)օEy83; azM*r;=W'x@PncuF[q(avN*(<UβfQd$x^>"rJ0+/_ei]~FJSh`i4y+ZH--ߑCx΢g_z	/C_Ot-
xހ&=JoFzޣCCX>tCCg2Rx۸:sg'ry<3/I|	e<bg|T3N0p<&ԋhdl?e3_Eï`	8¯kY~9D_0>;oNZy<zM|	81
r)KJ:ZUOohNw ,#ZPއ{hN}DK!QNѕp#l/"VaL<|/劣nkMM;RgGWзBtb!LtIPnǳ>xR.E(N
|D<vkONj\tjV5K	Ks΁=-S
Z7JdK0M	^}cjq[j5vikap3оصF\b]uK/^BZj3ffP8WƎFiFjki<eN4>rmz
Vg.˼n6OGp=@FzϠxz87ؼ`?TȄQ)aG`o]:w~
p) 0>!i2$
f)ŷqML8zJ2X;DϠ	pXlͩTk<B:bfc:xTbFziVOc9CS霤'eee	%jZ&4HeV$̐*-s"Q_@Sy94ϣ|>UgsqK<1	UM.(!YfRl !bE%+[p~l%\QTjr3=|)2٢'KVNWs^
rN먎v`P>-)WHe|HvMX@|ٴrie0h}AdfƓb	[d4;C*Ib(?%hrIqȎ[Gf&G5w~'HJ%	_IZTl_w*jr	7@|o*oZEVrSn>^P0ByԍPEy'˷mDzh\Ԥ^ދ"?cBˀtkkPX@`LZ݆|abs5.AK4Cvm8u/&}!@[E SnR%1/U"]#ڄ,W'eyYJ1IdԤ
ޒU@T:/|tdE0eUujH
7,!пӂN	DUZhiIAlyiADP+&&1r&.]sdM$	VMVa?W:FUY}z*'Z%Z6PK
   ys[              de/cardcontact/scdp/gp/ PK
   xs[1
  //  $   de/cardcontact/scdp/gp/GPScp02.classZ|SUIڛmH@$BJ":-Ri*$$|EP2*(AwqpufvFGgFw\WwܙuYF;ބM꺿|;|΍G<x9XT!01UP0A*ū:UZZ`wBDZ?3
	V_Rp(p(J8%`|tBQRb]pP4HE1\&mDu׭T6jR-Ǣ\صhpVRG(9+ *HVH[,;&kUx7ӽ4&#-
$Aa81*bNc DGUWls8	T	$p\g<FPⱄޘHr_T	D;ZD8QSԎID&+T1&d[`$jZpƂAA-fa)VVE@Va-ZF5~R'Վi_Ħsb:Tp8wnH]0ދxޒŵgwC9XsU|CQXLS*NTԣۄ9-9SQ֮8{N/V7`.)
k{|]cźy>
M*39H3s+Xml*yezת%և,ir8*iV"H@_KtUQKU,[2Lm~sҝX
.Tq.&\"fmI<GCխhJK
Z%@jǢIa	T">1
Vj1dL1I=ՓV`'K32\:]*`<9U󵍆;wjë7nnΖT${RW`x}YXL#->d9щn;
ItFB׋~wGpָ1E*'If\ʆNr֘p+Ul9iCxȦüts(Vu¦;D`S0͝
7
E-Tl]Im]7,OKU"#8tD=M
=26u$]
n'Lai̗9q'Rp{;s٦A)nm~VJ:L̂u
,Ι6щ=$SvaX/J<d'0۱Љ[a\ut-Qm_:q*DRr	QnJv"Ԭ6x
O+xFǳɵ!Jqq44خy93k-]NU<^l&./V?G	Fm+[W64筬kZT@PҊDCG*GM(7x)_Q'U,5N⼽ysՁ0WB͏U>i8J*DpoTD4Y.U3~A(ZK/vvPɾ-oR`N.ݰ
~0#wb3ұ(Y[MϸTΐuNN\+:7JzR,6ʉw|_cvQ1a cZHH G 	W	> ),C@8O§
+k
`#^U+GY_*aޑt3@kkn8&<=B4+فD2ב'._qNI]N2tw <Y%KײTJ,+j^kb\Tb\DUPR*S\ArP농cy8ڧ"Q:ٖd!29쬍tDSNml>CΓHjv:U4XBkw&,KĢ@75/m^(?*|1PhR^kef 	<3.L|-LKEݕkcd0ؼ9sï)՚Vi6Q|,
:~763̶䋕r$%DwP_o6,F=>2Tb% QτWX	q-6$0pYи1΋MS]LYR)7Z=Uk)+^[rcS~NfSsUYo:4m*vN7M_$YSrVpKH. `l/uwT{\H(gU<//i|.'c۰*4YÐЅ8gEc`rh2å
;9C'l g%a
U.2l:t؍
j36B*Бa
u4z9d~G6ŧ4EK̓-+rgsulkW,/h|z)oR yC'e: g+'$振oe}"> ?dw`.LII )52dOlYORkAW
5H&ʦ̗{`NavUL*氦XLJ%_靱P8v8fE*t+a	Zb|	}@C@4ђbɘ~j(>uNxfɿѻm]9G WUV{S+\#qbkP]B=슍5.nm.iυ^?h)~BunͫǼ]Z&f~uKWy9'yi\=Tu
=̗r=`8aPQ4NT~PASQcʶ.ٖBhlG$َ21-Y1? h2=eYGx-1z~?O|fs<|Vܫbl:[KB]>[ߘݰOw{b!`jcsWUZmJ6ޥprRY\@R3i4GMBcl6&l/w7v<uI{┼<F)zM6ΫtWTWZjGe<(=XL`I<Oz=XKVk"B_&a{Pfr>~|,8Bp/(ygr
VٵO6RsftE+og};Lpwʾo/ڪ/⎃ 3/x0=-ǘYoج^M/gƓl8
ܑ<`0v4ؖb}l	3h*]>.C#Q>J~vAQ5LAcIb.61g3Wvp
ϿG
؊q>g>mM49FHnf{2NZ[i1Kp-.Ztnqnڃ{iq?}<(fvx4RyL-BexZdS-tp-Y$̊r%q̲aFLa
i<%x
s5٥A9P0NZ
"s\X.:rar2-P1iap@:'T!G/I=lPI=D+\]0\ґ_Nzc7X'a)iq8GZ#`f?C3%Sຶopslm<l<N!O|t9<')酞BcnGM^*BgML+Çm;N\=T-)6_v\t ^],5E%׋ػO%{Qv{\G>T1Fex{pYP^uv.!&*.,^Vۍ(dQNJEso3_D1	ARHϞÓÓǇOWX&Z*8#h9rvG4^N#e{'G>Icd
5"͕8G'qӨr18=	{jfn˸ Gkx?[1~CO>c19s*/ȇ8MWWjO
c0>(!HO>g__
,2-RAVK%,<K=[2Ne-QבÒ$e3ӗSJR-
-wSqb~rY^f*%]*N&`c. N(bI!bS0Nq92^8n~J]_ W18JRcoR+c^ڗ`{%Wh4#Roue햤+Q<%~Igꨤ60L	23Sf&Ne&myUF<L13A_Eq6.:GK1N_(g.J?6;\;
>Rh¶qԋuF)H7417Tf;-vXE.vk)&|W$!{fK	lD1&qe=UT٧:#a<#)©:j}WE<-~F\͈klF<D|EĈ"F~+M<%'p=,.iH	i%i%i%&-x7*Oϗۚ><FZN~'Y'_Mטg3&*r%,[fs0eJT
5/emaYWe%#umvY%e]ϲu)z:`'8<cvd ;ݐ~#*En_>)g?xqxi
԰(n(vS>y= KGPK
   ys[   0'  )   de/cardcontact/scdp/gp/GPByteBuffer.classXxuϾf^~e6`I,eCh5^nvG~@N-&
o:`0<L!qҤ%!MڦNh#iS6gfG+Y7{9?ι~P>^
0er
TJoخ\2k6tXk0y[]Y J4`^ѐs݉LfC>ѝm6\~Uh1rOW`aXf2o6n
bvx&ӱtƌuMf2"aLA8jG͔չ\E۔QCJO6td3aB

1HsHP%lUMxl-tr})R+'^dU,{
Sꚭ-jjşzkKM:Aٰ]{X4pdSşZbZbZ3V8QFVX!XLl[d=Y#6|,\8+øev5VfǠKІ7VNYE&΋øOؾךU0bS8cGZÚ0.ZQ
k݅Ef\(8k,%lmp` ufqd=9uc8a>*Apvà69i.oi3?jc@\ܴq!tbky׎`mZMf6Y	D~NPP0ǒz*>K9jA|Ir.ڶ,{M7ˊ
	
aԬJ۠FYxG3v+1X?2v ?rnw>ٓ4rd!-Jא;8x*6V%e`.ƝiÉI:5f*70U&c3~=';NoTƍ*RFSCMa܌r\ftzrfrford_8ntq|8ZivɮE0Q0=6U%>܍SMb0%ƣQncs}OKf ݝ/GLZL<<JCMqA<L)̀*VNA JwG}6G(Z"e9E"2ِ=Ʈ"Z3%X*ås1}ȦPOId		$szX{$n.%,<:Bx֖ cw*z{4(χ>GG<iGa849ƐBșjEU^RVDNu-Ux9c"+n՘qd>"#&K_R]/
"gN{TUQ;-*k"MJ_#E2ga| V4ӅƷX_P靄7fWWew/7[1s*$.(-tV(#aJu;Zqॗ-W|bks=ATH{D-r\BtZ[2m؍FEeIS%ճ33dT|fEKw\:gxqNOMd &!FjYlRGta46q@`3|	S cLc@'|RG%n7vޝ^vCu^mWAjiMM冹CH܁.tsz]=_j[G?!w&zM]Hrlpғ`(5+&bg mK&Qp4d&:li$]Nc28 ^2$!JƪKgAKZIixCNOބxy9`ttSSЮѿ=HXd8_јN^UL&NxhXy
ϚJ:Ņef[2RϮ3̾Lw~Z@<9_x60Y>Uv$!/>;ktwodvd{q#Oq;,ԜDJu$M)(+Ҏwdg(SncTO{
fh"`R{*g6hlcAx +{[բ$_>Yw|a[|?=j?( ߩ#Ŗ?@(V>9_,KV%X)l[_6SZs%a9")´H/!(4[yxU
K]N˿07Q+w,ݖQeOZ?fPV\07uChkC@c GrK
=?х_`n(VhE,Głqc
O#[m]nuͶf^05걍"}!6^0^6CH~,Ev
R"aeք-&ۤOn򜼀9wAt"kkבarlU:< ;aa?1ϑ2&J=dn|X.G$J6|}LqvNهO˻v-Sr?q>CA<8(oqy-C)}-yvxf*'ݻݻAހQ~<-S~_Z
ySJk{)v}x1K^ezQr
K4ΏM}[ECgMY?GouDI `
=_$~#~W;k_ Q+z?d(|ãHH˽R}uL5hSRDTԫ`M242I3tUan nz'ӵ}k4bZ_+oE~Uh.=\ߧ}	3y#3y3:-d-V C1tyaN^ u/b&ߝ"F8Lٌ][ gqcE=/K}q52
l4i2C49H-DJBqb] |zԍ;;W+(! OVW6%76Gx۞1zQh.!1	'ɖHX9(HeQEEEE` `̶Ca	XT>]FA{mKivnV,G9Ej!FALoCʢhh 5 q@1fdA!fl.
2e>H5mZcVE+碕
&Jw6ZK-|B!:QU 3'NH$>gFLpFBJtkZUjWSk)OXS-V޷Q,Y+XycXtrFtPq;%gY{M	=l Ģ	a\J_Ơ4QVոRˡZ$Yrݕ,rm,hiigѺe#qX6`P6ߔ\os/s%BkJ*kVXtXBnO?N<<kIU,?{H8WLUX9RDi]Y/rXmYdx͟o?EXW`+6 9dL̖X$TIneaF&qZ$....E\EŇST/TA7BљAOjܤ򎣛?uSX 댪%rAAjc?0qxx8Hm<Fm<Nm666SOQGgq&N=&>jb#E8گ	R+uyƪ2~
ޜbҳ(|5=t\źwa .í)G]QM߻W5%t
XEe_n:AՑjy;;x=e^ǝ:͜v'd-H(c7*ο <
X2z_d!T!|cY
>Bqnv<:RC9虍<s3=1{&B♏[=pgg1ᠧx9RYexݳoxV⤧
ʭl,J8wkWw?z1X)ӊ3SNe9sysW(+i֨2^EP!(V
PK
   xs[C2    5   de/cardcontact/scdp/gp/CardEventListenerAdapter.classWkSU~Nl[KCK6[ BZТ! An!,ݸٴM;~cѩ#9@&g=sy}=?		|F u: м`\29&g	4<fٖwJ{!4jh.Ȅiӱ=3Od!
_
{&c=
4
iKfβ	`VKƘ;B+]r=jL-حaVZ|MYMzWFjRs-;;Н'q݆}q?֬@cj|S"w[pP`;#E,@ѯC@v]
@Ls#ÝQsND7E/zW2vtB75ͻ3%cuttk'g-%SUVztBWs@}L
qR.:d&~jzc偭BW>чz{HqYN95gF)/Ǜp x'	ܨJ#Z~wd5<&pyv֩5qgD%eDz^Pe|c&8k%xylFm9	ʡlj s0<.0[ᬽ_Em8$-t0 T`oWR:1!/6=&#KUn^0PMtHk4l-?zn"jn'm3xVs:JHyi+ʄTۑ2LIwѲA	$Qy+_{M%<MjX#]X$_,*RNչT*i
Y|%zNL*%
 g޴+ZϮN]MLR֩tJgT$p6\K.wy pblq`a i~eȗ5ravPs<}難wYcp*]	{
I*@u%kR7P0d[Mx=*d}	9pT8]SX*Y%O!S sh`[#u[~Wnmaq͂Քd>s8 Gƾ܂xyT7+{Ɓ/'mnFXőXmX<[ubbģ1q⑇̎_<M¨"g)D#N:'x*(G@3H"& 2x۱MRhp7EiZ*ӯSU54 tS7[nb%9{bߒo{=T}ѲOַձ
m
+eg~c7}$帏0Z >,dўb,*o{qX#\|WȌ^,xyuS@;6q͙*hm*Y
^LDٺ4C3X[pM_f*Ve\"W{~GP:vìBySHP=Rului(5~]m׊8-r}*Qb87tʇv}db?J?A|AutQ	Q1%t{;q?PK
   xs[g    -   de/cardcontact/scdp/gp/GPErrorException.classQMK@}ۦ~&R"*o%FjR6QQ,?Jj^ffޛ}x}"2Ț0,gwmw+h'A20He^ 
&a1l4q0^^m"e$XUI[Q<BYy#a3E"c.Wq`FMbԂP4䍖։<ުsw4 fk܀|T[)EO&/ًѭQwR)2;Ytb2T:}(kDq^-
%̙t:r6;}Ҭ)S ֨sl`eҲ1Mc/ӕrJyg	|٥r3̇otW&דfXH%SɋXJ!>wS˺kPK
   xs[q"  &  %   de/cardcontact/scdp/gp/GPCrypto.classX	x\ufyoF#K~/*ɒ-cٖ$Kd,#XGOi4̌@XLCp	:fi钦,KiRI4!$6I-)!,kԔ$'wy{{>,ղ7xxC/(JWD+FEӱT<Gtu^;zӄ)XҐ:ǢPx[M
'bP" r
BIVlJd\(7e'RTj(%(*mQ*H&Oזu(+cTo_Fct7Yٟؖ5̄E f%!\&t8HW֥رl.V;-SU;Q,eAc
AN}nNs1O3OCoߒ8^QCXP25/kD5~2
Ĳ)D	J
傂t=p2Ii6+^t*UPP!T`Mۙh:(ի*UxFŗiήSk`
}:&).Wã֪
aс,6fn~;z)iml
f}ݖJکA_-P&'[6qO:B\-ixNd:=g&bD3m̞q<E\'2A@N\TvZ{t05pyg7%:C؎y\`	
=	#S	b
̟TZEfYw}.nDb,֞vB
K'3T[msw}w=2;j^{Tx{4'*v0쓰7'1nM1~N4PIkk.BZxB)C؇}v*DQ:iĎ 8!j7;!yLd~I/>@	mmTH7+T4;4X[\q<]<_YLvNE3v-1evwparf]4x2-NǊox <-=Zh#st[4κIgP? 
2]ڬߧ#&>@-=

&>H'NOK? K#}v?mluƲ3V#glk}tz[I՟2(L9wsdkW6v4mг_r_
L<F{SLldVAOHS$㮑&aÛ&dM|WN?GBzZt4tm`
015wUU&>;YUmNg[j{bF'zK5z~0Wi57FՌ<}|_3ֺF
QS:Vcza(e
1'8rFctjPم:pqˑNGsNGE1otCTkǰ*KhP*kcúgQ_qƆƖuu-䏚_y%3Dfdk4htNy|lk VWy#}VO}Yop@Сl9m#`6uvCDCuF93қg?yq]7O
2vhң˹MTLɵνvG4Dn=i&)J7i,Jx*M4՟S;n0)[Mvj)9RI*B#th!'ViC%ppk$YgNp\{y]$UL^fftlHE7j%ӴPi7=2-22S
a>(i߸"cmMc7
_RWes/^dA;[o7*<t|<9':/69Jœ{1wSzm"C
Mjќ:/T%/˺Phf8eA#e	{ӣ unq3[90e҆FNxckPdoW_>7nȖٕB[wF7R	{bntҍ3&u`dh87r]|#%^2GmLV|#/c=Q-=	yBOkR2 Wl>2Gr?R30L8@5;3:p7:S4U+l(*$}#aX3XYײ>΅=̠ކ /^]-==ǽh}؆؉ЇC&:цB't|Y BYŲD#?,%tvH!rkd)1I9x
x\D,,w_f>>GGAq_!UΧG8b9OG19UgkƓs

wxs/?Be鏞B1E8ZJ}JqZY%ŲZh3ZrGסD&Ǻtvhuُe˭~FSa9l|y^k)n,6xo)\WSMCj[_F]5
&CuR,?*|a38j!T[=)}Ba;]]@_$/a6L Bu؊oB7^q ~(}]p!Wz*N-f-}9UpKɪdvJ\KQ/2hE4e4%e&
AِVC(v?ipa{!jI*SQs|y%f5FE|J:Db@F,Uf4MV*Ie6ǟt<vR6>Ky.oziz1,b;[RrYN.+;zd%jU8DnncN(q9<rxpa:hwᰇv^9\(a4Iudt:tNiyLbO:$if
fMw6k:4@87<!Eq^y8OQ\8nU{ͤn![Iomw;mHv,;p½
xPn4GshS(4si>|̥9wi64iMlG&<~Є`9ϥ%r=kzM}ä bò2Atlh}ok򦿡_z3(bqKү4FNfyTT?sr;yzмMItDgH0d~ˇ)$ws?Ɯ|;%whwҽɦr%Ka.\|ho
MY%){K4fc)eT`LVP&LG->fiݪpi4nAO/$ft>Y A #CX-r}cn-O\6mr7ղyB!dZx><ors(4@2q
Q!4;9*D׍52qjHcr]սJbf؞}^Fy	$nǝcӓ48=9<0K˧YO3G|7'GR^E)/xKv|.G]쏺uEUR61+f˯Y7iK,`H}̍-N~)<Ϟ^K6"7
x<&/" 4:b!Nj۴e"]̓W9_2yC4ke;"?aXFѾ1&3$bbbb`9[Xm}w:O;exqظ`]~"MpSZ9$?dJȥ][ւϠc=Z"]>Hz$eXtG"]~QJi1eʠg)C'()gXOR[)3SIBSg)XMyˬ)(/@yw(X/RεH92e(X_\h3"[P.KYb}>eRur_)+S.J)+\n7
U+7)ޢ\U(ࣺPrX](^>bQS(A>j%ǺBՅRy
5^-n+ۣ/PK
   xs[Q#    1   de/cardcontact/scdp/gp/TLVDataSizeException.classJ@hVUkSҍdhGڤ$osҠRfL
)rB@:KAZ]鵭'G#{s.81@bQوe"/P@ivQuUXA`d`Qtu|/Nd۷}i.e$Y>}J`kOzw*hLhdylq&`TvlGBzXZ?u38,W+
"Nh4gC*Dc.w	2UVhfL"ljaĆZZ|x&)jֆȍL
b2։fmaRsV?Zdg6?PK
   xs[A    /   de/cardcontact/scdp/gp/ApplicationFactory.classXkt\UNq<:kZZJL([BJӦXv&v2wsiZAABGE+J(R(>P(>PydGZsgo{}[GXQgVOc?J鍻z6n%3vcJw6ⶀd:ip-T
L9;j\g{
\>)Pj	1[ݘ'2=L&vLi
ٝLYڶQ4IS4Z}XEqѺULX6znq8i28LDXφsc&B
fi3W3edL^cY%0.BJO4l+iZ\ a, ti5{h5umiٗM*Pq⴮ئE\!cuTDs}Ffw"?BDj^o'm2lԖ\NkōclkVq]|<ϼ;^	k  `p@UawωCzVI8.Onp)w.>hr.A0>:p)?`u֣Uq@dt+K v]Fu[:yUh]-kװ	0kd0
&
LnխqCE{[Zjf;Nsid"LYFÙ|E4tb;b@֍.
;p9|&G.m1엪vjWRX416yMv!.0OcboOڽem=mgG(F
ȊgȚޣIa%g<,gbAtC6RW4X |iȄ-a&Nǫ4X2Wf8<jTAOŚ{OU&*`ٞ7N^2`yTgWװG_T\#/rİoJM+\nG?~\bwXNiuc)]<e趦ͥ[y3uD6o]fG5|'K9c6= }O2#-vَQ7-HsG*uI+?qVz#fsVXmIΞL̏Y
ws#Ezq'VROuV:hyt꩜y
wyS>
bɞn,
lV^4[-f:ےicSoamkdN?]t۽IV:)dJl޿Y+'jXQTRL);,qz[=Ez/CMdcLo2yN$*n"#{RU
%J+3JHl,D&$:(\P2E3Qq"HB9y٠:a%|oMP)EךZ1e:
I-^;zc>7\&BSN*^2㔹\0nZF\z2!	BRB`xjz,
J6_%3|?NzNx>BbfΊk]]|itZϴvV{5
4edz/9̿pz:W6ܓ˜<i'ORg,i.#zf:~bg*$ۣ}SX8mҌ֚NS
7)S2ǧag/f]lQZ
Ho~EOV8P!δ0q't=ckv6~QoXN~~ix z	5W
3lՇ૔VQX6`m39
eOcATFjj\x{$n8s\[R\kk:%QНsacXO`c<9HtH7hfw)܂
uto).
t-x7vBGqǯy5<#k
_ǣN\S<0ϫj<97 	lKᄛ
9Oh_*W2
ڈMl"*"]\ut8iQw063<O5\-fzCcx[J(!%>˶?\jC*Kl^: .Xk`XR
@lgQ7IX7w8FJ{/x ZpF
gmB{/d rog>/O3ԧ8@=gA+0MAGGo6ƻ[{8#,$"rEb]ܽ0RtX~#݌gS>@q99TP2g˱V\KLPBRGs
%Pc
ye̽e1JC޲hs_
+в=L(cBrw0>;Hnz%oD[]]]]v5'n-hiNܽ^ipa܇Gy0]S)2Lw0YWK$J+@x8} <g8U9G07V{"7?-ƵQ>8<U);c尵е!b]7
).'b]jBGk~")9ѪiA4L܅
O1:|b
'nU9;:lIns̎<<ψ/d5ċKdˬ$*QE^fo;?ɅQ?v" <bP\_/4VT"(;}v>G%-I
Iz?v8FA''׋~tyfd䮏>?uz""Q~#QxԱ?Uwrf"<
7SBwUT`&g\!g\OpI5t72~\]?-ICPK
   xs[RVb
    $   de/cardcontact/scdp/gp/GPError.classX|[WyKMGI8vi
i<@X,XdEUG-	INl{dݺ܋m@FVF'Mv0Xà-A0ֱGWѕ|4_>|w?w> ,FԣA`S8=?HwLJ2lW&豓f,а7˖8:u`/jp,'ҹ
e3\3n4b4Dvc
=X&y
9X6fSŢ+;ןGكUWHa9@|
f"g^#1r9k<XW<]
Bg/=GuA^hX'g!6+cg2fhz+mv;a:RL
B6JV-$N+<a{"3#S̢\HՃm9%õrvn+姊3䶮 1f.7b(n9{Bp#vaHx$O'ҥ>&?I>jvgəΔKBX:PdhYF_:g^B9cMION mt}Wkt.XI
t;cf$	aj;`J1SG2@
zpbΡ96gD0k%M风aLd՟01芆X>FpHqǳ7:|2 Q*;2V2Ņg%A84 W%O3M2WW3ҫLx0	c'uU?'I*f(пkc{`qypQ䦭2FE|ul;Yr,~^/xp~eV1fnt$[>1{_~l;39!~UJ.v,muɤIZJt\"3=q"Cd1[rnVW%x{t<+ Ie=2z9_"ۃTrsyS}j<EY0l:<C715ۆ9j̜[ya^45׀G$#Yg5sМkهdBg:>Γx7	{u;84$⩁P<?֛
DRX,jg(2zS#:.Pg LDS}PX|T'D4
S{PeVp(j{jxR'=H ګ<$V{CO1T:#Վp0r0ѯ6 {>kSlCAzy_.좑T$HE"\LD 'BH5"_XbTé#h`*'KMaNM#34"mFc4*F_@	DJy֙`(&:gC#<	D?#
(kݑ
me-&h]J}4qekU+gՇG˞Ń@4#@0/q"A~?5" BV^/!Sz)ФХpIᖢQ
X,)JL
CRIR4KJ
X#Z)ZhbmR])xsvD尰 KfZr4Lzb8]Jlu:'hm_0~ѱt#M7,ctqtMmr@]t㧼eKO&2FNsμkHO.Ml8JӰㅪ'KũLY溫UR*FS	eJ,׿_l&v
o҉Kx. e䲫O\&uPwVi9P̗&_~KU/besܜ80e;狺f_	w%)L[>oe:]0'%
b-""	xl1͝ʏ}/-kvvX+Jӹ	!ϏOjb~"g]ę/]n­!QStm-S#ŹYToe	nX4Zr+:fލ/^[Vy_meO_W_W׈%Oذ 
ʆOٰ6\OYn 
kğa6"~چ_F/ٰ^D
/&
/!~ކ݆`lx966D=^I}n&
"
{_?5Wc
գ|o!HKy5U^=	uR$zy/Y
Z
`mz6aMuɟ*S8#htl'ј\{1Y/-u{/biOw+
[?=e&2:^nqy]nr nm|BӸɫ?NPμ7npvÇpí|O0qU<[YhZDlP	nA%l9Tk_2"n>&`Fvo>:o[Vns|nF}{5jإ9n
TG
د1ki)>#45k^k7F_edmʄj
[k\V6vaڐߚ-q9=Lk7f&;rF#]>j|U)xuFghlH\*)S3ꓬVnS΋H^9sz4NI6<v{(J=^qzsog[C~Yy/u5/08rNxKE{k`9IgЌgYC7]U7yd
M9.|d};x9	?4~[`@x]%vr\8Aq3tU봲U#|"s?ޡHZOOb)6#@H|&\HMՐWeL.OtE>-u\s0/̄PS~¥NTY\6Lo(!,j .ԽXGo]˙Ӹ
ל="b9Ii">0 k$锴j7HVi:[؊S~[.1m!es[O:j^xm0(55l`"%1Doqц"\qZ9gk>u$濫p#S$PXYd00}ډ]2Ǎ+`?gP%֬ozPY7D.u~䚂'in-jUKxZs*颿VO_Rnxg/XՌYόXɌ'5c:ԍfn<F2m
eIEQ.6>C{ʥ?P.30rqrϔMƗ)WR6_\e|kjkoR5Mb|WuƿQ?\o;e{ϫ$(9R<$
0GĔL(9,FTHVxPK
   xs[{z    -   de/cardcontact/scdp/gp/TagSizeException.classN@VAo & kĄʤEoąC)693oNϯ W8 DI64ұK
:k./9xZ _n6!
TS;>N_EUuRW
LM{hԯjčUvhQ^E
ג4DӾi1P/E0?u2MwYNY9p52|% 7ѸAK⍊6ī1'آ*;Gf#AHfSƬDd94&Tdjdhg=tFz6FfVVY(;`?2#q]Yʬ$bA7PK
   xs[v    9   de/cardcontact/scdp/gp/GPXMLParser$ArrayElementSpec.classRn@=㸹N~mp1B<!UV
xWkG->*ԾΞ38ckPv2a(@0H-gA8'S׃]2Jby =ʀP;Vb.deߓ(SBK.\qLIߠ.V
[I(?^um|;"؛i(	˃(ۇcވq,4H싢mއ^*7xӝEwv
Ș7dBu[fe
nvJ6ce䝴234 3_8YDcͱٻ3һ;Cwo\p׆jKj.qݘ˸Ѵ̨VhB6/e
߀!䕓)n䨛8:1:_PK
   xs[tI-&  X  !   de/cardcontact/scdp/gp/Card.class[y|TfL^ $0@ HHaQ`$Y\$&3qfZmUk׺aڢuUkkV s{yl$rY缗?~j/?P0Lx,x#LN[͑Mt4o͔cwb<ϜD0
X1
h$M&2h<mh-oj-{Zl%dPy4cMh%ȸCGfiKz,9=N~]*HFR^~̷PLw?XK26ysZkC$^tE8:ܜܬlEh3F&0c	Ȋ1XPܓ ͼL9]p<w\?1cd+?xgiO)FEdh}ͱH-ē &`-L1qHma!bT*J2i%29h*ͤ≦SVQ)&J,y
9r`TZ+y%f%{ͺeܚ)LL#L^X%4ks:&&u$bU%w(LY%X\"9lO426w>DVsMh3`ۏ.\q%/[Oe擑:e8`昐8B%i-C3Z)j0~ CDX]{5ۏW+cҙ`5A,2儊Ai9͑tZsk1NlX.KD<ڼN#ktnPk3&SAԡ^h;F\jk10_se3,XtT:c?G%/6"Xo"j弄`XS<Imeɛuʋ{M6 N(fNEZ9}A9qXH I9'Ǝ?3DIC|܈s-nH%7K;Tm!4}2?R3[ٖȰzVmZ%iUh	ٷU-萻6|k5kYPoHP:9jXy٧Eɓ{>g۾/l3,lTiN1"vq˒E2((J"
TQ2UҖL\B8$YW!d="_˳lUW,\kYɟknvoFݦ􉵲W5_p=n 
4`nbpp7fe&c5N.q#n/{av_s jl=/N詡Bby(c^|fk& "q4ax{<8M7-<G	X$ӖVxT&KA=R)'oc߉'M[؅+}Mc\'ҋc[{ȿFVzqL[x{M<ka#ZؼI ?^`dWjuma?^d)[H}I-4l
3uǉJ_NYk6VvϏfls]}o-oK2HSLmoK ];,Q+yOha.;㗌םRҏ_ssEMe<?~4;&{eUmUY˗,n~ʥ~Iһ+3aZ:ږgJ#V!HĚ̮ZV߹!qޒ%po%/a-jd$f~l0%iK,Kk7Od}M$EIcʬFwue}M;-
Pq$bu䈋ڻCاd	HGL?DPE(+t2Q&
R.
gfP<иJ6ҢQ·HCCGhXh/n/͏V%ZDrh7ȢŞ}C$EQka^eDI#-AO@XI@S,*RyT𫏼{PrA1Mh|'?ZG
G[aL~X,#A#qͦmխnAC&͵D+}?<k&Y`lقEbqQ2)<S%&ޭr04HUӤZt-om	bZbR	di8GTCI+8GYk/N1ZTGAO)MF𲶖1-!}3M26M1m~=nkk(XI55$ci]	'E8sOK1Dcy
mT|GTQ4b%6NMHX	Vԝ4OEmz"g4lGDvs84h7Q`i!,o\ryc\V0]Z(mQF ːxS\gʡ&dfͦzdO4,KfүB
B6>'ytRγr2{|Ƥ-b_KeO&cħjk]dKP|iӕroU
ڢic\1#MB_t=ǜc#L)'h\bİ-.8ô8u.2X)(kH5[♢⢓fwܬ

Iſko<k흜/lXt/qd-cHz.Hb:otE>[9#Y<8g8U;(vq]#Mf/߅O--ڈ Vq1=aNzTqh;p+cd"ӣd]Spi0nal*XMx8U'ˊIpx`B0`"5i?=gx#5$FYmoҋ$F˺̗-z^ɛueO~zM~\[?OoL?úT[va~H#~L?靵rH-]LG̏a}NkUuE?۵%hɳ_Z+5P/^VD&UʽXEq,u࿳rjq<I/WV%\&&
Z
<EK`	úZ:';|u/>:+ vUMYcGYVjT
+iZA: äC.Jn5fnӺvAER,C#	7˞V18?+5I}Dy~aSSAeC:p*PQt1[od6P6YӧzʷTNr?Y#kw?<7$[8	0ŭ-Fd;nt
i
x* ]%ZzUƩ֘
v#,Abu&n
1iSj+x˯&37"EXklu)J:bUjȖr VWj	fF阩2}3LO) P

*)?GJs\2\.!HFȶm#ǥvpx"f'/IF#ͫ"̆8#\'*~ݘGMlWdgK}<Mv>&?LF:?UQZ`M|̊*o~ɹTywԀ	#~O6uR4Nǋ+S$TЇpOA8LYeU[C<S*
cf]n`;+/lD;\sFZ%*֭Dd<]89->vTFa]Ihg17$]/:Y Ui6Ƀ\]5K%3IBxcYi-j0f
jLEYuMqrZ|m	P7icZ2x4^|x
F
kHMnxP>NI~Ҡ޷K)Ӭ57C=kte~cTgK?@[?p̜k"-<<Ep[@mD$;2Z>~<1ctRCLn0(4[qZu\x㉆x`G$F=Izj/KMEL0-լh<uY_WfvuO|f,IxaYT ʇ.eFUFKcDFz/zǭcWtMyk0C"d|EeV%?-Gl>ӏd/}Դ츜(0޹{}=_խc	ag~_Pۘl´G
OupW\V_kvޫZc'tBCMv~gy_x˳1.R]=a*>y-p
"Ĺg7KϤOߠf1Ae׌.IJM}	W,n~6;v^otkkER=LJ1"?km)qq!`HO&38EZ2
>~e!~NKMsbrLe1=E4;9mGDys=z-Q6߰/YOxIt19%a]m)Hj*ȯ!lcyh?a~.-bg{Z"U?ϻbgǈ֖&w03vl!`?*W30R|8<?Y/s~՟eOORA6|N_ow(oߑZ;cZO:^SWTBOK\O"$cy|3Lpl/;E|~b٫J@A;MgF~r>}9k95ڙZLs^gr@-T(lçeT
oMQeKކRcs#|5wa؅RJӣ=ޅ*̰o?F}S
a;=m*fܺWsP+89lAwV=Nގup`?&v`8EgF8
C98
?;3U:p"1To_W_D]uJ!s7OS$޸:p`naГnӎ۱kvw9̢C9юWف~7mjeKiJ#2\Ⱥq1[%ln^cp*TZ_g
fl-Νܻn=؍{yo%xqN*4L<K'`ThEQHiD;t^*݁!N6S&[z܎|)'B{1F-R!iORK«R~^/W-g_ëuN
u*?-jE#Ai:MT:]V5b?Z#H^Sg}:)b]"a5mVL*0(7UCIJׄ jM,Pi:S5L;?Ą&Sx|8wkO`KϧfImd!,S*fOˬ%r:|,qĐ,~U~Uɓӥ?܃gVoсL_pout_uvWOJ?%l]0mappc0ylWdAb4l>pVB%5ߞV|O1U)XL+/,x]sP\tް~0ӁčWl0F`"T
kjNWWiaH*nU!6{8hjT[ٙ./0^]iǡ F;܁er(³rW=i(t]T:G:1@|b)5bMC	344SX&-|.u{օYg@ڪ9Z,;#:1YbyN
1BvB>q!3tG;9JVOiI).*~=|8t2|P%t^_DK1a1-G=@NEDicԳ8C$]$]$]$vV5<f(ԫp<NPc21i<<S}q3K39<mtP,6+|$#yL#WKStlP0wW3$I`;<{쨾xr~O)80BԣDij`~006(hjf>`>%XGHRgs	i>oc(|P]$abu	~)&KWAdؔNSi)\JrW
Rܑp|3=lܭ2dkcJG
s371"S&7+MΒJ>*D\qҰϑǬ;aLI&|3q]t9

ӕEW1Lm7wU2eVìYFG"/Z >PH"B24|k5VA#g-_N}V`YuWY7O>4~
A,h[hNEB?AhȓV~ nsXWCchi^^_@gvZHV
yBސ/d`8)`KD;<nOaFkC-}XDa-=Nv*^%\D*`Dw{黸dGw@Bqe+wNZU4ܧsp|XsB|E]φ"/iC
|/xQBZ',m"Sr#Ϥ9^D1ޤu.H[ΪqSgP`	"a#H
?;@"kՋ֋֋h[/rx UXX.础l
Z򇃡ђnq&Ӡ0'G1W>@)}t#ͿY1b|0G	MIy{%E*KUURUCC*^5\+6]xU]x#Ϫ,N^~>hi01i\#rV Т#bVZ=r`ڀ^K=X)n>q:A6l{v>yv"úePW$Hv<v~NDΑQ3e;BG-LqvJ
AX,|X/3h,֡1ԱONltGd.d>z<3`ZF<Ly{5,%%U)ƫ2N9fN5X8lT'p$\֬p#mYv2L}oGnSUC
'go(lqV'p5񀫉\M<mǏ:Ez*:CTw;x\X PN
slr&4qTwH?t"p?k	ׅkIRj5޵ֹpX
T'l{qnπץGM
葌[1RxLCm.m.m.m.ma6W?
'KAjC@Dr1ʵc/+)WD+U=i?yz|LQ\}sԗ5%NN+[N(zɅvcRC׬F]U1tCӱO#zc_J_o
pJ|,ķskߍoNzxi<k>j[CqvW@߃%yҼCKȿtvЃOl][Yw]]!g#59N ݣff(Sa8Y݅,3}z ԃX=.v3Z!I<:8)ƛ|_/ԳzoNT\Z[lH$(ݒ`c5RwN,C=N#ZF!c,52գyeǰ29|ϓ2d;򐯃@Y] R?b#Ib*3p93p9;}iI4uf"G=P8	qgi9>0Ewt?GWz2
Zr!EMeHLcAV9/Ap5+fJ<ۜz\osm&>ppfAfH3}UxG1<`T"pX˞$WG*T+	JvJ`=6vVT%yEwkw|ro>Er%a_Y;{Oyyd /c]W0F0F!#F!&1(c"fGdnWǠʘ>͘zұ
tIncViiuհyx-!45sUlLj7Oy,|(c6?lҷs8>դO5F>yNMl?Sm^)mo-wf{xڿdd^H*!:$<ns={-x2KBX~Ϙm̋X?-8,drNMFB׮/ >aФ_nB,ۧ\._xƉAY5NF18ڨqF5j884#e,R\f,ǵ
j>ǌnKn2LP{[цud}(^qE
"}A^ {.µEB>N",Oұ/UazRݽld#k0s673^!ؐeys桯&%nG
)FM &36c9L7b]y9<S5LV]Rj:T/h8ķԷ.:0F`2zɗZ1v3|)|<$mV>%f\zr>{+ű%uTA9|H Wކ3ЁջKK1tE+Re;0d2N.XGYԐ]*SLmW]jըQ.5S^_7o}Bƭطaq;.dXf@q?pB왿^fT w{3ԫ5w
39ǝ{<wzQ!PZ?DTo3SƩ(.e59Fw)h-+b#uRi]0pDXVӀ,ӹn=.z&}KM83jb.]~CUk2:C: l]췩6S"Ph,[z륮fU2eﺔE
D,})!Snԏ
wާUlWe;Iv̈́_1	1CVRRRRf-CbfpcT?v?Sc7&khTWG_|RUg?PK
   xs[{
;  W&  %   de/cardcontact/scdp/gp/GPSystem.classYxu/j@kɰB<$$$$?$!Ђ@ 	aAl쎤z W햒4vnbj׭];n\₀$$n8'M}IwKkh%,|̙;?o]bs[`e"508B
CGCp*4KP:tgx4somJ~1h4"D<
gHpal<6(<	DY|yc 7vI#Q9#ئq(=T4>o1ˈoOxた ZvyP.޺w[b
Kt# P=zSZ֙41U"KuTaHEPL`1wm@u@Uk%mu:VI[=wwwuKҸƭ--Ҹ^:4lXR`zFc؃MܓhЬ
}Dc醖`ې>bayM
s
NfHX:ڰEhȘ$޽j8؆q0
؎:u.3UKJcTqkMTbֱáḧ
+)X3zk֯4ܢJP1HJ.q+nQjM*Mfʗ~A`D1d&{qP_MT**!:*R]j
C8#Bf(8֒i;3ěEaq$0uEmhnW:P7^L2id4duűid#oRJv4nrGtMb(JݯOÜӋ_Ao2bjza;t܉_4Y&vɩ3f->Z0OW4|4S81BdWTO+H?.H>\$Xv
:/^܋4OSR0^Kɘ²%KP(cܞ5	j6^`Et&`,;C7X'oIBxfZx$mg-
6p6	28r_@uYeT%U:aw榭j}!Di0ţx\3;oAuTk}L='^<dtkGC58RdUp7Gz qͧu	,1Pf_43Ļt&0E7meLcRuK>'sh6gdHs:XvQT'H PfEb-jTYGb:(%XzAkp/xI{8TJl
2)s3+5
p2fl![PƃQGgHcx8+!PV˲oiW";Ɇ;H(enu|Ks6aTu|gB߄lo3
:
v,Ǟ6?Gk/iߵƯfɓ:~s?*]RYf:7{Th\Höڻ{]lFmm%<2R*B|P+sU/PgNhfl<,s"v6Mpl;\5R82	YbT"0{X(6Pq8MeDùNh?6-V1`J	9a1'׹i
ӓZh@6FUՀM'Hf63Aҙ1)l}F*&+XH	9k>,;<93sm:̑u(LMZszCJCR3\zbRAR"9ՄK+xGy}Rǹ` 2~2mJTLJGV7앬$RBj7x=ܩ>F6@ 79}'0AJmRTH
9~
$!k>Hi}&w(%"+n-h@&?8bX</l
:*p~i
4'#1#͞&q$|_'|;u36e
뉲[v2,ky07RF̓k4Y
&vLPJg§9{3Oۼ/77>]ǫյ<5!ZVtskcN :h{֧]BQ<:PZ[ ]B糨8J۶̷ܴ՘|j֐o[kڮnt,F/Vc/n@`܂Qn8v0w_@P<7ip֢tE÷񴽤[yd:l269]c,oTR7jlt~ght]$'OJdǰ{:esԎ6
!ԝS7
K,EJbs"1׆8jr3ɌtRaXe16Ơ[<QB\ex-W|8s$9$/21wO-r$~sJ-ޜ^^^Z|4Qm;U:9 |\E|srNG^cՖYDJK֍ahrOKo>K2/ `ºOab1|Q{^?FƯ]:
.V&;igO+460ngO3p+. n0gY]^@÷ #MI6'-+pD,W
أu;_8A9(7#wpM,P!-߀[ý诰N1BIB~|8{lrd̵8JR!M+=D_P.~rѓӌ-؆'enEU5T%،or8=qb?@٤Ib:kSTg--d݌fPڌ͢":~W{LyW	XeX.p-σorFV2)2o9a@ꚬ\iw;XV
c)Gs?A-k_=mn&MTv^Jx?E|?]xS666<Ex=6Yx
W_`Ns>ۜ|.?<5J(]]FdםǮtjN3::BS̓p"X,!Ҥ-!>ݣ[{|Fݯ?'NүIcxү?'/Rw QOQt9\0ϊX\~%nXb؞0X\X$|,XbZF,:O3yz6X}V!.Vw%VS:<&V)р|IKb^؀F.U<XgEwZRYTrm/vum{mSE-m:5 NlRI^~FŤ%a%n*=T{T$u2VS1xRkǃr<"`-_1f)V"Hã4q&N?7͓t.hL
L
,3@X9?/p.xeU,*۱@۩|t9iiiũIUr)!Dy!\-`~x
`f8-!?+pz~BO#[<ȋmȋmȋmȋmWېK&C^X r=l
xY:1>1ͩJD18*yU\ecsKJgX2d;ETJ.\O8y5{&mE:kІp	_yH~Iw:s9My\w=Nu)偣Q[U{ͯS.'un.q{(UQ ƴ\mA1^
$E`ؤRY2;-Qs~y'Mԟ&	V4x@wت>jn]tSPK
   xs[I$  S  '   de/cardcontact/scdp/gp/ByteString.class\x~d@,r "A(ʒ,d!
PTmUB-ck1EkUm7oZ.{̞ԧ>awg9|}}g^:q0)F  
+[cuu
Mdu"֘*T?uъ)XC,5C,,rlEP`HM:7"թduMcͩhe*kX/`Mk  z"_ ONZ\iX_6RD1Qӭ[`P[ϲsTGSxC `:+0mՑx`muuњH`]SC{Sg ]1rED1HM$	Payۚ	\ 6\H.uk C1Aǈ,:룩9u$U82cLuq0%н&.8o&RT`'k0BeFsA"uMQA6	6&1	LMX]xVbh(TˣŜ'*4ZWcZYq<15L~Zq5tDa#;icV1G`@;Ru/nIڽ1HF3.tVͶ1W`p[ˢļx>ҖnBj.w8 eA-&ޅOnX"Tl#T-HC*;Cf.	b1*iD|󬤷[4%zM
X}T4R%L
`9Vب
bU^\ސ:KM3
8@;@B!Ykj
ԼյM$!O:;XKH*0f|ƽԀN.r];H2Z2DڨȮ&r;gq#Y9*7E룤 A(SԉnSVuhbqt},JBڷ wHIΙ,d8X'JSNARml5G͸B+B5C`GNF >]\D`2x3M 9
Qc.1A\zF5K+HD%	
鴃;I଴ꛒ*T3h%|V6Qb>ĭ͆j(,~ѕs{w`/2zyS..mHa̯XI^P&z[EWl&=6	\:^yf|@_^|	L1~53\jôc,d[HZ.,4k{j#5uҍ

Sr_	~|ľ6#Pԭ]Jv33><HX.I]O^bRoR'd!v:=?'NO q_ sT.[oێ
:O|NN_. 
<$0<MQX l_.N<gl|Sӳid+VLDϲIE4Gs"9:s.P3oE/|$Y;I*CZN.eoK7^l0Uk'$rbѺYRd>i'O:+t(	(<yd%@gYt( *2;?&_΄Kw
ܫ.djCTzYV&
RĨ Uo|v<^4G4͍xqR#5*ej5/ڎ*D*).</ҶTVvZ7OY}Cy\޵
s
7$=2'IYMgWKe*>\0e*<+fsx?+a"H[]c|kH&N(`DJ:">e|"BA:˧DwVo2ٱVtyLhEO$eR-B$E+֑04F&
~"Lhc;y 19qnc"<$%]
09lZE8<(FekyaPvYD墠-P`^8Y.oQԪRƺfyqBPL5Mx19(J+OYг珜$o1-(۪iof04s$>T9:t
yB[\eb>3Hl{Ii4UerX(	'ol0YՙW0'%buuгpKhD]JLu
߬9eeXɞgU-ƜE`Eory9pĚtH,g+kU55AttFYfڮ'"d4-#JK%Bnݗe҅}~OpˬD#;!Le//+9kQ5âH=8Dhb屆Dګ"\ ϽV6ƄkD^!I4U&
%Xy&)9d(?] v<;c6.I[5B(]s:(5Sd;@!HHy&:BXâ[9 AVImz
U'mW۬ƒe
1xFwFϙ6ڗdx&J\;Y"UX/`TSi>$*yO\
nH^M]Nqg[ 70Tv]"^/h)e55A	Ec6!hM
Ųu8I'IKY3n&-BfgB`L2tU*:eU,ǛaMҩ2)-++Kxd-L$
(̾Go٢3[Dr:!ޮg| ELk6&c[ٓꈉzƥJH2fuަ|N#D4mCA#{RUhqcU}+kSW7gX*UPCVIÄ3ywdI1BYmmX.PY K	_"_yMmF"ΰcZȾP/8}+;]+-2sn/Яʨk ]+AKUE#ڙ^]=\Tƛy1{d<xCqd  >1Y>O?R^4>1޼?;Ehx|cS㩟vdݸ:tbN2Ns*HM:V+q@8S1]tMQn1.EǦhBh62p^W+	!p`0[_8Au7^!"Ay,㼑+2/ʌWg'yY8,-M|'9;A~Oe+ϦJ(u؏kl&|qnOqq5ͭv;rW==8}Z^Tja pOI9s;z->1\J(?k8y`()~_J>V\.?y3xdy9f>h[W_r T/u۷u=⶯rgVtkz^"Ղn:ի0s-ɃHC^M4l=LY<~?`NUb(E%R44Uje(@cDq	c%jy,qΓL	A36s+96	W8"OsD\-1׋Bcq.n91pX;;D%_V;as >cJoEEOq5z#>MK3׈k
Yzq4$Q%n[&v1k9ur[dcU*_6/rͲ꧓}rn=P'F=/n_P[Ny6qr<qȑcӒda=UfQV|rјQcGyXO]
,ol{,,*dw(=.gi޴;󦭲t(]"@:>05aXa;^q1u$UiwZ{Ha1-cۦKog_qqޭQ>@q_}LN'uw#'nu?qx?tD͖nRDU[$LI{@<+Vܼ|$=in1Q^@^[? nKpehvj3KE=$ۦda9\_ g<=1Gc荕"DDI_Iw+(їiB]OX&Zja<}+?e+kqМg]hZȀڧUu<[nzrҰzr8zU=Q׍N
kBӟf⬰G=1lkKv٢Nû3ݩ!,C+FCNC80ǉ98?W\rQZFPH 
.WQOe_Ȕ1X<@Jq>>"ڔ^צ6Ńg<.FYҦ44BcoC|AF_x3=2vF&0uRTG/>G<NF?V'o?:Swm&"7dȿEy<5'Nn!mjg~g!?2`2C\w>ҙz3Jgz+ M@s
BCqJ8i[tsZ)/K,F
j9W)tIBkMB&zMm3Dz(lgyX ܜyp+ƈPʜa.Rq'ֈ{CBܫY.^CӬi4FѪ|e V+|z<'{)\`@)"Ѓ.XUJlCH[foax)Pihx<HPFzţ16y8@`Z3bj
j
j
j1sP4 b =M]$
6|*ٺ.?$`	9^V|K]w֓N[tT8`'EWy6<s#$^@/aCKť{WQY՗2-`
F'S
,!Khڵ>!{Tc8~R\=N#ArOg<z#]Г][TfIoqi8~I8JUqLMMMKD|3?"{R˗m(MZȝ%"i|%Hhr$ ]fx3c?(?8Xfgh#Z=~9%qLZ=gPH'd6N_{zlȦȠgC:|_ZϷdJ~^[^/v*]5rctC<a7!4Y6fAAAAfDBϰ-'H'POFiǴV+&͋o+s(Q!z#3x^@ځzj{Y9:9ŧԖ~˓;P
e6:!Q0&PIdje
S1ʘbc:J󩕙X`b-b-b-b-_d|Ihӆ6zP4/{W䦖\%e;UkS[5L4v57/QwZ`OYnEĪKpֻֻe
Zow%jU+K5W2qiwiwiwiyFCp*  };Z	t`&	&&gR%#ND'x/T_~?yHr|>Cdz#>6hK
o1k~
-4444=,ymh(o_6]!=r+ż{0?{0? ği=iey4`v=mf=;#u<xIr҃v,)
;YΖ[Du;QN54EĸQ4{hu7Z㳸Ÿm	#G4iϽB\'^*]|G~23p<@2c)̞ǔoK|Y[.HLwS3۽m?q2qcqmGf*2Cdqh-,,,,jf%}Wd_EF2*SbAۇ}grNȟx<EcM",a<%9ȷ3____:%(AxN9|OٓKەdՊK_jWk1)&cU?Rר0)FdML1Ψfhighighigh]Oֺ"Oq~.H2ja0NrInܖۖ6V	#O?`imQəs9jHVWrOQ!CB}QM9B9CQ$7B	实Cyjvܼ$wNoܓlj9LQ8Ɣ[=d'|Ϙgǥ? 1$W_c
7
&M[?ǂ݄ɤZJ,Z_j}YeO85'Xvm&ViR
XkIvUAgqLy{+;Cŏ/H	c;UzV&۹ɋ48O1SaC7ۙȄehMynyszǍ9f/ý1f_L0Ts 75fԚCvq97V0#ܥrV]Z)wi\)eNwb*ܸ;#WOvv]w:+=κ`FOx2
(ِ29[+
;xOG^QK=*쟗'ݘdym6<ͰgWȩ;M*8%d^oNDoy9T3KQhNùtL7g"|3QiBĜs597s>]pd~s!ZExѬy
s#Cts/`rZGkwnUɰһ)e~8O,wrNbz6
sϔ3zmr^WNi9S9SiK]$'fH<Ӝ["o}CL8J?`)GSx:9ݦtŷ'˨^MPd}ct
XdnDYy}و	n
Of^ͭZŸH6+QOW_J~E+IǴV+ s"bkd+ٲ8T𴠫ur
oUheMwlg\F:׾$"Sj25Z2ul^OQN#C:|\
7Y=0eҐ#aǎv0
}Z><Y!!K.dmJ>xw}<Y%Hz$Cx1dLlQ1鋖5ՐuPc[^Yfl9N$WՊ+ͼ:^N7hsM^_s?-Լf bh4BcuoA<j>'̧q|O[#x|Q鴑TQ,
y깒jQݣZGcܛFiF/j=ԇ=u)z2x[!֍wr{VE=?!z]̫[EL>+YLsH_g =\l!%I"KLy%
v,7u*o14ϩ70|A|+_RaGB)įE&=|R½,}W"WR%\9حձ[cV&ꪣ^=1uV.19A٘2K:lqT}@]`GT+i|en򯪂B\i5h5I	1Uqؒ~j֧4[tqcuIC0ӁN`yɩ,#\]]]q
GS0Hl1/܎տ'm!
Zڳ+u@ZZ!VO1EiC-XRF%g?Jk-/<iNZ+CS;([`U9([3]]]][ŝŝә=P)w*ŝFqS(.Yk'o5^0Rkhwᝓbbe`KcWe7V1.~VRNT
.&2e-k).Z2cJЕ+5BWzt;#_MD)݂1 `9SF
Au!F@Hǯ?>'SHLiRmv;;)O?GYUݚ*&Mڞ2ݻZsX91Fʓ1TVvԫyI+6R%!]8%/G`1\x?0C9E@9I\púp݄l}qJ[qr`nڋjNĬ}h˭{l}	WYqehݧfdDd=tV
[uFhg?c>l`[D+HKWÇE[DGNw;[
2wtz(]؂0UǓ&-Jn8U4b&/T-cs`nm?7}lϦA-8U,nwIm7`+x@o - 
 XɧPo=Fb=mz7XG6n^^<`}Z!Y95~5޵oaf*_6>:pFG=Z+,Y)~ؖmꮾrn9T_?Qe7pesүPbj]W
ʪEy>j%VVzU^%VUV9ĥO̼*WQWT*۩rj)x	{FdL7@nuB~	mG>6rPK
   xs[CC    :   de/cardcontact/scdp/gp/GPXMLApplicationProfileParser.classSNAv-X/E¢rEL`U$Nǲ]f|}@2̙|_ B	̢)|]:؉D=t|s{U$Cjxad>ǝ]GBaT5OƷt++0dxœM*zqTcҥ<:~s"crZ(,CqU:O]N'^=$^Đ;+h+E\o*CF(-%wKB?<`HS<pԼϤn:op;;YEas!TדeiWG/Uݫ{g.rլIF"Y	ręw\j\#3|{DwǧE!Z_%iFX{' 1Uq'EeV(Yzvg}Lՠ\uNitC O4[
G`u(r0qÒB5uH횳0QL!];CEπ\-|A_oV6Vkh3h\C*X$-O0IgPh9zm	EaMJj3hCI$& zϙPK
   ys[&nJ  {  &   de/cardcontact/scdp/gp/GPTLV_DGI.classoTǿv~'k]`L+u]PMj*4Uj0N'xa$^0$D%w&i[s>s| z"RHes7c׋[c?j
FͻNe{U?㏸w֪= 'p]w?(a 7pbw^r7x4FC.FN}Kx),J|
pڎ#?ܬ\"N
?@
_}{G#	j;3uzn&qAc}ONUER&:B((.b,IY3#rX21A-֭a_
tPn+S=7蹑ӊrtSW#}6SLb)EzDHIoLRs1gY ȓ>5庢. {0۬#3~h!#rv9?_fg~C}XzDi\dKXF

q\śj#D2#6+2̀s@Cf9c)WѧVk܋9=A*州"e#Pu
XՀgd@TXaFh6ț?xO\Upyvkz
iݦef=6S6پ٦ilJu	9ȶnj7;lY>UliZRnB&MX b5xz-j05u+4jޙDZlyS7[j֟.表q̽n^ū.mfJLQLuoPK
   xs[p`j  _4  $   de/cardcontact/scdp/gp/GPScp03.class[	|TչN&1a1$E.%ę	[V).hE[nnKjk֥Z۾}]l>ν3Y'>~=wG.?	/cV]4ESl$Dcumuh]i=LZ	Ax2=Sன]]
ML*$9AiF1g-HuDIAmIV&FL0*Ǧڬ0I0Qg7YZj+j%v+]bm#r^01^鈨5j8Րl"b&pD5h$LF2
]hL7q"j*nHm'͑L455+(I[t9N5-.Iյfd[}jfYm$u#6ءD!nE7Yd쏪ydk	ִժU?hEpj?%PMo̦8
n#(%7^63ʢ+"Yr HqMfe,:Y&F-z`@`rA-or߈fquFT[S*KKbKL`hV:cT[@r+p.m=d.h+
2k*#txcM\j7ǣd2𸼎zDumH3nH;
rhZpE3"L9x$nj3k/hmsV]JwēDyV3X
+"(b,&:5ES;L<L1$7p$
=]D@KAw\_-Do7lS>6\;*A&Y0#"h$&m#cD?c؆l{:!n*h`!zxռ5juPo2T\* SCieW21Uaq51pimEK/ӑmT';f8xP{`Fw)'B}M&n^C]ik]&nՋ?mH=jjtƺ[P
h2K^x~܉2q7>؎B#.k~Z:YɃ؄)=`㈔fN+ņ<v<d_Jc%_6|U0 mY+'%
R%	
˹^EM<r2f"sa܇ǘDQKԏ6pP!Ay4[Xm*8>í><)
47`^Oi
we`HGVox2naTaW8Rx^-raE])Ji)mH&rѽ3B-Yбjb'8d{ʷdSy~WT*E0?yaꝩkZxJ!2:xbbڬ~T;HPc`覦xg;@ˤҽϮ9'7[»L:|b_o4kXf=vĿtlK/Uïx1[04Uс3ZԬ'pNS%hO&T| lT̊LpLZR\k=p_<:k%}|iW$api4h>*iaynY11%nےCVr $Eyb.)T$
]v~55#Ji(Ҕ9Kk;+
=i*G̗V9Oj+X 7xUT>HVL.BU2Va\&<D0GU2h$+gD{.!@}2ȳH1dD:;VA7{0~LU&ࣺksd9Ag
9uX*͟t:6.3L)3N3PHhMsG)-mԻMac/r)sAE$w<'KSu)tL6cV]~QSBRoʡ.\@+z!gr)g+ezm<{S/5e֮h{C-K@v-t/Eڱ,R$'MY"-6aSӨkaM:lFm]<J0
2foɊ	Fr>0%s̕Rũ֬vDP<m2sŸVݻLXg^ƒ	ǲVz*53ɶǩ!x;jcFcJwEpOO,t>G֯ALnUAnxA\IToX`|<ҼuPxMK#8yҙKjZL?z=`GRC| ُ	B6K{za}t\59"Cւ#ҽ
]IM_bV?|T2D
G`)!m\C?-{{JxݱXTg-eOaNnc]w1+X#Q)R&]	n퉲ÐfliGP^8x2<%q`)rQmY#dP(է)fx3vt
L!Յ!u4L2QLS4~ܢyteo+)&zw9:ABIOt@3BI	;fT6>r?TU|3`NTXAX@wgw.Yn^ӰJoX
Cw^H1X}L'"UIEk+Ua:IS,HR+۞eFɷmyސzxƓS,ʂxUwLE֒JmG>W2oY4Ex֪ɋ<DxYxe%9jłבZZuM{)g|]}Ԇ`.ki+++yf|5V\Լle׉Xj.+M;VI9XcH:2\OuNYLA+TC~,44)ݨM)`4jY撵|@>{G-(mӮ{fi`n;D
	woIۚ!3 J=ƩFd@(FJHċ1KcŤ0mrDzv𪹉{᫘rSgUxa!OS1w{!<LZ{<scEKp"zSmн
h(Q 6t(bI㡀R{mQ%S?OYQ;%Jq!kG=v|Sh|
!!_ucA	,r at58ίT{UY7>Fz_7Wl܇ 9nza5Pqh}8N}Qw ;n}<zW"5s}̯SSe>5sN=-V|j\Aíw$gݤ(wk.X*&"=;~9h
:0*@9+kxܙ<lܒ8b|؝bTӤY6^}M~^]l>;)TCy4f!i؆8rX>i7y7Wiџa'~p7XɸUf32{wRe%wQ%؟_{;yyK7oAyDOݹ4Ũd
Ð.e*jl{V&"lco|\Y{]wQ-cGLy1K~S}viP'ۧ-x
L3JC2j|p!׾x޶%g`-ZoSB7QBހI^
u[?'m-m/ǱO^~o^vfۍꢃx9dL|kkurA0T|o
OB G>ڍѨϪ?:
3ߤ}R^ęxtb^:x\:>U:ުާKgϭ{7p]e'oaEe,rɲt>8Enݤ_r$<9Tn(KQ9#ʍ2rFWj۩{
Ge7~~τtWng$Phv$̲2v(CiUJJˮMG7n{L7S*<"phtcY&,&n(j;6xs!@/v2RV{cGdZJG7A$0S˃R*?"UkEA{VJUJ*P4ڋGeBj?䵁ʧPL9(BԄՁ@E		Tw˜18=[N'	
ǡv>ҥ!-0~]N1>blZ1GD~B'^޻	_r2AKi֪ M.[w9XD9_р~
#CƟ~"zayWw>qӉ{5[u3/H1^-g˻2Z<R.RH̔1 Y($+e&쒩rLd<*r2K^LgrN'RY**壮J5S]g ]Mrk1KLr9eje_!W]_EX3^eJAK]jF`=2	UrOeyҾO>G;ztsy|LX^1."#AJ7&3)썢WqNɷd(=-_XL	>L'L\MNcF^}UT|`\`u':u<Bt-N`u(=F1SJ;c?`$ʇ't#t\w1:CFReȣsCZ4:;
if=x.6cN>rUx{/ʔܕT<Sx#}YEkPbnTf srŞs[9Ş}[8^k] T_!q\7q'R"N/s!z +j"CD|+I"Do#;x< <lsLqLz8_q f"lUGE-_γ/R	=I0^w1']|Y|&1)TE3fH}kTHO&'KSy\7^Ol1<zFe;L#K~7ț PK
   xs[:  i=  (   de/cardcontact/scdp/gp/Application.class[|Օo^LIQ$!%ʛh huH&ad2g&V>Vk"JkEFVPk[jn]wuAd֍?ܹ}s9w3<I |p[+tu7'Xű
l[&ѝkտbkk/SDtkZ
?L}X(%keҩ\-Wmk쮛ݝLrtJZQ&Auѧ:OQZ(C&5}>􄐅
mMݹ`PS=_FY1@{,k񌠪i:XAI&S٢iUmTe*\g3WƲ=6>8ƇJ0Y0qSFOI&ޝf2iJ֤%cκ\&<jE Sp[i)'Hff:篋WZTkW.DJ .PZ0%!rl١,rJ3Pǳ6|89>1
-}0&NCtSʮ>tGenSwV!8ɘ#(ϭˤ/u/(8w8'8u-I]*>"?`X5~IO<W98C.\aX(?kne<;H$Max?͸XByrq{-n[j$ZC?sr_9qb#D*"p
}XPXV
;b]{\i;\[aBA0ȇ;1k&(s=yr`F=J*715~Tq^&Xjj#RQ#nKr iG)Xo!.*EN'J᫫V:CvFxg< 2ؠKݧ0,le3tn&!GA^N1,!0qs0ӵ6Ys1o&>-\%}	\g6$u	TiFl.eXZ:x}nw{ 3mJq{t5OiJ
hp-@R@㫏emq/YWh\<,ɟ7b+
gu˵᫂CG[O&TתqT*$z2q=!g7`uo(&PAӖ7IkYu1ϫVwr)#-5pc""ۡD(G̶xe¶'<Mw,܍{o~O&C2ӆt|wqI*$Kc~>mA-hJ0b{xnl*lU
Q	jSk+;t*
3NFJЀ#jA%&Py'i\mU{hM$b&~(h(Rٕf<t7J/ܘgR)Oֈ_9M5Yy;3,O@6(M"X,Lm)4SvǓ~R+<jԬʸMj,7/\ܖ4`"+o3Ou)[m{' öoj4:T[=~,-XqBC<??H]^g
s?\gި$Ox:yɘ(
5T]o
fR]4Œ&<g=ȣXdCN5"D]Ȭ ၎ex*Tk!@|g['O+u@rf)4T>	N/ega
SF`q)l4PUc˛V B"q[lRxucp2Z|LL$OIwdK)4cQtE6tp61x&4F>t}l)p,RF-Zx?-L,82sci)uS*)'f/E+pPCfl)}.Sr])s*T%2mWJG'ծʷ;BϔĐMe3,Uad9[f9c<#Bڲ/d,10s;aJV[Ҩ`{>*e%KUrezR9,SQTZEXB]nɹl벙Q6zWZr{ϚrtmUv8l9ߒ7\ԛG,R]dILVmTh*S3Z҇k7CΧvgx&˗62˙<kz©?
UA_ڼ%8mmj4gӭF0e\Ry~%3ӣnT_nvWFG*H8UBh07vSy}:gڥ6\d1r>߸'&;ٷmcjp#	kKKc
,y/2U-~Kaj>l}^"ptaMgb=\JלZSsMg@H}Ij7.+	uht3<z8s3,7|/&轺B:t3V&s WZN?M*2'u2u)qTۛvKIfnPTd4f%]dSǴ^=:?3ʩOI?)9)y1*{mLWhCWLZ,)RkiE :r4iӅQ@P@k'_)/"j5v"ϑcvړ-sy^~쓟2~
gʤuM	3^tI,՞gT=~31`S,gL/Z	&&ܬYUr\imO.XKᒫr]|S+dճ)?4Oګ1Y ֦so;nd/S^t.(+8:z՗wݑ_En]3/Id8a2&S^٘-L 4_L_-j'CNS=ɤ)_rJqVLX\2SI5ׂ3v]BxӤK>SLJv,Zž47ܾu`>W9Y&|msT<Ӥ8[>yC
I0Y ^NYJ<O\1gD,Sr#g9Dgs#ч Qy>߯I9Ӏ(ܘ?N@)frY^^D.dA-ߨwPdga)j(rI=~-Nfh.L	E]8BU;V!q˨r`1%]BIϢLRl{Y jLI1U6eSe\ȧ([PCr%niNQ
*i˹/SbzNָ5fk=ٻP]{1zNC/׆"5.مS[G,p%3|=PWc9&q_:[XE#^{Jz3ˋfS+X΋F`YUEM[@MQ<m=(ɢiǱ>\t`B>#k1m<8
|q'cMi
dyd܆
6.=،pvc~\WiƟq
ćk%/\'Lŗ|EN
҈	_sp2zls˝,VL"ƺj)n) Kq|HJ\-װW#x5>̐#	c&	SkYǱ<]hoևvi[W;a{6.C3MZQ\~->Sc+q@S/uw#qjmڅ땻5{_^ԈWl1tr=̪P!6_6ŖӞ=ɞfVUЧl{gAlGeGC ZYJ52P>RF,ϏXr]aw/ʯÞ^`ԗF,Wv_8)	FLWx3&m8y/4Q'qO	<<<rD)3\q#^­xˣ/қ؏r8xo#߾K,g}7g!;x@Hn98dK#|T覔⹱xS#K)w?qnF*lҔ駜&JR㿄#E)gWkR::+ AM>l1:I>, c|X.RF0ģ+snt~Mjzu7OAE{QZ
Xu(W]pFKրN
·ٰ5Cm,FJbbY,{ް/"Vk8%"LUJ9es$See4Vq8_ƣwLfDLJqx@ǃRG%R/ߐɉkm"0':0Ay3aF%
Qa-lyQk07	=~J0
 6i ]Ó5t:
RWL#DdT6- V`cpD۹86螦Aj3$wFxKbڦR;
]A@.|cEekAuh'TMc@U{KEx*u/ڧU{Ѱ8܌#ft7uA-H1f+L=I__Cu1#=fQ'%zR?ÏڈYvnlɎCk!0e1Oa	Fə--ĀI
'˱PV+q r.HvN$>Y{x&O%xKoLl{!ft!,1'Wpe
}+<Jyq{ܷGŕMݷ4|}|NJ, M=#U28˝$h0'<!wP߁>=m٫qچy Af?2bCq99Æ2m?[AG<t=VO~3LZԫb̾l}8bG/X!Tz'zǀˈ7~B/gO` 7]mA6<|J.QܪUo[t+ڧ*}TS;0!4+*$}LU
)m]宐U
	*q::GaL*g-]ˣ^o}X)0FG*#omQG[<.	.		CZ^xԫdƇz1:\~seazFpi
dLèȨ
Hej@dLGZQף.ĥ(lo!G0E莰*>0t];vIT1'OrmbL[udn|xsq] *d[5n_M
+e;ʝHʷq໸^Cds?sqydGW|>q~)d<-+9Je|Re"ɫtVyYMyT~+?9%w4*=c8N7r'sXc4L=FqQfe]cԬxie#w#lD;C&ˌ.֘.zZe+{.[%ehN{r?V[`]rZk|9F.ɃlhHwHZ4V8%n6
Kto|˖ͷ>jfm*1ۓkaͷ-&#ϷRq^n ibsA+٥>0^p|0y<F_:7 sLyC0F]1!~HP!s@0vOҪ&wN/[jH*0sΈ[_4O&agD	?"
9q	MQs#އfh[퓓z|?ScLc"ʌJj0M0bQYFh6f`1YH)$\1s
}3o~
G	#Sؤ]+c&>1G	c9r	M83STU Mvަ4sTd]3p7xjN|="<3``?hx.
%|-^_RP:YsF;IC(AA`d/&앑
.Frjl
L5U|.,3/3|>>~l4fd!J
&Yi4c)gcq8XJ,3Vc5:[
&F;n0vc=vILZKsF^66uc~ol_Dm\!%ƕ26>#Wc1%eR3',8O)#t.Z	LAlko_9$4a):E$eUvU`e鑲PӪAӪgXM,PQB6DM%(
dSX5"_㧲*++=Dx
N0͹
;D`}ܢ9#H,v2	:$íT!gF<P7DhNrxx
	-'3liE|E}Ė|D0tKTnqD ?==ψNl.A|Baa,rq36~o5F chś"n*W nj01L2]+hQgN$bsAL#qq[݊D539T%7S>K2Hkkkk .}U-oW%@KOnIzaɯV UW),ٌqTe"k<X&_ot4/kGb:&o5ћZnKT0t[ػ9g8Ҁpa1缌Z!)h8rQexQ^U([?K
iwbƌh>ۀ"滔GVa{u~a$Ͽb>7`q YuAŎf&iDS= B](xF~'ERg~k~J?ߔuE~'w?PK
   xs[Bie  ,C  -   de/cardcontact/scdp/gp/GPSecurityDomain.class\xT~33398A$@4Q[0ܩ09afVkzXTۮnkme{[]Z$93Ʌyx?{gu䩃 V<&|N룑tG4FL#Uߙ_bA*E#X2!KĲ
<5@DB,ah]XvHx3ьeF$SvBgtw,jwƓ#T<ݒL/=۝T\)
LFՉdzf<nwTG2[Q*18U8Apj2Y#ye,otG2t,o,mt:T,SDg}{6Kt6N[8ɘ0x~AynsPT.Lf08x6oƖ%P uhq-eX$kv-wCM;ܐŮ^U'[8SfU&L6	9!LEij1]pQ
,N۾#v̹&v[N&f[Xg8,FX]0U;^0BH&Ӹa]:s.Of'vE2ayh0h|\@*Z;۶ΨiqXIڙga>l$Xv+[l$,=0bnM'w.ȸ/%X]}K;7wvD3TB0O9E.2
ݔLH]u
6X.]Ċ"9#L\RԹ.i=ma%V4],A a\NGv6"N+a&
o9#Q2)v81)|y׎vz㥊#ήv"UXG5aA;uD)y4ڊ4r-giabaܰiwv>ILVo%T$0Ut-LC3Iy"v~hYB'Hь
\!L<mcSۑV6_&,tc'U:	
&!a+^;-fv6vzG,_bgR{	驄X8x>AYF%Vp>DEu8eyp`t{؝s$jJRp{+au?b)M-܂[Ì(+Gm҄M.>r$&ncC0@X7yU=\Ծ:% 4aI x|q2,!"++Q.[O[a럳i	.vcSs")rTXا@sC&g(=m0saO@%%sh+NjHE<fq|QqG$8%!t-*/5_0eDb!x|Rɮ
GӆO cIf:,ڑjC$Y>!NM|?by:d6\a<,i[x[L&
q5C^߱"ƵK,6骱Ta^%j}?C M@XT6
1*jxڴmR	SO-?gJ]lv
 _X>F_Fmf5g@^o,~D9 sgCxSI=߳"jIb>缬ޒt*Q{ě܇i>Ο=L6$BQYxɄ"ߍuG4;aS/YUvoȿYʹ~NMg%X
˰-xaG	E#T4LPvAP	t+x,)˩SpsfN]Reh[p]>oj	^
X:Y&{JNN}Dsʉ$X"F?sҤLۛW2qLT\0/ hzw*SYt@9ÒRC"DrewM;%UR{3GR&u̐mmU:9Ӓr}0|9ے3
=Ý2駆ݼ5Hq2gI4lˎi!׻ o٦I]Crԩ˙2; Fc8eV@]lYJaaRIP362ԋ,XAHWv+\@zHq05^dPZ.EmNjH<$+d)X.C/w_mpTcHZeU*KOP<\}Q'- 	
KKxK&ٯv{E.$"'e :xv_7ELǦHgHJtZUb"'N=;LeFET͗ ;WDPgԒ
!6iksO)a)]zij\D̝{3Ϥ0Gr.*S99w19AIfzk"\Covk9 wM[-D5><!rl(%"2DX$Iwrcv;0#
F흋vy2&!P/THt(\dL=WoF&W))'
Jh:X7Dn9$s!OI9%L/%D]w&t)O$UFH-ҢsK+m_|PK9T%nQt8tJir)2U<\pP@ư"$ii$/͊HZv;a&!?ڻμݚ7AZtv/0,wwܭ^\w$
VU7vHeʢαHhՐgEE
өXcȧq-W4U_YxC9@prG	t-Ku4D
{Bs4)gt"tƵX>w|3Ut;plGv>2X`0+*ǗQU@Gr]gur2}+1.Sk;y9#48[Uݬr)%%Y䑒2qV-^XR)E
0Tٯ?o`3SٗWS2eI٭Ɏh6$oLwP% nRaqD
w{nGgҥDG0D%w(jwӂAS4cY1 !8m8j7#ޒLW+4TK@ҿ&̉0hHLjg,U88_5UZK~WMC{G0>N3`?/GՓdR9!7S4JmU!::dDaPvPj%0=jxBy:3%4BWޕLtiH$ݲ] ٍrU弖u4DJoǻsx~jCj	Wg|4~,|@ȵxޝeDT?׏Z
zܡA\^j
SFrt/UOV{1 o[;i'q`-[bp#RLe8g;ʇÀn]/7h1ʍr|2y5?$(nnt7'>syW`>E=Lں:ofB=u8)\i>T<\<T=Ja,L$
>bə4&P?d4&#;ٻfFv7>cr睌1r|suk^{MqjDTWX6'pc5:2nxz2߇	uUYϠu/*U*/ާѶs +WǪvzCpFx7FMW^N!Pnԇzi(=λQ>}}:{c?h=Ȯ
RPlNl(VzZpY8Ѓ?Jw"r-ɼ~p+vBLǝр{	ObAB}>a܏ {?ȷgǗ4J_Zz+<-|FdXuv7no'm75
?O^Jc-e|F>K.>GJf;O)8	Rl$9l'uv.y
"3&6zIM>2Qie
vvz!i]z*Jg0HO_Zu5k @@P"]aE

d|{gw*"^O7MS5M }&L`>L{LEcaBap?#{ea[ȀaLug.KyM5kqLy^s~W^X ޢ
*xWa,4.@B<d6 n(-TG.PN+2ļE[6<
6¯%Z=ʖ(姜l| e SoB]oʸKye`O`a
G|D&^ǝ<ìvyÎu#aM_c]vcX?`08'=90~NV_a?Ih /B._1 V.cT81LS([.$47hJ9]rS
F90,劌4;RL Y	rN9+IC4vid>{d	+Yr<!mxJViYo݋/*@V7N3]\PV)3[yxeSٯ4|_z5S[f<	_)Z_eK1'4g_ޤ93ԏj(PA6}8J;<Rҏe
s[x&޳{M3gRUK_E_Mx ~-!zFY$3fV6v&}~'q:~5}D{(܋`e6xzq?ݠaOQasI*{+pu ={Lvc'
4¦>pǧmL!=(T9i9
]؀+X<~V6EՒ<@<Jy'#D=M/b<Ɗ˘/O`˕$6W> #+Ϡ[ #</.^4azsiN$K^Ş\_g!BZyox=
uf0sMa>ey-#6(P#mA
4/9By`/@14sޘ,Y6=[ՇSX̓} %Y;)|WY{g<c3TČ-_CrVQO__>=X΁o z*r/P[[$8
zn-B~Sg$_`
ʯq-[7ߓ0dYGmݣ%:-XeХp|r<
0*X*6ᤏTh,?"V
~~<}WH{Np>}3zEì\aSkE93cpRSO8$	|QeM&p` 4|g
#FZ[qv2.#[n3]CeEqئ5#Wj	~MlۀxBrCƶکKn}2/=L9N&>MX$@meQ?V*{d),VEE8x+{d>T6Trzv"ü&2EnRhs9\8PV}N+k2LSAO?Y{d;'\/5|wЅAAAMu=h>L4z\KCi$H*/si/){y}USU^yrӚr]˦aTxTGN>G)EE"M,cr*s|Fu,b;Ac"a1S)iLcXjLjc38[3fa1Wsqq08QB5c7Kc~g,b	2Ze&rR6Vjo:Yalql3.q\eDFTn5b1S4>#}0¸+%moסMClC_ce[;b>&pLb+;^רfJ9cӦ,ƐU\'Q2)s+KPN-K@P.`,܀Ŗ{'{_)[>uLy?k0/DYVG}\?0#mLqԷ1u.gQr:JY+LiP3?W0dWYU.	cP밾hcPncnssA}8T|nu_ΟT6,W7H!0ȕ2.4A`NrRғG\,0uh7zFzMdqq;ƭ6nÍ[n7Qܿ'ɧ5{i͞񵌲*?SIѳC')~gUɌu2p9ir40vC:s}aXHG7G}}K_oa}=W'bF!0PK
   xs[ZY  *  "   de/cardcontact/scdp/gp/GPXML.classYxufX$x+$ے@a1V#ia]+֍N⸍i'Mc;N
M$N4m&ͣmہޙ	Bf̽<?xUbn31RݑD<cD2t;M6nmm#U |4u! py"ObFxHGRd&ܮnΘa.3]G3+tyrJ qjq7ȃAL&-9Z߭ޏ"IyEYĈ&]fzL45蘁c}4??e&T*Am[p̈3h0(\KL47zniY "G(hHm#aR!ˤVt,"^3c-H\rq#?|IJU	͞hlHcf'v"O,
JKW&1ӈ_RT*Kt,2Ǆi9L*
Wu9g_x_,TMZT^C$Rɻ9)c«FX딴i3t҈
{xmmр:wq̹6
5ф3/0yG=%7Ǔ_<#)ό%Uf1ˬ51':1C"fR:g	#^1%*X:n&Gf:m,, f7Cm2gD̖h#LZeI ت]TboCj>ދ#r8i Hu7	hD`S"AZ/o04A7
υ4w]|Nr@ӄEΪ0RzD(v1ȟRs89'
6KueIgeHIv$f\d)ccThdy-lp\Kn/W%rׄ2SAV;.65d
Erƪ9#,
6);2co[)Sf5hDIWs݅E;< ج/]Ȇd2eC7=$I!v_~|9\&uɷ8#+nV\U;)R?>l. [	5)W1̑[8Gt|
2ߤe
ضRRQI	/E	yIds]sDCc7mtSV%K@ :/MѵI×GH	xEF"uqabUhnN6fʏ-ɀO8!I}F52:AtxNؼ8[lRIRj\m<VwFJ	4Dy.ȣuXۆ;lm{J{/
9vx`?8kLg2`ңN.Y~w=#6`x$͕~]Տ1foܼj?~¹
~W6]&?R?ԬhW&7IE+o8*5R[Ιn=e82:mf]Nwx^ga|oqdRt%MP`7`l4dS ,.]%2	%zuʘm;gH8pM5QwaZȶǊwV3ik16K㥰F**=(]zM/*J+%S`vfL7g	ãc-V
';a_W6H9ta;/-/q6s}I/x&%ډV#iCpдl;rGpX\<"PLQ zjI>8GՀa&Wgר3p&6f<Jӭd 2 ᖋ(|J-)!~^X0	0r+-m=ܽ"?1w8+Njڶ.iX{&^f4闉Fo؟#քwXiʝm;+X5)<7DF?wLq3F*#sU)4/3[ݺ+}
;5XBǢr{A{Z(ܞ@{T.Q#	䉫7&%ikFk..fWH_S{ndȅ4nd3EƀыLF̰V3ӗNO	3 zD&t(L^B=$- |B}pdbOZZrnhbьYb\>Օ	2v(0~:CɷPJWFG
6fJ5SfZ݄ Y.8uӚ)} \N D@r_S9.|lUj.p݇D1WzR\ƫnEB^^< w#Lr;E
B~g1Lz.@' mJ4k-P/OL\'E^̙ALUn f
Ata^sX6I	ӷrNjX݄Yء6\fEbp(ӕUsDԙ#fYTl*R6DÁS216e
~}U yУ^:xNBi%S((xK|GQ1U)4^.b7 *q%Ie&kO16z1_a'G(-QnEy)H\ΑR'+C5ZUXH-(9֫,%Eޣr؎hp+wqwSٰacǆ%

SE]䥬IJs},߲s jڪ=GQ_}IJ:Oe]]NĖ-07#JЬtŭJ0|8O`&Og;N&*E̤bsD5FW0])PjR$g}[y4<!_j!44ҰHapQ9mաq!
	SŞ	R2Zbuq$\´:5sʪ2aa*WiK/35}y,;wOsq>ӆ!ŢFC.ʽA\%&
F\x
&3Xp,eQ:e=#\tkfWQKE2g1yMjU8Ze.ǯ(ˬEJUuKm9{7h4iɤuG[u'^Z0Q<K}pWg1]9:Oԟ;б|7}o~3~D/yJTJѯFEIc@zʀZWX[ɰ@bHmu%1-ژ-LC{>}4V-EE8{ޡQǄ
qؐ5+[+QIdy(gsǃxV=(8Le%`B:H/ 
N[N[n繩T[H!N
4d
Q[cČFȼC y囿>'X>-kb"Y'X3*٘TLfRZ,f	cKUƙcX)9ZGT$3zTzTzTzlT&cˈb̌paReߛ)ZfaXF|eWrRZQQQh'?GۻTDWHgUc8R3xx{x?t8tK%7ZC/":?._:0K }Nuod}[0Cle|&}ѾNo3WXcɉ*@\\	ͅIqo]bf{4i1o,fw d:XoSJnoU	ZuF(ODj5I32WޟQ| EZξQ=`>F@dȗ}[g1oRq#N4bxc;\JZh̍
6
rԪꋏ+ۈbؠ,%%2^!QܠBlHSh9
hE1RGxViw)%O~wzF"Otzc:Nw'a=t"0LIt0=T3T6P9ɕYjB!0a:eIӭ";%kUYTZ%6)*)B땊-UyUgq|No흾࿵Wa|Xz`zWB|_A
x!9~^eedcLIUP,1s;C.!eyIp}C=
*:GAbEl!Tn͜'S
PzU*㑅i+b+6VTVYͪTDͬ^}oǻ2gj(U
Q)ŷ)R;񻌜HIߧ?thQTUoB9	Blc-@Mre!SH%du?gJe]:iWe5c9ojKj+7#<PWWF~Ŏ~//~R>[b) Y..]n#4h8p.5Ai8ѰT4jX*6U;ED5MmwkL])i1XGPK
   xs[    (   de/cardcontact/scdp/gp/GPScpKeySet.classV[oWNlǎYc$j\0
\8
uw׹^U"J"(}CDGՖ~^B1DwϜٙ33\c GMuTB>*TRSjk^v9oQ'JĔ㺡;'xssZI'Jh0L'1!IJ2P튡9iDņ0I`w
9Z`ɲi9eZɬ+.F!s,(dRa2V^9i[˗Ӆrzoy
F[V"оG/3Va`RjEI'K)0̾N\NGш;K \Nf
h-	졍iLm5$lat0m5%DEO`\~O/Zʴ4z;R
:%s&-s
	_kT
Xpi98ɲ[14Q[՘V5qHa*Z>稂cU,Fц>h`./(Z\eRX3vmFҚ5_vtNjtLHYf(??s+Sw}@ Ϯ}hMݶػ:sҐZtDq08HVڒLT#좂,FXfjQr\hsMw&Iَj86Mx%J¨:M{6>;u\-U(0\!G+Һ▥mr䍫}fЙN{ZH)۳fU4y5kx-!
gne:$9l<arƺy
8h܈Z"Ac+eraܦVp䳠u@+jMC?Bvu:ԪtOy^7
3}Lf<G%ն͙KCjlEwO$4VZΤQba̹Aݘ1үjnJ(W|U#_v{4:/GCNwd&OVaK'jI%6dXWa|QjQ*=u7؎Q\ećG^=Ǽ5H=\P=1xٍJU WpkqRTc'oqD%4tǛ%l~l
@`	awH9G$Cb5{ېk
R'h]#? ypHk.}x#w04v?A.w:|Bg	w{r],#LT>F	xCjᖗE|<*h{FB0B?EO4Mڻ}'#>=*1w}G8u]vƛ"zȰp K >eDIB`uLBTu(
PӤԉÀٻ嗖I1	x
rY1p_x
XQJu,\#YgEI}/5ZPK
   xs[0"	  k  "   de/cardcontact/scdp/gp/GPTLV.classX}tSgM-mu+,0>v1͖QhK:Jx\@zonKs:s:DńB[`oԿs<=ޛ4
ip8}yҥ.	N.V&Xh$y$Hhژ_PB}F(6{?hFHZ!DBt`I)PUTb6'
KyJVi&M`d
%4#̸kiWP-PC͌FxRXt$
Rj偟zrB*x7*eZD:Ɍm#uEj]β6j`)cpVjנVذXŵTRDaKϜxI,q-
sJu辶~/c*hXR\b(`K$Cz=lm ZV53
-J	(wFxEAwA7c\އufIIV;3<hfr1-t#pJ17jkLڔΞj $biǨaG񈞒iOR}Z7~dۇ[Ѫb30]z:[l-WA@S)-U;bx-& tV0.P3#tӇn!Cg3hpT܉~Q}{dJ7_},Cȃ\w)ثbRiΐ oC*"/>b?hy~(l-͈rҜ|*H.)_R*F`d5bvo	)ofY*,Iү%FcH(84;YáL뭣Kᰊ#R[vtFަC?i1CLQ*ޕ;9n^jVB#h}?Ӄ
glF:&8nXicbl >VGMܹڭEBW >,eL+2J$QmAYexXsҥ#f겼i#	ȑnm9}5UM&I&|Tȇi9ѪNё!쓚I$G~͌}贆RiUy m5G#4ƴKԑֲ{.^bݤ%XXɿ$oM~Gb
!1ZoA
(RqX({q=ntS4ג%zvPdJDe/yvi)
N)~9N>xz8̱[ 5/#L!5]5yD3+SfJf愖Ng@CM.; Oi
@zrl(K4.8/e^e-%
pɮ:Td)h	7Ѧc@wJ39F9,ϭtrԔAUK,mgzFi賿:a	}Wx5C~WQwG{{͙*~O^>?]oq-Vj	,>G.'KګǯL{pTLnS.b
]r鲩Ēf!8#[*)tY:eh<U'ARPnަVSbZvD#)U:6eh34M됴:*u[ӼS"'hm!
l4A"l/08-BýIokQq?E܅
RiDN_Oïryhp|ոz<^=/1*iuqR3Lw%75|gRlW{>
&PU@mmڪ^m
ٝygiw=Dc
Mrm֝D!b*Ƞ*^/&/bKVUpvkN=yl(r7c~ ;w벧}<jg!<!|""m
;<0]cE1f1f1=[ 0Pb/UIx(KbE0~Q+g|2N86:;E>vy;}&0Ɠ{ws=iv5չ&p7OMp$9;lsQ$KZ3K:i*aeԨXoy19ϯ2q#W܂6'+ÿXMKD+E8ls\O4ʓI_?
s®2~̕<Fd.옏eKX&+++}=
Uny%=ē<&US،{N@+΍t}iuVS/eK5?2
G~PK
   ys[              de/cardcontact/scdp/gp/crypto/ PK
   ys[)    6   de/cardcontact/scdp/gp/crypto/CryptoSmartCardHSM.classY|?K8BQb@ÐðQ8پD@tR[hR
b
mmZߝ$[v$߽};7P
PT3cdҢV(B}PNYPcO2l?
/3uzC	(QSQ
UE9"4j&ʮ5tn+Fz e&nvd7|
T̂_l6Z/eFO@11}^wU:"樘y%AM6m)Xl4
k8ԕ]V&Fj<oya2'J
 )\ҏ*dڪboZ^5aUKkNoMf-Ѣ[VjX\UT]b1xH;PC]=P0)	Tbw˶dz,Qqduѧ-q]vKq:1tkL_fCzGg{aulz|X\'p\t"9`'H[Z"JMxx4 7hrB<o-=Tmj[!pzB7xx)X)P9	 Z;ZL3i!^%p>Md^Zcߊ"B8V)hj0F.:淥9ji^X׵nQ*q@ŤY3h\Ksf:!izpTK[q=9)=CgB\bRis
xy"96MeQEmdC/0M4$a M1hh2Աt=Ӑn[Yuxq u
%3q`g(pߗ
pAB
2HAJ 2ɔ5)Lo>'SiiNIy^7׵mo9E!	K|PsZu^x_O<dlXuwv5jB*N3rx*D7xq
/+:V7w-ZR)R/"_G`nLA}?ޣ⽲sʾõxd ҡQa:MJ2I+鎗 c!&yXEbr D';E&q7	=%t'anק էyY,Z $),|2.MG>@!dku7}3Xp=nYB;jf$؃ϵUmȕsml-I;l={@$pO.O9R=إ^},2xKdč&tW*{@gkukUs}k.6`=SY,Z#l%xǰi̻_^sJ/E9X)]lTYÓ
ˆlg`̽~y7A <<Jك$߇U|_K0ob9mjEhS6>8У봞8wmI4ӐMop<u»x4W)BT8]qVD茩k1|FKe(%4so$NMNTוqo&y;zez+DanjSVL5kmzi3ٗRV_Ѧ&LyT3xi*Уi{=I÷p:SPOw}A%Z
\@p|ztYN)i#xnaw)ϟ͓`@X,I1'T+x]:Rtv[ҊȦ&H$5ƣOqZq4OQ_Vs
5`مQ"0k>t%ͨeU/yp""mmW
|OkF jģPjBsh(ځ
n݋5@yu_3u#8ۻ0~۲D{q=K><j[4Mc9D
Va	Vc)ڸێFter86+*`WAo7?Vs[<A
u+*!{~iQTv׎zY,Πfu%=Y'C17r*
r|%M.l41 CT˔Ck#cYdQlolsU${ATß^Xǿy7#Teß{gڋ5]v
3X='vٍYÄ::`q
gWt;
pROS;1UgL2ߏHйq~W^$8N7 ~!rw,{/qSL+?;+ˢh'f@Iy'Nwa%m_^bzK;d2ea.V^6c'bo#=wwapU6V&wnRs(j>r+lY.%((aofp:'O-dpwC\y<3KPLM-8ф۱w;p	v";Cv܅p79v^<9a܇Q)M
1U{$l>	o&<^qQV#ySuٻO3=+t;;_RhOQ,ɿ,<5\rOo\_dy%ZUC'A)
r=l%6uvę9ST xha%<IV#Þ
0Cg?FQKOHy|!U(.	
0 v<<d4<$c{A~
!<gg<^"XG_LL'D1SQ&+'"%\^sU.W\bcd&<JޠdK
YEPK
   ys[ǭ['  tP  ,   de/cardcontact/scdp/gp/crypto/CryptoBC.class|	|T9ɛLda!]%!``$"V&CI2q2A@}WZ7kKUԀ.j[mkZֽ77f2I&@֛{}{ΛӯMD>RdXd,͑p('BDeg2БUVL_GG2ezˤjjG96
LM!USku&kΊڔGLZ"xl]9_j0M\xZh]5RٔG[|T@
F0
L zlmnO(H]3G*1ʢLå}Mp<*Qdl,YCϚ6/ͭkXg!6	LwLeTi'Y4ux,^>HDc3^@`ۥͱHgi{,QJהEkBζ
*JF6*E2g&d:ښEPs33mE!RM8Α./zu5V5yp9B{is/dq:4uDHsl'"ͣ}TC͵1ImcM$Δo?HAaM'XY1$"qٳӱL5>lZD1L5e_>T9T53s,[ͱyP+x.ZQM^:i,[TWy\u]H~1ӪۛϛbLd8}COle:c;X5YӦM
m\P۔|ej^XW:tVb"!9iL3F;ZcᵥcR:=lKۺ:3	k'Zmjeuu4	: -eE[hӚʚhK=6tJu	SEr(Bgش`|XsWkW'ӈGJiYtؽ5Չі5@Y>cӹtz8GdFe6]H1y;Vi4e	{MeXwU40"^|6]IW1jG{.lHD.xe',m!IhnW,M
}}ƆD

	pLJ73ǭ:-NTg誟Ԣ }eq~=6)7iMwD,#o\jo:tmGA
S&媈Xgcog:BwKcKW;!	tet>I&.^ZJ7L̡[NHZ1dD2㮵~X<uӽ}Ǧ~<k eZSˁGa=dS& cpAk0a}MkUk4,ª]vz\B~\DxGO.4 3*Cn&
UlzТwOthY& {!l]c,\pDS>[H[D\uD:*YE?~aKKׄ:!m3
>)~/89Z46&[ްMzkRʹ
CZJ;~OmVjlz>pիkc8I̋FZZ`m\Ʉ TK~l_gޏF6uK
R[ԜAj3r
jD[Rqܙ&AŚ#0'gQRwD_ش-7>/k~ENg_itT 01; u F j1U/)[ *gOft3;7(W-FpmDt]Dsoks876>B	_ͅ<h;C?ց({	 V
zJ'Mk񨁡h]{8&p	mq)x.f@fDő(6
%,x&!6O^PkWDvPfD(d=bE>x2WX<JF=>2#,	jQM@:y%Rx: `5,g3)g;8 a6J

niE͊FLG~/Pjn]ө
յ5,QpgN\uh3Z.@O]9_acfA3nŮ|[ϒ|"^hsdZBk#:"!ֳP{gs	9|&^M*d
SY-^ꆶ}4'R/AFVW K,*QS.Iu
?$ :CniaA}ZgD	\Fuu]k.g	t讘]pZiCNH
zI-zswԛ
ΛޅSo΄9-=xYn	|N3z%
sg<\`Z] sZK2)Yh%6_ʮ"`G))ɤ_4rAZd4\کW<T$&`McdC.$uFZ#zӂ^FD>zBo>߶k]qQ_+Iڼ[{%(slk;0N-6ߣC^7l ͳv}6pK>%k35U|ցC$µK0#}JMLy[K[6' r楐2no|zO1ˬuR=L+)9P"Tڑe)!3tl1gΡ?kqH?mHs$x>o%{kO)8ILd6/8G)նhkkRG;MҷgP4Q՟~	譣zXYPZ<VeNmlH6Z<R=^- $=H^koIh'1;$xw%14Tқho!xCN #ؼ}{lcZ}S[iDx|'2jD>#O%L
0ƍh%T>td	U
d̉)t>:/a:!e@S9=Ltv2+*ґZp(Av/24hGyT,[yU6MGdxCXg53`RaT>-GU;M΍D:_}`ijLDj6P%N[p:i_`|lwƈyjveā9E:!cKa4k@*XV]wϹSKq,2v@3!vU2FfSNx	Lիq!Dq=!mJFcǀ@ d
"rYpOK^}N-/aRub'dϛ?U
ܵv:%qy7,<w>8}0V4賩 x cJVz#?ly[|9LGs޾~O*=a'S88
#
,I{ \=:R'ŖR$7=gĢ-rzWDN2xX\4[_sV6CLxO	t\|C$H,
!Y]Kٝ[H[^i`jUg&e q ءрp0#۟Α,l^uF@h\[t ^Kb׮EsS~^tvkQs\Qߴ53($r)	s_9;
IP=oŪ[*}i0O98{w?8bJDn4)99
:>j6p1_S+̋tSd>SnM,u4Dkb͝òw|>uA=4W:bk#_v[~7"wCoksXlmWG4DWd
6E`ﯢMv05ct(K$AB:4䗁(=R~ƇV"VcTIa3i!'Rjfc!k;x5Aʣ|wr;ȷ7uYT#9USS>	ϓw;eMz8U>?hSf>2`=ALAolGC鶗LG!wrwQܡ%wД{Zzp즳xXQU-|كI[+(\Nfx_0wP}0;e@v-Cj
zezP(\(W\v{Q#)\naF
&CCOTEa]E%öA6[qF~Uejz4#ẁgu}'(*rCn<x;r(,欍}BtP)/(x@Nt6k92 h&%6=C1r{t#j5ԈkZaBe[KCm;i%uiΠ3\:.Mt>|.GgR	"]AKޣgFgt-gѷx]tM<t+OiKbOt^W.#m=qeeN'PڥiUHz&j2=hjԉZI?S-sN/ΥWe~kz]=NUOYzS@o7m{ 7Wy)ʹRMVjěhViPPΘT@ezNV90tfMZAU%AEl֑h4DIH)K`*("ElZ_"9Ç=|{r+"_)SI7檹lbOe0uIy,@6sE1f}5\(rPרs}Чx<߰~Nǘ#1s1&mޗ
f|ao=@Nz_scx5K[NI__-Bﺒ)(ܳ
b@ [U!l=,z_զ^_c}tckp;mxmli8[̵59bs\\b4smoQ[6orUo	Zg{&s[&ѹQ^0
l2GoЛ{;fCC{0H=--Jh@n`z,ù'y=;_Ft'GΫ_\~,_	  BXUM0OTЇrMrkqZƿ+q8O ߐG[婛GV줿
=}̟σI<6ݽk!C_˶t"Hֈ@nSkILF핁|sw#ґg`q`.@q=_t1F;H^ܩ;xd$Pǖp~F'bluAIP( (<.q
y}
(
W^[w9y<.\yt~.yGҋ\LQ:Dq)Gӿx,}8sO".<	+xWʵ<x:7D+P5LQ'\T>FǪv^NGŋznTgnR2OT7ru+Փ
}>EOUoJR7/9b(cGbcØqPNUe:Kyq2i泌8o2s<Z>߸/4⋍Ɠ|4~6^o[|>_ge7>Ld|[G1|9<ul;̥|y2cp{M|y?`n[Nnˏ~3gP?=K|w?x=3<
C	d~s*/{:8Z~U@?IE9Yi89g 9lpAア5J0vjOyT(7ޢ"U%EjZHy(
x7)tZ:X5Nb`F I2%h
1Rj`qqmW˱Fy ;6IjmOX7FW`DS*07/JP.4o
oݯwZd>K[NG/jZI+TFz
7cbOJۤa'l0+	r!"Z.DD("BDϥ6"z.Jox
s2@D$H,)C4H^CxA"xx
B%ּAh/	>=hm3g4f/qU/)
hqI:TUP"7fS]y+ݰ^T10wrySk9f
MO$D]ߧQ!CT3H5!qN2-)aj3E~Z0o(Täq4Zւy50ۭ`ȕ91f`$ޠGyQ&@|hy6IS{yQϔpq!~>y{81}G9#F<=\T;k
.TDt+U,:Ny3r(l:*.Pt*Lͩ۬u|G|UrV@#C(kM:'h~,(Tr>P
TL',yķ& _[!0*UP%ݒMn&nj5ݮ'%ؙReTIX'yQ`^찇L~N%ꦂBKLs r
 >.4FS`6ib* wjӷJ5	'E'p0f$u)ԥDRq/%he=r\:Mx*PgFK{(עi\.Gƴ||',/GˠAI
5XT^	0W`,oaC@R;Mv:-%\ф8+AU"W`NT +xHDUԍ@yNY
ʻHT$Dbſ:#QFTd8/׿'!'SP畨:
UͨVy5~^jOCVT܎(?w8i~Nuy=*ص
|~ބ{>+_1XO/:^SgjΥwy􁺀.?.u9U0*oG]^u[<կnf(urTwtu7Va^>B}V? l]`⇀j;ޡq#ZqoV*C/%}z8{2DF3FJd]'S:Ec0MJJ*Ć/9@_,l0ry5	h2w[&}uҥ>zg`囵!@du6w|]:+}{9wB7,{4H(nQ_v|*ŅO?uy/aU_e|Z+NAԛo5M}@N>'C}JϪ/m0} _ä/
Fa<İxF6>.5rG~-8aCZR;ݖ6LBoǰVgAy8p&u0x9Plz:yElv-A\Hm??QS|!|IxL_uSnpvk#{tw䧠nA9hiQᩉOtE}+E#,x8	;#?[c<p~MW<_GbKXKក%zrMb5 APW'u#/a,SƘNuToLL
ݘMh36ӕQtq4hTFm71#~jKzh7Eq}d4B81%SbF%
4by.bN-pe\6M,XZ)Rbih֑Z,
6a,!:|	.DF@6h,qS&>A5}"qUœ ,&ȣsȵu啘J̍q{?&_m*9%2$GR>k#BnFFF=LF'aB SquEs
|@iȔ}I̟Sg.\}%!F\V*EFluD/[ϻe	~	%YMY~r֒@Aq I~w3@fV5ˀiolAV`7|.$<4j'?{a+}
<gB1Φ&\y4׸VA..:&R:ϸ1[c3݇Ajzظ
q==k 	~g|>0nѬ:|+uFP)eHTo%FzOkͥ;P,z1ih`/A5E)v
(!@ٵmN	kux}~-6sk?GM1[hLNĚՇ9׉
l||稬$w6*A᷃ݔA_IG]M4ޯW}ЧSszS9z!R6dh@W4,0K%#4NSGpq5vc'-3]b<E1i:]h.5vy1=``~n^6^w_x*s[g3x^hʥ`ϟ/*9yP%'Mu
Du}Es,\DtfIF0g"&T$hH醤p
);:Z,~hIpe}IstiP>:RyҀ
#mBڥZ!ėvܕC]?tRrQGbЋ'~j_4/2>9Tm쁡KMN0-3
ZmzRe͵FK`FK`ieM27nt.⧼&_#',<(053Dx)Gݤniix۫e˖KsRvqn6*]$=닑=8A
,N_!'5
]S>Ic[Rl9ǞDEf95'DfShs*՚xshΤ,)n˜Cgf`u+afu"6U+t4_K4YJVeਫ਼~eK$KcɄ0CTΛ>1Frz,+ȋ$8%,sԧ3J'y(WP5Ua1~U@d*}:ȯF>NptlVWRY _M:$JuXyIbM\J2ZgD+B<5WѭfA3J͵l]f;=mRZki%/b/jSu}~C-7Dc7eiR?Ѥާ
crŃbxQr!OR8(NB,zV{T7IJ{1j;|h=W;(PK
   xs[=   
  +   de/cardcontact/scdp/gp/crypto/ICrypto.class[Gw⁷&2ePDcPPVmn7XtA{}1@>0$<;;D?t@x
TUNjKP*zf-6 u
YwІS-rbSPGҴAVm4jst;PA
6$jiڙL:t=@ݣ[
G6j״쪌zt֑r5Sy\?EfQy9˂CX0.V֭ÂT5ވAĦlu<$HVCJuXC-눠aӰ+t>sώ'2>*751,\֊Df$ӜS'4a5ϓW5!)A;5LW8M/ϣbaXnGq2m6?nUb]fZW8dXjW*,kX:bΔ/m&7Փ7s	t|ňh7k䌦~'3ժ=uҞt/M;sC'^Ш֛"iL,ƳnJz}OVV$h"y!_rkZB>֏nYQLϫy;wZ:2-׫<?Q>V[B-ĳ=U<
ezN-8R`Z-t݀;Nt'~xϮ] L7ԪmzEne bF1n( Oy{~xyf2GGǘc'̧g̗qsd_e_gC70sf̳pyg	/0߂o3y;p9Id/24s2Kb^WWᗙ_1߇ט__c~߀p2py~y~\kumfn07M-6{01	ԃ>ϑ|!I/|/f_-}K|ɏ/~%o<w5?PK
   xs[|
,P  Q  ;   de/cardcontact/scdp/gp/crypto/PasswordCallbackHandler.classR]OA=XZZ>-VRH1i$T vCfv`/>(&>}7KQ.F	a̙{sן b)

1H2炷˷{wQbFR:#ðҴ%d\%,][+o xfE
a?nmK!a)鸻k:Fl#墣Zuhsc1$.e'ð*-!H)qSI#."OV}Q	cRf?Sǀ1X'״Fkov5lD4vߣnu!Ve(;s9TjϾpؘCC꤈![#ss~x`پr<710MV?cΙOݠTv_k:Լu'd,c!ӣp>bL@hFkf>@\8[6R0pq5avaW"qݠ\qZؽB
J/ȾF6,b{[8I"Ʊ<1KߤyHMREM&fgpjK(SG>PK
   xs[lyS    2   de/cardcontact/scdp/gp/crypto/AbstractCrypto.classW
l־= IIH8$)	v>]Sp[o{7mҿЦu'
Mڐ4$1 ETRH"UZR%JQΜmrҼy}ofv^\*BqQ>z!3xx
"[͂mSP\ETu{p{ۣQ۱}c*`UMMʔ-ež{-5_ycS^)BqHղ@CHM* *p/U+heBk玍Q4((̔J3i4p0"`MHet'
Rn&krvjgOXNa{UPѨ`1zH.f8gC}29q13k8k;9f!עBMq܍M
nG6ѽ}{<WɫWVql,ΒtE4E\
mr<#0d9
'e952ztGEa0Q[K*DqU1ro1MqcVd1e)qLhآCJ}cva8ͤUrӲ>8%w-'WAT\
bJ-eĢ8>~^(E;	@?8。+}kZU<`t`%0G2 nM/ My)>`0ܜFTdI
b2\Wא+IC!!BDФVpG-=uBmVu8:h8}>ie|b(CްɳUz>^BYm/ߌN-VVweْ+^#bugcKgԬ2=̤I="nt&ȿ*Es%LCUgt􉊰ϫDAbc(bdk3PK3dZ_6ZQG:γrk`8~ztQp2=k@y3٥(X8/=kTGܑNH.&bV;LqT|( jY]7leE4qB5cֈmKaO_ﴃ
wue*lm@ϭ7cM{M{g|'0t7x(~Nk{OyMϐ%k
,wk
Wre%Ľ+i3)ٖ.u[^w]Uq+*6)V񻣆_+?ɏkʏsS3xvjPFr\ʸo E O8iǯ߉O%>c[ȶ7x==c<[{ESl;?=wOljj	(u"Vzʭ-Rʻ)jf-˴2FnZw2}_mLR;c'7ڍ>:nE7 ΣEs[&Fq'~3,!n,s{6ec,a_7,Z.㸊GÕ?OӴ"|ֿ5V8;/R_ %&߾^r^Q#{Qe=Wj
A*Е+ƙ	94G7Xp!AI4	}bN$;	U#MDt{MD&9|hCu'ބ&E'&!M1LO3ҍArg^xȳ<ϱc%Hg@</#M>4w/YUQy<7dFmzF/K*/u\W5꘡R'J({O]K71|s%=ve*T}y=`
?qʋM|+-Τ̡$7ͷ2O(sLna<8&9;R5?Bw9[Iݧ !
]iݿ4DD^myĬ
s*%
iIrϐξ_{BU.{y)Cŏghi_/KyZʳR*$xQ(_"PK
   xs[  +  (   de/cardcontact/scdp/gp/GPXMLParser.classY	|Ud2dutJKZJfiB)4%MKS6Ut%v23t"(ZP@"(֤Kي]OO>)R~ɤ<KsA9G
-xl+O֤B;jڝhIj;hzY(uX$=OPX>>[(M-NM8l	cP8]
$j5Z~U(Rd<YuįD͡mT8IkGhSԙt(ĜΎMHhc0V0}P+7mv<|d^O;ۜhc8pʇ Ќ!
=FP
RR&P~LG54?NCNq%P҉͢`TIg*mq"n7"qP}E(T{%KNHQ7ܫlT+pW^b?jpsl0":A㎢qu&UܔM1gc6v`slԪcv׻>\@***.mŷ8Vl\_k$BtzB4kX\<.1hc	 5.)S?ufFS	.2u6:ߘN򜭮:3)+zL/ǣN(G=V23֫m4b

H[uCɚM	:Us`;Xpإɇ
ɑXCe>.SNzAglL;̟yήS>LU~ij
턛I7=NSlct$;
7|FOqE356:M`EP:1_N34s5&nWrO>*WcS8nw4˔!
٨n|rvX<,
j^"񚥆utfOFt#ugՄ^gG$NYQ0.W1ޙb.w1tB~|_Уn;*Ceڃ/VsgB_^2E@gnV8@
f7q;mqtH#VGˉS/ķ,eLˇ_Sį՝tYf:e'Ɲw+`d%ߵq/J,"{ˣv ԪS|a/ld q@_LƓ6Y8t{2}A*Y6QXiɎHGⱹWXxD0!79wRY2mqN*,!'Ŝ_$
;[[OMLp<%z)F?wǳx6~yj0Js{GBg/	u5ΒԴSVn1y	uiXfҕ5,vdg<4ґm)~+Z,xoM	ț-¯
؞{7luѩމۍk`Ny,%hO6)86{ӛBN_deC7BM7Xj?
gVTFLiuLO"ӵumXZI-PKK蔿x/gK]Ȏ6Stm0ݠƻT}2sJ6OJi$dL]J62PX)2NCoOA֫PG r-e*cKE~m*4Ŗ3e*9	'"8g)qnK̠XXDp< /`{<5nIT`H,އR%5@fLglm'DSx2GPJcs-ۯuU˅2ϒl/],xgkS赶il_f(yJk47AY&xpc r%ԫQieNyR+؛˥޲d-\	E72#xIzFךm٠k2khrzC:txz	3UaQ/-H[,LNf!aS7be[C!\O~ֳg}Ul6,8$|kh rS(IO=5u(oZVҿpRWJ v|s6.(ft,wTr_
!{2yF&}9U#"HXL dt1%WfxSd{y\a[Stu%yQz$
;,Iݓ\'[9&/ѹ)	1=}ӡM5呲䋴`ʹ2B$0P>}S}&XԷi ^~vVGܓƍD(@ĝ.ښvߤ2kU&C;/pL'񢄶O'|6+nzPkũ6;v+ʘI<xG0;:!7u2n6z㭭)7~}dtHJp6yHJN
'oIc~9,[v(*N?d}4C͗sC9C2uqb0Ʒt&;m\31>Bhc${3
!o_T&ex5ks,EX]*e`'?$δf<].J(dъW2]o7
#aL)6<m9.l/'$Ӹ.sTJn)eɏWCr%&7)%dP 
	f>@D
3s9|V|94|Eo>;|H>(s=+ʳR!`Uð*=8}&
's8i0oXY3܊xq݇7BFeml.Xa.EVSF,2C.ZQf1Y2<(ߙ~3B6fyyVIfxmEIKUWU=Xt Kdqa+]Yc%exhG
tfkt*y^{АW=FgO-d;Ev's')JWn\zJ}TeT!~u}ǏtLܘxMVٙƨ[]grQW(yH2F|zT">'v#pGT[T8;[?IZ+XT=;+X*A+xG	_`k|A	.zuAU0'BNʔ={;Kq7c$ո`5XYFEfY%^U-k]&(2Fc\%W(#A81=R]TZqEqgo.<`'j *Oʒڷ)ȵ;_N:l yP<ҷC^Z4U=Y	zڢ`Qc^<w׭zzZoۍb!Y[Ѕ;޾_nUm@0Zq$&Y&5\Zovw
Q[,y3}ߊ#y؏Y%=8䲷цhLh]q,yL(ǋ8/a1^%::(>&A/4x
G_FF\GݎEJf|	ʧ9;3+y)QA>)+tEoFoe|.oM0PV	d Xnb1?o,ws<cѓXhal@n/ɗ +|
#RKS֠a-ZZ ً.^b6bUAeAѷpC80j`1?x:
A!kg9^	I]`Oj&# 9c$]B#"s|Ti6hUs5_V˙bLn*nwͳ=H?W/E1~pwD'Rnfg=fW#2V`kmIK: 2Ԡ?l]Gh("L/&Ry2e$d4e2t\#G&)m2YxXq)KRJ~.3G9o,s_Α2WɅ2[qt"Y'%,KC.#bY._K+.Y+,ϒ%InLs&b֊
&1a;kW *_eь81ǻtF|#c-ѭn:rtip
ir;xܘee#r',ʷ.	wYX3'f9?&S\j-58&mc(9h:RFPzNs@_.M!>ЗWTJfC2z/Ud`ևgM_tasPNsd&ӥrFL^:-gi0iZmVTfҭSj4]h2S܃A7y.71 ^QԨc8֠lE
3e]/;p	ۇ
to+[ki!$w33A>6KɏDoL880)wpb	Bns	𼋊#c%U9fCcXr{jjaE6fRY\-KW9srSl&Ω43.k)4R2"fNe-eQ̓6͘\y.4Ko%@X1ϘG01"gnt9+喝GWgٮ1Wyvr3XZQ005ht)ɪ%kXǲd	haP-ފniR+ xuԅId-V[6[^X*+1=vmȵ}c OGkG<sC]gX@D!%~a'q<^g#Iy񺼀7e^^_5\}!4ųי`3$}~ʢQNy39`&G33;G}?q!ocrs'7*Lj}F3qChY_ybztrߓ_|RylSS'e$ѠbF,fÑ+4WCv?mv5;4fה
]i9h].txUQ2}<Y|<_0ϗgJnɏ'PK
   ys[  ,  &   de/cardcontact/scdp/gp/GPTLV_EMV.classS]oE=ݵNcS7v¦%iRIC]@eZ6ލdF$}FB?	Q	_B5gƔJ[Ͻ3ssc q1 (fmPv^_hUF(l_*?pjNӭݚr^˖#c(HÈ
YxNﭻgo
k8M-aD 2,r-yZW6=ϩZislq}mfhԛ~ˬ׼0h)2g"!!xI )~b}n<V-lMV-j2S=5
"EZ$ɒU}00շbmGDѭ9?q%kc&QW,l5]NO-.߲lHtk8"TRUSofkt׏k{[뻻--sƺ&zYq]od@`^ 3, 14h4~\c##bw'#ӷ\pc:WxU`0^25cgd;9cy]S	0O2Bt9	' #!z3Qb`@'@M<˽KR8i,c#_1.)*z+*?Fba&>_;
²pE[M?	kKFZz82yuRڰG{S_!_JM+i?6?_&۬UvX$6HI$"wd=EcO#0R\oP16:3ݓtedyF:"OΓOE
0?ml,?%َW/M#ıwo)93}B!'d"ZmQc<E\BSqt|)cT0:z9ަv5٥EpCSLH\PZPK
   xs[-    ,   de/cardcontact/scdp/gp/GPSecureChannel.classTmsD~.#[Qঁ48/@]RR1E:J#!
|(3v`??aIbOnW>7"0	FArgS?	ziobmkGa~r!SMuǑtRs=gqKD<D	ll*Sڳ6a䗞c!]mRˡp~RyTbYtC)2#3`bƻx8bB=*t*8$2rBuL[spH%EpeT%}tm?o+ʍSQ;ΓCAjWi[pF>qWr]![C~p*$RclOF6Z
p7-7
0ITbpkhwDPcjV'JCn)Cy !]帓,/Uǒ8(ƹgQ!^}P:-']\AU	I8-1b56h1ڳG7ժR)ۨ_hwU!7h.=L` !O̔+j+
<sah*'h<&qpp&0GO\%!&ɷɷiѽthD.6z;$=$=}:m@^BeˢXd|1>Q#ޯx7
+ǗXg"ggH8P}cIG;@>}/t"Y4?Ei-Q6hlWt0|ÂD.~PV~s:C]
'DssרZ:O,%u^#?@P)ʰP{~,'#aTPK
   xs[    *   de/cardcontact/scdp/gp/GPTLV_Generic.classT]OP~κ16:@DS>C)`e	r=%[b2k?M@1(=]fby~>A",#.}ㅑ+N)M"JcF,ϙk3L/W3jT=yVЋO]ۤN(10MtC?C2<!而A11+׹S(\bT%\>b^Cp]nVu%簠ui " 5bQY[/>ԵGycrũy!~яTIi[K"Lm}Ã]2Eik?=0pT_-}$JP_nH\QQ`7Ypoe+o䫼\.è@R|53<8<AiItYcpOP.	:)!><FT#oA 53t"9bo& Ǉ_(D߷0Ȋ\D[û?	2Zu
0U4jC9B{M2a2A)5t>tg
ilA
 #t:P*2mpfGB> I]YS	uU6dȜʞQ({JlQ:-G	Vi2)ZQ-	qקOUhS\xE_o_nSvWC(_ͻvw躄?v֟2PK
   ys[Ӽ    &   de/cardcontact/scdp/gp/GPTLV_L16.classSOP}wv|LA`NL0jXRɖ%SڛR|}A#x4*sO㜻o߿ +I#"#C]u|M+-hVfey6-s{[˿M|ucqHS' 5f/t-I\նيJYEM[;U6w|.>jeH %03bkYF}#-,1(tDtC&U֒mC\v{| C$_jkybz͠쀟
 %erƢ8 KJzUnrmtV]]gsÄzZSR5J=Y՚Am\Iv-ۍ#|ac^)qVj@OSG5w%ẗ9#KAtR4AkX
L:H{z+N0|
¸Hv1\"I[De68e'i1qiG3"SO#|D_cqpLT
ezPXd.`##-NH&'-dpFHK
>tY
ZoBEhw~qpE1N;	'1tht?X\cmO4},Ѻ^d5 ltH#F"єѤ6i6~ PK
   xs[u"  o7  "   de/cardcontact/scdp/gp/GPAtr.class:	xTyoޛ$L2@X	H,I Lf^8$?RQq_ڨ("FEuUk[Z"L&D}>r߽s 0GcL260=j+t{}>WzFW#Eji-5wF"rrWY@V
aG+rBwq#Ea'X,Z<"
k
ш`
P''Wu?Q[4|Gu֨Vp@Y6p(cFPkeJHBšPD:sRo+j0ekq0aj2/\Tjl4eu^qp^ :VWL!MTtE4;Iu#xi@ܣMVSe8`:¤#!(bN.\jk p2Ԯ%i!+̀[K6(`410[2́]ց`qB.w ؅0#'Xyi^ZSָ!x]6߭YG.!{Ñ@KKVA7膯5{IjQ?z|-ojB%ؠ"A${7GNdb\
r
%+il$RBmpVX?4F}-_$0ʓlI-a LS&]TPpEuP`ඁY8XTuV`m:]IͰl^Z+dItHWs8T(Rbb:f$JJUu:BU!U/u[tEӎJS6٠Lpv	ֲ	CVZ~u̳lp6x"0|;G^d6Ƣ#]lKjmLIG$
\ɕ$R`]ck9,J0!3i7џLZHHm&"
LR^QY[AњSl{9'{**:u
t6~C.~G@u@Mn/QmuA^RFf4l3/
Ah[9VWTlVm2a$=cpIJ3xPcMUxJ``tu a1Ϻ@GRTJ|Utyyrj$eRX
]h19k+Fp1wJRT
k^zByVIG&KAVKۄUkϧVU~WF (~x]$QH*7&EՅU
M7(1H-2fTۭ&:UԆUT7T[GXI*o*'V@E5D.GF
шfާӠvd)ʜI9nWy#^r<aqO1|N7dh].Rp z}?nx)vC-XYkdA$4a2ol@AVPt+pJנdea5#9C~°h囍;
i:Ob_+`uSH)M!qsTlSP"L /"'KSjxt#mi5j3BͮBLG4;-lP:WxAh2t$Wĥg0Q#Lap)]T3]-2(7suFzA<4!׹
F3f2:vStK_|
m~bBix$*'@e-4sturXT-.q#ݡ&r_t5?SIS*x,*HuiI]T7U+Iz+":"YsJT)f+8
fϞ[)8
攖sCⲢcҹs	m>-YTBhWi<s+Y`Nܢ94d43KJf1̞Eif	
Jfji=LeC*3!
Y)ufja1*?Njth+BZn6(*Wb,t+b/aqZTf:͔+4lP&_W v:)=BaJV+kBRc*/Ir8>D^N)1<vە<X%Ű\$PЉOH#!6*+}AtɩÕTGd#To<O=
Bba!vB!L[o5Ԙ8#)IԮP[x-PK#:;y_mZdb:(rV_EB&#ӽa+]%Mƭ2^C(Z
N[~qDGˣy`eW'{frT7F7/qmDvB5^eҥuB%JV"WjaL%	1{ao7EQ$9B4?'x6!Ve7|!TDh4Uzf׊>Y=TOM`ol#Km.GQgZCYѧ?36u3w8JH
>H~C=}$toĬo

>PToL*%umBDHx'6DޢV"b]upoPCmQ?Vn4S!(ȺԜe5ݹ*/WCgɸ
89OF7U]Tඅ\n1X
H>#~(ژ:9vD;TAbB 1*Ws*
HHHh\j[/32*ћ!`%{Nk~S~R3ȇQ
l`
+ЉPWgŅsUST*M\F3V7Vc_:9㫌 \ݔhxة\TđYcFz(d-|CIlDMadhbJVJ.TƜ"J1j̓14-pPsSV;wbՊN']W AG)թhTa=擏)>YQ3(1?E7juA6uyG>C׹b#52|S_SSbWR~9
aBBӌH9kf?(s!)5檼!*鴤Sh4+Q#Bm8P2#P&&Ғ/#hf!U3cC
T('F$xYfd6N7s2{+(a~*sFץR=.*	AGbّ!t.	|M]\B±Gu;鏣FGIT~
 `t
	Q36T^?=^CL{^˿DLə8vh.D&wƽ3 vs]F Ixl:&b
.|H'7sPs f<K'!1^>a;(}H}0uL&eͽ0i-Rt6flsB/N̖90cMY=B^(b#{zO,)biNP^ŝ hJpG{jݬwF2eg-
:2Ϛm&6H㲥l>Oj8eHa)&#R)l~GqW[IWي|b34wP2/sz̬	doXΖvq1GDjMN 0
 ϟ	Q
T68ù[ }.'`+p)|p9脫p"\sZ<
cnsFzy uSx6AeK=|[<	',+K^?gOp+C]ئޥDk	mxpn )@1fOaX <L,CƫdS(""}y|B=/aP
]
fDx"mr	Zh;a!.@3ln>8.o/+7˱>8E=H`2(H7L V]822vW-W&D8S0){uH֯NX8_Qfv!i΀[AfFx^X<HEF_A	
XoB-pS'Xku%Rn<-dNh@2x+ۡH27mԓ|2Ck;Dd:HFXr闓<r\xB2<zc^HsFPp-4P{L6AW)R:{a"w\*ٔhwCS*飜vf$rS{j/bzĒDXZŐL]hП'J
ԯ#_G$41)Um\S2QcOƪ$	.I~"ʮ6xˌu
5.S\?lcꝒ $Hw=;!unSW"7N=ܔh"`r7߻[<i0=CTG/Pc[yr6l9\{Oqܾ$ǯFU sSw2탻W.pPx>ң7&HjYposj.'9;#0'XQ׉,
l7tJvCvy8ǾȰWgv44?;OSC^܁S>x:Ai:&m KC
O	Nq;DB7&	51S:DHs<ي23pfBt';u~UL=~ɺ+{
eӗ;8&vIbt{?}9^JܷŬy"	@=h	Z0N~pҵԻu&ysρ>|asB6a 1p G1pAcsoi2s'9Hf
]9#sw GX@?87N5\y
yzB1K2uO)=2Qһ)ԕYW8<܇Xx[(mվ%m>3:ٔAczqHz,6ZĨ1A1:<dcYbHn:,֕x	x#%^ZM._eK~Eo.ra8	A\"\ZATrsh1%LIsЎ00=617X.v]Z']}D:NƯq
~N`0c1_",qDgb ¹x1R4+L'`i1Vqi%֘Z- ֙>g 6q W'b-1?fbtW&ކl^E\/
?Ad4OaHZR#n)gH5#݊]xϑsG{ϗ^WBM*KEx	/7+*1GZyxbnJ|3ho2^cx)-fe%[نwʙ;,.L#Kpɧ}܉GQ|Lޅ?2>-ȟ_9E4|AqߔI/+yR*5_Wʙ(;6|WWʍr~ϔ4~R^76R>x"`h#,R(-R%X,+]HDe`l2,
[Qh˯1l#X8ˋE80dQt=YQ; yY86TM9k'j;{(~zң[6+=k'ѲxZާwi6˻ 6^@=dXޤ}B+y8HUy1YC}f'	PaQ!{餩0q	9e\4vNAi#PbRJOHs*uNc)BYP%I8'a?T'c<Ta97 8
PduFMʷXN˨Q& pL*Z!(ƃ Ov:%2y,6^U88'yJ"&<dp28GݱGZ!K?uɞ]Fԯ5x~lkLxL15R&Nn\c[vdavh?Vl'UeTg=lgp4`\B>3ϔpUJ*e\*tU,UYHWBWJWZWeX%.\
.AؤK%%K%kt5]b
I,OOOirb̷yo\\!_W(HW͟Y͊aֿJQExi tE
üox8oӼ}y޾ۗx޾5o o{~y%o=C=Zx+V䭙
o6vw
S
PK
   xs[>/  j  "   de/cardcontact/scdp/gp/GPKey.classż	|T?<ܙ{܄IB!! Q@YD ,a!D9Iwܪ{kk!Em-ֶV[kVQ; Z޳>y_ODSIr)@ASZ
ͭjϯ\^ml(6MϏu054v`ƯL!RlJu)\ah}]kKGm]Gq{]}[qC[%"[1)d/%#uƎh,P.
)uֶWJ{Kٱmiqi
f
)˃TP\mli0 .
\ojeˆVKkCA r$@aږ֎"yy:[:[[Ri$iK'GYc686E#mюh5ʔ3HǯLShM]ʧngGcS{h썑MJ2@G6JA!-	.өLN]kֹfkAM%Lz X\iD*ЎV
\*NSm*sKV/ZhkN1&㎳LQ5,͑v#o:yT:TAsBlWlaj81J++iYgKGcsbK]M$J2zm8˥NHY}'C̗+J<
Nĥ+mmg:VF@-wi<APGbj&K5.\߲U6Gyھ\y] پuSiwmnC끣XTYޥm%Ţ0S
hk[$=JȤ*维27g'±6SZ\j6X{vks[k4LlOƎ4#6kkGFQjåNm=
s}F\5%3?fEV@bomĥK2Rlƍ_;Kи¥+il-Ш
D p>RrljyτǙmަܳCҵt#7Ȳ(K@}}dCcKGVNP	jť[6D(f,qKw]L>{cR?d?-~KVbx&ˡJ"uŶ5Ek6F:6FgoxVpD.t:[6^bÈ!ڎųⶋ>/>2&_pQ5͑EmXU=F_+:IsG:#l(JriBhqqgN⣟{^yxQgHcZɄBϰvozޥ 98~ͥKL)UxE՜G%Aҷe.k{1JHKߡW=ų3+k:#ϸ_(!ȁ/(t6E#&?tG:h8`OCKoO@}G2D[3vg )бѡ_2
j̓G:a:kdOg[:>kamS~L1LE\
)RTX'M?Kw{f#kMcCD3
Kf])xuȒFq2K|en=&BbXoqi3ڭ6iTEPK3ԡċ67zFmf8]lzƆFּ W+S}:$tL*}Lm43dAbfHȔ߇ZVBWj:|&<̊/FM͍0#;.p*)z!=6L}ʊPP[i>wojΦqg<@$6݋<Qj,sYmI<a'+e`DEXeq%Ps]&S%,Faa1w'q 9sճ[[ѱihXQ<]c3~̃@vわ]*!xg ӿGrl~-t<!Cͧ2C<F>9C\,ͱ& XV=3A.O'w6uBvq,oXh̰2X<bSm	CxU=gG;gl0qBl,ֹ.Kj]*._8j"3o]3gˋ5s$֋gFF4-uѭmTG`CD-rWȱ3ZAfWάOvPqyEᥟ$ASϚ]a'';rJk!~8.r;;:ŃGjS<xp@DZeW*ϛlnr6!o-gVWMce=$:f2XxfgJrqErmp斩ūHWo\_{,4y>q9fEzTE*f'ɔGewKc{GqUeIȤK&=#")^r;|9A21u"42VlڎVS1.kxG_fon`_511OsS1kT%
7|ca>b'8#ncz@wD(&җ3׷wDmCƷ|;ɗq#rRd@\1.i.s'u<dmD"QIcȐO>.sK`\~Pp~\HXp_qQa]-<L/hDZcI¥x6Ym4qX8@~.uL?@PW:y7[s_bW+z1!g*}fX4gQaނl~yݖDTI߀b}2DdM`bT)Ԅ]&>[19: 
Ӥq&˼w%1cgx
0o¼ܖۂ}떘1f9di38rȜ$0o=&	O$aDG?sm9AsgSGc[SC?2f$$z{􎔼kٲ0=?[EH	6Iwt̅kn]Ի.jBHTb=sy=!wGȘ,!YpEuI<bUU{F/c@|eb裬KE>rc>lI|aL}2ŀ;P`9Ëڮ,sTV,6A*0H09>IR4 R1QG[Ă-3ap3$>)fә7{4PX+'=jӰ#s9qrҲQàIU#Iʃު~"ϖ[	`y?Fd9:
5{[3_Y:j<SkwT(\iOSF!UTq{81C$6h([]4η)rcpl]d".cNs2fH$C!\UP˘鮚!c%/3w
?sdlV9bAs|Ks>!~>JJWx ^qZH^~NɡZ%a1cѴ4R-sUZQXn3_\1bV^6Fy> (l;ۥ;9L:Wj/SG_ت.4y=J^E\AR0[Ö;^Qj*GmțUKUQXbJXwQD#:sTp QzKܮ.1.K"ŉ<VYʕX֋u&ǚk,G]RQ5>;f8Qb2&ɔ.+XCw=~q'- %l<Q@̼e[vĩ%E#zӲY[EuO<$cKWzݞť_.D)AGk[Z[L,=5
J.Q8+gjIûKJ&KWJIJNɍ/$5Nh9߫kú~V؄![~uJD[}7VEk$Kkݶۧt9$XPQfI:_40bfOZ&*aoҪT]l1Im>6(NR8>Z[ޒ~-G)HG<\y#CG<-ȑ yyƆڎ(Wti}kg(Z/<_r1
iemQ~ձjıo/_j>qS"mG51҇U>ڔա5'X/[7`: :Nm=5y0!5ǥ[RbKzWMR;R'NAu=}ceK#|{[B xITM,SHvl0*wE=.D?CN@@mPߊ3Ҧ FhS:mж֜LaCQؗDHn*ŻLOG&ͫ^_(y|Q9Ƀ߆ۣf@-
Q	tIdCQ?\Q[TdщVd-M
&gvqpbB ׷rd?8·[q-r-5&grߦj`N؆#,,$Z{gPPʑ|\nNvZYjD,1I"^Hզ($<jeJ@T@FF:tc#Ɔ
{-^Fk8dd{=-_}04%,RHK<csorԓr$p4s+"v=i#O^pJy!8&槩!G`MbrC>DgJ4XGm$}@3ŞKrC老bs#1GKT13*t8?UK6=s-TO<!u-06&;
=ʉHrHi
Q`#Y
zB.K?@	QX0v$?^~ཙO$SJ%fW{a/[{܋o~iB_PW&U	_~MBר_P
'	ߡQ9oMB΄;L{~_B/?P+M
]	C1b+wKѼ5iy
J-71f?i,)'ZCy"xKO|4eJu<<aKƑʟ(ޡ3_h8U[zz_G*_=ҧ=4MI)!Fa*X+MNֈn+VnTXf쿟Ia颢ݜe3q'
.4!n:,F;)MX!fvUa+k^
2Z<C5ի5a&!Ya^sc^8*;6VuSBԈZzrM! 
[.j.gn.`]E
eNAHM"3YR.gP88f@Z9tM<.tx<#[<~'ӻ<OLh.B"4syds!
UG2:MVR*%KH	:APJM9DE69$g}HKGFiJiejV
/{x>fu^wh}話LKKZ%<gQTK#>+ϢBÐ|n:Z2KiX3Ѧ)wXgѫ>]ž"=Lg끞U 
~ kXa  <\jIтefUc=*T]2?N/GNcL4
Z]s7
6
PJ(%nU8(z(nyϤ@¤@+zqoMz[LC.an(bh?qhW-ϕ9{0֗^'R)`BnzkI Gm^d|f>/-PӒHj8c}	/ȱ
Ār~ai G$n1t/FQz;Ulbz/__F+ Wq*_|=
<o]4O񝼂u|?C|-ȇރ?OWYm~/;|Xoz]D'=jqC|CؔĶ(S
ۢAu.o(v) _à&AP]km|(0KM#aml=ܦ(v  eeA)94zj0'yFxnʍjYMt,@{<#C/v7vMߖC٘װe?)P~FO~J1+؁|v䳃N1F<0!@iI/Q0! oXI4zDgEccAX6~W5;{R |_h"4i-8g<#NgOi`1pY>Y Ίr5ZtwNRf)
PlM#G.'\ zrhswǒ .`)ԿKU@U&r6VP
IjpK'Ǳzrq鱾M`i
GT(D)jW({2:qq>suj2W~,4AwS:Ug"QZ`ެ-)4RRJUX;58SOvPߢIjآRhM<
4%G6)<K8@N8xЧWFd@oE(s|mViI
;pjBM<۶ IB
XLS2iZA+JjPo<㼹 Λ⼹ mEBRa"X4	1&S5G+h.HJՓPJ5 3l/D^3}9w{rrC%wE&:oZNUnRKBi9wzN'_>z&{A
`4K~ZaN(z:2mA	LyJTBBAU'UTйjժA]BmA`hdz
|>֥(iʣe4㣑'EdDy	bWE9%R`.~]0	f0?m7
GB9rL:r %]k~wˇm;݇)aR)|FOS6!&:	H"WwP	ru\uwgY/&+N&~'$ڣ|˄y=t--l ʜ"W}&E ~2D<9 农-&	ɗMۡ@s|
<S_ 0EwzPE DE&r(omLg,sy(y/xBđ/rN:N+34IlcY%]<If7R/BlWԗ͵Xx'`bJP¬̚¬)dVIM%>1؃	zK^U~hg/ڙ>YŇ7˃gm3$I}'wI;V%w$[|wq\+xNKK7g}C~<Ky4XH`TߠE R&oV2Pߦ[+}AJ_Qߥ}z~~@GzՏyzǫ7L窟*שqz/S?/>Kޭ~ŏ_>~Yh`zlGg3!3ՕCƢw&zo~W0nW0xmуhM+6~mX%/+8$AdʏRӔiчq1WF#3Ȝb]|vњC&!A/C oXlMY*V|GtQKy>>f/*
`yv.͍
pa-Vw],H$G+
k~/hhFHbܴZ\2ZakRfS@\t6B؞4Kyap'rXuzmAxX֕,c5/3RnXxR5rÅ\P;;5V\62\A!JJq2 ]gu'\|NX/JoOTqu|trM?
2-KhlZIhbZo_X25$HJw	`Dԓ)\NO8Jf#,~fu@kt;$u%=ϊoF&4FpM|mSKt^l6=gb0i7Ϻi9پK|g](*oRL@(ɗ+=3g$}@<5-u*J׫)K 9^CElρ_9=IAV{  NV0}&c0XCھ
Rb>G"vcBx!&򶡽υ)yA9:H+AZ/'˜s/|Ohbg/
҄T%e	j邚Ā<R3'm?_Nb/X<-gܒX%/n>PK[t9W	2iLץB(l4f{krrܜo嗱rNx}'|;MJ
P(vHfZ/sV6jQNtǎߪ/{K/ꫨK_G
}oOӇ&v-o|';yɕn^}<I[Cܮwes|<ߣ1rEYtK"9"]M\r+\JQryJV!2KwB;^|%Hw_sP4/޼}[=!IҦp^ͷ#{c}Iޠ&7:J;LhiZI4.Zf>DMqf
k;PStO92|` HI@~/.	Z-G]J>Tqar7NHd~.{}}
iGghi|M^2# msҵ/2XAۥZYL%:X)-]
7{{0J"fvy!BAYM_M'5~NR*rp~lm%,۷YƦx;4XF9h"m;{ygM?6$6nĦ7LiⲔ"4E H=BҰ}o5a70ƫ۽NUͿ-߇ӻHv#KDonQb?({5Ĺ%{e)q) ~:SPA>_Gcߤ'?E3joST_Ut
ݥy=~o??{CS\?/DԵsyeVole>ːoB'Z^?!Qry
bF}>l(mMa,7CT?!]?|^
{yQ4	FC\(24䭣,!
]YIȟ	{ /D% !1&%	9r(hʶ4Nct5[i5VYP5.wc<c.̙\:g*ķp^Џ#q'3S%d,l|Hn	BSJUyd>ZrJا5r1`aiU!8[ǊdXɶJ):Ye [ө:Y3A7.	;
#`SDv<RRȢE4yhߌpȧA<1yڀ]oΆAB9qpMކXؖ/)`].s7ʨKsmvo9!U-k)
QF[+i*մĪjk
\jΣmzU?UTW3ɸ%p=mpBrz}ǙÜ*+ͩ_hX6{P[y
Gu}WW?­IrN<7U{շZBJ7v^(Wr%^鏢4ޛ16x5#>-0#? 9	
PfqY˂í鶰?<HC5`-VRMt'CCLA*Q
yVJ:l鰽>2P(䠼O1`Ob`C@
UvBRL{թiiLPVqiH,դtKwSgz
{0, "X 2*	Htu
Yҙ֧hu=->C!йmTgN;hu']a[{n^zغ.}EoZY{֣lYm=H)o=Wǳx<e+0:}W/5gګ+HH@(җ
Hӹ}%ғ gY\+OwO3#ʆsT"-jP<M?TDyAtهhWHMҌk>$|x4}i}L=>Z<!]0?pgqs40>['9;"KDaos<f&Ȓ#
Nudב澩}8 魻^3>?7KZTGU|+vQsl|ڋٗ#e@ف4$0FrsH&q#<J_oD0̌3fQCdٴ#[cH%7#oۭQ-ܣՃpftzzZQfrctc<DKV]< ҆lUry8	w3< [݇Kqv?S1F&aPa48N@9UZEfӵ9t=n̏j7M9)[
JJv[uaHhA!OkOA<(wN
~<
04d,Jom$Dg:`R>0\Lt&ޞ_ ;SM(S4
1Va]g/Ğ,,^ZFZߥK-EcH ~ẑAg:æ*͝z)XA]MXEc)?PC%5TXKsg9؈sim`Σ@-ubE p:tt1L_g~Sonov}3J]q{"m.yBX[c|ud[5[klu~uM [5UT?I5`R鏚.Q
2Vz0vEƪmfj@VBxdxfJVfOᕞn+#[}&B2mxee;Vw50[ݍWNA~gqWjG#sjw_?ߥrujt(yzyM 4yM0;4}y\",<lkyzl	=tz d@ ~v CN`O(`'
̉HdȾn8a8gK3@ƏmƋGqtop|};ʤW
^S?uHo-zK޶/`nF߮ fJ{RywRPK
   xs[nY  X  *   de/cardcontact/scdp/gp/GPApplication.classTrH=c+Knع eK7	T@*@MƃQP$4^R~'xxT|ED@7/2=ju>}f~E*"
Ar'<n0P\(7mFn-|OpCx:CR]g8!m޺<6
J,xPBU^}(cc>q]۞sw{rD(XFa8WfuΫՅ"aPnZ7ϥx!	(>!I;LዾuKR۷5!YqpǨVצZ;J
St!d[J~yHn[
vD\M~){E717;hQ74jQP>o2m+BoH&j-
a̞Y/sE?uvHfǞNz%gyTiJUy1Wni)1PamN{j҂MҢ.%FsJDͳT$]Iwx_Z29?ÐeuuF	/·Xi܁
yF'c&I=!T1Bv2( G%|{oBigghu(49[*۔zn]j6M-/( {{|wJQkona?+ր52:wF$,cM[5X]%Ccqň2	\%5fgܠENS1m,y3㛻}bJfZ::dfIdnHd	V`#_P49*T:?Hv1PK
   xs[}  Z&  &   de/cardcontact/scdp/gp/GPTLVList.classXxSy~ݎ$p"n/	$eB%p,²Hܚ%%]Bۥ)+k˚&K%ܜ[׵i^.[w_z5Mn떄ut$x_翜{{o_|\.I'z^}fiU}	cc^#j
xǓqQYUUW`\_ku2`K<kC0Q3h*iQ.:u7mi*7	hFč@EKT9UVʓ0!bdh.DL`2x+?d(ۛ#Q=IHa"a"z6ћTҏk0-!pZN|GYH2L&U<IκVzl,\ P-04,!\eD
fDWHZw(z㴡9gPm 1G`La64sojB^P=5ں z$mN0 L.d5p/s
}z"#Տ(z4pʤ/ZVin.iE6&x@H˸&eRza&m3Y44+HҊ!zGKJjwՎ&qKZtFNi 6Hurn`S \2u +3F֠Ƕ އ6bߜ̚z2ʌ
hhb|h
#EXlXV]-#W4W]Uxܜ6;RX&1:DIN 'lvß㫪Ǝ{&FH׌:"|D =H
8ɲCr<iF kA
=FFC94/eH6Rӥ8,cK\;&$գ8ȋ)=~`ڐps1Mz$t.*JI=++8Fڷtlڈ;,`CXӼXȪ֩7~8ǽ9q52I= PU5<eWI#6p >&dtS~|\|'0z0k=KF4>(PS"KW9tL:OI3<ϼO[NY|n(/-[f]gc|鴑I%7D_&!w]ލ6/&OxTn.H	Bnn]I57h}/Q#M)Xj{^.;ٛxޠq\S1,o'l	e%ŎpCӇ=Wu<`ovaΗ=LڵTHvDwެr*5exTZf)ŹҖ||6l&B';`x,jad(!3l\	K4:`_y MvQ2wu_	upۥ#Tz2ʉzoܬo>{FUA
z
<0"߀+׬Qtrqh2Y3FIޣrfH~,pTټT#x>K{tx3E\`C-rb{SnY8da
ԜlRlH, 	%TgP^4h:⊁a5eĢY3U|8.萣s誻Tb7.
"kߚDUq)Wc:4W䆦Td
+˖{/\­	˹e6s~.M'k0w=Kٙ-TwoD-|GV9bHMDڜdW9FV
ݨlXRr1h!'&C9PcQ~W~>_M>5 j	SX nxM<o!o~ys-G#<ѲN{y\-<5#xAػ)t	>U<AFX||Wyzv>rQSC<.t>L
]}r{P
\x7=ӏ2ӏ%maY|+뵰vkN`nOsuvX[a{/`\Fr?`OyMDWd5b\'It#,Ҽf~(zy9K!NtcU<_
^o÷mZS"-~gny#C=|2|;K9%,ѰT\
eL)k7̓k].R!NU,ݢvnq	zx(qMb'h\\ZE0qW|k 
Pl)?/4
`aRجV(9蟉.ų47Dأq/4\!~$0o=H~A]DLRT8D{sjS+#;brG}wO`O$lWX#'UU<OlsrIk+imsc_:k2:m|)p.<rG.YOc,L`͏NbRzro.y8svr1;?کD!*̏G(a&u>L\GBu][)HQVNQd<L&/3_ŋ/Vijp_s)jqƝ3TFi<?e4x$Ȋ(?§ƅqra2Mx&P2x/wxǋes7-ffN͌/#!]I}Gd!OT⑱{}T51ާþ<魧9~'}/+(t~.	p%+WI؆_`~Iyb+7qo̈́QET䭣J|"ET~;$﷓?OC"	_Hħ3EuEH<ֻs=X$L|b#YHj3|2<8R/XzMEXlm*8xFT2,`D4#f[~q-*']X-%$I:nt&Mҝ6I$e:K,l$u iT&1ݪd4YQTǝ#"vR|)"X<NWF6`׉0[4aX [÷϶ H;lmmm,&S4_Ve]_)ݯgvu;6g5U9>06:ZH+:ްHu9ц[uO
tb3!B܎AvaۃVc+tсmwI-w؆
a6/jD&!֬20dI
P
Mes6)bwI]y=ιRm!"xƋtw;Q'>H:qćmĖڈE,L6v;mv]&e-EYI~ oA.BUB]gO=24#|	g		w}|m
uhBZp
i'vgoPi@KI&SLg,2_F
։M|
;q7!%oc6lST=V_Ugw\s2!1	)Y
5v]6~lv`o]S(֥-z3!ww&Rg5۵T;\EÇf7:ղׅ%a
n_،jjjZk5Q.JlxS}
Dj>#\^璩5ԼjţykB=^mJD8aSqTY
_aHϜjLھM[OW pr29YHrWHsT&ƈr
PK
   ys[              de/cardcontact/scdp/utils/ PK
   xs[to7  q  ,   de/cardcontact/scdp/utils/GPAPDUTracer.classW[WW	(P!E!M
B$3̀ЋZkvU>/]L$H"X{>T%-YiA
%m&|~jV-qUS>Wc/jlehO*aY2YlM9
[j|q̐d UӺH?Q3j6:kEl
=>o
_.bhrt$JYrf"^40GS"vU*
˺-ȨGLFҒSb
,YI:>4# ED+v3z̺^UsA0ԤEuz+7i!89X{.` :$~Ul<[%4V]EC!ALBYPh|8v!Qj"-؏8
*m.ef31]9"(1lUM[&M$ɧ21Q8GZf]qN─~hZ)IxkZQ3|eH#eF"iqqݛaܰ!9	7%TxX"jg1+./%Fx	/	,beŉ].T㘾ZGeT^(|Cx6FҒ1+ȦK" S
ꚩXYsF)Ϛ@  ȑkQ	~D
i[%"Vh%i) d2??ꍲF-J$jJpce)=.*wVJ,z0TsO]~J>TZf@L'l/Uy[8#qSzbNŜ`H<U"4rQٔaԯ	>*ӕMVyԁFBLU>-%{@-)VJO5|B_vڂ>8dȑ?F
wl)=K@8g#%_Fpl)>YbWQR~C]>@%`bmDӒiӋwu	Ko*{V)-G.ɍH?jC+*]
ziuB~>BQ϶IzMt7d|8,Z
`
3]Ǣc+LU^=Evm]y}K>9]䏛me<SXsh
?P<ƥ%- a-r۰8:ްՂ7{xv"p؅q^{C?йe.z
kZH#C
"\?q|(+<t4ћ0I
t~K\	H컀$)42Pxt[ڱhhhNnXJv2qg}&I]+ldR@yrv1R+AL]ɻڃw*Au9hM11F
ԇH *
/]oP 7no&{12>#QAh#1o"> \xUxnB?)1>~J_[c?jwhPK
   ys[Ch,  :
  &   de/cardcontact/scdp/utils/Base64.classV[lgf/3{s<1^;Ifwf7ِ5618-_ofݱq"CB%nM	Sj(\ ^/BHHx	덉(v.w?$|pŲ9{6uIO[4>	pdBGB{FB&3--mŊL>db,yғKssz
`9
9OYݜl#>(PE%#	#HV8cW}hMpPB#ъzK?eV.Ȉb'ebR>+XzfL2oh%-#gІC/k`Lk֤a-P*Zi%t}hva{=2S#沖52my-#bzY^h3̶rmE{)@Q¢󺙑	'#CJ~4qLg^RQ@I*Khx8m6cPt	Jʕq	I	¡<SF7[>\#zC?':$0fAa,]Nq-n4ֲZZ0XGafWF2#sA	5c4]<+dan؋ߙwƘ7ؼJq#-..IpzSI!e%2Z\\	qdaRy,UеEޏCԙ4ԗ!H
7[*aC /C{Ll繐,B.SK
eԎd˹E<D&W";	LV/rKݙ+y}чnZ6;fXzĺ}{̶k%FLS/fbQ/*'(ĹѦl1q
$q:HoSp<$}.oh-^
gnbH?L&Cv!uQΨTԸ>eK#!5j?喐!>+nGigxx=|eD7Qt$2qG889dHUkì&\ǫdUJW%V2
Qэh)

~>$΁8;+P*h͆QS/kz.9Fy(	uAV3j
![iCU^Na>'	xʬ(u`䱝Lƙs>*ƙ4exCWXU:TNU1 8*:rol7|A. &^gxJZu.ڲhHj^sJu	ٙPlɠ|wZ=4O٪wX5?uOJ%+Wko;Z!:PoTTuu?Jk_đf::(uulvN`-<
3$g|i>V4)6rM>G
g<"'t3Xe

xO/cgqX簁M|U_h'|1AW?!8GIf[aY³W~Ƹ`f
#.PrAM*E0>WQpx-?_9[ޣC/Wѭ{MEiO
lD;ݫjZEIYQk	2S9K$VAX]Uk׮&^Q{rՠ5(Sʫ2
l+<A]ć&)QSܬ<O6J3MM|&OM[*ϭ{<^LD'KuR}{gЛGlHQOH$x?ןs/M,leI0O$)8`Bگ-|ŸM/$<OSMr%
4azN։.;T|3Xλл7;Er%S/Gdnn'2!8hG+g$\X5PK
   ys[}{    *   de/cardcontact/scdp/utils/ByteBuffer.classWksSE~9m.MCZh=)rkɭP(H)JKP-EirҤBe_m
3ttw?fsfڱؙl>ozLyPؖ2cI#J沖bdj&6k3eNLyl: a\p;azyXbаa
W@5ERNZS"hA+u3O8`| 4}<oe^$MZ5cf/`D
,sZm|273Vg/L[˯ٔ9lpx.iX\փmpsA/B>3[͛#U
D9kU֍{;KA@VHg2 *3./vW˦(z~ǜqXOS߇N{q O
dYcܐOg'LsyV('CNE>?K4g05ONSxzsI#3l[ujT\]bj84Lqꥉǔᆂ5%M>ǳ0vja*qgּ4~Uzj$0D8N3*ouIUX[CP&MKUS(d4WkBD~gb	r$-?/9UtY[Rب(fa$r \`Z3$95em<.xkC!6>nݓ_i3߃RN9H9uaZ0d:qFؖ=w
;\.#`4tNՇf-E-+$a3xڪx"܊,RFꀣ\/
8^f%"8(O8|~.ݲd6NW`yl,WX,X
Xe]+aX+`k)WN7Omv_@XpNGccKCrnF{*57o"˴%i-zEbs0q'~DgCX:'hKMYq`=t~#S>vYJo"QG#@P6`ޥS? [|hAx^J/Vl}2
5^'d=2V 	um5"\KMő6ITq).2*6ۆw·!h[_C`o.h)Ҙ fS=ưhmCׯ^z
znI?Od+HUJ^T_-Ačh҉7eک7)&	9­MWJo
RT>Hwӝ,BBZ1Q|ztZ".kNRh}[P-cJ'kJW4ώv_Gѫ5kOiozZ5h⳿7P~~~_S^]Yb3\b+]c;ىn;DDHj%N%e\RdIK{eBJ#6RK0	GOE,%O8@˅<,rb+!l1"Zu5(wHik[V8E8[Q-	?lIE`St]4!MW켍v}54H:,ge #.#.Ul#n{IT {%JS19qgLQ PK
   ys[2`W   >  /   de/cardcontact/scdp/utils/MutableTreeNode.class}
@E]Y--(fȚf(q"(Z3̝z0ACI`ʆ:N:E&̩%Z%!yN*WҨ(ׇi&0XL.ߘ@-SN`,ўŖIT%x~Jn,̏NM2i^P+|@?)AuF}4^OڜK<PK
   ys[Q'n  )  *   de/cardcontact/scdp/utils/ArgChecker.classmOU- UjmuRԧavݝYgg-%Qc/Bјj6}x0](%Mv3;{ N]u#C,d=+]XXRwF5,C`xΏ CwF(nɊ%LAq4 Y蹢^l)VQF4Qk4e`0RXr9YE
y!*xiX"2͔tK˫eE-X~G#O)D!֜+ ::RIxq!g$-гZy0C{cbQ6{%UWT}c@DkE]XFYT>"0$bZj]3MW3f?hr#J*bSe]qA\(*2q1u#f8䆮<
<CVJ+JfvbQU&gP`2./,:*ȹ9cXZMi@'wW7H,GvN++SrnSʎoV(,{24e~uR.8tiR8FIE*K؎~2xad8I9&yeX8F@7vw?exnݷ͇)=7:mxsS|@9?y2;%4^>ЋM0.I2jCNg] ŋ6%;oEֻAа7p.E<n)Myݞ4BAӛf8Ii;؉C0aes8oЏW _R߃VKa-FF~A*-w65w$<k Dw>LW\rCr CP
)4^my
sPT	0KKLcv
vm!~D]^%[0jـsG&|2QNJw.i7}gDJӗ8/q_UG]Ku.q8xcM
Mxv{M 'i`hzo:_;p~٠embzN'o06F\ѾUѳ)(зPK
   ys[           	          A    META-INF/PK
   ys[m=   R              )   META-INF/MANIFEST.MFPK
   xs[                     A   de/PK
   xs[                     A   de/cardcontact/PK
   xs[                     A   de/cardcontact/scdp/PK
   xs[                     A  de/cardcontact/scdp/cms/PK
   xs[ 
=  3?  -           V  de/cardcontact/scdp/cms/JsCMSSignedData.classPK
   xs[s.I
    0             de/cardcontact/scdp/cms/JsCMSEnvelopedData.classPK
   xs[  6  ,           u$  de/cardcontact/scdp/cms/JsCMSGenerator.classPK
   xs[                     A:  de/cardcontact/scdp/xmldsig/PK
   xs[wj3  E?  0           ;  de/cardcontact/scdp/xmldsig/JsXMLSignature.classPK
   xs[                     AU  de/cardcontact/scdp/cardsim/PK
   xs[3     0           U  de/cardcontact/scdp/cardsim/ICardSimulator.classPK
   xs[m3    9           W  de/cardcontact/scdp/cardsim/CardSimulationException.classPK
   xs[r@XzZ  
  :           X  de/cardcontact/scdp/cardsim/ICardSimulator$ResetType.classPK
   xs[           !          AS[  de/cardcontact/scdp/cardsim/jcop/PK
   xs[]lU    =           [  de/cardcontact/scdp/cardsim/jcop/JCOPSimulationProtocol.classPK
   xs[i8  N  >           Db  de/cardcontact/scdp/cardsim/jcop/JCOPSimulationAdapter$1.classPK
   xs[XQD    F           d  de/cardcontact/scdp/cardsim/jcop/JCOPSimulationProtocolException.classPK
   xs[
2	p
  1  <           f  de/cardcontact/scdp/cardsim/jcop/JCOPSimulationAdapter.classPK
   xs[۫  
  8           Jq  de/cardcontact/scdp/cardsim/ICardSimulationAdapter.classPK
   xs[I6  <  G           r  de/cardcontact/scdp/cardsim/ICardSimulationAdapter$LifeCycleState.classPK
   xs[~;>  \  9           u  de/cardcontact/scdp/cardsim/JsCardSimulationAdapter.classPK
   xs[                     AP  de/cardcontact/scdp/js/PK
   xs[@$  Z  '             de/cardcontact/scdp/js/JsCardFile.classPK
   xs[16,  6  #             de/cardcontact/scdp/js/JsX509.classPK
   xs[Hu    *             de/cardcontact/scdp/js/JsWrapFactory.classPK
   xs["m     %             de/cardcontact/scdp/js/JsScript.classPK
   xs[<#
  l  #           o  de/cardcontact/scdp/js/JsTask.classPK
   xs[
#.  W4  #             de/cardcontact/scdp/js/JsASN1.classPK
   xs[8  -  '             de/cardcontact/scdp/js/JsKeyStore.classPK
   xs[WA  z#  (             de/cardcontact/scdp/js/JsOCSPQuery.classPK
   xs[    7           + de/cardcontact/scdp/js/URLConnectionStreamHandler.classPK
   xs[a  <  %            de/cardcontact/scdp/js/GPTracer.classPK
   xs[[F  	  ;           k de/cardcontact/scdp/js/SecureChannelCredentialWrapper.classPK
   xs[Yt   H  ,            de/cardcontact/scdp/js/JsURLConnection.classPK
   xs[\  a  "           6 de/cardcontact/scdp/js/JsCRL.classPK
   xs[nA    (           = de/cardcontact/scdp/js/JsTLSSocket.classPK
   xs[ǻ  4  ,           L de/cardcontact/scdp/js/GPRuntimeHelper.classPK
   xs[~N    #           N de/cardcontact/scdp/js/JsLDAP.classPK
   xs[/=     /           a[ de/cardcontact/scdp/js/JsIsoSecureChannel.classPK
   xs[;o     -           g de/cardcontact/scdp/js/JsSOAPConnection.classPK
   xs[bI  (  &           s de/cardcontact/scdp/js/GPRuntime.classPK
   xs[,E  C  .           u de/cardcontact/scdp/js/GPTracer$LogLevel.classPK
   xs[                     Ax de/cardcontact/scdp/sss/PK
   xs[{?
  \  2           	y de/cardcontact/scdp/sss/JsShamirSharedSecret.classPK
   xs[J1e  v  )            de/cardcontact/scdp/sss/SecretShare.classPK
   xs[ӲW    1           D de/cardcontact/scdp/sss/ShamirSecretSharing.classPK
   xs[                     A de/cardcontact/scdp/pkcs11/PK
   xs[{g    1           % de/cardcontact/scdp/pkcs11/JsPKCS11Provider.classPK
   xs[̚P  -
  4           ( de/cardcontact/scdp/pkcs11/PKCS11GenericObject.classPK
   xs[|  (  /           ʟ de/cardcontact/scdp/pkcs11/JsPKCS11Object.classPK
   xs[¸'  k  0            de/cardcontact/scdp/pkcs11/JsPKCS11Session.classPK
   xs[                     A de/cardcontact/scdp/engine/PK
   xs[95    5           P de/cardcontact/scdp/engine/GPTracerSLFAdapter$1.classPK
   xs[ 
  O
  2            de/cardcontact/scdp/engine/PrintStreamTracer.classPK
   xs[  
  &            de/cardcontact/scdp/engine/Shell.classPK
   xs[GG    1           P de/cardcontact/scdp/engine/CommandProcessor.classPK
   xs[0?    /           M de/cardcontact/scdp/engine/ScriptExecutor.classPK
   xs[x  {  3           u de/cardcontact/scdp/engine/LogbackInitializer.classPK
   xs[=   P  4            de/cardcontact/scdp/engine/FileResourceContext.classPK
   xs[Ers&  0  3            de/cardcontact/scdp/engine/GPTracerSLFAdapter.classPK
   xs[|]uer    2           , de/cardcontact/scdp/engine/SCDPErrorReporter.classPK
   xs[
    -            de/cardcontact/scdp/engine/ScriptRunner.classPK
   xs[nC7  -  6           : de/cardcontact/scdp/engine/FileResourceContextFS.classPK
   xs[Muϗ      9            de/cardcontact/scdp/engine/ScriptCompletionListener.classPK
   xs[yc  /	  ,            de/cardcontact/scdp/engine/VersionInfo.classPK
   xs[0(0  
  6            de/cardcontact/scdp/engine/FileResourceLocatorFS.classPK
   xs[J7  ,  4           Y! de/cardcontact/scdp/engine/FileResourceLocator.classPK
   xs[{ơ  7  '           G# de/cardcontact/scdp/engine/Engine.classPK
   xs[9  C  1           -; de/cardcontact/scdp/engine/Engine$MyFactory.classPK
   xs[Ud    /           = de/cardcontact/scdp/engine/ExecuteRequest.classPK
   xs[Ie	    5           fC de/cardcontact/scdp/engine/BaseCommandProcessor.classPK
   xs[           !          AM de/cardcontact/scdp/cryptoscript/PK
   xs[&n
  !  8           M de/cardcontact/scdp/cryptoscript/ScriptInterpreter.classPK
   xs[|w  '  5           X de/cardcontact/scdp/cryptoscript/JsCryptoScript.classPK
   xs[l    .           i de/cardcontact/scdp/cryptoscript/OpCodes.classPK
   xs[m;   /  6           k de/cardcontact/scdp/cryptoscript/CryptoInterface.classPK
   xs[                     Al de/cardcontact/scdp/ocsp/PK
   xs[1:g!    1           l de/cardcontact/scdp/ocsp/OCSPQueryException.classPK
   xs[U  2  (           an de/cardcontact/scdp/ocsp/OCSPQuery.classPK
   ys[                     AQ de/cardcontact/scdp/gp/PK
   xs[1
  //  $            de/cardcontact/scdp/gp/GPScp02.classPK
   ys[   0'  )           q de/cardcontact/scdp/gp/GPByteBuffer.classPK
   xs[C2    5           ج de/cardcontact/scdp/gp/CardEventListenerAdapter.classPK
   xs[g    -           ] de/cardcontact/scdp/gp/GPErrorException.classPK
   xs[q"  &  %           @ de/cardcontact/scdp/gp/GPCrypto.classPK
   xs[Q#    1           ) de/cardcontact/scdp/gp/TLVDataSizeException.classPK
   xs[A    /            de/cardcontact/scdp/gp/ApplicationFactory.classPK
   xs[RVb
    $            de/cardcontact/scdp/gp/GPError.classPK
   xs[{z    -           R de/cardcontact/scdp/gp/TagSizeException.classPK
   xs[v    9            de/cardcontact/scdp/gp/GPXMLParser$ArrayElementSpec.classPK
   xs[tI-&  X  !           < de/cardcontact/scdp/gp/Card.classPK
   xs[{
;  W&  %            de/cardcontact/scdp/gp/GPSystem.classPK
   xs[I$  S  '            de/cardcontact/scdp/gp/ByteString.classPK
   xs[CC    :           A de/cardcontact/scdp/gp/GPXMLApplicationProfileParser.classPK
   ys[&nJ  {  &           D de/cardcontact/scdp/gp/GPTLV_DGI.classPK
   xs[p`j  _4  $           KH de/cardcontact/scdp/gp/GPScp03.classPK
   xs[:  i=  (           ^ de/cardcontact/scdp/gp/Application.classPK
   xs[Bie  ,C  -           { de/cardcontact/scdp/gp/GPSecurityDomain.classPK
   xs[ZY  *  "            de/cardcontact/scdp/gp/GPXML.classPK
   xs[    (           Q de/cardcontact/scdp/gp/GPScpKeySet.classPK
   xs[0"	  k  "            de/cardcontact/scdp/gp/GPTLV.classPK
   ys[                     AG de/cardcontact/scdp/gp/crypto/PK
   ys[)    6            de/cardcontact/scdp/gp/crypto/CryptoSmartCardHSM.classPK
   ys[ǭ['  tP  ,           | de/cardcontact/scdp/gp/crypto/CryptoBC.classPK
   xs[=   
  +           ! de/cardcontact/scdp/gp/crypto/ICrypto.classPK
   xs[|
,P  Q  ;           j de/cardcontact/scdp/gp/crypto/PasswordCallbackHandler.classPK
   xs[lyS    2            de/cardcontact/scdp/gp/crypto/AbstractCrypto.classPK
   xs[  +  (            de/cardcontact/scdp/gp/GPXMLParser.classPK
   ys[  ,  &            de/cardcontact/scdp/gp/GPTLV_EMV.classPK
   xs[-    ,            de/cardcontact/scdp/gp/GPSecureChannel.classPK
   xs[    *            de/cardcontact/scdp/gp/GPTLV_Generic.classPK
   ys[Ӽ    &            de/cardcontact/scdp/gp/GPTLV_L16.classPK
   xs[u"  o7  "            de/cardcontact/scdp/gp/GPAtr.classPK
   xs[>/  j  "           X; de/cardcontact/scdp/gp/GPKey.classPK
   xs[nY  X  *           gk de/cardcontact/scdp/gp/GPApplication.classPK
   xs[}  Z&  &           o de/cardcontact/scdp/gp/GPTLVList.classPK
   ys[                     AQ de/cardcontact/scdp/utils/PK
   xs[to7  q  ,            de/cardcontact/scdp/utils/GPAPDUTracer.classPK
   ys[Ch,  :
  &            de/cardcontact/scdp/utils/Base64.classPK
   ys[}{    *           ؍ de/cardcontact/scdp/utils/ByteBuffer.classPK
   ys[2`W   >  /            de/cardcontact/scdp/utils/MutableTreeNode.classPK
   ys[Q'n  )  *            de/cardcontact/scdp/utils/ArgChecker.classPK    | | *     PK
   2.\           	   META-INF/ PK
   2.\:   Q      META-INF/MANIFEST.MFMLK-.
K-*ϳR03
.HMLLN,!@r9y%h&\\ PK
   2.\              de/ PK
   2.\              de/cardcontact/ PK
   2.\              de/cardcontact/opencard/ PK
   2.\              de/cardcontact/opencard/ui/ PK
   2.\           (   de/cardcontact/opencard/ui/smartcardhsm/ PK
   2.\Vl&{
  &  I   de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog$3.classSKo1ܦyuiʫ<$AbzPTJ
Q(Nb
H!?
1聜Jkόg>xFX!a	Yf(aP'7c[ob b-nyKHY;sG!ex	yb}q"
uc+b*H*iwk~+X͡a
e0H:VZ#7TC7&qؖ"
rXpNeDtԴWz!ԡ`XJ%z_"xt`Ɖɰ?Z6S0aN)3g$1_It7g@}Dڐτ]wUYuIl|Dye:Jp:O&JnZwAJKރ5>".͹Jkr/ؠu}kRk)=S.k?VLϾRog?n&!dp+۴ghBFVPOqU	PK
   2.\	     I   de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog$2.classSn1=n\6-JK!@$JU.
P*uE.T.*G!N<33g|v8	a>dW'BZGXgG~c@"7#Ae!k<&x;EQȡa-?>O/N4A$CĈJ?ddv櫵~Xʡa+{3!|)Nxt-N#9_sSH!q^ŕ<\5SVn,i`;rҏЮ2

n$Eo<:~SdyY"2f/^aXN]S8]?lYQf-OIb(V$ȒޘJ[2&^
3T*[F]=҆H)FLz	4)yV.Y!k&k|)~F˹Ikr/Xum[ JIg`g	9Bw7ܣ=CpUYDLPK
   2.\1  P  ?   de/cardcontact/opencard/ui/smartcardhsm/DefaultCHVManager.classXkpW^+)kGVhZ%U Dnĉ4%%ǒJ.i׫VvL
mPGS@SJ 2;_;?B9w%6	{=|眻; x"p1%)\pjnQMװPO7<"vAd8YP²dd]3%EpM
W˒aAZǔyV2IIS*S6%X+>K0Md)J4OOG!gkuC	QV5悙 !C/o>4pne]#`	%hMC"gz3xe{-WHn㚬ÍV
/ ùvnr E2Ds@ڔZRh7bFfJ8|eI"[F֘aj;xă>pTDSw ;N%1x;ߑIRәT,.H-Wie^1HBISNT	'1p"xm[ps"N*SWu;WfBwCu7Έ(媼9J91qug2I$D"dq$.):2TeC=y	_QRR岤Fb3\,)")2в*C,1[5)}0p݈mI:7"is"C +4tm:Թn<.C8O2]!*%*$"$^at"}4 3D~MJhKRI-D
h&_T:ɠZ
ΕtRb"we-ͦ*!q+cZR
QX	DA632ȥ^xJJ{wa<;c%X-I`=jz79('~z<o$ .XFݸD听nK~DGp"JoY>9H*˴=s=/Sr
a!qRx2jJVS4WRV2T>nN:̢JnteҺL:ByTʕd1,E]iUHvnQ(܊VԬNUMʒw-"2UmDzFevP/LJ"roIm%oUzo
^iAH@UmV\\jDnǼiʘw[C0	MS+\
wsݠyҢq
9A96~7'}IrN|~?G蹻w~B'wC'4
_ė 덛%he|rW~Rk͞!7F6rt,WFit@`~r>^]{r
rn?h[_9xߐ#ฎWt\o\Ewr8~$7 HoYp]GzݝCӞrr倳1./\!}4U#W؏:&_ER[[C΀-Wѱ7֠VQ~HhCsx5Bnj~b19^6Kx	j8sxE<KџG/U,WQƛvDS3+LKx+̇M.QľQL#:'Ɉ&͹xܚѵѮ)E ot>!9]=;S	O 	^{֑uo4k"[}-vq>Nzֱbsx5n<I㓴yS$Ao|&l	ctt<<^"_P6m┧ljԍ$EN1	x6y!o_@НiYkLtMYieL6Ē)YK?/PK
   2.\@o    C   de/cardcontact/opencard/ui/smartcardhsm/SmartCardHSMCHVDialog.classW	|ݝ2\A$((C]$,!8d`3bQajV$E<!(ԻVQ[zU=ll%Hm~}}| ' dh'0fJ/ֲF5->Y +!~dhM('Z"1#vQ,nX]2mzd[Q=i5Tz4L ;nZ!Zf
 a4(fI!N6EuF2JD)%j#0:ҺEev`<&0	47̰iGo KXI&cW'3̏C+F7\m?T4qݣH&eƬh,ha5\\CG@nފArdjl2R"
0>lu;.u;CtN8v ^R)rEcu(,H0J쥹z':d
kKSS0c
IU.uNdqfHsA[aWkrxU, r.JSқh 'CLH `]9JY^,,7q%Ά.7{~,b$(ce$aQIl	L_AơrgG4,iiC򿀩A%ᤌ,Гvگ2hK KaxE`	vI$0%4R}Ϳ@1\I
6RTVti
&1Lí*tPqE\MnJqp.s,
Lua4|R	[覅1˰tD{oQaVҌY\ﳶ?bFc~KT\2J>b+c\fG'V1#M\uN
RFb12
X~$ۯ83$S^dڭD,:#INI
L8߁CD5Mb?~N-InE70JTF6n*np+kpCe]*XYiک\rT
°VqK9]p]cype]vݥa3視02n{$n~
uifp]YMںpumE%jwF`8X
.fE`;}5k39${6
&h_除`q4)EC4 v
/%M^lv!&GSYdZ-X$I۰8*}d)Oixp5hޑ±8ů4<h0f3Ohk?`
z4ŭ,`x4}IxXң}zdڝEw=:M?+ST:mGvM
#:P񦆷	cёgpHQۺxJdH,a#,{1|tvdE8GYLY4( i=?> ӏ!%od
c4G4;Cuz>e,]0ҋ P	".zrȘ!j5f#֛o&HjӼsY%MaHNipGS};b!b2HqMC{M+ΣL^Sh6B4q,q
HC6oӁqFpGCڹS&Côskq!{ <1V&jv22UTh*}s#QUQ_erN2f\FyAZT48B+UРת^ 4cɕ´.i4W+יzvwtw\ܕ&N!؉71.[02gl7u!OKxKxp,	+%\,9.I>E%\)S%|CQXS{pf_#YF7ic)va}ƈneLl*Lx{b8}Q_V׋H_l2YH<\2t4bKPEuXBgc9tz4BDp9DC&Ǖ4%(9YrD!<X-ƠCdtq/} ./م+5=4;ٸ@Ju]If_d2OveXU{)eddd(ΣGER{ɀW<}c]cZri}$ep=%NLKY#aWmP~㻱}ȱA nl=ctMp5g\bOX0xҗc0޽U.~C0k=Jדyy63N6닄9>AϢm9+? 4J4g;4=3+|yzDSi3۱bn<tIlڍ_deƋpq
k)q8֧9
^I`/	n'!K7>>j3eI{Karʂ+eIR&:kS
XO)n&[Vl@'Z46Ҍ~ 'F;(C9K-Q{*K-G^qaF/qvax^Xoa腴 v+xB'b<y%Z4%e)^VVe^U.kZFldxG"* >RvcY#VWLH4J}n\\v78:+ƈP=V:(xju
k{WyTL]C"zYDqT"OL"bl:Ё1{ɍ>J%riUq9s>Eh/UwTT!h}X8I;Xb]*VTMwc̐A_{^|zFry<IL24YhvAPq$GGd_PK
   2.\[dy    G   de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog.classY
|TՕL0<&E$  2I 0$1	
L^0B_(~]+VfZu~۵~v]~V{}o&3Ʉ_{s=9t_ Eh0kqŌx_{	뭸eo$x4
ӡ6&CA3.CCV(5`$mПYjI0ۨX0mЊGxOF٠DL"%	"ʤ!ۊZTb(5k=1ƏRBYЀ73n-;f0s4q>. \0޼ϴgC#;Ě$p1SJ'07ePje,1jɑpb(nIQHbQ1gZBIFHTR2qX"zJUۥeWAv҈I[C:V	,5#0??f2HN&}-V\\Kbc#1P*9J
shB"FC2XAzMQܨ*lbϢCIFͻHΎLވWwîu:E4!)5~la3{+Өcqd΢a[8ˋaۡIۙ`0ll1RD2c=4Uo#x;ut`!0,Gdj-
:Tc>!N6[sȈY=!N@=L[[DrD3iY?0h8KF3[5/K~PL;# x
S#g bHH<	c%'ň :69
:	^JF{^jۡ-I'b$ zAZI͸#\]=qSdnq;l9`"FfJU>QܹS]tԕ+B>.
Y{t+z #>}>g=ɳo+ިb^jxp~Z$>!3*Bkd(e&YQ3dsxkG6˲żd"%O'a|Fcٲހ.=1|qǧ\/uJ1
B+\:N3[[;;[#ͻ$ϞVns:~-%O+Zm9Nóy݁_kyHHČMm-ͭ;c?#4sil[5m2)gu9^+Td
Ո5%|QԪLR1U䰪Ws
ʩJk57J%EkZrY u	S&Q՜kr8xObA<X)یK^!6TM} Xx]?mkx}SR,cذ1j'D{:U8anBu NsaĆѬ?'7r+'_:~fV<;F1tXW6ُw&	:~_p3Gl
+NB-]<"]hۤ ?~7E'O4J$私Hv s
*",*"%F:iToN&9z!#{+ 7Gso7ÊqwL:ШD/*`{ZxH>]:*թfsnH$;$7ֲDnAFt>+dSo"|fE&EiN|f2us]LZW^#}P:-|tNMu@|>|,]~ZU'@AШR*ZVB1Y;+>xgVG
pi%S;V\UtFuZCk3=a2;AқH6<+~-t])G=cye9j$.5@Tz6\yÉ$gHliJD
1S}1k%GtB[9HsoT5
vr)7/9ⷃ׊Ŝ
3HyEVVڊ?m?Rc9@;C]:μp# :9e.14t0]<3Mdt	_Oau23%dEHZ%z~KG-4,Tޕ|>N0Gl|МlNY0p~1z`1lרG~hÙ/=|x+:½`vI_to`KRATyT9fzus&nԬx.sޢyr	+`3ծZz}6s
ќ9L9y;`ʳZabјYM! .P+E<̔ 1=S8ơ6S{?:,滻w:t8.5.vǥX厫rw
Xܱƻnw;K{wW#j3@E&9w"xrV(ӘQz^e(W|_K|Wr5_早ʳX)gP=
Y)%5dH["砝գh;cWg{WiU /ps9s˷-ռv@n<}x˰Z֠;"U_Si>Oن;~,bgVRx2iDYdSy>Ý\ƍYq.wޮY#L:2ADhaWDE2muEdޕ/rI⸄QGJG\)yDGb:})HB{4>}Okxnv$DqʷLgOW+۝ϟrwW&D<6g:=۪p#I"+Y}jET383Ÿ<Gre<
eD	)x;F7*\q7cF<y܂1ʏYv;N(4w*ո^ǹӹZQڃ~|l|ntx§q<DpħKG;xc>PAjeRz5^b:ZH<g%%/}6ŧ~|l΍fr9$ofq^>W;u;UH?<ͳL
t
钷Va]ooZ]D1pu͜gH>t	4o	H+]~@>\,.IRTvg&]jyxbo#F_J&׻|M-÷|[؋~P~]DXN-h(zUꏳ7O;g/t(H"K9%sNg#z#q."=9<eD\1@hrr8en/_`'w?/_"_a
~0E~wT7R1$ϙ8/'h:|y:'.dUA:EʪQ<8T˞|gPfI-D]]?cx+t9_M+N4WB*2hN?|WUʽ1*.*/NEW<ix*RLeḀJ,*,XE+."uZ1"kj=1\9,`-h
_:ǝY
|u]RpfKeo/K8UL6Υ5:հc뱐^:I7Mnp[[nwvq|fI]-Ǹ 5[؂lA#*hVKf-	ɗ
%q(}U5Fvъ1
-OM+!kǨFm˽\,h'czy\Ll\F]G"B2Dl,,;[et'녟KOm1ExV>(FQeGnH27cǔ^*7Mg=PK
   2.\    I   de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog$1.classSn1=nܺ4i)VZ
 􉇢JU.
P*uEކB !x(xå)x?~0CPaՉ7#sf7\q,4e&X
*Y;L!ug)"BE_Sũ?d{!?BSǑ.|/`	°73bh
NtGr?ƌۑC⽊K9y+צ2j&ƶUpЮ[2

R7~ŏbtU>ב3ND+;㴩'i?l9;[DTD;r7x@beHUJǎQ㜶Tuf&MLnfȚwWA"K?տ 1͹NkrwXum Rk!=k&.˫g\<VLS?p2~S34wQM#K8*PK
   2.\]m  
  E   de/cardcontact/opencard/ui/smartcardhsm/SmartCardHSMCHVDialog$1.classS]OA=ۖ
*wն$<bP[SIMI|v'Lݙ-!㝩_Mv;g=sޯ??E`CO#<B%
MFBZ?ǁXgA:
rZ݃FD+[y3u!Qu.yo	xfq"	bl7##RJ8azE,`CL%eX$XŲxɵTSUk>.2PTm*붜\Ɖ:ej=\CEaKq8?N(Q!Oz<;]c؝.qeka)sy)qp9}vrSs@hVXT>!(j]J85kRR!aRPۄM
+휐5C<Cw	|k:9wN=-ʯG\<Vrg)>n61p}S]s4Ps$= PK
   2.\           	   opencard/ PK
   2.\              opencard/core/ PK
   2.\              opencard/core/ui/ PK
   2.\l&p    0   opencard/core/ui/DefaultCHVDialog$IDDialog.classVYwSUN4MiPBJP)E
2&-in9i"88iײkw_}.97
`Lw}9O vk'PM~#㪙
S@6R<׮)cn
*xRz[.TK(Pxm}Sт<n`ρE}hS긑.T-va(5e
ո%P֭!
wl!#妪yօzԬTЀU1MJ]Qd}܁uKK6R.4IXeuODh;cPFlPwxկ`ZCdKnQ(
+N2'xRM=NfK%2l+*dd-UpvRDl^5-:#JT.[`,B
ڱpJB>b!SĹnzkidX_b6JfJHoد n%x%U|!PyߖHWaػх4	
ACqҒ!³`A!tnBj:GR%Kԉc8	*V:xn#t>hU=a5"	5ryuV$2j'r`DAy9+"s51rfZk.Ɂށa-eLO)0A a٢tb25̛+$Wgp}zVHi" =rԻՅ3xJE=8yAѤ,WM9. lR#7$QL.
2n|G[ZOnd@36lTjb^X?ɨL$l+<s"cRA"ǰbNѳB8q`M$TI4A(-2%,Y-sԭf$7|:#9McW/3Cle)uYǫCTr@PhYid)nҙ_4TҔvj[O
>`J0@MEzD=݈e/QDs:ˀ-6rNE/S
P@ߔlM1IT=	N+vVXSOEuٮOCylT,͞
{>b4l$E`n$̣DI|[V]HK+i=0yDH,BC)B#VZ#X+bG'C}exwڃD^
4P88?؎B8.
T/1q'` "NH"1HcSt~~[wB)
٩9ֈQ0FVuZx#x&Go-@&r9H#=ջ$e} ZK}LMn^ѷ]CM!:<uj*	̕Kd:*Mԛp;O҃Fkiht	vlǔeS\пQd'o!bɿ-LR@
Kg)#5eS8ēa9$`sނ:+Q\k.r$jAPK
   2.\-|    2   opencard/core/ui/DefaultCHVDialog$IDDialog$1.classSKo@6/'wyH.zI5(Q[{I5/ +8=#$8̧of;GxXBY9y:r.Pرgo<U{q_N1̋ຉ"JLK+n<Y(KSfkG\9T/Ĝ!|Қ2Ja<W:t\y2(.ZPRP
<SiQ({@f`uQ+/ctnEքZKW0@/E8>!t?ᡧa!KNq|S6sOơ#vj3tuTV2P3Zh5h&RwIm)6G
@}GjqF\KVDL1k_`%1h/PiD;ɠ	.MjU,GFcc>QBV@	MCw%CJki{dEͤ^k ]<o:=ȜPK
   2.\N    0   opencard/core/ui/CardHolderVerificationGUI.classVYsEFҲNArP%!$qbc	׫jW쮜3mp<䅢( DIGQ@?AQ@"+8"*S_CATC'b)=gv%7<q>CliVbq$΃Ɛqj6t3f.O;"wͲi;F	crjO:]VPa<A^떟Y4u˩Bz\[>t)๦vyHb4\Êsi+\gH1⻦]Wɓ.,}Zl,װ+R%Za
.c:ȧ'r`\##ܭn@?
y]?|+z.m2oIݶ<sn:ժnK2;6 {WslKK*2X +habX rU#i]nki!F&\ˠ\ZG=R'Tumie$)2Ky͇
^f"Xi-T_4-m
oō
nҰ
:>ꛖGme1mnOn7@lP"͋jrpq_TPp]}nSTCܮB{Hn졢k[: j
{z,rMKaTAQ~92J*ӆSϴF2h,wj/Hkn
^j+:0stcB-UL'5apjxе8&COJr<2?*>.L]s;Z5ܧE[yVyӁܐSpwn;Y.1mMB"	kw̔C8LQB՞ră<њai>ۧOX\JU]S|QҤj-$vɨ{SmϺF|8[|]3;r #ZO#`F$)!V|qBrJ*'R{+IyfێKZ9C['5Auܕ&ᆱRXPsfgNX[+|#N5vSjy[2o8+B/\"Jf#=h#*`]$hLff2P256'T{H	MHнt! h2C4F{-Db/&AT.ra!D]$#aYpDXHbD`e7˲?bQ6%paѬ{KMX$Kife 47HE6G>[Lj`	-Ӓ]wK2KXnh`ga4	tƺe	9fEc$/ej)F
hkĤck W8*S_xFY /KK4
ҴK#$LN~[Wu:Bi\?o6:O↾X*uBbxcXM*6+렕xR9,

}5d"Cx*L\]O$؇TygrYO0\·|b1bt/q\CX?=81t3~KY=^25]D)R	qfgQiFy0$
uU)YLҾ4D[dCbt
e7Dد\nBWIODO$.S7G=IPK
   2.\T  u	  '   opencard/core/ui/DefaultCHVDialog.classVmwE~&mX(@Y`!`ZK""
 66)Hk/dLIˋ/x?Ԣr~7[;)%Ivf>ss_NC yЦ!d î9kJ-{6uqz$C䌰<ЖN:Un,,8.Oz]3V,F*;2";ao&E9><>f4!]aϦ{ME23vZ6,ұSiN*i3↎}fI(
]k9%yE<ic8vfKt4d鋭Eq
yٍ*G-(CjR*oHOY<3Ly1p5tc:WIh)}^@?C2/<1J\
&
"M:Ny^PIN>אx	/k8iZM 
.EF6n{± Fp8qg53:S<(K,4
RC@%:qQ,2JGut@9:TsM72m1|YEqF;=fUCkaӞzd
9EPGV|Vg1.-WuC%AXSh:67xR5EB#\6%sF3Et}b]yth_[QT(JjtBZUmD+:{0"bzIqOCmP978ғUqYr^G^5
-2J<o,hr#VA:MoO(Txqkէ75'oV[kw՚P1dBص16wʖqD}5>a8%0|:*$ t2P#]|V)#ܷv=Eψ/L*= kN#{x?Nc}cutp?E@hSC >ge:zp81NӉo8eFLҴ.cXTtS;M1%D\|#GЅЏɳ{_0p9%Wzc5 )|aivfQY\'34r$-~g!5bR1OG5L2
Q
o34'Le?;~~Q_vun? "NMc|`PK
   2.\O    5   opencard/core/ui/DefaultCHVDialogResourceBundle.classR]kA=d4v[۪UW䡃O}"Z\	>M6tv&"KE_9s>%<oF'Lܪ*df4or=I$Cʾbw{CQXJg<ҳ]mC+>>۶&mH'I&2
2USİ\9[ZT}|H@jKwU:d1
uqdf.uL<6{r*{J$fv^l(Jیa/eh̄ ?R?4H"UžX׋?'iֺ?y?>%Z;*eoUoBH54]Lը?A4<`Qݹ@kTQÿQX&E߰t~H]u)Gu~#Y@lUٜ+f	kb3<-Y~PK
   2.\RW?  Y     MessagesBundle.propertiesn0z
9T?]aX5
nÎM;BeѣӏcIC/E1M^1R%ң٘p,Tg#|}cYrWu=}1
zP
u磱{JY *x[B
R+WS@xnV_kzTtq?z'H؆<'/.&|Nܟ!Qcָ{lj
䀗.WNfMfQxC=ڈp>B`!BYNi	qNm
zy
ҴsY]CK(i
SP7#7,`76W<2g'Pxo{RnoL|9Y|\mM}~ao>YuZ1P8	[ƣ}.IPK
   2.\`Iy       MessagesBundle_de_DE.propertiesAn0E:qVhq)i,ph!>_cte;Y4?fLFˊ@<`i!%E/JٰUMTO~%sTclXax|@7ױE-MQ } @#ɑ>t/H/͹uw@oV4#=ϻ~8CòJsOfs:i{]w#`J'ᕌhKSl02ü7k<N%2:AAF@UA{pRN\kvoE4)Xde(Gjg%]NGo9QpԅЮbx<͎Tpc|dSnrtҖV=|_ebFߊ4dj3DqE
s^\3ˇ*}i6ﴱ"ޚ̟它l!o$PK
   2.\           	          A    META-INF/PK
   2.\:   Q              )   META-INF/MANIFEST.MFPK
   2.\                     A   de/PK
   2.\                     A   de/cardcontact/PK
   2.\                     A   de/cardcontact/opencard/PK
   2.\                     A  de/cardcontact/opencard/ui/PK
   2.\           (          AZ  de/cardcontact/opencard/ui/smartcardhsm/PK
   2.\Vl&{
  &  I             de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog$3.classPK
   2.\	     I             de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog$2.classPK
   2.\1  P  ?           }  de/cardcontact/opencard/ui/smartcardhsm/DefaultCHVManager.classPK
   2.\@o    C             de/cardcontact/opencard/ui/smartcardhsm/SmartCardHSMCHVDialog.classPK
   2.\[dy    G             de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog.classPK
   2.\    I           *  de/cardcontact/opencard/ui/smartcardhsm/ChangeReferenceDataDialog$1.classPK
   2.\]m  
  E           '-  de/cardcontact/opencard/ui/smartcardhsm/SmartCardHSMCHVDialog$1.classPK
   2.\           	          A/  opencard/PK
   2.\                     A/  opencard/core/PK
   2.\                     A/  opencard/core/ui/PK
   2.\l&p    0           0  opencard/core/ui/DefaultCHVDialog$IDDialog.classPK
   2.\-|    2           6  opencard/core/ui/DefaultCHVDialog$IDDialog$1.classPK
   2.\N    0           J9  opencard/core/ui/CardHolderVerificationGUI.classPK
   2.\T  u	  '           =@  opencard/core/ui/DefaultCHVDialog.classPK
   2.\O    5           IE  opencard/core/ui/DefaultCHVDialogResourceBundle.classPK
   2.\RW?  Y             _G  MessagesBundle.propertiesPK
   2.\`Iy               :I  MessagesBundle_de_DE.propertiesPK        TK    PK
   2.\           	   META-INF/ PK
   2.\:   Q      META-INF/MANIFEST.MFMLK-.
K-*ϳR03
.HMLLN,!@r9y%h&\\ PK
   2.\              de/ PK
   2.\              de/cardcontact/ PK
   2.\              de/cardcontact/opencard/ PK
   2.\              de/cardcontact/opencard/daemon/ PK
   2.\K&  &!  8   de/cardcontact/opencard/daemon/CardConnectorDaemon.classY	|y?iYIk.q. X$,qD";Hcfݑd֦G;i.'98i"F184ŉ4G[=HNҒqߛJ[?v޼
 (C
T*nX-ikv;+T^㸎By*QeD
L)%ieRI
ٮ[R=-|o\.=0'me;xJAŅ\Sp>a93gʎ씩&aBH*JHz%kgF=he|M6-1˨p&ILgO/Zab,20V3ި+֘heNJL\FZ+,lsp(ev&Lc&6IVrǜ>iIqZ閮
˧^N`#Z&lVh~UBFiy.l_j%q-j*۰]a˫wM
GG?a
5"

y

lpj!'a?X)(j5&tb%ǤeL1qn31N%#R+N6z4%dl& Q3اpE~cd
hhvylѴ7FBOK2~t8
7dOʷiv}:tY]6c zVԹ,Ƚ	ٶ막墍:flf3r;
j-
;h2:gQ餭iFK(z_h"I9Kַ\Rk,>`?&RI*
C%|aREkg(J
gż*nW(/)Ir8ǧĕ͎5kÐ<}Kc4ݹ]ޠm3|o&ECI;Gi3i:1)X>fkvF8p,
Fh>/pUDٹ'H&*uFp[+
`8pc?n)JmQؙ~]~MaLܳ_2ҟ}E
kvH3xVö-lij[M܋gx#T`{~c	ø	|gBStP0[xS2Ƚ=sC)@5L5IĻEjʛ+"oRe}'guLRdr
79p] >D)x<fGv?\;q[
<A#x}$X}B!;0ih3n#Lܩ"3E'q&
 iK7i)zxt%?<jRW{g9p.B,a<>
'pVaeW3ds{r
W^E~!}^=vr{DrQ2"7&}ǰNqf&'&T%^ja|5ND+<GSC+9byJTmKmkN_3<{J3+$%j|d&%f&QNkPW$1p-)B\zGjP[v~!_xğ\NV$Odʈ_ӛ/'ku3
+.o[uNNJ_^n[Ϫ;εgqvGL#[tqjlrekSHӺrqh0&xq+ɽ̡=q{:Udǘdvov
@5
/*D-x{xW pEomF-HH/KV{f4jC"?L2_{$eIroW\mG7 Г9rk85T²12TͤORA6V@Ƣ6eiܥ9xdtixj.ҡe$}aʛ.Yd9un^;l?p8oĵ\AR.sMz3hp&iqDomԡӖtrtںg5a^*[[VW5PkY^uMso\X*}8DYn*mg70<T;ƞCvGJT
hn_5Bs֐*b,?Ⱥ;ۍ*=Mzv*Vi#pL׋QFۨb/X*o.HDWI.gIwCmʨ}`1V(c)]|j@>PBDnk`uuut26ڛqX"{!Cǜ:yX zy,Eg:,ƚb}ӏqoZ}v-pzJveځ؉hq4F	ې?pG,?i)k=~VMH~9[3.m:rLHSuVݚK4X[bS_h2ZGؗxclWo|To&r&-Zo`hccޱH|,rXcsZufll㙴mvmu+mK؃h'KȘN?Ԛ7{N(\)'4o%x`U2u	tI˝o<PJOCKXhOiZ:NZwMC!GGi-J:1
VZӇeU"Fg\Ǜ8OȑqzMІ<c'sX;!B|_czVý1gLL'CV7Z27XpnqP誊З0p
/ԇ@kj5+`9Z3RYxÏ`n,To<_}BC_$v5\oVW=X}8^_&xo&q<ޣFMl~oNcH+;S!\U!$(y|D8H}HV}TVB*cYT%71?"Whدvsi\t?hOIHnӤi޼+t?hONQ#n{}DNQRQ?B(9?L|8=ISĔGħFwqr>Km!}w~Ox
OV*5yqP6%Ʒ<|G{I&"O|>HQx^8!gV^mn
|
(U#HgVgZE"L-DT]%V+8TPaCu/;"^'ȵɺڋ0nEԕHXOL<\oA9&RcEq
qT4{?%;
)jRwiE)6B y˥fAhfXGox8Νbg'>$a\ų_ib+|esA朖?ԴTSjZSNJ7%PS}?1 b87ӸZӸ-T}ްdO&؛s -my'Y(Æ`_-l[L3Q؈i=

ߥhoSeHJVUad/`crxߧj
ƕsݟ3jI!g,1" Z2}ESIP+մ+*J\Y?[&W}Wf7ԫ7jPK
   2.\p
<  Y  F   de/cardcontact/opencard/daemon/CardUpdaterDaemon$SmartCardCloser.classSoAP֥P-*,Kx#jlPI<N	nYvMJM<xe|o=ԃ!y{oh氄edʨA"	*`K5
Mq_&*zjw$*$oxY4XD9K֎T:o)#/ZW,|,n(XpWHf
#PySUy*n]@Ql]`$6Pp Put|nyU}ƉśGG=j}%Pxڟ:+<`B¹.WzM|_<
'^x8yƉ*j2Q+\H
MV-/X7AM{7n o0%i?"!rR9s= -qx%Nii5Si'ȟseҥkb1X&})Me1SzHHwOYӲ4ƜM+4Π(
]stPK
   2.\O    >   de/cardcontact/opencard/daemon/ReaderConfigurationView$4.classTOA
[7PЪmAHDHݱ]hw)x1`<{bo
Q(6̛7޾>|tSCHGV,aܳLבܔ[U1^n	/:/Rv-ݲl#^tahܨpd</
Sƚr3,DЏ
Qb4ľpVZIHeI$sæ50*t,Sކ{0tclK.ELE@"ۃ&5LER'ٓk
C\=+Ia
;PVa[z3qU5ב`6()e;MO7qO097k5?!]oXP_Y${oC5djl_
Gx$YLBJ(lGlիEb,C9loCVD/mOoYMZ4t@K4z;vCYdϵlm:#Hs/kT"n3[m!:Yq}
Z:6T
Ј|ꪥuJ
}c&PX4
YojIͽK6Cn`c
/sFn땚wj
HqW`?CR1;X@+Q('RIп23
2˸U"&4ֈ}Y
}Q*xH<B&8Ȇ/PK
   2.\)$n  :  5   de/cardcontact/opencard/daemon/ServerURLManager.classTnA=R?G*PZG[it-?v't*]Ȱ.L, >β!m3s{Ι{g? <E91DCan|U?-KWz|1$`:´rq3[mjt8nNS
{ȯ<):
MzJq"Üy/'^]jOX;
]22t!
C嗳ɦw-/Mn*̔q5kDÌTW^p1nq;b!=18"B7}E
UT l*Z/OGXn]bJHU+^vB&yҕ͛5g;xo(!;mERj
TjjM|G?ԨP@ujP̄*[JWQD"Do2D?`X{Nx*͹W7N, 	rUӔlиIvY`hfx /\n+`Q?i zǴ,T.ZY-R}*>,)x 7$~rL3#O˴נPK
   2.\;U+  U  >   de/cardcontact/opencard/daemon/ReaderConfigurationView$3.classSn1=nͥK(ZZ @BJ(*R"@&6^voR$ >
1v#@!+=Ϝ9gl;B.4f"xG2<2AN(b.
^	=eTRf@}N.b%*	W`/"C5J%C(c.2<*Bv}#T<9
%ǼKV㉑ʱ63f]"}\U&Z56<\	āP&xYF(ƤNx1u;aOdo#POBI;={1LXަR	x)4a=U㦵KFD{H<,QTQj]{͋To)q'Zz`:Xb)gqdmzJ/`v1+4Pi?
55cZG`G8w|b厱#x7x
q@=4\^-=]=)c͑`._PK
   2.\l  )  5   de/cardcontact/opencard/daemon/ClientProperties.classWmp\U~Nn6IIBҔ|.@I6tMҤd/6ݴ ?
jȨU08ʈ:GGAgosνd8Lgsιy<{Wp^

^>7hHDO7md:i	xǃZCPG
t*<o'SѬe>ii3'L+dS[{:
TO%ʹ-YcBt&a
[mԶcV	&a%3iۘ,8&s>:'nIM-yq3y'92}S{Ht4c3e)`k`KfF´* ժ
Ě1ua/:ut!N!L:c:MqEQ(p-,B
fag~Ɛ[mخb@<D@5r#I[uѫc'-J99ݫmPI k*OhR9?ۇ,G\ {Y,y'mm#:　/M%QJUC\Ǩo>7R9	~PǸ\D
58,fY9J$VJVS:YQZ0q7ph|`8/?F*o;@|| ~TU

I8ov],6GS5fLLyNfHVRE=d_YY܏5>ȹa#[8"g,g\d!>ric\Eƭl^uF%2dW0D
3%sl=[tW긘-hZ<>T=J|[Q!ϊd-tNRXÓ.kNe*M aݪ5-+Wqmm7.3)1~R5nK扃VRFXULޚ6Nvo^ٖ6L"WǙ ^K!o
,'L/dL7ozE2[:{t"eZb\>[q*OV=!Tjo~	`Ӧ՟2r93{[o({
4]?eqau?_|sT%"w/pCT|%	%}nZ\1GK?ZM?Zo"/b7f8ӝMUU#.}*m5o%39
si<D8c"k8ETK2,:;дTPsG?jv"݄h^4GUg-a-HЭ
R"t
(h`]u0Բۖճ%.@6AFG:1jaZx˸[,ZGu}KxHwE*,*l~@N"E29x~$&ʻ ǸY8B=rਊxcD;F>To#/>]TRƟ*Ɵ⚬~Q!OöF o z(<|B0<o7^氷W֤B<`gX[ءgտv^X<K4Wdg͋lطgY䲃n}\mzBiSYՆ
=A]=J
NTD
;:\%SM恎8㶧#.Vg[e2	D)6+U=3|?VՇ? ф1ŷqM^^U{a=˔<dyR-t}eYtJ>6d_,]2ݒpcT&*QyPR6\fzWTn&IJwJ7Nyp[EE>;UJ%lͿ\kh#]dYx_ǻVz|cK^:#K+o8o2=vXl׈٧ž8r`[_?ʶ%0?jaBf{ߣaNKsa'+tѰ
BaO6kNfG=7w2PK
   2.\#4o  ~  0   de/cardcontact/opencard/daemon/URLVerifier.classVs:62")؎m8Il'%,$l+vW2*K33	ήʱh蜳.?{ G$"P4flͰ+̊/?fٖ\ :4"!يV+?4L[Uì;vd-}~>?gƲ&"ڃ^h*4@ȯؠZW-P!C{J;%WޚE`g
rm&1A	APNS\[3GSm^Ұky2jβp&GgCѩ<GT;<*;P3l|S5j.@_X̟˕/OMK~*	{T^+0M ogf%t5@ybH[faF:cp;;][3^.;
eh)אIJ,Xu@bFhޚYOjrӨyt/}J$
i;o'qIӛ(|	EՍ Oӄ\8vͥb&0+)8)6i
gY,_
gZC19yi&."v<!9R@L[}r[o.n9'y*j8YŻ@c4 ļ pRM+!NwVMQ<_Rd%錡#X,̞WBsU(ʋp֩m+[6Xt-뼶`<w.bFmnu;VZ̷rƝL2&)t2(v= b(R[DJrK:g4:{ZG;H{T\x`ìD/I:B#4Yrn<cIo]čKe^8ј3F_U)-c-Z{3mt>k՚;jMwSf佛jb֨Jo֯X^1u/h2=)8tm6zt^p}]Vx2y*,oE
Ш4V٘=1N҅x4|9״%ٚyt!T|,xU)_ce
Ùa*\Xl]]K<_:DM!A;``&ȷPok$p9&w
3
A$.}Ѹ"M&rpX&%2x,ؗ)ֱ'&EnD'Դ:u3\WVoC40cfdr$a/){OI7gB>@0FA wW"5Gxu(A<`7^&*\"z'TUDif=Luf/|$99OĔpl1:^ZTR'KLi7ԳHF]ىX::F:KGdduRBX11ļ2ʉ has0
FxCVDi/3XD~aU8ȫJS-YOX|^)F	q1o@VϡtLQxypb|xܽ%u
(E{Dna4]D&A_kSNo;x/&6{#|!?PK
   2.\2   /  6   de/cardcontact/opencard/daemon/CardUpdaterDaemon.classZ	xTIdM` 1"KA'B 
C:<dfnbVmZ.mi	[Zjݪj֥.]\M&0~ߟ=s=}wMuAC\	:/G	?Qa^𙝑p]##ODb, `88VpiU(֟
f90":;a_\HxY$`ӸH̬߬[%.
իt8g}u]`-i\RrWE:
T0{PtöjP{~PMJZP$":8xD$uYcb#l&VR)fleĿLp&8@%  L,iu*[/Q2;kpa<WJ"PԔV4QE[	6geDQc`:)W(4u:̸1,QXh*Bܓ[I}8܀X6|JeTEt87}ꑕPhWFp
x@rYp^u¦&X8%[&b1_?v@מI#hhj^D#`f`V4ܡt@i
dԅJMNsJjvB':_0dV
mB+Vh3p2V
h:u	Ɨw%23jP3
:N!S֭3cf`u,HѱF0>2{ޅv|AW+3xvX6ѵtmm+̚S9w/te&10lTtlJ]f ^o 3
&K&)qzNz{ruz5W,$|tĥ)Bj.NЬOF_0*s͞=g֬Yv1p.Ĩt(i&
_6|hB2#<]yàVt Ӈg^o5U/7CVz`D4YIǷiAYڞV|_n
\)(iqU#Ep2)ϊ{	(Cl65}?6SE`vX^Ք~$:?x,4j<T^hY00^NpzN:aq[ep3#M<+{E,U-`T
-
@}^r;4j;p'ىGCAZ.IbY08qښY&p7*01j)Hqa~~	C3M =7:LL[r$E!zkhZ£xL<"aNu-58"k4񤲦O3rD*(+:ZM2@ʟPgwLCLdxՙZ%(KU+x1}vk
m񦁷QZK0*	&W}
T:ߊjʉ@m*i@&=
]tFj:>,I1Ʉp⨗FEQZi#.>R ^2,*.>1)Ut0t%0fE$Ē`(hpeڴF"Nܶ$m`Ɂ(047i=
vu*t)0y!(ӥu(HRj[3j5]=fw*5 `Ţb>EkAU5\Ǟ`>,2A&

y[dqİ$CJN3+Zo9qC<Ԇ&ULf&\gdS
&%yUY*ca.l੶Sd!0Vfc]uIì:CfZwWԎf,/6o$gdKNąr2#cv
82+#^gQ-^&
}@/U3PZeA58Uh<X_Ɖ,T8Jݱ7X^ņ,,wb5&"((mnh2YiF%'2ש冬PH"⏄Ր
4O#'+_akwԨ?¶nReкH%3wjE]rԡǨH3QnK3*PH8]Ȱqd}s0:-]lH}E!
Qtt#2ҍ&9ShZC;+ÑD26ܻ/!C:mr͓qJ>l̀[HW8VeHLU!k$aHt3OG[d^gk*r6[) KpBKJ}Mr.%8fԝC!_QQ#%H*~͐Khdcr7rjlBАotnS-O8Yu[M.7
Q+];k[*,_ȀSDIJQmlvֆl]V}ߐ(VUfL!?Ok!Du~2~9d ga:V
t%/
Xe\hK~*?l_E眠
}/u~ ۲M,;}@c@mC[jmꂣ5~ d<V垤(P{2vGʜ 
]0x[W-n=}6vMl&j/e @5<EfCͶ-o5%HKWZתn}UXP K_0g
T]y=${Y|k'nuqub]1Z2_ԒBWQ&ǯ?I7t`7Bc߄
U6.==U7J
fO2!=YnW(HdFԎTim
-0--rAǒ8$`ҁk~5uݶɐ)i#uF4#1ᮎM_HxQ̑9:b'A5gViܩC<*Up*i[FW2({g룩b,(ѸذJz
#O飔TI4v飰:.VZߓَ/R[hLew}H$O|eeŋRt~ʠnD)ײ),)
)DR+ħ4G"ٺD^>pI?F_(Q[f3ܑXﭔBScTU!T6v`d$zx3MĎYI׵xУ҃>Џb#0ٍ|;N>{2ER꣚5HPg%(rTX8x8@kҸo?@Q+}=F섻&g'84ؓ#0wbjM53wv}'OSF;b
&2XP>=Zl)>\29[>;8/W1},qV^r7ȁ˂s+S*ϖ)|@l	I^VΖz̻skgV8*roۆrQOHE^>
N>3ǣT8v~3IXLQTS2mX+-F[mҌ ȃdT<LGx9<y{ZGJLG8LO<:1O'hJn>qPgQQS^ĢXʧfePEPuVn}K
^hKI^+ȿǕUsBBu=ho8pjNzrݾ$ܙwF`=7XC$G];Ҫ![hM~BkEnB2˰j6Ki')K4-FRR̗gYVΤTC+hT[Smn={Vs8g'rOM^U7c/j^zs+9ދ5${p	UsY;QӇ~qG}n5J-R7w/Ro?L[Q)*oSo+GqIy'-_M>"268BO6tJb7_.ȩ/<bO]%9%btqR+<e9sp-0<e^W/[_g zᵀY@Pwao}Q/v{}xk_*=}8}93uRRQJ[J2ɷs{q(c/'V1ܽCO}ڃw~zK<%9I|)Q뒬<%ıٸE52q*}O\KQ)#
'c(xPk,IrT@e\oc 21ӹS$ma-AQjfLL"jH[+3[zQM;U0aLUxvlg)@kl0.phnx\%[8n6jAQۮD<krk<SjRkܦ]F>XWAGQsnvYCڣ\O·`Ϸпo%$E
eJ-xnf_1k{q$nag8=УN~<'9OggyHE|$MxY񌜎W%d^TQ5,Z9\b-rr_-m܀w%Xv?aQSy
ț#KJ-d1R͑mf)H!Z6J%Oأ+dvL.C-2I&JQj2KIj9*Sdswp}aqe_iEYg >yA^IMҌeh+xO\*clYޒW>u)/k\^yZ^'|տ"̅1˧<d<(g(P$"@[Y;EޖwU*Zj|՚!Ri[
oT"<Q>;9<2D0&c%V3! |ChEyKX&?1!'=Ea]MȻx3b~V2c<JGbpcW>ⅺ4@3u˭QULy{~`i+J]<"Ux5k!i:wnz
{}Ҽ6)-;iyrTj<r,YY)<̬("ǲX@P'c4ChbeQl>\o|Z*VYDN~@ժ-)ZE0PJLP/Ѽ*;:lN7
JqJ"+K|:$*cĮIBdq1[AE|qBk2c.1bP2H}'CX+U
<O^j}XWW{1^
<Vi	^a$=Ь
HJo$"SC^RGl8>ڛgvƓmp\ی0SuD(=^oxÂuԑ\N]NSNe&/09
Әf	.fYdP<&BD($gb
وٸzl}Lȹp_b9/
9\|י2a@VߑO6l./=HGkiPh*o-=-WˣI5MלL*pP'hO1MM:1^	>+QNKй!o@?.qߔ-;l@r),S܋V&P]<]rcMR~ɿ[ CU%e
lYl'']:ULWcvu>N怦3-V(ԊR=ǅZ1s~Y߉$λ݅(Jm6PK
   2.\E  >  :   de/cardcontact/opencard/daemon/CardConnectorDaemon$1.classTmOP~u&|C)oPAqn%4l6XZv&xn7&h>9o?xHH	CCͲ%,"Ì$B;8tL[rB?ƥflCo9QDSkF䊌rHnۦvfAGN@?Ke'ɳ1'.pGNdƁhI+QJm%Ku0<LS+k\P?p#xp9$g9ޮZslגƂ1_"*sbCwS-
|EUtXQ^wES5T)m\h[7#`zQmԴ^2=:=*M+g;Ѝ
UmpJoi8ہi98!L=CۭQ˷x,sXGP0ZCZ/(v1	*"?Adn</{F]}GF@3㯹?w.wHmp`_L5|N$i;#
4,b
(QC70Z8@H6yſD}}jS)zFB<i+1DG`F	<cT1zPK
   2.\ <+    >   de/cardcontact/opencard/daemon/ReaderConfigurationView$2.classT[OAJ*w-Ek
4􁷡`q??k3KCtr}(R(C
rr7ulɳpFc	7Ǝ˥Su
2u
F4D!Tj먂ܰa<\YIm)h,Sj踀:X<a:3)Eox{&/&3쓸4jhь3j7Lx" E!Ktpt	(6gaⲎtgt[QFOVC U.vŐ85RyYe?Dу^EZ)wTD,hujGi!%-ya|S 1=sj,a{ƴIa-u2ē$7ipW/.dᮩɀ:%2v
&	wq"QI*UvRu!;u.
7+L5h;N"Cvr<Ҳ$䦓ӱP'B}%-yC']Z!0DEwY0BMẌ́=_}s9t	$ ?&quH9? ;@uK
}u
h`ݕk}(_wi^ڗ+W^o[:Z0'qpV*]L*aIxfkPBZ f}sO cџ/+@?PK
   2.\,|     <   de/cardcontact/opencard/daemon/ReaderConfigurationView.classX	xTo2K&̀ (H0JHp@$@+/3/d&y!@ZEڢV	kmUmfնjwhqk7a&|}3==w|C 5~d![OGr;ՉHz
2rDbV!ECYa:dXP<f!:m:l]X:V}<;D<J6^4A[ĞiC
cuHPԢ>j$
L{UU<Fl[T]vu
nOCa6P0A,.QWEN1<Ju5e vYai'HI-$?IG)f*L16
5ѼkVW$fDGd%>,4T19(¤4]]o*\
,͐(t\G(-/)4CѵƈQ
(9]>~TL	Y
StI]k9A[5,Q%:]t]v1!6wuۻW
3qv׈":y
6sFlJ)FOԦuNXlr+pPk=x<{JbIja%̨PӈIyaC@"XcZp2)9jqbVC+У9dţQ]'n!|#eГ(iV:3hFOHGFŴHȈ[kM<	XFti^"%kee.3p*K!tYutbdj63w,9Mq؁^p#V(1²m#ﰡa|mZ>6qE4ޛr|{;ܺێqq).JI|#%#x#fX>#Õ
:2YWYWkfݩ
N,=Ϗ=N"kv٨E8R|YWp=kóI`$a1ɗYi;hBu&Sen8qCiډ8Ïq7tTЖzȐ}$n
sbuOm0;+\;t|!&:UTjKwo;hD8=:e2~ߑDMN2_&W~eXWu~Āu|)}6}Fc^+LHRΊu ?ҞCT7t<CQH<jHKmP>|u<!(qL-GiWg72*'xؑhui`	4HHUgܚS?y5+;{ՄmI<~k,qjt(˾H4*Nvhi4fMI5+DX+xUu	(X"aЉ<w 4MNi7Ɏ7^1g9!^5

o:v?8
_{<3HBn&F&arTW4*HÍN,+%U#VH:X},V;=a+<pU#]qfo7J崽Yt5N\]Yލ,$hJ䩉rv	d])FqA5MW(E* I*fL}؏63kbVܦ-^Hjkx;n_91W2Y%Y/3 } 6Zo8ŹXn2Êȳ;#=9+Djm%?v(*͒c/voE3:S~Q6mzR=mRyxWQ<6,Nyvnh7ݞ7Bm~dpk1ּ>[YiSHazаŜ]ݩr8^U2LUDuAFEt	+""i(+&3a7A	CCoL`&O,,nWg挼ZA)F3{';[y.u*ߜƧ=ȆcUE?TVDA ƵVc|SŜ$&&13*U8^cg!a
tE	1ނSY*y*'E+CUJUڊR5Gͥ%FvMҊ$*P:y8y$ΩR.a+[+~C#gk9j#6asE\0d,D3D "EKIXJ❜&Kb%\Z~|;Os8Ǚ~Vw_.9ޘ+ceW|5r6/	 W &yW[Ed"[6b&(Xv⡓1BlEΧ(.F.AWx5,\
ra)d_/"*)_G.oWث&[IՉJ7V^KTGd*{BWg0ʗr:Q
;Y|룔j!CY"$g0-ǳ L-W3DNww_w܍ q]nY{,9s~'Itϑɴ$9lG2[yPA~elEhcZjH	&%x|P
VHxYp`gg	><7|ecUQI~UӇf׺/%b_w Q5쟊nC`y5ӏVr,RrB4TWd>Gr2wKBRLc呴c9TsԄ}Qy:
8:PȯeOm{%^ex	W/671Sk-8]ժs9[u#;RUGGUѯո\-˳

.J	lh4=c`4y3R>I}$UaeJj	5h0*)0jW+0<`f݅\uZpx6e]n{ތ`B9PvjZ</fkj(1Yjg\{IY~z;PK
   2.\v%z  
  9   de/cardcontact/opencard/daemon/APDUTracerLogAdapter.classVZFl0!PhH$sTpJju1M!J2
7}}-J1`rծ4f7 ;]AHE=[|k&J=ǆexsB:ѥ TE)q쪰Y+rQ--<w.]JyY4RIniگU
$"n=*emGh$T1,njܲ]4eNl$o}_ >by-`#7\ÒcWUڡtevQ	ʐc*>ɶmVN7qKez$-WFr7+llc`1	qB$RdMD-T]<)
|.\J[E);'V@}T<#eܔk<"ڂ.1>:­ږ+~t"&֙{/$Uf>ly*Q!_a6R
OUd%I2T4 *umknxD?
rǰ446Ý{Xp&=:710
a,GM̓Ϛjsisu[yX;E8U%l:3K+tQ?f1>(ÄN{\Ӈ_64G2v>	ѷj]dɤV%ls	vvS*T֎-5'Cߚe]00@5Kշkb߭Cn"Ms
y>R11Ơf)N+۩G΅[T@^AMGWs}h]S=27_PShvZpt
V 'R`I/L.iwEoǍ`7qǴJx0 :h}BIڧh1%><UPk([Ƿdx%d)?rz{.(2DC@8pOxAaʌtNO96YZ=Man qS]cZ@ t$%wһ2]5ᢆPK
   2.\h      3   de/cardcontact/opencard/daemon/CardUpdaterLog.classUN
0j(ߠуGA
t	H̓GI̼?5F):eBIW)kT^+J
ZI.:E0>VF-噕't	>iGj70vsMx/hNn0[En	}$RCFPK
   2.\0L    >   de/cardcontact/opencard/daemon/ReaderConfigurationView$1.classRMo@}ۺ4|4H^ T"BArd+gٛ~~ ?
1p%g߾7;;|.n,c!K	)dgF[Լ!441:}I2gMKiE֎@͎UպD1", h#RC,{<PZ] F!	N;\jlf.qV`ݻʙM鈴MeW%M@=A$W!`LdR\K鲕xA)'l=㞋}#	į̴ru6Q-'%0ңgd&O.,pwߧ>1S=5FÍ'O+8yv9wHܹ	Y-.vE\|\ƕu3NV=!R:pY:Z^؁PK
   2.\Hx
a    )   de/cardcontact/opencard/daemon/failed.pngm?haƟ?hc\:ˁ!ԡY.4Yf<B:H*NPn
]d(^┥P|d{兏~42`iK9>C{caaA$LXItLd 8N p$Y]]][[P%	!*JZ=::j4'''WWWш_}  ?xFEǑb㰓pSr`YbUe]e	hi%&ؖUX:Mö<~@#*)Ht2
:J65MmJ]}!2*:EVfIT¢gfI,
-0Lb[eWoqpY`STo6.Eրΐ&V)Ztz Q1hqI)9xEv19
 ۀ[ׄ?me4
ۅO$4ul\j>tQ4έOϽo"3$(f28x	.;k?XkMX\//w>b-?ݼ={f
`%oNclg?PK
   2.\U)N     4   de/cardcontact/opencard/daemon/cardcontact_24bit.gifKҕKL|!]tU32F~Yi)hj`ke<ּVKdQvc9[5CzhI0њAx|eD@2 %B˱u,A=L
F+ijjFt8CI;鵔\<zƌoL0=#8ÇFF
ìvE7YETx_ӡ$,cL%.g%/qN&
ڋkUV7bNs=mfTczpRDRQP
821jԐ./EfmSvߘ<`	`zX?V YRF%Il.{CzslSwŧWRpʆ:,mUo3(7GɭGpu7.enMEv-)`r.dVMeGfeaXQcOI"OݗX~{MHiGPC	l{3_.YcʠG(7WM89DE?G|0):g7+P*	5iyPՀV5s+_M%p~iXYT0|ǼmZە;Y?ISwhV˗JrYɳG1Δߟ8 u1cdR8ȇuwiѼ33ײiZW
Lp0nۚ0=Fa(.3O
VspD'WZ{U_:F'C/@0F-{獝YTc `_PK
   2.\R_    )   de/cardcontact/opencard/daemon/passed.pngm?hSQƿK:o"K,M
RJ*BfϐրãADRqz幄@i_At|ȁ{s.?s_oomܞ0g|kܝ~MMa&Ls((kZio	G`piiiyyyuu5Je2|>/(JJj0<:zM
HEQZG
AÈKCƚ`bQ0pu+سwTÀmuyҧQHE:Q	YeUu&6.EVNHEXG@FECNHBFѠաI`
h9Ù	`
+5
LSZ9c$0IMѥգ'&)EjbjzFvn^r.F&ga`V!
Unap=xr.&#a k*Q8D`?Z7>><dcP7dKGn^?K,D廩J`r˹g]Yh&?oG,|yfjkPK
   2.\           	          A    META-INF/PK
   2.\:   Q              )   META-INF/MANIFEST.MFPK
   2.\                     A   de/PK
   2.\                     A   de/cardcontact/PK
   2.\                     A   de/cardcontact/opencard/PK
   2.\                     A  de/cardcontact/opencard/daemon/PK
   2.\K&  &!  8           ^  de/cardcontact/opencard/daemon/CardConnectorDaemon.classPK
   2.\p
<  Y  F           N  de/cardcontact/opencard/daemon/CardUpdaterDaemon$SmartCardCloser.classPK
   2.\O    >             de/cardcontact/opencard/daemon/ReaderConfigurationView$4.classPK
   2.\)$n  :  5             de/cardcontact/opencard/daemon/ServerURLManager.classPK
   2.\;U+  U  >             de/cardcontact/opencard/daemon/ReaderConfigurationView$3.classPK
   2.\l  )  5           P  de/cardcontact/opencard/daemon/ClientProperties.classPK
   2.\#4o  ~  0           #  de/cardcontact/opencard/daemon/URLVerifier.classPK
   2.\2   /  6           X*  de/cardcontact/opencard/daemon/CardUpdaterDaemon.classPK
   2.\E  >  :           :B  de/cardcontact/opencard/daemon/CardConnectorDaemon$1.classPK
   2.\ <+    >           1E  de/cardcontact/opencard/daemon/ReaderConfigurationView$2.classPK
   2.\,|     <           H  de/cardcontact/opencard/daemon/ReaderConfigurationView.classPK
   2.\v%z  
  9           U  de/cardcontact/opencard/daemon/APDUTracerLogAdapter.classPK
   2.\h      3           Y  de/cardcontact/opencard/daemon/CardUpdaterLog.classPK
   2.\0L    >           Z  de/cardcontact/opencard/daemon/ReaderConfigurationView$1.classPK
   2.\Hx
a    )           
]  de/cardcontact/opencard/daemon/failed.pngPK
   2.\U)N     4           _  de/cardcontact/opencard/daemon/cardcontact_24bit.gifPK
   2.\R_    )           c  de/cardcontact/opencard/daemon/passed.pngPK      6  e    PK
   qs[           	   META-INF/ PK
   qs[         META-INF/MANIFEST.MFMLK-.
K-*ϳR03 PK
   ps[              de/ PK
   ps[              de/cardcontact/ PK
   qs[           $   de/cardcontact/smartcardhsmprovider/ PK
   ps[?b	    6   de/cardcontact/smartcardhsmprovider/KeyGenerator.classW{W~Oٙ,\Dͥ]JKH )MNvdfwB^VZPkxZjREz?3YvI"xdg];߼{3 >}(BxG5rF#aX")SL=ڞR(U0V,L8z	úH =f̰
$
t9V#][f1[AJT	QA'#5@{j)#!!;@WhI2ni\;ʭnhX,sstB?5RL/p0Fȭ6=K,QH$=J%-ǈ0$D
T;]q=18hQX`ypzVL 12oXLP%kf2҇
 *}Nw$F[Hr=8;
m&vGl'o̄艨H
L܇,!Z	!\n3Y)Ljrb]+g;NMwWL+E"x;\c̼~
JV@UL*&7XA;bn
KuMZ`V/x
\3rqN@4i-\yP\˲EY>CX`n3*P7EQ~?n}z
QӴ,HTtA#:ԣG6SA{ݓWcǦc2[5܇mn-sԈ
3ua7
!$Ed\<Ko^>)0M!'ة`SϘ컥ecdjngD)H=
hL6ÎZkebکq/&{1`P}3-BKK6`Ȍiz0eHw';qkIh!!O1{[lیaɼ#غmsLP{XE4Q+,Eo5"8yq6Yܟrۘ
u0}8d
NT<qv;e+%Li<62Fa^}T%3fMfz
6K,Lv
򜆯J_*2oɑ[dp_t&i74or=i')oixIF{[zxI#jFBGL{XL>٥$oj[&ɸ!{*d^w7aۙ2:K8&ѴRhzR$cX	WZ޸VG\rof@)jIr	M+J!!Pca"qn>
;Va!xWf1號wr_~^DŖ"Xyi'鞢uE;ys=oՈ`Ds%Ņ׵dl]lYߊFOb1R2wn+/HrĊL|!sC:$uۖU'nE,<^b[oE}rH>.gU8D])(uiW%o#J9Wb%~HJ s?Mjk8d5Nc^o>uOvI
"_J'eLYRwKIy8.	5UKHQ?A]$B'@Ij6 L%(zl
ӛi|W-9Z07][\3S7s_=dָơ=kq/OU~\/ʃ38Zg}XQBtbNw#U]'Pq5=XwԶ&OqcIqy	~{WűQi,9^q?EԤ2+44Rn+wTʭPV~ߙ7{}~o>ujR40)ʒTWШ_N@:HS?l#xI~OGHz4ʗxLOGyÙPWx zTWxůP15Xz?"}Oȝ/H~	^ExrrV[~%U0AD7;0IHbS(58F8WG9ǃ,C>J<poNf(Oy8*iQgD-WYմ,͟Se$YLCYn)-"MMUY;Y*,Q_7_]+2ڔֈ-iF"~߳&v}4/=<?O#Lɲn_f(
Bp	bQrWs[D?o7_NVv
.EwsՇPK
   ps[l1    >   de/cardcontact/smartcardhsmprovider/KeyPairGenerator$RSA.classX	|fg!6psB$ Hو]hlgfZ{ڻzTV%h[۪UVG[־7dw$2w BE%d-2	KZ_1,5>T#QݩhjB5K7І{ЬS6CGC%̛m>љlT@\I%zkzAI-5bZB
k[KSQFqG<=3c@H!IU2YJڦ'ufʴe
?	31Kl#PO\$vz,*s1 ((._zRMwT-$G
;@L'5.3FBNihDًX(ah?LLqlfL,zl\UB/KAOZ; jbzQF{+dŴ,b #KxPU5WTâ%y4cX) Vg;EgT)bkw {hM2J`.S;v0&SVxMdU3jhIKtXVR\VrE;JX'tpR`
	ڡRSD,lсMu\9vN3xr8\Pksr2p@ZtE>q3e>vnHtD0f߉$~gl,2u$89@,	1۠r)m1*HY5x {ehIW1{t
fZnc~2/I	apbj;<[Lߒbeb+Zv8=h"O3lf2>󉪙C8Z@GMggTS	jc2>O8*9O3b,[c<|%;$ϱ_\L"\$2Wj@H1|#D)]{nT#׋Kp8⦓BzTSfu]!븒rj:inngNWBgp5W2(5u'Y(^K%HY.F7~K`yzGJlHnV%aղH|L}TjzWf3SɤnP"cao簫~W{N|pr6u4`+a^[;mfd.rZbJT0$2&_1~nKO\05YM<8HmDI܂GU7~k~>< T}2'ܝF}i+/$펒Əd<
O2,?ƣ3Ggu5loe?.'WѹYlߋ'SE9%΍mō5ׯi\Px do-^қwe=xp%zg3ve&wӦm"N*qOX4c*@+
)2?Q?#R;9wz"Ms]aRVŰ̦ըwl:)zAn-1q!s! ϖ(,8͜PyyᇬP[1nq!"f4O_zjGp:lirdJP&(\m/LN84Toi]N:R)*J(Lv:r -ʫYg8
3*HX?370h,Gm!,TUx7)oXOQy~М~jZuӒ<~X[u2L&;TWSݢ+jĉX cX(`a-1ߕ%]Ov悐cj6"krGΕmJ<(<$,;.2lo	O٩ўmOh$zT2JdyGHpQM9۞F
% 7Ba^Bw^$"NX_" bե!܉U0
C(Bݨ4N4H~OѮkM.p7qD$e!~=HV;.Aln*4wTHil¶|0 ًs9*՗FY9i>4>_4.;#Xi|&, 4{qy1pUpCi
="!	2]M}ym0d0
5ZEjl5zԭƍ4݌+qnݸ
p;<;2ͯcL{pn'&Q;D
 u+;M$?C
^qx[?q@`vQDnQ,\I(n^ItbmɊDRBr"=5	؋`֬E1vII@qeÃ̺.e>H{1#Qn9LcHl$Tb	b(#6
,d^M[EvU4ȏ'I1Og:`#OitĮ˄m;yO{1X
j ?}iܿBY~ID:z0xlDyt+q,s$X/
/=];E-}{b:-\t>уx%wODTGCʼ $HI]7-2tEqѣՕ3g6??QĒEd9QDwE2L,se}=d[)&^FX7gM,zM,z	MjsA)fѶݙM
 W {wa2{YpG%^)\1
u-~]}R	RE'QwZ*PK
   ps[oNnS    M   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$NONEwithECDSA.classVmWW~n*Z
h$ZUJ !5H%Iݸ/kk+9m?Gb@hޝ33/{ ZOhOϤ'u49>
_UAPET4+3
G91YJ2b)gt&ы,AxnJuhrQ[be(2ŗZ9I";iZŘ].[%bV=vBrOśOfSٱI]mE(xKAu"T݌W1fYLͩ&h8ఊ(-C
I0A	e	0DKp:uikѨ41[XKzN{C%Ċ$.gN
1arcmǺq]dQ9>"tC;m4*:b$mcɜ*._,	򌊏q昍 W0b"! qMkvp:l1\"Wc+D^M.gx
	i&sΫ$a i"K	֊m7_y*fpXX٤M$%\ʂ{We#]Sx^'6AYY-WB[Z0>^GXn&s8*a`=ġߦ8Oy34<ǥ4nΤnt Y;(9stxe[Q.Ъ=o&UEJ5y-Y#<}3UqD
ʄ	io	{&yBQṖCRjԭ&&wS[btM1GRp()oL~3kVN%7M~T唧LÙJ˚m< |Iavw;x߆k?]g=nuxڻ}OՂM>yCpe&n@rlW8Ś~xfymȯ]ŀtkrqoL:(T.:QD]u`7~t}k];w7z+_e]oOᭋU܀`tt;܂UGP$3{#Cb1g@L&7[ ApyI@I=¿U^XGL*O.?A揺
⡟Xu\S#{jowG }<=qR5
-1f_2[=n.V\^
u^Z)բO SM|OS|}w
A~'[_PK
   ps[n   N  >   de/cardcontact/smartcardhsmprovider/SmartCardHSMProvider.class<	xTIx2uX
YIwBfK20MEܷUJتUD*-[\Zm]jjQuϽ̛%!~2s=ls=( Lui*C7n]~_
 4[V[
`	VT@5UueKkVWW"du:N_cAm(5YU6BOAZY*>
U!$
<PSln3=>Oh6BVVApU !uk]B*}-4x\ΐCT
XhdAmS8q2Pa=Ԫ=j[@G0Z@{	׻Z'ƪp:d!PЅ0ߢ\rZ=.-vlrԐhJg&Tȇ
!IA.t^
EBnA?T&M2QI0YǬ.r^|
18$.Ch?Ui07
ކkdk-Z®ߙasU(ylD
nmMO	l|Ja 3gdtE*	Dk@kYm
,AȖnpi-!gPB%Tq{*3ǞM[(
_ָd~4gP̷| K5^Q`yRX.Й:`
+,Ӛ?;Lh'T"X/S;g-dPقլDV};a./U®ڍ,
<xFhRZa8
1I1qlf|*}+Mk"

t`+ola_sIتzṽZUp!fF6f#-@Ƒh`qY<ju$V8_Ta 1Jm
f^&QT".(C\¥BnZӰ
+;|CLo>
$R8<+\0vr8	Yli/y	G.E9aTn`ǉP4"t+:`Snzs(&:Eչ:XmˤEp?SV!$rVvmHʪL
*9´Ni---@HDcT.ح*~Tzŀr
D{v]Q8' J6~-|~hxZdQ|b` +&G/}zDFQ`?$KL*ۅ*oxDGE,9>n
^*X!0Q"?L	~HdI)9bS1z⵨#%C
O,V)!BKWēY./o,¢J#Ηs,)wg{wEim	)&5	^`FE,8m759iS\kU1[<-l
J[ɂjZS
FM,L/B7ew\khW"P;f%b&,7Baz'VxZ+Ey0CoA&l| ǬS-_	9vݥ^(!Z )]`Y#r0wKJjZ&.*+e%M-=_-۩)4Y0IEVpaaj5ThaVTRIݹh,-b.JK

JKG?WPIc<ŢV<ړ2v$+őSp6Id0QMVD<%i
Nȍ^Wf$:aZW^sKZu601j1u[pz|-~[Bo&Hhfzq<f(=EHhfC	߁Bu8X!8	ш)bH2Ȋ93c;gӲZqBZOkfQ<?Lyb1]Z
L)J{$ZW8I_[1'Q2@"T'1^F1^g#gdو1Qg}3d('Fp̞q͊32pyE,_pS3z$xup"t'o)&ItΣu$\<V<&W}]My4/ydp"u:Ɏ(yP]OrYOޣbg~K	xByD5@IGA0l:1ɭ0d ';F<9ۻj9){'
RZrk1Lb-Y}Bj+rU+C~?\bplŭXیd>ϣT/6!~Bӥ&H|\E{UV_1}n`WF6&$ğ_qc@uc5O,
3sh3Z-U{loVq;зQYĎlp⭸gHPW_4t=đ{Y2a;Yxw.{8M,~&6Vhwn{	gy}w2CY50oqBȉP@v={UOդI
ܣ⃸ōVk;7Z$gϱI*Nmim؎0xp\Tg;
,5)`T8b7\Wc#s)Yv6~V8ZcK4G<ot$)3yز_9|a׆BO[	
]xH(;G#~esO8I
>߱$xam`0lwOVin+ZU'"X8T.%5Vu|'5*Q}$Wg(v/}q㏅Nцo1+7VtuImI|*~&dˠ
]Ʈ^˶2?R_B#;pLyF#LH
eAsT1g*~z#~i>h\pac
~0Dl/8^ghNE+A;'":%-""G)
aXq|+et4F⮘x?uSI'=Hԝc~BTA~"l&KdƽXP>*FA9Ds*
1O@v#LKu~ݥ"6ʤA

Vi
ErQ1ub$0]A30c
k2h$.N:Ka/ɦVDagt2ft?Y)axX}Xx"cdCny_f|vCAD)x
aP$qY֩ *H@?N$i"SiBUA3.g;\W^eOy<Jٜrm]4qjymTM
bGum6"h1WjDZ׵;3TNJ3NFKky6Z$-m-Xm\kݤm4l1΍y)y:ZJ:-A!
7O&ȀS;^c詔ّ<&pC*:G~PBȭR٭F9j1)TCM{J}G8v85bf|gsyub3QpBVU!A\/,㉋\}3@r1R(16679O-ey;ӟ-_KiU#~,nXC1t!ܥívuU"XKT.C8-^4*7nI> ]!NMJW!6CbgўRAkxaRڤPrb+x:- LLB3ra
kŇv{wY%~7wǧUhh`Dߤh4BMsӻt(aC]U8[|2)P=zR.A= 2:ǶmuBw!<:q]ţ0Ɲ2CWk.H^tq(\TWIŦHI]qD5`8EGSlNDR9ƻƖM<g3A,8?;%뽸-CqtYc#TkæS J鰑12P5MQE3M+ē W]X)-l dFr~@)0]/zaBCM~X*"zܵdZX-QQ)eF&.#IY.Vר.4QŜEz$	k
u\ρItRb"!:"	5'xɳ)'CXrr;f;lq;a܁'>a+?)̴$G\]В5{eMg
"t:+!z#L^.W\3SrQ #Vh"mx;[*Pݍ>ѿB3iLտN3DѯGՃfm_nS\G@_,K&!Bv'q' %QC؞9şjˁ
}é]x*'9S,`>>E'@Л': v#6XٝgOMs
s=xYcˇ,27f↹|Nd3`sv vcnAA?30۲gd61gm0%cE%onTМ6(9 8Ksڡ΀,$x;^p2o.S!Ȓ{`,cIa<YsYaBr1ӹ)]RX1
` Ax,!ne5>@s'T:Ymd$6< F393d;0TTy"*:aUDTTZV2|(h$tVQ.]*****eW,Mp&lgj0۸
2Nv;Y\*\W|l'NH
xѤy
@VJvNZ;#.&;j%Fv;">
{GxpΒGgYf-
l6XNL{hzzfz+~B!͂?&xU9{? +ubf(La,h9XlItI?;WL_]/q/nvR]Y ױnWy3wb7UVgv [sl3oC8u۟ẹlgipxŋ&5A~ɸhLo.V`k£XCNy)3v&A}HO۵i l'
ִX.4	A ߙ ]G@ruv
UнF]ol,~qPyрBG
A:xAgJ8gxa{\p>`1'[Vv7WAנ/νdG}۰4>dj .x=wh9~ W?1	Q8^ck${́btn_1e,{m|ȷ{-OѯHxaVS
jIy
V.xE辐_]$&\[`	퐎L-1u=DZØh
2hIMkx"qL+Z#tZ0:5&2I-iVVz`y: U^v>Qy^Cƫj-׌w3C9lqqn,?_CwAf|ߛ vI J%E@h5oG؋e8prY=vtqGxOGgǜdx;&#MGd)H3qgqN2n[[jǅɸe:x
;V%㞡.rJI*;N:JjvlLz.	lG\;a;T"m6Ŏ_^{IJt+qFZ;^P8B-YgC&΅Q &bXUPհπ&\
p9\+v\{8.x
j!6w3Їc\!,
Xq)nµx>]V	/ĝ
K7x)>kx%Wx5~P:^G=z7`
fi.xm)wex'ݴEO}>@qE6<h)Cie>nY-g,n<bYG-|r)>c	>k	-ዖX<m*fzrl|T:dTdDp"&RrBwoaҎ78ӆ7e-"%ކvPs~)Z
⼽{r~]se#(2g6Ip_<N ig莯
߆ſ|r=f'#
8O\c+Yѕ,YW1=9Q)rU
y	wvC-8F_gyLWψp<`АI6
,g9!^d2(S?\C!
<_Ud4`9s؞}0#-s)JņBfQ/컃GC#a2_9OgH;>w(VFdXWyl|A0-&AM	4f4(*9j1H9#\ Q^-FXaH+GXl9OX!K5*6
HvI턄|*!R#aEev:/aޱHuL;pl~I6Wv|oŎp`ǿVw-i:^wAk1}Ǿ	ۉ1Gd18b_ >s5s.On6sLFCp&ya5CZ΅-)WQ~JaZ.ZF57a:-R׳YSt;|_TGGءW8GIw,i.6X
hp./DNW	R
n5	nӕr+H:
9_bE6ArBy]=bFOW,&ҕ0yt5,kY`]+膨#NO +MB+@! "=G^yyI|Gy)IF-9c.X+>ڨ@џ=sh 0Yfli'GEvN~%{KK{Dq`Cs^yna
e2
vCDvd,+o}`շ`~6 a"UX;!nε첻]Si7@@Wn>v_ùt?hl"jcwm<`p?tp:BOs/;F\w4K\
;nv@[GEx/EKl,Z@VhOu
Mؓ^k=]rSu@0xm);؎
t+ļ]
>!_`K/{A).G)6	4bX?s|'r,39U٩V1K]^h\ feX-gCjbq26X8^d,F\0&0/
^F%󲟖wʈYˌLK3L22*(zޒ26cl
HAZUߧVW6LN6.*jOA?-0Q_qr	2-O>fѠO,Oy2O#9Ԡ)*c%6K+˸X60&ȶl`|X` -[A\Mm\a%ѝG_Y>X7ޥXP{Q}FJ=WNzSl>Y4WeH쿪`}tLO
9/^Pt^GBiz6JJ?I	_ދs_
l54ҷ<w-?PK
   ps[Ê    U   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA384withRSAPKCS1PSS.classR]kA=$[njTp
!P"kndfWf'wIUb&t={\]
9X!EuxA:vE	xu*.p	C82~2Ʀ8|3LE
숏B"iF':!.Jӿ9~(/NHcP§ˣ6UJc@ȷ!ՑM'|!#^7d8F
c>/<5	Ο>E_(6L?I5PT2mz*8})e(6v
bowk|sC9W%+C8>&2.5l3Sz{G\N],:xPSPK
   ps[ծ    U   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA512withRSAPKCS1V15.classRJ@=km%Z^PAD+B)HZ/ʚ.Jf7诈>ZL`g0sva lc@ÀS.n7
$NS400xzTrVSHdة殶W:aF.D`sȆu[	sOR3+ҜvBr~v~Wj-!_QC*eƐ,u2k"}QmW!V%pWJFuL
n"-q(oEhfH;A[@Ff]r#" Ux
2 
,!K79BUHP4-f%(i¢lӋ1\&r (u'0O`6b?PK
   ps[?̌  {	  6   de/cardcontact/smartcardhsmprovider/SecureRandom.classUmS[E=K	iZ
THPH孀	
D+h{Yíɽ{/_ZZu;?g7!
`g=<?#Bh"6C#Is۵TN
.8\hl˟vB$c
\,Ȕiӱ}S^p}eyh{ Q o9req!U3#8NFщ./$W~r}hR`!oѩH[}S1t`JSQgU`@Gp}'Җ-קCxC Y4W|-(jc)+؊(MVP)
teJM<HebQQ@7qLd})YyFb&teC<DH
leu
-,t<¨C_.uV:@cc/Dĝ@1;(5rj{%3nc:&^+ôG0B}\mkl	7Ԉ?S2</?>I^QK#Y$p|Ʊ=߰Qږn:+?38IGƲvyS*
XLyfl,O`hQ4\`i,
P04J(nNPNணsrz;$3H޹e}ȑYaRU\ڢ`l}ZipmnVǫ~9ޓ/2++4ɌIT{"9g5弥lmT+ ̗hE8
LC`WEyQr.y7-]'%wq	5ju7NNb/rK #У\݊eΔ&~@]fw[#? ~ݑHR3O4U1:MC<eKfi_2:o6..!OP* gf4Ug459UXc4}X!^!pw+9vxOMɽgLYLwN0M:_#M7~B{020MadviX	B j sXд!o`A-e])x^2mlcOu)_$;W]gH9{zPK
   qs[<j  +(  <   de/cardcontact/smartcardhsmprovider/SmartCardHSMCipher.classY|Օdfa2@;/0@h`h0%3`G>Zt} *$V-ˮnukwֺۭ[Wa~_Lf{Ϲ?{/ӇpG0a{+|u(NeTnJD,[-(,-k/FQ`qEh$Ȇ#P#ΪLG*EtIudڦFK?*j8[%e>h~A`gU$ffGELҲ6&SfB2֤AkNi8?cp`O~0Q0"oKcv/iPq
ÉPS6KiMc

|L̨A4-1#wS3%^nH36}Y
LK/[\(Sp}e2jjc꽘G]jB	3ᒕM7QUB~,B"&!ˮ߶݌dmb`Rv/.Y_Sa3ִfDq+*P̈zNTQe[Pك٭~ոx%RYrA,Κ5t{}gC`kPk`P'rقlJ˶k
q1.cԕ~>ld$6CY3K!5{ZsE'lSٓL269
hc.%k4$#x3hf26db_2l%e t:gyԞN
o:rrW-=$WQ`?1'|M
%?*O]nχV0
a`	icu7ygpФ9f4̶hk#wf	?HuSdnW~"YB]ƌ)M0RT\G:i3cf	FrX\\@BZLt\6'A$M83*McT2(vc7fq+nLݙ١]_$tի!;0ti"әJqY3>eʜ߮ʁy*/Dh}"$T7é`8
^إ͠R;D&JxOI	vtf/3N*C =m5(T{ȏ=*`~+`izJІp:cZa<1ƟU{ZLdNM
WPR׃ocRjXd<s
1a%g~<RyQ7;D6g_0KGxs6-yVs*eqͭ4Y	ve{8`Ƴ<m#\B1Q*3}I3E<k)J5-E"bCJ4*8/gjnu043D2Yh WIZ4VGk)>7,,s姕eruɇ*5?~_wn4[5uo	~JTbaݥd*e֌vXζ:5,T5&s\Uޏϙ,҆ӭLG??jf
kg U%<~Aw˷t#u:uƿk֫W]*"7Q:c񨊼
Ҽ4$c,-7awAۃUyYUle/aL䠢GټCi7iޏ?׏?(yl-wSZLcSZmQ2-"gpk/.qSYJ3
8EkWqOCJ/EKt!?_hȨ~2`I\~ V21RbXsp`2mhY7;^g2aU`0=8eii]F7:;MBuU˚9֔jw1ᒳ)w0Nkh*[8O|Ιp6:l8JeH_ַfo
&T!9kU:
$[Eg몑zߪ@VߨrY_v;X;9^W8ݶ w+p"Mu)j20Y-ZTZ?DHǐ&07KvXЈGT;Cbt8u3)3gM>tBq,4[BY)X.3YȜnG3(m̪ۏ!kmȭK6uFӋCoII74#%ƺ%bK>kmIrImcj& ٥w]0!Otd̝L
%U
ऒȻ]E8ӟ:S:謅J*#w9U&r\q9bXBiO.e1ö7pEn~H%&(
ecg1moz7-}MtTeH_B* g 
ԯى.pL=q~Va~,Ɓ	9o>Hy!yc+'=1dzfys\~O@cA;8DT/,,l@NPzQƋQg'žcqNcAue/<ʎ]W3U~ac>Wp=^X+Koc]|UYr~s<	2d3x}䷧xr.?%,ŊIXݸ=uzq\y}]yk\ \i{݅5l]uo;)u3-؋[)yvG5FTi4	r1AFfn1:fzQFGK8*	2ro}
1~P]K4ͭBUq,mrrb/bo|
Wjb^tbg2Юr9zs8.nh",<xq,7O@{Sηlp`ܘtsnas\](5B8<QT<{wsA6*OJxwTolwK
}ꑀ0O;-Ͻ`
?KAzW[Xzcj՚֭9Wģw|iލ2TDpu*øwQ	]V{m\?QO+4yȖ_0u
k	/^9Y!b[S%EKg9686|A1}Q^l9<=(dhR>}|a*U=-%#啯i0jƴ`f/ɀTGy!^wk#-C6RQP%U
LS
i%:.NGB{_[8}
~)}Z^HVhyH^sՙ)Zkl{`HFCw:X3y1-bjeCY$(W2SseF^(s"BPmrL@Y|§+bLg1Y簓a'NJw
h[pg+@j*JxaRLrFt!8FtHnGF.0>ŵw-}ƺi)^ЇoV.{I^|	Plދzܲ;"=8UЋ܅==+O`BE=:Oy(}ꄒ#U}/w"
עVc\3j&J
C_E|.e],h"rNY4޽ANI`2{)ьIAz٠OvlriMO..Ѽq]Qѭ_,TsS<lG>ƤO1ِ/țhy=NPEX/,GQx4/G*ҬT:<O/xm),>ť7gUe
LIIxss\``8`8
s6 0n12TQU7Vrnӫc(*h>LuT7LuH%f}w~u޵aE%t@b\9
FF6In[qdpdYBubtگoxWnAr#׽MFR$"ظCC	Bw#	b\D[-rB-~ڥjQP@ק&2Ely%rn)"*qRne<^C^C5KEy,-qndIObDI	^dS1	SWiTke
+-O&|؈ʁ!*KQT:ۤݢ>;T*+kMNح
5o@:1c3$<QgnKfE^\hWDU{wצsk+M^2W$Wp5^qʥ2¥5.CK7l.&J=?dsd~;IEF$I !̖=X"`||zL-&^<&S]T4ʳH[yAr`?$¯O'M4^ހJ~Wؗ5]cv^PJB޲̅sV\Шsx[NAQ9n^Ԑ~Q'J,uTnآ3GFnQ	t0](6R֩Yr5|K$PK
   ps[_t֌  =  K   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$NONEwithRSA.classVmWG~
VAMBL@H"!	TE%d7݀/V<s~ob?$3{w}_;C/CKj&5;&ah6K-
щf>-Px$Yi8Z։%r`ʖIatZS8Þ;?fU#emE5#I;n_Kk8ZUah:ťHx:_bط Cc/VH*'Ttb2Όg&ftGQ0kO务c8bHt㖥Tr!`\+Џ
N8wz4ŸjO愮_(|4A&0t'(V\iᰂSm1enͭ=˷-)&h1Z%뒙3*"W;>dhsv1;4":b
Ƌy8/DUTW䨊KNuZDQ)bW.
MW\ɚLʳB$_ڡ^q	\*h6y̬h(b8T1-?ǳ/q<`!XÐ5-^,/;iu7&{Ťut۶P*_+V>e}^',sU[,rj~:Vv0=xnhEpPg.+H+zH;{fQ5qۖ
IK	,]<W^obI8BqCoٍ*7l91*լ 
(o?ը|5m^t԰׎&iı=Mu-Т]-Oy W"tM#w釓oRp<(}:8iV,B0K)Oqۉ6)	V6G9ĮҮ-г֮@t4>{;<ހM8S-(Hj" w:ɮ=SZ۞cő#.<u.ut\I.RcxI`I_ez.}{voPHzJ5o͑l طCU,Kq_dz=E8S下r6"Np5hxO)\㕹YeI=b9A:.cf1|nGħ	nhBϑn
=?⅝ŋ?Oe%%IbG0]G)`#tE7D1(MaE(I68Y6I8XEv6-)&9Y[/%aU(_\uoRuTA>2ww.|#wrm&/PK
   ps[}  i  O   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA224withECDSA.classR]KA=|jꪭMЇFJM)Hj4+y7C2e+_Ї 6Z;09l8#T"a!ʌeBBU8v HA&FDBNj Z`'a"DKBJyO^wKs<[/b*X$C?4Z%B
	GVDW>NSLƧRӘF"l?f2§{=A=¼fU-ɏZi)oǎ@ff%XddڏxPwJ(pu7<
^{++j
/~2Vr.xLk|tyCpPK
   ps[s  u  S   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA1withRSAPKCS1V15.classRJ@=kmW|
>xATllӥ]Il|P?gؙ9̜3' [XǐEinnyOK^^`Y9M\5(nJwTt-BK'[!]%d(>CZܭ\k<lV2l
)3fYʧ
%0BI)jҪZ7BJΕ4;mUkbEG<hE;Y/*_Jcg[f$DQ08dX\0zs9BU
HQ検dn(YálcOlL`L6iNa&\-'<,WPK
   qs[q/  2  B   de/cardcontact/smartcardhsmprovider/SmartCardHSMKeyAgreement.classX	`y~>K/	A`lc[6M38
Y-ȒĴM۔^ifҖ4m,	K,I
uɎi#ͮv]kg$dٖȚyo=/ +``f݉dޣOS]׳|ZyW:. `h8l
V&O݉x!eKD8/Xq<_Mz{HN9{hڔ^_!0N;w+ս~
mX]Wo=bb$lhjkxX/GzR!}DõjH4Q.Kݗыޙt.kZkstQ(zrk&u^}PĳR!MwlM8_HOK:%h6۰[VS#t+x>%E5UjRɓGCVlC:] ˀXx4&GCTDN]^ӒۆR\Je0WHu3^J/.lp#
LܫEYEX%!`CϧKߝ
LnX!w">km_d
tExFp:`ōpYFDCԆn"u<MK:/Ⓣ\~rGR@ \*Dw4| Ζ4!j}<^SْN{V;UL v〜y@wyJ>keXZ-6ƭq
eI^yrÒ#T/sP8la+~
qP4F%ЁlJ'(,~yMRzV/0T55D5	\?wu_nfR91i_
N+K*-kCy(cqLOMTIIƍ!]!5xfDBp<P\uT8NYGi,]trCiLwdŒ#?/eix[n|Pғj^R'IY
%iN04dVxe:/#j8J(OXffګ
QehV5Zc][9/Qܨ^4VB6<H(+=ި+:]q=.7F=.OFI5&Be׋L2uI>"Foa_	<3јq{}X,ꋅ=O鍄=ao8p!;r<"VCx1_71ýX>"h$S&:raBx@Q=D&"sq$>F3
!_CaJwbao`S+tnpEm	R}ј	";	b~7Go$;}>D#Mh#wόOî/t<$=ўoЧMيDQ#Z"~]62f]VO	4tZIVß/h<&0QνЋ'b}]
OsF,
sd?kYDpQ^MA''5<hNsݡɒerB[1|\Y<b>5d~߆?N9[LzrCMuUW}2Kda6G{dW`[_˖]悅TYf:s5c<M*%	PbuStE&qЊfş5|ۆ/T̯{kEҕRxk}3qYP,/oop.V<>B2Zui9NeoЍ]UJ9Z%e/P`)k{y%[ثmܥg٨YuGAp\<sj0Hx	^_sw,_.^
or_v(nʆHYdAXEJixIr/ţII5 V*( 'd|B`ł5YZklWU|S]6	UZ@y=yLsnt(?kiLiԐƳܸrJC!\(mBznaaT3XvwlL	 _9 Fd
W "0*}%4LtUhlO$*zBt<jh*f&O#i	ߔS̻O֡\ciU/)wʋ	@3ʟj$4ToWͺzSox|[Ay]>
ۧRV>3X3bƺOrF>GL4ֳ>g*+5;yiqG-`3\'7MR%{Y|KAtw>Si7Ni7 ɡ8]kKK;.j|gRFj<7W3=<if~Lc&388lԡigi9zoڭv}fɠEran¢YvbsYa7?ALѥ޽iLs~WqmB&ykml{1N ;1ȝFp]qŕ>ߎp~ w<"ݼ=xPſ	>Ľx	TZ}vWM~r;~ZxǴj'~/jf1/?H[R25goJc Ii98KFYҸD*fem!hQZNM|눆^"'a7'w_T52U,#W4q+Әȉ;2%o??PUNV%+V\R	S]
wrxo\{-IQErueO
Lr:hIL96WOj ڎm}p[65kަ)/|&Z|2>N?E</mi66joI1fjh+ZkxiFa
R_*>e۟gp;c[޳|4޻o1{jjϤW30c$t㕁EYz>Z9ڦY7C"shЎ//ӫg~GƌѲ:7cߤMG-ߩ5yʣbv%
ikN8׈DFhT˨A-jM{J܌8gVg-~d%kj-!vYG-RjPvЙPsxHu=Z{ll]@o]}l;l	JgYvVC@cP7bYas܂U;}fMOc?<طc
O<'
hn}fm
v
s)|Smp4y65S
K`N{v
G?a)6RvȝTn={_OGNbtV#6^a{
\Rf`$ݽLC9D
߉*nZ%~eߌ_b|e YQ?TjڡI]rkw]u˵f8خuϘ뺐
^IXn^nyqrX^VcrWWiGqLA+H$TyZCfv;
-츁EbDfElRPaQl"6[U"%AqXkf-*Mm&ͭ2)t칹Xav$(`J2Uh>I4`iYv9>"Ɍ PK
   qs[a]>  n  :   de/cardcontact/smartcardhsmprovider/KeyPairGenerator.classQN1=RL\gccb&hF2@0cBg2qQ;+&{_ ث <SCE\h>Lҷ){ɐ?<sNB~Y[,13T {'_72ZX38^H@Er\L~ E8Z%tLAzQԾVIա4^&w1Mn&yVl2ji/H\ߣnQ]B>8u9&LM5P8~{EbjP%籞F .@mlꤊcJwPK
   ps[mت  f  I   de/cardcontact/smartcardhsmprovider/PublicKeyAuthenticationCallback.classQ]KA=ĬIVcmb?(DűO}PڗdHnvevV_P)??f!˽3s=?(c	e+q#x(!\)iʧ:ҶPl,;P\
3qd<c]aM|ijAݝv":"!R{hxnԄ09-OLw\0pC#1\ TQL0bɎtC0Tʞ5ZL!<ݧ#Ջ85RF(^R,eNN?NO)rVF?
|޷BɝM[Wj8Lacܫ2l.42kpFVfs#gPK
   ps[5    K   de/cardcontact/smartcardhsmprovider/SmartCardHSMProvider$SCHSMService.classV[WUN&ɄpµЦ"DIHL&C:ę	|jZ͵볮պd	U=}9<  $~ C;ʮ5b~b2wf
g5kWW5^ҝYr,~o7R!u,Tn;GJ99F2y-*V^5K:	XPlŲ%yR.eӇ\A9%ѓhb^A>~b9+Cm3Q\e2Aq#)SqD[O-%E(qe"T"%\fLJug;ø"c0h tQ1nX1URkem$^(-Z
B-8bEk *b^2pPeVJܮ6!	1Mup^jeG7K`5PJY`LD,78~2U|ZmuboXXM04$fm2QXfо{XbؤN<)"53gl?]gϛyVwJ/iJ1Ykl
bSmf̤$͂rc"{e:Bj!F=Kdev=`3E:ߣ9Ҳ{p%ũXd8DoŹ#Gޖ0BAÛOTbzRK͠9bvkQ
RmV#!%w$4+AhfRE]F2ΒiuȗK%r	i=q}4}̡k]\'$/[]%sodl<>G!}RHx|~ǻ=[ی, Wu:\H}U$II~Wr!ۿH1>|RhEY|G0Nߟ.&x01r5lNi-?V"*G?}/Gϧ">ߣgCnU\F_ 7xSwXڈ?ʏ.t=b<I9H>$	R =:.-+qHndlJ.;٫q\F+
t^KЉ
wpr|#ryh$Gڑ1ddǴidBz9sQt7/
n9
A߯rkq#K|=PPK
   ps[0͂    ?   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature.classX_=0ZD#kw	(M*BE"òlf|iHnMؗm44616Mii=0.I|3q^~nǏ2k`	;9#>fͱT2c˦ڛʤʃJPR$n%fvsnTl0Zx*aX1XԅXH%/4udT:Hds̶Rd,YU=T˞@VOt
rLJ\J6;O6GdҰ}X#ddۍL21zhٶuװ6uG`E1\Ъ5
c={Ow	6	tQhf|f:T(ഀ>+5!%Gm,zBdt*3q#ǩM#F)lC*א1lh0JCv){-Z؁ޢF.'J1KݓzFRm vNfl,>
%={MF8:g$H`hnRi`:)òLj+\bm<
M~9{Z'H
	΋3STߑ5<>$qvVjl04X6kZef{%ه*?6AL`鑪(MfXv?+`  ԭF#.1~9--|fs4gt$_VVrȉ >"kʄQ#cώ0DɸQMpYG
:j'k4jV^Fަ&HC0$p2SHsFЀS@v|xTCr5X..(bOڦzٻ/:z.r2~|G(uN3!O;6:dXr۪Sef@RiGR]G΅fF<pKfl4>G
-Wotx9B|se֒ZSx#=$Ղ3Sȭ01v*g(.k56Ngb7V۟ JY$-%@+#pȻ).P6e`enF.h@<<Y$/흡{	N857vs1s̊R2Cu+!|5rR?m)ֽ4Eչ?O/
_.mZ]8 K=[Hk|iXPg/BAjX
@_.<-2-m~Ȍ*,2
(!Y{2Ro=_|[ii*آ|.en~Iz}\sw)^m~	t;߇2 ?Va5۟B~Ӗ?ʖɿa(Q5Q>fUip$p$µX1}j AF%ax; 8'I;J;N}
fbGQe.pByXu=	b<)^gGz껂w_Gm*b[x^Il6KЮymP)7^C币c9AOa=ė1n?2FЀ8#M aZ8wW9|^]U/Ǘx_ʨ=Ex2,A>ViDnQwCu'u_P'Q;'E`N7Mf[\TH{Is)I_+Mi?~#|4M!Ii.jnL~젪teP>_PBO)nH %~ Aҝ 93*߭mg><ޕ\֠ءYРhH̦~i'C2aRI+XK%sSHMT+JXAgk'njYC)l:Ϩ=	yi۶vF}?GE?Ryw=}_P@.9"qx
!Dx*%u@~5槴?,
	`և?V>6и۪}`_	%Yd?Q.щ y143Wp:89oҾHG	?^}vϴӴNW}7iA{
#PK
   ps[[    5   de/cardcontact/smartcardhsmprovider/OCFCallback.classRn@=6R-;`âJE*GǎƓ P	$>BIhUeks}'gx裆FMzb&x.!?HvIwd,WcaKĔ3)A$<LdJ+%Fۏ\L툜,ZTd]kvh.>zaKh)OYFE>VVqEa*v9Q(`fZ*L^hC	L1tc]WqYKR&h&v+';ߥ_HR~F"h老3H5Юpc'詹K[rkw<ܠ:
n\q˹R3Mo_}CΌ[D9awqonxPK
   ps[qQ  v  C   de/cardcontact/smartcardhsmprovider/SmartCardHSMParameterSpec.classTmoA~Wm}W@}4JhkmZՏ˱;HCؘ2!j23733s/ #F3$dXnk;=5ɰ0/4REB:S0<j	^ȝ\	=dK(ܪqŻ"CM2?q롒^3bz+1D'<mہP#@W%9W2ܷ`?q>Yqv(4~K0d/ݦPxzWRCg<Ȁ8
44U3t !<]=!zJ8<-2"X|av5C5/YSr@4o?0KW{H"&7u)&]t2VpdL_azkb $gH.F??O`;w0$,!NɇHya<W49tyfN0f`Γ0a$e`Q/`.K&2V٤ulsG`IXbp:fx6ʩ
QԈbk>5N>
ܜD'K9O ͊ɹPK
   ps[H  u  S   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA1withRSAPKCS1PSS.classRJ@=km' XkqK&IO#٨ (b;3s&|w`z Pٵ2SvT5pПCE.VCЍ 6h%+wUCj[D`sՌhз"eoijoNRtsUR0pg6VpFu'AHV;EHWօV~kapާn&u1Ce|)qݎLL9N{ERB$~KkFoCtSUE/25y{0Bg"HO([|(R. &Mb3Ng0Fs)K?PK
   ps[MW@A^  ~  P   de/cardcontact/smartcardhsmprovider/SmartCardHSMProvider$KeyPairGenService.classWWWnn
aƷ Xj4UADԶ\bw7 ־Z9zN(&<m=av̝o;ӟpF WTBaWm]IM֒Qᜰ]0G
p*L{ۑTε
/4U(2j("PU	rAt.jrʚJłSPR9Lr"mrELk}Iͬ:m3N=/7[ξl(ЭG6lgZ#j~Q.CK0lk<Hة`8v3lݴΰ៱4/x.^AmMiec'@2A2ou#Vv㈂*Im1tH4OE?Țxv\=Zyf"(מmTq)5OSVPm1_"9Q ZuGƪ,hT58/-jrX*8+[0ՆY3bTa{-1Sp^8aBЦXo͔}lC^ېR.ݚ=]T\2;E0KVXv1SX**Hۈk%bE'RpU4Qoހ!$l[1U3KRc86Gq7dfv%d=.Cqn
Z0mZ[3)弰g$6lrV
+A yupP9(o֒8$kERл1Ohhk18gMͭt(\[7rߣt0﫫-Ca%\|B!G6˿.=X4`Ʉ[ōmLQw[hx~E^%x~+EF	Ih4gUm]\4j]e;aIi
Y8
m?囏t!Foyב!̑@A`<=$M-oPyXcn6m.%
y/T:Iܓ
$=I`IV}{$聺C+T@ek`
tinĤ61MLjcbt͕I;DhmwĦkZÎ`<vϏ8xP~z6á'81Gʓ=o>ƙp<\{Pt\jx{X+gBOp<cʴib|~<z84E	$&n5u9yh?SI/Eh[h
CHCY\T·b	T=wap*,$JO61!]
z:7 Pׂ)'O_~?"wĈr? k[EXϼ.xϽ1|!=I
K|
DPK
   ps[  `  M   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA1withECDSA.classRJ#A=eɪݽ>xDq\%ILfGDUNW>ۻ k`P;jp)ݫ;Be8.ޖ~$t;J#"g=YD-Z`=<U'%ahK%lGi<cq*X$?4Z%B%|!yۨ&wI#
ȠkIWbFF)#X4]>G穞ysawR=WB9L:{S܊ƒz{$RbeW_/TA<+u (pt=
J`2G9*tDbSdwӘfsGrPK
   ps[0    U   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA256withRSAPKCS1V15.classRJ@=c5>Pp
U"HA*t+c:#i"i.Wě.ĂZL`{sg ;X0^ڥsh$l^7iO!mb &nE.W75wֹPw*hʊPyΩ#>
%}K}Jss[h%ꯐr
Cg]oţ2Uj!*dpQԨuo<Bbr̕652\y9E[^5PD_4|̐vrőe:.J%Bj{<0Q0H7szh[JXH=P݃Q:EbcLL`l
ԝL<l
<,PK
   qs[Mݱ  }  =   de/cardcontact/smartcardhsmprovider/KeyPairGenerator$EC.classX	|Sڤ/
(J+gP:ZkHKZ&tΉ>dÃTnp;t~Bڴ,'{ч7r<apȈ%Pҗ̤,%1	oCnjI\ՑX$x5X:e[;;ҋ.mPEX3iFb
\FB
^_"|-MLBfjzR7;y7!KW՘KP
gS	vaz@M
s#pmѨޫEށ~=l&Ǔ#Vbfk&#ҒD}<J$X2!WԍnDy*梔Dp#Z4O'lL-h,Qǀv@ߪF%Ab|Qx<\\f<I@ayBzg{4䳐X	QP0^_"ڳ|/`ŸP*Wx#e*WWWOA*Ts(LZHWp~<ZnPb\z2uQ, <P3Qp"NY匒mAn"431q=&sV9	YgQWnvhZ:Ƞu*Hp$,27=c3'tl<z@gHXh#씉'ČGy"ct^ɫK#nDzTc3Aefayv4 ;TN#7SEFZoDnGxKY7:;˶*vrPm,\oYc!WJܻJ[,n֭"$>L3b֟9ȫb`*`)azat%l6=c7CEW%8HJ,pd0I_$az>>;d&ľ"=*wa}2^oLmqjOŞ3u3ܤIr؇yAxmģx{2e.coVq<>9нKp{tS[Iɟ7뉐m*ގwO+_NKM*nƻ'kCHԵ7r$7OO%=p;xk;7ǭ*ޏ۬H$UhdnWq wȦe[7q`hwdo$y
1
VI. Q6Ұ~ݸ!~+62O"Lg֒@˹ ~Ox~AȄ@$ͻU|N<`t\7Rqs@
39:$U< ĩL"TA3ɖ~訊a<dQX:WT8vRļ-@sl>K-M+lkxA@ލr=x\	
oIΜZ8,nekqqTm,+-18|&{QA.>=BBξ-<{3Oi?)pHhdN4
?ac~bLb) \xzFa|O+9ms.Z3wB	+s$ekX Hת%X?nKuqagΆֆ𲊿oHr>Z [R6~ɅKனY¿jW🬥e3jYS	DL+d& B\~\㐓RTrQ>ܱzvo݁-}GSTKpN6a)\n.1?dݮV^t$"W4|>G5m7ACqi'jY7˚du>&RɳfBdSdwuUg	h0kᩘD]!>Z2L+T(C^\3[,HE(Z$0AgW2`f97w5M3o+SP xz~|/9exTh);)vgi`Y~fƅJ(}(M[Xxڎ5աhK0C蔙Ղ7dH*lW
L$M-ޮ'pbzu:jPfv`ؠ[Om;G40'c@|o:( |#zEvrKwQh[,1&v
Ui0nk+2afmu&j[.Re=BzĿB\'?=(4|PF
hwH}ss
!нHS)AqbSyh*Mt*`T<6/Ͱђ9n" 8;%X?)b5fOf 8(
ExѱrC6
/qa{M36k\
~򨔦b	Y.cVL4S6yhbl젹_L>_0XmJh6\dIE4"'3>䕪+@iU0oH,SˌMaQsP|08|˫RXz^u |7`N9	0Ch c^u?)lz2*ǖ]j˨5yAQD0.ZrCVKTmϒS9S^,R̌LLG-L,I(pVN_L-y-PaBz(Pe,ң8-Lxfo0·\܂'Ү!$[e
c_js8R. 79?XdZ[o7=uy%y)bVXwNᣇ	{v f(=l
GeN=b"g
ɝ2I66oDk;KMG\	oXz/z0VC!VY͠YȻy7r`ōX`7Mk֢֡fl6
Q6&j]V<FxYڎR.wR]w;]I*ZHUP7URVQ
EuP/ienqvLlM0/bô
ց!/9qn26<v"F<jFUV`Io_M>J1ep@@HZ>(?g<*Mz1.lKǽج;z/?dܮ`^q9yPaM])¿O3}=>T_A}")P&:ͷB.`>ڃn6گDtQ
Nlh9TYYrJNyq?Ip$<k86VQG x!zj5Noss"fq]	mvPK
   ps[뜌  u7  >   de/cardcontact/smartcardhsmprovider/SmartCardHSMKeyStore.classZ	`Tչdda	Ip، !&	 	as&d`2g&,Z]um+R-(hmږWPXs\&D@fsϿ|v?ya?Ir0xxM'
U$p{"Pq>OXmoJ$IMxJG6<`
&7YP)BTE5Hdk["6d%*d
'ץ)ړ%Й
7k
>?]&6[7Qo%FdvnȮ<۬NEΪ-Dbp`ֿ @gF#WmT$Zh*4A~Sdf[mH<;fAAm<\6ܬ5D30LПáhJJ&CVP>Ěza8F8(JWk%q>Gvߝ1ВZU#
T+U #Qp^.8GJ;S
[TE
?""Pʠ8%sGk+jg&cJ8
L21Q]DVKъNVko!EJCL#dmheIJ$h%(դ=z5>4B$Vh$1Jg@Qq1<WjfR
.-ޖrEV2ޞ[9XS.Pͬ,` [h",h
j<2$j(
i5Sał>X(opdp۠]*8đdbUR cz!,
ش\!ӻ)uACVA?sxTh2aa`ک]9`X=zCV#1H6F UZC*YH,=wydXV1<~^2n%hB(iEUȱYV=R*:R_a"jjV/kZVe9փnrCerdK(Y jZ:\Zr^tKHכجCѤbF7fR=߶Ag)
횱N6\ov鉩_iw.7ɬc<~:Cj}&V0hb,s"$0״0K>M~<h!<,轲=m8	,1LGxTpnO.k:@eNz_1UHr&AWMK9a!vxOe@nGJt<Y:t1fiR&.:A*^!e9Zg	U7,%	zjYim̊y+U^``UHYdI"k.Y8otUQ/tV1cr/\xY:Tp`/fp /x7Nu]F*wL8ES@SXIA{&^WIΞ	+}o:?HGHS{Ku?6w`ʩp'ȳ]d!?1𾉟g3\k\TSP{^r SPS^Cs-Z@V_/Xĩ9ڲlu]QfR=xeu|
D?/YLUʀ
P`RUJUUٴBuL]Mkɚ'SD#TɪxffIƉIVpݬ En6qvah$M?[ྫྷ
D1#^AI,YV2٩Plc +^{hJqmId$,S%x/~'%TSR%Q+ĉx-ҋҷ}J+:4n8v6b!)]ٍSm)jZb2 )l/R:W!!EpUt,
 5h];,%Rd`sUϩ59ԔUO:!Cˢ4!g
Nwe`C6l۩U.Vd2d)eR~W ί
T!9'{F/&Լ\JvA#6ƛrREF9ה2!>.%YZ}*'
gJT5jOplye)d:)0*)p:rBաLY2ې9/sY?w-RNL_Ȕ&ʲUznܞ}[60W0g[F+D|Q8m%tLzS-gKPP-ҪKP>m88a\w6
dRt2]&F
d`
l̫4BvuY[mTۍds;;_
췳t8aUxޘړ=Pe+ו՞U
/J\mƩ^sG[ep酡D3{6Sa}g3<.-\nTpysmbAj7ꆇ|}QrDofH}{9E>JRtvʂ'IxrSdG_>7-	oֆm?kía׆q\CR,}4$W9¿ydm;5R

~YUU:9٩8u0n:ptq\pʼdfNݾoU=fxj!5a[1V3]H$lH:nPi}@[
;~ID(TTk)Z䦆zmZG[}\PyV*L0k#SjsFpۖXCM=j͊noR[6EnhUm!X^AǐIO6438>%u~1=G)hW!jR-dd!L\$/3vB$6raV[3,
ŚVrxm<-K)FUMeY;P4Z/dR|Z͖U=wh2GwWEbMΝ:F]Li΋Ŭ.UOwWB焔a=.ePoXz$2"dg`nȨxZ[Y/.BI-ثNCTE-EM*@p7|s0:_;v`g0ře13=69]:0aO#}ϳ1F?aZ,KR'q(EJc:PѬ{<r,dP,Kh1GQke?uDRiWq4lj9q$+^GZLd h`FsbmKhK1ձÎ~G8++w]2Tӛh#1ζq6>Hb0RZQ$G&!Њ--@B`cZy98hhwvv+
wcցL	߁&GڴuFnԧИ&˲O_ei2~241,w4>Gᛍ|ww]؄;7c&n|Ƚ7k7Coow51S+x%GK(Q\ot~X3+<J3u+49KX,.rkn"k6t6L_25rŗ0msaB".Al>fRA[INZ$3t]n >y>(GV!!O[ڱv#2e@[XѶ;1wTRo/	!FFР
6mǼQAj䆺W1ކIP?-#ځ[_\}k[_Wz=swbQQ_x	wWʃܻ$S~<Fu  dTS.	g%C#\E_؄=֋Ke<WVAc$*?$Fvn|1Q9ܳU_hb% c_'sCMw;tL~G0@ێO>VB9D~Uz^xmQո
z{_лKͼG*sv=SzUvO?h(`n}
<
깋|-;
l[}\IPE7 u6;L<13:10|H*"ߒүz~f=.&nV]CõF׵ֻ]<ki
/O.:ZΨi+u)0xd>a2zZbW߇їvvʿfx~u(HT<z:ϴ!?eCFpgf8.jʗ9Pn1_ntx;Xn[TayG9G`r|Lk&;Kڶ:h/ɫX_A$G0ߨ-1؝wYx@0׳w`Vk_b>2UcWM h(WHWXWۻ T(TKB@k\}iTJojm_K%+E!F`	Re2:,ðET{u4(RR)D-:-lumՍ [ whzoHjTXu2M-gZn#3{i{r!'g#<;UJw*o
i,z8xjuu.Il+(ㆹ78#Q)`]^OI7vv46 o3[Ϳ#'ېg~T^uow\0)YTdrC@Kͧ^,Ke	&*>k#˵8GJ{+UiTj*-o<G0^ɫ'"P	勶<gY!H"UAجQTrK>й~?䧇u~W^իI;Pܢ\)ʵ#ROyXVΠӔ|Q44gY1K
˼E
{p
n:6Wt{4q6YE˨g#57K`?MLYM̬AD15L0_eKH1V%l=neq*<&W	OF`f{C6]ff[fB!r2'wH)S.Qr4Ӊ 
Nw!W_ҕ|FAb̀3w+=׎q<LdW|DP]Y3)c:F>G9ZGu%
XˑSj'pFiǃ#lu'&F%Lc7n`f _>Уq`U,y'
5fڳX~v&yvr?{-M.rA}b.-+<ErVExgsGj'!Dy[yr*{̠62W(-eP.;ؘ?N\$,Oޅ<Mn#{ʽ!/Y>KxUy2~+U<A8<)y9FCn=Dm!]	zP}^VjD"qMmކ6b5^w2(ch7r+G'yn;?0$㴣Ly'}@zSlV榱02PQ;dW35T敽"%0p[
FJw˘J<=NO}z/%Q	2yLQ}#ls3x(<JL/GQ4ޢ4	C$4(TDm,JFfGп[fj\+1w%G\&kXT1f۴U>;9/ؾDƯo6ŏw3OI/,u5:cO
]h<إxžJD7;;F-av:\VFb"zB4G*{r|WARnCHyR!Z.'w`eH)C=Aʙa\)eq?(w D}9Eua.I:zg2
Vc}Xyo0>oz0J[=/!){q%JǫN^ bg<fUݧwX79bq0M=H*k~K3: GjŠc=}^FVuXWwk{%Qd)?!PK
   ps[^  i  O   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA512withECDSA.classR]KA=D&GЇZEAJt-}fWf'|*GTt==sao}RXY\]^qP$Gޅ2n`PPK(%	݊ĈYWhcN=jI1XӒ0e	ٷ[i~ރSq.X$m?4Z%W!	V"WMλ8jC%2uO>'1#^#DZ,oVMo~{AS][B9L{:ZzVޒcIL==Hk2֫cCڏxUP} (pu/x_(]r߇Qx(r.`&{I]|z
yu9/pPK
   ps[Y:F8-  	  >   de/cardcontact/smartcardhsmprovider/KeyPairGenerator$Key.classVmWG~"4D-͒j
B C	U[q`eg*?_zT<Ǟ~9M=mlb3sw}㯗b-XhE#˓pvb/]uKBq-U2M"#a!f6H:\kdPJVP(떄J1ML~)W323u6@ˊ͚؆J)ՁcďȷQ!20mb{NEC6%%`0%7y\3e4qgbnPpE)L=1?E{∊vߎsY	%J&b8AޑWݎǋ6Ve[11ٷ!ɆR"ך:!jDp KBUv}1,/TES|`C|p̷EZ}RD@s_{dTj|Й[]\+O^c`3]rm
#VFܛfM˒0eDz-B'LJ{\z%nE+h8M!td{WBn=!Rnհ0K.ExMBa@XX#8R
́.ojw,/w#]F'Y:#m+I:#%d)nZQp4CIr[2Py&M?*h%OCY)w*Mu*L+Gчڸ林wHtb[%6Jcb
'JR	)K{	
4:i~f0\:Rp2nMBWW+fQGco*uƋc/a=Gؕx~D/8{7>9<g r>$P$YU8|) }L<7%',[		bZ	ktyf-c$`	(1=X_F 0Ov?oB"_-Ja r)>6:U[hЁ%[pa
<~HR7|KqPK
   ps[Un  i  O   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA384withECDSA.classRNA=t.VQb B`4,1!Sb]H}CdvZ'~R} M̝{29'x`P;;8(2"h*Tʨ%	=ĈXhcQ6T
C섟C5LhIX<P2	٫miN`{.E2CU2/+_rV՟'jcwU"ɸ/ǌx4qOhe9X4#>Z?=	»#TD<L5n	0H~TJvK
df:ifqHݎEI^X~ī:(+xo(~+Wfwxo\C<ʹ\13<
<˫9ýPK
   ps[ Z}І  i  O   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA256withECDSA.classR]KA=D&GЇZAJt-}fWf',}|J?@;0was{fJa}gqyeA0{tjᎃBBe8,ޒ~$t+J#"g]:YL%Z`=v"LOKJ&doyn6NŹch_7K&[WΊzp_M79Z☪
Ƞ=XČx4qShe{h:*#Yŋ6	ο	EN5w'n	0H+keYyKv%2343 I"$[>ҏ9j?UAWP}>^
D~~.F1s3GL>SΫ9PK
   ps[|&    U   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA256withRSAPKCS1PSS.classRJ@=6h5ޯ(
*^ kUtiWD6[. ?HIQ	f9=uLYH1dyiweuB5Vyw-d:E|V<9mtfبKq&QRW.cH`rikIwn@h[UWEp*hpg?xCJ1da*U +ֹԧ')kB~3"_o-}a"-	jo>if=bAc_.JR{?."$0
̠o1P
:h/,:I;PBy#?lHlbl#ԝh2=$ZHxXr$PK
   ps[:    U   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA512withRSAPKCS1PSS.classR]kA=7dcӭimkłVMJ@RؑfHF6ev.(>jBg`ýg9??xgr?pP +m'gAP韴y_*Tʨ%)?fđ46&ėz/R`G
=oHۏewQ5~e45:7(ӿQÌ*eo@(ՑͦCeaȈ׍i~
D'/OqGHK2ǆ駩[	UL>T֝CIxJl'N,="eڡL4T]xװgst_{(<U>A
hXE̔6̺EO3߁PK
   ps[yz܅    U   de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA384withRSAPKCS1V15.classRJ@=kMkwE`/A
RKMv%MdIEH 
^09}| ]=Nious@H<s0OEue=2&za2lՅrUw_sWa+ͰukYv"H`9rd纭ݹ#}woiNB_s~v~GHB?񟷟QC*%_eH:-K_TڭPb{UdTIݔ!鯷FYxcHzKk[O2NVؗ/\hu)5yB=}s}^dn$(KVRTwaEaQ6c.9Sb'0GS1
PK
   qs[           	          A    META-INF/PK
   qs[                 )   META-INF/MANIFEST.MFPK
   ps[                     Av   de/PK
   ps[                     A   de/cardcontact/PK
   qs[           $          A   de/cardcontact/smartcardhsmprovider/PK
   ps[?b	    6             de/cardcontact/smartcardhsmprovider/KeyGenerator.classPK
   ps[l1    >           x
  de/cardcontact/smartcardhsmprovider/KeyPairGenerator$RSA.classPK
   ps[oNnS    M             de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$NONEwithECDSA.classPK
   ps[n   N  >           =  de/cardcontact/smartcardhsmprovider/SmartCardHSMProvider.classPK
   ps[Ê    U           =  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA384withRSAPKCS1PSS.classPK
   ps[ծ    U           ?  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA512withRSAPKCS1V15.classPK
   ps[?̌  {	  6           @  de/cardcontact/smartcardhsmprovider/SecureRandom.classPK
   qs[<j  +(  <           E  de/cardcontact/smartcardhsmprovider/SmartCardHSMCipher.classPK
   ps[_t֌  =  K           X  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$NONEwithRSA.classPK
   ps[}  i  O           ^  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA224withECDSA.classPK
   ps[s  u  S           `  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA1withRSAPKCS1V15.classPK
   qs[q/  2  B           |b  de/cardcontact/smartcardhsmprovider/SmartCardHSMKeyAgreement.classPK
   qs[a]>  n  :           r  de/cardcontact/smartcardhsmprovider/KeyPairGenerator.classPK
   ps[mت  f  I           s  de/cardcontact/smartcardhsmprovider/PublicKeyAuthenticationCallback.classPK
   ps[5    K           u  de/cardcontact/smartcardhsmprovider/SmartCardHSMProvider$SCHSMService.classPK
   ps[0͂    ?           {  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature.classPK
   ps[[    5           >  de/cardcontact/smartcardhsmprovider/OCFCallback.classPK
   ps[qQ  v  C           P  de/cardcontact/smartcardhsmprovider/SmartCardHSMParameterSpec.classPK
   ps[H  u  S             de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA1withRSAPKCS1PSS.classPK
   ps[MW@A^  ~  P             de/cardcontact/smartcardhsmprovider/SmartCardHSMProvider$KeyPairGenService.classPK
   ps[  `  M             de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA1withECDSA.classPK
   ps[0    U             de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA256withRSAPKCS1V15.classPK
   qs[Mݱ  }  =             de/cardcontact/smartcardhsmprovider/KeyPairGenerator$EC.classPK
   ps[뜌  u7  >             de/cardcontact/smartcardhsmprovider/SmartCardHSMKeyStore.classPK
   ps[^  i  O           ں  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA512withECDSA.classPK
   ps[Y:F8-  	  >           ͼ  de/cardcontact/smartcardhsmprovider/KeyPairGenerator$Key.classPK
   ps[Un  i  O           V  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA384withECDSA.classPK
   ps[ Z}І  i  O           J  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA256withECDSA.classPK
   ps[|&    U           =  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA256withRSAPKCS1PSS.classPK
   ps[:    U           3  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA512withRSAPKCS1PSS.classPK
   ps[yz܅    U           /  de/cardcontact/smartcardhsmprovider/SmartCardHSMSignature$SHA384withRSAPKCS1V15.classPK    $ $   '    PK
   2.\           	   META-INF/ PK
   2.\:   Q      META-INF/MANIFEST.MFMLK-.
K-*ϳR03
.HMLLN,!@r9y%h&\\ PK
   1.\              de/ PK
   1.\              de/cardcontact/ PK
   1.\              de/cardcontact/ctapi/ PK
   1.\i
        de/cardcontact/ctapi/CTAPI.classW	x\Ulo2y-i CYB0IPL6&!%-^g^LLg^BÎ bE5i6QA@TEEVTP{I'Kk?)wss{|Q {DHdoԤ
{}M
fY,*:Fb̚K%3c$cdx{	ifi;V1m3'0qJRo~PBsFV`FQck&#Juh$$ީvBq\tLRTAƥcoE:Dp5cFh6g^SXcEڜ(-P7	M!+tTboN2@1Z
\-Ajd.q:	<esbk$*
L7lJYإԉ:N"{3r9;ScgGˀ/q
>.PdHϓ@eaP\r&Tn{Zְt|F/ıL	 C T8.658
WFMh&TjB=+Vk8U`$G"K{SkXX8M ڜ)WEW<el3A+q::5ֱg0Y#wɰf
I8]a<-Bjvfsj#:2VbO/Cܭ"7Y}9!AldG㣶&XekFlY'G.OV0#rfob&a*ZЯl?>"8}:Wy2vo:~pp1Sax&&S,|JRrub\hBǕJ^ցUEU(%{"܂u|NXYv~9 
^1TLqϛ7rnY7l2ѹL9Q6#7)
ZV˫etXw+QߘXv9koonDSJf	H6R6KĐ6(Ph
]+A~iCkWs}SMYVr]+n
͌ŵU @٬0%s|Ց%,a[g[K iv@~e2vOC.';ϤEfs_Z3nMSRژI#gɹ'8|:&K[kmuqN&o'
5^j-iZf3V7)OϬ!Ȏv*}wZ{Hi&W7/fspUt-n3㵋qdrr<w/>XGN;"l,TF&<I9.#KWހX4Ж%efD/y%wrFt3~!_W
-n7-?czvߎѕln7*ܰSi3dc&ӗ\${(98_VDHFP?eO*7^y<^Hj鷒f<&*d`7V5IxM6vݹtL
GS2ۮ2{Q|	6
_-
q~{`~[wr~8w
r~߸>e
~5~QA,fCĐznv>}^=A9̿<BEΫA?*S&fɟٕAy2/?$B!l-GuMtw p.;NB<F<{'=:7||NHg3TD1;!%T讆3z^~xqJè,)%x8\Y={Vh؅-(Ƃβ~3˂eS]<~F.,	o0p\0tYW\Z%Rk.#oQ/
WiѰ_MawV0XJm^uy_UW"HQ7̄^Kb\܀NQу%p.Iuy+N_3~<w,Siԯ4(N<g~z~zr~½?(罼?)Yml
h
U~|sXY0Wi'
Ȼ<w7/#Jz={TIFqX
<F49O6W>)LFkgi:`ړ2@v6mEhQྪX%(
lǙ[p%m/

 oC 6JY(z
@VVGC|:X!;\q8+TEqDxYL>c
HԢ*]LǪY~H<И{8x@44j	iUzq^KxO_$^c`zþc1Ԝp6K$m7$f~q||4zx)}AٔV]xox"*fa8ıxM)xC,媤f6i[!@qBX/X^R͘
ZGy8^qNb=(|I}1[rÕ2B3>lۢEÂ*xw:E4P{Qa(u(e12G焀P+t1؃=X#LuͮѺc^
ׯAiw5O#1;v?&,^_ǟ)':/E#PK
   1.\Lz,    )   de/cardcontact/ctapi/CTAPIException.classJQcdi"Jhj
!
z+F/CZ Lљ)h.2Xp- <2wyRM
!MButmͨwH*Oh(CcbVTUEWQ}Fa
c"\}~V8TM*AN%sXY{c]gXRڟon8	{ c lb	.ˬ2(pGAd/sc)ruSG(qWLa
e *XOYtPK
   1.\SX    (   de/cardcontact/ctapi/CTAPITerminal.classQj@=cK*:M˃$@.%04,
M	Gή݆33{ .#˅a\\??E(|T	zWB%eO6t$%.|H""%:niEKX&XIઋ0QHX<txR[wy)&\8<ô+HD*{
ZL^*Ce0z19õ'f`^p{>6V1mQ%P>M <G]45to1rz&Z9ڰPWĸű}y;c8^moo[zwW=,j>3Mxɴ/L;LBmsUwUFz"cO	A^:C~I~YO#e7M/PK
   1.\9     &   de/cardcontact/ctapi/ICTAPIEvent.classm
0Eo|R\,EADA((*c$RS~?""យv0@C4"V2$$qIbrT[PbO"<W"uVno%dB+z{$ߍqמw$?>Gi&o$zaB,")ʨ82Bq]PK
   2.\              de/cardcontact/opencard/ PK
   1.\              de/cardcontact/opencard/pkcs15/ PK
   1.\9{Z    H   de/cardcontact/opencard/pkcs15/CommonDataContainerObjectAttributes.classQoAdK[Ū*,n15HC>
ueh_ibhe4Ɨwf= 6Q1sH0da<tܖ+|[0$+	Wǀjd֕bRM2f]y#x&E[wvg}êVp+p}h	[FWNSg uHi#>oQs?u@ߤf'109rg!4"rU#K.1,	ಲ>#+
\5148#E^J%dk
giRe6rID}0vqwS4Ў侬sKWBJ3"'ׁͽ:]K}CS/1+mR0Ɠ8doHn{.zioyP?-\e.WHjy|N)*.QX9g}F:R(0ܣ<N~_uV-@+. 
TfWJ	ҺIeXJf%a0)%dzi(_?:dTNQ[PK
   1.\|0  U	  )   de/cardcontact/opencard/pkcs15/Path.class}T[sVNDPH@Vl1PH-	QpMhn,#[<i'ڙ>@Ǚ!3GݕKX::o=W 'LE$V	I,筒뙖%╫gsyӎxg&pm:..'Yc'Mo%U@
lP*1Wm],n!ʎ[ Zq
Adsr|v*ޘةGÇn
Ǳ;fږ7`@OL59%!u*	?5)!DvwlEV+^dَN\$32)~_>hA
QHيT1C!&<׳v脐 7o?j629=υh81
8Ôhi71.	
$q͍nL*wQw+#U04l!>mWbeS[ޢOC%rꨊ8$VmB$.\nQB"*As(WK\brCGqrtiwv9@2y&cUjt}SvV^5,@*3o6cKlS-ܦt-1Nj/kWI`s;!jL,h.~,:t'KyzuTW%,Λe뛲P-lVٵA$Ro;H@87o,ޛ1QĖ	҄T7PRiOJ`zAӧ:m!	IjT-[1˄=-tJޠU/σ.`[#*]@̐L'?C5lAW-їIBx: jH#up
2p:g|,Ư%:پG9LI6J0@H<Y#qܤCRxKPED*\_O5w25О{ Md>AhU:ny$21_!@fp$L
}6sT,1ȑ>˞KXк|#1re1}El]'f7pmRLuJz$e 0iH~װsJ|z8'݌tw7?mS|OWgnOS~ ;_|Fg:1T_4A;_APK
   1.\2  R  9   de/cardcontact/opencard/pkcs15/OpaqueDOIndirectPath.classTkS@=VRJx-*6-h|"PZ~[
IM~WտkQ?ԻiEHg=ܻg/_bkH86[l$)ݗUePJmSiF)b9g5$+SfU2a.W[.zKpDhL
tbЪB.m0`tW6WexeWk{t,dU-j8ʐ^,&+KT{I2\ޮUe:whҤЏ!ѮvqBIY[kt\s&Sy
c>1ᬎs8FeRѪ9?Y|F҉`t)#:r#8Ъދ:.̵Hr^9jě[u$Hn{nP/W(%'f}{r5rYbַ]r<Tt-Q߭rh'uyT8:\n/J/kVb52DF@<fd!sSۺ.gjկwQ#Q1);Q4)t8ڎtiQ|Fކp+7 ё;;hطg`x#8
d0|8Agс1:t*Le`1
$fn_8A0JWJC.}x:*b.RI22$a8~-
ZD-02$Uwpc#&OW?0BPK
   1.\R]q    8   de/cardcontact/opencard/pkcs15/DataContainerObject.classU]oG=c;1Y6M m!,$h	nCdh&d51w^;ZrV*?
ڸ`;s=ܻgvy n{	$Hǵl:v+i+K՟[ۮ-*1+R	>w VݼdK%״pkk021i&@骪'ӹ\ZuZ*]c&>${^i2R^Z	C5U)SKxᱢXeܦ38Ɣs8O1]Wi!$֞8?B$uOM\%55\8N,gC3=ha
, jH
d};^HR&kaD._M͛(
q^⛞~Wu51J<EױDpz[O-?T@rC`9zKqÇr=nԞG^D$uvzyec6Gi
ՋyAiwl FrHU`fӈR_xj˃U֮f{$,9lAA+MO{*&>BOqcpW\%0ƃ-mC{;J 
cmL.?!28.6>y*!ޙϏzG׈% G"yy,l*XEuCp;M1
WZuk?q/gp\3MiGژchXz8dHf$IC*t{$~u
$"|KҺA2ud4/o5`v؊HE3b1b,w1&4Hmczf _PK
   1.\9@  
  ;   de/cardcontact/opencard/pkcs15/CommonObjectAttributes.classV[SSW];9pVښbjV
QЪ$&'8v>ӆe:})]{'`s.[ޓO q:4lOXḙK3iǌ;a'5t9fmahXt'8Q/ju8&0%l&=6}ˊ;i+Il0(7Sf2O4n2$f$hE`KuT3؊V=o9,2pL'M'ml3;>c$YpT?3FԱ[-\%FY+|Z`ɹ>t]{ b̤@ɞZХ=ػh_;uԱ@F>"o`> ΂ʯFpJ*qA=#JB@$v}<v!2:,]=I_cCN9r2O(	UhCeJ2d6	vVI>gmǞ8#ϲP!"W$U,bLdw8bd'}K ~OˌO+|	4̤󎙮f|5F5Zr1s:eLLM9[~3cs\wSWOC8Gloh>neu쩎0g-VOMIũIsc1O,an֕tuq0bȔ$ZJjPm
:_Fg
uʖU++: Z1)\rUIkËW{oB]!/^>"6~F[{sw~Bct?s	ˈ" ë|Tו/͍>{ |?qc؆^u 18E>qp9bh"kDu d 'S1HEVxuZpSm@R	l)U
<	-xU}^bGts;&E;&Ǩ݄?Bsw<'W7ח҇'){g	ѦΕ)&:٦-bTK]IҨr-l͜66 5;BR$U϶r%f=u0TE.'Sn#	frUֻrQ*/f<J;2%RYeXb*Vvг&ǳpRΈF^.Ձ^\(qyEY՜R(UTXX<d)NYH}q1ڥ<)tMJ&5{u`˵)TZ(up^a7㝇+ltF\SrUxKw˦u\v-s*WpY+W,5K?zwx_PK
   1.\           !   de/cardcontact/opencard/terminal/ PK
   1.\           +   de/cardcontact/opencard/terminal/ctapi4ocf/ PK
   1.\t(yh     B   de/cardcontact/opencard/terminal/ctapi4ocf/CTAPICardTerminal.classY|Suҕ|`e	!(C5,]²H<,I[֖.kX&MBMphw[et٣>]2G9Gk }pC3W`irJD©hM$jl+5K5͜pލDnpH&Nִ۩Xvf*@|V6L]#+A%#=5w&
4s0X4޼~Lm箝>PG٘#Pp@>)'.11WJ&qN9r'%b[QeoHɟ݇R,/2bKT!P:qrr+(|4QjmZ)6jEQK`TNڡά1wXq"$Zkbs4KNâcچdj lo9X2.p<.J	c`2elVt&6I\	6IGlX2=nZv[x){ 	73rMl*w0&avQ)OY@VImt!<1؋[IlKg/mvZzeh
}|Dl.ȣLvjI~<h8D5	t{<io;w 8tu7uEn3a|*w	{;)r:&
mv8]lWWLA	.rFFe4`p
c=nqL+v[#VTK&/#Sj݉O&iVRs<2f
 3"r]DcqgW6L0]J+aWTM܇M|'yd^.WMq1e4kӈCNK)SDWKPSSWS){M:>I>'{&S5xϺ5jx\Ocmֱz%drtA)ٟ9{;Sx8k2("Y#juJ 	ڒ?0>y_'i SHr
sSVĮM1EfT%+n4u9/P]YRbz/xt\41"pt7'2tܶEpc ؒ}+Rǫĥ2"/̘>O4KV4$]PC])`a|fGNGo-wܽXB~_`K7#lOLf7VԤ$nyyk54bR`Jy^7g*_jfm.LkdLl޼Q-9U	ffD{P	ڛwmi"r+'Lz?
R2o*gVhsr0-	brL=]zBEfX	4X<'
1>>h2H,ug̠Dw}Y)!sod[Ȅz;gPDkTvg%a^:p?@s}ьё<L^1!f>6iVcHP 4Ax%r(C=ORg/J~w$F9Ȃi@`խ~zysٲ^I{Ʃt]21r`4l[c)XHJjJ(d@'RkkLz\$]%IL,Txpe%Y^'E0Tfđd`~ϒA,ƭ4AI
<'l`DMkrF|Ds8oV!XG	"
VtMHoNVR=J\r'&*+VnJүJ$JVZU$[ROf13|YG/]&_q978rw9㿇_32Ͳ?[6R,U-ݤZ7r`eUKAE#tmgv",:uk1s:^뚋h8OEVS&Բt>/ZE1qE9.ƕ=|}{ЏF?/2ͲX;ds޿V`O[A%ry.NO'
@*LS4+GpwU[er촞GxyY(d}>^ 5|5
@Ƭoҿ_Z(s+6j3QM8xE^qf=ʲ;e;W9߆ܷѯ6:[z(J/~@mҤ#l,`U"W`]D/*>%sQMF(83`sb+):gpD+&Ϣg!&|^Ḏv\I+:
zY+S4H?	F ·SoO1ls>@;Pr(ĉD~
vfC
egWVg`($F[kKq T~@*Vxg`a&/P([/c.c9^k:C0_e8*
L#5r@|K}g
??B̛ɨɃHP		` Q[kNT}1FoQשƷ1[Ff㥒@Z-e:g=!K82˕风L\V*(ߧ ?ȹx^y9!
'p
߃K]>"BjiU]

;:=ڡ::ZGJhV2׮yY<~oFZ?Ow*f^§.3zOPyEbe
bYklk1P!>so9W6v%_,eb:C	79jqM$efDtßRQ$,9 <g=,pBpZb&.+9x]{b2E3x35Qdϣ

uQZigr
yьOOiw	X_*P߄9197aeI^:fYLb9iP
]-CzW%cNQuސ^rߧ\#?zqS]d O:pyƗTUpYGXK(.*1ST1jP܁eb-VuC܉Z.'GԀh1фD3N23I$̒'Țt֤L1KEie\7i2eHO&84B)((
9qƍ3ʐΓd̼BЙ"|}>h#ٴJH
4~yTKEKuZ·K>5?Cj,eFI敽rax4ãW]HfYmvp={0K\qas"բw6l.&Kık#_<@˦%*Z
!f+alg1E0f<QZLSQnӱAO2/%ruȤptgE,KNjoaVkurgaƎjw)P%`1dr	vj3q+>  
ŇۇQ&Nb(։G$>F~8a:ŗiTmr;a|زjڮ\U1Ɗ& fE)ț8k/v13v@N5?O~/e@Q z׋)s7V<fVjkkn0'w5r.fr{)oXDaTg	g+鑟#<ON_"p8/._Aq	},KU>셥ۅ\B"Oݸ8ASL,=c99	*q
콩̮)7/TNmP@/[9f
q>~C>9DNh!'n[9v媉2LP"?Hr/ PK
   1.\)UM?  o
  N   de/cardcontact/opencard/terminal/ctapi4ocf/CTAPIWithKeyboardCardTerminal.classVsW]kc;qQȎATN?,Ŏ(qU7Cjem,S>
BKB
Myb``lfOKxw$'Ag=;޿ WQt BDHDL[4
/L[~'=ӭZ^I^8F)ɏfl{Lt"wI_ѓ^Lxe/~8Ь'㚷8ժnΝ|*
QGJFngzr'-wzѧb]oo|xn&cZ4=8\-@ 1'ְGp?gڋ^9|D>ڹ>9a]{jz~qP`St
Q*1$xƙ$eRo-TixCpܪ+$cpHffSRdr>OI/J2qJbh>84Yzpj
-nJ<B73ԼgUFҙ!vClq<!Yc'r[Χ}2ΰY!;%LbjxRB"Tsj͓i8Ԕjxf]jNi8O	u)m"A^SfۭO[^(8s;2y`SWgiyblxFųWg,'ubLpz>eV*vnqqyìycqpJ `wW%MdTmE;02lm65af	4uJE}k,96%`9۔-l(yP!/zeVw-TŘ<֫J<Q^hX[b|f:' [~i;RGɴj/9<GɴQZѡ[rndX`
Gkm[Cb!45Y:^pOSf@rŤ]3DT\mRū;oqe׹-:,9aɏmtXxukgL;BCofs,^q
;A@;.g}!d*fIvkۿnS[oqm"W*3gccwzRsSgىlf,:/^q$>>==5в4*~&=ũ{e}a)E>ǯA#b2qoN/	@ZeZ:TTI}ϒV(Usnyu:Թ^\YC$Ĕ*4.{\Ep4SW*.)
ZEo*_ǎX(pa5Z$?R?ZÁX((M:Rs=}J`
'b5<RcJL]EzԛLcM_4R:B/SJ*g$y\J0y%(eGţ1/o35N[Ga-5Y\,oDe
{}reeVox
`'/8A<a<GV<q08E˓
>A
טopE.?0/Jxe	Kİ$j<D`I̒_D!\)|4HА*^!5|k }xpxA|/
\ǷhYo/taz4os7B<QzwWx"B
Uή⸊05]*fTrOKCWAw? m+hv<ך==|k4B9~ PK
   1.\h5  v  I   de/cardcontact/opencard/terminal/ctapi4ocf/CTAPICardTerminalFactory.classWkWHcL8\TC\ۀk<<dČaHbiM7}^&^+C/4 l~̽{>ܹ|	
c4tQ-PX2Ü^IGTL;b-FCXG-t6++ͤKœVN[LF&Ф2.Ҷ[[<2tj:{P/P֒2c6#bbm"
{u<Śwҙe8VNa&9=4jxT~<&n"\v\fAލE4j8,p8%
B2#ēMg6$pĮ <f%xńpT aALE;6t{rprisדCvtJ	*8j9)N2xO$R1e)~f*8ԯbe Ԡ=zua)m]#B,<k8jG+
2п$MGWDj? кj|C
ZP0cDW_m"͔=vU&c:>q'&(u=)p2Oࢎ)U0K<,mۘU:fpY`ߢ 9*>َa:rdF'Tx-Y4%{BGx*c_:kێX+;`D{0OJRhȱ5C/n>gU]aʆ[ٍA
)z&6.՗2ǺӰ$p~Me;(Wf-F˪)|et`#*j\q|^R+Qg%+DL٩#
Kh,]JQT{Ҧ/ܤ'Ȑ42\Zg>͊*Av^S~TKA2ͥ6BgS).h~EIG-vq6W_Cvܗ EudS;I4#°LLI}qE^YJF@0r]jB^+R5ƉdN,%u4:UH&{βRld3o=q?O5-g,isZ~.^hZܷa2n|Q篖!F&3#ao 	+I-.:hb찅IiD>`-m
Pi<c2>
g^y?η8yCuvW'Iu §+rwlw<S(|

!NWYZvOmR;>&_L~F:>h?@mnD5"\[v!p8A
qfÓ<ǤX+ga//IaRTO_W3@kL j>}ËjixЭ!
h,;MoW*;Z1ؔϷ"e<͹8
"-Bs⮊;D|nC5.<Qd*#fhbq7Zot{u:@W>xĈ*nsZqԛow>ՓO|[}*"*$E}Cb?G-=={9
-!eο_$ڗ<:;^a?MT16ÈPV,8cnBnwZQ<Whjׄ;L!5oh,߿U2\㟬Zw-u
9[Gm5dnBomk_)5fcHa~C.FU#
FGJ^ruuT\z[)|5z6~D;@l͖I3%^ l@؊OGCfU#^?/]

?PK
   1.\           -   de/cardcontact/opencard/terminal/smartcardio/ PK
   1.\\ͅ  c.  F   de/cardcontact/opencard/terminal/smartcardio/SmartCardIOTerminal.classZ	`Tչd;\  2 `bT` "arF&3qfֽVEmZ*((hVVvUkj?wf2{*9?_g}yȷQBN'%ZSrX(ZUϩuX$u`Ay㥡h(^՜JDbCX_/,lTx,
bd%Hv)īu"5ʣn;+i֬U׬nl#-mhAɉ
N5!*(@ˊMc1l;ѨY&f~	(A$ʈ^lLBۆZ[T
7vbtLD,'Ktf'ܕpˢ֠ZۨP}7y1C`wv/^nǋYy
gZcc.6;u"Ѫ5	$8,zk[.u©ړg*Nlw}'׳Ϭbw]aҵu-Nbe(͋ZZ`ΙsyHP9xs9ǋӜy-3;h*lXR{=ϭRUsc+q`Pi$S]ܺI*h|ku&5DNhK~Z>M:ngc0'V:b`X$I8I'r1d~ubI]b"l&>Z#IF_	e*[`t[3t"آ@.Ekvg9Zm8hOQa.x{@'ګѶyV59B2a`,TH,pBN1-tڸdRr"AA}_Jlta;>kr5Nn~
5,a7>hC6>cԑ,^V( }t%pkp-	vP*Z|؁4SCK]l܈=T{{(嬦7*NfcmN}4qӄ7} {<m]P`
~*}pjOx0xGG(֪§<G^Sc~)w|l܍g
I.B[$5|ƽp	%"_э/FBH~k@AKPm|_X>j#Œbxq@hN.t1%ܬQk8D<Q Շ#6~yV
a.HFSR>d~ILM&:ڴI&CL>Dknb|K]mS kU<N
xV?6
)Uަ:ÇKgp<
oZG~8- &?N'~jgyNjW2t0FCpղr|0TFnxy2RfT"M\SKuoWtk6d,d0L;7~e0Gj[4GU&?
(9(RbM[6Nx8ç'.N"i*a㟚goʯ6mlI=kVM<) ^U+El)VM&ӌP2#P45̖Ó-[F ĳ<Z;U'Ԓ1qCW/me>L$
TL6(uSh皆UڦjќMl%*d[$V*ĻRJ=ՖiJ#:Nvϰ\粤H-3E*lَ·ERiR/n_GPnkU8˖yJQS]O?V2_޿5lgvIK"	FW؋W0wӚS6yHr۫mXle]kBa>۰F#zE\2&vrXRwJ:	qY\,e`mv.
E'tfbw-[FUlY%lG;<[VeŚ_}֒f[ɅGhUɳ0jڗ%יBaKJ&s٠e&lޤ0I~:udb~@>@žĖv5r|FV[Jֻ4]ZRvzAI[L=-׮G̲'5zLZ"ޙsa&p$]\F4
Btgr8SV-fo?tٿ6O=H7Fbuшp(>'5Bh5L<Iϡl`uX3ymk
u7e;~,=rò#YN"ȴ'Nlˮ3GU10o2Oi/
zU}X'Kgᴸlvuu7A^GҬ4;B4;nz47:'
.UL:[R:6OQ;yeZfvyN֥kSyk'K>WqBstAc=<U0D8J8zwN'h6ݠ.J6g*?&ţ>K'nXM4e*aq
zכqAi]ZPH%D%8@rA3Gd֯HϴƋ%G?̢5HA	齮hJ"}uҍ`<f`xt_s+vE@HسjL4ux*FIm&Gʷ}<cɳ6nW}ĶǷ9z޻dkrZeF$}yRo:V[N}OfQF#)+ϳʽs5A^/0ZN̶AϺқef4`K[R]}R~cSqht%!`kLI3>6GgBC+^ym^d>Ѭ\n^PwSoQG߼ic3<Tni߽L5һym	9IK
-SH.1&D|JL:ylxl{&w1^h#$_1s!aX3z0b,O7<2ye$_R|f>C/YNLQfct<w.;]Xй.WU#9>y԰BIW >qB͇_^փ3ĸJ0?_n
9}5,#87CpK0oJ.CگA.Rl{ØV;CVtNlU0v㪓5r\AerLJlO;@^FJ0U^SY߃懱ϵcۺ<0(cvmِ^WPNtc!ըK\)])*	5
bS8u]"|\Oc݀2r$:=G"/WX3*W,_OYTW9È
tAHɣرrŴzWGH30? C:ϗn,΍??he݉؇Eˈt<ZX3)6~(N>Ib
M*U<#^*Ŝ݊f7Q	8MMorn"$Q[3?Q9C ?8}/
=FSx++̃OaFAM+(.<Ǐ⩍+'³?1
^8jÌu6hz<J_PCЛRa:I(\=zq$V[\4?K0>{	1Z![cDM5VV=YCr&1~r)v1Oɝ1lдhd<z9O@/+$/҇u!usz=xyQ7Ʈfw(k6qQ˝g_c|:
K쯳Ņ.Vj1"2ktM""
1K1/ou|&
iKdsfee=7ĻsegDW.6_{ߜqogF?RS`VSЍBněiKh
Sˢ2ks1ϿQwbw3!r)J)D#vx)>cTS
UY\&=rL[-wc!-z1
Ze>iLEpnEph52`AcÄaLUmkG6OV%u7!դb1oPhMN;6ek)pR2e,%E2Ke"7M*4Jy6ۍ&đ</ʗzS^uۑl2ϑSG׌1P{@Wp+zZha4nlKΨnvɺ1/3u.lXǌ\f߿!\)0,C[
{杢"l]\KA2EfnIP\3Rˤ
r>Zd14)?rJn%H	r,1V\ݞ0\'_VGT~8+&廩d`rK+疋9'[s4tzctvB=&FuC߹n,3K[^`F&%v̬S]YT1̍j

qASFw34nfnַEEjѼ]7]l6-͘#[WX,mtQ;]Ԋ8^q3ߛ,1l8 6;d8w\ø+=,SNrg _/B[%T	zuX3N~;ӽ[NWki>O1屣QvH<nGI'#V|QV<=x<=RNo8Mt-RQ#̀#Un47$z!g߉QrGxMnEǙFu!Z8>{z%l,:VnEl϶-{H!;6V>F{/2"z܅X2/3H3eM|,<&iaxHK~fpHP-s]%{5,F:tt_89_WLc,4=6߅+`Yz'n
THc>˚]/x\rHzb4%aF
J>#-եQQr(zKo5KOjJ**DrKJJ>dDuQHZ>N55I{5e%3'SX3 	b9/Gpex3qǰ^g2}Ɠ%ߢC4]>y<(/⸼e$->~+?#M^eHOy(Ǜ2M^3
Y o0Hf<ŋ,L
1S)ȼxHAVDwM1 Q~%Je`
SVHReQ͑,˂i|](e,i`3aĴw`o?3_`h: :iutYXz?Lߧ4SFP	T??XLMw
50[vr:pFBB6|l$q)3yb?0Sy<0_7;_PK
   1.\Ǽt	  I  E   de/cardcontact/opencard/terminal/smartcardio/SmartCardIOFactory.classX	{=O4<`],6	&`K `Y2҈ !)d)I&mB
%u&ݒ.ICM4bYi?ys}{}/XaC
vk{5_Puws29E[rB<k:t_@t!Sp>S!-hSa_|s]J#fb=;Hcfˈrђu.LK$wÃ)
(a7#%CV%PP^UxT1	̓"'eK7Z,HxǜS%W]5\u4*b1A")IL#s*E(VPe&ZmhaP;U,1R٥E}2mr]*>,d
OMNK*ns
*IfT
LjlzLZՒ!5۲dѸGFxؠnQ'P+CΥϊFd!PT,Q3v_@5pH^EY.Ñ._4yn,Wf4ϽZ07v
,*,{XS{n&LMIY>EM-dF3%;r(Ц] TZܯb4f>f-Jj
 3+i
 
GQR2ą.`ޫ8~"2x~ zHèq@Y'
Bi-ʬ TUaJ*aHU 1LD:yUZn0'xPATUڠޣ3/8$PB
aST</q72R+*'B<-F6054׸4HfJv\JkZ4J$PET""T&y:iq|GwU|ʋfSDL|\3</P2(8ɢ6kM|%-hC'.aZ?[*TNUب)zcjn g+6kbL݂qt?L:""FY*.s&ScI
ԅ:-iB-{"3mxVP0K2|Z9lmB3^뵔(<z[RfZR^&4;db;hHvz-{qU1Qj2lD6!1D6]!͌Eh
f DlG`w2LeX$o0d dki[ԣpG4߉n/cR*+ݨ:zwzoL(s1x-lf]C&y{]!u#&˸Pq]`\&w?Lr-C&tS|[qp(9ߒkpOj\/GQRj&E^?*(48PvqJ}IC' g+^ f`^븀;*^`YRz	+yT{xX7%B}7A4]Dp[mt=/`g?NDkG՘߭AAll<Yr'#5@t>ħC|:s=?/,܃_W\c!qfks/qx$POgqB(p^
 
qĕ&(\\3)˪l!#"~ͩMsh^IhSJ4]}# *2|>x*%	JJ_nkkPt="2{30Ì#y2OPq"|gbQ)T\gY܋c_hLDa)#R
^zuȃm2oMF4<WPkc>ChXap
3D~6yjI2%*Cğ͇%_Ŋ-%ȏ$N1aNҼSL4]	D	WAq&K`EӞsMu`m<qLZ1A<aQ\R۲پQItj[ ٜ֡W1L~y5N-$ 34,8`0ɤB<xm%!q~B7^cʒjVpYo0X
z(ً7	gR$)9+E
39*J??(HO3L1QA0[S%R,:RQP$zUXPfUU)ye>>=u%"&Lw9Y>q M'B1')+TV5/DIۭ(H?B`!fM2.JmXgمֶLK{y5Z(hfղl[7]zdPK
   1.\#    @   de/cardcontact/opencard/terminal/smartcardio/PCSCIOControl.classWx\uז,Yײled[HePڽWv,6@9	$UB%d
$iCR
8.	ͳIJH>h{֫.jy9g99g=s
&

Jm>hL-xܦUS;PT5̃5l4T8zlJ$7F*ѦtLOI4uT"@5#1wK(wb	s͒PCdj#TL7H|T
i(H=:/ZaSmGͱNk-P)e>׵g_C4,ّxZJMG"E}ՒĠ*Gh$D#!հN
#G-Z
uRv
KVFRmz-{ң]1)6Jf,z9܍{͒;4}4ybtZM˦Y|fs
RP԰wd$mQk;5RKnt)p8պeM	6W*XP"ex(6R>K-ы>Wi؋}sxM+(
k}O7CFcW3Ն\


m~IiR!
)Xn^1Jzfo^B<h1;eOkkf.5NC7Ss:h=zKň*o?b;R)O]r\2Ca%?
qHg"1	jKWА&b1=ѷq7r@PNK`р
fw՛1I+LfAE.6j
5|P0Ld㨊i0nUPy
̔O"fĖ<5]P.v|Tğ(XU(khi?2L;dv'⣝D,5=U{Oj1i̻3?'h4y
vu`N;koj6(
כ5w	rJ^<з#(e
*k
nHc~}8JNiw"GTD0~t߫N3S_$t4C4K/eW9ԣ'm3Q?[5RyyTά`ŕm^vdd(ߑL46%IQfZzAVUqlMvBSKXzsm/Y8TNN$/UF*2rVIYW#Z@fpa{vמ!
IǗw-Γɐ3=
;uSW $k8Z0sLӒœJ*^n1[FV8ي(L8
QUg|$2ɜD,ebk,iy;>22w[Kbkdvq\˽GEp4Fu),'xx
bL1(	i͋Ĺ}xVރ_b<2:#VVKX'f6ccp؋MR[tJi!?8d8LBtovQvڠ鿨^ݝHO]f
M?4sCFf,ѳ)Z	:=L&R^2SD:3g6V;!ș.(i#yOZ_y({O&Bcž=dV?4mZmQ,ZR;tC+ܡ+ڡZF^ЍmqfnqmwhТ˹g!vu'ԕ\<
ί+m%u%QVN7l.sOcEgdkM]I4j,y}k%w_"U~v騫F痬m}반ߗvXi8Lu@aon*r>яbӜeg|	8+lE0>X-0ν2߁/;L&B,Yc}gq`38랗ڻ,[3(w4g(*>~:ia?~fihƟaz}^ޤப/&mc~o]%=~K[Y+x3+x ;k~.`;X*bzQ z,?VY.6X֟Ǫ
ki%XZY R~eXUS kD~X JXrv jXkrzW k5&kXWsfcbXjtNZ&Q bXr+Z k.J+] z&?֦\Xgcb}X`=kk.ĺ ֗cmźX,`ʏՑb/tW (,hA)]'0[R<b!jXQVĂ w|  {7ȿ_م]yOlIsAWSP$=$%^AG,eTא֐II瑮'H7'm%]@Y'1Giuۦo46`~SfjtHLaqYL83<|nj,3>NogywNobB9Ey+?]q#|Z1V~+?/3L+?77^S~ex/Ӭ_=͘e5םix;ssWy<Uq𩈩xU/}b,si2KSrǗǗ_p|Ǘ5/_Jn -!tRey|?	[xD,b)NJ|U,
XU8#qVěb5~-*By+Yeϧ2>$'f}λ>?|U~LGҏls=PeYg
jGpx=
cWCgcCjWjזqT{K|-rnYSԹG=ީsO\ه2	ǰW%ZQ&Ba؂rTX- :$vY.:%va
,0-.KyGNEKْG`?ua!ea_gk֑FU薡_sa%P~Ŋ6j߆p3|د[ iR
̇qGQ;vOM
O=$.%CP]ͤfBa0r1֋$abJ,M|8,Jr_lU̇Pz^Xgj}εmX+ U7١cv:z<>혣xhǕyhpƱ)C-a-lt5/.SJ1k;%f.vsם=pW6njUkAT<	7뷽2/JlEg(ć\܊Jq;Vb'.w?cߍ^}8"ǭ)>Cx@xL|O)|E|//1˷I>5iL#eSEsbQ"&oV>_.F-)*/+.|͊"3~+\F3hey7?']/wkrLKmPK
   1.\ؖ6    ?   de/cardcontact/opencard/terminal/ReaderConfigurationModel.classU[wUN.6zP(-MpWH@
Rlh^!H&ufRkKd-
k|s-}Ǡ~gf{ }9̞}>珿;:":zhlaRʜ+3cZ;+NL,}b:\Tΰ97UސN.QLݑF^ڙ,Tl5b9/"@W`B=|ֵM1A	l͚#;1U\a8Y̝:FK@3VٖyM(hثc7+EBK4gE'VppP!qD Y#"u62m#OW+ŌyZ>m#Ԩ(]*%!ݏq$4LDLv"k놳H׊$-aUO8[صN	}b83:+llF?]
t\DZ`GSqz4-IcVYgZ踪=,7esẎqC+#_-57XjE?c묘zKV'ně94s2x,2@_amvϳ$$92-T)IVjp9lئw$}I0̶]#N'iGB	nME0aCHKD`9'۩wlE7co*^s*J y#2,hPc#M}&ʺ
q4с^U?:zVE^as@~V.Ӌ'^E(-2cSKhLn o:*NĒX\scFz2rUԛW9->9;	8sR.G'C<Tr:yepڌ}z=Z=t̓~èxP=`_CUXHpW
S:|M8sP9J>'ܾwOqrF?Vũ8.I~ɥ*N_(Tc87%"U̬|ϟʈ8&Y)F:8',S8Ӹė2O
YF5['Bd˗Lz
@۹Tn@%5j5kanc[k=ӡ־GQ
nZu_mKG*Kꕱx*:k.+x/7kZmtx%z_<~KUddI)-5S#ٚV*jtGuc5q8vbw_kㄓcGB`at^bLI
7{#ܿR;{>PK
   1.\           0   de/cardcontact/opencard/terminal/remoteterminal/ PK
   1.\:t&  <  F   de/cardcontact/opencard/terminal/remoteterminal/RemoteTerminal$1.class[OA۶uRP.^ ]F!

 -vvB;dv[_g51>xf9;;ssy$42F
;2HPǅ@F"{'m%#ɥx#OEȰU*7.GEYM\ɰ/H8XOc0:ｈΑ
뜚GiOzvI;N˰yYKV41C*W,3,:#nΐkݪRRLaUNU{n=׻n3$ڽC#KXWڣ
Ɇp|;<cDR~G<|G5OuYիr5)t
.Vrʣ%hSY*"4+DF%:膱>GE,]&$~;~'b*V3\ 0Y\b}<3I!጖gTbo
h6H^<`k*Q lz	<<OO!PK
   1.\EUS`  *  D   de/cardcontact/opencard/terminal/remoteterminal/RemoteTerminal.classY|Td&3\	
A!i%*`x%
2I&3
VomkT؇b"Uw>mwvuu|dBWνs?n^/8_
D0O;vO |P@ A	3v*bxs9_(([H%ֵ6$ކ'H6Ȃ0!&aࢸݠjc9
3
dǑ{X=Y;לN#mLSɤOߞaLќoiYgN:eE}ͫ6/Zv}gYZ£i5M-38$'b٬rv|u2MvQ~Z յ.PE4$7Sؤ,k$@3^'xm'sQIlCdBٜM;X:&2Qh|\@^;Kކ\]
mfQBXԹ<ᨇsN4g|NE8Va`hmT%pkFVaFdɅp	ja=.Тus/ӈڐ`pҺ0^&fռ~Us\P+{x U:qƲv\gnTt~9*Wc'AqI䢙qz[ ݂SbvISApWa8?5B=(). i)1D3;6oڸCxܩM@)ӣA86u"-59
7<IaGpisz NⰲRIYRÐehwrHrاL#)=AOpфÁpO:n_d4dH(>Zד2dZyuƉU7hܨ):Fp`pk6d2/Mm]굝
v.%qNS9YhR	rfق*@OlNFc
S"E\5x>:M/-PwJϐ%mW!p_lx+F)-581I\Uyd9I|*O[xT JQ'*^Sl XrCՉS}F{s[x_)V 	.>M
ժD9sA<!MdXpxJ5=1vR"f^vO6q|sFy,gU6!b(g-<MUPGƎqfKoaBx_x%+Wukw`j}_
֍'&kMWkė-|_e,^U]_EY3,IӺMi9%;w )LM=䀽'??2cu>-c$}P?r
lOᎰ^&v7P#v,}Q$sNꊢiA3- fNծ)+9k;v
֝nkIllٯYOaKuZ/m{ҝr7hez77i-`靐jvM8
Lmܮ-VVW[l_8,ުxq%uHLĒ@:w#į%Ad:WknwzedM2NRS(o>;6@fDK&)Lɍ^** S,wVʔNG.6`v@tCuR-gxvKf
O4Ȍ+oӗ2ǒ%v [2;(K\p*FPx|=۴Xv<eR=&'g
{n@NM$49G"ͅVw,Y*
ʹ9U	M^>ZTyDjxfp)[r֗!7L^k]'T[Bl֖.Ћuw+Wk:fNՖ4+ێi'u<aםd%YgIZw>_\\>kb:,xZhKԗ::6)㍵sSG7u>;5T<*vS|؈E[ل>{>O<Ss՛-'Z"A
I	~rê>x۳m㟼$/ aξlzk_9;ԖJ
Kr\k6Cgiei\:$۰IY5(oVskMP⺶Ҧcu)v9x͜ej54d>YCR9kwBN(śޟ+UHRPO6LjkOE*chceq9ݙcgg4j銍$ПBQ81SPIO.g_ClnIhFMIu1t#le,|u:f6N_:T&C1' j)8֚HI=B=x]hqT0ba=㟧<d#ج^wv	q!$ԝ}vxK),	K8g3o9+j/ASqMc(a	"knb=h,,˅(гo+c)kJx*)) MmN\X'`~t f>o,zE[Pj㍎iL߰;ݬ󹣞ߋx)D:"||l,!#Eed*ŴHQLU6s"b}~\.|aE	"A4?i_k# }!:k1-:,z,ťX6bùVrMdw>(Wc'GtW713]s
ϢEhR}|ƚ͕bǹ=^Qc!lCC{]8U'WZfϢ8t3tɫH:At=Yɾ5_:E (0CvUTi<$o#q^@*6%*ҩ}
Aû:uKĨ3X<3/sC9rɌZL$r nQ|fR&MV^v
Г܁e0#p_;Q ܇=UN>ߍCF'ռ+KvJXr Aw,UCc iRIk!1s(|c|*4(,p*_
䇀!|CVrLuxUh5l-`z8
<ʀY1_r<u0rŧ{y5Tp&m0\_awnÝ.`8cXJʎS;BCqGSBx㝅`d &pO	8ps[!\R8=~\XyuџI^.8K=S<燏Qx~!|*Yk5׉7k$v"m|i|q]F36`p;p'W_"}LhHtL~8BD[H$<NOJ~g-3,"&e)>E>ݤW\W룃xa/)2|+}EDr_SOp8A^_Tr/""#W\!aOҒ.%raշY 9og'
f
޿IX%,k$sZ5sxpyOP_Awb E'O(X9%輏K;+4NlyJBRQT*T,pOAVO*yFĿ*NRISP)S1M)9cd6Y{eGsGw1t=ᗃMdA˚^6Me 
Vjt/Z9SJ_`qdZ}UT{|<]
d&lTK2W<Z|P؈-1tWwÅz>ޕ)HWmchbFzylk]J~BC~[4A	v67(d~P&`W;|Cr2<XVρٓ[DsW>`7Ee 4K˧Hmcy'UTxNV<'Y$I`Ffr#!~SdrNWuyuhHުo\.yY]_gWq4hm.=E>#:X{k(V%^W,M[wc!` 9MckeЯG<_~{&9 Gd'r}B{1qo		or8r3NRZvmuK=r	F66x4-
|0F]'o²;=lFR^FL(ı 77
w!a͍f8jJQR;<
|yawFC%
P}h"B+:~̩1iypIMϛ<Oc|0jN]X D>rȽ$.CU bB_٦8Sa&
x$rq~Zl*8,k<v뙠KiQ?kH.bfGI_(抂*#*sA̽ZsLqFfԗʪѺA++
t]]E
ϳszV>Bڕ;ڏvWrQ闏r}z\?a23g8"a]A|RPK
   1.\}{  $  7   de/cardcontact/opencard/terminal/TerminalSelector.classV[se~&HKZZm@
-Bj6Yۅ4)[ p
8gp+׎lz.Ev=oE1
j~jowdA/N%&o9G p,N"(]iBZC8mؾlֱ─ߞ-̬LǮl\B-4ԇрF2[\9'Y5rtk,7-Y!1mmćdFvR[(N9Ӯa+Íܴn
A
jxIEsBnOg
'f(FE"Ŗ]/k1
Y*5|17m{F>zp-Wұus;FI~7ʯF
l[#QRa+c_4eh"rzpTñ0^E@rjr%X (kp丒/YsUA ~p2'Yt:;:7D6i?;i
	Ŷ
뎙3<%gm	`)O5hLָ>YJ}eʹ:&s~8<-k~#7K[#l'qƴla
B(M6\m*>RWWį*7[
Z4<?[ݱF	I֜*ΜS͈lqB{#S~eڕ-<N33μ{\^u{ 
T^̛yV[cx(-9ZX'j9̖欜j'; |E؏|s ]'DoP5}4ɁZ@S㳑HiSǐ@/^w\\d0Q@,ЧV.)g<(aSw&ا7yTUEUe/*:bC| +vytTǣ(m!
Y!Z$8ޤ#~@'L7ҵدb]5]B1k{/UI󷄤4wcR~	]}'0RK9-TjVHzoq滼rɋN(KLߍo+h.sׇ+=aЋq-oЖ\mwE}Rs|(+u«5~Vn0Xem|VV1Jayj¤0tLz%5ȷu4!Tr]e.[*
?|!P$hb# #To pc
Tb
PrWU~w=ݳB e%z?=6[a(XfDgkf~
3'ATb'1*GR^K(7b7R(;so82R	ƻ0B܄1FSԱ+$	L	ӌq"[BU\ȿ(IPK
   1.\           )   de/cardcontact/opencard/terminal/jcopsim/ PK
   1.\]i  	  I   de/cardcontact/opencard/terminal/jcopsim/JCOPSimCardTerminalFactory.classV][E~|lIQ)K5@ *
V%M Rd3
;W{>?gďdwfμ9sfx 5hO? |',nMa(i&/6BՒ64
"ap`H[qC%dY8S2mn%6
YvRvz~a,iq!ol1#e(oQVCp	,9ήnQputKpWW2wxI;F:<%v15aAɅчW5G^I>)p֩!0\Z$#*Qj,t[*}˖;6a(Kx*c+QCh0̈́ъ˞WrM,L&3F#F#Caj.*gʌ
X`>
Q'aA!\*'\COld]tލ=L2HKrVMAoⶢ]i&)
Xԋ=kbRg-zp;7OՆIad)pW"ϕÄ֛2FfE<0DT]<|Ǥ׶<Ck,CZ%!+4.[9^Knj;w|xÒ$+!fMzdLxRCR]^	!n{wX{^113m%k(KnX%ᬔ[هԣ7it'!ܲL%R!S5B7d*T`^%?*{뇲NtFm-%sq٦k{TSBߧUz2zFKnпwzבHS7!Y K-ZG]\3a2?suE{ܟ+?'ߨNhOŃɹA	Z7\:?0Tƞu-KF<1~EߍCq[
uW_*}2 X@Ksحb~sBy@8Bc~êa~IH^{F#|Bcw3CF-ȐwȲhc5za]ø9`f&7VU:aǓ;G>Gx$#L^0|'PK
   1.\#_  /)  B   de/cardcontact/opencard/terminal/jcopsim/JCOPSimCardTerminal.classY|TՙwwGLBB54/ 4Lh̅Lf̄Wբ-mnn+/mݾ>[m9d>r=}qΝ<
j. <
&D_$Kꌕ%"NB]K2זT#՝T,Rfʻ)&  Xؾd"Ti/9
TonhP:ٷlY	+SݩjiLG`,C\-kq 3pKP=+2 g%vRV918?k0Sijʌ6;9+pŢ-1wsqE  &ae,m˂ /XkT2&KdԪFSV:
&si6Ə2,S \>Wm-W
fFwxֺ m
My6\kyH4OfԷ btOÕwNPy	Hm:g
fbɄu5@&.+eCd&X~GL 8e>&lR֩fu7Mf+}&ЦH+9H5[/.#N	*+As$hGRFAIks.JzO 7c`}E~܄^%{Rp%JNj3Y
_XOޭpUܒLNw]E/(lJ% {D<$}6R[sTrdg29clF&sHc_ qid_$;dE[nKpY:3
x0kр}̍L?GL$mDpJw0XV",勺-]L9ekoL	K[q?XɔH*9=ٻ}ZyfeN+}_tbRKŲ'jû}sGÖJɾd<r` Qu(O~Gm&zq<CxRalmV* Cc0A<u(ى9Tj'Ӝ[h <U̚ȇw=zbZ >Q`,Ab`!@YfN|2ƀ4ԓea1mrCmiZjK|\O;/V93U{TeGUz_ԏO|v0M[֠IGa]Ԭ䥆Ys~1\6U:ksZIBsh|_c'CIr` *1hK/OyKm%u,^f}o(WoDѡA{v)3+a?Xj;|WoW|(ݯ ~mcf\/~տiMЄ\8OX!BdftNY}Vl-gE=|=KD2}Ѐ
Pࠕ?hJ_+JU"J!&~k_<5Cj$'[ݙ~~Ϝ499k`nY¢bC*9Y]+9ͮDd
m' ^1Yd
))jeuqo?m6M궶{;
76oe35["!8B+v45toݰy[ý;z:]*E}PXS<_Mv[;Ռo֦κMnhmnkmnЮ>m0X5MUknT453t6
=hoi8мqkG]usLmMyy
*~kn"lDS0ZӻEF{`KG{CQ("h_^'~V{^lxXjiv 램+)ڙtgc̎[/K"ѝhhd0?0E-w2>=LefMx&{3.~Tw\3zj'52qj,mp+oOR]{o&*[&hMjC;2Ud"3FɆ}ꪗ㥌0p~R?S2ťҪV+SQ@:R\Tca~mAVN+[z[˚'UmDN~r@~OX>s:E%KEtڤSroQfeid&EҮj \]+[w~	w&R}ֆB	hrMY?Zd4=+	$eД[YBՉ,ؗk9f_^rYh3Dŭ4;4x2fc<	Y4DN<>!&tz_ﴜJC4v:	OѮVFhv.@(Jh-}C
tz5+/cϓr;SeO=
Ҩys\׳LڵѾкʤ'ovc$FT 
RkJʨ>aRU=fvJVڔ1.	K30RƔlUv1[FQP6cn--4V`4}*iyt҅yt<z h<<zy<WIR腤qyKh<Z[GȣeU3i-q~Ow69{	W﫰il=REIwpŲʪ
9hƑ㘪ET
qSRXTq
e%*xӾXY9OPg
OP-3pup?]ݨăD˓Ǳ	'ІO'EyUrϡF92h
G.=#]C[yZRY\OZ
IӨxFPcOS(y\HkPg3(4r:ZQP8FzGQ;ǩig)eJf<i.HauX[/uWOHs
m,6W'wx!QM'QaIWſ#hvH[[#*xM̶EM
cU+޽0Bf`rβA~insPBWεs5)}
uW_cID;
Ts]JRӾn+vk6L+`f?+\p7
t%
WaՕ)番%n+Pw[0*ζAa=޶1ԇ.t#zGȀ>LFsBD/1D*ᏸK<:JmqV1Ņ&)xKLG>6TS)ڿ2S䏙Tp)ȇ2Wjd4HHZ9!HRUXY0S]LHwa*u,zi nczIlX/ݔ^ 8Sȍ:~b`{N9gOY%y{+K2ZB̨pbGa9
|`H$E>1潊ztp:8&Ek=E,TX a4xujgΛ.qAvbs7A9?ңx$& s[E
*yk6tWНjOu(I;*
Nx:LBPކ;rPPi:	sʅt]S'hNHي܈f!ݸS!To!T{QOrjڸ5(DN,nW\"~\:5x(̑gn+P^`DVM)ov哑Oٮ)F\.Sp)|raLoU,>_S1h5j)s(b4׳v٦[ϦOh\0OXQN|/4Q+1p܎zBAnCO)DEM4H9CK,ݷO?[@ D@ܣspbw'ܹZՔƚ7%Lk+RFy&Q!MMBĭ 677
^ry?/by/JG0nfyACHˣ[n,Մ*f*/l*h}*gHTG5HEmcukKφ<1/%^;Co9٪t
SuzN}S*K<9|x/AwCQz9C~g9Lbt;\a6G+nt	j>Um7nERWO_OP$ƫN/K9ԧT,'Ob/?@gQ)
yMq<OE%^Uku_g;ˤ2o}w _}|C~}Aōzxe3*	,R糲#C":˝:Lsq<nuG3_CxagLٮ5tWe{k<Aʵ	ɽzNGyS:jUs⟎.o/(zAb#{Z2VVki_<d'kG{SB)3Z猀_`5%[a^^-2 a9h5|yב39_.`1Ҿ:=,'eyyc#L&Ly-M^s)z(D{9뾸5fwk|AXhKA-DTn37=OQe߶6A.Sl:0,<cKPݸ7wiGnGCwj,09p9gD	<Ntcg4#9L(:c66ݸ;!3⠱8b,R<l2xڨgxѨ72X%32X#ˌeq5jeNn2-ug\/F7nckl&,1ZIU[FG`	`dE
Q'X+vݜ37Y)*@KP0Q -]ޢ?nQEcp6uz]s`1:?mDaM;pc.sy h-{'kbSb|}{.^O{tW|_û WsH?A|~ަo;~ҽ(3PK
   2.\               de/cardcontact/opencard/service/ PK
   1.\           &   de/cardcontact/opencard/service/eac20/ PK
   1.\U  4  1   de/cardcontact/opencard/service/eac20/EAC20.classZ	`TΛ!!2D%`HgP53HP R!y$83QQVںV[[Zk[$`(Pk7mkmYj7e	?!w߽s9;<# x\hp GPew]h2ԙ,Q\0;Ýfꬪ(4*uxL>}Xd]U'^)8u{hg;2'5p
N=pwK4ivq'\sꃾZo2hOES}E}s]u]=U͵Uꚺʠ'P[00'	rVق)"hwy{2v7,ݠ#_pJVa3sa&
wnpb966U{k*uE7z5ަ`0
*jkUf4jjz'To}fTzkAofe]0X<:܂l2E"di0JS2O(C)Z2]$uUGeU[\Une:QD*5@_	6{u5ʦJ^**9\jkkު`Eޫt&G.,JSr5VMMվZ	z+*zoM].>ӸPRi`SSz
.,G
9annv&b55:j
x̋Żm5[cݤdwrdKx#Dqię*8h@#ĺ8Gv
'.ᦉ0b}p"V-Qs01QN)__]`xq\V9Y
UZpcVj5І5{O7!NxRpByzP4W[{jEyw|H?ٳn`}2PPҿ5\mntb`fS+wM{M'6f㩞QڪСiߝH<7ό'i Krrb[55Q޼?IL؜6..
:ztc˴aMdcsQtQ3J*]
զᒔ
'cyA1Ndd'VV?2h}ۅ$v)[z)n]<6TS'Uz^f_jW*E-v'Mc/^{pk
\UzCP8:+X5q45/exK]P?1
\i2Ƣ.܀x?>@}Z>}sb+(0iϝ4,ʢ+,HՂ
n-JMpV6nD;c]4q|݊;܉
f[q3	_fv8+a/>>O&G
i1KX=خֈ٨4ޥ|J2OADs>}T0,jk}#v!7p+KO|mr:7>y4;Ą᝴0!
#㚕?*M݄ĩl`ԎcWU|c:i[67;s2v"[r69BNTFw
<'#3%UδB&Q SD`qq!.u:R8'yw8cd߼ʅg?U?A3/SK4uMbB~򄕗PZj_%z!b++g[zWl]O(AXmYTkGR?fL?_Lrbf_!S$ES9 ;#ciPZeUnNm8ήdJ&(PT#uY$oTAaLX̆e[Xǅ7ʩ2D̲WF͈GQNE8	GE7ĩ&7a&sTu7aI*yp&sW4We.̖0Og3wL9;/nZ|q`uLgN\Ls
'P,F3OpjhY h<a:٥'хei	d̶G-	5zezY2
ĪtCΐ3Q8qӨPΨndqR"tV@F6JbFe,rfMgPY<HՇ'qJ`8Jҥq_jM
HaVRRgPkT{^etkb=M{z Vp0*;)ȄTf[,>HRx!
=f3$]-ѝ$5y8},
Y)XH ^ZHq
-Qj]Z
i5RTVjEcuSO'̪pI9zCޥN}̛]X$
$mGM4XdImfC-&Qk2nTS ]$%sVC:U-=)GEhF$!ۤBjiAK.hf	0]UVG\"*S3OȈ-f2ʬ,UIU$
闝V8LUs>]Xj1tm?I4C.مr^rCP06uGfg{plWk
Nnyɱ]s
TJ&zۍ>]ޯbLJn38"FƔFE|HEUׇ
)˭́vΑ
Jn-?Ss85^
).|\O(1?VTsV>8Q-i8*,.ͪjS>Gcm
n٧ylʑ5KJ3MuaY|YW
_iΔP;1 g2蒇e@A!Aô6$O[}1	5rLKzoue5\_)95屬h(rDɣ#GpGRpAku9oK$bv\UzU;7`),,Ahk(
aϦ5atMVbucw"BzNw:^fM}."c+rxRNǧ	nBQ!|
a&=mhhe+?C;;_:N˦]w܇V
#X4>0ܩRFwNyӲu$<iߤOҦ:VPm-<rPWlbW-^k^K6~;G煸a|bDΌ13nGqAg,')\oKtw[LkHJL,d;4U^N>Zb1cNa^V4]L4ELJvɥ0/b%H399YrFe4Ӧi}ftB494cAyWcN|q#sLg~u1s)ڶC7DV7pHssL-0}2aU\BEY>9WtFj;M=TYFX}q4EаLli˰uoVwUXwV
V;Sк#1~iKz߂{5ߥ<z"d5\Aȷq0!̎!j:O:۬\f;J˖
aA?opXS9XvspFnYz{rQᶻusNJɏMՃ~<ބ|0QPgc@wb'>Wm ;{}>W~ OB8?$?dF*زVH~;) ryR:]~"?5ȳsr; meJx_E.+)j u%2%87,)꒲-h/x~lą{1s?L5QXYzQȫL|KJ|+q+5ԿUR&Y"̆vl:4qo9@nh_,Ď|AgM_ap_#
==NusxsFc[ն!,y!l._)8J:cӦ):V5Q:C[6ۗ]6S4.
#)
vBmWN[{ _bp2!|!W\|[[pD5Qw ڇG{A<ĝX%*Q
>
~?k0܆b`tn{nY"k(YC-)QR]<1?_8/^(q⥽ ^H7aю!JV䤛/JxOcz<J3zʷTA9(sJ1[NU=Crڀ,bbrր,&ɕl.2u܀wb܀'4~[V6ExRiz	+x=Ü5!6g|("xw8o]<S<Kj~h8S\R_I-~#+d3Ln [Gc|=\Ar7^b2k«olxS36okD244صšm]!N_\{%OE9Ɋd Ze,iG|s[C鷆
H]yNǢZ'^7Rd-83sL+/#f
XR%%y!P
LyVMG&q뼣׼>qmHGa]^'Pt<Y&͛Q1L>,֞}Ar(MMy+U`֔S秃TC.ÂԲQbV]٠4m8(g<qĠJj=,:x4/A"s̕Sp,P$\eqsbd	Y营GXʐe},zl)S6!!G!4(弉T:|kGԟЈfۭ;(f	.JurطtHCDRjK헮2(k0_1$=*w"bpPaQP%FVZpowB
ěen FSz1#l&cKTIcAV1Qi%rvK+uFpm-",p_vzI^uG}TRZ۳qf<r	ޣ9,_߀wj9l,Up
i#[^S8bǴ7 |\:)XɄ#sU5H
d[qa`uJ/s+t˔vs,U1(A:zukrA-6芐"DXip;9-BZ&>(778!tmislT6Ґ7,t]Cr[&ʝVW4]>Ր̰P<cl5eNW g=C\wB\eރj[0[ګ$zv̔gEP(((j4JJIMv
/Fbr%)_NLWU^Mr
nki1܈8,"cr|%=/$F<]ԉ,,w1eT'-d.TV9iM]=1/VZuf`/vi.Z_
mvi鷴<X<L-߲R!7ISD2@M;]i'+t#n½\9	.HwuD(kby.z)<283_X:[ 3uuE
CbtCuGP;BH!кt#m%E p@Ƥ{X܅	>Ѐn{*{DX;\58ltDA܎ԤXF;tYұ	Gm5X利>g3D(y p$GY%Zs>wtش3*`]0m?vK	#+aɏ˵B.tN#oaq*6ɝR+W^ Oq)KBYWNZKX%P8R 0OsU%Pe?d	GЭ<fy.h9IuHX^"*0F'XD3'm<h:h+̹0_r/t>[Vt),;<99v3-U߅1&cOz6pkEǲ9BZϲ	 </[q={U#9|U6떰gxNT4vmpVcsZNgaH],8GM,T(.N팑Z!eq#4:kK|:PK
   1.\           -   de/cardcontact/opencard/service/remoteclient/ PK
   1.\     K   de/cardcontact/opencard/service/remoteclient/HttpURLConnectionFactory.classuJAԺwb=XZ*
`LC,X< >Ab $$_ fe	e#9YjZQ>gSi&YT,4wO.o5]8nBi:p{<I}dvN٫h983߯~Z":_ﷻ['STεS.PK
   1.\reF  
  A   de/cardcontact/opencard/service/remoteclient/RemoteCardSpec.classURA=B&	(*. IP}
j|h&]a`2i(?7,ۓ!h/{9wu<L!6
qH0
n8ܭOW%Sk;mRА	,~\-ix5᪷öዪ'|ȓTC?Yd`ܥ[*żR(a>8qat|aHWm;F>40S8#t1Z3镤oLSB
8U&g\[ +~d% H/Idy,+W=;Kܷ;M.GǪv3rѠxBb
|]QrT"tfАEmUjǐ.QJksncUYpRj$9!WrНnS5{atv759jo7w>2>nhk\x[-_nOS0fIۖ%,h3S:0:ؔnaZ-Rt/Hj8M\羁bԑMls!I1C⾀Pq@x#M0b<r'
T(Jך
2ʶJ2k/\9ʢeo==TPx?
Ϸ kOZ#E%&m%K"QzH4)8J4--rzT$ߠ~3& '4\#+aW_}.UPa3űPK
   1.\q  1  A   de/cardcontact/opencard/service/remoteclient/RemoteClient$1.classSn@=Ipi
MVH"
5Ki"ԧxԸv+<Bq'J-{=3g2# `@@D#mG(?"ա5C]!@H
ϕ~do`3PZ|̘{#2lTQ]!30VO [u{Fb懖#)!돐5dm樠gM̢Z|Ͱ~ZfLǐT.0,1=aÕS&tTzE4tkW
"C	EFa<ڡjʑ-ח@}>)\'L~Ce|O!鶬IOזP9OlJ#h]MߗAa(Cgs|SXy+1WDwHGѷ';T=R1'>31@s<ΣX&{lI8}Ed^4w@
7	˴\
c;dK%p+(~z
_PK
   1.\6	    L   de/cardcontact/opencard/service/remoteclient/RemoteProtocolUnit$Action.classTmOP~.֭7Ǜ ("JEAM^[X\dRXҵ]2!
QsfDg<<眧o?}}}nVo^h١FG͍ۮýؖ`+C]	QȮme(tNԎHYK:tmVvJŚp]֑r,i0յnd(,
CV1cWgdˇ֑ew`TwTuPuwdM^y˰ZF;] 
:nbwH2p;h4q$H
1Y1(2٨HϲʺOSJo6{<ر\l˾mU+pDNOų\ĺ:S,|ބxVdtԮ=WCWzIfEG(Ή$g7
3 y<'OWhu7dwlRԘrI{ȊGk!@a֘-F>l`zy<q
3㧸qtt	bJ#d>~EZ5լE[GXfR%Ng9	"V$P%@nL3dN:jt.ቴOLˁ0zsX^PK
   1.\!
m  
  J   de/cardcontact/opencard/service/remoteclient/RemoteClientCardService.classVmSU~n%.%RP-Bm[ 3:vsd7T
ꌥ3:~Iބ%" 0Þ{>{o |2H i ei	-=
euUY\ύ@~!-e^d;;ȖIJ/7
M߱ʮy"
*LNޅ3A9CxdcPzj^ÅMHZg7X(.öRTN/xEn0Mi).p%15k4D/~ڹ\/GQ{sV9Y hBǣ9ʵoǶմsrMo*0qS8ފT0Q4``

G&'ۚFғAY
fLTKsT{`vdEnRX؟۶ToPdk'Zda?jR3XD6U2KRIwSg9g~Lͳ̰@|jux;uc7뼸K
g,Yޑmu桁@$Tmt7EWh.Nm_~e$NҀ0U0FziFCt=<8rѰf^%W
	~K%/*~ڦP_f>΢J[|
񋆽gZ+o> =JtD)g}}7fg*?RY9̏Ih\E~'Q8V4yR r ^RS;(8Zups:~bGኁ
~L4+B'R8S*ѧI&gzQpsXA_:6xS.vLqY3uYLs).(JOX¯{nNEVuř'=L)]
wPq*iT|mPK
   1.\BO  +  G   de/cardcontact/opencard/service/remoteclient/RemoteProtocolScript.classZxSUIsp@Z(RT(PB}@-
!=H$E@^:_uQ@M2:/uwWѹ;s4E}$9{^{{Sē K< CCmmIP0>]( nj]Pj@8R]Q#7A#/o2p<71VθZZcu8CZ=ؿXC`idg<^^cq0Lm@,Zc
tRmA]ja:\*ט]FF(PRy@h8AQQW7UneXWN,@蘄RAn3Bm^5Vc
1x."FȈ͑8J:QjYkK>u+ʫmPh3J:N7;
uʓT{p,ƫttCSz9ݨfM9Q1Sp(ϣ.Sr
7F$4L&X6R_J؃
;c?P_/(6
bH8Jѭa6p:&ҒLWe޾'UGr5P,p<1LBТ7x8*^2)-v@,q"X:d2+b15=r
Bk60RjV|n0XQi

m
=k%^ųuDɡ%}ԃ":Q7QKD]m!#kV
cSQNv)6W5Μa`tl5FA=Z%zM܈yp.~"Tbf\b}ʬʕjW?ԱNYW*2}y%smf0bW(dBQq5ΫވmF&Sx*D*S*v08nXtsS>4gq܍EǭR?$BufJ_0Iuv#:hbUĢ``!gpAPyr]wa7+QbbK(~]xNim%-*N2:VFZ<;6؈MV׃8_p,`UU*y5uk5tUMF,2<H`'7slVē9~/31bЗgt<J[Mɍ_̀{	=aw
<	JEsqM܂߫/.k_jNKA0;%yf߂,i
x2l$T1IAx]:[#rrLGJ&ڈXou*=`;𞎿}Xig ة5}W%|B66FÇ>1>%6HYiJnčZY{	N/5WIҍ0cZă_Ōs:yІܗ:ꠁ1@y5I;u+mR5i7ҰT~;/W%8C\ÿ+"L1Yut͈GV[eEez5A4	<5f.mi6
j|AI3A:*9C+8S㼆,jo[k5]T[3W;sY
\SjkԼ
ٵM9YkͩF=>MX<mgv.XPL3U=qs-d`Q|W2ɯHΎeF_Ξp߾
錯;5\C$_)c2B]}{guNNAAbd̾4<t~?nuq?_U$H׶s~{?Q f-Pw ڞ?UU+HrܮnbT7kK˚&S:QZȰAlO݁p@hZ
ǃy;Bޭ6CA]bT+H+ĲV2-2cRf-\JroɱS$Ik4D{iy׉1d5 &]3^I/Xŏ$*Ýр1+0yNUs"41!pGpkD=&*X|uf.
4쵭aO-%foNmAK݈1+;#}㬿5#,q7F[V3EwɪBk5XL.Z"v	sQ^KcXg=#LtBim5>,]lHk=2}ۇ`{TZ{4Ei1"~_{,eٞ֞K~<=i<lYBSQ`ṪmnHqhkPiZ8o4'{8'94	Lsɑ*Qr4EI-q,MPcR'51vup,5sD>A@d{d7'O`d`|wjP`ϟN34?L#ᖔAihj,2
̺"9ޞ\mQƜGf'eGNMc*s2!Øc#$ވM攊m)Fq1M+
]	L
&W	7Z̏ǫ\
Rw~=8ENFEӻ0ӭݨ°iutc*\=
Sٞz2bqp*\ZV5E, 9z%q5F:4 MX[(}5uCzAw6E?Q}yk,e:`ϓR󽞸>f>S-x)7oYxV:|	'd9hwx*\9~3Oܳ˺5]/a
;B#wb7ȩP0\i\	y8
Z$<<؍uV-/޻ >,lCC&$Lc>0A4$bmpN-C:XӍpa2{ͱ՝ɲa;m)Q9Tsɥqir#WHZ(k8ϪvsZr뛬B{O}Y7FO7aEnѶ
<B؈	F<~;͸[=DVxS>375.{wKywL5	-.rZ!ML|㓋negP[VJmfO,Y6vcf
Kv$

ƙE7݉ҝW]
q\\N#|d2Ah੖Vwb
ۺqSJd$g98(7ٔØ5gQHޮn~Uك5VRU|Q݊vPۄss,݄̩	<bujw?޽IjBA}RM>|3q(D37xI|D}\> F61	^[/KJ&&NK-"&\xK9E4y?jj uYy>':f蘈1BfمU|3lN"9$w/Y$yQs\`T$3N'	ے@OO ?FIŶ[-\K
)n^E80AhZCFX<Bj[e061w+3}rHse,jG~d=&RmnepgFd%OOŻܙ'kOfmW";Uܟe=H$7V7Îcf]уm9Wh9=Runm?#|jGٗկ g3+\V($cPΊ@
8%/op#V?4%9/K}YJ3)c3FW2lPZDj$WjMD[	&gbܝb-)x/o,Y%6/$i_L/Jz}9gVrNTPTS$ߧR9ELO*޹݌4{ZF.4%i3]{kx%E
,S(0Z/>+da1.K3HgK	VB#Wd9^6R
)+M,gqFij"TϢ/x> 5 MR)ByNP^M#$)BF(GP`-iؾS\r[@yϬ1Ѭ<#33RtLs,EYKQVȢ\],7ٜ?Rbrfsf/T8SL[{ϭŏM5+BgQEJI~oֹH2B2;H/&\nIdb$N*y8Z.tbu\GN.#\NT]r%6UkMr=Qq)I>7c_-Rnn)m;Lĭ "iI7n&"RaMh,fRGU פn$aOi)2҈$U`P H	i*[eGމCҘ
RϊnʕmWs#CKۅ NzAW=i5P(Fqżrkozcr\6`OK@v&'ȿ<l8jN'D39!7L`Ӄza#LMG<fy4&[<@3'VJ}pzvp
{vAc\ſ}`ykIRt 9F!Zr!1ZoPK
   1.\⮙    E   de/cardcontact/opencard/service/remoteclient/RemoteProtocolUnit.classWksU~N&M6\*@ iZQ5\چi)MZ"Md7nUD
:'?9g9orl&sNy{6}7 u .}(:Fs>=0rglvMpːP
î,fT31t[QuqZܜ2<jaLN~Ӱ$TB'5&+)b
jQҲ,!
`)/-K䬳)Q\Auv&@"4ÏBmVZڞC=([`ԩf@113;NO8,"daudI5c<js3j.*c-C"!P!CIA_@w;-nRYx=3
Hx@[)*nx3t>j63NivfW-<4.4rBsBȪk8 Gv*؅0"K>t1zQtbn0TrkJe+ }
#4/ vn2.-C? N1,w, ͛>АWy C=F;Vu,^YR
$lcƞ}At/
3$e0l2DAY>IM}nՑGFF
&Υ(.jA9g+ϫzVtg<CAe*
p@gqMQHBFN!5S8C;i>1gݕ_?4>yL)YGlшޙ%tHky6(/z5KH#5)ԤOpӬP%5+3,ل`XU)Nݖm]o3}Hfha_BaQE.ð	T-r{Z^;xׇߣIc;qC16LbNG*3-*^c|[
S^F|xa,\J9M(A"ͬQ^;b1%ffmAI:79ղD_x#_2(]4hCڹk|68OzOzg=
*zN=t/`iKٗh]7;N;q/r'Xlt0ϑL=%f4j"Q/#<X6/qMC
F|[H%FO섟.N֨5im侍'fRB'"ED/2A1PtX/Qy*(hMhĳDYN<?L&O`ԁ;ݤ%j""t66F 95%As [+XVcdV9<SGnZ	+/u	SL[(웯lU.ryʯU~2P~>fYeϗUȝT@\-psp.sp&$kqV	Ay~+A>]	AKYŬ9|6y-hY{Wg+}3.
wtBgCCˈ?C{Q(tw]"JM$KoHZɁԁt6|G{qU5ԽiD黉)"n&-ծhnFKɗ	޿Ù%EΝլ~5Mڋ)/z@f7Tӎ$-\Ϩ6PK
   1.\]l*  %*  ?   de/cardcontact/opencard/service/remoteclient/RemoteClient.classZ	|Tgd$@ iX@HHv$qJ[mUV֭Z֨Jjikm?}g=幵结J|w9
_ ZV
,m# X4F©H"#nc"1F#NcLN$unb^x])-.H9-vcxc$i6nr떶D<Dh"k͵=BjY&(۩snjj{Jh	6&bJ;4y*Nd48Fc7wT_8X"9vP܍:뮋8I.JA}IBCi7LƜAr8tUat<
fژقkspkc_Nb@Vb!-\db\2΄qS4ʗe r^?ZuX$>a{uS
]r~< xia3EK)Qex`rT(2Kƫqhĝ+h~KmN0A۪,l4c`"IZ!qoMfDc]+,kS
2jvimՍVbu@őX"(v\icZ<rݹ6&ԮцvAi$o쳭)X2 jS*&"XW$MP4"<xm%ؕ[-ظ9P`JDt
Sڎ^kc'ǜ,ֵ
$x8葐f\,8O%V@F/GQۭyip	
%1`rpF^44{lĠD4봒a4G.XS^o#BRQ]R̐WX^Fh6${z^n#Nj}ԉqY
6ވ(EY].)f;Nӌz7-Xx9[ZP?^4rGx+ɷ8$XkT|[.vVp?3 W@ޥ8nF6R
j
6$V#Nw#tK(+1pWKpq=8͕vysΜ9cdgQ*MO>I9iblaYh/ygiP7O!WHW^L5[:\Ye<FSLIhL3rjGŨMMex[8l##̦'0$َ[ݚ'pƣ8x;Nw8y-v]q8K$l)_ӂV_&\ݵ/F^:Q(,|Fէzu vjLuG6*牾mv?Yg°^
R|f6U!zz4t¼xO]P1}Gӣ|9h,O.m½"fulNp7.4OԷexk߰#~u$h_4b굦wvjlrjIkmߝuMml/Hm[:	6\-N?5\Mxꯂk[*=u5g,ABka$;LahΉhAKkjgKVjioI1O؛$(%R&`91	|mz"6F&2IT{muT
[lխmG8gw 4@lн?e$?/Ūr:қldI݆T֬<m-Twk<	H:)w~Pe-\ږS60
껼xX9R'lw˒D^5
hSFϏfI-
b ܮhӱ%XsP^btqJZj[.eELf'^wvCt»b|4۲\Czbbѩ\!XZ
:IB=zwYYZMk~X^gz^gPdi-B\*G%m9zbOAgn֒͂/C^gMWSc
[5c¹B6 !<z_rnlocw[:.R}5NX=HnWk_+؉]Dl"S7f͍E㾙~CqF0a	ǆ	/зByiƝ]N[i8SQ}݁(%~wG@oNiVD_9i^~R(9q*y
/*Se`qOɠ(n9zM0_TS85 6a*uw=l;!8$X}~'{ɫ\C\tN#Qzjދf=?^
]yk[0EzB#sj`z0_19D딟ziyO,x6Na=R
1o4L9Y\J4d^URA'b@g^YW?tZЬq{U,<OSQ/a]TQ
nN00]BɚDMpk,ӓR9$Xʇcވ&8Y,wW,ts7椙މ=Cɳׂq5~V=EK8";̨صu
u$B
vq{P_*1
8{SH#5(#j1CA9
=<|틺%Bh+5GZmq:f X\P,h3;:"㷪Zʱ)܊fWe
K=;)zĘ ,&O>{aO4ǻH,l><
 g|ʮ{Iݢ9yU?l̃h=|%&%'gf|*-bsngXur'P~&CŶG0xݢè?9
OcnCE(wØPp5 _`r1o;Ň8L|PM<+mA90zC2Fm2-LoQs'lN͝95wܙUS_|ܪ؂B#ܒb{3BӪIԔ-2xC~4eMEKƂ*CeVl[DEeqeڥų++OʟAd*x!SXO]VHQ;vB~R߈x|#qfmn[	o3|faPMrbQ]\K^ګ+d\W5G$elD,oał+-Dn$A4ln`al<ĦEǰy[èʠ+.]|ߘA_{=
;x}Ue17n,z#ɯ6lFq}ǫr]	~~cøwwUcn =O2>]Vl^ݜa9y#m؀.In
[h7Il8By=76R<8Y
^vjeu;|	`QqF4
ȓ*(r_bﶓ
݃g"n~hzq׏n:dhe:F*=Cnr mvwMPo9C(
Y,FMQhFm9טg(yl-g38ؘ.ʻz-y3-ywN{9sD]ArD6;h2Bt(!M*<"ѧǄ.,ZZ 
fLX9thrVw9[OcJU AN})pXQ`^4yOcVX/?/FK?QTYr'9FUՠ{UYL_
8B!7$7ދ9fǘ|~)Ux	kFS?8[g&_Gw<,>Hem:N~RxJ,|OJC)ïd"~/CpqhOa&馜OM䃦h$s|H>Lww]Q}$KQv!TxTh|dC[Ff:WXoVN΁&_F6ҿD)|8&~M9G$Ц޸hD,F{F&d>EfdT5Efed_집o8!\J2t,li3Z`E7F払5N|r^%`ch,/W4ަ^-bXea?(+GdIgb!+Z}VPAPj)u=R.%҈Wez{KrQᶑ{
|'ilْzW>.ȖeKH]Fڳf=XTG(M~v7<7K\$k}>,ɿy5Wzꖣq[GɎJG~L6l9*]ㆎ#</ӗ}U~=vz[}|Ϻװ$@.g)Ԍ٬eJ,+(BJ1*k[֑z&ߕK+oA|~tv67ESG&da7&w؍ӧt'QUZtyH.GLb{>GwqWmc%WY;`t}6
\u=">$cZE,YO|k\1ף>f˓\1A|UU<-_EPK
   1.\'e?  Z  [   de/cardcontact/opencard/service/remoteclient/RemoteUpdateServiceNotAvailableException.classN1(`j0$iAϥ`ҒRăCxL'ӷW ghTCm3QKa֒:p'4~baVK䛭myJٚјY#լךM0|e/O+#
K,M"bVdCmLl%HBp5
sPsO ts/g*#2\H_O1ʁs{U]9q{*  Ů˪5wJ-O6($;EB8JUg'ɛPK
   1.\xOM    F   de/cardcontact/opencard/service/remoteclient/RemoteUpdateService.classQ1N1\'H|%E(B'r
["G}m"Qu&֌ǣ; \04PwlE
k={&,9ֳ
ץa*z
K62n YmT
,-8X`γ}hzۆQ?(߼ ՑnR8PpѺZ} 8JA7^g
񔹞wNfD"6[ߜ
H[Im;%
$Օ 
ɹ/L!~` {N PK
   1.\	9      M   de/cardcontact/opencard/service/remoteclient/RemoteNotificationListener.classu
@g6^ia\B,| JLlR900`Aasbet8DQƮfUp(aMnى`ŞbKl!8Dƙ.ʵ1c#Qh&d'M)`eaL?ZF-~	Q-PK
   1.\:b.  w  I   de/cardcontact/opencard/service/remoteclient/RemoteProtocolScript$1.classSNQ]-R+r Q҆^	sș)/>1~qSL/0kegS,AB
_k_("qՁvc!]-U"E(qSU
7 q"	TĐ?a_sۭQ}VDE%`3 	$"k{$b_:?ΉsZOf{&y,b2F, !Cvviaajr7юQ^_6u6UMؘ4U
׽aڸf|l5
iPn2ޞ	C9JHoQ5KVN'TZJprأ1ZF``j z$BN[&ʷzs:2NVTL݌"k!c[x^`yy~@V0l<bn6Yd_>:2\u?"qC8E0?	Z)8`r%{KxL	X&ʗOQ@Q
o,h!4ja<}<VIꍞrPK
   1.\0  T  R   de/cardcontact/opencard/service/remoteclient/DefaultHttpURLConnectionFactory.classSMOA}.;8"E}䰄B4!J{K_Eĳ?X=u7	zu xb&N^D@mk&X=JQǽiY	:9aur28Kk惐f1oCLJr6HDԏjf^Ua
({E&T$$lI&)Bu˵5a<7VN[V)YIob|c%4y6kPmFg^0["t'Kmxׯ0;&v-z%qIC^y/Nq$ї?@#2`mv	f	"9>}O<xFיU.W*kO_g<]l3|K?PK
   1.\5#  ,  G   de/cardcontact/opencard/service/remoteclient/RemoteProtocolUnit$1.classmOPm6̉lU7Q&-,^u7XzIVc֙aL|Ms~''pov114+,.Aؒ"PlE"<B/c}OF(cɥxY'G"bXTwڧ$,r:`T>K~|qLW?rX<.ggVz
imAYy22tRjKsXZ]i	mUWefnU䢁K*u{V
]1$=*Ca"	3dRس6MZ`i{";"Ŷ䎿턞qpڦ5ŏ9oQESPw7v;"JW'-
Q&#rV;Qn{%}KװBY?Q5!E
v='Nt	3\ &xPO#a%\@j${#԰J6TOKс9d_C$PL߻Id+d)z1OSPK
   2.\  f  :   de/cardcontact/opencard/service/InstructionCodeTable.class
t{N_fQTBP+dw6ٝ]fwd!(4EJ5EKR *bEjѦԦRjST6x=={3cOs_7&"Շ8W6Ic4xUqneqՒtI-#mVyUy|&3 e϶cs[,;SFzS6ޑ
6ُQJv
IS盶@
M
48&ɳlAPF}Sqav6
cN#DLQE4C1\MƜNF}a.y  0II94P eK
vy	ؼ$S;`$f&F<V
LȅbvO9^[-lEn]GvZawntDHΈy
51`vL351YސɡF^Ia'ύ!˃mswNLl3cGሖ|>X潁j}nXi8=#X+*:ps0z5.izatמggjWITelD2yX% |F'y3
qY(wEhBW#1'j`Rl+ikpE2FapI<'*-PjKK
AL>/3+eSIסpp"s2R
i9($HDFd)ЩV>#W>j۴SQx!wͷvЊNkp23wu<ack1[6pȠN0wZyP,jX(	u{zL70}0n=kJEfұH)%Vhts6ԭ1{1H5l1ղ5mq^Jc44n:2DpN$:L_7w㩄tﻟH{	3BY,
v(SdcM(a;tF";9'e9;ÌƚWځOf
DN;QdZT1$!h:Iwvtf4csu;TKǔuN<KI's⹗ѨN%=wiD~xznMd~,-H@=QW_wNMea(+nRy32|Ytzek^`<f'֑ηlmLW*]
G1WD]?)]vכ
lQ)EX-o%~(Ǒ]ܗxAȢsKkJKjKjs}tͪtUfeImyuU4,^\F򪴽rt!"%ŕ5>3vi
F#b3+j5
ťi١MtvK֔W-CRo_0[!&[bYa_0YëW֔8ÿhC4_+a\g=߆Tdl;`o:IމјT{OdEr|S:\
t[N0v)gϮ;XF'[ 4 ";HcD_a?a XM4jKojWyK0aF"v |<>>_ c!{dc-q0 ~^ʻ
Lp>x42pX	b1o7H@<V+m `eN
VąIb811
{D}E=(.= .'.#&n`\-JMb*q5zq
lv	[#7	v&lR-aDvNs`lH)U)RYu[v#&+v6v$!nc`3'V]
<?Aǵ9ݘ~\puxn4Ÿθy#SNJg6ǀ rD_Zo_߭˔nS[RT߷www4lux.=.t󟗂
` *ap
=un |779ɷ`xɽ^NQxGƑqn砌y/yĤ&tݍ`?p3
 q6Blp0ۭkL"P 1dPg+d0Nu.FV&~Hv1lRV@6Ov9tYE x J. 8~YS$
:D#M+EƍlţZRbjOjϨjDUgUxNUUxAU)RaAJAW{+>Z}RJUjR(AJRjsr#,:$
Hf2JGZHTGQmçq|>D;y_gh!ޣFy6rAe|-cJCU|
-өϢZGx6Γϧ:2Z+i=;ju{7&h3N[N|m~~}!_==Ho+5o7=KO3&zLZy_+k}鐯^򝢗}tw^#5#Lmt@owqn:KoSN]u >F'Em}M4ƴ̧Zei[s<W[klVimP[ÆkH6f6N.%vM˵lrfv¦jj]gjl^4w=
$?PQ@(E矲9CЗt;z6]	vPK
   2.\           (   de/cardcontact/opencard/service/isocard/ PK
   1.\^     @   de/cardcontact/opencard/service/isocard/FileSystemSendAPDU.classuMN0u !D+TDE UbGj,8 B-
 T޼yo N#NKZv6(k&۩,w3W.ؖg;UBJV>	@Q0tu:ݿ|]|r9َUx(kYnkcU%
.n7zM0$A8۶--P]&h2t
]GWVs?RN  =!,"Ȱ^H PK
   1.\    F   de/cardcontact/opencard/service/isocard/IsoFileSystemCardService.classQMK0TmtZ{"a/EAT*ӧviE?JLVȼ{o	QIBI[*T^tVDLO9j*^f*ca8S)j݄H̴>{'0ʒ͓Er^H8<f?+j}eXeXWѨp3=٦ҲWߠWK)xdMMڏn]
dW>AhY
9Z	(EBmOPK
   1.\/%  n  <   de/cardcontact/opencard/service/isocard/IsoCommandAPDU.classTOAmK+?@QX@%eum
17x2&x58rݓLK1q3߼y޼7}p!PCciYӱ=Nb(rw2y*:r?^tF|ްS7˶APk|rm6 :BBf:.Ox[K£R`UF!t;tw|IqXF-vsܾc`!p@G}]4Dΰ&fV3
5VLoMpY?2bRG,gNY6\g629Ԧ6YõľlT{V/gP̜AKlM)Zd7G~I
<Kqs?adN(khYrM>f~%1s b( zvƦ|`ohC=4)0H03Ejt"	B;Y˓FkKB`ɹ"F*`,()TJҾT۠ik	=Ҙ$\oUzuJA/\5TŴWΩ;էiW?M7y!m_:^1H5h$:v/(VLJ{#-˿L.HG+ЉK8F04aO0g׸
\{	|u|b;YRvMoB~*P߄J4eQ6_(6znq"Bp@hh/Kc;tE!C9tviE;)3PK
   1.\P  "  :   de/cardcontact/opencard/service/isocard/IsoConstants.classm	xUҕ6!-в(&-:w4Lgea
PҤD
-& &" ,,H{;3{|<Yuq4kY10L<:r`@bwtjMVP='6C}cYj`&58r'mڴfŎ[9x1JU/&
k&aAFE7NٮG6
kJԊnAXG[(Uh
0I6EBWCY*{o4mŰgN~yfWׯF/WclaEؐnKSUN
jiSL	LpLd%Kg-vdh02,a9K5[8A88hF24AnRvDR=$kM"N҃un-'{U;I}̮3&C$=xvnHq+&&Z'dYa<÷qBuБBx(2+*ɘF(%<@
ץ\ZȰ~B2l@hԬ$m4K:mrD5̍f|c1MƧ,K'6ڐnF%G&N&.ޣ>ݩcQ{ø^c'MЍ%ٌ^9jP37/cH9g~);R}ͮl+:@z|%&a	uX2o|LJӄ.LRs}loql=GfrscB-_4w/P*ם`#$p^0Ո{ǨQi1]vṊ~vZ]h>,V+x	L6MksdHW%.a˄w$ެ顅nukbDzIC7ZAֵ^-ᖙd
8$giY:f,G:aه1DݕC7f)qF&qZ\ןlۚ*\,ۛ5ުCA]%iXLz%u%ZUK
{<x4=T::Jkk1C^-UCcҕͬ?nAz̚f"yԚrU~9zXTÜl6XUdy|.z!։זNfLIL6e-(=I
kvn6Lfvl`ĪΜvj;@7lPN_ؤӵnz+ɼ	1L!rBuQ͎TUp.e0jAYedSP_WoV[|5.D)=ZÑP3%	Q0Q%}-Z=3T"*&Ra a(Z{F%}Bގ͏6*('c)4<Y<z-l2#øc*~K.p>f@݊g}2K55iwڡE^K;^Qsףw-E;Jl(:FQYpJR>&ggedǯo3,jHF^ȏfEރp':d<-
SA=)ͰUTմuJThHњSP~);yZm*yø> JAvxK~KjH6Cw*}0Y
=Z)="PD㩓$7}P~NH	HUQEu,^/G;'?Y
ʥHE*4.Ȳ1
D|s[?dy5^C(=(	zh[DuL4jz>u\3>CepH:'q9AK@Cg@A\H˒]nȡsZEzyu)NSt-Ho(
}TnTt)PJD	FɈ;ӵj)Z6NRMCrh;fzYFћheG%;o$	8Rx6Х ̊[hK~ hՀZťؒq"JDEdم[pBǏh-@D24	Դ4dDȒesTOȑC<E4je@qp Oq_
(eS@SOZr>yx&-71[2n2
un=xg[ہg?	17N9Όwk[ns{xoƟx_~43^ na(Ō@APaHQmp+c\`,E%pcq;̸ Kq2 w2w3>|c14/323 D2ƃ!'3><x)GcWW3>|Z33|&ρb8l0^x#|ns__87%/_|+W1|
/e|z7od|ˌo+[5Ʒo2|G..݌2>?~(0GXΟ3 (3~0	s3Eu72~*߁_3~oMr\~xaW;w1~c˿d/\Q}۔eaeK|fwY6_Iu~SS+AvV_	WWJ4f#x}F4ssV)o
ކ<2;=c3Q^N#]f'ޛ1!Oe1!Xx1xd|`C2a>Q`q+a\ KEpqeθ0> 11F#QNƨD7cc1F#j丗181,ǃ'1^>0x
)WGWe8?
|:c#ƨGęQr&^=zVzI^^]_'qny~/`E$.dLbƗ/e|rxQ>0{.e|E
PK
   1.\)    :   de/cardcontact/opencard/service/isocard/IsoCardState.classTkOA=SڮmGV
b*ƪ J4qieɲKvؐhG藹;3{>ϯc9UDe7
2lw}iC[:%U$2̖^4Rѱ}!^{lnz='Gv7|ΐxƮKlGpwDCx
aP'v}A=]>YVуx-oe'؞oؾ' C̓AيaT+qHD+2UK
a΂iGe.zkpM=c+OJ*4δVO 7@+J$2i8d߫O=a}'M%aJC/?ER0R,v9|Ȱ̲]bJWZ
=1ꭿf$5rczt"J<[i1<Gh񡯐iS6!q01^K:gd0-\*ŒԔ*>K8!;aO"&F
0dԂd]DOu¨<\>FjU
(^خ}\!}2G%Qo\#_Sn6ѓl󨩞i	
$ЦDHW	X eO$U*p+JɯH`rzQ[cfq^"o6ttALuIQQyEy*E!}B^5@D(
aAHV2fQk*ZPK
   2.\A    D   de/cardcontact/opencard/service/isocard/TransparentCardService.classWsU<iP
4˫iZHL)h%-
(6ٶnݴ<'~3~dggdکΨpƿw6	6Lvg{;.
*hmu3ٸwG4IBӺ=cdtiѮFШ 	,2j7)R
Σf:yMysֳZ_R*=S
z<Y֧`*L
O8qG4w*Sa4UڽV`]4uE9͜]0'SV-5SCtՊՠcI	lQvI}hY!qW
Sy諰=cVǺ/vt؁)ڳ]ONiՕZS5dPv#x1\]XBߣ*c0ʟbѮ|hу
WcEtr {^
<:
^SqXN6{Aw(ro(HRff%@#tsҝn`-U@e%
v妊Y鑚9\f+ۄTpJxGȫ}>D_6?.N+H°#Z~9U?X3*d8s-nfFk!ӝe:%UqchPMUmB6U|kD*_XXט,8XV[SY׬$XjҒ2L}0=ۣx\nL
y._&U}d#Yj]23}ꐖ/>y-]U`	jݒK˅STV<#C
\^levՓd[*VS]5z_L	쒡UֲP2v<%~x2&lG1aHOA
NxAmN
15+O7=ˌOCEʅVr߷k4}rzP&W?t±yx塇{q7:Oj*0ؒ,$6/ccG(5Sbد@dChD:'f{UI]]>0E2/c<A\Dk6D0|Hж9laDp\Нh4aB|]D4t/M?. EBݛ0G*$֙D J=7Dsx/x$u$K~G">xjQn"DЌN ?{kmthFBtB7ȺHc7贛~/p3ݏrn'ܡxzaAWg/Ibg^?{|s~bݤ *%yJ<>2GSh#>E
[PS3!EɶGmj(Rp%W	F	 X+a
T SyYwŷPK
   1.\           -   de/cardcontact/opencard/service/isocard/apdu/ PK
   1.\%^W  z  D   de/cardcontact/opencard/service/isocard/apdu/SelectApplication.classQMK@}֦U''Ss=TMR"T{i,fC-^<Q&/BQy3;7o N!Cp1˥@RWZ"dAES2"ŽXtDKXG4D(->V;
.AIA g6%	`<׾OyehʆvcJ-!
g>seTrμڤ#<FPqx.'Wx9yg5c<*	D.;牄{:EEGbD)t<2*VGj<#*ePgױ2SҍtfPK
   1.\mY  T  F   de/cardcontact/opencard/service/isocard/apdu/ManageSECommandAPDU.classN@m+DATD1ZԤI5& ,k%=x/x|(z`{Η̾8F9
	
%$
,ۖ
`0f!ABT]=$R*,"p4S獄ym,c	{7^k^1$N	NRNWvT,3Gv]sEzbyUIiz65W܄Þۼ7L$}'I%xp,ߍ53"q [~PUt}K\9Q9G>-%:d)#\M햦i$P>GuIվck1/u
RR؄L٭SPK
   1.\ n  	  I   de/cardcontact/opencard/service/isocard/apdu/GetResponseCommandAPDU.classMK@Mb1Z?.=	
Ճ=(MUAď^<mWݒy<g8^
afݙgg}8\D/L+3P(g24։ѱVreM s>!|3Q\'[ƑT3>]?$F^	37%X炡J%.H7|4vJ񐗲_4ELę\gXVFE!pm.<}$`|PmQ6)Eb횸Z} PK
   1.\7^  y  E   de/cardcontact/opencard/service/isocard/apdu/GetDataCommandAPDU.classJQQ&ˏ[AZAuRz\]zVB%6Egq>so/ Pa"FIl+Őq]!ƾl?QM>gE%mr~ٺ!HܗvL~KuB<ЂEi_*
e݆Z ^Asv1XpM{}
\;?$ycC[ĸ"[WbϬؿc-GŠe3P
`V9j*oE6ANeYX0&V úJ5T,U촜M=T<٘`;""l_uVPz=.~ PK
   1.\T/-@    K   de/cardcontact/opencard/service/isocard/apdu/PerformSecurityOperation.classQJ1=Nm[[UA]1(EABLHg2df
~+Gwn&朓ܓKS;+.!9OO "vu(4S%"Ny]UѢ1juvC/q<jH_BixtPl\$CK4|<!%ɐhO*bK!gVxZ)8bǜ(Uz /tbQi[<)6
ԄtP.aCLUu
,i%.\ʨJV)Z"dee2:l:_׾PK
   1.\S    J   de/cardcontact/opencard/service/isocard/apdu/GetChallengeCommandAPDU.class=O0_7h),lCdDEЅMN(|t`1!1QK
{~.Z8NOd&F2)}3#]k|Ua&0өux'>SZnq?F¿,K*2oK`RJU5S~+wz1SUMB`NW'Ɗyc<r(pxuǼe.޾},
ºUnw!<b

C݆xz_PK
   1.\R    E   de/cardcontact/opencard/service/isocard/apdu/PutDataCommandAPDU.classQN@=6q c`
EP"hxP
X{eRPPSTH) >!rgX42ŝsΜsfG  ,Eq<
TPY;NUq~qE,<Xq`KX'VK^KD~"V뼎볇<sЧ	VZNۑB<QC	,	$w:8'<jw<M
z?|$_	tD0Ps	qпg_D[;v{{Y'Dcᛸ@ZH=]Jt`^ꦬ{&`^0!mP0FX^Qiv󓌇al,tR7654{z+zjjCH_PK
   1.\5"  !  Q   de/cardcontact/opencard/service/isocard/apdu/GeneralAuthenticateCommandAPDU.classR]KA=ٸFDMmkhJA)&(T@Cwٕـ#B T%0ssso^ ;#%ErT0pQ8CX(LA뇮"%Dt*,v'DyNfo췾1d(gvvg`:T-[0%TaT:;"1:W?j:m2=lf7#_0Lud((LCe'uu"_Ϗs$̃(=-3keHs21g6 :״H+W5XXkw07@-`Xrw6vfL|/.Qȩdځ+PK
   1.\FΟ  \
  Q   de/cardcontact/opencard/service/isocard/apdu/ChipAuthenticationResponseData.classV]sU~NvZ
|ID
@B
RO7n=)+oƿ ̨&G}&l;2L&}ޏn .`%D4Duta,&ʦHnʴWy0(%˖cɫ8a2R15$ta_8*By@2+8v[Cps̭GӾV,S-
^n'#<ng*i\[q5vA+f'e@jاc?E%73MSI.>̤k8p"<-2)rᰆ#:>г7'=n70s'2u_8P=KVsG[Z'CqU4'>R#a
#:Nf-_ꯥrGuR)Ƹjje醴tj%K#
gt,ÞCԷdj*V^LcaCY4j
_v1W.Yc*fBT82:.
ɏkrUǧJeNS;i)
ˡ2ʆCF^+ٛ31L0dߊoIwY8JuS#%U~dj!
:1CuDuUCɅ\ un*C)MN%Dn#fEM+=K[QYyP*Iv-309Z\ī7c4BUD:	p;,R:r$iz6U;816<SLXJѝNRs]I^.X	<²[uFS%nl4xzhש-*rylwZ!c"m{Β"pr򄚥s!y`C/}_<c9
T@Gvҥh1HwUQ	^ݴ3È~xdld
/ص=?bK̫8cNw]j\{1Dldp~N+=6Z݄ͅa銠HQ<Cϒp$ WP5[zNMP= }y:}u`V/QvhHiԗ7isڎҁ>
zRp2~5L[

zE8Mt[8f
1ANT~HS*g7X]
^)`Dc1(x+(`Jdg/7&[⒚ugggNi%K)C1嫁 PK
   1.\f}M  V  P   de/cardcontact/opencard/service/isocard/apdu/ChipAuthenticationCommandData.classP]kA=7vmĪZkT>EHR+dw0#ٰ
_(n샖 Ν;9|. F,C"	X7Kaw"
&qRDD6*FvH$nKhŻ%,pJXA3։$i`d|CyLجms{)lT|eg.biuwYJ:WMnઍk%l:?oXF,Gl]aP|8|2Aĝu-EHTOE3TwV?>^*]tP~ E&|2ݿS}	"+z}``#њ½.}Wxmkއ}.j8XewQMܚ+ݞPK
   1.\5p  .  O   de/cardcontact/opencard/service/isocard/apdu/VerifyCertificateCommandAPDU.classRMO@}+H@UpJ"DjLPbL^8-k%`2N8@df͛ (aG"
I"pdm-_w	b]pK71'%o4!<\!$|IIlV!eq$I!P
'
&ovɍ@c8G^OZB7p[-SH!ЪW
%_	y^8Oɗ&uk65IGt[
	haɨ,;cN-`(	zܤb/Ǒ"nf)B>4Ft{}>w̿Qv+d>X%/CF
yB7PK
   1.\M)    D   de/cardcontact/opencard/service/isocard/apdu/VerifyCommandAPDU.classJ@ijcjkzRAA)ڊ D^z&+]iwK
X>%N8fy{yp5~$PQhTSJ_%&Xm⡈9*\ĘLNc.Ǡw:i42VF(L$	@iy5e|+c4&"VjH%N8J	ef$ 3Cyc{{"@ߛUv(Zq-g}8{\M[XdE
U2Vxo7? PK
   1.\o'KW    G   de/cardcontact/opencard/service/isocard/CHVCardServiceWithControl.classRN1=Edgܸb!8KlTHB2F]RdNA𣌗Dͽz_^`A!]MCra]ݑ 4=%B=ĥYoD(P"Ѿ8C{ytA!?;"Q-C'x>j`T~VzcD
gBZi*0èq!y$d*RQ/eMf%"j
\SI;2<B&/ <5B)=S?Gԥlץy1$t9)DK=myZmB!4q,G9Rd
8ݮbc8 PK
   1.\dt  
  G   de/cardcontact/opencard/service/isocard/IsoFileControlInformation.classUoSUnn(m li]uCnQz25<E_0>@b2HH$_MLO&7csefGLL||~ ^E.eH
<2kj磓Zbe:MIF(-f`-`EVvիUcT/i	:gdy0nv3.9w6tI+[Xou(؄(ɝ-
nkqgnAcj,V{<햊iTL]TsI++hh.oFv2xBa٣e bNgFT~0X+,Q7eP~J5ZbҊ3C;Mәt&9e/yL!&h,*Kf0<o2`Cˈe4
m>5?搘85ŪWg5Sd-$0`Zmh25NpI-@K3Mu)Hq\esDn*K	|9鰌V5rUXy\9@(	ev)i>:W&b'Ж˚}:["OG&WMێS.TD 5+AkIyt¢Y5޲HB^W+"'MӼf+
diNCftH}K^NwyRp;#4KSj"{+}WG~ƢYx:= o#vQ]`gKn	:뤳+HbGAvBd-xc{9z?i|voo/	chIkqz] b7bvb7fpV׎:LX}=ӑo!?q6?}}}}CpvY'\~ri\{j?F؀z<~ʄL.ʡ3%yQqkUꬠBG;oO˵1s2<}*VY7p$ g^P$B'aLЉIjCpC>pZtZs%Wq	?Aů3B"jИ9D2Y`pU45MjD3H96}y{KB*GRcY=B۵3X#*}LFRBEGQ0-ފ0iՉϳ">
p	32$7'qב|PGwHTAj9s+|	gZ9tg[*p~p!w#ҏH;֒Q!7}-gn}>o؆/`Xz^Cp!xz`i~4}n12pc1uqn}Ep$0Ev?PK
   1.\$\    V   de/cardcontact/opencard/service/isocard/CHVCardServiceWithControl$PasswordStatus.classT]S@=K?օ*ڂR[A2MS%qJ)>Ψó?6*"$3s=sw n`YAʺLvηl˱$..Ջd<-R5GWVGڭ1z-hy׍D'#!:(Wjߛ	.ʜ^).w}})FVmAQVjZAv9E(U-XY-JU@ĎpXoZ(+j~e$"G9aj`0Ia8klNfnn+kl+ *8qiҟ$[fmW0\.61( 80v\'aru$-RNEBWRQѯbPq\
vRRa5ۇ#D:-\Jw\\$ϓ?)RuwD{57mۥbS'gå>"\´M{3$%ixm߲y䯩B+ۭ`k

kkOI] -m*vPQqBnҝpiIv0Ƿ1me
a*_E&3l=No	~/i.w0#t+*L"B/C?1+9tRP>V>5"DFh:xFC m44C!,2,k}w	&(c$%WIEU	Ip%
7zCHKDiiibd.7PK
   1.\k    F   de/cardcontact/opencard/service/isocard/CHVManagementCardService.classuQMO1|]*~A<{câDcd9=Kv[k([%94Lf& ASB$|HJjgܔlUN~f4)/_=ܠ1edCL-.1X>MH	5*MC۳5	8>ȳPR.	s,.]ޏL;Oc3c1-_s33/^4Mq6-d,vuShz))y슲0?!qtiRn~jrTQ
hQ
"s{ROPK
   1.\m  	(  =   de/cardcontact/opencard/service/isocard/IsoCardSelector.classX{|Tյ9	@AK@I'DI3 EW>^PD{/֫Uۋ^k[mjkUkyd&$;^[kg޻\jwBnf"
R'VxZ%d|ѳzA2ppȂIbz=o0x҈ZHPEUhYf0Lh'0>E5R*>%4v3[,#Lb$Lf]5Xn 0D6D@4"ZǘQ[RJRVN2q2Ƴ+}y	V)&B0By&YZduIhafYDo0lFp/V=r[A]2(21
|he&WP]6LɭjU|\7+WW;1cb. vڼP0~ccWP?2W(KuȀ&81M	h3jUÞNqBJq9
BFJqX	;Q&`a"xOfEhrԂ,]t.3Pobf]rMa⌚p_KR.l0K
Irbe	Xfb9.$?$Rbp^Pv:MeYX.2q{YIv6+
[->>{i󂈧ZkYa%6RY	؍'<^L097=909uT*ĮZ#p@DK'hRTv9];,PAށ҇̉h0a7iQ4uPOi(cN\i8S%M\! "hB{㴳}t[!#GA1M$s҈uz5WnM#+Չ/v-OK;`d|M܊8!bDlVwhhS؂M|0`J^̎NcHXDVlxMw<-Ddzph+!ajվ5:ٳVl㮁K:>!m`kp4#bGCjm"pQpx4$ {Hv։LH47Ѿ
/nM׈#&?n%k1;GBW>'=D<i٧٨CYv薊okD=N{MㄓԷ֦XXsf6Z?-q~O aLgWB(JvRḏS&T@#*Nf5p/lN<x?㓍Uv'ῥNF`Q JM$kOd{8	GW&~	X[<pZ/p5xo$<`l;ŭ&O&95vf{BUp_ۯrԽqڢZw))%[Ҏ0aV/0>-F2ڪ;%W4L;'aZ
>z쇄jΜ:j>2ȰGFM;[LQ]+ׅKYMF'Ń^/	hw/&9c)I]]pб_*&ra	}fclъ
\Wk$O|50U.q>6H',R\9RE1vD-)j28kk&ܱ[UF;9M"SdDè?65hI/c72o>fJΫHK*TT79/	_&?>kRr9*®^XZ$!z7ǿ{|]cw'
lk:C6er2׌GGxшܭ-~HMuh
N8Buщ!~OeӪF"1_]{΄qu©YR[Y)m)ܻYxzMX\Qacaʐz!>poZ9iYNzOvLHu_xD{fsUNDF;EP<I̋03'2!I>%/IX	3cPg8ؾTeA>Ւo+Y1]L(@\Ydǿ;aatCi%?©ZdqwI+.2bn|꽠lU)e'TƄ.[ຎPm Ʀΐ|Ÿ*Zvۙn	}Vݢ0CS/b	*w;w"n;"[pSǦN{^>q,1`AU8?|.CArĈ1׾,<'-EiX#Ky?`X>\T'cu'lK:.y_P*<hr]]¸".cN]
?W<p1k]z.Dx0)Ft)Bϣ	l34&-)w(z'dIcb&Ӕ497e>wa5i8|V܁E'zT7oNqAfT#.(ĥiߐ53$!!`H1R#
ّ֐ɐjI:zMzؤl)$MˡR&_Ýnه9=8pz7
]F}gӶ"ee;?edP%z]Jq.r`ضÖ	%r6<(>Yڼ.uj ugoǤyevMѹL"JJ8iݨb:^+s1V.߇a.AW4m)eY,ެsV(3	ϚL̔I?OfƄB	a{ѱYI^ޘنʤ˒>=~^ɣ^V8]Ә^h+(!NWp:^|F
^bś-l;
ǵnĻa+C$>A|kK+sΫї_Gh46qq #j#. -&W,ronamlLF I(~'3h&#!,:GofpjÈd}4@s2NDKL<ٜu@`S
ZRئ*A5
Lr#
L66Q_m`6pAGPd\MGQߟz!Q6(^0)Z;O0f+99q{skSMo5e%ݸs,v'?so܃4vÖfYeA.wպэ	mNvLt9JH%T?PT
pbJDDwPlsFjm-EH׊#>9e4bЦꡲd9'ScѳO 1s	7hjV=)TS`wZg
f3/!YY}yp6te.L8قOPNp4
8I^&!8Cxk1yvI>,d3S1m@1O<SOވop'5[6cCZ,]jOT"NHJK_6ĵH>H!V(aby'G͖TMnr^S\Yer9OhDDvލ223F[GiR%)UiUj%Gs=MAnw#<lj2w$pfa,γTK]W0]B`8D
:WQ#np;-]t1U!&/Q^'oS>5\ar5YG㩝
(H)ĵ#eT2˩\{6s)N71L6Eҽt=3OCzkާ{SWݯevm,=M6~C;VNm-=uУMڥNGi;qqzB{k/ѓa:COiڗI?sz=OzAKӋz/&:+z^aJzCԿK{maMӻ:}>ҏПm->lmVH_rTjdtۅ2lLe#YtW,NR֐<_IԨH]q%A]J(cmV_ܠJKx$Kh)
8VTu Z5qIĖ0<5NÙ|GNW.[Į?HjpAC讀3/ݧ,kw72&^b:n'줍j6UX']hZq	ߵAΫ(FlQlxuv%c'cއy#~ݔ(ߩ$ܒ,d˔MB=FLJ==UOsZ8z-;PK
   1.\H%#  R  <   de/cardcontact/opencard/service/isocard/IsoCardService.class{	|Tfeg de 2KeL ę	]kj[mZZ֥K[?j[Ŷn}o^&?d={oxȾ f)@C3ႛ0>)h,<%mnpNpm% E2` CD&LBEKxFPb#.)-h?֦`"dBlrCpK8hF;mGp3!NiK-Ë
sM`
xE
\ІpKW{86gK:0g#MQ91B~C4~JԍSd	Y-(cM>j	ZO5lnNiFOYE)^a&8IX%'B
H$.O4q
&ׇ)!v7b(5QlLK	aѧuáS0<6Kfb:ft)MNN]Șb/J^UYU?c؋11V7Oř&桊Ɋi(~8ZCӯ m&6ڃu[CD[40chbmni1Ibig a0חp0V(n8
CL -|p,%b\G$?^ժPnEXB &plJˊ8D1y,S.3+Y}:bbCԤvZ:5#41mG۟2}XG[$.05x<Ѓ&EX+$ĮXi?P1B&ZBhl:SؠFlu!lAjQX0$Su%ڧuY:>5щ󇞥&!Y x q$tt،-1GTBTI<gH˧Ȑ4ݸ@ǅ&.	}V#Q0xQ1'_%:.5q.'L>mK,y-J]~`HhUGZi~=Tp3e//_p`	z-yp@3twL܈$S#$ŜWM,<+4\^쭵-,Iȭ
7,*Y(^ҏH=UP8O:v*ɡͼM-`G5qE><iN|pBGpXޖx"I	#d׃P/n"\׋ -Vu @lM@l~F<uO8xprM{;yHjCp>Lksl^}&S[8[lU-Z3cu:o
pCՏ
tt֑!Rݽ> >axʂ]"iEūYxF/L<bx"CX;&B4I{0XMqN8ktŗGc-xMuUUVz^N4\x-9faSh}b7>}Pq ~͔dڪ:g.xSEXıjpw>zɶɇ[۫-kLi/|	F&%"Vca n7Dc	Aħ:JKGg&"ɣ+`Ԟ|>_ƎEd![#h[%TlJG(c>ebZuj>oD&)"|>GUlsrq0!>V[A2C0㟿=>ʲN I2MʢlVGXnY8&b/ݡni^@{ؠ<ިeuMT@#t4N ,n9ل'/Q`5j	MG	MϤByjIss\SIcD[NS,\\԰px6$xٸ9h`IRNus&"ڲo1jթPv`%Vܠ>O6}Ʃ3+f6۠2<4&s\)On<QPѮ?y4C;|09Xº
fi+ڻ6!,ug\%&4ie_J#WW·$iVK<#oVÉ۬,
uBj5kHyJcWJ
z&-\f"ZݝW<SCyǟCΨwuIΰߴh_A	3Ͷve)̠%|m]Cqms-gi,rd$̲d~E/o
gSzpZ
Τ?~]w}=h[uZ	BX.lCUqi#+O%a+>=E'Z
dC[$ձ.kD(ؾ,kF-iN5a
3 _5t8$_p82bx#
u IDC;t'>5oEXqHw\/0= YvXoX-OOOsu+ՄWtpz(y_u0|j
MB;m!ޫ>|xbCV~S8l0%~¾-w\qeSZ.my.>ThQʻuN68˝D Ic~Y4SamFXF˂]pDXzY@xYի}m봋;m!&
͓ό!VH'%>̥r[":ƙ ǓMÒ*#OU,9.FY.07V̌ݣrE73s7aauؿ8exjq7/No=~
`B`܌N?gd5M2/xaeUCmxۢw?ioo~(jjà6:9ˈcherد8JáO
kuzmkAʟ($]73q'\M6Xh
ۿ,!zu^П	Nt:M9u.'6D[9nzCot;w>f
G7õuPRi:L{8I+s3PH6HՃ}
Qlo_AvA'_Bt?t#PJa[6#~х5oag݇0~@A}5ߒY٣ҟ_[L[/5

߄-`1y&0;BNGcޕ]03_Om- .O(.57rd;O.sHvDy%{@%yx!%F"
?X*y.Ei
N:_NU[|\PRZ6f7߷'*(x;Ebro?&Ʃ{pj&ʜ0+]s\Vh\'KU*7]:"|x)،c.<\#.@\$p*xH1¬QKP\L[xfQJ<\7wAK'.K
8_BQl[IiXڽR5 r6n݆/K,.َvt[&:jE*ӕ<<T٪J//)孮g/޸ }Od/aow"x?}wwwwa+:C},]Mw~t"]+rJXOzM(O`EOgk[^k>n֓^|F5MXe5Y0_ۃVl!dX~>/O=xց(dMmIREbDntF`nwn,K!V4vBl]Akavc}"l/y>m^\R+tqۮ6%Ճ\It^x{1{o0eQ?q 3/؄5<ʃ }nM**؞(n
GFKt;-D&Kv}uZʱr3ˠateOq&]A:W}&6aۭ.gM.>B䝽Pqjamx}r77]Ge8x`b|b|b|r	*?R.KKp<P?vNK9s,9Qُ^JO((B`Qv`䘯#?,{`I)23,paLfǋ|"˛
лyR>|ג2F	O:1/qdGgW+2vzR{=ϕ{BbϕKY
s(;B
fTQս`x3v+II^ˏ{%4S|8|gozމ2)f'NbXEϥKea<%|@y$}'&ڣb
#W6ޛ	;إduU;)ލdSO.ۉ+ĎTsTd<c7#W}՛0ڍr7{-?F_?:n9x~f9w`7k)T>b?[|/Lf\r
EUbXaPV L:XLqF'sOT*Z54m4
[h&
\N*[9g25
?Z:xKZh!SMKpϖ(ZA~ZMeΤRr
6PSv%mmnz.Cyz̳t)J
z{=]xhVK)'J	mSҗ3nTREYmJ+ݮlbE,^}=\\kE_z6e:&`~XhU\_:},(^O8h[y5l=5H2p>\KfQJ%%S	XmRY򲕵t7ka̔+SD*^L@,st^qG2'r01ue}P>嶁(WiF~f_Iz/L$rAn^}D'8?_h 2;]V<L=++M3""kq<RUvH?f)<çɀЩ> r".kV}B.;%L4E]"(/#/w9gX,C4 
>j5qhJ1>,$>dḭ@wxIr̞D	3aT>̧hGO/jD'=4?8n'y<L/IzWpRzm'o)ySke0mS\6p8}e~`Sxܦ9>TzW(] ܽ<Thvpf.?~@ٜgJ6Ʃ="ړKV%+tXr_Y6AR@quc@%".uHu'Y. qXL䙜)(7 %ڎ>^tNb-tzL)StVeWzo1KyWr-,aNz#sw4pLiBypmuy3Z*\{%%KϠTYIsEi;-|}>bgpPTcbI1NFDEJ.UF&e$nWNe=ʉاO?ReVN2QRJ#2e*MPQ2fpzTP%QfIlct&-*[F7.n$ƸfckZɋk?dQe!AeM$40-)&&N罘,}sKWHW; N'G$=)S4D7re|CN^(J#i҉& ۨ*%jwN8uԙIfzClxZؓPJRIqonvo{>CJ}]?w9ȓmu5WiU~@JoB\=:;LKiI0!Ҽ"JI/0
e	L#e,e5f)碞WN
u#bJ;*XJ۔acSI.eSGJ7)yx]P.a2vr>Uf\f(8mb!춂ٞz7ٍk6*2lӸ!9f8	ςq^t"=%S>Fbk`/e@{ڠ
~jh]e),cl!\C=n>=nitۑlpouթLLp(Ը,<q?q0C`R0i$1)ː"۲0y1y;*_CǝT3]<rnQAHSp Q
J;^ܯ~<ĳʣxIy*?e|orS9CqĢREYNiDDq~&$6ӪnvGPn#_*~mbj]mo
U,!*%wu,Xv9"Rǔ>7Na'?yX"Kg 
Uy~o!Gy^0Uy
Gf_9(
\*ơ6Z)Fbn2F[2i E7ylmL4m^T:B!rR0R?⣃C7K9`\c85{fEGq!d=;[*O|y**)y =*7cQVW*(%gj<9\؎Z@"%oҸy
O>Fd/Yk]47"\Qc.Όr G'=8r;b5R7Ԕ.s/4!7|'24((УܨO(>uE^*=+L
(hd'b:aZ9d,TY5t3YYئxLyxK:VѫE.5@^|*rՅ?NG.rwQ
\NES>v(Mǩ9DȦ6EP^[HOC} j?!;(g~Y9##!{&C:k=$uxK^#߸[7d(n9nl9[l:[gY.-erl91D~\x/{Ɨei2uFkqD
duJ-S[Ѩn

Q݄v\vr5Qܮvbz>QcQڅgԭxNƋ\qb9N`pE%NvSԞahƢI#o:M'iC
65BԬdx׉ƹV*`0a `y$Z%{TB'|ȀoM4ie;t~aja'Lt
4C32|^jLT輛eFNq6rJ2&p<W~AFN䓲4e)fAi%#δdM&nNHe%ZCN7Sr^#:FEL2׎xwSۉ
"gI/>:DI%S2{
1-;-Y13%USR;*K|[ t4	dCj|Ȕ!S^eS>Faz?v{1W݇ju?ԃ8W}Aǜ~z[	\_RWէ-|O}{yWԗ949e"mv?Zr[$gI/Lu,cwzQB]zkJ+kx&¦Jw3~!^+y"p{q1(Nn;
B31k(s\QRJjUwRpİ&ll`a{_ޭPSۑS(|As9V9=@40n>0"
EhgCsaiw3C \a7轌M2d,*ZKP=d/ꇘ~ybFX)j*6i:.2p,ܨeV-۵\ܩA {5/j''(<v"}m,>SmAOn.3؄mw\mb1d^W+zUW2J;Ewً}_R|f}3>#s~5ke.űɼr>'8k
"n*h lG;4:ez'2OU^u&1QR&1cTzH*FɆT;!1:p3z3nUl7h&ëM8TDViZ%NbmiUjjjQGB i
 7sy۵Fsy{"1FH(bÉ>;lm%jŋk%4^%_q`Av+ÃW
ޤmm;M"乵ô|Qlmmc1I[Z+iPa֎ZViym6l.Vy7|+ۼm~cmyhm>	l4拎fsp܏ü=|a:AxIX,4d}~-%$O//_
zh>OPK
   2.\e     A   de/cardcontact/opencard/service/isocard/CHVDialogWithStatus.classJ1ƿkMO^<=bYb=P$i}| JmaELfϯ+:aښPZ_'co\7e]EMe>WH&ͣ6?3e6)N[[X!"݇r#<?BN.XM6Ë	!+<Xpr٘ tC0o=
Gџ&WfNؒ#%ً:_$fEoPK
   1.\Ph    +   de/cardcontact/opencard/service/KeyId.classS]OA=mm](ZTP-JbM@ҎeK蛿gS0H| d2ޙ.>qsΜ; xC C;־e֭F|KCxnElFATELh3en,\rULg7]sʗB(bD\Őa6=n.cTSTs ,/ .j@MN5*%RV)L
2L*?X\QaWky\3LJ>SgC'wQ Ok	|/w!Q/
nv"#d7-{?6]!]/3F
A=S1-f0GО;^luYq:9 vH<4jԘT>'0MЏސ\Qgi.4ޠ+T#{#~53AQ,nR$ѩD: Wb"/` rPa\0Z'ǁYjhN_)OD>D,hS"BExF=5I7ՁN0EBLp[QPø*힫l<oUL	'1.vJ[duq>cu+:{L&*`quFT3Z#]d_PK
   2.\           -   de/cardcontact/opencard/service/smartcardhsm/ PK
   1.\(}    A   de/cardcontact/opencard/service/smartcardhsm/KeyDescription.classW	xTof7^ FD@P$$bJB$,3	3/,nᆭ%HP*nj[kvZ.Jܙ$db5_νss{a7204,3%!xEɼgX[!`8hPpfÅln`*[%>	]i^$"i5de`Z`a}١U%>
7r+%޲%	341)dr#W_^*ebxI"9-dCDbI0Nze".01S/B
y=`8i"AiAR>qi`m_G$y5vRPo*RUTU` 5S0&4YH>47&MHtaL0qr4Q:yfExi
qA"VL=j1"1``¡iXW	hk}nxQ)RQ8Kj
45VbQ-wu¨4f 
)T؟EiQGdU֖}R9b(f<NL[Ĵe=K~iV͏vp
&z<qY׷Ʒ[}A4 ,)9oضVXQF42RY8H.l"
.[kEK܈"f6ъUDZ򨁯Zrp֘X3n%d~jm0Q8z<E.qP|Q{´SÿRѲEّTahaQ2
#./S8vvLVst9j+M\)$.L9)4XBR&nTDXȖEK6YC(loC:!
oCto]C|NwnPUFcs@M+ʐYM< a\WixX^XtLwaCǢpS8:<vL}O6m7@oZ_64XQ7!ģzr:V;JE03sԅXscv	SxZaH?VZ]hxxWu-L[\4dGr찵f^1cDK	b{?Q:gWMxf˦!֚`Z	w3Q?c0\_
k]K*8HbW76.½.<,+k~3Sc	Ǯ!KJHG: ;_SUMZCjgKuwI6ryϘK)L%݅R;G</#>p,^7nvvT
Iv]+S~uyJJTo|Fދ&pV̮
hyIȐ {[~薕n%+vD=D9 ,d
idt"Αَ!mӯήaGk}
=03
=6xab3ȟHqff3}3ㄭz'f!epf񘋩8c\B,B
"bg-z	
JĩGj8.ş14J' ;gGՙ\3[PrhDq)eJs[	 z>-ՠ;,aKq/d!dC:lG~;NDu];wbHƶ&8t˗|t;Nm.c|u|F/֥ A>NWB(_Ԏ3_)20
=-dB\ɅVldt+Vf& A>_	I|%q$ް~,Kb 9=\L"%er\Hp.<MI@nHI@Kre8CAWr@f`WJאJWJHHkbw=. :qv6<K{|.@318)<JyV>oe#83:.N}q9cmm&6bcMţ8;[8Odw(-dXnJj}N/eތWD\~dgTN>]lTnC-FjM>nlЖ׭uLKVNim>mmv$KNf{!73 J3;3\lɃvqQs'+
{x)fQCY5ϫ,+ZROIf؇C|ɍj45Js \{`kZi($JJ&˔KYZLLH&}virqgw.^ur둷yI?OQotىJfN쨛WǓ1LLM0)y1'FcNgK&K(%
b1XT;_Hw3VqȐ}ǯ{/fOW39OwDqo罕蹋X%M=ygK7Y~!GT>Q4zxXFYh~Πܭe&{I9[**>QT
 :x,7Τ\C͟t9)Q1
M{O"g/2%{0ܜY9!+`o2>Ӈt	ARw4JD:`z2)p)_PK
   1.\R+֘  

  J   de/cardcontact/opencard/service/smartcardhsm/InitializeConfiguration.classUoSUmK`e0
9D2du2wY{Y{］`QM|bLHbbl$b@ /hb4D1
>sy_0CF#ڔhF*?z'mvަ * a1OjX4l-iIns<ǭ)=㹬fBe=k!iz*oin9)69HX"DfްeeU246'ӚsB$j!^f䳣ߕܰdǏK0
mu"M0i33"0Xΰ$mhiq!
+g֓eY>ҭ V0lNRf9[MkS\7RvZ5mqPFUdKS,ՠmF[X# ֕=DefV6ՍHF%'伢GghH2dUX%ֆ 60"u{TnVŹ8oW7t'
to
F2ek ne0JѝʰU@Ni<y*@~4'E];6mm<ycwܪ6լ
ncX.D7]ۓykD0kT|ҳ)
a;eGԺuщ.yC N1eG-
z`ÚkkA@U*ܾ0:E6\ԫ|EB͐Lj!Nê𒒽|P&I|vXPѸiU@s4D(W]CpMܺ,-P,kH(BWC4r}K_!FKvH3TIӲ݂.{*Ê1_jNI&4k+KJN@Jh^
yݺ/zOƜ~|
}F;yr]kV;RAraus`^obKLCQL"b񩉵`{n+Nt]M$#siø4$8A@rL9Ԫi	FyWbeWV)OԸ$5HHKVA!-BD^wH"G^NzQ$P EÚA.*Rg=b!^Cex/_("PXrQm:ެ\'$)h3؂g)oѐz|8I!}ķ[ZV7e
Ut<亷'~A^1[&!)=Ev1"}dQhPѻ-;@](*=*%YPMr-rm44}
؄ZKky~"㓞D)O~6U#u
O$fm)D"qI.ot*` ?1ƮpʳOE4:|A|yL2$
K6|-}
av͠Pc9IzރzO*'J5*<]*sT2Ga1<Zj^_ڂ*] .qֽNwP? _b?K?P~$~1L^ůoBOf!E%rpA
E'B֕ede{ PK
   1.\&6    S   de/cardcontact/opencard/service/smartcardhsm/KeyGenerationCardServiceWithSpec.classQJC1Vmtjm!bzMiK^\~xZ"f̙L?^ _%04:LwI$}E.c)֐KRffq)rCNֻK&Uzi*2\hWӜL*#$-N@?Z
ʆ'L
'?Ud[5[7f9@slʛcx6foUݍP)2<ʯkY._mqv1jafa֢	PK
   2.\+  !  D   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMECKey.classSMo@}&vRZUh*|*BuU!:Zo"W~ G~1XEU9;f潙_a'^+##'BOd$dȵQ2C<>EVPb	Ssvp#ݕJ&C~'pC7y-%gKX
C}Y#0aؚ%"ki~2
:6,!
e?K8WH\AWDţ}a)Ub2]>\.C.{a-8~qD
t94--i{ĪhVqEB,d(d]dT.ڮ.c]ᮥu+.a8G
DuGb}}gi)uL\ZJ<ֺFNjTc2:m>s)NyKhKvV$Բ;pΞQaPew榳ZjZSPK
   1.\E    J   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMAppletState.classTOPmlN؆R5$F@DtD|tVڥH|A>je<2;bx~wNo nF1SPH ppKלjw<UtL+V43$rcCN!EY&WX-O=5 sg\uۚLmuT)xT8tEj;a[l]0E^uL۱HȢ.׻4fMnyf2,!WEq,00ec+]%$Y箔ŠT&?B6)Sٺf64L*^p֎n-2]58
rԩuI)rR||'=nԢ:BS*ۨ_`7& YZqԀv̽4LRhbbfixiπ=<}?@J,
;@ᓏ:Ckx֛-`T2IeB
=$qeJ;`g띒)$@*'$!ӑ\?a$bt*6.G)|<R\M)$_hӨPu%7CCC򁲼?3>c	ey)1'$~GJ %ѓ&$5'yg|ٱ}`)6lAvwFVpьz0rʓ}s1$9PK
   1.\
W  
  <   de/cardcontact/opencard/service/smartcardhsm/DataStore.classX	xTofyHqA'	8
 $  ֤Nf^ɼ{/Z[TĥRbն QuVK[]M&@b~|ws~s//o?EAyh/P!$Ț
F/NOYC`I$#5	p
|b:0I`A܈ĢV<fh̉i#%۰1#bwF-Gt؝mtL(vJ9[M7]-EcSjM&bukH,ק(zJtGCmh(4gerSᑇ똁chw["N"JbHǱ8N@X }('l\%?.QdPNq6
,+3Di#ЊD8'tFl_x}3b1ö=8s
c/__|aӱP`78HSC3ƩiL*|{8_7SOSV+)rs>EX,}pḗ7K:>eeSkvv)2Ǳ]a,
RqVQ:
uO\T!j$&So$MZR,MߒVFDऱVbVkX|PqaeSuνaƿ h!XKau,NwFTKZhTh.O8]|sH;	3%|a"Alo7,	?m7DZu ZnYJG-<B1rm'4 `dY(Z5tA(ɋgH>1aI9(]֮	!$|'QRmԑD']m'
50ߕU`p5,,+#{}XӰIz؂1
.uc:.i@\t4~l 
2q9>EE=d,Gdfӌj,!ؙ;b6+u|W	vF7D(ڄDS=29
\#^8,[:n)cS4t9!-itzCm2ݶCCr-liЄ-V6bh֭s{5Bx>I΢ n5*%}Ajp=~@=cGmL*dǽ:cJGJc%	Բ+Pr1le|@7;k|]کc,JŐwG<sc
ݔ6SFJkqGuAb}Ҡǔ(p)xRt|OF;ED54%kQۖ>	Lc=u,uַNq2?|6;e9LZ3nȻ,SouWga5zZ,lZ	9,zfSw4_d=Sw"揕9j}IZS<ɴ"0;o}
x8nl:pwQ%xmK(Ix
;f+}YH>^f~%0sxXÙT-KIMi-<GCeYwDe/'گs/_ҟO)
šRe%6M^2vCmL"<iҤT@4FE.XKfޞFˊM<[cX*0D?.pmAns1u+2.ӕT<i'4Ʈtoh6乮NYFFb|u@C
룛x
P4P4)\=!csv˔;܁3w>ŪRfؚ|&92)\<l|jbQ|Eo&̷4S{ZA>><rҊ>~h-|!7aaΦݘVQ3w)6
]bACX1a	-ܝċFalQ1&M,+ߍW*+za;npޒGϘCbV?--Z3PQ%2'*_oU߇*LŒ^The/%|y:ǹ)6x˂{qkw`Ra+H/.@v#JVr%wdyy;Ev:\q<q(oXHΤSV҅\=H
b56`
TMp.na;~rۃxm.PE63/s_#^w(sfxхOU|'^算Ǐxǀ'*A=r]gACTدPυ
KK&_3߯L$g!SKFe/PHE:w̦_QǕ{2oץHf{9`aHd
+P.NYZ S3.*]jssrnib1,Y)S3R&02@d
r[+0S.'2ReV?Rw^
^^'\"\g܆檑H
N.6L-:~b6Lu|E/-dd^^/݁By&yBVJ
U%~|~ԶTN!чcUKYwa[`Qݠ"j? 
9
XG^p*3PAd	d(+q JxW6-;̞i:p=QF>nb2mݸwn<{oq~!<$
*2wYbi0 
#7rUf:GȣFg	{.KX.
i.I QO["IO
T
mwQ(ĄJ@W&!% 5,R)74E~2|{7
A5fFWVm=$z{gos$;P&7*7]  cC1е꽎v<2~KYy
lenXh K{'s!A\@W_ V&Xo@~qv)tym~'p>9PK
   1.\*  A  L   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMCardService$1.classn0n-)`l0Z>BL]UDq+ױ֌4h/p
H!ǡcĢǿ}_x	2&fev-rE\v8f;j	iGbG{OlH(o{a`eĐs;juy7P0q
&ΥD
u]wk9X|hҺiiZM뢦5ufvYo-jvAlP^}
Q5
bX:cn<8;3OnCP*&uJF]mI[
]nX!J^ů(zJٖhГj|[W扳bN#%䎧ayJY6t?-~]N	@(
#Z>"xʰ"bVޡkJ}hu<+X%{#ԣkg+/-~\	gq0g<paC<i'ᬖ/?P9d4A4]SGdK	6,Rr PK
   1.\^"
  O  B   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMKey.classWkt\U<r'ӛfjIN&)Gy4m6&%)ʤ6n&dd&ܔ**@RlJQ]/AZsdrEK֚s9{繯w Ƈ<̖SZңfJ[ffk"ndG%)Cّ\q'(62W%R	k@c8uhII[c3IA1K.%T\$?S[jǲf[z,eAn#)/alʚYqz#as"*Jq?iI:Nܱv1I?Y)H3	khDRBys@ӧt5h`Bv|2xz]zH:&\T`Oq%cycY)98HҖNeX2z8G\!mTVMk}1SVVS|嚻ÝŐ
o

4ю
q?FgSR1(0/.˰۩c.M1uB) QÅ:>ϗ  ׌Iޱ.Uح[=b:zI @Fr~&*rYǖӢRɝɇA@WJ
4i@R>f%-k3c+$(x,
ٳ/40c}*`B7GD:UHj#0Nż
&CEG8<3%ƙjZ#)ō pks}Xrܖj<:nʊnsĲťcqlg1:d)aD/_4*|Anie8EZҡH53Y:lS:`7*Xy֧q n!ĵc& 㼲+27?iSA\;D5suZh|Ԇ],kU.=1-zv{$K|٩/2ͻ^NMm&@6?
T1$_XY
U18}y
/Arll-<m:."NmD(e:ǝk3QPn6=y}p3'ZJ`mj"
tͤfV3uUZ.ڧBѻ`	TcvNnǦ}@w{Y,lӳ}|4q:^Xb0eXcJq5ʧo3`sKhxmk6XO:`,=	yڢudh:mQ1mZCle~ě&B$R[æL:fb9mFj ifOJF]S)F3}."ڌd2 XJjѼXF:9UnXܟ~ATY-x&NU;I<DZ-X:S)3Ӗ4)*p?ʎj7ߍ<܄o+ǃ-[`I<Sej5EP#PxCovVRg׆quj~{ߣ)i>R|}wnVL"j&yL*GN!Z̞@(R>	̍4O`~dE}X:	% WRkh@3EML[zWCWCWKΤ|ܿ_sp<2EVJtD07;Q̙)9wՖwp!U^,4dˮ'9i{s(p җ@n'%>-r+o[d~1{ɳEh!b y i(y-DT dQkw]<E@"%TvTXeM\WFR{y ^eE"@~FK VYjWU "v畖z T#1Sy8~LSW_t/,dFي
+/ޣh;~3OQz|35
٦P( !j`V	x D}:xeqh	;D
tYF5#4+'ݺ<.8F/AJo3.897 y]lRn&ӊqAR5Ǌ{qFY:I|,MbJg10,W,ԗyϨBm;eחmǍF,svx0{wǈH؍KʈR
˜>SiR[6I\>9L{|6e?El8]pБNmw*<$~Q7wHI:y?f i˙/E.=XL^=&~ΙcܤSK??ZxE Ͼ禎)çWTe'هAkn}|(j j$%Z<R`Q%Ɍk$6=ORVQ-ВK
hp]4G,/^X_
|mX/RrQS{s(EZV喗eunٷGETq`Y褮
\JY
B`Reсz߿ǒPK
   1.\/'    <   de/cardcontact/opencard/service/smartcardhsm/KeyDomain.classU]OU~]sX>

Z;jk]JJZbʅvXv3(5^ibԘD{%%m!zS?Ec|޳B2$=}~p7SB$n4ٛU+ҚS
4ĮU7H GJGˎUrV
R`NUΖxnɱ
Y79gkaU
Iן;p;ы>
]@ytàT4ϭL۰Wm:@Z#Zt<1^U:=;Sx::Rg)؞goj-
F^ln!8Lxvù۰+ĳ|h6[
Xr#ʂrhR5i_qٲ|^CwBC٣`6wGQ1$[2DE+CSd"ziQ/s(1
Mh-=>PGN:3Nk
p>ӺsZ|5@+g.Te,='C˱SiP+sx'.|Ќ..zvTs\jq=$0 x)$6~Dv2Fo:4|ěSa@PJSzHH%$!_+?h2QH;۳1xc	ڃ|cH{;_een૭BGHyOQDZ`B"aHxMj^G>dIÖMҚ{q9u.Fe1r6#v1dQ/kJ&"C<i~!,f_JǸx^`˝!1 '8-*~	|zh̖[cL1tM=Ho8qj&w6G>#oHjtd,~BChnG[Y393|!|Sj{ⷬwJ馄iጽNKO#q$ PK
   1.\aj    H   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMSecretKey.classR=oA}p> d5p!>M^8Y{ WhhA!QPQQ{gELwg߼y;7?n\";A/^"
6%}ϷI/-9",bPףZ	V<
yEA}=)O(jWDxoU*7X$lMýVfM?/	A)u=&,(1"2Ms@8ەũgKVzܑѰߖh4[n̚JUrJZ{=y+I'mZO3c#髷|BAݘGc-׏:W ^x2Xsy>W9&gǔz\
"1k,	7piReWn~}V)zk5Qv c[[ٸi{(~;fN\lr\M.ckmƲNxPK
   1.\vʶ  i  P   de/cardcontact/opencard/service/smartcardhsm/PublicKeyAuthenticationStatus.classN@I	ZmYA@X"!H @ٰd3{ĦRJ]x(c'X?//X
%[>umwo09d(nnuJS2x<D

Nr7P	Fҏy8ߏbӗ(
&hhuc`dm)-AWWSewx|\L_C~ʰ֓*0}D|cX'n;6t)
w3yPz/fޝ2,PPȦJ_{&pA#,靓!RdSlcʚTOo/8?(+`i]E.e0GHy, i2>bqGFNóa)-FՑdl)&\|)'\|9/MgJZPK
   1.\>~/  J  L   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMSecretKeySpec.classU[OA֢E+-zz(PqI	4lǺE_|W|!Q|Gg
S}dgΙ3Ιo|*2a!!A;:aq`4܊pmTf[¨'ilʘ!c\fEX7lǖx>N4#8?ÛMr+)ni
ƞ5nS4(ҴW#ｲDEڮӉnvU˵WL]ГS)+atW5a ۃ5GӍD0sXV1R'n Ȼ=^R{&Kk)^(T=
'NY-5QAKSIlQ<Fp1PgP<BBAB3$Gr. KstTW(`,0CMnlG<WWK͹/g+ʧ6uz?Sht|WW\
2,o"]cO݊Пڭ:WU0fZc˒tk%fmh'Uni)ߟ@c)^$~d`[Т=x(
;0lk]+GnvpoABFښBiR
\:Pb(tqO
ndzִO%w0D6
Tư0MeefQi	ل{F*1^h6:Ƃ;Wj#,J{	O>f)f XpIĠQNi;}H#G~/PK
   1.\Kч
~  e J   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMCardService.class=|UߛySv3@
BR	%bhI3	]%IVlM(VTr{=-y{z굿yw^f7	7o^}w1J7H k
P@ewxC`wOSX
Z}j6Z@Br*}B%m)[;*iw6Ѱܐa0`t0VhsZaMZ-C=f5y7x;]mptFM. Հ4HAwHiޞ@GoE`̀gWXNe01кNo7~_ҧ2U?ʀT]w`}*<ڀIT|VRꩮ&4 5r?
vsȅ<W7I3/0f2	;
t=5~az`7fh,nODspoâƾI\MԎhĀR;=Y:hfQhv\gvĴ^ӽ"!OPhn(k\ƀUӋE,hTXm	AJG3YwJ?ۃ>z`~D}E5ؒ 	M=@W
VR߮ް!6`
N|~|b5ЂjuaDkdH3N̮m:@vKR&3qP^֑vti ݋>Њf)Ǫ<
N3`=GGb͢Y#(o Ɗ?ۀ\V;&5٢	= {e0-	H/ݰdǙg8{qcH##xk8BY?"hYY[ j.L7VB=?\%(~"lڄtKG\fcxϐQr.PLҕ\Wc}8Zl:~
h3m]%*Tw>6x;zʁ۴>^o
p#B(ճZM`TDA|R;ӖpTH݀uC(Ptp=pp?QAWkf5Ert7F@8(E]=`uxwe}8 2f)wIV.TkIV
xj
{C2`7g?mo<I)X5xd$v	e}081YjɅ-z5xC NuzWO/Kh!6]>e;boa4^$viRw⯔&#e+
JUVvPgs!?m*zuZ7Q2A`@{[f,*5
f>|[ǡK6Te=ЍnGk28zi!Zt#̀"$`@SӀ_(ڬn2a!pVPc#4B8fGb<{ib0YT'("eCKðY6?o)<1	y5,	oO_"TD
|'#Rf$j+kȦc<!
3 ZC~fVW`b5
0 ӱf9
ֈ<W<zC/ JI򶹙%0
g#@_08EY#`iO{FFP&M(77KCY91VAjS8KcYHXave6+!yDa?n
æ	(M4wE|u(A ,K_dM!yns(
^AYʦ,	Y*1X.3kf2iǭƯdj`3+aD /nLo:"4$_TmA=%2f;vo	F*ƨXۖTl8gN:d!\J)7XAdⲰb/S8P
b4`KX5Ck11D)䆷RTA {`3ug
hvӪM:o+rLĖq<i
,4|mm͚
]edfP6n1[Em#qN2ߖ1bf H=ǩ̫uka>4,f2!ρ;Pɂ.!-|S(pJVooGOŒ.dN3z<".Gz$v㢀	|30H
v,ȐzF	뱥"9b25	"ђXuO(F^m0F@	X-oN >;1dF!6v6[HbgbBDl;OO$H2{@*~`I->*mm%_.
v)Q2ߌJz)-hT'('`?fWl׀Ds2=όdǫ(ɒzSA"nSb;/u~ʮa}wvEU7~'y'		nR#M51TZ`[,brrM>OmA+e	ܹ,0bP%lu~OWoG'ЊXw{Xdٝ^+/=L7%Ԋ&N8ba=1#'l',
}c=``tŲ.n?9&I:,hG'(p=vM -N}`(KFC`O ;8re6c%i9nmhY='B4 		| 90>k@5¿UOgY;^6+t(P("y^go6G/Y9@Y"A5޼mw겚U#jʚWQٟ
*X%ꚫkWлWzME`vk+VUj.@n2#[~Η=G /ЉDщa?a?/604	8oBEC~>3h[d!q#M*ƾt}$R]f_HJOĈX؁x34s1WA
.B$16,L!)C]O![cM
%H(N&
*M26kqpa:0i8NA:$R`?ك1
B=ݽ=XtK i!&iAiDkQ6 jkMK֧KG!z*=ue_)(asV(lAoz;C,K,NP MLepz[hqy!`֜	{C-ֻp=tPF^A#6؃1INtBoYr|SRjܗrL5KfG[]u}THsQ4.k,kIJ4(m.1x"UR1 ^tH~a!G1vhQu%nHЂXֵ+CNj(jIs]dKK$+j.kt3&'yAb©a0+o7!|WǠfX$6'y:{XC)	zfnW	:-5H'jR#ɧŶ`.NKeLbcYh5	Vji
%팍Rdu:%Z^iR!H`rp_]c'R.VrXÿԏV} ٺ_+An`6ք^*ڣkni=Mi]_\UWH[ִ͑
ҪUFېN'9$Yk4n),hR!m 谇`cʴAN`3vDon{*V-۽d}{7=^KRϞ%j@YUגg~ִ\Ʋj_w/>WUV-*[VLDCPں*i}2.
Fkme_C\I._*r9% 3]FE3t1wҕTa8jwMX$hUUQT!%<ʲ[Jdڇu:Med`H7J7!$#bVp"zXZna0iK!ƪKw:ڂNz=_kz^@F
i;%,on^Rn1n5nWI@!5҃O)ĥ.=&OS:>C)B HI)a	A+Dd:sHKodvHڈϢ%BnCCY*~$'ᑴ5_D*	ÂYsgq
K+./K?oH/جEyDpq^f096/d0򹰡h87
4UMcZ,mв.#+*]P4*U^!CMTy
͙YPTP4*E{s6ͱNtfEJV}6_PJ'H WCz_jn
Es-[XH>*OCPB<bΕ6J-M(7A_K
MM1ХOT9W]¼GW=NYF	C' vtQ؆(ɺҷ!Clx͉~j4\<>RM&,F]&)3BA"g5N5YG3dUUmSBX,CnY(T<9BX{!'
#,.3ȡ5FZw4m\qDQ
C=<f̒GZ.۶=ݑ<	`!m`َYQ&"f(#*E8~MM5acv]4G-UU4Ohne-jT,)[\U
K5yR+eQ89C*O){UGAD9AkI
yR:W\ѷPոSUn@.䙆\$b0wRhɑc.vW,)*`αq~Rs5ؐ1?AfZ(b?q5A!~J3X`U	53082H9CN+fDSQ\-/BU^`9YLzBW&^vkr!u"ٓ2H閗C>Qnd0aTߋv-h189CcF(.72q1\y$C#<hkivy5nRA&
$C>Y~S tcIʑHN5dql
ڲy"aSm. D_#y(a$>xǉDX/W-wgmwR
d&'ua{
xQ@I `7Q
EE3St3Ezyg%z㺌ۂ|2MFC6-ǮA+unة3aM[ _
 o5QtEGW⡥_ۋ"B 򥉗WXNL/Gg6̶t
U+j<e˚T5YW1i[X8	à+_c?Wuvl&͐uTWoUu`i5CoWn	Xrm|MVYَsfvCCp܆)mf!E>kh?&߃B{ pn[fy?#HIeC~T"6ZTcF:9~RLlD[;_T~ML꿊I{y/}MaNehmlPyڐ#?cvo1h؀&?|%Yh1uE.cK%,집h//'F+ ?`ML!N~[p
ސߦqp}א@a)jɐL@&r|BmRi.SeW8FwCEs=fM&*Ѣ7( 4eM/k>	-6fT!7[e)C9OCGW-mq#?7;.mH
%'\"Y(;-WhŁ3K9?1Ҵ1BwSmN9js)ݴ1LZS 5yC$]h00B-$(qE#0ocS]@Im#v;b
^4x&
_~7.1GY*o>ǠWgt>nV5X>{xJH	I88ovzK|
X VhvJdc\ڍ-r_#iC;Vi">MP6":iaD}.>9ϥSN?~I]^6(/A	`c|>_t=u`eo.B3ǥey_11V5>jJ_«Qk^ła_Aվ:sրJmiGiIdgʭ-*df Ub9=v
gO#W|
?4=d~-;%\5s7G]tpsq?ntEo3x;*.7|=0^mw	Ȼc!
hn
?l׹]@y=̝O%4Dh W H`P6P39?I1|[Pl"֒PӁɃ:"/2ŜBZ
Om!qlGE52LcCï0ͬj~KAtS3j1s`yRD'߶̮C	1
&Ai.	t~3fp38:ΡpoG$VYN@9ܐVÏQi~:u~/LnZhqC%7 5d@ZL+^XBw?L5i#̦VQ<h:߉t]f(({dX#C?f\qtmmI;nK;]8'
oE#K
he(9?OG;EF
4
͓3w?lR#b[cn2 oo*7a4Jo*xM6b~Iĭ;w
Red
?__
ۺwn~:GOxP[,CJMa:y%n<pd;[^ϦSlPe
)ZN؏
:nt	ѤMOsr;W#RuGYk㴨rEf&;Dkjh_`
3(PfpX
\E'[*YلcԛPR7W+5~C+wwA}flm*ifҁ#+U}ضd	+VGC6w"
l1E(D@A@Ta8j.<y4LDWF#i^eL&K'MTlib,ۡٺL%Pf(@)CDkԭ)R`(dM^մZ[]nהYs|S]Ckp؈_#q2s Lr"ٯ@S;6k DmCA(HXg>Z:ɲq4ea?{߬
nRG?_iJ9Olj4
H)S*
݈W:@e}sr]Y+/)baV(KQ})5AdC"l8&]j1A	fYSֈX4g1t#_9wL##Z]w8eP&YD{rռY3g͜3h^Q"tfij*ms+`'道
J^CykWT7/Yʪ:r*+W2]TZŧ)er-*뵦^R:,>]i33O]	 Rެ9VivbVZ;USb]vP~'S%݈)!)913^yZQ،G;	r5e aDaIg#3 Lv%tݑLv'SdߙupˑlrJCA';C]\PYRR|E}zeMUkd :kOm<]̠mh}ٚa]@S-] ȜLj(ˠv;_3T>Q}p8%DǊUu4\XXz%o2jh\Z-5Ut<uU#,%|UQhҋʪ8|O9
˱ʲ2+_3ET=
k+~lZb\0yϼ"C6Qcqoc7$eSXγuI<?Qfշ͌#Aq(VJFWEPb1Gz(+x]Ge=r#$#\h)6=v&LJdFё<6jIS)9>c6L2Ֆ;=";ȩ83#b3X]r(MPNڭ-hT^b[R5Oiw~h-NC8`Kkφ<QobWC;.FWAwXj$inݹ!@F*GΊ[!#-ߝIu!$qƀEy=bd4BdK qYHgv".fht$Ӊ	-gtb-=ly5e 9KrDgCEg@Oj:CS##hp4FRy摹[43-WҨbU@ۉ"ABgHI ׻#TdގƏl籘2t2]~2.+ZDT@4Uwy):pf"VSEi,jYƝ(Quu{7DMh{hYC9T!>h#3΂cu
h{GꔎП2`U`y*tX,jiZgD"v&I#?HGḯ'tkx`:mDJ	"EK;^a_rFijNq"LFLHR+V(NƢpLt7,APN'PMI7ސQEAgc!"zNW+QUؚv~I#FgFpȉfD{"~e$8X'(hrdcOhpR"_O]&:"!|Ix<D1YSD>$ ڹ;c}=E`ȥL<,2>6Nt=aNTG[jc0vdSw'-
ҡ;ajtD]."'U2owOHRɱNgg ͖*ŖdR-;dshP'噩4)#GFTRNO4g}$Fu*FQ.AR5R&z'dǃTM6B$K]P$p}dl.ugA"dKz{Řx`s_8,D00 YI
bhr#"#LY'078NLWvz:c`&Ww]h>y5
WALiQPD6MG^`[#bnړM>.~ec3)l#%%{LQTSVHi懘vʼm
٬eV 91ƞ\W>vٜE<(Dny'oYC.f"3";J!&^J9C8y-P]>?꣑MhloR+M7isg'Zrts_>AZ?8cqűwƔ&X/XӴ IUEl")	ZVdp.L
Tpj(xl]O8״0I?ۨOǫFPߢIDؕئ`BFu;,rjXhP-V0aМpCMP)G_٭ףm@9,.LߕvnȡX7 "mN\b	)Cه@SY߿$+b	1?^ݨ'Gk GᝫE6
8f:o[+^ K-Z|=$\f(WSظR$D|;~I	n6h3vѥ{3tXc؍G9dG,06mi$L"SfayNipa#gZHi=MUSSֈ4w' 
t u
!zd;7hoXGEOXtolg\L(^odVݰ~JW/9T3-ug6u埋ha_^A+-ݶ2Pmi$	,T

~0+<m$I2ZbDJD:Ħ<$Gv%b(1vNQN/Z_&`!6`RD<wع8XItqMOĻ['NYGẏ4Ebn|{,6n9Rd'GZ[50R\ﷆR!׷v4fKP\uSjJb>Dq+y37Qh
Ў

=}yq6D"Yay^UibYE׎a	m:A	XGiɑc"@8/Lihj	JűAs,8kP;;akG͋zvUFgpxJ
h
~?o8uŨEb@'a(f^`^i(bv3EU=8+!Ģ
~Toϝ;tu!H;!lAJmx_Qi͑q-lOZ`VA	\Jҭe|I9C9   ZЕ~DY9r.KMg3zV7nJjW.筎Pi?_;/1uC|x'9Sϗs.ϗ|a&lc8ϫx)>_x>_xކ97M|v݉}_WKļyZ
88^\+{.Y;	T\6#P^2}⺏?%ޯ_#8peN`9.p=
#rUiN|ƈ0Q nS}|ӰR0#=
̥?ҟ9iG̼TȏSCFcӟU
pnǿ!o@aG$aS~@!
2fZ`={Bmށػp#\(KQp4^6+w+){%t,{9'7oN8)N-%<A^,Qr ὰ&}!$6"$6cxO}p
>8DR/"-昷W삟u,)&2>,KuR3|(BU>Qx;(&K ҁir0
<	4i*H MlȑrHʅRTK$̈́"fAXgKsrR*aTO$-^ʽ}qpr Rb_ E"-DAqtR<j!le'L[֠]0CK'Dq54e<΀i/ue4cw({MF2>;VC;.#g݊ovIr48xΖbP#%UFѳU`ѳ, =J]j҉(ț`eP)-JxlTTuhPR~ 	o@FQPyٟ蜢<JTܣД~њBl CJ%/(:1Qf-{H-k*l3I[kD[\y^ydBSP[~hy`N<~C^K_<x{zƷ?
\8T!m1& m-	وs sAVEU~SȀK
Y{HBǳ)
p.2چ<VܝZ_}|mB%(5%De
$+h*!Dcl
X+80NyUy
G@L-?Sw uٝJ{@kjpπN]A;QjtCc^uZ}æJ.G5+C4?aI(:ҿ	_R|[L{PmRX3xc;YwD!ˇ6ʺ8V<11Hv =I#=
%8Ri',vA\"^~L`LRTBɆtR+fzv@
i5iL:HCv?|$)p,P+46PGn`3''M&!3M
|qc3P̧>ơ(שܸ(AڃI}0\zFK =yȗ^Yҋ0Oz˫TB-:7Q`s-Q8by H%&#!߉ $a9},	D arb]1̓D=ǐe?":tE~jFv5Og6ͮߺt(MpsP}?LA:4cG)R#H,RKjHjLǯ- +xe&Ѹп%~>*ec'"MSnA[ۑ"5ke͋J.aR ]G# GNYr:0_΄(p0Ȯ4KH^pPuN!w0$Xë/	^r;1U?'UŔ4.#y;;w2z0Lr.L [."lDMc{rЭoD gTJ$Yia IejaM]~1Vf
~984-@M{82DU9L+]U09x͗sBJ
(QӜ |FjNU`Zr]|^j2kbtu
ekrcgJ@X:-J1(Xyd\rLPn9r3#7<yu]|K ĚJ&pլ_Qgl)ұGOhRJB1^lI&'($Xp)*Y-"/'PCElOUPºџW
R{(/9X4hi{7G͐+33gC|8Q>-frED%ԃK	q,!Ss'a-Be5+2Y4u5
%5=bgq$,2g8t[	`z9LBo}Xn`CC!IƛCK&Ϡcß`w`wd'm0<#<ap_cIHYsbn[%MJjB$b|AP2U'R*H*"MGPe%vNRN>أYex1"vx`Ik{3΀{g<Y>!w_QJ-;ꏠ4{21N8J~&O@+(wC)IhAkX)?kgU~`[8K~._K
V~_7`;-	ɿ7wmWOOg&a.=%/}
BR/aq 	9 BzRُqh>A
t}TAۓpP#,u?(A73)7bD<)_[6K).\D	B	BRAT "Dh򰽄[5_cOVg{J\B؄Qh+>v=,1DYz{UhDA#F<0t[t؈ލICPO~.s i-(;|y\jA-Gsh
,5|
wC;On=|4l#a3τ(	7qp	xO4Ҋ(hq|*l3:(D<-[e늷"4w"eq'ͣԢ	j) A.-20B*J+5	
p3#0(pjUr<u	nIcx|4(qAXܤ2a<~rb`'lqI({7p(HkyR%[%Dɟ,Qb(?,m]l
bXRnl%ÒfiɚsЬbl~ؼ6^)|&dY0φ|\8C?|X|!!~^A^Up
_^5+^W/zx7o_&73_Rr6`J6b5,ZBg*z [wOwwﾉܱaDn]I'ڂDY=HVH8L6_DCwPޤ鴃jQ;Xt_RqAWhmd;5--3
q:v[媂YՖ;";ٿa[0x
<B&=f86j|O}lQ(R<P(SI;!p{d͑Ej}g,Ѝ0$䂇B8OVy}Qd* /Wdoط%R=MCVGjڲhHHD,S99BG:SBd)-`4KP$era/[ 	,K%NIC1|3L
!hF^|7x~@I8ߎXsdkB*@p	~EGw^^ʺT!CrQKoh8)",=8:1b#OQ[!>ȶKpuhxFMd6k!Hr 3(ӑUI3_i
>v8	|AC"M%
ˉijeX<H%-#<kp)XT6z0&H7è	7@Rʪ=Qs{1ڄ@ː2U;n'eN
>04	>Ho$}42yE7jffqQWw%%\J{ĕ
ZjKrƌ˩L=h`&V@\9G>Ƌb7^BI2ݤt?1nl`32_af*$1jOP}38	f_V; I~~"UI=ETtVq1PLe8#J*+PY2XbSC}z`
sj:	IEb몲ƻLˈ/SGDu4qFFS5b2l8AL!ҿ7H _rXu\B#yke`ZGHu&G%tRN#QXuiF;E3XtzpnݍrI2<i`
~(	4!-wM^vK+V#ܯzDf "KY.E%n7ooLvp嗸C1>L6'~3,&|;T*W.ݧR9R;,WVJT'J[,,Du0m-q!	#U,jFĐ>6o^imRL`rB*vJ%{2ݷ~E1O7lyfY"稆@YO+\Y㕓J+>8Vir% iPJtztUBp˔^Z 7)e3zgcʙrY|x[ V@|\_(1\,}	R.ErU.GQrTdlb.]Y;Hpn8FXwWL1pSTPΆ	@f-`Vf-`VA$8Y%`Y:*Xv:
t!tZ [aw057 RHP;m]miy*a
DmrVVp"UkȈYӑkLFnV-F.Mȷ:Y,*VǑb:}!)o樹		:2XetZ+ciVƦ10+pbX%+ Qo({~{a#9F'VF\&.? sVwYk,Gtz[sߖ+QW|z	CZ	gPV?.aeSez(oD-rZvgS]R1%0勡R2KZH*QZ!fYpD;3vk7[Mx2iXJSf7yRy]N{(Vʿi#uZdQLBEWcYOYh]l52'jO}Br@f9xXex֪f"X#I.3o[vSPv_mD|uQ_>em*5OZj<"vXUFrnFW EABҍ0FiH0O>Jbu,PB9Z.K{k	ЄJT!TÛ)p)p
9vJBƆslBoz1VuL.Gwۋh/N%/i#ֻ`Յ0(,U_|#O*u4Agcy
n@Q༛!/"s&C%[F$)dݧf)
cG8BĦb]y Aaa9#vvFzExWOգʲUOɐbf>Tm2
	8I=
ZXvA3nz:\#l@nvvX~S 6Y0C+E;;Z7rDjZJN{ćwI%Q\W`MA6A/ΝGlX4USJQdANGYW*Qgpz,Ro@p[IB7ڹ;\H/QԻ{qF^a{mU[k!l
`!\(RDC}q_]`!::7ФJD d
R+ ߰`t)B;W*uNilrVWp~~\o&o+b/
B/"_:JdAI
Qjn)^Tt$i`(Y>Z}ЮAedW_א߀k7Qkoh4Aaq":,7a\hZk	jPQEO%dB訰б
ˉ6_pгxtѡ'AU~Y媉&D%̿Ě']iߞܟhi!>B4}hsDM_f+آԯ2Z= 7]Aء1x\y;XU/بzF6^PEwx Z,BH{T M"f7lR}ҩ%<I^O36M3֔SOd[hуtexm4-
<@6*"hf;-l@5ǩ%TmYB%es+$ h < M]b[q	9$	t#w^6a&3@
\aЪ@ת!E[ô%0V;6ਲ਼Ôwj1	T&'X#ԥx'VM[ߊ -ب0Dkڤv!w&L}"%Ә3>42wLՊr)D^M>YӊȭI1S!\ZۘL)
.m0-rR_B'g8"IDARQ1s
S/m%|
IHJkav*x$V`֎2iN҂ТZ:^69&\;~yҶ>W(gu 97l	4g?1L'r(5)g=
Z[2K"LQ :Cb`[dlB>H-b%?S1iacoA5$(dD(]	"꧈(0u0Q*`v"6X݁봻4pR{v z)׫
RG(rֺp(:8V'FRxE*D9ba"q+C˒_ZᆶhZmTmAjD6
\S~K{dYQ'´h{OAk=a[/l$8
ܛp{hFؾ0lSI,yzl9@T-mCwjo{$E>Ҵa)jaL׾<+(Ҿcp-kngݬbkcbf-!ԛt7v,`	.cԫ4żj*%g-6k9ҿQDO=L8J
S,8('qDX

$8UPl @w1YƛǩZtA|QeTנkFOVOڏkݝ
ˬIs1Iy/z<6%-SRWޤ{.Yo`mNn^t>ŭ.MYOA}Y.HΈa+Cc6|tNG=m)?I?+(t,L
m0)Kf_cO 
\[52Q.535ZhѩV.g"QGkn%K=+r0	j$ܟ~uȵthoLްƯ~2OZ
^$uFoV68[o2}=_Fnһn[	ݐ"uST'"[V$,iVGpRJEp^l~	!nPz949VrHOx !C^21PY9*jA^Y?`FBœtEWbF޶Iow`$*
2:A	Iw"m޵
1yNK{{(^Rwv8L%1וzvٸ9'=Üc4[ BR٠ <a~_'!]K _
!Gp~9\_+*O	<_?=6xF^oo'm~Vc9Z{Jp3Y܌wA.U5	̥VLM(@p
SR-duqkc	&}ү\E,݁eOaZxx;\gs
MbC0R߃ ދzIX%BEZ-Ԛn!vVL"xC|?L~	J?!~m%Tmgj
_|_|G\>,n2ßJo3Hnuew%l/,VZv8Pl.S2JS2OJ3bgT؞%JdH_(֨Ҹ62{O:gaHp+e`gg4k>nݑ쒾!.ѨWY~\Vi[UYNU1dK\#W<q9q:1̳)~IbPO7<hP+*new{e`dHF!!_jР;T?Q|J?pܣ
S(S_\G_~).`tƺd6YKa.-tilKg4ڕQەŮve&\v(vk"^uMao?r_\=+O\0liktk*]JeRLZ|0\=]5w<eÅ.`$?~HǲtwbBA݈eo@1S[qtZݬAqiUDlH"b,wĻn;~I3f~HGTM:6=iX&rE8Y=ޱT&[WWv̰ȶ׭%Z;YnҞBd#
H҃F%Hu|xA)/KgW=]'Bƻ ׵]+`k%TV	5_رP`na̻B
	&gV	 
_8/Ydw,mʩYF5Cʖ8Xŧش63M♪ԌVmУܜ+ӕ+lJۺցj.dp4Z.\]0DXtC^k\!htZW.Q®\s:uX!Q:<O8GAtg-=
Qm7QƦ9&v0FiNNݪrGN1rFLAK9"{F[Ջ&ə	rMDC5(nJ .I	}1mC%`(>:QKؼhhG
{=7u%y1y\^Oq%szF~\/
Lu
9נu	]oAm+h
Kݾs(0ڄQZ|
-X9[ǊYG޸+	\ǩ~#\B&>)O!
/a:{
C jѱCG'&<UfI*+C3neO]'.M7[ZWGzaș8&,Ot!uppNt	L(qrhX΂:XhvGA{"w{L$8}y`TExcydHB7I&rD!TBDeEETPVp(BD4r)rL(.+
ި
~2	~|}1U=]U]U}U7	jGh6м˝ZhPھ1P훇-fԖ{C5vel$cOGƴfuFf8+YWdU:B(΍3GjyQwѭZ?I\f7^⤈Z!R	-C!?0:C	(`z`L9I	nGmgC]^0QëyXmKkݦPӢ1CL+bZ҂==
i:6ݼIxQS '~fˀrOk}ꙮAHi0pd#v%
̄aX` nBσ o`QvXXH*<rWb^f.ar7Fm\6:H|g£`KնPA 	rFhaXb|!4hʹZYUZ4+3JEyizROXDPrhXD*!̼)Հ'p5cs!یZ31npNѺgiCJ!iVB[}"+σJ3QݤX4?xAi7VC<;ۧtT婿׈{lFlu 5c([m6gv@&v;31+Ub`}gޏ$Gp2Nb7˯MΫM.5s_k"D/`W60aiS=E<e{˭żji/)LYַ͋ҾqS^Xt6?.=~}4yǐ}	ĘcWWp;?%&:)Ni'aRvOQ@i<G={ż}2V1U'ܟ&,r-
ZY:X&,+Anz^C>"
\cVR1SڛSKOiŴ%J_ {1jmzYY]Cֵ#8cpI{PA:4HѮ(\4^u}ǵ)&۔H򾒔ry:EX0TXe}Dc[ymym]f,͕V&$YYjeC1	trY͠j#p
`V!eKv:cVGY`Up*7npG3G)i'oOh|h֏,ϩ𑹖5M-!"*jtguèX(0&C2C;3Nl鴱Bƥ%1+]YDPn.AA)qPfo Q)2XL4,SIKQDM))T¨2!!q/̎ʳG̈X[HfwiibFIH@ZeeF;X(AOk<&y$غ.Y֥puJ(-S^JߚU5vYW55f̈́C,xϺ[s֭I$W,>	MfСt?,&\
An
jz=1x(צ-h0{PvBSRwiBnֲNnȰAchnCk1ZKyuc^X+"kL+	ݔ^grBkiIRuH74[h5xCy]
ȬQBT4Jcp%)ڝ<G\$D!$H-B9vha<+m*dnV5'a\jAsC=-Q(oRXuOxqW- iRQ}[ o0΍Д$J-$GkG)EϫD&|."q&EEѺǫC`[GJܻmMQ>@:Z@w(isOayYgY	qk;BvU[uRov2&J+7>Hj(CNЀA~hLgPt<ӇvJd05uh'rh#;3У,=tS&`A`s[`[B`+[C`(C`atm;ѫDOsZ&ﺱ\u]/M۱D\T1m
ŴߪA;(kTpE/<y`ohuꛠsr7܁t9؎qPi{;]@8`lCBdnzٍAryyY>w-
="B[[OUX=+I]ǷkMwj[*}׳eNv?r$¹(C!+8rQG CG0A1048F		cef`Y!Ty-J'ͧC!
ޤ+ZnAqi|Z
d|W/SNHD"!
^L*aWW\.&	oW[c*3}FØ13#+JIxz+bNX %8f(ނZv=H:kRRJD_kچjI}':a[?3u:`[rbR½)<
E^̕@BW"
E^ZWx~IX_NJG*c^,߭P4P uٴ;#	7W@pdGO\8%y_LQÌiQ&􍚿X!Lp}(	7ޫ3(|Jh\w7VS;`
k>gpY ||~BYm>G?2Zϙ[> Ҹ	)	h|v
DN@]Iy>s۰#jxJѩ#khm+HWU5h|=qW\J)-2BU!
/Xc[,5C=JAOWtEzՏy|m]vFo_;Xu>,>bKVD:C"2}eoцm?@#Z77gEMszż9VujcGV2DQЏ!xJ+,5
_EB㈞2[ӾҎMWU9	P
[@A֡7М9/0ddm4_ ]ř!Ϣhe/i:O7x6nZUu][4@m=ѫoR}W͌i!2?~jߚH*~v*Ӎ\j5ԆC;];e_ʒ*!۽ZOu5BW[UYUzcTe)z*zzKUTmȍZlL|Ɏ]4¨bE1DI&jAP3Up0[z/)um+m^TIһX$Ի#{$O}˴H0
2~%VCvJ ^Mc;bs&c1|p:gt81l/pc+YI/}џѝIէb1vk3Vr"*suөZUzܠ2ILP&Q&sW@C*ksyyI~$'PH8}KujkPvb8" [[W'S Nv:Ǝ@
L`gA?	san[}vKXivb> ^v8lwwNE]"BvWjw9"jbW)9j{asAb=Xۥb=Do+牭P!#[v8bG1+{'ž=̞ko_+/WγF}}n-g7ڳ}9*{.; 92Q CpSj1a,17Ca_0YsRQo!$xY1;~a:ka0dl_3,a`aYK1N2Eu;ݭo[#[^{#Pu
*>qkyX~$
1EHl4ߣmwBjA#o8$Njz֜0*Er:c T>zz_> 6\O!KlhD1I?
`}Jp91WGkrN?O'D&O]/d
C<JDu-E7/'jOݓf\Td!CSrF*4_j%4-eA_b7FSӏ-[k;ȗ+<?[Ё㥴IgYҽ0(Q+܊UI9ɑd=K(>^Iƅ
jRAir3rP$]Ӭop4ߪ*OMtx7
떱}zMeUc%q^+l'8BIH2+|/:\qHSsvԚtq8_bΑ[yeyU޼,Zpإ^_"Qwx@T7z{HKP/l^VAk{5k]p${\b?؏v%ao;pFhomPmogmp;k{'d[Xv5'E~Jd{D+9Qd8"د1~UL&fQ?&ٯ~x~STo>$؇>ux@|f(?Qf%BLK_\}y1q1˺K>Џgt8:8
̏y.Wgj$a%},R!_BR]iq2ApVG'"v|
&*j^9YL7l@~	!`y$LW*?&kY(4K#_7q')=w$E
d
Fj3
1볟 3txV3ɏEЄs
猽D.h:)>mz7UrZoML߿UE6e÷)y/OcchѠCg:a)^GYVy?{[޶˫w˔B&;JcKwǾR~'N*8N:4t2֘.tJh Z	%@wN`C//BOWOC+鯸ANq@09 s3
װCu9g$Ćbӗ
#h}g$: ~}ӺoV
e֚1e@w9--q]LA[*ˬ*Iԩm(zEfԏw*!Rbr/eShGT񒾑?ثZɋ|Nc#3	*Oa/f*XjVTJLf	N4p!Ι	m^(*8gAl8CA0SRTPXjg8T8#qLouFvgT9yg,ꌃ3:IfgVtAQTh&D硙{
:6%$'թC\O@m߯Bêf_/gj1w'(kW; /˹<A6e#۬O?~4rsVET+4OORnA
J^gs5$;Bși_P]MʙQg69ssssHWofPM{Pb{\_SEZTٌbQH+iC؅j@\F"kjm9R]UZeLwx֬IKKtoW>KǖMwJ$j2vH&okE`:w ""]r,l`s/Lr+0Yw:+Y
<O;k06Jy;EA:kVш4okhmJʫh(u a'8f):nL0jzZp3OI`sVhPkk׮
7#}S.9~V
Pff'ښwwc1o,Һ<vOv'2)UŔ_wc{#AI<%w킩8_w{̷|p%4VV E.bz]{}ʔc?rˡ}OAZtX%0`,sQ̗I1_u?xˁhcC?8+fm@9v8y;B{=|cp1t>2(\|W8_tK|b-|`3I_a7:+/8!qI?j:ɕUxdG~{'GA50ܻ9WEp]
ߔ
P|<kW@^xٯ)4b^zuWR릻ֈ"Yߺ/=ßOvGa:-d?+_6Dovtm:b		GX<ay,2ک\]H2<hS]INR	au$Wq塌Rvѓa64tCC5P&䅲]	t5Nj
焚{nDA^T։fIc"ma]M{XY^p1uњx3 fӄVfx&v@Qed=%:hlLO;83r9_J!vifw(=hd809VbR ZД{taRRGkBբ"Ew<<ebtou[g[#f~?Ud1cFgBFwFBy((Qhj١2ŠusCgP/
C}P_塳am?l x>4`x5T
CCH\8:>
BÄ.:_4MBP(]CEQ
A"]x
kxUg|)aRSM68ѕ*7oh6pWent-Eg
?o`uIkP͜~_;x(y_W4W)t7pO>.|/eyx{1`cE~0t_Fe
b%SlNPP1΃6CS .64[4(]
BWAtlz=74; O_
S~56B؟I1k)NA<NL8J]C aT}@B1c8׻NH,T\7
)4vjmMiϩGOCzVlկQ(|QIdlg6(+i/3e~$Ҕ7#&>ZUA6r6fh2dLӇvf;l ud\Tb&*R.i[$DױP\yT(*e
%#dAlkaH:0,B@C""L}^r:al0""l0alۘ#A؄Kn*6#2T"WZSyD|
3mez;ȑ;#$DX$Bؙ"DX,{ ,vt .@CނLyj{ˮ%@ODx6lN)qrnCo
sϗ3'^ 1GqMGspxf9DI(Hɹ/#N DR9e,9O^! *"%eUr«^Ļ2y9yy<p7r7QaKfYMh|-r6[ӄn͗Z D=wWðPH}Bw҄zðJ{drNBKHðT-S߹rWB+	Z%w_By#ĳ0Q+axh$)axHAh;YER>NQz
v䇄6˧=Fr峄BOð$0ԓJB;qb=*9N9.U'Bղ'I)yq
$>BϨ='z^zAN$G˗50LJ)Ps
%݄?h,#Td}vH^JMUmEBä(oj(ax[10C
%R{IR*aJ>"IR,a8J#HS9gJ>ń/CRkEB(iVelL?=i0*~~	㤜J7)=a#BP#|&wesB0$JIsEzXXvBA"dSP-H(,{j Ja;4fh
W	eo	EXVD#n"Rde/4QkBf,,rn)ьwX47jA&*,Zʋ	"=U.m"OW-*r[g	i,#7щ܌(,7B4,{J
Bݸqr:3T|-z*V/rkgqȇيY&9 ""*UhBG#C BÔTWD!-BJT/Җ1Fqz4;1Fo,˰&0J?\(HUbقd)%$RN_rd_bzJ%ԛW1o^\Z~sL"u3Jv.f7.fϑnaB7sUYn"4On!tGVV6OBeBw-d]!>tȻć݊D=a} eBP-a+*F,[	PX&I/Wz@1nLh
KQ!'jUk}c	3	=,mBGe7Be!
lFe6+ 6B<tlU';*ͰM.$]CA(F}XT~;÷g`?{~~~~~)?<7M];%C6UDG]M9#d(Tvѯ|$Ut
(ʢVfaTzX$@YKrDO6璮\"8F*B|-KC? C즄rTf PdW\BFrC-l~T6 ThrtV}+ٜg3zEg.ʧ)V(ϡʥg՗[ş~6-?,9
`s_w7Ul'+-<n'獜l.$cJN6;Yź[5Er9{!Bl;&kN6?TuUB~WtIMl.*g_=r5ʣPUa-mt9S_xXǏ:TCN6^eF&y͊#Y5D'UG'uk\t`MNvGx;c#}bE-=݋x?/>Le"3Wyrz͟K5.BVε4Xhb1ߋ&~/hߋ&~o</eKΫp14Gl	6aX~$}8~8X|R|^)H.LF|8~H|.OI}F@.~fdF?[0q*c2D,/cOX32|IYͮ\Z(_bJaʗK1nryrǔ<4-iZMCoI y mgؑa.Kvc؃aOe؏abX?h٭.Wyz	О0H?PK
   2.\%e  I  O   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMECPrivateKeySpec.classWS&M,(P4m8ZibJ0MnK{@CS779qnd@hM{νƶ9yiP>s~y~^xǅ*$eT+z"D,TuIfFTB1-3JxG/}Q,u:LGkV'Í1%x-Sc3w$8֋I5I(OO1j&]Ie\k1-\514DCUυz,DR,cX7+3h1(2T˯,E+90vxds3lqWB>Y<%kӴsΩ|q%k.$tIK3t	1x\).3NUsa-dl
$Qj*uK3}WO9ь	eTABH+ubp^:leai%7}Pn]Go޺2d)n~NQ傄m2U'YK2]FNv.MF;:#9Љ%/C|9`=2OS`X5;AO	p^"{؇=2" )lf?O~1HT'w6*Cx'Cһ*"	xD鈥FC"3,@Rb. Gx:ｋ >2\T
S#I&BDFjΕE{y.܍W8BqzsED)ZUʙ틠caATvޒV/X#SvnRZFVh<dx,41Ê2d"X[ )eT	|älր։ʸ`B߸O
$؛ruT0>E)$麣xw{+:$wGd<raߥꪩX9GAn)|F2>ˁW epq35]=ā~}Ѽ Oi:Jb\̳2 ߄8G/pZߌrOIxAƋGgÔ%r@b*O[ɴE*ԂA૔8W,^#|op0ieQڬ
}e2zqY
(!`xjfĶ4P35~	?):r#Hoh	hpnrм`]6}.mo֨%Q,/oFB%\PvP
))U.JTA$b^'Ә~b:$0TtD4fDx:+pQcaX%٫Z#F4U\#$|H<<1!7NO9=WSMM'gg2ƒj)[{thS G4ژh,z#שZ%OkAH7I"s4:ХQZU%KKDy`[`7 Һil󛐞Ƶ-BG9l
Y,oiKY\_8]fĺp=
Wp#07Z^Ŗqr	5Ylǭ|yk]o;8z/hh@?Ӄtv>Dw(GqƗPpCH#W8b	.DYqdiEˀX+&iU%V㛄,.%
&pDw+sr^WK^~\Tt(\BU?y;Œ{|QClbA^r
v|?1W9़ Mb <C:N@$d14,R<{7%;7Q`HN'{Ih 9LHal'e?<ڪ)+?q:,Y<9uta(Piʟ+,lHx*(D:򔭥@S^a4
٣Ϗ8 8WY3%;xUV/8iNqݝ]>KN?zFH6FT
>v~L}Ng6~j
?=+?JEDvL,y@+\k<фCV<=e3l_&EʳKTXOU0j#Io"KįoD'VABa-D9to(젅TG;PG"\eSvJ?h?PK
   1.\    C   de/cardcontact/opencard/service/smartcardhsm/KeyDescription$1.classSn@=Ӥq\UbQ@Ti"!R]MQ3Dc'?$Q;VJ˂Uks﹞{kG a3XژEa+u(~⪑vc'n<:1A<tᖈ}-GTCpp$b܄cypnGB/Bxd:|9ES9S*4ߚgZjE(1dx)LlcKҁxH!|ݐGnWycД"Z+mRX1)4^q5pYP:q0d2ː@0̷e$a_Rn+\K9}O⢧MiU>2щe@jgqZT݊"!c3qgKktU`9XF#
I#2Uv}B	.=s)L,aPm'xJ2[DK?l YwAw
nP{$ˤʟRPK
   2.\UD    I   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMPrivateKey.classTSU.ٰZii *ZEH$+nfw//>/8MnhMu'swιً?kCLD[W\'0@w[	/#ے4 n7[FiWڎf#SoNM7vj9*{*$ ڞ]-3ɚmE2GƜ7^N iI_gwPVڍ/p]ۦrqE$FpM`u rL&d*FfzfQ8Tד2XstC.}0ILx'hohzj;U1DY}>bh(2dndT,LwL׺'ɪCf@z:_n;	F[}_~٢[aKEk7,7I]~LzTu(DsӬE^ 0˲>7˂C a6j.כlUi6=yfȧ37_#F|sW`F$,rC&H+0Ù7
$]
Lf:H.VF%hdn۳|:/@"=m]j͏- DBW
[ ~ D2\IvְbJBǸӉ&2f-@--Y+JZNcҔ~	ӘJ<?d)vRKOЅ'yAnO7!XDcdHb)go/2XcX@ef32IfR|	:1Me"6k]+IveSlEewXvisL(N=T
',PK
   2.\&H<    E   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMRSAKey.classRn1=eISZ7JTC&PQHBݍI]	'+HY'Sygg93߾xC'/tϏB#|ãw2LsK=Rq I+8^)y>G^\%PdhV#a$q38M*P:oH3Z7[u(aŹ>h&
^2LbD/f[̰ٗmb'Z1W__gvU:x2,06"4]1Ld}tɰ:wZ!׎zaB<	~)T)w"P>-@n+whCX2y=3ؗdk-.^K/zQ}VgFydH%TAgjѹNYy.7m_din1IQ}el6mIuܰ7qkNQg,~<wlcK6Lw	;_#,Ce:5qSPK
   1.\A {S    F   de/cardcontact/opencard/service/smartcardhsm/DecipherCardService.classN1Ƨ,"(*Ջcx"쮁@XBb8ZFY]2ы7 1}>ziblsDARP蒭A!306#U޺ozY+UH@F0b^a2>ܒs~*KFl!dqT(5Gźŗn+gAd˄l8}4Bsl`ޢAV60z;xkQSXHp$Pjg`	yPBB&)Ikiˣg`C*RIH-Vm/$LPK
   2.\Y-  \  P   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMRSAPrivateKeySpec.classTkOG=Ǯl7B
)&401Ǝ#JֲM@5C}|鿩&-X*U@~T{ǮiUv-ܹ̽g<^ w7@PGDjEZUf÷j]GZmխ<i}ۗ=hngmFۨ_$C`HaLq>sp!S&w83WίeʷK\\pȮUa)_5,.qLYiڭ"!n/cQHJl6QqI`ھl|R@l `W
L
J{.}(uv+0
qvIVH3Wz̪3)''L&.@ЮT&+ cN`| .eUz10;L}fPMY%}Z4E)p>6fCSysMǮmqwݖ@$q8$kGC
*WEius=~(^saLkLsW&Y$JDZ907۞#&˂I:rz _PTѵF&ddj| g&/0\MKmLW(*]EdHn|{2Xl-P	*>Y!EdG>ٌ2ootk*TTb]l2^Ɵj#F:Z.uRn#̖"CӌGAF?]RAװ8DBdx
WQ%ӣ<B_#aXCD=?ԇBrz*
l\$4%hO
o*j}5Ct[\)QH)J`PУ䉄ƍM$DP19j?V|	PK
   1.\_    F   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMKeySpec.classVsUݼ6M6Pi
"(I-}PI	ntKewS(kώ3Ua%gsn4]̇8ww=?w ~	A3ꜪR^975k6CQ2XoVB?+jrV5[)%>W,ݜ34]iid$Eب>յ"h hSf^
(r>Z6,1쎥k
e%zӍ&HhC;E^p]7?)c30/Xz\)܏ݭ2
vE(1I?k"gel:N-˦aOӆEJ$#Ks\L(){AõJǰ!D0FѰ9}"M|hBG`?Hpro68ȗ1t~+InyG%qmfӉ1Lg)rɲ͊f9nU;)Ԛju囧e$MEz_1dGv'_|cH0FhGk%p,!-pV930Ah8'"Ep32&pH96jbZ.<s.ʸ[:q\qhJq$Ɍm|e0ӧ*yMNd<_a"U]o֖U(EPH)
N%l8TA_SY4]	|z]Sg]%býYIva7J1~ 1ZNUZd75o떓ԀpdS
{<x;|` u'+ś,[Ȏ>E84W/hZFkO/cS-kIlyPn@oƛ>H|-36!4$\h~&J(Go)=^D,阹h|4`&,L9<PNP麠Uv%?|Hzf͂wN!}n$v\&눅Bs,UbJ^k=u=X7u51x%˱Aج ֮AaOdoםϪ3-zxv XaX`"Jc{N}^nuӉ=gB4*Ag޻
yș-Ф>Nއ2FWUXtEl9_3XDf'yfR5I!.]ьHч6!|Bψx_WE!oFhąZ

U]}4}ZnǑU<dIVzO>@%SJ[j@S3.W=na'w PK
   1.\\    J   de/cardcontact/opencard/service/smartcardhsm/KeyDescription$KeyTypes.classTOP=o֭A((u*%.X\D?򄒮%mG%#?x߳Dp/M{NFECain9Nl{pu50aK<rBw/v=H#àk[rp(KɳP@7h}j1xrhU>g-jmzmmr'&l?i00$77n|T\gGQ\C߮gda7p!3n<Wl\)ճHԘ,rY{=2"bC]"=gE`]s}llp(/BK/v
Q{m︤6g۾7C)R&m־ f;vu+h_vΞIJBVyX3P3+C9h⌲gZ4'Pė%6?(,B)^K䍐B'\9E#yf1 %zLSi5~ rfVQn@:?5B:JL9OPW
P[ЬtN-xr$O~-HgD&;i'=Ba[M5"J;Ә	PK
   2.\2_E    =   de/cardcontact/opencard/service/smartcardhsm/CHVManager.classuMNB1Oy?,)c, 4NDfrGKڂ5.ES&|?@05%2I5Bak
븢
+ݻߒ95%mIa&e+5\oR
M^N1y`݀
3V8r<? LWOz3*E^24.~OVQi}!#< >S"b7Ye.ّ|O]1!t_hਈ/u"PK
   2.\
E    F   de/cardcontact/opencard/service/smartcardhsm/EMSAPSSEncoder$MGF1.classT[L[e}SJauXҍ8K2ت-L&N?Ji9#1>|E|3YbQT|hK}]|1}K/_~뷮mxO5@Ah2mvѴai&O;ҾX6eک$N%=//ƫUvOI](;='Nl(t#hFD h\4KF[Dj'zgT@b$Zy^4v]N%yS3A38PՒeͪ"]jDVGhe+YvmSuVw-J]8:_";j;{TA[:U16T
W
Lv<U0Aqʴi9<]k0՞(ΰ1\*'9iOsKY4ceoj2!I]70,2++OIJi eQQthgXUwn2nZBH
Qz1LYsVёh	Ъ`mSN2mm`I|r\C@M V=d8d#rC|.<AqhT|oƃxܳMݑLC$7'ђkut|9<A]A@+Vю71@I;tKc0țI|eQ"]7px0Ox<:y-

hqjTqu@v]"&bZLcZ+'UDDHZL[N}e)j{׷t;
$ncʴP^Sc6po8
W9,
yK#k8|>#1g*:f@Xpp
+Mko[z~O(u;_q7py|3]ACf-7w)kgNQ&<j s2?kpc_c7pv:ލm2!>.#0Y=ܓywS)<|PK
   2.\UDL    G   de/cardcontact/opencard/service/smartcardhsm/KeyDomainDescription.classTmOY=("
˴UF]ݢ,E6$Oeg m?xLi͒sߞ{y}_LaUG2!p捳XU߶VH7|/~$1]D@7ي\';nlWc+J+qXͼvg`>q<^Fn^W-Y賛kq%Ŗ3Ћ3mu.8$NɅtUyh`"Wu{h8f9o+i$0bq.8scYa!Ҷi̥U
c:C[w{W
tn\N22ڒ&a"x-6X_z/t\ͭ%Et,887RQ
ImP~C5pStة
N+{`g(b	dfkI|%ug*USpBOǽs_Ӟ2PL*Ghi}7W&k9'OtKcF?K(N}Yceg셮\`Uy||I
vUNsD zPIC~s;,,tq4Fc IOsk
s;)pGD`߻ĽM\;2ϲ:_:OuJߵ9B'L
0\ޏGƉRiA?yƨZqXunҙ짂'X
t$JrT}ht$	ԡT*I?(їh̗
k.kd$\CdlhXfLiҞ7lg9;A*DPK
   2.\US0O  A	  A   de/cardcontact/opencard/service/smartcardhsm/EMSAPSSEncoder.classVMpSU^򒗆%`Ֆ?HZhJ6}4yy/u\2]9W2c#օ\e7)#æy{wιKa7 !rZ%)&fn!xvlc@H~uz9)q)Ta`LMN
[BxVKVkj-ytV͓Ȝ[Ngssa'_)֜e٥dRnѠhا9a&UÁ]
׵b.
,
!fћS1+MaQhm˼B
o∆@Ro*%c&ޒZ%@s[H0	|[Íxf_UǤฉ$N0rqV)x5z6k?E/	|ƧR
O7L1/rg"~2p}sK'VꒆD<bOJwL"0 +^-XU9,c;R2Lq>k;ʂr<f 2RJR7 {պxt	~9,	fZD%pĤtaWy&ҙqFJzMZollih2TO+#c;b^	k$d_VViҪruofNom3i'e{j)ƣ]gD̩.z
|C7]-u)䟩P+N|֪ٹżz64@%{6uǞTRň-bp
jgj̴`r]Yl
}|[81م|eԚ/!gM>/jO}G8Ǉ1?)׉NY$AK<qZVNWD*^S
P^=!EysD"G ~-t
;Vއʅ{fpKgc8˰Ӄ9
8OxpaĴA(b4%YY8<g; [N1wOwj:D+&QsMD"*F(%fkzA/,PӣO4E&+Xǈ78#X0jt߻?5Ɵ!ϴeL;c:5'B1}P#kb{W%;bbR<\EsS$U^ HK|9<92~?P_	\<PZp[ʪHV1qZtR*rmui,|AkGX6U|[
(i} %	L_BhC)S@ũjϰCN >k4
Pq mX_PK
   2.\Q    I   de/cardcontact/opencard/service/smartcardhsm/CertificateDescription.classV[SG=pEƥbf+&hh͐\frҽ}?[m_G>ٯ	ׯ,w~9sΙI~g (0,hkۉ]$ޕ'>\@05EM&a	e±iXlKKYwF|bD=wulO^<X:[usi5fx n!3tgHZvluNunfhІvmD3-8ŴLqF谰
:m'_eqC&vl09)Wɒ"]vuRK4oXN봰W*i;W#8&Y;%+;#/Y:/T<(ܕ|E!X^Rz1>r 	GpZ'xS`K}ч`#E+WO(pLk8)Aw=w^2*ڙ(ଉs+	9^d%Vp?q*Z%*gi3tk(
C5n
&/U=9YǏ^(;spV=&kKㆅILd^>&hCA.VԊmΩL׏i[|P.2?MQmk5ȟ#hI9Q=H{عiڠe]]Oq7Yٳ2+bb"@od7ͬ]ɺiJ)@F%kld{)5hłc:GRfaOafof 葓%#ԎFR$n?I_}Q7P-P?Y9*l*o'>1|o	m{	vx^i 6&~~2J%@m[>d]c D 1# }#7YwI
o\3HvMO9b^c;gʈ}F3#'y*` \_a:C 'тS؎ݍsİ<ȕ[H]cv46Q ZBP;DY*`b25iO|#K8zʨwC2N̴Z݋8xW~[S3Fñ1UmF͚Hk9}X$֤[3ѭp5vI%OkK4:p]飘CHw^7P)#_aqcOp
s$YZffm^ht/ei2<T)K̳bx^X=^{~פEk3Un>yK*WK&|zg!Pth;;W߉$
9ǯ"nx퐩7O8\cږ
Jq9R-6-L%33zh	LuA@7{?<HH =ϴ.MTG:>@\?PK
   1.\ޞAȌ  $  M   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMPrivateKeySpec.classVsUdM
6Ui4MQ~H[j-~\6Inn:_Ǳo:3:/̀nqxؽ=w.X"
ECaOS0
yEUXOW˺#X-r1Ii]CxĪXb!_hA-*Ac8s8e{UKABk؁62<C,9}I_%b±*pTݥᙆԼ4ϒFa(GY!br1*xAI]fhKXXf?հ~~
}rk;今~JRs*:|rE
dvĒ>%i}'aQ!ef5J"'B?p߇IRN udb^v])LM_cFe¦(0bBäy+뢘LEpS·	[nqU'z6)VqeW"8p(k]割EF1ApGyLXuyO?Eq*f4Z
^;{hzg!3>LCʁ:IO[>[+繓%.6҂Xr	Q(d<m9S;
A)T<ȝ:4fhǖ*gܲV٦$"5%
t^Jr!@.tdh͒lwR
/l.6*-/UMPn5ȭ*я:`QlUUe߉fc4k4J7O.=Զ]yc7RSQs~Vyy؞ K)њ\Λyzw'`-8혢vA=ݏLܙ$@snC4ooh_s7g]u<L&[-oZu9QjXƂkù-iϖٲِG	5y~i6ѷ0DIߩfensjDX-<x	8!XQ`כ}`+Wh]}m6Zlon`PYsH9:/t7Bu%)&yJuN`	Oo#HHH22Aם2]1]`9>Dl5bNN]=*/

uY壯ȸg6Q.DfwCJp(SFwL	|/zwԟ1ECJ<Fc1%;8pZ-=:QG5	G3SGM׭ѺDZ3ESN%	(.W1%@<1iecPqdPK
   1.\sV  	  D   de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMEntry.classVMoU=Ϟx;N$n6v@IcQDd<q&v53	d+ !H%JHJQLĭfsg<{ .a.:4֬mܰ:m52n
jre)gՑ3p@嘶n'p:roڎoZ^ OVM!7uno\]1ŧƹHQP/&/R|`ǔfV0:5Ff"A v;+QRI@m	yc'i%1!0;b4s?c,αT	> V,	\.Cw[Zt;·[ˎŮmm,Y+ѡl*LMjDΗ 䰚W9
~պ՛s}6*̄gO,?UFW-#ԷU~pvhc9[ڡrg;ﹲ7#zAaMFʟF)']H1<w-˼؃.|uZFӷq|[*)YFu
'(̛TI-B1NG_1:tCc{#t+	6嬲8簦!pL?ie$RlCZII72t	O$l
80ZJPC-XiScʌ:RAq|gr_Mhi	N| G (Ա9'8oὊz(۞Ž[Y5h9usO0w>؄	=l#'o1&)V+-㽄7#?Bh.M2`o_iD3xRߢ!C+j/y2H_܍7o%_H<lN9]{eR<SHMPK
   1.\p8;    B   de/cardcontact/opencard/service/smartcardhsm/PublicKeyStatus.classQ[KA=5MY=AC!DAR!8:;+z(HM.ov9.҈ D,8	>NJľv3D+V
SH%`Rx:FH؜i??A{剺maec(4DNwdC!+SRa`ou;t;!Ў:
m]@YWAKxb4Qog=ZQWb1jG߇]xRiL%B6SE裕|n6K@ٕ#\	=F:F!̑- FLv)lb[(Rey02,P,Nd8y/^{D<!8>!dX0Z}PK
   1.\_PF    N   de/cardcontact/opencard/service/CardServiceUnexpectedStatusWordException.classTRA=%"F!JJhEROfHNjw?G'-{[fzzO>bh1j"6	~r/@ۮ#iP~눚rv\oU^ٲzja a"	a$,HOqGYyݚp(يzP~HX{.t3$B- e;9N(N5ч~_3+j-И!Y]	 gMÙ-)rUU=04)Nr5#<L\ԄgVZʐoS`8߄L>К%r*Xo	?Iëw9RK=-;ch
:1~q\H&<)q6xA4CXp5禎@7/
kKBUd)jÍn▁0zrSDfXHG!"JUܬךƟWj#k/AxjJ̵ca9ޡMk]fl{sU"0@ODIx0wS'1.ۢ>ӣgK=hNe[>t1\5Ez1fhDb441td8_<Crh ӳ(r~
$'&Mkd	XD`p_>,
C!tb&IQS`~h$:94ֻGI1PK
   2.\           /   de/cardcontact/opencard/service/globalplatform/ PK
   2.\M    G   de/cardcontact/opencard/service/globalplatform/CardLifeCycleState.classUAwU^B!	&iƦՐ :
.z&	Nrtq?q㢥c?_pzcLc˽ n#]#k]m;dLiZڷ4gieV2WeT1`xcܫsCگ ϩ[jM͕O?@qZoW
B"7ۃ֊Mu+W_S0(AsbT1)Q1խm[2UhK}Cw(7$pxP{-vY=ǰ<Qn7{"Pu:̞d N<.3VLtVӕjη
IHe`A.(xov6CF۸FsnN}@Ie{)ҳeԍ}l~,1L6)2w&tr q.ݦ~x9{'0L%*O#NnoPɴ^kԴ"w¦1DJm]ZL.dk-"5s2!P5:$I[|Ñ7b4CQ_ljHnLۯؕ!(X%
jэ
NNi׮D2צ pڐk#ғ7|S o,{g|@C>6C	l1"KaOTYX#KOhzac#
,JkTDC_)$6+0CS{ӿϯh˜uB-@<[-ؔWoJz'XlDT4QQ14}.X>b$|ʠȘdloxA~g]QY
kxTR"
oNMקCېWOΏ*j.B>!{ˏ-),W7nPwTk~G{x{.96G
ӸfQ?PK
   2.\           4   de/cardcontact/opencard/service/globalplatform/apdu/ PK
   2.\$I  ;  N   de/cardcontact/opencard/service/globalplatform/apdu/SetStatusCommandAPDU.classJ@/6ֶt#
BlE]j:dB2W裸\ >O D7 sa滗`rۮ
4wBފE4d2oǪX@&
((U``aO{x~tPڗfu{od8
xB	\'FӶS.C\P@%@D|Qt^G2_aAɘ_1Mfb\s2m2{>XFv"ǩV]V8Z?!HITMҫj}F
V$J\1<gPK
   2.\V`M  T  Y   de/cardcontact/opencard/service/globalplatform/apdu/ExternalAuthenticateCommandAPDU.classQ=KA}ˇQxhITbҤܭnm?d%XQ\
N1cͰ9VcL/<oźUl429daOQUP92dO6(VЙ8;m"w`Q<OH(+}nqUQ1:ŶTj
僐r
{Ȅi;1CK0dB1!k?ql!O_\d{>"'	2-Q&P-앞KO[ξ
煄
]@ZwLhEffLV	Zu3^o|PK
   2.\Y	L  =  N   de/cardcontact/opencard/service/globalplatform/apdu/GetStatusCommandAPDU.classPJ@=>ZFt4(E05RDv45dB2_觸\~ D7 w;{/ CcqudL0f"KdDe(@%
t1#x]_3SFâ[v`8֗G>W72Ly*TWq&z
[C-]PxH'ޡEu%eAmrŉ-@W#NO7c,ȉ?ABO8ӫCmy2(<HINh}өvULNf!hs(:,| PK
   2.\LQ  V  U   de/cardcontact/opencard/service/globalplatform/apdu/InitializeUpdateCommandAPDU.classNAƿ=ANW` ch1		r
rK|%+2΁)fK
6rH1xF[XόNh"Lu#6uc˵d0C6Ҟ28E֨98߈}ez\&z|$WQtF!WW}L݄ؔZ\=II&#adpgCxEKg>X00RBAKCڌ@\Spla.1FZԧv'K L
6`lESX(*VJkPK
   2.\fTH  2  K   de/cardcontact/opencard/service/globalplatform/apdu/PutKeyCommandAPDU.classJ@Ϥ?jt㮊5(E`څ]MQ#I&$;_Jp>x݈;f ;XС1l9´y2PVEz3ȵ2V,;2Tl b:&}8KjlS
+}oOz\]7y$f/Q_oZV
ew#]7g?zԻ4瑛0nݘ/s2hRP8A8Idc7q,D+O0IerW(fyeP{[/[O=RaA'F
ۨ*FX!ejsQ8PK
   2.\l!SW  0D  N   de/cardcontact/opencard/service/globalplatform/SecurityDomainCardService.class[	`TΝM& !D5ְa%3$kݵ*jֿV"j `?mmVVRmq2		y=s} NRsPOJ[h$2VUʴţVLi	SxttP` h&a^̪T2\rZuD:52hk&:+)OvYƨo~aTK&UE鄕Ma'H;#Us7\|d́5s}$Bj(!V Phc"eH"~3]oZV"LYesrNZZ!i&OPՠj80hu'3gDb4k8#uYZ[%
"mD$R՘ē-5V80+9+)$f6m$cg-b<&hzXAĥV6Jf-{f9&yU&N
bSH!8ML-V.a\#V#N3qpXr
V%)?lJ?gS3\$
4V
cJduV13ԚL#mYY=auН-tnJWkzPo`3pDtE2 䩇pFwlŚQc5&3Vd*k<XFtKwMJ謽sg}3&*BHԡ쎾`,|00.N$2#wU߈`-"֙17,o,='`aά]8{g&,h6a3Cl0̩B]jZu2[J;I)@<UJfLdf+D+l6[qٜF2h*ͯǢuh.r|ė*\qs相 e=0arC_\w1ޢ1ʹ-\crWWke"Qq[JT]9_55Y#8>und)+
qn45_MV͙HΦWEn1q+nc&@}n_%ob?tl#yc\$p&t}.Vaf~LeFHlnθ!}H\Ojs0'e,ka*f?4C8д"h(NAhzQ:4өLr*
>3%jiŜs6nlddxnfYr #qbv,oJǄH*TÂp|b<Z&~Ĵώ,f#-zF1<pKqT=$d=$aQّtcos"g$I	+3dK8#z8'ӭ xbxAk6^g'Mf	[rnj[sd.sxo33x̲#\/xL!LF+gIV9?9zRlMRRdc`&$807-)^e ^\;Q|[$ZUZחxh3ZcTx2<i֗Rj7XRF_YL0 >Sx_>$-vN,Ŀp_^	u>9]sS˙4g-V1ɵfW21׾pLe
f/Ulv9Y,!q_۬N#ҩ Q]d$/
v# ^<~ߠ&^|MgRQzMvdb`;bĭ2YOJD
gdD,f)
3hI#GmۤuGInh&i4'Lk-3o6ŉ}5jX$5-&X1|4/1@2	&Q9GW>VvּT6IKJ:]AҤTŁJgS'4J5I<o~kNOSiA't2q>Ho7OU%',Gln:󆗩ƤSn9X4f08	)pFJu&$ރ̷HS;E1/0G0ֹ[o՛4_"@rAD6wQz"v͉8ehi/dyhItIp!"+LZ),yAMٟ'^/nmGh:V#/{^gu˗ϘxJֲ!Zobfqveк^R!B1YHuRj.Gfxμ}Bk0àGPw=CCob5pee˖7efZ%vJ %RY,$/"X)j3iXt9}ɤ/aߠ&6HrMt>]},St7qbXx2Ɲʤ.ܤ+JBQ*D|dCٚ5D+M3)#>1j7ۙ5\XL&bd*NG2Y+,}N|
Ctr[],[Im9>':{D73N}	rb""FʿAe7M+'IubO!4~]53fzYMfB6;t''݃S`º^(vHq8T/kݴݠJK0/1{D>kL~ȡ9'
Z0'9_{3i$F1^a~LŸOZ[72Sb]Mdtzsi?ZKS|'ZC8o;2UpvSuldG@UWޅZ	.DēWTx##ۇv8.Eųח<[?Zэ"iXu]hӬ#8e΃+IBa9:+ ,d~!Gۦ9`qDR-_zl~Buds._d)GOnoS1n^$ˉR<8{	./w{ }\%$|`򧚛r>㋦ZrNclmO(<D?UsqoYi=[Z}Mʺ<˃͉l.,YBH7ΫV4բOPz~-kb-S;S,ʩmFt5s]ɘztR@&dQG1'72o'asRXc(5UiI4"OKE:s1i^p4棝Bdi?jW3Ĩuܲ[-Ɏ#wP||>bFפ9fI̲I!f[C/K=3:H8+O_&8?ⴭ,/pr̅9<cza|vHp~58}v`%LihN&`
6Z3Q+z'
եR9`$ʭOŲ*NP55cH'6NgrSjgMt[qr,JmlMn2qִՇp80ÀQY4)9._}AS<lkP'9e)RKVLÖq䃓h5`f2][P'7&Sa1(vKESg90]td6+(;upS(@a<x2f;0q,g(et
de
	>P;lGʆih@ & $\09V/\(v0H~g?O3vvx<~B|_WË(/a.~2Ip_{Bp?y-.+CvbX=+t
1[42{CQzbz~l>=$<ě1=fL/2 ٶ㛊fBiw/ʛڅj_Y;&Ϥ!S:-S7o;]ގӫ!oȿocVY9Ki;lJ!o;elYmM_
y֣E`^w_p\0xlC܀Sp#87a	n*܂nE3nC@
w0;qbw*nv-إ,%z8V6W耣mSg\!.YCq=A~#70030@9v!p-/N_bNuSY,3n_]`DE(1nA( @kw-5^*p*STB^Q Ͼg<`;:AQб*h@쮲P@;P*P*

Kx7[JjX$?)cs	T_"<x,s؈q6^V32h2~`z
?S{O/<.}{5a`X.ޥg;~w}y|w/h݋KW8MaY}^2a]#Mݱ(0̑I#;
Ϥ[z<v Ov)!_ϨZu~!/#guE< W\pE< []y^qll<3l,ژ?dh3l3l3|ɻ:feYUᘖQ؅X_9vfT
yŠ3uo}o}]FpͰ/]ghs+V?q{zZ14#8(QEFp**0&b1UaM*u4i*ΦJ\f{*gVŝ4b7c4?xϴoQ#kD4	m$b8]ltq~` ` {8gS{G66U~.}}CIn =8^?8x|*׉ǅypĚvX>V4gV%o@I` ^rI 6_)o
㕂J
ʢ7Ĺg;EeI4|%ҳn3VHhUT
sϽ(JiCi
yxx}3E?BjPZ0160(/)S((ԊKh+9ї4yg]"N.ƽt)˱*<NWIuk|U^-8g=wh^sa^gؽI4<P<czCn7#z+а{
CXPg
k]Ј{%!Nvz|ɯINz=HyǨ=Ħq6/U	:ߦw7"n.һOr}EG ޸X; ِρPN60Э
ɥρ`H~!y2,ǐE
݇Yx?q')Di7Z.Ms^|u6Tm:%d@T,UPUm;!gt~#y`.-Rq6PR!QN.|!o\K\r1wtVڝ7{POeL܃=r+iǌ<	YGOc0=,K9TA/`A_m6s:bޑ'CKc)Oec	ZVv{);BŠi)ezj 2mMgIrv}qk2:`ء5_뤡\du1FKz&;PDoLa܆=y]Dqw<I6{JӄZ@D6׹t%*1#]vNf\i}\lYQ\=Q|sn)<8[u
Mw^+(%qۋJ%s/?c;_?j;ƏG[jK&ua. +7Xxe_sInci689E%9{`xEadThP&~Xc*BF
ėU1.U%Z
j(R!|_
j8Wj^TWXT[,y'b-{񝟋tdٷ8.n;9
cDc#=r|qW^J8?͡F'w9߱	rIQvL;H:zx^,oj
VMYa֥dtwF^ix.<%kă6U
Ticzz2U [ǔ'3#
Vҧ,7weJz>2.6+l_v?=xix.saR$1T'anmILj@Մ
jYIܞmZ`1n8G3)?Jf>#}W,;qxq0ȑ7[/6o}i'(081ê,re#=jj#FSPe.Jm{llm%Z3JjwvS~3[Xx$Pn/x ɯæ.{WTN6_g8p/yB]6}ӳB٥dv4P.%{/@;1QӸ#کv8e2p^PeY9W6mE:u.j.`y!VW\u.S6u%=jS G
o7u£
%;Xf?PA΢\;LF몿#G5@
Q8zI#lE<N)N2N?@>2'g_I_&\ovwӉ++کN[1:ղhl{FvZ(;_%뉖t}Kg6
C]Jh'ѧ
~9$Dg,f\qnm{u;;;Pc՝Tu{R k}hV`ziՎKn\8znv~iUe`,
.q;\Upk;Z]G~O
RYb*Ѫ^%Z>|]9C9hAS r}U*pDUy/$䦽i/ENps.jnxC^64q]+E|KD*Wy֣Zf
Ӗʝt.ӅvgndB1A]t~Ntfq:\ڵkq	8ɟs0|KNnd=vz%,'8/p"Zop-T/*{x?;y=ђXu'?B5S/Is"$&G#q
q^dպ	!f[9eQF
VFN]n]><sF/nm镉WsZ
[q[D1G=//q4ʕby	"a"Byr`eu˾j8Qs\
[G閅Rk;x!8]vW.2Pa1D}P9lé*8aUCj:TMP=w5-YM<a{1ecdw-']tXtFybpa/Uv<j"KD}'ks~'ћTf#PK
   2.\           $   de/cardcontact/opencard/service/chv/ PK
   2.\Өv
  ;  >   de/cardcontact/opencard/service/chv/AppletCHVCardService.classXktT<rMBAf$ hF2Ih_dp23޹+ࣨTmKijըhDD-ڧ/j[kW?VZwd`⪋9}>콿};`%n^	ODD35פucG,ԓf.%bjwe#z$1Tgb^0'[&R
1-B"lvh5q-]Si+i4k<zaexfDw0#
(Enl#qУD423i,:Np*CfPPi#{ZmfT1[!Pwҙa+̱!)#0,\SPb>$׌
KMVzX0ҳ.&UXM[4[$G
LqWDOdBHŅT&,ūT,%CL=TTjҤ͚ΤhDҬئW$2xEˊ٣'XD"MZB֍XWŵmq݇%HB$\`d
ycB,
DxnĺMPEA@p2tZg9fIK^bRdXqT)*##fմ9dKCbTD)i$rRQQ-=޶MBX
g'm(0>>GH'Tl@8 `mZOe`Z禩guѺ
|hFW!FmY[tE%[Qw,蹰6{t
,BU
W'Z"Qi@\:yyLWn
Q:rӗ6^C$S}m2E|k8Me=Z"%zqb|4ZcF1Iܠ@¬42*zɉk΄^Fy2CZ:MإOr
7npwZ">O)J1̈́˨Bz+s5Ӈ}|o'V!z9v|'W4,ݸGgU^Ə.C
}ّAJSҾ^I+im$eSs{ckeR+lni6NW5KpKvXŃVZܶQr!)Ps=TmilP6]8pLsrj2^#cژf֠l1pc}{e]!PgX*xoVd=OI8Л3t]><4Lxf!z̞vl8[w}r"m)>!Z,%}Y</lUvgꍶ{719I;V\|&նMZQd>e1.-_pտ`
	F*۰3t&nHՂl6bީ\Y+
{No"$U`Z 0EW6Lg c3hGDۉOYLZO\łZŸ*
X4m֙	yiU%3FD_OT$e\b>d̛w'1p7<jG[54'.ܗ\IUMx(|;5\{ +gܒ
b,9KOc1)_p,
_o%$
W-y4->B)O<syUQw
?!߀hZYxǭ/rtq	ۻ^"eRu\
*T,.i%guU@RSЫB{ZtK:˪~ϋXv~I,;$C.IV-3Q\:zj~)x~ hvCS!z;<=MwZ58ak:nmU'j4tg?Jk+	 vy~\d)<̫UiVݒ]v:nCDg{?i4޴FGfJ&f'Jq
tGL8-9ɉz){m@0ߋx AobK;ni
O6Q-,%.=VBuAUVxhIO}^~(SRT
3`<{Q]?Oehˡr_q9a{+-ά|M
~,*-_/{ʹY\u+0[]Uf&-}m9-~ϘVaѨyyN)[M]{p{眃bws	N]x"F^('eE)OBVR[Hن,MNWIPn(eS!aO[̯*BDq ysI<2Gky79|f%xVB³jmӂK]H̠frt0v,`'QYP'#|=Fôe?¿jbdezKg<bz1$)V׈Ӝ8xC>^EFJ38xްR*bOӦ;Q&_-(?<L*1/yY|sEnAKݭ )
n'XJKgM?bn`Q.JϷg^PK
   2.\ҩ=$  P  5   de/cardcontact/opencard/service/StatusWordTable.classW}lUg^J
c Bk@v[
o{O{9s-mccNS@23g2YuYDb1111Ybbbb4Y41Q{9z<36Mx0	*0kvHTn,0u{ֶ:
&pgN]'̹;nJHÞ^QQq$tz0C`^Ru^/_z-s#lzV)XE`UQ݁0%K.P)XؑW**[0KAq>y;{
]svo{eq*g 49ޭ쾑XEv
V'yɪi񓣟v!MbCz8(86-bnhkY>mϷ;2LrQT
Bv&Zk	<j*Ԛ,XSkUnLt1ig@Y^Ɖb
EBmW:$U'KHQ51	,F:BpB+=u>Xe7RSX)6/~3ܛ'tjvt?&Ƣ|;-mU
a,!'vLr0%2v-\TmRcv\ #ζ6$0yvT6	l>@jR+>RKF.9C
UhZP{
[O:ϔ`u&)&[`]];Z?(%`OSՑ-YAy mD%uPM^i
{55G^35}$3	>9SU:IΫ
DVܕм=gcD)Lؒ=͜{_D(8QTwY8VǶy΀p=
m§_娗{Dw)1FŃ
x	Ǵ׭IJ9Ɋ-\UH6ϔ%a}'ɄsSd&.[7䦜Lr\FsUwاd|	=^8%{<eOȊN\TOHfܡ.d|r٠Jזk9qRQT1
8Ia܈e:L6㹮*V)hi&ʥ
HI%?}d.:8ӳ^Qţ"X	7-a;*
se)x9;VѺjA?q哙y~e`*x]ogOz5x	Mëyt^4"gǫF\QbNޟ9)e7!~8|\~bSESNCb\7jөuPdZdl1eVekS9	p]3@A}@QKZ͙_-qfkW/7iޯ}¼Z!Hg|FyلqŔZo9[Myr}%]<=w7KzQ>AKy哔杧A'<EY<fP<"MJﻔ(05	Z|Wޒ1y+
B|M.$^H$yxI.#^ĳrqT"k\K,vbx\n$GbF/ww˝mr7qC\+;+~RyqoDi4CĩpfJYby-e`у-m,\N؍ǰЉ3,s\Bdvy C%&Y
zHfHQ"xdc#x]<_ ~
oQC(~HqRs[ţs?9> sV=.X)<eML|g9x֚/Z-ul/XU
_VV߰߲6V|ځ.\Ukg݃[]i[*-ʊֵhN[13f[L?_,:[ʟcfso1|x<}C8	~LO?}#Im%z,d
mϘ	"\)S58jϲq$$.)/PK
   2.\               de/cardcontact/opencard/factory/ PK
   2.\ej  e  A   de/cardcontact/opencard/factory/AppletCHVCardServiceFactory.classTMSV=ϖ-[DuCGjKIK
'И`a%(Gft՟Ul:M3>Lսw}׿~< 0O!!̐չcn5m\npw2y:ORk0!˛b&("PTt@eTyZ5#F+:=Sϕ_Ϭɠ=4vtӳt/1t[E=pew-ǰ}ܛm`ɵ\}xMF\ptGuбXZ]^^Z9P<?#*1r\!S<
ɠ
׳{-9[%xiB&2v^)	$Z-|;åD6C3,+a!|pCEZ
;5aUȶٲ1$'EU|q*'o&ㇾ~)Nsg՜C,_sxen kUBrbs{nX"
mmYe?ڏ֩]Ag|`Y:vxfev撹ūMyDLp휤!*@=oo?G\w"0B١e/+>3y]tLC}:2헣
;<;*y#YnOATkE8
vC`b@Fp
uI-˷ަLu,dcTS`.C@\adWҜi| d`Oų;?6?/߿1d	Syz0JMb<"rp&0C\\?z$"%E9>.,A/w7.=C:?G_Gj"a$%'dJ҉;4>"1:2}$Z0"M
]e7T"(]&am[^-?'#&cK>;F%ZjeBݟ[cխA'"qȧ'uCįuꕐ^	k^^h%EQ) 4b~уgJZPK
   2.\-  ?	  D   de/cardcontact/opencard/factory/RemoteClientCardServiceFactory.classVkSU~NHYVnԀ T]/hmcm@"V]60ϰ:8~G9&a\<9ϿI0!2^W
pضQJ8oZ0mLv[ءylMa;6VIh20J2幂4>{[]a<TK-ýcIZ]ux,d*c5cs$qބ4OKW@$C<Sn˅Wt$:-{	LU
5BDix&ʞ_3g(?uQ*NiJ}]xj<D2#[HKs2Vo0aA"ĝiMD;j9:!vLV]xa%X:Wn}S؞K: G:UKPa3rn-Uѫ|e=+-6}[ΣŸ8	+0&Pϔ_<u5uK+rZx2e*õ>IIѠa``<v
)P!OXZj+ns~6mE˲j^GnFzdwٱ%۹OM=:^5ģ$Ďde?v#i/Տ/Rd]3ݪÃ5QQ6h:N<7ӻg?NKD r?E}Q.6&cZ/Ôl4Ә>̠7`OiÇTy詇wǸGV:0)K13).߉K'Df*r)b+O>Ak*r.J%GEbjJ1&55J =@{e[xn3|q=?3=3N~y7db?/3#z#EQ$tpFa/!bm4JYa~{Vӿ_0TL%:lz6ohѷ0a!7PK
   2.\*    F   de/cardcontact/opencard/factory/GlobalPlatformCardServiceFactory.classUvD(qDⴤNI햊P'mLզRQ"k}$9	gRsx YIv?j޹3)!!53d[%=a۶-ar+mD._0pzos؎Q*
QASgS"#lD=GָACzØ㰞Y}3Aꢆ3Gu5CvLfT`gQq+%oxgR^_rDK\Dpi6*tɑͦTkӸiY1mSM`U	<m2h鈕ØAb:a8[$Ir6h
1Ⲇwu䐧0$m!ţ0utK):x_7E&+p]Iˇī4dQHm&k%lCn鸍(a{=7Jt5--):>nڮxiՄk;N{zM.EM0C+gZ˝Ţy⭯XqHVcEG	ˮ3\<rwQ.`*õ\];<n瀤G-p䤌[N<0S\*I弦-HD!0
4|.:̫m%{^/߿aݺ#SʭNx<h~Ȋ!Jq*v #xpayfUR*Yϲ<c8|zuP+i7ic&!L1O3ISޡ$hd
{`0;RߐJE Ik9'[X=@	!B	zN+1,fCOpPj6QCIYߏŘ>$!/B(](Tv }4CʉȱG#zC Fc鯘Pa!p]	)V5=OѮJ_w>$f y	PK
   2.\`    D   de/cardcontact/opencard/factory/SmartCardHSMCardServiceFactory.classVYsVv 
v\-CHڭhlBMV[,nSA'/
oot;WrPޫ{{~Q|~A0̚j(UJ(&lZ5>-+i]chfa
a&4O4yډ|Un5ϽxXVf3H򢜨;VXmG؎?QfȺ@f:i&mMu!όщDEBI(\&Ξ=3U =哜E1*F)rXNxFh ff8]gsNNŮnD0-1"r4UpvĲ.lgfd|Z@Ñ9l}f4lG6;B:9ħ"qς:c8wt\V-i>wd>u\c8NA/Tw⤈!d*PdTPxpd+NaD1ֺezy
9
m/	񞇊Gİ=_$=#}|R=	WtY֭	^U-LrpFY|HŶrQ2atٶdR>Rfےu^U<.t+eKύ̀SHi+RGWu v!>M"XZXv+5敊Zje7HJ{^x2
9s7#i^HWPD|>GuڴmWa1BN"WyPm	{CSyƗ86뒴5KapHoHެ[Tmy;.0fXr-:doiA=E\p7*+tkƢ6z{Wױ!MFIWY\גF.g^лכHɺ5g]3+Ylhv1jE
zn.J^>~zۑV>@.R8EO}}W'\KC DO0M3y|԰2L\/ZI5,Uk5".;aoZOV|-}KN_!<{?@h疷;б	o>Egqk"
,!
#[M/B保o#A11_p4ѦIAp0Bzv =dbVyR%R_&`n.:
XhY⟐4~O:~°4rKHkJӇ]=&ݴEc-Is~g}ϾG݃}݃mކ[gy7A-Pum~*;S>4nD+|՚yxCEtPH
ŠtPl
 Ő/)Gϥd
RDKc4B6I(<DwG1q[+{X$ܟ[iC+MDPK
   2.\nÌ  T  ;   de/cardcontact/opencard/factory/IsoCardServiceFactory.classW]P\~;rH4$1h$db!
	ˏ%"{X,k5Zm:ڙrcgN5L.^xMW^3Eozh/f
}Ox+
*	9\<kc̬Oe>g]xN iZ%5*(Ц=>"PXx@WΈجm$ fYr)3
]U؂=-tB:JMLڎ*Q*Z`KFqִUlf#55
jU.`xʱ7uS獢@U.Nau:2ybjܜq6zü9p9;jnԴrDtnES#CQw!`^-ϴ&uq'Qq/)O
6'Tza@wSJlga_5|sr\rq3YE[ڪIUǤLrh$K%9c
'u瘊.z=[0I'PS*N&R/#^NBJH`j
d)Ѯ`H`ͫ$A< p`QMQؙvFC#e
#6
g

ӝZ	'Macp=;p11g=*ȕdm5l,XIyP&MgeGgEi((EƮ夿gu't4l,I\ΑGM0}`Ջ&=b2;j|UҷlV6씑/]nqՑv֤uHgYcԄ0/E;,o8Aʲ+T,ٙ}ND>58W@&~o!8d#C)gG$ݪ3[Ȉ=_,09vnY&uv
sZ
~SymZUe~WV`8i۞X7o<>ɣQDR/FLנg
]7~VcQv^t^eEW_PۼQzJZ ?i;O{s7xm|7wxs7AѦ]fW ާs4F1C`I!y:A|Sx*+
"mhk'.4jow`{UCtyK16c׉1MK8Ubtz V1WV3ފN'+E=ҳL˔D]c!y_SrDx
bp:pGCeԆ.2ESix@G&(V(IiP
xޫ`U
Ka]pOJN>+]O_%a,J<+v9ϋFmxQteqAH&J_)DIrQTIH?jSX$YuYנ(SR?J	yi>~esy'x@;:a\ZI-
MyhI
h"Cl,PO4??ځk"uuw>K_@Dv;"辍rf W/ъ5^IE>A]G_sQ+C٘ߟ_Pʌdm!3VF$-ăh,.!|w
'pϝW3X[$'*F_"t~m
ٶ	l_"!ϐJ$8-KPA
K;[i,ךiTQ+YZf#ɻZ?L3X0meR"2,u7>cRKL
Qޗ
4Ia=^<,+>#摠d)KΪI2[oq\	b7zcH?~q8RT/Z}(/A|"~PK
   2.\           !   de/cardcontact/opencard/security/ PK
   2.\R2  
  7   de/cardcontact/opencard/security/DESKeyDerivation.classV[SSWvn'c	(hֈm
.J[{H6p$	b;}c_^uS;c;V @ðg۷7 N \pk'p4#iI,H\^Z/t`񋃗|,m,Y2hHQ
]+ẺSr^`O-c֘y;OtAڴL.Ibww&A#1 Pc'v	|	Oɂ@{mXi)uĳ5O$pLt,oiao%2t\ZUyn(,ۜz?fVf"v.ª
[FlĬ$@5-JxT!wDH 񖆷uCkYf.e41
l.͠A܌MF	Ԭ#WdcnUGdr{:Ḁg"kvG7=$Nq9c֤ÿ^;]Qv8AqGqX-SQNu.::22dKEl,,#q1@踈KU*ڃ*e`h0@[A/QɏL|!EaUXr$1l	E?Ę:>A'v6B/**J-ųhݙː5}%J30/PGJgGzu|rn	"S&÷F)Ny'Sa묙DhLO(5Fݙ+֩9_{*}wT/a:zu=kL"6+EMn L8a:4}ֹ3FEiG8Z\=LQ /\G\?;ܛbÏv1QuZGBA7q=B85ǩ;ImpOamA'&HL U45LAhU#ނJKp
Ǟp[-Vyj}FϽFϝ/=p.;5v={9&9w.ۉCaΰ*CYG,%3$TB⮪\	7jPUqpa+hhmiye%DG[,e5/kj^,!֐g	Gc?E[BB{EԶu|j!
CއL
g`ϱLv	q584k$2E,XD؅n(:=ʮN7GZݙO>~toa6.yꯠW1%CȎY
:DyH
[~'Uc%ļjk|}'rel^G\Hս묾]gu5kz~~š^|R91_w*b5Կ物Tq]PK
   1.\˿~  8  7   de/cardcontact/opencard/security/IsoSecureChannel.classZ	|T?wNfnf& #""!X(	 	؀U #LXET\sUъKuA[[K>VmZm^}u!߃~ξ3>ODMRLK&,rdX#uhG&Oʸ&I'k2VEx'D2|ztC3\[ӚM'kL^%/,b-W2&// -*ʘ?1aI3ѱ1d-h<~6"9E`RȦYQ&ѭdvMa:ӝNmHi ;+lCcUfҦÝm]8¦	t$cB[Y/_i>TM2d8զiT'IiL{Vw:cA&i5:YAhv]M}bmS2_O{)BEu:ieͤcm>Jeqek쐙zhvDc1i9=}6@|Tl|~:&MK_-j_38T(*;R8R5XG4T nNLv"ّwœYhDjiE}Qi-8qQ%mt@TӑܝMd5MDѮx6nK8V@%ې^'oSl

j̘'5
;CM;צ0Z׵߅$iMQ̊O$BKM1Z56
qH=ai4 ﴩqlS2&;Lsxa0GraB0Q5=DgM[r6]$Yw
T*Sg1ULjr$Ӹ#ޝMme+HSzC#^ӀVߔL
*tM6&/og2ѵf2KKxuM/"9!Mcړ]f"Nb,,Zy
LGn~OvLtDT#~CZ蕴ʢBy~!K77-ɦt3%
u4% /qW⩚&7	[mxrmvM6T6+l<*z[
:d;mTYO{nQ˒M,@}gLצ}[ O6/ŚB/VЮդlzP׸!FYiS@g:z:8I^{IG>,=6=Fh7zg	w$2'{՝qͣC!Z6'pNH3~jӳꈃki<ӝJf⎴<crNy*sA&{EyAh@q+Sk*]*S:~+ʎt\⥗MЫ/c&0uM5%jK׽fӯL#
) ˞3FO\p64q)iނN1/`F͞]9ɕkR=!	}
eVc$Ȳdjcr? L.gJNVG$2-z{ǟ'2)=F:Y็ u?̻\&:1U=.ܘNa_ˢ ~ӐmF;!C5ĚG\MtO.٘w&IZt󨊥' n5}45o7D2&탫S}
=ȁ~ݝQl+
*ykV<~$=>p^}oK p<Ī׾a?sAc+ X\js8~FO33ZʥWxxucf3ږhGol0NUJ^c*=f#qgdy[.20@s"_ӵ:ns|gi3sy4qn̮Kdtϵ$hDj
Niݸ;)`V'e(,Oovk,]eĺ̬	=l`Ao2	䷭qa3:!l@?qH2mQx,}FM0}Iђt	m#KD:gF\%d,"zaXWGcf,5TzfR պ%bU!Ԛ5oLGNT49vC}kw-u?#Na5'E_ܩ|rp['8o&SnŶCWAt,Wm*A*n/#me9!V:o-KHlXgi)5
k_p
Zse"vNao+$G |x)f]L6?Lef
E޾3ҡC
;$,ȠNnmڃ`V=8܊)v^?!Ӝ/6s"mPc;:s/tGhzh(iOEO	r>fPxv]*	߼|)_fHC
>A J炠ZRi`t@ ]g`ĩ=T;ض;>DA4D;;[_Խ`PŅ~v]4[w;}ʬ:zʬSfEW?O}muNpMC}C͢Tz˒TZ	VfAf%O\\$ 	B%hHmǦ tCg4g$
Q	oLclQzu\O~trS0\;\;\[kgiTvGq!fx`y猙JDhREzs5ǣg;'<9;SέEEU'WU螺UFc<cbUгǳ&ISs,y"!GI
RB
Ϡq;24Chܨ1`=`Z^V:roSwS³ Es[=E}XgSHˈG^*3"ExFrM
C4>`hZ hA4.J&ҥeg4Nkh	]Kunp B^>uasf%^j\C)5`x*z&w"-!XR@eqEPOa&orү)]UM|CCVPq -s22=ppk8¹p<vLnjSvїU=VV}tZK/l\}d3Ac/yiOUap
У4vxzFm|l{NS3=1!t>XTE<kA:Q^2>ivgjژ#x>H9R{!uάN?v(^ݏt3"UWȵS6nvWau|YUaRuaQ-ͥpnp f[k}& u7ewSO	<\AEþ]tfKun:].:w]/v𾰗
aih |죯|CwtvNk`D//%/^RzU?hz
'~Cu(h%
MLo#]Bwmށ0ߧYo~Ÿ
Zdky smYtFWExfa^㹘c;Z<}s=ZA&TjQf Vh[dBW1fm<g.ѿg\ xj
9A#򕴰*=?o {,0Mjg9z
 .9^FWvB#7Rh.\FKVrHQtWЕ|]ͣfD}BC=	ł(ꘜ^=HC/)h趂P
BAC_(h4}%p0O搻]wyo8ܷuv9i\ 8ˈx
(Y_v/UHcԚ[[(keьx®YaW~v8N!}b[!^dD΅c1E!=VE2ˣ֫r|gL2=^{b_ȷJsF6@{AUkAިKFi
`zŝ[Br>dBސu
h:|EG_b01%!/F`ҫNL&lL8⇐-:*|
>:җDZt2
^BIt!	]Fgt.NSN
=n>
*z7оqprO籼I['Y͍|pr7be/z>w6C5#|1K'JT
jg!\H.H4t!V#9O`$VޗSw"z5g^ton/)j?K'<RpHx3y1/ŪBtqOJcC*K?`_;H_=zԛbnЏ*b}tCгU
|UOKEnB3b+):g7LYnFP6*+]
[1W
gj[r'T
!C;!?&"~ٛCb>\n[}^BPpvޥfd8<N%UawG{97u\7RBgAB 0t6xd׶be8`v&5Jh`Umh:NW,K$UB8GH^q$Jу3Ae*
aۃPɪ]p]i40iƫ>Arbzj%iKGOpi/H?\VmosYP&
T<vDotzEyxw#b|/{,~	>|~k7r=8<Oҫ}zHoS
'|+y/ }	˯r=
^7|ãi#|6|;|?ão?,P?7Q-I)~_rHʫbu
*2UBjjiBPcUJSgJ55^]&ԭJݡ=jz@ըGկjS5K~ȿWs}w>^RCD!Jyrֽ/cU^vEճ=*3Rb:rSڣ}E3C{Nݭ}qի۵/IcN+tQ\O׳S3D*Qu(WRLGz{
PIFB1+Yag9F.~BeN!GT2Qgx{%R|>COT|۶m䢧`|v" F`p%v﫰T%\GEQQdCT+v RΧ=:wl#V=7n˵sErWݎ,6l:EK
&bffK8f]dY2u$ʏE<aPzsn
't,K*I\t3.F޺p@-䪾O~G_nkUee8q4ӗO23f$/D/qBlvTԫv!WnťW0iJL|@*	_ȟOHfa!9;6hw
zE8B{p%閈"ٲBv3
@ת:I>v2#~еfGrbPA.c:#yY0gp0+wl.]~JwZ]YߌEC;$\*y_[~"q7\f@C><X^#dmq<MrY<y,Pzת]l
_ctqkV̍oJgf^%lc;_(E,,\jr*)t
MTdjTfptSZGKUUz:Uu:ML,Bsu.}ΣO66\.u1#HUDuOVWpgk\ҢuUj;wy穛Ru_t6ߠ՝|.߯>u/y ߪ]0v+R{C~AI#>WSO[?UYZ|JU:[.V//{+j_ouzM>pbTԟd7cqX>4NR#>5
26j5id^21<m6cx/x(51ʌ!8g6'f1֜n3gf1l50~}çZJ~ܡ_՜+Q3
)%r7Nu
9Mrb/[+]lo}8FA6*1bHQEpseVx,w[P}D8ۆ_x.z1t~09GټVJS	u	='E4R#:}1i9s9G/n1gz,iH*]Tu*5Q#Srytt)I2:xfP>!لI$Qn?}Ht8ڏi$ROXFUj	c x'4CQe
v@7!ҲTwya&C_
H%H%}Gczp~MLxks_8-_JFGՏTMymnGRy`D岍4¨yxsr$wX!gaӅ/q릔qqSYUv"/T^		,rqɻSoGDӍ& % [hbn,c`VZd,/^ @LC̾F-{Zmvn۬[t4c50]Y픹gxXJVg@5y(3Fz XwҔ. K>M81뚃(`7fgj_5<Cn7CAu ;?ZZs$h+rˤsWfX28> 8mdÔLyLy L9>Smxz j5S3>n?I=vl{ܯQ/F'K.IEi5!KJZ?ג8@zIPK
   2.\~    ;   de/cardcontact/opencard/security/GPSCP02SecureChannel.classY|Tՙ;{3$! I FAD N&1eLfyZvmUq+[kWh׵Z>}vn]>܄1|{%/{b:^]g0ffkuV(^ʤ
}0PE%'愙O&(6gsVFVO7tǂ.ɽnf2VZ@Kవ]LF來G/j1	D~8W6wV4ۋ98KPLn"j0n\/V|*%/Kw
*^,"#H%(e5ňPb18Ԃ@mkLWX
ދ2e^, G4Ћ|=bÅ5D|Ndsk
O
7X)0#ZzȆTZ%^Ax
TXpP43	KO4L5is=v$Q=Xt\.o¦@mnAY|עNx@	-}DVft<)e!kf*m%l h22GE6SF[tֻ=inK[
}tJ=^+h,ټ\CnfLc=ƋXva}-oT!$V^3;t*m!	x2@@,Rd}Ք6wC$Eބ-RiD.K/qn.ZFH}C9G^lnG7T"	Kǵ^kSMCRL,$uLBJ431"clǐ8#0~kt<	,J1cLsd?EAol	tAʛEIgt:0n2
ׇ @ɶ@C^n-Sɋa̮>._.|mV&:9yv's$n^܁2ҤfDJvZ9L3akXc82dZ,=p%ëHY2MӲ:Uqߍk pOU&N3+EkIO	bhOg1J?}Cz)e­v3i'qK|'qGdˁ`
W%3J[_zcgY3>'bXۢ`<-"6YJ\HKX!x鞥\JdOY>^<e'McICұOPY̎=!e;1ym5T]5pA!5lO]TjEYKJ_jc2p^f邴_E7o"rf޲ O?CϤÚ\
ٿl	ŃۢP$ů5>3]*;:á,"~V8
xH8Ni|79!!nuk}WO\bȋlfF=
GV͡H$~Eks4m }3Φ'ܻS޽\`h;,3l鐲F"P|C(QfѮ(K'䧒C3Ȁ mm@ C/FR+Zf{U2^Oɽ
h:h%sp#*1i::cbĐјٙ7Y:#h:zBeIi
7KzlڌWMP+si\qJEx,*jD.;dFDd=ιӖVQ_/->rf"+2DrlD7O*UTe%es9V:vR{ΰY37w=~JҴ`~+c]_J$}-gۭ^ioYzlU8Te9&y='s{U(ټ.%d!VC-l2MkO,['))0@Dlf"Uign#b.=R'#ّx.wL:y񽒍X&zN[";XMu9kSJt@
\f6-aV0G#&
S_l`ʱ#"PsjԥRE&'P`
nxjfDeߤ.b?śc8+~L~gbO1ղ`7w|dI,`ǃ-(L'fQ-T9.?Q9ed,dWoX5|ۿ'<n8G?'_$~~6nsvHcy=W«晼'ZRyF5oSoOlkЏ5hǍCP(Zura^}¹ƦChlst4~g<ƚ~ӸXRiK%v{o鰗E?5#&/\8j!j\b?_7.čD^ξq>[ a~-ބ`n](~E=3~~ٰr%
 J@S+iZI3874KWcCGr߿	H5gV(t
|Bq(:xC9ofޭbCz-R \K/AW5zUǰfa?CQmӱtB>l:aEebs4nޮ{$^+'&J	gX>ès]3rU:>Un	s_shɱB߽ׯ;+8\rr7׹|5{z\%ï2= q5	q3G!r+Što#R:qaGS¤-.%
(%[0bH|(N(t2잣w2Gɰʰcx4|VJXA+*hI^js\xmԖ%I	F8	%ɚ7R2<~ru{ڣ|q"H_')bG8y9ý-%G)񸭈17aTΉ0*ɰ=0Qz5E5zVr+yke'8R$Fs7ÃD;p5}j$jiwV5?
w%~&)O0g?s0^GQ"<؇9э'_`>uy)&LfO8{pq|:OI/}uL1/(u1Mq~L	-:J]qG	_iʶ/%?q?3,~.^/ķ+~-^U^ouͅ7[ojMxK[iA^ۈ.]N
6(\>$t6Q!*;G{PTj	sbi/jeQFs<8t1Q-8:ŎA&Nc	LdmPB0P6A*Vr[^b5(B
JypJ6pry}ף=o^V0<~ɋL٣)qЅ!S<a1STρ8QB/3TE<7nfOb&Yq=u4yV$Qm̢z|)tZ*NG7jޑyޣzT}h:zۦlmŢ:Q-jl-oq!9`b*F^۹ݻX|5&2_]4z+WO p1.fX,Vak-(Z)֢O\~[?GuԶZeX$f`PȢ=0VD}OM&l1[6
TlݭgADx7W*6	(J-^$ŝ|GU(rBAsUs!)Tʒp;sO'7>eDtP'imTm'Q08OKXF5.SjPոRh'I]5U\
PK
   2.\)qy     6   de/cardcontact/opencard/security/GPKeyDerivation.classPN0<i!PZ\0P1 uar'pl:YLH| xLLNwuo KB;AX`{J>ț|N#c?hkÂVUJ{-9UfqV :s	t'uSuiUTe1#hG:Ȋpư?4%	Օa((G½ׂ1̂s
ҌSƸ1}/0of{PK
   2.\:A  Q  /   de/cardcontact/opencard/security/GPKeySet.classTIoP^$q[JC4ew1;tCՔ7y*473g.DT#~1*C/y37f
&Ѓ@1GUK֍bnDrRב0!/K˱S[jHu\]G$[
3Џ픟 #0\dV~Z'}p*zh640&c6QaeL	2eQr/KL	0_Jb8` 	uH{UYV##r<^tf=*߷BeۭG}53B,nU^o./JX!ˎbͱ+%s5+~K/mlCA NK᲍Bvyn/v\T%u*zv==PkzwI&Ilڏ~@#Pr0C(ޓ=FaFZ,[5'Z03Z)3m!Ҍw?k`Q³Mc3؍YZsArLRE
q=JB#JR5qQUꞰTrEI&hSPB*Omd8&NNStGCs)q326>]dW)23lP`HW"QQ31eR5G':Out]Np+LWp
>I/=0/+F66|Kmҁ/ɗVЊk:IZ1	=T3*9wKxEo>nj67/6f:%紺PK
   2.\(     4   de/cardcontact/opencard/security/GPKeyProvider.class
@EB[m\,"jjYEĉ`0sp 8feͽ6^%%V5v^]VΏj{HxB,a>EaMXmBߔ\D/	q (Ĺp Tٔn^A
PK
   2.\	b    7   de/cardcontact/opencard/security/AESKeyDerivation.classKSAE0$`Q2`TYfă_GZ%
~(gfwMwϏ_,`9 4@'|Yw˖c{L*l6kªkK+g,\=Y^Җcxԅ 4t3^ZdvDa0}rU1rG0GC0_lފm9eQfh'6-#~gkA
K0Ẏ|[a^k-rf[fsI{eTlC((5!򯡆[}+hd:=xQ=+ZAU.+lxA0,Y!!L 
bH^~fg}u^͊$J*+i0)ܔw8':`.ZvV+#,U y3b+
OpEO(njГx^SYtH]MF# Rea.$"xHo]¿CuJO`#K=Xt%V2VtAzP=.=Ft,:L}A7ϸvw)|#$$(uqrOcX]Higb,A/E<cxL>~i@CPw4I	oFFhhR!f>I^E[%3Z`b		N0PK
   1.\:M  _  A   de/cardcontact/opencard/security/IsoSecureChannelCredential.classRJQ][G'ʹ~7h"!K84s	
>$*e_֙f~}{~,H0rH!Mr۵	mp,[ c" rjGZ;-JiG
oz5u-kuSeG!+"3%}յ~>	&5_5Q$lG:FޯeE0j^G

ʃ-cv)6<[8-+@#<Wa_ՕWz9vmzo=^{U}7X%z
D1C_
$)rTB	T}YYy=C	s,2rF;c,}0) <ŕ6ӘX[򀡻OtǂTO0_rW|;PK
   2.\ל  e  C   de/cardcontact/opencard/security/GPSCPSecureChannelCredential.classR]KQ=XcZߒ ]I#UC@	?|&7lwe[C(qDE3w9sw?oXK@D<),G]ݗv@H*WXJa)&!uec{n 򮤫sk W/Y;mLzuSeG!DWQߕ	Tr&x~D=iSB}\byI5+m韋Õ|ózj@8x?XueP.} au.^L'^'^Pj
"7z81W*-
a63"
'|~a@t6_(;91$,ayUJ=PK
   1.\I    4   de/cardcontact/opencard/security/SecureChannel.classMN@6$P(O 6%VU "*쇉((P@}yo p
		%DmT]E̜QjMY B.Ȥ~9)xc^htew2ͻ/nByiz="KY \G?(ST橖MKgZulLUsWlݙKEiF.*583.
07˼M^܇geePK
   2.\xR:O    @   de/cardcontact/opencard/security/MessageAuthenticationCode.classSNA]tiZEQڂ썉%&B	[/jHW,.+I| ,M1A{1gsfw /e!	#dmXx!K_fHW&fvxBp(XxW+DcTǕJ'싵c6&,:ǰ^i_vUAG.~PCX`ػAYNiXyX&`\/Egt;Slxk{4ԑ3lOYg/cťG֛QOnP}avc/"|?|8kx,Iִ'xН`Pt?x#Ni~%h+a(D+lwK-wD\,/'q,N'~9V*
l3ѹDM}%%[tfgt.PmY]ɟ Y>qs'֢%ɵ't\"$A]:4;J^?Ĕҋ{O61VxH$QRc5wI
5<%^MXE-R H݄^
PK
   1.\|%   :  >   de/cardcontact/opencard/security/SecureChannelCredential.classjBAEhSڸ`@JAAϕeGbb`=;j\fA;qV{ѕ7iɆ;mBg,BCpݽXHx ƃsa	Yy֬xB}0ڋZ
OQGSZlԮvToIPK
   1.\Th}    E   de/cardcontact/opencard/security/IsoSecureChannel$SSCPolicyEnum.classSOP֭>dN` ((u* sdH)JJkڎJF"Dg(Z#0cbf_ww_W s(axmmFMGo-
,cV^sm8:$8rTڨ3j]-I+izYppaHf^٬okyib1(6]Pui~0
uL\読;;֞i↌!a$>";햹a6w.l_<grv+D\帅1ļX`3r%H"POFH%}L4|J.}ʯ|Rݦ,ǬLo]߲ɲP9Ss
n%D$G7$]4k4i5T.PeEs[a.YQXM?Xv@s?e+$pč^ X1ۗăH"ɅL'D8s$|qSkg| aD[&0#SV%æN1x&=h?QxOMP@ OM`/2TABL!1Bf֔ڐfMWI<F!
^g>Slvwq)TP=)EԞP_ųPE^. PK
   2.\0>^  	  9   de/cardcontact/opencard/security/GPSCPAuthenticator.classTRAI6D.
7k@("xa3$nܝViYGYLy@_{=ӽ~	 a)1'A!=5lԍf	=b@<9MBJ>	k̰W\GPKn97|f-FXD9[TAm9uF Si$ik9wHwy5ðū~<K6^ʔ:(c3O U*VzHt_PGT8j,)#ȮY,pPT">{`;tG0l-MZ^)ܺG	_O`,_&BJ@3r=m=#%עvz\aP
$ƢMϵ5"Nmi֨`oX U`|L?	":̖1c=N
ZcA%*t*p<&.-9&0BXyDݑ3QgreSB':2lF
Jdkn+nYlw;rI\0qы%#W#5: SفNFhoVw^J<T;7H~Qu2xAs`QKEo
9R)
S1AWv?`W?uJ*Stk]OY7ʻ? <,t?	
~ PK
   2.\/˟    9   de/cardcontact/opencard/security/IsoCredentialStore.classV]sU~NɖJI?0Gi(AhHR6@AaYڥݐ0oǏAp2ʌxܔqf9Ц7q}7{ Gq- 2 |3J*b*9q[S+eݙZQ3]1UtSw3x#4a@d8TBLGQxFlp4\WbNOO^T'[+AlB^ukڴ2BkV-5f,hc|*n[+v<ExH7Qř"EDrkR[b+^bhrS)Hw]n"D=ɰeVR;gugVͰ/3ۀGn̰AfKE7&7phnaho@
1Rv2'4~eZo>ˤ
,qŨh^1Hcd=d}f4,d8%GG3#⬉P3R?M.&'Sxt!|g'2T&4,eQU6ReҠPRc\)W7%gZ&=ËJdmSJqG+b!eTPkk3l5g3U^|ufL]*!H-Ȱw}H2<{Hyj\gϓv=HyVJBH2-:
o*"fEJ4VhƑ˖
z3}>1[<h\|	D$%g;e49VG1 
WdLaKYw-
+ݼnh!*1|_?.),ݕJ)rX+i
/4H)-ф"A,2lZW2,oJ5.{hn@pC#QuUu8AX~:|`N>>LN~w4=b02#SV~[iՓ"`U,9[B@8Ec5iL(yh=|O!ڳ؟<{ݦAoSKhe
%pv}ۏplwlm2ΊLλk+h=sw>]a@
Ha!f>@{XI7%zݦΛpP]zo?udŮ Wq>_߇!lg.&
:#-Gz4!]Tԭ`N
|o
'ER	}^#N=?yw=ZWk7:	Ҭ%A{Xx÷E~?B?'讅ީ
01o.4mx[h@+._}g<~$1Dna{(0y!R

U+WFBEF	B
&]	t;UB?PK
   2.\%
    ;   de/cardcontact/opencard/security/GPSCP03Authenticator.classWw̾fMpV4"Ih0lM !dw, U|*jєVE[Iw>⫵֞sJ?wf$8v~wF|n^$\ꓪJKMZFVˈu}NKMr]m]k2T-ÔLVoMoue- Je(
0OBp:nOY˨TJ4+Yj&I8Cԧ@}2@smKDJqKO/9rYrJ	'!cǬY-e-8Kc<5kE%DVzZKE,#45"I=;k gl*	usx==h[վ\#c1&
S戞HI81L9
/K8sX6 g+'!T=ф Dx#1="5
jQ'a6ڮhfNJpXd,SPePP5a	%iI#;z\8m֒Vs|R1bрx0R
U&6Zf@(Y0ajVp`-yƙ!c53qVĦK#QK5g|V1v+J;$ETvJA:%xz9Zp5cnj*{73@;jj゗PmŶۣ`ZLr!5ƺJeM
zq-*e3j u3t2-aDnPQ>~$l9 1 cPjOhtB7%tre&%8Ihl\KW4ed`h-&!3RZu Hi&HxL.%	&c3E
 Soի"N7)YI8NAUmݱG"&w*kzK6T
q7%jb'sEw^a'C܊vvY2TMcPzMNYdʌ!]b03--o؉v
;Da|W{"s4L͙~'SlLK%\|:a]3N3ښpfv;Jܥtjb] J:M&kPgOˊq*(KP~Sڇ#gM#Rt5ogSĜ.-Gkf(";Zr%բ
gqPŇaMn NVHUXyl'>9c|˧ɩp %1%|!{_˾9ש	ynH:wl<
.{sm?e&SW/
ף⤙ڈ(y	zl*O3h7*]Zx2Y&B϶L5۩YF*Wß8d/IH8XcH+ttZŘ&{3 (]fRi-wnaͧ|==S{6^	VHI,&ooZY{e߹/l5@Dܞ`菘CHT+AͶcre|,ai9+	էei98-^8ߧ*(91wN̍Xy@P~!5 M^N䴠+PŧɉP؋g {'pV}dJ!yRFU{كIToN)p~]
η?S	E`"h傾|1(荂.~
eunmBGoS4XE&!$^NpZPj&΀t`	:kЌ/F]Foz+a\mQ1l2UBfCɩk-i
9UH8˛U
>O=KѶ!?{Wrp;Co[пGoU$Xdg{]sTBr860$qll
.¥p7k(
{wtoB_HܰA;*:)/QFbi00Ȱ 
fa">`+(&61w{)Rz[d'l?!~:s{<w>mgm73vgU(/%L0?&:'xrLZ1 靘M0k.{*zcLR?ar}};dRJ1E9]7
}y2Z$(nEnĶgnӲV韌3O]Lp{;#iio/}UIR'rqliL"1:&`\Io$V/,sv>{Dn=ėg:{g3]tzv0[h;^d6r|+f{
~o3~غ:A;{̕:/o8QB3_
peDVuыΈ^:dѻ-"̍K!{q?_T%RAYX̣
xևlYF3(.K`| 
V7Y2E:z~5*'	wvs.E;-g9	M+/(F
@
@
_5|5%M>n9N17:j6gx{UD'6"pp&dV0L2c9$t1EP@]>By:>_l	O\\ˆ- 0;H؎vcgxn-gB޲^^!m|vtlje*ywiX߇4̳D#_PK
   2.\A!ʭ      6   de/cardcontact/opencard/security/GPSecureChannel.class;o>snv&FTĢ<_85(R= LuHKag`adJ,KIKOJM.ag`cd#hI\@ʂJF
`|ڢTfPmp~iQr[fN*#@:.`d`bVdg 8$ PK
   2.\^A  O  ;   de/cardcontact/opencard/security/GPKeyProviderDefault.classUSUnf!nZBݤPmm%6l(h0x\6MW3Z:Lz&<gwv={6vR!n a#x<r뻏E`r+<_LgMaVUT+l_sps7Í@ܪoz^]$ùRO|
H8gm$+Q^S1٫ROa&.`!s2eAR5*"]G(wM\%ޠeI$BmM+ht|^OץfL\Uh Ð@PAuDHr۾
EI)L\L}B}aqY_#6rZ\sZR2̞N,4[j+>/xyDQV	|a`W|#O$UxuǙP.M	S=i_),ɫU
fمST}E)h$hI7h?whGO?D-Eg82ik:KuXe i؍lXvuD1MXAJ7քڗp8)cZ_1LoɺejU4+N`tUO%)FWy}wv ʮl2eӫZTGT¢]d`5#=Youe1sEPx
̉4p͡$v0.o1]=?"+HMg
og(f${}c"s1	\: ;$zKVtЅǓb.R2F(cH#DYS$8=_cO1Ek89:nDV;N[>TXT=?OL$@9ɩgDGm"{GuӔQ4Ff׭owQ*bpF GX& KO+K+EX*bPK
   2.\AE=  /  2   de/cardcontact/opencard/security/GPKeySetTLV.class}RmkP=otݪәYum7A"XBGA4Ͱƿ (Qꓬ($9s''?}H  !zwmϕ-
-.2+#UnT*XPjXư3CE1v96taeCRSİotm+^͇RxneG\`$pu9T[Epb<-ñܞђ>	4GQ*hp/.5T<eR8c߷ƦɆ`]%\fX,4YW=smPpa5~Fpe,i-',R'zuʛ/AV!`z-_Lɾ)7N0ΐkNԿRk8fg"[>L=vؤlXRu^m&P2B$ӳ@'A4nП5Ti;:OH%/^#mZ~1 P(δ7Qg}`!~`c#A;m#?:heRse22benE PK
   2.\c
    M   de/cardcontact/opencard/security/MessageAuthenticationCode$CBCBasedCMAC.classWkpT~nvlK@EȕDH$ d]Id	*hmkVmLk-hQN;jSVgL[ BMJcu`ss^}9ra Ypl!&hCX4i5>;*뚄LɁ6;UdMV26BBp4lTpw7>LOax^sSsCmz67>LY=u)Z^CˬP(b21Շi(P귶}XMsێ+L貓-DҊF}YHDhWM{2N-g?)oGU8U$P:U,>(co|nfBH&7(8bSڣ=PKEBX4]z[^|
χ;I/I_aq$`MKeV굓vkEQ
Rh*kI[u@UWݽLȇ:)v;3K|8KܡؚpԊf67onR.rQ(jw&ۻÝ
QIrѹSr-E>*/@Cڇ5Xp8Hڽ
9V<n
c}gaV;oQKy-
O%oE!4&)?H"MX=#ۦPzl
>;
cjo#8U{	;)WcZPiЊS)ǞZ
OXwP¬+fA'ރ{?RW*0+tYW)@Za%UEaZ8՚Y⅍N7|FxRpfd"۾6eEx㦓+=!Lv;ҙN+C7{(xҗ</b"3='T;Vo1CV<,Ce3Q=5%by+g~!4f/yzי/de P5)vԎ[zl\,8vgrL-ep})gJ/-NbE䚛7nj2yV!RgDbI2X8|ʂR"ePgE0ٯT<h	KnKmZJ p=u^(iX7x&rCڐr5K:\PҌW@c T/y;sͭ	tE:0 |\B~sq6@*꾞Vo]pnm*M_oG;~\G
0 ԡ
I*<Mn̚@IttbF*ѥ*tg({Ur4j*<ڱ!.+ֻcBiBcrnfMM6CeUiRĴtIziښϐM6
p{7;$rb/a6~ #QC[@)ZVi#lLjnes&΍jILD6(7&r_0I`rXOF
E{uCKjG0(ޏ"CB$:ja.J2[2m*t	R]N.t).t=(֒?L_[Oc{''Ɠ)A,z߽/_DX,d0zٰ:NMNJw.	z|ٔ7q'}*ɠ̷ׂcFe:8fVR{eǛ2[h,~+f_#Uŋoա %Ax
h?e1{S	g\/aqi%S#KI-?uagx+;ڳ7퇛sRx&]<y[\,~MCo(x78~;:{5#Ve|^M;2I~䔺Uh%^	M|9lt ٔu-
8t?;di[?/nѣ'O^D!'
IzA\:O sA|y\`db1bC10eNcQcFc>ߘģ.c~)tBh/rMGmDpt~ELwB1Ҙ~ȘטИn0wytۘ.0+#EWOϊQfԯ2/6?530_7/5ˌY2֦*t51_A/'N%ĩلi}?q~X3t8Ӽ-ҫG}'qH,յU]D\<U]9BcmDVDDD[k=b3Z&)&LhGDt~X+$`]UzZ\/ԛ5#bPOHfJ,5}~x#ܴFdAGf\h7
X!0e?no1'
R
OiމBx|[GPv}??Gg_z#X
18c1>u4s\3q5pµT
W;w̉
ODv:\$+x:]}1<9(E67h̹fw?poS?}?Ufvn\ed2G+0A'+0Q`jH6jB, }e$e4lxp;W-A<dY<8_0PK
   2.\Z    J   de/cardcontact/opencard/security/MessageAuthenticationCode$NativeMAC.classT[OAf[mYXAnz)b %ƤjvҮfww(|YjcFcLsf;ߙ3_~>E "!
vMXR]ak9Ẽ,^EXipϴ
$B+ezxEQ
_?
Yl=
޲,AK4ѫ*1rN"kLP1a<
[۠$d]]0wA(].jAIC-DQΓ-f&F1	
c5JB&0kj4-^wGs5u kZ"_?߫
Imj;[AbAjрlc7̒psPغi?{0D̹*nR:ۅQYV*n3u}6e`DL#}drzLV^Ev1Ħ)	-o2v[۲,lT
jJM,hX|FZ$`vgI{Cz`HҧPߣ)FH<h+Ak8^avaqH'"IA(ȍ~ D7phnh<XIwK vp.}c?nrY*+Amda>CmCG"PUIaj!xH%Bp-)1c3vX3X
t"۲wPK
   2.\LFa
     ;   de/cardcontact/opencard/security/GPSCP02Authenticator.classXwZieo$Q@lˎ(	1)ŖG/"Šim-b
R<RZh)m!B'?s=]Y~szݝsΝ~_E ":*Hؒ3bYegU2+يm:ST|䍢cfuǲ%vEӹ]iy(+)]X5rfq4+PUc+'􃱬=UrX,
Z[>j8bыYCBsSЊh,شܻĎeаRA+p[n^e9<U.*zu':۶akŶIMӳ6}.njZJ?ܹqmwlP̽^F1W=(T[`(9UT$a
Q7jAH#qH6tǈd]"f5D!܈VA6	-ls$I@hR~-(Y6{̒3v͙F;*n	1#nqs8e)|!l-mBcH	nUqKX5fL%	.#\<;v
nW=QtT1IݶUZ ӑ\DRen;PCxBȸ{˰.I1V/B(bd^נ;gKn%#KN6h7ž0.a!3FJIƇB/4*Rq7a.!vS)!@Lb]iAX(T^	(/լ
"w'Q
1*	JiSM.$\{).5 rt^RLbLHZ҂iJ-a$awr\2Q.UaD{9		Wϖa3K"U{,:bʥc*;GH;ٳ++NL$=zE!}Lq	M dp1Dci|_3*~ggҹ★Xbdn R`$oqD ŢQV..{?q~Q]KeD]2N@WpA(]_K<;~q+G z͢_?`iQd!6E*ssq#,9y/ɋKfOQO/)Mזl+K&Y#L`2r\@o|v	9RV?{NMKJ᩹	[dLXP5KX$\LŁЍr%Mc
1.f9>("`g}|U|'
kZ\%.z`d/Aט$\wd{"#4UNS&X7m2/,);^3+7p!DN'	gg'15a'#e<q^{$W=b`7ZXyS%cKKMYSc~.aG?Nv&uG&:ݑrE&m8G]wd#MR3}If/e2G_%ܰ*k^X_xcl~~7 $;{SKtRKrN3X}
[#ncq4ÍiD?е_
}q@]ɕ{'ԈP#x& ųv_g
}ũu
4o@Rpr׹/D/jD9lD/Lc'-Z|ڣhw_Ϡ/Q-DIwΊQM$!	W'G{<yPjWRt)mBa0V"q

C+Z`72<X!wa܇q*o_5X^/j lϯk/B#"9eN``{4|'ƶ!!kOnj=贝}s3a1;
cMkzhsHgp Lx
JBnU6CkQr	'M\{&ڢ(VXB	"hQ"d(N1|.b[
i ;d$
pJ˖yK^Y]xkJ3-Ӫ~~9F.,}K贂ZsjrQaxR[s>K'}QjAa;9Clk3J<Đ4rpӸ߅6`n<u|}WC~3w<C%Gsh!WE%+ͫ.[}7㈗LV3NUOOW477#H
Nu	L!^ŦW"ת]hLK=?K'<JL.et:,	u|||)neokE.l/\dCX*b@uXFYus$SjOᥰAE&|ZbxYJ4֏s3ޢYw1J򎓑erryz!GIc'H8>f
ŗWSi%#u7?rS`4SϓDg8%Nҳ2NO)%nZy-MFLfySW,?gr;Nw@ZȾtχ1(||4<M7*Ar#r6P;{.%/v$?PK
   2.\UWS    ;   de/cardcontact/opencard/security/AESKeyDerivationBase.classUmoU~nw^vƂlE"R)/u+/etw3;PLLLd1&>b"'?ϽSEŦsν<{_8BR&4:}uQk5c׋ߔz{(
.F(w0 >&
LfFƄeclC
W>Q}v|s_)4zM;gc-	ݨt-[fPYmlfʠ
دtgfH ascFڜ_Hf[GKM_?Xm;0hlʽt[ s.n6clF^K1^7dag#e"=skq8$`eoQ7vIW2LoRclnh
.VY8a9G%ӕt`BǤ{drmU%pj(N8(r:SA&TV&5A?םEr9QR_A1,燞7渟['thbgs=;)j54e-i۪E
<Y]eEgݶ*05ؗ;ǆ)~QF	RgOQAyW$BݟUB>ѪdۜWm%#*AmCהIj#," f~Xr>ŵ)a7,p8a&5u3_>FofLBژX%HJ:4^y,3cٽm)Zӥ-1")4BP7t)msSy,eӬ=.^ɤ"
SY=kՋzЮU4)0-3ijJ0Ǽ\Sګ|ށlFT(Ɋ8&h}..CL:.#G\yr.~@M1xl<LzocAVp{uI&yڣ)zs8x<֋o%vwig2+0&65qe;*SNF7bk`Yāsy/eY8ry{k$eG{^їxdḣUWqyv `7ُY2?G>"Vaz1*&O'-3 	C
=AUD=JF0AcF]~OPK
   2.\Gu  Z  ;   de/cardcontact/opencard/security/GPSCP03SecureChannel.classY|Ty&񁄄*4Q4	y 	 KK2Lg&ֶn[>l닀vuvWvڭuuuZ|w&$3=w/<3,<Z# 
b;x^<JWU6 !N]<Mө|,KgrN|([e%wZc3 cɔY9ۘlV216`*!xIO13`,.hWwų{2t]G,ިT3ml.9d]Oג;YC:yEo\(fd&g>x1䨥`K5jk=ljJB:e#u67
R,Poc9.-j~}N-RqGpiՙ9L Lu-u鵱D!\+,PWrQ~DSAnKs)Z
\N&L,
fX?' V*WŒN2Lo3*]ɂBX6
}O6}ClӸ`8fec-֍˞=3((e=tfijl`mca$jcd_[*ӵCڵDi-ȧ&U1X`k:zmDLj zU4+^LŘcw82Nmxm,tNSc3u%.6ADpBSe*nˤS9i
*I
,ijdtL:KWɁL"wT4ʱyh'{Fn*Xt[-4W2dq#n-E${q?ƟBr>njՂ3c m2崤)7)gK7\<AN,qcDpZƟp'LPOfbY[jLcĝԏU9d;T[a2/DL4|<6oۨ*o9
&F
կ'ӆ4{㙹_]9BZ7np?\ڒu&60kd+3.rc*Ѡ!h@:+pFF_.8KзcƼ|NXek
Y0(1RwT2um_5JW"a/Rn*}]OxJ?̝:"fሠekB.2\zܞF3[DtKg%s놜!GAפ+__윓3cP
6F˓`S{n[%:u}Ww)Ƿ-P6.Yd<CT<`~h;6R*SAz:AO@Ԩo'n+3W泓PI8=Y^a0}V1(5?W\.:<<_/lxi >uf"DcZ`񹔊k[7ڶseWǶ+Z;W/+BF=yk	Yڽuh[kgd/=<:e!2>ۼ8]I9sa'YKTL4%䗃D<Sƫ`R{2t
nw=nT366ƲI)VƧXObqLYe\#1-	;cglKJTfwd2e2VuB v;M#[fCktS9K"<\ll%r!uaQ~I#3\Ș>ː$wmf2;I7;GCZR"H* לU1ڏT9*s[1P= 10}R%:ǽdbxh8Jγ'F48:FT`5tSze:l<Y'74@
.72t6tVڝ..СP6J%"˘oN<Ӊܤ\+d%WhSyL
w9p+ULt;glW tK5v={2[ϼ,8Edi
3SkF	Ɩ
DQ&ɶr9KwN[׾MJ?8oZ6gjoFsH`?d9OkL{Liߧ01|wq[j?L5a0|3 e{yv#p#paX(j9S0.^xUյQS%_WFQ(ڊ˴٨**41\*<5':$fx$ڈ	ۻӰ;h>,C?UWa9*+]<s|YS?qY"tci=gZjtYfLf/$-k̿$\F欺]?`̔ܚ
{l[9~5÷>ffFnD>Mf{.MʲCD,ͻߪs\4:gGKOamG~6>omxdE#N۵#8GCuy>(qzXUz%RWQdhR\L=_iERX{UOaRm*i2ݵeXF5aAԌ ?(a7]hZ#jCC^%#]2>y|po<G4a,uG{QR"Rpx%<88ǯG܁۠sFMQq_>	܏Q$d?JN:o}@޷#xD$}6Hwh$@OUiªyi(µ]NcPU.ǰ&9՛I^JcTd,)ngs
^p?2cx!8i|	/˼#=WW	_c=xya,}v!"H#U^cmt.{'2Mgס J+h1@ޕ2D":?TZJXj2GQ&#Ë́sŔ:
%I(1Q'n0JRy̳«閇Bn[5k%#x>XcN-3f
!%3pp7^6{+@$XT#B|5bi
+쭷D+Th|qeTJvUթJ!&V	Pt1A~\?e-}rZ3	W*,V!!쥀Y,j(w/(5G[)S=^8
osȝ=d:aZzQHX4rYQ$Zq=3i2vdsq7.\]%shC(sD4l&ehSfFjFo3,_"*s{<ɿsX?$Y<sg<_1s܊_y/o~E5gYȝ`E,^e!b`.Ng^Br祉̵5R&=R.Bd씩r#..%*_̒oR^
@~#I<O.LJ,OzdK<d'&xvR6p<r>[ԧ'W@M"u\(\XElyQ*D<<CY+
fqU?ThceTM!J0$VhwX3YQUL*opk-GsL7h
0֟7t⩌i;L5QS(%7Ŕ]Uxui|KРs4{GBC >mϾ;Gce~nƏ3
,nZX)RY5?FNVڠr%҄:iria"xYuIr5ugd-u[֛`XO5Grl32{xFGbnht@> ]%Z27F@ܥL<_<DXU-eT]:x|sJm1ԛkFPY]y臵pl	^tKWl}\_|=O.C/	P_nB*՗2}k{5P2</5[L*D?*JYEF PK
   2.\              de/cardcontact/opencard/eac/ PK
   2.\qu  )  =   de/cardcontact/opencard/eac/StandardizedDomainParameter.classTrE=ۮ1Z|'HrbYK,96l"P%b+JQ| _o)x!T~gvʃ#tݿ%*
jv25zeGy6n]84wlg7Pb# ڲJSR>*W\1$QQwu
xߎME`a>|~%ƺj2;^.2L
9ywj|η^fx)te|wPpC3*RWpUAت7\ΟJ̇fnٝ(699<橫/!Ь흯R=7fc0fB%:ޚ靥t7boDDmiZ45$4j0aBäi!C	;S顂2$C/^v\vpn1dsϜRAܰzl:\_&	S}I^IqTBU1NTT)}OAJI a}m}*NZѪ۽73ˮph}^|E,Ϻ{kn`} ¨D&1.1!qP1'%NsD('K\%}ʻMlb\
<&6Ly5P2'}K+1>~zh
9KudfƟb+0THB$cvPC \ٕa|*=\}|.rI?,lDOsB;PQ
wh@
u
֍yild'
.LE?2?(ab5cy/$*ZX #
	r^u?nHMGG M=&	>8ƥ:11@k4hs
6ptY`@#'18|>PK
   2.\           "   de/cardcontact/opencard/eac/pkcs8/ PK
   2.\@,    7   de/cardcontact/opencard/eac/pkcs8/ECPrivateKeyTLV.classT]S@=K)Km"PZVJAӒhdˈ?80#(&L&s{&?~~`*S-WB3]0*diOˊW5aeLDH1ǣys˕*@sMpC4yMOnbMSd *C,BA0vt0(^&W"|k%nMHĽeȥk
Q5ieiӑqݸ'^1t50
"єQ)!ҬX\c9E\sd؋3tXDYXQя!pqB9gy!W00Hʒ(lya;XyGSo)050ǥ 0祚8
HD6ʬ*pӳfr_s4(de.wYTpq=UhbwT
F$<bn#(q߅0,Z<,]?Y^BwC{b9[~
iZyjwJ_ԍ3?$0s#oY^j]M=ETaHD.TF$i瑋Emӵ}.Iw{A e8h\YZf_%B>b> ]~C~uA:~{	u9J,Σ
C$>IH`IlB#b2ޒxLuz/
lR(POt	=ݜ܇0}mo0u{{ 
q0|`)ZatyoPK
   2.\  H
  4   de/cardcontact/opencard/eac/pkcs8/ECParameters.classV[WWI8"XAJ aVB	&0:LdB~AO}ˮUZ۾/> >{o W}H*Dꆫֲϫ68C˨i
r|gSs9	amۥ2EgZ~fTĴKN%Al!AQp
w3dg8M=՗us.R{XA	hZ
=ic̊JPЉcG||%%D5	&mT /f$Ù,"KՊ3ȥ]bׅBCPD衄E
Z&مpc0./rqsz2䌌^Dc<](	<CF$3]	[m\d! ".Qڊ v~eg
|$2qY5>`z߄1+<R.<MfgdGN;;-c3IPOm0pZ)sۏ	x
af}K-ˤ3WmVq)%dd14EeS|pP!BNQ,A7e8TgIwՍ1%<M9zq3m.oDlׯ}
t'&wd<CC(:G
t,0S񔖘J~Cs{U-3N2uhdW\^pJК2m.-$,..5;xnIv {g T>6=n?%,Iکangj=o;MfO]ƫPgwwQjܚ4m\|6<,BU ѝt>1({КnkZ?}Zh*@5tOO~۰l5_ln0޻',5\Bͭͭ/df4i+#1HqkppYUL`H6a
w4~^F"EUzK,&Jd=O$E?8-o;Q E甋	ofCn64<XC"T4agLeI>F͟
WqW[Ë G7byqXJTn^2E)|}yZ!A)>kOz7-@0P[v6w=9̮x,J<h->~?PK
   2.\¨m  q  6   de/cardcontact/opencard/eac/pkcs8/PrivateKeyInfo.classTnE=;YgiZ
PuNMC)i8!Hh::f=乿@E#Gg6NQՇ{ܹ3 >CCHHZƈTCڞ50Plڵkۮ<)0Z[S/R6^g~^%x`
eջ&XpVHUuwHbyv
vME~Ќ<V%P)#%\.Pu߲Q9~GLL,&$Ri:	B[ϤJ\%HaBW@N4	/*038t-}ɶ e"ΛaF
LwI-m5\g0V0PԼ9rFީ4dLغ>и)Ă.nYlETw[]@2_xX(aIjm	dOV;ݡ{P-o	Ojt'[
;~ ݝ-6Ւ::Vݍ|o&նϾZx0s%~1=FHm(Qc
gUfoY':t⿂H\kDݸeq5Q~B?KFUΒT݇(G{8s_q>?0s=dFc=N^ͥ=c?ZgY v<
qd>Bl>2<w>_H-2Xo-"2
,g_Sw
~*Gx(ρx,A{_/p3w00ej$crJaĹS^:%#D8TYUi͘$[\f6sGPK
   2.\ud  \	  E   de/cardcontact/opencard/eac/pkcs8/PrivateKeyAlgorithmIdentifier.classVkWUݗ)TW-}Im$	ar!Lag_.tIcar9}Ν<D)&4u4EzAL+SŔo1@S˱s3
sЂVu-p+MQlֳ%zZLUKz\AD@ѴFAq/U$˃
cˈن+rH:>@'#0-ZEe&<XGp	5\х`BkRCGͬlHS5\ 7jcTr'rg>I'SK qCM3հz%8|L#2)Kr1aXF.glvYά
jV11|,еiee"eW:c*ߊ` np_JろPP Cӧ3mE0xpWizC'uwϤAT> #INᑚȗFҗfcS:^@vz>1x
}l¹lk"p~_ȅ6Mˑ[]Ӱ
ֵͰZXՓT"
v1kj"kXd4>rLJQ8M$6-'ȀGl]="'ʻeϔSVSS7d'\W3JY݂3ՠ[Ζ[2v~pkWSߟqb?^O'.{f"ivR2
ƼK%S-Ch;*H/i/Y63{:s>~x-TgjB|9fg!]ζ\_p}}?F{vq CReR>YC<ˮpx[1r|2fs&.|ۄ9vBcӡiA\_b9Ó/!͞L<	*S%-ي0<D;&I=Uwj hh]XƗtCj!VYWΊ؄PK
   2.\6T&  ,  /   de/cardcontact/opencard/eac/pkcs8/FieldID.classTksF=ry
IE
BD`FG ˪f~_kii?G+-ڣw9]Ͽ *  !4l4',[}i]ٜ!xآ\yH~+0O;>e-_-pid2(BM(rQ{1W~nZFM"0,Rh?+bC\T0a
0$CkKK++,zvI_N2B\B8~M.osO*f0/5\t
]jq!3oX=xm
pe
+1;Oŧ%XaX֚~RI\gHU)xO0~4[nxJ]> ~@LJ#+07	jogz\7+{=1\CnwGmXv|븥c|0JjuZ1t.mC_~frc9ahb2]T3_T-2d{pgDrt⒅N^ʎ+c\ؖ[GccR:Ԕ]~
#&AviS/v-?FQ9ބ!a\Me6m7HM"%ZؼȴZLAw@虖gf(`:DY~vO8Է=L#;{_1k,^cM7J:{4.4%8IOA%\,ze,NSdL< ggإ3
*dN{*(+(	n4^c.RCKGQg{q	Wj#6j#5_m'VnW
21%Y;{bZ7PK
   2.\u &    -   de/cardcontact/opencard/eac/pkcs8/Curve.classT[S@=K)VBB
jB0>ZVӴ&[F}o_fRl`q|H6{wW 1g1$hE8
*++GyNQl
=/]B9c
$Fv,pxNLni@2^c0BIU\U *iw"S|Ez-fSIϙuA*c
$1;p|Cb7por>WA
%~kV*Kou	_&p"ȉ)RU(-炫3':8XJV
80<-WTjXb+KO3oRvN$w4gJVU80й&0	ʧzM*b<m?2aRe:tM\ksS):9ˤ09cH)ٺ*rWh+H_,4k"(˞v׹@F6W+:3	ƨ:w?QnanuSتp5;.n?T~q+xKqbz3bZjQ_t <],7hI.âۅ[|ALzְwp=z70:"0?p]?;)hz#QJkKVȊۘ4&YB@k=b0boe018)<DOcх
KM1u\Bu\?A*r@}Y*
ڥ
:r..q^GPK
   2.\G2	  :"  4   de/cardcontact/opencard/eac/ChipAuthentication.classY{`[y}+K780$~%΋@"+N08'm%$$Ĕm]K#km:hyEvHƠ/h{eΑ,$ޣs\?xP	VUAex4sQUˀ["bׇT$gp>wm=d/c3Ѱ&x5`قD>Z5mF"5 (3-U#cV:X:|&梔r򨥓Ýgd*I12iI&֟׻%cNaAmNKE3j>NWOoz팝
q"r9Վ|\`ąH~:;2V<[D!E1\	ΫeP&w7zPʪ&WPw)*AltF9AXa+珥q=nES /%a*v2[ѨX6kQ+F2Jb%B}JToRʱ-~2L_rRxe<LÕtyԕ@ez^\
\ab#61eRʔ5oΞTfk_֪6	{킠YEK`ADݷ-9yyw)sj
S{mbBIro_,\<wB`5cOq
ifpԋmZt+#slDy
\43
RޥSpŢQXC}&" NL9[v,J}E7zDMǁpT`S
c[iQ5Gǻa؞MHHȠo*NhܾVhnovПGxp30q##Qu`^&qM<ۑH,vUҢk6}3UqTi^'"v^'`j&>;KΠb`룧U2KyƣzvS_WFbݒ7XFEC&f$2mnQEp
 7>FCWV	\dG7>̧cmNn{sNSUgSƠPKpTVq?U畝]
/p'hvM-Dym1j8<A)΃axBڣɁqE>ƖIZT?.@D.|67*ԹqJ?DoFQ-u#GЃ'񔁯)=dN5SeJFL#I0{&͕Sf;	]?7[Bߣt~f-T3 9-68wE.7}h^vgW4ٶԬn57_Mߙlc(mڪl?sIОP^4掔5@?1SB	T#?/
N)Cj3fG$cIz2=L/T,Ưs*KiF(5̠MU-4IDw&~XY7rVX?*`9ٓ"4.Kox[%pG bH)q-!ь>+w;=n=`qK!x
oj 1YӖ
7n]MOh$2WUAՋTO+TR2ScƖh܊1Gdϟ+C*Xާ#+Йl{x܎yd!|\$mgjBS.ޥܥe)fy4t\l
?a^eJ*~x$DS(;S-Z3d)+^X
q`\4|`gmsgs[pGGNA`|-F*SV<uD`8?kn*%LY2lPfeiU/Up\6=܆

S6N邷)5Ⱥ@GVz٩?j.+ULOyrZ?Ȑu\5xp6'{'$
L(=U+,<fE/EYɼ{R7hfG
UROƖYMe)i}ebax^.
th^	5WvduƉ*o(M2+bG4c3qDvtq2a1);[Rvdx2¹fLѾ}󦝤ۡ
i~znrh$]H[oaXLi្F
aOD~]cSog′P^"K'C4{e2iGLOy"+wLi?ؘUp	._i
PݗcʞP/DUOV+qz-DM/vZ%螀9[¯z/W~{~b!$î~sM͡No/D}_]9j!5JcNMq̫;GxV$A>',&kQ
i--MHy!RRskjO.ŃX2e#<7PQ-0'y'WKkij[kkGy9Nсt
"dMm[GH\6{CK%|F7yv=8QJ*Ҟ2V׫ra\-R9fQ:gxԆ;jC[;@ʢ)l={X._3n,Em<rǢ!/`υ
Xjw&(/+dӾH-;(y-L䚂?sQ[G+Ռo'dv1*$ j`pSyY_4L%5Y̤!YbPn̽Y|dk[+\cp~|l(>h~#B
mb+:,Cpطo8%o_KZ<'xdbՌY{Gy#idt[aY9a*cXsW+)+(+!x)}~lpssza+b<3EWL>{ >v7f{ʏG->58J
"H,]uYFxA  p_ )8̛W%w^$0_ 	qxpJ|TTIYZ<AVV,dZzu.Ks=kF\'KKh	9<*kW<EzeqϡWؾRa`P>Dxjr֕ <oa80[
\Rܣrj!QqUrNp
TU3cH,7,źCxw*xenD?o;E
N]|wDS\*t3f̵4qr?^_KXC
Y~yZ}!M¼HX66;|>bnK;XK^U(wj
[OJԕ$]FR;A5rvTj7/SzIih.!3җ7gLZ~v:UFcƟ?x,$fא
cS/^lsyVd՝|cqwmSEAF	I6aoa ??Oȯ0_'~D95o{R-kLCx`5/7za̒V=2@8w-~*[I+gy[XЛ?bU-_A}ڍ@,Ezbx-+ksTxTdem^LwCiϧJMVV֪ΓExϷ8,͙j ET(.Fn6P7ҐoZG	uG:|Sc{w;bz(Q+s}L3Ws&P#p(f-03Fz8"cH,;6PK
   2.\k    '   de/cardcontact/opencard/eac/PKCS8.class}SN@=KhB))&".E
Bxr6KjH6GXgv̙~u
Ptđ`=mi
CD!N31B1a.LnuC3l!zLrf޺?"P:Z)lnNyP4}ŮhǞ$F%SF/lI6xĠ5DHՖFފ
?m7o˃gتhbRŔ3LMMÊaud6;eY扎24+|jcяj7lG(vajAxu*4b9;\]k'mynھ#~rnG.8'+ijKm'%)u0rQD.E9f}{DTr'm@;Lg>nO(\l;Rg-pEbO7 Qi}FI;=p	=:59V: /`><(J&E"+O$?.^b{+L|R<v>%r)FoɷFQkP,b)*<CDVD
ķ@(c7WPvo)NH RTPK
   2.\           #   de/cardcontact/opencard/eac/softTA/ PK
   2.\.c  ^  5   de/cardcontact/opencard/eac/softTA/SoftTASigner.classY|TWyݙ
$tBB	0
$!JRJ!<B]+.ꪥVktʤ@-eW]vW]uWk]Yۭ9s3IP7?~7}q]z
:p	F0n$7#Y׶X"!`o\sX[`"ec`[:me^h{P]CyF`HG#DֈdɔAӈ3ɡl_[WKigd؈%j*W|jɤ@Mʽt,qLX(%ZzX_̘\JIk3%Lm%M`	PVr@4/\zt@SLKVɓŴJ6j/M/Vb>)#haIFG^)"5PXNٻbaeFBR*'t4h<jG1~եa3(ջ3ek#^lVimiRZulvɣMk:NT"dƬ@K
V.5gg])c_
K|сN&4c	#}J`a9'ݭa0a3tڅ)=eqѧF4*O>8wpK,K½[Q3ӱQ*Ϥ]Ʌ32f$eOU
Xdvz7~^9'3{mcg-b:T<ƒl@ʅՉZb)WIXı*@VGq#LD{Sn+Y!9ffg͂N`eje2p!3MЄp %C߀ިMx<75?lstM:h4m:ގ?fّGtUӠ3Ҡw
~w)R:ޅw|OΈgi= Q:+Q6Ol*x?Ѷa,{ۤ+xesXDI=@AOL>SUN)訬XqV1e1ه=8*{s	ħ&[IX9\VNռd[fo^3[!s%GEͰrɴ=:Pr񄎋i\I|}C
>l9nv$_.j
y:^N3w Y5ⱨʤ]0OFld"S8
*V
_t|Y奟_D5|tR+Rz^
a"=C?&}xD`AcJon~d,5CFS!;ob2
1끐I*	L71m.rycBe
ң`,1!x?~C
'쉙lѳء[+#XOtTfIUB27L:~hQkdaU.q2mJV4Uڍ(I bq9/xl	&gBxJ)wE6gɟuk\4;0{r#fOF2bif-
xK~u1bpʔ')66pq)AR'NOؔ]nqʫpmG9JDo:Q4;	
$5y2^oRAj:V~rEg)$623I MzԖ8)4D݌SLO3颲OQqpy!odJƇ
pSzBhN`8d^8oo2o<d2H79E3U.qW4aJXb4y´.\1BIyoz,#dD.581T,C~H5SDe7F/&l@ݞ݂wV$GޠSq"(1sƁ]-drŽKd.O`lw$5d#dd?DF61|5h@MJRC*ߙco9w(&%
Xȟ1<Tfɛ$לHCi2qx.|)Ec까e-\y~#%@U𹛢0vR!M:p'b~I&RI^K?nQ&W,5Th0BJUfŔ"X<ͣ͗x6q.ˎ'!el_;-!wcjCN
;~c<g
vѲI7@ >2w6 +qtx؈J\N^#E?<8 * (핾[^2
+'HJ:K͙Oo_My%=c!t}V5ݦ<HtK_t\<<NQg(]b2\Ct18a@HEC
V\G2N9JYLvRVPK+ ~&b/BE_MAҷ6mr4OW$jA^ w}QՖYsT&U"dl(vԼZ-cxY)GtcJ$eq<^?$vĳ3ޚ;
$M$y_Hz vlzfx3Iw~MiF<SX\~w:]~Mw}.|>Ox|>dUçW)I*IS\ՊFqW\$WZ(IŒ/i(Nq+e&G_SQZ=?y^<c~VO7*~w{<ڬPyWkj2X
AobUx3VlX"܏w,ƻp3xGxAXZo66|HtxTm>>f[IV|ʶ/	7#3']STm"жA
c!^|s%cՁkKȦ	MZfڱRub*O,~f!)8'U:ŒB]څeYХV2_-sPk8'Kb皬g\pD=쪻.zZ5isu3fgI>r7;kYx]I_Qt:Ns7S_0Oa.a5.#'/b+fJϲ~
D؈E*|quCz5zn71J.6u"@8n&\ċ
E6+Tc`\$VZq/vV_CD`W
Aj_/B,VYbqv-vʵl_+V38ZVLZIjyB5. e<g/9<?^ĿljYvݷYkekC.5ucHG.|\&:Mo|K]4{>6ɤn9yȏن)eR~B</T(^L09Vӝ;THEѨ櫳Pk(ޚT\Q5;5tPANp!An
W+agqa5-b"plR-yzvܩmT	!PK
   2.\CZ&     >   de/cardcontact/opencard/eac/TerminalAuthenticationSigner.class}1OA7`bH,-!*j\c1G6s8 ?[//|0]a9|\{Ϳn+eg{Q-ZZ%&bװ Ze砄헖֯U"']N.
qVɎ˶^6Iu/`H  _/`<mJc|PK
   1.\lm'  e  ,   de/cardcontact/opencard/eac/TrustStore.class]OAaK.R-EYEXAJjxlvKOx~Ax?xvڔP	y=?߾:H2|*g雺f*
?lڦ; Ec&TtMK/
2 BPe48Fy
Wopۛk\7yXpnwcK̄kRь.mPZ4u:pBRm ]ED 
wKT(!Үc+
.㊌*:CoMC-f-Ә[s|;\p7[E
}RRAnzߢKXz[E1Bd`4u6dt35NA;沩g->BCw8IgV4rܩ`4iW2{&2yԧɣ"y4xGr!6Wl-zxSG{ Q
NA|Ni,w4TЭmEjBtӕOS[*Ll%H*iIǷr`3s}g9jsj]rbڠ3W6㨤Ex}xDGYG3#	:\ăS\/G2
" C^E+"{FE᣽	R>=bX#"h/4#D|;G'IR0N	<iΊ,&PM4~Vw}>T~;+@~H-1<)R$'>:wй{ķވ2J{ezQ{$D+#U;;G=<ո^ŏTLq\NgمzF&z(V%siPK
   2.\               de/cardcontact/opencard/eac/cvc/ PK
   2.\3X6    ;   de/cardcontact/opencard/eac/cvc/KeyDomainUIDExtension.classTmWG~&o֍P(bш(*X^HH `l.#&l8O_NKOM=mLRʡ)$3;w<Ͻ3/ 5apӶ]s=wmڻ%'l݆=x6Õ10k7_p;s:Ҡ8!L
WxԩBKQeA'!z`[|S֮eV,w\"
1\	\U]Z(Ie
\yAZ[C/|^d:d.2-/&~s5՛#+pIFf82JCW0Bۢ4H>MOT̙z+G)5d\u^PC|CS鼆W#\W6RQd-blxI $*cd	cwp"oqO8>RvLhgg&I 0|nv5<00P%Dݴ*c]!^gy[ɣ}) _CHJ볒c)Hgd/2\>ŭQ@Q]f.,;1}:3Zv˗M^_6+\lRB;Ɛ-H㒟"AD֩AJ뤋IKb+d|hth7Iy)+}֬|^3dnHp.W )>
њ>'_hCw4>3hy-Н9@o-\<}J4&<5%1aOF(k
C=Gb9!d\nj5b-'}|4Zp80]eN(oTѰ{x8ݐAd1yܦ^caA1Lc2|IF3
`}EMƀ?0,:£x_ڽ-?T+U|ډ&̶P8t96;P?`XEp-4XXii
L]UY$PK
   1.\S   
  3   de/cardcontact/opencard/eac/cvc/CVCertificate.classVkWUR&ġ`hyjBi5PA&3$UWpz$ Z̝s=g}=3 Op،4*𩸁&ihr͍YyaZL+jD:!lW5
Ƶyd2(x6
*ނW-ak4Wd֒i	IeQ#i?n2LCIdPN"Rr6:dϖL#&.xvIݗ░(o/Q;QߑD
2/kۇ.%C4n8URn
͍G622kjV=D-3
TcZZRȍXfv3T13IK۹;t`'Xk
` rx'@yEՍشmäC| bO0{YȢ
XH"'iص,Ќ9*>,%J[U3)tI<^ZIAa:l)=kr` d>J?%eË3*X2
n	C>ei0l_<ʸ(ae(WkR7J!%5e	Ҹ.+FS}Įv7cxƌoFvNe}shIao+gx 1׶`Jccq'4Q@*ؚӽ 0j=3ReX	F 9
,NgŨEkOTjaec973pWkkyQ"
#Sya3ܭj4CefC.φhNq5ý`ծtt%vOu3|gm!+F/Ȳ#?,J4RBkt谼֥Ak1(8юG޽NP9
6rW"ȬtY!d
t?RB?;¯0
aoxX7~BN1
JG+a~]Z|X|'SrJrj8
qb6A&IgҜo1G籏cG)|ow4nCA^8Y}4;@-h{J ީOn施ljٯ!Q/FRuT~l#[pomw_^z⌐N;^l^=CO(PK
   1.\>k    >   de/cardcontact/opencard/eac/cvc/CertificateEffectiveDate.classUmSU=l
h+@l}
F`*lvc&//Zg)37?.[@u&ٽ<ϽOj=hM´xjy4pU2eES[ť(lm	Kmq:E	5^C\y$Atca8ݍcs>SM58ƝfU,h=7$1(C/0.uϭCJpRdU6m6)pJwTL`H!h˼.3WU]c;dv]%B#ByXmays3pM(@rMH ҙ

2肥 w^T!

o3,Z^,=JIn&.cHls%V;ѝVN	|):yJP>6|] {C:H),C,	&h3EeG*QTtq~#Cn.-R^(ΥUyӞWnvr^5^qBQuQM[^mS3'sVس9OViot]jq4w+\ē	>9IjZbVwS>T=OKBn{U?:º
Mїna+by]B>wGKj̞gk
aBh0dϸQQtƐ(h=+Ŧ0rRŸF]Y]y"`"z}O(0:,-'dWo=տןO.a1=21M}Ն1M
\,A>	6h)B-sx@"ԃD;F?"(Spp	z#7	vc` u5y}zN4z(Eqb0I4I1e#e9[9xFUB"4"K0K";R%QznV%c4Z6;pX/PK
   1.\hl  !  E   de/cardcontact/opencard/eac/cvc/CertificationAuthorityReference.classURF6ȸ"N4TPlq	.$4@Ibdɕ$@ߠ3L_2a&}geRѹ|=G(!2LD^tMvQf6yIk2\'[gɝbCxd){=@N/r&(4ta|mě)Z'-ǒw.$OJKp:E!o͝rzIzS@pr@'Sc84mQv+*OMQUa_<D0J͗FQ\$4SR
jUjcl07gخS,z):fvxe!s;Rdj=-ܮK\2
5Fu\R5_y^NI'px+\0
]Մ
ЛL|60#pX*DmcaLjM
L;[">X62
K>Z:`·Dޥ+Yr$_rGM^*	(
r<m39[Kw4CCD+Gn^JQx˼h^ឥ
eDnZ0\$Lgx L4
0*A8hmHylɭyTS@\QP\W9A&%bT)!nDa5AS+,V9ZwF<%KL_<}=h<h
Ơ:6}kڢ"CM֍O%JBԃO0
@;04y4?:~Hÿ=h#sd!qv5ѹä}É]Jaܧgol_C#IEuH q^SHS-"=QzuWB>&Vn>$/u=H GvCPF1Wd\5BE#q6
>V[w{ +AX
*%
_kZH&PK
   1.\X}    @   de/cardcontact/opencard/eac/cvc/CertificateHolderReference.classUmSW~nِ."*51BP  V(撬lv?ЙNu:2SCTL ٗsϞ<瞻 wQlGa
g0Qi{Eu$7eڭ
GӂisL'MR̺vQxOŦH0W3bH{;KhtKV-s^I6i9|p)*F6Ytjx	s6wJeYN)2N40ph4gۢ)TGN4EUZE7
:BRQ-8ղ_ZZ72uJ1C<CW23S䂎-	ݑg$SYջ:\a8F>Pk*+Bu'.Ln~5 4FtDdC"R;;bc>qwZR!75nM-SfR2\?ȴcE򠇊:&Җ6x?44x=%r.Y̒e|7{ѫ(*sTfr.""S>oɹEzu-G,*-kr{{Z7YdsGǜY2n-j#v(o5ubM In2 [vk)f,r7)4YוxuAȲ[;,ϰa]ha?vDzf0|_
zY][yݪU3qe*N08}5Bm/[Rdam=Gg!y`/gs4O7=Z7:B4
!?I`	L=;Z/g0mOt
#z B>έ%zt}(15Yz(m4K/4@ X$zCN!M]g b<oGp+z1+L{xX7 <:!P#XRT'2&#qjO&T>FFQxS) , FoP0SzGIJV1 PK
   2.\BT  
  <   de/cardcontact/opencard/eac/cvc/CVCertificateGenerator.classkS1 PWPm"Z,rSEemMivft?d- ,!&<M篯|MhE1\7
'oږ4Len
S7ΦCC`TXB&#lZDHqhÇ@qG0
w@
Ya-%V'5Ckٱ"~d^UC_frC_$TN
]8b
09PԶDTEmG7%V./}VC7z,[p~L
ܔ'4qGTw]Y8REA'Ӌ\I|c)zOe\a+TifިBB5疲5
q"26:gi0\+,r0NQ!\@Lg?BPB2&V n1>VxoinM:2|8Ŕxܡ5i{Y$Xƅ0jF{k|;3|ElAaEtҤ<aZ;KFD-4JY5ȢXg9螇e!sDVT]p0'\e9\onU'E?@sC~3;Wj3E~jLOF"\w`0®8&*{O\
 Z(ےt%]T;TvFe(	k'COAbц!$zӸGT*R#-()'qRn\0y@PF<x҃b:!5I2vXwҊ],Ț >,5^3Ě݇XdmVo#kXa)Sa
r7\X}%JW&MD30
RtR&>6KRe~_%	ٽKc|U@e\oPK
   1.\؏  n  :   de/cardcontact/opencard/eac/cvc/AuthenticatedRequest.classVmWW~.,j
I+
*1*ZPo%,qPKOAm{Gi?MK=君<3wv .۽hA=3\,݂ؒ2唄~7Rƒʔ弰ip)
$CTf+WwZZK)^LGІ":ނ`ulOePryi*CO|'D
m	t%6:4Oq(sOY.&k꼲= Q
P`-O'ۣRIvB"=xGû:á`C"($ep$m/kxO	KAVꨘ}$N<Mp
'(U8N ᔎ`SK/q,&51,1^Nr'ҫQA.:tcc޴
ʉ4TuJ$ jH6!|JObeO|L;v!&,HZOCaT8Y7pQ&`]Q!cOGw*Ґc4(Ir垘.YRwѥat3IhsYvU*^S
G?HP3cwgcikW-SE۝tsݳm5ɴO)P9YNYK[ywU&`S?AØ
 C
y!-Cİ׫Qp0h4
'I0KU"heٖùٔ
f<ܔr[GZېaU4#2]C2CArF."HzҘ
^G^e
Kj$/3ؼ,}L[0|u>W
+]w"8Rbtpj$>ݪYnY&ճ
ݱaLزŘcGm[Y{kxkڭ޺hׅ)CޗD<#Yc_֠%;Wё<:֗Z]~\"_8F|H!>gPԎc~$$H{<Õ8(#*b?:fw_&UJy&l]Yг[V:PM5VSYǸSS}T*V?$"W(kD0d)`RezV~;>*)m
}-M 0GiS|D7ya_7{+vUo&aT[q?cVFzmX]ňs/ޙ_^6qo.ᱏ	үx PK
   1.\u>  h
  0   de/cardcontact/opencard/eac/cvc/Extensions.classV[WWLhDBXZ	"F&
{;La`3z?c_mWpZmVr3	&*̙/3{?Op[hfE\v^Lkn*
SkqmU'ttt|:51B" ZUpz	%l:<;p"(k4a pDQG|E0*,32VbzC:ްF:CA.`hۑ K"<)ot\2E_S}faIhn":-$MS(DJgѫOEQ#TS({{'/D_ W 4'#7]& z:|[.ڢn%qiq)QpYŻploH4%*Fp$d6o6kS0:&0X۵M6>R_4T1	z|Iv')Rp[EZ	;DlPwRV*fpHӸNv@!"QzSIPHN9O1aiӚM1]ZYv/B4n中}wuj`yt2铢CQExZ.(QQ.GwZ""h`8ZWZ/nQV<&F)%Llr5~
(WFьfI]"itݲ\8%E+6$ufnZˢz*gZ:÷!U+Ior3oLڲKDl(IG57D -zxfexͶB02Ma{<
Gg__1ߕΊ3Nӌ
nB|]9z~?Y~D11Z~ۄ*;'\KZ]|Lve?)oXm=sg"lobݱ_p? ,mwÿ	F˸1Mσ59L-&Ks} Bs9?UA˻9tKJѤv}X$]=ѐ6V?C`6?Xu<G^>˓&EB'nli"%4%u{AvC(`ےHR |/G˞q-|_3o{J^A*ozz>kX0lK|PK
   1.\q`  
  2   de/cardcontact/opencard/eac/cvc/PublicKeyTLV.classVW$X!v$AM4r#Īv#j,֬v6iͣy:_rrrNm=N_G53Z;~5w?uD5tta³UL)n;=
3k.ٳ2O4CtjRSF5@]:3\^;[%eLmcCJ|IP:Ϡ\L5ΰ'Ud,Ypٲ,GJ:`/oT*τ3s鰍=V1 oD"A<aHpEJ@@*aP#:6X0l-g.qSsex4ܑV(c'.,I Co{j)ˆg.2Z~j8þ)!f,l8o[/VQcY~?qOREˮ4-²cg,_O񴆜xaWC̷^v8chdዤJ$
AIn'%<
@(fGIGBJ/V̺hq/:pP<LK6
:~&!
2#
%N͇>p,O6@/aJ9LE+5.Cft+>*xY
s:qaRb1EG*_\
J<xE/p/soU^٤֕$,H]a(#9.NCgKSɱ	*sʬw<DQ
9[p+dd9|Q[ޔ`sI䚆=mx|1hy8IOF]fIŠz$X0[֠!t_n3z}(Cd>O?E+	,uU=th'kɘNb|n6<Kd:7cvեYã;NpLqmng]RRG@>rG2z峧)I4e|ܒۜ#wuݖF}EjLNnYvxp(8(!W7ς@	zp*6\wQm=]Ny/ `v<76Md5/{SM
dTۢp`}
s@hV
7c4tF0 ?h5*`)iHD%L,BݙAbgfdfn(~x
d=xC${pjUǫI#2#kGikwg&RpXo'VTJϪ-FWq_xZ rgTy]{"ϓz/S[J8	s-'#C1ږ˸w=dVq+qz61)gAO8YaF9755EFRP(zg}m9dUF@=6Η
%9h
VTxVL~UZ[uA~V1["1|2fhKF7%`|7&*9TśxK1w[$y; )ght&-fHimElz,|,I#~;cžjT0=_SDXMi[SEYC8~X)U"6g{'bk@>JQVa)QOk?PK
   1.\F  l  5   de/cardcontact/opencard/eac/cvc/CertificateDate.classTNA-Kr) *E-B1Ԕ6M]ʚRFDc/0-4ml3g|s3?~`+
\d^!1L
UEV4RrSo2F.gVͪi3C.VJn
<蓡x/Y1lMi2a6
g^r PӼV>7ΐ;ib(2ƼV7|M]4ybޡn
^I^ Cl>Hzqtv0d2l)qVYjWFN;.gF嵆-hg'	Vb
J=L%U$vXJY!"E)7{ѡ22([ounꙌ%-ɬh/]nxWWn<7yiG;J6ψt\?4*Ʈ>,
_"`ɚq`vpp$yعV_F(e'}>CI1.EREn/s5t~㗸}I).%#O5G>&)J:ƧHv<6qH+kuuDBBn#(ia()NN, <׿N3^fgU3|agsPRVIAȣG>bDHSnmSJ,_;<z`*Slh{c4w*dizfV"lȻlKPK
   1.\?Ga  8
  L   de/cardcontact/opencard/eac/cvc/CertificateHolderAuthorizationTemplate.classVSW]!.A|`,$PVP%mBDhV]lPþ_[V;БN_O	a&sw׿~pՠ
	^1yTUjQsbUh[6͇M=ϭ=cZ=L#u:bd`hJlgь252vAf8Z-f*6gc^۷c7C9'Cun~(=g
Q}[ʂc:-^SyI+GBÑ
|-mNN\2
l|h 8,pxTL	Σ[&MJ|hpLq`_6f8^1@0":dt-t	>~
NM&!p#j	*p*NJ8%407G.(zW2zq;dYNQ9kb؅
ʅ@z2."e@Ȁ+Q5=oYbB+$ԏ	10P[Aە+쐓Yqq
JxoZ[ oΙ$Ckx##Őپ_SEq!CkpVۨm2&9D%[>;mY\c_ӹTñJU1!eԜejz:)C=Dr`.
˘Nsi;ҟ~s1ԖnLT2C}h8fI.|87ɭ2saT}L4/Fe9rcj.Yֱ1TM{AMQ)֦8TKV[@N'*wMazQ+D
͢!Mh^|]-s4m|WPÇ|%|":ɧmkjƂ9Ke<5Eo+%FWbu^hKlqgsl%Y'^K*b5Bҏm.ߡvctVC̏/ 6sr0ӕB$<۽$JŬT\.3
G`U1CHujiС7vKҬ)g.ܢqviy)R_H#+h>As2OE$Byp>5pVd9dʱ/"H2Kq]YA<C7sG~FV%dH<*CG}s]"Ng7ERC0:N	Mҳu+`7p2:;a-W{rUUJV`?8DNRBEX,עM
9ᘗ]y?]W{)
`"]ƕ`ζ!q+Hd_Y'Jl5;TV?HG_MC7SDڕ؉ϕ&Kg^b࣍Db~!ۣ<BC(;Hu^s@h[DQG-8EF7=ͻiu$?s/[4PK
   2.\S|  a
  1   de/cardcontact/opencard/eac/cvc/ECSignature.classVmsU~ni^LiII$P$MXl"b-"͒.u:6E`/e,"8|'[!`s9>9g'] `_ J~4]Qg\E5˹'#|0
瘀/#P B?UG.ĥ@:9T/60Scl⺦Ug*W0E˺FdzK8QTYjNΩFwjaDeU;DygXN$v@lyYtv`'IPK%ɡ̧9,5K2F *$S07}<\eIRtH	o45dyMq[`Ϻ<JE/~\Mg-.,5ʦl=aT$Aii$
6vcJsuiZ'aNl^-j`ʨX@ZIufzEW%Poy%,6f`yjr+Fp
d.fX$sY-w6Y1+rc3Y/闓	94b
;]+-jt_"k3H@a#IΎ:Y%:dijeL
g`;gY}y0g3.m}=Q`uc44WtL	"-$7,qt2`k(6n#W5. 3)6̶~(>2mWƻ<ͱD7v5:<~uXn|},]>jlM?nȠ
\<a7
s[O?q&ε5fqkd% qFq;	}_6hW2KhI,2K/#6]El?֩.kz72<68gpAY2c+<`!1N[O?gp;(]x۸R(#ѾKƞ៱id(9{>{d3o/Gl*+cG?	*n=$9T$yFk\Z;4A$Y8ri	vJ%)pYi:"'u%|ߠRx~5)>IG.Ka789E4gbh>@!t=DG X\Y,@2>DƇgga<x*
e\CDnکxSz׿{qJn0N?*l:Ks|GާH(SE_R=
oZ`'XL	&'X;ny*ejb%ϙʔ@L+1gRqs_PK
   1.\oON    8   de/cardcontact/opencard/eac/cvc/PublicKeyReference.class}kPƟ۷Yn9|[_QM1YY-ւ4+i2o PmjsϹsͯ? `OEQ4H0l\3t4
Ov抁ĈġWe*4Bm_֊MJha3\TKOH,k-v?ed
9qЌ
{0N[#tk*TܔBVU:IeؑcRJCؼ9{EV[1`x>ug(:zpvÕǶt!ޑ3=r\XD7680kCÐ"ıL2$=gEmkB{"v#&=7ȫ#J/EK17FpFu"JgM{S6ql.A~RKlVD<H'6Ucdf_R	};_zbz8!J8u%.bjs| 
`U6a%ddX9VoVԇbڧkk"#0JUPK
   2.\Ͷ  -  4   de/cardcontact/opencard/eac/cvc/ECPublicKeyTLV.classY	`TNfybdd$"&! D0`a$3q2	}imU\k[i]Q4AcֶVjW[[Z.Ew{3$3|s}gw=gO<`"
N.ǟ
vh(VVFBlʚBaqy5p[ RXjǌf#Z:
` c`0nU]έ*cg}zAv,rz#6wƌh4S097MyF&7/Fclc1N3-ͅu;;bF 3#to0n=JS?
cS
ȋq<&
KBPM('+	4IVzW'
rsk,i^uBRa:NL[5Mѡ68\.`m hAP
ԱCY:
0[0UvX/X(hJG!jc>`y
da!4,ұ۔ZE'ܼj
%I镪5,LIkP[(2L,étB0&iq՗\L@3:T8.+TTaZ-yʽXU
}5f$10DiX԰#KX4n6ul s#-Xz5KR1*"X33Z:656LA:ΊK[Bю"b0C+UG0Y4
MqrZcozm	*ft0@,=Z4\Q0@Hasv҃N@7_qmױ#1uj\t"hmшzp`G:$l4sԲlR҂kWt\PRq,"LN\H=7!f0}Up#o%g-Og,Zh,5MnqB`kU03JDl厠$	{p;93Fm
#Qbj^ŝjZjwn|@j	t,Q><͌Q
;:>V*vV*^UÔ-7eX<!pU&9֎!k;&Do?'ݷ<ƃ,!1(J҃k㌅xR2&Ҡ{f聂qic.NmFfTYoTE-.={^Ɲj
NWg.tW0rmjs2j^
Wu45O~YY_ ւS(oun0{2
uXvt伡~EM[:Ydgomq8[:>Tl&G"ԌQ
y-?t3:>NoH
>gL|蒑Zߴ/N]\-'~\˾WTm]FַtZg26-,eBj~t QE/ISP&)ɂUiV|n)LYFe	u?O!MzHjcJW䤴%|T%WfHL★P,e`TY1	5T'F+9Q͜p@ՖP2Ϫjƒ+xo&#Ē^Y,hRK,Yuv#+ԨNqvQIWJ&TrŹUa;f9OM+Q<	0պ|IV1C7[ūaD(%l^8J4Y/an+&0jb_ҹȃONSh\7&?xY[^eU'݃OK~n'͎WiC{elT8wSYʗu9K63B6WV,+\l3`Ɛ>	(+]*+QF]E߬KKJ>?[m)<M9=kQlz.ڶ;t2WR+R1^SR݈%0GtYQo7
F
o歚PXٶՈ+h)`u} R}.fxu
4`.J$nЀTb#=G^8XKW%>5Lۘ6JKlTC[DS?n0t|\M'cTU
_u\m;bhDZ밯l4kI(cOy(I܁Wwvx>8;u5"PXPiҟ\m*#MLHTeZif
s
ɪHvcԳ$j孜⭋tFFUHmxvQp"ksQٜMjشŦl968Фl6^nQfvVnR3%??cwR</H_QM5nu4K6Mc6}ݦomŦC~dcQI]64˦#m:ڦcm:^dooEᄃtD'=Z}~79 4FE;.v	1dS].[eO.K&W8d˃WoҊ]K&r|;t˧f=8i6g
9W&
o	a7pFBp!{1
ŋp9R˵\b.%PX.7:
'l97A\l(y\cM$LgR?S
TA3ٍbWs-ǹ}"0ɷKAi֍_*xƬO7N`4(3l(P2dʄZL{\&6PKg缁29
]'Y948+nK^'07an._WcX\K\]<܀[uF7P=n9lq+vrm78aw{H܇wq/#>Ã yzXqFd5k:%ޠ*ɍj}]A9rLr2Qn%X MnFXG2M6h&4^5FCB'O"
i?\w"{s'FboØzp!G|-x(q\oF.֍
(&R7$	?j	oN+H
Z±]IOXޝ$%lB\u.KyQ C烘߃܄'^LO2i(L%?B5~:bL<O.&=x\ᗈϟ&kt4y/[{4yx
u
ܷe2ޑ|YNƻD{Re9>𡜅I>0HuK;OXV3e:[nwD2xrTZUjD^o҈ܽ|洭#`|͹N%wS-ik\Jr7~j^:RAjs77a~tHy7?Q]WZu݉Yx,-}gǖٳ-EqÎ|(NgQ̜^G:3t1QgjO<;i4i.j'c{I_&=7ݸtnYiKI}8ZE:G!t<+R%]E)E=r
uR7I?`g|^s>2W|>yϿ|8d3ϸ?Whj5aʕ)7J&ɔ╕%5Kz)g(9S|EFKa-2wq9ǳnPw9N˙IdQNe
3?Q-S2M&NdG-FpLȷR~c
M=I|+dgHG.m ?ƪBe>wEqY21BD	W@⭻bz%	iOt^d<c]yzdj>dz&9윥Jkr?^ꑙ.)vKVdK~92/|ٲ,	46Ve)ˊA,vrJVk0A=wxjhGo\gVPjl.,
ȓ9<uA#*Yz"	񘜂CRH)~!RN˕X$CV[V5D>7HeRi0u3sE\[Ʈ:P"c%f54Me٩}ėu5~yЬVLb="fk?o5/53@)<,8Kȣ6cüeGQ,*(MNդpx&5#M?n'RzP7YRW{y0g!y*:W&ÔlłG8K&&՗Ff֌L}.&.Fb?Et"yRoy5/p?+|YOz
Nmm`mƆ7>?Lu푆r6lܖ6Ye dД'
XIg.
{ܖ	Su"Cg
NGt@s{⽐y.%Dw݄e>z:XYOzNhxv.JlNJ0diF]\WCP!Kb	RRXCz|5sLǜJ1O$t)dN'ueg4FRoPkaA
GCm'rShprE
p46bL2X}X.21jXo3,
nSg=,4BxY{2mJy
U>V:8|)c&VeF*6dq6:jɱg:n,ǋx[Y8b3.4:_bZfWZ\7#zgmBz9ڧ2PK
   1.\w}x  u  /   de/cardcontact/opencard/eac/cvc/Extension.classVkWWݗD&A1( 6$XSmЊ	jj@kbhF&3qf>	.YIx
ɝs=g}?>	Ё6UlA;C$Ke\sVE9.}WnyLטL" :Ul0X2׮j(2yQͼFlcX$]*v Ġ8e+yL<ں)ʳ;UBéց2DƋ=}M!KOw o(xS .d菴_u{S6%]{Un8MR\+47-(8p5qSJ}MT\O(b
U]ҒܨKwZۘ_\;8[sո{Mwg=:MVҸޕyr>b'HmV7JR1浌t= b[a;*'_$j݅U
{faCp2
CTESbe&э(g"twta@6]VIRU5 2rdt4.3WdԪl!&Ht

r*
EQKYeBq5Z7jv✨K^ShY3r
{PpSȫdVu43NK?aq{E COv)9MuI-D)rlrXFb'yn4njyZ9>mҸ.F;SO7|:%>9"%4bW'ETM.?y_
ͯyƸfjF+Zfsma!tg-%2!Ylo'A||.CkykN4rZge~\?N/pdgƲ檕bV-xmHrH%(Fɂm3aτ%.m@8
{-*
c/m4e GU4 <k'ފ;>Csg	XscËwcCt87N]ɳdNbK%iG]Д4Sppl'Ny(t"ogBQ~N%Ns>JO<FߵIBy0E|
{a{eܢm|
 YJ'C܃]'ǂG;ƚyŚy=C Cd/W8]a"4L3>Cj|k?A]ƕ?&Ԋ M/M.Wu,v2UD@UuRc
Iy(S;j.:!O
hv]"Gn[C-ѣ 9B
FE(kS]]gK+L'^G>d}@_+z
k=vPK
   2.\Tk  Y  C   de/cardcontact/opencard/eac/cvc/CVCertificateRequestGenerator.classVmWG~,J@KKIxYJ@J(%4monl~{%s~w6bPBNfgw< xGFZ%xx0媮Y2MwTMrMW}]O?&5ǲڦ
p3) +0s(n;ƶk/J`lkrw}M-rd΁^]J0Hz)7~wͼ~PsPk];Yn
3Iۣ*˴!Poڱ&֛p{[y(.pa-t!C>$dP41+{ W IsVaX\ٱe|$]>QpCs0KV~
'wg!_pִu
j39Dn4,5v9JN$k{2h11	0T=Q#Px+&0L`'oh+NHѧȣ)cז~yAJffVj=ȶJpQ3<tN8<X4rl4L"JFc*̜Jf.ZesǶ^j _0shc/Sz.*x%Kb:v}DTY}DVLSF$
D%8eOB7ye$2.f_0tZ͓fr=Kh ;oe).
'J{no0㖮SmGcP6Wyeq6cDrkp3.6CRs-̸*ｇBE(΁&1okWoi.&1:=B#^gɡ-cQm$;ig/[1$Y|U+i/PlP`RA>lV!hPA7mHW I
$|4S*B)z
 $)de
)%8A(။t"]E݃byk\__S+ķi,ȫ:U@UϰEh7F==I5 2!Fq?
xf?kѴ&V쟑рC,psX]-cѥa Cէ$0u
 ~F1#NK 
KYpsMv`S.J
m%Jؓ`Ix(	J<ċjDgPK
   1.\ N,
    5   de/cardcontact/opencard/eac/cvc/CertificateBody.classY[vau""%M/ It؝ef]Emlml۴4޴ԦFlLֶi	}~ꇴ9;]~p̙s~>Gl."W>t͔}W)*
a'Jeu`XКF'ȗta\K35Z4">Sw0ժjna(Lǁ
и9'yS1HalGbO9*{e5Hǰ$CQM5N|J87RCG^ϕe|uw#C@saѴ9~7$0T-OWVȍ-wa&cjS9Q&羮r

3ll"ӇTE8258Q
.#3R+&y˰Г|,;6Q	(FWGnpZ((>_&U4j>Oo<SBkNb-.l6ʡԠ@G`Di0dnj2Q-ջЀ%#BR{UsH,kf8MdNrb#xx]hNb7؊u!ab607=ry*Z|]w
gbE`ua$!u
xJ<L0L%@=e|?f2/Y>u3V;#nPa݋b-CJ@1HRq*$VU3i.LpC]aH`"°n ;"A2*ǥ)3^3*paS]Y#($ahZne$ONrex< N=zPqlTqCt46`؉|%237|agr~NV5knݚn5-'6ㄝD_aJ2IOP8aB_}EJyOK}nmESCd/7!φw[]da.cmJOJg2%kDt??UՔȠbt˃AMP5i7Tj1bq}g{ؒPd: s CAMd
WqU
w)
9 IAIrpi-&0Lro?*.Z6KYl#JZNɿN=wa9>2}6J=
iy(o:1[&*2ȘݏJ,pJAPgg*ӔT	_e=
H}@%kɽn4A	#OiRyKk|'ytݓCb_9q~u-ÊĦjQ}XmEO'c,fYV]j[=R2|T4`J;;bpkkݦ=q?#}
[4M1r8%{bA,J0=AI?h^t{9(kIK}!ļ,3O]<]$;kO؅+`*
0{s
|T*-J;XVY*aeoe]-~׈R{{eu} AnmE9a9A=vb;jH3Mh6iUg"po }&||61:}'!UN6.MBIEHK5@#.HVFT"6s5 Z;A֟$;.뱛O!$kSצM8Cr%HH8(!*a.}ᾮk΋q^|(>>q57(GװcOJ!/3ϖQݶFh*NhZ3iwLHS=`oK
r5bs9,IЫ3X)'K>1<.#+>_G2hb5,;BBGSUKl_?o}-8<ŖT`"yZt؋"J(~
J)u Oa!4!J$k01".{q1³l.tG^lsquuϳNt|
/dd2ǸHM)Κ)/fC@sD
V=4[5XezSҍ.[5AyG#g.q사8KJSW;mu8Zh~KȲ|K{	W-Ky0?O$I<Kh.K9ܿV:5`(
CtC44F3Ns/}E_,Kd9OXMQ&搵ObepTAc.jn` T$Cj*G!C`8]p0LP!c$ng,1<ܹyy-.pN$AK"ⶀ4?ۂTRQL+A:%1/#t{</*ûߟcQ۹
n}k;	l+l+fרkE6x-tlW@
i؉lji,<93Ç#4_P_PK
   2.\Ve  ?  5   de/cardcontact/opencard/eac/cvc/RSAPublicKeyTLV.classWiC=	
bE(N%65I XjGޒa41F#lܴumKtT86Xz}{==ߏ?pQZ:FLnMwbּ1}Q~XHL	z̼DV:ECwF1gLN)8a;f91
n\ *a@~N0w⅑㓉q=^&Lwv*.֋ڢ+z6w{FӍºl#ф.9~33eDQB./#"u%m;#ѳA(+O`'T((A<
Q(ZIn$!;RFظc#$TDiQoĀ/8vQwlW!#ʸ>?6LNHT$2Ã<F&㒅'+W<tglA]v٘Km,88 =z0
E
هOV
^֍yǴuxF`ه0$+̇Y#G~J8Ub蚐-a<GiD<D#
*F1I"-BQ6A:p2J'0!Xզ2LLoϫHIѷ)-[4rJddXfgS88Zu#LQ)'AQQ1_.O"M60]Lg<!fu˃Y./u{i^y#oؚc8IxpW]v+`jT<gT^#w~)1ۚfڇuϗ?g,2N$޴M%Ǘvn%*T+[;ZFVx05e	[",*YJ+\@hU*ɏ7Ty3ߖL:R}#wnƻb-_+0;;[[Xi#ad17Me$>KײSm~e̚>oDq띮,Rϱold(&X0I܈6_q*X ]؛\>՛jz8֢6UVMĄ1*5Uag+Z6/.zN)t|(мɬgf,fscM7#*`^c½ed|c%=z
[E[7L]Km&-{ە=~߅خ~? ۵?ȑCm+PR#(a2Jv6/!Ycm#~D?{yR8	rC=ֳ1-ʧ'xp[?ψM~_p:.~		h`_%ϵ}'K8xVp4ػcrx_	ᑎNеNS14p_m؎m'i+}>]Gj/1`{pS|&)yyh9I[]Ư's5m
oxo9g<FAPa?xߢsgT¥4?ٿN/HuvprSx!Zo!`-\׆jC.\GS\	)
RŐKCK5+gPv;9C2.",IZ_.B"/r	^r;z{\_1P[t%frD<]|-<௤;&ާB$~F(MyI<E겾M|+%t*/FUTV7	I&ȤwcXd
^IQ,ncSw`Yz,[ddj3y\وC.5\q cZ\?Bg
)Ϋeev&$\rvz#pPK
   1.\xbG    ?   de/cardcontact/opencard/eac/cvc/CertificateExpirationDate.classUmSU=7d$-V0&vm 
4@Sn6af7Au2~?J}3}=<yݿ~m4 /31L5ara4ܶpT4-(	OZ-KQ~Ҷ<.-׹G=<p,#AO,`ǏM[%?fX4p͝Qm촄#OLVH#,À212SL}4u#"8p![=dY4Z.CI+r撂pgttj	VhĨ6ͣD}sI1禐Dp)q\אM"X
"&~p?fR0e!Bʎ6Ӄ	Cí$擝[N+M$>$PoKE(XrZ􏁽L!ySIA!AFVӔt82#(X2#gx/ET\giOmPwj9bӪomPT]Ըg~8'7,p<~IJ_#8YL7x; PSQ3uAʠdǧM;<d%n3ŜB)"bu]Kp@t|U
k 3`9[_s$~:Z
}if]8^Wۢk8(q^8aqڅ:أ{,#y3^/|
3\{4ӗR/t"tgZø"fYҳD#?"Jo`]h?矧b]b"}~Oi]9Hti6)x<BlP;?!ߧ@"R
̄ZOɊP&aI$A$FiN'$\C{ȯ?3aBgG)Oa-QV<PVᏇg@ѨJH"_Fd{iWScbtӿ)%,P7蒎b9h_;N5oPK
   2.\y7  F  <   de/cardcontact/opencard/eac/cvc/SecurityClassification.classUmWE~&	ٰn4ŶZHB֢ڒ@h Ԁn6pZ?;ҿ`[OrQlr#'Ν>N_F!D4!0g
Mh87<q 7th5-yk=Y
a2޶qbZg꥝}axS8E1+P5!T֞yq}%˱;\e1c
F%M. ɠu0.C^rv	GE+>5YRJ4aZYy]31]ac
p	'2v{	!lT %ege2507Mb&h#p\2<a32gSsat$_i\'=6`WЖgJɟ-#
njxPخ-$0y1&I211=Uo^GԭE*U1ycRRP"5@E!FYtmQP0%˸a9R0(3=@հ55<SP%DT|{N{21|İpyM5|YaE
 eUPKRG}nySi)t!)3ghJ<~2UJCK;].t60i:_ѪfB0]MK{ƈgX'e?GS0EwZ{S300*xOAz\j>[2HMAҩFiDF@ތѿAèa[
!NkyD9=j'k+l2j08HWژx҇$A 7P#š#,C] lk>.M{OD0LjvȴqG%?oicw,_o.h#}H?|+MQ(H`*z	C-5<}$T1U ~BdDo)	9?i7K](#>lp,Z?Чuш~mP<j-.'1xJ-R--4Di(ZDABDhk0)9~pfPK
   1.\^    2   de/cardcontact/opencard/eac/cvc/SignatureTLV.classTmSX~nMjwy,bBW\
킲p(.	IMnÎptFsӂLiIr99y|#yهz"p"Ls%ՄlSp˴Y.u_
ehihtfW:Ӡ8aCc޵hlז07sr}Rt!a4Z :C3ݪYV3p3Iƍ`Tgqas )
IΦ30
pum7	Kf3O5pe*KKԤ:.aJeidJ5S3Lu;^$M̌+e;"lȿlM@rWm`e?1S!sUQҫ*k2CAJ7f
-#gq}[-gܶI\{NxblfjAo <_$&|rZ3M,W-bGT-9ϓymMmP*~H0lvDz͎>^[qD0Yz-{
^D͓'SƱN_a4cVSWSXu]";å"ÅCiH8}HQ\
0ns<Ȏ:8/>d߆9@ 8/d
7@[]TCNnN3{&=x0>>}äDKI"
CY}"_5B%{eCv:0$1X 
Ѫ52Vhk Kc|PK
   2.\x    2   de/cardcontact/opencard/eac/cvc/CVCGenerator.classWW[cz 7%؁WvbQmlҀM
ر-<􄍛MZidq^N}N_s'H@,?{3mͧ>cjLjs^	;9~vyNjQz~
2x,NeR}cȹtKpSF"#zѸLzΌ#zn{,UܝqG#Oˤtm/
`b6P ''Rwk][xM7	n*$f{zs).rԘ[h#ĤMc:˪/OY#mSD\%jm~?F=Z-<6`'$߾BHy2(B:)PvSux	~?6qD`mQg6i{YW
4JoT6Mi+%ysl5*b>&еƒOX,h%G(,2T*Jq̦\m/=es02hk28Izҝc2ÓId#<}))рa<mFsk/شUIK}I(ii8c,8CH]VaI$.rQyfyL0wTC7`b1)\}ԨsC9j9j,#E'&Ù\f!U~)f"QtWj/-|\ɴ<u'm'!A/+/8I/	A+i̪aNq4g]0:6NlkfL(bp 5/	)U<%j"+ަf:d*i<Q:P'G68ks苬[Jxy_ѝ~ ޾&0PoMYuXf|yxsW{xSQ_sr^~H*mY~60-݋t3TNۮ7簰uo`P<M׽vQ݀@;{:/alxM2xj[Uه(d)#5f9lFS6 |,	wlCGg.OǪJ KlFrּkscrw`19T@$&n( "˼b1uA= pzeMeݘ<(-?]݊8걃[|0T7Cuz_=#h= "DV By;Cqr.y (܋om|;vpRZP+	Rh}M;zX͕Xb
WR&籾W:)5VvV8Jg3o/6@ۻt{x=UTz竨T 7
TbR,q!_Bj	aWMQj4CA+h|JL-E ?$ÏNtfR).[&Q'өƻ3n.z&
6]959vC7qMt@pc$n!7sy
fc>km݅WT{h vyahFAH6t!ȢlcKEW"neWCf1~B/]o@q9~hIKe
(׌D5j}Ԛ辏'M&p?v8;FNP*ȟRcKN:{1>^躇&|e|OCLVo3MѶm
6l߰:H/(KmI}4WǂZ|=nSߧ+Kƺ"]OZ PK
   1.\,u'  -  ;   de/cardcontact/opencard/eac/CardVerifiableCertificate.classZ	|Tlo2ydd  0pK20g	}+vqkŵ@EkŵvVgmkf&LHlǛ=ܳsO?`|@ މ<k(С!1\a
y#[]n3q𺍈)(X{#c˛,XtFB^gME`tGw~2
v3DB	#41
G	BcFWS-%@hӌS\p)(1GSh_SPh8@!ܦq]HX{Zf8bc"J.O'4l8h]
mFP+kc5阂Ҷz\mM#*ٌYN1'*͠3d*uTZ0HOݵ.m'f$31+3|4G[aTsi&g@Ec>NESy@merY&
ǉŘYKջW4*X\!rήsbNФ+&#2A:SeM7fjTqZ0-L
[f0
h,12JVax}l7UV6]YXC&#SoBP2
lVYJD3fp*N9ʧΥg!\8_chG#c<unnbw׳v}CkϚ3y,n2E9a?pibsҷڔ{:I0i@t+<Z I:Ir܏dTGOFsfR[tl@\h/(#YǗǥ:.IGL"8pS-m].bqe8]ԛt܌[zTd(O+ITc=SMS.=#d𳲨5_7ECtP~rF餎=W÷t|1w5>HξSq'3U\y#ꋔ*Q<!ը{
Q|Gã:vb{4~#
6Gp6}%k2=q&>EGHь#1^g#hӱNm4BOx
J[5b2+Tx.E8ǩLLN-f2-bN'5D]>~jb\V=ibU
cpm()~:^/UG):bs(;).ƯtaPf]C8yX(e3LT+ʯ~qwZ/)}e)+eVF;#puBy=t^?fvf8]/>)XvX҂oJ
'/gԊ;a{gU#{i;U1%c:K!){42fB	>̩z@~NJN4cS#NqE.6GgM%_
Ҕ1PMŨqC
5qR)Bnii-gH'QH,FSqZWި	ϱ)3;
_m3MŁS PIWeh0pU8SF!߉2Vqjl1(tgPAF.d`Rt<cMIY-×2Ex1X%i6M[ S59QiR.y	p>u|UWJ.XrUR%<+ɵ%
YY&hCd3d.F&,9YPںh3>iY\
]r.PҖ;#Om-ŚiR3Qm'ߕg]2=+st:Y8e,d9Did(O*f8ltKRfERȟ&Oxa1Vt5RU*Ex,8M`Z裝B
&-)YLVQVBI&¼emY$FB(uQF\)klB9r)so-
gUC
[=%q8O]7(x5٨i`WnpD]VFP]*/Đ}r<L
(
_ɚTݓnV`jt4E&nղ)R92+Ƌr._P	 <[/Ʌ\"XkE1rlrrL
*]ViJ#Q#kӾNբrl˺ <k=k_Ցv*Ϊ	lZ_U|v/TNovo0CmȺrfh7Bw|2NMɅ[>07gpP#]^yf$PN*JMFb]Swva&1bp
Hx#pWjI%Y0MF]~.%}G0?lzH*l`j&<d9˧6B$](u`A1pC灾Ԣc 8s܆&O
P2o_'Eatvc:ئq2C2~!C(}Q۶dwK"g?HGFYwfCKtӞ<5e(VnePaSS0}XE|KIazYʍbPsERk rK*N֗F_] !F$1OxT)74yS-ŵdƙo_)oOu8Mt	Mhp~m[f/YqoX7e<2梬e˭eZ
K870Ú|ȞG^%>:g660XmRs,rw<~b;|?,r@S_ZY,{[Y\؋=]){0V=Jz1:wcZӷcRދH=XXW.cr	֐;;P̗gTCk.`8.U.l*ʭi)Fن(4SU8UXyX38 I
[%He6圌rlgCՎbCǇuiiR:P=3cO@4+2Coᠭ]8#:JXX>1NoӬ_)24ey1xT((޸s7|@b:Hrzsbzx/$^.)E[3Pg:ӏ"ws=f*c--F_>=bp3uC]YkS>U
t]AUj
t
]G@7A ^ut%B*y7]Ik;[i,lȤ9y1C<*>A#ӟ[o1|,wwx+v9qjn~س $*^pRIbx"1{1W~؋,߁)	_
% JJcxkn Y[ǽʪ>0I2JZJ[w1fXuʰa X]n:c܄1 W~<s1y1u	G{JIݿ`Ř sQJ8=81&>ُƢta)10g3-qW9s[XYUI8dIPf&-Lr[hi+uY`D|ԋM@/x#YW/%t$b^KI~GI2=I8wI8KDILt>_O8'RTOJjQ}2y#QI&GaTbW>1齝VBhQq*4Z3bȨcd^soi}	kewYc~?exP.&rgA|ԒSGK?{|:3ɭƩ̉S)JRNEI]$v"J×L01DQFHyV]өUPt*3R%'gt2WX||&ʳǦ#WdDBő#J >s+ȈGNi*8&
TXѶ&L%ɜ099d%瓡?]$M\:;xVNgh#ҠmunS1YQ80UU;I4eoNmZd9Z<ie%JeJZ	}\҂i]L0M^`av+%Rb,p=-!=|Z\YMeN[^JgȚ{e]e>w;FVbrY;p
5JGst^_L.IHFT)E(`^Q[aٶ_(*_˥d\{J{yk{rcX7'brs_9\j<Lqٍ⡶L,N8S6a)~l . pDDlIc*#˺SUyc,L
쓟Ogx39-q,
c&k>E&ݚtip8
/ΚB^|KW;=yE*PK
   2.\Ф\  .  0   de/cardcontact/opencard/eac/EACCardService.classZ	|$ @I !!	A"I$C3O20sDzZ[dDV{ZkZv%}LfIHo' EǜȀM]G&fce`,,'M5!l_9`+(l y2a)K1
OYMeuNhuLD`,o_.a610aFGEu{o:ʪF8\QX7"ruLF菳楧;CTL#h`0Ry.	pf@V%>1sN.gϜ_PwJ5y:Moz@e"PS&,ͽ՝hD|#nsSu
OOTm
2|F#dtf,l'-ұK7lTaխ}E"BU
h_6=e uv%kq
Ktb)!c4Fw}-&c5DNUEa:JLj6C]O5 NaW!Q_՝?}pUiXMX58cL*7%dU	x*ɼ4"\SynƐc6ױ
ii'֣J*b:5havڐ2_(*lQ^/a]z4/p$DLh#lɁ9ս퍖lvu1+7nwbDm:Q3jJd	
u`a@0/up'hN
m:.EIa3MehiQ[DV1T63͎6
kC21jmvB¤@?9eS#G؁E5<fUnjq)8'um b&	n6YiNZP[8<GtDա\č@$LXn^ҰH+p%a~JbI-ݿl7CR)/ůBX*
WּGUJgpq?wrUqgN@`G^w q[tnݭH{`ݣPb-T$ߤfA䞡Pp+!wk@Ed$f6=eܭ>B鸸yImJUA/qEX1
xWQbM!H`c8	%adi'DOxp[I
k}1{V{K/JN}]!36	j8J8B~.4~3БZ_BԬc̵-'Nn U
'tq U|h{A3u7B}C?ܡe~b[׈N|=WnJ?)XJexK3P/OQ?I3ut>?M)vo[LlM]2
grX;!Xp-Ȯ_!S6_xO9?:oZ/>GFo֣</f!gxəhkJқ;dFu]RK!/Au`P[	'=i/5Ug 1̻KvV='ϧ3
&e.>gvXiv񕿺$'uٔH=NdcqU0L:e+I2Ӈp)ƸTkپwrόR"mpM+m4@X=֒X&A$.TPd<Oozŷg4Uv.MiTIP0Ug4KXp&v&7j?\Z܍xΥ:E+i5OЛ]5-8[@2R:
ͧEj>R"P mTDTJKǫp
lG\D8OxI
Q{NҠVק3uZI8(fg.EeG8`ăggf`lHU9ה3**שfk4T񃌝:PJEʐFj0NUME4lsWno\\[]\V K<hÑ
'x\Lj 4mp/! w-:Q6C ezQ3C
mh$,vq
8Mx^汾0]PuWǰ!UNjKF-ݩ\g:W^P(ҝa77Ƚj܊aa3mxNfL/EcU}FK;S՚ǩc!/ˈ,CզZv_SOZd9`vckkX#͚ӝhFF"f_:xhc̓._Os|ɢ4@)X0#F^:xOL>KJDh"QĠu2>WvDs]dDyU1[k7[i`Ǩlh;aj=,6W5it3aʴlᑦG/7º1vN)Fw
S4/V޹&id'nyQ5zዽQ^쭞k
8AX:]P /l
FCsO6%.rtltכΠ7<)s!::td)A-=δޓ+ZB7f-7]19y-R"yS 9<z&Tg0M;Q",,&;ކmrrgLznfzq̮URa^? h>:)!"<h \Eg*X]K?sA@t>527̢^PQvG1bJQLf6i8?k1[nIfv9Dz3	dv/f
r*W;%Ȣːڡ:jU`*lEbV~J;64*R@^ 0s[Kz1(y	{P2uBD.QO$viyF^Fz;KtnR{:?絻F?E/a(@}ɉW>^rQ(jê֒8逝9沩ug B2\X+|N	Vd5K~l2QXrOBI̥J &7č孽8Z5+*[/*{1swaKd\=^ԗ]bh.te1\PʊaWah#۞N9G-r%/YUlXkp6E
SnIXBRWavsSeXD=tt6\jKg8jAbF?i 
hhp1AWܛዻ˖le;Kز=bfCihSƇ0{[1t oB6˟[0=a!nZܙ/>GWX]ͺM}6u+ʾXlJGO|{RV"c-!@F'bD~1"@}vaGpKky/n;
q
.ll}	rB=xx60qN'R;pNX[
t@%DrD"fNI^ 9ᵼ#g@q9w>zzWfGg'c*>$7\Yq7R8wGqϗkZR&^{eDrve/˙/x\G/b#3Zq|Y'#<Ǖ%jz_㗚|\91|[p+'7mcx8xy;8u>X.g2Uxc.@^:pGk\Loxmw-oSޤ	M[iަԀP~0s
 f9J'Nuu-`leS*'v̠JF&ΡYd|s2 bmU2f1NΠzЍ̡+\$<9z4W*
IQo(MbWR|j!burP}`^,җ;$?YcE%<<p%XP$Ky%K-sg33_&
Y}sN\c1ib@p9:⠛(OjM9).'W*9{~amfϘL.Sk/AB!cR؀PǸC'~}7?rGwp4ǧxe+4N*dtT6ـl,Y4FA'Vҝ
P^5;x**xCSNePf?/lS_ƽ\>	B4#l>"-^ꊇ'U\Q*'wzձv 
bwٱt
kVұ&&4"~DN~UiIj_M^t0>SֈxȬFS䧦	{`:&ҀaBza(rݜ^WGѼD%_?FCPYVȽ\x
Aq,NgqF+?˳Td,Wp]ywʃ@mQHe8(isyrc5WJZ-CT=T;O+Xj	RHKq=љk:vїnvǭ3
e	jPƦWr>[W.WZ|g
9 z0ՠ{>aoZ!;K K5Iȋ#F)5Ddң,	|Z}~U}>G/(LHGPK
   2.\              de/cardcontact/opencard/utils/ PK
   2.\/  
  (   de/cardcontact/opencard/utils/Util.classQMo@}"i@!8m juE@JU/l#gHH78!qO حj3fg潝X"x
d(\wvwO!ȑzlfX:MjJKہj/Cx2,\KH[5AQan	_9D)B<luڱ|G!Ua
Tgf6,az/4R{u'ئK5nr2=to(d@9HE!IM
-G+RLns	I0Έ::CYO-O[70Hކ	Ck4+hǓb^o$hIfJrb{Od;^b	A&d]
;HXmtTc{t}l2
ql8e\%OPt1_y8/vJ}\8)Q:(WQmP`|=SF]21 
q%"U,Rd
qOp?R@"dGעXHN1Z@X'J`7PK
   2.\'  @  +   de/cardcontact/opencard/utils/CapFile.classVs=ϒvײ%L m
JHpEH%YEd,aX5˻"MҦ&i6-Iڦb et~N@@'	=o%RL<ﾽw=n|x:]?Q
E x8iDʆu,:aeO*9{<}Ю@H'bWLKꑺS*"	2R*DvX6sk&ӷO9Ւu,b@d\)Tg+eZNONUq}eR%rTIY81tkS#-	i.-8f:󔓴]}ewQ?6`MbTјekokMԏ-ت ao +0j>m2۞ʌH߁ Uv[~P
;hK']D:P;xHL
`P_(5)D5f̄";҃+-}+aB!
M*d[!#Ge>w&Bn	
3Vsٺ8<2 (rU6y[ |N}o_ GڭRlo_d܏*8o昳4/hjT<S^4ȕOʯc~aG$s[W+E'
'Tc%˨i0i4Nk(0x2ώiA'
$bOs]b%\>ɏei
3>gBf5ZST2͍'1Igf4HJp#lEN1)N>&\ 4\d&$% 3'rBH&G
>))T)4)ڥKAp9,C)Ib$"uKNbTٵFy¨:K'2<Yqa}ScO6yJ׊#d-GMNwD:7*K;8ӶQl|{ǟĔӲ`Tʥ?3ZILէ٤\5/
sD	9)(ήWf@lָm;5~9nk
ϸ⢜oo	l]ߒuҞ1enʖCn6Vlֶm{^.˝ssyQ.JpY`D,l
$L:iKޥj-YĿW[;5dFPSŏS٨̚EDPF})0fx/0|߆/WZg-ԏ_^jџ>Ӣl~ݢ-7Z[oRE?Ky%goOqB8}{`b-ׯaF.jwM:8G-9CtӚeZ瑞~3m,bm]Xyka<zqϐ/?vw<|~n<|
F<a=;w%\<c횼"zw {ޏ50<l+Hv2kNt	L$E$fϤ2vW&TappYT&$YH$_Yx K:?alt)cq^9)[\ϋg^KKZnBh]CS<b-/~E/r.77g=^߳g^	m,{Uy`Xx¾.K}Ƹxp([!5j0B2+ z Qy<D$DQ0J0M羅sDUi7~C=+\4gBg{XWTex~=(=3!(MlOxM6M:es} U4	uL4L%RO̫ȿ炁kآ{BGs74}bNWB9]
ZDN*2(P=Tʎ%AUdu7eu-H%UJ5Ne{P^©t5}lpG>R.mW./\ePK
   2.\v$s  5
  7   de/cardcontact/opencard/utils/StreamingAPDUTracer.classVVFl @@bAM61?iKf7X K$pUߡ4.'}>TY;JO.$V|37amhWRFÕ}~5[{=GexK|:ѥ BӹSm㺧eawm{%Kn.?9\s]̰Mǰ@x1*&u'Mm۴t[0z&\+dFAŠ!W1p:
[%%7(Vy
*bcM)
:-𓚑!Tܔd[ƶ^)
'W02\'ݞyW'f#Exy:`<['&XLBR1{Y9}'~Vex>Rp_xkN$^tN{d|@K%n*OeT5OYs'-8*7ӒhV^F>#m  x "4UY&dn!IIοP/OM:?bZxnΨJzD'QY-U=NIw[vdۛ5,gӟuncf+.Ã3\5Ósh*)/c!rrxq9H;S6ϏbsQRa'=q)
CJZĬM
K_>V7Cض]qtb:nQ!32T%)45#}(0e3?ͽaFA+TCmk㐨	FWYSD}P)/<QYɾ{6M47m4mf11Ơf(N+a'.[q9v(qIIstAt:5}ogoO{
%1Ei> <<.M
5 %S`H&LϹ*bV7^_Fqk!4WcPFBU<<Eq
tBin`|ϒwaৎfO3|CVǷ?|'<a}N22.!kBC 0iv4^{^{#^wic+/nX:M#~w1 tޢuoQ(6{oE,}k?E#oPK
   2.\              de/cardcontact/tlv/ PK
   2.\iUZp  4  #   de/cardcontact/tlv/IntegerTLV.classVSWn~mV 4 IhAW!
QnVnlNS3>ڇL:c;qk>@mzf&Mݽ|;9f  CKFMKz&6zboR!	눢*F?MBTx7<|!Pᬮ,(('D]ӱd}MnzCDLU!ʺ	\6s)yц-؆vUiQ]ޘ2k93Zlɐu]ZxC.#2XafF֣e1s[Ǚ0vb"Bא㚕
RaK(\K5n/l90JlXꪜ6)o6_O9CT/b>5uqC'CzlaW&^j"i^Դd\T9
I5`g0/zZvsL )WZk+Ð&@ܤ:W3m^4O(NQx8MIZ炚/rnșK<7kIr#AR
JnZj3A<e/>#¡a**ǐX*RDDJeISBKK	IWa)`S500"qMd=?",6+Sl)z:R wMmZ6YdPV}a؛@6"p2Mhs0׉k=-P8
=.iFХ܈li|9\NkEQyrs ֚N{2,LVw%4mj9&rrĐ͎+u@2R
y#Ae|^ΰ6CM,:mG?8K9.*ؤn/Ί;h\;~̱G]w6on9JH'h}y"?,t;iVJGqèqЇ ۱Nt1c8Aӹt{ 2S8yF34&ȆZ<.N:M*c#㎿aw0n*qR"I:ZD!Z)BNfү
?Jc&V75C?]+]D:|:IS\kX.\$AuG5J"6zL1r""G҅"?]#?`HGe$:6Hߢ
d`21ff۶
ZEk]/؃p]Mtlcom({?V*&yq4aQ$\^#I+lZE|L#O3{ߧPv_#^ct߷Pzn٩~|&`?L~No_қ}j)Gqߘd]JS2͝$%)͊um'%y3,AAIu(QKPK
   2.\fQ    "   de/cardcontact/tlv/HexString.classWkpv]k{1 [*68SA[XKk{Ucumڤ@(-nZ:әN_c3vJ'L;}wW{,X=w{7o؎ ATA=kM-;th|;au0c~K(NM)-NYKKYMVfi>g4O<dRP
a6'lJ0IKZX"ػ`uk,2 gZ:C0תk-g{x)W8
yKB}pNࠞ (Hk(Z.g1Gv>aw" [|<	M\:g^Mg>eNv%zb$a#LF2Q=kH90l
=°%z"c+e?BF
ZFIƞEqawq>xTn躏ae5l3'v4KVmsS=D+`*p>rZxKA/('vd8!#cX09AjdNEPmzuC=ƐaM4а0耞6BdgJY{8jF)ZZOZ&怅 "əwbqޭ=x/06P(ƨ6 NC0 2d-}{%|Aa'䃜<XWc泝
`txOR~ń5@zjz͔9
)Z]dij'fkNyپ280`[̷7>3ƨa%h,)0XB*ȦZ6Ziejr>:RK#'9HxiF>iaٴν
9芲s9P1Nd.ϗ@|QKȉqp䝩L
cmW4-rtkL}x1K,%~X\aX`7GiYMvyU_,wӲ^Xk#c9fGte]Ή|^[HhL1۫nlV'2Z$\cx2YW^^(c:lF@R5t6Cπ}Fٝ둥Vq`"G_??㋓ c+N:V_%J[ൖ/xͤuK0w<X ,[_2(թ"<M0ThY\^jVN¥w
r!oNFĉː#gMZAod
!7;ƪ=/t!wMz٤]S#@mXaQ&h?G=EyEhwھtk䋗['il,1[zF=I@y{Ѿ*PQӜJ9}?%Y["K{n^@メmn))m<6E]fQ*%:P_߲ OPjX
gzS5r	J%A
*naCrMwWw),	yըs%͐9MCޚfo")H"WEv&Srrjw-t'%5klWJ9
ZA }Iyr؟Dʧwrz>^Di#>]w5!b-xx#kt1UO?~N~A%@_k5I7xf7'I}_11o038HYz 'z3$IU$lCiHEla">l>B
&7.PYYYz-'n6/Eނoګ8>Z$4Wt87A"nyH*GR<8ǊXUUb(JZm*T<(q|֒C|d|$z]\F%'=I^*4˼M
s*ohqM\UN=?
@i/Ps?IbA+YVMlwV4mjA+kEk>G.b`Bg1:mG3Gh$35J~?q
Joq;A<LqTB5[V@,L?gC7)?U'}jsRR'eu[R-Jvjeu~ڀImE&TP[Z.$~`e*>kgs3F/K6%^FPK
   1.\P^_{    -   de/cardcontact/tlv/TLVDataSizeException.class]KP'+,M7AABF7@0Q?΃-[u%tCE3GMhssγ@
;i!a"@AՓn׺~qS=W u]\$-N3 P(ۿFk[Ld*1Ne2ǲĪ~GY;	7vJ_DKv౭&r^Kf2}}
^TpO#nxQ7߈;Aa_IU4huB٨ ިCtW	FUf",XD2`N<	
1ZG)<EnRv؏̌d\m`hfZ\Y"ŭ0
PK
   2.\^A$8    (   de/cardcontact/tlv/PrintableString.classURF=k(8&q$iQISBk],/ $WZ{ʯFۧN	3ۇ#x{W CA!
ñnMXm$0bmEdVjq+H0To뚥;ZYp G$V!Q)o1\	0ۼR2\ʔu
R(&%Wa&/S?p!Tqp^qi5R]#-3A:WTqng2WfןrC䳛
fn[
A.`0[Mu`PںÈKOP*rcxѱ
]<6.<#v%0w}RU.txn.4
a2=dʓ>^keڬ:ڃB'%?L*CS~"H:1-gdR=+6گs"&J[U5}8$vMID0D=J׬'5:CC⸱(l,#V.NiuoMo'3!F*N5)%z
G!zs]@'1RP=I6ǃcLn]҇ݰ7[rV3A+Mz
(eMq|MS[Hy1ݢ{<av"
ȵoһUjQ_*z>GhLjhѹgP:8+GPkcX4Ku,I,c%sIE%*`.!pŎbxUbC4NSagY	23ʵuXpg8K_#Lc2@oψvx`6E})

ZO3Ժz,pD<D.Zdݤq8ݘ}v	{mAoJR~ǽ٬650./|T1-gߡsPK
   1.\^    )   de/cardcontact/tlv/ObjectIdentifier.classXkT\s@`$0(`b!ft($L3Wڢm>kik*њZ~X]˶Vv.5Ι+2iVrs;ON84@"nVm D@xeg
P%_	,˂=E;C`?}	WT`E+4hƭPL	RX(nmN}N_(BU9aH͖ѡ!3՜Y3H%T$>,w{ƨnQڍ%X*3e_2ctg K CYl}\w(V`Un9R'6-+_yZ7ryMϋvvzk$IO3iEqq5nźIQsHl˝|7p1clM'bS2Vzا9;uȅ:\/{Ww\}uhK[GwhkRE9,،"rR=9+k}-g
EݜqL
U`i%F-_bȗB+2b6J@^_vJΨu'Fxd*@'\I&YZ]FZ4[
tkCnb@.#ݞHspJ\n{3~70(P:eK)HJEMB]6c4o&R1c.ݻ8ҝV(HȠn Jw=fjgDghTX*beH1$%RJ=bHaaF2iN%2uʠk%uW64эdz
D_ƒ]Hܔe7p1V_Yvw"5e:7]wֻl&Rޘ]Fs4uBc02.Hw[x@`!N4?KCν cA@)n?hLF*"ۃ+FZuZZÆKDxI>oKe3=V2w*>wg?H
5ɥK.m98:n$H.ȽMnplHDv4MAɓKr4/U2H3jJc5
yѥVeIf9tHd^R-:N%2]MJ̭ 
ru֒HX40+1^_~WRt~-rQ"ٴ[JBsǞffze8MffrvKY}w
jD]ˤ]M[~'
{K)TkHʹ?N+osLef2jP՝(
"0w8&	Mu<xߖ6K<(
<ĕ|'7.g(s-6++OI"}u
{!ҹ^s}%s(YT~.:2ɸWrqƿk릯9:#s1>ObBDvy#BR,0|_D>OyTyr(ji|osx<\frrS
AQ
L⼗A^F{0N#rK
sY\#"r&h[?Z˻ ,p#
ݝc"iɨ8&O|s<8|KW(
jQīg(BkoY$.|IkҜ$Xӄ79GOw,O:W;V<6O]Dnmm|2|Фi\ 52idAxsM8p1C'U+qcrѧϰ>"#aAـg(hƳd'l?ϰ&q9^@S,cHE4e&܊Wq~{qx/qk{6mlEDVg--g~ڏ3[#/Уqi O>K|b	->BXiqƧ/%36poc&Ůt4i|yxrQ<;x_u!VD4mBײ7Yoo3w_c g؀Qߟ!g9m8i)#JQ]e7[_Qm3ԵB$Y
xu%U'iaʣ>?+mZK6	+"?'5IfByb	28wnί
t+UXC>tL_r̵A:?Yi)h+jm{	=y2T^JmVA[N&Ph(N,1|.4"'<\X#GX\{v&$w@Z1)jubWr	tzvEc92j'{ma~
fbHGR=jCE0PMVþռ0'D
;`*,V^U >+ggIf[6{?e^:b#(=3>n/&pM9WYB*izq,ʻ/M֞`m^'Krt73DB-76h)ZĒ:Ճ6WNr^!|eiBʶT!Ũa#:^tBq	E.=&zX*Mf;s}X)X;i~\U ipq\?6Lі~Hҫ}1V鸓1
d~qP6%suBF]2jPK
   2.\pב    (   de/cardcontact/tlv/GeneralizedTime.classSGǿK W1QZ.oXB4i9<'Uն3G9>{ILL/<}vy n	Ϛg+٢q(aPE۱%jym/]ðYL0BǼ.zx\YK9F$*å}pϨ/UasaNfY&s!\or2")aL8R/{í&)tST1llBM✄)q!+`r_{y˚p`FE2:c	/.Zmx5JsR-Kni0HjY!\W*pFB~Idu&K|p]Ө mH,v
:wL%u"ĩ1o?ʘ\1osӲ66ZLvS=)W݃ t;_ҟw	ic+Eի+IԮseБ]ɾ)[.s$<bO5t-惚@SAKՕh)5<Ihad(=/.nZ'Ր׀fFTqTr{&_I${*!F4XԒ= 3`Hk@,7ӯH2U*Gc7F&
)4Gs"B,4pÓ%RbE?xDҩ=Hf@~K}HJu=c˔-OSo1ӑx5N[Oư&
3F?	@J
$Op}$`v-rzmwEIdFEܳ4u-Zk1f`8xߡ
Be9PK
   1.\cQ<w    )   de/cardcontact/tlv/TagSizeException.class]KAɏM,M/("0
2@QA't7բՕE?.%.̜}g~~ 0 *~ci5o_,i^k[{5PŉUc|7\mwSb@a1γlUXR _8(ӒnrlOZfSvUtq:J Y׶z
mD Uw,oIW:{==8]0j8]"
afkȵԝ3pM"|!ИUfAs0xbi>\"6U)4 jD2-'0
D}CvJvvv#D7`e)#3W#E-[.i]⾟9PK
   2.\*	  Y  +   de/cardcontact/tlv/DirectoryAttribute.classW	w-<de jl# И5`Q@lLm'%cil!ަ[Jۤmo%-[BҴ 紿дɲ5s$ͼ{߽ݾ{7*
<
֠5Ej60
KMX+55#1
:PY#PгZ2>Ȇ+hc舻7',-9/
'j2p0䶍v==	ԓGр&P,:5!-|i:UWqnRfR+h:lVߜf3ZV(e
Bbs%!
nNwFLtaGAP`rAô9KZu:86xh0"<B3I\dvvNk<	{1H	8R1W;p{)GgP$A=IͨZV0k捤Ns,^˿p+xO2Ȕ&}^XE6enA\ɈⰂah߄k<g]Q Oba}h:h/Fa=SpOٶ-&ɭBz	uڵ;eW''|yJ46M8,_CkNIxaаVdLOgRڀjiCf6Z^0_ds7)"KS0r]3+81-=vkV\NYJ2cj63s:g3*`d-bQ7#'\>14eX
jywff6f$b
."Og5jj
rtsɌsH0ѹK_C+o*x
u\V%W	ħh3Jj*T-B}Zfk&LRe⺡9Τh%7jjBYXu7I7uܭ3~j0W#[;F³#jF
VA%W4UQM4%H+TriIh
jrޚ--H u+VF{㪥;+JjkZ-B
D'k$aɊw2y^3* E"iPg̫)	7V%sbv:h$:,p&!^νQ*iEC͌hi3eoJyvDCƼyVs¦!UfR:܎mtX5)-%ng8|Ō>"&TjL"xG i5Nt+
fBuZ̠\N/D6_zVfb*buj
~zz^Og8;Hx,ހ^@'0鯯,b",|N[Yހac+b؎#IlxErA@Z!|{6ظ~
j,bVlGzr}B8ޅ{Vmԓ+KeH!; Stɞ;؋DizґFNд1l/8/^"=UѮ
=U2۱dJWW==ҷ_'mӇKNdR5(),$ J.xI bJsFn'ru׋kHt.[m,Zm^Vf5Fí8⹋Dq	-ۈ.`xdz1MbKde

_E'wFSIWȖd<GN	<Ӆ̞+`~ƙvꛨ.blj79Z
J^؎oQB w3:7QVr+g*M^w_n{?
]
Wn\A"~AY
̇fmer	"6w9a
=k.AuAcj\$	]©ɀHKrt"^pmY',MB)bX)~F dt\#+~/%~ |ǡ4"6s=K83IS<=-G{BMMbd,[%l
G#;vB7{l>؄x]D3D#c.؉_ZG'f`!* ߬qCΩV뾃KWKr vC=;66>p ֓ދ/N`3!XptN_xڪf)1+VG)'y5~+G%\`>w'!?.L PK
   2.\.  p  1   de/cardcontact/tlv/ObjectIdentifierRegistry.class\	|Tտ.G\P	8@&( 
8yI$3$,KݫV/URֵUZjժVZjwެ~ λs}16S_8EL0<
t"mSI`}pr0QVY9ds@!+fEL`YIT!&)@<F`rJY#pk؎7mD2(Q0F5z=pϙSK0+I$
̷4;l]Ɣ]X`3/F0o%톿lQV_8i)79#I͎limNtvE,lg謉uw7X2Xl"q@i8ݗhw4ZGYM`{˲jNÑ+8SJTVl@]Ƀv,/&*$T6*/:<aGeqMK'3?a	lBͅ,b
5x׌QO	p`0I:%Y5kGe+aؠ@!	*S7`
ԌަE%l1k@
P(ؗ*bK횩XbD]\laY;t!e&RG1kfˋ؁%l;(g68OPGN3%l[p$doXJ7Up%ܩ`@	k1L\_Z_]2`SL]ZJ	;̝XTc:x7\ֲݚN$WY6S#htt *aEH0B3|s'L|Zgm<۩1{x+Yº`{u݁΄cz3w6 }<.֍%#3#R@yEH`ǼޤM@f_by&z8v;A;d4u7X`+hYEy&|x[ I|Yeyi(*BxNtv޲]v񉮄e(7^?nB $W;2&;ZSZasf]bf-3Y사J]t1?C]UUm˨j]0a+[¦"Ůɪ6ba t󵄣]6g>lcэZlNY< 4
BY:/O[69MpDT3-JfcAWޓ`katpN.m
'qi$3i{{>N&ql΀[WuI_0|z.iúH46OߐH`x*!#,Fen;K#PDD$]8]1`{!
¾Mv,'^a'^ukiN _0N&u7\>(YMF Y:
~z8I{npY@n
S|/bfاi;bǝ	;>ɀp"p0u~KGI_g4j*
aoҍ&ў02ߦ8Sb$lvp i*Z <NxWXPd'VT-U<2`Hқbt%	;c@#ҠLAȫ$PN$,1
uIy,aw.Ʀ!UiWj.
#ѮX4QLoGO-.WNVTN:K(;;n4>de"e@Y5FDȗv;RJ|3A;]IbDkN{c		4)0W
+`ANX3ߚp*2H|x5܉Ϭ;L62KoYи3lvT|K>]aJ-'ll@4F#8QkuTiĲk,7:͂:SmA
*we
|-P0݉D >͌
4lHjqHȌk1nMt'ۣf^df-@#%hcj<4;LQv@t`U	xC"gj?q&hg8fl15u TZH7U@PUGf-AvF/z[
Sጱ3,Ȁta]L0e.QW_\ғMXG1ep4#Q%bНQ,D9LG49M(QG6-31̔(QE8nypB:	}c5C$/hJKZG.ׂM13LCa(AJC#q{p[dpn3!bYK^6>\!/hT.Ip/K71ix4m)萊*Y1؈5474-i[xKXдRR,f;̒k7,^a7ߒfZ8n	'k2NߑVJ)N6-4Ȭ[ܬ2+ܘ&t={x12Tj;	Ut~2}އ<z<=#Bvg2LЈ'3Pdoh~Hm|6.+PNks(Q=7!\-rԂ2`!m,vF&
wP29)#M^%KpF/k~`"vfIlmld6Cn;cp8҃)^Tw3WW`38)tWGpl0{]\RI,;#xYEUl%?#}ɊJSY>2.NjG37nwiƏPwqfaw9>Ņ_qW;_e>/CfX|`ӫA!ŦvhZ\:>q҇9t|q[9!L}ӦVCg!}	n+7\Ϩ0퐾g!}-8njDU->;ذlū3?S۵Ϣt+!h_!P
6w$K
M/xA'z-LpoSeӜp91?]w@-{9{y*ctNchG[9D4nڊͥT{hF{ lK֢LђU辥1Y|iFsUӕ}P{S%scP=0D}Isqܹ~VA&q?߲=47(Ekltf=&uq
 ]!Xx D͏t۩K4
s&а7 +CFqjfw#ALLoiFwg ެwO[+ٛP{9faM ʛk|?)6fǙ3iXzB?8
`O¢N%,NӳHe@(G,\|gIsf=ǽz	(p	?Y̝\,i '?+`	O
Awj֠ul_|qqi
\G36wӜ̬W3k6]qh}N;KMH[vV
QFך)mb`0ڽ?sBن oN!Jj-=6flATkH>
S\Y7y=?4#{ۈkSk?WJBvgJ_%hGA
@I
IA?}	
5c3KY17kmƁ0AӺhYmibF'D	AvEJ;vX57:+m2Ra8N*V#{*\s&9woڻl4wP-ti1yBx~êqlNЍ'ÊqDtoܘZqP-ތ&wڍDbMs2Tp	9X[L+&WNUQS'(m={NX0 1Ai+,!h%~E*_W< ژ38@aR*BWsD,1vH}YMg`"hČ',1_A%v{Rl4wT**-1قUȶX`ȍ~̸]PY'5լVbW5;nij8o/Xq&ϳĞv~9%&-.vޙ2Σ%&PƔ%|#]JUS2ع)6Of)NטITb\%	KL(s鴃8`,9ɭ%fri/^ؗ):6w!sY][5l<4cQZ#1O5Mbl9'سڌ"zIECRؿ0YB72I8)=I|ٵM*Zk0xnD}؇LGM6:)ܩ4!TQ^:i0Eɩ18#U@G˺"8"Θt8[@G"Y|3tnfg,i.^'d=Si{RMYb5+3-qraAl3tFsR|[mMY/Hy-nQ%RÞ+"hU^S@}t]a7qxS-m;R||+˳s`.r{.˲ /,=ؿÅ׿WGw'=՚Hh3pwINƻɲʪ#YW|9:bV.+'ٝa\%p=?z	$;YAsfd0 i1OtŢFION$#i`/Òx\ʫ0
Z.|f.=d Ʌ!ˇmpsnsaR~3>Ʌ!q?ˁU}ė0
:݋s\s[|S[qOBoIàUZ(g
M@4η$nWƻv,MFNP+OU~B2noK=9 x⫝Wk[r]Z顭,dG2fW>]_[AY'׺>3z6rʹh#m
oTFTnKGTgyeE}?uu㍹cT_5}4~GD,gAC4},߽)c?ڦv<rhaz<ƒ	/^ߨAZҦU[cFZ<-@;:A:+}7Y
Ggtgӿk,ٛvv+󺵉n@v
޷k`}	"Gɹ"SiYwos+J-y&u"g݇~C>*ٹJ4}	p9\DqyemI9.LSnrr\Aw@P'䀱MAܜR{}}#1;h)	f!oO;ػrҖ	tq=i'!>TW:m|`yɇWۏaI|2~S <,YbSS%6MqM_wNUI/s޶`BS2y3^y;&;icP{i<vy&{7sL0?.4f}D>sc?q+*}u{C3:7p$&֥KXysXXsouYooLwRMbxo)Ak]]CT!lܗ̫-&NXjGHNazE
r_J+C:W˺jKF 5ҞLGbwZSQ}qh4%KcսP^_aݶggXjwwYn=Gd&<G;mtu]&N"٭m[py-U)8%O6=;d:I@oDVAͳ̧=3޴}qRRQL{|>,UhnŢdٟg7:[<F}=yLӋj(6<R,c
ٽsl#L0A.a뜯9Wդ.t>j>ۧ2tp@в6w]o#M:K7nlLuk۬Tfe}4ؙm		۝]fͮBp8~L@%G8$U+qdN'dQIeuB8Bvy1tIaDSDWYU=7SSgbvAC-1瘈2:[LbB	_3hܷҵW#-unf
Gk#¼y^5Vmzi4fGk-Y,)6yp
ylsdBbaK]WY nuך80Xp1LX%vToqnc&潖S֍Vܕ]h4h-ln%~}XȼޟA=$+&Zak9wz~sLA_{ROӳ\#NaZ0[l,Aӎ2 }@Ka:$mZy}Wu?J6>X*]I=dMo9:>B8BoPW[[q&`xF#x'[~/]XzloYXaN=2>ɩ%sV/J_[<Ȩ`+u&t@cU_ZQoJԿvB̏|WHښ<P+fB,v9uSXuߏ=P)Gk!
R?
I+fq8b+-xƻ|dE 6ݓ2^lM)+AU2 Q'WC
+quz%pȵ7s<~wK/VrӞ.PN1q0ǩV4j<ѕb8]f	<؅M1Y}vE-	kX|ݟ1O4CaplEK3;HfAxy;X[<&hw<h/ϐɦ\&Gb
v=Jx{<3<3KTn+Șk!}pA]IB̢pcq4+04 |UQl'ٖ}9HcVI;.`Bi8QvG:""g}hA:v K*Pi akm-\#;^k:a}PҞ"P̢vcg	Vl>%n#L#7bb<3P8fcE+wLqm`2ſsP\6L	p)tۙ~

D;45w03գQleΧaN8{[0Qqqb{N99NX4a|CDUcUr8{rhFSqpҚF)1,ǎF?k7~5xQ<0"(-qQGcG}Wm}+dJ<gQRqsX[bpf K˂8NdmtƺYuaQg:?۬}zlgaǰ;ҡBV=<<6F0<FG^bx-.axg8S)9H4&Y7awL`7 _[$e>/Vٙq8'
Ÿc$ΣV9x-5clɌ
+'zmaU
{of9KXs;gV?KF쀃c<q3kM%Gɡep,ca3;dV#W+7g(>hTk%as*#Cwf~u[݊B,bK_O.3L69l*)"/`5B_#E.A\q9;]%Fj\c7mFg[m5rNzF{ϝvk`X8UlgW<g8cXqԡXvg7xC9;ųg&$3{Cy-۩XV5ol{ɿX<<
^l
V`&~Lj\xݬL'ة`'º(B!m3K`yImh
k쨉wIY!ּC%.3{z
6hu,C
K2r%%ITzAF"a9u[[qEa14	6=&2{,[cMy/`lx^r>. 4 NɸKu5yqFKԸ33	bq8qPA\6V~)x1%1s-D+&'
k(KرFV맴O'zO򞼙:{'lOyދ˝ޫޟ;p7{ou{tw;{txrx>9>s|?;Ƿqz?9~sO_k￝w)h$<,*k(`
C0J;iIv8
Ta*Joo*M0J~
ӨTa&fi؇Js4Gyꨴ@B*a1hhRTZ`*pp8Z4ԪJk5tR)!F$z4lF
?ґұ҉~LS4F34Jgk)p>.p1.p9p5s*ݠTYíT]ÝTڬn*ݫTz@CTzDï'R
@5Jh^g*/TzW_􁆿S#
ҧI/4J_k7Ӝǹ?ќǋ5'WsIs9ӜkN{iN'kN~͉Js9ќiN4'4'%x?Bs_99hN㭚Z͉<95'͉|?~?~?~?~?~?~?~?~?~?~?~?~?~?~?YsWs@sDsLsJsFs^sQsEs]sKsWs@sHsTsBsZsNÿcĴ|KX)1oq-|5by0·` 1m

؏]q;t+cw==0##_ao`(X`w|̀P{" DX {Ck7d8	YPJ=0~U4J3M,fV؇}1ca. 
᳡χ|),+az8υ%2hC?`Vw`5_Bab;b7I"-B6P6X+A8:	%΄ *`q0$o )^nazŷp,aI#pGj8FqI2 ?pSQp<N8C^g'>8K>
gge8W
|%\ .T"5.V%.WpRj\VõʆTWp:nT/&uܬn[]pznSOpz
R	ܝُO\dP̥ųi\
£LQL1X
«L0h-(`qZP㵠)҂0d-(`
0E0,-(`9ZP󴠀)hASLD
I
b0*-(`ô)Z)Z)jASD)ZP=ZP)Ԃ8V
D-(`S)Ђ8[
<-(`).ՂR
Z-(`)nւ]
b0ŽZPhAS<L0SZPhAS<L0+ZPkASL0ZPiAS|L0ZPiIZGK,֒'kI^-r'-r?9NK%O%O?⟜%O$*-r?9GK⟜%O.В'В'hIMZ
-r?y?٢%OjIk$Ɉ?ג'{$ɍZZZZ)ZZZyZZZZZ
ZZZf-^---1-)--y-E--u---]--#-S--k-;kESX+Oy""Z8jV?V?jV?׊"YZ/ӊhELThELTK"&&jVDJ+b:L+bjъZ"&ZUD+bkELT=ZFHXDl3ҥ:\g q+al<ISl,Oc;es<x߳Nx= /bb{/wU^	`xF1zS0y,w0x}#LuNOC>cw'|
E'j_b_|-{[yg|	~0缅%=^Ky	9o/ǽ_|'HQGhQǈ|1sb!/M|7q/Z^"F^.|8-/O
?*:)ʫŧ|o>Gz\9'G''Z9y|\+By8k2#c(żI^˛@y/_!j?L_Ũj8qVeUyڇ|jjR!SWxB˓4ޭ=r^{՝|zH'~zU_<O'{S<{S=Ut~'agv~'/_I<Rɔ^;ٽw
R<(Ъ.ՊBR+
Z(Ъn֊B]+
jVZսZQhUhEU=VVZSZQhUhEU=VVZ+ZQhUkEUVVZZQhUiEU}VVʞl-X1
Wq*VƯf~~
ۇ_F~[od!7
v,og;Nvɷ	~{c?k`=o29}Kֹؠۉ=,&5QfX	<K W噒V8֩`6*&=SՂg7y*4k!vw~y!mb=([YYFPK
   1.\rd  
  '   de/cardcontact/tlv/ConstructedTLV.classXy|Td23^i$$ cE@y̼$aMdQ*m+[-V.uK[kkm{-6=7o&a}sr??asÆ<'
(
h~5Gº`*_ca0[jj
BnȲ=뱄_~0LmPƄ5.-`\of
&`"i>l}NLF29j%Nxkx'*mTi.VM:eg(83	5kk>-ܧ/T]@qT31@]*+ZSeZu'gIBVDE@~!\9
Q0`W'ՖRp6ъTk-},r+bHʍ~>/A3SP`fV+X\kKjfv<i S_5
rcezaxܲ<Up! "g}
2J_
>
V"Y/QNS.p<JlYY,1^nfӦQ
v3	^ǹ)tT^/P;]NPF̖R}h4h/|S`$ܱٯEyBv5	Gt?	k^fODbVtLRҊ:*#^
B :P`Kkj3:לoNlR,Bѡ-6,+H`;L%)Ti4.ڬ`
#i4Y<ڮR(U\5T58k1ΛN	${""Vu4"y:R*Q
vqDxF7fb)h0Mzp۰*5ә0O~v֡mJ[ccnԅ0w)=j4'%YLtQp/8 QQ|rR1
ْ.<pP}*Rkc)u)F_ջzljX(@+x([|Љ#}6zc, g:}t$b4nvr.U9eHK|fUd8WC]j,]3ǑA
kSE.5  p[rIjDٍ#͒mQzڀ3#ֿ<.lk-KFS8MevƥjTzĳd"Uآi=;6vTIA&dTsFcK4YOr 'g79GMGGHdI8{id?Ye؟Ź:jlWXF,GSɪvG,}k4zgV$S0Hܓ<?kdkB=YtVtF18y0it2gmNjtG	͍Nٿf
#54-NznlD
BZ|/٘6rm4"6t2D
uR4o]QZya-RqߗNJ$L;(!t.@o }lx4Qz~f!Oʕ
CԉᬫuGQz~,}؈,x4xDI< 9z!ƺ4R3Һdu0JOSL!UΰT)6Z/'CBc'췔Ҕa-uQDeOK==G0TV̷WNߍ֮$s.9&Ge#YC#|x c'"OnK\Y h"uzIf
؆Nobn[a4E$o+)5B% 	xЈ܏cx8sĪ4<H*@#;Yu^08INA-:p9]!./WΆf@|4ݑ
1&N}'2Уr*+XBoكyuG̠m6쇱2ν_fOk/Ccz*i֗a=o'l
f[.Jhh͔Ї>~ {6NBv+n%fyZOq~HM_y"qَ2&mN.NP@w3+ì8.VXrጊ**4`4zju̮#ڋ£.ֆh]cp,jrlOT#}2}gi3f[fƏ2! 15-`m~q*~yH	6d<?SKK,%flK=6ga[F8Ք$6,Zi@18W/ky`7$"xGQgYfT[YmUdHK4ޘyL?$E	jefٵ%uyKU]bzcPʣN4cG9LQ9DtlCPPP>Օafbtnf̼L3Ǎ}ov	+ixkOE>A;zDA3.Q$1
#
.4:ԉmXFnpF9
(s2q8p)hH⚓ `S7C3mutbmn	ħ4Aȋ3Lu[nYML<#me)b
Ybbc.H!c"	2A&kx
!2v'e=^ZeDoIb7ȫ\SRDQ,tL	ATuZlE؆shW|֡ We9>ȇdfUSq'i
<(KZ*Ć$޼C~ILj$m.6)n#k!f-=I<C#CV6SB؍;MDD݌a؃b/~O܁.(DǯMvZodD:"kt4fRͳAqxE'PCui|eM737mycwivS-'|=g
x4RZV`6c<P,	ozt,gER$W{.7;È(/PK
   2.\{u    #   de/cardcontact/tlv/ByteBuffer.classV[sSU];96M;$Z̭Dh)`i[P1XEh.m$GttЁh'@˻~{g$ͤ;Ӝ}Z9E	~\r
X|i-Jө\VOp5-ZtivV3Xe}ANɃ<WDv.2t?0 fh2MG|mh-;3WBi:-hyE)nn=;
 lmV;#^,G"OS"C?^_X)
}TX6-O,R6]8L.N8xR~|7ZTF/G!o(4BҎfiJOq<6j/lta
Njq=1k˙"?HBMa˥5d3KWZ\"@3mTba2{9Ö
ac`IkbqQImohȢQǍp?=E}L2ز5vШBM4l-Cs ^?XEfgGAcP4]l^ndJȒZyh&ಙR>K7VSQh/v\āi""i9st3<Ֆ|-mt蟎?:fU
FW[y9@N: +qF2<arxV]4?'i\E`
pdzWA!ɓ<=u<!>
hX!ufPc7J|0U`><
:VQs5XNˉ8"
B+Tuqzu҈?{	W^\;lQw`QG3|o|jۅ
TgjMJ\F/Tk؃7 115ѵ)73g74	'iL/'"{L0~bS|sɧdmԏ%vN=ĮDI|3+xKIiR6gxSb%7=#^28mtZ=*$#
b7$bb7$FܾfF3|DoeKerpUe>eSV[wky6xp:qx#å;xi)(T[4z7rQ] XFޭx8NK	yl
4	|\nBǚ>R
ժTxs`BHfh#D꽁f+x^
zhxӛ^g_~#AvĐ8bv/vb֊=KH	cX.+.qyUQm I;FP!ԇ>iHzҩKTfM8+~On{Lߙ($憝y購>铯Y'.nsP
w!Nx&CBĨM*sC"r['p49,s6\>BcY`MULJj6suڬ6'<njg}rև,zEaccdGkz[R|_&iI~3>Q5Xm5h5,*=YЙiv$q/+ZcO݁.ԜnxM/PK
   2.\  '	  &   de/cardcontact/tlv/NativeTLVList.classV]WWݗ-
(0Z@ACPX$0&t2A/¢tu]ĵZ$E/73>{'o $M"$p\tr{*	lh@aߩ5.zaԣ&qPTV3f
'3^˯SҳWլAr<VEf^j`A&Yqtd6+SxWd7[Tݻ
cD4wNhIsIղdNί}^Ox%YY6$ጉNm0i:6m)'-iCtA,%Q
t4q$z5s$IjZ:Z&yETJvB9ʵ3Cu9HHGĚO7J.9K8hbٞrWpZ"їz쳿#l`DBǃ]HjbpCHJaᚉ$WZd.$4AĤ.YUrjaFxv	#&y8k(
3kNvsJo{ÃEuAW
Yf9hَJ;+i
OK͠d|uTs ׸]$N]WeČ5	2NCL`Vz!+̷~+&_ 
8]U@o<˻VNWsNKkQg{pFzu|^	lUMb#3Q?{}NkP|}]7ͷ^SsY@;ۄmØD~B{8ϵ	A#\	y0J !>/p	tc10#%F\&NlS\O0_j{Zk
\[k&zB_kLp}1s5U8v3:<aL-F×D]S JƉp!]nih3%جwf[6oP!^ybHJ6겎o!^lW4/n%D%R-]Qn.̲WK`+ѻV7{%4 0ٳ_x>\hwd`+uc}
<#\'zbҟJ q}Dcھ	
;{O-FH򩓳g*_n׈"|ŻG70ï|З^RzΪxPK
   1.\@?1    $   de/cardcontact/tlv/ParseBuffer.classVKoWMȃ`p Bx%)!<h&88vdOR"B})J[Q,Z	DJ.Z꾋VmA0\X~sL}# 0N\M.ь%
{@ggW/|؀ a[J&|*j҈y5_Іi-χg͉81Zq</8N1fvͫk"@dysd`Bt^źUO#d.gF'Ceh%PR%HdEO+<jQK"B>7f=fѲs%k[&(S&<'Jxa"]yɦ\<E;!V\'<Ѝe\.<r2L	M{	[J)O*8#l?kqE*eC+m #e\FYb[8)Ko32vf@%}bոk\3^k*~vN~ӌ3&'93Io5Sf0Q}9Äb?_3U3NK}..k
Ȥ¥+Q!LBn92/dn1Fu!Ζxhl+WG~!n|n6MY7^uN>(='-P	<@ ᱟO؈A20>^1q_ỉpQ9%~qEݏiZ\822ESqg &6pJiKH" lK%ȫ2Sdm)0A Ȥ,\fC[,K5!!ϲςjKO{E+l)۾:%&YY[\ַm~X~v"˓'d	'̋fЇ%f(le<Xʐ1hmKl"nFMG*ԋ|Oq݃˹f-ygfXzuø)P^TC*crOm'p/4-a-!;X&f13X꩒~IB`
Cߣ?`~>v{,{p÷x{.+l2m.cz[t]sMJ@@hB/,WIMQnس-'{"ɹ븃ښAIOW*9;Bo:lt 0<{f|'gQ 1F^ȇ3?)(5+ER\jv`eц=fhK:^ǎ2C^)BLCVgH=nBuCۨq=%
z^ȶQ]pPɶEn8N{0B{ٶS/ԇ$d#GGPxhficf-pKX>_/
r T׶RvևqKؠUOolf!il8,ut}4!)9FE˘>w|0-p
mD
cO5/PK
   2.\Rq  w  #   de/cardcontact/tlv/UTF8String.classUmWGEܨ5.Q RŐ)MečKwOԿW؞iQ=}f(,|`fg>yf_tXuͮ)4]E}/]j08Cab&fA
"*2>t]3k邰
q!Dr+0FJ&|bF/Ky]03+0\lg[t1gϜ/ࢊK.Dd?	q\%<ɌYk\䦂)Mݪ?)˔_Sq7=kɌQ*Raoh<g&6C3Ghpzȼ>dL#lObo|LIIqnAAp}sN㎊g	q-㱊 ʨN3d_ZN֤YU&jT]*uZ[V/i!c'g:LBI׀!rD1H%Z]՚z[h§H`j:_2dóK/e	AkrcUnੂMcZܳvi%ft>j;ym53w>_L"CLߒԒF
3u4k/
ȵ+۩Ua_#]k@OyzMG`(mhXt9X21J(I%*ickBG\!<
1}E']q?ֳK\5:(_.!&3/1
	NAWS>8Djc]1

>0S:%fΕ w[$+&piG֚'&p|Gˮv0{mx6(rOkcŦz*Pf2k9PK
   1.\    -   de/cardcontact/tlv/TLVEncodingException.classMO0Ɵ(GO&{Y3[Sky"CmF=+ZрO}`kFs&3:%	k!9vIG_BfA`,I)g:J
5.x&JݻQIJЎLVT/2N8c뫡g3 'b-LgZi
>0r.½ۭ+Cۍm&67[b{R<}[m 
0J[?	V9.ǥ"n9PK
   2.\nnk|   0  (   de/cardcontact/tlv/MutableTreeNode.class}
PmjܜtQ]zR[| JL."I9_u $2N6:mҐ<Tz+,i&0A0ZXdG,G9SI7ndwP'ufPP>͌EbVx\*eg(6OڜtPK
   2.\UՑ    $   de/cardcontact/tlv/OctetString.class]SFߵA2B	MIBcip6vƮEf-/ $WZ{"dLGer$RH}s>~;P`jɽ: nw40 ܳKާIRz<А
-gAX}KZ]Q7WFV;N3D*׹Rg{[xŞ>0\&PΪ8c
c
SvX.eqQ%\&m\xʻ`sgPm>,=VqV%t[)r
אQq]aHj#!vGTnF3-t7t-|O]rÒ4%w?[F4Lc.un(L*>`nՔBdHQ	:>YZ/՟*k+K:>tT0S0<=8VZd=I_v[c°o
Λ6LqDZT;dHln
<v0$Iq܉*$év?Ak5b
H遽#hҗo
	hՠfOrP=ɱ=cy!wZg
봋m8o:en5Kb
TU~Ǘ08+p㝢W=ݚKK:](]Q|F;!$hL6d!h-魅@wi6cŐ=|Az}#>̺KrRK"}EC(0u+1(:|ԟ?ǅ_qӛ!Br"pfQ2`\5Nf,6YC@8+uLbz|(~Xid4rcn!]iRW考}
=U|{i PK
   1.\ 'v
    %   de/cardcontact/tlv/PrimitiveTLV.classX}`\UIf2}Ii6N2MRh>64k&$K2t23̼
"hE?(V`쮲Z&((ŏr]TVwOw]{}o&d7{9s{_ʹ l
Axg6jfbmmvh@tG<x#̓e̏e0klڗOQK.9j&,@[a`9*6kz5-
+U_yPMVk6rӝ5Pzܲ-@h`-Uf¶2IӶz=ѝL@Fj2p	V$LjsڶdijUF{;j[2Jq[cVlTl5fr:k[2SMi%;/֨SdJjU.>3:ƬLVl2T_{{;q<T0]w!XLX<9بd նA37'劅);Neq8ʄ9n-v\,Un.;Ȳ5imZ4X]i	d_]T-oC/D(:VG++D~\ݟNөmJ
[A.3C5H%'5'L؞ʂՊ(p`*`S>#*')bH~?n:H/zMo +Glj/4:bݻ''<fH*產T4:af rU	+bT a度[q>[XVqd	U:f'	k'[\8x'	Wh >i0A܎wݡIX<`wL`ֲs[U{5<.}l\(RvZtqw	%ja6
xǋڀ!V(gQdRd:}EQM=8q<I9jläAu˔:@gds7S*DŧLU]15G
<ϐIs!
{
`fTsvY	J>|Ao}_bFP_CbSZ蔧9+aٮy>;<3LM2<B)o[/tJgMu{5,Sr^2m,{X. GXF?2	X|lU++zzcxkFcܺR1`yo<i9O#5j&rG;'d躢K=LZKUUs0LK{kT)vXVjaA4Vk?i"K4J
Ӥ,mr8Et:7NȢCcBES6o֦e]O5K;?
9΍:6H𒶊%-VJl}#
]D+5Ƴ9ksI
րFn2l`N:pÑⷡ1'=0\pr{ْQe5zhSSQ;YUX'UpHT&teObR?-UK'!<:bp.4ʐ&t6]ߛJJ/u.80xn28yՂfc{$E
XlX0? udiQKX:æ2K@2]ʱ=ɤaf__[-J:XǳÛ<+_}r?ayߕ-9K,[6q=!tQ6C?lُ?_ z*]~Lm'Uԡ͡jn+2*G-xQs%>δk k\ g8w &/|5:j$]Y.= 5sh7#sюQ̏#؊I@F`ȣߍ采H//U\Qeh@)nӦ)kb[\' <xpˢ3xKi{yG)ϡ}81\XfRNG~=C
Wc|^&t=C3/|N܀5u3æ4_ӻf謾UJ?~~|R^ {pFyc#Ч:*
-gS.ujT/qgH/$_*<֍-M+!RAwt),TUDC̧HLgp<fݳ7	[dZ
ll|IF*8RtI	mJUDQxGC;0FT96[	c;;ۅ\Ţs
H/wNߓ\jhJ/UBkU-z9GWgD):KG)q~r'/pVyz;ppX)	4sObA04w{zwvxM30*G`r!{S'[Zն@LI>Pk46pom/?PMnYkwavm/)i)oFϣz'}X}:z&N3R2 $P'QeWJUQj0.HHz/kfKAD`_K{ϐ4m&Cd]lN
͡	dR	#
/
h4鞫{aAR5+%Uݖ$>6O
U~iGt52X%$WeeqLLf)s85\oyl*7Ug]^9ha&;C&d5r
D0'ʺCO	:oQy҇*ك5m}Tf[e ~ArC
fe]Ҫ|r3s[~QUe~;qL8Sǡ99->luF_2Yݹc犽?
='M
iܴPwY|/7sP4]-٢zSs-Fk_bQ
6ˬpq'khd81Zc$*L%$vBމ.ʻT{xK[=rOvȽ%什AdD>$c|m$ohD.rfXG55m
uq:5c}3A>]p&xrgxĻpocC]SCrR60ge\A歊PLux:BrV!ˡ %<Ds~g~6JXur	PK
   1.\aB8  i  !   de/cardcontact/tlv/Sequence.classUmSU~nIXʊyiHVMh֤iCz\`˲w7L;Cɟ@:eƗ(Hd{}yyݿy;+1EFN]-^33 CDE[exs4Is+b+HHs/Xm=QWRq->ua="\[ǡ
* AwP7.v.iu-5VCREi
o_Q0ppZtnXghxmŐ467zJN\/$0e	ΧJO6ϘZϔ=P"MJ,U}U.ݕ
ي,iŹ"ȟ*MXz˫OeW
W>dЎ3`PyS,1LuB8yD	Å-):ކ
ny1j\Jf&SsR5jeΓkL<rT/ܵ]pǬ*$o	dX
_5iedܬrǐb0С*CDb.as7|xobH*ٕv4nvDebdWI[9$Ƣ6`E1đ kZZv-лܪ(f=)n+%@i
Odc[MK$#-K8yp|0W@=ݕxctb:.=szCfiZ8B	A@?n`fjwpFu<$S=пZK/з[{CFmBk9IBZhA$9+?/9h
J@K!눟T%*s8ybEcE{tIct63x%W}M`H鿠XOh;j=dwIQh@kaٖ̬}#
K 4ҿ+9j#0ʾ|;C_[\OPK
   1.\x   M  !   de/cardcontact/tlv/TreeNode.class
@EH|?j-cV"QA+uwHH Y~8)˙;s_]!UftXMn3ejGIsV7%cj&mjGS)?A8\04,&<R@ytpt uWMz4ͣ/7r<iRZE-:6bRͽPK
   1.\SFM
       de/cardcontact/tlv/TLV.classW[t\U̙K'$4ͥ$&-DI$f2fNJ[J/hU* P)RT/.EA\.d5~{$9ڕ9}^﹗ \WC@xhH遆>K9NZMhMg(
 ct	&2ix'y-c@`Y1IX6Mv+L\e:.r#eٴaq3=`
f{BZb,(0-RMQ*H惖-5ҴhOs͵B%!@!S]c<Ț9$WyyiI3Ǯ7S#fVm#X@2QҔj0F]~m/=gXL:um#RɈwf"Y>қr]Lћ:Ig!LtpCX+ej42a`M2V(~mIl̪ˢnIRprmR/kLK"kq萊y|uap
.Fi/ކ-lvjK[怙sBK]+[,zӴNzSGiE*ީL:geG,3w$5
-~]̴5RDGr&̷2nfJ2u!".u.V9W\ᤕo*NSZIX&d̃HF{<ɲ6~xx&)dD
MgOsMg 9VܤqBbTrgF>YqL312bhKͼpq'0EN`ItM@[-,$RҘ51:<"ULme|Eacd+i
 inGkS _u/i$XOM:;d3RF6)Φf
&sUFaw5Ebn`43NCȕ|/-]:Z P"qќm$B~m4|$3Ɋ8]q;Em7F3Ԙ0Iaf:Ni`F_dCf3,ԈyP "tgW aG!iv5!ݳ.煃W%KqrP@n*9NLBL6%d:=lٚ^^ZМXl]v$rq/ ~"fP!+u9=XX3
zNܪx&34:RH88bfbRI9BDDmi \+?ͬ]ʎU=G=䅎x$׸ڡ%318}q߃w)O Wdx7)Dk=8o()>`iu.ر;|M>Kg\I[sd^K6\fԢE_jpK>RB%
i}MG8#Oc(?jXU{:/ M:S )H
P rEFGCOa?VK)vD]ï@b=o9X
j
bj~yoAX}6&=_9|wRfV)~ҴBBd6WVRҳ͒
L`5eLqU/
r}xLx2/U1OϱmuM}q8g'-'PWQ'R)JQei$HC'I[D؈b?rmu3z$jWMkߕ[<N+'X~䐖{pJE?󊂋P7V쮨5oVk)4VQeUr͗}XJ#l(:1{w|y6.y>v]_[mq焼)B&[ǼԓFIIĿA٭Q|Oy^)HI㻎vQ:8^Q%UU7FeU*sQ9S#7kZ	*ѯGZGr
œX]ֿ<&/a<"_Ƶ\{˫J2uhӘ65>v!8m
t_O+REX*\-6Wc؂m	b+ބYYXzRvje{5e]`>} 3j&"Mx%@/ΒjnNrn'[>ZR*2P-耳~yN:ϹY
1g'&uT|;'-)HS%AʙDֲIͤI"i#^
.a$z^~oJz f~NgvxD{no7JE7E͸_{D ^8/1߉^#x]dq;Oq;&gpZM9F t]eKsC;}>U#%:3^}Tϵ|̑#GF#vV2 "Yܖ0&<0A/P\<gI1Q5&:kq	5Sc1!L`Kx
!:
,sV7Q/RJl1yqJ8rPNjU^gx.@  %u;;{W_<-}Wfwbq ?Rb1^TS-"H*_rPK
   2.\#    "   de/cardcontact/tlv/GPTLV_EMV.class}SMoU=3c;Ʀn>	-?JLĆ![Fg0vqE@]tZ	/@BT*+!Ts޳1*{ι# Wp% (̆][FV/{ru۳;N] x_&ED(&Hg5٦mplQqlmwLv#)3(,ߒ_n}1-puu
]/dv{vw͖̋ooH ]s)sLSUp-YkdkftG A HKIZͧ
Q<<}) 6XV8Vv<fmS]fVrkVǑ(NW`
*LmZm^H5놐8,eC@9b[;;]Tcƺ#Jש7kj~Yj%jTdh\.u!D{"ӷ<t|eLfq'1p
/sr"rqlti_0O*Bt9	U}5q>B#'}~?XVd HEo 5kʉa yEE'F,:Y4Bx[AXRQ5]l1?'CCGZoܹ[MniK$GGCoS/SMR)$<> 
P#Iu|hF4$hL$`"
jr	ypI9ǜG`0(%8$k3HGyQL#!q AP<"B\-$Ygs6ic8=SY,?"B-.*BrǈKu{<%A*jKAU2
ѷ]ܢE:l幯@FuGNMFI.)]PK
   1.\OW
  J     de/cardcontact/tlv/Tag.classX	xT>73Ƀ%2*T"I2	$I #LL"D
֪hk+"]B-(hmZjkw{mMsߛ7]9<i":WSrkBAkbD,kc8#x2iZRWD*)TQ	i*GXzd8Ć3dc4ēD|sb$2fWPQơ	Fh6BӒC̊Jf%e<#4(T-cGw,=n4Ol[6ybXçhKC}..\VEwp_09'7cx*қHd
C[3GRƸ?Gc?Hq*&Z72t-ajU,	8daMm[YRjH|ʐXӨYdR8NǶfOry[*:GPio2>ic,8uGV::@	N9hI%cvA,sV1<QN	.(@p6Gz%N+jӨ
qZcYƖ*A-K4(T!hJ;j	E`gKP.A+u:fGХo輡7LAj^ofe]Nk4>ۃx^8S
htO))͡`$lgU
˪hЩi4
l$;PGhdGdaFFY(ˮhmFomyPVm(ɪ٬4J9Fײt|*4~dJU{;C}H u ,DC]*!.wyT{B}(z#b& tF#*mÈ殮p07X̫tbp`Ҧқ$Җq;qǆ*='n
FZzB.!h>t
`c3
aئX'ȇUaB9lmnS]8>3nn\=m*݋E}[*큛䊡{>
:pЖ> p>ag([oEax{Cas4c>{k6|P$c<Μmˎ`EaUG	~/Պ;0{qOK8fff?pC\̚fv
f#u3<b+ ,cEaNV(0:!!,T)\#/]Vr[p,qųssxG%sN4(xĹUk?R9[9BEKj/p<iC
SñD_,gl	ݙ8¤q,KTtڢBKݳ*28!A5w767u,
fx&9  ^Ԇ
(z
~Yϸ 
k'bT[S6T=4>~¹QT`^l=Ə2XrCVfRWwΒ</8qg[^0Hj"=lř~YͩTv:hjd|Vr+b6a[[fja`V(mC*=Nvkcɑ1(Jm1#<n8uxX
I@"?~!$rB1$7t EpCs0 yԈ[~QboΧ:=?|x
4qO O?y/8O?_Á_
9~
{roǁ=>:?/(De\a}5d}Z52쁪&G=cU:1*>FG9F
qs@Sg.Drw@=B@vI	L0gbPͻ}rz)MLG[.YJ9s6`kWNۧKUyΜ^X9">lZ=><L-Gf?] ې}1W!bȬ1dȐ,)[QU2b Ux.ЙatqZ uX*tJc1>C7}-yٙ#ڷ:s)<WsyGPq˩'Q]@pTl=3Ͽݗ_Zt?GHJ$$YHMH 	A]Fbm@BM"nE1+qVa9vڴ錄+2*w?-^7H,R)rI,,˳.du0",ջ*?#"4*ؿ|yʗjTwAZX ^*T *Vr~M̼xRo/>Ng3y|ѫW=&
ubᦥCgVb
"FD9J
ʈJ|Kyt_AUÏZpX=K_n>jY+i]-kEGi38	1C-v8zJOW?Vķ)Rwk$]iǽ}*ЭOe**xME-~ԁT&l@lh,oL*:NgɓQ \2<A[rȎB9@
y&<Ҽ=Tgrɓ/7κgCYTlXoF3kT
7A
ʡ5&{<#^ez/USÃ8AyInV
r^/Eiz
 ،Zq-iZ#&U\Gb+) Gl)n7;m7Bf]xt~FUTbT v솭;'-MtǍqu'b.vWpB[j;Fy;eX3 _Lʾ~6!5GY%?gb/~0mZ,­#ZGn:?kHl3(HwL#U?~c0(Bpp疚U=̣;nUp$S8bFoE	){Uw
_%ipP 4,<(+s[2Df	ݲ$ y~SacPh\U]-hXrmHF%mDRʧ(3~>["T!ouӬκ##үoV6~"vhKj;і-,z-wG[@[\hD;_0!Uh}arͅC}y尣7 ~]I-סD!A@<+GV'PK
   2.\~0>    &   de/cardcontact/tlv/GPTLV_Generic.classT[OARZDxk-
nIkUxe;)KʶYlg>hjGgKZc>3dVpף@	#"
s̔Ly-4O#D$.cL`ϴW?yp׶3L=*z,X_ TX7S))acD	<4^Mf*WjZ8:ƥ'8 ΉAU}1dΖg:^,U>H\_Mi{Tk_nq7go-7][ؾ3[ƿ6EE!1aa7Y9(*}SdGl-r$-I05l^*d*eh%͖lдbqgB5
g
`ATwOb! x{/`Zla-O,~*nFwЃ#Xq.	+N(@a2E,}Ʊҩˆߐ!,W%Ek讯~\H*)%Y!QR~0YOhgH`I2D2A9sH"aG8rH79'XqBsYL*}V4r"LL}+<*
jGΣ500)	FqCR
PU\RUțim%W5m
'[6~ͫ!]ƃ麄W|{@ؔ{UvPK
   2.\k^Gn    '   de/cardcontact/tlv/CompactInteger.classSMoW=ofqq
$h=nq!PRдMj!D㉙ԙP4 vvÆHEڪ,T%q}ϋpР02H )[{vcRsuBYYXjH	KZh݅avݶz=<?tn7
nH`XZ߮FH8r+m9vzA
$zvg5Y<[2yӻk:
@
HjU.0
oY5%IYU:W+5b-B=ߍ#;
{4Me]HF|hi^7cD%vuxtC̙8_QrS
֔95QWj\aKDxz`l3*44
'C{iyځCü2:d_/'$T䀌
,c8$2\+d=<A>3؇!J|3U|uŗ8'&_ŌyG u:Jo<D@ȃdcY*eYenμ-c86/4!*.(1_{hF^y]1@)Y,PH^Xu,)VsW*1w)W#"O@aEU+XUw0X=1|+/
mƽ#@B.TRQ0(!8X\#Ve?RusjsW?`r:gًѤ+ʏv94)Z`:/Q8$KM'c4$ȎAh/pP:!&64PK
   2.\6|D     C   de/cardcontact/tlv/ObjectIdentifierRegistry$ByteStringWrapper.classRnA}=^6%Հ\8E8	##qhۍ=a1=H$"WATbqk{>zU'a b"j!8<W)gv#zB>WrRlLh+iGFB2W[ SH i"e,5ٮn0DJ&E$),㰉#X1VS%%PRbv%pŋ1w(ˤ3l:YlvyWȇgvu1\VRzs!t=G!T˞mkc.k$W&*F`+}_fݨAD
rD39A$YwV{`70+k{H
JWIft+NobTK02!iF:Qy[,Mo|YN΅O([w)T?xXd`xG(~i ?aXgXy	lIBP
tU)J5PK
   1.\           	   opencard/ PK
   1.\           
   opencard/opt/ PK
   1.\              opencard/opt/iso/ PK
   2.\              opencard/opt/iso/fs/ PK
   2.\žY  f	  '   opencard/opt/iso/fs/CardFileAppID.classV[Sg~#($"TQZc@A-P+#Y茵;j3;bG;_pZ%)Lvþv5 b!Q&aLN&n^p㺗l˔'P6`7(PӞ\Wx^7I1lrP!Dm'TMONˌbFC@MBbpkQҰ;
TJ zW/3̪P{GBC@D>/z~./Q7a^+K)ĬX:;zړF=JZ*HSRV,
4mrO[qX&!<qk:%JO
nsvXCÊ_2e۶OfΚi+àMF3!1eS,鋒0Ӻ,ж[a¯(SO)ddm{"m{n;LOfCalqeBuv$:a~CYJ!oҫv KG[2ib)=I+/뎡֥̀3H5c/sӋ]Jڒo+!Ltޔl-=c/aiXA(]NwsE5yT^Upز<ۣYW4̩Vk;
sZ%3sr7/b.L^louuS7mM6l-1'CHuӴ#YCȘҟ+ۑ.?'6o9[1XʒiJg$t5|+h`4}l|fp?g~>z;At\E]4vj{};~:MOggy~V<0gq/ъ:ǧ7
3~iib	:a8u 8Ģmh|i|wG8T-P?FqQ=hsͭXUO8Y_M6~iB5Kwǉl чi~xfp|:Ýivգ"ʌ5IV30.r&ì$s%IQ&4tWZh0YwV	r{th/qؽֳ&ë}'@lv pXBLe]plkA]epAOiT`WK9FԐ'v=c-AEJfٮh%_Y5DGnWj
ݘj;UφL%-l>gK}6)dr*:7PªoDo]4)Y!+Wa$0_PK
   1.\   	  (   opencard/opt/iso/fs/CardFileFileID.classUwU|4
B@"&#Z,Ua$C3aZ6ƍܰsǏ$}3C}w^ É#(biɭ,"&F^jCa4`j~[ϙUϕcX|z*z5lưE4I%k/(|}d	T0aC}0];½js_SP2M^	Z"疫)Ra\RM&էqK-W$=IFXrӰ{IɭdNK	>
:ȋ6i"YTj2uKpo0JJ](j87;T[׹à6u%9.JI#`Eٛ݅ViE8.+xO	Yj=\Kf"_~:m
lV
F^)O՛p:
g4)STצr*&q9IӳqAE yy.S@^S/*ܙ+&ySvU7guǐ
&>>򳒧hd-<^]֛AeF\B!=Kga@iS7]X|q)(=O_bBIF+D)ljD
cVK7Mgr&
:C	ن6^v˩z2v>L[mAXoNsѰx54!(u^x׫vH,@EZ0KͶ[.>/qfɻwiE4ӼE̖K$[j[B7c'++eqh]ÁWvɞ\`Rɦ?z~@xodk`lw	0gv藞c$DWHl}}f"YP_#A'Nb'i.E0M^xe\!݇:%
]^o!UI<ѹD$޾*N i<Z% Oz{7miv~L@  ݀ȌH}|߻Rܫt{~N f	U,Y!6
0.P6JX#oqyUH 4( QYMfGr#y.HTfG}N3
̆^2zB¾>ؖ>HmgE i-[7D38*~$	?lo4+_7Skt)pOYوػ1viLUgm~7rKqPK
   1.\!  <  /   opencard/opt/iso/fs/FileSystemCardService.classQMK1Եj<x9xIEA*^<ӦlwK<Q۶,+-!yo)v$*tHѮaP֧٫kS{
.M.$;δu:}2AKscRq_n\zC(]&^bYЙԑ֪4H6X0v)?$ӱ$6Nw莍m6&x=Q;}uAs9,YTD*`nk3\_,-lPK
   2.\܋    .   opencard/opt/iso/fs/CardFileSymbolicName.classMO1_').	-_KiY8!T@U	E !ޜ$]{_HΏCRƞy\\\XÜJ ÂNxvԄ2QߒSIPaT|boo<jMI^_wPf^2EUC00g&"Mů<8modnBo~DjVe2,?e( W$=*nľwPCj
n7i3o:>ϤȜj:ؚ-S0TG';<ݦfoeK,Ʃ!_-Av<b//.-y0Kxo1mP"BɫJ_E>b'~5?t`ܡNfoPK
   2.\     .   opencard/opt/iso/fs/CardFilePartialAppID.classJ1O8c಻ZtQ) "TOF$dR˕ě;ELr/~|@'G&62t~έ\U?T|LZi9r!TF!Axςka|24C/ΝA	%c;ByZΤ3MNSUk3	b}`@.]-C>+_ʘb8
pS"MҮn
B]9ռvOi;~Oݚbծ3_PK
   1.\"PЭ  K  /   opencard/opt/iso/fs/CardFilePathComponent.classUoUmw]2l--|WHY(,.op:{۝vvfE1Qb|7 H^xF511g_φN"K)s;;w~# ;^!QZĸvYK5Pǰo/C+5\	uQG!ekN>mQ7aWŒmqp":91(3(/``d1&z*2C4sO^Y3Q0t-17UMC?yH>oXB+b{5k)m&Dcӆ^М~l*vхYUΈ :`vU<öd*cOfh.j<cO\$ʄE*I=Qlch_,Aa+Q`\4Ol>B-eU%%E+#	S;$꠹w&!>$Fq?N14T7|abG#H
q54hS,!;c9CàacFL.5sXs`XۮӗaX4}V
tk_С*VQ^οA_])HIMQٞfRV>49y|c7vUaaIG	ɐ&qr`݆Zb00ń#EúlOQ4ݳ)*0,֬u=1YB<1UUVaγ4s$XF)Jkb[攢ۖBOQLE<DtJKI׹0M>F{XyNKpv+[VQEUaJqx|	$yrb0xֲ.w°~IYJfqSƲqd-!z77FR-I#[Cz_*i\N{P-*^	C@j
PAR||,R&&HLldbZ	͗GgАLƲdbu[< |8I)$ 83RvrVD!OVϪ+f:#Q+tM9
Xi6"ȭޖY_q+["[B]wW}?si^*PyD*$aZqH}#B]M%װteW9t"]|yyXEOu&L7p~S>:VY#>f
n
_T5ģ;_*6h!'E҅}A~z7jm_$$]C#R1#{>膖 M&|O!4OYbłhD)#qz*M`u0[i2,}M+QKbu˔kXPK
   1.\Z¿   @  &   opencard/opt/iso/fs/CardFileInfo.classMN1"Gأw!FxSkɦݴ	>2_f: 7r
Y|)]JԴ/0ݪO%ke+ޒnqf)p4c{
dYh	/lվG劕y"|Y4qO$/Пn١p^SB.@Нw8 .a(qxIi/PK
   1.\+߶&
  $  "   opencard/opt/iso/fs/CardFile.classXmtg~Mv|Qڔ@	IvC-P(	B4b$솝
ZmA,TEKՊ`KĒVQmX}gvNsrffg}}{{{"5x
<>xUP.1ǣZ?IE30#-FLL_:~#ԝDJ`Ym]"rj"*
\w5FHm訝UƺnT͆@%j@u.uF9kT̫mݣ"1->L% IU,B=BK!/E*uD6B-5uŨ(ni6 =\,(͉D\S[M-WQڴ-I2yBLnXv``>vN|`%>Í*LѷG$2nRq3֤0̔>|5;D&ruhLH̖RHFRz
RILK}*u . M*`")E
12pâ=ڴ_3bZ_Lr D܇*e\$FvwUJX;VZ>`+ʙ*:fЪx"nDXvܩ]#"
9dtc;gR1zˇ^ݳ8+>EhmU"i$1HɯxŻүBgBdmT1įٕ⦵{0Ǣ1#/Ue0#*q`Z`jߚ*R6F&(ƽR~%IW'FQt Ip:_8H&Wj>iŎ yGv/ȿR%ŵ>#fE?Dk몒QY8bl#*cKXJoS]%~=a-}^-*h4r_K7Q)
Pڏ Z+*k.vSєݓ._oݬFV7qo6# {"A=٢.Oi0LKVU=|Ȉ٪er
iVfV#ˮESI75dPpɜqr7O%KZi
1/p鈗ԧ<l&e(ؙҢ{۴{ͫf\m~!"c$0EL]j"Nۘٴ_Zc2jOi])ғF\I.a2Ԯ
sQh-t;p0Ssύi;Y/f$^E	v5F(\?YSKQD&}gHT!S;8h2[`UJJjwXm
!fvy)RiA/!bޟ_'@
CPNwFj=K׀:?,tl	F!}ۊCG6zY}Nh	uw%~%ϱyZc酙,YYgκX
ۖؖG˪5XI6q8YT3G:PFj,tAjs2v8=	4!|Nj~ww(@]bz*!ܨ`[TTfQQoSP``/3W:+㕘ď{qR&	ǗJK5_ֆBqC/a#SoRhkO}[{Heڦΐ#mbG	%d?"%=rR]HT\tat'V:Fq7
mb7=%r!Bh^^LOVb?E	b+^OPgRD0!i'bLzZmU>G\K8ڳr37ly]'2 t!VX{f"<p\]tF}O=	S
,W3@69ɋRLR/ۙˮV~Uyh&.r+{gB0r	!x]莐E느	!N6BPP N[P̐ER	çԣHiȀ,D*a+6%x
tQ^7ӝ{͘)v~mc[JrjvJxJ{B먄fjcӤ_NM]"\a2eBJat<*'~cڕ΅?}|=_[=9xN&<>`Iц/X<E*h"[J-5,OSrreaT(b*akGP<2p vJ	"^)#Wq-EvهC\V;ȯ͎q(ްۿaώU6ឲ'`~>A\LTHȑ*g}Ux'v:Ca9<AnX.<L9q2]x]
P>d8PAI]FnP
坌q&<r3tƍ6~}!j9epbI)?=uU:7g0
pxlKmx'Hi{
QyPK
   1.\  P  /   opencard/opt/iso/fs/FileAccessCardService.classN@
CZRG!d* YBjTY4j&(D	WcP;Xzcϙsq	`=X(]DFmGUR;
FRy'̜StD||9<QzV%mL&	+C岗D<huGJZeG֬+
	ӻ:6VĶ):=5v;V%8髰?wyukkBLpJD ^6Ţ-ȁaք,M>Z|8x/Vs;iֳp}3[,H]63$W[BCJXJ-7&<101ߋ<}9Pq3zy;y{Y0?-˰7#[C<}L>aƫ~PK
   2.\VS  i  -   opencard/opt/iso/fs/CardFileShortFileID.classTMwFc;*6!bAҸMi(ӱ2Eɕ4t]vM6=
~l(}#+!$4;EO#$^KWL%M;|v-.o˶k˫CCn:m5n_֐b0/4NCG~d<ǐ$epǖ0~!pُw:)a=7NMϗ*03z;FHa|MFq%먎c:m(x%Ft(u&*mS*u4"W<R58
`it9{Z/̶sNll
{uSRH/(h(xo1YUj50$,7Chޠ]p=
tLb!
3ZDUuP?|5Mj/xӴ;7)$*
EmW,_uG(ŝejiS-C_Mrkmv!emI͝@'ެ?N|ޱ(L[oymXj=Ilz+@i,⦆[?a{Fe5yYnIϧ~(:GcnE6[K.pǩjڽg9uap# t_HS4cЫ+Ã@>c8J@u:Tt')cPO ]Lofk2wGc6rQ*3-
p 'я)l.@	WOp-7&4D)-ikt1J+GnGr8Y7Opz_1B 05ǚC2ձP/Olcbp	Q4m'ÔTGf#(Aيp*lbO#OHķ<(
ы/)S<J>}D7sMpD9EJ-).%˃}9j>Ġ{	K PK
   1.\o<
    &   opencard/opt/iso/fs/CardFilePath.classW
ty~~m#cX1Q[1156!dId
OmnˏBzK		Ij3hеIwkh&9;gtg9c0$c9H߽߽>4
x
?4pj!4DӉtC+ј=.CAm*n7
<(DBX8>ГIEC
p8՜QpԄj[᱆",D,B%ǺkD۵9f(kj
P+E#D܈g
u{:hkv{HYA%(xZ{RF2eDq4ZŌPfXkrïpӕuI[eIfT7`~3>7Vf2D+PRD+Q m$é0s
DU
fB1dPZ=Vku-6<03FY:j2o`őoȋM4aBanCxp/3}بFBC*i
1=/ma%W"yzp'B
%9Q
=soWr]`enĹMa$'RڊЅI²܉>gM>'Œkw=
7\t*xd͍{j./cz82>D*݃
+>.#Ш	gyifWTBOgKV̕s	S0$	`,>:HuxGa7Ew<H;Hm#1=i1ͼe8r<3Шa}OͫI}W2X.hvL*7S
m<O03l
(ӑ6|J2q+xY"4:@r-zw_1H$`ALQM"7ߤh*9c
#(KqO==ۛw6v<?M~w=۷x&z뽡NkW~Fmgw7_t
pi]#4b{bD$2^*Qt鈄=dvVA|#ɉmO	GwOs93kÆ2QÇTHIN[8rwlMd1n

9ZiHFSDʍS
Y`ڙFJwc>uŉ7龶"2KA }`=sfZaCX3yH2&/ٍDyEvPzјDI}{lٮ~vOb45NUr*m]/mI$2.#3H"=t~L,?oXw%#,<h>OXMw2QbFzyg"49]`1=W/qp,C7dp&#?IմV^Ģrͯ
O@.?)Z+Y]WDJw~E
F6߰vUn[6s3ndYϗfG'X۰?˛98o9<oU8䗆e(~;m8Ytn緜2};6{먟>^Fg#XR[}|WO8<6Pd?Fv
 <Ո#hG[i<][
:(F*ټ??T_hG6Jy7:8.ҍc<MefYΙ/	L8v S?i<1<|*i8jɥ"Gi_vniBM}O֎9'Q OuQB$N5fW?qI4:֗Q?Q$(c%AL{d(y]cn"Q\Xht{-3;1sQgNQTq$޷emseXcy} ='c
^@/F}
$:N1)gx;l|>aȼF
!~;7x?E(YUttLZth)iMy){	
^R%1 :VߩD΋Zޓ8DO &9rj"M"
X6ⶨ]]$沬쪕.=JV$<iߨ ٸ3OrL}#Uit}3;m3fM\<3Ut$ +R?_C׬q>s^T9T P<ݎ:mq/T!y.eͧYӫ*R9qg,ZFGBf,Rv,QܬXVU
I9+6ǩIPf׺4jxR|Ʈ~*\\0GG_$h u5{k(Ɏ?ʅ' !&^{1-]֖2<+P7ݗ_W&k:=';ŲR7+;fw1U-DCZj
uVqV_u+WM}tCD[Gs8lE`ͷ,܋K]׍Y(3 H37̓AȢ߇tZg2PߝAػ-[vT;pډQCڝˮޜhI+Icߡ[I3^)sxenOhG)B4JD<	3IG7sHI2
::f3,P(VBgcSq|J撪6T9YI偳XWL^~%|mU/Cu,'}Ʃ%giIN}nQ1$R=*5FZ4)3ؤf[raY5g-iw=6ja(A[bdZ6eY֬Q3kX'(sR;mc4)5l\+f7;()`z꫸9Sxq΀f+ؾc7
mSPRx5U,Oj/eL %~ж\~$
yzܑ͎tѝz8Գ(WϣZ""1ܪrRkʙLsc}MVz-Ja?OPΑ9ޤ\[̻8
@켄[r#Q_^C}{X^a^2Iu
CB.*w,m2qaR|eUi7wD2Fl5KmYju_!Y?/V$9Ek-4yzn|XlC)ՈR7[X/ȱYT}Uk{v}^-t)d5cN;ʝlZt@bu;_; >aEMU=4xE0Kǟvi+cO͠h);^m+AKlP*[m9/M=^[ksz	(ցk~ٮqTNq?YZ{oxPK
   1.\_}    )   opencard/opt/iso/fs/CardIOException.class}N@ƿP* 81j F1Rq
-`H< >qm|{p
0Pz4g]fho5MksfqrB)	4-g`٦v4gks{Oy=AHs޳Y*te,Ce5}jŐ;"eun[W~ro`u4z-	{3N(2H}n@ӝao$MgV8¯{Mkކɒ'y5:eLe^ȋaT!CSl,Pi邪D3T	kT|%"X ]w?ўC<4FXMEtaAk/PK
   1.\Ha    (   opencard/opt/iso/fs/CardFilePath$1.class]OAC"-(bѶW񢆘4M0$H3{M &^Q3n9s>f})6B&4fz(/b}/P_"̘~W=I, |p	cExPGޛ
Ӟ*0ۄL~`ӹbE	v(E"kb
Ą&fٺ7AXL vh #aNK$a(7teNtC၈kNvPȮn5qGGr'q}ܶCܾY%OL*"Tj3G/m X(?q:u^A|#fdl^阣Jɨ81js \bѾ:2<f̻+zɊD<5~!Ȝa'pM%䩌[l/۸$+巃U;f
8:Wdop2ߓ,-%Xw| 1s]ǽN+{:9'?g<Ʈ\VRj*ꉧFR+%PK
   1.\              opencard/opt/terminal/ PK
   1.\C      +   opencard/opt/terminal/TerminalCommand.class]NA
0A/
b[AobMJŷy>JLA+taٙegg^c07RT	7VUEEΏ_:a	Lυ9SI,N]ҦFCª5Rح~_Z̵j0ج4CS80 PK
   2.\              opencard/opt/service/ PK
   2.\]~0  (  A   opencard/opt/service/CardServiceInsufficientMemoryException.classMK0Ɵlt:wo{{a: T/޳,-)i;cyxĤ-"A0[8A.*T%z1s{c3	(JTOɈa)5v+-{AMᧁ2Ng3
_*)'hBt9Nfjab$"&89$p<<sq-zRQ,fW	ľ
LL x ۶Ml02Jk	FyrUA.Z^vfPK
   1.\{,  (  A   opencard/opt/service/CardServiceObjectNotAvailableException.classN1υDQIA(j&/aJ:ZH\ >!ƨ=Nz_^^Fy^	-1gzpE\};f#UL(^X!hhQJz#"O2v#ۄZf͊Ɉ^_MXNAhĴtfG.xv	\$	.?E(Rsq'eo1ɁmfZ3qΰkJ&B{6;@iY[5+N	GjCp>jAPK
   2.\37  6  A   opencard/opt/service/CardServiceUnexpectedResponseException.classN1Oa`QŽ;.p	
c2q!ʾ?X3Nfk"qPv.L;i
*
(pj(p#RsO蘼d7aPH*j-(C/LV{j;Yah'^T^{bi7EDJ;J"TtgY`&
_Ly,m:L?<{nHIˏk1T'zKkrp
hvoX3ݹRgmp0jul-`hV[t7pFyNrՖ`C42PK
   2.\}4  *  =   opencard/opt/service/CardServiceInvalidCommandException.classMK0Ɵlfu:wOnAtd
CA(^&gm6)iWZ ~(1i
96j۰4$8	UHܔ̝ɬo$b1͸OKLAмgzaz}ԍXLq|O;dF<8"fMe:nϙHOhSM_
쁧?vҔ.
!hRG}2b~@GGw:sc)>Sl)E`KghUVmsxpWaTUSm[gv? PK
   2.\h0  -  A   opencard/opt/service/CardServiceMissingCredentialsException.classN1Oa`QŽ;.p	J]nPehfhI;_2!ƨo=NھYEE^
%*fڈ
B73qE*b(I%!CmPf+z+$\͂Qj
cOH3:}hTT~qB=H*qOMy2FRz郴?<\X9Cu&ג,ǠGU OpS˥9q1ࡏ]Wrs 
`蔤-wk	NyrՆ@>AvPK
   2.\	4  8  C   opencard/opt/service/CardServiceMissingAuthorizationException.classMO0Ɵ AE
0M@!L/3@.]!oăel7=OO~|D8uP&	!U37)S+2wd&~^Ib&4\s[\p=$(;Xf芺s׊yTKpm'=OS]Te#hx\e<eN#3iz2Q@fO	n
tn=~\˥
ل[2/,	fWuL&&kl{\܇MUEhdn Crl6alp6[eg PK
   1.\v"     /   opencard/opt/service/CardServiceInterface.classu
@gF[k-+-R* Xҟb.1gPEQjr0CAs%^'6UXmu^9HZa*+)2bKY*Z$21am>JnNl[!=O#<JQL2&~MkD}
FM: PK
   1.\c*  "  ?   opencard/opt/service/CardServiceResourceNotFoundException.classOO0Ɵ`(;x0faekf
K'~ ?cԃ_}{ypa
4mX=&peDDUER1/cj#MdQճ]ҜKAs	As,
P:QD[Sx\q!ݧL,\,DϚʘC.ؼجzB*nzh<#;eMJO".̀C/kC%w 1?cOw7:[乼>ұ0Ʊz}l 0JmW{	3JE	:Š4?+w? PK
   2.\ZK  <  2   opencard/opt/service/OCF11CardServiceFactory.classTR@
-b"h[.Ep
fGHIMR@_ /3}&d{QA`=}|7 w1A A*T3<tɪpΎs5ELq?2TOM1c0Bˈ(0T^e157:_(MNNuM5-l_\{434ϰr5h%Qpܕ*
9XzSTSrjs9_P
ZpnnY[/W;ۆBd6uZZN]f][X6%}Zѫ5+˳3=鳩>̀kN42Mc,~GF}QaU\B*T-xZmPlTqCƨr\nS
O>mX|Ɲem䢣t\?aP*#鋴)PdeSʕ3LJ!~^FR-CH0"ڌ[ϴ|Iw&}":!45|S4^ +6ЮUbC[8; mZ	$<}w]hWޑDN<DD1w=m`SA^eA%`%"Ĥ }L_ x~&k'Ze(G=
wث$X-
"$2-xR{?>a#}!ǴPK
   2.\              opencard/opt/applet/ PK
   1.\g    $   opencard/opt/applet/AppletInfo.classTYOQ=۴ ZPPR*
T-`h,m&>>>hL4QH41>o2(Lr38[2\pK(й>TS%<>9X<	6(*U\PkTjj1M*ޒ:BqΨ4ڦDEb˶@Hv Qʢ7cZaR9kKNbUC,5-ˮttinNې>plP_ޯ zrM+ǇP[LiI+H ɰUFD3mLq%H1HYG	i̔|K>aSjbJQcemjiqVVgK}jM{cVE@qO3kF(yײn=dD7!/X5)f7jꍵϓӢSw,@!2?/M57muK,T9C-<TV\eVuhe3E/>z!Ċ:\Ըb&YOhwPHb,AC;|!,@@!CԗtgȢD8!8g$E3y_y'uyVpq_Ep^p  `<1<LyB|$ųEY>&e޲*Ci?q')q=kųù`+hzN\/p]2\%ٹ^׫&\Y9TDv`oW*"Pt}|~Zpd]Рi6ZrĴq̴$q-TQ Iw{*OXe*ILb	HNnPK
   1.\ˀV]    "   opencard/opt/applet/AppletID.class}NAdGw s1.DE=hԌlfƱ1Q|/L<xCѸ_"f!C$DW&N
Uw]K(c]T=b]uMaPm+nXn5IY.cH1L[fE32iíoFK\<!0v)̎'յQDisi3D֝SW
"cr= Qgin\+A58.4476!SS<nBt<SlHd\Е%~V,-yΗH3GW(sY$_
cڢ?XYĀugABcӷ[
%#dq	1	NvGϒ;~PK
   2.\  
  +   opencard/opt/applet/ISOAppletSelector.classWwW-yeҸI\7UV"v""K䥮)Xze3bf8,6]hZ@ٻ@rCrNo88=Sͻ˻.3'>p:hh1H0Ԍ̹Mgf='5YUfΰeˈ#bNFd+Ŝ,ElFH~Gh*V.NYa6LSCР+w&WȺv,DFw`Z4ܣ{[e7bxV#lb?l^
MkҲt鱙HEC؏qmk]*-y$?
*ѮqC:~{Y;Vts\tuj7ډO!]
|AÃ͇+i"qkn0󱡾1
:p\fVK	4{ŕ75BNu+FkT1":Qt,ӊ{ZǣxӨ4J%9;'<У!,hsIUD`C;	\LJ错i>!qmhp.{}븀=	Mӵ.Zy'ՐF`eEà-d^BHQ-C:D.,$Q$u`γ}kkZ1I㏘r2_>
Z9i0=/
_1g,{P
|:QT8*ZÔ6\{u:d|x2eW`WOGU3
`:BUD*۸rN)q՝L_=:ϷVٱScL*:1?Ig4ƒ>^d$5ƆEkDّtf;ڃ@z$^8[<ɐ:5tZ_^k.OƕB6{jRd6t?P>n%{6Y4ej~nJTIz8gF
*3N9lmZF{Rr&$znJfS-WEp1j{	dBչ%v&ʱZM58m̗]ޕuQf+TiGÛ'*YU~͕5o@Q=!gZ븶Qw4~_hzx`H-*V^ %wkv8tpJYn>GCD(EWF&eLBZX4k1
䆝Ï,R=}̛;,;
[*	{'*߳h,UYXe󣭁0rs/9ptGO.ҳK&i'/I;>%=H_ы诐H߬>a}#yG|/C|^媾AX%l+5h@\Ny)=Ǯ[w,cbɛwWimt4\я]ƉTwV˩wԪţ=7j%|D>ͶD-|j^|
xnbTo7Fr|`[mA}ocl~ҳ7,ۂR`̨f$L4y ǈq1Bu%	ғh *ϿZ.ss:5~&o\>W
ڽʓ}a
}/|6x? 5"С	
᥃4@׋3hsM[^q?U%zx+\PK
   1.\zc6}  F     opencard/opt/applet/ID.classmTNQ]vuD
ⵝ" ( AFMD3NJ	4&ĘF}?HsK3Zkﳧ?|0|dUdh]3z(w̜LYE˝`l
B2*AeKf1g8+]ruT*$q#ThѪ
J5B":g*Z|tS:
2:Ut&&g;Z}̸U\eh.N٬3t3\'ˠT5SяsHQ0Nᴌ3*4%o7S6ˉH@Mq\j ,heY4d95=[TL\.:uBF	O7Bwm̢'M7aqM=7JB̧-79cJO ݉CCIk$i2OdB襤},%;hzO>\11R4aC'" v	aobxToQzsD8nl~!e?+wH"{27(/1
ekHt
F)6
iߒG!L]jP4,/:S;
HC!Jg.|&|n1ڷ!2R, գ3:ZUxP^򰗬hۈmc`P~._{$wp0"jPK
   2.\ˡ
    %   opencard/opt/applet/AppletProxy.classVWE&6$[@ֶJBJ Imh`fH69G_|'EZd	!%9pӓ{wwܙ{(@^1*t)&ԪU{5y9Oӧwf
z|?BWVp8C
Cc1=hxf1%lv픒3ʵTxS[*FpahWkISJɜVAkf0\f?vbv0pM~z
L3,eXyc#x*Uq	cD{E^Q0#Ǡ"喝	H;CuIdKRszk&qA6WY;ApEUD]nvY{?wK5f{xܩf&[p(irJ)RJN1׉:HAP;Ǝ}:ʬ䩆=6S>T|L65ݳK;(2M
.C0mLo*lh˝kf^s/A;o=ѐ9s@X4֝Rt!5wtA"NN:``=&5:zeZ@'ܦu2~ME]\oe|d* /MNῴK˫bmjbutrݷb>yF5j/C8E"kΗ
ÇZv5Ahi=s-;؇0߉SưPv%_at3Kebժ#
DZ3͜T"-ȃ(K_AP?9mR'
@vFҵ!+@w "GE&	}JS8u]I7$"%>!YJF7'M}rqEWҽI	h83o$虦g$瀿q1xbz$#!`Q :(JAL|bIl葳4Ғtabw/CoB*%1aM5ĚRJ~YX"Fk>id>b?J
&BXeG閲ݦUAĀ:qDZ(hhz?;{1r S&	;|ƥ&?z'bA#_CI6eR(%PK
   1.\M	  X  0   opencard/opt/applet/BasicAppletCardService.classX[\]fydx	$%+Ĵ,`
!cx	̀ƭZVKRM7fkk,,XV1կos9yҹ\P 	36P8niDf#}$ImTVui(XjHDTckz0f8".1չ4d$lNxNұW`e{.0%Ju\y4`bfT)#.jomO
T$j5)7jʅbM
;vt6tn,4mKt,2JVWN:7䲭^c%V	d"F4r'}`w̾iO#1dX*HU]5:*QED%PCk[Z
kuCH`Ĳ:RV$/as뾙5KuX8dMqzI
)2bS5t_kqu܀r|}f0]_c ױ^X霙A<}wdO{HH䑌oьrҥ\(ҩ(C6L%ɽrϊr:6EXLB#9y[Mv;d6.͓}q84)CC Lk(3f2 
ۚwt-@s>ʙzW ٗc`en~jxWfhru@Oʓ4Iu "A2?0!10DW\
l̔ż ;jtX vaA۝4[ȧʙl1cJ2W72ͬZ+}XM߉{t+kL:N%'r,>]<xP8iCCFOf)܌Ϯ[9VEa9Fw^!:g_gښRacD˴""cpZ.l)+nopm=hG7C&A6b",<MQ#foxBfHnGu<f`dz+zeuD?}H2<kZRE؈vVD;@js2$w_Y/0~dWyKbr
.ȧdlvӽפܩ)vwƞe+2z.-p
n6
N
'ӽn9񎰙HE
c}t
/LYn^5+
kxpM2t^2)N0eDAwC{Anmn
@Q8MA̰}PϢͲԎ2ᵁ
F;S4dLTdȌ~XB$V5YKRp97:VlLZ*iǵ4d2@/YǛ?sHl$>h:͞}r2
Q3I9ND)vL9{M<uD===JQ˿BF's8CPwYs&f&)&ctfBmfEgVi+3EXΦUsQ̧
ydV
,]g_m%OCTC}sN!pce^v){E|ɱ]~U?1׀_
P<M9)-'_3yPvp

*CecH>=/Wo4)B|ͪ]rW3s
8k
P=:T-S}teor}O1g7=/Ӄ%<
pWwZ{׽z k؜^qalǣ?}a`NZWY|r.^+,|臌m)oE|
eBNyStDf02[.cs67D!RmA׋983T/YWpBxˊ1.p81N9Hh¹eTϝ[֎aE̕19~s#O}GQ&ZS{=VK$R'%q͒ibFW1"G|j3R&H;1}܍͐?%*1;Ǳ/07_d3Ќ	+؆VU}xo*vY:L7iOK-_It_(9o;txE5FOS+RN$Үj'?Ok->%89g3(mH/UI+#g~hL<~V1 ƿVh}YpIXŬ]Ty&ԓ@CdLܼxyƥ\:HMS"xH,;A7ciJ]J]JI$ɫ
R{xr^'i҅ޮꚩ]OH:;+V)iWsJX=v|b<O"i]L[b0vRj*$^ҿT_oOOPK
   1.\NUJ   y  (   opencard/opt/applet/AppletSelector.class}N1Et?`%YԄ<qHmN%~?2Li&a<[J:pUa]8#lVIZ.4'Fݼݥ]`YsV4MoZ6x챸?m_]A>}jr$gwkFὲ4h)tAsep{xWIN t;j:GX$ʑDD PK
   1.\Nd   E  %   opencard/opt/applet/AppletState.classO1N@M.6@@适+)@H(Jg{>˹/*$
{[hgGO W800cͫ4OzQ
66g{SrS־
ڴzZfєNWƭLg+l7iOSyN㚐-ƨ2vQSR1 K
˦Ixtzϙ`ҋAP#BI PK
   1.\wq    #   opencard/opt/applet/CardState.classJ@*QKA+PZL$VE3iRɜ9|{B+E!\5Unn!\,A\A"$R-w4ղ]۶!\F~`Ay[$w!CfiuS\¹m"F;`ĽA+-tkaXO?IX-MW%5p:Tiv䖰I
6
Ek,y2:W2{D^iا]qyQ5y<
>ISg( ǿ@<y_|-0Y!-c{8Ht,i-x(,%Z_PK
   1.\              opencard/opt/signature/ PK
   1.\Wp	/  e  5   opencard/opt/signature/KeyGenerationCardService.classuN0E#Pk˂/%.J""W\'jG!&m	)"KΙ;~ ALFdrx96U>u$hzK&W|ˌ ;C)+.pV
v%@++q/e?=g^UtC'뉦Q8i	Ͻɒ"!@ShF-Jvlb3%YK|ɽiMGjPx|rt]WyNӍ{x+xmpT=x/7PK
   1.\bN3_    1   opencard/opt/signature/SignatureCardService.classRN1= PTĝq#jHq\ɪ%c2_sQ΀#h]97 gs"8\2nnO%}]ta<ByllF3`8i3cڊ\hd&8Ag}%)QK)a.S"=o<lbLzaE {V	7n-u8y"CꋦyuAp2ikZ~èHv5xd7d>*JG_S7|f?;[?q"0wk(43KG0}N\B`QenVlnZМrmEw,hz)>PK
   1.\              opencard/opt/security/ PK
   1.\/xu      "   opencard/opt/security/KeyRef.class;o>sNv&FԼĢҢ̒J}ʠ4vFĲDļt}v6FA(zFҢT̜TFnz u@@ @ PK
   1.\U)5    *   opencard/opt/security/CHVCardService.classN1 >MH4pS-,[P^̓CGč84gߙ7 P8)%]?2R,j_lvM k(f<H ?~R@cHVfٳu8:,O]\.Xjs@EQ5Y-sTYG^ρ ;z6F&sn!rB6%̯Tb3:OD+2\Cv)	ϮY2xe>2(MVP6{5h=V{Jh~PK
   1.\ߡb      )   opencard/opt/security/PrivateKeyRef.class;o>snv&FԼĢҢ̒J̲ĒTʠ4vFĲDļt}v6Fa8$_Zꖙ bH|Ff&Vv`dL\ PK
   1.\6/    +   opencard/opt/security/CredentialStore.classT[OA-ݶ,(
P-zPɰ,ݭۭ
?w^1Q0|Gg^vgs!L@PAHE

+
,n/iWc2("*[<h%ִk,grks\!Yy,-9TLK{ȋ˞0g3$xbC0F4)HhFVf-^,2(;ߝUkKTPBF Rqmv.z)9?
RwfW4Ӎg:PwNy\.JԴ*SE.ԒAP=Uf8nWE)ЪFMk-Uv|.
2urm̔돯)ܚ)1-؛;ѩ HT(8GI]JN^3ܼisK˒ir,zI3Tf:r__gh<r*XORQJ.uݬi^Pp
*SdtEPqLjnIcu4fE
O_ޯjI;Tͥbyf8͇? hBbׄVa3D4ВKoP?QbqZ~!G }m$1}z,j91 4\}Wq'xOaw4LouB}RW)H2`W ^KS!jMJ	ziov	QZ@-%^PW(}sQpYGt?7;
.a>\!g;ٰ,	Zq{OЌ,R>Ȉ-F70&PK
   1.\q      (   opencard/opt/security/SecretKeyRef.class;o>snv&FԼĢҢ̒Jʠ4vFĲDļt}v6Fa8@**J22p%e22"ۧ48$ PK
   1.\N      (   opencard/opt/security/PublicKeyRef.class;o>snv&FԼĢҢ̒JҤdʠ4vFĲDļt}v6Fa80ed
/-JNuIedDPh:#3+;02pI&. PK
   1.\=`H   6  )   opencard/opt/security/SecureService.class}O1n@%H@+) PED9CΝu>k)x BQV;; <'hdgtȔ/l*m jk8AѵVvZ}mD gEE|#)k7.Z3OGkBocֻ*A0>,̓G5˿3AȩK[Jh$#:'e>I?PK
   1.\!]l      *   opencard/opt/security/SecurityDomain.class;o>svv&FԼĢҢ̒J`(%?713A +,Q?'1/]?)+5+8(9-3'AUH9##302I&6 PK
   1.\m   {   &   opencard/opt/security/Credential.class;o>svv&FԼĢҢ̒J}ԔԼvFĲDļt}FҢT̜TF~z=R6FFf`d`Ll PK
   1.\Km=  <  )   opencard/opt/security/CredentialBag.classUOU=ݝ*)ZhYYZLHxW5TD4Qj4>&;@*̽;9wx)$	od,Z']$AU.fRrÐ4N *S*[iLe*YumZfҵ
F"b>oSmC,9a;=;u,yUtK l
%rG1͓Qt+U'#xZ	^6yb=xB73JNt?`hT*lWN3cHDD+rz85+Y$| 'r<2k\hvv	"?iH;kc4kT z4g;\umr獥z]2j_?zT{$<%RcK.iVj}ՒYeX<UN@IͿ,?Q8yDAY46tbW_Y1RU}O"1+EKU״l
܏AE88xd*5]D+5u"#M4}7<k9>O0b̟SEj9U|5fz_Й^Gs}
܇21_A>ng-V#?Kt
b^KgҷfŜ*Gm!=:C;xbZ:qŵ͐_K!2U&r90GgQO3j:#_sϤfnO.~O yN	SZʻh	1p0m4[jdF]w]xOF4]ư/\weMxK<<.&F5=tpvTH]mt5]2A7%knM .G'ouN⏨cb?<>">Cxw2$trRcjƞ{n=Y~c,|&RY"'#$
e_A\PK
   2.\              opencard/opt/util/ PK
   2.\Es    +   opencard/opt/util/PassThruCardService.classTkOA=Cb>UјX51Uc!"M4H4&(vSt;s{ν;?}nA#i}9)-e{o;*䩵}w*G?O=Vu
JK[6CS0RhUͪ0|uSljݪ˅Uir1Ѫ;^3ZZ"V6!Cu=[R{+B)T&Fpt@kaec8q\o;ӁTJ1<a.5%\ |TNTMO2B.{+E '+^:J.k_k.y2Uꏻ*|Gcg2pjWm.3}2LuSC˧wU!@-֢hF"9J'sq1Lva}{HEFf%J5s9z=O8in,#[s4xIlaVfILefB'|9l.Ff#%mg?QAGa(W5RxCѷ;P=!wP [HPi,Hq%:<+wo闔(r̂q*Fc!PK
   2.\x[    2   opencard/opt/util/OpenCardPropertyFileLoader.classVsE:{fX*r(b(D"n&d23EY)
KW_[n`9$n{{_]8D":b,8hLav9_ ɴM@y`=א1@SvpN,OI%]diɌc+0Gwl) %1Xn`eaK.'=OqTKni^¶nef&,\fJ4gfc]׽&Hu:Ҹ^̅n2
7Xk)X(y<mv ]7{n-Vjj1˒m,HSuAa~e~U
}J"'щKƸqH8|#0Ҽ)znױwCrzƊ#5|S7,%ؾa.9IJjֺ6,慳*[ǒ9&$Gn-
>[T&P8@w=:6U,15@5< ,N:N}9YTְC`QUeG]UY濣Q[sAzec):=^󪪣CاaG)d`;l-7 ^etI7`#ŖWvk[ʨ@"7$ ]PUA
5Z䅍:I#|+FT%aᐺ35𰯽>l-&.8yԘ1mW*Kw1894\S+¨?fNG\8<{#$	麦&w@LN%:Q	;YzfM%ф-a7rYX)fyy o2ic*VGݴhp{gRFSrs2< /Mbsg'=5Y9y1wxk@f͚3.+ökx IɹWQAvޒު㌗6,/7+=e
9F^DG8Aa!8Ţöc'=
zUiL˫*c%n;:m/~mO[~h|,gu()]LpxU DOr
ٶ2DVҮh{7tұRm+ޞC;P:5t;OaaZwqiħPv{B";hlA|v	xk!41>|nx"1j"K"l~/!0IG|bO$x0(Jk|@IO:5z{^i5$4jfZ uUCo@D_$җ8|4Oe2,3ҧ֡H{jw2|GvCQ#%S#UY[E#uE#bMt/jIGb1v$&
}hP򲙙 ޢow!f N`?N2gY<#o+~b3#-`)^J(o╀ūHqZQM%ՈLdYc[hAQ`eDhG9w((<||O9PK
   2.\S_    2   opencard/opt/util/PassThruCardServiceFactory.classR]o0=n&
Wj+/ԉ!"m/M-Ɠx 	6	$~ ?
qm/slߟ ]PayAQW{/zNya*2r50}0(6ʳ8y07_8T
AH(32]UDl,]p	.B1Q°yC]b~cC:b-J'BD`XF:	G0U!싢H"\ϳ̻Hqg'2oڞ?^WY8L&cޟ'|ȩnTqi.8J+ 
'0BYrNWi7@}!fm[?@3pb
} שV!Fd}<bd7Yb~Ztl	t^m)8V8:)sL4oPK
   2.\ɱ!9        opencard/opt/util/TLV.classY
tՙ~߄@		L H hP G$	 *hvc[]buԟ;=cv˗1L\syޟ;S .?B; 
y[;-WoutB~'휝IK[[rC=
+Zs0c|@eJY
L@>&b[]
A'0	
D_LAo=Xwz֍y
/oOĻܴ ˜+蔙!39h*Dfs9[@B
{ޝ
7oh+ZKLX)&PT>=և `xjI;H:ֻ  FaL*|kA XȉTa X4zt,%P%mھh"E7Lmz!L5ZT:֍Fwv${hP
Y,5+EK+XfNZYKz޶&V<&rDX'Z)dۆ 6ʤüR6p
}sRŸpy4Օ'b
X>2fΌbc0{+Zty<FonQhzm<e<Nc3=wJ@7t	mt"	
~QΝf\Î 
XpKrSADj\Ys![qm]LD8'k~Y_aO w.b';1[hvŮo)>f r'Η$;xwo{{2G1MF{mO]qzn(or攘Moh@#QݱLݜvl[1\}(~#n6ᘱ)HGLR;v2xXmX"͜mwwHAZUQoG_o*)0|Lt=1*m-:7s['l<єTa2*LGփis(lByIy[őnj=Q-YNv$L	3䒔ID=d%9[4,íd,ڳ"Jvzr.	*
ޑOrhG:)}(3mBhwg"*kL&dI	#mlB3bI4h&Xk8MR?~N4
T]͏$%\?ޔrNR&oDWޥ45͏di+3
n71XʇS8KPŤE,'[?4p͎ͼ٢wng$v|׍f	
o:^@0^@<1ESQay37%ڗ"0K)2k
rT3T0gDAvقq}>K9V*#!u3䚅Q|R<*8Q
l6rj&԰X6#_%-Aҹ p?9Km2|U#k=&ha7m
{hki^0~3!g#g-%*"_׶fضF;<|y`~TfENHe;DY>&AR0b+h5h2`vB.ju75K߃:PO鯠ԫ(|>z>yxq7_`ih_ _&g ׋qF><1;=di!wcUib޲bt}O*Γo]T@wngF4h)wg]Ø,aԳE^E]
"/#[r5]č~!#SӴa\g1Gюc'Mx}lٱ^ǲ{i|ZK=n˞cz}%#=6;0ќ2lr(b`xQqlܐA<M|0%Ux6fD.S{ЀfGfGf<9m=mA0n}hQUvۑ.6CT+lze1J^akWPQ.?ѷ-,
D|ДtUi뷔_(G]Lsg}LH)LB?	?/՟l:UkcFseik!#+pc B
6:`nnUcMt.~Õ1&9.o&dMTX}	
&b*dfj2U1G5]<ju?O#-L{|Q['<?UQ4b$zL06[[nGqiصqmY
G0槻͏C~x>kG8L 2	3G&bg|0F=&GY!$bPo"^⸟)s[S"J|ɏ2͜2RYa]H-k0JbZBebWX^]e24XG5`+G5>
ՕxTT3WxY*|7j=>V'	*ܪ]5^u**5Wulk}c-e祓6f$G9dTlRU&iU);Wn5ZQQ=Ed}J3f"ǩO&pʺ2JB,B;0 Pփ,p1cd5d91ݝEJQ4
T&tu="j'f3*;DE/܁QƔ+mne*+hP"[Âs'r]Sw#R{PEԾ9ؖ#$Λc|G?bVg0
I]kWɖÊFKQaWѾ~l4nk	r\	vɔ}-aO(=zp,MV T?-$ƨ3?@!p!#fQǬyzԳpzIu(Y`)b[~%n>nye`D릥k%EbEAfiuW$Qqgx
=QU}%׹;KL+1+ŝmuC?ְROF4L
3iMۨU.Z{ؤG]g)ԁ8~hbʝԨ)w.eOzs5,	aO2`<d",px>̂0+S[ftݰ7ZEb61WۢPeVU/DicF0E}տez3Y	ei\/?uv鵅)&q~921}<IEAlyJnwZaFkC\/i+))1Cwf,EX̘E4kVv8xu>
uf艨ԓPѠKVOETOϸ;jweLFLx94S~βi64zZzRh
z\]SE`^@@@@@M>쾦d
Y%{b%=產)2d:L{kԅfp+C;iꕃUm|p:f<C{rȦ	w+hFs&땴*,W2ͺ Y.݊z-vp^oހ'F<Ə&fU88<eEP=kg	bz&\Gpf$ A&DPkO .q&cq^дۭ>a>RbʰR\8t~b(%8#?"zM]i_iFqň]ZCi &;=/ j|~*"
Qz.oa6J1|0&nK&&;RWlnwC7`&=]ߌ64qލk׈;OM.ܡ=z/I}/}^o=^V>96>*ޯ*Uu~L2Zp
+4sxޤh1l-V~LF7!)x}qパ`))29T̺Y0Og'nrYZ(kd]&YNDLŏ`4UZⶺ݊{d&&7}n}^}
K,e/cW2JZ-fg|Re~HE22.+2?4Hqxs9<_5o
<co;+|@kS{#
PK
   1.\fC   `  %   opencard/opt/util/APDUInterface.classuMJA_:_F{1s3CO'x6C5QH+{E'*da[ɕfvWcYa0ѥoe6u*@M,"kI7'<$zᕊп}\''#]٦l=AgQ#;Kgye^M"Z	k8o	-EJ(GBB~ PK
   1.\YK]  .     opencard/opt/util/Tag.classVoeMgm;ݶ{k岽Ђ"Tv)2lY)5"}Ŋ|b(A|xF}LK[i9w3~U TP"@?d3RF`̄9N[ھBQ@(0"
*a302MְݔqN^A	tA%RF6KAD#(CpJgL.a	Q J,T:'F渂@l}OE5 Dh	S:)"TX(-jDp/V(<b6;,zmNCH2پk&v&>J t%fO~37xF$=졤05orhnq.>/R.=sr̿B@;wցYN>&FFp1z<hm׵X1$BKX@(MsȧDIgBQ2{YC!#;o)Zu.VX"ssD0'
c2r5)cݲldw5-@`~3ca5V#a["gvی`̮責ùֹb9<kHzN*tfá1 V%2{*Q9sU z9PDฒ+.AS?A@Eb( o⸀7аx襵8V4G:׶evy@&34,Mc0$ǐ"V\)KQGBY"
eXf(GJd%JsC))t[ȕH*;W9@.bXN(QhD
c-IN|ˣcL׮Tul's%">(<2.vKbmӫށORrsm/E\S/YeDx8ë,_'coЃy??p8ytF'bcjcs)I#zIejvU#z65{}hDtrd
G{7(Akj8R,Gx.|J?c]a|_ͣẹe̫1 |
a
cˑD%ˡ^E,k
g,/IW_y.ƲnR2(!1ֹ`5-G~ZGmD6aQ59bTvNdE;gb;IJUB[
-v.$D\	ES7t$ɑeb|ǐg???#6~K\wVxڿd;IH;v%g*q~V&,&Zؤ,xu
KkۊJ]&9ײtkYr5ݲZEf@_B	§5^g/m0Oy'J4<4ٗ{C^ﶪ@eoUyBYw~jkr@&&3ͱ./?5^~jrR$>TVntN;,ƈos<WچNAo?"8]؍EPK
   2.\              opencard/core/ PK
   2.\F    %   opencard/core/OpenCardConstants.classun@@g$n!M/hRx@񴲷U'n>Y].9J5 >
1\xx?~gP;@Q,m@2t(Tpex0o"Vu
r@ϓyhza2,X,O	M籘=\(9Őft|ոO`]쐞~PCMæץA~%gdel7q",<98x2Xّ,E{+E~GE![cgcu=<UU	Ju-3mO_xסIXp{8
O7f
qi>6VVvHEg$;hNx13N4xE`wV.DJ籼*E٥o	lCLb[+A`Fy$I*^^<6&6wTGZ 
yI
W^E^SxyS-㊟ (O~Bȯ~N}qPK
   1.\g\  r  %   opencard/core/OpenCardException.classN@- ܴ{1!i$})X]R@}-O$| 8[Cvf|3/ 78@҂CrW*Ѭb<*`H@NxpE
C4A 5ap6K7Axw(.éaU(&U51j'la[rCҘ䄡0X#1~dZۙlB?g[jQŵW(aGI0tf(샒#OYf!<E-Hǂ*M99UP\PAg(DȮ]
Z.IrʗsثgjjE'bΊ8$(>PK
   2.\              opencard/core/terminal/ PK
   1.\
  	  !   opencard/core/terminal/APDU.class}U[wUNnLҤBS@.H@BEۦU$i5`K_G_YkY^ʓO'xy9sLKC}_J*\p+v_KW\zpO/Z3Fհ1| ~!bztfiK7VI_}i!Kͻf?.t^V5*Q;^m2԰fRV_bHs[d	eyHxy{LB
b:jI_mZLY-5./eԪ*V/)a?^n)kZ5<eR36+!~z]3ɇC2
}2-Өe[~ari^gvrx[5;ΰ;x1I"ZWb8![ԈoQT#8l6\[Z<Ba;AqJX+rFU\(VP$J^3
]=ּAPK2ygҠFPd鄧ϛ@Mߜne$'Ct҆!<fioju)/9*{-'5ѽJg8}ҤF+W]f# ;uJ5͢~QOꢟ<J']`}nZ'lJҽpr艟)w(uD
?zB1= 8	#CEz;lC.bw0Jb\B5)<esd**s8/p6_rD+Rϊm),&
 |\tD<X0$$.A8I"6>7nJf7v	g>|N$_@rCTcnJ.*8ǴsƷ"m3Dq"wiQ ߷A}"P JޥOK{c܈ou-s؉L/Vvݡ&=!N1xmc҆~Nğ*:&S6O4C?/~ɤˤ()0-.ӘgF"(<RDD|7ҋn
|@#lMxcNai2&Rh&ȇ:lŃ⺄.a:n]vϨSbǳ.I22z8@wPs|M=}$V%2?<4~DnZ,4ˮ
ڵܡZ,qcj.EVd*XDUZMX?T6l)s|LQr8_PK
   1.\x  {  !   opencard/core/terminal/Slot.classT[S@\TJڂA-^Lg*([k
IR}7|}t݆%ge 1E5
jUԡqEknnmjR钂0CmCw5q6GY7W|ӱÈU֭%eE@l1Ta軦]ΦKa40D=Dr$&\Qqw"0wm)BB`dzkhT,E;:tu@1LO<wmSʧR2D.ReC)Zyܝ
qWqGNYeHL{PnRV?ǐN]tr9CCleu%[%5oL4|Q+.Ҁ͙D0(bT
5)k.7t/3C\2=&muI8P؝:T2pv^a-Ii'+xѢSq
>cD۰[.ӮVҰӪ3Fy:(\ձXFccM	?B[ Y!H`I,D%%n wB;!*QړA&t#.ܥktVfH_쐔R/tIV1;	Ņ%?A3%Z'^}> nVtǘ~i
:v Q''	a<"[ x7̦D.OIPK
   1.\פ8e  N  2   opencard/core/terminal/CardTerminalIOControl.classSKo@6/'ӄ6Omx$ni84ɐ)Vdպr8;wܹ~ ?
1Z)1=xf|3/ [XJ#8WlU'3$[?aʍHiHΰv^r=QױnW:s:k:ݾ_=^޸,VG}_$CҒuA<&jg9G2󪎂}ףt1Y۴JB|wi~jw:u9z>w"_][ؼ`#r4G9z
Xmlr^'rJ,iΘl.L?X7_+]n`lTRVTw^K< LW$tez	9LaGMt!tϤ5qM?NzfDOI1)rR䥘2d`^L"T+8D&Rxq5Lcq,hamC
lڢ[:IL u#DISo{#D"pAK׊^aP^Qm~Fweq;H(;Uf0Q<(C0

߇0C(xy1
gBeePK
   1.\Eu:  q  2   opencard/core/terminal/TerminalInitException.classJAm7,
T܂"F
qlbq^+ns;||AdXlfhS|GjFBOۡT?
^|1d[dfzOWciƭorf[alv뒑_άN8EO*0a@<p-M&Q-mbNfcw31uC|/k_Kcpic75#fEmMޮ`6ء]5QRL21+ZvIEW1(fv{؏-VPK
   1.\?    )   opencard/core/terminal/ResponseAPDU.classS]SW~N6ɆJRi(B
Xh3MkBIKM/o{۟vFi*Fԙ쾟9: )L#MG@IB+&wj㊪/ܶVw7~`H^ۿ(-Wc0&ӻ$nD80fm򮓷8_=howmglFEnubK8Fx~AA"bc^'N|W[Y./40QckwCHRY;yxh_7{[[L	i>m|0jn76E_#Dib6	Jw<}KE
8LUDYyc	ovCwxE\ҏq\̐YyoxWrq~Hx_rZ^$zLim}1;7m+O|Vn4j.5kGVl=C.40+`r17Kr?HYI i0žsJpP,ƉnAC*H鸠t=lEZfa(-7'b"?]	f4Ɣ YWM6&1KJET>كO3Z,|Z| a>T
cX]S<oH(h-J]d}zS=Yd\NEsMR2-BSE3L
ʻdY>::ˣY#Ь|t|eHa=c&UW_PK
   1.\>\     :   opencard/core/terminal/ExtendedVerifiedAPDUInterface.class;o>snv&FԼĢTԢ̼}׊ԼԔԢ̴ P<tZbr*;#@VbY~Nb^RVjr	;# X&휟V_ZꖙT]z '
Ĭ@o2b1pI&. PK
   1.\[f    #   opencard/core/terminal/CardID.classV[lU]ri֪UQ
R@V[PZR/Lv:31/7D
/F_hL4QF-l{n{=wFM XUHtF;B Pr[ A5I,AR-J`z#ד&-Ǵ;zyAYv=+ɺ$_(pS5T.%,X!,19OS6[7@YhWXi$Vzv:R`E&weZ}s-Qg`@"y :	܀nLbnh/;Xvny2&X3C۳WlH"IsB<dc\Lj
XVo@CF$:TK,?p=`~6I܎;c`@yt-2\+4QtQ9&t؜kM$|QYWےs!Ry.dJNlfQ":Ib7e󬌫}
>* (8b\g9ra[Zp	~ӳ><v%F=K(Z`͵Bӊˢ"YHյY7Dv)Tu)邯mU*!d	EbS[E$F>dUG~,U	OMi
2"5
*@F5(W,%߬Xn]7,`1@Q)u-;!C.X2XRtFls݉b.$88]UH*zMs>orԴӄ'Jglciޜ-)-b	u;>yǑ^m
c 
<-WP2zz Fgz棦gOrv6J-	|;Qpє{MN`y~DoZ"}3}N7Q.2֙yʛn9괹s)9x$ͳ)hi6>z ܤguj8z;C{T
w[{8GGN`r<	l|KL60$P8	</e>a|gZsZ(g#x hyA@$.~ M0.X@ j!?	C,r@0(P_BsmgpnKa.p>Gcb$]v0Bc9v
eM֛ʵ+tR8)Iz95+Mi:
z\Ky?AY.p*$b2j2dU@d6lTVR^RݾpM:vTgA;匕~:G,]?5BG;BGSWzPPkME/	({Z?F5֋,ݢ7'p[:;'/};Uf~`~d%Jׯ|6~w︛L5$=e2 %:YLU5c9o/%PhtXcۥ^@>56/&ٌЀZ8X:J0®!aLsPK
   1.\Ef    8   opencard/core/terminal/InvalidSlotChannelException.classKK@Ӧŀ
>%*(-t+(~-O~ ?8F_4巿ݼ= ê62
(Q_@7b&2)-BvV>HJAW6jxJ+
u[IthHL8G?ئ~(n뼖u$aWZe!Q ++SgVrO#;J.LpZ}3eZiuLS/2)v8Bu z$i^އpVBG#(e-Vk
'aqHec!m^Hj>]v.SٙdXb^yPK
   1.\}]uG	  U  1   opencard/core/terminal/CardTerminalRegistry.classX{W~&YrBe\BRRrk6Cd̦wj[ZB/hʥ
 hjk_||=g&aΙ93g^p3-CQ
1%(hF\ڰi6idrF6©^8}@ nuL{̴vLI%GY*cF2k)L3{@O*%w36rY3(nQ*Yi9vj:Ii0Ѡe'PFG-Оb3m3*+;
E:>D Y9
KIu:Z10К5G(D'З2,װBG%@LJB54hJ%WJ<?:`fӅf
	1&ji+s8v:nefu{Ըe7X[A2FLN)z
t܊d'@װ]gW*@W!Cf[d1's)'hE@I:k妘<69Ők'dU#m+щ.yW^!T~K'Nkl2F,dI58(wdS~)Aǌl'#SdSg`1YJyG+a=uj`UQ*0!wJdξJ2"}IEh@S"-pekq7u=Img':S;Ise)i^$pLWb{E!;%;
O(>sr´m
ei^q;R_S>8Շ/xT𨘴't|_efVˮZF/ޒ5yT$#(#d-`jcX,Lʏ5^T复lag?s2aݜSfHggӸ3ZDNcTṉ=V;d[w{q%ZIM9	4@X0rG^Ht(n)bfN6sJUTM_[z)-Ǘ2O]oNl2ɻOuh1]aJb^d-}<E]O񁼷I1ɖ.k{gF̾͹*91/"J}&s\>VNm	LmZ%-4!k)/x_#frcְm^Ay&StȚβΏ&t{E\~UΌkxi˗;䉀ZDb}j_%07x};uӞ#Ҫ,(d
,(j68O
%<s\ 'jacD9Vq+Ou>Ʀǔ7xM~܃y7ϓ7.y-XՏ(S5ݧP~?ievK{|
6,Roq,<Q(]jvgꗒOrq\" q,ix+c0|5FCǷC!D,w=Z>AC_D2	
ߧ/?P	~DiOjUˡ)u,fG1z8Y|"EuE5~^
Ia7O

ћb5q:cy,MDfݳ
vF#1q7WĺkK5p=G SsXNZ 6N:s<x/pD[9"{UdY?pcӑ 9JoP[_?[rhCZZ^F?-V_tGvw=& zDE	oQL̿;N6]l|#Dºހހ8	ׇH8ck:34F!/YtYz$b	V?H⿌*:\FP ǩ%	jgjEUEy$zҪdDU"ʚdMaUp㾝4ſoPPfLU(p{ɻSd/6x
E
.%4j
[ipOY8یhp@l?O]gY^V"+_Mkk2~~".ԿS?OfX1K#YV%)bzUB`OU<UTFN;cؚ.[Q.\E6QRM#FWUPK
   1.\:r      %   opencard/core/terminal/Observer.classu=
@F
pK 
Eu$aʚx8]4eǼ?z8WҞ2ER6B0C
-+ogYҙwl%^'#aS+q3Z˓8&ޔV*LWs_
	\q!|y#~PK
   2.\R_  ^  5   opencard/core/terminal/TerminalTimeoutException.classJ@iZm)
"HK2M8NJʍ.| J<hnf9w~y{ypu	$HH#ðrxз?V(TܳT#CT*1[>Ǖku@*Q!a w@_KE	XGVfH5`(AO]RjlHTx#G:j0$#WS`}{-"?SdF?q!Ym44mQ89:)ҫPyo<!tGO$?#,P5c% L0W-[8O"9@HPK
   2.\Cib  %  4   opencard/core/terminal/CardNotPresentException.classRJ1=׎хAks1ō(Ehtt[~%&
T^Nι&o/ αR6<&>&nK*.{"b{KqrqDHWD$;sCuܺ"x\^iZp~p_Iz+i#G(O!V{e%_D6쵸lV+~ɤ0hΦGHC:!$pYl}8'PP:B%m0'\6 ̚ϼIzJ=ب`QGKXNx`Uh
	6J2]w+p'- ;	PK
   1.\	ݸ  e  (   opencard/core/terminal/CommandAPDU.classKo@a4%IJR	wT"EgipIk*~$P$ ~m Z̽=3_ rț((R
`@:r'Σ
=E[N+J&,ekUQ;H
v=-RUPX^zJ>Iծ?t'=7tnwoXTu'GCyy
MX~pɣ8Xy%Ǉ1]ءZMJHz!8ʧp㷢?̌g>/77f7_p\[,߄6.2s$\%LC+<Wӝvsce'Rwia{	u5S팪ksqdRO2)oRV5xVqeYhWXXN՛_a~D` KPK
   1.\;tH    '   opencard/core/terminal/CHVControl.classRKo@6q&u$
%)-q(%
Rpv'qؖW ƕ#8QٍIQegvfί?~x%H2RH3N3]ugvz'0[0$n+f
aLj?V[ϻ-	|&cs>+(rye:޹";%OL޸~c}暌*26;$55\gZ^{]*G6eԹJ{0j\ȿT7RŶScg-]Co}T5a]3}1F"!5/Ȑ;rO}|f;/ECYNJ3IYϓ(ҠH!b]WhhATOSV)Bd!ʃ%*(Ta-dh hT:SN. 2LL;Dƽ[nXG}rh9;-wۑC"Go|H'ԩH3q'y.\U.+Wc+c5܍+7ĩPK
   1.\  p'  )   opencard/core/terminal/CardTerminal.classY	|uٕvY
:$ıD@1 [PHFbahZl8!NRrM$ 18HzıӸ9z$MkS;oFxgF_g l~4<pC>Hp"	FGz1BIBp4Np{&O#MLk
{PG!ձ1#
ƇBє4h0K7t8ߙɶYXD$LbXBX +m(%K	%dg84F+ƺ2,Jk:3w5:"`#sXE!EG5V"#.tHS"2HSZkoձ5Q-FI']"&Y@evRPAFQ8r84>"
4Xw48jiqب'YMfYF"!ߢc+ٟF5R5GGx0E=8noc%j\>CGZ8ʑá&YamMg͵ٗI£c&B%`x 
Lg 	&큑X2&:=@l8#S:A[tUFd,
щ.Nqkf̕ڙK^l{u3-xȋͲOǽQ^%ߪc xD02nK
tdZ8s16-B=Gvwlx q$zpqaH	{Ɠ=íC!cLL*HbH0>b2aqGm-:X6`P9>/b:N)Fdf0ZFБ$}
jB1','{ކ&7: 
mmf#ÜB_.$pj#CCH~]I<D(itdDAxD:N=\Ϧs'S(/GŜD{~v9OJRf
9d:"烄ZH_#1ƐgaIؚк~a~pq'4<$T?ۜ\{`2|JRӄ[QT?e~#^s{+'W]&	\:~s"ō؄1*e_>mXHs@.踈pdvAΝ%RZ=>zȈ+:U	^SvuMG  VrY|4Pޝ8gc
tͳbc<̃Xhşk:MOt|3Spph4f&kxΣϋopdl	^z|k,<I~AۄЌȿ2X3?\xć|Gw>SS͜,_(S zU6q@ǫRQIKcȋ#cGjY6n).nxDI;e #{}exx8l` x7pWrD.9%t.I0+͞~ٓu!-M|xoz79lQ9
)9JL竝	&èH<Wp44g<k)(<jaZј9ಏ84<<uso
PWf':\ayaF:ɰNqY|[љ/%]1Ϟ*=-\̹&̱[`rBR;8I>9av+lp<vkAJ9\_>.6YN	MO~rIBB<rRhD+R0oΕѼw,	)~i%+z$
&'S/
`l-
k
sVGUUM,9sNpV 2kmEOyx<d
K8ZVkǺP(Z|Jm'j Jy*5,QgMfHp0Ǝ{6g,َ3Y9/4PC@zg烁X<䥻|4$jsNUp"]ܙ3]:Gˆ@-o( {U/Мl}@&1U|v xTh&poЈ$4 r)R,bfu)_kGyW?]'7_;.K׹.a?
+.V\DU}CUj5_ںKPx	.4:w%2F086܇܏]x wA(z@C҅ԝh;}hKiuOxӊnҘܳX
H2ݽSvYW?;?Rߦ~WoĮIܵͷ=m/lWO0gџe{EvЄ'8>\T*,1AY!/dȅ*CHe<).O;g2u|_fCVaS:!*'1/`R^'?'uHTHYLm1ZP-VUQ+)e\5V𳈤QGM?q֦FtZ*sOVe6d*Z6e%VaՂ{9KۆIDꯟ﮿xI=XLUjg|K
ʷC2*W
W[i"jA7A_*J8EEJYׄ;F,WRE$3YrjV8fA]%o-]B	>q~uYBGXAwf
\Y5x0S-sj0hu@
Jp 4[੫IZFѐCﱔ*RQ>dWJ~{bU<luQ F<u5$|$!uo`9!~(c܌>tm
gxe|TQ5NP5yXdUNQFtcjntO BN&zwc7F/Q>$mSv];EU\4L=tUL	R/[&yp歜67ؤ\
햏|*H7l >Gۜ6
j9.*>~
lgowyL7jux<>J"VғXEPWPWӭl3Md.UVNWl"Zmi͌ègYcqf$,mi"H6)Y
VulE
Xat&1)eC]-եkKT/[D52dzeUl*eS#"۬)kLYZ|Gn!K݉\#U?bUݞ)<ǓvseIǲoKKe.mRO*5?Cs*6wix_1D7X PT7Ͳ<mXVTHɜBdne|YHBzji
(Q5Z~QI,8M-vZ 
N\SčWi>+RVѽԯ(m
lCْˬƫ	~Yyp?VQ:;xh6͜i[d]B,AMzZ8S)fvxhމZu4_`lZ3[^)<moer9S,{kZܳj8Mi;k\?g
TF-(ӾPQD<Ǘsd̋$,[-OݍOGa%1[nU)x+
ϟQּVAx._-m=Ǣ\`ņ}+'!Ѿ"(^B=4h/c
6jvqF
77i#mRnUlṳ<"?mj6dNY<>?v#n[d	mv]Kvs 
.B
h+5sIyKT
 U$WPuAEgCNw ˣLKQwNM{x{EPK
   1.\;%    (   opencard/core/terminal/SlotChannel.classVY[W~OLJ(
[ъ"HQP!Cgu^kڽi/zVetoɐ }ڛə{2߷WBb0,UN*ᄒCɎx2mhR	~ 3ZRUXX
-ҌxRI{z}DI&_9qPT`XuIp[Ơ(1M))
pX
P)@?JbTӹ8zWav2a9MꉽJ2p[Q+c-5-Nh+Q'aըgX52DԒ1~vϨ)Tkc!ד&a-$4fƤP&Ra8٬a
I!b1SQ&lf`6tT[rd`+C9:y;CfԶ!h[<}z|nqfµ^NfAìxj><k+эᰙ2VcX|TMv<ȗxr8ZK'#n*M7'
*ۛ2 99jr*`ze곔:"p!2H8P妶;=42p7zŰqY8><D,MA J:+D&МOi[ M ?_YbߏQ1$%ʝNEMK;÷'<CkAs&ye(jc|~$Ak몒*F7R#qa\2 a15)9cS)Ug8/˼G_F__D2nsZSq22qi;in#;ߡJO'LǴh܌dRt̊? $
K\~Fʩa1oR1VWci_n
ʙyLāx1V']ABBԤ*w^vx7lk.{:};j¾{jq.GD?JX?BXZB)V}.zb]&օ }8{h]bB	&PZ>PnK
G跎H Gq;JF9	vE
0"dAD
O"OG<qZ^MM*L+*]G͕L9,ef8Ӷ.%5Y~kPeYeȕx8C8E"u3'*M^XEf[l6D͜W^JSQ< BdlƣxhADI*$)# ,=s{m,=f@~;:'ґ?/,.
7QxE~xyّ'َy'_>ʛR
7/:un![v
1&
pQoKl^jI;˵"̲Ilʧʮ5~Hew'Gfx4x5/U|`aK95ׂm6
(	y'q?;$0'x3eWEbMv:ob?!;M?y(e{3O;2lDicxKp@sh0H6<sAf㨪F;LmCF<ܡz$$2C.
O5<YYy8=ÇԩS+cUyR-w^)P|_#v_*~?PK
   2.\nw
    '   opencard/core/terminal/CHVEncoder.classeN@gC#@R
*Ā48"']t\x8
BSKtkVQ"Rė*)J~6$VQ&tCsP:u4'C.ǝ+v6B+4	f"ۨ˭<B3$4B.Ur4
rЎ]	
 3r1pTEoc/D_%lTQ)oUn{|2ΰ
Ss̭>-pD8PK
   2.\o    2   opencard/core/terminal/ScriptFailedException.classTn@=q^RJ^Pr< ApRΒu	| -ZhwgfϜo A	9
L0c;1+*[*hũ6OQ^&^}(1ѐՆHT0_qλva+%&1İ CAlQve$l%]/ Z8tE<0SOt]M-7B=_ϐb%Bhq#0TNlW{"Z>YMrG3cAmyTQg0:BTCѵPjɽ+&꽨0LJ/ڒx*Vf91
w>-tLIWyE<Ӕrg/EkGwzs[([^a{[+NJaOjaqeFZ:Z>cXbkpP48&}.9zidσN撞g`'0/Mc6}O	4eh] l`	㸋dR\,ȊlQBi@v}S᏿ȋaBhfW?8q+A`V;lP"ɦ;OPK
   1.\W=  '  2   opencard/core/terminal/CardTerminalIOBlender.classQMO1}?ovѰAc `IiIy0&(,n^y3L_?? \C
*J(34y8.D0oC&.vVU*åY	s;ccEGqîz&,+MЉ+`L0#c
;SEfdb&I'y7_E^f:U[~9Js{#Xe6ϦL朓&MQS5{7+*/
Y#.pOA臍}4MueZ ݇o|PK
   1.\69  @  0   opencard/core/terminal/CardTerminalFactory.classQN@}k*(1ȁ !!ȺnHIݒb<~qjj	y3f@u{B*#b-#sxt
֠ǅF</܉9ws)C%paLG;uG7a`}R'VʌyEVL4P\FjEhɍ:K:#xr&FZ ѡEUȅ	ɯSjnRlTQUh6T`5yŉ$~B@ܦ\;PGBv!>">E,ᘘb
ĕqF9.\21/PK
   1.\vkx    2   opencard/core/terminal/CardTerminalException.classTOP~p)
Vƚ	3H,jܜFMY+D^{|D$??xmYȒ{=;s~CrH )!%#Ê;zzntk|4oCcdbY	9 3TV7csNxAM`XoMQZts2gHP,G>0=+(I!&/jl-6iYXO1)\t
0c4
ES#cxA=΄VKh/
tY`If2goW䔙q<+5F2CϴmBej\-	&觓y{$+
gd)N i~tsmd sE*n!3A
k~9fj#<f)1UBk!ϡkUQx`/j Cݡ.YNxLU'j[߱x7F&7DVkXDFjHν{X'EvQ&Q'(Ɣd%|)Q"%JD((P~A7H_"G:zDzxO"kPK
   2.\C    8   opencard/core/terminal/CommunicationErrorException.classn@i8	@rJzHzSR)RMBmUYAWx(Čm"dHUjKf?}XAɅ@N4ӡ#X۩	Upjz_|=M*Lh}BiXPU[O{ؚ).Ax9`y1sE8-»rAs./E<4iu&4&o#mG(Lk*+k'9!<]Zr.N 5Q3̓PV;C!_\aͭ4qJ{R)6q?<e	$N
x]8u7pwr>+E[l'p|2UNn.>Jng{'A07ItmVcG܆{ܷ|kr;n.՜+]88StMp>t*R_PK
   1.\   M  2   opencard/core/terminal/VerifiedAPDUInterface.classJ1kG@AEW2U,cVS2ɐs۸Pbfoaٝ/ps^^ ##컚y}4b^4G뱍x&A
#8
m(\UI	ϻg&ƅNZfNgwf8K.mD?*(j>W$G\{V2pIx
{'0a.ړjG<^+_6PK
   1.\솺      %   opencard/core/terminal/Pollable.classuA
@EjhUnYz ѭ~:i;e\x %<_9
a+.	m}`]s8qz3c0,hgʣ^gۚW@h'{BYܗg.aBFYľ`y;&YMA$VbT7PK
   2.\              opencard/core/service/ PK
   1.\)ы      %   opencard/core/service/CHVDialog.class;o>sNv&FԼĢTԢT}g0ĜtvFĲDļt}F"FQ
OM|pIQf^5#Wp~iQr[fN*#<=R6FFf`b1I& PK
   2.\<+  )  /   opencard/core/service/CardServiceRegistry.classZ	xTuyc0e
-+ؒLl`$D0$
f7lx&zSZބ1؁4M⦛:N&m.q8M{3Vs9{~ ʃ>!@Bx{5`fmVx#L_ՀWHH&RkVĻwmLDlD"1}0_b&Iw[P0&sªIZHȪYfg ob=㉈jbuJWvpka#u2Lh>'Ŭq:0Ä3yhJJ㉎dm5z΋YQ"ّuc8p.0lmMuPC7	2-jL7BC"0zє] {UunZB/WD`zWp#v'gZdfiu.c1jel#8/`iۤ68;?D-#ö]X0ZLH;PNEE/*E1qƋ/.F45IPKT -,,o4KĥX`:hڰUp\F3A`Z
:]ֈ&kL:y(	ALv:7)&C
b\6AP>1WHe`fxuHW0k(S	bbziTw3mE]$E*`u\-A>*&"D!DڽeWJ1g#F&UD;Y]#BC4[JƣG="&acA'n:%H.A(gkq\3duۑx'QtV՟IlC[U$]ZzÚ
֭]rJA`<Ne:\:)L&eVfL/m!%[JQLܬBA$/ae+/*JPlЂL܎;.Z\7;uNJ#fnh`s}b$,+k0p/s5q{U<g}xCxɡgf9BdexLy?aYr{8Q$2Ws`vGIفV樚O%Bgg#M^UaN
><o&y\L0WC̶:TeË&4/0۬}xYb[5O=(w.]RE7&1ھ:G-/d^ެ@bf%	FZ._Tc@̲;P'
dU@͉2&0qHu78J:=;eT*wqGMwFkJfJPҿkO=HRѬMYIO=bV8\܄2FV7`?U('L1&I`Xy$;H>_i$'BWEr\հҡcW~lL?7\G<Jc~n4XqIU;j>8%-&[&%TL
):>faߵXCz0|ⴒPG4jRuњTVv3uo7d+&fvN\\OX%"jCɝ[۝OWRUVg%C 	SFbT舩S;LP;La2ze@|JEY*S
)3eLu6z6NDoBc;BTTR~2uuR1Y3[WE!],;#S֞>r	2_7]Fș-@UJ?ht&;%|掆I-&er[_&$)C0 (E]Zs\QiiAsJl)b״s e%wV|1㷲eX6r	=?s1$Y=jν߫6)7GL5f:^;S$a];:1]e!:$1kGV3
qBI#
'ÔEOnNbHXQ+nkƑ&VZ_}΅i`gڅz-mv7Yvg<->J6B3Fb=+؛gqWoOu=m$F#ͣxw4GlU>D\ny Mc|MZ(z"esa-x" _IÓQthH*&iR]knJ݉x8xGfGO0oQ,x"e9cDz"=V5 Uc8SpL^`fHWwbrw+[Ksd3J	ہV vDNż[PÜJprWjEg"nOQ.E`H	gA}p"
ǭd@CCVGi4@㕻kMC
^LuwBA&Ճ61Ql%
W1~Ib͖=@fq6S}3O"~5]iO9F>!aGkq:ӒP2v jibR
݂3ql(se+,IJ
nY:x sūU@u87|-Q}#:xDȹ]KJSNy'd_w6\2b4U9Rُ%QTu˴.QV7UVcR (-'PfW_Z_%PhAO#W~9TG<؉I?.eH}=ff>n@vrA3n;wwӼ^܊i*hQ
RO69CΤkp̗2|4^V3xhF1AO]V_\=m]TqM9sU^B[k(&C3f6=H=/(C?/T;r%!s{#/w7Ax
h'ȢGZ;
,7:e\WH:_'^6~M[#|.e7qT{i=M3B*uH!\\[R÷gg:ެ8Ik(6p!h6h11=)jL|'P,zBľL{¼2KezzTpM/ve>oj#շfa(|x^~"Tv}]4O2mãwfHz1kW\\=Amcj
<C4n+S6Mnf
4w8c:$\$nw.K= ><-&D)pHJqD&=e*~,eXJuqVBt:ή{^FFg.8sǙFE*IsL@d(^ qh
bEbrw}c&E,n	Q7/qK%JE5 F|kBp_XFlA 4Ge5RmqZV;
KR٣$zAy/WVaQTlkRkc,yk}K
܊*I׏?*ssY^}(++x^ES?LcקBTYҰ؋Ӂ^*/a_Rل@@걀Ne\-*_DXVZiw:<"W1Y@i>ـef#W
?S	gҎ⑆ Ia'dw=[-
:rj*~)Qf'DɅ#]<X@kL
F/.ffExOCp	V!4P.յ8%?5,yT	%lJUJu ?RgG1_=lGNIT	)GQYU~4/2}ob_L[YwȝPEr7BA܏+tCCYe+2|Y͂Y3eiee=_?*_̠l!>ݦ?;><ҿ3g\e7tgP,ϢTgzAkphzJ<yL289TPЉ:,y)ќ8i4Cx<TU엂RؘsMUnW.rk*K/~1Keg{O~X/S2ս) M,2VX
W=nn<y'0}ʗ2},u)ymxɯ>M kRmN(clcXz6=FczأǝzN7F=ެ[GN=M@+D} PK
   1.\J?&    ?   opencard/core/service/CardServiceOperationFailedException.classN@BQŻ7=hL
95z})d)D3mF3;gf?^ \F
uV
4lHeFKe:R*A>Gj,h^T#`2h)-k&2 7:ahc[W2
&R'jg3%uV2rPgLBi4?ꥀѣ˘?hDjl)Cp(

gR\^agR)Eb"Z`DJ6
kRRU8G0?(~PK
   1.\:@%  
  5   opencard/core/service/CardServiceUsageException.classN@BQţ7=x =5D{_ʦ[-D3-1=:J(p*Oʄμ0K]PycLni2P-2Pʝn-I7&&&tޟ>8d6vO9uZ~y d:JO
Սf_Ag|9σW	'LAʂrxɏw(s8$إQe6)Y[흮~'Iy
Ն>ZA~PK
   1.\VB'    >   opencard/core/service/CardServiceImplementationException.classMK0Ɵlfu:wOnA|PTzϲP#mZn<
<Pb z-O~~ 6,-	4Q5Xs{S=	$h_)	As8

hP:BԋPBFQhcrC<Რ凝5M眠Ɍ':琉!U*ENppL`'<iTZA7H{aO:Y9
uݝLtn+zKJ|֕SÎЩ4ڶ{p%RS_oPK
   1.\  8  %   opencard/core/service/SmartCard.class[	xT~NK as[h*HD&7@2f&lu.ZQkۢUVbtomkR=ޙL!Ǉ{sw-sKu>`q	CpJц`$jWPЮXƫڋLdȶ`#1%P7UTb1Ɏ/7lA^aQmWu^2aY\^=(eE5x(1#\MZPÔZbxXV/^~ZUͼ%vjmx)
z2-npUxS85wEh<#1:6Z/q*~v]cbq/a醍v0.Ȟ
g2
s@Zc 'l[쨠6WCW8+I&c
C
cx܎=f1B!bk{ަBa}v"J,X6h T9w{<R17١DE.VD(%4c`P%B
+ڞgX3iӖHSW6UZglJpnq\&0Znw>N7s1DX@='d5ڛTN	z/<5bANC--&PU.P`[nZJ]Db61]`.#zV?}0J%T}$-Q2dGI4,\ݍnzfG-@ؚD0klM1Rl`LoB%*7 m`a!P'Mp{ՐT5hao^^@l	]TZ-adnCOumb`bEbhx7ckއ`Nz8kgwX7[-\+zQ.#O6}OWYZACn,P`N(\k:\/[#[%Z/nħLdf|ZPԯ3bv\1]'4=FM.wŔa?c᳸6LaAX+Rq!ZdC;4%sȼFwb;UCgTӪʋ[_ ,5FuVҔ~@Uj,|ٍ5AWva@vͯY؅	fhCH|a=
^<QرJQcW<E8D=jQe'-t`*Fըd逰qIODp$oTz8MitF;ۃgP[`C|)27Ȁ9<'W8+i7Daj[8xw'XxYY8vE\g#և#Dm\-ʩʡ&^SiCV/`T}^g9D瘉Ժr@Y;Ë*?s&6	nZOZv[.W]FEY9!o\O!U-AD/㈏[U>xT'ƻ&\o'@B@a/D8Uug#3wPU@LP)ߪnhU,S#<.P
I[ fXbHF/fr{,n:ZE񺽙++z
dY
DE˜x0Oqk+%	,5GWqpeO(+Q/.7۱xUھ?'3 P\FRY56]bgHAAw\s(騌$_)7 OԴyȣ2SωM(/$ce%SeQ-B=1?CuO,)ꅡ؊8=d3@dG.oN?O^aɩ2X\}0ktKfjAk[|zw%TUb5D	N,T[.(%jl Vm9r.S)WYHN*,ΑKFsۮ$e)YR#糆L
՞$nkP+KLd2wڐ:nZT,Ylv1J\5J6BKZAA)'*PH9VfȒzXznKKJ`I_bɥݗl_iiQu1i*uko'ot[";ꔎ=Ҙ.˕0b
%JR`a)SkʮA(sK&	[QUz-KG[,H,ٹ5xYp^:RjeX-L\
]/l 1sPkBmlW柴P>aeUB0&1gx԰ݟM}hoCfu!r%ȵ筁+>ohŇʽ7>*'r|JMO+!VKtN\g%'Yr|UZԎ)Z8J}%w
["O[vr%}$`.bnaeA<T_`-|ϥX2ב8һ4-}4I_|EҺ	g*Qı@:.8ٻ&3#
d!]޺TЧQ@4~/8 $7-	=?i3VX7fƛC.a$\q}읨	*|Gϔ;mV(1UX8a~+\`
z6:PzLzvMgAΑx~OvJH<0+d٫!y$).Tl%^{Uy2J{iIjW椽Ͼ	ܥ,^07Vhk΁;x	nB@>uVx+9[iQP*F?t~SaV7)Fk%?ʌo<HHG5Q%_,lou	SoTX@Jz~ko-
Ҁ8"8q$L@(?Kx/KYXSc>[=lSއDlZ#	o[S|U**U[*\-Z7u/bzN*lq;{WDڣtZHlnRr9yHh[bǛ#
!ن5<Fix-4	&wY(Qƚ)=9wKlrm$-͙f龮WDue
_1
rCԧ0eUnՌ_JAnv<L0b]g4[Tֲ-W
y$o(b̺ć!R߻2%Kt@R1N_{?S61QOa9jIuy
Vn0u[XL.eG&zuҒ#4(ު4*;f,Q;rLY31|ͯ!_Y
O}/DLT_阡%]թc#r&ma?}O:9mS/ԯN c:`C6-mTk<VqG 8&jqW}],ObTu).>5pꓘ3KR9S8@qS1kc)
pzэS11	7Д܄yYkwTD6'ehxW}RЁ`Ԯò[q-dͳ5͖PZ=#{IRڄdgb.:RG
_n
Κgibm	u`uj,Ze'0k|Æ|1%ONVW:w ěI[\%킷2L`XTwgŕ4?[Ε=0͘}lC'b<AW=ItRfNp9:Y<h`
}Wئ YQi"8LO 	^d1dK'esDYɱ sɃӔc
꘎?ܮ
؁t'|Ǔ,wp/qG>/s0LΔy&q-mcbWž[ڒ<;[RҁwN=ʺ28n!<ЁB{e&^=IӮ,|{:DzݾNinJY|~9}.c+ڮs]SiuSoAמ0Q&d1sw̛J6G%Ϩb-B_@E#T\w7p+{x36Qg~g=z3%|zF<-)ȧrO7[,yAw˷yX&^|"`&r>H7i\zfɥ1j4aq>#'2/2d' xuG*d('K:cROwxG旮o1aT"S|b8|2
e4H>Jd,e<O^wםrD^֫pVw=z+=:*'Dr':Tjzáj!ߝ66BRSa4& ".RR9REr*jIK4\*sI8[,fpLZS@d~/b٘4XF|/IH1MPZ]ȫUDف:N:<$xh̡s _&9ȃaAcR3a,aW
vShǒ4^JM
e+
jxT\d^wWj;u*9NJ8qʭw?f*H1\lFFT&̓V/a\,1tKʏ^g,L϶Xf?ru[>GU\I!xsM>v|A/TawYg)G{JXWжg5@r. 	*]SXdt)33K\C~_庵]Y\N)Zӯ
bC%rEwLKJ;dp]a'NcGc!̓=VGZ;ZoG즧W5[w }D2Sx'*:dy̆QYq)6)h.3PCt%Cgf6$^֔]'~XQdl]QܟZ!I+s`}Rp$4?)vY
]G*V;TE+i.&!a|wFzeSDWP/"y
L:6Qju䧸& fݱh6`M9,kr͡î7&7=Wjhs_=){RJ҇.t;;zl瘪<Iƚ'授bcf5ƹ0SY+GjqZF)ܭQ+ew5|o1K=RٰWyUhif(?byș%.ˍ(.qhN:d-K,sd7>PN~uzq^)|ArypLFf٨$AU4rq1[+QO/WU%`v)[YRr0G}?`UI1{CRH4]ܬ
І% C
/t?4w\aBՖtBZZFn݅]S*~0c;sɪe~ّIsrs.O:R`J2Xͮ;N&ac	%6J1̘1i`"cfmTa1sp1E<1ah,&c!F
.7*Kqq}+X/m~MOC3|?=tJ
RR0˿Ti#!nYT0ԫ%[urY~hZ03zGf4b!ZlV3"flFeƒj5tGSav1LfܒBٚ9Ѝk]9_sD)׹v@_SL¿Q%͊F-L#rac~L6e(Mu"2aM0}AR~

|Y\ߝDn{GŌ,AftȭO,.35d4\>b}{>00u2>\Ax	C#)KN2L~$5ֻD-ҔHq9 ^TK'$2R%n2Ei(CbXCէ#u1:N_'__uNBXA̨@PK
   1.\z~5  !  0   opencard/core/service/CardServiceScheduler.classY	|u?],áS
!F%9ew$-v;I:4W9v긶	)iqb+NҤGz&M]\'NԵMj2?ߛko\2?
TZQіd4۲Q'lHʆƽ8AaN*[bӒu21;]+NF`g]h*$:9D*l"YKզ&ژɂqJ{2H	٘	M`hU=ރ=	&3'Soaecj71"'ژ@"{W48Pjd'/R_,XOL`6O-,L1%-ۣپ\H	b	*\A'`Zg#F6ZTg+חqqJN{{5\t%i=iڂX,7K\&%䠳G4;KOm661=M%r}\esT.[;Yx܊,lԯ Au92H=c7۱6!Xpe:9Z	64)T[mtbN.v`ՓaaYNMwKQ{p6aC㬄I9h.K}KFXYXJ:hN#xD6Ybں$¯VwBGٖ|q1g H8,̓O8D?.U8nk 0H:Fbb0Lg ID l$h::Y)'
A`r3mc@:ތ:M,
#erN`Xm4HΨ{md
&\aE49xO%NXa5{ҙXEƯH*Ik^B%x`v3t.k[z6>Ǫc
eúSj]que`iBleQǉp'D9/)Mr\\8C;2NaSZ0Ba߱MͿuhY	2ħ-<d#-cc2Bgm|F<θ}KDgKp`OѰ915ͥ ?qGxLPև/xO0jD)
2s)U
3HXp>I!VORvy
ߟDvi%bӥ\}6Z=_/% _Jz9U:( <N(T.o2Vq@ͫu!hSW st:(ΔRhp"I-a,sk+Yjh,|:zp`
ߙWu,Cfu A'
oN/]`<M*>-_sMOS=G7{C`Z6~<ǝbkb/lA7%	ƫ?NuShIb$ۓl#Y:4aoq2ԫljepY<mO	˓:)lX47I賷YK[1í_2ύlf(t"rD؎'0X(o&Cȶ&#^G5QPTpgҍ#'d<B>f4iq`Xv^cX;3^)Y2W0'-H3ˤOPGJGBF(coi'gj伶tYJ,UdF;76oADCK(MRV)ibF1\ڞؿGK9ĬFߪ_3; nF↭'rMcgHBZp70:߄,X'ؕpBsl\xlNslGсN/N[Qn6d*a"u<}/OہG2MœNvQg:}lpm|7AcHCן <09- lRtEK@ngږ
Qɶ%ϒȻu8ΰ:dhn)#!uMƴi'k1˒þpˑr w-v~
1K<Ods>u>۟_
sj@C̛ͽŜBͷ~=U~oEH<	LU^Lǰ6]Œy"r	Wh((ߢ<U<;p1UNTTx'U:qx;&;i`sCSX`-.i{pGpz^d>/Jr'URm\sB-|U	槽R6=1*?mCpP4/`8p(jɻi4~FZ%@Zq\3%hVBGSd<׮ާF>Usm7A,Ua*W2b&",s<Z9
sϫb3E{{ODr&D/u%T]B*I3C^.d%e¸9gHz)&:<W3z;I̐Wy8I9I	2BF&kiz.PVCr^HJx*~sICҾ@~
	᧬Y+?Q$^f{KǫMseL>*d)q)0b;U	|e*}1!3-mFe4*>'_O|$|S@wYYL%
&N-cIhZ,:2[WM
lUSBZ1;kqKc7UEX2MMs۝UiVuvi>2Zg'WGdkJk.J')Fl3ĭMeV(VL5MXu/]n͛p~c\]6 Vc̐:<uLfji}2*ըyy#^j;&Œyo0_<_Έ+5"ꛂe-FS
:,v'ITt0*B.Q|3£ܚ^8lq0]zTzOzsAz+=KMˡg7:sEIg$taw :%n`$aeJ,We@iԟ^((>P, 2r%`c,%KQuL*L1V8wfy?ga7Av}alkHӬކgg\}wDy?#pQW"Y*
Чܪ&Cq*9;9f*&<á6t
6گ1Y>Y%>?y3l e47
u!FQCQ~=8̮u'
)5uCU24}g\Ù\lr
V}*m!WT Ƹ)<0#C}՟ __jd]҂JVVR$k=ַyjCSn-n
_'χCn{u[}f෉BOe`ȗSFX-3G5
w#	1ӘO"]e?_^ٜ$wswKE7*~stTT̔1O~N	7/I^fiβ<tBTT!QQ3jT/`"ToCKxXA0lB^4x|)6sj-i;mIK}PK
   2.\  $  $   opencard/core/service/CHVUtils.classU]LU.̲`--B݅#]Y]JnvSu.1E&1&	Bc5Wwcc.Ԗ@s=;|ܻ>~, PBPZ-cшۆ3MP;d9fDNEPhn;ނv<9>t6Abˍ89H4$PFxTѰ'ν BeW hs*5SU
~ɰH80zO	5UaȒrIf6IM@MDtt0Z091c%$JDd;#;D^u>Sɦ˴℆H,NJ$:ЃCn:SJ$*z5S#i˙~XJ9H
VJ3ΜKY
T&T4 C+̈́P*
ue$tr5gڟNȽEr.	K΂iJ[?_Z^֘IӔvMÞ6<K+JE-r{Rju\r0Gvvșȫ3[n`T	f$[I}ؼmA5aFY(Cpk)`-y&$!%Ht+3
\\4qEUy1t>	j9<._Qp]1,NδΗ
;0cvw094l;c	>ucܳ޳(abE;ЋB
AK96ieWI*MBс!zt_|;L8֚`?ǯӷW
jeC:$&Y3jI{jS:ރˇ|'\h/[_g]F*mn(0s`BS
iba*:r<|X	5	+	ׄzAP/#7
ȐaE}-1rT>)rROkhh+oA~/b!=6=Z3G=Hw|Q"Q3@$0q<R[D
L¤B!L30oq?t	4cU>{c
.~ZrwlFCLP$Fq?N$Łhc|P?bup"[?Jt"$MJ?PK
   1.\`	    '   opencard/core/service/CardRequest.classWkpWdK-*vb%mYvmҸNJC
vRlWn
嵼J+*R- -<#@ q'3o]=,f`<{=|}x5~)hO늺&I\\-iЭ3htTA3i5Hy-QzZK$2=V
į̹z6)d5(D74H
#to=[}
nmd_'j X&IR>
PC5J;ࢳ2@A+ꪖgVp;Xio	Fgk&bchX7-#VtY[S7u38N]?Q^]W,㸃Bq7u$ی hWeQye]#Νf&X{$SJޖ{%ŎrIYVw@lt>w#TpY3ϚL]JbVʛn9h4Uu#6/-33xoQ0!eh_і0U꺖4)%ZK4հ
Q7yX.hb)x*xX%<@KTEpK1docְ4 
	U0y$J9HS'_Vd&M:uEjVA:udP`ѽJd4!q	Cw
L`o))*h۩8^zʹR\LH+@nhZ~Q]j2j6u^;6kM'n-sqv:`95:!f=L=xS2nl+8bԩqwK^h@vŪYAǨ<eF-&J\kTrdhpJ6eZ:e5*
IT43BꄺļC3f1%AWUe D6MڣӬ5s^e/Ҍ`֍Ms]sg7rPmsjdbn>4㗛EGDRftKer3bb4W(q|JBQ:1cZ^FI+q:JK-͏RAڇqڢZKtr7i]Z[O5M*|mI$߃rxQ&^!z7{ob/?BG$vڸ!en(! !iqAʓn̓i!mt8E@֊x7 #/_l4=@K@N~^#JdCI4ixFeQH
	u7MEGG/>F~kTI>5;r
ǿkeQ>I|YQ.̽] 3Gjo2?0N
+Sk4>e+3mf1DD~uφGȫD?$AGuGƷX@6N0WO^{lb!^diwgƶ1Z9[e}/^~Ef78b3ǃGh3YJ9M!jA!>mdwa܏vϾ1EG{c.<0&=d?v	Y3:}NF߆S'[տ9@Bo|qZV]	NoUM,ISU;h'ZB;`Jh8;J2		NmvYn~x/^}U{Fz}	^/^׫z}	ay=F^muzsg^5{k8vqtlOn#O6.ZTV}$}] @w3J/ҝ.xWR}e|MJ+/Η+U$
|F?PK
   1.\f.    9   opencard/core/service/CardServiceInabilityException.classAK0ٺt:z&Ø
xvFڴЏiQP0^^3;hiтIpfLT.0ə\9s6b0QЂ)d..x1#hnhf?p:1h:-l41/8t.nL V4z_7^S+ayN/]ʐpmu+D_!lj衫hXerky)Tħ0gmʮDbGe
h׀Rj9:^NTʫpPjv+;PK
   1.\̅d    0   opencard/core/service/CardServiceException.classN@
(
@MFKhD𡌳mc9ogϯ Oc	F&Hx.W]jPuXCRzr\gHۺ{U%O=^nzXDi;Am6=L T5|n.wC֑x;B!.7q_UGn`|K1DV	8э8:}5$5K)EF,(Y&>slQ MQRNf֢PؠЮ]w4\UTgH/!F؏̊e:+`h
PK
   1.\@vc-    7   opencard/core/service/InvalidCardChannelException.classMK0Ɵl]t:gm,cI=x{օ-&#}ivQ{H?^ \B
uV
#b"jFR17eszTC.2爭2.}<zޖ5	z}ԍXAXL_}DAc>7v%_|3ϓStIחC7C+[`iB$,MdxA+-7F2N`~ŜgۺLtn /.v%B{:@shw%RmG4?(w?PK
   2.\ f-  
  &   opencard/core/service/CardWaiter.classVS\~,{"	(%l MlK5$
.Ć4aKVjդ~Q(8NL3cfL:s]va!	~?s؇?QZu
l8m>:qZځ@;;GC	wVmvۮ'}[vsgr	I#K<)eM `*cLA]G¥śMl­
9מ~gs4fvJoFz3N~ږ)jPfW	h[L܁;\ΝT4]oϝ{;Rq܍6	غsFS;:V3]-jfF;neK1'|W)+Ii ib:_u uY9Q-k)m8?4#hII,[_e>XI2ւfŨ>?VͻsjOIу^?gCƙn!m7t0qP)h"Q5WяC8F!^厎j,K)K&'@j=ISluI;~B!J[V*GM㗐!1&֙vhPI9kA&@,11\Sj?jgwW4\0l9ޮMd<9 Na	ٌsĲ@=O,B
9:xcp1J@ݬd.LH/cM>l+7jyZ6#w
̅A籽+3epұ?.\!Tf؁w,Ygu8'dfsφؔU0TQm۪[}+%C<]ɌnKCΕ[lyQv*V@\7ϚM
o<+18;-Kgyx+UZb]w0Z})\O037+`WRor#5
R$Do//Ν&_`2ƗD;Xl,YynLx.$HYKȌ5;ۢkcK|=±u:[EqokT)Zw-|{kܥ蝤_Z]w"xhuNb7=xJpg>z8pg"OO^Ցr29xٱc4۸*}C_%<bÝW! IÚER'u5r~T/fc\Wc6Hr:|
Kƣ2et!yZ1SxaiJר М~}FgxPi7ܷw
͈,Q-A/!HD%qQ
ڏ!l]#e/S].bi*c^>.|"	GC}[8n"Fʤdgpbu=umK[FL
W-0J^Z97Cc]+ t 1tcQFOH3%GWc|')/K&2^?+ǋZNAKK6<^^-H;eOob@iRlcS%){EgUVM-??[PK
   1.\.ɵ?	    '   opencard/core/service/CardChannel.classXw=[Ҍ1
6W0fCXzHufDےI&W6m!to|9=_$x4~{w=ޝ l»QTZAHC)ޓs=Ƨxal5rc*jD5BcXiy.[i[$$ञfgLLr2FN$jiGbg;%1
Sz6Sڬa	2y؎ppGU2,'2iMؙtTϰ
Dm
>!Bp,#7A3~(ͰA=å1
j
kaiV?M
sp&L9v	'Y]ANt}0S|@v6U|r䚑
$r$;SXL'.`F((q
}uP!ɻlְ>('92<QBV
@e<qxqlVw*8<eK.v`'B喑6TU7JXfo}yZLI]A&Pi=c CTYZ~
0̰lR8 gͩZA
pŮJ(#@Oc\Lnβiћ':dtGZS1lDxĠ8aLLcQTfhI*)Rzn:Kƪ8Cc[X\OM5А̘6?KRJEaGZ.;Ҧ0͔5!-FBX2
ʤCPEQgΫt[bj>v̹9^f<F1^4⇣s4<-hκT'$V1CIqS	n$TexR𢆗i*ټGO:5Mʹq6h`(mIL|(ChL&X?lBv[ͤ-C!gҠguSL;Q+uW!G%=yvD{Q	y9;o<ȡ$VK_YׅKdQY$8)HSJقWoha3Jj_ԗcdY$RSՕpOѤ3si[Lo=Z	Q6vq{$(%?>lC71PIjy"fޱEUҩzeG{V1#i34uk2]	`%iNn
BH;MӱiɏpgL6-Ĺm갢"#w<=}QctAQfMj-My=A=I1v֡TmcG>omeʡ?hZrs[ߨ<亂Y[]fa݇%N%ߋ7]݀qN_/]o	n@鬾:h?:ѮUm5	9zv"Jg~?j0E8LhNw$IȒfLĹU/Ј/c3L&^UE$і0T	=ZL_F]tmFWKE.@s bCeH!Z?x{jx)UШ"ɽ<hAlpjpJA.w 5H#^<^6#"kMJQBCש6D迁o	}S7˄[ !|\stb`ӿPK+[UWq`H2MϋҀ*Ju#$՝5
]gD}._|}ߗ1QPڡG1^RO3)yC?]ٓįmFʠ*?D]}56+mi\#[eoc$QGN7q)h
I
USjbuhfhahcKb=[>Xlv%6`gxuʈ=MUG!C~I_?3~g(`SBh#_הTh
EdgQm
~[QSm7nukmO>G$hpM6!6mr֏Ul lz@Q?7k̾Jd^7)L{FV=Yll/پOGHܖ<^II	?1;H~"vY"7>~7bd0HNhy "b$mw>6ۍ{
±i">NbOY<WUןqh,sg'pdVާV)P1zOKs=`ũd~lVJi[x
\^2mܑ]Z/?/2;ZPK
   1.\Ѥ6%    7   opencard/core/service/CardServiceRuntimeException.classOK0Ɵl]fu:g6"<L{z*
VzϺP#m:v<
<PbyC
Zh[0lt`fK&"*NI<nR<e[<5ڣq![%NBE"C?9+1Guc̲#\23D牚,IH%}34gV{	 +e6:u_ѧ?WE[uDd
V]X]ĮZ>TրnRkoRzV5]cPT;PK
   2.\v,  )  @   opencard/core/service/CardServiceInvalidParameterException.classOO0Ɵ`(`jLhb)2`H7'~ ?Ac>=i:J(p*ҡ4S/
y	L$(D9Eb-P(ҡ@3mQ5v"g^gŦů.7:I#甒b)	4}v9NZ~h,~=tG[9%|o6q)z/MH׊a3Ua͕
%޲m(DhbfրU;ZNZeN8(TkWh{OPK
   1.\^q*  (  A   opencard/core/service/CardServiceInvalidCredentialException.classN04%P(
"@v7QTNZLx 
a' ;~x}p t-6z0	|DLeƹdndcj6CASvesA`^pAw24mCID+fTnXJ.RoY$~uxK0Qr}q4<aÀvZ̙LMFA,#/.xzjEj+|%cvõ'WV݉D垳yTlg0pmUٍC쨬0SJ55_)jAj	Ũ6߫PK
   1.\6  T  $   opencard/core/service/CardType.class}N@M8P|j$HE/BE#E 1[j1H}^
BࡪάM@	fgv?>&RH,@?s.^L^*.Yd5`ZΥ:[2\iS\
h
̍OET:-JtrAusC`e^Nh`_ůN)yZ:ͺz|OZkQ(uTF16=L
uf%gCb+n3٤y\!L0GOߤP]HۣCg9BŞĵi*аYcʒ
-Rd-^`mQN#:q,&0xmv*VtҼ [;T+
cÃgi 7@2ovA
 r_\+ot.(OPK
   1.\W      (   opencard/core/service/CardIDFilter.class;o>sNv&FԼĢTԢT}g[fNIj;#@VbY~Nb^RVjr	#wfsb^JfJbI* 
T:s3sfYkF12p%DDd>##30de`؁$ PK
   2.\<      5   opencard/core/service/PrimaryCardServiceFactory.classu
@Dg&j!~xeJP؟	pk~%^peexb "[Q]EͮK4[%lRY;}\~_{ven>KcXg4\3a10@/
EF
IPK
   1.\ܒ  
  .   opencard/core/service/CardServiceFactory.classV[SEe A$+h6l$\ĸH:20;3$ܽSe$VYyQxwX6,0=ݧ;G8/(A)G@A[95nf:~n|Zh.Cnn9:R9
*04[T{"Y;5Tnݫje_!6NfqǘlȽDUc鸪ꪫ
lV/[ylBgۚuO6]NDG¤vuPn:NEvb`mk̊DǾ^N40l7ť`%sOiSb"k֠MeT.$FV%G	d&ݒuu#cf3&,3QǱ_$VbRAbc0]GڨwYA1]⤹\&8Z
7qqűgb;|N5$b∪iS2^a˨3"׸twV2p̖bx+Ppt:6qCV3(n5`h.v(Hιk24m6˼TV5cۖиLo"&&f=8zZN\Sq}
qp]5yJrJr)87"_)ǁU\\]i]=b(gjwJ@mlIjL3yEz(	v<'!%Eֆ ㆥ0Q'2T\UTg}1plCB1[TFfzHϻs&!{}rQ:HY=|Y
;!Ew?SC 
l:B$Ni!SV֦=x늃պ3:jS|*5^gؿ9ghm>*^0ǴO5'lu1 >,TH鮠&Îb# p;-P#L7Mao2ǧT6e6Rk#4QPBCъӚB_'2c
^S%O[%x*؇ *E-AQ{&ƜXK"#%	-"T򮡻 'Q4K}9>ouoK
xҠ][.=ɩ2.Zt#q
=A=U2LH?_1Ryhb8-1<FK{	<Gx	jqݧWI5ru2ZqR6Nc$4cTS#onG RiPO{n\r>?Ovm&|mY{et{.]{ UF><E$H%z|8[-|OgQC4Y3ui`MLLaMaMaMbJZK\uLFQra1Ñ愆n.zX2 >Mv?Q'ET
(	=뿁ߗG'd\e$%B'7xPPbg PK
   1.\  R  '   opencard/core/service/CardService.classWkWWqlBRbQ7#PF66l7cCX4tfiwߏ$ ڮU5yt)]FBB̝:}ܫ_ $ԐхnwQpZpmev
$s=HGCFG/twݪW)g|kئU(rd5J5RFMI:anKbU	L⮼)8GJ,+Ff9GwSaxT [g ]ԮSB<q|D=aW,-oO8۲㚫v*Gt|G)sT
ǭJDqOHܨ
\Z)T95LǶx 5n]-pl΀\]cj)x
OV%Z4;O8S@WZN pFyVt=0:>)` R9c74#
30&ɀ똑taZ\E
:.@~<8[[Qr{ O	<YnF"ؕwMk=Z%v-[qJg؞[f'#5|VGҁG;&y'=˱k=
&%?<9yi%2U[Hs}R^܆Uy.e*:,yۙ;kZ&Z+Wt5q[r
]+5j}mˎZ4yów
VlQ}+ؒ-}0Wʮ]|lfql|/dhP6GU^dޜzuѝ6|@\ WwѶSC/pzZu\ez s|
_H_3+p4(2BM'dn3Y[rnܚq[b+n׍f=|_!kܤ]kV}	F/c%]w;)Szg^d9\GeFne+mYS{^]bϺ"S̹"GΑj|{eOqjP85,S7yC[B^ʻZy7R+/9jEGHɻ!*s_p="/B>8 ɇa=F`=ŉ(+|5_F'h?wb`|A>N۰)q2ໃC2؃		c}hHr5c
[epok̉@H\ՐUV<sDՕ#.[mvWG)`wKfb2jewuVFidہnWڕA9WEJIW1zT>;?))2!)2LN4<Lc=8$zXaTS81|UBI/I|E*9_RR~SjM%AqO>7Pa?aƕ%5:8ZMQ1'Fcbb'S8#>Z8YB:WS=<938Js#`#ca ${»@x	oYq#- 	y
|?ʾINKGdm`Ǧ+2WQ8sX9,#!^x1,n 'nNE^_ypCYܙ(ᛴm?AqNeJ[J[QI zFl~^SsH	|H=F9~1?PK
   1.\    ,   opencard/core/OpenCardRuntimeException.classOK0Ɵlfu:&]޳.H?J|`y~yϯ WQC݆堁&3^U=*y
2bh^K%	CƸe\-f*gRZxMۄ[t!:T.OB?yL;]?
yp-M_mZٓ\1c9YE1(C{:ҐOb07fC݈2ފ؃R"tG Z`BJmװF,G"js
PK
   2.\              opencard/core/util/ PK
   2.\UO~    "   opencard/core/util/HexString.classV[P[]G{.#(6616&
NEY4-}7mҦu-3:)?MNgՙϙ~o&	]3Gg{Ǐ8i?\p+O@bLi#s+fMeRqw*(G@ 73	#lMdsfkJ[ObV.,IԆeENTi@jȈ
ķhD0l!QZj@0	Ҷ.1NIᵊkmcC?$]}Jjwo`ME`'
ndK@~s Vvu*#{؋VꒂQ#4VUgІ[cfw)R(gyXXaS&` 8$P^LFl4cԄMXXttJdG.=?c
ƉH/mf.[vGzO dpepV#<@/T/;f,cNƙQO2Tد"FѦST1HѮC*PaPVxLIѥn)*(NJ&V՛ʘ}fNsE&E#΢M.{7jN`:7,bt
va]|ّIrd[kROje$6R/)(-'DԵ>"A8vbJ,1+Vԕ?|2&gijMYV<ILQDڹKl!0{R% eW6k֌35M|w|O6v,cJe&c=Fx-QXtz$f~Go6;V߸V_7Q/zoǊVt\tt,e~M֊f2f;mf^M^-VƪLRQ6pR,/P91ïVJA܅ÉY>{E|92:;mp{j*{
}h/ׁ?GރOixFUZ.xCC\}X}74ny^MQ{<SIn}6cz$
M4Ɓ=A_PњނF4ʂ3j{/̠5])YyǶ3³uY%n0Өh؉>YtGEaD=/p'xӸ_1?i=O
|@'<}_5|gΙW.g/pMس9s{oc/39РUj?cG*uY.N!l冘b<615K5_L:9_NwxCdn=K4P^Ъ&$K4-_껏M-+pAְN,IK"iI9K:HH{%jPK>o*U>FMIoqb?Eo2
a,j|0h2,nWKS<J6Q;贋dWMj/o^j"kl3a[i:1EU\I^'pdm3%!tp9	A=j5;{8ݒ0tn7KSg"xě~Gey|P;4}-!oz\,V	^e
{6׻FT!F|nWD_㚌qzvmW汍{.a`,bݾV. /;RB@##ԿOƿ7ځ_w:*Ex7ސm@B~Gn/gcq~>_UX\OsTKUYeG>̱\Or#+QUz:+c?eпiȷ].Ν7W[PK
   1.\dg     #   opencard/core/util/APDUTracer.classn1ӓ))ޘ9䳑ލ"RPŮO;?o oh$(1i)Kc.U|1Z-d<0Kp%6{ί\&˄ކsIwʑR-_(㆟BkR[7WV5C;0pHviL}_(Ʃ"%^PF*B	|B+ϾP?PK
   2.\a
i   
  6   opencard/core/util/OpenCardConfigurationProvider.class}N
@V^\ z6[y(1h $3d&z? Dh>ggtHUULZ	l*zjZE_ʴKtaS׉J9	f8
=Ͽ'ҟR\
76coYC $n̮t,{PK
   2.\  
  (   opencard/core/util/SLF4JAPDUTracer.classVRF=pq @BSZ081$,bdɕd}1:RJicL~H^v_ n Ш 	|G
nfw2434F&70ZajD5ѢэTbåGik"K
Tc٨cFSV6+\>dh
40IqbjX+tDkЭઊRem$eo"U$Я`@ jjuMNqC;'z4ƈQ0p>
[yEiNlõu3K1'p]AD$NQZ2`hq'2+9)KVqSZ_زb~[
Q.cȈDYKF]c?"^
āsxRHmwp8h'MDjÜU#p1J&,;]W|Eynf<yZމЉy= RX*ghHj`ߔPU$	Qe`8(+CW*9I.2u@drkQ@C|J=m9mʫ:C26T%k=y'sud:.7]Gf
2'@JkO(	--w5nlr[ɀNQ\]f-XGY)G\7/HLJE7h>^ŕraHQɧG57%% -3֢wht\b@5=cjIVDBU[7R̢e!.
7gef8A(*ؗrFԜP֞.ise
KAW?C8DW,j%sc oOS=熱.S fÌAMZ+h~O^C?%cI GtGtӠc7}ڦ 
)hL> *ysoY	|G,71_
/q#aF7vǸ5fLcJϾ| C0D5n:{هY:31࡚a+|M^SpLh|r
C@и	
ÐE/>IׁBBqiMNܬlG!C?hOi@@cO{0|{]WrXyӐWZ%	$\RN?ZN?<̓#<h!#|	;?PK
   2.\yV  
  %   opencard/core/util/SystemAccess.classV[SF=MF I(4$\^S@BHc
E`Yr5{yhEDH2L3MNm	ys]?|_tԠVCz40<;<nsg+Tar,9P׿#F
s0ZK擮k0[B?%,g+ѿ<5hE1T"D <7'<i	R_/$E`8Wr*0ܮF}rJ\R FH#nWqKMaafLSOۆ',D:\g|
ᦁ:V'xe=O8b_y,OC2\BE-
VT.)ÈS7dF5F1e\{fU:|[L,W,/#}ե
vy:imz+e
cTj1)q˖l1j(_1{jǔ'G̑QBQL3u*J%ܢQE`ۋ9BU#tjD«ehLY[y9WMO'qf&ϔ&刅|vSxKfڒeY;]-
Dh)-	θI=+d۔ܞ繈UUJXUϑʓ!x9Z lM	V9tKcnIm4lmA%UįHOߙ_&GG<;7Sn3
[n6clK̸i9?I)rvmU0ܯܔڑ82Agߓt|zR!'y{DSܶStrF{q7es0[Ŭ'o6+34WOW$tuAa1}DL]ff{<gC09= KSp<JoEV?x 
#4+,tG0Quhڭ@+ݽUBP`$op 8kТ
jЈ!ӷZ|+^bhw@Qm&T4%97QuEFfZV[ޣ>*u|`8-˦M+	i~d6HLW݇]Gb~㫇XÃ
EH؍e)"Q<Rf`E*r`+RؿiӀ'@!(W,zi
W^*;Av@
1)-9~ϸ?PK
   2.\0	    &   opencard/core/util/APDUFormatter.classW[pS]z\q+,,`0&l8ȼ3)׺Ƕ\]4$m&}%m@0
-3i	3~_O̴?is`Lqqykn^4 (9aQN<!@p[\p|i	,wBy64$mtKC:!
Q`Uae˴#RlT2fK''Έ{`VXFbޚw:`@OK)iOXרS`}knva
_#-L+SV1N)wqo9^pdmZz2{wmLlbabY'*B^cN*g,S0R03(^*픆0YB %К-łёf袜੖IĐe'ry]!HdV,,s~L 3MY[hKKƨX9\pFث:F٩
m'< [hG@=~eCH%_2Lrd"[7%C/KDO	G!%0(<b0v(b=j0v"˩aw;L9	MYWk,Y1哎~ĤOV0aij(S!5ʉe0BP#ZaJe%8ga*'us=twV=lf=u{-@l. '#!,S(ͽ.ic
eVvhC]P)ӫrRL/Ի֭dkqP$5N7A7C ?ֆ Z54Td,@ި51Nu~tX Gwםs&&̀ ɼQ
؞+K1jv^ܠčJ=,بIg2xCǛxKۊsK
1kT
Jb/nټ=ܙuAON[UU:~LT7]pUdbH3NzDd}}^<;l5ӔjODLl,LѨVeUEFb^.kP-	c%Jvc擆Q_^M$?;

+۰' U~A_L nޏ L^EMݟ.eSHBw]~5VI
-?/~laO	HM>	QoN|;/#&H$j2\j &}[*l9P+>~%/!o&WdsbZ$q)~V_j~_@]lSh)ĒW|a*;<añEi -.bmSpawukގƂalOysWsJ]Eoi*z#t<Gq BW]|.| I bj$͖1<Ǒ&:͇vlˠ`Ǹ2
%&(uO%ïч?Ob>(qDlQюɻ</v5q\%Sa&/wPgy%~oaߣ*>I'bB|8-o2DO?ISg/=Q/:N1şI"T|q~lIUڠ
·]"
!94,Ԡ	,Lc՟Y>j
4v-VLYIEGn[ ~85S Ϫqlw*Jpn%`^Gg*:>-KhJmq^S1A.%suE^bg^#үcz+x;[r}>>s<F1Ž?e?t#Et݋"nL97>\Oy/ʎS!~įdA
4i?P25N_*u۳n~@J$MKh/PK
   1.\QqP7    9   opencard/core/util/OpenCardPropertyLoadingException.classJ@mVc
nąHJ7UA	*TCI'e2}׾+{"DŅf3~9Kp(HXR 2;aaȱU&wVMJxCkZ	OJbU:5h|#Wci{ĬtDD:B۞Yh޾9ʼN4<NF}iD?dGsXP1aZ(_W&(1<P6+6SQ\Q<ΰf/7@Y£MNU#YԀ|ƪg=wPK
   2.\              opencard/core/event/ PK
   1.\s	    '   opencard/core/event/OpenCardEvent.classSmoP~.vCj+ܪR:|KP&DLf7JټK%+MM4حs=y{8Gx@(2y'=N~~^(cd
ZnZ2C;;E(CQq*C#:BߋŁ${r;Kq$>``KIgッ ڪ*.Cc(%Qvİ2ن2%Vf4F+enq*ְN7I i<L*S:nBˠ`j3#GP­\5#n;-gnpϡs.Ca'ڊ`wo0ް\y#oۡb/thҨϰ:ONOYMhx%ZTBED&EһjZS0S
٬VZd5><AOI=C[@7$T$xhrT-t[sK&XY'{<	6zOH!X:^]:TrA*6p"EHxPK
   2.\QVj    (   opencard/core/event/EventGenerator.classW|S4MӋ`JaQ
AC
b)biriC$&7{PtNRuM&:qsNN~o2soҴƯ{;wp6
@Nōh07z_&Q#0c	2>˚Sz:
_Ey$1Aj,H􄣁C쏵Fg8i&v𗿼^'U{ua"%%
suGHҥUJ&阌D(R:6m
)3A)T4"0aO Z1z@q%"vR&8
SjKeT>341唞s@rH͕:0 Efʉifj#0A5ApӛHV(85IkMH*Ɗ6
fb]@I^+yW'P9fT56Vb!isX5AgJ(aưNEu
u,2:0zb{MpKѨE"h*$G7rr5HEh')4ɩTJJF#._i^G۰ac6X%8uSMEplsЈKNJ:B0X4"N	)'#m71W'4ulBZ̄R#)cF0mأ#@QkaoI3d0{ga	
I&RoD8dt:GE<-UO42,J 5n|ۤu㣒!/\`Vs8)yI%F'-rlO$w&[

W lkp-
[h.qTޞܼNgebJ@֦vGB98r,SP4$Xɋ|ј6BNzɸuM3S˳΍wu}O,1{*"ub*wݦv|	4@/2ڬ;u|MfdK^8=n[$h25dGaXUmW}$L呆tӰ%+ff׎sr},Q9a$Yǵ`@<&]uQf3K*@5K)(f#a%05Hr K]I|	8$͌j3	>	7yFΥ	Vf#Rd
-DGt)$ݚ-BV2Gk8I3K.ݴ5/(90	6ڔT}ގHVhRě~t]F]s/ Q[Z0{lR
/B˚ڌ1-xVFcqš<X#K%FCX\42HH%1L+J<;EY_Qwؕp7m%wbrcvZBW!Xw*֍qݖxҘ/>M_H
R/a	B&p҈E{WQb0.W%MR
VeT5xdpBjxgD7ϵ XyvO8p/Bcg=&y TOxZ7؏y8xñ~ ~(P?N}j{?eTԁ	T_ G J( mAJ.U(ٛQIyh:ķIBV˷o8Bq%4=邎˗
P\3U*vގŮ~b D}CUK*i_WܫN_3q-O;	ry[׃qq4;㎇9&QjxԌ#
K$fp
MCٻ
Y-M\f\b\rh@o&pdɨwK^zaLax[Q۔DZkKx,-ʹ3-g!rk~-^r_kk.hK~9 ʻ3`Ό?J#rۺͻK	b-1_aǅ-Mz	aN-v8b!DÓs
V탧Uu`uM}C;'?qz&&ݴ1G)lی">ǘ܏s(%3?)Փ,OSYB`#~AYQڳy<ZQl1;?㛟3Or5Ll$%w$wC
(4\kO1c_a3Ɗ˔W("lvC̃~|&kǶ%KWjKhy5bwv;%%aa'8eurC&c.k3WGzi.+9Y^vqe^b*FT>i+rzQ{eVW0ͯ|]or[ocpQv=ۄ%uݣ@EpN;A]X?ٙ,dapR.\([WiBYPo
y*ҫipX1f	4tA
5Ɇ	Ky-~gYQpn\A@_frYEVJp չw8ޝQ7RU=OR,ԺeJӋ26jO>2m$JvTSP(TLCJQA 3y9R1
ٸDTG؏-bq
1wspnĢLgһ!{l_G2D8R^?pj_gAkVۅ.6QOqsAyW9g5"dΆ2IrT,0Lą8UȪ>l7sk?:8'V#h)|~I3ĺx}Y~_WfzB)<FPK
   1.\bQ  l  +   opencard/core/event/CardTerminalEvent.classUmSU~nBذ.BKA-y֗i%	6m MbMrnܽ?A?ԙ
3&kɇ=sݛ}AGQ
#beXt;i^+t=
IW;[c;3y`fmn4xSJӠxÕ %\{m1mmW<b`% N$U59dPCB!F4 *qƌYT<VUUXUYJw{{<C\<BmN,.J3󰮗\EX5wply%#|	U@2Fiv(I}0\83YJ^
D£zXrvG)a`FFXCzvQFnil9|npf6l$nӴgɽR]x<d
4TT!G"Y=!V 4yO}8
oF;LhVQWlU!=b\q]qQl_i12,ⴜw+pWͦp2ANRu\<r=yD޴%x.rܣ
 ۻdO=vps&8ۦs_÷4@C;o6{c](>KiQ&'9F>qT:s,Z<-nҚa9I< 	0@ g+%zւ9IQŊA_iObd
 m:CWM?H?v3ǡ@M+b,*PeU@11FDe4'_Pv2cv+}pL@<w$ydz%_1ˡ"|drnfqId%
G1Υ~TХXg¸Tjqv:`Y8>*cHZ'ZM`ͰEc?PK
   1.\[#1   E  $   opencard/core/event/CTListener.classmJC1jwםk1.
4$6)gsPIi.p6[چȚkI?/J9*	Í.Я
ۤpE}rfyW	w^p:oPL?-Rh:M:Λ_\Ʉ_|D \H]w$µQmyqMG{PK
   2.\           	          A    META-INF/PK
   2.\:   Q              )   META-INF/MANIFEST.MFPK
   1.\                     A   de/PK
   1.\                     A   de/cardcontact/PK
   1.\                     A   de/cardcontact/ctapi/PK
   1.\i
                  de/cardcontact/ctapi/CTAPI.classPK
   1.\Lz,    )           9  de/cardcontact/ctapi/CTAPIException.classPK
   1.\SX    (           
  de/cardcontact/ctapi/CTAPITerminal.classPK
   1.\9     &             de/cardcontact/ctapi/ICTAPIEvent.classPK
   2.\                     A  de/cardcontact/opencard/PK
   1.\                     A  de/cardcontact/opencard/pkcs15/PK
   1.\9{Z    H           #  de/cardcontact/opencard/pkcs15/CommonDataContainerObjectAttributes.classPK
   1.\|0  U	  )             de/cardcontact/opencard/pkcs15/Path.classPK
   1.\2  R  9           D  de/cardcontact/opencard/pkcs15/OpaqueDOIndirectPath.classPK
   1.\R]q    8             de/cardcontact/opencard/pkcs15/DataContainerObject.classPK
   1.\9@  
  ;              de/cardcontact/opencard/pkcs15/CommonObjectAttributes.classPK
   1.\           !          Az&  de/cardcontact/opencard/terminal/PK
   1.\           +          A&  de/cardcontact/opencard/terminal/ctapi4ocf/PK
   1.\t(yh     B           '  de/cardcontact/opencard/terminal/ctapi4ocf/CTAPICardTerminal.classPK
   1.\)UM?  o
  N           b7  de/cardcontact/opencard/terminal/ctapi4ocf/CTAPIWithKeyboardCardTerminal.classPK
   1.\h5  v  I           >  de/cardcontact/opencard/terminal/ctapi4ocf/CTAPICardTerminalFactory.classPK
   1.\           -          AF  de/cardcontact/opencard/terminal/smartcardio/PK
   1.\\ͅ  c.  F           G  de/cardcontact/opencard/terminal/smartcardio/SmartCardIOTerminal.classPK
   1.\Ǽt	  I  E           ]  de/cardcontact/opencard/terminal/smartcardio/SmartCardIOFactory.classPK
   1.\#    @           Th  de/cardcontact/opencard/terminal/smartcardio/PCSCIOControl.classPK
   1.\ؖ6    ?           Kw  de/cardcontact/opencard/terminal/ReaderConfigurationModel.classPK
   1.\           0          A|  de/cardcontact/opencard/terminal/remoteterminal/PK
   1.\:t&  <  F           .}  de/cardcontact/opencard/terminal/remoteterminal/RemoteTerminal$1.classPK
   1.\EUS`  *  D             de/cardcontact/opencard/terminal/remoteterminal/RemoteTerminal.classPK
   1.\}{  $  7           z  de/cardcontact/opencard/terminal/TerminalSelector.classPK
   1.\           )          Ax  de/cardcontact/opencard/terminal/jcopsim/PK
   1.\]i  	  I             de/cardcontact/opencard/terminal/jcopsim/JCOPSimCardTerminalFactory.classPK
   1.\#_  /)  B             de/cardcontact/opencard/terminal/jcopsim/JCOPSimCardTerminal.classPK
   2.\                      A  de/cardcontact/opencard/service/PK
   1.\           &          A  de/cardcontact/opencard/service/eac20/PK
   1.\U  4  1           .  de/cardcontact/opencard/service/eac20/EAC20.classPK
   1.\           -          AR  de/cardcontact/opencard/service/remoteclient/PK
   1.\     K             de/cardcontact/opencard/service/remoteclient/HttpURLConnectionFactory.classPK
   1.\reF  
  A             de/cardcontact/opencard/service/remoteclient/RemoteCardSpec.classPK
   1.\q  1  A           v  de/cardcontact/opencard/service/remoteclient/RemoteClient$1.classPK
   1.\6	    L             de/cardcontact/opencard/service/remoteclient/RemoteProtocolUnit$Action.classPK
   1.\!
m  
  J             de/cardcontact/opencard/service/remoteclient/RemoteClientCardService.classPK
   1.\BO  +  G           H  de/cardcontact/opencard/service/remoteclient/RemoteProtocolScript.classPK
   1.\⮙    E           d  de/cardcontact/opencard/service/remoteclient/RemoteProtocolUnit.classPK
   1.\]l*  %*  ?           `  de/cardcontact/opencard/service/remoteclient/RemoteClient.classPK
   1.\'e?  Z  [            de/cardcontact/opencard/service/remoteclient/RemoteUpdateServiceNotAvailableException.classPK
   1.\xOM    F           d
 de/cardcontact/opencard/service/remoteclient/RemoteUpdateService.classPK
   1.\	9      M            de/cardcontact/opencard/service/remoteclient/RemoteNotificationListener.classPK
   1.\:b.  w  I            de/cardcontact/opencard/service/remoteclient/RemoteProtocolScript$1.classPK
   1.\0  T  R           y de/cardcontact/opencard/service/remoteclient/DefaultHttpURLConnectionFactory.classPK
   1.\5#  ,  G            de/cardcontact/opencard/service/remoteclient/RemoteProtocolUnit$1.classPK
   2.\  f  :            de/cardcontact/opencard/service/InstructionCodeTable.classPK
   2.\           (          A" de/cardcontact/opencard/service/isocard/PK
   1.\^     @           G# de/cardcontact/opencard/service/isocard/FileSystemSendAPDU.classPK
   1.\    F           $ de/cardcontact/opencard/service/isocard/IsoFileSystemCardService.classPK
   1.\/%  n  <           & de/cardcontact/opencard/service/isocard/IsoCommandAPDU.classPK
   1.\P  "  :           ) de/cardcontact/opencard/service/isocard/IsoConstants.classPK
   1.\)    :           6 de/cardcontact/opencard/service/isocard/IsoCardState.classPK
   2.\A    D           9 de/cardcontact/opencard/service/isocard/TransparentCardService.classPK
   1.\           -          A>@ de/cardcontact/opencard/service/isocard/apdu/PK
   1.\%^W  z  D           @ de/cardcontact/opencard/service/isocard/apdu/SelectApplication.classPK
   1.\mY  T  F           DB de/cardcontact/opencard/service/isocard/apdu/ManageSECommandAPDU.classPK
   1.\ n  	  I           D de/cardcontact/opencard/service/isocard/apdu/GetResponseCommandAPDU.classPK
   1.\7^  y  E           E de/cardcontact/opencard/service/isocard/apdu/GetDataCommandAPDU.classPK
   1.\T/-@    K           HG de/cardcontact/opencard/service/isocard/apdu/PerformSecurityOperation.classPK
   1.\S    J           H de/cardcontact/opencard/service/isocard/apdu/GetChallengeCommandAPDU.classPK
   1.\R    E           mJ de/cardcontact/opencard/service/isocard/apdu/PutDataCommandAPDU.classPK
   1.\5"  !  Q           uL de/cardcontact/opencard/service/isocard/apdu/GeneralAuthenticateCommandAPDU.classPK
   1.\FΟ  \
  Q           N de/cardcontact/opencard/service/isocard/apdu/ChipAuthenticationResponseData.classPK
   1.\f}M  V  P           S de/cardcontact/opencard/service/isocard/apdu/ChipAuthenticationCommandData.classPK
   1.\5p  .  O           !V de/cardcontact/opencard/service/isocard/apdu/VerifyCertificateCommandAPDU.classPK
   1.\M)    D           W de/cardcontact/opencard/service/isocard/apdu/VerifyCommandAPDU.classPK
   1.\o'KW    G           Y de/cardcontact/opencard/service/isocard/CHVCardServiceWithControl.classPK
   1.\dt  
  G           E[ de/cardcontact/opencard/service/isocard/IsoFileControlInformation.classPK
   1.\$\    V           ea de/cardcontact/opencard/service/isocard/CHVCardServiceWithControl$PasswordStatus.classPK
   1.\k    F           d de/cardcontact/opencard/service/isocard/CHVManagementCardService.classPK
   1.\m  	(  =           uf de/cardcontact/opencard/service/isocard/IsoCardSelector.classPK
   1.\H%#  R  <           x de/cardcontact/opencard/service/isocard/IsoCardService.classPK
   2.\e     A           m de/cardcontact/opencard/service/isocard/CHVDialogWithStatus.classPK
   1.\Ph    +            de/cardcontact/opencard/service/KeyId.classPK
   2.\           -          A de/cardcontact/opencard/service/smartcardhsm/PK
   1.\(}    A            de/cardcontact/opencard/service/smartcardhsm/KeyDescription.classPK
   1.\R+֘  

  J           ֬ de/cardcontact/opencard/service/smartcardhsm/InitializeConfiguration.classPK
   1.\&6    S           ֳ de/cardcontact/opencard/service/smartcardhsm/KeyGenerationCardServiceWithSpec.classPK
   2.\+  !  D           M de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMECKey.classPK
   1.\E    J            de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMAppletState.classPK
   1.\
W  
  <            de/cardcontact/opencard/service/smartcardhsm/DataStore.classPK
   1.\*  A  L           > de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMCardService$1.classPK
   1.\^"
  O  B            de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMKey.classPK
   1.\/'    <            de/cardcontact/opencard/service/smartcardhsm/KeyDomain.classPK
   1.\aj    H           * de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMSecretKey.classPK
   1.\vʶ  i  P            de/cardcontact/opencard/service/smartcardhsm/PublicKeyAuthenticationStatus.classPK
   1.\>~/  J  L            de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMSecretKeySpec.classPK
   1.\Kч
~  e J           ; de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMCardService.classPK
   2.\%e  I  O           _ de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMECPrivateKeySpec.classPK
   1.\    C           h de/cardcontact/opencard/service/smartcardhsm/KeyDescription$1.classPK
   2.\UD    I           Pk de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMPrivateKey.classPK
   2.\&H<    E           Ro de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMRSAKey.classPK
   1.\A {S    F           q de/cardcontact/opencard/service/smartcardhsm/DecipherCardService.classPK
   2.\Y-  \  P           ws de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMRSAPrivateKeySpec.classPK
   1.\_    F           w de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMKeySpec.classPK
   1.\\    J           s} de/cardcontact/opencard/service/smartcardhsm/KeyDescription$KeyTypes.classPK
   2.\2_E    =           \ de/cardcontact/opencard/service/smartcardhsm/CHVManager.classPK
   2.\
E    F           ǁ de/cardcontact/opencard/service/smartcardhsm/EMSAPSSEncoder$MGF1.classPK
   2.\UDL    G           6 de/cardcontact/opencard/service/smartcardhsm/KeyDomainDescription.classPK
   2.\US0O  A	  A            de/cardcontact/opencard/service/smartcardhsm/EMSAPSSEncoder.classPK
   2.\Q    I            de/cardcontact/opencard/service/smartcardhsm/CertificateDescription.classPK
   1.\ޞAȌ  $  M            de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMPrivateKeySpec.classPK
   1.\sV  	  D            de/cardcontact/opencard/service/smartcardhsm/SmartCardHSMEntry.classPK
   1.\p8;    B            de/cardcontact/opencard/service/smartcardhsm/PublicKeyStatus.classPK
   1.\_PF    N            de/cardcontact/opencard/service/CardServiceUnexpectedStatusWordException.classPK
   2.\           /          Av de/cardcontact/opencard/service/globalplatform/PK
   2.\M    G           ť de/cardcontact/opencard/service/globalplatform/CardLifeCycleState.classPK
   2.\           4          A de/cardcontact/opencard/service/globalplatform/apdu/PK
   2.\$I  ;  N           k de/cardcontact/opencard/service/globalplatform/apdu/SetStatusCommandAPDU.classPK
   2.\V`M  T  Y             de/cardcontact/opencard/service/globalplatform/apdu/ExternalAuthenticateCommandAPDU.classPK
   2.\Y	L  =  N            de/cardcontact/opencard/service/globalplatform/apdu/GetStatusCommandAPDU.classPK
   2.\LQ  V  U            de/cardcontact/opencard/service/globalplatform/apdu/InitializeUpdateCommandAPDU.classPK
   2.\fTH  2  K           ` de/cardcontact/opencard/service/globalplatform/apdu/PutKeyCommandAPDU.classPK
   2.\l!SW  0D  N            de/cardcontact/opencard/service/globalplatform/SecurityDomainCardService.classPK
   2.\           $          A de/cardcontact/opencard/service/chv/PK
   2.\Өv
  ;  >            de/cardcontact/opencard/service/chv/AppletCHVCardService.classPK
   2.\ҩ=$  P  5             de/cardcontact/opencard/service/StatusWordTable.classPK
   2.\                      A de/cardcontact/opencard/factory/PK
   2.\ej  e  A            de/cardcontact/opencard/factory/AppletCHVCardServiceFactory.classPK
   2.\-  ?	  D            de/cardcontact/opencard/factory/RemoteClientCardServiceFactory.classPK
   2.\*    F            de/cardcontact/opencard/factory/GlobalPlatformCardServiceFactory.classPK
   2.\`    D            de/cardcontact/opencard/factory/SmartCardHSMCardServiceFactory.classPK
   2.\nÌ  T  ;            de/cardcontact/opencard/factory/IsoCardServiceFactory.classPK
   2.\           !          A2 de/cardcontact/opencard/security/PK
   2.\R2  
  7           s de/cardcontact/opencard/security/DESKeyDerivation.classPK
   1.\˿~  8  7           y de/cardcontact/opencard/security/IsoSecureChannel.classPK
   2.\~    ;           L& de/cardcontact/opencard/security/GPSCP02SecureChannel.classPK
   2.\)qy     6           6 de/cardcontact/opencard/security/GPKeyDerivation.classPK
   2.\:A  Q  /           8 de/cardcontact/opencard/security/GPKeySet.classPK
   2.\(     4           ; de/cardcontact/opencard/security/GPKeyProvider.classPK
   2.\	b    7           < de/cardcontact/opencard/security/AESKeyDerivation.classPK
   1.\:M  _  A           ? de/cardcontact/opencard/security/IsoSecureChannelCredential.classPK
   2.\ל  e  C           A de/cardcontact/opencard/security/GPSCPSecureChannelCredential.classPK
   1.\I    4           C de/cardcontact/opencard/security/SecureChannel.classPK
   2.\xR:O    @           E de/cardcontact/opencard/security/MessageAuthenticationCode.classPK
   1.\|%   :  >           G de/cardcontact/opencard/security/SecureChannelCredential.classPK
   1.\Th}    E           H de/cardcontact/opencard/security/IsoSecureChannel$SSCPolicyEnum.classPK
   2.\0>^  	  9           K de/cardcontact/opencard/security/GPSCPAuthenticator.classPK
   2.\/˟    9           !O de/cardcontact/opencard/security/IsoCredentialStore.classPK
   2.\%
    ;           U de/cardcontact/opencard/security/GPSCP03Authenticator.classPK
   2.\A!ʭ      6           n` de/cardcontact/opencard/security/GPSecureChannel.classPK
   2.\^A  O  ;           oa de/cardcontact/opencard/security/GPKeyProviderDefault.classPK
   2.\AE=  /  2           e de/cardcontact/opencard/security/GPKeySetTLV.classPK
   2.\c
    M           Rh de/cardcontact/opencard/security/MessageAuthenticationCode$CBCBasedCMAC.classPK
   2.\Z    J           s de/cardcontact/opencard/security/MessageAuthenticationCode$NativeMAC.classPK
   2.\LFa
     ;           v de/cardcontact/opencard/security/GPSCP02Authenticator.classPK
   2.\UWS    ;            de/cardcontact/opencard/security/AESKeyDerivationBase.classPK
   2.\Gu  Z  ;            de/cardcontact/opencard/security/GPSCP03SecureChannel.classPK
   2.\                     A de/cardcontact/opencard/eac/PK
   2.\qu  )  =           A de/cardcontact/opencard/eac/StandardizedDomainParameter.classPK
   2.\           "          At de/cardcontact/opencard/eac/pkcs8/PK
   2.\@,    7            de/cardcontact/opencard/eac/pkcs8/ECPrivateKeyTLV.classPK
   2.\  H
  4           7 de/cardcontact/opencard/eac/pkcs8/ECParameters.classPK
   2.\¨m  q  6            de/cardcontact/opencard/eac/pkcs8/PrivateKeyInfo.classPK
   2.\ud  \	  E           f de/cardcontact/opencard/eac/pkcs8/PrivateKeyAlgorithmIdentifier.classPK
   2.\6T&  ,  /           - de/cardcontact/opencard/eac/pkcs8/FieldID.classPK
   2.\u &    -           	 de/cardcontact/opencard/eac/pkcs8/Curve.classPK
   2.\G2	  :"  4           z de/cardcontact/opencard/eac/ChipAuthentication.classPK
   2.\k    '            de/cardcontact/opencard/eac/PKCS8.classPK
   2.\           #          A de/cardcontact/opencard/eac/softTA/PK
   2.\.c  ^  5            de/cardcontact/opencard/eac/softTA/SoftTASigner.classPK
   2.\CZ&     >            de/cardcontact/opencard/eac/TerminalAuthenticationSigner.classPK
   1.\lm'  e  ,            de/cardcontact/opencard/eac/TrustStore.classPK
   2.\                      A de/cardcontact/opencard/eac/cvc/PK
   2.\3X6    ;            de/cardcontact/opencard/eac/cvc/KeyDomainUIDExtension.classPK
   1.\S   
  3           4 de/cardcontact/opencard/eac/cvc/CVCertificate.classPK
   1.\>k    >           9 de/cardcontact/opencard/eac/cvc/CertificateEffectiveDate.classPK
   1.\hl  !  E            de/cardcontact/opencard/eac/cvc/CertificationAuthorityReference.classPK
   1.\X}    @           + de/cardcontact/opencard/eac/cvc/CertificateHolderReference.classPK
   2.\BT  
  <            de/cardcontact/opencard/eac/cvc/CVCertificateGenerator.classPK
   1.\؏  n  :            de/cardcontact/opencard/eac/cvc/AuthenticatedRequest.classPK
   1.\u>  h
  0            de/cardcontact/opencard/eac/cvc/Extensions.classPK
   1.\q`  
  2           ! de/cardcontact/opencard/eac/cvc/PublicKeyTLV.classPK
   1.\F  l  5           		 de/cardcontact/opencard/eac/cvc/CertificateDate.classPK
   1.\?Ga  8
  L           Q de/cardcontact/opencard/eac/cvc/CertificateHolderAuthorizationTemplate.classPK
   2.\S|  a
  1            de/cardcontact/opencard/eac/cvc/ECSignature.classPK
   1.\oON    8            de/cardcontact/opencard/eac/cvc/PublicKeyReference.classPK
   2.\Ͷ  -  4           # de/cardcontact/opencard/eac/cvc/ECPublicKeyTLV.classPK
   1.\w}x  u  /           ?/ de/cardcontact/opencard/eac/cvc/Extension.classPK
   2.\Tk  Y  C           5 de/cardcontact/opencard/eac/cvc/CVCertificateRequestGenerator.classPK
   1.\ N,
    5           ): de/cardcontact/opencard/eac/cvc/CertificateBody.classPK
   2.\Ve  ?  5           D de/cardcontact/opencard/eac/cvc/RSAPublicKeyTLV.classPK
   1.\xbG    ?           L de/cardcontact/opencard/eac/cvc/CertificateExpirationDate.classPK
   2.\y7  F  <           3Q de/cardcontact/opencard/eac/cvc/SecurityClassification.classPK
   1.\^    2           U de/cardcontact/opencard/eac/cvc/SignatureTLV.classPK
   2.\x    2           rY de/cardcontact/opencard/eac/cvc/CVCGenerator.classPK
   1.\,u'  -  ;           :a de/cardcontact/opencard/eac/CardVerifiableCertificate.classPK
   2.\Ф\  .  0           s de/cardcontact/opencard/eac/EACCardService.classPK
   2.\                     Ad de/cardcontact/opencard/utils/PK
   2.\/  
  (            de/cardcontact/opencard/utils/Util.classPK
   2.\'  @  +            de/cardcontact/opencard/utils/CapFile.classPK
   2.\v$s  5
  7            de/cardcontact/opencard/utils/StreamingAPDUTracer.classPK
   2.\                     AO de/cardcontact/tlv/PK
   2.\iUZp  4  #            de/cardcontact/tlv/IntegerTLV.classPK
   2.\fQ    "           y de/cardcontact/tlv/HexString.classPK
   1.\P^_{    -            de/cardcontact/tlv/TLVDataSizeException.classPK
   2.\^A$8    (           ~ de/cardcontact/tlv/PrintableString.classPK
   1.\^    )            de/cardcontact/tlv/ObjectIdentifier.classPK
   2.\pב    (            de/cardcontact/tlv/GeneralizedTime.classPK
   1.\cQ<w    )           Ի de/cardcontact/tlv/TagSizeException.classPK
   2.\*	  Y  +            de/cardcontact/tlv/DirectoryAttribute.classPK
   2.\.  p  1            de/cardcontact/tlv/ObjectIdentifierRegistry.classPK
   1.\rd  
  '           - de/cardcontact/tlv/ConstructedTLV.classPK
   2.\{u    #            de/cardcontact/tlv/ByteBuffer.classPK
   2.\  '	  &           	 de/cardcontact/tlv/NativeTLVList.classPK
   1.\@?1    $            de/cardcontact/tlv/ParseBuffer.classPK
   2.\Rq  w  #           + de/cardcontact/tlv/UTF8String.classPK
   1.\    -           J de/cardcontact/tlv/TLVEncodingException.classPK
   2.\nnk|   0  (            de/cardcontact/tlv/MutableTreeNode.classPK
   2.\UՑ    $            de/cardcontact/tlv/OctetString.classPK
   1.\ 'v
    %            de/cardcontact/tlv/PrimitiveTLV.classPK
   1.\aB8  i  !           {- de/cardcontact/tlv/Sequence.classPK
   1.\x   M  !           1 de/cardcontact/tlv/TreeNode.classPK
   1.\SFM
               2 de/cardcontact/tlv/TLV.classPK
   2.\#    "           = de/cardcontact/tlv/GPTLV_EMV.classPK
   1.\OW
  J             A de/cardcontact/tlv/Tag.classPK
   2.\~0>    &           O de/cardcontact/tlv/GPTLV_Generic.classPK
   2.\k^Gn    '           R de/cardcontact/tlv/CompactInteger.classPK
   2.\6|D     C           V de/cardcontact/tlv/ObjectIdentifierRegistry$ByteStringWrapper.classPK
   1.\           	          A
Y opencard/PK
   1.\           
          A3Y opencard/opt/PK
   1.\                     A`Y opencard/opt/iso/PK
   2.\                     AY opencard/opt/iso/fs/PK
   2.\žY  f	  '           Y opencard/opt/iso/fs/CardFileAppID.classPK
   1.\   	  (           c_ opencard/opt/iso/fs/CardFileFileID.classPK
   1.\!  <  /           d opencard/opt/iso/fs/FileSystemCardService.classPK
   2.\܋    .           f opencard/opt/iso/fs/CardFileSymbolicName.classPK
   2.\     .            h opencard/opt/iso/fs/CardFilePartialAppID.classPK
   1.\"PЭ  K  /           Ei opencard/opt/iso/fs/CardFilePathComponent.classPK
   1.\Z¿   @  &           Go opencard/opt/iso/fs/CardFileInfo.classPK
   1.\+߶&
  $  "           up opencard/opt/iso/fs/CardFile.classPK
   1.\  P  /           z opencard/opt/iso/fs/FileAccessCardService.classPK
   2.\VS  i  -           | opencard/opt/iso/fs/CardFileShortFileID.classPK
   1.\o<
    &            opencard/opt/iso/fs/CardFilePath.classPK
   1.\_}    )           M opencard/opt/iso/fs/CardIOException.classPK
   1.\Ha    (            opencard/opt/iso/fs/CardFilePath$1.classPK
   1.\                     An opencard/opt/terminal/PK
   1.\C      +            opencard/opt/terminal/TerminalCommand.classPK
   2.\                     A opencard/opt/service/PK
   2.\]~0  (  A           Δ opencard/opt/service/CardServiceInsufficientMemoryException.classPK
   1.\{,  (  A           ] opencard/opt/service/CardServiceObjectNotAvailableException.classPK
   2.\37  6  A            opencard/opt/service/CardServiceUnexpectedResponseException.classPK
   2.\}4  *  =           ~ opencard/opt/service/CardServiceInvalidCommandException.classPK
   2.\h0  -  A           
 opencard/opt/service/CardServiceMissingCredentialsException.classPK
   2.\	4  8  C            opencard/opt/service/CardServiceMissingAuthorizationException.classPK
   1.\v"     /           1 opencard/opt/service/CardServiceInterface.classPK
   1.\c*  "  ?           / opencard/opt/service/CardServiceResourceNotFoundException.classPK
   2.\ZK  <  2            opencard/opt/service/OCF11CardServiceFactory.classPK
   2.\                     A opencard/opt/applet/PK
   1.\g    $           ? opencard/opt/applet/AppletInfo.classPK
   1.\ˀV]    "            opencard/opt/applet/AppletID.classPK
   2.\  
  +            opencard/opt/applet/ISOAppletSelector.classPK
   1.\zc6}  F              opencard/opt/applet/ID.classPK
   2.\ˡ
    %           ޳ opencard/opt/applet/AppletProxy.classPK
   1.\M	  X  0           Ҹ opencard/opt/applet/BasicAppletCardService.classPK
   1.\NUJ   y  (            opencard/opt/applet/AppletSelector.classPK
   1.\Nd   E  %            opencard/opt/applet/AppletState.classPK
   1.\wq    #           C opencard/opt/applet/CardState.classPK
   1.\                     A opencard/opt/signature/PK
   1.\Wp	/  e  5           , opencard/opt/signature/KeyGenerationCardService.classPK
   1.\bN3_    1            opencard/opt/signature/SignatureCardService.classPK
   1.\                     A\ opencard/opt/security/PK
   1.\/xu      "            opencard/opt/security/KeyRef.classPK
   1.\U)5    *           G opencard/opt/security/CHVCardService.classPK
   1.\ߡb      )            opencard/opt/security/PrivateKeyRef.classPK
   1.\6/    +           y opencard/opt/security/CredentialStore.classPK
   1.\q      (            opencard/opt/security/SecretKeyRef.classPK
   1.\N      (            opencard/opt/security/PublicKeyRef.classPK
   1.\=`H   6  )            opencard/opt/security/SecureService.classPK
   1.\!]l      *            opencard/opt/security/SecurityDomain.classPK
   1.\m   {   &           Y opencard/opt/security/Credential.classPK
   1.\Km=  <  )           
 opencard/opt/security/CredentialBag.classPK
   2.\                     A opencard/opt/util/PK
   2.\Es    +            opencard/opt/util/PassThruCardService.classPK
   2.\x[    2           | opencard/opt/util/OpenCardPropertyFileLoader.classPK
   2.\S_    2           ' opencard/opt/util/PassThruCardServiceFactory.classPK
   2.\ɱ!9                [ opencard/opt/util/TLV.classPK
   1.\fC   `  %            opencard/opt/util/APDUInterface.classPK
   1.\YK]  .              opencard/opt/util/Tag.classPK
   2.\                     A? opencard/core/PK
   2.\F    %           m opencard/core/OpenCardConstants.classPK
   1.\g\  r  %             opencard/core/OpenCardException.classPK
   2.\                     AS opencard/core/terminal/PK
   1.\
  	  !            opencard/core/terminal/APDU.classPK
   1.\x  {  !            opencard/core/terminal/Slot.classPK
   1.\פ8e  N  2           & opencard/core/terminal/CardTerminalIOControl.classPK
   1.\Eu:  q  2           
 opencard/core/terminal/TerminalInitException.classPK
   1.\?    )           e opencard/core/terminal/ResponseAPDU.classPK
   1.\>\     :            opencard/core/terminal/ExtendedVerifiedAPDUInterface.classPK
   1.\[f    #            opencard/core/terminal/CardID.classPK
   1.\Ef    8            opencard/core/terminal/InvalidSlotChannelException.classPK
   1.\}]uG	  U  1           Q opencard/core/terminal/CardTerminalRegistry.classPK
   1.\:r      %           % opencard/core/terminal/Observer.classPK
   2.\R_  ^  5           & opencard/core/terminal/TerminalTimeoutException.classPK
   2.\Cib  %  4           ( opencard/core/terminal/CardNotPresentException.classPK
   1.\	ݸ  e  (           <* opencard/core/terminal/CommandAPDU.classPK
   1.\;tH    '           m, opencard/core/terminal/CHVControl.classPK
   1.\  p'  )           . opencard/core/terminal/CardTerminal.classPK
   1.\;%    (           I? opencard/core/terminal/SlotChannel.classPK
   2.\nw
    '           sF opencard/core/terminal/CHVEncoder.classPK
   2.\o    2           G opencard/core/terminal/ScriptFailedException.classPK
   1.\W=  '  2           J opencard/core/terminal/CardTerminalIOBlender.classPK
   1.\69  @  0           L opencard/core/terminal/CardTerminalFactory.classPK
   1.\vkx    2           M opencard/core/terminal/CardTerminalException.classPK
   2.\C    8           `P opencard/core/terminal/CommunicationErrorException.classPK
   1.\   M  2           R opencard/core/terminal/VerifiedAPDUInterface.classPK
   1.\솺      %           S opencard/core/terminal/Pollable.classPK
   2.\                     AT opencard/core/service/PK
   1.\)ы      %           T opencard/core/service/CHVDialog.classPK
   2.\<+  )  /           U opencard/core/service/CardServiceRegistry.classPK
   1.\J?&    ?           g opencard/core/service/CardServiceOperationFailedException.classPK
   1.\:@%  
  5           "i opencard/core/service/CardServiceUsageException.classPK
   1.\VB'    >           j opencard/core/service/CardServiceImplementationException.classPK
   1.\  8  %           l opencard/core/service/SmartCard.classPK
   1.\z~5  !  0           ~ opencard/core/service/CardServiceScheduler.classPK
   2.\  $  $            opencard/core/service/CHVUtils.classPK
   1.\`	    '           ϙ opencard/core/service/CardRequest.classPK
   1.\f.    9            opencard/core/service/CardServiceInabilityException.classPK
   1.\̅d    0           r opencard/core/service/CardServiceException.classPK
   1.\@vc-    7           $ opencard/core/service/InvalidCardChannelException.classPK
   2.\ f-  
  &            opencard/core/service/CardWaiter.classPK
   1.\.ɵ?	    '            opencard/core/service/CardChannel.classPK
   1.\Ѥ6%    7           A opencard/core/service/CardServiceRuntimeException.classPK
   2.\v,  )  @            opencard/core/service/CardServiceInvalidParameterException.classPK
   1.\^q*  (  A           E opencard/core/service/CardServiceInvalidCredentialException.classPK
   1.\6  T  $           λ opencard/core/service/CardType.classPK
   1.\W      (           ߽ opencard/core/service/CardIDFilter.classPK
   2.\<      5            opencard/core/service/PrimaryCardServiceFactory.classPK
   1.\ܒ  
  .            opencard/core/service/CardServiceFactory.classPK
   1.\  R  '            opencard/core/service/CardService.classPK
   1.\    ,           2 opencard/core/OpenCardRuntimeException.classPK
   2.\                     A opencard/core/util/PK
   2.\UO~    "            opencard/core/util/HexString.classPK
   1.\dg     #            opencard/core/util/APDUTracer.classPK
   2.\a
i   
  6            opencard/core/util/OpenCardConfigurationProvider.classPK
   2.\  
  (            opencard/core/util/SLF4JAPDUTracer.classPK
   2.\yV  
  %            opencard/core/util/SystemAccess.classPK
   2.\0	    &            opencard/core/util/APDUFormatter.classPK
   1.\QqP7    9           / opencard/core/util/OpenCardPropertyLoadingException.classPK
   2.\                     A opencard/core/event/PK
   1.\s	    '            opencard/core/event/OpenCardEvent.classPK
   2.\QVj    (           ? opencard/core/event/EventGenerator.classPK
   1.\bQ  l  +            opencard/core/event/CardTerminalEvent.classPK
   1.\[#1   E  $           N opencard/core/event/CTListener.classPK    ^^X  e    PK  *D:U              META-INF/MANIFEST.MF  W&z#苙	^ ! 	TzK Usnڔ4+W,):e)J?M7ubG_ji[[#vie
?&_]߱oKB#kkpls:g/$v?8[a&Cimub0^_D
ym((J[FR1rmZTɆ󽳿2O(?FvæJnáom8{S+.<lc=["vEgUC?_؍U>m>Ɠ$vlg3(%sm}#1&ZƥQL
~5'7,N~޹H{1sR7y6'Kc}nYxŇ~7.Ҳ6'WœTȩzt\=C[nO#g??9
|o*orz,)޾pk}w烡o<?q֏8Q<386mo>3'$Z >O1 Nۛ<dO)\úSyh5oK2vui46>o~N4`d?SxoLU8qu;-AN+xd[?}U=`C`֨0'VϬ=o^es3~ΰ

Fct2p4z_iv-^[~}Lx.S}D{X?NwYFS=SUQ>Aܔ/{`zX7)_(	m;~Wĥ٫^D0(>'ާ}	rۚfnOvoڿu
It~~ wƸ˩L1mAmt#3gƱ?h}wٓsGG6j6].oAɏo
^ǻ}O]:ݣ	M"_zB3]o=tC?L8Vyj_y73q`>_u>
n|1ߍw<5&zW/OmVD/xŻxaWWޏķ_F7xL9&ﮆ_ƫ#u6ѧֈřOpǁ
#y

Mgb|ߟ!?OpE0BWvyv_0/zi+ba(o?9{Z|&GfcӸ:{~"
:?좬E}~ϷS,gF{,:ʇ+ыhkSzF|9^=twUh<gΛO}oyk>l/.nU_qO49LzTߡT} #yXW$B=n$";3}ǫw|gb5=<kwy%U`=h81צ7`$ʒs?G\Da_ƶutF V$UO
v[j|Em[Jآ>o'8^4a|wndgg}+[ݿ"W"UI~ʗI|	Tri{?v}3f*/?Z\)ڼa1Fo{;_ءyw]d|HÛ2F|~~k\&C7}:>e'GQWH%~1O_(!~)wsqߵĤG=QD{|6tt4(ZL!;E엷aD_ٯ?_-ױKGURy)vx#UFmC~xmJ4ziO2?4Z]SQQJķfz yy7ji
O࿇>Ah @@d9RKr'"TBduq6LvyI
a?1n{@/Dr7cy_QCN1V>
AoiNQ}lyρ%(*`;cb`(SW_b}Ku~dUHٜ,F12^.Bc,kb1 n Ml&^}KJӺѪNÉ6.h4ڨ,EV,>-1"AlS	
[ë\;$K	jV],)낄}PP=Cj=sԁCrlKD:5Ӛe.ؙה}A>,i䥡jۭ79r\`ƉhFeh3co$"c"*lX>c;P|5LqN.>% Q5WU~RndlFqWGZ
y⬣9\٦wS3r ec#WdZ8zj4Ƶ;R{i-
>嬝^+cgg ;a-#mN? wG2vpvKc?5wMHuQ"P^'Tggz&G?oh/9*_GDDmW^ޫ> uEO&s6# /fok'7P_Myb,ޥ7i#$=dnL2E#=;,LCb^5ڡmh6.XE;F^AQ8j%,{{gw2g Jcc,>C
d80QjZaoVD/w¯JT6p!NBSeW;\IPV&9
5
 ܈xysZFD)IXU_hVN(䤫63ŞㄏQr9m#RgKS'uᢨtyR9I*;kclˆq\He;n1tgYIߤDy\,N~ԷxyYxá1xY8eӣ,3/$a2s J71<Yg/)E0UG~@y |y?q$w3rA/"U>{Z9hǐQhޜKu89]?e;PbV՟7^CGvmq&8403``.pr>]֏qwC*Ms!ϯf1\dlE3	0n*KG{8
(ޘ
#h$LFi'0/c(Yg$xqfbB]NN_43*p84I7"i?|@f$4#667\3"79عe0|f4@n7@1zHB1u{U\ʤ4{|+Uv@r1Z#[Ñm'/uSz3Ҹ
;4ǿ,zw\@#!A 7H8NǌXd=DdI^	"¯.|a;pꇹ4i|MȈoWgJ*40 #y.KC:~pۗji?H);M'BШlMC8tm˴ "U}Ǘ:F6D'ⓥ
!Z<2 G]#O'"7#`S_844ߚܺ.OvqA:#I_&űIovxgmo-]Gn{nzHd`ǙNaMyZ;ת 4Ь_M]F}1Grɺ
V*FgGJgrC燐@ݠhV]-:CғlH3]&
YfݫI݉h1Բ :C[	U}C!ź'qZ=vEU^IG	rAjKYơaplL{dj8af]9j@iuim1|f&=Łʖnbdn!,5POC0S*4闡Y0f̚Ki-ŕ̊!؉G==L9ndu\WWぷLWKĢҝ9rՄ&o֤x}15ΟO"Xlqx\XVul"Y.dW}%ӷv\@jZ2mh&)P5OΖIg^tҶ?c?%rTlrmzg^CHO˫rUc
K]j-%uYZ I`VA"	4sτ3~mVѩi$icgZgEg_Uj! 8gѱ[j/g8cd،+2>2PcP{6B3f;0y]rUvOq8x/n*c}4D˭)^(c'-\µ7.)ȕInO<9x\fo0|ii;ᦼ#ZPNccPos p6|'{p͢[!Nކ9Ȃ<b/WLjOZ.:ۮfb-%4<׮!UՖ?u2RM,>\e%<b,n% ݜ6keYjO* UGMFy@7+s,"î9vdб&-[H]{O@K{ImB&ߦJ"H9P69^@`"f`v8zng zKzqs hL홃1/PzYP8>n]x:On8	-R;j
m jl_}	 ~5,-~{
糘ډBñvTv*T xtq
6pRu6lTnSunx&.F?'{5_]/i*"6?!R&9H1ɌOAq,nܝ._
%	^7qps(?;t2ș)<[	"]nq\^{
|ҘV)A"_ylF2	u%"/JנvZـ;ؿiDa]ƹI"~g|V(khNf!c.숄.ZX:0z#;)tsC/Րch
/^5v̛Kb#u)D e\Vq6
Pf@cX']^A.VW
.f"ut9_1-(.ZBU .[*c]§  ^hDl$A#."k:֧8q9a^5ZqjX=HaVИ2Y.a:\w6?h(&śQ
-$\|vdy0eh7rhjV@J3pͬw=8!(pkѡ]U|æ|2;'-(*R^$#A7i,:+/;dYK3+WB&;Ї|x&C=ǔ4
]W$8f-9XNA`OͬukL8[TV#V"hK,IzRreiNiWC93wNbt:T`%^ùy:}r"Y1J'AWb_5%_s]Kg3,~/	|<ʹ.[kglf*9㺽G[CqZ7oC>t;ȋ8H,R
-L|n{x(^׋${9^zE6
*JEJc,f$3|3vA--Α,Yj-n5|"W Rܹc$滓BȾ pOtgыl3u-#;Be0{ٔ~	&y,S]
65[89.AmO-u,\>7*P%-Y[b|vLP-YVݙͧS/=4~Fj':N6d !jiPv_Hsh6)n~haWm26h8 n}$]Ek+3}z؜5,ϓ;ίHј:&]p]15*щO}ExR
dj&5
Y^QtW38L|	3m\.Qb:3աw=C6𹤟M5I@3_/!+['؋9z^Kݴk ժ|y_`smHH Wg-<a2 褝Ml3ix鍷q1Yr;fy
	;W"X)<dDt,?:/qsg
>SF6N7>h.@Z=뙊(*5aIlyuomuӠLڵvu5\FWk #8o
r
bXԮXOcq!n}>O߬;
PztRwچhXf}#+$2"צT{CYq0{ ҍco^%E'h
>W+mEZXvfu:)Ry"ؘf57ARd}wNJ]79듬?VӺGIR]*db~>s)VKu~Е":Gʮvޒ>I~~	.3nhČ[te)TCwqh5t//7a'CQizmbF_WK!#Y/{?r(d/0w_Ԝi..~a3ښF3 ڮB΄_
GȦ]^=6v
/zP8J&M-x$ݨ+2 eBc7Ϊ V%^NF6idf;m>ݻ`Wjyg
ӆ\N?mg6zpɸzRrO'}L;֨|1T,D :j.l&|i$Sv>*^˟ØכBBJFD}5+xc&	.Q{AbåD6]+[>|2| !g pXruyn8ЎĪחpa6-޶ܮSzki+.ͱZ>@3>x~ps].czR&-Ir>" du,q&PРR8CڬcXwP1X2`K Xv-r<ІuL	h5G_Uo|R1oUYUҕ\rEe!$G9IIw3F=VEwE`g#<"-ݯa~t}?=KVvKa)
`V%v]pQ&
fC"Z;	#Z|Ew|~9C4*[SY(6U
??;+.NhQ4ܐKٲ-"6eXN&rb\8"Ǩ|vSJjthhIgj\s+6g+R\iv]OR6|/:,RP<qW 1Kv%]ꠀmE<0*inVtǬ`{8/4o5x*W:]Q_I|2#TƏ~nP.Dj!R)I|cwnܮj|DKR%i߭=)<IRqޛ
sewNVz~Dԇ]jsYn\5k4Ly$s.z/.7̺=h2xi($Jg| O/z)Uz6>XZ(bE^tN=
FE϶_ݹzp
7Γ4gjp3K8;nQ^//'!K>osx繑R\֦eZ/f'wC~)	xP!rI^4-@Nm_b#W_tɟcڷ-	9g^$60 m	JޯzDZdUgd´LyW)t'k P{;V0{{hg"=& 瘽F"9l=7/MZH@WKJhnA8ebM\mT5/w쇏Aj (mÒ;45l`den1+D1Pmt꣹NTf^dS:h*^tqTv.;mmقD*d0L~'`vA&ޗK,$ Г8ƢKGuR| R
>zcUW0LvEw̠i脪uF7cDVoI/cSZM,㤦 -q;^+Gԗ!nzͨ}zK4%s.C}Jt<Z=ӭ<wx%3()GGi^N F.4,vU,.#g"K@[O5
Mo+QBi<l{6zN(3͌e2*5ol3bhYipi.9EN)ʙ8y 1pMnDq'/DCwI!-s)/S%6}X"0kt1k:H]I}lm+"Xwt<96HHξI c]\
|X/lknŜ?eVV띧'
tnHUҊ3&K1Gm%鼓y!bSx)>jBjΉ@b0gH)צ5Py(Lu*J!Uc֠4Z
L2&jghρAN¨f5Wa 9
)̼az;t~`xnd8<5DigZ*vXX'ya(_(Ӑڟ
d@Xv(Z/tM $g#73H5x4Nf2)" yG׋_ф`}z2[>>]YVsx8.	)Zغg:v9{Bh{­[LOn'QiMm痌=LZy[7_f^-Hٲ|x+zx
ЁS?.|,\^Y>}YЯ:g@do1Ieu{-Z狑.HhzN^{r5wAsV:1He-O {?F/磘l\bf魀Ml]x aZRv}6i{1f9Grv8krPFMV< RrU: )mFB6Ƅ& a21; axmC8z:Kcr
".(+a knyC7?
=ܽDVEv{4$5WO	rV&PH?1`;M<)ZpޙիBUQN6U@<NPk^qxv.QSY1+겈љ}+Sx2oy@L}GiV=Δ
Dx;CDՆ(GnʘHezM}t-O6;0:׆zi !R9W}TĲR<.sRGDKY
j'Xض.f|>CMv%,}zĳ^D-%Iߝl(%[
GmqX<L5,=@9s
A Bګyg/xs\m}
:<"<֗:b#:̂SsP~`R2	-jopfN4~[}qeϸbSW/kQ<6_,upHLB{EJiuWlS[_`	'rK߼rW63ׇ}<,R}gHLիre9&zj	%mEB>Xg#n/?UWuL^y\QZGiYµNWe	Xe-oy0 Bʢ
V1ꕬ+M԰AWw\j=@Xx?uFzp-mr#AVmbpSÃȶ^)Ed=Ϋ GsUH8-2%za.vTHb
p+R6S_"w~lhrrVBn~uI̅{tr֐4_<HXH^ۈ[Z%@	ݰzNpt׮
ECs`Ko`Q.ݫF&ѴY[ɛmQϋ.\/\!qtgB_(4~=+Ґ¼I$3;B/ZwvzuRk^ez/bx^ŕR~YPo:RD4?onٯOP`Z-c j/@]@~Xr^
&^I3Fsne ))r6*CEI9nDaͭB6LH^i8>k#\`Q%HnZ,W$/ܞ0
+8*x|G6N#Elea;SP="nro'!tf116]f\Uq-hL瀻޽n钳mDc1Tp$m;W
̾hMy(5޽ĕżރ$*K;-J=P):ƞ/R{~߯?'R&tV9ec2te1qmgڍA
D̓;0Ɲ	tzb@QYеxC	\+{l^X?TWQحM+$BD\/hXAб61"Tۗϫu6&{"-{/)ӭ붵}^0gIqS48+)P	S^/8H}tV$zImbɇPv

n1n]\]Sv&Z=r,v3ϔcOY$tWרu[sA]hEW
]2uІv=.,Ig͟T\5xyn~&:\XTM֪Vk]ĀSYa쉟[}0a&=jXupzG %Q2o;VPeɴs9׳z:;-ʕy<׍9EѮ2#wp]~&n
UDZ:?wynXڃp4!_y<w?,XaS.^K}I[{$?_úsa{pl#=r{ULgվxb'd^/`C!rm
pS%SA]b͗bB.M>!b	ƇjK\Oji@qaXBҥL\5~3tܞc@6;Zhe8$V![HaP~my%+&.)ڀ9&Wz[:rNz=}`Y9x7[6W+jGy=kw>ɫ`ԸfQʲ<uN!q$%jzgwvg`[s0;K+s혮䰻#Qp2J`Pp:/jx$waCU靗coo<m-=]R	颞S3E!O@;D'\ΛkKY ?qPҢRbk,v
4sG~ u̫	bL®f $8u #k<iyТF|ܞL劂LGg[rB8^K67WR`3vꚖ4En(I6(vg.>SADǢś\3~k:CRgĪ;Y
FpxoJ/d^
=>Yrx\IN>αWF9ּt0E6
*
X$yx
hv==?L	[uٲTe՝ `m	C{q>euM%[={vEt-Vݤ5)pCrcv*'F)Oq#m0C4 eu%=`?;t\r	f#{}*m	8-b`l㦇g2Reic.6 Su4$88ϥߋ[>C @
0k%Y3	Sv< P
:WOnl6g
x_}UY@HIدMEQ}|[F[ B,CDhފB0\
O>fu	ʯёئolB	3_^	pjD %r@~OF{{`vo̻=Z1^Ku?Kn5+<:+&Pċ(u?r~%t&]`jYK}[oR*"1C>K5=84G .Q)_Fe@kVNݍޏ쫨8ɥ,
(>._+CFmHdpݯ
	vȑ?d.'ax=Jlӊ~J}/}/ fj8hj븚f%)*FY[LJ:C:d՜z霘aǳb3{Hd~:a5/q'`8w=QzcBl'g][õk >;[k5h!wk*`u4PLdn{>Yi˕b:!F&J;
1ctp8.X6u
kɗLV_LA\k,:^]OkRzIuNW&Kt[8g"]64ŝU(
P13?uE
"pXB@7Y
EM
Z:Aڂq,/ex]8O\ǳi}N"*:!,ˢ~U#|N%NWJfƩ{9[A[hQiߘ Ŧ+xKO,f@z+Ay	;:uRp+ғ^Y"@/\3eg)dƹ~p}jKAhp\NlL`EYkR[b
1Ưty|XFh: E8$`d˵IJy]V/~m\-xKhdZZg4M+
j[T7jh%sG׳Xmp] m(2KU<4Qc!pyHHx<IRWZ.Yڊk޴)LNV2蝢g]B@^])C4K[9;	?z/SKXr>3
9ﰅxp#Rj2zW=3>SkJ|"bm|"FgRg3~|۬͛륻Ky+i}^&C+0%Sdq2qxggU+6o/ͮQܪmh[_;i cOҺܸϸmxYub3`3]/lsLd\(K`3L+;[#4GaV}aO"Xs썓xEXH6kCODōT[!Ty:˥!03.=ćo2zO;^7*eTV4JZ*n
2iMgܖvkʞu@$["Eg=PZw_ޯ 
bc$>Y\̂BAm݌vB/dMN
FoC-9pD`-#t,`s̓M?EQL6)-.{]Mc'VbRۃ)Lz\mM=V1eh
3%!$=݃]}d@=o lÉ"c\4o{C!*MjUŵ!KA7hr޸{z9lA?E/r^9ޗx?;P|̱9_OQ\yv=v,[t20ti^Q1#[JGTQ(4/8ӏlS6YZ-I&vx͵o`C=v
-g9IlscI[ܮQ`[c,MSWC5u`IX꧈fb7O'),51XA;1i5yjʫͱ''woO=3
EEm挱"FӪiY"PUz}FŞ?ٽɃVd3K-X}:bv	l=m6V4`]޺W<[njbY+=5ۅZ4 СZO|*?35-t*&JI+%!& ]Ʌi>Ǡ>lHAeݸBxj Ð#3ޣ.A: bJD?h[׫.yi<d1)29Qp(ە5zή0q,8*mT\@gPNQ^yPRzۗL.NiA{oѭSbCw(}F1ҌWdK1K\l!0KǂL:9ollϟGvr 2}nWx	vƹWדu
Úpw.T`K.g9DCHtAG!6<"b]qSh*QxtoY#^>63M*Z*@r<N^J;mZJqU ^A	b]̚%;L8om	o>PN?ð
 aU9NnkR`پXK7]mG`(l؁EP=!
] wFlds!waxտ>tMo KӤ9]讍l`ߡ1T)XߔeMKl?{b[BU4܅oLJ1t٫YI&nJh%KI8% EgNePQ'otbkBGgqqvրh,Xjۇ1;<EA@3%9
~?:Lrڮ>-gmЫybĄPu_zhϧ(c^S6[$ǔx2TCMt:B4"SW~y~>Ƚ[W1p	7@*=D|<1\djPX{Zg}fn= NKyNs
mD7 gz<
oM GErw`hݟ>ĖnR ^3<@c1HuaMRϗi?e:Eږs}[>鈤F'"Fk*'gy,(SvP/nc@>ҮYE!xUjL9¤vӫEkʛ!Ħ.F9SeF=W&QЛ<<GэmNW jlg[d&չ$A4˩{>e>=/	ף3;%\ 
Pur쑮<{&'YWDUu2tϊO|
2(Lk
@ZDLmlR42ϬK9nO!FdE\tUNbY,\ִ3AWdlhn5ek6=k/s|eȐf0n
l*?[[kkXs[E_f+),'b+e˵$9x=p<9)i\\$zb;GkN&!<%N;vn˰fL\wK/7V+E4$!e"T""4*`ƞw0?5ji'ԥ@"v:^Dnmv2{IXAvNhm*]U@]zȔtAMKB^[vyg>mLt%uOc[^<J/"DTI(&5l,kblsCm鵜C~懘߯c]6GIf^[>~
RgngV1X]СBmpt/~DWGNi%U'
 d8!ˁm
n$dOlwˬ4\X,ómӜԻ,פ+u#ss;{ _r 
A

jm;⣳C(GEmuLPhEja90n
تZHˮ*cm{*6_qIxqnɋq(vb=@Lԍ9# Ds0H1Aż^YȆHi#|d4
.JK]DѴ뼛6[HWK7^Ȭa:cꞶ}LM:U;rP5\k쬚}QdÉPu'6t>gw=3w38XmUl+"l&4_i7yZIoеm;݇[
qP=l)70'U#Ȭu%F
W-dp}G2LqU'>JHZ_WZ]@Ϙߥ0iBrI~wBS$I\6S!!GK׋!L=O{H&ư8;!ù܉_vwRI뭱lS~	MF6e։,#BޱF=)k)e?7@﷞&-yr;ZCݏ8h{/ǋf\Y>峿GTȜIx㫋,z/,ڡu<GlV׉47C>n
^G
ՉS'w!reO9 w%|~.ǷTGkY8 )0"&([=$]-g2?d!	S\܄lC{ϒb A!5>%@=V	F(]
7=+ZTp<ϿՏfM{/xqqj2;E&$/?@[
zlfy
+Wvꕧ3BWÊ3뛰U;#R%~Wǅ"msѼ )]pFwvo_cxI t,<i}HPr=$RuӅm@S]Acuv%D?A$/SGW3>{aHL"vmߋ8v=pINg8Lng݂;OMD8yƨGklk,ym'*		^~Asc3{*wrw;5SS=S6@7?.'Zt?g>58$]!.]E@68/TA!80Fm*cWT\P{4"cD▧&?:n) %/A,KE@VvnGTXIt<9x[^OC>7t?_i*&ɓFtP(o6iIYi\^Fb<OZaٔu.9X'kԈJ1GB)ੱYθ>ZXQ>b7kxODKt]2Q6b2mUrw$pߧywz
BWO  FKNQ)۟_~i!uI)>~Bʮǃ|Ee:\q#Wǵk <R׿)^\rtm>SQHb.A&2ա N<	}=`y>uyVO&kgrw>O7-F}I_su](u&@t9Mg1~WCWo+%IRhEi=m졞-c̽uf.8'qɢM[^v9~qz1#1YG4ŅVi6A^řCt"1նjACeT7*E.ﵯi*Pd{a^`,s[VН#b~85zX[E&{!m7R ue߆3R>AޔUݝD3;Xo×//g/\v

nSr=z }uؾJ-2rpʴhd꾬fya	py$éBϬMHGT
G,ݒޅ_kh2쐧4ꉽʵ_<=0Dru_phֿ"46v>6(^y)4$].eTŭ [~Zfp6wۆ`K8p+KZndw,bEt8#onޣ4j WWo1
q[TI=Wb$ObHc"Ȑ*24Vf1oyH:o$Āczld-%W$C R;5/t'"ԿpoLu<XknҚĽSXCZi#{/7zU(>&3QK.mp/t@S3N>eSO|ܟAuo WUh3\(nFϔx<IJ=ig٪"w@{ȹ\oG00rnVJD:mv-ҙ,OwE8.ܝ0=tv?)̤ ^,$S~~rA]+bE y
}3ΐҶ+-84(
kWv)~aϕȞAl렼:G'V״Lq<~
/vfIo7;$pM^IIq5g<ۺ0_ \ȋBTؑwi.EQTN}>֩
,ی쯩>?{C
{lۮOC|\KrjS(9q~	*Ԭ.>WC{ĞI0xVKGl
!L>oG&(2;\r't;w[̐.cٮO[w(|F8|>Ez.^?ݵ}:⪓T~-n#2
لiF
) 3Rl9E`}!/}rXN)@͙Ȣ`N&HY7iF#`kY(SxcyB8o<^C}%Oӣ-Czr
^ΛZH,:š_ggr)u?.8MC~D8pI_ӗ3NKנYJJ'H5G@JЋ1ݱ:?wWigq~1T&-r4"0Um};_8PŷC_<MAqDwEYʋ \bܙ57<>6ө%@^j34x>IgO p.P|aafy<؏ L<K"tgM:zզwֿmRhܞXM|2ˁ`w"|0Eÿt
XM-6+܀75F<4cQw ƶ,DB/m뾄y~<uD$X0(ť"}o*_egoRs]p=|+|$̊vd>2*v A Ń|jϬ|CЭ.0?2{Ɠi{xQ6A%Ow%K({RJ	u/-p(3wspwi@c83	AQ^Op_=\Rm46	FwЭvufjR☎(>Vq448e@6u	h +M]_Jv9>]yH<R7wp_gW_c>z5	fzZYԽedÛv݊[oH
OeSOu
 }_ef{]M&Y'RȾ[WxQzy[exOW9ix
>"NE7䘁RQ11e=ل'
rИ\⳪Hi݁Ebe_	د@Zww'՘.q]pÑ[ (ߒ$b	ܬri6|:1J֟+L
otݐy](%(C=39xWgn9ͶebZvJY?mY36tzƩ4R~'	Zk߃i`Hfo;h}ua˧osy}G0M0zEf
UrܳЦQo	s{)}},ϩjT7q*LjIc[wׇ1`Ȇ46acՒLcx%}<Dտ&~o3阹C|\Щv;倈ZGoUloxUaz	ai9NgϾbÈh}k-Kk x@1Bܔ1'nش\=@nacxV;rxıHD?Jk?wIF^|py<>Iri e[X3s_B I0޹c	7\m]Z~>~ѹ枠>#<*YtQ%;f!mN@VyL;*Bk}t4w{WWaD@U*YbfiGu}GZZ	3d"b	~P|.?m7*-V%߱W:	[6)2zX-2~oG)'*8vRRNf\tcrXWe]@ٗg{oM韁}rf*$9g2Tl,&S-oa77T^lY^DUvlRHrhKO82=ۜONORPE{N.DEby]933`nb>M_9a/y/$rC)lRf8Zd<Ҝ}Z[[-T5s;\0g&Wz37xu#za1f)[&xl-)KcԚJ3M§<be Dkǂ:q%jeQH`ˌ^(%.x%<zVT_`=%:_tOlsog\I+OǙe/=eϨ1pgO@8zuw9{UH	6栗A7VrnL`o9h_7l2m&>]XaS{;TtwG{TAC,X $ȅO*\ a'	EUϞcRgMŉ@Yƥrs=EAg5{ΟB?`ߏX0fI}7W0宻^QΗ6q~"sh1-'Jn.:dkv.1@ꀳgnhv#f#@.(.timW:otu	2Q@xQjFʺɥ+1N
I<0Qǣ!	5=KzMN>-f,*cP"I~zuC<ϻ#n?I+ci\=h;NZf2-	ۀC^o#P탼z=UNP,ZS{^,C@0hcV;iЄesާldTkZeAo,x n6ANc'O,/y$-z>dZk}-1-hD_T=`۾	Z棼bB
kgȸq͘V&v/0KԱUFNʯn_Z_Uܡ; 8x;tW6H'Dlʛ7m?6qѷ!zZ+qiA㈱k=`eJ)'kvl)SXFONw~y6hWٍ3GMzK>|^2]
Dϰ=(/E]o$_	Ȅ^wPn̐PتI{+ó;;;#M//>/Yzm|GLd8=uxDc>F$vN܂'6ƏOߜxz[!snkʷ/&co
9wqd.{v;45yB_2LTFCH!f_X|=e'MX,dvItI{ =0CuY|9GMe7+"8gJEqnW%vHnu`פiOf!oy6|(+V;yH91v[Q{JX{/S3xS:SrsWi(c[xٓoԝ<1zP1a)9gҁW!99*#f =NQ[5Qtme_;y+dd/Af)|USCQņ59)NZ >icK'3G5<xX7P{#|y8LdHgL6ABb7N)XwmLMt縋" B^xfwCX)V
x2&r|Q#N>bTw5KǂlzMY>wnܵxo#  -I
NAאWfB+d=bPwu%3	c̈́^s	߳|	6!}ɎiµՖ-Y,
_þpCAZx>(H
8d! #4kaeƄkjbN.U)s0*la5v|$7,T:EP۬S(jxGO?৒Z͂
hA02(މ#$dm	t}?$E) UǱka_/М4*[{	.4(9,]sۀJ,6Z7?5n^֤P<΂G\#kknkVDRG7*Q,	/8w#fwV~dTfxx{DFΖOSM蝝oޅNr]v5Y_{yN5ϴ2̗vzړrwCLL&"H&oy~z$wUOkj<U80/jO%Al'2ad[οZpL>Z6#BoRR%1 šrD;]#UoG+dfaLI\٠@Ţ6bPO<PnGa΁ч<	JLzs;ŴK+o}C"q˓,z\srpW3k~9
Ӣ㤋 cgD/8AڤX{yzQd Wm&6][Jxˣ{H};	:⵻*@EreAeaV[[j*I;nOKW3bFɨSf+'ƶ02!OȡS,{aAZoL>@K`jdu B	 8#/^Dr+	UA Sx尧`*!)nP]5!cf(T%M39_O!lU\]JNq1-sV9?C,{xXnؼ!<ʡM~s xd+[m/7VtPijTsEG^dwO9>Y`RКK@bIx)si#9/F54G*0Pؙ:DƇvZkH:j}Y<Vװqլi#,u+A}a,OY_5	ԩvWa]uouC=
6W k ~ݾSLZc$qf:TbeӢK\KLL4
-s\t!_p=V}AyĴԊ4_On~i2~ŷ
sr(JeWߵ _0qRӡ;-l2w(}FGf<IB7(T{ޢa(Sdu"ǎ`7gF<sY#J}!f,Ro0Ů-xX;Hd0/$m.>a$0a|% rlk֧S%%cs@AM+4n%|<rgki572JC%<P~jQZ.
U'sz9QfwLg5X>X)lc.&TV$,Џ5)7֞J%6>7%ҷK8G*zSQR_6NoӪvTbHԶp4(uBCs
C'؊Ar>F'S\`4N;;#j>rwvgމ)^G{3O1ۥC:'`m砎rc.=\eRJۭ\}j>ܦ" v׾q*&v
`1G/Ww3k~}/NȌzjl*Amq^<xDʋS?Vy+)	aI2]=5*fqL-X);70]^sLP
G2tS!ݖdƻ,ϳ5\r<(૓vUQ.Wy(&
9offǇMNXde~'xYw۟6>䚄$8~av8E'ОE9s<afGF
!Llo≮8nw%!\ɓ1q^Zq242i}3W,^z_9~uzET|/CZߵ|?}	>0W{mp~L1+rm+igc;PRwxA˂Oxrjt\dQZbv~4..a4 _w,K`|AR;Vgy!N7ͳmQޟvGlrһ:T)P*R(e}<_?V?yGg]@2Ktg1O.:ď՞caV#bqV-dNԝ98_Jw[ȣK"ూ{Gd:TKȔ /Ā_3|h49@bWм9:&1ģ:T>\F[JeoF@yoJ$8Á]C*;A5ȍ r7E0\:S##ls5g̍qS]3q:ha{6;GwS<	ʽ{pt3gJr4^=T8ѺHܻGV<yY&բǫIvLʚ=vq	AmcG1A%c87ڑewݡf
Cqlz .gaPkgeBq<Λ
'q#bύb><ymCP@[=o]GxG.Iw\S"r?a:-r@mSQ/ŭĹPbb3oQFd>\wm
e:F׹SptQZ]t;R-#Tgb/P%ώ<1s<A4[Ɏq5#L36"Q	E
8nŰXhu`Oqbyx\ph/+З@'z\gѽf+Dh 
		aC!vL13cqv0S{_iU<8@[<@+xF=I	_}ΧevAA,2ʖ@BUcAW/<J4Atpas,D(%"ro^[}|W6lBY&
{?E;mٿӪi*c]bbhkc&UQ5TZn~o#٠9~EƬg^F|1Obx̄
1Xx	_5|ht)Q<z؁1uLӞ%M=HƄ!dy!}-
B|O0bo6A>l>sQ[W6hq*1gCI5ih<*z5o
_n7lΡD|H	,6/5t#Atڇ|~wHCfI*|9Ă
'[;PLbW8澛|0UZ<[3z+
mBss!cs~ßqjDTM:,=sEBR:WUyH>xzm8^N*&?$6Ow/9! \t	U#.]p{g8n
7pe35|t{B|.o	;i5<BߵHX Oc+-LSdIz\wʓ	UUA
Fpyjv;]$t	W ~f1G|q#ct7>iG㷌M5zv5ߋxu=PB;S(Á\}VihPV/蹜GF@gP)O&XfA."].ҙ
RflѴsVjߤ]O=#7~sGg'DATjhX;I7kLSU"U:+K$żYs+u6xd4wf]\[xBiF'
>i`p?mM/wOT)v#7-_>!7y9zgzAoq\Xq038*˫0:?]	lv:.N0ߩb]ɹKAS|vȫrWt?{ 
'-W~of`dqA {
ZnB/[p/x^<MrMĄIɄ[|18!>'SO[Z0a3!p!QCIdQZ\*>zb["CG" GC ꯕ4z-/nE]n|1307.!r}p)z0EGUoVtoݤTk>|>6#={me瑘fHEO:.Q7I-c^Tuӆ{h46@1Ŀ*<\#~.3.K00ĕXAєVvWvP_ܜ>{AHE{h}e# b;$;~lΏ7g/	5 1i,mZTcz<6Y׊ߟM流5v2`އߖhs6'w2&nnn^]B0Tɺ8Ҭ<**H!'cvU)֓#Sz,x7'qYm\wiEHD1#!E?:p4L~#<]8C*(&m-xT+Ao<is<
Jyd6J<wˈFbӝۻPo5X?7RV_1jO- xɂxyk:{u d{J֯	i,N2OGr?;SJӖ$ny}>N/T2n;ڞΫVoaϤYg68C
431n{Nx7MW%2,/#i	}fߩ*WWSd?qzsbF7.gؕ)1JIA)[VjvPJuA0^w.A
٤DnVhvˢ7g	Qy91g^Ժup W'pK5[ϡ^K5FpUt:=R3HcȽUj_-I-TA'$H&ƝCNat36a\əuK%GlG'2>@{:?>ﰡKLj
4fS)c;x;׊ %GM/$CWD-$1jAvՠզL"߱n%=SFظL`NM*b%hϖfEQ5O
.-+n9/s0e;5kwӎ<$ml=ЬRY
qnӤA]CpfwTqІ65~+Ͼf'M_*ly+2_c[l
%޸sN+!~W;g٩?uxĈ(/(DeM3})`%O)$ha6VU=*с#`)I-1e:tݵ(
'3=+v{J
f$/6V
wp>=NyLeۀN+uëDT1b'r$#}u>8bΓw@Ǆ$D0{ьvtr%=AfdbƐYȌÅ.>uԸlSWH8r%YIU#ՖP9 loHoFoB|$;(NnN
O7fO	Ja8h½a*!b(>Dsn;(^4
 h8>#[ؚ*[MerbA;OUe|UB$\z:Xh;|Sڙ
­ò vkw ()jG"H{y-x~t>7baǻOv3[ wIUJt]7RanR [ROJsh({ibQ׳;X	Bq՗3W
jz[KD"RfszZ݇rq=rAqy"zb$=~g{URfRgZߗ.8rUeSWW `4;!ҘyOk$Ϙ`&f'^r}=ka?'	G8@kהA )C|>xVOkA($:g',x%	VdM[G*M"oSYBCpoBA0dKk`}voG-{JP,=>UG[ȅ?s׻4Yg<SHXg"x,u=zؑsaj-_?!Wl|9Ʃ^!L%9QJ`$W}w"Ln7*Jא%zzpq:/!=}U_qĞs𒩱ZуvCs-H-{8φ[aBXT]`sڽ{;vDRZm_c?}OV9Ԫ8d{ډɇ'yûdE ;	C BZ4҅޽IQ2+C}
hM#4=64$`\oeOvv	0'_;BUvA~*E$ߚzHOe_It|N'
!S6^5|~#ܠ
qC)+>9<}.,mlK8׾]?қ?Owű:50 Q~cH("rPxapڸoloW
Y~b]x:R7vZ1Npz
Wp]""6 =hR\NZ+JܵJfdK&CY\.bT~N'3.@56K O(!3 -h%u
ͽz.!gj_|msҞ<ZK/E])S)8_&5z{z]."~IJ#i}9(Ju9ۃU_#^x0+F"!i
]*oT{pCm胼K)ʌVN
#5nPjh)MQqlh:F'(ɜ'K|
hzRb5i;ϗG)
Ym]V41 [)-B|Gm>~#1|ћ@?7
`` ׄUbzؾ8Aby!W=K|w^M#
meﲓɝ﫳%5i>kx`oj\}TNIATNBR(e:MS5tTWCKâ1q#lMBZ'y/"ȐW5+PI`//.o3PV쏖	]eL˔gVvg'ٟr{a{aK2*]χrz!m=g7/.($ǖD;AfGr KFW1ȡm3e`n;Rr#Tr/eDk_I}nH>+hKbMkGj܁ 11T淖U[wT_H@QpKɝX]nIG[S
MC̈uee=瞤OG rrɶ7SQE<7`<(5{4f%~'Z!vk3ߎ%BxB <ѫzU]_9ɛ4;Z__?80U_gu/|Qlk_fhܞF%v#HU!,' <x.)ұafѦC*&
V$sM%gZlOn8`U?b]_ej( X>|i_# '|b/V?.@GMYA9zi(MTcgӛZ/Ӑ4̚_Tp}+
RYk}a!b{L	7)
8$U7n聗<X=M1Y^vHD<SjF5x0~ixj<UŌv#a{&hjmA{kBG♏@Q;=@%qZ5ܤr9q:X3M<)r"1hgt̝Oj=*]c!4>+gF@9AYjartq){xCg{0<eb
ޭHu=GdQVb>y؊EL!7XWFH6
apnOGD+d76hዪ*W@_"
fIX]2&4;v">%w?ʠ.O\!'yZ#b4LY셑ob) ?׈qyni˧iŖV[I3gjtA()_۝[9ԥ"_9?Qb"JE2>U~Io@T
ԴZ>N= EB!rPw柠 S8!r:fW~
fqJIEuTgrj܁C^&3b^B} qA:)	~<lF<ti_2"j(#u<޳j(
P|9LA+bftU-v6\eblnFo
Nu¬*`S*+ڽ']!O{ggxi82pk8VEE$Ppחso$#wΪqaf"g߆:f<19@_0N=F\[=
 n^\.m<]}Uw<6N|ɴ1Mm>񞘖yG?L-lP4dچa3@-UUI"+:.7E~{X7ަ	cE؄F
(e-񌪣زA2'y^xcV&&/\<[Ofrs&g]çԩKw#{ 풶7v'C|OΣ`vEe.,@5T1eZ*~yzmWK=c~B 끝^U0I^%b+³8 NG?Gb0sK͞G[#x`co%._7R<or5c_cFkynwn >e 
jEt/rTAN/+ ҙ/J$diQ+e8:'9N#2eN>o遬^7{كZŃ5I CY^o`A8ElWa
uI{E A~#C3ls4+Ty`v{ş5Xϋ|kװRezQqg!6\bE{BR~+ ]	ٻN[|dbPN'_0!eWi@Mmp"إ_ƭm83GsIGo.8лRe
uۧ"<\M?E>X&F:-"yyt2ʒR \RI(+'=ϛOfĀVUZh
>d(6v8C5
[2j1dZ3;0=LE`%۝+%횙x0uT~7_'tkν'?@S VLeTLb>MWD'U0vBD[ʭBU0~>{kQPa?H%4q>R%=O u6݃ቈF5N{MziwUW1/m
Nu=|^n_l3NO@.--ɻTˡr+W_#r1v^	e	Izr?O#FWL qҰy@21&Ei/ pJn@<w@x?4(gC~+xbo#m5o.;d@9z3pT<l>h7B#L,Fq9Yڅ|o,EfT2ˉ@g+f&
QX^7r}b'MrM2,v}o|D|Oh+D>Ћgcыud?]Ű&u~r_ɽ+V*slyu~H8Q`1~NЮƾ[PįO6ɰjbP}Dztul~F
>=a}Tjo:H!~&P;9yHgDe?_iYjl}WĢx^@?ibu0eާ׍ӛ"ĥTJ¬}~բC6OHzcňȴ+~TOZC3mEbm7Gv>n4 z_\??&%M}w*u[{X̋:@RB^DOcKO]^u$mh4q9Xӕb+,ib=mx96mg Ȫ0z"$v<T/3џ.9<`prD:{+1_ xyb0u9v酂tZNj%CfW\̯1p x$nG[!AL>oW@3k%Q
~0xP4*^7E%0gwn%]}W㲐Uwj/.
xOȐ{aN4YFn\tOz	W9r1-2~?3I7+}?_i`Ok䥗\<v'v)qeoA/S~BΫ4@> '""y9ݘ:D C"N3hO<.d
KЊܼqU嘑
covOl5KhdXyF4aEC|\V*z4كu4I=L8yiS~%$?YU3:lcNGD8VND'}<Wp bwi͍rܡLʱFϿ`j3:>({V8]#:&*I[t )I׭c\wLkb~u(1A-x8kf-	hK1
Ny6(ucM0x" 	7Qm3dXekU؊fN'Ij8|~j܂65p(b;Z%:J,}1i<Q^IBvj{%R=#e➍a?O	Ub;bYfw/[.|/7'#6B	dy/Q(׃2i\.ܤ&V->El$up-޻y` KHȔdKj?u~3*[ac#q4SCAЌ9ƈ^|H#$	M9`ݛj
>/SJ
V]_f4Mnz
AuWHxHE#{W#A® M):LlcYgE0'a0$a2e#@`oǑk^$7ڼrٞp$#M-z=}1P:U(D\SW^;QC8	O/#hYoWJ3bSr
ࠦpejAtM^0_KHl<)h+f`/W=tvX2p IE*r|Ȅ&iYD>{B$,J OqOFK 33
M
}a`V4[v&Ofey}V3')J\\~g(V?ts%_!XP2E4I\NRVKuVTx ]s_VԔis?Xy.YŪWI	IfwdٌAxA[|^X(8n7îwɓ-Z,iIs-ӟ{jW-RJ(	R
2l|w8<?݊uP#l{ulD+4O\mOs_@/w3w:d.pÅJ3eDּ+:S{[/oxFNȘ/*F}=}wi@!b
e֢E^_Z}acɁ9`Id3@Ů_*|IPad}Ue}(i$m&[9JBm35,>W8V3|+)Nj[
u9wXS!~Nq@KZm!ygvJћFruU+B5R	#W<A_X,g럞+	3Hvq Z[s	mb1{|V+ 9w4v/ZU5l-jhqf%oGx+Mx]FQ&:P]W%gsoݷF[3N)k[66ueGZύܤr<`(t(sOk8P(օ!ŝXtVx	iyCx=7ѧ3oڦĜ;JY-#|gw2 {Q%tNxy^˅-~$;
b_ʿj c({aǅe:_pmSD+ۮLҋwoCXۉ*,#~R8Mx;^%~S_H;ܐ*.q6q<(߰o1*JH9î"PC5[R:z3%ːSx
}a~>Lߐ}`~DuwXb _{T~?]x|AU鍑$mNmGQ!+kQ. ||6~60|f>TgcvVZG<J~Eg_u|G|٫&c׬5R<KW$:t6DgHJ>7+QU~_8JҖtFac?İ{RrY' OWbs^L21?2}['۵)h	yHO5H9[-yyne_c;WW/?#_K]
ͼ$%[+	'dKddLT|"|X=Gi4:L;LD	|g=y0&)3eܧ=.q}
=ZItkh~wLo3-/+bI kyۋA^28ᜠkc͇%)/uA
K̃H8lVHyG{U=5l<v2ҷVw/*r2u6\zJ~M-9>fsWw)N.;<'9s\txKgܖ9`^:rG/x5yV9DY@ _h"h*\:(v.  9N*<o=f}NPz$xMJ7!W
jnbfy!R6%SL
_þoN柩X%ԮN*=fף^iKD{\v'{vϳWbqV)"y/>;ESyO|v*ʡ{%,lŦܚ68pԡ~ofzێboZtsUvv4c@+sv@gߕmy]UF=_
HlrJەSpRHlHU5߫`3^O	\OVrtBۗWZK~?'1n392_Pܠba`Ƀ)ޗvu#:
>]ٙ=|=H-ZIG}t?lUHhlO=Q^P&/}k'gEu9oן<}?cvU4NgjMfR.ᄟ3+ZoVuY7s\SR:&B;21/ۄhT(<շ#ܱ
01NWFq~WqBW:ՕZ+feoXj}]9;eڵ_]hEHah8IX$(
e_DG3L1=bk)/4iKH7M2($T`jsXeԛ']aK
o!
r} *9|+jKnP![E)H`h^7X7B-C:V<y,>p0OW+}ﰉ~ԭ
hux{<ej	pJxrlE9@X!nK/|Y$zΠ)מ@ D\4I|;,jxQDGgT
hpQ$eƧځ3\|4wxoX>i	6dUQ(T^㞴42f5uv5^{
m=׼'#y2a{lVXxgN/c9'e/s|k7ĥs;N;A9&Ѣ8>i,/׳|NknQ۸,bgabR@#_0,u55ڔzAC?sIrr*#z붃I(qokI;dԷQnP貝:D>y?RqN0
;սirYX5*p>v,WIS@cTM@x->D0"GyV$Kjo.
|NSv?`?:XtN/d_{d:Ԁf~{!riRq<a-z
(s.3%Y(
t%w[<U}N˭ #rT3 G_ӗ!56UsauY=3K<<.6'6}%p`Igfԗ7UaX2D%a'RHeQWU#k#ªH(,}}
"
jh,)nLb^|=5o3nrnoQ
عެ_]^"6 3&ƏҺe0u`)
hV=Pta
Ozt}3IV;QVMIg.}PKPMy  = PK  *D:U               META-INF/BC2048KE.SFْʲ-~?Peؾ }ы楌}_9*[fi253 }Zn?oaۥU?4ߢ[їod߷7a?B+7vQZ-`YP{ 0[/ϿpxZp41`^ZL6dܕY'>?Cۇct|_ԐuuU1UC/y]
>dU ,P

jn}bbzw]~DVéZjB}KFLf1=e2e˾]0Gli]P ͚)|]je''^No?W+l
*]dAGP-cC[&JUna+4Jǻ잍yi	A1<E<$~'LEf!ȖcWu0nü~<`DNQ;Y*rz4
&4pzn?NZRn㻾}}ܔfgW>"Pc88.j@it,ɉ6KekF[&!YFƐGJ>اr3
,2RGzU~(޺eG}<NbZa?XFtm"	;MMPo@}_lL}sõI@igK]?[b{u"y~C.
(k3bwNk>	EEp_),7M,Liu]js|g6uH\+G2lYg39%$C&@e{e/q un~l["|q(	=e+<.~3+%cg-SÓ5WgAZg4ܣ\Zp;S[:t\: 1zHgs7Ҿ9]/O;a/'婕:Xl}Tnp=ض*k_g%y@vj|'_wsZlEQ
dkADGa.Oͺ/m.|OE2Nv>]CߪpNFOPZ	lDju0|L{QvIb".b5
?vcqwƉr'qn_Mb+;Ց${_
c
LռzlxtZ͸[vկ5leCq #[e?A]_&[-tծ
/Xv"wd(/~`x-g -j?	FlXg#6~y|͍Bʍ>sg# h6%\?lWR#/{~4?ͳ(>j%--c
@Zt:kyoE*츒?9/7wzĞYӸ(cpQ&."/i h(YSh=P&]GolG3_Zn,SԉV4Y:>Х&7(2ΫUHxyaDZUH~ך95;r m. t*9yɐDf鼫yh,wne?M|	; qݐ'rfODuVy<ka1jWH{<_ o{peLQV'$^264\i<}'"DA"G0icu<Dt@2C4|Ǆ>s@
M=.u%)13@KML}^RiV[o8^ɛD[ղhG㯫Gkޤ/iT;H&`)MV8t\	e嫆t,1F\,:@wЃNB "{Ycp
d,(fR*v_udް~HG_zuQw
L!V:{zτu+`bY~n}Q]/㐬*:0ν4K|LHQޒj7Z>ue1^Ȣ0 ́v=씡`8$,k:*ud
ftqDc M@42%'6vTREG=O/{2}W_l5@vgl7Rw<;~6@Ҋrԝem&N^h
)<i|r_l"6qA` ޭkbn3~ɓĻZ,e$]3D"bWt[=<fCnߩ{oz |]#v7T4*9-CGfly뿌{ݹUH`]wY fT&
iQfx7+.WKDY){>S+6*Xa
\R4ɽ,g鯆xѵ nYâ:~:~"OOdGӋfs$ߘuhKT6߷gX-K*
qbwL	vKbpOIF	Hgh6>nTОDTx&&yK&~BZ.'b\}x6cN_>lZjjlFۼ̀xc2sdQ!zGm72+?C9hZ]WwŎTfFg)rK
k6pNs6-ȷw l% R)e~LuM$d)6OuTWA{`;et=滝,C."t7cO#]!WmܻVñuI4ԃ\!M~nۤ,Ѯ}G^Zx<vU9RhF.0}<$;Κ&e}c9<󳘧7pH޺ \yƺ-n7TTvٌ:mTL癨bBI6YZ[W)co/xhO<~X׬^NIlEl-n#wxFMGC?_Eݥ	d/H˦!mP#תG͟~FG-bo=6\Jig32|_ڹCRiY}v IIvu_5/hl
Kו?eIz5À?,nPLyg2|/}p'ҵnzw}1 pR͛gw*>,W7?h]]es5;C#~syI6Le=őca*8G9a;B	Wp<"	Ḱέ:=;N@Ǐ<Ϩ!ֆ.0.%FpQrX\c	㵵̃jL~
}@O?QNa#/}Ri@iيn&"~?vI(;hU`|#)i
@i57pDz /ҌF>L2$WƏ
wty[{a;*%B{23ݎ邴>>7s__g֫9&ɰcT.] hY3?@ާH4w ڰu!WKMENBFpi?U
R$_XJ%S((Oz%rdXw"̈́oC=m=
G#rAKDc!eO0y?-Hr0zTuuj̍־g5&m֠X˸ٻAfp65D6x#ۏF>j}n#$xU|x8=/K:p
|<wy	}k;,Ԁ{=H5F2阒!OWݔad4O&H=T2gDnб芄/d@$b]/稴gV't͉&Dpf`}~xbz7w}X oqVr+YSE;{IOW
B
a۠#āxԠ~FEy1[DM4ʘ5ىDt'WYMGujwFP7wp{v6AِkxEˤ+:%+y>s,Isݿ
FnF,~OrWw_P~,x2;X]~dWO[yJtM	gC~}.{k:#S_\(>q9H&іosOej=K},;WؐxHXp:$fi9@P|)T	$xIavPy?ùz)\:2gj0yYFju<Vk.ag_ENtQQn<g- $ީdN\m7O,F5~hvs8nou&tx#p~>ABqh0Dݻ{/1WO
oˠ۱z<sZ]٤i'ն vB6O+7Qy}B;N1:FJ,b_MAx~|#@Cpjxɡ5spܛqhlWttؖ1qPޙV~
(*U{/VFrOꍁ}ɧ# f/$ɢw<Py+"aÌV
Iuy!5y]ukvGQO,L:|k~JX{Z\;(+9>TJg֧/vÝ}͇1L%rBL9]2%(wi}-ƎX88]'i~߸R(wў<ӦTLG4OySQj)zmY@/_wcr/8cz+즍Nn!)o?1U_oO->|)E3{(#(>g1p6 5%9p3<G&7U+r|;,kQBdB⻚9bD:yޟ$[$-qdu
~>xLqL>_1_g=_.K|A`"tHpH;]<x\(=݀qx=X6 
Q=4ˎh#D?bZ1|34ɽ'+u%;;ďKjuExhLUm{#w?'M*RJL{dBQ?25@@
e=ˑWu(AGp&xGB<EZ ĜНß|n]
tuy'|_QYWi-PB9=Q9=xb!7~XA-ĳ.;jq͎pd{8gMMz6: NpإJM,idWڅzAaG$fńD`tNbY$`"A~6埩r#<OܞdEo[t6#nݝ; 4> Zm@1pޯy 2gLxꤹs(m/QxGuv}1NkՖb^ Ҟ/!fN?^j{i8qʱEDDvw_<عv˟#EʉPnw$핷+z;IASxޮn":˕x
STq1mh
 rTT^ts21S({F=&dqKi)J YꎣNE\b[F }rC6-#aaK;I}󸛻HIMH
x]X1?I4H%}K"xt0ݜio</9Wxto0׵{rW:ߌei$RC۲oEL~R~=iu 	QAamb\s^)^`4_n:&𗒀5	vȝ@C5V8.S
k8qcoiW|9_F#sUBcbZFrX~P#,ޝ';LˍC(8|q/;!CL1M:xM=^oďijQ>Eáܡvaz}Qڪ{2?IBQFT'PeQX=,ecRALUotwpBГTgQlssbV~8*:>kzDcƚ z)3+W!qos	rSuSŨ;/Syb|8GB70\Hx,\EǬ`25D/k`aX#07'ꬤ>I_܈/3۟OW
n
z#1/ZF!Ɓඥ/T~;,`H:3JVQ̩@Q%IMץkP5ї~F}
b>bSy/,\}Xo@^Պl#c
%	~0 ۈOüpEbX<tCc:Y7>Yڻ=h-ٟ@u.i_k+Be6
kmce77.v1qv/_N<<ΧW+b"
X*R~)v}qRY<ͤB]p:(n| _[%65-]hM4"$&4~=ᡙkvqr#hq,ejitU)v Bn$?mu#NOvnP5a<
ۏ4f?|bZA&BB7~Qjv-\(U{|	x΍D=!kqv
\kJ3vH	G-&jhh:\$OY)!뼧 9v˽xy l(~M[8d96FH0mI
  L\/xԻF7r;[(I3``VKхxT0wf)*i>]m |wEC\Gd&HEi nڛ:TF#nք{Ȥ?yF1r:כ13vO{pj1%Xp>ySO;ꨗFgz)-jԪUOcxIo/Xsx5A<صm:LQx'َIxqB+L(w]rne8??@cҩXh72V"q_It⇇[ng8רxV0^#\-3*v>ˏo3KiN,BR#^cUkwJ5}R&y;g7{`*Jvq9r-3E Vl``ζ0dMt} 4tF>x 4g84rAbvBjuʔݕ .`WM7\!xeQH@?{̀CB`o8Q3#;yˠPivM!wD&a웓2!9fX{ jރKz-񐳍{" &o
ЦfLa'+ 2\0Y9n]S'@Է[m\by`4抶{zs/nHCώd.oldxF)\
#8&8un
3̧߆?ElYr2-r?Ʋw9īp\7 {ןۋݧE6]w8r+*< )
f#8T/]
3U'\yH8CT=ގpT?
.`}Ҷ}>1c^snâM8E76O]L>47}9&>ݗmd8ƺVzkq	5%7!/*^fٚ	&9&;nbE^V:K'Cy?6ol/8L-n&ET냗5]|}׳t7*3u Zx6tU-nkc$oVv5a4n~f
HtC?KomJ'q||9?l:v{M{Cznʑ:n'og30FXXϢ2w0Wxpؖz؟ꩊ&5L"Jf@L1,p^e Q2ET{٨.:EqY_f^:|1uL*z߫|~ܗuS}꼠ݚ M+uū _j(i?,;aOeULܓ 0ŻuW)u\oe}J@C)~k(o3a]^@F^`BѸ={ҭ٬{ROcn\LŜ&3RMoNTBTH
D"oI5ǿ~}gtc+[w=-g5/#Kv/K=^5~Q93#Z@hJq=?*^Z2Ȇ693ѥRx$ى$6ti+7
V "wf5L R:T2Dzz$g+^SЇe㍁|ZWG85QWe{g֜^i^Q;,>C*
X) ߨe+p[G]||c+Y=>u>cg{.Y\WW>=渿ojϻR- _0	񆽳߀(T6sR#v=|d~K<g\eg2&
}^Um&$əǦi%pVQsnD>Y7_=7!Gw_oL	B|t@"
цw-םw_nҐFh%A}<#}=-=0ƳJjvTmcc<Ƭzhvj'~Rʔ?mq#O/MiKӏ7(~Lrѱfe8ש頀cKK.aNvN4:h	rF-0-v힔*yM	<%iXĶXUD)GK+ n$悱f~?vl9MeT>9Gy Fa%-;6<\Xj890:$)NfYp7IC!3ߌ\^Χ8k帻NCvLԶllq^FcLaIt#*y;4 Z+S6
RJKr;g
!;mu
*UM^)@!1so( l~Pa?aR M'YxUbK[lS4oV=WOLOXS'%T- <b)l𝷒<i"Dޣ+;}Z_ @[
u,j2NEns():Al7kowH[y,72L˅[G8y'J0j_0!+xvޭ;v<U̹'IX&n0|tp}
v[@nf&QҳA~ |g7Nد^z[鶀
u+7]'9tNپфLP4
i|
+,yhNQo:{g'O*Z[x7
<^Pd"=64p6k}{
2y^zUY/}
({5J @52~AiZ6	}ڠ	cN$-yS#4[4Vx΍+_j
/oxc\Q穟\LeJl<L'Ӭ2}-9зvSoA8k]$BauI%Xu4i%{DvXgV.Xӝz@ߦUk]oM+аI	eCqcG
6vCbkPi~Jmf\"v/KI83++
64ۼΕ~͋=Ϯ|73`fF`6=7TP__16׻)J?0O!>;:KOU0@AwSKbL7dKc.oj+`3-qHɸ!g@P/,zAn|)ݘ)
x5fUϧAFxٛNx)Ҩw0{|,@mD/3P`hGWyZ%!&0f<bpc@ViTISd:H>RT#NN{e'־4V䛹
}+lRrv0HEzJ=F7{M_n*1P藖lJLi[Qh
!XQ.lGζv9+7ge9(c4q`:)Sq<"DA7#Ko}KgS'~tY:d+q֖r}wwO}hq6ߢ>ɾ}fEP2s7Ǣ^U|:xi][+خ+2w#uVLcxPaq³!Km,.GHrH3ދ5Iؤ'GpSxU1C%Nv<6vvz\ Aݍ%zvSs7́{!,ѳOw$OBz >'-V.xB;4hR@
8*d|T)ɎnoڶnyN2bdt6 -B_g*#*e!V;?^#O`e"xgD9X孪tnv+0һ	
$̓[ABZpnBΈyr_6Rx6]ߚIxՙtR({-{ꤲ}oq~9ﴅJXZ5`6E{aR gg%~lBY%w@[=Ɲyb<#|qy2rRﭒE&٭{5@8|tQrZ%	Q1-қpi{/BEWh#Ac4!'gk^U?>Sw5鳠顠xdmHGC$Z^/CA#Ȼ\n_4||Yr)fDym5Ȧ<5L{/:~K~kv۫II%41ӥ@m{8>OJ;YfE ԡNR*L)Y6C&`B`ܖ	?Ճϵͺ3M?z̞5G*V.8O)znTxZ;]b{:u
FSCc&Aǳ||\>|(iW]u+m:_0q7pB{q gx*g&s[K|hQ(ٚh=HjnY?^pba]}tSR-,+kHPox$vUӸ>=0&Rwc>y~]	3kwtYs!SM,s̪S,6HqtxH4dtKX}"[iNNYL&iMiD-tqes=th.~} 20|dW2y4ޣ*w@x^ ȱB[@J-)xZߏsߢ-R:
`ZɺL-4#W7*A `'.m~$P -,*ftϹSɇ]so6|>F?O$(BHHg&hWˉV'LG~)6i;qz+x0ASBM~nШT ~[7ݧ}6hKujs?NC,j(ee`C}ί>
JpRkZ8wnԴax,6$yƻ,SOF
gOr]l'tӪr&ĉ@ԺDe?ɒKg3ӯx̔uN:RJ`]^S9,it?eqh4tuTZ?@=|ZCk=wF1扽ܛ+xqgP)NX9E^^+?8#J9ݽy,|C	S{FRmS|unu2RMhvXzAJ&n&3XN	ΙQuX@~5>Ȏ/*]f؛M~QLϣ A'WxT&7[^"il 9F
v%
-<+&3`lH0|
Ó.DHwo`drh>Y[Q/*Lz <@WU~L8}ZmzG
h0Uyb;M%'B{O6SŌBЂp2R'Fɋqk%0/cư[ypx]uX^Û/|$kM-LAQ_R)|.m{^ݣu<]qctókh?9eD5cvLgmz[";: {kZFyAɊ0ۈw
{Pot+BTp{\j9Nk֔ nsgsRga#v9
{i "9qS-jGv\d=
bwV/U-^b#WAY0	RVT흧SIiҼBi[(q.0liuvqr=EuU5[~ya0m3}tidk
uP_s<27s]p;Cb,6#YW>Q~üO CU.7(r|vV#8)",of xa^Kח
@NCn0&8Y=5Z8H%zةku1؇m;&ڏ;,f~Ip*=}s)=`r+X]%G{t٩)XQSaMFfLv=MXc,\(QbH[ʶh<܂<BfHEf6ّ,mCUᷯ|HIDlN꽦<UȹQ4b|}؀s~È/)ttuS
C4.KʩeHGRg/?!v y#wM0Tw&K&0GmbC& j:Fͣ]
gS=u3k3kxV?0ϟƚ
k2.>@EwFڐ c_{zǳ
<G9*D0r!xԉ.wpw
?Pm"yce4<U^&Qb<'kџRRN^%UAacʀxZ<wHނƑ,:q<,_ժ< E/GMmCt'xFۻW2S`KIZBڿ4|+%1APVi*EX"7ն 0+8W-Up%:t	6G<8EӎoDI(nn}L8d>=QWR(a^2㝩PW(;o,d2Gz",;{VҦ$	8C M䗐ԏSsF7LEh#Q^t*ǽ_u3?Ɩ[vWEuދ*iެlZT:XK]:u^7W*h#ZtWf
ΚMʨʲ%ٙ_#PopxƵm؋JZP(ÌX>ޡ#ʳ-5$28CR@zb&8;E6MR<쐄K=B/cAۓ@_ˡ>,${]v^RrM0<IJDاwGc	_<UdF^Rn+hwHLD{ ts_S򙀜VFV`N"I:6 + &/򿗴:#yY]{%2B(Tco
[՗41n1OPX#x;~}}}1=~5\nWCOy}>;®{MG1P".ZRx~n	1nwC׈ ϿWs>/t·!( '&@af[=l:]ճf$ˉt:]=pʲM꧜4(fxIu7h'6!׻^jf'vsF`}1\u2b|-fI؁޵bN]]a#a*Ki$xb,!=cK[TT;(hЈw{!P29唶{;IL7<!s۾AlBJcT8A`+gґLF85u#;M[.*	="jAE3FnC8nfm(H<Yws<
Y|mNwm(L
 @ 7=._%?g]{Wʕѵ1WLJ2Ņ{QN7%#_
;\Ggyjby/R~M>g6hl9/gWUQGNݰ[J<$~^c8CPlҌ#|k;_&T? o[>@RTP륽kaP}W<c|Cy֊8wм"wPUW>~[o	N3s?GްLbvАagMC懀TB6{sVѧT~8ĸ}p0SNXC6&f׉7:pS9ٔ˻oGG%%8Г)iH	u_o|WÇVWKoUFq.;C҇9
zÿ뛴լ3! s{psuj4P~kɝ	~j̤]vګHpĒ~!p)V8>ֱ3{5b,ӪF8|pG:+(47XOϝo@ҷ!m൴ڽ.KޛCMĄe\,%[s	
VN	ùj(Û&{t<{/(ޡ`ղȌRu5-I.Cա703-
bƨչj?{0i}킀7!sf
)΋gcApEdﴄL~N{@Qٌ"\iv&Ĝ':>(yIpvXfuD~Z=a֢3v L8ͥى vw	)[7'0N>CtLwgOKΎUr/
A]p~ana]w mE苫'P,Zw%S-"voal5އob@и#˄6ɴO%&)
ؗߧ }MҎO!ҕƇT}I 66$%oG?g   )73Sʄ5Vlv5Ct	+5BU3\O1]mh`ikH/G|9dOl6Y4RA(CJ
Y^<<?PG,7G\87c}ר:9ȭ6;#:K][E"%;܂KDTf2=?(zHC̈́-_N
_Q9ƎCBA.A}£9ph;$yu,soD xP3NG.G[BR
P{wEҡ=};k5"5(%sN;^q}90i/ӺEfxr;xxǫmM>u;9jI=ǧχCtrENYvr^媆
jϒ?\o~qxVZxT`e'$`C-<
[J.B^&@S@-#F$m5db=<0 j!E	UdJ瓌6t%'Un&˾$8gƒ؟]7U,<Ɨj2RB8ob"*ҵw:{dtȺn~8	bӕv$!хs6'x$9Hh\9%vt52ztFz;At/5
BpR&uH) &_W
Pċs|@B,͡"ўn[LjW@-#옟0zP(><^^Z*D0ZF
Zfs2U ?_2Û=a4T;/}	s~`h|*0b5Q7|j'<S
M!~ȇhp?kd''ve
o [o"b<G_~ *Ha@O&yhO\紻@md^ZfVͦ
4{P9
8B׉EzvTԞuѢ+=:9xD8B(z<IdJIg|άx/V&NEGT̂+ؠQ3ǔ{nB)].
Uiq A+܄5AFT_O~NaWR,B0'ټc4TS#)D	Mb:Br:P$,6zV] Emr%!L>/G끺sH\d[;t=w?\w8k7lig+C6e$m\>{`*Hp8Uz	"}vtt;:Λu3I$REh<8OӠG}_S^$Eեv;W{Dcdűbsl -=?Z_D<VK*2E'5rhSe0zP/T"_%9Jf{p BΓIˑD|E&(v)K<Lo{BcoH3z)ur^.vOP95+ 8}Nݗۂ Lt%𥢩yFW!5Zfn4}5)oJҐCSZyDW)6je)YW$,i|> Y-	iHr9pe
NwJ^	z7`<xy Y,HU	qO.Q
^Xy7ZS%9;	4p	@<"]bNhSITsǞK1X[viӸZ=]γS{yZy|!n)V i59'~2F
	JMT<?>mk Ϯnٞ)Ʀmix[ZvTIv3bm_텋15,{8ʭ 5ƚl{r
Tj'"Y?n8d3˄}Ӕ[0$/ozm~7>(JX=u<خa`@:htJ	/mB}.-Qu
2;,dF8t]Ǯ9_ː9p?yפB}._/|^:T=@lsԋ.͉:qz~Dw|ۑ_*&Wx_aC*n-G2jOoL=>2~ރʐ5%`As*6~>WX
nrHC|q}79]g gyO/m+/JH&"ȑ7B
;9)h'@ܸsxf7tݍtfBQӝ00<o[EeDN\0
"ф5kcoʠFKz	:bmHqU)8?LugMCmdq!Rqrco9ao/M],Z
2G2}	Ā_Ŏd~%ci}~ua%@[̜=;H3=3%	/$`l"I.<axˡ
S\o61ׇ1bi.N"2ȃShR
Q`UDGOп+%>*$?#l:萊e60^)vM!ՊHjU1ާW+iη*BE?o^sm0ѶˎUyvxS*
@`&M{l*&*d\];Y7Gu>{yD{}cCq
6t $`9+'TV3KmJYO?;FNϽ99/ơptNnN@yŐ;\YzB<ɑ11څ	ԓI.)f˹?(k.9 O	Kvlqz<W	O_{T_TsR;Ձap˄|(
R '*nˌCFO-Ra)ݏQRxWtp#ץ-;7
>/^˞Z3ϒ((4#ˊ]Fx#,޿5UT6-byV\nմ	{+L&='g8P⥧ ܿsЬ0?I`%GW)'np
!֌=/ӎ׶پ}<{\c+1>$녛r.9Z?i>)kBLrͳ\cQa)f?A2mD={0A{\^!~̎C`}%"&&C(&Kx8&	x [Sb
};ks/n?&ZAsNu:GN'ܽ_LO.O:lLl:[>In/fʮzp;$EgT m۠}9BkxTl$֜2_fwu(6\׳컃Ga|+վ!,
=%`pKeJ3bg5=Fp]3b蔽g-&)¼+oSpYwV!l1ch)pT9b%n[lMg2_kI
?nG**3O,b׎uZ`!Hvs_hLPjsЉ`d0&\{_l}v^-nR{#@[C!y\
k1.Pߓ
1]xz`؃'}W3rнC
<ZJpݛzՄB;|.).~ޱMq:g02㔮(6aN%9޿qG؟*!giqnQ<+4EFw¶
)pAPXJkkÇ'! y'0H)D\S$G7}Y{UR~BqL{m%~SwǰhZPmiJ./sæXH =pLjأkTK SϷ6҇Y%2&UxŔ]j5ȢGINuTL^? ?ܼK@BrB9>O%{ܪh'ļ<bú}Kbq&9j<{5(f[yYp.Ks·ӜwMNL4 휶.en=.+7|p.VƆ5TP'g)@Ɉ
O+"!= &<_sW>^rNĀ	Nfy`٩hcb[!Waկs߯&1a<rl *\bľ:'|'KZcieKIx[?Rt89XCS&˔ѷrMg_TX|evz}3*,h1VCqQH!=yWտϜ= `7z
'9k֑j6p`1>zLv?:͏=԰	yRKǈcD,fG/ދCWmqatNզS`Of_QjĮ9堚I'bGɌ&Yz~Y-uΜP n_Fݸ}t8ֈ9{
0-5yea&#v$<|k!m͑.fFn-^x
a7f?d8ɑonk/1E{θuC 5tn=+6ە"?+_'L5CS4` XDhu
){@ر~"P .GfMs9!/(fֈl{v_s$\xJ}=CłK3.׺[K^3GW9E!PTcJ	O5|ilЩ t#R]ÔMVXO/љ'_v
(6+BfDU W#{.-wd^HT档UB۫İg u݁WOjp]k/yJJ3^V6J5Prp0by(u/KV]diF(_}/
Q)K3RGYpTR[5'rV2%LCofVиVXv\gjt2%.M¼r
X,T.94W]Gw	0dNV+5yڬJr/U&qq"@cd]B08qNU[ 	; ũs,Ӯn8҆y;Lyn~z,A5ZvvO&*҄& 
dEd
	I%Ut{~H,ܟ]k6k~h 8s|.p/ FۮJ9XFZ
MoEbnL`*7yB2FSU* ]k3IM/
sBVtѪ3'\;i'c Jτk&i04byfj2_d-vڡ6zl$
tƈ~zaAK~"׶4%Na%>3r2H܈o!v*~@lGp3ҿ}	m-鿄_lGwPtnxrNԶ|ih#z{ewk~[{mi !8"sQ)4GY>%?еs)3ɃX~x6kF-YFM'8hדoGϸ?W/ױKχlWg|	@Hi	ۆSSyCWF|Զ+
T{ R+[mk\h2ۜpܐf,zҜfsYrG/>a_k`#v>Nq(kvWg 7
P^C_FGtҪL%)HR2	9Q:m3wcFi!y"ƽg]dIә#^=][_ɒ5j+Ӽ"%S}9.7cw-KLO%X#|)ujBjzgN.3>"?8 *Als@k_ ~>^u;"\OeЋ(`.1lӒ)8IV.=e/{NJ<K#C27#@wITf0eO퍉wα|Cи287㶿>JB;rþަmdi&*oCZYȦ]q_u{jVM|+? YmnVϷA͜Ih*\T|. 1KbCexܤW$ǫ{\
gP8ܭ9{vJEocP7;i({z4ҞE
	w8]|=0)J
xeLz׉>c^{A'Q䇐psŤ7{ၭtKƛ{~Z5}Ϳg4r&$<=E7Md5}CpS&^1gؿ`?n	 P?(UU8+ct(s?e#&bUOJދnvzE>2ɩ+UUZ6ϩsЙ٣jݟ"ItD"[':*N[)#.9/"u<)YEzlVJ
o]*Sz$]Qϛ񮆟p"@mI9֚[j<. D KZBkQ;{Y7٭	P	fk4t(Z$!Fn>O9nh4{
HO7Lq\!U |c
<N1âŀxsUN4_47/o3pW]L;!U(>h@An%7n'VއL+GMz$ӌA+$+,MC{[ywV/<`mWpFmefW~m	芇<[_4pS~4 ud#{_{?ztFFW;VjY
Î=I}uzUzG~״@tEZ"*)/t1P3Fȅq'v"L¤7jELԖxoՉLm:m8ZH*qbMsƙkaڋ>O9ۗCsB<FS6Nr(~suF*Wg=1F\h---
 Okl@ٖ !O|WuMTui#Q⫯RIPd0Obc]l|,"/n$A7>S[7gMPEL`1iJ+87iysƚS
h;zR0\DQ\Ѭ GOBvK|K;
R96Z
IHMZ8<kjosm1p^/r	`r2S~,ˀ>TyťaJZ.xxk;ʖ(ph}×ͤ]-{Vݿy˳('}+R$"N,kc3(Jo"z9A%cx?_T|`m77_KT
br]B?( lcOя~ z۶]o ]{K?,Pu45ml90pcU ?39&JS+x	vm^oz/=\me]î<IϠtUf脵`?n+,C'B!JRR#rulԶk[2xà!YmH[/{=35ğKb.N)R6;d^}#sWG=klI_I#kWP&pRi]3@xNJgÂB+)'ҏ'9>fxeE/3||zм^᯵Vx'JHN;
z/׆]Kx:wp_iU<8)Fl!nҔ"<GW"#tm3
7Fg'(i{Dlݓ:+w/2-Ri	OAE3>X,JF^`Xr*i]J@!C#z4$IqRrmiS̓nQՅ)NC3%n]H*HgEpߋ6=ڳ<9|_?ZNߛW:*kF"p%j~Ggh*Eʹ%8&lsWOg8w(9밿:-CoI0}Lf
DJdJoa9:ǈVLsځxwj<	ݲzg>>>uŌt1v}tߧ
 `u'Fo%NKUG
6{F7űҋ
~w%pLjGr"}c[
Viq<l~+=EFxEptvZ
S6ӣ$?wnrRSh]W#Ef?B0]+0xξٜgɺWD+@PO@_Q9MHZṩ";4'//9I,szxP^>&?2M=h%,.=8+F
zg4zݑJ/1SpO7p
FE;v=Q$BJ!ÿazod1K9CKBq(&t}x>'Jc!a	&=d԰xf!'`A
#~*r
-T0I!*q%tkeAkS!}SQ8(=G8,b]8wrzi:'^NmQNfewk75
MA*oI]l1;g9[ 6Q\Dk|M{(
qYhg3tR?	v4ALhՠjl`]P}*z}?<xeȞVtjIr `PH14ٯOS~r~}K$D80eښ+ڇSmf5?x=~PEF]Lb*6rL$Kǅn=Yƽq<[T4p'єf
(f)҂!<;$)3.,bo9 =sT-kוyI~aH5CYZ74S"n%@Fvo
'K^_荞?QZI!d5l@np8x<
 m<7ARz7p1lyOa2q.k4,l9F\fVxCHmSݱa?X6MbVxܯ\#~Q*A
Um
c*7!vEf8|"v>zAzf*2n5N ?cPPcMXoZoΏȌa7OMZMgv`.uw{l}?U.Ήb
G|nB\ ]TP9q},b*vŵ
Z7Եnkui3|tȘT
~uc6]3lڅK83yňCtADA!R<ۀ:je`,CZ~KR齀oO6꓄uQSjydÑ4d
KmBE$`aj[!f@Ⴤ4pi$[]"y__cJ_W	]@HkV]"q@.EǖTt'f_p},NK*^DȨl۾
]j<zS
3k{t=:w"?`6f 4*,0!g&[M2Jcڦ,vdI
YM޿WKӊ9P:MJx{yxFDotZw-Κs^;JTO%wuCer$1@w
ۢ/ԍ;#gT3g~=oE^^FfXi#kr<3*ru	}_IbxFt3=cM^=)j
ڎ,;>-w>t]N&\Mp:4~ fp5b0&bmٿ q1}Ē?Gڤ/w&ڴnwfn1:'4l k=0u J-0pZ',jo~E$|m+^ognKغyGiMk.Ng}-D$hG e! h8eD#ftH.{f{B#7[)&G qgOLy
3ac4}=>q1`^ݲ̞uW5F ϿPxnVs#Yc:uu+6
 ͥլ}{:,={Q]
s#ő|.ZqۡתXߢяpr!b_]VBEoż^`fw*K]Þ:)=d|\4٫qDcƄuNNnA Q}J~ɞ?[
1O$c1)gm&T%nr}zsZ_TDهB?Ʀ]4c;50q##d{t@Q|SbU\A
cR^ r0foc~1x}jrT@c
]т?'%Y[~	dܜbQA~R*v	6 ;QP_Зy[g䉢
4E0!Em'Q.#ҥA]
#U
1AGMŮ2cxgv9Ye.i@[uC-rU~k\FO>H$OU^V[̻gko㣓ɎjD{^V[y!Q#O7]_Ȑ'TViHu4u9Il?nu=;\>
?NR\$R
|6Nw;ƭWNq$gBo:X;;RwI4wIs'g@5$-XʹgTT/m;V2510Vf3r-ȴ\>;iXOwz9
Eyi͠G1t6
ai]fD(۫"C{:=Y)S8[E>CYPF??Ϥ:b_&A$Aʊn/!o[!HkrɅ!j3"217Y|pjS^ǃv:
FlAI0	Wӂ FR" '
ߦC86.9Gd5 P~$˖/jsY`ozĎĞl"Tӫ]}69p-kNyWmZUUw>1*M뽬+N!k@kDg
imm9LMR[ląé'2*:6rk@_~Gc9F;T]QRјFe3V}7;V;p"vLd0D"1MP"j=Jax2>kʕ/s4+83&}N2gC<C.ˈgAW
|JN
Guk=-ʗύe@|
Huر DHdu8<DU
/Bp(j"#DI]MAK=>
F͏c
G	tfB
9@
ꁝ3nU<M(fA}n~f0.2,K +}fpQ<V)X[M;r܏H:9@6Tܳ4ŖmBe=~o>StEG
ZBalK*]>Qs[|m2֣A84볪Qj)!wⱌ,z^.=*APY:%i*I*
AoOB(~~c\9%\u!A@WBb; ڬ$@#bhMpu./㱏y፟l0͗l/^k1g<un8hxpvop`@WulfE~!^LD_-mO?[ﺣ]uqDj8[zuY"o/|$%.'cKX;ڤ
6˯BDpOzDfVN\du_)Ky{4DĻ|W0Ee'2%"mNKJmy$8[_N!,uyd&isTTKԣ`kG݉7^VHDσc8jڠc%4I$g,Oř};Թpk9|g]_G,D\
un׃p	hoc?'[a%7Cb%N9(ᔺS=cYiՊ{+p`
2<MW(WH8(:wQqg@+&Rܷ˦y@K܎\
5Cp:EWؕ=L廐3X
E<i8GS{[".b2l=C!t6ٯ!OY"U1 UK,Q-iaڛى|ntیhK\zFIǆ]yfۧb͈
SuD@l`*Iph{EăD.z~lul4jnŃ[NN&J{c=10w׌hS>p|M;W(ل|]ݱ5
=
cP*ldH\G󑊽|Mqv .8+|;9'/%%TEN:-	zl68bx[IP1,=6fPbw
J6
OGil> L[EWxns/\={C{+BnZHzQ/< a7jX]d&n9EGTeJ+31_dD_-cw;_@4d)^˝uƶg&NGP~SfLE+_^lOi[EXʈ=9v%cf(0_'1.ͩ.ӓYMHΫGwpgB3	v	xEy:?>^+ְф,i*PEzhToڔEL̼+aDщK6"AH.ؑMJf솚U;{잫yX~)%w?̠][FJDb@R117~"D@;ɸ
G<C>=$xj.jۭO0vo%_vFZM
0RlONIt! >ܑK
u]Zw3%Ɨ̖Hhq Ƭ;^,o CѯaSW7vӕr(:Bה;5|/<{H4ڗ^`|;FMԭ:Fq5du,8%˟K@	F?U}TofepNȈKKh. cGu1ln\t|u/sfZsվ e9'IL;Qu!OK)܌Dլ0j/vX}+O`T3k<~gWrǠIgFr	rIK@¨eskс#)N^nݬ(徺?~5|)#$W(J܇X	Ƀ2Su_Ceq˗̯yfEÜ4Q@=Nzނ.76
#AެhػeBZ&iG_&TK=X)S(-vCF뛋{ojQqJE=(=e׸@k^诀\E*roۏSJMy8^Q0cHS'4UH~(sI<۫޷^?>4{o#;3Er_ɚ\'Gև5 !^3t:5<I|;F1^U~}G+dY[R;-oRl7ӳS'*uFRP
\{4&܋~p~;]<4gY/yDwA
 0wt	dt;xpXb*MNIxrАyoI45ؒ?'mIScOX WR56_wvOD&t*8q8B#v "pjȬhƛ\5?XE~83+~|M=Dzl/m,Κ#!`͈Qσ[0<Eayx#9)=.l|C<NzA\EQDƹEjukWZ`<F.s
P;/>mg0?D>X&<ףue0٢R
A|2& y Afe21IM}|!	L%'ɰ`.a5.ԞbXnPoS	w4lLN
Xl
ך+_ j벼=+$OdiO#n
 O݀M|JԷZϧFU
LRuӉ+t6{[,mۇȏ5~ۿH%<5EWKPW lUi|r},&j^A5.=4,\.!~;
!%/|	xP0\g"(!K{Jr`tsDl/k+_GS{ae+̤/F%*u{ܙ!W#(eyt Gq@~x?}ݴ߆8ù |vQuQt!\F/<~?|
7HLf#6IN}3ӧ6`)tH>
ǔ(rg5u<4=3yUK;+ڧ#8bX/#MJJ9R#doǻd9p~25.ۍZ	7jTN
nbxEjRϟdrJ`72q$
gC)k"Si.00,ު,xZ\uߟؑ6 YtgxGyĪ4;S.=vdbSW#ҭ5;Ӎa(}k[?=
>؛9[֑JϋBO?!n綠VKdߒ/W&YxwCtgD˔>tpN["_({?BdUPDO݊䍮^Wn*\@}s^II]ޝn'O,^?aCeމ:J^lJoػ"|
 Hao~QkX̝N Ls	7RײEUjnotn\!툜`%kH³k+iDBAf%9;u]¨h%<q}ڹWK N<I}6v
Aj
/Unm*
?6KzH
P}*{ltyYIqLgճX~5_'%?5wO%JKgAH/Yؘ
q^K{Wb0zz-uggu򵸎$`qbܞW陒B^TY.5:<.E4:7zʶ4ށ'qW(Z0νXjiضP!dURF[2ĺڞ}3Nꮨ{%SV΅/Je12c'ыKEWƘ3D&RqvX?6a=9$D<6u`Nwiqq	FK>gce<GC}/9s<<!vӗ[iKt)<+NN
r>	&Fк$sPyϿa纷E}RA4jmWi9x#ż4ׯlHDoEПoִmvJ6AN崠%
ډp`#xOy}F>/6\2eb4SQdGEKTŋV`MJaO|uzs`Q>j'j	ۺ_-_yXsM%(.lkGP5&_]cѓ 㮵AQK1S`%՜~#z&o[6KFU?kSx@w
2Z&\Vǋ!H,4P7[>~viQ!u^/RuBs;|0-;Du3̓܉ahrn	):w#qmPiK
Ta"[tɂHMģÙOS"\ux>E`Xƾ'}{	=9ldĈ g`:9㥸'0`{ŗ>tFg!td9w
;<Hsk~S,[:Fjk8~&o9\*
^lܿ)AeS)+QOVEkn}[#i_2E>z><rުxvp
bϯf<7m-x&hW኉Y r-ih ODETS
~$ʅ`w'ZܝWu4XmU(fzQ%bj)݅FVէlÖ\D]ΰ=~sO@7&2kC℁qO"|[?`{o%_!0=̃U	bXJ͋w5UKV5eswy
2V1tX|1Q
c &z,1E3H}ļ]F>>M^]a<%;t
h=10a
%ؽ* me=}$/nؓ)9Ape3[KǐFr
E~
<nBu?l2"!(oxW>I#䊉!)Ǣq44yKX_i$>>[5o]4]'T"PG_dϬ%"2sW_GgX)ݏ5=,ё"걦x&/mc]}^t59|.qW!b>>LgƐ3$]	Gm@`^(̛̊yŮ#8ldαpwB'uJ"Ώ6?O׷,pA	cpP";S8.Vר2KV_xن[I\Jϥ6tbF܍{ŏwaeزur0g72uunvd:bAZ:4t6g2}`^>O11mz~5PсB'H;]#\J-ȸHAд[1ulḸK
moK7SVGY W|xz`ltluξ]ߤma!ϩ-jԬuyJ"MI2P
r!hn<K/"I)0t }{3L|uFWLg*w߼%+l/ E.x10[*`yM4ĕtMɲWZXko")jڶMԦ -#ƍ6HɐJyP5~#\]Nh垊6AQT%{-0G&L)וAB)FIv$@>aӀkAT{$
`b1)IҐTp*L+tUh}oǊ^
=/n7/P@jڋRmoԏy_2UpB~|9xH
@Hj3/$A8zʞLG>أ۫W'/<p78)p:cr a=1ͦC XVR?ҀmM']}!a#R@1seOBp%C;L&ӐwE?r`4?Y7lK˫Wy
k{@Α3(8^tP[a_mW@3Ub
/2 C(F%( [Lݰ^!lo+~xPܤ3@u S}W!<M&۹e[x	'sޟ<vKІOsr1:*˜e<~2%Og$)+U?O`{I/<H\)Bîg|*#8jB8D6A饒m/1tҪK_vQ	Sy^Kr7G-В䦩,^$|=Sņ}	 {V\4}7s7,-n,܉fMS`;W]*BЩɪzM
ڣGI:כK K*}tL%Uy?:gxHNρX:A>x	Vq@ p?Rfw; &,_K~s7e$:3Jh IXsul8,NU/rg̗?c~ m+(=[=Ʉ%NG3A2tfCma{,Kp1,QD
{*ma_G4:J!Ρ9Q(}A>D?l>zkbmg}ۣ?n'3}#hZUr0G4{N$:TUf]f\YƘUQS-ZgbfhL8a)@;3<Z=>QRb51!%j/Nݝ.%"CK|["@HU.\#zjG{ސ"2_bNyW0_G	l[ƩL)(}~1jpS7k^"QC]o($f|}	*I6~S#,7SCoH}׋9Y,0ԜK΅A72fw
۲Non
pMz+τ>Nv]wP <0/S~lݿ&,ĕ
pW
y0cpѻ*O[㹇ԯ/+eL|ZmЄL3ڸZڸ;,MtqNC?+M>F\a%pUKJOz帞NI'KS·7ŷ[uPN~DBrg i4]|DKZ.z]{DXDN<H}~0nl5^W3yJُܲ}fXɥpOϪr$s.۪=݉ϝ&(G_n6<AJ<ȁ)~DYgn:W缼x5k=,U9	{NPnL
tTN<<BMQG =
SWD,M'
w楾Y/߻0jq##8R`]Y~!46 exppK*d{~2]W%}]I)Lg4
A$OZLBh.iX@X?Krz+p#>]AbfOa#@=6ږ`okhшX# u'_@5>ks<yfe`hi[.`XGqd}{
*]oUӊKuU$
I/mT{⢁?9ǯ?}ٛ*gyݛH.F;yq#(1\]*+Q&;~>S0h:O (\wjE73ͭ'V<N;r~Q<.8B,oq|~bG	w(p>U]$ Mֻ+{Trg`xVlȭ^
o&.$ͭ̀sO!5+ )[kM9Ben!+UyInLPK=Lꠥ  G PK  *D:U               META-INF/BC2048KE.DSAŘu\Kw-HtJ HKHHw-)`   Ht҈tJHr79xι̬53̬]k(&LLΈK`,H6 @1@`@s=
1@ ޟlN(l(`KfGծ#h *L.tsE{ػ N<|jUs/s9TcobbOuez
0 

Q ~g_X
tѻE@v\
ERud>7ҢsS+%8E]z9}Vqc?8֒aO`cU	ُ;,h^U:Ԫj'|ɢՄb5UwV)jAOș=Q;IPWD󏳎`q\$I&`pl3'%Y vk;ϱh&
V*2W&sʹ3'84P!3Y!PD3a.Yf}k\'k釩?Al`? :.adoaC8d|-F'8p>aNۘa y?+
*W1/zz Ҥ2Ď5Go[ⓈbO~ޝ_1h̒w ФpđE>=HyV%Kt3?ȁ*XQ̈IP~dnoe5]<2>EG{W2,=|,&#k8tP&C!L>m_MO
9;#X5X Εv=znUk浪.=LTPҾEМp[gMib=Ԩ@a,(X[%Î`mؗ,xRýkUnі* BBbh9
8_Xcp5k[ag
st˛{UqE3%;BB(~n/:I eb6(_XFd;!-7hՉ-&|7Ыq̩;͵ ÍVl2==q!IkRi^+~znghU攮_b^X.D$J'F5Fh.x޵!J>'AξZ
񁍗ضJQVdނI5dk6Y
gSEb8=lvK#NzSݏ>8KŃ0>S
՛u4`V; q/	;sA8	i}M6d?:&-ӐQ(&z$yN=˲׋eȆͺUD TH|	j
_ߟϯh`e
nfzhyj
U}7i&&ujdƍxCWd*o#^?ߐgc̴$ Sn]UCM?g3>$̽!ί{S8/i/au5eB)qJ93␚%NIeXNɧ>NBc/v4Ӎ3
<N
B"PmT]G2T)Y\t
/}V= 
]yH*KA<
N(HaGTBA306^2ʐvgh	oh[vjA]ۜ>iKe!)yWz=̈ͼ)ܘeILv8"Cm1-"	LϷ9 װ^Tbbsa103x}cP:cC-S[*+<={<&eiO鐂=/@~3͔tgB%VZ4WcPVvU2dv9ء%1ch&E2}J^cϟpPKbEjf`aIPIen%5a^kBw=Kf3' VgpgPJ`J"rnrzC=WoJWi:sRPA؞7bl[TE
FUFa7d{&:DVË&wvWj !މY{˩b` %G)IEK\ժs 00hJ.ޘ|0{A~*()6mfgej=0HuAQ (
EL B@Q-`D7AпGgl$
pAoNX` %6z<El>pl2_	!v4|;Ўa@N__@aFr4Fb(L4a? Mnx(ɩ*Ł"eW8[" S$ (P^i	@ّ"==ʂpmYA@LsI_HklaZ GBb|V}$ яE`q`1=͟ӣ'q?~p{9!峊wm;6Ľ HY&f-}MGO/o-u>	*+M{H<Y\Gw-uyb#垰7\li$_Ҽeչ|/PNM^
;Z}եmbq{|qBz|SXȺ]ۧVgP)JhBeԼ/J^q_9""M,5Ń.>i41EǅUѿ1[v8)H}C<4k\J^h^nHi>Ԙ0w"q! ӪݾHo>c`wflA&RHG^Ձ]E2g+m;|ҡ-ᙦq.DE<^j̭NZl5K`:`YPXt׽%J{]ۅgx3sc;vUVy{풎` !ʡGEwڰaq
Χ" ?R ȿS,Xi;FP ؘ`8Y#?zqgp>w4>Xn3l5l=O3lJ;0:f ZFz;7q>>K [?3/ciʂ?
5CyY^:zקЛ@hpW 9o3HA"~$mzŜ;J;>"H8b,[)mV珄[U},p@/9JIRld>5yHƩ"ǥyLS
D~YuMsgamcڵ}LUPjqʏ8*煄
ӈt+hLq{p~9azRz_*Jl0q4mKzx{6OM :YYC`P늑'ԌoT3-89dT,SIFDh|哶޶tR36)6IAb}VorRܘUR*^fWT^诅)/
~5w9
;zXnLMciZ|iflI-ח|;|jvҍQu/iw9k(As\kY
DӛknAa>sPenBdAܯN(Ac#`ژi^4778Ͱ'h%dH݀1ү60q{D@#!
)owftܴ]]=Є0~?&~
G:#0UBhu@۷%k|]}rfyQ;v;xYDxIΟ!_+ޑl?
	D9N"{6G/Wy.1`Z%rOߍTO(Fp}`RڻfU|`~Y.cLYŤj`9ON:	.)hAv_a(2P6z=[l6fH#w/ѝ+^XRXs!.l,wSEIg-J\[d"Gqv7gO]u?\b0rJ־Oe!^.?C(8]AҳLo͛/S^
&T+.֊Г\3F֎z|[_ȗpGz#s{Ʉob-_*|ѕUCШo^:/qSV/d码f
Vsӏf.zTHx(y^hfnt皔	S*7,$YtΡoXMJ/է<%[r/lcI3? ̩*~GrJhp`%8
o$T)0lFf(yI fʣ.MGn9_a\=`|m90">ڮfA*$o*:p=^ZA6zRqۯ$Olzu=,[_cX#2^|*lԨ7:("0Y9a׍|{놗Wȇ̇-l('l4%Y_Lrg>Q3rt(㝤!8"#/4h<T󶹷X.	J)V!Jpb-%Xe&ۧQ-(B{:7GYEK5%|=>jￎk& )'1+Pח#mLOnz6n	T1µ	Ë/6ES@Spr
96Z9"Rֈ=!m
'֜fGv䟂EoLZf{AX7qD(s-S$r1lr-)W]"%_	8Pqhby$a:/y>MhbPuᣉe?%?CH4FT~@돼K8w!t"Z
p'f5/ul7Q {F[c3R%^i}Oi<Qիt%/IF0$:=POn|jZQΟXw
!|cfNgӿfz;3y*F5՞RAr?
K6t
nsh W7^=0]ZBK0}NȻ{)2w}|۫(Eqc"yQ{JP0wN{ F'4POqqBL3J^bQ<
*Jw^GyxIyEF']ڜ=Gcr2OYRA,i
T\A-ΫSaW0VT4ou㖽^\nIp"h?hhE<GD|F
]hBm-e笥ղ~fq=C$-k":^"əp<-Z%1#f;A{|)t<{Et4%f0 (qXȣR\}ߋBh0f8w
Xg8K6ɟaȿaOcTQ85:]|F)B?8$?	CŻ|^e7-e?&=hjJ+͉^7-n`Im˴DMKS#i$s6rB6kC_vJ
7
IȜKPRo6ef>G+ۂkЮA5*!%{ݲڜJ-J;md)GS.	xuZ^VjM(cّpOqɫߕg7#ɹZ]1ȤR?p=/6eKD^ 
<^zW)e8)(ෂ!@ggW:[?[#ۉdR@%66IZF9kڤ}QAuM+#	P rvt>;
w<g̲?n?Xz⩟\U}CA@K2(J;c'Bq=,U|"mHٶb4^i'WJsfЌݘ|e9@:g |5͛dbEE%ɯtvȉߚL䥈Y;1pJ97x~C#SdO~\Vy85ٷTg>/u&h4?{WUKR`7j,iEoUw([`/<YW%`nnY=@c`0(	Wcݰ|y؛u%AƍG瑩&<,2h:QpL6gx0"ta  *Q.:gA#350ng&.l:&6()A	2?.	'
ڏ7+1lmU2Uo\̚M'!ZӢùLB"RY;< BR(M7]EdoPvsW
"i9_PKb  
"  PK
    )D:U               META-INF/versions/9/PK  *D:U            %   META-INF/versions/9/module-info.class}VPg"Ҡr>xNϨ(xLݒCMҊ^\^ >_S\:Z&;?}AD35WsRNJQ_fŪ[zlo(vYrsWQW,{*;6o06]1Ql+U۫ԩ?CA
epH.!۪ڠÙzNx/ԡA帴Jq}f 3MՊ7
R4	ȠErl]m76hr㊌C=~N(:*)x
bZtuJj楬4^NWTuha*ML6#
,vNUissפݐ&b_iҡIeK5<^q]ˠGFf܁EAK?*T5I)I/}$U^(͎H˼]JkDB7iwrjg۠fgْ`|l+Zg:d,YFG
2Vsy޼ ݠ\#/2jIskA)0GtbQc-^p\vָBuJg"AXm%<
('0RQ4ÿ)$h+u.
#X+`x  ~pGqp<
K,8o|:
|`	ܤ_Vupw]UwsgzN4OS'9.gys<ɛlg~2{YI
'Y9f7PK?  	  PK
    )D:U               org/PK
    )D:U               org/bouncycastle/PK
    )D:U               org/bouncycastle/cert/PK  C:U            6   org/bouncycastle/cert/AttributeCertificateHolder.classX	xTW,y֤[0	L*6!B1yt2fPRV}ߨK֨n3H]P;jֽ
2K23|{/y (d.oCo+X#K$xУ]`uX<ƒPHM-&'.oj
$Tm
%[WiQ-FlSqXRP$H,Ycƅ}zXK;H(QX+;iqLc@Mشih9iѪ&ZЏ!uK2WIbE`^FncqLj}{Gohbi=ijЍ!v/0+ܸiU<F
iD"H=DjIN8LGHZ_g#uIc0itqMѐ>hf#:gvFL9&^cw4) ЕFڐާ;mqI2DؿREXG-f	U=x9Q@6h豨;<4H%Wv霮YYk=~Z9jN+s}ΑѰhrAiQC}9r:(,/-NCTd	yS`])\߫;k#&dk5LԬs1	`.)!j%"4rDSC2Uh`O- R,h'g;e!XZulŉXȺ+D?ۈqARk
8H4.HuI KHh^B
6I,yH*a+$<_v	/p	vHh.*=ceSYӦzvGfUNZYAV/Lg8hv :o7VELM4/;5;
s֕Mn΄Y*L횙(A؜eD9+#[}>7_}P&KDʽvcϽ5Gf'_'䠩)
dCi'n"*To}eWמ.{;ffµ~MRӗyz>we7eE2;2kp,M·ᒅX(1=_E,PȰE8bSA-B[A5*(QU(ð̋*X
8V
"
.CR8Δ\,
)Xafe

u)+ǫXz8kxq]x?AA=ޤ`̏oQ0oUp9/ޮ`Q .]x?Çeэx	> c?N8F>% >	0pNF/q
2Ń23|2<yɸ0<%21|E;dZ»dx_exDF)!|!Őf#G3*Ƕ;tunح1J|%2@@Fc
MᠱڗƷ|x۴&TI*6=㸮OqiL|J7yڷڛH&ip6@6nm۴QazOy7fZ9.Yv\{ѧshXq~<oa-;a
QIXHd:r <+Q1YK,L)|g2IT^Q^8=Mi@eV:z;sq-Jil̐OOO4nnL᧝MZ3wamyΝҝa'#O9ϝwfW
Ex$1Sc})@;?Ʒw;/񓛕%͖>ƄӁ'1xƄˁN	2v*/ԺLb+q:y>[IPG%
RKsT'΅KL	R^
R#ho/Ϣ'%Kq;#an9?[)|}$^̮'gNAr
ɤkMm{&݋ǲaLHt[]y7g7P"ϥ9|/uA&d_0W3Nܞkgm9*/BW]?&Iy7pDַﻋB
Nd+hf\/CL;7c#*сڌ6YPKNFx}    PK  C:U            6   org/bouncycastle/cert/AttributeCertificateIssuer.classV[WUp`
`j+@ȅp-BkKR+HxBCR2[	O兇&E,?J=.rɊ>|}s?^	\ޖ7Cx2n]hIcT&]ꦕ0Blnk$y#iu鳳h"4ȗ&K<1McH[xT@IғQ2*if@H2G2cF:'vHfqPYY0Vj\ER$愞yq~(5Kb~G%d,tͱ9n2V<H呸Icڼ½[y
s8"px"e8EA[	YSqh.hfn̉vD)|>F:>ΙP~z>umiHPASDP}&+eWT-Q*qBN^u7$NIxSAY$xԬ>wmNԶL	mөC"dR=|͚ɬx2w-t7E*Xm`o(rwؽb6f>q	bE_ULMiPѣU&%.
^AZPjO/j8Πa@C5Ya
\PqEa
'^9}QkAhi+*BaVEF&TcOTtç*:J>c0Y "faUYz֨~{r4/2Ѭ%*}9Y$O?;4?1M@ij>n|?c:WP:;}\O6sX)J`4j,n	奧X\ǃx
oh]Ƿ%؂؁|Ox!%_FE" <JN4+'@q{K<N,{6fGkm[%\/PFnDxqr!h@$)R9$Z!P0.]v5ʖzﺥ\Yz!M<Dؚ7<ݩԘSH0!e,nGWyXTVHuOկ{J|#Jp{aO</0,-/Z_PK@`  
  PK  C:U            )   org/bouncycastle/cert/CertException.classuN0%MҟP"4[KF5VlHEH<@
qe
t(sΕ| p>!:+M	&4o+泌)ţwpdB¨'%Bډ_*F#FH8[1태Uzh#ruiq:%G?lKc+N젙j!FF]B#Dwb)VkBO!
{+//54e OlPK   t  PK  C:U            +   org/bouncycastle/cert/CertIOException.classuJ1u:3UkBgqWq3JicdHdVCXHr9߹O c?%JgЮ/|8q~y7\S[Z(xQ¥h	{aI-m%o(?Z	|cl5'(QiEI
3:ȺHIhFcO0*bMino8|Vq޷vBHG.AxE%PKY5   v  PK  C:U            0   org/bouncycastle/cert/CertRuntimeException.classu=KAIrw8cRH.
EvTo\9wǿRP?JNAX;3;ż8ĘYgÜiU
[Kud\!Oj9:XW\{֡4R*Ȝ_8A'ADY<Zfi+fْ0f8F4[h!AG-B'{<SZ	w\bG1ƍPKo   b  PK  C:U            %   org/bouncycastle/cert/CertUtils.classX	`dICAcdP4	Q9(	h!nv,ZĊG/j=h-mI4%mk[)ً1;ϼ +ENtB'jF'N:{:L٤[%,gչ#ޡ#A@8	Hb=(^߾Q@n׿O̚.P;m݊ YS1H,GȢ:4.j33\CF
EV]kjֈXUaZ$5-h
E`<U
ТFhG(8F<	,P#V1zVڠKK;yCa5tZJkj8&0}GTlkh-Ѩdf%-XL6vb_Y`ICb`șYʺ2-=2v
Nv;H
>m
HNzc=-I<$MsQEԒ-X5 ]f]Z,dMH
FOshꠥA
R-:Z4fMtN5֥G6HGePlk$PgZFqKtGO6dNDRcjdkj%:td	4D 83Ų5
+剟KcaߌI++2Y)VN?sP$+SNQ"v+m=B78=$
ztq;{jk{9{u뻷cR*k[NZXd{YZը/Ωnk\zEfCj ŋ;ljIO

R]krKQyN;BT
]%jf5,
B
jܖK
hLLA+N+B'#+쇔febP(DC[-q9mˡVgRRZCBW@*,i}:03dvZ`C!FTT#Zkjsfu7CEL~QjJQ8\bNCOÜxmn{wxdPiY
t0	s$TIh^B%\$b	.pN	]%J蓰If	I\B-JB%A6	WJP%lI!a@N	!ԙ*0qtLrՌhifb){'-f\~'3U\q%09
X!ghΓS.%;dSjJ7NJ,B!
u}j'yu#`Rlv|靇D=dAJ+<L
eJ'+mk
ߖ-xTh2qԐ+)D헾iQ}w2X+RS^ٚ4Ɠ!zr˥dTԺ
{阷T7rSVnta7w#n:%&[@pHשsiSyS3QWnMߔnvr5<XKg~O+r%Ч[Oۿ tWD$M1; oM#gM-eT.;u(rY8s@/4h$7['_
 px3qPA3)EA-0]
|&3PΤBZ<RVQa2UЊy>
^Ňx
ᐂGbd)>,a8O0yVPG,
OǨ!)O
8)&Up.>/(8_Te_/]*0ˈ[2vh7=&ˣ0kY:^Fe
&ߖq#n/d	?q. ~/fA-.ɸ
fɯde6vZ0-1yQ+1;/N$" nI={gi؇g`ށ0>?
8 N~I/KF7lSH怣LOa!Ѩ%QQWa~	`wLqQQr7LB\`!fq>d ^#bҊR2Ԍ~qLܾ1lLƱU2*GM4)%v)ei_ζww۞L{2N
nm1Yc{Udj@U4"ՏRPb!Y2
\9ǍbNwwDT5Qqq[èpE5Ayu6j6(#Oa;~Vbܶ=QQ<<ɌgLTYcbF*HIMTW^me3,aR#1ҚC'.gW0"dcwc/`xDQTQ}s'	r2($]BAQ;i
A=R!]Y?,nyK|4bzA;*$x]}ġϑs(|>asPBɋ.!*N,KQA,X%y.A`lwQsz3;}N>*^7p'+*C;E
X3J^OQڟSYLL`2RW'p\Ý˒(\˭Jf/_mhD=,֐~͈ _vIc⼃h!cGK
1"dSqg-{eo/KaR9?6q82HDpb|ɆI{wЩ/]Qx\t<Z#)*=ybKCm*3t%ؕtbDR	OJGˬ˜%$.a	$8(ZBxᘍ~o0^o^t4g|p֦tZ8'	6	@py<5b&D8IՎD%2PKyB     PK  C:U            :   org/bouncycastle/cert/X509AttributeCertificateHolder.classY	xTof7̼@$6IM@!Y4R/3/Lyj֪պImK6	b[iv[KefLA>߻s=gO?
ׅ.rAs!*kNo;AB3vm
o(j8wx;w]ռ{wsX`hl?Vxu[u='t,(j+##j.8jL'Y:eChK4Vi8u%wJ5He처ХFѐK(R'p\H\FT69EW?{Ԙ%G=V_j#[JkA%nh1pܰJ2&8S7
8jC וHP5{x{JS{"h3TqeP+Gѫ73/ի
$i$i2؂f+A]㦵>5UaSCaU]~hEOfsx0J^
Liuz	Ucfhxf]jU&15(0vNK՛ōn?eTעAuD7Ff,i/75&RfCJf`}kX[iexQ5jPe~!NK:ca5i$Mڢܸ-	LYsc1`'ܴM)Q2)PUHѕ*+MsOWC]0V
Dtuα-DS4&WN{q]*ʧp
CcnЈou}4K|
]fF#HeU5of>*֙JPZ7dg\N35j5X}k225ʵbQͰ?qcGY-#J,4NRAGA~SQ5fn̒Qxϕ](guU]bW*-wƵCdmwŴa:FڽY%pG]]\hH,S*׆QxK
6|%Jh*MB.SB@.!SBn	J-GB=JL$\!aHRk%\%j	~	AL^{\:GeގYO&-N<KboMG/2
;˽3l)fnƒNqdEj4]ce<T* D-"QYdy"ĬE4.^o N$u9HnS^
s:7'ovH6h./"C
AivMN4'y47]Jm9f6e~H֟qlugÙ&2S1n;3yٷKiU9R9)Ktݗf	{[YxϐŢo˵a,5~KX,EWk
"K8[>/ics3ߝ'Wdg+Hvj&=;Z*2{YLӳm&P*Qw؊Ba(FKV%c=&xdlxx2WRZOF؂eC22!3,2QFk16:&CeTl1|xeʨc!q1!c-IxJ98!cN2i5:y5x2VK298/3|ns:}7nܸy7n4q7߀1܍7[n܂3ԍ7n܊~m
oݸ'En_cxdBr%1g'N1vNr-w/n܍q~B@Mß`(`p08
/3ǃ}w=xC_MUŔ_wg+^أ+k;^.&)x;I:q)}	 FR͜Ɠ2˨bt,N߄`BĽ}o\,,+H(GR,m'/7IpQKI DQ@a3 cRN=qq#4r1yEvEiI-ũ8>#O'lRmktX{lЍ(.%-1d>)*WYV7AĲ:7<7)x^LZUpœ/ݘĭbç,eF$Nk7.m:?Ӌo}RssS3xܢ^Jqs]Ӹӱ_JeR{nqT˖̌(p]Lu2'Ci󝓸Ү˱Y5-w+
b𸸤 Q_;qң}lEGNBiJ<[7|.4Q.ke<
c,]υ̠iiҰԐAnn>&҃jrm)Z2ێ|WyB4ی`vFͨj33kM6Π,tbZEc2jbM
,sxPK'gL8ʹUm2TfN/6cy.7n$#
D&DO➾2Ǹh:4$ꢪଭpTAyXzkL+$	s|DV8uq\t`XVSX)~	ןBReG+pFs4Ac;y$PhEړ}֌YEt ³w1йtLpx~oiUXZŤ0OmOӎcmhPKFE0    PK  C:U            .   org/bouncycastle/cert/X509CRLEntryHolder.class[sF8V6B-!T%N s!vRRf6bD#|CNqx䡟-Idߞ2}y<f72[Mp
>K0-,~]z
U'ڳR:/v]+,e0ڹmC*Ҿp-:v5Kaϗ-	ObC>=	j]at%Yfӗ^GRIR^
Jsa:­k;Ϥ0yUsVwGw[Ȫ
3ͼpnt/b&#]QbWy6,/TEۧ,Fq5'Nػ2Pe*_h!h[s*#j0K
4𕆯r]h5PK*C~ǱQ3F؜]<5j8	dkTSF'ʒTUˮUG%?'ӕ7vƳ
w&V3BԂc
]BJDn/D}5{Qm>1GYCGa8R91sp|1Ea%t\NJ
*qM	\q7u2qwuAA4n(D^%g,+q[;~|`ZEn\!W/P)/+ײt
cPP(GNX O^ksq+6
'i){
_IL&c$;h`
;eap	
iQzʔF.tVF`O(54QEC
l!FPmtHq퀚!WQAy%%>dc5G/oCJ
=lC1ЏmQa
HPK}    PK  C:U            )   org/bouncycastle/cert/X509CRLHolder.classXy`d&!@"r'	 ArI@C2ٍZGՊX!-Rـ=^>}EQ,{ ߼3«O?`c+]uC
AKndqs+?+kܚyhEF0Wc~^3l%!-aF􀖈.
`@okO7;9m}gGԌ\A&p,jzC1!ԃDRӲH,XXߪ%#z]r2jݦaie
zo7$HB@wz4aĢ)	VK-w:V9RF:ғiv9juXi;i@kOr_I`4aj=gu6ܥ'ڀnO&֪S`fֆLݤ8n'cu.y,iiިEdl")cyLkBIQLƝ%2ՑthHoz<Xՠp8wzGDң
8`y1{+q3D!`6h؈[S5!ߤ+4d[xnmLqǈ%ǲ.fDZZwx\aBz8cGHtT֧cg=}׵=nЮnҶD4EDB{pw\C!ΡoA\Y`$h$_T=
JQ1SnM0v$`<GY^:vToX|H{ʹ/bq DcP,J.fzfOi{O`naT֭,3dō!
zAڅH~+]eϜ"`Wz+l"K(]S&9d"`,F$+α|	(6{O\wEAfPYy"wn9QC~4bv4@ӨTlC,١V.nXsD2W;?UsJwꄕ*;݆`;qH׈nmjEE;d$434HČqxɐ]*X:%kƼXj7'r/!r}e9K%VJ\"JbDDDDK%.J\.qDDĕ%z$z%6Hl$qDDf%V
Ih[$Ba	]b@S2ްSW2G0<_ bl@bHw3OA\ylXNŴ&8ஏ3_$R!W"Ć\-[ʫ?݌dqZLX2diQ
q s5YCκmZ3YݺB7Uψ8!E|&XU!	pV@Ō.d^pjAI!(B(ϼ/]Pv0Q+h-4Nq_qx	}gXð<`i]n'o"<G7wizaZs3N%Peӹ
sU|&zm7o!>&+ڢ7<{f\	z'aods<*ZE-Uq1a<<KEx(WQb"I,&8*ha1cT4¢RE*ޫPT1"UԳUDXTa&|L|BT* ?ţOBJ20¬xZBUьOϨXĢTL{NL|V4|N|y*pϫx[/=|K,
LDAWp#
v{,~`'fV-,ne&|[m	!܎+x3~.PVQmYşXYIx)bBBQp/> !*?$!܏/	.|_YQnnQARe,BU\^foa?w,~Q;J<y%)w跬<4?Ҕ'Rx[xUuiý\A`/nBq>JpqP!֓zR`г<%*=;|17%uGQ$jJGĤcbɁΣx(nޚOHq,t׸ě*!v=JObݧf̺U7qAr+bcs}ϣtN㨥5/8,VD^H>xJ^'1UUlR;G09jQ}DvanDt=	;ʁǙ30/N9'9`7"fhnMeJ[>!Q㣍,L	>SbaO#Fe#Cֶ%89j*hjMJp<;VE"<t~JA2f&ؠ|!~K8؏/;S"7.6Zeon>"^Yj{Rb5Gp_Fq^LbFKY}qew,wjdx^A}w]'xBnb(o[D~{1v;ze2fLT[ʛˏl/O˻zi8)# \Rskb9e(\3c5tKWT
QM9;0	{ΰQפKӈp(
<ME,jJv>lw_
巶c~;"6]l@S#Rb%;͔}ax:iv:'+ǚm)1-㠺چ5T
탬6[-,G2A~ln]J)=g}̳<ʹ,Xd-\JYs!a;9f$:'sĞF5AIdwf;hBߗ)q^N9Q{MPK|    PK  C:U            1   org/bouncycastle/cert/X509CertificateHolder.classWy|֖Yy 2$(16ņh~t-%rpzwWzu ІGz_}}CZ+}o7̛=ă\!Ğ 
-c>Hn
,$Ej5%@QSiJl^FќL"3ْTGBܥ*jn5SuA5%Qo-(iC2լ4OD[BCzZBI^"4իDo};H32\5ޡm+qa*70
i6C5%E` ZȚ5ђQ*90U`搩JƖ
W}HKeꋼíT\84S=1*8^\,
D<;JoU7Q	IGI+{T=g4i<C!4'8dC3J%Q3AZbAe\iX|PB͛m.x**4/ݮ㥖8dSb=azϘnIeA⑮,K鴚R[T!f֛$,.s-.h$k`j阝挒ʨpR1Marz*6B&&S֡
ݚi:+5Vҡ+֯D0dȅ5UY]Z]譥%Wcfo"A,<Y[UQ+vSV?|{N򪮘9=֓<ds7̙SύkZc5Mj-ր[_&oNp1Af:9N7%\8pgXqSȚWfd31F̱q*BnA3B]p^%KKpmNP{?T>+*WIf[D<U5"q"EMDlqD!b@Ġ". ?,`m-jyIj̷okK"~}/t<}ċ"lWo;_38
(cn-tRiuJ"3eh%_3
ʲ$C#̲seZs~Ij1b=^:9Q[s.QNӺ1^ۓXׄ:kkU_$|
>Ayj`4097|dxL2U3]du9V{~~|іpfMWsOӏ=)d޻j5Y30!B.c=d\<-.BPj>H292\<|+71pXSp6)%!XKe2Q^.!eld؅Wʸщȸ1o`7X7X7XɰGd\[e,d,Q;L2|H#!HeH14&p0p'!%dy	Y]G>Pdb8 a'>E	9|IB'f[Q	:c4g>pm(>épL_[GWzռruq,ҷbJ~
@!$POM;f\e\
:aLl?0w
m+hߤGߋN홷R	D?Y򀈔  Bht|YDG M|C: Xlm,q9q O/q֦
|B	v<3EÈ:C:
Wҥxg8@=0u̠hul5d~&KjI,Iǋex~N_.c	^XYqec1e?rIUIƏ]Rҥӟ"VU#Cߺ
q7ˠ/Kw9kG-#X-_
	1;'ǿiNBZ?	'MumVQ`{I|>m)TgG=!ᘕlm;؊sX%"?"bV/e~t[9ABPOю{8}#h?}u&~^=5-ץB~`7&gt:Jp:yisn_KgJv&RZbD_?PK    PK  C:U            >   org/bouncycastle/cert/X509ContentVerifierProviderBuilder.classOJAk5^sJnAQH@30a!5~%
44]PU]_ 8S3Y]0 nYrƙ2I7wcB|#'
"QnPyIb"ѲZ:
KCJ~vN+[xLhd-v`L u#MeO.j
'i뤙./PKX5T     PK  C:U            .   org/bouncycastle/cert/X509ExtensionUtils.classV{UMva*P@,{4E[7!ҴHJdr31s
*/䓟O~zd!XЗs=w~{ν3m 	#$x|}$.e41	-BۮeLIr9[قXܘ1XNRZh3$lspy>k^8
>D>y|qg8˛:)w7P3r鈑f6|t36,S*ZLkm睴ig+	3Nlb<OpJdNҜr6KMi<":%5q`9Cˌ"FqMRc3VxDU+Zذ±yeLuF3	Q0Cy#uDwZt8itl3LG^19*.⎛(ܨ3v5&d96Gڻ2 =^x,r<<LlxX]D/(	q=NYjkv-+KA8\Fu7v~ܪ7ojVo5jý,\R3m2+c2v%c=2XsYpsMdꮚOǜgCF:frvb%
п"GMJSmN-LHoE@@zY
No$E\~'ӸbO~2sQ8[{FWuٜu) O
aG;OD]6Ԭjx>@{}l7iIܾ+{_>NYE*V1EE;ZUBtbhGG؈*)BlFLEW	UtcLB؊	
Ψ؂'Tt Ia='ĔxR:<Ձ#xxFY	1 Sp,!Ga+8H	qUAL+
Qe,ǅ.+D^sBdW(BVam[)Y~9e'ťvrG3/q䗴@	p{tMEq	JlǦ%KJxk~bu޼XmA,[Wޫ:kowyS[x5zqIgrIA^JAva7P4IP(xw	-Q5W$;вOl-*)6OEk?	!{)Tċaa"qpIE))ʎKX u6rMKa'd԰}; PK#;8  
  PK  C:U            4   org/bouncycastle/cert/X509v1CertificateBuilder.classUmSW~\Xm-%pbmQSmu6a]nvͮ'3M2~kgsڞs$Ȓ3s9_)|ۋ^Tp(; ud%rul˳3nF;oS[[N4!um?p'+Ppک#+Hעz0]Sp4\ӳZvT#ׅ'Uk#t|j&ݭ<T	iCcα^hٜhlG^iլeu`̖/89O.ONkfz1dMHVq/NuzZ
x8scsZ3UL:n]xu3tg0h3}cFg17֭p[!7kGI.YcQ-j-_Ԟ,m̶ҘSaNPhG
xK`@	W^g3
Nf7gN~;эܐQCFJbv/⎵ԋٱn<@jR>jWH<75
6k_5o-&\ztxgC~Я0W%~Y̰+*6 6];4$p!ǐg6&4
2РcR4\p
4Ðt@ a|bnȰ->fegpᖊ(bNAb_?~~wX1+E	F)")Ar~MZt71Rh.z= #$0{Loy&tj9kNOob<4R{Xm"Snӟ{MǛXn3V
ḩh`M
Vj`L
z Y|8B$.дze_Ykŏ1PK2  9
  PK  C:U            =   org/bouncycastle/cert/X509v2AttributeCertificateBuilder.classX	xTWo2K^n5BKIBT@Q*	HHmf1ytt
ԥuZKTauCkR]9eR
ϻg{|(uu"Pl.@u~jx4쵴k-V2
[i3?Rо
N*REfZ4#î}nVka݌
4-+kfi}D7cM8mi%e͈Y&EɎS9%jm^7sq-⟔\ԓm%)dB.N97ImDh7(0-KٔǙ1^YIJtGut2Ym)]ήh2vFCR+e=
ml͌Jw*)qMZZS)-~t:u=-6ѰOOZ7;!-s=D	U;İ_`m2P֮}}vD';q͌Sn;9lxL'8ƎYF\_8.s㴷,uzHncb[i?˸xYH)΢3اv!^.伖%bIE<ߡ[[F`RΧ`iqC$gg"hq/y۩)B+3v҆ޢaEְJٴ̦d~ۜ,hjVt Sy*uCw'
{R5TAOܞ%m~m:rzvt(X`
.TBE
.VRRZ(x
`
:lh0t--wK_Nč%֕cUpNHŴ`\0Ǝgg[;fe	
u1LK
'bNG`S[Π?IeմKY
Kʩͻ#k!|B;"Yf {y9)X	}.Et	]Xʓ2UGy)%Akot{Lֻr-8ZuVT&(8W욉yXUĭ
le)^tU%ksbAAXN{Q6Xصǫ<X6"j?,$u7Y3{Ɗh87VN&o~TϠϕC'k<W=)[UYm;O3*|?w4$ys}[1i_[\bHLK4 !Z"DK29Xk )
lH^k%6aD/K42lK$J4eqD^.эWH<x,7Jī%Ű7I\%Ip;$x3qTUb&т;=»ޣTяb'cxX U13|\ŋW*DFU85k~O3|FE!G>)bUx`&÷T0|cG>p*m
؁1h1 c
VTPsh쳵=p?cT6N
!TY~#m#n#a<J}0£Q,h#qt;Z#aȍkaPC# v.ԎGgf|u@LvH<=#ywE)wǞP?͟Y|_VEoŁ過`tL,7āSO"AԪՁ@\]RsD
܉9$r6McE!~{c[!$a5
lNBQq3Ob8AY,pjn9%p {sZkP%	4{"A'U|4vT<ѳbA/-wL+
c|`)6mE1ODO	wEfyJ'Mn>%҈c:>cvu qu~S?Bu"쮜7Cۘ>+Q',2~1PՁ1cN~|F l.e˪gMAvq5Vl<JL9?něrgDNxF2'GD@vkwa
O{yF߃bX PK&    PK  C:U            ,   org/bouncycastle/cert/X509v2CRLBuilder.classXy\~&Q"F4 k؝,ٝEM+mJ#}#m6˶i6H?R3X|<{}#ya _XV
Y@qC%XvkvZ
u	(_zt3zRL4CgLĵ=kfZ&*Cti1xo:ݛ2Qu5FT@i~W,OG";]CjbjfNNTnTC,y/p/c
Z1SуdWX<үbJXC!ZZ315 )ӲTI4cxR%9I%l9-Q,䛨zMJѪʌЌ@Auڶڍ(z8p`$̨8|JK"]+7.霎|"Wh80aɠ3#j@mCmVQ6G٩hamf1Y/6]5W2c
tiP JoEz's6PHuVN
 F]d.

SZf[OQ
1qku}jpߔ4mUniaˣkE4k^UGYlqT7tigw/3'8d42١ލmRӰ;Yzu"6QD&"ZDl*MD-"q*FDth[Zu
RH%w]
}*k>mW7d6w|R@vC'rUIX#U
{Ii0נ䋵}IGƻ؅M䂇,IihP!g:InsH
aSdTZ䍅xxc0!yCAfgd?ڒWAh-oV'z>\>#,Z#U֪jEBɉs4z=KMu##{:tߨ<Txl;w ){hil<vw}[ֻ<NŻI, Nfa<=Z$w˪~Y.nn{.CKr<z?{14zЦ}^Ktw,mzk<z
q6W2V2,%(QXl³esd
C&d\,Jq
T
,JQƢ2JɨQqLȸS2vAg!c%eft&c2e1;YH32I]F5R<wb&^nGrLF^^qk%ƛ$$śYЇI}-nG%g$0],>CFe0ʸQX|GX<c,>"!㴄1e)f#[Y,KtY̱/>˱.3~n#DwK_+L%x_殠ďSX"K5aQг%8ɿj;|(g/`tl=:L_;sq)s#csv?>
\/qvл[2螺m%ر&odi$C2GL[.Oh`J?~Q}Z~Zjwp&s-Hi˽\="E<u"D7%O:J"Po.@W@E-*GerʊK7}
-J4o7Y=oj(~SBdᏋWJ:lԅU;nIN'1x;l,\O\:::溜:B?u)ڋAR:4Q:lC.G\5Zfkq*`YU<f/NعDѓX)␕:-ë\E&؈Ije?w\a|ȉwgkRLR8{_U%$9|e-`/窊B/3s&8G"[4P({}k.ܵ8:xv{3j'^*cXP9N۬>	HvS}~ma/<~XPKQo  %  PK  C:U            4   org/bouncycastle/cert/X509v3CertificateBuilder.classX	|dY&H¹!&aAjBRL%,nvY[[mkm
7=lnXlk-Hofvw6ϼa{ ֈ/*bX$4u!RZ(7
Co%Pœ5_6DQu\)PƤ$PägSQ=Nl54_71M]QcHFR>hRaAʯoXf%z8BZ҈TCkHE#qH'5R)zpg3fpLԆ+Q}昫DL
9'O:F~mZR5sF*:ks##Y
v
lʇc.G{ô'-Z1G
BvSK[C4T*UڧRjĦF.kԥғ֐~DwQSG-Ucё@~o@zdlKĢ+]*cbFj,K=1mCHThO;GݫzwkϾ0L9B15	bZDu&#i]'cmz4NqjSVwqsR+i#*NdDN)z22bZPMW;Wu(;MS`
[\L"bl|QeBrh%Q#]REmR&	Hi<Ks]ض.XP}\$Bm)-f5&n(1ָ09([V@o.͸p\Kqr~(VM:xI̜kE_Nq
w٭N6|ͽoGzB'
z94ԤagcEW*.2j={n	3%̒p%^B
6JLB.	$tK<	%\.W%\!a>	J&0 aPm*C`ȤIM[JxZ]rti+4=_<<JWOjvE#v%]>W3~8T_qk?I
f唨Ea
,wpt#N:r$vXM)]%07߿sdZn橒۸{j7%>I2l*nqD	')C:)RYqRmLq5QR+ljdfMm%hߤȚzZ\v[j[KuV~13;ߐkzE1ޢT}z
iMwk	G:ul()꩝U[5[e4}SM_L2(du[pٯł;-ξKgsLX<W7nԾ~JFtnZwn]@8N>Qt>W(8/W6
$.WZVPƠ@fRPp	^ ܡ`^ W5
qUp)RP
vn~{ZxYEVMxU88j]Aww*X{,g
RVbGWA;>/bau ÇXˇ>ªSЀ*c
|FxPy03|JF_'dD=Ḍ_dße<2G)|F/Hsߒq~؏o0KƍF|q_0o2^d܄3ULf>?f	~22n_daxZ|_c!Ï~$S)C?`;?*G2|$O<0ܓ,%P=` vڔ[)@QoTA{tBt@s8nn_rLtRT4d|cb%g*}RC
io{`LqX Nq$[ČhasF,gkFdDR̗ʌXAJn$%ĩN9=XY`qmcae6o͙&^B3dĜcbA,$mxɌgd&\3T	J8 aD5 ;FsS1$$axi@r :H-Ri1TG^_HrS%ZGt^<ڌ(#nrZ̤
Ts5[m}>0q(uQIg.Kjj/V$DM4-Oڦɦ)ʻ'ljcJrlB95}$tL\"PWʘ;*Z&bjώFE6ϪaXI.%|9?KnZ`%'A8j$[I->5QυW(cO.t+iNXℕ}>3*	VF N7Hm6AFwLt
dDU*ψ<8X斣bXsuNi{x
m
!݊v^6[	:}-\rKghR̲0]k.SR@Fx[ƑXMmzQQke{/v`(pF{ػ|c}X\O1S#0݃g )obc!(lE[3Q-Agv;hSixO
PKV^j
  I   PK
    )D:U               org/bouncycastle/cert/bc/PK  C:U            5   org/bouncycastle/cert/bc/BcX509ExtensionUtils$1.class
0Eoj5U	]%
:*IpMc-9~<pr|Xb(TCZfUdFspVU1|]ރ%n<CX@/B"	LJ2sCކ?wD:l9b?,nk$ϾPKC{{i      PK  C:U            H   org/bouncycastle/cert/bc/BcX509ExtensionUtils$SHA1DigestCalculator.classTRP=-6HAoAmK˥HUE_izaBInT|(ǽBads6M~y`yX7
NNAgl'Wt
2ҹbڦX%Hi&(Rv^n)p*k{2䮂n
<3+#xϩ_4?q&jM=0ŗٴ]Lg]WqK+l
bs
+95ۨ',tN36[ǨʼK3K峤.$d񖲞n{cE-=v_h^H֫a'}H\( ;UJ%vQ:rSRD8֪e]pTSѯ⺊7TR0~eӗ$[,[Ho0cSsL,"ko`Hf3@ZTЃ"P4tCð47Ѕ[@cHvc
a`N&|r9a7n#%MZN>D`[qہVsI:dGSZ"@M48v#MP9W,6s^Gw	
%!s2EN #?hӤ*9=:Z<Qk#
`5OGWk`,~ڞr=uPK  :  PK  C:U            3   org/bouncycastle/cert/bc/BcX509ExtensionUtils.classSkA}\{^56ZT)*(!CE?7Mp
{{VWDUܽQ{"w{fv>kcI`kh&Ҥ"mwEddO
MrO:}ͩJ QOT=R˝C#UDPUvT؄r
}QlQc{<O¯	c?o֟y2lDChbI47CɃaÜY)hIshj(ːr0Xjf8~a^E
21m` Δܚ0grݿ\W2RfL%@.Ǌ3WYQƲJPl OŠEBBºy5{b5oYo9ߒ1Ƹ1:Xe[3]m/`ɮ$>Wc\A'z}ͲM|w7PKC  \  PK  C:U            9   org/bouncycastle/cert/bc/BcX509v1CertificateBuilder.classR]KA=S[ff/=}RAaiH8ڈ+ (|q^\ޚ9瞹3w  HKWM!hvٓVUdlhzE_K%8T6!g	ʅp6(VQ%7@ZBt$K}@3|øThcކe#a#IݩM3^"&P$n%f?xB;^Esu~e٩ZtLjt+3|&鿚7FloHcKiSXj
)X%R6
`Hˆn-&A%r7d^f[n _PKČ4U  @  PK  C:U            9   org/bouncycastle/cert/bc/BcX509v3CertificateBuilder.classS[KA=1X/퓗KCu2qBv'Ί
>'ka7bvw75@"iq-Q-ُ(%LfgJEs5R[ǜ#(Уm'Dr~Wu&X>>#@f`FQ42CøQ:vs0 q0J
`<g|E^L]oaDt'[lfzb32\%)9ujFn/
	^ȚJ*/Q00&](x(ձeX!>`6d)Sv,<lqjZΕGK?	x%>cTZ<PKzs̚    PK
    )D:U               org/bouncycastle/cert/cmp/PK  C:U            ,   org/bouncycastle/cert/cmp/CMPException.classuKK@5MGl"]&
qWq)Jq8Sҩ`\QeE]\ssa?^ OKS#B|	BKn][)*i
q|ԕvm]UZ(];n"?=c4b+WJ	]]b	aO#[Xkh& Za;aU׀݀w'{A/_[BDy@=c|PK5   w  PK  C:U            3   org/bouncycastle/cert/cmp/CMPRuntimeException.classuOK@ߴM?)xDe/*^Bo
v]J[ҍ"x!
0
XJڹܾٗ7R⬲,N7]Wr-.PNNZ͋y'<Z|qO"]X&
c:DAheRc'!?aU55`7bKw_=ԁ&а AC'PK1i   e  PK  C:U            '   org/bouncycastle/cert/cmp/CMPUtil.classQn@=6upG@(PRAHP@J	H]NQpq<V<EI$*B\;Hcͽ3瞹㟿}0Xwk]U/qJW3O!Ⱦʎ	>dȈj0v@gvH͓l'G1@r>)G'#Py__vk#Fv}:9|ŕ\Ur^'L%Mʜ*`ʤ3SúCÆM
[5dit{:CjozsjJ1j-[i	
}?b!(Ub㶁\la}yq:nQ<qu!ɰQA7.]Rl:e3ŋ,|PTα118l]b	JȍQLEs5:kHkPKS)  @  PK  C:U            >   org/bouncycastle/cert/cmp/CertificateConfirmationContent.classTnQ=h"(U[Z]b|0i$4&&EM0M..ŤJb#>Tg+Иɝsf̝= q!wf;_ig<Px-նBl2	0D:
J	{Jx!Uw"P%B2d"S!q^zQ6ʾpd<h"}W
1<9BrKk[4xUۃ}7guBIL RydV)h&?xIJ~!!ႆ9
q
5$%d^b<Lx,c+wqc$v6GHx
p?D	j@,KX
nǭ82X2VtG2CiԂۯxX!XSSJ@AG&1(tr}
dS[0V0: &q̐edg
zk~I~`}}CʙX4sQl=B~iP "'HkHiHX~PKM"#    PK  C:U            E   org/bouncycastle/cert/cmp/CertificateConfirmationContentBuilder.classVwUmGyFDVLbҤE-ZAo7t!
MyVۏG9P{sٴlJ읹;;ǃ_~%UB ڞr)	h>4~	-\$'˩4	<`Ҙ64dIƩqӴȴa#<lÙE-;62zvl+);ELlHYi}wl$+cdGqa莄5D\fẐMč/:I2^9z❄,W̨cSun]af"@&w'ǝ5adRgx+.:FVm~m]햝Q]x*/].7|*",2;4|b\\݈;1Z.J%-sڰsqto[>Pj{aW{TJI
"](<rc:jmgX;bs]kE*a~K8fh/c\]LjUo͡V^9Yҧy1hVz2&{ngb{c5k'쫯4-ԅ"7UuUKt uZQ+cNBh8VDtoF2lc3<IO1<@;ax9]3Db#g\B|di&mIRgmmAkgiDdIh=Mn4ZVq{V-(Ww-TUqiE.Ɨ˹݄n׈VwcWI&flb~TW(YU~pvґzq&4M	s:Va!AᰂN4!
6epDl+
҄WbuT)؍c=`-N(hƸ`'lIqJg59A^伌x]FW肘2	Lfd!Ee@FF/.ʈ㒌>Lbx	9e2qH!LOL	5cf$Aϝ`z\c"YK<?!Z;^zX RFDrAH"D%n!%*,>'P=TkJB}|e1qMg=6sb
8Mbi(8MHҐ֣_@~k4пC(3	?G1;Aav6;9?/nMJ%|x#4oh®ސX@taá9|J9\JqϵfZ]|ԹKxooH_@?Y?Y;w𤄛)HS%|Oh2C #qnS<Ea!I RΫZ7PKMn?  7
  PK  C:U            1   org/bouncycastle/cert/cmp/CertificateStatus.classVmSU~
EZ)Rm𲅊
UD^-hݰKgAgl;c?:o8I c`ps{ι= x߇°hl]AK4TF[ئc{4a<w2
B>&sWDv,'av,^$ceyV<7)XY	
4{bUSAf5wUxt6Nd{NeP&"s@/?=i\9{FzFA;f拼P`Y^ZX6G"J=YD=]9O;;.qAɬ:H3ld=n3ylҷ7]/klc ln3fL.3dR837RȔևNܞ4NpGs6H3 jƍG͹ך
A+&uqT
|(,ˮ+L֠<p=c桒mT(<xsÝƛ˓$5|bƘ<v$\2a(W|T!V2wض#2/0"*^Wѯ⺊7T
RT񖊷UR1bP;**btIĄD-@EcA]YQ]]Y*9RDkZ1k$lh -]X*S5JVg]
э*6TUD}%y#HQ^Z-JOe23uBt\.
F4?IOV|qDlSu踧
:Т[Zu#cCRaZ5$u\AJG'ftbVk#Ot1CEZ?с`cY
#LhI|.lhU
cؔbK/4}<0GR0
+
	k0>vx 0`ҧFEU~RivPOY~Mf$nR4#D?" 41vCϐO/iThE2*eDo.!"*>,	ѸO >TDMX1ѥc	0#Z9F7j*k-BXn_1R_	B)\O?Q7N;
/b|^E|ELۀ n PKEb  {
  PK  C:U            1   org/bouncycastle/cert/cmp/GeneralPKIMessage.classS@ǿA/+"H[ (3sGI'"E3Z7H3fwoo\ǳ6hh6/*uZYIRx(/ץH_BiCgPrtD<d,t|/)
k.
=o*?XE=S[an{u]n*ȗ
«:k[5ע/.9nw r9.XA?[K~ɳm+,zVjB鬊=)Pg~
5`!=9nZx"n}TȃP{9"}UdR@6W;pC'CC7C/QcNh=HIzm'w\M1v!s/2J.UHs?<P?E5gk7ܱ#W
͵T1hUF|JKn5zfXShM4pF	6$#vGe,|t\m0
uwuAL踀JQ➎!L`L	:sj
~Ǣ9^|x	@CJ4FiPrh<Y1Ҁ&7^n
x,#EK~nQ7*IUjxJ7<d-T.GiUM<gNxE@&*;^Z5Z_0UƣOAW;Kt9"(c'Xb+kJqq):kQaPKG    PK  C:U            3   org/bouncycastle/cert/cmp/ProtectedPKIMessage.classWwEi;a(QiE-

WKt7l6~~?Q7!T@sG<ǣEwf|s{g+ 77$7jhs]۴#-w6ΕԌZWZTs
un0-+$rThM%"׿Y7zRSrB[Pb>5,J%aBv-[2AETQ*%LY3JtJ1)Mвb
HŢ(<!n2Bn1iDtja=ë#!sME&爍A9l2ؓ4I4yvL5
䠵o&$qɉa݈	%BLFj|xyPzHX[#h <+Ŕk3E3@r]ԜT-ڞTc]:5zJ7 &,6;c-w"/&YL)Kha:.f/%oY	P4S+#5lGﻍ&`^i\^8r,k3:)"\d>Сk&EC1 2tcdLNgbgd 3?hQTc6Ð(!&oT;\0ut1a3imk2%1u klX!ҢdnOW[Jnuz3TNS(w0g0a>gX`XȰa13`a%*VZ^RJ2H.58۴T=T^"do?xSJ8B"^o`lԪpr^²΄u@5Ar^v?=bu>۹rv&܉79uobGN%/*
7EX]cga	j/rX^f3peN5J7He8ٶg/؞SKtjp/TIb%LE':0N$^	3p5HI(0zpJKClHX8C&.^<6.<ų"6☈MxQf<!"h@D7u=xED؂xUV+b/sorxMN'b>чx[$A?r|
3\A|Dn:۝^G>xPo@@xԯI*E3|KqԎaS_]>L8+^U0f,@w0v6+666=3S+Pn>dk8M&- mDQ٨=-)Ν)>c;kp.c
ɠkMI44agqq
gFSQp-ٰa@9?Hp"h8Q/(*l?uFtaW}#2)|JM
_Gpj::%F"~~%vħIWM<Q\q?VUNjby [F]·)l >!?Sw9Ѭn"Z@v [HWEmf??#tc(F+`e@hPK-  q  PK  C:U            :   org/bouncycastle/cert/cmp/ProtectedPKIMessageBuilder.classXyx,{zsI\R$YQ	-vHVc;QLZ 
iEzі@[zBKRHBBﻥ}}-YuĒ,{vf޼yZ?G ؁7oԹNXx@>+=]i`LwjȈG|FRͅU}JB|}ã}jfb:+1>S{M2N	OXJj]j\{:FxNl2aUWBaƈ
kzd=
CJ4a%$97
h]1qW	%Wؕ91JTKV,
DB_䝤7")`=aO4b5Ȭ?/~_=dUr&C,)\CI34f\Uf-fґp7
E-103)*(>1S3t-bY⨢G|hT(рI(xqmw]mȋHE8EvԢx\_fs'0
2U'ȔȵB;ǵY%uUeI椪HT>l.O_L
*s\ȷT$ɻ]vuvJdGgyh0p;j6ukFg&2L*>9DjVi:N%OJۡl%-;bL
i=~g#N2ԳԸ:7Yx\955LMU/KK@i,52
jupOKөһ\TKm$O?F]J!X%R*-]GWDN&b+D\)b"<q.PqS\RS VGeVQ}}TsV^+_|ow!=s鶔o|s콟oDe6V,UQ-za+y^Eh3z-)n2#Wu8_ː\Y@wؔ$ފ&
tU|S%ҫgZ"ʫHƏčc$
VJsSb][&uz՞gw+Y>PI*RJh-}
CZ^FyMKJ5\)ժL-շb퇟ATgA-aȕۉ-"z_c*delfHhBU'QVPϷYO؈،!A-e\F0H8O	Gd&Å2$$BDiWu~2d &Z,AB\sSuH㸌12v2KdKe /[^-c=^#e?
bx$aoaxQGf	cYx7'%x/0J;$%܀0|C0<aSb4"C8)F|D"'?0ϐfBq7[eMax	!󪏾HO}L%tӰPt
 p@ONkƍ҄AzFO#_cƭ6c'{'@0/co^љƏqfQE?*6qMqƛ&='m.Q<i-nIm6i.iJv+`"M^[ֹoI=eIΓz˒'%}7Oƫl:$z8#%97-x-2.
; Ve0lvz;73zLi|uG#f0FԙYR",By
եp4?
D("B" O+A˫s/U9'5;9]I73;T%\'h3pp/
8`Ac)`u8lBi&gk1i+>[J#uW9[gǥA^mu.lP
?M۝O?A/G4~~XƓ,̹u&CSp?EM>A
H2GJّmN
tFۜi|YHk)|>hOɹLZ[F_ PK=>  K  PK  C:U            1   org/bouncycastle/cert/cmp/RevocationDetails.classN@%	&$
)p\,H
T7H(HEnb|@oJm*Ї
NTp33;O h2Fa=Ju$cA*	CIʘLqGƞiSgލtO%썸Oj-]ދD$:PIWmq[~&F3`qp29ZHCʋѤ"=[GũX2P4`6`1<g%q2G 5}M'B={ԭa?/.I>fw_i@X`,X(`B,Q0jxmeX1Q9jM!]J-oe$H) o6c/><#?>?gP?P}A*>\i J4P=PK8|  w  PK  C:U            8   org/bouncycastle/cert/cmp/RevocationDetailsBuilder.classTkoP~θT"&:&*йܼc/DD#ItΰLI7(1My.yI
ҙ7ǆeO50w	j&ڋ>md]jMuڱMюמVe:ksFK{M
CAk7MֶYeRmfzFsoߦNmiۯN>u]tQ+~LC	"|YameQY|qاە I8'!D+MBB
>rAW&wj.WMg
˞g\f=m+Tqx~\崷ʴqG8?4)%d'v82')8
f@$\T%Q-(PpEEa<2"XMs-#&1pG@Z@F@VF)fs+6?<mZ3.Vxtk|ț!#VAfqcLqGP]d\(KG(V(\(T]E+BGp_y^GFb	w>>BE֏PK9&E  i  PK
    )D:U               org/bouncycastle/cert/crmf/PK  C:U            5   org/bouncycastle/cert/crmf/AuthenticatorControl.class]KAɇĘ5Zc"D*B$U(h
J&q]D_UmZGId*m݋sww ^a!^wR;IOa؉
\JU*ޱnS+sC_pҵ?tτrn0Υ6-^v[+O)G}9]u	giqa㱚**c:@I|!,)im{cX<\]j>Z>bO:Aw}A/ǒ#foz'	d1eBYL(Q4X0Y9< EfXÂ1_nxPNz6GDrqw`Ô"f!S2?~#4'Z('5RI#5r(șEPkRPKC)4  2  PK  C:U            .   org/bouncycastle/cert/crmf/CRMFException.classuN0&i@)̖H^؊D0kL
1J](oRQ%B\B`s|sGenGfheڦ_2wR\[!6U&&fV%B
U\29̽zHVy
1C?Ni5h2@+C#a# Lͅ.M<)4l7h|=5LW@bf{~Cԫ+>1> PKKA     PK  C:U            5   org/bouncycastle/cert/crmf/CRMFRuntimeException.classuN@gΏ	@bt
]*hJ9cܡ˙+BX|[aa
DεϾε&b'J.s[җZ(Pnq)_"B+B@>z~읜zѯřwɌ0%bm4h BE
B+<	Nj&
7ҽl+h?k|PKF   g  PK  C:U            )   org/bouncycastle/cert/crmf/CRMFUtil.classS]OA=˂|)V XZ`AAEj0>Lmu6Soᙗ6DQƻK[Q<٤wv=?~0(:-[%G:j^_d7^(dJrYCRv
JdK/
ˆmwKy2DE`ЋB"qGn9٢h
E+w l0"#+Ng0]hiJ⾜V63)GVx%J<;ܷV7s/7+R9\;)Q{V%HE0kpҦ
5jЯa@ànRw-ÐI_ղzdI%Z.-P}[s?w.d h9t/[@"tcP`7x0၎R:n#&uÄY%/>C/o	vS*͡>:Y$kxtXAL*xx)S0^*baP=T3zж!'u
	yRs&1&ґSěm4cI|KT~PK
=s  4  PK  C:U            :   org/bouncycastle/cert/crmf/CertificateRequestMessage.classX	\?Xx0Usnb*X	GI'2aYggWއmLEk"[[{ߧ=ZffwGvY;w}{o *tT
U*h-;yii<#a¯߱Ѵb]f:Rv\kĺp	wٶeJޤޕniThɤ
(ݲ7WbU3a[f<%0['"fT6lKIH*1fHD{\@ew.1XB+3-	1t,5*ɸf;&?H,קMl-TJѠvGlNv2mgW$ifLu^/5֛ 2Lsd`dLHa&8*һFdUuF(\f-ݵjʯ9? Ө
54ZD R78,3;-=c[Z午hIcF5I4E>6N"
ځ^ ha\|MDw-g6%bីJPاٽ]V,=N@'l>&:ٝ6ԏkףfkA
k:q&-=EփF %}К0 -=hӦ:bӊѮu݆%JqæX9;j%d-o	)-ҳSB*%+Cƥ92K\d@
ny@J"/T-p$p	c:UQ3_ Nu^qnFHn5)/܍gC7)<zVeC$/Ĝ%Mܢ[޹+<y&J-uļu'mc8%l2^n:H)ajvBJjVJ;ͤ|YY!#9[d-Mn<؟ltĽWL#l3[X6^łJwq($]3WV4#c|q` IDęgI-s$ΕxH\(%-#qH\*qDċ$6Hlx&!a[$Rz+Vݶc/_C	$+y[ܲ1{cGZenOnl.=92<$HkD*u- ?!4cK w\^-F0B3Xh1'"ɪg풙23ו\_,s??clLBky?sYk
*Хz.x6+Y_<vNI71bT[θ)ڳϜ39,^l{T0u9xe^"V{*S.p
s)wWL	\0o%:7A{.3cQ+r~GϼO
V_`f9;zJfSٜTƫTeI=^b!^*TH+P"djTתx>nWשhU71iU,U4-y+6ݡ%xex&KrɌwXTUXXX3*p@|V<|Db|{|UD	g`B|6crI7aɔ8`IU0$\&?P`S
8*<&_T42(؃|Mke{SsLL~:|w\L>P}{91
܌+؏1yD-,vV|5x~!1įrt>Câv"c}ZrK,mMWjj!R~#J:#4h(Em=%4 pYh
¿'6NmHlDj7dIQq>Mvfd!vh2dY::%IQ} A|nMCx4D+c /=B	j+B	Mc/5v<Z\JTKǎB P~A+PVs!#Z&Obd]bQp'r}~gוH_QlmW4Lm4)<9)&\ޯ[<&B,<rBLPP$VK/'gP{\A
j;yBLp'm3NcGP? <H{B*1JĊc(ЮB[񢡪sBDM{<#<o9iϐJXNm`JTFEz\/q☣y=>kLmv|K۳jP1	OڃD9Ol֡8ֻ6JZ>*l^dڔg#po;QTPQMzrMI6U2&cQO;jm`Wˋ9VG$?A\e|+xnNnsRRܟ>,@#0}zhpJS`R#mRq~X,U;)>gbQAA-@mOT[,}Ob/\QPK3(
    PK  C:U            A   org/bouncycastle/cert/crmf/CertificateRequestMessageBuilder.classY|^gqb'!&	qB-;B$@#/lǎ =gEA	Rn
]@hiҽn.wwdK:K6{gvgWߤeq
{;{Z;<ED"a#		(5C
4C`~-fhG4/[|:I4Iю{SH`kNOFhܩoX7԰9i
{c$Úhw,~5tH;I͂g4jWyИVz
i5G9עy5^lKC,N!lkjͭ[c1X{PݚԮ7iĢԦ*	C#a>DF/uMg׫PZCx̯FHszxs'C!lbUkscaChYs3
A{#qͼ
91}j 
O{%;qF,8Km
7Cf^87.7L<9ؕM]f!:Vp8qdqwƂטaPNJNr;zZB0d`N 2HrɁ*+-4
z}z۝P4tvtw ٻs>lY=]u3/0KLЉav`8@W<U%zO>F=jcq5g4$WV=.ӵɽX׌ָqc4\`IV
T`Z{u=V<6tVH`,CYR3RuC[Oڜǂ>!ޑVmˮjrAެFVaݖ>_^}WuN==$ZYHVz	$lIBF	.	M%lE[BI8Gv	Jx$/	;$씰K`yFU{w0`73mշR܂&nRhɁUeK*Lj;rU_/A3JCxY,5VviCcw^֐˯3{m;%!چ.]>x;_NC3_t}7\
޼[kiN&[۹49imaHވLsѹEd}sC._f;TU6:2df'wP23)gF'IMbqf{I"% +v~6eyƋɚ*/YlQ־b=$ݙB mf>3%k_cGb>%C9-W!?4)\KA1?9R*"<>3As8j,#{8kO4*-a.PHAjy/TS/V2>XmUvhA U&4tsp2s2/NSZ*ygh>y4A~/&QB+X]A5#@5
zpG☂%x6\EN
(VPg2YW*k&oTpޤo[UAަI)LnPٍ
j.n^|@Rf]!{aL.G|}Lb|y?t
:p[ug
Dp71&LL3/3
{~}I?*cɠE- Nʸߕq# ~#1!/e͏1=?0#?13?dh)aOdxL222Fa@&22b!_11w%kL^	`
&ߪD2@I[dXaU꿺Cq$c-WKH"8s84G
Os3G
Cs 6GMs6GZs6G
ek!80!VPLOW]c8j#	|	bOOSytscxN`-i=aIMP\wqduVUı9p,Q9Pbr,'Z_SBqb\J.q9ƕӰE\f"	Q3.,n+ePҾ}8̚V!2ėPdr JISM6gYrE^m?ekgvP|s6Sm:!0_u	I,᱓ixbU	<{Tȥ*H^|Ɩtm;$Ɍ	h1<Uꭶ+i9,5+n>_MQϵrZSs&*8.çb'3\Dx-<dZc3,b!k.2Og\cx8yd:^sbkSmX
{:)
﵂P$x)oo,!1kfp2Xb@Eyp	܌m1^@A&h(p?;J'pWWrBla@B[/<RGfK$niY'%B$d*N olGb"!(%ӓX\gNƁ[jG$ĺeuuexx\l #>:5.6$lֲ8%d`uuSuB,7vlWY	Q|\,F-ț"L})'&ĚTlGճiFgP)PyQ%/{b+).ZaIPKΗ
  P"  PK  C:U            (   org/bouncycastle/cert/crmf/Control.class;o>NFԒʂTF +,1J,KIKOJM.adP/JO/KLN,.ION-*O.Mw+)ag`fg`adPPXgg蚗jȠW%jϔԼ̴"k6F6V`t2>&v PKkB      PK  C:U            6   org/bouncycastle/cert/crmf/EncryptedValueBuilder.classVwUMHiR
)%-B҅
M,ifdJ"+h=ko~Gw7I1Гޝ]f .vak]X'awV#K'Iovr0%جJi(4nVdR7[GVU3D\UL-*a})mrڔZ:ULrYCI55	KG	+!
	1-EOjs64;Ӎ99=ՒFhYPkE<00B)13fj1
MDSJ4〧ʃ%l\Qq=3gj݆̕;Z>0wURf\OJhk,uBIƂS#&E,1\[D_TS¦ē>:&cnĂLRSЂJ:<w'nf|A1=,wVIh5)5,3%쮎@*ڂɠXv޼Vڽ#%u -a6,vVX).[%ڭl87)ɼ"*bfdB@FVΘDDJ7]*GRDEό/y(f9fT4FG	
l!Nv	<.	m:<Ӱ]6UNN-^%u/JG1k[no
xcVZLQՌ
=R$T
i(jgW]-[It%fS/ьN2,je]tڷaGWiCYmA%7~^@{쵎fS< |Pg v}gxCn<a7Zp
7YlӍXe!CI40vc8͸Q76[Yx@16q
7r&<ǳK,o@?,T!DYL#) 4ea~z$+t2эd -(&dL,R,^1N"&c/t#aai	
}(}rvl/;u*F>v
p>WƄƜZ#L y$U\@G?q)h%K;#e]\ŵ<	#bǊ4_ydDr	n"K[lvnа2xwrivNHA sA4|X
"|KهHXW6dNE|Ix!\Kk=\'yS܁Rodq!R$Tq<ޢnwlH$C`ElY	%(+d"a(y}]!{ij85{ <vNM
ً9*	;WG'G1*WASo1d=
̸-L:n
~vQQU"aWtzG+wp!/l[qAPKI,g  X  PK  C:U            5   org/bouncycastle/cert/crmf/EncryptedValuePadder.classM1@E 6F4h6THBp!b,<2yy`!	JIS(g-Ze6
m`e!
+
C]wRyF00MPKh&      PK  C:U            5   org/bouncycastle/cert/crmf/EncryptedValueParser.classVWV.d#(>b,lUyTJ[{&iE˾k_s*H9~C?\@YO̽3̝Mzǟ 
TH(5MJĚ{}Pr[7t$7mh
iM-WK7;$xhnYIifvbRG6_P1bHC~C[fhv)ʹcN
uC[-ݓPIzi=9ii3aX<Mf}t
$>?vӦstÕPw/n&6α)HmU\4ؽ4Í
Mu7᭢ޜIkY̈́,˴#fs6qӞK̘9C]TfwDp[{j
Gvv6ATduSu]
2fM	'ñOK$5gu*0^ɫCΟd,h{fg0-_J^@s	z&!\OMAʭt4)	*$UB>ǚC[*u<5[lAu2<py/0`8chb34S7$w1C˻ĚNb2B6Q]	T$[̶ƍ=l*^uD=!lu?OkJmj*+,Ra݂|d|6o񙌟`.!7"O|teA%Wz1
^b۱Xv{w)x
ZRP`J!"e
\A+^Up WD*)`T~A
(*؋q2&lR>.ȔxI%21#%h2:p]9pbՉYAޕ%xG+D 7qpe\!L>L0'2QB(aѷfLϱwszs[bpAߪ%y+qzaO;! 9ğL(%^ǭu 2  .e|!JDf
߈]#D5;}>g,UPڧ|$\UX3B[(@bU+Rmd35tje|TY"e|XY7)84Ex512aH22H?4B&=
oǬ#5\7ۜƵ`P U!8 |$ +ePKг    PK  C:U            2   org/bouncycastle/cert/crmf/PKIArchiveControl.classUWEKˏm
UJ@mE	) (7IX>TTSΩMwKB
G_;~wf^pN0$tGR5YO%n=	Kd8ɎYFi۶i/I$72U-¨
~+兺lZPuU	K]s1r$4]i_ Wp\ *G-тѢQbS-^ضy)mkOwZ\4AwVN)i]PU_Q\Jmx\s%6\Y&	+BVmzִKy`hMu218+*pՋz-ap	2θ뀴q FϜ\_Mv"׸6QyPR6A7@vqFH67p®		!i7O#	p*08u>``0I_Vv9dc	:gHt*z=j)2IΔT9{.2|,ډ}Om#8SETv]ڥG
( D>P({,LS^o}
.bI01a n!Q0{

}}V03aR}}w['H1/dı&c3lʸe|-w.LN2>ahd,K	Q%,ҤYA?29{N?^FrBo8$|\A?d[vcάghYU͇D421$ɚ!Lrbh>fF=4|^ /a>G\Oi.{WIO3X_ 1p羨9'*ڋ7W(Ϝ`qL*/'X Vt4#O3? ]dۇxnPGŘCRXdHya"?w&gPK  Y	  PK  C:U            9   org/bouncycastle/cert/crmf/PKIArchiveControlBuilder.classVmWE~BmTPڒ
}QEi	FTe7g3U=x9`I]crv2g}޻_paL)L$3wmLMnsW<.
&{]Pi;pn+urjed]\ӳ8GiwpM֎)vk[<ͯ(80tsׅc5=8f8eA{ #Jgܔ[K?z~MzMlFC8\7n7#PL4.pǫskt՗7
n-wm7ɥI[W0wr}5O^
d"}T%ڮ±oo\p>A{geq?+e?zry*8B"b}䍆Qux%t(c[*oD+1qyPqθZn8q$<91d`00\"KџJ'D&&aDb(I
ۭedI$Op6hj;+ٓ}NsQ{x4,xؤCl3}80+sWI(7CzB&ǶCis8LFwtS S*u*C|
fg!p74㦆7pKCF1(gjP}!rvG9p4h/4 ;,`+rȩƧ*ࡊȫu	<*XSBA<*tHKp%9l22zվl9Kfs`7ecBBK3~Hhhb@&Ɠٹ6W~By_a1v'te\icw+m|?9diKd1Y9F)G	0/jglH Q	=cK]	W-b_JJ)6j6qbD
PK&  	  PK  C:U            /   org/bouncycastle/cert/crmf/PKMACBuilder$1.classVWE,_rpZPZA%/h[j5"PHn.KrwwiU}T|^HIB{gv&F00wx103LFZc3X*"ՄS&F=`Lnu"Mirٶr*Unޙe'Zv=Y~u,ڳ"dXM%JX`	^ہ'xSkd<~=mTSa%BLݲrO\bܺclapY0j6l/R]{Fv+w}7ρn"c7aw]~gb].nMxf<,3X73bV*6ZָprF$ط;ρ۬+۱g*xWpY
(xGU
=
)0~ng-3̭~z^!.k3۔DB%?aziyQܾ%~ЕBwkC[l8<߱de#ߏj]qL|vG>h-gtx/܎y|CD4"},hfahŠCX\Z0R#R
FqQ$_K""oXQn4ŷRБS	<TcU<Sa`}sOY-wj>uPN.rڪCtяo|㵼,=呤.dÑ )o߻.`3H";vbG>qX+i9Nqz7l&~ZpF1_H4!6h"/(Äj'`ӼKhEx"Hd;11nˬ
HC~'>) =l &͆,(=PKsģ    PK  C:U            -   org/bouncycastle/cert/crmf/PKMACBuilder.classW_W]!XĎ[!D
-lдYVX{VzinڦIڦ}nBNM__ݙofޛKhՋy#;#v1M]<+kqN;ٯs"PHjdC[[DB3V&U+1IFRAkUPShtHvnŲlQ4dl-3dL'nHvWJ1*bZ iH&4b;cq:(!%iL:W"zN#d919,|5(HmGx5Nh=TsL1RZf>g٧i6jZ434,ESI7gh
%W~B9Ō#hRqtD*A#'4>QRı])^L&]Jjj<D;Q6=q`E\ȻSnjNפ|e#t^uRZ@I`=l:ZcGGN+9p	0`aUx_'ށv&燀@]1@8,a,}<>z=m7mTv
Z1;WӥiȆB^Yuk&oX&b%8,;Пlͺ]\jJ~Āmݛ,ϖ {,nRbAL(eGu[m9*de.
>ӢVTQعiHR7cVİE,U$'#d62lh%XsѱU.*DDh[
"nO":Dt/"xqPDC{N-=/}o-5! V)Aۊ@^.r$&MM=K.-on\_l'WG$VHm+#F;;i7MՊ;VD2v+@1mV619+iT?u6N*v趰Wq.
|W 羲r|w[~gRNyt\!)/VŬv{p򁘻jfߩb-|kųQzs_\JҸR_KDVݞעj4>йW߷fkN+2vJ&Ln!	q~&a&0e
K߷	0قd4+2v@Q2BQ
 J$eR2v┌;)Qȸq=F5x˾qoarmx+qm2]̾}.>X*(}LL>L>~	񈄗	CYi&arF8-a7		%܁/Kx%L+LQ&	Q||%hxg%219<$0%AS8+$>c$ҐRݛ=ijvȠWc~w8zWIr&%TFJw1xw#;qeS'q-i:~]y>|,3Ms>c7$4'Sx<Yx	6oey8!aYז%uyI{ĚJèu<;c%]z TҴ//ٞIf%3=.?į"aOHR  4~X+acŻ	a8U?UeYVsy<oIx56Kk˞BWsX$_ĔҢNad x"*<R0t&O\@{|IZ!ߧ%eg虥~UjG52L%ôO?x|4ⷪ=i|.oW4}<8PgFQJ'/f94~Q:S[:soGY:s߭-AYH];e|	:^wi/P[!N#6o3!\+8FwIΜKh265#&*syPKԦ>(    PK  C:U            4   org/bouncycastle/cert/crmf/PKMACValueGenerator.classT[W@"X/X@ڂR@D %
K'MzG9GQlz*(yݙvKo .i<mZCTˬ3ĴqG-oCd@6R*J5˦bnU07뤄cSNfr*5$Ő(GxOYU֚%)䘐刓R4̦(ULo2W)	c㕡[>=7ղ
n̶a=&BVmi+%oMB7y2nM,C_8Xa׈{syXJeΈΚˠm{a
oF.,'T;4 sCtrni:6kvVSbi#q(Gq'9z2{$g8efKk$ܭm~AI9hڞoiH[)d	o`^Cn3m#bYz-2C^D~Fe;l;uM̫؏!qP@T1))㜊N*NIюap^*_>pMA7u}Mq[;
1` 
4)`BAD^RE?ԟOp`7̗E$[O$s_nqcҺIЩd>c#*y$t0c<d&uKF~2[n`3RdtQLXe@@-140ہ8Mey_8r94ANc4"JPK	"  `  PK  C:U            3   org/bouncycastle/cert/crmf/PKMACValueVerifier.classU[E~&YzR6IqIJ5BJ$H沄r/~yQw(u6)A233ǟ nG?1I6"T%MVrJ4!Clr,.1UfS:5WۖM##Ĵݖd6]_2ɥ'ma3\L-IHtkSO4f_H0ץZweAKH)ttP0lDs}2Z=)'җ^k}Cm"sE3L_?
rҾ>;-Zݑp5D,
.W7n1wMmi3cdgr%3F(3C[FiͿ
m:lmz(Ԥ[[2lYjWm\geH0w]ɯJ	Ԏz߆^kmJOgPqmm1\a}6'v,[Gw/'%9re9p\Hp|q:ǇcSƜaL-
/-GhǓ!V\MNӉ-9{,rMS'@;SJ>(~Hz)N!۞rf0RpEG!ui?)a]Q/sXG}9}б㌎A%FDǰiDu,H)1Ot\L r:4䕩:.`IG-|a%
SRi4]4ljEY5|u~5
sFP⡆۸?y(JY>
^e_	rdAFS49GK}4j=|xʯ@=ZQ@#*_LY#^h<:5l.
g-^bn%=0 "ۃN_
Y!F)yJ":*%5qcc&<2kh)B9?PKǜxd    PK  C:U            6   org/bouncycastle/cert/crmf/PKMACValuesCalculator.classJ1]US*A<⡗8]SMIR_̓CJQ|Ǆ4a?=QҨWb)"Y
#J͗b"sEI.VQ<uж&ߖb*Mþخuv4CFPS9\iuu]S!U$~]bDDҊ$NOPKQ   x  PK  C:U            C   org/bouncycastle/cert/crmf/ProofOfPossessionSigningKeyBuilder.classVmSU~..,
V$klTiIJ!H(Il67e78?p5*3&sa٦ι{sϽ7</ (4h,+X%#?OݴK&Ae5I{b`8Sޚc5떄Ǎ}wg0"m7\s5nqa6
-lZIJV1D#ͅGnNC6ovIɵ&o
uN#nR4'ݸdQéEmI>"ZuhG}.w^u[4|asNƒYNLołayhlΡbd
ٝ݁_/,;(>I3_6ɥf
S\^]OQȁͼrLmvmYu$*5yݥvFR<&IJ!

)8`FQ
Bl
˓:Wo4i]	Z<MfO:sVg-W<
5wwS0&S%^
:0+uZ=lX%nn^@p
9dڏި72o
m>(sAP _R^o8A%d菞*W4i5\@BF4hI$jIe
㸪a+R$|:L|.IJ<TnXmQUq	w$YSć%M3L;k~7Fd2"IjDFJS^@?=%q5V"@I~K̻ÜaK<.KE
mt"~3l_w"WOZϔTC'q̗ϲ66&!fX^.`w|].Rk_67D>ʴ*1oci'oN"27/.(T{ PKT9  	  PK  C:U            0   org/bouncycastle/cert/crmf/RegTokenControl.class]K@߱i]m]E*f/E m-x%i:hH:
+uA4[8dgޜ3g Kf5kݫ0.WTjwAem)Sr>.-ӳcO-1l)=nZMhnl[a۞cT
ݶ\HAa-6CTm1N4@@@=W0\~BMa
qrXH魐^sZ
ȦSSK 0$z'^-!.+h}ʃr#Eq袜,>`8wG19͌ b2-	sF14eF9zk#jxP3r%-Fa,tPKG4  (  PK  C:U            8   org/bouncycastle/cert/crmf/ValueDecryptorGenerator.class;o>.FԒĜTʂ"FĲDļt}FtҼ⒜TԢ4} _7׊Ԃ<F#<JQmrOK-J2X4|0'WX;edzdeY>ISK~%y%pZ32pV @22p 1' PK{L   X  PK
    )D:U               org/bouncycastle/cert/crmf/bc/PK  C:U            N   org/bouncycastle/cert/crmf/bc/BcCRMFEncryptorBuilder$CRMFOutputEncryptor.classVYSPRS"1
nnP/p-qJIny3Q&-M:ܛs_07詗d=6'!͉׶{cTӲeY	]fz6_Y-,3mֲ++bey,:Xȝaaݿ̹*Ty*bE0	J!;^댕K%dȐH :h)2Yv\3锌t+Knձ-efX孾7O&?Z,KPe z]^NGO0tvD̓%SBg+kX1f##,E4d3I#Q1=s714*˵&LbF5Jl5ԭ4
)Rp\	'RpZA3
*8G:J62}g8kDL%jTCIZble	COݰުNУEt\\JڮTFj
86_7vݺZPRDB{wD:1'3>ӊq>V|:дa4׼{(Q1#XxvZ9-VXhPІh8dH#C(5$qCAЎa
*nip#]AFUqT\DN%y,Ȅ˸c*@*`\  Iλˌn;PKeOz%}I(ބH&	^R@gȔ"+ڽh}lLg#rfWM<I;-70o
LW`3'
{C\#*U5)_ ]$OPx	Z3$:F
X~``QX7u"Q^*K$ PKuLz  	  PK  C:U            :   org/bouncycastle/cert/crmf/bc/BcCRMFEncryptorBuilder.classTmOP=j@p̮Mc"Sp	3$|Gq~i²D?%d4sn9ܧw ;(2#3u̠Y- S(bӨ3,J%)މFS3{+3a{Ѯ:\m[A~m^hȓagf];BxL%߻,#'+
?MKVRtܷܺwΰ*/s*47T*RQq6akdQ+pEMr]s(̍iߠ0,%FnTQ z1zkLj+NI~TM؞#q:⸥Cm
,kܛ2@5$葆$2V{fK^6<^v]V i2JdBhY"Td)!aw>$qB+]_!/IXD6f9+]lu`6E*>!u4edH9]`lGaXJKR#1-Pm( PKںL5  K  PK  C:U            ;   org/bouncycastle/cert/crmf/bc/BcEncryptedValueBuilder.classSn@=KҘ^."$H[}@AH4jEUBl
Z+W" >
1N*&"OX3co? <]Sha^aNZ%ڶz+P=[
6T#%c]¥7鎖^
i`wQ1vLDԐ$mo6FKclЩvSb,JK9+EW*R'#{aG'y=~tkB:cyS
<=L{U62vym~!7N&a;Ï2:v	?dHgM<\,?~_9%֔m6	p">0v04@E\bZc|]1p!0m#,f#2nSV<GѫQ2Y
X@R;f;dzXDi@pHRG%~PKWt    PK  C:U            ;   org/bouncycastle/cert/crmf/bc/BcFixedLengthMGF1Padder.class}T]SU~
i.%bl"-UՆF	0eMftN%:ӂ
gqw1P~}s6	*c /"{O.p25}?^c?/A!7%HtZvéVl7U])O	ߩrL۸ٞE`"E=),aJjNR_;TQx{	쇶UUTDٮB;ZU}	wV'WԨbUBTg-U@ܵ}JZEMY84V `skwF-=&"Ikt8Vޙօ;Z]OZ9
FU}k~	}9ՠnNMyT_ըg#JcqB9I1ゎ:.ԑpa[;^>ACw&҅f3d$}xxm~NczZ9L'
/)'yxzVЕ@7p%`9+	Go'h7Ҹ8^889ƻl&GkY`>01~qɪ˟%}\ΗEhTLT	oBF3.&yO^ndRv6Bzf@G߁p
&L?62K[{333LvzNCoEu?g"+K؉si?wwb
ef4+M|cpg\5mK-,lbP
E6&dS5lV6s,G얕1-'7Zim#MMf MygF o#e%P_ຎZQБvqot#ؙ} O)/W<M{Xb(lTrUcjR٤j2\RwZ6/K2#
t?6Hѳ3t? -k6
M64bhMGz_7v11I:PK    PK  C:U            .   org/bouncycastle/cert/crmf/bc/CRMFHelper.classmOPƊu " Sǘ4:	h1Q_ݕKWڥC?o
Mx"qm<ܻϏ# sa4FK3ssA+\IɼS-a eቀK#vdE
Uނk^:"-&7]fu݅U(%}ǢmaIl<nP´D M+lեXEҒPnU9-UMfT;e	ԏSפԶ8\)lR7Ζ#%nѐhSFFn8@
4.kHiЫኆ>!#r<ѢQQio̳Q/䊜"q强Z
s<f'g)//Zp*qf6bBU#z,*Csoӯ͂vfs/%%^66pU^<:RБB7FX
	\O!)tᦎ~1q1	WqW踆{tM:8d)Jn}^
0!+A;KV;y*`(3}齵_Q  &I%6H]Q7M|5<``IhqIj^~3Hu{PQG-lzصPK
v    PK
    )D:U            "   org/bouncycastle/cert/crmf/jcajce/PK  C:U            4   org/bouncycastle/cert/crmf/jcajce/CRMFHelper$1.classW[WU&^,
.*@oaHmʵ
8LNa&P~V_\>?e]V_|rY@HHY+{>g&/ W얰#vE/vmH?|mHkOœ='f!em߻1;)T_^pX~Hcy5\uy̘lM/N]n;4%]ZMwRV¼ĉ U
kmM)Y)ݜoR׃7e
ѻ(<wy%at\8фrՓ^'
A|%5[D|YWL	
Pe)J\K1	sI5T9(SsER9RY-]Zl%=UtO'õI2xuZjJƵvĺOM<*m$]kyȲsVV4q
U'Kg
CBdk@~)0.VI6q	mE՗*78}AKYU.+*VG肦.h8ύ\N
Gr=1j7h]2,ڀ}eYW7*duӺMFmMY FXO10<AC24143fhahe8p!ahg`Oao(woߪ	ȥܥJa_mtIDp~EܤT3RYap|ao"Tڶny4偊sXT$ڶUvyX8<b t%*#m0ւNf#qq+̨Z>آg6[ǌ]2ZQ'DPBDх2;擱2Ę=р	`R<(C%%ecJs,c/؅uP0-kBucFkB,+B*l\! 
A&Y\b> pC ΁^+>Jћ	j	rhIǸRWxir[1T4Yr'])Rh"0

N ݩޝJFߢ5%B}JZ}ti'qvnF!."BZJ+SK?#w	|vh^}W[w;~;]huOV{ =R>lfȗÛfsxI[f\Ok$-i--#<4%x/wZEmpBBD}>9*9UUzЉY8UKYϠ03a8pCO#7_a>74PBNP@>#z&/HCkkPKB!A+  b  PK  C:U            >   org/bouncycastle/cert/crmf/jcajce/CRMFHelper$JCECallback.classJAƿ)sLwQA]tt|qvZwgUW衢QPV~w/ W8"nIP	ِ9)y톂'V,IԐo3"9"JZEa̋xoϖm77ta8|:yc63epF&3NWO9).Lb]w}{ˠ!g!ǽ0O\&eUER()%ji7٪1A0dq,,e@
eڷ]l`_
UPKӐ
<  X  PK  C:U            2   org/bouncycastle/cert/crmf/jcajce/CRMFHelper.classX	xSUo潦J,P) P`P*Hm MBuƙqgw]buf}ߜ}G^VS{={>`ZJdX-c:2X/A&[dlqm2˸DF2vhᓱK	oA(\VYY^rQ^[P$Fm[Ja/0i<.%EG-X?!7lЅM~ol`Ծ3xc@'Q:qiocvRov4yMuĨׯ7	
&uL-
uim^dVPr`"ĕA5+15PS¡Gv~RMa73Kz	֥'hIS)Q{day*	
(Yq(	N'&},=
qR'u$U%VB56Q+ՈWQ}}P	vU#hP5QƥmSUWugʱ@Y>%82]Fj$F-~56ux\iib]١Ҏ;DBO{rՄ)%`řcW)aWd(ѣB3,qj`(QO$D<ea3ʡ.W a:nf8BjjCRD/+	ӌpMZW#SCA2#SD8HɩӇu&YTa{jUmL=2tN)&]b@ߨkfo㳏ۈ\K1}MiJmҖNhw<?vLUP(Wi-	JZa{cVo	
DjЧO/۷Ҝ]hl.ژTΨ(0ce..<2-iTH0:5?>Ss2Z
k@sVP2v*%F1d-NX2N<-Zcbqo1bEӊI\`AG7e:G|5w,:=*ˣ~P$0PɰV:wNr0L:3<qs(R"ٔ1K$H;}]
w#vO}+ǩ{!m eEEjhtm2<Ɠ)ܞ<az8ZVxϞ$+4t;zp8BLv7]Y
Y6Smx\FzPդv]55rɸGVq>.
$Nz([IIbxR}Bd4tq&A/YBRcK8!aX^&
	*	Jx$F^+u^/M,-*m.)]-=+}/	p#ݵ3kF;/cnxɶu[Y՞yUfz^e?\V'0
MkwCd蘺jwFh-p`gSܔ>ȖL}j&aoģ°=󩼙hV6+{b	zf3fEn
c[Oy
-'>g{>yII${4^gUy=/ ^L=|3nU>TwPdH1MzgJNy78x1$w1R>42
/9^_Nr_?}{o)wuͰ"<D%C= pa!pCa!e1e|Ή+ĉ>Tpm)2'pU
VKN×_qr|k_s
|É-÷;Nsw?d~؉q܉K+'k'z[v;'>sxP(8[p>	P`()'|1sP`g((_wx
dÿe7pI0,ap6QP)tn1ǁ{ˁ1&f;pFcakxT2,v1A.dXΰʁ'Z>-V^Q.(-bn	>#1`XpC5C
C
(V	Dp?I%}i
- X̩MŜZ6ʍF٨vTΤ
|BQm>tTE=}?Cfs 6l=5AezjT׎;X8NK]FEiwS1*kDQq3=q$ZcTQcTvƨ73pŭOaV}t'׉ʕh0_LBr'9^D;K*%U%p+Dg1Lqg){rRNX)'2)/xQ(AE40{OV֌(;9`ԎS<k3j'$57e^.ڐvNE5:#1렱&I6eoNGTl;sRNZ)'3)_"QmRL7ySTß!]#Qy]5<FCwV*?$o.Z]V4*zl%aK偲1qvs)ZeQ᧐9feQq6A?B6#hQݧE =\RYj6*n	I8g,Mfn&ɘtET^LQ^SuDhASO눨#5Ǆ`7Lg]M˞ux4Oc;H73bPt;[bS}~>T/t#ic
Sޯ8$X/}'jp~-SXNKW\+qP+<ZKMvk;)GWq{4iKaBj.I
L.fqwD4\3Rzi6fR5$5\)&TﲛbddUl.q9RbrfW.o!(0:Oҫ]PKw-i  m"  PK  C:U            D   org/bouncycastle/cert/crmf/jcajce/JcaCertificateRequestMessage.classUkSF=4-6q&NH[6<Ҙ@1MBKk#"$ג2ܙΔ[?7e1|ڽ{ιwվ?
7ݑg=y}hX;Gťuj"r
]%wM2y,qZIr\҃w@&k޶iOZ0|<yq?_+n5pKkM5l5kMkjVAM&/hf֥ǈKy0sBq\׽^=Ø]*۶g&W5Jzi/Z_2NaqnFփh{RۢfՠZib7`=.342N<Tڮ$8˺!^I ya<yK:ŜH͝$$:Jk.INC9XpGٕ]0Ow
=G!YڶîmS!|آ$%|(#	%\0$ኄa	W%\p]%|";&p92>4{/J+<HPZa|H-r0,݇$z>'T;[ּ$=}	yukEhN'-;N4)tQO6_FC/_Wp	[
1Sazp_A>@Cs	¼}PX(R2T8fY
x"#g2&02H˸aVeL#+w2I
&#.TB.2荧8_eQB*]b4hL$fCo_4?V=R	H2X@FcUCLo"YNƸŀq>c( '6i:|
 Co2ZAұ?flUUC9s1$_tUT/SV2I)9=D׿4풠JtXL
&&B
EYDU9ՍYOR(މ#f( PK   
  PK  C:U            K   org/bouncycastle/cert/crmf/jcajce/JcaCertificateRequestMessageBuilder.classT]OA=ʲ@QT-PD1UPbi:[[؝5P}G
Rp9W Xdd߬0tOg]Y/2C/5
AE XU<R2=7j!mFvDŹ9`3m	aT+E}ESZUByb1.UG,:	T2U*E^œBgj;VPQ$\{~Yk-U)RGRg0R̩F_(6C/嵩,Bnz,z3ͩ	*\.g_0d2mTA]J"pӆr-5ߴ7ۜIV;I6nNٙZ:5Y-K^Sdk<sЁ1tb%}`	bc60mcm\
#1fdz$=16sQ1uw»ݹ>nl0HkL2>\~02\ (8Mě#,I4׉p5D;rOp[{?PKEC  ,  PK  C:U            @   org/bouncycastle/cert/crmf/jcajce/JcaEncryptedValueBuilder.classSkOA=C |d0Z	
*AinfgW|$ nm¶̽3眹s6o? ܃0zV7i0-e6*փ؈@*<V2ѾF=W]T*KQaaȮ(..x@y=h1l?4yuœPBw#5Ij^hK7B^&vW8,Ly,',`[(Xp(TӣC*fTα4w!;鬎<VW텑Dj&Lଃ.aӽp,8ibKL"
zfX$,/jP\HuU*9=Jwߔpk7?`.<trOYRfJ寸qPK}=    PK  C:U            C   org/bouncycastle/cert/crmf/jcajce/JcaPKIArchiveControlBuilder.classoO1ǿEtm$Ũ3XGDҕq#na/'5XD㎌{M~I^ST=c`y !ym4e䂠]>VAi%ettƺz=[[MRE~:t7J,ё,'%lʽ4}̩ʩ:}#P,:r4`no5_+D#ZQDm^+,nrY8pd<5Am5`k֚Cϫ'bC톂뚟r1Q#X?:gUq!/zvҺ?Y\b
ײ
7𖍂E9]ᶋyqǒsq6fE<ˆyX13Q[Iߌ13\<!i#nPU_r S0F|1PKo  .  PK  C:U            N   org/bouncycastle/cert/crmf/jcajce/JceAsymmetricValueDecryptorGenerator$1.classTjA=]im~ԶFݤ)PG#t2M6lf4/!>PMlHve{f_%Sg}j<cXn)5nq]0(нyo%^_P2O|G		:JW~~_ˁ*0\Cޑ##N8v	\y*1*TcuVI	wJYvbaHxEkC
q_eIF
Z`YdaBai/򘏨m{݈Po'<(ew2忤#Ni'%RR.V2<Q~v.jiG;O	-jJ	qε٘U6m\ƒX\1sf܊Y䰚Ew2u{~[e~nh0T!(/+HQ,Ռ-U&M
+O!+ClX/G/YFv
_+@&aOpoK,PE, PK^    PK  C:U            L   org/bouncycastle/cert/crmf/jcajce/JceAsymmetricValueDecryptorGenerator.classVkSU~KRJPmH(jCB(-@@,CXH6?H2cfO~79{vCHad{y\/xߵ]@coE@=Нǩ&3.kSM3nn1K@w,UsM;YV@G"'ƞŽ`X2tg+%SV"=l[M0LٔBu፭YIS-4ꮪ$U#ol3bhɱt#1ѓqng/bLSJ'ke{tcWMq=)XG@0m%tвj;I1-
yYy#w
YAMm*3=>O0=Co8a'8mk4Nl*ňcfGwH`Eb'	fδR2*eNMQN;OoOP+.~]s|QȑhEtXZLM͜mE$ⲈWD"SD"xUu7Dth9~F\mehgA}.JN]gCGoUP1\u%P9oxڕkb 8TڗfWbxR`-+n$|
ѓzZTF8$kus>^%}/S_	rR	W8qG{,/]zx
CζWtvڛa03NQ7#%ܕш2"2$E.zh=.=>oh8oEт2^#.dь|v0<\| 6%
O%>,KbMBIcM"
	
V%#&
,I~"as	r
EqJM_):TmQuQY\'14@8UnDXs5Hq~<`X<2y|vp,:OQ6Yiܿ;Wtp⎻YC/?&V#PglyGhZ%X_}awܢ_<R#BU.rȒas-ƿ-b௙AwHfG!ol0Lf0voHSJ,o/
%Ҋ;PKܧ  Y
  PK  C:U            S   org/bouncycastle/cert/crmf/jcajce/JceCRMFEncryptorBuilder$CRMFOutputEncryptor.classWmWU~B.]6-B߂ņJ1	
Њ@E)
D}Y.aC؍
j}~W=GB~:w7@6ܙ3sϿ	:~+j9	i8dMy.מH$4ke"7c6j,7E7B6>Zd<>߸Mnk%DBCrk5[[sΧ35-f46LRZ3LlI:ƪIʽDښf43N-N{"26ԭY+9)
\ߎ:^dcXEmnodK݅4Oٸe+os2\rf:|%V`BYCWљɱ0QMZZ]
Gӹa|fv!]Zp_ыU[Y^·Z]*irڶ7{ɹ5	:ͣzQBk2<Xѿ="F1gp!"%V.3N%i!	K)Rb¿o$Ty%JVFcGWwŇ#EGmHGi7EDVobz݉QzhsHPU%"41ӀE+SYJ}$˶PX5TBt
ZZ/FOV*#4<^v
\(1lGMяϓI<r8Hs1WP4`@A
dQn*+8aAPMQP0	;d\)S 㾂 &٤ӘR)mAfI
2+#wd< Ĝ.!21/| #Od`A]%AR2z 2x5C[^֢E>tSMьqbCIGW&8pR F`>	UQI|~x@o p'-ķ|G]lօCA6>S|¤Q@	uՉ׷Õ!T>rB{AbjTfdYfxW8Hl:
BJ=M<*Q3S:C`
A>^UbbT&Bvp!z·.Jti"JHQJ(=N6U;Ѣ%3c b_j~GTgcPKn  )
  PK  C:U            ?   org/bouncycastle/cert/crmf/jcajce/JceCRMFEncryptorBuilder.classUkS@=[@(QRiQA(E£e2S0!]0PR&IwtFf(ǻGKLsM e
l0NI4i[SҼfL\[nuYun@lL04pS#eFyRȓbh5%;JtkǏbgKY;V*mGf;IrVBO:w5*@wumW.c1K:wOYs]onS\bUҎTN:KF#)m'.	kV 9%k`*u;˹*ZH39n1_w%x%ܖ(IB	Hhc\qx9R'WJiTfc`7cGJڃRBUͷr12̝IRu.RUwR#p-*(#e({*<K-LV_wĭ4Z|n`'{#e3/7yj5lxрj/2yQ~/j؋["TD"!XN<aT1} /et`JI]x-[`BF/^1+ݑ&BIͶM$2.|]f*GTfr
ҽd
' y0IWQg1?EG,g03<	<7>R#%}=uz'td6_@MԜr3eA!Z嗛E"c.'SK;ܪtwJLk?PKEB    PK  C:U            @   org/bouncycastle/cert/crmf/jcajce/JcePKMACValuesCalculator.classUSWGֵZ*Җ*XðնU!
	RC)mes6nv3_ٙ̔Qvg{Ͽ10O%[K%	c{exi
n%ә&Q'A=.XwhC6PʑP.+L	fg
kX%U-U1ݺ<w]Vc
HI8_cf2=۩qDSǢVu7̲h\z_{-0tے0}EotgZP	FnqNU۱}Kי\cnюJ~ZgTr@G-<ґ)ЍbLl~j:<zvM/2=Ԗy3ЎۭNuVS
6Ap][#a4B	ɸ cRES2>iɸ$㲌4r]\p..@\x2+zsxW4b[Ox	o
s< B_)=ZSd|dsױc;&fp5  
w/Дxq*K+qK(lX* Wׂ|C|+vwdAU;㸯Bq!+Ȳ \Ê!Y乂XU+ OYW@^A
R((H{A6A&# geg)GiWقWy+5ЗyHT>1S"*%Z-HZmD"+`)Z# ]@ćiI&TzfV"LˤwSdF$W"8/(clS#> ȋC$J)iv`XoS?~)ϴ4nwй˘P{-wPKL  	  PK
    )D:U               org/bouncycastle/cert/dane/PK  C:U            7   org/bouncycastle/cert/dane/DANECertificateFetcher.classT[S@ҮbE^
"޷Z!aWQ:쳿l@gv:g~{|+>
}Sy۵B!/-/E #YzO
/PAV̶HaoNnN=F7mYbೢ-v }n{.^
nќ?')RuB؎9ba.`
(Uڑ9faL'<h潲k-X8Ҵ(3 \iFst]ԩL͈UCډfV:[xՉ+KΫ0*k%5MD[ٝ
THwjGV6;98vs˱ocߔښ\Io=v6	n7֣jV/-wWM#=$V=BhX;{3W= Pc7dcЭZ.c}5B4b5kڪMdcmjaᨯt:b0uqtDРt	Qѡ^ь~qRruY:\\PbCb81tc,FqVJ)\#qZWPFWy*֋	1[aG	q	[>['44ّZT#r/,GL14)7$M}dz2ST!]3=,FCH2R=F&0|C@4.%5MUoHjp]_ݏE8đ8 SHPK3     PK  C:U            *   org/bouncycastle/cert/dane/DANEEntry.classSYSP.iSEmZ4B,F塆4t%a_q|tFQr<7M/<swm2/0$rI#!50L|/gtbW)a/in[O1<|R[fI|$*VMէ*̤F3OS5<eF-V^s5b席p:h4ecsKo2Rn6PRosrbaw['t
Y)hA`7zWk[՜38J>$BK	\յv.3VC]V}gͱaUtknؙljI5?l/m5߰-^Ec"8!⤈S"NӨ۰;]\W^T+xK1{L޾]ݘ_qeA\!8>n	21\ᾱ~pk\\
	yܕ&$
ܓPm.hNoޭ%bjh;f^l8E=r=%"#!b!'c>,]YboW 
D1ʜ&$&H+Д:ƕ:+גD\,}8<BjSߡ<-[dnSN*/9LI3i7v\HRN8GNﰻd2
*lP"&&Bq;H8Y鍈>pBA"z!%1%IRL|@BqyD2!oJ~PK,5B'    PK  C:U            1   org/bouncycastle/cert/dane/DANEEntryFactory.classT]OA=veYP(XuiE&B1 >.,v3|52]
&>;79sgg<% O˶k)p/x g:#:-=n|O0WpkOw0x*Z+5)*|joj~`+͵#yhyhSal`"coUoLQ	le讞.Na#Fjv3a6Z["QPЮ@UС@SЩaa/1$ɍ'Al6YQUI(ؖ1kNn%BlIy"JKًlŬKRCIC7R$iP0'	#bHhe
qd4o ÄCBVE9(*.ᚊAL0b7b^	zT)}+[|>z!9Hi6Jh6`d,	3L"$Q%\|D_xCwkS~D:cM/50Kq
,~~LXK"/d)v+%$Yj"YJ긝?l-GmÿOPK'<i    PK  C:U            1   org/bouncycastle/cert/dane/DANEEntryFetcher.classA
0D'Zv%"w)%W\x %.:0|~<l
q[
Zߴjԩɰ*Ι
)CY;R1\d軡+I$2[߿F66a*0Dfx%PK      PK  C:U            8   org/bouncycastle/cert/dane/DANEEntryFetcherFactory.class;o>vF֤̜FĲDļt}FtҼ⒜TԢļT}G?W׼JԒ"Jv&vfFG
y%Ey֚>$gt00202 PK      PK  C:U            2   org/bouncycastle/cert/dane/DANEEntrySelector.classKO@&.h!Ɲ;	wCԒ2\h0QXIn9{'gH8#O{Acx]>CJN;aB=ۼ%Ϧc.C?́?'%i'Yd0ch	C}J5 5uCbycRCX~ƪ_/UH(jiH!ryl`KE*raHC2`(PûU	*ѮBex|FbH15"w.[sԍ'TGhCфWdxPKAR  ?  PK  C:U            9   org/bouncycastle/cert/dane/DANEEntrySelectorFactory.classTmWG~"!{*ݼ*V-Fxi!h)mqe7gwW=j͞噙>;s?}}*CHԐOzb{ըx}b#t6-9A
s-*"!mvݵHTe"U]*DU	BmQ;$/	WZ@WH<07sR_r)gh$ЪpźeIRMxU|p2lQ1쳟
5if	Uj&pTAGA,u޶PT3+'̹'OF`)21Tԯ@ٜq]:n;Ő|u[Ah[tGa'
Jeyy8Rps8qi3g9q[,<ƌbidtF>0jtyQꄸꪨHq٨=:R<0tZ .GÈE/Ыc\.8I|+
VnWu㚎p])M#.`^W -
I(V]
)ť`QCy
Y,i05\L9 gߍOc(I}ɪ-2(ʎf]47huZjS7(Ayzh|Ni.֗RQl{~xk{H`u/yE]_H2ҭ=bXnM^;: UK*(C_p$9Mǅs#MPKZ^-  G  PK  C:U            /   org/bouncycastle/cert/dane/DANEEntryStore.classTkOA=.[!P>E|"m}Q|۵,]n	O~DJbf_01w$~ۙ3Μ{v)Zpҍn|ȠhrxL"bdM#М6Q#/L]8C1{AVB,Gp9s"0&1±-bID3JGo:P13ёlV訝Ӵ-z0Z'Dn..䦀2X<(PܬY al::k-}E9'cDur I9+%I_í;P4$MֲwB1Vyyu|Y7zT3_QNcW\pi`hJȵqIdF#̱cn.n={9&-֟Kׂ!CEen'K4ѻ6*[i["۾sKFPR{eߥG^>v	;2>=2wB!m;Bo[YojVey
x]ZHqT4)*:qBE#NaNizF*pNA\PqUǥ1C_1pq>H,29 &nc~1.a!LpˏF?j%t<-N"n6Y)^0DHF/i@#UY*3$x=4xa%ҭ|nY/3{pmb<#q*d^Я<n]`x>p7BJoQʰtAjDy$f(ͿDPV׃	%GĤ*ҌJxq5DV,?/JX?PK=_    PK  C:U            6   org/bouncycastle/cert/dane/DANEEntryStoreBuilder.classRN@=ëR (BE\X
*.HL\2%5e0Wh~NcLt#;s>@at;v\G0D;CeHuM7\Ꮪ\XgPm.{蛮m\uzϷ7teD!ei	1!	ƞɒeN	s(

zr(rOH	ɬj]VEr:[#hrMCi
!0
Qd!l)а""^F4~59)H)Z}nYCt1˕䟀 F"S$ސ)?#_c<"і/PK_>l  0  PK  C:U            .   org/bouncycastle/cert/dane/DANEException.classuKK@5MGV%Q ;qt?1f$W
??J=swb GҔ*9iBn%wo4=(}Jk1sJk'hqvz1Ac4b;W׵JO.M1Ƅ~4֢8	b$mD$4vN@0*`Mlna+?|Ev|<h򞧁0APKX   y  PK  C:U            ;   org/bouncycastle/cert/dane/TruncatingDigestCalculator.classOAǿӃ^{JQ@ޑ,y0ŗ&5<`|i{]#]s%De5"A.ٙ~fgv~?>ZS^+Byڄs90ەڕI8Hrb$X{*XPeuBj<@\#BPK4{CBB+ʉJ#}@HtACYDPZdۜRi4*w;J^We؆cc
gVwq&.-%LLw$7yI[iO1Ŕ2]X \T-[r1*n1w԰⠎/`
csnShVqă8gj清E-^-ľ)~4&VXS	V	@s-7xOc4yᓏ[44T:#͆XW,PKU}  i  PK
    )D:U            #   org/bouncycastle/cert/dane/fetcher/PK  C:U            A   org/bouncycastle/cert/dane/fetcher/JndiDANEFetcherFactory$1.classUWE6lXJ)FkMmj6Ҫu]ڗxO9Dڧ>胿%
=9'wvoܙ~pÐh
CIv޷$J]3,û.Η=öyL*DW
&%uxu([^V^Bcl6'9Fq|?iQPVک3J<e	.3&gsK\Pr!T6<_]жVf2h,c$>	ܑp){:[O.hCwi+6Fq=ͤU.qR:jplg]۟83n[_#y#8)T![(A5ieՕ4A˖33&Z3k3b֧Ebb-u)ŝx4nS_cv_r9Z!hPJ{v8ZWٝKK Z%㴌32"2񼌳2^qNƋ22e"U~lDBgzn0豜	I{MI,C𮆮X*Uw3vÙX]hM{8(N_8#~2Wt/Gs=ۭy#ѺXP[7u4Qnh}u$$/#6Wыk*x]E80Ut P0'va0c<BŤRRъ*ZRqohF	#3#̬>sS4| m{	Y\-PAxOf\¼0		ݮvnn.% ýM{E,;&s]qd=Ͱ9Q>Hx

mm"G 0tcZ(v{7'66o"t!J
m,lLoB;蛰3*(~DBCjH]ڂ@1'Hk|؆Fa
-0ӷzN=?%C[(Sm|d(	!G䚎p$>ɦHS0Ҵ"J$,=~Mf5јϔ0~o>Ye/;1BCdF Ôu;;G_
#NPKyiz  	  PK  C:U            ?   org/bouncycastle/cert/dane/fetcher/JndiDANEFetcherFactory.classV[WU&$0ҴUCH2BmP!tg&]녗kڮeK}&RۚI9}9[ 
)`xB@8pMj|mQl7qptzæp<rnxt0IYKMY05=դ1I8y$ittte%dP2!AM5ɲͪ:񜖦92szhJOjnzu'[է$1KZw2:ƴj4"+JTSJH+)IŌ[43&3f)6M<fVZG5,mBK(fB))eZ	J2UΛ(FbҔ4ܬ֒XPoiEOSjZ
QPwnbBH3St6eX2bNZx6]-`Qw7fbrr2iZNjjF[x؝V5;Ӓ1Rx&'fiU9A;"']Y籶_T+1=㻛ȏl :Q4+djn[em66Tu%֓Vf#dsPc'yxh!ే~xqaXetQ[N6_[C	nEG٭̪Fz!(iJRy7@+/V˨}*70""_OvA]+zJ6.jruUI
wWwFm!1lI؋Z	]CЄ:	,a$<a	GAjGǈqF1rE	G2)1	H2CэI`Ğe1DD2X"vHE0HVD9ΈZZDb#[u:{2Iݢ?ovw8YHQ]WbEnR0k Eϡ5؉,Ϳ%ҞS]itI*vGc]7q؇.$+Izɂ:ϸԾ/_/ub$$w쪀/j{Mg x6q1y[a^x#^ľ$Nsr`_py5, Bo{y\aBq<.3G 7G|rݎ{ajxiDhLehM7y8Ѹ%Tj2,(edAg383k1v_:|X,<Z;GWryJ#%u/߯8oP8D{.%
_qn;)1	/y"nN"^/R>.6G4V"6PKK,q    PK
    )D:U               org/bouncycastle/cert/jcajce/PK  C:U            -   org/bouncycastle/cert/jcajce/CertHelper.class}ON1=Pnٸh\5!q_ud2%+hw&6ͽ=׷ (w{7iw*,IGNjTؕnL/ȅS8!
hFjn[f4Ww,Ri	)~=\XWc3JəKC((*<N}lDp#guG(A4PF3@
fBh3oU&ETOh=ɒp-qѾ/hPKY    PK  C:U            4   org/bouncycastle/cert/jcajce/DefaultCertHelper.classAK0okW:u٦`/*^=o%#+=)(18=
/	v	9UZ34,,X5UK!meB7g{k+d "Y΍M*.%Ϭ4`5P<Z6RԶo+.gl+syiaN(!N@yzcy6k,A @/F]lqu~$^>-Vr{ۥO@xsO£Wl=z#uPK4U[d    PK  C:U            @   org/bouncycastle/cert/jcajce/JcaAttributeCertificateIssuer.class[KAc,7]}z0#(顐)q]lЏKF}>T4хv`Μ
.usL8][
!O\ު:AJ/A6|?^x.X`a-;OR*ʱomΤRoP{H@ѶJDely
Zk.p˦ww9W?^#)=Hvg%g􌳿4
ctme oZh	
fT6LmCK~mЋ#,[F@b@cVG
Y2:1c9SKUQuL <1u]UQF1&g,tԃB$=@r,uܧ	PKӽ5_    PK  C:U            .   org/bouncycastle/cert/jcajce/JcaCRLStore.classuSRA=6+"WlF(<
ڥ6
>U_1U^^${@Vm3ݧz~
0^f8cFEh0hftuRªIk	Ɖ$I
Ɔtib/E2"]K:nj4=wSB"àd0veLF$+2sr+`9EbSXggl8P_DMYkҦ3h1dI'%(d`۲IEZI~
cyd.d'mMN8*TAt$35TautXsmvy~Z󲮽mLG*?JYX]:t='yZyO.x8q"%ԲM{ITMQzqzUcVƏ).:rld'$EN
\A8YTFnj1`:	Rf@=qÀ:"щe+3:q[G⮎>LA00zqK0LP=z=#Lb wbcI%RW_|ھ<#HZ_#b	&erjzVv1'h50ۿy,9Ot`,V@tesx]돰FV
\cMa|3y<C2}CHj:M}BV88"={$PK-Y߱    PK  C:U            /   org/bouncycastle/cert/jcajce/JcaCertStore.classuSYSA&&L,(b<å	VT%ʡ<XfS͆?SQ?*M4q{曯{' xI=DƷ|!O,M)QX(4|e˶D,mE(mZcHK[brKۦfVJ"'QC+<e8+°#3^5eѳGyiRLWZ\MBVR
?)IZޚaC[/4x2vf|[ee*+f8@SN@
8󷶶X~IN6LQ
iV^9;o)ۦP1AܿCi,Yȅ=Kh+E6&]qs8qGa#G9Q_≙?Cg|7F_zMNzU;IO)Pdi80hCPڶ(uD1c/tbX	e09c0#sbc\QfRC/j
!q
ҐĵNaTye&";t)[<a'$ C>:H~
fzD%NFXU/lbf71ϰg07}H
}AD0YEb1t7q/o	UѻXEb7:nFCH@[ߢ-I	_oHҘ2< 5h&4q8Nvݜ8b[mQ%PKQt    PK  C:U            6   org/bouncycastle/cert/jcajce/JcaCertStoreBuilder.classWiWf~2BD
"0#XASPB`Z[SzNѿc{0d}{>ݒ	 ZS	D;=d@oOq:)@$CS-='26Fg$
Q"DGI
(gM3-*&`W EӺA4jIghtffR۹1dUiKqͲc(g%22ēWi'ѮO	APڬ%D'2JaŤ2
%>>?:I)bMIM6u+>߈ӳ6Ԫ&8`&f1>
SY{$b'ryQ24b*5ˮr2mF4TTOR!*3֞t3F5ݟ0ã鸚Rehŗ6SN?AeYE7{'UeR½NO׆\܀fmC.c[.۲t˒v)/D<!N^OxJD}"D<-bgDqHD@D(?FgXZ9ߘGȹ:Z+<Z+3>+xF59M@sF30B,uYG}X<X8D(?cgk(zF7ro[lpǅ-tK[ǳ^yo=.vsHI~\h6z:۾Ϋ^*0NhFDF^QŢeadcgHQsQd"*}2v_фY\b1Ⲍx#Rk,^g+,`LHf1#
v>hUpNv``1%m]MfCc1^,&XLVnЇ? }YzOTF


tW>i>.RE
hTM{"*Av[V>ڇRu.R?Y-R;I`7fQtt	GkUWB
a0w2b.iWu6̓sΛSEι|&.`Bl|4-F˅.|l*EdlP23@sS
2)-(7@];oew杓ܓe=oq{޾G=̶Z@[?hln
u+Kx1KZ
puM!ֿ /,SqNO,4>چN&=ß"'PK3    PK  C:U            2   org/bouncycastle/cert/jcajce/JcaX500NameUtil.classT[OA=mv墠n"Q<Fh|n]S>xyGg+@dkMN97_|0X2A˂b@Os6&`2NRQ>_9鉉uN=.wS,le8]ՠ[;y$WYZu֪4u6|e]ag]*cï8M9+lQ	KJΥޱ U*kOܬX/8r4ͥleEFͻդ,@CFR[NL<C[˩c5i]C.
5DX|-ضg,(׻0cR;UD6:#?7"FD*mÓ{n2b	
Z1` 	Whj@WЉf\3``H*QᨎnQЋSGb:.RpKe$T0`R01|S&hO!{>[Ǡ@}:*euz#<'BW''?ϸOPbLwKr %QF~&8_|Lxj4FKfO:R,BYFNk>ۯ2e䟵lO%N̏EL}7kʶy:3%;>T\PK@    PK  C:U            E   org/bouncycastle/cert/jcajce/JcaX509CRLConverter$ExCRLException.classN@ƿJiQ	G=xjRz0=44˺%lDc𡌓<x؝ovd?>P>Ul,dD҄K73dRLulp0ĩb:
TI4|"dp%I0U3*Hp_`0_FɆe&\EN8}znUڝh<z`:pPsaP
{XޥRR	2a6Ϩu!U ͰEg6EUM
 Vf KKA;p PKB$8&    PK  C:U            6   org/bouncycastle/cert/jcajce/JcaX509CRLConverter.classUmWG~"Eڊo5
6+ԒRjtwC͇'{NMΑs~Gf	i3w}3ޙ(D1E,d9C2e8Ȫ{ezH>5;}ZV!,#'l>gXMw/5ӑxձ̒t+CV=ӶUḦUm *E1Pth{=a%"Z{2h$KEA(KrݑtvŞM[=qD}ɪּUpm^ZopVUWvQڇ*г5RR;LW5Z3vYH;q*s!i[zv]!\";v+DwԮ!v
oz'vA(9#ryxR:ɰ,^R8F'}aWzm=CԳ["0Ǉ8>ccc2q8UO81w.&So(GGh[ov:
vIw4k;تH\;=Ww.yL;yw B,]c8e$?9]YQVa0(PÝ4)<q/⑆x!y
Id5ZÂ4!Zi5R<=J,	яad!d>W+iyvQ]SW)$=R}*5IhܤUtOUl;\Ǘ<Hd?(]pn#;dU7[X>n'ׅ}o`5
M
<4_H˾ve6dCeYyA4HHӗDFGhPKt    PK  C:U            3   org/bouncycastle/cert/jcajce/JcaX509CRLHolder.class]K0ԺjWnD&E2P)^UƒRRi3~7*^Qq(NЄ<y9`uѼ:bk(62UPĔVVRq+xdжϥ*,ϣvOsPB\lʋw})J).J{!ZKaUK˰*vg*6STToQ1F{ވ>f&L:t #`Lp1㣊Y}L`Kbzv0EQF١,
e
XxPK|`(  
  PK  C:U            U   org/bouncycastle/cert/jcajce/JcaX509CertificateConverter$ExCertificateException.class=KA%S5LN,͑B,`Ysñ61W
`G%Eyaf1Zs`(>I%C56\#>A*(;46ɨG%cp(&-悧6H'Gg+h)e0qPrPvPah]g\GݓI0=nQ:uN!r݁\jXw`&;33xZK<Me]"!FElR֦H|
d@R쿡,ouP_PK*  
  PK  C:U            \   org/bouncycastle/cert/jcajce/JcaX509CertificateConverter$ExCertificateParsingException.class=KA͇\NMԐJHN,͑B`Ysñ'+E!I"ؙef+gJ+wP|`%C).}>䑕b`GBdԃknIg$Sf8LcK2tN!2iEw;%3y(x(zXa_MING=^*tߜ+8Cxeh4[bak ? C2|xXg(=Sn!$Rae
+j;#5&PP}(a/PK^r0    PK  C:U            >   org/bouncycastle/cert/jcajce/JcaX509CertificateConverter.classUmWG~E[ŷVhC)6CXw͆cis9Qnb2ssΝ>-B!h!`V$ñzR-[=$`m=D(ESضㅷ,;v/e˕puvt.7,zc-Yv>lJ׳,Sxr:p&/m"3w :<Ytr2Xe$ߖtFvĮ0,HV<uEe.Jhf[2a獥iz!VeS_{J,W1L^nV4r*a6cwg%Fgtv76mVLQ
2746	fbǔ$暅|"Dw
PJ)ޥ.U:6&īOƵNt
(^˜(FWz'Jk!i\GA3g98q#9.q9.3Y07 CяQ1Wp{-H/J<CV]WYwdފ߱33T+:PF|JQs:ݥ+Oau|[:8t1e8:TWj8*:0s0q4\#
D
h*GxiT)ipOJ{pS~]bmzRQ*IZx9-+2%QUqVkXa2[x3aSt=4fvJ{xY?$W~#^/?|U}:D+5,To{CZDiXN԰SmO]z*#CT:3г1cB1"{TST×Ph`ڿPKHy    PK  C:U            ;   org/bouncycastle/cert/jcajce/JcaX509CertificateHolder.classMK1߬UA{Jl\,/*(q,"6afCJa攡2ָ?֮cU鈡B͹͝J3DKk5Ȍ	3'ڔ̭Qظ3TΙ2(?Ti^:jdZ!qX
<KtdPP1Q3{a%+^؝l1ۗ6D+׬M: X JXQ >B?ۊۘzXRWQ
X{6&EX PKj2'  1  PK  C:U            H   org/bouncycastle/cert/jcajce/JcaX509ContentVerifierProviderBuilder.classTmOA~kSR|-?PMD!_LR6_a%D#D/ٙg晽ݟ}0ZSMssERdɗ#|Wb.IP^*	o=Wv>j\x^0t۫pC"2+'՝@8eU}G+=,{΁U5lVzJxjS&5_Nܵ#?OɆ $|o/NT֍uoԝP'Fh n4i2pU^,_s7^ldK5ZQL)_~ҍ7qiWx	^/WZ9Wt7`ە͘:rMݝWxArJKc]'`অVXᖅZ㶶
XI]^7pD7詉GZC	L~h1(C[VЫg/}pe]q
/mtFNvS$gi5@sF+sǙcoa+>CnLOT0.sX9,iKBP<M s4!xl!1LnVhOHU0>z0O%V~PK		    PK  C:U            M   org/bouncycastle/cert/jcajce/JcaX509ExtensionUtils$SHA1DigestCalculator.classSNA=K)kU@iEݶ
~cRњj4~~MͲKvJJD2i)F(Msgιܽ3_ 6HCL0jw5]9)JSҼ"$'eYpm?p䧽R]x@Cg'q)l)2|ze!a?sl%E!xDwgJ!,6Y
${-ۢ6MjY<`<rwJ}7ǿ:6?`@`,BHᅎｕK*/ZVVV'̹LΓu%!H0t\qEǸ	:jX(܍-ڮRBMl>cO%(-!e0j*"Ozm(
ᦁ8B3pM)( n01aY;q$qOSt)5F&Yd`<OES2o˱H	Sp#R9tWGTE4R5-ݤ" L1;mCfXhq>Mt1fwc'vI4*R4=tNQkrzl9\CPK4  s  PK  C:U            8   org/bouncycastle/cert/jcajce/JcaX509ExtensionUtils.classX	tc*bRHm@6464mP"/ED!	KcY iD[IMҦFh+q5mKi/ތ$Kbc]#?rlנu[z	UwDy^5b=91Ż[$#>DBw?3O=b5"+j,k$q#1Ѧ!M7#c-.a=OԂf:{r$ԃrf-S#W$kfOjFhꄖw'k	4׃FH5.鉈SIM26f^c		Do=azh.%I-~K1@j,CFS˃f<).lo|549
	#G	
	M8-rP=z";?b&5'zS TԛDCFkFL 5y^nܢs4|\h'`
HXK.-4xO454>Q`fU1q89B$xgZPp5Y٧}\YcX'.vPn[GWR.I3Xg}F4Jy,t'ԏZ\f]+pkR<::xaÔ`$Fum̖6#hSA5aF5;==NV;
d\ͬ+ϣLD8)Y~pR)m3egE-KVf0+aNxU}[uvyPv`.MGmFT`fO|x1:Wi;ԽTud|3`P=<WՒmƖ:5|9J
&iγduW7'W+bZДp<P6\5%	:["hT+nq	(.T`[UM]`&N-O*Mt	tl!+)p@@@N~v	W|Nl7'z[zQOXN&7{adcJB+Kn{LIStk&[Fo*RE`1<.*8淳
2.6bZ.pKVW76b#)EKcS*䬳<L$[gyNe=>_Wi_>O
H]P-	q_.Lty$cv\QGN:1w3ˌ̅ؖq?M;zqh_r;7	f{#ra
jPd$bU
.+Q"QpnQ
VaJS.dx*5VЄ(X*hX|(X*X)hƋ4%
/e6ֽ]w(
;bxj
z\xy͵oEoAm2Ax=x'>?1|D^0z|H~&߈OȸGex'e2B1qR8C8w0eC32Șefç>9/0pN0dqqhn{ppoP}&թj"h,jЀ74-H\,X4ZCO}/o@âƿ}RHy}WeQeXJF qƟRxUemƟ
)V ~mߔfj7.kjo,duoye_m^-7I6 Qk')8c,9k£)|מ?u
:2##Y
}_0	|~6Nq	Hῼ
fYUM):OE7'6'sOV,#-ݮx$2x,_CЦqFBN~D[	}%%|;ouWCM8vUQ`gk
R
=WNqg`o@{
_M')1j$J$qnn8$p`٪stVSF@NCYsu8]ٙI\FD
PKDe  d  PK  C:U            >   org/bouncycastle/cert/jcajce/JcaX509v1CertificateBuilder.classS[O"1zxMRH4\5jbbL|*%c1C`b=Q Y,iO}}`D@&	lGūeQ&j).f+hMpߓI+/$X	"mlf2ؘO*./K\Z79iWPVS;7hOTo:_1t gTJδ(-`;Y^TC,F,n5.So՗O<۸`t:>|;93тtJGxU_K0G
Q/<b$&3 flD6FD3}<m,bܬ 76cl5Ň^~OwK[|6=PK2O  {  PK  C:U            6   org/bouncycastle/cert/jcajce/JcaX509v2CRLBuilder.classn@P-P2⢡E@\m7Kؕ x 
1D	K;ޑ9g?1j?0\'ڼ`p&2m%{InD"
eoÎz ӉG"fXcs%L.Ufxv:2:M6JnDR2زPwL|]mYE"OMȓcbNQ#GN):RR;mF_9xl~4iYQcA4ݢMQ}ݧ蘿i*~V+-0R0<;[
*n..anp"n5*
tCF::}Y}JR([|7l~ǝ=l}[bC̵1Y1JZz;4*PK    PK  C:U            >   org/bouncycastle/cert/jcajce/JcaX509v3CertificateBuilder.classVNA=եRRlPjlbAP)ݒ	4	415| 8R%6;;{|exK󚮙*/t:Q2^@03S#=|SF㳵zQl4tm9UUh1eeV&P~_,o*hUMfELDٖi	4`p,Q*UQj|(Fو(FQeSԂ>UܝSsJdc_KE-fyƄ,U)Z=͹5
)ApLq		^	NH8I0L^x1A8J+v L5K]r$UxK}xD{ƽ~^5mVl4Ӆzy{9@7jM9n:DۈyjؘM%-Mlkr*fbo0zl͑|7Rf{/o8i
po碐{y~/q^]yщ۰0#\fTidcLDdŸ
3%ÇsfR0_R/Xw O] K9O=.g"l7>Z?W;IGv0e7u9>+\*4@Gς$UAtgo+|"*nn>>:q!yl12);$PK~v  
  PK  C:U            2   org/bouncycastle/cert/jcajce/NamedCertHelper.class]KAQssӏ>.MF@~mfdvWEE?n"Fsp̼8AwI>R#Ӝڈk<(=&ܜP8AGG9ja~[uBr}|%	*9f3gtҁ
M=F{ǎSpM+٦;{QZ+Oew2h?}6[Zv=?.V<$@<26\,"<AASصLud*ǪlYU:ʸglO(> :)$#3	Q|A>FmmCPK1J    PK  C:U            5   org/bouncycastle/cert/jcajce/ProviderCertHelper.classKAǿeYեK밗nF)
<BiQ*(Q Ł/}͛ϯ 8dH3=g
#iW%64SB ,B2|HQv2!GVd59_M߅c-Gv(Ё!ǕaW7&4ht qikm3՗jϲCgA]kPǽۚU=!!<6QrQNاgsC)6J%H*
86_lxe6eb<c3o<&AQ;PKYbʥ:  m  PK
    )D:U               org/bouncycastle/cert/ocsp/PK  C:U            .   org/bouncycastle/cert/ocsp/BasicOCSPResp.classW[=`a$,ل9Z؅\d$٢"!kbH;^F^ͬvfU8vzNqBXXS8_J1{{쳗/\iԀVQxP𠀺A#wjf&M#'
;<fdSi#'&JbwްuM{b{tRWS0f&TZ=+'$atb)$WO攴)LBXwfFB5MR4-$&=$f-JER%@&ܓNY͚9!|`bo)0=ш0jұPx.tЛH4'hvZ3*;1}\MX{tJX*g
sV&gŭaI?k$s	5+h^3tpVHgk)]rY:qk钜5*YLƽ}0i\=f6(fYh=3DGnR9|IэWN)1͈Nxy"`'-wCN+z*VBn)J%"ҥ|i6.kc{GuKM18ejIUߠf9
*TL-11V zytsPǊ	Tun| n!`s 4%">|ZOӂ*ɒM/@=hiܭG{r,_oQedcC%E\(4Q.%bvS܋ABv,KSl,u~U,YDm"]
"nqEq;E[ĭ"nGĠ!"FDToYO Ҽ'*܊#p_Gmʞ1/uJI UR%mkkR8	,UãnέF:JbN0s mt9)vR
Tc C?tᏞKR~
Jl:Ӆl]ވm۪֎nPّ-(1OCԪvVy
_W˪}TRK$3Y]]W>cG`K`nt>tWv²0eMheMfV{8PB]-d=2Z32 C(C#B20\z2t1Ar4&J2˼##c#Nʈ"+*2Ò94?##<OFU262ȲdÛdAoq
ʳhq`x'ûq7-a?>	~	q>eH{%p
c>E	wdge0'$܅OK8^<ü#DcDcxqIPpN4ЄfhX*T/渥$W2( GTԢM?k8H1q-=o)*J;{TO<{"y<.cXoc1&Ի[]͖'HV!ύ	sь	1.ګnjy
\Q:ø3i
=^׺v[Xeʡ|m	ݱ!dH:Æh~6FNڣKtqi
\tζ]hqP>yZz`{
%stPt3(]-[
:oCqtƟ=FG5_<>. +Uȓ
GZ׸$^K"DHYxQ<~W_pMBiGc<9eW$m͛qﱈj0]?-<.d'/5_±%ħtkMߌ<OqG,Vyd{'D]MSKHϣFчQW;yG@6l1BhW
PK15    PK  C:U            D   org/bouncycastle/cert/ocsp/BasicOCSPRespBuilder$ResponseObject.classU[sD:DiRS)Pr/jhmJ qL1N.WE8Uc!OK_Cj00YN+~G{۳g++(K8F>xOBi޼t&_$S3xK%#^ͥ	횎MP{YG,]ǖ0ޢ͛91twt풖5xEI{]'aW<Җt-)*MU6TKچSo
,鮝r-nnGjwR*A=דYVMy1mo:=9.Y<
ݽz.7SG:RR'pJ2*N_VW%̿vV>sӤ%	̈́H 5l;؇W2f˝^U;\,;B/3fxU3a2pἄ]<'Bv91݃֞}mMBh'G͈|J,_Rvx"jO)pu$|LG;r|3޾9^Z q<V
bW5d6ZDE8oS_4-(
.W㚂 Q0IA 
d+Pps릂_X4F0EI)
%MeLbYƔ ULU"#OeDê
	|$cH$xh%S6 ii:2z%/n>K~b%e×c
I <:n2hhlwc<P{Xj)zӾrru|/O q}uz_RWtȠLa-
!_CG%HK&FEaAc0ǁ3CO x Q>O$iӸS?+/آo,f`BPK S  	  PK  C:U            5   org/bouncycastle/cert/ocsp/BasicOCSPRespBuilder.classW[wU=dT.Kz#j
)Ŧ"E!Hgb2~CAETzY]>ࣿ'K}&6زC|g}܀u\۶[rjw..WޢC}VgH!Eգ1ӳc{鏶WSdSdDBjPHz\%r4꤮Mh>*/,T'5jjD%}	5n
XZXE/ExV
̱񁐪s>jLHbPf2HrP&̀I{Hºl&b`cr|:Ad MG3<SM-uDÞ[WCT\]UP-#f\$L-ɇ?+ȳ*Be̪#AN=[W[G#v]UnTu0ݯFqbifx ϟN{ģהB ϡ(Z2=rc[/rn{t)oB3K幣j;n[TI*@ہ>Lzz
ݤÙ;cbY^~qqכ/m1m\3j^CP2S4B-8L#Wi5)*bXp552,bX̰arZV0::V2xVOSVB5AeeeQ<	k'Ԕ[*jnvjy
ăݥZ7SJ7os^tv9bX9#hX_~˦cwU((5^r]#˨u%eU[,JEq0?mNV=VnKF4ezh@ktK|Q9W8+F("&=/U,⇒
U_-g)k\
hq<fI=Ғ7<SO_rGzZ,K3K	OWbև$VcX깸
5棖똄hF@BF$8q&lp#vHX _ɧ[{$n	
WZ0|UB"%HQ.E"[qkF<3"zt=xTD/ч"񼈍x"x\=^Ǔ\ bϊ؊'xΉ`rqȉ
GB	.^^K:uވ47cc.P7J:0U<1)=4ց^!fX؞«iSx,gq,^(X6*!l%j
hIck3WM'aovE4wt|$>TvG	Ӱ]ӰYbXv#Y+K`BM_GA@38?h]5)|r_V`s=BYF,Q<̃	pJ4s ou>"U}8V?I5y7om*Wm
?1HN^J4z])F;I)8ohm+.G/ůMӸox$^s9dp{u?'q}8gy]4f$> O:ɋ[D"Kc3mr{UK.wSgVQ$VeM1v3tϽH׆1laba}fh0]lAȰp.@RF?ݪ3PKM7    PK  C:U            .   org/bouncycastle/cert/ocsp/CertificateID.classWg{T~a9B]@;;6NC--UdQX,ug{
-(lJ
8Wc'LxxWwܳݟ|`~>1 6rDM/	R6~%4Cm9nVu4^Ԭj!vn¡-uEm9d_[NHMY
Q6T:ÌwiPSu*[
(,I˓ba
0rO+Y&t.m2laQ$.xcV
D.)?@
zQ~-ؤb{,%AYcj|^(y=t$6̜e&MrkkL;%SrHI]`?KZ{lYƳuɭfѡ2Po5$=~)fL5)m<(+9SճW㚦d$X
2dbyPvK̓Aɔ1t#׭|HĤ|vy-Xޮ0yxT2L"*'jRq͢zNa||.V>@'~r)}=8zٲe}kM,"Pq	9Ī3:NB&5tF쑠UtjԞdoEFQbHnĜn!i+&N5mJw:Sak`~T5xuSS
Ֆ%n*mHMEJ(mJ-d)Zh£G2y౒*ylXc-u<8y<籁C*wnLݮ0ׇ^*b,aTb-a6
7oj|5=yl[׼eI7kG7kW3n"];L@o$-2˧-Wsur[O11	Y
=]TVҪuT$+1,R]wyeuW#%VjWyv,TU~J߀`}g_T+*\lDN?o&'<Ǘ]1f;|ק+ҿ[UF1`ID;E+D,.MD,F@D#xDP,s4AB1
3ɠ-b2l: bTGtq4sc)2^N1t /b!L`1xq*5"$q]R.-ǽ.69p</`3mzp\l]bG<i/}.^O

0xV `mxA݈jx:6nJ[E1MC@
F,lI֠8HoFF0⩩\oDѷioEJjxxH 9D[ѝj-~u$~akLzrl,c6 MBt
|dI["-ŕ7N͆רQW|rF%-5M"ޚZWGNGͥ
b .fh75/E^M3'P_;nǘ[G\
s'vq>R{K:]y%F
^(OƱV`
:	!-ZSQ^)C'%,On~ֺفبl:x{T*ˍ
Py$x7
sq9WT3PKMo    PK  C:U            2   org/bouncycastle/cert/ocsp/CertificateStatus.class=
@M7PSl")ͺ
!+FXbg<
|żo}D7T2[Oa\g%rfu2V.xcJɄ
ӢĒ(<n&#,1DvI'k|0BFMΣ'PKUv      PK  C:U            .   org/bouncycastle/cert/ocsp/OCSPException.classuKK@5MGl"]K0w7P~:12%W?J=swb?Vo 1$'EUSфvm%nrq"Ħ,*dcK-0lrh	wnjs/g	&.|L	8nhlDi-#:MheZ〝?aǚQ~:Wc	u>syz7䡻3O.'PKP   y  PK  C:U            (   org/bouncycastle/cert/ocsp/OCSPReq.classWy|֒bcp AiH!۸_A%d-ł+V+c6iӴI6#A[	B{Ŵ}L.ֶ$ ff='.<z58 8ml5ttЦ
Tۙi5]v
~vwP?0s@DnÌG=URV\
GU
߲uƴb7QlM%{CRIURI+hqƎSZLW
=yjT'jh-iQ5XA溠 IT3SIJ&fO4ei})lwvӒDKzUGjS^M.=e)zTu{H;%F45`m^:gQKemLi+"*	HMV$?R0^%:yNeY̜k?0rwtT͂Io:1߯h5jRcC25#יK2=ǝ6;pG\I:vM^jQa]SvjLtBսPK
,:=q59	%>f	`ghW7rQRcT?d9p[ţҨ.pcהDXA;Kk>Mr
+$p	WذH~qSc@ozUWM%
~ʇ(hԔe4G[Sg&fKW4I5pAIsWqcr~l%*\L>ҟ ?,#UeDaJUD"ZD\-"Uĵ"):"vx"-b6":D)9"q.qn="z)sˢeBYEȥb<\~/\Q>i
lefDe^(PBqU6rƬNfk>Tn[ѦL(:@%g}7EeYeӁ],ڋT`f%CMWĖjlKmK37c=][a|o۵E<kwoMZsunY\m7{8M]eq{6:bGQ\rv9yN
(׻tK駣$[6楒UF?R2aXZQ%&&5elA@ƕ'c5Lj `AH˸
20axBMx%SF/F!/hd4̻W:'c^!aZ^xxexULV~&od&fz+y6&og[~	Ca&ǻ$uQ&<*6^݇1	
F	Q<a&00OKPI&Ǚ009dII	1|\~|FJ8I839-!O<n&e1	>1&g$$P5L>X
WQKCcXJ`>AQBF
{$f_Ac}c_jl:2~8?Kb2mxMijYŁ~~? $9h?oGYԜ,~;ȜG;ŗ|9'h+Yn/uqOByMD<L?y*41On[W@3\ k,oo?溒E^I##瑿<Lx4n~M~cHvl> 7<Ps?{|ѧl7ccE("TNtY!եΘ?
X^ջAJltΑy ~=)A8
-v	0$3v([9Dwf1?=Jaܹ~f7>^\|wRҕ4 
LcW^GM,>#d\Ȟ=/Z= J*p3χCݹ1o0Wy7J+T,0T)=ͧ/2i_h&??+pssNq]ƭ6"*"MsU]Kf yߛaiBB_G}gnPKw愁d    PK  C:U            =   org/bouncycastle/cert/ocsp/OCSPReqBuilder$RequestObject.class.AX]KK݋RE$KBD[퐑ڭiSoE⒐x %ή"RNr9͹̜W Ke3r2W`PyUr1.͊iMةZ$/%{a䝲mX'0={p,d2JA~O(K8)yn!z=>[eQ,pai6U+t6]q%ptj6


Tݿ۬./}^O6tAo<fjn"^SrGF4VC+bB5F/mDE7*"S(Ck)/H3l٢y]fR_70!ڧ';D:?aB{@B]p` LuF:ș~#Ɵ0y B2MJ=PK    PK  C:U            /   org/bouncycastle/cert/ocsp/OCSPReqBuilder.classWi{U~mzTHpȒ&b[
JMcݦә83ﻀ]\HQ>?}sg6~Oz̹9s{f~8
2E^txڋ4&M>xW6_ju-n~|H7	=ŏeJ*bX7\O~5.[=9L UL+E.TJHHI>ƓXLǕ?n(j	jEi2eq4X_4,J(bE	M&tCL
N*P1("2iY#i+-<%@"MTMh6(2v@6irU-N.aUWv꤬%,iI%!'{Dz*-.F&*qZ２-8-55Ȑ7^#=tPMIg=uhߤ*L)q!JJWUeSo'O$#_`;(ӧZNT(/Dqq3)vU`YVׁCvMîmfarXB8/Pڛ[@EB]1o|
$][eu͢Emz	8p,Ik>Lmyn8TqJB)Qӯ!~t;ΣXԅY:13wxbE.x-@Ya* 1pÅ1\gXa
Z CC!Ͱa=CaFK)cHqmu7-Ѩ	B!Ge!DSK
Se=ԝj-T̅YM&K~*y
WEj~^PyZs^C۩/@l	X(XߨilJձ%:W+4cp>--5󞺅,uZ+1cpk-s3w;Z'=cTX#X}׍R0w/U
0vm;_ R벰x^e.IsM+ADsIX/׵HO*(
1	q7KX[|6~u;&$t".*LJX\$.T.rq).FEC"4a}xxFD?msģ"n;A</b'E/؍GD)#"F/b+pq_+p?"'+苩I/UҠF$OʦW9/mQK߱[Nj/}{6Wx}쑊Ec^,B
4.fZ0XoѠp
ǹ85}@۬p4XH,m",7VW"c,>ᡔZA0dP9
L
$	  C+A,06;uZ	oݙG<9|,>?îy8Î)XG<B9r|W6dٙ,2"|v!^^%q9Q7fy37|Ym{O	,vmݧBoa-bk7f)E(̜#1[(,>4`qa"#9@c>9$eC '~7:2laKu|q,Bhe!ps3-/,ߟ0K./*강ܗNE+"HPu!;ک2'9lC'lwF7DG( PKN    PK  C:U            )   org/bouncycastle/cert/ocsp/OCSPResp.classVwUۤR6P@$M
,jLȦ5N'4ddT
]pS<pџ8ɣ7I{n?/lj.Am.֣.&vM8b,<q/	=cNߨ?0<Þ`7$o3AnO08q&>'9!^xGCdt9)5)׌85M!OqEe5k		tVҲR)&qLf8	$e]ѳ&-d3j:K+U{
zTcuIoY.4)jnCo"Or6	C1Hrrt&G"8,/-{Ӳjdq;)en)W-/,Wi7VdRKIϥtiwTyUEEQ%qW.)RЊ=HV@Lҥ)5:IIzgd"8lzWyaּrxcob*o3ۦ!8IjbvXmoBgpiĤ|"!6Ɋ;Fޥ/Gs*cUyo|pMFS'Jj 	A=PjhPbn2]eͤ~d=Q-jvG00heΠ 
<6yc<pcwn?{8.@k,qW[}峣Es:dZ<RK7RK/jwIRl.B%hnPٷҔ[޻Ĵ6BddE^mS}uy/޹y6hj3| FST7)oH-4FM*MhZSOI|]
pwNًXE܇GD@u,h"V1g0!GEģ"01GTj<!^H7)2[X5эclḈ>$:G\	iCpg$V$g<gsC8 USē^)Gpc/˭r~i*cR&Z
dbRB'8Ni%yIdJU$U$/tQY S?-Lk+-w̾Y6e
ׄd~n`AfA?( 5+by*Wq`{<MP]kM߯ZsX-|{2EFb4ga0KQ?Zni8Q#tyw+p9/a<-6)L!~_Z.+2M]#!\NL]3ǋטi-)O1.<2O90]!㶘!}:Wvw
vm@c'yNZx=+JU
)2ÌPK|    PK  C:U            0   org/bouncycastle/cert/ocsp/OCSPRespBuilder.classTn@=CNkRe-e	SҺeaKRYN*"54ġ)|!!h<3{ po pO-2؃48_c`-WP\2SVu=3gU˺zQLUX(fzI	銹dp+k.\i:%=NQ۵%;Uؖ?M6˶sqʵYٳrl8'SSq<E˫,;˰+Nze5]e6
wVIټ۾wDoݼ#-)qYmv}cۍ6l-*
,oM=RˮiJloBյH;[PD:znkRG) &`>a9pǱ (A1C903%ʙy !NI\^gMd㺷jVz=kH7-IzkZ×XD#8G_~gp^1&0'!N#%!+0ܐ0K߄a(Mu/&qOҭY+~f."0D%.ucqC]|.~.~.&OadE%ǯи6fJm+^k&ka̫'L@6ӹ6bZPB/1<nC)pw>1Uzh[ɿ~Blk*Fy*ݥB18fx8䯤˓*Dj	PK'&    PK  C:U            *   org/bouncycastle/cert/ocsp/OCSPUtils.classTiSP=$%FDqE\TES!}hL:Ip_2C3(B1-:w޽鏟	Р	HXuMceOfj6_HgtRtӲzN@st3kWT%|o~`3d^]<;&ziF&]Q
`J)p,?p-X,y|r;aa[X!geW[<&O@Wi
,a&;)2j%-(4EA"˴xgfNTѬmafZY|L*`
dlY
,[<}ԔJtVKM*>itF3ñ
oLTBqaz[_RgCʗHJ^r޺1mue;Dh!bND%␈"8*iՎpںm_IiܩԢ9hoR|HURu>)D{-07.2녮*{Cה?Ǧ<Z'^e^/ovu+qN֨oRM'U3+C]e4aP!ш]2Z8E#r1,c؋2ZhdH$.HbbkNↄnK8z"q;z4&%A)%!>Lpⶀƴ[r/oR>E ~]lIkSsw_PDh
Ɋzeo֠a5<(c[HHaO2"ԮFRvCmeJ:kO	rn󳝝[pTJ툜ﭐSr\ǣ

_п)9

G/]rİ{QPKg}^  9  PK  C:U            $   org/bouncycastle/cert/ocsp/Req.classJ@mkӦ(DA/MB4!llJ}+PlB[gfa?^ `!W.pÃoǇ*3ޒ)CsW8MNWG݀ϐoXٴc&~k;fζMۦg7fԁAdBֽvm+rCڼ @QRfX9{*ê^ nM&>2deuwwk^1oXWURiDRAAifUd1ÐyWKds0*}=NqCxBqLFL_^4Q|\1"PH0B!OPK$зV    PK  C:U            )   org/bouncycastle/cert/ocsp/RespData.class[SPB
\D=@ AEnVX--2bHt56ug3
| _tOvM=ݓ_G?W
mP3132˧\4zryK--1Y&|)
+[4fM76aE-?y+\hrf)>mqG:2k</^.ZӳEbhZV7Ӛ
Cׅ9EK#qig.$"(
ZU
V OT<Co,%W^X,US/zUrx!KIhpYB+Z$Jh.*UzqJB#Ԭv{T&&U5^.P4r)}#+AM׳sj5F}yWO`,x\{	ղHF]!>T?;boOh'ǭnȑtKĜ̪G{b7Ήz4)Z+À
*o*P0#
$֡et⎌0we=a&/̤032n⁌[э)=5K'-xo]`l驆]&=tC{x
G+`
t9L7Dw9߫/.V:)н=,`\ݎ;У}$!?](I>@]~g;~Bg$pp`xG/wdǎ"2Hc?)һY:<qR?PK(    PK  C:U            '   org/bouncycastle/cert/ocsp/RespID.classVkSF=يR ᑤI## %@ژ7`SL8M,,9̣O2Ӵ_ޕ
83:ڽ{ݻϿ	Es
F9VQ
;:fj
|$585x"IѸkf|U*jdОAjvZq3iV`4ݵ5rS3g͡ɒ/)),K5CWi1VwC)nZM$:L5ÞMeKuK~5Yl(fVQ[&+ָahYňXG:&%65R?6t#4lƮD$U15M*Mb>ҺU23%WBV^*EdhɑTb,.5g%pu<Q4K-ee1#.D}[NTE8.dagbܴrTəqs8j|r6TWj	8OpVPl Wb%8֚$6MZJ^mJ-n[}uv6Z<.x%oC1
<x m
Ѩ4. FXtPݪH.C
#:.u^:_P&ݴq#VIQ!ABiu5E
7	k7X#P`~ee`m+t|H-sje>iaIlч"LŌ?"D]hAgpGi'bﳁxcpWD'EBvcHc
K>
DR*2Xc
@
,3x1'&Xw1ħ&9[ ̀wV8b?颒_a5 5B2p)#yЭ^1-+Cae5%xN9tWD`2:Ȩÿyg2U-#_UL_sHCe|QF26)08TP`	R GA(h,\/_Pj^d0dq'51|ѠH0W[x79zϵ֩
˴h/s{Baj)x=a
ǹtG~H#
>zUvPK8؎  H
  PK  C:U            .   org/bouncycastle/cert/ocsp/RevokedStatus.classOPƟAG)x)
,((0Y20$or._2"~?x60KOoOsϹ__j
f4YJAü9	`Fxq9.v&~,r+L]o3zIRv9$2DMh寊x\>kXIͺzlT*h ֶ-KC&e'uA! 2ֶ_76[,MXKOsurYg-IOZyW0D/A#gס5BHx)0Xʲ7ThWѡ"SEnrI윂N3uis̜[=f4UmI~@5[rP;']WI#_knH׺_~d55Q*+?ڊn1u:aP;rtWG#Ftцq`4`\C/,
7qOCk2Lk	4!}	>fڄ3ݐ$ ^(M'dEi\bPG?@(d+)1glo+^|KE<CՈr֦'̜`*Phߡ!x_VJֵ,J(DuET
VD?|vo	O0waC0PKmpϯ    PK  C:U            +   org/bouncycastle/cert/ocsp/SingleResp.class]sV_%e -% %-Sj0q PqPڟҫfHe;tW'D{fuѳ=?\BMB&[}>pdִLE<w嘶HHФnAwx]&'y4]mr@TY0=---CҋxemCw+Uo9vj4Eۗ>1tt
=՟ZCZy0\	vٛ;nChcMilh0-gǔC6Y#B?<9u9nc9Wp"|ei5oPiW~0]thkݲڒ&y8.]'d8)㔌2Fe'}	ҡwrFB:޷D2ْw6i+4>KŊ4t8`vM_kHDSo?ZPb!0~oBHѮ)_&:9ߋ
9O{-,^qXL]}_fJ_3njTվ\&,-ޛ挊3Ȫ@N0$1EIh*RldL)G8*ઊU񙊣lT8Ҹ溂0,nCU>g3Ϧ6_*8EcXP0"l))-Khޮ7~WߨsKi
џJFT]}_%G P_c^UiF^_ma+ q% Ȣ>u$AWv0J6[c_8{R#tm<jGOv4C+s`8Aibϱ3I_c!{@_b	jklzВaKa7ЛM
#	PKf  >	  PK  C:U            .   org/bouncycastle/cert/ocsp/UnknownStatus.class}
0߯hVE(.} =DTCݽwpý?%hUҮ	J\.&i
N˛3G屔ªk	Nߔg(F!!Aa^ȵIO@8 PK\ȡ      PK
    )D:U            "   org/bouncycastle/cert/ocsp/jcajce/PK  C:U            ?   org/bouncycastle/cert/ocsp/jcajce/JcaBasicOCSPRespBuilder.classRJA&nb$F{!)H
xd',ά$Uz>@JID/R;0ï? IoJ_+x
T6LqAbwjX%@!aܤ0QÙ6L={@/zKp󌮪0!-1-Yv.tTJd1AnÁ+m."#CEp0=lMU\Gzxa܃aäs.KN,1.]zeK-ˈ%Vt_ߥeiT-c/=Z0))'{mH?,@H+Y1|dc
Kb\ky460mQn@m93ׅ.>vtylv1fONk}i<PKp0  U  PK  C:U            8   org/bouncycastle/cert/ocsp/jcajce/JcaCertificateID.classQ]K0=[;t~>`7p2PDckJ׌4|(QbVCrCsϹ9>VCKsD@Cvh"xOKӧ\hC4[ə͘+_A󁋮*&)ՋyDbrrAO9d(NTM)tdwqfo/6
6lmlXn;ǅoߨo\HCOufFiڐH"ދ1fZ#-?|r{hasPF4	z5̤oAFs,UPL3,8.JlPKw1    PK  C:U            1   org/bouncycastle/cert/ocsp/jcajce/JcaRespID.classKO1)[6.PJix)!HP"@	!q1&lv(X\x&Q4c{7
0s\v]:gȐQёZ*<R2]ոrOVӑ%onR
ǰu^c-[RDS\Dz ~Q""ŏZCI󘼢/|\Tᾌ~X:R5CSEAeЃiHѐJѡ-0hBB+J1LQ6	=]b/o|6/
CUdJls/]
`Rpd>$洍w6(>&j.3%jjǿ!1#'D4S4;|-m.Hjn2@jwvL&|PKV    PK
    )D:U               org/bouncycastle/cert/path/PK  C:U            )   org/bouncycastle/cert/path/CertPath.classUOV.s!yc($I)ZXkV~TE&M2 xXԑvh4ҴkBF!TJ9~\/_0E-
j~#MbZ%ZmsSٯ/]έWvj3kx;X[[[rqv䜡˪լMɠ]LTA5	ct-NqD׀2RsͽpRKvne=˯dV;x-{!CoQ-Pi"Ua"PAD;ҵwQ	X啐5	Q
~Wȫ~ u8b	}g808C~>s>lvʛ]vČ9s4}`Fc4fg՝{,M
Sh4AIiU#OLB%f.jYwQwڹ'Bv'Ln[':t靓CJGZG2::1ut#c 9	ЅA\#8>A>N+q|8pIqcJqHo0ݍq>Xj^e?YYC[Ү =xW1J< ۓjT*_13rNlB1]3jxҠcdaD=G2L7Ģ5jO6Te7\7`g,ٯ5Ζ¶	WCQM%or٧13tHsl/h#Ն!b#2EE_}G3Q=$@v((vQH-<WRHKr0@G!-X[\iY!9-9j$iM7ǧi%dq-sؾ^@Bu_PKã~  	  PK  C:U            .   org/bouncycastle/cert/path/CertPathUtils.classJ@i6U.i.^(TTwWt!)Tt{tEG/Q(J70g9眏yx|04C0t/8HjuEJdM((r\	w<3:	?n,UNAi\s;5jfk}%i2-Rɪh0u͖}65tk4h%t؞lyR!3idahtt1(bBo>0CUIYqt׷xE
Lܭ
=N*( m`A?ezbx1}h.Cv/C5wCF	8{CPK5k  "  PK  C:U            3   org/bouncycastle/cert/path/CertPathValidation.classAA['PS*R$
B%ڽ`eݕkj
ĊD#
ՙIΗqJII⍜E;֞rFF.E,5'^aP ʚń_7VNyTdP<1 @V GX7&E]?eAfmt;d\ʟA B),GD*-OPK6   V  PK  C:U            :   org/bouncycastle/cert/path/CertPathValidationContext.class}RmOP~xn!_N(cBL1!bۥzKM\QsNdS{rY aĪ$qa՗gs֦#f(nrk(!c?qSwy&ZR}no/_Sm̗8aqms'r;"qR:R~l-V%0w#鞺<Vp\)琫Ӥk:P*qB!YbR|^ hшb#hHĺWbbfJf\e\na_K o]b+YekM3!媳j5	Z/DHS_l/s;&71[&
:00O&fq{s}ITPD5
<n}y]loЭBYo;ja3
2zȚn_48}uJY5nMjwUݏVЖX#ƧL2ETR(kcON38k%
TK/PKY5    PK  C:U            <   org/bouncycastle/cert/path/CertPathValidationException.classmN@RElkwt0qqӸsa~(RLI$>e<hXt3;,{	3tfDW*b(ȥNK&+4UQbVuȕɕHTiRbgsY..lۆ	G½)3Na8
EY<Y(a죅np{pp3bpNCpZ,b
 Ec`f*$[4{|	@dۛu;oPK    PK  C:U            9   org/bouncycastle/cert/path/CertPathValidationResult.classU[SVd	ҚZHmqqp*1/BVR!yl9J@_@gꆶ<l.L~v<~"&ANgt!|&!Δ4.-]	==u_nٱۦጯ[=F1 ĬRewk6L;Vִ~b/y6I6l]=0
+9	1Z5WiHFfQBn:쉘Rht-V

۱ݽIs[uX9zʹˆB1qbD_B[p:}iSQ}jAdPXk{"֟\: NM­Zݡr._ >V/}l?]Ǣ(SpM
L(B
&)pfut#©3tSrn
3]eȷDn2Gxl􈭛{ts<}n5\;7Ϫ%/2*XW1,
ᦊKPU(U|!-WĂ4cXe=eX"G+qh8fcsx׸V髟L}uͨ<ЯEznIRiSCܼ@Lu*SoH>g7(jaOԴ?7v$4xĢIM<Y,7(Gp|)f1{4| z'}4,$6#qYV-mumvAAB0BWp;p/QMvO1C_Ioӡt(%aGh2e>.tyz7&wP¿#,tA(6`lc@211?Xe|'ӧgSĎܙxnW\pl?gF'PK.%    PK  C:U            @   org/bouncycastle/cert/path/CertPathValidationResultBuilder.classSRA= ~&
IUAr	%YbLRɆ	|Ĉ(??X{B^H.gzLwO	8UU	1ӚplF ht,SVBFB&kU=juˌ|;!#(a(LQ];FJ@
cc	D;#Qf̢i)߫+PoZTE4?F@Mnn!򭷩eFdR
)brl,H9.tҍ5źqBU \t8$ef嬸- 5؊^}E
>P*LBZ	u%4Hh$8+vbb:]rɋ58	7n_א5~w<gϳ6|)#Qݸ[go/p/
Uu"8"ӷx%ȸ@ahfpAUPp*hWA%zHSЊ)~*ЃCdtbXb$ôLd\ǸW100pat<Lobٌt+$rC/Ċ5(pAdqAxJn7͕SsyF
YCpx==Z`~39s6g<}} 蔸}$L
	`Q-ѽN=3,8#eسӬ:!,ǭth.D倭 Kqض3__̞M$s^;Wy9{-<t~xgo4
.~QwPK.  /  PK
    )D:U            '   org/bouncycastle/cert/path/validations/PK  C:U            G   org/bouncycastle/cert/path/validations/BasicConstraintsValidation.classUStM	
bMJK	(S(-LlC6隔{+S_;#߈2(P<O?SzѾ<" M'FWYw״L1m9nI3-׉lv^s
}2b:N(X"i5i$oX9BF%k(
M4Kl5,Ǵ-Y%/(AyY(مcb4n :%*Pi:q*@&by}QO%-_6ջي"tFPk(MmKSSSk8NpT	c
$VgܱiSA)2X0=v)e+"9nP5R+#cZ_5ΜKfpi(u"I憙yOΥQKM}JkTyW2U+śp9׮ꜻ(fj:'
ŒAp4oB%1xLh	J%#	HH-Gm	w$|*WBRJN	OמNtyz7~ڢ<7)[2_%QϙU'WU@=	Lj2clm={j${Z\Q/fRM]`UhS
ѨǘRЄ
TPQ)D~|1JML+P0I#݀qg22@yCX'~l,3X1G2P&1%ӹe,ZYF+>YlTA.~"9MHTu1qrɗ!ypGl15Vckד-L#E2(xv]l^auMo0"_01K@NBF8aR|
I|	1ȁ^a #.e.~`1))9r;FnIC<@k4iEc[^-C;
)t!E	F%K40&=$ QB!Z aPL!	xĿԼ27Y`|ytDgJ}bFG7m,;c<?2d̆PK|o]  m	  PK  C:U            <   org/bouncycastle/cert/path/validations/CRLValidation$1.classSkA6Is<۳Zh\BJŗC(|nɕf7O>(hg(q.[dawggofvv/_P[{}!mi0#ђ+PKaH]u?y+#wb4~mFZ:%nJrp'M<{8CW ֲ݇F0ǣ^q7H{Fۄ([wVG.W3芆ANa85#=xj|=P4	3ԣvʒ|tT~LT<EӥTi'm3qfnqW+Eb!@	,Tq1@J
u\bY\1sPL:vasߔn`zr)nhX`aXĢOVY%F$-\ݏ;ь?Šn Dwa~!nC|;AWpa1wc[	mZ+
E$PKO    PK  C:U            :   org/bouncycastle/cert/path/validations/CRLValidation.classU]SU~6]hV)#			
@E%F%i%Zds[6
[o3mdF{gJJ~_~ = _  .IPM߱*fABw(ɇzJ$7	`K䶫s=N,iwD"A4V.s˧YC1؆C"w3v9-iQcq(9nVJynhJ1\	.s@t'U*>fE؁l
f+MUεuVэp<Y*nēaZL	:}gzAoZv1Fis\5J>`1Dkv@5kmce>MX-[	:xF\@?%8q^I0BFmpjijBӺ;~g{L;NYV2eȸ"㪌eɸ&㺌7d)zKDDBt?!HފkfFPxAjQג&pU+$:Ӧˋ&H)#.VRx}2hK%K"6^WPkZTr+fu~U9..,5l'טo.kۆH}Xdc9iQwSOQ6ڔfTL"*dUѣxKXT1[*Vы!x
{%İ&DR>T0]w
qOA)!DV`^#!>E)!>ENZzNg>=j44/Q_e^7ũ
r;zE?>]lIrZ>>C.}'t>GC<69F1O>]Ul4WŃD*8£$,F}RH4	^U|Y'+J. |/*cdٿ(Ky:`1/%Q^
,בf>G,k=@j?H^$5PKy!    PK  C:U            J   org/bouncycastle/cert/path/validations/CertificatePoliciesValidation.classU[SVlBА@%)!IcL[BHp[ 4p-B:6"Br-%ә4ig:}CBJfzٕ1xϞ=~?w p$ȱt(WC.!K):k7lnJ{ư9õap}siw%ގzߒKmG9oƗDPY;%YM{ bm7'#ᚂpid|apW|cDH
USvw=v5U4̀~ʵRn`piAm1ܜ~gcKp|Oh6MKȉ!7 s4I}zy1Y\?xu^CUIX0(	19r,@P)v6@y5֏s?D
c[F3~x*,EbiDRESf,|T]5¯-YZ5!6=`т5VA
`@9`PC
.*D:V.$
Sb1V5=pE걓$`!CX'oߠwx}Al{/=Õ^Ϳz7rX_|Z#Wkx~r/ɶgU6
=,*ki̢Y(hpDxeѪ5aqW5cBkkƔ.Љ1,fڑ-VG*1"T[P,Y,wUŢJ s,,>Q.5Yor`2a ha
cO8ҟZ(^ZhlȲO(JH4ފϱ@i+i7ReKxl8*HJ:Z5v7BF~ƽ,Vx(||/X݃"B=P_D	>,h	_OF#/)aW?'A&QGL菆L",b1ȫ%|>rʧDco
o8

_b%-2G=Fvw<H3u1L~V!zuĻiײ?{&mLVBN(vBeWPK4  V	  PK  C:U            Q   org/bouncycastle/cert/path/validations/CertificatePoliciesValidationBuilder.classRMo@}41qMMmPpފDšm%ȵȿ	(ĬT=bi{3;͟׿a(:~7M-9)ToXȰͰ.ӓht2QWޒo}
J5>42zC<x[=(z4QGuqZ 
FOU(@$sȻZu~jCJQe/2JdH^QTOH$v*Լ!mSS1X6G_DW}fC>^{l`Y(hfDCDL	;&vi;@.UZ"
$y]?ff`:KedKrz~aoƯ3~m>?rNh޾D	ʷrx>Ƌ PK'<    PK  C:U            ?   org/bouncycastle/cert/path/validations/KeyUsageValidation.classTmOA~
WNZ 	&(trPП"BD1RJBIgvgyfv~0:ܿT+ZI۱osOOsOkv\W:m-
=ǽ-[<vƱ@>wn;zb<#*-e͘Vď\qsJf!EnIi]oIJ:.EaMzk0wL#k:Of/CeUwIӦ/0}g7H.͕EAɚׄJ?f-1+sX7$-̬M8_
pA0z)n_SrKs7/;]r
)hUЦຂv7t0+vzqaf-"j&Z(<	9F2qGSJmagr,'Pv<gI)Z1xUVb*T
-AA&4\AJqGC=jhDXCuƽ:!J1Bǈ^H1"*'\^ZCLE.0U}jhMHNӮtm$p'?y^[<o*jΏ;DN$
EǃRx&?ab!q }r3;㯑{JQ$Q1=?qO5i
 #-PD]X'"ET&T$FRPK{VS%    PK  C:U            G   org/bouncycastle/cert/path/validations/ParentCertIssuedValidation.classVmSV~+[VV
VQ+PTZ!{Y"K$ZNK;3e~CRdYH3{ν>syn?7 /jTWc{5jTCP8*0
v	C\5'+IK8QrӚOF3-LWB[)1Rfm',;Ɏ
=:%梆Yt:t"ZN.D%\]ms¦=ͫWWsZH٘UZ&#̤m^p	utiBaIaKVf<LVK;Ԕp)6i	iǧ'B8ZJHɰfk/d
Nu2뚘3',p鴄3(BZNKVo.2aiL%V¯F\0S=|JNeVtq"9fk{d6%L^$ϞiiI$1Hp*u>QdiDmLD'%x%(%j:WLb]3;4LQ^bgDesE'1*q5Y
15ײCA/_;b&Ľj9GÕGeOGLU7ǧ΂Se2eDeqT1/8.ㄌ2$;$H.\I>6l?伷h%aOCc^$eS

[r],aۘ6\#i@"<~Cutywզs/cWAf]#Vp .X D
U^kph+FKJe"!OQn/Ѝ6aF@s6mSxIE3.H[3Q!J.؃UYȸb/^Q,Ucܫ*v㚊},Яb?cPs*j1£*v`t;,XRЂ
Z6_"ЗbR/a1:i8y,&YUЉ;,Hca(5 zDz$"Kv-s#
	D߯\<OS<Mu$ptxl+H+E'&ܠH(jt{gX8Ȫ){%tI)g<> ݇a<-}>E|8Dc|]<>]Vl	mcEלW5/kַ+ud=FxO0-J yp?ه8+[[1, 3Ckf;JfOPFz"(	QQS_d=2.ޑq-V:B/4nW|J~92H^9r*k*/I4ۉ[n'eJɲ$g$:Zѿ"wt
Ě(ц5`my5tPKb`  U
  PK  C:U            <   org/bouncycastle/cert/path/validations/ValidationUtils.classJ1Ozv^U7u
*HM7
E"ҙM3d7\ >	*|| [Y%(HS>aR\+1kF<P.6	#6aTh@/x<8ǀ)-9e*ڧ6r+c
-/Y,ôC:aRL8RWZHqPtPrT϶
_ksϊ6{ȀxbCey]aمXMW ׊Cm,4=;MCK|kV(`ӸjUOa:	PK7,    PK
    )D:U               org/bouncycastle/cert/selector/PK  C:U            K   org/bouncycastle/cert/selector/MSOutlookKeyIdCalculator$GeneralDigest.classROQҲU ~[`DJrѨyldwk^1&Mc<Wx1^<cy'c6;y373o>x	٣7l	B+Z_ؽWWDq݂@R9RZ~Ջ(]%Y"	t.ȇ2Jo.?97T-a?Ssd* ʇʥ?_F/^SR(]J:̃W^S!e-°΢@eN(o.6:Z-?*Tnu"#E|T&gg
hL`K[ƳDvvϱ/Eia-XHZ؉8.;
nЁI>YH!)NyaGXdY~Ɛ.^I/)*]te",^Ke9*s/qehr&v#v#+ƥkH(4Y[78f'޷b6V{h8Z(4FحCs1qWxz=<6~#
y<'U7|<ym
cNSFL;מS͚bOYDNkybG3tٹu_eԫ_r}=DޣMweDߣ'|J_Hl_xO6jw>fM6t|]WHL}l$գga\
_1cXi|`J2%4yL^l]z'}c6S?PK$^    PK  C:U            H   org/bouncycastle/cert/selector/MSOutlookKeyIdCalculator$SHA1Digest.classV]lU>wgvgltBPv*]KaY*2[
;]V;%Al>VAV!$/Q4sfukL3߽;w{ rHws޾_ω{/sgf|v2Okk\< ЦiB6٫+m:BЛD*8=q]{		gp?}g'8A	"N9XMMBSP<ybpyXp_/>/䍒.1CjCrB~t앬^rL#5NdFֱtj1m°qEfvqS5hXFQ7[c:X%i`KE;kJMa&
+`M6y)F|955i/z t"e=fV>v+(M-Q-[		$ð`KA}v&h:8 "H&!xHp?a/A#ˀst.lsR7)WCqJFAhetD43
؁qQZ`䃽pgxvg=%qmBGXYa}E1"N 4`L*R@G݌\$7jPl!0HwbsG1byfU\7qC7aTIh̙
' 67}  'N[:I@l:ņVqǻS	߻z,GY=R
IZ-FgC2UwCD?#苮u]SOlkj$XM+0F|V#
$WaKHHVRs}ׁoC<[>rxI57\nGߔǉ)ɳfO#L /VYX 뢘ıyp(r٪װv]/bՙj^STk&d\<Ņ Ã_
%Q:JgH-LDd~Y^WgG?X]$+ky	(d%2ڎHe`Yqi
:n<yIbDW= [ArϜ%iOZk%]^?I'WMeOH^5t
}ͤ=:o:o|mtkR.B]
+KF݊D嫑%F+x5ƃ^ # > 5!4M(wAa?L~xB PKS{=  F  PK  C:U            =   org/bouncycastle/cert/selector/MSOutlookKeyIdCalculator.classRn@=ۦ)mBoJTB\D I0>mrkّ/x-/U?fMeY=3_}>p"8CV7SP
rCwGdtfmى'b\c'/<#-בQl$FX+
s۷$va.Ѯc#c$}`(!"߼}ϰ"ywe&{ d1re(2tΚzxWB2S[9%YseZw8t}A]
dώ8Q@V
:t\԰U
Kʬ*sE5\Iz"dD{o &ȓX2} 5ieG)%1KWwopߜb8e6폘#|lg'SjS|:UkQdq,qT9.Ʊ'BeRBJ9U2~ PK
  =  PK  C:U            K   org/bouncycastle/cert/selector/X509AttributeCertificateHolderSelector.classVsUms9v( 4M
%@@-mA[fIl(^~+/3	 3G g|u6w9۳oW\} wpxwhfP2'32iSW#r芜޼i[dLN%Ts&z4SxTՔ) P2׎ile](zP*IÔ5#MROfd[jBUi6MHkIC{z\M	#yHe0p
ȩ,2$Ũd}$39^pϷ'L.w)hE͈< 4i?*\ǸNމ2iZ:~:W|qe#u5!뽩DfR5:eZEhwRMDOKluH)vTjE*D%pWږpۣjll]Ev	W4%SCk	+`SB̊8*B
4q9D[Yj簴LUͻ	X[較.dл,/n9o/cxaz601ld23:3D9q{Ѱdh*%#\J#]6DPY]eo
.t(pU}hCKj\oւ{yJ6l.650d\y|hQυO;9ۗٸ,GqZr{+6xa[<KxRNY~G
/q)_GԂq~d%l.<.>Ѝ`P'OHj$0,A
#I	xJVs`L=xZBh&<#a%KhGyg}ه~<y/px8C\EĠr)vRdD<
CRNpJ.LxGrCC)/a4O^?jʉayj_XGn[ `7DMTHF5Rk](?|AVԐ]ˡ,΅Y̆:Y
<YY	X3?ч-,5n%f;~EEx\;~Ap'C9oh2=f^)ꏸû9WPa>aAw:>5V<cgGᓑ9љÅkx;;bbEqE(x;V᝘bG6޼ׯZz/wA.#v7S3%XԍoG/G:[hekiii^}7C?R1m X.a`/g!b(ϫnba
m7w7*>긒gT=i8SoN-s̈́UvEb HwCst;8gfds+;-ی PK  t  PK  C:U            R   org/bouncycastle/cert/selector/X509AttributeCertificateHolderSelectorBuilder.classV[SFd[
`l
iIhR L
H/A#"KTZ̔:43}CHޙ^܄L<svs?

%$G|˻%M)nHknSړYVs!\3WƜ
	usk,JE6\D8؞l4[7yyGV(Xy%{Aj7
{wj:jfu~_7}삺5tC%aZcYa0mߢCI8_5og͠=5,SQg
[PsN',C<{\ݟROp#aN䪞s\u"fBx_Z$d_IY"sxkKO=CwP#Td^jLPs4^ȉ>jTQgD.:yZ]YF2dHxM2^1(
ox"~QgBFpW

}Bl}4фd19
$KK}ɑl+Bp4@2C*Fj֛ldDeO'O'%Lx?3TsTͱ:+yo֢/@7yNEk"ϗkފr
'Y+xW$1|S
zpMA+肤Т<VDaZA>MQ
:aR&,e+,VY|Fe|/Yl0bw1r&K&qcŝ8&I_9'OXcJi:_x>,"|^_!&&|Mu
$dfh0*~ƶ=Vn?$Zz>TF.>
P7S&u+3v0{D("(\X~}
+p#~bol`ؕOG؋Nk7^	bTH9ynLzМ
9/6Ϲݘ3-xIGI
t$xP@/{	+=1J#j hcv71!c/֝'ynӘwzlљtzܣ'G3e<xB0>Q̦?PK;$BA  
  PK  C:U            B   org/bouncycastle/cert/selector/X509CertificateHolderSelector.classV]Sg~6,	kJ
Ip R!RvYBp쮅~7xE)3z3GNI;L99'_~0o%}cwOVtm̒sEBjYxઆvM54P2Y 'a:Y%DQԝeG7eJh#vҴ"mz"=.դ3;䪝7ԲfU%ArI5R
/%Ni憛7JyYPC.[.T˥cQ}*j\B'ZReT40I	'rQ[hfZe;ܜS.E	?N[jFXprH%4찟qPo55(ph[7mVY͸aYٌV"ˑ
i%g:%C-Z]{aiVmnAqѤ\q˺d2NxM)ex]	S~sYBjVx)'xoQ37+_?	6;Cfӟ05
Χ)r7Zc/VhV6pkG
Ÿ4=3)]i7
Ee5'f|׽vXcX K/d1H !(dxSW@'2̎
Ƙ@lLmvòI+p#@6!L1f2E?c2Y܈B(}&(ҸQgy`.J돘|D>|D"rLn27ׁj7퇄7DCFFV~M\'BZ\??VzdJڃ!N#XH$PL0_>(PSD|n`;F<9#&((UE|16q
X+xh2[IҪ\ޥ܂LG8$9@*zu"EC
iC0AC;Vu8՝D[2UA1D>-rk~e'gd;Jsp˔tM"=GޜuW`Uk/8ښ{;yreLBq+wQORƥb!>FbVp/+2\|:#	lst"0VaoԝO14r엖:vPK  
  PK
    )D:U            &   org/bouncycastle/cert/selector/jcajce/PK  C:U            @   org/bouncycastle/cert/selector/jcajce/JcaSelectorConverter.classTYSAÅ%-.M8ܠBI"jXO͸nv'y/KBII Bg:/ 	
C
^\˱*X>ϝ!2/\;ý!\OA/cpRb~(@#&}fmCpA6:g1{KsꕖB:Kԯx1Ꭼ*=]YtՓuV6sL=idv39J;~]:,ǌ,9FDQ7hn|dI^giE:Y=ښW%%#b9Q~ܯxg
5`'9	٧9opO(8,mpF5 hU^r9UMm*UtTѥ[EPx}F.Zx-3nrRf.K`ů6p^`/.)g{|	{O
x-z5+@hB} fpKBFhX ꄄ'!5#a KxaSf$ji	`A0JSП5%ae*uPduTH6N@4km=ɝV!x]:>>Bi=B2s8<F1wXTJX.aD	2}61,XHȦnJ*~PK7{    PK  C:U            H   org/bouncycastle/cert/selector/jcajce/JcaX509CertSelectorConverter.classT[O@=ak,^Xqr(meU@	OCwҒ,'RIMYDUɜ|3gi~	ⴆf/j0Z/okhR,²Gከ~jh9+ʨ$DFeAZ*j)y`ǕHeRY+O"_9UW,˔'<R*^u~	:4&]ӬWAYt%.8E+Rx|.5­V|渤y5\|T񜅨k.e g\IR**8luPPE|Ng.*ekl?\.dE/y:[+Lۺ[*]Ր/"']8Gs-3a`d8p8	jdonj8j[}={TEJGO`#:S6QGwjOO}X0dD

N*k}o`%(ƈn8&zẂ[&jǰk
n8+
L\PoqU16FC۬)B:"i>SZYi6WsU6Ĩ޿BVO8ȏm#ZY#o-d@-dMS!~pxy5<Nffps
)2&4	jRH4)O̬PKq  
  PK  C:U            L   org/bouncycastle/cert/selector/jcajce/JcaX509CertificateHolderSelector.classTkS@=+KMZ"Ug0i55L2u8mY=7 H24qy˱:94Ύp6Ԭ_9f>#2]rǳ֒*Gcjy^A禧Oƺcp-n
V
0bO7<a\3Lrge4A'>Kngc3z|1L0Kj2#+͌U|"2\;_[qRT8)9Xʞ]={n*eXx9SoL~QwG9QPMA
PpSA7jɍ@(Z͝Q%-ί:ũq+t|-QMgvI,
)@"KZAzK\c3.YBT;VxKWDӞkamna@C#U04jh:dkh.CDC&[pS*z1#CfU၊ۘVqOTS᱊x$C	2|n~yǷ?-0D?2G#_lTh#E<?2
C:˯%DPu,O QL^bl:&Rg4"/QPk@j'Hcrgf?W2PK!J    PK
    )D:U               org/bouncycastle/cmc/PK  C:U            '   org/bouncycastle/cmc/CMCException.classuN@NCJ. ]CDc
rC΅	"6&ٝfX8Bp'fhe_2wRb+a*30Qɹ+P7Jdgg88=pqU{9+?ƹ
)C[[tVtGehfRc@C@?`_<7@BszGl3Ptpwh=~7!@:ݧ'PK_   }  PK  C:U            ,   org/bouncycastle/cmc/SimplePKIResponse.classUoSE~R.-hO(m$m-BJ%6$Xul.stFFf/ȥ:cfg}o 7ūQQ`Hf[YVpYӡ۱"
XƝ=al	\ps/yWl|娳r$9Y&#4)e3##\8SrI+Ǟ2v	u
sf:AwEz;PAxS^ە"\eUy1QdM(@^;p	apwxe̾V<	_xuKixǔ][Ew̥܆gWma?L]gYUl{ Lef,]j7d;%]bWqܣ*H:iLk'zuaWVC݊l|.$?nP`c*U\RqYś*R		*Rp5SG"xEaJCի[QH}gND,گDgㅗvLh1}
4𻐭'z+
!k|tktnEZBDPyaHE:^MץmWQ] hXu`1X``EC
ܗf]C|"͆F;|fqO4IfM+%OF%G_`wyVے5$']ʨc5D~SH@f0RxtfnQ/
t;"J*[zʪJ2#?F8=~,>M|w|MAz>N5:6߰~
C
|5-Jv?cXrG#M|ن_mlPbY04PqC")*̉KS^R^L&!hZ= >~LP߅3;?PK  j  PK
    )D:U               org/bouncycastle/cms/PK  C:U            1   org/bouncycastle/cms/AuthAttributesProvider.classe1@Dvz;ņj{&tvdC,<2bib^2ɛÒ&酰X W-by5jhTkJT[eeo^>]?%Qa?.S:?f9~ĘjJ,!;} PK۱ٝ      PK  C:U            +   org/bouncycastle/cms/CMSAbsentContent.classRJ@=[mcc[k[ R}(+oDjRRQ ?JMc+j&sټCO6wu\G1\r"dsp%C9f,_1_kn8Q,Z&eUVy),*+5\⾬
a]Fdmj\83}'ZkL'޷y:qNYQoze`BHAЧ!AЯ!!ɰqA'[?O0,lKdKR}$톟;O	SLCcs:Ҙ)Z 
MVK!$M1ЯJѻB ȼ`Q1FqzKg,~qb9a!6IR),*ה#D0HijLu,tC,b'PKw8ӗ  Y  PK  C:U            '   org/bouncycastle/cms/CMSAlgorithm.classX[G q7	I qe`D\^2BzrKW;9y؍wlok&;gި ]sf7zuX#)l*v9m͍
6rne(~͢EItc8KқlT:͚͛xrA;i*QM-μND$\'g;IN.ggcu~(3LAQvf4]9waE64;U^v-m);&wA\XpL_$ڻ}FGlhpUs851dѼFL?fjjbDf^DfZb߮mqdfvAFWA[AWe׮cRykReRe285oﾞnUڽ$̊Rbk26or9J>.|Mb7z޴z]>}sݐrHKoУuq(q`{:A4ԀҚS\0e0bIfK2K]
s{WDD4C'Bt2%1rE4#<G.mrOT<DK#֍)5ґ"ϳxMjSNSU0*=<<,ALi0\I#khx_lɻs6V,bXDkygsMI'{RIC?'!6fg2+D257ndooX)*sHdq Se.3@

}WUbsHģ+o\2X
(H)_k~)&047ZMŴȈ6QMe)e̻![9-UˍDtBє.m"ahr#eW$Geś,H멄x
Dݿ_<W[_8){G}u2'&G!#!#{;"bb1=EV߈ۂz؆䎤.ҹx硘wwIČ}g Wi)=Ad창;g
v\t\K*iP"J9?Iz{'IN'\pŖdmGZ{[׍+W]`x4AOFEylV{ğ)LXev]ga[
vda7[-vfa[vpķ}[ߙ;tJVGd_N*grfʀi@9PTU@5PLf 3Yl`Pg B` Ker`V5Z``@ h 7hZ
@+l [xv   :N	t=.}n`
h@@Ё 
1`?0āa $  
#QB"br
J*j.n^&OKVvw?~/c,`=H`*PXR
Ӏr3!`:0ie_oY#MD@%0XGi> X,o 	3X
,[X	[7Ngg Fw^N
x?:>
|8	7O>|</_
|
:
o|>?~
9e.ci
VgMFtqk`\o'u
J)-UZZUieJ+NW:SlJz.P:MiJg)tRRF+.TjWR"
J.VPJiRJ(u)]tJ(]tR6[nSڮtҀV6+mQIf[NbqՈN]}^:SJ2͓v>;8|NevIs9i}7})zYː2ᥜQJsS4	NIqHsi6Kcpj0C9uJs1'4qZ/Ӝ\UN[IsJsS@8uHs.i.NMϩQ㜆~i.N47q:[8iN!int4pҥS4r:Ok9
HsS8zN{ӺQmnd;85ҝvSzGIN}tS,'4qK<mҼ]9)#\<i4r:K8EyӠ4sIPK3;	  .  PK  C:U            ?   org/bouncycastle/cms/CMSAttributeTableGenerationException.classuAK@߶iQJ[\HE ^bktt#ɦ(qb)f|-~|~8>C,:g`x< y'g"/D2&iI.e37gw3P*\	cq%H*T\::neahd`m1m$Ñ=ܧjMJ8[[&jh`贠c
{ibЯ2*rѩ&+Un}֨7^˰S!:NwtLڥWDK01~PK    PK  C:U            5   org/bouncycastle/cms/CMSAttributeTableGenerator.classN@ Ucưjh&\&t4%eڴS#G XcX:3o pmhCg<?ꙶCr&z7[`bfY@sw7=
ɅtSDygj\xI>5ǥ.e컩	P-F3LQ甭o0lh"yuC݀1~(Wƣo0&PM|OP|9^

EJ*TT\jjm'JMhu^n{
tCH*
R|2BN#`9nw2|c yDhrJmPKk  w  PK  C:U            1   org/bouncycastle/cms/CMSAuthEnvelopedData$1.classTmOA~JVAA(Z *	Hb
!1YK9r5w[b&M(܁Bdwfg۟ 0"Ci3$LkcXDDyWjA#0z_:\	I&TɗtTu`Y:ADDs+zCUT .C	%TȐ{v}{D1x/huym#%C:z\%~P7t'lʂ]-WCW/9oe3X"liRle'<.oZe:
SN#MJ l(׳Rjۥ2q8NC5
}Rk_ÀlpѤU=hZ+M>k=iIӦqUrE@V{1 ll|¾2xZ70n၁.0舸N1n졁$"m:0cS:FHGh+踃':`P4U)C*٪P~ᤩ2R0!a0t @b7V,Ҿ"n$lnj3C<cQ'hw+f	BG\DǨxN0Vduwi_S~c4F7PKk{x  %  PK  C:U            1   org/bouncycastle/cms/CMSAuthEnvelopedData$2.classJ1iюZ/.t8SR]iL҂BAQ\ >[ԄrOH`b<{>>I]IYUS֕
vO1I_WOr9m_1WTD9mK
^KY(~t	yum}Fej061`j=v	6<['S)G qu/nt[CGlI(XH!As&,̛"A!: {@H{Lu~js6*%: Ǭ^]ѳy$tr	351LDt,q"D"uX1j6PK$dz    PK  C:U            /   org/bouncycastle/cms/CMSAuthEnvelopedData.classW[WWFGj@*XkD[iA,Q[&
3dB~}]VY}k=	`s9;{sf ?)
SPnpLA(|5@a2#
V!3]XlQdVϺdx',#S}$kC0Ӧ>kvu״k;\)ۢΰ-PI7hrKA%dڕޥ`f
-*4"*c`2INI2nDݠPgpKcC+i쬵$/zԴ}'`7ҭeiqvƢ#v2&
=dTXxTG%:EKH73Q&fd]yFI~@`OȔ㺫dtQ6:qk-YH(YKAKzyRQ\L LBYGI=BiB:dH)ZΒhqI;y6Z_Ӣ|5:KKp׺W5,eOf
l.Cf
-GE ,*h#eXV .\}IZaҡ%Kcၗ-_&tO{n	BHkYۃe az큆JK3	<QzVjq5|o9м`NeJIyV~տFV:Zv	AG6zd	?bR*)sڱ'$xcFC-z5Xq
*NhhS:
Xa
֡OCPg5<bYj؋9
1c	

8ý<C.:b-eY0X$YH]U.["baacqYAdUVэI=PqxCœxUG᪈äME
YtzSz&#I]puʀh&]PpP
-UX({-k)^tևPEwQFf>3=	>: <X Iތpm⣁i|x96;Ei|íL͡{gp;ps
akd/unm͡g~>/s3'f
0i?܁т*Ceq^`A#kvϓ5PP"(T/Lߙ@a:B
/9feoO-p#P-u7t
uM6oEqʇF/
ܜSEI\}5Hӫ13}}$[7|PKQ    PK  C:U            8   org/bouncycastle/cms/CMSAuthEnvelopedDataGenerator.classW{Umn匀L[PѴZ&KdSx'7bb^)4Oyf޼y6>}:ÁkL]@vGrάبjm*]=]^%W*BQEI0|+
=&`6g%GPld? 1!iRX1|>#e$Tch#hOUv~`PfкUBFkA=p?iYN|YqaΤEO&ܾlHw+M5rY_=i5_,&NVwꚀ9dXnI?<S0ԈUD CGw}1Tof]A=Gr܈(95y|}MfT2@؞Y>\a-ood6fnFiJpܓ~EhnO1ӸmpMlvh)aѨph
+)PzrD&\"if6(<ev
.-71o1[U"<a%LDA4òw%Ӽq@6bP3t˫4|3^eS8k1=Hwc^
Aj`5ԡkѾR	)"K20,cXpJU3jV34042x041eaz+baWݫZV%"i}#x
gR	T.~'HgӪ嶖unNlYǛ#|w!|p)_7+
dcn18ߠVIaJ4nX(Yqh:dM[X-2[ ł_i@{EiINmp*ŌNjdqP
(f{aG z@=?])MKNlYM
XJJf$TAㄡTLNLBK	CNV`Hk9'"0W$̃gQ	spIq3$HHو8(a6娄Yn
q;'9ENQ^Nx"6f<)"z8"pO"%xUD ϊk"vp;GO8q3^vb'v'~N9NJP=gFU!P;0/:~;B9!3f(X^B	(a"JbwB`s O3h=oe]iTHԝ;I9VfpU&E
R?ʪ$'ˑǰ`g v2QuIp4&ˑWg]I:٥<et8X?K$J,M.g_8|vF9J
.%]	2ԧ-yV*OKSJdXʇq2pU92873m~:bйS8RHM!}>*S	>Tv1eTX6.FŇpXI!0_:H71t0*1/|.#vٹӭ*C]N7c PKMN s    PK  C:U            4   org/bouncycastle/cms/CMSAuthEnvelopedGenerator.classSmoA~г-_[+Q{[	i1AIėXq525pX*]=3#yLfX'|)y,2ԇPBsj<ǚ1:q.Fv.#ðp8vC[aӀG+(7k:XGzOnhّ2F72T[xϰ'n8b؊
RH܈ݽlFWmV_E֚/MZ0j|WddO#̀G:aD1ou[%M4(7Z"0;eJ.]^Sl(&npbk."g!b.p=ܶp¦,E5ܛ2f¶&
͒WoszdhEݥ"Udd73Tȿ;Cc=,?>Wq#I"*D'p3xƫ|NYJ(k	>X)PKG  Y  PK  C:U            1   org/bouncycastle/cms/CMSAuthenticatedData$1.classOAǿ֕DC$nxØ4	IHq;d!;M<@x2]Pdg&}gfw ¶@x_5F Jiwr;Q(31iϤ]-s9q*mε"˒xV}TScu?
271C	4fҽ~^-%I%ɿg#B B !+۱'So奷kbe_ݫHtXxh?ԙ$&ўz2U4>oE(CDQ>[]DCDX'jU&ǚFGthz^{!j˗\+}γ5aug<Fayʬ(x\h`]MyE,MRS+a
ױ9[-2	PKP	    PK  C:U            /   org/bouncycastle/cms/CMSAuthenticatedData.classX	|U\Lz-m8id6i&XMb	M[ :L)ev64z+x *xg@RϢx_x
&;I7}7?qϽ ,`a"XΌ`@e
(xw+偊LtloWd{l(n^;jc)P{Uh5݉qPGXSsծAra,3nACL=1cP=AsH:eOḬmV,PTm
ꚥj6Sӫ&tLO4%9H&I6.O6as5rfɕ5]7ɺH֠@%/n%I)36̈́IK,;#r=FX#*>%	6,=>h8$Po֍!qLkHY{Jh6l8T)l 9gO}wAwԮdvx	,tX05Y7w4axZ:g4ҵDO&B&irtQ[ŭޞz43Ǎ]s^K2$YjC'LGN-\϶9dZ>eޜ=δOzgb&wRQƹN\rHњxsك͎4k9otԨg$ynjhOv/svpL6E0{K9Ȱ1C񔥏Z҉Zw&$9adeFùV"d>o3Ea1G̳Y}Ff)-s@i7^/EեSs4p6љ=ŗjV']f~m>e[s΄#*<#[)hs>{5b	cpK
ΑY7SUlc=A~*&nul
9v:Fmkj}Jka}Ke O/i
%L^9#wEp5ŷU)28*x:-(I+ί\4fQ02)I15ĳ5.eZՉ:o(|h*5U%/aV	m.,	vH)a%<[.	]#%HHn	'a>	{%쓰_%@BR4Fphym#SI$ƌA̖fXh6450=Պ]V"
["XV_8D5G|ԮJmXր8TLxh(dzny#L/&)l^Sn
#=&h䏳9.n b`1CҍJmWK`K@fKmUNр$xv^2m?[A|s6n}i=5oØiIJk'͔>_
vM/.OUs.zB{zŸtZv^z3T}ʡ}wm:p?oJ]䫝[]l
eTԧ"kS(+<4Rp:^`;^bFZ"
 +̰(S 1T

aX7*8oRYJEx&\xoW\xSA=n
.M
]}xfj~[4Cf[n秏0|E}Ly8O|׎1p]H"͐&faq dḌt_bïe½˸_~+ca񬅯ʈ+a`
e\o1|{g!O~s?Ȱkse8}ߐ._cÏ*
Ba<+wGxGKW2^32OeeoWZE`l?ǒ 5rtfP'&ƿvYawĴdѪs4-S`9	!COXﶔn-R^PW
%\-j+1#VyeD<OC)dܔkد"AD賗EKFBArUG3wq'	qEbqD'qM??gq<FOZˢ,ǣ..Hq<ď55哸<-d eDʈhkE.<|C$הgDI$y"#ZZN3-Hm$Mq,c;t3j#i!&ZY[(\"
EJ7OVVNd	&Thb)~4o3&^q\o#2Z[j+'qE4#Nu8yn8؟)'نfjx2#k̳[LiBԑ; 2q袔bORe,0"pD O	;php%ON}+Ě5`n!1'-'sӆ>D!KM?4!Z<F	~?<ܢn[lH1LR9{G7:z?]i2-J9w\6>ʈUcݓEAcO1dcH(0|+ %M Nf
ObOz	
eʠϟgp߇r1WI_H:}DZ>6:场\^MN+-)($/gEr[/wr)]DޟQ[K8PKhũN
  
  PK  C:U            :   org/bouncycastle/cms/CMSAuthenticatedDataGenerator$1.class]K1쪣۱rnj/AF)BIg#cL -(/Q'RJu	dr''$~_\X['[cO9w"tQumHA&O}Xp2CŭkK }<(frM,D
Jbn_sS$p;e摐o%0A
})QalhGmz>z9:1ZR+>J<ys@ "NSv;mqOBQtx'xFb"3V%]$w2[*θ
Cjh%RP%Y5˴N5ޝcxZ'~1%ijk#RUߞbHv PK.    PK  C:U            8   org/bouncycastle/cms/CMSAuthenticatedDataGenerator.classWj	[8,NC
e8رc"$a-
VVnzzruOij'άlْvG}ow̛7^{i {>2"mcEBShnfL
4;,;04=15D='N)j=go$㖑͘nI_,ie
	rHK؜0dʘɾ8LFFj9,~5>iFx-ċX)FӤG3adm	
{S1+nԹɘ.5Xixfɭ`N;cI={Ș"=it)2Pmte2tІީM"q[	Ⱃz*"Jtd]l3Xɤc=E~_٦Ef~^diZ˔FIƭ\*6ӳvTgkP%}<iTJo`6쒽o܈AsnwPVOKk	&rr$ׁ&.otd`dpu1uJܗ$jp:+_Knk QkecLgB;B&dm^K'K\1=ƄK{ƴ6XŰ3R-AkV4*ե%U`*QKo)QYVZ&˕hKVJMU.pTlka]K1նZ	+3:i[Jnw|p\ɥ&8muVt&\*p@6.C*@@P]`@.,GUZ{|%K+
(qvשUA8`\E~3Ĝ3djvi9Pu.IuTN2ǔұTZy8O.S`ꚫ\Q]{Y23F<{.SuY
i
Tey[M֏֋yM{kg^LFv1-VnsǚÞW8(XM^P`ۍXOyő@P~#rsOl~
Ί%&UGӕ9ce[*$TऊTT0Ѥb
ѬbV>&2	s+JLАRd3,[V;U˪[:TlidJixwϨXwXpLާb>;An}x>í
cLQp QЇ3OA8|U!-_S0ȼA<0>`*rfn
;
Qho1c@疁'|ڏ|Ώ[
?nL8#O2ɗSLgtL^>BFz6O#S:kIeꭣD`?G3;Y\8 Fm<L
EFx*<(WvnZ³Z&,
CfQ{4V~RxX.v'y2k|oj,pvhIzv},wygL^rhD!,Տ=`:iy	<VQjre3ǳa	H)St~8'41k4J3UlԮKYKq:pq#<٥s==&UD%<~q}ZTv\O[ź3x"N_dƓ;l][\II8B=M8Jq,<~vR5)-OiW/JGfrZU6@LF=#xFLz
}h
RagLPyHba6¥3GfFgV]Wub
}9[PK|J    PK  C:U            7   org/bouncycastle/cms/CMSAuthenticatedDataParser$1.classSoA*GO-AƄ&mĘ۲l=r4?F}2Ξ]nonoۙ ;gaHϒCABHfaSpeSkY339.sc`43RW
4vc;V1rjH1l$ސ+녡y84D|?C0Q{hk	'g8:2fJvV E挨Ht\.;9XrLt9ZLD)mT/qZ^g5bwjs'O#쟵Ouؾ̐ɏ㢩bo76]YhI5氂˕.ẵn,.
[.ְЍƒaeO0ti&b!ڎx9ӧ|JX|f%MwuT'bppsb,fFyWYɪ{$_Y
ILoK$)KXlr-%;PK    PK  C:U            5   org/bouncycastle/cms/CMSAuthenticatedDataParser.classX	xTo2ɝ@X2$L%[(iCъ>f^8&*]lvߩmђ0Bk^ܕޛ$fl|ν?=۽/xϽ ֈ5^^5<Ƌ6T.jy5
TzI8navq^)btL3I"F?'+ѤGZڼ8aͤ4]iSONLz6-SV2OD-
1E'ƞMh6ҧoMn	,ڕ"p4uLOif4n:<4F8ѷ\ _5ZRM=򓕃\%>6OFˆxJ:3ƪд@d_Y> cgӂYu-n2Z"#RM:!{&]FԌ0	-l[E?H֮O*\d[(dڠn%a:mְ}fR[[ Iw2:58mlkyژ	s<(˵a-6dR29r1-\-4c0T]0-M<l$)'8${zmvR.ЮxCZhi튑C:'X;&].([	FiZ8
Z9To2:5t@iTu*4='r^rɒqӶrBC\*iv;jmemTy:5JB|Nn'Jwէ
+0BE9sK39jq9m&cXzdK0i"&קI/ ;' -))n&|}	_a\oq(NXUs&ؙ:ե:?:\PpMXj|'%B""v[2Yx{8L3>!yx5
ߌl^iKV(~$Z%$VIX#qZv$I-rWH )Qb9Jlxī$%HHl8ObDvdk.C`q85DBK W5q**l·Nn)^H,./	ڙpS8N
2|
 	@iBa崰\r<c*럓$KJkhiy4p2De,ܭ+X4\擮*)LqQRP:ʕqSZP.",{ׇn)5QBI\')p?*[}vul{	Rh_+j&Ӫ'Ԓ"dZn֞DV2lenJ"G[#lu*eng։LE=jT\(*^׫UTd2oTQ78oVqnRя£b)T41ZI*x+OoV-*.bŭ*Z6fr*ޮܦd!TûT,fҀwX8XX$d!>b	>bȇU+xQ&T1bi˰gTg|!w2<//2W$`w1ɗ2029 {1KpXAGD&`&T0kA޸IWA3yP*
)?+?`#&03%_1
*H[L L}10*
Sp5LM0
v3zZ|]Za-Z-_C&u"hoi~{:5LjaΘJaL-|-a=(;HB)(Vpf[ng5R)XNgNb;#4C;@]p7etV̻6"#]j|aY@,4ȳ4g)<7;<s`(	[!blʊSQ<Dǿ3ba\xVȈ#I[b(fWfkV{nj>1\?Zzޛ^=jiY.pmh:#dV,i}b=`V,< ⩽8ٕfi4fϛ9S뽦R/y@,"]woaG-jr>HKh7H8S"&>-ܳ%RV<
Ԍ,	Ȏ'Y)*lm/-<g3@tf'=AuRV=pޥʦ'wf![$TrP
-yF.=S@Jd=TR~(NfĂR2B9 V0b(^J;zhgh#ǎQ۱Ėv7A}JÈ`%'~<:.cгh|8Z=eiYlkOc\	*Vc`	BCy7hI=3҇I1P0^Bh9y-Tf
dp|-`SèLy2/Xx$1{[ul[N+|z2H'&lƄ-N9
)<܍eDMFʌI{Q;Ƴ|/eb*+v]ܵ4PKJweM
  @  PK  C:U            _   org/bouncycastle/cms/CMSAuthenticatedDataStreamGenerator$CmsAuthenticatedDataOutputStream.classVSW-$Y,|S-d#7ڴDh.kXMv1{}~~cB-3hgCtz.FbJg{8o Hh%B3B:3*L:ɇ	;!!8JML3)@/c̢LFvVö8$3='=mfãz(dun)ntY9H6cM>)ydlL3GBGuMy=8\b2caY ֑1Qs~gS.zĴ#qӦml3[	NDlnдp>Gn>v;X4tgYDwH@fѱIv,尼rvS5'QL+S7Kl%ˎ)=aej㌜)WkJ"UP&U'=P7'a蜥ce
MОhΩTh1v^/dyElݓUܞ|XUNT,gMg7ۂ\nX,X]WrvK \/S1&Kve<!GO)#$#,CK};^chޠn7jTӌbՏ[jn-	n &ausdu+zzaB
.̈!cjZuWh
p@Qd̙ܜ2Xw/{w(ІC+\EjȃfQPֵ`xX{>T>({k.&6<bFUUb*TbxF.!pLE;U*d4hb3Ulb7|+*:-x^8U#!*L؀Ib#N؄dOa:qFƋB)!NqV 	
TOx!`?
)8(C`Z#8׊ØkQabBw_P_eF+
-hVwkKrݸHw;tAz̶I&QW_+jx@{(+H~CaIjE\іWīZWN_Z()upO"&M
}pnޮ%U7m.RISKxB	zH]y1qWA3I(_@ހ;:#%|R_M|DaK}ޡ}{/.P߷k%䟑/$,z-h2,W-N]&u-$7w'eh&o;l0k4PKнZ,  2
  PK  C:U            >   org/bouncycastle/cms/CMSAuthenticatedDataStreamGenerator.classWwGΖhƅ$&@"L SDPd|FtHOHN$'^-y2{9N!~73_~ ,D|O^Ipx*4/xOKjsA[an 鏔	.\7%,|I35	%<#ƨANX?>8ȣ=q.axḧ%,գ;uqs4n!,~T&8-aZ(HFIk$yGɠ 7'Q	RҾ
裕 8s"tkG3ِGig)VagD|IW%OrgqSl3bd}ވ7% #2tE$GaipڙJ{?lJzfl~(:ߕJX},`Vܔj 8}$Ϯ{tc{
ln\ٗ6e)gyƑXfze#gk'Q+0{cr#S]d]\Tdy<kӏ'i5:O|Jg=ᛄhN_ik1nR%{$'yJ3`frkneXa`2T2T1T3012gaF۩Mo[$T k霶{WdsGK<mTOnsT<i4v`${Z+%3K4ڣ3fNvSmRՑQc0)v)y'GZfmJV`f˥U؆N!Akm3ͰF>^OFbOT]9Bydurys-y`glz7ÍӋ"n1ވ ھnb,[&(^{A\S

P}

~A
nA8@݂w *,
J)X~EЅt@
VdXp"Ђ #9$HT61AQ2qL< c2Qb,f;]x\_Z hs2ڄv<%'etI7A7Cnti7v '		t4c^QaQcHŸx~]7%<'G<Ak (&y	upE̣NM7[F'$A ^Js"9n2ZA;N\p#
/I]^J6X8譾'#īuNE8hj8pK	?NU㼄q|^UI). 7I!56 Y2>8_WP"D;3SgTe?LN1%6yt|.djaSu\uǷRX	٥*,oiS1V'[F~^CqIKM&VJխLu%ɹ:E)Ni[iT:wmcU,$zp2040!bt$F2{ITPKAB  O  PK  C:U            4   org/bouncycastle/cms/CMSAuthenticatedGenerator.classSn@=8s)pkhpH@* Z)YW:~PH| Ba3uH87~_'HG=fy:τdHخ'CR{%[N[CPsOrm</ϻB	??VAgNrr{$qVݷy\a٭D߱-M\y>CiւP^o8EQ}ާY㽐5ѭ4C%PZ!+FKrt:8##<C1sc=tOԪ?/.ez<Ng)t䁬X!k;G==Q6&N5W,RHfqS,1i,Df+pAZKDX?#-"EZ"A3}qmTΓ@|Twu
s1o!${QȳWxC0zcJǡ6
PKE    PK  C:U            ,   org/bouncycastle/cms/CMSCompressedData.classVmSF~dܼAH
R0$q!IJV%W34@Ibh=={Ϯ _;: 
$G	hOn,&76vW7ugN@o^1,Ut4T8̙[ڎU2mM)f[VɿꐲL [^݊&`(``FɲuU9W$k ŸN{G%SU*`ʢZəZ=HUTT5ϼ:ZܷQdݒsKGP]%9k(jV:
s0bۥZmMoZvI޴jRDC9)V&R6HƩhӐ4@ݭ&N
JHzFUHݪhX׌bgD>7qɣF(y>(f~ZuyVv	X;TRMujC? CsK0\e00paᆀY;9K|
'Jr%@IF(`lYOEzxa4ԡTP^O~g=ŭEN-9}<:3!T4m1얔68^9U2ԟ_<{g̞iy?mhx(Fnu.:N|-!^K;n]+Hܓp%ü>dn%	[J#׉	|c,Êq|S.EsDDL⹈) rŏqzqx46!KZE}W*k@hwCź;z@,&.bRCl`NI<
:|뤋::O;LQ<;
1+dP3-wH0BDaeC1C:~,jIZ^vw܇&+@#}D/K t|
u3T_[I{
=miO0hui^d/1C{31DEQ3T>GW!|mhhbc0Jjs~=>QNQ0`R;$/PKw?  
  PK  C:U            5   org/bouncycastle/cms/CMSCompressedDataGenerator.classU[WI:&i^G\	E!Y6DOä
39I۾>9g}{N %p7l@c8eFu!bN+UOS̤HL̛	;9Wvld3*Ʃxup5Q#[Ŏ#Cub-
c2+j%!*%Vme7eQ|X\IFdm˚Vٳ
)j5qnߟ-sa8o=>6Wld6
G2j%kvceEXvMXDΑBҦnKLUWN`uT;!f7^ y˷
#Gv3pyRE|׬@ʣG0^ScT^L
{ڰA,  98.r\̡s\5i70=f^KpMbJ]@ӈ,٨vAsR۔w&)1%7+v#(mFOp
/p8S>]CN#Cz:bôRgba63ԻJ)10{J<k<``YChCZzag%zaaQGXiKەvetK}ŮPq* $/IaDr,2Z#Md? ^$	P0}Å&2ȸŋ1=!Ox25F
z7d #M<xalybn"GڂQPUe0VУM<msAozGhqr+29|PKF~>  t  PK  C:U            2   org/bouncycastle/cms/CMSCompressedDataParser.classmSQWe-JIMъUJDKJE.WZ]ZVoU39SޕX`8{<Ϸ fჇKZ
!.n?!+-ۺiYT-FqL3KeV*Tæ=I ic$,R dF3ɽiR@}G0)bL	ƊyK};gJgYͦ]@UtSY:iҲԣ|\}Q**澡ijޣZ1dn}տZN}jhNGREI5j%3F#tvL;:ƞkۄaPeڦ8f尬SGr2t-GW
&O@n)`@ A|?z k)i;#K>l͂GI22K5yOA\8qN.k g\-6ח\Ҽ˪hڵёZ=(*g2qn1MG*ѦCr+ǵcm<%!w%tC{\IAЍ0_F$JGMrHb}#x<"nẺ""Ʊf@;`Y`bj2jy3eN
4'r@>Zų*qu08j})0E+Te߯O1|c,pLKQ&S'X'.8C]ǏN:PEs|UV-etPK[K  @  PK  C:U            U   org/bouncycastle/cms/CMSCompressedDataStreamGenerator$CmsCompressedOutputStream.classRn@M옸6-iRڴ8NA'5TH}!2
%v\>@"F8Dٳ' qSlN4ˤO
nQPݧAPFTȰ Wq*V/}7nu *it[q*Hg87t4?I2Uܙ3x4Ndʳ?Ӽ7J~m[JX2`8ok'vyWs$[{qߤ/o9Y`݂Pe!,Pb(3hUPg`d26Uk&V-Pk^|F~RQw'{Zb.7J\Q^|W pH\p>iOt&w'swG9BU=v7sSˍby˅YIiKlno5r8Ey3"%lqM7} 4԰̯PK2Z    PK  C:U            ;   org/bouncycastle/cms/CMSCompressedDataStreamGenerator.classUR@iCCFTo@B(7/PQ"Ufҥil~˷Q2PgSgl'|+Q<М[ '%6!#0=c\B|\~Yd~9kJh}R]]eIH؅Bn1s}_^ `k6%s*lvn!psUVyN2-W1EgJEGe<"av,v;OmM+7ak=	Bk;_c+Esůzxv͙ݴqV[c(<{Ren0UlhvʁﾝW alW&6|(Oqg2`v'V|RШTpU^[7
*PpHa
(8@^f;Dt\8%a ݜIɾVM\zG]>kYx=Hy_WJl[v&ǆ&0:nd	ޫB:,#O-jhA\s4!bhְ()DRBkhÀ}
CC;$)1@UbBI!T]Qы*Nr+`ZKt;_-{=h4W^thGIfJ6MCYHXg]P4F# ;}R\wӨt<-;L
'-LZMl:n
1͍M+"Bo{i.:n	.z\ɘɥD
scqW:#~ᎇq|IeK9x
ݼޤ{dP PKY:    PK  C:U            $   org/bouncycastle/cms/CMSConfig.class[KAw<VjiG ,X@THP\wmDg)gEAA?ͪ%B30oށ9œ[L\ěک5}nxu92
_fUNyB
sZc623S gߧ"0nיM}Q؎mʤip9/SQUS{ WlO&U//_K0#0VSZ
	dXAVuIl#uz4pTr[f|Wl>AB yXw$$j?#v64UW|PK/(U  p  PK  C:U            /   org/bouncycastle/cms/CMSContentInfoParser.classS]OA=S*`A햺(*4<)TMx"l.>M$LQ❥p3g=̯߾XJ1bvC狒*/&6W=Y	KJT(T1**п7V]@}aEz,$-Z;xM;
^$(ܒ6oFU ̅v$FhY) Ȉ l:waj͓\GtEWŜp 'D5UQ1՚n;;"fs-3q4/8z8z9nqqspr1
Cz?nH_V4qGȗc@E1قB6f0609mM"ib8mLL"mb)mJ@W׼0Bϊf(8=6ZETGHL+SC'uT
'XObz{'g)&5<>ƃ/gPEG2F"S%9lSq	h8F^suYQLϯyV|
G_;PKP  o  PK  C:U            *   org/bouncycastle/cms/CMSDigestedData.classVsF6(
	'`M(ڔ @U(@z})?*}+ɶ4owϿ	(~Aa}c8КЖ1О1*VzΰfİCWV3lg^mrU+ciWL<ajȋ+rc1tQp
ۊ;BV>^ċ.kk^
Ɍa]mse :H1$j紙ý=V\&R[VȄ9*	6V,](|)na|.;&w-eةJm=x65+ʘZъnԦ9UNkfɗ)hC
45{GuOME隆3'O%K_ԉ)RZL/zH>_Ler_4n4 =_z(X((EefM1芴hۣW]ä&vA8k;AKT0^=,^ҏD
2%2PNpʋhhnZf:V\]ֻ4%01׮dsũxɵ$*h%l͂p9Jy}Ic;+;8;9vqñc~GGc ]'W"hob:Vu4כl6tb
:zU N("c)޿"_ҘJ9C~jׇ#i<8vTz[4#MM
odM\/MMܩDLDc:m#^}3Io<2*bB:*6a)^
1[1b*؈*0%]T.ɧ*RVэ+rN%u3*zq]Y-;
C(8Yø`sR
NCSpJⶂWqK;RKqO!Wwa) Ssk;1[R:12~T{.ݵӮj+#u?e~oDAp@'r=>mL{_E/`tJ.~12>|O[ϐb#:AEIoݍ!yAs-g9%q<1YGJR覕KbK=Lַ	-
b3A\H'atXe/[<t>x]`i}!\
lK2a](֥x?)oOPۖj e,-|3,AW[kZXbok9o鱔IQвq'M-PKuXh    PK  C:U            +   org/bouncycastle/cms/CMSEncryptedData.classVmWE~Ҋh`
Em75@5/͐.
qwDT=&Q,iMN;{g2 n!!*?ە$Dք:x0
^JE	a293yܷ$0SkΊ(Hq	
u&aW6=ae顄Q<moکUq2l6gjEbh iRmEk<~Y8ZaRuθ#v+VlնZ[pz{DgJֲfR笣upt7QD,UrnZv)U^5YJs̅jnkqj[\0{f.U;{6n:FFTT7ThǸUa-;Vo,EmpK34vVKH-Q"Xyզ&VFUS+Y[<9x#T-k2ސ1!M2ޒ2d#]T̅:bEBt2V7 LFgզ׹'h"4U9!\OEZo0[szb;s^*[=wn+NMǶ.u/U&P"o-ku.gl8?8\vtWIPk%r CH0D#XV>2{*>"*.၊X(TXW1M+H(_P0n!#DVAđS"-;sV#yF
E<Q{
0mG~[Ej:Gr\ӟeʎ8'0Mqtu/}l3`	i.o`?x-KT^+ć gȽI%ϳX̟b6@J_F"=xl"b	? LZ"(gsco(ae|>l"')n<;z>4H:%d§s,vM|r1z
=w3 PKA  
  PK  C:U            4   org/bouncycastle/cms/CMSEncryptedDataGenerator.classVSU-d[JuŶ6_e
	@@D4MKn>q`f[|3u~sx?#z5	}@t}Vlei	\̊Q5C\6UtUn\*wHmJ
pG8wB5	gh?g[F8 S:rз$\ik
n88N</dwF%q{\fE+(du)knE+׬Qm&<)rCVe
.7}v~0WJԛ\ܪiB5[f
{2_Ăaw<pn~uGCۿhxyx)^#/e8&/FC)]Nrs".Q;Dy\͉f:A<by`.`1e80pao0o2p03pu*Ò[ҫi	.v"a	>zG.zZt6[em XNētD\(󸟆JWW>xXBӧ\x ƯvԫtM-H= /&Cằa!ϯCxE0| Q*WAX7'1̉]b^>V0{b~,(x
gbXTpKb@F&ayiH +/dDN(dk!/ceL 672eL
)|LK1G!w֙Ki-rRýtI_/=ؠYՄ@	7#Q@4B"D9H= L={wa>@*TDŃT0m	-`&=<5a
s\SI|EP0ZWjnbKRj
"I)m!0(RKC2+w0hDd3L0"Gt1H륙&~xPK_4%  
  PK  C:U            0   org/bouncycastle/cms/CMSEncryptedGenerator.classAK@ߤ51jM[Л"H/f))ql&B<QXzQ9{3c`_^'t	!>\ŧL?hUk7U&>LU[gF7\[e59w&,lla|dmyek'$.;F1z"PH #tǾ8I"ID	*-nw4VNO|/fGHz PKQ
h     PK  C:U            +   org/bouncycastle/cms/CMSEnvelopedData.classW	wUv:le&iZ PZZZ@+LGH&q2W6wE\9x";&i:1޽_\
`\&I(oPM[[$vhуq3&ua	ZER-FX¾
wI4Yz⦐PUb		#HI<,:K!`,݈ԑpX	bfNJ ҏu(&Aec_b[N <)/36;4gj"9˅ IYt$!V!KXsSF'8H̨&l5fd)lYޗD҉HZ`綑0F5#hjd
<7m6#g Q)	sa1Q^H0%,@_<eB^T&ܳkG/JF9a
P?%'L=[z?Bd =N:VysE)~'DM4OGׯMò)2<6bvMŖq"zD(eneH0]f<$I2`f.hҭX>}Ec)((IƟlF,:يU`Ce
Y)TY"r'd,Q'c%2X&c[dQ//AF2VX-c2nNzF۽GXMT'jWuJXϬ{`糌TfsH X?/ۋ/.Ҙe
6#qVo?xI
ts5H%N%,)-)5z{{/r
R4nkKvk7lk+K_xT\˩TKzYS]ZuBSMc/T->ov
pd?X<w=F!YonG?t،}*ܣ*6>*0DY8bJܯb2P1ULC*2MFL*fQq]\fSY\ELfb6,TT#U]gL<)h1m<kLf򎂻𔂻x\A(xFN<&o)hKL^f:729瘼(
v㄂n<1yWYmx^KG}Pz^Ԡao=:ҡ%{$E}R?#2N=Rr푲JJxJ#je4V.JClҿm~78M>dO30S
ii^G{zyC8CvacNy0{yM_dpyc0zq_ϩ ҿT^Bzgd!<y[+5fpZEX~`=G3E;ź7LK2g
I֝2k
\UrLi
48 iRNy"F(XA93h
">="Y񬬸i#3m;38>afqmYQ>M>昤ޙRlp&t/Ȋ|&\[$>'*a9'387iZkgV4U|٭ Q[v*PK]    PK  C:U            4   org/bouncycastle/cms/CMSEnvelopedDataGenerator.classWwUMd2m
mPФ-b@i2t&&Sں+.p<͉9G<GI$L7}z	6\pF Z-zX@HX@H3=#rt#;0<=:PñJ<NQqciŤU?&QLE; ZPP2a5d$vLSӤ&L5#޻
$l4]SgP&ZM)sL$}\3&m|G,;RϚj(Vf+V#C315ej.`<lL-6I5?scٯeȫ:rH'Ɣ)3v1#L$q2mlrL;	7Ҟޑ
3kaqOQ&3܎t8CF&NP8P~̨j7=2xj
u`zfۢ,Q(WyαOwQ㪮^U\jGoעm5D-KPZvgXWCb٥ݶ_m&4ű&m,ci64
唞J&BbQDdn`X˰a=Mnfa#&[63ZZ-[nc&`YꢩYPRW1pڡ#pRp o7|}R&=(xG*;2naYL
>_rjh'<t5.U7ˀe}ueM7µϖ=[XY5˷^zSmъF6O:&ҍnʹ#=1iwvjhXT	>.N̵KH *%l	;q7j%HFU7\`'FyG%P$܁	΋IX8_ᘄHHhq$,		M8_0Ww"Az04'`r2C"`JDx\D/fEœ"qO8DExYK"r<]8#^xދQ<S^/1!<ɳ/n#?>Fl5Ij=:SKm--',>`jxDI,LSF$z6f`f]9X kYj辜;1~2sN@-dw4ϡ)75̟ˣ7*,^+ZzdO_8|(ssxܕ苶
[ur}=BP$3oq5coTlgbjQǾh{Y,>
C'ĖSc7ӑ
uaa2 @a
$d`& C݌`cd_|:jk,PK3D  X  PK  C:U            1   org/bouncycastle/cms/CMSEnvelopedDataParser.classWn,{:'4,Q%+	8ZKAUPi}rԴXq)mCK_vWl?yyorRm? m?ԫ1zMW\@9@#e4y"=&J&ͺC3*uZmLYװ'uǰ̤cْL(XA+-Ǐ(hQ2GwtQy,%yB:aNl&=屲OJGڹȞe]
TZy*8/WWMeE[Y-XM6[^^*.p9	f͔BN9I:)5̰	)q⍔7axo-Gt;2HD
GzܰSm}*af8֕ĉRQ*،nN+sGcL
a뼐P{H[E=fj*県9sG'9->ׁ:@۵b6N!iʣq`!`N-U#D#1i8Q
6Z˒aP'a=$
=&sF:Z%;kzVqA!/nmcWl/>X^qW'FuI^2NŕLmɷW-5wauv|̈md.ǖtzu+U'ݿnC%#i+o0XXzgcy-`}>~,EB.DRQv@@@6v	\.S
/
|IJ]iBUǆ|!54jcRVY`Jk} = y@aSRIc}'h~h]@^'?Յ^%-~v/rera8ީ_Md`]
t,iiK |YM!XװTuUwXvW]_jO\3_DVsvjC.|t^E
*4v
whX;5h5\q
 4E44Ϥpg6.
W3YCz&qDCfHFjLjXZ̳d5l=\4\ y
kqT
L16|_Ќo-&{8|*zma7A&cU$c*̂<b/*nT*xSLW?dc&O3yɳ*&OU)<b8Uʼ\3D3nw1ȳa|	M食SQZ4ݗs9Ւt݃zֽ۰B~u7?G5&T}wT]2<+piWZ3%6ޱ"~Zou5H_e1UR7{?Y17׉zv*6Yg,4tGbmޟ9:>g">nAvsamEnuNq
At-O
_V&[jQM~>>9<ԙ"~;=0pXoU
YGvo~虤r!5AZwFKN/Woq,@|$/䲑IOëOb
Tz	`,`l,Zݑζ,wO~/MLƆ9<,6	7m!DEE%t Z/yk
NsƃzPK6  y  PK  C:U            W   org/bouncycastle/cms/CMSEnvelopedDataStreamGenerator$CmsEnvelopedDataOutputStream.classUmwU~xʲ1mZc6mJX_T	&
FeY馄EOݟQO!T3P^x9'3}f3ݿ_T]^5*;Z"r,SW%Ofrb&Eqݬ9z%T4- ͚xTvf1+EȊQ(\,4]".D*٤.]RoOzԲCì˦;Nk9新ф]ҝݨDKvf<2QYEדYUaRfCw*Y .>HnJת{h^!( P+<}j..-n^s|PL9ēA	;%[ͥejٛ1:LE(fbVo؂vfO֡}?7,aJ8)ᔄ9	%y	H8+aA¢w]85T4cd	>P
'7|+r
;#Кz/5Wy`͡cuVڳͅblWp\WW8_(yQqfN8ay~DL
,C#(K	oxXxYcpW(x*g
fp͏*5_EEņ%$Y|k)ȸȶ)22TܐD: 
[Dp=ؤ~Mez>&JF$z߮Ѝ4PΨP]a ,sAY掴s4he33L }$n
ĴPwmH9-yh#{۸ڸOs1t#&מ {o<}=yIZXQpء<P}sD~"rTO;(a
F.b z<Zx(u޷I=vy
dKktf?PKI&U  D	  PK  C:U            :   org/bouncycastle/cms/CMSEnvelopedDataStreamGenerator.classXk{~^ily
8%I&Ȳn$Jȱ[%mӵ4V6WBZ¥-@/Bk/@B
Rh>_?J9-K:}mٙ9=sfv\o 6Q=x'7Ӄ{!n|;e;{-BsdVfǜx:!'eql~nNf%y	
$d5q+ϧ,WlN;ng%wMFty7w\@kQ t4#IS:'d*]
SqqPoBR8Rtvf5/]EC[R:2K(tGZo2!@@NZ?i
]0iԸV<EDlǬVN#ѱjp޵SHUvrURdx6wVMɰsGlUd;Lm֍8LrB:u\
ʪ"<rO҉u֯z»*LZWV4G	i{X}z>uw㶆	0kgI?Fsux}a6rKhh,Tցx8s%)$W[qtidOgʻ#i;3
e:X{rҥ"]v"qCd.Ln֞ͻK7$Հ@FM7
lI (/"Y`-&pmAxѱ]7<y1u	"孍ʕEӨƘ\ovd#NZEԛj4e9p4468Vzu1MWHbU6BCU+oYY&D֞]D-DEɤ&;sA"j%#B䬠[yёML6ceD"1<iѳ3_ǽRd7 z/nzgVJxQqX?zW++&!*p9/g[1Љ-]nw"fn2Ўjzm0w0q75X,w,4p܀kpz3Ѓ`p!GŉvDec8T  Fqř v p
`7~,~'a` O~ڋ'Ǧqw?~Fx3,
`
 M Av`'4~сz
R}at?2"-h$_\+~|QlHTOԶC#	V*
wWZ^!/^
>
w>ϱ]1z|}"~m_VOIBLHbmv	da}hkPG_G΢
>0uS\lA_AS*r	Fٌ2[VJov]#ߴE	
'BXkKkmn44=1xz*}s4\0; bf
̶H\p0Q&M7E,DMuxL\'0uS_B\YaBw<.OoyZT篫}/9RZ5!kyX/a2֥_>U[" /g?hoӗA
ܫc j&ӇT:ziP	c1E9@|^j]M*}:mTC Kh/PK    PK  C:U            0   org/bouncycastle/cms/CMSEnvelopedGenerator.class	WgeTMjmc5%2KtH0&qf}}Q9Q=wfHb=5<w;s߄/ ${Zp?8<#HpWph(9
7<<L+d<{2yUSͽ/ؾf78:pF(,U8pbѱD*^-_:S#*ߩ:㈼45,	)'"NR?LK~ZNOWbO2:dm#%qڮsF9IT2jQU43(fAe9IryeB6afcNggFfNYP)f.ۢfӲbbEw
AyZ+#Xω|."KdF^PyUef26$H+^
i-ՊjZ.әCR%BP^rJƤکCQ]ϦTضpjz5\hP2g3a敐lhPT:vnҤYU	ϫMJ
czJJSuJT1U`{3Fhb4&)_rf$tl|.ѬBtڢ/l{P_<9Uc6lU"Oez׋Xg(xzhE`RJ6j:S2vOS2R,4F!}""""DKİ1OU%]n:+ zS<|&8RN`SLtTѕ}vwR*:[hƮ[3фC~1~Fhgcl`ldt0610:[{0ι	?3e`d\ϸq#&͌[]nFe2q؏;1Z~\ɏ08<xċ(2N1t0%/888x !/Cc,z1Q/R88q^}4~̘adYesq13c<COgS>f$5B^XA3LY3|IMNQ	h <,:y@LV
G8JqZk[]NntZk]6׮sVvvm]-MZhwh$\/??~.\@X{1#6m
Tߎz
\%p̕lq%EpQy~Yx_޲-<g;[xv>|lk7lKޱo,<o;Xxv>|bU7m+Ώ޵o-g;9OPKO)d~
  k  PK  C:U            L   org/bouncycastle/cms/CMSEnvelopedHelper$CMSAuthenticatedSecureReadable.classS]OA=Ӗn?V,Ol]Ƥi06AI}{)KH .TK&;fΙ36,t/})OKD><(:Ҥ糐-t[G$Y?{$OvkoԡP{(]Ru9Z`-v')̑vcNBrߓR$?+<C9R&':h2N3Y'/
JN2V[vq3ܤc/7_ٍGϒKFaB{}jódf"~Mqۛ`D&qD
D(q2<IJxZ*]L3p
$0[JQeS
{ pwN%UN0 ָpaczǒGz9G`
F8e}C$tx&pe]2_Oe[EPKJ    PK  C:U            T   org/bouncycastle/cms/CMSEnvelopedHelper$CMSDigestAuthenticatedSecureReadable$1.classT[S@Mp(Dh"^@8fd:klQg'_zyǳ 0C3s|gϷ{? ,.C*:3֋}D\ϊx]WqR04tfKd$ -`R^0rG/Et(e luESzadcGs̅Q
[vu
?lc7Eİ~ʑz
--\zMH<η|rA#o~nWSkG`ȼ<)t:t:u1,CvM]*+$8nOj:6ND")^ziuw'}'*;&z1mb3&L"PZ!̈́s&25qMb/r((s@e㸬e`s
LJg8֪aZa
!C:hƿ3N8_}ϔfiQY!U4\ -BHuR3T>B=LNA5h|La+n|C=`gCX#nW[%.C~Nm\[Ҳƒ|Vkc1'[HʦpP2ab0ԙ\PK QZ  ]  PK  C:U            R   org/bouncycastle/cms/CMSEnvelopedHelper$CMSDigestAuthenticatedSecureReadable.classTkOA=BKyڥc&5$Oݡ.Yv-D&& ζP#B&;7ss;3?}`.H%CX$7J2\'N-Ҧ~Pѱyzc-$ȱºabrrCu6i;}a%kMG[Ɓ^56Caman
-H%9ruuu$2x ̆0:x-ɛ6߾N\a~(a aa7] hO6K_н[  @UpC

dk}5݆MY=KxC[rru PNDQL+_YK^לh>UO_oaW(#".$0rXRS'1nCK.
#5$<T>ZwlGrLHI
fH(ţѸB,GNj'еc1Z/z,W?DJ31V#L:>?FI"թG;ݣMҒ)1tH]>K4_v=D8PK.T     PK  C:U            H   org/bouncycastle/cms/CMSEnvelopedHelper$CMSEnvelopedSecureReadable.classSkOA=->Vv`4&ؐ%X,)#Ml~wR-Mv͜3;?EHVkW
!+1!JKIoK]:GDخovNhW'TkIGVm7riOqd7vԉ@I/!*~jH})Zq&*K4}a|0dd

v8Hmۍ7[To.]"lnmK.hEϑ̌TyeGw3C)̘Hb8HL0"ÓxxCyLDۥICDk"~9k"O`L^ǏXQ
KjZek/?z8f}Es$gztxFTOfWcc햑PK'i$    PK  C:U            -   org/bouncycastle/cms/CMSEnvelopedHelper.classVSU.dsq"ZB,h[m46-6ؖZަ[]fw?STf8:7h&GLι{{ g)C{r8_SkѰ,bv´my//2
B5EF0lp䡱bb*g}XZ5x~I/ze\5 tn-\vM2U%=o.cЛjc7`y#>|1Ԙ'RrsiwE8޲	gYW$S>%lUf٧,϶]AꝤ#w&Q7g<X$IWv%C8qe#]ptsxk	^z]<9|!QW69MP$m2]x!z1*]y"w&l=<,-YmGkb}6ɶȆoˡ}oŶȩ哦aG$?8(_4=6
Y+{9{鿪"m4ihG&M
qg5pR-;@F
*RяK*Kq
bY)r*&E^EWT}cV㪊q׉x{]Lymv<w]z[P!4p'џ2iEVRqAP>JviK>v1UCܡ1'Mdb%GO(L<KGң[ZaDlOOHjhM~O_0 UGmGFW#Q3^C_jc	)NG'݆'UD"nHSrvPnS~f
+3UGUh;I'z)YÔ;E#OPKw    PK  C:U            '   org/bouncycastle/cms/CMSException.classuJ@mӤ?QC&
ٸt4b$H2UV
JCHs0_ 0 J̌@Ќ	:gyFdn_<G$ZwQPq3,zM$r σjqp`C07g-'o3$_\-\rAaVWc8Q.>-lw?٢
^AGL;O5Yh^/%ݏPK7p     PK  C:U            :   org/bouncycastle/cms/CMSPatchKit$DLSignerInformation.classRMK@}[ic6ժDq*Bm{(x1Fڍ$[ 
(qA]fv;h UkCg0(#GΈ˝QGN2䯭[K|}pڿ>ܾP
yS'Mܞz<}ueg~Ĵ!HPd,2?h3F,nR)c=Nڵs*4ȫjY)XFAA봢.iOR'|NP
C'D
2((N_7^P|/g64͇S"Y"ۉpY`'PKmY  U  PK  C:U            A   org/bouncycastle/cms/CMSPatchKit$ModEncAlgSignerInformation.classT]OA=Su@
ZbEV>(~d#ifwȋ	#g][;_{ucϤ9-B_֊еn
ekִNfGad$RM8M;D*ӤXc{g)K3$r7
?-Zqvz2R"ita>A׽/%㰷#k+Ł>I8^})9КzMfTvXOh,gbMݷHISCzWJu:8OQ2@}P&'Ir/P8K01q18raz7'1)2nθynwǸ6.b&\z
PTzOSxe=(<u%i4FtR{K(E&?8vvSDvBHgKcx%3
9eؿPKTF  f  PK  C:U            &   org/bouncycastle/cms/CMSPatchKit.classKAǿ?6׭V֡aFA
B:+:cԵNBB@T4J4yy_ r%&7AҰRnv8˼mMf*6w,[}z~1C[vGoZCn<}G/TT+S"Eaۄ=´8A~aXj!VPT(X%Ȧ+ss̈́_zXO3-ƅ6e-˲ lb
+ Xsź*'#VTSaA njw@ܚro[Ӏ@f7IdcNxnH$:ELW䩎52`GʘemR
PKEk  a  PK  C:U            )   org/bouncycastle/cms/CMSProcessable.classuOj@=7ƌtRj6e)]"qF27}Z~TXww^s>? pUvBͳѵQjw?lc\r6gt;g߬	ҰW?%S-`ʆ	VHz
B0]l~;J/wb'3ΏC8]2\0(Ca7'PKj     PK  C:U            2   org/bouncycastle/cms/CMSProcessableByteArray.classkoAe^(X[o]dkIA?1&e$];+5V& h/I9s<sޙ3`Z
C\۩J~JǶc'C}Vu8Cc
ArQs0{y;h	{]iخQj۞g^Lכ>Z/laĹtf{[u;pe
w*筀wh{;{t#BvJts-fðzɞ*y:nl3vcb\AJy
+XPV `N8/ۭŐ
8YŖ|7ɪ%eJIo6)j
II!+דȣ
4it9T\-PT)gXC[s;]_!*U\!B4$%Di$/]gO"!"KE#ՋKLs9O_QΧ:	#bQ"߰z8Z˸Lx7¢茤!q"6iPKDTB&  4  PK  C:U            -   org/bouncycastle/cms/CMSProcessableFile.classTmOP~6
 d 
T_ysM$t))ުɟF2m0`dyι97Y	 _!!ܒ:o&_еJ'6W7v7;̇)#AyŬI-%, W4-zSvO:6g6yqPb@.y<ؗ0g|4tїbYi}#<+qӱI{W_<IvʻzAptõg'ײUV@͢ʮK	5n:Wqޕ<s]#g?Q,(FVX{MK_Kf%,v}*)㦌.22zdʸ%vdqs'Ⱦ8.wGg(|!Ht4ڰT?uWlp*7MkIkz+h}mx0	`\	a&Rt;`#Ѕy(#x`<Q0
Oy`/@$]n|˰<񩞞hDFSj+!MDPHa yY\'^6-*X>	DGu鶁}P3T3B5VABcAc^>\"J,ul`p[
^`OxMVJ]"C%ӲB@CZ<&rb%KGMjRɋC"M*PK041'  v  PK  C:U            4   org/bouncycastle/cms/CMSProcessableInputStream.classSn@=KMڄ4R8%.P	E<D
"ofeܺvo~
A%"B&)uE#Ւg43g'
<F!Yaz|`76/!Qt|zٖ}	0w͎0{ǐn{ב;0"B6@@2̐$,-c{l=EOzas^	\utΖT`9v'|;w"uX$Ll 3NkNJx)@z:$bz^O<}>cߓB9

r432GJuBdrj@H8ȓalVļWo$Д`Y(Zp]tqC":,%t,N#l].-ۛN_DqdBUWPN^VH#Zm%a[}A}L59I3nX_e9UbPsU8Ծ9"O?M %0+c<mΈxeרa.(cJQ{>$XPKd1  '  PK  C:U            &   org/bouncycastle/cms/CMSReadable.class;o>FϼҒ\FĲD|}O׊Ԃ<FhNb^RVjr	#b~Q~R~i^rerbqIN~rno06\jRSrRXX54}#e7Yr@
101 PKd      PK  C:U            .   org/bouncycastle/cms/CMSRuntimeException.classuOK@ߴi?QJ-xD!o/^MI7lV
0;oް'S̳X@ЌD<`yf2K.BTţ"P:YOBP:~8jnа`0t-d଀u#w҅&ކF
-NMaa`L'qO5[|{J/aCu{'o+S 

aoPKq&K    PK  C:U            ,   org/bouncycastle/cms/CMSSecureReadable.classuj@ƿ՘mm+{E͓l6!وZ>%]+ e>oC'%mImA'#Em#[\1r-EfD8o63Rb/IY7S"6V[%+PJ*ֿKZLdGhq3m&7eb'0qe?.>T>xrŹPKshC   0  PK  C:U            =   org/bouncycastle/cms/CMSSignatureAlgorithmNameGenerator.class1
@Dj̶CUPDRQg]^x(4ra7u !άqM=V
*u,`Qoi$ZwYJsnlQ@ABOB_ ҟT]瓥ۓL@D$@@7PKo~      PK  C:U            @   org/bouncycastle/cms/CMSSignatureEncryptionAlgorithmFinder.class;o>vF̼׼ʂ<ǜ̒\FĲDļt}FtҼ⒜Tb}gĒҢT,&-H-bg`bg`fdH0$8PR3%5$3-3ZT
l, b PKu      PK  C:U            *   org/bouncycastle/cms/CMSSignedData$1.classkoAߡej
zV.Z5&	ߗeJdw_i `58wsf W3.C+\ApYB2$xekbϣ}d[g۟ޓ'҃l:z~jy};v ܲQ$hsM#x-m	ls|=R_a&]M@f?GRz0n`9\l'ߕ\CLᚆ]CBẆ$Z}qm'agroe/:O|~uimm}eԸrB\946S786Z5]sg "`n,b,Ua%,VaM &J:mԭzm:)z-^^[05!_A,fwI#"?(]T}F߈ w@X:E~

P<EF1Y<Agxr_FuIBE1B1AU:fCtŨ4OS	/uO<^:QAPK8    PK  C:U            (   org/bouncycastle/cms/CMSSignedData.classY`Օn2Ix$!	1IK`k;L XjŷШT$iݶnk߻uv޵<ydq|s='9\|s
aȯYӪnԬVmE6
lu6ul%fkGn`_V{cnm	Hf_4!_dW0 -+dan_MABmf(4wDkB4
4=ۧxҝn0Uմ޷ӧB>bIN߾*ͤW&)\H$1њHIXTw$$azKbf
ǐ-'i&#d9ɛO)gP:LlKhJ>Ř
z5:;+
Z-6Sv-visnC3Xƈ6('q]Zh7H~Cb77ӧ%4#nm8RÆ"Ƅ9mJgn'Ƿ~IlI3>ڰzؽs|H?s{N:vwlq7,۳KƏbGc&n^w/Xٲϣ
Dte~wH{Ek}nCo7NMO0/O5z>
F|PȽȺlSOo	!L|~b5Ĥv.`_Xsc`ng|@}]CwG~:59zFVpUflk``0B^ܔ˳"Zܞca+[֍슝̸nAMݪlHF[&d,Nin%dPRh.ʌK`!C}W\.Qja{wRf
=z9s@5hzr;&E36kr=5wL
s#e%#-kKSUIv
ā^l
м*SO9-|\yaWu)Fkv)m<b24;MbnY*ƋV)-NIE!mLy4do9᩷N
p7-ak$E+E|{3T~=u	ƊQ`?%eXg^o5J
3QCH<s$J$hhhhh$qfVIlhh*-MF$n.qć%>"qG%>&!Jh;%$vI$vKKK$ǥmST:2i+3)METF=	i?uz)Y6B+kRgsf*܈,WԤ=1	դVyۙ,2e̋dֳb7O91Ds9AYCu9CsNksO }
,8n#g$ox4⥊/ϊ4bMFLjF3i;j:C<g5Y՘R.rLffz"e2m?tJSZe^̀I-re3@//tU)0ytFU4N*ceI3^^+*uʔ!fV3'#Ҋi%5ns嬯TmgZ1ms9Y72ՙcT.ѕ6tr,wZ+8KIl~oPIM:L=n&~.9'K4{$JY[NCNǑtCMw˼'2A.-TfIPcx.+aσYdܝٞZI)|gfe~ Mx qW3# wcֹr'ǛmvRrdW^e$Y;{fNb=N(UD
I'UK**
Wup1@%LH&oUT1q ~&v
cb\\|EE&T\_Wd%b-N7MWOT,?Sq;RgT,gRJ&k-|[ 
}3BťU! q#DbTLR\E5L/K+oyLQ1{&fyUq'EE~:u&ƐW1)0{L~,cr/')ary)q(Pp{McB*x
'USL*<ͽ&4|F,R,C¤B&ULR0$3YƤr&+drk|HaFG&*8*.QX`X3Yb&v&L꘬gIu
^ML0ĤUgj&1Lff/	D
'LWp\e2OĜb< ʊcRTE>b<"&iQܣ	-{E4X^lS-,:X_j%uNwC}$E.@-+%Rv-eRRԧv( k4Q죢h?%ڹm;%ڸ<%::% )D\^dwGF]:D|GuMp/NteBߗUGϳ;&XsT|dL<a7ix1=)Ǜxi%viD\^;F0'{w7Y|47vIK<'qPks8SbK~\[_e㍊pTnwFxr+H{=x2*>6*>/'Gœ:.MWIl2;$ҒbbSNcǯ$mΘl<x7:P`Go^sCy[$Ndi$-6[O!L yK466D*;*njX
0^qTE6&nwYpY8kx)FšqRn+L^O[iDިpwӿ,Jf&q\2VdqÔl@MiI6Jx}GPqߓsbUse/CZF`?Ǌkrr84(XHX:%N|^/pDeYT2_]w_5ZLqƱYJxG|OFOSf%8L#os\</0
qqCh]*O7'yP%ăgTh5[dz$^1._y&N{cдdy䔲	;Rl	KK߅6LJ#?*=RfBKsEۣ➨QYlq{Q֝1aF<B *=k%q9!.iB[)e*LOb]\&pŶyQ2R7
L {VS^ݎ[80Wa1s0fCUkg,\NIiU@NG̶Gm0ij&llrl$j(ՙgsUdQ<YI-&;tw.:^7DCN:<j?9^>p6^թFZmVZC]#X6f56x%S	$lEB
QaJjW*劭0*(gvb(T8ߵBڊFNCTemuj$rsXX_~Id*ևGnW$=J_raiRrBbsS..U1,tCsU,]ژxn	
ǧ̑ɷk_ϒY/(NWʋtY<+"fN݅A@g΄az;xEKc>8T?v*m_3~JW9/$LU8Iok[%o&~f\|bɩiclc ?U!H[Z*Ƀ2C:CRR*Ypܨ5lGn->)=I&Z]I*Ԕ0o
Wɼ#o̷8^PK7  ,  PK  C:U            1   org/bouncycastle/cms/CMSSignedDataGenerator.classW	xWׇ^'S"i*IZ# YKkyYjWI\m)w
%-dWД+@i]
MC̮dK8`߿3of޼yN K$˼FBu%Zvce]\n${(-#ShѨzN#[x-4ѤٶsfoN>;kd<lq]K9O%,}4ovt[)zᶔ9cX$ntiZZIhST52eFt21~ 'mLEvGNWFޘNi	Kf:aȕfʰG(FvhH:N|2$,5I/AӃ$n T
jIuUZLwiziG)ݵם6E1Y;yթ=z"fФau&1I)8Of}ַRX銍ޮB:i{
RJG`w<ǴxM)R\6 %ڤw](mㆻ
)M{^=zf8ex۵dQI8j1Swd,Yv\jVbcpkߎ]ՆqVoC(1lpTAغ&2sukKTuΠHs[_~:2j;Ҫ?gEqNi)Z7lpYpxoF,|HEjp%L	*ыi;;
p}]47Y1n6gVsں@4-,Ԩ氚Zբ^W҂lh%kj@hPc7SdTG̨?%f">iK6:6dafymp"jSmk	
l(p3.x.L $Yrglxs
tt
t	lBJn-veOI"ڞoM7n3.i=
$m5SooŁ.M*K!QJwS;zI{'@`LcyQ֝Wh9nkY|)PqC/HH)XNa죸uR&yI>ˤ2^$juJd(@iS]M3\Bw%XEgW-[3nUsǼSWL9k7u|l
f%*0+69꿴L,4ûo	{*Gz߬se@Ea2`eP_vP4)
|Qa
j·Gj>

*ĠE
b|xg_×+X[d
+*VݦoV *X)XЈ׳
w(X(xުoٷ0|Hd8p'û>"c'>)018]<AsS2p1؃؋Iq1H +i/ʸM݄fxc8e6f4&p=>: c0}u`RvuHc2aF;O^+~FҧU?U$9T?UF%EO$.HR5QMc`IkhaW8ţG?ߖ"z=eJ<qmm*_7ʙom3_C@QʙzKJ
>zN)	w>p*r;rP
Ѿ>}_)	ZvpkI	"S=֨gkXI
yUpH! ho=	-USۦz'%If8ք|9s$6H|_emzf=՗ů2A,a8OCq,A/~b7qCȇr
9Z?Cu/'q
;)*<#$q,8~Uys!	k8W~-dP?LL`ZՓ9!{&Wէ
ba&e*3.3ܦeTw#.IT!pi-	\kO!*m@R %8)Ad;W5=SI)D)4DGI6mFSKa-'
WoY/PKKaY    PK  C:U            .   org/bouncycastle/cms/CMSSignedDataParser.classY	|Tdo%lAp$DD(fII 	Bta`23L7i+V%JIB\v^־oky>ιΖY{|g3{g^pcG'tA7l[-M´/`fBbՊu+f뚎
kWAV $V$ꏅI[fjb@jk<t5'SrEl%|xD$.VVɴ1"8xv΀?!h4ݙD
p7ё|=?~~OV_Ok{YBf EzڂqaBWw<^wbl_qs"`bGOc`xUޖ\k-!Ҙ6vYdR^RZ35&aW+)i^ғUDa娜1%,F6)SUeϸ:b^ns,'iجoj>}BLnK
_Zg8gx00 eHD8(H,ݙ[->%Y+Uve#B_|M`^0VIW#5@T,pSFӷ44Kc1߾n]"!-[;`|fMD0`lMu	Y;bs&g|hh)^kДnhg,la#WEb
"a>/|iU|B\1!=Jh5N~EqVn		]\j"\[BتuNϥ\=춻TG`wo[+pN)q%jL		
{ʰX_YB8}B|݁ggvaCYQ5-,,,74wNoh~0#>"ݑ⦄!3{fICJ2k,
lj嗣%3rDWBm`	~w 0-Vr.V7wܐ'sC纠վ%O:5K%sl%8{Cf;];~uȞqZfح;e"xM],q!.q'fP$LF5rw9X&ʅr527\7ɟu=3chϙ]Vemf&%3\"2
-OJ,HڗpO#ÄwrxކH'M|RRVU

PXЦЮFa:+t(lTؤAN
[>a;*|DM
v(v*R)("
Q
1BBWa
{_m9v9umf%ME$
n	
!// T,8`8v|SE+iò"1(Xz3^V`*kvF֡졕O܅wج"{e:yͪa\+n6,FMYޑˋML
prΆYW3oS+Kݭ8qonq5'lYRQ\J "[ǊEFP/%;IHlDCQb .y",zmQѢ\PU`@ǜ=uy2ko)R)ImddQu_qp[TZʒX
cqEw>fq3!<4Z
DKL6??($G
Wg0|=ڇϔ:hM)ET2Jnȼ"-q6_DuǥxۄB6@,ZNolTTd6+EY)
@Y1^_*wdV9~O\v_ax/Zd!`phWf{l^q:&CQt\:uRo$d"֡;:Bi8}fl:f	BǄ4B5~!(_R7tx8}YPȏt܎?qԱD܂/ātLtul:>wt/Fy|cLvÃ? :!˅\yJ"k8wB~.wu|$*UBj܃q#C/_o;!hyO|Dt|8WM^9KҁNC&)DR%dIB&"Z4!9Mph8@B 	YAy}kxDV
y$kxixk
y4|.4Aó4Wb
GEQ>J\-ds~
yA1YqNWM^,d[4
iA
ߠ!^%B6k8!f6=-V!ZF!|D|Hȇ!d.
i+xOB
Y'6!٪!)'ԡa0HB4I$_UN<Dxq;8-rik9qHvɉôԉ#tb!z0m!ؚ#]_Yg+脎Ͽ m|
' n)=2ɨa<'dHύ/fl1'?
ߠ2n@9?<ønI~'cJ=ur8|#T3O.{j,9Ê마sB&%Azz<xsnIAm2cJm~LV2W *WK
˰V?-C5v$}e7ʱ^{+W }vfsAಟc;E.Ny5>9>]Z^CF:a3^GZa	;4TwkHS#RI:iwOvv)}.[L^mI^
ApkmaW
N+|Y(Fpv@@e#hqcq`+{s`8m>e(<peN%4rQ5%<OQ9XҚl	UЎƮ2{9ڪ9잝by3@OA]mV5K1w~E8/?lu.Q/\`+;3DoQ7#oVڲ+pb~H8Oy+\IzRp/*NW%K
+C2xf|n)*ޝ`78+Qx\c
JUFgN<t(:Ea־3IOuԑ]Izcr,RNl2~NԚ|c23[d%, l'=~1 NqmW&I՚ŠSF]:v݌7j.MҧOX{ʒh7ANEx`4Al-9%jLS&e y?WNxg}p_G8S@Q/2hV@r./	*λW'Mx^{m^oro8n'+nj.)	|v'$}oxS $}9I{DaAӣ64&X-<1z|3x˙Kw]ee5tMHҰa/383(qO]&\A#B3nP~g
{A	.jGKs&Vr-rSd2(s%mJڎwөr9UFm>D?T{:+qH*wMg,{5J#Y\N+N#fl4ΦPp^&AJ9Fz~N.}$)>q0u&ЃIz;O (guͥE^!څ2)#rH+?	l?)3D'^\ON4aa&k:ZaW}}1ӓO<H}lTc&rd>yS#@j-SσU'z]Fkxig3Ab
snanzmv1q^KRoweec!^0XξDCPK  0,  PK  C:U            Q   org/bouncycastle/cms/CMSSignedDataStreamGenerator$CmsSignedDataOutputStream.classWYWWV	B\FqDMB:t=&11	iDr<%?OS <s޺_խ{6_ l9X,![pp$xXX=XR&p4[tCJKVkԝBovvT43!&d
Y!LQ3P\h6amzI=xrX햋QfFxtbzTM>ՈjX\{$̧i
%np<J( ;DUHhba!$v4ph}	7aY<ݚ"knq1:1ͯƱcک9fD%hXg%aQ`	{_s&Z/ݟSG]:L+*iTkZcj]QO֮D
CHOk&&Mn:v-a׽y
씖צ^X?AH2IJi
7hhyvfU}985kzsb]N=MbPrjGsNWF#OP'd[ݺR<+EB&BV"NK9V̭bj>JqU2V(FWOFr2˨Q%c26(	:FB~pjj^pJ<8󪞆>~J tg*[r^7${^8:Ђ;ͱz@`3>(K7$꺴t/Ux/2nGd$M{w<7~=U[KrӛFOwI4MdMb"Vuꂞfyt
=*
2lbX6
Ua9sAf"*32GdXpdدXw1laX*q=;tXGUT,@HE*.t30DsD`12Up?Lq)4
xڀg4Ib;WЄ~< S
}/1`7^C-1<:C=,%M_juFI
fs,-t>ܦtA:428:rcy$CWie%A
_ N*qWY_Q q2G
 ;_@2d
N-K_:Q"yH1l2STlLtY
)dm\ qƧ$_79$\U|9FԑY6m|FS
Nj0AC>
̷qEBs0.F%֖
b񽍏+l|[&'Eaؙ?j;F|_ c+6>(_n^t=1uc{=m@
k<6Þs/,t07vUB
2joR'ydݙL} y+#T]brX!NBPKƛ  
  PK  C:U            7   org/bouncycastle/cms/CMSSignedDataStreamGenerator.classW[-ZiѲ1Q_2qB٦ኣ"P)Yd	K+MiKڴIqX@hSۦw鑦i~GJgVIf~syo>p^`q4xL:`aa扎7m_04U;]=Fz_'h,8֣1ʉv' }ct!V3?KjGtQ]p_!H)5b,DS=*IGC>_'3soFm
1@:@O`8GiƘLfnUaDAcV29M&eHB 
6Yiq=ᘡzTj~]_F26I-g(71zόƅ(
?B|L;gƯOjuD&;'\&F0Fӽq+WwiI@U<O}*3Y0İ12S\7EH<?bFHwipm
}+XFp<`rJ^}Y:5Ut^uK~*:[%u
	S[s`)&(Mݟ,X.Zg{TlU!nm%e!CC-Bq䕯&eZfCSZcѹ搓cզ'QK7Uhoģ][Y1=JpHh()IB	.	7K#	Jhz	I][^	$.
{^Mo{̅I?i+u? 3*i_hwHu𻧶35[&
:zH*Kb!C8*CTl:B޳[ tݷTrZZ
UP[SPU@g6Jsv_9dc}{gze\Uuei}ŶAi&*nOJi{m"儎b)6ㅬkloV^St&_dJ/j
~㷼a@A
h
0dc
:+7@PN&(QCMA7$7A8	1ApLvla](Ŵ:&8`b
Za(،JTPS
nČ~y@ux
<Ӈxaxw2y{ы2&яO˸1ǘ|'<&cL,3/2*o9GQ|N&_fe%&_a22F>&˸a2|qɧpgsE_t|%S]!-umGjXH
Snј
N4y<ye񉔸%5:XsDZފ(qYS.5:-		xoۄ)h
,/κ~z+ j~@
%7:`_KjVzJY䶩fb.y,Ƨp~zZ?E=(sUIfn%}{=|4	Ows	V^Tm^@y(pR0VK0Dl}rUkwF2jUmj<~zެ߉
.aXB^%G$je\e4u2xa[*WOx	^J|o&WRKohJ'{T%sTE`&L2iQWzB|U,hp#^"a	N?Pi_*~KMY듗qɒQS%UzأJ0IY6qVsjC9U?rnK
U3ϓb?
lf̹8y([*ǲ<yIh*V贗
"lW[A	|%˨$A7mR):H!ӌ^Hosj;ӝ[Tss+/4ek5gvm\&ؖ9C(eht8>#/(/PK4k\5  )  PK  C:U            -   org/bouncycastle/cms/CMSSignedGenerator.classWgxeK)Q`@E(f ZHH 9U)8q8=E+qzsz8=NoŢ~o| 
譀>8cq|X45n e^w͠C#`Oow7Ќ{1\}SnUWϠRnY\cΝvxrL} 	T79YaWWPKI%iŧOìʙ,ԇ\]ݮ_v)! 7;Y~L}"4&&CSn[JD㪞JR"Dw,`5У'
գFd4*"3?@JTUvUI#j&Ug4E/~RKNh<"QMMO{yq@eXjQYXdYD1`$:&4JwlePEDא:QÑ:5fDQjx%9xlV
˔е R6CJBRteV5kQGi2k"uIT#Q'_?l;*Ӊ_TbA(d%1LFPRuXt&3
P3)	քCro$BSܫ"j
rFqƔs)5my#su]9?zYzX-JdԣJbf\+Tt|ū3"U5QJg#xSy^5}yBχSJ"t&GE	Z{AezZ.<pzq&z;XMUp=Es6kNgSfdsS.EE:'}p9uc}.HJ<ӟ$PcȂȬNi|nyd¼.Q瑾{hT;qsq7RVKXl-NV:llz3+fy(a7ϼd>qIq/+9Ie>fxS/Mkl6k Dj<MΩՕ%xIO(q"<'N(C`y]  APC a	HpTc)$x'$K ]NJ0-Q	NIpZ%$ixenL\-[t,&CUX]5c˿|<4~6٣zPK_Թ6yojvXP r&w;q̷D0r"rZ>tZu -Wep/q,图xiגwX\
E/eٵK6ZHvRz
1)ѠG\v=ΰymѡ=kbm=ILea@R;A%LPEPMPCPKPGPO@`5AA3-l HJ^%Ep`%-.Mjz52& C0H` :cS< A`!Pe2B]B'da (Vx~x3m2ҽOk2\K.Ƞ).9u<K=v1O~J3<~`	~I ~N"mp|"6w~d;e+\%  0G>J1|"4g>K >O/|_!*~k;;HpSf=d[v
Ëvx1/vx"W
l(+tk%'c%<&K%<gȣEj?>
{	N(`57S kNV:!lRHUBVQUB6
*![\'z.P[r$dk\+$v{(˨%t	YȳBv)(ka c~5A)0rU-0Ͻ AXU	Jwۍ7%֝7!sw\bR}"^]KX)k.gl#-LӒWu	?ZP#-&kc"(|I2x):.W؁E6iwfpw*hfۅ.[`wi\[
ؾbG^(buq6Rh|pюvm^ւNVyd-;rwD q|cp0 ==D"ڠKpZޓ.etݟޒ_TQhٷRR|g0̮ȚLfd9`l4I*8dJN֘fpdu&9i՜l6Y='[LfiRNvvUqajN:S^[M6dVq0Y#'mWf짽Y謋d&ۼȮq%o۲,m)aswL>#yI7P4L>KPKȾ;	    PK  C:U            *   org/bouncycastle/cms/CMSSignedHelper.class	X[$!$v۱9c;Nmb88y [HDzW5mݤmڴi҂iz}wswfH =ɸovgfgݷzg ؆6,Ԇ2m8ن6bé$/!WƝrwm}mS44#`[As@zkoJhnop	,Hvj<unOBaN_OKwˠD=ؼM*= 5lFFL0ӷAߖr(^^u!U9ԯI.;USt2~N0`$)0C)m1mSI$E$Jrפ9b^#j~nV1fJI:3N}Ƞ7I@|h[?"PZ"!/o޶?Y6/9hD=&Iң4iDF}L"1ˠSWGM(iLwԍ/f\8FD֐1d9Ӣ`Jk]QO4>
 U'~VVxVV@Vրv瞞,]+#&{}j_@*;FXA,3VˇJW˧<5'73Yx.+ [J,F;)׉>xN2d=Md=IMriS,8-SƜKߣBzx5Sg|trj\-Ѩ=#ǲ5<2dDF=oc0ޤ.>(CTɓ@RKkƙ>>acHt3213dXjuiP$:W|NM#5dW484{(^>:
yl.DٯlrL6vwBvPeq:Ok3ⵎG#.luE#Di`CZ[\m	umk>9xz}C6XFbQ՝l[Ȱ2=\zuOٕϬNWE&Gr̰KR>JK	Za
roHsS2Ճn71.I^UYc.OT6[05E,D]^Dw@{fXyz#-m\;<g.}fcɹ?ay qvrJؔB_@YXb͑1[lFf.p>
Wh5װKn
!
C"5\!!0aiد*
WkFõp4p4L
nOஎmXaQYXZ=Ot-+-HɒSUls ge9ڬA-9{9^IG΢!kƓVVUaޮz+GzVU[DK5I[mYo.7R#SԬ7zLd,'KĖ2}eх(Rѵ*<aU{(Xt~s6YG'*'Ng,aXXX8q6c\F<hchgt0:]q!"vŌ^%Kg02ngqnƛoaT࣌	'֢Љ73JtqkAL:q;=Ør,|̉z|܉f*<D
>D	Gx+cd|i''N4s;s_t|َwB;?b;ލ1~㗌_1~
㷌|MƷf'Ɵaw?do/^|:A!yv<2^#e3
ư>x
U;/v|㻌1?1Ӂ{DqpkT2;N1qDcL)<$2NcpQQ8ՁJ>(V9XbO<)pŌB/3J
XPeBXIVo$@"wŰ.=p,交)I:JBI _=)2\
"TuDܖqGcEn$ȑnQQ}cUcd.
,p/5x
#jB9qQ]3!Q̫&#̌cGsD%*tuNTCIpgq(ԠQ<"n_yy(yՓ#l0[=)nA&-Aޫ(_BK@m"')7PV(<yGqhm~E2!8e#aTPr/zX\5)x/B~"WѬD>!Iq]51ʊ57S:U'a]嵍[3eZ_XT>e޵ZU6!L(k=2lMK9x/[mMcN,_0FoxZLj~Z􏋵%āqNJ%Q\%[<_ɭ%v)ەPS.%/P[%/T"%+yܬ%۔+ɓ
%u%w*W<%JnTUIC=[=J+٠dkJ68<KɀS˔\mʯ&eM	UɁ)LdOp/[R MJu~_*/PKJEZV
  k  PK  C:U            ;   org/bouncycastle/cms/CMSSignerDigestMismatchException.class;o>.F6̼;FtҼ⒜Tb}g`׊Ԃ<FS\j3R\2SK|3sK3D5|sK2ҭ5xb`a`gd`qOIePd`rAـb`B6-* PKsx]      PK  C:U            -   org/bouncycastle/cms/CMSStreamException.classuJ@5mҤt&
q&#G۷RP>%^[,\.;g1o N#أT)2U{^ԈEh¡15,Lx^r<.s%5ҫL2ՉA̤NMn4SCj6b0EA
&>h .ll)O ~SYᮏ-:OX?BY/D|~Wy\[|PKz     PK  C:U            '   org/bouncycastle/cms/CMSTypedData.class;o>NFԼʂTFĲDļt}FtҼ⒜Tb}gĤFE\@榸$$3030302ih`O,3w3XtTfZfj5#;+#݌@@ PKDq      PK  C:U            :   org/bouncycastle/cms/CMSTypedStream$FullReaderStream.classQMK@}nGhնz!D(Oth$W<xҋ (&'-=0;
of?l̠U.lj3&{3,_[auzl?&$0?;Gc=V#ēӉIIішM\/086C.ui!Aՠi`0a(Tſd0k@Aހ&1ӵc&)jmɠD*gfؾ/'XRT3͉E˓X4L2<s(8ͨ4=2%_.#מX/^Q&U;IV)m)Oc
пPK!&pk  ;  PK  C:U            )   org/bouncycastle/cms/CMSTypedStream.classTO`~6jc &&_(*qJXeGR#HCbk??Buscw+9 A#pr7]ۮgRhNQL?:9dڏ)%BI$vjby{,GiuT[[7:'WOrcU[w
֎(nne'=6UsԅܫE3 k2K&E6w:0ڐh>klloL0Kᆴovh!"&SDn=""zWYj
V?!S xqDPj"|BiK6tbte!bDFM-2.	aT&1mO7(l2QBbLHô~LI'z	Iܖpwh<d]|
 ]KGGR Ț㘥{aThNȆ9BQ. (0]-ەoxx.yox4 SHW$c08fCLx Uҧ2EY+T01KɍCm\}X,ROܕtWזq3tGq	<Sn,;6O[2'=PK`|  O  PK  C:U            #   org/bouncycastle/cms/CMSUtils.classY|瑟ϖ5vY@!#D~`9C[uֲ5ڕ$mҦݴ@q1mݻkz]{mӤtfVҮ1~曙ofd/M\,j*`YVAѯ>0(sEx,v0(n]A"vwu78C},,i1%LR$:JBF5=R|XIsi9T"փ%axXRD断xTIƴQb19
"Ո]j(2X-iIAşKiA
}ePƢ	9})4{sXJ$͉
eUNŝ}`?NS'ԍD$M~X_东xPС0Z]}aM\nLIݝTF1U˲
v<[qrD.S{HnvѸ/j(KaMIv	#RpH
ȣ2<mm,yBEoYͭmfѵy:kIF`6RtGRRr2$cIN L ʥرlnl-
5-;d`i1ATJ [2XR<Khr
0-1%-#vKN2d@9}&,UڍAĭǪ&%rf)	84E[J698Z(FKIiTFRp[4,k4rDET"7ZZZC1MO*`p5HHGC<ڱMJckΌhVBj-!)1Z\.0u,9'S8H*6.Q3zPSvڶb bK	#^-Kޘ5]f.pYR"űv|xlݐrTw&)ڔIhINrXbqog2)7zkS\84##z.1s]OF=RPС/.hN}X%t#GBuַog;V"ҡ8
7.@jtl^J瘻2Q99fk%cPnC׏z{7۪w6|lֳQՋ-0XBrz{LݻFKxyµy5mw6'Y$6QRbG},\iV;VwZ%tElT7[AV7Ļ[=0(R6jHy*X:fN&(#Tqbwb,ο\roTFRܡEv-XJxwIe,7ʼȇ6ҦbRKĠ8Nòz3"Rő3INꦋ*g>!#e	ɴM7T-
*k~ᣦk\eҔ;0@~
{b\㰜Ýq~Cp8^BaCssppC8s8p/8Û8orx+qx;wpx;9û9{9{w&Vw)7n5P,aQg(.ߗc,Wv*WU~Pk3up~]듫\G%.W粞W;Tgޓ^*Nō\ZڒfVf8M8J\$/ܮ7~AS,qA>߉|۳\|+Sh`:Ml	QBzd[j3kՙWjWPx
lLW+_ە~
weð.v#cCmkxmtr[	'҅]XɂmݪX505z|(_S})+$O8*wQ喚/Wze6؂6esٷ0^a~e6'keuuen-HXT6%W
e~(d;P2\͙*lMloOEpwDh&&wE`z	6D"h$pxv!NpAA B ,ۡBTC@T~	\;	/hC"`#-W$"߈VN)$B+$?cO"f__DJ&$/>-GDxa"*Q',B+Wgٍ<kϱJaՕ0&#sz5`)A
2+	#XEu+l1rg%|m/J@*iHp 8Dni!h"	ivA ϰ6vΰ<K!${
ؠ g6]A}|&Kiv sl;A /=gpHN^d}cH@ǻ	z$/Wݯ2 _c!%!7^ɚ	6
-۬
>:	&TOsl&B_/*:`)OPeP?: |Gw4 80g,TgY?X (yÿ evy?0 `LDS4-Ls8cYɤeZɌ2mj{4{$T#%!uc,b9./P~lס~	~.vϲO[! 9spϋPVz=>}d<t	45O{NҦ)v PbƥKPݜ
UX)GW~~%7T߶8O)?NMlZ?Wu?`)_/:a& sT	J3]iz2T_ɸ>y;yi},pD/G{	3:H,OgφGW%Ox+pkc1\ka\	0i2k2ּA>v}V_%d\M3ߌ-Qc(}Vpxb[֏g^?gx3
7a8#v}bPcCYΣCeм6	ΟU|Sf5\8wkeseHtsA`{3{9e{^<Wafe"܉M%bߧ׾βJ1f:
spj|&,70Q5b1ŨوѦfОp!7ee&#eCFdvEۊ7oG:X{Ϛg'.OM7M\̰w_aB7
ͯdZ?K|=[1{)3CG	k
_fo,}kXWS :'1u5d|y:1[<^'݉ɀ>(PiG:t>[E8^.ӽiw`F)SVW#}õ;˞o'u5
Vepc#qL:H&jgcSݷx6U԰~;zA֛eD'Yvdah׉vekm4n%nly^.:v*P0։jg=:
n{Cn<OJؓ#f:_/q2-KR,5o,ɒSu-!K踉5	d3GLtDhDLDGM;>di:T? PKdVz,  *  PK  C:U            B   org/bouncycastle/cms/CMSVerifierCertificateNotValidException.classuN
0 jqn>,n.1%RIg9	~%nޟAH% ֦;}VYm+A&[]8YAɅ{)L*u3+欒!vab5RI>GH৺u0p4{PKΧ      PK  C:U            F   org/bouncycastle/cms/DefaultAuthenticatedAttributeTableGenerator.classU]WU&$CERimQ) lcI
Sdr	fn*)4f-O>'>zdH)$,Jvss=w~5qڏA?ޖx#	a% aHrɪ|rjqs	~2fy+f0WYkfQWBUP&w(1'rJL
B;SȽrvۛ6mJfg*[*
ݜ[M-kfI])l95;K5n%VaUIZٛ][jFۑfuh[fl[+^&nVuej9&svA"J=8`EoDr	ƺiՎt"ǈrgwb&wp*1/Mٷ#wgfN":eaZ])<Y"NZ왢oFܡr3"2d)㬌s2FdqAƻ2.xOƘK2ޗ1.2Mr1_>PѦUqG=qξ_ӹHWx8D"GԻdV:IO[Wó`[^wx&G	t(X:Ns?Ju'%"?"ܱ6G+Q~_XwpCA7(-QyIa,(x)>;
"d `Y@F@v @+L!'`Ug	:)|4>
>* fU}PAϻhŻ^6흳+Hqh%&FG0mma2	F&)CDdwءgdN+RCȘzR+$kIfER37M =y2j{#^6`45Pz
5^?c;<9ZO4Qir
ֈUpXa}]bA[r6fM}n}wnN'(I|bPƤ`BPBmo;PKM  g	  PK  C:U            D   org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.classXSWFn +8q#!"REv1&ѽ{Iivؽ{={ޛ܄Kws=?OD"
U(4M*A
PhBQ
PBsUhBu
ShBWhW*H+DFvShB]=ZО
-Wh/VhUh?
)(h˦U*_|aa(s[*e
9j44.7qAYuSW;iZ\QZQ(Vo{]=]*+ʝkG¥JXdaH CdE
f
JI^E5Kd7ᐟ'abzRW',T6a6zpa<VgA
_RHF
iҧˤwWBzr5Q)ZÅurĚi#4._\둁\hlqԅPl_{{0`o kZٛ-]˦7IDGN$#ghk%4ÉNY;/XEOw/YSNWTpOVN
at}{<	k(;x@7k9^}閶qAN&D6^n67{-SeW͝jѠŗbz+(pa8C	!mVG[
u	D<M]xb{*	4x 
N+Ͻt=ޥAZ~O&k*#}[䀯돴GbxP˅%ż-XK,,ȼeZݔ}oncnmpp;FQ3=JԲ
jVYg`u0<dqŰWcnmFI}IfF]ˎru
0i7af_BkmS?&,V_Q-wW`uHVrʝh5Zio1}ʔ}\[sͮ%+V_a7C]s:B`鈇Z]x5y>igRYWq3̬άU*LP6VD:~_,tbaƳحʹ>C+CFu
kNmz6zI\s<}ooj<
f sG#ZW :&Xsk~C+b~WM¡XܵGBk]K$WZ;3ۺI43&uom<G;xrMXmUp%>{Ov/3
d֮V;HWTb`x$jh97KyD>tWڻDMsKgz~gw1舆ڃm헒/%M~3<l'Go1KL(iߣ|&>dõ]))iiI&<+HUu/~ᵶHr-jYop<gTo2̐ko	1Jп,B/R=7$$xxYf;cMvN~;=a'3vzNy;`^+vzNu;a7Z:sQ_m_(%?k^MY^OO׽2N߮ǈEc4e$It	eFa"5ՅZjY5[̯3õ@^{{|w
:i- JhB*`5
a  Q ā`
8888
88888888	8888
888888888 
	
n;;n`p7x <<<<<
<
| |||||
||	||
|||| 
TR։<'&P)8`1Ia8 1IN:QNz_vbCBSb`*Pe(asZ`/`o3,`G`'s:`0X E%vvqlq
p*pCEC(b0Lv	X	,X V@V!`
8!rD
1 #c"Wm@ GGGg9DC4%@Ccq98;srh+VqpY
s88(GpKK+rq1p9eFWwAoEkƊA	1l$
ygIlMkA񝶼%m3h'&Y@
!śl#'e^qxVfmgZhՉ|Adձ|Igȗ|E`79w&\]͹|su*fk5뜫78W__yF$j!\]6/ߒ$s%_$K˭$[l"CnR#5٭ҦC-0d:ܐxڒxu9ǫˁ<^]˷n'N.~~DDd&=Q|C4y孜۸.AW]WOrS5ZbRM^Ϲd&]^	Rv벩jVru&Ӗj:SL:lޣ7U{Dۖlz8)
(s^s]⾔Զy]GuY3f+u|Wc6SD:l~N6EfsuB-6c8:l~N0,uV̦]nnI4孱07@iS{xZ-16|42Fm-
%QVInNLVʳnre} #
9:';Hh&}n&pQ}IY|\m+\%/՜.aa]nheyƈdqacJpqa,=vffA&Fvۆ^Hh+dvۆ.rVЩy}
UJbɱT;msj[Ʌ%PKӀJ  !  PK  C:U            G   org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.classRV?$,4IڐK!A)J'J$@\I{}̔tw'EC4㟾{ruε? gtNXSRV<R%%.Rfd]','17\\F=\'gW]
VjX5)bdLҽa9fiY	YVK=r2@ό545igLUu8aUMr:XasSM5*WVM	eK4eNSxN̅>qhP326n
ûӡpO6꓍sTqk~`;4U(-~=L=Wʇjs[OX˖QGֺ4?č2⹾hyT:1	Tx
?ʤʤǯY6=&wADjz͗sB=
ό93(qp.6x\vpwk6LhnϪ5CΌh~FF+8/₈^(OUD\qC"񖈷}ᨌ8CfƿR>r}ɣxB/喺蔀r$_e*9vix)XepSH4M,
25+[~ 6cqq)t@HA{)t2O9~ML%'ICƣ$},yqY11J$F01ØM(2$xЅXCbsڍ4>c|20>p"&_%5:e~AB[Jw*:	F=N_}(5)(A&ac?$zv0Zl"ha	0ODwv; -<{H?G@6XѫmGFD/Gt5h/=M

we1['jh/PKvC  t	  PK  C:U            ?   org/bouncycastle/cms/DefaultSignedAttributeTableGenerator.classVVV2Y&ԄZ2I&ۤ1MIlZr;s5jqRէ<?s%1[,g?w >
;ZbqUSk<S1Y%\)*"|[9\+^)+R]rIL%cJZN*&M.Mnʩy ~{@&Ƚ,ajiĊd2SPJxAU+klxо0JI2U]쬳XLjJZ]S*tPW[hʆ!%Y2̂m >In戧.JÅyTE)[wm*k|;BG`9UwN2{%xƝK#wg1~@X+
b",K備Qs6YkĒrIqZZvNM}x48ţG'x,s<xG7<^"^dMψ~2ԛr{*{P{o12"K#TwbF6+☛
oS/ru%tzuX1!\zXI;!ۭ<6{\srNTK1\!`RDiQ>4xMlċ8)~Lх}xMo0)
"тHhG3xSD1o1n3&Џ02xAK{`I0d+FI(TxO 
e?e	9zM9F
kߊF,f]hb=\Pү0se3#hW{fF	xYms9*B#]/ПTg6a>P$=ŷ<F:5gi+XW7'>KJR0@n|S0T_p$XG8}}_f~mC\k`4	68z#Aָt4FFb	x
OiZ<[N;)w,F,_UcFkP6G4/]cN=MSѧÏ7ht}vEvriPK,}  
  PK  C:U            '   org/bouncycastle/cms/KEKRecipient.class;o>FԒ̂ԼԢĒ"FĲDļt}FtҼ⒜Tb}g`׊Ԃ<\j]V02aUWУს<8PR1'=($#333-3ȚTNZP\kF._88Adq17 PK    g  PK  C:U            )   org/bouncycastle/cms/KEKRecipientId.classROP=o֭ܜ
Ӫ$$hLOoc+d

W(}ej;zחo b-a2_3dU&YJ6QO2$X{3>y\?	\=ŨAz"=6[K=g'ܘ֖9gX	;r Z{SޡGVy*
#3I;+QGyeTTULf0eg7]"e],븊%%( CC
Wp3:5FhQCw5bAnɰ$m /cW,k~<P0Fjħ(		 1=U䬏0>x&'
(!隷K}38'X$˅￟/D1#MoI	?&V&w*RHm
8B1lXU
PKb  T  PK  C:U            4   org/bouncycastle/cms/KEKRecipientInfoGenerator.classT[OQ@EhQ`A"J")Hlvi!MM$wqN˥ЋaΜof3s;9lchFھdZLr+::myrd4-ëۖ-ǛE/ig'cgpg%m9HRoL85B,C;iJ8994IٙLvPCK/ZIsU[3Zt{KwSfԇ陼ƶnfMJaאc5HZ'c^u>h;[[gJD!.FW"ew;yQ
	$tKpKBͦ^A6C>!WҽFD:זꔹ \Jnؿ)kVY.R3Y\{ҳ߀[&Mr)hbU+qn℟'{4$^TBA')}.Ѫ@Ƹ>!\x1!>m-ԁ;bJ T1+C12FH(bF愘gpIzAK8kٷ^ƨ ^^AB/i7LVZ%,B'X@B "] c	|bh	9Ű-{k^|)aÊXJKA@tBW$ڭ"(PKND  p  PK  C:U            2   org/bouncycastle/cms/KEKRecipientInformation.classkOA߁*(x. CӲ;Kv&P$(㙂Xd&s:;;1<c$+|
ClVB1\tm%e&
0īf\/2eJ&LCK2`2Ŗ-[#$"5m3K;6jSF!"k*{~\J]@nr
35Rp)u [NJV=2_LCߙL~l\Ep2g}hhpYC6
W4\ЮC520\2ϺSJɔ~d忶t]Ķ=Z>gBD;tog-''ϗX)^-Imᐨ>]*^u:0c
k	@#Dg@S!{b7Ќ5lTH0x#0¨
utэtb.ѥA٢^F$hdzd"FTxdOS=Lh+ƣT0'{D}S"	zSLb#jRgd"PZ#6n  PKVx    PK  C:U            ,   org/bouncycastle/cms/KeyAgreeRecipient.classJAgԢjh!V{dp=Bj>sHF,
 4
vqύGtd6#maK
<{5S2W$&>V%(\cA;Gm;a%(vo~t]9??
z:O>>[UYn5muMH)La[=_☛u%71oEZjUs[`	PK"Ph  $  PK  C:U            .   org/bouncycastle/cms/KeyAgreeRecipientId.classOAǿK)jQ
rUPB|0cDץ=ajOѿhHb?8[dvv33Y,2LWȥyVwVڷhڦĠ+%ϩSް[P^kpeVWt݆dŧ	rDFV4J{8(홻W[]utpҼ*âS%aw=K膨{_W)BM
gUc򚫓J]Ma&I*
ڻNę0Xsm"rW"bXZȁz>yÐ$퉊)uNwa.B&\V/Z~XSAZ
)LrΓ4o@A*)PУ ~)HH3qQ\
b!(00[LINKJ&#8+
y)h1qv%K`4=]h6E.E͆ۘj0CI?˘cbZ"&}bҚbd[ʹ1ƃ.HWrԊOf?\0qK}.ONF_H~B8~".\T,
Eɍ`/N!۲8Q/F>"AR-<ʶp)2PKk    PK  C:U            9   org/bouncycastle/cms/KeyAgreeRecipientInfoGenerator.classV]WE~lR,Ѷ|)mj$@k͐nIvojI9/zz|gl$GsNޙyyvyyw`Jh]LHW&İa	fbH,:%I 5m#ccYCD7lHnr`Nnwn
n:Sno&aw"ٌe͜Ku&6N3~Τ%ʤh:ɵ\6933O
-+ᴑNM['<:<r15:JERܑN0-IE][jFar*A0
-{KY̨[\'^:ߌdls$SِaegUk7uda5
ON±)b	!oTy4aܖ
NPιSOMN-6"7q0=WPg+匹fI8ؑv+v7~O<HW
yR؛i#W5:Fq]'KMϯua6ڔ{jaV	Ć@5ocUn-T0ˎ!jz){Jb\_n'_E/3pI.n^S^exCP쒄.x1=q:}s;r3wtNA	j퉷z&X`91p:ԉSƛBJW\'ǽ7L+_K
%+fպԠW2,jE|LU`+gQ|xoZ`so]f~-y
FcbFt
0~o*ARIADP7[b8-
cFAYa0̋ނW[Z+che,	,uxW 2"̇2pC0ncU9p>5ѲY1e\{¤dzhZ0}JG4}˕n#	G(d_!!u4I>ƛDzܖCCP_Ѩ>j;BEC`!|gV%SNBEܙ1>G![(<@g	ɲV~@FǸ ǷJ|"6ː">UA-|9>o	F%'JJZp"Tv9ݝ}C8Ob>aѧe8ׄ =a,.5Q{sI
SE'B*<$PKjy:  .
  PK  C:U            7   org/bouncycastle/cms/KeyAgreeRecipientInformation.classX	{=#Kzx5Z;2 RZ;B4y̌(N.to{钚6HI&]DFRz,"گͼwνγ_s؃vBH3!	0<_7trԪ͕M;zlF{˦^
.QՊf,F!Zhf)-o3ͰfWP wR$(7l@0	E5K-8b&ieF,m7P$Dh,ԭecTM'g%sך
Wg5ÄA[BmͶX&<fߝp4uϨF
͞TfJz~Yc5c(?`gf֐&c$]&>fRi'&4FjFA3WsM<ZyҘ(yJ-UXzFMTfbl^s$fgbԨnq
N;i$2YͲԢ֔me)W|^쒖R-cWj0;+cZcqMUv\V{9ERޠ)ؽ\JES)k滅z5oń[h5b<R@.o{<OOTw=$h+AcBY>elәjIULI	~v	V'fk@]nYuzȠin5UI$C &H$H	[`+p>~,p@-ԳGj9^/ɤ3W}*	uoI5)#?z|q!Xd*[p@',AwZ!M[V%v67t6uREc'{[j65tnF8&*B
W{c׫^iہޚ]v Ckdu}
~!Í@ ,]םcЖ̍uu=/
>8+S/q/oŗguwz[ۧS
mzRf\+NoĻĻ{!
neEA])ʯ3
#6	M
,؂8
n)=8`#J
nǬ0CY&a̱GTp3,
⌂7ོpVxׅiX|ŇX|Xx d<228/</2Q|7e2Y	|N1c8owX|X<!#ǫ9^=x>эa|Sx}\_Vo8ǕOsG949OK;筘RdL:	#*~H'\O/c1-"]*~#UlYı\D?56y3h!wW*tgbӹdm]ksaµ)	 YBUt	<(]j8,pD!,W4UFeԝEQ| &g#H(ω%<軄Kx%q6(1gTZ#1@Fqq4yxiAZh+ 0\$Y<N\}UTBN$k_J"!'!nB^&ag	wncx^z!®ѡ%Fi^ ;WV
1HELr?~ v6-LR
/`v%y*u0wK+q~&*H^${
ca{)nPK1:    PK  C:U            ,   org/bouncycastle/cms/KeyTransRecipient.class;o>FԒ̂ԼԢĒ"FĲDļt}FtҼ⒜Tb}g`׊Ԃ<F5jS+C02aUWУს<8PR1'=($#333-3ȚTNZP\kF.88dq17 PKӕC   l  PK  C:U            .   org/bouncycastle/cms/KeyTransRecipientId.classOAǿK)jQ
rUPB|0bDץ=ajOѿhHb?8[dvv33Y,2LW,˥yVwڷhڦĠ+6%ϩSް[P^kpeVWt݆dg	r6EzV4J{8(홻W[]qtpҼ*âS%aw=K膨{_W(BM
Uc򚫓:
a&I*
ڻNę0Xsm"rW"bXZȁz>yÐ$/퉊)uNwa.B&|^L-0*@S'i ߀>\USGA!Sf 
&pCzQ$q3a܉aF&#M.FpVRbH6=!q%K`4=]h6E.E͆ژj0CI?˘cbZ"&}bҚbd[ʹ1ƃ.HWrԊOf?\0qK}.ONF_H~B8~"&\T,
Eɍ`/N!۲8Q/F>"AR-<ʶp)2PK.    PK  C:U            9   org/bouncycastle/cms/KeyTransRecipientInfoGenerator.classU[S@1BPUEm(JPax
ZmIRWvFfx66E4gw~ͷ>J$@%C}x-.S
p'ynB|[yװЖMJ̄tt6νCC\|0]X~w2܍e3mssi4^fi#Gːi8ntۆe8Ԭffԅ
GkS.M_7,;[S5rUs!uzfiAw[F30=稔벭׍AYΙ,hm#dEQ'{4HP0MqzrU=5r)dL},T#<5H[e%4J8+I9	%4Kh*ႄ6	C:'mLZ}v#cPEM;5Z\;׿g6Lm
>W`~<ZyLׄUTVhWůO,4cHL0>OĽ"(UpaA	Pp}
.	DD~!Ȉ*8
U,u	q[;2஌e1!D\F'etaJFx 2!&&
HF14!>qSo&n
u@ Չrj1@1BeZu>@cSǑ=D0[h0э|lK]\O>4ZD"%<BؙhGhULKH&w& ?ݤZ
E,oo,(B1yzKBǅ!
W#PKkB  
  PK  C:U            7   org/bouncycastle/cms/KeyTransRecipientInformation.classVR@=҅x]0ԻhATmh0I;)^fPH)ؙlv|g7 11 O*h&fD-l1?l/7"Qg$Um!艆Wcg
Z|Qq^$V&_]Ԟ`	XspUL,$+\KŜ$6S/(qĲ걼in<!
qSTi:츦sJhp/{vZd#/L#S)"뻖M`Q+	7c*A&NXS;<"gz.mH3%>S/Iyn%{}=4~a+8
)<WauF(G3]'u|Ep"0&Zym;v1fc˰a?$ftݧ'$&l)OsS%e.wꤡ%O/S0bvdɘɫz,ɦ.xy3Ёx]كh_|emS=W#l(ύ2xu
.L^$Ǎ_09ֿBx;heu|V'm5lp=BѠAC6#!6ᔆ&Њ3ZpVC3Iy
$j/ZЅK.KHTqWU	*⺄&TÈFUt`H5)KSэ[Hb<;Ê>G6e}n<.
 4b@WGP8*QWw,#Z=?m55M~F^,ZƝe%~٪1U$h~D1gH0t2Fȼ>(ImO}E2Y*G#xD*PKFՀ  
  PK  C:U            +   org/bouncycastle/cms/NullOutputStream.class;o>AFf
0F
OŪف'X&3/ĎA8+,Q?3_ߵ"9$3?A&_ZRPZ\RȠ__\X\[W($"TF.e
<@9`bR ,v`L`i^ fA& )bI PK|   R  PK  C:U            '   org/bouncycastle/cms/OriginatorId.class[OQeREC#Qv.n[n-&B&F_03̲>dg?3gOo ,NfmTpd{%z![+(5mM]5ՊFƱ)?]li]Ԭiֵ}jYuloUP+Ex-o	TYJJF/f+VdK|I`Z+*jɫehjVfwəuL\eS٨EZZ 0x[,j1Լf:Mz̳Q*M$Nͺ=cm'u$K%ᚄnj[ą+b'D暋+I6]$#am჋WnhWF 2Z1&LA$X H	`  D0f-6Eszσ~
ÄC:pqtq{^ɷR%w70sa|!N1{h77+j$xp&r IH^(M8 !JnCv佱OH}p~pWD3BO-3`x1po)':݅[#CV}BzՎKL}o7Ia,&XC);</i9	4GrvN6?Fk<q?/	ZJi6{rPK;    PK  C:U            2   org/bouncycastle/cms/OriginatorInfoGenerator.classT[SPN[I	"wD*j*XPkec[H`I4u*3bQf|I+
$~	`
~%!2oZz.k8\w"w]vYtynq]y_eumL4
ԺOVЭ
JYRU:Nb;ym.YƞЌy҉aڴuPOjznraף)gz5k״-f7T`!gD^l:7@6E3zGjΝʾHd]d%Kh Kh.CB.	W%t^2gdS2痕|`P2]ER(U4	إh5!x͗l<cHi%f]{{"&l ENCXB@XnЇ[!HBP+P#"ڊDǄL´kHȸ{BbJ&a}nv|ѥmϺqUyo8O)EtO'8=He̩GX *;o>ۇ;#{DϤ%5xR,VI=Z.{DC<"1:!3Ǳe,~	#n_ނ6^ҙNR3;Ex,Hrɪ^Z8PK    PK  C:U            0   org/bouncycastle/cms/OriginatorInformation.class]KA߱mC̊%B2huݍuWeE?14s^<煙7 {36F/!Cl_KeŐTRԄHNTݹu{E]PBϪm߽slpilY <k/TQsϫ'qC@Yt|DcIRGvyזaەա鈓3+lFᒘ;%R4,0N60a ebi0&LDUѐQ*Gq$1cĜq̫`Ţ*KZ)r2/2"_RhA*C:B(`壘1*#Ov}r1L4uEuOPKfb  3  PK  C:U            1   org/bouncycastle/cms/PKCS7ProcessableObject.classTKSP.Jx#
XLXRBY4bLn6Oq[n
	,-G9<n~Ő
|UN"HUQi<J3!ߌc
3n&=of(Mrf^iDQ&7Cͬ&KMbY3|!S1yʬyNfYC7+ۙQ팥/UsNu05֙MyQ9orsPgRƛͰHwX2u$31~akS1#Tτc
<
n#پx:Tt	*$TJP-V%	u.K"uU0%4Kp^ӈZ%0zRܴf"1u9mr\խU$rUCzr2|rр(B2#WF
2J.2q[;%P%D7#DMMЊJь{B/EibtzLP:-L|TTZ0LIC"tLЮ+_1c ^Gt
G/"H{_0yG# ?Ѻ>x2M<bXA-3@K'Tp
6pu*Dء9鉆]U}WJ>?$Cax˟Z*ym;r]cUT:])iE?PKΈ    PK  C:U            +   org/bouncycastle/cms/PKCS7TypedStream.classS[OAlrUTiKqE"JK5 ťEm["/7|DK;z;79sQ<΃KpdA
S)t͚\rs=K[\YSt9ǭD5?vҖr>g,ϖ^(9нf(]ϚƖj:|yK3;9,73lE=QWԂ>̦[\ԒmkC)Tf$EҶ	A	+Е<V?(dIXFP")ꢈevi*!Bb2$A$/YB@BV	mډb]6#
eZw@hD<_L%|pqcgT՞iܜO|Z{<c*:zFu'"`:BwK+UX}>ˇF)\CT>xG/nM"[b##2Bq2ǼZQ`hH[j_hG/
! Mk7yddFc1Kp4x3Y&H0osNHTߟ?DhL%0Et/6sк,%ٞLª"˧z'$-!ZZM6=hc{ΙX𵓍{=oRj
V\mrls_=9DZ,;
f0o,t6.d'7PK{x    PK  C:U            0   org/bouncycastle/cms/PasswordRecipient$PRF.classTmSQ~Jbf(i&cf]V\[/~MY39G5lIM{}Y.?~~`22|2:d(2:<඀[mVD^^r<"shtf9_L0H3٭x&7*q+_,B:) Q!tW$EȞ+56PWs|;M4;zE`Xʫ#[keZَfȲzYXIdIbF,0x˻XxN=c6zV.-rnptcsfXڣI	7$ܔ'ᖄ~	VJXm<D$P;;R(=7lIʗ>z+pMz1Z<_T˚n+?)p:)}^:N^aʋ;dP#x0cax00 0y-'9JڶR¢fewBCAGY;tb7v:R(]C`VP
Eh	]s]aEA-O.݅P:Ye2)Fv;X<SbRR%KOkZ%5ĲCUg5DwWB:~PK`yǕ    PK  C:U            ,   org/bouncycastle/cms/PasswordRecipient.classRANAH8D"!d粀bS1ʊ ,ph=k͎
|q<
lC|T
/@ȕ++WZ!Փf~P&'ɟ{_	J QKb]Ceyj;G(L͐mOǄ=bc6V
gjDnp>cR
K2p{Y4Nz6䌦>qqG$yLʉx#cǒe/;הXef+n~'uO7fUZ5UyVݬVUL&^6Ǯ|Y]q*c3Rd0X`N\ρW J ;1i/?{<<J$OrQ*ϱOeA2$^b^ZCPK_Ud,    PK  C:U            .   org/bouncycastle/cms/PasswordRecipientId.classPN0<7ml))	65MJj$(`+p:`w,	4xA~N^(t`\5F	$834e+חSM҈{lx'4Ie<8,\`Vq-cJA]8#BBBGzC?,%+:*9h58Xg)e7GtrNǆr4/$SQVQ9CpXjfQ3+5˥U\Q\C)@4TMV<{a^i
PK=D33    PK  C:U            9   org/bouncycastle/cms/PasswordRecipientInfoGenerator.classWwUt(ȢԢ*Rܒjhk:	R}wE}_F	.q㽓ԖcΙﾹn \߃X&p[ǽCqML4ƴM:	Jww"N֝٧靱	S݃ՙVjJA=!}=6
-M
	
2
.E&%%7tvδ<	8nneuRd$pɆUSnps=£	CwOu\.d{_-}5monHpMӱN&3QKѤenlaL^!CXR²B'oaNҞkx2,ڟ@+y t;IXO<ӊ9	M%@Y3=cB^-y9n6:L3
=Y"h,daKp
k}mٮ݆'"$+wmP2X>گ8nf@fΤ&Ge5'5ȸ_~hL%ҕJ%3d1K*jrtOiKh
5ef%B6?=OwrJ:<%7suqp0WE[70&KV7A [`/Ƅ?5<H8A*%Oiҍٙ{NjAϩ4E2X+ʸHFKelq6velYFele{i8晝Ik"l.%Z
ѹf%϶i%˖$uE=_prLV:'may'<[
3mY6iS8w|S
NӠ}Q\Q#_r{4Ρ<3O~PUYjK1\E*ݴUWf2HNa88aŸUV U\B&P\41oHbΣ;T<AW<2TĈ%2gbxd7ƛяhMprw3yp/}6c QpPC
xXA3.uQ=<
v;$^Up#U
B>fx9WcЍ>p2t+ӗ*HI%aQ{ⴧtXGE	p?Q§TR|J%URT)R}&#mWj-&QҀ?ħ%X箪6HtVgZ{i""E|]P;JzKE|-+fnm 1)H$&$(#Է$'!7oGjx9eò:{,8%p
DU`
MsVZ4Eh-KO,b!圳voy$hetf%OObtŉ {<O2'ZAf6=%LSG4bKzޙ.֡el/{hF`١Fw6C|)dVw!yJ^*_/c`H.6,FP=	CM%-ǣӅiFɸ~~H֧LmzNm"~ߍ_PKd+    PK  C:U            7   org/bouncycastle/cms/PasswordRecipientInformation.classWWWXAq(.	T	Eaxd&LPEmfW/X[)zzd!1	1޻w}.bRNclNH {Q5< '3qx|='boܢswWfzC :LጦZŘ6&`"GDD6Y3)6Ϧ8LUך4U-4ŘNb!GɌxNډ	jND)
Z4Ec[gWOZ>jqS&`%Hm!a'b/FrjHTLf%4̝IZk֍1MCR
bSfc̐MݠҩڸN9V5Iq<%UJ#vI~daFɆFY9e4@	52ҮqrN8'uQafGL+r܌0:ܞБhRd
<-yӁϻFUR4Kbjř;s'xc,'8[Kr{0"+ɍUҦ4wCjL7ҭ%(JCW﨎ԳxE4(bfElUSKDVm"ElCDN;E-=--#zGzٴ͎26ZL6&yH+~W芓/Og+R|FS}^ft7w#,˜']Nbssk~gv߅Xz'?[y}%/:wiRN9S"R8}ޑE%U. =bJ`CLN_<O	
}J{{H8JsPa%l#0$a*$ϡ&a
IhQ	{8TQ	kAq\r<&KX9܇	ux\<I	+pRnc{srA?q8D8D~L9p 1	/r8A.}x9<9ig8anϵ x/px<S?4sx^L/˹7.2e=a#y?lJ<
4V|Xm)#\`}Kkm7UKu\l:
CO%͘ih\.&mgfI|WV(j-c<I
=9u9O5o$	b,P,o/x}7wn୿-7hfkL)#ZK̾
ݮZǲQ?<E8#Lii@v&>?NѸv
36:c
_WzU֖wė+Rކ}m6:$>L*7*Ba
WϕY;frׯ7q%o*q+Sp@0C>qPrg%8(+IPKR    PK  C:U            $   org/bouncycastle/cms/Recipient.class;o>VFĲDļt}FtҼ⒜Tb̂ԼvFv&6Ff(  PK3(oO   R   PK  C:U            &   org/bouncycastle/cms/RecipientId.classeQMO1}Q@	ހ^iLMLLp/KYX[🼘hL<Q)\6oMg^/ 1؃a)3Lعe)n()HzEY}pw5]_%Ci)7Q*6\f}FL2\<Ӊ̿a$q?ڭx=jM&lr̀ePPPchM^V
VG8694zʓ\8TC.%d83P'^.J+C:-Sb-,;:Mz5M7t^dPKCp7    PK  C:U            1   org/bouncycastle/cms/RecipientInfoGenerator.classmA
0E+S\]""* 
cIIiث Jԁax7| fz	*#A*Rd$bŨJe$ԹqqS;m
/s sMƭ.k-8Zma?461
h*71YiS1.Gb[gxPKߊ4     PK  C:U            /   org/bouncycastle/cms/RecipientInformation.classWw-{9H8"K(I(qJD;	1)-k鋲+rЖpH˙pz Z,' xי]i%[+'P3+]wlA(A,	gA(6vHuK]7oDB
DBz5[##AO%LM7$4#Nx\dJ
֍d{LmB´BTtuڦ&
T2m:.c>eۦ>%AaÖtՓ{UT7d,],ϱC,>32YOJ#<7ʡX0{hoPeiI2lV7"gtrb(#LN׭.nnb/<MjQ=ힲEijSs|Ȏ
ECYҌdtKDRKښ-KJ	H.]d
[(7J;|l8愐bGR'H26m&kQ2FFnu2(Ƒ(Xb"M}zbD^U5*;\\)W^@|ma3=;3&E-RF\&r]
:ٮ871*YSPŹl*
0U M2~[OQǴ։愶i>m fI7km0M-]k<Cy.זynPOd
~2dCΔ
;il84N-A4CAe%dlQFXFv26*c.cke\'G2SF]2~,?r,N	Ϳ	Zs+CKYNTW^6XYe{
ߗS*ut"\yZVݳ$2nБyAcꚐ"iNf[URv]['l:J.܊xU-O|^xS9YYTh<|xVղaM$.=[-UkO4)Ulm*LTh*1q[Pр:Pb=UU0YäAP&M8IKqDj*BL4(8)1bLzVq2,fpɤEqV4b-l5&2
*xB<`O)؋nwxsLW0
F}xZ~ɟă
Cx3
~?(OL^`_&3yoM8و_q~/4.WMOjC=)ͲO"?6e#Vh/͒.vhatZùwV*	gӪҷih]?#8KMx%o?&Uxf)ujap։2{=1kh]~c	yrBjԸ>+z\`72;<S]E1qAI.
bhlc3xcYMn<r3yW$Ef``=9vT7Wh{8yޭ(lNS6ZI>LczY|*
Šg}k8|4N)^	.D2Vf!SZv-Bonpc Tu\)Xs%tW¦p3	ńQ8SЉr~g $v.~07Fy}<rr}8|T<5`#@G%JA܌PKM    PK  C:U            4   org/bouncycastle/cms/RecipientInformationStore.classU]WWݓDCdJkE-$$$jkJD&5TDZa0$43_WV%V}?3@<{9{=gߛ+X޳W 8;Cc(!tG
^ZL	̈́	èhe"n?OkEӐptey8R_Ҳm-#sF,FZ[%&ʪY%-|tzHBz!:R.kIݠh{=:V*Z[RW$cNՃr.|R̮eU,hQ(FWDeMB+lDᩲZ4JRQJen8rlnRz|Ε
2h69($.pVC@"P@7`rq}Rd.ykpFôC{ xx	gܥbtT'R.@n$w/%	R1$E'idP#'(7S읥G:?~ġl|J'nI˙<'הpyNֶ>qWd\$C!N-pхOe43gpMi|Ή/H
C2B)ːq#qD=Hzk$7^yA+}Y/0g!;>!!pa<`ަcM3z~3}D)~T{ c8u2>	_>\pT{9θ}aheCXJz.-T X4F۱3X9 J"IPIз%sڂ`o̭_kN+n{[otgê6TEݰY%sp

7
!c~$77k\[r-p~%lu[V2FHbtjjچ ך_tj~u~̑
Q'ˮobÍ&C/I7&bmd6ҬVJƽ@d*t)Q<+nų,
Y;+^gC
&>knmx:"/yN+ءv6C]-`庉xdSΞ]PK@(  
  PK  C:U            ,   org/bouncycastle/cms/RecipientOperator.classn@mBN!IS97!%
H"ѪpqWkG;p$PP	H(4;3? ǐ1̓оdC9	>ɑ+>$r86*9Lmiθ8eP1qqvpτ-PG;h`g_|,]ac빰#<6+l2(bx
]-kO\Hǵ:"5*
3CjQ$qWh/{$xR8x˜e؛o<ѡ#CAF5l&[e\EUJP
}z`(In>cwh4
5CB~76(`>@]bV@gqJӬ}7b=\\36^ԣTe:%vHlJ2iDz%ZH.HÉ͘(Di*Ԝ'D!PKBё    PK  C:U            #   org/bouncycastle/cms/SignerId.class[S@K,JiM1EAEF;>qDDԑ:8r<[R@fzr߹߾XCD;C`P6rpʹMA)sO%qoX-/61Ī/z^CsR1CB*5Ө+--y*a)=C56
%=nq?T}ưU4lo	{Ac&Y(}ı*=m{7%jXaw\jtlᛖޭŅ(Fť(ַ*CRn;2+.N

Z}Q2<zួ_.d#^D>R׵<@jgNuC4!Yyȃ`)@CRb
bYq\Z&őč8q]RI1/*EV|9)rR2
)x<eK CD'{:LU'ZhGx[9+>C誠?`If(ǘS"!<Uw"w]-r $G>.%hDKt!TӖ&H}@@j[NbJHM/S$(4JMAk_cF1Otv(GHJ&uPK6ԅ  p  PK  C:U            .   org/bouncycastle/cms/SignerInfoGenerator.classW{ȱ-GIV`8@CGBZH
t8J-&;nK	ѥ[wOǭJĒ!eOy߯^x g!
a]7>WpH@M߂G-xL?||@^&3![h]$ J:K+ܧT %Ԭ_O',Ijcp8gL5cOOS0CO:տO@}IjMaj&'Ljv,!>S҆ǴLfkzbJͨY[R}+ORژƞazBt{)Kb$,2ͬ63!BXUNHV^P)YeBLh[_F4sd2B(X:E/+&m8y&ORAqCZ*,yTTѴԩ([HHƨ.4i}]4t4ƕSꎝw0VR)+i%jRME\,rZɤ⃣'jEʙZ:ޫD#ܓE~P&o49gSQ=IL'Lqln/PluuL*@
S̲ug'&xFϢV_{DW&tI5K./ᩒ3~hE]ejgǝqP{<rFِuyɔnvT٨,e[>ihdi$i/`dMvO6LnZlSêZЙ.դNېQDQ,⃆NQ1kMoŸeGi68\f6DrJb@"vCīEq."vxDV="ODE#b~qݮwx{8U6~?~vtv{\{IR}9$m>.z`q{u	e3Fڣ+GULI
yvq(MhvZnxO*cwS:.)TQowurGGĝ~b.SF),MpBwgzu]mt]Oֺ+^u+k쨗Yϙy	C/vݕJ'ܦ۽[͓+jJRy窍m%\ˇL%x]>\~?H^K(c5dlǤ!Mh!c #z2P+&C
am 8`
VhfLf-|z
xMx2-x\ƫ>~[Ay*>Z1|g	d)fpg|V>sM	'U	K0IH8/!3
ߒw|WB_0ހsac&x64)O1'<i^=I_RMJ_L%q6&l& R+-tj~X!X:gaawL|Ç ot"zp{,ĄYc-kŕX,vAX?Ç;=dG$<*HE>Ow;l6JxMV	_&[~.Մٚq169pb,g,"|u{XQZEJ IfF،G]X"G\Emr؇.U{v籱 })D%uD)/ZKWTq/LѨH'.?;\j>[L}*qW]J!w>tyrP[9,q;[9f3a=KkKnc=z},KbbR7l~6A}s]\k[Dy<Itf m1К/rgmB;!"qBD7b=|"Ny4nC;~7R_||.3Xز!+#-sI?\hw:Jǈ$Fx+@u@ŮV:DbF.M"?"͙܏؎w8qW%PKM    PK  C:U            5   org/bouncycastle/cms/SignerInfoGeneratorBuilder.classW[SFd.*F@n%\I@HSMcIhqBiʒpDD%B/Ϳh@_L2ӧN:Yq,[pj? uy
G
p	i2[02]t'T[W\nZ I3r|aj:}jmDfغf[PDX=vDl}2Vƒcʚ+f.9]&z,;ZSPI1SwTWw3m9`$)S趡g+YKgu`*n4
RnYyT5NKJ!g2LY˘ֲPK|l2=@dU@U1$.M-z8TaW&V'x7B_pҜ?HsP~UKq,ՠ*ʇꟖү7	M4*rzVNz-QU4pS	LZuTfvvk.u"Dq\	'EvEt%[l'1C.Ijz'x(gV#X5}eF=յC49~6H8hñ'@M(XV/RŀԾ\Wv;+aGA!;DC(Uή=k=uG}A3ZPԾ7Lh6imr _ώrZ={CYZAMJ8^TGqMu.EF\pH<HxJh¨:,",Ђq	=?I8%4c?$ܔ ~&,fX̲cqg,FыL}EQ>(d<"Ϋ	Xd%(iF1G%|AsҖFOh社OgU/*8G&z=wE}OS<M!E_S<M#%o髓8-r|""_K^בx"`-,-wq$lZț>LUJx7 jp.
iҸtv[H""ܫ4Y_bGdcĳ3۹@c钝DFO}#.+Mybsd_/8O,ŷ&Jk4[,$XsE|IZQR$J_ŢX"㊰7+}^о*@c?j9^PKM    PK  C:U            ,   org/bouncycastle/cms/SignerInformation.classZ|?gL6 XMh@4 Q 	hDfݸAjֶkZ۴j[fVVkVomBsgvwvw6$m?{^;~rϽ P:OY
l(p)pX	
,V$XRNVTV(ШJV+Ь@g*pg+p(C~
U''ӣbޘPi^iiml=ZBzݗ;YJ̞h -[`/Tk^9yĴª
S#2=P A {`W8m^	t,[N/b8!~y¡9KH@7#,\F|پ諓{k1OPע1y}gŊ6O
OS6Ǵ(yuMZ HJl
G<.=K-C8?R"`EZ5d:.ƴ_7O\ѣ
]VOҾYM4叨]ex:N {;uOwo0	&1!Rgqc%S#śU6"i6R`uj1
)%N7$9d<Q4:
F3mS*9(M:;6Et=DscDb)=d}œa
тޠKO$Lz[8preʾtAcXn	G)N#zEZj%j5<&1Oo
sX|إҤeF*m]~zcCiEcK{ʦƵsJVcipizȯDك7f鍒zL.19V`mC(&Nur(=G0A
1%~]zXu2=ZDֹ&Q\rr3YBhOMh4
z+_-)(fpD^:TxTi
aBYdÕ&7sK3Dd")rLlmZaLQְ3YĤ*r,<EnH'))j]4(i]
ULzgҌ4ѐB14T gSVD_£YI
՚ h]EC63jP3_QXOo-FH5$3ҩb6
lȡĳJOMzI*oRfd粃0M>#1Fօ|Y)9\X׀pf-笌0 M{qEP#BFP)N
D2ZW'Tq J!&*#'˷h[@1Y(̰A-Uka6zt9Lm116ad4i-YJA'(I{N=efo,DmȤ
aoHLCdJ]izSʁei!8(N`.$}%02zQ5vO[ڦӨb.Nq
n#_ʂ|6E\Q_rD`&'¬pv#%AV%5K$獀k^Rcc$Lb0{f.KɔƔ5@w JL1<ݖ[zKN;/QNjT5vһ@}L$X[m~ΦhWԇ:3kx
:[#wQE9ͨ.Yt>zʈ1vS)=,5}Uب<mRro1FPkF|[LΏ&VoѰl@T'ι)o[Gdi-⫖pLOf)LnhDˎʐmroE.cڜ[i1H^j>4icq[nV.(.[dԮiz{_td)>MZ\YkDQ"&Ԩq1?Ӷ5j0ct}K#г:ng_
_hGXض1cRҊ+pUf{\xoB9O 9k4Ĕ+o5ƃMLKn[^в?i82oKlX/&EtN2|Co--wdߓa7}n2$Od2LeC;e2.v+_	v0 =2k~#ý2>2NȰW?V|2;sA<b3s<(-$M`ӟmX5oMgStEr坃TVRt&qM*KoGo)ml]2/VC^I,dVeWewf	klK\]8m1kȥ]1o221DMvVf>X>1o/e4#ьa5kp★]TWmi{HƙòrTB;F
Ǚ.珼k,[̒<Ϫ6^!ݜ?R<- cڔ6:o(|v}%b͟Wp0`4Öw`sЈKrǨĎ$/HKcd5;idT,Rf(!Ad͆ԍRNFq<sĥ`dٻGY*swQ= 2C]ڔ.Z"W3m?ɾ	T$QhpxY_HG.G)CqRuLЄTheXp+cDb8*'4×p
kq
2Mq
_9*<PsUX_*e"u_aa
AnK>P^j^dxjT8
|*'6,P6q
z"1'jq6톤瑴Fu"U.Fk㵴ǥc
@x
x
YB.E*\pBw<u9INO1\PKTp5óx
3|)F@
ϕx
Xf\BB2b

^ѨBbZ*p5C3ZZU؀kTs-?13cXg*\*lsTnsU؈c>NaCb,H1ưϠ30BaN؏3\WNx
:u~z7-3	o1-	a/V2	cN p>1<
'e;72ꄃ'[~ ß0?fG'_3<#ǰa'~&'"v_0aas70ŉx3:AJƉ}'_~D? ΉNNT'Jq{	60\pnca'ïf3$ap#1<1=N2W'Xtb%^E'K_x?x/ců_`r	rz/!8?'dm1a#z&2x
 J\\HQTHF6Ǉ_B1R5:s)Ƨ8 J[P27{/ou?5{Av􁣠K
݅qb;xx%A]wK;Eq<}0ۜ,OOJ.qqJH%i'<%<N ׏yݎ~|.Rs	LBdD>Q%P	8>^A4M< n|9!ʻ9F4v԰{y9elWiWiWiWiWM.Fsd>OTcB6{7>{9	6/ldCV
!.ܑrj`A؎~}50ǜ`Nqi|%`#㕤MxW8N2u<iFTy
	Ax#q|:	|{!Tx4p̿l:n^(W;\n&Ncj_dvjOԛME fw:T'f?]m+%C~L}{{O4ٽz/~V~\K-'8*8~t+hJG?H+r"9n~pny@jAԊKZbY[AT:h	i&Z	;;r#kR*ECapL=0̒HT4ʍp*KYglI|?2KWQ{i'>C.KjPMKZ`NcRy㢼q;R;nGBa-$tZ@p@:v{DH5}Ϻv	` WbJSn9oA;7
М)횘g!P!Thh6Iu*i!wa03v&\WL8~+}5v8@>+qpXaV4W$ٔ"1YRGf?3Ipg]z!E.0
>:>1V
D|=y4|wwocex[^̔q'B2R^~dWA(H-ɰ<!r+ӉLM,ԤW$3']	dC7#M¾"Dn|n0	>U?IΌt/̑ᣱczkWkW!t]̱fK:CL:;\SRE'tVaJVdj$_D\ךk(kv?~QܱP6Z9n3gU	._]pd+b6,
yłsS,sLO!P`*8CC0W`rϧ42hY-"/rQHuXjQK9?rS>Bj$(}`t#k3HGWqipᚙ|	;S[)@wDRksy9yŢWPCt(;ŷeUeT(wIF2
q;xoh S쌢%*	Бܰ [.K";&ɋiޔfpg\(rF8huFsJ2J<Jz5<dj.ɳY#BKJxRir}DbgFʡ_iJ1pXZ0A90|=+9_}	iW"=|;H7 &r<Rߗn%h:z_R=rjPC!)0 5s妹*Hg"܇eqiIE:-p&V`cTp$M)|ޓᝃ2PK)Kp  09  PK  C:U            1   org/bouncycastle/cms/SignerInformationStore.classU[WW&$"Zi$Wl҄"oIl[;I0&4tIW7?ZB_=0&+9{;'g~O cJpI@+OdO11ANJ@K©R&UCB'aZry6yM1M)ej96yъZyQ-y㶺,-h&jF}BqhZQ2ǗhIы;CNTJѩJEYMiUb{ZtT"OKnѷbZYp%%:"]-|ʥ-W\WJ(r5j$ʲbU>cS%yϕR\U'Z
&N
8-'8#Y~78_jW<L	匷mOP@=Svk_ӝB,FZ1jQw;d-|Q]!ǅ֤R/D\de<<w	<l'6amjד3]޿B|O{šƴ"71i*$:0+6wTvU'2>$C!N⥛Cqdŧ236E'pI2pE1o\GD<8Zdy^qK4]o<!g3uM^#c;r\;W߮]YC?^}j$<	x	Whu.8iA%Yw0g:2fÛ(90~Bs&7QvbfcN;heoQB:	M¯HdI_eF(E9|M"cn4k-mUsX孽0ӅmuU| 5@H (M[)=dCIbXs!j|-J
BZCwYT2
JSx<63ciXӆttQ>
NM//LSL嶐R
ӤEpMSS-x#$2մ?{\>:nnB:
]k,ҨpO67i A?kt9TSѝ^%5PKE  
  PK  C:U            4   org/bouncycastle/cms/SignerInformationVerifier.classVNAV+(PJ,"r+`*CDe;%e.7&&>oϴ5.P4693gw7g_
CM{3'_3M$Szκe)n1u#Eni0$g2iҝ=61mSUrm]1C-%Mᆳ-2XdO :&YȺZwe3h
9*)юj{$
Q5bgZie<0wj;WG"Q+q=[Ilia7N%ƭ%c۴TG7R	.1,AkA9vsG	oIl=]\mlòMJhpUBH5	M%\patgjƞWmB
7gίtCNj|̔wg
J	ThFKj?iɼTBm3Y.cFzk/^JxTHu(PrH[MTsnp[{SF+:d?hC5`2#:e\AXȨE:DɐS[P".@ aЎa!$6b,;Fe4So|+L~Kќ&9M[ ]@4${-	f,&=YLG{HD,>AgBD?#qy|ezR$ᓠ" LN1WUOc~Wa1c<=)}X˹2ܥ BV>ABOQ%;~PKD  @	  PK  C:U            <   org/bouncycastle/cms/SignerInformationVerifierProvider.class}1
@EMchbR,AE_qِIPFFp`gy<ow "C Sg%s\3a5lޟjU9I]Trk#^Bֻ=Z5=$Vg;<h* JȇtY*X FM@3^PKa[߭     PK  C:U            8   org/bouncycastle/cms/SimpleAttributeTableGenerator.classJ@ƿimccjS҈, =xiPKزݔd#V7Bfׯ ΰOhG[B\ji.>7imDE\~9Lqt.2C`Eu(EwS%%7EI8R ]!yO܎tB86W7_H6R)_& mhzcָ8DSz}Z\8yF?~0>zFBcv#NэPKd`E     PK
    )D:U               org/bouncycastle/cms/bc/PK  C:U            D   org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder$AADStream.classRJ@=ӦƨUO\wJ]Wq4fBf3A]~xS(Eܜקg XaȖʇV{F
vktYvJDL΃ˀ7B&Ttm90Z*9ǪiJ.Z	WG"F%^;lVk]-oy^J\M
ŉRk:F2hUiöo#oñ1wTŰQ|.r`.\d\cEL`S2͐,c](KQIe0A"i!t*c`їT3M"afmneKX$=T/M
7_Nk	G18oPKx܇    PK  C:U            Q   org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder$CMSAuthOutputEncryptor.classUmS@~R+
(j)H+
:Zuq=K4M:E?_3bUf|rkZQey??0n5SOmז?rٚ#Kr_0)V(ׅ+mNN1y/P&\oT'_rݣ0B-2ɒܮ\C	V<@	$9e
FIHZl=n^ruq
}dI?`ܒwQb2յ􊋊=eƉaK|@:̭m1kr<W*F7U;M4Ύ(!jvT͝(nU̲Wi-YY㤽U(h҅XEhtmpT.ngtѯcuqP!\
[{&pay'
$ن~cѱ	LMF۞@TH~򱆃sRvKsj?Cz[RTu<vYZY,p3U7_TsM|<<ma!0kUvFF}C@Ą8a`/N؃]He@ʚRi:fz0
S-gԒQp>\L{!@9|m8:
vs Ѿ=*y~aA -HƟCBGT{L~b@:7顓~䫝M̥GUXt716=q&,E͐F{\7VW
co)aR;@:}},)"/U,n*ٷ"4tT;XOmladU1@%H5B|
խ> @ܡuFp7n(o!PKvR=J    PK  C:U            M   org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder$CMSOutputEncryptor.classV[sFQ#DHIZ%)6 &Ĕ6v.$0
<m#HkMSgg4if?pVrҀ%󠳗wZ`
YG{RfZOjw]y#pX,2q\Q_?EXmɐ\JKV:;bsQeJ[6۲&iADw0҈bwZMר1Dᆐ."BM#O3n{o+kO#D[pDiD<~= |>h5쵠;'lld|ϺFhWk0YsCN:rz(&Ha(1τ4E}K~[xMe;ȎfYcp8!=5mz3UrLFf7n\:+}rݥqR)C:>qZǰqF':>]zqJťx>]a't&}=
I$LM.Y޽z=VVI7\6H}RQzzzMS.}~;bd)ƓRu)v+V#O_jJ't*~i~)^30#ogqq\18%4S656a	_c_)qC%Jᦁ1%.`JT796p%-tI
|BS1+CA5ɝy!_Γ@72yQaGFJUZ=SD_)>p;F00;3ZaKώj۸;hvv`|la1=XDMGrF1ゎL|!TnјUT  &;}vQۇ؁EUŢ<HҠqj=2PKn@	  	  PK  C:U            :   org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder.classV[WUIA X!pQCXlQ*؎\	RN&t0g&(>O}PKYZR PHX@֚}n>s&_ Q16exS-;Lyu>Oe:f2˫yu%[.CHuͅatAj&[;[eϰ&.7÷Ofq;ێu/~]+$Ѳ溼;#mx2&72kbjVIQM43*2?'ch?e),~UvJJX͵Ɣd~~ X3D#UƓ 뺫fR.g\
WIOh&+:S	6Lõ
+В8l+WW_SSTҚ=83hB81)iUL/uZ94|u<Z*ڤ\knHޔ%[BDB[b
_RNL2^~	>|^_)şe=~r4)n"%v\K{\>
PEy.90<cñs<UǤbu7hy/Y?`rq.u*$u4ˈB¨k´aLFޓ!	ӄanx
2:pGhńm|;$>fJ0¤F*>|B?2!-!1BB!00jg1\kJEd_\Ȫeq'e%
[󞦯iE`rR.]b-tA$-8xw4*QO<B|݀=<܁	Ci}-aeU]e%?ҁߞ"y}-.!EYilq="yu-BK;~:N)4II`
hv))|M/0AzK|7_!=d>'4C <̢ZY9!@j̟#;@`t@^ߒSU4PK5{8%  
  PK  C:U            ;   org/bouncycastle/cms/bc/BcECSignerInfoVerifierBuilder.class͕]OA߁JVQZ#\
2amSb& $ 	m/ř}}ٝ}0ù&3
Đ4D1LQx6ۂu
e7y]N6GE;.88oUvf#[Mש[nnm?nG(Gj]k-+_zrj\jZ;%V>罩}vd/~[a<iMs%SI!¹FSH3,ZvC稆DGR-CO揳/z<N=*7U-P:aIȝjݩ,rs6%⯢X1}{vYd"HRYr%7WiU\Mgzl=>~v믷֡M]?gZ
d ㊁ᚁaLpC_aJ:I#4xpO	;8C%cM	Z(HFl8F$Etwi YC>r!ƶ<oN$1GF(&2#pWi9@sL耋>< PKJH_    PK  C:U            >   org/bouncycastle/cms/bc/BcEdDSASignerInfoVerifierBuilder.class͕NAC[*uOPDPvH4$"? iBlw:dLľ&TI| K_xf[lZ/9g9;?~`	C,a}!|V\i'bOp-ra^Ws/.~*sG1,b4<n9պUM/U[?Ucx	kYw3T
j\ y50Tx]TVʦRFή
'1D2I%bX~fmIgDRՓ횞3,u=VE7]j7%(IQو޹T؊
B ='DlT`liZoV\Im`Z塻̰H
!3J9A.x4WHઁf F0ͤ^%LisGimL
㸟BFGjs!^\ΐI%$MKґE#Z6TC10o}DZ'ϘGȚ-<4=¼9oan. ZYRLc|<$C"O~!EWT_PKߝ}X  E  PK  C:U            7   org/bouncycastle/cms/bc/BcKEKEnvelopedRecipient$1.classTNA
+uʏ?Ze-nk`,B"x5²y_Ħ&Fo}(m%hMz=+G(1[OSB=2T<1̐GjWE2,ЋB@;6w|4p#SG{Xqc:wY
h&c(A1qS9hT|lxaK=7p̓N' \q̓"rYWߓy
hp{
L0\00e manoŭxwO!k`ȿVnB11yrn[pnzY=I52C3J]3"mely,UӸfbLZ41[SÊFwXDV{
t}{As[l0 цXӻ<|
%ˀn*g24uhnqaPkd"`;م,{U#A,їH3'X'}w
gdɽ0oȟy^pd(&m%
~@f܇CVsIPK)NZ    PK  C:U            5   org/bouncycastle/cms/bc/BcKEKEnvelopedRecipient.classT]kA=&]]Sk߱䫬}h+MT*d3[64&A-bĂn4T̝9;7 ΰȑ~pVkQRP(hmbȰ!ܾ/!ZmXCڳV}`_;dXĈYmz.|љ0s2֪K<8?zVC_{'<	-E30
c(Mxݱ?ֻb,6OGj
{P96e))rpOn{YoZOܮ}ktu(sk^uLU7);eq:'9ovnNr**gi+v+aw).&3q7MdpDL\
dsrtCJj. O,/A$Nmf4OP\,G+w5zbP,ʕϸ[Ʌ\wR'X:8ATɥF3­$;Gcb&Z/PK"    PK  C:U            ,   org/bouncycastle/cms/bc/BcKEKRecipient.classTmOA~=<[^D1eoO[4HQƹ"ږKnwf3_߾+'窧d ^aL"P{Ias;1fJr[-Z
#<!hQiPv4,0 m[U9jy[؊PIIʶPw!}Xe
*,Zҡ^ua+<0S-R0H97[
&; ~Kk8.5j5AFM:՜P~ðCgu1<Caӑe+sNQ.x,rԑ6xS=Ư8:O6[n%.<
l~zVu|骭ڋ

%!o$覃é^՚+&∙H⪉h	
i	q#Ke ;ђ50QaeL2h~qtt=J;EƉ1"5Zg!?Fka:7S=qD5h>cjjq^7[;ĚȏjMܧ	kTkr &H4C:yeoPKd a    PK  C:U            9   org/bouncycastle/cms/bc/BcKEKRecipientInfoGenerator.class]KAkkLE&@#B"$h9~
+AU3́<{>?(;Ug{^bu+'!YȭZYVGV}E9nI*_1t%cQ+LTHH:Ϗȧ=qҁ-<ϟ{XlzW)j	hPuecM3NibGH_ܗ,(0aX3ED&ldνab9~ۜ+s`e!P( XbM&"?PKT+    PK  C:U            1   org/bouncycastle/cms/bc/BcKeyTransRecipient.classTkS@=hK
>Zqap(8|Jӵ$&?owzBE:#iwޞ=|idN>gh[4LCgm(lEAs[386R|W3qn/My;\<U7	QGn/qLZÎZS˚YRW;\RyPܞQ.rarJj3U5y5[.Y!+OKېhڠW\ui%H ;qݰ
bdH:BS
a]&e{5V+N=N:A[V'͵FVJU?		$(:%tI8/[	=.Je]nTmahԄj>r\pgNrtS:<#wSfF|x Y}$ek-~="he`ɰӐN ?_	2?89VUp	R 㺂>o㦂(Ft&cHX}ICPe\##q	f,YEzɍKEyg^hfk2$v {8D0nx>C4˩fR鏘~a^QF!Lp/E	w!6۬n;\,zE00u`xHlC`?(J0%$<%0'PK/į  ?  PK  C:U            >   org/bouncycastle/cms/bc/BcKeyTransRecipientInfoGenerator.class]KA-Ώ`*#P/J
/2uvwWfg!V7	~T4]
̙99/$NGC.#vu紘vm&	I{GuuNmqZ}}+Fy3O6<&l+DUM~,`Z1P/';~R*il@9Pި1R
ˤ{a;;Q-Fل2SVbO@JIXXNb$aŀYf@zj`IMmD\X`ykt*PV/PK^Eb[  *  PK  C:U            <   org/bouncycastle/cms/bc/BcPasswordEnvelopedRecipient$1.classT[OA
+u*Vn[EH 1&.,;%HH412V&{Ι9߹__,CUx}p.Գ.c_5v=*1)hWX1x)\?	+INúVbqݩwy;Ss'[{Kd$c1SIvx?RҩnnXx@ۋ~ЅOC7+
.[-rRs4''2ձz_Ӡho4o0pLGPa(%ēpy0p2o7C}LyB]):>]9y(RUG!~oT7ƩKløbbWM⚉0MnhrDn
`SN9byM1d'2P
1a(ŀZ*uU@`@zs9 @I9B]/=$IS$gC!,{O=h/gϰZOI!nzF?b+;FP<8;B PNbdŹ,)G0
PK`    PK  C:U            :   org/bouncycastle/cms/bc/BcPasswordEnvelopedRecipient.classT[kAM&բX̶`bAyltff/}1bn%YŅ3gf;߹9o VȐ-+c_	Ü7Ui\?(Fsl6Őa'KOPhn!9/#Gb{}J2IŤ;xU.DB3<e񆿹#zL
&B΂eᔅlgWNKf=؈ѻ_$֘\v=r=}ou	nl\ΞL]_OsdkF.+>ާ{L'ķf%H}o994~R7xcydp.8+6
((⢍s̐qUW0㑌-)vj#a슈bO&N"F)AOm|VkR3fK\bfjW?&H2D'M{t!OPK    PK  C:U            1   org/bouncycastle/cms/bc/BcPasswordRecipient.classV[W
C]TuA
Y$E
k	3
B[.}Z}ԯܙ@($T{ﹿs~g z<Z.	G/HD/!..r9&4RގBpi7.Ơ^i0O]dg͋燺j5BoP癕sF!s`92=l6F@;l`ynVV6cl3,a
n4#eŜgYf?ڎG%42e\&aXq!JvdxtB>zhop]10-QLj~X$4-Xmk %mqV:Ĺ"AIZϑ=Ǵ=W t+%C(sG2d6YiPb3|TٔYVwNV!)Cwyikkg=7S$쩌ˏ6Itwx *#';' a7KqW"f.0&Yk1tҔ,й~弢XvRք33q3?ʜ!/
GIh ,ipmҲ|sΝB׾|KFU?/'AtYElJ\1گw2O%
ڠs`#9v`]#:>/e[22Zd*M&cv28 㠌CAW9ޠ=U?agl[wgI@F!CJ~_$UA] ]E^<ã'Q[ËU$,sFf[+VI%/v-JV f%K|09L9	X.]StRxnIKa4xkUB
MSEUEX4X-W)cP
TlƠ'V	E!
rI:\V3<b+Sϯi肌(8q'Qp' 
NPAđ%	yQA˂ %}
c  
Up=0)GЕ̷
=\7ЍI5"4BhDWGj4pף-wq#8_/h  lې>,[5?E5ov-N.
÷NgpI:9<F(Xħ4z(8 A	?έ2(㴌;z Ʉ޳UJJ<aqagh3'(κYE7eg0f fB-E|'jRɉ߉dĻC''p\َRv(XG6_0z
?uPK|ߊ    PK  C:U            >   org/bouncycastle/cms/bc/BcPasswordRecipientInfoGenerator.classViWW~C[Ū5#(Vؚ4$B2L.adIg.}_=	Xα@8Q<w{}.iH2>^X1Ĕb7ϧ96y	#\_V[[t+y޳}urlA7SD/]b薱h霥k.[!Նhkb8u+خ[6X	]*byIܚ3߿q6dJB.&[ i4|Cv4c{\
&aXqLH96'Ohϧ*4cDq3Uىa	b $[-,bK6[妾kn
%KqH.VAh9-i36gE}ql-ݣ]]hp>4oxZ69= 3NkYSкMXXn_r6if${ֹXIC֕1 X(u9DX!sP-[,8$YA
xt޺7q"_SQnI]q2
T
2MQI[dUFeqLq8!#.MF2dtd[X6)n::AGN)3#f}37kEK=GR@z/	ztљxfB&ԹYcn-gtVǣ v~x!p4YdYi|rW2Ar`+Izpz#O	 u
Aj4Mb`ZUIyj"7vln>Q'UYE
*RqaOxJ@UBD*R[@C*z'qQ>\񂊽1!{YdU<+*cB@NTqWU<kMċ
`(8ig1,n()K Sk
PT0 [9)8WspC0 W 1 :p)CYs^
d9$iBr{G*>է(F~LbgDhnk(gu$2Yǫ2Fb-ozG#/v"uZŭR+HK4?`-G2Ba1(HЯ@c~@\%G"4QņDI1^GIMQ$}7V|&
߽oøvPKqo  w  PK  C:U            ?   org/bouncycastle/cms/bc/BcRSAKeyTransEnvelopedRecipient$1.classTmOA~
'ʋ/Zz-^1Cj0!bb.{[//0hb?8wmKnfgfn/ <<C{0ܓ^dZzɯӍD0BM
0A6r;jg*;U/ݦ#݋ݍͥWrUU j'I.a3)ooPʾrw=*pSNWj7Ip/E+2eϺJj"Lh15omh`Ѐa!i
cP\ #9{Z\pB:C7}lz߰`SGOޅ/'`<${I	|B?yzĿ-wg\c=P21k&Fp0nŭX61;CL,^OcX<`H-`Cȓ5`H)eG75wwxū%ˀn2g214I4q>LjS'rv=wY']jfϰn/#m{?b+&w#xj=qabSYir%7PK3e    PK  C:U            =   org/bouncycastle/cms/bc/BcRSAKeyTransEnvelopedRecipient.classS]kA=&Y]#~G4e
(Tt[0RiD>M6ce3NK/Gw
B6j}qa̜s>pKGcW	H-vp_(9ӊ)Xo>bG]zGP(Bձ[t./lfp7 VN\{%јp:zYIؔGB̥o<\'§dd
N8md-oO*~;䊓V=wB+/.Y'Pk+	GoUkDɪ{poծ@yzh{푽~mˎ:_N-wtF'NY6?8?!z17Ovùx),Z.EgqDys̐v`0/:bR
<DQf)R4
ubTڇ!pv*yPS*WV>z-=OW>f-skR% WhIoR
OPK4    PK  C:U            A   org/bouncycastle/cms/bc/BcRSAKeyTransRecipientInfoGenerator.classkkA߉1jzke5"EjP?M&8aNY~i@$(F*0gvv};Pz1DmqX>ufikvtfKo$ۆtG|\x|Gi0pcۼizKXq%w΃<?Ou:5Z
^,ãIu7MW}7V$٦:*q>JZܪ~8Atn];+R(8 p$QWS4~EA1ܛ${koT>NB{9­zӝؔ/eTXAGr=Ź
o/*B3d:>!a.D!B1Ei)p|3,Uh,j%i.߬~Cí\ꗡOK$,<7Vwqe4 #:"Q!PKHl    PK  C:U            <   org/bouncycastle/cms/bc/BcRSASignerInfoVerifierBuilder.class͕]oA)P,nZů"IiJhc^e4.F& M/3K\9;3{f;Ug%;O':CPna==å\nI@꿹d+:5V~mW6Q˾,Y9uǮ*[NjmeeV:j:3+\jQ<PN:!2S[/nO"ũ(1[bͶV5ɉPGk=fXe~
x.TnPk"Z {v~ݬ,pWr؊d|dQS-m3z̕+^s\U8q5$ÂFOn>YvWIwaox0p@
a\40%!pE_^\aQ:܈afp'Y9boqqBx
rDلF2d-Jfjyyt'pK_t2M`2`3f
$S_qZ	s#xPKli`    PK  C:U            &   org/bouncycastle/cms/bc/CMSUtils.classQOAREʡ>\a_| )!1FPC='eoG[M xC8#?ݝߧ?23C=dvz3b(t>Rqw)VBdxr(

7aH_*44#^Ci'R>G#饞HtH&NDTwB!iR}~gPMpgt:R5IRA^HdM:~.:JddlYھ]hP{Zogmu'vk
Pȶb2oFmF6XaFa7G	F,s֌W3[Z+i,
C*%1y?ɕc493X=9CuxtnΚ?Y_ PKIٷ    PK  C:U            3   org/bouncycastle/cms/bc/EnvelopedDataHelper$1.classQJ1=թu|h]HEP[hAQPݥ31?]ݘpy.&k?dI,	OW(y1\	%h،wM_'Op^O&LҦMGa:>y/Gf
VxcG7'?k2%a2T(B)4CZ;{5nc:#+c'%$ۨ~Kn
=4tшQ 12ʨ1
CĤ[:QI7)CњΑ`bWs%JW,`4B*~ Jys(`5E`k)}PKr]  "  PK  C:U            3   org/bouncycastle/cms/bc/EnvelopedDataHelper$2.classQJ1=uh}Zt!GAAQPݥ3iJLJ?]ݘp{ɽ_o 0R]3J-dbIxmE!g銾J茟5c36:yJxrx;-'ez	/I2l`Xۧ7<9~uVxco$?k2%a,x(B1CZ;+|R3k2VOLӛqUfwl6,MI<fXK(R*&
^nD'uvFcRDkJ8GuA0Ws!JW̽`0+f~:1uQbG1Y,4HPK	a  $  PK  C:U            3   org/bouncycastle/cms/bc/EnvelopedDataHelper$3.classQJ1=iթuh}_"(((
t:FbRXt%(~ƄsNz 9b~0-;#%B`FaNtWBg}GIZ46m󠓧D8']RCT,?K|2#??]kl䧿샥{̚LF0!P0PՏ
TDt׵>S*ll]+QJIY&zPcF3F,F2ʨ1*IÇWZ:QI5)C|5}%#A0Ws:jWL7+S1zQL0	ԳHPK'<a  $  PK  C:U            3   org/bouncycastle/cms/bc/EnvelopedDataHelper$4.classQJ1=uh}
JEQPPAwuĤ$i+AttW7&$sro:k]cO,	OW(3S+:JՊoN"<:JxSwI6GcRmk`/V
OeF;~y]?OK+7ޅ5]0a4BaRvTLSm}+IJ;IQ&yi1O cJ0
IÇ:QI7)C|5C%#uA0Ws.JW̼?+~ó1qQ|؇1i,ԷHPK_QUa  $  PK  C:U            3   org/bouncycastle/cms/bc/EnvelopedDataHelper$5.classQJ1=uh}࣠((ҙ4bJW?]ݘp{ɽ_o v0R0I->dbIx-E!gy]h=P֌x<餗VKt(=^e{ΰ>̷7<9A}k8?e,8L~xteJ6XQb	JvW`
s}sXۏ)i/%FmXtٓNCy#(PB)TFL>ԉ2N|ۤdp6th_!_,̅*9V{`Wu (c궏QbG1Y,4HPKpa  $  PK  C:U            1   org/bouncycastle/cms/bc/EnvelopedDataHelper.classWw|w&NBJ";rhey/P7i{>]s;E:91a2,e2

xT
eچUfύ|||o~|ϣwS<|j<`[64^-.JL5J4
mie3ʊ@849FEw(		P"zv;@` 8,;ۤTDH!ND2'C3j$	͜N
تȺn	U1T'+)k:]$TT$Pu3'ՄZ[z@Uu5!	/=6''b*-&JDVK1ڰ.jGTCӹnQ$?EȏX:A5-iqYMf惃9|_._wgkW-󉟜1:}/fȕ̗uʓɷɀM3/&Q_,FX MMS9C'ʰ
+FSB[̈́GRZ,%hiR
p]͊ONN<YkX"l\o2Q߄ҕYEN1''u/ۇ#fGaci7>ڃι
pXcQ%9;eyt}MW%L(lKt˦ܧƬZ"ۊo/~gy>UjѐY:lWl[aFulLەS	l)A42GRMnkY[O@
B/i.ƻado!w=zQt)ZTM#	cFZY<qni<E#cУҧݛ`4DW>"x+E\%""DEt+OD8 b@Ġ!"FD<UĨ"&jc@΀̕Ј$I$olX=;Gq`_mHPͲlIVY|
)1Ц5SQ4uڬ+f(G6.T.I,+
%0_Dm9˩>}}ê
WZZYNB'_ƨZ(pq[3")u&h8vc.Y|R
x!vPGe=bL͹$uĹ'1<SÍo/n">|Şőϔp!5[,	-<613\ʰǰΰa+PHx\	xK|	O$lM,{!Ë$\K،0Tµxnpp^)xJxNw1=eGJDf2` F[ncxk^z7xqېf!8>
"bb
^X;͠3qc	$ɐ3q'pƋY|
Xb8]aI|~Mf"Bש19TrF1uQPFV""&Zr/Y5_IebBCu"-j1b_`g_@'od`7Y73෎`?G]C+]޴i)=h(he4jϖ܍U;ܣ֕<</;KݒƧ󧷡.Tu_`Vf:1:4HK9)~o+0IGVd0E~b?$:g,_r͛w;sqA2Z7nmnY_8f<Ӻ_WA1sU@en%d^2?l]_q-euKY6l5MWءa/ƫu5SWvF6Q46/%TH)*=J-NYd~r
gSx(Vm݄wo_d2wom/?vm2w6,%y}M/C(1')Ϊ;q{/PKqIr    PK
    )D:U               org/bouncycastle/cms/jcajce/PK  C:U            *   org/bouncycastle/cms/jcajce/CMSUtils.classWiT0da;B8Cq`l0rI*hFQ&龺Kb
,]6['}HQ9|ﾻ=p[T{
6y\@Q9&Uڣ9RR4JsR*$ldR3Sd)%RB18$`W䰮NKrR%4%5i(
MiBI}J<E'j2W%È8Y޾1!ME#<$C\hU[hEwf<eJRIJPAZE&RE5IIZxLUs"aA
.L
p3z
Nf(%J4im-?)%eu0\ [
'
+*OcTKKV6aHl*&x5TdVbafCm@kk>2a]½}P8JFakFH1]&[XPBKVj$ոu(|BQǻT-@g;o4-U?Ip51)/OMxZG9~kP4Ĭ_Vt$PU=]:ZlZT,PT>ɘ+D5^פl&{IP\w-W.Pm%LK'YY2̸◌d'|-(walR(rrWh#4JO隿P^Q[SS>;sV5?*Q1^:zCA}
3Tr۳`pX\;9%wfIYjLVUƥt<!K'dͿaK¦JN+q-D{%Skgզq-ZIJ*T;*]eZeZ9
{š"=BF"_:S˶Q!":E<Ya]"8."(WDH-"n'_	'EqJĐa8-"L˪f`
O⛼pwto@e\*Na%o'!jbK;z9[ͯt~Ϻ^KHޕ4Ʉjӊ%Q[١V.e:OQ[TuHCTm3ζorJATJtbǝv'3{Tѡ+S`8j۩V*"2`ۓ,J8rkܓl̓-Hy(:`=u
6242lbp=p&~0cx*=gjQvx`xvZ@ڃ`s3<		sc|l=Ƌ</f	ofxcx+d63Å(^j0o`x#Ûn0ׅqυ^:we/gx#~7FQOq'>1q>fFdxЍqC<Ò,/1Sx8w#97Xd솆OpC;"H?7VRp}ؔA)uB@5r5d=[ztB?5Sw	W [ތ*k='|*ܟiuZ,$xL{A&C>{5QS:=@co(X{Z]|sM:RۉvFMGm4~5g9O!w>"Mֽf?-Wв_f,	˻Av8K/͙95}Wq	SKHRB?eǓ=i[JqVr±׷?Q0&HoA#,[#q6R魯jznQrlRI!oLD}-&_~Qۖp9D]-ǩt[F,UƿW-ƿd_/ƿh_sr36i<PK  s  PK  C:U            8   org/bouncycastle/cms/jcajce/DefaultJcaJceExtHelper.classTn@=K.hBi(R
JiіTڂTF">-mqؑ)xFs)J| N/8ŖwGsΌg C4!vmaD:J/}{OhUQ!CQ וm~E|5te(Ee=5)jRժm'`L툦ץXyK)=ߏ@/&1I)ѥ<NP<z/E9Vӱ/?:Zeh k0prJ5'xdӷuȏZZH".o=\\ήGr@4[iVOť6-E~ZR谍=G<zɥT>
UǿPX)\2-L4UL50SN4=CMnWDPݓdhY>oژrEB,N1ƍ.6;`PKUGq    PK  C:U            7   org/bouncycastle/cms/jcajce/EnvelopedDataHelper$1.classV[WUNH@Lli@ՂZ)f@[k}URt?ե@HB@0ke|r?
_{Qpz]:;*?;*ҥww*	>WQ;%ԫJH!V馿O_hT$Tភծ0е-tf6g9YpH(+6)|ĜS4%C췰\)	mr,aGK,kn!MhBa1ZY:PI.T#&'zQ[тf-rPwS5/3rLւQkE3	EVut
ےX2_Ü-Le}!5R
8WDAТ<$׷"r2ϤVZҵ[o*n	Fsl@/|˖kkXjp$>F,Nhs&-ݩQ˦)!; uqi,ckҸ՞΁`n]70З`x"כ;nb"
7$Oi6-\{/yo.YԵE5$ En&ŌZ4jC{9朦ߦ=.N3EԨʴMJZ6C	ge8p4FZ2c32:XmCHsnC&NF6uXEc֙bxnh9{ceOd

Z*qId$X>JOBSm82GbE-rٿ0"RݰWg rČ/4Lq2q@ߥK,Q>AR%H.ɐqYNL␌\F
ȨÔ1-/ɨE\We5]q/h+2ᆌjVbZ%xUy]	BG/yab
b0[>\/rǇ,
rۇ>%AlzфݜGLۡM"_EMx(4NhɫpAE%heF=<>#mx3о@V?	OaPQr=	<"#qƲG9A8=
I[9V<io=?!4~nf@GMYi$[pUĭ
Nf4>xҸo{?~l˻Q#evTŻEΪx;HUd}=j=3
	.mee^|Aj0 !Se?'Z"/!8/PKT  3  PK  C:U            7   org/bouncycastle/cms/jcajce/EnvelopedDataHelper$2.classVmsD~T;UZB
88]hB\CiZ7)p"y$%$fN#JZ߿=4&ҙ-÷LWLXk͝
S_庂Ѯ3fSK
Ԇ{ѴlZKg,(-Bn=YnhBjk
']@9Ɣ=nF?o:v#ʚ8`1NmWoQ
3Ц0ΣD8
Z>{deP߉޾-:5
B n:
=삶Z[/l1x
.Zߵ,ٓ/cS
7R0Gw<X<KEbu	MN=a9-a>+ܼ0 #uMgEnYuGo^*O u
p#rQ21c8ϐdxaë^cdÛo1\fxaaZJ8H2`e#!JręHg*KA[H|1anW	iK*NEL"<HT^XHJ:]G<>ը@Ap,X`ȌfDR#
> $РIzB<瀺#""UwpSEgT
8#PEU$*>R1qG>">]ٔŽb#yTd l%pe󐾺EǠ}n9]D^R%T˶-N>

O}2K%CzrӓrJhq'sxb+;ȇ0L(C٧~6nWï=ї?{ȇތOs9mNǕ6>k㋟+:6>vCl"Kz	hgXdg@aȒĠ$Y. G̑:G4'"IPKUdG  	  PK  C:U            A   org/bouncycastle/cms/jcajce/EnvelopedDataHelper$JCECallback.classQN1*RTTfTzɬ$/	OPͲki7eþ2Bؤif234;P%hD<Lqa$EJpG%RLl欧3B^Ѹ-TT8
&8_kyyA^ּD:aߚ,Lb),X.f)6S3Oc64-rTI&	^
[d]Ieb??JKKJ
ؠؤ(QlQ)(EbJQ#h^߼.CP]N=O`_ZcvHc8v=8Lp{[h\PKx;  W  PK  C:U            5   org/bouncycastle/cms/jcajce/EnvelopedDataHelper.classy	\Sr/!"*;
bVChHh\uت]lv}{UK	~wrfv# pi
U!*Pa
3US*T0G*Tp
u*ԫp
GPE*UXGШR|*,S±*B*Ra
ǩp
'p
Ϩ

ߩ=N̹KXrTNΕ[/u:Ytl7MH*)w1HG,p:
+	_&/7zaJQghDY`a9ճkUTнs8Kut(q͛1g,3cVn>7$՗%\dʇDV7b
>K{le1
qjf'mY]Y/)g,'`mK!	y=f79'95hrpmp>׬B<`CaɆ7
5ʁ*Ṷu0QY0XE0fp}
hQ3lF|Y/K4A5ܵZXߵZj
dJ|rsn}[#&:_'Q8pԚECf*)(wޅfWyyT/-8"^D9wG9
ސoKBApxe0PDWT e%Jp ws7
3-^P+̠Ot29}w5.BE
͡
ڌ}BGzCduvZ16]/q{"nz7zސ]7}F}b5=TոbKV=@mTݱ3;]p&
<GV(Ms-"d-1!
M-h;!w`lhe5E|!fHG}]^q~Tl
'-n?Iw$F$)1gxWy=-/%Hg6n]o5VꨔMi$HxIT4vv
_	UxJXWd	j!Neڀ'gXN%#+uF. Fs4)f{PB	Jo8nBP9DYmyh\n?޻1uXY;.aʘLc8l|/t9,ޛ)Dj\Co_pCW@cAy_}uF$Bnh4K#.kh;[]-ʅJ83o
JoܑF'F-3Fƶo.lu\lC]6tzFXMUAWgit&CVЮl;:o;l0:L.ʅ]nᥕqu.iu,ZU	n15VDa1U:Z*Q!1Y<]TS(v}I6#[d4iM2rۖ˨X,ǘ8[:Hcs8IqƂ<=p-p%B)a0V.CmvƘsVw~.f͑\R
	=8\ĝp隗˨]{2%	fE<zčWM7 
.pTp'F&lS5_)Λ/ydxq
,*2e{.ycx~s$_˗޳=nLWE:4Kk[OAwx;w]v:uͺ8
gayC!%5GXB嘐0OF0YYanin#>0Ca7
H#k	,W>n^~(Ф@@u
ܯz6(*Ъ@ؤC
+YxD-
lU`*+xR;ة








|
|
|
|Ӝ[z5szunq7^[l>6qĞ߻oas:Z;zA|s$Z,34~8؈W{	nxb˂}9IZgzm>YDӢnN/ТɹzǾvswgZq	zř$8TCMTD㑉&gwC&'};D<oo{ih{#"{8.qU4}a1	`,,]f^up	UN̍k^WfwO]ϛ>+qt9;cR327nn<8ȿ?3
ſ]9Tgd/2Q iV1oߣAID=6E=-k_#ueϣx}Ψ	?./ʩA{IZ=Ö/GHKLGl;~΁f(12G8ShJ}i}i̩;Gk&Y
	CfmP`*4C	#(!(#$",'7Z;$n{"`>˳A
˷` Ip
&A
@
%`'8L	6VfN"aߛ%Ĩ/þb2nfmpl+Bp#Jl
.ajv
B'3A
Na689mp*Lv
f.ˎl
gGRVGs,cGQh\<685xSXvZ
`SX_v'Hp);6+	VAt3$8	,'4Cp^
εz+B+
KN
	.vVf,Z,]leV֛Op1Vٿle2+d@p+CVEmv&+!ۊuwceCf+J0]
{En'hOe
TJ/+Spv7!`=$h#x-ll?FJ?8;$~NsETn?s@
O# \S0BMt1Il00|&d6阼ަ[$![d&
U?	j^+}]:|L4
lU7|WYQj
Tz
{ɚ@f;uߞ~[?jco΀#ٳ],;$?:z>z~icp"^&	e3$&ه&}bs&So浐\eYG4FHkgL-hdϑ
I{W~b@?pacOcպab={p
ۡhJg:Y$+6}X+"}>o3%oiȃ]hґ$a	H#wŘ|.j	MΎ59;|nx_d֫/C?%K¯M
%j	v@ޢ&c 3oTwG$MȄ)T8-ҧփΆԍk36R2by;kSҵ)lFO}]Lgŧs؜:AVYN0qyӼ<0&2D7stҍb3K5PjqجVm3 JncMz-+W@q""Gene_+63gl9Zf}0n4h!,K^RyKe
3).0{p9fk_'GO)5IZzZ<aI@
lh5`*%`w1LB9$'s\<"6}/ō@
$6[,3WU(?+>FNq잺pX#[zix|Ц<3'	DHMztdtCӱYM!elspWzv?t>Woci"Cigu[YZ+I^o{#wA+y9le5@@Yux~i3uL///}ҙC0Va2~GGӏ>SOSr7S(Bw+;lÕȧm56=>Wt/AT^ޣ8WCo0t˧Wv/3mVCx.6`2++̶F^#f]]}lRz>nD#]T(5~za;KFogf|n{;N{xֳ&EEPagΘ1왆vb(=Sz.=PzPfQzN1^3^J;&CigL
Ɇ3vPz6\Le Cɰw2Þd()=SzɞQC{dkWnx**^tCTQz&ݤ??ax~qv!dsJ]֙ymm]_Y4N:Uk8V݃1X)EˑH6> 1Gn<8DMAkЊGԗ!f
~Nq!
䅈#
C9q7"
a4F+Gjp(
D&|)cH|X 
NA*鈅|TH5`q!MYI܁48E;yĩ|4Mۑ"NuC
0
G,>$Xk5؆47"䙈4ɗ 

>CHJHs1||T!q?"eH܆4$<,jp"
@:Fd᥈
<ѫ/HK4xQgtD"-Ո˹ѯCHM|b[
Y`RO@s
1H-BV<U\Z5HiІt<?A<QNc5R[NN]4tދ
6ɭDgi5|%9">O":/':Bx_Mt!%/&Xėhl%L/']]_Ň]z5*h	-DF
>"# At+?6
%7Lt;O%Z݁;@|ߥwDpѽ ?>'Zkz
&q3[yQO#gm9Diq;KI?b&ܢ[y_m|2ѣ<N=Χ={m^'p$vD;DO?ÈCD/0ыF_GS~D,||ћco\qӉ'~O=<1yC~G8'ǜ}nN)/#Lo?NE_"
$ E-/ ={>5y
OG3:)/x"&O!OOxC[=q
-]⼒XąQ(T2XDDSlZ$|?J;S
B(rɠKJ))}(fd+1*L|$HYt$(|$r-%uP yX>"BP0Z3
i)*#ŉQBre-T!"
)XqI$ǍIx>d=tI%Փ5Ex</2:U'>܍"<O)¡taR8KR
!%LjT*Rf	mpJ-$BHgQFsePMtV{eF{C-{fR=!{IdÒ% 2X,u#ӪHmKPFK#\&iTMd΃2kiw,E$~2K:]/k?E*
D$~HO^'LD!'+Opa4=4.dOF3E'z8G͹BI/(?/1"=.GɜP?6/JtWPʄPAWyH}VdKx)s%L])"H)&7S6~Ӄm@Uy,4!"KSDޤǦ{Eۄ4TWu{S:]gw*!"B.UfHPڸr3Fn[]R.2I=qxJdf*[È,Og(m%R{K"xAN"_.t)ÄRODh B%P{B$"YP>'x@|F*$st	SHH"N&EVL
X(P2^)#RsP2U`"Eo0؉O&Q,o7jߛO4q( mYlCurL#-PK5=  C  PK  C:U            1   org/bouncycastle/cms/jcajce/JcaJceExtHelper.classRMK@Q(ArjAж=Ǹ!Ɇͦ6,<Q⚖FPޛקg 8-dXZe5{#|mGr*1i
&ĉ.R*I6f$ǈdDә=mªxI_p=hy`U|ox&g'؋CmKo8VG>gH̬ƀ]";6i%6Xu:/o3)ҨO>+heggx|5u Uݬ
; PK`~/  p  PK  C:U            6   org/bouncycastle/cms/jcajce/JcaSelectorConverter.classTRA=C!ȾaӰ9AكAаxjv̤f:<KPRo>Q'@y8vM~֫PA(:<:PP9k9ds"9WP/=roO+h*?oqXI(}XMΦ!::g1{#^ᒔe:ܓmrC'hɺCvtՓKuQ9mn2{3ijRTYP=,Ld-@d|nd=Ka<6Hۥ~3}7'u;Bjc4xjJb54*#%'UrC\_1X	sD//nQnGa67b
"VDT<PQ^EFM*UhUѦ9:v}q-ћQt4e&MQH/kwruR}"~UsaH󝖄^0kR[#{q1F9P
CP+}aK(G5xFI7*a JJЁ:1k*K	C0*a\$Lk`FC7&%Li葧Lݢ{@?ڔ`uٖNE/?!(R4*y
dy(c"t9zvpe22zrz-GtcQa~88^1dM0XkSQַno}wגyPK-  ]  PK  C:U            -   org/bouncycastle/cms/jcajce/JcaSignerId.class[OACKWEĂ(vlImCI՘4uvKBh|e<S(M؇s.3׷ b!kkFӢ zpǠ;2zށ<`SÈB2T>>TgZ2pw2Horq;"ܨojV^OeXUq>d?۽}ȓ6˻$%r_;w;ka#]C^aB$üYj;rj:
?$k6ILG|W*xie/AV~Ml;zI/#p^V2e7<R*USHh f@70g ycX0CSXTfY4鸅:fPTfEm,*]:]iVŗ~=%Zz(I-R<F~*`Zy'gX:}7TJn~򈹗0s%?gFB#Iىu PB6~PK:    PK  C:U            ?   org/bouncycastle/cms/jcajce/JcaSignerInfoGeneratorBuilder.classUmOP=R
́ ؀C&~RZ_n$ ]td[ЧO=s ,G	+mU	ie$"9X,j;3wM^r-E<0
Mp2<17[¢f{beRssKvkySowwͬ+4݂/feikhk&sD玻~PFUK\v$2]8=Wxʱ9e9JCKlR
5]3bA~2etȐeܐ)C%an$%LĶCZ&Ec->O6!ZV)KAK-#owsl
p57[W{WQpzJ!+=qi/[R~8LJPJ'V9FmNB}PONրv}z7bBEU@ᶊnlTE+TWу;*zEhŃNC<Rc}"Ǆ1&EaJih1%ݭJ>pf")69G(&kF[Oo e4<x	Zaۍ ;H<dW'fFxT
%Xzt8i[TQUiJ(4Uĳ2f6BZ0 =ԦG0Ou-yAPKRU    PK  C:U            @   org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$1.class1
0FjApGš8iVjCo-y 0f[yHۈSْ7tU%CgH["qPK׵&3lMKƑpf{6Gꮮb6v;#C1B	xtat7o$ϾPKD      PK  C:U            E   org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$Helper.classTkO@=c⺰&F	("a3ڒvJ_ 2.
[cvN{cn è]g(TT
yO	7
վ^ˆ:oeS$Ŗw96]%bXLi,U"VK@Ҝ}H(dxMǏҐ@8KⴸyϽOx;<3i/u]}fh-(Dd׭qvWww3"x]*wG$º*
0
L\;wg]*K1/:G{K@]bNH`6>|7Cj4@~+ҭ*0hj0gb
M4t`^ÂEem+Ø5ٛ3lmtn%HDzSЫ@q)2=6}v)P%>fd:)V6Np[Ʃe<=_ğ߻TqCJף%LLOv)@DWHN}%2P:L"*NPK
  Q  PK  C:U            J   org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$NamedHelper.classTkOA=ShU@*J<k$a1%HBBv:4,D?x/~83;sϹw;
`CCi`bZwݱ}aG5OMιY.Cm+;%<+W5.\_	HW.ʾ[NUnx%4~i%n>q,ݵOV[2Fݠ%́;*K+gВYqh]SҜ2۔mg]E	o#*j"߲QR(Q0  @Up!W˰ڡv10^
ktDH!7CjA%oSy<_ǫ1vWz825:9uI(ݶ;rsw4>IR1i	3*`V(I1<cO%<BTqǼ4ðYmkSuy#9rZBH xLBqhdOd
cl(vɓ@l
MWa1q#u7-&-)Hcq-5h5,y3"	-Mѽ05)KX1*MFPKLd    PK  C:U            M   org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$ProviderHelper.classTmOP~`!/ejA^g$A.K4ёHGnedso{sν`=CS˱gBٲf 		:sg֡ôy6a<6u_g/
D|R`ú
7:G<B֡#
ؒ9 O-1lvMvIٵBXPiEɥﲢƐ5Un+uDD54"J/ЮO_UAB	yLMff2VOG*%%rkQ_WvL>.n4.F~۵k*V]w 3@kĸ	
=0%aZBZuH
Rc-ᮄ{%dT!9	Y^-
ql}mc84mR$]#2MiMzK>Fk"N[7="t;%O1UPŃ5՚;hmH{JcNKR:rіhU<j,1~N#Q1MPkT0iCPKurY    PK  C:U            >   org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder.classVRP"R+ޕ
JQ#
 
e/'M5LH$uħ3:nh
Tjڙl%'w #x-?3,MB@bZ%>Õ/5/K\1uޛ%
JfYzYY몥eu*
_j`QqMC5	4(\MpܲZt*aoIXԜ\+=[Z2˶W\9e"{iKW~#a+s0!HR}j;3bKBb3pJ!Ll!o%`c%iUݜeh<]]ØXaȻ
R3t/Q
57.$t+H*8 ంG#+LEc[iGjeT,6#?`{Ndw%581隽~ԃL{{'ȹUiɍ]5=P(ق͝cμ8oJ=XAfa!uBJaij+XG[kJj
'BAmg1h1vlJ$$R'p9},"DYbqm#wYc1)%pE/%Ї,`19O<1)IDm^Om*f'ǧE/NчgmR"mggRvA>HrFp-[7D[&L'["[e}Fƒ"*1çs78Ԛ1b?MfC;BvH6oC_0GV69ٷ60t?g[_>@W}Ic	<3i,z~PKjkz  g  PK  C:U            G   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$1.classA
0D'*=Ap/*"EOڒ&Ws<>a`y/ +VWB\$=ؚ!oh%EMbnFUd6>,	X(aRDj*i~s9F#B<0x4m KPKCx<      PK  C:U            L   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$Helper.classSn0=^?2B㣌Q݊"BHE lڤjt]Sʜ*q+VgELx(ݔ12!G}= <}D TH=TOyp]_*.UC%J+rzU~}2Sǣ6;)ߓlh<0aqwJx!0]GB5$i`r`cVMun쎁kj)|O⣦N=ܘłea9-\ (T/P餍U=TO3Mnn#e!g@3z5D~f`<R3H`)$tF7ll#oP%3ݲQ4"n$]	Is_,93[Rgp=<ĲfΦꯪwGHHv1֒9F`m;#4\\kKQ`Ń!{oʑɪڼ[c=r?PK5
    PK  C:U            Q   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$NamedHelper.classTmOP~.+tUpu޴"VPEE>tڥ4HGe/c8{so
07mkUd2,Y}3)綟7K6wgf{[F}=pY		-N6W
lpU˿Mcx<,J;9@Tz*BOFdH0l[U!fgT}]>6NW_uMtac0DȩvR蠞XjgD,!q#A0!aR,!,ApNynY몥%5ﻦ]1&GűJcdA+	`[Ǎk
R6k90?kkLAo۠`

Y撂 qYDqӸ"$fqMܔŲ$IɘuanfjNNܻY
uomS}=xk%,i! $}(#Nn334%	 ?bLӟiN	1AH>8.v|sVڰ&bOuȤ=
3"qz'PKb]P  3  PK  C:U            T   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$ProviderHelper.classTmOA~-r=KQMOF'(
JR_'s\㮹6_iHGg)Idgvyf23|`
wk]6{c
Ӫ0L]l>[ӆ_66w;*|M:M"d;
h[\5<f5NoZaǞz<[u~<dHE"Ѓ2+r<V]$|TnNP_
^í`ԯ\:+/РXb =w$	1	d	q	S&57.0,ݮe5jI|6#h=d$%ȯ{J`P`p.}
%2|@툴%Q0Y!0!8 ,
뜂),	q~3(42$#e!rBeT8ܻEXٲ)ficB%afH
<";D:gm\>o%-(LzWv+?xZ>iE(N(GHq[;(z\ȞPI&d=ۤOPK<T  e  PK  C:U            E   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder.classWRVD
FI ā6!Ҥ@ \[B,#*KT)Wg>L12Cu+@5=vvϿ Ǟ+Ѿ> Ot#-jhd뻊jZT39[K5s5ӝ3
hUme=cjl)jP\^]=m[`yz*jY;м*y1JMٺ/I"ISҺSWL#SVTUq
 VmUʫ2ӖY7Z:򄶩/=m3cnZ%V/Q429il˲1%.({HEeL7x>pQiǩy,pJS@ȋNs,MVMm`֮TMhC1Dht"VWL'pD3$7gF"$D\qCD7EHDE|"`pQ1=9ad,L<"1C6ej@QfSsސ܇a1>"q`ows 6C8\3y`LXY9RdCWPYǟ%m}sH2UtOl)w5+~u	9\ =[K^>粶&@Mj}R"j,^>b}N-/
5xxڙWij|T-R)¸"AD\B%t2i:L12Ѐ/%c#{%+	!J$D@o3	a\U$у)&ϘL3a<0,х0[&/d5&atc%Lإ0ze&aD1FV.uEd/ҌIQHNSŵz嵓,!A.qtWǑZv[
&!6:(-C(#	oǡb"Q{ ѵ!v?#S19"@!~7%cx[PnTdѻ^
x=?|wa=
QP@ծ0Q#0ûG6pT''qf36OQES'n0ũ:*w:o:W#R. z#_0PK>  l  PK  C:U            F   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$1.classA
0D'Zm Q\Ti[SDVj.<6|Xc6.!1lya{#RN$~"WMSjC.3S".1l;XbCHm2-f	ޓO#$d
@|PK8      PK  C:U            K   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$Helper.classTO@~+s07Pejb$DHHގ.핸o@"e|cj&Osso ^9hz{/ƽDuy	W	'ԁ^Ⱥ:?ʆ<]Mĵ}7hػ^SpŰNł'TmHIsEK0`XI܍/l~M6/[ؗ@D[Qxo]?'acHMᷴWtBaٻGgIK`={եHvU&2`4`MUvM{mz]g4^seK<_O]bFj$xxU0m/o^kj{ hnTQ45j31&
f:0aACE=W1'׉1.:
 ߍccGRe*v7}Wΰ12QrJs)|K9Ք0gKs|muw=+Jy`EZW
A{}Qg. DPK8x  i  PK  C:U            P   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$NamedHelper.classTOA}[hS@*J[C'	 A&nf㮹V($PҖƶx;vE0eґCPv!=at@8ޞȢҗeIiټj[b0SN,x89n|HaXsQp?ǾQVc[yy\E^m9Gn#u:Co=Rl
Bg:BKJfs}b,-rwK^!&^k1|4l4D4h4jji5c*Ƕ<VF2n72;&Ƴɶ5n=fUu]'	ks4=w.tR!Ru
mETWu#!0c:0`BAJAZL*C<"gQ⩂
^(Q"6Ve7"@٨>=F׷NӶ|_zǚCH0CxLHIh9fs?˯&Fe;rg=ë5ӥ9YmL-[ZHcIrt[8ÛNo≮r-Q^20WCPKZ9j    PK  C:U            S   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$ProviderHelper.classTmOP~`tt	C*jA^C]/		/r!%]ڎD?xFϽ9sN97%2fw^1DKcpW#\sG96ːm_u3ƱyW\ӯj\'b+etl5=JNUnx%4~i8B{ÍmlmɬLeW	L/0VYK~bCeg]6
yTBZ۬~7UbD=v}
1
Tq	ƶ.N(0sa69VsPYͶ
5=)-UJߊj*Ő>Ciy~Av]o8V7
9aW]wD).tBK &a<%LHH&pqT$@(Kx(ᑄ	9)iHaZ,C	yx=ßشiRu<A._xIe>K}x`.?h< t<sJbt?a~'uwH{J"}FR:|L;Ʃ5Ia*Ui/hPKD<^    PK  C:U            D   org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder.classR@ƿ(A H)B@.EB_a8it҄ISFJgEφmP'3g7ٳ=9ߞM~4#u;Ѵnz5W,smP;:cf;_<(
ձ.9qXt*	9ҶY!Ckh
[&Âe娕6SMM9dJ^jp}=nNKF"QrWM5nr[0^ q{<*V^Ԋ	MMh\}=yl7sYM +N2+DRY!G2v*y[)<\5OBq7b]nٞ*MuSIK۪1/	z	
|%%ܓ$ᾄf	-kEC[`[7!QݹsGÁJt9BEK2U^:j?
!^[aD; f&.w*"upS{ӯBqwo%^~;8	~eKX"K5|\]7Tw)ؑ?G0y"LaF	tMvЉ	a&y!̔0>ta܇n>`Fb?cS
ҧj*yJ)V9a>kz)bFmK0,:#,1p=pε\m"h{VįKW!~ʢ=E[$WYP3,Χ+nUC5X6M1x^lu0讓!kV!ĄPKn  1
  PK  C:U            >   org/bouncycastle/cms/jcajce/JcaX509CertSelectorConverter.classR]kA=ӯqk_Q0,(R4Y-_K(N-ds9s粿~		,'+I-X_i1V=XN(JrSGΨA9V_Ӹ	L;wc
?$W3c9jI^ٿy|0IMFCll8
4*=YrZ/0E#I@+9Rlk=e25
X~k$ԈX6Y\AtƏ[X|y
,lVUzGbb,C86cR\ajplz
PCYE?.6>6@>W7M<dNp`:+U]ƝS) PKN  d  PK  C:U            .   org/bouncycastle/cms/jcajce/JceAADStream.classmPN@=ëP_ʲw@b0DԡM*|;13\qsr9g? qDW Fc3jk/;UE6԰inez1ZШ5j7;Kt>vAzlqD ̐ KJP-'dԭ@A0
 
v IdĐ52WQOr"c<c  (r}G|D'BV^(D^'%gdǾp	{J()~Av%PKрpb    PK  C:U            A   org/bouncycastle/cms/jcajce/JceAlgorithmIdentifierConverter.classTkOA=KQDBy-AKgE+>Cٲ6ہDD?qf)%3޹3?~}
`
khjWBc0Nwΰ6/!kwKgC)Nοc;~bm`KQ}h)h%.\l$Ҕ-\BJ6P:R3K	rHTXivjL°;9Vv@-&4emI(DQfD/=`;iu>cIUbB*KXmJ:ΨE9:cX+_Ohh$QdNԃ-r`h4qĖ
T9%CjY/F.<fyp*amN0+$Ns8
/C,՚eT@hqMF2:dܔqKF.2nK[HRC߸|bk3\,s+=+^olH0TWeq[ry!EY:]5*1_[O,UyguECA"<$
.bA<h&$L>4cL# C:b-Ĕ^L+G(cVA?(<fN(C	R)xSh{$Vdrb\o=Hn(&y<
!u<H|OLT@g<59:|ROԀ	2x${\3x>MI#p/1I)omw?*ަUϯ~PK    PK  C:U            A   org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder$1.classR]oA=KpkGVb0RIۧauΒ|>1GQˢOn2s{Ϝs_<ƃ,V8ru2,<<c՚C`˾'{5j2-ea0#"90f(b0CR
R4	)kόynMN9I	fx	@&rRr^HnF0z	ܭGdr+M#jͱqcQhXa|Xga<Om"x<^yV>q68Xe#XǍVm+nqvM,È~~J'r6B
F|+tRH޶)+Pd3QyC.NtY_P:HS(J{>KNJ:(Oys9)%Mܣ,O-kV'PK  
  PK  C:U            V   org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder$CMSAuthOutputEncryptor.classWSWץ"#T*ZԀ	>jk,װ6iPOZk־錝))3폝9l{={ν ?Ub%CO;l}eaTuicVEI	J6ϙ2Iz"!AfbW4#)u[lM=&'KK&u;V2hEhfQ:\M;'idEvEl3`n,%A둖[)[IIo0eJQrbNډQ;Yi&en
IuSP=遘nE'AKgȝiE;G Gޑ؏iOiNvH7d6j\Źղp<`$'v<;g&dFtjOFQ˘0=emk]Iz9uoE5)AUgЇ
d,]{gqԐ
J(nq)i2۶m"Qpc^k]gIOF͔bkE6 3sy:3!=aS唋3^ϖG3sCTC&]G
*)9)hl|L=f^QAu4_/A^6-[
l
)Xrf:N,*$jY\SIGB;[C5;3P.	Q+fcny}җSw+5>W<XT$,}QMB<܌/n+Q⒘}U/X{N(6:|M&8)޸}~IICv{:Kx)|'gl;J5R;HK,\6ţ
OGr'VG⢪
o<^Z|.b:NP]L
7cx4,CX]8a)i؎
MP2
X
Q	
kpR}L񀆵ca)
 N3{F<{Dxgi*<v`hjȥ!ddy;1bW$\POhGɋ*:`3e1yA8	9&3y*S	E]xFE7Uqq&	G4}{%lm驔$*b^=q4RN;0Q WZ3@u5CC|;G$^Oᵖi|%i|^p
U^bx:y+x?$.i?WPGz{hz^y:6)^WiSOvioǩדƧ+|!H7? B{A'gC~ MY_
"%XABc9vnП
-i|4{38B0o&qe$N᫜x8d/0#y1os+p<Lf4>3g^pt9_ҩ*-cVMHDUCԔߡPKI    PK  C:U            R   org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder$CMSOutputEncryptor.classVmOG~@LCcRBl8CiZ␄BSZ1wL!}͇~TR+XK7;;3;z? \nHG$\ k΋X,&_e,pVin:#$
LD7
6.*˻|79N	=
fkyp(d;ӞGӆ&d2\QZ,BI9tr^B8D%/jf"	WBoV[Ԝffԅ,׉ujE3sd!w(ΆZf
 Tu=cXff溪RkF-;X%SеV4'ԽJ`0O5zdu-su\974Gsauj?;:'Itȍ]vкôUI~}*Ae3Fѱ5kѨnoH<Bmf|oٝ\;nխA	%S[cDZxC3`8p4CaU31e !sK81Qc		Tsk͒[dcSGJ%n${V$Pxvn.K{lE<Ͷ1	{)+bHtac%"l­5p6!
N:n
v"(qp|z%rrLDٗxW-ց£xN8@;<D?оNEz_7?LV	aw.O7xKA#
" pUA?䚂#D
!f3
pSn)mG0;B㮂 (?I,r_Yq)
y_dD@E,	"c 2T<g|..HZ4o^ʸa.%4==H/6e֤Lb2r4Vx n"g/@eC FO;@o>:q&V[0Fcb?Ң/'B*lG2M<
BV$eGSs>a$ζ.o#lTF.X BOaJed5̯CdTH?Jcd`"rYd[7|zxDhh2@ɍ)ƥQ^tUkpƕeaIDji:PKK    PK  C:U            ?   org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder.classW_PFcYB4V]  6daaI3mڤMҧic^iڢ	&1}6I'~>{{g|?4`gltOZO9Zņ#cQGBC#	H (u(
G'Cq.YQDbw___aϓ-6c1kv!Uu+v>ūc)/j&hG9W i04U'e-qɘʬ?bP=ʖwTU Tp0o*;5bLSgTؤꊹb>"IY#yiF%uňOԥp)&k6U8x FxT={͆HQemU2aKlP_T5#ɋO@&>ZڊWX
i䪬͙ſR Nϑ.,-3d$T%IY2
ڀ ]% 2ߴԕ%ENXz,OkVFe,..**)1+H*;QT#IM7bOFCgJw%J76;TC}
q+vL@YH'E|3sTI:'5x:Q_5|
ʖ8TMQ\\iB7|
c\X|FV<Y
ސ2uPnNA,b6+:P&Ei2e2"J1פrz QozԠ-Qfb4sPǳ͖Qr,#](dI:7ipOuE/"KnG"<""zD^>}"E<(b"q@DqH"Se"TG	=b-];+}Wd,SHfgq/wyK_*_2=%!oImHoUC}C떘\Eo][(eO5 ۱b)N֯ik-+ס.>ŕ&Z-[ʶZ_o
e7a޲::}6x4NnlӕǆFJiF2p椄n4JhƗ$%lc1ą)	v@鴄LIB+j%laҎ:	nK?QЉ	bVBb0M:OLL	w#!䵯4$Ո<݈Q|*1:o260yg]xޅ ~#\8Oǘq/p]...&/p
ta%	_06zO]8Iڅ3L"f6^+U{i6@_vuhIӦ%+' ) R)C)G15C{L#%)4JޤY;j4{{᭞,:
MwU#NYy
GI٥]ĮV}	mд`MH^Z]W +6堍k|mkyĺjoP)U@	C 4hh0^ɺ{'9Ϗb)+Ӆz[fkH'd^ß -fȻ| 6<Aک6Mhxp":V12*81n,M<C
8%7)2{ډ+e_^
W`U"ϏQy&?M4inlBr?g,L귣wԏj䟀 bع$.)jj['iQu?_@d1mJ	ulrݔb3iX8e5\yoj_\:Cw2@PKM
K    PK  C:U            M   org/bouncycastle/cms/jcajce/JceCMSMacCalculatorBuilder$CMSMacCalculator.classVWG-.KEPKnuU`m! bگa3ݜdc/n9%s9QnB|ć3sp	JC|!f&Ok_w<'At:WyO
9ώ*iKJ*{1ƺ6攧J2IOYǓ.yWM2
X=YRYÙ
I&z6KX	/FAgrVהMUVvoX;v߫卺/O,\F1HLS~)oްe9p%޸5;^Kl7&eP2ٙu[4X:k\5=S_T2[dWm+O	gkW\F3]qνH#?
u/NX-<ߤL:[
n/6˰KNm&[@@)	$>8+0 !Bc_'5eҐ¹$Qz!׬&&G2'b&TKHs<~<L%H`FmIul}Lv(su7'_Gb3E{9jUQkK5Y85
a[9D⁳}5<瞶5{j>5pt20vh@7.2y̻a@\7Љ/#/|dɴsff2c7um&La⎎ta^W!s7Dy6=VWˊ]@Oe\ueO(ƐLWs}A|I?BKjtS[ȎǪX':^x-<]	U9:~Jīx{+􆶩D&bUxብ-W&^Ph
9!)&0$0,X%)B+D9j}	N`.J0R+ޣԴN՝c*uahKe5m:IjOhPK=  N
  PK  C:U            <   org/bouncycastle/cms/jcajce/JceCMSMacCalculatorBuilder.classUkOA=SK ҂[PPT(v.UHI(ViKdݝ9̽sov~5-2Tu"C;7li	efx<C?ɭ=m}@r(NA4v쌥LiW&'8b9.3e]OZ5R:}$Rd5SP\qSϘܳy$.ލ8P:Fg*señ
ڪUp+e:]Ug-z9M

(xYAV\]	6Sx6-e]kTK^6S"%,5Crxb#AcX{Q=
[ՂL2"b$\+s(gGv(Û6evW*]`\ZJv[W_\[yhDuxG
~y!M4ҼfOZM4Ҍĸ.iVI=x*?lmN%]WT'݅u'Iom2v>oS9Oo 諝>J(b;#yѥ\ /еŇ,>c6>LS# syZv8<[>t
Wc%#"?GhG`+A:!F=ۡ%r)4Y_RiqK`^$vDV%CUPKi
    PK  C:U            @   org/bouncycastle/cms/jcajce/JceKEKAuthenticatedRecipient$1.classTkOA=Hy
A	0Dça:,'&VI(m5&;3{sϝ?~X:sێ]тTnU<KO9Z_sO*WkH~0L;p2'jOr`PS[ղ(݊#≪r-C$xIH[UԊW2"rVAt"aW8ej&wEŭw䕰ғ#꾪c'M	S$^vWG\Ȱ>/"c n׀iMC{PMH:{Oٽ&<rrvnq&LDN3uqd.Sh$,PE-2݊tٌt;njO&pEUBuiLØ21[&q 3C^CD =уf\㘏ctmyIwӖ'\?t¾TE?`xMq2aDBE3fD
z:1MZM#ڙfkxdհhאc53,}1Bophf:.<hbNcГ=Ód7ɭ# skd/P	ֈ/X#:JccF8aQ?PK=V  !  PK  C:U            >   org/bouncycastle/cms/jcajce/JceKEKAuthenticatedRecipient.classSn@=5\BJ
- AJԒVHT*xZ6Kȵ-{S/	5 >
16	Ղ,3so 2C91C^V^SnBЪ#)$PB-E9Q#/t@ϩPhK~'GRDU\EJhS1)d<ؗ/o{}**IiwVzvq$؝lҥC	ČY)[]aX,ožrT壔r:Ԗp6."<nލ㐀iT<Rr@2,%>
ꏘwI9ǼbSK	Umd0oLZa଍8fqEy,Z8,p.2-ɯ1랧+HE(Q'C
͓!X 8O83ȑVk4phPjf9DaZ/7Ƹ!XeS,}[dIPKE    PK  C:U            <   org/bouncycastle/cms/jcajce/JceKEKEnvelopedRecipient$1.classTjA=Yii~ԶFݤ)J-HDИi+A5݌Ɇ̲;
Q0| JY{e9s;;?~~`UyÐ}JW?eX
սA#v߻"`S-cZJJ8׊p>rkvTеԱtNjO ;s~k%SȰ{Zy6ALHB	J1pS?=7,V+;Jj*ْqU|p4ᚏ0\20o ǰto`LtCm<?|NRcPD|hUfVΣY6Fe*tTA`]LͬB)
cO{qojXU&J&.cD
,2M<
[C9q!THgS+/ٖRMF< ](De T3Tn4)>Ekgȗ#ܭFبn^=C3,'"yF~tג
)P|I3Rx@6EhQ#J!PK3    PK  C:U            :   org/bouncycastle/cms/jcajce/JceKEKEnvelopedRecipient.classTjA=]Mk+2`#nTq2ewR?> 
X|(F⢍?\w9Ν/ 6`1d82j'變ʞxmߏ5ԁzWѲnbW%!s
]r$E˃vC|x.Z"&A'{RMP=_u?Tf{ʛd/:C)@րaഁ93`X{PFPޏ6/B·w]/pAC;p8Wq<Tr@#Jp*^Ku39~bK]OIRXȁ;z-ƅNbd^9Md,d^5Qub0-2Z/P(eѓ"A
CcS4g+1V>.w5QSlU#,o+p9F~J7?
k4Ҥ%M
PKzhp    PK  C:U            1   org/bouncycastle/cms/jcajce/JceKEKRecipient.classVSFlMMmBHHiy$8 }aFȂHg)3ؓmbS0{޷߿>Z1<l˛d`MӤc{lN7LW
O
s-s~*,mݔGycۓ>yRxЕtYGWMe3ky;m̔FK2Iwʔ:vš0+[RLXٴ_w< 8̎47cl9Y0EJChl{Xۖ_c`獙\ 0s/i,rp/k]Sr[d1wh>Y*;+<QH6PFe/5F<wCƪp\cPUڴtЛtUCKoJԒy7U3`H}jRS1\9,dو#q=78z8nrrq&iQa`L0,^Pɦ+_<j$T
!v(TLGJ3x6Db80smߨ%j&h`X]jTk?I0XsB_,wAONks:$F0{J'xށLm2"6'<OaՀF6cDt|{:8Fu\QM:.㾎hƘtL==Tl[H5|юii fS%LbXǊ_)R⥆!,h0aO5CdI[1O2R0DH?hDФ_,J	׌OId'XOb`|*xW:|DkB_]ĩ2ŭ<<g&0c6u>ͺkU'0^_#DJ@gWaZxD
mOd`L[Qҭv'Z艾"N4R7:YߨmZ쉞?e:6('
brۤㄵ|ʊPK,m*  
  PK  C:U            >   org/bouncycastle/cms/jcajce/JceKEKRecipientInfoGenerator.classkkA%kk[ڋZoE
P/HMc)~nqB*1`A4I-rgO Q`<Tw&Np׋yyi*|%hS2{Q%<Pw+KWI}Гc󄊤[I%rPr*M˪f(*MǯM30n`$_\Oa>^wO܍PDBb2,v[-ؿ0LJ
YT'!5_""UE'm*q>$o8~iů^cmuc=lo{|'aR!Wnˣ7ketp
-0LkrF\rɂYL኉,LX4)7aaNU-״\gxT0Ir#gQ<NB np!@57[8@vX7%38w8Fv_߱\)|9PKSJl    PK  C:U            H   org/bouncycastle/cms/jcajce/JceKTSKeyTransAuthenticatedRecipient$1.classTNA=ՅH
rAE1D0mfwJ;>&VI| ͶMvfv97 xНμa3yOQxe+JQ͂Αa)%k4حJU@#y-Sq(o"|JM1]ò9ubVQ=}W=Q<TQh/irkUUI+\łH&	}ǳ-`m]箨",y)dFU	SYc)H0H+_RQ
\30` 0A*lBҩnH桗OVv3B)֔ d:IM
yR:ntaʥHwJߦZΉ:JcҾ>өa2L51iønb7L⦉n01tmݤL^/MZ7Xqb.118H7ߺ_tw뇎WܑM_wya%z}zR$*IݫWh]̤5W}k%k5#gbu3H=Lg,}ln3<M;jS<<G2Dy	̝9 a
Hs0i'L2'PKt؜  A  PK  C:U            F   org/bouncycastle/cms/jcajce/JceKTSKeyTransAuthenticatedRecipient.classTNA=uQ/"RiA@ @0_t(,;w	|
MI| xMfg{gv#pg=RFj*`蕁FW焤%0fI;3}eD`+%]bijyQIR<	3Y[RՌ}*)Eh<fȋsK`b11<X*k<%]2H5D.'f\I)3bpI,X,t[-Xamyٽ	i"_+dVƆiO*C.&AU{Q_ebz#,B7?x'&R9ډuoO9f6rx
O'ߧnp4kFG"}fd_Ceq=ѩ̊6\vWףf7.ᖍ^m\]펍$ma!Qe`B*(z"U4!ڈ!Es~jΎbx#P4;O7OE%62K%r۸?ѱ]$WT"ձ>a@c,R9 PK#J    PK  C:U            D   org/bouncycastle/cms/jcajce/JceKTSKeyTransEnvelopedRecipient$1.classT]kA=Ymi~ԶFݤ)>HJ@cb+[i
ew??FPPĻRHν=㜝 eU~ːu+{oWhIT@>C6]"Z.n{\vÓp4î
::C#W?>pO|ѾиLzi:U Nvt"fMU^
'cYuRam{rw mrngt<Vv05
}NPҘNA0**޵jDf˰OT!:˱?0J͈"AV7&LM\ŲX41[v܉9,b-1d-z*te]f0[R0!)oא6 Y9ԑn4)!yg+[#ܯTGجlQ9GYFvp7*)QxEs<RxDkK"/G)qPKd>%    PK  C:U            B   org/bouncycastle/cms/jcajce/JceKTSKeyTransEnvelopedRecipient.classTNA=uj+_"e$)!u5nMja41HPƻ-6+1q;s9cf}<8jar%B<3$,_
%Ղ퇫qTTIҶZ-dE
ֶ|i˛Ҳ=׉R(7%=eäWZTMr«/HLV-Q$_qz\Ju4\*Q[pOa_ܧApNÈ]y
Q>3L:]	u۪7|A'rza6MGTf9]fE8"Gf>x~J}He8sVqn޳ $'
dx}2O'R7y8{_:pSwa}_{70+ju@
FheǤKy'|Ց$&b,&`0LǑ~&@$$gXiΒ5FB4뙙gژAhw0n硑;Dz!!,!sN&;>Fq]1jќPKˬ[?    PK  C:U            9   org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipient.classW_N`&B!њhB@`I l,!Jbe;Kgf	؇Va}k,Q>[9weRI9wsΝǿ>@7>Z8&zYAmꠂP o;ΘDX*6{TݱޮOAY3cٖwNAxb:Drdbxd\I\QN)gfaO:֒ቋbEA=a{"(-#݀
ϱi7].%\J(8,MY9hWkb(˞cL{K
2P-r2%zZxtα#6{|hw<L?+kMr9n;T| vR8gg.(IkΒ9m^0#R21t4!+I0IWyh%*yyDG
w`"ĶxrI)14/k
tt6pO!*Y77`p2XcLtP`C2/9N	ZȢ`X0&ҺvsF>CucP,2{IdrTÆgljIR2 ݎ&HUI'dQUhUhQl9'(>W͇{+d
٭ԚV9'tgnY'&'fڮ2{KmvÑ|hϻޠĘРطE*USqTWEhUQѦ]	'UDUtTѥ┊n=*b4Ƕ'cz8c,<9ny`7A|%m|tJ	tqOz=vR_<I@rӟ[#>PUPG1"l:QET:G:|% ^$ 2N礟AGS*$d\@* *;<i?Vq{IC
u	LyMpz݂^[+>5JH,?_id)j<*PAߝ[=v궉s=Tu<]FLQqIju &
q8ǤWu4q!|yO8'u[q)KG\q'lq_q;<IL0yJa'b}
y;38.y
=
0yA~L~!&]&?d"k3xN%<a?p?=@I0%,=FQA	~X61Jg"W:/~IiWn!z67#@bf5|7:9O_H^j}
| AdV[QGqw-&gM&WKj*jSA>8EÔp	
5x$_25K!lSY2E5rjIu,6ZGsW?˴Rj_-3MKm>.}!:嫖Pi	6pP&j)m~%:H=Hux{>*FMфT<?@l(*ސ҅Iq7fQ?$y@[6?vnSV70߭YȰ(wR'{PZX/ PKL;  !  PK  C:U            H   org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipientInfoGenerator$1.classQN[1=		GHJ]!J-/t8Cpt#7j"$~T䶪`xϜ
k@eH@uv|%mg9R%̛8|̅*R7vxpi{eeVO
1%i5$h:uhʆ!{ɒWyRln&*ݤ2eʘX?g1N&g*;yv\`|T]zw)񍏍'
U۹$';7*=ͮog:=+y^EKUT,
2}sPt&*
ZmQaam
/bk?R:{y7 wlUy PKr?Ƅ  a  PK  C:U            H   org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipientInfoGenerator$2.classQMKBA=c_l.ԂΈR$^)nZdZQUZk`p7 {\5W
	OqS#Xa2Ni6VZ&_ߐ[Fq`
}gFMbMܡCEN:4%`32@]ԭeJ#|iYu~뜯ՎjWT":ɞ&VPi^:qpByrbE 
,񚵍5;9ZFEaIL
S/F]ΨxcbmůecÌN`$rL ?c2PK%a  &  PK  C:U            F   org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipientInfoGenerator.classVkWWk0YmT*!	NBHPV!XbL.q ̤3;sTWAALV}9g7Ͽ	`? pH@{h𾀎|Z@gh>͇]јXj!F/Jhb8L4;JܯUsB\:s3̽d]	0L'XLv89vYF),]jEf]	
b׊LsKl5kޠhw*3J)1,1R9]
sZ6[͔\ibUBZkTE覒\XMClE5Jޱt('6j*eT5~Ks>[VY)5C[T۩0EBZ̐i˶+dG#EM]ԘrKSrtיh#lR
Nۖ1)f0KuL$cg/o2,RK>i^]^f=,^n\$>Z|j^QX-[VTDol!T5ͩYTGܨY)oqZě"ΈxK""Ί8'⼈~J
f>jm\I7'ym }qw\2Ԛ&~bz)N$-nJ
>Ze}qbBF̧8Om~ʮbk꼑_Ly2mU[5^)LflG=8}w/pnw쑒G~o@aKy7	_	~5;y^vAS{cS/DʐqX .A=Qqde!7*ޕ1k|99L8yoCVLsL7q¸/!8h𡄋sc	1sHB80c		|"k1A%	)8%"OoԦwA8QQm@Qi:+g NxԓƗC=эNjOH"C;~}:/A1
Du(u
:5갣g{u#ϱRWu<q}%mEiv ۱Yv	ba5,SED@%O0G	Ip^xb!\ǧkr&Gv/\vGeAK\vjχ[uZGf_M/}+F^C
O(gG|%ÿco(7sgM;}a m:=Uݽs|
	{)Dsq PKn  
  PK  C:U            E   org/bouncycastle/cms/jcajce/JceKeyAgreeAuthenticatedRecipient$1.classTNA*er/rAETRk6n;KXI$|xf[@mH=s:;g;%2t&S":CS˱snZi3E׳dp iX#,^j19C?9@V+=a2;EyLRjlm:E#_\6
U+5r\h컁ë-~en0^qA犞@-nJQ8?aYtSFR3M`qa0m/\`R8³x]aYDaȴu$}aU)P>[!WOu
bCaPAH;A&ʦd̊b:(e9B<3$B#fj)mVIA7o"E%`5rroy.)Z1)Cc7uN0t(2	=A3$I)bQb.qG1zE7܂wm'N;Bmئ& (\T%z׉~L4:l
s5,kȤ#5d'XcJ/Xw^#<E7V)&?(}<:Cv:2U?ŸBfO:jq\B|rс򢄉PK	j    PK  C:U            C   org/bouncycastle/cms/jcajce/JceKeyAgreeAuthenticatedRecipient.classTn@
ݚR.
JIҀ	H(JZZ	TlSG(~$HTx'q<CֻgϜ93ki?}m{kiJt:g_r%kw7-S>.)>|KR@TȕGYoY
/tE_@9{Uۨ(sb11dV,-x[HkJcOTTH^mRVCKlAF~İrDQMcZǌCq+6r+"mշ|Ka%'~E:Q4.g[zwVZUpwo̎MC%~GyQ&F$<8#c"ϟcBіBm
$r~WP?/m
%U]۪~qvt{Bs)0>)hu&$$Li\0p
/`,3$k^S2*`Hk K%R)8AVX`0s˘UX.4>{\6>e dES3
pgF"7hmМf
PKnSh/    PK  C:U            A   org/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipient$1.classT]oA=mAi~ԶY0`Lb$11>-,3dw ?& xw!ν{{||1DGB
aum+ONR#=e
dv!M#@>lCrmٶ.w4ÞVS
3rl_rzuíg?J|_u,CCa=e
eUEý_Zմ/+=7muG"v3R0.< -[ۓ,H0[e3ؾ,Y{֜-"Jyj~6wlX~ ORssgvJwhݜYŷ9Ufo{rtC:Pi(al>37lb	MHU`jb`7XF)bUU3wOYsQ-&%&p	d2H"E`Pw$?F6v0v~w	2||amNed~4N~gfw&
e̒ J2PKZKH2  *  PK  C:U            ?   org/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipient.classTnA=+(*Z+P-&MDm$1^-Ônv׾&$6%|㷠\Ui㍛|s|3O !ǐx(ԏRUZ(D8s_ZTGU텳iӾu]PZ?}/$qm2-vs;Ў~`U7z\xZa1!fEnsamp\O4mm'S.z1&We(PbX=&H060m4pẙͶݵ@/ue,_1,玊?ت)TC_BvJVʪUqZ.kM*KJj53MDzK/R_4ڂNÑʭ]wJEikڗU~8q:_&I0]Rk.S.&ǥiCD
WM5&Ҙ71+"
5_u DAHvYc'
K,"pf_L}T\3S(|Lxq!;b 7
UI+.MPK~(    PK  C:U            8   org/bouncycastle/cms/jcajce/JceKeyAgreeRecipient$1.classTmS@~Z&Rj! B-0|
RBISudFM šln}vs~`!4b|dFՑCâik2/BFf;L1~=K='BDxmi9|DԬ0C]%;a[MA65#Ԕ;YAͦm;	HYS)DN)c]=!`ji%xsaxiie0ฆmD
%`O)TF"7GE躒J&L@sEVǳʿլ=sL^st-eUk$nBl	̛0}WyVsZ5gZ{M?Yr4rprqstptrtqtsp襾z1>+zlMv'(͹♍H\42Ekk5-&* Wb?~}Szgc?v-f7-t28^F32M!cWeH⫓cJ f%<Ĵż/$/^JƜ/b9C ICށC4IK+D0}D1<"M;Zћ2^cggE4Hbh;c%boX)ci!hg%$?/O1@2޴ו
/m~R~<""Z`H
rD8N5ӻ8XG"H\/PK    PK  C:U            8   org/bouncycastle/cms/jcajce/JceKeyAgreeRecipient$2.classN1ƿ¢"01E!Fc'ăNK7Kk[ăC<$3&`K
CHi3lFɊ'g#	C='BGjLZF|b\H҄;KKF蚤S=/C?Kml D1D)Di\ M"cU:^N*q9UP [AkALvebшҙ2Tڋ93rg|g@qgdwc;Oy,(X='PK
<     PK  C:U            6   org/bouncycastle/cms/jcajce/JceKeyAgreeRecipient.classY	xǕKHQOc0$lci8{mt2ȀNf#9q$$ε$&v9`Fƛv;͵gν7#{=Rg!i߫WUｪn}O|qw!aOnaL`NS5M۹)HXI+{@6qr$=0bN4C5=1XX@qi3I=a%B=ۜXhk
Gd|FZK'288̰JTIҏZV@=?DF$NZHﶒ,M7Ѝl*C6ƇPm{;w
zHmu.5
cwI3
Z1=Av3g3ߤaΜ<sw^*2o;_+Jk1dfq3>62JZ~9MdM2CǮ"iZfHg͸!3-V*٧g~iO3z5P{w5;igaPwuUҫt~kd,o=;4s/f]ZΦ3eƪaoΔmҲa<T_&5HDvC9{RIs}4[ν7-&:޷ucR]
Y|kBOE}fZ9f4♦lܮ}Jy+4hQ׽^ݧ؝﬏sy!ٓ3.5+;m> -m| wwxcY+ݥÎϴ9ugGNEA+h-LWG96g/s~ܩQ0jڶ>drbqÂ<prvm3+,L%y%EƒƄلdKOOu7ή}4iM0XCV
m|Wh63D%3Y0VBYt1ɳKd	Oo[^`a;y4%6{<eǜU^vw%$FolEtޤ~ϯgiXi	a4fk9ZyTKdo4
]>丙HxI	,H䪖j}H"/+~hъ'GERš䓢oM,\ΧG!㗤1_<3?Qvq6I8n:fb,!H92}b`qj:o6N`AO׽ mHܛgSӔiܛRw'U3y_s2HoHZC2mT ioY<3E/aaXl[鄙?|ʦgIXv5}IP$JlNz$KIKtHtJtI)K[F=$%n/q@-$K*rWHJRB8"aH%LC1ĨDR钞Rkh)vPꞗ~H}]	zDZEgBi-+wzY3{m!˚{f_ugӽV~']Steuz53{!3Js)Ȳe;mkR\ެYTN?-ۨMǔ%%%|%exRƗibnƊ%
Y WpF'!o̭lMPL|PGKt7D0;p@`{K.T.m[y56u&[l񨾈iLAڦzxN[JW"v`K7MwIsCEJtk'+z%7T44tVL
ܨʯ.KmGV4xs_EX**V<'?Ii.V%f$j3*ubD˜d̹*>
<b#&>bNgT0OP!UDH5Mk*T\E%8b!*TbRfOX)WU43l_cA'U\Ub=>"OgT02gU4s,óϩW1_`WK**+*F|M7U,ƷTh._15r*^Sq)2O~^?f?13ÿ0+ÿ1
^b!"
(x#/<(.gxCN+*#(x1V(x	ĕ
-RQpa%P.U~C (S1a	5M
ǆ_gAcXРa1!&C<ƣW?,
x>
^27?ya|D\"Pݑ?¦/];Iӑm?gucWO̯ՍwCOPGB!j\UNIDQ^)äOyju$͑I%2L}">)̳b}$XVR:vVl%ϊ(Rx)lFpсU"=Kۓb?*!!Km	q9o=##xv.c	ULZ
$sJjVāsbҪsb9S89ɉc̉1''šXh
heR\ɰtNMrXxՊ`3딤E^=-6>%yy*hՠnUcZ'8;rIPRBT^~gjyr uSx|@X) *~	hx6^)<DZENls6'bӚxқMWEhmt'$.q%)qR{|
drocX|
a5]c<XpFaCܸ&'Ds>MHv9_yx?'jٯxn%=Ug{uoZ+zZl	r;iAf<KybanaTPz^j><9q_hpNa{N"
M6&'F):b
'\hF4쉅gWR7,鏗ꡁUZ5_SP)ԪQs39<˥"Bu
;sx)/P?""Z:N<.GۃyT:<3Vq<.G:.%dnȼD'׿yƁ%T?MW}RkmKO.'")Y?D?gy	{T.'hy7D?gqs Pd)\
NڦFJ17Nߚx:k)<B3b>@O3bNmg!OJq!48oPK-Jk
  r%  PK  C:U            8   org/bouncycastle/cms/jcajce/JceKeyAgreeRecipientId.class]K1Z?]EPŶJ"xcݬd2T??(vIy$' @\>|oaB՝#:fS&<Kӌ=g6'%P/jd9:U2%9R7o|5Zy-
2,X-:.NfuWԷHԮޠ;ͺJS#L,3d}Z6jj5 0P0d\_UV|-Ԭ\UM\jy_r-XX~F\1#Xl"wMҾZa#<a< &BDT<1!Jx?/9NJ[MHe;:+0naſf1oPKY~ϒ    PK  C:U            C   org/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator.classY	xSוk?=1A 0`5esȒ'Ni4m6$mh2mK8IfMf:uisޓgI;{s9s}O|W ljMX^XYwcm-&=d[)P|Nja`|hFp>T1$`8֣IãF,֒zs*<ףzBKϤ{P@"`D4v*9OyOЌG?t4qNgbHzt'=GIԒ Ì%&$x\x_PFcIOH'ȣǏ
	Z5k6 s4'"JY1q=AjL،0zEGᓤ^}Ģ+O;z@SL>_zä^B꒰r#%(PlfK`p48a8]yw!Ljfiv[}e7̏Zʍ
&!As N:
LUy7(%XHm .n )
cRODC~Sɉ1UM	ZgI߫[!04v~u"a	<gihbu9JA:뒚cz$J
FwŌmn>n$b="~6|ui>+1K.vSsܐFUavx	JT
4lwMǵ7?p,Pzm+fGybd8bW3=:s1VFپmps5s\Q05Ν1)eC1
MɠHz{$ڌZM5G6lq	>ڊd8I$A;xv0afżB3ZPOYjzB'K{bTP3ݫNot6a:ͭj-7v@!R˯+&eդX9IjuFq7G0?I,K]y_Kݠ|U[Xz6̃v6fKcҡJpQOP(J\RIz%|!ܶ}^O
^bYNSr&!%n2'{4=s^V .$VڊA8HlX֧&#tXjt^N^vژ'H,㸹uxlĜS,KqǤͮ]U,r`3/IW/̎/X\[h_Ms?3旬RyX	+8f9DV }4(a+ao0Ư'}}vhMbveO=;^aުꓱs6˝7MFp$cݼP;
,*BJK(Td$[b@b^A!a}#%H%J8,qD" qĝwI-1*n	MbL"(%JKK8!J$h{$DRbR)SJGttujԝ&݅ݢe408DCS^Ʋ<NUyyA<M-mK}sx5VX³i_W45έr-Ů+M4;{#!%jEpoqfAaй O
׻+m,\
"oZUjm,iC]wK򘉰ulOo8ܛDLzp"K[}
\égZRaQ]P:,uC"lי-Ҿ	R\;'dQݴ]6d}SeN[SZoWv=dz#aZNPN[ʂ,HLT*LCp\,Ƴ@L'ʭb!ƔǲRI"0VF;]N~Bu~5?PNvղSdzw>\|wWkԕGB-LG[ZB-vxDisߒU|רhƫ*>_VAWU>&7ULd~CMxMx]ŇX
>*6`war=UxcKTopTt*0(mķT<]>&=>O
/~OE~PE/~ɭLv1YW!w3hşqϙWLZj*6T߫X`?jb'YVwU*:O&b[:_?/ɤI]&:(D0`RɤI5&.&*E
Έk<$\d
>%2yiZgLީQX1~z\brOLQ$Ckn&^_K<%<-)8/60TWp'eȳV_˙Cs&7*d@b%.{\-LZ1ig./.f&ۘt3ɤW!43٭`%GA.3f/~{E,c#bgb&
LV0ƅ/.$6K&XͿARK>ϋ !Tee[53[)3[J5%QQ날yB]?`k[ǌ ?Jf	iq|Z}<D@O'֎iom,>6- ' "rRim,#YjԘT--Ɋ|-odKֶiq[p-~
Љ*%q0i19#T4x-%f{&
*9SO6bޘtZ^RR;޶$UD#KO
Ţ4V_m%ޟ*3x6%ꫩ"Eskx&9#UP<|]#g`&@nƍ}\΢8NkF<]̈S3x9V1E^RęAw%/%YUV	͜>Μ-p~!2ʔ]wĝ^Ou*BujRazpD<%"E&z-v.aqCw׸IˁKbs)qܽ;R8kwC,p7OD-ੀ{IH'cLj"qn0	iq*%b0SװJJhԒJZ\Hmr~k"y Tb6[P
=CoӁ\+s_9I:OJ<"q]zUtVKԙg'$ OqM۔J٥}xLO
T3yl\ְ0mJbJ|f
k3x6bŀEsXd;vKrvGrfe?@aos=*DWI7pM
duHc\p輎Tu*omfO#J?g[ql=3A	_JoF|Y)HC*wUGc]JۊP%8-_gn%Vµa/@fQPcQ6;ji\ʼ,t8e&(X~PKxe@  K(  PK  C:U            E   org/bouncycastle/cms/jcajce/JceKeyTransAuthEnvelopedRecipient$1.classTNA=Ck~ jv).0UIiA!$jLn6SOF	2iӰΝ{g??~x'|#C<_]cHp^1u{0QR\0LPbCr!Cwq[.["ʧTpno5^A9rx<a;txGG.r[5V/U[fx}9sF"׷+n!SvW^/W	Zᆹ%_*j.;yח}рWL&z+.{İ'r>|pdda&_>mUϢNjP}jWjh|ӹ(2,_sfF*2@
_l߇_21)̚
10=;rI ,&1Gc羳xů	I:%TïяkCJT<"<pTJ7(N$Bwti6)fc,XcX1
	ߠ/F#E9ﰾF,QP?a
'x|ffP4OPtQW<s~5B4dнj#PK}ppr    PK  C:U            M   org/bouncycastle/cms/jcajce/JceKeyTransAuthEnvelopedRecipient$AADStream.classQNAVm+
Thbx764
mxv8%0ٝ}Ic| Ms&s3g;wx]l}Lw,[m̲x@Ȝ&Gj߿ :'#IB%P:JW?GǑ<*j5	-LK?0K>JDWI3սcuI0ZRZÓk}4³llm86\JFч3KXtabsd(b݈
l:XK#jas"v=T9F3Û4ɘ5|@Mnrcx	ΚŸԸFe\b򌞙ӫD.2qj܌>~5"VPKXO    PK  C:U            C   org/bouncycastle/cms/jcajce/JceKeyTransAuthEnvelopedRecipient.classTnA=ʺԪh|5Sa#51&_0OFS >.TbƔ4qɽ{̝?}p]˶}JcH	OJVު*!z*G+-^JaSBf9}[髮PHWYͰ	!0;Bm{ +5SW!I+ϴJ_gVbxt<JPt=#2͂55hNjHh5`0v2jvcLK,5/<k@rs6:W5*#	C޼+ݖCYڽzʰ[a^ۇCoW%R$>m"R<=P/|-` Ùs@L':4d^֑U)\bHѪӔmK5}_Px
9%k|a/Cț<.fֶȤ=\ߊcqw|1>Or4ĳ@3%X&%7PKdp  g  PK  C:U            E   org/bouncycastle/cms/jcajce/JceKeyTransAuthenticatedRecipient$1.classTmOA~*^^|/"FAKHԘ>-۵k74HGg^r3s;>3|`ә7tf9	QE6ܢ8tSr92 ,9^ZaT+H~0J+/p*UdO2?˽wPB5m*ʷthUO+mqeBυ_7i	d|7Oh'{s-`YnqWTFKG^{&=8aUrTa∻){R0kO+n@Rш
0
l`@a$`UJR	Ia8$h1oC/gf6B[C:i?eH3
_[Mt+K})cvAAӝocM}:oJO>ѴC[M(fLa\51k&LХZLv"EF+118&4pRѴ\2u0)	?@EHE(]zn>YV:Xu,[udX9+F͘!Lg>cc݃[MU݉SLz'w%
dR7yI̝ b
hs^k$cd	<	PKgE  5  PK  C:U            C   org/bouncycastle/cms/jcajce/JceKeyTransAuthenticatedRecipient.classSn@=5NIK((%q JDe\۲7!
P#QZQZZg̙3_peCwc||\y
2RBw]Hrb1L7~zEB\
&}ٓ"֞r'Tva.BS-)ZR TgB/T$m$x+ư2Óc0L23a31n2q6bK3嵖+َ\#CReZ>L5SO?Ex5*H%	?PHexw=*>u˨ 鏘?HOG$KQzhLML`8m8g'qAB-L`"Z%45c{UTD%JDdкEs|,.7r;|.n,w\+]{oTF1>p2)- PKcI    PK  C:U            A   org/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipient$1.classTMo@}5
n@Z(-4S*	BE !!N[gI93W~HD@cǪ@1%όvۙy^*C֪bJW?dX
սA#vߺ"`(P-cBʴ\8׊p>rkvUеԱtF'lg}a?uľPxm̭0ԧ	Uv{"e$k
D8ȏǜ=74ֆܫ8Jj*'㼫䙄$\p'
03` ϰ|)vbONj24ܱO7vOD4o"]:{ɺ	j*v:<U\cYmSV3<N>tkXE&&cD,2MkGkyp!RDS+τٖR-N. [,Fe T3Tn,6Eȗk[cܬجmQ;E#$yF~	t*_PzESܚ2C6%hQ'J1PK$[    PK  C:U            ?   org/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipient.classTMo@}R>%MSm#
B)E 
eܵeoBrʏ	5(؁XZg͛7;7 wQfwc0䥧r}0F5FކDނ@Hh<Q2/t|p(V%/h^Wˁq!o<Kˉ2Hёor=_o-bG*2:29vư>a8Bւeᴅ3)+3,w;'xd7p̀?!%bX+Ib~lѩ|2cuonۣ,sHô7VNH2>YI䞖|D磒&=ߩE$j6C
s9PGҸ)\K38<8k6
ncW
qc*h"U"zRDHih,5Gvleu1!]P4+յ#LWF1]=Bi3s1
j13!n~i'm
~PKyמ    PK  C:U            6   org/bouncycastle/cms/jcajce/JceKeyTransRecipient.classY	`}z}#lM\CSXV,%u26z7mzߤI4qnӻMN46MBgV%ke,?3f/gZt2o~
5ʽXAOzc{s(6h	LÆi7C=e4hDA~iD#3Ln46,34YͩP|SSTZ!hF7M	Li5wiq2aѫ1+,HEN}dkZ['MX:RiM$퉣ᐞCH1	L2l O
`Y]ShHvܥu
њ#z4`pDS/f횩uwfNZip8-EtZF=6-͋$4oO5H<5-2L
& $E{EH]Z
[7ԯ]xM1nF*:N-ścŷK	8QNZk9WGGf$5&B 7Şzg9ͨS_jcz爵H	+]maZK֫a͔3goCԗ9<j9pSVۢ*NM]~76j}Gާkq+lxб> 	:~gԺ1lHYʊΦņn,{֬_Eٌ<f94^,K˞FHɖȱ(	;kjIe<Oz(wz#q];sez41-Q]h͖Br#=F8J%nfiUIHF(kh"=!:R0;e"u˕7L
JU~3SRuR-v_r6e7-i9@.
\
L5-ӎ}QӍ6HjkqrٯC-eb"%HPiG#_q
zN5aV8`OjI#mD*zk$JZb~M%H4H4J4Ilh&]bDu;%Z%$vIhx-&25deyk*~Hfud+ KB*_{;sSg,h)y{h%E-%I.uɶD6ntC*UQk*Wk^wkJ(ɴԵrc.H!Z.o˼y[JcXWCۑC-5Cbyv|Йw[1_]569OP.dգՆvgL߄E3MeCם48ŽDM;9r9ZrRjV"w:qݢI[78m+٪"ufQwLh
G
;Ƃy"3?[0P8ds?7=^oW/7B%*f*2xZ	*jPb|T\ QB[ŵxx$^j>Fpx+Vu<zW*ML{NަbޮbޡB;U UL*TLŻUT=*f*}W1	P1T1RV1a
>b/>b1>b?>b">[D2p

4(SEcOA'N?SƏ~+(U7k/y3|[)2<oz0'`%F|YM[أ[]2Aqp*0U3
WS4߁fɵ	k/t-iH	o \c:YIrA4jB9i ௵C~<Q[{7ǟi&9ڲ~\;'*؝T$`~ZٍubmgbgbEi9(`"<^|P,.Á,߁U3I9W\]xKgZGǣ9J8)Qr\BEfPUz^Di<~Ǖ𗳯<n{:=4I ?reSAǆp6a@N)OGO]SO'?%PL+Ez*p-U\WyOU0<{NgI<yEۤSRmH,z&wk@m+ٶNGb4(܁BA=+NoW
<n
fN{P,@I1eL򸖯HI1ޅӨاISiƓ6MSp/"W_~%,zjU)|K$I\O´y[2{PKyn	  ^  PK  C:U            8   org/bouncycastle/cms/jcajce/JceKeyTransRecipientId.class]OPU"w`]t 3Dx1`u=%[
,^xk2>Mft&y^isl0A!0-ޱ;s]%Ot!C(	ɐ E;SАݰӔ~$lPoeFRKm~@wT&*8eX!C>d?]e7'zʕ6!;$gGN`SA>驨h[vuA9n2l[nj5d5&4L2̛`N
VVS%2êYzRG.mzTk3);55*ʖYOϗ:5lSvײ'\Hʰx

hcd0o`#8Hᑎ),DfI4븅':f̲X1!TCgh(.}t%iqEH:G֦h1VfV}<=ڷwc:G!k({13Gif(G}P<#?i8;P:HȦ2PK    PK  C:U            C   org/bouncycastle/cms/jcajce/JceKeyTransRecipientInfoGenerator.classUkO`=AeLME@2aA\t(NHu/.m/%MK$1~G
ssާ~05K+ifoYM}Ŋ䌲SfeFibu]5R^?PY]h
	fZN]-egX,yò
̌35%/R8UɨL~*gj0)QZ۶[jyg<g:3 rM[]&11tZc*<c1;MԽt+nƾ,*hD|&a.PSY/YODVk"LozcQ@hrtǂ<oN0z.a⬾֜80=->9K
QpU܇z:1p6Z;'*YEO4~45O#zjUT+l/.x.U&^_|PGv_ToU{cԻ F M[n@??0 1^ ~L!?S~tA8Lы0aC|kF>~3la\mTPIh#`8|#tJ%<>|	ϖJx͑#qc1Z'fհxhh~8ڎī}+bq"Õr%Ę:"!%,{ 탕<Sĭ׎n&o^_	uy#޼x~w<E예PKX  	  PK  C:U            E   org/bouncycastle/cms/jcajce/JcePasswordAuthenticatedRecipient$1.classTmOA~*^^|/"FA!ML^s5w[¯
M$QkC3폟߾XCt
C,[gzxz`M.hA5*l奧wKZ7v`'cZ0+)CqepShr`P#[ղ(c?(~UCJ[vIs!_0|*jZ+?ۍaS9)C#ډ(^u	7

[/svϤ'G;N2r7%|OAJz6^sţP ^>
H0mGc XTmBysnC/g-gWBVCi?eH3u[Mt3K})mVAg9A7ocMCﭷKϠ鏤> ּCcZ0L኉A\51k&:LСZLv"EF+181$np
;R<Ѽ7\*VNF0X"HHH%M/ۉiB'kʄ5[kEk5!gc3u3@L,~jpអ;qɷBoNDL6O0c=EDnl׭_\Gt`dc8a PKN^}  7  PK  C:U            C   org/bouncycastle/cms/jcajce/JcePasswordAuthenticatedRecipient.classTjA&v]ke֚i@A[/kjKB8
۝;KP, >x6"
gϜw.svWe=C<cFy:4*4[BJL$Qd3Ua[%ON	#Bi/El~̽Ta!':hKjF<Noz#]ӢT)~ưtJQ¤)昝0TK'(9]'
i%~=\zW|h$m~)ŸZy-쒹iw{\FI?uu
>4J]_dO &׬.:8Kxe
3pmL㚍axF7mp!bGulQ1R@P!1%@	 _3e&GEZYw3[Vᖛ;{us!QݣM<?7PKڳ    PK  C:U            A   org/bouncycastle/cms/jcajce/JcePasswordEnvelopedRecipient$1.classTMo@}5
n@Z(-4S*Zzr%ٵmh- UB<3yogy߾
YaB?fXr@ޠR7J_;2-|8Zw9kUеԱtO]'Ah]r˟;aV]9y|[?s+[	vn	ǃ_F&*ˎqO񘳺'JaexWIM%weJKHEqA3,E㭓nPn'v'"JsjUd݊ۏIf5ua3*At.Y1Ҵ)]a);;)GNcMlDE,ȀE檉\C#s#27(`%n1Zz*uOu̶<hy%J.![,Fe T3T,,.Eȗk#ܮGXmV;C#.,%yF~	tW2_PzA32G6hQ'J1PKO    PK  C:U            ?   org/bouncycastle/cms/jcajce/JcePasswordEnvelopedRecipient.classT[kA&v]kKGkM)Ӏ
mDۂJiɆtwٝw4`&%/.ٙ3m.?}JR]y`<|O?cXZ]/la^t$>Pd֯Ta%#^"B-	J1}e_XwG1w_
˩<ؖ-U'Uc[h,/q1c8*CK	c	y&,L)+2$g-5?mھ~Hj5~
^~ofyuTkPbLoշVvXX.<GJ)l:~OUmX1mdp9\IԫGnX[7-pB2nPvUv*F(y$
4pVX:Dлk؟?Z^+dNpo3|ÝB|qSr w},dE4h
-
PKc7    PK  C:U            6   org/bouncycastle/cms/jcajce/JcePasswordRecipient.classViSG}%G!!m!#`Bla	rr
AZJF_SKP|ϏJҳ2FGʦDN{===S?	

DS \MTRA0VICWL)P%]b2
z8bybF8fIdnsY	wϴMQWp;s(8"=q/-h}YM糶cz-
)
[jŅF" 
rOxC%<5s݇CNU"Ř9E~B9
\PpČ<ݵ
t)9M|Fr3E
lpX>]ns2)ۆ H<euRc#i+8݌i䭆NX/szya05wFk;He<)<,Y۠q#F:h"-H.dlKnm7&yT0ƌXgż7<ޭzNY{..c#.x'ʒcL&Vhjjzrh[PzHOO+*N8ⴊ~*^UUQqV9Q*b
F1q:̽fNнzhh<kq;Va2jChw)M&:}-g`"jb^E%Xg_dUٚLKwު}	Jt}ɿ{#L\wS(ɅI칖Yz,qWn=+ZQy1n$tq@G/+(:Iq\
C0fbNǋ)qt¼ݖbQ;:FpWXqoA\})H1hiPz_ޕbC$V5\p	iwk"!5)֥pj!vF>TG>N㛋pOEk
 d!%sE:` VE!xJ_Vcرǰ~:$Qp|@oP}>oHO8$?\%{+f*|;>*B+Ñ`*ʑP#HOGSiqGǔ
\	HWDBU|y3+V>_T\W1FP?z} 2>|U^KDe(it[w4O[5?PK
    PK  C:U            C   org/bouncycastle/cms/jcajce/JcePasswordRecipientInfoGenerator.classVkWUI.L֖R6h)!<@*	Ц%11L.aB3C _P%kwz$@C!gcs?w Cd	|tL?ia}	mb-%PfFBݼynEyKt4-7T-;NHLn]*eyi&$ns"/'ƣgkK&icX%ݹ|ֲ
wkG9&LLK#{&4^lmcUwKxMr-	/%䴢53&]0]#ގ]:>L'k}{IXk獥ƍPW&G%i.z#δKz~Ϊ֮tq\3%WU?$6OQPM38j|9M1kYvfF 	sӪF̵HxSVNr:WTjͅ}a-CiVg5W;d;A̱+LQVѠbj`h`+:3t:
5:p,100dx3exᆄ<K8<trwqU)vׇͬzOȀOhyN6\q=~"Dgp5Mx^N5͋ZI~^Y9xY2j}6Ğ&|.bK^<H]L)uUCNt#^VYq%vi^#TںZR)SЅ~)v1)8Yo
1 w bK@ĔTub^XTЁ
.ࡂH(8G
NLaU5|(S!4CHB1ú\Fi!2&L%R5τ\
!22n㙌i|BM8ne!]$H>k^AhOv#C#LV
J obFC5tjo#RmH	$"Y^Wد_x`cG:7'(#e|522`4EWe|Y5PSA

@frEaTFNloӷ#`:x@=}
4)( aF9-?PK    PK  C:U            6   org/bouncycastle/cms/jcajce/KeyMaterialGenerator.classeA
0E'ZVJEĕERt5cLHHث J+ S%Y(_ox@A+$yKwXC\T5 S?ce0Rfɂt^suRYЃڱ~oPK      PK  C:U            6   org/bouncycastle/cms/jcajce/NamedJcaJceExtHelper.classUmOP~.UJ7^d*74 $TLw٥k[l8#?ee2פ<9ܓ? l` H7u1$385^.&A\f][g;V&kǴ.%.ɚ:UVq2e՝vCgt݆'^觴jka`}ZiYg!zts/Ym"L8-;$%H.H K i5K&R`&M$x;lmM"6g6-d	^FvG"Q!mm{4*UR5.TX`I4qo`fLh=X	k_:qaس9+P0`Vx9<sUE\ȕ2nɸ2"XŒgʘ²g2q3	ЎUX"xWTd>L!M?(Ϧ!?FU*J_~/#1c>~JWb6%ӡpç)"ǘ>Q_kCﵡ
PK-m8    PK  C:U            9   org/bouncycastle/cms/jcajce/ProviderJcaJceExtHelper.classUOP=
eLDAMcD9_]vi6hb2޲nak{_{9n~54S	^g5]h0D-h4e!m^au-Z֪uGˎVzm;K0${vų|.JǢ{U3
>ǨR
ghmcǢŝ	uev g^gqa'#



vzM!'-`uAوw1dc鎙WֵҡEaJAz$B^
P``\LqQ5vOs٢VSܑbOŎ3Iuty#ߑ}^Cj!ᚻqM5CYpඊ˸",枊I,&b
w]gl[y"Il~+UzP!DW0nyN@2{țd7$_B#~@ZҦpӣy)G:VOZPPK.    PK  C:U            =   org/bouncycastle/cms/jcajce/RFC5753KeyMaterialGenerator.classSkOA=-Sky?(݂ JkLl)hB4le2,_Z#~Gw)BD7;wΜsΝ?}`:"Gp3tVZ7/7&>hʄ/9n6v~Gj2YQG$Jf++JhT'a)*mY3#tuvJGeC0z.;UiKl|r+g|}bCJK9>8m[BV.	_VJz׻Up]޺+wPHmԮ
vmZ'x׬G$˅t&=rEydk>CxsD8:989z8z98981&[݄ןI[r*$d&Ӽ\i?wh!PCxLpIw40Ϣc*Q$kƊb3E)Pz&jAsE`OF?mMEzid2u/)ƷǿUl(cu
"u^ՑXc7&a	{cS4  PK)C	N  8  PK  C:U            0   org/bouncycastle/cms/jcajce/ZlibCompressor.classROA-`hQPD]`L4@BR޶rlsmWSG&`h7.377;;yÊacA-XPٓ(47+[}UPYf==JW~"q(:]XQ(:t_|Tב*WcPtL_H	ƾ89-Nr{$yzKE7@HwOTdW&o,8p<t`ֺN1MGw}DݻkPF=o{dh5>EP]=w˹{V]E/\TF4Wai^(S@V1'i;Ek"UBF83&Mk$!!* 'T+j*(>/PK    PK  C:U            8   org/bouncycastle/cms/jcajce/ZlibExpanderProvider$1.classT]kA=ӯmM&~F7	A"B	}HIPէ4
R'*X"&6CJ{w{93??~x
l.atzɠsA)Jkp|:-\%(Qw@]~Mchu6_¢бIJc͖wZ-(GV/0Z|i_މCAi)2CmjRCD/|<hUZu$?N_AӰ!ApC!N.4&-;fĩTɅI5;"ZqxnG\%^Nnz}?4F?v3#ֹ5I-U	253`aXmk`bXF6u,㡎HcK*2s5=r@Pf0+Ã@k?P7l2ˠ_fP@oRGYzfpOhv!(l#W(#[ `aa؎{
ٳQzF]*
d/:Фwl>A0@Y<).Ɩ$	yJsdc4KX%/PKl9    PK  C:U            I   org/bouncycastle/cms/jcajce/ZlibExpanderProvider$LimitedInputStream.classRoQ,,lV@A[ML/6Ě`jTaYdqeh/^$?ɨqc^2}3o|3y~}d9n"Pp˴MaHn7x#S?x2ۦc6ZK%)7-j6COMUt,՝mz׳xhwK-Co23-C[^?<f7v}a9&(N]i]vSFHFX"cI*# Uya50L\9$gvS(T"
TO
	+¬d	W 0DiHgPN2nһ]N4hy/GzГoa%[!._*'\Ȍ LH=qJ>7
%c}+yxa
>gh{16կӇ
;<QiIW#H	52x0ƕ')O!#$؛MI)4ì8Ft*IpS*hI[HB>8P~PK|z1    PK  C:U            6   org/bouncycastle/cms/jcajce/ZlibExpanderProvider.class]K0߸n6"U܅L^LAP.Ό.meGs8A)9m!M,1r'~Vg0 Xmu+uЯ5^s t%w;H~uS|(3l+YYg(-:ղn^ǡ/ExMyix@ʀi`ȀPQqvWC׫^{5We\:T*ZuP
~ߜ$b`0B&F0e"iU%*/"d=,tf#WqɚyԀoc6?G#RT(j3Hs_Lxb9ͯ1w!$2#?`k@c&2,5PKj  N  PK
    )D:U               org/bouncycastle/dvcs/PK  C:U            .   org/bouncycastle/dvcs/CCPDRequestBuilder.class{KPƟj~E-XAAaхsΓjL[U$P9C$lg;ߞy.RD2O=4LD2,AO5KCM5F}v--Gjr./~ҘaBAjL#X rԮ:W(A1"}3@5g5VDĎ*j	q2x؆*ƬNٮ\JJ$J K藠pjN]KD^>PFē:)B<>i륏O+RSƸ&mR nZAf09XÒa,ż1,*[`3W[mbOް@WJyOϑO
h`:M%F_PKX),    PK  C:U            +   org/bouncycastle/dvcs/CCPDRequestData.classk@ǿev1uvfL
`/5Fe
K?JKlڲ@{;xAn,I,yϿ!l"w<DZc:V[b꥙y|KlK		vHlYvaL>wH^(#6S?t;[Dl8Mޞ|+0!7ge`j`ـIؿ6AF$r;Rq>}cɫd^ylhmVM((⎞j&PnESTbU<RKCuW3d6}*\T,H18cXrզ%TЫUIT;gx|(_rJhЅr<]!Wjք)rє2ӯ) PK+  S  PK  C:U            -   org/bouncycastle/dvcs/CPDRequestBuilder.class_KPƟr?̌4
FE`u!HWsb`mS[U		}>T9{a|{-f0)u0
%ڮF!\syR-}֬wtq\sOuG%< [˾\2B	R=2ۆί;Mΐ6MM
':o
$	Sd	*>vȓySn^NtG~"_޾(8B
UOLsbW0 "XB\F2X
Ch)Qy$ J`ؤ83Z#BuEҭ|~z	!\ubhPKVb    PK  C:U            *   org/bouncycastle/dvcs/CPDRequestData.classQ[kA&f6n4]
֪	Ow$RQGg6!t`809~>C+~A&A=WJHNi-bxyFJ&ǉ,:ϺV$,x*JfZN U(t>=+='ḭMaDHg0;s'K$YT#,kq8;:pgh>C?|#&"4gە~_C-Lb.*(XC
.llKqW9.:
G8qV"_|
3B=b0Thg&JhQIDMq=Es)PLJ9MlF'~
u6ŭp`
byVaUN0PKAꁵ    PK  C:U            5   org/bouncycastle/dvcs/DVCSConstructionException.classuN;N@}86			F4t&8H8 2F]^p@Mp|ޛ7w Iw9JgO(|J>MYbtlU&
հ*$|{9mwF/BB{\	󙳅ώS~Q̕$q:lwA}?1oڥBUآ6H|6<ʻ<MM{ȇD=A<^chfo-2 'k~PK   `  PK  C:U            )   org/bouncycastle/dvcs/DVCSException.classuPMN@(RĝqC+I7jwhCԚfj)-<GDcx(bd#24;c"^k>^eEF%d8؛f#^TxyTx0B	OC/Oǚ5zԡh2ʳ[>MO`E<O]XkuBu&:h2`dP\>9NWPP_'bTۄlkt67X}kЮtw
ԭ"~d|PKQ    PK  C:U            '   org/bouncycastle/dvcs/DVCSMessage.classJ@4iXk[Pp]YTN!Δ&V
o JWw0o/ `;Q옡,ΔzzdXe2`|׋b\1$fb>4Z.H"].oR,n⢹L _4rPt8(1잯zHd{ҿii"1("%EԜ5-:|0k(Ŧ5;4['g
J45H`{/AHKOغNz> PKnٶ    PK  C:U            0   org/bouncycastle/dvcs/DVCSParsingException.classuNA,쌍.&;b A:f2cfԆ'MH,| xA
d9߽)2*3+J>S<-xZxϳS!!)WN	K2^IeЙ%$2^ߋZQNgW;gHK`/Fkh,Bٱdhf LȅHcl"E5"M}D9Nsl:BH[? PK^c2   [  PK  C:U            '   org/bouncycastle/dvcs/DVCSRequest.classVwU-}0l%M"RIDN0NBfZ
}\@E\q&*W&zLf|o}߽彙O @`J_kA	U]7aoyww-:7mݴ׌^3Տ-a>S^;MIKjBW}13~ZzrЈt*B`nr1&j"j$&j̒ Gu;	&dL A0ڲ$
閥FiRC=ۖk7W+H7]b
@	i3rm6-
QbC}sncG15Sh`IMONIv0]F,ב@
RQēp|Nie 5-ܷp$K5;;eȜ?wc9h%i#V pJF#nE4+Ώj*];;-1ħ-%
wyy@q@yӏY\ZcLLD Y%x|0]94ԏq1bƘ>)	;Q&In[
4,hX&\`J@_M]`j	/N`韕N	݉`D]YH7YH:_koBz_`!?sZÄDKӸ,H˛Nvl[Kh-i4"Rf%
+QCN6La-y&1Ic'ׯءzR#NYp):ffDsO̪b}\EY#	Myӝd/;˶{\u܅v7݅r`	(~<alyث`
Q 0C"T+h&<`>SP!`ZP +xAࠂ{?RP'IUp/aF,h
q1`25؍qщQO1*cl[pZCcx]6<.<2+oi;pVN N1&c^9A/,32BLٙ،3:/0}y
۪v,&L&vѷy%*"TwF*ՠ4J&+hp5˿u&H#ht$d4"RfBpVJ$;nH[/b; _UefɄ%ĺ9)\lO}R=nowR"_q&Rys
7)\оLq3x/7Ÿ0n6#4Ÿ0lƎ)Ʒ);Jyc
9)Tq'$-}8Kc?蔚礞!l35FC/|ab"'d27\PKv=~  
  PK  C:U            .   org/bouncycastle/dvcs/DVCSRequestBuilder.classVWd~e1(cVeZҖtFY0)cTK+I:hϑs{(=-&}Ͽ6-35ຄK,HPRi~g96JE%	]ULgm6HctRB
seUx>#caWWBBb
 <O72`6,GsK-o~⿒peG5KAzۦ#xDU]6g8qAG6m2t/MIYǦ:H8W3<3#Kd`mY$cǝ9wW":tj֘LAPjXL[M6v#E54jJʞنeCiJQv5WKL	B{2ze\'㊌~2ޗqU5	H.EI?`201DԉT`RNH"jypP\qw,2nKrgJeǙ3akˋًCadAҧ4+ۮYsY=;ϯۧov~
:4<?:s@kgͩ聦CLP0bCŻT37>maJU;*>]Vq!0_	.[gx_U`&[ecW0##!VbUA
+7KOcXf(*H43)Ȱ.
,}s۷Ƌ^Yņ(E'3$qsvjb<eAg2]OC(9+!9k< ;`=SCBXǔHyBEPv)#lP8Ѐ,S_$x
o"vjFT#5	Uetd߀O)q<<􄶬GaW\]!RkAd0
FZ:߃kMqPKKNL  [
  PK  C:U            +   org/bouncycastle/dvcs/DVCSRequestData.classjPh4Mٸ*$"tW).B_o.HBRpCIvu|s`|11٤Di${)v2]V+CeZ2U%"٫BY_K]y14Z#ʔv`; YK
>
b5<X\8fYw~ ׿;t곷X7p/LX;jPK:0I   X  PK  C:U            +   org/bouncycastle/dvcs/DVCSRequestInfo.classVSUmaYmŀ-H[(b#Z64mM77W_j}3~K?oexR4=sf ANH§$BX;*<)/mEuӲYLWy-#EϤ
S8R.a3-AOhfʠhp}G&To6MdX"qG,]i,q5A^i64+3Z
s<=MfNhnQ#x 	cg'(
#'Y^TVԲO®Ti^TY!/Km:7O[6Tƭs0e^hg },7fXՍpڣSg
]HRV%6St&ɡ:iM
SqS)V-;^е1-g'z(}e{䌞qIi͍q}ָw`ݓ
⒧cLUgP(r2\ױLmkjfaqz>y]mOa
rk'akԦ2F:YakNbPi2el2v)#$#,#"#*c.ˈI=K+aShdyo
Gѷ˚L-%"嚻Ut.6hnsFBk3nϪkgjZޙ#wfftčzwv&oN/gdeUo[َ
ۺw)p_qJoT[ѻFZ&xT<OE*QfQC*`؊gTt2lİM.<as#*1c*ZqTzS Cx'THP0^P8
)>h9qeTЋI)2&Őe+i+Ph40Wp*bZIw]op#~nTˎs))de84kyoHDu4G`8tʛGQ<f#0StyF@Wyf*gnA6qxp1\">.\^&_̸?|4wWFHs">xgMy|>/rn'oa<.HEI4Ʈy|jɽx3JIo4kJȤT~2ӏz"a2SlNsRM7ݒ﹌zz?~c,Ru4`h`~?"IU.<
W*$_|B|}Xx˛bc-#a_-kg;-2z̟萱ёޡv{Y?+{6QPK'Y  <  PK  C:U            (   org/bouncycastle/dvcs/DVCSResponse.classUmWG~ˢ
$ }X-ZK!.4;_M|9GOG 	,srg=}g .^;`hMgVҙG.2PWfBTr3elnϮθMC	+oBKzƤM4X'Z	ŏe^̼P;G"QxisNHq:CNDϓAΒ"_Ժe\qb)pw~DQd8Ոt9(0FXG ݄s]B_w͐MF-ml	OAhu
%\PH G݆qn¯3~0"Gz)!7T+36W@LPJeOYM؝wLZ~FĭZ.Q]1c^'
8e-
m5p C&+t<t&CT}8L_ER$p&օcXC^8HXh¨7Ejkfp]ԩCuo\d})$'B7&,t})Z86sڤpB'>`#6>`]YmRЎK鲅g|ށ\8MbfB%kØ憉fD41
LKmphb'}fB_Ev/κ\Ž{9^\ևDSТVzNa䝡֞Hy*Xb!/eղ&w~X+2;RxeJ[zXy/;+w/c9CkU|RhThTC?!G2l}HGTMHVWM+5+PK  C  PK  C:U            *   org/bouncycastle/dvcs/MessageImprint.classN@ri]TY
	PF.B%(+xI\Pi
7dsNf? c ZTAl{V=xtĻmF	5>3]!sahܳ=-۳;:ԱJmy8uV+`מQKqpǞzc&!&!.!A[U _N^Q/	Ԣ:VU2$,AdD! l)䒐<Jåu.hkĕu<]eMA	$2!㳄gQ{F1,9r9ԵTrPxz4:
D<b[q-WAPKj  Y  PK  C:U            1   org/bouncycastle/dvcs/MessageImprintBuilder.classT[SP@"4`PDiA4=`H2)mGwL+/{s׷ CFdň'Z4VXAEEǕ!g9yE~a Ś8<N'S8Jz"dlEPۢc#2߼]˛g6{һ=6tQ哒$1f/z
M+fͳř%J.u܉뻩֓Q_>7щb {v¯~!^u-W/봶S
WpKA*SЯ'feQOf#5Khpu(iߜ
^wDLI"Ff,?mԏ~B Q^Sp*ZѤ]N4k
]ԠaJà*J#)
mI-ށqLSYØWqUTłT≊1,0#ŜI9z72tm~ɖSaW&VDI!k&:h,*xH tD?c+^1dV%$ΡctzMs(e$X9!FxJXt2^Fu8L[BVPK(  >  PK  C:U            6   org/bouncycastle/dvcs/SignedDVCSMessageGenerator.classTkOA=,CP| Z>mE-m!B,!A>mXvqw_i%(㝅JK#_fs3w??~E!00xb{޴Loa`תe{nvG7
?Ը16]Ӱά0tkf6my"TY.h..}gàjwN411Բ]^ke\u'U昻g*ڂw]P,5I::w]/_xq:C<x+8Y]UIBSTQ(0(
dS>YÀgS	$J$aH°Hpazg2WY2<d<JzD1y"0EL"x圖m;@')
oۨmAbېq)
RЇ;
zqWI+R
dL Pe!-ceDPFdBFzq7KZ4}Q[m1dw!IsF,'(/464ϧ;W ɯ;&$tC̷,1R0iܠyWEr(PKz    PK  C:U            '   org/bouncycastle/dvcs/TargetChain.classJ@ƿi?Rfx=TznR6|+EP<z9Fv.	Y
$zÍi.Ww5L>Wv芷VwRpW}m6D'D@[֕pͦ9rA8Mҽd<]h qGμ\[o?8$%:7+@w2#Q
1PK5w   s  PK  C:U            .   org/bouncycastle/dvcs/VPKCRequestBuilder.classTSXnFb-("h@EѪ+֪h}_izhM4IؿQ;lGǟb6L{rr}}Il(l.tݹϹނQrl~P;Fy- XɈY&$sM]q}~˓f /ewU_Q
1yr#dגNG qyyzovKF~A-o(cmKߒĆ,	kQé3\ mQiRY"dɷ,jmC9me7*ѣ/pg&WG'
(ؤ`M
z)WU6PS.iskgl԰G(rK	So΂qJZA:v@oFHy'l\ceTi`#h]~>1_q!40bɎhUJs٥@:>&4<yCChXַkcz52fڜ	\n!c)
{0G5BhBLCX3XLdq\ NvR^LvӬMk؇sTa\AXbTDMøbV!\V1*FqEr*t\Uu fXdXܢ%PWB,%8%S"$K6F	z&.;5<1
kݿL$=FϡܭcXbWk(hcx7+[yᤛ`NsœM>JW!6#7,}gTcfg13O$|>4aџkuPKPJWG  o  PK  C:U            +   org/bouncycastle/dvcs/VPKCRequestData.classS[OA-LY
"wʂۋ]A,$!!5tw(.n?|Uj|4o/ϴF̜g|߹ͷ_V)0tv}7^`(/Vy]Fq(2#=
ꞣWHto^yp#d(>Y	Y
꾽g()"tv\aMKmm	/3$~#4Za`[
y'ފCV+<in.ێgDHI1'<ڇEqXo/RfN^moe~**,pڢIGG͑8G+G@26O5~uJV=>f_Cׯ Y]Ut&1w0eDp\ D&2HCWd1Յq\0i
kaW4⪆11z!VhkGg-UIGŐP%h)E@|(~ր%Fq{+dPhblk`x2^|ID~ y:N4.ѮB$HG\{PKݷJ    PK  C:U            -   org/bouncycastle/dvcs/VSDRequestBuilder.classmOPZ`0
(*2,Yxu]guvS{?2`w=sϏ ه^3tɣ-hK.{l6{ܮR"p±ܒHlg̈́ozXys"URbZoUjYa05nخf%NuV\lݪcZ*ླdjoP*kyz\l0wCh>ӝ)m	mc YPlU
ж~=(ikA(@S0`Pa#
bQ2YrvE~1Ce~c Dӷ.Vҩf
3l$s?b\J&N\nDڿ"Q*֠ AEDCfV=I44ctx"b*ƑV18c%lqva!OrR9	yE@t]R
Y/XiqM}
:^aهz/
"#tj`>J3ddFbc P:8PK{F[  >  PK  C:U            *   org/bouncycastle/dvcs/VSDRequestData.classSkOA=S[Eʳ*+~5.>Mw)/$JI#?xm%ls9̝
`
ϒВH2tY]n+coi9\Ҍܶc:~1^KnDaJU2lws;*bh5[q̋j3U3uf,#/tۍ}4yJ!c!(ŲlCZ٘],	yR'qdE8ȍ|L-6UWTWa.`*T\2;n0uQa[`5i0ᦆ[Fx[T`1m#بqă(jBPRֵ~B'N2<|9ϼPjwk6Ћ5L臩5m̩a^u#c)p_G
K:AsGM_\.5#qWv2E?$CBy^ңc(&(ꙥ25<:zԑv]o
"sSxpsbjo$Qó)&'kX7n!dVώ9ebĘDW꽆eFQR(_2c	nz2PKl    PK
    )D:U               org/bouncycastle/eac/PK  C:U            0   org/bouncycastle/eac/EACCertificateBuilder.classV[T~/
!m
sNY9
Hס4.i
(>w(Mʨ6Gs999&ߟZfBp<]#Kz0
:jn!z;VqC!/Vmn)T7^ʄҹ{<uxWi0zb.vnY2wuwr<7ut$p'=BUFZp7gVMjZ<ghQw[p=dPR0*Lha:뙫YI;nfeYT%nꇺVs<̅4ju"`8	M>pjVrٕnqŽ{)1̜%lN3b9,BdQrSdP7R\+f;Nb1
0-ἄ$-ႄ.IIw,`F3_&tR`f٦>ћ%#`WjRT<48vu4{+'df)E_z|TP=# |e{߱)	'x3v2%k4xX^r ^m_

6ȃӸ^U cT@8)8ucBDR0!vDeLcxQ:S
nM!HcEU!rB|.Bⶌ8.#M*1狯ؑD^F
_˸-!-cfW&)_$L^+B^=EED&j<Mxz-OaA1dIڴJvچ5l{5Į:==uzpLDZ'~	QH!YKb#\)Ω
J֠\
JՠD
J6ɧ^&jQ>Fj6`1-G/!UL>mQ}?-Hm<|NO6O:fK!Q~G^b(+~PK"  
  PK  C:U            /   org/bouncycastle/eac/EACCertificateHolder.classUmWE~lXKBVCk5o4
Ծ-
j6Ctٍ ?zMZ9GNvC6iɝ>w "8ދ#;ZUГLm&7
Rm
bLw5[zD*V]&a9W0`+-`tE)+Ӭ|	hZ
)96B<V!)bY(ɲoZӚQu	
͊̈́Bw2ˤlL'7XUa:=텆bv%W'"Q-wze,^a֌[w
lLߴ+ߴ%wejFBAq+MǷ}xyv>70\#>W۶-u68VJ3t0:l˯ôdGS.+.!kUt	GDFpL	Wpѷ٦IT]ǠIcrQw5W1⼊U]T\T񾊄qT\V+)ᦂ|#I+rR<<nm6SٓRH&&%eǄp'~?@1ZsS~&:{^XʔQpXӡㆎ8ztKq:2HC1-I)ඎpGF!ftcEJA|чOq_b^U,jIqM<4LbIo4LIi<k)4|Xhe)V4L㱆x܏ϰ Cz<Ѝ=tc3-KAf1*:!G^f^%>?Lj025|GC
:N'Q?/dFar$ݔė[r,/
<?Hm?N-͜Q6ӗμUǳ_!{$%x4k:~Hg^`=@!,
߰<tBwtPa	lXIesW*XȆ!o5ld+8]e GuY>,[a#g):^G1(JZi?PKv]    PK  C:U            6   org/bouncycastle/eac/EACCertificateRequestHolder.classUmWE~lXRޫZyR-	b  Pҥn;[PϱsD<d9'wܹ> Aǥ8RCG2gLnZ7b,ǒ	5[\&W*)ߴ]_0Bx}j*<im[&"t2-	
%eqb.k6_r!|A>/Cb +\Y-2Z|(rv)-9-*?9-4EEZ0а6'X3)
6e$^>ٶ(s{+?5*>6Q~).	v]QJ	s[n&eʃ%I6,+EkY<
ON	*Xqpr{nțB"5_yi&[܊t=?Q5*^!D~_
AMHWGfx0
wR-[$xI37VV{'::<K

C5\w4ᢆ4!aDe
W4|@Οm{n2\H[Xr
4\DIk7W{jB&sʦgQO5Ԝ=6TOoPtTh+Oꗜ2[[nbl6
{f
|0ЭD:
d3f-I%gVw
\ŌsGr|n<'c_*1c:rJ+19XRS1e>NZ5%u|tZtEUx:vS,(_~>>"dWVu	1i©ҟ4/a=?CLUaf*2pZE?	jG-"JSt_jJlH04@GQ#
}$PYǩAU3]Kxԯ|z ?3/>:FFcgWl<PrWl"2PaXȆrboUlfB+myӯ	k'}HX GIl,FPKjjU    PK  C:U            '   org/bouncycastle/eac/EACException.classuKK@5MGVk0wABw*O!FSJAGi},rϜ\~ 8EtP\vZ{)*i
1~TΕ..zRr*-Tb|011B>YGWSBȶ44	b$mD%4r{1`'3L
X:<dN}|m_"}ڛi ^}1 PKN   r  PK  C:U            )   org/bouncycastle/eac/EACIOException.classuJ@5MҟX"]&
qWJB\(O!FSo. >x+tQ{\%SYiJwN4Yh{(EiYWZC8u!vnBəR(_b4bK7w}J׮.M1L' mhlDI-4Z-HڈMhV㐝N0*`Mn`';yG|<h򞧁0{CPKEy   t  PK
    )D:U               org/bouncycastle/eac/jcajce/PK  C:U            2   org/bouncycastle/eac/jcajce/DefaultEACHelper.class}OK@֤4xZ܋PjE}iB-F̷ғty{x}pMVz34dJB̹ʌP,{B~5IroRr9%n ij"::
XJRd&!NBXX?['fQ2a?|yp=T=x=,1G&Tm
PGG
Mol}m,[aŦZ)ٿnf3V0{6s-%=-ǮPK[U    PK  C:U            +   org/bouncycastle/eac/jcajce/EACHelper.classmOI
@qP\yQE_0i32
U]PU`@,kK.暜b}*i6Az/*cm
6$4E&n9G{:cC<tVIŤcb5LJ$$9x54߆Y
h?"~[PBxPK=     PK  C:U            7   org/bouncycastle/eac/jcajce/JcaPublicKeyConverter.classX	|U?J
M@I["WjKAzHUqL`z.{_wui+^}}߷LҴ9h|oϽ 6X@'9ȁJjieڵMfC+Z_Kk/34u|f~^(J\@M];=Pu>
F+MHBE⮖fWv۵A=X"L
E.-.C%8{}0
/$|H%!}rag4I۵Hq+1]KíZ 
3JӃz L=ƫ>=A6(bnh4^g/eB-F{mX@~U BWs^CW2-kJA郹ݤt/~K1zD>$FH":[2-GX{7`e4Hmq Z3DBZDp2n`tћqvCU~,4[b:M֥̑nѳWΟ:7)]H-n2Դ5E>F:ňA6,ܳqUS'92x{!TaO7x˾>E#携YIFں%S]X(הM+ZEzO/5z IU7.Sڣ]@c>Xijf*|('+Mse-ʋdxy#4}9.RJ\Hp*ڝiPyN3w]̧ih`0sAװ2X'Z<=Z<վ2_
8}'<OR[6ՅS:hmo@l{d8AOl~U1zo}1րѲټ܀d=N	 iYLMS8"d:UgeQjabe-"+A)e/i:5rS(}me_B),U9%1ӆb:="a:6eg.D4v$/ h,E'UbmmHl!qN]%%.BJ=WIh=.A$%B{%KHD$T/f~ll1֮6REƺ4Mv#ڭEṟ̑zJzüw	^]06XDD)@Ⱦ0h
v6|\˷E:6<T6؜Z%v}Yg	OV-nȗ^9SFϚ^u#e<p
+NW79kdh֡'[
%C]TbrEmEWcs^ǤSp&|N*P[^VU\@Ĵds޴+Ij+|:y6EG{VGlww~mxi9]x+tc*V+flS'NOf\/=3ba&JW>Ipj<夊fYEޢb
7&
8T4bUPTЀ2^PUԣ\ X*N[U*6*\+jV32x60p2x.`1$NwXw8QqVqZ<BWexo~+jUC*U,}1'#*N*H6<<b	&xicyc*qN<s`\$`Z|N>O,\*_Wp1/܂07#va+aSp;ށ?(83|gÏ~SQN^!<(Upn0^dx@9%a{{K
ހ?2o¡~@(
ވ)x _aß	_eZnį~[<ex=S^s_*C94%/|/ca-i+nwa@dԧ4B	
wJT'p?%}B?
O],2H0XRhyx2)c%^)FņǄ:*G`JxG=6Lkݏʒqs6aT,&pH$mT,vTT:m)qαEYM!b/嶇rX=r,~j&qXNCPH@ߪ׋ˉbk
OX=EIjnymO6C}Jxm%´a+V
+9V'0(R6l5d
[3֬BK4]jsP[%nnUtnX
MQ>rNJ;F)\;~R@
֖8±jvP+9CL%)#жtfYA:m)uxm<-yaL\i]YɵS5M+x:R{_3(MCq>ť)qNHQqr1qs1qW:cuNJ5ǱT,*NY2*.68ݪ8cդ'N,w7bTl6SuntӾ(giKoi3UK!XDNq ^zHӟфi:&6nvEjɣu
"%jjҽf=姛c(L`=.vOqC>ŷՍ?ꟶ%cpNq"^IJrt_A>PKDh+
    PK  C:U            0   org/bouncycastle/eac/jcajce/NamedEACHelper.class]KA1ssݾ,MVho+"H,aeݑq_E~T4+RF4p{s9缽86Li u셞:!XbS/ytF2"ȸ\]}EC5!uULFRTL}5Ds:n)Ok)^INHiA"F*wj9z\q
	f

ׯJz{D+T^LH:2ZHXH"2&,G Ym=:}hƂl!1lj/X1'G2XՑɍt~@w#dK[J | PK(0U  m  PK  C:U            3   org/bouncycastle/eac/jcajce/ProviderEACHelper.class}RJ@=SkӦQ7Jh6*B)-EtHb$bJAQ\~8	UZ0\s9w.Sw3۳9AJ~eR!A$WΨR2ogCgSߖ=Z.]ۮ%u|}`|"m
2b걐@䔙fݹn}1G_g'sLêMCVCNM_G"֒jW'j@g$TQ01vёGQA#FjA'u[\m=ǦBTVRyWT1"ssNxF
1"k7PK?џ5N  Q  PK
    )D:U               org/bouncycastle/eac/operator/PK  C:U            8   org/bouncycastle/eac/operator/EACSignatureVerifier.classen@gC(QJGE"\XHٜHZ< aHfF;.=|~hRTЫ.󂭼~;@_͊5b)>Xv#y>uew	h[]V6?so)&72t6:A\'1j5[&n=PKM     PK  C:U            -   org/bouncycastle/eac/operator/EACSigner.classe1kAߨ"jE2B-TVek2c7 lEWJM5	OֱA/q(S_BwlvYm)5_q;1	>鬂JHI
+%o	5Zh\=$ZHPM
DuPe] PKi      PK
    )D:U            %   org/bouncycastle/eac/operator/jcajce/PK  C:U            ;   org/bouncycastle/eac/operator/jcajce/DefaultEACHelper.classOJ1]nU'iͥ*Be{1MY͊+=) ?JL=ǃyc;>v5ATi
Df)ԥcm-rzeO4~ޏ;e4oᏃ'Jzc*T0N\X挥3f\sqǪQx_!A IFpԝ@Ӓ*-j "RhȰA̭ϟ,UC|oy	^yu^Wl>z;Hց/PKG    PK  C:U            4   org/bouncycastle/eac/operator/jcajce/EACHelper.classTiSP=BB)aq1"
.AjHc$L
Bqft?񾔦d$'wyɯ~ *]@N.z
8+CY`sC1iS19%ơHT30/sh'1*ѩF'VVQ9RguxVոjٺ芑3UdtNw8kN#Ye\9ehjWF)Q@O*3+RY:KwUߓ3ъM
F*T3'-omsBR0s]k%p|($>hcX&3] %bQ
-;'mY%SԢS%hʒjR"/׷Mxgvo˵vu[u,[mMgszD%P(yy1cqOy3FSƔ\_S;3tZ0VXJq7ina:KeW3n0`0&3Ї!\ YIׂ)<`A#qs,0H2XlmB ex`)H)^1O#2$9Zz *"%C^,>4ڇ9rW?9ěn[zix 덦h;Gx^zbk"bVEb+bǟWPK*Q  J  PK  C:U            2   org/bouncycastle/eac/operator/jcajce/EACUtil.class=
@?
zK5"He,KV*x,+x(q0 	|q"m01r|(Vr]ͥf-Yw]FQ!1 HU3E!a
$'PK<      PK  C:U            K   org/bouncycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder$1.classUYSA&E>bT5H`M1,,J?UȲ'$M<bVmL_|jGC8fhΎ0)>;NcK:,###$奒p>E}%Jv|Bķ'Gȿ d xA0lI6@'Wʉ9H-<N{Ta:u5dؾYNLW1toHaI]"LU
0R
<[.j5x!EW0nXKeQwFdZ,ndg{xuKzb«DIi0oZzқ?08[<kMԜ]tE^&j&Գm*%
[4lЭaz5аS.
5aHL}?Q͛nN*hl|lI[U՜!Bfս3\F
k$SbL]nϛJgǻN/-4֠<-Zش.
Pd/
G@+B"l
-tاHFhU&
Dq8ECk"uGpI1⼎09!]:Ƅ/U/񋫦+'8KSI( GV+ӺʜIej2diA,.j<T|h*(męCuE݉tUM_P0-Wp%zc2+ȼʄ_`y84=ldq
n$Vq3uѢ@@B+ΐ#]'³B74p\cH.zH2/J{пPKYR  Z  PK  C:U            _   org/bouncycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder$SignatureOutputStream.classS[OAl.^ZR
FCJ"}c]g+xDK"gZM|=ϯ ,I:C$3ͬ6\AXj˿bJZN!%>X*mINr)#4^(|횅`3Q՚ܔFt;eRS^ٕ_X5ϖ&qY ݥƖw⾬Spt=Y|f7ZG(S_8Fkۭ"8C\
hAjKw_6HЧἆ.j_ Crx˴z:(=:^\YP
-snE5qFDH3pI`J]O`:цS榎1dQ&̬r:0OwKRg0
|ϡ.۔zW-ul'~G☤2EÔ!gOc *%B3gRu?RSV?c1:n''X~L0>c	!5R20B""sSw0YɵXrI$s" $/B9E2;̒βBPDx{]
a 
]# PK  &  PK  C:U            I   org/bouncycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.classVWE-$l.RX(<Ziy
R#jl즛
mZ/k=G~&@wsgvW Fm '6Գ&YPϊy]FO2iX{Ct݃d	ұT[3aYNe%w,NpMr'
%ĒQi5s3M6D5vi$:yvS-4"+Our
ےIMf%]	VrV&ٴw$4{njF2b<)]8cY-RH.ϖ|lG3挙iST
xϱw
Q\a\Yzl'팥guvM5D
hHxcDt9ZLl(Fq-m\,c3s8p"2ٔju.!	SRdTƥ6䌚mDOgDV~:0W2Z)2sh.<3	."	mKYkwnV8#Txh񆌠62:d)-o Lwd+[%e'#$apt4AG:Գx
 qKR*.`Q~tE]LvTh3q閨.u*Vy=3p/ND"_0bkOq^ėIV7I)[z!H[w|V̪ii%ߏ3Tu8%jIP?D8{JEfTSSqF̪ ,wKۂPqG9E$*
CAA|`(
d+1|*>Rp
<Rp](ơ+yM$
)uӈ\өtk)bYܙ3Y:ir˥!2}{VCE>	5XO#%:PKc#<2? xV=X."Ȧs_p+Up7Y9H+pO9.`sܷ4%TCcA__zR[XC",a*֟GV@'c^!}*BS{Z77w_p\=WQ|EQij,j*w__K,kj_b+{,S erq$õ9O1RH"6~'G<'(g7PK9P޾  2  PK  C:U            @   org/bouncycastle/eac/operator/jcajce/JcaEACSignerBuilder$1.classU{S@]ybDQ |Z--:\ӳkR+G[#EeF39^mu13vo_g !~
?fh=|Lَ-2J%|`ttTPN)SkK:A7#9:o.}NYrs,eZz`0H3td#g٧tc/s3ϝ,	K2_
aZELe/gSb+lŘ[t2/L;cf,=7Vd{<#[f"3([T`#,d	ū6T'j:00gjIxêE\okE\iZ[i$C2DUFjDRvVC
4tjЭᐆ
50yk'Vl\p(,ϰT#$Ufh7cPƵK~das_L^LI{2XSΞ;m~h'92Є64h`FS F
`LA
l+pEE.ⲎrEk:18I!L:] q7c];+K1P
<}A`_ΊY^XPC@{p
*38U$`6=Ɛ eIW$5#kHDq-ð& q#_TNljv
Rf;Lp
Z\&7~q0-nG1iu#
~(4~ϗ>W'IQyB$'PKw2';    PK  C:U            T   org/bouncycastle/eac/operator/jcajce/JcaEACSignerBuilder$SignatureOutputStream.classTNQ]CL/\(-ű(KLOI3̩gJC"Q}k>{?~~`1
"kj*}!F=KMF>"c5
XʝqUaNvo-'e.
Y+0()5#kw]5ݚDQxS0MlQ+%5O|n<[m.'mlKW6ݚcXnrfn{Lyd#/,Y_߫A|bRVFP/m?BR¤
b­kCUKLcz;Я᪆kka@à!."*RN	NޑB}ZP_ې7{+aL"nBWe\c)+cii2K1SGn%Ooiwh.{/
f-H?GOQ~1J=9g wqht"k^A
o2OxreSHa\
L>b\=3jCOOSbjY01
zL"!SS:i-oFH&;H
ɂ$?hg`G,CI >6keP$APK舓    PK  C:U            >   org/bouncycastle/eac/operator/jcajce/JcaEACSignerBuilder.classW_֒ղ#[:Tm]7[	`7"vEZznI6ݴ\'۴MCҦ3Ғ`7Ƿ}3o̼3}
$%I.]	/r	vJ%ᐄK8-:):=$D"<=&~CLH8=Cna>d}gu392|$\jǎ'`3)_cdij4W4UUw߷ΕZW]j,r{{{i{j&q^5Ut@9)mFNOZ<b=&44F1h	<u|zVa"*4giRI5')2ZVV=>5v2EqOQ(N-%AKj)'S'jFAoyi]/MW\8MX$n0NUP7Ԕ
̪j(P9fV7C\+Na
9Zș<hU3TA-̝:Y,"Eo
#bZJjx:%éDNNQC9𼩧BanhEuL%Mu:ED׼zOgtވbjLi!5gksʉ5gt&Z5or&ij,4wJ[o0`n]5lLi#ڌO}r18.b*pֵlet7u5Wk<of&R[qu^l`]VՆ\1l\jt)0ޚ6vQtfE:W]N3+i.KLLji0*-op?w݈wSG_7]]<	3)"x[DEqDĈ[EqE1.⸈"^+QFA{FH%@huFj_Qo*Lv&DV_PM4t{|9l{lA@ FsYz9IUtA9#*HSBTwnk4l0;?:w)7;nEok<pkLssW9XUN[\gZ"QVc#g/͚O84^U/ΊS)腩a/>73`x Cy۰YEQlU()U+SЍpVM8 
<|Û[t
ny
zNA
&pNǳbg >p?fG>q/>Oȸqw>5S 1cK24|F[ߒ)CW1ǔ!Bfx!2|[Ha|A|YF_${XݫD*pJU[ƨ_I+E37KmIT6z6CFpl	.eM.W%GImp`2݋3т80/NK]E,w𳧑S̿ӿY>Yxx .ͯ{t/#;)+-Kx.,){}j5eMŦd"Tc2?^v	[iV[aHmK/";hCl G#6xofϒs%<;*KE	?vWqJ={	h{!|~3y=Ҡ\K|^_S|	{MDk$$󩷃贃r( 9(8]
M]îe=zMݾc	߻T BZaWT9WJ~*p2f?}m-X*S,7DEvxE(Ud'+rsY(bEvq"{(VdG+XP?i:?PK8g  $  PK  C:U            9   org/bouncycastle/eac/operator/jcajce/NamedEACHelper.class]KAQssݴ/n
Sj/(D@~ueYUP]Q"adPy9g9;
A>'(2ũ]TG=D`&1uC"ۑ݈'Mi_
y൒cW<|$H	)s+rw[%HpL36_XX`YX#Xm'TxnW+_xO5<ˀ?XvqZEXBF%LS"u5L,N6^*llXkج՟Py@|2HTL^{D	m,k.OPKeN  c  PK  C:U            <   org/bouncycastle/eac/operator/jcajce/ProviderEACHelper.classQ]KB1~)*vP ݯ9GlUP]QюX(t}m>? b ]203H/̕
vG#6e4<ҁkՏ=m.&&P*\
<Qڧw*|YhƂ
Ʃ͌tوmw.؂g2h5
B/`A[ۏEpPK)/1>HU%<Ԧu''xaC
C9l"]v25cuj<l|,RU16^Qi4_PzB2Hc2䚍gP~K2{
PK_hA  G  PK
    )D:U               org/bouncycastle/est/PK  C:U            *   org/bouncycastle/est/CACertsResponse.classT]OA=@E"|X$Ѥj6Fy[.nvqwk$&6DMMA;-Ժ"Ý{Μs~e'~M5UWuT[n3JFX.YcyTUdHbjw
m09@cE[v(scP-K5tE}bfVYl0#sr4dr +ڎR1Wl)ì嶌)ek<Gu䊷:2è'bM^~jf$2L<u7*U#j7mU9%v7|wPkq~az޼:ɔY3ӥ۠t*Ӗئ
%$[5w3N!ِיhMWhS4{Wԇ,B10xgDCl2QdEaV9#ƕFEcpE]u1nU8&heH
'0h壼OӄSa4Oڜ1D 2ĹNY{hLgq-;Jvpl*bv[=M
}P
S42wX)>%֜B}ћEs~gǐ~g88JkyR.QO|˒yOK9VB Zt4v!-NQPK"H  4  PK  C:U            0   org/bouncycastle/est/CSRAttributesResponse.classUSU-	,,
C"@R(Hlh*VUdtwCIv|8FfO>'u90{ﹿsﹿsx	=T\^|(]϶j45㚮W)=+W}TMٶ4c$P6t[t뎚PLYNi*助6Y	>^J'UrnlZJFDd~ݲ=ZP-KѢA8h>NiPuo\S=Y#Y75Hi޷ί+O3|VXMښZXu5L\82=6l-W%IP!)ģP#VF;\+݁{lmS*JY3u'%7@2o	9&V-"_)K
-QqDr
@Ysғi\S+"ܖvjm#+:oh"n="<"z)<PYwP
-Z<^-

Pj9vl.jƭ
#CٌK[E[TldA3D-9sStSJ%[ eSQ'jw\4u@|o~ei4mBT\fes*ʹJA c\F?d%Me521!ʸpS20-e,dxfh_y㎌XчuFងw@ %f3U	7)}eAGs	C10|%>aXbx>Jt_JAQ˷;j`u!-+vʤ7,qrQT$^dU^Fm"Ϳ#KU4y=8r_VM#4oļܗ/ւkoou_rg`=C9<?>2x5_"EqC <
ͯ((%Nb.y<}H0|=)52÷	 Aj)ًk ̋*Tf%{Xq$p)OQ)p97M!Wm];{kxuٹOꡑk"{UqIo`2@kΩu@vZةI?-ʾPKJjΔ  
  PK  C:U            -   org/bouncycastle/est/CSRRequestResponse.class]OAvk?bp1I	IkHnNfvF7^`"!JwgZH؋9g<{fv)u, o4wCeWK!/ǥfFa7RB^.1D
5I3dR!'hhu&<O*/ХpMlk|uTT6#>(N%/7ab k43a}7>ho.5տvj}4kHaDe	L̠GiPó
eP\!|u=yubJcɓi4ocrz^-EboHĿR˾քǑb%	
%v3]8U	+Qq_Xd8Ɠ)FLR3ePK߆z    PK  C:U            1   org/bouncycastle/est/CTEBase64InputStream$1.classQ[KANje7D/EEP46+;cO	~@?*H|s|ϯ { ĜsBL?􅯎Ʈu#do=s&)?_W:U!gw l7A_4L.wTnv$gniW:,zC+n0a!i!<nrPeT66Ƒ1Y1qsId0oB3XL!%-s5hqB&@}U'hRC%aˤEݟHyBgcbȂ}7H\yr
+/00Ug+<@Wg?-Emq8kQAfFg"PKVj  V  PK  C:U            /   org/bouncycastle/est/CTEBase64InputStream.classTSU=7d$@)RLBhKj *%e7⓯oZ8^:G 3}:{w P==0hWb1$Ҧak[QYyh*Fy"ִDXZX׌Ex.<=u)KZv^^aFUfkWU(1tu1K2j^-M$jɩCm;}ԯxŌgrZծFmyu(;=ެiI-Y^^74if(~]TkŵO[2*?iu5.f Sպ߰HXT.	HyHUVkcq{*ODExMDH0@fN;_$z*99_H4{Te
9ɾvN@$rGXg=ho}fz_02.p8IF/ds?b20),N!8nt@\yLq4K2|HpxӋ(f8mW8\0!ᚄQKw8!%
+!·\>$q.Nhjr04+F[ߊ\RyuCh( sҪ޶Kӓus{m8Xͱtq6^ SvEVo`YمRrD7N"R.'=l˵-$kXnd?!1!a:Zz3|->{uy@$ŧw~H+	P0	~ŧblEՠBO+\[cb/l<0F;4Y?
EY[Qz틱HbP϶!EhК`Aib-
RY>Sf}/mlFqv^6zZ[o9%s PKGX    PK  C:U            0   org/bouncycastle/est/CTEChunkedInputStream.classmR[OQN˖e-wlQnzAP4Jxh,IYf{o?LM|ͨ8	n̜G Ә^2b"ꦀ O]=xyRvzŦ7Ւ
X_\\xVuׂlp(6U/dEBR25VfPjʼl<˓6OԽ!i_jfa%?p#,QWTi+i aӀiˀeG`=Y̑>ȁL'E:,cB7bl>!-$q  C/;I8pC(N3w9)bpLP2ypa
%zeo*1A4+1zI!͏/E ..;&D	1VNȁ(Q#{Wvw9-ڸ4mb 
bۘΥ{ƅmn}ݧA'հ4p89F#I\%Udqd؄
%W'{r#7;Ls+Q͑>ALϢ
9eR[zw1J1~H~PK}.`M    PK  C:U            "   org/bouncycastle/est/ESTAuth.class;o>vFĂJҒFĲDļt}FtҼ⒜T}v&vfFm
\ʂRKL̜"k06FV`dad`d`1PKv      PK  C:U            $   org/bouncycastle/est/ESTClient.class;o>.FΔFĲD|}O׊Ԃ<FhNb^RVj2P\~Q~R~i^rerbqIN>PkpsNfj^	;;3;#.Pk5(.+Nfd;602p 1'Y PKA
      PK  C:U            ,   org/bouncycastle/est/ESTClientProvider.class}N@z[
&2ǅ;G1q.MyXbс/LvaZ^JֹئV!8ɣ^WI,6iꪤXO`6}a+_>ۢ9\ǐaF+m1x0&8ĄPK      PK  C:U            2   org/bouncycastle/est/ESTClientSourceProvider.classmA
0Dkm+K(qץtQ(T1ԚHjA7f<;5B¬-gʰ$/B20Q榱Blo-׮L֎nS)]_ZӪ( GX9wV"J_ZaO-pCAtxPK%~      PK  C:U            )   org/bouncycastle/est/ESTException$1.classJ@$1j(i"
.
c2ttbɍ\ >xt!ԁ;9ޏ|}|
z=d\e"vL)
31LEWLfz<3i>șqtCt/l/i3XL(eyfcFņmcKV#$uNZ Cj.L.,UxtN:2s2r=('vH)pH.9Lʠ2JAqڧon0Tr#ŊMQYQ~A!+gPKNpV*    PK  C:U            '   org/bouncycastle/est/ESTException.classTSUn~ݰ]*",
5amZ0%D,%نhd7V|Wg:ʋtF8O:_d_JYMښ{w=I} .G` rPYttaG2VHFX%_4GWt-%lYq
JSwVg\~5,V35\JԨ7lmrj^eI y}BaztBZOTDz1R5k

+t7ET,=jvpYNqDegCFZ2O(׭Z0jˉ5a7Ta;B5g^@Ҥ]ۄ:Xu0~~$z%$^K8%1,1"qZu	ڐ\}.Ɵ~ŇTdF(op4o~Ogs/Ͻa/R:7ٮrŖT\TчTT3`_(*""UЃwTǻ]b2{Wz01h 4C:,Y0`@$'qa!P
!*f,Vtjj4z۶aS~/ZŠL-~4yV$ٓPq9Za$4(2 /E=ga^!-Om,jbyͻ#?$H61þ}]ėw}aȐ|T8G!yA"*p dl"|t8w>v-GhҰ6OMҰc?<y4n
rĔDBₐI0#d$=FHT'Kukaq%Y+>IrUJk'U,47qn 3u^.D?Pw1L->od~}e?;¯eBPKh    PK  C:U            &   org/bouncycastle/est/ESTHijacker.class;o>.F̬lFĲD|}O׊Ԃ<FhNb^RVjr	#B~Q~R~i^rerbqIN~jqkpؤ"v&vfvF$
\RKLk
KS5h/.+Nfd32p 1'Y PK"R      PK  C:U            %   org/bouncycastle/est/ESTRequest.classTmOA~=Zwb)x((P-P 1trX_Ib!(W&;33w Sxa2	se8/ 4[-`HLn	f^F;E1[Tv)(%w2i=;G_"{{3Šy{}㽡1i[=Q%7:\`Xy}cwgV*	ttVDZ]de?e(pW[]LBn×j4|pLAl\L*PЩKA
z`J5D=V~Z\D̅BxvmY)
$%4No"#T[Ol4U?z@qAޤeӄ]%Ap3uI%ԗ5wy(N]gWWE<bvtGE~pWEC*h==Qц&07S I1%c)H1-ŌOlxF"YJ9OAWM]:utX
ͼeCiA<\D?tedu!T\Mr5DV&JVlLk'XѾ!Hjceĵ22浈%-(#E2 x~XNҌt@窻
;	\woB1^bCr78k;=w4p'<-V+&퓴{ZƤ>ڱF۴^&)DoPK{PU    PK  C:U            ,   org/bouncycastle/est/ESTRequestBuilder.classUmSQ~VԴL-T˰+-KfDi܏j:mFXAfs9{w_<6 /Oi2j>'W69$*rZh/Yڳ鴑4E@kZe(zprPA#ʩ,y(CYY;%Y+{=#\ +j\гJH)ͭ
KF0(k%Fuf\FEmrV{e+IM3Ֆ9M՜3wcBQa"/7b":D%[DbU`Z@GeSSц;fժJZDXRiҒ+SJm]4V?b{]m7q5$䇡Ӹ^\jwXxؒY=,fM.5ʲuF 3/,͝B
+nܠw$*^	0"Q	0&:|$KAD_B;`S'a94ìnf/ff]9\҃WaxIH.M_|JKԝ|$+
JH.}EѬ*[ʖ
,[*Nu^ʸOV	o!b8blߔv5%`|sxJXNYBGX|lE,{))OJL5w0G	0&^~brxbpXO$YޙۘN$	uYvI)Fc
5V?V5z8H]$ PK2    PK  C:U            (   org/bouncycastle/est/ESTResponse$1.classPMK@Mbcclq*R(xS`.J
mŃ(%񖅷̛7os2؃a\Sƥ\1tU
Ʒss#|i&COA-e&d<ڄ\I$37/TʵfpxFiBŚ.ԇuXM6%nG2͔r~BQ&ӏ8K=,JcB ]B]Kcg7IeU!VnZl!f{DJ_PKc׭#    PK  C:U            (   org/bouncycastle/est/ESTResponse$2.classSSUn.aUjІ4PkjIJfsI.;ٛ}sO>	o}_q<g!-XL{Ϲ|?R0Rx'S`X_+_[ʯu)ГY@(Z
eWZ{sePt RUYQ;ACI/4=l]]-vYeJTtE_0lQQ:7\;yCWGO	)wztB~w]8~-o~Ma8_[i^U5H#5IBZ4}cGSy|0ɓ(y^"u7Jڪl/mwq9
;O.V$FKb<x?#1XԤuRDXo6㙣Yo2NCitdMujP9zmsrYAN'e<.LL c],&21p3fM㲉A̚800M|LcaaрĒSkg8uenH_ҕ/UzCE+5tMz@8xQ(R|fԩiRz9@#G+UlL"^ǲPVv?"wvWZvy"3V((4zvx{.~}X#[XL< {)'OQ}m+:31TG3,ty# ,ж3Α\yWqpw4Vpfe_PK1#P    PK  C:U            :   org/bouncycastle/est/ESTResponse$PrintingInputStream.classQMO@}+ZQ>ECcMp !ш^JcjtD%GgM8웝yo;o_ 8aN2[6h؎1p,鸂bΓi||4ge׻Ϧ!|-͵%F.T+EW}-RP3(


T|/9CJȵ©	

Q0
"XA64*R(HؖPK!-K]l\0h]-BXfCV2=O/ft!U(+PFQOqPo4=y$fas+Jo^M
:х:G7F11SƂ!ɲv47w	|zc9&PPKNq    PK  C:U            &   org/bouncycastle/est/ESTResponse.classWxo2IH6	DD$(Z4H0J"6X['a̮;Q|Wwmmm*V[lX>~"*(33لY{9{wrͧX"ʨ1Kl52jep3e̗(YBoqָaԡY@.5Xo
6Y$hiog|~85rNn n,fѓ_3Z,=Ե@,)j/eh$nVvw
fK)+JJדf4nZP3'Ӯzfwr*[=Y=<;Wښ8j+Eޝslj3mh[)PpE3=;8PEuӜhұbj}}eZK$tf^oi^]B	ktN	NV5L
ߍ8g-uutצM*w:#[5^*[K9[ǯRJѤib)wظ3ٶ)amx]gU+YSƃⲠH.(1_M"h$jhunZ~]T2;.vٌj8ԟ\})Qޒݺjm@kƛ:W]beF)]4#BrKpNdqVj=LKVtU=c|DQK*+PjkRV4+VSa6nd+bȂxok齩;lU6Cl[Z3i՝s y3h2Fh-٢Ls32YϞoe>(=9]6	&	=iEu['6H?5>	-iDeu,%q䋟N7:F8rbM1sh9TĊwįӓU%[የ|KCGxuI-qyox,=9OBU.!a5:%.	$\.z$lpHR{%OU4	<:3O#	vdSm3dYmԞӃyT?3)7*iucu^2-
:ؚG)lVוW|U<r!.ϤN_Ƴ0rn۹Iّv Ɯ|Yj	0Ƽ8x29JW5<ŷSiR.6}$ŧJCS֎9&QIC58[J|DY:%gc*b}6|BոKE*y.eR1*1DV`˦ާTwXp->b1>p8C!Ϫ؄A{UOFϫ|NŹx@EءbyCv_f*?"q>܎3<$.!40n=O1(HaLu3
Ol^2dF|f܄-0?Wp3ϸ1Tp+~6|G!7e8C2ERV<`^7W!I܂N/÷ivu%ʟ/0=iɟ Qfzc:g7*#JvKԳ[b8%rm;hi[ǳVAl5^P[څૂ
cEd9EB!j+!,DyܹGQnQ?u^{Q/=b;,ʇpdJCgXTxOC8ǳB	P/Q0nҳ*=}
Ңd/@/;4^ Kʗ1zAM#PXHb񦆚8Ar'8qu~TKB,DYȷ±(	B.YsRvvCcrtc&J@z>g#2'bDeJC+fָsynL(Y EН2Д;hl_8c9Kh|ї?9s[_
B4
b)oa!X(EPMX$^
BHsk_G˼@N{.*
i	Óפ1)5N)d[{B
bjƈglqψ^xGߗS{fk{¼ޛEnjg?{k󆩞aun.ĸ̨(%FLqY]+h
-J&az9PQC}QWN/gf3>Q5z#˅>tD=GL;vtvtR4OѪT$eZ0r"%1w4=oߟT{L1BU\F=r^D
W*]|Y
葜cNrdZUWٴ&'Oǝ3O[6.ZoPK3	    PK  C:U            '   org/bouncycastle/est/ESTService$1.classVsEM{q@)(q"MZE698^K|×?~fFI2'%g4AHb+3f&}>o{ (6E9-Q4E6uυ8 oPPA˱1##SɊ֒`c?Ͻt,'@/-幂i7Lss\|^Mұ&͌Ʉ:F!|~	,{NA#w<׶'<'Y.KM:
hv
Z,<Z`26w]b̰\C<4| 슂mk&K(6fNH%nD%ס894j^ȸc.67#ʞT(ct2]ttR`[ܣ`X}a&9	R)]ނeRhfa}SO"7na9K`V.;ۓX:)K_2m<HNp,f6>|d\	^&F, [I r?p:KHR5R}<LЭrd]ʆ!.Z"7YةIT<b=*اM~T<"]ETBJ>\cT+87=&\Hz/mv{T{3+CC~-bgXm5IrpE:XE:# wmT)!5Xee4Uqg
I?aY0v,ב*g|t?ܔ[U}.ގby,ޏ˝w"70S+
~u|>/0N:ŨPu!	4x%Jpu<S|ZGR:ZpFt<qٛб/ɉIݘхs:|#ˍ8i	3.h+.JxU)aNk8
_5
Rv9	K
akHie	W$F݈f%dIͥ`%v}:gȹtIi'
QMW|KmJf^>S\#`uMM2 ΰғsu%֧ԋ8BmKG]x]w!:XA⤉%ٿ*w:C6j?@,
)>Q_=`p>Z[|x5B+n|pfKWplkohmhk/ܰS$#q
L7GqЉ/ou#$:B^
ǑHz"PKbN    PK  C:U            '   org/bouncycastle/est/ESTService$2.classU]WD~,PhkkewKekk]]-Hh֏aI&18	ZO9x'y.ls2yyy?'˯ &F:4Nahhihx!]"=[h@RT37;2|E0"&2k%>x-B86Fz
nܫs1,WA35;;u2эd{;utEMdMxŭOृ:*"xWWuŌ "9YٴEN>(uiI:+D")~ceݳlIW<MCMpv=2Εq*Ll͊؁cXnJ񀓗1S\1?[zd"挵xB3%
~K18䢪SY~'coSe(y_q0>SuȲQDH%|/rՉ4tlpw0ࡌzN3a8pM~3p!0ûkB2|,.>-'oA]X\%[,}jl|LT
ySEl(&#5N%D$RQl_N9b4|cH|-ɚ}	|5\hl4CiA#'ڣ0p	2p@;Rj@'
t Ўk]7Ѝp@>fpSCᶎ<>1Q|2:LSIjh+Uf<#ꊐ~|^k(yEGuZk,eW Cf
Zw }Aێi֏Xҕ~3X|_>i 髀m?7P$uRD
|?=mbxitKmZH|g|eœѹm>X5VuXmRCg:6[2oU(6ԕ))	&R1\>'eV|ZX P 5
iPK    PK  C:U            %   org/bouncycastle/est/ESTService.classZ	|T?ef˛:@0t@0&ڗ#%Lvob`vI[kZ0ZjڽUڽuA(y$&gKλ˹{,9 
KZ5R	.`WJI\%A4IpHpa	hm;$hCN	$).	vKp`KJ	T	z$HI ))	IpDcЇ03TӾD2Hii-YI&2j4EXWSj$N_3[4S},u@
~_ZRJjVtNwtfF~4*jX`"y0M
FԈʐ
H:f27EJj6ԧ%~4>ӴD*!TTv$d#h"لh6Ħ掮N9M,J7B!D3
]]TD&Z/ӏRj"OKdo4чd4՚1=,{~sssmBx(FX|h@dx:0FL4쏤ѸF-;&:.D˶j}evf`ڷ~	CI
ѝ5R8/q-F
F#My3qVlEp#RI_L/M>Ȍ$1ia"ҟLiѾtwhd"x?w.t;6a:[Z7u~G53ү9D?I{Ef7wA\狳VDlף6&	5jo/=)4Le:謓1ƶٴw0ZKNzƆ=O^@ <&+H_la'x΄CÙ$1 +̽j0&;zn  n@X7L{PDMgbZ5xeW0ܢڶddтE[B
nW-^fenCʗd5VzhtDAa$vI$_IBPjduimݥz1UN\=<շuFb4#@4F-ɺ>u3"uhV(ǮdVaM[!h'xA51w_l0M\Rih4$ScR;ajUrƢ&uf.,~Ci+td=Xit2lҙ]jlE}*@fXkr$3ɓt^3x[A<N+ݶ:;RѾhBeglWY2:N
:):!aүm$sQogEYbV!YEKvH@t.L`ˎCm7N.;Ճ,kS̜?Xm1voH
rzcZ\'8s$%m-%B+'!CwJet`՟J`CfGZ&<eFbhgn08厧37#7MMwjYp2e!œ2'7CA)&%)䊙~T#sn#ZJqK"DUc
0CK
©N6tTKuVDX$ߒؗ,*3ZS:`\+825\
H
Tr#A*bܖK5-9.`ԏa[=[~1(lƣ[.#,*6mr	f&c~(ƓE39+hn\DEu69W_Ϛbaq9rn |A竳9`FZSn?/+Ќ|%4zI,%k:W܌]F%l>D*͆2+ʤ ?%sI\֤̈́FuFKUzP㸌B mz;',GR34^e&|bLt0'~(Efu%R)k`OLb-$
YyW$H4O+MpRw7QJ:v$̩:N</>D.>$"|X{DQ>&E"|ROi3"/gEGEx@E8.#"'ExLE_"|ES"<!"|U"|MD"|Ko+DxZ~H)<<"ِ4Xi.i6벉7jԬg\.5dfnʨ5y[4)+o-klG{̮)|cY]b;^Ub?1A9_lwm`.M{f7Bf*ՙÅ51B"[uQ	f(HZU^"YcMuC-Ľw)LU]m,&>l1w\@j1M''v]\x$Wuem%%I\_LVhPScfM&Rd&<V0;(cR&wSs~VkYQf+06ʛG)KIo7>:!f9 /S6K^nVY%6Lc9'DRXjzKZBBw*Bņ~uS8
o?G6p2W1Az$B
k`ÔO-ESo㴠iXO㢲l[7٘//EB5{^oy3/.op2mX)\hGWQYiCg(}	սWwZN8uN*LN{_{QSR9*z
(
xɯzL
2y5
2B
OĿ
/#f\ǄDb~#~qȫ܎.&`<ndr?Mv3cr^oıAc	lRxf-
mLZx
Uw2y7ئCboŗ)PGةkK70ي;nތ*&1#?1يݬ^n]
_+x
`0۱d>Q7(p+aZ drɐܺe૙kN36&br.2{|Ip<ɇeC70{a!&w3GeY D>2dt2=2SLN1yBF	,c)PI2W2VdO8!l?e29&s32z2.})|OEIg<!&_fM&b}}z&oen&c9&g0GcrcLi&?`d\c2VQ&?dcd\ee;e\wod~&p<|Ѝn\ogrW7
e#{ޑo#^RM15(f^:3jd:o
eX 0(l_/+Y^_uy2o뻩Op/-j{8Ts-qnk?G@֍
uc(t<|OR"u;~>Ytma|Bh". <]cB([<ЀwɷJ9\hQu\R__EB_ۍ%s@$؊mrs<K|8(4q	!ݞ^ǨC
1$a?",O
Ϭa}Hʧ+{jGwNγͼcRigpm"Dգ$=/91,nX3t)KꦅVQaFH*#̐Ot6LxvƂ9co;a8Syy"&k<s+HaFQaVaha\uNq\xJpIވy]ܓ2ZVa,BVoIBu"ZSD:VYQp)`VQ8? :w	?᳔o"}<:}"qHQ\".17cYhhV%[xSf4!&f9TTۈp!s7}9s3;lY48Yho/НnDXrEZum.ȹ~,$y\hVR}G+Da&pU|n5D?]5V9iI)];h0.BHErBŽr\Af;耞a(ύ
\PsAE҃bh^*zfyVKvSca#x$3=~nN;-=.\% uw {@2|k*orq2u*7Yd3ULuuJ$XN?"R.Āv,9yl+_|ʼ<<;NS4nydqo!M
N=gίFgfKtÖJRB!dӂjv֑|1)P;̸jebF&f,fDƌhb&mbvK0F՟fRBD. ᥟgpdtH4@fDTaF-4~7=.p:xd"vF8lvcƣ(`˩p1{gɈ2:6_ׄy6*99yzOQus8nOՃQA@x	

GfȐmbF@5ɾckFˎf=$ֳjvǰcWt{CN\yf[]ˑjqjRUXk !=A>/<UT洱:?UǄQa]NzA!^/Y/qR`Rɰ9I>1R'_㐣\
Zʇ[Vm:M>=f?>5:'и_@yNWqLFQŞ0{5&"nBEU_nڙ_\;n2k6}F=sq>It4
yߨ<
cB٨0J_1Wׇx-Ug虺SŨU7^g0]ԣki~}KomғؔSzMvnFJq=n'3JFLbʠ4&orF]ݞX8뜴([ʓ'&+bF^*g.u E_1x7mcp;0
9Tֿ^MǄ
#0G'cWz2KiF/Ƞ=5E9Y"WIJ58AQ{-8^*r7x%pO4?mw=uG:Y8; >KGu	x%[r'f~^7pd"וN$,ͭʞ:KQ:K
YvgZ7G[,T_=58w2K/fzߟԍI±FƑҋ"97qʝAJ	n=a냠}Ͳ.7tS ǰ{Tp<ϐ=2qa [>[1LMs]O1Az}@7\j?\f>%BHPKVf  :  PK  C:U            ,   org/bouncycastle/est/ESTServiceBuilder.classJ@)6䡭m$ŻBJ$]jJH M+RP|(qVvvvO¾= 8B!	CҜΐ!k96wsߛC3=s̭X0PnzS׺IpO̶8T
Ԅ
"uiQ
S	I	5"ߓvGjwOMBK_KBplnGu/?/V"* -B910JidQaKm
vddːxC&iqE;e	3#M
:).ksiC<(L!d$݅L@#
$)\iҪЪQPKoa  "  PK  C:U            6   org/bouncycastle/est/ESTSourceConnectionListener.classj@ύ?ЗոpՄl! d
ɤ諹|ҩB6Mg|=O 6]҈jWф%J]Uae	C_֎/
FݲڊETA><]Beɭ!\d 'Ij86wQׄAZZڦ>G_Cbm]z:8'PK<ܳ     PK  C:U            -   org/bouncycastle/est/EnrollmentResponse.classUOA}SA壈HE
J)| 1E@Ccenݝ_ɣw/`bxjev)Ү5M4{ߦ|
`muw|+	blsajɲ!rZojR-S{ŉBǖv{f_-r'Z۶fQga,ڝgj5{,u..CrȺbG;\gJٲ-xS/cw̒U:Ɂ|ϰL]/PmnM&/Rg.PU&l{ԐX+z"80Ѡƌ\<PmlRlu6結8_$4]vJF3|T%Kki*9oZ^%Fˡ[I>o>;V-/L;<?jc'3i};)!^\ppYII" !T10םA31$1 n0]Y-o(\YJ1)O=I`XU ô&7xqgdq#2&ц0ÙO`13\l&`>Ua}1*=)RМjIdH"L+&9Fs"
""m7g}Ё	0wWv-"~.Xj.>]*GL/˃<8F1n1p$H,t/YM ~PKa~    PK  C:U            %   org/bouncycastle/est/HttpAuth$1.classVwUM30eBMYDM]hcj)J)TLḡZ}pq]@p_У$M9wwۛ~I 񫄙BfI0O|	HP	$,$!,KPG,Xm檖C.s0Gufof`@a=DBr2+TA1n<öTkU	e-@xrU{eKy=13tc PӓJ&MAv[jdq}R2Pt40Ԝ Yu溋[ZZ
ŋŋU|ԒIfL#98ڈn'G(X6X0	WKIx\7.nod|>Hf60MjAq(%ouT-c'AchawnUglO|Ypif9-@b!J8lQ;oTfRakI
dVWBIcvGtL";z6]8(`u":<A뾴b<	wܤm_P9)M^xdzGϟ[WgE%i7L'YMC590rKЋDv=>'
:C}~T`c~p*:9U=̜)5@LDDDE\!JkEhq׈V:"q=պkb0<qKg
[[͞_>#z<'ʒrr3~:? ТI@% bSYX	EeAbYZ	h,,!{/-UR^U6RVSrֲ,BO'AdT䧭Ҁ;#B^[EM=Ld....ř#~\WVnuJuߺD
إ`
f+qfNz0GF`%*Cg) [H*ҼEr8\*h`(XaUQ%MRNq͸CAwqrnܣ`=UM2ixXV<ɣ<ɓ<#ck'e܄elf
ʈ9N'o 'p2xɛ2vu	<.cq_ӱ
/Mx^d7֌h3zNݪtZg溌<wӴnG *; SG?7\"76}Gq?~bHnN#3S{X9TH6ǰ?4m
d
f>ho5gppp"?BNG8,/ǖW[9*w@(>i|C$2>\VA$UŧoBHp|5n9`:tB_}YP ԷQ}* _Y'"Z hmANM7gVY,.8`*3:o5Ym0Ϗ
tӆ|u8[6iG
o4ElFDlrbsy'B跏G̧̟#PKXP  A  PK  C:U            #   org/bouncycastle/est/HttpAuth.classX	xבHi]Kc  F<`!(3`ͨF=9 9'qNǉعIv!6&wl{766[3I=/O{UիWUﵞ \/\dX-Cd\/c
2(cdDdlYƍ2nq7˸EF>{d[{dO}2>'axTc2+ZVF&h&a=
fI#Lzb8Hz,mĪCA1
k쟵Dx"Am%f<{tr١d:~'Mbl,-kze{t&n,jx̒
f
&Oꉜgp*;Zq3OSfdxƱiG=	Dwvׯw PͥR8M*zh~3mĒf<CdRAeDTif2'9١Ⴉd}9M>{\?w$ts#M6	Xd'kKu<| T0-"w
׭uR%&LGI='Hnc7ڜ3;'bMcdQ3f:r,ifuI]{WFzG$
̷%Z'n i֎7kܕMf㼽*	Z\NW$vMG֑Ab>vSHn_b[b	tE6cA@KߝM=Q4l*6t2B"m^4gs Ȑ3N̐N|Ċd95ҶM0';xG]>c,P`~:fl5mj	ǍXvɎ]ySI[9vS%Z
	ڥbQM#۱o!m}5HG;^Hekýqvq;HVOwꙡ]zj-ANzޭ ګTO,M%cKK	c$sWI$'rBdFFzY3ˑ3FkZ	UT5V{alJt
3*f`$HLdF1vPmvD٧7ytᒫn&Ю:GUfI9v!ɮ+'Pp-dbbfRŮ";ٔ%wk
kgҰB`4~2e^6㘞K8fx*fmni뜻D}^W~nWn1OwFV\7tcqR(g2iTJRZz92ۛw Vk%/;qjY $щQoYMlҪ]۱X)vT<ٲ4grfT:xj?7v[3t~,j\jzeTP-s3a"gV?NX;<EmzV&	]K8!!!aX)!)!%.	i		Y	9	'%pZ%U$|@%|H%|DG%/cq	OJ$|Z	gsĮTU^}k54]|Bu$i&[yo"zn_bi~/,ã;qJKniRS>_Ok"ǝ1ICe3]Y\5܌ub<z F$KER	I[*jU!^ZFpYBfϜnme=V[4t,7U.oݬ{w[!</jxNN	顺U/$5w|
=!Kf_gLz9)*>qQ[NM=Ŵ+lrlK1ח]!@Q@9`)7#cJ=8FXQk+(xq<?V0?Q ?S``w0tbhUpfDH{3|
m
bO/|^;
neg@g`*7ޅW%GX?+2UN\9cwq?)x[._W؂lk
u_a:p
CoJw2.|[H
Y>#UOJE@gQFE;D=s|Mhdhbhf0aB?bbE~<-1.3\ǰaz72ُgXa׏gYsb&?#]
ˏq6x//~H2a̰ŏ.n[a+~*v0f2d8Kb#nllv2 ~  .6vp WMnL1{]ǰ'+=<(_cef?g)Y[E<
߂4 T*}i)լrj)]!S߃?GĿq4
C]Q?$#P"SiɴȨ<R`=arP#NTQx킸#~A	/!3y/Xaf~\@xiKh'~[ÉU=h[^|>K6U͋\C$R9.592/NRi&}p81*F=D=/͋yq*Ry#q]Ǌy1d+ƥ@īy#gp#>OBת9byQ*/(h{ץs.xj˘x*.*8jcqK8K	w\F7\,֗QG3㘔+$@RˋgQ*6Y]#2%\/F_ȋTDPT)=AMiT,ڃy`ɒ&L,hfL|C>:j{E=tαg4ߨx he4%/y-M-MhTkc[t5:?RjkGFǨV٭V5yLGG8I4J<hQ}VoWHCHSKR5iʸZMeZUSm
ZbL|gp{QQk5:w3cli
ZY~Ҹ9.]Zga9Z/Z˰ٍE&۠f-.pwuHk͎f%Fˊ9)ڒto0k=&fPSqC=Eke,cQWHZe9iքDW]z}MTJkf3ߨ̩"[Y@š:6s?>>*Oy_D4UV}Sy~*cմxߘn't,Gƨ?Ihƕ_~"G@Hxv5[J0ΜU(~*5<ȣIRn~kP%\bU'+^*%<C\Ih
^=Viq8xDa~xv]I(vF>EJ}L<]da&
|Mm\%F;Sr=A:nF
^v|'XELZ^Υ\ۜVAK0{Z+xjϋ[ģtoIѝ=5шl^Zw$C&Waz;V/v>#"I6Bfq**BmOLVJB8J.}XP͕}ގW]؇-6dJCF0qO>~KHmɋwEvnf\o}RΛIp'u/YcPK=  #  PK  C:U            +   org/bouncycastle/est/HttpUtil$Headers.classUWE6P?TZlU!h+V&P
Pi5$cMܝxOCE>s|;M zz|s>p
a@Xw񾂮U
B
dw,UaV)v*PaQg;|X$"ոUK
-

UK帄`sQSgEn+sK{y.o))YUCԒ\&]*utWݚ]v+B#-!{9{J.n3Q%g[t9*s]uQc5_wGeQ
];)Gr7RKj*#*<ZFc>lWkuʦ:\h4pAÈ5\pIF5Q3~~.{q>fS+ۼ =8땧陋V)Q_Gq~Hf|\y]e@Kå≄O}zI=\]!:^CP n:^\8Ü0(+qqŭ(&QId0~4i඄%ܑ,aE]	`	1L!-RXۖNW-G0~[,n+qG%_.YLЋF`lqJO0p4蟔"<}4ҋPk ҏr(*I _̧ꕆp+a(ѯ!A6y#O౓4KBJCfz25S\]ufAgeg2?3<0
`b٘<@&/<n`^xnUz%Ƽ[{
-SB@%uQWZK_1|}xx6/FY1OkRzaG!S&cKu~!eINmZL6G(2%*J+AJgƉ^=R@t#fS9C5U1V͆R ;.^6q0iPK:g  A  PK  C:U            -   org/bouncycastle/est/HttpUtil$PartLexer.classT]sU~NdtK_!Q
`SPʓM8UW(LoJ_{6&!g>y?_,`+H!(-UGVH툩*t&Ku0D֭jbfSZW$év㟵A9E=vێA!.7,aYڲܺ ۻs3UMӨr3oWhk{t
AnVRRPٵ)I	jQ:wj%daZ2CaUlî*4r]%O<u0:Bfď;;k\[v8*cZƌWdqarŚ:QX
è]n{i0.(4vYYTpc
f#$aS0%̜0*,i(8 _Pp04.¼A+"ǂ09ix[K\0,<ҥ)4vevnc8t}.-hceۼbTF JA|Vo
J)6X&#t>q8t%}smoL?&c\{tn(cϐ؞dm~<rw>\ʹF&{)npz>"ugʋ6)Cq^<ѨD#x_7TNfC/xwY>1˟0S;?tzhnwrWJjk_6=9zgsra;AO_= j/]GGiiuWIWqf@LndGrRvӽv]PW~0ɿGKD"Q7fh%/%S¦h10Ь!PKZƎB    PK  C:U            #   org/bouncycastle/est/HttpUtil.classTsE~6^0%
*6(h#iAc0\2w!
~#_qI-ߜ?rA߽bPI&ϻ>n>{i,phfZ2-
yY$V4b	jfvY*IuQjkޢ9V=\%}>Gw]!dHׅW_ܖUCR@;!Rn=_[d"zZvOҫ[$kr\"Sp
4Z^]˼T~YU0uxzY-'#UIӆXAPC<PZkϝ1(]'Gcca#cop11Iǐ)~z8GjY}tƞ9/*43@g	dUPMl l@Ù['q%/׳fn7wW)\PxCx
w`ڰ1ᨆqFJ	yqچ36FgH
5,1i,js
8Nb%9|b|a)pKz+K-{2|uEϓR]n?1VvkP-&@]
H#pZ#E׿	"(}6VWrN_':-dwn56ƍ빏nm2gޜ	QxX.9qsش34jLQރ~ii	`<C#82cEvI>賴T+,)^[rWK17lO~u- F-rmhy8aܤުNىly05<JX0KP!s`PKtf    PK  C:U            (   org/bouncycastle/est/LimitedSource.class;o>vFǤҒԠFĲDļt}dR~Q~R~i^rerbqIN~jq>X}jJp~iQr*;;3# tk6FV`dad`d`1PK5E6{      PK  C:U            !   org/bouncycastle/est/Source.classeN0ϥiC"$&1T!kYQ`Wx 
qS4/s?>cNI/8y*4aRh2g0e6G"&v0W)J+Vӛ;=)Dj	w.6F+|v^d8
1&ďbnd~gY]oE]yGgeaoj="
B	m1bzDF	󠝇PK]Խ     PK  C:U            ,   org/bouncycastle/est/TLSUniqueProvider.class;o>NFf
(F
h'FԒмTFb8ϱ,13'1)(,X\Ƞ__\X\Z\P_Z L,@43H PK+`k      PK
    )D:U               org/bouncycastle/est/jcajce/PK  C:U            8   org/bouncycastle/est/jcajce/ChannelBindingProvider.classe=
@oOS<ZT6NdakYx %&6N<yXc,0'7Dl**tV\`mR5JVJrLN`e\Jʺ%['KR%צ)2}|fiv21tf?[*P`ZMGzuPKF      PK  C:U            G   org/bouncycastle/est/jcajce/DefaultESTClient$PrintingOutputStream.classRN0}n!P,e)P -Hp!¡R"`To' 6q(Ĥ,b酃g<oG~y}zuU>bHY8o-۵ޅ#CmDHq颞PM W5BZ}GʹtD=iP-GiSyzRiKy&!UIw)火%Gsp9|zzwfjۤXLa &M$Ld01i&
id1F3F1ycX00"o?cfM)T=l/P$Q+h %hE<	F.?=9NGcr=eZ)U(7PK    PK  C:U            2   org/bouncycastle/est/jcajce/DefaultESTClient.classW	|&9,,rkJq(I8^͐,,;qwLZ
zZkMU
1^[ڃS[ }of7
ϛ{ߛO<0sE)
*Q0MtsSp
(X`fD
ޢ` DH<s]dqbJӭz,LGֵxk6 +銒MX"[	x/
q#izL#MPI>-ʤC1`3jL1֯1nͅ&0mO<M4v=9J4MMe";esV}IH'{S25-ůIڹ/5:ӝ'%̴Ax2-˓Kz
vr{'H۳%I	-f]NDmYװVXiJķm,|gKZiHi3>B6'XXbt/G)1.eZfL8q)'îD3	cVG2=!ƕd9KOJqHIN+7#-kW]3rOsC.%iӪomV˩6u+Y+X /eԻfsw5ùb}z*MfJٵE+_`y'=^Qی3Q:L?3ToSIbzJM=Fwɮ$FYCS+8;vjM>Rt
:w"f\4X&HI>gO쮐aUrI5o=Q_zѢv,i7	UHYq^^!PA,$cݹ@N&*Xyқ|wBS೼vQ;I6ٙKJtk<iHIIKX'^bDDF$6IIKox.- [$z%$=MѴ`Fm]kB`mi	?նԵ4|h|g d.?@EE9.-'3)hd*%7rAE"
xvמ^9dg@B-ؤJSh	_.JեTaïJPK/WUʝ38,-Ivvr<H%%62J޴ɝ78 Zbmmn6}s<rw֌OBp>!jh
"!pCfjXY,p	>*֐aH#.G5ap6>a1ù.fXaC?\`⠆F|BI
YCpnѰjhg4a.npnװp>>k5,5
	ܡ!;5l].yٗ4_fn
o=qoġr}3dU`aWU\aW!o2|*v`_Cb6a3*ޅ_ooWg!Ï~s{S1Q`xP)_0i7>\uxIna}x/'nɽcRУ!՜i~ǚZO>mo}Xw3S]ޤk;^ŧ!B#!~<{`v֙өoY^)"p+w֬<t],ګ*YQVߘSGq<z}Іƻ٦'@	({%n+9rsK:D<OZ4ފjmx;8C9D׏?!7E7Y.bW
	5x #+<ѬeEy 8D=08/tw,s>@r\J1,y
sdQzVEM߇g \^2Ӎr|	73*@a1	.D%6} 5#Ĵ{>.qqQ'	'QZ+oUJ@3١?(J2+M2Z,]!\U̗;ܶ0qg X}PRڣj0`KpL9ASX\ڕ/3|3SAGq}Tjb;_",)!٬r5{`7AMŒ1O+΁RPRYQBBT)	7>ŗ	#E
C"PR|:nxF<W%k;8}>o:y%}6VJ~t.Qw@Tc8O8.=$)^җ:ɄM"b&{ewUE38o!/yP*wvC8C!~X->QPK06o	    PK  C:U            @   org/bouncycastle/est/jcajce/DefaultESTClientSourceProvider.classWwG֖4kyrDMڤWBqB qEu
rqWzW9vyGyZn4uMGBy_d!N~蛹Ϲsk~=*ت"fTx7ةK
>>㰂@_m
nKbOlG
K3?]O5Lzk
wH5dqEU3vđR}`e}Mp<i
I_'@pb^!eDLВ$L(]gr\+1}BOZKkڹ}⑻QFhs͂#%N x7Ff42d&zcƴj
Rdi<hXcݴ=r]cx[^v\ޫKP)
ZNʛxݐ㢷FbP1KA4<SƺU˂c7'i(e F|\n^x^LQ!fFI4x^4W,ӭ/T8X*IC˗x(JmJUi%>2=Z*e="U^7T%˦*÷*ɤEN-`jQkH
ZOQ\jRE5d)Ɣ{I$^@mSS}<OKiܽ}+gwik*ʎ+{l[eTJ_uV>[X+[YAs;$^HO8YoK].*FAayc{pRi*JGˉaÛfxC>oe863d8p>w0K)ǿ65qb;Twn:fkKf,q im/Sn:n||6;R+?WsW/^-W27e|Uk}kiZYwٕ@+l/jzǗ9lnZ1TXp_6A5ޜWwm5tiGk5iߕGGܚKTʍt|xWF;,ýn#]cخvk8
D^mxLbWؤa3n!]BDÛ$E{Qp+&$Ii
wH8&˔x\ ޣa/ޫNOÃx]N|Pû!id1			)	00>	|EaHr_0tIfJ𔄯%|A%|C3(0F6"J$|\q|KNbZFuuolH9[Me_ʗ1#P`!"KCDdaT-i^h*ϧ
<DMJ.$:gq.{/$fl"D48hh'Z, 'ף>J{a:A4H\ĹEz.-^ro4nO/ 34z]E\	
K`s4
?dH:*-}"(LcN'Nd4:_ECTnZCu/^"
b_U
Nua3!?[Z뵲	^v9t}eHh?\NKYO 43B?kYͦVJȆ%ҺURm4JڴDJO_4Z0`Oש:]%W]j,`*p1(vүYi kH&<O_W.(qz/-\A01
C!0 װ_hf2':Iڎ1WpPKv<    PK  C:U            >   org/bouncycastle/est/jcajce/DefaultESTHttpClientProvider.classUO@- ZDOQ[<
ZAPD APKLmw%?&4$jwAăPl233ٙ~3>'%~HR
3)"R4\Y,CsN2?U "˓+T"&/\	0zɐz&}%LQC^Ob`pZ1$Uc5×H
a$_
e<%*w|XQ2njgs#2__&awrax/=+_8"Vθ;nٝ۬͢=ጉg<կ
xyR\Y7(SF,$PrY2lࠁZ1p@+ YlUU
El5PᏖ7خnXLRemCnUv8;_{\ajIwn_`h-S9Vmp8A0ެdԓŦV_wCL[zhk=pp;Y*މ
yYhC,㜅`&\pj,@ii^fWq=jvM>5
qKA'0`&NᶉӸgqS!Lߞ_uz]J"Zhrʜd8IS9=)
$)ŒJr$G4%S%=IʖȡY
l ma*b.bn/VWĘݶV_Ĩ}(b-*E;h^
Ɍ0ÐSpzTDwƈ(kx@z8Ӹ,2huk'[%='RPKAtb8  j  PK  C:U            4   org/bouncycastle/est/jcajce/JcaHttpAuthBuilder.classTkOQ=](Vl !Z0`̲mn$ qJ5ظɝ{9s?}P@W&%_l_bUHCvI-K:Yor /0%}	l4<"uk߯Sme(R_53K@BS;4|˱W>ʁ@1\k*xѨASo\"Ѧvw𼏎KWmMƖc$_!IݱMJڧZvFK|']ؗ
b


z$RkG黖]^?lJ}O:sQ|ȯb<R\;L0u*̶
kd
6Dmz+6wpxۡu[*zѥ*ngs7URPG*.Oy!l)h	<M#f͔@IDa)HZ(ŝvGOq_> nM&x1b|H;Fz5(paFaVa#
4Ej_Qa	͟hHa|0-3 1i,iyf>³:.҈:PK	}    PK  C:U            /   org/bouncycastle/est/jcajce/JcaJceUtils$1.classAOT1e.	9(l8@x 	RG]
N&&Py5ۗ:ϯkZ;?Y7
>%}ֱ\q[cAqSk:v}A`ش6wSyɞP*WȏG=Q`)7JjQvx2'FH[UpS:Օo*R:2wSX*}!ʾWZhIRUOjGӧh,H.͐e$C#X&?wλgЇ@Ѻ
ދ޸b-?hb<k`/[5-COKnsmw
V|d,M%
^T3RYjk>xRj0q!%t
3xZVPK]FGэ    PK  C:U            /   org/bouncycastle/est/jcajce/JcaJceUtils$2.classVSWܰJ%$bP+P+RVeBºn~9ouSڟCl0ts{wϹٿ7(paa$br[y廒5m4m̍etQrzҐsaJyCM_\d$َ$bX֢qu.3f Pʛm,Kc%m9%ד50'UK3YYuKqg޲o9[ttJr=2fSuiMA[Kɛv󜼵Dԍ8{w+t]Z\e>nh"e5GZUo\ӆYnF9;ƚl<8Wozi5ۺ_YLRy4!۪wPfrӋ9ZҒ^uM距]uCw=S&%^0dr'
yj`}t)XsYjӌD7Ԋ|0ѢcQcME)}Wurwf̩qr	zѵU@knq
t

*xMu#o8&8.pB@)
"MlPvJr#'6m,"ǚTq_>_lvySZ<m|F2Mby`	T*uܲc?ds-zܩ{C%c
W*5rRuL>w%a"ےEGrZ*iԡe5+?XC4GA1,:5AZ@P B^;hu
Inp
pY
]ѴCepx4ׁ1678;*=nt>r>UqwU\}M^e,OT0͇,eQ|*k>{"=&,ô]RbJz6j헕V-co|]W@Ӎ)8ň!@WPO=iFe/0KV(6'yB|)Vx%L[ c}:浪҆ ´sw6'&ֺ-NwRė`$WH	nT(D_$ԾHL`s%2zH(?0Dom\0huS6`n'8'Q? !0&0$p^EQAɋ=\pl2nE쓤K!<oeyH϶Y_6|oe@#6+PKh&  Z  PK  C:U            -   org/bouncycastle/est/jcajce/JcaJceUtils.classWWG-/Il+X5"mdn˾~ Ximl$O;3s,+Ce%KP.rY5w!WE.+>*D'}TTyٔÌ(zٴ7e1MlǫZ"e^YjO97iGNvzMk\5LQ=;j"IY.C'J2PL0f̃b3-eδH9wxߑDZhU
2kP5ǴTZfgja4ܯ:g4l&q6N{"fxRD\ޤB	(,ceKC{Jq'~*$,!zʚ0m"?"qhl[dV
٘^-5t%,ALFL؄CYHgGn)`YJ>3eI=ʬ,\C.nаfR.HӑnKdCr{dzO-kPRPB,_bFBŦ9m'<=pw<`Z1eLڴN)mWte,LY*ܞڽ:2co|E9e&<ޙ(c:1[S56H%m\'rg%~&Մ"ࡺ	S.EWD>""""D("/ "8LY`|gi;X#J.|e̭u)6,7MV/ir2+#xzѷjK}'yj[E~AYWb:jLYᯝf$},pεӒy</ȷ'W3g5TZ夬#䲈8hi/9؆^ulExdH(el(yp^'eTs"_*c+b@Fʨk\zN؈sF)NBdM$$4IhC[1p8LI8Ss2)!%pSa\,CF9+C'LINm,c .jtkՈj ?؉n
A"
6(pu`F\W2Y|S	o#QbpS}k͞Z=|)+XsQFP[4k;y,p~ OP%eADǟ؍Y(n#4Y|9||AqB<چ*gqAp6$-,´G}Mhgmٴ;%wTAfq]tqש_imE8FG-I=j7B&~~,BG{s칃ZB/|iz)/T8.~$Ԋh+8'Ԇ/PK+.ݷ  .
  PK  C:U            ?   org/bouncycastle/est/jcajce/JsseDefaultHostnameAuthorizer.classW	xTWof2w0``
La)M0A/3&&$UXq)PŅj]VkNZ缙mj/s{wONTQG)~?I(RYJO&nu)IUw6д17)?l`	
W%Riث|mlk&mF*2]$e٢S3tLt%4N2G:-Zђ-]z^)p͸6fή}hӭʽfzYٞmIJ+{I7iIMdK"mښaZ4%ͰHߚR+MZtFo,]`Jnm64%[uVB+#Bf"RZ4	=[[LQ,tI3Crr2f3i϶v}3f:%A!}Ѧa&v-SY>fϝMbz'4`
&84̤ټ9W-ZR(3,bIFCmvZ,G"F:edgѵ}dymgBo)045Ҙ,k rVa,:l#d5d)yTWbvH}29.ٌawEȰv|:-A[ 2LYYHEөYd7]qAf԰	8uFFzN1$ex4N~po1?'bru9"&ewˑBIuO'_J7[<t6ͿPᲯٔMv_rY(y ؾ\V.Z74yV6
[vdm|ː<^Q'I
wkٔ>m&]\NUz;aT1jS._ZP-,"N2vX+_]v U4Pvz@3IKbl
$nX-"$%$%HX'qz&
/JlIlxVmHl)2SgcfB1>Qr󆟼*:\MYUCي7ܮ/Ԫё6'04w\OA
(:@oB.t|fC&:~%ԌkGSײJ@Ո<Ϯ3U؊P^[#c+!kEHqt}?+/c>ټ=
w0ϯz;39]a0BC8[2n\Xy!p^i>h ?^=7h1-
G'n+pXQEZ`:m,d:tX8'whTLǝ*f*M*%LQ:*0AE%&XILX:Y5x8ުb>˷$wfx'w؄wx!W0مxޯPUC*n]*nKq0qHܫUh+\|BŵQTħTi^Xϔ/p~|
pBG)<`be&2crL40*LLUf-i֒7DA;okO܊c
2+m&UЅ01_*x^(x
n
^2xB!~
7JaRd0b):pq[mG=<AU4;!%nڷp+'GN">i!fѼoF1э"$4ѨϡCxZ!(a?5ho1>!b5'жA%wiXuP8uĤX膿4:k昘xx!ET4WQdHI/aQ.  ^	f#b5gIq1ESY8ubq1)Z+ak\ǆJ-
._BGd(p.n#x~o7v @Fp`u:@A-u2ۏ?bfA^:L
yŞ^8B	Pc5'rXS]pDiϳ\ˠ佈}rI?wruSü,=Cًg藢TN<펹5`%L%e!#n(E wH˘*qnQsP<$%
q#x~p߻e!]]2yIB vpΛttY0;'\V[o˽g:\u>1^D2'E~1y~*\ݕQWbȡx\e!
:YQs
n=[VK&K|:.{TNCtr}~E,"VKIoIXshOͱ%SQ=/ϒ$\3ʤzOSnK PK+	  /  PK  C:U            9   org/bouncycastle/est/jcajce/JsseESTServiceBuilder$1.classRJA}=Y,fhx%"QxӤI&=0	O ?kB n]Ez"%C>du0-8J5kqe!k,7Gٲguk?Y](-%pa}uDPthu.:"\4{?sJ5jX]U67a1 r{ܾFza\YnA?j^=BGu#$i`iDO B),0D#-=_Q}>MϦ
DI`\F_'BE[$ n=X}E%dȆ9Fn0+1f`(fIy5%<3FPKi\q    PK  C:U            7   org/bouncycastle/est/jcajce/JsseESTServiceBuilder.classX_  FkBt5YŘF\h4m0CwfQƼ~%m`5#~>ڞ3;s`{ǽqЇ[--*1}Qt\B	ԝp-psX堖*M0v&ĜnDP7NJ5˴tF	J3ZY22C':dhS"莰ykqQ.Ǝ6fB7ikIO- vЅ6:tRJgl,jIlgB]C'e瘹o^]R#j&#!wTGEGL2[@,3)ao11IK7ɋ" u]3[h,G&xFKBiэP:.QwX#]?`Y+cj˚j;ۉOEzIDޏG}:ȓbN8b,n$:c@6DڶP̲H&s#w,spx<@p;m_{mP,.ZiG$quiXkI(/FFpEwRєj.w,ƻyڧ܍grJ$0`煚G;\j&OT,~ݲ2rG[Gdq{dtɸW^de'~eqP2$#$Gc%EDPl2*'C<b5Abu$w9/H|
uW]"޹y9vuW){\~պB{BE.F-jQRG,~Ո)]RǊ_>wU=Sl?Yҝ ۘ+8V`b|L}wU/;6H^hJ(#$wzGk	Q?ҡG9?Wk2xV5O|7 $HI6js*UdU=USRx)8Yц6ͦLƭgbk'>[g}I=-w̯Sԫl:˭M]U.Ī?+J3v,*龨(؆1aUЉW
B8
Ѥ(+8)]PRՊyyI]gt<8T*hƼ,}pe҇,)xWU-oi<SL>3L>sL>L1|-r <{_bU&_gb  aD 7{L|'Q[LL~GL~'L~
C
oHhZ	!!5JKG
r[zT*(S,quqJ5##A&;Rܑb=H').gwi*C&'7tYo;$"]*~hԴşVFq/	~Vp6Zobp!_
wH_rIi'$#V3lυ4bPC%:Xs
.xV٢u
b39u	OF7s{rsǽ9r*W&<eݤw=ɍ?Ē![a|SIV>x-xV ak~ʤ`y+x%y~V^C {<@k]stlރuyvv#&E7?$>6јo-{9\&7BAG7&~BnאpUtV?nj#0>:A'X#%/ort8N2yliש(:M7AY~Zos*gǂo[ع}2?kA]s4qPK/g?  p  PK  C:U            8   org/bouncycastle/est/jcajce/JsseHostnameAuthorizer.classEn1DgɁ/T	VRD::c6O;ɧQ"f4c¤eyy=9>ӝ6Լ529wܗ[a̍~Se쇼!&-Pv<]W9P/A2\UJT{lK`0-T
 <{\PKc&      PK  C:U            8   org/bouncycastle/est/jcajce/LimitedSSLSocketSource.classTkSP=@W)RP-(">HAT4P4Ȍ4S!&e8?37PhQ;g &b.%k}#6|;'~ڰwF@tَ+oXV68.]9YrKcp& kVFי̿,sui;.N)-[JI#[r+<a򨴚a[$*+P+,3ݱmkaˋمm^n55 /&+hj.@"uwse1eUUT[`9g,9d渲UTԉIo 
(:D p]u&_&y);k:c%Q".-GD/L9mb[n傦QlRw)I95B:U] wfY,TNIHWEHS(RU-zЙRjL_W	/`:+<-%.zk0,		HJGHB7JhV,!pSB3&1Inns3F?ÈN}n̄	r&\nң8oO#Q5
斊hAXҶVB*a('NOnsFRCc#%QZC<J#\jl{?$GGi&ؐzej>jG0I5z8}܎:1E8b u Gj#!z+d)!F#zF15ZGx^/ZKk:z2$l*|geUY5HPKNy(    PK  C:U            9   org/bouncycastle/est/jcajce/SSLSocketFactoryCreator.classeN;A_XFuh$f!ôt?Ef<VRTA}]B}8#؋UYXV範>)l	ܞ)l3Q$~&VٸSWA1lseA1Oh!eUz1	ڟ!FZhB-!U9N=rPK      PK  C:U            B   org/bouncycastle/est/jcajce/SSLSocketFactoryCreatorBuilder$1.classTKSA"P䡆.
>BA7hK-=-1,,ĂC^8hуbQj& AI3ӏoo?4C,0Od]UO9煳hBYRzC²TywJ"P?Sv"CĄU.14\<W8%eYamNR9>)Z>/ԆW\gfH2J#(pJC</YwghK
^]dK<W:kͦBώzOmgx/^EnkePs"Ajۙ(:JM@%H	KHeqgf6Ww5ˣdw},PYWvӽ'שbH!0Amb@0
4h4d e`8DbrA_jk벞o9*lGǭ[wEs=~&tKz.B<GȲ3c252y"K6]N)w`vQͤة`6PU 8n-8e0Nh7qi10zL$1Q^{qDf%Љ~-kqA-$Zq)v\״I\4ٚ}j6)#)asl((OP.B,ҨiFǢ_Nvu|B^#Wl&I^}lk=ct5ګj|gL2B}|%co~}-G1:2bkc?!zP4#ev[4V7W0nV̕o72&P׾Adޡ^m8Nn:N%AcDP
PKiԊ$    PK  C:U            @   org/bouncycastle/est/jcajce/SSLSocketFactoryCreatorBuilder.classU]SF=!2Fꄄ|*Z!IP!ЈR>1(GZ)Scf]=>8{νw
[JLZi9pfT}K+hTe##SXJA7FT
2bs+r#>õKpaǱooݞ#=ZAX\'!	l
q@hǫM6#JP~(%ۤډW*b^PB;I<I&ISva6v
zn,|nX۞qqNpz"v"o1w7t&Y6)DU%d-Pgj_ .WrI+jDPCA
g5isF4\`^-uhijE&}h6T'|q5DM}'$i)y$P7:%xltw|;Y?Ef7SpNIuaZԅc]q븄QL븈:SWЯ:.Öin_c
s|%}i:X`2,f0)7>Ra]K>Oϴ<-ns:vV[9&Q\y
[y\yʅ|??d7hD>Vla >o޿`R9gO~# d%
SL܇yXW\wkjQI2Mzd
(G	#x@Klw;d }ekyb[񗝔W1 f^,_0$I+-:>@qJ~ 'Xs$!o9PKE׉  
	  PK
    )D:U               org/bouncycastle/its/PK  C:U            ,   org/bouncycastle/its/ETSIEncryptedData.classVWU
>҂BFYk*6J!y0&
~ZPs֯	)kwH	k}_~pUJA93=m>?{~}a_xPGwאn3_21"Me7e\a)l4m\) 7ъɤ&q
=8ca@yV'/HaRv9j0nʹ:-F̠͠9e%ȇ<Z=1*IҰe\egX[BЌ%-X`>,ca7Ӿ`4*hmJn
blrVmD}a#An02c:ld|HN)cŧ}V/>=avCN(ja'|P ŁyVвH+=} ׅ( F(PR.ר`W롢F"Tnt&Z%Z,Hn8BR*?QTޖs(hX$̾5|!*OUxj]&m
!pNF{
/p@+,"*&.îrBUp>q$;r{m.$Q]:OjsQӐ$٫Ϛ{Hm?<@B6!Urǔޕ {d.7LK5&@GN4pɹ0(f6c΂[II\
^s#r)-vbOZ-]*̹3ZP6ѰiPqRC
ְe*Qm`ЄS/hbLC-ՠ1
`wPR:pNg$z!OWU3*:!U`
GVqITY}0UGBy~U$V .1I$9&U""jt!d0"}3HB-h2>	I˪1mv?h5Կ/i4W(=!PriP8PӒFDk
ϧߗ#rT8Ғխ7
-
?x}:h^ě="ޫ5iURx潿wT
ѝ(MGX&#p[@NhNՓsNf4M2f9XƉRx<]k28onl&
C4N0">
|&F[u,
|ZWoFѵ\@_k'(^İ^sxGg#4[|PKUEԊP  
  PK  C:U            3   org/bouncycastle/its/ETSIEncryptedDataBuilder.classVkWE~6	BڪUp3\,@$Ʀ
)Vl4lM-U{QzG?XI Ory罿_oV	o+zW
hc0
gFGμZ:MyCN\EF6-,+VM#%%>wn	1#.,G<p)/̛wDzNs4ԤW.@ER1f/GX#:6Z8bjCvTplxֲa5^>u@,s̒	rS5Ɋd&Aw6_p]\@IP3&C;"VIB
MsHhf:NAM:͚}v՝T}:"']elj[85my\:hw?C'C9^bpeW^eo&R0[CNkO͐Dmo3t*O}CN#c'i5d1ڴ %s>q׾j072{ך3Z1?TD\[oП#~RUiSu{Gn(ܓkc'68>[pµuуi(gx^:bYю(GMqJ8y]Gxq9	npbCb+|bP>S1/TzVq+V%|b	ITDI*ֆpS­6,6")aIܘX.MbYͶ|&9KhIGKZ*+pg2= ehf\)}{B9ѷg\ن+2?% f8ϓF2x>WqOvȃ.ز'*vY⁂#'F";&V@Wd|3 Q(Av3RD|Y]ĽmlT;nxSAU
ʔ{qbJ1Bգ?PKQf  w  PK  C:U            )   org/bouncycastle/its/ETSIKeyWrapper.class;o>vFĲDļt}FtҼ⒜T̒b}א`OĂ"Fr M#IC_~jXofjjeJ~k^rQeAIjKbI"4ۚY@L PKǌ      PK  C:U            *   org/bouncycastle/its/ETSIRecipientID.classT[OQN/,]rQTPB")Q+TGX]L7(/}D,KMΜo3{~
/2D}+3ʌ4I{P7aٖ7Pϋb&/,8wB.ClMxe^[#wg<Af-qqimX2yCC\=	$9͍׌υQ-/g3\pkƪi[&w0,5s7. S_ :-!е]1
w$jU
okCl˶oM*"ߢuWjSTpLAv
+8SIR]WIW;TDMM}k@k%o!o=QF/+rr2slՂ d$h5DgʮSd2k5uF#?RJC.jP44KQ
aE4(jh@44AЊ5qY44*NcXQRPэ3bRYI1FTvU1qn˽;)lmIoy|rEZuL.]t}:IިEϣv0򑰁 A 	SLOHc)!´;D#.zIZo
ѕ?"*#&F$\iN_oRyiA2׀=F{ PG#	A:Uu78[2ƽ0Xz$xPDH/<Mt,ӱ˘)
[PK    PK  C:U            ,   org/bouncycastle/its/ETSIRecipientInfo.classV}Se	98.BѾĶV&B!ikCy֊oi8ܥ~?_k{IiH2̕J۽gw/ !xû֢%?oasKB4gvb9ZԨEM+3lvUn%E)HKIvJJAdꎰOüc:yq2-H-*eXk°LdfL=D5˛uN{GF 'K)*4*؆.fk^dY3K|,JZ9cs_o
X.Yv)mMk5,Z͜Nf
kӞS2k$\3Z2Yw+hU9iptZl	s==-C1=7PdFԺy͟bWnC+(֫ڣ:ex֟rW(}~_ւ?w*Ow[	Qtt}cfv.[D6r/acT*aeqNyox[FTe#]d\qEFLF2rKw(%w2Z%x%e<(@heA#%;J]i_gW\yf7M/swNDɇ"o}L|QiĳyZ=헹+u5/bt{ܧͥU(HHfa!bA'N1aP0C7T*N3a-'"cȨP5TU>fayaaU>S0uWqG`[Z*
u_2h
fqO>Wp2l+}-ot( 	~d!EhUȕIz6`AqG"iu$4&|
x?\8`AC4m4Jl'ē8n9.>? |?1q\zlךx6\<jvՅ
F.*M4RAMSHȅ=;<~Gcߧ䉈<bׅIA x>HtPKBg%    PK  C:U            3   org/bouncycastle/its/ETSIRecipientInfoBuilder.classU[OQNA.E.*ZJqK&"

%Xn{D
J(l[LVtf7o ưPp-xʹir!#mj̦"C!.3^#/V:SXDf\3yz[=9iCcI<#^RY|#.ث"ṜGdgy2+tSz|#X`5GҍU7^aoc
!'i[\ɯwԟjԟWBs՗-҉$Csk!Hqˠ1ӹDïާv*P*+hPШ&}>1_-M8)ʐ:KޢV_Z9sR$hoU}F^_H9>u4ێSY1u%v{fqɺx/|6"
-Pn
U`	h⾆[p}jЊ~
7֠` ;xdPmh#Sq*:1qL*עtU_*v._-aYYr.]Iɍ5݄FOA M^tjR/jm@8I$Wob*<ph8rO>z(0IΞfѵC
xJ,P\GvHO"N!^Q\&DJz/PKl    PK  C:U            )   org/bouncycastle/its/ETSISignedData.classWWW
ۃa]qpG@JHԤT'83Aik[zZs|7`-p߼~{%˯ vjH(5E9(t:(w:(N{JBuW"}PBU?l[Zjoֱ/jkLy1%un<Fxcm̥R%Ǎ v"h)LS#Ԑ;gh	;gYtzH
c᜷mYT;f\P(,[Յ%y
iDT1	PvsA
a+0'lkD@Rmؕ9ma4YpJGy&6FR)>bj<ۈQLTH`艉j)P-=owJ@82TmB"TF#lj<fCf"IoM̟(X(3Ζt`n}ʻ(Ys4Iu,ږҸiB4xݰjq{"ͭ@ޖ)ʵX:EX,?Q#չ$\GB|v%igIPMi<ZۘQld^rT5.쐦ٜa-:bȰa3fa;ʰ! aQϩS|xV:wzX{"58h9 <REU.9nH#e;QJ8kBo>ĳS\Z^
LR65Epp K5=.(=c	wKvWxwIz=NExQxPp!".sUPge2rÈ&YēX>t/ū^_Cw6bA(hDT~BĀ%(SPruBTR^!J

V)X

)h
VgQmP°HoIkЃBh5#58s2aLetэ2.ȸ"#e.'d1.E!qBB<%02%!&xZF8
C;^Ctξ-zFt})ղ8ua8UpWL3e?J<}Am
'NuꭢLh͓x
/ 9WptkI'ujsE]eR]CmE20zLi=7T;Q7^/tNϸ*JFߢ)ca B5Co8hM
zUNv'(mO[֣q~5ͥ,]7#'܌0L?zқīxm/<겦M|R
rI˜/iymAxH޺g6wc[.cQ)j0Lvz&~ĕZj_PKT3    PK  C:U            0   org/bouncycastle/its/ETSISignedDataBuilder.classXw\X@V/@E.%`ٖN:nq8'qzWz,Y:NONw)vk,x7f޼y3s{mc(n:j<M[Ds%-FbcCis3[kQ"15ܦ
mMDJfCj܈EBz(.Uz[Vװfp@Uiޠ;4ckoB<aKǰGgGU sX?Z_4!ZޯZ<b24lMϪ6*4)ș*`L7XH8Oy4LC	 ]-BYHĉKA^91Ըbhd慧?^`NGX?p.-Fgg;{O!wYvp"fD~kH{D*;17;iqyb1majXh$FT+znG]?c`X	޳v b@wW0<>\-9ݕQiO%[s=^6dhm4S1A7qgp'^"]ϺVNŜ_o!t_W^?u0/v[H
Π m20u
:3	2i3.)tBrBGzHjJuX;unȐ)Hΰ-H{t^`CQd&Ӧ \r[%MWc"P3V
eU~fnJ⚡Q5IA;Ghy	,=Ft|M#1]
[ھzJW.7C5%eCH%q%U	$AF	^	$$lE_Bz	[%l]	;%쒰[BF	M%<A	OW>	-Z%IHxÊv{
DA2z=~{ M['GGn@+$n¸FХMv--گX	`NuAEɳg"~b_<1W]o{~$n!vB8%.`9LUNÓaSYe''{vO"U>caLІS%
CR;Q↚g .4:rˌ98W+^S+{fiR)AzSeB՜0`wr$ʙkJoT5%rRQ 5N:~a2*9݉8aSȻǸFL&ǘL>ޛW%CtMǯýNZx[qFs-d;IjVIұ3Y	Ž-N{?v'ɶ=/g3{\5}uW=9~Ɠ^]2OJ-ws+ITVwtMVg{f{|=X[8q+<cn8*Y"jqDXR#
<KQpyk|x!G "/ᘋr8vrc>^)zbb
X%H9^'V_QD
G6v1|!)xnxG's{9>v 9Ca|c98e +ӑq qq#q~(fSyLO
UA'e'*,1/ʈG2N2Nk2 ?g2s1|C/	uA~!/eg9q|[o
+A~-o?w qw q?1qS8Or>A>!ȃ|A|jacɭQEU,#gENTEϰJ1DV<QԫKm^%z%`l3V"_ͩI29$Yy/H˾QWsZ<e}oM,-G77۳[,QbJZNUctMJq~ͻ&@xqT/ cfU7ssOƛIdJ3l!
50z|hKxd-kOj>dl2ޘHX$8X361^)VzR1ޞ[H5I'Ŋlim-IIxsU'٢Q7+"LI)ҕw
II㸹gnԎ%%cl]X#zXZ.M؆";K$ՖLOg-HH<u#Z+Y	'%x^7}<=i Pe{B<STb]<ENK]I$NGqS?kGLﭠ|<}	E$QJY.IVr^c[Xl+i3[qYPKmȱn	  W!  PK  C:U            ,   org/bouncycastle/its/ITSAlgorithmUtils.classSOABWBAE'
C^lRl۵]r5	&g(b as7372~82CcTdHWN.k%L[jID٢pO>ZÎ(ޟtO|~i&UP_+7/AAo4E=E藸BwݘڒVD!O|K| 2oPꃮTO*զclY9W&jgdm0,U)
k"$"CظdMjR(&idaxկ3`7Xu1fsƤᖃ	ܱq
qwm1BXU<40$-H]}=y*
d3-["o7MeH>cX
slq$=K%&]#8̗R1lqb!|;0ϣ>r<ݸ PK  '  PK  C:U            )   org/bouncycastle/its/ITSCertificate.classVWG-,<]pEĖTSyi(kⲛNeۿ
R~;	l0̝߽7w<?g	͑/%"q	-ոhC	ᛦm[:iuI]r,ml3Fie%5ZI&9A=
}'m2R,7b}ؔK,{.7$Qb!c>5;\NW%tQ{Y̬ɋ5ZH>5o^Bno-2휶w!i`EC4{Zj)]X=T|/Ce4䙫sՒty=(7ʎ͙͗E4}Ճ~j3lM$"gꁫL"16<ze<ځ4lLN2'ΐ+^3O\ZٓseT2mH8v.h
ܴ4E\:3|/evm܉9v]΃QrVkr&-'e/mxWigdqNyd\K2ޗ08xMJ.GHdd`6hOӐFCG؈=Dv3x*m`Ml316H\׃4 z
Kda=%
+n]pan_t(nHd
HUO?,Cݿo@&Nc
ˑT:'gkXT
8&iTѤM!TEE܊Tt"]Uqs*bWыѷB=QoU|Ҋ)XR+
kJwXVud37`	|)&0
ֆ[x(ĪztQsm&,5\7y~ǫqf2=*"^;;$V(mX
D*%ECwLq>%FV(mػn$*
U\a6ԗƖk<!#Ij!Iz=Bu2V6KxM7*,!_x
|"4x*M'=9Be +T*o39Tb9}mL_EPKL$;\    PK  C:U            0   org/bouncycastle/its/ITSCertificateBuilder.classVmSU~ٲ޾R[iUy		@_(Rb6nv/壎38Gꌄ/3l^
iمLι}s{9w~y$DpKnEӽ-fwm\8U f6t[ӵ!G,XE.9HGfSЮۅ,MN,׸JHXE}KUu|6m\6uZjY`EBMrg697QV&y\)r!RGkƒng:vZsV6J
[M*3}dz废)=DuSOڙ̛Ai{k_D.p{ϹyY'rpֵ˺['dqJi28+S9/8/れ$;.a*`=pg< O=Ttx)z4tw' zFU.dC\jD5"Fu-
9MO2i!p"Yho_
iQ\m5j^az7}BQ:&zKU"/b=*1߆ssH%-}c303Wd\cx
i&pc1Ў[bëpb;ݘbwp2^FxO'LF=Uh>,(GVA
 0$'| 9@@ż0)}վ)ˠ@.*h#>2Od]M_hy-_^LH:EfGE6<O<|;d7ivRr'?H"LbFWb;px0J,چHnAbp'~~

X`}/A^ ȃW0?Jࢯ>uy꒾F՘wcLRp{{hP[kz|=KV\AwOo=
A
V+X03TQc<Dnw'|z.V,~~OA7X]./2Uh%|IPAL'U*=PKCYXZ    PK  C:U            8   org/bouncycastle/its/ITSExplicitCertificateBuilder.classX	xX~ɦ
i066;XNQ)rM,򮲻2M^	
I"n";q镶}}ptʶdie_пogzfgfN,պЍ/aAÚ*lj8.nB6*USv%5%֡ګF#"BpUKzb-[
S(mWOJM$F4M꓆KEhN[I#V hB7ZՓ}-NwuQC!<#ky^*T$aƔɄU-	<XmnV߀e4JS/+hWLR!>]"Zgykؙ)+lYftICM_CZL
}䚢+aj^a%+4Z\Ñ_ѨT]d:՝U69A1	%IԀYy+E!Q7=Eшi%6{6tVV(F*)z
e3O(U(AǷYTpA ,`)	2RdV][ַ'7G	uSqū"Tn,Od'RB{S=$ԢF>1J.	kPw_O*QcgL+1,vk|IྜྷJDɍ(<i#AUe-1/'WI.٦Yˇbs+$o'2͔bglky%jEHB<-yW<: ewE̾2y%ml^/|KH&(H'n$\Z$Ԅ0"i*^*^\iRc&A>."󈫝Ԛ̩ɜښtnRrn-j]fmZlmVMtbʣrPgN%EWfY:	5)_ӏhq'J޲Q;XX#$
ga5SpCF&f60ldİaV+10Zba;3Ih]~lY>m]muP3")9mY =;S⽞rnFvQ]DTZ̼Dfu

5:AUK.5+G
w
&1KK)Z"6Z뎲
;UR8^3smJry0М5g{5M6T'N'9]:ay%#]IhlvQi6Z</xZE.lu
#UmMٛi.8V5x<{gT˝Na7&?];)ϾjsȒQaqFof`1\5.`/Q[9s<q{</2\O
U>0KBA{R/X;8NZXr .%8q '8Vne^+8Bx%5x.Z:9;&x3G"s wyЃ	xx!z{=H}QGƳ!2n2np#2Ȉc>.C2i8>)k2>-c gdh1
˸
/0	&NxX|YWdX}2h5>"
x>'?+;}-Fݤ#1MŔ
[hd%+I^ʬ^
 Q:Pnje$RTnlc@-:δ6Yק&9rT =>~|wT*28{`#*fU6gQ	pI*zAi?6Y[0?U*Q^E<nƏ2(O|~<ڀg7u/F3Rc\W~>oeuwۅN!;-ΌAr	[z'Q3>~sqjV\!g5T~`^J#jF/`UNM zsZ}e>y/*tWO?0XO#):zp9*Ab)uAgcK9=dKb%Ñŋ{Ήh<72. h!WPOvC	C\PKIY_    PK  C:U            8   org/bouncycastle/its/ITSImplicitCertificateBuilder.classX4tOEPRk)mvVjm:sI3afR{+I
n?zΝHI_ޓs9lso~w lHHXشSBUcӮN	]bYMm[$,F2eШ[%N:۷{fhՠ\yiک	A)EhG/A!RkcjhLq~ieb<MhE_Ogt	9Ӹml=9_߶f-S7iz2U
nk+am\N\:o:'U\-:{\,ҬNT$츩ygwuX̶^u`t	"6?bKLߋ"Rjv)WHJꔣ	m,rk6.^IWJnfӤ5ZP+Frҧ%.;[ԽgU6'wy.]Kfq6ѭyPr褹+lZCRU04+2θh}eIR0rMQy_P"M+Zsu|7{As)GS7%J-FA
IXDSq:N\{iua'g]Q\qӁK͕A=+cﵝƔ,?)g`1p>d"1\°aå1\̰a]¦R0Lm!%Oh
)zƪJw$kl)I),ٴSDnh,jb3*$coG&L'eԄ6^Zq٠Ϝ2*~m*X~`J`.lX%54ww`@h^sW2zKVw"U#	=?V}{ӼYޟkƼ)6s%ZRSVi!)xg	W+}S1w)yJ((K
3EN
-y	]W<
bPAspsSAFQ,PP#- *WQ
&.uYnQ*mby`-uح`#R
Z1`(LkGU`5[fTíA'<~
@EF+*K]2}сe$qdlхgde
xHc'e\<-<"Y	x^6 /Ý2v[pw-ob;^wWPU1赥ݤct|M߻MK+y] $9fiCFL6\ǓH+y|UA":1dX(iobAN1v y|EHsￂX
A~|$ //xWX2r&rv
_ea+v$J;za-JsjH
Lƚ->9ޤtby<ZM㾖U8Lg7h,J^v(VjcQ	LDp
9#x3χk9|AX4s.,sBSU{|DH)ݸ?Rt{pPK?Ѥ  X  PK  C:U            ?   org/bouncycastle/its/ITSPublicEncryptionKey$symmAlgorithm.classT]OA=-l,"(j?KQZ!M1Xlw%h4<wƴ>ܹsg	gPwLX&[.C<SKl
p0?lAhmV(\n8"4o75:WvZ-*1$-W֫vav}3:ص6}l0oZkyM	ƉťZQ9/-obhX!f}BX*C|E^BS1↊ru.S!LqmALO5K*e*`ol
@U
UGw#uĠIoV(:tH`^;:na!	y b3xa5L!#MNDV#ҪGL{"E<2gv E*m"RR0>+>N	 ?S$?9"oEVbf=Nϝa97!	bX O~?O1VNI1,'(u U)HLf/PKU':    PK  C:U            1   org/bouncycastle/its/ITSPublicEncryptionKey.classMK1kۺ[GC?"BQREJPSII+EGiE!ΐwO !HCܜU23\kxɧ/.4@"LB_Qn4? ao@'i'K㔠ldgp&VAAAw+Z9curIsD_3̘;%DTHcE
6ȣL#pB0Ս|ZmC^:R+ٸe]4o^߁T+j^ PK@;.  A  PK  C:U            3   org/bouncycastle/its/ITSPublicVerificationKey.classJP[lwDX(>9)%GBJA\ >87.f|Ϸw 
4 L<Y&rd3yIY]djLU*)삤Ee*\kXmK֜Fף楲eN<Yf4ίXk{MD}&
#_U{<6ZgfJ_bc-n~Pm?̐Ug5 PKMH     PK  C:U            4   org/bouncycastle/its/ITSValidityPeriod$Builder.classaOAߵk-jEENibj?XB҄,9?e=hbMwޝW 3fG*R1KW$8~(3<#0RB0Ĭi4FBPhPd/dam24Ua =ut,\{BKJrtzW68M4COF$m~$Td,Q9խ382TOkwz	Q_鉎_6..bW\0梀s.f`kezpÆE,9⦃\-ïR܈Zۋ"lBkI;+yXV"ͥ?uܥn'{u;Gxxi\=Qʱ[X;v>R4Oڰ.kX{RPK,     PK  C:U            1   org/bouncycastle/its/ITSValidityPeriod$Unit.classS]OA=Ki]T(GŶ-

@Q`@l׺dMv[b?GgtC 9ss޻3
`U0C!ŐfP0*AomjBܾpʉ
r檄H9XHU	o]Q8p[6tiھn[u~mz[ѦngŢٰ]$~<_B~li6֑2<7
שBڶu!#i5MZM_{8*[nJzVǺ2wTĊr=_[
F$8S(2esrO^jMr%sGsO1=m%Z\.\αa_.іTF0!!!aC*Qq8LC>
i8pPP01'1Lb>;X,F6:8'*(Y
Go<ry9
C7ZIZS'Nx3Y[ ݐ6I%
,t]XcBcFBXOy~+OD+y#G68H3/X$TG*~}^bYP8,TI(YZ*UJR0&ԪPJ<Ʈŕ_d	uVtPjJKZudZNQ9	v/pvتPKY  r  PK  C:U            ,   org/bouncycastle/its/ITSValidityPeriod.classVRVN0hܚ%
JL%$
)Mo|bDo&Ô>@$OB9s]~:$^1t 3\g:杲#mJ&Z
c=aIn#w
qgI-S-
t[0tt*+-O2L1k'Bfc%\4䷄M`kےSL(Zh-a]hJ޵-_HL';phADkD))+BO%g
0/kGtMu9BXǓ< G\u7|IyDYUlYcGoGkS
=jk5hpat%D{?SZz57>EFlɤQs:iqrO{I#"dI#z)V'8ۂ{m[tn<o[uV.R3CT՜,w&8FUn
 U6<@ބO>-tpqG;ڔpt#	;ǡa2⸂)e}N9x],*P%CFǗX1G:|#qxĪ$|ĊOu?(4H-=R%O]z<]QEգJ4O*<6iGHF:zc#?[l&H:^'W{8>R/{X'2CǃܯGC1'/ri ҄ux?"A^wFjc6)C$`/oU<D\>~BTQhqHRZqV$VbPKIs`  	  PK
    )D:U               org/bouncycastle/its/bc/PK  C:U            0   org/bouncycastle/its/bc/BcITSContentSigner.classWwrrIPҖG%'C)-+cdZd+V+'NZ	h!ӄ>N{N_hWlI&ir|3w[6!݆/*;3<QS
Z
&&	d>˱e}C
(S~3,C޾e;m8(c9+/~̟)Ȟ5:6K޴@
&}v%y=j9Mrxɰ
6#=×Y+~#3$M<?3`/E״KIϷ&-_3@	"ub`ɩͬuQits2,bi1dLl=͆K~g}O#/bp{E4S"9I
6Xţ$XN^ƴ[N_0e\Gʮm8y=c2o}^4%tg)SHjn0'J\݉\/YvNz
'ܒcΘFѷn}z_vh_w&mLLvtjOc4l:@/m{%:hf4.tW_mS0݌`U9KP3~맨S\dwcmMugMSəZ=^@xCA4)ҩwԱ-gF˞j}1kMO1),I_6ת86 'ϝ*/>+V|<Ϙ?ʀ8EX\@)|R۠Q 1Fc{ؤa2Y
ha/9;'g*r#+	@n=^}8$pa{zz8k{F/5&fTb*˞%QiJYz&^[HcKsk6WE5=oRj)˷e/o*9?4E)pFz5Yav4phy֙ȗ_]ɝW/>F6,ݵ	
[w%Z l_DT7Mf/Pogy
Mŷ>ϰ
>p7 mаrBj0Njh
[ 4:Цᓈj@phC;,
Y
qN5հ
@罒OagŃx"p+QWd7cxJcA ~_OUdcx?SqϪ8xax9_c+]N/{gx<}Ʀs>;<w(3
Al:8̕_)V)S~;'6!E"+?L8hP'f"92>2ޛåD^OKWb<͉EdǮ7:˳6&Kˤ/Tql#2_O\,q//-ë5EY^ƕ2XDWsx9AWpMmsxWõ|ԊpGpre'	
n
xQ,_7Rc=Tغ5w=!0QiTh\C_'LTxs(nǟmj`rUP
";*kC:? ZgyB+AKfl^ܵ8W <oP(^-jkeߕ$1U7CeUF98PK~    PK  C:U            <   org/bouncycastle/its/bc/BcITSContentVerifierProvider$1.classR]OA=X(|(P
q5!H|HӲ;1ug333)& P|D
=wsr~`-1Ks(oKHyW<'z(
O1ό)U`h94G6rƧq̀:͌^>הmg `/25<5=;k%G"Md'49aD3TFѠ)}TpS.]T\̸/>3h-}R+3"#Uo*n{e0sprSbyKXMy`٠ʄVYO"D&'0M"F2%:Z^ )[
Wa9ý34߰P%.:^+rpz`2ܲ☿j=`.w
s4*Jc
fbmZm/.|*]PKpn  |  PK  C:U            <   org/bouncycastle/its/bc/BcITSContentVerifierProvider$2.classVSUmYKZZ$$]RI)o!Yv	>O/>@>8~߲\Ia~/{6 c)y.(莯L&DXe""˶]=B13)L*)<opxxapEAԲs߲
WTp`Vq\KVeaKk~LYɂPp7dAXWy(^3>WZ&]q܊^re	t*;)xVO2@I,kh[K>i担cK*tA~al4f
-N]t\%+7;D,-mDĪѨ;(}K[Ҫ5<=/hpDV-4"!i?Fm7C1&~ܟãdaE{G$
p^U\P񪊋*^SqIŀUⲊ7i-N(:}.HGH66aUPo5<n"dq)T(Z=oyF|cY^t
X*F<&Lsb	?Bfsym\M&VݲV!<e>[Gƥ;e+vRo҂0mp
c0kAѠ"]5KUtk
>pz1{WC>E0>"|I|`,ϣbA

Qb	|AF}ȲNp9۬9eWf:e.`ʴM~fx  
Q/RҔ,PT;q7|L
1L]*D͐LrddGɁ&&(&w|3-߱|0vib7CY&AV_}-A ;Ⱥ¾O3ďvAmz3t*D`1Ni_3
^l+"0D∏YG|i6^šm|c5ŨUFTT~PK/I  y	  PK  C:U            :   org/bouncycastle/its/bc/BcITSContentVerifierProvider.classWw֖<zLa[M!c$UMXDUwWIL-@鋶RچK1	Cםvק:gΝ{|;zo]mDW#xHB}gW]yRBk2&s2sL$|;Hh11Kh0c<g
ᖣOiYKmw.wDA繑*9j匞3˚l<ZrG6ömuzM̘zޛk&?I}q#mf8-Da;]B2~y;ڨ[t `ٹf4Y=sʞ,޷<$M/en;TTiK4#&r9rIhY:;٘X0H0ӑ+9#kZYu,鹴f;9jѧcD~"
AnvyCݯZ33^H[syTiO!YڬGS
쨁鎭&&Qk\hMXZC[G-m`3%,G`MJ	2uh
:?vO%:hr^O
9ݟ1~uEnbͽ+e51u=1?37f`6幭d5Վݵj+/#wW[A gb	UVUhvbzn[/|8=trC-9#*E#MseiF,3^8c\ꊈ7,V[iӊhU60la1t2Dv2t30bPzv3a0A}g} GYPle-g&Aj!`E[!- dwv,pkg|ݙ_^>sؘ$G,hsbkux_¡QxϒC>>or	;aZ%{R/Ym؂%jϿ|Ci"^zg|r{_ͯCM.{ۍI'7^1/hcLzD(Dr(S[O	f3Z1^pjk7dl2u\0<-
ޏ)q
 \A3(*ۄT
`
nGC)81+܍Y[WR>
*8'I#I1B|.cB|ABxFa |YhY</ċB|O.Q<'ķ$/c?!we7e|?wdĳ2&qA'E!^q
/4a_+B|	~@~ց@ei~F$%aiͩL gh	Q=1کR|)c R\-m)6uA#@X-ѝYx+EuzͻxoWq}0
651򯎞0=QzK]K<h:мéu%vK%(x:/7h	&+pQIe---5?VJoe}8Af1},p	חV
hJ@FhD^B"N1*E_޹~?#}t/]	o7u+B\[_oqBPįX-UurH7</v?-U,pb)ZD2."&R0zJ;/bgx =燗xG/q|cjD.+&*	@PK1zQ    PK  C:U            =   org/bouncycastle/its/bc/BcITSExplicitCertificateBuilder.classTjAl:TkcekŬfEPPepf'мORoXRgqfkbVxegw #pyl
OURi7{1T|b
Ca#V?ФfAOq<e t	>?e癤l3yN3x	tD^¢f	?`R(,"#~6%Nϗ~7un)Cd˼cIwu`?l=&}%90O$%*KOY̱ΕhE9aGM&7ulFyLwsq|b~rS
̲l6X1%z+<Y+z,%(x:~3T5߆
B熮u];]ҫBPf5ƕcDepQ7P%uk=ʇ(qn1u-[C\>Ȉ7',PuU׶cPKMd    PK  C:U            =   org/bouncycastle/its/bc/BcITSImplicitCertificateBuilder.classQJAƌYM1"Y/f
0;?S@Y_b3P]UݏOw T7JG2昡tA*E|i2?l^?BRDĤ>%u0cLE-hwv+S۪I-M))z'_-.e&1H3er8E)gUO'Moqc<n~$kC,i̻0?F_TliJ:H,(0{l_k(±}bŝ!n2W,6X\BPK+    PK  C:U            6   org/bouncycastle/its/bc/BcITSPublicEncryptionKey.classWWGVbKUZ[Q@R'ĈQ^
UоW7qA﷭e]j[)Tj;K@$h8ܝ7޹sg:Zh(F	%ʘ+I*6IoM"aTђfڪn,]_gHX\ux^Cעf2w	3\MGBϏfT#-wcS.Sz<әTʲ0϶ӡj;&	4&Xɍ̣q
./csjFYƇ#yϹWQl!Oo"|.G=Vհp0xB5D&M'z\Q:
y"`ZvR54RN{
hj1xXM5ζh T\sbq2qvm.q
9Z3KN
np]y&1
oh$
nX шkv+I#_Э!_@MwXWgDj&m<`JRuiy\FgCF<jpFsk9[Sp/Gg qwf]bZ֔эH2F5͍Qη)yk7ߢ9L6	֝Ct8hrGJ'Fc5鉘,JlNS-%U	3:f5_P7o#'8
\a8=d2,fX°aCV0*V2bXfXPP˰a-tFŇx3jaNetlLlPww W81zBG\B	o< ދ{tlLTGWLcIȬN.SH	V=1,ޞ[:4)n/Lb
L;=o
G, AK ]󤉅^cr
)*OeL֌:n쎳{lTGCޅ{Y.R^2< }
a
6[QP
AxRA*X$^3)/D₊+}qX,QP#&lG2 :-BlqxYFD(N؁cB"B<#ī2v%X^؍<%B<+G[xQ2ڑс7dBFvn}]&f܎*]^^FeڑV5%K,&vB|DHDrL?_U=O~s"G	=OVe5j~Z}x,aoe5A|Sw+"%=,g ~Dj|
asOA}lInaCKc9|R
>]=0J*' ];V.R
.-p*rL'?w
ޣ^❫Yqfqazh?7W,*Y\h`HcU,>⫆!4TѳAt+8yZVc1DOn;. >{D?L6ƋPK[]8    PK  C:U            8   org/bouncycastle/its/bc/BcITSPublicVerificationKey.classW_W֍Զƣ@]AZ5fnlPa>m*m_~:o !c4{9̼wO G9cc96	(5m
ݾO,>T݈fa}UYa	1KbͺMݰ	 !l	5̈MO,gY6gbô=D,fZ6	?hѝl[(E憙:8gV(3m+.ۗXJopGCLbiIiiz!;e8nKCQDXXZDb.`qǦf *ӊ9̴JLڰSԸQt;PBN
d3Ӏ
=n+^(Z8ӔorX_ff[	2K^ei.X,G&/6 5k8fJxnF2s5U0SuUnǕ@o4ԐԔ6mz!OPT(tFhUg?xά,]+s &GuX}㚦i7(A5hGZyޝnXuLWdk)Vtyx/-κdN׭"UP'waSma078LјqjNYV$Cyh=ytc|`SoM=>Qĝ"XGKE,\="VQ#VD"VX-BFDkEc+;
ol˅_Ҵ1aؖn7nI=ps2$RM
6Y
WϨ5Oݖm}tДOwvmGZ-41S(_kdty>)]`u32;ﵕ:ELm7W`"o475"ݑyYwΩ&xBn_s󩞚3EW}ݜ=9VYg	`7;)5tgFp-xފQ2*8Yf˸.TFdl>w`?> c!1ɨ*c2CQ"d͉Llʐ! \AE8h!FdI#y*ЎD"Ή]Z8i|xEmxRv<ɫ83&a^H:]8&Oq4'JQ	x]n!~ s&'oIKEN	}8ɣ<F_>xd0f"*Mߟڡ]jXBN  8HJ̢?PV[79rPM؞ħ4bWyćP3Q2o8Y}%(~YĻ
ė$~ŏ?-Fpy+wn\E6,-]F`_O,^x8I H]t⣎Ө(>"ZNf1TKuI|ҙR<r]A)T\:8
O]Uesvgr2*K$4cT>^g#DV@u;D9];=ΕߨPPK/˔U    PK
    )D:U               org/bouncycastle/its/jcajce/PK  C:U            +   org/bouncycastle/its/jcajce/ClassUtil.classUJ1ƿߺkŋK<xS
vRPDAzJcX⾕ԋ3of> `HG|:Dq&kY)Equ`PgFKz=wBiNS1fB8a{ڔtW5o8N	*gP;'Un^8M
25ԾzZ{qG$V
3"Q`s^
G~@6ƻ^Þgv^#_PK㧸   7  PK  C:U            (   org/bouncycastle/its/jcajce/ECUtil.classUkWWݷDAb+-
!U!H
"H_p	tfB}_/$\s&IЬ}}̿ B\{iRO-x^'+
4H7-
n	hlJ/HM??M4Gyw.'M&fNbc`f9r1h]GZ$
0Y~`gi]$Oxl+:	'}sT*SNͤ@+i:bְӮ]pܬe
,vsXx.8alMgW6I	ZåV&2#=/ͼg'5dH3>h謸&!({S6mʑ{9GǷи2ŵi-uw[CЁ>v
|}46LIxSPXq,u<\پKט-akET![c}oZU|9Ǳ@::<)xQ a{#_mRЮ༂C;
:\PpQAnq=

z)8tYwpQv;ة#In$=1s##nBuxj
(lOg5^xZmԯFf&EV,V&9"x_BZM_J
 4ePV(iP#dhcjxI
͸8	o`Lû1&4$44C
*44`ffU\}W̫e>U\ÚP>f0T:b*nLx&>eaE<`Xhx؄[H356˞tW4x+D?)hBVjСmw#nKl{DwdYȒDAt7%|9M+r!5]\_o"&܋/Q<' ˋ
d7K"F^,5&}HȎ&Jx'Zvqu)p%*0ջ_VKfv1D?0uPK4#  	  PK  C:U            >   org/bouncycastle/its/jcajce/JcaETSIDataDecryptor$Builder.classSmOP~6(EQ)>`LXBBtww3;kݒ+MXf$΁bsn<<=?}Ip0n
g%
^9fHX5=ɐi6]wՆ?ʘavoy"<\i;Qh7oi{|#+E7#?`x9*eHPV!$k,t9>%3?Cf0H4E{<AӐ֠k0ɐJ
(NG@PuUz֬Q8^}[MpѼ͖soA9Iȉ.GK	oW?iC3
'"e`Lᾁ$q$T@2id̒2:2xct`EGOu	vuS;~<<eegh_He'SECtZ \R}b~zey扛 ?e] wZyn܌­]Ǎa[]`:XEIV'fHPKD=It    PK  C:U            6   org/bouncycastle/its/jcajce/JcaETSIDataDecryptor.classU[SFeh'!q֖҆"4IS&	Pz[[[DHI5t@Sfuo@j	xwѹ|;O QK`0-F$3+tf='!^	1.fPi!H߱];K>3|,La,.vX7fnܔ'JvܗY>g!ۍ*V#+2xXp-ʫmAl6EIIX୶̃8ii`$bܚQxjFh{Cmqx9fH@X>xXtztC{}
57Dmq_855]e taa
yrh1[L?B6#4Nr5SFOWfdgH֍(łI[clow4&&U, [|^[Բ!n
XP02o>k(H)ಂw}
(@
*{ӷÖ*m	KINҙ^2Cvk>֊37~3X*yƩy$7_=,}oU!)~yW6tDL/.J=%||<?ݭy]O
}gV4|w4|LҠ",bhH"aqZ5BCw5\=
 !/Y1p_YTお	<T	Ű(UL+S(ta`n7.W]}Ksu9<SFwKbc
eO!n>"IQU4S4Ri"GUZ^hR>tizvK.V]B/߰J唬tk4q)9{[x=bX3w|O֩wL=}|+X%F%DDy5]KRυLEE0&5ZӳaS9O`a?PK^P    PK  C:U            7   org/bouncycastle/its/jcajce/JcaITSContentSigner$1.classM
0''U{CE@!@x(1	`̼?wfN3TÍA:&oԐru ݞ&p2?ZBHɇ8=t
UyxsL̞b],!r/PK~      PK  C:U            =   org/bouncycastle/its/jcajce/JcaITSContentSigner$Builder.classT]kA=4&1mֶ|`lZyl&qº@~,(N$
0{sνs8`#xӗvQ.sN|
K1\|W)%6g>ϕx)f͞X{Tٵxk=";.;NVث0<yw=c,_I|&ܷ)YEЍ)њ%(L8q{}IrV=q	I)a*Cp<d]T7dģx|ōNf3 /?T>_V	WɶOt6*p6"7BG#e\Mc	L/r]/7a;nŝִ)`LnrCDk6<a51ҢdG6D_[dKCN7~FK_wPFyJ'spw/FFb˝"(eV]6؃ز^TDW;PKԓ
    PK  C:U            5   org/bouncycastle/its/jcajce/JcaITSContentSigner.classW_`&YȥG`b,A0,ffBj^-=MRYB`UMO{n~jgfwY]
?5|}g}?gĿJ!P)"
{􈄢JzAp%7$a]d_]'tw3ngND4s12ݲdyx RULrklMh5zTsw2P5,SGu)ѣmjd/+!OڍEڱb8rT#L6?&a/Ru:ءٮ>4':S#ux-R<$Fw5hDCZX܍+IV!V4WɑKymdʭd[FdJ5#d>x3P6sʃR1Hԝ[,;CͨGq%[pOqUER}PݰahQh1t3@We".\Dh*xq2-2>rf/WG8ՌN2e)G7)C9`KZv44`MuRUBc#[|U
לL#%(EbZ#lQioˍ%'B[svY/rY㻚0Y½%,5*#گ*(Wep]LdfI.Zv(ۼ&gW}ɛ]Mi~P5nq3G~䤃[*]ԑ_j1fM,-^m[
֩
"[cw*:MEzW|?QFK-fH
m)UH=еAm&nքY3Mz R
zUZ<A	\$M $,"]`N]NzV6nIf={::nx>\t/Wmv!{-y1lɾɄk+vgo!Vu4e抺e'󷒺!ʀo[#٘$1ǵ6~mk
l΅2;ٖdXOm|0>cwض&q<WP, {r߼9h"țصsꮤ{_:{ǭ@ s[B"q+pegr &L6".6˨Ǆ
8.%2.aRR09Ȥe2zq-Q2ngR7heoq9elel2V6&og2.C26L)5xx7sS|0AÇ|x3 2O0y'|*; ^0y4>^T >9]t w(ώLd sL+(xɷP8'W| >@
& rLXC5.*_	19TA?{J#QQp){鍔\oz#7R!x䚊h,CǞ.c|/0x:4gfG	g֢Ƣ~gi>sq6=M9ƙzU4p[	c3x9*sM	dcIk-Bukxƒ|w!_0gPCpPUKHW	(bϡ?ؘ+x/kœL|Y"SؽT?%=G#iJ3Nbg\/eK*Z%ՌW)
DAň͛mV	;k֓Y?t$iWNkIL_Dc8mX7͞S4~P@yoO}fR@+)߉*HҲs0$q[&O{:eiR>B\r(8b_rϥMT>6ɮ>Q4<[_=R%¼7mQmE
oN%us #teFLPKa)J    PK  C:U            A   org/bouncycastle/its/jcajce/JcaITSContentVerifierProvider$1.classUWU^2h*%Zm#$C *BB l"ڲzLap­n\9V=oxo
mΙ{~o^ Lv!n-2fk	THYc3dMS~znfDې۴XCI.
׳R]8c	aVC]5xC0\0hA5'Xn)<k0asaXÐz׷I^8%}aX˨Z
Gϻ^vCllaXo|ƊKju*$ʈj.kʿ67=ːaMS,QS6C[:{-Z~uPF6ObhҐWjcݶ&)P$\TQಂ+
踔XqR>#,_~;K
dx-A̩7m2WE+/9bd}gxzgf85oeJg"Nxj߶EyfOUkQ0n?.gM
נhxWqLi5[`44\ŀ0A
ØpT|(nk8;CR|"żJ⮊XTqHܓxBydAoUYtLiu8+}ՀTx&gKIN$IY@ʉ4i*9:j?8=	|DM(&6V\%}XS6gXpxGҌtF`tlP
cہ'K&c\_2TZg9x$r 7sR?Gbɘi	#ce_'ҏ	L?XlьK
WrUԠ	<d6 PKP;X  ^  PK  C:U            G   org/bouncycastle/its/jcajce/JcaITSContentVerifierProvider$Builder.classT]OA=C)kRK? ?vM|15&Z	@ }av;i];K᳿BMI(㝥-JŘM99w2)1mҗCډנ$B|q~~約avw.'l"+Ulm_	_mPJnlh
ٯtONhtZS7]qPJt3	160a0p@ƀi`6T^avػMJYսGCz]x26Y[+BE\ji0,ҼӓlĎ'eV/ng+)?l8ǽ@Y|9o_qYJc`:pUy2㦉)2âwMLiM'kAC0dW|_5GHSt2\4J'cF_fH[,[w	+.rcj^D0kwc qţq>rK{p{'s,dp9Y_PKK  1  PK  C:U            ?   org/bouncycastle/its/jcajce/JcaITSContentVerifierProvider.classW	\,|0V7*1(j I\`Ԗ0,vfV}iڴ5mjoZjâդm5Gۤgz}WofVA0os{z<G(cǳ0/vJ&i#[[HO^隽E@k74jv[h;nEFb۪֧)
~EYQT˪\[WGDB))Ar*Yq74\be7cSmKH6[hzfE8scB6]1zy4-e%U"M갫cQJHQPB3
t|D^>0Ke#~5i~ON`iYQ5tDaG:چ503{i6r\c,x\f3Pu;Ki4M	diMjtP*)
Ac-<lwR,T^jɄp[dO\SUp'qPVAja=FRWٲjXYv=tRd5M659&)I+htF/o,	h̩@(jx"sj6Csض^@[Ou}x)A3]=4a|=hy4
g2^.Ɔ<rMU^^BDl*fgU6覗8Co7A%i'w:SS-3YNkU+ɸ+OBjQG/'[&M'P'&d
Me	v˦<@UDq2_m4GaˡŶ2lͦ)ame_BtR{j6m
q[k{,ԍAGtyQl4XmU3gA9ÌMAa:z3l`h`İ:g0lap=C3CC+66ndapN]VݰY@dΏi*z5M?魞EN'R_RU3EOK3KY/M/>VEOnT6q٧}-zÕtKax`9}<`.M~zmqːJlfm;x묍s7yh/&'Y;51|7&_ɰ6fg k(~Lgi:xSr@l_9䯨.S@?ns5}oU&gfvp>=3'60sl}r3
mzS+*@' ēۺ[[He:Pn<_B/B	k"	xx!J(EZHDr.y*R	+2	/4B
R*ϽZbVBt^5xkF>&nvW~ n罷sqPE')!wIa	ĝ|"\|x/GxC\|I|DD7>)V-b/1]YGEȮǹǹHq1&"{E|
_q'_Q>/""0qJO1Dl1ppOc_&"|J'!Et]5[e4,ڲrp(`_>.PQrZB6hqZ-ՎE ÷BGPfVQq5oXm
_&gH)fRc=?45cJƱ`9N#HK{}V`^v5&}G:jډ[q8?'qfv8f\8ǛRKhj	|yŃ#OXJfM$i`j)>(xPPUVVVD*H*-	݃΂F˿{¦ ysxMb~ڢ[sҠe􃰅UqMTOeHN)xf4'|8y; #cZ~S;hYN>S:VL6&X8nN)$~ ,
M<t^Ƭjmy)5>mG'ƫx52"(r!G)o+X0@ٱ&ϙ#gM{F4#EZ"[Qr(a*C^з\@ɥ	*M$579!z6KtUJ}$!;@vޓS'x ,I '1PK?V:	    PK  C:U            B   org/bouncycastle/its/jcajce/JcaITSExplicitCertificateBuilder.classUMOQ=-CA
~2|%.DQ4b>g+[56qd]ܙ7=s/_,`MA{`jGAr+I^2+\N6sӹ۱M.|`%WBH[mͥw',`.z4L?63-M/an{x952<[+s[kd-AIQ3M)ό,y0ה:?ɉpk⌱ٕ#m>͒UT={&ܩPTѥBSѭ§GE/f"(6}C;ǄTDXyY\9cmaʋ)+F84w%+?+Ǩcf~u>o꤮+U%7w0YF_Ae5jɷwݿlm?cpT>~(M>x0Cd,5eC;&dEЇa!5`Jà~0PV?OIY۰iɰ0WO\}L讣x?NqV7.c16鶌D(]}C?bRpW+jH<	<
IR5\p:)	ǈ2"Jx:z_`<<V=PΈ'â@DB~ZZz] PKu    PK  C:U            I   org/bouncycastle/its/jcajce/JcaITSImplicitCertificateBuilderBuilder.classTmO@ۨ
 0U4$fT^̐@2+sk.o@e$~ ?#lY{{ ^)AX: ~}.d9wY(-@;LlEL[]sb$k6o43~qK	?rJXM[63t(<f^`	8e⌱^90-VϜs\I^=f"*,䁿f(H>C<Ԑ0ApMCV!G3*f4i^ŝ?Sn5jϯ?CfwGf;)+#KK1j6]MP :+_Ƕx7mHㆁ))4`v܉eq:fc+:
QTYZ|bVਫG>GÐXQ3&UVRWOY	|]<)B/sAT+joqҭIOI)UKQ2j̝`Q2xyXW(!PK>  u  PK  C:U            E   org/bouncycastle/its/jcajce/JcaITSPublicVerificationKey$Builder.classTkkA=4]ݤZU
"+hkB4	nٝ-䫿HA	X;a$
;wf9s/ QeȔ+e HA/"bpA඄Qq$/b'umom&/]=q%h3<'s镮J<%}㉯Hio7x8(<TId,To@%9&CucqLy-ɠYmOc%T~1ݮ_2x9O|)CubF9.'"vKO;9^: 7wA6&\laL+:\aV
7aaDucbJOib;6"Zy%Ұ_H΢,=- CP;kb(}IHs@zqׇw8.k)n6W(ut[l&_PKϕ  x  PK  C:U            =   org/bouncycastle/its/jcajce/JcaITSPublicVerificationKey.classW_-mHR[N+ص;cGƤvvYbiWYIG>v&Bm{7IH'ǛZۙ7;fޛFOlǿQ_kq{=$ZC<Sn"aYZ1j4;ζx[4&eaKhOpkVjWm~;<jiMJXc9dA%4DfFx^e+S67RimӟLuO`~ôt2iZ6HhZf6H7%L::$1nDOOFh{bn%$ӴwHh/
L]9v_ښ9~COWMi NH٪!hFTJ&scEu<txRDquB
U#? JhqS=V,]Z[
tDE"ŵ4d8Kh܊Or;)(E w4-\>y
Jqn:uiCԔA5et{ΡqBUFAб 6)('`A07_9	lwyVLhFv-bgwl
&v1	QS
]]L(Cv*WHWkr㨭%ZtHS+JZ!/&ׄC-7e؄j, [rs9ܹ+b[jۓIq5ўB^+AX[u֝Tu޿dRhaO>ԶVn3PqNleC8mg&׍BSfM&-ՑE.Qk(˰a#Caf N3`ɰa7CC773p+>^>6
,^t7	}]MLHӵցV-݈@95ܹz,D3t}ai'^Zl`#!	-
)
YzB	ZE*ueмBܰl]pEⅺp%^u/9.ȗ6/YvI*=;];-_>WBBTX+<er#nCW^\4OO1W,T
\gTT|U2-&
ajSBY=/{QmH7RM"i?߼sM.2
0FRUp(MK`R
Vi-PN3
Y>L*x>VЁ)h+(x&#F
W	j+k>qFNZ^7(X7*-

m
n .FD;8w
./TG8eܑ#_B<(c2K2<,qR2^O
ewS2^x).L6eD91<*c:>+c$+4(c2x 
|(;=}fJ0WM?ö>&E% Q(4?ÛO2з}
?i(fBMy
yPS[%y)^z$j	\lJG0d@J=i$Fj&!oe6_grd:'Ys2YHE2Y<-d14\38/2jA۶;E mQg wLlG迃&Dߧ*r-7j#͞)|}=)`eDϡ9?h ^&>eΡݵVpƊ9E7j3x2_tבƙf"~gz_]?4)|'o^fBepǦx
OʝM/^Y!p̙FA%DnֈrHiZC5JIxJ7NPK$  i  PK  C:U            8   org/bouncycastle/its/jcajce/JceETSIDataEncryptor$1.classA
0D'*=QEq6D(j.<3|`Pjz0d[qla|+wQAhIZ*:E-:ϰXq0c0KqAū0Lkk
Arrs	XZePK[k/$      PK  C:U            >   org/bouncycastle/its/jcajce/JceETSIDataEncryptor$Builder.classTOP.c2Ё"mJ@A 2ѸŸǻ:;Kw${oDD_MN7~,wi 6!g3D[%_0U[]On
!ܰS7T`f˳d()GN=bXwQu[6/maX7&o80^%sLݔ.6d5tKU*0%-y˖&'Wa#Q(xi鏉za'|!ݝwWØMø	
	3fA^7,^yB馞?3dW%;\",_&.F_R1Eht	LN2eyyGqL+8ʛJsxĠFwܚ`H;vlg,In~~͛e^3IZ$ H]Zty@2A6wt'пB"o\˟b5wp?d(L\%]UI:mR7Ӥ.Gϐ]:uA$ Kդ-,3d
HqPK'0    PK  C:U            6   org/bouncycastle/its/jcajce/JceETSIDataEncryptor.classT[SI:Lg ^QL&.+Q >50fR3%/[*uKCY{$xyssL}k 0d=]̼@<yN?ʳkmXP(bؾ*8%hU:kF(TxP4MHT@֔@iϵXR3@|"tkVqV\ԦⲲq`S5tCgE}6nNز*|P3ҭz+U+YJ9?m@9̏kz̅j5̷BPv_klue9a`-rVV.`.tI#_UqR)CYl#Zvr]Nmv$Y;0l 5fB8޹݁}k8᠆Ck8'
5ᄆG>٩o&}TBqk>H#]?YJ-<VJ_P<LoOfvźӥ-iFwI2; 9oob7R?wL{%&8/1Ї4t8nR8Ǻ~>]4ЏK2WzůrtA\1:Nwi२#o[}{JQr]G?>??TBi?.,>NP  N>=}\1)NĔt.(5L5L DiԿ5/%qL*uT%RBf}b3e:M\ϿPYǽ:>/BnS
L!!a:'@Iw"y/hs]pICwGs)2@_pH3:QbΣ(0PKaZN    PK  C:U            5   org/bouncycastle/its/jcajce/JceETSIKeyWrapper$1.classA
0_*=o ]T

!)Iz5COͼ!Z+QU!mB+|_:r8Cyiq́]fF@X`?Fy,DPKX      PK  C:U            ;   org/bouncycastle/its/jcajce/JceETSIKeyWrapper$Builder.classTnA([B-U7RXlUI/Dkj4eJKѤ
M| x J\'3gv왝_/'kH
C0ݤG
!ܴ27V;nltYmaJ3o[ܱ] 
\fxQQU+!'m<Sa}k)ѼH(O$칝cIZ.rf]aɮŽ#}*f<Ꮘ4
f4ڠW=S:p%<s4liQ
Rm)wwPbp)H`ty5.W5M'ڽNW(SA>\ DCB)S7t"cwtLᮎ2*(xLN'I44I,(/$AIj)n;p6<!GQ̫ͫ4GTnc{Kdi=503,x~Q:E o;`CNbDh#bǚ"|\(y\3	=
=EGi/JPyiHO#5PK]7m"  -  PK  C:U            3   org/bouncycastle/its/jcajce/JceETSIKeyWrapper.classWk{E~M;vZ[1MCTE ЖJ"X@e[qw~
B٤ii7}(Ù393:9y
j	B&%TF!!i!!ݑLzj[շ#d{"%D:ܚ>éִJ۪nf,%"gucj4+6]5EN=3,6(,!05;qVPW55kZJ1Gw^^ެj8twۍ!˦K.2M:7
4GZ&MUM(G,Ej6\Ӽzac@P¥#~5n≃ϸeJX2MR+LBN!pT-bmϚ>:t%sqU;Dgo5Ϸφ9聥%KSNЊl>bj','j.VPx5:cS=-$8=u69Oip];44K9k4~w@),IsВlRDN[xiEh[4>?sSIDdů%WBLȥr"YW7,\֕k,wUJ6Z\Px~n*U(MmKbJ_o z,}m[QQft>k¢M
Hkزå.גfYZ{F2Eh.Y҅A<2(Kk2,cXp-
"Q&fq-n`XͰF2IXu.^s)o
/4vMk"Y]Hk{oՓGl:lE9YFe[7#Xyyod$2GuW'$*\%]>bzRi}Ҕ|t~tM ҙ:OKimrBrG$~Wٙ*4UPϿ
BI<W
T}b*>g2.Ӗ
{xާ+.H=:,Oޟ
K-P܊,=
	{,F@AU
.G2Jb/
+
bHUV ]eQPC%UpLR^2
¸WA-lWYbzAq mx ^B9AA؄dl2i]xJetI=x^7d܎dl)dc2 ؅e2%A^UAޕqf<"35H܉CeYO7+4Mnwp>}j&-Z7:"*UF
N!R*@c}tGH8Gc?jnW@K$c~@ws5L`gc!/'T'<>8)!O&[
X
C\Tm
|PC@L
2'$㻶EUy|7z?*Oy
S{7V<E?<zEl?GN WW9NwO`S_s6/7EqxD()tvݵ+ҴaC-qz{hSslOz4t寄Ci#;vm?PK툉В    PK  C:U            C   org/bouncycastle/its/jcajce/JceITSPublicEncryptionKey$Builder.classTmkP=w]]N݋/թm
faE$[bRA?J|nHvU	<sޛ_pu\a|wbi#z<d(w}lcqܕc9A컉kG㖐u˭okŎ'&=)OO[)+#KY;k'>N؜H}A^s#.+4hh(hE57e(NCj6q7Lfշ#i_6NV>WGSo>x]˱)#k㲘NmpHurs8-P'OY509UΫJ%0\ӱe\ֱ+nm`l><;x
ia$H{Q/}5!G=lq<BQ
y\ʐ+ğDV3q
w(.n9Plo~[ 1TujKM?PK'  h  PK  C:U            ;   org/bouncycastle/its/jcajce/JceITSPublicEncryptionKey.classW.6ip* !X΁8AW
8`kKb28Gz'}4mJh"
3MJz?oǛe->=}y{s :/dn`H	4GyHBmhuC7BByUnkђ֎YnL31Ծ{&ALc[Bw،&afq=jekhlM .?O{T6-9΋|B?Qi	͍4mӟr>k0m:Jǉm2yC5qnpȏI
~3JDܴt{<wѻ{ԌLÑ5ԤD$.t
UCQZ<V4@!RV:o`j{t'y"-	M3j(PI;Jغ0M$x\Mt[Lv	hK(fJDkrl8OXmm[ӡH	lbXJ >Yd&mǸdƯ_v0ͦCԴ!5mcm	c	B+ǦfGɃC t;P7r%9)t+<m0^˚<{Wg)uAh	XYD	S
#t%aRt(:s[]S:q
[OHؽ>W"dĸpSs~A7CfJ_Md	BY
R>ALn9V=:M=4FΞMͬӂ7ʽc9;/*EU{(T˱Z%6L+/TfS{&QPsɔE
a%lӆykbC3v*2恢
AV[v2ne`Ͱ6a.`.}=zaa־g.JнOxgѹ澅-݈
QP;wGGƝ=X*/4{Sli%:2X8dIgxWHZ67+⾶x
׌4v"rE(]Bddx2O8'.;Ɐҳ-n7[jiF\5TabȳQf+}.WF2wl_Ik[z #K]u+PLzt\y~[Eg6^媏T~ͲYPr;WU>sϟu}U^]
`*
)ͨSS~!nFZ
6 'vPp#N*&U*	oTІ7)hě[FV6!ޮ`=ޡ	w)X
^w^1~C^Gx>셆G>&cd܏d̋eCqߔ1/m)7Bq_2-!ieL+2I|\	!*i!#c
1gd$5!c>[oH`"Fqz*QV$Õ6lUWSâ:S4ȵtlԪߩՄU`~l}xhc&ؒ/<sp/b14ƚ9||Fg	94I?o=l?8y$GysmMo9HBq1Cßΐꜛj].3$ـA0
nL~W V >sYגoh}W!ӞrQi49Z䊃,^"Na-xS"nfBx"OGc4DH	o._e0ur9u~X><dwGP<Y<sx<Irs %f/ñKpiO]Bz3?쁇A#,C F7@b?7N7
4PK<l$    PK
    )D:U               org/bouncycastle/its/operator/PK  C:U            0   org/bouncycastle/its/operator/ECDSAEncoder.classVwW'Em]J\IbD\
mOfpxD}׮~~rZ_z/B@ޝ3o F;v*px"%<
*hNaU<IϞ5FuXVjXݻhQH#̸0̤dI\\)2\teWR%ˈ,sb2Lpvv0o'
P'bfnƦgD\dyPɞɲ-Y[.s6-n9=#sӌ>_4,ShJ7H*%z*`'sia҆*쉂ա)oʙ)ӳf/-=>":fEL)Vн4I$A
&]!JNyi^X¾1i(<Hk ZUPcNV}p砃=x)!\V&ɚ$k22֥e¡hj@vi!?<doZ
9Ym"ۮEuDVgOj}"J`"5k!'/h$+	McTN"Q*,:?G(gΚDTخb{Tܫ>;UxTtإb=*اb
.*QqPApO;\sY*OuyyhoT.o.1I۹f/%vl4K"_aw]ީyPS/J.C!9 H_΢;J:g(*UAOy} ܍b-x
M-ma"Mҳݢuf噫5a8İ
*:Цai؆#aXhȰa3Fyva\xTZLhQI
p1gq..O0F?[H297aq	9708	)2nbb.3d0<
A2\ex֍0t4-{ f#=D_
F3\9щ_9p<	Fjjۺx8[Duq:p㼁=~OGq-<^GԎ2K&|UgL(TW9X9Sn-?֡-iW1#d}_r޹?҄><Qv^I ?[#?<^Ha8+"O#7p-WMo~eY7I_$z;BU!V72Sq4ֱoQZǟ8PK7sU  
  PK  C:U            5   org/bouncycastle/its/operator/ETSIDataDecryptor.class%1@D#7`a,,!,YVPFЙbfy/ {	i+s&+?7k|A6l$l[yw|ZkrD#c,7ad7X/y>\/B/5JVИ`4W_PK      PK  C:U            5   org/bouncycastle/its/operator/ETSIDataEncryptor.class%1
@D盘V#V"h]uC
U,<7q|_o ;	iKBV,JcbH8Hȣ5BشӶg|7f4z=z:8r렫
+䘒 2\N~PK/'      PK  C:U            4   org/bouncycastle/its/operator/ITSContentSigner.classuPMO1
(ɓWbpZ!&$FIOejڒv_GgG^^M{3}{y3htwRdf&廀uH@rP@U#δ4)!3VQ9e	f4V35WK%3eOrбZN\nTP
-+r^ntFA=ޭӽ.͌?#`{2Nnzєye,8]+x:?_;'*F/&~M.48QU@{ [QbK~5h	APK$    PK  C:U            >   org/bouncycastle/its/operator/ITSContentVerifierProvider.classuNJAqcV7,BoIN3
k ?JYAc~x}pCkoH/sN>8yM,!xJ=upkg.6v2[Wč_˲$$۴"v؎uBQՇ:̉
NH;LNBWϞV-(]_48F̟/N.׃*tyoUz0{_s9Pe'PK   q  PK
    )D:U               org/bouncycastle/mime/PK  C:U            +   org/bouncycastle/mime/BasicMimeParser.classVksU~6UZ!(@IZh!ZRIA&۲[/xC~djgOoBgMC	UƱ3}sss6Ï v^|(%	pg</I
[B4}6R!kCe&ʹLP2zg%Hک
ICif\+;$xƭՊ32E]Y}B+lGagYЋf$ѧZ$?#8h֧W\ѵ^F)EFA+RAkj׵aǎNgmXJY(ۧmD^Gq&Y9=)9JM{^[dIdy#GIV,6vuZFްlS[Y}z0S
ڄkަAnøMΕ;ݶI#Xx5ˤQx}z)o&vrl'Xmm<7v8?|iє$VXBVByXQ--3 s		 YE-[	T	=<,!|?I)ض!6ٮ͏Oo8%'ߪ&l
=«ֽ/NvL3-6ښZqGlkm2R^QDqHA7+X˰
xUA
lk
zpDA/<ða;+~ <:)P4N*1qJ& N{g`8pM~އxˇAapՇݘ!.3n}8ȣ\cq r$_Ext̵V8(NH؇N1G>̖#?.БDvCEE[HG*>T]/ÀtGNnjܒ@6)Bv!;zT)-N-nS
G>ZX4VircG F1FQTc0}(K̡#G5 /t/мF&z3$}ɥ]KЮ"=JxSҍ؛1❀T-X$*Nt;݃biҚU|=|>vX׿o\nǈݫx?e^/(BZ.$A.37^OeU.AowZ@:஢\V3nȃCusD1γ+7XT;QF:gq@ЍK"I.j^FUןոVZ 9M^7IdNgŨ/PrF#|>(8FXV^dz{PKG'I0  *  PK  C:U            6   org/bouncycastle/mime/BoundaryLimitedInputStream.classmRMOQ=v  N+ggh(0CmM;5tp`
1hH#7̹{9~So\]rq?gٖ3(6<Ū55mWwFCig,E.[㽡[E}in,9VѾKUg)F!f)e9y9o&3^
Йg*X"XEA M쭔3!PsQ!qCD~rgGU=i]2d8r!/#a0^xdD
b9ra]8ܗ0In!N^,fMWYs̻6&ƨ{~
:;U?ȍ7znu"MΞ1)KqR'!kHGo
}?:i91S;D|&-4z/H} Շsu$MҥBՏ01)-+#!) 3(?Q]5,DM6NM?vbYq+a*G:řg=:®wpesn&40G(ѽt/0`	v
IiFۈ6^	='gN[!/PKKxt  \  PK  C:U            1   org/bouncycastle/mime/CanonicalOutputStream.classRKOQn;ˣ Tj7Z@a$`BB6N˥38
,M]*./csX8{9;?~;0"Ds)1/(X,{i,kiX;.<}/|+dЂ)f6rfv69Cf^4Onָ3gUi06-
oa˝Yt]
t
bh<zfS)2yU^pԦŷ-Җ|*kN|&Om<5[et|ˣr};zˋtoԭ.%1Ǧ%^FF1ehehZ4CKrXa)sn.1ѳpq@UbzH__I*e*Cf*⸭
0]אPE"^}
9B*pOAtc{AtqeWϽ^73zt~HB&<B1qN	Li}_@`G?ЩUAPɏ$Jj23e`%tD%2et9[}c4/&f''O#^1hdjg1Q`<졅L.&^FN!3Bnz1O֒aA\VGhtֶQ)&EICeLXi0|gd픢#~.^[|}8G#")d*PK.t  9  PK  C:U            /   org/bouncycastle/mime/ConstantMimeContext.class]KAku(3&\;	/qde]vUt!QfKB9||)Ai:W:{"T0N`Rw]OHEp*yWڎg}x.{8r@&țd4.gΌ($*IL
]4kXAא`h(6Ygho;N<dY;V9k[[UHQ"jj7Vc$P"R(W}rF V(ψAUK1.T7_T*Z)]?1PzXPK=P    PK  C:U            &   org/bouncycastle/mime/Headers$KV.classJ@MƮ6A
iBt	*X>%ΪP=73o/ p`q괺ahOBLD܏*xTKH8x˲ʔ3%ndy:%ʁ~=TE>Y0oT<<ެ"5lpX`MpiqlPiA&Rwa.<3BvH);&o/51
Plw'x%RNPK ,    PK  C:U            #   org/bouncycastle/mime/Headers.classX	|U^4m= .-!k7iڄPLt۽:;KjAQ<Zl"[E
(jEkK+`{w{}{pދY^4x</xЋE^,5^lO >k%+cn5*!y:n<$3I2sz:vĺz:zb;6mcP{6=ګ)E;2D23(@*rYV۷v#?lVQZRJfGT	Du;LBцA%oTi44_rG]Icu+VuUXدktn$\oKȽAU'5Ẳch>7Ckm:EUI/R]~{%V-߭yRd&4|G:s֒BJOxg5Jd%cӓL4+TUI8$TЫK*RꠒjibceҦ~Fd֝9YLQ%M.-OٙRK҂Li2Op"mϒGg"0"'3{%SQͪ5l"0&T{+^MU9=ꐡ sgqZI
dh>Mf)J\`~%Ԗt2eN;BVX9eJ%UFanTܐZI!I
EO^K;K%Iu|μNQRti-A^ѻuCjT,PȤ
$O#kPO#8KE".*bKD\*2*m"։hqEZD.DtL䱻ƫThגD
d٤IL2vaBY'.4?C*q[d-2*1tg47izS՚)lJ!cM[iW6*!66D͝E^ͮQlѝCscFپX1.{v3mʶNC͓	go4jT;S-Wyhꔋl*4Ú]<9ٲ̚vf9rz"a#ΔHXư!p>KX!	0ba+# <̑p!8CxoЄKXЋ$\Z+q=;;yٻ$
1lǻY	kp
x{W2Mzf	g#V^>vv>'>pç>9~_#{PE?f0paaeln<G{9-2|Ao3|On|ӏ<pW=P]w3C_b`n8Bo}{6A/Q_LFSJ>ϟ$3^hr}!RFKICD)Apѯ*DcbLy|-UFߌv5>j0~.y'Xs8}M8}(-o}1?\ĉcV$<6<l-7a/Ui	%bS E(PC!pb8r}w{ 9뀷ȍxK<=x<j$(?<o@F9rju\kjw}+C|7?'r9"rt.gE<=?^à1y{#x,+ &F9D7<VOp8 !+DOdF^dr^;f^#7pEwr穞8L)l <	gpUKUwRÇ(ۢR(cl)@TE ! pwpR:z#1˞Q;sIt QgF"}T|5<qSX;3"bT./"DK",a-aۨiT=)nhI8\or,fYHOuP{-j2XaN;Ht[n09ͯHQ9\
"߆HеKx)܊q$QH4v=fB1Ķ]Ľm嚙L@"2i,X^R˻[՘cR&G¸F!KU/#LFK}Ng[::/L/.d*~BU6!}͇oa[=c!ϑh:yō
dzj.
zHD:	y݂.hpJ&TWC4>R<ZLW/D_#n|Xħ&{TgB.ZpKXnLAq6u8ӧQOTNbr5c%/,s!F]G`O>9b$447@yXfMh:+uD5/7xr|~ڌ;3bݨKF-'"
7ppxD徨tCĊ+aFL^	 PKvk;
    PK  C:U            &   org/bouncycastle/mime/LineReader.classmRnQ]CN:j|06F&Op$Sa?F?7uj+}YvΏ__;	D0g!jv+RUd`2:v߫΀!vl/ϰz_tb[0dN.
/Q*WmowCC1[v#%vS4yH^ۦ#dHH%p/t"{z+P$h
R
˵KgX1gRM"kVf4CBCEiPհe5̣0U"R\⪊\RۭIճRq_=q;NQ>9ЉEL4hx~MYpÊb*
}CJ53#CR멏H.Hcq}GSC]"S6(~4d_`3/s>VcA~$uďa(jPXQ PK     PK  C:U            '   org/bouncycastle/mime/MimeContext.class;o>.FĂJԊFĲD|}O׊Ԃ<FhNb^RVj2Pb~Q~R~i^rerbqIN~nfn/]GjbJjQڼҒ\kM\p1231 #F X4+ PKg*ræ      PK  C:U            +   org/bouncycastle/mime/MimeIOException.classuJ1u:3kH.(dtQPO0FLSJA\ >x$p.!:F3BBr_w+V/Fs¡
1K?rJ%z9_k\Z?KJi
quS9+ՀZp*mA:%?lCc#Nlh FDmBmh؉SքO=v~[;v7_ _}+hחCy*zW}PK   v  PK  C:U            0   org/bouncycastle/mime/MimeMultipartContext.class;o>FĒTԊFĲD|}O׊Ԃ<FhNb^RVj2Pb~Q~R~i^rerbqIN~nfn/[oiNIfAbQ	T1;;3;;+#A,fcdd`g`d bn H10  PKcN      PK  C:U            &   org/bouncycastle/mime/MimeParser.classN
0O[_Q T䞆&%Pb
z? Z]4NMsmdQ֬#a|%KwU
ִ,=	i7		Uoٲ߭τw!L`
¬OI)PK      PK  C:U            -   org/bouncycastle/mime/MimeParserContext.classE̱@s	i^@j/pnvIvg67WSx e$T|X!%̜Vrn+7ĝZxG|cSw昕b0љ,>,7ZZ̡ˉc#5 Ő0],嬱c	QB PK0|q      PK  C:U            .   org/bouncycastle/mime/MimeParserListener.classP;
1}u/^B4v[ X &DѫYx %FQ;qytG%
	GC'{SA֥Z1\
20OfWzQ
rEZx7ƒIRHPPPaXv_]OE5'ojss)ނۊޗAlPE<yc PK@     PK  C:U            .   org/bouncycastle/mime/MimeParserProvider.class
0t:=<Ev/^d톾x@? cҐpƒaD-x|5=J*]B*=t6{Jɓċ Z]g;2!!!IxUYE2Zb%֌wm3h
0CgS~*PK۷   L  PK  C:U            &   org/bouncycastle/mime/MimeWriter.classT[OQN),l\--uPQ@jK	thOBlO
|D!?JMfvng;H%0uoxm4x:M*IBKFHne˔IicPZ<-ĮtnHasi}=
K&VvS"/
ˤ.fFOlm(afNSKE#KjQꋶK1@!zQ]dū|tn%WPs<nSPK^o}*RdV9#'8tMムHRn=
z)W0`PaĚǬNxa801Qb$_3%F9zJ}>XfG:MQΪx,p|S͊lM8Xtcp+՝&% |")HM>[Ѕi
ѠEC'ԪB12ᚆ5:]~S1V,ǜ0Y:ȇػliգַ#idL.6:vuQ˂é$/=
n mz 5x`+>Uz3z`iϱz|
HkN#t#yJn`23iCk2V>b~`t-t<I/#ˈ{)X)"FL*^?PKy  %  PK
    )D:U               org/bouncycastle/mime/encoding/PK  C:U            6   org/bouncycastle/mime/encoding/Base64InputStream.classmRMoW=o<_v2!$:@8xRE RRTJT)df
uf,{\ eQJYԛH-jHt EM2Ҝ{߽s߻"bHb!=[nGԪS?Zb(.]@^V#V{ 9.9ñ;=h핎5"?pmhhGkQӳw掵cg=5kny[-DZ#v5laxDkxkƶ_?0.]kh
FU0ƠuJfOMIn(NWxCP85qL:,&8Lr"a"_~49\p1
'f329z/e]hQ#"k7Y9uTUlRф*^aVo !C/]|ߐ8a1?cPÊLtUrRGWxdU"Wc~­(df5''|ttUJbԍdt\I&wtoҕ )0zm<#䷿@ 0))hPڏ_=fqZ1B,y>kY"b@QX-<$t-ġ"fazFyqe
xGܤeMh8K#'թtF%(L=F}.C<O{
ݽщGȄwd_`#bvOH&ÉD`yPPMz4F[ڝ9[`{h6%<D/aZ~3ɽ(w[p~BZQ[Zn˛|!j~Tb PKl    PK  C:U            7   org/bouncycastle/mime/encoding/Base64OutputStream.classSRP]4
h_JD-ZGP}

Ӧ*?8xG?/tԽO
b;g_Yrv@/F\
Ṫ]3MthHM^TAV2\X& /*	WOZ-mn{<e¨_RF
b<FuCD Z5滳JATز]6;t
'v05޼/~A}w-4 LzN)1iQ#fI&m={8,F5l`iتavl[c.ȭOOl7cr q>@':tm8hF2jDl@
fgqpRXױ: s?8A:,c8cpʓӚtǮ;7N>#z MRu:IoAl{'5GJLFd~(%Ms{89)[y>N̎	M}b42TIcƱ'ߡVjv?[}dLY9ɺ J$\$%EݒVmҾ"M0͌ZW32pVrQ{W!V0j(\CRg&DX9_ߤ%qV٭r7@H~]ʕfx mv^YP2?dMG౤o/CWqap-
|
꬞EՂUx5uv3uRvge+(]}\dځO?oџPKv<    PK  C:U            ?   org/bouncycastle/mime/encoding/QuotedPrintableInputStream.class_OPƟuVY6:9(ʿ"J@,B4P2];"pǅ_[cƄ@^yÇ0~
"-cÄKy'=+1\
A!B?8ef*8iX3d~*7n}gbfv|kk^mGZ[ÍbQ[|6M{C-v=Z0<o+zζ; =GةNGuJx)ZgX/7ZڰäUZwS/`~3öΪgk{=ԬB:kzA3j̹	\HVn+USO֭+HX6,G[5Mym""""b".0(rk\c1iX^S0H@Aݡ+ڑ@i=͜UWҲ<s4^]>z!.}*HuE<!| }%#(woV;)1?#~#^p´1z'KJSU5)t<rKMShk&k=)vUyt<6ZkWtrf1Y]~ V r	T{Ctz9`l7!>lJ7"uePYRPXg+/PK2'/    PK
    )D:U               org/bouncycastle/mime/smime/PK  C:U            8   org/bouncycastle/mime/smime/SMIMEEnvelopedWriter$1.class1
0Fh5U{xС888OmIIb9x %=<ǌ! Ǫ#657JImO}*2@^>6c{Yo9ǈcַ̰̍))\lͰ(!w{
S$1N0N`FPK&L      PK  C:U            >   org/bouncycastle/mime/smime/SMIMEEnvelopedWriter$Builder.classV[WU ҡ@jXC L,DP/=9df̤.|m]/>X 
(d=>s~`Aq5 ڃz7Ih.GpZ+Jh.:SqӋsWs3,(pm5*ܮLw;St,HPj]KU3K)8H.+Qz=aj59dbF}ÉfDl?a~ܴq;̳	)fECc"?x(dd%>͐=YMFuܣf-qyLByӶJ?4MkQٳʛT4g.Д/E]
R.4S,WřWBamyX@ȥ*{FQMaCʦ1+rU+j*]8(s$@3~jV4f{&}m4'@)UB 
eB^EY{/;F0Ebr[5mx|G	xЬڬb:mU$2ޑ񮌈2ze'O2H4mcm#D"#㮦sfn,zj+,_<#))fǡuJ!-X|}zCqRhfRCdl	Oz\t~^
eB眠Ě|#'9,	S>Zի^J>_
gsVL*@X 0m|@A(B
bH*ǴkQp+ BeX3A$>!!H, _
 Q0c.5֘t%5Ud+nQCSvHԚz)}5[TCnQ=âI$Q*hxT+MHR`!G=l2A˯{XL<q+ry=#A`I_OLhx^4)]N!Eyob?ms'5~Ny\Ӊ^UWEtkz0/VƧU4^b4H՝AOItG='7*aRIz"~Pspc6nl9,ec*j"YBDOy!hA'c<PKу    PK  C:U            J   org/bouncycastle/mime/smime/SMIMEEnvelopedWriter$ContentOutputStream.classOO@&ni  M(
4$V`TicVYGā#>TŌK+!|}ov7 V;Z>[u&PRC|)AAJ`LK/=3PcZ`opb30#`$CZ}'0"7
GK3~Uɷ$4*[6J~66fm/y~Z+ٽ#3pXJ.l9X,VXb9β̲²ԍOr*Z4U4zHaP(rl,B`EJڝk4Ѹk'yܾB3dEe,nMnLv>y)^52+{Q{rPKNݨ    PK  C:U            6   org/bouncycastle/mime/smime/SMIMEEnvelopedWriter.classVmwE~6oKETkXX0jj!ئҨLɦKw9~//ӼsQ AX+9{gܗw އ^|z	x莄i%(L׹LEOba  a\LnfISYm\aEa"p&_)oqCܹM1x\aEM󭻄.W2-+^j`Vde-Deװha]J_3YRb匕2LNdr(qH".DrVԫ:s"%'H'^5eczʀ̵l	Ϸ#͢LwOhIr
'y	P$^Rw85^I'%huJ5(^1yokhZ3}iHnhDD[۵U߰mVô+xCF@ưqgeL8'Mo8/md\1)㒄T^Hɸz>%v.DWCjl0DxόOe溻GǸAךXڌK|A>ٜW ^G< LH!`ZuH%e[Y[<y4ʍOHX*S`Kd֫=wWHލ@Qb*T|+**ѧK*1*^5S.&>V1!D\,@ROUᦘ5n*DJ
"U /
B `
B{B|vSpW{N.EҗQ1zPw-:5Qd#]?Òq>Q@5Mu$݋2$5jGgÇ(?E (jdy	h3{е='5|DG"%՞"G0
Hp8!`zl 9rH(Ќs3>3r7X
Eʸ& T
A׫J=iX$QQWH1һ=bPKO6x  
  PK  C:U            5   org/bouncycastle/mime/smime/SMIMESignedWriter$1.class1
0Fh5U{W	7C)iIPb{^b7)JځȰs^]mwdĨG릮R:g{12KU5ŋVF@`?&fy,D PK17f      PK  C:U            ;   org/bouncycastle/mime/smime/SMIMESignedWriter$Builder.classWy|:v-*Rj$$1nl"14
ki-/vU
pzﻤ-=蕖v7r7iMK3lroߛ7of7oW^<	IX.YVJN*	ϖ	5j%D$4JX'^&@_m	pɢJ_Jv,[kZ\I%
cRH[)M׬[@FemK:
Ru+ҥ񬖱4C)̌ajyipJ;栚lFBӓn$
ĢݽjbZRW5i*IWvu꺭g{B9R)EOFcV\RJ<NW7[G+
'i:լ
R_\,0TdbPvPn}خ@RxLFiNx9͍V[kt%ՙ<ilL׵E!5edD$XŲPJZ3٫9et9.b7</TKKV>ʯ&{Tsz|ZA)Lc%cRTr-HLXs*EU|Aa{*id5k(ME.-BZ%M*NP!MHYS>ոU$ʟ?lTUPX֤k(ڡ%IŦQ#]0(YZ*]pGӇUCJ87ScR`I|6u]2zIܔΥ,-diwPkM&kXFH'(Drvl2C|$VJ*=ah̺Qm;Wki>|w@T%="spDF/ޛe~.~u
[Q ˚f::
W&Gա-I	RMvdSsn&08W":DtMč"![ċD$GD>DDq="Yf\SD2\߳ೡUl\VZ~m&q~_Y,Js}RUYOeS9)E
nhۺ{0OTYSϒq#JZ{)_>KPoxy0RKtKlBMkFtg"Ѻٖ"Ad9gTTJ\}Is>L<*QMZK*o(Yui
/׼˞g`5;TWI[K05ʽY/MD
"c#+c=,cLk6043!'c3N8$X%2^<
؊#2^5тeܚW+e4U22q6	Q2xx($o|m2Bx~|Y|b01;>1p a c!Ί8+!3|+>M28#_f8pᜏv;paLV`dLpW4bcA|q2E%/wM+|onڶ3&d(M}Sҷk~v+)M[N$h~np	pD#[N4e!֖\iێG. "q<?!&iQ<:{G`ȿh_)7}EEsx 0?7tʱǻh[FOGvc&K=XuvbmMxgFX
^=K!"w8kg'r-I:ogpѵ~_oqnr?ǯh/{=	ϟ_xEBǿs&;w='P<8iz&G(<=ʻ9yIdC
0+ozT&B..&"P4Dt,Fw*dh#t&}S^KI<}"ŇQ&dEʠ'(:+Eq7*-UwMLwa?U1r4wGpU}{E[uedR&Xe,(gJOLz4,^t8VK3y /
6~ۢ/aǼ͓PdDSߚDN5ΎUUcx~iӷJ_5==̷<%;vbgq/EqJK~<Qɬd"VUvoJ7qPK*r    PK  C:U            G   org/bouncycastle/mime/smime/SMIMESignedWriter$ContentOutputStream.classSRP=)*QB"R@iE°хGx`M2I[glu\t18Z!Cgr{ˏ_j
j
NП2
iMA2|9/LU~ο,3h%i3o;v`:tBxn`D
UKm&Q#Aݮ˛l0%u27|7ݲܦ4T{W-]Lo
fqDe)E%`tjrll
k1RAx#L5{\}FRtk,qcգd]شk6kAX&ȌeVWroWt"h{ G[ghvͤmsSY^:Y=+; h8os*TWqAE\YJ
έ͆6̕RZ5총YɟVx!OZ%VTx2:Q1̐eq!MU1i^1^&0paJhmiYcN
ܣ[\q3+KWGIuwW!6k4FndE6180RlP	$C+7qKŉ&Fdpw?Ay8A[Kғ$Hnh-I/e[XվB帘'Bw|D<q](Cq8_݆R:6"w3#vQ"PKzE"
  q  PK  C:U            3   org/bouncycastle/mime/smime/SMIMESignedWriter.classW	WUm`tQJm!!Tj5lRC2dB3[}Zwn((zx$$}{]f?G ]*a5%x%,a;$H'N	%$%l/FPQ#{]
Tvw(m&F$jcH=V_:ojn[W k7ӡ6lioPO$+i[/*[seҞ؇F[[fw007W3#p_ތz>6Ee-S줙'p*cĴ+)
k =mDS1Bfi]mF42.`Q,յ6IaDtԑi9(^׾|})eV.+Μz^m拧|H5qL,Y>ǬxlF:Wy-X/J$(k%^
kcjfe\NjcPiCy2FN(}1̮JG|xT3&M_0	$FR5J>KDuiuG7f=l焾z`*z.N׵
Y鯡zo[؎L<cK˕x3QbѷΡq1q	T$hpqb_A;l3;HتU=\_IJޞ8w]"DE4h*M-":DlqM"nqNA]VLkv!QdLš9APA4-j}1JyIPrm@VoҸP"u+_*eNz.cw\Ru/7"`)%
}drV|N6É:3ӭtԿuwZ`SĎBICH{y+LJJ<Д?2Ң/Kxum'7Nn,ddGZ(a5UUPp553dgXp]+a+LA˙%F)X0`2
W0.<pIfxYbxGcxxIv,cޒqD=xᰌ{LdxWo{2xCF- ޡ	PLtiw|Y3Lhn\IE;<D "DdQ#)(?&4=S蹀/'q~ܞ)LMഛEIw]NJex<x wrCN\9Ta
5R8c	lRJn4'Uh
z&14N7<y!7rH	Ղ?N]AQv{uV+F,Qȱ[gKqYvYH4vg6#UߗcU៨??.rqUqj?P+ZS<NL<y=l៨W8ZW8133MvlAj
FuClTPKK    PK  C:U            9   org/bouncycastle/mime/smime/SMimeMultipartContext$1.classTmO@~J)'G7I	ĄKos{m!&F?8qh/tvvٙgvg? 
C{:#]RCגrtnY"SBx!aKјT5U!UʍrKзi{fic=28V͍}aQT]ZG#̚]
w=׶s9H<r,_&Ѩk:FrKAuG>dcפ&[Ue[TWܳTRa=O-]CCCBm
hK֮ͬ0άŝJQ-50YH߀VԭS6ؚIVU4A(޷3V+ 0Ї@7F

O#eϔ6э踏AduaZucRG0Y*wյ/jY=Bx^%ץZ-ɭeo]G`
!ڒIE8ӃF;H!hfs'`&{/P]#@7<
b+f>cSXOO&N1O$hgC;

qu-)dG"}SX&M'H PKoGkv    PK  C:U            7   org/bouncycastle/mime/smime/SMimeMultipartContext.classVSGmp\Th- /J-/wiPtүt3?ѿ3j𒋖eyߞ8G}=3W"tgu3DOets[plO^>/
{e;fvV
e蹖q
Ym)ƒ%4'/
q3+\/[FђWt{Ayk)%O[3
BDE޾'iJϐc8W) vK %#J37E/_(B14+XI)f:Zz!t:w-Kdukڣx76ohL-*泊iiz2nQ/?RNTUMw>mq6feʥ)&t gvGO(Z^}ʮOmvls/(V+
c:hpRpM3w
`VG\1*ORN86$Qec6#V[csIc[spИhP8sqq !v#G98.GqG'G?#':3AwD뢭](N-_͕p6ׄtD+ݷ!O
~xG-ѹ;`+`n)4Yڦ^zR|wn2\UjLP,7??Ը|^s9ׂit 4Y+J;Dd<oXAX@.|"EGD>ԩ؋WуRH.HdlBE3&U)ݸ%oFE4`J\W+jV >I䦂aPRHT0
]i)8!IVFagquӔ3/Mkm|c's:$N!DAPm	(M"zӏLv{ۿid4%8TYE?&9	?=MLA_!alVD]X<_%O`h8?uHf|SDQO㽮-'&5̶Va|fv
-l_D"ϞH]x(!"hc]3Qrmaw0<cq'6Q񯶺	'.qo811R>zG/>|qpB.)CKѨat6y`R_4jY{dC۴ш递-Ch-U_PK?څ     PK  C:U            4   org/bouncycastle/mime/smime/SMimeParserContext.classRAKAU7mK!n^K:F}u&fGUhք*sޛ{o`?>pH`4}eCuEp!D-b\=H!7~,Vmy*!RLCIz?ZYP)u#~0b"82pb½g*b83NCʘ'<[͌[0Ml؝=%Βxd2Y]-+5uy#Ʋ&N;;ص~ym3u%mͱ(v"4VsCǂds:C!Ƞ &cyCe΢]mPKIE    PK  C:U            5   org/bouncycastle/mime/smime/SMimeParserListener.classWsFؖ#!p5qbDI葫$p@GD$CMKzz;-8~OaoeGl2Xɿ*M|/yQEXm^tp(o8!vwsU-f*-ýF<-[S$#mRV,Cւ1	Zɐ*zhjPUCAk?F',56ȡ:{vT;|mE9ԦzcT=\vjJ
ms~Td[`	R)8EE?htPlg1Qd,ancM'DluTUL:=mSў
ic_/^&IuD\PJdp8T9HܧX&~9
L5lG5hHO	Qbbel5*#1YR
gk"DYhK\+&aGӔl:`c`sDdaLQ{LB̿LV5[(E7#s#ey]^˖,Ml^]*<`ĒelZ]W9btl#z(!,[>{yan"(zk
39/KW(9S-L#/mJ7ՙRt/䑝SB&S8wH	%(UCmFuce~Uf05്dhcz<6c3-<c;<v]oy.t
bkeO"SP][JbUJ-[٣rZ%fSRzeJ>]yL.@srLё
EUjkUXmނfy[)\)~R)en|[|(iBH
$cq\'deHs1u8ϙI@|ܝuCҝ;oBj3?4+rr2l8 "JET2h b%ʘ쐈6XD,Ã":xaC#" (NDC
"@X
b¸{.F) ਀`	؉tЃv.<ٰO
g~cp=x3ee`3xD@ /
؏S^h/3xk22DFWL!ި.8N H\ud1u3Z)?ѨZZo
o^"6QBmSS_E/CMS2N|p:.]H`>ظDXn5u7`V'szn/+Jx:}7d{--*7Y=s<ZY[p8z+-g9\%8xM|N`P=-_cS'|$:ڕ՚SxI&!7XJ 0.:\2GNk
.:Q$UQƣ됖yy4"V%ZB;*<Sxl6vO9lq}P=di>_PKg    PK  C:U            5   org/bouncycastle/mime/smime/SMimeParserProvider.classO@ƟcHV7_PEt_1I"$<R-	#i:.ϽOv?~~`
OJn=PS^O6O#QR\&ې
Bg¾HtG~qXaBmnmbC%*nefT|Hxp uZ>[%bi՝:3x	+w:f-Xp,\evvtLYֺ#=P&V՘	k0OA^Y,y6rRgtGg9>,ׂSdYK`L9(Y͛rהY)K6ʸoeS٨⡍x0Qk|~,RujR56tƉ%ڧT@ˍ4xhGqFJNQ=EuqD#NPo~᫟3E42|w	7>Ex+݋<~PK    PK  C:U            .   org/bouncycastle/mime/smime/SMimeUtils$1.classRn@=q:^SnFE
CVDRZ$K]{	:P!D%D%G$>
1UiG3>;w?};Cٻ^oF'B
a*JҜ3\2*':<H(z~};"Q<jT"ݐyNÈH%yoNB9Cb{o6B+EHc/	lжS*PRS">Ƥ.|̄,f,f-8&1ò7
~/nrA
`Ѣ),`6pm\u
l4bl1mf&4fzRl+	ӲWavAO"hZ(1n_FTȀ~G1nqc?N׿`㶿摩sbnGgkFE~vU!F3PKOmp    PK  C:U            ,   org/bouncycastle/mime/smime/SMimeUtils.classT	wƒ=cyB
 KVLP!P2Pg3W3
5}u4iK8N4mҦ?)Id[s}sgRЫ NIiC
ܯ#

FV_'%@CnvJ6'Pvp(M!}q	Wx]d>J藰axrx&LOd+%nopX&V%"hWv414{<tIh%9V4$էb#7hhq-&,tN1cϼA*မ7\o85P_+j@zE>`[+T{h(bR$s(Ǵ*4r){e=cAנmE}ܴU[5v	Xʲf%R1㙎ME
O3toBv~%Xɴr\MBSL+t(a]jNe]]喺0m.^
YȣE6mEl;MQKX>Pr<6++ےv؄Sz\;Kd2rT's3\gX2MXyhzST=l
fӴcKwlܱδRq|,l	%kW1J*&DR<&bT0
Vܳ&W-M~s(&5JZi9owL]3C삓$ҥɈ蓱O~2ȸ[A8$㰌#2!㨌w8.ㄌ2R27+wMtaJ^>$M]Pze0[I[C=鵣txR%oRMB}6^5qd*
Wn*pJ\LZ_J)CEݡ5ѳUmjMy'?${ul^z͂Tlƌv1nCQ`Vn	t؄*b؃@ISqYvA\d^w}*UC*ޅUƇU<8cj3|_b2W5O2|3e\ <(~o2|/@90}'YVOR ;0o1|y<ف)<#vē'=jʶ1w=km+Iՙ4}sM*n6Rjm{t*;Ub"/utSd:-]O`GXs
as9rO;*|-"	ZD'	%Q,yMRgt?R=
52&AAA|OQZe,KsNG^Ŏe<:}l/7,e~g_ԓ(!&cjz/ݳPUjaɢK8}Ӹpz89m:/fW窗sII+)/c9J+0NS2~//>%`k?l\㗃J5j*jt!uSj`Gr44Wxf87VJ%.a	06ިhC^oXs[#x+ozFb7k׻R2V~轆NDdծ PKz  
  PK
    )D:U               org/bouncycastle/mozilla/PK  C:U            :   org/bouncycastle/mozilla/SignedPublicKeyAndChallenge.classWWGaDQ/"#q	찌,3,2mbLK[ߔS;;;<:z~()$ ?P3Gj(kH{5]vj_ab+1#
(Vuň*4
:hu<9ӔQuB⨪l})&i h[,j52Fh>aNǈz̈LYmZtXG=aɺBZ*j>OZLUKK>Y])kQ]&-+K)
IU*҇)&"ڀjjdtp5
1<.5#yFQf3ܙgHc
zKޔ3XצX	UI.};@~z4b&qVN*#n4<:6ƸQMr&Γ[v<7JȎ-!ab	Xoԕ	ENX15('`[]sZJ+6ut[<A]m;2mAcY->ukn)-5#9\Ͳ9r߄$Y,1#a;"R+TケkWיt)5L񾘈JX=E2xژfiˡ|'ti%4O55k1gaFMZ:zA-[1lg-ݷ]-5ݹZmg<݆\n)Mde7s nSe>/r/{	d뼒st_"÷AV-uwSeU]!Wq%O^wyc\%y#|̖~M^{~9 {sp3g?9HŞR
]8"DNP2N*8)F{9i㨄;8)1;q\BG$,		͐%aHJ(ZVqQ	$T⤄EP'cC3x	8%b"`"5Nq g8IN^mqZ!Xƣ"BxZDы$'q2'><ɳ<K!~<#0^ɡ'8yWKя	NΖItЇ}S㦪ЛE_4ҷ%+!9;-֒6xyF?}hU<Nں|
简Lu`+G(XX{&m	rgo>eQsRF]q4u Ґq5i*kX&;iw6.L<\N)"R8ݤ槔W/Dp@~ 7#xBOPfG_ǡXqq󒍯l|u3/7@಼)Ymc/ͮ5&0ipF0?8At^:M&e8V9.k_fptۜHx ,t)|sisA
݈|\TUTU`ɞ'.fꞸMZgz8{N8tN)*A6.N- n?PK    PK
    )D:U                org/bouncycastle/mozilla/jcajce/PK  C:U            D   org/bouncycastle/mozilla/jcajce/JcaSignedPublicKeyAndChallenge.classVWGZPk$ K kKvQdwHtH*{Ns<C4[NNf}s3wv߾/ [K
[KRcv5qp(1᚞eXwl3+v \aTD<{
TW$QX䌄&	\#܂PpLF%#QEᔄ݂\cumY
@Oܱ-b0#p[MYϨfZ5un޾m	?W.	SzsjQmJAzޫˁ#t^vSM=!m	7mLg8\\wa\aEp';s_S&z<.;1)J`;=+NjUS<hDWJ+=06JHu%mu+gQ]5\),viN3a8pa<#2\b2_0g9W0ΎBml>]3>oRClĿGAҚd#­HB>#B%LGj8:ӝԩePLY/KÕָڨSpd7;u6E.
f5|ѣAEirvKh8Nb^wSX044,aEUU@EiIlǺ	dTrxbULIF
k*%cY2XwﹲFu^yG`Пrqf+p!9^<d~ǣ
u._&t=H|>?aQ!$t3o<TXj4DZa$OϻYV2ƫxQuz̒э*WF&xWsg]/,Ki> H*|\WoPK~8T  	  PK
    )D:U               org/bouncycastle/openssl/PK  C:U            4   org/bouncycastle/openssl/CertificateTrustBlock.classV[WW$H5$H`i	^im퐌a0`2Q@ /}]hY˾?ҵXZ$AZ>{o39 G6WKC`wxp]㱼G5 ?x6]#NIhJJjȪQUD3#cjԤ494F,N̤_HURA#긪N,
4-0')fI4)oBl0)mj	oH-ThH%5y[`9Veh캕W1q֣Q%e&T۽'B~=jĔRj2#bYnZRU4x\-Qټ>BTRv
;?w]Lqu#\aĶU(cBS)*d.ٗ0WEgOi7)*(fF2szS"hCD'D<))OxFnM"hW>j|{fS(#4<jslw2׻V[B×sVK7l/Z[P]=Mk\q-5(VU6죌Kby
8oݭfwmjU'W߳
xD|MaߪF)mߙ(/tkh7}sGiMwM1	zLveH8&Cq+rɨMF
Z؉2vpOVI˨)^/`P3,p#Z9+NExMB^Ўk>$$<		bU)	G0]B7%@ȕ""]g\aV,,gobWL%z%Lˋ䫍^61c1}H(^8MhV;i2 mӺ!]Ӹ˝M6ݭ|vnKQ{d9wD4^ݞ;x/:wp/.{OtLaN8r?
/:PK{m
l?pPZӋ?s~ "`qT"_.PD.jp}:|z8ݴ>3'>KKUkCoq9j;<88gdFS,Iw]|C^uW\Y>-]:D\2gLt
rFrz)칋[! ZUY5"T^)<@ؑ!قc|i`Q\3Q̡;bei8k>DXr,$PPKS
>  
  PK  C:U            2   org/bouncycastle/openssl/EncryptionException.classuJ@5MҟZAv!4J7%;A~:1fJ2UVCv1̙}g3_ '.K+;#S,\IQRft]ieZI*';.ŃHK2b^1V0;ɖV5EC3B*s;lq8_
5\BgL=;'Wt%wO^}vPKf_     PK  C:U            /   org/bouncycastle/openssl/MiscPEMGenerator.classW|6~!`Pj	B)Ttk jm5liRNS2=&sOI*ns~>~dKWZk{ι{_z V*p+b+x,QTAe
j*SP`mT/]MI,meB	mv:Vem8GHzmSv[>{>Ҝ07n]^oc?~mB@m}zoӐF孁fwG+nʼykFo`5y2wt֑LC:9yyή Wq{;8\Eb-!~=NpRCܽ]26G#t5z*x8{oD&7'E[H}-F6='i
\n4zI2GۣM䆅ʨ٠VK-Mv=ztSВZnIZw>AZy>4nY"뗱E
GonE[PU\M#Ed"]<фǿ72ecZ3qTHih,S*3}iô؀yIm-"sX(KD:;lO${<݉xx(ROs`SCvBjOeL/cF("Z_Ԉ.Pz\L/&ȷaѝ=ZQXG8Z@e*\џ]tc=l3(P羀g@|BMs\5E<'
Wf{нĐ|!a&CϫQAjͩ!OP]Kbh*k_o⩩2*Kr5u{rD0928_ZbB	ϕcT/:9{⮜^Czdr,-fEi,<O%_PυW]F5G4,(8dJ/UdJ"eT##1Z^KDjI0O쌻eZ*G_j\#Brm$6KtH$][$J\)Jbě%"V%$%	]Z^v1	z{m߉K;rx'tx'UA*zM~&ɱlfAhf>2u
^FrUa{KImY ]>+Q)EQ! iNԐBJo/	/)tޅNsi©R?+3Z&;9O\^.3D~,;/}S^p_[@/:Nu5͍+LXNOŅVϐ`X{T\BUXppqo|PK!1T^Qq)ScXPc*
8s#*	V|RE>"OgTg9*ބhC*	nIށލS۰i#1ر؅/2<iU6֎yb7gǍ<÷+;nq	߷c]N|v`&cp;uq'b8^Ԏxv܍q_ce)nJv_`r)'K/-jmGJY;ڵ.G yrj RQʶ-Ԗ\> !ht6(5'l8qE|(bg!av_84q:J(Sb wcNin:"Ny;N&oOR" N&2ygZyȽb!1{,.KZxiv)HMGO?W#;JﴵJSv2wte4c\%iQ9$^LMJwe4dˉ&(+h\d4^!k?f7Y@A>پyLޖv"ۈI+wD`i1DaRerOg,"#=V9%8)|0N%C:eŜ[(dn)qv8ׇ(X2c}wY,ʈS"lQ$4D7!5.kFQ'Gp(T璮Xp4;ψG9p橎3TQK$K4{%^}UgbH0PTfR/c1u^D\K6-tKP4/ "?k{ejOߋEsqfE:cx"oh<#5ٱ|7#gP]^EQև"ǭ-yY
ٌs(><
Xm2V:h66]_b0A]\8>B@rs#Jر"8!ce0ThcU08.%c5⸘XChw4:ZUJ8#,w3fPKu	  #  PK  C:U            +   org/bouncycastle/openssl/PEMDecryptor.class;o>.Fhh'h'FʂFĲDļt}dj~Q~R~i^rerbqIN~~Aj^qq~Dc~uɩ%y,\pb6@9<   PKO      PK  C:U            3   org/bouncycastle/openssl/PEMDecryptorProvider.classN
0h'?Cɠ[Gu1$k~% 8xwqy"%\+VTZXe.Z;Jf:kYy8C-보_yCoUn$"&ȖwZl!#H?.!H0x$ASPKfk:      PK  C:U            2   org/bouncycastle/openssl/PEMEncryptedKeyPair.classTmOA~-^i"B}*HҢHK`Hq]zw&$e`dgfwyvvv~4
^x&7NG74]\L1M&TE
;Z\yږښ
[mXAUfMk׊f1J|oR^W>q1~r	7-Cժ{4	,eN,=$3-q>	iv%B|djjag҆mQ}R┯Il^e4rr՚T
Oҙj,f9
It+ZƁl</]T4Zd+*VU0\g4ōq]04^hOB	nIp[Q	wb:ΘЃH;p"FWrmZ&%F
j;!T[|GAћΠ]3gڤ%>)7d	GD=Det-7q_GB2z$	1%Ĵ}bƇxxCb·R>1^xYϲQ[ڳa+^^1+;N|4 "M"qG55eNMO#+̀	::棉:#:@|{CO	W,5><!*LIM>Ƅ\ȓ'@cnbͅ|G3o `X-cd'x[^T1GBP[0 j)PK0X    PK  C:U            +   org/bouncycastle/openssl/PEMEncryptor.class
0OO+ɂ(.N5RFWs|(1*]s{`'۔ [PT NJMnن_dl+wɡ6Qj[
+dbͿܙZQI0nmM䘠֡sh5A8 ozh8u[߱<PKj,o      PK  C:U            +   org/bouncycastle/openssl/PEMException.classuJ@ϴiӦQCڅDa6*nJB4H)QV
K%Hp޹9g1?_ c+F(ӱpH^8Z+NJ(2=6q&:IInVR'Iį'66,54OF9b?,47︽͓XDpoV
;q`R66"$ҫ
b:@e+hz+;*B-@C1~PK8    PK  C:U            )   org/bouncycastle/openssl/PEMKeyPair.classRJ@=c_UM*cQbAVqi$4i`\~xGZBfq}s0o/ vʐjX졧tex#39>UCE]sR=1ݞtb`n0TQKRE'$loP
4/;!<MDþZsw{jjXf7庑X`+c %0,Q@E<Fb:1J^US`-]ha~²ݜnoNP{~UPMBFQ(QPK%(  t  PK  C:U            /   org/bouncycastle/openssl/PEMKeyPairParser.classN
0OS_NY܄Ni%$%b_
wu  'ZuUzʛ6`#,NFTuk@(|hD/NZš3	YfB4Aiz^w-!3#Q1EJ,iPKR      PK  C:U            *   org/bouncycastle/openssl/PEMParser$1.classA
0Ej5U{
^!Cd\x %<ۼ<_ v+[-
FMY=p%񦭛FP?U[
iLV5;}C9f{oEH5f#N1M.P&PK%Ð      PK  C:U            9   org/bouncycastle/openssl/PEMParser$DSAKeyPairParser.classUmSU~n6hJ[[jZhimZMhA$fs	ntH?ܼlR{}=	6vÈ.P<iu}2Yz&ٲ2!jqW^cW dJp~WkeVO
QLz+U֎yG\y1rnVJa^+۶S+3|2Vs''b{b픵]}CwtךՒٌ割<ZLs6CT3\-~cm;dl;S͔ۦdps
);zUx
@뭴Ŋi 1m̷|ĥm*V\:{Zpn:~YEQta&fNĞ`0\
19v"1GmwbAan&G#18F9s\%corqmr;YE[A^Ǘh)zgޝSo|la5ja3Zi{\	AD|2!il;>wGf8DG;sn
ogJ[Uv1E0`WqGjGngpOpܗR< HI)Rg0%x:
n#)+OXQC)2R*H `
U3XOh)CfÒ]1ʋYXp*
2Gneښt1ܢ2hYheO6 F(^௩:h'41Se
j QXQBP
uawh	ЄJ6ƂR
l5XHYV=JZM(4h _<-XW(RLWI#i? 50'L2]QJ%.I\,ޓhPK   	  PK  C:U            <   org/bouncycastle/openssl/PEMParser$ECCurveParamsParser.classT]OA=noE
[(UDژ&T	Ovhݺ%S>K!H|7Ni%s9s~deFc|vw0
w^jUE8E5,3,\[],3鰩UD1}f۵J붭2(%- #k:fapOTR[̒Ɔ.͝=KMff쒺cLP,T1zmpHO]-Fp}ujUA|FBKt^TfҢ2;NYgrmiw^ۦ#`5dtZ6?qeٸyQiu$~=ao*_ZuF#q#1111110m;Ih'+;N6v
Եwkp|p;x~5媴:/ qQiƂ
A#wP0UŒ˂x);H[EQw!L)tYsAf_9N)8c,Y'd='xa8	gz	\;!4?1;sg:	^:u,Աtsf)L7PQ%J^"kڛ'F9pD8q8R$XH\[rfrkҴ֡- PKTg(    PK  C:U            ;   org/bouncycastle/openssl/PEMParser$ECDSAKeyPairParser.classU]wUݗn:4I@
NF҄%qnq23CWWtZ͇V0|;w9p
6*Sa"cFciкi]@uaUK7=2\$3gnaS~$AFfp٬
c 0HkvOQLGkUӧNCE1ja*aXV4t׫	MwQNMf>U5D?~dZ1랠ZrCa
CfNZ6jU1_sayCS9Plt񪯽\#NjOtDִB6?@pgpn:~MFѸa}PA$9`̽ƙ&`;v&Æ#t$̈́=GgcCq
i+3W9xsp15z2bmt
/QSNXd[@AZnXaS;'2%]xm'U/	cY˰+:L7ṯ3X	ixo0*plV~cTZ>[k$wvT\*P!>QඊX>bUEkJIb
K뮴Rud,`CA'2R|
`	DqOy1,+q| -Il0cWh1m
Us%LMw]yTt(w%mO	dw4#=F r͛O vҟNkJsD{kw,C䴰ZDi.47OK|YxHogXx;Z.Ə(>0M<j门җ
q$9Q%= Os:ӡ @C'
ߐ2
'-]dxz?PKw    PK  C:U            B   org/bouncycastle/openssl/PEMParser$EncryptedPrivateKeyParser.classSmOA~ǫ("yBQ6&R/)OumB_HQƹB؊/M:33߾`Fzf!gn0]AEAqYB2Qn'Flwx ]_-jॷJ6zڑ+jǮW!ò֌}X8Iv$ЉS8i y
[?-w>L[ODgX֕JYvLPI+fVfۂ
aGlJ+x.}c/
=m)lW]U.5%fHI^P*U)SЯ`@!#zf1~x|6Iw8HrWp1,v8$k=KՐD$4؜C
ݘѠ`V(2*`Nع".UcA$U܇NϸWe]EZQ<;8};v`צAt2#MJ!#oG/D? 40YY'<i釭3W0Vi0c9[#:
|m 5͐#$ntpPKS^M    PK  C:U            6   org/bouncycastle/openssl/PEMParser$KeyPairParser.classU[WU$9@۴Ѫ{I
"Z JB,X0
]ڇֵZYK}bL)Zٷ9{3o kj5Z4ahNz!J/0n@w6?zk0cUAN{C:ŞٍdhRn,:%"<^U`b=ɪ%'%Y\IV}븥KɒE/^ckʸ%z5eJz(SNJ^4'5e\^^V+|e8,f1szEvY,[^[πNe?d]C<0gm=0NV<rLjΊ+Ibq梳f7-i:Ui{eSYnT}YQ(}hzuPߋA^78ir=s\3\j6VY8޹'X2\U݅﷟ʑxuopG;8.r\̑Hst2tM
RmVukFQkpCLCjɘN-OR>a{S/Ou6vt]>>W(XKm@>0C+$ӸiF)Үۊ¨W1f,
0'LDt).tSWp[Wkcs:0ȬaL+y!H!FbyzF\?tzmKwԢg[nEqeJTgŢ%is*jj"9:D\ם]OP?
ady延	%BOʐ	'O°1%Y`(IDP 6ѦxShh-7h"W28Fj12'xBK;m)MxPS;6'"ې+YyYSUME%|c'W3xtݣpd8G? &bW񡧈?E.sNp8CtG\zAb_އ*Q
Ugg>\PKRzl  G  PK  C:U            I   org/bouncycastle/openssl/PEMParser$PKCS10CertificationRequestParser.classSmoP~.cuped0fAX هEȈ3&dJn][b_H$(t49Os=ob/%-!eNJIIscH0<O8M%²	n
rãOBum8-}_GSa%t*-)|Mo
혟M#m>lvP	?2Xjt<Yu/?[!I"cQ33Ȱ5-[zMpHeޓ9n)RS&R_G1ϡr,p\XH0,iwWdhiZ]#T&΅K/@;r0YDTpH)K遊9l*XFF
<! )uh
!Sm
ښ?lA HM]=TǡaU
AWeYy "E2f
>"MwQr r=׷;ɗjkV]<Jw(8
gxIX(a#"
ә 8;xw%PKZ2    PK  C:U            4   org/bouncycastle/openssl/PEMParser$PKCS7Parser.classT[S@
irQTnPUCG*)SHNd/#3r<[(y8{ηߞ=_߾X(0w=yeЏܴlb.e#.y8yjcw?Z
lGh_'"gP)lQj{W1>YTa"mަ­DfJUvys(9߯BGMϗ4fX&WZ.tvU5kaR#~cTӮWy-!QyCimo$TrȎykP*))a#
F1ɽM0,|uG]3w{T7#GuIkț=Z36İTK\֌iP/0i!ea@J0xb
R<R1'*fV1+)BO>*3hy!Ɍ5C>LA|ML'%kaZKM<1Fr :@3L.7ċB|.aM<a
<5ZXO5xc5CAWGJ_;a(;$GP@oPKH't    PK  C:U            9   org/bouncycastle/openssl/PEMParser$PrivateKeyParser.classSmOP~.슎t"n+8e	[X,~Kmڎȿ/DbQi{ys^MLb!z6Cb˒VBԶJRdTpi
#~
1*{另pˑm!<&Bgvײ[c9^h:]ilap_u:aXp*m^/^{~xalīXvWtN\q7y-:ne*oʙrU!8mTTpC @S0ং[

&f\z^qp\Ru	1]+Z<V))jcLC1
3x
XҠ;ȪŲ%.ȩcXWRrZ4fZEJltt>&n׸{bOpd|}F$IFr<g!!jjgoaGaCDk>~?F@cxAzlG!k8a$]%{xPKXs    PK  C:U            8   org/bouncycastle/openssl/PEMParser$PublicKeyParser.classR[KAKk떦vYDhSQd(nzЏ>(3;̜3_ ΰ"LёNpɠ7DPd d'ǔ*-Mjk?p<ɐD]K6x6qu#mRwϏ/mg uc_)=݉
R)75DވwX?Q	
_xM>8}7aF!aV!`(*q&ʹh~D2Œu$#{꣉*ÔRK 71Td"}i:&ya0EBcx E<6:Qe PK'
Po    PK  C:U            9   org/bouncycastle/openssl/PEMParser$RSAKeyPairParser.classVSE~nhk[*Ш)$D)z\ppw8g+h 3#:(rI+3>{7_ >A,8`"#s
"Bi#]X2lfhAׅUa8_^r=B]i
a&Ɩim	c=TVsk}]=öNfUkԺ+t~TêfYDM3m&*qWD'nXR:^w'{T-azP5ךSӥ\x`Ѓza=U+˥6\\6
P0	m3$`ɡS8~}L0r=5mVmvj>J
ǷyOtH\T|GboiEp"֍*j+vg{3h|ᓷQh0ץBLꎽeZ\wQ-ĆWZspkB{#ݮjx(EK9qc=9q\!ڻϖ"Ç=ǥNKٯ̗V1kfjDտ+$Ϊ<ɖT Հ⃧xw
Q[
{*ĮhTL{~vƤp1 Q]/6ыV@'-rr1Yp7"P7qOjQ( y)X"/i)2QaYj-|c<T0D[<bMAHQRºiJ;3(*PY:)

ncC<
-]zA9βi
<Mk
ZIPC}slFFcx
p@rN~?Sx
-̕GYG*0S>O5/ZP/<jnvXx,Ԅh!EtϚ=:ZHx2:p4b3D e<?>p3X_+"yq0'!1wx<pqIrFpGc PK  	  PK  C:U            ;   org/bouncycastle/openssl/PEMParser$RSAPublicKeyParser.classTkOP~3JQn*o0((0Pǘ:a0b$&&;B.mgؿR>#|G]I{{7y$|eh?24ZVtSw_1[V4F85fA7j0]6zMUMM0tTEvX9W2P͌rq?){tJnf6Ceg}+ojMu\C(c)뱝a0V4GInDSiY?Ѕ0LIE}C6Da:12_׺:|ɕ+qb(َc(XF҆%U/ife
^9s"$E\zrޥ,ܛ}CdصUͥ2Dan;je>׺VChqCrnz#mf~ZnnLBO*U:=JL՜oںD1LWUnsPaU*W)O^
T!]1aьIMh(	gHFf2|k gbQB?%\R$aFBhMF4;ȴOi
;j#UmS%ܮ8Y'
J{zud'O##g)F"D4q3`+X"=:'(QN*""|@_	Q26.G'LMCFc؀PKP  F  PK  C:U            G   org/bouncycastle/openssl/PEMParser$X509AttributeCertificateParser.classJ@5.uU*D^HE"(((JXRIIo7

>%T#b]9A4_8%}xҁ;b@k0Q`\֕e:yT9Y[8'0kY7-7̺me|amml	;`e8m	v'Xk3Y=8Z~Pn`SxthYepP[ HPRhC:0A!VK^;??.T8^8"*j00!Y
*lwd?|> Џ8g~ٵ4y"+L֋"fwVfnW0wu -!9	{,<`K-Gٌ=.a	8&q9.CCJF
PK󹆡    PK  C:U            6   org/bouncycastle/openssl/PEMParser$X509CRLParser.classSOA-l=-P])^QPć6$c$<]MsxF+}iqF\vffvfvϯ  YeHhyaB;/Isr%)	ɠDXvP8!iXq|r!rMek~!>
J>ú뷌{4>5 ~h+_W^}˥$6jGաū~ eO0n@Eq-[m&Q?7#Fq<DsmHz;0$C]$-cCq#1ÑfߗRdеMS#F#TLpL5@c-`0UEK-Jm]$6CWME˖%h
S"7VJm
z	c~6@9}U{cŐ\ CHqdrd5CuW,v	r =,mujg=,u8:(;ЁSPJOU8YHO66Bl(紦	^}C	 PKb$  I  PK  C:U            >   org/bouncycastle/openssl/PEMParser$X509CertificateParser.classS]oA=Ce]mҺRmՖƇ&6IiYFu]+}D}Ge̹wܹ vq,Ô{rG1HC˱d'auB/OngSx:6>n0)|:}i,!|7r/M~ex#lW$wfL?)j-6GB[e2zJ?W&#&=i=߭*#QmFV Ð^9w8$1qGc#0*/Đ*T$[hKP!1Ǟ41lk .+!cJZQsx$*PEl*X
99,CS-ra
O݆<z8/FrCX5]@.L!"EG͌V ?zmA.W r-n;_]ԺXu4(ڠ؆^ItZjj`NͧhCI%<HxIcU<><p*PK)  a  PK  C:U            E   org/bouncycastle/openssl/PEMParser$X509TrustedCertificateParser.classS]OA=m.DJ4iI@
O,,ݩ/mb}G@+f3sq;?} $F;9-0čӂR7$XA :{Rx2<<:d@:C]k}h=	gc:^tܺVagH)}ft&F*VI،E(mIKg~׷ܚqU[qaVE_J9O_sEZMDI_u#qC99rHqLpL2Lߗg8FjP21C9ϫ1l5X@w:1x':X0YiZ2j0u
[C*uAO=~y",V	RǏeĢaXi`Q\I!mvF{|ͯP=B:.!F@F6^|)w0_`ƳIVZ0ml8fxMrI{Ir%r.=
h$x

N%PK(U.  x  PK  C:U            (   org/bouncycastle/openssl/PEMParser.classWm<,M4A	^"dZ5YMzw$m^&vRMJ//何ef%GOyǼyK܍WUjkT|QZ_RqUUS^ŗUTq)hl>}(:{RёDj6txP	踞L+m,kr8Oc!}BAH4<_?%&)}~<4Ԋ!-GbZt%tiH_*1䨞ɭIMrePS4ժ˲}ڤrJ)-j^˥*׺JWDzh9x̻[*S7QouZ\-R5wU~I|"FIw!*vX4SǦMGAdX,؎9+%8~OF4[d̢-)tI3xcgӴ꩑r67e4WSvV=FĘQ]\~ʜKrttPg2FəͫTEXܰKimء.h2F֮9Ǉie{$d̔j;}6csEZ˸5uQ5ü.Äi;Y+1x-Yrj^fg=wd.J4$h>;tb&ˎyN{d_h|rv]<Jќ͙Zoo	pMG-jQlj72Mj)%)YW9?S9@mf
lɜ
\{+OaM`.p@A_8$8,pD .pT !H	+Eo|bHL_$VkթUͱ~^idKOmOcEb7#:|cZ?vP@2ibY5ɠӦ0X4nk*6PK!GXMkA<ǃX>Oq
t#8Oϰ8x6x.x>]x1G &𭕰R i|/I,~@?
`9?~@IXagQ`4CJ(eu~M+L{JH;ǌ\pw*mvϮ%X~M[7o~5vxx]
wHwuYN
ls}9Em"Km7dBu7H\kovjl7`PZ	oJ%BN	wK݄pCm7H%N8* $]!	 < aAxP+$AgN%=G<#\Ł
&wq~m`fBYN+&\Ke"q]2Wn2?K\<soH\[Nܟ$,sJ\"-& 7Qi~{T+W%zͫR+8E1^

DY.|O*zPk@ocp<.E^C֫83w[p4E$ǯg\ϯ(\HSD0?D:M{qv)jB
}8"=ݍAOHZXw^B-\`W]Up#Op//p;#[ܔ-ܗ-|n>wg4ӭ~PK   @  PK  C:U            (   org/bouncycastle/openssl/PEMWriter.classRMO@}KBL4PH@>VTԪͲJ۲7)=BV*?BY۠ fŏ_ Pu}WbJd(	wyj|2Tn3	
+O:A(8v1r^'V
Ti<v8㒏	CL:huzR(9y
zp5nPP]'U&Ruc"q9
}~:s'whtI7|
Tna,`Qom&L,(	L̢
C~/8;6eI<_<<ԓa
Z<~>Mm[x2JaP/#Zb9%<Q[&XDS}sGc|S<7tųiA}N<rm9lZxbۆV5p	PKNQ@    PK  C:U            -   org/bouncycastle/openssl/PKCS8Generator.class04$A,SiYdR	
!+;}m6D	m9&yvWƒ)^|=<33ό9" eLα2M[T66mPոm]4H%T3j`ͽ&Z$Xm([?n<|ၐ90ط;7_́n$m)onuyJ\  4>һ{HE
5Iݞ2GRGϤNѓ\VHhsv;jKmoQN+U4fz{JJ̏+7W3	mp_LIi]	%#N
TT)1ClVY9N)u$G2<LW V%Ed%;QE],SOCݔy9MX٥}}fe>})^.K-#]	=)LF-]~jJ@C[\r*ڣD5N(*w$1ޟ(f!u$Y-l$:ۣѴ3˧?
dTcjJd5W/Hq[F.&L
d6*}]I}Aq>,Uֱ:Z׺,K)	*l6fiPfn>%vDK$
ʰk@6
T*b,p).J)fu{S1:	oOηlrNI;B$If#4"Qi<<6VS'NijGRPRqjJ<JS1n2'gLN']iNE|\kEtX'".qKDxEt^-l-4IDX4EN=]U[0]RtCcӦˇznJ89u4m1X`O2\vv5Yxɩa^]<<u?WdO=4+[V·݆֪~΢?t%@`g2$F1118hf`0V2V1\VFhgx>ƥM͌ cvIB\<0`,b,f,a,e,c"!J	c\*	ATK{$0l+|$iXB#T	"Sj5W`a\˸q3ƭ/J\ŸqFM/22+2Ƹ;18e|gc|qN]0eǸ ACv|Oڱ2rnj)Ƴvlcoر"zCQ<]_g<Cg|@m'mw̠&Gn!>X;i1Z 5rpִi皶3l1-nvi]fy]dŦ]bڥ[,4oĿZL
ucux0{L()L ;fo|P?Y$Rta7DP1]&Hh9Y㈆X9S
ᗝ-#tV98_9
89#+8,1Zc(<oT|@yڕT:
lIj
""v!RU"~M\Sğ9<ry;y<~x=Wx-x588"O}j[?7EC,7
}2~Ѕ~cEQPK    PK  C:U            0   org/bouncycastle/openssl/PasswordException.class;o>.F6̼;FtҼ⒜TԼ W_׊Ԃ<F-RD5|sK2ҭ5xs10328秤2(2 l@		10!v` PK|      PK  C:U            -   org/bouncycastle/openssl/PasswordFinder.class510 ~Tn-TdYvd_<
hߟ@9l;I9q,a5:&x
a8/:r;\0UhI-u+P%*PK4}      PK  C:U            :   org/bouncycastle/openssl/X509TrustedCertificateBlock.class[OA~BU(햲\E.%$	/.ݺDb"GP(f[s3g^~@xb!Oe{6j\][,2diZۦ!W|seRc9jRhx5ch`/D#CmO_ZdZya{.Cce
a?kFA8nI}%9"+|8f]/5TyǶO4TX\d UL֨x[(8z\]t]ᒴrUڊ,+oPrh޿GRM*G+GG;GG'GG7GG/C*00oIF㉠(Ĉ>"z-ּj)vOUǰ0
BVф>fĐfLA?R
ХT
KD+CWfJ&7J07_)HYaGF~w,c:B̋z]2552EDɷkehsLkcH$&@X2mh+y	e,\襩T	/xI+~F*+3d!sp8pD9XQ
+g{.a\a2ja3v)<iPKlg    PK
    )D:U               org/bouncycastle/openssl/bc/PK  C:U            :   org/bouncycastle/openssl/bc/BcPEMDecryptorProvider$1.classSO`~P;6HՁ]7@>̘$L&Oo7PvS+M$MZ]@zwݓW [?,CZ+dֺnm0L=t<'zP0|ꄪ7pݪj"1 @2,ZƐ~ bd{darg<3E5??C+/0tN7zo~>9o{,ysbi
kA'-A
_0׉=navݒ- K$A0+!/P{Qx:9?M]N7dE{M+<"&gӬEruE\Sp
2H	+
pC,f,nɘm(XĺXc4}[0[!5ohϏ_ǟ*۞'KO;qϹ
T~H
1%4W*ELiyr^=CGMTXG6I\?|w`U-]yIi7IQKzfP1#qd]JPKk  V  PK  C:U            8   org/bouncycastle/openssl/bc/BcPEMDecryptorProvider.classRJ@=ӇicZ	.I.Bł HWt)!)X_UP

~%ъ.E̽s=tzːtK~'gà):=0е7n_pZFgu+@X@RVBx4HGC'b.lQcqCnJ=
ZϮL~cIb?l]o64j<V62NF3E'5e@W@T);4"	3ʏPN?7;6XQ9dQrJ0k><Z*ak'PKMuI    PK  C:U            .   org/bouncycastle/openssl/bc/PEMUtilities.classW	`SU=/I~~KE hZBK[ B7Z
Ʃii#!I
ٜE}uqA[083ﻎ"sOҦm"w} v`\FAe
x,WSBAfVЮ_|H4qS+lam9=MEV BgNP#'Bkփ|nn)BH,rmC{K]oX=&iȋ
M$Z[:[[ZMmG{[;sJb*{;0ݳ5Lœᴑ2}֍'+h[9ɏy$Oײ
4`"aH&P<1Lt0yqAep"-TgPX0J+=$5C(Xm\2H<JEbP$1h$^w"jS;4hvy;LFHF5=dp6֝:I3rǠ<X%D3hFTY![Itb(m+p_OK{U4Rڳη4LhSd6KoFLg)Ue\Ęuupo
|
,vF@0HS
31`$Pz*Nk;Y2'SicO~t$L
n&q)hcqnc؝twœ`t 
wƓP,4
QL}[tdW\QҾ--R%MC)"&K"3kլme%YCvI#<Jo/|<Y,/9pdHS
m,PSl"1#}_#<޷+y۸ip1m״KqIKiJi.ц%g'Nۥ	L􎖳wO,EOжOK;UX=YVUc|$P+K$MhO˳WOX΂<JSRQ_{4ݵ`]ZC8SbF>Ndn'Dְ!Œ=h&iZMMlWNG!}~_='5-X眢t|Mhw5{x+0	Ѹ7aʤHCF*RY鼧@*Ls%ϟ5CݱI1V}Dt'bB0a|`-s{JнKb_b$z%vHxĕo蓸J"(Kd2 1(ZbDTbDL".F")HKI'qİuoxěftM8NL響DC)py&@ZLi^T/젻~NP{s6c"S3Q/';G緪/~-옾	,)=D^a>J_d/f;bu4UE""\U2<y_:G
3CWN^#%kG`vYvuM+Fd441l30t30\2\6370pûN`Xy6Aװܜ簴@{PXa%>OjX.bR.<˶ЊOkx?R|:K_`_dyK/h؈/k_Ѱ_ޯ1|]
܍3=1'?e~K_17e][f[[*nǋ^Uu?QPT;K*şwª>B-`8 C3<pHT<s3<G]Q/*Oo*F84	DC	d8;K4صJ.m+/Em r%+|6O VfB/PV;*{p亻`3Wj-n`8gZ5ܓYZ:""S!lXL&-8}[1BNqs*
apD\]ox42zz28DOѯmm1T`D4c,E=X#(G`yP˜ /-~#P\pBp95Xz fT1,f,4z?y$ڬ96zLt+2x[nuEAswשc{
ueav_:7^L:<A8NٖjOֹT56:*.aufZDQuC3
lV]:cVf< {yųy2`X̼Rxe jf͜6z|33xWb6i#jguy\Xόs1dI
~+ϱ{M
~bGVBsj_yI^B/e'F2f'Ѻn
o\vǊ̖(]+WZ]W<WyY:ΓXfYn͖-[wX
!Jn
w;$g}SX NўA
ŋwVZā=BҶ:_&q)S8YgΛ$o<[]M:+/uVZ}!Ǎb,G.u^f_Nv1nM_[r.nG{Q~X/;<!Na}vA
"aX$y
#y\\fvSU .]yn^&W3dG\Y W3"Ik|\XsJSyDeU1V
LT8<S(󧸟7sNPK"?    PK
    )D:U                org/bouncycastle/openssl/jcajce/PK  C:U            9   org/bouncycastle/openssl/jcajce/JcaMiscPEMGenerator.classUmWG~%@䥖A-mQ5
%Jd2nO[BTΩkxgLBs4ޙ{Νwf >	c]撁E۵[upB+	%Exc@f@/wJo?'
/[4pRxU5`dtr$!w|{4omnٞ]ͼڞk:-YYǑ%K
@
P>mT
kO Eܱm5nv^OLS*3q+kJΊBڂ룡"Og(D8!T(I/YБ9LM˺O=2"[.]3m˖[BZ|߫b]wQc؁Xˬܓy22?<mu}=ЫuIS0302213|pSQY7[dmZ*=ʫ\	{0ѾgɨZu# S:ѨFNFeuR3Q#Ep8q'u$N:N(.t`SF1TE%bwc%3qi%*31&Rj:UYdM၉k(j:a}Hb>
iz~PC.#^p$}SN#eiyѭy| 	CltK\_P?N.^:xȝM
ROGѦ::?uL]\=F-fq/wKQw>xLjU!͘UZh#}cj=GY8CWKlɚ-
*ۓԞ>ĩBXFe@3L3PK*    PK  C:U            8   org/bouncycastle/openssl/jcajce/JcaPEMKeyConverter.classVWU /CKiFU!@SB,iYBMmIa2@d{RwmMN7oR${揿.\v	ɉ:'V9'j;.v_@T?gh$oNWxQNE9'#DB+IUQuᐬh(V՘ddrd4鰪	-['OzcJ<*biE4q9415ê4=@<gMpl*nb[YQ=F*9NR2eEUhdOT=yEMhxl]Q-OВXXBQ:
q)EKF]Zx L*`8EȵW`0P@/ YA8{{O!nKkgHNM	2wǓad<S9EUuy.!5E"JY%GZA}VN?c)5Ox<ei=(豉8EQTꔜj#<Cf'lU'l3j(_rOzIr\(2#!~ SHӁKdj6ů#d/1ݒɓQY7+Yu9AkfCaa;Cv3aða?ݢK
Abx&tWxO+
ᦔ?-M<w,WQ_FVCgISJ%N*),dwZImS'jWbOئE"m-y1HZiʚ;`cl5r{:iyv*o9(8\vMUޕKʙ탕_d_76MAjp܈$Ϝp8-YzLJ
$\I3T:%a		0⌄uK}5 \
NBd^D?1xPϼxDK,0^1Dr8?19yJx\Qœ"qq<*1gD'OZYN^x3>s})4Y7~')Z4L/,̀zwop,?_܆܌J"ԉ`{_̽k;q_Zq1K7F	w{dp!Ɩp8ر ɾ,>=
'Y|YH
Uӑ4dp#ڋn:hN93.Ҽdf<Axzx<`16, fPLpX[tƃӱ8qW7;w_ƹ+XGoj.m0ě*&CF8BapaO'QMN0LmWk>=o`|Gp"ข8s6TZ3: PK^8    PK  C:U            2   org/bouncycastle/openssl/jcajce/JcaPEMWriter.classRN@8NzA! 7U B"z,ԩ-{Sʣ	8s!R+ HԒ׳̬
[mT;KJ8!C>zuNŹҏc	Ƣh
"@8r+^ByiFMY[~5/I
(0~sa*z:)2TW~3&Fu9?)ݘ­'%NfEtp/,`&֑mĴfLXxi^;	ݶy7Ș^qC䉑$}M;F[xuT/q
rɹQ+̥o2bRjg-RX}: =X-_Q
kחYnqq߰iEɇ2
/PKP    PK  C:U            7   org/bouncycastle/openssl/jcajce/JcaPKCS8Generator.class]K0߸jWNU0B(8
6*hҦ,lɁ{8o I-ٷgcW
U<A^'5+& (zh,x*3%"%KA"yY|AY,47&16cꕫs!ET$=<.%g?kj
h(z%z#
dpp10m g00c`zf\9v/rƅi3Qa2:wk/Om!b!),cل<L,٨1#ըۘ`--gawXБ<	PK> S  {  PK  C:U            <   org/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder.classVk[G~LX*hm#VZH[ef7Ej/~yZ~3\\3swΜ3gv 6W?|~~H~U@mpZb6񄀆hPIC5aqʹHѷC5S#<V42$"ɰFkOG19bJ.YEZ[6l6)vвr2Irliij"Ov5jV@rJURhV҆IȈjuxx/OP7oӇ
fDaLAwZ*La3rz{\Q3fe||K카D5-"]18?ͮ+W\>6;k3YZ:;'}
H)u#;H)lZi5"H&Lpv"*jW\N)14ӑ΀Vݴɩ6UTs!uu!F}㱤[lfRx+"3Tcoi6R;-:9=*ƈj2quJV1<Ca5C'243cha3213g0l?h\j|ϘY](.~5\hO-r
Ӗ6ZIBRfķX}ZI}B<2떑q2K݇'-J1	U]Gf;/*|!ҽ:p=s!U?.0^pDw!+K/*.*ѝ(kJ\RB$/azTKxC
JhPJ؈CcPB#K¡G$Qޅ$,q	$		qR&<y/pxQBj!A
Q/؎SR"0Etp؉":1"bYc"ppxUD,1\px"-8k2r2g_1d%u@S&NzW?QtA%F밈zЛWp5
G_{FdTEp7k[nALWfm^d3MHtM)L
؞~!'q)m<xVQvۼ4-xQMmX)|Oހ/Lbe{=Q7<z.wO :){c!
p~eb"+o?࿉}y|z?T;O<`?:~M<M)|wŎ/[ཌྷCgړa1<!=tK鰤St2%P$
EPOoSS/"JՌ;7zMllPK׵=|  
  PK  C:U            Q   org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder$1$1.classMo@Gݦ|SZ>IsX*
BJ@+R.$hwG!1C{Z;j~c<XGcXk9ϥCQZ-q9{3LE³DT$v3=Wi&e&9IbN w",q0DL(k3>Mi*TQ$Ǉa(i	3ˌÕ
9ɌH5Jn"m閗6<4<lz=\+kǰx
߶WX '~6Fh$0΅JH_Ş˸꣆&><n6V۸PJt7M&kp,
.MuStk4_
wX뤕9M8bk)EB/wr5Z(BJPKXl  b  PK  C:U            Q   org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder$1$2.classTjA&I6nnk[n)"hGHAt3n&lg&(

>%MRQofwǨ0;R=1|{Q*yRU"-1C򜃣pɸh9
=uy麼
GNM:B>EzBniZk^Cd[W}wWyJ9ѝQQGqu쎪60o0p,r3nމ32vs*0Վsd02iL\rkUfOjʉ|*[Ė/5kJ	5\0?JSKwpL/(DLX2q&R`a"p+cq'<fQ=L-hA(VD`֕0!.E8@H1GH/zH5g!!6!3 ^+v_yz)wogƴ̠H--MUoPKi    PK  C:U            O   org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder$1.classX{=z	#DI _6$"zHk]u6mL&M/Rz7 n]Yofg͛w=yMoVAѴFuJ5XZ7JXl8":Pwc]0wG[{a2qQM'-pRLRjUY4=m -51MijgAwX	śnKhLn@L	Ok}؎'.2:;GX =A&ԬNcXGDht$ߒTfQMf/'M!5i:"1}CҵG)wl朗yk7Ԥ﷖ubjhwtF$[odOZlNϲ:iyݼ/:q
sȰBѡnMf2446k΢cfR¦C>wfBuRn#5=[ᬮMRCq>7XF!7JVh!X4ZH
	[v24FqѦ555;C{bn9%Mc5x
ö1a8QKeiPiUIć{-XWq*up/|bGǭ'CC%
:äRlyy
r_Og؞Jd-:thw(7sbl-=mMTBJSߊq0[_/a#PQ?q:g-;53NbWw"j EIƱvc-ʔnʨqN4ZZ	::$C`*%pn^,pn@@/eD
9~8
o%';l
FTjVR8U\zB(#3\M5JNoR*RL$v]Vwnizoϔj^eSM'ngo6u	vƋ;>~^\)WY[|Fl[=숛˓Ws2aU^Kngn_]%ٲ6/b5(V&|V.w^~_rac+Y˵7c86]G}ЦZG9
P셡zT+G+PJ-AD \˰\ÄTQp#V}xM\F8
0,S'x
W
j2Njި`zhx[e1xHƠd8)CxP0eCx<,0f'.f#0G #γq2E0=Lu/>.><*CŻd		|BS2` >%/H
85C=b%袸.i+K2;)+A&G#j7n$MGڮ9vl@䃝⢑$$Qv-g@-%*8zW*j״382S?^HzP439l9tlp55@m?+;	jrf_\rg@=uN69),ĵ%y?)U(ȟߪn47rz_m	ȁ:S&~;&~2&m5o
~?9?	Ow38[^cQsk<ybn]ULÓ9/CmimoGjA2/N""QC

b8}G(#@#hr]]9l]@7bxg/⮦5R?ǿPȷPK|  l  PK  C:U            M   org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder.classT]kA=cniblն~FM7("D|0M
M! a2u7?JnbKb$,{9=3̯?~x"Ra-3s&BAT*1$[it{R1dm{J2|ձ[~䉁AJ+xWH;
>xG	:Vy8r?E\N[WS' p\KQ;ySi<=B
zr/kꂔfi)N`'%yBt°p,f`ـa`C6ףޔ6
;ul)"儃thyfIE_\'31,,J
Ilp	LMp}WpDLmY1.C%]0'UA BnFrT(gh%ʀ5]!߱.c;Fn!A< ML8=Y_&?Kjf3OkZ{p٧7Aȫm+V͎:oYNcn4PK♜  E  PK  C:U            G   org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8EncryptorBuilder$1.classToP=*
!tSQ)
s&djp33!Y\'t-iV`\C+l02w=ޏ߾XTFe~jxƠŃ ],%ulΐjp4<Jhs8ȱŻ	2v:Uss!2L1݆SkqK0=aԼku-37Zٲa{Fn7'n8'qo,C+rKm/lo>7	d1.m+۴hTyMQTW*@SpIe%Q1ϬGC&;qfgay	/dî~S23ꐧkH򰜕9\=4Myc>w* 8?5w5$qUC4D4İ ra
KXcwpW*f@2rUp!ZꜮ$x6r*.5_1X&0\A$I]Qz#MYdOќ掐ˮ!a3Cg@Ihe iྀŁ{x#4'1#L+
=O
nKDsHI>Gʜ=<$K%|/PK,Y    PK  C:U            E   org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8EncryptorBuilder.classX	xvfv@$N;[V%kZw#oMdIH$P(4P -=zwA``
i}BK)JcC}g?oyʏ= 
	,
*CAm[@@},srp{[}fwG t2;΂qˀՓ6fI6$Gߔ
NoK+Pmih$Ndʋ2r7X3\KjNj6Il`A?AV-?+4PjpƝHDȼCq=3=2EVjh-pT7Gը:ZtҢ&x%ʠy-?GZGIG4
VjU1_#e~mtw8ڽk#Z#Ҍ1H-;IG7jl	>jpj(`Q:ꐖAï_Ca-;6,6vS@ZNG%g`!#j
:,_EAԘC
Ai{R`'ʊ#n=uyOOQDA54:tDq!CC|l\9qr{K]}..\NjuoY\K4ZXp#NGQQ808xhpt}
1#Xl0/ y<}~/dhC+?'Jߠ2:'wGЏQ]djtƃA]Ѽ'_:\o	1N5~Ih &R(P;MM4fBe39Lvj!ird6>hĦgc>;	Gu|OezݦVAc_@ZUhzg/N q0wAÌc:U5;	ӃkE#~;aNh@

v!9EG AɎn7wE1U;e*DXx8JO!ͪ-AzZug/lX38@a#A\F
2\9ڷ0=LvDR[O,Fe>uw;deK̒LR;p|UCGC*5@۪$lMv	;$\*2	;%&+a=JI'av	:%tIp	~	H8(
	WJ"hm>'kɎM/iyḣMն)"<t!F}Ffzj5؋5v^>sv7b
+S&Qh:3x0q`R7Ίz30_s^AQ?ufX!i?f7dLgs=tj/;z.7"q#vvyS7%6#|
?kw8>ɐϲnMYT ޾&k6}SUgW9̬.8"+T/uϧ
^?=AT9cܫy*]~PL'Щ~ns[Pa,Sb\`^@a(a(e(c(g`X̰a)C?^*N;
.afgh`hdhbx	 KTCExAYAޢ@F'qo>ACA
N+0 
6x;PwqnNxxK
6}Ly!ᱏ*X=<vgcq\:L2<Tx9m:7]1<}0GŸ`xO2|a,>(×2|'?oeD3WwO1[Fe̋3%_8?2Wq;?8_od\'d\_ʸq='WY7_2ns2N4q3~-Vu+~/6I)A}5w0I!
d܁,43?iP
L?_O~(/v^~o'½Szf[bVjZmՖYm.6g1[?JF4)̖l)̖l)̖ZwCnb u5[uLɾ0)vj׆1U(^ ,5HLrct| 	)ܢ!a<hGpfa4C8EX"PJ&ڷ!)<lYބ
6eV)
|zQ''4])qi,̎N]yI7I35*bCH͸MGzTbC1Q㢞V1jj\MKbur$nI^ZڒҤ9tmEEu㢹М
$,JbEH'''4
"ӄ?&֜|v"Qounܱ4nZx;j'qigRl!KH<bɤdYzشZӲ2sIܗ}h
dt'qk.̺C7IsQ4y*GP
X("C<.OҸmU))!J$tQB	ӘDUFF3XIcTQޱA^+hDP;3#a3&szȜ.>8!晝%	1,M,K\E	Qjv*\XhvVXEF	e)PK_I
    PK  C:U            H   org/bouncycastle/openssl/jcajce/JcePEMDecryptorProviderBuilder$1$1.classmOPwjs(Zu6 7aJѽnFǥm4@4ї&~(6t	b֤眞{{"a!LaJV
BR`\l_fȬs5t%eF|͞+>,WB"MSx^"2ngPjlw!]7^V¤Ԭ֍Ӳ]{IcT~yqϨ+}2Eӷ!}z]W|O
7La<7Euٱj-,Ia?@"P@2gAڷ[£7-Z #;\&jb뉬ۂAGMATQ1ktw-YYQd<y\]]lf؜B6IqNwϼM/dIIu5\Ġq\p1\A(05T4n&5$V19ȨWp!RtjԊ%۔GtQajfm(Wގn*+^:'p	X,P'}t A(0>ҙ}̧0Lva	lz{D&wCܛ뎓6gll_gL؇x)35q PK9Hk    PK  C:U            F   org/bouncycastle/openssl/jcajce/JcePEMDecryptorProviderBuilder$1.classSJ@=k5z}Uo">(Ad	![XA?g[,03Yv6F*C7prWgm=C6tZomq\;"l-O>7DQ	çN,Pt]my67l>y,G{I)$I:w.ֵrǊG:**Tc*Uddb&~宾9fPJReR~IS3*ݠmJf2w4hLC
Қ9ygByRup\#}PZ;
}>D,&T &g(Z"H6EnbV^ 
LB3VްQFg
9,b)|PK-g    PK  C:U            D   org/bouncycastle/openssl/jcajce/JcePEMDecryptorProviderBuilder.classmOP#2F
SKI~!ADc2tvv]J$W`HGӴa,&K??x	a^0xBHZJ<Mߥߓyq?R0긭0	D_p
Mbww7{B\6GJl_lFזU5MؓR~%pQQF
^gPbQ2Ώ
L0L6`a#/[ΕI/쯍y^u@v%~R}>bFh<qK(v	tÂw1eX1QaLXxhGFؖwA ϕ
k$_Ҫ=h	Z3srs?z
2r	e UnNsO.s,fbƙ4➦5E˘N9jn\]IPK?F    PK  C:U            >   org/bouncycastle/openssl/jcajce/JcePEMEncryptorBuilder$1.classT]o0=ǲ:(
tH &mHSZT[ؿ~ ?
q6iLC%R|so;-<dHn0̙4y"|!2T/n2(*jN]u`(4'B!	@=Z-7pƎ9~~pAس;w\'!ȳ_L,G|Sq~
N<X3T΢GTcTNJƎWc*JN}®54,ik1C,Zpl7K"3sVC~|wR"6wHb{ÄuurF[3k%\F㺁qӀ[q{(fC5wt,㮎X)XCnm3rErmc~@7Qs{æGG(2")3 EGD?LuRH*OiU&X	W؟Z7t"8o}!jyR"D&6JZfP/S&jr{Sփ&5o
)it5PKԿW,    PK  C:U            <   org/bouncycastle/openssl/jcajce/JcePEMEncryptorBuilder.classT]OA=C)."DmKZH$T1v;en)_1#㫉?xiBibýwf9I,{fpC[NB䮹w:VQYunX".^GL9odˍ|m_S
̩3;
[iʛ9@uzt*jZ|S3E8f)Mkcpke'oV6U][-)6-	Vq?V#gXmu.a7VVLݪ6	L{8yl궹SVʶYHBEB^	>	}20`q$Ҫz xҚg
^^*+I.w3ٝ~B͜!/nkͫϤ}ѭ
Y
<:ȸ
%{
nb\TExmDEA1[x"#  2D52F0)cOzLAyeJm{'h5Fc9HW~1Ubj(K`b*K#d	O1}#̄#G

"5x@kَ`Q`p&a[8G5\?N ^<MR|?zqV1gx>wϺ@F1wpz8&)v-1`EeF-c	&g&(ʔGkPKV    PK  C:U            2   org/bouncycastle/openssl/jcajce/PEMUtilities.classX|S?_~MnKz HRB[Z!8)
DKܶ$-m:nsscS7n-t9~togwwoқwsw~O? kqsX|pȡCCM9tpC'pa+mz8qbp尋CK9\rA尛 !Q{8p%;V"(p'{͊ =4*	HpRz/,{}[Է61~~8G3|CXz44͉bcsP|=[BH4>N!T Vۂ=vRMbMbAؐ06Zr6$Л#
"e(f*ۚQd'eSGTqhfhm iEgwkۅB;440P'BWll\cnn)zɢi
VK~ZVaPXzZ0cm4HkVg5(y/c7SѼF=M[:^%T%}T2^5TJ
'ÉxF\Yq-R}AB$RsS#ZJ_TItDjW5c0a5Kd&{Ә%oX,&cּ!-כTTī#ވQWaʅWPlHq0A"ʈD
cmnUaݗJ߰>v=ND4̚AJXDE!Ҡvk:Bj,O&ҙT0&$	0rU-AZv1oexP:R_/Љ[Z/Z{`-Sg3;0e,|42bV
ȘGQ}15>k%`,
PĨ41m=۶{B8Յp4)3rJka,Q߅<c!c\O(xk"4ʕ+bO*1ŸLtRrzzFKP͠ւh
Eg1_VEib^>F\6~tV޼}.*4`i4KI`tw6Mc$R^5v΋p6=bDjз;1t&tڠi03с(%oMcK0B(^8Mg|[$7W
U&W.GV	{^9֩Œ]YM.{ֱ`GgFz~y35BAEM4pgEFA¼nzbx/[zSWcfvvjszT(&[Nb_7؏#ovn|FÓXڼp[Nس[F00vg:2݂gn}p|o<?{WU.jd*:BץLLzy]HoYvfV{ie$IOJpK>	/$x@J!	|D|TIK<*1	`LOI0.%8!%3|V'ЕRkfeo H?>8QUU\bagnhw~zt_?-k]EM1
C:MjNO8MHl=>l#6DI
Z4v&Rm
ڠ*X5cEgͮb3}ڊOۜJ%o8fe]&1FRcܸZn6Ej[ZHK-f7nO8[hfw7 ;wf
G S!` !B0]&	n"[	n#;	"8I9|_"2_!*N= hh"i
A3A<=qWF	2[5$@*VfA:I3.Cp5sʐ`4;,2Yoe6Woy2\TYeglsj	Vԗ_`)rs	jV"&h h$h"XCLBpZu~ew!XHp"g,q³	?`;MNxul%I<Bp	A~v:	/ω_ 	[v~Zks? A	e۝2zr+lC"-6B]+N߰
.rԙ<Q{r:<xC `!ҁψϐxX1* 	ǀT{tyc%pΜg{'	vrRM'uJ(`4el\Nf+|sCz}P"<W>	n1g;(mӖ`m?fvxacz#FRXq3s=9BS?ގ8nƪD.7)ᳩVYx=Z~1	/g`ٽIC8T?8#s`lx~&\/0\Decx#}K=_b.>Ld~ZZ<E@\hr`Bg1?6عDl0 %gMz=	R92]aR*PS-4%9J>}EHs{+6lAά~j*܅]Qpt(W]Gr/8\GΣl%R Z<8lκY٘ugg/8{\Y*`U5Bt״Ʈ
ɽQ_1	I}ok>7R`9.	7g86٭HEG5<i55rj}d]⨒):E}r5MenQT;<'NO`h)MU8(TuGnr1,쁓XT?*QJ3zy`N&$xZc	  VN"X=SY1/$16YS,clܕB@92p"2~"_oĳ0SG]g1f
8Jajtnb݆lcMӫ
1[%yn>_Zxr^sʁGßp/x K<wԔor"%)`<)ttFZ%A@$-z
,4fLp߈Us]uO}
\"kEUc`_sflI0	?8z~ҝksukrҡtUN:1v	p	\,INI6#Y1$1a1ZV8lZ!|eĊA5"ʕEqޚ(LriT6)M4PF4R2RhrFvtcq3ۛH7++B`ӡBh*L׮34䍴A\&0)"
ͤЯPKyJ<  "  PK
    )D:U               org/bouncycastle/operator/PK  C:U            ,   org/bouncycastle/operator/AADProcessor.class%1@D#XXz6vVKe!c,<2N3Wy/ 	a\wE$M0O鞰4Y!:羱k:y#`8{+
S*N?I:
!!zPK8      PK  C:U            3   org/bouncycastle/operator/AlgorithmNameFinder.class;o>.Fǜ̒\TPFb1PVbY~Nb^RVjr	#n~Q~R~i^rerbqIN~~AjQbI~>f̼"vfvF}
}y~=SRJ22S5HpipIQf^5#.#*L
,o#+0= #I PK   [  PK  C:U            6   org/bouncycastle/operator/AsymmetricKeyUnwrapper.classPMK@MӦM
{$~D'Qdt[ݰY??%nDPP}ff}{y5VO:B
sDgy0WɌ`q3&4RpM
9=yjFJgteZ29鸪-S^_[ʲISJnѻ>Qi'ZOò.Vc5e m;~eVihgǢ<cl>!|@S6f`Xl'? PK۽$    PK  C:U            4   org/bouncycastle/operator/AsymmetricKeyWrapper.classPMK@}MFMz<$uE(D[=o5$ٰY+EGzP̛a>>`
	s>%yH|F&B(tz
E	E	;R%l*y3d)RqU*/D}xY6;7,d:W.{8?<&`YO8B߃ꡇU]39a &Fg^o6bu
MmtWOhl$_PK:Q    PK  C:U            6   org/bouncycastle/operator/BufferingContentSigner.classR]KA=I65ƏjƯn>HK$>Biu$:+,(JȊ@^s=s&e1YCPl@@
?!ìշ/C.N		"uCr-Trҹw]/݃sV-mۻR]KzJNPp+H+KAYT737P?&U?3?Y6V2ߢ2
>7[m7hGkdztdĤ1MLHbJ:̘`67סG<JxÇ&PN"hÐBY-Y3t[6U
BSNKN/7`aП")גDVT>V({,>b9t3s2ĩ?S[>?PKt8    PK  C:U            -   org/bouncycastle/operator/ContentSigner.classmjAg.FA7VA2VBTeΉCdc/3! ia|̿ىlK$ZqY㴔	kUhgb\o>ˏIo9hAͼ(9x$v{7ׄ޹:cOI>!E5g f
[&
]PKW     PK  C:U            /   org/bouncycastle/operator/ContentVerifier.classmA맠`A(DJ"Bk5#j
Į($Ks@UB{KB#T<Cc#9Fj)>&<gP˳ԡ{036kJ9-sV.
.f˛;CB7E?byqϻCPB <t@zPK;~s     PK  C:U            7   org/bouncycastle/operator/ContentVerifierProvider.classuOJAqcV~4 9E0 ēa2n&3g<~D>t]Tu+dEQzMIT(`IT=;+X[Y_tNVk=
޾YSC:,M
tO,w"V8߮$Ң9vsts
n8Xɩ.Ϯ	*<@DGMإ˸.lK{1cWa{h+(t s9ez7PK52Q     PK  C:U            :   org/bouncycastle/operator/DefaultAlgorithmNameFinder.class`[ǿS89	ٲb$&^D&!,,)bY2zr{tЖB-Mw{@w)i|OVCO{O=CDIYI[%mt%!LIgI:[9Εt%] BIIX%.t%]!JIWIZ5t% FI7IY-nt%!NIwI[ҽt$=(IO!I	I)IKHG$=*1IKKzBғ i$=-鋒$I_HIoHzN7%}Kҷ%=/;^$,IJzM뒾+{/~(G~,'ސ$-IJI_HzOДy	cd:[!jy0=46C!n+;CJucږ~\u~0_GwpM80ؼgֲY[sh6f΍eVnYmőTfƤ=̚)VR3ׅ=`iYPqm|`d)v#pc˚'2#w
6W{]{U_dYY(C8@Swgv¬ޢX߮UvuΤ{:_	{̈́ڊ!P~=P:˰?ibإPsbFLNiX.M/?H/˪KH8r3񁎡u1csMU܈N,Rxm-J0gi \uS4-
8ȉL-<\b1L'p)0B<knV,jŲ+E>RP,KRcE7sw
ϫl	犁LBkKG&įHFWw"$Ks->芘s)Ȅ6ey
L1RLݑ	myN!38	m\yL,O{<"ڔw=ò<&2;"&ϴP"@z#RCl27<jmQ{Eu<',gLY#y"e̲smAˤsV2mIlE,m,JFISљ[`;mak-uvT-Π㶵^7svZm-ZlRsxBx<g
bc)}Qv3*Q'1pyЌ]t6$'h?3Hyce13B]"R*h7mnB꼙S9}^k4A{PuuF7skWh{3B)꼷쳳&xaqgf$Q#Q|{$c~`l~XS_s	QsGݿ<jc[	p}x}aw^V_W^Un6`nVy{ww>۬8wh7JZX`,tB7:䏵gZBO˜6W;[cV^+U*U1Y۲]h[xcT#3jdTىDyB/|ٙmo[9LP]Kvr(	gF5Es8ΆlSVz7)˹B\6	)j[Il3;߬x Gv9גLG4-*\36ʩ߲`ٙcW\$7&q/x0owN;"]:^mf,L?h	+wazCqc+tha$i[5]ߤ&혿Gc]I;LJ9c`:d[}]'?)<5H.+*wfl;gV6_[*On%R\v\ƀ.
.\ֶvhĽ\{gY+]o+8ҷ}gb5U6el7Xb4nθB[윕z#zGr|cGuȹ:g!WQ8jO55Z?'({l8q;:leK(*:oeёZ{1^+"^1{	^qW'{E+N
+"qHxFaHz&/ݮ
{'
e׻Gn>6#A.韷+1C*rbHQ%v(Ŏi,_2:
=ejqc
k7o g/߀ _C x)T`Px	j`:P vj:`60	
 
"X& -@+,2`9p88
@J` @:`=p@N
q`3
lNN ėl
ST#fkıĭ5bFԋ;jDJo4 9>q"%W|B<H
|'. >|$)ag|/T|xxxxy]π ~	
O\& l|CG o ooo  	3=}߀ 	_Cx
[w>qx&𢆧
+ŽK4LꀙY>qL=@
0'_|{^S-Q-Y-]-;]'hj(O跘8gF9`
z	q	퓈tY$<kMi(?!gG!~sힻ=p~ mS\ͽzVݳ9.zzxԬ!g_|HǝOxz$?P<&\}z{& qIUU8gÓ?T{BS3b@dPldX̯a֨`v:`fMj)fu
1kQ(wA*`]V˙eT1uqu2SjfYVrj64aP1;G2;W1;OcvWU\#\.Q]Nbv1ۤ0Q}R*lTgvZ*ժ5ٵu*z/ԑnTaf7ݬ,f̆T/aYRcv^V0NfxfǪS
.f1,aP2S2;[85ى5:%1;YWf'*fQUl$%Yf5'j/fj	:YXlڝJ5*5YڃajYJ0[62[-S#Uj*HaveBƘf0[vc֭j:fj&>zfǨY:UcaKPKYYS
  %  PK  C:U            F   org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.classy`S{PDB"DJ[@K%UҤ&)s]wŋR*OPq|}oi:&ؾ9˜sfܙצǉ:ѩP"Tx&ЩDR:MԩLr&tNu@4Ut:MשR:UTSN4QNFO`|Ɏ>sqbYi)ΒRxg.R'R[j몝e,kjK;JR}kVxPCtu`;t"ad%*7*:03vjE|+`С#4VcO	`~*6B㪛Ȩxe(Pcd	iļ؈pk((T{yA_/BcD:kJǅ>gA0dB.WpkU
*R4bҊF~]K/͔4EJ ]2:K1BT3jDtxTȜ37VO?%7KKnJJ9wI0CNgdO9jsq'$pUm8~F}GyBK 7_,CSvpsKd
5>gyyiB(+/wU\|#2EJwMU57qghck"<)sc&`/47  Mձ/ž6euitFh@L!!KeԓH7!,JKSw"I:N8;'7TO9M(,I.aJ2SIru5qsx$ja[2u0gI*H<EQK=='pԆB'T
6^K<ixS="0?N$Ny T`ȁS'f/kdLnQș4
ϲ̞X82
8GZU^O,;<pU_ZgGe1S\ޙk׋;8}1*=?'dq3\m9\e (8D!~6먩4,|~>WiH4;fu?C8;k]ݟE$1vAsr4̩ʴY6b^l^k]̝evFb}h1h+_Fk,
GSBY
OiG=HQ_i
S;X76%
[; J=ijLM9-XD-fm/f_x巖#7$iL6bd>:R IUR>)_~Y,|E2Xu^f70ēQsf(GpH)pw>_0L00ihƐ!!5Ȥiݛ_/hFjtFktFwhtFk4K5G{5O5z@5ZCahFmmsp
vdqO^>cPλÁ)a?pnRy<zf(QSң0pwC`<?e"FάvI/Y]U{T{1^YuG8g	gKudrQ-}o`.`:4 ,  #c 7^`)@ -q@qX V ' g ggg   W WWW 777 M@;(8xxx
xxxx< 
	m~Q~6IXFQF>F-[j``0h .,@GL,؀@??l$0
p-	e
Чl8>c/,
P @PL &`*p0
8T3*B_`o`.P,ЗlP9@PB_`&0B߰F0p`pB2;0( { c-7r0f+mcˬ.>Yi;tYJ_J;X -@8Xчcq`%ܪt=e{
}G9dǿs8D;[y;1+pwQ!adņO("*caV֐Mm:}ZTC8-k.5dkWW.oW[Ͼ+6
7ivzaƾIr\wn`߮g;5TM`b4W<ӡ0b>C^ ^_4~=im{h?:LYçB}iB6f>qɈ;ꊷ0/SߕY'1X#RTҊi;b}
Ӿ4IƵQ]4W:W:[O1Q+lw/ױRD)_=n"OS{H_K-l$Ɵ$n6Is{VWx`/HKjUU"?RX-5٪x\5yjaI`H[/M2VIZjUתU]Vu:Vumձ3z@у֪3C{:v:.u{ԱcSǾkw$=ua76I`WH╪ޔ-I<U{tgQI<]]3TUUU<IOVCCFv$^bvIT{j\&Vi&}=ۤ	{_i%KG>@`W2T2Q2U2dd(v]>Ht	ҞKK&aGYފI-a%m=Gk	{tt&콥3aϓ΄]v®K?aH{?a!=͹؏|EsDc:`6f<l6zi3vyl0CiJoͳrټ`6VنZPKS  S!  PK  C:U            C   org/bouncycastle/operator/DefaultMacAlgorithmIdentifierFinder.classiS@K%Hrr#Ri!	%ڦJ"3PI4
9w3響?BG FM<y\
<Nu𓲮5MP;Yhj>&oN#BN嫃ceR"{ذW.'o`X2$[A2EFMޓ5>X"{iv
;
Uf-̩YQuȈ;LgnQtq^o',A}vMԴ31%Of2Y0/tUFX]Nt{򖘌N9;>5Sjdw弸Mqf~"*̬,3'Ψ[RA9G*?rzفlGiFNYJ&JyCC'.=z9q9ss0H1^v=qaQS܋N=E2GG(~*':+و2""H_3|g
TM]'v71v@@7"T-&Ln3.{L3yC&7p	09f>>8VxE&KL^0Yc~L"$$$$dŏi<`k2K&xWu:7}5;M	_Eq|GkMv}nb܊*к8Yߘj{?ND0~hL9>6"U {%sU7;|ϸy÷ݼʚqFu29P}?PK    PK  C:U            <   org/bouncycastle/operator/DefaultSecretKeySizeProvider.classSV?AlGHMS[jja8M\4PŕeaBrmBiL^dif:yCtz0O}ѹW~Љ_| 6J	G=H$Ñ~4,9 <FH")?L+I 
Ɂd,통9aIƸ3=' A}Q1Nrv9tM紩z#Vb$ڳT2N{#o^
j^o"W+ި*ŕUYborS5U)Jrb4sİH*+JMMPijZFK"eVK=ZRUҕV,[;Qa9YboiFWeSrrr^иnM*.Q8=L_ɹq]diZtL]VVD+#n9ƔA޷X+,;_;:Vy/cuQT_2<RVװ81vXGSo*?c	e8+_?]ezAu<O%Qtp7d6Yp7Gy3kpx+ne١Y:r4KlK69;ffLh<)hGD{EE":DDDDEDtj
ylZ&TU%

U?v9XVa>XWrF[˱Fr]+^N	:T=ZWu	>IcXB@h$4	-	7vn!n%$FEpN]	{	=#vFBj%aF$Hx@B=K؄1	^q'H	?0£i!h,A'LriG0G6!}xȏ#$
)L Q
`?88H8Np&'
`pO!agOL,{ctRٺX-5["f;vlbQ
캱aՠoXZo.g\9W3c e[l~g\5?k/*>rl>l\J_Wo/8F_
]E|rp	_7e|?b<>nµ.Pe7<U{s$2~ӿq9N*ӿ_osw8{N.y2^݇ PK("슸    PK  C:U            I   org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.classw|%]2aoΤ!	8.8&qqv
t|{*m{[;[Ҧ~>hN'v}BJۇ):):S)))K))+))((([))bRtEwRtE)BV{(((z(zG(z(z'(z(zg(z(z(z(zW(z(z7(z(zw(z(z((O)mmsKk[{~G~g~7~/hE;)Fc	i8bŔ3)΢8PKq>R<"Q\LpG`L]QZnCCp0 mnli1ʨs7ۖW4V`4XҚzh6uUYVSQv}us0T_WU5WPTۺJ4FkiѶ~oEYyz?'TK	^OЁ<mH467UTY1^mYWy)4US ztc46&R'oǮNɶ6CjUe)7?fMb;~bF!7Ydu7yjj54oLBuT969-&w-_խƺ"í.038-
5RmUBJUI\o,9_!𪂿vem̄OW	eFZg
IqD%҉luЉBxH%dwwJٲv%u!Ó!(ZC*{Ыaw*TA7)d2T!LS:IkV#٣vfr7RgHFllϦfDX!07u/B]}KPL&<7e֣$xX^ y>s^ J&_ y,RrOa~x?KedӶL,2i9\~9B'vyI<Be(Z&`{(5WyOQ\dXͯX>9|5xjJ@0zVlu&ꔊ}T<ٗx$SpZ:lVWia\xvm4V&	|[l-
+xWׇ#cc/
o	cM`T{e-HOt:]ɶ'24uDxgW#/̄<W| _e2ڃ|v.+ӥL>Bx}h61*1@9\y7pu*zţYa7yLMY\z)N}YzVW
UDAc9N}}->u_(׼ęJI[VG Eė`G ΟoG$o5/p/L8&m2`-=R`1	vo}yЯ4b:T^Riぶ
n/o-'=իݭ^}Sǂ{KG# PyC]1o/ɷ&tƮXgBuōׂwJ,TTSRMqe6 >|tրކ:V4+P_KoIx<)%lh2MP&Ln6#d%^0Yk_߇Cz)K'KMI
sa|mlP^|\!_PM+oArERģ0=P{ w =\Ny`>=Gz\j?pΙatI҃Uj=XmH>!pX<pbrWֆ2,w81O?ǘCw; $Oom	0a_w-G1XеxWU)00hU[-[S=Kg:\Km+Ӄ1.\n]/&m	np5W

G]-kg?U/b|'|G'G#XnEVa|@<g[mӱl&q|߭~V9slMIt	-uzBqO^c~F_@&op7I<?{w-ə.26Nnq|[){hw߃3o4xn~8ͥ3tɄ
6ngQbSTG1F!l6"__{#G"52xJFmˏuUTla`YbblByzbРPОyzkŻ>`dx$q
ȌGVs1T;qD:qkW%ø*2랮xÚc\"TȮ_~<kuuwRtERtEStE'RtESt3ES+NPGHG9|8P>́w>сOr>ՁOs>Ӂr>ׁsЁ/rԁ/3נ~
?1QX`=XΛߕJ6Xϒt*/NuYMt@恘>CnT_}繧S;^g;(Fm yO~ )SWf1D#iYtN8pl9s9$d@	`*``:`0J@0`6``.``>`WB"@
`1`	`)`

 h4- 

`O^ }>Z :  `?z@"n( z  6 66 	8
p4+ W\
p= 7n

p;zw 
p/> <
x8	 O<x<8е$=GGxP N@F'Y!ǒl
HN#YZ2|yN
ډ%c    668pTig 8p\y .\p	ReW \ߑRLP(T *Uj',,	ˉ   5N#qv,4 'RwI8/J7R
  + + k { x| ? t :A~N;u?@3`o@=  8px	/tM8px'000$
 "0@1`8``$``4`Lܔ?!d-o6I;̀3xY ܚ?'7 nܑ (6!
hA	 !HטzH=======K0
k{q5+inGHof4miglV q4f<o]Z.a澟iKj{t>;֔nZEL[Xp~Y#@N79ǡ9uф(bη.ȉԇ\3
d>LOj͈7k-`dCǸ69t(>hm俤ooj&}EI߮L߫-eڼ^izL+Ֆ1U/{ZM6WӞ?7mhhB@QEL'PEMb&(j&
5MQM\Q6Y3mP>E(j/MjOEM%tEU(j*jWE*ʭfEdZP#U̴J)j4Ӫ|)E5<j!0
iD(43-ML$"iF4P|AgiB51-KJ:nJ8)iblژ6G(/
5oST#Ee1mPLs	Ć(t%FC9Fj2#7jeGf'vgqyB'pFj*#UB`Ce31P5|,RF>OJcg1P1M.z%UbAF>/bW60PՌ<'T
1P1F^jF^7
3P=#,uJ{]J{qJ{J{6\M!ԁ<+A</(!,SCyUy=񇌼)ɏy[3$?Pˌl䫌-G0U1'7Wo1$d~Iȃ|%#I=FIȅ1]${dϑ칒=O
ߎCwJHd$;MIvd;$J/Hd$K'd+H}).)	~\g$)~Z7Kɾ[쭒'J}d/JÒd?"Id"ٯId#Jd,ٯJd-Hd?&ٿJod"${d._$E9iOI=YHvdWIvd;%;C3%;˰0u&N-آ[6oU>=w%<7BbFXK87AxUin%\`A|mqZ"KB0v-3!jSzg&8 ]HC@!J}`p⷇lI`INc>&!JYC)KveRV|!<I	̗ lZ֡jYZ6C-R[HIahIXI0Ic$V.jUHS-#_KEj36C<_*%?ô|J}(OOW5#Kr
%]s5E2jPKb龶  ;  PK  C:U            :   org/bouncycastle/operator/DefaultSignatureNameFinder.class|SNBsf9		l˒e[mad)IHό&!L"54]iw6Mw4q8!ݽ>|e }8tssX!T+9pǡi89r8jk8導p9!\:"6pⰑab99$8$9!!0aq|pE.p	K9\rWpUfP8g5o_kkic0)y}-絷}v;83↹ALCw{=>W|Om_\ح9$ElhaU<3pv˼N)s1v{\{>曖kSwOgMau]Huv~`?dP\SZݕ<.IUU.XMn볂Q4AmޕzB^g"&睂iq뭆D({3YNDqmf%2AfL,$l$^橷E?!*k7[mj$ν4v+21ݶe(y;£
tfDg_7yѻ|B`o9^4>z'x/q87u#^ݎ5&bEfHZ_cWfVF]ވBr4L^2B\V:QdɌ%&%-6O*6C2M)J2IO(	)7SC
9Gyr"OP=oDWEM.dgl(aBUQfhuò4Qh36xQˣq%)LeFSis}g-5봆3ҁYQOƈX4"!$}ƥ_iشJvH):}o;ǎΐ|;QYĕUصM+Omzl(m8֞UæD=ͭCέa\[W-ۦL[i\m=M^Q\NFUgrllaPj O2$O2)Rۤo1=>^~S4lXA3eć[KGX$=#sӍՓyOꪄ-?.rOzڌEz:qw<x8-e-0McAObZק
`8_p̀H.O%>[T]6ZDqDo7k?Hcqc'nMw_ 88gI[ݫk>Grs8_eeb,/I>8HSu)=ohh,jFp'5O[;ܹ:^2:k;l7'єn&R2̈W>;AA,9*#X)#zmӯL[TZϥ#ʘr}LUyȓ?ΦZ56dЛe$eC{_i7V|I/k_k5[|[h]
5?GXhS
~7IOAI\3:3˄g*FLn).朁?WK%1i8@ZCa<pKiî?eZjʽYv[j18-l˥(>4vG\beɭ<K18f/I3wuૄYn Hp3­ Ip7½ <IMCxYs	{	/^$|i(a?  %!g%L	_ +¯	!;	 :OU+`eU.Ū]g
VǙ悝A8<\.x ulau.xM$;olG$ENAI8pX܄	OHV%|7GhrX;a˦N",!L8)S.k&tVz>-%t9}MVG8paaD7X޲$턷INNx#A8		k!';kF8p.JDϠ7 d8>
8^ N~֠ۋj"*rg 3=Ts9 {<gbQӬ*xUn;o(7>k?Ϧx
{_4>7ڳ];GٓduCG>ƞ5
5
ؐ3[s=3K졽6]'#j,$(Jΰ+GܥPֆV)؍#0AL@jl ǾgCe+n6s<y{j˳]yTUy̵VIFZQDMNw։Qqq8ZQ7YQ)&@Q1PQbNE%CQ7MQhPTDTTT
«DE
FEmse&Em-Z/SG)*jD*jhWvqCWԝbVI**W1*u{!<OWT\t(*!)ꚂtU銺PUxuu8RQcup+JSԥb.su+DnMLPBXʪ1PKCޕd
  y  PK  C:U            ?   org/bouncycastle/operator/DigestAlgorithmIdentifierFinder.class@RvՐhD",%c^x(wsﻧ_(='S,ZIBc%F'.̬XWR䮗Ic[sZ(aWJ<B1za*-sfn+d_a(۷?qB(m<@Y.PKjQR     PK  C:U            0   org/bouncycastle/operator/DigestCalculator.classm1n@E&IU"JHDjqeEq\-P54Hd?7zτ8.	/Zf_`6 >V%Za_T;B{+bڪ<<b"eV	W^JW>$h$x$t"2N'a@wBY3*O		b@%#PPK"     PK  C:U            8   org/bouncycastle/operator/DigestCalculatorProvider.classuNA1XV\`!zSk>GDlIN$3s 
DQ`hf"V6#oʛy0݉V0l
aE3V0$vv~t*@R$EaZvuQp8.vdkcƷ52TQA1,V3#+ǛoPKKƸ   %  PK  C:U            *   org/bouncycastle/operator/GenericKey.classKK1ֱJp1
S.D|!bApU::S(_)X Zr896VQzEHy'	Euۻ6wqA\	y%\}uǤ\=0|׾hu#	pVp;eA&ar9BFJ"DPhM%ԛSoڏҫjXRٜhzc'360yQ"(RL#!v9!}aATZ ϨN#ZXhU=GU9Ui|cǔ:Fvj鶬Tr!r[PKsM    PK  C:U            2   org/bouncycastle/operator/InputAEADDecryptor.class;o>NFĲDļt}FtҼ⒜TԢĒ"}GG"F
=
JK]]\R*J@5(+eg`dg`bg`fg`acd`g`e`b``c  PKߊ      PK  C:U            .   org/bouncycastle/operator/InputDecryptor.classm
@ Dg.ѩo0)"ulEwe]#CGE)ȹÛń`{mE(+RiSrYfL%[_ƺR欴Ymh7=
nꢱmX[iϑ`GZjs(X.Z9
Cv0n/PK1      PK  C:U            6   org/bouncycastle/operator/InputDecryptorProvider.classuNKA}7X9&XȬشVFOF	Wp -J*^%| FhTT]̔MzDVHXyri󳟓[̘7.PPPvWy'r%?{qڿ̢!@!XX-xPKEZ   !  PK  C:U            -   org/bouncycastle/operator/InputExpander.classm=0 _]W0988xB%PF`27/{/ ;L	c&N-c.MrM&5/\,'hƤ0!X*-h*="VSUp͌ҴCOud̵q?rC@{~x+'̉?<,f	l&mPK9p      PK  C:U            5   org/bouncycastle/operator/InputExpanderProvider.classm1@EgZ&Z*X%K,<2B?/y
 [<¢䎩b霕*9єϜ_)rN(u}ͶPrיc \ɍP[Pi'i77$YMWI0`PK}0      PK  C:U            ,   org/bouncycastle/operator/KeyUnwrapper.class;o>FԼԢĒмĂJFǜ̒\ϔԼ̴"FĲDļt}FtҼ⒜TE@`jVeV$d303322ih`L,3ԯ05LkF(
RD;a@wP0e&=4b6Fv6`bad`bd` @5@
e PK   t  PK  C:U            *   org/bouncycastle/operator/KeyWrapper.classuONANNPC	!FJe%eo5j> E܋d277f^~2y{0δ&K{F~JI|akpV,B奠"jFfw8"IqExhw^/{??B%6+5*fu'ٶRPV%!TP⌘xMPKp   @  PK  C:U            <   org/bouncycastle/operator/MacAlgorithmIdentifierFinder.classm1
0ڮC(XA:	"O7McJM$Ws J;=`UƖa
[-vEd ̝עpg+o(Nsp^lY.	T6(H'%Vk7VgN5,1	D袈@}PKq      PK  C:U            -   org/bouncycastle/operator/MacCalculator.classmON1㎧Bʀ@!@)(6f99v!k| B"̬fg4;<^ez$AݳD(p+rϖɨY	3O*0ƌc\8!Wm뻭BY"ԃ>E7|H8ҿ4cvvtnΦzµI濆%a(+ʄPNPK(8   :  PK  C:U            5   org/bouncycastle/operator/MacCalculatorProvider.classm10H -π@BTH .1.N_<
AH}/ X@LCQiCP4AhjN5[G	-d0 A8Mv=k?r3Al\ў|_#!SQWPK0\@      PK  C:U            0   org/bouncycastle/operator/MacCaptureStream.classmQnAݲ[m)j),jjjMHD{ðd|6l|_ 6F}ߜΙo]-{Πgs;dܠ0(=5j1+0$A;=w-&ܺ\&wfvk|7*]jEQgR:oTb%<*iKlQl?:ep;.oM/zp7E;F
mQ;O}Ԅg`y
06[a͎G~!ow=WƔlb)DL0k"f"920%"R&ͼ4c1(5B]48Ym^{'z>^C\LQ\ʀ<=̑MBRgdmE;Œm}t9VK<?h	_FfV 5[钊+#8?A^	 ?דzf켕K=<;dMh$IMjۣ,EDGg:@IfͽݖrGH*5yhτ:œ$$`yF>"[G@PKN$C    PK  C:U            9   org/bouncycastle/operator/OperatorCreationException.class;o>^F6̼;FtҼ⒜TԢĒ"}(ù(5$3?ϵ"9 `d&AT'+,Q?'1/]?(3/Z3A8HHFQ~ybRN*P1 Dp228秤2(2  T T<@0320kilgVRU ٴ3pA PK,=_T   ,  PK  C:U            1   org/bouncycastle/operator/OperatorException.classu;O@gqlatt
]MD)EP9#.\x+@H)(0"f{ؼ8Et0"4_FJQI]\-]i4ahl!f\\Y*+bZ:F#FH8N.*5b'9[b	AO#؊;h& Za+cv"b)VkBg_}vޝl'^
2y;Ю󞧁0{FPKG   |  PK  C:U            7   org/bouncycastle/operator/OperatorStreamException.classu?KA$9HjXv	6BR(7raϷJ@	XPp0ͼ]B8FsBRyt/V\N/3к\d/\B	PNzt'SᗉPʃ4sI5yςYmQ2#?DMf1* 47P[	XUXZ\z[t(*PD }E{]
PKd   b  PK  C:U            3   org/bouncycastle/operator/OutputAEADEncryptor.class1
0?U< Y@
䅗Ws JDo^L.ED<JwY`(vBlmnL>LpY]TĶi9j(Jc4vGPKU?~      PK  C:U            0   org/bouncycastle/operator/OutputCompressor.classm1@DgQA+<Xj0Tʄ,"v1z5ࡌN97`8mR:TSiTִ'#E0Y\Q&cbhH*Ƣ\r]J#Ha(*mttPRs~Yaoy'_6zhc5JB^PKe      PK  C:U            /   org/bouncycastle/operator/OutputEncryptor.classmANAE	 .tf6XV.1MSMISc `bLSx0
`y*^6ľY$nce%pZj޲BC־v1z/%+_qΝ	MׄQ/=T0Y[3;Dx:L_Y޾N)%z@Bl PKde@   :  PK  C:U            8   org/bouncycastle/operator/PBEMacCalculatorProvider.classujAk۸<&? ̲@D!vl7#2;j y(qDICW/RvAqC{l!
h:_ȥYuPTҕ)8/yke#^O-ڙXx+	Z		:߃ϻ<UYoOc95:l?Vl^klx"oxڴ	$qPKO   $  PK  C:U            2   org/bouncycastle/operator/RawContentVerifier.class;o>vFvhh'(FĲDļt}FtҼ⒜TԢĒ"rԼԢ̴"F2
g`e FFF PKbu   {   PK  C:U            8   org/bouncycastle/operator/RuntimeOperatorException.classuJ@5MҟZA
5QNT!ęNԾEpPeLE]\|g}Bp'?\o{+EZN>frfфCST:[dbn,5
>RFsMiĴ#K[*	a0i$kkxaV!6lcs-N?B0c(_dgN8xw\,]A5wO^}r1 PK_2     PK  C:U            5   org/bouncycastle/operator/SecretKeySizeProvider.classuA
@7f:F&ʥxQsb$;ZС,"zw_ &2$Ց:C?($_%k#yER'9q} #6<|Jd<8ZO7XHQ>>S**2a0'NьFKupq<՝fz PKi&      PK  C:U            B   org/bouncycastle/operator/SignatureAlgorithmIdentifierFinder.classm1
0ڬC( uD
=Aڦ1&7Py BTYWƵ((g!ukFsŭPmhg*x5N1m8vVVi	I֙dȪusy]VĄ"QD PK?՘      PK  C:U            5   org/bouncycastle/operator/SymmetricKeyUnwrapper.classJ@MƦQSHS.Dĕ(cLt[)('"(\=ww6V	(ZRIs@<+4W˄9eN
g9W;MDjبVi+BsSjv"utZyUh$<4=<x/&?G؊A4/4	cw
%m9u֢X׳cOM6>>vL*Ym&?PK    PK  C:U            3   org/bouncycastle/operator/SymmetricKeyWrapper.classPJ@}M
lzEOAm-IlW1 ?J܈Ѓzͼ7`F	#YJsL<SZlLe4F
M'MDjJglʴJ䂩(EutZ;]UE!\#/~9aǑA/nڍ 
t86|X*=UcnM;pm.Κe=[;dhb3yF=PK||i    PK
    )D:U               org/bouncycastle/operator/bc/PK  C:U            *   org/bouncycastle/operator/bc/AESUtil.classR]oA=ShV@@KUZub
	jB5i| 2NnvZ| M8K͞ιw3Ώ_tQ|I5L-GG
?彺clKZ\*JAg0T3QY|p	 B$acƱ[{]=)\ ==kpS\ߢmw1{&)25ǒFG[Ŏ$]o47._\X
r?*0']1u{FsԮ}&]My!ጆ2~*:)}Xp>aEkDCVc󰚀	BDSѥqLJWC#YPБ
3n	M5mQ%	PCSQFD>OA|zӱ|C(*}n*ϫ-ŒnfI 9G&0fH2y/PK{M    PK  C:U            =   org/bouncycastle/operator/bc/BcAESSymmetricKeyUnwrapper.classJ1Oک\.ER"Uf!J-dILDg#( >e;s!s?AO攠6HH~S_v8$SzHQ	9e:\-ж ǒ`{W1ׁQF33fNEh6]dgXsCÜYJ:j׮s9vGeOGUiaFk x2a'sol`z
r 躥2JX.c+e,JP8W-8CVm`Pmaj^0~ PKs/  y  PK  C:U            ;   org/bouncycastle/operator/bc/BcAESSymmetricKeyWrapper.classJ1OڱSjmٹ\T]"TBt!W2ILg#( >wp_ NPll愠qu"$yWN< Uz@I9e:O\,Nwô;[cJҴ|mDLО2$Ffq?	&9%>Aq9-Q0ɨu^--q:}nݩ<&F<k xagDSVP EW-(`P#Tı	'!PUj;7||7D9PK+  u  PK  C:U            ;   org/bouncycastle/operator/bc/BcAsymmetricKeyUnwrapper.classUmWE~l;lV,Ji^Y(bmR$
5 ӳlư쮻CJ~p*|&ˑ~3syyݙGf1ɇB.0\㸎0YY/*ØKh8q6*G{GB82Ԅ+b.kB.k^e*\|稰:m0jASY1YMˬ[nͬPnpԫ
򂚹v˶BYBeuvmgOز;LoR23ݟr8?s~`-_zꞽ_t]/MTOpPmKs^RZє^<C:v:c>c;*&uIcgS;PSJSqa{MCA)s\xu78p1UQ2?zjUw]0G嗛>Wi8i|r:'2vTwRuQ̟]PV'BðlW^aO~:N˳xUu{=#Y2%wn^a^$>@ Ɛ4a;wF2ddZeYicnq|<c(W|cwt|I|:>1N5VfW7Aq|"-{7T	L;Gʟf1k1lj1S#2agC1O
#.RmWXW,>A%l&y_kii6q}3=aiN;17p
k<Lc_(3(rX$)(uF@Q
	Z4OiR\oPKj    PK  C:U            9   org/bouncycastle/operator/bc/BcAsymmetricKeyWrapper.classUYSP@	bHIŅ":Y2(I&,W:# 2o>t<7d|gι ghP_Iӽ+)	&,$38{<	yf3Ύvr/XQg|w<nH|z1[,ndLiEyo;V^~nS*aG
/
 (0մebrl	#a WX+9v\Aʃ*3̗&U*kgM=eVUEyͭc2Ȗnf9j$ex;λs6NQ1ӱ9׏F&4+hQpAA5c}aE处љTⷤe!@olІ3I`8ַFĶן 
ne|.o2pZ0켞!j|ªlz,ERT02*2^j^;3="LjUz*.KETцpK*jѭwTԣG,B5
#c8N܋pQBx1	GxS.x~5R\QD$HNѪkilv1JJm@x/)ԡ6YqNh{x<}r~1Gr.	O> ZEڨ 2ޏˇ\j>~%x'FiߌVUpuY:eY0*PK  4  PK  C:U            ;   org/bouncycastle/operator/bc/BcContentSignerBuilder$1.classTkOA=C-"T)ܖ(DFibN&I?x[I83;	`A͑	E۱3[p,#+煳В*YbyiNMIN'e!޴Kٴ2[?£X<-:hQܔ9,D|Y͍Ԯ$C߉@T8zRG]/m܂cXܗYaZA^fk=7t̤HVrN@CFu*e&35?{T8 Wկ-dƦSfJB'ǳa:M
kЩKCzBkQ])@ԇ\</ՏCZ^خ:ue<EJwlllpw	4hp-MFp2rA)VsTVp	b0쇫UCys|s?qaoMc4r㮁^3p#d@hƨVDj@4LaJ<Tq11Ĭۘ1G:XGq%f)M;m[vaq4V,/|Mɭ<ThR-j9n.)jVQZHEǏ08\1Bo+B!H)h;ՈkW#-PswU"tDHcp%<fE</"LCHcqV45Uy!<kZ._PK"]    PK  C:U            9   org/bouncycastle/operator/bc/BcContentSignerBuilder.classT[SPҖpVV@Ţ3Pxm,#[JM:IW而2&qOUa<9o&ǯ ㅀ`l䵀)4\Z̜qɤ|(Ⱥ4匢lJ/R1Ko:(dl[[FyI]ږ4.7N[,歪tqKLZŵԣcg%T4[+;2wej4`
5ײ%?pemtR]'.N	?7ֵjɝ=V07͎T"$%tH%``A[SF$O13nO$'Ukh-c`6AӐ"'hi?ҌQ`{~3}ޠVsr'x\3zȟvϛvjem/Y>F2ꔎ!XӉ]JuPF7nȐ0  nq #[<͐Vs7J1A/amCtf۹~9t+gM")ihٞs5݂VY%&R^E:R</y^,ɷ@;dj ~eJ|R'a##
xnRZpy*ie"O'#п}< >-!ƽ 5%;^d"OB (RT
vN~)QoPKgiG    PK  C:U            E   org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder$1.classUoSGm+ bV
I腢mA!bS:7ǒ=no6TS_ؙ:e}߯鳗(I47ɳ߳ߟ Τ&G~E{|>O\E"d1e8NXztk<ak=Hqw*&U.]c\͂P=3\"z-<VG$;][,f0pVr␼bkeB(TU"롷X(ÍcȦ	m	ŵTnAZPd#Ԛ~b3٦ܚ&c :[U<wםSO2Oaݯ{tͧFbԲC<2na#[p>dYa	I^'c7s>Rqu0YI'zklg<)b2}rDn-UnWaiFݥxo#MT[
RS$	v:7dgoS:P庎:Ddk}kﴯ	KrЇ܁/ mȴdE΁uЏYL`֐m\Mrݐo'a1ܶ1	ھܤmx%i,	]GoN1cAsݱk\sp)R##@#Ag/gIZpL%3Xo0%aSqFFcזlηd߱%1C3QxѨ4p%0ǃ\8Ս}e
r
,7IIB1| ̳h(Ĩ)<L㸅Ugo%PK2]a    PK  C:U            E   org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder$2.classTNA=CeR?b~HHc%۝ffJ;C	FW]wb̝=sg|VҿeD}
ߗd
C_eZSa%c+EmdT"Ҏ)Ђ^RoPrUZXyQEVFvKj
 VAYj}[FQKaO;{|w[eǬϻcX.fP9l5aa(R68p:9fxux]hQ3|4k5iua#'ԋ$Y2<;׆j~Xx|8^G3%?]naG򥰢t`2'܋mu_NOsD}f9z*H7즥;VK?6v!	#ЇuC/"nݔQt1qL3U޼	ʚUE/Q2jDP#i:xc⎂<z8
Fʄ^^RLh+0c67nD|pFFcO}spO}haI&`"	yf>#o;tOb@N-!6NPK9
a  ~  PK  C:U            O   org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder$SigVerifier.classSkP^5KE[uuB6/2l0P)OY<3&%9-@A(Kmʘ&|'wO_ E{%i
櫎azPR~Pwz7[R%6'j<Q}
Nm>}ypW\';+cs-`k:<R
B
D|wб;0ʑ;b}+}jY;Ⱦo\Nԧ䞌Ĉ8	a^CAaAȰq,'5{}gp2I0d`jiUzCIrjs<82Ƴp%*udu`0z>u=E"bX8EjoS>~·@`8ݔ~Lb.y.zfh=K:V{K[X~ /b"o}^
kmr:Pʋ*;xa/ah$VTN豰b^#nKMu5'PK̰  /  PK  C:U            C   org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder.classUNAQET(-7E($6Jv;%eٝ.>h$>l[DEDt;gf:~|
`O#[MmEj&H$ИYCrCM+m"MA}헟m)+=:VJ::p
S<
5{Ɓ[O<+,fhN7	i=l3optYe3 ']C8(1N0-TJslm]knɺtgb_,5aNUc2b"O	+.R"'9Q8
Zh
(hSpUAk
+Pɠ7	Q7gcJ$few[p*G9Po	wz62#bL:?,_V`4<{R?}9v\KSD3FG°W3f?fd2F֬l/{}7г?aKVZ
H*0S}QWtoϽ#.A^Lom
 Ai
]
uOC[p-n4ǔt}TяV`tGt/jq$2qwPn)R
"K!Twf
hf0?DuStB1G?8s
z'<	c
<9Cd=]䡆78RJAX^$;Dx:'PK    PK  C:U            <   org/bouncycastle/operator/bc/BcDSAContentSignerBuilder.classJ@ϴ}zU(. ATzW1LIF>PT|(q&X^dfr?^^` :<&h[dGOpWQI*|KϾ,2j%)hrs!Y3JihE)|zPduJ.Jz#ujӌd^5PYRꃩO3l0b n4Ъא=)-.t>ϸb^خRըcY
-Nv0jOpU6{lXBD=zЄ8:1`°6P+0B
- ЇrFjLU
&BILm+̨UL]G1`Ж`<UmM7PK5(    PK  C:U            F   org/bouncycastle/operator/bc/BcDSAContentVerifierProviderBuilder.classTkOA=kE(oDpx~ U"ϤmCmfWhI(ݡ%"塲ޝ;w?}09x*\R/0$<%\-^&shoʒ/C(K"ԋRP]~1;P4i"p[Zk $Xa\<DMg*BP熺"5*}Dw4ߺQ/TG1Q聢ϟjBW"_;RvRfNǮ(tTKrkRʈST<%<Ia[-Zp,\gᚅ-`Ƚ.	!R!UAS179;`suiC:9k/
8_F-](]"aiLz,<}Ty'85/*e G&w+xY$0 nq4<1$l!ccc4(
1Baꞌ8I8CCdkg0~AGL?`,>bxC>cx{$lb
~p0ܢhhٯ_PK S    PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$1.classJ1OZuj;ڎ֟p
UP@AQPݥ3idLJ&-[骠Pb:.9$ XgsRI{P

	K73cG1<*旝G
Ѧ61
GHmB<4<16קqSa##6D?+2"ðl0a΃a!ϳLkSEE|IݧL>
|В(FGG"(!`9ґk@DN/vu)E(iJ) E\+Nf7X~dU 7ƨ>gV>KXsjRz!s
_PK"8=Y  4  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$10.classQMK1}vz*
HEж`EAkdMJ6$(Qbv"=&df2}|2Prΐ/R7+{t&19LDaF	
.MĻ@$6&<%6ᧇGFa@a݀
~O!V61Q<x<zP`(+}+ce=T$joUw~i#m+$e$S~>yoI~_c,59yLPt>f<u:&*u"U!{Cz,T1H͹Rë/{F:tZ^HOu?ecXrQ&PKe,g  E  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$11.classQJ1=zw}U$`ѢNȚl*W$(~"}Ld|~} 
HzŐR7't):19LDaN<.M;@$6&<%6'ͣlð5=2j;?+ύ~!Vk5(F=x<{(2+}+c:MtHT?no8FVHʮ$S~>hIQ1<(aNSM:*j!RL#IB	61H͹rW̿ ,S/ÿ.3b9lò0UƾPK{f  E  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$12.classS]OA=S"Cŏ*ʖ
15
Mh%m;]Yf))o$}F?xwb&sgs;?0bgd*~0Fk7BA_hXsRl]#EHÎuK?Nȥ|hDʫw#:e٩/ץVc/J/j(ЇGuOH4P I[+|۪m ZEĵu7EwB}ߍq%?Y
m͕UՉ>&$.p

X&00i`@!gӦtt:;]aXؿR'@ȼ=Wg]'C/m0~:y]*Y"caww{&M<H&H/B?ʣ*#"y%̑,m-J:hg.F6e0p\<E;S,P2XMg)2ތQxPK    PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$13.classS]OA=eGeKm#c&n%m;]Yf))J_2]ܙ{眳7sf~:v>CvګP5Ä'ވaFѕң$e<GB8<zGQr-~̝hTPq4TGz'Ot$ȊSPqֆc//Z8ԇG/aJ(
㇁Ht콫oe	 ZE̵Dw"}ߍq?ٸ
m͕5I?&$.p
&X&
00e`@!o3S::ޮ2,S߮ԥ
`'M]Vaoz2eSj!}៟Ku09aX4]`<4q-<61,ͿGnS t"2P+7#$"A$p
jUZif4ҏm0%,a]+S>rkkU泝qj|`PK.!
    PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$14.class_KB1Ɵz? ]hS0"Anz6ٙRߪ>@*Go=e	=j!{*gߐt#93$PP!wG5mB>?"q<)1﷏ډdh.e/6
$Sa8h2EB<d<d=xrV*Z/yʈŸp_-j	?Bm}xJ22Γ%P0FX+X#JTҗ:p
X(?ұTa]\F")F%1vv( sW̆r@
[/I"Qv.%NPK&E&X  4  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$15.class_KB1Ɵz? ]hS0"Anz6ٙRߪ>@*Go=e	=j!{*gߐt#93$PP!wG5mB>?"q<)1﷛D24zLFXm~by0o1EB<d<d=xrV*Z/yʈŸp_-j	?Bm}xJ22Γ%P0FX+X#JTҗ:p
X(?ұTa]\F")F%1vv( sW̆r@
[/I"Qv.%NPK{*X  4  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$16.classJ1Ozqj;^\tIHEPۅ`хKg~1)[骠Pb:u#]&$rz C0I%1C%4$,]nBΌ2,>P1>Pmb>"	<摌))v[dhLeunO݋Ab'+2"plsga/aƃaZ.LxGw"U;i~OXi{)+%f0
|Qɒ(\##2ʨQAp#׀
Jwt+E,iJ)sükg.[U[#,b<\U,+.:J܎%rXs{>Ը\放PKY  4  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$17.classoKB1ƟYvMԒ	#$wmrdwJ~z%PѼ&|ٞ{v>>_T0S*0I%1C7$,uD7"'d
=1<*n|wMȻz/bͨo5dHy_Tɞ:>a]
~_=Ja/!a΃!aX*_&XJS"VtwOPi/RVK24O'K*<R`y`),YPd=ӁRS
[dtPY$baAd17\VL2 =&ù#	yCv"ug26\6^HPKVڣ^  9  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$18.classJ1Զ.u /ZAҩu"!z#q2&%}+| JLGo&p'yxyPC\dْJmB`HX͘elP?m)p[D*xDbcyXCQb~xz~RZկVS>@àt+ݓ!o0,E@<{yye(+VDtぢ"Q>_n8FQH[IQ?ޒ
)FXYLG)JC{:t8PA-2"$U9a57.Ji/=c	b[q>{E3#9P]/=*OPK{`g  B  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$19.classJ1ֶx
nmAQPtw\S֤dSoW	79*K-fюɉYRG<vMۺ~ Lk5eDMzo5~!uvw}~ό~!o2E@<Lxyzb(W{VDt[ו㑢"Q>l6Ni#QH[IU?ђ
)FXc(C9<{:t( ։T	;2"$5L;a57.iL0pUQud_`)ud8
ŒˆS%	PKg  B  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$2.classQ]KB1~1>~@J,#(
"yqqdgJ

h	/6lϯ 5l0˕#=fkэȑ!Y{1<*{Ѷ6!|ۈoV@ۘ_TfcMO&0?KG2 pfa//Y9bN<213ܕS"V{qD6RV$ze0֣%Psz)X!byf:p-Xl)?ұTal_s4"cİJssաb+V^0.KcCWE
kΠe;4O7PKdV"Z  6  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$20.classJ1ƿTvծC+HjQT*
twܦIɦo'At"=&dG|}uJaP*iJ!aRrŘ,Cy Oyo@Kqmb#>"	<摌))hw[v}%v&=$#6Ib2"ðl^cx{y(xe*ճ#+MlTj?qk#mViT'j=XREhȁBEE0LȍaDR}1mȜ&"M)E
sbwCeT) gsEZ@
,?e98
Xsjl=U
_PK^  :  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$21.classJ1v=x
V< Am/
-wIɦoW`B~;3LUW3RI{P

	K+dăP1?QR\POHmB<4Oy$cJm/nWkf		B
$lҭ&a]gx0P0TC+M3a*RU珻~HۿoGdIZTD5>r`>PDA%S1,TTK#D)aAn0W
2LorX)](t=B9a<|,aͩ\V)|PKb/W`  :  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$22.classJ1OukE+HjT(X,"ޥ6&%}+| JLWo	3;]l0L+W3RI{P

	K+dHD(t)M{zP6!ǁ<16nӬYaw2j{!?	t+n=`_/CÌC,CPeZ4ng"U;^=IvD[IQ~>`IE}_#c
EQB0}#7
Jwu෕"s4U9a
5SA1^?:
o(]`)aiXºSc빬RPK_  :  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$23.classJ1OZuj[\ڊHEB((ҙ42&%V| JLH		]ܯO 
l0d+[C=b(щəYң#M;@$6&<%6i*SY##6D?a[gx00WVƼ-zMTQ>ܫ8FyHIY&_t6B
h+"<(gi5`LNd:d(+E$5,8aѵ3.S~٭7b4\U&vEG@7_DknAXwjTz!ur?PKfY  4  PK  C:U            =   org/bouncycastle/operator/bc/BcDefaultDigestProvider$24.classQJ1=v|Է]GE"Z]tvIɤ+AFLȽ7s8 Xd.fvnY.DK$&nĽJ脟n(c2==F"uxdX&(qKG7][?-z}ϭ1YЖ61Q	PbTk'{N*~*
I_SuUbtfLɶ$ۨ~~)F# Xf
!(BLy}M?֑2)¦dHSJ1O8n/9U\~30\v7W>-bXQPKQe  F  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$3.classQJ1=SP.ZQR_U
".FƤdҢGԍt!I΃$.V*[=dюȑ!Y1<*ц6!o}ۈo{V@ۘ_6'ɎawB{dՆ}~PG#;_=lk;9<d<L{<d=0*}+#~!z
Dګfj#m, eeGiT'
?z
h+`
s9P!CXs-G:* CL)2ǑcQCљf]CSbn.9TJYbR1CtdȾ#7D%Qj,`šQt1aPK
Z  6  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$4.classQJ1=émhEI*JEPPAwuLI

~%S7҅`B.'9ϯ M,3k=g(kщȑ!YrW
EK;Z&W/bsjȐbN(14'GFXmx݋~dK2 ðJa//)iJ~oeEpW;O[]ގBm}x<
HYy/ɴ꓆O:~
h+"RyT(9ԁkAX
>耡xH1h`ƙf]CSbn.8TI]bRQN:2Q(RXt5"(z&arPKIZ  6  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$5.classQJ1=mV\"T-X((ҙidLJ&+]	
~%S7҅`B.'9ϯ Xc֮RI{P
	KW#CwAHwGڄGEl#yZRlc~yjl$;)VB}1D~a0Ƕ`!!0PֺɛGVFLT6ly+
vp	HYٗdi'-5E|y(̐>ցk|[
tP(E8qL1(9Ükh*Ye	2XzxT,'r(ܼ(RXq5"80oPKPZ  6  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$6.classQJ1=խzw}$UP[NȚl*W$(~_"fH3d0s2_ jXaT/vv.D'&ǉ2Lߊ{c"~ڹִxGUس2&0Cm{dՆw~+ό!VwRxy(xPd(WًVDו㡦"Qa{c7Hio!)+L:,K*pp|1]D	3EuiMaPNNo+E$t"s͹9[t!`tHhNˋ._ÒyL``2PKX"rf  C  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$7.classQJ1=խzw}$7"h,(
otIɦ+} ?Jn}>fae>> lcaReWi;JCR`HX͘'"0(BEHKio[CQb~}vua!nVqpB-щ~etWdv#[cXKKãaC\g/XѮ1W·Dm>?#m}xjlI2N{TH5#`cf1Sסԩ
bH]}!PL=IB	60DFssP9C+_.,S],ÿ+3b9#|òCE'*oPKhv
c  C  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$8.classQMK1}vo={hb"h,(
tw\#kRiio$=	
 ]H2yo1 jXbTfFvv.E+&ǉ2EWX)pm"ؘx`my(#Jl/73P 6aᭀt+:ݕ!ȖVRxy0PTOwhn*'MEyosmǑ6=4CRVJ2狎zTH5>RG"
1С
bH!TL#IB	0DFss6P9Cf.,S],.=ec3XtYePKe  C  PK  C:U            <   org/bouncycastle/operator/bc/BcDefaultDigestProvider$9.classQJ1=iw}$P*7((㚲&%W$(~]}>fae>>_4ʐ֮
vwvD'&ǉ2b x,T;]
\j]wt_@$6&ajʈ˓34FȺGFXmx'݉~lFdHa?&__
<&=*i⾕1?mtH&ܮ7~i#C;$e$Ӫ
~ђ
)FG,u9(asn8:tS9VA3:dJ9EP:hsn~Ζd[30Rz77^rXv)cšLg/PKO=*c  C  PK  C:U            F   org/bouncycastle/operator/bc/BcDefaultDigestProvider$AdjustedXof.classoOPƟul̉ n(jĪ̿ @%DLH72JJtDLDF2Ձ,&}9{9禿~	4I};EJ?Vkҫ4syPj6gc+gi_E3n9rU_^Cluou֮e06yExj6t7R􃆹^}nzdD&,Fݬ֗qo׉/϶E{;l	nG'ũ;SaӶuobPUCt20OKzi{Sd4\ǘ$4#aX
RrRFjq
פdqKd?nⶔ;1A#<(CQ]ʽ,FqW!,%MK/d3~eɷiZxZoaAFYc˴*$;`Q>D(b a4	dd'~Oo#!Lx5ޜ欄|ݏ!)(C18BjI\!P4zEiRFdٿYYUKM4Э3ǰ=,unM. [8^G7n`	?PK.&y    PK  C:U            :   org/bouncycastle/operator/bc/BcDefaultDigestProvider.classDinEE,H)(ZVn\$ݦ&KV[ފ}~^RBf$3_%-P2M5
K4-tJ[ZfKHJ^IWH*e{]5#ROoULzꤥfv#'!]oaeUEdh-sIZP>G
ZKC?+qwtG5]zEV=JSzGHR<5]Cd*ҽS(\zhңȦbemJ/ex u{)7ئIa[}hRiAyi]tNVn-uˊkUȪ.yǖocNQ-h7tƞX88h*мprChyrscKkIClc<q񁏑R]y܆!8z)'/t9p䵒wO|	(C!kU=ώGLuޮtެ$14&N:ғǎ?f:vdeȪؑձ#kbGNY;rJ{9ӱ7_:KǟmgW[70qkNX7vXZ'.npu/{qcCRb7G?AQ""p18Q`IcN('0^`DS&	iJ*jS
	L8U`i3f
4-p4y{%Eu+|ַ4W{Rsz]1l^_9yhٸ~DAMg잝׍/I]`_VRlo(^閦ko:-0z
aM
6RF1qcPP0aG0F0dd8qq&c.cc ֥0 EsS(y)$q~
	\B.dZpO4qJU0e\ǸqFMXX3H`	naܚRɸqw+p	$>x(-I,}I]ϸ?0V1FCeh2:09Űyjp֗,<x=x>`k嗌OJpS;
:xE[5Je[AO+QgEGt$/DRT mDqnso&+{;~.bA§#)6	D>$|	OXMw#Y.	?Ds><~|C;Gw#EHx/6PHx?^F]هF"av>>$|	|$|	}ty$E/#$GW
m ]>:/ߊW79j3PLM'l;4=|0i+x}?%;FsRB=vy7t
蛛)AE[neP.#k3]Z%mUCVm{hvm.VhC:Nhz+PKzR*    PK  C:U            ?   org/bouncycastle/operator/bc/BcDigestCalculatorProvider$1.classTk@~5f6ꜿ댚dJ:Qd(~T&"L3HE+ (M}p`-<Ͻ?~ecλm03B1<
dN_*F0)áz}>^HL'穊'EL>(s0<>mM"Ga?kkNj^U5SͰ4ŏzȠgiҰApNHQ{+8'TIٲ&mw^mAŴݚtwz@̥g9QؼY3vKX5PEe0UTp\ͦkt]:hWޑ}(4B
d؉ct""E63if	 d)|n)T)
ҪRicrrdae럧:)ܜ
w&<n¥U<+&PKy    PK  C:U            P   org/bouncycastle/operator/bc/BcDigestCalculatorProvider$DigestOutputStream.classR[k@f7M^\ŵ5+EAaWHB>)Me$̈́dRȊ3IZz	s7|߹09Pw^agx4nR<Qqm4ԠH5X'$Ō|.b?bhϸz*f<SK| q
z<QB\%:P)O6e:segAz(^Tx JqN7 te*OES)̓W]M*7h⚉&L,3#m_
}0ml SV=[bs7mmܡʐF\[d<F~*ۥ߅jic".klƟ(hQFsz0:Ooq@I1|4+Abb!hT[Vn
WcϱWvcWc	PKS7O  >  PK  C:U            =   org/bouncycastle/operator/bc/BcDigestCalculatorProvider.classTn0=ʲflm9kS0BSHZ!cxY,g
$Bt$hVa=^7W 2L+&+0L5[[6[f!o08tm#$>?}hwE[1:A[G'+B.Ш4LYlV{Nj
.o,M z:cO'_47d.1<{rЎe7[naTb?%L*PL))PL+g0IưTbG]Л^<׌{Ʀ+r%Uѓ·=gEI>pǪ5q
x
!dt5Y\ˡ*򸡢[*J9gȚ-

NEZEhz<DR̃Y&M 3+`@Xc#!iBWpyq'(mvmB%N@"EP PK;    PK  C:U            3   org/bouncycastle/operator/bc/BcDigestProvider.classuNADkYgF=NHHmv3ކ,ࣈC0^T{Cg5ZڵFOr.GI<iVk԰XMB_3Rt1*ՅuX
_NP{I~~M+>pi4ѤSWǲv`P1"2_PK5k     PK  C:U            ;   org/bouncycastle/operator/bc/BcECContentSignerBuilder.classSJ@=cka[Qԅ(bMDA]qfJ2JE
BQęغ҅9;yxyX"yFж}.w	,'`9N糀I nbT͋߹sr,0wE)hB9Mg"fUh#k+N^Eqeak\ْÊz'+}d~
/D_ҀQ]/6vLM&p\M<pyu}+Nx}dtKded7hhWlIUenE𫙯n[B:ZhP0b¸.X'z1AbN{TS r3$H.&1ۂWX:/cz4Տ|PKL    PK  C:U            E   org/bouncycastle/operator/bc/BcECContentVerifierProviderBuilder.classTkOA=+ˊ"7Zpx~ Uڒ4> PfvJ2>b-QMfsΝ;s_X*C|fva^gtx)jVޕEO(qWE7JE_IhKzn8?\Q&DU+Dc+Hh`QhC\e-}~sjσ(gw7Z3y\0Mn-K|R(Iޢ}EX/e"϶'#
O)T3-ݱ
#6KuGd|OҞPX3Yr;V4`2`l`W
Ɛ~KeB`Xv-M-E5!ghQ."mJ
AG=Iw+CVk9*jG\Tiu~ܶ0;b`.^hݷ0)qL#c11	$ML"1x<]`J4&}2$%}e ;F_3yd3R>}>g)OHNk2NÛ3a|OO0!¯D7h40`vQ'PK\W    PK  C:U            H   org/bouncycastle/operator/bc/BcEdDSAContentVerifierProviderBuilder.classTaOP=1jTPэedh-nkaη7~1#2az۞{y_s@8No{i3]͠o)zZ֊wE4Amh'qe*T7 0
nT\T˙PZt3c:s\vϤU\`ea5aSݨ91=UXJ;+uf`jQSZ){7k~jRh.-$z5^nݖ.%˲.՟?wk?g}Vfu:e:-eTH]NGA>+`@
nL{㓲%×U`4yO!I^Ɠ>KKIuq+ζ{	k5*rθ 4h	-၆jP0<	aU!.&U#b0baΌkQua~|mTFɦ<C$TT/|# 8yt:	dE1{C{anG Ӧ}hyZY0
)L
 %+fNlPK6  .  PK  C:U            >   org/bouncycastle/operator/bc/BcRSAAsymmetricKeyUnwrapper.classJ1O:u*+wAZQPaZEŢЅi&dDtJW3CA1|97yxyEյ+!9$Xb{IEh.ktH[^ptEd*2LqQ$Ay0
z!/Dp(M[Vd<6M:(8q0!Z=4^(vW-]DV8ڜK#nDF3=ǝ:F2FľM	de"+S.q1i.f	
5p`lYwu.sK&{e9bc.J]=F|PK,tT    PK  C:U            <   org/bouncycastle/operator/bc/BcRSAAsymmetricKeyWrapper.classSn1=nB]R
Z\Z.rM@HIFMnA_S~bv "<xΙ33=PX[0R_1HWt)|D(0R(]?*n]mȁnx˕6ҦVU\錎6*;J5&RQ=ax4:~;֒j|-J}R;-yUvJq&0 0`>@xʹOSTc+j:WEHM>䕸cF{Xg[vWI?N\4Jmy;'$0tC#D8K/Sofwʏfv\	3`+%q5D	+!X5bFՆ$=\X
`m/p[sHL;, !sv(IUf\<BiCqSNPKüF    PK  C:U            <   org/bouncycastle/operator/bc/BcRSAContentSignerBuilder.classJ@ik1֥u_PqeB޵j$S>PT|(qd97 ۘ#stYI"$,n3O[Af
צeQs;
{Wzѳb&߁QenI
̅S/&͚9H&9wjWŴ2У!AЫOu+4R3vK^>'0[JI;{4S͡2W\EV\v6B]ubVX6KKb 6HH1X?0N	??%4?+\KQ5k+k
L=%sLͩ'L=c:W
L>ـ >PKGy`w    PK  C:U            F   org/bouncycastle/operator/bc/BcRSAContentVerifierProviderBuilder.classTkOA=V+Fm>>*4> 4!oݡ)씴J
?e}JhMfsνwv_xG3I0(akR]UO(iWVE󵪯~!=7\oo)@FSh"ٲ/PCb $Xar>yis鈺}U9-tMpGACb
*{eo5*5P(c~](6y?+<-wPDbo9=?UqS=MJ;BEb25da?G_şJ8\Ҁi i2p.`ȽpdB}sΏ:av-ӥ> K+Yt_oa7H=
+yzZT5\0b`p9ܲ0Yq̍*üI3134'q|W0` 3qYȾI}]&;F>D6GO۴dy6	xoamp93"N 6D$
d`PK@A    PK  C:U            7   org/bouncycastle/operator/bc/BcSignerOutputStream.classQJ@=Q] \*chPP. ?JT0s9ι3o/ 6QeX#ݪ]CA:1AHNr~.}/pd,8qٳ=wލ#g Q,%z(<4:-ymW#ڻ	a!Pا]wS3-ߣI-QpŅfJ@i`!mm18#Ø6f"2&FSя)Q\W˂ZղD߷6bZX"IAS)e,Jg',? 	(t@˵ٹu
M LSNL
0b涃UL&6lo	j5mr[`M]BPKFα    PK  C:U            :   org/bouncycastle/operator/bc/BcSymmetricKeyUnwrapper.classT[OAV" (A*WQ
4[1Ӳ;v}a"4H(m%RÙ3gofNί?Lb5N_8o'Svq0
wPЕ&U4lC0u8j3ECu_UrUҮmdf쬲cMf
}5gFa~j0P/铧hkVAhlPmhX}ػsR.ܭ1Y?cGSZF[5u+p7͵?T#ת CwTwr<Z㥹WcQ$!(Y,EB65QpKk7\:au1VB+Y3(<QsL9UrYS:7]ATWny#᭺+w!
%µkQp:N
Hf׶Cz[sڔ+d׽u4hZtFlh#0 !~4OAX!˸'b	&&L<$f2Px}
cxa&h-[:͹ŘpZҮxVm?VLRo%"Blv2?t4qo]NB6*Ecx=J;}dfNz7c"Oʏ2^=Cz6˘`'O`%XI̭0
6SPK  F  PK  C:U            8   org/bouncycastle/operator/bc/BcSymmetricKeyWrapper.classTOA=9PXx04B4\k{]5bbh«1Ξp3|3;3{?;EVRmێ-0joSfHչ <`P$aFve
o{5z(gf+0KM[4LǼ\OfƳx➰]^oݷ-Jh|2։Nz_^
IXֶϏ#sD
-۩S4qA	I)Cf4Id?)m L1mEq3pŹ{fݥLJ;~kOna6:2β5ߡ~B^]1Nipykپ>YE㙋vjԶ܆!\0+.આa0
1d4`R9Ltp]RL"\㸝)wh^gHк0¬69fb*qbdd$2d+G>fByA3p׺1BHz]LѶkI?iRyD q|B&+)A(g/`N^Ƚ@2/L@
m_ PKs_ c  <  PK  C:U            /   org/bouncycastle/operator/bc/CamelliaUtil.classR]OA=Cۮ-E@ۈT	ՄL2L>S|U}$賿gK
Dwgs̹׷C p? ^Dgc)A-ѻWLff-KOo%NeKlV.w坶xs-U3;
.|Hg=o@	#H;V_:yvfmr^VkcrS[KŞRtV;o-؟{8O?j)e'P>
d6^nQh5uF\2Kڰs^*8g a i`y)iٕ?~`2r`UI9*	+*l
?r.%!B#	!FC1!\ẉfLL gb
7MLㆾ~$ٻ,ˑE-ГQZD.{Fq~煯(b4V?G,;%̐.~?l'IOP8G&. PKޯc 	    PK  C:U            0   org/bouncycastle/operator/bc/OperatorUtils.classQ]kA=t6mj&/"}l	EZħl.?%"}iWTlA)s{w~\ 6Nx$׾9ȥ
4(2xMQbh"PetFQLF?,@j}eM?UQ*D)õԄ4Mrga칃pU҄{Bb_-e=?`ύnzY昒I"ja݂mhdaCvs8q)\	kȗPV
mTgxXD
)<zs#A@htr-
vx|`a.G~>\/f5j߰/0]3ʇXO~)4kSnPKm  F  PK  C:U            +   org/bouncycastle/operator/bc/SEEDUtil.classPJA}mI\ы؉A"BBD3N&=COK@ęQ49XE
Z s(GkBtv±?}&uOP;F]&?&hxj@ޭ'6)dDhkx]K-Wl~〆xJ`bSoS9561`lΞ6Ϛwjwk9yHaHsȣG<
=cŰY"Z1[S<ń,XnWCYg,O	PKIz|1    PK
    )D:U            !   org/bouncycastle/operator/jcajce/PK  C:U            F   org/bouncycastle/operator/jcajce/JcaAlgorithmParametersConverter.classViwg~q+k$K%H	(6ږN	N383.voӜO=r_ 	hOCΝ{>}? Gq8q;yɜugM1$K7fP
K^^`\b}@T4~848lip NH*<$ϥGCD,cyٗH'P}#K`IeHQIUfwLz~d)ÐJĬbrYPy"UoF2fӪbp$ǰUz@!M3
ё:jKB2b)YSLS*U#ԋLF3/H"x5gDZ!YPdƊrn$"м,U(o5'iY_|jF{jY;j.ƺ1H)VFTO^LDrjf-Ѥo6:]MTʾ~F`UT<J4\kQ+ejJڦk!&dɴrO2>_ 뫖~o
Nj^9b9j84+rİ?.[<aY%̖'$eՒG51gqVbq?V}@34#+dyumN㈺pXr4SܖV*]XpiYMzlYitcx yqG7r8]Ǌ]B#""DoDmhAam<;Vv,׳5|MIo]q̦GlRF/kٰwMSL%|0\5BV4z=^p5\n2{/pNnDEaqx1"L8a]L8	qې	Gp⼈'0.b'"DJLeۈ1ɴKN'F2i'F!11ń,f<dL?rL@^iuZ3LhL! @=	&,iEz4c+14c6{xIKgǤB#Y
k;~ Elϣ~@_wOcKOYW?:0"l+zOoҧw^7SOvt8Γ-6PIt;ESӷ7Z۷q	xm/E|t`~o'ypkᩧ8-wr!M6/~V_.`mt0eW.SPrQ_]Bh~2>Yg
qlyhZ e7o.p8x1!}8PKoY    PK  C:U            @   org/bouncycastle/operator/jcajce/JcaContentSignerBuilder$1.classTNAF."TҖrG@B	F	tbmvH_DH}(^6se? a
5Cm8~~vl9GNg.S
\-I쐡G["-m		I};pT=)B*z?	Gl1ϓ.bd$[@~wf@XRDNxQAT_Xʚ5Khe0^LZܗ)aX횥W%]/WঅIi.Uk5Pl%x&;YD0uS#m_Hܷ0CtfЎx*DvS4؞&
w44khhЪᮆ6
h-I\4CWʈH7/+Έy<><iVX2r*wsg8R
f[QU$%1\5`<}9RK$'R^嫀z}";]NI?o-n#;:}<3 }:6P[Qc@G@"aPilD#*\11;O&/tॎ &uPmٱRO=rUh̡ZRд%q(@R0<V x PsJqct'{%UtsSGϱ~79C#9[3ud4RPFz6PSPa'^{ϰBKXs=تF[X3XNP. PKbP    PK  C:U            @   org/bouncycastle/operator/jcajce/JcaContentSignerBuilder$2.classUmsD~.orڦiHJIZ7"$rLm4@ZN|ulXrh>!Sϔ
~3Pd;q<	w>{{?yU<!2-=K1깔\ݴl˻M;+s]
WYhsV*7MӉDP w^&g5TXvǵ<pI<1Eų;,l)Xv17[3\>8ySET*:Ny lzl*%B(4k/RԳԼJzUiH0YYig%nL~WR>ޣBHZ4N6Mz%apמ7}F<_[CtP)k&p'(+Q).SUNAe2U-QEtӮwMa5+jpR$AuCގEvyN4j]o*S0\T	
.)@`/]Ewa!}hyӻ=D;jQ^ׂ6wHR.O%nW2
ʴKu\h CSu~8P
e?ZQ^=qOEgu0	/wdKᔆwpU
W0(gCFi)C
o4РaQnjPqKi>$>bI*f
wTD3)*XQָ4qW,>Q1U)H`M<ӭ^w^rU.	oǡ^[%¥l@r``|DH#&D(y5Dg=xpg("D7-y\k!εXoG12?Y??6>D.k/~dmHAƯ>?ێ㛧
D5WX4{e-1G h>*0)T_38
4S-3ĿPK  {  PK  C:U            >   org/bouncycastle/operator/jcajce/JcaContentSignerBuilder.classX	xS׶.ClF6	B06PdH҇Yr'4mlgh%$8Az6wӦwz4ęyYdI3;;3;OϾؓ ..w܅.Lva]!P\S5FM+Y#R(KNi۽ʻ]֕[j	uxL`ʦNha͈GcF@~=Lǖx0DxmGbAC15C#}zy&
-U˭IZE>bMX|N ْnіP BFsS]ZN
]k
i1VP-c2
1W^ZO+Өv4У1I4/iXrklFa~ʣ$G;igk=)O%}ZcyQ-ңAܦ(AZ|R P`4PX}MN39&#Hf#q?nivQ7Z%acno#D(rT2Y+8xkJKqBӁ>6jgb3O2&i΂,iʀQD7!*-I=~c(<["_!ݣM_Wږ<!ʍ
=.ӯ晘Զr}iTh~TGcvL_0F$b%2(5h";1Ϻ5,"9c$pZBo6.MQSlk'Y@Stzq5-	\K̹IӬQ[̳6}j./9-3E4XNY>F&B|:bTF	t;5U$~-Khy-Ɔ$)F+t--Usn'OuL>NV+Zt.<)<Ⱁ[ht<k½ҵґ87ޞwуƼ!`uCT*ϱ^r.#2r
􂊶j1~+;]a~%Ҕx8#0O)$*$I\*XbDeK%.X&qrmWJJX#!)%Vb$K$%6HlJjk$6IQMo,kGLit]G+'t]tĩ}'e|o'B4@*$4V$y5$VxSLXn5KӒy\os~y+ن
V>P!E,UBEЂAG-ϊ,) @fVMzfyPe\eDSfpG?jKћ:["e˸vU';>ӽ-ْٕ<i\$O]ԝ/ǤSy8[#=֦Mmʝ{yއj,&
gRʯ4NZ®<-k⟵PFz=˭w$m}surV
slN2^\^=sQwIUks^/.dg]O_;
nTQ*tܧb!ާ	WL&*zAp0	0RPWb68QQd>"&5L1'T*f
7&uZ<>ŸUC*i~gULQA<ǘk~T4ည8b
*.*.I}<Sx;Zw+LV;qɗ|ɳL
~f=QES&QÏs&S?Rbs=,"Upz<7LN;&V(8_3=0xQ'K&Rp#k-Ppoi
_L
weL{R|{<6.8M^2T?w
	4wq>CU@p'pR(+WJmRޚ-%R
S[!VШD{ƞQ7 .=.\aK%lHڻH?avIr79&D	q{\#ꐅ:¸
gBL?WPX	1~@(OB$c-(SZaLNe092e$9AR|,B*mCn}<~3~|ކG`KvaI0	Oh{q>88 .9~T8NpRX2((Ou
nNY	1#BJ0<!Gfh(;-y긓GjKC@[Yxs'SIr+&4-t­̀q̑8 /"DLn'oP6/if/sB\ՐӞ@xX_URɻq5T:b	1vv3W:EHmRtC~x	Q(YtV<yӆpoOD<5 ~=*BExǒ.Z9L%iz^%B[Vq3(1s|k`.vfF8p1Ν"t-sNOuaN^'.8]	q	c/!勺mC$?0 JGs"ΠV6J1(K7md*zCGmU')"	X*ho8lvv6;0!ɻvP!!AuӬLUNMTL81kpCfƨ\!9$q>3*{)$/c!IQJ)w1~D
<WqvAXXӋ'?"t+ĠXV[4-v9mf/j^PKXgk  \  PK  C:U            J   org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$1.classWmSU~hA[ۢX
	֖Z^Z*6Պ7KtMw7?8~@GB7?:$$)Q1{9={8׋ \P%4Wۆexw$(L׹Et1*m,V\Bk,m4vg_6'f+o<O_{ԭ~:8=	*	3a;ܐp^,]
Rs39R:f!d5F|UHٮ!Xpo;m^gL3c\'3=ǰ-H\O;]nqt"$%:٪=YfvZN[\s69疀kD*wPFo&;bJ`uvmyƓKid5V{b~VڻusjYԿW2p<`[T	,SRa!3Lm^ҠG-ݳs\B&3es!*0RFd.㜌2ސqAEdxS[2e-㲄ȫo:G| Q|&5HeM e$Pܐ>_clEת/RYǏ|2|> *äcoɳi4^b#
kLwIF+M՗Ӏu&[Ulo=;jš%nv=z<JdZCa,Aű@*=gqCŻx_;M*pKE7҃*:S	2!p*lJE>Vцb9B=@ EDA\Œ_dEO`#x G
B\/YU0'
\GTBK؎S+5m&5Vb{Ik-Q'ZԃM溜ƩeOY('˯^[)rBK7K(fhrzC{{{`}H8<FƦ.|Z"4 ?RAe`/3xza?GjW";?g`|EJ$$2Xcr5Bt`,:4LgF}8dRiӃ]Q#N>.P(Fw"!@PKFghx  
  PK  C:U            J   org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$2.classVWE$lYZhj&@IłV:aKw7X|>Qm9G}O9X,!)$w;3w?pc8!!Og%^4,0]ۑJz>!D%,<~L`ܓ2cxK躶n0yC'^B&KyЯU߼ רQcfqNmUli&D~I_rDj=QWrѷ<2K -}yaN"v*uo	<U5Z=Png;Dܑypu-KdEr)wΥ.hV7E-\K={e0vu;>c@_2v8eHUK,= ώU` vXz@$+X:h7d)㤌f-2Ze6oxGBK&:HHd~~}d$k뫴9ϡ7 RS^$塂^?KgujDuxU]N>/MN*dj*·qh}j."lS!GKlZ]`%<z=WŻSюTΩhy*>T#iuXp*d| 1!!A
NcTc
⸤ tc\	A&h*HJ=`DϨ5㣖nқi[?RymV,;i.'qPԐ~+˖)$(5Ѩ@#UA?Yow
5x< xć$mF%kB˶\mʶz\$`ImX-Z/"
."S՚D.n	2lK<7aN=\
!f{t3SD7t["zm)!lZǐH4IGU*af)}Dw%!@(x6Q<wrx+H[Hx`e$et
=$gnmw#Vڗ$?i'ʿPK=  f  PK  C:U            Z   org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$CompositeVerifier.classUsUfn"-D$bPiBbH*Z
vsnIvCvSϼ>:t/:|@0N&{9{?GuaCH5E.$:d:C$C]]1WMVdkF9_.	25Ed4$L_d|b%:w7)xMǓ9Os.\.dK(1t"3盎%Tڥ9QW]^\?3]/f;-3e>쨕7Qd#,b0fHfY1[/UYrN6b;H
k2=?/sF̥ь[N_M~=q
gi"&|w7vn;X%5Z?gZ[ZcnspdHOR#`ˍEJ6A܂u"j/sS2ةQE|%+%wզx"s?ȡT`з-v^"<'MPoy5
uIk|Uwc nAw8r11̱c?G AhBsЏ7]F{hP]MUx@.԰ID_۴cYs1/.C"d;h^Ǵ-T3vxm5zcm[$s%N2V:2ClMkc6pmGH-tjְ5|(	Ǥ~)IRzpVi=%ЍQ|ڍqHrQEi#u$_8*
d$Wq$"9pM8/U4)7Kf/
68ʛ'?uߴJ.FWH	}0I +VW?}oMGΎ*<r+OpcH=9É߰'_pdQE(_?1%{$C1^(6R/De
@bg,TaĩQ?qi)o)n':ҡqe@ GBkF
:+U }sJo`d[;Y&Up{Z2qz^C0;L3lS^L
(%J|ÅPKI~`{  {	  PK  C:U            W   org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$RawSigVerifier.classT[oANnբXQP.n+hc4X/m43n]|D!ľ߱@K+(ɞ37|ߙY~e1HN=c%_z'nZ0,P$uiW]Y}˱cΒ/cWcXyV~Õ^Cy*Uaք]5v73og}V">²묉=Ynnw1,Usi4tSVtl_3Z-_
۷GxGM+eR惲Z$ɿ9MhjC;Нl ]F"|i
9q9ps8-
8<Ti5t67ءN?\JҞy	Ͼ`2}ÜU~՞G~ UNrc 4GQ
8c28ޞS&98R:#̴	d8:b#.2Nոo-քIa/ECQ_Pӥq*p!Eh-Z8HH3-Le'S:[#L[J}ƥtן@p\pG"ESq-Bv$(*Ү?K6&q(Tt2*qbubPF6PO/t\S>Cf6ǹo-~.YWM ĕl\o
mP15V3I:/"JxDIZT݃I0zI;ONIraZ܆7PK&  [  PK  C:U            T   org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$SigVerifier.classU]OQ=.,@S!$eeٽEO>`"`$GqnY} 6ޙ33gN	`*TWCy<P0x][N2Ts'"#儻`XR,IRd;Iscޚfcub,Мr4Qz]hA'ǂutX\^et5ӎ#YTxC9bqmSXDytvUO <5N)2Jx*{~\k@:ܴ%L3YqKz.CR>'9㹒"pC4-M
[Bm0ftӸ[	]0nИɘZ3;v h"׮Z
74iР!ᦆF
Mi2ۺ0mH̥Fy;#I!DJ5#sSU~wK_dY|.26QoD7PrQaImJT@hWG=TbH:D8щ1<q:@Vx봖Fu? C?[K-)CgrDSzmFmҍ ^S$<ٻdjwc+ԇ^}H
Jɽm {)r7{jо-;ĳce+_$D#$7{_еzCLEfR%u!^?u}3
4t=<PK]w|*  A  PK  C:U            H   org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder.classWWW
!y0Zmqij+XQ*k004d}}[jWlmP9v9MOI2!	Mϩ{\*̫Nۢ隹U%7wcr8*f
Ga]6S	U(+Lnjj!nd @JѺ\u0	s+jԆ4E6Ֆz=G!bҥTItnIT	bW$d||
]6EYQԸz=%U3xUS@
N=iʺB"a=<Gbn'y	jg&7IbYl<&/(6@AHQ3;xN+KՄ:K|FwFK^@8W,N]15qη8SwkIq)]9I34GC)*LG66mo
du`砪NS4X> _
;s*򨢆(r	`#mSWJ1[PT$[{u5aE"v3
%1ϗP c]6DٴCsqGi\
ݤdj~;Q^2)2/Z{tFʠ3Oa
3i*]tOLT>K.caJU`a
Ca-C!İ!̰aU =_@CKn^Ho'2u4sKX~fx1eqfV.01i
jy  OX
c=>,B4iL,I-߹3E=є^H](nwu"[m"J}kO7vAd4fh3DaHa&Cs9PZp-ep󵞡K73E}ʙY7.('AN\}%,CTHR$,
(a9]?7I7K-.ƭv%, )j1(a1JCK0&abp8Tn"Z1&b
r0h="ለv8xEtqt.{p.<*g9x9xDE<.؋8x'8xjWs1HjZIRN19T	?s&5e9(
r
^0ͧ=	V^uip
'$/,M8T~yO$>YX	N4v	wgb
i|Ƹ͖\W["#r
p?ǪZ!7BiEK&OS6VդpN^BE7öee'2:hOq
 *d{TTߦt
޺"_7qgJwTUx=|~J/wNN
u^/X8G5?sg_HȱQ{CX ~oh+ia@꼤K]%WGѽc
-N c<w0leΰJq'bVXDB@/0&'=Dr<jLD^T]zEX@Eq6Biyi]~CehRVI
x΢I{Y!儶U`H:,>ʂ
/uVAwYD+Xt\sHL+I)"KRGIZ PK©2    PK  C:U            M   org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder$1$1.classT]kA=&nMi+jm˶6iT q3a[vg+?Gx'>ؤ)q`ι3Ϗ b!߲:nTR=]_(:?z"T1C	9Uh}TQGs'KNva''*Nt,byঁ`hsyΞODwfbx9ԙEՕΰAty%e6$r>>|LhxyALog4^^nY;(#􀠩5m̄$g^xJ{BsuZVDWL\Ĳ*ȃ("g%,ᦞnQ"nQzڑ'.M蕝
D+`OAd`U-  K釖ЫW/eѪpf
p^ioj/Ѓa2o_V&'09k<oh<rX.iBjq6PKo    PK  C:U            K   org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder$1.classU[OA
"ͪnE
Btn~h1軏c<ӖML3|2;U<ԽP9fڦ?ΠrH3a1TE_pŴ vM~63$ȴ c&T˾k)	+\F5]}Vr?sqzƮ=ꅨ2Tvm3񤥢c4!af3%@e-	DZ-R3YR-Jj	+#So5*)0BMA
j)^m*B	uCH`h$i3tqUhIHs.cN|=1e?Yp<e|0K=WVڡJnlͯ	7M¥Efx$`DKq5IƓ_%qnJ'
hh@PC94})=P*H6]RX ²FzT4"<MlT_E+UcHEt0H8k3v6,#.
á;K=<=mY<AݚeyfEAwdRtO[NNH}QÑ/'ȇdc) }'1&_#ӒGSr#,hF>ړH$TPAG?(h61C YZt^nE/HjPxڋ&PK`l    PK  C:U            \   org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder$DigestOutputStream.classn@͉kMiHiq7݁X$"T$lQȵ#8M@jĂ*.u9|>s왟 8C!ow;hHKў$A:J2^WԛQHVHP	u9_r'W,ez"IZ
7<r
)LܵƁrTp
#g+.O!ץwQ"ĞO0]:iKbʕXxhC=_mtط`Y gaymڔ*á͑6Mm))
W4h$5

}.hSޞ"-9!o9R
^@D@ջF\Bi&x1w_x\?ƳiN['eeMK6P/PKW&:|    PK  C:U            I   org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder.classTnARl-b[jQjliiĤ	WfXF\mvg4ѐHP3˂	9ϙ3'md)-ǒotnraXv}*<TqN˨5ek
7pFmSlcW|-M~hHes,?ͫX{=»ٺqiK3jQR읛T%ѬȒ\vef`RjZ{o
*
4tzZ OAҖO
ggSwנiӐРkאpSф>;KFZNkGhfYbpaup|7B«BqLsfJqTö:u5%oO|Jӟb&1$n] H㱎
xc	OuPԱC6CfR<|js>H;MOkFFe0gЯuZe+uQbEQ
[xV#:7zҗ"n..)5E<R,f¶]Ժуl'Flj v:-0[6{ݡAPK̾E    PK  C:U            @   org/bouncycastle/operator/jcajce/JceAsymmetricKeyUnwrapper.classWwUMa
B5Ti+
iN@J)!6$q2(.kAoxz̴l@Ŝ޻.of~U +C9rQ[f<Cs^A%GJ$XX@eOHeMtes4ThIG]ђj,Yr(4UѸM Ƿ1)J]ڈO	SQbFذޭ
#>ye0t
H-&
E*<4U۔dRٯD
ϪhTHh\L~2ؐUҤ)
y^Հ4$R,6"+	]eAzN'id4(PH FܟIw,J$⚮;<Fh04"F}3([gh[4ϝonәc.שŇpeըobu=_dm4})i֨LU5(k'Eb2>
fVȧAe*^
޸S1yTzTIXosW{kG߀"]RXydҵ40 KberDJE]KVvZŝ"
h!`2U٘|F5_&M68AC:-ږwMCP l)` Dnn:ۖJpJVKK{3Hk2y=Ѕ2Ԧl n0bnu
0,d>E<^&%>3`XɰJPnCt
eu%qZCa=s=\𪡧V1I0wZO1%.(Xhgӷ|'h 6zp;Tт(BcY=зqka^	 wO?`PUsflEv
ڙ;8m{yj\t΂Eq[x_ߞ5v_͚_ig	;ɹAM9/-d0YTX"!wpS,0sNsR89,b>3I􉨂̗aN1|rq?wTh"f"Y8dqNwa;sa' gmx'9y\h<B'O#p}xʅn<~rF']8]ų<ɋ:;qlvlB"1B/Rn
dPHSc #EF' 1/9Jix&
z{`o>8G]:?qXb	s-^8(?Q㈥^E\ykqzJa-tKa>0#65_wқ8i%Ia4v<M4>4ex_n5q1bq;xw2we\i|L=nyԵ\Ʒ
810~fqwU^^WK݇
6L4O1P^S-iEC|,y)\0KM69!l8mx$))w >AmB RK4ĜXͰakhf æR"۶2lȇR=	aav+PK-{    PK  C:U            >   org/bouncycastle/operator/jcajce/JceAsymmetricKeyWrapper.classY	|˗/,16	  6$"
`6|${EZ6XbUV[Zb=vmHjO{f͛7ot ,I\ AI0O%J̗F$Nz	JJ_Hp%8">WY!j*ͫ[_&Hhiћƨ|ѕĸl
[I՚}vOwC{c3im#/J_b.M#(fxR/nuz-z4Q!}Qg>l4-xyj_q
/`.5Я!ؽaMj
`ѩZTLs,2HawciIH/42Nlk-E$v-hE_D#
TP#dPvULn.wlmw4DbOHߘ/1=ţad_Y`8m<&=B+I|[}njL(f.]NQ"9
iF'<O'. z7fܫ¢mkV(.5(si;,NCY)%e%Hΰo'movh,Q@ɞB߾Ӹԝ}fEu	`g8iZK4t>xTzאPҺEKz.Kisld::Ety=
͝,Zg/״%EԏqKmpm|$۽Lj_OԏzuU]ҫ$~6&}Y	&}XwѻS`r!]e>G
Tj>#nSw.?eyQǗZox)Ls<Q1-4o4觬IZ8.YB`8u8)39#׾2;K1cs+k	$?rIᙖΣ,η$9;}䀔ffpY#GAX\tLzHg][Uq57LTfg#1ZnLLYaeɺ͆cQߵVqNȠ鹤dq=wt%=^/La=++rUt$9lF	${̼j0QTy`ߵ%xj$\j$Pj/ζfnjjWFxmf
S;zلu`2D$Da5ᬁbrIQk-EOX}\--r:5z,Drl.IѐyEXiFҧRrkO|E),[q<1}di	l
ZI$h>JM]Z?y>BiWՌuO#>dՅJha2bdjrIɥI۪tSּe-Uz}u
$&	{(] 'dlf#%/m.L'{3EM`oo&PFaج#)O
!C_ݠU$j-QĚX@ѠC3xtV"J
lwT4-7k4EP0}JΑ˄|~	X$`P%#'> >$1	iYy_p/
/
oo			+:??p	Ap!pgkrڼWښV3(TrQ8oxA%99͒Ju7Lj͸2hز^qQnR'Wiͺ.'ȼdQcT85e{lr/5YӌsYӭ8qhy4>rUNnRj9Uɴ&)S-J-iLpZX'#0YlGEgr݊,J@8n{&#,dDՁdqwDf)>Nw-),t{djȎu3->D;s9W߄/,YFq\v\5hIh/6Oiy3ZR)C4H艽{RSë\GWR{Wv9&X'ot͕	Be䫕l_la	z>1Ne^[ٛQ{YܛPb&X7L$_M>eeҮ}+%W:v?nJghU +pP`%DT`.P1O-}V~6~ C*0C!cb+xC/S`el:,T`1
040@C'a=X +K,V6a	Ӧ(*v*Ѝe
t69\8C18p&3k̽\$sފp
y
\++dV`9W`(CX@+6\ȴE
R[L[^pU7߰a5Ú";chehchg`,`s20\^<6ia%eoeh`B_vnm22[d{.U'ex!C/#,(cd8çgg>/7|;v8n8]'0 _p2<W2<nf+2<_$2|A__	ky|2ex/)L~1}_dag>5Gex
YM ødj1	}>w %)CN+I'zS
̅
 ,N
ԲIտܥ/%K98S@Chˣg<qf뙉htLˠ :G5C8>98G՞Qxg>/a<Bă8tcR4SY9beE8Ɠc,,h>V::I.aY]vn&ɖOO~0ZbvVOJ)	/1̥
՗/iJK/#}M
$0f
;y VQoco
g m8+9.'?Od1Ǘk?t+͒I8fϏ/a.R(!>pgn/q
w+u^豋8q.I4viGxv̊WB{(<xt=vqӭӴOؕR!|ծ:J+1a^)⼃beeq<LOog,7$ѝ?F}ɝo?
5{{BA1wȲ`ws2C)?KS~&9qqʦ=ޛd*^+|Dѿq[ܩoN|";{}0
-WpxLp
n,𘀻uip7IbI6">2iLGX+qyR[-=IQx
OhWQx:a#

Fh2:),-27Ne8`xzt&)fFxh^U9NlZ<]Sů%a#p(T7ПY<9Q9`7	J[(<Jݏ!#6FR7o4fݏb
7ɡF:c-]1ˤ堗gsЧdrЧfsK
2E9"}AߛIs%Yl|Tm`PK>y  C+  PK  C:U            4   org/bouncycastle/operator/jcajce/JceGenericKey.classQMK1kvkի m(A*J")MnMzуIĴ
"ŋ	1̼Reb!bH鐪2lS)u")PBa9O
F#1,[a7=)b;	F|\9--$CI?I,b1ҹfq~HCi$`߭lm	栭/^FS&?s~OشFB&r4a	
gJc9-09VB˴%l]*OahT_+}M13m+!7`VK~0PKNtH    PK  C:U            K   org/bouncycastle/operator/jcajce/JceInputDecryptorProviderBuilder$1$1.classTkA}^{IjKZ4TB6V
JEr-
Bnfg{s7׷ PsV	˅IRoZ4(2,}QvKm{%
CnhlZ#CuyqwRPzl`7kq(xb#
8@c	x<s)BЩK!1Kl"r6XR9;P
;Xp:8#t6I&vp(șg~-d4if'Ƀ SBnF
0| ]#rx8
`䡄.k.XvQunܗM-8Q:|% 3x=F<Idb(5XjHW){vK/wk_<­OH\bR7?c+|"xRZv,uv5,"[PK]    PK  C:U            I   org/bouncycastle/operator/jcajce/JceInputDecryptorProviderBuilder$1.classVYSG$u؆'Fqss%"8
α,cXޕwWqsSW*'T%<ŕ]$TPz{zzw~ zC%mQBú;Wqjp8D+\P3f,QŬB3 kSQO1C62nAH1HjZ|O9R~Kp7?;--R[vTCc)BH"eFscӚw0YYQWU%)el]cZj3+L#ǆ=S±t#{qC+.RSckM!a_#K.'h1hf
mCSm'6"hb:BKb_b9G8sm\LLb?se?]gS̊ḥp
RV&4uBc,+|Mi)q#u3oO֬eKAtb<)hY;U%Y1Z#N 
S,TT:n^4g
ux=p0`@@ͪnOyp-Q3"΋xVs".h,y-"ZE\K""DDS},rT'i4%V8帴PE
TR^	Op)Fב2M>^`i"?Ijv^`;P}e\sޘʹ,%ԆB=t|(Tn	S"~(^~r{?#?k6z*94.nPS=_!
*dȈx
et`Le2P.?|2%20.qcBF5nޔ	Ӽ7#i8eE9"0׸Hr:P%Dp[B'Xpi	xKB4	x[ 07Å)aK\0	HI]	א^AG_\O
ѴiSN1g٤ע,ӛDbiն"&U;f=G0G *|(4ң3	rnݖH%~L;O~ք7:6q?_
ȁ;CTQ>
~_toї$}n»ɠ~M6c8#.>gO6FNnaNa3,59wn?M/r	x@({B]c/Gĕ7[#ī;V4!gJa&q#]2^YF^PK#    PK  C:U            G   org/bouncycastle/operator/jcajce/JceInputDecryptorProviderBuilder.classTmkP~.[VvL;Mӹt ~ka
Rno5%&&_)( xu5<yI~l3^>v9΅_VVh;mZ㹒Pӓ!r۱^RUOu/8

۱{:BU)/GپLI$Rީݖ2gw9<5"ߣHui4[PPU}e_#E
Kt
2hXa%b5q^v;s_PA<84z%&&7X8zD°N`xq@?
3HeȻ),*➎\dp_:ȣ6^>́JpKςa.@^|JC튱dg5x;C-̓Bfe2Oc)g\ĥ)~+.Ej*g7ͭ΁E
\\,n~H1Y|oPK    PK  C:U            9   org/bouncycastle/operator/jcajce/JceKTSKeyUnwrapper.classW#k͆%H,8'9+lv$뱴Ģ=7mz4.PoO{,(wf޾ͻf]~Bhs
B]
ѳ]v˶;t6&RK7#dmOڞtNfۛF&#IVG3MGt33s,nYkie	WƄC}2rr@fh	ui3
+^'kbua#CIm'%q۔ l'ق!c>o=ұ&iP	/q\ 51RI
sNʔWAe{,}0m7a'9Sf}-S{v<ZJbҍK]V"NaJ0ZJs,Wڬg>MR馓xi$Y-$4y"km98`ٗpbĪˌEywe{#\&7?NOGt%(Lf4Mi'
֏ASM.MN)4MٗOr_pM(?>o-+eJg0ӎ\ƔEKuJ"-E󓢤.?E;oYO.?[}rJoZm$|7u:LU3eO,N᛺ڥfw+շ^*p>/PBLNr[AF,pU *,h%*[@#&W`~[W$֡`rSmFh`i"h9qcOyM%
m$V3:ǆW}Eiiz˝V֎Hh_V>švkdda{Eqsq*zbVʡ2R}dI_˦B*6]hͱw=}UR
.+9V <R
W}4> HU{Ֆ;U]
}r"|RhM%Zr[R:p 
2I
kpJVp4Jz4F͸[a0ap=쬆~a-հ?p-F¸~
*	^6aRFHMihGgI
0a14t`Fq12Wq~.1qGpAEӺ$*zk0<1<GG_8>w*33I +OUUxBRɠ_ex* :
OP7ܡ7IE-nSjvו\39
IN`=8^4#E)xCG,iK4,`>E/s/Vخy<kOl,'}Sp2yI}ڎO.U%&&bW֑U,K9|p	>!V!M__!rXl>H8wsxm]CXD83?$"9egr(j$$Û.ެ2q.va:]侗+9ʚ^1W"}H.2^U%/Ӓ'
.#-p@Eى:L_|=y3~yPK: x  2  PK  C:U            7   org/bouncycastle/operator/jcajce/JceKTSKeyWrapper.classW_Ϭ׵Pn+x:6[ Ė91ugY=`AUwrHӻ9zwu$7I#YVĲ~?;fys+ ?!luW89vq8ǲ-%}6fӲw:Ftl_ھױ$s';4#vJA첕L;Tt~/Hߵ]u/݌ea<mK[(@>q2
v/)ŚXJR$B0cTz1/&gӖd:gJf.Q\()`>
IE㲡
{^jʬo96$
uWL>tS~ء4!_L_вo30jdÃꦛ>heXVDҺ&{
zw^um3gٽ^<uԄNa11,35<GO$C㳋rCC|},uHvd`4*W;\ywhrܧ$9'*Jd*
hԽ4d)
IPp.sC⊶9c9MǠt&ա-)js"[^'qBEbV[^]2,7`Q.诋i-D1MWrFjptlEKSro񨃆SVIner2\} M~'.&7K-*6:]=tC8&@u)hYnK͟x*x{$='z+VoJuF+Vˏ;#&֞X3b<[ɹ@ޛDF q
G
8\Z}9R똚>hݨÎ
8PLJOo\BQ E5!-6B<6sxJYEOU^r6RuZ_S|Ԃ\  }`
@6xY-5uofuܤӑIN\uMt>KDBVp?KZK749Y_M}wAX}:Ь86k;qQ	WIOn<a;1مKРlҰvA
4`2]0yҰR6r^v,bdI4/m&Y
-pyihϳe
[qgW4Р-8[p O`oy|ɇ<#L>cL>~||K W1{Q&?P1﫸_QqO0"ULb_`u>bH*moSq`C33
DqR]IoaZ¦36<Ork7%Jw'Ir0J$Z9H)ƻ`tcOz2kUy?YLqUNZ~\onߜ.-ohZILŻVl{WdmM?M{"i[+ۚ
M>B$@ə~{$~9m= as%7mxlnK ?U/*Fg.Wy2'_j>L;϶5}.|w
5&IV%sx?J톉ռPGM"Ob54KN7c<PKt[    PK  C:U            ?   org/bouncycastle/operator/jcajce/JceSymmetricKeyUnwrapper.classUkS@=$_hQB(ՂE-,ۤHh;#3x73w>vnuЩ_JkZ;+`֨4TeӶc܄ӆÙ\irX>	֬Zj$ioFSrMS@-rK%ahm3"9ͲHpy״-	#>q;Q42
}qG7R޵E3RLc 
h%,Y;7&=M epYdŬ3XO}hMI5"<sm3ŝfLcَRUINvm#Q1]<$MyUlZ
c6V8"㨌c2N8)O)2NqFY	gCY>`Q׼xzYi=A}Zq#r3Ea93Z
xdec/RS ?vP^mF6iKu'%ojƱ߳,VhIHxt=9rE,[9m,jzshmxTkOc@UqARхN!*T	m\E&TBI!"*L	횊.*q⮂K/c+=1
㑂XT0'
!hx C!U\STuAˌwOY~URTQ34v$͂8NC
]h]%+Xg,>#G/TaCSUĕ$W!>}2np&XX+#^L2w1	sس.iNŷ=]t/}SY\+pd.ɴ=OPKs؀  )	  PK  C:U            =   org/bouncycastle/operator/jcajce/JceSymmetricKeyWrapper.classW	[=cˌ4#0KI I`Aa ."$mx,:&Mt5閮^ƒZ;t%w$f\3s{s{ɯ aF[0Fg'08!akwB=O$#'&	;Li8<NK²LHOf'SLH33::"!2KxPvVBvލsBlQ,I4"$\4ff;Y
gɴ	<jVC*-K.	jN;;DtVخydE$
ZKc1!E='h题82^4Հ(Vn.5O5knB¢9G<g,3BdkNӲDN8E3W.zB\U	w/gu휖҇\iR6zv2T!pFxɴ<OQ%JW.+Sש5:3v^3傛Rfa%;Pr坜v:_eC/Ԇ3ɴǃ9^[A'NM,K~YԵFb`m]m2	I10Ga(j'O27?jgyC_0VrMKgEI#H4Q2I{1aI'֤=soSL
"Tix[7hnoɮЊ}#y}yY
xFnqt;(Ipc)j~[S_w{[^옾cCb7mC1	22d8 㠌C28"̴!xeQC2e1"n;Dz-wr']'FqJQLGwFIfa_	jMrȻ6zӫy}-nS9Һ7)34`41կioMtj*!O_L;siKx+ٕNWѹ9SϽLsOoJ\GZBF}47/6n^&3U+*ބy0U܃y=ϦM8,PU܅V~ۡN,fN*ȫGocJ\{QⷳlΩ؍e~{FEoWяgU`*.6E0OD> PoG|"x+>ؼ'_T0O<+s
×|S>l
8ivx^dU;l[
rv<O,ݮ)?
]k?Io͸8Pi[Lo[FޓDOٿШ⽗
~_řUVjKp%<"ŋUg{+U-de L#xoNd<'	"i1F~m"22~Q'[@+eWƕcU4}إhʞPYFyO__#ڷSA%wC
C22e$
ˀ]gG
L
$eaދUJģ_<VE"^J<̓2SQbfV9[<C]mxE(CWh&F89TkWURiTvT*uܠ5eAك3Ց;tp{ /PKy    PK  C:U            L   org/bouncycastle/operator/jcajce/OperatorHelper$OpCertificateException.class=O0_+mJW$ڀ䅭%5&q+@H ~T:0w#hPC3U>3q/xd_p	}Q0pR>)r)n	oI1WH1Fh0.̈́Ib~%&
'".!JK-"C-7~х1%s3_DzQ7Rk6)S\%ߎЍ_y@ѪDz*E6$BPKL) %    PK  C:U            5   org/bouncycastle/operator/jcajce/OperatorHelper.classY	|T?g22<BAY
LR&3/a`23L]l.UKt QbkEmX`[j`s{,1's9{}=t Fa5"aDX("De"\ r.".a"ԉP/B"aEF&ZEh#"'BNgB^lT^>{c7qo9q?!/;y>p}L"Hr
emlh564j|(Z}̥EFR#Eyk:BM{uk=m-
55.BWns5j@ Bd^%.uյ5d!5-;'kK5dcuɜTo_i_P
[mhYfV:.pRrYVWFp Dvw+XϦEXmKA%~9$J1EN(r+&6wFq$X|Y)8+?ݬx<VT)JNNٟzyv>Rh,-ԗ]JT	#"Hg_%A?e!XiY6N
s;GhEtb[ϦPߤRl5jSj-#LfLWjSSjaCK',uHKצfqMV)a%&B6ѢrWڵv_+,'zb(hZ}H%ArvDJz
%ru`wiF(ZH)uiHRr<%㈤Y߬xEpҸQMj9٤A$M6OaZW+Ҩ5'\Lh$ZVI)/V2UONpmmHPu'PW9՚4"Z.庳Y	{hhd0СUZ
m

bX:@cU)5B]-T5A"bVL4^
PUvwun
vP:qtozsIj9jE*lSH	(Jv);Z;Ns]
S&[m;qRE^O8ړ%DQ=;J4SԐrpBM.nڢNIu=PǨ3rb.e㊿Rםʹh&&'Xju*:z'ٴ7gp3|ŸM+Z霆kӳ]JVXT+hoCCeY@UpzIզ'@zC9`bEN'HLT{$,ro~9)n9q5<-7~y,(2˶łtoeULXo4牻^QfA.5M_Exڳ! s[=oTt?>z/UDy([zrB	ۢ<o^;Uʜ!|=ƫ TfHd;#ZLgytř-~y_NZz	Cʭkjk)ZtG Y-4?Xީ"yn
AyngJ8s^d(RC
DtǂQ;}}PυLZ^uvdӛޅ%7qAgS\ګS,-cJԨD$܉H[2Ncg.|KV-wMC; w	p =v}~ #W>	 
` 8(Ca Q'<.O8*L$9l.@j@앙q/ƙ q3[ޜBSn׶Jed:gJ_NLHٓ%"'Efg,5z(,.?~'t{5k(sB圗s\Wg-G"ˮ(F1TgfKLsvlȥ"YTɖtT>klWS8>hK>h4GaX4E'`	ļ$!RX3;,OiAL׸8k?2"I6iKHoVoС0kK"C$$/9Iڗŋ/XIEfCr<!9=FN?o[Fh$<f4]M [ֽQ$dǒs4[hoS!nlN]{N{>ΞZxq3<43KQAac70|dSfg>yE/1|f0|_2a(wX(A7̒g|fK
	LQtaWh	1b(&	C8VN'zq2'HK$؊%Nf}I0mQ98M-8]0I\Ђ3dyH^d\s$[?HKHIp9.J\*}H2\p\S /fha221|a-e.gJx/aXǰ MpW1x|2=AfT"134042d0(NxpcNx"pCQC6Nx^8nr_YfN	ï:tIbxs?kN8،Yx-.'W3V'ޭN80|Fo;am>'I|=~ʉyӉiI:Q/8)$gWX4'FFF%/3p-{}DAť^[\%dV"\šEx ȕzz>N>S[Ls8ۘb?|2DهqG^-t:[QIğ9*70|n^W&%mrmK]S$>EMS<ȇ"
'y](ԟhcgB xK1Hi4&q_Kt;Dp
Z%jV	USҭz^*W!Q`FAx?leX&U=]PXe䃷	M0֢^*LvhFd5VNVN:"Euv!\AN.1-pjN/30-=89@HQ9 w9FlEH[-k2VLSM"'OPBmM7voM>|-Yt$;{u#OvlвfzѺ
iiHmėPf<nK.t,#	`%
pLwqSu:Sxy ǦZ\Zwi9}@sǪKUPʊ	<z '$l9hs^ѤdJBjL*^)Bo>45ByHB%cEzO-<E2TuςE}*g<-,T9MVw[̷w7\^嚘_۪I|"OۮIچiđ/kz@F->k%ߝQ2GĞĿQbT8\3$e7X8'$9+qYK;zS`To1	D6"p\-663Qu$,r](nNK\CM)p.WJ$\իW6
O90:`/kazĮ\b)t4! ^N3 iI[N~!$GE~
򵹲N
**]c]0Mw2oW^daga1ER&}u'	C_'I|_ӵQ[iϚէΎT;4`MSƮ.Ź'ur~|>XtY[K?#15Ef~AzQR;ɸTT'amg]gGI'v#oٿ=D9Q)_K?Tj?/'{?}7CT/cD*r+tREr'z#5)/GF6zGa>އQ]r|֫\\Ŧ]cMƙF]#L\it525zn^Wit+?5]v(rFwl=n^Wite2Uds9R#dh8r Ϛ(w{2xvFR͐/CjoRRNFߵgQ@i>hԢ'F PK,  -  PK  C:U            4   org/bouncycastle/operator/jcajce/OperatorUtils.classQ]OA=S>,ER,~ +`!(*	i:l]g7Se
^l"(춉hdf97շ QSU3LO#g6}P9f	ɼrQ)#eŰ
8Pu8d	't4V2+v¥S,%;$5؈a=!&%s)2OR$"Ri=)z8`8cXJ(/x}=`9Z=
ct l?{&`\漂&1QC[*;.Xv=-<p;Gb!E^tcۖX=VkkXˬ;/	U8;N"pR?EZɆxxvQ2eY\PKl     PK
    )D:U               org/bouncycastle/pkcs/PK  C:U            ,   org/bouncycastle/pkcs/MacDataGenerator.classU]sF=2(JR0$CP8:M뺅eEQHi]oC_ڙb2&U!rtvsw׮x8)\Pp$;^⺂xvVT֊rfNln4ȺpT0lbα<;
{Ö3-3V'H]6(W=7 h
A-bJK4["|v;&]v:wZDs7-Nvw-}a6
KW[!ZW)wbS/V%#ou<m#)y.!ۥJ~zЍM~03uULC
Oה|i;Fˑ+2LT41M_BҤ_뎙^{EA^2V)&GN3>fçg1d+^|_wgbTSj蕪_z-jR*Zskx
+1sZgvo9<w~]CF3	ߋC_+E{}zW@1g~dmw!7KCֵpӐ
A5Ns
⊆	0$04h*!ڔk8
7U\DI7*F1UdC(Kbs*rXQ1y	I*&"pnIX$?5U__Yz+K&ӆy3F 1;b%q$6͆i-%jr/%i$o$(DXf˓tRx?B|'6jR#mw`<%
iɪot	iBrj:NqW½6~5,S^l\C3>m$N<PKP0;  ~  PK  C:U            6   org/bouncycastle/pkcs/PKCS10CertificationRequest.classX	\.2L	$v5Y.7DAH-
1a貳%{7j##mZ@^{S(}ofe3#< .q?VُF27M+ht]nsp
Uo73yٿ35b}@]{zzvn(aMk0g&cшzXK#pm[F_w
_@%lX0cd@+#eFDic~0'ls-3`%Q<5bPۣ~ւq-f0bئEIM,̡Q[o,mcٜAL{FD[^բBnDGմnk[lPh51~Wq"ա'ڠn껁v(*/OݶkCˉK*mt1NZdj):hZ}`5՝tl	-}Q#r>Ʊ䀖0-51vO-@AZI
L9̺$AF"Ԡ=V,An:S)8D[gI-mϢQۢQ}P6YIh9N.ӈٺ5aiaW&s99hF_2$m#v
Q[c䀥.!-:`ZCT\ݍ>bB`].llh6֚ͨ<n m*>3uha.2lct}at-dTBs#p|},p%܎TDʖ(ё6m
#Ԇ(rmPW=O{J;fխ71oeNϏ4dæ)iVdVͯ,ל	5+H$bݫgD6r>xDIl3SQk1/$n4ҳtsA2C4MueIl*MbDK\"qDD/BEm/R]CSbDK$vKtb6<;Yn7mi25k*4WnBOgOS<okBmg+d̜>Ii/ĢS|xP1<Z55+TL(;2U쌸Pyĳ 
WJ؅PXwQ3uN&ɍ%dpngo[sJPnʹÛFR[dMsBy:M>_iؚ<({X!)̷.Ej=}!3-P2OX݈-P:s"ɫ4μ[Tvܾ =ub+ey4j*TTRJ\ETeX
E*M(Wq!ùPUT31\E*cBE^
Ra^a)^òUGT:zAAr%ޤb-ެbޢb=CooSq5ZޡbީKxzܬlܢ"؇3QV0|Cf#*^0>$hWACą	:>`72|[
nVgS0
bca;
L3A|A*pq{0W$C_e$`(g%/3|Ea<&&<Z]00p77qwcߧtZ-'(%
(QѓO%bnv}5$o}qSOwB,:Q;΋iL)6#_N't־}֜6:T!KX31hDU!	q/\7{*<{䝴^1CQH~&E鈫H	)Ba9̱I埶yFO_=xr'wBz{Uz{1op*%ĤdY|i>\:ͱ"Qr7f3mZ
KmY&ʻ8%k*֮MOyn<
>!k|e׋tlX{),uԥ-Mc*ⷝ-*ocj|)\Qߔ(GS,[]5|J 9+xH"t>(ig{|MQ>)J}8o]EI
3)(@p8I;?q @I	9%*KphҹaF-=NH$
}^P%܋K2y=}ޚ͝ٻ;4{&K{?)D(n緥)_Jo 6ߧ𻣐1x=[ζ6x0<ɰ)?o2Zb"a\ӈd㤱\
n&c3(tH	Uj;POtw=%İDL$)4eBb8$JIt!oBs]my>[}:px8MM'%3ǝ0Rfq84x< PKЅ	  r  PK  C:U            =   org/bouncycastle/pkcs/PKCS10CertificationRequestBuilder.classWWW	(qAmVk`n
EĢv8fb2A*t۽v!)9ڟGڿG{$@$B{<]k_8P@K9S	E4o,n(rU4	(v41qAnV kY7fiNmi x'@&ⓒk%e%1=DMbG̾9U-bXi8#ڙQ=h(V,BՐeRBdiYPѭ>`}-"p%:٧X>#j)J2:uĬp[Q>œJ]zu l
pQ,-9*:ZT-̡4&#BZP	-2OKtTr|Dvt#Ӧ|,=F"p%io*EĔj+HkuXUVH(Q	TzCZ76ݹeSgd]vaj&JKB~jԓt<b͙-֕0[3MgiT=ͦaݹu$mӝuC>_Xt6
SF!tlˬ7c2h,u˜JY/MNkEq"6KDj5"jElQ'^f趙[VW9FЮh$W[nǟ3󲤳UՖmU1/"/uͦ7S<T~eZ@IsrJUmǕ\9>cmU9nԀh873>	ޚK4!mYPX
Y|ml
Yрl14-ߞ/GM;]z<_&+:aNdM
@ݢyw>9{;|̷2^1
g/GF,qɸm2	dT0(vUp0DhBE蔱2K
ywDw,ͻd,G@Rce_b<ǇdTB]&Ii	0g%4 $aO
FK΋G%41	OJh	-h#1<.O0<}8'a?SEË*=0b Qc>K~Ӈ.֒?p1*cT&Zoz Nl
$	9qwWq:2^3h!HڛZBdʦjVM
.7YNkcIo8>ݱ&;ZyAoyr x劻&GݗlO?H"M%e[<˦nhl5;O5PDK&d eVfZچZK\tѽ1)P5% Dķ??Iv~G8|j&HǗNoOtWQeQ:OxnSGlz?r5j<kx)	_$x/R;רKA7;˸Jl"v=V^WPADQIPK]"    PK  C:U            6   org/bouncycastle/pkcs/PKCS12MacCalculatorBuilder.classm=N1M69 r@T@DIu`EjC!l	EFi߯o g8dխ6#EF+
(u|}]Eg.ŇFXdd8u^ڵV~J!":$vvd0r5o2ǻi2}F&3Ett|eN||w_25t
}).AT4`// PKAߵ   P  PK  C:U            >   org/bouncycastle/pkcs/PKCS12MacCalculatorBuilderProvider.classA0Da1tU1hX)+FO)kkBj.<2Kf}`1@pO`TaTXThi5{2t^qz2G]vJfd*V+njJnskzxߛ@XLWt_nےk/ϒt/L#C		PKqT      PK  C:U            (   org/bouncycastle/pkcs/PKCS12PfxPdu.classWwUMtX-(
A!M BhD[ntLfd}}Ժ%ժ9ǣ;3mb@OO}߽{{o?_`#~m&iBPk=.DChƹ#C"b4nM&n &u۲SA+g&$լchQ5kf&јe:a4LF3`N7mIZfQMOOku(fVC"[=B4GBa,[wFd9g$kdK[+YoLZCwI|9:eh_dd=jқNq-mWh٬<ûhIQZ_P?lzDͺt٣9v^g
ta5[Ѥa$,qj1Cfcah)S4tv)ᨎVWdxpzQplLur.5ΤUg$کUcزPpBд=`ֲR2;I8r)u$vw-(aEu^uG?LQ\^47+OzZsS ^Kիjj`Y-𨄵	m>*s)-|ӥ۸T3-22
c׶n5ǫ4
ãCJ"TaX?eQ3Q

3@V`cUعIXŶ$gt,W+Ig;8yʹ	X%hD
D	 pFM\(Y`@@V	Z(ŋϖPkGⅡr)_ً*r?cδJVTcޘbBSiԻXeL
P:
W5^f^m?.O#/mK8skĩ؆+VJT*^'Tۓ\\oiȚJ5^&\3U/
nղ{}ՒPlO0R<35HlSG[gZ8lW}CբX*=Y5)؆+Pp1C3,G3 ah, +Xt04]L\`Wp6TaP|$,ĐV0)`tဂTp́Ž!a3d8<{q.!cå;q8nqw2<%r-2v}؍{ыne	W6WĕA^2OM0<}d?7c^4F_N=Φ5O	K[dg9PqǺ'?xc[<^&7#p%5&/!
u;v\'H$}YD-x=/}
7=߅>gV82|QJ
7djKy|Ǉx7wA7޷Sm)w_Cꥑy?c륣z]L`v/\K_gu<8@)͹IKpWZv+uGN<1r"wg#υ<5#H,Q<~v0~CmŁÓm
7Kqxa_OYg^v/+lmp3Xi W`@v$%?鲘>Q4ߏl;2W]/~Z&·y|6VVtŔUq)ΟO'?PKrKk    PK  C:U            /   org/bouncycastle/pkcs/PKCS12PfxPduBuilder.classW[wU ZVҴ%P	"MZ06T4t2
0	PT#eւ?p$i3A|ș}N/眙~޾Do_"$MԽ?j["L8%hWLEJ&t55[f5PB:CO1iKq\SM#'#ZN15K4J!OD"Y3-IDϛVy%E5s?m#щ5ӆN\ՌѹSH@R̥TS҈@K猂.Jh~%bCe.nnigEp3h|XT55^%S=
0KgH̓nUJo2	<l&#0T8
l9UIri-l q];Zt/=5αg*o:jЂrʂSي;`ffwo|}.xړϡaZpbۋUBYI@4N
)c׮0
k#jr@0nZy{LG΅[sza-CÃ<1<̰aFGa3z3x|'[>>MwM}.r˳'syz[GU\:kX[`l >o"L7C|}_xK#&=omނU{̍8
b9smOMh;mm[[.bCLil6}a['u? v n;kЊbw0Z=g!Fwۇ<_tlƨs߉|/;਌嘔BUh(c
dJL󵨌>0#cOȐqOc|:˥'e,q.=ŇeFK'd2$<׉G1׉P$c^.^[Cg%NI؃$CZ(V|)!(Hx	8'aI	!negpD4Kxr.w1L'H/޽Z<f*)%;l"]U@/<$IxfNWK2F%,N<CkwE'I#2y	q+%]+,_O$;|bNU2,JI酪R\n#v7.q߫ph|7F|M[X0":7mU7zMi`!N>`/]u#qX|/oRʃF86MEa=j.0#X*_N(`o
ʈPwǋ".{\EH".y\%|qHRKCw>	0?8<	2=Oy0+ЅuCvߦi%	!FM_vނ!Ȱ1PK#Վ    PK  C:U            )   org/bouncycastle/pkcs/PKCS12SafeBag.classVkSe~ ۅriQR(fZ(
J$PlYh`IfM^~'?RƎ~uƟOp&!;d罜\sd_<ܞ3ݞQU!s.0T\MJԵwVd`4Bf)h7RиhĴxTOO*ZNI@͒fī5iݪle3"]VAri/Y4=P<i*q^]ZXTr&Wd]tz8uʺЕR CWuz=*E?1#PTŘf8@X"d6NZ"~jhu/Stdk@WEغbjbB@x0*I%ϼSeQ؟tLWu:r*e'cIJ[o}*)c	=9v-fم6sɝ9V_B3/rHZtܾM;?{ߥ]GQ"a3a]HHfDThq\DD<,-"qBc"ZE&])":uvVd'h
nO81v'mwG)LD;:(}v;|13
xvM݀ysA-1CGHR"cbwge+4܅wTMq\r!f_ɚ6McRMX,BA\!₌*eaD
ɨKF-231S2jpQFC5!1&d$%).3DY0\aecxj*5$.\
aUB4	K5eHH8aM!~,0,2$CR L	%ǊD$c{0寲+4w9#@.4s6i̹Gc%87j2%6^~{?YsF
a)Wxd0f3Ӱ7T-z'\C-<
_ÿ7,S/Ԋ"N8Ij1j;GgnMw óm|,q[NAR-϶M~"yF##lݬϷņ-=J%OΗSș5Hǫuej PKΉ	    PK  C:U            0   org/bouncycastle/pkcs/PKCS12SafeBagBuilder.classV
ST=c*_mZIqi])RĭIMS~/!3vr7v;v$wye	~0O
'r{9dXLOJEaNc.`ܾ)iւ٠p0L5q)$5fWtz>~a+kcMm	5URSUvҚZwM]QVFY)nf|Ul껔b;v\.hi9INuJP+d2B:/V-7t7Jtw?9i*W)G0+!2or[YdvX\g=2ìK&/PO8͚WXכk־-`ѓ:3uxǱAg6w!uUCs=v|:1OxFĸgE\E ⲈE$bB"^񪀩>z?K}F`oG}UoپA!0OǶd#fjY:44ϔ{t̰dCܶ?Jq$y_yStۭHeJDB%K/z_(5QBí5ܠaVhN0|?~p4VB01aoC"kW $8dXaa192,;-s.G7n2 }n"6
[1lb03lHBQt>0%ıp[B_IHAv$2(BBI`O"&J}}P<}]їV瓪NѬ "4$h%={t5([.yNp(G&ݹVJz)u
4lDXc5grK4r֨<EmUҍ|n值D+er:\O&twZ)ڑSY?4o#4/`-m48l!QJ/<|~
[50MB>Hhl!Sj!UT2
ߵsPK3    PK  C:U            0   org/bouncycastle/pkcs/PKCS12SafeBagFactory.classV]WUݓ\mKk-$@
-PI[
K3̄>|ǾZ&,Ywk);ȗԇs{g?BnEIzvQBH,OHhg@Beg+Vwuqs<НPJ[Z6A+|	ݼ3SI:m`	vAw-;mkp=@lr9ItJ8Sqv\iHfrѲ+\wiet?SumK43Or<lay5,S¹
p2rmN\5	s0>'3n|	XsSq)ЀLt%UDt=(
<N@%ԋq65}v*h幭QœfNռmmBNPtE=D6<H2jDkuC/Lm%î;Ma,f8p:ep*{fW{s"]M%FjdiZ;*M7%821jЁuΦMiODHFЪ[.\}ʹh>l9RUJ
b5C宖S?2f[۞> `_DS*l\m|L4	ON\
CEmWpA-)xŘ´ @=p_A;(8ćLICg06LF0+CEJFeD}02bBFy"s|.28Y1oeKadƧ21	NZ~$Ҟr5}cV/zB7E,"&o =%dbEVh߇J_Fiz6pYH q?"F=B8Eϥj}c{0K}E8>s1G4]ҳP	[/_TB(3~@]b(sW4C!GׁrRs_R	*{?jkiw
b?΅hg)¿PKt33  +
  PK  C:U            8   org/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfo.classVmWE~fڴI,65ȫUfݸ`WxTαQ.I I~ȝ{~g6 .|}]ntiy|jڦ6PvV`Va[uqw"{^һ:'RQNx
Tsd,t씕s\+J](yk+81z|F!KX9:<a:3+CN,n3/gxѫuܻ5nƲD[)7W^ZaƢL;.VVskq"REDs\b)ơAAY"x"<NEϛy@IO4GbbUoQ:NAs܄_`BJbBW]n?bafme*~kԙ	4JiA	&HcVnQȱ#f6eY
yJWr]4Vͷ-TToL`C1->b@;w<\|
nɯ݇$|Zx;3[!/.z~Kx8hɱǉ˓e6wLH
6*kX>_Yu(׃w%x~YS
+I/[
Iv5"nLk
5J҉
㱆xIT$s
LU<p
_h`HIAZCf$Ѓ/[
*bXRdDQ̫xeIU$bI[I^*ZNŔ$؃	3@;U}]󸱿rxpLҟ m2muQZ:yh0`LmF[7c16i9/24T'1WW+U3Ķq
tn'~~T_2!ҕjc?;N	1ݱxf )48@"Sc\mȞ"i":$TUkb8js!vx.x^n	}?.F
XH:Y-wy/rwAet$PK/n  
  PK  C:U            ?   org/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfoBuilder.classTiSP=iXdS,K  K3>BI_+V~G9W,ӂ~9۹9ݛn
g;qN\-Kce
a4
q0wL7Çsuh΋Igץ2v?Ūu=K|8Hf#]{*%֪\j '$o r-<n0nz(ŋ|rk9aCibq
''mg
{[sĮ7ôe[p̢iu#L}31bNKt}!\&׫'zb{':.7 ܿar
:t*RpCA
3D7:b}),'8MTW2CZFoi9&j罴p0:YX#ب#k}4}
ihI-	ᗉJx
!i5hh چQ)%Lcwe"9Øb3*f'o
C;}{gmNQ 0Pny}ѳ-Dkj9JH"ѯX<iX$OD2bѱcxK<^
FRSc`+a2ڬ`(XI-9YI[PK    PK  C:U            )   org/bouncycastle/pkcs/PKCSException.classuJ@5MҟZE7Mf&҅P~:1fJ}+Xuqg΅yx}p>!8M^|%&43]_rFIQHgun
aߖڹQ%bv*qq>aui#q]&`H4֢$BDm$4R{N'fb&tx5`I^K>Vж+sUw4'>PKLJ?   t  PK  C:U            +   org/bouncycastle/pkcs/PKCSIOException.classuJ1OL*ҵ3
ٸkq3JictHL[)(/Buq'|B?>!bQ+f\+wnŽӋGN[ðo')jW*>5<'+\Fa))MeĬT#+Ut045h:MfV16"l24r{GNDgE* С٢׀܀v';xG/;|C}<h/󾧁0{EPK+   v  PK  C:U            %   org/bouncycastle/pkcs/PKCSUtils.class}WHƟiKԢBWhQ7EdU*E CB4&=ԳGϰA]qnBU{_O{d>||/AI3$rbEخ-2oxiAR12CṂn0en`RԹ#tOb~`P|
vyuClOZ6t1
KшFU3csZv"wrQOs9ܵwtyìse}W3dٵ'!{ubO҅o֍\KPM`cWd/el [],w,ϗ5?2xyU4x S["ihj˦+um/|{HhsSzX=L96UldRx2(!ͮ+8
~TpJi?)PЩ gKue8_jq}_ڏRQrͯ0k%G*Z{qWu1\T@TCÄppF8&? Hb@Y6"K*.8a,' L~Kn+FTݸFna0F4
-EP"24Oxe:a<{n9&2q<N(!r-RU^)xDwo޾+oPn_Ar-n5لwÿÙ7YYea!eXyA{0`=PXdza1^/whR=en_HQPK2Y2    PK
    )D:U               org/bouncycastle/pkcs/bc/PK  C:U            ;   org/bouncycastle/pkcs/bc/BcPKCS10CertificationRequest.classRmOA~孾Sė
UQc(Ąi]A;+R$e-	m5&73|+y,bv_3o|>xɠ0 ZÄT*Ti*]YK@er2yE28l$/Ť#J2Co}!#7UTVDղTx0	DMXW'T-ҡhNM-ѮB1-Hm_pJKd:CNoUޒS!._hDDV:<Ag-Y80N1[q;5L.xڡqbo1I6LLjo_ޭ*V~e"Lͷ*KU(I*zeL~\t0ly\2l\qЋ	anucn3mc361e-cnH!c\BX:f,j.vyi$ez7
@_f s澛-*#kJćLNfengd?"uѭ:<ޡD7ЀE
e_-PKV^    PK  C:U            B   org/bouncycastle/pkcs/bc/BcPKCS10CertificationRequestBuilder.classJ1OlX+.ܹ*EEETX(LJddX>%qrɅ$;77.V	
uKsDε`Ft#g(D+y[-JCTuq2"0RJRGE>9+(q`ti)F`
xH;fZi
m@rM#n_hz6p?r-7&XWhRWI:g}/:lV3?_'`y!=cFN'еݨW\S(ژY,䛪/bY:8f%Y!`om<c	ˏcU)DgPKà=    PK  C:U            ;   org/bouncycastle/pkcs/bc/BcPKCS12MacCalculatorBuilder.classUksF=KQB@3Pb+&Sq8<2F nPm+3Q*
m!?ܻ==k
l(d(>VЛ,Gٌw(7BTV0܆8Kp~tx@zqmZg/3\2Sv<
}t
IM>k/8vmW00^ozw9.J9ֹVȭ&1jrטgǷEqGPE?hucX,.7X卅Z
b>{LzaR]-WY^o4r
voln/ĳ>,#rC=fQ-%SQMv}#4 +2WT\W1bD)UQ/UUqNyU:yJ
Z5 !f: :JaJd'x#A3%g{	+c&?Py=awtY.oOq#$14O%.bJI4N0EC/4[z4h2iH|
Wq+,;np[;i\i\G!	e(1)Y,|@o{~&bmK^J~uIQD(^<	P>br.&6^kZA$e.MƲ>܃*z%}O-1|3GEYKΫ0|,cil\^#wI\m1/B
V$
Rb|#G6VWQӧ PKȅ\O    PK  C:U            E   org/bouncycastle/pkcs/bc/BcPKCS12MacCalculatorBuilderProvider$1.classUR@ 
*J)\TNX3m`H:I`࡜QGu϶Mff7gww.ߞw X``7mӟd,,*7y]DBv۴r͆+/▱mqqH^3VqMcsf^x'})SOmro	_Ctpv^_n
̷;n^:۶gpϷ=;ϥ-o[C<xՅZrpu6]AwGz`Ce  \r$$5cw
QC8*kFU1sKLO>+CB&!ESw%C-7-b0ZvyV)hPpQAK
4+
CE0Fh,A!P@c=!ng֖ipr<k	8ST꧂Qu* v\{!X%ASV-y²	:YES)y2WatW=;'rNΛYp/yw*
fz5Tᶆp]"`qWC-aq
4T_Jj:uDRv*aH
<Pъaٍz!CukHr</	áwU=~42-ܔ=Ox䠓3D$	A/ΓJic2޷>@~#F
ŗgbz$osr#=D}BZ5iV#7s@7<2HP<):OIRI_PKF
    PK  C:U            C   org/bouncycastle/pkcs/bc/BcPKCS12MacCalculatorBuilderProvider.classSJ1=mVޞ!mQP]_DEA|LqݺV*(?Z@̄syy}|y)кx&8R.J%ssDȮ	ruvͨꂫ0ri-l36.Irȸ|YF;MW^5Nw_[/
0	7!"|*AeOwCr&2Y)m
#/sD{^iM}/A$1AD\L01i"): "}&XP,&|TYUUPhZmL[ ?8wgVRkHZȷsZ0۩PK:B[r    PK  C:U            K   org/bouncycastle/pkcs/bc/BcPKCS12PBEInputDecryptorProviderBuilder$1$1.classTOP=o*@OEԩv",`$Pڦ}+M I ~(}kIMݻ瞞}7 KxΐTrn5[!gʹCfsU*ojwNp![&h}i5Guہoraum[ǵ#bufHhǚjivC}wubYslk~`qUn
nsOW/x翾1J7jM]R;nHvHMS֡{÷j=}uOW+zR9ǦJ˴dK"xgXZ\wR"isYq&KHI.A0$aX4CqK%rqEUjjwJW3nPOF=ZwzA<e[^Vrפ%LA{i\.M^鵪?UtxII_W2Jm12nQHCBxrO AXR Rb
S(0UH-'oxtPujѕ>!i$i! K::g~I'SNQNQ/?D=Jϟ)
_(<-j$;tɝΰ|ĝ6'΃9vU>Kgxbx9GX8ڙĂ'PK{ͤ  S  PK  C:U            I   org/bouncycastle/pkcs/bc/BcPKCS12PBEInputDecryptorProviderBuilder$1.classUkO`~
*DE/S6膀 ʄ%D/]JJM,QӍaHXKq,sUCn߆APT9N(sh˗uCЫLq)\f;P`.h(XwjjڰuAj,&ɝ$gMUL.Fxpn)d(fAzb*XvA[eSW58fB*m[ct
E0Mħ03]}Sg6:/TR4M7˛&%W+xUbZ5Kewmg3&WzMcC4F(!g))W79nQ)UPIqqG<nɣ-JuQ&)p=Nu0RkZ7Hz:3Io&ryZ
bݳdEӊh<)]fe&݂^`Kkޗ59Y{&%.H^4ěj6{k:ͶMD"n?|"с"≈v1,
zFD $~<pO=2. bZCLy->ttC]enѢ/5Mf!p`Ћ NAG??IwG19Wx+\\ڈ'GHUr|/<=r
bGH<St Awh/UPD$^CoP{k7PK  Z  PK  C:U            G   org/bouncycastle/pkcs/bc/BcPKCS12PBEInputDecryptorProviderBuilder.classRJ@=c[Scj-]t1`(XqNZIEJA)X(n(w̜
y}{~5DaatpAJKCq[:nC!״ol޲?7+w<q'l$];^y?}uvl7kՃ#	@&ȠEg|YèMCZCnC90vJ2)lv
yS2
0a`,*٨L3:ƣb`VGsIw$qy2ZRRa :ȤF]3Z+tZ@:0{b fdc#ff	$r C,v|Arir1}_ e>b>XHggPKXX  P  PK  C:U            B   org/bouncycastle/pkcs/bc/BcPKCS12PBEOutputEncryptorBuilder$1.classUmOP~Tj)NtQC@!}Vڥ+M$#Qv(@t99<{?}0C8fY5uݭ^zvWu߷PDUӸDSԟM۴*g/pw(XKynm
@[MN-W=j!ry'w5aƲrΪZUSi|jYn~@eגZ#_df%ry{qĐle[rF/7h*d߫[ QXi5Giՙ+X)^ћchu*tr]69$]	p_=?Jl7K泱xxnkU	5֤Bb&}ejcVYlOs)kʫ9zI5q{FSN
vF޴(r+CnbXq0~w'1.`G iO%t%HtbS2-I1Y!aD⹷3e<216,G7[hMnwƠw0A0p$HK_G?^671u)S,$jXЉ:zd9_tu5|I<╂dCSe
kH$s;yF$ΰZË4
?Q&_PK0F  >  PK  C:U            @   org/bouncycastle/pkcs/bc/BcPKCS12PBEOutputEncryptorBuilder.classUSd
!ls:6+iɜnA/ueCI/y
yggwI3DH&*<y~_+rH(H?+H>H
k{
h̲xLLOO2̜.ls&xn>~ln7x HnvE񬝪)SMx&l-z-Fٷt0kܢp)VU)G̭{ɰ_Y#?֞pnlXYyXoW
0Kg-)<>*s{ufuy!՜K7Yn^6w+=M?I2;n[̂uPzK4[9=i<ߍ'
n&?#k,SqVy器]喝b\%W? ?Zu
{>ss'|:_z!KSM_'9yq)SrgFc
:}L75{Kw稑Ѝx%C;@9ힽq}A?CWV7gDt\U(u\FZ0tCGFqRJxY)MK$3:aǒܕI>dVpG>p4|9Ik&?\dY4Ls
7Q[Zv]<SYe
Vs8AA 3y'9Ur*/T+A<ǤO|dz~|$n&!)1BFFdzL+|ƒkcq+rqR#!7@JQJ]\!_Q=jhU.g񰋫YR;XY#ezٔRSXbre:=%TQ1&Fp;뼟ՈO:PK]  	  PK  C:U            /   org/bouncycastle/pkcs/bc/PKCS12PBEUtils$1.classkOA)uUA#hRo B+`	^bݎeumv?L40b(i+
h9;=̙W WДL}OV2ɕLNL+&:%;^aa<bdڝۂ/NuAȠY׷=^)]+r_\NH3
CzYvpc.bYP5Kld-sG0a*뾳ؑeG~z=6rӪtb_nE`C=j
5.xՆFn`^jNdSSNcr%ҺZ؞O_PSVfp=^/DEģZ2U5Ca8\-bMq
'4k8CCSk8 ])nJOᕼ_ޏ-Q]T^m.*5Q:&AcV2(v׉ʕB%Ξ!`g|'(+ok/jEWIxy-_ŻjcH*C~;΢i8~g4p@3bt
h8d0L7 ͠4Z1Ҋ^4Wu50"nƸK溎҉I{6(X
9vK֣S#}tbokbjIjIji&
9DfXD'1sspS&ML|19j9ɣWS#}61di[ۘQGԘzȋQ)-~iKoisOj*}=O-䈞۸Wc'G'O'W PK䌘  I  PK  C:U            -   org/bouncycastle/pkcs/bc/PKCS12PBEUtils.classW	WWHAŭMk]Հ`ւ%%B
bZ:$02Ld}WljU
дJ$OO	!!IS;~{	FUr]n6gӳ1mśmN
ۚ=6%=C!EiP% H7U')>iS" 3X-Q4LSPD`z-Hv;{(h$,
2E" G8it[aJ	 >a&l#aqG
̆H`yrVbRy^hnt(Zq1`Eʠ=j*ϠY',,(t=_dV)3TդDv(,LĔ䤽~kbemDE(tbȯD
^n*%9%n4SH#o<}xrY˭V	pce|ƃ,`U|DfRc6YX3wyj&q|ۤI|
%˿D?=	GVm֛ڙ$;"L̕ߙI2零n:)OG5x7Xadwөeqͣ<4
C5Mnՠ2ݡFӸKQY[s0'^Fct,(3Z˲ޯ+-"U uA[{E,BJ7X%b[DQ.B:"DAD(6C&wQ'`^KFKFʖko`D_dc2,vLu{}Fʽ?w&Ǚ֯i(s61,=(,yEՠe^jv[5UIJɜ;;gyFol}זT{Lc'mmôM9V}y8<8ps].qk*!g;X)%p(l],\W:kȘNq-pzP &%(E2MReHe4" cC	ze\dU2[e MFd,@ㅸ5,c!RDb%h#Cp !K؊%lÓ/sN!OsxEB;Ё8<mpx=$݇7%tr8"JH؇$Uqx]B7> ^s`vE/́O]3>?}ەa
D? )紋$I|<YLQ;Ieig @4/Ei? 3I&Z$ɔFp`,d&g1Ic8A)IH;Gq4*Iy4exҼ\(>\7:(i
ʰ-JWQ"^
e.$C"=["GQF*8K_yE+%;v-;+*Qx>R&':"sR6GTE3Uf06.u4*a,r'/KNߏ;}jsQp_:+.8UWH픫/.D$}yRI|TciW
|2ߙ8^Lͱ,Y39E3㗂ɤLAK[U0k^ePK)Ƹ    PK
    )D:U               org/bouncycastle/pkcs/jcajce/PK  C:U            @   org/bouncycastle/pkcs/jcajce/JcaPKCS10CertificationRequest.classVi{U~0Zւh$e҅t**NgniLLj~QG<O~?);ƤT<əs}s=ܹ_~pD1%MlMBS,~UB(/9v_#zִLp4
H^2r2$5˲iќc/wQ	[tk.!Mwm(;D
ۆietԣ\̒9ʭ2T¦C'=őd_6c;;{KLË)fqZ	ebٝ4L5eشYqӸi5	[M5m5usi[OϚլv/֝kM3k_<pQMYZ4h*j1	<T;5aleU>'T|UAiة~OOXS5갖u,%Y	5OKNF^Ե媖վD%)[9cusz^HeE
XQ!E7`{"Ĝ鼜A>|Zl-n%vK-~tw
pGlVD\<OG4L"둛rN^.s~'n!㓰ٵEQ+n^v1<°Qgp 18C0*CCc|J?KzxBz[,>BzxW핓6vzQ}oHTEb=4I~b6<:ῴꢔu&^op$zu&*p76^[ZKcK.6t@
aL+8.nL(VLh;pIN!BƤO+؆"ψU`+YqCA;Sp7[Џ\ւQ(.$d+Whg1+<fd\-DAF221.-cH@-y#6[BX2ۈ@NhfT֚v5}~\]o3#9@{y%//iM4%:YbCSK'h uO_/DS?ꓶ%:K4xxG&PSGKܭ^j.\.,m&\l&J|l(xGIJxg|ߡ'ŊqfN'y9\kwr=WWjN-|W(%B b-缧Mi;@&}kbedSCԗO
UfY F87p~g"	"h!P$>q"},߅
%s_j^PK 0(  }  PK  C:U            G   org/bouncycastle/pkcs/jcajce/JcaPKCS10CertificationRequestBuilder.classR]/A=CY?#ɴ	H<!i:5fٝY^(~%4<hINsϽs澾= XA(?KK%]z[q 
a(_3p2xRi.;2|5rbw+=1&I5s\Hnx3_;2_%
Qk(ȗ_wԹK#49J&2\rM |Sfg%..grXhnaӂM6'I*@T46!kP"=/o`62Ǐ#h Q°nhaiϘ,z]uo
Y9{0EP#&?U`_
8[F0VO8PKg~  e  PK  C:U            :   org/bouncycastle/pkcs/jcajce/JcaPKCS12SafeBagBuilder.classT[S@*)i " \mEq#Ӳ,5dҗeFQiZLٳoe	`	 :'X7-8:"aԲl/-f0gz|5Lbu*#P3q1$m+Q.iF}YzJ
6w<Ӷ2FsM+/#+y
y*EHbTuL4<RE݌qh,Vd4Aւᜰ|ֱM0{&8K`o'^XLc'_Rs\,[F=Rd!.
zVpGA>z$u1kz꺦4}uY}䜞jؾC:ѳzcU"6v/0W!߬f9y߀!?wub;ܥ{)-:spވ[C mhנ"a@ JH-LєNLKkPs1bQ=̩Ƭ,ebA*X<	aLN\i<AWڣd:p`\G! &І-a
&tg4vD/U]
N4֣%ckc<(Y/)a5VP%ʈA1 I*ª`BJƾ9ϔWըk26+8PK^m  O  PK  C:U            I   org/bouncycastle/pkcs/jcajce/JcaPKCS8EncryptedPrivateKeyInfoBuilder.classQJ@=7FXRQhpQ[PܸNƐLJ2)\X~8V
^/9}y}zpuBnZq}Bpbϔ"\ӴUge]Ɉkّ!RJB$gþ(6#~:աٜWC-V"߹੐\	TlLۨ۰m_g5kߝ1SpU.zCȃ8Xrb,Bl3w#L\3ݦ-;X%<`+wc$ PKL<G    PK  C:U            ?   org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorBuilder$1.classUWViݪhW)]BIR|mgm=}i`s{_^+ ST1
x9`prq.|?JQ#sԸyԘ@nUj]f+`ޮl	
KxGwd,̸ԃzP<vYէمbFp.
[93m̕ʖA{{kۍ{Tk8z5Ǚd6wof.fVvc`ӘKb+bˍ./Sf%:8´.Avw3	Gx?hyݖf\;\PAOd\ȸgV
'sfǶeȡø*.Q1bL*U|#Dŧ
.ޜ[
gm/>HDv.9;<Z5:Öoo\zlէl>߫4e(I;|l
?%x<;I:p ",Egi;$m?配브Iㆎ(LK)(:4%Dq76%aZ0ftk1+pK9C5|'a~Iܑ𭄬+iw5Đp+&@E
q|:$$,KXP
×X[9G"݀4[NmY.ݒzޡ%g3>e&@$y$)PRt?]F%$c=Zbr
O%i<i@(6qR5+%xӨ,:d@r˨4#OtqzsX)kd
IK<9`ڌ+d6/%^_5sއ
~*}H!_PKmicc  	  PK  C:U            =   org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorBuilder.classX	XWV,
iX"eL-b]E+EZِ}}$H[6ܦ}iqnzIgvWBVB}3yޛ7u
*7P,_@Q]`VpH	(n?Dv{.un >ں!KٸiZYFr$fLVs[0'YQU-_<d+le+%J4ôD(LTi(s@#i&Ո&k#J"lta-F{72fX9H7]Tf_("		;XiN{4=hZ*%V%VieJP"J{
ܧĔ1fI(adTGy1უczNj,fZu:|+Y#'3i+⪤tcNh]t<t>QaEzU-C*{il0b!=%[kjNrmGH^565"^pV_fʯ6D!Ӣ*Tƍ	CDbAAPּJ\oz[ÚnFBjgrg׾D8,y\
o?П_=ƽ7̞v_KY 
pHc-eoERCG5Μ#@SB69aNR]Ӿ3\O>Kprb#!}|"QXz=YE6U̎;|AeݼkI뢒QVa[W;
uCVҕ /yQlt-kF*Ml}|rK1nS:ۈXMROPX5"R-]Z5ʭ""bm"hq>"Dtx""v-b"LDSmиg}W۝y4ޑϞeyI]߳:<<gL1Fb9\:^ՙHW91vjdk&_7#ӡuss2<~QLzkf(-u<a:L5{͵@]2ݟ3WD<E~S癦~49j"5gQMo
.76r\r_ȫNE?mN
m.q1s<QRsשE|
7hŞ¬+<P#ܨ']c
's~(،R;p edexZZ3l` E2b2nQΰaCC%CC5704%2Kea7d4XF;Jd<
/Q|7^.xU26<
xu"A7X;d;e\wx
ͶXʨX#8;Kqw0|+O2|J12|3|8	I)w1L1y{$a'Aߓ0 !{0J¸W~"afMo1XBߕp#+|]BգDL~.&|1Ge8/2LRÈ9dk1_X? Q iUᲡS.e-ٲ2
..&S^o]\Ŧ6f[%լ)oTfFW@EX@R4:GSB՝̹QD͓?=Sq %O$y*k1a<$.yOSia.zVM鰯.9mH
"$Yܧbb?9B
l4EX~^yy >l<Ӑxsa%&t&9Mq>Cx.>Dx8Cć2Ux\LAI<|\@
qJpZXBΠ3'qVyxWnN~>ގ&_H
.XZiQ*	ZBo
^J	rR֢ƚ$ĀSB)Fʕ(Hߍ)^Zv_a%-y%C'
." P"
7݈YId1en&
/[a/w~(=\[/ph"'ib^H)DEJ(;?Xo#GK}Z2%H''KR~m*ߘ_ZqNX򝰮 PKAc,    PK  C:U            G   org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorProviderBuilder$1.classUmOA~V!QJy_*b[Q
M0&hnrpջ-ѿP`$(lQDۢDtnwngfg|	8Zq)69&ɅaؗH$*[y!bHݒ8jy3^'$C;<kRɀ\"Ni>Kg+|.JBaE
A.O<Ty%|rd(=<sd_߸*B{;F52EMe9]\F껼fdX_W~`/|_dɕ{/,hc|f:EjE>םuƩɊ+BHtӞSt!}tˁT(Q˨h>]"ZࡤFRݓnYmQ@C:t8lbJQ6K0bs?yQWJK؃̴'"/FC;>8kreji5=!Ӕt$1G-Lg5߮TQ1k3fZ帄	d)Fhw 7S&IB.X8>M8E&.YhEĴnAĵfXF"3HFЋQ'1f8ń״4q7~.t\?j٧aV֌ 0m_T\xwK΁uvL3xM"}Z֘ohYo[
_}=KG&?o!Dd6q'S0{C6_ʺ1GfRlu}בH[
oPKy    PK  C:U            E   org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorProviderBuilder.classSjA=cnMm4~UuTR5 &1nwno, >xgԖ@ܹss?O 2̸0\u^3仉ztQ18~=Ń;"fQI ױ@^ۑx]w|<Hy?YBc"~OFg9O8	nJ$a4i³)
y-Q¬<NPq>8y,H"?>:Izk7SMPww s1;oLScZ<.q	̘+TVVl,`FɘEܴ2n3ZaO2_Zk-5։@?钗O}FV1CԆXb;־)Uվn[4;q9\p,seB9
_ KiTrF
ڴ3 PKC<    PK  C:U            B   org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilder$1.classUR@*\kĴ(*QZ.eak	kI		ΈU|(ǳiF?e;gϗsv aYO1D!ТYLڮN14e[d2IIFv6MovUS|;n
7§8ژu-oSEW5pr[/C{ݢQVX[zoZnQ\סZfWv=#L)sw
̕L>5]>	4M
g/Yd	ӎ:d
oWU|hp*;cCFj%,XJPTZvJ>yu,ܲi3-ٍVi	\RЮಂ+
*PЩK5Wrr;׸5;}2rKW`BN6lT?iL!-`Ha9|y%GοJU_Fןo8"vtX!]?#GjbM-p4܀:b`Ф14K1A}i
khAAR)
-iCOTSw0*z1*1b/H~vw1N{]zdnqI[=Z֥8<D@├,%44q4ѡڣ25Yq4E+7}11c\c֨`#IaHw/xuifR
>B/¨v9
'3,F]R*7BÃWt׍X&W0T&b:ȓR@</PK_7  H  PK  C:U            @   org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilder.classVWW-Kj!*!@
RZ6즻}or{N~̚B8gfޙ37%Є	{@NIhbH:^0Ài5	ad4!<lwwƠ!J;-[dfE:dBŘnH8-2)a)\t(*i
;^<焕apJވRP쮄/\7;dm2חt6bOI8ank!8xȒZ?mN9V4]weML设(Ȼ$(!XV}I8nZ!UC|Khghdws:xxv"kYWwem<~gz^MJo ![dυ[bUBw-L7-mXY˿i7
qpRʱ>o&(ѩrB϶	Y29+8NqG*jSiUFY0Bn>bed-&
:!yyR4BV<Qn餽d+&y&TY[D=h(&qd*ㄌ2N igd<)㬌d񴌰vtY~	;?U^BtT"j!Gd>M1I0̸@{ɹ.+i.U\d
UWV6vToLι2lS)K,˃5tpoy6C;bNR.Jdvgn]%P[>r>(TtĈ
ϩ8"U
-S!c'P_
,U4#n2nbT>_U<,CCk!2,^a*7\@ZE(KA/{a(x:[e<Y(Ppq0\Ǽ(ZyA0܋kpsR:SJ?P-ܘ{u%}X3\8MK\!4D:[)hCF.n<×?1Z@	[GD$"y\5D?ұ"KKqĸ>ݑL_ݩdܽ͸/qr7-b h8yOG~9|RG#_ƽ{kX"
Scu|,7%ѵ<E?`?k<p~1<Q_#:%iҚNg_Iε`i*1	T&e2|KC+z	

6P @ދ*O#PKW^)"    PK  C:U            L   org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilderProvider$1$1.classU{OP]("AAAQ(CPl0%K0$uJo	(@nDqBs> cXavnʴM!-M[9Y95݃agS:X
gG+$q/+CtrvN_	/o{=k!lyqsz)Ʊ=:~4>2W
PP3!t3pu9
.W_pM#jLq(Xr0_EˆȬ6͸ΡI/3PkzRh:V(Zert `Y.?4*P4)YAT}-
0I]}(^P=\(It%ArX:jU,QRٌMuY*#K.b۩jAOWTE`ہg-WWux*z7U<3x
}*:BE+^F"I1uKISQA)
5$#$$U#dxLDm#5)u銥[gڹ5:t
K65>eqzHOFe q
5A)So0i} i5<У
^,bF*bV-bJ1a+de.JkK;!̞!%#["0j %T+qS$/(#zdK;E߰pKDk0LRPK,z  #  PK  C:U            J   org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilderProvider$1.classViWW~WP*uj$.$`
H
t00ę	B~=5{ھwH#ywϻ_q2UͥRoͥ~մMTL.?3KO(hK+PaM$K%a/|ٴh0\}PUt\_\QpfQxϙa}SęJ:j{>
`a}b]8]"H 7m[e8WnqO$(~ν3$9].dtߡ@E=e3/X
w;zm,$}:5	0Oq-N6
йg'|.Yò57'+O͕-+Yit>y PsK+zʜn0X2!ꮧĺ0oZ'
qKX%BSu\N%-{jX-Q2ʖ4,YI!
7vU3p2&|nvѤZR6Dw)fQcp:{[=3c8p$)(i3o02pCOۻ6U,D#ddi"7b}w2>cb#QDN؆ 3LCj]28jK"eh9(7ܘzH?Dgfu'2A]iGvkn3m]l('!%/T4y܌եٽI6Ak/H^M
)څ:#
e֛ܭ^iEsn\_D߬}acHi8
^EDIҮ K/!kx
pSC'2RoRLi؏rp9
*5w%nB=:>T*5$\y̪ CKS6>cIO$T
k(àOHY.0h_tHn_wm-y>74#gQh)hj+=wH
CK?xxϐ?:HA*DFG_\Sekh
ʿG6p0P*=+p6p_=

\/侊60R@Ps@y\`_I:qsT?Pm+(D+ߑ(B*#tz'p`u`Gh[m`w
^gPK&    PK  C:U            H   org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilderProvider.classT{OP]|vF͌?QIHr{)>P&%P!d%MO=='_ xaRdxNAB0,I9[Fە?=xݒrƶ{P0r%Gk,ѪBT{:K
$c,IgW\4+bG~;.;2K'ykS:{

&
t[3?C܈ǳqD'mM+&>O[^|jpm|wV,EΎ9s\=zx>E/lzbex0c3y%a6	pepCE7UL'A-EVQ<C[!y2h<ey"pDLc]u
6GnQ/H.8F^Cx@Pb>i	i\Ǹ	w?hTSL뤚XHTKPKd\  q  PK  C:U            N   org/bouncycastle/pkcs/jcajce/JcePKCSPBEInputDecryptorProviderBuilder$1$1.classTkA}^{IjKZD?$"X1m@Anޱw)JA(P\.% dfv޼70;Ǘo Pc۵3C\DQu}XOyOd^e)4C~tT8wc-}=pU|o 8%sG܍b_8pde=B8Xp}ґ4|ˣ_[\tۻݍ͓y]ȞC铫6N(26
3`8m"hٵI27RMpqh%m* 9Ψ?תeFfGC'U߅n
݋WT,Y9\PEy\p
PE,(᪉y\KuB;	Ҧ~I=q?1XnnKPM:Xhћ/MțOX$Ƙ3X[S"r%Uq3Epl*_M
E摮J~PK#~    PK  C:U            L   org/bouncycastle/pkcs/jcajce/JcePKCSPBEInputDecryptorProviderBuilder$1.classX	XT/2\x<b$*"1a8*BbJHk'o&3,fMcFm.In龦{}oڦ19
,={ν/< u\r1/=+0fr{mN QUȃ9zW.O];T~om!Ks|=mYEu#)$D6XH1BMƺjstz,#/pHAjt+(0L=<A!C
@D`naQ%$`o;dc EDzMkŖfn[16.2{~QXKܚK3uǔ.'8`1Z{MF?h5
;>3Bz#UP]YWAl&;~I orjH/u#(8Axִj#M~m hXЧ
jf
;&֮>C''|Vo4rw~u7{er{8bCF&.Ķ~m;thh<.I=OS#!Cw{|D\CqW>KGhe0\Їt-b1
vj]
wEz.'nôK30s8'';gkS39+Z}5Wې#UBp$*6g թ9C;$dNQhiܰ0LpjYΦ暉eT㫮p#})\ZP]JL$XZi`4I}֧sWG<גK]X	Wr 63qĘ,Cvv#$P0ħ}0pnIܸHkốr6Mk\*~1i)IΛZh
!lͳZ`(bUC]gQKS]ݴͷH2bþ
ՉlhUVxVp\>`Y\bK/~ԗtNm[XIKlBb+%J4H4Jx$$%.!SbDnV6%H$%+q$:$蔸^'J	"+ݹN]ӿq*
{SDV';W9<-,+u7
/*Ko'0!e]S?NlU$4ktTfLhwLmP=#	QI-[AVN1Jf;DjҊdHtH+ϪьeY!z֓P՝㖠yS|jwq,颥5mv&kxצ*)F{v3+F!3)i۟*VRmaR:[*qYi\RRfNqO[:[tmI$<_O\"M3PV:<5cٺ2դ{g~O>$CEe~AmR|KFux]:C7RYEޢ[U\*6"WťSQPŰ
gP
(T3*V*JV3af؀a5G
ܫ2mx'K2[*GZWE-ާ0|PE0QQ2|ɏ''>b|ZE	Sq	N aN1DFN3<0b>ba|!%GZ|90#1<?Pp _Qpc~<ķ 37?
·fxZA|
k
u_1<Ux?a/~FȽ&<𼂛[1|I~#l~J (;
VImw
{
ď.Y0Gk>^37o=nC@0BWQahz^4 "|hB|Qx=PKe q-g!F DX}JT9%QQx^xY8KZYW^{RFŲaeLlϮ_kbiђS"]㸭:38;*61\GEcT,fHIZ]QQ2,vg̻.*<]LԎ91NY/8f-&eZGlgqiњQ-*.j1u:z]seqNTFM16☥
'13;f1bэe*)b^Ca,wb8Ů1"*%QQ<rhYuLw	&؜b8+b=puŮ(!M2
mm6%zgk2&ӭvNQ0b[q1@Ǩ(OsH:Q1oT4?4kgTNP)z=!ک4:0ytBbIK qbqIDXh8ÿ
<gQ"]:QocEX
uj]zW'M_)i۫mMwGd8%PK~)M
    PK  C:U            J   org/bouncycastle/pkcs/jcajce/JcePKCSPBEInputDecryptorProviderBuilder.classVmSW~.E-B[_PLXې.6K۲ƅnlo|"NqƯOdB :ifr{ݗݿ%CwxJu[ezLn-I.2<w݉X,[VPz6+f0PfnnnqKxeuG=/CL7LdahKGKU֩'y5g̳,E)F7eT
J<V<e⋖a?8J<^.*VǕ`Ob7RvLc-|h
6o<ZR4ꕒdK7=F+%C]+$ď$4zu3Ʊi^lTTm!e5\RZ&
͝N3I6BښSVQc3\"ѦAa	%#aD	JxO¨"+G>fLyiQ]nThU[NckǇ8E\A2mդZ@$;JY*zV2;z\oEKteo\tk
]¾щQ_{rA'S;ÏB5Ew(sQp
BQpJtK+BD"@A\I̊k
p]B*>3!dGJBbY%bEeaĢ0dDD]WYw%u9}<N5qȷJ$E%*T`5+פ8s.o.V]dߑE)ď}|ROh<AFd[w+ 7)p_>;M(16@jd\gHD6Tc4D'#ϱ~/330gcfh4_=^NN-η
U%	ЋS4`}ٶ3;lݏ}_x)HMǿPK8  L  PK  C:U            E   org/bouncycastle/pkcs/jcajce/JcePKCSPBEOutputEncryptorBuilder$1.classUNAV"EVle[Z  $5$_nYw-#&V$>e<-hK3gf?<+pd-NF	tSw|$C@48X,W_T&Қ)FAqwY?2\T׳t:	6C'	%XrSU	U1T3lg
\s&,;di\Q3Nfk
Zи[JR/}3To&u+6حo"5}9w6ڕG?Ňn^ѤT#ym3t	Wuˤ	[QuO!ᖄN	A	]nKн)rTp8ln8\Loa"i zK
s*lL:!RXEu8_uo$_<u)7|M=pLu[Aʸn<уawPF6dH㑰d2ZiFd\ zЇ 1 0 qA^0VKHm--񘮛tT]L0t\URԌ1L `0(S><N
;O2%I#Q@tX2f}2'
1]7We<.xFgn7In"4ỷL߱p/90'X:lZ&/ݚ`mc/I
␇?PKR    PK  C:U            C   org/bouncycastle/pkcs/jcajce/JcePKCSPBEOutputEncryptorBuilder.classX|qӯ_+J)Ц@Z^JyHJkH@N7SP!s=܆&`n=6v5M/wϹ{ιo>sbˊ"+XcVYq@VEeN7dWTnȩV\jcNcs 9xW}WֺfGgw(7lo
$/Ic:\-^߲!=-*$ n~[[kAEm=mڎPfGnOf!4\di	jtCFmxַ	}v}G;)yWu&uj~-!Zn!GN
Z- MX
~O]#shHnü7wz8̌+r4hٴV`*wHϧ7I+0;ݾpwq]P]e-
Nrg]fy}=d3ڷⓣeB!yS63q{s;
<ZO	6:>gܝ(Fllۥy#Xpʪ}gBvgOl7/8mr݆D,&BJ`D"JḞz4L]!#:>
(dIK0ǫo:ϯia/N{}5q6kҳ2[noػ"e9cw$3ސǾQDC$d9끝|P
&Kl&7т=z%HFp=CC)shQo}8`-0ٷzp${ea0wx)j[Ċsݔai].f8t4=oHMמHt`ݔ5Z^qhW3dSJrMn)d0Rf~Ls h3tg6[zNR6\-,8ꦔL>!aiz$qPm
&"/}.
W)RnUۄAMklWиJBZ^mK{Ct)E(č4!)
17d>3|hv}d~-ZÁni@iAVR_{A{CZ{i3h/fJfIKK\bDDCbDRQYbDU$WKl"qKb6k%.Cb[M#.ItHtJtIx%vIhXNO__?W%)yHŅ\TmOGVNHf	T%IM:bOHw)>tF{.g
)82V0"e"a>. c:h{X%<DqC+c35s;-e'Yl̔Iy1$GjGKn!%f5,XIEi
r4F+,UѤO2R9%*;zfEhѹ-K#1(Xs]&j3V1XL>2BˤOߑ6*4D.4]}]	y_x~kM<4dZ"ڬb%&#**Jdr)˘,cI7>'U,UL'TL'UgbTQdL3 ySLTQ"&0x&*㘊j&)8S*i1È
DwBT&9)v|qUጊYJ&3yk>bS1_T_RQyLF|{{"}qޏ2e{L&?a19_0O
ށ?(x'^Up+nſUmxY̻Tp^g1NP]wDIl
 1Q~&I
Rx	A-9
I
ao	I<*xW={{Q(Ph0!LP/.Ra]x9L$\K|
g;xV~-C!v{vop=I!|
䡈czouFK٢zKJzK	Bm!#эȢ`-**m1<
(<AbmB6t$Ε&,[UTl;B[Հ(e2IS]eb"qTѓؒ\EdQV,^om(-^|P	#]dլX
ckMDB1N3c mPcu1*ʊ3([t &x5ė3ųu15"֙(g`aY=9}ϷK#bG,tZÐ✈N9OFĥ'N6ˎ!WU1CGU0.k_kj-x,"eC.bżX0X,FD"u[$=bf&lVrR-+΋a0I93qR["bq˙I͏kyX4/"jjb,Ȇ\1w֨XýBDĂ6*VF	+tȐY{_;bl!sb{|bkw
m|Kw丳yjnЗգX6\$\]}U[gϣXmOp+lUE|Fļ✨E{i \8ױuC ^D^.q*NL7I#qo`}TrXiP03PŇduqIJ*,o"$v`b7NZ%?B9Nw3}vRY'Y$"&pA^QjD-t{н¨WUEID\vS7EPbz2&YӳVӕ/%CSae,fN6e,:
Jl%fT:e6h<qx
EUNNn\I*/~lwtuHwiUINi/޸;zlIhB+kկ6*h~j.	:fLNo52'FyPK:c  M!  PK  C:U            +   org/bouncycastle/pkcs/jcajce/JceUtils.classTWV~.E8$*S,Hq,iI	Im%;g9psԟG콷84n'}r~o L"1(㴌!328'cXyo!y ϙ<ɹpuav]Z.굉|AVg{DzFOl'Ƅ}uӯʏ'-Խ[g0=72l7\iJM+bPNwT5>Үa2mZ=nFtxs1Ny&m
^D\2~04pZqYw~2-?=+խeF]d8lnUh"JFl4W]/l1dfmy{oaXyO+U5ڵ
BήFJYcZu'\q-hvϴSdhtr#!'aD¨II.!/6f5Yk
J>^U;7;NAn߬1Iaz)[S_b
cˊۿ_Qw

.>9|pxPPN^bQ],r`4fq/9rrZcC2z(g0ntp(
`9<]vEnSnwU3ڙ0 SZO=}bۿd|;2z1O\87apFs!f^^D@dW(* ~>M
c}Oৰ.$S,5!m;oҷiS:TCZem=
PKL  t  PK
    )D:U               org/bouncycastle/pkix/PK  C:U            (   org/bouncycastle/pkix/PKIXIdentity.classTkOQ=TG+ժZ5)ZS/˲*,dw1lRiS6oj告 )|{9sfןo w|DcU7t{a&˙i9+jQU,;ɪfBh9B@W[{ˤ4sRTs"G
\vKܑLȡ]余Q*h&C/7b4<ȵm'D#A\飦ypC9⚩+B6<ۄGʉ"g#-(k\ekYN-2fSRKn+/d1ê9x4ۛѽr}FԝH@ ~<3UKc%Y}(t԰tjLS;$g+R!͐kCX7bd"4"X}V
\QiK'Saw7nKz?ڸ"0"m"`"D8DrӃQ0&qx!S".cHbڍGx fYpc!nfscnܼ6KѓQ
c쀇wF;oV%u4pt@αtb/?$OHmwWq]xRhm'ųJp?uB\d0A
:h YK&ti%!@	q;ˬXn^9\bюV~IX9+yK7PK^K0    PK  C:U            9   org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$1.classM
0_j5U{CED!{5CAO^S7)485!m!r5(:MTwqR;2siIagp0cİLgyfΑ ď ;;ꉣPKKmF      PK  C:U            =   org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Cache.classSNQ]-L/KX ҘX(Q_<qtD|?|_c}D6龬5id3y>bhϚ.20Bޢ
_]eh3,afܴ^xGl0tu[.K5^iM.CnE_2yeAtMK|EmT<|(Z66U^lz%4HN~^UQSǞ`=TA+7#v9"r`I[9+*s)Q1't*+b)CB-RphF'[<f'y0nM#?hn.]hZHi!(!m8C*0""
EΪŅ 44cQ`<4)p$.eهrUrj޶E#gqtS"Els٠RGFb,!$q)`r)"q2bF>maF-\Ĵ&&&Civԟ8c0 V(XQ.L;?(8SyۘDkʦm̱eZFv{&A\$+foR
~ ƾ#K;SuTm]d	NⴄPK?    PK  C:U            D   org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Properties$1.classR]KQ=լږ 1}X}kܮW׻
҇Ew=e τa)4-\(LG͈>zQ**N{"01 ҌCPFƊPyН B#֡׋S?1MǕ;i/q\BoΩNZ"!ޓ^m`:ܡUiN+aaB¬P:zkT7Rm蹆Lk/ƿ8 r0<*(a<VlJȷ>(N8XOpIid?t=.2uOxqrSfvQq/Xa2aiyb_`9l"QEqfPK>    PK  C:U            D   org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Properties$2.class[K0ZN+C|o@m utJAQ|1p^^IN~s_^`~0'!
[\]A	]m	\;g+/<4aX절{:qjJE}%V|K<7wZ9;gz #˰5W{)v<b'MR*nPluE9uo~9Lq&Z	2L֏Gx38Od¸>,dQDS&1mb3jؠ=^Fvu3l0XRrU
(J52?_M:df%2Θ$H^G̕0Ԩ0эIWFkg,u"2X91b<1XI~jPK]c~    PK  C:U            B   org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Properties.classT[SVd#q @4| 	-1
Ya9LS?#O-/~2Oꐦ)x:D߮g_`$J̸`Z4zQw&kJP3EGkjA&rΜ- >G 	5
[fIQQ6KζVݞ,Kilm[+[JPd}p[]TԂcżX4%5U򶦖-NNfiX1XJn\3fVvt#9؅D'ipЊy  eZY.۪b;,m菓e7򪡫wLqL4u7>}5`uR຀K62JekVR0`iuTv2dex]	;.q-5׬cshD\!SE]"n".,mWtee60=;~DwgN5WՂMlʟsSMj2jva
4w[LSF$R>nWw! 
2Ç2d|$ݸvܒahv#h7H1OBb&>
!)C6s	|9X/aaa1DOl#7p)L3|pZK<rXa5
GQ7EYTV

W(vq\
$xl_;I??#!݇\%뭸"}@Z i$vxi&9~}lwDqm9VgMD	 K7e~ޗ*HD~^YVIW?C:h=lX @|&~tOtx(᫊M</9>'K]$y0׊#Ja-A8FFsTSkJbxڰrz#N))&h9{W}vO'zoW_.R/ǏTa.zDÊ~o%×a)ZQksvoɨ2sv= ks6Sk$ޡd	#C$h.KAP$:LHU
PK0W    PK  C:U            7   org/bouncycastle/pkix/SubjectPublicKeyInfoChecker.classW	x\U_L_B6$-ؐdBȔJM߼wtޛoTE.4t
ʪzΛl431ߗ{r=s{λ p҅fZ\8Ӆ\huͅv.r.<ͅ.v*	;.H8AZH$hMb`LTA5$b!5!}a=jT5"z4"1Ո"߈X<h@HBb`Dh@,,|@'HD
Gª}1!X8!bz@xhL"eDBQ#	q#E}~-Aiq-f5CE(RT$EѐAR15D\QCz$۪hH!,EN-cfM"	u;guރ	5Sl渐~rh{sfY=4'aH;ӋS-L5T$],fZ^1!6j|2mڡb*cj}\VduɁ@_KC^.Z-҂vL_dژ$F岶jf-	";f5r)5a"qfHluZ#JZ=t`ci50y5<Z6ۓ@Zh2XOEAo*CkfejA$B&?)ΠЊ1fᢕ%	͔TӰۉ?Y7Q
'jox~L'u`{^&ȸ3`Z<1L;3C)Q &D`")E
0ջרjNMj"YPu'2V3=tqHqAG*gi\Ǻ/66Wm*ڛ+RbVTΈ.uQMPl9UDQ˼DbE];ZZ!F	+-9݋ݪw$.ST]8I.zUЬzڲ
Uآ2,9ŻobQHW͗/u+	NIRGob:MHضPݗQ+L\w3$EaԄ5"ҦeT
ʆ%N;W*_U恑//0'+&#b~	ѕkԨ%\&5<]WCѐWXTkGi\Q(܄3V>נ[=:YpK%Sev*
~6??fӁe쐱S.2.'cxKe\&_ƀAC2e\.cDFR=zgWv;OCx|饊t[:O;II`f;:ɟYa?ܪ0Vf\Ŧ긠Z`Z;.]W{UvgmglS݋h2j.sUdGGtE5Z!{}´͉%gT5ZP5UX݇ծjV*
%:V˄sa
5oRݵ%
+t}IW_^jcCzl`aB!dp%ոVAB?9	a4*2.@0)1\g㹼<|xm]l
p.^BXVDA'^|LS
`8`+lƫD[p#k^z7(؄7a-oe85x8A`x>Tۃp3{>QO{#w{N>0`g'{p a9yuy8Aw1|<n1၅1a6p59~D6+
ղ=YPU]tԠ6gr(Cz!͚hh<
ettgiܻu߻	wW~R¯7*%v{M+QOGoJv1Vl44H]QgBfCWK]V}ͫw֖Chw-GJáYU,3k(N!;bƗʇCFàc
с~4׼`μ\6 1~H:JڣG(<QNP\we*222R')IR?U2LVmo'nyn/ljxsܪeהW'JNPwC7RӸߞ}3Ɯ~!EpذI066"Htmc Rѯ)k9TǖGo{6)@Y#ْLÍjXGXh|s{~Bk{qAfZ_{٦1׷7rFyUeke^#Qɬ#j.ϟb<oy7}52nnh& u%D]wm+oek/cnm;kt9#Yjl<ouﬄ	7~пiS?- P`FPKpGf	    PK
    )D:U               org/bouncycastle/pkix/jcajce/PK  C:U            5   org/bouncycastle/pkix/jcajce/AnnotatedException.classuN@B"V#-&{117
W쒲Ux+L4$| 860;|d3_ .3ؗJ}bYT%7HLC3f$ʹd3$x.Tw Oue$&|.x,Z)mAAtb!;[Swq{{`⡆nƁKꐡ>ұ6M<)4TkQn57t^@7OH-` 
+:joPKܿ#H    PK  C:U            7   org/bouncycastle/pkix/jcajce/CRLNotFoundException.classmN=KA}Ĝ(zQN9bDTO˞nL4YV?J"07o>>>\`O{kIϭYD+mld]OԸ8C$,Ysc-um6V7.g22G[
J?pt<+i/4id=t`GS[R&kIN/پԉ5zJ+~hY>8]c[/PK   ,  PK  C:U            -   org/bouncycastle/pkix/jcajce/CertStatus.classeQN@=S^c'E74nB~JZCB?2ީ,HŹ=7s3$n#dB]y{v{v!;
QZ9Gr2&Bx@,K7;\
nM?cO84Mq0r*G9ZoXź0>1AWg@
nҝZJqPn6/+]kc)HBˢ}9QZ%O'(
ITA
G4kDH LE.50O4L#DdK#=vWEL[H6^W":oPKmqb  Q  PK  C:U            9   org/bouncycastle/pkix/jcajce/CrlCache$LocalCRLStore.classT[OQR8.ZA@\l%o/lʖul_1QI513^`nt|3̹+9<`hDiM2^Z.,M`Vo%
Ʈjz+<eʋB6NeWЋizZqPLK[r]1[ˢc3tWuTp+Ɏ!`;nNpgZ^y=\~F`	6wbӮ23rd5jV!m	98!G7GG/GG?AoI߅Tϒ7	&9i'ؐDk2Ejp#Ðǿ(ձFF#uVK/!Dì
b]IFU&0.\RьIR4!Q-n.1 -pE79\a3R\	aWC.b`٤í.۶-Q(Gh˚9[xEig=ou*Pp,FHGqɞw3F,ƾ <JXRpG,USHJCIIſSb@}i_Bauo1A=p6%VȫNI󖂧ڧIv K!I4Cֲ;F:c,Wi54 `wPKI    PK  C:U            +   org/bouncycastle/pkix/jcajce/CrlCache.classWG-iN8*%)+Ki*-'l>b;JZkK*QZZܥIP6 $
PrD?fuX$ fv1oE nÍns5ntcH 4 ?NA>)USC\I#'ÇG''QM'#g2I\
%<bX꬚-eL9ӨZL52tӦ頙ՂZR
r&#	KT@VN9ESѲyN,Cg-P#FJ +N(͎z:64pL@;!Q--CDeNoM(Kd&IBqRietU$,UYzGQT-~HkA>%59Mlџ *wVk3~JM*F0~=WT=4l)!/לv[Y=P2<h5wdm.4_@Ģ̪):NɇPfCS8*%(]VSQL"pIXvp4DP/%ʡ}U)n+
ET|F0}m8*OYGtr<l|]
3*}5j(Js59gH5(I]M8bVSnҠ٫߮SO.1Y-M+BB	+:M&-u@,Ke.HrM19+Y|LGVEх	5k'lL\󆮩)I;nK/_'S7nA~2[nc8p;A;}g8720a(ݨXM	H"+]]KwA!߈WNCDbX͔PnfK^.Dk^my+M6lc;Jw쨱RdhS/{S4jU5_=
UJq4JnCo
{E8WjkYthC61åW{MWuk	:K(:.U]$ĸ@0%xaIx5F)	xPa,岄x_UMxzX6G8.S<&asʻ$\wKx#a7phA
1'EL"&~qS|6\|/S\|L>Ň8+$>)"WD܇Ox3*BgDĹy|Vc|oH"4|sH\|I|bObOBZs2IzkQo3-Y˩,ʗ	9J}ψdӴֽ[9M83nɉE?RSR[ß1<I#e?Ҍ3=y<,ǏWDsx&_7a
aqבC~
#1|+MX/]^*~%zE6f^n2<^9Z:ʋγprϝA[O^^䳟g
f<~.~g<.7͘VAefXd~\QL,<N +O8h|LE^q!0XC<x(oBuzVR@~p7þ{ȗ)}Cq4m#_{/jHXSLo+q̖+t0p!p7({]u~}F^'z.af85|:<e0K;Hx+vT[tRg]O{
9y<S,8!əiB/PKjX    PK  C:U            2   org/bouncycastle/pkix/jcajce/JcaPKIXIdentity.classU]SV=/In@lID	
mQLibZ
%}BqD&~c_LL{~JBg6{v]]q~FJ/3tk}u%\/Kga r^8$ܦ4Bl2u1rZƺZe+mL߷
3̲e.2\,Q]yd̹aSH/Y7LײKyn#c1p^QԂMNY')ZCٟLe4dEcew؛-Y	/m7

Q̶#g[)ad0̠h1޹ScH7ۆeima9z27-ۘ3F-統]nPo98I8J#:1q2!a8F8>Hp|1H'|)Ν0/%ͳhX>㨍)n
NpS9?]ߴh:ĕf6j:ј9MV	fR7DGML7:Tshi)vSmh/yzY'@FLA':(\ )D'n	qGAt3a~w㞂^LLeaV5<"#2cN8fdDdX)Y!{q_6KimMp:]IskdM ݧxc;!cޞ{l%j%J3Ps҃vhhjbrK;د0zk{xgVE.;cTtu~H*3fv]Um+>(ANՉK
 ZIUI/#EܮHVtQNmy AjX敽& q"XQ!r&iV
PK
    PK  C:U            .   org/bouncycastle/pkix/jcajce/PKIXCRLUtil.classV[WW&dmjre(*bK@+Z}K_{/AZվп?Ѻw`9'^Kdt}/.1t]K{MZwmrrAJt]/ZJTF[e͂ ٥ѫN"dSw"Xv2%r2e]*m.XPap͂E Xz@{+l4`T	`?Sw^4J+ܪeRXFv&<taC㣊-'<Іk^mT
YrMUm33vPV%<#NyE9%iTܢƪiw&)kV? __7s&J%%6Ψ2Gs1z}g888rx-;9p:C_`V\mZ0}khVޟW%x`-Hefe{#W.t3GXWTpCs>RӼG/3ۮ~Sr{bڂ=yNTЩqI*N`\8+*EAUN#)R"T`)cn+QL𩂘pK):n0`N qLp#A:1LO;yTJӬkk8;RZB|:KQ7=DwpC"i[I#|A8=ѝ=b|;IӤ*]Z.d´}$x%eM~UcUn!b1g
=_E-5wMkj߈g0@&I8t(Gq_$G(	!sj|TکtK]|@|u=1"=BcIxlF%aYԡd6":DИaH`>gK<yHtژ%9/$$6^dR'99^|`G;3$0FiPK8q8  k  PK  C:U            ;   org/bouncycastle/pkix/jcajce/RFC3280CertPathUtilities.class;xS<KzOO0fȨ'amH!?@ K$HMڦi%I#]{6;}O&w9}ϕϟ ^S6
ب
\
<Wv:TKnzؤ_-
lU`U`*Ч.v+p+0nT&nV`(U]
<?V"no@p4a~[l_4}`8	%Fp]i
ؼ?0wk^Ww݇}4q0%6ՇH"?dꍣ	#E#hx>M3x9&0
QٷmY2ū߹sGo@_waMG 
HBD!#2Osg{}K0h$|DdA#'e(F(^
	2"ёh5	!gDcGKd46HԦ!'oTDI` JGtPh(ją.x>!-1QgoS/¢N)J!Pd>P$
l#vL!L(r.CRc1bǬe/#ݸ38(x1x@YBa2|"j
hrߙBs6mej
e{{;(eJT<LrbϒDXg"pm{qHD]]B-E淜2<eM(C
Ō ўP QE{'G"HP+/HWJd]}4hUc.2uo`7"lFԫtUu>߿߻io*c׀Gޝ;!%U:3 nbt P6	ӡ8bĆCtڐ+{}\ٹŰ-"b9_x}VF)GPH`	v!{CgDlAQ㖘$b`()C-
bT	aع=5;Gr ڟ_SWFb)`ƺdY=Yq=ehX>dm؁}txX0O@<Wn2½dL@IJp<BӂҼ:<	W`dĈݷzN.n5Ujwƀ}0S_yrum>3*7HEH]D|T*"S$cGieDC[C/$,;`$" >4bWΈPJ^G؝LOM*SK^25OqĮ|ԊeMSyb9ݩ0"uY)JdQP`R8i?d'O"AZ3VEF0݈&fZɶFejh0bhr&'yǾCt3z
OyFMwpb5NШF"1)跓mHʃv;l"i׸-},Gɨn2pPݖ`PpCU;^c
I7ݑ0;WJ^ʘg"9̩=8h
E[;|j5hVeVM ,)45w\BZ͊)< {fk&kM3o0Mc0R*Q;)5>-o~%ŐR
"HN9b!m@Ȭv	NBwdtEWg7d鰚Y6>< hF
[ݚSsuXI>ӺDfKfh4l"|XM$St[|UJۘu߻F[Nkg{cq\3slԑc5jBYaNҮ2~S#XQۺ\@[=tS%Hl)|f=Zildu%0EzEF+7+7SR}i$K7c6
?sNI:a~,읁^z>^]U36;Iu"pK0%hl6#ۚ;r8t4EΏV*CiMI
/5U=Ghm(iE.ң#}=^:u2	)GX@pF=b=
md.EnFb uEZYsZ2kkNL;f]Y٦欙?k^<1c8<ʨg=g^YϊtY:eJV8xʷ#)nŌX(@w~狟1ӿ8hΥ$fI1, '=2^'eC2|XpRdxXGdʐ2L1&e2|F)NY>'e_K2|YU&eߔ[2|[]'e?G2XS~F=նܾE~
(zc>z"了r{Z6D٤%BVo)W^mY`-JYkckrl[dtF̄R&%jE[M{sR\NHbu"=֨Ȱ.dod,w醕0fFZ5#vߔ"].$EQ5/z~ijoxMK`3emWb];hav4>h\.QWhGkgHEKӰ%[
P³ƿAb1uKJ\ me`,z[://μ/tNxv΀cֹWIBh򰿎/>gK_]JBS'?gZ{6	4xwзmcẆܛ_Tݼ`I{K|{=
9JBRRԬXii
={-jq,/7<Z
S3i#sxWd".#OU\*ٝ'Z3BhY_3D(EyMaLElon/WXٜxʥB{,x?/>532ųάoЌ82[k
X~6ح|3`'r
b0ABJ
&
`v`p/w2d	wC/UZ5+`?oZ
>>
cpn``A`=^3x
Σ
zn

൸Iwf
nGw2g*ܢ]U6
^Y^fCNZi"81ܥz:
z
<7M58{5-O[1xC
`pA!
5x5-khKj+
bLc\_cBpG4=Q
xLv
^7x^%^en\gw1x!q=\EZ%|7|KE~\E'~WE7~APQe
a=<}RQ÷3c(`JGjU#*d0|"*>|喝?%}/72*2<|%1K438`1+K*ēb~TlW3x	c01[^_e5?Q?*W0xk*9g~~~/*9
*n35*<(G<Xcn:|
<=>A/@{p.~ʃ;r{yF<U?У3щp0=r''E dй6HB)w.P:Fc	?Ph4J+I)<D~e=Dm~9.ƥ+zǠ㔴퉖))iE!Ј+OI>HJM'`ǥ5IiU&{e0Gw.vBົe qÓ8,Ke>Y'x|I.~t
MsNAuJZ2.-=%Rρt)x]p9%Är
*#6`1\²)MOj|L?˥t*kS.
]*kҪ	iRҝR^imخ-#iԴzw+d<+3'^JV3'Dݎ6OP.]tJ5/(suƿZsmLwm>qjq;Hwsqzk#vS̱vץWC(*
M؉=NiQz@.*pX/#	ˀP>MؗeL:30<&8K
$,HxV΁Y|25[ :pf~)Zn'
5ӚJ;_R2Uf=.GJ0L
;
8
>h
ڤHwKbequj+Phˢg01]ڲa
9e/Rp۬4Ma|esVdYb3Zsޘ.{Ǡ׬z-R4OҦ8LAn!o0)tpU
F8
x9tp*lY66u*M/7jP>&UնȸONm-?YS;eVKn=T{4h_Ay5UlWr*)];D7ݺ9=.ݒwјUA?Ug7)8uݝtkR<:ĥODUutf=-`l˺ftD_EJJR/OJ4o[/4OJ[|UTʭUeIi04MzUR|JznRWWI1!/Щƥ-q`KAW5[bI<'zIb}emJ]#}ꭜ0BKTITOezUVW֝jq:\Xҭ|VR>Ea
^1.VNf,kAb	܊QCM"S"%CJ8
k@-"cխaXjEv(
PQOk
\
39g
s^uVkƪӚW	)b+V|F}jNR/>6cagO}	,is\Va9F^s	Y[ʒ.Kkrs莦l>AY.yr5#W.);%WvI9f]Bk)zy4,A9^+|N.!=io)1/17ʆKsBr*t'zƥB7zCGSatq'xIQbRj}p'=F[5.x2
%bRġEf31(4M],K,YA|lUR>^ǣNuRR`iIOt
SIw%%LJ`mWr#+F6]3ۂ7.`#RLW5J`%zc,A+f[1Mi[°hpnʸ\k+JƄehM;gu<M/KP|5	.H5ˬv5{K^B8
^Gge{Mt.N3D+12fѣڔ3d^+UD˩i;()էΪN52Ԁ6lɴ+*p?iz$:魳P
nT}ڞowi
bPs0d9iݪn+iI:/ƦfdTjdmr^幯0V cRKdM/&:
7k{x&C>OYԪxD!ob]mS
(Yՙqi_{	pMOQr5St=]zW&a-zeFNkƥ~x'u	d7[ʤbn)p^9.]k}Z7.
4E!KM2.WyR/xԏa2=Wsѩ˟sJtLfHŮKslk-Zh͆ëIrJ	`%7a5cUåR4dkDm^b"ןR{Ug:`48W1oz=[q5o7>
=jLk<[RΘy7ʊ;.mƕ M(-PK^x  C  PK  C:U            .   org/bouncycastle/pkix/jcajce/ReasonsMask.classkPǿi6s:3:! mjڐ&"7|ك?WPRϽ~9 Ě2hʦԆikS$
7C?ÐP#4Fo&Ap8I
/y{9?<zscӏi1᯸<nv$뷝fo't߸<QxٽusP m]鸼z
<((bha:N.rmާ5Nß5G̚021!D&$c@%2.h`U3dP:/*dAeZOcv|{7Uڜ1E
蜘Gkn2:k* 
W},g@fHl.aD+M1%"Y[beO)zL7,Ҩ#}&VL	H?@ODZۣ5RŻ:.C(?ªD0<î}R
5;Bn~9ӔEmV$#jdɑT!&Y% PK.{  1  PK  C:U            6   org/bouncycastle/pkix/jcajce/RevocationUtilities.classZ	|Tf7.XrPDY	B
x-GX
=mwkOmjXDZAThWGԊ`:+{,?v{?|t ;*Ƨ8֍ܨrc'1ލ	nT1ٍ7jݘ)nnthzτgp%Y=yy^)W9t`tBl*Ѫ`xM$#5HWUG0WH0
HjQa"FLHW07:
UHRsaMuTuG	MfNU5eMfN#~0-/dZ}M˖3	1G]F܈2l`HVyC0F4\˞؜#te9Q/<v?baF`}tF .F3ھi.a}u;em9˗^tu/F#2z$-ӗF#CFW%ky``}0ܙs2)'OYGbwlm?Ƨȑn26ƍp,h.d#RU-hgj%)CF?ְkh?r7Fjx2mac(D+Yn#,
#c\{!FZZ{VQBlPo*lehzW
"$`G9 1lvu7qp2qciGZfU{u5.8cc.	,&M!Y(b>?sX5#:ΦYaҞա`]eIePdHls<[L+VH2lyx*Uk=hjR蘍tu-38S&ݶ4k6BqE)ѥ25
yіIgC=fNl㇏I //ی#S<uh0vCq${'+a~YJrjJesnY,Y;(B-(	!ja bo
}ڌ
ٓ)+ bZJ;[#6udgj%P%Wp^Rnfyb*=w_lՂdh,+"\J%.
"8srW*\:x:C0[27YIllKc}5F;{f
O%c;&j	ǃ]FQv39Gcچ9N_8nt
h3=\92QKq\"
=Q0XeSl9<V[slTC7jY^v#d$(HHUT\3k|04,	E!;!.m(TNPy0XG4)3M*YaiU#҈v9YFqTF`R2WD4b;0Q~oLbjà]e|!u\̳R%USƪa_9gO(B,
ܪb_a:6lRv[-zTM!&/ByMO6ӦTdkΜHz8䖙Bjdġm 
8e-WuѰt\0V/u\t7~8SEn3ْ7͔byzZ_u2
92Kyfӊr<ϓWOn|x2ʤTQR.N<ujddI|Kd,csXvhMnvW3E_Tc)I=fwe
s~~r	?jJĨLc"99Z!`83";:cKepGmTޒ5
u

Sb
q
(lTؤp§>Y)|^
)|QK
pWP
o*|K
Q
S~c-
W)Dj*L
(\p
7(ܨpVnQU6~K_)lSghiu&)|t0-RFWV
s+[LJ,r+̇
G'jYza+ؤܱ9On7`?Sqy1t2eM'aԠqndRHj&cQՃq_J@6kd9"Әlgr$6o|&-BvZuOM>NM/Ij?fZ7-zj>"G:̬^yx<1`$`W=٢Pά
ctɺO6"5y30F#'L)E
)sfSw	frX32yd4w7o|rʰvi:LΌ{s//y̡Uv Chh-jC9wfMuNsWc\P"
/ߡCa٭-URo+O/.kIuULiݳL!#5i'rQZ`m,٦p_jWYUXj]WV_ofA	JR<'pvzo~=ԁuH^uzNM ?#'5foi:ǀIN&Xtc]Au8RzaKp܁uG4ё}rh
1Slmq8Ju,%,r8_:tOET..`鸀1XM#tt
F8F[4آE&, ~sMh$6X4V
:F\t;8Jǩth?Nǉt1u/M1uhFG;
PcMhi:҉;Ith"Ι%g8(_iANs02Sth"
m](r_Ѱ
5+4< z
_F
GU@T&
lD4<NklOO4<-t%
b
P?"gm
5J5ׅu:OF&}N4E|Z?'IC
H;\9B.E

∃Z& CZcw	,'~ *_'h ORr<C-pn9^+/eZ*`Ux
r9ޣ}RGP-uT#/̝)kY{3'|`-;2#
 qsෑp^!~jv
!N~IПSMP[&";l8LSm15	}%][Ko
2ZfeqZIY0NU	:Kn[W¾;馑tys6
P.E
{38g룏}a!_+=8j<>G	-eF{Je(t2]KdS6M0#n+q>]  P»
/1B>C >Dc ?(}L3QbqrE~^ڳ8T]/ݭ%3κêJ	zaǕ?\3D/=%3T2ZOi:؃{>wr͜Oov2~kF6n|X?vG-=4}>+mZqv\Kf>K!:Kf*]'k{YbT`b^z6>.V|V²ۏ
sd'ywmo匝E5Ff$l=x=A%w^)qɆ,
hD3ŵ؁;qfZ{+>`C^W"+ico3bww<.AxK+Wa4q=|k%v%"1N)^Oxqd*
z˘f/_ozY/jnd-Apnen2MՈ{`z6M1-Ԛmz:&Onh+	z^_n.rmf\S8>Ch?(/eQMs8q+1Y>oӭW+c;%[H}TB@^WS^]{]f&^mRYQH2ɴlúǥҭ	-A}
s'!&r&yQ}Q\Gߚ^zC<׫y%r;˛ȏxuKºjAf?Ѷq3/shNfJEV႔/>.v#fjǤSa:|Efc!/pQXW^x/=/;
o+l}!9e
O9Eh[,>ÁSf//|!i<tyv't-+r\
߿vop
y2c)eK$r
QouU(oGsYN?XqR gVv8"ٚ}/:5
69G	6yьҚ>/q]YSYjx\4MoR">b$/w[r$oHb>BxIZXw;nV7rY+]m]<Awo.Loκ}+~ߏQ
OI}=3z}EH2Ɠ
O(<%n;aẠ̏.s9 w&<ت[vONRnIx8Iޞ6sBf5$젟vJ
`%-P|V8Knoم+FIF|~'uJqؙ$C(i{j\|gj=~6<;2(ʕ>>-
7Ʀ#u̻&`rh,;xF PKI"  u1  PK  C:U            :   org/bouncycastle/pkix/jcajce/X509RevocationChecker$1.classRMo@}'5q$Z)4	*%BR*P
mY%;QW
 Q\Q[	Cٝ篯 `8CW]``܋XPPBMǰ13FRġǮvI˰ocOzR d(NVUfȽZ/'Dݱc!S9*;#)&v/TmQzjqJlL,0M\1aXf(umeAy/cjGvP>_l,֝ZjX9]
QDF!p<C+fu0lpF7XF"
cep!	^)/(|_G\i.&|=
i3RIK=ʤtSܭ?<E;|y;1	l@=rI#*(|T3xc1I,OI*4)0~PK  o  PK  C:U            :   org/bouncycastle/pkix/jcajce/X509RevocationChecker$2.classSQOAG9[ZV
UW*⃁#0j|[vyG
FsGS
xws;|`a|]JoБZyZ7'!+0ԧwOW
>Cyv_vДb)z҇v9{`O+TL4\JݰCcKwO]Bm*)dİzyPuaa
ڑ>}YH㺣j_UiG&LWLLMX&&MLQwZ#e6zmhHwX Y6JPGEdItUܡB%^Ӏ}Lm>뽨#
IE\P
0*&p8,a)2n%<q'fQek-#VA{KNHScm>cIsQ^Dɓ;-KD7
k",7E><
~|
3%(1CRG9Ad8J1+`9f>E%O	sQWҀ:,
SDd+PKlEtJ  i  PK  C:U            @   org/bouncycastle/pkix/jcajce/X509RevocationChecker$Builder.classWWVbd&NAj.0hWV)*8(
% IBnkmuszC}d&39'7w͝~@nr
Զ[ϒLYKs7.p$z,lt+J[Vmne[\qhOEW
6Rѐi?ST%QEEP(j=fTg<
+&AQӽʄa#)ÈlHeXD<Qш_*OȚI|¶j>CsqT[[;51qJ6%3c6¡2s&tHauZ'M%q/!ъBz0jhTpdK}Y.΄VZDUVOSWZ.`u1hfZpb5yڴ̡11MDT21I6-OE%kB+2iA8켋}ٜ'b
g!ҩ0ІL=??R[X	
 	Y`Pr-S3*1_WjMSvhb)7S/Xc<6xǃ<<jyycxhHE89TYabEBpZ>+Q>мBI<#\Ӷ`Ucx;LL<Pld,.fS5w_hfM}]wc@ث4'|aϧU84۞@D:OŐM|m[Y30,H`=K"ҫ4y=F,O-[XmڭtWY^#K6m/6XyY_fL[<r?,K@fueIxLSٲ{Uj^L@
x2Qg	،>㰀jf|X\65xTbH*Dl&^d%&^f&^e5&^g
&d-Zq܇x؇6|!"xLC'uCx	?	z7M"}%9Rh4YoQE+QF4ь/S#d8ʔ^Z G8 -G%VctQέ1u[w:^e锬{}á{qC$y=%98ς8?㸐^q8
q"d`Z,m Gg~H&9i?mgUCwcsxn[a46wmg*x/oWs_ukqȽCUˣ*Ma9HWV墐/ODf;s.x[1cbKƾwl2q6	h%q:X=qJ'ثeqN&@]\)/lpm@x7 ۏx9
ۘ3L>˰<w!<gptE0=ܗbO3Nt	;'>}vzO92<A~ޙ}q1u+R5JqO[_PK۶uC  S  PK  C:U            F   org/bouncycastle/pkix/jcajce/X509RevocationChecker$LocalCRLStore.classTNQR8.ZA@܊ "F,`Q9,e%ۅ;>1QI513	|/sJB/JΙo;3o??~05|P7kڦ7GхE~OޒM#7EvMp-+4Kime=cڙwe
}5}M7\OK&;ii+fۋބcYtl֢{O\Rcyb֝[Eֳ-nh.e1J¶̽صK}LePź%)[*ـ
2?G#r4r4qhhh$;+0,?A^%OO?	TIZ?ѢtCRBR<PVkyd
cceUTZ*MUM<\iֿJa@E
EEŰf)jRQ:6]<~Mp75) .a<˘ lMRmpfx&6̴-i7<o-򄡟tAEi"M=
%{"d'3@]CLG>!,rz;U :J+%.S:!fn2,@kqA_
yi+xJpd|-?V
$*u@BD8cSpzqPKR  H  PK  C:U            8   org/bouncycastle/pkix/jcajce/X509RevocationChecker.class<y|T,ehBB b	!f`DdLf,,ZVkjZh&hf7mk{;7kfB (?{vι{2p'`xE
T*D*8O
TIf6*pW*pNv(RW;إWA|
U:
|G*^SDQ0__rOpˇZ-oj
"|5Aww"̿<Exξ;@YKd!r8x.rnw>V	wtBfj 䮶:Ӛ769گXsU[ǺVZoxu2Nnuto;[Hp&Ѿ,Qk͎&nE4YniFۚ턞s"t;u^;궷u;akyuΠoy^"[	pu=Q,bn՜Mt1.;\|2 qdE%V$O4$.HLAGe!z{jCdO,<܁5̣#$'9<^<@u<>{j$UZ'h廜n_hC\ޛ@R>4!/Hcs'y[:r=h!g(,wr]&'lE	|iRC}Cd !C׀۵\hI~beG(v}}09qOhb^Բ!K6XC}@yr:!\:˾
߮fRYaɪ9fC(p1!Uwq408}uDHm<^0^<h{p(#r_v2@tB|Pg8|>@os/F(VlBተ!Yr1 ~yC0<4݄XMjszͣ'CoNc{3q5RBi94D[C{0;Kw
a<LN-Mm|eKxNomJᠵ|nI:Eydei:\!'mG~#$P"6jcwGxh{ 2ʳ|z\L(K2)fpE)N7Vg<6[(>+<Ȗ}C2>S,9S(p{XlN~t&Ok	
<f-->/Qz-l<t kڹˆ	q&EuiL^{E6Ãx	HqV?sV|+jS)?uj-VF">R )ƘCuvQ0A7j4v[}g$#&Km
:Ngh.Y9𭌷h6dcfFѳ"
<3vڜ2̹`әf;v&EJ<i&!2n>
=R5N+O6ʲteVڈOlt@2ͱsĜ&)MA|0N3^rM{{b4+V4xo\ph+eu)`{_bE(Qolo|rg,5׊m/F/#~SfKӰʅa_Q\6hq7UpΫJ_7u/0Ᵽ
kaAfdR e7<3V4d`SwOR[Iʜ5@Xv:,'!i_@-1n.N1
ҠĊA_K'#3@֚N ;hsM.&{LJ Q$,3!i&6i54qD
vh={nDSJI(@MIo 'YrizOڵˢI(HUOUv9YB2jL^?)	'8Y,;OtS-\~fd3 9g@Jco<^LmNgچ*L%p!
sr֋אYL&Z|\-k&X{D(e~gAϵ\}r~2C0̶;[G!ERBh~BE
v|/8vq>$fu{NPGE\B)\նohgc9'K ~		_/IxP%<$a	$<"Q	#"F%I8,1	'%𔄧%<#+*Y	G%<'y	_KK$,~$^	?3	?	+		I?H?IHKJ#^	[O]Zqkrљ2ASEIcU1a&6+ݚQ,beEBU2]F38^r4{5!ZHK1hɺ\='|w^ȓğj%N̫rӒ=(T&N:JGy=Mt5ާsMzIlpxz
ԭ;|!i+S*OQfG	zقTڨRŠc^z)1NEZ*P+#&l
BieyOѷgc*+$Mq$yΌ$ʔ)jFd4+sW#aJzw^L3$#e~K*Sd+'K׬(IgqC)g|eDDԟdK#4,]#3{mўsi#,9l:k[ϚVyג2BԱpbI28-γF:YkOqU.M_?mm}+71GrJ
vOz/ȴSg
aUTMʌ~m
'ㅙM+1n8}SߺXeͪ2I%ؐ	ueUZmO,^xzkτ>(_=y~t<gugB*1&DSi9vf#m~bQO'CeSu0).2$صi:2SiH8А*25ن~C/'0?:%y7_Ql>𶃧hNslEQ'ScT~%!MH(TL4MMU&g|J5Hlogӏ's8TΒw+酺/R?S)wv*PBB
ep@*nML hK V10x;n0Wj2Xo0mxwS@gpgdZ
Šjp'ip7{4xkp5TOkm
G=n|| 
5.
>^
ѧm!
nk`vso
>{5xi0j߮rwip[{40O1˲kp_܂4odAޤqa
.hŠo֠
?A'o	
6m|O2`Ԡ?o}
n;5ƻ48e5p=2{54~N}|l/04?e
5x7b>zh cxVsyx~7|BnTdpSf0*ge<1x;
b)Ai~tW樨T(v.抹*#8/Tq!F@1"b~_,*.f΋0b%U*Mb<WàAX
tUx>Tl߫JTh
EU\/k%<\Ë Akb3	
1Xb˷OUN`pLVѠb@vaWW;*vz+TeP<+RH.ݢA	ibp*,fP1]K|\?a|22x|\&f0Xyu9Vq(ǭb>T 6~_w>*8'
R~*Q~
.*`{
R"h?@$@M}r16鱱)+0glM㡄S728>d¸YFK9ǘCNDE?4:
4jTƱgT\;"ڨ[S=&#5:|nc##۱'G&j8
em#s{bT|fD\2i𸹰4B"}Fď	@I
 3U@,ԃ0δ3; ۬Q&VF
GDg_`x:ـ8x},YYo i[Çxɺ[i,əyPD;QVW=*Zڈ;A5$	vDl|لCh?,`spEx
s_ύOD {9 Rϵg|V~ܞqI67"`4s*=I*hŗ?*q\~eVD&6ED_VRPaqX}HtF;*=ʔyA23*2("½_ᓏ]:)"lv9c$.#*j
ٷje̴aDZˤQ;[zRKQVs,"=hx+#{֛KQ)9wҲ-;<?U&(4DovV]2]廢EoDģuyqF=k#}1xyGK#>4=&dQ]|A>3ȷaMsqGWGW,ݝlhuAC@ϞO6=:T]ӵp호R"Rvz ;
LJCEu=u|-ð@Z39R)m>&Ȃm}!ŋ)[DH졤M#b/e5V4;U+ބ9J\zs_zC%.!<$L `Ii0P@sS"ǡ]T+JlXĎn`C杀%/,{1'NR#9M9a6)VT3TUرa#FIϵH2H\Ha]I2B$TL$bHJ)Y;&0m#S JW&6%"MaAk C㸈v]]㸖G#ZZ|]j/sNel{^p~Dč~pL|,"nf5D^XVTo/֋#CŹwh/Y=<pa"¨xtYdLo鶣몞WsH41wL|)rvm	Hz
]gf6Y/9JQ\? *s̄X
	׼
Iia$hX[&Ԝ{M<t%h%.DVXŧF(q"yoH94[:,9I7AeA'*ϑ/Q{Cs Ğzۆ}=G۞Ր]]ݰ,(l`'#ۨ嚹-Wz+^zZ dl>{*"P
ƙXoJ O@EC.똏ш޺fUC>L6=SyPbWsrn~';E{>ڵ=(B;v!DEzG~.<(X|^3~bLb9,^ҫD/Jzbw'_e9zs Qp,j+9<p	S/ѳ=|._2&P0yRԮqu#ȯm^8WdEY#xϘ?*>2*>:J9G
":ۭOa3IWDfڴP/kea=@c;GF=G%ѝp8.-卉wDD0,*;z5@ZkxÃB9!3]LXWبXo[p]y˴T]-py9ůF6ZhvQ>~
v/NÔIOBln9F3x+>TH8K߀9'd0Yk0T37,5\)\a<h<؟2-@/Zk67s9e~HRk
rGi1GDGq8'˶'6'VݓkӺ{m~wb+)εJ`\-	!b:l6KDn0PCPPK  B  PK
    )D:U               org/bouncycastle/tsp/PK  C:U            *   org/bouncycastle/tsp/GenTimeAccuracy.classOPǿݐv@`PEAaǻKl=`G:PX{~|9?}`/5kP5h
*P(dHW	Vh¶+%aPL˓/@A =.?:ddg{yr8r?.h_­ȭ&H+ K<;%C٠xK+W<({z|LP.Z'.AߖOpiցTSѯ"A5vӲQ/se|xx jqSRL/lr[5㮁Nb
1``-1<8$qLpb*;1KH,K塎au<}:mK̰,s,
6
vODΕ;opdd0I~Gh:X4x-dPh5LkxVV5ZRkΖjلH_#ZhQh4
%F@bzC~CuKf
5,(5l<4/b)? r'_D.fi6DPK~h/?X    PK  C:U            (   org/bouncycastle/tsp/TSPAlgorithms.classWdǿАRs{sSWdւЭaZC4钰,y^Gy7
e/>onX#	ť6ᖄfbJ<٦M]Z-%̟ێR:sFmkZk]6.>*8KilJIdTovRڽqu:-q=/zuU+V\U86c}ytluih;jͳ6"gݢ̰GswvϺf:jnQqZrCmn'wQ|OƮ{3H/FJJzKvJrzg?R×I7P[wzJVzAh=Ճ{Z66^y8Fj[oU`HIoao<뉏g}Òwd+=PeWd|$㪌k2>񉄹ܔE_~f(}aUq(2՟S}F",CfL1F13f9F1x:
ƛ3KOUං"*Pg4(t(XCu6;c%cqQel3v0v{ZqHWYY7@[=u&D-$$Kt:Dʉ'JfB𐮞P6~%±@'+p/'cOF8EpC#B_08`!Fa/FF Ѝ	nL
t#+`,pSn(PlDB$O8!pHC4_gPK/uHD    PK  C:U            '   org/bouncycastle/tsp/TSPException.classmN@@#fGI70n;& LjM3%T0ј0}(frg3|~8G~P]2XPI	ep苵
cл܋t'3o|Hx*]{uљ3a1m?e$3-y TBcgQrKQGCM8b0&J`HQEA=T]uQE{ZZ;s`hj[M~_PKc    PK  C:U            )   org/bouncycastle/tsp/TSPIOException.classmJ@ϴiic⦉lUBA4b$̔dImf{sc͓{iTyŗ,!}֣-MDЅHDFdEg˿tsMGCGfϮcq-"6"IVÒ0
9r[D	[-ۆ.6K}d-RjW:@=|AYB(NGϰ~:p`P5lD -PKI    PK  C:U            "   org/bouncycastle/tsp/TSPUtil.classXy`TMya!*!	,	!P4"	$5>v˒}ˡޭ[AV1H+xn}-~{dw󖆶f~w̷yX*nRpR0[(`
,PPVA
))X^
[m%(޾II_jрECjUF[0C;C~4T^=mgрXoߔԃ`"E=1`zOL^$Xݽ}=5cD1ӛ~ޤGhf*m]=KLn.lX\߰aYnY}?H~
1DIkP$EMrceݭk=Jz5eihXi 7,0=Kf
^,X0q=47EQ]rWc]o2nɷtR^C#]hF:XXɕHvdǯGy;|
B%
)Xgsh>fe5Pf-R}g,
P8*l#4w%4"Kj
Ҫ9L{Tp4pgZB`H^%&nWڤM#/6LVN.)ePiN:)w3ux1NO 
ebO(TS#iQ=o	Tl	F $#eFܐ0Xh5T"NdKB;EgޟVڰ76`4>7i:b6]mLJL6
S?_oMqf)P%sLޭ}u߈V޷z4=ʶFP7'5&e	EM#^SfR)gM*w}͉>ny,jj>~V 9svt'rz%P	- vI3ldܳϹ#llbgMaY yYXq$XqHs(.Q>Mf,ZVw"oyyr0kt_,6Ћ0eXh}-=SV;OIĒ|8vXM#l	z}꥖'[x/=`C/poi+V8yrmFH	Xdo+Ifٿ.fc)/NDt{<cq[9a*lk0~a:	{B*K
O4Z:euYcfɸ;KfmɹgD_3:j2]ձR2V"̋AsōH3mj[XEe*I64%וe4-4F}u)In+tt:~PQ̘FbJhgh;FQ{I5^z
~$t~;%$B%$"QD\zDRHI+Ob
7J$jH,ZI^
$nxě$,JMdDGSyLH
-HvzVgƲȯ@VO)v3,,t7Br5k8>Q<?/:Tfp`
ʌ-"HYu円k[q吣t͹'eKq'
wxŲI;Wc)!9cL	l}|ӻ+ku[tvu> .}n*41a }]ē+C8h>َ.7<atX`D,w}t:NePi0-2a=5xY
+9
^k˰aV>mf3Vw1=ex>Ȱ_pj31Mrk1]C3<:>4>/iX/k_Ѱ6|]j|CÕkM
[myQC+C|OC~3~a~"?Јh?հ?p~
dgF;[e.|
gxe(BcE%.?θp0%C	3⠘1LRqHxT%\**a:<rVq@}}@A>(fxH\∨USq\(*N	1a!QpO*>#jT8%*.Vk4^KT<'&2RpxAL)sq1ar9>*o[b_o*+%Pg	E@1Tmj]m}WY_	!So}Kk
\؀ߡMD^½}GΚmX^X8(M%ōU|zJJb)<T)KMQR<2-VRb1qMky\GEIim*EW&ͣ{}6ݕ=iq%{ұcQ1}nyTOy"Y-q!Ad3m7(ȁR¶#(4}>;777C9K*8%G$
.xHR &d$xV9%pp5\/qgK(}Rsba|ߎ	PL髓[vŵeC}d͠XŵicM"C	nPu.-KfdY$VAPx$NtS_D;(jpWG3PhT}rdiJ:+>EZ,ՙ\srP\q=DE!E+wQM팅iaƼ!<7{(S*NvE u@f,,Qt#=M>=E+(ښ9#!GM:ǠX[++q*)frKr˘[52wy.}[w.s.wط!_nEZֻ+6=!`6]E4/2U*ݮ,}Vv<`Kv4`˲v{M2
PKV  U  PK  C:U            1   org/bouncycastle/tsp/TSPValidationException.classuN0KڦMBh`ҭI/l R%&5QTX@H< U* N:?>c@p9F3qI]*u^!ʕ
FereL.m].1SKC礲sYK?p0Rbf+m8%O4Dn~=>#1?$n67H&O7D/v JCz+%4WDMPK
hG   d  PK  C:U            +   org/bouncycastle/tsp/TimeStampRequest.classW	xזbMHP(,Ґpl&j}!1nBi]!8ҴwKzMz$AHCӻ靶I/JB]Y,9O̼7o޼zS JXV7wcȍa;,)m&Ĳ*h7pL5j՝NgQo]CGDH$nuR}Z$=&I(LUOijvŢFR3⤣aWh)Y=iQ5ez-{Q#BQʦ\
bɉHJ)QAVO&iJ(Hj:-rymRJ1XZcP%02pZMnĴa[CU;=;Ԥ1%UzI7U" 퓀'b1TG=1'󵤵f=ɢZK
'yNfI4U(Av6ծdR9isL
zIN=VmSh'R=J,P̫CUb]hP@Z'
ޫr|"_ӣbQwZEd6X
rӜ4qشX )ZBC^4RyYh&IyEJ3mc$jēe=tPukjq.7n#)u15

݆S
nuyάWH7(Wc>=f*,>KkS:d*ua+M<q.-2wCPrj::Z*gs+^]N$WؕINJ:<דAݣ$5m(KJ8+4r'>ǍWS*vB3E\)bD<KĳElY"#jDxkE\'"$y"/OD4O߬ò
oaeBԵeENVoՔ?[Ml_.d+u6NW1ݑ\RN.-!֜bs,i6o_+ז3+\=EY
~I0Khj=%J+d H?g?N=>3P9#rEYn3}~YQNԖs9we\ZC.aU
^eY2Q6.#닗>}z$e )0e!ʸn,a$+V3ԡAfHqPІ̻2q^"//тe+d2V1xZ*k2V52.2.d4oш7X7hep
"rU%x";.	#qT.>9S^|^Ba|}aBp\ct/>0%a0p0|QBJ3,×$		|Jb>3< jw2|5P2||%1ÃQ+a~))K@%$. Up
Y-xse$їW|8g8waLeqk}Sg,l.E䝖A1hv/',VLxr~#2~97#S5W+3CY(	V!<A"I
AtB-Sk|l?ǝlP;e&<dqQr$:eI?Α33;&tl{y9fǬ&?6~XdтE-|4<^lyl#jj>*/LB)$F]
8Oƥng0֎itr7_ov&/Gν8msUG[P(c2~E?uBdΉ5:8p黌Zr,:"tp{.rԵ:WAPQtY:kge!sCgwEۻq1*d
^06fxǧa75k2i]ߔsQv`7ϢoY'q~=!`c
H
xE[`
HnI7BS	4??X'pӾÍZN~:$oSbھPKZr    PK  C:U            4   org/bouncycastle/tsp/TimeStampRequestGenerator.classWWGE-j5"$Р-X@Ц6.ɰ&aw9}ئ͞;MȻDO᜙ٙwßM;:ڱEBk]Xݢk'uCwNJh.	]ӫ&5ҝ^;Z&7l4$8K|UBWBvZ7ܒʕa:T$od;FLt'}D
Q8-1ݞMPoaG/ήyqitg$䔥ᔀm..qljޱtCÝJE
k"5#~;NU8pt4\
ǸqISq`}Lz4A	aYzJw[mmcm$WzYOyGMx6p}dDxPT70(V&t~-<WԵ3g
V
x~z=Y+JֈE kJꜙtd;
PKk[,2N'v1f0aða?S2bx0C~Vʊ%pxtI)&';U1q=14-Rō)y#\kzbMP=ew|H41oTBsrm׬L&jMU;u?զ6yQiwzu?	#RMfq[}\=]!Or [ ;w
QЅYhU>
:qF^TQyV Ή󢹠	\T
hA@UdSXͫyM4d,cx\2.2dofE47dL	ܔR2&q]&q$Ecq;Ekz@ꦗ\|ëy^M_'vaЅF-B)'ܞD~+$!_W;a<ŻaC~p,2@["X(aa_/yn	*mPEey;x>VN<3
fN+=ϊS==Od{2xn'^,vy{˷9z+Eϼj"ڃA)Zp
±n)#||0x;&E=}aCїd,@M[9ĆXjeN+Hek.=-P3L1eb8p!00s'@QuBC{0Oax=[0
܂ߒm[E[BV>)_J+V
ZuVǹХɊ'l[T,9LG8bPKؿg    PK  C:U            ,   org/bouncycastle/tsp/TimeStampResponse.classW	xזYyY086ܲePHӔjlHk d튫i#+-Az҃&
ӤizI9Zt͛7=r遇 \/4{1Ë^\ӼދA/6zɋ
hum*+ɷ"}CuCn? `PGI%zr(4bp2fZR0+4LK5!=#5Nr&,z#j4e*u6z<h'^V̥ޠfjL&RiݰzMj~=FdcҞ6ݯE4So2h#U
1CXVZߛ4әT+CB;D#:BǺmh3h}@s)gk3K4C@ݣ{LZ&iiK#Eϫ%zm6Ug7zP
@\VTm-/nZ8,=i'U#苫٧VxqQǵI2	(%('_1w͜𰖦(Kfْj걠ai1^Pv	-XFH1h(䴵#R"E)jLi~QcqPPg_p6E$4r$Bk4VzBWqI,ͺH:kGd$Yϻ^Z̑wR?$WIo
r
fҚ5v5mH;L罢.Gc
FfruL,a
u6S2,|mu^@$B7k2SBn<`ˤ_T*H\PQI%ʽfOsr\At/JTϯ`f,=o'rDy3SWO,gBeRutr/@Wpꃢ;BQdZ%hΪIΉU&xL(yƥS2bUn9JrRf"%=R-^+iA5":EEtX)bkEt7x5")bn7X'&7ED^}"EAĳD<[&uk+*C6@Hn~vE%U'|9ӖSVmH
_kzu7)"i-÷sUuUasZO~pBD>~(V6ZjYWMC+KGt?XR^&0bFZ(:t2}y5;*Y
# [kz
Tur
c;JJW9MvTOr~y~g~оtP!C"'LdBw-N6nq	?~S0rX02fL1y-&*LapDbqC;d\*x!1/֋^"/a!sp{%xEx+xkZ!2IRYF+V1nvmx[q[4 f
p;>,av__b2Y	8#!H$)>%Aèab'a	e	q$Ã_C$3ϐh3N0|HH3g>	&+0Y
L`CKF$Fq90Kg4
cs?GYucHå88%lpμAĈH Rb`zU=TmszO))i4w9<YIg^F1F;{1
aw86f,rٺS6;4x"f]DxJٮ#1aY(_
mu%;oW6	
\{
l'?̣:ǣY%eÓvЏ4uyxǚ1"5Pliy71ߵ f,FdGB%bXx5+UoUٺE.cpq _	r\36єƶym4i:`8
H{WgeVhG`)9,?w,		)?4Hd䫋YaiMshmo:r=m4ccS'01pm཮e$^"lJ0ν?Ǳaz2|0T\F6!Z29s͟`$GyA</
BaC9ʦ.8Ӓ%PK:	    PK  C:U            >   org/bouncycastle/tsp/TimeStampResponseGenerator$FailInfo.classON1-DERP ]D$dbΦgQ( >
QQάo ah"q >3քs!85M5wv2(*-'rHQh-Q53=
jVZ[ݨ:
	pL FK B.GEYn_#(,]T{O(#,nE8`rkO?m0OPK->*   i  PK  C:U            5   org/bouncycastle/tsp/TimeStampResponseGenerator.classW-lClMhi"bcC!E^Wv͑M&i#iғҦw]`	&@H/ҙJ,	'T7f3ozϿV~L`3=+N[-Cm[k%H7UKOQ	4k>35i>)˧R:ԖJX=@A𥵘⾘j0xPR!-mJ6K3?%YŴYLҺ54l(7!IO%^%$TkԌXiHHy@,|OOUi!	LOB3MBKaMւzKZ0;m-V5#Ylf4mLIHA1ZɴLSMТwCM;BxtH%>@IPo&X*hh&}\Z"~BDKht[=j&Y;Ts(	]	
rv7҉`jԈBi,l[و\WڧIAjcajcT~]mpQZ0c{eT_
TτE!BwZlޖ\WZ05-WâeRGRs״xdŲUKzS>7Rk/)`-N5UtoRĵI.pcCSn_ybשGJğ&3sn]KRt[i
OkzПևu:xQCјELkɞCi7	,P`b%~v@@R2EVxJU]nX#VvuGOYsYM3A襕+I{&QRWjWx2*p~%*{]:%rZ"2=m+Zj6Wvdq5dD30N.2O*R^W+UdtjuyeZ4k,)ZDW<RݿcU[/WS7lrd^]2X{]-V9p~Pg'2Z7k{˔^ꠝ[nuHV(
6hY,YlP0
6hPggYAFRfE#R
`we`3,*x-)a^QGyv9x@kfoa݃
!^UA71mx;8`d.f$d܉c2z~O fgedćeeYq7>/c>2ٽ721nNP1Ȉ,>#gqŧX|ŗX|WY]ۏHF܅`#ibQz}͗=/Jؠ1&=N;ث&ND Te[u=Rc3β頿xɿjܨqZ !IY9CVq9r#d
pӸ<E.Ǚ@#c<'@g@,^鼩:=|:Ʀ)aw4738[@R
;V:8N@TtaG8h.bY|4;y-9h?o{g`F]'ӃK=J6<JnLlf._u~1F@~;oVAE}h<ln%cn{]M5'΋hA6ϪC?8雥o&q$^sSϺwtg~]vy]E]^O#cQD
\D]^K,ŏƜY|,%r(^"*':-Gìe*!!&'+WPm"~/a=
U"\<* </f0/V@=2lw`^9{Y<|Mr7J;]nKx	z"'CݍI6PdGGPc܌I;xXIf V\^y#9fq\]'tx]Kl]yW	}FPK
LXs    PK  C:U            0   org/bouncycastle/tsp/TimeStampToken$CertID.classOPƟe]a|S&M019MXrEc(tҖD/2gӕ.=ssw߾`wz9CRϽz0qv#HtK+4۵}IUvZom=MۖCMs\$Zܱ߫FȰ-^ƻV4+@p9~/wV
׶X{מ~;
maVS`@F

4S
d0OV6P>pBĭuKDr!$jR	\(~|ӟ
!Ka`&0&Ւ4Lz
B7pS,VTaU*楚-9tk?[8YA+oqԬ#Lr~(q;z1ΐ7'{DWW@Cdrg}MS]4>"ӟ3q
~slgs$UiF,(I:s[$UY\D	PKwo     PK  C:U            )   org/bouncycastle/tsp/TimeStampToken.classX	xՑKۗ,6nG=&,+0L[{4#{d܄܄p	196M kL<.d/g^6کh؟~իz^\G_`Yk"hF.#"3G>]Zy8ZpclH沎D4BF]<]hҩ-4ݐΦ}	:&t.m<uc9#wtl1i8q˰s|';GX12&̼ΎV>ˋL
'wzkJGOp_.?;+ddigwNھ'vŋ73渵M5'&lI+>NeYk$ݕ,+
gVnI3N'x5~0y	)i_ ʧ͌-7*gbO:xo̰,yڄӼۣCXc۹dZ靵qL}*9
&zoVDZfAZ$M.fEn6s@zԲ٢vI24=MRV{
Lѓ8)ς딤M킕	~˶Q[glO۠=aLÛɳ6qOBbM&*]Zn/uٙ
O%]ç'A`qYrtL{^u~6Gr,ⵄp	lgNs2,e5a+k,])1kҩ#yDư*aC;y=,L:GÞMv$اim
eùKbޓ%y|bijF;cfGcL53=8{bYU]{7k!I{st&֛Yږxyu
YߛjavkB!,0[x>\\5{;VbTG8[d<^y|u8y(O;Iᬄ-q;V6>X6fzޓMUgb	\b^ش $qW8/]d{I;6tkobF١[r8;2yaG/aYÔ,T薜`+KE.sI9܈ƪl5 b3?0<هE^V֦pn«#p
PZz4TYƹK[|[NXM.t
1h嵬kJ\ud/1jWVg5&9qyJ)rT8'
"W;}oR'VG'_H q8^ɕؾ;;9'Zm6߭}[bkd uEYUvL&LsYJن5ure|#rǰ'ff)WH(+ܮpH;FR8pw)
G
)uLaTaL!p\BFa\!SPW!`+8
I
N+ܧn(W}\C!N:^S
d@B]mذ-,եam}<J⹇WFk{\+
/ux"wcIJ̹]J&ѹ}UUe[Q7$*+XuӼJrZ.]>|Q
^Øf9A~W]@5Qv,PK͛w*,U7+|=gmUaPEfrg5\3ytoHgW^b_xJ>ѠI*_9S10*TB/<څFkuW~Pn-پ5h,t&|%沰&	\J7;-tPVrVrHl
,osK
>*55WhPhYㅕ{=LN š{u[:>O؀1,Ahq@V؆V;CXcV؇W:ގq7~ZfY>,?'Z.ѱ?fwu܆_ұFWulƯ؂_сбV-i~OE؅?q?HX
o؃?ю?IHk7ot|
щ% 2tD:ǿ	;f|+5Kaj4<J4<F4<.r
OH	Z)F`[5<E5<M->GWk<m]ԣ]%U`gi/R/QT/SA
?B7iUYYRÏ
?FN
_fu1
_+4<O\/G`
7jm,n
?NWh8GM	5/4|vi ~)n[4Lh&piZ+Х%IXe-Y("Kl4Rͭlݛtɭ:a1{oUh?N9?:9>9$QGgm%?9M^&=Ă4(kϏtL{ő<12Ew4"GFuz>
OD8/)x˞u
&EL7PG&W{tX<#-SW<3౲QMl')]-6EOoӄohށ<̌wt7lmkx>WL5i:2M)z
1}Hhwc[E"kM<nj-9MǦ4x#oG~_"YR:)z: 濓؍yZGʎլN<:(<yI~UyNagֿy/Um9!cM6m:Iŭ8-f00ƇJ.~U2x>2Kux%]aT2%aW2%yqD
FZJq;Y`+DiX&f+Ó V~ xpgFxYݍ~w"4JU$Hv7V#+#mM/umM+#;Sbߞ(JHOa:"t+UIyDwMӃ]EL
%Y? /åyN?[~"VHTrTNRH9D_).z,6Z.!\y7cKU
]
g.UD;װdkhx/c.@
ܭp~CEn\Jr`ƒS{3^:eˀ/%ߚ|V"D1s.qkNfw鋢S\E PK6<>
  "  PK  C:U            4   org/bouncycastle/tsp/TimeStampTokenGenerator$1.classU]OA=KeUT@EBH#U%&Bۡ,,MgJ'&&c$.qsgܹ؟~0'bN:#˪U5.5T
)[NVqxIaЩ2*x"oHgͱl.j)Ao̊6&^w
p(´B뛶0_<-ZJUޠ[Bb
-76+GVt(ykhkRg[mWMOh#MT_SGngtHpg0WKhYDipV\TkS=d2'Df$J:S+*A,!Z:YSS:Yf(C(M[~ԸEM7]k%黶9~5-!އ?nlʀ+⪁sf)Дn4n㦁SHa1d0eG>0 Fn\xѯKRO<qx-h<*2!ԕC*؛ŐDhX2%WۄzH^8.fʎb2{MF(^"?Fh300?0oxE'`;`y~!SAx./%ht(H?PK    PK  C:U            4   org/bouncycastle/tsp/TimeStampTokenGenerator$2.classUmOP~&Qd(")W,25)!/䮻Biݎ߃F jW1[] 6><?`
O$rë
lQUdkWMvvs C}Ӯz4*_.o0k(k	Bnn[
қlskƋ&(EkԌt
&q9FCn,:e	峢yȡT完
p&"fd.x]:
SJˈ@F]A!/ƊMmW-jϒV-c;ɒze_CE.ngUHh=`(.u4%!02F,-ꗳNHDp4f\Hi"2:[Uӷ'QNq^`׸̱N6RwvѵjPݩxՎbW55
q]C/2ڠHsCC;njH▆3ʱӉubSC!0H#)`Ag<YtX',sãÞ:.J.Qt&-bfP>(4a"j}w!?Im]i}dS}|Y$z#gLc6sm(>ar_zO>fv$d;B^S/IhGxB^FPK    PK  C:U            2   org/bouncycastle/tsp/TimeStampTokenGenerator.classY	x[ŵ}}$ND@q]axI-%(ҍ-"KF-l]ކ.KKDJp!a}}{-/%=^ɒ+~{fg̹g̕ N?azj00sP[[pnĵ&'-,gIU|X/Ei݆f)iqF0Ž[ۺ	ڢHQ_<X70Xl1Ym`<	a$ `xsDzioDA/n޸֞ލ]ntuz	U;<-]1Ayw={cO[1N|t^P,^jµX,=l6_xE}Ꭰ?BALI?B!lডђ9U-f,i71a&7Fa
=EaB1`pE>]QKVMq"1^k?jVPr#Oc
	?`nUZReC>9,,-3X36"`nzFXlE1$Z*tr3bqK&Ag<Vd+	s5'e_/~:8T}}g`0VE
^r3b;]C7bDBAEѠ/94IfϒH~8m
Ysv/9SXm!c)aŒNc<`i;#oXQေkbmq6,OO7RV+qy0aFZ:~MqsyB!j
-Y}fH].5q"Sxy(
9]>O8nSź>97*)
iH["l2*#n5Zy9QE;|3Ĭ+3WV+;evV\l0bGi $;4l>
)R1HPPY$3];/sm~_,2\Xx۹9	>^ڒP`ScA_`Ojz%e.kJ2{^$Y7qvvr[1ךZ6]w]MP4>uP6num?y.۴afXh/+%-.!->&GfZJlWGX@JPKqXWIq$Xt,p
e*7m{lȠsYM/
Y܅Y&ka\ȉ.>L5q29c]sZln/\qV-oB2X{^JEƮ^|᳏EQ#	
΄]&ˬkbulXT2zXή!3=&9*cفY?I Krܡpd[82YOέqU+ne0utWb˼^o1@)xz.TXN"^
>!6*\SؤW(
A
1Vm
.WG>p+RZkv*\p
7*ܤ1z?WE`qG6KOLcz]\j$uKncVe]rV|xf'W,o5u6rOZF./O;g*ucy
V:*gFI&:~ߛ`ǒvl]*쐒:w^/b.uw!Ħ+_pŖGVP5@0j?!
x,}yjt<Q_YhP;r}kZ쒂ƮQ,nA2w.ayDF^V?*evpٙB-1@DIKSUy;enZyv	T6̙{6.vɶ.G}6,IO4Mf<ʟ6OC>wO*oδP٢{͚cGu{.N..2QoĞ>;rw+42ɝ*dIs(bΣHR̼o=ɯ`Õ6x`f~SdS4}=8FX/sL"u:7i'yŚutL\y{fW`KSF\K'>):V
:>ut	"?EPfh:fBr3@]CgRYm.TI:nG#TLj?oX_8IDRǹZ7:RK{YGEWf]Oi7[G%SW;c
q>
t P'p8y	T<*ph!%2r+HI&bMd_JSt;4Md3jf
Sjǔ[rN
'0Gx,X(p@
RS5Kgi
QY;Y`g	#$,ЧQ<@hxP-А
I%i@H^:EM>hx>a.
iO4<Ig|XS)F]$ЫYmpa
Ӊ^
/4n'I/
4D>$Q`X!Y!
]Uj8IEK`z
%y@`ޠmޤޢs+x^G
|V\ `+(_iiVt)%2["oА|jF
ypckmbA%iߠya^j81?D/&eվdcSnoMź?:!\j/H̒Ӓ)erelL̒3SAc=V
JQey}$Lcpp{qȤϰE@9'{zC+v\!Eqc(M{Lugz
Wws=t}}qАgoA(v$YY.G N4Aq#Ac/77$]hmBM.,ŁQ<ǟg{h$)!ǒA	%kn07z*I$ymxwl$=VuDKL4I^keޔʒ8[]d7a~>́~F(Ux]%gPd
+܃2
_=½m)%cVfCSxT\MXMQ
wWN3>:xYǣkhQ֙l;mmrIq_3iϊ3aJ\cyOsץeZ){f{ig1NuZycgߍi4.MP=&Jx$;-rq='i,6q(.~|=(]y;qvh\\q߁iU3Iw].Č|)/'wgZ~)FDYԒt[Y^{NsDLR=ir[+ Wk
gSug48+]G#N8Y.#	z8A9$WbM,Q5doc*$}խX[œN鐅,UJIA6qw/]Xq]&話5f{X{~RYmB~Ixs>k~HxSUΩ1wNG?-bў9򊳊7%	geuQax{:$[첧<kΩIz}́*ɁVYVt.^0˞x/fF3Wx0f)ƿ01r}߻3
pXw}BĔ$n'F#r7߫
+|&59O30]NY;Hn
\..	2V08=|R}9AF~з&sgI5ϞRZSzfsK%K$$.?얈-oz,N:\SZzqHŔ$FМ:X{hڅ#'JLJҧxn-A7~a?,֥vjJq:ۥ泟0jƏwq6;sͩ7PKnW  +  PK  C:U            -   org/bouncycastle/tsp/TimeStampTokenInfo.classWEǿkaYޥ`
B[j*l4Ke3,ݸ;ӆs9[UcLNn񹏹sgpvd$4қ|"%~(XdN*2	&QtUl,W0sj-;[`	]S-ɇZf	+2MR-<΍R̒e2tifuhy^Ѵ)zmzq^+wG١]&Ų,?}Y]_)
`S[g2qVچ=zㅡf;BnmvumPoÙ)Jf_Φ9sJIf*s7h-0[휂wXnHD2Cvr\/s({+^eO)w seG߱wGJbF#2B@UHƈQqMuT+ekK[0D
VjCR΋;JEi%S']ܙn-\x,jA
uD p"8&OzåޢFĘz'+n[b3h`RIp±WцOUV4f
ZTъ;*qWE{*T|b U\_BƗBcAE/UtcYE'R1_+7
f@÷
n`C,քx&VNy!!DI'TR0u|<ZH-:'t+W	=_]tez)/. Ml@|(5${׊%@3}~Lvf*v^^}~?nJ+)
_6ɸ-S蒌iOM$au)4Dwf^b

 ,I$:.EP{هb>""gtEә0׸%GP:`9AԤmNv|[WaC7&l	'&MEPHXoӋ&er*XlxW"UQ~5V!:OQYnHfD bOv#PK,rB  
  PK
    )D:U               org/bouncycastle/tsp/cms/PK  C:U            1   org/bouncycastle/tsp/cms/CMSTimeStampedData.classW	{=c;{2YAhyЂ(ԖDKPBK$HhFnLo-KeS"8]Ӗ.,]Xӿѯ3#[hOgr}w}vrZ$4:Kh
tNKXnպ[H֒lJcinfD{*gZS]yU4jQKKeȢ#.UfX:3+-%cfq:G$vmD4-洤)AI+HX'-fi4b鸠VSg#ZxqG#iiFFU
9:ij	Iea
	aZaWl:ƛOY"mQ%$lⱌ	֬)~O_ג)LRF/<hA=쟵DsxoJӑ1Q>ZuL%5#'5kUht$	-ٗMRt!eKѩ"F7ei92rtִiP!CXCc	ʻYҎm#M9#6#ILcw/:;ҷt`s\W}Zg5QQ|gu^,eJa{Ayl
dӟ{}F<<6$aW\;xWf^ĝp3(0?NTO%C{HrfGF.-T8&*q
_ԍ321H+-\îll'g\ZgUG#iC\e=Rq-VM9{[$e2:dlC2.qddt-GF22v-2.G^WxwɸRUzO|9@̊
U{DR&CjbS;%[G?UM%1wdV9ӛ8Sa@]%\kt`pl0N,M,1c[IKݹzBΩ X	%z!kN{탗Xr+NlӻVB\ɒ4
9_NXT~"U"l
ٛL_JZ)IU]o\2;!#/u	b˩Fx?H}|6S,5L**-*hF
hRq>C3V1L8163lcxC3*aZz$uDE8
T\kb"Hx2<v+CTq-,oGNq\j̪PpÇa؂ۙ1D+'[1O1|3
ܭ`?|VAāN2<xTuLƗWN*8+a{WC
C2}_gx)
nķwA)	w0|~o0<m0|'0;Lߏ_'Ecذߩ
 hD:8' = 5ziJW8c00fs Bg$BEL(!g{ag
xlyڡ4}s/ݜ7h-h
7Ș1I>j߆dl\̶kH^O4pd~Ovu)<ݝ/h1;ؿ^"D԰]8}6ii
{φMQu+O&[&.٢Lk&pB-a|g=EOx_G$cö<~<~<~SD8&zx_B
W:Zz)6asܢύ6Q
bsXWu~TU,%WFWEs"su%էWJ*@
߼BB_ltnvZ22K~8Clpvyڂ
vW9ϖ PKu߇z  d  PK  C:U            :   org/bouncycastle/tsp/cms/CMSTimeStampedDataGenerator.classV[WU&N-5Us-MbrЈa2ā0,R/pV]eR_/xg0IVÞswٗs?
`
_W	/a5	.o=&]im4]nf$Ղ!aXynXnjjXʩ0Cer!	=Y*%Y/Ţɥ-uW
V(h%|xAWw$\nZ^.r|߉Fm#[SlT_d2zAb:&) =;:WtXlh*ڞyNEs2M-M&5	W[5}ܨ3.O8Ɇ='AN14Z5PMC/[:i07\| Fk
Z1vWwQ33\p습ǣ3
7a1h(31)#k5G\pD障:~CSȜLLJȉ&?U y=Qs~NTF%LJ/s[gZj%ɠ0bcg8paayO1x.2<p232130\з،	6u	>.Xk
z}GR6k#xGC~oPA<|lm7t.9\el3b֠9hC<&Uf&oVZ1mqS2F
'n8ukғzLb3bwoڅjC}.wxjXAb
0,\EnPK
N"/D7^PыB$xI/+ł.*`Xe2b4V{1!d ^u!2Ʊ.#$!).])%6e܄*cȸwe22nmw!XEV=F7S'm{Qͯ:0܃ 8fg+l t	E_~D>1_։"6:"܄*`ɺş觘WLW`.`"83>caWt!ZyTF*#O2
W&]e|U\OЪ$fҁ2>)
n)	[O0PTZ솻K;Hp#p"I[i<
>cr_
RN%|ES9KS,	F9G/00PKfjv  L  PK  C:U            7   org/bouncycastle/tsp/cms/CMSTimeStampedDataParser.classWsEvrbҀ,QŐF,;Yȗ{x3ITbDGv~߾ݓ~_ lG1PpI*hP$rpK0mST=nX7#RcKapoXgE8+o!F6+씂3[{19jf)@5L@hްr
C%jgbF
iwM˨si=FP/*yvNv:E4qitW;L5m9lENi:n)rR(b=
vZ
jO1)Lv9"lZS74,3')VA	uؘ3buWRYYNLK4[=Z',K
kM355UPi=yJ	JKFl!%lN8V3&MgO9i{w*51sX$y&`:4^1zk0:Ň'Ϟk8GJ<}1Rzbm=u?ٻakv:.+(>7aձd.[A4&=GM/oXdiZ
u<Y%R:QK졪E9|:=ZOH:e1cthI6r6N5/3I<IeMM*QQEXEsUlRqUlVqQ1[Tت"b-ch+m T/URr|Mg,~Ǭ*j. b{UA#DONKIЭfȀ]7',lf.9s
'W3
\IS*5J!XۛQx r'-~yܚ0*PS
&9,_״k x* yֹ?O>5:{Gj%Q7@;6. R)V_UNQhǄWeN%:بXtabRLXflֱL^G'nִQGXtw
U2ܦr:c:4%t!g"͐vl58K8q+qȰg]1
ȳGdsq7{<a7\
<(ՐŰdٸl0f}l` <6OyJ8r0rrRչ{z.$YA7EM"Zj㵨<¥[!hL OG=R|X]ib=_'	-\"Zi|cUce4U?ݓxSlZ9]K+^!pSxA0ZЖ^(!T

nGUo<m1?iQr_[9	,ғ##+O^qɥPP@Ł֗~EvMS׊x'֪$rWч*?']g>L:</:O
zQС5-RRJ~T<~K5/^EnUk?Z?orftT%Q(oKaU_sf}OJ[zRs>,v37l1Y訌Ms$
rLXU˛.U*%PK  4  PK  C:U            6   org/bouncycastle/tsp/cms/CMSTimeStampedGenerator.classT[OA]X
rjł(R4M(&i4FDGMx.B>;%dh1f1x,ے<YڳBlGr;#xrD\8ϊXXl<9qY(1tq;kMdhɣ0Z(et|pG{H,*r1儤Yƨ:lvXtk
Wj*w
*f<1#*P70)q{V^$$aRUɆ!IitGGݭUC]C
ibܮ-܍o`WZUG۸N֦W N$W-BD͊oa9nHp*GḎmDy
Cύ*̇<Að.0eƨ=TfJM! CCH fu*ǂN^SyC+3,ЏLCݳ8/tN`bz
$U}4zT}>X:zc!KgODOmilBavgd s,	@S2F<,
WR2DeD+,/vun
ѥQBү=Bg_
,+!)FIR/X,c5=Z^QPKy  W  PK  C:U            <   org/bouncycastle/tsp/cms/ImprintDigestInvalidException.classPMK@}6mc5x 6Q؋xE=zk}Me5لf,_)(?J
=0̛1_ 	YT^LL9#o.=/F.}JUET2+˩utcf*?DG:=_C
k6B4c[q]L4j-F5m]sn''INyVj)ZR /yEy9PKbB     PK  C:U            +   org/bouncycastle/tsp/cms/MetaDataUtil.classTYSA
ENs+(^	AԧafwkwSjReO6	hBiR__2tҏ)ÞԳzٮ-oz~!oy+Ȓl̠\p-o]eE+"vHVgĺW"D2	$
By.yX~UERIܱC .U|JDe9XUK/ *7m\*./memj4XW;-ŵa*>_uAbV^P6׼kx(aН6JhnvHJ;ʴxTmf{'یeJTzU9"!vSViyU®&h5^F4jاaL
5parߵ2H;FW;LT6,O@cJ+jZ>~/.wI[JTMf]YGd:ԼCZQmh6SgOwl㔁^tFcc`){6pD1e` ⬁>L\8c3:8.(rEǄ:MD[:N"WU"uLN^nqzՔީWՖS$ %NEЩ;CtC}=L3r}`ҍ@|BnyjXzܧ<j[{(|oxLՐ'VMH$D5t=0>$rxFʃD	DP/Ny!/rg
KW`0F$>Ƴ[ekX˺
PKF.    PK  C:U            0   org/bouncycastle/tsp/cms/TimeStampDataUtil.classWғ
l8i$n-ņ!	YK+yAWG&-}4%mz#m9
$izi6?3H"rx{f|g޼}M]hwa60Bȅ}%Ⱦ=;$8|{vRH$8)ݸvJhbu{Fx`*OEGԜF.Гڸ&3Zj+)JpYm4&"jhaq"RijF3^'H4	WE4w$th"Z)oќ{-okH:{<X9)5ϧдxCUOha5IbKh~'nL'%(
iQ]8,吖˩qZ,/2HqtxNuv`Y˩fZNZZ̬Kn.#΄̤jb%pxJNҔJ	*^Sɤ"^猲0礔$-sXLj)˦ZzcT\$^QWzN{-S=*E|l֘섚	-&|]RڧE(U+,2E#'$T2t*|_՝QsH27Hs*ohT@@:eOVԗ+gP	Tt`爄d<,̼*2а옚1jkwKtC鬰JD-4^Ů*tFrqla!+ړuN_վ]u|BfmW\S1wSE+Ѣbh^W]+S?ПͪlΨfCAtD7{Avd5dGuS1җ(j(yFͧ^zj/VwxE:".booL[-=nIOX"TW`@
6$pVmnxv
	*pk<.<=k?$W:GjNZ^ܪh^暟+OLg3R@;oznBy{Du+|H/IW4[nוVuW4\[_K|.+_){MWcVI#ZKb:i
cuT">1e!*wiq龎*e_e9TpJ/PONRŲ^x{G$׈~$L_Z!Z!7<`gCþ
eykm\V&$܈Ep+X
a[(XGJVeɛ\q5Ȳu쀂.!>Vp=˷)
zv
xxNEޫ
هއ[e17&97vL>n^ށqEex܍=wL=+L^}*Rm7<4w#O12oǧ<nL;n8&_dr7I`]7㳭'<܊NI3}vn1TEԌRQ@DYEBF3uY~8? ]O[n]T*t,+ēi<BJυf/='óP'gqfZ
x
|gϟA=V=|4~^Qcl>b,!y쥄8E#c9n'p]&
hFtݥUil	ןCჶpxNǺHts_	/1Y7g{.?{a
vNbz<+@'Uя(~wAly{9+w&ܿ'I2Zƥ*v=.rv-IAoѾ,&!&lOQ3|Eɠ\f
#j{XNRn9
-e3Sf"wYe{ux.7oeL0eF#h&NKA,7VG[N1Sa$%:bqcqp,El*Eʔ{Nx<By %8vJ1*C/	1obAD\ljL5XHw*n;(SB^:N`]Y9!8ٿv
NB<=!t=-2J[LrGp_f=cO1
RQG*HERS䨓 5=\H30%hJ\cDMd/b
M/0FhQ&~2n_
}L~vTFBk|tiܾ&Uw[OEu0l	X<IK38gPKd$YZD	  J  PK
    )D:U               org/bouncycastle/tsp/ers/PK  C:U            B   org/bouncycastle/tsp/ers/ArchiveTimeStampValidationException.class;o>.F6̼;FtҼ⒜TԢb}Ǣ̲Ԑ܂Ĝ̔Ē<׊Avנ`:v&vfFQ
ĲDļt̼tk0{XXSRX\`C6 MK{;F
 PK}?;      PK  C:U            7   org/bouncycastle/tsp/ers/BinaryTreeRootCalculator.classTSUnr7B1KRԀ
uj|%ف5Mg'?NL^u"c|_p|`h݄u8o{9={3 Øc}SSif. O"cRgܴ.J)e϶Ҳ\L{toZ(-Z_WКvbKʺ_V\y竕g8+@ZjȬ9YjK}ei)}{'Շ*^N_s]:],> }c\Er:[,IwuX*Zpk&Y|pAǿ-gH2︞UPյcR&9]+ܷ}9y
U*<{NWfs
^8/:az@cG8cԁGǏ1ϙ}ǣ
Y\%ozq*8QU[f '`SE8'?_O&qxLG!epD8tc@G.hCZу(:3E7މ+s%zʌEa&taX2'-dh/.Wqi|fޓ/oɕh[{bx!;YEC1@6!-y~н13*{;`&<c<!d*ƇFF0'Yuρ'-t=?UoV)=6l~w-<E`.Z&C触)&"o+M@Sj)i=Σ]1hHm !\"]4ҳ:g0TS-K"7oɐɔSAXTG-#{v<\UݕT0b|H"ƫu~?iFTyP8D0b׃*':q_$1A&fԺ;~!nwqB}z4f2V-7]x>9PC
>_qtsPKn8  M  PK  C:U            2   org/bouncycastle/tsp/ers/ByteArrayComparator.classeO=OA}Btv@CDLHX-ǅ'GńabcCcebAN{y6{B`Kg=BA^x=БOVwI{۴	#B%:Cʏ16~]$2HHa`76ohHu+%nҼ]".,3@l<c	Gn&O˯HrWp۶j(،+j9oNu\yړ;AI<)wy$'m~@ PKR|E*    PK  C:U            2   org/bouncycastle/tsp/ers/ERSArchiveTimeStamp.classW_8D1*4MH
 fef33+=>MkJ@b<öiO6}of%O~x{}7V
;p[pPǦC6="2)gdHd*x=2ҫ訞bci%ljۣˆ9ncbظ:ʀ%OTɆ}ZN
XtRNCbl@ظ;ѥkj&dZaq^Ț" $Ɂ"gBRߘLkWM(ՑLjO%rWx
ONT4o,S4g"ٴz4"'\EhMwչIDP5cO:Oǔ8o0HAsg&4UKyF ~^=ژ.`y>kP?hv(difN%t@{ê=NSU)[:a]q\9}*,U2ܤ%yܺq%F5ج&]z2I<[rYv>הSdcnSn^ȓTICNxТ`NB뻣[%1ZvosKa)ݨS+]nϰm7IaGyCȜm(bgd6yܖH9SR1̒gA1e;UMFt(|T%өj|rN].͋05%"vu|&2Oݐ2IUO]|gNZC铊S@**P'	Ez$F
&5Vޘ<+|yCBb},#sԪ&zctLVQDl&b狸]."v#"qDt%bn/O~tF:Kjxٮ&ͥDrۼ44%l
+]^\x4'<~X|ddamd. BэMQ(|lyֲˤVvSt5D=^NH)T>!
1B(FOdvxD&ObbL}8QVJJ~j%W.E(2]͋ܐyWUy#d60n%=7hi=:~z>;8wJKE"Z׮ȑr'Ŗ嬗=<3߭/"ųH5IX]$~	- aD	kP%aJX娖ِHKȤᤄVpN$l+$46Un^WKXHk%$4!	[	7፬&	f6	$oՇbbn&a^&0>Kp&a|"<SL>L.pgA&
>ŧ||& c$L|,K.ćq29W#H5^'qs՘}u}g_eŲ;q@N
!E#Je9H9GJ5^>R JU,~5/!`î#
ˡKPgi\	x2ebgY|gWCzXi\9}Yjf=]pvQxGIwo
|'bLĈHD> ⾚ p.;ՆAhZF0P,M`y(h10dDr@Z#AgH~gP938twgC	F;~^]Q=2B2`ׅMu39ŵsS($wß| ?Uzouu&Ҹ:G3po?
}D&Nht_N%4əo-1a3v:sg+aI2+g);3xHxn<+D&t}yh	;/8E==^ ].dTA^4ՍJ+h\ܿWF:x]	n *ʦi|SoCC\oyŎQd3CZ;&r!_HqX&-nWC.6Z&>X ͳ$%{\drҔ
qg*%Oc4離+MYH]/:
qPK\V    PK  C:U            =   org/bouncycastle/tsp/ers/ERSArchiveTimeStampGenerator$1.classM
0D'ZM (Ez4~6)I,x5Coyy/ kLZR4Rפ<BCIu%YUV=]2/@2l-Wc1dZ5U8/͍avaosƈc aLBH/PKl      PK  C:U            R   org/bouncycastle/tsp/ers/ERSArchiveTimeStampGenerator$IndexedPartialHashtree.classN@@iTAPPoICqmqji-F˅1qP;@B{o9;Mݟ,JFY:fu< >b`}/$C-n;z;/p
n5q{\uc)VcB*u*;I}ъyp!B!yL}
:u i,ñ،7<O,R`ZZZr(pdSYԲ`4#4EǕ
[?^HhCZkTJRwޱ\
h(1
Z@y0zOVG62a1?lL PKKP    PK  C:U            ;   org/bouncycastle/tsp/ers/ERSArchiveTimeStampGenerator.classX	xǒ=zTF7LIP6rcyA֊Պ#h}Ц-KZq\ OBz7
!ovגa,og޼{{3Ǟz%lc=xkF^jjj1m5+f$5k700j*'RO5LLB>*!'ۮf=()3T2
UFOۡvkjT-+X&TC1ucV["R]ajJF%gJ]W=X
yI{4F]Cө>EKO2&٣i'mNkRjR&-S*ɴv)f_Aim3P%7oU#&Q-֪#FW
mnH0x-ز
$⊩'\fEՄmT8I4^Q1&,WF;TJ6"#&YhOZBp&E&L)Ŕ-'l%cGKlY[t[YխoScQVJ/R>qC	jzm]5ij:QM^nxWiSr(ے"-DliSWΏ	9p-,?6tԒqj-Q_#պa]T;J*0O[Ij4(Z4zHD_0'w/Mk%vFpX%T܋à'vS^d:.̴-Kb3-6-9Wb+̑	;
*;vZB1vwSzV@%aU5rWw ,dxVH*.uN^	Љ替'#x5YeI0krK4dh%,r;(xsL
'}]ԭNCO|JPh}S_\H61Yk1ӡz'R9qQϱcrs\hXq=
8VsrXBu7rq"vN]7slsts±V:0/ot	ghَCFLt %JW(Be%Mk/uRY;,|1V'=($w9^ؼ<WZxPX:&c+D#ͣ: ɜ2#k@Y-Ň)="sݢt9bS#`	wgpsn)ŧ	nW٨Z@3Θ]"ą&t%
TmKgL%Lv*TƋ+IK	+?B]lK	_VzՅBs^~7lMYήr0J潕P)6ʣCVʐ|
mRYjWv\6,VmzřL5n4r+1FdlyxkqJX"mԁ˘&M($c>^#c^+c"^'c z/o1o1	obEF3&Fo1(KNqEx`{ {eeLd~ed<ӏɸOb/>-g8&ZZc% '%aPf/=	[t :~"!/I؎
5	$ ?>/7$;;=DV}G" ߖߗp@Ȼ?p/N!<,#|Y֡_L _+~J(tof_^3gܖLn+KX)ʛȶ%٭l{)b"ghT%5XWCid)]Fs(&,  q[{xwq<tg#qJ|Sn<Ǜ
S5ͨ*IU;LSVzY>;0tYׁ~h/qƖSoyϰ8H
7g_Ou30ƹdKKםy4+d$7-HP簠fKPȝu}*%k&>lbܒu2*p}cp5\1};z^*'	ze4r{5dMo;
BCzxZ,\2>CCl2 (D嬊@I26dT_@Gsl 1՟Yx .+@(;%zJ/ 9BNMjhc~6V5hysۥpeO!:YdzϋÎ\:6[ib!EB#~v7]<o8)z:)uk=NX#j3'j$uae V!(
Aƫ<?nQ|)Kt12Tm5|/]o%[C"CKdXUhpa_^㘿yI?`,|ז橦e-k7rnDmc/
{?%P.>ai1Sa/HYr:{PKB1?P	  6  PK  C:U            *   org/bouncycastle/tsp/ers/ERSByteData.classQMKQ=OGNGf `"-EEdq|=th'3eP$-Z7EFM {8¹@AnD=y:&9<>'nW ˜GPL]ѕ0"EH@5
;2:9PyQaA^C)F;OdݩrkVA0)J/dLS5gdp4YH@bLdd"bT	-߰'Y+hF1㓺'[f+'D@f_#])?cR6&7tM|Ha?PK[J    PK  C:U            /   org/bouncycastle/tsp/ers/ERSCachingData$1.classA
0_j5U{
7]AOCj	G Jxl?
eGwRU3:
,CoUn^?4qtFE*ӳt{vKV>k	!If.pJ{p7}p99~d9E"DY|PK-YS      PK  C:U            8   org/bouncycastle/tsp/ers/ERSCachingData$CacheIndex.classR]OP~qZd7?:dk'Fb̈%Q.䆳kmgЛݘ/=s&l~~ۨ1$˕Fn2[JIz0^|!Lo7ZiW]3dWxC,-wNK2dwka"hۏ;҉:anv(-`[ݵv'be%{ɐav( vmF^~ bP9giI},AK1LucϷPG(Y1,9麭3kǇVWX(vH[
^4΀H!44:.)
P䊎&u"t]qSL3\}IF#d(tcp^'KLDn:*F6JIK3pô1cVQz1UiEJYPxTg}Ea*Q>@iOwВ>MԀ?P(gd	
RLSqOHɢkqm@=PŁ8գU=BOsDsSyT|?0PK~r    PK  C:U            -   org/bouncycastle/tsp/ers/ERSCachingData.classSmOP~V:a2FHdBDM _k)vi&*Ag1[H7˹=y=/_`!˿`h_t<G.16w˥x{;^HS-$Cɻy-<vD$,qm>EuEP]:|_}_~`8e唝O58˰f 4=Vx
!ߢHaU_-Vm0t^	D-}HUեI)::ud:ԥ,,K7woWt\1)7;5o6wY5cD FlFaIm,\RY
\.-3ЅA10mj@5cXƍc$LW~ȢBF+1%1$*ocDPqy
c{\2[oh -WhÔ)#}H2CLѻ~O(~hZ1tIk1Ga(CL=)|DqޣT.sP/~Ex9DI&~`RGVT"nbs"E&PKCK;S    PK  C:U            &   org/bouncycastle/tsp/ers/ERSData.classe
@'Z-]`!Zi8rn#j>%کa>`ӣaC8Hܴ*a&}Zk٥̇˵Yػ$Ww%!aW,s0B3PK      PK  C:U            +   org/bouncycastle/tsp/ers/ERSDataGroup.classT[OQNe,ZB/UDT@ZE\"^<C).nM0QM1b n7̙__6 cO:Kݰ^8|0c!6VVlnoqk}oq#W6exl#1m>lxdoYnk%n%%e[7ԱR?wVځҦaP,޼=f.by[j%Kqw.sz!ѽ<D,/3DOm]dd&]a!2P}ٿU1W@ݩibAuh1C8H#u8*9UK4 7!2?TY 1s stuW-EI~FڛjVM1<?.rkDggN5jR0	>a
ХQ2GA
"@UЀDp1qAƥ щ!a7,a
3Hfko4.h4g)|/G _iz,{IX)BzE
F$*>a45? [Edʋ܉\-]ѻC<Lhr((Y"2QL&k&VvQ'f=yJ&ϸ1r4Ioќma
7WRuL
Yq͐2XB6+bI%cZԜڪyPB oKPɳԆp[Fpd6ѹIb7OPvn8;PK%  2  PK  C:U            4   org/bouncycastle/tsp/ers/ERSDirectoryDataGroup.classSKOa=CB[AAV&hմ8CS#]gŒ-&Ɗ$E?M 88߹1?#7g 3.qh$Y4""%ՐTMO8M-qfEZe"zMeY1=xsRUͩ&Q
sC3Y֞)L3anqN֜Qsoʪ:z^Jj/Vt&-U):WC+K#W:dy)CòkY`idV%,HO	:ጜ֡
pƥ*<6<:xtqG^mmEw3HrQףӖyOG X/3pcTqnSn4Fm&f)2OQTi#BeV4QD7Y4$B͸ 3!.]Ap	č~\c /nD`fRn`ܤ3c~ zήehBKڒէrFSSMA
L	6)Y%&I/6	^>cjKS;_Ky
Þ1{gu";-RZ½m;|]+Xwrw#[;,vp%vidи^yphE+5(r`[ːj';)t_ۘ封amc΁'\_ I?[BZ%չôxenPK1L@  
  PK  C:U            0   org/bouncycastle/tsp/ers/ERSEvidenceRecord.classY|SuO6`@YB )rB7qm`h^-"Ktm 	I֑v[&۲ CB[vۺvf4{kʵX˹?y\K`x̏~,c7GGgtN]9؛ɍFe&q-oOoltG.>ԇg:kwi41yDB`r]	Я>LM<ezjg	i`NOGt0RD0aD2gy_KGN329q-dBOǃC=Uv3`"9A,-|T&)Rqb
'3b]K&R@.3IZZ\ЬJ:L\P?f䴸pbd.oT:w٨e^uyv 4mYb(G,sA[Q;R\d(d
.{C|./e7_ZΤ
LNy>Xj_vW~r{&`hsw:em9Vj)j&'JH֒H/{=ѧ(-5RO0etieg<KQ޸d=ad'!#k2Kkベ)dz[ϱ]q	*;)/nW*JEfV4/90yN?NĂ$&g {A^OEGI-D{>׳F2C..ζh^=ړJZjGntb -=tDsm, m'w%x,39C5m.O5v7<jcB,Ninu޽d&v(#Ḿ]* 9̱Pue3,<Cvѝ2S1|o\vpYO7Wq^]?A_k/A81Ln9}J Z*<e㶨kot_&kݼ]e3gՙ?9p;XXSv9Fu?!ͤy$)ߢT-iCʪp<nVUTƐ=D-\yy
[=ox+/ZטH)̻ƺwF[	9
{[x"ͽl.	u
~ƳZ}gqYP\6o!T5DDĝ{$x}{%^%1(1$1,j}H8 qP5W>Ih$		qXbTbL")qD~]*ӻۍU^ 4|vڸ]	|s
b 
ls1{KsH4ptS#f9Ɗ(,n'uZ<4]t1|̢ٓz1Ano0/59(a8s]vNy"Ns3:뫞]6x̩GjGxmk(~^oi#&S		c9EV9DUx
S%S>tW&e[]/
9Nܸ9s6=UU|޶vjB	Br׺X6aTuE	,Ԉ[_X&r;Vreju#cz{g1oٵ"Gj)5}[+[M6>dde}oӫ6Zڀ
z;BYRtמeMYJ^"-n?lڙG}?+
;S?zVtΣ?;*XbQg{UTYA_LXɤ*2yۙ4CeҤA&Y;{*Y71UL0i؄s*ncry9Q=ϯxb#*W01!L>"*.|TESq+*|'U)m}*Ϙ9PɿJ5Fz|gyk*ڙW:U&_cu&`M&bm'_
wH_w"?&"*8(xh!*eS+W"ou
2'xgBdҢ-BQVѨm>d%U
~dO~5=e
ލ0y3iad Lnb
L3YdvO
ރk
N&*6&A&kd3Vox;ݙRry&*}Zv'bJ@+~r}O*9`?'RJE8Aox?)qQ(S"w !S	m%6Le39y/i~/u\BbcGA?R{cP,~O)	xDgN>4wJB!iqdJlIV{2mӱ/?g}+=/K:\Qz^񦑀[EA*-AlYX8C+!	<~/MqQ]C
%&.J<,$"
xta,_q}};|Pi;Vt\~Xx:c;/nosΘآ
Ml`+6q{7Ď'
<5>ӯ1Ō(S"k4N鑀Nb@CA ^QbόLm$+wY1>dyOSN
W)jUr50fwGb
%ʾ(+=6+y|^.2tm/޾pSS
v4E.YJ^l	u ϙ."?eok봅뢸O{)ÔzyQ9gF-CReA^/ئ"u?l;:GAm3Ryǟ-5>]lЇλ襴620J8]ڋMyVͿ uJ Ȩl_6;HW9}+;k3}[b^ӧ
ܳ^9(r7(i?^xHlrE~Rr9|87ܭo?EduL1T^)+Ug#ϱg͜B,>EeI]@koJSܩN̪(tf&w){q{膈 [I~3]khq_c-N%'-[wIX^襠<2}$lxNK!@}vOP='G1g%5S̡KX7iԳ>ʟ6t<嗌3#Bq|*zfa'IWz	KLA$(M/:_}F>ju#1|N_g7LxSϾì1iG|u6b4@&y9]@cI6$(+?/0?""FS!Rr-&)i
pg5-+@yR\|UPKv)Q  K(  PK  C:U            9   org/bouncycastle/tsp/ers/ERSEvidenceRecordGenerator.classT]OP~6)+Cݗ	:\B(aKqK-/D]xD=Ƣӧy8 G˴e[~P3-s%)3.}6е\/po
 *VAq]`yvU 渦lc_:{E}lmea8.iJJni!zrn56XD[ED3zm'?qF:TWTNߙ=J|d%W(*P)+PЩKiɅ:NXoeJ	ΑD7K-^Xףcx}6VMN"L	c&sR!h2J:v:(Ru3o?w3
Ifzuiٌi8!4a
.j%]f4sqH臮b Ub
}I&EiiRYbh佇Ԑ(Zi!!D&*H'1
apmk%?aWps'r"`7=%wqP-ҩ<b*8bCx&	N)}(:>PK,k1    PK  C:U            8   org/bouncycastle/tsp/ers/ERSEvidenceRecordSelector.classSkOQ=֖Ѣ( E\E	
%&x.io4hb2,k qs̙3ݟ~gRy3/Mew@_!<MCv}n{-D)0'Iiowԁv_`-	]zzX</V
ZMt|#Snتն7knCVNj_\S5Z=I3BPz.
d
X^G7ՋXM;gҲ\ZR@-

/]Pⶹ00f7M L$c7
&٤1ua3Fwȣ&<KcJ(%6eYւ}ϩ<Py%vdS(1Q'RB0"#>#*ߐŃ.?"ZIęnuqߪcb	.cO5LF)C0i}ܧ(LuK}D|h+~gCRF(eӄ4dxJ~_+I~HN
g"iU,ErpnPKYGO    PK  C:U            >   org/bouncycastle/tsp/ers/ERSEvidenceRecordStore$HashNode.classQJ@=ZSc|Xj.@q!(JhŅ]Mӡ&-[?J]9{Ι{3ϯ7 1DJbT!V0LX20JGq}D<ܿ:!|ڻ%}6|?pN˸l02n1M0c7Zj
Ua^5牜s9
,8<+Q0`N<C2~FEIDjBl
:dXV@J"VdXe=cC8NlhpwxR br*a%N-`X S,
>@rFb8=83n*}@}dJ	E{a-*N6~PKfP  F  PK  C:U            5   org/bouncycastle/tsp/ers/ERSEvidenceRecordStore.classWsSU$/&$F
hZB4T" #}$&\p\pC

m#3~vz{i6	{眻_.X{UuItGU5dQ2j:W1h"eSjWI9PBMZ8$fY8ޓ5PK۠%.=Paz2ED#ZN9zi={jHh)9'uK>]KJ+H.BYf9iAM'Evwkn6M[^2n5)%U#N1WTTE$iz
=oN&z˳@<%M=PMg]M:931PSL+xiaz77=
z\_M<jʈj~5[7R	bI.ܡ&
]2X2/.G7@sF-F3@RS9q-ZJm9VHK-:]8k}ruB0"Њ"-*9n-Tk	rT2=0
x^\uRoO['i-"Q͈Ǭ~tߴXO7YgJ"@V
,]R*jZO.K
,BRsd*WXMDOm_$R^UZ:2]2gͤsL<U%|Y\up~rW_#郌
<iTLwm}H7<6)Ze>I -W|^㣱`+_EUyyv"jf{w/k1!7yMEDX+&؍ڦإSPNSY
H
`.
yN&Bئ`Tv4`Kw*p!KAv+3*^+.)XVP
y(*=%hGIUH}Lr^<&]!u0<֣ׅ6<ExEN_w!\؈Wh3nA7xA&3yڍ['
7ZX
x͍qȍ<Az|}(DT%z$(s8])t$< RxbVQhl'?R9dWjfܷ}Ǒ<֦vo$i|)B|bkpԜ#{(369O>l=oq8zQ!h|s)fhY!q7	O=>ψ13nc[,u|7q$aRPUW\M`5~*h`0lc0e:Ak&{Џ83$H&w;B9F9	|Vot jpx4ƆmekFG֏;c'"Jؗq-T+88k''ٱw<P^/Wj}r8FE/8xT?<!{fh2I[A5N;!_wfy}	#9x6c?x1lNrAA<;(+#Ks+JGh:QOÐدJfᾊY$?mMm }]$=PKv*  U  PK  C:U            +   org/bouncycastle/tsp/ers/ERSException.classuN@gNCJM_QbNE	~|ž8ADN"g7QJZ/ݨ[%sUrrLA82e*fY$lR\L8M.ui<#S[fE:g '!$,Dt%4J@_7@s/B	a>l;;b8~Arl^\cmPKӨ     PK  C:U            *   org/bouncycastle/tsp/ers/ERSFileData.classTrG=#ˌ,1$X%		" 	ƫ)dQ편@TEEUK"vQt=oLBw
RȤ0oW@i[>"pv(EU+=}gs^M<}_<"z]RJnWtU
ǞjD&#CTVPZbAYEdϯ-xZX9Eפ^rEh׋s0Xcx1CRPo5ME?b8yjkOϗ5{}Ԝ%ߗ5O#*#.Қu0vj3
ϯʐN
g/U[n=".#Z:+췘;ͷE=!U[2CreiC?ps'8sgaUJ=fHs;EC^C?+O}gVwRgrZvƣda ?[o`?R8dg,z0e ~`ᬅ^q
iKi41F4
fW40s
̧qʘ1k`!9L7}}4_DХEc.A{Jm#I;@X+n`Z(T2]M,oco0^ia
yl`56p!]ޛ!O,. >Q r'xn[_7-^a7u.9k[N͗ɗ-Udt	i\ߌ0F7-0Ƒ~"VWm,0N,|PKEI-1    PK  C:U            1   org/bouncycastle/tsp/ers/ERSInputStreamData.classS]OA=S*SHm)h7$&اa;)N;E)LIQ4w{s;e<Lb)_G^*Ä+|-׼4C4TDiWCNd2b2LUx	Wea܋
ϗfcl):As+SCEr6}_$luHh^-g*WDڗڎ#gE*]/h	-!s_ias$9.sLp\H1
0LjIMT ũ^|POjP;'jLEJcۈ#fc#ƻaM	lbn3[H㎅Z➅iܶp
Uդengh;L{`HM!CϗX(E#nXcd]ǲDv/qpR</Nɩ,YC=EĆ2ԥArcIN`˥(٪U,	Hs\PKN-    PK  C:U            4   org/bouncycastle/tsp/ers/ERSRootNodeCalculator.classANAE2Fl쐰chb;me4S/\x e&6!='R_e.W4=P\\oiOSՖ]-ەT{wճXZ_s*o<!*O*vpfhe87X<\nshq*XgtC>50G#|c/mmjաpޠsi~PKݙ     PK  C:U            &   org/bouncycastle/tsp/ers/ERSUtil.classVwUMNL.fiH[ijVV4Ӂ	+⾯(*TsoA3'Px~Ϗ 6A488iak'<bR\]TNuXӴvil$R*%'iS>QcRz_Is89&OU1)$$]iR26$VJ\fzXBMz"%i2ӡ]FlZUdL5fҌ)9T4<	9.%tSq.#Eiohi)`0	iH'?'LR"|R:*Ov]m]$](cI)@DLN銚@܅vBJƃkc[g%:Z%+`Q43<;syiő4jRxpT$c1)'䠔Nn	TpPtEJQT)o2wYMe"eSФ.4i0E{
uKtLL
.M
^87,Ami1M]JI{#җiUs
8$фܨȆtG#e^XcF	4]"rycyl䱉G? fAyl£GRcNt:I_R*+*{bW{%b\d\2\ `5SW_WoNncڶD#ˬuifUS	SoԫgI͞C7y]aߴ@Vg})-#uc̋jdin6OgbÂ Qo5k攼LcQ%`z.".
*Fe" .˱LD;#OC"_Z7DlaQ8*b#{jH"V`	b"Ve18%`N0 ! d	FpRzO0#O3rFxA@?a*h<. ʎQs<FsIF2n8#'9^n$}!bRIIϰ4±)8"Kt2
q*hhuzgw`.ƈ%"e;Y|!Me4^eS9gZ%77"-xdA-U7/w5L@8S;.@ûS^-F́\aeFyhm;/ago9Z)/Y=/8\{<T	ff K0g$e0@.@.z,YPwU>Y\p5~]3:@\c)
9[5<v_ <B1[?f"epll QEߌQvoowxZpX?Ea}ZEy׶L36?	\ޓxDhT܏ו[^P˝,DkԾQV|"j,>Q[^ɯ`P=P66ZPFYQ*{Qx!i30jGsL㼁~R%VW!\Gll_Oel_t2z=V6bvVȽƝs襜g͗PK9J    PK  C:U            &   org/bouncycastle/tsp/ers/ExpUtil.classNN0}צu	ZV:0xabA@
HN+ˎT	$>H,v;ݽwp!=>'tϕQp;)ZB|	s"d+k&F<&E*t,;4Cat`2E}rUdZNh`؋C]Gv걉V(sPa@@'Y`=K!
'Cr{PKojD   u  PK  C:U            *   org/bouncycastle/tsp/ers/IndexedHash.class1P(U`@$o1E'TEZ+cDb|(q%w_~K{ #XPe(|BidPUCuJab\HY?VZ
FE
eUT\X:ptE(1`%x>pŞe3YI0}{?PK'      PK  C:U            C   org/bouncycastle/tsp/ers/PartialHashTreeVerificationException.class;o>.F6̼;FtҼ⒜TԢb}נ`׊Ԃ<F[J2s<3BRSR22AD5|sK2ҭ5xb`a`gd`qOIePd`rAـb`B6-* PK򼟂      PK  C:U            -   org/bouncycastle/tsp/ers/SortedHashList.classSKOQn[:mB[^EQ-2>T
HĚ
m'e`쐙_#1nظ%1csgu<swΝ~11t{!%ghR*^םip7*	tv,s[+*UniĪi"EZRW
^wZnh
uֲ.-cZ%U=iԲVWثfj~ܶ>oZVIz![L#S$	m%!SB!Yj$va"<\?ˑ_Wҥ;pB)6'aq	?zC%ttj%G
NhpfQF+dpBFLF-8)C)ɈⴰΈ찌fdGVHc1ᬀQs b)6f.=:Yt˼++]^64Rn'TG,&(B,=˙-lc#&6!:f/5[}EB>9YAz?xWy-l@p[|/oR~kW8)f]KDﻤWh߀ət5 lA81
%H&.$z_o`oiش.Ӽmq=ƽ-PKN    PK  C:U            4   org/bouncycastle/tsp/ers/SortedIndexedHashList.classTOp~l+a."tPQ1eSdfƇ
ԭ(̕tň`41(B1uswN_-x5Y,J1xOSZQUJf"TMh<\VLjT񐻤qaT2c\T)rY;EHn;bey4Zn4c?As_8W41̒\0V*բRʚlUeͬUK2x(=[Qǚ:K
=䚌o2/]@NGt	``kHΧSUS"053bwHܿoA)0?`[.SB7*vMW]3=DbJ1k>^hq8)"&."NE8í!E܋F81aЃK>,q80>c܏^\ә1T:޼^(
fR\,U
e
?LT0	tq; 	d\=MD&m!F~Bbb4baΙ
ɃCzGt^#^[Md&#MLS>cƍ{ySCTĝNA^
g.GN emY6xÿh'H8::Å Ѷ8ٕ9TmݎPGfd˿~Zꍏ-PK'    PK
    )D:U               org/bouncycastle/voms/PK  C:U            .   org/bouncycastle/voms/VOMSAttribute$FQAN.classSNQ]Nvnh"e /@A
D1$PuZ)+$RM|ߤ3"6]u>g_N|`>H>> &l\Pq'9)}eͬ5EP0̴:
HkuS9cXL>ZCތdʹayMm]У9DFZY3#<M͔Qr狙h2_6S)dF])2mQLlQ3r@	KdMg4d!SFPyL':"H.IԲ<Ⱥ*T'8`^@
.?3	U]Q1\ \eP0GF+
22apOAwøp_h|*9SVi9T2JW,=vI/Г9@ ۵MʏkOB}EǤ6][\"qІF0vθo.RgWc}E>LT8!uJن7 j+4
hIiW/&hN!4Ҟ{_F!u?ʞFr@G[N~z2iWc!7Bm+B;3`G^%[?ATWDvZXӦr-nS+('ł]bTS{2OL?%Du{E63YU0̟Yx l;cd&c5v7KڹC'GO:oPK%	  u  PK  C:U            )   org/bouncycastle/voms/VOMSAttribute.classVwT^Xb0t

qII3'i@SV\EXr'o]^v(98ei>)j6'䌏}{ߓ~E ^,bkD\+:D\/"&72HҾ>[Q$l*94.np7
wvvгm[k{[tЬd(;jA̼U͢b)l2az*;ǬT2̰F#kM:i떩覒Qt.n0sYlqJhєQlE-ii9WlbQl"Ee'p37m%+cz^t[;0l.p*VWZBDj=WpbhX:mGʲdRdB"NLh&uļe:nڔz"g4H}eè(F+׮!_	(mڎj5
8<vcg{7ݱֿ0\A-}21A7dv	5af1w2M8T"IӆU#U*5әGZ?Gʎ͆Ţnνˎn$RZQ`jN	Bfct+<7x=nt+s+}osíWP:i:sw.yVUWS@[3jxа:"ťqfZsI%<}ĭuZ[^5n'w:`m^Qr:t.ڳaˋ	$	{pn=W>w/.HfqM>HԹYE4hbʗJg6X˥h<]S~]<][qjsɟh4pZ/8SW^%&vG-Z.`}io&ŖZ$=e"jֵrVA{WN]8*cPeЅQmJFCd`=]-y7 fdd8܋1E[quฌ&2nŸf2Ǆ6Gfe4DGG*+G8?9Ó8e <$rY'%Va<#ã%588<No$O9mY1TvU5P:1Em!8
*")+ngNhN%).k b4^m4ޟٹ柰vCi<gpx(*.M-ϱM[([|ƂU|^'}#rU|G8^úh(Fׂ2ZH*qys

VN>
MM}9KbLxńHN~8ד*)5}wbw,Yҝ%xl'|]?I ;o}}Fs_V(9w2YT-!K92t+6]dʮb^QG&zzӓlނ?xՀ%=g>kۡPՉӾ:sEE1q^)g^Iз#t~PKgc    PK   *D:UPMy  =                 META-INF/MANIFEST.MF  PK   *D:U=Lꠥ  G              N  META-INF/BC2048KE.SFPK   *D:Ub  
"               54 META-INF/BC2048KE.DSAPK
 
    )D:U                         N META-INF/versions/9/PK   *D:U?  	  %             N META-INF/versions/9/module-info.classPK
 
    )D:U                         R org/PK
 
    )D:U                         <R org/bouncycastle/PK
 
    )D:U                         kR org/bouncycastle/cert/PK   C:UNFx}    6             R org/bouncycastle/cert/AttributeCertificateHolder.classPK   C:U@`  
  6             [ org/bouncycastle/cert/AttributeCertificateIssuer.classPK   C:U   t  )             ` org/bouncycastle/cert/CertException.classPK   C:UY5   v  +             b org/bouncycastle/cert/CertIOException.classPK   C:Uo   b  0             bc org/bouncycastle/cert/CertRuntimeException.classPK   C:UyB     %             d org/bouncycastle/cert/CertUtils.classPK   C:UFE0    :             p org/bouncycastle/cert/X509AttributeCertificateHolder.classPK   C:U}    .             "| org/bouncycastle/cert/X509CRLEntryHolder.classPK   C:U|    )              org/bouncycastle/cert/X509CRLHolder.classPK   C:U    1             ΋ org/bouncycastle/cert/X509CertificateHolder.classPK   C:UX5T     >              org/bouncycastle/cert/X509ContentVerifierProviderBuilder.classPK   C:U#;8  
  .             3 org/bouncycastle/cert/X509ExtensionUtils.classPK   C:U2  9
  4             Ǜ org/bouncycastle/cert/X509v1CertificateBuilder.classPK   C:U&    =             ԟ org/bouncycastle/cert/X509v2AttributeCertificateBuilder.classPK   C:UQo  %  ,              org/bouncycastle/cert/X509v2CRLBuilder.classPK   C:UV^j
  I   4             ˱ org/bouncycastle/cert/X509v3CertificateBuilder.classPK
 
    )D:U                          org/bouncycastle/cert/bc/PK   C:UC{{i      5             & org/bouncycastle/cert/bc/BcX509ExtensionUtils$1.classPK   C:U  :  H             " org/bouncycastle/cert/bc/BcX509ExtensionUtils$SHA1DigestCalculator.classPK   C:UC  \  3              org/bouncycastle/cert/bc/BcX509ExtensionUtils.classPK   C:UČ4U  @  9             Z org/bouncycastle/cert/bc/BcX509v1CertificateBuilder.classPK   C:Uzs̚    9              org/bouncycastle/cert/bc/BcX509v3CertificateBuilder.classPK
 
    )D:U                          org/bouncycastle/cert/cmp/PK   C:U5   w  ,             O org/bouncycastle/cert/cmp/CMPException.classPK   C:U1i   e  3              org/bouncycastle/cert/cmp/CMPRuntimeException.classPK   C:US)  @  '              org/bouncycastle/cert/cmp/CMPUtil.classPK   C:UM"#    >              org/bouncycastle/cert/cmp/CertificateConfirmationContent.classPK   C:UMn?  7
  E              org/bouncycastle/cert/cmp/CertificateConfirmationContentBuilder.classPK   C:UEb  {
  1             ] org/bouncycastle/cert/cmp/CertificateStatus.classPK   C:UG    1              org/bouncycastle/cert/cmp/GeneralPKIMessage.classPK   C:U-  q  3              org/bouncycastle/cert/cmp/ProtectedPKIMessage.classPK   C:U=>  K  :             | org/bouncycastle/cert/cmp/ProtectedPKIMessageBuilder.classPK   C:U8|  w  1               org/bouncycastle/cert/cmp/RevocationDetails.classPK   C:U9&E  i  8              org/bouncycastle/cert/cmp/RevocationDetailsBuilder.classPK
 
    )D:U                          org/bouncycastle/cert/crmf/PK   C:UC)4  2  5              org/bouncycastle/cert/crmf/AuthenticatorControl.classPK   C:UKA     .              org/bouncycastle/cert/crmf/CRMFException.classPK   C:UF   g  5             ` org/bouncycastle/cert/crmf/CRMFRuntimeException.classPK   C:U
=s  4  )              org/bouncycastle/cert/crmf/CRMFUtil.classPK   C:U3(
    :              org/bouncycastle/cert/crmf/CertificateRequestMessage.classPK   C:UΗ
  P"  A              org/bouncycastle/cert/crmf/CertificateRequestMessageBuilder.classPK   C:UkB      (              org/bouncycastle/cert/crmf/Control.classPK   C:UI,g  X  6              org/bouncycastle/cert/crmf/EncryptedValueBuilder.classPK   C:Uh&      5             f org/bouncycastle/cert/crmf/EncryptedValuePadder.classPK   C:Uг    5             Q org/bouncycastle/cert/crmf/EncryptedValueParser.classPK   C:U  Y	  2              org/bouncycastle/cert/crmf/PKIArchiveControl.classPK   C:U&  	  9               org/bouncycastle/cert/crmf/PKIArchiveControlBuilder.classPK   C:Usģ    /             H$ org/bouncycastle/cert/crmf/PKMACBuilder$1.classPK   C:UԦ>(    -             l( org/bouncycastle/cert/crmf/PKMACBuilder.classPK   C:U	"  `  4             0 org/bouncycastle/cert/crmf/PKMACValueGenerator.classPK   C:Uǜxd    3             g4 org/bouncycastle/cert/crmf/PKMACValueVerifier.classPK   C:UQ   x  6             8 org/bouncycastle/cert/crmf/PKMACValuesCalculator.classPK   C:UT9  	  C             9 org/bouncycastle/cert/crmf/ProofOfPossessionSigningKeyBuilder.classPK   C:UG4  (  0             = org/bouncycastle/cert/crmf/RegTokenControl.classPK   C:U{L   X  8             ? org/bouncycastle/cert/crmf/ValueDecryptorGenerator.classPK
 
    )D:U                         -A org/bouncycastle/cert/crmf/bc/PK   C:UuLz  	  N             iA org/bouncycastle/cert/crmf/bc/BcCRMFEncryptorBuilder$CRMFOutputEncryptor.classPK   C:UںL5  K  :             _E org/bouncycastle/cert/crmf/bc/BcCRMFEncryptorBuilder.classPK   C:UWt    ;             G org/bouncycastle/cert/crmf/bc/BcEncryptedValueBuilder.classPK   C:U    ;             HJ org/bouncycastle/cert/crmf/bc/BcFixedLengthMGF1Padder.classPK   C:U
v    .             N org/bouncycastle/cert/crmf/bc/CRMFHelper.classPK
 
    )D:U            "             ^Q org/bouncycastle/cert/crmf/jcajce/PK   C:UB!A+  b  4             Q org/bouncycastle/cert/crmf/jcajce/CRMFHelper$1.classPK   C:UӐ
<  X  >             +W org/bouncycastle/cert/crmf/jcajce/CRMFHelper$JCECallback.classPK   C:Uw-i  m"  2             X org/bouncycastle/cert/crmf/jcajce/CRMFHelper.classPK   C:U   
  D             e org/bouncycastle/cert/crmf/jcajce/JcaCertificateRequestMessage.classPK   C:UEC  ,  K             i org/bouncycastle/cert/crmf/jcajce/JcaCertificateRequestMessageBuilder.classPK   C:U}=    @             ?l org/bouncycastle/cert/crmf/jcajce/JcaEncryptedValueBuilder.classPK   C:Uo  .  C             n org/bouncycastle/cert/crmf/jcajce/JcaPKIArchiveControlBuilder.classPK   C:U^    N             p org/bouncycastle/cert/crmf/jcajce/JceAsymmetricValueDecryptorGenerator$1.classPK   C:Uܧ  Y
  L             [s org/bouncycastle/cert/crmf/jcajce/JceAsymmetricValueDecryptorGenerator.classPK   C:Un  )
  S             x org/bouncycastle/cert/crmf/jcajce/JceCRMFEncryptorBuilder$CRMFOutputEncryptor.classPK   C:UEB    ?             } org/bouncycastle/cert/crmf/jcajce/JceCRMFEncryptorBuilder.classPK   C:UL  	  @              org/bouncycastle/cert/crmf/jcajce/JcePKMACValuesCalculator.classPK
 
    )D:U                         Յ org/bouncycastle/cert/dane/PK   C:U3     7              org/bouncycastle/cert/dane/DANECertificateFetcher.classPK   C:U,5B'    *              org/bouncycastle/cert/dane/DANEEntry.classPK   C:U'<i    1              org/bouncycastle/cert/dane/DANEEntryFactory.classPK   C:U      1             ԏ org/bouncycastle/cert/dane/DANEEntryFetcher.classPK   C:U      8             ΐ org/bouncycastle/cert/dane/DANEEntryFetcherFactory.classPK   C:UAR  ?  2              org/bouncycastle/cert/dane/DANEEntrySelector.classPK   C:UZ^-  G  9             l org/bouncycastle/cert/dane/DANEEntrySelectorFactory.classPK   C:U=_    /               org/bouncycastle/cert/dane/DANEEntryStore.classPK   C:U_>l  0  6              org/bouncycastle/cert/dane/DANEEntryStoreBuilder.classPK   C:UX   y  .              org/bouncycastle/cert/dane/DANEException.classPK   C:UU}  i  ;             ۝ org/bouncycastle/cert/dane/TruncatingDigestCalculator.classPK
 
    )D:U            #              org/bouncycastle/cert/dane/fetcher/PK   C:Uyiz  	  A             W org/bouncycastle/cert/dane/fetcher/JndiDANEFetcherFactory$1.classPK   C:UK,q    ?             @ org/bouncycastle/cert/dane/fetcher/JndiDANEFetcherFactory.classPK
 
    )D:U                          org/bouncycastle/cert/jcajce/PK   C:UY    -             Y org/bouncycastle/cert/jcajce/CertHelper.classPK   C:U4U[d    4             ͬ org/bouncycastle/cert/jcajce/DefaultCertHelper.classPK   C:Uӽ5_    @             3 org/bouncycastle/cert/jcajce/JcaAttributeCertificateIssuer.classPK   C:U-Y߱    .               org/bouncycastle/cert/jcajce/JcaCRLStore.classPK   C:UQt    /             % org/bouncycastle/cert/jcajce/JcaCertStore.classPK   C:U3    6             c org/bouncycastle/cert/jcajce/JcaCertStoreBuilder.classPK   C:U@    2              org/bouncycastle/cert/jcajce/JcaX500NameUtil.classPK   C:UB$8&    E              org/bouncycastle/cert/jcajce/JcaX509CRLConverter$ExCRLException.classPK   C:Ut    6             T org/bouncycastle/cert/jcajce/JcaX509CRLConverter.classPK   C:U|`(  
  3             ; org/bouncycastle/cert/jcajce/JcaX509CRLHolder.classPK   C:U*  
  U              org/bouncycastle/cert/jcajce/JcaX509CertificateConverter$ExCertificateException.classPK   C:U^r0    \             q org/bouncycastle/cert/jcajce/JcaX509CertificateConverter$ExCertificateParsingException.classPK   C:UHy    >             + org/bouncycastle/cert/jcajce/JcaX509CertificateConverter.classPK   C:Uj2'  1  ;              org/bouncycastle/cert/jcajce/JcaX509CertificateHolder.classPK   C:U		    H              org/bouncycastle/cert/jcajce/JcaX509ContentVerifierProviderBuilder.classPK   C:U4  s  M              org/bouncycastle/cert/jcajce/JcaX509ExtensionUtils$SHA1DigestCalculator.classPK   C:UDe  d  8             I org/bouncycastle/cert/jcajce/JcaX509ExtensionUtils.classPK   C:U2O  {  >              org/bouncycastle/cert/jcajce/JcaX509v1CertificateBuilder.classPK   C:U    6             + org/bouncycastle/cert/jcajce/JcaX509v2CRLBuilder.classPK   C:U~v  
  >             X org/bouncycastle/cert/jcajce/JcaX509v3CertificateBuilder.classPK   C:U1J    2              org/bouncycastle/cert/jcajce/NamedCertHelper.classPK   C:UYbʥ:  m  5             Q org/bouncycastle/cert/jcajce/ProviderCertHelper.classPK
 
    )D:U                          org/bouncycastle/cert/ocsp/PK   C:U15    .             ' org/bouncycastle/cert/ocsp/BasicOCSPResp.classPK   C:U S  	  D             5 org/bouncycastle/cert/ocsp/BasicOCSPRespBuilder$ResponseObject.classPK   C:UM7    5             o org/bouncycastle/cert/ocsp/BasicOCSPRespBuilder.classPK   C:UMo    .              org/bouncycastle/cert/ocsp/CertificateID.classPK   C:UUv      2              org/bouncycastle/cert/ocsp/CertificateStatus.classPK   C:UP   y  .              org/bouncycastle/cert/ocsp/OCSPException.classPK   C:Uw愁d    (             9 org/bouncycastle/cert/ocsp/OCSPReq.classPK   C:U    =             
 org/bouncycastle/cert/ocsp/OCSPReqBuilder$RequestObject.classPK   C:UN    /              org/bouncycastle/cert/ocsp/OCSPReqBuilder.classPK   C:U|    )             ! org/bouncycastle/cert/ocsp/OCSPResp.classPK   C:U'&    0             H org/bouncycastle/cert/ocsp/OCSPRespBuilder.classPK   C:Ug}^  9  *               org/bouncycastle/cert/ocsp/OCSPUtils.classPK   C:U$зV    $             $ org/bouncycastle/cert/ocsp/Req.classPK   C:U(    )             *& org/bouncycastle/cert/ocsp/RespData.classPK   C:U8؎  H
  '             s) org/bouncycastle/cert/ocsp/RespID.classPK   C:Umpϯ    .             p. org/bouncycastle/cert/ocsp/RevokedStatus.classPK   C:Uf  >	  +             {1 org/bouncycastle/cert/ocsp/SingleResp.classPK   C:U\ȡ      .             n5 org/bouncycastle/cert/ocsp/UnknownStatus.classPK
 
    )D:U            "             k6 org/bouncycastle/cert/ocsp/jcajce/PK   C:Up0  U  ?             6 org/bouncycastle/cert/ocsp/jcajce/JcaBasicOCSPRespBuilder.classPK   C:Uw1    8             8 org/bouncycastle/cert/ocsp/jcajce/JcaCertificateID.classPK   C:UV    1             W: org/bouncycastle/cert/ocsp/jcajce/JcaRespID.classPK
 
    )D:U                         f< org/bouncycastle/cert/path/PK   C:Uã~  	  )             < org/bouncycastle/cert/path/CertPath.classPK   C:U5k  "  .             @ org/bouncycastle/cert/path/CertPathUtils.classPK   C:U6   V  3             GB org/bouncycastle/cert/path/CertPathValidation.classPK   C:UY5    :             fC org/bouncycastle/cert/path/CertPathValidationContext.classPK   C:U    <             F org/bouncycastle/cert/path/CertPathValidationException.classPK   C:U.%    9             oG org/bouncycastle/cert/path/CertPathValidationResult.classPK   C:U.  /  @             tK org/bouncycastle/cert/path/CertPathValidationResultBuilder.classPK
 
    )D:U            '             N org/bouncycastle/cert/path/validations/PK   C:U|o]  m	  G             +O org/bouncycastle/cert/path/validations/BasicConstraintsValidation.classPK   C:UO    <             S org/bouncycastle/cert/path/validations/CRLValidation$1.classPK   C:Uy!    :             GV org/bouncycastle/cert/path/validations/CRLValidation.classPK   C:U4  V	  J             Z org/bouncycastle/cert/path/validations/CertificatePoliciesValidation.classPK   C:U'<    Q             A_ org/bouncycastle/cert/path/validations/CertificatePoliciesValidationBuilder.classPK   C:U{VS%    ?             ma org/bouncycastle/cert/path/validations/KeyUsageValidation.classPK   C:Ub`  U
  G             d org/bouncycastle/cert/path/validations/ParentCertIssuedValidation.classPK   C:U7,    <             j org/bouncycastle/cert/path/validations/ValidationUtils.classPK
 
    )D:U                         "l org/bouncycastle/cert/selector/PK   C:U$^    K             _l org/bouncycastle/cert/selector/MSOutlookKeyIdCalculator$GeneralDigest.classPK   C:US{=  F  H             o org/bouncycastle/cert/selector/MSOutlookKeyIdCalculator$SHA1Digest.classPK   C:U
  =  =             u org/bouncycastle/cert/selector/MSOutlookKeyIdCalculator.classPK   C:U  t  K             w org/bouncycastle/cert/selector/X509AttributeCertificateHolderSelector.classPK   C:U;$BA  
  R             } org/bouncycastle/cert/selector/X509AttributeCertificateHolderSelectorBuilder.classPK   C:U  
  B              org/bouncycastle/cert/selector/X509CertificateHolderSelector.classPK
 
    )D:U            &              org/bouncycastle/cert/selector/jcajce/PK   C:U7{    @             ; org/bouncycastle/cert/selector/jcajce/JcaSelectorConverter.classPK   C:Uq  
  H             U org/bouncycastle/cert/selector/jcajce/JcaX509CertSelectorConverter.classPK   C:U!J    L             ͎ org/bouncycastle/cert/selector/jcajce/JcaX509CertificateHolderSelector.classPK
 
    )D:U                         
 org/bouncycastle/cmc/PK   C:U_   }  '             = org/bouncycastle/cmc/CMCException.classPK   C:U  j  ,              org/bouncycastle/cmc/SimplePKIResponse.classPK
 
    )D:U                          org/bouncycastle/cms/PK   C:U۱ٝ      1              org/bouncycastle/cms/AuthAttributesProvider.classPK   C:Uw8ӗ  Y  +             ۘ org/bouncycastle/cms/CMSAbsentContent.classPK   C:U3;	  .  '             ך org/bouncycastle/cms/CMSAlgorithm.classPK   C:U    ?             / org/bouncycastle/cms/CMSAttributeTableGenerationException.classPK   C:Uk  w  5              org/bouncycastle/cms/CMSAttributeTableGenerator.classPK   C:Uk{x  %  1              org/bouncycastle/cms/CMSAuthEnvelopedData$1.classPK   C:U$dz    1             Z org/bouncycastle/cms/CMSAuthEnvelopedData$2.classPK   C:UQ    /             3 org/bouncycastle/cms/CMSAuthEnvelopedData.classPK   C:UMN s    8              org/bouncycastle/cms/CMSAuthEnvelopedDataGenerator.classPK   C:UG  Y  4              org/bouncycastle/cms/CMSAuthEnvelopedGenerator.classPK   C:UP	    1              org/bouncycastle/cms/CMSAuthenticatedData$1.classPK   C:UhũN
  
  /              org/bouncycastle/cms/CMSAuthenticatedData.classPK   C:U.    :              org/bouncycastle/cms/CMSAuthenticatedDataGenerator$1.classPK   C:U|J    8              org/bouncycastle/cms/CMSAuthenticatedDataGenerator.classPK   C:U    7              org/bouncycastle/cms/CMSAuthenticatedDataParser$1.classPK   C:UJweM
  @  5             n org/bouncycastle/cms/CMSAuthenticatedDataParser.classPK   C:UнZ,  2
  _              org/bouncycastle/cms/CMSAuthenticatedDataStreamGenerator$CmsAuthenticatedDataOutputStream.classPK   C:UAB  O  >              org/bouncycastle/cms/CMSAuthenticatedDataStreamGenerator.classPK   C:UE    4              org/bouncycastle/cms/CMSAuthenticatedGenerator.classPK   C:Uw?  
  ,              org/bouncycastle/cms/CMSCompressedData.classPK   C:UF~>  t  5             ~ org/bouncycastle/cms/CMSCompressedDataGenerator.classPK   C:U[K  @  2              org/bouncycastle/cms/CMSCompressedDataParser.classPK   C:U2Z    U             x org/bouncycastle/cms/CMSCompressedDataStreamGenerator$CmsCompressedOutputStream.classPK   C:UY:    ;              org/bouncycastle/cms/CMSCompressedDataStreamGenerator.classPK   C:U/(U  p  $             z org/bouncycastle/cms/CMSConfig.classPK   C:UP  o  /             ! org/bouncycastle/cms/CMSContentInfoParser.classPK   C:UuXh    *              org/bouncycastle/cms/CMSDigestedData.classPK   C:UA  
  +             6	 org/bouncycastle/cms/CMSEncryptedData.classPK   C:U_4%  
  4             
 org/bouncycastle/cms/CMSEncryptedDataGenerator.classPK   C:UQ
h     0             
 org/bouncycastle/cms/CMSEncryptedGenerator.classPK   C:U]    +             T org/bouncycastle/cms/CMSEnvelopedData.classPK   C:U3D  X  4             4 org/bouncycastle/cms/CMSEnvelopedDataGenerator.classPK   C:U6  y  1             =  org/bouncycastle/cms/CMSEnvelopedDataParser.classPK   C:UI&U  D	  W             m' org/bouncycastle/cms/CMSEnvelopedDataStreamGenerator$CmsEnvelopedDataOutputStream.classPK   C:U    :             + org/bouncycastle/cms/CMSEnvelopedDataStreamGenerator.classPK   C:UO)d~
  k  0             !3 org/bouncycastle/cms/CMSEnvelopedGenerator.classPK   C:UJ    L             8 org/bouncycastle/cms/CMSEnvelopedHelper$CMSAuthenticatedSecureReadable.classPK   C:U QZ  ]  T             : org/bouncycastle/cms/CMSEnvelopedHelper$CMSDigestAuthenticatedSecureReadable$1.classPK   C:U.T     R             = org/bouncycastle/cms/CMSEnvelopedHelper$CMSDigestAuthenticatedSecureReadable.classPK   C:U'i$    H             @ org/bouncycastle/cms/CMSEnvelopedHelper$CMSEnvelopedSecureReadable.classPK   C:Uw    -             B org/bouncycastle/cms/CMSEnvelopedHelper.classPK   C:U7p     '             F org/bouncycastle/cms/CMSException.classPK   C:UmY  U  :             CH org/bouncycastle/cms/CMSPatchKit$DLSignerInformation.classPK   C:UTF  f  A             J org/bouncycastle/cms/CMSPatchKit$ModEncAlgSignerInformation.classPK   C:UEk  a  &             ^L org/bouncycastle/cms/CMSPatchKit.classPK   C:Uj     )             N org/bouncycastle/cms/CMSProcessable.classPK   C:UDTB&  4  2             5O org/bouncycastle/cms/CMSProcessableByteArray.classPK   C:U041'  v  -             Q org/bouncycastle/cms/CMSProcessableFile.classPK   C:Ud1  '  4             T org/bouncycastle/cms/CMSProcessableInputStream.classPK   C:Ud      &             WW org/bouncycastle/cms/CMSReadable.classPK   C:Uq&K    .             NX org/bouncycastle/cms/CMSRuntimeException.classPK   C:UshC   0  ,             Y org/bouncycastle/cms/CMSSecureReadable.classPK   C:Uo~      =             Z org/bouncycastle/cms/CMSSignatureAlgorithmNameGenerator.classPK   C:Uu      @             [ org/bouncycastle/cms/CMSSignatureEncryptionAlgorithmFinder.classPK   C:U8    *             \ org/bouncycastle/cms/CMSSignedData$1.classPK   C:U7  ,  (             _ org/bouncycastle/cms/CMSSignedData.classPK   C:UKaY    1             o org/bouncycastle/cms/CMSSignedDataGenerator.classPK   C:U  0,  .             Lx org/bouncycastle/cms/CMSSignedDataParser.classPK   C:Uƛ  
  Q              org/bouncycastle/cms/CMSSignedDataStreamGenerator$CmsSignedDataOutputStream.classPK   C:U4k\5  )  7              org/bouncycastle/cms/CMSSignedDataStreamGenerator.classPK   C:UȾ;	    -              org/bouncycastle/cms/CMSSignedGenerator.classPK   C:UJEZV
  k  *              org/bouncycastle/cms/CMSSignedHelper.classPK   C:Usx]      ;              org/bouncycastle/cms/CMSSignerDigestMismatchException.classPK   C:Uz     -              org/bouncycastle/cms/CMSStreamException.classPK   C:UDq      '              org/bouncycastle/cms/CMSTypedData.classPK   C:U!&pk  ;  :              org/bouncycastle/cms/CMSTypedStream$FullReaderStream.classPK   C:U`|  O  )             ʱ org/bouncycastle/cms/CMSTypedStream.classPK   C:UdVz,  *  #             ش org/bouncycastle/cms/CMSUtils.classPK   C:UΧ      B             U org/bouncycastle/cms/CMSVerifierCertificateNotValidException.classPK   C:UM  g	  F             l org/bouncycastle/cms/DefaultAuthenticatedAttributeTableGenerator.classPK   C:UӀJ  !  D              org/bouncycastle/cms/DefaultCMSSignatureAlgorithmNameGenerator.classPK   C:UvC  t	  G              org/bouncycastle/cms/DefaultCMSSignatureEncryptionAlgorithmFinder.classPK   C:U,}  
  ?              org/bouncycastle/cms/DefaultSignedAttributeTableGenerator.classPK   C:U    g  '              org/bouncycastle/cms/KEKRecipient.classPK   C:Ub  T  )              org/bouncycastle/cms/KEKRecipientId.classPK   C:UND  p  4             Q org/bouncycastle/cms/KEKRecipientInfoGenerator.classPK   C:UVx    2             m org/bouncycastle/cms/KEKRecipientInformation.classPK   C:U"Ph  $  ,             E org/bouncycastle/cms/KeyAgreeRecipient.classPK   C:Uk    .              org/bouncycastle/cms/KeyAgreeRecipientId.classPK   C:Ujy:  .
  9              org/bouncycastle/cms/KeyAgreeRecipientInfoGenerator.classPK   C:U1:    7              org/bouncycastle/cms/KeyAgreeRecipientInformation.classPK   C:UӕC   l  ,             z org/bouncycastle/cms/KeyTransRecipient.classPK   C:U.    .              org/bouncycastle/cms/KeyTransRecipientId.classPK   C:UkB  
  9              org/bouncycastle/cms/KeyTransRecipientInfoGenerator.classPK   C:UFՀ  
  7             A org/bouncycastle/cms/KeyTransRecipientInformation.classPK   C:U|   R  +             & org/bouncycastle/cms/NullOutputStream.classPK   C:U;    '             R org/bouncycastle/cms/OriginatorId.classPK   C:U    2             
 org/bouncycastle/cms/OriginatorInfoGenerator.classPK   C:Ufb  3  0             
 org/bouncycastle/cms/OriginatorInformation.classPK   C:UΈ    1              org/bouncycastle/cms/PKCS7ProcessableObject.classPK   C:U{x    +              org/bouncycastle/cms/PKCS7TypedStream.classPK   C:U`yǕ    0             
 org/bouncycastle/cms/PasswordRecipient$PRF.classPK   C:U_Ud,    ,               org/bouncycastle/cms/PasswordRecipient.classPK   C:U=D33    .              org/bouncycastle/cms/PasswordRecipientId.classPK   C:Ud+    9             m org/bouncycastle/cms/PasswordRecipientInfoGenerator.classPK   C:UR    7             g# org/bouncycastle/cms/PasswordRecipientInformation.classPK   C:U3(oO   R   $             u) org/bouncycastle/cms/Recipient.classPK   C:UCp7    &             * org/bouncycastle/cms/RecipientId.classPK   C:Uߊ4     1             + org/bouncycastle/cms/RecipientInfoGenerator.classPK   C:UM    /             , org/bouncycastle/cms/RecipientInformation.classPK   C:U@(  
  4             3 org/bouncycastle/cms/RecipientInformationStore.classPK   C:UBё    ,             8 org/bouncycastle/cms/RecipientOperator.classPK   C:U6ԅ  p  #             $; org/bouncycastle/cms/SignerId.classPK   C:UM    .             > org/bouncycastle/cms/SignerInfoGenerator.classPK   C:UM    5             F org/bouncycastle/cms/SignerInfoGeneratorBuilder.classPK   C:U)Kp  09  ,             K org/bouncycastle/cms/SignerInformation.classPK   C:UE  
  1             a org/bouncycastle/cms/SignerInformationStore.classPK   C:UD  @	  4             Sf org/bouncycastle/cms/SignerInformationVerifier.classPK   C:Ua[߭     <             i org/bouncycastle/cms/SignerInformationVerifierProvider.classPK   C:Ud`E     8             j org/bouncycastle/cms/SimpleAttributeTableGenerator.classPK
 
    )D:U                         Dl org/bouncycastle/cms/bc/PK   C:Ux܇    D             zl org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder$AADStream.classPK   C:UvR=J    Q             kn org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder$CMSAuthOutputEncryptor.classPK   C:Un@	  	  M             4r org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder$CMSOutputEncryptor.classPK   C:U5{8%  
  :             Dv org/bouncycastle/cms/bc/BcCMSContentEncryptorBuilder.classPK   C:UJH_    ;             z org/bouncycastle/cms/bc/BcECSignerInfoVerifierBuilder.classPK   C:Uߝ}X  E  >             } org/bouncycastle/cms/bc/BcEdDSASignerInfoVerifierBuilder.classPK   C:U)NZ    7             ] org/bouncycastle/cms/bc/BcKEKEnvelopedRecipient$1.classPK   C:U"    5              org/bouncycastle/cms/bc/BcKEKEnvelopedRecipient.classPK   C:Ud a    ,              org/bouncycastle/cms/bc/BcKEKRecipient.classPK   C:UT+    9             B org/bouncycastle/cms/bc/BcKEKRecipientInfoGenerator.classPK   C:U/į  ?  1             ԉ org/bouncycastle/cms/bc/BcKeyTransRecipient.classPK   C:U^Eb[  *  >              org/bouncycastle/cms/bc/BcKeyTransRecipientInfoGenerator.classPK   C:U`    <              org/bouncycastle/cms/bc/BcPasswordEnvelopedRecipient$1.classPK   C:U    :             s org/bouncycastle/cms/bc/BcPasswordEnvelopedRecipient.classPK   C:U|ߊ    1             ԓ org/bouncycastle/cms/bc/BcPasswordRecipient.classPK   C:Uqo  w  >              org/bouncycastle/cms/bc/BcPasswordRecipientInfoGenerator.classPK   C:U3e    ?             + org/bouncycastle/cms/bc/BcRSAKeyTransEnvelopedRecipient$1.classPK   C:U4    =              org/bouncycastle/cms/bc/BcRSAKeyTransEnvelopedRecipient.classPK   C:UHl    A             d org/bouncycastle/cms/bc/BcRSAKeyTransRecipientInfoGenerator.classPK   C:Uli`    <              org/bouncycastle/cms/bc/BcRSASignerInfoVerifierBuilder.classPK   C:UIٷ    &             f org/bouncycastle/cms/bc/CMSUtils.classPK   C:Ur]  "  3             ] org/bouncycastle/cms/bc/EnvelopedDataHelper$1.classPK   C:U	a  $  3              org/bouncycastle/cms/bc/EnvelopedDataHelper$2.classPK   C:U'<a  $  3             ݮ org/bouncycastle/cms/bc/EnvelopedDataHelper$3.classPK   C:U_QUa  $  3              org/bouncycastle/cms/bc/EnvelopedDataHelper$4.classPK   C:Upa  $  3             a org/bouncycastle/cms/bc/EnvelopedDataHelper$5.classPK   C:UqIr    1             # org/bouncycastle/cms/bc/EnvelopedDataHelper.classPK
 
    )D:U                         W org/bouncycastle/cms/jcajce/PK   C:U  s  *              org/bouncycastle/cms/jcajce/CMSUtils.classPK   C:UUGq    8              org/bouncycastle/cms/jcajce/DefaultJcaJceExtHelper.classPK   C:UT  3  7              org/bouncycastle/cms/jcajce/EnvelopedDataHelper$1.classPK   C:UUdG  	  7              org/bouncycastle/cms/jcajce/EnvelopedDataHelper$2.classPK   C:Ux;  W  A              org/bouncycastle/cms/jcajce/EnvelopedDataHelper$JCECallback.classPK   C:U5=  C  5             Q org/bouncycastle/cms/jcajce/EnvelopedDataHelper.classPK   C:U`~/  p  1             P org/bouncycastle/cms/jcajce/JcaJceExtHelper.classPK   C:U-  ]  6              org/bouncycastle/cms/jcajce/JcaSelectorConverter.classPK   C:U:    -              org/bouncycastle/cms/jcajce/JcaSignerId.classPK   C:URU    ?             i org/bouncycastle/cms/jcajce/JcaSignerInfoGeneratorBuilder.classPK   C:UD      @              org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$1.classPK   C:U
  Q  E              org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$Helper.classPK   C:ULd    J             1 org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$NamedHelper.classPK   C:UurY    M             
 org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder$ProviderHelper.classPK   C:Ujkz  g  >               org/bouncycastle/cms/jcajce/JcaSignerInfoVerifierBuilder.classPK   C:UCx<      G              org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$1.classPK   C:U5
    L              org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$Helper.classPK   C:Ub]P  3  Q             a org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$NamedHelper.classPK   C:U<T  e  T             0 org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder$ProviderHelper.classPK   C:U>  l  E              org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoGeneratorBuilder.classPK   C:U8      F              org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$1.classPK   C:U8x  i  K             3 org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$Helper.classPK   C:UZ9j    P              org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$NamedHelper.classPK   C:UD<^    S              org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder$ProviderHelper.classPK   C:Un  1
  D              org/bouncycastle/cms/jcajce/JcaSimpleSignerInfoVerifierBuilder.classPK   C:UN  d  >               org/bouncycastle/cms/jcajce/JcaX509CertSelectorConverter.classPK   C:Uрpb    .             " org/bouncycastle/cms/jcajce/JceAADStream.classPK   C:U    A             # org/bouncycastle/cms/jcajce/JceAlgorithmIdentifierConverter.classPK   C:U  
  A             K' org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder$1.classPK   C:UI    V             ) org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder$CMSAuthOutputEncryptor.classPK   C:UK    R             
0 org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder$CMSOutputEncryptor.classPK   C:UM
K    ?             @5 org/bouncycastle/cms/jcajce/JceCMSContentEncryptorBuilder.classPK   C:U=  N
  M             < org/bouncycastle/cms/jcajce/JceCMSMacCalculatorBuilder$CMSMacCalculator.classPK   C:Ui
    <             WA org/bouncycastle/cms/jcajce/JceCMSMacCalculatorBuilder.classPK   C:U=V  !  @             D org/bouncycastle/cms/jcajce/JceKEKAuthenticatedRecipient$1.classPK   C:UE    >             G org/bouncycastle/cms/jcajce/JceKEKAuthenticatedRecipient.classPK   C:U3    <             =J org/bouncycastle/cms/jcajce/JceKEKEnvelopedRecipient$1.classPK   C:Uzhp    :             L org/bouncycastle/cms/jcajce/JceKEKEnvelopedRecipient.classPK   C:U,m*  
  1             O org/bouncycastle/cms/jcajce/JceKEKRecipient.classPK   C:USJl    >             S org/bouncycastle/cms/jcajce/JceKEKRecipientInfoGenerator.classPK   C:Ut؜  A  H             
V org/bouncycastle/cms/jcajce/JceKTSKeyTransAuthenticatedRecipient$1.classPK   C:U#J    F             Y org/bouncycastle/cms/jcajce/JceKTSKeyTransAuthenticatedRecipient.classPK   C:Ud>%    D             [ org/bouncycastle/cms/jcajce/JceKTSKeyTransEnvelopedRecipient$1.classPK   C:Uˬ[?    B             e^ org/bouncycastle/cms/jcajce/JceKTSKeyTransEnvelopedRecipient.classPK   C:UL;  !  9             a org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipient.classPK   C:Ur?Ƅ  a  H             :h org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipientInfoGenerator$1.classPK   C:U%a  &  H             4j org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipientInfoGenerator$2.classPK   C:Un  
  F             l org/bouncycastle/cms/jcajce/JceKTSKeyTransRecipientInfoGenerator.classPK   C:U	j    E             q org/bouncycastle/cms/jcajce/JceKeyAgreeAuthenticatedRecipient$1.classPK   C:UnSh/    C             t org/bouncycastle/cms/jcajce/JceKeyAgreeAuthenticatedRecipient.classPK   C:UZKH2  *  A             Rw org/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipient$1.classPK   C:U~(    ?             y org/bouncycastle/cms/jcajce/JceKeyAgreeEnvelopedRecipient.classPK   C:U    8             | org/bouncycastle/cms/jcajce/JceKeyAgreeRecipient$1.classPK   C:U
<     8              org/bouncycastle/cms/jcajce/JceKeyAgreeRecipient$2.classPK   C:U-Jk
  r%  6             X org/bouncycastle/cms/jcajce/JceKeyAgreeRecipient.classPK   C:UY~ϒ    8             ' org/bouncycastle/cms/jcajce/JceKeyAgreeRecipientId.classPK   C:Uxe@  K(  C              org/bouncycastle/cms/jcajce/JceKeyAgreeRecipientInfoGenerator.classPK   C:U}ppr    E             П org/bouncycastle/cms/jcajce/JceKeyTransAuthEnvelopedRecipient$1.classPK   C:UXO    M              org/bouncycastle/cms/jcajce/JceKeyTransAuthEnvelopedRecipient$AADStream.classPK   C:Udp  g  C             ʤ org/bouncycastle/cms/jcajce/JceKeyTransAuthEnvelopedRecipient.classPK   C:UgE  5  E             V org/bouncycastle/cms/jcajce/JceKeyTransAuthenticatedRecipient$1.classPK   C:UcI    C             b org/bouncycastle/cms/jcajce/JceKeyTransAuthenticatedRecipient.classPK   C:U$[    A             ެ org/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipient$1.classPK   C:Uyמ    ?             b org/bouncycastle/cms/jcajce/JceKeyTransEnvelopedRecipient.classPK   C:Uyn	  ^  6             ѱ org/bouncycastle/cms/jcajce/JceKeyTransRecipient.classPK   C:U    8              org/bouncycastle/cms/jcajce/JceKeyTransRecipientId.classPK   C:UX  	  C               org/bouncycastle/cms/jcajce/JceKeyTransRecipientInfoGenerator.classPK   C:UN^}  7  E              org/bouncycastle/cms/jcajce/JcePasswordAuthenticatedRecipient$1.classPK   C:Uڳ    C              org/bouncycastle/cms/jcajce/JcePasswordAuthenticatedRecipient.classPK   C:UO    A              org/bouncycastle/cms/jcajce/JcePasswordEnvelopedRecipient$1.classPK   C:Uc7    ?              org/bouncycastle/cms/jcajce/JcePasswordEnvelopedRecipient.classPK   C:U
    6              org/bouncycastle/cms/jcajce/JcePasswordRecipient.classPK   C:U    C             : org/bouncycastle/cms/jcajce/JcePasswordRecipientInfoGenerator.classPK   C:U      6             G org/bouncycastle/cms/jcajce/KeyMaterialGenerator.classPK   C:U-m8    6             H org/bouncycastle/cms/jcajce/NamedJcaJceExtHelper.classPK   C:U.    9              org/bouncycastle/cms/jcajce/ProviderJcaJceExtHelper.classPK   C:U)C	N  8  =             y org/bouncycastle/cms/jcajce/RFC5753KeyMaterialGenerator.classPK   C:U    0             2 org/bouncycastle/cms/jcajce/ZlibCompressor.classPK   C:Ul9    8             C org/bouncycastle/cms/jcajce/ZlibExpanderProvider$1.classPK   C:U|z1    I              org/bouncycastle/cms/jcajce/ZlibExpanderProvider$LimitedInputStream.classPK   C:Uj  N  6              org/bouncycastle/cms/jcajce/ZlibExpanderProvider.classPK
 
    )D:U                         ~ org/bouncycastle/dvcs/PK   C:UX),    .              org/bouncycastle/dvcs/CCPDRequestBuilder.classPK   C:U+  S  +              org/bouncycastle/dvcs/CCPDRequestData.classPK   C:UVb    -              org/bouncycastle/dvcs/CPDRequestBuilder.classPK   C:UAꁵ    *              org/bouncycastle/dvcs/CPDRequestData.classPK   C:U   `  5              org/bouncycastle/dvcs/DVCSConstructionException.classPK   C:UQ    )              org/bouncycastle/dvcs/DVCSException.classPK   C:Unٶ    '             l org/bouncycastle/dvcs/DVCSMessage.classPK   C:U^c2   [  0              org/bouncycastle/dvcs/DVCSParsingException.classPK   C:Uv=~  
  '             8 org/bouncycastle/dvcs/DVCSRequest.classPK   C:UKNL  [
  .              org/bouncycastle/dvcs/DVCSRequestBuilder.classPK   C:U:0I   X  +             c  org/bouncycastle/dvcs/DVCSRequestData.classPK   C:U'Y  <  +              org/bouncycastle/dvcs/DVCSRequestInfo.classPK   C:U  C  (             S org/bouncycastle/dvcs/DVCSResponse.classPK   C:Uj  Y  *             3 org/bouncycastle/dvcs/MessageImprint.classPK   C:U(  >  1              org/bouncycastle/dvcs/MessageImprintBuilder.classPK   C:Uz    6              org/bouncycastle/dvcs/SignedDVCSMessageGenerator.classPK   C:U5w   s  '              org/bouncycastle/dvcs/TargetChain.classPK   C:UPJWG  o  .              org/bouncycastle/dvcs/VPKCRequestBuilder.classPK   C:UݷJ    +              org/bouncycastle/dvcs/VPKCRequestData.classPK   C:U{F[  >  -             Q org/bouncycastle/dvcs/VSDRequestBuilder.classPK   C:Ul    *              org/bouncycastle/dvcs/VSDRequestData.classPK
 
    )D:U                          org/bouncycastle/eac/PK   C:U"  
  0              org/bouncycastle/eac/EACCertificateBuilder.classPK   C:Uv]    /             o$ org/bouncycastle/eac/EACCertificateHolder.classPK   C:UjjU    6             ( org/bouncycastle/eac/EACCertificateRequestHolder.classPK   C:UN   r  '             -- org/bouncycastle/eac/EACException.classPK   C:UEy   t  )             o. org/bouncycastle/eac/EACIOException.classPK
 
    )D:U                         / org/bouncycastle/eac/jcajce/PK   C:U[U    2             / org/bouncycastle/eac/jcajce/DefaultEACHelper.classPK   C:U=     +             l1 org/bouncycastle/eac/jcajce/EACHelper.classPK   C:UDh+
    7             2 org/bouncycastle/eac/jcajce/JcaPublicKeyConverter.classPK   C:U(0U  m  0             = org/bouncycastle/eac/jcajce/NamedEACHelper.classPK   C:U?џ5N  Q  3             ? org/bouncycastle/eac/jcajce/ProviderEACHelper.classPK
 
    )D:U                         >A org/bouncycastle/eac/operator/PK   C:UM     8             zA org/bouncycastle/eac/operator/EACSignatureVerifier.classPK   C:Ui      -             B org/bouncycastle/eac/operator/EACSigner.classPK
 
    )D:U            %             C org/bouncycastle/eac/operator/jcajce/PK   C:UG    ;             
D org/bouncycastle/eac/operator/jcajce/DefaultEACHelper.classPK   C:U*Q  J  4             E org/bouncycastle/eac/operator/jcajce/EACHelper.classPK   C:U<      2             H org/bouncycastle/eac/operator/jcajce/EACUtil.classPK   C:UYR  Z  K             I org/bouncycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder$1.classPK   C:U  &  _             yM org/bouncycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder$SignatureOutputStream.classPK   C:U9P޾  2  I             P org/bouncycastle/eac/operator/jcajce/JcaEACSignatureVerifierBuilder.classPK   C:Uw2';    @             U org/bouncycastle/eac/operator/jcajce/JcaEACSignerBuilder$1.classPK   C:U舓    T             yY org/bouncycastle/eac/operator/jcajce/JcaEACSignerBuilder$SignatureOutputStream.classPK   C:U8g  $  >             \ org/bouncycastle/eac/operator/jcajce/JcaEACSignerBuilder.classPK   C:UeN  c  9             ad org/bouncycastle/eac/operator/jcajce/NamedEACHelper.classPK   C:U_hA  G  <             f org/bouncycastle/eac/operator/jcajce/ProviderEACHelper.classPK
 
    )D:U                         g org/bouncycastle/est/PK   C:U"H  4  *             g org/bouncycastle/est/CACertsResponse.classPK   C:UJjΔ  
  0             k org/bouncycastle/est/CSRAttributesResponse.classPK   C:U߆z    -             o org/bouncycastle/est/CSRRequestResponse.classPK   C:UVj  V  1             $r org/bouncycastle/est/CTEBase64InputStream$1.classPK   C:UGX    /             s org/bouncycastle/est/CTEBase64InputStream.classPK   C:U}.`M    0             x org/bouncycastle/est/CTEChunkedInputStream.classPK   C:Uv      "             z org/bouncycastle/est/ESTAuth.classPK   C:UA
      $             { org/bouncycastle/est/ESTClient.classPK   C:U      ,             r| org/bouncycastle/est/ESTClientProvider.classPK   C:U%~      2             p} org/bouncycastle/est/ESTClientSourceProvider.classPK   C:UNpV*    )             w~ org/bouncycastle/est/ESTException$1.classPK   C:Uh    '              org/bouncycastle/est/ESTException.classPK   C:U"R      &              org/bouncycastle/est/ESTHijacker.classPK   C:U{PU    %              org/bouncycastle/est/ESTRequest.classPK   C:U2    ,             0 org/bouncycastle/est/ESTRequestBuilder.classPK   C:Uc׭#    (              org/bouncycastle/est/ESTResponse$1.classPK   C:U1#P    (             5 org/bouncycastle/est/ESTResponse$2.classPK   C:UNq    :             ې org/bouncycastle/est/ESTResponse$PrintingInputStream.classPK   C:U3	    &              org/bouncycastle/est/ESTResponse.classPK   C:UbN    '              org/bouncycastle/est/ESTService$1.classPK   C:U    '             9 org/bouncycastle/est/ESTService$2.classPK   C:UVf  :  %              org/bouncycastle/est/ESTService.classPK   C:Uoa  "  ,              org/bouncycastle/est/ESTServiceBuilder.classPK   C:U<ܳ     6             q org/bouncycastle/est/ESTSourceConnectionListener.classPK   C:Ua~    -              org/bouncycastle/est/EnrollmentResponse.classPK   C:UXP  A  %              org/bouncycastle/est/HttpAuth$1.classPK   C:U=  #  #             { org/bouncycastle/est/HttpAuth.classPK   C:U:g  A  +              org/bouncycastle/est/HttpUtil$Headers.classPK   C:UZƎB    -              org/bouncycastle/est/HttpUtil$PartLexer.classPK   C:Utf    #              org/bouncycastle/est/HttpUtil.classPK   C:U5E6{      (              org/bouncycastle/est/LimitedSource.classPK   C:U]Խ     !             ~ org/bouncycastle/est/Source.classPK   C:U+`k      ,              org/bouncycastle/est/TLSUniqueProvider.classPK
 
    )D:U                          org/bouncycastle/est/jcajce/PK   C:UF      8              org/bouncycastle/est/jcajce/ChannelBindingProvider.classPK   C:U    G              org/bouncycastle/est/jcajce/DefaultESTClient$PrintingOutputStream.classPK   C:U06o	    2              org/bouncycastle/est/jcajce/DefaultESTClient.classPK   C:Uv<    @              org/bouncycastle/est/jcajce/DefaultESTClientSourceProvider.classPK   C:UAtb8  j  >              org/bouncycastle/est/jcajce/DefaultESTHttpClientProvider.classPK   C:U	}    4             L org/bouncycastle/est/jcajce/JcaHttpAuthBuilder.classPK   C:U]FGэ    /             + org/bouncycastle/est/jcajce/JcaJceUtils$1.classPK   C:Uh&  Z  /              org/bouncycastle/est/jcajce/JcaJceUtils$2.classPK   C:U+.ݷ  .
  -             q org/bouncycastle/est/jcajce/JcaJceUtils.classPK   C:U+	  /  ?              org/bouncycastle/est/jcajce/JsseDefaultHostnameAuthorizer.classPK   C:Ui\q    9              org/bouncycastle/est/jcajce/JsseESTServiceBuilder$1.classPK   C:U/g?  p  7             g org/bouncycastle/est/jcajce/JsseESTServiceBuilder.classPK   C:Uc&      8             % org/bouncycastle/est/jcajce/JsseHostnameAuthorizer.classPK   C:UNy(    8             (& org/bouncycastle/est/jcajce/LimitedSSLSocketSource.classPK   C:U      9             ) org/bouncycastle/est/jcajce/SSLSocketFactoryCreator.classPK   C:UiԊ$    B             * org/bouncycastle/est/jcajce/SSLSocketFactoryCreatorBuilder$1.classPK   C:UE׉  
	  @             f. org/bouncycastle/est/jcajce/SSLSocketFactoryCreatorBuilder.classPK
 
    )D:U                         ]2 org/bouncycastle/its/PK   C:UUEԊP  
  ,             2 org/bouncycastle/its/ETSIEncryptedData.classPK   C:UQf  w  3             :8 org/bouncycastle/its/ETSIEncryptedDataBuilder.classPK   C:Uǌ      )             < org/bouncycastle/its/ETSIKeyWrapper.classPK   C:U    *             = org/bouncycastle/its/ETSIRecipientID.classPK   C:UBg%    ,             A org/bouncycastle/its/ETSIRecipientInfo.classPK   C:Ul    3             cE org/bouncycastle/its/ETSIRecipientInfoBuilder.classPK   C:UT3    )             ]H org/bouncycastle/its/ETSISignedData.classPK   C:Umȱn	  W!  0             YN org/bouncycastle/its/ETSISignedDataBuilder.classPK   C:U  '  ,             %X org/bouncycastle/its/ITSAlgorithmUtils.classPK   C:UL$;\    )             cZ org/bouncycastle/its/ITSCertificate.classPK   C:UCYXZ    0             _ org/bouncycastle/its/ITSCertificateBuilder.classPK   C:UIY_    8             c org/bouncycastle/its/ITSExplicitCertificateBuilder.classPK   C:U?Ѥ  X  8             l org/bouncycastle/its/ITSImplicitCertificateBuilder.classPK   C:UU':    ?             s org/bouncycastle/its/ITSPublicEncryptionKey$symmAlgorithm.classPK   C:U@;.  A  1             wv org/bouncycastle/its/ITSPublicEncryptionKey.classPK   C:UMH     3             x org/bouncycastle/its/ITSPublicVerificationKey.classPK   C:U,     4             ey org/bouncycastle/its/ITSValidityPeriod$Builder.classPK   C:UY  r  1             { org/bouncycastle/its/ITSValidityPeriod$Unit.classPK   C:UIs`  	  ,             ~ org/bouncycastle/its/ITSValidityPeriod.classPK
 
    )D:U                         Q org/bouncycastle/its/bc/PK   C:U~    0              org/bouncycastle/its/bc/BcITSContentSigner.classPK   C:Upn  |  <              org/bouncycastle/its/bc/BcITSContentVerifierProvider$1.classPK   C:U/I  y	  <              org/bouncycastle/its/bc/BcITSContentVerifierProvider$2.classPK   C:U1zQ    :             s org/bouncycastle/its/bc/BcITSContentVerifierProvider.classPK   C:UMd    =             , org/bouncycastle/its/bc/BcITSExplicitCertificateBuilder.classPK   C:U+    =              org/bouncycastle/its/bc/BcITSImplicitCertificateBuilder.classPK   C:U[]8    6               org/bouncycastle/its/bc/BcITSPublicEncryptionKey.classPK   C:U/˔U    8              org/bouncycastle/its/bc/BcITSPublicVerificationKey.classPK
 
    )D:U                         w org/bouncycastle/its/jcajce/PK   C:U㧸   7  +              org/bouncycastle/its/jcajce/ClassUtil.classPK   C:U4#  	  (              org/bouncycastle/its/jcajce/ECUtil.classPK   C:UD=It    >             x org/bouncycastle/its/jcajce/JcaETSIDataDecryptor$Builder.classPK   C:U^P    6              org/bouncycastle/its/jcajce/JcaETSIDataDecryptor.classPK   C:U~      7             ! org/bouncycastle/its/jcajce/JcaITSContentSigner$1.classPK   C:Uԓ
    =              org/bouncycastle/its/jcajce/JcaITSContentSigner$Builder.classPK   C:Ua)J    5              org/bouncycastle/its/jcajce/JcaITSContentSigner.classPK   C:UP;X  ^  A              org/bouncycastle/its/jcajce/JcaITSContentVerifierProvider$1.classPK   C:UK  1  G              org/bouncycastle/its/jcajce/JcaITSContentVerifierProvider$Builder.classPK   C:U?V:	    ?             w org/bouncycastle/its/jcajce/JcaITSContentVerifierProvider.classPK   C:Uu    B              org/bouncycastle/its/jcajce/JcaITSExplicitCertificateBuilder.classPK   C:U>  u  I             \ org/bouncycastle/its/jcajce/JcaITSImplicitCertificateBuilderBuilder.classPK   C:Uϕ  x  E              org/bouncycastle/its/jcajce/JcaITSPublicVerificationKey$Builder.classPK   C:U$  i  =             [ org/bouncycastle/its/jcajce/JcaITSPublicVerificationKey.classPK   C:U[k/$      8              org/bouncycastle/its/jcajce/JceETSIDataEncryptor$1.classPK   C:U'0    >              org/bouncycastle/its/jcajce/JceETSIDataEncryptor$Builder.classPK   C:UaZN    6             * org/bouncycastle/its/jcajce/JceETSIDataEncryptor.classPK   C:UX      5              org/bouncycastle/its/jcajce/JceETSIKeyWrapper$1.classPK   C:U]7m"  -  ;              org/bouncycastle/its/jcajce/JceETSIKeyWrapper$Builder.classPK   C:U툉В    3             c org/bouncycastle/its/jcajce/JceETSIKeyWrapper.classPK   C:U'  h  C             V org/bouncycastle/its/jcajce/JceITSPublicEncryptionKey$Builder.classPK   C:U<l$    ;              org/bouncycastle/its/jcajce/JceITSPublicEncryptionKey.classPK
 
    )D:U                          org/bouncycastle/its/operator/PK   C:U7sU  
  0             ! org/bouncycastle/its/operator/ECDSAEncoder.classPK   C:U      5             	 org/bouncycastle/its/operator/ETSIDataDecryptor.classPK   C:U/'      5             m	 org/bouncycastle/its/operator/ETSIDataEncryptor.classPK   C:U$    4             a	 org/bouncycastle/its/operator/ITSContentSigner.classPK   C:U   q  >             	 org/bouncycastle/its/operator/ITSContentVerifierProvider.classPK
 
    )D:U                         1		 org/bouncycastle/mime/PK   C:UG'I0  *  +             e		 org/bouncycastle/mime/BasicMimeParser.classPK   C:UKxt  \  6             	 org/bouncycastle/mime/BoundaryLimitedInputStream.classPK   C:U.t  9  1             	 org/bouncycastle/mime/CanonicalOutputStream.classPK   C:U=P    /             E	 org/bouncycastle/mime/ConstantMimeContext.classPK   C:U ,    &             	 org/bouncycastle/mime/Headers$KV.classPK   C:Uvk;
    #             R	 org/bouncycastle/mime/Headers.classPK   C:U     &             "	 org/bouncycastle/mime/LineReader.classPK   C:Ug*ræ      '             $	 org/bouncycastle/mime/MimeContext.classPK   C:U   v  +             %	 org/bouncycastle/mime/MimeIOException.classPK   C:UcN      0             ?'	 org/bouncycastle/mime/MimeMultipartContext.classPK   C:U      &             C(	 org/bouncycastle/mime/MimeParser.classPK   C:U0|q      -             *)	 org/bouncycastle/mime/MimeParserContext.classPK   C:U@     .             *	 org/bouncycastle/mime/MimeParserListener.classPK   C:U۷   L  .             2+	 org/bouncycastle/mime/MimeParserProvider.classPK   C:Uy  %  &             E,	 org/bouncycastle/mime/MimeWriter.classPK
 
    )D:U                         N/	 org/bouncycastle/mime/encoding/PK   C:Ul    6             /	 org/bouncycastle/mime/encoding/Base64InputStream.classPK   C:Uv<    7             [3	 org/bouncycastle/mime/encoding/Base64OutputStream.classPK   C:U2'/    ?             6	 org/bouncycastle/mime/encoding/QuotedPrintableInputStream.classPK
 
    )D:U                         :	 org/bouncycastle/mime/smime/PK   C:U&L      8             =:	 org/bouncycastle/mime/smime/SMIMEEnvelopedWriter$1.classPK   C:Uу    >             <;	 org/bouncycastle/mime/smime/SMIMEEnvelopedWriter$Builder.classPK   C:UNݨ    J             +@	 org/bouncycastle/mime/smime/SMIMEEnvelopedWriter$ContentOutputStream.classPK   C:UO6x  
  6             KB	 org/bouncycastle/mime/smime/SMIMEEnvelopedWriter.classPK   C:U17f      5             F	 org/bouncycastle/mime/smime/SMIMESignedWriter$1.classPK   C:U*r    ;             G	 org/bouncycastle/mime/smime/SMIMESignedWriter$Builder.classPK   C:UzE"
  q  G             Q	 org/bouncycastle/mime/smime/SMIMESignedWriter$ContentOutputStream.classPK   C:UK    3             T	 org/bouncycastle/mime/smime/SMIMESignedWriter.classPK   C:UoGkv    9             [	 org/bouncycastle/mime/smime/SMimeMultipartContext$1.classPK   C:U?څ     7             ]	 org/bouncycastle/mime/smime/SMimeMultipartContext.classPK   C:UIE    4             5c	 org/bouncycastle/mime/smime/SMimeParserContext.classPK   C:Ug    5             d	 org/bouncycastle/mime/smime/SMimeParserListener.classPK   C:U    5             Nk	 org/bouncycastle/mime/smime/SMimeParserProvider.classPK   C:UOmp    .             m	 org/bouncycastle/mime/smime/SMimeUtils$1.classPK   C:Uz  
  ,             o	 org/bouncycastle/mime/smime/SMimeUtils.classPK
 
    )D:U                         v	 org/bouncycastle/mozilla/PK   C:U    :              w	 org/bouncycastle/mozilla/SignedPublicKeyAndChallenge.classPK
 
    )D:U                          }	 org/bouncycastle/mozilla/jcajce/PK   C:U~8T  	  D             }	 org/bouncycastle/mozilla/jcajce/JcaSignedPublicKeyAndChallenge.classPK
 
    )D:U                         	 org/bouncycastle/openssl/PK   C:US
>  
  4             	 org/bouncycastle/openssl/CertificateTrustBlock.classPK   C:Uf_     2             	 org/bouncycastle/openssl/EncryptionException.classPK   C:Uu	  #  /             	 org/bouncycastle/openssl/MiscPEMGenerator.classPK   C:UO      +             	 org/bouncycastle/openssl/PEMDecryptor.classPK   C:Ufk:      3             	 org/bouncycastle/openssl/PEMDecryptorProvider.classPK   C:U0X    2             	 org/bouncycastle/openssl/PEMEncryptedKeyPair.classPK   C:Uj,o      +             >	 org/bouncycastle/openssl/PEMEncryptor.classPK   C:U8    +             O	 org/bouncycastle/openssl/PEMException.classPK   C:U%(  t  )             	 org/bouncycastle/openssl/PEMKeyPair.classPK   C:UR      /             3	 org/bouncycastle/openssl/PEMKeyPairParser.classPK   C:U%Ð      *             &	 org/bouncycastle/openssl/PEMParser$1.classPK   C:U   	  9             	 org/bouncycastle/openssl/PEMParser$DSAKeyPairParser.classPK   C:UTg(    <             E	 org/bouncycastle/openssl/PEMParser$ECCurveParamsParser.classPK   C:Uw    ;             v	 org/bouncycastle/openssl/PEMParser$ECDSAKeyPairParser.classPK   C:US^M    B             	 org/bouncycastle/openssl/PEMParser$EncryptedPrivateKeyParser.classPK   C:URzl  G  6             E	 org/bouncycastle/openssl/PEMParser$KeyPairParser.classPK   C:UZ2    I             	 org/bouncycastle/openssl/PEMParser$PKCS10CertificationRequestParser.classPK   C:UH't    4             W	 org/bouncycastle/openssl/PEMParser$PKCS7Parser.classPK   C:UXs    9             -	 org/bouncycastle/openssl/PEMParser$PrivateKeyParser.classPK   C:U'
Po    8             	 org/bouncycastle/openssl/PEMParser$PublicKeyParser.classPK   C:U  	  9             	 org/bouncycastle/openssl/PEMParser$RSAKeyPairParser.classPK   C:UP  F  ;             о	 org/bouncycastle/openssl/PEMParser$RSAPublicKeyParser.classPK   C:U󹆡    G             	 org/bouncycastle/openssl/PEMParser$X509AttributeCertificateParser.classPK   C:Ub$  I  6             
	 org/bouncycastle/openssl/PEMParser$X509CRLParser.classPK   C:U)  a  >             	 org/bouncycastle/openssl/PEMParser$X509CertificateParser.classPK   C:U(U.  x  E             '	 org/bouncycastle/openssl/PEMParser$X509TrustedCertificateParser.classPK   C:U   @  (             	 org/bouncycastle/openssl/PEMParser.classPK   C:UNQ@    (             	 org/bouncycastle/openssl/PEMWriter.classPK   C:U    -             	 org/bouncycastle/openssl/PKCS8Generator.classPK   C:U|      0             	 org/bouncycastle/openssl/PasswordException.classPK   C:U4}      -             	 org/bouncycastle/openssl/PasswordFinder.classPK   C:Ulg    :             	 org/bouncycastle/openssl/X509TrustedCertificateBlock.classPK
 
    )D:U                         	 org/bouncycastle/openssl/bc/PK   C:Uk  V  :             	 org/bouncycastle/openssl/bc/BcPEMDecryptorProvider$1.classPK   C:UMuI    8             p	 org/bouncycastle/openssl/bc/BcPEMDecryptorProvider.classPK   C:U"?    .             	 org/bouncycastle/openssl/bc/PEMUtilities.classPK
 
    )D:U                          	 org/bouncycastle/openssl/jcajce/PK   C:U*    9             	 org/bouncycastle/openssl/jcajce/JcaMiscPEMGenerator.classPK   C:U^8    8             	 org/bouncycastle/openssl/jcajce/JcaPEMKeyConverter.classPK   C:UP    2             	 org/bouncycastle/openssl/jcajce/JcaPEMWriter.classPK   C:U> S  {  7             5	 org/bouncycastle/openssl/jcajce/JcaPKCS8Generator.classPK   C:U׵=|  
  <             	 org/bouncycastle/openssl/jcajce/JcaPKIXIdentityBuilder.classPK   C:UXl  b  Q             
 org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder$1$1.classPK   C:Ui    Q             
 org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder$1$2.classPK   C:U|  l  O             	
 org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder$1.classPK   C:U♜  E  M             
 org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8DecryptorProviderBuilder.classPK   C:U,Y    G             
 org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8EncryptorBuilder$1.classPK   C:U_I
    E             
 org/bouncycastle/openssl/jcajce/JceOpenSSLPKCS8EncryptorBuilder.classPK   C:U9Hk    H             "
 org/bouncycastle/openssl/jcajce/JcePEMDecryptorProviderBuilder$1$1.classPK   C:U-g    F             $
 org/bouncycastle/openssl/jcajce/JcePEMDecryptorProviderBuilder$1.classPK   C:U?F    D             &
 org/bouncycastle/openssl/jcajce/JcePEMDecryptorProviderBuilder.classPK   C:UԿW,    >             ))
 org/bouncycastle/openssl/jcajce/JcePEMEncryptorBuilder$1.classPK   C:UV    <             +
 org/bouncycastle/openssl/jcajce/JcePEMEncryptorBuilder.classPK   C:UyJ<  "  2             .
 org/bouncycastle/openssl/jcajce/PEMUtilities.classPK
 
    )D:U                         =
 org/bouncycastle/operator/PK   C:U8      ,             =
 org/bouncycastle/operator/AADProcessor.classPK   C:U   [  3             >
 org/bouncycastle/operator/AlgorithmNameFinder.classPK   C:U۽$    6             ?
 org/bouncycastle/operator/AsymmetricKeyUnwrapper.classPK   C:U:Q    4             /A
 org/bouncycastle/operator/AsymmetricKeyWrapper.classPK   C:Ut8    6             B
 org/bouncycastle/operator/BufferingContentSigner.classPK   C:UW     -             D
 org/bouncycastle/operator/ContentSigner.classPK   C:U;~s     /             E
 org/bouncycastle/operator/ContentVerifier.classPK   C:U52Q     7             F
 org/bouncycastle/operator/ContentVerifierProvider.classPK   C:UYYS
  %  :             ?H
 org/bouncycastle/operator/DefaultAlgorithmNameFinder.classPK   C:US  S!  F             U
 org/bouncycastle/operator/DefaultDigestAlgorithmIdentifierFinder.classPK   C:U    C             ib
 org/bouncycastle/operator/DefaultMacAlgorithmIdentifierFinder.classPK   C:U("슸    <             e
 org/bouncycastle/operator/DefaultSecretKeySizeProvider.classPK   C:Ub龶  ;  I             k
 org/bouncycastle/operator/DefaultSignatureAlgorithmIdentifierFinder.classPK   C:UCޕd
  y  :             C
 org/bouncycastle/operator/DefaultSignatureNameFinder.classPK   C:UjQR     ?             
 org/bouncycastle/operator/DigestAlgorithmIdentifierFinder.classPK   C:U"     0             3
 org/bouncycastle/operator/DigestCalculator.classPK   C:UKƸ   %  8             T
 org/bouncycastle/operator/DigestCalculatorProvider.classPK   C:UsM    *             r
 org/bouncycastle/operator/GenericKey.classPK   C:Uߊ      2             
 org/bouncycastle/operator/InputAEADDecryptor.classPK   C:U1      .             
 org/bouncycastle/operator/InputDecryptor.classPK   C:UEZ   !  6              
 org/bouncycastle/operator/InputDecryptorProvider.classPK   C:U9p      -             
 org/bouncycastle/operator/InputExpander.classPK   C:U}0      5             &
 org/bouncycastle/operator/InputExpanderProvider.classPK   C:U   t  ,             
 org/bouncycastle/operator/KeyUnwrapper.classPK   C:Up   @  *             Q
 org/bouncycastle/operator/KeyWrapper.classPK   C:Uq      <             |
 org/bouncycastle/operator/MacAlgorithmIdentifierFinder.classPK   C:U(8   :  -             z
 org/bouncycastle/operator/MacCalculator.classPK   C:U0\@      5             
 org/bouncycastle/operator/MacCalculatorProvider.classPK   C:UN$C    0             
 org/bouncycastle/operator/MacCaptureStream.classPK   C:U,=_T   ,  9             D
 org/bouncycastle/operator/OperatorCreationException.classPK   C:UG   |  1             p
 org/bouncycastle/operator/OperatorException.classPK   C:Ud   b  7             
 org/bouncycastle/operator/OperatorStreamException.classPK   C:UU?~      3             
 org/bouncycastle/operator/OutputAEADEncryptor.classPK   C:Ue      0             
 org/bouncycastle/operator/OutputCompressor.classPK   C:Ude@   :  /              
 org/bouncycastle/operator/OutputEncryptor.classPK   C:UO   $  8             *
 org/bouncycastle/operator/PBEMacCalculatorProvider.classPK   C:Ubu   {   2             S
 org/bouncycastle/operator/RawContentVerifier.classPK   C:U_2     8             (
 org/bouncycastle/operator/RuntimeOperatorException.classPK   C:Ui&      5             
 org/bouncycastle/operator/SecretKeySizeProvider.classPK   C:U?՘      B             
 org/bouncycastle/operator/SignatureAlgorithmIdentifierFinder.classPK   C:U    5             
 org/bouncycastle/operator/SymmetricKeyUnwrapper.classPK   C:U||i    3             
 org/bouncycastle/operator/SymmetricKeyWrapper.classPK
 
    )D:U                         ^
 org/bouncycastle/operator/bc/PK   C:U{M    *             
 org/bouncycastle/operator/bc/AESUtil.classPK   C:Us/  y  =             
 org/bouncycastle/operator/bc/BcAESSymmetricKeyUnwrapper.classPK   C:U+  u  ;             
 org/bouncycastle/operator/bc/BcAESSymmetricKeyWrapper.classPK   C:Uj    ;             '
 org/bouncycastle/operator/bc/BcAsymmetricKeyUnwrapper.classPK   C:U  4  9             
 org/bouncycastle/operator/bc/BcAsymmetricKeyWrapper.classPK   C:U"]    ;             t
 org/bouncycastle/operator/bc/BcContentSignerBuilder$1.classPK   C:UgiG    9             û
 org/bouncycastle/operator/bc/BcContentSignerBuilder.classPK   C:U2]a    E             
 org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder$1.classPK   C:U9
a  ~  E             
 org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder$2.classPK   C:Ṵ  /  O             
 org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder$SigVerifier.classPK   C:U    C             )
 org/bouncycastle/operator/bc/BcContentVerifierProviderBuilder.classPK   C:U5(    <             
 org/bouncycastle/operator/bc/BcDSAContentSignerBuilder.classPK   C:U S    F             
 org/bouncycastle/operator/bc/BcDSAContentVerifierProviderBuilder.classPK   C:U"8=Y  4  <             M
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$1.classPK   C:Ue,g  E  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$10.classPK   C:U{f  E  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$11.classPK   C:U    =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$12.classPK   C:U.!
    =             -
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$13.classPK   C:U&E&X  4  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$14.classPK   C:U{*X  4  =             h
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$15.classPK   C:UY  4  =             +
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$16.classPK   C:UVڣ^  9  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$17.classPK   C:U{`g  B  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$18.classPK   C:Ug  B  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$19.classPK   C:UdV"Z  6  <             \
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$2.classPK   C:U^  :  =              
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$20.classPK   C:Ub/W`  :  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$21.classPK   C:U_  :  =             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$22.classPK   C:UfY  4  =             ~
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$23.classPK   C:UQe  F  =             B
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$24.classPK   C:U
Z  6  <             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$3.classPK   C:UIZ  6  <             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$4.classPK   C:UPZ  6  <             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$5.classPK   C:UX"rf  C  <             ^
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$6.classPK   C:Uhv
c  C  <             .
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$7.classPK   C:Ue  C  <             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$8.classPK   C:UO=*c  C  <             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$9.classPK   C:U.&y    F             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider$AdjustedXof.classPK   C:UzR*    :             
 org/bouncycastle/operator/bc/BcDefaultDigestProvider.classPK   C:Uy    ?              org/bouncycastle/operator/bc/BcDigestCalculatorProvider$1.classPK   C:US7O  >  P             Q org/bouncycastle/operator/bc/BcDigestCalculatorProvider$DigestOutputStream.classPK   C:U;    =             
 org/bouncycastle/operator/bc/BcDigestCalculatorProvider.classPK   C:U5k     3              org/bouncycastle/operator/bc/BcDigestProvider.classPK   C:UL    ;              org/bouncycastle/operator/bc/BcECContentSignerBuilder.classPK   C:U\W    E              org/bouncycastle/operator/bc/BcECContentVerifierProviderBuilder.classPK   C:U6  .  H              org/bouncycastle/operator/bc/BcEdDSAContentVerifierProviderBuilder.classPK   C:U,tT    >              org/bouncycastle/operator/bc/BcRSAAsymmetricKeyUnwrapper.classPK   C:UüF    <              org/bouncycastle/operator/bc/BcRSAAsymmetricKeyWrapper.classPK   C:UGy`w    <              org/bouncycastle/operator/bc/BcRSAContentSignerBuilder.classPK   C:U@A    F              org/bouncycastle/operator/bc/BcRSAContentVerifierProviderBuilder.classPK   C:UFα    7             h org/bouncycastle/operator/bc/BcSignerOutputStream.classPK   C:U  F  :             z  org/bouncycastle/operator/bc/BcSymmetricKeyUnwrapper.classPK   C:Us_ c  <  8             # org/bouncycastle/operator/bc/BcSymmetricKeyWrapper.classPK   C:Uޯc 	    /             {& org/bouncycastle/operator/bc/CamelliaUtil.classPK   C:Um  F  0             ( org/bouncycastle/operator/bc/OperatorUtils.classPK   C:UIz|1    +             * org/bouncycastle/operator/bc/SEEDUtil.classPK
 
    )D:U            !             U, org/bouncycastle/operator/jcajce/PK   C:UoY    F             , org/bouncycastle/operator/jcajce/JcaAlgorithmParametersConverter.classPK   C:UbP    @             a2 org/bouncycastle/operator/jcajce/JcaContentSignerBuilder$1.classPK   C:U  {  @             5 org/bouncycastle/operator/jcajce/JcaContentSignerBuilder$2.classPK   C:UXgk  \  >             	: org/bouncycastle/operator/jcajce/JcaContentSignerBuilder.classPK   C:UFghx  
  J             E org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$1.classPK   C:U=  f  J             J org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$2.classPK   C:UI~`{  {	  Z             O org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$CompositeVerifier.classPK   C:U&  [  W             T org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$RawSigVerifier.classPK   C:U]w|*  A  T             	X org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder$SigVerifier.classPK   C:U©2    H             [ org/bouncycastle/operator/jcajce/JcaContentVerifierProviderBuilder.classPK   C:Uo    M             )c org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder$1$1.classPK   C:U`l    K             e org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder$1.classPK   C:UW&:|    \             i org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder$DigestOutputStream.classPK   C:U̾E    I             Bk org/bouncycastle/operator/jcajce/JcaDigestCalculatorProviderBuilder.classPK   C:U-{    @             m org/bouncycastle/operator/jcajce/JceAsymmetricKeyUnwrapper.classPK   C:U>y  C+  >             t org/bouncycastle/operator/jcajce/JceAsymmetricKeyWrapper.classPK   C:UNtH    4              org/bouncycastle/operator/jcajce/JceGenericKey.classPK   C:U]    K              org/bouncycastle/operator/jcajce/JceInputDecryptorProviderBuilder$1$1.classPK   C:U#    I              org/bouncycastle/operator/jcajce/JceInputDecryptorProviderBuilder$1.classPK   C:U    G             _ org/bouncycastle/operator/jcajce/JceInputDecryptorProviderBuilder.classPK   C:U: x  2  9             ֐ org/bouncycastle/operator/jcajce/JceKTSKeyUnwrapper.classPK   C:Ut[    7              org/bouncycastle/operator/jcajce/JceKTSKeyWrapper.classPK   C:Us؀  )	  ?              org/bouncycastle/operator/jcajce/JceSymmetricKeyUnwrapper.classPK   C:Uy    =              org/bouncycastle/operator/jcajce/JceSymmetricKeyWrapper.classPK   C:UL) %    L              org/bouncycastle/operator/jcajce/OperatorHelper$OpCertificateException.classPK   C:U,  -  5              org/bouncycastle/operator/jcajce/OperatorHelper.classPK   C:Ul     4              org/bouncycastle/operator/jcajce/OperatorUtils.classPK
 
    )D:U                          org/bouncycastle/pkcs/PK   C:UP0;  ~  ,             ݿ org/bouncycastle/pkcs/MacDataGenerator.classPK   C:UЅ	  r  6              org/bouncycastle/pkcs/PKCS10CertificationRequest.classPK   C:U]"    =              org/bouncycastle/pkcs/PKCS10CertificationRequestBuilder.classPK   C:UAߵ   P  6             { org/bouncycastle/pkcs/PKCS12MacCalculatorBuilder.classPK   C:UqT      >              org/bouncycastle/pkcs/PKCS12MacCalculatorBuilderProvider.classPK   C:UrKk    (              org/bouncycastle/pkcs/PKCS12PfxPdu.classPK   C:U#Վ    /              org/bouncycastle/pkcs/PKCS12PfxPduBuilder.classPK   C:UΉ	    )              org/bouncycastle/pkcs/PKCS12SafeBag.classPK   C:U3    0              org/bouncycastle/pkcs/PKCS12SafeBagBuilder.classPK   C:Ut33  +
  0              org/bouncycastle/pkcs/PKCS12SafeBagFactory.classPK   C:U/n  
  8              org/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfo.classPK   C:U    ?              org/bouncycastle/pkcs/PKCS8EncryptedPrivateKeyInfoBuilder.classPK   C:ULJ?   t  )              org/bouncycastle/pkcs/PKCSException.classPK   C:U+   v  +             S org/bouncycastle/pkcs/PKCSIOException.classPK   C:U2Y2    %              org/bouncycastle/pkcs/PKCSUtils.classPK
 
    )D:U                         & org/bouncycastle/pkcs/bc/PK   C:UV^    ;             ] org/bouncycastle/pkcs/bc/BcPKCS10CertificationRequest.classPK   C:Uà=    B             $ org/bouncycastle/pkcs/bc/BcPKCS10CertificationRequestBuilder.classPK   C:Uȅ\O    ;              org/bouncycastle/pkcs/bc/BcPKCS12MacCalculatorBuilder.classPK   C:UF
    E              org/bouncycastle/pkcs/bc/BcPKCS12MacCalculatorBuilderProvider$1.classPK   C:U:B[r    C             
 org/bouncycastle/pkcs/bc/BcPKCS12MacCalculatorBuilderProvider.classPK   C:U{ͤ  S  K              org/bouncycastle/pkcs/bc/BcPKCS12PBEInputDecryptorProviderBuilder$1$1.classPK   C:U  Z  I              org/bouncycastle/pkcs/bc/BcPKCS12PBEInputDecryptorProviderBuilder$1.classPK   C:UXX  P  G             c org/bouncycastle/pkcs/bc/BcPKCS12PBEInputDecryptorProviderBuilder.classPK   C:U0F  >  B             ^ org/bouncycastle/pkcs/bc/BcPKCS12PBEOutputEncryptorBuilder$1.classPK   C:U]  	  @              org/bouncycastle/pkcs/bc/BcPKCS12PBEOutputEncryptorBuilder.classPK   C:U䌘  I  /              org/bouncycastle/pkcs/bc/PKCS12PBEUtils$1.classPK   C:U)Ƹ    -             $  org/bouncycastle/pkcs/bc/PKCS12PBEUtils.classPK
 
    )D:U                         A' org/bouncycastle/pkcs/jcajce/PK   C:U 0(  }  @             |' org/bouncycastle/pkcs/jcajce/JcaPKCS10CertificationRequest.classPK   C:Ug~  e  G             - org/bouncycastle/pkcs/jcajce/JcaPKCS10CertificationRequestBuilder.classPK   C:U^m  O  :             / org/bouncycastle/pkcs/jcajce/JcaPKCS12SafeBagBuilder.classPK   C:UL<G    I             2 org/bouncycastle/pkcs/jcajce/JcaPKCS8EncryptedPrivateKeyInfoBuilder.classPK   C:Umicc  	  ?             3 org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorBuilder$1.classPK   C:UAc,    =             7 org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorBuilder.classPK   C:Uy    G             @ org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorProviderBuilder$1.classPK   C:UC<    E             ~D org/bouncycastle/pkcs/jcajce/JcePBMac1CalculatorProviderBuilder.classPK   C:U_7  H  B             F org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilder$1.classPK   C:UW^)"    @             KJ org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilder.classPK   C:U,z  #  L             O org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilderProvider$1$1.classPK   C:U&    J             LS org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilderProvider$1.classPK   C:Ud\  q  H             uX org/bouncycastle/pkcs/jcajce/JcePKCS12MacCalculatorBuilderProvider.classPK   C:U#~    N             Z org/bouncycastle/pkcs/jcajce/JcePKCSPBEInputDecryptorProviderBuilder$1$1.classPK   C:U~)M
    L             V] org/bouncycastle/pkcs/jcajce/JcePKCSPBEInputDecryptorProviderBuilder$1.classPK   C:U8  L  J             h org/bouncycastle/pkcs/jcajce/JcePKCSPBEInputDecryptorProviderBuilder.classPK   C:UR    E             cl org/bouncycastle/pkcs/jcajce/JcePKCSPBEOutputEncryptorBuilder$1.classPK   C:U:c  M!  C             o org/bouncycastle/pkcs/jcajce/JcePKCSPBEOutputEncryptorBuilder.classPK   C:UL  t  +             {| org/bouncycastle/pkcs/jcajce/JceUtils.classPK
 
    )D:U                           org/bouncycastle/pkix/PK   C:U^K0    (             T org/bouncycastle/pkix/PKIXIdentity.classPK   C:UKmF      9              org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$1.classPK   C:U?    =              org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Cache.classPK   C:U>    D              org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Properties$1.classPK   C:U]c~    D              org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Properties$2.classPK   C:U0W    B              org/bouncycastle/pkix/SubjectPublicKeyInfoChecker$Properties.classPK   C:UpGf	    7             H org/bouncycastle/pkix/SubjectPublicKeyInfoChecker.classPK
 
    )D:U                         d org/bouncycastle/pkix/jcajce/PK   C:Uܿ#H    5              org/bouncycastle/pkix/jcajce/AnnotatedException.classPK   C:U   ,  7             
 org/bouncycastle/pkix/jcajce/CRLNotFoundException.classPK   C:Umqb  Q  -             O org/bouncycastle/pkix/jcajce/CertStatus.classPK   C:UI    9              org/bouncycastle/pkix/jcajce/CrlCache$LocalCRLStore.classPK   C:UjX    +              org/bouncycastle/pkix/jcajce/CrlCache.classPK   C:U
    2             Щ org/bouncycastle/pkix/jcajce/JcaPKIXIdentity.classPK   C:U8q8  k  .             ѭ org/bouncycastle/pkix/jcajce/PKIXCRLUtil.classPK   C:U^x  C  ;             e org/bouncycastle/pkix/jcajce/RFC3280CertPathUtilities.classPK   C:U.{  1  .              org/bouncycastle/pkix/jcajce/ReasonsMask.classPK   C:UI"  u1  6             G org/bouncycastle/pkix/jcajce/RevocationUtilities.classPK   C:U  o  :             , org/bouncycastle/pkix/jcajce/X509RevocationChecker$1.classPK   C:UlEtJ  i  :              org/bouncycastle/pkix/jcajce/X509RevocationChecker$2.classPK   C:U۶uC  S  @             5 org/bouncycastle/pkix/jcajce/X509RevocationChecker$Builder.classPK   C:UR  H  F              org/bouncycastle/pkix/jcajce/X509RevocationChecker$LocalCRLStore.classPK   C:U  B  8              org/bouncycastle/pkix/jcajce/X509RevocationChecker.classPK
 
    )D:U                         	
 org/bouncycastle/tsp/PK   C:U~h/?X    *             <
 org/bouncycastle/tsp/GenTimeAccuracy.classPK   C:U/uHD    (             

 org/bouncycastle/tsp/TSPAlgorithms.classPK   C:Uc    '             
 org/bouncycastle/tsp/TSPException.classPK   C:UI    )             
 org/bouncycastle/tsp/TSPIOException.classPK   C:UV  U  "             S
 org/bouncycastle/tsp/TSPUtil.classPK   C:U
hG   d  1              
 org/bouncycastle/tsp/TSPValidationException.classPK   C:UZr    +             !
 org/bouncycastle/tsp/TimeStampRequest.classPK   C:Uؿg    4             *
 org/bouncycastle/tsp/TimeStampRequestGenerator.classPK   C:U:	    ,             0
 org/bouncycastle/tsp/TimeStampResponse.classPK   C:U->*   i  >             9
 org/bouncycastle/tsp/TimeStampResponseGenerator$FailInfo.classPK   C:U
LXs    5             D;
 org/bouncycastle/tsp/TimeStampResponseGenerator.classPK   C:Uwo     0             D
 org/bouncycastle/tsp/TimeStampToken$CertID.classPK   C:U6<>
  "  )             F
 org/bouncycastle/tsp/TimeStampToken.classPK   C:U    4             -T
 org/bouncycastle/tsp/TimeStampTokenGenerator$1.classPK   C:U    4             TW
 org/bouncycastle/tsp/TimeStampTokenGenerator$2.classPK   C:UnW  +  2             Z
 org/bouncycastle/tsp/TimeStampTokenGenerator.classPK   C:U,rB  
  -             8k
 org/bouncycastle/tsp/TimeStampTokenInfo.classPK
 
    )D:U                         o
 org/bouncycastle/tsp/cms/PK   C:Uu߇z  d  1             p
 org/bouncycastle/tsp/cms/CMSTimeStampedData.classPK   C:Ufjv  L  :             w
 org/bouncycastle/tsp/cms/CMSTimeStampedDataGenerator.classPK   C:U  4  7             |
 org/bouncycastle/tsp/cms/CMSTimeStampedDataParser.classPK   C:Uy  W  6             
 org/bouncycastle/tsp/cms/CMSTimeStampedGenerator.classPK   C:UbB     <             ̆
 org/bouncycastle/tsp/cms/ImprintDigestInvalidException.classPK   C:UF.    +             .
 org/bouncycastle/tsp/cms/MetaDataUtil.classPK   C:Ud$YZD	  J  0             
 org/bouncycastle/tsp/cms/TimeStampDataUtil.classPK
 
    )D:U                         W
 org/bouncycastle/tsp/ers/PK   C:U}?;      B             
 org/bouncycastle/tsp/ers/ArchiveTimeStampValidationException.classPK   C:Un8  M  7             
 org/bouncycastle/tsp/ers/BinaryTreeRootCalculator.classPK   C:UR|E*    2             
 org/bouncycastle/tsp/ers/ByteArrayComparator.classPK   C:U\V    2             
 org/bouncycastle/tsp/ers/ERSArchiveTimeStamp.classPK   C:Ul      =             å
 org/bouncycastle/tsp/ers/ERSArchiveTimeStampGenerator$1.classPK   C:UKP    R             ͦ
 org/bouncycastle/tsp/ers/ERSArchiveTimeStampGenerator$IndexedPartialHashtree.classPK   C:UB1?P	  6  ;             
 org/bouncycastle/tsp/ers/ERSArchiveTimeStampGenerator.classPK   C:U[J    *             
 org/bouncycastle/tsp/ers/ERSByteData.classPK   C:U-YS      /             `
 org/bouncycastle/tsp/ers/ERSCachingData$1.classPK   C:U~r    8             Q
 org/bouncycastle/tsp/ers/ERSCachingData$CacheIndex.classPK   C:UCK;S    -             ӷ
 org/bouncycastle/tsp/ers/ERSCachingData.classPK   C:U      &             
 org/bouncycastle/tsp/ers/ERSData.classPK   C:U%  2  +             [
 org/bouncycastle/tsp/ers/ERSDataGroup.classPK   C:U1L@  
  4             پ
 org/bouncycastle/tsp/ers/ERSDirectoryDataGroup.classPK   C:Uv)Q  K(  0             /
 org/bouncycastle/tsp/ers/ERSEvidenceRecord.classPK   C:U,k1    9             
 org/bouncycastle/tsp/ers/ERSEvidenceRecordGenerator.classPK   C:UYGO    8             
 org/bouncycastle/tsp/ers/ERSEvidenceRecordSelector.classPK   C:UfP  F  >             
 org/bouncycastle/tsp/ers/ERSEvidenceRecordStore$HashNode.classPK   C:Uv*  U  5             
 org/bouncycastle/tsp/ers/ERSEvidenceRecordStore.classPK   C:UӨ     +             
 org/bouncycastle/tsp/ers/ERSException.classPK   C:UEI-1    *             
 org/bouncycastle/tsp/ers/ERSFileData.classPK   C:UN-    1             j
 org/bouncycastle/tsp/ers/ERSInputStreamData.classPK   C:Uݙ     4             
 org/bouncycastle/tsp/ers/ERSRootNodeCalculator.classPK   C:U9J    &             +
 org/bouncycastle/tsp/ers/ERSUtil.classPK   C:UojD   u  &             
 org/bouncycastle/tsp/ers/ExpUtil.classPK   C:U'      *             
 org/bouncycastle/tsp/ers/IndexedHash.classPK   C:U򼟂      C             #
 org/bouncycastle/tsp/ers/PartialHashTreeVerificationException.classPK   C:UN    -             ?
 org/bouncycastle/tsp/ers/SortedHashList.classPK   C:U'    4             5
 org/bouncycastle/tsp/ers/SortedIndexedHashList.classPK
 
    )D:U                         _
 org/bouncycastle/voms/PK   C:U%	  u  .             
 org/bouncycastle/voms/VOMSAttribute$FQAN.classPK   C:Ugc    )             
 org/bouncycastle/voms/VOMSAttribute.classPK    b   PACK200PK  #D:U              META-INF/MANIFEST.MF  Yʲ.Xvl?nz-xFbb FYYUYJC:Pf<<?C,O+j_пE
UXDsE2?`b
{]/agQEpAo֢QNuV2c?W!P6Etл=
Oanz9X+le=_g~dQԣ/3u^~n?/Ƚ$`y]ߗ/ko_ܞʺoOAe_>Aw{rAO]0t
קE+uc+eڗY;]/E2O?GڠGZO-q{{+uߨaƟG"<X)#[K0P>⏶q^G$Zƹiߟ潛m=߿/qo#Sae&w`=Xy
6;'Nwׂ~g|~6Yue߷!;DXeBre quWfe~m$e)gOK:j?.kR e3|;|VКo!ot>ꂻ0Mj
D`;_ˢ(Z`M~CoBymA{+9HuGz̷M}Tݖew=ݑѫY7_'gnWVeE?7-㼾Y6&^}R*bg/xQ^}$_Wl(~_TOf/~z'BgKDg/5
g0;l~vN}tT/}S̺8ş/>
z/
EEEw!U.W:GwޗGߞ\R%C_/B$p_~V|һMdׅ}qH~]N6YhRyk5Z\!0w\>`eE*YU˞mZ`R|5dE}{^1?>L!Ru7/PvUw}u׷?nx;A.
-:u0NWPxݲ:OF?,Y680gw_mU|]bi+>`D> 8e2%ms{sldT9/Wnيŵ&?zPtΨA-Ӣތ}af~ٴdT72Vpp堃Azo"lW^k alZ8b} OW~6"B	粌6I_et@OC: Iϸz9	A2`f}o
\)ݸuQW}n1JaZgU}Y?ڞ'mפ9-

w$#]}vN0D٦1_4 i	U\[w5@3]y$mj1>!mҩik4~\xkM~$ug~EӊKAE'^QR!3P!ey z&LQJ"~H(AN̮5˃h|Q{#m_TU+RL_9%5J4[aʃA}cV*B9f_wWQlsb4ߣn|Kv撡:X;Ҍ/8E8Cԩ&)	[)Y,'r糶J>AD2oVΒ
dY޻oil֌s99nǐFbbNJg><Ȭ&+FW1Kծt
E-pt-dCuB_`Y<`:ZBs$A{hq#f鱼7Cp(G#UuYHb^b\YsJ$~T>L6a[yOK"fiRߕP)!tB0DaK\VE`Bȋ`1-, 3w@C.1@Gϴ
TaZMY/Iw,TH#Ķk(UO;:Pυ̎/s^E-ցP-\roֳǭY*kj@QhmȕRV3<=~ف~
%G]t t(#c8Ei05Q{ie(d޻7iֻspiɆE.ns$=?'P%Iƀ_DbtLm*34U|SK]~q!gj%lVC;%4y+̽!XE8~-yFE;.ȱ,M@^tV5S]+TD4lA\l6 `,^"2j*Z|m~gA΀+j( JqΆ|Jģr rp>(>*Y]6E%MIw\ϡƾsDe׼*,%C$0W6[8ʴp>;dg"]kgOu߀}̭9ԙ\c0ͫlu'i){-Ma%*7(^cݼ'!L%NZ9"LK;.	!Y<o.a)6A9Tcfd҅=xx/#2OliמCHTy`M@$3bgc"}V7ȸ4wUyoe:lI=PWh1ɤfx;`=̮;YokYt>8kCϫ=:C}4ϛ޿(>lې8@lHy+;IWhh:m,E[5ﰒ o]#8ȚZ2m9Sf,ϵj'(t-VʚZ}(?i:;UE]HS~3z1$|TO6904tʲ
+an#͌@v}ødv$$ZC1 *rfEt&[n?B뒀%%cK
>D؝*n`S@
gJ**V܎
E{Ae%.RyPMr!&*Mģckc}.W,o;lg^8w|\U^c
޼^j}=|o_d/K3ǀJnM:%76z_ U_<Tv=Q@%<=ޡM.DHSS&͙z
B[ݳbۖ&UC4a c	F3󧳾'Ԁ4#\t`w~t][Qk ʌm۔&ΫiBg]/0&$p׀6"K9BQF3[64\{7꿞{3Lg-dBD5ډkքq-<8$kP9_-|W}&Qlcn(:yQ+	Ԭ$Wjpj_ȝ>um?ba{lLm߫CFƳ(geV=
emcLsCenDxS_}[o>O̕@+i@XO[;✠WG2o:禇*|3ݵޝN0Oxb3&8b[O'<Ě:eN-
x_|{^Ι ȭ*by[*~,W\S8Szh3}F '#i@V]cVJҭ	w!/q2 x5	d7"XLkN)6J>׿ms쾰˘iB*x
H.nxNl,rӝ/T/DVkCU.v8H۞hJ+sgp~=7d<thx;4S`)NƕUi+G@&z Dbܛaq;(29v@2UILq]g^3Ztrqj
1CqNJp(87K1WsC|
6$ڻ|= ݕz#}qqN!g'ݖpDܒf)\R.0hMgx-vh
wy:)S{\dѻn#9m7%NrK]+/;j0Z#tbofρ_NbRА1 ٩oN9nZ&ЯTӠÜ emd4)j<E(.c8M>T=BPĴ/OZ޵F <15z\&J:}=Y 	#5[ߨ+8Y4	 W KGKE|(Pnzq]	=1q)
?%>wCn<a%
0ToPY,cf "v\L/xHM-jͺߊ+N[	ϵo`lkI
<Ğ聁`.5J65>#
嵝ϟslfUgg!Sձ<*4ڍ=|>G.E\SwEgm0ޢҒC{K*EIYM~|![E^>:4!V	?)"t(G{ wy0eNspW~ JԺ(ם Q4~H2m(Xcf_UcG暑GYՈ&w;6?!\ O|/4rŹ[ޤRsr[;C<Sx- 6lyHM2.B`䁏&k&%nm0?}	35h"oj_!m,GNxJ{i
-T8XpwP|Q_ʤy`"jiL.:zJ,0Wxp+dEJ]D3=iP,@]JHm|fNS',nIhzq̖g]uB~3'es&Hް'b=s/E8Rɱ6 *gHLP$;fho&d wCfTT.I"4 WaYS
]hW+kXyfݚ
~}Ta<7<EܠB'"Q5ʳ^fv boԿ|d@b+rQ6-5.EnS!:#;NH+.WrVMBm:<!<%tA|G~G7DQiثS9֬yPxܢ%-L,41ǧ\N{1OW6g	
֏\g?tAP'aCdaTD곚GCKNIǡ9R&:mwgSo^7}by{ojĺqMt
ٶ q?K~֊ym\?~lf±SJS
"ɕ{AFS@M1pI3&*gqZj̷ߢ{ӈo}lGlQtC8I"Ȅ͸!؁bT=BmT)
"E@'/&b+H%;Vύ[J[[QlxsFgA=zU;9Ss6zŻ%iKVJyc{;P%[ߢ*&BA!q]ÞNfA@,])){#Ez+ש?WݕuP󢫀xIBvM׷]u^2i?x_ܢ0*^Hdi,9б	pce&";N_"aݞ,$&JC
%9}W9ƂB!X02cXNu |ֺ0!9Hs{/udx+~bpK
Pȧ]:de;n86ތtJz)5/A2<ÆkF#{1͏pgV~;qlp8-rh5SXY''H+Yh?G>yx6+~sDM,lv=5 uIXk<VEMWc!.OW^V̡u6"X!ܾ~A0U|>Dul:8lQ
ۤL;9bI쟢*@5GpVz{Be1u8荩/$sY\wfwc21g	~Qˣ9w,@(oIa+ʹ2A AE]6O+
%pקDA
/q;rٳ҂^)[nw&GzuS;I2t[hl3}+Jh^ս(ں4*ZBanv@.ŭ<-T0qT5K#v81
B<bZJ}@ג(kXևæT䨳/bg?}Ḿrmֶف[^FڗHk K)
bCs3ysaܲDH1 pKN.!@IRoL#5*L5N!NnDۥ<)W'5eTSlݵX<:Wg\uPW]6D_H!*LSֳtCqu',DB޹(CPZuςhwd^ f>j1P<,u9qRyrWKz%w(ˮv )Do_C{"S}2# |_kB+tС-`,"vyOx=r_eGlD.,n= (6;C}a%uX
e<ݓ%V8z8O=isVAw"%ż8L
asدK"@{SydxJRKcyli@s8mexKl^YnU'nO@n-t7n5|SEUX>|/nѐo3!I| XHWP{ۻ򲢅@ilEͨKI/xbq1*Pl
 tFGEʯ\E!Bˊ? {:Zz=o8F5DXї|r'PϻV"V 
؈^k}x~Ҙuz8qrk"jUĢ^"Ea٩$	-㖝*ݪ9rّpIvtaV{2Zwr"f}!b+,SN_Ng1N)D}X>rLWv^wkӐ(hƒ1@N <o b0ǣ]F8㭁 7FNbKKO<X)T^@Mt
nȌ f
`p,3H.sOW]E&J,`Xa(ر!:t_dI9-T_^
KYPw\G.r,Zm4<5FsFIf]?JK5?w@,4V̼3K+
f#i=;%u\"EƮ|jEcW܎}^Y3cCyt<T1F-j/X7[kg}z2F":gPte gupa8`hyJy~I }MbO2{ᮍpkd8l9zd#$i
P:V(\8&c/vG;O$:!}E'=tWxjM؟-qR(G#Pkwd89k t{lhqtz[jWȔr#[KN%1x	lp޻||jR]zn@
L#_*jC=PP{ct-_5.&M$>:p|ܶxOyld,lKs!)_QЦ5侢ԂײػFXP W&|#Dfam)"#5~^ RYKړ[K-&H,h(X prj{-Uumet;.edafGUf@gRd vx?{{5mKdPiEVp\wu!NA9^Wl*j6ywyyÐ˞cQ]!ǓkVȉ^淖=C([MN_`yca+ϗ51X{d33?<PѢ:!{Z]v7q/h,sWIy&Q4C"qʺzw1)dLwr5>
W<
HK1|ܕSSq#&msEsw]i&iZEzFzU(ƁԒHJ)t"L~>*;!-M)߁_v+~jMli-)>d+ ?;R&;ً3?3q-ʤW78ɝ<_I_} +ӎIT,y_1lcwTozEL	`)`k,s>9L}JfYVzx'WyJBd0}aa?:lb@l"E]L"	Hud6v(dQn:>uju[w*W :ecnpA AEYRkgM7W[#5)'Hl
|ELZgmF^aCL@nN
*%Kam5|t7zK{B;֘dM>99E6kX<ٱ_n7H BV/F״OZ +m{5 fuQ;&12cg%7+ʬFwczI*yDؚXU
Klb\
GSD_6Oet@l3ɚI^^{o5g;GF>$j}o⹾[:H	1 66l<G(V9/}TI:6GhUl[V,+BUPb;߂,˻`9"
چ\(	*vgev/z7TdgfϗpkTXS
x#ow΍0ÙrF[(!.lHFq>KyP5YfΚ$^q5=usd2q_'QxX`Pv⋣u@觨/xhm(1b|;V%pr6HYЇGHy/}} q%FnAâ+軞;
p R	^k(gn^lcA&w
#dCu`~N3f\?`IزzTp**nG9&XR~iEiWDK>0˱0VN"ckډr6
\QLM{ a4zh/m;n-"jŎ:B
(g|x瘍)@^~ͪŨ}dd
BVG8qr"{\tz>>X[pÃ>BuxIsڤ*Ȳ0REP,FrV{ܰ`ߘ~ljNfʅFD7!N"%5,+#䖸F ?CqFiGN jìi/۠v]X>,UE릧rK3-p(
J+)8lژ"蓍V sրi,LB'q]/^UmIw׿t5~+yނdx* NHPv/ըA-	qK7$ežURj֕zxV:d*Q&m
]a}	FcĽY;fwVQ^ā+Fѥy
^c
ޝ_۷w+aa*M
zчpNЇ|5iϏ5ViWuK|,ΑxH9W h0O:X{?>E,lcBaI3oPCn򳥋֢o-U)ڶ|Mڦ&
ҭjz,uM[s4P
"l]փ1ٵ7>Xnu{-i(UI`U!
 ?BQ\sɊY@_[-=FVPL0P[(8W,P=Z[0f/:Y1|Tަf,FG_;bVX,9䈊1ju@f,ɼ_-TL;>M*\6E_=*R#C* k%L4I2mS4`Pbг*)n
PªTH!k?uI9[HВ:?fP[w71:s'ꓹF`Cw`2&?~ @ܲ1x;N3&G;(tLcrtx^+*OnhFeb|| 5N$iq{WOn1祧$4
̡LR3oK[
짲<mFbu/	ޒke~X'C#_+&ݗto.@+~ND q(zED.ĭ3dTh;dN:z[Hm\fbYVk鈸󂻪lw܃+Rx?߅ne=$E0J;+2憏)yGJ9X|[,Qm=ң؈sbƘ͋wEWq{<grG,uԨOYlV
sݡ$ryw'ĕ~UX:f\hAD]9Hc /v4ؘW^+V1^zڹ*zZlTI#Zx~p7{N^ uGz.:R;9N_
Bxƺ5GYٔ$)Qm5~ tv6bTcdH\ndgq:̾!plZ+.|׾OBK
 4lKd`I1R⭭J^mtvnAujv0W	W<DZҞs[IQe#'j[S@GZǊ+1jcu7IA[M/+^H"OM͘qJǮ%ۻMVy_^-aM.x
.3NI`kgCD)xܹ<oMJD3;Sݺ髚;b'}MnX}ؐ"`MʸٹBv;uݎZ@z=Z;ϷFnHȏFz9rg
G
#Óh+Rֽ_rgؙI]FF.T. Mw1
;\섵e3&h6yȊ<%l<t)өҦΌF~fvQQrH41SR&glkbĘ~ĄoDpkCͧVp*TӘC=F3$ Cs8&.O#
꿴_'9~U-unYowPS(	|*'ˋ hz2L+Ďq?n| 6xÖ%->u$uvXK/UyJn'2|\r=*'e"$ 6vz]GuvLx**{8OK$|U	^[}$A{qlg l@wt#ŭLypr&B3GMXk햫6HKMZ<)r\$c/V
S@6Th{fh폝rW-~BNqlk}nDݦ	pV^tbjpQn11ם^]! 
0#Ece&xGt>ZdqkMK6ґ5.^9BĪ**Yç7_ܮn>Xf'E	o<qFHmZe&v@Rܒa
&oh9ͺX24yoߣ^sG0֫bC}s\洜ڠ[
1-Vӏ
n<")T2*pSmeLhe/4&]ww"d c 	օkfӞn$[ibr#t ^s4'*؜Ch4U"Xƹ;pԙY]SoioE꽻g1FAhpL8:2: Oc<Nѯ~R`Ͷ\n'E.Bǅu^1aqsT.E4ۚ8uذ4'^7IuV:{NKjTH(62qFCؐɗb_f\
v\j6BK2|Jz4'bsu5ΑNuWhswBez-36k1U!x4ctUH[Wf=qa`X	J'%S9=^Y<ڂWCлcW@3T1J dŅLK
"Li'zid>? i'
ݢE멽1u@W k#qnSzv-7h֯
n(xOQPsĢN\#u*\>{w! 3\ֲKH~w8JwD`N~/2PEHNbjr&϶>d;#̚{w8+~	+D3SkVkϥa̌w19OSφ ZkɕHfIVxN}ksW]MN#gYhpe,¯K8*7/ѭ/mE)Ab KЖHE/3f>IvWQnZ^slDگzGeAxqݗ4IqI}7cʒFzEz6ER% /ޛ|	w?LBr2淼
u&;`Lq(籕t~̐}A<ʲoeL&GVV'aԳW%߮gNnք jdugpamf.T U|R?l+SڵMF;*%G^b0cG>{wAw
zT\;mY5pn3+w`~ѯv/IPLb@0h(>k?Q4nSDYXq*D{[<ۤj]RU*sP^
͖^y_!o|6X'%O.5!UC9~zZMqj
ˤ<gy,kfTި;)_ims5OI^n8}Im-\Ahca.ǋýʜBL\l;Wr)v|*#BGċ`\&"0J/d8E[:&c?%M:Wj,&u<S=Oɦ+]1s52败,fv?1LvE@~;'k+RǮ0XR#^ct?/wT[`m宐c#Refҧ(^w'~"/#P|8{͚k٣v0\:
ktN|(	R6MZ9zW.u4|[-߭ȯG2`Gvpmm2Ikd͵X]bھla=}57taЁ}I@?UgyoMWU/n>x`~E4K!{7I`g.p^7	צai	U#VkNأP@HhGz;b_zKG5"^CxE]LFU]ցW[zZwĞ<iD>aŭc(uzrlKcAl0^n8W
6̴6vcɅnA)!z0!,?q7~v5ImE49]͸s>[7=pf
#WFD-궀\Z:ޭ[r@Я[ 7۳-hR Њ"(̳k9_.gm*=:5eUǭ~};G?1GQjBm¶>Ჳѽ[`5^s.H{tء[.⃳5\«ךɉ2RˀVr՞||ǆ@/82t
VpizSDJr}_a?ߔqK%&Bߜ>Ǔ㮌
j;Kʙ_kV<'x[֪@h#%t$L{;NwXAZ/a[GB Pu%7FL|,2k-nRʷ9_dCƎ&NM"F=Qt~'5[]sTjős#هM)n,U%3wC VE?P:ΊڼF-\c/	xq_<aFvcAb";y[.W<Nvn[;:
Qeiբr>Hq
\h:+
u}I^kh'nڕi o^:|%i~'2gO03+Ifk|XpvI-&:zp5Uezc
)^	t.5Y|>)z_ \Z?Ib;3
-qL/viU(H#(b"(c3dwDwvtP/eeCr>dȦl_ЊxL}n,xT~={7#bJ
#ZSQGoYo9{u%= ْͨfuӎ@KO%RCK[-*MB>7?H4^_S$0֯dqKvz
w 5j,1Wۼ
#/KƗxyZj%z[bѲ?sgp
NfVX?ef[R*;uU 8l;vHԌFUY[aթYx ًEFF;46^P%%iNu\~\Npr!nkܸ5M_\^<%JSiPLxr+(D+T] 7A?vOtug綀!+4_eQ4w]om9Wn8Pٌ8:64J+	\Ov xϜYk-yT[;j)c/SDpJ&^Y$Tt̞}|K.:xPxsz6<_hU@Y%^\;vေ9i&(E-gI
ŋDaT\BtimRYȮAm	P2ʖ7k'oc'yϥ/A]cIN:0u+hF4?m^Ы}(m{Ç+X0-ކTZub58S*v~־6o
/oqUgˣX	J+W#Q;jo>~H(&;jJHg2:C4.ʹ4 &QdN'hp<ev
O2'NfûE6/^,AMǧP<n@K݆[Ǡvҷ/ugb{?øҤc1$sâ
#a'֋}-	[qKq׷x@ĕQ-OJrA92dE_X~pWm<T=;ڝNCNs?r=[sX?5ux8al{8'RҀCd<3#ή-CZӰ¨'8hx4pxʫ< !`qx_|tep\}[#L=P(kC%r]VB{3ctG4KЈQxצf*@:ؐ1tiүܢYztYzc睈"PQpϳ*%x)
/@2ʹ͕a'F}/%κUt'#>F.rW^qsDRv`i<Q"~tT
l)aRٸ捣Q}%9~hD|܄/IUJ;ңf;xh)2c<P֋Hl: G5TM/O\
&o{z?*ފ7?oBTjrGn
U1
[O1F\})[&$ta:OJ`:b;`g*e
_&_d'pBa.Nŉӎh2]Ъ;<s OnLE
~1'3
У3XY.%B=~jW2~Dpu<(u'2PY̘j)#$
~h0A=)tW/Uθxg؆+БH.s1\.jR^u+]s(jt%ohd+..<F뚮[t22`t9rl랹4d~p剻^ۃ{3i{<xHPt=v|QvY"nR(D뵡o/c	$/aKp	%tAb,o&rB	O:xOb\μjUTF@沶3ag^zkq)Gp{ = vaco&^|Ҥs|$<\=v:DAvw#16{'

 q_Ӡ9Ot\X$EʉՕLxeQNc4WS2]ey?!8zFNߏLNnڙ`,6pKr̻GG`+A>=h*
vS,[\$\{ܙP'dwAtp]H=1'ݺsAkjAB<5q[[dk[Hq fɸ 
w0_ɩW~[+Q#y<;S9X/5qf|̋gV^Rᓜ5Ƅ~]cj}~eQvԶ3lf*coT;s٭1a|Hex>oQV|s pEH_9+xXu#ϩ37Xc6_T_~VU}Xk]p3ij5>&*0$NTvWe1i}8 1A,Pz<):r4u}G7(5%1 WqMt-,D.311T	0Lx^
 )MDKi'F~s)YZ=`˩Nk%nuTh)~M鴏f9\=P|i$dL0pS6ǐ:Cgדq?\v:S3|35]dR.5g8n-Cxժj:sog'(%ʊ0 0nX
}YU0@$Қ&EZ1՚j}r/fLQ["MH2.u|y,e!S3:jtqb#䯉gɾ%3~N!K?irp#/fTOٷiRyh{N}Yeu
@kMi\Lg(Bu}?OȣۀV܆
%Ĺ#N kl۳y]m_tnǩAuYS9 @n|]Uc@,>8]QA{3ٜηtwB+O8׎+z a_&l+Y )!*F83ẗ́Yj0n#bqf%7=٩ՑǛ7W)8a F,w/V`WlW8[<Zkk  7v^#W:(2b/Yg>CBG>K?Oȡ}>,u
`ci9cP	Ef0G+ԥJE3e=ܕFt)2	8X07;lG"ĳpi̹u8MzX1 )y%$mrkTΐ[|eȚdfg۠LgM!h~|a{j,jՍ۲ݣt;v߇hvIʪ3;$s((cqfEBrwB%KMjQ$	~uaϕErv8ka$
_ڃtsy^CH=@v^ bv2%kaO*ɓHKn\h箧!FE
_CR.[O3R
ehlYىeˑwʍ0طϹ<?|5HT5lI@uMrg4,~*KoFCyLݞ.|VSUQ9<8
?[wdF1!Lv;Iڰ"nDHw0?(쉾!6\X1}^O6FJU
߲D{}x΃n@)ۯxQLk	H>̝4oőyHy}a,V	t)&f3Pb 
{cc7+%9N3IEpjG[R)Zn 1=3mKKqdiL޸cw_Jr`ku,dJQ	Ǩ첛~xYzt%@'
Gbws$7(]	.ڞGF;* HTe]f	 j:ةZaR*k$YLP(QqaukAItMex0ACd
J)P-+	TRrc}|SӀcaKe=&Zf'*=['>KN)`FZc(JZU:3NY)9&:p{
e$4^:A.w	r=eJ~l]K:Bf+{8DKJ#_@T% ,zԵ\.M:5hSda؞H7!"R[[ε0uhoR.cv5-g+d0!4N%N$=՘B=>Qh^c3̱C&mIkk}q#|{4q"e3^o-=, uNfu u,Co[ںG~]7@f1Fԩ_|"8&Urb3~' exl'&gƇ٦8>w3DױAȫMg/WZ S;t:Q
AC+8ohM3`V2ϧyu:pXJk}#*ǧJR+vl~oT!nB Z"?jh_Q']6͝*7
AP+g%!X	uu΍ҷz<G$%u;QX\
:oiQd4Aǘ[Ze+ykpz`w9e^_PB|y
x&rμwAm@ƿ$˽R?&}j6Uq\d[T묞<U,NFJE}ѵ8Di8]Z(³Ο	a^å]~>܇]F\mcv1r
Uqo<r? Wt/5Abp((zꯝoD9!8އ84̠pc@~}Cer[uG)93yAy}g1
('B$Ij	~c,jin`z;8~hx5aX2wwqeF'o'˴. Rڐp|\i_͜aA{mp2z1g&i3rV	)Z/N;-?@מ\n.[eqAڟot52|\(09ަasmov ʒW!_=<w5|//|?<*M+J$j!}۽1-N!ڮ>d{~Ϝ9|(Gsrj^lz4.րB}\+܏\"%w$nކYV	#l̕dc$cB?xG>覄M'd%˥.tt+W]lYAtYvh@M>mS^|F)DFk@"	whOxG^T>TIzP7iJ_Z|s(GlJ\gt+x'@^em;*I֛z)xYwTV
=(k]lV"<Qz}7Žf jSqzu$fbh8_hC40.{o*HާGLcГ܁.: Q5	UeeVG<Uh.	r	}8m'!@WS߽7>m/5"Ұ. +vž"N<\C1bJ>3m8|usF`2BN?5{z昮!P$bv隃A&K` C14tSC è+AXxn_ k|m%9P$w/:`.
UKWɽ[^ڕ_[֌?Qک('Eb'ҨavK$mWwjO0;f֔0I>uNx^42cɋD)K29~&^ߝb?F쏕Їyti'g>ΦZD<e<Q3X평ڽyeOBc6ZWfV,gOju8- {yY]!<Gf 'ܓh(ܓro撿Ee]p(#GYZӻIjV ށ!f4{NUM
aj 3sע,lm{wSr0%\[gɓ¹tE=itY}*A.TVDdreCqEE}+lTiKb|)=iO);Љyko1TY'g;~p/J|Dhiv`=p{-7.
7~iNFu"Q)Zm=ڝJ AB`+w+W&?>eåWo(7֠x"]۵oqִwNϻ?H8;٤?s4kK7DS[5x4lGdcow4<sǸך>vhOd:&+vt~@Nx\_"$cA|A%af]B<UNeg>e)V;Um;q~?
Ρe-h""yg}hyv5.O/)V
V6"칎 ғ8|	?Lg+#͜	wF& pJXQ?&	};R#X@μሏ59s0ߠLLOCbh8#s[ůۆ3N!ݏ"aLt|s_]J㯚ret`Pw& u/
o{/XW߁'w9/?
Tc]8NyQTh1y7臗{(ŝt_t	 擓9lya j$dDOh[_@Tv~ʹC:P6ݡN[s3W|ǠRԸN,(&ݯ6dF0Lpc8yϬ0wΥ
'7P
!(͐)Xt[2|Ý= HG*Yj}'kl^@`CQ|iVk<b.Cplk%!Y}.>"!]eW$z$ི2^55'p>>+bŪRF=x4ʋu.,@aO4ե`:3%7\9ߵ~CQ][{ԱJ,C?q0Nd >z>*R8] [BTj{Oٿ(VN4Ŏ3'Ii&{o!Z+wqwOpDjѩ[a&((jr^4I~Z^tekmc12F$|B9OGnN]x;wv.~&6O>R%gGQɍ2!?`zLXP[NsE]XN5;eξ&1"A^[2ITϕN	%pcO&Q"V}Xcdv[}2lc#JL''7O}sxw12V8YkɁaђ(e9_O7:U$`,gavLm3=G"dv%6^;}#xbFn)bޫM L7yQI%:, T0
@k7}@+-z~ΣdK088f!U(Qˑxιl^^yWLҵe5q264Ϊ SM8"1*gxg`oG}lX"R8J{}a:M(<-Nv?,8|\?9Yt˫"!BW,sV
3^[3ErJZ
pNNZR%"MGWeJǅ\-^QYsdlLk(>Ng`@,DK@?;9!UJ&*]]~^	sOu92+5-*Aexƶcr (keĭBB¢8&|>Uw7zO&9nqtLaʑD~PkJ~u?-At:[7hB@LQŐIk{?Mޘ)7̾14ˏٸA<+Y~ڗw|ɮґ%1 5al|J:>{"kiVS<M#9h\6K]{` BZ((ZEQc#d"wʵ Ŵ)*oYK_>soh=<KXmcֺo6SÐaY;y8i^qx+hec:-h5-ˇĦdP<^5
Z{[<nORqKDVsh>IRܝ2)	tԃn:MC-H S|qJdm*plTsb/8Ek_ty}Ai+L[
eR$~n~J0=Fm4b{BT݆xK\"
WNEޡ7SM7c`?!Pv\] qȒ!
=5L`U}gODk2DgHgxлT-A^)u(ya&Ca:sU_"¥,n]dh|/`gwp1Ue:W3*V.Ni}%/7GZk l>xJk%ϲ[UfvZ[U8m_Dӕ!r%=2+-:]i9ԜD[=Kj>}4	s1=Azǚ5lsg
XxK8yZ]}g= {GrzhMwtOl|NUږ<;ފ!Z;|3w8[\ *l<x<{sy
Q6rW!7瀉1<tw_p~vOQ5WceUХϾzU0Кz2,En|]-VqaPY
j]pʥ#9!̈́1(gWU@7u%`l	HӴ줪ǧ?VTM1GM:4M!11t&@{.dBN>Nx_cVVOIs&z՟8g&,wVs5q1
Mz9@st;H7b7{3"AALfई<}T?
ċ_sj5~~~:ߎîJBe6"\$"HG C0D?!_Dy*^lZ5,D{x		8LPL|>3/}6s'p2`t;7~o/ȼEC8n&+0Af,
s̍5s~Eaiω뀟 ɰC-4,7R]@o
סK&ܔZ? oOuWuh_~&0~A}/UDeC5kY9^dvʑ_7
UCʋ<yP;&Hw}B3u" d}ݏU߇d?1epAޚWp[ʶP2>'s[o(!
v;` QNvAkldk:m5Sf>	i1oR2$g곮.bn1? t\?%L)(Q[=Jռ".xBg@^Nv?'A?'}#ŤHgÅ]tnBs;?m۾`63', I>@yaxE珥'Ҷpdsvv0dGQ@̰C^5_6?q~X靄`U<Q|#}պkf]a>H>Z%[qqpo$-S^Y
ij?P>](yHL2I2s,A9S']ԯ5o#S?5rZn
ܔ@ثn桱\0Fğ%,=.$"^SuDmhqdmaK~fێǠf
;<U
K 	
 빻l槼gdŔ
Liк%c9XZ״(N`x8eJֽq.cv\{-%PU׽da*~8BakYO4h14%}fˇ;ZsyjJǞd]zM2/(%eA]<[$1}	X${
GAVB$:y  ?(Ƕ+Tǭ"FMQP#p|hLAA q8xY>,М)ݎ֤ה&Ţ{6ѳWT3i1hXzψsq-fI8+K=XNlHLъ6l 4pJkм
2o.-FhOxgBV3p6Ӓ/0ovw|ڻW:Iן䞕+m}z9&'/٫T5"ExrouϪi\lCNP'{7lsQuX8Ih:=٪A>t2֞)it2WwkxwsȿD	I9`>I|YCb%؀Pesk5Q;\Bqo6BK֞{ZOwlo0k1R?o`,oߎ^(5vL2	*{
<*
F
KP=|_PK4gk  f? PK  #D:U               META-INF/BC2048KE.SFGL-:?={Jxшވ<P'v٧P"bEƕm/+l/=Eq*OZmz?Pg&[+ 3&ɳeRY{/*cT恂_EXE'|''w5(wUϐma/bGPڦ /+ncR^!ueuQhᕬ>~Tb"{w{nv[-I>}s/Vm=SњܭޚlYjl29*)vyw(/5.ȶPъuNV*NuoG"[WJيu~h!ENfL%ZF)IPnL$1YW}aB;p=KY7ɴI¶燷qTZ	hT{CN/;hCso[P%0pUz	;dA'mv]mb4t5
(tjkɺ3z!r7LMP0[$O2
ݥ+ZHqUT[,JdN18Lt=۬	l4$U,w
`ex[t<Zt3ť0r1bhJ䞏Q6prapnV~wñ%zgw갷Ĳŗ%/cpa'Z~K0uwAf݌v;825H3
!p)RvigFG'2LHAGt%@	:ZDXUE^>=jpTU>Z6ȶD lA&anOWAOAb`¾K!ޣ@ݾo~b1.1{]..eھÖOJJʣ&K{Кq^h5OG7'dqKVkg ~l9ODrFW䃦c\W^:Lޖmw@>
 SCy+u]&*8 z	YfoO~nջ_v7
]/]š};O*JoZnjQDQΆ#I AZhlhͶ,Hm_I
t |B	DͻCM09;*ȡ>bz&\ٴc+l̹B
 ͱNҥlw&%Vjs̓@5\,>\hA!xhr=pb\3&Ok|H<0j(I]9>/;˿{
!vpNK}=9!dCu\dc~ߝUU[_.c3JL2&Gwδn8&1#keCC[àj`WT 6[tvTV~:O+\P"-ʫmn$j5 "D]Wݥ.*fDT+&[4R}~E،54bu>q 	V깽t.4FLwu(
)_ `k+x:Rb_5r.oY*.
6WՇnZl%62cT3;dYNTXŷ"mtTȊ*EzJ}EX1}z;ânHcUܭ$@fcyI|Yp-63Fq? l]tz'OʥvzXMDsq#\⯿?9$NlsƎ`j:ĺ5t eVv?ݬ{T}_5OLY(jׇ_]C3x<g2: DbpE~]qbG*rKZp:Ic:o6t:	m dzk_B߇ϭ
6~cAIBTu9/_g;gl[`dTyWn_ErC_ybht)nl/FPxe0<OA~37yx!)''"

g7jH#xs/:ߺO!˛C҇)G`A%j@(eɬKwˋBʖ0⧳okt_~0&U7}(5|XqC;v!~<
aD>y;?\25Bd=+pȈs9ΡE)a?td~[ݳ\`Ggd|I-LrCf2t$<CT5}or\U^S~j(,iȪf;i	OFղħ^=d@v؅L>"<g2
~]^m1otkX}O3\p;>֕{(+.r+gcǱz];8jڥ]!(ח	;t̨WC<Sm5PBӮ稇9%g=:v8B!` /*]LL4O5׾4*/Gh'oPԯGfk=fF)9-l
~q?yMnPp1yx.(r%
~=@vI?~w8s^$Y
|6Y%2s_xp}vK]{1А$wz*"lוjJ73Ɋ2YU?>riA!aLC9akβEڊ:_!uYWwIlαbq̑onaM^q$BW\T9xlmo!}Kn'p'g\2쬂7=Uvjж/h
u2`&p6'uAT
pm/hgAp>,sZ[ēN-L6f>	D"x?buh]D*r qޯ\W[#};0(qю+w΅ͼJARJIq4e)?177XցW?~?gMD{,h=j5"*F"W-5p)h ~T<Z?s&8Ps_8dR؊q͐9,:?_Z8_u[z%~oAc
2cS$5B}lg;!g}[6fP3H|ZgI⣨>6Hp%_{#,E`L.5mTs64;$׸𛿒ʛMyn	拵''[KS.r^MxvWjѯ]0>5/BY~KA<.\07?[iq?Au+MMx_ہ`{xv.<[o i؃k2**k?fsބĹӅerqi@\tq&ܗ_bO:I^7NLzK\{,TA<Uǃ9M}+b5DR}XxDR#h  C ٕDv8K}v*^lj6. f`y=wxpZؼm$Xj\ﬞls}p|۟Javd>=o׎|.J%=ٙW}
F˂|^cD^8SG2fZ?or)3Ii/JWʟx
nXD߈ Px7(m_ϷM7Q8W ExIsy!m;P O8?UfA{V-3VFVg(FV=M	8[>'J퐭C9Te1
l;XP2WJ^_m B?ZXXǪڲ<^ֹ,A\Ju|r*6XKr)
jK`<:}e'Oo2GP1]JY4$-2)}=sߑ~Oxu`.-[l#㡘o؞vL.zLe
Ը$N-ALYRmVf= LmqޝDٞMЂFqvyyBhz%2cC/WpjbKH,RAMKN([զgF
0VM7Q;`'|rZOΫӀy!ybVkŮ|7
CǳS=SZE}`?A,"._|]"ܡ_ȂBQNQ
H7zMB>N[[=t1⏈S	mwx+(Xl(m0dy;5s0#l4*j1&G^ {ubT80IDe7Su&kH(z+ ŪR^hh`UJ
:`Z0̞.w?EKy#et<
4<1+0uK+g}I1SLzf3٠\Pl'`gP Mϖ_eH'@`'kR.`+G/NaS@zP~ݰC]!]R4/Va"ܞjh>\~΅o)-1V+{VaGkJ9"`*ys3ʭIkfL'r%k|7:짠W_Xld<#ե[P}̨Mdai]ì#>XĶO12jPUt}Vu~6cG)Ԁ0!XbE$&r=ocWhIaFծهKoXꖲϋwv߿(j?WPh@Án.:Or4f+Bp xEVqOͫ5"Y)owfer.\GT3#<uS;R*?^
:DOwƃ%'DtN%mg<Ds>x.uv3@\a4ga_Ԃ
o+pH$/'*,R()wՒo+DrI>y:f\/8%PN<9.8~ohgXUy1GWǮMk4z>.ӑQh}wMZ7)p`Ǎ9ٹ yHgJ>B?C} -SC(41(XЄ"ͤk'Gm<y*וiI45%->
kS*Zh-I#Vn{׼qRrlKmOe@#v;Mf3Yʟ
,fo푚tT.Y?CgaTj\3ڹW^v:n b)벩{}-> o;q.c
:!=
zPe}Q%XQFs3=z-XBGxŉf$orjV=ox	0\;ټr-78%,y
&B熋os˖S,)DA:L>8G2Kz0zUQlOZQ[{¸ٓV-dO;vආA发+J[apcGsn:XG%źF+7ߊR_$q#N
AXG
o*)h.҅>eIE!Zz
||v@_9\0ƒ%.ӀǴvSw+YpT_xڷq2Ɛ}֟`-ݗHI.q
0>&vQ8Iۢ>޿cDz1
ԕ
? ])	leG1לo#4U"ښ˞J`.`Q'ӥ5$+r~+
7۟+ZQSN!vsۣSwB2˛1>wj|zŏ֫[N;M9u2n7HMD7[ˢ"X."ga#npjˑ)oU~*ncbKTū3yč(=Dk1Ӓx~/tnN2ˑ%4tVQ>9x
qWeU6=,(U[-kh',SɎbL KH-)II^bzW"ej'+
qQdDǼG`وʮc]rJ{i򨮟b~i͔=xeģ%:5gWۄ 3eѤsܶoՔhdb@ߠ(йS2X>|N$^e=>1apRM<IrҡN@f'jU}y-3+JNU*ৎK
~06Ѹ\ *qV;wrӳI4癓ٯӃVKZ ƹ
B9e̓L]6Sy~B3^oE?$So@a`}utڄЉsm0]
}7d$mR; [QcVɲCn=x,׾G+
G$Pr3ub:fX;z ,Nv=6W˵,BԜ<͆|V=<wQC<U{jfS_λ*sHb #Ϧ~DG+CFoO]&kw~U
v^bnϷDݾ]{-
Z_ܕ%NQIW	9m*TDqLq=PPJ~MHJ,$(`˜,HT_{7c7uWo{Ei|1z1L=
F
.u
7=+CW-Ե>yܙ4orBf\
i~?1oN7 }#1uÜ&̳-ꩪ+*9<[Pw4^
v
ɽu4SUqDKї4Iݑ; AS-j^V*MB]hw!o:-(ZWs4Mӱ; #Pm"ݖ{lYG gYfw~"|0f]RTG{7]n_(Dȴ`tesY^s?+7]ŽhP->_N>zrxwi>Jyځ[`zvܲgR#;@a*5H @s.tu-!)IW!6GI|[,54/ 
|H
/={8P g`{H\Iǖ :Æu	H/x}/'^DuYW52pUپ,1FJ|6eDºOVLJv[n=,h{nw5m˥MACYkuțB#Ց^#Wl#@c	|y=
'\O\
W%P\Yͥܸ0\Hc4ڧ	h"Otq_
DK
6enPMsD<d&aWqj]umX݉S7F
k˒~
eR4{J/b6,m>PL[7)ܬg>'H~f(*B<Q-g#v隘
{R-^7
n@a#MC蚅U9BR"*:Ŀ>:8BRnjHC)<'&{LQ dC=ȓAǩ+"˅u2}	QJe<|-"ԓ6a㲅kjfW1&agbׇ
̍L,tEpe=B
vnȡ޽yà`-Jr*`tVPҲIҰSo~{#!Wf!H
dK_mk7cu(0 %}ݎ)J%M$_vB<n2ݮyy&׽׈]U{ϻ#wi$TD̦0vvv~ɉ [A,Jmts<R8"q`Ξ;~^˕jM	+IԤso*
Տag,Y:1dޥ2AG'숙G;?O	2W5%9l`r	9H=/6uܟY@v6<	5HLǆd&}٩GX*F?TìeK|}TswXBemr!w`Uc^qBEK[@ZodOns8^rBx8X?9DELxJr"]v囍>XpǨ8QD}*O o-{a,X8iYu(˭*-sbPT3|B5BaD
*	UDsD<P}S΀=v4'&)8V~@#AdcG;MJu~$𗇟3؉l|-r#s!zO)?Uo4Q8_[l?k H6I9ŴדC=`,]os>X?e&gD_={_fH7u[d?-g^wUŏʉOj]GzV'7L_|	Y!W߇F~3@t煲Ex+gΆ)z$u3HC;븏xΨTY[`?sQ4,TODo.?KuUYQ_Zdѥ	L#$$PIehh4|
Odb3W5<д#T@ty[U1UfN`߅(;zsGV*=oe6U+i4M9侳C߉IjvFw],r-P'9)jS5`=Ϫ2*(A*<+;E<Bkn_¸_üճ_]FHF#GkJ{YWi:4x]2MTS^f>uT{Z`G{UѶ9Uq3guE󲊭bELP|+.4psͮM|ԱNV8IhC"eXbA	BC>nMN N*ɠ(n?ɻ] 0$kϖA?:ikc)N¤)'p,Q^n!<cK0NcG>=*?U5f,tb!}-"G=pGO}ulL59߇5$ϕvDwGre!NrJL@7pL^Y}zMuE	|6pPsqttNs.Il}Cg>:[P薘XY\kHɳӞO-8:du&9Q vREX
`;;nP^5Phmb=WƜ;/lOLZ%41G%+Քx>pҾUzV!h54\߾c[嬪J/חT~9;|K$Dוx7v%+;
<w~gig (U1fW^"8@uay5io|{k)qgbNqyb3\N5͡	;p'Pxu
iR9\
WSxXٞ,)0mQìn|b'6%mC;.fݢ{xSoh}Fv6$$NY$zr˹b'L}|⎁SN8T	w!C:d~c'֊-
"#9+"{D_ãCl^bu'k'pZ5ڲYk\ϦfzQ.%Lgq1FQQDeϝsS~ڿc-ݵF ,p&IMЗ
-󎻚2צTĻEkȖ\ S{n+H.5Ra
{{͛nf6'==Շt\P_ƈQѵ=*;G5{t>C9/	ѝxAz@nƄost
TL
H<1>ĝfgr$)?gKTLPcYs6DF٪a]D	9'a"[$Q4 ",]pfjDp7	/u.xb*-(E6B(4zl:^)C8o
-&R'2;K+:bf]Z݋IS!%h:}&qb"
y^7xX )+Fr+9BDԊC.$BKxdy'قw(K߉G"caT*aݡjUȃkJm=9sE6F4B{.o^W({]~JD^I`"i4Kl\J.b1?.jO'[dSOgk0܌aMC^Kt
'IC]WoYy_buRQHtlʘVojA^h
O}ۗ09%ÉmꝈ/\~9AAD(mU19C3
<l״KoO1wQ$ȝ38w+m_ F}<4q?=%t{~K60UNH VG͝N#Gz=wj搈:zxg1鴾7$Iɧ_JU7z=Yo'Զ~bn8Eo(4 ig;9V^SIʸ+[2c!m,1
Ťh}x^	>,g9-R;&PJL:溔77T[ N NZ#U/Z#5܃HM4gu=0}\igK6-Jy:&{#nC`ʄ)F[Z)QL$_.Sw6`>P<\~wk˴^N r6xrVdɉ$쿙H\hƈ#i=v,CG4wmg8SV~[:pÞ*;l|d,|~	rRSƌjXs>j	m88C2qyDVSk_Ql-M&!_ύAG!C/-<LgrzOޚ~Gc;Jdي蘳Ceb.5e#e!v<4h7b!K.[1ƋSW{X}2bP46M"N@
hELe ?>xYov:q=ܐ%]ݝPȍOpCN\RߣSV;aN[-B4ASËr.Nږ{"e-c[%P9$ڣYQ*F?h*ѽ0L\Sunp~4A_w
xFN/L Da<ebW8Fߵ5=[i?wUMb0ԣ?G:j1Kؒ];Wjp5W$ADo>쑞]kJb6i,)aBvX>h##ݶ.A	p_a	PD"mB9~PJrjڴ)aDjbZ1&8}qId&i@:ڳM]Ka6=_@2|	Fe麠gxu^^vqťF^?mK1UpA@$PK:xf^3-zЮf*c5Xti= ׽-a#|	 t(e٘ǡ!kPs=.`8UAW4Nl%Y'FoGlz'u6]ǰ4%#>x,Gկp*v$7<ůeԳ';%:!ԑ=)~:,V-ͥV
}0;
C?_BPPUDޠWFw1ź!loІYXҭ/cH ;i.cfoWd0gO8F04юҀD!$&vHvNv3y/4Ese%X'3kL0|
#v _e8rSr;YN{H`VL
xu6Qv۷@ٯ14_aTZY&$.A:2lqWߟi FSb'SǇq3rAOI2:M4`x]X4q4伒3utdkh7Y,n&@Ző5ֳ(-FF6H.;[N'YI{210
"*Sa>"~4,JЊnk LÍ(eXκsb={p+t˥;m9QvPʀ+񖈺N|%Lؓh5f<
5iv۩Z^ }*&JtO{YW*'	h&:Uyu4rzB!-zwwd'۠1.|b&sJ&\{ޢ4g{]_3E=FVvp)yZ
OV5[~|JߘAc%<$d[GS>ǝp%jٻl-.ƔhIAFēz+Wbm)ITfB%(u!{T|l
6n:lM," sy#%|tGAd{aLT;
G@,<j#
"̱^KO_|WbbSPV=.]o}ç ^z~D0c/q\XzQiq)lfy=rޜGùC+n[R;v,I1 gfKeXMot}Yl=v8_PMפ]yəT~ut<.KDlۉP`ZN4Ī,fyXy_ q5
\S-yY4C6}5F];Jsp_2/һM\ #3O(ҀW'MDh
8K?G
`
sփzֈ7u4D߷s[Ga6Q{ s8;oKdʎ-CÆ'b2闗̞$Bٰae:]K욧|wm Y}'U˼7^1ZA693\Ij C/
S>۸V9OU95ک6?@Mop>r4p:"1P8ȦG*±F,Gx\x⧄7sHJVֺq8'V~mٿ~)4ebF.nh	f"ɄtxJ`g+k(;;Y!I.%97	j*ZUO"oe;oOvuT*b^c{&Bd`_Ih}ZIs_ߙ?*]s`é R>W:L<uw݇}71%bBm"56473^@q
Gr1A:p;	6 6XڃK>U"1XN4H`|ם߻'>Tn9 i8+@g
%60{iZ\7`s@BoSawQnղ'
A-Ɓ& fX#p
p;MBc^׷
Nr4ujƫD
 
 -Hoހ2}gOaRFsސ,V +
y[:<N|3Mޕ~~5(nn\é`;7Ǉ{镨 |'ϲ;^a3ظ`w)mfCX;	s4:<y~}4ITu.}:^4(NG?
Oi,ݫ[d6P7b73mRN&7ŢϺes0aw$ԫs8(χn*WgkV=d 6f]lmhhb CGjuBcM*Йt3rnh8%>l0E&8P7{(j2k7NAJ+@*Hy+WW[wU0w:V2}%S:Ef|0n^ѹ3BSk_-p5>}c1E.awv/['vpm͛2
pZ
NeNH/* [U7~=N ВK,Pl6U&:+Tַ;3?`r]PrސeoM{QGǑJYrec#^Hzx(iަ(&N^vsWbKLF'*gʷ1=q{l3\LC!QʓT7{kt5Q蒦ޤO9'~ݙik^QC9F6`l]Kh
,n~]^6z7;Ֆf7c !#<$ڝ{[*թ&zj޹3##"@UPԹ,̩y:3粤N-^Az4=aicCyRhv8{79O:"̩
c+cRG;Ɵg};ogu(qI2;]9E2ȸ9ztOX~[[?tmtp5B}㇅ɏd1YλHAU0<h;:.GU)#*Ir &b
]E[@u%oWByx.$d&̽؍jFX&(EQYpq/:ӱ@td&925_w	ThWTj%j!s|5#PF\^s^ST6@%rGȖ&ZOت'cXĕ7VM&ɰ(L&F+i,=ju
]?JuTX3cfxsJ^ͥK_Jġl>v
n!P|#Ei!h]Y`FHrUM@lֈ3~Rqm.7upObؔf٢4ka2}61t}9C1:6.c8/KiiQ$'̛geKt<nJDJPsQ&^'YAUȹ -itwcJ]-WH4ܜeP8'ݖ؆{s#bH@]Ť"EԢ%Z2c<^^a%{I=cN"Tf*ޒηyuF'̩ne% Zӹzu}o(صGO
rN/tD;֊. $ngV4I:z:M;~^@OLcKjuAuJeEʆsmJ6Q;yt|\	@efC	r532	̏\UW3N)FdW9Ñ#/?C?<ਾ;KLXmdkfƋ%uFEoW]	;A7v'05/͡Y.*&%FZfkDod$5[u]I }p>_y	*b2[FeIXE8̅h|UH^XaX2C< ׄ\G:Ab>O,iލT'YsfLf/|N3'{܋˸x#FMC2in";S=!;	S+'!]5%[dLsGzCeφZ.΁96bOif@y:
 xtw|%IF$e~)W-G`\Q@ʥ"rыC_FYiV>*7KlS}I28Wi8TM'h5oxOb_d!X`\ XikB(4[9wV ~vi-]ms۬Aiӑ,0EN#*&	4{U`ޜ^L*>Tn9wʱb&$1[E5* T8wV:%4zԀ`O:olr(n:#d_Yݭa	:+Ol7aྠs[I&D9(}aG$Kġ!_F賽ҾsyZGbkFe-f5c@$/غk7i$gjEk]\R$ 8Z#G'y{dzCH" -0"	2Mj/AM?1W5z$>_0zJ:Å-EDhWs
?rf֫|x8wךlz'U'^!,sd	<`$Q<H>n/%qݰU^wTEKD9(2}<4~m0ybkXwRyNzҮ;ٗcƚٺŇ(q"al.U~JkZ 9r虮u
>o9JT+d*/m3bC.tmbXߏB`\ob^.KI#V>lM),w^.'"kPRk{dklΞv -jo=,
XldzOĩTKj,y]S1\:
}?k0Ie #Y@PV0S	5Mb`'Ɔq{<˅kz7v.1tn(5faRSge5I!CV2!TC塛Q!:xtw<s֒.FE˭ r$&8ipİ鳐i2Qb!'\ &EÄZ[펖u`L~O0=<&@Ʊ]8O;Bka8Z~Ñj&~tE܏Z>ɪ(Feh鐡C,@1>?=rW ]erIA	\G1b#TVfpi.w
ә1=(!A\y2+pA9)h/z` 	WR5P'\]6klkֲQ`ޔe9db]0eTPĦECb"wods%kw0bB!@_K^_E8n{`VR91fWyHP1xC.fmH\tIlC+9_Z';~7`vNv7*CDN8&YXFXiQ3-+bX83K4q#0in==Hk^&+nr];X~Y&hܚ%>"J$Qnt` ίf%JhJ`O9NLݿ-1>=k	VJk3l\8N|.U_R?:x-Ayb5~qXtoCT8ًM}c<T#.T;J4YsLtz$p:
Q/fti䎾2똧RpGAj	~~PGۀG_3>-arB1a1
@l(!{x;t/(ރu}vHWWw4 u4Z#w`YЅN},^P5(TyQ'=f3;FLiʒ/۝_`'w
ayT̓E7v{`%Qf54ыP\dwF~ppf2TW
y(Á pmy{J"2= B#Jw@K'/$__ D]IUb*6ǳDfi#M˦}T_ DOxEFgBaE
{n|J/=w|X{",M(߇rtSzKgR(t8xwOd#aoK~SoF-Y.uSּIU({t/0?LpHMx'8,c&wu$,|N
˜|LHM;hn0>w#W#'^	Іs㩍_Jm?m\Wq.x)]B IG_rBΎv=7l]zLyª^vXfQrk>>?2}1J\\|ώD*_}|m`Ri~ĐDDڰ5EUS~x_\0Svsޭ'<ꮪ&)].z!2r6QO&ʸjƯ}v{5&#'^52 Lk }Yæs_bzFԱH/*5`x=E8|	y>R[B|9Sh+&kvCF#Sח< k6X]=pT(](g&2P.ݳ.ԍد
K/;hW~{&9t8bBtiheAdʠ=/_
?$^[66YQf>!xa	^"1?d 0$vGi
R2I38_FX$mm4psz' :L2	ނ\5_* oJ(JڙÞlptX<h'o? x1\6E$I
F4VWBD VK월GiHD,`l%pa{סFrx%8M~P]VPh,ԩw݃±$myk[{&
;5	݁͆>*OX@{Y
Y|?<<`Z []-΀⯲vR\<S چ_geٟ?7{qbmAf,>8):_rHJzE
449T:Q
5yh1EYأJGD%#Fބcz
1)wwwseFg_-!5^Ndx٫m=HO,rSoùE)oʅy7qSs؉m*= Z%=a?6E: O9CnsX
\NIFJ/M	'7,]c1]P2]/|R:cá
]'Ef5Q}s=t$+~s0 <W~<I+
YoҕC&NjNIa/C0rm%*'I"wj[Y&<OKnF<(}PPa˞/1þ#sr_EKPήȟTX0udhpH\Q;É *$z z<_Bw> /?h,MӊQn>viNu;&Fc(EmR!>?nz}HLaC CеR~<W5M ANݫw(63jVZugxW)*tߴ\͐<鈋_=zqڇ
-tI3ƙd$=ɣ[Cni< 󈂧F2c^z|~fG#MxTKIgP%E/u6JI&{=/-U[!O μ2~"+}7*uפ`,uG#1TN糗_a9ciii"Ǟܴ(LApHv6o`mðof"sgnmw낤o(~%
xU9
~Aq/oʯԌ>qOŁCbqjiGtw$?)`|::H{LQi|^PXYiseL5$L?VЇv$F<T!
BlOGGQe,!s
zVr0BnGwu^NPAl+.CC_1TaPTu딑K6}vՉrl`PMқb6;y>*9*:~|<i4Pd~		t;ӬN4Q}9Zêc+Y McL6H۱{PL83m ~gx5Ii|jq_@5Vis]hKymW2}I6H% 3)] ,ܓ:6r[tm{6`,;DFp;'QbgxBv/al[+H09/lF	`\H=*でͲ2*inc*Wϸ?toᘫ+j#rC+J?H0ֻ(;Y?
dHgUN甍
UрLwn綺/
A>5ҍWSg6Cpkv~g=ld^oD<_4K:4\cnyݛA$?Z=q(O6v;(cd?E5»r8`P/pG?ga >u@1{ciT fobQbYe6ʼn
'ԟ!l.5ټJ2 t'9\8L>ߏ({IۀV=ʇٵ!e]8!@I·D$;⛏q2KvENXEZI>N^?ڝM|rzE^ϩiSM
xeCW\u`诞r!Iz'vN=*Zy2.{0$&t:< rbZbi6q!?_hX&`[^O(Ҏ5C;D$ɞ'2	l2y:v`d1c~bF1*z;Ee
XRC.KT&K#yY0O˖rPʰK֌Q5LDŎcT|
Waʀї7c|Һ걶vJD
/:ײێd 6H7څQYnC=SWW-0'̶tBoK-z\Wߒ	]Fŭk9T2XqΰX{}.<kҾ.ْtpXĹ	is.{5SY=򀾗O着ޡRPCn)tc|
N|[y7}X|T蘜Zm3Rn@6h`aWv!2~>GˋIN-b"u :g00< M14;ٖG(4M#3=:)}Plܷ9A v-#1'OҋDl2\4br<U7-ԗ-UUd!:8_c'LCMEl"cC'*YFQEO-uB>Qֽށ3r%-Ɨ9">%Tm^ ZHԼ/WKpKOc-y9$H 䱭)?/s+Wy=Fg&C#Uu
2NњӦ4t,ͼ`cw!W^ݳ`J_5h͋)B@Qwzxs-׻iՃږa]HPkU{9/8xo猷am'*gl=`H3]y\BX$^*i?X]
MPH-]\rwo1-6znʂJmi.Y<.)Jn7nH%3ֲw掿7_t!=~G~ʯ4HLl[MQW"W3B
![^D\1{>>z.rGjn+gUMV\|eamEe|efǍ[=j(,.`WC<OV\~WVb<3ZBFS\'iR*}K=?@?z$D\eO!E\!#s_CFWVlFFs!

@ YqhtS=yN7*>*'l,6qhTy$ZϽz6Z PS")SGLs9i	BɧjqЖ,&QζߤeH|^R?_O	=T|Paڢ5ewNLA+?1S'$V o(̦4Ix EKS{aDSTc>b19t*!ucGj[l0;sJ}?6D;(u$m(.Hpo
fߝjVo CCB]p F7]=$8KZx2ܑ}Ӣ
sਖ਼F5StMfRTuo.N*f􍓿@|O(eC`x. A<et҆ߗ
<_`J]6=I.յVln`4덂@2n%vupeYK2I	ogK]?rx;X,4CFF2`$u]gojHk	,6di3*O	Kh^8E1G&mEޡ7ڳ|8i
iq̧ʈڄ"?,JO1l~a2ۓOm1?1-⃿豸eCz<&ѡP=3:0UG*aAжc$"vϝ K_bX={^@X݃\B
#u1qN-
<ю
c"k<?KHAy`/\,F7=@6Aޚ4cNsH(>]HH{
wD.Hk{rdaPĦ+O}[}VX+bI~h
akl&:17-+<Yg3JΠܺ =K&j:J_|ޱx6{AʅH;7ۑf
1\ 2rv(#ԑgy__%cQLj)0K5/"k^Ol5m'}h2?XD$kGAjy"|JA6~i|LoBsJwªzl|{M}ceDkWL>iqp L{ŖpWxgTSfAR^a(S`l	Ւ/JU3LF5c7{L
l3)'=(דlTjz[j6#馚n%
C@t٣EUG	v홷e-OVIq"L510Lw; FmOiTÖZ๛ rKֽRɱ{@ͻț?$MP&݋ǽUe
U%<kыm}zo@_'nȨpdNXJq-#i32>!Ctho[tmÖ1T"@Q\3j1c$+*pK4:֣):T_CiH
I%VP{vDnv h)blG
v~ rMCdSZRnq&Bqwkn+._`?'k|O{LtE.<	٬4BRY5Ƃ]|H5KwGf>Ԍ).pu=>j\paB/8Fz
D#$*Џdڜ\&7я5}n-c<D?*uuʠeT,:t61sp4*}G'p En9Gݛ\v.^ct&Lu޵nX*_CVN}*ú7ɦ3&rקxXVjs~dB
[_^
 HUn%kH>JWZt&Ik|XzRaRnxALsp3LHȇ]^A+1/L}FM:2vѳcDpY:hx]@_6D;dPMT\h%IYr]A2'ͦWxscݱFy)QǙjnN;!_'*)ٿ90k\+;k<u#Zα
wƾ3ݠ !b@tUs@,.p1KQ:bf1Q=18s$RKX34f ψjݨ!N?`LVGlʟB	fO|cm^2-j҆Wji.sz'yvAr5;FBT#__z}ߧI|n#.&Wv$WXvpڼvlJ\³J0OsT`כp]Ͻ548CiÂ=Y[ѧ@(b+V,L޲gaC<DQhQK|Av;"LaV"}u?Ueɟ|E3+,'RyB3b[[wт."Y97H});{"!Vн\`f{yj*`gjv/	J++f]OWD7g=c$qL[9к7,pǕ=瓱^5/N9KG2ٺM@BV~ b 4WjTU}k,O_+\H,mt9+4/jʫn7- am05@D<#d"nַ4/=.s+88{*ĔN¸PЃy#oiy֪$BrV-O܀.pwpm$5ǞPKs4g  ) PK  #D:U               META-INF/BC2048KE.DSAŘu\[(i	ignASFb QJ@$T%$鐐F"r<y}̳Z{gw/q Y(} Ŵ
 !6EE-c Y(d -PYP,?:Q!ǨY hjl>YMKkg[+`:'QDZu|,=Ndll:DJ@x.<p!"BbBB& 3/ f>݂٘ L
E|sd=;NԤ{S%xEq~-'!q=d/QdWљlUkUAFSQh`R<J]Dxd<i!F
gĬfIf#YBxIl~2S)C'Ia2\\%q|HՖ6	&t̓++<-;g
t*UHNWNͥ
R7{rk' |{|{q'v
@Ez"%x|k"+SΞt0\ A I
щ sv' K<,NP}4d@@*qGʋ,V,yp~
-I7mh,yTcDGR~7
kdL뵁H=CP3-ZH;9Ⱦ:neP1c9\rŤ涖=u^˔3 OW_ @~&DZٮgt5_7A
2 bBIG\K&
ʖfIbP& `}m7BenOrqY6ώ=w-X0 	cV@+a m1Zp7;5[\35Ɲ)cܙ86f``7뽧ruwBY.d}w	JVwPJWẩ[]7ox:D ΝnSf\OrV]]dXj!ɏjFud=9;ss޻vx@ȀsU2@ԉũCrtrLsSzDﶁ8^oX)k|jdXYM;P}j5;OجӞ"l@q.+;=řG

S.r{!LOT"j+.~@MJb7Q\^bj'f@
uOcEDJDGz"_I]뽡b׺l%B ʢH;X|H#;UQBk,ȏ_x|s&Nf?fN/H,=obS۶vI_osJ0/0OzOZ8>bC9B(4!L8=v"_h8	}.
MeN=.FRԕ2q鳤zh܏?O!cN]d=7U_G:}KQ*d@=4Z8Z'EH~ڳ?`8	wkFOwo$,}Tzzs-As\;;ByxѓPYqJaPff?<^7wS@4u׸b%|-[m[ɚ/	$9ƎpAķBSң#%ɛK z\*,kRZx;C^"=U7r GӤa7dukάd'06.76
=F}n3:v4_3T:nqB~9IK)#T͵i.Dlt:ȷNi;,QoVvTt89%tҕLÈ"9ބ
e$mØEcn~E#)m;jbR[)t,u~dr,k
(Îs얄S
%}lm$CtLZOd?v B!KY
`/ڴcw1|%T+UwʶHa^O$!e5+/m|jXJ/T}PT &|;=K~
:U,LPeE(WvB[']R#{ڟ=ԛ=e?qq;{K13TFR_nk"÷bF[rQ.s*? 	:'i%=ǂibiCoRò`;fKq)UGD~M	hQiK]hq>!
˛ZNZ2
BP ؉
&<Py,@V$Ԥ9qBMgk>wr*d}]9!)9;(zx|cBvvd?;zޞ^6p! .׽(/ ,sptq?iL\-@`Bka>+R"p΅801xL?8/恂3zDL $ڋb_Nf/y	Ұ30'XdHS$;}I9 F$zH?\cՆ(w1
|}ߠ|oTk[Eu.ҁ wݺr7z<T9Cַ,%pJ\fkܻum. I2ֳ^vuZb1I&rnTdbhΜ^<^!KG-Z;!፯'x S͏>2q+SRԼ%͹Tn<М4,B biYu$(s>]F1m\C]Ew;g]l|_Z<cCq7L^rE$qF/&5-,q}Xmis0wҶ}JǪQrG܊k4,l"֯ߪmWd8/}#;\:oƶo鱉XZkf?Hi|`O[Ac}>߳8OE P~iv88bcۇ14j)'\4=91NSl==`y _OJ"ILNa6u)\? 
[c?Oca*B?6CEy>:z秀Л@hpg 1/3FJA$c\4۾hǣX=n[|m(EUy|#AGiM]422t[߭ހ^݌'Vv\"
ZG <^gȾ@ǜx˹5cj{D!3$Zs8	g4R
V=BrĲF+QG*/1qZbQbkJ[X1@)e99?I5xyJltQ'S[+I
(R=ni9L#3wxb<n=-ߥX~M BRh*Lt%
!!X?A.,@TE<u
}I'CHf;sfZ8]v+y{Jm2_aŒA{H!.땗owY6Aw>h;<klx}xL{f-9\
u!X
xPVb W5@9`wQ<Ԗ{>ca8"UJpq];ì~ŷ?YAcB2_,bB鸹yaa!L*a'c>})
m݊-J:S=%&{J
yӣ33<]>B(>g
[fVH.QxkmQ%աJ%Fl$Ρ5 I%76E,߲yTٷI=eL隫(S\yŴZ`߮YD{E,+hhX^iu,3G|6fȐ3o7ae$>;-8F8hz-!Fto/sQZ43#1kzN&`9iK)GbߌZ6XvwqµUO3$rG7sR]&T/&ƆB#V֎F4|P؏pE=K[įM+|4Ӹ!Kȳډ]1Wn3dLNrhRg3g{f
Y<ZEDtKooŴ8۠Y9|>Ht`PYoObf_-Nkml5xF}^vX^)80#@U$ ,,pK?q
4%VAvL
˨H4ݾF-K	9^Xt/\2qp*:֪nEO*l(23sU9";.Ѽs$W|ݢX3.'҅/16l	
g>{k֚TsEmܾ}j#堉>;my\{~Cs
K\iZB>xv֪4sUH_)
J-U%N1uj}GZ֩]|f\@5޷'9͋y<k6J>Rtzx
S,_9:>/Drm)gx0MQ3PG$/no)ڈ)5-)j$8Y%F(ЈgVxgB'Ⱦ66f`Q^, y$mb3O{1&/rдEĽ0zXįDDFD?)*Fͽ>pb1A,4;x>LjQu`e?%o!yOOoFTCϼK8w!L"Z
p'f5.6]7o&0k|]L[ǍsH S{"li(W
S\K*IGtu3)^<(24xr-ѽ@k%6έE/I볼.85'oߚOLiBXfkWhW{Komt^,34|gtZ 07{ԥi yhN\țx]ߎJG*1(IhV`.J$޽D%/06	r0?zMH RqLT5+I퟿g!FJ* #Rn\|s.ի{		oAXR
Z
N\^kg q瑷(.RG
);\y(:
}CbUC{$&
=N("mlU7JceI^Y ZEu{P2{Z1µK£5G/gښrʃΰߝwGNU/dY")`Gua5NB
]PI`b/٤xMM?QU~$:I)çpH~ Cul/o[=QyVt~!NCjivZYM=H2bvC>_<5}kyg]a6ZQ)Mi5#=P2veF~+[BRkЎAu9jaeGl;ky#oЍ\Ջq%}Ļv[$<V؂큗eY_V;8#Xxw;81eجHrRfϓ((@A=N>S徬 ͟'ER2B(ܧ˓'T saႨᢤ䕯t _C0$rŌ}]M(m!n9*43	;_pDKf$^дi.xfTV͵Pwc~_9L_3{:p=3JlCCjofz7c-Gݛ7t^~^GNlX@eu`zv]TCNbT]snUjg=2t={_p<#6զ2!!(Cst^NOŚ5i%aMTxOxS>6
,VhYS G׈XK2g;.e'*M|sh_}|FBiU@*|0sG*1zbO\v]HJ
wl|><H!=5)Zt-+CW=-FǄV:A)#:ئkUCF6y|	nuTt0eX@Ja<Rљ= WS_xpNvGq,'ķ=F&s=Mrr6"ޜuD{G{J55]>'it|Y7xѰSF77PKJl  
"  PK
    "D:U               META-INF/versions/9/PK  "D:U            %   META-INF/versions/9/module-info.classRPR" AAA	EE<!0[ӝ2psyW>ꪎEI{&_&u+o 
8 a^iS9
@і'#c0W3߳QY;ȔSDH?{z]V5
C
mH*\%ʮ5t)\K'>Hv=N?/[~ɧȑLloBklq[7-zﴐ)*,f.Za)vKQ]OuMa0y⚈'u:&Y4!݅=Ϊssg
ιFWFbMXQX',ņuv#S,QN@pIX*/NktP-{>7χ^"Z{C愷{﨟αg[L^rE7+puRxM(:'uΟZxbJ;BcXzה5ayg=}xîؗ,0)	pB8)XspU-SpWkPy:&1nn渋UWZ[\p/PKX,D    PK
    "D:U               org/PK
    "D:U               org/bouncycastle/PK
    "D:U               org/bouncycastle/asn1/PK
    "D:U               org/bouncycastle/asn1/bsi/PK  C:U            4   org/bouncycastle/asn1/bsi/BSIObjectIdentifiers.classR@ҠE"xAAMzT"JbHC	EJr
3L9Co?(NjSB!)Ԯq::I::PB:èq`>h8U-řbTQÜ
j4~8z,-!,ɯ42	h;v2	)-FP*ە՗\6szbt2o
їnܜVض,?(iqb"Y_E]lS}6IZرǨT˖(`n9u3?=D}QMut39UKh?zOa&[ϯZ-+?=)~
qv6y2MhFh8ȭ5ˬ0*R1Lí:j$[T%sy˩+Uf_̟Tnnz7@ (,9X;jR8q~:H4@\~` a`@*1 $$@Ɓst5Hi4׀p"p
p Gc	x<4I/ QRjf|2vQ'nNL.rTf̋2d#s@!2eee&edefdLȌȌTej2c".#<?)j$JwȬjBvhFۡNPP,tZ*BW桭Bmak&B;m3ZQIV5J}
yقz㼅z㼃zlb3m5ڐz2̅zU>
PKU1  C  PK
    "D:U               org/bouncycastle/asn1/cmc/PK  C:U            *   org/bouncycastle/asn1/cmc/BodyPartID.classR]OA=SZ]O vWE) PRCv.]L	^OD)ďQ❵I@<;ws?f	ƑbhQsC\g´;10I^<o_/W=]+1mz;L!N޺Viq)<g薱k.9zu-pZ<dϴ{=!bM}ѱl+J\߳#~`%]K7vi}ateb]/Vpg׊DqJKBN	z$2ųxxv^_/*0^|#h\-P/g6tVkŞ:'WIA]hQЊaId
wDk	q] 4W1.`B r&ܔ1U&^N
S2}~1
励(F<D	H`ȇ^GҾΨ@9EQ{kezwlt:n}2#<a;"$ȢÆ1;oaSxTͥOG6ycܯcV$)5X3W_!}A}C
wxPcf(=MmaP,B!~&`fZ9qPK  t  PK  C:U            ,   org/bouncycastle/asn1/cmc/BodyPartList.class_oPƟlRƘLѹ?9ڢVtb	sD	zu(
dBDq~(9cˤƛw>o{o  ,+&MtޔVCGiim[M?ԵM)ӖU$׆6޴-`a8qcj,4Z|W;0t`W';~qƬ1Bz9V2۬Ec6פc2-tcVCʱhhG@T@L( .@ PdsmK4Mde;<1i\MEVvOuU__#'rSI6sO
	wV܉Я3^*!WyHpy	I,H".ŐƲi*93XY6Y<(gv]Dš]nd6~emdg'v:[Ysqa,?jw{%]Wfc\(p!y#);j+Tg?9%\4!?9I`i6rwQiiSϿt*z PK]V]?    PK  C:U            ,   org/bouncycastle/asn1/cmc/BodyPartPath.class]oAڅe)R~Pk]ƄƤhZ"
R´	?b/QƙeKoyy|+U<$]g	vfͨ8G6i5,aƆSmimoW`l8E0QDl-Fm*ru2áͭggr#+Ǌ&Xz{M2G,جY!Ŝ֛Mږ KKP$$4կBn6*4ة`S9<-ZmT/BW5~cj4]30(Vˀjj,x
"+pY0 ycX1$c7d"BVe).cAS*Qb|K&SF|nKU0G=7;$O.=nt\<FRBS&B=!/`pC'.n/TJ0@g=p\HaΩtKV!N6+1WN0UTFoPKYH>    PK  C:U            1   org/bouncycastle/asn1/cmc/BodyPartReference.classmsW<\lml-yh,&b(&(m},+n\LAA>A͌o|Gr:ad;{?O8b#A2h-{ֲ-<C`%MX]5"Rpk9zꖓ];SIyfu%Kw\YT!f'ld-
TYcx(,bT-ˍD2Y[ULH;-0{e5\4]fkze3!v2/$:ȼm8EQ(5?=tb[;rU<!-6?7̖{CFHtj?q0~m76$V;o;?QS
HeG;`4(G?arsx}'8>v#(%!tHe8=hi
vG՜$NbJ[V۷ꮆctLܬUY_xR'gWȿT}o_{}d[oߐAV13*УbgU񩊨4}LG8BҝfVǗ*yi HIV1Lk@Ü4*Id$pYk
N),(T4WYAe9Hw0	5$0B lr"zrn;NDa#tHpvOI0
6}uH|}gC0d/_GxVNOvB7cq軁
Tnbb9?MhM|	4R7hM	:l+q--տ1ɡFdc\!y1z!wRD! 3}2bf[tz)z^H>Ut+PKƸ4  E  PK  C:U            +   org/bouncycastle/asn1/cmc/CMCFailInfo.classkSdJ[ڂmaYԵNG;t.nlEv%%`{_-U2M_l墔a_N? m-KuݒPʦ/k]P'PЭU~5$>f^B9)2SO~&[%4R4SSzvFBdTuד S0nTD^4ejK됛\OtYhDFtTrqlȴ6%L'{H4f&?KE
,fgؖQi=K۟ИVo9h
a&Қ;5$4D,g}K:)c^Ų}
o|bl1'4׺H\#ysDOf&cݵi&3!{n8U|Zڡ~z6/1f
*!xvuCǥ֌e/XmvPHaM(&o~`;XM5׫QNpS-©NpGNc2ZdqBIOxRS2gzddT(]Mc]#іGhR;b;i݃3io׽k/~5AwA/awm}>#hGFE'qME-KRϢ44b9rKK5*X*U4bHEUeuGpSE
FUŘ6V4nfye
7Yb6;,h,,Y
QpS
R2b)py[ac ,t~U}
cc\4uVArkV
mChB*=ӡ=ОX'EŇ*5E'(6>w)A9 P
C\'| _VPCTwo 96>lq|l=6Uڤ$|'/HI㤟7m"+f.Wܡ;Hnut_܇'"Ȃ -	`ň=+ۈ-GE#vQ$j.	"'z.}:H _Uv@PFXF)? ~YZFYr}% +ed) Ked= e
[" PKRh  	  PK  C:U            4   org/bouncycastle/asn1/cmc/CMCObjectIdentifiers.class{EߥeB Q셀H<@Bhaowr{!aW{G%X(;>A'gߝwf\O!k]+:AAbA
Z*FA$QPBrAIA)AiA+JjAktuEA
(ɢ
K,H6W5&WMH.@
X	5Z݋)KK+ 4АBC

)4`DѕFWt?h>KYMbS|OmhCwxn(fV7ڲVEuq!'RG9WvJX4Z.4Ձy[99y,#λ\_q	>/P59,)]
b6Eҵhq9ʡojM:pII7ۑҿ:26|7s>ϱ+u5Y4rW*_mp|}z;Ph+/6پy[u3|ы+WUY點_'<}큹3-~_+Co Ȑ>H٪]<k\)F{Ua9IAod],Y4ݤҺ#'sQNҠwآ!;QB#? XD>(ΰcG(v'Mʐ~/dhQ:̶̿G5ToӲ:}
mV;U:W8^L]Kf`p;lZ6`t Y`;:Nv=n`z
p	`PTKHMTw aN.n^pp?  0(8$4,<"2
*:4*[MbrB\xH&9;9;8{9p͹Sr9snppnrvsvr8mm.gVV6ν898pz&W#FWCDBz&F$>JǠ3zv~'ЩFN3=I#ЙFGӍ~	]drcvNQw12JA2tO~
bhϡi,Ag:O:C ZoC|B=K.4yVZi PK՜  	  PK  C:U            2   org/bouncycastle/asn1/cmc/CMCPublicationInfo.classU]WU7_X"6m5iCMKԏa2a?S}ŵtµIGWs>3w0
g\	DCQr#Fc<vq@w6lJe{Md(ΪT][l
yN&|ӵc3@;,[A9w* v{תzoWmb9ciTLl*lV2^yuv5^+0TBuյZfͯ؆YsGL4̅=GUO/,Y{KU
..W l*y8ZLd8Ɋ4{ˋ+K#WRs\w;#yS\t9Nzβ;Ol	ED[oK#8+qNDD?iF ,c	BW94_ݲ#{=YSǂ6F`*O382h gc1Gh>m6j
'>L F$ٓ
g%P7p0uVс1x_E7UvUblƫK*0B檊ӸL#,)6
W@CDl>Uc63l)H▂aU(vVW09VKC+͌r	;D0UHЪkxj̐![1xD1]Gj$<&#B쎎b&>?maca
HlKd1Ĉ{DB <B,ZGTo|7e9:0Xu|7TG9mK/iu:hQ|4N ~G{i!-a=
Dqp<3D$g($Lޠ_p1Iųz㍚#Ҳ,2UA%X%7>$nz<Q	hyKQZ~<L59PK*k2	  	  PK  C:U            )   org/bouncycastle/asn1/cmc/CMCStatus.classksV_8!
vL
.bꄋiEJdI))143N]Y4x<yZ9ҟ˰8-!/|-Xj]39q4kUBj[k|}FgM&;I]nҊ)Z-	V',U jN4_d
K/Ĥj.W^ϰ-	㠻+JQs
KJanYHYXvwۥLcVlRPE3hYD4s
:spTKJOʎp=CTnc;POR.uƣk=w5glҵgwZ|kòrvPMΰr];/L(0}-/999YFd8.c@Ơa'dj;EL)!QFFqCBmϹ!:vAD~?a5q9{x
R=SHjڇLWL|^{;Ac9\Q 㪂4)QwYRH$dqMIﳤ02 
z^|mȠ
M[,|rr,np?沸=YLfYҧe<Gb+GQ7P?+1
LCڡ^f{*CC;ڑfyVdy\!-CBV'ibFq<)x240F?P(o_c_Kl$@6\hb
uPچV6!omW%`*)cTF/*O{$| Y?
şx+)\Nfqi66֟ID1RFl!f"ֈY!b1&xOnҗ0!|Y
RYBiEE!
ĿPK*  v  PK  C:U            7   org/bouncycastle/asn1/cmc/CMCStatusInfo$OtherInfo.classU]WWC7CgiK12J[+Vh/!wĶ!ZO깙!A!4as9~Ϳ/0{|*!&7--Y7u333ՋE%Dvu]̂elu%宧sÔh%[R}?Ӷ ,dm,BP3a=Iir^keΛ%	1TH8enjgilc[SXg[3J)9Ykdg3r]9&37K~LREm}ņFڳ<;H2ȝy̩xQc
C/Q>~A!aF>Wڒg^BaDT+E z+.$[mCʠm6m>cbPGoqi?SF.g#֮iAS1R
P
FqN'HkF.|	R,|
_ 3÷2ࢌpI~qEU2b5zጓ˥d97Kj}Ux[]8Ki;mȨ?V77y}DP+dqs(a%
@J=F
7+h6kU9b[5Xժ^dURC/
B?gMuA3Pn?#T!v  ,DcTaMK=Œ6>h'
${'Xz
;sU0h b"_GUP	X4bѾ8?Ԟ!W	J"iT1mtPKZK^    PK  C:U            -   org/bouncycastle/asn1/cmc/CMCStatusInfo.classVYSf=&[ȡ,)MHRCCRI
@"dŘH"SOxt&^@g
Δ6<4M]'e{+o $vx"EG.qlmeDf9WT޲9D9[,M9;Si7^}-[Uͬk=Ag5Lʹul388Y;DS!)VI,ɖFATI=J
ZN)
M'SM;oK[*]RL㬲Zɹar認u+!s^vzjXǅv|Xvu&S
* |AdOE.ԶY1BѪf`$͚J`s8vzb4mgyˣ{<8}G'wiC.{k  FpռU{<1URгON⥡aІ땆eQC6z>ZR;|գAD<\/d5|C]u_*#74ba&4ԍ7H$wZTu5-L,_E.\
LEb8"m(c"zpE {Lg"ħz1# i&>Ї)q|,xĂ 	2+R@
Dƍ,Ņ	mO19^P,Kc_oHPO+mC%&):pZ2*Ml8 -w@|>/$cYǒt.|il(4CfZ"]X}5T8k|3d:%9i,rppA!*4^:pM%ad;BHDcm'	A*#)!=Hw=n1@LKyXH=D,,|t4WDvۮRF.Q9F;C"n{ZHTe[uwfQ_1ܤbҫUX&ω2RGwKȻh9q+'52ox[0rJfKqۈ+ǻ]?<kef|rÕc37PKCy    PK  C:U            4   org/bouncycastle/asn1/cmc/CMCStatusInfoBuilder.class}OPƟ
"N: D6HH%u]#mgMXHCےmm&s_ aˉ<CpbVmU:;8.XVBLܚ>վjjU3q	ZvY-Z5S?5ǭ)56g|n0,e޿ȹv,3Sg]t,-G2v~2VΪǜ]޵aSV7Yr$-[ӳ  
;׹TgP#\CܺV5+vt?L*iŪDϬ2lV6q8)'DG>1eݣ+LG:ڥsAY[acP1;xFǦ<}m3o{6N"/9	%a$ܖ\qye)Y,ss$D
"1'""X22VX4
;SǠc:ti	Q*>@dE># =?$ݢ#SSx$XW.0UXiYW{	Z>M
lԱ|os78pe.6b>syktxxE*RķPK~b  3  PK  C:U            /   org/bouncycastle/asn1/cmc/CMCStatusInfoV2.classVmSU~6/,YF-*hԖj4iHV6,
Y:?უδ?h3%%!@bhfrν<ܛϯьvh,y.rDlt[7t*%3ҋ6{ȡ%e	%,h=F˚&&0ҍ<c'sɥs"DZ@\V]bneFto)++S%QP|"Y(hy0fW5ÞFl48L+X2
uCUvAK(Ec016sp甥6OMCwm6
[Ĳ?̻tÊ51G-@jbRBߨ=˵s^ aNmXm"M[nO	flNNYyxtxExMoK#*%`_
`U';TeGO[\'00hC@fzCP8
ע(wn!iZ=UJ2e2Uuo@]&Kx:jUƊpn!5c
NZ5ւ3Dь-"AqCD7|"g$(5VC"D+{l>#7E.#"b!{|G$⾀>ЏO\ǌ<`dF@iFf iȘCLuC>a&5VlZRrꓴ6J+N. ",;ZEXN	ۄ)pxB~$~I*KI4t1`g:.
ghCo&߅yfT8%h<C]td9Rnr:9¨#GtU(09*a4xy<Ba=D6|%F#~ⶓ3U=q'n&"ajST9dS$!mж)vPKx]H(<a:%̡V9E=Gh\q'fAdTve*OxC^"]>⛔KķHJBaZ_g!
2|	_dV]<b|8K倆ƭ#76gb#߈;PKa    PK  C:U            6   org/bouncycastle/asn1/cmc/CMCStatusInfoV2Builder.classOa*'t)jW8´4MQ77rq\-dlG>
Γ<{}~	 M>)v_+{a0gfȕ<C@{ڪ]BgU)Ɖɝat̲ieuE**놦3Lwe޼]ڥqLi5%Haxo>bXn*A/5fSߋnga:Fޢr p!z3h4iak.`[]J&:,ubwC\143z
IǞY[]Pe)ĩ[7z-Kwm;PKvaƛnq(7й2cCMo_=h.nsPDE㦈LqK$\p>\K%DA!%Q,1A%~Sf^GB'O ŧ(ψVORJ
`Y:.W"+x"_`h$8?u)´Ouѣx,:0Wt۹nF+׏{vƎs*IzYbn?PKh    PK  C:U            /   org/bouncycastle/asn1/cmc/CMCUnsignedData.classTRP]!XA.

-
("
mZ-PEcHc
/xyRiSnֶk:k LY3<
XMsTI
3P,;د4lͰ<iɉ$RJ&J,V7bZqv~أiYf;Y=
n*J0`,J&dw4Nնm4FM+0wuOUvF*Yc2Z[pJh$nQܢ9=V&90ʓO89<;
rbd9iCK-)B8EmrC	Km}WpQ@t
-a(^,gƪ
?ykY~GG5zӥZ?Qx͜j.z/B,]	f/}l=)qla2,?_!5zfRЌA	p].%
$aDB|;aL	A7[mS=}0+*ypÂ̉bQ݈)nيfY~]RG
@:GZupÅH)
`*pMSGDGXG3{pIuQbMvdch8C,s~vKOͤs(?f|9<G%C<c%rbnz$+8
ӎQ}ɦ<<1#$ysfw4)rn\&.EIiPK-    PK  C:U            6   org/bouncycastle/asn1/cmc/CertificationRequest$1.classA
0_*=Ƃ7(.\
)Tj.<7Ǽ?
&EZ9͍:-(]j߳y#\ln=H[6͞şf;f*CP,0F<m
DPK[a      PK  C:U            M   org/bouncycastle/asn1/cmc/CertificationRequest$CertificationRequestInfo.classWkSg~,KU국5*hH*"Q@J,5fdv7Tޯ/L!L^>CQ9
60{rg9۟?`_w`wt`@7⬀`$Kn9mwCpq8F@f'ǱLl94lG1Tl],h*qh#Yk
S5^&yS@y+)cVl4jZmRQa[M+<Y>CvN9܅mu5|5FѬi$¡eY#OZNɏZbA3;7xشrY4Իb;y-`|4558NJ&O5m5KRMKAnpF?׫C	(?u;e+|D_&<>O-z0چA[?%>pNbR{
QYolsL.tG_-$bgD<+9E</ "8,[D#ibJnthb0vE&G*E%ag^$'$Ԧ5K6Mlߔqv7D^!G6fG2kw
<IH[}僝hf	GZZS]hxQ?k۹stSتAwvO'u/)K(џt:>ϙ*$>BjhxM+ߌEBS8+#dDPQ!s2v༌N\`s"Ødbx/oelK2W&^fJjF
,ë7$u	xM	qpS `Xp%!-poI8	UPYa!p 4,^IЬbAQۓu0 $U|JuW)h@d} v*G:]B	/X`wP\VwW`FI+xc,D_14ٷw<7d_`
V
p7_\)On?,4"tO8ceU^P/ZZIs`q/U4FufMUǽXv
=e$џK'bbKj@Ô>7+=7vP1{AwSYBJX߱}>}8]Rt?tϽ3uܟTq\qod|9:U7PKV  v  PK  C:U            4   org/bouncycastle/asn1/cmc/CertificationRequest.classW[WWAZ5%Q[nQK,50`23'b/K*k҇>gfb&k5ke|gI/=|CCcB#Ii9IǽNԤ IQUͶrg,wSd2:Tb*L7)ZAYҘ54Zf~diÖ,0c>S`-`Ifj793=ip2SzPX"rw85-]9Dо/tFvo,B\AsMkMkC7TӲhVH|l%3<)F6崬f2^f̂.rZLp\߈RT&#+ 'Re&M1MLjLz@켥u/{Q)F%&zލ1j^n?&p)=tvq0~4V[2Cz|W6+	^{Zy߾#a]"E+b"q@DHDXDDDT* =Ty"TUs(V'_iʶ`G(v%6g*wjh :ЪZoUPp;W$\JZ!d8tyZJt']1Jc9&cɜS<o%?˱)ן&8T0ZqAed5V0Տ:IWZKh}/_D-UpD~c~ZWJ3<-фebXF/FdP'#znc2:1.c+тS|I[p&dH8/OhƔ)^ࣔrEen9nЏP$psE Tn4	CxQ£p/p&/(%.QYnJ877&7׸aNf/淉ahhNm~	iN1EzVmMiN^W:-Uin]p'R_'5HG.G:b1x;:^jon
|nt7~5hnqoғxho.s-vԉHT^jq D~BK#?"-kH#f,˥`nyvP#l|
^]vFsh
6~b#Z\{nnd[[EA&W
nk.Sg軣D`ohKiˇ8%s|oiҍxi"e.zm5KGW5HJz1Zk,?Mx,x|赎Kӹ>PKҁ<  F  PK  C:U            1   org/bouncycastle/asn1/cmc/ControlsProcessed.classTOPM
8ApLk2EE&xX20cB|꺺Km!O<:eF;+L] Br99߹?~`w;!pKb>1gڦӒԊa[jS5]T4_6aFC_3p *ڞf=_iR|3_nlUTKkjѲfƚa/uc7Cb凹 DCaFǃ0J´D;::gT9$Zr577
xty8#F3 4,ilؒT̶`XT($D@ƚQԪy^純mNGeEv}fko8eGg^D΋ELDqf.a&#\B!@V9H(̨RU<ESkcv]0JjKê )&?Fkuy[{4%0
:/FHA
]W䏸:Wo&#KbIaXqLLb=_UV;ADa&	nH<)0N#,6RJj.qo~)5aY7Fz^nE	 MMPK
  4  PK  C:U            ,   org/bouncycastle/asn1/cmc/DecryptedPOP.classUmWW~n,PJ_EAMvC5%Jҷf׆]x9psQmg)ɇ;{yv{7 ҏ7teW<G}9I<9z%(nU*jٯl@sa|:r y.-vhıeV
pdKGcX_gkU&s=J;?n85^w"³OY՜UՍ5Ǔlg]'Y7<{ӶVݛ1Ň3D\5g@`<.pezU-Wl<_zL$5hXαuTZc:u|P]zw@tkf6Mq"YR<(;g<"}L!p\>uWpBIc
Rw&%GQ FIG+BoD.H+)#uH.U# O[Z灆^viietSq(Znz@lɝws=wj_WfkǀALi8SiG\HMRWF0Ae?`sU06ULஊIUÜfAdc@E
*ҸBC>Uq*.+Sk}oo+((kjyRI^ro-S4VtcX/FW/	erR51Q
ԍ7d$Zk/l#$b
F+>AHFIjn}͎13Cm	Gl/m#px{T,U"n;41YJ6`v%MJW6.
|R?PKUT    PK  C:U            ,   org/bouncycastle/asn1/cmc/EncryptedPOP.classVYWV@C6M!Mj,mB$%"$ScN}N>GjY<|wf\?;1c, OrI@8X`f/_`eͿG-`/r2l13
EBM.2Nìys[|N"{|c)M9?7Z;f=GN=|r󈶿tVzK_隭;y-mf^S^~`:-p8Ʈ}32OF8`l1[@یYNje]45pk vDu9(nfF.`0fZ&]ǧ1
Wpsܛ#5C׳B:Gxk2i$<OߥF=wץwyU|׍_[WD\>@5.#"h?f9$.{b$	@
R.gvI~qzl'8su\è&[Uqx<Vԍrͦh>={7<~lGJ>6ROhJfQOb9[9KkvwStʸ12˸Od1d0[Q]TFȐX,R,&YLX|"JcABs,%(	bE0/aK$aY	Q=,KWwWB׍"	0@	
GA/KV/w\tU5̈́t':%xI[J9uϸPA<+}lPsE
WmETmUE65E>l"C&Rs_Ш(\qw!>/}#Fn1jB }]O)BSFOZV9U'VjpI3CDШIxM«F]T(Zl n#YGrŤS$2gTs땺^5e-r+ΪeQPKO  
  PK  C:U            0   org/bouncycastle/asn1/cmc/ExtendedFailInfo.classSQǿRYZXIJ3h68˲\u1X?^i&r*}폪EP's~9sv)ěd]ehMz0ԸXisor*3֞3UHZU"ghry܃*G	`Td6m5bf60UX>[;߲0g#\kj2xD-XDr5mPbI=H"CuIpmlCgUM-߱irЫ[6$#UBv	n0,60(Cow^Mf6*@@Q4Xk
O'\!뀵YR$M\3i[׫~ь[2$ܖq6؅ː1$aѨ7QZCH݈Ћq0B?
sO.`E}aуI5ORK֊)
^!"PH	tcdiO|Rc%%@0KȇǬ#<NyY~*!> *2W0,`D5x5j]4+G(0=_A1wv_*t2J%kn O+i&8a[+hJCѓ+_0L9M'xV4HߝSm
6PKM    PK  C:U            ,   org/bouncycastle/asn1/cmc/ExtensionReq.class]OPƟ
sMƫmP4AJih^%[HFo+Cq[FL_9 cau>ЧӎjnC,csh=|ӵjqmöYkގk̜u3_1;p+
=[>gK3֦]zʃO|'K%
&G&Ͻ95vit|gQ/B BqaB5iEW˰<ʜkyZ&TUʹM=R*sOsxSUԪR˹^ Vazt3zP+ZaR+f&cϪtD2&}nB%\.?T^TɨA8uh.2Dp庌(
	ЄA.
Jh\nIh.tIxtIcoZ//W@ac5C3<"IDf@
Ӿ"}GU-#g4i*C" ZgyLpBBsQ;¨U!e|Aю-<&X-JDq6)$ڴIǔ&ޟ<(ь	ED
X"HR}(ZHѼʩ#-P8PKp0  p  PK  C:U            &   org/bouncycastle/asn1/cmc/GetCRL.classVWU6^X`b
4C[)MiM\64ljT'xg<GsԾu2s盹i{/+M:rEB0ĬiM:Us9	LK-]BIdFIaJzk-A&+Ud,$kΚV()"Tҿ)md `fCMϫOnO4m,	E#Qض5dZsۦeE-P-9u#OFZŶEҋj\!8x--FZ,|ҶnϧS]{rur2FOU{8ݼj)V(Ev8`Es˴:k^g8pa,30,!:}M	51?
g"޻3◣i=h2\Y@ʱp&"xkSwmwjyx< 7OtqMcZ[ƾfOµB2><bO6O&]节qE 
&)PЍ.!B#Ļ
dL+8¼ kFAnqS[B	qwX2FQe#!d###KP{B,ˈLaȈS"c>\9/j祐ç8+ 9:DInny_=dVh"#EC
>S`$;(ٟ<ֵ|CI7)FctL	 
A7þ<X6!^D9<e|/!!t0pFFKLKa^ib&_`wZ  }}/)"C7kNhZHpgnpV}m^i'=FH/V0ee|*MIh\U\u2+fce4etDaPKT  
  PK  C:U            '   org/bouncycastle/asn1/cmc/GetCert.classT]SP=-|#EHS hQ)Z-Z>pӔAOQ?^|GmA	˹ٻgݽ?}`JiD$/mhؐДn.m
	l
E,9Qo
Ӎdcbn]8hgafq_[(ūƶv&fEƝL1'lwq[%N&/(Y5
x4Z_,zVQ<0Mخpޜ.oJv\c#.
ٙM$[8J±v

ykձrkmde\"U%eIhOVڝ3ܗy+SkHL<[	DmӒgr"uja/.dit
=/Uq"Z3a*[c)ăW4uO?{9}t4՛;X'4ss/[O*1WUtNE >?5M*1lj
7F8Ä.RЍ);
z00pWA/&\M!P쬂~ܧr!/g5WKh F/=uh髕맵$HX!+^h.+*0Ud˟#=,~Jdd*%!y8aZ4S25$$ZC
]e>+f(3)
#⻕c܁{i
ѝDIsP	,/)!YPKwڋ    PK  C:U            /   org/bouncycastle/asn1/cmc/IdentityProofV2.classT[WWN2aDB/"d& b[jSؔ^0NV'}_kIjjQڽ3d}vηoo~IaH -\HlnMߓW\ߕbŭrH#~MZ-;UȻԱeN
gKGcf
?rr )l<[uHy$ѧs,b=ϩX^.V_ν@s9X5۪I1?ew荲9N
tF5B2t
ٙWl$pro܃NtHu(ӮfLqZً{s_dRׂЕOQcס `UCkc"ӠօЭ}N(EUpHG+D
>Sc
,^VHQײiZj?ԏ"GQjeݢ,3Ҝ٥O}6:-][H{Wz{,)ХNwM
'Я0h8%bRkDBAAY
1A$ô
3.C%Yb7TUpqa!b9i|Ru*|"
:P뼵ט*IckֲT%YEC	F3(g7	qieq@?0hiH4p#M,R&u.ֹXǃi	!(b
t*{3 {xw׍1؄^26b}[,A#AAgz j۞ׅkyp:Ew(-ڌ&٩&J2Rll/uxDnR#)PKJzk    PK  C:U            -   org/bouncycastle/asn1/cmc/LraPopWitness.classTMSP=-Bjg(*R@R;ScUH3@I0
Obudڸw+Q|es=3<C%q!Mv0
gayʲs%k65Z0ڪiv	WYa%1;JfQMMwK˺L9WYQ9 ,&@wASUwxEϫf.s뫺̽5ǰLɒ28."lXW"xzN=9Uc%y^մpL@׎pM
9U16t		h$ ,ༀCMlPƱ
3)JVЪu*傁i*Jpd5θU<N,:v=ڭJkRcgrl39		uЌ	P?z%4}<À2`Vц<юa":qKDTqҌ82=G	=~>(z
sւQ{}	5$pWV1(N&8*;W.Zì/r%P~`{i3ZoA]De*aȊd!!14jHySTcR/BR~pȼ{?|p"Ǐ~y3wm5%L.a>EWPK0R     PK  C:U            /   org/bouncycastle/asn1/cmc/ModCertTemplate.classV[sTQ*8IJ-I%@'-NklpUdŨ +?Gxix!iveiS+ov=_L>a㪀x:Ǜ˶kZMa^\7]6̖ e=SHQirvӉZmޜ'$
wEӻAlq]⌷̯7Y9޲VѤeoXfF'[IzL0zcέo6M[07<˱L8n=l=Coy
3\Լ4L8J8g2k
B9pnL+R
kqxIM#3t[-/{_Ved'Cns=$sx㩖6Z;Lz_@g5EqJĘgE3"Ίx^hgQ|*aEw,?fҫaa*΋hHD>r$jg\}QYtec1{'9Nѣ+њsõu_лǉҿ^jӕe&.ɐ'1*pY 22L5i6\exm,	(ü	+cXp7ޗ%M	)| a$Q(J^p`Ӎ;F+P NSU}I
%9 	5Bv)!AƧzi%66V?}\t=blvxc,cpQoXZ_x	UK>Ӵ~[3)5]!`p>Ha*u3AzӔ@0eK=(Uu_al	[pqj}ID!#a.G(ρYƕ}q+bUlc5q;e$C-BrƗQ&Ҙ?PK#{  	  PK  C:U            (   org/bouncycastle/asn1/cmc/OtherMsg.classTRP]!XE^Z("ZoE h4`I0
'>8#//>Qm؇9{u4?}`%HqV MqhnٖwVlV@s+Ӛ	twbI4[7JyC<ϼW;7gV)beV-!ץ-f pzGymY4یr9rc`^n,zc8sl}E^Έky{(>~<$63fIqµ%(,oMND%圪xekǴrSg[ǻz9Zg-HI+an	%#pz'vgjзLĞw\6HFtW0!"!j깨Ңn]]YX~fEњ%{&+mRb˪Tf445afW3*١\V^!+8
$Rpha2V 㬂6Dy:0.v #Wd"!n82ᶌe0pG	ܔ]bd^ד;TtousHQl ÄhF A5W0[C#|vtG[dtm7-
xUL,XOZƾ,a7HHT#G%a:FP<~G=o?D$n`X݄
|F;Ծ
Lo`fX|ʈ_L[	7q"+IY|}h+,;VI
TI'KiPK)`>k3    PK  C:U            /   org/bouncycastle/asn1/cmc/OtherStatusInfo.class[WFkH"P M$2TM n^0[r$@IysNi9'	/}`33̮_ ~	;^%$2\3-ӻX$Mf
+jl{41t3lѴyͱ3;18=J^,.Cqt+a0HHÇV771TjVfӝ禕
}KL[Mm'gCKɚ֭VNbFJOO8\ưcnωZŴ9dL'
!l;)mYziC]k@XۦswmdJI}5MTgm*nyF5T}On5SīټcfLܢ̺jSƣQj썳D&fbOp=ԆuYt/l,+duǥ
Ǳ0lgyгvS{r֦e?va
;Jd$q*Ǜ8xw9x:wrt1Nn}uӕ#+S'~	|U#5;q)DR<*=ey򼬪"[\UI[㨘?BU˃=s֦8&w/Եp=9obMфOe1"2.AFc2+Bh]70.CM
sS2d!".~Մ!|-Ĵ3"	Q,HÜ~
%c<Op_e	6~(wB|/Ē?
a4ghIz5S3zvQCt; р6Q	9&P(46턨F#4EP}<͵]\CEx'."їl( }*@'_?.?Tvqb*>K_*"
0$h(`2 <th X\'3ߎ~j"rU$bq*DFAEl=}{XU4"§{hd46aOƧhl=)-3=VxP+{
PW
U/ڴ\PK`n7@  
  PK  C:U            '   org/bouncycastle/asn1/cmc/PKIData.classV]Se~P*(lRRm--5Z$
,d&KGOx7x302zs]&$e~y9r `V4CB\r+e	-iف3iF٬YڵLE
,ZҎ;eT97i3nlpuouC-Gzv.g?)moOhZ5h<
5[Wi,S@W	zF5֖mkjNQ5gFc3fiRTG3CJYygn2ZħU[YT
C_v6eӡᓰ\323n[OB/mrJutslϦ2);T%ⴈngD&GYDqA̞ԸH-#>r2"(';-A:4*2H`+,;z8#k ru:?Ryk*ݏC)_|t[q
p-?mjzĵ٪ [
f|}sAzԼQ|{*a	3nۯd_HE7 PiWn̠:}IPd",CDDE\ы&~8@g8)eȸ]mɳ[<ͳ	M=0)f8| 2Џ$Cs+
H=9,pX$aH"!!OnZjEFȁn$ͺ[eާVf%%Ŋ\c}IEcm?آ0@s?gx(~}\Nvy<5{/^``Ng1L&zq{7K=<J|~xW_I	Q*EʊCYq).CIKi튔eRV
_^@^,DTJ߸z2tKo(sCIe_;gM;i~	<q%)>G_325;ªY%g+)ު(z۔Ԝ߁Rh<>΅}_`E\Nj-5J(żBjR&ԂjVR6xL
PK4
e  
  PK  C:U            +   org/bouncycastle/asn1/cmc/PKIResponse.classTmSQ~VC1C,3H4q˺lkkS>lĉ^U8Dӗ{s]~uWd:]HgI5{JN`e.+ۦ\P{4%@gY0[Tm)9~Zt0M	[aް؞t(JN}[3tӆv]~-KWbƒ')&v7LƤV3ј#bxqW
jij~<zxxa|~,3j@&
&TgZV~rT ɦS7jƣӳ<DM65ٖTU9O[TL3OUo> Hp	m>E&a<$"xH%* FpC f,-yø)9X1rؒb]ߦQdu.([u9ˑGl1XLE,Gq]%g\/bu{'H~ĂuWq1^]/g2ECgKv:ͱN#7ޢCБBYIzl´dNɫW:L>\q(u"֢,ŸY,a8-b!`aSe5mW]
Ӌ4~PKΪ    PK  C:U            (   org/bouncycastle/asn1/cmc/PendInfo.classT[SPN/ wE-&jE[U,юO!hH0
O|/Pxy {wvO~
	t	DTfbj(Gq(6vv@Q,t<S[G,3_f,8k/Nوז+pvM)-Y,Yĕ,	X6Ҏ9ǱJKKL5(=L8V(lyǚ#ro\7:723.RL+Hθ|X'pۤ<sLܗ@6R`;eF7w3^{ْ-aJ8$ᰄ#J8&Ḁ>T7;_TiD5ڝa讀zaWΫͪ."=G4=&qlgZiaRŷu3
N]A4'Q@T^xgӦ`$^
:pN^`sIlCU6d$1"7dea\iܐя	gp6we-`LF
WyEzP0_?0gy؈Q%. nV@nA
6q3HUcnڹUL}j!2B~fQE-*}<z3	<'	J$T+CtິP? }DgjA[Ǔ
YzB8aȧ-+7Wq}d5i9E^JM>JS E$8l :]!"\PK ]g  "  PK  C:U            0   org/bouncycastle/asn1/cmc/PopLinkWitnessV2.classU[wUL'bmԚ&a6T[6bb04LNj?ɿ2%ki?JMUx|ۗsw &@4۸*KkwIagʛVB$|GDՑy.-&/E޲}s^5]]M IE>A֟8IQlȺJǮ:9oaHC)&g2=˯ys[5ǗKlgSOy7[V;VUs=m۪K1?gJ(sZUN.p{%~+uЛC)7ǮJYpWfz]f._Iߺ
뙹0cKʀ[	ݚ+ݧI5g+x]
T𖂳
VpN`0\EYL*:Mﻏڱ;2:R;jLUq0,3/9WsGyAyy}uzn뙒Fpߘa[<F5%
ADCQ
"$C#q
'겆$f40ٝeנa
qCIU1K*.wqa!b9i|R-{*|";T:VQ6;NtRHqCJqOmK]U ҫ_7bdǍ&>52(vQ4.],Dn:IG8 kaMDlkFf.5PZk$?8]Aejxo	Bx}&;b1;*$
#Ư(xqq{|{e|1.$;T9ăB35¶ȶ@䶐.g#PKj08?q    PK  C:U            3   org/bouncycastle/asn1/cmc/PublishTrustAnchors.classU[WU& --PZҖ6(m2dIW/>W\KH,Q_|o/\Kq$$^>ogo3??6DS5;/ .cx5Ygb{cyxaʊ YwB}f"
:<sVx%
Egh)=0GU𒞀vQL㌹1S)LW@MuB1-(.q͍I}eB^Y՟隭;y-ef^nR4oa{V]u[y>0ZrZTq^lSΈ̌Ly+z6accªd<rTVs\!ǃ&j:bcVrU.̹rԺo
i}KPkO@ųl-k/܃@^˝uYL3".DE\qIe}"E\1 ` J~-Po!pXb)'>>$]DE
az-rݿ	ȬC'@-zUJ0$2g)gyoR;P9qC2%8EhWG,`i_];-Nd\-n˸ve BlDoGwd`Gwet!!C=gsHg3fq|!(f%f3'a<a>04/$hMMV0f$3%Cчg?k,FY?JҨy*#%} B+U(;̪U䶰naij6[w`O0
`5*V2(|'d{Uma"N6!""Bp>V"#dmCбhK_տkkcȱt_Xک7nI .)!ڔ_T~GY7} "D7䙡M8@	foOFۋTϸ$E5̋ZUOaЙ>X=Iot(}<hP6tT!j_Zg~e5|PK/aA  	  PK  C:U            -   org/bouncycastle/asn1/cmc/RevokeRequest.classVSW-,,HZ
FX(DKKHԾy`v"]>vNLy̴+͆$$sw7@˱K@o1.R7~KݖcyP䤀P$x4LRX3{RBuZ0z]@%mSȪ֒fԈ>ɞhoPjI+Z"W,L4TzH5	-3vXSxL@
GFZ"1z,,cjdvP<pvmZ
iM96]Qg@DV#]4zH2uYOXh6fDF552G'Չ|(x{Vi	J69s1Ss=cp=I)?nĮA<$)_yRNS\dzjɍ
ECam&~UfcG.IfDgx 5y
[`Ӧ	t%,
41m$Y*_Ss2Gߕ3JQg4Oh"hWD}"8 YD @3AUs@SFT+favX
8۽[wVܕGUr[O{-M^!S[[`3dUqr	e-7mꮰ|z}fi9լ	ydehOgNg(ǋ"-Hf
8YiVEo Eonl1oi?2;J+,bST`dԣKAtP#CB'Ï32DRpLF2v,؉~r{2ZeT"q&0U&3yAL&L2ј%(0pgc2-8.KhdF	ę-$"LK5	*C)J8J<zz.jS:}zwWj9uj/|%w5Kgq*ũ=&I:J"fe(eR.rhz2e+e,,OTOoXc{
>v6=TGX;*|9e@2k
sٰ
Q
wKxRkφ}D9۰=Q5|nHDw?lGH=Cchƪ}6:@|E+\Rfqe
%aiçf]1C-qP[KV9鵁~[]gI}sux9)u5Pϥԇ1h=Լn}[0O0|>e^>>~~F\LԮs|/*GHc#9ZHuZH'>ۼV%I[:ƷW;d,~8*YK8l}gU|-1ZEUWPK%O    PK  C:U            /   org/bouncycastle/asn1/cmc/TaggedAttribute.classU]Sa~^@W4?RY5E%TT*ʯ	necp1Xt_'.QyDS@99<<]~
$֜ha{}n24n28lh"w7TNRO'֕YbhNjfk)EP/AGV[J5]3<YmN#''\RDR)-Bdn[3;U10$tPT%k5xJ<ET$EH:u-CUGK"zjT9~q1XnUm(ɤ෣s&Q:ui>zFM}WpE[U\.C@'d'_;'AD \ވFRHN;ZAp͂v-dͭoBY\*
O(!Xʩ:)r&.:'x31Lzxfߦ
w.t6ss7̍B3F&͝&Hf{"1%&=CnŬ>L`N
XL'=j*egOF^:i\:4`X_OH@˿><aaJFgP.`ǍrX+`!cA;,?y`}>`	 I g:y@;$9g-QpNA|)턷Bz8t8}Rzb_q#fm1ƬhϊPK09    PK  C:U            :   org/bouncycastle/asn1/cmc/TaggedCertificationRequest.classU]Sa=+F_i).ZT&jPQ8ݲl.NO/L
3}tяHX˞< BXB76sQ5s31nȆ2)aj5E6W&COV5zuE;bFޠ+yàDߑ`Nֳx.f\諸{{<t}]9T䂙SrAFOb$9uך[ˇbZSSDcW4,`M[mʐÖͪnZK]fahzp^n&fmBlMg||`j3̩-j%jmGSfY.̙Mv9ڲE9qfXo6HyGt؁UUlW7q)Z?8G':х+N	lNsx5'1a47<! b 7DbCHfE\BMw8̋-#+2D́*3MbM	}!:yӕNF?	Fa#JH#,J3GXzT:qhd?Ɗ-z+HY	˟$e<
~{Q]!#j;x*	jE]=D7>SU'%-!^d1;
UU+Sv<niX5:%P/a{	Ǹ
S|PK1  f  PK  C:U            1   org/bouncycastle/asn1/cmc/TaggedContentInfo.classURP]
Zܬ)QTZ-PaķN$F:##3^^|} N_Y{eO~0M1ԇ#0x	'tC'鮒N3kfz'XvbE5
[3de4{bg*	-t#alPjqm]SpU7TӲhi4r+ۊUf[
R{jnk斡Jj3F	Br3)K;Is/8}gs
UlUԝd2ZX9Sn6o趾	 /ࢀV\0naЕx1ɣ-ٖndbXtZSk"rᚨPJWsq2^r5郁;ic
d'*;Y>j=1,V^>`aTs&zH&;cJ;ц#+^yф/΋sp^4/9zCf1ᶈvсDtbTDp!aBD7"sq2c[_-(upt)
`d"QO/0'Ew1%
"(%S1E:2'F|h_
K=<)9WzJ
?/o@y?QRgO?I`^>ROHYPC6r5K]E$ϗJ?ʰSB>:V
IF/,q^ a'"73ED؎PKS    PK  C:U            -   org/bouncycastle/asn1/cmc/TaggedRequest.classUmWU~.!lX)XkjK#Z%)(/5 
lt!٥
-+ϱ	<"x$@sޙyfܹs?\	j P8@ˤimcYyc	(q-J
;v&SRKk٬@MV,H2FtIKH{vC"O?ҍ-״-O֬THOrRangHk
?R-i934"kvwt-릍#Ssñ_Ot;Y4t13knSA
z>25&ޙNTFk)c릮qHvȬd#ٔ-vGk+L'З6-4 H4`Eǅ	xPRC$A}te $I8+ᜄn	J8/9	$</ᢄ	.IxABPBm~=4A 9=W-րݡZ=I~m.5?Wm)l8=-w ԀX71N<T
=hpbQU7+0YAɷk"O)5/R<X)G@A
:Ѭ~3E@<*vaq
LySAo100ۊq1x	2"xWH;K-&ݫXq=e{2nB02|ɘZF@sNMm_p5}sVZ;>r+dh)f,U*ɭ t4(jACE4ءV}OOMx&%IW[%h`|g奔Gv#y;<`W^ĊC0`|yз w,<, w(XdI,`x]<69lyD_E-|~c{o}+[#AR G{%he֍V/IS.Jd6.FA_ץwa9W2Ss̽l<e`^TPK֑1^%  6
  PK  C:U            %   org/bouncycastle/asn1/cmc/Utils.classRAOA۲,J"v{XHU6)Ht:iYU/HLLTftMN2ͼ{7_~p~f_<E(lݎ׊KMd=52qNiWOcۥ)Rb	;\"Tik3ِ;
"*:P&,zgK<`>\QKtpwq HXP-/}CWohb̄eb܄mb9mԅli+⪋<ۗ? k %:צ'm:ΐAyZ|38Al(Ō01k-\MS͂i,*{"ڤ{ϴRXuEJf*+O/pc$P~=L7|Zŭ1V׷$*kC2E8JpNPyݞs]FzPK5C    PK
    "D:U               org/bouncycastle/asn1/cmp/PK  C:U            2   org/bouncycastle/asn1/cmp/CAKeyUpdAnnContent.classT]SP=@(V*HBi!"3׈1%rџῨ3JqnVp<=wg{I<JEY˶K%	[XnV,Z٫ۦ![O7OqNRNeKtmD=;WͲYNEPsׇuݾn,Lz/'1vvByrcӦ嵂Yk)GUKXdDe\+#&A]:^jY6K=عѸ	#V]4cfb\LSI$]+]\$_ 5EEf	`ft	AbA'nDMvoA;lt!{lQЇ~$\fL 2
QF\FQ)[.to+wA⢌6 rMq))5:1Y5^_/1Da>Os34`wF}$υpPGt?=A|C=U[cluz	Y]ߎz
?}5<XJs#L2f}'<FO PKs  *  PK  C:U            .   org/bouncycastle/asn1/cmp/CMPCertificate.classV[WW&D&L;-A4mV@ڦ\TI8LL"VO}\VY=$BVsw̙CPBA"}	=\P?lX{GD	Ʋ&lXiͰ1Ɗ]!ed'{KX%%=ֲΌbq5	pL=nʹ"%Fzz
ԻIP>*|8w3mS,ԝNΰ|&)	dztPa`u4<ĮUڟ=fرՔȺ$IԭtAwɒ0M'-sk)vY2ͺv4opmkZawڠ*%;i?TvұRk)="kkcmYEOuʌcd(Pwu֬x^.V'QqbyoޣT"GRlM]ƸF2
*zt>E9yp\-)45˵$0ڻEӼZvd2ޕ%㜌d/Cq^Fdʸ(㒌a*U!Q#}4Y;*qt䰕hd1Q#q9)<>.FjI4ֻTSo$Y=.wjE^kfH\rcWUC&!;,WYcHw/Hw*IuUDѠwT|OT)0PwUbDFUS&T4bRE34 /0*G
`_)gX`GNQpK
~=CR0R
n!÷	t5)DA~SϺz锞'&$@g,x-%0͇4j
o"
C2Hu6G7aE^CD/ʫ}OcbE66a+'/$ #.+(LRR;8۵pg[oxrA64xSolWo_G(
I
b݂=My6:ΐ$igY=yl&POxL"L֣x:э^\c
>qUi"Y~m^8/|V{l~y;MlQQR<,#^w*l7<@tlBx	g+bT:Hg PKd&  
  PK  C:U            4   org/bouncycastle/asn1/cmp/CMPObjectIdentifiers.classwF.44!ER9^I(ں8$"m%Hr {+B-݋@9k+t:{ɑ$`0R0D113H0H2H1hg22X`dp9Uff`
+\*W3X ˠ'S-1-#y1-u&DH%Zޮ'8hO$i1Mhq1꬘ %~:&6U2*2*S]UvNULiUoWe\y{BUTt)E׮[7g
qePIeRʶC1[Z°LVF`ڊ	tۨ1|l*(VV>/Ffł=ͽs(9%;<~=?Ѓ5@_op8AQ-Ĵ6EA#x<+At)F`QYno%GlFzaLx`mdzf㢈y}p
s\)4 e9ӫ}U#Arnm^ᅮK\<?V=>}߭x,N	ۚfur5;x7ӍdHգ(;8
Ktj1f~`۱hWXxI(,܋بtO]1]Wu'harOͭG<uDXE7rD'MgTQc.8\6h8LwVp)ZWwq[5=5ùPSJ6 b.N~3rJa=\}~D1؄،؂؊؆؎؁( v"t @QBB#,Ax jQ.no07!nF܂qv;w!F܃q~!F<xq'O!F<xy/!^Fx#"5Њ"?NC2
2-%\)(SY9,_fdnQ-2!sLOfMf ӗ9*sD2&s;E"`
`!سem|K>-igE> |/O#OJ)o?'g䟑O'|!S?!o$?L>kS&o"]gC>=N>N~^?&?gȿ'?'s$?<\ȏO俒/$d7xKd?D8п PK#  ^  PK  C:U            -   org/bouncycastle/asn1/cmp/CRLAnnContent.class[oQKlZKZhFMCclW.N/ᓏb&~/sl/3朝E\eg1t\b\+FZ/,a6܌
#o׹ıLn2HVbs`hmpӵ~yöx2fWʕelod?۶=dwX[F~s{hߟ!p^zDKΦÝ[B@BH,aL"!0a߅TU>krR }
MCM9,F/q]-n;Q5݊l{ȥ!Rʿ=D~1?|
F1)V9@0CcFF2N!)a.ɈaNӋ2Ƒii%nZO[E(Ԍr"Y|ex?f
z>bkzhOk_Q3M+"i{&kz2dIXz:
+OkB).=W>wHL'N8Cghh+(^PK$9    PK  C:U            )   org/bouncycastle/asn1/cmp/CRLSource.classU]O[]R*~Sx("\n1Di{23MgޟpoKMIx%=l4鞽Y{5k>w FA$x"cŢtr]}Yҩݒn{^B=ӄ%$xd@W\ Bi-kGf*o:V*KOrA:쓬,KXWv>Jeܲ/kz~^LNM--OwmVr3@fIk&t}l5Kl>Ԍљflk;Y&#sґ%3@OwYb.ؾf#កVv:cGMKWWEN]*b*د[_yI lhL'w^^jwz,_ḧI7؜ݘuneo$tsD7nhCަ%mAMߊ۳m9ݵ{w~˸?Ŀ{h5}}qJ(4gg48A
Q0a
:q.Dqq(s9\.FiR$(n^K}x,.B:
b,5b#Q@PQ\r@_h#%4̿Ƥ!^c9F8to5YYѕ*cUÌ]LW߿nbuRRAo`&F@gs(y`V#"HZ*yI1'iiK/$6ڶ)iSD+'tA_1 ]|߆:(oCEGfh1^aG<|n,_ x?k
'V0U\\}AoPKPBg    PK  C:U            )   org/bouncycastle/asn1/cmp/CRLStatus.classUKsGƖXyFA1`@ZN0elG,DIU ]EQ#ܸ*(TǅJ-ɏ6tOw7Շ,~
!$vQ Ks\uv.G],JJQ:J̲"=Ge4{ӣfW@o^WV6Aѭ9z(Whp-)lEƱL#;Y|2U(ȼ].+Ss+,*n2z%_'<v*Ȥ]Ɠәs쥂\$B>a&kbi)!04;78|zMPVSɦrk6iV>]r]>LHM5}"Яaһ8Ώ0xzRz,zTZwNm1.]yӱ]Ap"u
p0sюl6Ҟیo*;:yhzuPgn&RKnIEpa7p]f0p'x3!n@e`e3ƅq=8D-s:pQ γCbsEQdsͬaLNSWbaVKҡo}HF
ڢ4BDF9)z ]ۉ*~<G/Y*\k"V"_"nc [`#"]5xE;`7->GM705J; ='% ?d3?]#\G4kEU1Ӻք}yBzk
jSVrWr
'[3f$c(f:Uqޓ)c8aao#LPKxss    PK  C:U            .   org/bouncycastle/asn1/cmp/CertAnnContent.classT]WE~6P6,KVdTlAjƆP5L׭ݸ $9/y|g7gz|<335g? ̀Eb0w )O7
m
Ew9v-]ӫٮD"
b$nBA$Pawk
^=-xٶEaͦRoE)kpk7̢JeV VGPY˞ѧlem/[\Y2yC؞`$:̵]CKqŜoȑcCҁCSYT|vjWplkɚYtomaoRެ2Ń'{(MIM4laiU6~bLSO4Sw4/f%ꭦHTyo5۴e;F₊*T1⒊*R1⊊UC-KK'3GǬ/N[卝LK+ ^'WJ6ʝI E	
H`2/=v}O2T~_X	#ӗ䵝{ZةEtǀa:ސ"+aJG:tܒ$m9Pf%ѐĂr>>09	HLuא]	
%%,JTCF.3ᬨ@!|y2x3Zbl&n@~A"h1B】g %kPFG_@5otճ	3]1pr+_<!=|k+HyD! GR$%3m<HD?A=%H>2`CJwpKNZu8w#m|INW(ѬRb';<is!:PErBǁ PKF=  W  PK  C:U            2   org/bouncycastle/asn1/cmp/CertConfirmContent.classSn@=u:IR/J] 
HiP@+5K2.RYX

6,;N]Q{g9 `!e$>b@f(=Qixn,Z|[NŏD]2^ȅxU{~o=Qٓ=鐺'K]UB4ڕ?9C:^yNRAlS%/#\9ic*2*4$qEMdUs 
ђВ1]F\64̡;zݨmۮryuguc\'HnI߼աHAѡMŴ2(a3,4Z0yzpڟ%Z=wl
1A
L:4JCThvf
eâe[/C33^aBG[(nbB.RMvq&k[E5,wqmf:t(?Uc1M,Y)K[#r7qPK  %  PK  C:U            -   org/bouncycastle/asn1/cmp/CertOrEncCert.classU[SF60"nȥ%` B\ڴJC@i7!+r>-tz&i_ڙgر|;gϮ+NFBFK#9|m辙:箟1389~7+Eut)nIѫUWZ۸N[_l!r;f\% @?Y;OL"2[2L<џGV8;KU5aV}߁6}֝TL!zVaǭqc|,{|6_޵Ef?Sj2+M`;vgVՍz@	T3
>.0}Ԩ}nx#)ӱS3n]HHIHK@Y	I8/ႄ>dVc: yD-u+CiQ\Lj}1hԈ6 ^w&fȻ}>|g";|x		-C;ɸnv)HBU0igpJI4cFh
0'WD3W5!'1$pS[B|!$ƅo7XJb$Ib
E!dH݊otUnNYz=4DߴʤQg&$ִ:X)֍%p&~9~_`rc:J*PX9ă:J%FoIIJ_5ă`PTCˁFw1Fh*آ#r!ۧ=5"G?BH@4q/dCDj [&{vpGPҤ+8$I*HpO tt	o?\ <)Fr".:>Q0?PKR5~    PK  C:U            .   org/bouncycastle/asn1/cmp/CertRepMessage.class]oT'qs.ı.YtryN	Kp
EbD77+m9[e9z;O`B07L^35tۮђ*CPId: (]l]fnekJTkwU3;|ة'ӹ|lWf!1Л\7 7t%abi>Fvv\6Lo^m뭞QɪnWjլՕFc귆YwMQJmzjn`b3of'XMR1hSG;^Y89Rm`N9qJTo)C5^37˵"D!E.b\	'EqZo0L
 R/
ˮ*4ݖP*ۙJP1x J[yQ|uK_˽55(&JwSC_!#seDVf:"ܡؒ!Aq˛eKBF1h|9"9.Ȑ..q`1|#	XpK\>Ţ)|eg.S.i	X0Hsken|fЇ1z(y
EZS[\.Ӫ6C! {ظmnگ6q}:,("&buGq٧oBГ>6&㬅kjQ۸PZ(p<g;v6rx?aI/~DH}خJ6bEm.0n1^RCF.7`&\3
Uv@
#8223K>O`Cy/_<Ao!C.Rm+tQ/Ӽcs~7!ǘiPKW  	  PK  C:U            6   org/bouncycastle/asn1/cmp/CertReqTemplateContent.classT]OA=C[,*RqAe"jJ(!qM-B/&b"H&iK@ܻw=g?_ŌnG``YfڞQ=dPy6mΠ7lT|cWw\VհjO3id,:d^)O]Y1wMCLf33|j3M{z9;m+
Xc;Czb7iӰJ/Qk+Okc^lb	fbͅ1|؛eڴ;%j謙N7l[B|>M-.EGu	nH7MEsm̝SΧTT\ ݟKت'кP])E*/Er*Nki'˷0ZZԫ}
jj_e6qF*n*hC"8EP(QЈ^Q_&0(et"$6D᱌.~$ˊ[IzY-	[7_EqCNe6+DїW(HcD)x1<sm"vre/+w-8/c tƞ#nQD)$$ҍ^'M0P"VeՂV%ܭ=oO;e؋xN2CMW:R\gLGo24peWѹsq?B(#Tk9XDD7TN PKڀH    PK  C:U            ,   org/bouncycastle/asn1/cmp/CertResponse.classV]Se~6$yeH5Bݴmڂ@5	X4Y:eԛQ{SgIc=gd
9=9~CX٤aV~Lm;nbLdݍ?#mtΓ©e[Mz
u%bZ´p^*N QP;=ԃm5oni.'/u'@ϖt͕JfQ/WN}merl	N]u6l㡡Wݒիpv<gx6ZC-ڻ]h&S"a0 b̲bEb7oސ49pj1JeǮP
]V9x~:W[U^s$J\U:'Z:Lgb[8--pFz^8+p:[PLLd#O&lOj򛓢({7Ж\rK]SA]e nw2 X~Al0w-0|i	3^'ޟs)}?8>'r=%?O27^V CS22
qIy\V
"
b,
8}ś
:q[,f1Goőqﰘ2qEN fd\ĔA$Xܑ2M@Fs2Twx)wc|5ӀHfVdu3!i"J:Fyߢ~>Vm|-,Zس-,i$=n{;i
fb:.n!lna1ΩZԳΒ`E9&& @z)MD⪖rˇбJ7aԽ{ƴ2G]ӇsZg@@HZ
:hBIϫOz+R3t!|)m
#t
i\!M)\k^;pAx~ڪR{!c{_;pFc%Ҝ.ܼCrE#PK  
  PK  C:U            *   org/bouncycastle/asn1/cmp/CertStatus.classVwemvRX)J
iJ@{S"`[)޶ɲ6
Ɇwۃ@|xTsKpę\zlHe.fvķ%:'2x2s0
<YDT5LZƾf8]rcUlIedڪ%-n6cv.5Y鳪>EX
лPIԃdRHFϥ4ӞҶalfa9#2X=`ZP͚Th[	u!Iy@QEqFM[yngL|}u qu-JHq
uFhsZǜAv]KTs;Z8>1#5NlkO2	ЖT:ȣUΰ+ۇi6VxLb*92|fqۂ#njr\6f"!bgENϋ8(K!E ="z`'8H*ja|7t:u\:Go->J/Y*:+n)^z`v=Hoˁ6䨊w>0x筗avw]Ėu՛ZpD@y3(ˏEfFv鹳wGûp]:?z(㎗ <	W;2IvSߜ	eю}hqxdYhy^ц"FYc2.tqe<I&L1da2y7%x晼=&?2Yp3Y` 	1Q,I-	'!$$ۋK,P@. _gBa~PoHjFo68uD
_v<<ĿS
]y|`*~wI?=?bs+0*u]EjhÁ{
;)'+-++ .+a-J۽/א$)!!KDXĠ <nDBߔ<J9>*EP"N|q<v[TG yznJtD_*J,GhqEpX
{*h+"Sq_
MqӜ܊W*eL0ax9]5}ԋ&"1~"S9ZYjz"N.
֋}Uh+ PKlj"  
  PK  C:U            0   org/bouncycastle/asn1/cmp/CertifiedKeyPair.classV]Se~
B#Z)jʧ~m6K\6i0W[78OrM1q9{|70L;Z
3,fm#J`m;fΧ|J(5~%K۴e[-:ՓI]UL'Z}IG1{mARb4ʖ~.Җs֎s殀>e莕cFF@;Eo;z8۩p,6Szz&o3afP&
'2y5m'mm{2<8Ifz"mQ 77d|7ǼAzLV؆j;#Tsk㌭lB?Hk2Ԁey6Ę:.ڳ5=&`b.eEOٿm}C=NkL3e9֎)⊈^}"qUDgExN"^"=`"uAp=$F26+NβS~r
<90! zaxKɽT|ڢ# +<9kj܋2_k4׳5ݥO_sn;ԫiL7ylzw
Fޯقock20Jst 21.%Lxd'cE,ZYexMIVx]F'xeHfqŻ,nu
,]	C0%s,IxXb"aư !UXY|"!X|,Afѵ=2>Ιv-RvЎ-G#Uw/:}_>waH<FJqZBT	~$l|"#"UBj!s*I T5)BB3͔A1JO0'">>U('uCjwED*o2mHvғEl/\r*/eVZ%QYJ!LQfoPGʾz"zST,xK+3?~t]QN
z
U2T-"m|:C|tǸ1X+`t~zgt^h\+<K/ PK3c14=    PK  C:U            .   org/bouncycastle/asn1/cmp/Challenge$Rand.classTmSQ~WVR#|Z5"$c̑
7ZձI4\X) ܗ<9޻?~~`;!+vG@Ǌk 3M7K,7ث}0V@Wq0UZ̬.?ݣ\4K0=͊FUɪzFg,f#~f0
e7^T2E5%؜|ZR(2<95$ZmaN
JJB@mzZDctVTjݰG#cL퀉-"zDxE\"cd7A-CNEMτ
'KӶv<Њɖz*yWrM9eϾTo_=猬kz AћzY]Nݸa7zas;7#n0GcL!"ȍ͔>FЏY	Wq[ f$b[,HDy	ױH*OӃruRͪZ^>ROe0
_/WI#/Jdh6H;y\9t%y?[W80tU;t?Cc=
g9*E$`g}#!}>|o)$|{e/	:MĸC38X*Y%l/׶0amOTb(+I;I$(#Rp

PKڑm    PK  C:U            )   org/bouncycastle/asn1/cmp/Challenge.classT[SP-(T)	P޸jE-	goQȌ/<ݤfH|{?Џ9H3@497&QmbnD6nڎ&
4N-zy-'g	(9	(L9Epr452a82=+>+drfmϱ-yw1?F[Qtqt|ޚ!5 p1T}yiݒ%?il|zVk(mG}e
V|pxz҇9`{RYWEË<hH=`/؞L_D$$ᘄNH8)ᔄtLV5ޤ@o3?JIŬ}|jUD=UQ't$*u=$3+׼Yaa9[/9}=W=dbly{KVq:@ꞧBc

.0EB9jF(CCTPCAWC}Wccàf$nh0*n1hM#S]a1N|?:8Va4oeOP3̷g|$Z@5/x}f)#fZ-m
뾠IkZw>{n_)Y%T+"!.U%ԕG/T
g02Qm܊q
ekAnF~O\Yg*Uugu<)!*V{A7HUdYVAr=-[a_.yt 3u%&U\dhA
gkexr&. #/Dw!PKͷY  =  PK  C:U            -   org/bouncycastle/asn1/cmp/DHBMParameter.classT_OP]Q(	
@uH&SH\B!Y|*7ɯ0eDPlmq/sι7g X@ARcо0l-;-Y/,״%vI.
vkYMo1ͫ;cƾ
3eo,V;K¸皯Ln܄>Jml0U'Ɛl!Pԗ_0|`qg<Yy٦G$OL' (nw
w-nde\0ښKO]=,RSU5k׼I">/T&8L6l}WEYigK-Py	_nߤрrZ6Cp"\B[H"\
#!c\`RUA
)S"
qS!ȴ!#m#r|fQBЯ N92CvhZCߢ}^V/Z\:#~'ab&#"S}"DM}%Z\L@'r%uDth_)k>F$NeV>s
8ə4j
=
\8qz|"#??'	l. 
PKi    PK  C:U            /   org/bouncycastle/asn1/cmp/ErrorMsgContent.classUmSU~6IYYJPVA&4hQZ*B \.n6L)~iPf~3 n˦ɗsϹ}9wg ̀# `Tyh]ͭVw5˲hEi
[/ a<jװ-a8h 󗘫f2s3`3l"*f锗(Z->`KK˶JvXdmWKUNgM5s)Wy2HgDbjFkExGC#{6$l.UKQ*ZŚN/W3nɶvcʌ0QLSXg?T'2mv}{' W)/$9鏥	uۤP:➟7Fsm^clD\1$%#"xY+"xUk"	X~aGHvB&:#j	;O,~4=n7:U&3x:ZȣqN5#5|\	_γO{)?
g\Hu=fxUwz8z·Ls=2On뢕]NlC!!)ud!(Bܻ cSܻ!"2DinfdcV }nnqsgPpY0bXc	X>0IDO͚8V$$8ЯOs&{RbB^WT aH89h]Rk<E y5{P+SO1!>;cD6(1 (B1)*q Ӈ jRjsC7Y+y

C]MD5EB)о15 ݟ1!Ryk@}Cܯ}aEI2An23
uNz9fzo7ҳ$%uXO'R^WA5|Qg	`(HzdN{D凁PKIk  	  PK  C:U            -   org/bouncycastle/asn1/cmp/GenMsgContent.classOQǿ-],Jnwť16HHi]Ų[ۅ'<yZ"Ń?m+eryoۯ p!(s]cߵl˽04Zٲ݊u;U-g?sVU3kʖ9 횶0P6ݜ]wu0[G
pɚLbG
-S<zIl+ߎ'eխ䢮[z\6-ڦHu/ "@0 @bǧ*˹tr6^О@im;ٔܭ9L\Sӧ\.ODט7厜зue݆?NH?ʿ%aD  $<7\%n&#cJD"27WIUnR"!a(N{ʗDQ"զS^"st[⚢~ B}fUhsȏ+_~3M++{vqɚ^[dIX9d[abAi=|p>T &y0{Yx`oW$~bPY;myVoz]PKsuEO    PK  C:U            -   org/bouncycastle/asn1/cmp/GenRepContent.class]OQӖ.]JnwEcR16HHJHW,.$xKok@$_0cζZ)73LygfϤ~}< 0A9*Ce[=^JΦmlzíްg5cgvUifñ]v*nfnn~?Y3W|4ۂ&bT'N,.1iL{٬-X}RPzI.:'ukr-$]:WBDHS>Qe9B.چSK8#m'5p8}559sOy}Sȅu}Kת]Zۘ6w?EjQSw/`H܌psQB IqL8\&#bWI"/8eZhՍ
_LFTNaxmn򢲋k;m3yLc1bt:{Fx4F~Lk+h*_GbMكM
"KR1
K(`
zI5Ń\ {z$&!QgP.Ey[}<u?PK%eTO    PK  C:U            0   org/bouncycastle/asn1/cmp/InfoTypeAndValue.classT]OA=-"w˗HEQBjE"v!e["M|P"/xl˹{gΜ{)<q=NNaVpMl
'+
%yhnҨ0lhV^ ٪-jɂ=[T+n1*~d`SV"Y؈,%S7,-xj9K7
a3Y3*+E1//N&(kY	7Z%'f!x2.t%K_5:,jf'-$sNn"ՖǍ8WAMgR^-}[pAO@v~.
dM5У()7OPnlD,0!"?NNsQg*?'3r)ꍩhEXd9%j:_z#*A"E\SD3\8h<A bUpE
u/p׋~Lr! n{i4;BeKQ_<Ur+^;ϽRh!IY
NI*#.=,.f=̻'.E	8Yƛ;leAY2TMI ]i?qg?K29;$pV	1p"1Fq@2
>e<,RMo7lv\I׃:ӱey{ʸ8Zx iV`?PKHn  F  PK  C:U            0   org/bouncycastle/asn1/cmp/KeyRecRepContent.classV[WW**P/L
*VTSP`oC2Ƒ0Z}kĖU>ԮҿjKI$I5|sɟ a|݈8x	?'
ӰO	Ydhʙ[q-k5{BthpxtPU#	l'.F5#C|H4^Lۆej)zN&
Kqdn:ԉY[3Y[G#lH2_'q۝.-jkvFǵ%rM[=ҧu׵Z(P$ғZj ̱3|3;غLLxr
MS+7!+vl7<	q+M˴'^^[
IgeJTNU&QzQx6<,"gֺPk/d1==hɣ"nD̫T)ެq>[,fi6nѶb؜3Lkld;9.A(ag$lS.	%CBg%쑰W>=S9*U%f`hݬv7L[kGifxZhڶړ'|~Zip5yA"R3@Mqt&W[b9Z˚]5@]wzko`=YG*JIS_[r∝s{czW`mx$:%Vׁv?lAQ4lSІS
T<
1`(hŠ&eGqV cD\de00ބ>peWd2B`k	{q)j)GpUQ2aZF/LqẌ㰚^ex)V>>S|jXKsO6KQ"CDdѾ!%~^jQx+;j׏B>>[@a4HwAOc*?Cs-fбEbZE7Y8<n`2t{p7%JGBCGa;(-n0<dwWe}1^_'bJ**l֩? ;Q)Dʸ3%/ݗHCAr:1FocCo5ƃmyKisK䃧(#l\(#?Sq{Wϸww8W?w=1[CABՠ7\j˫w,Y8|$@Tn\bbcpGc޶r)ePK7'    PK  C:U            4   org/bouncycastle/asn1/cmp/NestedMessageContent.class]KAϨ9Y}DAE`a7Z`ոf֌A?]Q7]U@y+"mV)	lz¹wT]n3)
a^h>sݳ\*ުq)˞P\(Ǖ-)1\FJs$wxZ\eµOR~Q:J&LD`c ŬP2^KMsUc3rlh6`tsE:-׸3cH~j'C?o#;o} za=!;O0u5.bfoPK)R7C    PK  C:U            '   org/bouncycastle/asn1/cmp/OOBCert.classTWU(Jkͦ5P؂ID
	5i⯛u7?%o/	Gα<
`6r7̝g ,"LDQ-U1-0j9OBl3۪'cu1(sy^݄ 5ܩKz깍ܮϳv%DLmjIPh&D9&iSpZ>syLȴ)&hUBUf\	36XnP^1xӷ\Gt`cf	GmsYl7EHfLߣږ]瞄gfjn1v
ma-g17<a6Ϊ<8pjӉFɯoXO-97ݹp'F'j<weXb6E"れ2^1+㒌2^qE2ޠYiKPVqGBqxF{Q;+wIBZIgq~ԿT~
Rsd5;_$kHuҔE]yr6QʉF
TǸ)T*^ ##`AE*Tw,mzW4Q=Wq_5d|-`+>PA
wX&#iM^yzѫ3u֬`:$Q ״a`\O/CzFNt[.W?p9ţ}|wk֟K{7cNxE"hwHHP,
tsυ9g(1Id%қ>aKH:D!V~zx{6b#]|FI]iCGUR,#5Edr졌T@Ł PKX{  (  PK  C:U            +   org/bouncycastle/asn1/cmp/OOBCertHash.classV]Se~6YX,BI]`[-@F)6l
l;o'[+OPao{}vW `C
	$uce:ilV@;ajw<̓Ҳ~Gr?_;tmftZv|`[/nfn mխ+WC2~6̢;n̦?Cf^^A@_0X0%mЮ&Q=9;/n-?tq0r cRs<.L`L}ߨut7&
Wpdv}cS{Ţrwbl;Ȗ)Ky	$*5	KxCB7%\uV"w"ob2'P)4\_9M]O6Mmou+;T
u0&y
1.>0FtsFuh,i7ΘQ$`7sO77{A҄/ϵV<?DÐ6h
AACBaQAFbÄHxO0L2$X;A7fޕq	ʸyeaNF?feܒqel1d\*<eܑM;*5k WEH%'=Xt-$}|"fojzϓ> 垙1҃gM>9[^=}>|zOS@!U/I@(%s,jp6J}B&^5RІ)6BVčHaqI
Ѧ=C|W{hvL	
G4(ez$Z[K'NQ߭1|zxM=Iq9Zꢦ9P	_h>餳>>.JF/Ӫ_͏Z̈=xԉ.oPKx  6
  PK  C:U            ,   org/bouncycastle/asn1/cmp/PBMParameter.classU]SP=-A?@I Z>"ZEO!
5&Z.?pg2vQiZi#{wwMϷ ♄@oEB0(y6)mI"鴄S$uۆ)grig$E(QV_{Ko$4HYZjrs*
}]d͘nCլBQ܄-̌IڜRz}(|E޲3µyI͆6Ru}jNP=9FulyjqY9SpՉFٌċ\"mZXp,AKX[9KXGehqLq'dqJŅ|\BkO9XY+wDįz "QK7tGE/o7z}r>rӧǣv&VzOVx
S]TD_!!i}8U%~ {Zor8K*ѭ=*N3 140*hD}UȈ121\aH¸00p]Y3RpS
ㆂL+I(Y,N;iI
x~/>1ˠQZ͵	
6$<Y#ZKZ4vZ4莟lc^miz31KẩvTdR?,`eW2Iz|3x~2olD=UZ"ۡD#i?~pJoI[N)+
jUDd9BH[^R1P=_vV=Wv7UU'3ܓ^χ8,µll]GXPKd1>  	  PK  C:U            '   org/bouncycastle/asn1/cmp/PKIBody.classWit&^ƞ(q8	8Y(ii	dyDdIܱ4Q3468.Z-(hB~OiOb?ْ"{ͼ{Y 
PcoGB1#fm Q<1cVַJX
}nWo[R\>9j0Sm4A50o`<KLYbHJW
\ͪ{H$<>O PҜT5؛ߚKH(f^/ig{}jwH̕,n0L6+f)>.wJA=Av<~XL6=FHFDBm07[d&C#	]BuZ*EiXaxaR| OooȞ i69uf9w%C4z~XOX1Ӡ:%ʅ_2m%cFc(I	f27HXKYqݩuNWo{KHr..YEHNV:O.<p][m0&Kl/!
kfu	i+-E$XrH]z*E)R54]dn֍4Q\I
aQ8ӑ~KjW&ȪUݾ^N=Lٺwhdhg9.A=(gf<.Vr"RPCor`{v/NUH)ԛC_S|,@26b	E!cagד[k0Afh`hdPf30ehb0aBE0ưE12ᔱV:_%8^	2*c
2Nq2Nqn2Tdlq*F،hq}06ﴏ;.g%e3SjV^6mvOYJa?|q&
n/!tc
UD)ʝ`UķEA6V$  'U@<ުŌCY
L; CޱYgOK!0D%OW3pC1ryoԻMԪ	z[2:`;*JPrGTTEl8
6mhG
uh\cCPlM68p3n[mXlv3
o2|{dwfa>`A#v*a;cq<OW`p1< Qث 1)+OT0	i#xFcxBxVxNEx^دRLexQxI8J*BbfnlshգŇw[ZxWY4	XXzjn_(p?qg|+e?\ďxRo#v{/G
JI|"$7?x׈FE<L|#ěW
G/N/_[5{A=|_/c^p<W}^|뤯ÍY#+}N{-cekDq#++>:8c48Qj{4ݽq|0:1cxZcxs?N3ٵfg4E:t³k!RȮ'=dwG #d=M kdoC>d}Jdm߇?;_>)ç.{0Of~>+,*_ޚ^V,.-G5Ιelu9nոャ[ps
Z0~<Do-`8HPKi`8:    PK  C:U            1   org/bouncycastle/asn1/cmp/PKIConfirmContent.class[oQ@_-mֺ[1&Hy Vl1!>l]v	~~jI2.kQ2gf/33O 
#H$3>0mS<dt>e-nS:1t'j]&b
(9!Ey^%ofqz?,­tҬȾ֍0^_~ ]y4QgXq4m24ްwt!oZC|8` Wbk^iGs~i֫tzZ8nY5٢9SMyJ%D%($\0.aB$i=kRC_,Ӊ_ٞJ&.fݯa#?).IEc>ۃ\H[%>;SjX{H) V0@ª
]kJAdB12摔k\sCƒư8eZXAp^;%].0
 /eS4G]uvO"}f cA;"O.u~j_;EX"Vx{g]X(v7ڸq]ڸϞ}!)OhNQH}3O~PKĪ?G  C  PK  C:U            .   org/bouncycastle/asn1/cmp/PKIFailureInfo.classvF	I8!@KPjhPYbɁ4"F`KFGjo]Ї#E~k9u-M'5-ZCh"]`ݣ8z|yKSzزZZsZnB(UЋ-ᴬFǘJFEw4cbڶj5X
siڈM39V	47cUZapH+m[aLv
[%"aW޲*f/N4au,̻YZ%+vV-;Mgְ8vVC":Aw;MaHZ0ڎD4+R\yQqv@x
}_gえw`#F_S0i<d5
bnl{
2c,EG¾1rYw_HxFM;@A'oRtDW-#?~_f{~l;T0rYè	ﹱ슼]b»fC	ʽ;oP: \tFop3pyEOd&^Oes^Fnjƈ>>\}d3b|İzGA0)ø'QtF3'_E`cnq<KeeeD1	4,
3ƃLYfYXVXx|(E(/ReoeN:z˕ǆXJstƲteƳDVtnh'KS;C?Q/Ce	23	jѣBY|l{0nrj2EqkyD0SKt>yS^0^*%
6)\ _Ux|A:8p
UEo^mMD;p
p:k
%+(Z*j)n)qk&{\q{Bq7'Ž)VfnR$cWM/{A{x<@
|@O.!m=v@zPKh  B	  PK  C:U            +   org/bouncycastle/asn1/cmp/PKIFreeText.classU]Se~ K6K#EHD-6jZHR4TKxMS&&KzKgxg x?89mgdss޳>)<SYjᚄV'F֜`Dt#NŬWؐ0,3%Q4=FOO{ɕZ{IԔ3fLHliHf%	NTVi1fVx(9)zu,=7[lfiZlސkl.5hW]Y$Lx=eH%3'zɘ&'F:*y%x.V#gS-a{13~^isѕȅJқk-e$QdGvyv\nf!C%㲌2d\qUF)ϟ:8xڝYc*q:40Y;s#Jd=g7r\;3p2ԛ'昬5,)r8aa%pٖOꙌذךT31{9-%UEE;*^@+Tt#O*TqUt0	WU1ţT(fx>Rp
m;
cFdc2xQ3S0>eǰo1kv~^Cʜ(EZ7}:,tPp$S.Z4KA?`\ j<O;?p-uY_XRvN8ddCEe]@h*X[5hSmj'Ƙqzz#O(lC=3op%dH;H|吞n	*D}&5搌adI'+vzÔ6ej'1· +{]|PòTDU7amBwp;;KAf':
Jct93\C;X:?W2ާ.5ʑIx6k6Ƭ6PK6:  o	  PK  C:U            )   org/bouncycastle/asn1/cmp/PKIHeader.classW-z
*qR; K.i`8/lZДE"Hϴ&鑳m#=Ԧ	X2!i#3oweK؟bfvo켙W% O7$zڂYqy$FܼKB]-w
!A""Ct,02"'#ZL-ct"@8LFtLKL;(-@82ICKZ*t}$!Ini-.fS$mϵ树15#[=bz(>[桉czJQHh"e84I`z1	2ߚ6l#z$-bAnIӖɒ̕E՞!-65#ꨖH>I)ʛiZ @0cZ7bc߉.(a<iLǍSgLDϠii͚0 K%^SB[]3"ɨ6(ktUMJken0RcmU(-2@vZDӣΪ72BdY˻󝱩*^]Pu8;"+@Lͣ(UKHVH`ׁ1\)ntהtIէ绬.cX}f2PQIt|2nƧ̤S[7e7-kwY*10X)c[elᓱU_62:dtx2nV˸CYCTmTa 1ot궊kJxM))eV,]|wǭ~Ymt]{*r<u	ǟ.y=K&o[_j!/UUVζTQ0R\O2_0*G+n߂PYmV*J	S#K/jnKv\^YK+jcᔜC';LIZ ]ˌ̹M¡ae"QCJݴT7tgv/w؁wfxNkqXKE4PpͨQF[biC6DTBU]jQ1oQg1)U4o	2=exb ;8Uqf0GfxQ2|`xq'gg>k
i+f~d)3<
o*œ
BK

𜂷[
e2|OAVpQp2|$gEwW2oӻ״GM-r|@KLG+&J:IQίtDCzC~/;kx#1RQF;q=n{J#kI}F/=p?:orxu*aWfqyKpY7/ctП/禫t#$]zwᇳ!!qgq>#?}b#fof1_?E>)9.R/,x2.cDGh:n!RfT[Pyh?ߟट-1s'y):6{;jIn3p{/c|{
{<~;#CwѰ(і48;#fL1_t75$ʘg`1_p-0ʘ;cn-ku75s.csqmO/N2_
i~"k{}_3ls){_jDmJA n$mO>p&5xr@W˹w^,$Q!q$s,sȄ<¾<~9cW1FzP'x
V
8v5S"#*5Ta* 8fy6?sx*~PKWo  Z  PK  C:U            0   org/bouncycastle/asn1/cmp/PKIHeaderBuilder.classWsV)@P
ԑLh@ۄ$$46iMZZV	Qz_a`i+(q{ʗ?9,61".-,ã},XߴLE	5S)	rMzZd-CڤmqWc816q0ƴC.҆ez&jgݕn%A9}Jdt+;g$:7ΛČd5azڈdՑӑ줕Iy'cD
vٔ>1FY֖9#mg[0P[yI=R?_"ڼ}'ӔqD.r?zS|JVחm'3m}&/9ggM}ћ,*nm$\f݃4Ӱh
yrC4:#^,х-N,zptCbLJPh[a֭zt]82d-2VX-c'dNzO M60DE#ŇGU,Jgʰ410zCsu  =z67݆˙Aܒk'>=G	 ϙQK g[J&j^y6:grF3dQYKMM'<Q.{j9Uo`iJRӏGOݫIV3eܫGd<Sc+h>Oc8`Vvf)`3zlahPPP`YSЀ+PpDA
V8CPЁA*ŰCl{	=ax5iQ`8&[z;1B7gC؅TaisC3Yab2\`$!q:MчIsѓO8Oh[SIk4r+kD*ʍB]MBRu\I"8ᏴjC=Hؕp:
.PrsZ-Un]pq{
jIf'A(Ji@}E?И*'FHcL|蝋p̻V1?
 [UO/hT>cGMTFϿt2"B>uًձt/+kXV?U/Vұ0V+^,uX_UKuɋ
~a;Nz]$4|~S^|QBsQAB,-J4Wǻ,o	yՒ6]gVG
W'5vdҮZ#iW\TTE	XI|$p[O➐XgQL\KL>#&
tq0]RD]͚w2h%+zu4 v'(?~7PK5!    PK  C:U            *   org/bouncycastle/asn1/cmp/PKIMessage.classV[Se~ZlQRDE
POK
a&zDnqFة78?ÿQ}7Ɍӛ;>{/ ?0l㔍3a^T\5LM]j+.BA=mwf齤b	S4)&c+$֘ ukޮP7t-If̨[Q"U&'2NZ"*i=ǒ|sZ&LC	}Q7\1kZh2!siQOkM
h>:XaEaYCf4f$gܹuDK]6w%cv}V^MŶ[Nz^dLFC)(ތq|V66
XETqR)
"^F8-UgD48K5qFK^\9uwz$;]x(w<ݰtيOOE~Ԣ(,rp%ŮY1˚A5
-1YJ?KgPZ~PDKSI<ȋ%
[2O->˥Ǳ:WJyvFQuYLhF	ɨ'pQF-(qyeK2zeʆk}3˨Đ&[7fex1pCDB 1/A00feJhǤ b:!GB@y:qGB~̠1Ue_d~uk"]kI~ED4z
Tqeh,Z#jQ5Vo)%a'|%`m t4RC6},oS-,oXlϭ
̯)]
#[*R*"ڟ8TW'	6HQ ȹ$)nf	99p
.ZQn{)/ͶcQ玠JQۃBX Gɣxp@;"4V~ECT*ѽie,>_cR?h^B-PĺC50/kqg1oCΠ\X&RZ{Tyq-܏	k!S7d
ي7·LY,&LhTTGe74SS/G}&ǃ;U6X!㥂PKF΄  
  PK  C:U            +   org/bouncycastle/asn1/cmp/PKIMessages.class]OPg++s@t  u:qj(1C3&ī4KqKx奷3QF$oW09Pe&{yү??CXV>a޴ۿ͐yZrUn:ix~
|dyQ:#U/:o8Z=Y_
0)[7lw3?H`Cĳ_]r^}{v- "`X@L(`DDu5rQC.:jTj-t "zǣlFAyNRS+2p#)ErjϺҚe5én+Ы#K¸80BLI.\NKRļ8e"bdDA︫ԾoϖǼ0KI'024"NVjU=@1fȂ3ɀĥ?~h Q6#3FWV?!P Ԋ+
\%%R	 .|X)|+Ƅ\{q&!qwL1j;M kPK<  X  PK  C:U            )   org/bouncycastle/asn1/cmp/PKIStatus.classSNQ]RzPUBԊ ZJҒRhP2PfH;~Q#(3#DV:{9|`+Ȧ@}Dt9#0B:$Zʙjjn]@Vncm.I䲱tRN.҉D<#f*cK2lZrՓ5TS˦U:MxDS()Uc,вo(U4SF6q^)E5hl=9&ZܓS-ڲn*Tk.^R+F^a4LfsBV))JBm+N/N\ty`u.z7CW<h*wmO	/q]|=Ds7:SEaqqJ9?燙{C`8VC;CC'C@f#4cԇ0n3a2ecpa܏L0<bx i!$}ɸCW77aaF.' {]hK2pF_'ѽj
ҁGF蛤iPĻxVVlwb;ĐC<e~FHeRSl:Ao[N}~{L/"(J_~

SHP檨72 qF'CEaV
A=Hqa/{)p[HqI	biE0u[)2X4kgL[lǌ+~PKR>    PK  C:U            -   org/bouncycastle/asn1/cmp/PKIStatusInfo.classUSW6	,YVUZAjH6hJElAM
ILKհƩ+3}3
2ө/>Orsvo463{swι{`
4t0'!M{ٴL
=	}YJZe	E^ܳJZU[Z^o9[BV[kU	<cWLH!IN/mHOtp%+Zf]2z՚LenLΛv3F̛`}d(^"aԛlhgěvڛ1~N<HVvD@g7&ד?{KM5P5{S].s銹a#C!2B2e#2(TLD5WbGc)xmļYLKц:k#"c:qh/
'6rb<c[K 'hjK=i/t.=[ܮbYX4
"#v#f@3]&Tx&(ߋ{PkBO^b8;r*z1*>DL0$*Th*Pу윊Hc}80)g.,DRA
N*
F0`_0\cΐRpK
ư#Pp_*+e߯t
,|Ӑc~Sje猔/ 	yZJLk[V7qo^&
C:՞kc
g~!ΔS98DSv{F;I(7fI4!=OG㠫n?90`&Ķ.G"PikgIV!!&o-%A"
a%"OЧH]{6"ZmAKVh@縹\]HǤ`b42M3[aΐBNbz-dSqw[y.b6V[=  PKw  
  PK  C:U            6   org/bouncycastle/asn1/cmp/POPODecKeyChallContent.classS]OA=.[[hEۭJjԏ4Vۤ4]&uqv 	|&
D#'?lMه{g{ٹ+Q3Wc[O+Ai7M8-=al;v<7EAs_
_27,m}Gvƚpdf'+.@!ubS!L1\폪Uk¹/:!|Τ`宻ݢJJVw44ik53,L;*ox
dBÈɚfnؑ^3+k|vo<A/{Ǐ``
`pFbZqё	\T
s:&1,}`柨K<7`S0Bb(vX;Ke;'N1+ggHƘ
OH?v\uC|OH3ܣZrz6.d%z3{|F3X܅YaoBBC4dG:AYQ5PKV  (  PK  C:U            5   org/bouncycastle/asn1/cmp/POPODecKeyRespContent.classSMOQ=oZ:L-*) ̇ɄDI4VXcb\Mfԙ\Ht_0,;ܓ|a
147]ύn3,<Aj[s0pe|\"AAv|aͣF$6U_*an0ɟoxoٵFwCvWC5NF1A {M7r1qӐ5=iZU\nutQO%m_1$*_jmulm%{/r);-gﱬbgU`*RT8'*F1-
(*@IA3
&qY+)t:Ka_mF}$%:CD̡(
ISŠ<eyU|_^:1
cgW>؃3({pj);XZV)(,aRbo~7TH?c?0M3: ͓FD?V?PK&n     PK  C:U            .   org/bouncycastle/asn1/cmp/PollRepContent.classUSW
Y.DJAb
V$lXRRh(E00}Z[,Lsg73}Tȴ/<j97+aƗ~s6y c@M\RJX'
nTp9Z]G.Ehj*??s}&JJWWDQVl^8wEI&Yo&?}uDջ.ʧ;[vsէ2:ުRKѝK[A_}L!y-$:ffj1fέ܍*h9R.rh=uT(
>С!ጆNPoBcM64ѣKhS@^Aʄip0w0 fjYv91nة;iz7& Ly,U9AO4_MlWhВ
Nb }g<1bɱXHFŘ\q:zYpEK,҇<҇ܖm7"óc"lɊ2a3ZhȻOvYgyL͜sU1v`&̛!T}'o"f"lCtP4ZeFOQQ7IvA}Az/\(SH4;I2J_s6$b8@L97.BA*&&%KuUVջ"4dpE<7@>]/u_*G
Ml#48?CCh!yoz7 &j6\<>ƅ s0Yg˒Fs4Ai?,{f%G>DU(Gl٪`l9'HRQo[yqR/PK>lDe  @  PK  C:U            .   org/bouncycastle/asn1/cmp/PollReqContent.classMSIMq""B6F&5/A#	!LŸa`Kx蕭%^<%yV3!McUtϿ[ qW 3]PΤc3j:Xy84[*˥5;$gV4+X21Cvez>k=ZEKpJD϶#?o9SVٙeVU6.|73v1ovss覙O@-NeG	&5e@ 
xZK.8!zsMnarT,RJjU./fn\6tV
O	ʅՂSxl)TKAE^W>mP=ުxnԛf
-K]x6mJ+r]u_BvS;Jakv45vo7J?dYYi^ڝRpe%hƟ`3&WwsJC75@ ӈ
:?l9&a7Nj؃1
8z1ރΨ<٤U9C8&把(.Pi$l.f4](SPYv|?
#*@79G@O:3ZYY?:hT*f_)B3^!z*nT&nWqsrD*2H3U1WJbAl<I')'1bE7
{&b!KjP$ ~}l`"zDo`v?u+T!P*u%q[aΉ>Epu+piE<ָܵ_$$nF{WxC5fE
6q?~
*7Lk=8*$6Ps/h$0
In_PK`gˋ  [	  PK  C:U            -   org/bouncycastle/asn1/cmp/ProtectedPart.classTmOP~^Jq2ppu2/0uqdVH)#ܶ,Npι>9+,pI~)\pfuUuf+~āS'
QPuaٴUS3ʮٛ6@IQU*ցijӮ43fUf,]ԍJ;2s#e[o.h{Jq;;sކDTòIZljv1C1
0<hrQ:It=]@{$ǐ}p{rv7kY*쪇RWͪ޹\?9.-oWbMYNk~DpS)>p?pYØg3wCBb&)`)f	,/`iבp+8=tGKeWs8Ao"L
E|h{pXQ#?-$|'X>1rĹc,~5DKrH`Ix,;1,C%@Ѳ|6Z\ˡ f)3ٖ$Hxmo9;x9B0YNoPK7uEsd    PK  C:U            -   org/bouncycastle/asn1/cmp/RevAnnContent.classUmSU~,,i񥢶B#B(Pbx%R-+4d?3 iHGfK7ujl@6|3s=9?/$L	Tu	dEM:5	Yێ%MO%/CU*ϴe	-6zd.?>gg[jvyv7@{v8+VŞ@rK[ƦX?[f+
,;F:4Xn,urZroG̢(;P8ᔼqW7'/s9C#w7SO4EH;ΜxBJ;?&4<ryXxD~ʶЭ2Մ\{.'+;g*ScOdqVƀe!Mo8'm	b= C
!^"w1FCX'r&fFEGS"K6xU5ڒ2قXL?p'0lhC*wiMg˨j2ա%Lw`z7:mxdt`y࿅
FcmDA:H?bU
I=H".nTDvPcI+WX{	0\gpᖂeWp!|0pG0\DF!|.#̹SY&A@Ap.t|I	2.ΐihwQ}>6>IHiU|,kc
HYm0ZJͲXn@f}{O;#GcuV?;.gWH0_ALz
Nҽ3$~E}9HlhOe#grrp9p${jDDuczm}z~CbuQ gR $svЫ8οL4xPK5  
  PK  C:U            *   org/bouncycastle/asn1/cmp/RevDetails.class]S@B 
TP@A	((P@-ZŏeH#lӚ'ꌴ8zÅQϦ|5L=fϷ 'Nv7dCӌn*4V\=SWL°̝JۺfŎ#l4ŤQC*ޫ
M-᜹.6
uGU
VF1&ϧ^%5V2
9C;[A6O,15jiC.}',k|FHp6=1:%'-(9{K8-IoXM=[Cʣ%<:x\&:Ri.쩌qO8RZvP,a'}xl͈f
鞅xUl'Cʖ"gc]yV0}Гg/\%ğ:UCd}TO~,	7D)
8^40CF/l@330,wЍ1W1=f&`B ^L	iqX.MOR	􊷦,E}B//A
tLc3(+pxJ<R=$v~)v1@%e^v4Hi
Mc0&H*#
wd5huǂx57q4ސ~"	J{x\F37B;LQhɤC5g>V˘]0 sgGjQ*~&PKϡ    PK  C:U            -   org/bouncycastle/asn1/cmp/RevRepContent.classT[WU'I90EcmkaR{"56\
B:$C:4I#%(]?ÿeL@,J^>;eߞT	<\`)	il˽ΠK:٩RF͚QT.OI̸VL+ÅBnE3n"MX-KW=bLZEA#fh'̻cY3UxtǼ]t
;ew˫f2'NohFr
	!(;35s-'WuC_srfm>v}CFg&vIYsp
gks2M1^ݵITML艹;x+>/USӠ+2if~̱]y5;`cΡ*s塚?MZ&Gh8q4;rxd=8	%L5^nwKB__<jCD1Bar_Ce{zz)W<$4Nh*fޝ:GM6ӎƻ|EyxV2:-48d2U0æW_n~n6qPhEgpL9GqAdG2.h&Cu!ঀQ% 
-3	
ܕ	*>0)`J/%hHJB/f$0-
BB?$^;z0Ao易7z8ng}:RT3E omVNU%fքZm!5G0>y';|0BGXh+Oy/^gc(F)9tS]+$gߡ?A*eRBvmVC40G1+ܦ Q3%#O8Eadm<!6vd^{N:{þ]_"_Gئ<jzm!st2F_ܓ_Nn_C\寉6ڷeZ9ߨZP\BNBBk%XBZx(hr<GCX	$?k1?PKWW  
  PK  C:U            4   org/bouncycastle/asn1/cmp/RevRepContentBuilder.classTmOP~PDyWTۀ 08_41,v:~OMI-adh{sy ׅ~!%% hDVLЬ^*ѐ0Z:uӢZ5eivm	wuY+V=gg:&IqբS7^,5{N<nNI/Zl+ ~:F3_xKΦ^.QyFn
V:lbδ\a$eYzԠp|K""NCG|ĒkxRyrɦ-NزRF"b"zDq^DR[Я{i34>5<&ϴ7RJEf<N~PNih}oqvInnݍY;fwoEt+۾tv1Dq%>8\DGqsCcܓ9cp=˘pHHA$!8HƬF1Gw).ތW&L3B^ۨo;!piwh=`"

;tӟ^@J~BjOǜF5Bd9g̓Qw?f]pޓ9/HKLQZ)C<-7rHdF'R4զ(:~cYPPK/  Z  PK  C:U            -   org/bouncycastle/asn1/cmp/RevReqContent.class]OQӖ.]
тV+&
Ӥ~5&īi.KOx奷5Q x?/1g[)J۔9>9yfJ޷l3ZE/[mujF^KgzA0]ǳabyyiNkLw\Q1FJ嫦CK37Hb_hm.m,T_nsy1Oj
=Ռm!"D#$U.RJr1U\mEKgrrrZGIu՞}uȅ5aUéykȫ=A豆Nܙ!KI" Aߝf¸L	̊cN\7Q\&-bHL# GKaxhl<C}Q ]<tSVQU AL)|&3]vqt9D#=F):~A5H4կ#A&k	n%a)FmҪ'I
&$w&wpm7JZGLB'N$)kie
_5 PKh43E  \  PK  C:U            6   org/bouncycastle/asn1/cmp/RootCaKeyUpdateContent.classU]SU~6,Yi#*ni
iPUL?!ݺbrhzeg-AzCgING|φ2&\8yy8gs!߂.}?H}eǵ%k#I|\qQ]"IUfqӊ5ZL{ڠ\^<ِ3r$6j)'WiR]o!{̧=	f뜜6g{	=Gf1|"8,o:c?nUn{CRl">aN"UV#yV?IP#FB>䭹ֆefHe%-Pτ֘;HTWcJzgy]O=>{(v!VKϳVV$+p{ٶLNSg='{lc~5GܤG'Ⓔ\ULۏt(R
Tno+$'MlDB8ݩfxv#kmQk0ԉN[O>ʰjGb:
5ߖT5Sn=z#iSlq=	x*;LWABO%X'.щkapA@;0.	hAsg3%H0b V#AC
#0,`q𡀏T\'*Ÿ>$UX&UD1& =1Uя)*IMpܡPַ8IM"iuT@> dd)cY%vq%JaĶ0coaֈo!3$,vB'9YA\AGǁ*4>e!$O"l$P)-
^njI1$<ō`Wp_3GkX~R;#5䚬G~:кOVzWSgt!4D5I4v"-o{hE<k6j@p;x@,B3(mug+˯]T{p`!HG Eo6XDL}!.bYIX%|]g~YXe.lKiE
zPKz  	  PK
    "D:U               org/bouncycastle/asn1/cms/PK  C:U            )   org/bouncycastle/asn1/cms/Attribute.classoOPƟJq0P:"!(/L4B,Rn	o1ٌ$e<&Qfι9?} gD2Ld0iZETbqۮyaˆuxw[ņm\Zu[^@dV֊ՆnW׭m{oweҫ%^yb5Y7!z-m3
79g|hܘD'{_c7ֵn"vUd}]3M<vj5~"A0"ᚄF%1,60S)D$ɷ>P8h67(r_{ ?=CoN?Z[eՕ`OW(z7C_w4`!  &̀q(Ƭ ^\;
d#0	,	ɘDJ-,P˘zWKmٳ%??qrN5@pf$F	a:*FhQ#!Ѧ3DldM""^(Ƙc5ha7O|O"E/,$"n.=pFpPզnwcs{pCG,{0QlQ.%Nja-Ƭaj#7PK<u q    PK  C:U            .   org/bouncycastle/asn1/cms/AttributeTable.classWSw6YYIBEJ\v*-UZiI@hm]`k/	>>LXK;Kr
30.\M/
<m`%	5}d:A[c|\JoYX2%xh;0̤śEFBm,5=;b%ȪtLhX{¤DBadvtvɌe$cbwfc]72T(a9fO)3mXTRBCn9)֗N/{*-A4g)7i޲5SX*ƌ0CF&y0?989Z!m핯cSP|UX12層ͩyəmz4ZE9ggq2l1+YblWР`F;4+إEA3Ta>vCLǍ5_>eQ7¬4+'x}@eӪ9*3
]Uha8
'ǯMfZס8~ܷ^.lѶ5VQżRD*jYI!15]1ݖPFUX9O	ÛҞQG6ėwq29ZU
fͳ3UlEHTpxnM8*Ra1xS#*db^1G>򶏍QP~u8x5؃ZЃ=r<0'20f8p|?>bA`xĨ.31<;epa܃n\b؋NDз8}ndؘ{H9 ݤUUӮnyL/۝'\FEU.2?%ؚC	Fzw<wIs<#@ 2S/4&髊3Arz@+(PJſ-\vls	fʱr`UoϸF-9ӟC{y4#7TfoΡNkٱTvȋsc"
|NЏf'R襄[H!=!4aGC1VHۨ@\Kx~J
j8ҜVCx
\jsRF WAvtE/B#>f!~fԷ8$͡Db"Q#%x$XD;-Et!q=P`&#1&D7.n䊜*5'(C-4RoZQz7Kh+uh
gڎEYytG9|7,MXE!0FDvZ=2Mϖۤ-˦µm
(| bH><yQ}_D<(A0q;]miNXʜÚĨ8?PK/a  ?  PK  C:U            *   org/bouncycastle/asn1/cms/Attributes.classTn@=q:ЦMP@@
BAT
+Ǳ"F[	+lMDE	c
`sܙs=s=oowp!,J>2DX]c{XvulCw鮝׌
W[U"L\x~ˇ(/ٮۆVM8/U$ᔊIϯә>.0nqNx~imXe
		&\`f&˥\
pjzǻ C\q9"r/=$=Kr%,u}K]׺KwzXuh=إubJ8&!Aq'%pr0C
S"qf9sE㔈DqPY/;5znWk&.hR(*mV7P_>,">'sv0ߣƸZ2Fq\s*j)AjM@kcZ~$,%|@!)vPh~HTS^Cƙw)fS3|3U_$".(&)r? PK˭aJ  [  PK  C:U            1   org/bouncycastle/asn1/cms/AuthEnvelopedData.classWi[W~AJ- "Z6RC20dbVQZmyZ=g%{M?`7~ȇ3X%%,okAuעȠlVUŵs)+*1UjWڠ_? /R1-@u
ɯWu2`PC!aDc4oRxys:AݠU(f@txPMD-vfҎj%Ljfs&W59<
(3=@<)~5`5<j!MWH4KD?ٸB	Sb]J8Ny+C7!?VCJ
(R˅:h| W5
y{#q=0	^%z}ji`un"Qٹ~R&Ǖzb)?Hho9`FnODІXj<ˍV$Gv{
F>,[dbE즶*,2~UdBtAcEҢȈ,8ܗBL^"6,%\[El]""*E"<"DTi]{TYF
+l{s;0.O#Yn-K
L]5ˊLngƒ@+i%7K6K
+j05(L]Y9]Ue鴨UB҆N
=˿wiyг̈u+.胪VPBƯ
q-t
Ҝ'Llq38n꿅[B,KKX#6		KPPxRB-eȓPZ%G	xzᄄuh$Qb0<,s3p!@#TCp!@8Q'a0؋As/:a؉0^fxŉv2a9CI9.2D33D,@P"A=Ra(m`'!*9,.=専H#j9Iou\A6n!b$>1qI\5+\(ƞ$]Ǩ\bHoMࣛPbAA}fKrqY.՟(	]G
D"ZDlb!A5ӹ&*a\퀧R0OwSK	ʞS
lm
6ǺeߋߐR	>'~D
&̠EQI=>)
9)Z
>PҿpAzCI}1CC.gSja$e7.иIȗqLA4)\ėcX:9R=d54r\>Dˌk)s	`2?S̣)ڌ#)`2o}5e'i<SQ߽Z;`gng=2o$ͳlw9ae$8ĭYݝ?+6PKzI  w  PK  C:U            7   org/bouncycastle/asn1/cms/AuthEnvelopedDataParser.classVmWG~ ˢAj5jyHH"66k ž5,ݰ;A_A{
J=_sls_{?;s=a3\.C%2XMOXFŮk\زḦmŬk43ƄpN1\Y5XftJ.\K5^q!F	KwV(s=a/SUr+l6/ɹC'oݴR:C?L:fٴ5vͪ;p-J30s"x3R#ݦ{cv`/igr+Qf[piĦZd19e;̜]Ubdk
gƊ7)vUɉ`T*0Sw+])C0DQ8U5zSr6`pnPBh*2nçYa/@Px؞Yjs
;5wO@Z{-R1JUӖ)/'ʇEwTq%:Ij똋  _
^WpXG
b
N(8V3`]4v!6!<oDh<OC"~7[P[Bq;pN+l˨5Ox|W@1emh 2P	Um=X+'}/loZ!
;D!(R+=@Ccp^W50!k}Xà*rr]C?
a/&)ŧ{p(J1%Ŵ gqG;+]p~n8TJ`]%|)Ŝ(b_bKU/F1+S2nS1:%+d,CuC2ox#eyc$IhV@ހt	djdj0<Eu~dc=	?~&<Ï$GPpQtfLNid2Hin
)~&\IMX"Yǂ\0,ߞc4l<T$<H!ķ[kډZۏO &hIȐu1z9.=7ځYx}K'xPH7tt&.wiɣLֹtFO!m7!/Q|;1UYgll&f$8}mTe6PKV@y  }  PK  C:U            1   org/bouncycastle/asn1/cms/AuthenticatedData.classWse~fti1RD ݴ(WH[dIMM6x+x%x(H[Sf@ݜMUf:w~n??`9~,iZ]DOg5Ȩդ7xB
%	=f-aX\7{z,+کWp}I}o2awk	ͬ7cfiFHKXÁaj4DChhYϴCtvNKq87f2!2UJI&nާL)[ѭSx#x/uh!O\E*ۦF6ۍ²|I{D{,F^:N[U_T5"`4EԨ?I@H3ctlfX[ISZ
4YʽS4fN
xK!5aF50R5ca;J"QsT7ޞvAJN3=S{$Y.[ho&Ep6*6v/c/oi^7cS-)[TSQ"u4%|9)^V+P/Q	nk\M}?$.O[JpJX$#A"+QB|vMy5XTUb-$iUTyb*ekO%6dӑ鞆ǚgx
v3۝?tC/2j:."ߨxvM^<.鷊u`\7nܜ~-fY~+ye}EeXY5V]%_f뾌=c8\yl)׆kqzmp7]8ؙ!<? ;iXn>y*?<{	<אD/N(ҰCK<-AV0L&KqɸFTȸACMyV1<,cȘ2p/u0t2';eLfpaixA0aa/Cf221>G\]XЌG]XӅx΅uH0<pqy\؀~<F<"O1<-xɅV<.܉W^*$O@,L?&ujvov
T
*HF5dFj5Vg<k\a@CB%= vPv`[%L]SA2.ę^S)4pZq)RS8+S8)SR
GwU
'..*jQ-! Uz	wZ-|-!2Q	D(k ޻f
$t68pٔ!|fw5nwJh/(-;ǔ(;w 9itiXPD	+ƹԏie2Au+>,93TƛAr~eut)CxkEz<Ys-a
R/pv05x<0Κ4ʚd\[cYtl/a>5.yDּ;2!8ڿ3]f+4#.W~<3NNx"iJ"o?ٝJۇl5jeы3ʡWKtwQ >lo	
8i/ #բ['J\sSVNZ9]D>*
]yFUJc\ioTWѯ/L+M2w_PK\  ,  PK  C:U            7   org/bouncycastle/asn1/cms/AuthenticatedDataParser.classVRF=!hS	%_A1 	-:5@H.0"Fr>)	ng:O:Ӈ,"0]9޽?	JB芄H:*i|JD`9yّpfpt`M-a,"F~ƶaaK袛i
	iYg׷3z.NJlLq\kO,@k;vQvLےн_b	[lis{Q.*Uj&#v;^44XIm:<[/Rz49(e	
e"`\xcP=YM^CFQa
Gh
X_fQBth M],FsjZ	tcݻ{kR^:/Lm1̰bӓPڏc,[.5LE)eKrUZ,&'yڶ2zd\'#˸,2d\1(㪌k22-f	NBŚ}G#ţtѦVMq'uZ?Bތ^l\YDִ#t	>joY}Sr"i|Z;w{O-vҦV̮S]7pOgP"6#b*おQBxBW*㑊saV9H["<;dİ Ѝq<QpOx&.D}XaQj!K3vuJ~sYiIO"Ў6],ݑRvGʟFȋ4˱w!?XM	 /~\bzr"((
/]$11k?*aB8FK kb=7H#hxWmxx(1Љ
La+/Rv5	nLy4b_bo4nf\\wa#	"*o`K7])t<MKwE\U@?GbEʰOEƗJHΣߗQ`'Q?ےd4kPu
ѡ4\(Hy2jEdP1+|3{yƇNh_PKrv\  K  PK  C:U            -   org/bouncycastle/asn1/cms/CCMParameters.classT[Oa=."^,[VQʥj\XCxZflᓾ&}dԙm
49̙337_ Sne0`RG\#VëM'p
eړRpqȭRg!6옾7,l[y[tk!X\0t{ʮ,aIެ62#RӉ*\:-XV84XG-=3F9ݵ16qjs*
CvδzjƋ{4i6V։v 5p4Ġff旴iFn`T.mSؓ7_^rK9sӴ-CgEq^Et$SB?[Dz,"oбuz]afKu4G2U RJuF䄙<9e0{i'H=mdQi2.3
7[/C&2ZʐdU!3PpaXB70LJ-1)	W0"paaFB?"pW"{1N:MѮ6%lM6=_ m hǢlO?7Y@
ԯPv{X*!#C@Cw -$+%<R"0_D|`whW=W]̾_mo\K"Ҭ_F'UpZW;
\z/g"	QbT?3Z/1f?T]T^<Xݫǃe\	xi[KQ`	EDXPKI|]
  o  PK  C:U            6   org/bouncycastle/asn1/cms/CMSAlgorithmProtection.classUmSW~.$lQ4Ehհ![jm,o%@%Yd7n6t/~3%a~3MN9$0<w99{Ͽ`:}81CqW<8i87.2el<nhv^Ni9&LF@p\lJ33[^YOhOerVLMiSeY5Ugywim+znʎVLj֗9
j:M[Ps9ͤkyW k#dyG%D=b*
-HJ #[7gj4z4hz!K;yrau<r2LGz넄c~`dҚ-Ⱦoв%2杌Uh41SVZ]hޢP9ERߜ{6И8=TOv)\#yl>:5UdѶEnȍhߞt757hY1Xi%$pV{IY.H1{8Uݡw=V}tyCa!vk\ꁈ?0y@y+m\\;	f vJӜ-"Ҩ-}}/RS(0yнׅo"%DӇHԢr[[fٛ4֦a }N%: Bp78 cm3|X ݸ00p~?c3#E?"cX`K?1ϐ#2,1|(>gHq+~\Ųq
6e-;:e?Ϊ)<ᨩ'sjno"(,Jgy~0H#{
UjDA;D4+%HqdP+%}p\l"y"q-eeD%AO"RE_QCR0&ᚠԉNgOw"{dEd)"mHX~f憊xB"m<g֪{R4Kis% 0z:GH_c?Me]e%ml`mZR]}V33xLi~m~뾌U0pdG	l)b;q5Y	ffw˸om1(aPK,[  
  PK  C:U            -   org/bouncycastle/asn1/cms/CMSAttributes.classmN1&@BJCz.TUUە1iEkRw\ }K_|X
=|dmnd{RIsPHţa[JLCf/#i.Qho~PTlxe#~8fDiD.TԗMX俹*pO:ks}5ġFnV>צ'\Uõ%֏vӘHvFh7~=jV8\ȆqM;W_PsuIe%s'l7[RBi!
"a@(*EBLVǄg<S9%CvŌ:sNOi5U'\өGjS1*1vlMh!vF711'،.ƟQ PK_  
  PK  C:U            4   org/bouncycastle/asn1/cms/CMSObjectIdentifiers.classRPƿl]DjAA 4	mM;MI| dFgtI/ 9''޴O ȋ!"(QDf-"ZԎ	hp,<ž3ش!jQB-,>)@Wsi|ܴ*vv<s-)cib_|bYMj!_,u<	jFF.uS-^_GɻRR$Jr}9OXBe̨LC{u]*v^TQFM

;+[YD2
U%C@rA2S`Z@9jgE3%SLd;}B)INM\U,;GˌEV\c82pb5oERRe% ZjEvS.鴌kIS8@9Q^4W~1}9,F7FK_b :]nBG'nn	Caa&a2NL5 ia0G'<&,˄g*aހ8S8S8	ISBJX 
&
X{߄Iai/	\{vp5u0\suS~bS50ͱgԂ>|pKY(.v]H4\8]l9ȸ zšPWxCV[ƫw¯{vϳ={ PK
1    PK  C:U            .   org/bouncycastle/asn1/cms/CompressedData.classU]S@=KP,؊D)  "mA-)o
5&FgvdQwӴ22=ܳw7__+?菕*(R]I={SyUSYvEKʇQ]3͈i:/*X(꾪:r%ƴ!kI4;PF`i"C@ϥC{FF	ym"Z U=%eJԩϞingSr0hOR)eZ8d6*wMI-ˆ0\zocyBU6tn|3fUC=&Wq.CMl<È
/aڹ?].*GoR">Vt̄a-zQWiɬA,_vVj'm5z<r(#kPFF]l鴒wT\/	KUumڹ=:
Y5z.]`88\hŠM{F\!qr0a	/&8Lrx(fEbFDD#Dx0'1'"`QD?ҿ)kնewk65#Zhi]@FȺG*tބS,ISDS?f:J6偀tzͤFsMx"<$IK8%O"'ʨE*bOh.=~}oB*E/Oc$G⦱ÖBE$}R ,GN,ݸo-XM$ƃyX1LDՒ~PKe  n  PK  C:U            4   org/bouncycastle/asn1/cms/CompressedDataParser.classTO@6,tUsu"mn1!?,!BBBO˭;fb{,_ihb?ny}+5l0$>åȗ|n7}LK6?{ltk |cwG$6;v3d	IVn k4{r<ub#9Z۵vڇߵޱky {[6^UqQMjz41{1i v(h9j+TBt\04)a'V/x'TdVz];
Ce
W4jӐ!/ưl|\l&2GB.MDnz2Xy_SŊed56c$
s4p@
w$q@U3E^Lci7HMj2uPб:na%(1"CuY yJѕ$:*Go	Uld2*E)y
d7KgXgCϝ31|!*/XxBO:yv{Ӭ3d٩GߏtaD5,F_aPKazT'$  0  PK  C:U            +   org/bouncycastle/asn1/cms/ContentInfo.classVsUmۥʇi4ݤ
  /1V4(6نt-B3}ؤzfI89s~߹}ϟ8}(:#oHQhZ}Ia=w+aC_B;[m=݉e-A=z6kX+fd
	JʰG6\[Q+o봪FM6vSևhٌHgG9m+eߢ5lLiJ鴑C<-9v?adm3cI8s^0I#'x&
făFX[1+IibS:qPFuFڛ $7703MۼG;6K8YD2;*ǦuUu2ntlj2avUݾdmAI2,1OnBjN@G9:2%	-vfW|v\!xGtt
8!%pRn`W]zb[q"yܫDaݔ>NT'}uAw
Ÿލ͓ k 7CRcjtdV8׽yiDjYZȍ:3F]ו?IUCQU4}Q`! 8/k{Th*T\V<QфQTኊ1.WYX7"IX| 03q>\g0{Oc
,
0S_),P0y"E	w#$}NzθCB!<TmOxGFz0B^<Ǵg,§=EdE{"qm
"[V!1I
jaЎ5=A&8<4	A'(!/!/l
H;.ZSݧ8C,,B^^N*斩F-g eȞUms
u:'
AW_Bq+q<қحgR2ץBG&gxo	4.A'su,yJWF\2;=Z!9=j#U3b{no릛}X)ta8,|ö"wtvt@",3~uޚ!i+\1PKy8  v  PK  C:U            1   org/bouncycastle/asn1/cms/ContentInfoParser.class[o0^h7AMm	>TԲwCݷ*|(ɥD5}s~?}%qİW~`Pi4C%׺gd0=Ʀ?̺~sak(dP1TӯW{;<p๽T3cHj}y!>}9`gT*!_Af]yE6v85_3q@
*,+wfa arۍaImEwN)]OcyTOs-qB	,,YVq{WL&jc2V-AO|+ś<&aE5WRT$K`ߢaӪ	cۓťs|@4hɽJc	7iNBH2GlRa7<w~JD3(%_PKYa    PK  C:U            ,   org/bouncycastle/asn1/cms/DigestedData.classUmSV~.
Km*(**.,mע(KWKȆ$v70_Й~s.Iarɽy9Mn޼XΪe2î>cʮ̰e۽SӔdTo<עc[
_ ن)5糞[_t<m(L;ޗs:h6|5iau2R.7dVxm}tkn41=_z0FZDEös%v#0 K~qmx\e
ƌifn_̵1b27qIYՂ#OX%bga.v$lNM:Ά;[4%>𑄏%\pQ'.	\ӛN@+9ӁR%t~3葀	A`6}% {olP[Tx<dv~2zmN&qo3=BKm[Ո3JzOaCһukMʠ
+qC}H
Πn6=lR
Up
N`L(8[ln$;lK6y63lfe+62 <1{l<1yFFd"fQ;t,}_T@%j]<)E]<biӠSdgHQiMhx%-eʴ:\тl$GđG7=G%~x֘*
bsA}.MMGt爌څ~jnCDTQ7^CFfjEk&ۂP%CY|1&),l/mgHej+ܞEEjy
ȗ#.*&=rJȧt! PKfK/  	  PK  C:U            4   org/bouncycastle/asn1/cms/EncryptedContentInfo.classU]sF=k;Q$PJIj(ql)D	-JkB"ᣱySE8Rj++4qi~ܕe;4꼜{ݵ߼ ҇^d6g̐p\ǿpXp-t]xn2is}U\Wl?1
u0ě^kn3ܟô1O(n7ny{b>3ںQp۬ƚABWUڴ̚_Ysg|ej/WeHGsYe<v8ǐ-65k!M*˭L58kM̳jgeȀW=T
=ɣ3.aH1	%KpBI	H8%S	&,D3
bNG0ekң۾QkTW'ĕ|>:ۉXn{3غA#5c&'̮tս npQ21[<s
 @FNAT!I)AL*pA,.)_
z\0+Q|+c%sܔqwd821'Sؼ	|G?Zs^~i=o I$DUZ +QiUSdG:6urm⨑]v}70Z:XWՒ;XzRI-`aU	_$w(LP"B=N"!!#QЩ|Li12O}̖
dJ.
u,oZ&4H
CcdB/''3gp1tJu_D<v{R2)Vu@
/iu;ŌD PKU?~  H	  PK  C:U            :   org/bouncycastle/asn1/cms/EncryptedContentInfoParser.classTO@~nV
LԉQ*M a	=fζE~cmf}_߾c!,'1\0L}͐8,[45Yw
ܬV,p?Y#Aq}0[v dWhZ2W55sa)bCmNjU5+nk`lZSS1,t\%?CTҩ6NIڎ]
;=?5 (cǛXˬ+?g^dn?43n;* \{NWݞm DQ&L
p]U d|I!r2 KRKBӁCv\E_\BO_9_ Q%|Ҽwh+	cx(!y	!0	Hm<0
Y8E떼nYD+"##b(BmKg@%)$Nob)B^d#`4~J%^
ͦb-tui!ם\-~w	xLG#Ȏ wӌ!|}ݒ%j8d
PK%>X    PK  C:U            -   org/bouncycastle/asn1/cms/EncryptedData.classUmSW~nnX"VbBإDT5j6|,ɚ],o֯8Scf:EgMxn:.9s}_ @85ui^ zlYJŪ8HhJ}U>[wҌm9dǶɲ̵#I֪9U4ݝ'fљvziwZiǩ:͛ZŶFj9joXgE欙ifMnO?dyҶC,ET6	38Y20D@d$/_6e'sOm3ҁ¬4
Ics
wI''6@u/
8.D	%z%$R`8wh2PTsBATR4v[3B;R+َUHB>(H CX[o]C664_:T*4kUN{ Yq.QUj}|#3+kyb2{zr7#k
)*NB"$$B"cLerNE.2dMR$䊂~亂䆂Ӹ`WL3`?)ƬQBЗ/2c1;er$[@!΅28ԅ!)
^!'K$n Yvq-E_FݴBB.x}?0q':
co Fqw4}6r[&CIxG{#A%Mfhg=]sEu;X^MK	"I$*:tU7}Fpk|ۈ0FB)^9.7_q;a@^Ool!]鼁^ǃ!aBPKxz  G	  PK  C:U            -   org/bouncycastle/asn1/cms/EnvelopedData.classVSw6Ub**Z%l""W,
mcA- -$k\awC^E{oo:S -3}3ts6(,03|;f_ ė#.	E]U1Нn鴀
)5gUG,[7
-}4pSUԓ%i؎jrzRyeKVљ==mF2=cEr
U{6Id56Lj"Dlݭg}F~RTթ7ˎ'"ʹ2q3oTj	6:=Cg:fZRR$%'gWuN))CT^ssG"}j&KU	dV
.jKMډ}0e͜UU@:si.j+%%}̝Iѧ˺Q."UDDl]D"v%En{_g
âjcFԓ8Dn/}h1"[^2>q*"XrU_ao/ie֮gj|*ǧ1_e>Y^iȼK8w_GVع`8MV,ֻ|p|2ߩ#zEofT-
P~ZX):z3|ͦ eᐌ8,# ሌqT>2DdlBg!FeCZ`S=2Iʐ,C4sgɨu0y^xU	(ʐa(a?^g&$@ZB'R}\_HC&%<	G/1F_4}/rԥ579h!vN#Y厔Dwc]ˠ/~Nè!_ ㊲h4*<f1ga+MYX?,3ɜd:\S"sY,ľB!'X,x\nmc:تo#XG$_)qW|[thtWM߻^ lD+$KDB[GY;Eb
Xl+n̸`ʀG9HhܡAM*5EFޚa|hԥFY!܌<SW<U2
fdX*[q3|Fkrs`1`Wx>vgy!^y80{Shk)=^@
=ʯcwQ`7#OTMg
H)<Ezͭ{7_>_}PK:(    PK  C:U            3   org/bouncycastle/asn1/cms/EnvelopedDataParser.classTmSW~nY\DKQZM6Еn
/esqO_AgJqv?㹛,6)f&ݜy,6\.>dz\``tĮ\~$pfܚquQ%ϭP<aApMȲRT|O
O*b%0@ϫ$j[p܆ۢ	ȶ5_.JU'8yޕF.\߲W˻huլ8q?YSyPօCoZ\7c]Md̺xTPyk<t"
*cT2$7[g=<&N툺e.yOwTC\T89[c[ekpJÐhPð4h80YIWv],RpLAO.nSM]I
%t>Hg>z|-u*յ7o\ҹ	<*=8^
h0
d11Ja@>W_e:frpU9%)q]nu|ERt\RqS>L`^[˗*-fhCV_e76T9dT+4Ui*tʗ4A:Cz|>cx{w~GĴ;iu4#}
w" SMh1%>	Sy݈ee1~(es+&#VUZ+{l/
,wd-~\j%Pnf}R8_ȍ6iT"D'FM7vdz-GWQWmk&_3ؿbPK(4f  e  PK  C:U            (   org/bouncycastle/asn1/cms/Evidence.classU[SP)ܼbD.%+EnBug|i&FۀS7^qF//>ЪMő>߾`฀`7ڇjFMt䚙-MpНd)vKOujػYSxjT6jv,otIǴ-7KԂjO-?M,Vwغ*'|jBP[I˺UJUNq
+{f3m牞/68637sc9grjZl3Ȧ%rG2EDEԋ8$Aa"D4h9wG$'O1*ݹ'oZs%(UǤu)Xo잲T.,*./oUTr|UϯL4{G,"!
9Y~c||0W8(Zq6茢]QHFFM7(j("8&6k!cKpEIK8kqNDQ67$M	3E'iu%o(epAUwpJxqs;B J߀Lb<icI+4(6frC
.fbg|wwжBdAD"ɂZd-֞}WuDϐ7}
;mLnaj>`]e/2DHmczI"VVb8W!<ᅏ VPQsW4b0ț-
;^!Z[PKaE    PK  C:U            -   org/bouncycastle/asn1/cms/GCMParameters.classT[Oa=K\RQZX.R!<-˦Y,[mD|GoPiMo2̶h M7;sM/ FT[;QWWf*S|6a6BÄi])8)Cd-C/mq}+aXضficr`am]MYmΓYm6-;e
F쥦kUSth-[m]#P$9?캶1R$	>l#mhNC}u(vΙVZ@Ѽ`8NƖ:uK
7E-m[8,f&m
{+Yu1gne8#⬈s"΋ ⢈Dt
Ph_x0SE:NRQ̬C{樒жPFҡU0'f5-`#,
v48
Ae\2ZfehQFT20$ÏuadЍ;w%8CDJÔ>fdЏܓH径ALЮNgiW?Ӟ/BBZ~4cLt6Pk~܀'ο,S
կPw+PV],,
EbHzERb%Gj].JH ,ajgKx{ԀL= \q
.HK~k5:j],QS`3s齜OXcrh1Ĉ~z5Ly
We<H+_a20i-2``%Xu ?1,sPKz]k'
  o  PK  C:U            7   org/bouncycastle/asn1/cms/GenericHybridParameters.classT]SQ~VUHʯ$CX1?,Ƙ,.帮.,O/L3}tя5#<x}{_E\TC):uSwVh0|&vfYԜ%+a)WcNi2btEvN0(2)F֊yf:C;eOlMZES=Rc0Y)QFj唬HֲskrcJ-ыIsNb/kd>=znS<s]8pnzIeN>6:;s,np0="|"qMuϯ"غSыh_cz)"W\ZjD~8	֪3
5i>RZHmzH)тRZ0U
>y7[^xB(qB]@` pz0{icC}2V>{ϕIaCk;AkTl.TF,|` X&]xxg,Hax#X%A~#MgI]8"@=:UH'X)qI(s$H&
pRۘI]S'RڥO/շ/^8vކ
3e,9xXp&\ƣZ.PKm_  ]  PK  C:U            5   org/bouncycastle/asn1/cms/IssuerAndSerialNumber.classURP]b +(wA.	(,ZuXmmuF(cg|r'		}ҳڗ{_ š>ƙ5_TCsZ3FTUĞ
zCj6fsgWS͘OO	-+bv!}iy'W4ԯR03I9ؘ\1\Jh$#ʠ;6nZcl8Cfky)Ffݏ-zrƗ	=u#M*&<$9Nj59+}+guSx4yVm<RkWNuv}E*GyQO(y^Tǯ"^Y<ꉫ6Bz Oˊya73czǢF=g2r?V/;МVX2b aT+t"7Щ{x Bzp13(C"|fE4!V"n!(L4<Ёif
Č.L	f`V 3\@"	g~P\naYklrEђ0Ӻ0H]􂩣/em ֭C_oh[_AoR:JJ\6n?BRd
!}RKRGx})1:ٰ,#V@M>xx|́^#w$ƨ39VbM1'Hwx@b?yFl!]`:go~`l]=nǈ=t~dC/L1+IxisPKŬv  u  PK  C:U            -   org/bouncycastle/asn1/cms/KEKIdentifier.classUmSU~&-kKP[l4Zm-}1F(MDCnӅɆ~_pDg$ǎ/ors6K8;{=>ݿ 7P
"D_$H@$7c4{
`hó3)M7-㹡=8v0S4(nį)A0[SR@鴽MYS%i^:;ЅU]Vڂ!}ʆ/(f>ؿr*RHu:󣪗,hP,tʆ}-bT_J*qb&|bTRf@72%']pg>k.ҭ&sJBg\Z4=􈭑SusbvIy^r2+&Uu26bp^	$=,`X;qI&(0,rmd?νռ:pde|0r|/jV;N0D@:~"hc7ǳukjUoNkWcK'n\2J>k;=^w3pκEqgl%vN?] c	ↄ+DIg`%J8pKB?> 6,KFRB&YL	!,H"x""yQ̲xbQ9i1/Y<e8Hb񍈏TQ]ORԵGJ)7#^f^)T( i`HCgcu;ɣ;Xv
SΡ_lW^MDeznIO׈m_{-lX'[ޕcC[=
:Hr ]ReCQ=փęY]Ea&ʐ)\0i
D5{Hl||}
$ױ$f[Ê\w5<Y
skQ':Ȏo5yxЋ;m6WqN;ՀC46ݬ.5eG]&\ORPKڛ  /
  PK  C:U            0   org/bouncycastle/asn1/cms/KEKRecipientInfo.classURP]WBE x*bC
ȳ__8OMkt>?~~
`4yx
S<4aQR+k6+f؆hٓiofL	h[6؆eVJVٰ߬E3KLS \![޶S%uzgVWU5 UVXnڴY?ǵ(+e,	wɹߜ}f&3"3mc@Ӎ5isט~ZQgƪaL\w7*q\	'EqZm"
e#m 3k0uK%q	^ˡoT߁u
A.~-?@n}f q:>cЗ#%m]SW4q$?3A}k+zxfM`.0I|'a.`>{ ?YOeGf\q2!.#M2ZT-pa"F8J1)	/2Iq&%tN<!	>2=5}6 DIpNHMQ4p@O}GbRìi\afi%ҳһO;ת^m
M
;ɦ-<ES6sdY:fs.ΐ(Ƌj2Qo}DXUbes5BʝOEV>#]ZA:0 KmK1o^;TkxMr[1Ŭ(a/PK30Q  	  PK  C:U            ;   org/bouncycastle/asn1/cms/KeyAgreeRecipientIdentifier.classUmSU~.	llMV)4aY-B
`5hu6uݺٍ
c?CW02~G98s=99_`0(IxO`X-鼳cV5&fMOMYt|֒ލ$t1S+h54|éHj4:բ,.4ke	(*5"I
hVJ 12ᘙ $o4g6kaǊ=&mȊ/pXT=1o7-9%]̔ݦSyX1-3FÙd\+C9?N)ۙ+$ߔCoӽgy޼J	RE\;8Oy|%[;ԈLAK

*8`D

^[?e}lzgLF~r$= q_J|HpnCΩUl.9EùG-p~mXLڈZ,KXqZ(XYUZ$kg[A?ABƫf4
]
QD4(ՠM
1Dq-
maA5İ6uwHò	*^-IÇ*&yMӸ
V>V*C!"O+nD)F;F}wocRItSAz5e q}|[{0z@tJ)T	R鏑j.H=|AES TѮ^=|vkJH:;"hHk!D#IzQTƃlzE}ttsfBO`	b9:AW0{4@=zb6>*KtpuTR"
PKJҁp    PK  C:U            5   org/bouncycastle/asn1/cms/KeyAgreeRecipientInfo.classVmSW~n\\Che(-mD%aC7SwAaLGld05y{vٗ? bK 
D'8qӲ-wF.'pʔn./Z;7>K2&\.^9iن[p<ev,iU{#_E^=*JVm.t,#/tGo'x1];5n^ƍ=OL3r,Iە$Π?+O`$ur*D?/%ؕ3')s>/7dF7}[8u!a:Rֻ7
W-}NomXYn
LqzzÆ44}t>mݢYPq+xOA
(x_
z*S𡂏.,u(fXM='p (M&}L4%j[D~PZ&6y-mZ1тRne<fga"h cAuy\U_oe_ˀ/%,ɴ״Mcψ
یW<wOc$\#?OfAA2w_2
7(>A,\c\Qt!E!Qt`0\fn2be͐8	
w2|bIC<RqU>*F@U2[bHǊ
N!Gokd~G
q}t*JH"j* *wW~tΕm	z~2z_*/G!|K
/%*Nˑ!Lr+<Gs!qc^`4?˯mMԆϫIR!b2[<6;KhktAK0ʐ磛dy8C=ta (tM}
-ԏkj7Z35-k5Y|VUoS\2Yq/$vt$9
=~W>drFӱ27mPKG,I  +  PK  C:U            5   org/bouncycastle/asn1/cms/KeyTransRecipientInfo.classV]SF=
R'-Pr@@!%!u6QLQW	HDVJg
΄L6w%$3^ps=wy`UT._aHJ[:<ZAn"v2u,}rVJn#\[0-suw?"Í' քl;
J52cG*oP2*_77箽k[`SVÝ2SjƦP)/%7uYuH43$@@w:5,=AAV.j
KkGdfg06}13:6e3MݕORC'xrG|g	wv#tq|ő8qko89axݛcK@}B
b1PmRroh=P>͉cA[&T^>%b۝	
uN)9]V$Fnc[76J*,Op/U-RU>ic^|EAN9u#
&M4)
:qUNuǤMŌ4פއ,nJ4sp	5⎆q[e$͒aaaЯW޷,1@JTzz
^nf6O3xX8{\y~~\l>LM>X1Q ;IE#111t&q"R4feA:wY4~$y;WdBOK}٘nA=kCv!U5~me2413%/po/,@0!
V.tK||ӇTMܗ~9+/?pZąPKde  <	  PK  C:U            (   org/bouncycastle/asn1/cms/MetaData.classV[SFd%II
&N\ڤ!q	BCkC/["L_З%tLK:mJ- Ռg~|{?\3~)eR9ݷ4]3ШR(py%r-|x3|JyE)[ᦒlܦ7&337ʢj*pЊY"ІRX&UJ+Utkte&Q)sƶWfI+U}:\Yk%U9D1sz((J$FØ;j';⎲p>V-	AL:ZsZrrQ@M>JU\'MM58doyi"+ZY3*Agyx{<8}<.H/V'8Lxbnخ¦\oğ[8txMHtK=kvd^j+`JʢUJodc-~J^ko+~xv^vz6w?z8edk)3mh)Cۄ9M1Nt#B?{ёYqE+"xE|EY/ "iEpUD71fnpO$3wayf3@%|LZR8y,`DefVL)|%@C< cI@_
==¬UQZ1Ee+r>1کc[-`$8kN$wQ{^!/Gc{X/!+a7&-1}-nGQ4x}٠B#rD ZKNKR~10: uɏ\A|خ2k<6#0G1㬐|?Xễ;27ef7k뎻N"h
M*1cFD ,W[C9EE9F+B9c!D䌝YM<+Y8uCw^$yMoAy^b RƖ@נEѮ~qN܇'LPK):  H  PK  C:U            9   org/bouncycastle/asn1/cms/OriginatorIdentifierOrKey.classVkSe~6@ZjR lIHQKfMn6f~gh8&6b539{>9~u|ՉNt	EST?21'=1ˎ۷\W1;J궱|xE+L[k֊uG02CycįJЙyC))6)2jmT5yU.W4k̥5KWJ!YDZV
"m%fe<ɔ8XZ7S䗋t#l)1C117+MK0bZJ(Z֋&l^44mK7sqpǲŊnJ6R6rbqQ{CMS֒e#- ܯzjT7.=hαzy-QNƩr-s4^,TF9
Enêt[ߢfuzsEq^k"^qAĐ"qIDXeWDJ[:苌/V q+c?]89:iH聹;ERVM &=I=\
-0ajU\ZW9v`'1T0;|U!/y<{zjb>f_5އ9D?|AquAN,D`A=x7"g1b!	AtYX|ԅ$H"HKǪwYc.aװ,!%HH`M$6$",2,KA)27_3=wdibk:NۊRZg.DӷQtMUkx$G?ܤ`z}Le4.%t8>sa7|+z]t QG$+Ԡ"BCnA88vuZ:HVI|b;#w;H*Dy=6Ui,PrN35m(.H1;';
tng*е]n=w{m*`^`*jB/}wݦ6RwnqڋYgm\lPK]%ƘGgjV
PK'm    PK  C:U            .   org/bouncycastle/asn1/cms/OriginatorInfo.classUSU6	dPTJIP`Fm*(jjH*hЪvgkd>3Bgڄ13ھ.$8:߽~$Og sF!FVs	(9N]l˝0Uf&,;Q[ekSٷ+	g$*IbZJ*aӤO7nz4ŕ<<u5נH?ErvlWCw(V556ӹZ0Znnmnlc> ܺe[VjL;u3]ql+]k5#5tT]uUjUu8FݜL)_lYFHd<4{ՒזVM9tѻkX_ruukroψ1$⬈aϊxN"FZ0L~iRGz,\2mS8M{Ԟ\TUs=/?5oÔҭ}3j<dWM,|5eW	PYQ1
7i69/9Y#21-Cf8saq*R2$xdpci^윌8^exdJÂd2,2$$Òqξykޓ"&I#a
oK$.2}-:U9]r5ems?A ?:7Qu
F(1z: {E#gb(tPm|
7Q~&ns@:Tx{6
mH[x@hbu(5_=`^i1WK'EO3$B\~Doq%8SGv.o\(sw쨏oC)Xoagz!9NJpFVS.G1opm$}-̳cژ*üj&x~<+?d9'=ؓ0PKL  	  PK  C:U            3   org/bouncycastle/asn1/cms/OriginatorPublicKey.classTmOP=e8Q&]+ 8D7B!~Zí)L-.1(s2|bw{424ʑ-&y*ke["j,CP˙eLI[ij
w1t'ԍLҟ|T3}[?Ե3ThOԋ[gL"i0u))ݾQ
CZ^ySlaЗtn4~1G-˴lrlby|YvזA!'(XcZH\p]@;ڿ3LDsU"]U\/EmyYx#,۔/ոnN^45٦xk-1k}S3M#n_q
a| l.+D]z	7+%4qh(!>	ZpQ P8DEt`ÄN>i݈H)3"n]K,]/m)G>6 1:nū>QVHae
TJsJc#PURz!v>x2,DϧɂԠ:A?2G5ʨG&gF_() VxTBq
!_=9S0ӳg71MǼΆ*HJ_r<uj=h	O\-~PKg    PK  C:U            1   org/bouncycastle/asn1/cms/OtherKeyAttribute.class]OAߡK
(UP*~UTFhb,!v֥e프⿨Pc7^gv`MΙ3̯߾&C@M2Ղp᧶cgרVj/8mn8 uŠM
>]ٳLR}EgL٪f1Mn/n9fjT.UhRvRZՋmpe8bΘm}Zؕ':ʛb7-{%aJ"aZ	Q	WVcK!5aĘU:ѱ@q2cy	T\=wl];4jq80tLnSMK9P 㦂 0
& [bz[e!#02f.LBd\*LJ<4$ϛU%nWƇ2V(8G};"
CDz/i?I>be+˺D0<!$QEb
kZY-8ƃ\;BFKi|g*/gѭ D%,y!/}AXN33xPz1)i}̗=lxPK 1=    PK  C:U            2   org/bouncycastle/asn1/cms/OtherRecipientInfo.classTQOP6
8a
0nN 8%,ohVH)L-}e<w-3mv1Ms9??BZ/-
G2oaoҬV.0;c6lԙ33NDk4?B^Qu:4c]kUj
3ۦn*+UЛ"@%Sfm½ykXNzj~;L7jm1,jU7F6"h[|u#&bT$bL,b\%KYZ|lW"Q鞩%<QSb
;=o3/x;B?_9xnHv_;ԪfVTGf}j% ׯV+ƣ~aHiЖqWeqM!Øu>aAF a84V8D$LB0+P%L#.ܑpVxw/Z,CQRm2$+YZE9
*M<TbH)S~!K\u3<jac~;1TѲ3ޞ改[<P\Jw
Q"t|G&<4$_ļ0A+OH9Ѓ.˫.'ܲ,q3<v9fJ&6XPK
>W    PK  C:U            9   org/bouncycastle/asn1/cms/OtherRevocationInfoFormat.classTaOA}K
UP^[Q4Ak'RNۃğDh#/~GgJk%ovw޼폟 (`!ɮ13Ei:,r锗JEE{aHNu޾r%Lw|YZ16]|o-^ӋƶX#Se92vMKnWx鎞Nz?cԌZTŞcrrmќwt΋c֞PХ@UЭ@SPp!!?CL6p!25QT$?A@X-W!ρj"7Qfiqc×mڙ%e1Z啊(/#*[H&7"W]<.iIhЉ!
q\+F4(pMu	.0!!I}Ȫ CE?rnJV1*$ܢS%r3vUFGOr}*טi7D1Iz } BqYA;Ľf$?u3.bLj`&%P
[doH}@};GH
ܯ>q4qjkzJv
<ŝ?vj
;Bz{rRw͓=z9? PKS~    PK  C:U            5   org/bouncycastle/asn1/cms/PasswordRecipientInfo.classVSg= KhZR$U,Z@"H(mNg٬*Jc_513п&Lvy8w=ߗ^0әU=l3saٖwz$@6m҂+ Y6Coћ]t05]kG,Ǟ,;s4ODUӭG!z(qܲ<]CxWImpoNI4WS+`8=lg(,`4bxW\.	̟&^'Yj}5X3:󌭊W*8ni4m˴i+~:q]kO#["}LzZ[g9q9eI'EEqFYD|  1M`1bN0üSInI~`Ԯ|۔ZkxW͓,l\&wx"b>jFd-L>ѵtk]֚Wd:v;~Mu8fB+Y[،냣P]2bTF.81'z 02!-^**&W>ebR4
	0#a$|/%|J	#-Q,>7YSO7ir/Nx"E	I+
5,a^QW.aEPRP},FGR?>RWzqP5S{i]Ge>?w >m	O"/"&"%43d$:V;fT@"+_GFTQPwU $=˴KMSYW`3εRtqCz> NCo70PkSs,^H1U
 .Pl`AFFC PK9ۨ  
  PK  C:U            5   org/bouncycastle/asn1/cms/RecipientEncryptedKey.classTNA=CbE@mȊRA"C		Ɨew,ۅO/j"~vt%ɽ3sϽsٙ SXd$Spmc&prs1,.]Z颕e;N1w:[ᆛud0/Xv1rM/:Z6vvț.ߤ<ac!n-؎0ܣ=Rzi&Sc5&k8_熽oS҂jܼ`ٮ}%tJP$tI&!&ẄnjS1<
@6NI:$!>m
(DSaR0Mbkz
XB=hFMv,$WwC]Kސ0j1[7r2[bw|>+hm2DiQЁ;
!aF0c<&с8R¨2z0.̄^eCa&y,[x"0S/Mzrn|zo
sB"午!yFDYQjj:rg,cZMGi|cdB:kO
Ӛ:P|/K5HL	?vSķ
xQb"(	q
S V&H0jdv[0]m['9%=EVkʴs3Oѿ.y5PKc{  J  PK  C:U            3   org/bouncycastle/asn1/cms/RecipientIdentifier.classT[SPBP51"xQ(Uܤ4փiiRFRQ{HAhvg~g_}0 ]P?lM
-LVY0
/i3m/$^33 LGLƴ)ӋZ
#7NP#_mm n^OW8z*e۴oꚥ)͏SF|%ST.Mc31\&-e
(C	/tYI3+ dSںz=M%GoVlIY5_U(gz%iU.fYylTfxJڙQv2HZusfvN&,ӭ\z7oƂ.s)"9Eq^DfDDh&]D".Q5gq-?Ch68?BS<T3h8%iP-yбJԊ]<6|RAE):<}kՊ<"NW.G@?021(52D2$ɸM-ssMe7dcTFƸ w%\	Ѕqqn%m/PB317SGjNs	O7e>vB5E.^"$2	URU 	9&ݜRb`5*`y䔀
s>_uCI}([{PGдe8[zXP_+e~^- BƳm<!oxUP(D[_P+\PP>?e13F({{`.,PvrRJ!qW$IPKK    PK  C:U            -   org/bouncycastle/asn1/cms/RecipientInfo.classVWd ئNGactX),Ӑh.Iym~__xO^B9>{>i0:ÈrDw"`[< ET#!XFm<IcPj#AxbMY9'kf	1ZnJwn'6s]6A56r<#Z~hIf2&gF,-U
'9ǍZudG=tZZUJ{4XLZ8DLK/yCRdɨq6z#c+ζ}2$a(fZ^2*i8vF}!6VeP:3q?Nqj9P|5Yz.9K6+{L9+U}i
Jq蘬Ӗ}
cõfFt+эȲ85#k<y
<^:7x\&x\#£G;<nR'aѮ'-Ǭ%d-B'K'EUAY؎Szc d4Z%WM߈WV>[in~v*߉wݺ^fTӪ|	2\o5PusF~zA}!qݷRCg<.c9Kp_%x<"^E-B"pODL/#":0ʖc"HHD=ƙ`1LLa 	)1&nc^@7fgz^fs>-
xOB  ˴X.l9@>cz{4K4{Xͱ o
V"<> -> aH_v1Lô"b]S`+kUVe3UG0&n]'wѸ3iRjݩ"V2RzˤVҥd`ShSrF0+
i{"V#;F !twC`,|ΎD kY,`XȒK5F;<tCeЄZ[}aۏ^y!^ v~	7\%%ޮ,gC.FFLu3m.܅ƴ#5J'`BJX_
wPK}    PK  C:U            6   org/bouncycastle/asn1/cms/RecipientKeyIdentifier.classVsU=6fm" %M7PR4utSMG_POa63MzfK;8ff{oy{7y篿Q@Ol:547]5-Ӿ& 6ՒGV0
˾k<IԚߚFNu6E^pzK[U[4w)<64;eQ!mWB׹gjZDT2j)U)	flf0]rҞhj.	j&RVBX#r{۰
e$+m$D)+*R޸CpZX\9uO֫_F{?Xf*V;o.ssݴMCİD1"m"D#⸈wIґ˓0>!g< Xli,q[t%z$ ^<}31?6jت)_^%p(:z^~ -].0tdlYUECw	1Յ/Cޅ]sou??x?d0%c1'0-$2áC"CF\F?.pìa>pgw%(r5	qSB)&pGBH8açJ8&qKy,Ir=οY٪=uc'"+Ѓ F 鴔%4^jG֔6(3>=q¹|/=E$@mi#죋ّ<mAω6/~qVN8E=w&aDqM|FZpYWj[8!i+?wv}""C'Cd >rUfVRƛx؄Zw2#,:B9Ѻ-DJ.6%a!2,]o%\0ٝ{ӧ(t}pR*ӽ 3afi$Ѿ ""<
PKIc  
  PK  C:U            0   org/bouncycastle/asn1/cms/RsaKemParameters.classT]SV=(
	A[nPh:M1`Z'tx/BAR!ySi0SQI$3^jg޻o<~GC$5q!)n1=+d<n,gc}c"\r?6Gɼ\fb{%0F޺x"KVk^IY7[yEIf$C?y;ܭD9?=ʹ	ZEx2{T/Zbכ
֒c<)l0t=pp^8SeW+,^f-y62ud8f,ӚF
O5<Z+sٙST*_-"2Lw&-<2ܯtΞ&VWTdH897ڡ=
>pUðkk0|;I3/$[PicdXZX爒L4JBD:}!jk͚	Sn]EZ1߭JSs.Tχɇ4޿ާMt~9/y6"%R;}#$r	01gcQ00eMӀrP0m
 _븉otC@w:&V%wp_G<Rc:	dt|2}ȃKjdêyzVwW@|`άc#u_10T[xf*|~|FY;C`o1
qZhү #;a/7FC
ċ)Q8fgbQ:dg
wH!BjLNn|=XmU\;VaSwq|/d
.֑˧	R
LURyr,nIPKłSN    PK  C:U            *   org/bouncycastle/asn1/cms/SCVPReqRes.classU]OQ=,GE*
,hHbKH۶]"bSD(MF~ 6ܽwΜ9c^8MY=k.ҪNg4sMϛʳwm-e.2bڧ}-o]1-gy\&4甚7wקBSzHmh=K`Aj&lCWVcd\6n>1tSI=.\'I<)Wӕ1
nb=͚MBYB	7%x$t
G*',ݶ_$Zk<oXz%	3gfP&G5P_J`Ћ'M_m2VOK'}ߨrM<d,Fō<fͰe3f
>Lb#=x(6Blfd≌>Lǔ;xLa鹍iqSM}|ma9{]nF2iKOZ6Mr
!\O
<%	X)!^uRb~*In%O{a>	"GUNks_U樭}D_LEO"hN?T(p
K%0p 좑5hUaPquUݷH;JLM1e3x%'|p	h,/,b\UoIPK \  P  PK  C:U            *   org/bouncycastle/asn1/cms/SignedData.classW_T>fy!3DM hEuRġ!51G7d-}nvIm3ȴv1ҽMO?Cs{̀{==s7=<m>Vac@`~	 /#cfzXw;{SF2"Mfª7pbȴPy sx~~A	m#
u3X;0E2HQ#||o"VecZHNEf"<1)kw<HƬ'؆DxjHnQj?E\se%V
	I1'*K;Ͱ>>3
̔aThՉEM#ɦ|\ўm8Uz;4:	
̖$C:0p׌.ÌZG%;-q݌q#w'Cy*lZ"hӢ=CxT#4CV,iRn0Sdef$|:Ѣ--=[0>VE\[6@m
)k"[dD̊
SA
Ҹu(Q#R8@:졛3٪6b}Q[mW]m$|"]Tѽr_q;qU"R/dt._jZ>c%WON*+1k|V¾
Iң|wؾ?.0M2el"cdlMƃ2Ze<$cWhCN]2^#c7
mׂ7eVAkJLņ":F+6v~K2a?V'mDzx.ZC`ƛ~ЄzJr1Tnvm(05bڐ?72-\uq%e]hrc@sǪyA)1!5̝ŵczNF#N=Uѿp	waŗ疻_9|T
\7/.4,(}*RuXPPͰ*jpDaUnF
*4+WGUET,qW'Xf2$T4`PZ<b5R,T0{RqN3oax+*Vx#>T]fx{~0|a(>`?F<O20|A|K
zY1<l܇)8/2
	o)x_Qp_V$a^4WP_gYaax)0}Zzx>˟8TZ'qRAZ-2OAq4vZ ߡw9ZA+QNx$Y"X]|Udc 96#eB_[*+'axj9\״,~w=9~YqW114{3	0s^ksU#co&5R*^qz\^Wj5]AF[
^0}^5ů\Cq_OgPnX-Q%3[=5,ɣ790|Zވ\ɿxG _X'˙Y09Y\wxq8]]X2ISd$i/l%DMUB9)|j%ӥ}rhMNuM"qo?}6=7٩DTnk(4uwN1̽/uk?ۋ!p4az
)<Sy̓@%<w_En<#WS+619dϋk?Jc{Az~J:ƺ<x,*BgBҸ-I,,B=Ƀ/:2Ohe\qƗ؉yKApQce<NeKoSVI:mZJ硠ٌ8/}/<+89:_P+̫/W=QPw"A-z)`ڛõF>Dgzšyu97y
\,Ncɞl.\,^vv]i_`
qQM(rQ(vjOsy&rV{2k}A9.qH(D\E%{:<\?PK&    PK  C:U            0   org/bouncycastle/asn1/cms/SignedDataParser.classURV=
2B0$$m>Lh[i&᫭iMH"_H$R(S3e_+^a?vWGݽ{u`A&KDE	OpJA]ֹ:,i	˺z2;u/;Gn;eIw'HX5trGP	q"03q	XcNش
fX
JUlFP0!}&I#w,l],SrrM5Dht\fHcmRt1-x\!`fUls,C#V<1;=4LTc1RÞc(چ2inKL|2uYg9K'(uFpn-u9َлшJ5|_VϢQezlīfUfkғeer('qצ!N)!͕*6g u4 	׷
[޻0sӏ2>2nȸ){eܖ'3w(q%)"rW$<u>EH-*D>+VEwߐW@󛫜ZReyjEyX4y@?VE_PPE+TьkhRщG*QaDE_OUsh\E&[ _0
慂^)ǌfZ1+̼!ൂSh\+]+$'&4CJn-2}cqA/-&D;DoF=O{A1EH_h#wZ t8:,}1!+ZE@Ql$5	YEt[QFھR>>=.~b;Xb{; ,
;^**K;ɋ߰X=cMzI&cɣ5v"
*5v:]7&JzatP6jʼTcOj*+w T1GTDM{X!s2ܛ$bj C)S*)Rw$Q|b&"_8Kw^(RҮRPȽ-W$y)l(ťPKf{G  	  PK  C:U            0   org/bouncycastle/asn1/cms/SignerIdentifier.classT[SPB4HxTJZ&eL&I}W|3JUfT^|G9i#B;ݳwvݳɟ @&!iUɮsh6ma mYZ1gcSi2an:۾խ-rT@n[mWmMnQ͑Wg2魪۲nچD ks8Nӷ|ӱ9VHK%*PwMۘ͛VVw9P6TϷtE츒,Ɠo	NIٚU7,f*kP4_j&\v͜۔p:3ΥVyZSҞ݄让Zk\c}\2fxhqGGv<:yt22&BۏwH'Q6D?_:YZOR
98^V
Fzեcc<Yhã7^-0sXDppJD#"Q',Bnfq("`yqfnhmMh⁀L	zqIfض0-Љ<ff&i}CМU킺&0NWǤ'$}INh"ˣ_a%Zi+q0
1?#`}hݔo/HwвiE,1
4Pba=k{]+iEZœ]̑gE~ToGQڊieg$11(+1NE1FwW(0pvKW~Дr|aC PKJ
  $  PK  C:U            *   org/bouncycastle/asn1/cms/SignerInfo.classW[WWN82
x7 V*i
jEi!0b]_ZвVǮ}f&1`f WWZ|{;䏿1`Rb
	S{0
,9LaZ46Ҫel2&g3>saO0aL[nFάpD5wVv=v9]bE=ɪ)Ě,42j5F'M9ji0t^5}(iV>HҒYmb䯨QLj"z"j%Ӛ)ɕ°ݙ*F64o.m/C<g\LJy;%ԼٕEeɬ6FrC?7eښg?$p %mSJNj7SA$JvPu`*Q>5 SM>$ΆRgVQinjV*#Z!#rGwN2n8oP/F휨%˘1lcTq>6x
ܿ08vs̱c/>f-8r8qm8@b60eèVqwIKcw,M7޵to>Ub
n(p&9x or0Ͻ-1ݓ>9n{7^S\].CϦ	7~sSA9Z<G_Mjlu/lu=BǶWݯIцWdH8'c@" Welyujd4"$cDd4aPF2j{]eDqI[.pEX1.`B|(ind$#	qM@V	0%u	aHŔ3(ʴQN9ˈ%ʷjzx#$CW!QRUKrl7
:VqEᢸJa0G_!ǈ\YƧKz-U9+z
&n5';,v|Feh_Eܼ3!C^ĬQD^i14a)ME?6#{99p81 !xBzB.=e|g2XN_IN}yD5ɓɈ+exn,+G7GbprJC/㎐WAw\v~N,b٪]B	&qvu#A
GRv^$+ZF7KF%w=F%Uܳ%JUWϕ۪K8Q"{}]
|	mbpK؂gg
ضpX2/"F.oۖpU_jPK,Y8    PK  C:U            $   org/bouncycastle/asn1/cms/Time.classUSW-yܰ"QE|!HS[j,璬qqw]?ttδG՞!!${~8
53Zr|^34ar% URѴ̸l)y5GH1M6MfSiz<4fed;.-.)iAxaU_55PiT={:Be9z6_C4Mh![)5q7-m Y]-%tհ:h%`{#tj{RZrO4+v-xXT-LiYSm	`1
Q+iٴ4%.ѱb5%JJzWʁ֔5Z2:Ԛ5/gJn_k1GU9g|f7@Եh{S93w uu4Svhln2vj*t1FT=rCN[Fa<XFđѹBLfr23M06;zv2bͰa/CCa~1f2%lL7<B{֡	GۢS-66ZU[{#Ʃq+)nȃ(Y%ml`\FtпA@sޱ΅LGz*EN,o4	CS$\M77[ss	1%	,A\_ ⪄v\u	Aڑk"^"}""ss7D7DDSxEnt''MC0#QEpK8榈	ynиcB_9?//j
(?xahA,
y=4q4V§*ec3d	RT[86;nJ,ߒ
BxhcH2aW܀??E'$LTW{CGJxS2VK_;!L	N{{VG(}Ac@	[cLzIg|_	wr]<3	T`UW/Ѹ^ﬣHpMC5ɽF;^ߚfjk5h5ӼkVrl~)W}cC=A_H|$S䏗Fjٺ	yh%
#_凷
GwM~F<
||FJlՙZ0Mڹ!n~wg
Im#Tw:vDʅgNFfQ#8Y]>PK#
    PK  C:U            /   org/bouncycastle/asn1/cms/TimeStampAndCRL.classoOPƟ?)lRP'@HxY)l-nw~#}?Qmǈl%&Osz_}0E`<5P|I-Ӧe:3R]1t^rM3C-.YeGlls^V"_q-]6=`e5lica_vϟ0w{u_X>c3Femei\=Ռw6gONi
͏#✪0D[$dM	IJ.CB'PR>d3Gǩ+|N\RhK^W'-wj&|5G}}]+֖u|i0p1+>ޤ0w+{
ZЫ"ȸ >1၂DFCRa]DэXQe;	~*.ז|ąݵSv+}wU4 	烈e.ޑS% )fiVV41̠s&1k/(F!b;DMs4O>UXE=Au3Ud*R%AAP_1YqM3Y=kDPFTjZct%\'hMѳbo+oIT_PK~    PK  C:U            6   org/bouncycastle/asn1/cms/TimeStampTokenEvidence.classUMSP=)|[M+jҎ3mk+nJэ3D[t漛=&&a$@0=(d}Z*r9m-i-ԧu;jmL],,I;POY9=ѳ3Mڪf43ehqR+Q#JViaTNK֊\Kjy;ZTӃ3i~Z9enIC_eJ\;g-Op*Jfjq[.>	kI7#FTޛ7dŽ-NJV8Y"DqHa}ehc;+9I_?GH
vmE-pVޱ(gA5JWD:O*.G@5
%2)q=_Mۧg˥N)>+^BLy{s]WyQ*ۣVhQz<h@	d8ϝpJNsQG>1$$t,0,g80ᲄ\pW$6*zt`9zIMX)z ɥ)m9T/~(B8KWР㺢1^Ξ]5;<{%
ׄPC:CopA鷸m@S]"b[_^:ㄭlxEEt3ߠ۪sa>[E52RI
G3)/(иRDtSVn6R܆oMӄ+&
i./z0Ig
	a!YDzy']9ups:&cX?Dț[_73G#Q;to$?PKj/d  E  PK  C:U            /   org/bouncycastle/asn1/cms/TimeStampedData.classV[SVdI IKK0L6MRRNK%ńЛUW`VCg+1StK:mw% XG3ߞ~9gXQeM@ :,6-ӾKF- 6,VMRְgY[u!筒Yj1Ֆ7ݞ0iezZ.kf;o*b6Yxf?ZqdMgRKIK/d͜FEcb,*4kPnVx=/e|-MN+MN@sɕڐ|)liugҪ7R12..Q̛Ko]X2"E ⢈K"Aoxz$4p/;KbMzZFE6Vo .D-mW4+o|Rշ|t8=RmlS;"rԫQ#8LFhm<Z嗀m0=diP$'&Ml!WBӶַ]z.DKumi.]OKgԜI'tNx1g0%cWdU>0zOFe3ܐB6>Y9$O$caI>c\(2HO%!%a&,!	x,!5B=_B.wi)f#GCзUZ(B1AbZ|GRɎ&8@	IF=$#jjioxxN^)#Xp"QjO swbCadjl'ؾ5Kk$>[蜋c:w	
PD LT?!%$(U(iF[pKB](M*!9%ocqȞzsWIvd.4D+<'ɑ{sf)捺9맘uY:ż^7kmꊏr`_,Ĉ _r2/尺QS7\5]SӤ\'YD:V%pPKA   6  PK  C:U            5   org/bouncycastle/asn1/cms/TimeStampedDataParser.classUWdv4꼰%
vNtZP͐vamҥ ~O>o \& ⅄Xr<e	-H`c{H$Mf̄&]5m{@HH\.H yʎk3V..
^˲݊d>nlم&/{>Ϸ
/sM%{ߵ
Y*]:T5g60WQ'd6V(8g4N,^8EíQXhd7d*zcKƲ%sQ*vAv絼%#\tYda7C? Y!a7dx.ciZ~WBMDZ6Kx5bpN[!`r|qW}%[0\$#1nБyf}v!lDh1mob(Fzy{>o4'<ICz͜0ЏMZ)<&wpU )腤 ݸ.
zpS`EqGAwdFL:>sA|!ȗʸy0'c,H+AbIEFF
%ħIMyR
gQ^w*))Љ4Ib>}Ns9M4]$QDKk Ww񭚪ⱚzWU<s>ƶЯj`Vڰ^	2U58
UmU<zI$E_&Ơ3
=+N45NQub}[֔0ILqt7,4=/

w߁+2|dD՟#>Q"vQhB?1hvpr>
ҟ	ҟہ[v[OCw'҇ne_'.ܣ~FTkzVkJS>4)PK!>5  Z
  PK
    "D:U               org/bouncycastle/asn1/cms/ecc/PK  C:U            4   org/bouncycastle/asn1/cms/ecc/ECCCMSSharedInfo.classU]Sg~|-YbiP1 jA m_f+a&GH-Tif:zㅿS{n䣺h{y9yϻy Od*@$ZbU426Ɩ+mB
cGL۵9C욫ۆVq2\ӭ	Hk榯H9ղmckn=e
7fl)s"8US\?P
.U.	̟W"fug%=HO9v^LflpW%LT-zy2}oU2ժIGYku;Ukrcޕ#=	K8.	'$|(#	'F+lR Is77@Dw5;0y@qgJi$3;_s";b_:_Щ:i{nmb2Ok.kmy'NzD>D1A¬:D?Lg1t#BwCTPđf09MO33L0\#.5)Sp]iL2ddJ >1iC`!',:% -6o,#ua詇>@?#V	!{Rm`^M?Ŭ:OqC=5m idOj
BܝCd}AxM|G6
x3&qBԛ^"FI|#1^<Bu]q+M,5˔6edH.[t(Mn`yKl$tiGX>s[-c
̧0927^7P1naȞiH}[,v7iğh7PK7    PK  C:U            9   org/bouncycastle/asn1/cms/ecc/MQVuserKeyingMaterial.classU]sD=k;*Mk%[n+҆RH)PSIpEU#KA;S_a<]#LqZ9^ݕ ,a;	)$C<-Őp#^ᨻͪcSMu@rm:C̿kr#ڮ>7ZWzߪ!7hQ1$	ySg}>c8m ?hV`F`uwV}LaõppA7n`{.^gp|bUo3ܮ+CzxP|۵(h^IeZudơXDd9udYokmٮA8nDi
^5Ka@AMfݷv`?H8+aJ9	%$.
	oJxa4R}fDD*S:l	Cl],#.L6nMa!PՄ!~~GGO%ǈ"[GڰbXr=
D+Dp8B
NcAۈ+81*&9W
^â'8Ҹ%i,x+2T|(
2搗1Od\g2	|*sʭx5MY5v76,-8F'^Q&4J/~M<tZ?1kߵ3+pg"PN$KHK$QBqѸ`-)1=IǺ%9pN%s&xpb/)Xh0N|g
sƵml>!(7{%8Hjϑ^`tEka[l`@L	S8KP~Ak	p\
w0]k~)'tP8`YtJaLIU/PK^D  \	  PK
    "D:U               org/bouncycastle/asn1/crmf/PK  C:U            6   org/bouncycastle/asn1/crmf/AttributeTypeAndValue.classTkOQ=,,gyRDE&bBXҤۥY,[,$EMqR6{ܙsf_XSP<Ƿn8#y,ʶrZz]ܳ-
vhYSFZwc<0ݴͽJoVd+v
TkWc. [%ەήcS٫9}nkz7f3ƪY)kN.muKr75gߑe{6#(W*P)T0$0`VTC x|{<2閍u~Dq
)Իn,:(Ѵ]Mb4K撀etS~!Hg4㺆k!ͤ^m^Na3!a͢$ؤT"bq$,=pKlzUK.
i{i,0CQП#E^:C`VL=:ţ3`EO)>A#O3
km!V?chB	0
 Jq~I[+$xj"ubܜ
D=vL+uA3	+
?G/(?F
&o')V٧ɷ04{gPKR
u  #  PK  C:U            6   org/bouncycastle/asn1/crmf/CRMFObjectIdentifiers.class}OPƟˀu0Mǋo8W66P8DP3j[]ڎH ~G&~ ?񜮀/h{{9&߾
 	$\pQ°K+f3l@"zr44
4eiZ"п|bjim5JPZvK'U-mK?zmzFyC`)5qjktpV[fԽ 荒4gEm{nyz#)DfN3m5ۮ6enw:uK`xO=Tj5Ο3c;
j-HS]˪kel7\NM͝9u_KZ+n*q=aW>9(vlEQ20$*#c3&Dqw#Y=̘cd9<#(03/(v AKr3t,Љ@M4訯tWC)#~}ԛX'lcX#cZk`:>ߖQc]$.u>d-~PK5L;    PK  C:U            '   org/bouncycastle/asn1/crmf/CertId.classUmSQ=+
K*,jij/Eڄ}[`#ũҿ&g҇~T,e0sss__XDTEt2zX_TJ@WZ3"zP&WbI+fvZ<t
5S%x#cBZIKzcR-YMQ,l|JMd}wܞ
-zc鵹BN{lh#BM4lkVLI3y<zQ2FP%B-&fa남z*9xgu>}M5΋;ڵ<Kdչ{\0kϮgɚ&ye[s}ydU=`kirleV	mNk)KUY.{9+Ѓ!	.Kp@`hc!AĈ'F&ÄvLhG3>?C/fn}gXrsn\2ÊV}ȧ_;fɷw{bfh/Y6Gj'!<+?o\AX8N^E!94Ǐ<\ZP	7xxNUlT,!
oZ#Uy*&-2Dt+r}
V}M[asG6?pMo0LZ]P_'Ι֧Q9+S+x
	ָb `PKź1    PK  C:U            0   org/bouncycastle/asn1/crmf/CertReqMessages.classOPǿw++s2@t CUtqbHfLO]Kq|G_gH$?Tpν=G +M!z˲-Uƞ{~tiT[4]^plߴ}؞ۆ=l_w30);fS5ZZ^0JMӫ0Og ֖[IN+' "`X@L(`D0{vwGSWep6Jf^<TlyRre5r\wuU5vAv]8kHT!KI#$A_f8M&fE$1's3MV(.p "Bl˾n<[՟?ⳀIG0xnZEiEy(8BE['FLO+zaRuH+Zgfd#YaLx|jWqtzBH{gwPq#Ji5&4q /CͯojD	8ɾcb'p-$ϛ͜
PK|ŕoH  h  PK  C:U            +   org/bouncycastle/asn1/crmf/CertReqMsg.classV]WE~6	,lbҖb&aBUBQl!

awk/Kn!(joswzT|goyggޏ_^ z<.v%iOgz.
:8/N`ZOwz<f)5nzBS5KU:df:z
Y-c%Y;m%^R.vԉꖭ	VMƗXB"3edI`ii|YF3l|EǒMOL̐ѵspTJ@3uT'~ٮyM	#3lS@{inqӎҔ[1'=I3Z*ŒEk'GFz-eR%<1!N88eX,ެs b}Vh<Sfz9mW:E4hqQDE\&Ⲉ+"hp>u:΁rwP<D.G=-8=484b~1[ǓIwL@ҡVD;dY(~A8Zqہ-/'Թ<JǪIN)?>rzXOs{20_*)[j^Z=;.:xJs'*~S>}	M~ܒq
}2ށWPíZp[h{2Π_F=cppG!
aQs*>ØNLKb#	
&$0!a<"n|!8|)_I~0!}Z$}Z5YB4l-t\GA-g,ORjȢ `zϨbhOƕ	؁l">Gwap"!Qg-76^FZߺ.
D圲G^Q^B}:w+4BSH;cSܗ#7:
]fCmriOwɜ."R2l	5v9$M	QJЦ."s<2A8-	>'"n 4+Cws8j=8ȵ7.kċMN?ޤר6ԯiBm|mo=_5[d
@xDp|sv.sy$B<m0<@OS(傓~c\NJWiAPKY    PK  C:U            ,   org/bouncycastle/asn1/crmf/CertRequest.classT[SP,x&E	XQKA妄" Z%X%608#G_x79nm)/ߞv=ۏOเRCwqIOsnXYPaZIgi-zZ[%o&l',1mJNSae:#eݒ$GG"
-'6mi2Rvwhd~m&V帵DaKXQ89\OY66-WpZYN[n\{&ib1[
13bop,z.[9-KDEqV9E\3ǎ.LgNzJWt̬[Fhp^Fcl:%oB3("gZJ!V22[[˛3yWycv4t&uL;N	m:'k^ыTTJ>\58.+Ce~Ȩd'#V^8vPx)
!knAdcP0	
bf0&.b6ø&H;pOB3&$\]ٍ%VgWYc}((E	wEn̵Y?H3<slXM㡺V=~v0j>˓.#je>Pg?1Aԃ*V۫CMW~Ap[=@`4L2͟/C#jWg4f;x2{=f3̳nW7I.O.%,++S?brsW+[?r˸=u䮃湧ݣ Q)OczF2pNP))(;	?PD7PK_F<    PK  C:U            -   org/bouncycastle/asn1/crmf/CertTemplate.classWkse~-lٶ -Ҧ\6i!R.6ن&d7wΘ1m/|w'tlݝ2{s9no 6Zsni
8`!)b젅NZ +)MPPK9xN׳rXZ(:.`Jl<ơQ9Hj$b2Q%)Z[MYӽh,lеT!IU1V3,U1IIe*'eeQhC;_)Qy<.HU	I$,Bh4&
32)jd(YEPMKP@H#TjTb*V2P*bnr@ҵ@w4ұS1
!949!'9tDYd3JVX&9%g~9V%B0{BJjw%8Hs#3@IeX2"+
J]\xEֆIztYպ|TOӴW-5z+q_FI*2BwXkeZhHF2ŏdc)x<c9<ȣJx汆G3TP]:+X]Xw٪ 4ݙgrYR1;ܘvj E-{o2tƋ[fee-˅ܖZ#ƕYn{ĒfMln0IYܯ
nL'U;MFw2vvir[1+_CxdnBe<+sKE̌)~PA9	s}rd>I"E?vDt`%XǠ
ψ<'b!D<`E,Feyvn+BDcDxp C38E/1xACbd1Pgp*`#t>S2<Q[1Q:e
Wt!)Px]!))ifзIͮT.ꢆ;#!UFobU93ӜL6u=؜9/ThE%o 5ć<ηMࣞu+7-p]>	Cc
e/44FhqMS s9\gs8g?r>>by)BG-ӥ/C\:<toc$YM:	;kxܽ?R%lF=ԣGG'O]¿奣,H|jZ+| x;6)|<x5Z/&"4",swe޿UuD`>Tς<"7{A1_6拖a1_z_u1_^Dļ-[\6+y=lfPK_}  n  PK  C:U            4   org/bouncycastle/asn1/crmf/CertTemplateBuilder.classmSW%"R	Jj[6`
D"n6솑Й~~:SSfPY`wSHas9wXNB,ixeڦ{~ԋE	d]b떄BʹhU\a;Rnv\67&
0)KK0\	cj)Ulc)ݱ'Syۨ%rDVp4]Q&F"eTF9ZL͊,ۖ#3\73"W7'RMEo
iTGTMZ!jၣ~f+kl.M[%X2L<o4Y4U'MNdg߃4m	;2T}2N1 㤌S2NKwp%1ݬ[y״tgFHO4Z%qTJQr(l4G[m9U"'[w7+'hQZb-sdxH~mH&Zռ5(:*wZ9NP#'{;*}lZƵ춑o.
QGp\h98$򐦮m÷whqzS_ċESqT\aӋq\FJ	l.bREPqU `ө7XdnLplI̱g&l<P0EWGx 1<RaE!nMNxLP"}(sb**}*e]x@^%$Ǡ:8cR7RHY{#9eT$oTO@пE:
>CT=~CA^?AOƠ%`5 m N v4 ·{x   <	se@\K˷j  yIW>__p5?a,hNw0d'Xnx;Frݓ2>d>@7/
!k
ICY?'D>Y;hDMGcq*:JoQ|ctPK?h  P  PK  C:U            )   org/bouncycastle/asn1/crmf/Controls.classOPǿw
sNdҵjA6,d#$ħTR-vw$'}2"'&8w@V>ssϽ>4jj!Wzn:o3={Q*U2/نYvg
|j8b-;箭e,m䖹Zvsa[<Gg6!H~^Y;v0@^Uv^#tMy%Y%WBYBaImVURkykfDO.ovZ
dyDΌIt%wm%]7c
:#7wM8i?UЍ!0aHY!F8C2bqB\"%c 1M&N/a[i=on-A^!'M!ZHZ5=Oq&>#
'kD_va1WcF.,JvG:֨UbBgQ$Z=BäS;;𭄾zB8;k!7p
B?p}N\+ih[5PKړ	V    PK  C:U            ,   org/bouncycastle/asn1/crmf/DhSigStatic.classTwd~],sE(smDSe(L뮲4d4$E?;o9sDooۆMҳ>{_&w XIDX@P\_V(|tvsbe+z;2ɬAYc0}[wL#ioꚣVsҝouڦV2EϷ
=SwN4V窮
\Ԟ/
pэз]j5I[b^1ځv@N{äfxföچ;h储쏾ZYtp3{$gcnv퇦cޒp\%#ᄄw%'J\3V9^
Q@3?$䔙z("G=(`°*v5,3sc^9Lq
ޢ#zv*P=SV&
*x#
ƐP0$R
dH+)x!.0\T<Gi1,*2S3(3Te|O2|)caQY|%S%eg<ҍo0R<d
e'Z%I1$COUQ'.FDN]\SKOQS{mw]4be/G. h=/S@~K}MuX[D&IIt"<Z夥mH>ƴ*8y);N>K=L;}JDϟfB_R~DB^"1	EhRomESxWJR$=d.s/zi]!$o17LPK՛3q    PK  C:U            -   org/bouncycastle/asn1/crmf/EncKeyWithID.classU[OQݺe[TD\- h1KY([l"}6ᅇ%yd9ۥiI2̙of3goarєo9S
kfЩqF$ꆶ).iCѣjV{Fq#}ҶCQwH_UhySFJT\^Nnѝ6y|~gR&crB]I
Xš8d^}uSk*O:^MmğF3V#ᢅnGy#JC[aAyZՔS6؍lg΍Okc$Y)tC3mUu7T	
)Z-%tC yB%-	f$hvL	hvl*̘EcnZQ҅,vMV䄢]UFrr]Be0@h8\F/\
XtÍ&7jmpn8`cw-n\C+SۘD.&
DZ3HDDx,"EÐFa"B弡Dן+lD:3ehei1v>pJ?H÷$!|!g$y*CQ
+B"h
KLaz#<?#w?+#<GhY;%/<UA/l|O$+i=dI=٤-ؑ_v\ vU9XfFfn̕dBwruX2Qmy8iϊ)~wn'vq v,SCa)xtF&PK('  K  PK  C:U            -   org/bouncycastle/asn1/crmf/EncryptedKey.class]oA²T`Wj~墱~Ē&nXV
$oD(bl=s_X]:CiiқcTx`Vۨ
ζr\plNyfU+ۇy˩oYykFaHz#E^pe<Ux9ʥszF"Wڰ'F!3	ḴE/ft̶!!,AHJ;ֹbޟT+p5ADJgKis{W=1	Cplwxk5nU57!ZS0
&䲂\!WqMR	\rCecE9ddZK	I8!iW}QḰa>P"LEzN2#oHti?B4p۟v.YS4NܔpS~D=Q/&wh},SExp)"!Hف#$B$3qg	֨}_{XǀPK/F    PK  C:U            /   org/bouncycastle/asn1/crmf/EncryptedValue.classVmSW~lXXĀU! 
RP
Hlmd	.
B~0әЙB2;锞sEI&NI={3?
/Ӱz:gteN`XtZ'	
x]2-ӹB[
8z*@&Y#9z2)ΒcږN|ҒaѲBɵL斱&:А2}¼YZvt+A#b=#9NI%dޙ]0ΰCh6O)=5nKPIo:=֭T4N)==M2匮&/INִR#934b13v6$61.	,*g4c@yn!g	g+P綣<ox3Dϕ'Q!SF^x}t⥱2砭2Id3sQHvm1ŃU=YәĒ:sihtln̘BVn=2ޒ"m2NhqZF@FgdCU!	xC2rі7JZ>|u/s+W4S̡
*NVELjrWUvHlU`+*Wb 	f{emVhpT'+p`?pmJ쿰C3՚z&UÉ`/f+kl-Fʟ"[z=?xU;4BE Uq8p8*d2Tt"K*1.e^paU(

>`&CVzqa]{
BH)i*3}uaVAqnL*'
.BF?ez/5;o[X/M-B;1"bC
ׁLb<YS I!	/}<pV)3tGQ;gLh6::Fh:us!6ZGBh<5[-dXi}D<XOPӨۥxdʈJ]ϟS:~s탇$M{ާkл@z6冴g܋dcEYij~G,qZSZZRK)j-QAڥ)/,jµ&9ZgokCI>jU7m7~	uU74>asi<cZirB	qIf$wVpS״&Hy,M\{Z#y|A^VPK&l  M
  PK  C:U            1   org/bouncycastle/asn1/crmf/OptionalValidity.classSmSU~.YdY VM`RmDPd&aI.qq[MgT3K;NG<w7/T̹>ܻ Mav۷;ȪX-5eeӋܬ{11w/sk /Zڠ4E]s0Z^֩{SAo 
X
7wyɫ3)2+y!Y DUy4lөYN*
=r),86tD[n)=(Q67̺dSrͷIKuؠ<R?4? D;l3뙻=@̫\Rgl4mӶʖa?ƖUs+ߩYU˳sQoʘ1%㜌2ޖqA;2ޥ^r\aލi{J;[jSYBﻧMp+7N3//J"WtǷ" ;s
<9yQGvN͕tDV1*fC*FR$
&

IYP0Gua>Pp	
0pC>fM,>T0O\'
U(.0ԝt-G5V-:N\HMyDD6y/7RkHs	fG =Ɲ_y?:~3lɈ˘I ^
wCt.'֟ ~?ExQ<d]f&%*1h?xZT`M|$zM\[<()ig7I_b;?Z`pSL&[RB"j"/D}w_Q\1F^ANPKR_~    PK  C:U            2   org/bouncycastle/asn1/crmf/PKIArchiveOptions.classU[sDۑ#K6Ȳhm@br%IWE^T5Q0yHgif
}e#H"s~{sήK ux]@D=! *oa fzjYegUG{bUVyĬ؝guҜze+3h1}d-o=e+ N/D֫PWjT-=_4M挣*rX5lK_51,P32s6snV˜c욥5u5Y^ݱ&3kK6Jӧcf?D}!en(5:+KsǍӜ7vqB+řV<S]V&T>@ڶoѸi\UO[s;ˋ="D8#⬈s"΋qAĈtDɦhO9~ 9\<ݠ1pAY
)r4E8Cj!6L^ic'n	I	/uMڭ?,tG}J
L$B$^Dś\'$I$qkwĻ\~rp	>3\r!E	񐋏$sy	IbAPe.?ZsUm{Q;1!/s4C{쾀}>:>q'f 1EhV~BnqHٙ&>?8XXSXm`HIDh3JEFO+on>;
J',J6rO<}{XI1Q'bP15͉v4Ջw|niwĹ)Y1|̈IyKX^wI#E9_!XdˤGcd~W?%=6GPJ<l#Ѷ߳bm+H0'PK%^  	  PK  C:U            3   org/bouncycastle/asn1/crmf/PKIPublicationInfo.classU]sF=k;Ș$ K
nhZh!K_YQGNcO}L^N3eK:?/tڦJ~8wW{,震59j; 08f%VroLVQwf2Lv*UsԲ0]搼Q.kKUP V`}9i[k,]tY YH͙eǬJ;k㝹9ǵ*qR9~
;S[s,isXW1
vP{Z Q27r,Rn3.lk?$HK8"ᨄcޒDz;مdGc#n3K`*].*~fUj;:\O}6L2nsAvlu+^gi5k:I
lߵ>yÅT
_lo>^s灛 ,j
8@f80	' "f0L*cJAgxzAee(P10ÇdcIdx82N'2]d̰$cWT+#^t
]~h)EZ@#\F:!׋T(EF;UiLiM4=;\wp;#`'"
'L@c!	)9|9KIOGT{TCCbFRM|Xl'A;Pg.%MhZ@;N$~us.c=RX/nC0횎!Tg?%qԓʴ9iG)S]hXu}ȷj?P#٫W\kt|aiy/5TG><ԟa=^JBb{޶7p_(t? R.JM\򬸇!?.Tx+;NPŚ>
s~{?PK@{    PK  C:U            +   org/bouncycastle/asn1/crmf/PKMACValue.classVSQ=+"bhf#rմ4"AI`eS/Iqr/}jowuax=羷'	pCk	ͪjѯ,f|'Ql2
ekdaXa&Kz^(h/YV6
ژ,T#c誖rF-hRm5"/ΐqG1%__X9Ō\x*m].S4CT,`a^ܔӋhni\U}Y@6+?\\ewբj""ED./UDKֱ3"5pgM|䆖Cuj	ҁZ֑3\Z
299ktn:bL.0-/[1So/WkI;u7s꒒M\K*畜MMRib8iϸNT/%wBNW޻߇[z}p.<4AA|1̫ B<H|&Xa܋vL{с	yщ^$3<zх^O9/grl,!ŶWaF?:}@_mV䄲*
i=R//|n4&n^6@WWx_I?F`]:«
=BxC7FlvSJ#$3/BimH)wQnѽ
,E*HW0M~
 o(sn;b'lBѓ雸gO8FǺdb(ctZPK蚺    PK  C:U            ,   org/bouncycastle/asn1/crmf/POPOPrivKey.classVmwE~6@,DL5j[[I4,DkbkBP1	!F_eٔ",|gxc9/~G)>s3޹w᯿UJ\W0<g;wMB]Aê
2V(m6,WDiI)Y:5pLA|+*Pܫ;׍rQiۆ)1Fl8V2[.(WpmST<u(. Vdѭ;iԼH5'/RmOdOXzL#8Shm('3Wc)HzXl?ܭ%3NC݊(-1PѬn%o,Q/Oߪݐ5rP/ķuȊtj^!oۮuz#Yڞݠu~DCq
<壭	aW'U8)OWgU<<%gyp2閌bY*-Z?9̞l<v{H]}g7Hr*EZGɝz	'e 溋uӾCAlQ?jIAkx 3MVlJrL5ah
cCu7xo1weecx$0ϰa
h"bhAaaY
q|
r^A^1А][[0s+<übT͈oЉ !_'WIv/C96 YbDX]͟!?[f ѳ}MlHK{Xkٓ>//=zs
p??eHEB<#4
FR
?A"7W;~~[aVMl4\&o)۔L0%NQKC4"Qa8xQ<hKD;D|;-*PKd
  	  PK  C:U            /   org/bouncycastle/asn1/crmf/POPOSigningKey.classV]Sg~Ѕ&6)DaiHb5ږ
MڮnVa&m/v
Sf&INsPӰN8ys{^~l?zxÑipޛiط;L&՞bڪ>$O5p^Vɰ9ʹ-C+Z,j&u^h8EYU3	*e톥1_Z%Uq Gڕyi꫖m˫Jz@g.?jE۰LH)Di-V|#lئU1ϳjk1lNR ͬS7ZbH1m%;NIiO*SwkZ=qiUWZ.fK]!`kn]ݘo϶ɒQ0l)m5nKYD/b@Ġ"E\1DYLܲ'#+oQ/vfK(u]mS]69ÎpЁzuW]i9oҹnow%T_s]*Ο 6E'^xBkId:tOni}3jHZ% 2x=2d1I\qS2Dཏ>!cg3L)n1fgaN 
>c\B+gpaMe<p_2$$\eV_K%EF5?;V~;Nl5sO-w
*T4 D`(UlyoE.C?zZw#c8SwȴP}r>*-֐/t2 <b>A$*7%"xIy	e~=P2J
0CM]sTt=455XLfz \%_ǚ2f4rH=ʯx0eGm-nD;[ǕLo>uD2^/(@~sܠp&ZE~#$R?PKڔ  I  PK  C:U            4   org/bouncycastle/asn1/crmf/POPOSigningKeyInput.classVmSU~6Yck[5f!R-
5!6&Y4lj	$K?G=7/PH689=}y=N<R(^R
se88\zdZVP-9OֶtTNj.G8P,ru͉[{je5~fvSD%K.i/9ޞKSD9_SatG}FL#qtՌR^Yar/fi.ꑌ]/cjuϚRE+kԌIi@ئQwHJ{Vj"麖k.,><!wŜreHra]5K7	\MEe[ŭU39*<vzf`0fKic[ǻ<8=x\q0y\+<rX8QZNwKk.H
M/J_ٕJ7%Ҹ ,YkЮlSYڈw
ꊷ~j&N)r!; rl=`ovdpׯsSs=n}f6E^uK7Ymu2zn"3^#y7E0#bD}"2|}fP%3J(VkfI0H8I
΢Xef]83)!< a|+ߚI<04ᘷsN5@""<cJck#GI f?K?\A.)C[Q^CGTy)1Y*FU+xr+Ce+O?#bC{!~8^_D1OZx*FZ3$>|+(P+0cZ/e~,6L&LSn5p5hd9˿b"1fX6f8F1(n
2l7W!=6`,8̶ [4VJ+0NG߬<PKM	  
  PK  C:U            2   org/bouncycastle/asn1/crmf/ProofOfPossession.classUmSU~.IdY/Z)6҆MڈjVCXbFCU\%nbA#8:6tdƗ/~G/|{ιϞg/HF87)Փ%mªV(f0ۺeVccF圲2yEYV"ءSѲjC?Y+)y
ꂦjʮomv27k pub0di&iVb|xQi(l XSnRP׎<e5kMvo+Ɩk:6u:Up]kVըiDC̩RNӮTk)aO2m:c{@\jF 8q6p^kMbz~<NF*Bus{a`ĊMgce#4Fru(4]sO6`~b;14qE@c^pQ%
pY\@;ԝbŮ8U}2ft&h|jx1_=⧽]ѢnP+WsAya_ M{ ;Gɋw@y[݂1U7b}sWڍS3Ǩ
2uw@k'/Ӭ
ޑ ඄$ޕ0$Ew$bkw͌(F&"#pq_EXG"PXBc/""-EHrS[=uo[ҭ&^yoRiC/$[갯-v7ȎtqZD#IN	Q%;ha9?hɴn%s9xuO)'/{}}${XksZxO{ƿ\ 9?s@!200A=D1߮h(Sߑ%=}dPLx-|BZ;a2B^xh=2	ga:NP[ԃ94qA0pdp}0<ycxgva!}L<KPK
    PK  C:U            .   org/bouncycastle/asn1/crmf/SinglePubInfo.classSRP]ӆ`+:*B6U
rQDbH4Z,/⛟PGf}orԽm+tk:k|><)X
BzdQ¯
SL{\-EN+f^6f-p|5d`ưZ$(eU)&ֵ֪l$790uF$ܔiE897Ɣbpip݉]N>G,=IfJflP)%p>Uύa<-qYx!b[tRZ*٥5ziizp/᠄CK8"ᨄcr
l6SizhK'"O=QptŚح)o	6jC:ikZŤ;C{>ϓ;Fq)&})zY/kU.UE'N3G
g(S !ΩpYAIaDpaaᆌf%#wd\deщ2хy[V[3?іyp` m\ؿۼDWD*D+2,eStU̩	&|CDMg70#ȁOBT"נ4HSP<~C-BWDmDͩPXPI\]ΐ'?_";%~> S䫂GL{-Rg{}
qUO'XgioiJЙKTvgAqGn=b&x);/ጓsN2VPKd  b  PK  C:U            2   org/bouncycastle/asn1/crmf/SubsequentMessage.classRn@=1IJhZ "
X ęSwl(+>HD=hYt瞹ϝ7 g(c-7>dCx	9b(/yg"H,8eX}ŏp9=x<؎H[WDJ_Q?}d~01C+=gf}$
uO=
Oi:gkgDn_$	5	|&eF6yM}ƞ0u\a(3;N^OgpWhԧ*g@Ǻ|e_-̡@p	W[qUAX@D4*X3Q
$#{rpG0hQJo%eKlI@H9݁v7Op*2s4b@gl4L02V==蠟J`d|LﭑZ)j/PTPK Hh  2  PK
    "D:U               org/bouncycastle/asn1/dvcs/PK  C:U            -   org/bouncycastle/asn1/dvcs/CertEtcToken.classWsU6i6()Ϧ)5 BB(O)"6]Bmy
ŷ|3E%e3(s&vsϹ͟x
w.$pWS$fABISRvЎ}YsD <oW`W8.yj
CA&lYtfUUtopڙmmPpy	7vΎv51Jʻ}u	V"ȡcOK|C/wj{iZ<fivhsP)@ẍRI2%eDCfĘRb}{I\ZJWjA/ޫ
ifF}XLj1":8+掋T;aэF_OH?_ھ*2أ)$YGGcyaM+g-/DIW_8Ƕf&Cn %2)vZWKX_'>^u(ʊ$㾬o74yM*דqLR+ƀSBmaz`bYVx`6"MI)9(i&vzeW/΄1@
&%Pz;*N: 18E%2Kl52X,c2X.VGFz+d4ȸOOJ(;v2hF~/apun9ɭ|V{BKjI<i)?w⩽sr30v=N
]!l!7'M|9B${oYGf=F|bT^u3h`~19g	gIfTkīnV!f0	ۍ(unqAݸn܋"7gQl67n,@/'ݨ7}`.h}nGAg2a02c10hgϐP00pYc3lC
d8`+yB2<VWІ%xYA'^Q8N(«
T<]nr:$5YN+:Mp"M(HQJo^kWuĕH<7W
gGG1,rQREI92^$6;ww_
!ܕ#t:XXB/PrHΰ(.@ҳcs[＊ȡ8^ŧ=H0ML5DQԿu_F`ưgQQH=RxsrY!: !Y;mLP|%*WyCegP1ͣx{_ף87"xS1
"3V֒w1lN¸-rf!Uig,͢-K/DOL<}:MICKN*')QݙQ~ro
Vk0[Wz!wpE_%JD\#?_eOE=Ng(SLe	2.*+KRɬ8^PK @    PK  C:U            -   org/bouncycastle/asn1/dvcs/DVCSCertInfo.classX	|gOl&CB)PHv(!	qi4Vq;,6awBkֶWUhUCmrzԣnf3ˆ6߾{|؝<cXQnscX277npMn,@Vt.U3mohuj	iojvߠƓ>mo6r#@}󞆦_47߹!}ͭok0g_ݢU%pcZR*N	(GhSʡX_=KXU@QIJB}mP@izwϟTR[K%"14ۄdqLFoM9F\
k}Z"QV]M$G٥ĕ3-ӞG9)I\H)mTF%JImW
EF+^u)}JmTµhT
+x[(ړԍ oxK޽|lE$bMY)\k;)CA%JB[][o]D)Qz<Pto1:u3GȪ1FR!6?,uSbj(uCЍfÖ8b2}-{jw^3(Xd/՗@q	VqHm([ꨀ&J)]16ȍ82lGmYfeMIˬOdl5SRۮDVx;ĝI/.1w|RR!}qIu"֋VFDlqxz[D4h$bf/MT-ƍ΁J?%	QȪ}^QdRVX-sMK!'+s!fV״L$U-y19U:ACݾ+k|Ks<Qrm#)V>{aNFz1v%h9ŜˌZ&ꚛrA3G98?1_qFGʍvc5+pjyOϧ䯝e#wq呛j,ÿŮy7O!_`/LXvn/',)r<-:q
e)[gL-S5^y宦]n̖ц^Uъ[d\2ᐌU&c)^-˸eer#`Rdwwȸ
1wLb־ɻ[r=L}L3y?0Xx&er>A&1g	&d0O1yɧ%(ЉLc	Af1LQ&#L>		a؇&Ldr\B_Ѕ08&!KW$`W%pBB& .!oHH)	I|	b!z`O)MXHP~+eO_)J)WJRN2TJ	J"^I
⯜k"*̠L|?H%Y<5 yg NyQ~!(a((p֙iywCy<["!4iy?HL?i)Je30y#82qqtƝMYES6>ѧ*qQ>GW8?~{Gt"1VYEC7o=mcJM-G-P(ʨ<_w8]"4!Q{` sK%ufЃ^90ܞ'
xN|Zg~r@.=|0*3W?#Ǆ<MeȱQӥaN(v0s0~2yi\/)s=O+-gO`&E;
Ŵ\Z~&-/b.-?3@)7F(wxۉ`uٳHHc,~KzLQtR>,7Ϻ؛43)ӕTnPz݆^6$qaٰVX
;cIL62`acVh&?be;)+甭o<Hڬk#8jG43QkFsy o22_ژ_H/_mOn5l>R{plJ]wب/ԫpLJ]ꥦHp)/#u)oq9fPK
5R!  :  PK  C:U            4   org/bouncycastle/asn1/dvcs/DVCSCertInfoBuilder.classV]WW#c$5ik51"(h$b' Ғac`@fp%?O}oת1
)]]=g* 9w{[%si	nRsOya?0=^يX"lK	l$H%%8&S+->ƛq%0 {M*O{j>/?W5
5Q-Z2S0?Hڪ]Oi%.lŴlԄ=@
TSoF\(
Ruä\sT.jKRJy5WiZHUL[3'Jp5ӑRu]mhV8$#$LMPG,)oS."n@LRQdh֫u2vmC0XK[~bM8qbHV8<EҢߐ=\thFbE/.{z1{^LH?wa5ZJɮ4sZ|Դc5{rzZ)6NfΛJo{ᨡ>uc|r~ŚWoߚ3ygn=Ԯ3F	3nD>LD:{$w:Bg9{ccN#;jpSj㘭EvUìǳw>1y+	9?E=
AO2 d㶌#cwe\'2=Q,˸2ܐq=de nb:
6lIIIba_WlFƇE|-ψGJ﹝VUt)kj9WS#*O%9
w<xTIǓ6'_A?'ZSy_y4v#Nv"A
b'pOkFSdDE~PfwxgdRP/4No׽ ON{4m)r1:Bm݌\3ϨWqf\!N_Q)";ߘ"tw||gZiĕzWIɳr4hio`]~vf'>B]^kIn#sX'DrC
v<PK"1l    PK  C:U            0   org/bouncycastle/asn1/dvcs/DVCSErrorNotice.classVkOV~N1RR(AIZB/hA,]qL.,1h}eJPK?7MvJDzy)˨8&CH8' t39tcSc{7Fg3Zͭ-mZ_f8ul{YFLی
ˡފ场g8̖VY7	Ya_#W^@@^#cЫS^v*Kw6j52niԽugB/N9[6VV\qj
8מ~ش Is+h/PsΚ+E3[f]o)hW.]YU3:ug˾/u۳hEfVFst@WEI	$0(ᴄ%#a*a*&m?Yh
Vn#ZOԎ|@.vD
0>̋d!f?ٶQo{Z[_HLFxF[a_ MK`T*V9|ء#8UGuIFyE4B&T4ST1qgqAŻUAQqU8.Ç*WU$p:$Mꁆ
F00)üQ2Spcpaᾂ4>QB*9%dLOL}c
G#A F
Ϳhwr/Z4;. 
LEcBkࡖ}m11ƙwCрصv;2;	dZ9.ƺ/(1	DP2iGhC
ڶ=h%m_7`lbqԄp#T3@.v{ ̄g0ZnVvP!<tRo'CD'`=z~#
IŃ@פ;4åydw0߿)zIy_V3N܈itni3>|afPK
   	  PK  C:U            6   org/bouncycastle/asn1/dvcs/DVCSObjectIdentifiers.classkOA߱]jA,lg%/&DMHLLZʶt?KH423>nysv|q
qWlmLؘqU W](+ʖWJުTFS`BɺlRؠ)V[ctWIRHuQL tG:?LFAGNp''(FMxp&N@|2IxW
ý#@.ُC]}{nKQc::JOyq@ɼ"pMV}5f({k|2/O"qFQa23װPD	qUbXb,ӡo0/(}.E$9jt&L˙V26J)
!~0t+'Pc	[;[+َ밽lgS?PKՔj    PK  C:U            ,   org/bouncycastle/asn1/dvcs/DVCSRequest.classV]SU~6$, hVdIcAۂU
Hc).%.
,8g02M/C8ݔ6ix{ysޯ_;QD	.	/I, dkvsP@G4v0' M9aZ}KT6c<6rŵzfr4]3֖adahӎMVڪښU0چQ'm}4˜P0@ͪj^HeQpfCђ%*&vŴno%ɱr\+o[Z.IjԌU(Zȑ/e6S>S?iz&sĹw
39jx,yZqJƮHQJ&9Yrpv_17Mܡ.KgWw(,_ĀWE&✈E!⼈"rmz<E N	1#Di"rj[D~mQv\iƙقXTGsf_z97jSOG}*O{^Z귑'	>hSq4Vg_!px{ZmfqIOs~8!,)x
.BVЃnESЋw.]gn1e|0paaaw@#2bǰˈ03d #@Se$qdf:TzVxxOZ:
1A@.Y)he"H\@RB
/3xA:dZúò:ud.;if ;|(t-:G1j<=T	P	tq=Qҧ4WDGr$v"W`PvPG]l`snx ;kXއ
4>F7OWiz|GJAT2XKk"B9)k^a;tP~F("tG 7"bO2錉4	ϝIc>W PKM+  ]  PK  C:U            7   org/bouncycastle/asn1/dvcs/DVCSRequestInformation.classW[=b CBbl`\!SǎAvIeA2xYX$MWtK.iڒ6HaI?ПڦI@%Дw={wy3z9 w,`;-etYjNZgizV[Km]hD$nP:<}]^Ξ_rψ2RcA9C'z;~g 6ITuJvy32z)# ,}b#jp,('J<kw<\j0:
!!EAeHNXP0j~
̂ur):]ZU&~-<Z뺒\9k+HRT(ybڐ
޾%p&tOE#1?2H+	%N[$էG#Y~99:%[ET}uI#Q=*hT	Qg<<22]J%5|l~}!
Ť5۹	h PT%.G#)!=l;sԄ=79p8)ڙw'QvJ(Ȧ:V*Yk_ar{^-5zGceJ?6T|n{=K2ȃ
1[K0Ys^sVs{2Gcky|*VZg{<3a*0zL"ƹ=FQnDL*WmLFudO7RfLZ	iGYlV`F
"n_-"8$Ⰸ#"M"^!"")%⸈nm)jڏEsWuMAVSDm.B]Wl)-)+ZpŽ:[,5gmlk[~m-^7Z"{tmgC~V[l+啒Lr^Bf-bs+م
Pe()~-_
l۠,`A/NnrJxKUDș
z<ͬyX^Iν~eL
QK?[~ONuMHJ:	1$#aXB#rS`C
Cn^	7ᒄ}c>	/F^F潕moЂw0]fx2|0G>>	OZqaW8yV_e},×W00ik0#3|݊0>
+.VDvV\ĔQ$D
VMꈅì#Z%œ_OA^F'8k<jRIʜ&)ylI&
ג&}[~iٷүϐ^E!fB_s20l3q
3$YDh
ҦS-ah_5a
WI
u4ДM[_coIx
	dpU<)N	c&~}XoLWLuG]P	NY{0?Maq=iy
K8b\e~)M48HỵI<]gJ$·['r⅝/F؆"D$BZb{/P]F")/:}Hᷓʣ(5x,oNI-F2PFEOR'0c|8Xy0%$^Fm֜N'2*4Ke00EIU}#%_Db0Ds>ေ:w::͇em_ToNYze#4.)f5[aBwCs5"^+4s2EEb$$~-KbLv:I(<IiJ~rϼUSʵZuci|l.͢firO[ʥ:m)K3괅||.͠is4N[GsVj"pPDq|Gԫ$c"nǛfk܎t܆70f{py1knŃKYن0fPK]O{T'  /  PK  C:U            >   org/bouncycastle/asn1/dvcs/DVCSRequestInformationBuilder.classViwe~Y&MPU
"Ŧi!TJbZB0TdtR3JQW-R_+~x{'I~y{}׿]hta\R4qP2"ncutnIjIc;;`?	(B};=(#\qKx
E{lD~+=!
}P(IFZl2FJ)GZ,WFRjBT+2KM
XLhj{PCGOS4-m4(ZBmR*ӚޔHKFRK4q}n{ҙQ ޙ,i,J&+x#9Vs+r+JLUf'b$w @LFyu*t!SP
Eh撹VUPMQ:!CDL$c2-%+`AeBt`*&TP5p(eQ7TcF)2ꨀ妉~םL5CM-[5
XTA"_]{1{	z֕DDB^M͏
\Ц}fT29n$Sy] Nmp\j2RmiWsCClfLAvө/N}tJNHHD둳ћC.b"ZDxEhAOF"qEl!PA7
%ހeE^.%zNcLm.A5[?l)n(d
PSndURW)n+KSz
??7SNˏAGp͗NK0;*pZ+l
%C/P_湭R6^h/au=]"&ﯷKC:q5Sj%*7aXB3jW.j7«	W &qVU{$CRuUMBf-~kqˡKXg`$2<0#n}xˍ0g8<x7"x(wc 2<"K0&no/ZO:N_ڞf*q(v.e,ʯ: ԡ@zyDq/LI1%ŔSR#Ly$5JHO9Ӷ 齤/o%.O.}j",VErwySx:NW$[@|:ȁצqLopS8<=r	V a%N$zg8΢_f|>~$#P>2/֣Päλe-,aNgX.O-ۈt<"I"Y$~ao}o[}Cc}NgYWT583R'}u_3/g-6ApYwF:|WPw/v!>=}1
e܆s"9HzfA5ܦ#'ͲL]gqmn]6[6wiEXnԟ$OnGUc'oru̺袺,FFktn8EbsrȔ+*WEt-L.AW
35O+C!s_PK  z  PK  C:U            -   org/bouncycastle/asn1/dvcs/DVCSResponse.classV[SV!2BpmHR$`6ظ[nŔ(BIft33$3?][m^gos?|w"D{R]A#.M=p/a͌54/{!{{W׼gfWeٖ?
	52	JY;6{&vlܲj.[5:j0@uj\E^4\ol2k'qRgG= U
LJCѫkiYRDR=j̰cwUCUK4j8ny5aWҌTMi1l<oll[ځTͤRg@*Cc}"jJs0fznclr7_1* <
czv 1 -o&bPu7D񎈐["DqG@d
M	=[{Ñw}urdW&iyIK3궩#fԍEbMY)|a0||sF=e0eXl䫙Z?kGHӵg%7:&*e_+VF'ޓqqIF>яG2f!bŴx,
	}ed1OX|ڎI|s	,HP(!/$b^X,x*!}HW&&%["b]CVbC"/YZ@koδj
?w"g~B?0=$;B%j	HJ;Jgl0&Uƴs>ZG
~!o<}i1p^#ckEh=L3~n{\cCјaϳkGl(lm:<*:ZWDDn]+{mWkэ}H7mKlVܽiު	78
:x)SQ)
@-J?~d9~w]zNrGw*uPKɶB&  i
  PK  C:U            )   org/bouncycastle/asn1/dvcs/DVCSTime.classoOPƟˀR!CACЌDMPIZZ&|#}?ց89繷O x)7:l$tv-{]sy<1ak4<~3n1m}_ci5l-Zږ_MM/9IU}2ٵj9B:̢k:N6Ge84
%-:?㍹ܾQV7ҙ^2B=׋v}B<7mǒ%!(A-A#W vH	L5.LU=>켶{f'bVdZԵ
ίJǛWϨ6QZZ;u
W.}i(wSoVRA C
B
BA?yw͈NWǦ
c
:8AD1fJFql4ɸiaH&.fMR=衯yf1
ƓYcYAzN.7vD+H}a3R+x&1C_c
A`y}
&߈KhNT񄤔syKeQ>B%::W;³c(q'iwFkazs~8#}JmGX<~ڴ6XM~¥PK)y  d  PK  C:U            %   org/bouncycastle/asn1/dvcs/Data.classVRW= f1dA`l`b1^D	ma'@AiKvq?)y%UD$UBtK#$3
E۷Q}^x<vF>./*c<V^tͼ*@PLP໥=c,ӓZ_JhF=ቩfHOQ/yt/NXpX##JʌA%TpNIҌ/+>Bٔ5UR4Sܴ>^dƕEYH4VS)%F$XKjI7$h٬\=JeC	=t<x\)dl=fD]35Cp@m)&	k$DDU
/oӁO}Ɓ1U3fwlYړXLvN/i-fٟ͡OIvY7{ZLMQ1$4דAiwYHA'E4hE8%%m"<"Et8-S]6t:0eX%b6z}S%Oަ}޽'Hx!I=bD8+zD~Bd9vNz1^9;H
}3mKg	l0R9]h=#%A8g^Č,8dM<T<O8ܵ86#ǈPzt2%2zeE2jqEF2&	/5000)b*ÔjL3Ȩ,u*am	,J;aABbx!ư,}}JǛ2hWѼAǠH%Ġ2aXp900nDˠ&l*iemtB׉~vq#ZB~IS(ޟ=.2xLDdq8FI9)?|
@}݉O.ũ8)@mCdmnC4v];"O5F5o{~=Lc4Wԥ

Y=7,=M4f7}<ٶ
@
i1PU_QC4$¼E3=rRjɦ`ۤ|o)-]`
z+G)(k*Nw}zYEoolk|"h猿BΥ#.N}@+;[xOʄo#PTW_E?_PKl    PK  C:U            .   org/bouncycastle/asn1/dvcs/PathProcInput.classVWTU.3CMfQ	J
2Hu:܋3͞VeeOzhكJkZ̊/п(i{;
1X_;}ܸ5

ynHnu#_@j!l5hݩT(4֩ְ8-EJwGXNJʠ{,ytI5NV<3BAǬ8!)m*QՎݦd~H7PѣjL8
߿ɈE$UJ\_?vF*7b]z-,NV	HibJoeaI^O̘ yjSGUj23A=n*vtTCftnZR"-9/0SYo'_'7*$W#?0U#J4tpOC)$rcF6y*1Q=Z41n덛jWZcjQ(%ZVFTUhm0=Ơ]+&MS^<=.܈n*&9ֆcNjso,OfPOʦ㪙Z
\˥xL:^q8hip&ZcZfjGH6
EX.#RWODj+DEJjXCUl_BԫER~GUI\-;R/czxiTe:-C&tmbZq{<zUDy2s'K6[;QM_``<UTg*)!&zAv3NLuw,
YRITrWMYguYO|()~q 6i[MIn4ٷ뾬5K{(a1C
eT`
s X<%c-fXǰhbh-2Gv212J{`x)1t(CHa?CငMI!q		Y	Dzcx^B=JQ ^ %	+a;I`0t3g8
ëx[0}[gJ}wO9o 'r84+ԸgC^U%ʽ	|u\i>~חpIm$7SyX^"')0?&@|4.lrl.\@[6Ov*G;B9CQ+ܤ㋵	%Myq n/h7Io9盇^7	89>".dQ*q]G` J\I_[];wjjaV}V˚O/Yb+\GԈ%A/r}u	O!Yq&ϧW$@|Z%b#yZmſ

pI>&%""TI\H+݈UR.èoh*ΌТQWn/'嫇)7mU	\$	N`$޳%}(&H綪TըCRM];~!\1_D=S̿HGoH;|[yuQ^k|<=7{{s*stc]rDRL̥M\eK\J\o)5IdtKޗv?{}]fT_җSss_PW6U$ޮω PKbm  F  PK  C:U            ,   org/bouncycastle/asn1/dvcs/ServiceType.classT[SP-	%TCĊ [6S%eJO7|edQn.r;{o B('JBK@@y01%"CAgc?TR$3LX5yfцM[]͌n5K3:%]J˭Ym9FK[jif6
t5n2zA@W
/FZ[rzX[3£	s}E/hN;Φ/-\V9)	P4zrcXy>/+e+[ND\*MD;%!3e>9>r՝pz31ҳv(tVc*Mi&̆O<OQs9Ck|結ԲY=|yᜑt5%_҉2[AZ ɨE%,!Pe4}7y{KF*.C?=| Cać.<ddxaԇLV8`a|	KKVRN'
/	jaZ~{-^i͢Ӯ
 uj	.%~A`N]j#곩=J,]-$;-'jv,;/!%l!kw
nJ5[vRi"m3eԹ/3tn=`&mL4N$&3un"DCgM?m믠ۈ6TPH΅#="9Nx:R͟^g06جI6Ew PKçy    PK  C:U            /   org/bouncycastle/asn1/dvcs/TargetEtcChain.classW[WW&	L2"Z5*b2JQ@ADKHm1FÀElk[k\&j-]vp	IXjwΙo`w
7VQ7v
$N3\N#F'Ou"F;nFt#3L=V	PNuAzjfTFh}gؐn4	,KNLt
QhȈnФLǵCp~a+@LP~ɌkAG3cNcd&v[BNcR
::x^mD[E,;pwL'5(l9kQwFzXcúav\
#f$F,zx;{VXiDClɞ6yL1R͵NMYumn'Ԫv[ۖ=[9I[sF.ӉM3քMfGȸƘUpIIDU"6$b*"U6"ؚY\'zorܴZڸҗ//-iyq*y\7R&wG^1X/]jvrǛ&fSXTsjfo}\ad9,m@.|An1ݺ
纩.O9~cVޯ˕kt2OIs"
ߓ_KRu}g//8Ad<oyT˨@:]xddH%2Au(!pXFAF's3a1^>O8C?	e N1x
a!(їyDne8^6<()a=Laaa\BB%4#0"}0!a?.K|Wå=O:?0Tqp9)4@g!Vpp+ $]3N.b8-F q:!gl!bhܬ$C*h
äRwSwS۾#*bDJikNЊ5{Y٢z;Vf9yPxu
h.`> +Mօ8*xg8
"ͱSaVg@:攆Z	8g%gk`
I\/w&p$Vo&qTnI.rhEI
s
)[W.M)b+Te>veSN8EiE@q7T'\M&r!*Y8J3zΥUt!q-=t;ժY즜֥;x:bʑr
Jۭ8ji.6IZL+hSKhjx}I"v/hqTs[6ٙa_,.	B)KC˶zv9[(^JKM~@Qv?PKML  \  PK
    "D:U               org/bouncycastle/asn1/eac/PK  C:U            0   org/bouncycastle/asn1/eac/BidirectionalMap.classJ@/&ZnMAp!T\XAr5%$%>ZP|>xvgoF!xg`ddȑ^BP7#1o%\r
?蛖yC
޶)m8='t||H(N
KEpKqW'{UTQ04n3lէ.5N_aw*XV Sb,PAC1XJߣah%d&
9*rHa}R-R2iQ<*UI
;:_P~Bgd^%+gplPX|\)_PKS    PK  C:U            -   org/bouncycastle/asn1/eac/CVCertificate.classW~Ki6%	&]
qb
Yqպgˡa[aW`;`,趔~%vΑǱe\^߇0n@G ;8 >C1g4zsQs0۸6L>Is^G b梚6i;V6Q6TP5uCSmyguUL̟5/hZG

jj+ j2IgP3ݤN˼\eMZ
a&7hi6GmkJ4M妌Y;'g249t\>ke
{iJ_гH+rdan,h bb:˧tRz=㔙ұy}f)Cl$=~Ii&FֳG*MMsvv/{w_e+흡`l^٪3hh)lǙઐ7mLM 'hֺ  hx:uzb3ёh,:43󜺨F+DlZ5SX:س
|
w;y\g~+[yS[Ԝ#jM%tF8zkGLJi}g:6y6-`Jmʤёq9k\08G&}BuC4]"ٲIYyk׷kDW#oP6.ѲDAJaGNɇաJ]ݻ휾Um;+orm+Y" XXPp`:K) xX'EqLħDqBĠGDD۲O,(UoU+^Pk3TOTgU	=29-`O}*v>cI頎s(%1k2`-V3/aH-@I`]yOpRcMy=/W>^'~٬\)	d7)NK"am]KK~\m2F>]2>؏.h>H<Ae2bxFn<=UC'y1$e@ dBJFɸe܋n2aDFFkl<"s%UKg
K~*	)|EJfD,^axudx"2gw$>Ooһ^OcH;W33`9hFz
0Q+qviw
~h"YJ*.붞nS	S}k}b6^鿅˸Ǜ6=nQzgަ*PxEҿ|gUawV7;fDh\ïk.=2)7?y۷6sW\7	1_~>)brϞbہ0nqzZkp/)x
vF#٩sC#pu?
-H1ɖM[YmJ;jcP\6:'\!BUk{x-]F@6"E%x"fJQ(Y{冰B2rlS(OwA.j^ NF8ѷ?zvL7֗O#-gX1"H40װ.b6v?ZXƎx㉎mz?PV[
D̉tgd>4bgmw`P\0=@K׮o{wC]!mMJU+?w9%wg17/UӋP3tq&!}TJi׉t
6_knPKfX    PK  C:U            4   org/bouncycastle/asn1/eac/CVCertificateRequest.classV[wUI:I:A-j:iDhAM b[ҙLj
Zou))D_xWtĽg6Im9|{};6|Fnۍ8mQ-<$o;Ce.kydy.MLHOJJK¡޽pd`('
E|˨Ԭ%`kl*vn>E}a5cjGbSSꘪV
oP	ZIU><Fbrm	hϩ\]2t:K)IHPBC7iìu53%ueTճiY*Ixh?z\66͞̫J$;%F1%gdԈ;+dC}_s^R,Y3*ʸԌ`?2WӜ
-4`4RJjФ|1cMOTBXcL-15u:a
02਑q%kԠ;eLq.7hJ䬯:T5:堒ReiX<Y
^DI~i_͕i˚xRp2e:md+)8c^Gz]<ά(LJ_FLm$n(ќӹB>
}<eKZ\;b*]>]`CDEEtYDP-":ElU6. [VouTѨ5bQv$^_(˵+FjM%km/3B-u3uID*ELĵq1g[+vT5Zޝg/^jfTE-WIeGf/ł;itՑj2T]Ud嚙W	7`_pj%t1Cn	7242/Ck!In	a	6^	pFIX%A8²$0ʐ (C!dr^0qdgxڋ41Ig1/bxƋ(3<(s^Oxi/;0EbxދxH1Л	'aPt}A}Jz[B@-%4W0ָb5V@ז,	!p$p/aydxA\@oN^o@cco]ć}r#.|*q֙yISpZ|K؈+.-1K~FSe<$?][G}tq_
84}%r5H;R~HAydMN7;=-2ד.o, 4R@xdgVe.Wxe/]rsh-	\MX@H<b "*~Q#

cߨj֗%C
/.C$nG,7Ħw	ċ4T/	d6u7RPͯV(iN.MWݼg%Zry!E|Qb*2^(cl"l"!:t|?HjdF75ph'S-ӧ3;8o+`7Of-LaE_=#3x[)osc;RVS֮{@y PK'zR    PK  C:U            /   org/bouncycastle/asn1/eac/CertificateBody.classX	x׮+6q%-8	V-QFH
	$IiAT[hkZ"A[7nEK[fW*~o7gv_. 
*hVD2PR*-
Klk&^n,մ/69+H8Wuu'twGӉ36;oyG}c}CQ_`tl7;L|}[K[ңѰk-XDKD*Vh".&MkUW
-};k)-ft%r6whw$ΛLL/#I-.E˙q]m]mJSFQu"}7Rc͛}}m~*Q\	_x-I8@ox,4הQӚ
Ӓ6K?2r!Bα.
T0*HH&Z^V-۝Egj'Z|T.U$4Y2˘A!A
%	'R.PF`04֛z$,[y-:K%1F4'4L}})/9jWM|i9KKˤPaT`eIMV鴄Ej"$Da"Ɛ	CӺ*<⠖N\K&IvVmƫ]jW4kI#7'6ƼQ*8?akDOQX(MBg"5ѵ=մӺt|]y@HYӶќ	j'3:;$
	W	;0:kѡQ6[FlSpE-yZ(y|lѶHTWkcHXMjaAƾMXyQWl~pU"E㔶3¸2(=i4J4*c=үtLi"%5stQ'(pLw[Os!?nw%]$
* T61q>2|268O~*c@Ơ!A1"cTB	簰#mʻ>0Ec[̹*>{lIQw>mv/_IUuֈy::Ђo[	ߟnDeTUO%y+wKs֩z8f|Uϲu:/FmWyXsN6}Sϴi#4̹?'Cw-LTctqswA,0K/t?|Y`pԯ~/͏jD:k`d8a-މ'NE8Ɖugމaha1C=x&'4Fى6ŉxow2`P3;XFw:q!nrbr5ى0na`C^d>IO1|!N|Ri2|÷@au`psS_w`7{_dѽ3f
Ý_eý`}cI@^~~9$ހs6$~o5}+׍DA59ʟiv}K:<1Dl	4eh=aD*jOK!e7AqJ[-r&|'Z[$`d"'H"_M.z
5ԞܑSA,P55y*ЙïCUṦ{uMU ]E;OCÆ8sqSU?'9]5SR$7#&JOz죧/=~zFg:d/"L/.W?=gb,i<L1,֊?gSyXçRfٗk(_7jIq/>Z#Pd\s2A)KW籪/_⣄Tx<7"O%E^^-|D͵|Nt?#VWZq]&C̑1"[F(nebNV	jE߿vExDt/%(υdL' AMX`խ/Io\BXjRǚi&*Ery|s>ʭ)!sa}l4ۇԿ5hSw}~y:O<Pu=
kjg(^,Zyiq+s6*<<8yXRxe%%Nբi+;6cTtryRK\nlP/
`n溝VSle,7a$jp}BlSYHSҔЬw"{kQuL]/1ܞI*p5MdUKYm2Ͻ{uNyC4<<ȳZ/cgNTDoƁA֧8buEʼ}.+&={mZM<h]5ssN@@[E&]f}T|Xpκ܆-foSNǻMk0EI@\-.	.M,5[1=f!3Sٜ2d)Sq#ZV^3􍦟Uzdq)TBS	z2=nLPK#dB
  p  PK  C:U            >   org/bouncycastle/asn1/eac/CertificateHolderAuthorization.classV[e~pUi,ȂXY[\lAHqefRݳ]ʲDOO=OOvUa39wo~$%H(P&ar	$THX-)*\U}M<44?9.gRP[_^=tAP1v\15C"5w7{}m-]fvvZCS@]TA5wƴwjYZP1F$f@y]
Q5W۔ŧPRW?GtQ|)"B	h=J4,=8B\j2êI	3F8SJK	Ӓl親3C$mg9$uhAVb>5iP-^f7'.`!eThr455a?QJSi4%Vc:͘SeMM#o#VC2A7{oYkdcD*q3z^vקձ3A-(ja~NItAӠ/֣*:Q0{Q!.ȅY0yOLLm
U3?wd*AOb[&[2.J7{Еs{j*ga|ɉۇ(SL1riLuhL 0d042bQ'^f
"xXVx\6E<!b'E4pE<MuI-K5x."tE9b+ݞWZ0>]K,;s>7u-bNE,i[<E)a}h7.t6oK*ض&aۿ9&V'~%j<W2*1 A!2*Å<eT!_F
X-d(b(ef54,ct;CLe0)cFd4c48p/2Aw K)7>tn|@N2>pځ^2g؏v }(J?^ax]TET	yW;M%xn.>,T~顊Ʌ&|l(\w2Mo'<Miziz+$]%Lk<b9NZ9qp7%pm]׭|sf"&!;'Z*'$>/MI|Wu]/mEB{%h&wm5"
5軅WKv4czn!	7Cmx.4ȐE/g9筠-r'q]
wř$~a-|ag]C|Uz%	u&qn<"Ej˙Q7R6}(LfC1fEqYR[M.xoѲ$~RP
v(gSxt%jrT)݈ծ$i@	\NezŚjc*e)V1\,~Lq~ǅic8MW"%p,VĔrf$KJ=j5ekdZPK-  
  PK  C:U            :   org/bouncycastle/asn1/eac/CertificateHolderReference.classS[OA=Sh)WQrڥ[@V& (	v(nmF~HI$wͶ }p7g2Ϗ R0DcyZ,?n`ѴMon$Lb!

lNѴK>Yen
fa)r`UN:BD]8Yu"Mm59m+eFľEON]NEn_
^c3iny%W2el!QIek\nvI1J)Y ơWœz՞IrHxEAb/UoHm
ؠp)VУWA~wny}Ѽ'{YDx
y$JnQ;ab[*1",aP |*hQq*ᡄIMP6!.!!QC	aF8Hx*aV\2:*G~C9vUҭ{`qJ@+8VI
9ܴ
P,i7Eo%۫6}?AFK`/ 3[Щ>Cd{"[ut:Eh53op_Զs1R)S LJL47edwx3.Evh?8)/uS:e'S5]ǫkbG
vNnCKPKct  D  PK  C:U            ?   org/bouncycastle/asn1/eac/CertificationAuthorityReference.class1OqF|;u ȊXX)l312$わCfX^8;P~-z[pr3ߙ)N.'.NzIHujp4yJvM{%1Lޱ)gw0V#B?tWG-x.t7*}m(PF*CA"<S ^~j#	T`xExQD%_~|EyPKZ   ;  PK  C:U            4   org/bouncycastle/asn1/eac/EACObjectIdentifiers.class{S@oPByWy%MRPJbHP5Ŷ22P{6[qhgwΞI3w"{Zd)-Zej)(SL2u%SDu]ZJL	+Z$H؈HQ"&:56|QEVq6f%۱+$j\Lt0eY3RIVX^jnR|%ɵVLV,ϋIz$7{kvfu6kcfI`,J5\ڸgncHzuοSKw/4#^mU#}j-Fg慩L'neά,{R^?8ُY\)XYv45oj^Zr*m$Rj[fVe>E<{ꕒJ/u }@?0 C=`F1`$0L3@ЀCth#1$% ,+)
πu`xl[@xl>UYg76;{*ֹ+OhBGN
ՄUFBǄ
	:)tJW9`w`z&]TG(qsI.?S\:

l
siO컴/RХCe
t,ҼKyaz`}ܞ6qk}y.YK^̂d2?PKIm  D  PK  C:U            '   org/bouncycastle/asn1/eac/EACTags.classgm6`[c pؔHvCBqM\b7mn	mi݃鑤in$ńO>̳3</sB_@G=~EHjrJEnP)Cme&#
Oʢ{RcTky2婌&5
y=+#'\0RM9Mtr#ѤuMtQ7RXKQF``=,(+c;jcay%.Cw;gbik'*6C:at贑5yQ'Nd蚭fm3YAzNyclst-Tp(.Ի|_o᧱#՞!0ZaSrWcG]$Md@FkUY׹&ɵh=$lM:k{&u}&d`rY|:8U\코Ŵmd s2Vysjbf.lMKyc5ٰ1z:Egz.gG;hͰy3t]sUoyפq1Å\e^pN.2v̶5l5Fk*٢)uM4Hj31VL#xMS#b5E;}iEX`7;Gᄖ0c8X*N-cth=GY7]GGÞ#iBֈ)斌Xx@^:[3
;Ȍ	&k_Y3Vb<:.veRk,\MrY'>*t
Y5ւcS8q^¥_89zc}`sΪZv0aKPW-;-	)eKђ,dpgs/,Y'uLRz^ByH ŗj=k/.Wոk	ڨ*HkT9I]_B֘+-H6w#]PsWKbF9MQ'~S_m-\m3@TЪ	\<-kX"PAF\v/粻er.{Bv")`kiV/NR3}پ

Q3PɊWsej99^O(f'[lCcF=1ffϜ-VN"SKAĩJyV;ό>;U~\fv
ꮵ'(-_)%^4>Ç HVHHIH$$$+IZHV&I$IHI:H֒#$"&I'!@df-$JrI? Vm$Iv$$d7$w#.I!O2D2LrD'I$&$ɐdIFH!$9<ER 9Bqq>.ަkkqVh-^hDËfC=ŋO(R|ʮhi,;[*ߗ/J'&+/ I%B _ 3~c<;cob./MY ?>	73g	qƟ+Ɵ;?d|	|IƗS?nb9p#[l1~6/2NOtW\d54㯃O36WodM>Rˌ0~3. ӌf`43ൌ^Y?㟀S0~Ow1x;㟃08C#'?g"g$Rz#gs$"D
~-1~/%RZ?5G"e0R_/ԗD"e4R_#eMp_lԛd<ɿɧ3~;&_kwX_i'.ەg7':REOR\KpI
V<}EΚ'Q^1m]=_JK18G='D:J%
$.nz}AϋxK$E"i/-vUfGcCD灞97k
b;lO%0x꽐}\4
ϋ \agwWD\ӴDzU_PKRX߭    PK  C:U            .   org/bouncycastle/asn1/eac/ECDSAPublicKey.classWGV`8Na]rȊ-g&R_PֲbyծҘPh@P
8m|$ZR?? ZI+Yrb{fo̬ߕ ^{N/Wy!{,,܁n~	Lv/?QBDB͸\0)UV挚瓪j'eeK4@VUTw\VIU.Ȇj
hѧI-+~jO =:-wT<<c[cĎhITyP)Cɏ5J#6pAQcjDעi*ǵYM[ΨSEi鸚X2%c(I*"bk@SMyҺ!]cC}ZD*S	aѓDvOwSIvH3LEp>T
r,tsܖzxf
,ɬ c5y4_/9N*!=]7.R)*(ƠT	FWgDI*s&ɾrViO(Z=H1%ѕ8\DRғyX9ŜiBTrxOnJJM=g,vn7kѢ'cSzJ,DL튡u]`4\ػE0/Ϙk1ҤtܘzWJVx_ Z(x`ohޠ%rc (*ޱtZݦ.QS:4իJij47ZѕL*	/e{L*`7ߍuFmflfƦmflSeq3~Jo5,2g:EI!E-GD>"x"ni;,u-7Jڙ	<@xk(ٰ1U;YA-=nu~Ӈݠe{wl5¦@p6bKF\=̑[fωm؊@:pnyn)cU䘣ޖlwvݥm)(vI؋Hd؏y	cCo]}$ԢR Ix#CUnfE5C}KI6
	`Jhe3"%0%000p$q-_B^U 3|A>!>Ncч)|ه(>MT|ׇi|aه>C,Qgçep+_eg6w|#>h"×.㳕cA;G>#3pߙcTOB3u>\|[ߔm~ۦ.G?,_;$[j}'oto+QOZGڏ2x]\u<+<A
85Cmb<۞!w{?|=!zGǤ`{^f毗v]	2^Z­,`wKhvj	;,8QP0'4X{/W_&/k
Wф2	1RŀELuuD/2*\M'Piui%oV7x@<ܺj- #䫠wo%z1F:dIFKrR%ӽ{$Hzûk+!,t-D,}G%\_>evP lbfh}AʮgVdf1\j+ĠSkuI|TZ) SCQtddvEZLg
V2L61!Ik^{DVTSY"Gl"MQodhfh7hʧqS	A6"ğğaa⹖ qD֋Bw$OwVwzFy1A"lyzDʹ<yz)BVR\r1ƋgC̈q9C{	{wWR<ѽD?6Ut-V~G7
iO^d;_Ol/8rge"Eu=8l 
ZgE?oG4?m#)kNz΄|Q,_\'p]Un/xky*RPKOa    PK  C:U            2   org/bouncycastle/asn1/eac/Flags$StringJoiner.classR]/`~V:]fԒF⎸ bB{uKviKnIy;A||<=i_^,DHDkM'#sJjͦ1*D\^ܫW}*QxzYn@D>;9?hUܳ.-Fm[2mah?vmdT*R*TUF~3rj"[{*$uБ ƠNuF$jL%L
f-0yUݕHX/L]
ܮ?o
\-{ĳdͱ`;f< o(-LO=`mC
)wBHvs|1{($xQA"f;xo$-M{ܼ_U'~J/桽PKAl=>    PK  C:U            %   org/bouncycastle/asn1/eac/Flags.class]OAil.oĊ E.?(*
k@/0$x7l'ea5-pÅ&Z&ko=~ٖ@bs9 &1D
1č\1ҕH_3(FQN@sKJ*	/	EȐ$}r^_^H+ܭpewlmn+[E/eQah?\vOh98^'
UCǵꖨ=3|ͥ|ʦ!)O
JZ󫞽c toܶwy;tĶ*TtQqQE?C[<}p$
g5GRОQlsssV8ǈhՑF\GHh#:2&FuhRzq]05`L5\m)-АM)Rn0q)5n.zGsyKr%U>бÔ`'-LnIgi֋Xk?c#ɈL&cfN`2W?a*DUi@$n%aOHw6:,r{Qk,&hj';X
^}0!_N
ӻhϏC`|
M**JehRMPK߅sq  5  PK  C:U            *   org/bouncycastle/asn1/eac/PackedDate.classmTMsd~d˖*IIG!!?*'))и)4i	U$qq$#+© \z%26C:C8eWVj}}k# Qd#H	&-@Lov\^@(ʘ	
g\-3X~jUBLLXMs}FuzͶLRm2iPpv4Hӽ:AњFժ̮{}MiVEsݗRLV5t|74a=ͺ[-]hW5Nݾ[fu&c[zSnTNGߚFg S8Zs;4ytڢK!%];9ǃ4amQ<I$.
	g%)-d+j'ŭL|^OMk!SkLf!3a]g51JWv۹!VֵZف>qc+CD(㄂	(*HblU0⢂Ӹ.+~8%"/Xʏ*
lXlJl`E|"@MQ/kl>/3tmG7\%L,}sCQ$SL]5iAB66Rtw~͟f+>o!b)bQ.eXm|V*Iݯq׸@"tW#W>lH7H"D>IR44\b4l\ќCQxdxQ		i_zU}I: {{H
'9fE>ZnvLhTߐk|╛I$G3w	H
ځ*N
RF?x1Wt'u:sL?z*/%GH,8 C+Ӌ]iU!
o}3&PKV9    PK  C:U            3   org/bouncycastle/asn1/eac/PublicKeyDataObject.class]OQa]RݶlH0)1nJ/$r=6ͮ&E$FoyV1dv&yg̷?`ع-Za%d5%}я4v/=IHy[ hlz;z#E!a>k>e[<W]x6E(W#du#z\9w+^1"<4ځH3jK~`)abb@(Tv57DQ	m{yNnϽ ,SN]a*x#8O( 0璅	\0eWux͂H"nm3X掉4Y419d	rTk<Ul%Qb ]IE{0a}H)7wgdWc8q1=n珐`N;.u^0XdH3|G2A]PKt2=  ?  PK  C:U            ,   org/bouncycastle/asn1/eac/RSAPublicKey.classUSWR+
5ҪaCX+VEm*%.]"'$mi?ө=gwXs9%~p_Ƒ#]q<GRAs?t99/)duN19zݟU<UW٢eڦwNA--8)ݪHQZNSU{Ɲo){v˹7aҵ9Y#T([,,Htiaj7]OE*,ApRf7mVr\q:'Мr!C}2w
wܩȜ%˔A4}sbQd-aټeICXggn(<ӱq7(<gZٜMifMץؒjޮYrɋ
WTp=KfkfG''sv)KNӤ*R>6gD;>xRe,odHQ̮}Yx",ĺ}Qm:Nٮiز=ip7
}$Mj9Y6=s9*vb<|ϪxNA/8∊*R*U
2(o6{4({SxWlCjaD:Nm=OoDu]LS)1ڡu=4+4ndS<c{;֕s
T$d=r!埰O@ѨlwǖKe;iS3
84 Vc8:qA^jᒆݸۜ4:n\ek0&1\gxd	L1n3 x	w8L9xo1Pd(%00`EL3IΗ}tLz8?.niD'BV'XD+
O1X5
'ZJaIo^\q}W|(!'2U|=Anݧgjpx`G0XXÉB
NgKήnBv5<Vsߡ;c|c@A	U8dQտ״4G=*43g^fŕ(	Q!rx{C|nbIEKh7}?G{oAS_#D8pNԈuJDxpd
'5ciD^z
#>c?ܯa^uP#`$0c0NPKYZD  
  PK  C:U            /   org/bouncycastle/asn1/eac/UnsignedInteger.classT[OQmvY,(  P.m"xPW$eYKIj"!⃿,K&߹73̙_L S~5bhT8ԓ1w	#jB(NA1]g*Uckbh-;En8&BtZ2ŋAگ{[6=#e8v"S*rkͻ6D*olĆ%(-+aLfqlic29%"yf#p6qn~B:yv1\62+wZn*]u!=bJܚo@=H	A	a	-Z%\pMBv	ZdTL]^$&BSt;36,<BIsO뢜1NVEfz׸yC]ܫd
y_05FdRuH
0LA#)PQ!h
!2n⑌L'c2na\c}#`RF?
xHY7GٜnY@#ގ*,&|In*Ѻx.$JUc#d1!fkJNPFkj)k?>B$b`xEv)I<gL`:@{؟\!˱(A_蓨B&^Ier	jta !ПYO<PKK    PK
    "D:U               org/bouncycastle/asn1/esf/PK  C:U            8   org/bouncycastle/asn1/esf/CommitmentTypeIdentifier.classmKO@*(|S|V7	ш㕔6m%c<P$1ifgٯO F/
SX¿b(fE^qmUmtu3Xqۊ-^sStc(DUWSGnpm5n5ːѻfV[6^!Wn[ko3t7{VI^K؝;ziD9or^
O{~ux"\2ta'L!D
Gw{,Kۻ`s$1"Iq"C(Dyb
si`X&VUbXOcQ TH,2$*v'\:-W*
J1;SD;ĈDdo;aH	pb+q {!6|/PKfs    PK  C:U            8   org/bouncycastle/asn1/esf/CommitmentTypeIndication.class]OAߡ-nY@n+k+*Z4!c,!r]Ųt!?&Ipo2RPZ̜Ιy<b]c|^4L~LjЫY[[ῗ^cw˺;Ǐ[=ͼYUSeqS%!a픕kjZ+VʹTx^65+噸u2C%ꚺ.vГ7L=W7ZeM
ˤ)6b[8cO 	pE@D@>J2L{'	c [omu:Wxhs<ū9yhrzgxʦ*,+lE
:i]BJƨcI0%p׹)AtQĸ@["!F7E`N$N$g;)ت&isG*3B@3,yO#+'}u?:?""'͵d>ȰH6H_c9Ԭ
NNJfeƈD-FNb31cJG]`.pO n}4隫#6ۙ~jsۓ8z;+Iy#YO6TJ'&BPK2*  o  PK  C:U            7   org/bouncycastle/asn1/esf/CommitmentTypeQualifier.classmOPwtŉnNq N bd>
)n-l	~f"q73ܭ<-9sz~0D2۶kDi؋*
޶-0
ClSț5jjzgk MM-9hҪl*fj{ZKVʹ^15JZg;i~;l	
&*<s2U$-~A!Ʈ. $@0 aHpg;AT"٣pJhO y=eѥBx~{OR{.5ik^(7mRRM#qK8'u.1WD+""0ʗ̈́?&bDÐ !MtLSG̲Uwf oڻ*o9B_8)Q Ő	%J2kb#ưIǬLpQpx%G{N,"MxD*!?8s$h#~ Ѻtpu53	RqGaF'}l)-]3G!)(z_s94p-[M<>Iq! PKL  j  PK  C:U            6   org/bouncycastle/asn1/esf/CompleteRevocationRefs.classT]S@=ۂ6P(A
*PG}
a``2W_x3
(#/>O|8x7vݳg={o?MN3lc~2'c/M\7\O>NΚ_fP̽0%l3lV+=PaESÝq|2Sc3'L
rl"/ch;Zx^_8$g/hЭɹ}Lo	Oj{|9/4Wqld(sWtAsi+eyP.AP-!"FBDZqVDOsFQ}ܠtakiOQ䓶,I*z_nka<NmSUc7VT! Tw>]CDC'%/A)dԁ(C@FAUhBJm"tȨ@ݕB	ZPE(%Bh"Ho͸YE֝pua>1VWG;aGzhVN7WePf@uThj_At^,3ܠ(*i3ܥU.mM\udaÏ6~h[ C`%D%4JTiyqWA||E<AU{M\h,
H6qt$^~=2P%$k[%r4
g' PK"(p­    PK  C:U            -   org/bouncycastle/asn1/esf/CrlIdentifier.classUSW$ܰ,XZ+v[6jEDDԴZgIָvƱO|tFgJlD4Ia/眻;&o={{ܔ'<&!K>a9{tN%3jL	=B=^*9ޕ5POrsC/-N5Y_-1+!L5.Qbqm	6=WȖr.Ow]+H@9ý	5L1/d|I6mFљVt>cQ	;ۨ7SmY1,ްk9pYg5,Ydݲhk)%9Eor7ϭ\.X9˵]#^}T<;	5S틍'[:Zgrwq+~Ӽ
cN]43p&x5G;l*ܞSg}!WN#8ÝAvNlT[F-Q7wSmv/AA
1!)M@q44^N(Q`Q6߱=l~q 'dI6s2qOldlN9'ceLβI8y6Gj>HqɸoD@DQOy|=$+D DFhJ}*ReL	ei"TF+PX*X
=D/G@K/T-Pէ
,zGZve4xt	DIQ"H=יx"U7Cqo*M>&SUr$`У<,0,1'ϒ,=[7ӽ1ӻ%_!A"ӑ7-p0]RRc
~`E^Ǥ}r
#)kͺaHo1!PKHtF    PK  C:U            )   org/bouncycastle/asn1/esf/CrlListID.classTMSP=%XR
)QPq:SԱ
!&eԵuF)ƅą
(;n #2xp1LL3D'2em)RR\mkX-5tHOg'RYfuW[[)^|SΌ#ne<fUnHˊk90[Y12XS1tn&ywS/rܵ}<i6[	vIEפw2j8P-ApF_B&	gB):Sb(7GiOQ
1+IK&w'"I
+f(_d`3y6A%|*H0mt2])3_tvg;Qf0UȨWF:d)Fn2jqIR >"C !>ᲀaЎzǀAh&MސtԳ9~tDVqP^ZQ"W¿ࢺLYUM(j/)̓Z55.0&>&:iqa7~ۗlg
JJHT
Zh
K:DVz6Ѷ)`2
"DCTa&\L~3ީPd-Z#!?|a{#BL_:zJRdZh0wSPKc!>!    PK  C:U            *   org/bouncycastle/asn1/esf/CrlOcspRef.classVmSU~aو`ԖR^6HJVRe,K]L~_:HR͌/~'9빛M syl_܂y!9i֧r˱t$t7=ħ9Q,ml'@@Ћu%o(,$h+wK+.#i;z,6L4Sж%l1lC,<N$R}c<[&ĆZѳVt&ɤym6T[0[+{5$c|g}m
VFrHKLf^j^p[Ჱ15o-
a;Bԭ/DF/X;g^ax"k^g`ԅtMSFmp	(;Ax~um+X9͟K5%Q[mGߍ":ou}1JE}8X[yrJr[dӜIMT:}ӓ9m̜ո_힂FeixVB7$#!aoJEB^Fs$as7%HxK-.;zkD0%A'q>'tCŇq2/bǜEQ|ɲ1$9Y!cQD"$#Dsq+"&87{pqB/𜛧_X
(C"!te'UN'C7{l" Q)#V'H8"aj57!<2TKjagl8@blqo~W=p
}|cd$$kU0 z^WSa!aQ7b_"XAʃSVT
S,eB<[tN	٣@ÝSԫ5K>EVS(-މ
s2
pK%el׭ua.Эu~
Z֘30  PKm9(  	  PK  C:U            .   org/bouncycastle/asn1/esf/CrlValidatedID.classU[SYI8u
A%̨(MDfW2c'l2P?*2U샿R'ELRRէO}>g˻ q?]EpReE۵QqÌW,7kŋsBiX^\Rl6HMUs7ln[ɤEϠ#+yGƪr7X!򄂧feλ7Ai`19`K-W쳬Q+eݡXД͛ƒc-Qyc|M}H:h@_mԭM@mU|֜dCئY>)_:=
y~1/ϴ۳WIIh!aN	]II~lG4n0"\Wrpvɼ/e]<),&C'V0lb#l \3~NnZ` { S8^k(
qn+F5f^K;UBsU59-oHaM
dVGX
("`HP٦)8cg6b+ۆY;	eqNF7.YыWdd!gqŔ8daURM&mDޤL[3o˷<A	QiFu*Ѿ
!p
TCG$ QN5FHC1EuVFkZ-VB:F^L=2f^nqJw`Ə|}oqlB_х		:Cd`28 M1&jtz,8HZ5f5.B	x7)c~V<%YMz	xF+cqQFPK l  J  PK  C:U            -   org/bouncycastle/asn1/esf/ESFAttributes.classRP?zD@ A(`E* Ūxi[m4d/| qm6-ڋoeګ3/ (Ъur*eaQAhY+n?QЭD%ajHAOTz^A [V
@MֽTZ-KAz^T[슼if%a{G)L樖"*,Tuخ2`3¶2u-6_<n?snj-oQ`	y爐81e	iT:oڢv̢n|(vwLu:zƋQog&6˅x<6SM좈1_MmUleǄL=qfakugm<{ΣoLsWn{ܙ_?"]ĕ q-
f~%+ZRFaiRDю($D$B:Ht"!I/# d\&dd n1r!q2K<KyN:y=r< !yD2yLdF0
fN|di-q/yq؋Q/F8ŰGŐ۽D}DZdQ^> b'[r.4od\qŶ.^;bE;>tņw=W/PKwfܐ    PK  C:U            .   org/bouncycastle/asn1/esf/OcspIdentifier.classUmSQ~Vu%+^E%{ORL>Wf
w	'}/L3e_Џ|Iaܻ<<oZZ%xB#]
yil˝=x!9냘V7M陌iӑnι:a*_/7κeVD.ئƣ:ɹu̼!L7z$۩H<)==M巄"Z- p[iJ(-0dSu'o
=EDD6S_O56>ibmZ[-p<BITu0T`B1"aA&cmX,P%.J^NRu嬵e[NEa2N8-㌌.2zd8+!дpS	Y8z
zyVhdk"nbЦ\t)heBk!~q*-ՓkM	tnʦiOY	־+J0}5<U
?8>xxU\5
hCH24ٌsຊv`sAfsGA?I6lf>8]6)C<RpzgՍ׋zf@A:Џ.F;nBjC;hv~_B0`mi^}?"f&h׊X%$x%xZZS$"ů~/Zdebn&A\Qsiv R/mW*F넣{ǩ0|!y
(QZKJxY9PK,C     PK  C:U            *   org/bouncycastle/asn1/esf/OcspListID.classTMSY=/B#QNm{@EF8/t$vtҩ	WVqU8q1dFޤ
gss=o8m ^M
'-Ol01O>(K''c	ʸ1疝4L6wۘy]Ǔ^zrbQ:yӎ$V+s/Yc@ӛrK2eaR4l)iۖ/ʼzEreR/YNalyY詭}6RzF#AN[7>4\wOSA'W'Mf9{nr@bݳhR3}\.Y-zH6߭G`.
(تG6WUKd^KC^=ZcbTK7QZW4Nmn5ܼ9gu]D6КF>m-Kezʚ]<\bjXc'Ad;R=<?WUfQ!DMثb~>mTt "cI!:#D1A?30d`b8p41p&BdpGg<]άoM+|'A@ ۠VЎV
? m{Z@|V*f|M:auh[¯^d\@tvU,*
?dK{
tU^^BV=znb+gULEXT\:Q3SgMF9%"[H<_+OTS>a =hʥYPKʏk.V  G  PK  C:U            /   org/bouncycastle/asn1/esf/OcspResponsesID.classUmSW~.Iܰ,F$ XXLM%ոfF'35q|Ns6`	Nf{<ﯿ'ai4/Gn
#ܔV^F󍜎(dҢMOQiq
4V6˼;
S)rͧmY^2gƖ*V1.d(U/)bU^]ӶNnŴf'J1aoZyqK2e8Tj.{jc$)]"(֔(椅'ޜ#kQ5#m9I/muJ)A@ĵ9Պt-]^
*Sp\A
N(8)/wv䝔7O,2Z]_

{Ԏ|dGum3w9Ri'Z	7aO&L7^v٭Z`Mp3Xp
:9:Lk+
pN)ti!%nLCq
*lK2LcJC7.2\bWUk*aL3`eb3ߪ83paAEs*F<gq9}azq(B ]DBYuߔUviO~BXm/DXѶ&AjIZ_amf$Fc(Wp*{U,pw="EEDO=[wC?KAL~`9BH9S'E
9O"w''<}?=}r?B/X.4qw_`w/yuB5,'YU1s\{
CQn PKA%b  K  PK  C:U            )   org/bouncycastle/asn1/esf/OtherHash.classTmO`=t+]^&  ]tMD@8!|*[ي5OyeF_QʶN4Kso{ιv7 sXgm&5Ьeٲ-Й3擅SxA.m#M冝*LU*MMo$#N19Gv]py
NZޱ$w`f8DE1_[6v9tϛE"PMzv덞|yfִoEחv>_^eNu7iwϊ֡ŭcS,U"MB	fvd#xQB}~nEWejF@dC_IvOwQ?բu`zsK~2u݉17t㦂&0!DaDAFEvK5l\A3&H#ZPe!&S2pGqfd\.BBYda>NkNZmind^=1^0
&F^G- fS%ܦT%i?9AHHt!CuKJX.abM´'WiZg *xZP=̰Ц9N5rd{2ޣC;qdI\9uV:OQI)=Hy^lRk~PK[y  Z  PK  C:U            4   org/bouncycastle/asn1/esf/OtherHashAlgAndValue.classUmSW~.IXXF|mRЪ AӢXcے&K]88#̨(sje3a2<ݼyK (
aP J:)MX^u<G]8lى!Lԝq-&+=:Hu˪Wsnů9#`MmHXʢ(ݧmYV9%0R}uzܶ[Y*قʊjƎTIY*xڲ&kʿre֪{s\\+M*'n"ۭU`fy`GV93GsdQvCUe-zγy8<Y=q9PT |nq4Cﶣ!ᤆQ
4pFY
k8'0HfCa˙TzWK곩㴺XU ؇/"'ݱC:իg6ݓ{pYf}&.5^/,ðfB+34阥O`a1Ävl#|i`S>"Q+>MBʀ
&23l5ps_3,#o1:qaò	\a<[?Ǌ.1\gX1tyYmU嶵{"%)0@?svHbYϝ?_H!5{߈,/Pl=GQDbQAu$W62M{6JmZ(M[L{/f&9ڳ4q`b@CRY|qEx3qـ8Jqs/0pyS\3K1Qp{=qrdLPK 6    PK  C:U            ,   org/bouncycastle/asn1/esf/OtherRevRefs.classU[sF7e%h%NB[N즥-%bCںMݴnEF#!y06g?Y[@fϟzJa,m
C &4gZ{HF/FkMa"Z3Q^_&ԋEժ`ɱ72ۮH;͠;ovQ3H,iShim]ne#pֲ(巫D읬u}KOv*4U״-lEʩl"z%77"
#\2rcZ̦Y)
avʩ5{2
VDJY3tL+K}Br}V(_"FmA{%[͒st-R8nV3Hw-g;GJ
؝MB@+vְk`PC
*8ข|c'Tpa|2LuCB籠飱9m~5p}.|QIڦ?1_j_D;}xTt)dj_d/ݯkKtHW}]seJMsci81i|# ApJS8TR:q< fpNR.p¥H"-!U1*&$"y	*ҫk	"%S"{	*R5W\.q-ռ,+JR@GzdɆH!\Ý֭7
k/BdA{bC0 P,֋pAZ7ub3&&

4EQ~|5:k 2]|:n?GMSiXAc!r$,capѓwJy)OK}(c#&++Ԟ .k7us'i&b`	_͑mbh@?PKٖ  v  PK  C:U            ,   org/bouncycastle/asn1/esf/OtherRevVals.classU[WI:	L@2!D+n4\h2$M7|G_5q9/>ܭNF$x未; 䅗%rL9}P\*72_51GRf	
ܠAem,mAq{ȘYN.$Qlz1GܚkZ~~@nc<ִnF/2`Z󚑋&y1+
{L(ek6߁8-W|[.Ff=<jEc4KMVӖD7j5)ZQԽ ,e/{0׈aۨ_ jW`s/.Gw7g7U1w<<6zm	%H8$Wa	G$pLK8!$@1՗PXp*̑f8IS
.|Q!ڦ=A]h[@{-h:ZhR~;!CxءV?*Hδ|
];iJK߱")8UpnѡhT
d\PeḢk
p]Ld\A7nC?я2⦌W!ewdW/BL#.DBø+S."I?rЫBZa^ԑG(࢏(;ҝĹ?![}4Ny	Ȇ
"i
6IzR|rt"E67ZbGt2{	KX(#%<F5԰"Ck̾2YYZ?I]F8$zJ&Jx׉R' ԰gnL| w`nq4g?ӎ{6qT0(#8%&,
2ZPK@'q  U  PK  C:U            0   org/bouncycastle/asn1/esf/RevocationValues.classVsUmfvkZ[K˶ZER6@6YBM-WꈝHV_|?q|M߷6f;mf|;9?!C*@ M6^
\7t뤀}j%]/hFBk7!3R̂PVZSԼѩ|VSzb?vvLgM#1sү,P-mH[dUI*Cf5b"PyRJ&44J	XGѩZr4θrYitB4̺ƴiG ɸ1IyE9m e4tcZMKM1ӪV2Nk)5ݛKx`&e-44UbVN7R}=r6ۚrQoh3V%+Ud.bolsHIu*M:M
n@.wXeu7"RZr!Zkmc`{\mrI/+K+nH6ffLm]cY.j!dn$	X"։DlM;E$ED]"^[{v9An̑PxښN$Z.廢eJ[p!]ε*:6]!	]\q8v3-ݿg;Ş8Ɩ]gun1kpg(Zqqku
-Zv+Lw_k
>NB!+kÅ/\`'d4GF3>^!>[P#8.#<=)C+26Q>V3f"^f{ш!aQЅ1øv\.2͐Ё8äN;2\p}'M1$$*4]%t㪄Vo1S!fkjvC'}wyaha7Fo#u6>]w<B\4Σ+y%|:'̑/	}ȍ(r"$H	"y?^BvPDE䊸^f~g|.
_yFzn#}SDX#
 wϖ}䂃?g1(.:ێ>2P" ܇1t
ZWW]lEV.A.SyDtx	:D|FѴ_D}"	iy?x4FR]cPoVkѻǡxhBۂd"j[)ӑqd^(GȏHW1!
'ASE cw<lhSmx
$FJqRts{i
)z%zzs_Q cn&wE}~&`
٫My<+"
v
Ϫ
i+DE|*{aV	'ձu;?PKZ`  
  PK  C:U            ,   org/bouncycastle/asn1/esf/SPUserNotice.classUmSW~ċ*yi6*,&m^LQb`I_J֬1?|_Lii/4=E3{s{ι粯o W؋~	`(]%b?kX}[XL#&0djAy j,iHQN4t^;oV*I?%alҹFE"	+|CL\#/򸓓ljZԬ\qhӒ0M̹b,l#oI897M)hXeầlf,nSQsH|HELz,_eKk%1dRəںIJSny!{PhwHZ>q0_iLtF3suzl(L3j8s΋Ɩady'g2cfx>de)a%?
[&X{k3;ey8nOu")&ح#CU_=`qx7`jWw
nHׂӫR$̞ 0CgzNrkc+.Ik=L f'
<p)8T{`W
g
\5.xq[/b~ Q,1{2Ʊ$c$dLK!XBܗ
GI!R2"X[1ʘ&'q>鏗ªx >.QUuJVw dݤԗ«@t_}
ьUd}BH$GU`l}*~	W-M	ޅN#	/LF^"2-SR#![dvc0^xLߟ*1R
#i]{GuaF[<"/2Vt:E67[
iZEs<Xo}NGpGh!TӢy_X,4mkdUfV|BCPKh\  	  PK  C:U            %   org/bouncycastle/asn1/esf/SPuri.classRmkA~6rKnMkU8
PBbl~\p5^e[_#~G3
X1~yvgfvo2Vw&Q(1L6܈:G`0Tq5Bx' Usţq 0ߎ~}ޑ-NշVŬ'/FHD_>Rزm(cY]G^dXcCɭn3?ԝ-<eo$W%+Ɲ|?jR`aBBE.)3caeppDML26aI[}zRs]"R3o×@<5%A
Rĥ}|;E;#<Յ}g>z7fTL8C?sLyJu]}B=
ʝ&O`k},C+[:^M'PJOW9UKti𝄁_PK    PK  C:U            6   org/bouncycastle/asn1/esf/SigPolicyQualifierInfo.classmoPwu8
PSԙNYB:U-0qcq7Cϥir}{/ x,wi4JngOpomtk^ިXUC;zuVxߙ1ĬZE)Zvu+jL)[mSJjѺY'9?$[M
zkkݡۯ3+^V,[zI-ff5lP 
 	pAa17@	3>ܿ!<CUfE5ìp0z~es50:'BSѥ wE->5-s.?Y&3n׆\-gC"	S""f$x,o] `NywF8r187 dA$m授VDH*ѭ۪n4'r>jB7nRo=rkrr@+t`ǽČSe7&KA~N_n?C aAY/O1ߖ@	'ăF+d\p<}ӗq&jO?CobÉ/PK{  b  PK  C:U            3   org/bouncycastle/asn1/esf/SigPolicyQualifiers.classOPǿw++1"+b!W2cB%	-k+kG	3Q }25V!>sz>ｽ7 Đ6Ⱦf>0"z
%d #pB[M=A
޲R{܅f#5QӵٌvM67|W:mʆ-%a"%dC_ihw2BaPCNaav;0f@yBs͛I](<BU?m25𑹾riw/N%i[=WQP1``04Rqe&`R9qCG:FpS2:
1:!;t	k!w>_%3zh",rxܥ!SCZQ?r)	c,vX'jb͐Qθ8E)ZuB筅/D|bfJZSыQX|̏1՘<Bw:1u	WbPT7PKYQ    PK  C:U            1   org/bouncycastle/asn1/esf/SignaturePolicyId.classV[wU&NNIT̴
ATXI/BBhi2M7>O(kلeɥ=^y}Y_?*&0  d
ĔmSFj1nvH9qjHa"^3AV7wӮhYyr[wݯbeFp~Cg-ݮeet+ߨ5;Mtͺ-6L647jzӮ<kYݱs|^nήԫe(:qSbE)T)3/wJ7U@:4;`31삻n4y%jxo&k|[w
coVCtOr	:!G@ҭs
随IpݑHqLq#"FEqR)?|'\A4rɆ<FO(i/ſ䦰գȇN|,Z})aw3s߽$2\Sǃf2fLٯk}m>\C67gǊb|gIא*T881G0&,C21YcʆweHul:0dK8[Ra6]	i2|$<[/`=	o` "Hx.D>SS>Ttû(V@V.ۓT9U+}0(P~@B
ʖ6j[1lƨqIE#|:+j_h-Ȱxtm||\hSַPn6JZjEUykcKHZӭmcn
È+PDEDt\	m<ƔHQ1frªgѡ
. jȅ-|ʖOO<Fq"-혏 uxrm|6uI{A.Ӷeh䖤 PK:  q
  PK  C:U            9   org/bouncycastle/asn1/esf/SignaturePolicyIdentifier.classS]oA=#c[~b]1!!MmXu4Ҥ?hb΂Q+ɝsΜ{fη>CH+9CX#hhV[UF뉎jqK5ý~Ovm</[un[>q-<ȶ׺gNɨ4z߶61N<>I'7&lx־%z)oו6w{֡YBA\AB`^?60&!~V>ܰ1FSɦ?,19]m
OL9kj^YEs*ȪH⒊(U\ejX!56H#p3Nk9p!Eπaq?j-#0M}T,Qy#4F
e;/?#<
	=zy6m_g(qg>mauAIR&FY*)=| A'sV@2O߈
@Ap,pοtcXË@y[zyPKR'"    PK  C:U            /   org/bouncycastle/asn1/esf/SignerAttribute.classV[W[E2p(%TDr)rkKi( vH&'җ>7^Z,}h]{NHXٳ39><r	Y8c,}X7t:EuE'T#_ԢCx2'3Ft-̈́WFjπ4S|ԈiSc1S5*5Rע5fQ-돚~/δLR<3j"H`B[A	-&M5>zP~d4rp5-z`8{t0mň艘:DMmi2
OyjC[5kchx7hD1u>I4wo)aAFR^Dk=bm%9JlTK/zRp"bCRGU!ԚI;)}I78dD&W:pppr\pq\x
&799Zܞb(-qvt\{jG""#*)VvMK
ǹe/>iw',ަ\gLJɖ,"Te]zVD4a,zfT>bMpER<±~+EVvIX
pUe%Pp
j0$|
0"nUPۂTmxW{ޯB 2:0-Ã)a
L"2f|$s_cB*dcDwܥv,ǵ&l򴸼h.`i!NS"7G,u8m"-<aumZ
JPʬHIAo9d0~gJNv=_3l\Rp%I[H
V*+v[?wr}	\v*<-s']F,G8>Kjiumx"9,cY5{Ys~\ARO4 8݌S>K)w88dqS^M/PIv*$RYAmHW@,`N>%C<¢op	7љب]Fg
mѲo<G:|ض{~9dr2,7ڗ[y|*|9H׽?PKW#  
  PK  C:U            .   org/bouncycastle/asn1/esf/SignerLocation.classVkSU~,,RzA
& ZŒ*
%mI²I^Z^f?fDg,2g/tKd`<{{e epD'q1`?OjOn:ɥi39TEռno9-iersq+RQS)$ܐ:	Қu1h(MU?ͼIw6Inqͬľ0>A^{-Gٙhr1CBqo*:39-fhS:~0j,f
=5T3wH4&gLM6iҍh̤Ŝec}&6k^W7>3:nhv*sbP)qƴfHe'VZb%9V]9rYZZ4M-]U|
fNWV 1-U7[8țoRVt1O>W>ϊxN""ZEqP!p֞]ݹ]@1Bo0MV{W\BЋjS7EdJpPқh#ئbphZzCTe9ãb(;_w)z8J

>JB׾z6xfl|5-T(ȕϪrsjֺnUk("RFe	^	A^M2ZpR.ӗd@8%Çl;2Ys2h`ǫ1S}1v"%	aI
aDBqo14	fЁwޓЉw$g.I`Ɛ
ޤj2)RӲT%#>nA5;oK1|KF:S
wh1F) ^č񩀻	x"3<HTj9Ч>'11<ӾhM}󐕈+?@_A~,";4/!YS=x4G.|A

GDHEthwֵ<mm-̹E;z/yRF*	
Uk!W?jmF%ܶD] &}Dcb~m)|f.2$WtE]KJ(/b^4u'FUXph(<K(L~6a==9~--llYDߩWbd{(΄#nr{88[~	">\ĭnDn|e&
|TUR&}5z:Nn%DL
p^BgYs09˳]/m/#\l)B	'inPKPFS  
  PK
    "D:U               org/bouncycastle/asn1/ess/PK  C:U            ,   org/bouncycastle/asn1/ess/ContentHints.classUkSa~^VUV^[
J2f]6g?ͤX4:/	99Ϲ. ׷`puk\7tsNxAMfZJMۦ0޶мւ+SuWwY')S1TkfdpnLCo"\OꞪ--`di~8fE2PĞH2tfC`S"{]#%ӎI82°+"!L>SaJ>L놙bp	bR&V@ 4h$!0[~eBD	Ulf7]%q)Y/n	\CZ͎eP*p]tkZ#K /Ǫ^)k})ڸ2ߪl*
3Z!E.)
MRQWcu ː[Pn	60.$H^	NIK_Dr1EpPDqTD+FDᙈvr1!x.c"x"ٸwA%Gq'*F/E풩eYTяά(5pP,`ϼ@i|>j3xNYO2CvHEvE\6cr~10p}Ɂ!"tupdv%ވ?MG@@Re-r֞IdOd?ˌ92y@u` 'P-Eк {~gtZϮ>@)k|w4^_ǜ@[k/7rƺ	#;EZu/f9NQ0StxB@ÅPK4  g  PK  C:U            1   org/bouncycastle/asn1/ess/ContentIdentifier.class]kAQ756G:^,
B׉ŝ)	Q!g-l9ϼr v͐KqԹHE%|GJPdPNh;A+>Qi(ݓHNPmyP3	MݏTt;Xy:&$JKm8}OGHGJl
Lrs6lY9bc_u^ɶ7b P+3i0#)#\d.;cV:[c6>"Z| Z=5]zy>$#e:;C7];x:³!
J!eMVh96cO5sj_a<&,<`0`mPK:u  Y  PK  C:U            )   org/bouncycastle/asn1/ess/ESSCertID.class[sTQTLZRH[FlhۂjHoQ	pSQQ əo#3 a3xKL+	Ɨq3={˯ .ǄH:S䦄h:UdUY,Ud=Κ,oH8Q4)O|)RFJ#M7
[duGH	ʳ52	=	>0vm8\ٶEͰnP8~)v|H8uk9bòvᘏMm3<g9Wo/^5mIYԉM
f;JXp)V|hkf vj?#</WuԣWr3C6|\xLw嶠k|]z'mI'e"㔌WeeL8#,e>R1tȞĉM32LZ9Cni^t$7]	eఘAL_K3;0f.wbd_W!<Cwwȕ#zTB\^?ooTTØ8"*#ʣq AULbYT-]b6/H*<pŻ
f9X&[
C,n+X{,,(HcMA)o]AwG>*=co2vsRGFtN2&(k ?~D\ڞ6Zޓ
()Aa]ֵ>6E'L=L6*-?.5	ۛlߴl/3< e|B$1&C8szRaIAk#] ҧp_vyK4)=Ž&BeS!#br
Uڑ3̴1_zskd[0KR25	PK\  ^  PK  C:U            +   org/bouncycastle/asn1/ess/ESSCertIDv2.classVkse~6	4R.-(VlH.mVZ4 Ѵ )ՀR%]nMmQQ33$̨|#6u2syssy;Ώ o0w _0ty8/X#O(fh);Qm:S
Em6GFO.&&b3S4ssAYٚ!W5T[2=A+LY7,[&xeY9L&5Ucz^)juL%Sf޾~VAr GuD㺮fd=ffra.*ꜭe
{ˠmjFf(ip0kfٜ,)ejTh,93j(ٴ<C@MRYblup3bK)Ơ\Uae*R-+:Lr#7eG	7x]T*ڵb_j0luȜјiK
Ogg9oMmVY79"$ωh"^&]EqXċ"
HWqRN&Z&OOؖ`ܮ%PbmׯvidtK,M\) ;ԽXAܳő`sv #k *gUjtClCFܨjWӾ5k,قu"*͚\MrJh$YJh		ϰ؇BHW^xE%)	{J؎=Јaa1*!<;ÐfgqP~$Y\d1z :n ]Hb!	Y(XhXLOY\
 1gX0+,T8=xQ\?lƤ-+	~XN=僇SE3g)k4<@q5||yi?@9ME+OeB嗚2Wb4
p#Ǉuw^DgT.!x?<rXxOFy|;hC>~p7Vm `ֻh"5V}zS="E5a;LJjҩL"B" "!HGB	1F>|4vrS+Gױ(pgs? C& "Np¿`nyr6D^ۀ`nEItT]	vDUK"Gqve}H[Gi?%\ۋH݃Y?#PKgo=K  F  PK  C:U            +   org/bouncycastle/asn1/ess/OtherCertID.classVmSU~6,@EkKHI6Z
/JTjDkd	K.PZӏtƯؤmQ.'3{ W}p$Q/	>\7LÝ=eQ^7zc<'e2Ҷt6e-p74g]@AU0mm׻nӜ׻I|rn'urꆞv\JP F& 7mMifVMrzVl~S7)JafgF.-;Zy3$9nNW5W[fh9
4 jbm:N׋rKm0p<hnNSá8꒻ܬĜqX]JOdƚNM5H1jFR&xC0,upG .͖kqnƦۤ	WX="ΈxKDE#⬈wEq^D"h:<R~$9#K3Z~Ihan,p! ;m꽏2AG8R0fŽ)F5m_2?Q|M;wVqשxS
v+C'dWd6'dW}!}"l|dY .2qEE4hAvdfт0dCpUFX7bJ 6L#et`,y"b		CB%,	a,+!·
nFBHVWT,KM)_/aߵa;kec۞tÛ]~T9Ge)((Af}kĞ!BlWyb)%"
djI4XG-`3#x
>@	C.t	dY_Zz?aGk(Х/{?sMǲu_@y?nEDD*!uuAJ䂂TJKEGȓa62S;H GJ	>aү+T(AM"]D
p+$Y̳尝+(<s@N|;Zcg]NX_ƿJFR"*BFH PKT?)V  
  PK  C:U            7   org/bouncycastle/asn1/ess/OtherSigningCertificate.classUnU]Ǘ1iSB!$x5ⶐ8q) MS3ř1$jy'xBHxM%"|g$`Y{u?8#*!2kJi|eXhʝݨf6-KkMfdffh䍆SX	dzQ?{)jLAk765Ǵ-*@
:auV('oqНyASm-SӬjPU6ߨnmt_7Q`tTrU]2k!:8ҭ쒥mfS`\/;ʦ7[,0u0iqim3ӗ̪Eey5OZf<'ZmcnLı=c%H"0,ᘄF$Q	/
L(&Q(F'Y1*i}ܵKAznUb35U%cU{>KelooAs\Q0UH[vw?'RZ8RdAq%ddC{(2i1Y^='#3\D.G17H
57ފb
WQWcg4QZb-	
XOoj\褓$ @:wm(.@C0䗈 >FdYm|#v!a,*W9jKjtC_cCLu0Y Qn1*Ϸ­6?`Rpq5wnnab	I$-ø0v0]N>r. #SD
R;~GWWM17r鋀=d &a\	5_yW@CXp
1Xbq;D'%L1^FƏ|TSp^k	* PK-dح    PK  C:U            2   org/bouncycastle/asn1/ess/SigningCertificate.classUnU]Ǘ1iSB!M{
iBmCLi2ZScOg~'TTaq{)WT̐&9mg
9|C@8-*ɔlZsUVM6K7R-kRJ }l7k5{Z˩yeV+_TՂtJs ggvvs]sLۢaZ%0,Duj	jS-Y-Gѭ{;U5
bmjfzݨifmcݰ}hIuU[0U)?yLV7V&n*EGST?+;=^t0K5k]S#=}4H:6eiI312*AA	G$0$ᘄ$Kx]`2Nvgc(-|_4},wxyϊ-=\KȦ=Qq7Leb;s%Md{}G?UgUK｝:f,,r7tH@Fq7E!"cY)2xyxFF?Cgy3pi2\cƑe108'10p-I,0,q
I)Uz	/oh\ݤ& D:wm(.@30) <FtE|%!9aR$U:sԪJjۑ1m!&ttphc۸ʿ+pO|7hvBHBZ|`txˏaԏacP:T1SD
S;+NWFwι7MHNd!!aT<%񶯼+_K!*ZLK,<;{-?,axyߣ@|lhs^+﹬9dG5)*PKW~Nv    PK  C:U            4   org/bouncycastle/asn1/ess/SigningCertificateV2.classUkSU~N.6"U@H6KhBhJѴޖ65lb08M3޾_X}7+DB=<{?g pJmx"iZ6Lú)pzU-ۺ~=(Jʶ=ԺUj\z<%^۹>|Z|R6Gi~ZFŤnXjU7H.+Vfڬ[*e7蚵b{uGUOzI-J[ijz#
LrV0KFǧ[_JZn<7؛ΎM9'nrr_`7/gL*sZz,R+Ii
٨[eЈϪ] IIx^¨1	%K8#	^qV:2f֌DG0OҙqjL"<Gmj_DyG}ɶ`>rR'ُDjQ*+~.;O*Bɯv۷3qg/1n\}-%dzvXh^0"22/rKGLsXyC^,2 0\e>0n1U?xa!!xv7c)c?-zǒ"ZjRwX gT-M-`Nك_
)"Ki!\L]"
l=Þ1R];J;rJ
}PӅ&
r
nb%n~u{(1c٧qG8\iU')'QAiak>
`꥓p):J]أ<`;اҺ<$bȸHfE;ӎ\}c}ݞ-$K|ggW弣|gWr1vȶC|" 3Ȕe\pb$){m!T6~&<ϊ{TvǇ>|_PK'  	  PK
    "D:U               org/bouncycastle/asn1/est/PK  C:U            )   org/bouncycastle/asn1/est/AttrOrOID.classUmsU~.	dVmU҆]ZҴ@+JJ/6d͌/OrsB,s=y뽻׿2!L	Ŵ;-yW`uZ4R^-[j]sԥY
6T})A57i7BMavN<0wۮ#ne)]$].[%JM{NtIV8݅TSJrkG]d5U0~2̪3o$]OYv
n\/[zZt\1Yo{)tVf94`U}O/7ffU6
Uþ{G+0Us6['j`N*Ĵc!*1"qBDDbBbRy/H(/\<P
C%'bZ%$trS(?X	T)MwJ[Р~%`r!R^~N !=0nUk*BWĐ1bT",T
R1Y]P!A*xQ$.EXRp
#`I7X|@g5\
y""MƠ[Wz7
0E\t@{E۠UN%3֛!G1qH`b|8mv
?菑FHߓmگB 6»Hwiu.vϛ['m%i38M|v1D>hMV TYk}՚ň$YQd	Sfi rGԚ[dsxqdzgz
a=5ӝ阵y/
APK@1    PK  C:U            (   org/bouncycastle/asn1/est/CsrAttrs.class_OPƟn83U: K&U)RD^y(,x;x!oW&([Fb=ϳ| $fj2Ggl

+eK̂+,K@k掭<㸞Ve]۰LbKy}/M
n΄>[@k#9Ŧ-,>\:\O[s;di6гD]-KBT,E"U9#O,-@U3(ouc`Tk$UV[O3Y<
TdY)ui2ʻھl=+F>oT>C3ܨF?K2_	Eat)AP " npU a !Mѥ("
21ErUF2:qM&N˸1*|B<|zxhsNE}h%"~+oѾ }ClU=Lm۾09
8BZo7˘fq}Gi0?sUL>b|hO꣩2T`9jDXu%RM-OQNFB(!.K7#lIW%:őD{@43q>A>:Ví
~PKے  |  PK  C:U            %   org/bouncycastle/asn1/est/Utils.classJ@in6U"x@0ыm\JJL$
y+=)|(1](
aoE{'zY3@V&i^0g)rYD2kmᨬfbZ>iJmr%.FS%U]nLkƿwO?hUxqd` <	݋^~뭢cmU`7裋>\;f;c7X_PKe     PK
    "D:U               org/bouncycastle/asn1/icao/PK  C:U            /   org/bouncycastle/asn1/icao/CscaMasterList.classU]SW~67YJUB
$	@Z6k
]A{7	Li{EH{k7#$C&39=yu6xA$>D2[el0ȴiY[w\g<*n=kc2. yql뛺<{<1qJfp}k1Ehja$d)m.
W9-'(ktuJYղzc2mYUm]X]d-(j֬[,?%~D7vZٴ
+`.[VqZ܋yQ~6ws|VV,cuHl97kF/7SH)bH~S_hNv2s-pGtz5L\'Kw׃jx]D7DxS	'E1 "&bP&Rک5{ɅW}V~P4%xQȗ&~ءdάMxSlA{jCix,>4-jre~Z<>өm:๑t
bR)422dDe ,-Gdey	66e%nL30.F59	gqC0c2|ϰ(a>`#!$r^*T$A-	)ܔ1}}r?\JK(4!Q
3#BSST@;DߑRt^ƃ*-aJݤE	i(lJRh>Zwg

ߣPCla8_'=BO+,E
W`lce:SsQIUPcOq/<S~ƽ'1U67a)t HVDcH"lD1BQh<jVFw(gȹw+4}ɌnViP&)yub[R;ѝA8/#g(dRCgKCc|g/[_5iYVWPK},  	  PK  C:U            .   org/bouncycastle/asn1/icao/DataGroupHash.classT]SP=@ +"OIS(hEP,X>ަllouF(G_|G9MK:sv}0揸%Qͺ0mEZdɤ$l5wXKM	ުs3IY	)<?"3b8
("m<'ݲ+
1Sm˂yna;1[M!lsfƴw`{x=\mNmIDܢ%͍LksʕJC1c<k)	õy1]t[Pcv>2<ywDY+cqkהqEU2:e\%[u	#v#$af٥N˽"wAҚՉ^^HQ˃v~{Z\ynjE}4^7vw(tI]R]-Z%gOjHEURIEx4bX1~mLIA+>L	'ࡂ~L+G
nᾀ*$k
$xv^ӄ!bӵ@U	J@º{z
-
/xKC<+b !9a#mKQi?S!;8@xC
tՏ},|vH=^Qjx"\	BOYѦ/?OF+nWF1
hI'2\Boh거dKX-kPK    PK  C:U            6   org/bouncycastle/asn1/icao/ICAOObjectIdentifiers.class]OA߱]jU
~. VpEbRcUvnMSDM(e6nr93sf6ϯ4Ĵ&&.d2CUUZVTjXWPB\FVbz-:]>CQm
羷;<b($)rF"hJ,NNtܾte9p dzt$Nw璔	Ov=}^c0vn4JMr rgP/f9mSG[?[=(y²CYv:/K
KWXJY{;
\7pMWj'ۿ/ۉ&Y\,f	yB0G(Jy5
di=}BLX!< *+%TNH35Z=*(WJ.hךZ:uVkQk)VQF}G߰6	jcr3`k-mc4}L\ldbN|l7Ȧc['kvsM}£OqUPKhYB    PK  C:U            2   org/bouncycastle/asn1/icao/LDSSecurityObject.classV[weӦL:ڂ[@k)V+ɐ3̤xC^~ ._t/>,vY
Ln-DZ>Ϟs+ s/y!>9v\'+NlMC)ɤF4ЖRW[IF6s\L\CҔ\K!I-Z`:e=5K]TS@KJ·{ce+zBNM^Q-@*ͬd\5-<Vˆ b+,q4iG켢*ѴtZM)A3Fjv[ʠeZ#:M%=VAv=N
ӯNgydU:?X4Ttbi5Xzwt0~{DOIe2
c;6jcZщ!B~9S*cbDe

V<U4R%dt8WYj\,״Cgeܾh6XN7tԦ5[nN^*g=]ĞkLtunaf7XOWEDD.i~;DK3"vks_pjJ.9-߬|%i5j5nU[𭣘 ֪HPK`MGe'`wZƥ&`d`>:`M%p͡r{\U
rW\Mrs?_cdI8j9F D݊x-Gk=/ey?m4ۭS᠌haO^F6
2d6O`OE[qG26㨌1$C0yq>؄16'ٜф<9ۈ~y96MB^cJ؃l.y#_$$\ЋlR")6C0 Çn(9d$rp>gXVWǔY~+ba4
!4SC'HGgL:$u<JGM8C8_4~EmxC!t-F,Yf"ES
fh{&sL]$`Lo"?%AEX񍓡m-ue71SikQMZ)%}ǝR~4<@;DT4#"i|N8/^* ?,>ۚq"9|HɄ"+?D![JH]Wǭ_Pbu䷴7|o
2ױwV#7{Y⻘FX@l, a-[+l҃y1jSE`8V>i?	1p>k-ӿKS4p>Du|V
X>RYYB6O	 PKRu    PK  C:U            /   org/bouncycastle/asn1/icao/LDSVersionInfo.classT]SP=Rb|&HDQ"XjUf	?O:3~R &3g{dwW 3x@/M$7-Y]-e83Ut4K7hWBѴӵ
CwC'Nr俰LuvxCԼfd>o|+mx[Kv!%KkE'oZњV'	<]`sk)[.W@97m*n?"IˉgGƚRgꚭ^[ֺ0^¤IE!0OBչi:6.s?N	8#[@zԱcDS]k_UE0iEk1lAܻKOhɍxY9*=b,.ڂh?a]e	BA鄄+DຈALs!bWE\5"rp['HhҗhJ;wct8Do^}>U~,Ud
1BAmdU^tU1avBw!?o$J>C{O2.+xPf庘O )
vpV@OwCF <&<ƔWcL{wRJMmA,T1uPK*_  g  PK
    "D:U               org/bouncycastle/asn1/isismtt/PK  C:U            <   org/bouncycastle/asn1/isismtt/ISISMTTObjectIdentifiers.classrFH45@	$ٲ'@0	.PRnY
+j3eЗ:oF19k[D4E9tIN8tq:KN8r+N8]f76ѱWJ{~K^q+{7h_|)`3f늹fed7FAba?iiUTJYЧESHn|lK-@2ω0TJbvFVuU̩|&:{ RD=tC˧Cɵv-ɸPжL1:RZc|4R"S*{,FA7e&nYϙŢ+=33hONŝvL{IY^|-L^U`Ngm*
v7ݛ3)F(J0ɭ"43Jn7SXkm>Nl@Y$"BCUU>_V7ꍕ47@tc˟Znw??[T1` 

@Pi Mp
5tX@x,+*<
`x0Hxh-	e9&c^u'h7ެr:s:ӒӂӢq3NgVN9tiSߪy6eVQGZx6+=Pl/}C/\TZ[쐵-G}	{Mc־o=`mڟamrk۰ND/vHPK&    PK
    "D:U            #   org/bouncycastle/asn1/isismtt/ocsp/PK  C:U            1   org/bouncycastle/asn1/isismtt/ocsp/CertHash.classUmWU~$l,mM6@)hK&@mT4fnv
I?pQLvy+I3wg;3wϿ Px[B(ʷ岄p2%ϻHr%k?le9-LN/%<yt3Y?7K%Bժk5}pYSЅyW(a)alluϓpT6f[ZE 't@L%b! ,6˺p$pu	oZ^10rvg"ܾ jS-d0)[+gVݺcl'l3{d&[X\p2Ѻݍ}K'Dw+p3h~!Ѯ}tgY^Ekx?
/'nd/Q'h#G²3YGdZ,\UAp[xGƻ2Fd'㼌22Fe\K2.@	'KoP2|uOgG4G9	fܒ||ijCǂv^g;:mk]9{|}W,fLNѤuࡑwq̟kT1-PDHEaa*pSY"[*7q[O)7wT3f9/QP0\Ce)`EF$CaIY|п+FQ!o||/K10X^}ӍQM?im
@k?%>P
¤P0QOl>fjXbZF:i
MA<6HFQHQLh5,@%3F2JtZ:Ԁ
hp[6`_B!G1#S|TLh=A4%+vdwsiZ*=
O<GcbB6@LM0Q4a-t׋ׄK&PK`   	  PK  C:U            =   org/bouncycastle/asn1/isismtt/ocsp/RequestedCertificate.classU[WW&LQDlE`UBF[LTT6d&&'
@tZվUdmV>߾ 8#Ao;#8 JxAA86t9#d=V;xgNخ-O)Pȧͷp
L)v,Ř(JM}ŶL)lLwPYayYaX+S#|רǺٖ0l)F\FFbؖ-yC-s9'dC%:fDĔ+JJ-IӵW%m̓Id暰d [R Όjwڎ#rcxaFCXl5󦙰Dz25g=WAouL7j۵bIbspeUiI6060Ml]1MƸdvD+ּe#f=88/z=PxjIּiq,}ۚ4ow=gRSMI[GpG%2YBb,Im:-*;|X},m'1Z,t 
b>FMrnb/y[7^޲{n|5ψzL `PT*TR*ثbPELŐaTW񂊄ӵxN{lhM&kX2o=^-
-
﷙qj2./"EnGϏےjMzu:ܿ¬ßz/
[xM(^4iNWmnt8Ѓu@(:t<Uv(:ulc+:
/1DqVtNG?&t$y}aJǳfaЉ.20L
#4g84eCu
yhH
cxO^e^;9Wkx>c]gh^Y/uYK
p
N
Yia6/A?BZS_nW?!Lp1ZOn#ɣѽl|UuC$ra	#K89[͞P+(WP$[U;{zoɇl8TOP²o"%ǫhO'>^'||8/Mf.SL`.唛zLMEJECG 
vω7`K|	gf06ϫVN=N#Do7x{$H[}
"Y䡂oƗp|Uߧ|Pa/HU/8d 4hngh3S0[zC?d0)*ۅƞ PKZ  :  PK
    "D:U            #   org/bouncycastle/asn1/isismtt/x509/PK  C:U            D   org/bouncycastle/asn1/isismtt/x509/AdditionalInformationSyntax.class]KA1Vk1(bJ{Sr9٬a4QO_DM Ƌ3q)$7gΜ; o̐*1SZ]B=0q5QfpHtS0jx/c+:a/Qƈ˷bVS(=6MQEdF3MhͿFIċ ,Ya*)RERZ) gLwǍ2}iCyC`6<h1iLŤSe/x
3aZlYj#i8D,C4Ʃ)ʀy~
9n?x`6kw	KĢt8W|fıhf;:^eׄ'Ka4Y&o0Nڴ=s
PKN6    PK  C:U            8   org/bouncycastle/asn1/isismtt/x509/AdmissionSyntax.classU[WWN0rj5Pmm\V;$c̄}#Z5eCICWvPϜ?_+KX
#[xbڥ.}Oss\7u&CτZӚf]1.XՒdzACSTL+eQ.^U2Ųnۺe)Z,2t۲LYNJE3I[LG3{qӗ9~aOM&s4ӦA nN-k|~iE+8A%ڳVUZd8VRt3+,HtE]UC5Ki)3R̮CN4t(Tu4QӍV:J֤HU15ːhݙLn.5VQ]2dQp6c0h*{i3vɭƐ:Ҙ1\hmL*?GX$wzYwU+.-ഀ~gsb	xwaw0ۋL{≙=DH{I/7{.>?bvz;1'mLkږ!4Җ7a(vZy[s,8'M>HZF\oa5imZs0]h7Cҏ!ʾSK8K",<$:%D|(W$\DU	I7&'s6'w4'3	DȘ'8)qU)'s b_r(R1|%}|0f9KIHc9G-<U+ 9л?QhDEhLɯ  ;қW6B:OҀD~|@:vuP85FBݔj'h-
:V~Bb'd%xx$'CT11B#ס F
=  -Piq,id}xg(q(''ya>
'ɌcLl!h4#GIe>uda˒"8&'i~:]c3d.E@_r #×䞽+LE5\dF?/PKL;D  
  PK  C:U            3   org/bouncycastle/asn1/isismtt/x509/Admissions.classVWW&D&Vk#"ZvH88V>sxS[N[}IV3,6Ҝ۷{?C8c68CUW(
TPV@ѓFN
pha,S#0
eTKN\f\2CF6'lZM#tÑ3YbKF$RTF9벑U<9mM+V44946LQr4"ghT=]'񴝭H,t,#e6ʠdilS5MIBT=P?!OM7KݟM2ik꒐K4T-d(6'gZddeǈ_/MQW-7|;*w?>1HOխQРHe^]$Յi%`KvUYn+\.5@
e7j5lٓN֜ON]SbXݙQ-u(>pjyl<<c<vc vvV]}wDV0ۇJnQ-:-#;5XNeoz8#J/ˠZ
nE
jnV{Zessm=Puc<T )WDs򴞇+S{*گ<j'\|Z6J,\Zwj~MVJf}TDE0 "6`}P/b#xhƠ6(bNϠ/XpJhC08D18/^c`0ր(^g7%,ПƔ.T
AH/b0 +A.(4^),5wHѲ:n+9(QQ
D;Rh)
NH HOz{gG4AGgb]iy\]pw{Uk6K*㈛ G^Z>
q[F=nrxC@?@_HnF9>Yt.kY챎<֖;_/`ߦ=L3]ˑ#jW}Wbm<<<AC<׬	4lo'	6PcqͬR"yIkCR,UOs٭x{=κ8MsyS_qls=vn
mvU|ɟ,<F+iׁzѓ/!#h[N|M"N=DsU!TgKm<zPKMQ  
  PK  C:U            >   org/bouncycastle/asn1/isismtt/x509/DeclarationOfMajority.classV[WW$0Q:HĈV[Ţ	`{&ap2'~>ԗhWt5k҇ڽ3$Cs>߾}s&(vDq@B(ޛ㔄p<Wyxiސi-zpϫ"Sc$ybkŢiNEUlձEuFT}Ns5nIٴzsEllY)Caߎ!aK+S&A.y	2ZA:u|bLf̼=մuΫݴ)*
VBǼvGKZm$I2kFtQX#]Mxio˦./Gu0;9n53$uY"dj";vK0GmsL.Tosʨ;ymS^p5˼+&Ex'"bnNˢ~G
_ߜ82z:U\WID]{)g6%T#k?>{Mw\ӣN+ysCt 1l.e<-2#28&#.WFBFzETL;;ᦐt:>{o1Az	.'*6[Jħ3[&ؒ][DptFdhKJog	8-[>cEfkR&~,cP0Nİd8E	9Nưc8bhUC!1k7xw"=dxa
6Sp
_3xCY0 n)8a)M

.ƋaZE\, 9_a'OaShjZOx~V䛇n"_ S5TlWZ"I]
듴hXЏ*IsdT:/iumt%(QC*
0WUa+eop+|N:UѵTK.掇|?L
r*?n*
U|	;z@d:;DqNr5FgZ@IH4$%D"L%tԐz/9(w*XHTP6*ÙAh{FB8U_PѺ-JdK˻$ӘX܏]4r(.Go	MNuO1@XBd}~Ň5MwQJj_/P
~ܨN6Q4*APK+ʍ    PK  C:U            6   org/bouncycastle/asn1/isismtt/x509/MonetaryLimit.classT[wU
t:RZ
jZ&IiV(
)&̄S<Z YL.]Z|ۗ'5(	Z8ᶄۼ]KܐpbȆJ擲dPѼ"#%wˎM`:t̔Eb֬\)oHlZ<NIJB%_")#eov8sSC
'mZ1WΓZ1r	Sm/^Y0ݔe1܊1ͼV-4%aQr嘓qF6)Mg{s0s5ԛ7=@pf;zswu'mw(mdBKKW-zUaVޢ<;ƄۨNtn3Ls!d9C#!cRIS2NxGƻ2exO2h.$}XoZ8ў :[I?.q;f/j.E:L okxyhӝ5^΋ꏾpmClΙЭ}rE|~Yv󈞝rDVngBQ*f1BFÐSP	\PqAE*FpEVT㪊a\U10tl0l2Ŗs!p>e 8=m&GC9×
pG"
?yܦ
7K?Iad~S'-`p[GUzc
dmSu!'П!a=y:Φj7rG4+xFj>Z53fٵsϫoXݭp%x2H6vbAj&>q
uԱjYpj2,ƌoxҬ2
	Z;/xTEx;*M];s`\~
JhDԏJ:SPK6    PK  C:U            8   org/bouncycastle/asn1/isismtt/x509/NamingAuthority.classVWW-D6lVZGkX-*(TTc-Am-]5
n6
JkۚVR}$ N{8w̝ <vBvbTzYQO78c[=֓j-fIL-PϦv-Iz͝ojT#:NMi	Ψfcj"!EbHX*i7NԐt#ڛ&ndSzD4Λ1f+dմ	Z&9	PqSi]zdLOIS1cY4]#ëx
k	nZzriI48t,EX4p?vofz]T#곙ٳ	N$?֦,=N7/9n)`˒*wדI=L(kIZzoP$S5
7\geͦQ޸Hgji>5azC4*u<Fm^N,1ۑ炙We5@_֙=xMDǊ]i)><@ppddEh?8[tJrEm>̶f&_9Ͱ盟3IzI9;D]"""<"E("ZD8 'm`(:.q/vr4xmXe)P/hjsTD?ʆ-0ٯm˧Yrc%eXk"Y1?Q^Oaʱ-֭2EEgϖj;h	8j=x
5ߋ[%Éu[,ή'[{/cn=8%dP%c+D26㴌}Ȩ[1<ÀhM8˺sA6g"CR5Nj2ëDMHU	qY0L2		]Ag$gn>ۃq!)bz1%Qk%Ga/?ƠS# zpeILYv%&+Gk5 []}CHT?Orj2hߓt28J:G
()N5Rx38#܀J.hNHTpze>]@*AEA8hP%~ǓVR*֧𖝑v!B7s sؤxniC])3wpf=Yyw|N4,{YuH~B__+TDgC;s>HsxS-<q+#Hl܈3E3y/f7:BQZ1K7k{İ99AW*wp{![28bّg95KzC-i|>ȐG*if23S#:!?R/PK?U[  
  PK  C:U            :   org/bouncycastle/asn1/isismtt/x509/ProcurationSyntax.classVSg-6lVA<(VkԪaTEAPbda
}^t~3%e_GS<$)L}>M wnT!qR_]W8(M16jkiּ~Ek
bFFbdH3UF"djbX3	6'HQ>eyS-+*yheXJȘvQD¶cЖ#ڦnDj7.`=u3ҧVڙĐev֙_yQzF4=c1-Ƽtnx$Vc?Q].Ǻ݌&axXuBU-*eKYd9Ez,oZBIfT'C3
7!j^x"ZvLq=iu(Fͫ[ º٤lvɮº̱3E};:Ϯb=ur̯[5b#>3N8C
NP*ft'A)͠ǜbe%43NT̠Ft[#ێgWDl""v-A{DOODED"Gշ}sBuTt7꺗`n:_^Hmo%_-y,F/
Q涓l7P98^
vZy:C`PsQ,$.ߡP,?ŕ|C-2bU.}Boҷ<<pz
1rvY`k2l[jlzifʧ|SV݀xT8%	X.5p3Q&c+ʙeTᴌx\Ft=2d}2<xyg26'Y%$ax
0f0hЌQ	Cg0&$`p`0\Њ(%
^`xQq\pcڑ(иxIB^ЉW<8O#.hK=h?_AjE.p#*^WjgzZAj<
<Yv(s;L­4ѭE D>EshB)Q]J'*QIk㪦e'@e$KI$>p}?`Rc~oeÞ_I$kq1~D(VѷYitIܜ)/fpm
WڨD$3>4nL&UBIqŤPo={tJDD0%<ḌVđ2qCʹEk-wETQ(H</&l",1ـZ?eϸ:b ZV|_ϊ+T 3[tJhEK<w99lE{s\)|gIYa#O>_;?e
7>^yR
PKt  X  PK  C:U            7   org/bouncycastle/asn1/isismtt/x509/ProfessionInfo.classWi`-kY؀	4@em0>vPLI
mȒ#	&!4ֽ.$&qIi}#h][+X{͛f[' f˘#cɸZFy2˸Fe\+cj>52X"^Rdt
{[
i.'yKI@se6FWU`)2+V26"^`Zk0kvQz	D"S3Wo ZZ]	UE
ڣ(3jV%LʝJ-" j#"j`6EW#aS'aݠ^=>AOLM؜wZɠCWK漤|\7j-b'٦@or&ZLz=nRUܿ-vSUJ\J<R_^(ZkBؚ,6k1Z{ F)XGǵh5PU>79yԛJ<.PDlNHYG2sDhLIi&7-luIʭͤ v5Dh=Bқ13ڡ)^%%S[j9hԂ]Z\zwEx!e
\jH	_-Re.7eRV"Z@'4Xh3iPy	#<T㛚4F̀k[&P:#/t(P-tJwjW=	F3	TT
&D不,tqv~f65VH
ogAzI	z394^s!얦ڟU{Y?Eo@{k/S/zq-/.r=j.^z-z	7H%aHxI-! !(A#,{%hHYBXB~ޖz\(y5rAYClŤeӽm)i˓fD^H5㠬UI}zăcywNڸڛldR9[繚`
(=0,'KqcF/OYᗅllOmY7S5">r\䓇9z=]Jn*~}eHXt.vn"&;[umSӃ8A`9C#
V3aX˰a=M63430\jM܂7{c	o`'fy3ԡ҃1GWyo@<؊<x^:bݻ^e813|S/Q|N0<(c'FN1<(N3<O3|cn8oz|Սeo2|?q =7dA^1q~!|nƗ77ݸ?`n/ݔx *859T?J-J~&0l04v0zKnK6Yr%WX,Ғ\n,b͖lK6d!$!IQHe$EpAl;C}gp8dG;i~xDŁQ9e3Eo/4ƕ< E2
I}hOS }#fXccaf-3vYB!,A-&)1$.%ԓx43L
A.,.
94RָEI?e2O±䍔s*|4BXyGڞ)߻
gpw.~%ŉ͇
|ȓpTQX\^:wQsSisSH.j}sFC1JWY@I%b^q1ňy}n.5` Py$C8)6c4Qو(>G19=?d~O']#T_.Д'2,y̓ppƌbʨ
2*_^6|(
}iގ[t6m̉oյfΡ<7{JTtlM"]F:]l
ЁYn?94gA`3RMC2ʩ>h;Pݞ7w+&eQ#5ua^1QI{lTW']lKlߜ4']jlt'gmNelo_'-8iFI;i.<a^PKP    PK  C:U            4   org/bouncycastle/asn1/isismtt/x509/Restriction.classJ@IlkGAVhM$EŷVD7.|(L͢B9sfsϯW `H䧎W'*YrՖ*9.Cnn({c~PEsnE^ulcex^[⿘vMn
J/o)_TM#FsicۧJJ<zՋOŀ~
&l2f$Gl֛rи}`zA&0ZY:[`ˀn>ztա!j-(툋CQ,'A蔥@>k2`~yb ~hCV)&dE"BOvhb6>:kXUIh
{T2-"*wE.?bGoPK*氥  {  PK
    "D:U               org/bouncycastle/asn1/smime/PK  C:U            1   org/bouncycastle/asn1/smime/SMIMEAttributes.classmJ0ƿl((^9-i̮-m&|(1ws9wgW=e"+H\L	:2
6hkY2/\pEK
eK
ʊO7^|H$JNW\ꏇǁRJhiLce,4?faBÂEpם\u#M#6\84ҲHh}AXu5)qZQ:kpGPK?4    PK  C:U            3   org/bouncycastle/asn1/smime/SMIMECapabilities.classUiwe~-t:RBlҦ4iҕElFL	T(Ni:;nuoh/z?pw2F9y;~Ѕ\]pP~-c6=}]:>OE
X&E<]/?kfPQc`@DA]V

2wOިT	Ո
(hR#t0VDI(Yj
(՝_&F&
vL\dVRNWTkcd5d_IhդRJUռY5Big;#L{ТO`qiQUɫ5gWWhۂ'jLW
^	K4R/:WJjFl0Q5),M
ʔT'c"NjChus<NSF$G^4|ށP_PRi7merS`s)U^<6|EY:ʹ͙+.ILELCp%ŗڴ
FKbۍ&ꤚk1C)B4Yx%tXJBƊ$&iIxؘ29noY3'"nKDVnm"ExDxEt%[7~1	Q^D[zxك!oo>;Z7s)=t}5--H<LܺHv\0v7D]mo-Y^"n/6\w_7c(EءugHYg>2XPPPPȰav;zz0Èj26aTnGe܌;ec1؂26ℌ
wh¸8)c31aЪ}SFq~a!eP2L1q	"% .H
I	H0gxX $XbE	#- (%	 j}*(}V-%25$
SBwL$}ud#8r#FGڲO*T,OAU.4 HΠfdg	`:9|DA'>s[u9̸sx3IY%a%*+궐EtHܳx-|
+n=ݖQ)7Ç#srs3'᳽MȻWܾ(Os`U\P/b@ঝe݋1$ynkv.H\>,^,,^,,,x],e[l[/3x22x<WsPKQGN  O  PK  C:U            <   org/bouncycastle/asn1/smime/SMIMECapabilitiesAttribute.class]KPƟSɹ޳LЬB$^'txǪ>@*:!B<{g_ .!^r+>hӳ;{4ݳuɞ{6A*GfB	iNy]eZ^WǰGPO;\pMf[KT'
	)7m:nt؈P,PD)(H_~k<J]b%l6Ǖr-lnvh|&(%\CXICXU!;"u1,aK]ql+PTHű2XA)ס:l<'O^7D=ο!=@j^PKSxyS    PK  C:U            1   org/bouncycastle/asn1/smime/SMIMECapability.classmWUKB7$ Z"!@$5M,	/%.$twA K1h}~&:lRhoܹoH.0 Vܒ
+lB,$nJ-iE4.-7PfӢ"vI7i	~UN9O_r<"0	sdt:8)2NZ%CYQ6]h}
t'}&2@Ov-Ξ9)G y%-|#-tSwo'ġY+Ţ^ŔU8(馓Q+Q6%LB||`jGԵDySԷ%a|mj	(yzku(qHM8_fƻ2ٍ皹ӰnX}nHe_jhdKG_9CK-(z>#A'jQL[D{H^rgz'㊌e#]1.cBU$Lf.н_<?ycfaTx,I$mv7*v@>"6/RTCHޤVzv Dd2B!0c*M(-)F1
O>xAA]d<0VX}2c}~%)Fadˌ3!cݏ(6c~>e|GI]t9OWoPu**a,XZ$F)MvkG\;ڀkl>gRʐ`2RG9zFO3B,J8$ k蓑iahB=,jd7e|
3$FE"yL5̑?Ws@47WGN#伆%70YLtwیfruV&! D.Z}ܩoJHM4 ܩbojЫbJ
**a\
;U|YVW5[}PK4    PK  C:U            7   org/bouncycastle/asn1/smime/SMIMECapabilityVector.classJAϘjjXĸ
)͏H`$1]5x?
B /J&1IX83<? f
CX/}9؎MnY0hfwa&C_sqX;ǐr/Fͽr70x?˥\1]B{ɐOEfpTW1Cmyf	|P<(z֞7Τ`LUCt}<//:({*Z[߆rx(ˀA0)!)3"R>Ѷ$,aAE_,ѻu-$Fd8"4
h@f@,c9Bc{ p+IG
$[W3>6#;w1#">VKbĭuZtC>B>uB!+l7O`cQPK# 2    PK  C:U            G   org/bouncycastle/asn1/smime/SMIMEEncryptionKeyPreferenceAttribute.class[KAjdE`,]RZ>eBwewgՍGE-,<Ϸo 8b]pK4٦;ޥCqmsd葪{vI4zK֝LNsfSB
b(.>5ҵi'2͊(+(*)Pn׬jwENn!K7zT9}d(0	M&S[!Uz9s_;ZdI~%f`o3
`#B:U[VD;I$D{+"#%(Æ\YyI2$ߙ+''Hcd8|JD)Jt^PK<)n  [  PK
    "D:U               org/bouncycastle/asn1/tsp/PK  C:U            (   org/bouncycastle/asn1/tsp/Accuracy.classUSU=d%`#m%BMB@V#E@	b?Y3[7lgg|7utu
Ȍ/<8ѿD1{sϽ0	B8rqAxdXsQf4e
dC]Y2Pxblljj*rhFb訅U)%y.y\jfq>22nPj>]НUvTK͹J}.ƚ_kNҡ2euͶQ26Ca9˪YgoTՄZD4j&KJQ[Evy"vX+v[Sˎ'Բ5Hf3fUS_&)6m|=7e9zjϩ퉔d+kh{PjmD]]li9\2HjZjr4ĲUul.kd
X@x$Ḅ$J8%ᴄ!	!	0MpuYdXi~t;h4ȫ*ԑcG[<p'ɭ=k2;ﮝ<xW&O4M=xhi
q%	LpYC`Ë$x8x91+s
9L1+^0ޔ,e(xCZFWe0-s2H;2HT]zg<==3V):ٜo RsޞpA(=s?|PA#HZR]wzmr=5+<b?`8bPEwP}s]U\ŉoGaDĶ0ķ	a>N#a\R8ՔnRYse
5I.Fw):l_qggHʏTZp
Q}Ǘ'wl`fLO2=.sx.vg?2#>\3b$`x{V!?̿G6Ip߀OyMe;)M\IDWAĝxFL#=tN{{m4_eQn#˫Xt kȣr*>hH"PKSL  	  PK  C:U            0   org/bouncycastle/asn1/tsp/ArchiveTimeStamp.classX[~e90%JJb.j`4F
[*:̮44i6ҤiiFc/MOOR}3l'O;{9WmըjtKYrDBek۱=jn.	Xh,1iDEԴBj2!5ej|>a4l(iɤfPGVM3MZZB(FQ0s~5Kt┮㉔?Ǵ)H7	͟6Չ:ҽhNOqFifO0ɢr&&z6NeI5X3V,<N3&gkxEtZ3FFi,M$S:fZ즑GS36!-:ѢHɰ$N
wMöGfʮգ#p߭gԸjo$$wj2b&R~	NgP\5bx\Tlr<lDKz 3 rD<75L	dL(Ǣx6vn%X\ј;vq;A`C	0ȦJ~q
SjV7(1-H8wPΘ3,8.2uU&wXrǤ]kzТJ\<I)%|Ku"'3Z^]עK\#lU}w^>u.\U9;],:'tN7XF̟vR- l(p@@@@ (.!I $Y`V+p褷(V]v/_Lumt-MbSt
im_~ItCk,8S%k+ʆV
]ZMPݴ"(:^)l?rlt%h;m4Y]e)Q^F~.nC
p[]q%Xٔ|]%&<2.#:B;$d	=fygڹ,CN&vi0շi!}4JTn]u)2KeYY_*xFdх
jqL.|X*|D*xU
 j;@CUЌ15Bb\)X
'܁S
ދ	TЈl%NY,&Ya0,α8GY|>0>CfX|VF!<)_dϫ},+ >c~<2_1/8eƗX|2M?7X|ŔIߖ1e|YP^{Q>ڍPa@PIQfAQ[K@߭ox
\G"#<G~?#B?,J}x̱ /@Pj ܇xH\9@
/9dY\⥎,``>)b(Qhť+YZME>
#̗Eq5Ż3xyp+^DzFf+39grWkҀ4(uVz6x-x4`:/bj:E4_ETUt&zpʙ{r
ixe,Wus9A<1ڜ<n,qna
*, Ek}uRm+ڛ6i'@r4^jfȍof'-fYEq
ոJ!{)߾g0w]7]?
k'~<:>9ՓeVK`&y~d϶a{`8b
<w<lv-;LgںDF=4>`3O6Ɔ/TPt6Jg&?Na}inpCwc7*J5z<<ï2KJe秳˴=c2uI|=V-klPK5ٖ  B  PK  C:U            5   org/bouncycastle/asn1/tsp/ArchiveTimeStampChain.classUKOQn<i tZ R"
BLЅeQ	V,bT%ݸO0Q<gZ
%%n{~|~p+a9x_f_iv@׃tvVN/X	=g'
MY=hlb|jL)cS^Rgf踞%ǔ@aǶ=lJy#al_iGDMgxH{`I-n-niD,]	wN$61}:iܣ@<p	ɂѾ3ZGZ9ݤ"xr|2mI'/V!	u%4Hh,?3N+Iݚ
U!wv3kRjEDհRnFs+-LsۍKef%ucMM	i'~0eR3posUhqB.f# :d;&Cb8	jt1tW!Zp!S.0Њ}>኏^a8G`z^j񨞙AF;pɒhF_MЪ~BhՏ_ChJ}<FVĊ0N行d{)*GkǠ֩H7`"uDuquQ=2u
-SU\#6Jk|FQ%kL-nwG4͢hҍpm	!	A	-Mp¹i
1@>m}9Y_HU\@/]by[d&2\?Q#Y@3d)E3(
{q`q(A$^IkҼ-̇w@bP SUPK*	A    PK  C:U            8   org/bouncycastle/asn1/tsp/ArchiveTimeStampSequence.classU]sQ~NlEiKIb*YJAh#3v.&?ʥ5CÍ??mZ4=y~oǸ_e\yÕ7j7NY
5R(¬m<475liNJƴuf̬u *}j8bѴIWÕ:s*,c6pR\04G%37gL-;}]vNfNϧJY>L?0̢clv4Xy-maIڃb'ʎm0OG$][
"ɚfM7מAB\e7S!
B6K"a6	:$l30+iSc#}̝K?;Cg*fZC\蚀<1ވ=&@"tks)9[Q-VF6)Ǔح`;&lV*h
mET1	Ah,nDeDp)pDFY`qY`qŠd{&08NPa3BwG8=]@ILk}d~p?!D52͉9!K2@釈"+H/ 2
Fi0
<$iW^ct=`νwv$D%tIH)Z`'>ʮ]D<BW@e$=i_=#ؖ1<HO<[XH!l41iQ=fn
=T6?Oўd5BP$z۵TQn! B!։xPK)0n    PK  C:U            +   org/bouncycastle/asn1/tsp/CryptoInfos.classOOAƟiK.[kJAݢkS5!HL*ݮ"bwKg'^kHoW0Qyg[4)̟ߟ c/'2>a1-ӽ0,kj.[9jR-G]tݒ/FApp}4XYQ7sRua=3^
ud3E-'S.v];c=c"<<㒹e!   $@'@fj%&r&с\t79۝q_4'	=e9h8m솶UTiV:e_ӊE0|ڥSi-:}-7V-z0(?|z1{\ `(K\BaBDS"a4KBD?fD@咤ob.7ι⡶/!(3>zA_MSU"*7D[WjZ|U<[1rQRkHpà)6QⲒCo
f[S}'ք1@6||@7<xdOp=</agO\4J-߈^PK.)*_    PK  C:U            .   org/bouncycastle/asn1/tsp/EncryptionInfo.classURP]@
V҂!*HjҐ	)⓿32vˋ~wA:Ng9gY4' cXiD <wqE@iEtlVhҢ[Zn+똶孬.)P;q+猪=-sj4ZF4膚n94UбGJ:92f
f&9#j,mKSNFyk4K.[VW3
>[Gr%5sMN/
{#%('e'$oA,r阛it3_l=0o	VX{1!hqRDP)Eh0ICUx"z<E
|XNd^NYIGjV\L2
Up5sՔ4f/,"3Y|%vmTP˪aiOYtdq$K<DWB+
u1K8>] _	HhE]bEB C#&0p%91\gg@'1Lūݘ
<2d0@&$u!FoY;M椣j2 b}WGgqgt04RI~w|4zAmeRJx-l''KeO4)];x$9QTFRH-ls["s{E-a*z̻2~BAHp؏+y#+3/!(1[gh,')qLPK4(     PK  C:U            .   org/bouncycastle/asn1/tsp/EvidenceRecord.classXitWƒ<x!Q$J4dK5cZIc7O<<rQHþ9P@%ZKe)(9IƶHҞC7.wGғ}|2ۉN\'jhpf'nqV6OMĭ&n`V~jTW鯾޿\ifPƚT"Vx"ޤE<z
;6xJ+I#^0݁DS;k]jtu7w*Z@}>C˗
4ŢftviWC۫	)U[I<['kSL1un#ƓhQ5ilEKאhq+*11i($D6iXid昒i5M׏26;QLFɛHOJ]ߴg6ȓemw*ɍSh'V%bƚwu+'$l)@Lѣѕ`,FXS"b-ªFJRYKmFBӣ7XciJR)d,Ғ]tVt5Q+DM^oMm-pDhLAk+E'uCrD:^I%W+QDy"X߲e٢:c}	c&  PdǠ.3u+rg^ɯ2%R$pԜ]zڜк4iĳ7E_q3\9MdXPő}D\Vܼ;㤞Hq7Eju"""Lr+DqU"EFZDFkE4ID3ݾ<>P-5.ԇԖ~1[\,zH[@slO͆qV+Ǭfc噞*?Abu]2s
{yIa)4ESuJLr'߇)qvp`Px#w롐둺aOM1VE1ǲܵFGPnE^55,qi-u]+'?vxc9TXs_ܫOJ*j"½BD̯n-/?_(2N'{ᱟh^Ab*|/"mh!6R*pw!>4)oyryGbJeT#"cTU+c.2jP&c=C$^L4]#c!:e,&cɸe1.t@q^1w2$)pge!fKuxz[e,ocx;gGxv.w3 Ç>2|LFЊK؄H،O2|>Ƃ60|QB;1|Q	t+{`1K؆K/1|YvJ؁>	; Ci	U1|!0 
8!a7W(mý9O7*A|R:u p9#9R)#U9R}(4=8=yl/	}!_vM<$%4yy;:7K?p	7{2a?0Dc9x>PktT?i,]'w=?Frqt[+^^~zxsHLiP~E9oyj38~#!x)K6QjK.C=WNd^V
tRvNH3Ʌ2A

bg.2	XnWQf4M֗/g-c.>T֍Ҹp_ϔއc Zf:oWP4w2I-Gk)?8i^ags㶛
)ǺllǽhwOc[짰rMMUf
 
O[/ه?SXR$QXQD\ߤt&^eI0,.c3E~%`m|J.`/}ǛcjFc׬g7t|ռXmRۑo(i"6e
p㍖Wȉq>Tf㽖(0J󸮨:^h59P	ViniH׶f씊
djeUI6W.U|%
t{h^4t̼jHz'xBp<-0,NnGԇY=/xT=dSgGv~
|[Qe(LK	yl
Ud8_PK&    PK  C:U            .   org/bouncycastle/asn1/tsp/MessageImprint.classU[sF֗(
	^)u`[QBq5uHJLB=<)R*)o}
3%3?9e=3v;߹Ͽ2@ ](z*)Rc+[x4|x@l@
LR-zwSG"vuՂXفXw֞HGU[*_/ճ}b?-\ҵj[2P0(kyرeUߞ[ir@n0
]W`^]~ߖLZXOkj mWp0GVүZk䨄ʳWnךF'-_sh+ϷQd?k,rt?0psA&\8'}7BLHNp7ZJ
'4pJ[w5}
foETayw4]h훇
S߈Ȫ3oDX!_Nc*B|u=K5<H~O72=LQ{Np}}I``8iRF60#@].3c!OSPq8
Â%âi|u򽡣tA?͙a^񺲝V<'A E_JJG?43_QO7Ϳ1EanoMb|KL*U(<$R6;X.mNgLnK,Lo{+/qwkx#<gJC^)IAA.%AJ fU/nc^J00p%e_S($Wa%2WIkF[%ץ.=2(uPKPK07P  h  PK  C:U            /   org/bouncycastle/asn1/tsp/PartialHashtree.classU[WU&0ahBڐ@#{jh@A4m00̄ɄB>OK	%}Wk#X*=B)>|{=k~M uQbuص@?:5  @0J
^9.Ѧ0};1>.PDd46aڔeft&-nkC9Qu3{K
5gPYUvSR.iL]<9-rD)|H9i?9mʙsUi0dt͜F
LGK_V1|h9e2y"u%[79ݘlun$Ft$&[HLm)Ij4iNԬchQ5kvD㉱!3eͨӆ6I7Y|8vGΥ# )O#{8.-4.9twWˡ]Ctj;j@8F؆}XqVWYjՎK	:֎9oZfKn6h縓=4KpHxAB$4KhpAE	$"ᲄV	a	WP3F=^
]o~dQN>#ʅ7^9R7r(eqʜcsohRDSvsf?7#U*Pj
Wp>Jl
NAVpU|T!e(8AWT㦂z)xo*8wm'3a3Zx
S2>>:26IOets	632z1c6d]Peb~ʹd^:q
rU3<Ihn	T'5vAT1|DO[E0bPSD,@uaezYW^b @p~HC}PגE\O0wJpCyy|??	
Gǽo˷BFD	1	4ܢ~tZIpaJ	6M0?=,ddQ1|smE%#W7𠀥<̇"+\D{Dof*tm/ZZwG
Y+)jj<(EKR?#9vr6Gd%}	PM
-4գ&\lGmXE#mE7*kebJljډΣ=Y)nAPK0Ő  )	  PK  C:U            '   org/bouncycastle/asn1/tsp/TSTInfo.classW_g~
bZDŰѪDRbP[$k]L6xUٛŶZz/~䯭M]C3;<33?7 k	Jj /ǷE1w~D7UT	J@&bj9ՁMI;njz<bqbX{"f6N!u
O"}Tj@$-WZ Mڝ:
̞{kA3n{4beD#a=wӺLi1;F4(w~vZ"CjÈiQ_9|q$KЦՇAU?ja5'z<
IR5%"o$Hߪ[L=gLbPG.1&Ԉ}FBq3ոݹ0JQk9z}Qm?ψr=h4rRmr;ZOẔ&@%GF8^3[;Ь8a--&pL吙Oϙ4srcjOwO@?h8v|Úˡ /N[*ǧ]
u"32ȣg,ӵ7Ɣw,@w_/D,q"VRODEDU"EFZwX~y*΅5cJL)Vf!ї;ЧhmzÉҁ<14}!$YvKiy/{ːeI͛6Fd˧5}NBV|yW~QZ'DJLjW^a\0q{-1γWsƈr%f
y#={wA5.3ї}/̞=9;gcZ62XuƘlk̦fS>m~ķ:g
:mGܢf21[|:MIeU.϶wɘv萱aFt(^U!nwbE(!PƭX XRt؀VQc>Q^~TdkC0(C?0P6&Caq'I؂ex5	$ËKhS/I؎7$oJɾxKB^`x[B3ЂW$e	xW-_{2lOf#D56u?T6*N
[r]z:eIj%}N۩Cv,'^%t~DmI(W6\E8z1bdX&_=
E]#-VDRRFMPVN(ߦpnBIpa*-9|ipp~ex;;@s+hzFp+ju>k
(^gc)\
:!Tcs8y>|4~Bmt]I+c1CXN++Cʎ$xrfzjPv_(MDH
hSD,_Ò9R5_tO2(ZY5sͼ.RSŔ)[BVtVM܂+Ir}qv8m`f<|.c^3x2c.G_y.a>1/}9̧2r}&cBa1W |1c^G+(&q4Υ~|^,ϥ兴Li|֫(c,Fi6
gҼ3z*׍S(~/f=hwUF_hѰ|B_PKhK    PK  C:U            ,   org/bouncycastle/asn1/tsp/TimeStampReq.classVSW-ٰfJ`A~(XD6sIָ
a?KgF;;0e{S{f)&10s{͟އQp$p|
jfq^!JqQRP.$Tٚ+,u.ITM{\HTQmEsj_,)sȎ떭8ZȺZVٜ6R09$(u#%I%=fORMɥQ&<+cLFM+a3Ϫ:%TweՋgwf:6cBRS,?6<102B#9#zH)3u7̚⺭UKs2pE
NجiwuɛVSV
WV.ǨZVli*g>w:VނݡTme5[m)ZITȲ|ΛatZ	hpPB:t
8$%]ph]5X
zj*%'*mZs_xt1+;w6rτMӃl+K0j70Z.u{[|Vzk*Tp
=0kKlO՘{"RtWU};4=ÝTaM99`kEy0@*{wp2nTZ;Qz,u^#2%3$0(^9	0$yx$K/52$4e6;/a/.Hq0Kh(\cpc o0b&$L8x1)"D~+(n8w$̊m'pCI"N!#RPAZidwH7&9{UMw:Od#Qr:	茤aTmC31,oy	y
2Lh+Fhe\U|z3$GWqw
`+V`~m?A4#]`yo_5|s	?h}.-itJn	%ZK3PNp.hhvx['4ɭ^YuIi( -=)P
8XoxI)jAWki}_[/nP_Os&}ǩ3SX^G_B,I+GIPTr+OW)N;nYte׽W*;W*͒s%w3]w¯Зt4ݍ*DK#xu@4h#Mp{4.6Z4L7`Y4s+lXbah'
q"-AD@l}PK9B9O  
  PK  C:U            -   org/bouncycastle/asn1/tsp/TimeStampResp.classT]S@=ki|hIS hj)6bMj2SuF(ʌ/<n[fݳ'?߾Z)Ƿ^9aUt;	v433^S$hN4^6:ܲ`xF&_ѽmij12j,d!ѩBV~]]
fSJj9&_M͔2
`ܱ>!ICA/l/aFcRٜ2Qq"aݐLTVp.Skf.v5i6lFp-]_@6:t
HΟQGtSB.94_݌f{Xtec;rLʡ(/dsK<p˜aWFօNAכ7%km1Lci6#Z_xͼ:#'7<NW"pMB7$x$G	%ЄvA!C<"zp"zqKD&yя{"x(1KcVnV* z@6)6Gfm(?,*#ax	%b%)U7y=(W<cCl?eF{:a'_# (O M|K
}>01*UlHAoIH:`:z8}	}{GjS	aγ?QJѿ.ɑ%-`1 PK|de    PK
    "D:U               org/bouncycastle/oer/PK  C:U            %   org/bouncycastle/oer/BitBuilder.classUSW-{7IA4PZl6ª-K$kC	Lt/}(Nsil6#X3sss=w W^%)ALxA'Y(#,UIߢ
nI
Dĥ.]H=.IvQrI9MWftޱ.Ζc`[-+sGs;_!S5piłu*ޤWvY	oۅlb|^0Myl7Yr=wꔳKdsEX&Bz>myy'QtT|=b/yT<78KvHzx.Pef(OM8WF(m<{m
'Sj։唋
jU;TTVm*UTtH1YZ㣛wd}g^Js5꾽|\ y-ZfӆNLnbܬc7::ulC(YG3CCa;]{:f؃M8c?>q ܈!:0p8ÉzC2Ctq.B#0|00Y>f80;ZT1CYܥj.Y(>:Mi@ӗR&YHsS<)?䲿E\m7毘4<:TcM'Ć'pbm.Woo߷k;-3E̟r
䁮6 $C$;Df@D"D~* Ō*U/kKko!"5VAv0#Zdi>u
Q2:u14=~];9 )p_Xɿ,
Ai[
8ìbz]AhC;u*"MVu,p&1[@AhgtjzsLusycY$i%T~G=|/cYy@Bq.*P#LT1X@ܷZ,gh*8u@+Օ{VQꖟFqTxPp J\0WSjB'hy4J6藘Оj)ٸcqJ)F
R
Ji2B
*_`ՈPKgk    PK  C:U            2   org/bouncycastle/oer/DeferredElementSupplier.classKK@4:Z\;Ņ/EEp&cƤL\(B7x.,|9\& Pf0*}/Ez.h
ĉrmvаRK{G*<d
UêI\8v
VTJ<A4'L[Vnm74ҎFN.͑07~K4Oڶ!ThUcY@R`"F3c9tvzHQ$#vN6枾<L}d;If-eiSSfWY>m"Ҳyd^cYtJr<2Z(
(M
yKIڏH PKJyw    PK  C:U            "   org/bouncycastle/oer/Element.classXy|&L$$K8(@jU`hSQXC2$t*TE/m+ZڢuAJk^a]nBBH͛=2g{~;
}I }(a>|҇*>LaS|y>C NS7K[W4[n̛ܹu	
g7\h8y9-Xa1m^!P&ՓA2mmZT_rQoғѤa@o fS8IvrwwQIވ	cn_>kT8BmztГ$u?nD)XW7^[,2cnlS5z$E{D1hrM;6dNnYw}#LoO鑄@[_el0qG.Z8孛H[8)0؜4	bl%D;)x%fA&:,	r[Fӫr
8ͬл,fS~J*33ri8`G҉ՆR6ű7i"WvszĎ92n[`1-WQ3Vzmj%)plZzJ7S+U4[NEdr!~X;y&oIj=A,8t=*
'7-F#ɦfUL3Fআ-T<AK9=U~m8iyF\OƨtS#!~cs$BЎIR&Mیn7m֚d< \Td$k;MPvTmT2i2׷\wIlȨOh\)wfY*H#Ywe5⍚:[2G8X[ӶMO$#Fkr͊yMѶX̤Z1#h$&j+Vg+tn2wC}LWgFB2"Ltƒ6KlHιUR\L IELuXeuSѮX{xCeT9/ߘSЪzoUpMM
t)(RUSЭ턷|ehOG} o)Zr`J[ƀқ2R/0
vWHq; H3/Ks2v^p9.٫mUn>[Õ!G;NG9_jl0
ֻKʖݚ	ɜr2s76tֹi*YmMuTNmҙn}rkLrΘ'$OϯK.ћcٛ?٥ucܟtuHhu^\Ϣ;u4pΏsl577RG㯪jIUz^⿊G6&<ԩ%L60iUlf2
Pq!ɭL`>b>"]L6*.GTQ1q*VbZTXoaeN|Fť_E#,*:lbRϩ
Wd.U\]*!ML^*BxX\/x'𶯩Hb܁O0L0o2yɷ|La g|sLL~GŸa]?n313yяʳm,؆2|ɋL~~lg%?ɿL~L~L%&/3;3܉0ywy&`"?nݍ_1y?JpF虯UQ#n1t)}MB^G*`,=i'iM4Js$$x%Z͑PgLeØu;IjomO1GgN-#bUwO(Z(-֐ƀ69ZЛ	-X)-XFVqLӂiiAZx`I/J%OxEZPMhUiׂ8UOVUa*Ƒ`AjO	iA,I~"X_/(x
;T+4{_zbG!P4ePC}

*~ޫ}Vp- MwWcuQ w`U}fUF1QUq^Bpa`'4=UיS\i4jq+N<\sZri
5si<9̋C\~sh<B-(+X实Tjv
<x^w'0@*둶_@{h<_z1Q`Wԅv vBĴexcXvMVK`ۺ}B
({82QKa(AaB)$E,E>"{EiƑ/}8ou5:-+)2;U:xsɪI,/ 8R"0.W,$M<xB)Qֵ<M2>QsZW3k{_qͅٳ0L[ȋuh%geP4
nW0 TE~
G15˔ufGBjyv;	,bŵj%ῲYZGKiiwVRn!\>j2ϲ2Q­s*L?L=-` RwbNBe'?),i|3I1?rKKy?MkP-+7MJfv +*(g0U~{Π@Q+˭p.m-Kj!r'2ҫARYMέq)[ǜ::</ʜOh42/!lB f= ԿŵxG-q-nvg땮˰%-nrt~ovUV{؋2lgWfrMU<i^la{\ŇlνE{3}X`yt2ۓ&3*3|![E+98'q|BtvJi`yd=uk1Pyp !+rk
re#]a$Ş)B%=UZ!zwzG}PX;Dr>/
w?s8f/∽8N0-ۋC8d-ޣ]dxh0_f+wY=MT9kDYGᄭpJ*")SBT'^B'חg+I!
Ŏ <Pn,KeiDO*Rex*H7 vI뤭pnvwfNR(AY)ο/F2N.T_HT͟O,O<"N $v{Z8~jmB|#%lQpN&)'%?l>ٗ9$l>7qd2#+[G#̯izzؙiamØ^Hu(SM=B]^Jκ|E~Ri'އ{PK]
  "  PK  C:U            *   org/bouncycastle/oer/ElementSupplier.class;o>vF֤̜FĲDļt}FtҼ⒜T"}לԼ҂"v&vfF
M|ـv10 ###	 PKDpun      PK  C:U            %   org/bouncycastle/oer/OERDecoder.classQ]KA=뚚}hZhЛhITO:ȊʺFzH^{sνw	.6ܳl636#t5,Ǩ=Vv]:ك\FtQ6 &o{VAq;FؤCFzz([!T2
UŜA2Wv	/l3+.IjhJuށ\?:'\L$4!E
HjbYfm{ClrLbq9i;@پz>N<F&sHe8W;!	~D!sSw
^PKϰd    PK  C:U            1   org/bouncycastle/oer/OERDefinition$BaseType.class}SW+(D]_w5&4X#5EPlhҘW\Զ$vjLf:r{wp?
Dff>|7O4]'U V
%˶j
ZV܃z2gw
[zbE:y=Ii4&e	MWK6c/㬖֓'Kg{鬂`R_|1MR)mY
L"}DKf+ul5cd^vյm* e6肺UZbҽӒeVWVp5ݸ{ٷ#g[gfj.ڵZUJ'r/yJflVmyfujfO͘Blۏ3#Z2bT'
Fk\(!ݟ<pۇ%ܺ>ʵ_=ȕcPƲƒ͇#]'zEcjDɨVcjjĂWA2n2Ì(c1Θ`L2aF1͘a2Q<csq	?BxG$k7cfd[mCgd9.[cF] $2Sz><Dwڶ͊\K@e1
n9減a7#nλ9椛ny	7ݜrs7\t3zf_"?Q't?eM
tū5jx\
};dQ?ne3 }G(ߥz78bK6K14HٗI9&KiWu/QLZv$ͧHkQ[yԠj]ZIZPfIkRUi{zNiiBfJSUu=Nuj'z=`_yXϫ4^R3
#
VmJ,
E
EA)EU
mw+8_PKD    PK  C:U            2   org/bouncycastle/oer/OERDefinition$Builder$1.classN@J-PVBMA@xBIm}_FăCg(7Mvwflf?>c!Y޽dmӲxSNAhzv:Zc]s+d(z~h{׺ tqh5.No{.t< *ťA
1@
{6U+C!˘4:8zWf+򹎗O!!6 V*f0""),Ò
ȋeATp\õ/>aϣVc;(
j~0MTFM''0MIՊk#?U	"ҺM@,2؀{hPKskv    PK  C:U            2   org/bouncycastle/oer/OERDefinition$Builder$2.classR]OA=mt@A+IY kob<4@/.dw)o|U(JHxd9793%r͍B6:!PPQ:ʹ:39A$M/8蜩0#I/ė&	eE*UU
۽*!l/^1L&@8dnU:yt5lQWR@A@L-"|h')ؘ$ɜ8psPƼ
S %ԊCٰX󭸫=Fq?h_eoiV$T64?ˋcى{9\Zّj0k03!V!<jjwQb\ב(0U}#)yfXc̕.x{_PK[-s  V  PK  C:U            0   org/bouncycastle/oer/OERDefinition$Builder.classY	x\UofyeOItOfiUK[	6iK
/dLlDTE$*.me&-*REq}JxΛ7[2)3|νs=8a 0f#/DA4&`^kM[7_ZDD*^*0{WiUA_U_r*P@m[Jiܥ)YܾKu/m	NJJK;(.,XticҖ`#G
}ހL=AP<QC
d+u0{|ݼtկzy7K4|=$Cu:Ԩ%Nl ӯܚݲݦxzO=K	UUJ|աP
Tڭz-=DyKSH{ KvA9;jG{:U6z .%ФRr{[w:_v=Aڙ8DM_	Hx|U!qsGT<-A~jQ($T$3'EsT;V]ܝ
ޠ
t{j5k"-
DP@fg
V5ĜGF.ȋ#4I&ҮRjU~Ayqw[}__Lt+[TW?@0z;k5RAZjZ{)*PTm}$\8aR5o@SЂfmbdK:OGeF\`i~	im,eG	E(Om&=ťvM~*Zշ>
M8dm@n@A_ʲ&hrzO)I,.+S4ŝEkf;R
%IX%.B$Y[$pUVKX#JBF	
6IRB$4KJ$l"o҄hL3S	:(kL)_ИTʄYؘFݢt)*	S;Ң$;/K<1s25O$t*V5ľ>Mb)
ɡY55EeͨnIE%Չxm4	{U7LTX&X~U$OfT3]z[G3N{~i:񸺪'K"Vg,utRZS2Ȅͨg<@,NNRe[]26}CMƆU՛63ے"^VrElz=7CT7dTnI6ZL*434inuҔܑmS:dIO̬H+u͊i:Ox:RL\ܞ<tR<2p]4td=^Z{
54lQ\5ȗQ`	%7˸A-c1
`6nqxxUFnaaP`/˸&0pBQ`)!|X;>*wʘà
c˰L|~R|Jr͟Q!Q^>6>y
ȨCLUYϸs9c~08G|f(#22x1,-P#vt	?;7~VZ?`'S~W?[t^y΋] [H0-1?23,-,d~<\n_O+Rwz_8Uڟ/g<!Zk7q+n e[)팜 >gM9)N_)u.Wkmm*C[)o*
_C;4
,hMgb)}m,ZWF6;FY1WhMh;pfve.yjQ=WGDfڝ
F"AJ핷tH8
8iNz&34B8NR/:+#,ax㼾c#d;B\J Y1SBG7y9@lٛQVbS5FϏyQJjAvV5Buށ/TstYg?(J¢h{VA:qN\vPOTz|Q'Lh^#B>mݮJc4&4[V3	pZUX>R^MldMPS4W%4蕰Q-е[1+晗ǐ	R!11W?z7G=6_61)hjajnr9łM>',v^Ԕ9/M9sEڮqC򰘳PH>*(k:(bax4C3Q%eCbt<,@9opr;	@SON-?!b5a`slts9YMydL2sQ#sc$#R] 9yS";_s{Ph[MG',fR+#<נqdk
,
B	]쪻T߇#u{b^qPJ{}Be
R
S1&{-)3-'Y[MbxaG	x/UH15<1{Ai0cTZPeɃqQ
yJM5zYi,4]9#?e:BBGQCSً_z.YR6'g汻
k+R+{[^d\ͻ{aˌ{ٸh缩8$lY	"MB;Oc683l<ŘO#:1xxp1ZeqQ,b#
'hGzl4%,L)B	z,OB!&?Lgb^	rҡ.	&(a^^<0
	A>tYQ.Zq aӄf$M3[Y.e-[O;E"<zF"|~f2}(C+u%zs\G:<7k5[M4f(b<w*VPaa+wEt"bq)lJb9dAzŒV򽢖@A}Ceg
^l^PKZpѵ  !  PK  C:U            6   org/bouncycastle/oer/OERDefinition$ExtensionList.classMK@WlLQ !)B<xK)HP((TMגl I,*xY{Xpawg^z pBR+Q&PP&ZdDrCǗJ#T<
EʿL1GiF8?g:"͔c7(քMݧLꔕZ,Y(s[zFSfA; 4%s'VL;B-5
$0+A	y9"6peƶͪF(t1?[L:JLq^?cp?ɱǻ#ΦZmayz0Cc*hp`PK5    PK  C:U            5   org/bouncycastle/oer/OERDefinition$ItemProvider.class=n1f&!R@7(VBMe6b%ۋQp 62h	=>hSN6&jdL)-0+[P>T,-;}Nym壎8tvB%H_|~?0A\RvscM*=J2hЍ}V	8PKb   q  PK  C:U            7   org/bouncycastle/oer/OERDefinition$MutableBuilder.classT]sU~NImņPK1TZ@J`b[q4,nw39/WxKqF 3Uo7{613ds_=珧?ox7c13L?d`1|tW|)k]YQTd\
v+}0YnV5UL;Us͔Ք Ƕ6b;$qM\jҟ1;[|ڙ^utG:hY&_r^E}!{K:V>Q2=B:hq7bl"(KA4ӎ[˗]٨Ϸdޑn~i~\S
RȾ4vYxruN]5V߹([rW?f)螰ZEk_81111q8kI'5PO	L)G9Ld!'n2{Hdt	|2	~ 7S<k{S9s0_%84	L聡CGHG287uD[:WI#8do`,Uf:AG
3qƅ8Q.Ye
H}eUuߝmΩm[IzI^RbAW CHI;?O8!Z{#C*Mn}+ƃ58=-_5FOD/|=_Gbwd61
gcaFKjQb	^6{M|ֳ?kZ!))t$<MD1ѩВ&ʶ=`ϽCۆF0|Jvؿ8ɑH zފSth};+S]&>~24cc5cX5C*.&PKA m    PK  C:U            5   org/bouncycastle/oer/OERDefinition$OptionalList.classPMK@}Ʀ~MDxK)A(*x&kHY6I,/
(q^ex;o޼ٯO W8bh
Cg3tL6H"x]Oi^VguLDY)ix|sw-[^h<~ uekH%tB&U8N
qT(EGz}f=B;_vs0hvQZK)Q9	Na;blQ);&t{w
/߰+kQ8ئXz8 C~ PK,    PK  C:U            (   org/bouncycastle/oer/OERDefinition.class,$/G8MRC(i#KaJ $8np^5
L4HJۤMz}%4nJ?]iWFF7;͛ѼW^Ď 	bgĞ 
bo=AO/rz3P*AOx:E#P:>8N& i
't"1J$T,% D/W~vGOD|$1JGe*vS<VT]5S4Nx,[-/d'O\ftZKfrjB@l1h`VT}bN	Hbȟ=?E>|yz$͟"fPH*ETpޙe]蘺MeAhE@ԪITZלah4VZ4M%QV68/48zT*,`)Kn:5%M7l#+WDT.QR]U4Y_.+%Zvm5Sբ|<CzMFT*w+LFe!:g\55%*WXt0ks.P*|Ie#:4&We3tM<&L#ֶG7awb\U6a1Q39MiYv5,BLVo裧*TU+T/5W<u4\3燛%u=?/b@ĻD1*ⴈ3""ΊxDDNĄ^x~r){"9vhK#ٜSƜɮH"b"7ecm)d;d;5rF:l&Ffrϒ7Uh{N\LQhj|wЦEδtO]DoBZeru
FO#cw#bj}S1~KP$X`y [Y<6DXY~leƲ Q,rOe^	I8
Cy(H81T%Ôp5W%pMVS!\XadˇY>Q,ϰ<1,g'Ycy>0fˋa_
q|:'9ϳ|,_f
WYuo|[aLe|nG5ElwMQ
)Je\Uʏ-wm/6@[vlAo.zxwot5~	!_]:K6N/-aC`{hOamkM>rv.}xq
o;GVG\nE-!_>(h`?۵6qĕ&tkႳpW񛆷| Өh:mp]H|́ob+yq/og+9E/_d>6)-Gp}7\uvMI*n1&j<eGQ2\y?+䌡; i;X]ß-0yIe/u]Ӈq݅mi`~_YW2Ϻ*f}$;kea~ƷlzwCְ55,ZpkXwXq:~fˉ^T_LPL/PKR3  I  PK  C:U            %   org/bouncycastle/oer/OEREncoder.classR]OA=CiWE(T|-5+	oj1iĤiN+}	$Ώ2٨i|s's=gw?n C-}ftKUܫ0
k/U"h=n$%WNWʫ؏cot[:a!%vዮUİ:̾R\4bD17T4;tHŁQ<RxJ^HRiZ?n8eច)iò[h=
n>HD{ew<;989Hx$[vҦRtULD:-::Ȁ9450	{ E=tpK6fcOؘê<٘7lO
zC0Cwiq"Hh	0b۴˧-~OSddeh}y kkڕJK+ؠNsQ6E[D?MF>*:PKJ<    PK  C:U            +   org/bouncycastle/oer/OERInputStream$1.class]O`ec>TD"T蠲@p0uL0Sc1D&LOϳ;tݫ}޷ӷo 0HTմ[rQl+Z*OZrN˹Nt(Z%PӫyNn̴@hBї4}^L	HtĴ$dYHr
ͧdt*,Ra5ll|n9R⒚k|Y>V~=yȪEնƚ
g%qYvV.\O˗-ӣwٜcԘXecbԘowQEV8Gݰ*z{ͰKVQ	;%Hh&a@j5*0ӻ!al]a2$F#1aFcale411QnDF78cb33b (c(N0c֌*	7K(;i-oS*$lX
gW;эeۊtДHw<K|鍗u$6S!3e$5AZk+ϰ}c.~=iGٷ~)؃t e71L98&)eBq&ey)=M[;wq))^S{|OL_R MmOD20C^(㭴	PKrL  V  PK  C:U            0   org/bouncycastle/oer/OERInputStream$Choice.classSsUnv76"UJd6*h6%X6ݝm>ȃ<MgdF_ xGcfΏ{ٛ?7 PVqT"b\ńc*dH߈mVd]p=W,2:p}/ϠT4ZAb5:dH,tl8znh_xvKF :	MPzf(0/vW6a6ZGwéUaT[v?H3nQGnmF'jKm9ШlU!'`8E[,QFyp5s:v[xaQ_xTT{QkcHG+UFRMy
RpRdaeL+/2O{/B{e}
oHTNAKƤz'"ޕ{)RK@5Xp5#*KakTwWNF|`]y<)kzUWWM+4u?_K.)GYLF;LuMkWL_=ҏa2)#aYN9/=\_:. U]ovv˹vw=bfP.cFzBLAIO3b+MPEBk%-@Tcd}[b.$>?RZ$$$IHʖHCLYFMXH,#!=w1J'j_R(e$)<Âd29J78g2#䣈Cӕ~:K4LMK%#SLgZ
CEĩ5G%B%arvԮA,'H
PKԆc    PK  C:U            4   org/bouncycastle/oer/OERInputStream$LengthInfo.classQJ@=jXgLAwE!P((t4iJ:d*OnEqQM,(s{y}{~*CiaHUˠsaXk6W3LH_s[1
Dܪ8fIlZrT aG{K^
FCױB9:񃡆]Ôa;`X9ݧKm$i`2(HH"a@l9,D#Nޒ<JG`0,)Ep0&	"i
QI'cp21dgXnl=Ҩ<|4И8{@qVo#B.Ȉ1cV4:f;PK?t  p  PK  C:U            2   org/bouncycastle/oer/OERInputStream$Sequence.classVsUݼvnM4hUHK*]DC_R&!SA?#EA9_?xNM{w9t
V|§EE
6UUq.8C2-	WdI9KO>z<ۍaƎFRfm
'-;%:NtZZVO__ٲ`ƣr23!9d׌nMwٲ˒g
2uu./qSVLVXY[f,#o)i4MJ{nѹ̙tE1|0'2#䩛n퓧҆
#!UY @ܡl`궜Xa0|șF ?հe^y)5Xrl6-jx4+)Bɗ*%V%#i?YS
3_~{a2dt<[ȤҺe2h̔32C

 ;Gۨާ;YߔaՓZ>jPbC粌sigu E)X`>
(PUG<1ۨؔ~ma PoMЭJ$nr5:O}FIxw	Ш'C|l[^65J6QӋ
6l㝫'*ak4܏
NC50M`ΰѬ!Ca#z&I
㐆8
ЃQ
{q܋'	`843>}!`2 cxaa4C!Ó0|J6a?N1L7q3М!t
g'ox&#ænYX>])[OOs:,A;Ns˔IC_v\%)Z|D;g0{	h=c~eK=`E+%W.%ELX\B";zo"޹@mnQ]iTئt(W"y8MP
Os/8hXg#\E
. Dw-[
ϫ.JE#O/QI

1:ǈ)qB-{
Qӫ.:nb{A5njN
}\{*Bj1H pLhTD	d`4&U7$:u˘KD^<	/
j[,~CsdA]
LuWū(K8rPJKиQֱj<ј}7 D: 8 ?fA?(O8QPK=&  	  PK  C:U            )   org/bouncycastle/oer/OERInputStream.class9	|T3o{y!&(ɒ3V
 .֗Kٍ{@A/W-Z۪jkom}Zg۷@/}|373߼_? k
6pȰRU2akeX'Cehaeha^-Cd萡S.vp;eVdxZ2d+> Ûd8 Ûexo&n2SB tџ XBɔQ#zu@@OKq]Kq59E	\ӵ/
lӆjbX*Ɉ^5m7}h8EkZ޽HGxwu<xNVc4֎V&ךTK
W1566b%Bׇ"|ľ>=t04V>Gjb hdڣ}dAJ$ᨪ	Ɣ
$ֱ'=	D(j
t][km^mNֱdS{[ǎmDl+A-ۻHU2O	l\v%hJdr{c&ڝnڶ]ٟ(9iX|8cb$ِF;IMm|@t(E6w1;\AɎ(poDUta$|G4<8d:ZCvmDEojM-ԕB{ZHo3y/kzF-F
Dʕ+Uչ5iBqm?ңQdNڵ=Bt<"rbY`EvB!-wEX4ħƒ*EJ>,a80	a)h#mԽZ$Vj-Eky
4dziFw4@s{q(߻\ի;SI#\*((tm7lڗPgvB!3YRv('8H8|Zad0Jڛe3j+^
'AqWju)_Djh҅D'hjPk"^QJP9ɁssӖJr#,΢0'Xԇd&hPj8j=iMp(T{RIa
yB/Jб}`LF5vk~|uZs$XhD6Ht%$hHS*HI|9:㦌@4Ԣt4Or5@הUZܨ-+tC͍5B|ME*L)W5ؼnKFi`$n:*m[9M~zC\Nld[CRMTO.p_8Dڅm;&É-a=>ppq.=3dP^j[NPYޫZ$)	(b*cM{6꾕ev[疶>dBo	GHTKbeg#aiD~-1ޟ!Z<!PRlؓyϹf,?՚cܠl)VY-Ci= )QDbSp)yYdaG06,Fb0{Ԍ56cMZ"icWǪX,kĴlvh(kj\7kб55+{^2YZfspҺىmg%ĝUi%Y(Md]Yi(7ΞSzR['V͠)3Vܙ>b3OSLg̤.?MNq.f

Dhυ!{lV'E v|'.LT"όEJd+JP4fp%
)j|$	hR.
9naY6ƀ>Nj
x͊a?z|qZ*T5~DQBmN,W0eX&
䧿(#ԑ1kHzc/1ޞ2u(;YMrUoXT7[N2:>	GHU	$G|M{%Oq	&$_`J|Cc~	#		!	+|OK	Q	<.$OH	)	Lg$J_S3^Q,,D/Yҕ(fR^g~V:ڂfo[ޫ(m4ŭ
qRQV[muvkm`L,Qk.3OĲI!(,gffc-|:^Yr.ܽ]'Vd]2sܲ"#
Owe\N94IDYW%k_[;g9o8{ UK7S{1V&qMΚ92dbZ3ƕW4V<il6Y+,UBEPqŽP;OixB9$J#(:4~. 86"!-dE~h.xsx_Ypm	3K@S`A!\V72x)p5͠W(p+*lPp2,;|sJx72xOCw1ey_`p7/2WؠrJWF~+H*
(v\SجG|_Mp	Bo`n$]naБ{ܷ!1do$
F~
7)eܬMݪ@Y@JO00+m
aNtJ~Z>v.
DpϮa
bPgwap*|z'Jvo`ǉ1D:5t}8CN'.ƨ^ě\~'f˘tifp2n ]^wdpmPK?`#.2! >6cPnVóR.zW172x#718}>Sd9w3"/1217"&\$}ffp+0
28\!gof73 _U\uѕwRw"b|GʸЉ)f"\_(BQx/l9kAD_1oqgWWOrgbߦ
uY+$ ء*2(r]Qeh rY .Rh,>|!x߻7ʂ*LNJ] LSX	|tB(Vb\X0¥a|uӸζH
Ѐ0Kh҈p?U>q_6
xgĺ	^P(iP.aDaHK qOP0pL;'eBQݴ^kCo%t*2v ۑ1q	oOayańdLtS2O76LezzB"}PSp*Y2gq|NBz8>qs^88f\pOBkqmGw\N@ҥu5K^k瑭\-ɤ8OMaiMᢠ^.i_ӑKød"oۚtAg?"4!O^u,I9w(G+<yc>9lpi'N'm+>Y9ٵ-Q|raRX gMHc0..2x% Od9	~rإ#BJeWKu|NWg^/{u.¹Ӷ(π9N:҄q \sz]n90>ē#giQ|x[IZvN[Mb5写4ejכxa]hnBfb2{fF8<h0/D.t
]eAFB:NcP.`J:7NE<QȶyA)cxRD|>sx6'#
1b;lGOS ~
^%&c8
7z9O+mtнf
EL9E^0Cq@O<c\a$õn843cfNx8<8iJxŋS^1W
pxYp?9Sm
$>}Nh`#
+2G,wQFr/?%+5
%2!T:
Kqo&qqpԿ#|iZx]VxU'^CKi{JM?O}T&V}x-ci״cƘbjpH_pfZv7+X6mf}׾ƨ^-s*U3!a<3O| ^696k,%avQzLyeW5bɲcwϋv,T["w5ճગ{{j %x}JJ̞`6^H$Q)9
	Zl4-v4=Wx4ȅz[ESPvOe4
x0
LDH4V3֕)¹K:g62@
`1!-4yi:/fnH(%gJOjB3u34nc ^C3.jlCd:C8	S`? Wd$+]N>p3h+۝ݏ6@b2]IiM%;?g3HN=;?9^yT46nsj4UT;R,ztװ㜞͒k3
EC;lg_.4c'nHV(Ez=LB/D*$G,M*mn 
+{[!^/=vi''qz`_
z&U\o>Ċ&U7ȴiSXdMz
t8YZFʂ,5:]J9PAᒓ ?N9k٘c||%CCs%ʨ+<dx4,t B?IelHtx@k?G[1g4!'@nkrqJZtSv6FSݵq|?g+(a71ק
.T9<isrNa}~܋bNcl'm6v=z-v}̳l>Q(eO=TA,>mztoR8^_dRA/z	,[z2ei]݆Yda|Ь2lWw:|AKA[JnwgPvA}ABkI΋vq0|vf1+p
V2-cVj[xa-8PK-  =0  PK  C:U            (   org/bouncycastle/oer/OEROptional$1.classTkS@=KK!Hy((
)(X)jc;0|
ZM'IQHqt(ǛH;@f{ٳ{?06tAO
P<!`
[dhϛ%{3ȺapKe.aCw=aW*lO5š}tapwT*C9BA19Ś
duEI[te#^L[0Ѭen=:,K{)J*ra3CˍczG[<4)!/D픴]"#Olh[%0zel>ShoϤ3yvM$+[B^	7%ܒ/a@m܅w]Hs}.x"'^k%<ZMC
9fyhSdQ_ӣAd9]j(3H]17ׅahM*ڹfMD\}F=+*DR]
1j
ڐVŴx؎Ì!âaPc#a3cXf.7²]~'*Y!(t1tol/I?݃-F7d
+:rrK0A>Q@
n&b%CۡP՜Al+s?n	^*^X<M9ILQG6iLHI0ˑv<9ؠY&~,PPKQ[    PK  C:U            &   org/bouncycastle/oer/OEROptional.classU[WUI$nVܒ	D*AlQn6!Äf&,SORPe-ԵM]ֽ'Y}߾~0ɏ'I;rّ""SJj:3B&Z,.eӋ0`v\Nx<N֖f9ղ@752RI
FQY5,JOrP-246-[5s!@ŵ
-炖ULfjЭ[AUsmP՘KY9/Ln䵒rn?*g]*KZlsS-3Ke5K3!fWL4!E[eES5OPO"$6u[Njmn%\+᪄kK/a̝WtR`QSNLdvbܒSӝfSISt#'>OA1t"ź	^o٬G%MCu+\`~sGoTsq&=wp>}]tzK~ꪌvh;2xWFc2.+# 7pCF'ޗ!| |JdCobJF>с2BHq	'1OY`ŗA( "X|01.Ƨ1űY+A$i(nmӦhnjἺyOA7NZ;YhR!v=ڪCWz2w '%
WD|~+ t0*?^pI/,bQ7`g_p	|2axi]Nq9fw0D==|9Z~[9@bE8%~l4}ZȐ%q-V@4JuQ\#
Wl	ks|[etVK=@tevT{W#Ke%#|K(f?m<a-J#x<3m;Aמ y=
_jWhuoru;YlR<]Poz*CkVwjP}Mu5=q<>Gob6G+]F;=iKtƽg<J$&=PKбW  F
  PK  C:U            ,   org/bouncycastle/oer/OEROutputStream$1.class]OPecDQ*/"**-j°a3`D/}c1+LyvagQ?sN?x`ò~+[fFwm-{vV֔izMiϕ̜mlglҮnc)XՍ%59+ Miڂ2(OijB)E0Ǫj(UCIFuaurHiwVݐ\^Xj	C	f.ՕK4+qULIYecfW]
-i2Ǔ6fҶRYcڦml/J#F-$N-M[3y6o
tOO=2P'ငz	
%4	.ae}]+{%
Q-rĨ`F%#ʨbT3j1>F- J80Zpdt1=^IFgqrFtD-%EZh^v6ᘹ}ӺAoa9v<L5s5RY5ݷ$^wCz,	@OJV:F+g/*e/b>	{eg٣a
|i#èC=рvtPvb CØ4)
\EB9Jq.><#xʗx	)+Q
\ΡD$\
l%+-8Fj*~PKk_  +  PK  C:U            *   org/bouncycastle/oer/OEROutputStream.classY	|TdfG2$`X !!D5$Qh%y$L֮VkCVc~pPZjvV[m^Hz}3I2{{{}lyFkPPW	ka2
h8C>O>(m@jvm` (nv0;ÑpWuS)nYbpڌZM:-3k|6cj.jI\΄\91Q~make!ZTU77	dU5,!pלTSXP/pzm)H E
:ma+Je]fn
2{m`#aDe.rB,ZSw,ƘziSlj:+[ PiDs+j-{0c@ k'NW#N+&cW+(P`F	E6՛bVU$bn"bQPKBCuJy\nkf+Yl
*N)LC13"&Z"Ҳ#b,jjo)uZI>F	Yn3[ZkξaN5	VDPjͳP,#rP:zV<RBꌳ6v6+j["`WXe[(BK,63'ѶCPV0ziJ>4K8`Ґ[A37є<j8+Sȧ6vuv.$4\Do-6B+XG͖ƄUTts5fqVmjGلvve-Za{9RjھmPBwfn{0+d<I=FRC˯\,YEOss)\h	LF	DѥB2њ 
F̢ .MO Z`Ϸ"d+m<-"f,L3Im@<[H&7Y:OچV-0;#0
v3Xibq<.fQx)!<ae䢏U+FضXG9-[m(f3Wuwrkv/6:uGáq="ēp(]iӱN B&m)t_<f44~Nu8Xij@HT#0K]*#rx䂟0	 Iq#(EzpT+6HDǛ*%u4-;-0J-YEgZh")Jcx"NCI?*d&JurAs1ɀf3ὓ0yg
YMT\E딌ġv4+MƟ#!I}5nghF E.$bEvE5vй2\S]hrcA)'NKEB*MHO#-
]
ocQ?[ [0IHR#U԰r
|)Syة(Qj[B-|hr %a>D9Y(%!DR:DXS2DT"&%^*%6KlFZ/Hl&q7H|QK7J|Y+_%!q7%nE[J|[`L]ۗio]ca{|32au2aFګ`IIn)1n=ϖ(s^fg<>JCt0D/=&S??u+uoo=.=(X<kp2zƖ0FOÍي&B-`g%(0uHǐ^c#-i*F:.Τ0c13v+L|8aͰMsس`lzmie:F؎eĸԌ?3_=sfMT
PXp3rq}qN?>N5M]6Ҟ?-F^f`4$s̤}z0lƠnc`>~cD@1~gc
42˰Bd0
PŰ>0-mZeo`Ý=`>c(2p:L6pL2.|Mx"@hL|hw1LG*Ɵ|608
1pj<f7*O3lĿ܎3'!8ls+t@-J|j`	}$\Bx@d+
1,KE
	i\h\s3VaC.Ca4C>Jx;bu51ލ7c1xSP0a8S.%3e"c7<ưG,ֱWT3,#1}su2uU+tS0,fXФ)1agJgIaqsSǏ:e:^`c^gx^侗DdtT0Du,&13t"Nfdhahg(a(ePưaC=C,0liF33\0a.)02t10uBpùK1TtJ,kqV'2'sư<-.D[
_Z߱ޤzW=zQ?êgWM|b
.z}ec<PT3JST!d? dZ"W>*ܩpnI	Ӊ?Uu"fۑ[6-xȄO9XIY*g2{MC{Y8^ ^gşWSqY1̛\ѷLC߇G}J
̥VGkvm҃=zpdW8+\4eWHӻŇ\,O#ڳS,.Ȳ2vT{=}x]:WxT8m	ψ>JH>mVxR	?".]/Y6q
JWzqq]`[J7sQ7>ZQ{XsKܸ_lg*(}Z^?E_ގEif`jx<v`Î~ux0Rs*ev|2>Ǵ>wVq؊2fV.ʁ>SU*ynNOM;UWpͻĖJ=U"Ǜҭ]?ڧ&Ir@%'(!9zA	q]<r'?cTU$i:իg(ZRnd-eV2+_OMY_xګ/Kʃk=(j*٣vXV\Ϫt:|T2Xgy O=͠B}6T:{%(̝p>O~^}.>[^ݳ<
=ZR\V+=ry6+.[CUvbu389!4!ճXɽβYE
i7|.۞Ճv8)NDjnO[*T`=\sȣ{qqw%m wNs`^õ?
%IDe\<飐ލ}BW|'.nہY]|ھzK[m?R:NNl:1x¶xgO{yZ}#T\3nNԺ{署O[]K0e
׵A)^/wFIoaZNRZJd^.e{n
J	Ak>lvW(Wث5g^˦Jكy\}Wˍ^[nƯ{a_+\ ]	(UF>>R3}9m?ERB
K|~6 6wld3hW5^W>rZbf/?6{=D![J1L4Q{#I'dTWHk*e2އ
/RBS'qas#"]Hi@3le͆=}M
%^p<Ùu1GYxS"	Sf$d#FcA:b)zڨR> ;%4+|
N+\ }kjpo}"N GK<q&uFad}9
`q~2Ø@	BgP-!Sly0
a2䀉+k>=7/+ك:fYG1%ҋ>瀋ʈ}íŷVd),sfysj>e._}FeK|"FlA9Kv|пzk6>v)5󳸏[qqC*:GE_ȣ,8Bn!$TΝLͷۛn
j'mFf=%eKbPt},
'"<IN-?~ A|6[1JݜhPo"TыW$r=x37*>?YrB*+%$y:O4o0cy\b=*h{lGC
.,=foh<	%yaqj=~.؇7ۣm%
PKUV2+  -(  PK  C:U            !   org/bouncycastle/oer/Switch.classm0/ SCd"сѩ?(6E| r˽?ZWBWP$2,MS´ZvRXjx~?;ybr!X	Cݨ N:'aV&C+iL1˘{PK       PK  C:U            C   org/bouncycastle/oer/SwitchIndexer$Asn1EncodableVectorIndexer.classMK@ikcVГ!I xJ/dو  8܂X3<;_ NCh^De*+/بK42I$xXs}$6e.
&jYLnB{yO=bk">ມ#^$ƚ@$Ё`*$BgSIR1` +o؜c!w#[
֌?c*!j6oPKgK
    PK  C:U            <   org/bouncycastle/oer/SwitchIndexer$Asn1SequenceIndexer.classJ@ikӤVR0P7"}2j$L0pPDWźs?s|{pmL'LSjgdR/}b\{2^Ëq(nBrEᅷiɯ;Q0-F>y
;ѰAc/?1myYt&:0M4LŚ3ޡ5z(3R,RJ(֠`*Sȕ*!uC
3GoW3'X;/?V%\@PKĊ
    PK  C:U            :   org/bouncycastle/oer/SwitchIndexer$FixedValueIndexer.classOK@_L[SC(V(K!4j n[)(?JEv=z 0á@E!5U'Je*)RCQeiCZ`?tzSl(OҲPSUk^ZYJFW˻TJ~l{pX-TNej4A8ϐOG;ܝ
gp:~yҘ7oPKI     PK  C:U            (   org/bouncycastle/oer/SwitchIndexer.classJ@ѴNq
ō(E! d?I1%`.Z˕ēuQ̜w?;!V~(>tV]LNԣҩ&֑)RZϱ*BOY:)_:zpc(kbΟ.Pi )%ŏeemö&y~fr>sz=hW$$.8p|,4iM.ʝe@ݗ'Xm02pq/PKadR    PK
    "D:U               org/bouncycastle/oer/its/PK  C:U            )   org/bouncycastle/oer/its/ItsUtils$1.classUmwE
t4E!@[Ҥu[JmZ1-0Էf.
J@9Q9RҲQ<sr~62ਊSJavd2ۮ.0Wö/h7[-CA0jymw0o[}o!w-|y̆8-c0h4[A4&GM/LNP<|{|wƢÃxYzhVh{.ù.ZqN5v	wjnjvb!h)V۷mooP4V(NڎQ}뢕1+FJ\]k[QLWŃ= y70 -Ib]|-gdZ)L*0[	^Fȩl*N8bXioxSo8
zW60b$UW4gA
k2('1,$Qyc%~j>:ZX	Nq>Q <c2Ud!YA/9=ڦe1#C&vGd:rqFDt`ZEiY6ftdc@irPy\֡c^Xt:c
eijŗ\0k.aYE
|.a+J{~1	|* &]^Nk9^@z]?zu	 kκ[5(r5EHeHF#Z]3HE`7Z_ ?LMItI`6f,O<w?b\*;FJNvP[)Il"~@Z')_G..wQ _XwKܢzi4X%5D7*&UL<sJJfe}ECAb>JS`M РQ#TPK[b  8  PK  C:U            '   org/bouncycastle/oer/its/ItsUtils.classTNA.E
T,-
""ELhK(~-ۡY\fqwJ|
c/P"ۇ2
ҘffvKϏ# xьdj):ZeSi[r!RKe3]deaZ/n57r3
"D;޶^Euq/7mpLQ2rM'ʛ\ȅoI*׫|n=[Y?
c ei;Inג\&|٢p2'<IbVPNqjc&aKI=	kEe_AgMȠK4MCV
4ihpCM
jq-S"44\LݜcRf&8UI/qI28YL֣vEMR+yj1W]uV09^M$/eN:2@}^]i-E#hF(8
˽`QDэ:n㾎腡#G:q<"@_EN)qf{,ɗmߦLB*Mւ4ͭ.&@!SF;1o
Ay!飞h=DJ;_=e5SP4N@<}=}K|=dFCkUx+Og
8FS2?#]atT"Fr@A cH#W)
:z^)S9MN{BٚPKAP    PK
    "D:U            $   org/bouncycastle/oer/its/etsi102941/PK  C:U            9   org/bouncycastle/oer/its/etsi102941/AaEntry$Builder.classSJ1=ikmK#ևX[ oke6Q_)(GkU$gΙ	#CdѐQgF2H}:uIu홠͐kK]fK:Ys/<m\}pe4Fj»_.{*?י
Ko0PE0p6~VVW6u:QI~EvY$a~ʪ~-G6ڈcF,4$2	h
i`c>D?gcxZj>M#Fآ'Bj3"|k!q>" -&W@*(t}u ӑ {}\!0%"|PK"RG|    PK  C:U            1   org/bouncycastle/oer/its/etsi102941/AaEntry.classU[S@EQ"
7E,VQѪ3BX;`0?ɿ3bo/>Գm8r&;9_~T>g81e9hK4gh0Lk9AY\%1tUn
5<[ox}ehr|u^_[xzL	,nNVO6vˮpG$7L*,au9i;#z"p$hqpTU;.n4h.drOs[#ãDk$m27+@5Y<!^96<9'i/<s^AyM:,x֊%uQIM
(hUpJimU6gQ	[=oIZxIFS%2b0*cݓ'.e(YyF̂ӕľvPg/6եm9+(`8#JPײC8jԄD@B蓫Ѐ4ư4#*1c*:1*i8*A&TtL:{Np] rچsiaO'n"K
Zej]W@L.=u"@IƔ6{ L(VC^GL׾C3,ߴX#n}m"=Y쏔KAX@=2Td'vFK[i~i	fYd'BЊ-%CS[Twg_82ܱ/8	Ht&(f
9$_s:PLs)*.:;PK "U    PK  C:U            E   org/bouncycastle/oer/its/etsi102941/AuthorizationRequestMessage.classPMO1}dA?&zQCJ0#HPAeiEm1F(cw&bͼϧ ,D2UUHń	V]ϦM'ŤpʤуIoz<  ܣ+bAKz;WZ?z
9ؑ~Wֹp|)/m\a~v8l<AECW(.T`^k[F;L斮O2|2YJ D!L'E:b0C9t[z喙b16Xñi1'A2(sb!`D13~\W~!70;0.G17  XC4PKoj    PK  C:U            L   org/bouncycastle/oer/its/etsi102941/AuthorizationRequestMessageWithPop.classQMKBA=c3{&{-FK*)P +6s)1g/leDmZyO[
̽s=a@
!lKm8jiUw1m2-3t6H[H0rE&ZIۜeF(yk)sYs_ӹUZCEfXIz#)|a￾pL5[p3+\M%E
J.M`ڹ`׌6ӽl/	&כ'@0X!c 0B.ae5Y1kiQkꭃݓ[wl%g?`}s!}hcұ;HPKp    PK  C:U            C   org/bouncycastle/oer/its/etsi102941/AuthorizationResponseCode.classS[UϣЄ@!j@ڽZi(J//䕗nq?G9srÖSG_9_`CYZק(Oڮ}ڂ't	1/ż-R`QJR, nY؛ʑN8\w-=(TnL"g{JKu$-4WIfLN~q%W+8Ei] UՒVT{E:RO@ea;@uT],\'\GFN^	]qtIO$+MzCgfg7
gRѿVi8zIKXgokKjzL?9GQhdŠcP'apK%E*v]Y?;nuiFO7'}\&Wpq씓S[`-ʬx>I?KJ8cM⠲.ksU%y;ڢ,:KGBh!Ȅ`Ă3׌'p[ӽ,请o9'L7аtB n-ik4vbK}jy<t	Qd:QB'a!F	B$vvRA~ a0J8D聖(`["ڢ!{<
;	cQhB7l	8M8Cxp0E8Gxp4³isK˄+	/f/f	/^@#0^#؄\a.UM NAIX/f%Q&\:C =Ig+8`^&3q&2qawib.c&&L3񐉣&&M7(XtoSZ U3}93R65d^8sg8V f,>#>{*|X}
W#[{p2|M̓f*|i2m?`{g~{?! &2?UuoDhT>C#U˟-Vր'κLb}4̪I㵎쵖ZOuwأeNEc{eb/w/dW={/;	oؓyBjPK}ű  
  PK  C:U            F   org/bouncycastle/oer/its/etsi102941/AuthorizationResponseMessage.classPMKBA=c3{Ԧz-WRIE Mh9>/Lf'[Qh|ڪ {{ι|zCl'eKmaQjҿ6
BK"])$ )jhNF^z-PV@SM%5֢f-rX>KrCng29:fXZ.2/ylU5J&4Z.ŵ
!kR'PLmn'0
$"M T8C@UǊFGYa!X4e"6L߇hwo^V~&78wp:;RpGL<`:0zG)PKqbj    PK  C:U            P   org/bouncycastle/oer/its/etsi102941/AuthorizationValidationRequest$Builder.classSJ1=kEC[VED((P1݆&+WEP(qvRE	L&gΜL/O 1S,Uҕzab3'//[厬Gޡ8iaɆu|sn:5M7vJ;oI,\\XZ]^~wJ JN8:ᾨovɜ1k a`XF'5jN:DRNUm GK WݩE#9@D
YqLBSH"p
&Fˍoyuz
J	Y§'$#VZ`!5)G[
BD ; }
0 
G["=&ޑdSfXHPK(  |  PK  C:U            H   org/bouncycastle/oer/its/etsi102941/AuthorizationValidationRequest.class[s@-@J⹕J[Դm+@+*GWVLIMx_[;nGRhM$q3 gqaǬi"RV}3˶!*.g/xQR+.g8:ɰEwyڞ0HtHi奴/a]4^ee=kYlXi\ymyYKtl1-b',=sw&2v)fn(fZk,aJ/\n
O3''g'kreo?涝bL'Yby{{=MˣAsg0_p!
v*PKna{e8{SږNb~pM![أ{"iTJ*n:N;fغ:j7ߍΰ;Kg_ݮY[y9(sB؇v`4	c!8*{d8B	Np:ePqI8b2aZaSI2bX(ӟ;%y<1Q|zXz F2He˂U@)|h5\Hi'W1'*{$V.F:ìo
!#		O쇴KADiAqAOQ;}AgDW#!]|U0?N@! VzHU3>d\|$'K} zk1&5KQv?PKQ)  w  PK  C:U            O   org/bouncycastle/oer/its/etsi102941/AuthorizationValidationRequestMessage.classQJ1=S۩tZRD]ZW΄1uh
ORD7.(13Օb 7snoO J!Hm
)A*faǧ+ݞ˔8eJvc]H!PZba\2>;i&guWByH
.Ӭ!|ɽmIӻ;"[0LX.&̯CyqPBB`׀Pj.ulXk+F&}zjs;ߤ}ߊ
(dl$ |ra z+r
:8bc҈Ɛ30F	;LƌdĠ>bvz)fX7H;ϰ+N{aOA0{'<PK.w    PK  C:U            Q   org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponse$Builder.classU]OA=S(+
iuhLJ5J$ۄ0dřY%&	Mjj$wN-FdݝsϹ{f2/ VQd5LY䡈~D3AGa&]!_z5@h}KޏxkG[~(꭬a)"p^G{f!='QpJUT?l*D{.X̥'VrjXrk\2v%Z^IJLu~}Gq:S\(W֏^p°ai+0w#qmUC2Z슀vKW|!ip7q8m=sn]k+<.9eC`Y01o3ܰ16&1[6.bZ?g=,R\a*'0,c4[d)m=zoe@m s$e(ZG,;m`r{4t =: 3m<Ye:Զ 5Ph)zF4yv? PKi>  !  PK  C:U            I   org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponse.classV[wUNva*H
i	*H	ҖFaL9a'B]˒.|3bCV`<sL^|'yETGT5˦m+JeZu29nzUkbA׬Mnq'9
.yAzU)0ժMû0oxMxީBvESF2FhYaXnmQxXMa:6ä6UeOX<kx\v2WkNݨZDx3Cr ! ތ+b8t
'RafXSxY.<sny|lH-JYgݴ2,ԵnNa+ufޯ}Yn,m0+S

W0
>P!P=c(E[Vky(BtGR˯Q|Rbz@|Cݡ6zfb{e+/|~'KTweH]cRkéQ#obwa72</-gZxwQcHi80
pZH1AżIq^RI䤸,*&pUE_8*NRTL⚊)|%M4*%x7LZѶE~QѼ#'2$K@q2h*"4m3[(꧷o5@
xU3OPw0Q6ƊD-ʌ;
GRT(@x!07Oa0'Q9Ao6d=2rN#Bh4`8LdGqӏR}1s=>lp<Qxj?I%,͔+IWj(XhHc.3It.$U!/PK!  
  PK  C:U            M   org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponseCode.classmS[E7<$byjmBkJjV6Z*f{fowCoq82_l6t={M_CpAW~d;_"ӓL6B
uAbGFˊ1:<v0Pf/KAǤj(:W^P"N?QRJGuڡkdkZT*Ln{z7sUbӕSɴ+{!t#-d}J-8:53Eqݬu2w}cK>iƷMŊ~gRZ&~К"Hod<ue@}ZN5SaaSzU,sťs+P4ڛGB\b+:a$5sX7%u
}zX骰ݞ_SdD.uitA'Q(}ΒKT8Y=UzG;S{(m&cFnb/^y{jhwZ<zx.Ȼ'a%Ä(e8a0Ix		It#$Mq
fH\,.RxPt>L
<2M[	WW	E;kw	q7Ә2}mjb)pBE(uu
-ʬ)V>N
C1ikֵvak'vk3f06	fa$HNvQ}
P#1-<~>縘~Lnƌ٘LavRt6iݛ(U0s{hAgj_跧)>0gϛ-?0R1S=Lo~Bm9XYk{ZGjA
F#c]F> 43)#?$kG|lt;dvFџo'FFdt5ߞ1PK    PK  C:U            P   org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponseMessage.classQM/CA=SWU{)ag1-
",(;nT?/jEH%HI=s9w> 1ƐZJUވ2V&u#UTU FZeP&Ťo$M
.d,JE'iSݐJDMqO2#"gVl>_Z.=0!HQM4C%r]w~̯CH"*,Ks|l8%ec3q)xMU(pp7x9vd@o)2ЗA:tW"8/F{t9spsġ!gpkʟmHT{N^q
3#cwlc0މl PKMYv    PK  C:U            F   org/bouncycastle/oer/its/etsi102941/CaCertificateRekeyingMessage.classN1ƿ(&zQCY$*b=&BH<eHWbxhb2OM:7o<>(`!#Ի#h\bXo=޸""P߯8UQhf˥8@:|(SW
MgԦc
/\qk-EUzbW*Zg5Q+6}G#q`DW[+#O-rM/k`HB*S#0+MU-Fhl	VٳFe
(bθv֓&!X_a"ao<:0u>\Ȏ3'PKe    PK  C:U            F   org/bouncycastle/oer/its/etsi102941/CaCertificateRequest$Builder.classSJ@=c1o.bŅ/DJe^e$ݸw((GjA9sy~yx0	Dn@mER
{!9NB-E@9wl	<~Pm^s.ShKlJfjkNmD/Q(`F/-(ֵibZޭq#@@6FlUNIuv.,R3Wr
ѿkӯr<߭?t[Kuhhj7,ӂ.-ЛB}o&,
X.}G)Rd|_X$DUg
hcG Z7 5 25h!yue[d1hc"
PK5t    PK  C:U            >   org/bouncycastle/oer/its/etsi102941/CaCertificateRequest.class[S@KPD@jIPDE**cg:iM
>XGۋ~(l	9{7 ߌ&P|(SO-JleK|>e<Yoxah-pq<aޣ"ɧCy2e!Jǒ-[uµeim)Þr%&/	0݂/s4<as>}q⼑)Ϊh%YE375c4Et.<+9<rm44w`~&:xk< r{T
Z&lkqҖNKr0k-Yz*(hSpHA
:t*80;{pL1\#ns|,>QDu
)yvvI@J=ߍT"\߯5t=M0 &p]2c[+vS%o#'r)\戀
u4YQ_"8tA!i"hƠ:#͹$ ނ(I¨n\Rуi.K3WT\U'GOᚊӛqy"n6<O^\mYa/'p 6SJ_2jjޥ^)BԶkULhkW Ԝipd
RѶ\'w-ϸ-	p{; g +ӥ д@rާQۧDV_h_E4}T
lvC	JBZtcpj}gT^Eo+NBͅ>[ŭ54"h^E_ujJmZPK鎚/    PK  C:U            E   org/bouncycastle/oer/its/etsi102941/CaCertificateRequestMessage.classN1OA_FetAO"h (&>o+&F7.|(ct%ؤ=ݦO/ aHn2[#>TZHön=tP;CJWBj@+NZnP*,y	M^H)|ikMĮТr?wcagb@DJuWŮPj:F>?73A3/Ha4bDֆT/2$avwq .k"[
7`Q3gYz}HtO&#0Cyqޑ}u<b1Kg/PK[IQc    PK  C:U            J   org/bouncycastle/oer/its/etsi102941/CertificateRevocationListMessage.classPMKBA=3{Ԧz-WR! #=d^9O_ت(ڴGEVEs{=w eHnK%Ma$ SUBx#V/iZy|"Q(6Fs2ZzBejy&}a:2T5i-kZwHAEQ!ť..3~P~MD
Ь T,(ʐ2R\to	9k0B:FH"4R0Ɛ(MѺŞ<aR蝸N[4ib6'ݕ{LEDoOd̀G~
)N}C	Ή{LtY*f"X&|PK
1ҹf    PK  C:U            2   org/bouncycastle/oer/its/etsi102941/CrlEntry.classR]kA=M6iմ~X0$%"4`ڇP4;[ٰ;_H_X?J
d̽s9ޙ>\ hcBycoF*ҏ<jӡꝺ72cXLKytq,^~P;ixJ*wˡp/IC%'"ӱ"S.<u<F*d.)tI+r7.M=CHJ>=I=ʌ?&J&,&>~V4g*}
Irzeg 20(`.7+RpBauX'bLx]B,#_s`9!:y:9	.[Tαt&%Tw0aPȋd;"TJ]BSI`
'c=*PK2Yd|    PK  C:U            4   org/bouncycastle/oer/its/etsi102941/CtlCommand.classURA=C
b AC  ^P@5
xxsleJJ?!V	ˋ~ڽ`Ji>3o?|0Gatb.Lۮ-
,ue|٦%IzkkZ%)ښd2@_jq-H5է)/Ov7
`|jlc9=8Vpf5˕禵.m8(󶛛ݰ9}pQ7,.$*ցT<wPm`*wܙ=8,,؉Ʉ^c
.H1 >X̽fK{+oe.
PpPAC
+8()]uY`lxӢpwlodo,.-;MleBrD#:#yjn_i4@uo54ֻ|q9/)2a)׮!}ZqZCMЃ{հcᘮl&ٜkE\Pч*1i6U .fFI\Qio¬SH
4',wjƋ0K (=5.VB(Zh,&X'`ad(C1+x	w=[HG~Hw |I~W}6>>eˍc;[AJ	76n362۸UOeJD7v$&rN+-ƿ"J=J_]:EgCcWHٽ/l>$7c7c{;8+nPK
8B  ,  PK  C:U            3   org/bouncycastle/oer/its/etsi102941/CtlDelete.classUQSW.	lXTT5]JE[iT(m:v$7L)
382cKڞ -!d&swsgw fQL@";^@ϼxꎀ\+tdEQ<	=G
:_TwMǋ(,UeNֶJRoإP`msӍi
j2-pm[˒/TJg2P?;08 ZW/(-<ߕtX)Y[a-p;vUҲAZX_5O;z<d9pBe[Yn8߸#PV,OU-^nzfn6g*d'%	;I)s7PX[vUeY'-7UȺVg-FX`#40c
g5j8ἆ4\:tP[g+}4==:<-Aۮ[gyǳ=~u"x"ީV"ۨ?otP v}H,?ئOoC{t'.˾FGAR6Ћq2DL&`|ilE7鸂:Ҹf6:FyS|k6ycJmYq
K:XoE>tBˇѥ6*x]O4BИ4t=]D~(VJ 1E	I9b4{fw
"N_FpbLH#Z~`N] |^.QXŷE~$%4dvJJRDMO&>SXUc,ߑ)=2;gu<c}GMRwghdnW}T{J
ÊGjXVǣ PKæc  ^  PK  C:U            2   org/bouncycastle/oer/its/etsi102941/CtlEntry.classVmSU~6,,ۦEh ՖhT|Aj*D4.ut$	?LK:2?sݰJ,t<{{=w_Y	DRs$J[[W!|;%cbTLh%
a6Wc[شLABd{ٗ0x;T2 rKƎgkE׵lÝUw%ߓp&jg/l;nŪI5[=iԅkiFݛזvr4o[x3qQ_/oϷj#%3$o	>w,E8l=\pŗj@OL*pߩ9UG8;\yopC!#cPK2d8'㼌e\2^sZ:Du+Ɔk/a(;ڢ^~xFi8ŋ;-brd1ZMݫ6ewsQ~7xӏ~NHcC":dK</L_?xc܏#|m?ɫ-<X#vUWE?Tq	=Hx
3lBl"Y>vs0,21|܏<n1㶂,>eXbXfXUI|paMV\EI+)kXW0/\Ǘz
~.S!5an[%~O.ޫC/U8p:JĿLň79u%o8|1s
<ȍ<E97w(		jo'`0	?6xjZ(oѿgdv"FGlcl=|1p7b!}1&de:"|7F%jr r#}˹g0wݶ"WMs

HR"m:߉p7Qa'N*ʹB'|Y8geN/`0|7l0<D8i3JPKѰo    PK  C:U            ;   org/bouncycastle/oer/its/etsi102941/CtlFormat$Builder.classVrF6	Q@P@
$`;P!P$Kph
vd{qEeH<J߂v\2Cf{tz/(f<gWwn{}8HaiXfk{H	a;n'w%:f+U۟3N͢[:p2/S*vyyN~I3,:(r5
LetJOr<$7Ԏ3c-.IEZuڋ</ӱAg<OI6!S/',WөXq,n1I["wuat.<367;*{@xŴ
U?vf[_rzxY枾LehlAS4:H#HT婴r׫ݴ[QpT1|
>VpJiKo[ݨhFo"ȁK}j1K`')I״+T8R@7n'p',+1pA s>9! h4y>>~vsfu
Cz{-=1û|>Q{?i]3leΐCeYv(1D5`Vça
4L(F5hZL$w/RJ"!]!5pIiSqߨ"|M/֟Soms7amL#}1r'3aDMڈRF`2%i7E+ҿB~VqЪDgfUp+ Zp{ ,5 ~$`*kla'{J pC{v;*TXVC?u=%kQ"߰!>B;N
{߽Y(yRJpo3nVkzBRu:PKI    PK  C:U            3   org/bouncycastle/oer/its/etsi102941/CtlFormat.classVmWd!%CM@ز5,M	?ϱcG~?JΡ
~5i7 aEЙrC@i]b~Ǵ"YY\6{t؏;.0W6+xwkwqŝ%ekM|]l3OҎe^:=o}hx5Ht`tl1	ee%5gYdXN^m{>@:wv˂zS
NJzq,fF{EELVGSxMuiM6sxZ,9A'ds0zX͆t7\fhd[KOor,;cA s+k"|jyãY6=snݣD\K"."=񁈫">
򩓔0{*dE	<
|njӠrr8j^ŴK
Ud2dxt(<%wt[{sδ󈑗6Cu
6Oqv̄3"m

jMUKvZ\pۅTΛ@:g2Іw0"ȈCяQ"2CF\ɸqbJF>.q1XbϹA,KGn⁄[\|%6V$[!<@a?a uk-g۬em׫yFCc{e_<]G~RJ+V	D$M:
roTO*te
e R3e'"65NG^/=Ġ/[%
߽㔩̩.5w%&%b͙$ +@8E zMUDb_}Hk| PÉHgki]oxHFZeiި%̵P?ci~RWɚ:Cmjw 5=tߩwsrM9v (F0]#w	"PwU$MPKt5    PK  C:U            2   org/bouncycastle/oer/its/etsi102941/DcDelete.class[KQ'׬WMVt]5%>HJ!m M+x+GHRAڗ>CI*h0?30쟿? T!m0Obi	Ē`ѫ!#/hBK3,Qiǁ{XqPvj|?/\ɰx?RV;P("Ǔ#d_lVĭ_Hؔ1=P$}4h5&	w|ޘ*CZ/<iݍYES4lޕjo0~XU
`@
@JM(S0d&0PR扎<uN̛pΝoHGyXd5N*K]y`^=WOE	SJ|5ͦB<ðf
O;Xlvweba:`\bt9O(UD/PK6=  R  PK  C:U            9   org/bouncycastle/oer/its/etsi102941/DcEntry$Builder.classJ@jmlM+^UE*(^wX#!ݭPAIRi,&g3l?^ bVp*Cl\RF *r{Qus	rE.K#Uu& ђKK%ߩGJdIAiNTT`Bڂ%p
wn
EfYV6_tSХ}G_w3GZsm;-6MO6щ>q 8gу,l-jާT9H>CRњ4XÿCF&SyNAhӼO2ď@&yL U\|X!w |C0WgG<b_Ys2PKF W    PK  C:U            1   org/bouncycastle/oer/its/etsi102941/DcEntry.classUrA=HVb4DEc./x/Q(eu7V/*
)S^|.*K}tz
C E˱9T2&(_^ϟWco1Ql.u6Z_hnPbb/6m^1W>-|IXp*zɭ:i;)=S9[6J6UuF5
SΐBsK0?0.tK:^3o[rOU1iqSSeWL%bezkۏc^Ηx)2	WqǳYzA `PvC
v(ة`X.7zl5͐Yg9xM;Hnb%5KsoHِJ7D]GR;Og!Dqk[ycx>G0A_A9	:*da$9!0&b?fTQLKsZy1dNŘ<nHq
>`Aӛ=`HFò[Z
ˆ+ 
dnCZ
;'M%01aVOZ2Id$b&+^)*T$IǛ3ȏi_}U+6-jԐ]edA
&N_{j}6Vx/5Hb($OB
9a#]m`XåkJ~
?PK?B"!    PK  C:U            2   org/bouncycastle/oer/its/etsi102941/DeltaCtl.classœNAƿ).ZQȰ1Th%r=6&<
oQa ^1̙~g9W <`E2rKCzK&ZȐfU[PGHtL\$2`CdxtAihHQG:ᤓ(X)U^ufXGb-d#k#gòa3tiՅ]x/x,d)Յq` .%G]%˱+kmgfԥ'^om7WG`g<mS\MuB.3<J2<0<LZ$qӁtqb![Sm

-·ASb¬q:HǄyϜJ3/.}ĭRv҇0^y"28	U<Wawǘ?PwQ07kPKD  w  PK  C:U            9   org/bouncycastle/oer/its/etsi102941/EaEntry$Builder.classSJ@=jckZw塶
D@-}}ЂoqHH 

D"(~8mPlfvf9;"C4\aخB-K*uٮв,ʮKQl)[q'#k~tq#-J<_xUҎ9r[@/ΥVI]lj3:hl0g ΰ|wvaW6y'+y.[Tq-W#$
ݕS~~Qđh`3@	0`bOɻfKPJ*>I.Jm%"I,L}E3f|nl4B0h 0-@l]0YF,5jT3	iAOPKqX  Y  PK  C:U            1   org/bouncycastle/oer/its/etsi102941/EaEntry.classU]sF=k;-~PncP$%Ai,Q!@FԿ48L}CTۻAgwwO xDJ|%۵+#W,Krvee;£mx)@ld|CK"|ak_J2kWU8Y3U3GB$ָ"Q
G	76w*^XtMa7[~nɨLjnu3ogub!ooԺ`&0W^qj
X2WPP|4}~~dt;s{;5=)aL&MWb߉'d0MYe~l`\AZ
&Sp\
>R	Caqq_Q-lQ$FqyHn WdBS9ٿGq@Ng)׋ݹY걗&ÅL߸KdX0^[Scߧsk.8QNb)yL,i$$1p9%ՠaZBIY
2,$\0$.8pY5*nD"'y1\WGL,47U]WxaOZoUyI1K82eN8I0=ZeU	^-6L6n
d]6'nk]|o.NӬ_s|)&TKǊCj%b]e`8b

f)
F)/dFR7Fw;XlcymQp	8RaH
|T|mG"o?E=M۹]Lևz\RVvpu

u'Jy"WonOP1G'PK6  @	  PK  C:U            A   org/bouncycastle/oer/its/etsi102941/EnrolmentRequestMessage.classPMO1(G,`Hr0&nY.bO_	ыIi{3^U'<U!u:R1as
Ҷ?fRu9eRX<vCR})I/߽B:\JjuNGڒpkzNU8ua=ŝrQ13/o]T`qέ|U}C
jP9~2v:?Mwh9
dRiD0B̥yXw5b.Ǻ%k5j>K!#ԓ:C?`|q
cd#|#2; _PK&G-Nm    PK  C:U            ?   org/bouncycastle/oer/its/etsi102941/EnrolmentResponseCode.class[SEm/!ᖘ$bJD6
xkf;l:ӋQ,]RVV&D,ݪwK9=ii8h/LTWt*l:ls^@p5/D.UՁ+DzE
8YU/RZ*$B7ȟu'J/ޮ REJv*U uׂ$!Z{N}+
*ie䠦"e,PVr6P["R5j2FNܔtݦugWI+zĘo-Q
K0c+'M!CA:_naUtԄ^/By-tp)ZP޶'ʒHTi~Ԃ}̑H%I0uTiAQ]=I&-oEUZ
tjSEߪЏ@d0Υp>fw4@.FF)#=6Q814_<zimCzzhg׏,,"W]t3\Fe3N3CaKQ\"HeXM8"Ik.ҸxEJ1Ÿx1͸xm:c1xq#q,dq2cTdq	7xe-m,3ʌی;ϱ3-kmb-yi@jgl~kGY;fv[{k56gKܠ d#1Mx<.FĴM٘)NbVHn
F;)BG;;?ѻjWTvs&ޙ^bqрkԃ~@U}0=\\mQ/[/vyz^gR[io/eYvȲ,SF~2m˾VĪѭ[1}FwѮ3\PK
    PK  C:U            B   org/bouncycastle/oer/its/etsi102941/EnrolmentResponseMessage.classPMO1}dQ>E]eDbb	hhN6EZM)<i41z2EOM:yʹ X`H]qTZHÞ[to\tP{#AW?H!x''_(^sARIuCFJ	k7-^1צE#%y{ҫHw` 0ưZ}S!"r6%/~6Wmq-xGH_3&ǗdL1gD.a!z'Z5mVdh)V荃s9=f"FbfT}fXOL^E-R3Sa0GޱlPK[o    PK  C:U            :   org/bouncycastle/oer/its/etsi102941/EtsiTs102941Data.classURA=C% 

"Q4U)0n	OVɥG=IV%P}=}?@
GDvR,O1TZ%cn6	W.[w^$:
+L5ʝ9ϸc3t2MxLMfDJȂLXq6vtEk\(b'Us%EUrũX~$Ҡȋ@kGBFE7̘d' rWL4wƽY`Ȫ#I BZI;fQWA
\TШI%fa0PYESRf6{rb"cɰК
 he!%mvkAD<SYΉR%HS+>kBOK-c"{NtySʒ3}zi^\Aͨ
/jP)./Tܔ-iz.M4wj!MPъ~mIsOaT	2:FT}~ܥ´J0E@l&!`m(j# zpzl25.VCz#\7}у}<8DD2+Lᱬ -PS,hZshҿ+|whw|_xxLfw>-TQP@V]nv0F'x>~܂`@Up-<x0oPKz     PK  C:U            A   org/bouncycastle/oer/its/etsi102941/EtsiTs102941DataContent.classV[WUۄ! TJmChM ԦR%b2La`I''['.Yˋ>{\޹Ь5ϙsɟ|C@O,3
,
jiI*hճb;\gʼ53BAۖLu2M3m%7)Ph5	e\0%ȅY.ŽlFp󔡗ۋ4Ccε]rFnk1m#d7M&fgmsJ9fҶ9/Vo2ϵ=f8vSdxL.K#8]2E!3d+]7
S㮂cu'ٶ/\3El8MrRYN-S-SBn1nzFfH8}b;<QޅrOɢҎfm~,	Z04?{1/=WJ$$:87?*8ኣFaznz7ò@q؁Jhҙ{asa]:
>V7
wg-ZZ}j*`PjjTC=WqHEGUt8[QT<qUPqRE@E *nR5H43Ss[`{+_Aa'Iq{<yНUT{;85"{$wݐ_ԩt@*u"ăΟ2߳vF{,SHҞ57@_j}*Y.F%{ZZXшZ?Z~[W8[~$[S6G;/20Đ`x2V^gxC 0`0an{:CJ`0
5ʜ(
jxi
pSC(	Il]Ѝ+z:uGIj
e@j/<Aa?C'>~Hg z?I\S$4?GW7K
}Z[G}%	 I>|5WVD=d;C&{W6}_4PR
\/#KW|'<ZT?%sLJkLa(7[Wp{V+UtڿTDTzh(f_fz+WU~MZ#Z;\Xv\+trswWwD/"?иH"xeey='Zu#٧0YP8Lmд	΁ZŻPK  W  PK  C:U            1   org/bouncycastle/oer/its/etsi102941/FillCtl.class[/Aߩ]Up#[2!	M$ti!S7.(1C$$s;=,FU?CoV)z0%k^wHE|Zo"I5|w!uy^V!݉~͘270=w6cq!x 
+r띡?'chh$"REs?c>K+e2__L
)p[\RZaY
1$+;}	H6T,/,(Ӣ(Im4l]հz7}zx|.1cz6to}n϶#+XC
Y]+FZcv
xPK  /  PK  C:U            1   org/bouncycastle/oer/its/etsi102941/FullCtl.classJ#AIw;L6F(e Jd@E0J:v4]|""
Pb%"L2)sϷ g0W?&H#UUKOD* .;LmVIjq_ETkˋ*(VS((R;4cbDDaqil
K
q!x :?6SQ`	3$: EZ/p'"wcm&UX񛴞+e@?\T6}(OtElø/IHtR/*+gQ
h4agav+x&u_{UM1=N?q}2jߜGXWX	;XLv1a`iPKF!  /  PK  C:U            @   org/bouncycastle/oer/its/etsi102941/InnerAtRequest$Builder.classUkOA=S(k!JZ01R$hЄi%w+Mjj$cSۺdsdן?a$:`&
ʎ){T 99}ݪ-_{>XB2sT<K|i,
3LX,ӵW:6AUb5Ϯۖ.7-e͗{(}ǫ0z`U&ɮ06'%
5-sa\knUi:*-L
.w)M34/[>/bW445&VކWj.(z/2$o/^ɢ\9 ELE?,"PGNi쳲C>2j?yPR}Kusfkfq݀&d`L
Q(^HaEGIsHGF"t5wѝj..U!f	"/BhYe)
u]my@4WYE)3
ra p
g;|&AnB ]$W,a0ݠԠXm"alШ]PK	9P  P  PK  C:U            8   org/bouncycastle/oer/its/etsi102941/InnerAtRequest.classV]wE~&6nmFڐ-ijFi
6_fkt_d+Y]zWx)=u
".Q.ޙayfv~4!HX<Mмe[Y2y*ڦ[rKi]^8<XH4"w3pX6)"k;IZ1]Zr%K@0-iwCxr$m5<6ZɴZTEkv3OZea\-jrM-qt줖W;_.9uDݪe)qzZe61S2jhu䍩餖m^m\fo!w4d+g:ݩpG;r4fҶuUPHpˢUkr'\¨$𲄳I8/	J0)[x)_%#\â\l4w>{ݺ*$=X/գ՜muC 6/Anl<7HS>xbOvK/lIeO,َkנAHr}vDUo*8KPPpA3M)2n3#̜0)ał0o0ic'#E$

&+cʄ/cB@=x #eh..LZ]3ՊYy(h J@AE4켑Fʑa$VW1A/ul=^êz!!~"gZ'01#x5x!zs]h&B: ;
7c@BTXe6NWFbH]w#jϱYGl%> P8CPT#7l4Gojs{l5_G}ێcܐ~F@DAM7<U	^Ǉ
ԛ
^́}LuMi)PK/g  =  PK  C:U            A   org/bouncycastle/oer/its/etsi102941/InnerAtResponse$Builder.classTNA=Ү]V
Z]mH$I!!Z,c|kRS#CRmds{fw~J|a!߮qB#?Q8 
)f=iyrQVU._G[	ܰpO1"QsvzzTw\յ꺧Pk=WJåӣ|VR].zuNYPR낿srmJKcnkD0ޚ1p@ʀi`Ԁ05南.o"YH\Ga2Ux|ZҢF+y,O,ܓ}{VCrz?uܨa?j6
䦅da-$pbf
YLaFLLⶉ4r&2k"0`Z֬\btPӂŴf+,$֦ۡV$&jN-FѰ`\kt魹	 qLSz#d4P&4~PKn4+  8  PK  C:U            9   org/bouncycastle/oer/its/etsi102941/InnerAtResponse.classV[WW'	L2RS[L"cXBiS28v3'.?SL*UV}CTw&4w.{s˜i|ETGtU˖c+ZͲ׹0drOX,$M>'|OSG\,th `c /K_4:>_p׉Uî#㉑
+6vsG|CX0zܚ[s̟L63+N]7lJj܎lE/³*j\A׋˯1{r/T\^
B3lK9.|kr4\]zfHdN/9
20߂5~<&fgrE:Cv}GM#\{`X{
)+x_
N(@žJgߋ<LIa ^xzu7%tFI"RfҽTw''ۮFl} nL|tl
-YƋ?nb7^"'V}:5ө`&g^יw&c5DF]'k@D!LhP1-\fFQƐD^̩U	̫8*4i*pM8nHsSY|mAE
GO%>apXO02e8G_,"G:-s[ !km6DDgcih%XKφ6Jl$-@0[yPS>aq!I(MS7?#DrS;HVm|U&l4Ϛ
Kw6x(e}TۭOknO`0XeO1JDʕ+mr
v T*u|J>EWPKW)P  +
  PK  C:U            @   org/bouncycastle/oer/its/etsi102941/InnerEcRequest$Builder.classUn@=6uc\hiz\&"
B$HET,+{|
HAAT~ 1!T[ڙsfvfw <`Byl9x0krWX-y}cBv86=l	Pa94m8U}|MZܪ^Y7
O\7<'?.p-ʐjIV³R釙oحIќo2Ⱦl=FcPm/,m6־.b",}.2M.UTTV*8@S0ͰӻTW1d)~==6i
m
(NDތc">z 	##΀M1#dlɼ43bv|
ک=
S!e
pYyh ØIKfnaME1X@RJ:UZۆq׉ehd-KUd"ާlB&6>C>tQ$);Oj+"$1{M3Knp7z`6(E,ca?Ѡ4Ab
7>elҨ]g
PK[c    PK  C:U            8   org/bouncycastle/oer/its/etsi102941/InnerEcRequest.classV[WU	2DVK-%d:
R@jmZȴh4N
tO\K.Y^|}&`%	%o_Ͽ1!g}Zl[f
U\èzdoU-c8ǟnsň˿rG*"s%ۍNY3fuZ16LjlpKj9VqZu'V6쒖-y(Ru^ɷ=b3LUVTms4\5õZJ%3Y)2y1't)@DQ7Jp3ff 3ۆpG5V쵹mdF7h6z/6w{l}ۇNa
1f*C뎵ey.aD«F%IxM¸Hx]2̬4vd%seMt}OV^#K,Ų.Ei7X7֣mGv6og׊\{$>a4K}SPJ.ި>[aӛv{:YN˝#ۅ8ܼ<7TP0
Ā B\Qp
o&Ĭ0b^!X
#e!))##"n"+c
dݖ1- pWɈaZ`RWOolxq
a~jlJr%O DV+寔#a%> .a N5l=Sa]=ڏ~k6g/}LX
&9tAOgb&!ီqHƵ9hT@{#}Dsl.mDW
A'ig)sM:כaATG}W1~[B7=k޼`kc:_CK24#PKZ$    PK  C:U            D   org/bouncycastle/oer/its/etsi102941/InnerEcRequestSignedForPop.classQ]KA=YK=kR!AJ&A?aOFAKhܵm`̹s/3_/o rX'EX˪p%'rmtz+2W~n݀{Ԗ.ҵL63iUޯXW*WSfe
e&o!!a`;]=maZ
<E望|ˑYZ%GH.gpu=]&ӝ1_^At8#CCBGRKfݞ^5JxUrP{U2
3l쎰)B6GU&>sa|@{Dx64>|vc<ci!*'PK!a    PK  C:U            A   org/bouncycastle/oer/its/etsi102941/InnerEcResponse$Builder.classTO@~1Ja?QAlEMHAM#0$J9fImf	427nɽo>}ݯ?~XF@<2uqL?3=WqyARxċ0ո|/\ampOFvFzTgy)6ú>Xd\IXx\d}zk`e
?lp%.jݕoآïD{<)Z'j_&&,&l/[S|UfG(xS~z{ª=%JYҿy'kD5sC4BC<3H,-q$H1zG\g`Nzcaw-}qπc;nR	\)<1gp#)iv$Y06݌pZpB_tb:EEYKp[u#aP+L @0qǦvҤBM[xp.hQ̐gPKBk$  ,  PK  C:U            9   org/bouncycastle/oer/its/etsi102941/InnerEcResponse.classU]sF=k;R@?h!2T1I		!S8MEY\Q!>u ipR҇qy=s73 36\9k×M0H
.È]|`N'F?4mgS΃4:z#l{N֪~"D<}0|6KeM4=Pkn׵en-#n'Mfpܺ4lGC|kgB6
}"P~wMN:Wmp?zi%fjJ%HMBLӸs3d%\ktnٶ[2:L&u0ܬVZ5wO:1s0#皏L|%JxG1	I	Jp\		Ix!E~dX={P?]~;_g6[
H$ սdbΟv/Щ)YdWKp1ׄĐu(+!^%Kb?}~wEo,5"$r
$
>BTb"aJ>
b.4"\a^8HaAi\qWDX$cdL7e2іdd@v*AMpwUli:	")rYRq0gkJ!cjw6mRook6BU?Eex-ɚXKG
|,)ԒPZ}H[>Qq	i dq3q\W#]khbmmur
	B'mc4
!w|2ll'0gvgch)ۓ
S8Z	j-ZmbNB=8IEWo(4f_#PKǖ  
  PK  C:U            H   org/bouncycastle/oer/its/etsi102941/RcaCertificateTrustListMessage.class.CAƿm
ҠHZIh#,̥3xoQ+B"l,<֊̙L@-)2d6B0^ʿ6MB+oW*])2|3hNFK/\{%jy&}ajkS"_ +ߵך0*E
*xsk$"o5WhfEيR)*ZP?opfnHgP	dp0FF⥰a?|j/.k$Z[5`-I-(fτt>ޫl&ӯ#0¹E}qߐ}s>`cֱdOPKWe    PK  C:U            O   org/bouncycastle/oer/its/etsi102941/RcaDoubleSignedLinkCertificateMessage.classJBAƿQZԦ-[RY! #htQiCEVEsfs;ü<>a!/G-K~u[WM\#F]
Mo&:\ꀓ~⊒߭&=ET"uT aCQZbVV+?|o팡k$"g+ozGdDW;-ǏMrM/.Ka|iDJ"L&H$C7̿OԴp[Uqu*KƖ`EM!=gԌE3ɤG\WXwH/z2OL1c=`ّtPKnki    PK  C:U            O   org/bouncycastle/oer/its/etsi102941/RcaSingleSignedLinkCertificateMessage.classJ1OjXn"-jU.
#+I!mh'
>oQWƅ%S])Mν~7@seH+*Byİt|^wPP9|=t\Te
å9P:RǞpJ_Q*UL-/'4(oX[Xk?0ד/}qKo/2(Y/^ooD9P jSG&y&?tZ0B*)$KB6d?3A{k剨	ƖDo~C0{ƨ)3a<`>r{cOc&#0oC~յߑ{uf?b]5و/PKKJi    PK  C:U            =   org/bouncycastle/oer/its/etsi102941/RootCaEntry$Builder.classR[KA溚fe{zP{MACC%B:ʲ;cC
hvDp9g;gf?^ TG[6Ap.ص㈺ް;$H;ZݣW>3um;:s)8eQRH<qp>0s<gV=u&iͯՄ:0ƹ6DN/R.֪!&$u
kf	ʹ"Sd-9@)ru4(HhP= \*8<Vú

Cufn9g6 MR!ZڮR~cl=+HN>Yx2s@S@n#I2Bf2+*lkOPKuUu  o  PK  C:U            5   org/bouncycastle/oer/its/etsi102941/RootCaEntry.classU[S@=K)1ֻ(m"XPV(Eg:>tDcQg!>pF-#mZ墾|{;w VTFVx˟q['5\\gAU.^(,o&g|\0lUSxeEb"wk}mܷ=ZkyU躼jA{s=~P5gg?PܴB/kngWQ
!fAW
S1w<0'S˖`8"4Pl9_2\^Xn遑a@鰱@8m	
fkR,8U7\YL	ǎpr
(QU6I`r;S$ǫdRttk3D:`CH){<r9\fI\\N
ϭLaskE<ٍQx"6N\=s_t6"~^S޵0.Ȗ-
pHiv#qik9;*q
	d9AdUÐ8 9#9}8 FɩV/q8O7&+$hEA K²ݲDD.qo%4*`)7hK=F;'a
)&⴦fRkt/b_9c|ץB#V/h1Lk~?
t.+Fc+$/oY^6pl~YH*Mm4JN-Fl{<tǚil,)+:
ZASMڎ(/@b:-	$(KQD/PKo<    PK  C:U            D   org/bouncycastle/oer/its/etsi102941/SequenceOfCrlEntry$Builder.classRMo1}N?lv!Z(@Kwa)`q@C%iȕ񪶷R#@*QqPH/䱟̛_ Da*_3n	%l+z*f4|;ش3B.Ya{dGY"3KvC*ɶY1@w:<u/i;'9׉&ֈGnn$wޝ׸W|(ֿ٥'ydbiB,EhRRD
-t,%s:[޶&?(VvH9;kJ`qfX1>Bw\*VpwQfޥ
^)uSfpӜ3b)zp,sr#Bo p~p_P>`0K3jbW8dRBX1G1cT{1+'@PK5{    PK  C:U            <   org/bouncycastle/oer/its/etsi102941/SequenceOfCrlEntry.classU[SPN"xf)
ED@EEEFD/Ψ?i
Ltͷgݓ+~<b(	u=Cexhi^Ob.)+\U͵h|*<n%줶`%|!eIa9nyݦ>af%(StGl[Җ55:8Jp	АFma[6o
Q7fV&K{1쏚^XmC딞uoЍ< cjx{Vs0ߌ>,8|4ǎͮVyn1^,GN GG%GG5G-GG=GG#q&rl.POdBԇALZT
#sC*fqcȡvǃBmu+Ian+KBTD!C{hY(jp/HSA%忇)CEd!$LF9|2j(E=*DX	\q2$\b  J83Jhv\ↄH8qp:)Y	q-bk.',Kw溙~/&WsbJCJV?i>tѱOfZ}V(Pp#neO?%M|WqkL_[4&1w)=I6Xs99Z8ՋD] }leL Z)Q#e7Tm 8*,Oݫ} sԐ&"S>fz[܌\
X:ZN"dx@RCPK`SP    PK  C:U            F   org/bouncycastle/oer/its/etsi102941/SequenceOfCtlCommand$Builder.classRMOA}|;0z10!\$ل	=kޙ8cfU?X,;~yU
cAx0ٔ4[}͸)A Om\<niQݒ0LKR҈f[)u6J#U]Aw:lE7je9pmrQDH-=~7:bUbTz<|^uy$
Ui+f(֟;#Pusx,EIro2u/_	B\	^F?*$s:{50ao&qy,m=➋Ncwa$Oix,EBN4ؤ@v^\'ˬ퀐}o?'?w_
mX
7̅aLCc钝RP	PK5    PK  C:U            >   org/bouncycastle/oer/its/etsi102941/SequenceOfCtlCommand.classU[S@TMU!7K	hE
*
7FDџ/Ψ}?A=
03=s|gw/ p&7o0Ԏ2ƒyGg?%uX)L]\+')+eESQ-fLC(q{yY.C7!-ӬeO47;gSKMx;zpZBi)ϰ-
T§7Bԗg驢&ΝYsO)3CΔ"LU,غkDO0UK
2WfױNwElxKBBDge;m<6Bv}u
989Z8Z98pfў]URH!YKjqFQq
[94myQ\asd;&SS#}vg1܅ޮ|J1ǔ0BekTsPCXÕ$&QQU0aKMmvQD{Rb2ȨOF#!cPP832cH""&q	bփLJŘ㘒7.aDK!tbT	6Nӽ O[Muu뒞z6=-N (\7}x'iMI! >\+ ~aSi$I}
Gr:;'V1m4ɰU??R\{dC*9=/.l-5Ql)H^(2DShP!+Y;^PVp#De7{
4DQFz)q%ĩb^B}
Z]HGr)x2%+GF/PK"xT    PK  C:U            A   org/bouncycastle/oer/its/etsi102941/SharedAtRequest$Builder.classUNQ=)Eu[$*#HB
	 u&}MjH$|8ҸE+n2s9gfnvJܦ`ŢC]UR6vmq%?VvONYmЛ'ɷҪIoZo^RZoxvӖ%d-lۊTEǰ!X|UE*pK_8ATf&_;Tmej
E@: +z)r&3`HH8-0ֻ#ʳRWKadɛ)Br9stǧst8lW'2%gy61
}JO{8mαQ E!ܣy5=6QɿG!D֦S79&Λmb\I LksMIIb7M}*KuU#&LsP&q4b홻홞)^}>A_øy=a1/|F>8 3]`-	`t[ݸ3+Q0^`:K8Vr[d-q06>) PKP    PK  C:U            9   org/bouncycastle/oer/its/etsi102941/SharedAtRequest.classVVW	2R(ڊFLCZhTc(e6Foҫ]WYm}>@}$ڕ49g=3_0}x"CaUX3en3Am^ry9k,c,Hv[<~Mɐ!L;|g]HV;Cg&8J5Qa?ժnV|+z5cWj[tsK|5,2{Zjfi;ncԌʙ%Mp&PQ\"4zZlg;+]ϭйئcq[5\GcggSۼi!}صfXu;Q;:zP2s4=_ܙn&/sv
et-їU2\0(aH°w$H8!ᤄw%'ᔄQE_sfȴkıx|.}8ݫ
J'/^#M.Ui]3Hx7znf/tW'CX~NSp9H<ǴVѺ?W{{r4>:wKg_oF"N# >;ULXO\#|* #ceDqd㚀	ܐI歷IreLᎌ8OSZePElUw\pI^oKr#O Ey+%譔#a%~CsA/JkJr=,)
ag_Ha &OXaJ2w+Az{Mp&{:F"~7ΒWFѧ<ClWب]"R2.5h/XҢbx)vrS> ^i Պ>(HB@DVXBHXku|~\l0x51Y-L$MPKH    PK  C:U            H   org/bouncycastle/oer/its/etsi102941/TlmCertificateTrustListMessage.class.CAƿm
ҠHZIh#,PsL%[Ԋ%"$sfs;yx|4CbK*iC=P>1̅öo|MJWmL;L!4-5/J2TP֦"'E`!@Vr5k5eaDU2/T~CDIDj2닲PR&/TĵM~X?#2oRݐ 4Ȧ`8d/0Ka~p|_\DI$k[ݓV[P̞	ww#S}WOL_G<`}s!}=:cS;PK6e    PK  C:U            :   org/bouncycastle/oer/its/etsi102941/TlmEntry$Builder.classJ@ikݗEBD\@*xc	L_kPIhUL70yy}|C8pб)<lJ1Gr[{iyl˵uT1K,Y9׎-KKheqrze=l5+d~[aDq<'J/\jq.F&;]'CK<Wtd՜h7a`X8ht7cWk
}O'[SɖvQVsZoSaMtׄX#P0E7Fah趬_h{YV+MfP]Lbzgh[&<QԖ	
Q6ROրρODhC_
:;KUHB*H<`NRRL#PK})x)    PK  C:U            2   org/bouncycastle/oer/its/etsi102941/TlmEntry.classU]sT=v"[qjR-Nm-(nL~9[IFnÓ"xT)Hra2?
+4'v;jϞ=w_
Jd+daڦaL7yiVӴeOwz6mg~Ǔvrlcb{Nnm1ŗ7I;[ٰۚy]6
m*p9naҋMjcZP+UrnMfH9nCr=y=ȗmé[Q%OF+l'CSAw0s9UkAɺ0b}^[,ժS}Cu!Nȥzsj^{3x154#kKsޖ0!ἄaȮE i}Pʫ|״Eq]2J2Qd3_әX{`w΅~CL%
` ݾp};
\>Ę1I[o?@˖y~IblF5'Zv3Q|ǻcRca2q!+af1+L^9a
q'10/̂02.ᆌPħ掌)ܒq%a-#-pbIFwF:}n>hn|Vŕ'eH6)!:	V(U#%)K	=ef(^;h!Zt9>gq`-|?M"	H03|Ivo\@HBJbx@m0Z/+#=K?0~TM9J{lGFŉqs
g!w1|]G%E;}\EtxՂHvtv'%<˿IV5M'YEPK=mGЛ  d	  PK  C:U            C   org/bouncycastle/oer/its/etsi102941/TlmLinkCertificateMessage.classPMO1}dA?&zQCY$*~%=x,˸bWbO_	ы,zDmҙ4TR0Ta>twPP9|=t\RDF
å9P:RF&y:ZJOhS
7~ѯ+k|<	-\+jY[HXaXXͥc_%9J+%~	JґbL\G3L/ܿI,҃"g`!Ajՠevs!m08q7NT0F1rw#1S0M%/G~)V~E։}>&zgӑw,> PKfc    PK  C:U            ?   org/bouncycastle/oer/its/etsi102941/ToBeSignedCrl$Builder.classT]oA=C)+ւQ[E|؂P⃉EӬugh_ii?1Dnrܝs93_`eR%y$C:1ynH~#,
u,I	C
>QuQ/;Ů%duVߪu3ӓO1+OFVx>aRjnQdr'fß-,[,xl[{Gav_-c-`.jc;Rni{$ͺ)Ss]zǺz>?wx;{m.j5q)dp	).dE.pل+6VqFt|&aHq#"
ƯO+ͽXG)3Ify#m\9Bŭq>.04٪pk 7 {:Źi1`	g@qhXʀmXiX?
PK,    PK  C:U            7   org/bouncycastle/oer/its/etsi102941/ToBeSignedCrl.classUvUݷI3͐)LiJ(
-JLF&%Ng̴O|ZR?QϝdB]Meνs>sΟd+]c4,û 7qs2[mx36)'^9=Ft
b=n7uwg5uէxw\ö.<7uԭZ1MyN5A<m;-noXz&WuʫJl5^7)*uxT2J}xarpН1blsLW')tfȇV-7	P|kB0kauvjH7hpŦCVu~u!*7g:ƺM$	J8.aB{NH8)ᔄ%|0|4KCA^th=Y~}5zsVIL%{)&lPRfk_sV[!O+!67
nnEi}AJtdJL4H޷lM5@)IfR"@s#	DFIrbwYO0afGEanS榌sTG-#[|&̢I˸;2-Ș!,">{a.M΢ȏkޮ;ҔTڄhv	MV8sd(g.*wqOr: ~#)",	L9H?b|j+s@U̍/z	jd`F$%Hǵ^eeW^!ƔH( tMy>YGGpV0;~[$+fnyǠp/ү>3{I|-"jQMZ-&Zqtᄯ90ZZ+2StPKƯ  `
  PK  C:U            K   org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificate$Builder.classTn@=KLKn)WHP!*.@Q%78veoOHE@(JBE(
u}Y*@~$s(r2z#PvBE+X㓻(c/y<uLz^Ku6#Iۓ~~!G<|H{dJG6HWkun_ZSKT<(577.8c k4pր%:RWQʚ!/po̢d.Ev}O*գySH
4*oaJUً{NܶI`	8\ˢ8\7
yMPBYԩf>MOFE 'x0oX-^`3Kڧ>`Wp<CUmI1w2ˣ! 9K! Yh\`n"PK6 oB    PK  C:U            C   org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificate.classYSACk
$FG(e(R>m6c
;X7ɯUj,)PjOGABCl߿7 )m
e1CۄpΠD=.{R<%m_/r[b/c/4dTxb3K\No?3[D:"Ճs
0)<^YfrJf\%<镖C/J:g]d%^-_iNOd-Z2Uk(ZcIvE3Gk;4.L!}K_$F㩄9N(98'[Đٗ4ybtdʤ3Fs)X>ˋ7U/Qjh^BW\C4pXCX
G5t3$`aI)kwlnsrN)>"BŞ4Tnԍr\UzڍոWvӂ-X{һUir͹DqY=}$#B;΄p-!Pl!Sp qe.(cv e:N t"eet¨N+:i*}e6^TiH/Pq7]|I~qZW	C_Ui@\${zI˨	c#~Au5Cj*anC*Nìkߍxn~Ƭ"ă}b"U(,AESDg?yv"+/t"7>cR	FpVEh5>`b>Cu1P;Uʷ~|@qr*Z@+b5z W0N͒iB?PKm:  C  PK  C:U            F   org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificateRca.classR]oA=v~EXLXQ&5B\qZO1}eSIcZKd{9gܙ??}PŢ@y(PYѯt@O`;$006*8Z]َv`H8sAovi(&db/WVlFݐ:unцo*dnnVj	f}jwMDNd*N:OQ5{'ULfاX]ab}KU®|ޢԎ;|jɨSw~|~ָ.ȹH┋6w,;Ȣ`YkYscsRkQ^aTMaKk<dʷƸ 27Wcw=an9y]:ɲ	la}Y+g%1#.qu$FLvI~PKo    PK  C:U            F   org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificateTlm.classR]oA=vJ티LF[Mj !qX8-";5S/E&F_|GTҘ7{{Ι;wO_ T"Cmd6ih+(C[*~-w=5u8~FGѰ+nI|x7.E4ĒLz՗hRÝ?x_f\27\+6@βHX&"z'2iMʨ*&3P,ܪ0N*SaWhoS`jG>@dcyyf_ߩ5r.8"͝v0s(Xsƚ֜w؜%f᧗k<Sj+@Xx]hwHx\~ Y
G}+O
NLWK.dYhq
b`{a
g=?yqvc4\1C-_PKdR    PK  C:U            :   org/bouncycastle/oer/its/etsi102941/ToBeSignedRcaCtl.classJ#Awt30nF;J14 (tSRQ|(n\PTaΥ~cZ
ekdaZ5jdpXGE,}^KtzF_"E
ꘓC!yQGQ!ߋ6$Ua`}66;Α8<*Gl/0vohd܅	qdc,$"iatX봘½ոTD?\-/+MEUY5aEMlC&idQUͧJDohj`nzٹT#W]E5bb&lydŞxzp.xp#2p~yjaɚF0p3PKs_  A  PK  C:U            :   org/bouncycastle/oer/its/etsi102941/ToBeSignedTlmCtl.class]KA߉qw7ԛBnq JDb"[1ݝQ/UDAƋI@h33}Μ33\\H3HoTìjxC$TK}ǯӯ#)jHtKՊk:TDh0@mP=jIjqb`#66F>mVu~aen@⻍
uu~pWd<l!|idXDDjS0\=ָTLo+`O
y}SM%M .r.2fnay8(0dki>UE8D#&|4N6bP>eVMX+-,dgF8zܽj1J]ؽҏ
|nt[/1duQ͘E-PKWN  A  PK  C:U            -   org/bouncycastle/oer/its/etsi102941/Url.classMO@MBL](Mʧ0J(H"V1e06T*Q$3>h?W *X`HK^u <"_#a.\ww,ek\~8tl0g	:rD߽_\n{;ӧ @QЯ 0}ϸ:R*we=l.lq΂/}ð{jaDCc9xBäoT1*]L1d6t.}O`.¥;>dLqNSUisş$d;/M6`ҌrkMKomaɚa)ft*FADa<GfJfIIs;PK7m  H  PK
    "D:U            .   org/bouncycastle/oer/its/etsi102941/basetypes/PK  C:U            E   org/bouncycastle/oer/its/etsi102941/basetypes/CertificateFormat.classNAƿ)l T[uibLF&5&(	ueN<;xQD7^P3-`~s&7|{2߾cVCjzKߒT-?!ASB=W0d;]
_r}#z5j)hf-t;_T#T(k׮߬ל,%˕:>ndǹ'۱|q w{"3|'2(0L[m
=9DM&+7v'|Di)$$M41)}<eDgr(ᬁ"洜r(k`.K[W}>᭎@	zڌ:R81tB`}X{,"lL#zFcl2rv+e (R;,9Zq/(FR!J{B(>IVQ!ɫ>.FPK*    PK  C:U            P   org/bouncycastle/oer/its/etsi102941/basetypes/CertificateSubjectAttributes.classV[WW&	[m5L$(B^LؐIg&,C#_k5*}CT}&nZ}>{3gB!D\񡈏c9[.	Ҫu[@R-0cU3MM\auCl*3)>sE+EM]ԾgQ}%:.`̬d[w ,]Ȓ+	8Ǫij6XiD_R*ZI	H)6)ЧseMITj9TXYdr}U,nE^UUŴ*,T"VU+=ܫvKU2CN3]tf$泋v
񞫋f	fZ*9:1JY5f&xɵMU,iZn1*C4Xj<9Qҭѽ Q3ޢcͯ,ZiY2
f,L/JMu9.f4::p4Z
'K@s,ڪfik]"bPĻ"ΉxO"΋@pc-%)@7@
֎R9X<6ę(O^/X,7܎"ز'O{9vG6
7LOĺ95Hre;qW'l6K楔>;0-5Dϼvt99l1]ϕ۞m*AхzN' yb$JkNaL1.2BↄӸg\%).%EIrq0ḋ1a\}.ȇqC.y.iDWjORo+!2gu7"<M{rG:=hCVA񒼉/xKHȃʃ]
`[/5Wن\9_-1p"*w9 6Eg銋N&⏇}D$E)M]i%;?̀H
/m#Yl
ac& VaF%
FżඋcǤcç.c'.ǎ9[GDnmj???BkYgaD=ql>ۄPK6b]  
  PK  C:U            ?   org/bouncycastle/oer/its/etsi102941/basetypes/EcSignature.classURA=d1
!K/^ D"ɚlu7P~ߠXĒ*//>Qjw.
1EU}LL>R4Ƈ3PC9L#ieHBAzyRǾc%@zVZP2lJ!C+*Y5BK58ފp`uA䠆OĊ0]fu-.=J?dA9oPVgϔ7/
~`9Y(*W%|oH=SPׁ'wΦlMl20U4*:ɱsI3'RdܲW{~l⒙&uX
%mӐM<O{\Xu}A\Q",3G9+]H-hMGnuѣ㠎C:8B+6ȹr/><.'=l׺N[s3M!yƬXG
[;S
ڌ4;XbqƺcwO@;NEa:1eic,α8߁Y\a,qES,10]
$nq
<Δ_OC%iUzzO-F/lF:-qǦ1tswsm'D>z	g8(#}ęwHM.*|Az}s:0-f^UBO_
w=/
,qyqk7˘TΒBʴEGL%C$Bu"YKi2i_{P3bkn x2״_tT%=BVmJZ}5w1{aeܫ"PKE-H    PK  C:U            >   org/bouncycastle/oer/its/etsi102941/basetypes/PublicKeys.classUYSPn[`BbEX`2)-N0$ؤ'|ɿ3/>s۲019ww{~Ћgu$\dpeMahf&2%q\tȃ`Cc;
h+aڎFj*@Cf5#O~19}^h{ڲU1W2`eմ73vjUGQrŚG!kCX+3r[ϩS񙩂˚0P;[vFմfsgut>mʉ0v9uYNOīc)+GTX"O9}Qwe|*Ay	>	$%\L&915^߼lLtE()nD9RvNbiL O ^D%ΪҚ<[Iw:#FW<E
E*@o}l;V\ٖZ˸Q2!f7QEweZ zq^#}!hEm"%pA<Ҙ5Ge޾Ԗ^VC;!Z_8E3Z0rɧj!FJdu}x]ئD#֔_m#RxO!Hz}DN1^=$LE6q5gDx
\%>aD2%M4
'k/^+@?^*_ƭquord#[OnbPK?(  R  PK  C:U            ;   org/bouncycastle/oer/its/etsi102941/basetypes/Version.classR]OQ=]R(PEhu)D}"$<ޖk],d҄_D-(ݵ4"dΙ9w_~P]X/C\Gc-!/	y|u&x[\ڭ#EKxEkY
i5/SlWᜍƞhJ{P\Y-!}ZX
yt |uryuו+[U<{ߖv:j7
5$4$55vPcȗRZu;n6 .pf@{ɵӲΫ==苋U^jҘ230K¼2N":.cNGc3:eܠݥKmJ|lF[H	z,0B=ͥϘ8ˉEǸՃyʉE)B1IsvWDB$
`a@M#!ȏ0
Iĵ(]
$&? a~GkD4`HNj!u0NQ"=,:PKn-E  (  PK
    "D:U            $   org/bouncycastle/oer/its/etsi103097/PK  C:U            A   org/bouncycastle/oer/its/etsi103097/EtsiTs103097Certificate.classJ1[j/^UI*xLcݺIEŷŃCփ⚐df&! 1ƐXUOi0U^{
ką|-Eڢ7OZqJf3K*1fIu6hy*]
D]*^;WtZ0=wc3q)xMxU~P>#Wg71~("}]'ŏ
|DTB0)QEEYoCO
1ء@
}6)+SpD$5¤%.،C/[maO͐3kka1'vL`yu  Ĺ@M4
vX*
| PK",+  =  PK  C:U            :   org/bouncycastle/oer/its/etsi103097/EtsiTs103097Data.classRJ@=ckch}tc´Z_(E4%Zj_UEAto{2;2oO rdsMuC"Upm0]Ux٫-|U\noyY-RɓWQ>w*ߣ`W(̑RfW2gZ6%
	&}~?*ikԐР1̦m#?/Je>8ׂW[si(I#Qo,z@7`a@}w3zR%CQ+rUb/F	c="YJ416]zۼjY@j	TF	Fs$yjFyz~.zzEzɺP
hPK  i  PK  C:U            C   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataEncrypted.classQMO1˲D/z((Q	Jb	aǲ4dt-&0xG+$m:okg ď]2Ae]	lymyCyzjm~3䡨CuO|n?W<5ul_$#8O[M8Q_򶆨lkv.	3C]y Wl{r֧@e]vhhuL'kL$` i 
 ,Б"U-s}Mql*RC_9PFET[dCE,3_bNBlX[/OЯ,M2&c X#fPKoQ    PK  C:U            J   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataEncryptedUnicast.classRMKA~FM۲SPl;Tb	m\YYsҿQuЏfW;%$50Ge`eY	l:&;=a-6izR=KWmûԖ.ҵөTԶ@IFpYIX~GA_a{*
A
!
3[m_'0ۜ~*p.-AQ#$78LVZ6Mz^oqKNp=A /b CÂ/a
NC={*us:5Voslx#A(ְ3҃ym&G̍X7G|>0a<C2by@A{bPK^k\    PK  C:U            @   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSigned.classQ]KA=eAdø%Bh}8ò&A?aOFAKhvw=;|~=(b y	OV.uH&N]¹wX {@yf7G/ԓ2nOOԱAIFp
א0Go}%Aeg9
/wh}j
T}!AewpyUe:l3?@A*А	üD4%sOM{Wj/+SF1HL|JU	_5t
@d+wPK7mMN    PK  C:U            L   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedAndEncrypted.classQ]KA=_YK=[R!VJ2&掁?aOFAKhvw=;|~=c zG.LX`th
kd1O8e0iya6ݐ/ԑsapLk$#8[t®	k0KnkkhX"6oq4G3᜛GZWH.d`pmt==&:喪g:Zzb1?ē!G84ARMɬsovc[VAu2(r؟ ("yꔏJr?`x x>6>~~m<ae1+FJoPK7X    PK  C:U            S   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedAndEncryptedUnicast.classQMKA~F]%%AaYYsҿQuЏf7;%$50>36	pd asd;Ц]w$̱<y"O+|ߌx@* |HQ.=';i]];WRc"k;VEXuaɭr
a

Kc.	sC8Qh6fIM%UWH.d`pm-}&lzqSN`.&ϛ !D8Hǡ!8t"URjKf^ؠú}mjWX镃*(:W$gx!WwЍ
'WVXblޡdPK
+[    PK  C:U            O   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedExternalPayload.classQ]KA=eAdhI%`=Ÿ̖;F=Q/=qā3sϽ|}a zG	m.L؜`i	o3_2_dI,[w=rDRGKf3CZQ׆?e&AuUy+{Z"ӵG.\(p8كL=Z%OH.d`pu=.mzp[gNp=[Q0ADqQ$
hH¢	HkK%oNm5]MEjWj*RF!uF!RO"2j3_11'|.6ЭwWW3XR!3	 PK\[    PK  C:U            G   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedUnicast.classQMKA~F]WͲcPl;TbZq\eMf~JNFAԥC?*]픐50|"V	⇮pe pd^ߡmo ;)EVo<<ާ)[KH[ԙd,s&!!a`3swcs^˗:ܡ	+PBf2c¡.U}YbA@2o@G V:Җd1nvc]U~BYQ{!*bAiOJj<`|~|>4ߑy~i>ba!*JIe/PK<.pP    PK  C:U            C   org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataUnsecured.classQN1=daD7(D%($Aeh (SLWMn\Q΀+I|4={nӾ<>(b 	OV."L`wheqaCvG7ԓ2vKԱAIFp3pwm
q
	
3,oT(zs{Pjr'@]vh=mu꿙N/oP6A
a"$4d0k@G Q2d1jVcUWAEr(r!w)iO9ዑbBn@Zo>A07`)YPK<դQ    PK
    "D:U            .   org/bouncycastle/oer/its/etsi103097/extension/PK  C:U            ^   org/bouncycastle/oer/its/etsi103097/extension/EtsiOriginatingHeaderInfoExtension$Builder.classT]kA=6Yך~V[[MJ)1`X1lYfqg"O/JGwB$Ц6;pgfgν\??~X
XÐP?`(ZT
7JCx"x |Wi!UK~z$l+|{}ի$s)s]EyEB2]
w+|,Nn=nJϕ
r
WS^_sEG{/NrQ3'ڐl%t3:=j2	P,payOWsn=cۏ;*Z@qҰG֕h_OXɚ0si6hE~=:ZO2#dclqF˘1Ĭ1ײ19q=t&H*WJ(,PdxN0
vq+pW`9+qؘXa
L8߰d8M܇å6n0?QxpA:dsORjEdPKx
    PK  C:U            V   org/bouncycastle/oer/its/etsi103097/extension/EtsiOriginatingHeaderInfoExtension.classUkOA=".E|TAvnMԘhiB#Ĉјi;4YF~D_2ީ-&mAM<޹g3o r2g]Fy`ք*R	&iQTd3wrB{*m|.ߢ/di^s|@y:gtD䋺)Yw*.p}uJ\Y[P~ax>hʙGV-_#Kǧ:3Q1eů'y n^p/qH*dXʉ!W}z?mJН\qYsV['BO(%z1D}{=`n	c0	=;d.jsY+&Ncڄ\313nb3&z/)o._/VR0)^y߮k1EtqgL'&{Vq;=$k[+
MTꥶ?GƄ'DOX6hb`ȐB(fη&hn h_.G؍vaCZ{]m4p8dMPKKwF    PK  C:U            R   org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CrlRequest$Builder.classS]KA=5ZgkVb|$,}h

>nYgug?3
.1 53p9 0%[?͈<Kk֨MS.UZ+0iQTr{ޑ'Oߍ=jw(cg0ڑM$CFG(K%I'Qϖ
|l#dOwq0 zlEDRmE6<9= #=K~_^X~MO~^l:/CDwx*>gslEz*G)rr41GgSrZSTF3d0,wrOLvk
"O+%!NchB 8Źk|*^ zkI@ wwx$W'7^YVGPK    PK  C:U            J   org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CrlRequest.classUwE&.n`-R]HbJ	ZlZj=}ZnvqwOx[rQKGwB{I3{;ӿ~>AQ:C$=Wm0(XgmJw<erd]t_[3qu?k[!}R,	N1{@onc-8e:%(o7y[؞w^-u&n7J;,*y8j?/8ր!5Z^9Q-W{0ա[
K
ap#
YJyt¡r6<+X3fŃ6f*2q&Yʹ
OVoo
^Q)	)8ം3
2eZdX>6{?WN=ҚmU/(dDȤ	)egGjU#iƆ_;Jr\y	%Ϸd-ڠ4Q_xD|t1J㉏P߭!12e;#gmЧ;(ہ#
!5qDyGI_iit
1'!M^	 *TǢ4i+*&͇**f$"],8i~<`	m!_*SCBM2uZ0JsM"Bk\bE>uC~zdOl!J{`U:&0]O.ng#P)HoGchcb:ѓBoBUlT\trcD{b?FjGRu}uQZN *%
0SNos9DL*cz߭!R&2;C.[ԩգ.>ӪdUZg91PKʼ  	  PK  C:U            R   org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CtlRequest$Builder.classTjA=ӦfݶV6~GL5TM.
VNv/q2;(T

>%ލm(n
bwf{ X~>)KO_6yAzd@ޢĪӘؘeA$PWL}
ٻ(c昽<F$f]I{:<L)58߼lݓђ6qY^D	OW!Y%L;qPv
QF3?Жm
l]uLDf+J(NzV
EAtkcQvGK1S*o(zOT6xpa
=L@b󸜛+.fq]T,N#n]/К6!2)+y
"qwmӸ.
TIvTQ'|!z')
[yVoPK'
_  >  PK  C:U            J   org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CtlRequest.classUsUn~tӰ56V )`
Imc@	mBa>mk\\vkOkұQm$їs;~cP23Y÷w.[%>bP]nM[)N<{rJ-3hsa80i>y^w<LOp
aׂ\qh˂!Fݥ5^g>0utںaۼmN{;;r9{(9ni>l9\U8Me6lBGG>5sP %:r渖;z]5m͡Kx:U_t+Q^;^!\\)PG)o4H:s^X[XMk2Zy
ݱ[zuIo(SpR)
ޤ=;Wb(Ң蓙Xi
d"lˉBfQQKcq1Ck_G9A!O>A#e/e.kgt})_D^}5	aE
zk0cS*8bT("ҼWFti,PqiiHAX48Ui\,>#+|'p)E;L
Ej8pa&77͝;QtD2eJ+4pFmoj}lc3#fPO>Q#՟0%C?k<EB<t"RV8,Eh!OHQ-G 
3ڟH@2Oi!t]'}|c.բ&{%CT/Gv巡YL˧q}waSG$~k}|Ҟ lo)bUq971PK]?e    PK  C:U            O   org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941DeltaCtlRequest.classjAƿicn7F?1A)^dٚ}"Q\Xk.sfϞ| U\ލul,XCeDK5uFoN^h]KmJz:<TFA?6I~VvG[Kĉ+kϛ=Ku٤UcN!'pwԦn]F<ߡֽD߮ԢĮɖ2dGʼ(ٵ:Op.RcOVt[>mQ'9,-3]dBu1SN99XLC1
gpց@f#7
_nm"e+"2g,̛W<pqFXYs^`WU.Wopa
}G3]#onPK`    PK  C:U            9   org/bouncycastle/oer/its/etsi103097/extension/ExtId.classTkOA=[(ۖ<䭁*<E,"QBl2ݦ) >(/~GwK5<̝g=d~
C@{.8ycEHNtPO!:,SiӰgZ@͔gT-%Tf% 3Y-m^9IZ̙/d&YiVvlhf̞mWSM&M隙hgeö!99gr\OFs^n;vJNkydp9ҎSTɫ8<4:49RʓNի&oV!#αy՜1c ʶHDFE4h"eBԀhrs*?ɶcHtsF/<	GgV:HR|P-.Iq'83UH΋P\B$9ZB~v\VzI	|MP!cHcnra:F9sp;np7MSS@[tk~e׵MS&"C#OV @
c5~ t"Yʾ{9E(QMaRr "{,\BgTs'|@1U}Bb
#J!TS^v/UX)!;ZsiA=K%yG$\wasQݩ|=JS!X*ITGvnxڼR	)r ~BMJTPK\    PK  C:U            =   org/bouncycastle/oer/its/etsi103097/extension/Extension.classV]Wg~^a]JhA] "YXP+vIָt٥C{כӟŶ~?vf7|$3<3̼ﻛw X8N
D\ g#Er,!]7_/'p=kK

3{Gڎ\Ick̴}#oF,E,?tYߚ@˦dEv%8k
W((,Y%q}5&5;HnE{ٻfJ[?cTm)96ˆ=Z)//J\-h
@Pns@٬\p+e}]v
ϷM>:EdTA}5*HQ\mXvr3=-;4+5מ@i
OBn7fݮXo=2c
ޖ&]i	ޑpFY	JP:a{qŝLo 'v=)UoK$k?JE&zݺm[<AZ95+v=e8+LrGQKG+(ws|߿><q
WAVQp(FS&˼|+h0ڈȰcщOe\G2DF`
7etcR%e qS2e63n^My(~5a,M#)J
DέݑnM}n$5 46u^'h@gEYý05E/aG$C>#8S*$`d/hII4tu4FZ'Z:Һ:q+a.mUsi[Dv/(q$(#+\Ƶj6 l UNy55BhmNT>*j!qOVQs|bu[
J31Xpǂ7bQRu
P5i1rLdCwDN׾1f+.٧? PKQ  i  PK
    "D:U            &   org/bouncycastle/oer/its/ieee1609dot2/PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/AesCcmCiphertext$Builder.classTmKA~VM\61j۴\k}AHb?@iyYғ^z)_`MU:XLTgyfX <:ô]cHUW)xK_m҉R0,yp}"RbH]£TBңdv?u(ȇQynX֛wuO	"_6F`b!k/Z6/Wv)"yr#^"(BS8K59
o鱗SgAVGvqˡ-}.Y>-]A^m
ZtTga7-p6S]7ӹ{),6Ld<MdĤcm&un	᭟Mֶ"n˄a^ߋH$A}ezpA?Lg{ᔾu8)Xx IӍ*8g>Q-6J]<; 㳎ZqنsLQbHX&k_PKBQ  &  PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/AesCcmCiphertext.classUV@!V^ji@Z[O!k4$5?_TP(LI*df}g:ǇO NVT:Ww][3(s)ròv_=|-?p~öٿi)$(C}xS[pI>6c%#8d:T箘\xY؞*v\3VDU^/s^ŵ[f n;ld3Ó9PQs:^o%|}\>ԇ}ܡu16|xtL#F;96G0[6R\Sx=o«@SС`

v(RSA]SM;pl-AvЕJO>M坩?VCvyk9i$bU
5MsCpCMKy%Noл^2TA`<]S4lo?qNi؂#vEC_RڑA
1i؋a9;C'Uу*ഊ8"SҌI3.;WBb;$th9~1֑d,ߖ$$Zy,.SQQ0K_=hS_%}-2[LTOG0	w}l	ϴreZ|ieLVyhQTd<1ANPF+/ѦArQ$2."[EDzȰF X^ADm{$1G/J|!"eV1Dq4wD׶oUi%~PKc63    PK  C:U            7   org/bouncycastle/oer/its/ieee1609dot2/Certificate.classTn@=Ҹq7
\.-)&N	*\D"Ǎ\"~
(ĬVZ9gg},;e,1d{^2Lt+:8^R)Gi#XzKQŤUSAر[Aw]EWj]~ꉦ@"ۓRV>Zm걽.CxPy22fMDaqlN$Ryt~>8)PZ[B~|,?#Ë-#qF1mmBؕƮ(;vkW9`oAaT?B:_@ra#pcSiLsʑ5rfMph7g"W9-nkwG9z?MD9'MDMfQ6CCd(r.
P>tW~ص@=)%dd?8B!2zvtqFq		o/;@ ;_PK@T  ~  PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/CertificateBase$Builder.classՖNAm((WE-Eݖ{-bďK;%ul	$gҤDG!gRl69s;99s6	`	s;}cC[>qϷ?24e-AS-_"\LWqc]}Zb=}2Kg!z{[v
K%n3m_dD*J]JۜJ2]t2SF[llh2Yecg9_hin)^dVtpOخ#w8Ctǯ:k5O
1
~

W5\cX}r椈ZDv|;r=;~Cx3]cayD?>f{\".'T*2(ΖxEoB<rLR㨡J_Vh>G*GOIj;fa/>_W0c&=5&i&%͂4,òqIin4V
~"2p/W3}RJ.ڒjK-ILJK
U{'N
pE׺0Tk *tp*2C7Ъg<ćDtVHJUh
2'xP}xXf/SE@h1 у&/Q<zC!θ"f@lթ!PK|+?    PK  C:U            ;   org/bouncycastle/oer/its/ieee1609dot2/CertificateBase.classVmWD~A,U֥/vIhT޷D]Km 5;!,O_spQꝐLpg&>ϝ;I "HCQCc9kJf;3寖xYJ&/k-L`3|D3U$NzKLZS`+-g1.
%i6g95r\ڙ_c\qxrFjmbU/0Ws%WV '7jNLebJ98jk3:8v,36A Ya;C߁16缧Ps]J?r$űz>VQP.w+5P2tj Kw	KfIGJʟMxR|{ԫإhZ$%SԬंv)8ം3
W*8c#%03I
	1'/yOy:;s/·j^^hlk?ˀ(.gsyH`a8ηwRpDJN­0!^K߯݊غ5xoG4?N3x'9Eʚ<[ z6XAΘ"Q#6]8q5z4:sp}>A&נb@Ά4q[y٘4K3!||_KsGIiJ3{*43*0'#:fU
6Ut˸+FU<TCQ5|KϨԸWVp]Qj
⮵4#Πe}4k#tH@
FKFi(kx_Y#zGKɣ+jDQNM\*uXFkT6JJ#_Hf);2eC	W7h22d4(0:Q1m4i
UOm(W6mZk#fG2&XX
WA[QIe&g<[q?[p#0~Zw;=LI(7hSr#f1Lh%YT$
|Wy顛T_PKlmJ  
  PK  C:U            9   org/bouncycastle/oer/its/ieee1609dot2/CertificateId.classVmSW~%"ZE+AJA[ުQ**5.,ira/o/L
N3ӗ/bIbs9/w?`f+'|\Q}<cӔT͉trv\NZKۮNдyi?-S
m	ǳBEx)P<Ě$9Mz
lwt@ 	b@5s4	Yәg77+翶DNڞ%̦dDb;nfŜ)M
!x\|H{m,cRrl?ʔT){b_+H;!'--xZcjZzm6i vN^AZ&=.aK{VWi=m0(u*:TPqR)UG*T35P%e̴#&W!FgtxG]ë&JfC䭶̆W%#*^+GLsDKJ[a~U4v-Bo YO*Hf^SVi8X+MW}Ukwɑczn lHGthCŸшzϮh5MhÇ:24b7uG3L3|p+KA!$}O5İaq!#
4raYR.s z[g=o\?KҴe(8EM8NB:|}By#!y|\;wphl!0GRq{C&Ob_`'␊JD7>qd>JlQzg/p7<_H/d"REDS{CEcŗ{x;' OHU"R/J^I'Ի)uFxwvT#Tr0'rƃׯ=sMyMU)QO;LmCc	XTQvo_hcKd*uIo9C"W=bDnɍL!P^FZPKe>1  |  PK  C:U            ;   org/bouncycastle/oer/its/ieee1609dot2/CertificateType.classTNQ]0"Z[Di8Eji"c4)O1&~hIGi<WsW X
+f,ir}IWɗi:3/EAns$^yAl9$"i#+d.Jn
U(4sis̄]ʉc-0nq;,Kd\͖CiSL;R2(0V+9.+f6eKUǣN!:%84xQZBE;/onēufi9B|ƑS*|mԴu
}%iZg<ҩyuˍn757z|'uFD}S"="+5F7Y{;qVzwO2c\_h){kkԃІ0SA+Z4xaX74hi"751b Q/)b}wL+9C 
mB)_u2bwnJn}[|S1@B2OQ@{IObH>s2V*xZxi:e.Q'N܉}
#b0<'T["EҔ)y#ݵ$AO9ANzXTe,Uxp](VנC4'גjP	 PK%w  {  PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/ContributedExtensionBlock.classV]WUCiAmS6C(""h)ag&]?'eBI 
!]A,kqsws̟qvtH])^6g$tde~edL]V7M3}zM7,cBo{-5WYi|ЕŵD%woX}0p׸oEöt,r:d>wl	A%3#w!)ICOs欠vYʠZS͇ESمm:ycHDGUDdp!a}z$/5aǓG'/餝ϑsrۺΌ<svp)%g%'F'?﷕׊yOj8"Aq$}GdɣN<%{UmqRFD)exUk2d._2$XSqX!t9ms:Ԯ@0'׹Ο%5%.{Mݱ'HB:X:ޘNE7Ŧ<b{b:$H:>
{ˇ%L"%`&RZ+qϷ`W^5Z>ZFo|)EPv*ΠMEaU"BƘ]Tэq'0!/8wUtaZEWWցfN >V0E11a2@'P0B#ى!\&݉2N^#]Y07ť 5	,"}4
hn am'XOʔ`-i\-C.ri~Ն[|&1
/.st!|OQhí W\}<HT2dG7U4N$h#oHlj DN#X۔6i0Ra|/3.ڏX4,,0YQ@B"xoY;>\9PK  
  PK  C:U            N   org/bouncycastle/oer/its/ieee1609dot2/ContributedExtensionBlocks$Builder.classS]k1=~;[0*"Ȕb

}((mfwd>-
ʪ?Jn'ޓs%?~~!3Qa~C(a7b2[BYS-)sRH[˕ZmK=|mML!=qVd(⥻\''%]03VD"$s~ѽǹVYUkۮT^xhz=,x<H5U2V\Mb]i)a	QUk(P_h_{-^BX9\r V}pGsᣍ8kޔasxѓ1ܠC[o):5p,shFY;1½1n}F#xY\ltO	ae\rh9맨Vr_PKV    PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/ContributedExtensionBlocks.classT]WG~&P,gA+RQcZM7GvwQ7^sZr؛^G("<Xm;<~μW Fq.9|$Io\zRM0srsT);Y?X~+<.8rވ=
~ɻ"EN%Ep{*řGJxi//
y#gP9^bwpN<R
RQ>s:vIIמ
qVjӾ늂"V"l3uz/rd'C${w]QL`|RB8[I{b1\DΕOh{}(PZ׵Rɇ}b8PEԓϱc?G36vN/9&W4pmA,Rڞ\uo^o7;Z}g:7[FZTBnKn7YF~ 1gv'8 8IjݢzNKnfcyyo~{=>nQ0e"n00Qg	!M#&ᔉ0jj1G`׸hO31e.60Fy-&ыZ酩>BiHO<]'rM9:׉lӠab'
|CHMk&k	Wedпu3H1
_EwsW=St2Vp2,Bl
-Hp4"рoQh@*r`x%b:Vw\.iRwGYó6`FQazx5eo4"`-#keVLAD3DtkSK[^f7QGB hwPKw    PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/CounterSignature.classQAKA}殺fiundFzkAuXd1/dD]:q$3߼73_/o *!Hy˖$'G.p&S2:eߏyH!|D=Ps^|yB!\x]ZM&5b
AFLsGKQMVYdztkkꍄ-Yfu)1LI!XrS$s.ٰǞ阏*[
G3BJbgIȫv1E>NevwSWh36f؜blcFPKnC]    PK  C:U            A   org/bouncycastle/oer/its/ieee1609dot2/EncryptedData$Builder.classJ@5j=#m'(XAA2FMl
L
P$zb0o"ܡ@+].p)MWZ (5mKGիJ[RmmyjEOZ^M:uu,jrh~ynQY35\"Ť%}O<7
t06v[+z@54mvW`V
i:_\͵mμͶߛ[vߴ};&c"^AHǑ@P&	;R*m'Ӭ_[+v9
X]_b'#xƇth G8d(R
xXH<?2OTNrL PK/  2  PK  C:U            9   org/bouncycastle/oer/its/ieee1609dot2/EncryptedData.classU[S@Cchx+A TEa:)K&C|/
#z7(/lrsl~0:0f>b6x .8n픟@E
<:/yʟK
1tXNϦ
pէ٧U}NDzauyrsAia6/Aɘ<{ɶBr
A#78~њuP5Zk1 y`8"4L>Kmkq8Ύ}1dPwRtn	a?]H6Zv}鹆Φ73D_"p[,.KRwި¯WW)TCA
(إ`7ԖF%%2l<Ҩis`#ƳF'ӛ!T Vʏ7~BV.2Cki9{iot30LG?"+L\-pzz+MSS[>Hk؆MC1iiPq\NjH a?NifHWыapN\Rq#*A..8Yiܐ	Hאfz&\+9]WyaZPN6ni#&(pIOW0gcL?ٷ@%FgFސ\m5(\gb[
ɐW7kDwd_R.IfI03IѡErY5$*2[nIv">1;ɰb;qr*&+o5|7yozzpNZxwEc
}L	nU
PK3HɎ&    PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/EncryptedDataEncryptionKey.classTrG=c^Yv0|k"c̀oJ`Ty%ˮj5vA/LX>*IJ2N,"Ut>szfv>-)܋@,;^@PT_"!p%pT9·+AL^s(V5GN*	*Z
jKBo|!>Ch8dy9tM鹥t]e&*-0PnJۓ~.x*Ko.,o<R?vTU~y~J*Ha^6|gˑU)[V=koi<i/Rx5p1ϸ@M_Z
nWQ˪[U||{OJJ>rIA}ctF70`3G
8fกϩO
-产ӥˎ/(<=+<-7N[gg!y{;D6Godf<.(Y?qDsͥ|;&HഉLt#f$ΰwD/Y&cs;o"$	rf63	9v
Sl&,2w/%.A5~iYy73(9>>.<o>n84")We{Pm "b7Y%BDy
;#};v1Rh<W`q5̽{GwZ@ƠVJH0Z"qdH"S^PҶޣ#fCO#3X/qy$Yxv#}01r.Ɗ#<@&XY6voPK
U_@Y    PK  C:U            9   org/bouncycastle/oer/its/ieee1609dot2/EndEntityType.class]OAKU
T)Z%FScM@
%$\NfpmIhj$1z?xmyfΙ3o 6/1$UƞK%VoBEa0ښ+_0X;-èSw|ցx[ګ5n`[Ꚏj2<"n{RQzY#ԏjT3ѡ&烙gД^Bʂmaaeot֊hO /liqq/
&XUfm\Ҹ fL̘iC$bƘ9fi;a	D}:@`Iz8H"eR1dH]ҷ(N@vT{L=,~!6M`w3
&E7d6}s/XKTP<;	I
~SPK  {  PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/ExplicitCertificate.classU[OA=-ekz݂K[) 	I߶۱.ݺ;E)+j$?~S*%@L-M曙s>Ŝ*i˶,
Q|TLK0؞0l3ə畹ˠ8klC]Z
tY3(r[ ֹY4
h=S,Qw-nDrr׆1+i<"H8=ms4<QI}>̒?^1vpW[p*}m(xK5'
\QRpab3±zµB:<ڲgNoUtd#9Sx.r&OG%\z8)4 YְE鿱^?ͬMwV?9jg/a1jUK->]
cˑ
h
pSUᶊQG
}*	p
p/Cta@	e~@XBO*+cfh[ghOP6JmxUGknJ}PKP.fɸT<&Ro<DF' i=K1=hQV6(Yt#Qbi_~=+Boh1R;s!PK6»    PK  C:U            6   org/bouncycastle/oer/its/ieee1609dot2/HashedData.classT]SU~Na@hZҺ@)UjS)ԂhD/͙ulN;8xg,Ȍ7^G]LHы}?yg+Y|Ā@,@"ĺ0=d8{H;^-I\#]ޓ[geeNH:J I]ZHİ؞[4ɐSKld=Olo1,UK_~}@*tR2a
*ıʓ]V] 'NP-%Yl;WVn8JFro;N7ՆdhlR鹩[@XΧB*0,@@{̍h0/]9]J|]P*h
^0aX9
5ႆ7ⵓ[;AP6ap}l:o7OaWtS!/;E.sbt̵NҖ(@L#wc:.Utkn4n~\5=Б0$,

}cn/Lb^e,,>d⎎	^+,6t䰬A]rPf6o*c1?+2F1G"%r66h
%y#>eyy)omQo'(0pP`{g2H?|O{r!6tCܯH/I ^"SbxJHV3s ,(Ϫ3d(s1Gg"Όq#c3HgƄyӑ1љ7Y//`~f)>&Ҵgi2
̐0FnT{Eoc;ݬ30PKVp?    PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/HeaderInfo$Builder.classWNPme-*7 ^E-7wAXA $,K]e1|MjH4|(㜺Cn}̹l ":ս&n0
w\Bfm]Ott$\ll:s%]*c%	I[0Ҫ$4m2*4K8w0XFf0RAӗٛ"s\VߪJ^57mPˎ89a0[Beo*VJyXVQXPnᤇRneF^j-<SmR	m,gWWK:1 g͓Fl	mmmC:Jgm<2~	Z|-3K:[R|دS'L@NA|bJȄe	z[k"jGBҏu!*u(rdPfUg9}C|A8&#Yݲb8z:CDLu$zY
6kt?V<yJ`7lCKV>I3*]ٿb~.*Pb!z\F
^dqd>Wܕ&xG&qsżCNTTkU{
Sk2q]F5d
qSF-n82.zܕ@JFe
7щ!nq37f'܌s3dxD2<d-fIOټ8AE,Q:|O9J={TJS z%}k?=
'*"H|C.H/rB h@+D p"l h"6% 5  pDg	D Pt0"@ǫG̣xTG{TG)zGBml|'%PKPG  u  PK  C:U            6   org/bouncycastle/oer/its/ieee1609dot2/HeaderInfo.classXwemvtKK(xpQR
{	okXH7!E߼}s|rT|7:ɶ)lZp̗ofgM?_Wa2,c2Zd%MBycSĖ'$T
/A艘HKXMVZX";a	ԓ)VdʢOŤub"%2"dE(9jn%ӡ]䣧'q!!Hk` eƜך3'wnl*c%}wfoH8=SnZIjtD7M݈w0,}LB1b36H,ӗ1LQ(ͦQ"-R%*BNhKwIJIiNhF<I$D\KtqJw"*Rl'fø|-6$hja4ÝCGɘ6B{
ƠwʷSOY⽒"=>WBna]ܺmw,imϩuGK7v%3Ԓۼ8(41V*ec3{Qu7KLa?2KS"R*77`ݥҜf+|QO虽vZK@7SkMhbY*~:}↴};YB;uK?'dlFM2TelMN	;Jv	]^YN1[}GzQG<NK0nn-Nޒ.Nq:J3)D[!'jCc;-!5o.9o7"45,NfDAv\)s[L㝷 yS!~y&s ̞
-"F-EPgkqb8X<MM8"y'.=]iE/^\Sxs[m	fW2}?.tB^DᐂgpX(qTA;1+ +h`5
j(؄!^
+؀yuŋ
G`Wч,ΰHgaHH8"daq ~tȰd=8G/.xOo~v
:ҞN1ǿ=1di3G04h'KUOl@^S-lM%5UT7[SlM5Tf(AF9$xoxVjH@ƻ#,j|,nYnKu7Հ\`|_@e2Q5PU UeqC
Xʲ*
,Y\Q,.}ժl	HW$WP&O𧌎B\tO5e'
>aO^Uvj7獃5jjֱ|z0o軋*!Q }#}|8O}(Sh^GXN#T .m^
r5uo:xOe«.U~|ÁCq/:Z_qxBJ =#5?s;4:C#vU%W^\{UgW_-[ܲs-/T[d>EW #I.I?~X@PKy1S    PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/HeaderInfoContributorId.classTiOQ=6mdèPa Y"RdK D88iD75|?Jy{޽wo?|0#P$4NVs\lH($!" Ȅ:'%TMGt43$D-?1K|VT	տXĮtLI/MbNcK2t;f{fw|IZ=s$4<i?1f;qfsƖ疙.3̬7hL-8fq	wNQ|clpt`<!c$&m':KSϸ/NήhHwE+V+QɨQ/㒌2$4-Ui:Y<27O[cOGjq8wGӹ>J_Sݤ|fq$ʊ/8݂pBN;ؙ^?3PUQ J&vԢKA\@\z
b!OA
0 `0+7HC܊AŨqwb74qp;fq7Kffr4ei&*fUtjD9}X/LǨ0@Ba^5&!7/;="K9Lw?0_BX#(THM*)+de$&J2Lj%Z/^ E!M=XړJHB9q]a:ZEJ-j[[!MA#YdEu!52
&RPK+x    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/Ieee1609Dot2Content.classVYSVd,BB$&n&iIhRn	N\	ɕG:ӿIptyCTslZ=G;w鯿$vЧ-95ɍY;yܘ%er,@BNTNk:4JR
i(.
9cI
!&f]y{up8O8ei8c0iU*8kXήa[DPpe5ҶYEÞY%isA+ҳlŲSpbzӭ8i-FٙHϬ,M49Ҩƛ!TQk)ai¹K[npX Ǘj*W
E͕o+]&|*:ꆛ\*Ҳ3g/װs34XLi@^2O<kǒ.%=,̊W EE*UTqNyTbHŰU\uZ|nش}ɑnAz=l~gq8m[nRhyGHHNzr#)h`p>䋥!ꖣ|a4tߨ$j
Q\BȏPJkI&Q6Z82-+xB@':8Iщ6:4t踂wؼ6Xq
X<d1b<b$kA"%F>bŊq|rX(@ŧ&Xp(hsW@]iۏ*3LPb/*Tҷ5:}K&'*u#2Hn5D{SU|zXzrY8v |f$(0ckCS`U@'0=10LGs):*S^|ͼkPׇq	zyu~
EfןH1> _r|q*vm]SQ9A<NI]LJ~OrԜQų}e(u~>oq+ѳ^YCghdd~{7PKm4  J  PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/Ieee1609Dot2Data$Builder.classOPǿUS^(oC+ݐŶ3'M0$G:(Y9s??ǮH@@ӬVZ4K@b0b@0vcM
sX"5([bO-0|lRA׉T[r!ZQ7vGm&b^s7LʹKN$R5Zޯ^{AӘUvا3r%Oȟe)/k	S(nKGt*JgILQhj<)UE yOwΏ[A,wOgڏ7K/wUt׉Usw07tU1C@˩[a& d2+㌲vzu"UDv"x,S]"x&⹀O<#`F#R,2S_؛"υHfߚn:L.rm7OWIc9}?H*S!$HҒp=) I@4Nґ:KIѯN^5ի0鯁Y3	ߺ0 p3t3&BޅЋ!a>~4 7Cs3M(bo9	_&/&3I0Nu<eD!w޵9xY{$ dblf\R6ЍRcg$rsl:d&dpFH^\r{.*^jĦ		/oSc^jȦVJDK
ԲC5lS*	/uz7^צC6Dqj-4PK*  
  PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/Ieee1609Dot2Data.classU[WW&-^bHDpѦX+43̉OԿ@RAYODm4ܾ ^
Ckj [kmJj;%\]7*UZ<01ʠC;hua!Ne9kleڂ(Dr|l閍dr1oX"jx
TcdoP~/EZO,3712őyJfѡ4Ter0$paaV)!} 朏K5b
Ə;g
axgw}9pc52U}t <ݲo?vTՕT)TХ

N)VУa2wl'6齫N
>u֠gynyR~3uz.Ф<Xlj?#2s,ϻHMw"WdjTϐK=8Л[j.#[ʦ}J5SwnweӸ[hU7,g)
A
1ǰH3CWWчk*aBy\fR)	L*᮫藐ف3HӟWiz%z~r13ݙۂYYC<I
 .SY\O(%Z.}s3Cϐ>|_A_!ζ0zpւ>ըE6d+cG/Z$*P?q(
"];Ht_7f,BWAzȐ=Z"4deV)ğQ$~>Ǚ1[S'X&O,"PK
R    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/ImplicitCertificate.classUNA*
X@"RE"	mc],uw(5xG!Z
SKpgff8P.Z%i_Q"c{°M.wW.JU
Qv(DugW<ϠnNg96C.-[Ǝ
gE^0nmKO9-n+Ë34LYDs䧊mp=ms4<QI}1R|)]nqΓ#%r
TsQ
|
B
.)+0J=YZv!`NKkm[S?A*:sWɩX(gz:#	yir@
sM+f=ToBdVק;X'>Ct֚6۵8G;WQ3jX6=_TqUT\uQMmUOEh-~D%dP;Atn]	CĥѤIH3,$ "ALe'/WYa/u#WnFn GsDK`8	W	>x0:<`8`T<&Ro:Df i=O6)(6(1~YMkD }FdO!"{U0aPK<    PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/IssuerIdentifier.classV[SV
2@jlA*nАq%)AX'B<̔?зe2L%QIwe0Njwg? 0c8%!JgG:f-oJF^,
 Z!\ ?xpt#+Ro=D_Y"
J豜-ݶd7IAY$XB@u鉾kZֶۙY$Q-סPT/Yyl3&ݒe]=9cZ&<VHF
88߸+J{%1\\kFk'𴻺Mdfާ^YcZB[ǯMec2W3ӓeqM˷HVM&Hld-㌌2zdq^2.]<\-K8J/wP'՘7/mćʆT%$7=u_,bNJfC1l=jC	nɬﲩӻ~8}sǐ0$o㈡#.\$hG$	{Z2F#	&9w-Sl>cs*fPp6;l>W0Ĺng4*̂aU0fE\sniBq?,U~0@eCÛv} [>r..nn
:a(:(y݃F^L7D1y0bzi=|P&jSG^ ƚ" !a[Rý_11H#/'ʧa,uKx$Xr>VDbiTiIZyQψAQ_!c/Z;>eZD 3Ҋ"SD#+ک6P۶4K o߯~t!gUU PK2  c	  PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/LinkageData$Builder.classT[KQy)gi0{؊!ބze7D/#YodК03;9_ l9xEU5qmNi87Tk`ya:rY
dk5l8z-[!LE-EBW
{OQ<ܳqZU	KSК9JϢq	!|oeNw7RN<:9ϭ2[{҇x0
{#\Ыԣ81d!aJ5s!D1,10"XfWu,oTj]f^%,	?I'?/E>I| աw͈>i	#/e}ldva$]
-@9xC* 5|A &=XCPKި    PK  C:U            7   org/bouncycastle/oer/its/ieee1609dot2/LinkageData.classVwGHl7MIEAh$ABS
ڗuGBzN#9Y49`{gߟXaH>dyn32HaVy$\Wɭ
:O<j0SFn@mlr0gyexGL-Չ0EO¿YO!2n;kcF[tHLݪiy54j͇rs+ŠgFM+M;5ݱRZx+*vU/^%=藈tzn%7fnk@7R}!h<\_uGĮu[>sGQ5>qeT!/ihpG\{"Ip\		K@GN2dG9pyd|:2PPtUKڽ${C! n9 9~n[?W@ȵ7 F}U[D:vQ]1D8T8RznCh'/J+g}vpmoac')$LCU1
&@91;/@Ƣ0sI
&<¬sU,dDX&#̺9\q9a	1/pKgAP֮ͭ-7pa7ql"ADD4Lr1B%z"3j7.vqC=G
и&ɧ5&1[
Sla[$C	$Ǽ|e{d	$$Z<0Ae\-RY/~FX}؎7+{)$H|ix.qHq;O^c4N"LrŒGV	b,ԏ}̗ZL<u[LPK)  
  PK  C:U            H   org/bouncycastle/oer/its/ieee1609dot2/MissingCrlIdentifier$Builder.classSJ@=S1o.]؍Ņ &:B"(~xںЅf9s/s?>_lcIz.0pBW,OKO|YODFU5X]*9Ogµn Æ{Z&/؋tíGr#Үhcg}׏Mw+*P\m⤗a,KU,м!vTaIsE~bvGo}n7;='^<svЇ$D&maʆiλV#Et5Ɛ2x 3X-=4YDF_~#Gc `מ1S~hP ( iB"O(`\hPKZ  H  PK  C:U            @   org/bouncycastle/oer/its/ieee1609dot2/MissingCrlIdentifier.classU[S@Bc+୤jyA.
aLǧ4Yk0&,O|/
#z
SЗsv9ߞ$~
` Ӎhd͢}0ePVvhٖ0$C;_^N*oTyA-p1QӊJ!ښ~$,jL0t[KY~0=,o,,,⾘\p\|+	VcG8V#|mwHCPCap=j֮s{g	D1FHӡw˗4XIފXYB{ߊ^ptE UWp*
VЬ
*88+:Htv>ޚI!fNCF{!+z{ ROULPʑ{ܮK7\jjfr(˽ReBjV2˙?lAApuIs^ruI!d4e*MOIJӧ
Tc@Ks]*bP%
4[*:A*a|"p#	ϊ"k
~9c-<C1I*UA֤];!b531_@1Z)VGސ'ܩ
ZF'dċC쏔KAR^r>@|R[4ߑ\yɜ5]e8N8%.z&N\Ll.Nn8b?^·z,r<y@=ҥcE-
t0Y&x@V%AG/PK+$    PK  C:U            4   org/bouncycastle/oer/its/ieee1609dot2/Opaque$1.classUSG\8OE~Xb{IKR(hiXb3s/mWL	NGud&v~~x6\20p7K);0IO0ֽ
\T"tl1])[n[Y'"*#ť+̪2\8榐ڤMx5Cmw=ҏp	eYy1\x*@2x/ܯ+1 DUW'k]o`'|B;oXN[pQBZu]h|"t*UHgCQOQ/-5lus-Y2նÈ.qʨCK{ϵ#]옯QJt\10nઁwk3>ÕډPMֆ♐ o XRt嗩W䄝O=A9l;kCɜIێ!c0>Ѡ솽v6dY+WX?Qӳ&C]"TUvYjoRv8[W$i[Ȣ`aE70ma-\c#=dP`lasz3අ1[(X×zX2qwP11215),=oL|u6{=h甪	9R0VDzM&4tkDISGjlL_ Kw-]SwGei&;Q(Z>!6
GCJaP|awT_Akd7ϥfj<UMfJ5SE<_k/1|\[㬇=pxͿ(0᧘(7heӔ|fi׾<$k>PK8K[  ;  PK  C:U            2   org/bouncycastle/oer/its/ieee1609dot2/Opaque.classT]OP~ȇPAtC@an	BBXZhHv_D({`J▜sy_ La1`$[9VNn,m5;sQMA0J9\(

m{ۇ|y.ObmYvbMch	ahj	.(7L@i؞+
}xc0*(PC7k-37Mٵ]n:)<ŸgKk`
[9OϤfw<1i2Ha;F
y.<ʰg+TХ
PУJcybGf!ql1`~}=YPD/"$FDr夺gJ=QwQM2kGrD;ym]㧪~ZLDLγY1z^_1ݿT?i'.hPhhЎjCD5`TCrǸ~*nbR 	9<P1(ʐV1)A_ȢC禮j	z_7N8]R&=4>]e<ǎ#C*
c0[|,UT	ǈoG+qB-9#dL;0Re2h?`L)+N%I"N­[K_%)Uv`h$? h;%p\s(YuޥYU}PK    PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/PKRecipientInfo$Builder.classSJ@=S[cۨ.j]DERu,
4jJd
.HA ?J);wL91W ˘͝t՛OR1n%Kc ){VUs\![xU.]edy[,W
n]U|<w(HNAkAYɯ49;RhzՋEʒ(dpANYcv!7"[̽ɵçrj
Wύn7G.A&D7B3BC)059$`"*0>b'5<5J]
?b4
0t &<`	))^	$? PKךߏ  A  PK  C:U            ;   org/bouncycastle/oer/its/ieee1609dot2/PKRecipientInfo.classT]S@=K1෨RR5 %XuSڮ5,ɿ3*_/>Ի%F
g=f f0=f>d3bƠl}4_d/+(x)OyS2!r/M7avy

EbsW%ye8[6Legt:+\Ӟ_6
ނ[\,ZpanKUp!*S[@
[)vblyޡ'
_h
UTR4
u::-`\,Vx`LY^2KLsr Z'g_Ux59h
(hUOAv`٭ID3햇寐N=[QtwBRE )V~kL͸Hd
SfZa&(R"=ɿN[#2j=4z5j؃N
qZ!4h#&Mg[C
GpNKӛ@}8K*:08.JsYA'0$"%!@E(/^|+ѫq
NOxsNXŧw}9D$~2QZˬ+ 
\ kҮ12};L957$07ߢyGl׾GdWpK2dDHD7r)H*T+H}w$ߠIH-cr-Iv"^!CyШR5}&ԎlxIPg$G.
	4'j4"_m*?PK[Cx1    PK  C:U            =   org/bouncycastle/oer/its/ieee1609dot2/PduFunctionalType.classSmSU~6R/,BbP
]۰f7aڟo@	cf|zfI5!qw9<EGji37|67l˱

o3{RNQà<YU{®I
[u5yXs
ra>P0QVo|S]vAEb4\z$EN)a۲$lT+KG?)
p9iGU-V좬RV?R f6%KpK=-O2-<'˴9ޜG4,uQ\YM[K[R̵墫ZUrje
)z1lWCHHC*%qYR$paKK5D|~F"x9dZѰѷIc:y#5<tc'*i<{NpqFwkQ)5+C?Q_sҩw6_1LbH10>Qt^%글9:g
ExS0`-e+q\F6+x]nq0dx/I13܉c?3paMT[qhGMQ
<wJqnѷ	ߎpdcи[/i7>zk^<^}L(
<0g=
iLXl1smJT\
(TF+5qd&yOH;~!}g0dHBЛ3|
X۔Y:vP#~6:>)5q%Vǎ|?JLL
?'g? .wog$.͖@PKiȤ  ?  PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/PreSharedKeyRecipientInfo.classQN"Q=:&+F33N2au.t	_F&F7dvnл8U֩G`P$J@j=- d~1	1#}2̎C#APw:LY=*$Uz~C`.Py&R֖7:$w:<B]Gd:mT<?{wS7,X2lrjiMrLpgem/eATHH$1bc&lHb0ແ'Vv.uT[
#~	{	=fo{w?b`^|A-Cy'ȿ==;LTt9U`19| PKKBz    PK  C:U            H   org/bouncycastle/oer/its/ieee1609dot2/PsidGroupPermissions$Builder.classTkoA=CiWp<ZmQ[PGb5M4M
jcM&~NbBO҄c?x,eHs9sd~c<b0v+^)5Dueg:gTny|
nnq)\WҥB߷	8>ZfJ̷{1L7,1dmn-YmW-kpre|)=^)<g5[1ݔ^+D]GuIZlK)wdS!!"b]ydxuY[)խNF7զ%QQ7fX
Im"ߠwÿl^!&4&OZ!<&an˘,|;c:$ vtD1
S#:&T0B3BV*,ƑD.p741h)ZkRrܰ\Re("JVQ?q0eE쭀|B}.w"|0k> SHxx!\f$>n8׃!@0i!iNpp#H0? Lb䨱sH;ԦYU_7(
PK2 M  ~  PK  C:U            @   org/bouncycastle/oer/its/ieee1609dot2/PsidGroupPermissions.classVsU6IIBf@)-h[mlj5lkX송>oPglӱQ깛MZmsϽί{& &u1#".#g5C7Z^cMOU(2n?]U:#ck[
R.
VY-i[̨	g^#G4O^0,[%Ӵ[ҌCze;FhWn9knj%`\,[uVWf;6<٬g7̖Qݪj\y97fM)Qfuޯn!cCn zefv%ԩnyB4j䍻5ӾakVbJV{4[ۓwnʟ	<lqm.5M֞3	gEwEqQ{"ާ(gGě/#r`vS33Bz@ֽY&i/$w;.zЋ@\r ;N;^>}uoY$Gy^ZU˚I:<O&G"}u\.lcV^"Qd$|k.!$!!.K8⦄8&%S\LG,G1b>˘
>bG1AWOb s\;/^ЂYgR*k:S.j%?~ @	<i	^Fܕ*5 / ݏFic%31ZIm,T2]|/vdBY"W౒:zdY98p)ØqJzgdxk<u|uk]3A^R^#"+?Gama@)NDbv<u: D!W|vi1_5
Y-skN"Q9;*A\	qwr3-}pr	D'$c4"DPKxq  \
  PK  C:U            9   org/bouncycastle/oer/its/ieee1609dot2/RecipientInfo.classU[SVrM $m$W@4B&.bBKB>u#&</4)3!?l'm
F{v~=GG/ 0cxC r]cʲ-ﶀ\vA aJ[U909)ENsv3gy4=.hK^!FSkFq^1JV!U%M-S;^2좞+d(M-{jʲg9נZv޶U*HW E}ٶ]Өx%{L/W|!,ԁCsM6W-)ص+7
774N8W,nm5DjʓI
nW=h¬Jj'=[Z[g<:`!XhWTХn=
*UpNyo-s͒)p6=xh7<_R:׌N
{IB!9Fc#f[yLuSA|'lBpab{x'͝n;i§ف.Mt8)ybjx4#\amLCYЉI֮u
*>`qŇ,đ]*0b3,fY|ci=X̫ྊQ,EȩxK3N.ČuɢQ^P=Q
<"k `dKdw="Dc'%$%0|9'3X=r3w8c5ǧ
?P,UBޭ9$pf}[z·1qv}<XG $كTDBD"18mz',AX/d2/<Dv#=Ӓǩ*!k/~½[59bd"ԴnibLD֘ 5Fy:Dfy PKh0_  
  PK  C:U            I   org/bouncycastle/oer/its/ieee1609dot2/SequenceOfCertificate$Builder.classSmO@~x)W
TEiEbLL	?\駽rYiC5!~i"92tf:<3;_~xÀ3oDMl'\-j-eT"P\=yxvG"&d*TVxKWLfI|\+")xzM+8.Dۦ;Y([-Zp,Y2sm}1ܤ<3޵DQLO󚙽;r'qxC=~"wu.:C%0CxlixRlL`ކk<QQLbe`]
g'ID)"G''`JxD:Zy߀[`v)_a_dA~Cw,j_H*3=t/sJà;XD$mS* PKŽ    PK  C:U            A   org/bouncycastle/oer/its/ieee1609dot2/SequenceOfCertificate.classTRA="
K1QP-\JGÌt,XRejXLsݺۏ 6C]^a|P?l;a%s-+a9;iK
! dF@IǗ&sg+,GSe椝5G=Z}W)7iiTht
^]owsNz)m2+LwL|v)q2D̉9Q+<Ӗ>%X|K-'e\9`Vlʁ>NXdoy-īIޜfʚ
U\#ASH2\[q#-2e-g,vZu;B-5 [cu.$'RBXgs|3Ν|F7Ƽ1g;2$6ߖ|b3>#R6iR1u`:4t	{pRGbj㔎8#S~QR<(i8CpDI]K1(.kKjA8
8!z+/A0f듎#T}7I+lz~G D%' "2AZp$ y4hh,#e`=
ҟ"#D+O(x\^9OMb*o~~7h@'rtqtrʒJokP#D_#d|F4o|Ed

-c" #B/1RBk '>U#dÕ\/#B-أ
3@Y4{PK('    PK  C:U            R   org/bouncycastle/oer/its/ieee1609dot2/SequenceOfPsidGroupPermissions$Builder.classTj@=MӚ~iVTPWPaRc˔DOWU>%dkYA!0wr{Ͻ?~pWF\زH^ahl^\r8^MiܓYrB)ũ
ZUӈ=_WJWNo_A`mkGlr-`Upg©;pfleyD	2.U 8o]gF/:´"zS
q	Ta`=mh?MP{6?"v$a{B:ݪ⳸z/On{U?RP$]ϻjɇ860/vMc8YppTL㢅Y\`4Pie'	
Rd ;BoNPVgӄ3Ǣ>.}BPz#Q2d
G3_
~)q={
9G'PK@T  \  PK  C:U            J   org/bouncycastle/oer/its/ieee1609dot2/SequenceOfPsidGroupPermissions.classURA=,܂W AÂh`E@BZG.n,WRRZ/@Tg93} 
"E{_Qa	oLA0-,;\	Y0y1]/
ӵtrxYs>caf
|^Qмz!=4K";w
r)&OA@x1=;M#18˄p	UNعxE?^UuZ#˙B
z7<_SS49uPc5|ɑ2frGij4+嶆filY#'vF:mykΊGBC.VvNCnIomh鉍a(2P̙ւQl>"^y<v6t{QZmgdOHcIbJc5T=mJ!IsU[WFIu
6K*lQ6o阆=8	>
mh؉
aX~iiAq^E7FUq*i.JsEE/TaB%%i!\&֌øLwIOY\eqg"g.ۧ%홙3myz6LI :r4i1Z6}0DiGc^5}p0W8KFAfUt053U
!zJ)XA={>TeUp^~~0CC7#I	RΕrEei<Eoh]ExN_f
:JAĵL2br/Qgp(V ~,"Z"Lqh*z$Y'}M@7ɪ4S- PK\8R  f  PK  C:U            K   org/bouncycastle/oer/its/ieee1609dot2/SequenceOfRecipientInfo$Builder.classT]kA=~nbҴڪU[Sݨ"bRD&i݉'S*(Q
(&&Pڲ0w̽眹3??~x#a|IR-3s	ժxC&R*Ü
D]kYfq5K%(90;=J"P/ifGN BGȑB=is秪/>H%B2i>j 7pNCZaB!C[
n̰2-Վgq@LLjyke5uVObZT;!h
p:aw<kgNzge@b&4qMGua7tLaa3hw|0V}_UG+}7x'#HpTcW"$̀1@RrW(%^.PLQW$t1>cBotq3"
JUp'a4pO2C=L5.ݾ4'6PKԕ  '  PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/SequenceOfRecipientInfo.classUmSW~6D.YW)a\Dhm4K?8$wqwOδ43~/0I %'̞{yyۻ x!<\O4NKx3
in^ef
j^QмνzvZ-"OAcz6u>7_F9cq̷I۹x¶OQV%kU<ev֍U;oefLqtQc62v\e}cWH4ŸOݞ_`j06wṆNLemq,}
nguxZֹթ*kg<pKΊ5!3,K̠102ghg`dbf!*ܭRM'ϐ1uJ\9Z7J%uwV+~ȠFpN~9pW^ZԢrtB$3R9'qCԁڌԦm.:j{qJ$AR |pE95p	I1@7TbRo𓊠\qSrևi)fUcF T2bSR،0M;toh	N<g.%홙CC e4ihy"4HK4hlѷ#;;B>%R|d$Oi%^@6n/Dp/5
ޡ+J_`aG+
I^ 3z}r&@ɛ(5.SOcP;4{mЊHm*G~Q/jaӻI7w`!Zv;Zv~~w+m$+̭+ O2ri%<'7q
#eWY
$WKHH4R|PKzULv  U  PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/SignedData$Builder.classTmkP~uѵΗ6)c(}px\;b"*?P(+4͆Th9<<%_uSB'9<|4#߀A'$!Ȃ`{{F"A7ƽS:Ae 
Ɠ0я
iEriQ\ʊ6]i\jLPMe[6mlTuNc-	.-l,>1˨\Q?BSQf]Iٺ5﬊MOrV\Q)OO[wپռ?V1x8cC=xˈaM#nqcnI~IHWTnĔ
_c[\aJ5ѦH`RzH-`?03	Z!mdX\\\Xi#*cDL#J61L"|.
/PK  ~  PK  C:U            6   org/bouncycastle/oer/its/ieee1609dot2/SignedData.classVmWG~l.RU[4lR0D]HڷM2.N<O"rWټN@sNɽ3s3? (I]]ߔ kSfU	g
V⬜75XҷeIIr\B}_3p}nQN}/>%hKPif*T,x߱EXk]|j=tr+8b9j\>6.yՊ^jnEtw86Uthdi)fj	:<Vmq%vͱccSe_׃'{fL ejpoou&h`.FΩxUK~dW8;Qqmj~F1{M	e&cP22N8%Moki	T
	Vbj,O^]6Wmt$aDq%}PfK ĦPqЍ{
P3]ϙCp+:ٮh=HV%,<$p;Y}h@!y {=mp
:JGudUh*FF 8k*΢OEaU.Fc*@9L
aL3@
-LNY1(9a
s_%
S0,@| #xH<:%.>X_Āɭqh}A;hHx2T7~IC?36L-%ڵ-,j[X'z!Bsd^bE8_ѯZ&v DcƟ
L,X@Ev?8>)%TcqZU"N~CjSHnMiE%`0J	3#B\,[41r>&~}@̥fXmu1OxV0OxN.A.(4	"&@_PK)    PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/SignedDataPayload$Builder.classSmKP~oKYieE+^0
 !(>^&kmFҟ*0~@?*:[ӂ`瞳=y}xyU`x99d6-qָ/xW7Rb{}TqEFK9oEa50;F䶣9	!v6U)+#&dw4]dpINO*!"A0P>Oƥ}T$FOc#maRt3Oޤ?|>L2HaZF 
(u\q #K5PT\7aUuntQkC`nkZTX|0D?gTxB03
H'^!_zԤ\K
	GPK{    PK  C:U            =   org/bouncycastle/oer/its/ieee1609dot2/SignedDataPayload.classU]S@=K)!XZ
JI "EJ3է]k4$ؤO|/ZFƯQ~ /wf9n  V
3}J|2nڦ7,L+/<8i,rG]$윈uEĊ7CY>'rAT2C4Km_ji8	T;1({̭-^ܰ]0Җ%
ܚ*JK&XLfvc)ٹw=Kܵ̃s|"ިji7$S,CWcLfw-GJbh1=0#cy2["_5q%]Kf(G3fZ૖칵yl`{qh.Z(8CADGSpBIu&p'i7D=:dhڅxoE}񧾐R7?IX?kFv7mӾ{޶_6K
|7Y=;t޴]7٨GThႆSjhA5Be50ZUsQqWe&CREc*0.
Utc~[i'O-mۢXi[^ˏ
!v&Dd4ȮiT@%PGiBheL鉏?b=P!.j'RI`n5Cd#H u4%M5IztIAL]`0h<@-Bwo 1S[0)(TS8Zm;[Fz}5D?Kֈn mـ븝i6!ge6bT4Jfח5$,Oԗ(4v+ֿPK>;  3  PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/SignerIdentifier.classVmSF~pd&RHbHIHP
%iĔ(U$jɴ)LHL˗~jkԩ<ݽg;߿
`f\M[];% kKL֖t-~SV{6@|&+]~ + :IϹ~`lLH"h]YYe>Y|]3yO`v
ǶR)22%06tpzqdp*c~cʭ\SAv˷cqW)%OL;/Ӎ;@_<B嗥 m}:ġ/,<Ym)yEUURM2e?,lI_k|l
-NVv`oSS/J,zW0`H	
N*8ം3
^Y,} ĉ
ӭ^~KFӹV|x(uWd:vf=h'N; OVF;ޮNҮCZ3ӌoѡp_2E
.8WȯKsn3yϏp+EEHGEzU*\e횊6þY*d1b.4bVfaec})8Xc+q"Xfq7)ܣ1Yt%2^b`_3EL@5Dpq_8OvN=daA 7ѺI~AaMj{XF]~է|%~Gzpj0g~A\jQz4zs|Nfh}Rfc|c6`P}f.{#P"9?"h
D,-IōZo~>
9(g;b瀐V&IidcmQ1b8}Bx:΄ԍOwBL0}͘bN*c"?!FC}7 zVq
۔ZƿPK
,  	  PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/SubjectPermissions.classV[wU&mt8+T)%-MFa:9әtoP\аZ/<'Zhdgﳿ9s&_ q'zB$W$q<'$AdXZ-5]f*
)c	{UױPB-\</M-,I/#cQ֜ p|/ "_6O[7]iɐQ	'᚞m\Wئ;[k,Q
HAxVDMBƯƪ_0bv;bЁcS!T-*+fm߃Eppsg.TѪW[j"_Q?wS)%j45.`O>WXs֜YM228$cPaGdqL{ԅ{_1W]qQ68M̿~8hzP;o°V؋-'2
]!9hg֝ND3x<&tuhnvwh?.{L	w_O-z^K[TOt0"^kU$!kgT YVcX\)Cç,.*cs,
U$>ccqM8.+6WLK	9Bw@Ώ>(
.
ojH	~.FɖwǑrIOs4&-iC)7O=u}EiDC7bbQOeL(3	(&JP"(ED0ߚ[~2%+غYc[Ȕ0VnFZ"smba<(nG})$dh2 F(}ĉMS'8ب/HOmϑro6>*CM. G)\oVNc0{8n-,
4PK    PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/SymmRecipientInfo$Builder.classS]KA=֦fYieEЃVDIB&tWvh_MPGEQ;;{0`Jad[\3
tA^vNsDɺ%,<~kUݺ*dm۹*v2<CwE4WDkbCEOaWMrbNqI&dE2+Q0N{/KFot/
+4Վu̒s+i~
`ߺ 90*F1bT1LG"͠toghĠ,bUw]r$1 jA&嘗 ->ho@ɯ>c&D@!d@e)Eȴ0A.s\EPKvU  8  PK  C:U            =   org/bouncycastle/oer/its/ieee1609dot2/SymmRecipientInfo.classT]S@=K1hRR4  bE0VK&C'>pFzL{f
fZ0D}f>c80fŠl}4/3t^H}~Bb!Vb<Hk
E\%N
C{v0/7Xn0-g/.-r=h%7_[pa1y4@Is(SbgFmgHù:}aੰƎs>pHFծ1Lgdϝڕg·i/б9+\
^Y_\T>Czh
}QWRU!m
+hWС3hPe- 4뇍(z!7 w֤O7xP=K;:^\
ޮƏ7T
0$R?$lJ	L|s䫗`4B>2aO7p ἆhED
*.URN_.Ks%8Tq
TtbH\4*bD%
]4*΁T6_h+룙cw5#YDĉhB,Vj
YvoW1>a\@%Z	Dސgn~uvU"1!UeR.qzIå*3q'Т@|Euĳ
[$DЫ%C+Zxv|(7lDrdQͬ!*hEe]ULUwPKb)    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/SymmetricCiphertext.classT[OQ- Z-RDAT*!qٞviO	PF//>ԙm(4af|e쏟>|XړGgmVsLSS'Y(H'Cܵ-IެTAz))ix_HK	KU]x.JnOgfv賝
3gg502,yanFtF:Y3,fy騅MK:'V(/۹,
bXwˎe%YrFre)Ѩ HC4,<7ʢaaK)cWIYJYn-鴏YC>
_)hA!KC
5jO.?r3zNFc 2EZyKZX4g8:= +{5y@w
V
,Ҳ!蚬 1LjW:NN8S8v"kQgۈ FY\ 1 p-A\e1bō ΰ,YL	"Ac6HYLIf)[UyEGfo%EQ`>(ID
-ywTp$4@xwp3>s6m~GƃR deݏHk``mkUHq6淑֗w^n~<4D4:fzTg 2Tl:fa̙7D^H%!Ľ*VDOJIjfv@@ǥ&J}{^ck*א
PK]D   I  PK  C:U            I   org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedCertificate$Builder.classXwE<Bʀ-OЪiychC),*p;-a7nҦ/AA)1=gxwHОw7843aq˶֤ZuÐݽhv[=aq lq$l
XgҽfyWx^mCyѰy='=dt5l2)+:o2!fL

W꾼˴5aK3I]qˠJ
qͤkINچ[,hh{U='2=0vU;srQ0tȄ=#C
wI#݄{	KJsdwGʘjWN84{{rU뛩.AV~[%Vn[62*^EU	%>g,rIxlPO 7䗠bx)1
GOb_zgWe y&ġȹ
Pʤ~gffi.{9:<SU:RqǄ*]}!+D0Իރҙpx<ϔYݻ"͔yz{87%H~5}&B9ui]tRQ=U:<H8κ4X_%sdG:oxN;	Ci<*ШOH[m>ҍVDJ^I,2#!7OxP{QXҹ_{:KX\MʍFsx4N7'7fx6vG?>=F{!ޤkg{rձ
[7`6y!'FQ
Xp@`#
lb	laWpD`3
cmxG{q\X~uH
gÐ\hŰ*| #i(Ǉ`4q%g,>g,dcabV$ Y`q*XdX\capXdY\ݷ2RHٶtk N袯&FiJi"EibMibJiMibXMeM4q4N
3K?ծU]p7*7_ҒtӬb=_<BsE̱-bu|y^"fXO1Dtn%UK
_·*|	U%RKF/kTn¿c]{9e@RQ : S`ޏN.8
 b 
 E`7NՊ]ej o(3g `-N G@R-E*TS)P2K%G%Oţ2Ce,xd+nژPKXL8    PK  C:U            A   org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedCertificate.classY_.ׂXXu\
^;vI\cLl%iմMC^GѤmnzwbr42$nGo3άb+ *|潙̼yf[ͷ?-㈌~d1(㌄}1NHhI	!Mׅe]b\b\W9e{#^樗9e{lrQa^1,f,XV2"-A0%u-3&˦inӅiF,s%eŒ:t3!HIdts6gbVN1-h-Nu5%쁊YEI6m,;RBB1F8Ly]-C+Xǌes\kD!Ohi#iس%,/Oxj2IC,Eda﹬MkѴIEcHi3"2Ќ.meKFȚd6guͲ"Y@B)&ήZivwutjuxdqR}UۢYit$B'Y`Oۘ
>3hGF-#yWc07"n2"	C`{Oz2شXB;f	{6'!NȦL-wX4Hƒgpv4?6XerHD<4K.|K.*/6E%lrqŰiRnOd8(㰌28.ㄌɸ[=2NCõ~	GVޭdwo@JNtT[E@>B֧l]1
3d=fk!?ko֕YñVrg[|H#ۦIW}[K{XTnXGO'c~>u׹jj\={;3Y]gɯkד
~5:!	^rxʫY/%<XC`T|Ia,	SYv;:R:|ָmLjD0R䫍ٓ7zqdcR}_RO6zqF6|ztnl0YVNW#Ac_du\R&+*܀fژe\a&| RŃ
>O+~|F.|VxHASp&Tp
BPpgS
ze*> 2Lc&_Wp8[L;L{LL~GL~'!!FS&`11<B	/CmB$~ByL\֖lRHPb0Fkqn9@AI0)HrFʧ3Rꌔ{gYTt"4R
#nMD}^WzWԻ
xIi-e5Vu5"0FF:
S#W#F^i+!5p7￁B6p",-O_$,F;˼х[\[hHòG"s6wnHy7954.íI+.m\{NR֛e /~!ѸK}Ϣ]y=lJ	Z4)[h<l=y'>G|W\Nd}\ >k.9e»a.is;p~ޅ{`G_ts0Jtt)oBSOp	'D,95X'9άk)+uqN&7u +QOM\L,-GB:!XTuBpZ'oU0VN~ZNކ/Vs.UMxj֪
x.PKaڪ     PK  C:U            B   org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedData$Builder.classS]KP~_9KʊH$IEBPP]MWPGE̯8}{?^ "2c+*.%qNp]8ufHWMn5FKhCvjn[ZGg
jxj!ʺ՟Yh;նaR1=6N'J|u)!,!"Ab(M7V:b(OI80&a.?%{DZ}ogZIL?RvfOOo!+Â ?%#OK2bX`lonY©um5hZGҴ|itJw@u/ Hg(dF @o$^$E!rf8"	PKP̀w    PK  C:U            :   org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedData.classU]S@=K) (!
ʇE[eڥCM`g2vz-m@{wg9wO_ ă*W//uSw&-H4C+	'6[),pQsbyԴpGgDrd-k%is]TC3Sj0xJ3ҩ
n:s;	eSꪵe&v\l3NŞ̄V
*?uv6$?"CGic)Ӫت9
%-gP=Hy2yrVsa+4?f3{}iP-PX¨崾;6P+ኄ:	W%KhpMB#:a+t#6RIf*"u ;-{D_eYH!8OQD nTN3\Jb"eJ6Y6E!ѓ}j)a<&%\.Ӄ/'tKݙ5	^\GnDbt[^/</j0 BHF32Z0$"aTFevܗ	<"Ï!z.{Jsፚ&Oms~1GK^6W7Я
b4j,$pZ	\d01#ȑy2*(<͢92xU	0yYt3y!2_T -,+Լzv;|Q@]r^QM d)J#r'(),@O~U,╟q3:[cLqQ	%ix3/F)ʔԂGPKWZ    PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/VerificationKeyIndicator.classU]sF=/B!B B*J68n!!L'YުBȲ}}03%f~?L8C<{={꯿&N"!0xN( hhȬTW&w,)ecjhzsi	M{%wCeݗ[́8^tDܬkzQp]iR`^H/m
	g߫9nYFɯy֖eVCWf՛1Vg@U\;Bٲ^\??nqΗUÑR߼SYv-FP22ܪȪ\-ˢx$"Xb:Q'iA
9ts	:$B;%9[?~:`# ข
TpJ(Y~,B#ei׉u'hw7%֩l#Nw*Kum^XmN>~ӡut|Bӷhu6	<;΅kP0a5Ck8,{wCi1CC7̱DlW1*.,X%l,UT\=אeR9?ZMfeTП$c'tOa3Jb陠FvQ
֛²~/#v
c#|7W&u=x5bF=K;&>QgM|ˈb#=SQyH.PXiƋ;lb#>v$1c@{$ߑi"sXmQC4vhiTv=aK)Z@@Ttb:N&30-$PKk
  .	  PK
    "D:U            0   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PK  C:U            U   org/bouncycastle/oer/its/ieee1609dot2/basetypes/BasePublicEncryptionKey$Builder.classJAgSZ.)B4
6]9vn/TP }ҹ#Rh%037x%05&k{&U2:}7@qJ&ʞ8p鹌]n@'$L"joo9%cF%e^&Q*Pceg$g*9`"@`R`Ã*m{zf8f'eQq
qQwda迡ZwO'X3K`<̄(Li<-B!1E+
RITQ5և<cYFLe_(мW4[F@uW(O <o}
Sq{A Ok\cwʗl짹~PK.4^    PK  C:U            M   org/bouncycastle/oer/its/ieee1609dot2/basetypes/BasePublicEncryptionKey.classTSW.6YFP
"j԰@PR$6C6;nfwÔ
}_Їg*qʌm_?9Kvf=~= $N
$SX>\T2
ͦgkv(+HAk_9RtﻕAN`(6/0b
h;Az#ԞJ'Hf7}QۮOD1I^-VuevALzQ[G)נ(P^Rn]~аj~s6;\i١˹nx@q^;B7dx{p,Rnܪќgm4ehXcb,%(uYG#S	3ur2w&A
Bð
40ጆp*tp)pn\y5;'hv/xI]'ʖdX P;+C[܋աWGvGHM[XX$hn >HC)0Y1fY{m!`~
̳ct\,>d;:.2X,Di[,>q
h7,`=OECjd;<k&C?=9 1]><g~#8#;IRvxDHj9_	g,;8? <2K@G\Dum[$[l6=7F̠OCF`-P;~q$c9xN	:yq;2Ho#S5_A˛bs/%hA\٘A	p%CGC`id 	LX.twlgy6Tam,uƫtPKz32  v  PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/basetypes/BitmapSsp.class]kQ&fM֯I?w7ǈ(%"4PJN5
E5ł(qN
!32o 02{Pg:ur0PO(wP2̷z&J>Ey**6C)ۼ~H.w֑%V+7#ɘ*ၔaHue:feX=QAƱя咴Ǣx8P4`7`X0pakoakێ;i@3uHw$N/VRlN骧@"V,d,aF{rX0p3&
m;&qW?e]EitHTRtߊVGLD.Q! zhuz]J`
cyrgX++jҕL2@Oa{g?"y\OE
dH~:MNPKh/G    PK  C:U            L   org/bouncycastle/oer/its/ieee1609dot2/basetypes/BitmapSspRange$Builder.classSmkA~mrZj^ֈzUA(~\p!JGVS0Roafvgvf}4&C=.}$CA JbɰRhToW]:.G;Chzvy; JG7g;02lP+J)=$>o%'3~udP!0i*a)_
a~OD}θU~n0md0ð}~W6[gwH;^ADc̨`\2b
̈	LZ	U0⦍2j6*X16p:C/（cnEB)Le&hQ̚t̤FJfo;a>1\Ռ OX> |)`Ws)$Q_!/"ZVP>wDtGX~tIڤԱU~ PK  b  PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/basetypes/BitmapSspRange.classTRA=
"t"A4
ނX)6ɘZYvcvB⓿U"(?J	IRAgg3ק/ qߏzHo`-J2oicY<<wR<Yy}dhps<a:C^v󦷴iϙ%Ks4l1Ӟe3)0
l#Vs`2F;	3NMI"G=L+@j9PƇE]B@. )1L8#WҮ4Z{lfI'$?Rg}c~ܮfeKX+)R
h
)hVp\A
Zz5=
;=哑=E<m%_6ژ=r
Om~M/qBFQY
]nL$}TC.h8%IhVC__}\piT㪊sRщQ1(͈4c*0сazawᴛۥm8MqaԇvA@&J5
dҬ46뛘60o (l*g	[uoѴDmWZ?ba7<{7eR P@edSFc7ZyM^ge2OSdhQ21^^ђ4"Ew3&j%G<w
^ķDo#L1FV1L]?PKt  B  PK  C:U            L   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CircularRegion$Builder.classS]KA=}XV==lFHQR &8,;)0~@?*Pb6w̞9;#0&C̰YDCJwb8zN]tbHtLnuVW蒡d;e,sWB!DxpҶ⮐[j?9/f#+i;m\!+##^^(6mƽ}^u.)FHWԗ;&lf0n:Iy^ʨ(?c?l"XT1dqEQXcP&5XۂAZp*&w]b1-h+A0x7O (F(' #@/$ޠD2@z1rb8 PKх  N  PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CircularRegion.class[S@i1VTEbEVt(:)MN4&5٪M|+#?zM#hnsN|`%DSF>cvm>!A.l|zd1I{Yegd՘kd`bIQrPBx.T$Mn1:9l	nE7ULgگԞeŪ\	'<k-Xfѧf!'ɍU
mcI!ܐkDuv(
56c,0R^2,soӟcfm&5 (#Sw]Z޳Fq~ߘdb$tsOo?(kE*K.2v#G^d짂ec4AOwq[_R*em]BImlDV2r;
_?s6KY+[q[Dv`Jy@[EXX	h؁*!*i
Έـ8Ω8bvAL	\fHA/.+8$̰0
aL!ɈXǸB`'ye2?AUY9:?A22=am#EnmZz	%L"b3"4B~oеbZ:t>7B;BDFB݂҇.xLktj_XԾ{k˸(-`1J<щtHC th0X{]gy|pb@GQ(Ƅ>h~_=@*ehdT[PK~׉;    PK  C:U            O   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndRegions$Builder.classJ@4~ETD/Ņ iz,)aХ[>"( >xq53|ϙ	:GuOzzS 
fYMa7$GS-%Truܱ}GrN
]at}
mO+#j튣H7OI?`wfl7<JƑ=O,'frb@Ҁ!Gt{:kt|rI_]|9gf~o{gE{i#ZFhO!h4Ɛ	7(Uv;J4?w`Zc4	czU
K 1 0sw)^&~~ȵ@q!rgGPKN    PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndRegions.classU]SI=(~k.a *%"OI38X?'VB-_/Ro'32@pnwO{s| F1
!21Þkqh;53VEWKӮpZUk逿Xn5O{su.ta<#`Pim
N?^Zcut^__箘xUPg<nTTp
aPp^ͪ8%9m)b8o"0L
ۡblj1*VP[k5[Qr;jV+ߩw3
YR"fmWQ.	XIɺ-F^@SЧ`}
+Wp@AnNBշcD2ߚ$|ۭ䷖ɘCM-i-Qn7iQB;`h{l>z-Q&3OUm=^&jN~$slǛ
:vc
{pVabKr659(pR$ͨ\UqWTҌIs]IT\SpCܤ{u''^n-t]+8n}%aU߷ɖ"ӟ	1|/SQ	G]}=UyB!c4[]зr?[GWqGdyDD$" ЁAGɌzn_\C̖[d	>I]C5+X1E&D&/p_8^`TNА/b"w#(]mh{Jcjp=_PKIo?  	  PK  C:U            R   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndSubregions$Builder.classTJ@=k1jZVEQA`A1Mǒ6B?BARP(qZٳgf}{~%X..0kIPL!})1]2|*vY-7*.,Gzɺqc!kzR'8rܚ^a4
ϷIw--"ZZۮ:^1<W齙OY9lXv\Tg%*.vMs`PE`￢Jn|L
&.{(c\>D1m}0sw=g+rwe,50a J`SV1

3\_u/:UN$hG? wgc"D8md4DlB@)>a	P10#	Ȇh0|Vq"PKlET    PK  C:U            J   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndSubregions.classV]S@=K )ADV@ u>҉>pF-#׋(nIё
Ry={l pC OC12	)W4<whEs2=Y[:sr{!Z-=!ߔN^0l+e3ŜSh+jjVAM&/hf)M|#)9\\k@Me
L[r&EE;$S453csG5<W58G74{kU}~ hި-Y#ݜeRf]cnjk[jO04{P}1X$,ሄZ$J80^N$ܾw-b3nsR,E</불IX9_?V;ߩ50ի{u$ws[%GZjZO?ν}Q#'0цa. 	CY1;'L_!$9/̅"(̀%]0#2NbX&bFeDqnpӕN[w&Mu9]tMOӟjk"/pZD4k	((M.BhlVJPoTb5Pv*|<hT0_iV'%x`y~'b#"rIH$I>3/Du+7*H0ַɂ$;q(^yz9}+Re{}v/$;7q2['>S-} 7ѝ-a&+M-OPK&  	  PK  C:U            A   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryOnly.classRJ@=֦tXDur1'L~Q7VD7.(qFS}p=wp?` Sr'@r`d9bX"CNY"*tp
}8?j"@&4WKkH.Kl_Z"llA$VpUd
rRvnbn~{lwD+B&|Zo\pO:ڟ):ұF,1jbym&M0aa\	;QS7|(wˮX#(Bj#ԪWΩ,Y{|o|Pq/>h¼E~ٱߐyj?`S]tHx^RVPKr    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/basetypes/CrlSeries.classQMO@}Hi)*zb`L	$M-֖	?1xG
q7y3egv	bFK?][$-.n kr4y#,,pK}Qj['.h<S[朗վ'i\<uisAN`EA\B-v-̶
390עހVl9tm-׹tD@tĐ3]G)
	Ѡ"AZiחI3oٰzG^4'
ʛUF3E;?*=V|ewHoP'2/P'l>bc	̌scPK0S_]  o  PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Duration.classURV	! @⤁5$)MC'@@h5>5[%<EڙNCf)3McAʲQb͜o?	e|@UШ@SФf`TB}pgs`0󶐠s"aI2jc0aZf0f	BgWmh e2F
Ӱ'$Hd77I)FI泺mXcekq3g&TE.D1HؔKzjPn[zH5Iɋu}Ku3I:tZd6TmD!bfj*o"+&H<fD:5cFY,heSU+o&vzN3G#%H!R"YgRD6bع!싑U='M?
_X#RNκ-h[Y#cm)'usv:X԰e`QǢ^AgeqAFHƀAC:ZdHM[DvhwS[J+Q=x%m1
+K)jZ8.ձe^)`Ak{i+t_~4=]&8[1pc~9cR__Vm.bFCЃ
8U0¢N!γ[qgs,q]VЅ{,7 e5`*HuxŇ,>f`TqXaŧ*Jt*;)t5,of/o&$6%nh|a}
҇=M{=_WIѯD.[Zz QFsҺ	dsxpSx*`
p`3	־s-POc3<Ed W
G+Xه*l`#1Mܢ%%kG/2Ȉt>1|*}:b_C	^W4 ~}I{pRP5SKXr3t34rDK=}wf^u A돑~k
c꼘>L9=Hඋq1-ZacD<IoF1{
}F)>[Fi?^j'4xDY`Zqc*=JUOmUOMUTꩯs=FTtoPKfb    PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EccCurvePoint.class;o>Ff
0F
h'F6̼;F׼Ԕ̼FtҼ⒜T<C}`?Cd[%E%f)%FIũ%ΥEe`+Xx8rϢ #H<A0Uk;F<PP  PKD׾      PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EccP256CurvePoint.classW*-U4	]mu7mmG&"ZE2my6mQ#~ΑX,Gssy\] p׃D#A
E=#@!۞ <N2tCn? @ Qdjjz$L*ff*2ZyLI7ZjM5,ZYfXԲk![TT[3q3G\Zh8@@guhTt:p="`y%J9u sp-X=2Uk;FfVLN\TfkԟVr)4S7]m2bpOabJZXދʜ7hah9)Ji]V[ցlvG
SCL̍33_YaX%SWmhqhGRC+>*Cjp|QBq䧜]c
ί.UWYžXp
q.uMӆ?k3JQZ1NIMX?ySRw2jpvNo> (b5ËNGu>GItzt*LY3gd4ʙ:! IJ>eaӲlиHVy[Z`"0iac"J0 aP=HpP!	%+ሄIORF7OaPfi\4=R?uo$YwcCYInJו)ij"2Y-LǆFrovHIoâr'}G+`(NlUnqztB7E֤76f7G]q6ZcAjSس@az.Iɦ3MozVv<)ne! .H2 l؁-2,<_
OsoF~2"L1MF/.ȸN\d%`0e=-J2Ԋ)̷"g\|3q&2o0BBx_aNKL^dU&4<,*l/wL~e&?ay&_cuY	*Ж'iZ!a(táQKJ~_4"$Il_~1w{?O>IRhO{t	Ew^ëсkx&Ex9+r%WDz`+x$/`v-:ܞe<YDf	k(2~f	X&z	i]hEϸv%e3>2E>\L`1V~Ay}7@f!~Au7i	Dihm=сQl_̹};q01ZƇ?gU*,x;;係
1{=8c؍
\G5p&M8
8v,#qv'v!coh]x7|F$EI/1ASH?XƻAg7AAb`xб8!ٽlZ.A}ȻSqvGF?Ez17,oE&
Pn~+a,UCB_WȺӽnt,CXVӨd\e[ox
,ߕqeb47Ob ;kj#D"'ʸJ(^f|x'N{EٳhNP5NGZPK
|z/  5  PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EccP384CurvePoint.classWSW-I$,Q+j>BFZ`D"Mes+nL6}ه}ONg(0K?kNsI(8NfϽs=w~߄-}a<+!o9#!?j%<\Ӱjjh;'5j2"Z>MvnK"MۢV\^
"޻TmPۖ9¢G:vb6,h&͑NG@t;#2HV,vc#Yݎghֲ)[zL#_SI~Yגfeifv1a9}9mIض4"}
CNް=ËZe1	1;MEKԵcVړCl-I9;GA+W J_VdR4xߙv/	L[:]2-I)$
!D2/93$UJlZQt3ǄJƱ9MycpqJfرYK^Gދ֨e_b9-Ɖi˜Y3r
tC<έMm^`!``Q-#&Yv!c]2vˈh*Mti#8B_9!-?
/SS\]&EgA[ꪐ,n4W ++ŻzYO0%;ER9=s}(ARbb:F7{{Hkt]έv\8]+1иP"PP*
" -䞬`
Q<RN+h³QCVPsl}^Hxy/FЇT\`EщQt8(+Q<\GE/LNǡX8,rcQb>{*(F%5GBu^o|5!耖W$MxU?8@zO:~z~v~Дsqک!%䗤m&dj3$&nagrGt
:͏.P>zvx-?,"w\-i]y9M:ioxc`.%kK
L;-ЮA˒ݚ'~:5sPӉY|0ϦEBZRCxch1fG锻BƜ01T3L>fP>T]yCyKc*KxJ*[}iteit;^)5|o~,Ƭ1M\3o`	ĂwCɛv'|ȿpQ^5<+=iM큶;p[5vgn`ҏPxwj.<gSp_9t3x۫^v푿qPK>I    PK  C:U            P   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP256Signature$Builder.classTk@~nk?vfuiGЁ(Z'(ÕQ2b"wA?Dahrpϛ=_x&üxPtxơ~A JbH
wןlau*U>܏x<w"D~(JG*n/vw-tO02h~
!ZzA(V7/Roa46%07#Pt@e`#˂eႅEٝmk34uN*E7	cM*?IA괵$͡ĿtF|G9ppAls7mFwlTp"Vl\=Q$q8q
,dE,
GX3h5譒Yaw5 ,yާ	
&eNPk~zzk/nL,/|=auLvJmpQ	PK%c  1  PK  C:U            H   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP256Signature.classURP]1XE%D/V2[ǧ4=v!Q'gTo/>Q>!t
>9+묳nۻ F1ف
`1w6;#1(Vy˟p['u\\#k\PX|iu9AUrjKU)YZ^,.Yn.է'
Om>#c85=mzftc~ժt:jIá&(q}|͢
rbرU_+͂mO׃Y>;X;G5$9YثNrp1 ]2!%|TL;'n)ب@SХ`
(Va`d#'lKO[{:]l"eyԈb0聦e"d`Hja%uXqc]<MfvgmݪXZ<Mxjj{0~ҬHw5%hgӳ_Ch؎6
I$d8d֠ #
;qTVf't0bNŨ=8b/0&ipF~dUTчQUhEA޵$,uktщhCJUTMYQ`bVHPN8od1㯀eJ"XeS3okE*wyhdo1d$BLpM ]ڥ@W@'I9;:O/H-B/[&K)bh3DꀎEqy.Z1ƈ-kml8xc{~:Snoo([Z*E
: PKu  a  PK  C:U            P   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP384Signature$Builder.classTjA=&]4~T&eQ-(bCBf[]-1|jĂCwBRYPtw`ݹg;
cX2k-K[d<@?'Ƒ`XZl};otAu"U<y4vzX^DJ*jz/vw|-tW 0h^!?J{_J/$CeN,AmJɇ!'5wO.Y,,,N3NfMsO?*ډ<84l{?Hc&!ikI]-fxlE.8ppAlX4ep2*ff6Jac6ݲq7iOI9/Hvȕ
D-ҏe[0fj[ilѩ;O0Y\crQu?Ndam2!TLEWG)s	f&1#
w֧̻ۄej/PK  :  PK  C:U            H   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP384Signature.class[S@KD.^^(hRj**cu|Jӵ
	&[F&>pFJ=xNA_n~{@]XǐH
xaݸ9R;n!Ryu>ʰEEG$	bVɩ5Fh4ȚLjfuyrsA>=Qxj~?l+.71s#Vť+50l!-OVoa/Y!CnE99ytf
x6C`S2z0˧|ǣ'VϨÞ%{!&G DKq3
_38ӎpf*[
+(ؠWF)04V[([S?O]̖=*(eb8J{C-K~E¦Qkƚ8+f˶o2zWm~M8jz0zYiwJgӳbPװ
Hp@CQJG4Q92cDQ;qBE?2*vcLUUI|J 2Ud Za)	~|ݚ-ݧwt蓅ҨOVMY!pbfHP5qHYi+pdM)LE%zqN
NF1wi]mTʱ!:O/]^6ǥ96K$pLDY:8;O1-<\ގxyry[{*'$TNJmint["/EqIJQ,PK'   a  PK  C:U            S   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EciesP256EncryptedKey$Builder.classTmkP=/QmnZU:EXc?6V}JKHnJŁ?%>Ȫ	<	9o 3$C<*QxTs`XpBaKQs\?ۨN=-ccs[|q,Pom:v$=ȯ׵]G
Yjc@ܕw'ϛ\
;{""Nvf݈!E2;Jجᒆ]e
ڛ(6;,^0XpV;숽%lЉI꣘گlI9a$ӷcۚ0I?0
YUfq@
L$U<rWesXё=yt\}JYAcEhyv+rΤ$ʆ2`v=: ]u1\u%ԢR3J+X#<!Ԍʨta}GWVGhj5.j)G=q~LU'x"PKCO    PK  C:U            K   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EciesP256EncryptedKey.classU]SP=XAďPT "ZkZEt%MhMj2'B?Jݛcvf&{ٽg7>ƝnHH4]siRlf`:_-q_c!I,$C/kWwrOiW­Ae~hjQ3jXtS:/e2XvAYeS_5-rUsI5=2u+劔&oT-;:qm,PUef7]M$XV
Q
ąN9Z;jJח$
_N`!q_cX/<W}%Yk+$WB	$J0V'ɿ;XG-<IG[5]D<j)hVp%vKRؘ9/.d+SC[Q{05[0<lo.dzG쯚}E)p 0Aac40'qJƄQ0gQ{Ɣ0gqeŌc8s
3'.L21CߤP&6Mn'p/j%t_<1LZZ
= *L]:
TqY9ye|o!~=?|E5/Won"U6ptUp
z:cb bq
6q$;H|VbHm($IQOʪ~vHK@Sy(io{C$7q"CYH]&mTqRװ[S61f|L~:x= PK\-fD    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Elevation.classRJ#A=3I'i3u3$H D==ݒ."n&n\Qbݶb*ι[[ kXdH
R
#Um`ۉ|cPy]rWJYTʛ"s)CɶPn3T>{\?*WHf(KsP}%٪1L34ӷb]]ey_[X#샸O?hK[J6|}-=TSM$L|AN9`D,g0WQ1	Q3
/hzK:5Z)028oH
d埘a&$KFbIZg
o|Л^$
hP̯Ey5Fz@SznTu!NyPK>X  D  PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/basetypes/EncryptionKey.classU[OA@7DQ+IY\vvK0'&IRlȥb63g|̞~+X$?OreڰgVr+Mn:gh喞+föx!Μgk'}~m%Y ˩
;W̒iX[i#U'ZxahCTS2j4yF3gs&:w0t%ae3s;QSvҋwLjykBM.M"3ZGղ9g%p>ۇp6ϩW
L)-ϝbi^&m-z36
آ]`$KpJi	(vt,xnh3vxWX0޻K:v%B
GVXGcG ^;V/#ދ4! b}Y'P<u~I֞EfhOF2zq^hd &4EQ]{c2NRQL
q9\aW!{C"M!n0!:
FӜxv*%?eW&(
DL}=~EVEb4UB,~ҀA+P ZRm5UPb%4DF:cXey^Lh"=Orqw``mk̆Yʘ+^w?:'evEdw7=]U0D~rz
R0M1>qubQ*e<`\U2Ua4f=fzuwJ}kA*HTPK&s2    PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/basetypes/GeographicRegion.classVSU@6KZ+Z$$m*RZb
P@Bgeu
#:Ag3td/>Gl65&!ٳ~sw?%inJZI)ɑc<t-CH8fXduaZ#Y-k
/	;a#ax"oKVN8m\mܰ趕U((]uҶ-Lݞ/4|3C=@`9歒eDAB-ږ[r]C/z3gVk8RZ)r5xkp(hW,!9׻mEEQK5v	wFkkneȈOK
cu;T KlrJ{_hQ@sy
c˳v"["t	1(㸌!2N8)Ed$c
`RYp7o⚄rcRph<݌M杌Ig}4bMW{"Yl=s	%lmx[h7;Bx,lO\Gd|ѾDgt|վ_3ꌦ{)#S4gXTCnT)Uq}n{]7\esM6Hs`lb6em6l*DZA+
MYRp
.`ME#;Cԗr(o(x]=g	П	<zBuţuYu+?	B}9F_hlb)"r '_cXև~H,݋}>"'X
"ÏGZm>e1ޠ<f@	dS蒑iGiZk'H+G2"}ɹVz(-Vp=FśfĘ3ߐįH#cAR
)j|60@Of|O@xEwt{4ؿ,30H
PKV  d  PK  C:U            O   org/bouncycastle/oer/its/ieee1609dot2/basetypes/GroupLinkageValue$Builder.classSk@n[5-]sZusե䬈 !O(!eJaZq%+`e}_>{? <cYzȐsD^^SP2xJd?<AJ|/#vO
[C%DE-OIub?24dK)ϟD)oDL2vQi~Б1Cy+U~q,	C,ehTyk,ͽCh/M%ÎSkNy{g&鳦X0p¢s`:XaV[cV(wL((⮉%7ۚ&q85sQ2D$Тlqy0]ȹT>C?LWKCpk_t!Xe	힣xT bs\l)yIϱtQagHE$,\~PKV  x  PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2/basetypes/GroupLinkageValue.classTQSW.Id]
b[[Y@ P%P(vbd|$z7ݽaOtS־dXrν|wι{W 0	=I\`eŶ}d2/7'y ;^Zzu0/&y-.j?5N5,P:tΐ6E'Qݤd'A,@Û"Ynh~`
_OV`V%M
Mg˱=G4F9rE7K~а~KԶkN(=n;םG)͓QݤDSVu25[ +C(Qk
'b\u_.U'rCNේ%W<s<je9fVÏQ3J_0pݢ]G%:gpq
h8aR9
ja4Pg3{K}HOL?v6-qwP9ے^tB
02Ot]709*14$$ j10Z]6p
Wj̧5euLᆎX1,븄ϕRtN/G_(
5O=S{vi>R͢iCWi5O)J=B5k]'~*l?\le
6ȎIiHkT:`G?F~BerrHM/[/q
F+j%V`L9Ku1=5Dj"
b!ʰe`OHZޱ(kwpwr1dP}0`E+.c+y41dw(W
[7RY? =2> APK z0r    PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashAlgorithm.classT]OA=CҲ"ZE\Z
Uj$6Net~Ф%?x-J,!w3Μ{; xn1Xrunx67RoR/7i
1huEQnq$\vSȴJҐW]a谜:dY>\X8=Q;}E3}1mEhLHYsd9Qd议qXfڑTg%84+ms׉˙x.BPE
(tuKeBrWÂp5,fhɝ=sJMOLNՌ$JkUx5/:
/U4ǰ_b)Cw$w#i'8.FQK0rJ4}F`ܱ6sa/Yg/%yih-
nⶆnhЦʽv*wH]
^+>!C1>#G xࡂI?WP0姈1

& N?|N}ɍ/xotTilS
	FlX@5
sz_lj#uJ7ޡ-wt";JO1҄zK	';TR{XO>Ev]\(c
澜"{ӯD}##klՙU_PK    PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId.classuROAR((EQ;(icBD"Dyq{ݴg$W|ק>hhb|?8{̷||`re+b^!^k`)P^mh>P9&C$L]'(*^0$;Bn< Ãnc Ď8m>?{k/lyKǵ6|({tŃ^hޫg-r][
ٔ0\?Ao92!Dʍ'WRE{ΝHCܑΡАpZä)
y
S1L>:%b_j:&ґӑDDBqi$tC9ΧPD)XJcF\P,Ә%zGwiJn?yX"zA78b#EViU@> cp0?@AtL˓g;Tf81c&g>VVY4̘uEɯkcC&
sBWwT0,F6e)ZeCYpi<GRGJͧ0PK%%.  L  PK  C:U            @   org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId10.classQ]OA=]Zb)~jLa`	T!)1!<,l)>I@^xGJėy83ܹgΝS Qf({S+ǉL`gbR]+!Cbh+Trƾ$rd#Ew 

nR,ҍa|z.J2 <e8
ER"~01?2D<!"oe!DNj4?מ(F[uLLL̘2,z/
(T~7Qo>d0aTQ櫘UX0YiFSiJ_R]XXV|[˧uj'ݝgǸ~Q4΁}G	DMqvr=e{	7pw{W?p{ƿKPKjG    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId3.classQMo@}k8qnր"hdVHDJC*=r]:NpJ-\85TKyz3 Pb(4[[3̓X)̔1uaPdN:2UκiΑx-x"dĻIBH6G+ٛ*N%ýtq?=8JL`K}F6KicڏwT=Hݐ&fLMX&fMTޟ~[kcO=kF\a",᪅ysfa
6ziZ(=':`=/C
wΊP=";:ðq0L&(k΅](aOܯqnNak	\*P5'PKe!    PK  C:U            @   org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId32.classQNA=]Zb)+Ĥ]c5$`LlRƄ4{,Mw0S|IP_|Y%`K<{3	p(2ͽ-V5Xj٩TGfJȀJ:/}'*gCE^:Ox'I( :|KR={P_ũd"2"S	qlA,#4xLDGT/2R>eDa'dx|ն	%)eF޼m5c1W=mF\aI\0y3ᆅ*lܟiD~BU ˵4њ>zwWrRu>rYv>]3`0ah}UU?~=r~XхbAwU PKy    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId8.classQ]OA=]ZB)~vykiM}(1!<,l)>IP_xG	HЄy83ܹgΝ OQd(4{3Xs̔1tai_dN:2UNǊ4{@<2$H$[IC@Ca:`L%E&[|ku>PXFkRXe<&G0U/2R!eDa7doiČ	Ĝ2r?ּ@򚽩ZUO+ÄQF7rX,cKba9ܴPE݂4޾'{:YE\Kq[''T1ȎN1ո v:&JGRs	#5+ֿ`w{W?p{&WU
8PK#    PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Hostname.class]OAn.GEQ>C
1h#h5H.XvIw /jJbLwM8sgw=m
?cBSajb_ի R"SUWm?h2>0="
*IVyؓ	.^lmX?.ƞ=?HB澊/<X}!"diljwmW4`0
^#["hد0Q^=Y>^&Ia<P|4:Ȥv8êYHYb\g:,dp=7LqӄeRv0͐y(֕>ђ'Hw)RN*Qts}gGwK	30v|"Cަp
iʀ7Oȹt?O0Buz۹K1eSxЪvz&Sutq'PKG    PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/basetypes/IValue.classS]oA=G",R
U)l-1I5} ӄa;[];_4?J6$w{9w;
(AT!{d9B0o2^s|NDDCp3q	Vh6uLf̤gvpu
g-t;}Rs83GycRkenq_c.Azmi.leN}w+j[ꉪpoRy'DD+P	2ڔ=A[%X,Տ'U9l<dLvFNPKs<
ȣ	V~ճj/QXU&bWT(pI*ErǐDA܎!1eknpj{N;if(DJͥBHvqrODu kk_Q:ǹR#C,4SVh2Oc2]$#dTV$@T0O78Ĳh?k"!IN&/1eH]2(JqmN!M	<APKdL!1    PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/basetypes/IdentifiedRegion.classU[sTNG*\8)iEMJKҋ`ȥCUO+yl9Cyb 3C?
ؕn&	~О=~gwE˯ a1,xrS`pѲ- נQ.KHJs*HSv.Kr=_|]M$gvy^6c$@
\u12JV11JFMF[^2lSϔJ4JɊY{L/z'@YbU*ʊ@ԩzJ(l[QdvuU>V^LYl%;p[-)ܕ׊{IUneUOun97x4qѝ'a)ە`ux+Vǖkm':̓O,>#
FW0
^VpJ+
L.xv)\]~ؑ{,9tcJa3vugc!yYX}gЭ}[lǷx
3],"KrnĹ/! =I$a=A!\Ak8Y5"k4ˬͳ

a\a&,
7UL!,,nXbi-wXdT "wU=q,Ēf@)қN9_7Y(|b7=$чpJRS~*6;Jv͞wn!I~B8a}؈?Jď?MQO|wX؟ŝa&wqO!1~뾕,ݷx.r8kAw{
|Fr
;J(aT~'(OAD6-tcBX	cxSs&"zOD8&.ϒjҏQ42C[@@\պ?}	?ǡ]䘁a
|D_PKl  
  PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/basetypes/KnownLatitude.classQ[/AnJ)uièCEq&kYNIQ/*$?J	$2w.s	<	Al\%H\n@2pX)ҪNaqQⶐuoש'q΋K'Upټ(3Ɖ}O(ouqt#Ng&OC?#z"5&\zP=,KP[6WER{V)]1@V&d7aWM_/>U9cZR4DAti%*ʨ]6o;[_xDgM*ĳ!n3wȶ1I1TtHW>Qv~qe"ؾ`iuuXiPKhj    PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/basetypes/KnownLongitude.classQMK1}iknoH=Ċ(R)'A<fװnM^(^<Ĥ.^L޼I&oO 1C(	e q-BɄ	jwm-:A[.eS28/o="~E}Rs^^Y\;
uXutWWϗSd_)L!E0^(&EL~F
_#F"
&<zԹ++?_CXXH 3K8M1ݰ	yL.~+3JsfBV6vy%W1iu1qchc4^b'p.aODseYDY
3#]wHxw> PKrX|    PK  C:U            :   org/bouncycastle/oer/its/ieee1609dot2/basetypes/LaId.classOPǿw)_q HW2$f#ƄtWnj#0uDn
b 69s b)<CY~kV̭ժ{'0Td8v0kA,yPQTkY)d0|__GI/HVKiRCKaRFsXqP7^V; ʆe{?zEd{2=!Deiv(<Ĺ|{9#/C%UzriaPÐXWNM}ˬ_ix,_B1ζvYNϯ}@3F@F=*5E&i@ǭ,191U*c긁;tƞtJs;_7L1Jà@^|jKJQ)X,B])'.kŽ6*]$KjK	REyŏX?PlY?Fq:b:b)(M#PN*ϰN>!wA<b*@J˨#<huQdB%co*]
PKE:T  6  PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Latitude.classQMO1}EvYDQrG0?.ăcwmU%l1/"F(c/dfu:|zYhP#m+^ gsX%PoyQ^TKoI]Ps^Z]82Xm+ZR~Uד>w#G /T.
L\]	+LG?%"u9غ(%W" HP.e` C:QnLr:t+站NXYuIӡVDIK1fw0ye(#^`TgC\3v0ѣhR4RVdNd3ߠ!aBkH?C;31AM݋g
F4PK@z    PK  C:U            A   org/bouncycastle/oer/its/ieee1609dot2/basetypes/LinkageSeed.classS]OA=S(KBXdU"!15PH5&2,,dw _Z"	(ζ!܏sswﯧ ܏A,n15)y'3m0
ĒeCU`&C6)d0ˏ7|__}w8^0Lmz!&~!eR7~wBv=<cA^(ow#/j2ag*`lOƶ'(,>	]籐F1u}(=^"ޠeezyM!aXÈkfۍUo%*tnX+q^]})VA3Ї@?*R榁neǌ11Ycsʘ:)?
w$w7bCNR.Q=HZ(N?`c[9ւ*ŏId`0FD~;h=)J_p[(Ё,K~ wOdO߲q&kҔHzSFȫ
iD:;[
½6
PKh#K  +  PK  C:U            B   org/bouncycastle/oer/its/ieee1609dot2/basetypes/LinkageValue.classQJ@=Skcc#X
i\Q$"Bj!Z&~Q7*
~8"t`;3s8O7w 0Iz~ @t\nH2qʞ2"SFngo 3aӧDx-E)DUv
`E6L,~|Iрs^X[rVYe#Z
1>p

.
Y.ֹwR"΄O#I7/@'c ^ÀVr:LX̍}Qvɼm؋ebJ!
ī$&VqLU:T8WHqG~鏼N+}oLK	30<<Gs<ºy\cWmvDB2,PKzÁ    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Longitude.classQMO1}N$lHIrArpJGT)9P!qt6ͦvEziPPpBU/ zߛ xϐ}0?2P;3>C+!=b(݉uZ
#w¡FՀe5""G"D
b
aWom[n(0,ꭾL&RiČaz	c*2N<լOQОr5d0c2Ǹ,fm1gܼ
^ٰҸ̽t8&:BUl3]EKfu̻,Hwm_nNJ)▻yXZR6ut\qoa]5vPu^c6N.^N8e/PKfI    PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/basetypes/NinetyDegreeInt.classTmSW~nxM\(RkZ4T U0h ̠,׸܍7X~J;%NQnvi9Ϟs9=&
I,0MdML31U(g.,h;7=>ٽxz/}5[MIW<wCr-Bd-<h}׸ppkA <XR\?yP2K2VzT!"j\ؒ+җB+	aR2Tv]䢂qi";+vt5:=@<ewvVyGc)J	E*v}!DJ&:I_SDD(5bW.x'W}|"g4\Q:Θ~h
00p|qVR||٨2T(W$ݨc{GOĨݙFxtퟹ3Ariý\p_ZS,Z_i6f0Xg-}E
~|E55sd!a5\74\4&rbJ4-̇+t=ɛwy=/M2I-a5Éв`$L
>@}6~؄~tJ1M2dNߗ^oAXeo#=m\}K+{)ͤ
EZ3mfvd^YkxӔ#df6p|.
OZq@g;7F~yڨm=XOVJ+X۰u6w84
 kc%*	$J»^PK    PK  C:U            H   org/bouncycastle/oer/its/ieee1609dot2/basetypes/OneEightyDegreeInt.classSmSG~8ؽeE1,9_DEIr*,K!UsdY]f/s~JRg|ɇ$={[H.{~g?~	40MLX&FMdT3+XU6usޏBi*GmPOģ(6RB5dbWΞxʷqx(VWb_TKc
o1R@$&Ÿ-fb)jYA"J\X9MP&9x+4nۀ&$y"Tֽ۫
ޜS+QbxJPQ:5^BmDH^*5?NP[4T-9
jZ"Կ՝ٕ8n-cN1\>lsW?WU2ӯiRU޹3k##^ ]$)z},'o9'pi
okxG86ႍ38j6R	eLik}j
wMìIha»hu
txgxoFe"Ekk=-	FeE;w;ziS>%BA-vjHM}Ǌ:~YGQ
:.SmӾB֫v9x/F=nuN΢KYjVft%WP^s_ﰝ}EaXżAV71<WF
ۃ6:nd~!of~_/tO PK3Nq5  a  PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point256$Builder.classO@ǿ6JSQ@e::D12d	hu.8w3]iHE3z^]&HإW){} OK.|V5l-iDiJ,\Lݥۦs)	A蹍ÛQ
f.n<~ՔLn!,`K@.
*>0}tҩjoXHPHV}%X(j뿩N@>320n00a m$X<ʀ9{*TZ)T	VҰ҈N,_%ЈTocFFmY82:$@t9`41ü)\2e9\5ճ
&B`zbVsL)JW8OԸrr |, N+9{u4P< 0\j #[/wq_qz{܌^:'B;oŎJ}(=h^Uֳ՝=],[**OE*#PK清>	    PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point256.classTRG=#	VZ%_H+ljG	ql+ʕ4VȅS~Tň
e'~!ܣSRuv9}{v7 F$a\e!O<Yg]][0(y
puS=pEEg_D;OrϬXn8/YZT+]a{.C+̼WqՂΙks[n+ZyJG50LvHyYQ8.<:X{3M[9[]D[>]=[wzk`!9>I-a{#{Nz7Sz*;<=R>OA
>SpIafoM7/$:(']!%m"މ֑PَgIwqQ'CɃ-~Ӯ0<nk]JkH3=4Ք4I
*ƌ 9iR*aAu̫qK;*pSIǢJ*&0OƳl+[e\79}Ya~A^E?TKA)"
zz F
wǈ&_#\
jX{3A7d̼D-!NVPALN E s{Z<!$y2Z/b8
/vh #PW4F1T3OjQ-b/6Al8Fb95gt!>ZGh2=RJŶVszGh.(ygkj K#LjbJ~5" PKiK  ~  PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point384$Builder.classO@ǿePN?)1&KDvy5qJ̌$ _u!繦>_XO0^k=<υ[ծq̺f̙OP+.{hn5vyS8#&)B<|T\m8JҐs^t[$Ww\#'
-V;acP
۴5xcI/:ﮅ	I6o?J06iejiJ敆3ؖN|'8N1s^yi4
~3j,93b̘Λݥ1k̜)\⪍c:<}	<h3)DAGNrL/-첉1rzy)쀴O0_?<.]>z>7t]*?`xՅ_U4.9ԌGÍ"2?PKϏ    PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point384.classTRA=6YTBP]рM5eJ}$cju">>XƒRT9}L3È?X<]BY)۵y%W/1+</xA2w\\ۊ\]_Xn|F0D2O߯Y'st,h-gT,/qW,=!ꕊf+JMw'̙̍7C[[JHyQ"ia5h~&%is'N-xbY>e<'	:<lXHWxRd9E
Þ}=DRUuǓgZ^UЫ`>
v*إ`Ŏb[z#*o^,!Yo5Qc:BJxfi#m! |+%mj`!L,֫pҰG5fBti-caDz1iF58.AL8* B)iΩIiHR1J*ATxgs^^v]^s,+|W^E?@TK^L"	i=D~qYál_6ǂ2fÔ1o(ٝ^Dd;}4>j4du{}
5i-ZȢtezjzPjx+ѻh*.uZ/=7h]RJ0][޿l'%O&Lka8[&U*+PK-O/8  t  PK  C:U            M   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PolygonalRegion$Builder.classTj@=Ƥn֟VdK BR{5!eH&쥷/Z|(T^-|3g~'0z;7,-6̗iyoIY.ta!/ĶDe\I2瀿Y<o>)Rl9
fB)UҥG*OdQ7⺐"P"B;cU\F`,*=29Mpˀm,_JamM;d$%͖]yn5r-;m17s}4R@YLLcԉ{r٘i\,W6Nᒉy\0ku7,Ա2`-5`?2$Zh9<	)'dpF{XY\&vɬSQ4'_ְ;<Aš}^ֈՠEq= PKLP    PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PolygonalRegion.classUR@Ѵ%G)XD
:xK
ʣꌣ7^0>ٶR(ؙf~;9g 0Pa~}pdr,9LYY˜'g2y˶/B&_r'M׵t~&4OW
XRx\C͜lsR$qm[<Au9R&^s85`ntZvȻܼ
ϴOIc	!z{23/ҢI^ʺDb`; Cۭegen˰5Ug^aH|V˭9܌5o9[:k5Tk8FC:
a
"Njq2` Ǉ!Vഹ5W-Hn5Ro(:V+F
9[[՝ڋ87u/[H˳Z)UsmSQqD8s:p^b:NSG ]:[:4pI-!@ZgW@s
p&Ƭq34/P<t/Nf?M-􄕿
Δ~$'hX-s
1WP襧))l
	M1޹H0FM]Go]%BqZbupFCF'"R.F{_]6!	030;[fԪ"z\a7CFtEvɐUAePK!w    PK  C:U            :   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Psid.classSmOP~.t`:Č
	dk)v-?1GDė/~GLd4yν=y{N V0$C$/p!Pfda셒{5m;t1:rE/y[.lRxWMdrzeO
[Y?j5JWX<ӝW31U5ɰrGˏ\<)Bthg1PUa؁Cqx/k5WeHh+hkHhՠkcڼhC:y֎.)sA!3=*,eߦNU-]{^jWGI5L븎!È(ìǑn'0	qGp+AEsNO%oUW K)妲t0E(t|EN!sfVG`b]俙BV`(鐆F
f2Ղ	N8nTH+SVXߑ?:Ab9k*JRPK2&=C  
  PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSsp$Builder.classSJ@=k/mzWQDQOBBA1Mǲ%&!>+
GE0;{朝a>6ʕ@D:28[>5l7'P}ӰMc\d1Znϱ|CʐD{sv=e*
)cLv3r'6IO44"/^ĝPӐԐҐ8:9I~_ZȒ7j+\Ήxi4k]JǋbV_ҡaJG:& BS gB:K۶I@pk)l2>p'SFyn&TuGC`2:UT}d04$PF@uu$CFXBV PKB.}  >  PK  C:U            =   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSsp.classU[sD6v*GU0u/PR[#Ԅ8!Cnxxg":Ώfh!-/<𣀳2	/g~;W L^sD5NPz[
3'-+Km>KGS'\UC<:	^QAں
+[<6a/?6='¦S
JloP->yK(d(DqөG{Rd8TЏ^= ѨhV/⽵$/`"tJ>P"Gb|rF'z+ fIUh9>mҫ2<>wi4#xCHIEӭ$,C̪Hz=BM:7UԭQox)9
1pafy˯lxtRDwĺ*a?b:q1%kI eK@bYB,[>n堖}	2\۴Ȩq}'e=Z<)˽=td-\pW-afaE-d18zwCIGPGZ̘&.b{c-nOL\,&1GG35!a$Nߨ<u_Q	0v9:!55ko33$ƔT iXP˱m,K|_iP)h՗1n9(5tLu\LS$֋(-dwQ;b[lkp;g.kXJ4zQ NѪ}?ҽ>{\wD
Żpki&$MZǩ
PKŮ;d\    PK  C:U            J   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSspRange$Builder.classTJ@=[l{^*"ERiHJIJ6
)T
 ?J|i,fϜ9; mv!t](osʐ\w0wq!^ӟtN\!gZz4+]8uYGh|pj9ZYynpy/i!gztFGD?YUD7 Ib8RxĞJ>x;DQo<Gsօ	x]@!<va
H(PTs5aı%HɈbYF+4ბ/XUmh.u!%MG;Ehm.щ;܇A\xC HVշ>`H|Tm#ZZka}D> @]!6b%I$M[!3deq&¿PKK    PK  C:U            B   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSspRange.classU[S@SbZ"XjD@h*ELǧ];ј&ug22*RϦX/gsvf( I8Ҟ|ȰkҰwAU}e]^;y[yv<l?0.r7m9N5m!I8H[tBm?㔖tH iuB']3i_K&/f\<㖛z%װ-A\rvʿkrMwa-;vAϙD=y=$SύdkLjiݗBjiY7F[B؅rW%hJMvbQڙ1lD/yyŌPAеE35^p	HJ+aH806I"	+mF71
"MǶnBEg;68'ZqWMQMv@PJլ 
N{[+εoR.7MUqZA;t	1PS6uImۖRpOA7BVЃ3+* BhB\Pb"⒌>LǸ	qYI'pEFW&$dH8=.GI[/{	p7w}q:BN.D*Q#$GAi5ճ|xƔO ~
fߢw
}5[Ajs!{Zz]u6E'KBDA`b"a_yȲ
5D*nVq{-7( !#^gG`V88Y;.kV1 8X# _Él'L/W1VlL z~PK|g|";    PK  C:U            Q   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicEncryptionKey$Builder.classJ@mzG/j(ZD xKIl<൏P)( >8	ԋfav&;ﰳ_o ̐(]3)䗭e'!|W}}ܝ~kn77$C
l7tOZ\sLi&|sgc-{\.PV[U!톫!Y/.W-u+</+I)ڎo06+S6pZZԧ%8~OD~B
V
c*2W1|TYLgbA6D9BնXq+K`B4'4E̽ xP! P(LJ&$w76Aژ`'slQPKg    PK  C:U            I   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicEncryptionKey.class[S@K1"o%E#W@,ZAe&L!mMlWWFۋ~(l ӗ~{l??~0lc$3aϰmvmqAUl}~Vn'%Ox#ۋ\d@X{mu'ijs,2즥Y)=`fTJ;E'sp,hd-'+%y^2*np
a#mq^9tzbmU-):mmY*}=a;556|O9+Z1E_
m,)eSOlVoq!V-;U4~޷KH^
+t*ءKNt+͐kcfS,zs.)|-ɗ)8\OP\G0/<~s6m;F[ok/zN0|lpclWM)Z[ٖTۼR%Ѓ
}8mpTC	
RbHNp:8eQgUcTTEpI%y	)9*DYF}޴rڱH)[VhL@e4YӨ8E1C~RDh1cBz@0RΓFC
Sp
:/q|@z	%!
W z~Q*m


(N%:
п"G2Y}	SY`+(N@]4JBaׁdoQnlD2lTj%L1c	 :.ZxJc쿁oPK7c<n4  	  PK  C:U            S   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicVerificationKey$Builder.class͔jA6fMjۤ~4fs֢Ts64P(^m&c̖I1oP♐F!ZDp|osΙ= Qdt
	Uӏ	ф	%9	_zH+"Zr_P=]wCQY[_|0=؈JtyKڀIV2ܾ{vs_pχQkŻ܏u <?V%Yugk:PByRǞB6=jzk{XtZ"舫R6a,,-ZȰq>ml-MS#l)	qjc;
68vw_KV9~0w\2?EJ!,\Ja̘	c.'ܰ62X-kXoSE)%JǱB-7A#ҧ~lB@H=~yNL_ 1n<r#@!`cl`w@.`i ,Q|uO+pGnW2q&ֹd#.YEʰ7PK  ?  PK  C:U            K   org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicVerificationKey.classVmSU~ lS"XSZJشnC)[!Ҵ 5ַnw3F~8ӒQ9<?~bPB$5ou	sc$Hd7U%ȥeG&+2aa}c3,vaڬkz}M 2I;~`8<bϽcaN^l\e:bSB\kFeŕ0b9mВ4ƆۆS-*=UjO1E$xSYhgt^rki~`>iG~ !~E;q{pt+uKrzEY3Mymk9:ɑ;*>\>;mv_'\g=k
V#tBb#cHƫ2e8)㔌2xM(uji-%[ܤZ"HjOX*E&pNBXө[{i,Ep[\'apӏzyי$Gܵ]-ppvQE1\Rq=*zQqY{SE?t2*^4kWvM fYzX`
6wY,xO.;,W0>P0BY9iܦ{vͺen
GxY}{50̯_8GTp}88I	M7h'itaB
$?(aMhuFv\T-=-5m<`S	2jYo`bC6
L{Xc "Rh2U8aH')$3j@+F(!+f7L_'f 7BU1g_}ږ<G{:[NT,5A2l17KDHS֠Γ/e1t'p{=uL0
Lau|F~>M{bPKRN  
  PK  C:U            O   org/bouncycastle/oer/its/ieee1609dot2/basetypes/RectangularRegion$Builder.classRMK@}k1iY?ZQAVQxܦKd7JO RPIh^$͛z %Lqah<]f(ZԄyЌ|DӓCqǧ[~Cy3}6r}H:V'^iHԹu+ӧD55A
2؄9g2G<M
d
0~/5e8*WXLTt<Taf ,6&F0I9LY1`ȆW@+%	?@(J,XLM{Km>#^wғ	`^1Sz BXﰯJ/DBs]"Yjk7PKs    PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2/basetypes/RectangularRegion.class[SP-"(QhS4`Pg:PSJ0$"ɯ3Bo/>=#{g&g CxҀzo$*yQ2-f;|}χ]ȭkÃg
\,W!HwӶ#+*ΧeN3mRRkURp
nz
öv
Z.ZW9"\]k@KVYRB;.IWKd:X4$ilhp5s>p$oA-\Z6KSESwfy\aԌkzxr,E]V4zRK{bvdPܽ67	[cX
(hTpVAs
+hVpAAi3F&*-*\G"~!D4XJEݭ9.GkUfNיST+oQwaX8^I#!Ut颣AEiZ	4ׂ[^]'Qib~pS[\@ m4	$
SzøK_φoˏwʲ3n]ƴsϧ9960\2KiҪsȎ];)6%Wcmb=#
gHUuи˙fV56ծ QRh[)P!3Z;oE
;vʨxP
q
T	i:mg/F݃mOJN:t	c?[i)аL	j	Z;	
PK:    PK  C:U            Q   org/bouncycastle/oer/its/ieee1609dot2/basetypes/RegionAndSubregions$Builder.classSJ@=c1j}?\ԺTEEGe^KL4kBQmڊj3pL3d?^ `F /tm
zr[OBۏH]Z7Yd</	_2m/έcLGth)^eӶW_۠2"\K@
dH]v}Oik%sЪI:ttq`)!ڲgf[%m,uOƴ_:z
h3Q!=a`D@yHƞ˖R0<X-B,s&cW:U?tc -c~F1@ 
<[a
Fh29<'I$>PKW< ӊ  }  PK  C:U            I   org/bouncycastle/oer/its/ieee1609dot2/basetypes/RegionAndSubregions.classURP]BC; x+E,Ap8)mhL09eG|pF${{s 1ӌ&HkQ%_":^2w<دyO10@X^<#b4{K28[4`yf-Zc%t^_*஘|U"|痌WvK+7MLz-xE+P֨J.mkHZM -J{bK9O\.z[K<0*gxfnjٮH0\-Ŝ9xί6HT6lЩMx[؋r[x
Zh
ZPЦࠂC
Vpa|a5IXy49ų·҈Iw3&몄m8}(=C|#ItNcte{ɾpבMّ\ԾUHqp4C("ҜЌrԫA%
'qYHCWWсA]Pq
פ溊nV=nҿr*NxE4u?XAk
XNIT_.&ziS4$D|1G|d1UC57$0	к\;[oz*	0%C*U``

U+cXe?Do?`l9N71RuG+1*ĨnSnr[[4_m
񜾊+̖SұQ:8d$ñ/Ed\TFˮbz$h^C"ɪt PKYD:  	  PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/basetypes/RegionInterface.class-;
1Ӻ"^5d!y
5s>KuOAsTj_9LA
*ɚ$x+6lreL%50[9,0PK}Ipm   s   PK  C:U            Q   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId3$Builder.classS]o0=>B:`Q )KH(Ӥ贇ImOnc'@ gH(u
(-|sv
=4Ƣ)ʔ]ann&lYHEj0/һ5-e,DT:|i]Fp-.hQjJբp_>]ˬc,+)H{%
ߔKusשL>9*MYxz=Ly<0MNZ0@˭pP跂\k:XgIM껻|Go^vZ{~Gwy,R90Ub.t
W|py
qV`o)=`-diPiI*8K99!=6CǵOb+xx?`RC25=ԶVLOq@'PKH    PK  C:U            I   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId3.classUVIEF83*7Che 5M
}.5v;)~f֚_a~daSIHWTSU'Sg?}`b	۱IH^rD$C-i7dV23bNFktVƉCXO%=%yI!Z,9{-o5ځDR|3JΚS'Vflofe&][+dPY;}uTн7j>23
IrPjOm;xƕiiK)GΎ[npL_+/oeH|mVXnKa_؁J5<sײJf8Z8srqstptr袰ݤ#75Q}T1>I|"cV8KfU{}܂8vкfb}
_
;@{cZ8kq~{)w*O$պ]~=
3[#T=]ܗkt9	1
`:4t tVʌuQXQ8N WpIqY)Lk0xNbBMƤ2WAR~ȄEO=8KdKz4y>+^U=DKo;j4i m^Z8C{9FcfcIch
7Ƶ?>ŀ(HJ|Wq}v
nΝ^kt6fq'|2< ۅ'R1T/'"8W^и4/"/!FUSh<a|@5MD?h@tXíUY7Lky#N8B+p
p
ֵEmxuBO)F2'8@E3PKS&c  t  PK  C:U            Q   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId8$Builder.classS]o0=>B:`Q )(Ӥ贇ImOnc'@ gH(u
(-|sv
]4Ƣ)ʔ]ann&lYHEj0/5-e,DT:|i]Fp-.hQjJբp_>]ˬc,+){H{%
ߔKusשL>9*MYxz=Ly<0MNZ0@˭pP跂\k:XgIM껻|Go^vZ{~Gwy,R90Ub.t
W|py
qV`o)=`-diPiI*8K99!=6CǵOb+xx?`RC25=ԶVLOq@'PKntԱ    PK  C:U            I   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId8.classUVIEF87Che0ǌ4^Jtw\çƵT@.}a~dSIHYQIVNUO}QS2;beG9O2Dͺ޲vsNf5# +M;#tj~dɸHge8e1tZch^5H+iMN:~ ˿me'v֜<:kxn6+3:Z'*bt)쫣"Q釔woHJR{jܬ`&0L;M[J92vvrsfZ2X}"},Ckc.<r}X/o5%p짪Qmd8sV2ph8q(G&]Z)k
Y6M&wGګK|Ǳ6S7o0VR[:j\swrǨjjTKRx-)OWWhg(|Ҿ]qMh ӡ!1CǰTfD8Gge"₆k8^5%ehǯNaF#ܴě&؄nL)s$L8Zdѓ#DV7As*Gs-uqCt[6OcV!Ҷ饅34Mc4hl6֐4qGQߧ)&N,᷹}sf71!}_cplB_H0GSDEq5qi!_XE;QBx34Ѳ蒱kϳ|9oBF.	pVW
p
ֵ%mx
Bxk-F2!8@B?PK@c  t  PK  C:U            P   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfIdentifiedRegion.classTNA-PZ\"xp0!xaܶC],؝yۚ(TMx
^J"M7?}C	Uޥ}&f0
>!53iF[z"!d|&Ln,%
˴%
شnƉ*yK\YZVZB㚾kntZߚ5lrj*V*Pg$f>PNj1+cƷSLm3MEC5}<%^gX>
Қm
i?Д1MX|H6[\˚ i%3\XrK8mؤ*<*T1׭yQ+CQ'+^OFFΖZ,	eV Y ͤV8"CO
6971q{z8^D0Aol^2Re:#Gu?bpygt#K=]qH/Τǿ7.*sRPn\=
T WAT1s# ̓
s݃V{.sӃF=DQ6ߴ]z՜(7Ntz")rҡo8>!m4:hSw1pA
IПJaA]Dvp{~#J؆f$pgo~%U	ȶ±22:dȔ~qS?cE#i؆K@VgV&w1N긗5\,G+PX	j1Hs	ZS& PK@݋    PK  C:U            K   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfOctetString.classSS@BADZKQ,JE/6`M4:G82ŃGg߶ZL53y_}PW4+g.îA˶CuJنȸ&$ɔ)jHFmOvNh7ײS`x3BVYt
SC+<4#N:m&䢡`].s
;Euw:nJs2vb1ax"mgQ;$4UjN-4$n>ɘV;
d\n8[-4{{8)I/UY#SZ,a=%K}~$yK6BCQȱcGqb0l1
ve!qra\oܼ:`#V|yKz,hje	(ҌH"psY۫^jo
+s>vpke}g1|sGQTSQ
~R؅tKM)N8S*'řj1
qYA@j+Z'.JqE*8K
1FjpRA;I1$z#Ntm\iycd޴V·	oe?>ZkeĴ
02$;_68)h&-ΰUPߵ_;$[[*8jU5uF>Ii|*Kԭ!8`b7RޫK8QI[-Qi2w#-
Tҵ|dbZrӶ[>|^[2n2P	#~PK[+:N    PK  C:U            L   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsid$Builder.classTjAftQZuAVQZ&cغnά˂Oxm%h"4*I9ߜw|uMX)al}Uc0~+*Mqcs#hױ]0x%r
wpC{QĻu_vr8t.*N[D!nܺ~kEɥPݎΰ
G#XXNT`$u:u:2:&*Ãh~PAjfh
j56ٰe|TõSʍG$P"߲Ǩhޟceby4f)38A3'4Ra(K)M6w_>'S6#ZC>ENRc]&H8#{``j(}'Q$2O^#{gwI/+QٟP4<{	5~%L'{=uluhPKG]?	    PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsid.classURA=K~Pn%,bD;X>I\;S_c
H/>#bOBY*s9}dק XB^ij|.`ȴL>,hZO8XLIs$2>iܰtZH׌yis
'əcpЕkƦ'Gؚ1]Ta;gQnQTY1RQmgU	+5\gZ\|d8%φ,	*fnrrpPXJL
lާG
B	j~%M0mcoTmQcܤn(KXv\1H	ePe(Q&\FJU2ahwB&f."^hia鮒:p*oM~Cő<+mNгoMV@49uIa'>Yi
']	S8u}ZKFK0ҥy!5hSI"*A:T!CWQ
TpC
Ū	wpOA3BVp
w0Pҳ}#a;Fo:iY	
eb/r#jXo)@?*2^yp΃F9졹XAXnї"'A;a
>w0:0%a5]G{ۃZWW^~M2d*?I_Msmj_OjP;HJ,:RJ>dJrLvׇCi'bk1>2_Ag(
+]giThn%g
PKK     PK  C:U            O   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSsp$Builder.classT]kA=&ݦicmhVl"j!Q0u7L<
7}-K
"tURS=ss||ye)ral<̐iz퀫n$h.Ü	DS<kOJm!Og!_pA^kmG1PWyE$Fmvp|a"=%mOqūnB:BPQcF]1SƓԡבё1A6vWQc5-5)QR[&Y1Z!Ml{:@Yewg迻rJW:v4c(1d0YPb*689<NaslӫKըV}.k9Tyzw/0OL9h)i8Lbw|㔵>?DynUiK8P^#$M^nEZZc}@': `8O6;4x\SL[^qz3uluh_PKX
    PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSsp.classTRA=",QPD(	XQ)|rq1O|U*Q,}|P{rV*s9}|	ܓzXIh1-JʹeH$ȉI1GBSrJn5Sqw%Í\1MkƆg\0]tUv&Òܴ-h#UckVr3i<tõxl|1FCyMR
KM1c㡱	e|szI	sYNlqgSWmĒc>3AR(ܮҚ)s4&$C,㰌Vm2etE;pwif/[gpȗ1^l2Vq]wRo,AD`Ygt?ο(Ef^[~"Փ>u9FY
(
?SloaB':_
uXE7NhQqgU(=8B(j܏ .*EH1(8!V$
NbV (+D	1)&a᝷S*b|p]FoHsɧQcx%,@A D4{ii4ҺcdCsym8kopįpT9	c	{Hwл[\	[]	yz_Ty%,xhWF@F>J7OzMMi>}B`>#93ZvX򸱍9)WaRGZ%Bqok$W㋡ m1iq5K|"'`y,-Ҩ<HzG	PKO8"    PK  C:U            T   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSspRange$Builder.classS[kA&lnӤ{ER%ŠiÔa7
y'O xvJy)vΙ9;sf~3#n-
TːV $O.{ZSS&fk$Jx.>
EGs$LfJb^UBqjèa4;Mab-y(#bÕ'/0
adiKC"<zl_7ׄK$o˴'1LlmHÛaMsvWjM+i2,a
ojcʃ)z-׃LbAf=c6
X1u%lbeU>]1UȨ1`ziB =Bf)dY@Ń%NXW'b@Y9҅7>G%#:ߋUt.Q:McX"igJ@/PKӶYX    PK  C:U            L   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSspRange.classURY]'DiE`0t"-%Da:ۉLwǒO|*0U?2U	T0$SXU}.}[{~`5ᾅvشLo!4-9Lrf6#eMYgXi:mݬkfʜa-
7!^{u'óIsGX.:q;iϴ-2ZOh,~vҫiB7\k@M&&1RY

@z
I Cᐤ#'
\<tbMM![ۻWx+տea{w=,UJKc}ҰRM-ٙu̗g^sɔ˒rs
-mI-^1}qXp_hDz$WK܅W4-)VmKW]ݤh~.(\0+JL"[͹lk}w55<
G	[}$i"'ށLۦ,گ'e8*jTSф>P~ya@IǠ-p[y)Uw\na\A)
i*z\@L9_}v>8e	g<k"5$=#2//y	Нi짝aҺWh@4hnPlxnKF;)<-cr:$ltFi5ǰ&><y-exJv?GS&D͒AI>]ڟAКMy
1JMC^S{L}9ŵ@]lɈ%<R#C#HqipRmh!-SowΣg1r#AJwH`xBR^cPK}N    PK  C:U            Q   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfRectangularRegion.classTRA=@Hjp	Fh%Vm%.]ܝP)|J!j/>'bO@AI3stW <P{V/M&zPYhIMԧ56mL5%Kg3uӰT{N{tY*3-ͫꆪdQbn6蔙YWOS8ii5IfMQm#s*Q9dB Sٔ^TGHiZxdh,ea%\lBO˱WJ6UEq/3yoO,}Mg5afƬf]Md4.zs""E4t<GF,
M(IZSGG@2ʯe
Cc諱/_#)[TYhNAHm\:YSg>Y݉燛=b~NqیJhE	5$Ѐn	%+!	ugnxЊ!n{І:ۉ77=8Q.`ChGa(N)z
q&_ϪOG7:NE<
PF
&<n}{_q n/A۸=7	l?@򸻍w2dE"":ET~qJ"\Hw!e9;;	}V')˥ij~\-%`.#VD/PK>{*    PK  C:U            S   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfRegionAndSubregions.classTNA-ZZ\"Z뉄*mŲS"x[*/|_PmAMo@4욀Yٜ w\O*ZM
FN=ҺiDT<
}[R7LKg2PU%,ugAQFcf&%YQK8hi5;IfMQm#DKI<^gBU$S~F)؉]ӴtdJB5J͂,Q5|V-LcKԙMzYN5kl)}]WW_GDI9^"Du\~ΌXfP)EjF<u8hA_}J!|BSG-hV{gVRg `׮L~b2zIJ֥(^ӈ.Jh HhĠ7.!	Jh°ȼ7F ]ݘ1L{|=q3AodLeo35jQzo;K=N9O+@Hj[}#yw_q7-4xеn/}=Rﾀ<avy*!n8>]"ŁdTk%_a^HjWvᒿ {ǝ}rBXIR_Rrm4
{Hj`?K4-2PK  /  PK  C:U            N   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint16$Builder.classS[o0=.Y2:`q)쒔S@PQVT1m)$;H}$~ ?
븄1[gr|jcarMʬ3U/&K%"7ͦ/Zm
D'SQHVR3{|/D̨o:|C{I$&<)WFs%7n
swJj-_g2ʭza!ejl0ep4ih]q [Nz#X`њI}$gt^1yEŔx{.62Uxuu&pp
g|w0ea.peWmTpe
gpE`o&!=v2mFBkQ%"ؔJ8Ghz,π[Z  ?x	\,̙QK_R!
9?X>bdH*?PK    PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint16.classURA=CE*޹]/A5@7ɈqWw'|_kR)-}|P{r!BTg/} 0
BṢ`e[bLA e-ئȻ\݄.i'og3'r0=;bI;dtǈftei	JYGυFKpL#/1bYN8˱Q*K~西lN?$
</ڻ9*|
a	ϰ8YG3Ҧ,**)l<9#"uzl	H#G|;c'kݷdea1h;ZZ::vYb}9]ݠu<6Fdp.gFĤjewtU.(=Q',$n]KyL"Tș،/
9Q8DGSڤ,Ħ`>?5&S?׮Tx6s >
;k؎!
M
q\^hh	)NSq *礸b U0لlz0&z6^%E6w'rqzLS<2NA/qǌPF?|ӱ雄#4%n}46KC˸^AJOߣG%|pyj-&ຂ
˘^MnU*Eh!(^|p쭣x4q)Y(h1"B/ШDF*2-az-4p9׸T%SѲJX*%=zW#-!Q~#8HA'PKQ\^  S  PK  C:U            M   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint8$Builder.classS]o0=>B:`ѱAR̗PT1Ɠۘ)$;H}D!@&Q#<Œ}t=_X>a\U2kMK)rI$apiPEu[i0)TSTFx#x".QjC0*y.~	>^x'+n+I$dΕ\I)oܹ~7MZ+|]ȴ+7oԬ0<8b֞Tx;&Z%h}X֣+՚(̒SeiБem{ <^/.K#;ry8S*`qƮ<LlXp1.|;%5\I\`pFƛYLk̛Zj)}~FlR8F
NSdVF@p{	[L/fe~Dg,}
6G̹QMom`R%+WQ	PKܢ\    PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint8.classUmSW~n,Yע)ZMpEXj!XS7ɕ{O5iyif:	p{s7O 1Dck#Ce[b!mS]NWfȠV]u.R'L@!:Ze3f	!xCiU2\H[yTa96Q4}Άf}/1]7N.lLOaz1͌/hK|%C1Dd2>xфqkX3,#yb1=~)nOћ{ݺL
E%]zd	)eZl~lv
*VУWA~d>$Cj&}PJnJhVAρz:D6t"hmR}=IJ{{Cs9tSE~#5i.Q?I'3
6x~!Nbk0
!4tᢆ3jPRBގidh8q
e"8)bNEXJa|s)
aF.7UcV%7*F(neaZ._r߈)8YRy0,W7ArЧ)=H D+-Fshзw,
W3J$':IWq>ť&ngv=s$Hǰ;p[=eAvэ!`!
r[VyTS|=s/UE$o*7H"
z tg߰POHM-;ʑ#"LJKV~/1mby߽}Sp.t#N|r~GeOZj*BPKq  f  PK  C:U            P   org/bouncycastle/oer/its/ieee1609dot2/basetypes/ServiceSpecificPermissions.classVmSU~.6l`imjP*AJA4Vglqk] ?
g,_lJ
3{=y}Ǐ?XI~?:mAa[);<ǖXjHϻAhmK@ڡEY#XїcoIo[MO`qSFФ!3=,fU3_ɪU[W
׾#P1;n5pjY=Aiez,{
~h[AXJqs]GH!TGUV݁w쐚e)0}"tspNrRoإe+C_fho
0CUwv٣wؙT
*Us
WpA3
.*D8yK\۫X嚼%pN76yJhy\?WaRǧܮ[q
=f}'b{ ;NĻWJzhr'Z5sq)?H\bT{6k;ޒӎu}wTs0a
jx
`1a
iPp5SyxE
),xx-
^c:k*絫XfMӸb9
oĒcqG`pիufՋh^-󻖿7
/qc&>=qLdYRͤq4#!&Ïc:VvٹGXM2Q1+
5@c9]~ $3c0czRWJMl ;?GEOa@PJQ)Hs_a|dߐn(eDi_?41ᕘ<1	 ܈1SQ7)tp$
	ԛC(⚿gBz{y2p30PKswm  	  PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Signature.classUST]Z!Pӥb+m]KvǐSd'e8>3Ȍ/>GdC	e@9{~wǽ7˯ fP@>Q@߂MAS}V&*)kKQiWRh~-a:5ks3CխG4:2ZN69EzɯGo'GҎ4S2dnXj 0ۖVHd4d^Gֶez%ϓ-N׶EnUe(B
Ķ'Mja/# {a_z9wdu8x n.FuӕRfWhܲ2zRueHB-M̟$.z>v#wftQK
*8`P
Tp
R};Z[!pNXy4=[1CB.KBG>NG '')#[Hx[~ǚ^uM:yS_bРW[АCtkڤ>L~]幂
,Byy|b7X,bIŻ<>d1e㸥nJX,
,Uztmrd_ݷj|-W'Z%IΦ1>Ә%%Jra3Zo?c)oAU&!Z$hTwW	L0Θ4&:az1]\-]4:qP;X~Ɲb(CI>qkfbckl.*-VrviҥkjG)t
דfVE!ci'c<z5E9H?EΏqoJfGx6PKgk  `	  PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SspRange.classTsUnӲIR(()%T\A*چђbS}\v7&7Ϳ¿ǇHsMlZnfϞswޜ s$Uh5#^biu˓W>ye7dԨȠ~z.)ҹH?Jz!hht=8YZ&`S^%KTirS:>ᝂ﫪
tKWմg@%]b+N5EBz)}ʆ#AY(ݬ_9ܰ"D"/j_)6sk.Tu
SJeo^]	
,J?s]uL⣺io:3F,!'8e`ig50i%4@\8 UOSk'K|2&ж+6XfV0κKb=6|?O]ףC3ߋ1hW}_L/>|Iќy鲫iu{0ĈlG0kbC&3qWYf"XnbYnڜ	o$pwp[I\;ImwY^x2Y,'BEN`8Vh"\k<.i~PVA,"QL$I5&/zI雠I"Gd};cv-I1z9K~LzP	ُidIp#rSߵ<C﷘̬6A_3ܷ>Ã ˋIXw(ГCڳXe46G0b~簶0U?Vna<c%	2È#>M!.AfJ PK[2-y  j  PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SubjectAssurance.classR]OA=]ZEˇXTv0!%4]&:LH _|G3+#P̝3;s]X<
jmw`V&{HX&:r!b"
W{hDH7☇,najC*JsJ$+"QbDp0bN
jjdmF"$xoދОEKxJ#%i9o,?ZKca.@쥦(666~4ͻ͡RE2fmJEذaEᦃ	:p1`3n9ÜɞR[K}:1ǂ># FU=+K~}'N13E}~OthtAPeóQ$t-H 2N|MYyWvϘ'~9]|PK%    PK  C:U            C   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SymmAlgorithm.classTN@=.NBzP-\h"A
m1u ~C_T^^ЏQu- "-%X|saɼ!Q'g7R9>.'2:>D2"ݖS73G#sHmcN<-׉JB`RݦgmN{9<sd!g9Fٲ#"E
:r{L=ؠ>N}'s/&*Zm-c,9?Tp>%b1mg}њѦenٗ6[׬[A^)'j?E_DH<umb{ ޼+_Ypu$&&R&EC;uYN<լ1E[濑<ӀTt`DE'hG@EPmܕ=aWхҍIU`LC!0!D$&@\&aFB2!LJ0䄄I	01%>M mZzM6è`߆*a=776QEJ`rg&*X.knжG}Aΐ~/ڣsU1O*X
+Xٗu4OVKs_;h{v*^!a#O|*?b^~PK^Wo  [  PK  C:U            L   org/bouncycastle/oer/its/ieee1609dot2/basetypes/SymmetricEncryptionKey.classUWU iXԀ-!
V6hmLމSypC7.ݸslcΩqBw 7w{߽5s ؍#K
b	펂n]UУw\y[B>[SV0~Yube*פ(ѮTW wAE!"/׊<?|G
I#gk岠κTkQSض]޾]rJ)쉔'mlheJ%QK+^YxrKGT
ʆ:VRATj{Ss@e^Zn[2:@Zzwâ
HfQZY|M]{
狪rŹ[_[y;VnC6Yţ[vOa1:PqYŐaWTbD+*FUBu/%uc;ICY>cz4>yJ&5̹\3x|B
^h֬b-ǷcJ1z/ENq\VSqztkG{^{.{$K.a͛}0pͭ&nXbs{l$pc9)ft$%4kXt/.wqVve<4[ka}ޅ"LrF!i6e>=s)oHg
!p'?7ϰ9[bA!w&&s
?U&ֱQFq=F/.P1j$^W_a|7$0r3<n]Z017dX9m` з"034B#mBc˘V}gﷲb.
Es><DoPKƽ|  C  PK  C:U            L   org/bouncycastle/oer/its/ieee1609dot2/basetypes/ThreeDLocation$Builder.classTJ@=۪5^zj}ZUA("i:HH$X ?J6Ҧ	f93ݏw Xf6.M۔G)%]ŵKt\t]-#j-F隥tC8&ebؕTmn螴HsLi&mmtd</ikiPpSOd?XlVЯ`PAL W>	t(
uP g6:^s>cwC]gKz)D;BT_TчU`LEbHbfa6Ƽݾ<gMn=<,3>wXp^"~e2><mz5G_had7}hTLX q@߀" lY5l܃ľ PK&&:N    PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/basetypes/ThreeDLocation.classU]SV=dQ7IeR@)@CiLH0eӾ+HԒOtZbL%QmG`Ξ=Z篿`; kva`wAWAn=5la?­;/<lfPJMtM[~PĭywQ/7v=]3uMts\<㖛z^u$-].iyb^t5;֔]JYMBOF۠&Nd3u%S-1˚:93_ݻZ^wb;Zsl8y2cWG0|~^!?)$|(ᒄa	%H"᪄$|̐,z^
n
OWgݲawcǉ6QĢߝ	)h'6N)Ʋ8;qvBmR}k=w^"kg˒8MgKBalbZlB?x9V0
>-!L(}
	U &N0
0W	3/c2>GB5fQ2cIF2@
ȔqxRcbw-WLq0uO-Y!|iX_"ffF݀j )u $I=Ot%aaV7ո%.hyCk)÷dC`*$D$RZ_zf#M}ȯoW!tHN=ģ*&~Fj{0~)6)"jzn>?V~rlF/KEAh«p
'-2q&PKh  &
  PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Time32.classS]OA=KvUAR Q>| >Hx.cYT#L&m|w|1n mrs=s'L㙂>㮂F}]~"m9XTм
:bmeۖzvk'crE]f8da3'gd=
Vcʭ9xAA]m2A: Mq_+;^t-䌬[tcy󜔱Jfa	ϰ8穙}WLYqq|=Csj;k[20"܌(XN
Lo_4~8"00Z#F5G82?QZAO}BuS#:Oak %Nu>!7E1Mu7ychYA)$tKhBHC5D1(C:pWZTS1 =[(0&A0%ʨ1		RQ$#!	HW}z̗hemA&6[BR&y+os2QS3pjr
(*q't \t@KR:?a`ox7T/Г_xvbG|h芑M	rўՑ,cTԢ]pH_
To̔1[/5 PKMJҝ  W  PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/basetypes/Time64.classT[OP]mA*,EXD %l9,nKg~?dńhb8[pIt:s曙o&q,($6,_˱][*	@VPش|vW̅o/xުm'ULC%̵8e'k9ER[!3̍c_(Ğ9o\s\x,A]r?BzE:/n2MskLKL[9OGv<1jfM-ZZ۔)
97jY	rFuOF**TPЕ\jwi	]+t6jn|T4#	G?V
vt=-5+7YB

ЉHK1!d=F40ưcqr<bXqԥ #7Xv#mz6Y#N"EZtCr"ze|6QBCH5tP/RT1cg)bh}ݎ
	&xӥ܂'!2_"4:$oߡYF_d|G"+:sURJyiK~jn:ZSd*xEEϿFeD$]^
'>b2~PK<}    PK  C:U            J   org/bouncycastle/oer/its/ieee1609dot2/basetypes/TwoDLocation$Builder.classSMK@}ӏTYࡍ-"EidHRPIh,v6Lr,y7]nH~y'
aCcm8mdHgHipzStg.[-QK}ix\n.T&}k-2)S[(QAL pZYaJRy}irSha>18.G8fU`NE7$2Xb
i,bAf&<wl-§GFhe+10:rĵV/h;/Xў F(C@1(dߠ^k}"0Z 3CmPK.y  I  PK  C:U            B   org/bouncycastle/oer/its/ieee1609dot2/basetypes/TwoDLocation.classURA=MAE
tdQMFeUʧIҦtRCIGT _Ns;_?0>0xR|3mSL3(ieyoِ_!|CγÉq^%aBf9s\e*k5#֌
C;-k&+Xua:6[5~'Nμn>\^3NH[
U.7$Y9,Co}J
3n
W79÷nLd1
k.MZ3"vX+g>dǡV;+M8Ҹy)
RpZA3
:t2L&X!zxr3bwKi碲~E
!AnE% `Jz7u:$52ʟe vm`Xjڸ-GpQunzlr
  ZY4G Te "Ð*cLEFUtcD2[*.aBE&UV(=D9m,uКF#c}U~q%j=nMhҨ]LYI:EuCM+bZ|DT{DST	DY'i~O"i'ƜTxKiB~*E:ܣ@-|whA0mc-+%Ipp-%\L5Gh2K1U:=W8)KNDV+/Q *^U NQ+_PK  f  PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT16.classT[OQKo, K"r-X4۶=ݦ{J䧘i$^^|Gs
Z"Μf̙_S|.6<w񹄺p72
<sev-Z6ˬqX'%Sv&ؖMxrfmWSMոi2]3c9=a_ybYnؖSM3,}1oir_8Ӆj[pcEzff9j0ƢiIa|/Y|}+:!a
/ҎP]DBfpW%wb\I2Ţ~pcs$水">^\ɋf/zy'iL-[趫+bi,.:=\u!G1^k8+􆫕T*OHr|E\2* Z>	тnmvȐq[le0$wP0"@
t!*`\l pO z0 13
wL_ŒmZ͚Ғ&#Jq#"\]5Pw__(b
'%N[-ZS8yKvG~@y_;O4AَQ}i=uÍ]#7QvDZ£$+t#P{4s;(q}|?_е]ă`MD47Lb1a~p6=9-qO/?PK1    PK  C:U            ;   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT3.classS[S@B)%V.\
"rG*joi`t-#? 괌xyx6e2`2vsٓ?}0 -JzRBm8YYVe,6x["Q癝Р.+3c0]&G5K
-iYЭx(͗gX-hLHM+
Z<&Z46gP9CK;E;]n1Mw\L]qXA3\ZZw3W{\ߚ0~$Qw\Ӱ9j w*Hխ"qު.WminvdU%GqCFf7ed"T.SC%u+]vuEBt3b.p;G%uAu<0Yp:y^gԣ_AP+N_A+
'TQЈz0DƘ	&`R z1$ 0.`VNqwkz~KO[(>FU$/aj2Vq|NOy	We$+|($o֞/#ۑC<-پE]ήQ諜X|ţxTX	˟0 G.q8%,Ҷ'lQC>[y/U?PK9T[    PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT32.classT[OA۶eZȽ`)Rwmhhov.nwO11PI2V P|sΙ3sdv<yApgB)&R4,HhXG![h25ay0Mٜg{6):qᚕfM55KWt͌BY|ua[ϜvyްX03,/U=nqj.XôpcEvg撏`Ef36PSa9䄄	0qc:nTpn+ @3us0[pxвy0łՑ$]e22nȸ%EF6NT+"94DRT/ڪnugWB+_uvKTwR,\׋V-*hQz
dqWX	BV`DA3{Ę ՇnЃ)>b\Ys>aG>`By_X3bM\Kr{Zd觀PcÓ%M!ܢU 54H	OחtI*!~˧z-
YU(^*hEhw'
4 £IGnmw	^"Vߢ@M	
=xAA'Y@m1","*܏iƟ<]ĉN֛H~	\~PKpl    PK  C:U            <   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT64.classT[OA["XȵKBiAmX4ַm;YMwJ䧘i$^^|Gl+37gwΜ˜ݟ>c/^{1 LLBs(U6YFcht6>]ZX"+9Ӱ*u.xKhx(\B[.۵OY׬0kY2Mkfs
ےwjK'ˆg%Je
&
=eq]լ]r9&S5ǊȉM윍J`EbKyϩYaij{7ߎœt8nAn*вe=X(;<h<eA}"{"52d\qMF2M72*4o?3j@?9/|pQsPO{,Xҗ\,+hǨzѬd}pCo*q!M@AHA'&>bއ!0isD}<b>
  F򚝧	ZՖVղ&(9O@s'&I&!Lɏ&Z@kxGkK՜8CK*fQj6j@G[}$7!pc2OXbP:tnw7)hGܩ[tc0obнRwceX{*X%$VpW=/'N['TEj7PKWI  o  PK  C:U            ;   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT8.classRNQ=-"X0Pb)RSlP0sݦ{KQL jZ"CsDJܙ93sgΏ> KBk8+z<<v
Ʋ]	с/$EScQöJ9j/Iyd%4
<m,.psy]bLSu`"[ٺcj)fn'
f1@:::ɢegYJ_kIL9L-c=n3MX[qYAYT#ZF3OHOJ8Ih:e:
F$vtH\?wUē7ɰC>*KF2B2h&=]m.4@aU,@'yWtF3b(g4}CՊ:c:^*hjf/K"/7*qKuPP/@TсzGE7*`@1*TUьD	VЃ	0&`FAq&L)C"}F,V׍e=glF1HQ<I2T
i!H(x]_>x/2*|hZ
@w̏RDgO"o}Ed?GlԾߺQ	Pa?F#JxMGՖ苰l	Oa\лYF"TS¼ [ZJX 9$?8}qprq!|l=PK u    PK  C:U            >   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UintBase.class.A[kkյZè"' 5j]M<!Ax(qf۔F&93`	31۩]Zץ'C"Py%C[YcF0]_oDYY?(nKn.wC/7
f9_%jE
BVO}ȋn(eIJ>NR;36	CMҹf M:+;laوkӊ^{	t#m#fB-OzX]"bAv!:*&'9Ϙ| oj\
dfbuR
.?cG_&ǝGvtߐ<Hو2=)}PK>Z    PK  C:U            E   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UnknownLatitude.classS[OQK-"uAŶKEL!<T|(x=.٦=E)>@Mˋ19-F%&ߙ3egf?C/hZ
\0dyKҪm<.
[c'!Od븮5c=y
sG]ɯfVHJ%.:]."p81趮艦8v3Y.3eÅ\z瘔eOU/hݲ䦽Y!ԃAٵAU8{H۬"Rv&ə9	xd8穩b pW;Ǥ'E*Y]
>`Ƞ%ԮFh@Pq^uDt\Րg4*ȝ#㧵jW%_]#ӧc$Hs<;a\3qm&:Ю@7
KI&0d0afbF/nчwa\E<~*c 0y$[zt%s*+d(BR--JwN#ETDvGM3"~@l?	Fja:=!z7ѷqP
S
d&0R~&B7LJu6:H5JPKhb    PK  C:U            F   org/bouncycastle/oer/its/ieee1609dot2/basetypes/UnknownLongitude.classS]OA=K]ŏZDjAŶ"aH	%$<Nɲ6)Oɿ#/>1xJ̝{Ͻs߾0vfe
ф&D Dq4D\5'Wb̗|OxrACaVkKc
e
.9J&J[g~Mh#[l>}2vJ"@hE*Ȫ'l˼!ֈ0ig=7'$w{8v1^6c/VSWmO9w'ʁ,rC;ד2~x'b[OűB
UHtH㼎:.긤#!#3ԭd*M9_iORƏ<.n̜}4_JyY0q9tXBB/Ѓݸ7-mb )c
(M\E LBڤeK =JۏXe}a
Ѩ"I!+B6I!]t}R&[=blm?"OB&s:f똉j/0zCln4Rt3v/FvS|
ξB_IAoKW_Lq*y
)
? PKj&Y    PK  C:U            L   org/bouncycastle/oer/its/ieee1609dot2/basetypes/ValidityPeriod$Builder.classJ@iӨ\^zO'""xMnފ
>%NJ[QIkfv?O6 1SZ`ݕ{#N(ܓSeȺQȵ|}Rf]
"ߩ;\iO؁m-+[nW*WBo,GsEȐ'A{,4iČ^qҞ-fsy-Vt[DNu|Mv#`bB
,9a$&3aah_t%pu"x\)0O<)ZDkM9
ii2L>"~rnn  CS_b[ЃBS0h`]ZY&>5PKB~  D  PK  C:U            D   org/bouncycastle/oer/its/ieee1609dot2/basetypes/ValidityPeriod.classU]sT=ױ#GU05i
'-$ICH6MRpi&F.E2i'<;xzW(v2N={ٕ_?`_c$9WXaHղM0hvĐ6۲ýM۞CGtlV*ܵbv,3ĭo2^

7Ux*)é2WX˺Ah_|L!Q.>'n:/β_r7\{Z׹P>m|E/EJf:0wXoL%2ݞ:J8o0 3߃oa`؜k7,/1fý
eq_=ÝGpۏXn"􄂛k:^^0&ጄIx]K&BBf	nIIc3jS>jV뽬wBSwB
Q]=3y3M~kpwOƈ{z3M;̰1XWw0O~K)BDd"(x
pUx*8
CxׄQp
s¼UsC4| ̒	ܖ1[,sGe\MaVHVe\FV2q;>+E=%_q (gVNjD}0@sڍbք^C=93 RY1Z/Cq7hH4>'d(	"'WkǾhd{SC:?iҢLH$RK6Xk@/~sǨ64#r9^*~cC,ҌQ66*P#2:5q# PKii  	  PK
    "D:U            *   org/bouncycastle/oer/its/ieee1609dot2dot1/PK  C:U            @   org/bouncycastle/oer/its/ieee1609dot2dot1/AdditionalParams.classUmSU~.!l]ZBK$KjJj[
iX
(5l.q벛lf/_g?K:2?s7	
M`"3{9>9߿`<@4CߜimF]P0=ӱ.(8/] 1
pp6J)h_؆[-I{p(dQzS
cgmiɑ#ax!Wyqa2MnH=p0\|7yv1,QV-V6OKЊvqbZ2D;ۨY"t"8Lm8āDټ?&Y&p3nzy/.Նs0rBL_zxy^^$ʉl%oFz슅~Jmwxp׭jqeap^r͢I&qv#u
s%9gP*-)=RTpJi
QpVҢ,tn1Fcn77ʹۓ&h+z0nu*z u7W:M͵<duqgjy܎ŷ]fϙ=j~?jG\Uax2W
!5!z4"<JmZkRp|KC?ޖx78HTqiHIqWȨʾ@Ux_K,xzSN.?ޚ|^}^Z
.[F0 _k[d[d-%J>(AJ4qB|A0Ԯ5<Y^'ϟb'H3_I_=˹Lj6V\C})_g
&)-U=gv_kXfHؤҟ#a>^A<Ŷv3 7mƈNu
7NVL3&؊Qq%A1'+iÛޯa1<ֈ0='$\PKX!Zi  
  PK  C:U            B   org/bouncycastle/oer/its/ieee1609dot2dot1/ButterflyExpansion.classTSW  Z@UvJQ%5-v]fF>Ԅifl}Ts6B	3?^ Q]ȆvSAnl[i/+o(PoJj;
FU)EiI+nS(pB#d`[Sg}q^(Ȗ_BVD߰ՀH]bY%IH*|lؖg<R٩n_fDIϼ˲;EY'|G>JnW+2ԼdPv|POvEz²+~ZZ_Mi(t4;&x3v;Hxʊ
!R3׋괙qp+Z=DAEBŨ3*SqV*T8G=-:ĂnhzT?<˧v\ƷҦxu
={,$z}uZܿ9!oli,~|.];yx/d+t[e%
N0FW0ٻ!+Y0^J f98|2 \a067|&.S6i6cglnŠc)F,YfsHvp9_`o)ץ]]MU
*CDp:E7I$X-	Lhx-B<$o0:cqǼg.P40w5HKp|m_/h`"dFV95#/Qa6<GRou0GrK?!jc|xFz*_-Na-&CC?c&"Tm9\m$$Q{톒L1N1ԀcֱF
y*nr1VxugPKk{{    PK  C:U            O   org/bouncycastle/oer/its/ieee1609dot2dot1/ButterflyParamsOriginal$Builder.classT]kA=]7mjG!MR%Ed3.Saf"o蛿D!P'Q%Lv{{8ܻ}<c(6NfVna-0R8ysNQr"8FJ.u`Sn}
m)`;	CL|<:387	y; 	u4\9˕rWҳom~41AOEitQrl:ޫP+<z<ahK*oN^;RAkx#A?ϗT&WH.uzj	rc5%,SS KRXNJjWPŃ
~Tø##9bU()*M2_3`i7贐Em^7],u{K5 * <ʣV"
 "`;>4ԥOD}^
)
y: PKh`s  S  PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2dot1/ButterflyParamsOriginal.classaSWKB "Z1A[t"jCSMaLNFlkfwo?S))c3~Gi]@I4ss{ww߽/ 3XC ChδMaPJuӪpn&LmۣջpoxYJOQ|ΣU*Nя>]۞03[-=!tVP/4+U۴ SOgnvU[V֭׹-re;nU/9u(nxvJb,Z.=kZ{JuIrr8M&<5{fWqѨqO_,\s=QBpا]55ֽU׬a1?qa}F!"k|| `Tqc
N(WpRCnM3dzt '{ \|| $D"L?]Zf>>v'f_j.JJǍx7#>L]eݵ娠I:ۑy-$|!\Ki@A&0$8iiFFW*͌Ӹk̪8kܐ&b7UÜ(~P){S/;0T6w,G_܂0ʿN1ni4&}ȟPH]Y4Ƶ&K[h['V#OK,~6NXٿd%nImIKP{d#`01D I˭fh%F~R{ioEd
&lsMaZqSmLiӟ1B1M5bۘ,^L1B1H.S(/4ctVqT,*L;<ܱz^! PKBʨj  	  PK  C:U            H   org/bouncycastle/oer/its/ieee1609dot2dot1/EeEcaCertRequest$Builder.classUmOP~.
[E*NZ6^}#%6uץl#~i2C"?e<X\s{s{ V0\(3>3-Sl2Dݲ-*Ìp]<z;bhrW0LԸ]U2qɺ~k
ݪi*unfvjZnZơ5ݵ2ڋ^ak(Ӫ1<Lj&<j,3ZMQr.:J/ϔRŕ	p=\K8'f?S
F(
3$v_04h%KM<`dEfjW_ѩzt5F}[ڠxr紃ڋ s3,.S7~/q(u=d+Dч,PCsP~OAU4ކ->~闿u.,yb3*&qEe\U1k*U1&ui#4/iaLa!RaL#M_ΩU\Cw]M9BY$III10Uzzw:B+̷c"߰Du pPq`p
ELO!ۍaKBj;~EHrT#,D
.`7PKʾ}    PK  C:U            @   org/bouncycastle/oer/its/ieee1609dot2dot1/EeEcaCertRequest.classWmSF~diSbdK^
I кXI:#Կ@g˔i~{

̰{w>{?n1	Wi_14<4m{ 6MKMyvl3oX
f=^&<g\6/s+Sm3fS5ڤl)Gi&,sy&9^r	m24˰ZڲxѰFKun{7yNRQ9vmp=kkhdO;#g^~+v!~Wmg"8Mf
VZsg=r19=CD
U""8c\76/C`3\v&:ݣdfa8Th)"Qk;굈6
9钹nzhL97uʝ*EI.	Jh>!zpi0S䣐S`OOG׼RJ$ҝ5*vx	#Qxmk{{pvPfHƞ=O4oOּ{~-uG:;WkyHDb>T+ɉg>>y^^ v f@][nhM8XS5ykrN/Dkc	=
nWA4O+u
b@e<a
0&FB|!DJB<kx.Ą/ю2:0-#)!fщ_P1'#odt!+.q221MoWSWp{Fc##9nQh}8ףEF-ⰾ*k	i$7hօH=VԮ,wwFw`g(U%]c?ڳ-ljn}X2ǯrbd?^$%\lb"MJ$uD$ht<dr;{۟5]_V<(WF'SAVBm}]UiM ܋ϲu/XѳQRzԢm g%Rt}ߕ3x\BZ	U{	0/Vx`^eוFrPKUf  
  PK  C:U            G   org/bouncycastle/oer/its/ieee1609dot2dot1/EeRaCertRequest$Builder.classUkkA=]4g}VCݦ
m(R(UjqÔtWw&~_)(Q55IBΜsϙ{_~ xD._eڐOfJ-}7_*z bEŻPa!<pCA~ĝ&ځfNoy:W)_ʑBң5++97.mdCV	9>3JM,y9~ۙ@uug)ǻl;&|#TY$&o	_ɯqI*z|v*܈\?sC{"Oq{6hxcGcL#8lq۹!OHu2Wm9Ә16fp.Hp=,n`¢	7MXJ#[i6]=Y]nr+%IJH
0rH<#hu->p_`>gp%h
ů(>w iG=Q;=i\zE=@:\'`;f_MVڤ֦mOpZ1KսoPKp2<    PK  C:U            ?   org/bouncycastle/oer/its/ieee1609dot2dot1/EeRaCertRequest.classWmSF~dҴ!D@ &ZɱtG΄)$Qmd,3*0>?0;O"}IW.3LL1\y1,S/.e}fF19<
nx6~ak5<pM^օsX
܉],\Ҵ Zi4]*J?N#F=4MWy&<5}S׊YВ"/xM':Kkt*at)rMA-L9+gnlUI#/|.Oñc/9F27-gH1VJzb4O 06wh9[%3;Cǥ\zaS59uEQ'j?	Atj,mw,ANn
:!5["iB_	.I,ኄ>N	H&3	Ξ	1{>==@c>!?c| I ++!
w^$G7rAm]kewY}r7G)^_)ʙ_ 
*LQXߑ/(=
Ef"OQC>h8{Le?=cu{9mJNY3U,ǼoY
*cHA+(a-Q94#(Ĩ+z
qݘ!"!B<hox(Ĭу2z #y!XчP,#e##~q+2d`>懯+O_w%i{׽c8QR{H/GӼb;v[ʁRܖOFI%#@@XEVnڿgm<Q;xv6ooh1"<;ȅ~E>z2l{5ڴ2t/rbh_D%_`E$U$h%GT#H?ږe=]o J;!H_Ec s
ܫZ\VѬ&=jP?P?eLy_]'hCB};4 S$qLeZp*#	 Jqj?p^U)1@DPKuZg  
  PK
    "D:U            "   org/bouncycastle/oer/its/template/PK
    "D:U            -   org/bouncycastle/oer/its/template/etsi102941/PK  C:U            I   org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941MessagesCa.class[Gǿ+bԸ*j*T4xPB*Ze3겋*O[{ت޿y'fwޙ} /5V0d141ghfg`H0lap6];v10>մ-
6*h
łT0zQ#\Nq?orK&EA<gV2?ډrQ$nĹXic3K0Tsߨk1;	saŝyMjZݼvU):+!YԼ<鍍<y`#F1?A=֠Ó
9yfls5d=_$0$m03̆Ww%R~PPZmIi9:%X\u=<U"`{0ܳŮ𻨋Dn1XnB`4<I/ؤF#`Qꐉ'5.rM1,y,6jfjBTCeT3yknm,xR#"a~уƨ
g0 7ErȺ]b}`M9m\v%; ݑ2մ,;=MN8Sx.V><bƸ8!M֏ɒ[)_+26KZ1ۅͫ`ƍ.up.y]Tt(輬|S]
6]j:ktɔ-&T_2NchjSq^{TثTܪbTܮ4~蒧EA[3Ry96	<tbO.h`)GPC%\GXF#p=:zB3aJFh',vNB7	hB0J0Fp/>"<ExYs,<Ox𲆃xC8B8=I
^ +F0£HJpFxV%MYsԸ:"_nǵbIE-PU.
mMhkCږЮ66emm}h[C,(0_U-_~? }lV_8i)zԤ83":EwHIn?ꪔ)$#R~Jrǣ!,Sg4JY7,)+VץTRZJ<)"+}nF2ZĜggFZѕkWg>'yg}i}Q1*xNAP%J=h,}Q) 9]2OA],؀|Aà_PKb@  
  PK  C:U            I   org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TrustLists.classeƟ4iMXA[&-6)P,ۀ"^vq-
RFλM5?|gvy}3 
!gecgh`hdhbhfhahehcXɐdXͰa-C7:
necgH1ΰN00İ>!` kM#k8+hC:Q63=7p̄ht a&w8i_CV.9"}z"hB%]"HٵxKsc5:oR^<ݝ^>r~ϷyV罃fKڞSԫH^_'K̔,OTtw%!'CMU6mX 4MҴ]綽2|Z۠,KT
B(ԇ-C'>}7$JB|J
3H
ϺM
_ĳCB!zC<GQ{g=i۴ZԲCށm\rSBɊқFrAf8b
MY؀꣺f;&Y<KA;w
3M/BoǰE)SbόXkicI\v8iUlp{RNMQ4U[GySW08Mԕ텓"\R0oss&^uQ|AkP̦cRSq
cfhPpoM9
Pp{ܫ@S0@W nǲ)5%ī֭fʒ=_j7w3F#tS릵V{UI	NĚƤE
"Fj	uzBDh&,'n&++	B'!AH7(nQl&܆GD1L0[h&<<Nx$)ӄg#<Ox«o"Mxn0v0F2u~6> |H1§_FsRL|B	+-hlfBENܝ9X@J٤g<6{ճ힭lg]z6yų	vJ[ u-_zמaxTqFnKI)G<./[B| rrI5U"c?"gJY8Ψt
S(J~S|r)IA_4^|Q@vUL.M&VYf 3#2P734T#ŅΥKdf<Z<^X<ՐG|!*wss?UQ
(Uee}~}<^=Y%&4zTx.Fz1uU+dW=Ll~Stv8sxG\F^?PKS	s    PK  C:U            Q   org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesAuthorization.classwEǿK;IMB)BЖhdw,
P/|?Q|??X??ͦ%@3wܽ' +>w3bpý{2213c8Ȑf(a#G10Ɛagx8Ã1dx!P`N1۰-
м;tYE`ΘKaהچX!"аƖ)NI#ʕkh12VA#ޞm=55
 ʹSÒHo0'J492)њ)O5Ox,fC8'Q2jݶן͔%͒S-
gJm"c;i0
	S%lגT+STIuBX4)	AP4EBTfΤuS)<]NP(!HF0NdQMPz=R9
z(Tj9gm2g5x-I/kV.^:&
Su5;ndˀ&JHNUA\54d,&J(\-?E{{^yX;TO
ra!5dӔüӤPE^C-r&kR"wn܍5s|*c~`˔+ё}rB}oCe6X<R-QKP-Ueɦ-E[=[zSՆ^Ʃ^9Gr9Cd
5Y9ՠRkm#7V;zL7ZR:2#sMHRM+kJuC
+7i	oNoni=VȔ#fT:y)tdut:LR5z%KæRhy+ݽNBvuWLSh`u򵷫F"Cv8Ø:ԿNL%H)(*lUئЧ]aBfܕ#x"dq!ITEx:<i<C)pQy^Tx5x)sx9^
o*{
wpgSck@°-|_XKOW#:iԩ>g_\MSg?oP?Mi"O\J~4>wl#dLdu6e|E&lu-k-|51;yq	o!81"	RΉ|)qH\λ|qo'vrF\c|õw\À|7\4.;aSc8;y2k:Hg-]
G,ZohTUT1a4>wCV1G2%V̻2d%+|Qʵh|C@ϟPKw|c  o  PK  C:U            [   org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesAuthorizationValidation.classTkWE~vcՅ
MXhZo͐lv+9 w6zxϼ33e_~0g.0\fp[o33L000!-0,d'V-9?Pҷ,u-]bLh"PZ-h40U5(c֔/ZuycUiiX,Bb"xu/qaypET(2Ժ$fnr<k*njv&T F2TڔqC%	96Y\GQCmz02E-A6
MR{T5H뺌'
gN".p
٦Vˇu%@5w)m6K
j2HiTA=DixAQ\s+Q+۾Ht HRa\3Iۙ|9BKUr_{GURܢt97ҐKū7g+IgBH(£1ځ-N"iDɰ@iROWuERGO&0Envx Ԩp]'iNeގ&6޷񱍛6>1kcƧΔzgMzŉ6t\ͳVkB޼=~(G?vsG$OV{NT7y,93pEa^wtr60Xq0GYjm%|m,cOrr
`G@Հ̡Ըh})$2vJ酬tKSLG4Ѣ?|{?if?#n9Gw+~ w_ʌ^9?m>LkY~0|pyEg3D;ϡ)>"&&RzN.B6W:6YEDr*:[hr:"]Ƨ
PKs=  t  PK  C:U            P   org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesCaManagement.classR]OA=C[v
|"UBx1#TTC	iv{ilwάI12ޡTt=wΙ{o? ŔiB^݌b(L`r6e2T$
IN,m"eLܐadX~A,Nw^)PeHRu0͓Imb
Rʂtd
4hhy;Wq2W#сn/fV=]_
vArn72R6w&cEsiJo+s٠ѿU{+s;F;ٓ
ڇQOymHVx>p--L裂90˸2n▅:z%bf&eP֌֤UAf-ƇMsK/X\.ט۵Ra+gX,qgy0zglPKK  d  PK  C:U            M   org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesEnrolment.classUWENR؇`
TkZ"ؖGJPhZn6C	m|xN<$4`αs߽sg߿	`?3cdbfxaaaU1\dpau700,0n0,2p@6zҗꪁo^JnJQFel-SmW*\Y^QjMD|ΤU$ףSW(,8y_
X}5[8lՠd`@r{KTHXǽ
q朼J,2HEQerKJNw:#nX))込ȗDXQDDS<%%COEh
.(ɢ(%Bʒ$A	%NJ$hH"wSUD%DCʧ^"mgϱ=/+uel9YXjDH'<''<UBk[CqP6`炲V\'R+[*k쿝OnlYz,<BTGgx91~ijrn4^SCDk`XL9'Csdy
\{Z:Wq;ȗ=ХwM'ڢQ_|Gib{$v޴;NeOZ
A(uhIBMibUL\71kbļ˭ZfEly~qdx쑥c8?rhOLe%=[Ͷ;V#Mp\-л bZ_۱$Zxǻ^pNË^0aHðb464gmoaY75{4L$p&pkp556ѐKb$`K԰aG!PJbE
e2>;sb1E"R:gq>c2Ѡs7|ƶiE?+}VM&Lwf]'5,L6	MGx/aw&	nMhaOu_gݯ8Z*Uc|K3#G3mR+YWg78xƱGd<C~:$m1IOx{<US!WҾG4?PKbK  	  PK  C:U            S   org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesLinkCertificate.classRkOA=C)-@}" mX$
T%Ƅi.~ 12,Pùgs iñe㌍nDv%="jc怤s\q&MUD#zYo)RbMx\_k+W7	sv@["6G3hKQ E0wypk)k3Qíq|rCNn~")KBj3/E(*jn.))d-iZx TnX*K-qIp:=;=31=KIz-py,\pa|W.2<ɾ*4gHV%_f ai]lt8u8l7RBf
p+~Nc 4q]hJúc,E>Z@BMig,щc񧱨W:2cq=g:* v|Fjb.TVw0ii2k{_Tbr;e1->#mdP_~+: PK!=    PK
    "D:U            7   org/bouncycastle/oer/its/template/etsi102941/basetypes/PK  C:U            R   org/bouncycastle/oer/its/template/etsi102941/basetypes/EtsiTs102941BaseTypes.classVU$	-Jm+`uV-#P
HŪfs	ݰPT>@:I4Ai1w̝w !FlmW\31n1αm
mQ
jHnծE({5%
[/p>}UBhUvERÅ\`2{#;skIqεj%,垄w!'ȰoYze_T)s5lDEGٍhz u-ɔP}-zMKyIז*-^Tِ
2!vBPAzw[8*9+UA]MUy$
6u1OJf<ekekm$uέС8#冲,}_	nZѐpDS18 痭vAH˓\<"q䉗]YSf_8zU.*PT;KLff'dXjNHZ
sjɇ^)rͳ/73%/\ѰvF7Kn)(7@8<:1ڇ?/uX::&uL鸡cZSwwleel.W*
cvgz׽YC,4z62d11^gg\`0.2`\bx10їX*>=31(0vRX:c#E2>Ma	06[mgӸ/ҸG/_1f4
9|]^ow&_tJ3O5DynO7֑:и~Uc_ps<)ӎ1{ԞS~Ý>=^jPf+tP1{c1Q÷fO,&kL=\3F
}N
t1GfG;ш_6{fcfglTjF]
cvM1bs٬$ow5khRs@H? 7PK3  &  PK
    "D:U            -   org/bouncycastle/oer/its/template/etsi103097/PK  C:U            E   org/bouncycastle/oer/its/template/etsi103097/EtsiTs103097Module.class[SPBQJʵ\ȭGW&$NtS,qFg|Z÷WwY+=퟿~XBQEnUUPѧ⑊ә/خ-6:#E`泋Օ<}l=!͏te-[{\17GKϦ7]nC&g|4gXM7+>7xwXgU"0txĳmЍRge6mq,9Ղ'.Bω-i{G'ܔҞ_ҎkVɒ5ڞٞ0sNv,3l6E	~Zv70Q\=H繻Wl̦u]Q-)WLQicsϑcؚ޽z_·R.?Kх8	$a"Ä'8:lӘ#<' h,a@X$,ŐKr'&҉)bPjK[޳ˍ]y`T>9!bґ4+Uu8QjTSQMFu0-`_땕>oKŃZ,α`?9Pc-6P&rdk(s$;BA-$Pn^N$ PK
`    PK
    "D:U            7   org/bouncycastle/oer/its/template/etsi103097/extension/PK  C:U            Z   org/bouncycastle/oer/its/template/etsi103097/extension/EtsiTs103097ExtensionModule$1.classU}sE~.i{54ؤ^BH#FMDm.K8݋
oQIQf?+$`x3vϿ<	X	3doIO]6pŶX?vxL8̅bE՟ Hyc
'5]_*.7B=2k4:u|(or2e,Ť
}=``锅M&)^ryKy40gs$N5/o`u.LS;vYwX BI~pvV8>o;5L04uդtHr{7[
%"I
7[soQ-dphott4jh@AGPƕ#{mRDЎ	陋2ۑ(S=ݔn񔉤M3q)oxĤL6qr4.83ߤB\4!2D?ɮixfpTL&{ ;{E!әH"foӁ}9V/zw8lTT/D&~(i(6޵qT865#ocD6΢.01gc6Rx޷1	|ak	\Ei᪆kXBBE`YV,Lb!4ܰp-RdSy/բߠc:N%'bPOw][]Fj.'CҠ[1$L P|YŭG"it]>FkngXz
/ĻW0OM%]	_Pݡ^SOq~}_%c]u׻P.(be(
ܳ&=;514Bwr<t2F͐e:IPKcm{     PK  C:U            X   org/bouncycastle/oer/its/template/etsi103097/extension/EtsiTs103097ExtensionModule.classUSUBw6,aPZnZ^J%)R7BvʿRƎ N@M32wΞ={כp5
I

]R5\
}n+hOgҳL1u<'|XgTOWOJ/p|Oe6*d][uῊ뭊)醢UAxI`Pv%gC(2תfů{ֶ%Е9^\M{o+
TQ|֚,}lĖ	tyb	
yz(ہ6CF]uN-#ar]+XYꊊt\~_z=K*t$~i$Q|nv=[s}Ɨ5sqziJ"DQDqmtf(76]*沃a^h|Υ}9H)sp{Sf)"IK,[-,
J<BXeem*zU|""_ŧ*;ޜ mݷNәޝlzv6s+w=iNv:a%D1#uzqΰs{ph:>K7x`bH1t3\ft:n⡎;9&t¤!)W1,<#8ưmCx0A(c><xP&}n^<Y.z!qJJ&*WM!b#٤Fv5iw&#[AI_D_kNFJ F ^p9]0B.xwR,Sg]<0xq6=be3cMmǂѿcE?b<HG.w܈EOޯ/;6\Bd[AP"Sԅ-Bm44|G PKwgu  z  PK
    "D:U            /   org/bouncycastle/oer/its/template/ieee1609dot2/PK  C:U            C   org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2$1.classUvF(J[JkSTv2(qBү1E2G[pr
L==ujgffH+ &103z'32"\zAஈJzhoJ^h1Ls)WWIT)U)M1qDs&6C^0Xmx>Ci1)ĦhMԄd&Y
bGP|ԬQ!io:.[C^N*2#RAE0Dl>
a"jV5lΖcA*Vv.ƹިR EM9"}&Jz+ܓΣ^vrW'cKϥ>^-+zʡPlBfPN[%۶6<*Vr(ܠFD胱x3PU^m(w@ÈQ
'4pJNkxGûpFمT`8ifo>evjؙff3@gz<R]8Y+x_CT72jXɛeEB'={|01||Wt RO9a@p0>1㊁1p*1k8>3!x׎"GQnHJ#VJQcs:0f>sK#=B1,䣐~(F)D48?VyR5!aaП0A7v?	Z۸0|<6m(#|1/a|W?oXM֛X;&x՗Hn1JJXz
Li::KJiL{T+_PKS<    PK  C:U            C   org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2$2.classRkAtxmӴ&ɵpUDH
	..m+}Dj_N}}3O -cj?eő~03H6e?r-`(H
OfS"y	?iRJ@@*'IG^LU(2<Ocɔa%?ٖ{(ܳIΦD#yZҋn&vHurp2G11ðW[:ܻjQ{P}FQ~ShK6
lpF
.J5\bKf[6yV2P%%Id;q,-%Lf}-=19Nfhv-2*U#ȗXy)x@UYͯoѨ#8GME4$E/Ц݆ǜRZIX.,`7``V'PKJ  i  PK  C:U            C   org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2$3.classSmkA~6/$^mSm}^r^}A	BSD](W*
oqVj%3s7ss~60ːujOQ0:a?UC;
Uo/jmJxJD}o-J8Hmn%kUJEl!QRҎ׍GQT+2|%2ҝpB0,M{4~dDpSOP	-PJy^ozkya-A?QQ8aqLsa6&Cc2`|ѩ9Fi\uG'ao)Yd,qB	,qT8%qy,wɸ%G4GSіz+-֢H&+JL;Z/biv]-,YH CFR(ғ2y#oa3"O	Z_a}sl'71|m*7nQ`J]U8#52?P(?#Tr9  3yD
f ~PKS    PK  C:U            A   org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2.class	|]EܼM^_dRHRJ-$JnM.}q}QYMdeQh"IܕleGVQپsyKj#?3sϜ9sf̼|+clVI)iY979;999K99+99k98 gC0g#ml;gq{9gsvgwrvgwsvgrvgpg!#='9{93ً٫뜽ٛ8{pO>8 C	j5sa&Yp؃\{r؋>qؗBq؟C"9a	9ġCzK9,㰜'8p(Ģ"5$Ti˶ñP`zMF_5]҄%ke	lZAQejAK2U5AMVw7S-[|,nL;f`{[牖oK
mroVYG+orӝk0ڗ)e|Z[lȠٵ #Wm}-Hj}\ݲ%/
^զ^0{:uVެt{6{{Ũ+*d)Mڛ`3\x0epimvoR*[}L2yY,ݰtq
ŋWsy݃Uاm]:ՖO ik;LXL=="k{=v]c#힅3!!n}4cnv\,u=n#92=D/mlT|{:oؙbN/lƸ1f?4Ĩ6MUҮR)ۊ3}i
# awƌ]Mm&n50t5V'(rg._qr8Vۃ\ׅۼ7YNc֘J)88q-8~[1`螟6kuϮm\WXTW'yzWta,iH/fj-[ww[~'AKN:L5p%yƘJrXev2ױhcFQCYXzPX"nrF>GRA"HlǪE/RV5)I7fqҔzM6pv؂fxŔANYU]`nپoM{q]˘%c_F1=bM->
MgoX5')1Г7V$zqaoA/(q/* }iHW/Ja%:n~6Mf\#ԧVORu)MݴݧXNy:ϲ;-Mx5DvdNΦ*:✝Lp? ؼ]kf:-<^1ڶfs=.JV:ErHZ+'b^-L@^)k---S㎏Iwiī-|떒7V`ףNMP6Qʨ*32-:c8i$J<m..e.稆cp]nڥы+}7+R'
_q,Ua6nYcaOhJބgG`m׫cBnSaZ
tec]./\Xc^:_)Yl#	.S=v	~X7֗Igj(q+%$0c'>$l(~D]PʂUQ+hxʣ(ģ05
Q(TEAcu!Z2^kI
X=~%H,Ģ${%R?';ȚvM7[+M2ѭz
MjU9Y,ڕؽ=8i뷤>L؝LDr2&i}.O$Mѳfe(WWدyhN8;p
Ti	g$|5	g&|p\·&|pỄ'\@>	.&\BCe	W$\E1jO?%\Cpz?'@0H"pa0B%f6v-[	/-gqJ'g;8{҆8Cl3qPYl|.qB=~q70ʡRMp$z	xfBG	!C8	'_$L8p:LW	_#|psI;'|p¥~DpǄ	-V>!KB˄N%|pl·	K	$\E	p1XŠ	'<A#_n&l#l'B[	pa0J+¯	!.Ie
a-\ϡ/Hט_9ya4Wi	MKtIy^(/r)1x<=ʫByv(I	p(	
<+PʫCy}(/
婡KBy1J{R#lJyRsCyq(
P(Pn
兡<3rPJV5@YxDJJ~J;
7_]1x/)Gj5U~Cfٲl-jCI>Z4-	ꨩ7h
TQ!?R&}qh:Obi	~RmдaP:U-H}wtʯJTC6HnۥpjG}Ls$Ի
kET~x`>sd9pe]񩱮1YXƝ%	cpvZR.e.(P*oycȏ@*Cg	0ψzY,bZT+s\i(Zboe˥҃5pب6c4olJJJFam1E~8V&#xTMRhkcLSy{ϫI?/'l|IYH
Иt`Pu8205-SjMjF%jOnQ0R8sor^ѪcV?feZ\\/(XvJ*/:^Ke;b%Dcn|)']},WM{"UDOa=zQm/&`R>9O2sT(+w֦	WIѦ8!s"M*Dw 3+4Yk"N	Mt%'9ΰhB:ct,r)0Z e;d_Uu\@ljjcI8B}qZEgς5.NuʻEbD>&|TM=Ll5eUѧsnY}#SxZ,l<1Eg8~Ѫ/mԤՠ\*9&6M.DDQ'JhɅ7RxɎ.cUGe}wDӯE;C2aM(׆r5~ePKN˙  5"  PK
    "D:U            9   org/bouncycastle/oer/its/template/ieee1609dot2/basetypes/PK  C:U            T   org/bouncycastle/oer/its/template/ieee1609dot2/basetypes/Ieee1609Dot2BaseTypes.class	xE_My&a	 (*$\\Y$KG4L@ҽoOTTPOr!xzz25~Uͺ 0&t.A2@a1UW#\a)µ#\p
7"܄
f[nE
v;Dn{Ea5B;@@XЉ :!l@؈0#Exq["lC؎a'v#A؋$>O!<³#"K/#:CxmwEx} |>F3 |572,Y>dŐ"+F6 @dpdG HdG!;0d ;qȎGv@vJ!+G6
hY%0.A|1N3ѧ6vl򱼐Ӎe[rOʠɺg֦Qan[ҷ{ 2[ddPХ&;XJ,`P8Iپ6Ɏ.ե\'5v&L2ru?WaƎr[Zǲ}=~LO0NuV)r
OBrf<XgEl؃4irdet-t뤒U=_o2O?]'%[m+e<2Fg<=*xzO[)*[WϴvO۱#Jt~:d_m٦6lrMRmmVXMݜ(6R.Nɱ*5ֳaRTk
sxC4Z/e>rEң)6̚ƌw}H{^H?1|ӯ]n{K,xO.^44i/[_wW*2̺i.֚nyAHb|yI_AZ][KKFS$
ysLr[-&uP/t2fWVS91!m1Inog+nm|Ï$Y5|镏?glq1Oj7]R^`
%隞gG,(SNoF.7F/7hdވM&e''Aڛ;`{hoÄ;cXx^my~xvW!ewz|L߬hکJ'яTS-1b.MF)I!/e$j&zigia^p~sdR
I
&Ϗf$]mLñ0	XvʧTv\,IO%\	<舷DsM
6CY{vy餺r:9q!UsHc5Q479e%┱;WShս|qYjY>촸*m2VJTyHRܮ"&5`.IݮR<GKts椳:
C\W}>np8FkE"yonsR~sN'!:Sn Rexy{dw2%WW1L[[-~=DR6K>1~<]TJvweZyL+ݦu-hV-]49mz9SPv;r RJX)r0PƮz	e~@#/dQdEa<_Yn,fya֏_QU\ >*}1~IR2oJK*8CJN2C/9:axJVn7>5[z^wcvn7&tNIڻOeF9VKX}.%\FpJbU	%,#,'\Gpaa%FMU	n%FpN]	%GXMh'!OxAXK$<HXGXOx0&£6vv "&!%<IGOx4³	`s!0<"e'46Ήvn^a??8`2?aEKVB8h؅V!N0	&B3"#'$-|BJXHXDh#S?'pb/	"o	#	"_	.%\FpJbU	%,#,'\Gpaa%FMU	n%Fp<6ݕ<Vc5>jB;~B'A:zC
G	Zv/a
a-a#M7HO)Ts,Ziۦ;%Ϻx3t&`^!JOR>.f)or+IR>$.)wKyJy7Ky7HywIZk\*eKVʭRrˤDʝR:);_K"R>"Rn2)I!&)KyBuR>&R*)v)^)oi)KywJ{|PG\5R^/dyB%*2gPW_c-rmuӦv_BnN4adNfSɬf=UP3tCfj:CCSɾT~9^8
1H/(s(dspC9_Rg{(MeIB͉Uu:nn6B!j.MB
ImjLD-O̹+G&~&]ڜ m(
!/g 0ab߂ta4ǿQ5L9
Xf p|3v}	Əްw_M'r햛vk-Sj|WVY[YڎaF`/eV֭_ڢ"U۞ʺV ̕a{sܫLI`Qbh3;CGaY
׾/N ?i)T`a75˯epʅq*kv*}v^0"]-$7Sf2ET_3*fmyHۏzBE 
ESMwVݣٓȿwHGXDaȊe	kK0wg_hVYҕ4*6{ڢ`b]%"q+%VUPAxY0xj?VlUmgjU7hvfM#~j?\pz(tp'tq@\D SͲS+mZDڮ樠/"U'qE:,5-FEЎ5lvhmCWԜ9˄b6M۱N;{^#o<>̹YY\6T:A۔_4v;{F.W{FO1_:LXo,G

ohZ[Z\xvڡY9OAEP:\YBtcc+G֤?#O~.,f=A<zemEl"6C-"V)"6=3γ
 ׄN!PK
`
    PK
    "D:U            3   org/bouncycastle/oer/its/template/ieee1609dot2dot1/PK  C:U            W   org/bouncycastle/oer/its/template/ieee1609dot2dot1/Ieee1609Dot2Dot1EcaEeInterface.classTmOA~ֶܵ_Ђr7B**#(JLhAKٙٙg/ CG:ubKS5铎|6K8=#j]v.EqcM0tXrR/wuJ.bx\1	ۭCUPg8p?I+qA
?tTU%-T0t-k_#W:7=WͅpȘ£5IԪf9ΆC	~Ɯw
/{Vy_1a`-ΊeUF}6^EE<WyW5{+CS5jBD%Cf޲CE2fz9Ҫ/[H#s ʵeP/"xǠrB<
j*płu+KܫJ[5U	
.hK%
5\pU5;oSa nvavfMU]IvG۵tTͷj"qgjعg
ĠCAS
N+H@S82pa@5pcq=l&di<H<R0`6~L+)!?LP!zFާ֌P#z]$SބEZO
oom&$۶"T)R'no㙽E\2Bv)	+kmx6D-ڈ	sGHZl/?#̄a0I)S-lͯ	PKPͽ  @  PK  C:U            V   org/bouncycastle/oer/its/template/ieee1609dot2dot1/Ieee1609Dot2Dot1EeRaInterface.classTSF:C\%7y&i:@,t&g5ItlH)fioݻp
F
	'	|&p]
}6㹾oHsުNdok_zܒ~DFmj:R~K${n[Evs-@SUwG]60R
Um~@j\AEWLKi.lCNӒ^iSRuX#CdXpS*<ǥQm'mOM{j%ɚӁJDfb6Z}GFS=WY.RA]<"US.^)-\\]o^N\mŒ˧6%lvZ*קn=mKRrk2R{eUFGHoEV&orؐ8]:Tc1u-bU5ұe0=+\lmH͓{*d:πMLԄmbDӟPoå<3q|7r-v_*q/݉1<(Ûco1ûCrW9|rW>>g9\RXef5
z%|Ͱ̰M.cd!Y~"qA:ϕ}.x2Tq3KNR3Ƹ؎tXl`pdS_ic2S/0~Ve3 vt
+׉y)
q|St`/a97a<ԈITn)(79<v)ٱ=_:.R*ʦ8J[8VgZst|2'FPKoc  
  PK   #D:U4gk  f?                 META-INF/MANIFEST.MF  PK   #D:Us4g  )              k  META-INF/BC2048KE.SFPK   #D:UJl  
"                 META-INF/BC2048KE.DSAPK
 
    "D:U                         R  META-INF/versions/9/PK   "D:UX,D    %               META-INF/versions/9/module-info.classPK
 
    "D:U                           org/PK
 
    "D:U                         =  org/bouncycastle/PK
 
    "D:U                         l  org/bouncycastle/asn1/PK
 
    "D:U                           org/bouncycastle/asn1/bsi/PK   C:UU1  C  4               org/bouncycastle/asn1/bsi/BSIObjectIdentifiers.classPK
 
    "D:U                         N  org/bouncycastle/asn1/cmc/PK   C:U  t  *               org/bouncycastle/asn1/cmc/BodyPartID.classPK   C:U]V]?    ,             f  org/bouncycastle/asn1/cmc/BodyPartList.classPK   C:UYH>    ,               org/bouncycastle/asn1/cmc/BodyPartPath.classPK   C:UƸ4  E  1               org/bouncycastle/asn1/cmc/BodyPartReference.classPK   C:URh  	  +              org/bouncycastle/asn1/cmc/CMCFailInfo.classPK   C:U՜  	  4             E org/bouncycastle/asn1/cmc/CMCObjectIdentifiers.classPK   C:U*k2	  	  2             C org/bouncycastle/asn1/cmc/CMCPublicationInfo.classPK   C:U*  v  )              org/bouncycastle/asn1/cmc/CMCStatus.classPK   C:UZK^    7              org/bouncycastle/asn1/cmc/CMCStatusInfo$OtherInfo.classPK   C:UCy    -             Q org/bouncycastle/asn1/cmc/CMCStatusInfo.classPK   C:U~b  3  4             % org/bouncycastle/asn1/cmc/CMCStatusInfoBuilder.classPK   C:Ua    /              org/bouncycastle/asn1/cmc/CMCStatusInfoV2.classPK   C:Uh    6             # org/bouncycastle/asn1/cmc/CMCStatusInfoV2Builder.classPK   C:U-    /             s& org/bouncycastle/asn1/cmc/CMCUnsignedData.classPK   C:U[a      6             ) org/bouncycastle/asn1/cmc/CertificationRequest$1.classPK   C:UV  v  M             * org/bouncycastle/asn1/cmc/CertificationRequest$CertificationRequestInfo.classPK   C:Uҁ<  F  4             *0 org/bouncycastle/asn1/cmc/CertificationRequest.classPK   C:U
  4  1             5 org/bouncycastle/asn1/cmc/ControlsProcessed.classPK   C:UUT    ,             8 org/bouncycastle/asn1/cmc/DecryptedPOP.classPK   C:UO  
  ,             < org/bouncycastle/asn1/cmc/EncryptedPOP.classPK   C:UM    0             A org/bouncycastle/asn1/cmc/ExtendedFailInfo.classPK   C:Up0  p  ,             DD org/bouncycastle/asn1/cmc/ExtensionReq.classPK   C:UT  
  &             ,G org/bouncycastle/asn1/cmc/GetCRL.classPK   C:Uwڋ    '             sK org/bouncycastle/asn1/cmc/GetCert.classPK   C:UJzk    /             N org/bouncycastle/asn1/cmc/IdentityProofV2.classPK   C:U0R     -             R org/bouncycastle/asn1/cmc/LraPopWitness.classPK   C:U#{  	  /             U org/bouncycastle/asn1/cmc/ModCertTemplate.classPK   C:U)`>k3    (             Z org/bouncycastle/asn1/cmc/OtherMsg.classPK   C:U`n7@  
  /             ] org/bouncycastle/asn1/cmc/OtherStatusInfo.classPK   C:U4
e  
  '             <b org/bouncycastle/asn1/cmc/PKIData.classPK   C:UΪ    +             f org/bouncycastle/asn1/cmc/PKIResponse.classPK   C:U ]g  "  (             j org/bouncycastle/asn1/cmc/PendInfo.classPK   C:Uj08?q    0             m org/bouncycastle/asn1/cmc/PopLinkWitnessV2.classPK   C:U/aA  	  3             Tq org/bouncycastle/asn1/cmc/PublishTrustAnchors.classPK   C:U%O    -             u org/bouncycastle/asn1/cmc/RevokeRequest.classPK   C:U09    /             { org/bouncycastle/asn1/cmc/TaggedAttribute.classPK   C:U1  f  :             [ org/bouncycastle/asn1/cmc/TaggedCertificationRequest.classPK   C:US    1              org/bouncycastle/asn1/cmc/TaggedContentInfo.classPK   C:U֑1^%  6
  -              org/bouncycastle/asn1/cmc/TaggedRequest.classPK   C:U5C    %              org/bouncycastle/asn1/cmc/Utils.classPK
 
    "D:U                          org/bouncycastle/asn1/cmp/PK   C:Us  *  2              org/bouncycastle/asn1/cmp/CAKeyUpdAnnContent.classPK   C:Ud&  
  .              org/bouncycastle/asn1/cmp/CMPCertificate.classPK   C:U#  ^  4             ˔ org/bouncycastle/asn1/cmp/CMPObjectIdentifiers.classPK   C:U$9    -             P org/bouncycastle/asn1/cmp/CRLAnnContent.classPK   C:UPBg    )              org/bouncycastle/asn1/cmp/CRLSource.classPK   C:Uxss    )              org/bouncycastle/asn1/cmp/CRLStatus.classPK   C:UF=  W  .             l org/bouncycastle/asn1/cmp/CertAnnContent.classPK   C:U  %  2             S org/bouncycastle/asn1/cmp/CertConfirmContent.classPK   C:UR5~    -              org/bouncycastle/asn1/cmp/CertOrEncCert.classPK   C:UW  	  .              org/bouncycastle/asn1/cmp/CertRepMessage.classPK   C:UڀH    6              org/bouncycastle/asn1/cmp/CertReqTemplateContent.classPK   C:U  
  ,              org/bouncycastle/asn1/cmp/CertResponse.classPK   C:Ulj"  
  *             2 org/bouncycastle/asn1/cmp/CertStatus.classPK   C:U3c14=    0             Y org/bouncycastle/asn1/cmp/CertifiedKeyPair.classPK   C:Uڑm    .              org/bouncycastle/asn1/cmp/Challenge$Rand.classPK   C:UͷY  =  )             , org/bouncycastle/asn1/cmp/Challenge.classPK   C:Ui    -              org/bouncycastle/asn1/cmp/DHBMParameter.classPK   C:UIk  	  /              org/bouncycastle/asn1/cmp/ErrorMsgContent.classPK   C:UsuEO    -              org/bouncycastle/asn1/cmp/GenMsgContent.classPK   C:U%eTO    -              org/bouncycastle/asn1/cmp/GenRepContent.classPK   C:UHn  F  0             m org/bouncycastle/asn1/cmp/InfoTypeAndValue.classPK   C:U7'    0              org/bouncycastle/asn1/cmp/KeyRecRepContent.classPK   C:U)R7C    4              org/bouncycastle/asn1/cmp/NestedMessageContent.classPK   C:UX{  (  '              org/bouncycastle/asn1/cmp/OOBCert.classPK   C:Ux  6
  +              org/bouncycastle/asn1/cmp/OOBCertHash.classPK   C:Ud1>  	  ,              org/bouncycastle/asn1/cmp/PBMParameter.classPK   C:Ui`8:    '             @ org/bouncycastle/asn1/cmp/PKIBody.classPK   C:UĪ?G  C  1              org/bouncycastle/asn1/cmp/PKIConfirmContent.classPK   C:Uh  B	  .             u org/bouncycastle/asn1/cmp/PKIFailureInfo.classPK   C:U6:  o	  +             V org/bouncycastle/asn1/cmp/PKIFreeText.classPK   C:UWo  Z  )               org/bouncycastle/asn1/cmp/PKIHeader.classPK   C:U5!    0              org/bouncycastle/asn1/cmp/PKIHeaderBuilder.classPK   C:UF΄  
  *              org/bouncycastle/asn1/cmp/PKIMessage.classPK   C:U<  X  +              org/bouncycastle/asn1/cmp/PKIMessages.classPK   C:UR>    )             R org/bouncycastle/asn1/cmp/PKIStatus.classPK   C:Uw  
  -              org/bouncycastle/asn1/cmp/PKIStatusInfo.classPK   C:UV  (  6              org/bouncycastle/asn1/cmp/POPODecKeyChallContent.classPK   C:U&n     5             )  org/bouncycastle/asn1/cmp/POPODecKeyRespContent.classPK   C:U>lDe  @  .             " org/bouncycastle/asn1/cmp/PollRepContent.classPK   C:U`gˋ  [	  .             N& org/bouncycastle/asn1/cmp/PollReqContent.classPK   C:U7uEsd    -             5* org/bouncycastle/asn1/cmp/ProtectedPart.classPK   C:U5  
  -             , org/bouncycastle/asn1/cmp/RevAnnContent.classPK   C:Uϡ    *             0 org/bouncycastle/asn1/cmp/RevDetails.classPK   C:UWW  
  -             D4 org/bouncycastle/asn1/cmp/RevRepContent.classPK   C:U/  Z  4             8 org/bouncycastle/asn1/cmp/RevRepContentBuilder.classPK   C:Uh43E  \  -             ; org/bouncycastle/asn1/cmp/RevReqContent.classPK   C:Uz  	  6             > org/bouncycastle/asn1/cmp/RootCaKeyUpdateContent.classPK
 
    "D:U                          C org/bouncycastle/asn1/cms/PK   C:U<u q    )             8C org/bouncycastle/asn1/cms/Attribute.classPK   C:U/a  ?  .              F org/bouncycastle/asn1/cms/AttributeTable.classPK   C:U˭aJ  [  *             K org/bouncycastle/asn1/cms/Attributes.classPK   C:UzI  w  1             _N org/bouncycastle/asn1/cms/AuthEnvelopedData.classPK   C:UV@y  }  7             T org/bouncycastle/asn1/cms/AuthEnvelopedDataParser.classPK   C:U\  ,  1             Y org/bouncycastle/asn1/cms/AuthenticatedData.classPK   C:Urv\  K  7             ` org/bouncycastle/asn1/cms/AuthenticatedDataParser.classPK   C:UI|]
  o  -             e org/bouncycastle/asn1/cms/CCMParameters.classPK   C:U,[  
  6             $i org/bouncycastle/asn1/cms/CMSAlgorithmProtection.classPK   C:U_  
  -             n org/bouncycastle/asn1/cms/CMSAttributes.classPK   C:U
1    4             $p org/bouncycastle/asn1/cms/CMSObjectIdentifiers.classPK   C:Ue  n  .             ]s org/bouncycastle/asn1/cms/CompressedData.classPK   C:UazT'$  0  4             v org/bouncycastle/asn1/cms/CompressedDataParser.classPK   C:Uy8  v  +             Dy org/bouncycastle/asn1/cms/ContentInfo.classPK   C:UYa    1             Q~ org/bouncycastle/asn1/cms/ContentInfoParser.classPK   C:UfK/  	  ,              org/bouncycastle/asn1/cms/DigestedData.classPK   C:UU?~  H	  4              org/bouncycastle/asn1/cms/EncryptedContentInfo.classPK   C:U%>X    :             _ org/bouncycastle/asn1/cms/EncryptedContentInfoParser.classPK   C:Uxz  G	  -              org/bouncycastle/asn1/cms/EncryptedData.classPK   C:U:(    -              org/bouncycastle/asn1/cms/EnvelopedData.classPK   C:U(4f  e  3             w org/bouncycastle/asn1/cms/EnvelopedDataParser.classPK   C:UaE    (             > org/bouncycastle/asn1/cms/Evidence.classPK   C:Uz]k'
  o  -             ٛ org/bouncycastle/asn1/cms/GCMParameters.classPK   C:Um_  ]  7             > org/bouncycastle/asn1/cms/GenericHybridParameters.classPK   C:UŬv  u  5             v org/bouncycastle/asn1/cms/IssuerAndSerialNumber.classPK   C:Uڛ  /
  -              org/bouncycastle/asn1/cms/KEKIdentifier.classPK   C:U30Q  	  0             k org/bouncycastle/asn1/cms/KEKRecipientInfo.classPK   C:UJҁp    ;              org/bouncycastle/asn1/cms/KeyAgreeRecipientIdentifier.classPK   C:UG,I  +  5              org/bouncycastle/asn1/cms/KeyAgreeRecipientInfo.classPK   C:Ude  <	  5             b org/bouncycastle/asn1/cms/KeyTransRecipientInfo.classPK   C:U):  H  (             * org/bouncycastle/asn1/cms/MetaData.classPK   C:U'm    9              org/bouncycastle/asn1/cms/OriginatorIdentifierOrKey.classPK   C:UL  	  .              org/bouncycastle/asn1/cms/OriginatorInfo.classPK   C:Ug    3              org/bouncycastle/asn1/cms/OriginatorPublicKey.classPK   C:U 1=    1              org/bouncycastle/asn1/cms/OtherKeyAttribute.classPK   C:U
>W    2             e org/bouncycastle/asn1/cms/OtherRecipientInfo.classPK   C:US~    9             D org/bouncycastle/asn1/cms/OtherRevocationInfoFormat.classPK   C:U9ۨ  
  5             ) org/bouncycastle/asn1/cms/PasswordRecipientInfo.classPK   C:Uc{  J  5             E org/bouncycastle/asn1/cms/RecipientEncryptedKey.classPK   C:UK    3             H org/bouncycastle/asn1/cms/RecipientIdentifier.classPK   C:U}    -              org/bouncycastle/asn1/cms/RecipientInfo.classPK   C:UIc  
  6              org/bouncycastle/asn1/cms/RecipientKeyIdentifier.classPK   C:UłSN    0              org/bouncycastle/asn1/cms/RsaKemParameters.classPK   C:U \  P  *              org/bouncycastle/asn1/cms/SCVPReqRes.classPK   C:U&    *              org/bouncycastle/asn1/cms/SignedData.classPK   C:Uf{G  	  0             4 org/bouncycastle/asn1/cms/SignedDataParser.classPK   C:UJ
  $  0              org/bouncycastle/asn1/cms/SignerIdentifier.classPK   C:U,Y8    *             D org/bouncycastle/asn1/cms/SignerInfo.classPK   C:U#
    $              org/bouncycastle/asn1/cms/Time.classPK   C:U~    /             3	 org/bouncycastle/asn1/cms/TimeStampAndCRL.classPK   C:Uj/d  E  6             O org/bouncycastle/asn1/cms/TimeStampTokenEvidence.classPK   C:UA   6  /              org/bouncycastle/asn1/cms/TimeStampedData.classPK   C:U!>5  Z
  5             x org/bouncycastle/asn1/cms/TimeStampedDataParser.classPK
 
    "D:U                          org/bouncycastle/asn1/cms/ecc/PK   C:U7    4              org/bouncycastle/asn1/cms/ecc/ECCCMSSharedInfo.classPK   C:U^D  \	  9              org/bouncycastle/asn1/cms/ecc/MQVuserKeyingMaterial.classPK
 
    "D:U                           org/bouncycastle/asn1/crmf/PK   C:UR
u  #  6             '! org/bouncycastle/asn1/crmf/AttributeTypeAndValue.classPK   C:U5L;    6              $ org/bouncycastle/asn1/crmf/CRMFObjectIdentifiers.classPK   C:Uź1    '             & org/bouncycastle/asn1/crmf/CertId.classPK   C:U|ŕoH  h  0             ) org/bouncycastle/asn1/crmf/CertReqMessages.classPK   C:UY    +             m, org/bouncycastle/asn1/crmf/CertReqMsg.classPK   C:U_F<    ,             l1 org/bouncycastle/asn1/crmf/CertRequest.classPK   C:U_}  n  -             5 org/bouncycastle/asn1/crmf/CertTemplate.classPK   C:U?h  P  4             : org/bouncycastle/asn1/crmf/CertTemplateBuilder.classPK   C:Uړ	V    )             P? org/bouncycastle/asn1/crmf/Controls.classPK   C:U՛3q    ,             A org/bouncycastle/asn1/crmf/DhSigStatic.classPK   C:U('  K  -             E org/bouncycastle/asn1/crmf/EncKeyWithID.classPK   C:U/F    -             JI org/bouncycastle/asn1/crmf/EncryptedKey.classPK   C:U&l  M
  /             K org/bouncycastle/asn1/crmf/EncryptedValue.classPK   C:UR_~    1             6Q org/bouncycastle/asn1/crmf/OptionalValidity.classPK   C:U%^  	  2             U org/bouncycastle/asn1/crmf/PKIArchiveOptions.classPK   C:U@{    3             GY org/bouncycastle/asn1/crmf/PKIPublicationInfo.classPK   C:U蚺    +             i] org/bouncycastle/asn1/crmf/PKMACValue.classPK   C:Ud
  	  ,             ` org/bouncycastle/asn1/crmf/POPOPrivKey.classPK   C:Uڔ  I  /             d org/bouncycastle/asn1/crmf/POPOSigningKey.classPK   C:UM	  
  4             [i org/bouncycastle/asn1/crmf/POPOSigningKeyInput.classPK   C:U
    2             m org/bouncycastle/asn1/crmf/ProofOfPossession.classPK   C:Ud  b  .             "r org/bouncycastle/asn1/crmf/SinglePubInfo.classPK   C:U Hh  2  2             u org/bouncycastle/asn1/crmf/SubsequentMessage.classPK
 
    "D:U                         w org/bouncycastle/asn1/dvcs/PK   C:U @    -             x org/bouncycastle/asn1/dvcs/CertEtcToken.classPK   C:U
5R!  :  -             ~ org/bouncycastle/asn1/dvcs/DVCSCertInfo.classPK   C:U"1l    4             Ň org/bouncycastle/asn1/dvcs/DVCSCertInfoBuilder.classPK   C:U
   	  0              org/bouncycastle/asn1/dvcs/DVCSErrorNotice.classPK   C:UՔj    6              org/bouncycastle/asn1/dvcs/DVCSObjectIdentifiers.classPK   C:UM+  ]  ,             ޒ org/bouncycastle/asn1/dvcs/DVCSRequest.classPK   C:U]O{T'  /  7             L org/bouncycastle/asn1/dvcs/DVCSRequestInformation.classPK   C:U  z  >             ؟ org/bouncycastle/asn1/dvcs/DVCSRequestInformationBuilder.classPK   C:UɶB&  i
  -             ʦ org/bouncycastle/asn1/dvcs/DVCSResponse.classPK   C:U)y  d  )             K org/bouncycastle/asn1/dvcs/DVCSTime.classPK   C:Ul    %             ; org/bouncycastle/asn1/dvcs/Data.classPK   C:Ubm  F  .             K org/bouncycastle/asn1/dvcs/PathProcInput.classPK   C:Uçy    ,              org/bouncycastle/asn1/dvcs/ServiceType.classPK   C:UML  \  /              org/bouncycastle/asn1/dvcs/TargetEtcChain.classPK
 
    "D:U                          org/bouncycastle/asn1/eac/PK   C:US    0              org/bouncycastle/asn1/eac/BidirectionalMap.classPK   C:UfX    -              org/bouncycastle/asn1/eac/CVCertificate.classPK   C:U'zR    4             I org/bouncycastle/asn1/eac/CVCertificateRequest.classPK   C:U#dB
  p  /              org/bouncycastle/asn1/eac/CertificateBody.classPK   C:U-  
  >              org/bouncycastle/asn1/eac/CertificateHolderAuthorization.classPK   C:Uct  D  :             5 org/bouncycastle/asn1/eac/CertificateHolderReference.classPK   C:UZ   ;  ?             h org/bouncycastle/asn1/eac/CertificationAuthorityReference.classPK   C:UIm  D  4              org/bouncycastle/asn1/eac/EACObjectIdentifiers.classPK   C:URX߭    '              org/bouncycastle/asn1/eac/EACTags.classPK   C:UOa    .              org/bouncycastle/asn1/eac/ECDSAPublicKey.classPK   C:UAl=>    2              org/bouncycastle/asn1/eac/Flags$StringJoiner.classPK   C:U߅sq  5  %               org/bouncycastle/asn1/eac/Flags.classPK   C:UV9    *             I org/bouncycastle/asn1/eac/PackedDate.classPK   C:Ut2=  ?  3             ` org/bouncycastle/asn1/eac/PublicKeyDataObject.classPK   C:UYZD  
  ,             	 org/bouncycastle/asn1/eac/RSAPublicKey.classPK   C:UK    /              org/bouncycastle/asn1/eac/UnsignedInteger.classPK
 
    "D:U                          org/bouncycastle/asn1/esf/PK   C:Ufs    8             " org/bouncycastle/asn1/esf/CommitmentTypeIdentifier.classPK   C:U2*  o  8              org/bouncycastle/asn1/esf/CommitmentTypeIndication.classPK   C:UL  j  7              org/bouncycastle/asn1/esf/CommitmentTypeQualifier.classPK   C:U"(p­    6              org/bouncycastle/asn1/esf/CompleteRevocationRefs.classPK   C:UHtF    -              org/bouncycastle/asn1/esf/CrlIdentifier.classPK   C:Uc!>!    )               org/bouncycastle/asn1/esf/CrlListID.classPK   C:Um9(  	  *             # org/bouncycastle/asn1/esf/CrlOcspRef.classPK   C:U l  J  .             7( org/bouncycastle/asn1/esf/CrlValidatedID.classPK   C:Uwfܐ    -             + org/bouncycastle/asn1/esf/ESFAttributes.classPK   C:U,C     .             . org/bouncycastle/asn1/esf/OcspIdentifier.classPK   C:Uʏk.V  G  *             f2 org/bouncycastle/asn1/esf/OcspListID.classPK   C:UA%b  K  /             6 org/bouncycastle/asn1/esf/OcspResponsesID.classPK   C:U[y  Z  )             9 org/bouncycastle/asn1/esf/OtherHash.classPK   C:U 6    4             < org/bouncycastle/asn1/esf/OtherHashAlgAndValue.classPK   C:Uٖ  v  ,             a@ org/bouncycastle/asn1/esf/OtherRevRefs.classPK   C:U@'q  U  ,             QD org/bouncycastle/asn1/esf/OtherRevVals.classPK   C:UZ`  
  0             -H org/bouncycastle/asn1/esf/RevocationValues.classPK   C:Uh\  	  ,             M org/bouncycastle/asn1/esf/SPUserNotice.classPK   C:U    %             &R org/bouncycastle/asn1/esf/SPuri.classPK   C:U{  b  6             bT org/bouncycastle/asn1/esf/SigPolicyQualifierInfo.classPK   C:UYQ    3             AW org/bouncycastle/asn1/esf/SigPolicyQualifiers.classPK   C:U:  q
  1             Y org/bouncycastle/asn1/esf/SignaturePolicyId.classPK   C:UR'"    9             ] org/bouncycastle/asn1/esf/SignaturePolicyIdentifier.classPK   C:UW#  
  /             e` org/bouncycastle/asn1/esf/SignerAttribute.classPK   C:UPFS  
  .             ^e org/bouncycastle/asn1/esf/SignerLocation.classPK
 
    "D:U                         
k org/bouncycastle/asn1/ess/PK   C:U4  g  ,             Ek org/bouncycastle/asn1/ess/ContentHints.classPK   C:U:u  Y  1             n org/bouncycastle/asn1/ess/ContentIdentifier.classPK   C:U\  ^  )             p org/bouncycastle/asn1/ess/ESSCertID.classPK   C:Ugo=K  F  +             t org/bouncycastle/asn1/ess/ESSCertIDv2.classPK   C:UT?)V  
  +             z org/bouncycastle/asn1/ess/OtherCertID.classPK   C:U-dح    7             ~ org/bouncycastle/asn1/ess/OtherSigningCertificate.classPK   C:UW~Nv    2             ނ org/bouncycastle/asn1/ess/SigningCertificate.classPK   C:U'  	  4              org/bouncycastle/asn1/ess/SigningCertificateV2.classPK
 
    "D:U                         9 org/bouncycastle/asn1/est/PK   C:U@1    )             q org/bouncycastle/asn1/est/AttrOrOID.classPK   C:Uے  |  (             J org/bouncycastle/asn1/est/CsrAttrs.classPK   C:Ue     %             2 org/bouncycastle/asn1/est/Utils.classPK
 
    "D:U                         x org/bouncycastle/asn1/icao/PK   C:U},  	  /              org/bouncycastle/asn1/icao/CscaMasterList.classPK   C:U    .             : org/bouncycastle/asn1/icao/DataGroupHash.classPK   C:UhYB    6             _ org/bouncycastle/asn1/icao/ICAOObjectIdentifiers.classPK   C:URu    2             ǝ org/bouncycastle/asn1/icao/LDSSecurityObject.classPK   C:U*_  g  /              org/bouncycastle/asn1/icao/LDSVersionInfo.classPK
 
    "D:U                          org/bouncycastle/asn1/isismtt/PK   C:U&    <              org/bouncycastle/asn1/isismtt/ISISMTTObjectIdentifiers.classPK
 
    "D:U            #              org/bouncycastle/asn1/isismtt/ocsp/PK   C:U`   	  1             Ϊ org/bouncycastle/asn1/isismtt/ocsp/CertHash.classPK   C:UZ  :  =             / org/bouncycastle/asn1/isismtt/ocsp/RequestedCertificate.classPK
 
    "D:U            #              org/bouncycastle/asn1/isismtt/x509/PK   C:UN6    D             ߴ org/bouncycastle/asn1/isismtt/x509/AdditionalInformationSyntax.classPK   C:UL;D  
  8             
 org/bouncycastle/asn1/isismtt/x509/AdmissionSyntax.classPK   C:UMQ  
  3              org/bouncycastle/asn1/isismtt/x509/Admissions.classPK   C:U+ʍ    >             f org/bouncycastle/asn1/isismtt/x509/DeclarationOfMajority.classPK   C:U6    6              org/bouncycastle/asn1/isismtt/x509/MonetaryLimit.classPK   C:U?U[  
  8              org/bouncycastle/asn1/isismtt/x509/NamingAuthority.classPK   C:Ut  X  :              org/bouncycastle/asn1/isismtt/x509/ProcurationSyntax.classPK   C:UP    7              org/bouncycastle/asn1/isismtt/x509/ProfessionInfo.classPK   C:U*氥  {  4             
 org/bouncycastle/asn1/isismtt/x509/Restriction.classPK
 
    "D:U                          org/bouncycastle/asn1/smime/PK   C:U?4    1             K org/bouncycastle/asn1/smime/SMIMEAttributes.classPK   C:UQGN  O  3              org/bouncycastle/asn1/smime/SMIMECapabilities.classPK   C:USxyS    <             j org/bouncycastle/asn1/smime/SMIMECapabilitiesAttribute.classPK   C:U4    1             ' org/bouncycastle/asn1/smime/SMIMECapability.classPK   C:U# 2    7              org/bouncycastle/asn1/smime/SMIMECapabilityVector.classPK   C:U<)n  [  G              org/bouncycastle/asn1/smime/SMIMEEncryptionKeyPreferenceAttribute.classPK
 
    "D:U                         } org/bouncycastle/asn1/tsp/PK   C:USL  	  (              org/bouncycastle/asn1/tsp/Accuracy.classPK   C:U5ٖ  B  0             W org/bouncycastle/asn1/tsp/ArchiveTimeStamp.classPK   C:U*	A    5             ~  org/bouncycastle/asn1/tsp/ArchiveTimeStampChain.classPK   C:U)0n    8             " org/bouncycastle/asn1/tsp/ArchiveTimeStampSequence.classPK   C:U.)*_    +              org/bouncycastle/asn1/tsp/CryptoInfos.classPK   C:U4(     .             
 org/bouncycastle/asn1/tsp/EncryptionInfo.classPK   C:U&    .             ) org/bouncycastle/asn1/tsp/EvidenceRecord.classPK   C:U07P  h  .             k org/bouncycastle/asn1/tsp/MessageImprint.classPK   C:U0Ő  )	  /              org/bouncycastle/asn1/tsp/PartialHashtree.classPK   C:UhK    '               org/bouncycastle/asn1/tsp/TSTInfo.classPK   C:U9B9O  
  ,             & org/bouncycastle/asn1/tsp/TimeStampReq.classPK   C:U|de    -             , org/bouncycastle/asn1/tsp/TimeStampResp.classPK
 
    "D:U                         / org/bouncycastle/oer/PK   C:Ugk    %             / org/bouncycastle/oer/BitBuilder.classPK   C:UJyw    2             4 org/bouncycastle/oer/DeferredElementSupplier.classPK   C:U]
  "  "             6 org/bouncycastle/oer/Element.classPK   C:UDpun      *             D org/bouncycastle/oer/ElementSupplier.classPK   C:Uϰd    %             E org/bouncycastle/oer/OERDecoder.classPK   C:UD    1             BG org/bouncycastle/oer/OERDefinition$BaseType.classPK   C:Uskv    2             K org/bouncycastle/oer/OERDefinition$Builder$1.classPK   C:U[-s  V  2             jM org/bouncycastle/oer/OERDefinition$Builder$2.classPK   C:UZpѵ  !  0             nO org/bouncycastle/oer/OERDefinition$Builder.classPK   C:U5    6             \ org/bouncycastle/oer/OERDefinition$ExtensionList.classPK   C:Ub   q  5             ^ org/bouncycastle/oer/OERDefinition$ItemProvider.classPK   C:UA m    7             @_ org/bouncycastle/oer/OERDefinition$MutableBuilder.classPK   C:U,    5             c org/bouncycastle/oer/OERDefinition$OptionalList.classPK   C:UR3  I  (             d org/bouncycastle/oer/OERDefinition.classPK   C:UJ<    %             k org/bouncycastle/oer/OEREncoder.classPK   C:UrL  V  +             m org/bouncycastle/oer/OERInputStream$1.classPK   C:UԆc    0             p org/bouncycastle/oer/OERInputStream$Choice.classPK   C:U?t  p  4             t org/bouncycastle/oer/OERInputStream$LengthInfo.classPK   C:U=&  	  2             hv org/bouncycastle/oer/OERInputStream$Sequence.classPK   C:U-  =0  )             { org/bouncycastle/oer/OERInputStream.classPK   C:UQ[    (             Α org/bouncycastle/oer/OEROptional$1.classPK   C:UбW  F
  &              org/bouncycastle/oer/OEROptional.classPK   C:Uk_  +  ,              org/bouncycastle/oer/OEROutputStream$1.classPK   C:UUV2+  -(  *              org/bouncycastle/oer/OEROutputStream.classPK   C:U       !              org/bouncycastle/oer/Switch.classPK   C:UgK
    C             x org/bouncycastle/oer/SwitchIndexer$Asn1EncodableVectorIndexer.classPK   C:UĊ
    <              org/bouncycastle/oer/SwitchIndexer$Asn1SequenceIndexer.classPK   C:UI     :             t org/bouncycastle/oer/SwitchIndexer$FixedValueIndexer.classPK   C:UadR    (             ִ org/bouncycastle/oer/SwitchIndexer.classPK
 
    "D:U                         < org/bouncycastle/oer/its/PK   C:U[b  8  )             s org/bouncycastle/oer/its/ItsUtils$1.classPK   C:UAP    '             g org/bouncycastle/oer/its/ItsUtils.classPK
 
    "D:U            $              org/bouncycastle/oer/its/etsi102941/PK   C:U"RG|    9              org/bouncycastle/oer/its/etsi102941/AaEntry$Builder.classPK   C:U "U    1             ̿ org/bouncycastle/oer/its/etsi102941/AaEntry.classPK   C:Uoj    E             H org/bouncycastle/oer/its/etsi102941/AuthorizationRequestMessage.classPK   C:Up    L             % org/bouncycastle/oer/its/etsi102941/AuthorizationRequestMessageWithPop.classPK   C:U}ű  
  C              org/bouncycastle/oer/its/etsi102941/AuthorizationResponseCode.classPK   C:Uqbj    F             1 org/bouncycastle/oer/its/etsi102941/AuthorizationResponseMessage.classPK   C:U(  |  P              org/bouncycastle/oer/its/etsi102941/AuthorizationValidationRequest$Builder.classPK   C:UQ)  w  H              org/bouncycastle/oer/its/etsi102941/AuthorizationValidationRequest.classPK   C:U.w    O              org/bouncycastle/oer/its/etsi102941/AuthorizationValidationRequestMessage.classPK   C:Ui>  !  Q              org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponse$Builder.classPK   C:U!  
  I             l org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponse.classPK   C:U    M              org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponseCode.classPK   C:UMYv    P              org/bouncycastle/oer/its/etsi102941/AuthorizationValidationResponseMessage.classPK   C:Ue    F              org/bouncycastle/oer/its/etsi102941/CaCertificateRekeyingMessage.classPK   C:U5t    F              org/bouncycastle/oer/its/etsi102941/CaCertificateRequest$Builder.classPK   C:U鎚/    >              org/bouncycastle/oer/its/etsi102941/CaCertificateRequest.classPK   C:U[IQc    E             R org/bouncycastle/oer/its/etsi102941/CaCertificateRequestMessage.classPK   C:U
1ҹf    J             ( org/bouncycastle/oer/its/etsi102941/CertificateRevocationListMessage.classPK   C:U2Yd|    2              org/bouncycastle/oer/its/etsi102941/CrlEntry.classPK   C:U
8B  ,  4             0 org/bouncycastle/oer/its/etsi102941/CtlCommand.classPK   C:Uæc  ^  3              org/bouncycastle/oer/its/etsi102941/CtlDelete.classPK   C:UѰo    2              org/bouncycastle/oer/its/etsi102941/CtlEntry.classPK   C:UI    ;              org/bouncycastle/oer/its/etsi102941/CtlFormat$Builder.classPK   C:Ut5    3               org/bouncycastle/oer/its/etsi102941/CtlFormat.classPK   C:U6=  R  2             ~ org/bouncycastle/oer/its/etsi102941/DcDelete.classPK   C:UF W    9              org/bouncycastle/oer/its/etsi102941/DcEntry$Builder.classPK   C:U?B"!    1              org/bouncycastle/oer/its/etsi102941/DcEntry.classPK   C:UD  w  2              org/bouncycastle/oer/its/etsi102941/DeltaCtl.classPK   C:UqX  Y  9             # org/bouncycastle/oer/its/etsi102941/EaEntry$Builder.classPK   C:U6  @	  1             ' org/bouncycastle/oer/its/etsi102941/EaEntry.classPK   C:U&G-Nm    A              org/bouncycastle/oer/its/etsi102941/EnrolmentRequestMessage.classPK   C:U
    ?              org/bouncycastle/oer/its/etsi102941/EnrolmentResponseCode.classPK   C:U[o    B              org/bouncycastle/oer/its/etsi102941/EnrolmentResponseMessage.classPK   C:Uz     :              org/bouncycastle/oer/its/etsi102941/EtsiTs102941Data.classPK   C:U  W  A             Y org/bouncycastle/oer/its/etsi102941/EtsiTs102941DataContent.classPK   C:U  /  1             $ org/bouncycastle/oer/its/etsi102941/FillCtl.classPK   C:UF!  /  1             & org/bouncycastle/oer/its/etsi102941/FullCtl.classPK   C:U	9P  P  @             o( org/bouncycastle/oer/its/etsi102941/InnerAtRequest$Builder.classPK   C:U/g  =  8             -+ org/bouncycastle/oer/its/etsi102941/InnerAtRequest.classPK   C:Un4+  8  A             \/ org/bouncycastle/oer/its/etsi102941/InnerAtResponse$Builder.classPK   C:UW)P  +
  9             1 org/bouncycastle/oer/its/etsi102941/InnerAtResponse.classPK   C:U[c    @             6 org/bouncycastle/oer/its/etsi102941/InnerEcRequest$Builder.classPK   C:UZ$    8             8 org/bouncycastle/oer/its/etsi102941/InnerEcRequest.classPK   C:U!a    D             = org/bouncycastle/oer/its/etsi102941/InnerEcRequestSignedForPop.classPK   C:UBk$  ,  A             > org/bouncycastle/oer/its/etsi102941/InnerEcResponse$Builder.classPK   C:Uǖ  
  9             zA org/bouncycastle/oer/its/etsi102941/InnerEcResponse.classPK   C:UWe    H             E org/bouncycastle/oer/its/etsi102941/RcaCertificateTrustListMessage.classPK   C:Unki    O             dG org/bouncycastle/oer/its/etsi102941/RcaDoubleSignedLinkCertificateMessage.classPK   C:UKJi    O             JI org/bouncycastle/oer/its/etsi102941/RcaSingleSignedLinkCertificateMessage.classPK   C:UuUu  o  =             0K org/bouncycastle/oer/its/etsi102941/RootCaEntry$Builder.classPK   C:Uo<    5             M org/bouncycastle/oer/its/etsi102941/RootCaEntry.classPK   C:U5{    D             P org/bouncycastle/oer/its/etsi102941/SequenceOfCrlEntry$Builder.classPK   C:U`SP    <             R org/bouncycastle/oer/its/etsi102941/SequenceOfCrlEntry.classPK   C:U5    F             V org/bouncycastle/oer/its/etsi102941/SequenceOfCtlCommand$Builder.classPK   C:U"xT    >             X org/bouncycastle/oer/its/etsi102941/SequenceOfCtlCommand.classPK   C:UP    A             \ org/bouncycastle/oer/its/etsi102941/SharedAtRequest$Builder.classPK   C:UH    9             S_ org/bouncycastle/oer/its/etsi102941/SharedAtRequest.classPK   C:U6e    H             c org/bouncycastle/oer/its/etsi102941/TlmCertificateTrustListMessage.classPK   C:U})x)    :             }e org/bouncycastle/oer/its/etsi102941/TlmEntry$Builder.classPK   C:U=mGЛ  d	  2             g org/bouncycastle/oer/its/etsi102941/TlmEntry.classPK   C:Ufc    C             k org/bouncycastle/oer/its/etsi102941/TlmLinkCertificateMessage.classPK   C:U,    ?             _m org/bouncycastle/oer/its/etsi102941/ToBeSignedCrl$Builder.classPK   C:UƯ  `
  7             o org/bouncycastle/oer/its/etsi102941/ToBeSignedCrl.classPK   C:U6 oB    K             s org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificate$Builder.classPK   C:Um:  C  C             %v org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificate.classPK   C:Uo    F             y org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificateRca.classPK   C:UdR    F             | org/bouncycastle/oer/its/etsi102941/ToBeSignedLinkCertificateTlm.classPK   C:Us_  A  :             U~ org/bouncycastle/oer/its/etsi102941/ToBeSignedRcaCtl.classPK   C:UWN  A  :             S org/bouncycastle/oer/its/etsi102941/ToBeSignedTlmCtl.classPK   C:U7m  H  -             V org/bouncycastle/oer/its/etsi102941/Url.classPK
 
    "D:U            .             i org/bouncycastle/oer/its/etsi102941/basetypes/PK   C:U*    E              org/bouncycastle/oer/its/etsi102941/basetypes/CertificateFormat.classPK   C:U6b]  
  P             / org/bouncycastle/oer/its/etsi102941/basetypes/CertificateSubjectAttributes.classPK   C:UE-H    ?             
 org/bouncycastle/oer/its/etsi102941/basetypes/EcSignature.classPK   C:U?(  R  >              org/bouncycastle/oer/its/etsi102941/basetypes/PublicKeys.classPK   C:Un-E  (  ;             A org/bouncycastle/oer/its/etsi102941/basetypes/Version.classPK
 
    "D:U            $              org/bouncycastle/oer/its/etsi103097/PK   C:U",+  =  A              org/bouncycastle/oer/its/etsi103097/EtsiTs103097Certificate.classPK   C:U  i  :              org/bouncycastle/oer/its/etsi103097/EtsiTs103097Data.classPK   C:UoQ    C              org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataEncrypted.classPK   C:U^k\    J              org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataEncryptedUnicast.classPK   C:U7mMN    @              org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSigned.classPK   C:U7X    L             B org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedAndEncrypted.classPK   C:U
+[    S              org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedAndEncryptedUnicast.classPK   C:U\[    O              org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedExternalPayload.classPK   C:U<.pP    G             Ȥ org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataSignedUnicast.classPK   C:U<դQ    C              org/bouncycastle/oer/its/etsi103097/EtsiTs103097DataUnsecured.classPK
 
    "D:U            .             O org/bouncycastle/oer/its/etsi103097/extension/PK   C:Ux
    ^              org/bouncycastle/oer/its/etsi103097/extension/EtsiOriginatingHeaderInfoExtension$Builder.classPK   C:UKwF    V             - org/bouncycastle/oer/its/etsi103097/extension/EtsiOriginatingHeaderInfoExtension.classPK   C:U    R              org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CrlRequest$Builder.classPK   C:Uʼ  	  J              org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CrlRequest.classPK   C:U'
_  >  R              org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CtlRequest$Builder.classPK   C:U]?e    J             s org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941CtlRequest.classPK   C:U`    O             k org/bouncycastle/oer/its/etsi103097/extension/EtsiTs102941DeltaCtlRequest.classPK   C:U\    9              org/bouncycastle/oer/its/etsi103097/extension/ExtId.classPK   C:UQ  i  =             + org/bouncycastle/oer/its/etsi103097/extension/Extension.classPK
 
    "D:U            &              org/bouncycastle/oer/its/ieee1609dot2/PK   C:UBQ  &  D              org/bouncycastle/oer/its/ieee1609dot2/AesCcmCiphertext$Builder.classPK   C:Uc63    <             [ org/bouncycastle/oer/its/ieee1609dot2/AesCcmCiphertext.classPK   C:U@T  ~  7              org/bouncycastle/oer/its/ieee1609dot2/Certificate.classPK   C:U|+?    C             b org/bouncycastle/oer/its/ieee1609dot2/CertificateBase$Builder.classPK   C:UlmJ  
  ;              org/bouncycastle/oer/its/ieee1609dot2/CertificateBase.classPK   C:Ue>1  |  9             L org/bouncycastle/oer/its/ieee1609dot2/CertificateId.classPK   C:U%w  {  ;              org/bouncycastle/oer/its/ieee1609dot2/CertificateType.classPK   C:U  
  E             
 org/bouncycastle/oer/its/ieee1609dot2/ContributedExtensionBlock.classPK   C:UV    N              org/bouncycastle/oer/its/ieee1609dot2/ContributedExtensionBlocks$Builder.classPK   C:Uw    F              org/bouncycastle/oer/its/ieee1609dot2/ContributedExtensionBlocks.classPK   C:UnC]    <              org/bouncycastle/oer/its/ieee1609dot2/CounterSignature.classPK   C:U/  2  A             r org/bouncycastle/oer/its/ieee1609dot2/EncryptedData$Builder.classPK   C:U3HɎ&    9             k org/bouncycastle/oer/its/ieee1609dot2/EncryptedData.classPK   C:U
U_@Y    F              org/bouncycastle/oer/its/ieee1609dot2/EncryptedDataEncryptionKey.classPK   C:U  {  9              org/bouncycastle/oer/its/ieee1609dot2/EndEntityType.classPK   C:U6»    ?              org/bouncycastle/oer/its/ieee1609dot2/ExplicitCertificate.classPK   C:UVp?    6             + org/bouncycastle/oer/its/ieee1609dot2/HashedData.classPK   C:UPG  u  >             1 org/bouncycastle/oer/its/ieee1609dot2/HeaderInfo$Builder.classPK   C:Uy1S    6             #  org/bouncycastle/oer/its/ieee1609dot2/HeaderInfo.classPK   C:U+x    C              org/bouncycastle/oer/its/ieee1609dot2/HeaderInfoContributorId.classPK   C:Um4  J  ?             P
 org/bouncycastle/oer/its/ieee1609dot2/Ieee1609Dot2Content.classPK   C:U*  
  D              org/bouncycastle/oer/its/ieee1609dot2/Ieee1609Dot2Data$Builder.classPK   C:U
R    <             j org/bouncycastle/oer/its/ieee1609dot2/Ieee1609Dot2Data.classPK   C:U<    ?             & org/bouncycastle/oer/its/ieee1609dot2/ImplicitCertificate.classPK   C:U2  c	  <             N org/bouncycastle/oer/its/ieee1609dot2/IssuerIdentifier.classPK   C:Uި    ?             t org/bouncycastle/oer/its/ieee1609dot2/LinkageData$Builder.classPK   C:U)  
  7              org/bouncycastle/oer/its/ieee1609dot2/LinkageData.classPK   C:UZ  H  H             # org/bouncycastle/oer/its/ieee1609dot2/MissingCrlIdentifier$Builder.classPK   C:U+$    @             % org/bouncycastle/oer/its/ieee1609dot2/MissingCrlIdentifier.classPK   C:U8K[  ;  4             ) org/bouncycastle/oer/its/ieee1609dot2/Opaque$1.classPK   C:U    2             , org/bouncycastle/oer/its/ieee1609dot2/Opaque.classPK   C:Uךߏ  A  C             $0 org/bouncycastle/oer/its/ieee1609dot2/PKRecipientInfo$Builder.classPK   C:U[Cx1    ;             $2 org/bouncycastle/oer/its/ieee1609dot2/PKRecipientInfo.classPK   C:UiȤ  ?  =             5 org/bouncycastle/oer/its/ieee1609dot2/PduFunctionalType.classPK   C:UKBz    E             9 org/bouncycastle/oer/its/ieee1609dot2/PreSharedKeyRecipientInfo.classPK   C:U2 M  ~  H             ; org/bouncycastle/oer/its/ieee1609dot2/PsidGroupPermissions$Builder.classPK   C:Uxq  \
  @             X> org/bouncycastle/oer/its/ieee1609dot2/PsidGroupPermissions.classPK   C:Uh0_  
  9             B org/bouncycastle/oer/its/ieee1609dot2/RecipientInfo.classPK   C:UŽ    I             F org/bouncycastle/oer/its/ieee1609dot2/SequenceOfCertificate$Builder.classPK   C:U('    A             I org/bouncycastle/oer/its/ieee1609dot2/SequenceOfCertificate.classPK   C:U@T  \  R             L org/bouncycastle/oer/its/ieee1609dot2/SequenceOfPsidGroupPermissions$Builder.classPK   C:U\8R  f  J             O org/bouncycastle/oer/its/ieee1609dot2/SequenceOfPsidGroupPermissions.classPK   C:Uԕ  '  K             R org/bouncycastle/oer/its/ieee1609dot2/SequenceOfRecipientInfo$Builder.classPK   C:UzULv  U  C             [U org/bouncycastle/oer/its/ieee1609dot2/SequenceOfRecipientInfo.classPK   C:U  ~  >             BY org/bouncycastle/oer/its/ieee1609dot2/SignedData$Builder.classPK   C:U)    6             [ org/bouncycastle/oer/its/ieee1609dot2/SignedData.classPK   C:U{    E             _ org/bouncycastle/oer/its/ieee1609dot2/SignedDataPayload$Builder.classPK   C:U>;  3  =             a org/bouncycastle/oer/its/ieee1609dot2/SignedDataPayload.classPK   C:U
,  	  <             ke org/bouncycastle/oer/its/ieee1609dot2/SignerIdentifier.classPK   C:U    >             i org/bouncycastle/oer/its/ieee1609dot2/SubjectPermissions.classPK   C:UvU  8  E             m org/bouncycastle/oer/its/ieee1609dot2/SymmRecipientInfo$Builder.classPK   C:Ub)    =             o org/bouncycastle/oer/its/ieee1609dot2/SymmRecipientInfo.classPK   C:U]D   I  ?             @s org/bouncycastle/oer/its/ieee1609dot2/SymmetricCiphertext.classPK   C:UXL8    I             v org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedCertificate$Builder.classPK   C:Uaڪ     A             || org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedCertificate.classPK   C:UP̀w    B             k org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedData$Builder.classPK   C:UWZ    :             R org/bouncycastle/oer/its/ieee1609dot2/ToBeSignedData.classPK   C:Uk
  .	  D             Љ org/bouncycastle/oer/its/ieee1609dot2/VerificationKeyIndicator.classPK
 
    "D:U            0             ˍ org/bouncycastle/oer/its/ieee1609dot2/basetypes/PK   C:U.4^    U              org/bouncycastle/oer/its/ieee1609dot2/basetypes/BasePublicEncryptionKey$Builder.classPK   C:Uz32  v  M             2 org/bouncycastle/oer/its/ieee1609dot2/basetypes/BasePublicEncryptionKey.classPK   C:Uh/G    ?             . org/bouncycastle/oer/its/ieee1609dot2/basetypes/BitmapSsp.classPK   C:U  b  L              org/bouncycastle/oer/its/ieee1609dot2/basetypes/BitmapSspRange$Builder.classPK   C:Ut  B  D             Ϙ org/bouncycastle/oer/its/ieee1609dot2/basetypes/BitmapSspRange.classPK   C:Uх  N  L             Y org/bouncycastle/oer/its/ieee1609dot2/basetypes/CircularRegion$Builder.classPK   C:U~׉;    D             X org/bouncycastle/oer/its/ieee1609dot2/basetypes/CircularRegion.classPK   C:UN    O              org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndRegions$Builder.classPK   C:UIo?  	  G              org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndRegions.classPK   C:UlET    R             § org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndSubregions$Builder.classPK   C:U&  	  J             ˩ org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryAndSubregions.classPK   C:Ur    A             i org/bouncycastle/oer/its/ieee1609dot2/basetypes/CountryOnly.classPK   C:U0S_]  o  ?             J org/bouncycastle/oer/its/ieee1609dot2/basetypes/CrlSeries.classPK   C:Ufb    >              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Duration.classPK   C:UD׾      C             1 org/bouncycastle/oer/its/ieee1609dot2/basetypes/EccCurvePoint.classPK   C:U
|z/  5  G             ` org/bouncycastle/oer/its/ieee1609dot2/basetypes/EccP256CurvePoint.classPK   C:U>I    G              org/bouncycastle/oer/its/ieee1609dot2/basetypes/EccP384CurvePoint.classPK   C:U%c  1  P              org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP256Signature$Builder.classPK   C:Uu  a  H             i org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP256Signature.classPK   C:U  :  P              org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP384Signature$Builder.classPK   C:U'   a  H             j org/bouncycastle/oer/its/ieee1609dot2/basetypes/EcdsaP384Signature.classPK   C:UCO    S               org/bouncycastle/oer/its/ieee1609dot2/basetypes/EciesP256EncryptedKey$Builder.classPK   C:U\-fD    K              org/bouncycastle/oer/its/ieee1609dot2/basetypes/EciesP256EncryptedKey.classPK   C:U>X  D  ?             B org/bouncycastle/oer/its/ieee1609dot2/basetypes/Elevation.classPK   C:U&s2    C             E org/bouncycastle/oer/its/ieee1609dot2/basetypes/EncryptionKey.classPK   C:UV  d  F              org/bouncycastle/oer/its/ieee1609dot2/basetypes/GeographicRegion.classPK   C:UV  x  O             [ org/bouncycastle/oer/its/ieee1609dot2/basetypes/GroupLinkageValue$Builder.classPK   C:U z0r    G              org/bouncycastle/oer/its/ieee1609dot2/basetypes/GroupLinkageValue.classPK   C:U    C              org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashAlgorithm.classPK   C:U%%.  L  >              org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId.classPK   C:UjG    @             T org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId10.classPK   C:Ue!    ?             k org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId3.classPK   C:Uy    @             ~ org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId32.classPK   C:U#    ?              org/bouncycastle/oer/its/ieee1609dot2/basetypes/HashedId8.classPK   C:UG    >              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Hostname.classPK   C:UdL!1    <              org/bouncycastle/oer/its/ieee1609dot2/basetypes/IValue.classPK   C:Ul  
  F              org/bouncycastle/oer/its/ieee1609dot2/basetypes/IdentifiedRegion.classPK   C:Uhj    C              org/bouncycastle/oer/its/ieee1609dot2/basetypes/KnownLatitude.classPK   C:UrX|    D               org/bouncycastle/oer/its/ieee1609dot2/basetypes/KnownLongitude.classPK   C:UE:T  6  :              org/bouncycastle/oer/its/ieee1609dot2/basetypes/LaId.classPK   C:U@z    >             Y org/bouncycastle/oer/its/ieee1609dot2/basetypes/Latitude.classPK   C:Uh#K  +  A             E org/bouncycastle/oer/its/ieee1609dot2/basetypes/LinkageSeed.classPK   C:UzÁ    B             	 org/bouncycastle/oer/its/ieee1609dot2/basetypes/LinkageValue.classPK   C:UfI    ?              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Longitude.classPK   C:U    E             
 org/bouncycastle/oer/its/ieee1609dot2/basetypes/NinetyDegreeInt.classPK   C:U3Nq5  a  H             l org/bouncycastle/oer/its/ieee1609dot2/basetypes/OneEightyDegreeInt.classPK   C:U清>	    F              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point256$Builder.classPK   C:UiK  ~  >              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point256.classPK   C:UϏ    F             K org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point384$Builder.classPK   C:U-O/8  t  >              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Point384.classPK   C:ULP    M             ]! org/bouncycastle/oer/its/ieee1609dot2/basetypes/PolygonalRegion$Builder.classPK   C:U!w    E             # org/bouncycastle/oer/its/ieee1609dot2/basetypes/PolygonalRegion.classPK   C:U2&=C  
  :             ]' org/bouncycastle/oer/its/ieee1609dot2/basetypes/Psid.classPK   C:UB.}  >  E             * org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSsp$Builder.classPK   C:UŮ;d\    =             + org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSsp.classPK   C:UK    J             / org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSspRange$Builder.classPK   C:U|g|";    B             1 org/bouncycastle/oer/its/ieee1609dot2/basetypes/PsidSspRange.classPK   C:Ug    Q             z5 org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicEncryptionKey$Builder.classPK   C:U7c<n4  	  I             7 org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicEncryptionKey.classPK   C:U  ?  S             7; org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicVerificationKey$Builder.classPK   C:URN  
  K             = org/bouncycastle/oer/its/ieee1609dot2/basetypes/PublicVerificationKey.classPK   C:Us    O             B org/bouncycastle/oer/its/ieee1609dot2/basetypes/RectangularRegion$Builder.classPK   C:U:    G             D org/bouncycastle/oer/its/ieee1609dot2/basetypes/RectangularRegion.classPK   C:UW< ӊ  }  Q             G org/bouncycastle/oer/its/ieee1609dot2/basetypes/RegionAndSubregions$Builder.classPK   C:UYD:  	  I             I org/bouncycastle/oer/its/ieee1609dot2/basetypes/RegionAndSubregions.classPK   C:U}Ipm   s   E             NM org/bouncycastle/oer/its/ieee1609dot2/basetypes/RegionInterface.classPK   C:UH    Q             .N org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId3$Builder.classPK   C:US&c  t  I             {P org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId3.classPK   C:UntԱ    Q             UT org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId8$Builder.classPK   C:U@c  t  I             V org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfHashedId8.classPK   C:U@݋    P             |Z org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfIdentifiedRegion.classPK   C:U[+:N    K             ] org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfOctetString.classPK   C:UG]?	    L             a org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsid$Builder.classPK   C:UK     D              d org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsid.classPK   C:UX
    O             g org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSsp$Builder.classPK   C:UO8"    G             9j org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSsp.classPK   C:UӶYX    T             m org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSspRange$Builder.classPK   C:U}N    L             p org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfPsidSspRange.classPK   C:U>{*    Q             t org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfRectangularRegion.classPK   C:U  /  S             tw org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfRegionAndSubregions.classPK   C:U    N             z org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint16$Builder.classPK   C:UQ\^  S  F             } org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint16.classPK   C:Uܢ\    M              org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint8$Builder.classPK   C:Uq  f  E             ; org/bouncycastle/oer/its/ieee1609dot2/basetypes/SequenceOfUint8.classPK   C:Uswm  	  P             2 org/bouncycastle/oer/its/ieee1609dot2/basetypes/ServiceSpecificPermissions.classPK   C:Ugk  `	  ?             T org/bouncycastle/oer/its/ieee1609dot2/basetypes/Signature.classPK   C:U[2-y  j  >             B org/bouncycastle/oer/its/ieee1609dot2/basetypes/SspRange.classPK   C:U%    F             ' org/bouncycastle/oer/its/ieee1609dot2/basetypes/SubjectAssurance.classPK   C:U^Wo  [  C             ` org/bouncycastle/oer/its/ieee1609dot2/basetypes/SymmAlgorithm.classPK   C:Uƽ|  C  L             v org/bouncycastle/oer/its/ieee1609dot2/basetypes/SymmetricEncryptionKey.classPK   C:U&&:N    L              org/bouncycastle/oer/its/ieee1609dot2/basetypes/ThreeDLocation$Builder.classPK   C:Uh  &
  D              org/bouncycastle/oer/its/ieee1609dot2/basetypes/ThreeDLocation.classPK   C:UMJҝ  W  <              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Time32.classPK   C:U<}    <              org/bouncycastle/oer/its/ieee1609dot2/basetypes/Time64.classPK   C:U.y  I  J              org/bouncycastle/oer/its/ieee1609dot2/basetypes/TwoDLocation$Builder.classPK   C:U  f  B              org/bouncycastle/oer/its/ieee1609dot2/basetypes/TwoDLocation.classPK   C:U1    <              org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT16.classPK   C:U9T[    ;             V org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT3.classPK   C:Upl    <              org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT32.classPK   C:UWI  o  <              org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT64.classPK   C:U u    ;              org/bouncycastle/oer/its/ieee1609dot2/basetypes/UINT8.classPK   C:U>Z    >             ; org/bouncycastle/oer/its/ieee1609dot2/basetypes/UintBase.classPK   C:Uhb    E             G org/bouncycastle/oer/its/ieee1609dot2/basetypes/UnknownLatitude.classPK   C:Uj&Y    F              org/bouncycastle/oer/its/ieee1609dot2/basetypes/UnknownLongitude.classPK   C:UB~  D  L              org/bouncycastle/oer/its/ieee1609dot2/basetypes/ValidityPeriod$Builder.classPK   C:Uii  	  D              org/bouncycastle/oer/its/ieee1609dot2/basetypes/ValidityPeriod.classPK
 
    "D:U            *              org/bouncycastle/oer/its/ieee1609dot2dot1/PK   C:UX!Zi  
  @             . org/bouncycastle/oer/its/ieee1609dot2dot1/AdditionalParams.classPK   C:Uk{{    B             y org/bouncycastle/oer/its/ieee1609dot2dot1/ButterflyExpansion.classPK   C:Uh`s  S  O             { org/bouncycastle/oer/its/ieee1609dot2dot1/ButterflyParamsOriginal$Builder.classPK   C:UBʨj  	  G              org/bouncycastle/oer/its/ieee1609dot2dot1/ButterflyParamsOriginal.classPK   C:Uʾ}    H              org/bouncycastle/oer/its/ieee1609dot2dot1/EeEcaCertRequest$Builder.classPK   C:UUf  
  @              org/bouncycastle/oer/its/ieee1609dot2dot1/EeEcaCertRequest.classPK   C:Up2<    G             b org/bouncycastle/oer/its/ieee1609dot2dot1/EeRaCertRequest$Builder.classPK   C:UuZg  
  ?              org/bouncycastle/oer/its/ieee1609dot2dot1/EeRaCertRequest.classPK
 
    "D:U            "              org/bouncycastle/oer/its/template/PK
 
    "D:U            -             ' org/bouncycastle/oer/its/template/etsi102941/PK   C:Ub@  
  I             r org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941MessagesCa.classPK   C:US	s    I             ) org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TrustLists.classPK   C:Uw|c  o  Q              org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesAuthorization.classPK   C:Us=  t  [              org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesAuthorizationValidation.classPK   C:UK  d  P             d 	 org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesCaManagement.classPK   C:UbK  	  M             	 org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesEnrolment.classPK   C:U!=    S             u	 org/bouncycastle/oer/its/template/etsi102941/EtsiTs102941TypesLinkCertificate.classPK
 
    "D:U            7             3
	 org/bouncycastle/oer/its/template/etsi102941/basetypes/PK   C:U3  &  R             
	 org/bouncycastle/oer/its/template/etsi102941/basetypes/EtsiTs102941BaseTypes.classPK
 
    "D:U            -             	 org/bouncycastle/oer/its/template/etsi103097/PK   C:U
`    E             ,	 org/bouncycastle/oer/its/template/etsi103097/EtsiTs103097Module.classPK
 
    "D:U            7             	 org/bouncycastle/oer/its/template/etsi103097/extension/PK   C:Ucm{     Z             T	 org/bouncycastle/oer/its/template/etsi103097/extension/EtsiTs103097ExtensionModule$1.classPK   C:Uwgu  z  X             W	 org/bouncycastle/oer/its/template/etsi103097/extension/EtsiTs103097ExtensionModule.classPK
 
    "D:U            /             	 org/bouncycastle/oer/its/template/ieee1609dot2/PK   C:US<    C             	 org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2$1.classPK   C:UJ  i  C             	 org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2$2.classPK   C:US    C             )!	 org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2$3.classPK   C:UN˙  5"  A             #	 org/bouncycastle/oer/its/template/ieee1609dot2/IEEE1609dot2.classPK
 
    "D:U            9             2	 org/bouncycastle/oer/its/template/ieee1609dot2/basetypes/PK   C:U
`
    T             2	 org/bouncycastle/oer/its/template/ieee1609dot2/basetypes/Ieee1609Dot2BaseTypes.classPK
 
    "D:U            3             TA	 org/bouncycastle/oer/its/template/ieee1609dot2dot1/PK   C:UPͽ  @  W             A	 org/bouncycastle/oer/its/template/ieee1609dot2dot1/Ieee1609Dot2Dot1EcaEeInterface.classPK   C:Uoc  
  V             E	 org/bouncycastle/oer/its/template/ieee1609dot2dot1/Ieee1609Dot2Dot1EeRaInterface.classPK    pp;  RI	  PACK200PK  D:U              META-INF/MANIFEST.MF  ْ̽ڶ("?X1ι9Dc?P*RV/+J/)X܈sd{VW]#wge+8_EdJn5D=HҸ?̿y=˅tweA`o־pSˤQtTiV)I`5ԛjH"3NfuȨz<Ijx^mx}[HƦճlKv'O/#<Կ;N\>Ǎr+aew<%XΟHZ?f6#:g5bS7Et?:38<]׋zrU3~G">?_Efe~{!hY eݹVK5v u?od-5H!ϟb߿؅3ns`m3ׂ'خ|Z2aPC??"W`una^6,UnE>r׹q~
uhCH,5u7n& ΫumqҫYF:Gnց]>ṃ!,픾
~DM+6O*k=܃j[Q7/}Wic5;ezz'Eʬt~VXyZ^F:>,u^ˤ+!k2:1SK5Fw7˰sz"n;?RaԾ0zps3M4k?a_o]ߣot_9^qڮg"
x4۩uF;߿ںdǮDfo*_|[7w7m>
oz,mS-_BFn޼wnGz#<ݗUmF]e]yv.ŗrClmjLȈM7nndx>uۊT_
Ӻr4~wΔtG	g1K끸M7}/xEu:9Nxn'܀L[<
%SCɸ*7nI+7r.~0|
ps%~f#cal__RZK6~W3M4tCsD쐤˝n3޷]ܼ%.wʜo>^;"]~
w ݋?;7ȭz⁛#H}ɧWk2nfW:8Q74JqKZ`k<7s+ycw{3th&/ӗWs:k~K^Wnޯr޶K<$]Jݪ0l'O݇ܭ2V֟#޹WTz
ӹz{ȵo)؝!˯.sy߹da!Lݎ#݇VA4s/wDSޖ}0Ԋ|sdw{qK\K]G70lfv`jķ;]`"%竁x;yDC\H=ޱ;*~[?:&a4!_sǇu=Nr@;ß뽀j9w8?Y81iLzq6rD{?
n8)mלs'tNe};Oяg+P/̈Ұ{"rUl6)W܉/~wp{F_Jcr/5nϽo%sG^	mV|0[hրkmFy/|Sj奯Fwvh63~Z%'hz{.j:˱?yq-#T5r ȷ8x]7* ϶y˯"ұoIV׺Pk_i5{?Χwi=}{x,I^ rƻwѕ&NWm]3'nw2ڷxM
J</0Y/St.w ?DσA+r_x_|Sp/loqڋb}?˼GV\s=؝xYӒ|Lf[ۖ'5Wjum:;d{o`#xTk Yyf_wݴZ^
K;+k;}a_=w9XUuznxwa,o
E?ɿkaks{̸uv?${<mmk˲ѮW܀׬e]_FoF`Gѿ>8I۹7r{O6qqg՞Y{{:̮Hd/6=9й7jֶcV~lvGV=ŦFj}>b_ndL7ps-:׷ulOWo?+~:f#C_$c]w	Rwx{np]?3WW%o/_y:8Hz͚ݗhwzh4IݰvC<b5+~_lϛ?y2SG0{Q~Wc4qܨ\}\QP+LIP\OyĽ\y=ѸWY%" cmi~ose俢/zzM.ׯyrLcz2W^϶A8Eu^3=I?u/¯s}8/~̓ԧz^Əӥ~zz I琴k?VւK}=J:?.֯+';6>Kq:~_}wqި}rS_<yLwwu_E9L}ĵPCW>#̣u܉\FOK|TNm-ox+nhZex[?z/ţr+HkF"sXN۷P/Ӿii
#hS;qtׂ}7լӭ)Cԯ:~k<ꩢاe|]цo}neW"֨wE_/Z*:+wkN>xV^Ww#'ᯯ`]_Kd	xޒ㡱G7q+@zMn<#}s)__V|Qeݳ~om<".Ϩw%
-o~Swzosȏm7(#LqGz#]j}n-tV =}sOiܻ)^qU>F>V|(տnǾλGOjyvNКsoFg15t풝|]گՎovD-｜U6ѳ5c}vw!ye_-_6bݞ{~<#nӞǱ^Yses-z@ў	mIg13>z
!Ժj?o<|Od5{fK?Aco믚 w:cG
[;|e˗/G"%}<Yq͇;߮j<4r])*9Jm7^.y|?gKO{d
ApFZ]\k'XEk'gkQ}.djY1@?{-"
70}z_ 5Ͽ\l"K8NV$fG.+}Ft0Do@czV2y¿:Rcv7<5M]~w@"ހso-`!6PL
gi.D#g[{A7ffC3T5hPb}o$X@ڑ$nʊ&CMsg玴ЁqA{me8P{I|$@If gU~ﳆ末"2Ft(9	dY[:+;+@llՑpQaQ,VvBMfB
-;	!	r}+UuXT1N5ÜK6z焵GiG J|Wy%Ʒ Ƃ&9[	FETNΏ_~Ҙ1b8.U   E"Ԅ"fmPU H]Y[?B%/Rz
$i"hbv(2{|E%-S~3ʉD$h;Xy9fC^R$}"$[T=LH[wrǎ*Vnv9ɸÁH!Hcޛ'=laжqv8ڥlKrꩩ[ B̙4bcVY^(hU&A`q[%rnY:6Yj((D?*&^)M8=vH=Gb=#p	z=#0jfEZZo>&)	mG}pZOBU}kq N/ҸUU"ms"WnIeItiBsO(ux
£<6(,3۾PrBE4fwT"֥A}7>O
\0ŜCG+pRp|:9z{`֮j<zg)0A'O<xPcZOu5ctDk[q'Jz} !ԶBfĉ<qr8VƑ zӸ"JnhK8NYB,r-GkaGg{LU#UfR{9}E[bւUj=M88pM^Zb2)HrtYʽm@&ZBlp@˽#6dҸgVWTlkl6ǒe8t>O
EOy Nr[&se?"gf`[Lt8ɆxfB	49fY-1x=> W&sij;7Pqd:a)!zgӕ9J2?$+*-dڀh&1~ZDjI; d'QכVo5\iʵф k{;Nk{7^rLj#3{VRcHpf` 	nEOf:*Kw
@
5`kuFNՖV&Dv2N}|DJn4> -<=[&m۳W vY3yqrJel(2Ezvn I 4αG޶i 5a-̶7b!L=hek"]55G2\֪h}Y\Z)UdEkclmrrx^'dM̧yCfuOcb'ǏOOZsl:eMĿ>נ}ͤuv`%'='? sйE6pWQX,.ޣu1C`Ie?*!L3"~]L=	!멽?8䅛[cѷdb`;c.:ڇ-Jj
)Q0ᶌWxlR-g|D̾g" AηŵKŶ惁buo08M%!ݣ>.`R*Ї>~j 	fq2ZM|P6BAsόN3)2D[`?͐9+ݷ!;Lmis	~xc^ĸ)0ڛ"⭂H+h&Ac\.vJ`ZS
iu3
fc"Mr4и6p|q<IBݞ̬4I;L)gK~nxw]V]ŧ)rc&sq҇u5ɭvjeq}Y`f!d45WԸw:l\屰IjdLr
c1
	F\B07QuOi	mCyZ >XrC^q
O&nfu-j)*;!>XlI`h0`c .9qt0jyV{
A&=" 37&aǽZM6$R	/B ! Pwq4ژ^jڎW!`d\btٿ3 dk8q܆ Q 8ԫBāAb-oDlh3U?Ï#ү鋹z.
A\ {YM {BȩZ@5`T-R4~7mӐ") #-k^Svnq:xxD"h(4Jۤt-R2R4Xa@n`mI󘬿#a	f0Mz\odlY!kЪ:9TY\uɟV{F0/lN{&F#LY|s& 4u%j=74_)Ŕ$v:~H=&oI@; |Yd큼l0"
8>rXP-)W7IKF`ȾQlgO bz
4j1]{k|˸5!@ߺ4Ƣ^hH3?+gʝUej#Ͽ/JA9WpG>pNTGoK SL給#i[.R==8=0A

vNwqP여ȻClB+dJxlUYb;Lv9/
}J`7<k#Hꓻ4cc ^gj#5"KUUcޯ:4%+R㦎l
C`Wdwz!mq-|
oٔvW.D#0x.Bn`PRwvy'"I/}\4QV'v
6Cj
Eχ{ \B Ub'iApvpx
@9
`ۍn=?d2
ȦmOp^Kl;\uRFXh%)c2Wo	XDEen?8,b܀3@/|sP-`bRhϰtXjn0d#ED"DAGV/E}X+Ōo41X3bc^1א22Ne_G#@
[V78+GXプmowU'[|N(n{l/4W&z6j@&SoGKn?_jVYtW2*,T|/#2G'``H4HZ"!hT^Fڮ{F@x[	+Pb{8uib5H_5vS"EJMX+W)iH,tᑄ%Ew	omWJdVj ʨ]`;^y3pB1Ŋ<E<C(|M1v%?Lot	NN92[kV6nU_{vbJ9jSCp"$.ж2̓2RqC>_>բ2W$F^(k	*mCmicI?Jů٭e	c`pSvU_L֖/\lљm1l#հi)`*R	VdR2L玔\}8Y9URLlz'~X2[<*Hi`sy'Ŷ[P2M6a/щ|<r>hxbrS8WC3i82zUmK#ʛaK!@L7Jib=Ɋ!HfLrk,@HKz$PhF& 2?JУpQQٹ5k8?;C;{Cmd YG@,`6$W\bL`h9IiW8O6sOH#^Ph. @3z鲞T맛5J[ajcw#X7Fѯ'Hue>RYLatv50,qُṉK1T>\XQ>PLlVAHHA$5ǽ2+vHJ{X@H5=saыi.ʁu
!!3nke{̦<F%gdJFސ	hZf-o^ٶ]rMřx%<1`ztd-X>eesqw} "H/[qtߪ& (0C4,xT =/ƨI6{<>}0 Md+6NpSh$&+7QzgQ͋Y.?z#\#ǆHE*GmM{Z@9M&7\8ϖV-tt:XR44`ӎQ#{5ŁeU5HJ1:CNXyT٢$I4yy2R6GDk\dlh`Wq2P9Z>ÛPSk.!>4^ftGՖpISMMį}2 ((V'/Rӌxn+XR>O*(7#&-`ї4b&r?enE[ȯGTm_.+z~<7fYuL^jЫc&Cj(j`WXOt't4J{ S)(hΜ15ĥJǢc&eQRluLez;0ۍ*Q}aEnOh
`n!:.[F9WVn}o=ԹE)uq!>Dñ/V8p2K&i03p-H	ҳP,\QQӒ!pmAr-5
RS4,zr˶R~Vɦk!Oph0!LP$;&K0qY-'SZ=HijȔ,
M!'q J$cxҵ>-5ْ$ p/rk^4pfpcu(!uZZP1akY=$,[+ O /c-
7)uѶ1)9{7d\i8MVAzUjԇ׼7˛b*9o!mBpp44{n1&l(ޚC4ɮZ. mdo<%j.QH\NrlɅ
U<K' V
~be%~NG?	<G
*'0՘3!jlQy"$$R/S2brgwZ#+}'\\MwrǬ6o %2i@SL7G!|6	啕>'q4#/,Y8lP%8F<,QC68p8VD#-<]B⼫eAnyJhA\B03E,%p}oRϘezN3!T63\r0ͣh-8(
j}Nهl,@7쾿s	@;:
$te3y*@ƹ3i1"lCt,*Y;{%\T0'f(X(+YIv4d^Y6tƚaF*Bl3ؖgᖾhfV!VNba9.BrxXD3x)N3L!ɷB]H˙a>i~JS'Kْ)ncusѽ15sZќu{G&vrHTAk^kD
vTji}1[/9ȧQ ΩtK
N-kmČ$?3t4ߡpUPs_ЅD׃%im $Q"+OM3쓑Mi}"YQ$<BX!#Yٱ,e[G|iro}2}-76k;zOD2AxU
eJi9R'o958[.6/1dL`6v9:zWm\݁J+7-9,=`[}4P9Q>^'\sԚ[vHpEhlRD.Mo@@|p8mP8Ę$lI
t im(^*wux|H';UAsGwE{6ӣ0nqsΐ|ǚ
5aqӲ\@9|fNdy.wh(W;C-(Q;=
ff2Y,0*Xo"|^ȯAw<!jɛ
RjhM
;xݜ.
b'1.x@ޟ&{,A`=	Ltr3h)ImWQ>o"bI\XLIPjA
{'x$k2 AY$CCkѺޫrpÝrc[k,-Nlv:34[20\+_0V#v${.NYU ~ƕXĽmVtGkh2׀%.8sF;a
W;+^!\'dvl?1owi6G=&j>]}7Yg_~'GMޡGGA!>g(˖ua1ٮһ'~nM#;:lGl8bGˁpƍÕ8ŝ~UbQ.FK"xTDTNNCT=52Ll@ZmDȮ|7;i *MbǑ̘[g3c3c87|'Th9n2ӊVC`b4532Ɓ.U+YKD\zLHfnK֬b|\DR@fGVq 쇀;%CvL 5/>&L؍qdr 9!bm7:VVL㉏ lk	}'	387&Oqh҉|֋Fg,jltwE؜p6F=ppGgd:P{xYGQ`3ܠ.+gIǬ@)ElY+~5X#GNW-QNN0<!9 ia:86#tQvN; }Xi!
xUܠ:(v61%]K"oGfo&P>!xRJ@f9)Q(R^u6rmq}Tq
)㴖Y{M"9#`;~:ipW=|﷋d4 g*A%5glI
EWNϷIrW`"/Xc]<ь%^,␙@Ч"xƸc>Ra%x$=4*"H^%v6c0ȪnEUã͍/iVKlNUjT3SO2fpiL8øG~jBMH`i?٬yJuF>
09j2BaI,b2qւVJ(i-g&gL4< [D_cCT 1tcST5<iΏ AXo%-a>x{~yvc}u6j45E;]/F>.IY-daP̄!-F4>v>	I~kf[/pX0ҭ%igf]iQ62GMgJ	Z~w :	8Asl`@ hG>ØI_V䮙tCNc[gCZHU¬"dAl^~Ќ
!B?[4혗bH`gb5zCHܦaf/ʹ2Ps_ʣzVb1d]tue;烇^'Y懇UzTS-\B+&R
;eB:;yΩ%e;-N"Eb
b1 חAŨ6bcRIg{0VP/Glgb*X( V?T:,dܓD#4t8`#Zm+:ȸ';r!hW1;f{Fm3F*Ic
wKfErrJ<c40:.1ǜ:tWrMT.E2z2 ՇDo՞IZgW1ToP:wrO)q)B]a.CįLLH׶+hND [ey{EHAo/إ&[2Z[fWd!H>*W.ay<,I0KwQ~	}\ִoR)KisIyx5Emm.єFW`c}qcԇ1Ce57Ou+\$q6a(]=ZA	 ZSvr?\.pIwx>)rIUz}	VnS)'(>I^LFSb1ye3)iLѓ4Ca`pꅣ{-IOU	iMk+{!cHK y.w-mWi/i"gYJz'DS
"-GQ\w+-ʒ-TOlԆgk/&*Ty~.L4]dDaڞFYgmGʊU/
O9Zr2SfeѨ#HV7u~ߛf8-[VbCk$<\5<&I%71mA(õ}F GPieB[	Y{r&v(2U$;Flނa@`F踶ft4#AC|~JKHڛ9/
Ý9A>^l.be?|{fG!E{C_`帽A5wX4&V/v˟\^
)ξu۶D(p\rѶ*NB<}iY<<tsWcCH?OXlfV֑t9EO;|q*'*?d}
Kxׅ(	6$iax60	N-E$@:;0{	 XKJ9('mc掆Tsm=Pk^xo8le[h+m zhfu:k i>e0YkDM
a׌t-U<wEBC,S\|\MMFZk!

!uM:C>%|F)L99N7r[ksHL"|pp}9	'ޗp+DTl詰eKPsBzʧ=DDvE?fch*hZN.v_4Ek7pҟV9@N
Ne=w!΅5{1PƋ"5K0NƋ*C-bE
OJ?	R7h.VFgM<#*<:R3V0޻߶%b@lD]8PW+eˆS?߯]=F1tǎKxxdq`-nB`D1/Bsg|S8HC)QP*I)D	M)߼ =|-q@W8@9 6C.TJ7jןld=
)_إ]#3zLQ@uHUb4tH^4,ѫ2~ԯ6/dĵ=C	 Qm,*;>#<xuPu5%P;A`p)~Z
^$6#%W]Gg̐eB^DtJdt;+Xi$Vxrg`xS
X(d0@z7&~W`WdY[O{$O
W#d'< w^bìRK`p>:Jdvbv:2eh/ A)E
_c_sq߬$WP4(91Xnɨ7H%s+
 U̆tW~}Ѵ1!"ZGp|3kƶLR7jRxI|3UGƙ{єTE/e%\ vA3&gVz	3Ρn"ۅ1,vֈ*@.`AQ9p
.L6ЄqOmt8H
wo`AYֽi &88γ`Uɏ-䀏F7qTTޓέ5`P͝bOpmZ[-Z:A3Y<0zbfq=O#".PPcu/s'R^15"Vk{+Tk9n	)UȒ&RŵvG'L}MY\+Ζ6=Q*
`5	SQ\ZR=pF47n=5ȶ=ơo`qUV{+e>FՑpc{1W>lkrJ8KnUM?͸fhmOr<CpM1!#ۤT{ߦnC]aNOLcʯ3xE5v%2̜^fffrk~pۏ	E*`-OpzI
Ҭ2q7FV#}E-yM6Sg09Jak#£8E4͎
!7f7f
*]LC2l32TIzVqczOzp
shl\&	:n;P
(tu!p5=	P{Eu}ΎBi3a>-UE|DW{tZrU2.iF
?ޖVOgL3q?i+qy/{CIz1vn<]eA
7w $f	=sOJ\LhrN\
#(
}y0%Er:9B=<J&7DB&4^eEi32WaEX&-3W]=VV"M|?LfDdHhNFڝ=YcpFЍW:ȮENE40݁Mfd7ykd{뉍{mT6&B2 j8[2	6ϐ"4G̿Զ5`Da
(jnEd3U pZzR,n0ޭ6~&Pl$Dh]sjV
1DSεp&Dy|}]ٞJJ?,U=(s"/$&R}'IjH-bOf_FJghǐ7-/YA:`\s&Εr¦Y>;otNMՔ8њKsjp &9i꺨Yѐib2a0
P*4sSe=|8>r(I\:̘o	X>KK J]=ʓvD;7tcn1Y>9X/XmVri 3X<_tewO(Ԯrs(Bヅ:d1
<Yн#R(5A''R~aM<lEb=p_8a2tOjTp,m:Bq+-N:'"s}=J#>Yj_ZbaKTWw)ފ=
2=	fnZ3D䡕,W=ȋ[ZK*_7fcj.g H2AdtϺ;Ɛ2 ;Dl#PFl[sRFɘvX}B7}=ߕΚ[MO_[$!M ,؂tny7tsdhr*"KKhTh눘S=I|Fp$iR׻n
3Ӊ ɜm{LbH:䛹BigfYܽDjHn*c3sMx`lB쳵|as%F$#,<yl-!`ՒctL|X=~+&GXnݲY?/sߤL	d[#>W[AZjZK4ӛzA:{ҽբj~0)4 )`jF\QrhG
Ƭ(>I
ಭP	Ytb7~p
!08喴V=Zkpw8Ma*Feb́lZ}'VPwæz2tBTR{~-:d0I'H::#j;4Ţv<8=]rz''SoL
xlpZDfL_@Z3,ɩ	[Nx(b*j2(p0+k3c-fbH /GGwJeyBHQvM0wKٖ|)A6W`_VT}L-Z\@.ԞƎx>E@pBHB,OqFS<CcWoهWVJ!^
NrV.kk+Eɀe^Viעm7uPMĐs[5w#u8~vHUݬbBy5S4BPY΋RQr
.O b%/9C~K96-aNC4Be*"mГj6g%Zh0^6JLUrzhVKj>
!/؝*I6e[$(/x()`;ދT2e[y7
P:.Sa98.Zu0?hFi0Y[ٍfaUydTQ,,}/kߵ(Ҷ{3sZ"D:ً3yZNnMO~!ʞkjN I_vC>eP6m
H6&t;JDۍ0 xF&Lb>l<k6k^=B'gSLQt4@+$)2`OԧN[Rp#Y{WqGJ<T[=0WuIO_Wd=q˃SId)VϒɱԘěj~_Y7X1k$s,@I;7jBG^IP:@G6]OY{~#k ؖH.Y&P._27XggKG#V(dGxUdUn82#O<᝽|>Ӏ+zeIgv~)&
w/ەݕՏv˝>uΙxQ͍i/ӦJYeM;B!WA%Sq4ɸ@IƼny}/-Pg547+4r_g@OɇZn?:u6E~E<č=f&Wnbm{05<_*|}䐔Yz[w'j3AWO8
ܼ>&>NxsnjFl:E`ʅ=WK}~PhDӱe¾QzYX(hg,)AdߩvC_-_<ʀ|8F@ -pL}{рp:+9Nf,yRԒ@,1cI`e\?/exݚ<A5LWP&$+A/1 $hkW#v=>9fk@Sxz	,lFy=@EEZd<O/׍΀`Ť:ricb\96~XXR?fgn&cZ5ǜo)p$/~|!.Y܍cMf*6ptESa
p'n֕*+Y^[bRw[<ڰzo$4ls)nh!=reNVk@c@)E_WUߞ/7ҖMuL( ca1KՎ3(nO%Kip3*0'd
iDaWU)77y=>Vlp8;ކEB:m09imBX|(bY_MS|h0kfeIPbXU$c%z'}m={h*"VPj'tFvjBB}bbRW{-Nyo0rA >Fsy*UJP]3몦c@Ԝ[{wYԫ_Ώ`DW)H1Ct|kw_Cʚx0L1btf,8PpO-5Yܿ@vjT lЪl>><y+3ݠjn#YH&S+VsoݴzErk6-@bGAβ
ķGBp`w#iAuVmM~B=nDKg6|؇goSo)G`%:j;XWpݘë
\ikxgcTmg`[C[MF<cXV\hcЙLIT!yKYl<qIizNf9peWv?ě%q[uo:epM┨Y@3.VFX]7QFzVۜj&Qc6`USS
Lu+ɭY2dxIyî䬧zdlFOJ~,Dküߌ{\
A'Fgc[U8tǁ|w	/}ΕdH-<sBF{X
6Cq3tgUiH{#oҼѿ<l΋,)R>ϗ
{u^d$ϊByMcP+ɜA]hBM\dxR?	?,Z5MI
hDvrp12gzozK[uTcY{!Z:ܐBtu1Ozzpc)hbhgǶ>V/͌I#q ~<2O58eN%N57+aNG8Gp@%D_PP#FGLJei@`
^qn	3(ds*3bnGv%GЕdN9 Lx@[h}Y(o^a=9kh/у=pCَ8a6>-wX퇮ţ5 }Tab~<P[9mg2[=
C[>Go;*Ҡ6.E#M!F&F)Ro OD"wE|x1ŷo7*F9{R:fUZO??}Bg)~ ldnYu!-#|5D
_$SٺWd}lc\k>xW.q͉?^ѼN
@3L{z֙w_smjʻ]xɣbBPo5mwz)Nįh?qC[qGХ9Vy]UGs
Nܧmi'	S+Tm3dcC`}*;B7o.;-1!Q<՜EǼgYDTKda`])udt¯+	?Ph'׀*#Hd,vϨ;RMQ߯I32_H?9D6F.GIπՁwN"oQa;;Uh'jR]*[6h4livR{],᭓,
GO6TߜNdP~Jgd*P*v'2l!
7mS$UNejcM)C(=nYޟn|9A-3FVR6o||Cu&LZ;'E+4DA#
a#B&?еf?-Ot	'±,O'oʴvӔ,0s姦Iwz!L26Kssm1PǄ=r}^C@d$&ww/%b}*o)eŎ=~+
9B*.;;S}SD@7V2+?)y#ND..32.'Bؙh͇LQy
z>}9br*=KYrufwza2/jJ&|NdwrS`Tvh	k*
I$50z iN*xȠ"(jA֢3Q-7z"y3O3^!L)ʖ+9cZh!vJ:;{F]xb,[
jgpN˕q(XR[55s?:hb[݇KxqeUPaͮn~8>&44nNr,>b5JG,G.yMT7$KvI.[
Vv~wBU 3/9q@lݷ䟷B{aD2pCZi8>	ڇYi?O={m{!:q;eNqDEԯRgBz~C
p]!>J{ܟ!
]ܓM5	w9ߤ}z($Ea[mMJ]?7 ]GHb% 	e/lr[0,ܺ:OrAyMy+	8P8.0*tNE*z~#Wt?Lnnź@ln!Y膲)8,5✈BXP>3*'Ƕ`sO߳wxQ=
C-z5/N9vÇS<Wn9b07qoxHXe:ңfyZe5Gߑrfaij+KKMSL
hIbn|\SNkoZ)xR.D:xH70N 50i4N#[	ի$ł2R	*W׮/unǥ7C_ t,`3\8f"0Q썯ܪs>-2N\qt$E˒v_=sx!2i_O5_$2lLa敝ԍ?W;ØbWw[pXr6[gIl9
ez5$ioW, #&#+#}ΨN#>S9<Yt܈^wm̄@s	v[^c
Q\Ђ+gR-AJ{vߒ\T|fc>?+!nQ%k  R@8$X؃n@4|	RBW8%~>9/+Ge!|Nb&ʛO/v彫WOl/)ʉQ*\J[vyZ
M~ha]q<)$٫8[
H}&F`Dv_9Z\s@?9kYXZ.$tDZis.o"t_G
^}9l)kdm~ő2[aݚwVL7\gaGF.#D6}3Go5D4>^4n`M>@qh-ʪ(Rv$ώyة
zW8Yvo|^;[Q m2`HMl
mU?MV<6_aC}gz[|.դO<}Ja^q*dZ;C͓h5XK|Qt-+{lоr*#-1U
ӏ$L$)am$E7+$UfV A18Ae3r',&}?:Bc1]mkx#m|/ ɋ"Png}K.!4;\
~'؝(_Ɗ.߼o?D'RsyKFrzVI	gτA89K1Gi?Lt}wn'Yr]\M`̸dմ
:2X||Pm?9z
a
N'ʸS栙0x>`o\q&9+B+F{	N}l'P@i{)g!_yo#[&1Q?A.,6 Dlnc/r~e1O_NUw*=>J!}=-KMKP+T%{mI[dt[TymrM5s]F:{ֲ3{I?S u5K&hȶGok
,[Ŝ+a6$	di-1-d.bkrBZmJfbL6n=w/Ip?{Om}0M?dIiޚ:o}ݚo?t1V+՝OK6bB	w4g׊7rd+*mdiÖwI_9IO:0(p[&<{Bng8*A_Wo wݏW5nZ볁Xu\\.OMq}ъ
N(Sa-Gƛq(WӁTq_hn SDQpݵ,j|K8+ݷ}q{/AkmpLumd/sX̳m=s磻w:AMXVǂفGJ,_I{v`9)@x!u	Oy2HHQgJNuOQ9$uXį)G8|=$^+3p F׻|&t/Ʒ- ][<vMYE}<%8h	N eIi|Sbm>N19=;W1<ФhI3^u&m_ƈ&53?>*{C5$˓jw ΂0gV~^5rz>@uOǳ:lC^MKziRm
>a&c-L,BIvSN,EKtgVwNew?gɓj*h*IGjld{6*jJBSo	{9*1讎WVIlrӽV?׿}WY%7aK&h"+M.IGD&EaeMn`r~ADT:+X\E=Z|M*%i]Wy7G]P*IhvdP֕b/+⛗ϯTa
]ĦEkb8dRB ^ְ-U]l6,Xf>$*};cyALSgگW}Aګo`Iabp"+=a
v}i	Z(QIhJeZ[oҷi\YسIc1abn,Kv9iH<Ux~۫:>Poڊyr[M˶3)m?I;s?djJ]v"U%!_ݡm\w*	M4_-eS$9`ΥS8uvYNO3?5{ZHn%ݎ_l<Ȉ4vr9?]HXtf\e"ɮｇGI5)uːpwRHkljMO
2]}2v=v7
zp	 `j10,UwC.<+ށHZ>ij(XB2"ǌ=3aUu90ˏ\4>ONNZ	|u۩{\0Tm[ëvA"We2r^zIGR(nOK7>
C0{
-bUznRO8
?6:*1M&{=h
K/롶Ca.[gj,ncúSy%÷NÛwKNx:3H
v+hPvg+K"3ܚʬoe<%kF3R60Ҍ"K*q;Po:3Yq}.b`Uvn?-|}O=+*Df4ӑd)+ȥs[DގWw@}BO)F@E UxPx+F^ˢ`Bi|oҰCP,m6%XU%Iz{krx _QnqLZf*G|%!}#[^K,2aBμ"bh㼚]qVhHL=NR\]Nҭ&%WV޽;uc$/ v#P%҄ƵNVYC%~WzwW^#UhZ*0$[wlW'W/l8yRmi=hp$A;kyMH;~epg	",.C817o?'Ozl:2Q]\/׫@\j8Q%KB-L\hg
g뢇WxNp43W*a-NWN{݀WE̞oPv=LM)<Imq˚me؉ok4!t:*!ɔy<qaBg}ao͏͖ۇjoP~֮T8(,G힆:PS٧TOo ״Lb)A%ک
ѵ'%ESڪ_U߄
%!bl@j
e<MMr$J8H=+.y٭/Ih(G8AoHǻhS7k[^0NJ$tm)5u9$M(ccZvO	xhS7bv"Nv+@N/Q ڴ3qUj	4U2~D!zsj&WqW31V05E8rH]VZS/C巻b@%~Kr5~Um08l;Ԅ/]Z cjVhCI9
!=ǕCyتr`VNn/ΉE?UJ`߷|L
cZi[pPIaFmڞ
&=w/ӒԍIT혩j  8zfO'ui.mEv{?!O`[?I5!F-ٹ^1I7Zԧ{'{8k lnVhǓTvb5V3r*|`[ ]^vzR% 'x3_6oracьv~)VW=H725o\۞uX<RGL-*ZW)kJaFt"vpا
"a#AЈ chsq4P	>Qz48.ʢ	{:O[xCQ9-ڎ-0,7]Ew6MF$iVRsrmm|,	_R4x7sXcσ'oɘ6kR`KH19wwٔH	c=ow%4kOuyVy(vo/
cX^oO\sphTO0\@I_6BdRa-EL,-A܃P9*9|8W
2d̷Nl:$eȲTYb_d`GF)VKLő3accIe!	<:E#/Jer"6r
8gۭhL)k}Fݕn#=2y0ܝJ fN	TK?fA}[]{6ߨX!c)C>g/
(.Lm(x،c4;@Kޱ4x5z\;E5Ѧ9T'OG%8!mvT \Vϵ~Ww]M~lD3f!_EO`iӲQ:ƘB7+&ƀw<Δ2o!("B{Ip=k<}6oI~C<bdhY@1\s鄰C4#qq?%Y @wY@>E{b ;`#sx7%La-?Jh7]P+JT&ʒY΅@86MRǛgXGn)q띆Z3@~d'V`54%ɿ9WwF~)z $k]I6!3%?+yXJB
%n0#bЋͽxJ&=WFpԺZif 27$w|ڷ2[^mƽypCPeY.#ِA/9#j;ɷ-|*U*9%c'qLdWxQ =;G:hW_F~>\tl?xbN"TYԋoaϻo:"3ScBf8[$ogoaGP_r<.`"<@;[\ =F0-t9^
~LA>olL6"٬`k+ӄMc\Ddr}(z
fa<IS
޾u»$s_]Z3Ӷ
ߘ}q:G,7'93oG wۀTcn!eA1d.(Rj9vϩ^ο]	ޯhZp8\C齌'IYNY&\Ԭ.k>7}Cd)>MBb	SђxQ,qO?Y( 3؞[6,{ٵ.:UԘ.Su.QCnG{1S[n:^$R9|]PJZ,P5ayՔ`d𷷣KQϪ8j"1Vx*t$Yz0BI<vS2-,`p65?%:S*FA3h3?ItFA. ʺr)dL/r<\ -%	gq8X; 6?=ј-@Oᴹ&ls0KW 
w1t6^*6|Qݘ;Jagd;yYbw&K>8T6x0@f>:kV
I[m[FMmr
6rxHSH̬/Mw;M9񹒥&~n7qjRWq%H7~o!=0
z74g.2Vl
m|U-p0DhZkҳ9;y+'BO'F:F8M][Y8.#\o'+>5=]7shn-vWT/vy[cO.m\.3*uܹ |YezU}]>L|LlF12potffbe8;2>fy\ Nꌨwζfrb<ӈ{"]f>J@"0uD:hH_5f pClj3tzBq8MPR!@?XPQM $V~˵@ 
pa2.fV:Uύrwd!^;rhbή72]qY/o{=ǝDL:+){`%Z]AW꾨>|׼f5``2]oֳuEU1JF
SN@AN[?ʍ&@ޝh|^.-gȔ-}P-(:7<?}Gwc4x2@?7
C=のZ^ż>͋WP[_hV(><8- KP1

\uFw?Et[[qa8]Uqv+;1]Ss`!z3kSC:byROl3iד/t)'6~)wQ4L,]I.X&Ͻ:(>>|T{5Myvaɩ];ڡKDh𭼒ݼXɐ:6/J~*2B3aajcCY8Ar&!&YǄe^Uy-Wd8y%Ti%] u(ʳ$e7/Fu؀dwyӷi6<=@Z<avÒ]X^
R%?vga$(I݆'9sgli-#TK\dYyzٞ9ۙ{ٽ}=d؍뀳)~);nB{d
6NK;MMoVgfj6`9k&ƙj 
t81,̻_Rթ j$~!Tfx+U7Sji(6J"3`{6bh,}˟C{syYbcasmI҉sl;T%ly؄&\:'̰͖ވͭh:6ƯgMQQ?iJqa9bF;Y
D.#+p$ȋ<$+Sl\e3OEe_̾"<SԵeG(qOWbkT;e>Uf903ܤ͖[5_TQkȇghicRhh
!u#|K_L﹣j/%9_AL7Ar9W
tB^]	ђ37^5eoNA+,I3:<:
?7|}"tFjS+NTޔ92wR^璏Y===]^kcg5 ]>qG(!7"v<ˡd"N62@Q-)pیE8ɒ)N.iY3B̀O0\sbZA̵Tўb,-CMyq'.I0KÇI=457N_:-Čv[N3K9
W6sۺ{W+Gc=sDe4Ak&9@GWoi,*v$t"xڎɵ;2L8nX&;ޯ=mWy00
]dᨌKXXyBCbKgr(Ldژ{Ug%I֟C4j)4gۉ:zݏNY˂jhn}nAgyդ3=IKbQ
З=9<Ʊ9ҡ`p|$1aTc<󳓟+aМh,fzHmhbc3h/$F3(QRV2kv1pT'Jۇ_JF5d>ɰ#ˀ]vx+ >[*\H,,6Zf{3xFl#Yع)!ZڳUF5Mr#Ytr8.I?wj]cI,nK/[/[Q9LLy('\/BI[OP/D̈aibZڪ!OGo~-L-Pmdԓ7I!ui>vAGnOgW|]B9YXedH$tHPMZp'cm04_2/&.gGcqe&`dϻ*GdRM-
giN#=X`Fuq|q.	gFv%|n
=xÞPo˙*Ptq@^N! ôAiLR|N(b.37Ìx+tOk.n1VrNWl0e(gGdyW--޷Ӏ6!FɵXir&E⫧y7d6'-eQl[gt(܍b^zQiߪǸl\yA/$Fru%$p6PWw8aܱw`w.	Swե'4ES{XYv@vpޣ)	nbNuV`:u!ux		bpZۦ؂fwxW~J]¸DR[%ڔU^\::ɓ;,AOT=h!;UmuSw,[ޒw(ؓat88ɨ	.),Xm"dwRMu㥦O>4Ϯuz$sIs9>dG$u[OT}W*};0w;ޛ
:=Jl7=Yܣ0KA;|d sù"Y"J2@U}t;}+|N!7%(@iyȓ6 FaBio|
PrV"Ħ	xMwvb-qXXh->%(C9ðDz6Tp`{<
n(N[<~YķqsÅHIWvgVDN.ucPfv2[[vo,-pK]XXA:Ӓep^+?ZW_GOQ]:<lDsCrߤ	^5}H):13fYu5Rx!4Uc:|Wֻ?ƈ=^zh{\w~:[C09<>Uxz^xrlZd/tY@>O\/^1q_!zݝݜ ;ػrE׆-Ufzb>MZx8B~[;}kF<$Pn6Α!18e${~7=G
X (HwīBw0LcÇ!|׫AG<[ݘa.6+2W'^4|Bo:y\Rho
ng,3%d0HHR{y(-wݿY;B` Lp}GMMY~[}f~-F|b:TEHYaݭЙ02ԋ%_kM4t]cxdt`+HU졀/`!)C崟H2Հ^RG'bREE9^E3Xƙ3R?P2yoD?ao.[^g%U</Rp~<1,*N^HтO?ha!pH":a51M) uY9LA7SUKgKĞ̋hȁ"Kr~Nlhۀx}ϳ.{PYغ)^Dkݵ70	ω%-Ŷ.[;~%8GblӞ)#qBIp}]7.
>}j`W+ai=^IU	$"sO0@@jE}{5obO	=04ĳx
0}+Q!{!{o7S?ǑA"yLk2NJ/B#y:/W~{շ4]dal=3͗*v0woQq`fp)OXúӉO.COfZ֚cEO(-%|y]]KꒉW @|Sy>m,	J`whnS9ܦEN4X:h:"vۍbez!YdDA O%rd}]ja/T$go]7
XiJL[q;]U;fP9Wۺ@W~#<.%p҅VTV5:4%Zy/$`￺HC:=i+0بk@y:n'I/Tw^1YC'Z-/Wż6347)Wx8PbaE? iy٭#~ZQh
y~h[뽙CZ蘚3DYtŔS;JLzgeu`?NW^NE><0<T3WAVoiL{nZNղNƫTټs	.ۚtAzR[ЌLCڧzG2}+9,i>WF|~K*wKQ(BkrM<PokԚF>UKMĻ_=fV(#d'C(j$RK7w(sqZp݋nMq=ϱ7>>rQf{VdzBNyc'j9S2_6y!qvv
^Hw|s2F
{BWm	 X\2<mFhM7÷÷0j@ot	tYǓnZ_SfLv%yb#-{vj^ہicvX=ޘh&AΉE{6*x%*0T5~	4܇⨌:C&8Oʝ}%<%%9p	rFdȯ]ީvλ37['m{1&r[nwa@32_׭LԪunǗ:WdflPsXrq|~Ÿ#ow :4apbk&􅷽)bjYygMN#\N/׿Wܝn~x_[T p2|͗v1Q5da;jXY]3p8,{$%$
h)˦q#>hcjBBJ妩̿d
Emɽ!g˨:JЋt%
|:;Vo@yOf /l/+wp0CpFź.\ۅZ({
	((e_"
H6Q۾"n=~}r.'3.8<o!HVM\Mi+\<W6;]z{ 3sDgȨ)HBȭGe
f*Tԏ'X>`GzN7Оp)L=X[ЬX4eGj^V:/qǫu)(rDFhLEk^(]ReZÔyy	%mP:#gðչ:[aĲ^^vmeVk
n'Cj9(:@X=5iɩEOӃ0'q7ZoaRvv9ȑjFD!;BF\C	l&cHwrí<fMu.ʲ	SCfc7"wwȒHqK 4nNE	
cb
&3v߇[~iFD4H;֗ELت+WD?d	>%c}Q:.Ԛxdu`QBq
<;Tt]^V02Oiʑ`<	]pKi| :~/7$="$8b5Tve"
B׳R%r̞kO,ts!OHGr/c#0[[r'ōPL!s]z~|0AMֳ6jmo*8,뜬qs3ܶL߽^nemuG>l]s5aw}T$B+:+gƫl3,~ЍRsv7nruoPdUpJpp),I@"f_NxqZmܹ'SwL<Wn*tYPws/XɛLPuyyHoC{x9@ g/TP5[{ixY^s?qo};A;&(TQRйp+ [ּCC9r+N'w#;8DL
vm<=s1
J%Dn&0<_.P6WY]ѭ%ʴYIX޲gH+)ѮpJjʆ[r?|mP 5ފk,iKX4o0i´.2v4s14M}KobjhT|lOո;૶(f:gHY 94(9@/E/ɯ/ߥўA
bf/<prxZ=ZASW?f71$Py`:H%9M/KvJB14/ʄBU)Eh!6  -Sǳ)%
r--á}Jz&U@q,zf:]徕e	<ӬUeyF:$haJ0^Ev]c~^W@}ՎǛ馡Z-	odzI-=hi%>wJM-W;uDw3ن:]*4;}JHۅoO'l
m֋$$4,K]# Q>l>0Lq;iXp7ev`qlX޿D޽z|i78>_`\141,ͻMXe

[ޱ>P^}4߆oVO5$Iyap/Ƅa&8~"	%!u43Um1=6V=퀪YwriW^Wo7YaʃSRBs	0n"$v(o=$AZD	4Jax:d[y	mD>(+]_2FnaMX&̱d,:$i4g)R4\٧TC2`q10AT4XG%Щ!sh.h_WS(;+Feb6ԭ4bcƦc%مNs].'=)HZ28Q)Cj\W'mێ(xBb,8pcK2h;_D투4I7- 34s솻ey3-]ח!Vv])}:0_9ys Eao+DI>szS[~XLZ~zkLզʱzXGOST~fÍo7Lc~R*Ǉ%0Dt;jv18	hϿ)[!2os	=oF+;
d1%40N"zCTEԯvskOr27JJ2 qyz[bc$EB7q71YDo$	vV
TuVM%zt
;ڄ{7w<NTp}3Og|S_3۟7qM|_xÛR&aq6dyr9
+@(Y1o'n.VyJWf\ّw%bt$gB`"z >XW0m
WTV;^q:do1ZbԄZNЕU@n2BpC۟E|E8&:1':26jn&B0%#Z߻>0uw^鱷(ŽT[Alɚ?cD3AŨ;$ h/h腹8}eSɪ\jv0vmNO4g}0o#ofuTlia	7!i$2#"6e4[kVo4TUv4BHviT3GC
%<TY%(]% EL D#x?(<[* v&.wnKUM[Y8l
-p8vj!zmoLz/rze{oBmG qU¼[IGs9sG+"guBvRPʸǶ(k?/­46%+E(͑mènk+~dTvߠe9R@Hƨ"|iu$4ceȧD`Ot?Nk9w ޹ˤӸ2& qr6Jl XW!
8=`m) Mt(_U}?fU]ҍnD] ;ִf15>DofHO?JC#Ɔ1!IqAĕ9 Eqͱ@
OcڷyW^	/!.!bVzuӆN*ne	9Ɇ\8R*&?Nƻ[·S]\-TL(y\iT8A*|!)0j>JpD\
fA*I!К[Kql'^\euRbRc+Nhzz{zI3*= qTWo&?R':YcXy
z(D-se'E`GefSCP({<"c_
칳iJ⟀_YS9+x$0xVfy\\<&ߞ'o3yWċB**m V(>+%+Bh^ԑ1 dezRlg-ȩ'Rg)H/9_?H7GϷ2t49fVl[IXP(!!wtQzUPST,B`3z㲶U5{u8R R
o(!:sl:j94d*OD2f2ρkK9NpVpyzB% Pxңr	 pwM.sc|yl5+YM`O22"|^KN9k:HF=텬%+wʷa>GqA
ڞTo'Ɩn2]$xdDS>nQwgBpr!FQޥNk,)yjxA?=Ƚ\8G6K.:#@/
(ga`󍇭.:J:cLuM؉-eм-8k<P*N*_w˟'-\ZxAHKٛ.=0(V;"ݧӯ>D6pߤ]w#ͭ'Ѭso陻9KzP
u[;w$+DVdGly%nߪeB6A.B6'SjHst{Fv&>K0 w
ea8̈́H.iA[j^c\Z}qD<8UjpωRe c	R|P`bX0~~ad=&	ZExu]DP{Q=1A{xk\:kT0ǀ5b@$.z˽<}|ahUdށ,,8'XRݹ{XXB\;-?T9~Syjp
Fn*1oW?]݀SyTJ#:`AǓз aaO;Pom-XqV[%\~
/@pqsLtg`T䋝Йr# ^[jL3Nb)
}~LPO:eˢQ;Вp΄嫉(N.I }j0pKGR ^};.fs@\@OEux[Ktd>Dg+ӕfcEZᄼZ0Ku듇䞳'ByiHQkrL>7*$r'Gn4'ͿyV~C5 olrOP|1;d)S,SeI(G+@W5v]?q:o?|]01oB > (5jkvm䍝To![i#[%yɈGnz
hn( B@߹}+y{É3iNƙ<g{N]j6n~%_ty7p&p=ؙڠl(۔`aʰ=*g+Ko4!lz
CS2}
HMGږy9'DNok[$	U|l
>РcDg-~	J$c%޶Yit<}TB`|LWWyUNn=1뱕OdM<<}+v(s5vZ$ZHD9P(rdbsÛ
?1@"OiD6J ,cîHp_վ^W|'о B{45.zdPL|"*Mu&i9-XXG6baC0
wT6s\6çl-1wӼRnPJgGO2Y/ɕq$/w6iJTp+pDS>B)~[ͣ[;٩:ilp-bqKz%W(&bwP,IWg[	~ﾣ!߿hδe&H*s8.-
3\7_ȼq:>Upgnqxdy.W2-C_tۧO3oux)V[^IP2"JF9keOa+[QldhNҥrn#TlIL-Lҏir?!WTQ]]~oc	p)YRtSk㷠A?9\=YiC`"G&F 6k#Ӏǽ{˗+2zƐ"ѭԝn?eI'8X'TZbo#Q!gϫ)Bt/
43xj!VA+dF`+
p堯Pp~KoWb
PcÈ̒&tU{Qś30jBhgk>[\ޡjى@#j|hx
s.A~-=NBnzjbd)Am-./?~Tns	;b~P=Q	`nk8<%J~.;5凰_Ȫ4̀sGiGxp$zE"b]}ZoO]- {BOڸv-5żU$CE\TwDcOn+.B[/e',Fq p&Ӏw<\*? 6vXj<}[nb_CKrҎ*qi<zתҽl tIx.vkE8	 ǭZk|.v:.xI]m0Ŕ>bXBv[FusRh6&C<5j!m(ӵms$8>W~OL8$1٦t{2!Cszmu'P8Xo
?p^!v;3Z
+E
6q34[7^=?:[Gg^H2FtN
;[AiԖ-\Z~Z&̤|뀅>=³G?7]3sU[lL	M=Txʹ=IbL꾩Sf x-G/uN, Y<Q6˅{S3<x%1u~,p'#>#o7r{Zg=<6g	G)w!pd%@VG;
ذ(ޗY28
97`CoHVW9H74պݯggLu*6;!zBl7y7Gxk!
0{,;

D	!*BѴ(%[By[	Ӯ~ݵE ̎(x[$q&]o@Źg4w,b/8[~]]Chqd	3͏ʰAU/#o;_\m%<L)S5kw5Uۜ0ETwߊo?>9p:^FEdh#XReoo'q=tdLHv6
 īj(5H=9OYKiɞIOS)z%NՠַSYQfu&5s|h0Bh+/ Q&o-]=ao6G'ZptYgvJ5?e>уiqa~ΰ*%ȈuB;k#OhNڤz0&xL~ͱK@tђ/ZBv]\xzh92Fxa_ ޕTzGE%ΛSPV.4kG)R|kС2? kU"rMhF/뇊})0KݢMdrkm{OԷ<R:z[$
~O^=`'+[4kz&_:īL+_bCypT8; -<6NK&!=Ŵ6j)]6Q7C%mdw9rFoKaē`͝UXh:5^`W>G-2IyyǼSzS
 6vF/eSDuwc<i~H^^UlD	6縍6Vö7d#xeaQ;XAnα~8-@n	0x@>&6AcC08:
}`)jr$hW +!T)%3ͦ=mlQfW`oA$wbhcc옘)G
ZF_$m_?!M>cRt"uMԸD0zU  "VBP3zND`)r1ZatAnK$Y'%.{9	 
E_+RGo?w**<y>Z@WQtsWD«
i="9
<4y ?VX9EHü?j1al_{鍬ڟKy? <4i1עAkҍ?'>3ЀF|ch	!ff{lu|GH߇_s#Ν2q>߇u1]Rn`<4Ç̓NOǺshrTiR5&C6h=S3+s#҅.n|̢4Dr.z̰#.[ZAqA=aOT#g5aǲP)V%[匟Xrk4sz~DP=U`!rDGȝD|h4mBѾGB{d}vcrۙ{5G>*}i16Qɢ(\4IvS>G=<+"Db٘uIAM_EOOG)χsWo71Io_PHZ2vQ[
I9k}3/#3Gw>UV2ndc M@_Wk(b{	&
{"wSeaS-=`/5r=B-+!R.daT=W~B~#c6JVd$mo؄J|pMS:YvOwBɏN^@k@s%L\?<juԊ98_L4IN'[:02BE+]썌z
jU~g5^
/jmI$#\54E2|_P{u	
xS#D_ЦeW /S?|DAʴneIPW8љ?&gËh֤rF/[9T<bs؜dZke'_6.%8~Σ;";(bt.{Fly>$=o7GsbN(>h*d- \_cY}GubD#*<mU'vqvi>zCr?gleRZ|(|i"hc#
'_$s|gsDamTkv_D?XDt-qN#	e/ Y^6q$_yѕC2?=tY(CgZF\[<ʷq{=굃lt`waϪлY\F~yfxpF},ӝH|
oⱓ&#
+lk	H&1|@mSʊ.]<GSm˩h:	C؍eYţ'2)ϸiiכI33&]	v/si]ۇH$V|G9~|a)Pu/2o-ߞjfAޞQ[:#w6s#W^󮂐PJ-"s/s6MlЋ]W8֮G5륤^3C=/#Ӽފ'mBWH%v ЖKq~ۏnEYV=xUZ")r\|P-`?vx!>hVE젝	gF+|:rWXeȄڞJk[W! ;f%KIc'u'h(%KM)N?.Hb3,VG$ܴ)<grnwh!pKrdSdjְ[ӲK쾩'>d;jL'A=5U0Cgu.uʫ;d|_9Jf y0]k]	7WbZ2*G${c)lHXbˀU
>В`JX"r3
!K񉩀 yMS%)ʩ> R~zbm:&qX'gEuPiBr)!T 짙/\i}}띿Lc`X801#՘Mb6wdzu-sm
Yl2OC?Nv0Ng1@%ht\s@z9HЧ"kNo=;IuۄaJSsm@ipY\ކ1jּ,uQGTmS?5!>ꥣ>NTPmVޱXb')zޭYO2fqmN	L6uZѺɥMv:aJ]:f_,˶iJ^M	n$g/NS&4k5s(`Prߗry{5阱B۞Nq׃N1N}3ؚL8ozH$unekgH0{cg؟rTSgߞ[?{t9{ֵV) C"+x!EB/{Xv\?`<'vpG((H ]]:/O7~|\tOmDH >.Ծ Q)Ge-f"Ujmt2*r?~՗r+{h2-E5@!ڜSQP)1$vIa`"COaӹyFEٍE&3G~YW'Sn+wbE4Alc22ٚ~t7mszxGᔑ{ДX;ف+ɼNk!;VW,s~">*8B1R	EQ5i؞@d~EX>jȺi_*uj @׬x ^X2Q~>DIoѷzh˃kc@̖6f>o[\=
_b.
Cڐ+d{!OTϛVzBz9u'&sn=A6	-#1kR	eʯa
J\3( .v9rOZ@+se'rwn<GCbavQ*;I j#֦
iM}iS"	?d5].>nD&[]f#'kqp 9
cZb}ymZ鸭Edkj՗C:L8vʜx}e,vh;O!=85#B#;^8\9ɘF
%TqhRa(]&4ϣ[l\-yЏx2ـ6_6݊y1nU4Uf%Pyvi"x]TvylvlԔۀ םaI60"A1F|-'~';UVTz%-t$bls}ҤQ	#	~Oy/%<*V dS9FJV:]"іM7Ml3~y
JC-A,Y|%W"0$s,|-=wbY$"O3c[H$|q3ܪ&=87	gM^)7L4^8(bS6kPE)Uu(VPqX$g?ēŒYKFhܲI$mᝇiUCm>+tgzp
p;	KC}&oZүG+;D<OFg>;˦P؞ΖeVvM1ÞߚIi7si!` E:j`R"WX~$@8ByУ|xB HkY\s;<h$FsysLiPWKBf
+!b+Rc#Z=Z{=lΚt$VtJmQ~P1+WjoI^5}FnUo<\̽td`6Vn3qp*!1H*	E[l&=L=纻Ď{r5<$܅Waȕ%Ŀ>DimttYi$jeْ48/?CyZhtp&P?jmUr
2gN>\[?*fyx鄵Rz{ErN+q5p4[Ac]ֻooCZ7FrV3%4cg>'NӾ;ngFIUb5jiD`Z/Of	
<&+J+;ȺR#ͤ5ǣ |Q?7p(ӇYW (JbIXPf!B-S=
/x6woH[T4r;8)fU
2=ht|h{'W6i~ܼlZBnO@Ma»0
KG*+loyi vu2OAa	+BJzhqub`_"+9 GKEIpm F}V'3L\Ok|3>l0j73⪷;8# fi,,`z
n?DV:&4c'LԒN1(5ZOCގw3Cdˉ8dR.ũ{ɥ1%0RЖ5~N{@߄,̩-;mbMZ6<^%fꄛ>q?PxypIդ"H)- h\8B{O:rɆO7=~O3X`kmjua'ʆ\ޡ$h~q$-)	J,hiL&nsje4xνݺ2n*~eEY҃3i^%qC~Yj;X%]G.Hy[K+24z[ZPaɕ׃]|`nSKHZ`薔5b*~ŋ|uMrXn}(N؝5Vc]b%?H+~yEwjʻX[p
PF)űw[կ1HO?^Jj;xb17K5[ L$v
GfO[I#"4a` ݑqRN{jٰ3v$$˷[>qx4kd|؇-̲>T|ǪaCS(͟뮟L.6&zT-
7ۨӢһjlvA7S]cC[ѢTk9{yf3Qno'<D;@	+ǧC\J2kO7wؓGgbze8%:bg4b$ܔpWZhi0G/
FHH.e,dKpAiK:rW uKSdr,j'ni׽`-(L;IEJ#N;n[G
¯xdhEs,qtQ)AzfϖYso_p$ש9ߌ:tIj
lGYWwaRo"OxVrTkxe=oM
vHR:y_g݀+7ORkϛMtWo;ᶦOO Pj˃I >VYpP6AKymPg9+uKR|]v[nDًje&mC_ž|b缭2 |.#<UyE6r[<cm0AO<#HMѪ+bZhpm?,;M$n/ +%yplXf* ΁d<SyK1IF74lK7y Oul9뗙[Kp#@HW2]]R{NOUVe"wɚ
9q,|X&]~;cCϹS:\R-O{4H!9-n/ThneZenC
vCq_ӻwgzR փP2esd;^*^Į?`蛱g
p/4iVkNyۍB{</f>Up-q Mޱb1!!=X5_77RJ~Q)dӮ"!+AY=!iNLTbB	 Np\u5
SE|'Ͷ\(Ъr\%
)\SuC)UFmGLrn}'&B9ySfX7n}]
+&;xs/W`+@3
q)o! mBv3po83Ʈd C`'`zhn*#17h)|KPz](lL%#X-Xn̞qpI /6޳F_#ip/
_R;[}-]b =,Zq[:~DũD@RWs9sTq%?{PAXz֎W!ZB*`ǮFp-
hx+0Jq	vTs;Rm:V(y-b;A#p5x:H!mW*3
!Pjn=^^=K|K\wR8r_U'7k0Ļ}zLzDTݟqߘG)|4j]#hiSAlg6umoPoySq
ib'ph4{tDr$H$K%^a#~jVcAIG'?q:zឋϷS3J`lm]=A
U8z[o[ըm
j@\aZfxjna-(CѧaL?iop
w[Ǘ-0NCx3+/]
45~a
9lUqôƱBn1I8O}{V,Um	L9'"% V~vR^CTTQ9w),J8+!=U#fn{:
%:j`x"c\^k{iJ\9vJ.jhӴz]k&mp*#HiK8tN Cø_j OTvF1RWpM*a$;Ȟ}P*|ēG*;ӊ0GX(==t3@yY^|\G͕?DArAvPdC:h|&`U}ߢ?_rW2uߎ.*cތ|jje4\1݋F;Tv44	dxi2*jz9d"<dQ}PALtC"rٶh:	nĥtZFˍ{/Iwݗ*\-أԐI\(cew55oWX*"1ſ(`AgqnWQKOMswN+9ul Og%;K#+ӮdBbL\ۺM v h<63A%OqP`+APt2>Myj sW^OaR׳a&Z
8WLgD>zALo|=zb :rN䏧pF;#=ri;wVg"\&D|3`ŏ+#@u1@U.m"UxSJ7 _A=X{tio*X3@rZSaG7s-[G:~z1Srȫ٫|->5T=`d9ҥ9mlizY!k]s>'mGj
깑oCQxr`h֞(7i~xGH͏aQt8) AR;inq
&Z|:NK|5o"Fw~]k-a3[ϯ
Z8\0l@|$ed3zT2I`wSnb?eD%)$-YC.:aʮ@Kc7S17w^%m܃C57IeFQ4Z_Uxo zs"7/EbH+1/XGR9PEɯ9^ybgd[5`l;p7]^e*RßKi|Ftd.|fWx
~y)`KekGG8gft>Wϣ|3SRdX}ţ0Q8k{|@D/:{^{K-HjtTn5`I6|~kT=
6lD8E;nORSR}
,߯1lXJ)x.w6W+?(Q>&PjW,T$sEGܵ&+X$nB/SBGkz9+",ktH٤i'QK?=k?(̮s>pG㰕b':HIOT9b[G.w-G?߇MS	Ǡ9Fzb%iX[O/?ʣX񙤎e0c=XG*8~8-$0KM)_p&5tAlšn, ݷHbxh<0~/:uߧ͋.r`}̔ejh#&L5ӍM&;7a(Jd[6=uf{nf=Egwlk1s-]&M
<Mej-0]j=M0E&oE8ERDdo y[ϛ!ސy.Zw!JW{!\>om O(#)rcJD*b \ZU,ޟv?I01ƘrWje]+a!bGz*-=W1!'!~J֟~=(c#zZGK) pv~{pStUXڜw#I~aX)1Ss۔j6z67󧝽t32 +YZCԹD)ej~Bj$pNqXy`A
	Qc AԷwwTẻTO18f&gDDwsI'e<JCs/`CSm_?ћBie[³
|R^w0Lh2zOF
CM߫s8DwW$~a@GWĥsxkghM).
eVOTd'EX)F<X샫jR
r{*-!	HxRqi x
0AI( ǰށxN(S¿߻:3@%:[>i
ʍkHE'ιY>K{?K]&47ǣu^ne;Mbތ[Ф:A9@C)(o"%O#X>"a60|4!9/k'm1K}I5ěGG')fEindy65:y#(~ :7XB cJS~ñ3'O6MWi^)ƴi@&U2L.h0ܦbg?IrUih_Z2{|E>\ͺ93l&XEGٿxAo_gz%{NF[Nwx	7\k_ܮxh1g0G~Dlۑˌ'0g&~۽A_=>&Od	}	&gŗ/X(&>׏f̇Rn(Cv`ף^@ЬiJ@a~}ai)A)	 
ou!*|`%XJZ}iTrJ ˇ:(OCh3Lh=in$tS9=h-9]QkbU6_fA\p6A*
?/ͽ{P8_++><SffSZRU>bGc*8As)`=PQpO(7jm01ݏƿeع:UW9J1ǩ,>%K~-5{ӽ{
i
[wm2(
Aeac?Y\vIʤpE|0oi~1
}{fO
o*q~XْYM
]'2dΗ
R.HMˌ{%,Pv
>v]x{[lZs&[#l G@]=w4T]@ЙVpkr>a#ti?8ڼi MZq$mivzrev|X؟O6%g5鶴\oGa]Y"G_s=3ł3#7aSI9'իˊ-ǤK|qFߐKyH߿P2|]BTc	2> GLSX?,kKϡ'VjRf!am@]SVPO3Yzv5B/ƂnQM`UķFWbMO3ԗ÷BTf0DQUaW*ԁ\8qY&{!^(?Apv[bxu$^N!p`1S	ؖ{bЌ.%pned?v|~[\ʭ ><VɁ Z}OfQ07$#̶Boƺ[:+4.HmUE]PBylbRYkˣ!\$qh8SБ4^o$=[I}O}q]X~/	*<UWOFvK$?rNׯgO	ISfI]d-!~R`EP2%3_\^U,-¢
"e2.WҔ .ˍ̛,I{Ge[8G
aHdkݧPϥg2kRy{}OT=٘Ks!r>g hOf8IW"J?p,
85{MlZFƝ_v?kH8^V/DYٗa݃;ib8ύjXz)魸á'!+g^3fq*JsKՈ+bl{r/uY2[oRK
%ynbDr*64Q:s4Ip4*99碁_㲾x.#٘^̩;+4ߺ(Z>xl?}Bp='u6xn\Is|ZJs~MfZMv+_1׬z	E|:?ϲ73=Z'3qPGY`h1
?14JnK>N$4MD{(c:NOֵMvjA +cY螧ƊW:(Ӑ]ʼqߗf:ߟx%Z雱y{VcH/zpϑ[%1ѰiЧ4iu!Rz>"\ԥ=}@3/8n|	aTpzfqY"3}f#bEo4MGا՜[)A~fz&w-;Ġeo)Sb60&?f C>!&`)>u٣l1}z=@WY:^P9Ρw~M,WisOE4?hM3wol54welAUe.lp"ۃ#q:$GlвN%brOR`9A-ZRu6aSf`V\Ceq}gE^]NLftXKM'^oR U^Lny/U>%*	͖O#v%v;|JM{Cx7ǿ8CF$:b8gU;k[^|rp>2~N4E^9>Uۥ'Lx<
{I]1vCt6Ca~b `8]Clj$*?HGٲyyMZi)PM6mtyʓcWc<N9~)RG7Zג'*<dnݧ8cnUXRvgfCݟxי^̮tcd&\<aK9(M/oO&D[#tEdG}Lcr.2y	Z=Vuc"|\)8~m^4 ˕\B#Roq#rt[{Mxx*MFGIvHo WdY@H|ЉJ)Bwfկ=՘֫'_=G mNc
V/1'3/CBÍtHtӨ(bG|o3Zy:@ݟ9x /v[RH63|[v]fas~6c^]."g"vX\ң&5XkkdMOUg]tsn~Y=]<,EP<*B%iE~Bɞ=V)a4=܍ʥԌO-'UNvƻ@'rN?OYhƇF,GܝmXA}JKd.}y|lyƏYi/¯Yil;ٍS149ǣR
ؤ:u9Gg.&/('[.x4 8^C۰Bp1ֶ{#A4DX\4<F_m-7Z\$)PSisrppK-%@ts~g
Le۸K_Qg3sfr+tZ] {OcAY+CyT'uƖL#&ˆƹҒ:M.'_f82[nclѻVVreb%p bMNJN,η^=YO1r/?7Mmd :pW8u fxwOC2ޙ<,:x%M\B"mDAdJI_KD˽HJq7{0T+?z<D nN@sȹ
d<5iGwפ۩<XYF2tLfk?UtHZOcFTmtH9$α?Pמ/^ЧJr	^q	劈JfD{e*~7˦&whK<%hS["q2>AӉ{9YĤS-jCL0Z*Oo }׌|)nQA{}(Ą{dډ?$'~ׂVߔSBLQM	sĮt'yfPF"' [ldV$9XAy58E0x34v 	yߗL)ף$a moeoݠCA9̐wkPv
t):n1gtNYث-iz<66M+:ZBtcgYX:rv>&wƯhDdk؛n9r"+jrJX"Ԫ:;:oL77'G<-eKMV9)KbYʼAXWA7/zq]q2hc߿!G(S	N/@>
U4R'Rݎ)$<#}sy9nUnsx5n
y,zxv
7#d9mM8?
cQ/{=䛛hEGwto^4م1K\KX'Gw1K	Cn"{SO+畻_[ 	-Mg+'{/
:p@ {F.ˎ8uwZ4:Ml8z@pcaូKJ~&Al18O=
qZ"J^7
T}HIn=ħd~T/ީWc0`TWevB/¥_dp2Ύ Nm~F(*OJ΋@?NNRax)p?%Յ,ڑ$m .[ )
WUzOGwi
nNGA!l]2JdbQH#9-U*G8e˲W3'D?@Yop_<o <HN\M]֏Ȑg
/>$Vd.jJf~q+|wG
ޓؠ!YB E:eT}.qVIPOwEw)`PO.#\BΩ?A(;NRV_e"I1=ёJ5%
+,`R-vqż}H>2Dl%Ca;ъk2L&Kt`)WsR;2b&Wo)j06*S;6׊pң6;}iS4~P|CR(T'J>V]kOXdqw@F@zRntڍI-*YYN{aHt2#Q$G$Ŕ~͘GANK4ǭu]YX?b6'.9׋)@ ٖIVyByHu_i@ױWX˰{-#[a|0\Ptuaq3\
-XE
2b[V(FJ>,ő/6<hƾ9,avkwhb`t]=6\M5qn^PtiQ5wri4\ 2ۯ"
_h"!5-;ח$ (cO%!yr0ګ,:Jn8U'Ȩ_3{
ȡ}U2tD,SR)_Q6P-6-#}b};փmeo^o9S|uREFDޏ>
jG	f/2\U&OAI9Ȏg	4[R9x\יëz_c,^x#}010AgȡS9ߧ;ѕԌ !
0V:]Xd!n㯛	Q_/f*bzǁ%Qɺ7|?ǆr!Sf+qSubJ(@nO!G/e#/]DrjHdQq
b!1V)y4z~w!il:y׻yp˲nɕM@=5n+&N皹U_)5Y0<7-A,Vn4th叐b(~JnAs?Ց#'i]uR[M4..y
\ enGo/#1͏zwx'|*q#&GCxohr'].VnDiZ~0Pv6##G񄒒t^;јR~H0$ @$aiarاؕ'	X#W#|^unuy
4=/]j=n[~u!<U@V^v''T:ߜ6ͭ9GǺOu>6V(AdFq_Pu␗XR	]i$"j9޲(]y/t.5ݸhmgοQ~xoM٥<d_1!
?iD7@ԩ>EE_Ó+AM7B~tn`ݾS45 %|FoNX5:F
z0*孍d	v?WR#g5m֤(]Z<cuSbH?c(DVt{|3y3^RZ>22YlNJ߸b
UcQ~nFl9KǸqO1SCi<0R{gP=qnSpQ@_UJhwy?qLѸ7kH_8
~Q'
&#I
&RE\"F
,ey݁񋫲ǍCv5EΜ9[̐g蕂k̈/Rv֮.L-崯H);,9

]e3Lq}PE㵩:E9dU9]-=Dqh?$ߞ{&괔otCc(!QY6jFuBfu|_s~U

xS8ou}CuU=t/dQfa0j	˫BWUs%j	^49R-	-MY'g@2VCϷyw):r"ao?[:9m	q;#L0T鶌6e ZZjMfWt?n݌Q-=e
@& cTf{y;$sqz1Q紦7޿*Kn1;.+X^D.Z!iI1|%iJ4NAM`
]C-(Ka	u	"d
U
_X,cH)-	S'k3j<`;3`:dQgGiT4	2'&%\6:| IxX dTQqL
vgd>П.^c޼jaWKy,"Eme$jz kϻ
JQ_$JνE'GTTt@WxrֹSyHXоNǼ@
Tg$E1mmKYgKWt"B6g{s=Wxtv?tKiIy8{-/;%+VOjW7oii_ID4X.weǕ&iKc+;=i_~?==Qv$X!G~TEV*=A~oe[ft؀]"{ƤtB ѝ>WtȒs'<=O=s;_	۫a@W'rQX_wOTO]E׏ɩ(Zl7!]1"8fHnRyZ3B*07S$+@]˯ԛPov-6'Ķ2ji>Scb]k )S!WM`YˌnZ)yQ{H╙Oݩ
s{UUGʝJM*Pi D㹻cbYҷjHkllbqm\''(g>=sf9N>;;\5y:D޿?E*g$Acn2*u6vF]jXF0hAWGurr\d^yr᳴GʙgD/TE?fI'Rik<]aHu[cV/W_AKxblQvzp4n
\!_s~]7g+ϑ+Niٕ_C<Z)`:{oDw}/Yb
f"{
k,'Fzb/;C8&KR1tZPE:XqնZ1,O<Wϋ>ӻp;?YFS7GΣ
; $` -ry{keZRjCțRGp0,}]rInGkAF}EʑC^RRi"0~p3:e)ZG*kfniiG|eb%cնC㦥al9Fݡmzz(6q!ktD0=f@0,OADP6cso̚jSߢa1w[
M̪f<AR()Ȕu;1c95w|p/G1Ϭ~֖	Man1?wd9Qu>N?os}rNwa= 9|>b["Dzta)y*;(Ⴭ>%K˳([EeX0hFo>Z)E]AhG R@SJusc#_Of7+	;Ua{_RpPA,VV5I/!w1j,AYo9,ރe_
?f-z:5(Brl=܎Ʊ#82	29@ݟ<W5۝b^t4}sL8nvҤ}Fa>M['gSmINjSKtInVk:*] o0>IȢTMNq"K\a^9U3z/BK{ЎiL žgVq`Yk"7/ךޟO*BaOWJ$RV {:x#'p,q2b 4-}[ÂV_Sl\eƤE\6<@)ŋʢ}z/Z4[ގĀk5Xi,.ף(sF%?]?0%NΆ~N8q@\{٠N4wFG]N
1Bט⣛UR0
e.5~uyt1~a|C_^qx$A|/jؗo7k.ʔRzD-hÊ2@*,Ďp].S)on.O1o
r&@p)n1E!ǭP0F:.~$T8[Q(m=!*0OOƔHV%?^UleଳO1x,@a aYI/;Z:3̎cy'M5ƾ;4i__DrEh<eC4BKRMuڢoC(GUa%CVZrƅtpG{s|'<ȒsYh?,'.gx:eHk	z~-Qĉs2`:̨6P<H[]dwѿo{B&vKtd#W3n?	|2ZOǜ'Rg{sPea8qa41bFR/̢{#aX66vU{X&-K>qJ;h
p<{z~hȾ)Osv2Q4TA #SwBkmu[?O@ 6@bihon4u[y0Yp@jH_sR==_}w%J"-^^as/+4O]i9rEMvd qf$ǜgWA7os>GеԼj	!srctH,4s߯+0j:~i,n&zá"1xF-;S_6ǃxi;]ERL?xMIhZ]<&SG2;L$ӣ꽴d?<{R\@-$#QH%Y@L<K]^w{>HN5/$}
Ku\E[m]
PZiB
R4E}:.﷯sH	7&FvNN$7@vR#$[ɗ3ƁF Z	ެ
b+x	nfz2u=R%]1րr|Zp:*+2(dceTZ19'""[f4Ո
w#3U8Y̕s֤&k`R;gC	"Gǅ㢙!{,ɶMR_lDZ-<3tHeĆ;l=bՊyUNfm;+lA K)vr:l[E&4>@&
]\]cC[	nޑRvJ@Ƙ"j_sTvPD+h(`>yc=C#-M#9嶚

YkIo.5x»fr{jQJhݔB.˥8|f?t>mK62]fc7ƥ=>/Sʊe8{`{0,bў_N v\3ӇzA"j¡ зW^Yx勸/kŸ̓zT	#Eha57הNx鈴lըU˶aXe\^MYw"R0x~u|JxKe:w~}P
y=9Tvf%SU3TQ2B5!|ohA7A*D Ϙ! 'ڹH&/Hk?QGR.ꈇm\~BҜ@6/N#
̠bUo=,f4jp@:屘?~ /U4bǐG㘀*[X%\k
Aśy-9"/~<fOy]eW$M*vIHH krk.
jm߱8ֶ{3=@!
0rPBؕzvUk9W!ϻ{/wd*mtI9ww˙ʘAMWd!NFa}Lu8ڇv}2^r|.𢛵y7,-U(wXXW'
Wt>-oAJfs)TSQJqO	RO-8
5C>MovV"<ބ>I[uq3C,# c.@88}*tdsVݚvW}Mކg}^G]7æa8!4d.Yi]N8 76_jB8%?enZ-lX/qi^?4x|?,}~o!BwIS;]{&+bCt:Aisc4ZF z5P<RF2}xe$z`䏀^7pLs(WzC)=M3v<ok /!ku74M-l-ZIg<,mK3>Q-nЇ[%KefVp`5)/W8-)F{,.l^fŊW1-$$9+W􆝥WZ~[4ƌ؉4d縷{ي=?#|=ػ^s36ei|`vpnXj?n+ nGkQ(X`c][:L2ht7y} irUҽHG]RT{=@
D{.3YedxuT۪:{H bMsه#`H	Tf3lvcoZEq3&l;Jk;P3Xx%XMȸJj[g&^FS[Rۯջ
:=דon7Ǥ	@#5_s.TV!UbX(̨` _{tF\v+sޜ2Jٹ3u@zPV͇j%2Jw+ns{w\Fz3.*h,ei/g/?q>YyFHwb{J;Y~ܢ2l<5m|O<T?D9P11L|l5o`or)"8|S6͕ߠu]"2v F\lv5iv1si',JI-brԘOL
n?rlp:Ҳϧd{R+2I&Kփoe'5
3ݜ`	ePfI_%L$cz^͇;Е܎t^}nioEA'E$^PW*Y1tX^?[>u!-~r=#fx;Y6;hhɩ
þ8=2ayIc>"}5p1[Iu	G#{L@4=X,Q;v!eCжM^[Xxfq`eݪe"!F!cX	Q#P;w[bܣ?(ڷEv"S.
m
L$%3T17{bDhSIC
_\)~E34)atU10NՏWuq
`CwIJJ-ƬW(̀͡>?;8(P(Jx%{CHVܴZI@
yn<1wPKӵ2Vm?g$hlO
4.jC#|?A~ZReLҤ#VGVt&D5b#=]?o^[ռW`7bs#Es>#r{t]*kx^29um`
AeeY~G?i|Kݲ)>iW
  ;	]QTPq18n*5g{t7,D-ˆ;g3OHut 5dp-\+liUi]|	g y\cxuF:=JBUVkf?^OlnkB	PgB)?4VCc3dHaO\]e|Nw;	ZH.
Y%<l2@WeV^|k[攢rb*{Zx
DF;UFw9pB=ZZu޽[B~q=#E16-nH-sz7&$mȕ*jʜYK1i^5Jt2~5?ڷvp>l)P
8L6E5 5TpsSMR [budFg[Ge7$lE-k!"W'@]dt9fAB_}I5D;!d\[q0ұ7NOG& &$1;ٜ
+.9Lp/q̀[hM%L:2T:iue̜~Kʹq㇨,ӞRi?o{<{ob~;qH̚<^y4p!y<gο=KI2a࡬|oq=GST;gLO)߯7KSCG,,iD(,L]m4Kg[tMlㅟy{lEBYzHE,kNaoԬ|۱wwnUoY@V}bo7A.p"	>zX@õaXb
|lV/m%@3pp>  "'ioڷ
I?pڸ<.=lt9LU`q:H$tb[Af耡/7a?		uqnͰw&B\'pHxB(֠=}ާ	`S1*hxLJGd]4S˙7GG#Y'5Yv]5äm
֞9δD-+zia߀:yϫީ0-M`u~ƣYħ!:灺֗U+|Qs(z^9ޮ­(*u`HaktLeWK`d($ئI;"0(Fm74jV>Qy*[=|S3oQݦ崭~WowPMxk~h^ ~_[1.pZWﳽFHkQ؅PunWw'[跞\1%S2q?#XZ$뀳¯(C9ja_ǉzLwǖ1#W
vtaߛW`WpD&{/YlRMBtusvp)t}v%ںz6ڎ\Yn
ĸN.nӯ(?=|k+<0%^h5lɇsgHX*M	rxK}B\qBl&ZjC`ϐ1qڟikF4@#кQꪜs5	膍<.{X-wͽ
EkiQ{0V*H`U3
	Fߌ,aYS&H~G'_bx9OD{Yw5^H</;R|+7HvR:p
~t~Fֶp<=瞄h-bH.0]Ɠ"N[D=#a!߭hZG0-=6 \ !|`h(ɲzׯ`[rV 2Vw{-yP<R2NN^=OSB쟽-⣖vAZĹ吷0/&WxJX]O"'b\)U!*z7ۋV&xuBjwߩb0[w
3t˃awYutRKЅ!em<\Qkqp
/yq:cA꧂uT[5o)-ЎŽѵBW+1ޙwe7uHQA@q^.n$й,#sV}߷FS^v=Sw($@Xdr	mHH^3>[)>%/LA*?yh"Kgvc5
~4']#}ݝ}^nQ{,(iL+Cם
$I=o0.j<,:<2ḘʦgSr`ef`+;tECEUMQ'POs;A6)c30_Yzե|kSv8Zr)ͺmfl/=k.H-w֘!@&k%ӎ/qǨm(%`#ElHYz^n0~V8
Am'%Nq*>5GO҂4O!ܞ?NCgJsJ Smwz,J9n^CU/ƻ^1@1EJF[Ή']3Oﴯj=]쉁=my/>0
?_{jwBiN/aϺ8n1<bWD(UH]tc*5NQ9P&sHkӇ8{?L9g}	nI^3U;K͘]\Kq#재zdUzO6\&'vR
k*.B![4ݥy,c]!PcPZu	\nH.I]RczWJC3s/D`L5vc.jըz$!-~,f3vA,`}f^|-Q2E_ќw#)S\#d)	-!84(R$ʀ<2wOU~Y,ެiuR5+b·Έ#p<yiW?w|tQ.ClS<7@S< R/dUXojN~mX^"?\=rt$ɤ:xBEv"}
sh) n5ӇP-ei^L`	_uԝOoԯ'(D2-.	yX'$w5+MtBnj*XM8ڵxpU֌13Oˀk64ow2~/?\&{rXYxY'Td:Q=ʉ'Q2mW:{oa,L=L%vp(_ucp{-)^_wa`rϪa(Cc_==(BYp/xق>V|DheGxZm@]!lSE-qŨ4A1	ȟK),X9^y2
&jq}qtˋpU͗Za_.PGZV#}J2onO;[m)"lʚ;wɝxQ%~wfPŞL
Sg8H;
N-u=nlz<	9tϽxSTvRw]>DJ'oK퍜cZ8\Ƈ+nw=roy 1iCɼ/oHɻuvaxȣ80ҹDcLҀ'9o̗ŅE3z݋c3P)[OVٯcс+DFJzw=8-,>g\<hu̓=9
+f,fu;呧	-
txeE  nူNЄ	ja;oo7C6I2WҠpDɾܔ:O'Q'a`Q;CKԿ3jAq6%%k|vs%5<#ؠ[}0Q+C0.#0~h֟\ۢHW[Nvߟq{P$fٺ|;zDߚkZ[~=wǶɌ?D)TLtE='qHDJ|E[.ˉ$v{2ZhB@A-wU4ӅM/{X2)vlCfUf3E<Nr-x* H%AeVYn+[2#װGp]eg6Sްg8>HA[E5O\NXHҪ;zs5bgR1!NDT́yTFk; ӭ}g e/nAfjYJ
:O#ۆo[9D@Љ=U흼RXp.YJ`p&^sJ>MS+?Ih;>m2_r,Кv2q
!]/x9O+oyn%;67DRΉ~7^sEp\[I|eթ2C5}D퍻`48)l'd7ǻ75<7]T#Np)ҹN SoO-u킢ls!@$Mߋ	b2_M/(av1$SErȹiӜ}%:\%|[U~ýb>asi>31ApAߖjK|Dd8Ru{z%*P*# X{֙^3|ZH]",,bYS`Ox;fЏ,TMZj+.VCshn1f ؞FXsT;/'?Ck	;PiaG6>=źiGOHǐVG;+ۊa<۳?0qrj^DnAN+ =KQ+]OǪYٽZlW҂Ԩkn!m"sk7hw~lN0
]
yAXJ^=jpٰF[?v/X44N]ԢO1ѳ7-|,wX ~&@:>nʷK鼪!}dô7j(tyٝUy|/}v#.).ڝ~`s mM1KӷE\"5}xwŇ1ߗk(X%2xعPJElQ*dǱ^.;FR{4d_zD
0otsoh1眃ݚw`16+RXWQe4:8>DQeM LmgӈTrA)R=c)bl`x$D͉s<nϿC<*:yQѫg)qOWtp;rsm
9?)VK8 O[17.\ :@m?UvYߐ{Mau	jQ8O|cnRbh"O{I9="%N!WKY4S=jƼ;in@ Q&6Y"6N֒V<mS4/bo&W;* t%6;,.Md|;:=$k=Mb{4.7=}^px:CYbUf*CJ%谋zo=_ijC=)tY+O^'-x7@G8dC_~;q;.u 1!Wx-V&4UdBP"_U3[.պ%*2g#v
ͥ3jr
oY"7_8e#)fu_ogbV!re$ZƗuc͆QHAS/Po$̏è  kWL3Q1
mBe/ϟ	2:*0Fx1sB*E΁*kWQx1̇D8Vo1y@PD<xy1	+{>h6{l$`@L=):#'"hO?<!9flC~D^U03_(CϟhEz]1yo	iR[<8"@[;xAOO̟;HUޚWH"+*7wٔY^[nF5M3":E^h
O
6r~eCe݆nXұ'E&DJt>ئLzH|h"ka;kA(Q">j6і -_O0e|(j[M*qH^K=
9#
aeLb់,K.U3@+P&۰gaW(JtX&\_l{7gG#V\'ZWh|}y?e^9cSnoLoGVDGɞt-(^~GoZ,sp4Z[@="|JtϪL?/A뽰{Hߴ[]%c-1뜈uubNmCD=콿I?֓x5VXtydgv$m
[l	jhdAUɉ|NYlXx]s&g<Y0>wi#- ޲3c>"-M*aQGΞ[pp JD;4oVߌTlf-Ӓ,.ȫ@yq\}L8kƧ"k4Lt9xow;Æoh+`>}2hv.%Ӑ!H<BUNn7f*@FUw]NGuMI#,V㺍 zzټ3<D}V8ݹV~y^\{msGcr,c0is~@hG%yiYZJ.t2Ap&)
k8w, #ίZ!0D+̈́vme;kZQha+owacM|(qhփ䑌wLIRDd?2q:(aC9S́-m
GMR]-3Gd$914 ƽEYfQVǼoLKGj0DDKAm++s!cJDA^	5?{4`Ldݜpa%ɦ_~y)`
_ts''T
Hpln/U4N.evv_T[|`1.
B,x!\]/sRTt"*2\_Mh,NPheL9/1<e]9W`<߉ox-%O;?B=lK\-*%]
^0I-Hoغ;t@^20U%eAk( a,ZHX]mvl
mc-{xBVaxi};E)hlS@5u;!	Ln^~"OКɂ^^ѻh<N@^3e(+__z<TaZڪ"`^[ZZc @
/,I}"]t$
^]|qxh6\H_n&mk0x_ɱ1	}N,SځV?HtUlW_pɯy&mIpjs/,衆pB(SogW'[xZ(;)'7^dpᆑ)>h	iE;Рu9ű<V(f.[YWݤMt{_3]+}4Pʜ;0JȊ2!ϭK!pMKBʒȞEcad/evXsolS\Kn;mpa㵯XmJxV}Uu1zZ;(w`zv f13殆P~f>	xv^/~ȏw-S5~N^P522"o*smsYXv#]]4$螺>]6Mv1Ǳ^͡Bʩ=@WFLզK?@xlmvmž9#?(?w;pzO-(
gZ2s-~q?%H;e%y!lRpq|b]'pզvKB/
~7n/={˧7CT
b
\TFM#\1ͱ?s`;&',tW>Buy9i{ Լۥ~3] <?'ߩ+"; ǓH-A+^/qj#9G=tVt=paWr|2vduVQ\oDhHT#
Zg7zѶ# mE̥~d+l\R剛\}\jZXCxsLI W iރN@.?o~voٓȷ[q=(,Z5L3{KyI3)m<^F'*PT@,J$fA__ͼΥ?{	BU* \}cUEwPf
F,u8<ma_1WXGņxN
;	5&@wJ݃nɍ%`SB
=+ p|
ei;:Tχ^=9V)k[2xD<]%C~y;q zǍdryaN~2/eο]ׯOGcA+P|qݐTiGleD79
<Zpw3yg0Bo_CqP$;c9[7ZsAːNx2o,3E_Mwi /-Nvɢ\,6Be=
G2͑kT*'vbv0UWN?~Rn]k!v@K_oc%tZſJ: <\T(lN?  5JAsbpk~!L8Ag؁+%S>@W(nFQCahnG7_L"b!TDGdR^iTyROn;J|36٧U1^9yCrA-[Sk9	$ƽOr+=I&oc7v=晍;s sbZ UIn2Lt=]|
w 
HVvr\v0s1lk۹8a
lg=Ye]j0rTW_q-*<enwW׈l~2^IKW.(mZ6)q-Z=#+3
!^w5A^bY"Oimr99b3m|yl0׉)2wmQ93יk,r*:_Pe3)а Ƥ4pmhͰf6;0PK73-qw:SZ/Fty:Pr| 5ׁ	9ӴþaXiQ++̻T*/,T7V^1
:oc$E%wq9ulИtHQ"L%zj:񺦹-/YUپo;ˠv8A勉0tRƝ3XoS7/'k~g&oQwC{+I਒8,p)Լ]z&Hδb,j\Hz8.>yfqGNS+`?p}3m*;A84 /mhlTKxIo-O
ݔm\pLzQdIX<] N}?e9<wa݂b1xEI%o.''Nsn ~ES\"P!331b?I=sx,x/gQeJ[㺏^B
4H$̬]:--xI
dԞt~Y#F-{}񐧶4ݵ8SO	TlJ
"V޼t#*Չ=V;NrUsnaè0!?]{ƟJMIsJsteSr!h>7qdF?}sO
`aW<RhNrʦ`.-H/}ׅyLQ^9Vs\%@I+Fx]ﱯ>Pww~(Pv㻓&vFAEv ^bWe~4{Tp>8WYY`Ko*Kc1!	A^X)]ޥ8{NfQ'$0{'-Y6-uFC5`{KlW1 ׄө)#&~r}z?N]_L9{ 
l	
m ?3o j2cb"Ќ[׳/糌Ҵ
p@H+ 4n Iei9
,İܜxnT-hＲ^\ےx	̉v0ٓMOQc֤v^?s(nֆl<x7MwmmL-8vl"|ӄO1w _+LR [Q~iX/[:17A%N(|`l/uhJ09myDo]r0}YiH$)¦ԻCܠf=@Vy:qCOj(f퓃F1f lȶvϛLv%IsQØ<PseJ;.;@T>>TI4l1U[xT0ޗPmiE󅝤!f</a,ơ\2~H|G=>sAf<Ad gw3gϭUTǌ0L6qUunI@ƇN	2kwtͩ!s>"KY~u{^bX!Ǹ0Β{N&JU%|'`?߾>"Bfə*_dmSfP6o4lX=8JM}%Z9n[nOh1 oj+Pn4qN=s_NaZ$.6[j^ڱW3+o_{a7 6,VCN+HG&썂ٚE$4JmY`\<<F:&"lLlLy(X#3a;4?ӓIz齞eFjPgϬ%v2_E<ݕo
ߟ0s2m,%dXR4F͕=7R[|Vb]ܒpc'%(dy`{(˙/2i;GSOjZ,5ŌXf,tK)
%"qbSL\<ނ"HJ#huAI[ ~+gtǋ}u~"k=<31W3^1h'A۲!Mx-BĂHVuU㟬ONXr:qDmJy[{%1݅4UICA*=+3Q`5hEl"5@bF$ᆓBQ1
8<O1n-b:6$m;(䗚i`w5
县0-~LQ&[|+J)>sg~5wz.e9vM5msb"=Ūށ,Nyߥӏ^ʓANs
vպQ+	ɸa˅ҖF`֫/
+C^U*HaRن[-`爩P뷨eu<WkԕۂU)}\T[4ac۹>{#;~/:&j+̮Rxڶi{dٸ.JJ{є/4~|1++~\:CC&M5
WVANM7y'ڎǝNnWMv|1詒 z[roK!8
TJd
dZA9Hn9>^"Y_3Ɵ:n[AHH'lG $é12`qzq˾㐊5H9"'>s=~a>x$]a_;+7Yʞ,)_Tn,^$LQCX$D.8ȻRScIct7:J
y,Z>ڎmye|XH$A*

#2?g?յ~|kc8d]EO15K_OhH4`KI?Ő/U^vbV+"yڠ	:PYz~)}X\ې%ǳ?3O90+c^hVugʷ,<\
,Q_ՙadx@ʮI)=YT+ā֑}	8*|9eu}(,셏"?>El6Ҡ~`d]n!-'R3c ::vI.sSYo/A6Pb/vT-*Nّ) ٟztբm?S2]>75Kz˪2POߋI!y#f/X?޺?W{"G8`҉D]ю`N'E6+&+^qz$n.urҖtm9˔-9Io«m&ܿ-ͫsQuAF=>!yX4%,=~p7[zGzxNMԔe7z׉1DZmPZi&@9ac5%ar 0+Z\g`2 ;0gF:<'8e"PK,p7p#Fqca[_اqEý5ܯl)TgY! b87Lc$P5n_4wDh#_I/cy"-h$1nCJ+BoYl߭E-D3uI>KV-'>W_T';Eu'W, 5
EInQf9׺,l
Mh{FѶ
dz5$$ID"ɮ%Yv趫wX>f\f9^'epXǕSqaM[!BxϚ[mt.y49s4OX]|) 
gh=MA/mX@	9'
=QWgqjC,Xmܾ[E3؅b$VItN8R6Lb\Zƹv%Sut7<mNBY8)hX]#^a=~@HloҥZx*-6PUW*oWtiړjp0,MS^Nr]&N?g"Vmda
Iv9x!-E+E֦rvn0^r~2	8Ζ@k\Ch!b!1_U@HPqiD
r]tXG!tC6pUʣp!j<^~U^2(OШ!&,UjՆ,jzGFNΏ⚛_#s5ڕ)XCX8л}B	E@"y׬"2JEZ?Nn5esmnp}|Yrvb	Rb	{8F5[d_u,kSm 8b T0NQO.*ɠy/rr?
s5NZQ&9x㞷Կk"I)$<Dsa#$$*83;pN~AO[oCǵ'N:(P1|hּ̨9<k9We)݂=Gb^}ފ\C!<}޾t},c~(PU!|!esA>لxeAԭ1H+Maw",/<|ABNiEVOO+S/TZAhq\ڧjGb0P|}RNBʹC\tY+&ԇ">μL}8|,'0{:2	LmJq?9
~#:*יVsAKɃˇЄfG3b/dv(>]`>Xdd0L+Tc4$Rb-c18@^K;i$~~jN\<
Sđi
:gH
\Yjvs|;J߄so=PK|ơ[n'D_(g^hMseRO{1	3*Z<'|4+"dVY7bFa(ʈ-w16<ϑ`)5ֆaM; [
 ql2.%>=?n+-mDXK(z=KH1k Aa(@. 1xqFZ*]llyKV`qP#'Vv4ۜnjlX>)-[HX*+zd Y3+Ҥ1*OfOURzcǻa@f*]"V2@Fd뫖4qWO1IS,Jm7,DFPOUo{+qm6B_
]\K8iB@~$҂+v+t>
WAH"2cOzlC])g܁`Tdtrv-Ci6^9~q=g> rp.2RYt#HJt9{0%g
QT_[(*T5Q2=U33Iҁ/og}
 ]݂0tgGH~A}#2[EDCi[yi>~sS^,lk_Ms_^Iy/%/Uc9pPwaǥpwo	2<|;BG7z}߄}q-@6[MӤ-)f"zcݛO(x }pPѕ]hdYMCǟޓ?4gKDFNמ0'nd
S1|q NyO{kRid6m;|?͏BĎ7(#cNzrSU,|u`JR
GrWoz*mNeQ36!HͿ{꒦!?gWYwj{9z8nՋiW
1anESn_xp)V+tZ
6EF϶Q/5\]GwR)r~KDs5a}[&PY)I[_e=s+TB̗vb>`1&2/7jZ}%c#]rn.Fggl)pYJ)ݳbu[6au$^L_*AN&O_N}q!`3W4,tB*P9/*B5}.5ǌ:9ZؗcH,ᾅ95eVAp<l0yCDsf	#f4:([	G6?R`[P@u魓p+94X*@;n9Ì{!q͐jQTGťv<q:'Դr 
z^0Uz\(ቇ8W1RL|0ԐO6j.[zhCިިn-l%>ɽ};-U\':(-
:8%4uU.߬R=]|~+<ە5؇
\ J6"Nk0z:o]p͑|-/ʹ
ז\#:Yfq?,Yv\mXD[3guwmD gQq;q@C<eAu?iOg+:ͽn޷ROVi)o[h'
m'W"S<3`j*RE))iCJ[hD8|r]RJWvD:gTu2t@Hʒ$
> wq]Й륄@v+c6:iRXoHP#)zV|[a#fHŗUuu G=2P۞|kdfM_)FA##mCD@Oo$
'B/gZ^Av8>4B@l>4>,q⪲~ڷ	N5Z@;߮g-ڔT}fp,[JP[j׻8s
*q#cj.97?#PR*܎NWVjCg#.M?ͬZ^{[d?Kwеu;딟2_U	 ͧ8J|cAwY\?BZT9ϰ{te:kIZbH)~篮NcD}55s?Seb]"	y{x<f79Hϻ Lt¯h׭wRaT%M}{=yM[9FqGC&X)ۍ% z[U?H|HmesFPH.ȢηtҗAN\iT:L
v4[>:'nRMs ?B.b*[7)I|EN>LFF/nUp?xI=%4EFHm}!P /*	kZͺ%|H-|r 8׿Q
`T'1
o/))htpU<ُ;nA3o߁e_&f< J)-ii`˕pkE:^RPM,*^
v+3%1u<{k9+qr'Ή,iT5:k>fӰxe?PpǃyKxƳ3?-:oJ
/)tKxܫ]j2mPTZ p$c?=fǾd9C6P肨OiO;=*6O׵w.Q=|)5 ƘOf
ѧ1 ?Tb*nܾ6}H;9COqBH)H95ᰜp/K=о_ހ>xUs(OvS'rʧ!9qܿls/E[Ui
Y):`RE04on5~OhG8WE 'xE4=aOb/R}W߽4y'߬®O+pӍfk=8K0b
[(tVS-r`#9CApdFxvybΰp<nEBQ*]p4DlV!ˣuY
ݙ NH嘯6{'ƌOѲYбV;/-L.[_;N7b 
U|ݖ]a.p@q.Te?`&
IeFA9bW\X©EW6 w׭g>4j6l8?crQJxBGqO;2+7/ÿ}xu6l.{=x*<(N64L[9݇'@4q|58d[)·v6k6fuo͟}?ѿ¡o':+Z
O߱U%Zy+X
Z/c%8qrͮ	Iτ=7ZŰ"3iUGVټ5ӎHrUfO=-!bV?CaTb
x]VqTkY/z+-ְbbbZݯUZzu`c4L1II&r[8[&Z[?n'$: iI(*mpmZC\hJu=}+rCU.1aJzLZ.&^E?z̛kraqh]Hkg
ܔ!)?M\M
Mбz؝rMDD~(>U.m\'d2]{H+mJoUTw lQ$ <dyJx7G
4ouqޞ^nM`_妀ܭqܝtZfn=Of/zAHA$54խs(axQ	ơC_>^ǴL14pǁنNi#LxBco6-שd!˺p,h)/&OGYSf+9Xv:PA|sBPcmkm.O;!.oge|غ}g(0'^k|#+R)KT Ñq( H"K7^b?Rk:;J6\'TqKVnb{n'&<%OatKYEHWQ3榋~g<28gb=~amH2pjuQQZp4\A(iqs?wʪf͍ 6|y.}N鮊Ke0~:6EKl8Lȷ *8F-;)뵌>Czdl58;Y/Gs[%xH=G 'ߑxo=`g4DJBJ w.++:;NJRoʎo23U~SUp:eB A(HrC-n5Xڝ5Gs3o,|>g7Q¾.FHmhvd8+a[ЪY1LpImSKqkz^_2c'϶W+mcqw;uWo/bϖ?,a:zDTm7^eP&a[%
l["kr.oxʡ6#F{\Z6}f#noZ>Xic.~`؂BUP
zς=xJ${`/ɊQεa0XUOúćkPQ@xYx&XXT25)ڿ2MxCg,kڻ7В_v
077_p/_9ヅ6E"Qc3m=,W5&I*f+?ϩ);
o¾>p
asX\Ф_
tXt[[E?~P#
uCrO^&(=m15fHRKFt.9=~j>7ņ8P	+AySL	x#q1꼄+J
GhseT6	ekۮNSoۓ션b/,w@˻rѳj0-ҋ=K{ !,7~$OÎz3=qll*%ƒsPTaoUݡW7}{#C^$F,iVW.aeT#UPķkfo˭~7'o#9݊8a_KpӐP)\.ZG19{e)S+zKx)xG"IU'p+
Ǯ4uBH>MwР7c*ԈekV\>W3>åqZzYN
C	{H4(smn<S[_<oCYftUj,
\jRg=f2K;qnQ%o$^}(99+ÁNр[|˵W/*]kkEyEwZ$Psp=ŪMUG1"ӀPqOȧ'
pTzݥN5`[@s Ov&;U+}:(߿>xv#>nXT;?T+ܰTR
ptO7$4q`ΎdBQvB[0떾t+OhSnw	jN)B6DNnppR&GAtP,<"/%^lÞ9/QH}Pݽ{-HZ$VV"('oY*<'yǋZ <=H|+/.Gd:]n1PNǞ	z(K۩_<ޥ$^yB:Xsl۞q'?^Eq5̆Q2_oۇҟD,dǰ#bOϯ-$}]}˩M*v(`8е$b.k.ܸX;'缠O>>Ra8~TR(evG0_flf!"}#띁s狿᤿'k=B[L6TN>*32@j%ڞ+
,'iHJk91@y;rÇ
"HlG緫y5:uĬ\Hp>`8D.	Xv!Kwcw0<3u{}
*,]U,T)ytqX
4Dy[A$#VK[Rt`tM.`#i_f;v8oڏͤx8:!;ᮍ&nqRNt_Ӌ?tpBg9eh;Hu+"`Sjwy`=Mw	ـ\?ozjͬJ9hBR4tԗA*еɕbJ!'$IA
ՂWbu=cͲۻJ*LmFhk"\;\$s|w#oW%zjޟVmܑ<j=hc
yьN(ɂ@hŲn'N Dv7e{B^V\v8+_"Xr&KSni,Z0&
cui#JxaU*}qrf(<z6#!%䲡ɽ2~Hb*^|MmF
GXV/
cTYb7@X=|$u{-|%9gK
8C!姇?wUA
ĭ褟̕
C|c@^QyxA|pX#ʷĈD6Z)&t;xs? SvנˢЗܩFyKWW'g>>pyh-'("Zl헾Vd[	Tڲ(
6$-ðͭt|NH(+oӽ+}X}BCx5ԆAgFv!rJ#ndS5!24g\z~(Æ'tl"J}Zt20ĺvVٻ#8t~vxkj_BG+Țs	DvURmDvzw&Зߔ'xH\5pyWh2	JpPm`E}q*~:aaG|lK$g7= 17O'V53HRq6	&]8:7##CvK?#'|3V.-[dl֕+32l@ƗCHu#.̩PaOv<gA[PŊˉdnU?;[D\KpǸ0m{;5޻A`K`]G ?FZ[Я0]Ǧ>6QṲ_.=mnt 5/l$1L}UOIE*M2<SNTkLk_uR%|Zca;
MrB&qbR|~@|BVE+lpJ恋;Bn'5 l'ja"*أD섢dF5s&t8yS [U4_
 ayZ"5mctKedT,(m\$DJn
;t00/$G̢Cul[;dd7Soq
lrބ4qNvV^OCv7+so6I􂩢
5u]S"-\8ar'r0]fna; O=B4Lyt~Q($]?KalK/T06c;ƢA;%n]{!
ʒ'[c%!t5ZDC#ԊN^5a/hʴ~*>ޟclx4@l&9X]6*xӛK
T4ՇЮow>
Jr7tK@:H_;joZo=k]~M>\3z6;XN
ࣚ_*IGjs;_.OO烘f1a]kv)ޏ{K<Ƥ^Yg?I'
߷O fPfNXy:^zN3-rޖ)>GKTE!LCxtN@kk>uUJ1H2q!xKW'i<'Z{p:f*WI}qu%0Mx6ĖJ o[cN &&"xҠOJFRsMQ
E
r{;S8& hsR
;A~9vt_yI䨆x@|H>K8*± A}Dυu/qEnM*C" с+7N";:M{~z|1cُU}'sR11
oYTacƮ[d?Rw{6Z23/g)?jdbA~a2ud_M1NzNix}Jܨ [|
zȜaXcgbjjwGpN!>wKnDCR0בSۢRxN߲rqr'D<]~M Q_["^$*EFw6vW
|W_p>%xcuK([9ynXwG󖒞Xz5
+wtӻ8^
;V݇/;10};ō3_G9@3J/b϶0~eovfSѭnnB
:Q^\>
dkh?nRΤW;5ZMF!2Z	c{o/T^dfr.LLGn)h*,s$Gvڇ+ma77?vU?<P*hu WS,zOTp&n/ 4Zޭu"ηEAe(F.іi)z%Gc=dU"%V>:Eq4
We[f96ALpпgɥh	ZV^Mmܮc':I{#v
}-ztSқOnM<zqx!\a 0	?4`*)k	s>04\aTD|z%vrbl	{Kqw	d~ڏbfAJ"|>Fc4Ux%a==Nv\tvm\< +sIGd1	2r<MnjY3-b6JzY:%G.8eӯ
ԟ	K%3l_`R޿?9r<d4XeNP+|ȹ+,eFߪ<i>Ttd5V?%4&D3?,BL:i51^m1!)XRyQV7͚j\kĺ*OWܮ ^=g,t&<T;N,w3֑5bKnTT#U
֐j9猎k}E6XW.BaOO9jKn0Ԃ:ƼԖ~ǀ(u_T-F_@d
f<C`nQ`;%Yc9_$?8޴l|A3D3=:|^4Tv]Dv+
e8pqe`mԔ9.lwvTnn_үR8mǖ
&RId9#c@;KJ~IĀ6cehWD-iv7q^Zz\ˋvٗJ^q`%'<*g.1̾aYfHNzNZ2ODHUTX5J5̑"bgW&	. %5 F{.nSJVeƘGjRsNiO <+:k->:<y\w*}r/<l{
 <8հߦQM17_L)?gf@#+踵SeH~b}Z>776a*cցTan"|[;B8^}&o9GrMy\eKfvlvtcU.ȡO0w[N3S9wZL#ejS3]ukS,wpZɕ(?ޏvih'r?x~Jf-;n/a;46-T_ӂg9&[
Cy3z(aqwV9՗=r	(OY8 {Ji|2:Rg˛zW"1`G>5]֟"$-.2'ƜQtuXHyL)r1dႂ|իF^SoZɂ+LS~}}te,[$1\kד]b)*ʉ'/چ#ܶkB.Pw?MEvG+O
~0Gg|s}ߧo+Mboi]P\׉FnNw23?F7C8E{'wjOvp Of[ʢ-( 6."aҞL_ bDκ au}z <!lX7ryPfj,zf=Zt3GB\[~0>Lk:'d9>[E¢F6'H3\-dtˈpLwuxA`Rq<.~]O:--'i5O~Jc?F G h+%?՟-Gmֳ骱~{|up˺gw`܍]EsvjEmFLlop`w،rxoc&nV^Sqm_U\C-xS,2XWĪ'gC|H}]5C, 3::BfpOx=5IeЯveVSK{hUJsw<Û?(+
]5@3oGvЪQ <a 0	-*.+BEh3
NDgLB,5!ׯg+<y-i| .^WK80hjogAW+FNe6Ii|(	ٙtTѪoFrsl[Lzھ-)!cv BAv2\H;%YvcR T|z(qdkKm^Bo8[ޞg:@	gի7aJOn̝HqU	^r!kys8~svrU~H f79v6T/ێ}C	J"3܈Xj@>o?7;-9ڶ`|,w
LEϭ 3d_g[4Y_l:\HCja:לodbͤﴠw8ǥ	ZBo	ht}pHbh_Q\#	{؈<wLmUf>??gH$w+MI$LJXk#U8MnHS3у%>4<m~|8CTrm~oP%]TSaT)e=mL(= ;ŰiVTc]/|[0R4TÁ-S9D/J^xm` t* 8U;N	@S2fWps@^7Yx dF}z+~?o!vkmM].rfm|8G
8BYFӜI̾{6"La8tԀa/<p_L+M0m)J&2!kN
~#^٤HЇX=y W>
 | f(礋1]s$=v9`?Œv\6DneJZI>nM<xI,<R,ؑߋkjX
J1|K'CilehU<v8r殰e~x^iG܌R}bnTɺbo!8tf47!sۓX$*G69vl0`vj|}:_Bx(	 }!QZQD&-(a1XF.'iLA͖~LV拔hD	*E<4 8K~=H$Kw%Gs.djWU	Ʉ"WbqT|4w?O:/=Չ
ix6Rɤ\L>vK닺;ZTԈtVͺ42理ǰ;!UR+ |rcX]ovx#HC[sX[S>٫@.%Z`6Æ<0Յwy#B_бrtڅS֚͊%[Rht3Mm>|X(,6ň
`b(#x\z>߼_Jr}MCج2xY
b?S㭺$hgsz<u:x>BY⁺SD|"2Gn%{avVZx1xH
v<7#)[\>z*v
D|*<&3nUyV,+  uD69օp[p?
UWa&|mpޞmSBC[fBE{"|WU݊f{&۽9jghNe{Sܺɞ:I	h4wm>Zm@r/e^5󆭹c9[uf)$WEޞWw&$5ˆZ|	qQ"Ǆ H2jOǻwl7"Jv\Rct
:POv=p7㧽hco'
nݡ2mY4T;Y>&s@DGFo;%^oQTڶ͓z\%Ave#O$uFyKN>2eWIs7Xea=:0b+UÁުLycϨc!C`_G-? :Pxe| νu\J)$
M+PW{4[ˑ،_.ÜKѕ,ezLbc%^+陥G sR-5F"$ؖ1t9=n}0撗T} eF%nRSu$ݔMN
-j
We\b3rf,kL2f,\b9a
KRϿԩWR~9w$q%eW,уr"=-yiR[QCߞ2^G(.K:s%(2@\yYJElpW>bR5Z lo>b~yi~X1>%~&W .DЄ3]nMI#Iss/>#1sñ	2u:PŕKل"Zcޜc*7罺NVv:oNbt[k1IY`6%Geŭɞlʮ&ewl.Et [%Q:|z#>$GPphm[ ͘!V%$t?ھkQeNUGDDn"G;OK=TMe`W7{ش
et#&&+Uυװ0
!,B)'	;Z"&A2Em"S_eKoGd'р̰Tv!@%g;'-e#Bs'*#o܄7uJ9,4se~猜RT@iU94 F=ٞ3iDԞkwgPnk@فPW6ӧV×,пܞ'$D~%͒ENO`jf7H8b-Sx<1YARާJᕃg!Mxsp;y} ?{s14wyd ovZ(q,ob8==5
׽]9\7vk DhuuOѡ7`t#9v?BTQjwu11ENB8	uxYm#SO0A~k?bQߪc01S[ЖAs>#~|vB;x:*Ȣf՞ CРeǽsaW8p>.r$Vs9rbr	8vr"J# 9,?v_"9߁ OH[؞8'SSˁ!,f
|nEÆ+qo
;'/Mn㝜&KLlZX§կc.hmY>L*/i{h+YNz[Eh
[g3[^^6~Y `)#n`k1a=@y6|`F˽reJOq6.B#a7L80iA^2)v˒!B dkef4r!gj42
"%{|נjVO|^7闅8AKY*r+oo |
S1Wq=4/\LAH%v҈FHM
O"}*~tDswg	cp!;wиv^4)b>oN?/ \;)~eR˭6 4Ba\).@!au߯B-I8
wWX8w[Rmf%ZkӊO齣sOY[aQv6-}&F,oJZ#9t	8󕚇u aGҍ
c縞]na[7 E`wvn]ˢ>v]0}tY!rr͓ ΝC6x:p,(Wגztjv
/{buQ>ƹܟ	>%ثݯC8b+\n	]A~v136A ]n~>1)!;T4^BI5uGD>K:u{oHnGo2]ͽw`iKQc?{Wym6a$7%Omњ/f
8y;}
U#y8b QA$TDxݼ++o6Ts;@=YEkJ8|̫V]`^+
	_m>DKS㇤.qoV-OӤ珜HZeO,|_gíx`h丢|SW{	4+<5>h<2K~u^'>.rnͰck8pƼT 7ۥoܱO)guT&q>]h(3)%1eHϙ/+inOM>Mwq6vrYwՕWvN`%#bI'%%wѕOĪ9[^BPPp"Gj,U{sYBn"&[ e,	<_&7PvgbT{c]кߒA>y|=H?s6H.M!)OZ	K\cY6$=Zk(.:+%IbhzXW>pEt.?!%?4gj)=&Ww4oT|G''[x[w"aC(.^=1}D`{ #C俴~Ι.a?ʰeMؖul4wSvP5e)dY(3ZUv,9PŤǡpQ; #lOsr4ХE~b"G[Z5Px2# [0jbNE솻`k)hw_V"EUx*pjb J(Hle3ScܞSqouI̊weq	 ܚ"`"~sCx駨}>IArƉ<
0YƁ(_s8}ٯ/GME
'eC1Ǚ$Aɥ?ͧmT88S4z
Cѷ-*Ǝs:67ۻho+ܫc80ň
R3
Ewgd_=.pbK`=tbbǮswGmb{$v/ṀeoCFFU[&_b9BbǊ{h84zÚ1QMÞt$t=nF&9;.>O{b1timf:nIIE
F2ӹwo_1^ڣ45qgע/NAO Mn5YDa N;nQ.K(<W|dV7G|)$LQ(9crmQXlٛ*9CGm
N~iLHUAK:Zxaņgfv5jdk8 9D9OrrO2t:t0޵C
̧;~mYR{:QHޚ;*cP:Bi]_e-"]"')2[>vpRG	Φs}o/'VQx	fzZ)Fl}pmoмhX_rUd&bѭ'dctj9-	 #G]~?-~qP\#l#,4120B(lV[#7?gRL8n=ڤ
SΑNr$<"r8FtT_fHi{Nv= i[H]
!Do7szvp\@\?^
ɸ] ̣א7rjf]^@61a)L僘^ĹF%>M<~tOH@*)Y[\`~\lvꎓ5"Lo6`|,̢}SB:qt$?oWV4'x${0!KfŨ¶^_UlHDtg
Y#mVj/|Ck*%DGh}aL;}s+{'3bwRQqtB'D抭V")bFe;<:2|Q3C8`fZ`KE;fyiukw!G@0[P}5w4˹`jߙ!5:s 3Iì;O)޾Q{yIzDhb>5%	(xXAΦܡ/ܐQWCSiq D[E7$^brl`+p95ml5$x.?,n	Emv|F0/c(O-;l>d
kQD[wc/vv7ɰc@\N`X5
F6Pst?(oaw󰡽y5:+7+O
hQT<v8
Ȅl~7_K^n桫N;#8yp88f'D.˧03ѵIQGaOq
2%EF1e'_st^޿e	k9)@
QasH ^{bFXEYzHf
`LA-]-&YGtkŧW˪hIqTA/v	1=&TaG9`P#	DSwl H<UՕw3y*g^W
10/HS$m2FRV$`bWjc#JdRD`'{\JjZH)un+/<!|/ݴA+6H9tnKwG薬q܇
\*1XXQ<i$ %o{^AeȜ)%jZ987}7uW=i$rpj/-9ܮz8L2m1BhlH-
F*^P->*M6WK1+79GxMZU,iAS:yT`9(w2TbSew00f,Z8X#0l]&{h+yDT
JզYՁGqR)$jSʻ\:Mh<S[$\xZO'ws,w̤;i7҅tp/-FH19!U4N|DS'H)낭\BRRNv_Ӿ%:
~xi2dV X799PXJ8}
_ŹٜXb|4J{#<\%x5kkf	']#,98ʀPl':U;q~IUUN
[EvrEt('Kyi
~o!G"vGש@~T8ثU º:}$/E(</Q\]+CYF`KH;h:Ms]<6HvְP%2|>x؟_;|"uכ֫n[' gdH0CҞUs?fnRT^n{}nº}IB㈮KW^=}=\>u?;N@b0nDr8
'r}˴_xm]*ĥ@$eQ5\Ec^D3tPӧ6/СM8R=V,Τigkq:ᖝz[gWS"_-SVwM\
I@r;#[@bv*$
v4n1Gx'	W@t}?(u _`JxfDQ٘x!@lJ3׊
	8ǚGBZz{uvr 螬dPu/}яgm[{9	9}B+3Ğpm=2]m52ӜW|Ii+ۦ#7|ڐ-Kyr;dԼuisVUTs
]fU+άc
N	c\?a9gI"z_cHaxMG`\:prn:iíi4=y^R& Ͻn;84SKzB_;.^hn>C( @L#nwb4b
jɼU؎CT^KݭdZ뾚oua ?t%Dāb:4G6A/G߉$k
tOޮ;Ѽҝn	-7viqXΟjlHyM}|[B
GhYB L_YEzLDIx!趙.Ĭj] 6+Ccmln?3t$ѱ|MrȽ@rckpxGjQ;?RA@U>	~m[(MCkkm7T
ʴOCD>
{m@pѬ5_	\KwkSl9VK{Cg q#XMYe6l 	>a<=9,mxpNglݦ[.5JSUou|mOiN9Yh,16HH¼te M `W̓|yZ}3Oh4j9w%`,K;tPbY$	ٍxį2E.BwD&$	M̱L Ğarb(ƍ6~܇Ay	=Vt{=8y iU?QV'@j5{MGvL|e1<ɕb#ha{ Q|bRC
zˡsړA.'gREGG} 1$WmF˞ڱv[
bk:j<zZ2lT!bo*2/|>:bx1(9s-lgr>tnU_r]=lu:+}tf-VZ;d
 @%2y<3<No#I!œs1IR:Rn+5>*nmx#r-vwퟸ'CGyDpKf	˗ѼhK,ksml6U͐VRz))8vvk<}No`貂A(9D+!l"kd[ONbO	_ˣ'h'I|BK^CM"EFFY>}H}<f;Msjtǻ݋pTeNP~Z[iSCwѶ'm+nK33ZsUB,@v)9,.
a><ݲp`"2dH]X"Rǭ'Â
"vo[~oGG2z^aMib}Sr+sq硗F81 _ݷF}ۡ{Gfݛp
]+=v'M>;q]6A0JWyXE5}1&Z3[9T}כN/< ċk\G
)p@Va^E
eD8H~$oLmq5*M˅ncoYL}x(MJFUaZL'R}95#ĉRf,r;L44O| -)J/
 b'<q}:Ł2P2wÎETD/N`s!0;87' \2ك	 *\hݣN+Ԍ"4K! xۊ&?JMC٫;g~w|Xj:S9J5΄LuvjE/
~^68WFφ\ʋ)=ބ/o2?Am`rOeyy{ڶX_ܧvs_$vd[MYIǧvح.Y49m`bmuAC!X)j[:L@i:N!w}yS6'.J]Ϫy^.wT>~da_U
K>_Sۓ
=shޟpvI7MlaGg:ٛO;復@;DvJ:D/UxΩx\h}^!}wy-k.ڱyE`q:;R?חfߞ?;_ۡ?/RsIӝEqcI5g )a5C:x>m.K(|a?]S%}]2zۯn)VʥT
|D##z󂍙@s\
$vΆX($. &T|:Kjrw:eI"'"G :	4_l6G)U͙/[˷)F.6Ƶƌl(X@Nb
>?UF~KVU:0V{ٺWNV~ -Gm%}
{C]sKVCdڠ<5Z~U?~
NiR2vn[Ѿ鱚E܇S p6~m)Y.#zx0
Wvw$0!Tξe@S*~=ldɡ۶v*ѰͶl悦6?m&ȨX*|r|KoN>+?޻zU<\;
@0)
%[OО]{V-} sٔeGdhX|%ƴt+ЈG4&a@wi ~U?eC#Jw1lq/qZg<BIY0F'cl*t1zY,WC`ݪa[ &Tܗo1&{}U!#7%Eu7?9~Pݖ{F*Hg&0Cjb:_<7DSQ<a	#V.hk
Sq^X&ePh6MWfW]26ViX[JÝl6ѽ-Q+҄)16Lf?(X[L<Hp޿(~y߭-sEt)O>19iʜE'mPdfƗ;	)H?z?=T8F``0t䱻"MȮTxOӢ~q/E%g:0Nx̅瘧"tWIBW;8uhNN{9 nKe=2sB%tNc Hub2#O%FM,5+?|D{c`;>/[{F~2c Q(lEb]3m\s7X+e%+/0)JKhl*̜L-Btx1c-xC"
m.Q
\Kˏ@;?`zCV:ӲK}䇅,I{6Ħ0O}
+Y}=A~VIuot@AۊT|a%c'"+kf$pBP
$9%o(1/NXWe.<2xkA2**|zi;VUkPɠ;5Rf"Fg; ()שiyIŧg,	@CbyC)!KѢg?%ϖ
@W>}p<0WJ~݅	#X4Osq2i{r!w(h߱d]mFE0I8!ɩi8A֐Wv`(%]
5:N
.D?VkLy	(oavEx߁->L=uƯPuӽhP> &gSB]2kCo:{kxFacG	y}:LbxNЄ
&  (FS1h1c㦪h=l*xm+55{eR33+y3<هcX1k=twBQ^}Guv!e8@y#GZ1%r
U(T4*B\Nswq0Cv=X6WjZ!e6IE1<b&tHiA)YZ3-ҪJcυ^H줏8C57UvwY[5ɗb}Gft_QUXOES'Po諩vu%i >
dvP~sW(pwn=u[Z}eկ54oMvGUa,xk_4{λ
Rb	x}^%SPJ MQ
%M7M3?ESI-yvaWO)rf(TwO)"3^DK{V.P_6vcv8樿Aw^N2޲zݾP; n=.G^*w	ze箸SHm%
꽄&HLywf| Y;˘!4ax*@=,܂7W/ ͟)ɻA r	RoPv
a	+
ϛ0CY.ѵ&8YCf
dzؽڌWҮ6'FAD*'`1R8]i[jNSgxVsj+}׻_($ >~t125Gb [)
F%B"m-yóHܲCUuPV h4]_ ;ŷ8<ְ/ũwPH:]$ٵç4%h]5tK_Pz6oRl]B90C3_D[ƀ"k=%R+;(H p4>nڧ,ݽcsUml-B#Gޝ+(m682ӣ*^$џ]=&aqOxP He,jxＮ_D`StxDV)Q:JaNOs
yRۉ>a*ؽO݂u-7G@BV
ge~xs -:1PO,xA$I}(v9Lm7=D	󂴰z#rRBhW-ۙqG|vdMY&z
Ȱ5.3Bz
a_<-}hy(-zV'6-I͊6G:ezK7b7gpog]BDa9 4$b`Gk,4}<@[#v=Y.;<Ai^bq-=.B HEiOv8+eR|b^qՖKw>k>k޳APnd|vWem)n-UP
E՛} mvp&]ѐ$It5JQϛctO:ѻI0!ҫ @(W+g9եznd, ˧GMz
ʟ3W.z7q.3T!Ԅ"<ZQ\NL>i*3TewzKUJ)SoŷVw]?~ŽQNDgw@(٘N<XlǦߪ]Ο(ަi܊~5q<;):Fe:\̀$MleirQOUԴыh	UQ5#	8P@Xa_,t ޚWU}/\W׎I"%9s`O,i'4ػ	nKάmhK7
<hWoDl.puretFK)sr~uJQBEtݻ='w1Ǡƚo/SWZB3<OEq>mM?J(	Ve.0ھ4=vh;;;IӯT^YdJJʝj{!vQa;z	OKc/c[]v d*K=bpO;?úOwpE4N u4"AB8Jl/QCÉ=ۇ+MĹ
YffLy:䇥mꉈ(W}3Ab[6@מsw?!UeQλOqޘcϏ%U1w^)i2oQ)-!C=E֍CXj+IgəIǭZC>?{V͓ФRC?<n*>Á5ҔsM0fJΎ|}Sw\?6FQG䰼6aqEc܅_֊}Oɶ( ֍Uv	.PR=SɃ&{/><}&i^E"ikM3QۑkDX>N*{.g4{4;Y \͍b+W%R/ w9j>JG]P|D\r
ݩ/O{<1۸d|er3*'wԪhMStvG 7ms=u7+9s~o};M]_nӴY%ZI5g Gnm;o@2$}rl|@=>`|Pn=\#x+ قUek2@Q5sO!7?9-K?OBRNZssl$[Wac&G/lwj+sAFΎDf[ɚfp]MPi761xL&
P\v"{#IVxg ƁE,O^&˧&^`mSw8a~sH,{hh<m7cʍ.QU!qShe
vǍt. 5
MNuɨ d|]jl-SƓ5u9rM?ͯ;$)|!Ksau=|E+Isr?׼; Nk$:ߛuhgE$<z+{dQw܆ ar\iuJ$:Ivj;2i̯Ԥ'%P_B2;xt1!&omaA=vHاK?}	/dm䆗 Ӗ`փW~OB3s+eppbmDɍ>WݒGR#?6WE3Sj췧LvJ(e( 韞clrXc4fƣGEJGԪd{GT`޸nL*5e,pC#d(K3xJ0
YAy6g5rO92OwOe-օ/)U@6BX
TlJGC垇du0w$m>q?ZR
]{IOxD˛,
SP#qT[lX:
^/{O!}I:M9WxREXPn%&YFh :zyS[?s9eψ4]S\ЦW\҄[ц1Di|Vr%Z="W!b;֬I̬
	/`׶dj5$UrzCNגٗlX*Rn!!	wp5(3vg6Q] vZzC{ԥSוڀյ,	JsGNmGAI
,WOug7yЁ[B?aW/``ܰrHd|ؗQ]Aۼi7+.&sEpNՒinܮYEXiӧ'oྗ zX&Gp7B6 ];9f&	zn3#&zҌEKNpÛrѴ/_3L>hOTzߐ6)3T+S-o7 tBVfzGja ,}(=cs+y`̀c$ര
v,Lvs~@PC_E_+y[n9!rC\@ݲ5qnoݙ;#zU[J|lsKa5c 2ܾ~=)&Qhe4)ïd8;m]RF(:). KUDܿVڿ1Z'RG5`kϝt۸Rs]8ŌkBԅvIo	c"Ym".tϒ"'<]ӉGλ-5%'gAت| CJloct	ggqyLHޡ
CwO<1|ۅ=yqiu{:m,]pꪆOkN:2rF7ߝnw;?"yxFBj5̓E⹦+ɾrӎⴻv{]tKfG*D^b0\rʗ:ZʈA/]=qa}|ϼz\`s
:c).~}
};f羂==,^ |ti,MOc|t~af礉E$[.KIPҠs?}aYYL7}wQȭ{3$@
c2vBm0ږDMf0W9e%UZfo	|מFṲ>\ˏ3~|W~xe1 ޛ\e	ʥ.GT=K{qlڇW] U.ڸ1z呁>f{+vWpL!'Ubo(jY|M]Qf6ځc%!@:|cXE DK0Pxq!NLp_K:\>qgHѧ?4_6ޓud}ʠxv%Q	:pm8O/Bː>a}Ino(=:hQ'Z{atĔph`|0 SiC03R/и*VHҋ	 +~R4X}4f`"ㄎ{c@v%&6ayN
{>w{s6grx6Ye4Rcvpw~Y ^2`-1_+KC(
lA߆t
xn5JEeJK2yj6^6( }}BoˣdR!hxKQ{_̥9]k]$9x|nyoDܿw;*tieM۱%FHfZ瘡i=
RZ/
B=I/!sT3{ŕ	J
*W"g@D4MBTlXֲ&FK 余*b<q jBYv?7:#\Y^z*i`J< ×?_fMdw	!giʆpGՑlwa4M)O[ڎ{ڝf'2LF+	B(yt˼X9j*gdehA4;.>2,Ct  &PNK{-m'3{	`-PΏn[ֽpi9S :E*3YRiR?Kg
((iI(s%|re<;Fr }ePe'uno'\P
jJ%~ZghxGW<	a@g$iHHϚG*~+Jf`c~P2F59cF+-.ḷ=(yP̠L?E)C<:mˬ$fҔ HܡbWOt{aʘ<%/TpAo͎dAZ#?߇+NW}(cZ{2-mn Coe	{Mod} *>g1U<Yqȍ	'kH9#VMnZUMPH|]BwLq	;vs'g}K"\9: (u'j5hNgAH
_\==ս!
MI)d;1v*.c<~"pBP3aR	V>VɌ
r=\TYo'-Td^7-\܀SCpvdo׳-|TzXi8<s<!m}Yܖ̐if^>)S+f&']fK1͓+4ԫV?$>b'(zҊ􁝶u*7Rբޟǽ3)g(:$ws)]g6ށ-F=mlrZ@WH.˃~%r䵴E͛<\+O@5Uj&(/HS</,ܦ!]ՉG}f|+yH͖++>YX>n<YFԘ,bsåKUyeVd,B?*s.Gb\"dO:8ɕ`t+t |<vV<cZǱC$mz>M~VuxuoZ˱ {?`:2P
'dh#J" "I\lVH *
Aw>"P~eK.wt|x]wځF\4ғy+Zl')[ayCp?.-Ƿ$wĒM=8nbb)(D9{BDs׺i|8Q|K6ףx(sGR8)Gqp]1`}twk́3	IT"OdnÕvb+rv{
iQwuD~*$m}扛h jfe6器XTKSwNBmoqqX6M̵!얌ݩ16*PdBll IbgI!%-ۊy=].Kϊ&
餘[{8,"on
#7H=L8FXoE⒘+L:he]E }Er'L9/_YQ85FDk-8Tmp^wV-
xQӭN#׻-O3#vcu'VtHÑFWn*jx7-~)pA1bt-Awk`tC=<t)&Uٹ͌(%qn"l7Ɛ]5XNn'"-2{t^כRh4r.
-]z=H+x٠Yg4]0],|}1*I\RpjdtDEm]{l6K`"
I].|(;OXKSgiP֣Qf96/gK`.MxApuX_'7Gbl^\Lv$Ar!ǦH]Kݲ#89 ڱR܆nۤi413&B.ʈL ]
l~Uns5<T/FikWͪ@ctMGB9FlTK5+M:h&EaT.mam1l74-I#c/?ԧߗ.%lf~>~W=0B/BDc~g5]Bկ]_}e@a/yC4u%
szTPl-!)7zևhluk@E9\- g*N,@jcxړf;zDͲmLf`dڕ.8R+xU|[_#N0r>ݪ=eBp6"{+YvU[dA2a=wY}> ZwR^듺#}'UnD$}z)+Mպ<<z{al
v]a~4dYM/BKQi5c\99rؐ8ѐ݁2Ri skY~m4LgKhN,)DpA1<
"&xO{Ϸyo0ϗڝgs lzyԪoĪjsffv$]'[Km,&sVw>VҬ+._f`ok|nurNvY UÎ)?Eyf '9~
 B/[C~E`RAD0d'ۙc=}(,J9vl2K9˱ytn)e?VﳧN(b a@^\ݘ
b
I p͊
V&i@6Lނ˩h;\7U)	H_ܝQI>Nd;Bv[(id=9v;_/uȷi_N*gI-a#JB&&CE8Htew|ųErڟĠ_Ql-[k1i0lc)Ӏ2%<zbi17;奣j|/=D)BWx[
8"󸁺`Vl5gM@VI$]4x;(|d߂6npTP86


.PP_9<<ͪP8M)M({1TD
hy(%aA
guO;)5?w 5^@GjWl&2@6KAƱ$_Y4;iXɦ)[v:}=lwx.ĥ	3r̅M"q#bsl`<ź#bVQ[^hrUpQ7Mwlg:zLS3X/${d#~q5uϳ3)ptKT	S ƥ
nfEt*j[SDoga$44[^=	tgj@`2Φ>(y؃.̦'LꅰEJ2t}> +^[	D!gg4ʃ+P_;56Uہ@j%	}m)62pjAG"plpMR4uE\>a|ENv;?*J1ۇ'Szmq+V߮y'|	9>h3qWeV|Vy_mlpEDAd
"٧0KbNZ]>o-!{BeB鄄*rm*Kr;h{GvxOI&-{{G_=j})RQ:vy͋$E\'ݧfKG/ J靊aoӍZ<Ye6#aU4].z^?J{}.GB}R]
aWV2u4m(/<eg-̢U/]bvyC|?TVEVYNV*3b2p%q|[Rʇٻ-
 	ɂ@$Ё4e~v+Sq~QEcMs"[H7NI3]]1-
/ϭ
 wzj	QZ'=7#D0<M~@~ z9lLj1TA|n'u4~S`f|h=+Kn)L&vv]Z>᜻9KP(9s|kN+%zqk44m1̾oJ	`r	ʥ?&-jGd?|w-
@63.U'kʇiC#%w\
'?{+l!B/$$PU~w.3SzG>V3=<sj/9$Kqk \O!@fY~SMUDV9IC\g)p-Mbk^_Ew*
!wR5-W`?5Jsnuyf[`>N/DdmK4l^o)$:Ma'!$jщ|U	E{3 xX>a'2r]+֝KgDg^i=#&?c 
_JN{6.1
1z7ތ;l?yMZ/0֖R-5~|Eb*^\"T-Pw;1m=TS<!Es{-
7S_A(n1euvĪig{n@ܣPo[weyFNX@>\̺+ U+k;(2LU|-p%v;uU&e֠/Bq`1
9V⯌H?zqf=	vn[Yy&i.p>g*Pځ2'M5c=ߠЀ%G?T?3VN%O`،l}C'VFFbYChYx$^(f~Y]||}AoK;<[B
\2Rx,ϧvGdDщi\JAged?|4LtdIz{/TB8Vܓ?x,i^%N 13*
fshU7f66ܙzǮ NZoÜsT3z_35mDJ;cC0̰tU)x{TNaꫂFkb\?eJ^­̪-xv=, ]^zL<\h=bn?m'rs272J78)G²|$j(бNzh
 t}icngS51 %6YXuHL@)o&o)_* ?˱##ihH 4$%Fϼ"ΰ_UQ5$	Ж W߶}	D\ǩHI@^-uZoRG0\b7z(|`#_`mA͢Ð=7FmV8]v7x3Asm)w1r^̪n\Y2&4%X,-9TLl\칌3ߪ/&뢷GB$aƻ	WC/pai2jݪu
>!3"x0+~,Oxu̞Wo'zdO&:
na)2Ͷ'&ݭ	azpu7&Im~O#|Wgk
אÃ%cDԊ.t`i
eʡlwT{{b'/m 	CPj[QXjQv?fÓR`q=2-X}}hCk{=&(RHQo񯍻%A#0	C1aApyS)DwNO._<fڞa܁t
ڸ*N0r $]W^!^_>8Ŝ"xy/(AHuEU,j,}zڽQYqυOP-QwI(=X`KVǎdl8QͼzCi*,q/*k G%QUk+Ct(thAɝ#cy0cVTZ=KOߖ.Y_UiפK^TzDF|؉!{eBI7뚷ծUߏWKX)C*dSO2|y8o ۙddw"t&7D7 })~|gQZuY_x5N9bZV[{0`Łm]A>vUcڬݠ5I9	)xoJѾ*w^OTy;Oo!a+ʯ2^(N"H܉r4\(J׃fMlp\
EIy^FO
!B1Բl1t"vm.+}YECӲE^(v{9NŹ*/	ģ[a+]X9Wΐ&Z*&5@)8:8y&QR"8{ T ӱüJa?@z,44gI/zMT$ȸﭻdE"ڌފBA@
NqNf}BwGN4`H 32NpdiU:u'0XoҬ
{PE·:~t}%Ņg&l}ft
@5%󕶴O5dަ
swHCc^b2E Pcهw^\Kg)̃p%8ØE,ovelSHmC绸븕#χ,j,dLŃ3u:c
)	q
ӽ/Otɜomm>钉gx珶gIqe1
qo#nPY~^RM)vB!,\STܲnl͞{-5xeD'6@,+u9*&|"BsṞtP;:DodFX>\!yaT4K	Ѽ#hVZER<!K+۞#`%t3g"e)l3񋄔@F!`OUk@ԷW߅|W "2;M̿( ΚEհTG˓}n}󋴇wY߱wKxg^ħ`&}{lK؟wӌW5n#鐃Kv)TQ:z,<aKrC"&: MpV h
R[p5v?#Ƽ$wYMo<pEIdu)Ε2cr_x*wϺy$^hxt[~rй2
˷0rګbRb.gU-e4ו3!UA,>'=$Nyw^ih*v{̜zMm09EwN@Ƥ=P޺B'589KOy١{+ŗUebt;OD&:;A0!̠xgYz'8RWcުRGC\e"zRCu~=EV@Z3B1V!1ԦD*H㇦G#0IAϸrʭڹ'ɽs:c]-BE;q<,;)ݥoO1$ybv@vB>BpbPg>'jȯDkZ]AtǷ*x>MM7Uk}m~&%-KpNsPl[\ٙ)n3 Nng~Z3hqʸ""xy1S_a zE-t%ӝY%kh/`.aEˆ,d9m.[HX
DX9=caΟ=6-)_6
WuHyxRUWWB<ʆ+WY>T!m*ӉfȅgJCt(ӬH׌f䢕ށIgWF=D89v`r-fN2!yWDNQGec֒a(D[6mkqeHG@Y-~`5Td]8otܾ&aV}kɉi6FS ]{C5M6#$qNnvaMP4	$+Dttݗ|K9\TR-C^_gX
Ld='{ըF[W	UF[0kpA'|C
u3l>4/R˵:#֦֩DkŖv-Tg?0-Ȩg6DߋД{l]߈lS«D{>/O s2G['MGI!֞]얇=]yrLyC|#-<ka\g&)JDQgc\K~sj30&#w:JSߐg(~ٮ; 'b|@	kCZp'0{#qcQ;9a}Kۛ<4Xx后1`ps[Z&[	XYs;yDׅi%m]s8|Bcl>5 wR˝Bb߃ӉHu]!_	wUzSК\o~ۗ糄<e$boi:LCL(_ȟw.<G}Y^XPDP^`
_O
ԾMۗe"ZqI ۝Q`?o2A 5Ŏʒj>G&.xA>Zu4N
>AƝOmODH,* @iwѥ{eԱ+a\Hr8>cQED+=rZWg)SGzxJټ4,Q-kf+mkWBq&R=ɺ'/٣#q\;|6,ĐDZa1e@U3I?䧯!bIRv
2MHyaIZkt/ٵp?~.8In'+%Z-Y/~oz3!.v<Uo9GQ^[0YsDa<晷{ԄFzk!p& r%݆,ZFIscF/uQsX928j<rnI(Լyz(,Y`s:~U~/azVnCm˝k]	^ZTE6̻B{ޘ@Snqtf+͎9ksQҗplۏ~=f섐Jś@JéW <yH}~>gK'[t'֘/YWT2BJ:<ca86=p;J֔eŘ~kR~AY_=oS_ybi$F4K Hr~ٝ_|Y-.fx\սb[uFmou{u.Kh~/9-g2ځb,%sUĐgG&7y
KyVYN101CTXG OeGd%$]ܱGe
`3q;X g2`#Kpl/}1kKߕzB2 6{\q4$@țpId?&z<0*8$B4wT6,Rz
.Ca29g
قUĨ7;7ͧc?~OOdXK<:ޒ4y8yYo^K2So蠇Mch~~no)-ux؝SD UW!a?="6 !#僼!aSf+]	?^?z`X}0rf/_%*vDbk
H0	趕^,CЗzr>?@`Ϟ%l|xQ	;u%',őҀXo	VSǍOO:!<$D71D{<y6lyNIhRo-kEF5Ui[!$uafAa 3ڿ%F//zɂx >l3OD*.7SJvZk$3@!;t
U0k.i0\SAEg| /'oi$B7-Ti`h"Ld0=eRdlOJ~a_şQ}xAe;0 fmo?~<D
t_ʗjŜ3[+yhsݼ3ޜ'Z+{rLrTpx!]4>'%ۜCi2t!4tJܧpڬFi;fog"0붲6Gqѣ='3w,O`0lf ?I^+VyrfRRVoIDfS]OBܹAAձ\^[4=hz
㌩EV~=0z֙$gqk;
viId8[!K6#	Pvwpqi8
[wrK.1Q?KvƵ$EsʎVFpBp0Gb
#sv\߱׌n6rzi{½>#gu/K6Vl7mݪ;kL%,^wVyۡ/^NzMJFmfJ	!%8wɎc] %CӍR0@Y6Iۗ!=7; ?N(ǂTs;<#Ԏ=|S دMnf+py4[|Fa]$Iݵ?OEt
lHNHLV*f6X412yg ?s{dg.wG'xU7Dq)OX×7FMv)Qٛ %6Tzz~qPߤY~TGI~t6ۇÅtO\L\*;9z:qn{m_]?:,uB}DGFHlXx\r]-Y{x<z"b,7'8FU&*=UfFQ^;&8X_x_1ڽk~	}SĦ9&p;V;r-Bis߆ؽ[	<]
x:ƣ+kC$,s_|!۹
\UxbtlPCՎh%.0ȼvTYlC6 "襽 Mp?bU8)
҈
$! yX4wX6^>x$aq)gf@r_@FŐHɊ=oCTuCKkn|t s2ip6NЏp!% ־GUh38 +Jn㚻UH_㒄KeBCn%8q
GX'reʂ/8nի
W7Bp 
#{4h 781Ҿ"=T\wjx,GUSGi5IxPCI:PP/?,X:sO"(>n_.Zp%W]|ȎzBb5
NQ
m-4uv
U4
5m\;|,2Ȋk$ P,W3A<CfBY/ƶ^C"[[kv3Z;n&66Fj^ SU+Goͽ{G󖈖@H#%TYI32 5fA_nc}S0a$M6FIքFLz 9W譁D>3>%g0Od#(ԑ"!rH%@.?K148hUo=;^"6Ҁ}t +ǭbf_b7`em0 )F:S͓}4ΌcI`Il[ gIC|?܊ )vn|[e:tAd?
ѪҲ*'BxR4VHGw{q=Fk
L A7{U=Uv ip8KmHaOTY;vw`N菋5I4$C+VOOvEz#v~}pMqT>	 +fUUg|?lYebT|br~MbMO(|!}C>.ch;q9 Qq0":hإz|=E:F}nBn7t2W倔f~Bo4OND#Lm@S|3I'jP(}@v}0?zVED)t4
	sh!WN짴Y~)Mnl5@cc:o*jB;^iҐ]u~;pmBPMm][0;ԪWlܭޡN|]ze
IYJb[- 9Oo=xL:
eT<8Ji>g[)Ae;}YpUf]CrW
YTz]z;{DON#m
 =36(Hmץunp+=FQUWxj BVwiU8#_OBN 3$OgvOb܆tfK`xkCj>y]{HC^pݑ_#7z%hRx17]@3yԅ9=[ >0#Ċ!ۅa4yue[[K=jȒ2pͺ[Ѻ+_k=[=|MWzF>
JQ1M򴶌ݖ"iO;.U:r/."*p_~=c$q
)Gkح\@_MNFņ$|jC`xnDdg)Ik_AW\M代Fd@:Xeh H	Ae9'/jvkMAW#߯FH'xE7LPaXՇr.2XOT|Dӗ?QI\%KNl/uñ0etb#Ol8wyuD?/8%TeٮjX
Ήy{hsVt/;t=st-2sp%#-Ql]\!Qg!yps'ǰ>s(x[(C(x2
i>"C_klJ,2`B{|)E.SK]ywzE}rlAω޸ʢǸ G?!~q<dW"ӓaAB*7e'ǜA)9 %u	'y>	 TKSdT)4H1LĥmK\s|W	~~0;9Z]0zdyOjb&W?sG]axhb@xP,!8$Xv]g!ioV&}jp	0םVih:$&Y~D
?	l=-imm҅-SW žȆC՞_mL2?C5\^ʑG<Un)kK؆WpoȰ^)}34aBYWԺ8\138-Ct݋ϟVXݬοed2; Jk4E2GuWZ;QFɺjM<~w{q\<|Q8iJhjq09
4.zp-Lt/r{'=1<U&B@P38k<0%r]9kIZ3=myh7IxfE8(=cOR}YBMZ)EКF?؟z(yނi{VϏ
B;y1<"в+*KC8[47UJO 7=>ЪF|KP틷
z9H=heޓzD
O]``vn;y)7~ju4-QFnE,Q+"'d8A(
++[;|W/vm7A_Loge.uִ*֝ Iu z^yPϚ?~k
J@;5v)juj@2o1bnEٙ*	>M;q~wޓ@>3ui7M'|+֭
VCK.5;վɫ9e,@	@h:ѕQufyO!G{>y;%qx)JJ\sj8~Z)KȮԪ/_󾿕jC5Xf8)сKn$IRjPԜmPZyMvY7MX8T,闡rQU6dq?0s'/i&P
ezDX^4|47KN/"&*Am?G
Ll.i wOQY$IRͧa;}-PARFznȖ[SSM*G#'
NV~wٰ}%Ln&,j!Re,
h{U7X
KS>W
WCeU .eoP"E-з3jic;|C#CTȡ,uy=ْ+;s5L[[R (W|k&%ʣ%~??z4geݾm#0v$j-30?
2+{bL唝KDVp`$rSAC, 5ٵef99-Ҵ,|&4ZIN4F'L6xrdu8 !XpL/{`%K5,)\t맫9aKt}wqk{?|H'_Bwm*pMf*[+u|_Y(mRiU,op>lv`D7"_B R
gϢ)>ZwXS;.^SQ8>NnҾ -IZǙ]FE~k\бqhǧgۋwC?mդveLUe$q"H(g703yw=mKZD+Jd46OmӡQ2+6ۅڗgg_!'0n_V[[
%QKb9#br /U4wEAf-Utr9dcwKNαuG%=3~'ZalZ^LQvҫ4^_ ?QP o|P!HXr_ږ7εIjd7);jo$斴RhhfBHhOb(=Jb#X%@KNaz#ѕM	}T*/!({o/Hn9"|\)	j88qX?>)^}Yǟ^1Bub.[Lݭj}&!;rϘ뼭`2(9b!9|0r]`'Ý*0	z||_L-{f>6zB?uUD4@@,?J(n'ef/>Gt`C)v	iG:XSHU`Ǩߝ$9]2PkN(L#𜺯#zbAc[1D7;bQ&N X9;x;o9zu&-vj.Sl@?'v`qD : O?:b|ju޿:"Zt#PJ1d[/7 YݠT9Ѩh=UT唲Cg%[GUbq=ع&doD8 c7ZQyֻ'>^0.
`{YEMwՈn	j
_Y#(@j͓RKÞ>ZHB`7+#@iE;*x؟s
7G!8= #l%J\9εLZڼGߞo0[;b#bs7΃	^א!嵄`F4`a5xρF7\"|hHIˉy
>RFt_O}[ͤ>v埂j-jAuZt$C]k@2`qS-?n-!><[h`wC7z(-pKK)x0a_֩wd8Non5e\gMgH~҂tkVi7*n;2;9]q>:BGHܲ!Ne!9Fg52T
wNJws5UŜenVjUL$mvÔ% -.?2!#mnaYS6-ȸLTǺP_^i]h$|iR$66B^e!1$#Hal0"5і䥟Lq"1ІAظ;bx
U{o
J
v!.W6;0Og$;UoI᷾)yaVPrٙ-Umh\ǘe췟`%L^߳2!l
dT遠OO 
.&M$E2ǒA 4[G}uC=~~nп2?
3K6W(l
ݮ\]Lc
Si({ن_~ٻ]r
/hvBwGWwtmY΀6o+X't!lB#7IV-i3,QI558TS]ET]\-S:Eomz\h
XQ4CdK/;Of]dx^?r67ܒpM`I
_3>7oE>J$סs{;-_,vVnXdq^Џ\]YE5ן)|ܣ>@o-__wݳsY('
ʸ(2
x!
 V_^S*VXdU`bŵt[dnmk_SߧNl0m,-®6X|gH
{jHNIIAv
2
Nĝ#~JtlEU;D[. aPpCiB~, qN/Y4bl1f,F%25(|Ӟ^f:n"}S)
A!͇/A^A.j͞&up4t5mi?KoB_y#'SOO wf{N3\aQ??z
*:~{
lŭv0E5Uk?\>'_JO"HAoM`QMR Q\rB ā^AQdpv)m+0ya-rstŢ4TC.m*?>^0{8,^fо+$gv"?z:ܼwnwމՊg`h}F]~${`jJlۼY
yCǫfUnH,)ET{q@_1
_GLZ< DLR<j#u绎xen
%ᘻ1zKd#aa^-0@TܜusZhAEΙ G:Q鬣?ߺ;+[W  M7S]dX.We
^Jl9)?
|/и>0\xɉA0U]>U~
|7/GCdlqrquK*NҬʆDIp{GƁY#`T,6O!D9HpDFƎ|9Xp+nWbNٵ]+=sD~\F	S+ 5:0R"4F"'{LA!ގ5GSBH_(&'}gm.f;<574YIoS|6 $g߬.2;&ܻ~]?ǰFwЄ}:sG)/]g%T$h=]w[ٟDiKOfZLX
|rO漑+b>/?NKR5*jW]E];(16֞G#5yE=?:O
]2VA<×[jװ9P_ㅳn N[¸_
۩ioKKZƑTlZnY.ܐ˥BP>aЙ-&Q{:\mԇ6YdPjK
|a>%70?|ߘ`o*<Spg8J)S˳JK!ӲJMth<C_obw"9܈Xť:Gh
ԩ(,p*Z%KROD?{0 eez?o	N=~.[bKWUI꣼s:(^HLR3 W[u,UGdl3%ߨ*)IyoՌowՌR5Ih2Ç?K(rv靳f'
%qFENo'(LCo;n
7NgZL2P@3}iS8_x1Ƶ]-laՆ0	v}`
O0ũ;~ږ.
XPV
e;7ui.YAх7G#:=o{ 4ŁЖ^|<ma3q3yPiO׾spr&/FלiԚS߂_tv0HZyپC?*fuT<،%8nOzʴkll[{sHnzj4E"&E_\G4r.%#rw/KqO|o;g^f}6kN 8gOE|m+Ƥ*͠(jD?-]iSr2zv8uØzH(!RnHAe;һ5(?pE3o2zL]6>GVNEHY%eZyV7in4QW_U.旡jyE=Z+r|+7UkGr4D?ęT@rAʧc)	6
0b=W x5d}qb{=Қi({H'J܊9qұC:>"udcz.dg|'ME/\ł	QvzRXЧ?ۗmݱzdwj:RjyؙB'1I!%ҬZNkwm|~cj p![^7idnV"$V2:\wM8?^%8gdQe+yQs6	GBnI,6fE<wG%߫!}{J>Jf#R:LMR:J!e0jV;o>1k5_7E0m,&[*yf&eS7 _ouAYbU#q;v`8l-߶2jk6*V*d M[q4!cJZ<M-#	i|$y5^
L5O~ހjY$8<x=qG,C
іn&}s[e$lxoILܥasB7'pK?Ӭ}EPU{||:@R.K=bp Y|Ff8txiƇY	ś0̋,p	$:3_,#0r6`!hy6Aq_V+NiegkEojg)9nBFj` :Rέ1]8ch6\.|FWA%?H<!Tc]:G͆"?]bMĄNOBtCwK!cf%aGaٌƹwS=I4KLr'rGW1ZD {]0& KUxz`G6Dt'JoϘ!La[W`ӯRќLq%yJGOnomC@Ҿl<NO4C,7؎@^+ ><5
:Nx(RCXq<O4Yaz4"
1<<GG6r,x=	֎a0 [Ci'Mx>L/C$%|:dZUu |c3]q5 xO!qa_9EP)=Skt{f$\
ȠgYI"VձȞ;jB^ʻeb*qt4{[ȶeuÁ?;o˽ztqjGM%-SYHLHfroy4w0m<	ƅf]v H,6_!UVwWoa_NPwb
p3O	m3'֫}$x۔P
r0aotFdvէC!0&1|&ߝZ5=R'LeOʼ1X\}1ci瘨ٔLx\샡t91x>M]J4%jYEαRrFodXW lS(OWpgN.QPTk?&nZ5kjf YG
L#,ġ=K,%uB?0dSC_yX)	\i
0l`/OW_(nw
AK:J!Ez}F^[20(ʿc7O3ًZt9qL+nJGھJmm_}{f]uJaiӫ1Waѩ͠uoliHOa~r1}WdDGVx/j k;!HZT^#~;OZnϿs*2CPd=ﬗϫA1x5A1ppfEGqixeHMRU-ho:AI{nkq1@@d*w, Ci?B_ykJ߇uLv[SQVEXd b}@}F^-J l=a5j4lDk!|BP+߉̻Zp]Uv!US6t4fRȥQl0zֆzE|df(sOkC춼ՄnVhM[:f7}=U,}wF0cת
KK@nS#L| SlNgMrW{t{I!T55E5
+bWR@{+7ihi.V28,i1wA>,LBwهt@K>Rƿ3]v)Aw^a5h/f1v§V,zi%2uQma>ADC+M&L1C('ݽf?VűQGTk.`c\kNjic7V|改VTg%&:C GTNW[=Io>)ly=z@
&v>UoL6BTD*TN_s;ݯѹ2,AmCXoj
lƓӂ08=,7jjU+eBuz2]BI&E o~j";O~36 (+^llL,b\DѯU +T/%={	Ú|RMb;Lxn> ]p=}snb?/-_+  Lqp&'0<RI[BtrDYVyx#tLʈW^Emp98h!0 -R*D'=|!!#AJck$jwel	Y/O973+Hm6g<62q@1aZvlvO?^dêwI]|E`JBPF7v	
VAx7߬qZk>fYnoK0I15
Jˋ3\f+e*2[WeV\ж:lSvDiydC;?}Iweu萤͙]Ӏ}wd;"sD^Pi'PϥȲq#
J^]VKMU9VchBE54u:$u.M
a3HӛBXبv:_ƾ?})r5xU:!Q@:]э)(86d	hr"t"˕$ef(x[t?A9Ľ9R,y#26\-EҞA]t?Jnڱl=⺌3Gʔ#.*M[=(r}ĄQXxvHex1f^$RrqGݼmnxV.$"gѿHG!C}^[qA/>ZY'
]LWÎ,%
%{6,7 0UBQ
*n>4u-;ͼRiLǓ,':ݩueU̴KY.NP/kLᚤrfn}8t-oQ}^F9Gcc~#3ʐ!?B+u?.܈Hoa˹$" Ux5#懤[A3PmXZX+^86`(#g1(R?-cc11˥Pn7*Z*ҚX;kn3
5QO[@p=(AS(:
ir<
'>~,:&O(?|ӓt= m+e\Uy-B=_/~j0]o +++-uAVPR=%i  sps9{RY9G^/=I_龇=e Jѻ~5*; "`G>!8`EG4v
O^OG2H̃*1[zS䱯 @Vx};ܥs(ۥhp {PytyIBg2j^ɝiŻŗ6TAvȻ-z$'YW;^okvx'n*Qer	F97
۠8	+ΆSik$
"YxZU4ㄝ{1Y.&rwJvfSoYm4?Rpo+DfЫw0	]J`\uŷtdmmbjdؑnU¦;ׄsF 6)Qc/Y&po_ֳ-`oesKoT3Fmn3E@,~˦-8#B+Aw,kqkK?u
Yx̐1r<{;vrݠ?ų,IlKFbe?7ӿ*7	fz,
RqKo#JT K{r RjO
QUyoL$lz8K)spA\?0Xfhk1?Souӏ$TMmT&<l¨Q96ӏb|}.#\ܸh(g5[\x"G|<_C;	8j*(@j@*Bqs۹0UFYЧ9ikDa|]%ݡVci	}ŋ:W
ODd+)ѭb/fFsC6dr0ПuBAv%gmO(;Mpؒ1hɗF}_.黵Q(qE	֐Up?16DE1UPWRz픚t.<1K-0#Pgⷤ.-C:X	PE:[ ,^>a_RŷGDȪh2"d*;3mܘ0V6ͽ'Y~+=0\CQŲ!L2!=Ri?3Vڑp6z$2ODf+}BlV#"$)6vm]͑8uF@W}Ҳ6VEu{oy߼(	F	M}DKbfF:錁ulrf"D0(5fkQ/==sP2&.\[<\b8UIO;E\hRak25sҶJIsoχe=%sf_	.wW^`_ˋ~Qt}JO1>7~wᓞȿ|O<2d]o{Q./˨bnGrGiv"kٿIPՑug38-ùfzkitQݵo+腯A<[aqd"<Ȏ^k	aB~}B*c'-
b]H͗R#;_f*N(}Y'yS)P+\'^.GKr'?
'<Qx^ES=;B*	!fȋk[Y5YNGS[P"4ZP5w)Wn֣bS嫡2
7U)5eKW:d+&8ϳzXTmBwא(ls>ŲH
^)2R# -0v
j7].Ey1'K
UK;5wp5\N=ojpH^Kw=uy_^=2#SLl!I,-G1KI>2Z?4d:(J+𮾳RdxPunAz*I˅!^?܀eEά)Qr\AnuEI<ww[sm_c잷AsЪڼpZH{>lb&LXaqE;⊹dWvcJh2ո/b҅6$p!5˙a3g/NPt)NʬU$J\i^Lhf߲ruvuW4uGkkqTxP-ʿiMK<R)r(S
Cݢ]K~Ԑ9rNߦ~PNq2\JƔ;= [nYޖ%LEM۔aZ>Y'1oCG$a4 ۩e9c&Mr	Ǌ_8L9M6[a
uet.h!Jd mh]0/a=[W:[å_=͸:щ'JF3JO% Q	Y?gwQ=bS
S*{g7W/go&ep=p	0[aͫiUi7uhFoC}}ґ"2oyL%m	Ez6+_JX[ e\sMꮲwIxiyq#xkG;ltIj}¶DtϤ~{{<I˵KkȝHӴcVx]0M&6Lnlc{~>CRpz, IDs,!>$uOy_WۣspI3CC:H9Mp3
 tBU1?# ~C=m3Ó3T+<R^<zkYe/`vR+;1W4V?\VM3bj?=Gאvi-1tҥ!I>9A"La[/F#復Ud AN^V: Ui<+j~=5h"4S&ӵaHeD2FZo挏$71eɮz5\<^E/HN7u-N͗߃\MȮI&}<L
'В?/u
OB-v)w*}yuEq[P*vaВCƉthIH;&xi~nyX2M"k"}lRa3O*VRB0t0`H!\m+tXt򫍌H3zz(ڮx56},PqzP!wt.HD1"
eG
~(@Z-~:KdtyM)ȩɻS,Bz/wn`\X1+pher7i[neX
@ JKqxՂe Ԇ5<]WOzt5֟%^'}E F5T7ɛ50<O}[0<?\-k">ݎDpOז`=r]@gY[±U2~#e	-$+s"IX
N.9GסƋ쎖*FL#	Woۄ60ɧӲEn^>#Y	J̀#%Ϥ	\"'PN
x|]\ScI>c9Bj45Kɧt#@8
:y\R)n->0El\o!S"2;/qc'
*#dk@j suuu "S:[ -NSI#i_aF+vru.?$ko-dxd*PROɤMlʵ!,X SLwν W,oIѾZn,X5|c3l=d}ɷx<3ұG !IfVtpsY~iiP_XHd琂A_Kۅne^
VK"eZ_4Ǆ.tOB3_bp2`&xp`Ä_~R,ԓ%o޸YV%OVt/{|n|Dd
;?˨NW}|RD(k,CXV"S/^⿧̽Q(TK8WEڌ~K:hQ/OaF~S+=?Ĳ)^YT-hflRnrx]qHm[UuX7^?2Jsux}8	N6=.YB5Ӊ>(Ej!WU	]I'l'NOonu	ẽcj̫)~
;3b.C\? kyT!9ҵP'$5ijHpO<$}[@=cr@C"ZcvHKf5(vo'R&l
MT5kokY4.]c/'c+e=,yREwuYҜʤ{@JXx^6}HRHQ"$EBcT.٥O}#N-]%jS G[jM48z?QفO sV=gn|MwE#{'8~k<`;2لӐ-Yp$P)K%~iSYtˑl	^@tF.Q"N4M_k!Zݖbz/q؀5z龠_.ܓW+bOǟW}TBuL\VyսkLG@o戞FDAό`î@<_F緵'Q4ܯ=y[9:llahc3ۧ--aqți)J]{\5
9@<#1&^]mNP$ot]m<:96RfϐSz|6!}:nz&R޲8F2}
a&KKf{NgAG!1GL/ %-<dPyR 'zd=ޤ4;b'~}yFo
a|	DP?i+o*ZO^z6wAj-cCrE`6Lā~kOd?:v`8B-#X:[f68׍p<[qLUŠ1
VPC2mȋۥ֍"4ƎU_[`&'jCk0A$4q =%^$5d{8ڠ|u.HZ\(1)RXm`
p"%ٝ]p)sdUe<ȱǾmjBo/'>iXrDedAW)fu r?	;Ĵȷ79d;(`>C=Tr ckbdE
hUk.
o߁5{Ѷv8N9[99jJ,jwVnKZ:Yvi=O	.Q5wjSy޳SN/z,ybKAc4kMt˰P8gdrU}
iE;߃MMf
kr#&/'|o_ۤ2L%YgOu!m16a4t}o NL+mpٵ`iKy`fXPN{{Z'YtH{$Ky5\I'N|)'Ek
cK$G$[+@aQZ <b56c
StOꩍPj8NHpfqa+%_SEXU͗IQbVw'DԞMPW=m`BiO7[;s#I9{ݾGχ_Ro~>L:1q쭥rUBq {<8?QE%h|Z:1_uR+ȌR3ۙ?m 7U0h9r[ۥH7
ذKk!*h5rf/)5|ۂLb*H06)<(l!h-yKaX2ҸoRJCbɱLU:hsgIwֲB/~ן4PuU+x_sR;?Ć'95F|QkRVt8JG75ye((WL䁥ޠ~ #I21Ek=^T
ڪaӽ'ya^ZZsC
%Y(A27s؝ŉT_t[xkl<,K+#KəȔAA=GOG8-36WW΢Y07xx#*Ҥ%${+醑6޶=I9Dj'|+m3y2>
z*03?mLNS(
[EM}ϳvlyK|8e_,R%><BGψɼp^
~
dKwj~sz#&N`*USy&ĭN1~_=[L9x9^tX1HwG:Ѹ8e?>6ABSq$WVʣ}WD>LfH3x#o\c(vZQ(S8)wyJըpD/-^#s]?FM\X=ǈJ7-Ve^>6ӶA%\0{IL4)'c^ f;[BR$!d*˘=_UǦH{$:di
>9MwԾB-:(gLw~;9V:{{]d.A&oiTQȷ[罍n!$	RCꆦNjb 3~/*/B#O	@2L.DkH޹ղutʡYz8{ڋox7fOd=)HK5"wa]H	)

ӺS|fwR"c[@1kKgI-%n·3:F%ށ˼Ӝn-T3i.qnK_cd+X
dr)^8qoF)DWK5AΟTEa]l8.ꏦz.j"G^oӃ`KYklk#u=Vh5(\;3Qa1":&حJj(ߡۿϠe=wZ^e&;zOcVbMin\,}䀯á˅؜ut7u?3"#$3"M A?ɮ%vkU%U\p	}֔E+qD)(xM1PO'Jv
fSC!L3LcR;8{6#pO]~A.;),<N,Jq
xǿ<YO9I#at%<fzHὨ*??W"	q-j
vlMiKg{,@u1N4qԾz`߬`poQ:#^EI9%(m氷S}W^ IS-.<;)|	%R(eVăz2/hl=]͒<wDf$fMV|ZPZ5^=rWw'C&-n'Hy1A.3K48osw2w6;X];U@秦#%}$N=.|ZJe #:E(m(bkDOҨ gC2OX9
KpQ&i~ۦn.Tdʚ {/u=zL)LGv;&	)XM%"R][-! Sb=?=bvzK-.ьwHpQ+A(ifmh?UOCA4	v4OPQvdc`K"KBP}*cYҨ~H=@Xe0j=ЅQP(7Y8qs:\KoM1FcÆAt[,ik2-GkԹRbSx1 zJ'9~w<Y5x:Oۮ.82j;U1apNmf>B:"qr}=
]0fWՔ{O htm^^),bwbZbKqE2MnٿCq(-p*!]h`7nnꔞn(M}6={tHff<hL%:tö7䙴"o6|(YZcUyFu}fWk
5E4/拉o$3 O	M^ᇴQ<v9-ss;ctŖ5YY}	&bs{U9lsݧsF&;!UdϽ0޾`5aY8Nh\)]Kv5tR2	'<BbuTb4xEf4SGcx͜}qQE}+WtGR֩M4fRłbAD4]#
2xRج;V}Ր0|Yzwͮm UM^:b 〮3A<ͧ[i6/dhi{r=%5m3S3_Y!^R*~f.nme%k]<+' @G{hsjI%sͨ?#D׍mza"_Zq28kqQcb0//	1 SJ,Y/2k(}Xl"X?1h+au6N ,Q~Md,gf߳zCDbC%Y4v, :bqVF"ӭ;'s{]ՆKLSY~ɖ8<KIyAřD9[i_pm+ׄ
}_[&G84YE`p)P6HE![a@Eϯ]P#}n08
>;LZb]G$,6N
5
RMw T+$U6-Þ0c1܏WtlV^$D<BKbsߌ aZLگ7S͏|l!PF`m]
xQ8WGhW7Q}Lsj;udkP{b^Nݬ|U7W{c3nEZȅXE߬ByN1C>Mݦ`Z3h861sI~G~S~S̴`g)~␙ׂ:2ݡfdމ n%g2[usT>pK5u0(
R-^J
|ٻGuX/+j.Xf#4Y)y[
h^OhǎR5?"h'zX=+*Ed󛓓h?4Ch#ǁLsB#]H^`|7ZdIM3+`r
"$!FMea[#mHlxDki ]|ڶ7Qp8_
{Ұ(/@>f9+_MpImܕS9&:sFԐi&)_0[u뜐XIe4%>*@i~qyIUG_@f*-@OJas`k:A|Kknښsj'GжXa
E,Is4!
u#5_$/
]ƬMV|f7Duh.,/KRm*smPuBHkRpWI24Ruf iiՠ9)m
էpt_̟8~\#d:v8
_:{S
2r$qoϿGFE2r';^)[{0.Zɯ[o,vz3AS_	$ⵟ+Kac0x"p
`_X_>x@s;(c[||b\0tY7qbBHB5}N/{ Ƶ[6QLPR)[roϚ5cia1,Fx[GzT&궸<+2s7mL\Y!=V$.XHzү|żA2O<8P=,ɡh~1Uk	`0AjRtkOGRY`f#XS;]}ѓڭJ*5;p5,Y!4МGQAyOnHz;lJ[8GɛqFN耝%sh,T  2W)MN?c8!`&
nK&z#`2*gAAU~ؗ4aoY×5
<_dvcs&KTvk>]s6èO.ژcge6\ hC]jt+ׯ\2
ni'f
X(uOԷ<tuy
'	zaY|v&-Fi996mxgKo/omaYnC;zߖ>vX*
-qP.
>%!d~^ {sp((x`.	,˄gw#|BaƙuӖ4Hj.y)/d"DXǼ$:qwH }~Z
Gt0-4&é
\Y#>o<!O=dySH{k[p.R񊸩ĳ]<
>]{;}3{V@'kc].a#E1X_z;?VUr!6\g.(m6Q7txNFhǉ-Y:+qS	bSK!*J|o=~zξrGeVUE$Lx:K^*kt[x?sh(QKwEgP`,rkNcW2͕^1(@#T;<J
Xcptk*dE^k'#e7AN
VG?UU"D,In7[(Հ|$PVSSҏO`:S7cG}zxVJR؀~_9+e$֭6PN'燑~Sb/rn:ǍODw'Yr`0mO)ɹs,*O=C1!zK0}bH:̫lڰY]x*Jm(ƽޓoixŰn/v	;<߄:jL$@Bq65fBH
<*~j%WLvU7C-	BI[gKjٝvҼ@8o7x>6ҭ$GYƄ~lzs{hAviEpE'n:O'$t2*Uwz}O}+>P;t<h{T ǥh~}l{姾n&{@ *2;iFz>K >e=}ۗoc)~ѷod3Y:q N5m]!tqJ".;yOGvJ'OM.kx`b#n_9W3[No>IzF;<5{b=L|Rg
4:ci`#žhܾ@}rA{;uǝw=I-ǲt ݧ{/ֆfRo{tFgԴZ"ٖ%"	Cje4y08VP'yn:
sUUDtQr`#Ocp:j{!Fw O7acQfSٽzɷ6!/@)>Ҁ%$F?Λz5EEpYu
^ku,t⋜%6Ǳ<I=kǁjL
ƅp鮘g!wdnb|ZyT_/k0vK\\z1Ӆ7NT]G/CoyˌA!/OCMF^⏫z0/dPlo
KpZ_KFǿ\8s8B]A`e:JJJ$Յ&
 ގ-Y 磃ܸ=u^H2iVN{gͭLtYk,>Xdwю#t8Y~jpcb)dgnJdJ0"K}M /NT9~N.#6Mw{F|z]ov ({rR3}cVzA2z8i^W:T} # huU:
MCeRnPX`FpGZO\,+u|_UY~챓<`mxXZK7f1ZO5c'
v| 85~Ż0۔RԊՌL K:Twwq_k𬝢3i"W[(@quc~R-rb0gӿߩO%k׼)VtcE0ݹ^xںJrNv89=
&*6eGյW&	åC,P{
4W.,5Jh#!pq`Qwwqy1hXp_5o{l%[K+_sZ11j31s^t
 	J18:_"
;3^=HM>wZ^$a LL9n"[R
y="@DLǕKdk9 $WWUsQun %ِ4(͹>]cU`gqOާJmߨ^o/	QIC,Wv<)bO<y^} /gi|smk䢬o$K/U;ݧ_ZM~v/Mm$,	B~HN)%
XMǛޝ#vpxongiఅޙ_k8DOGr'<;8|DwVrYl hG9W}k}
˒dVK˪V4:Vѥy|ZA8w{O6·=ER|6xNDg tQDa[swc{Bu~d N,܎otSp}<vMӁF&y܅gW[^ӷTvڟY,u	)}^̓D$qFa(p|joCmju@T;B7w@(F^/|vS5l<Y$j[b-4=5\n6	ɕv9gڲꮓ~sTE2o{3d.U@dTiջ6
j`) ,w?`/_Xc04/r-e]r
(yJbyScڸEH5ԞIcJ5.#)!Rb>,>}쑪1ISX
	N<
ؗYAq?1A+Kɔ%`*kÅ05	#4OhB-G=8Wrp`xph#_'dhooh}Ӌ0_$-C ǲqH*#(u[|
7#͎fUQD]e(+VߧeSOK=G͊s@M*6Ek6-.XYyg~Feؼ00"&Q}$^o3`-4T
B_yX}zz	6e^SG:и$֌k/uDUi qsĽz>W]tJ],gط4;;eg
]25[Zn4N[KC`,^0!CΓY>}et<}zx+59g?v`aJR\5vtS>Kkdh{!_*ĈD$7ڲy;78	Q0wzѠ0qh.O:-eB5B>cz	OIFi~+Mgg4Sg5-,iVWlɛub	|}zwc?xcV9`HjX9%϶!NMາJ}Cj<z| 98;pʓ(rU]$_Y&J ޜ<n1ꤏ+v!PUp2}BH";425"úg#_먏|)c!]\/
Pf|}X\YOKs,#)KGoFjkKTl8t]v=s0f;޾rqɸlEݮde[rsiv<s>4
s& Q=	EFrwGC "X4᧛z.4k	5Xm;7$QDGGy_oo	Ց+;/ P^Qi*?8/S!1W9^/H3X	nu	Bqmʤ5cDUR$~;K<@ i(nJ8oij.	<_SWhxE f  UUP5)n=}aө?X7zwao(ǝ-,  gsf@k:.4u0lx2JQɲGs
9`m2`|h=1A7"6U{!4y>9tĵjɋܫLp[ޢpIO}@mѡˏ`h`E]5k-PQ?o6]s/<;r}2ƎVJ_8vI2DUJ"aeJ󔞴~D_5La/.'T1zg|(b1BҐe-slw9%l M≭%Ef- DEK6jGU{Mtmg29~ùޣܪxl[CJ%wDXEԩ	mT˩Xn16䤶Fs
晴ɓH3I< y]Gż[	];|`gi1ѕUv7W.Ӣ&LrZ78C"N =RvHD;y}b6#1{Uogg=n

nd.ћJ2O-tjMgŽ]"3 ݫTlp<-.'b{et)|\tY(s \J䀚^/H_yJο(5W=M|Yܰ@trJd~#iNkyp!aҾl8
{ՏAX|>yLL5
L+Q^:tofT{ϖߙOӄ`rMSobHouhDR5D≠w@Qk57Nӗ6]q<؅.O<^B~exPX.s+Dt@J88q
=qȞ>p/t#HiD!@5sp3Hŀ7{N2axCgMzJL`lBAW5J~5?ӹn
c?NT9,6@됏zN4 qp 1":6
Ton*ߺyMpKG,f+>ͯ>)g?e;"$G8h8-6k:˖!Jwk#̲;,v`^*_U˻ -'-;F[óGe&;Eb=r P}w6'IJ:2{ϚJ8evt'[s`i圲YoyCDmPY韥9[rVMSw^jQE䆵m{-pB9K5cCS=);vVoEf='Bri<' ˗p,?qw;Eai)9񴸉N,ss/T|jyM5=ݵi$vS\FڿPA#Llu<fyfLqMNF]J"U-e祩%˵gP%w6Ǖ@%ҕεV7)kU9ڗ|9>}j&|h4`+>,Mr&z`]4)b J<ퟻHLvИ~nJ/5ȰF/!rnsgAyYzߞJq*N4{â|!~OCuA8^qa,Sz=jE߰|iɓ" )1e	CA-cWWglӾKRC}K[-8a;jh(lp-BJWLDw_4ڏVg- ¸JN:b"/vK.lfy.S-pF.څ7PX~*`|N=@Ƨ2sD*c[d>:CdR;yY~y?cz:੬9&R%1&Ա-Ò/e
UKivp	?='Lw0q+;OF.R2"=2i]UL(ů5rcfG\4M86xpS@>o4c
eVR6ߜ""w/7%8T~DS-(J>(u]%͞Ura;C'i-fFӮR:v(+K<P5|.)wLԋ ޹t G3'#le THÁ觊す[oN
F)+($4f̣VqY-Ћ/{#)JB	O"(fog2KRڍ*VLˇE`++!KA6l=sf	8rs$)V*G	`;ݝx;\l}kխ낥+<fxI|֪$IȷGë7'q70ՠaK;}TEOYk!"ni|@;
!8BٺhԁGPn3oVcZv{y7x>H X1]>|'ٙkCMH HTTf/lԚTi5u[|Y=돜T%@Gk$~mm~o}Xr"raH+dj^x ?4lZso^L'?v}˷D2tB	\]3>uC$X~6xfneNJ\:GGí]3|PH4=
{
vN>@F_ⴱm!p_ӳ!Ɍ=O1o]]~ԣ4I.hve%ΧB>s62Sx#}5mF!b'{`Ωp>-Bm
'$Ϛ`'EoVQo;,5ݹW8GNHy9b_+
?{~ak`4x
5mYYc@W_{/9m,	{YEȧLf5VIARvmU'ij(N;BrcoScJu^}nEUOC`UNïX<}Yu5;&c4(fy[-j H$@x7XUrtɷW{$
leA`<O  
~JLƶWFfьXp	QU
~	W)fo!M18Yl.i8KU/kf2ا"tFɼ؂TgFxd}Zc7X!;dX\0jU$P/o/s):U6Oy2EփWhYeXDf/lshB`h3b_dZfyCxSUv_?Ӎ0Ivlym
p9Q3#OR@{cc{zzD+iՕSLDS q5ZD
Ko"?8"#"HZkOQM/tչ4ЊH?=u~Q\GнtdO%<P64;E{*}=YX6Bu[s}mniӮlg% [puo+>{5`dA\7J0.t19{~^;Nth??mg;f,dƀ
ZF`h> ٓ9ҵ`+KLzDO3*07B,9Jdl:NHmQVqGEWɸB#	lͮ}᷇dȁYk?|KQ(Nr̸YxZ~М%s10VlΟż?_74lsǣur=pvOV4F&N=4W~Vt
n6`B))'fC+ 20nZ<KAKwwɨG7ó8ªP]
lŎ9P0v;HvzxV0s=̶]Ϋb	d,'fm"iR*w&v!},r|XI`,f$x=8Whlq^]?t#y5cYtOn3s&zf=%n(nМ~okTym,xyf+olOb6NwLLX}jp0ߊJ+&%Rael<zeݱ<
P~o(`Go/n*t4OE?Rax:o#?ďN.j(E!mj@|Ɂ핽E8-lz''\x-k09I9Yņ-&VqSiKj-!BgL(.HǷ%I\
E`>-f|k񗮼MT2y:YBA6GijbjkX4-{8rٛq Qk^fՖy:_cw&}cuXfKdaxp_̢a[$}=GqgJj$.8olI9ի(@#:Dz[
fmd"FX9WfסX峝!q`"mR 7i]97:NW)sU6/z'~o.>Q$m>kIrro\j.'a|^%>Io7'"~@ќ&CC93X[P2?vF`>@v{Dv2L{kR?_1U=_y(%FsOKu(w6r0?g%ɑ4$ܺ9~'mݬU=O$	q Y5=Dlk 8ьeK5x~vC.M|{rXZ&s1)N䖽y3~=E6W3_'HNb|{-j
0w +u+Y&ATbm`NF	x	úwa!"3~s>-W{ \7(?(z)ȧ8cS~z{O0۷žaQ>NuiDM>RIGb˨O
㶔q[8gUX<=1m"EQ|o]zoth
n/`*!o'" xa+f!/?7q')ԬE5=L@0;nf`,W$1KP_3*W<Pý}#Σ\sE\HF'hdĐhruwAYH(m|bFT$.D1s7ݬ'8p{Jc_^Lxz&|3~[Vl/F:vrp8VLZ^Q^is~IV߳]1,Exy~ L
1U5F:!q&,B.rSqhAmsC~!YN]p~#粌M,AmFXr???2y5.i
O2gnI7Tq1i#0͵$ޓ,~h2ѴwE}wI=`$"a
;Y`Xuk0xڒoJm(F0OXs.FqBcMpe1C'.Y NS·\sOCԷrw9z\a%]`H_)2_qyW阩*kۈ&3Et[jl˖tMhlbRXVp^o]oY2Δۺ[r|hГ9kR<[b6YE&\dk怇M؜19.}pAV'i-O)9A:2>{V!mY @*rUHUTO[q+|s/u'|PDnw[.'?Bm0<*n4=m $<_,5D.3"]#ypkoYbbq&[vAVdPCOWIX~8vlvHaz¹HBOg9wⷿ88+h5[R.rqg<]&Dsif9px^lc1^TSQ:L\)hRc~d fU?5Ods[%SręnkhES#8&Kowڥ /ybV2	OnXRafQC
ENRt;?mAT/Y=̒܅
Tr&WpM2~1Im1/"kO/Wj8Kx]ƀC*U}raPwC<Qܒ.uZZV>s1xET*o92n~A=slbXZj<{՞6K KpC%1.qgLz'˧c\C*Pk^gbilҗnOȧf>╾Ws!<N>APA22oxhy.+|{}Ͻ
.T/ީ-=Ag]}Mڰc[ix=yW|hD*̌<lQ.]([<uׄ>Wlt(eZGj($0ME]Mt~ׄwJǵa7&N	Yx)U$T=Y!'K܏-bzXch-|M|4 ~CVV
+Q7svw~fu^Oob'R,r$<*'pQ=|o\^u*%=@ApG\`)OJ.
4!`3zaQ;)S|[mEoY$yux*ڃB®/I+eqe?,Co?XSHڹnK :)&p<'.~
$̝;ꉘA1źTFo&YEkStbZB::>Qq4DT
ЪX۫ypmg\ZXw9Hο20Ag/NrXSf[ΪgV:;{BHLӯq(K]/nPCrgq>ji_ҋB (tܿ ?^oc{4lgEwȌr`Jtǋ3<5uUzh
=IyZ)&ՁVgtS;X9#I6Z$Q~ꘆvP?uknג=Nh=IQ@^'YE_)<먰 AIzcHΩZ[?ʡT\)
6<BsM7lL8\ö`cQv_{V7oaMW-!,iJJ&KH>;T}M|Iz+w ;%BSB<*l	5r.gL)0gj=
oM& FbF#x&%R.b#<8Y76mA[H+"PD&dHX8{YQQ]kd n/v0ytH`+lI>o8hX	]H6^XY	-|'q6?Oϸ=fg(1y1k7w" tm&Ų9Mo1{xщ~2PVjK8)q=ʤ5-Gꈿ~oD;4T80f_:1t2WrX߿P!~(Nx=r9N^q]S}#ze5`YK0 ?ykU<,JhGFĶIY>E7۱ $nr$I?Zaժg15%"=Bq+[d\0jgTz+8gh\\H07cB|h~T2ڥedHLy;'	7쏿z?8؜#WaMÚn^ _ؽy}iϙ鵋w.#σkczj˥ΫeӾk2y!=]ojۤǞ֓|yrί0$=Εw\&f
?U97Lamq+&mU.֠^w{
v>
yY>zSd5+lI8ȉAd_@\$#dC.K}J-O-yp8,Y'Z^rq	۵{_\@.SX%cz=,.A8znA֞咵pPˢC)Ǽ=&͛91J̶c0/ugg
ŅX
;b\)V|>-"u[N]u8K618 %Sw^[ ^?!k=@Gj{BI=ϝg* ]2 m6V[oQɓv R|H{\*33ă+4PG)L|XFiwÍUymec
5x pDKu0Kr>tPsΑWg_uS~gcowD0Zmx V4-fBSgFn`CLLng(~2{+\ޞE1ڃׅaˀ1ILp ￴{c~ٟf1wW+ޖ@ćScK@V\DD{j,v_"903T[wThpi%?g7<~TMX
ؖc9E~R7Lg-e/uO,{hJ)`'P%<Łle^ο\z`ʑlȈC,RBXTvʴ?t|~۲[1<D,4ot-%0\ZNB^%A&QzQw}ִj/o;<D4*ȇW((삀Ϸ7򭷡6:}!eL@ˇdAL{)+v{rg\M IQ
6{Ճݢkނ
x!OV@5Q[P.`~|i<pxx){yTo)6xB16e 607_/vA:f򲡡9+V'<>`cd1]GSz
ꮺ=8~.1LD{If,zNoS__Ju<]xC+WxڊLp	X>}hHzt
zLSNaK;abUV!NH:1Cf-"?I1yr#2+䖊QY-Byt+pm#g̽]}c_B ]\q˩A|Wq|/4:_?L6yX6sC083X-0d`-Agdoa;]|{3	xN9~M@zM'4Jd5p4
pD/X<BsA?	f2[fЍжb=NlY/
b!0/$q&~}u_sP7#]S/}|8Ty( EԺ {"7i7h,FlmuX)C΄!_pUMOۉC;KyYr🣢8p_C=NMI~N,aǦaB</V/Sj}YK7w"ٛO]7m/_zvrB=_
3rj^?Kf/Č7PUcO5%^yfxG6K)?>NtDjx!9=K#`Ả	pTOƟ/ZD	Fc@%X0c7F0ʯ/47R1|m`T+j~"g%>pckKz]/l
xs1h$5樀d5,O&PM
A~rJ}Ah
ܖ1}cfBeMG?-y.?~x0\#Ղۖ$h7gΑf$
> [z:[<CRCE&'j4;4}骴3L[D0vd!l\m(H~kr	r#37ox>h~
	[ eZ4.
@Gi_0;^֭G"NŋQ2QIΓ,ݣӭ*"tW~xo޾ôvL CUwKnz6aBjkbz2>	nzskơ= wkgF)0PF[Yua2O恷Z:A!3=jXl滔;pgC 2+-0$'v^bG2!ZSd[ح1?k
t%2lG_\bV/+|
~"Ga# a
$g(`(5?ZF]d*/6ۧseX/EX<czoO<1p.C?Q|?\JFX1l(e}ظwHk/U\,*z?"&\p\E/BJLmO`-_/GP*2j#6} DGu.:6YXsٖdFfySrqo
f1q\݊{l'\r}21۬
d-9t$/ O׏omáJ\0)ptvb;Pm}>Sƨ'l7!ΝFjaz̑Q,_+~!03T!ţvc>	<>%0	an
i77#ݢ(qZ
P*
UԌT{yA<R=_wTl ]Z1bP^fQ:UvӒOn9-3M-nv
5|gpךˑA eMĭP
,K`"|XZA/6@Kʺ4W2d9~WOxoIʭ;X$R}F
8ƲSfOwE@a;ӝoK){'Pʎiv]OeCFFeI[RkHzf5\L12%?c~g$#om*ܪȟ,})-Bp0mTg#׫]wVʽOQA[Y学ONM[whBmWЎQDNɶjWfD}ϘJ 3&gh('SW<8XneS4&fjǊxfw[>LNB<9: OsEd=Fw	%T>#wd&Kz"F6sw.-|*$ԎvŭѨKDJۣFR|J#ZE=OԘܓ4F!3N/
ռr(̐"`5E
GɊBf8ifyH"ي`MkKS/gv__

߻z!
ST/>!Mo>)xok4o;4ǎW6XӫEKY7%w-pr끊txk>7l5Ah2|>
\[zдӅGcmP` hˡ}X+9D

Mn;+{m6)t7t# -7Qc׽׃{@?QOsI떝+GF 91Ґ;2)aVZ
ATyo@d'0aihl8c/[}q]P14zEpe{+Jr(e$od9S É0;Gp@ط\ܓE2)Oـ4pZ'/?qY?8 K*Gj%RWQ2g/"J0-gcqV5TPX;GIfI$#d_~" zJvGZ業F
r;RA2LOqw6 rc_1𴄷kq/^ɑ0ph-/й8z؄C{\7)ee%}w!+{`[9X{iu8 ]d=g]>퓺X3cl$pK!hƝs]W? />(og[HjHCE.#ȻͭZb@\,ܹ(OTzVWXxa0sC$R6""!K J )>s^5~]-#@Ŝ uVJ(pehur*_{?݃a:
M&]ҽb\Y}GYhxzQ>k\t.e&
ޚ/
59.oS?y2XD*DM:ɧ9D6=Ȼ2t9Eu=86}"XثjN^ғVp\cWY!jLd6gkh-EQ9AVΩ+s<_a)"JW;?\Ʊ/ٜgLR
[B*(;[EaRQ̛pvMCtsU9't hnc6^f=~|Y77Ӕ	Z`=; 8X6~i9O1gc	iظDsBؖT]s! i,R4wBxK١Vk0͞8lyAq
nQ9+o3,Ά2]G0_=PCݣW#H;Br.:bO9)PF^6},BYm6GoC|1yoɞ0iPA95v2	o+9E.ߩ1?Kg62_J.bco gиQb]5A/\?<?9(R9B`
 덫[|N5q,sĿDޝ >lDnN^Rn['kbPۈh;w;l~HPöS5"f-禄k={e)U*o|7+NTПWXf8x}הTfc0$
z6_ݒ?|<$B=lqcdV.8F-ͮGd['Ծ]Ln0%lx3:ӵ$ǅATzOR ;~j"몄:܊l' WˁO?8>o
?`H0
P@7:	zgp5Ͳ;,&eRYr:R䳶W,r+ߗCֽ
|w%w2LAZks=;sݞq?Pcx+0!%=asn3>#/=iƚl8S%/L$	Qpp(@_-&˺`cG 5@ҨujnAe`
W~P5NbhI\(_K|O;>}o[- UkEN;7	I#{s33;JŽb}2E<j妢	"ܣB?شɀHZKJJ?RSYuw"/+HcWH&L#&c4%XC~;ܯ7)}J8򐇢'[L4G"!{~	>E_v9_LYӕ{~Lgni*V#N#O<:ZHyty!5R=ϣ?YtXу.HjhF PgQ6G/kvShܥ^eC>Q.b[:ܘn0}]Q,<2ǔ#
G.e`CoĸlHud7cמN&qK8D7dBhLnyGd?Y)%}[,gvNѱ!d)v ӬJo o3a`6mfAcO+2Wud|5loY9OFNsyde4fIQLHXYf\err钽Z뒎f_C~͛n/2wYJrS
l!nJH .-[]wԶ,XrQ1vleRAv|L,>3:}x7+μ,gt4W!zXc꺤$|9X8be:c0$R\AeTQQr]ͧįkp31%t;0ׄ37v`RZfM;x3%K]1TǳU
cs|&edvոu<2#)`: Q~7coaCJs)&@bqdg+'bXp.[F_ԲMu $"aFXsOc)L%[[6rٲU'jrعӸYQmySŭcc!DMľu̹6E!4%|32wD.9GR>q5m3PXSfiŇ;DfGpkK۩GhpLV5W"͗_-2yɒ
;	ABG͍uXn9`h8
ǮQ
SDa.8"q;iv[[TbTTD::iR]AX=ֶDvj{m.LfΆؼxϊU&]ɓ&f;`AJ"-->MEIʕ\	Ӑc藰QN(8U]ۧ|ԠRjRXBO^	Ha/k?қͧv0W\JD_t,9$N^"l01ߪ.Ea{9GNuv[#j6VyDi稟SQ|SLlQW%.3M8hŻ!| e0=_g<yӱό+Zќ	Q27PiԜ+NQ;0:a"Ъͺ
q\Zg;ttݍ[LȰw-IVކZv릚).iPp(A3$ǔkH
:=zkWEs@g@	nqt%9X(
=a	qu=׼\ViS~MFĸ[]񶵍*ZEXb	2(,oL)Iyɖmomm7eim߀c]H'%%JsASYm(Ωr;6>~{Y=	W&l
O'~_}PtLeFjZ<J'wܣHMs`}$jX[FɹɴI=:	жaƖVx>i^ 5bXԕRwj /#2Iul%{'-SSQ6<~*> 夣9܄$wGD:_H>50c0;)'M2ۣm|GSV^a>8zsJiLӓeCoϠLimɯ9>a? 2}ͳw:&OwW+Eֈv.qXEmw$\B
|+t(z>VG3@Zܡ+ju?)
t3˜~}$?gnVJnbvhӼ?ٽޛW"M'Iǆ>9Y,Vlv3o))v[7JZ6u ,=Tg.e&pm܈:o!7KPUCzad@(y!)AL-ͥwd	6BLLl1DnEZ\hi䘀	zjRM=ut}!èxYeMJJR\F9BW#ô8sovakE~pyL-p{(zPGOMj9ܫݭ'-$7D/Vjsڷ+`Zt!-$I:I~7us&АP55I޻VJ-;3,H>w C_ǂP}#)%x=W!(9-.CӜV5A~'[PfT_ΣB3QI8lb1gCf$ߐSU4W;UXC)T˲_#\
aH9H?KGg4I5L@ɱ+XW<v{;z4>t87q0!z:4a7yq
mcl*x:.K48_\F}ӷhqn-$fo'~ܐ	.E `! ݦWnk5K)ֈINū^Lq=99JX_J>|xm>qV+R]664i<'@P}q5#ˢXGgePɘL! vmSeSCLyxoſSZ͵,03j+ZwЌ&=K/ˑE_I0̭G l@2I.i>L>n8Pqi$bxq@Hԑ*p\g:^;7^;.IۇlZ/g&4ǔC
0{;XH凜%Amu9c6:1W`Ā(bWs@7ƦLוҲho'46&0̥[<~
ݬ#9p;HK#G4l9n֛3=gT;K8]y\6_= F04oΤ<6Ka#yn]$;].4g8jgQZz\@U{(Hy	H6;VoMIժi<E>mUNJ7P*(ܟ?YBm|Y 
/3&p}6vqZ{&Zk7v9kӭ>B;|ޏUٞQRhUt%.TG$ێ4ҾXVVZy>fwXϛ&2de~sCbc,<I
 1iiQBk.M}$3Rtb1nϵUiwTvYۃUMN	ǟ
U~C<$
[@ٹsLG^U G!P;s
2:NMŴa+ugho|y-_"@*]+.TBy-Il4[*ooYp)w	Į.)ђJҦ)lK^|ò˽	@<ϕ0ZT;֪uXw,iTo^|-ྏgUߥBkj2>77[0V2St\P6 UBBP fI˿e"~'Ȱ"5li6{$`^&C2?w~)m/Q>ng::evbq;TðxiʹN3*6^_I06
bG凭xbE<
$E"?+FN )ȭţ!ZEԞO9w ~~zH+қgiZgeኝs0	/?]r` =#q;	ZE5#G
1*쵗V5z3iK;~[s#SK
72F^@S
p|s
؞tR*˽(I|F>BͿF.۷	geֲfH\BCn(r^:(DxAr+hZ0T26:b>|w$8	$Y>$L>9>TT}NC~FС57)Ztt՗ڒ mçvL]/]]XSÎ6[ֶG=f]Ξ*S{]Y
̧''nZ7倞\eT&F\D.*&%ˠ>%
~.O5,NeÐMd[ ]w5Z	(
8i{椄[p@s[%`mH!547m7)NUa"BA]X~ٵ!N_t=5:NMC^)\9h=]Li~">dz{1$%.o35tU
iYA50<S[Pnp/WVUp$Xf}R`Tm+t%.h'͚\̵jPf<ߌ~o᎑?G 6n}Kv 6mػ~vK47pQs6#>ִ`L&qc- &Xԇѩ5vw.:ps:x{+kO7L+gWw4[8W&ZI\҃wsS}_~&<45m/=R,(\ٳJsHvB0+n?
SuxCq؊%SmgXSC77v&d|Lye)иLfX|^Jjųj鬪
8IR;tV9hexP\&
8D(8˷D$n3rW8`Aa+G%΢˾+aV)Pr=$ߛ R-$k~x[٣& #;|+vȝ,trY3'Do9n0IWJgZj	9}j4୻(2J_YQB0Q;1~l߽tđĨ3VԸ,ƹbmFR 1nЎcNmyóQ[β.xw{}AyRt>ubJ@ȴ=إpՆx[ _°@w.Lnٓ&'͏u
RE`j1N`c#5qa6yg_:9	S)#W!u.7.=`4<fbn%eomUd2KӴlhp|
B
o7(Ӛjm]p|ޕepܨWzF@ʨc͆Xjt
rnO;d[\|^|8x	M+2}BLY盙G.QxؑqW4=Ho'{&$)Z0䲧+Jхg\J.9}ނ@*qh"DμVDIItl+W¨iQtU4;UE]ڳ:F~VV_z_%rvf(yݼ5"d@cAʜs[?EI!w.IٻrKdXhpyݭ20"xݳ5$OCˇrcX^a[s*ʝ-M?k/Qw_3v`*F!`ڸQ8UsQ
i_{$DIR:}ȆJ{F{؄'-No=ZI'㏌'=Ǔcŉ4Qo+'\4xaԆ4S3bZgB?)dR\kcip\`g{@o+X=$KqԚ\(l|uOd޾ӌxh&2D90LaS\tbrF6wE+Xwg'GkK$EӞx8D
R-΁ib[`+_5O*Zg9jXvݴ#Fk%5W~h*Eq/5h>I®
$cwK~SSn`ц
yL	F\(wG4~ GK$]0	[]|P`6y>으XtVk6ɮf`wNovH5sjJZ7`rinuB?]X~XC{w/&CJhzը{C,9a+H;4D 1@cMa_5(UFIٲp[ h)ԸkHLOQΏu򶮋Y&%?t(w,sp/_%z /zkqo<i
9ޚOH\Llw76精/8y	?\g!1dY]N!]:,_H<Q嗠7me![I
mp9ग*jʮTqlY/S?M[R<Ll$HiG5zi'tW]|S,&7ο,k7
aAIbur?sqec4r|b;sxYL(!FjJ->?g:lҧۅ'8R;+F@e-YOՒ'*I̧I&|nu!qΧtesLuSN{+o# vdjL(<e(ޓ<//?~>ia9Mpq[h˔jW1p|>}4&??v$tylG1Q-I
/J<w*_m9	f@IMJEz-
 d-pMqUKFb?ue<C腏Ϙ*J.H?=~%~0A'Og֬X&1fJ9ٚ63pH$+uwI{5NsWpd$i!Xǫo@ͨCKϭ
]H49h3@;vZelf"u9Qܛl،8hwZ1;"VE?]/LВ3ceQIHb3iN,]FsN3`e
I=3rQs'P"-O`v-?p߆[ڰm=0~"0Tb]3zYı<޾?\CMߠLkT6q$t#O%5*r@L"~
{CUJ73L#)tkWu˪4?onws;AluxZÛmjv9 /cp[<[=vL
g}2!+sqC-|{>|DNK[K2y棱{JAOx;OY"d47!4\:/nW'fȼ ?btb"jJ3!xrgl2l>Er%SrSd۽"EJ
ȋNEL'sB`- tZ\KtiMx[ۀ
_G6}%,UHݞwbk|<yc nM2XCzs_Oߤ}BۇSȚDYϠ2( k]bt/xafrP7tzSr`+!ʶ$eJzGrۉɎxq} xgB5K,
;Nj}=M> l?>mP8[%vվD~c]$Z;3zI[MO_C\)!.is{əzUr	mf/\g<2az@V\UP.u0*
"kh2X2#hFVC wڳ%3ݔLMb<vu.7]b
OxrKa'HS@
BYKcm`CvI"͟2/c2><P-
	 V8Xm!p@<9|Lz0m1>مYvĶ@Kl]eEy"n|/,+?䰪>ӏ5)Ed񇑄&^ɖ80{S߿a֠]={AV}f$, TUSm>˻_}qLvF}omq]=6uHZː-y7MWܟw%oApi:a8#
Ahǭxql>eq?m5vDɾXG fW]HFCnRg 
7D/j?t-DKILfl#s)좽~ia#%a[9äUt:]lIvh+-.!+~ wJࡏ@.NvL֌* 5pI}uϨD|&!/$aQsb/݌fOh#@ArLaCoLG6BW͙R
*ՍL *7LETn8`ovE]>,uhmÞ9
m:׀=rF_PZ zi45뻵S0$m3zSi$gفM+	)ؗ:5'D8:WhwN~]c}Ȅڿa~{p=50jtynxksovtg316	oW% hX>g N>9/^-q9ߐz6
܄҅GMMUMatG?.gȇhפs{oa*
YKvFkok*AtAr&`ޏi2xo$F|/{=
_p0u8m%NZ7޺41eȽիɿ#b@us]VZ(XOi73;isfs$q`7L#uaG&KI[.4R7]MwNSS]AC)\/ 1Zm	b`HbԵ7ܫo9dnfG&Tmz1OaTd7`d,2GJ MrM()צ%ea} HϚA!E3[P\f::J%NF]R^d
</Zaf,§'g{:R8ۋ%3tUc+J[J0u@pQ=뭬h<Զ1
tzU5,(C`!0=%M 4^\7hq䆾2d8q<fD/
©r^%a}mؤdysO߻zB&-3_3-/PӋ
/$	_T5zwxSbY ĞڜLǩt ApWDb^_?J6^8Iv=#RkD38I;]Nڧx"[Pַw e,ࢮW^ryiW^xģϹLgձp_
'I90y*"mGk]{R
Z<Hp#=s!=^Ųa{ٽ՜N*Վ'Bk(ȇA^s5Y殑C.ݕVYCFяMyxQs|~Tvme>~6o<ޓN[NXa!o&Iu :TI{}c~~i-s? @@S!	2/v+gOf:=:#8fI.KC@e
Xۙ ΄Kz9f&ʶ|93BR^uv_NMJ{`<~W;#YKeygxƷSpgF)˲!װ;Q6h`uk=Qb-<A8,*yպv(BOTH)MGZ7e] 9OD|%Wmi	к</ۜW!fyxG@`]GJeuΎ|TFOmƕy].om[4ǘ0z;|]e&? STx:%||5Yu")f^o%[,)M!<6M,y͜ü9&di(
C7>K6-_$d(1L
%kBdEU#%BiFNH"GNX:<n@|ʫ^"n{Zʚ H+5,~|+t͓&9a)D!P%*sVc'`oٟ<fv)
(m* ZqS^Z
VhiG9R>}<|}/<#Je?\0)!,=J
g$03x3Ňߝ_PC!	KyFT[ w)6dSj%Sykg@_p}Y{L.A:+_ k~~Ӑr8޽c1ԖAnlZ5JjCl=eC3zByR7{olgI5\t CaXGή"\I<y6<wwϫ1y:k[L瘆ΠJ{M*Ĭ5EwhejHb9̆8ۂHp^-}g+BGu\R8X@DjtُT'4Omk&1oJhh"%ul&b6ty@`}~=Ri]C{RmĿrG9
CE֡!a^OMC:jP1_Lqk\1qfѵͦ:y3j&FAy~{U5+<j5)6vBsBf2خ
]})7E-^,ךb
kkٴ
'
W3-O+Na !0Q̆[E/\"-$U#|[f5ԳNFb~ԇkq	WK? ߹!:ou`i` 5ŉD8ܿ5omγ?2p:}8mRr@e Ė|Y:]ПB?P6(X}w>%B-蔻/Tq1SlKwTk` ۯO=6)F ڸ:
u'0 %ét}Z$r#>,΅:čvXۚޚƌ?nDia<ߦ|7|l@s=<EIP}QGtCm!&g,B'q2+ү1\4k~{+H	pWtٚk8fS"?Ȍ*6f)7߯4*M\@Qҷ	h&nUt˳_ǒloS@ᤠy:2~ffbcǼ=Ῥ@!i<8~)3ŵ"h/$:<G
dhw)zF8;Y3z)'4cx#= ]sp]܄Ni26w ƞ`#Nou,.ŵi"t.0/%aO$w2?{?"L%Jz!w#NZjKj-UnG:յVL!-DzvJr@%Г[6}i]WzQ%:L&+H,%NS#D|89;A[[7D''71."
.xiE^RiغvIgA0{÷NSLAH|	It/,2A){Cv?)rŇO,P,&TK.J`ƲqT
?+RѴ~ P9_iZ^m&.^6.8\O=/^nkPbpÀƲň&s Uxv>՟DVNCzwojl.Ejn-YzwN*Y_[)edW|<;B8%ǝxkه6ן6=	{v霮CTTmY,{>1BQw߉M aLjbyb\Jsa,'&>v}li<݂GdK=$`Lհ<
ټl)ɋ,	
8&] BNEE9 [&;m@}3%Wmv)W.wط|쓟!nx8j] m'EHlX58t9^z
[)pfpƥlJ-+xAt;v8?OM)WEqČE?PC嬭Ϊ6KQ.P3|4PPLr4$g>+H軙Ձ %>EN뷳t1:QCq8t!~eMt -M|UA먴䙪Y`-"x| 1	K1Þvour(B EXUNď#U1v$sl(LvW3^w"ҝ4<T$^r+W.867RN8}%=D3zR*qt,o8:B	#Ƅީ4]*i?Vl=xv%WU[e8Axw O;}`",\ٮY>;cuCǟ=ywǣ7>t7^(sltĭ:OsK^Ѹ^A){$6fy.e5SmR	/s;$dM጗u@W~i2E
Um\%<TxPcewM1vX"6ȻzAÈSssr#<$HݽMR-
O:dǺw`Ry_Q,ߓ+8w$"Ձ	^:HJ ci7[f9gޖ/<м.t!ӸL?:×L3$:XZuq-ĳwZ`~PTD7d+ ˲oYϞ_eRJ}=y
m(r
ydo$%{nBZJNr3L[gqJmvY8?*C؂ghhe­͎P{r	l,(S
Yo?ÑwrD]}3/k5N
J6Hv^+^[$/GG8h p[v%%="?[-$ᅼRJSHVǕJ~ϛȷ.%r:Z=#U*oTℾbqG3-m[WjH>N3ڵ"sً2Y0s#_?|o?=si<ޜ(ʶ54[7MzOb/@SZߣ߻e;OqLmbcHR:\V
<U4Vݷ>lN?ުhAp2h[-d$Z)ztlARK
39,:]i1L-gTj NW߲zaApۜ54*7@8UyK-R5/~t>N >	l)NWK?Y	6V֓2A{rndBM_q9k(|X]$ty=-w>()eӖXy4Xv&2|:X A8.{d2IÞ&ulCyB^៷$>K3Q'Btx-pC#vήY(S "3q'@	N1J#P\@@]`&?BHo<e>_Z>7-t<@!
3=?Gyk'3鏭#d/ى"
!|N#A
~/OĲ4|䓫ߵSpUD#K3H<X<j%쥔Z}OoO/d'Y'YTQ{{W8}לM`Sw@<uy֮OF?8S WujsB[.bna-}GZ8Ҧ=}֡TIC/f]UV<Ezp&EmqWr_?@:ٯ"sԥ8s>,9!"}a4Ox/,x!3dXܥODND)j]}w^~c~[acTcWbS	b*0By%׷
NviHVʬ)3F}1kiC_KM9$2lơ	4+sɫ@bP>5Xni<0+?L+Y.y<ÓaR-bAbOY>ڰۈtws䯖O r'⽺
(Wǚ3:D9g!IlHP4	CbV}TϮ}\lqh*yռG|ɦJg8.)iä.
dֈ,(\h"%+b'FxrA5wM _I~fDpqn
}M8Q)Vm}S j1>N_AkЈsS3qCrd!;vFYaC *#7ѽe:GHpAEQ5Y{l
4mAh!pK2LY((#&omd8beW8◣0c(
vB0@<٭N'3Lq{\+?6ua8{q.ݼS1AP[붘et~Ziccӵذ^s%mQ.oR?[V,ͧ?WbxQ9Uᑎ3`w3:C<T٣隂2>H=({bA]kLa	aֶ.iahW Ws+2ɫd8i{TA6)*nZ+pEĩ.F8'5濾FOlib"5d"PmSp܆VDLҕWr]uMR7hTPE
8b(G&:r+H`Q/oAl`ӗ#4yuwj÷K4x&z{Ni@yy&r;?Mi4v&x
]-;s0f-r?<m?a;L-
Dn}*XGc|6y<,V(#O{cf己9@w+Zk6_Eziw6Բ<]IU+eNuE8SnL|kA
y4;UYLOVxR$HuIst~<W8>]*?^LuUZ
.ZO_iMȺ=\>y|F+0
mCY)F<m@t
>͆)OOg9(#plTj`۟l:cȯREMt3RJM0Yw]Щk~.Z,9mb:6a s1,i8&ziڲM?O8>Ab*84UVζUT1hM!p8TRX?%l6\@w:g|v|T4ZQ>>teOEn{xy~M"RjO&ۜwBSzHK_YRZ
)-z}#DAVٖuF.1<x^Xha;·w[W{Ow%T#˝AQ..Ha)r rӃ𧘄YS0T*^#/_?|v52CP.應l&˳|Q @"#׮o ABg]i٥s~xN 5r媷Sj'ף"(Ĉ Y ɋz:F@L-LRWTk͗7`6?.TdfcdlGV3餶1Uŏ?y;aet 9EOE{>(r%vgȌ}yC#<;VZ)`g[vRЋS<AQ;(M${?6++:CԴ26uՠT%:`JA>D|oþXvvNQVHL]&2wI\e\-S.+[gok ?|6f!C
5b!h^3.jL1z-y>|9B)GLuN%cLѨ4+-wQom~*sNvx2{!hqhmwNRF@$a_|]]"(<_w5eЁ\1A;@YJsbǞ0%yFGl6
dnT'ĹՂno+U;cʯLoв+P>+2
ًLPL9=z
h>ƞLTa༠cx2l6!S:-X;;8ًx@FK?sC+("-k^H|x]QN=q*9rpuZ貲ڸIA^a|{7w r	Hr4JבgjnO~&wS&?:4F(!Ћnc.(2Y&Ŋ~1F~
7S	4 E'&g.u<,S-q%nI/Mpn|ׯzCn&9fgxE3W
uk/C'TF́5Fk͈$:[n>g[cSqW2vm?(ˉH	.c"ŧ!Q#vf¶'%)~ |<_sP87ҷ. +Dϼ祽3n
h&9Ahz}{3~Gֻ+8&ȄF3ݩq_$Wq'6Ra;:G2V+W"|kNCC? SvIoa1F"(53&cǣ_ZܱˇqUͳ1[ݛX>_ .侈}z%C.x3LwBvjN={;_@}Z?ٽGA,t'ini_`l-@.zE{XAV*H#0Y6GhJd-L&gEFO@6 |1EfyvD:ǽj=涜Ji)
RO>0p<4!`BB⇾B7_=ַ4OI1{f6jkgh`p#n#UnoObbzyYdvzhQqCܮl-I_ܟeL;ȝL!@dʲ7Q1~	:r~;xKz6=;S'fauz
lsBf}&| 8JWߪozBl];_I%,nO)A!k}O ߱O`iTMU=ښpTuTj͙WkmC N6-`& *]^uaFpIއ&ABxZ1<paOiNrje䋉4Hs1$jd|tV><K̜k7(9RB˨9
]b^P?JgUwobot|o{0t>
tI^;x8<]4n>jXK?d|@QN	aY1MK&WO
~
b|Njȼp@`)Y,;/j_y'2}ZX^яÓ|!u3)&Rkmb- -A4TGpi20Igh`CUXhc_p{p0;pO5ן;we;r<&-
`xgdUb4%k`sTYхxg/Bab:^Vq9omĻ[vQ{u}D;&!x'TPiGقWGԄ
yOC+z̻?̩ܳ Ih	WlCPL^Ǔȗ(aa=ɦ@&$hb~ LUf0	kxKi}SQ)M?q!O9ukEQݓ)c?KtujޗC]kP䠟}E{Ǫ1dj\<(rx,M6'k4sWn9OoO͛8S?v4Xh8	YYRu@o)_#hGorf-2&QA`ƇvPXk\7aVP߆۔MϏOAi^o_en+>jԂamWJW.МI,Jˏ񥞥2A+KyX}Ү.r0_
р-ԥIHWOS8ZYpznΰ[[Q@&5+I6#!|E\rMklǿ4g~|3gc_\*(Vޑ:&^z2T+bj0/o12Sr)`g9Drsm۫I>~B<s\(s 8JqXeO1Z.mby<{ii%@"<Npq=k^9L#drnr!8Ň#t#^p3Z?@ĖF,ȹ_ړo7eI"LlubXi0K|T0q96Y
<fD5y2-zTƽ "yqxgb6ۥJ49R#.ddrdU$VoFCla]urQǻ(EIڙ
6N$dRs&*À`p0WGWs2h;(udòjGI7N3mlĲaKB8MqayG.9L'
60`O֓
u*,L7ӇS?U_!OY
ip+, B7Lݝd0[Q5C5˱9S8A2~2nT?uaCp7'-OȹFuq>yBD]V8TGo}(34,}
;`Yծ>6[kL׽{lE{kߍ|jPk{!P#;
NʏM_L ޔea`GgF i]T
ƱL;`+^k
C"Ӌ:\̝"[
e!B?wS}E?r/-l,\5ʞ9owO}c/^M
4{XށHHGcHS0S)C򿛷>nMUK 4a3<г!v͕A%_2ӻȇߐI8줟Oװ@sNK2Ă3؏n۶l_ig|b*vȻHe^eZyܡE5=uW3Ẋ=֯Om2USA}g0g+7 
o%F_06Zo;Fh01'V	1h
WkVr6=sɜ<ua/"8
9!ܝe  ~I3Sb1]\8.JW}nga6m",7~
	=Tlx%\̠!4yWK7z"f=f~ax͆-fϫGۉ0QGJ9:rN8سdn0zT+rbخ{I&CcצN2VLr<o#7CPǴs[~G5plvEIGNMVvQp=mnKu_!%>D0 Վ0oxȒƹNݍ]P{%ǻas;osk82M<eY.Ǡ4ϹoܠF{߹qJVͮ9glh!rcSz0ٮ`-J"v &$j$?= {km0NLfᅩTZO\J/hv]-YD6ʁH
WRe!O#B#EzӸ)[PO#dB >bNukq2y	 LP;a<.~I$l5Ձcs~/ib?E';MH	O:En[ftT (oЛmS-Q#lx]/	;N1|[I˳Tr$Gޠqg mL{5\+V?f]mAg!Hձ H0*1Ei|U?o}\{Ta:ܮu$.LSJsS8fcdA@S)ĉrf(K¬9p LדtM6Ἶܩ0u<Po*g\4j)`XAu.Iu|?cǣjOANaib2,B;͔LDG˨.髂jaG}it
"bl@ZUn-ߕXJӧf"
~Y[-b_{K[rdPyLDN,LqݝTƞh@M"0Og9UBHl_d%vjx% խf>""pD ̺	V$9I}wڌFαOe+Pt:>EQs:g\1 <^`dyb@UT
>DP~ӱ>H6W,}>\

#ɐ6 ٚH|k~Lz>O1füPn4D}[
HxG@o +#fI3a2VaɕPoD'^Ha^ lmA9dJ;)ESXFR_58nhWʡw;Zv.SpfBee}x
O]BHZmf׻< GTy?W:~=Ҳ 2<3QFd8w,MڒuN1}-*_u5/:e7Da9#K
j
oܹ8`_b7z8pi?fIzlRk%sit}q	BM\ F	D2ۘALJq : Oi8xT^( Ɍѯt76(|
ٖȐ]7IܻL.lE`gNސ%ɷebs+C?NzXyh܊UNtO$Ơ6ǆl;v/s驉Mlp-BJ/t&T6ۆqQGچ"?G=roNvJ/mU9WZ_wՇ`dH:յ+>\wcpi
7E
p*2%#+@nPhB?8paG-XS-*[1j¸=[6y3nVm1ف0gj1iw{H"Y5]IcXkN 㱞5m?Fn<B+QvN$\-E3s`5c|<{ Gړ$tЍ*66Y z|_N]/q5{e<Jje{rOj/
02/.ɏTDw\^$c5E.:Y{VZ)}-# >Ù,nD6IL
ykId/P=PE c: 6wA$_Jku#0oA:i*Di&Mepl
([<ts{07O,
J1`c`ZN.{N{RE6Mv ":ClT	R`ɶ
v)sCzߑ7&0cb xS2FY"0k/5)8ͮ^ۮ);!*P(hG0jFX"8aV"^xS}~$1SLƸ#(xSwoUTic!{rUA1pgڈrcjSkcܞ'Ԩ޾{G
-$ȇ[UZJ*[yID"6277	YкShS&H"ۤ23|g5Qᗉ8pݖĖPH'[$,f&܎㱒Ý/!V٥[Si&Dw6hj7K^Nqh`=o,-r!\ 57y?4T}8foeE\ORBM"]3+ANL<-C.Mχ
ˆ8SMN8NP=KHX쯾|yΕu]hanTRiXS}rV(QOq J0BJ5{Jsv,!Z[.C;[ivoIP0ˇ`*M@wbhHg[6[u6ٱoА_(^O:Ɋ>PĪv+BQ{b)rI.oG#'vK8/Vls֑1[ڎUWOpy,Uպm'%aՆUZv͹ܹ(&_a`<	;}ֿ E,^{ M=
otd6	SJ7o}ui?3~'fr5{X}Z:=*ժewKu:awRRQ1)Ւ
0lJ/"i%X*WyqRkMZ׸F8j>D}yj?~``~l&ΩedZu_%yuH8anֵ9w/0zSKDؒq3K7`.2YпNG.ga=w5*,e
]5ȇ3 j$ciGj98!QP5Bn!c
t@XPv*~_X
/M;*ےC표yA)G<zef3'+:Mgq$8IUV.*X+ŴESo6ox2#+o#ɜqQ,4;g Є@]Ѳ}QqK<o?٘ 9lvqwVIO4ņ9ÌJa}tU-rol8L1~Z0yfkU
cۖJ4$ ^h%._҄wν=t̋r<`FieXv+&I:߉_mJ]^#d.sh$ƅ%C!˩KݵM%i'>&l͹P)N|P._,؇SR߻)`|[ge0W~#	m[,SLf2WXs;l|U%!gUQT`'WoqJޤQQŞ#&֒Уſȳ5p
\ӵ9h4FsrCoo`G}:T?kѧ(XKD*lQ$#ӿZ]ժ;W<s	U,gi!Iw٤\K$N;n;q?6yPN.^`/\&p@c$0;~c	f -rCTh>u38ݟhK5xR\]SiD1p]4@-&~M1IT?qT<:ڂMiY
=g۝rigJy6tnDN"|/>bRATV_(rM#wMuX 4D93q)R뽍ӇTZPnŘb@!jUԦ:GNh=d~05#s
~:80i EݲqxP!`Ow@?jeq':Wzh͡buٵ{x@83Aluվaݬrx6E0`L0b}+MS'cO(vVVK3~# ~-Sxp$}.ϕ5-UBUR0*|؍ 5=LuiDA(k[I}̈́㤥B=1/1
6Ok-{,/\6iߋZjr|{" Pj#
LJ%(dRʀҭFt`MCV|4@VIޡ?{y}Q%$c{Һ>z$OnX:C[1'QQgw)HseTlM(lH;E'u,Sl^ǧc؞TGA0}핂iR	CRE{p&׶i^tAV]|x۸ mپ^5v5͙5
ZqȐUI2Q^T Q'~2髽ǸN8=
1:2Uʀ
Am:EfnTGbɏb]ָuM-9:%oEO*̓hNp<Q/V ^+lySty}ymcL+iqDni5Ō-::3oMy%y߾CE73ՀlzW( ؽ/>A?[alʙBFY $Dӯ$l~ EI3BkZ|^
v57 /**E^Z860)ɚIsP>Pg)43f3=}_!\Op<ëX!vRE*_ߊ#r,ooax7/1Nn=pCH٘l/. iW5(}wEec/pv)EO΁HpWJޔpv;0(*Og"No%Uxe5slΔ=	ՂKn6=Qf?(-Տ[7<_B౧MkpŎ.i@7>~:ﺀlelPKb|:FLឯ"szLO:g͢DI.Ұ+iOd忥[8٨\ln%,) ?.n72ittlw\O@BMgg>:ȁJ@RLފ|KĈ{(3kӷb,bۅf'#gyeo=tOCjXURfj~⠩䣲Q7WL:BѨTj9
:ɩ>5r#<NQwO2˪th/ XIaԳk,s^V}5'DqaWnx&!7,g+-D*[z#3_#޻Ʌ6җ!P~Rt1܄ܾqPk]Ϝ3t#у:IP̲AZ]ҟ(]dßNGp*@Y73yClBm^ЎC/<Qh
E\%Cݓ"F[UrVGLR
p%Τs$Aq |WܕЧONm]<,=gs1ڇ~{(&rJΣZ P锹qo)U~t8%,2P]
ig[W(efX1y&OOo:8<<LUDXV¢p%ᴊdǭFvX'E2;Ҵkݼ_lMۗ.o:|j>Ԛny?v1zW:V^͵SakcӻUn^t+#q y<vͥ):n}iV?"'ވy-KKG4oZG	teԘ|v{??l_HǉYWCX1zWrwO!:!W(~T-7ܩGԗ8S)~P6nUT;y]]ҷ@xszT,c#q/Ҕ	$/~ G[;8VۅRFj'Wh]mZ6K·{2W.OI( \2\º'kʹ;bs
%<
[=u?FZ.aq	-s@O'׎1Q_8N&oE'
sVqz9\l"6J=`=U^
S>
6[ v%\8l|L	$o+v+Ae|<h=XNQsMx(31O6U#ǧ%kS^KxMc<=tLq-P'4,bHu׍n@`g_@|+|'x3&נl+͞|J%+)tJhZo_s2˰q?%y~79̿}p=H6UX t
zo%;=N Kܧ$oڻABjIE6;ŪC&HٶKEC7krq˝?- 2t-!ňg]E6d?'v j
?A
<T͢a,,k{o!-Iy{Rao&Tj5d<pX'9s52Uqœ
޿Nc:ny4krANL۷,S?ėbpK~'=]5b8$F#AS9XJj-(%JE4mLr&2WAz@dM8(	_	\!xJKER0̰&~CZ6VEN\^u7GzG=˨Żaa..xclj2Ѓ;FXFSEdzv=l9@.gJ鹁/!<xxDHꬍR؈DjjXo.|r[ڔar.xs>?9wۏ\#W8Bu4#VډapOYsDWzE=_jv2]rٞ5bt_ऒvMP>+L-6xȡ)lLuem%S'a499	[_nў`'ۅ2=zQcLxGKȿXc][Ox%sKye-vҞHaY2O H0"&A4:]wP(٣Gí:r-C$fPu(ǸKט`M
_@SoK`,=Zv,iSuFa91rRL3Z"Q^
ŗRw̱i+"&Dmh?
l`8ȶ}D`*ΛC[,ħ
Ys-W~r\~=	AvbHʑK[Ev,B
~kn4~{{P	S7j6gЄwS\S--7Q|a"RLV895L_=L|o9嬞H~gׂSCQ XK?Υ>۳ C̋eV-2CQ"Iru# ɒi7||/<Ͼlm]uqP V/4.
@%*,vrcbR;WVT,-7ѭ]ޥ/1ݚߒiss\RU̗*<*[ +n ?~#N,-ÛuoyءV$#a"ƅpm)iMo6No?tcto|̺_^˷zQIrZSX*uM~ڙdn&-憛sbHQy{-%&эxmLq8Z-5ғ#QHh)F.N	V8,'SQRLq?o/3:Fz:~
ſ-KnWOEr)+E$'W[ُ3=!`91cÝ&KQ5Hľ(̮qOy,
*d<Y*0K&U"AZϤV<K/j2dᡐMhrJco5%ٽ
МA4Uft5ٿ!'kp3O%unqH׼
J6Qpeh
e݌cvv}/踘Q0Ymb|JRɛ-zWt2.{xD[BVߒtZ5ՍnEs'cww1"H;J8WBJS/ [{aBnrܑ/i;UڙxԤg'ST?]_.H
x֬~5_M,ιYnGF\س=@@ȧ_^dAA6}
u@PH VDayQ^u%ޅA;
}jySu'0lp~<r)}gdՂ.N[JMuSEW}r;Ȗ}s}-ERAqtᵂl1-*HE:$t-qrb` ń^+?e`Mj4JDlr^Z"'"WȔ''XG{VݠYxD7s#0o0w%۟9߈V	Ü7
X[avM#:0 Ǟ%[JO-͏_퇏L$x|;Z,Zǫ`{S5^ˬbk.dl~< '"}R]GBBsݿ4I!ƣARӺi~ʉ梓MMIbugk_a_dnպ	T"ՇDjXٔmmQTypHطgB&Yڿʖ=-<HήTXѢBcbG,qk=fpVԻG	)qfL9VZXt]B-m
y: $ia2hl3dJEA4CZ6_-Bpb԰c}+$
ʨLf}܂7=$p,k*u|fUipPDB|&?|
F(D9)NY!BG: Sz	L*߂NtRU}AO}vG
Bǁ
6;&k|^9Dp̮"rcqCvʱ_u-i[ݞQ
e}%%@'Hž\#ߵ"\$!uуw)h=gm5Z3 3er|˹n{`bgLBXy8:8:~05!1;ZυD͎z0l=NloՋwsJSӆ'΋7/7m"[Mvs|jO6ܞɧkbMJʶ%ZJӊϪ!ˤkUd9Ea]MoF)jQ$Л.`i<]:hee1i#2!5-r)p&Ni~qߝx~,yOGUj"x,HJ"HOM!"p1l[[unPs'V<Q_4S#gndq1QtF*.bG$z);x	B2psH;<6ޞ71nP!~0;8*;ୌxr"Tn6e'x,}✣Ǧ7M.5B4 ߛ!?}=(x)ꭺ\fTqݫDKtH:P~Er YIryu?}:DpH9tKSQ1%YȦp%0T`v_eGtZ;~;
j* 
-HimxR4GpZb6	?/^7HN8^\BMjIۜbZ,hUw1vˎ[Kjj!Y%k~:;^Oulf_-u Duѹ}wk,G2p戮]J,0+:%[o[orb/A=*Q=I4~ݲG"<W:{,8SnLlChk }
J4w6ޯQcM)j_s\\L1עS(!d0m>ẇ/Ϭ]nCfR<:vΑ5{w-fvR%[
=ҕ=Hujnʭ_r?5or>Q{*h^u4ԱL0}3Tiv~JcO
⌶/
06ѥAcC7J6/AԌ+id%3y)*VW ȡ~:YoB`=,Z27x,DxQ)O
]t811ym$lvkg~%p`%$mOi~:R>QL30ib@_T{,.Q>QhWkk~fhc]quSKzReEI6_(cP8[t>qBN*{dQUhOݯか?jK~bm!` -E1f4B @Lz(T2S[Y	}}pF|#cǩni9=lB dkyMR/5v֨J>UudU0TwRBI'
1XEtЁRrω^,vy6PL&tz,[3:}IGbtwt:}*i E$9>փ꺨%⟋ży;~nMh,݀^~ܮw1ϢcHw^.C0L NĞ!k8c0ND]OkчR⼐cDRrĦU`1ioanu
zLg&xz"h_by{	\
JtA3>"/t'4y?Oܷ&
(ЙkB;8^LMm 8&IG/=ۙAӁ츬-.J^]N?ԎpX
r7E򧍳~>{o쀧Phj@(nN8l
r9x!F?6mb%L@۴ý,AEX7K[zwSkz\уr;faw1i3x!e}."+
]"N9u#u[Qf	r{{A?{zU=&[LAH!Y!W+2>$'w'jx+H˝X+F7neh63 
媆uQ5~~3lvt7brjÑTE.Lk#R	[\~q^%/zD17hu'KN2rO@d5ݍN'p8(Ňkl~\ivsTHkyrͮ
xYY]+IvD&b[K Y]aQ6Z
;H'uEJ #͐3okc9-xCK?f_U6.i{<gR|UE]t{A6p&O[xE:+p ?`[|O)б!Y"npBMr{wBMŦMh]x@ߩt\! >t"0{Uyߝnp"	営h	Z^9I>Uοcp+&e/%k-|^dMO.^.ʯo~qm5udW8(-Z,Jf2ahWڌ]5INUMcʇ=tq˘\&r>UXՈ[!ڛ\èBgu·9BϮ?h)}9Eߒq#_$:^Ju+yGL.dj3I2رYrԓM!HX=&VzTPxAao
fH{#7ӻN\@#|ch=<`,*BxPRYPEg!ԽClczI]swQ>^C 1͠6mi[4{ G+1rBJ3귿ϑ12˜+'1`rzF`Ԕp!m$l2Ok
D>ˠTfCgVjG<#^xO}n7!{oQr/ڹF1qo<ZGRh?nҠScυ=~8'͢*
3'ףmr^޸NV7ћ(nb
f8ЗB󹬒C@*ObQ-(\\wpXSݥd2\nyk[m%)u<w8w.dG~?+T>ζl8
Wn	ݏ7j\e`qg>lPqiԸ'4_{w{}l]Ix,ZYE?&h; 0^Pq' I
{hOjf9klmƺKSv AOWAx굎Fs%·VHA7u7 ǵ_?i&lE8t\sO*:zlpfzcY:}je%Q_&1IL: 0X8%9Zg-*$?{%;la/ŵη?OD݉D3Ci*hkoA"=i6
A|F}9Go)ַblou?Vun?J=K@c"t3@Ȼ9DZ$ѩy7}D #	~@OΙ`몥jT6xŃLc"(!.qmǋ^x	=8%V1FռvOz1Nx4&b萷~^ti
½:@'_~sO~Oq'iҠPܑ`iF
!tk޷*y[xtQ!AO`n'!QSbYS︂烥`PV3uL]@
BpM}	ncSu{ZbIq(^k":%šJo"T!j%!
Wo-.My83a޳dSs	N:uu0DGIK?~.e ,w]fmsN* rr7')d,NZuN@XSkDh=70{{Gx"\9w>Nc fq,ŘͼHbQz3A(z@6'Sbۖeo][)O]U\ٗquy_h\=].gô-x|e6q݂(/b޴bc} `9 U=XN:ZN8YSUqP8b	kgͯa4ؑ/<t:oN!xzX]I mk!8fGn'|@\D<oWņicQ!o u)78`vl?IdF{9i9*@١*yQU硧Էr~O7ޏV<op| ELiOo=ih}](x_Hxu9!FPDPpUߩF{n/[pA=	XY(mߒ5!:  
MU P'2  ؞"U7JNF
aiR톇(=\sI폾- *<d[:c|[[},0b&m$\*a:%
X֗}'o 3s͑A*.[Úu^Bu dMv)>CLFQvHwbh
^w_>+9<K/RcI$Ei^% QWd1b|;Ho |`tN}ˠ@|%mJ:y˧J=˷2+>4:f'q<43"Ov,L#PZut[O<y5Sc4|F#Ҟ˷hI2RBiގ^q[Q$ 3 ~[{ywޭ<KRKC=:>V=;%wkk1Bt\smxW&XH }3W{8p,<lDK,SKz<p@`Ǳf\  ~.yl|ISdm[sm`%G]__ }H.ȡtZʓ@6x	z_zmq|g=fn ol6g[;Ku|2Z?^	4yZIsp$dMFU.&wPé୮u}+[ow"kZ #yӕ1<GUݙ"6UE'ΰ 	'^D5;e#\x̝E'ךW`Q[ ݏc>䏳0+pO!mɣ,[mXn?s-8{3<L QZSdXKxx9:_A]=,`
sAVgҜ24SVـH/?K]k4^Lwk:,aRu~[$x_'L'O8> w/m	)\KӍ(H^+Ώ|>JO
.s	$׫Z"{7
<~rޢH2!$:A-\W|Fz)(ٜ\(1-!q89/Pj\py%FͅrwbV/Ӫj`s>x6:B\_֭ޔ2o85qIa++mU׫tJoߜfɂ;J!8gi&ආLtۭYk/ꂇ;
1(ی
k+9[[sCzHaC$bh3h,p^LUȻ		4@=W2m^W
źQg}LOwɀ[T?9E풆q496au'Ul/[ꋀj3/
^X	K9%|)uɰ秔c!i}? _)$oE	b]٬MަlÊe4xohB`ϓcIS_r1B1udv , 1oa%g
$įΜ>+8~aLB(`DtSTJ?YL_vT[no_N(ЍĉdɏqwT<tT|O!G|2(Ϊ"XpN{7Pm0,"؃Dbq-09'0)H0%Ŏ\{wUo3tRy*4K;Dfѧ/hYvҚkG]\4jOBPu\,KN=4(Y9F.UlM-avd(Z֚*{
OҾMi=*WK,1.3IS<;ڶ)8F
Bg]A,	@<jaP)LF?1*xAY4|
?qǍ%EqA/
nۥj:[~mMje5siz	6p4Vk3\7NgVՓvuO3woD6=oc&8=x
<uuf7l%/o{z2nK
ΏYc|$kDe>qznlv؝k&L*nGej*|~,kٯlqo-?	tKIOV@U%\bSyz=vCg_yC>x6Q9+b5/&&Ѹjgy0zrTȧct"79<*D ݲlE
&8ZOsL4`ԃWdm5^evt<uMkWac>YTE9
ʻ|,v}ꢗ򟁮<O,|)vK
c:[ b?@0t~#>)	ppśmTf!gW;ϓfy<o$	:ZF48>c:WwCvVw!8[i;;e0t>lщ6pR77'nWQ~#jYw#`!QzV6FSJ4\+5iZLw6OgѠ5YF";	AE(ΘPQ5kLtoIlj['؁G!of(Hx
9yK|H^M\O%KS@i;zSXM;rrǴ_O6UeLjalUg<5
d(@~ʾg<_fF͹;6{]KRxv?aE'11'Ihx=n]Zj
nSf,nΟ~&~hdr}J.F4zJQ[jmqsefJK(VA	Nxnф=Љ٭Mq9]ќx"#^+SRgJG|.䉬dzJzvir~94[CX{q4rWJavp')[2 0azw=4H@9]0A !:DaWe{jX%l0뢢pW +R4өl6>tnq*3|;S#Yy'=_r}3}yQA뷄Ctƺ]\->sK'\4'`}7z71].0v-V⒅|Ͼ06LZd884q tGfsN񽍻~;֋(4Guԙ%mεԪ(#d;;z:)޺^c}@#$D݀ǏEqe`no
#/ssP*R9{őulge;KRghzb\tQ)yݒlwd7XC#kvv!"Sk9fɼ; ӓ_O@C&n:$?Tge**_UIΨن99=ZeDBdЍHFrdXd`e2*۸*eWqʙи^I׬-s|k4I3"Eޠ/}qy;rhh3wfcf-Ow=o?9hTD{'1tK2!lvN#b{!@

z凛?eHw׉
15Q}r  O_o[͢'5ې]%&KV z"//&O}+Q	!7,Mb=E )E	OOkEwnB,˨Lŋ6@ǌz[
L
&8eb^aSR ұ!/5P>N{[ƅvPBka!WÍ2e[6$P_=W1C6z|8cfQ'T ]s,%uk-R+XM#22F[@Rp)ܔ8nl48'nd}]
Oޑ	sō.!G
X>͛y	)KٱQgNƏJdk r<h^c4_P~}n?BXW\EA{Lw1]ŷˉ1<B`Xts1kS,h[VGrG&]fvr7;)<}[Xr"bur)˹;Gm?); Dj;02nj#qO_J|F0)Y_[a܌;lO9&OgSP$O2!˻d/xDO]Xn34[4Jpn	u8}{l{@xAؖt#BfSP<HI,VO~	C|Gј_JF{+aRTӊ(1SD=!L nmhT%ZhfjH$o0O(-g:G̎a)lndP~bb;ZY"11y2WcI$h7\ Vŗ>u-V03T1΅)CDӕƲ}Q/r=,ʖl1՛_XW-PlmM=fMxus,hC	̏ ~%_E
3MI<3 >Ny0=ǊJs";.1sZ.3Bb'ʩºB,UPuG*_C=R޳ô~@7-8xo*7V	̤`*a'C3)mm[y/0Dj#++Y+@]
Rqz_f[3?8.1j3Ǌ-Lzr/nG7@兄34ݞ-3Kb o&&:_I460Q:3&C9a{I03U[9aSDμ)'ұ"(</ko̷{.MOϧd2,]yR 4߰絈7</4D\qBkm^2SSTF.wh<\GPyg>byn& ׮
e nPS6lNOWq*kipԨ x58k2o5AH<ӆ*F~~wgp}gؔP9eԘ&% zgic{_s9i~"wv&NU(ǫjxyOaL_Fo3zl\8{YN]`
\.CuT׿vLt9;>
!I&*{&Xfe+rJJm7[/>JLcSq5
M)nº~&]{rE֊lh<ۀ2ݭZU*r>*É'q{Xmҍ/gmڨXC@|q1Dz3eGçA8]OR\ʽҜc~f]Tľf~H
ԞR qu[I~?G͎kL/wY4UZ~)Ry\hmzd{11X~+J@pLѼUqg-Gǚ-RqAsuUJ**t6?U~)麻dX<
EZ6È{Q7>{ԸǱjts +A7}6dVLdٷ5.ȀL
w ;.W?Y0/Ҝ)IkGfY-@BIUĻO-TKp3{˴%Úu&T֊@,YCN,hxH6Gxㅟ୧^cte0i0K2!/%MBw#\<ed`ZDJo3`U_*2rAW]ZoBlS޾{܂pAytZJWJ"I裯:}))-uǜXg782Wrs"uΜܞ#d</}
(3Nb=extu0e-L?wg>B-S%Nξ({@pҧnid7mXm uE2RFt+MR	WF;3.Rn01'nk#p|O
f=îo)OPg}R*PWiSVѲ8'N
B_9˾-N\5D80K0<MUߪ7	+=q!)@hW8(Nz[Ȍ>wVR"܁)!2{)LulS~2ump8 b8eKwŻ"
` 4y ğ䌺չO_C̩ɬNcNi-n5w@؂_<0_톴Y>I[bE5$Xݎ'·} 1=d~=< turcggHC=vM>2Rm8+@:{	BF>sm,MwCOKy;1^\Ɠ(ŞZm? -lwPӜ/r <ϖ?in{5,D92/ܯ(l\-QPmLmFp8)D.kc+ko'ȹޮ%B	X*t2_-_76C~fiiXP$mRN8aX*Oƿ.٭}Ѧɀ:k?$/3lGn?W%G/"NBawH(oFثK1譻a>	xAA]*TiD5dBp4BƁمV'ksR[v@YveRHM
woWKPv:fJuIJg}aJvH~TT]^e6ɫ<r5a[?6D*ϒ+Xk`#9/^\ԓ8Px]J/dFs[ru#*D?7V!|a^Cy&=%%uye9d㮴
& A`y#7N{T٪)!K@R6]أ
vHޢ?p̿E9~ XN<l=x|h/r]^b=8PALIBmJPՅOLeCt]9nfE쯘96w+uZ	jO'g/CtѦy_HA]UUx
cӽ͑gM
Bɰd?;,Wj0)}AAөU̵۫JD%CpaW2ߢmALq/?$ .pf
2<C"Nd
؇-ӸW|Q8AYc[e<syՌ̠"u2Sj߱0\d-8mSidgVu2G>U$Lt{!!ӓfKua eΔLk9. Uv5(ۻ8_'>y}	9w8RĀ6x9;OHC]笩_mַĖyw_
WB.g9J<w{=䕛?/,a@A:㭹UWY-WEZ[f{Ժ+Fm23OH|\ZlwTa^4y0FxͰ]e]sTA9=B7VxJ?4εve$Wiq2L
qE3cgV|	--TG21ut\,m$N12yFل}昨<E<پ;FV1A#b.Iȇ Z <L}

+xR/F=i.E
-aA/ŶtHi،ێ@QA.$m?]25w8tv=4.]*	 +A>a/]ߋwVÃTqt6pٻp4}.#di:0"MBlrgKFoy하ν!57 u&%Bjk7!(J>@aM[Ͽpr*F	Xp\<݂&b5/oѶ_^͇`Od.@Z
)"µ&_N'1{VoE&#ajπxGhz7JLP0
 AK!1Óam@yFBH˝gCф8Imژ(Tے~ŧU"0̆'`jspfd2cinF
O\AOlh LNK1E~a#T;۬K?yW{مiQ 'PgQc^BӾYRؼ<,$BDͬ֎^+B&m#=&pd̳B]Deݣb*M4A3-y8ßj?]J_EM^ᷠcd f*[ٺzsU^7rxsz.4lNܗXbLy1G΃3Q6WV~;>m|?+/Q]~6Iɶ8LB	ݙSq_bGg9)x[n ^6KWX)yEKjV5#er͡=Qv)!lu$7$~Uso+lJ >aNw^ꔫ$:Vƫ!U}u7O]"(Q)GfCff&PTSPb}YEƑe*'b<"<Zx"W$)&k~^"x:A˶vilş4[
0/o6p?:]Xr>]hY*<QaCLZ˸ScHg"(X*)bWݭǬ]C{ez7xIsQuPnivhB ILMdE+w>⺣@Ӡ?Mrugj
5>~+mMeR+la>)(Ϡ|iWBHc[W]dOg	&eY]a`{NZsTd1J0SD7sw;//MŹ=/M+"NH:
>GಥA4y	:-"(Ρ[T+	W
Q)V$57*Xw^+H[(W-勅OR#HKn)qhH4{*-pߒOIm#`ֆ9Q׉Mu|1!Zz_JK<n=^8nn (CeʲE}
ő>͸czKтk4Z@lN1A:D[ڽlY{>쭶,4[gG.ȧ!_e>Et^>xY.GuJ[{w	xq~9~U>HDۛWb]yu Itw
xSP<=HE{FnO4?ܬ`rs0;	9e&LZu\H
PЫ=!?b:ewY{m!K0
.A$!)F䱡~TBoVe~Dg.ISeF6YPKe<;&GN[8iͤbaX"K;o$&<?
wA.!dᅬ7;!I3(S;
LSTo(Oշǿ)óh7jvFRAO#V5Uc%ACdw`GQ	&S%@22OK듫DR^[Lq(;A[9(~:8E"llh2|}\}F\ K-\jJ>R]y;HUP¯ҩ'.\&MDq'za7ؑK<g1BJ#΄=)J1EcfIg,׍i[E3 8iZڶ(*.۸TF/.t+Ӧ݃nC4˹GZPa9LbPt
L?}Cؗ` \>,ZSoCFVArh.4 a_lj2<v|*/%󌩧AT:
HL1f/bow᩟`W#n/9{m9DÄwE`5^*wdS5d+^'1Xi*'گv̨ƘoM<kmA<~gGqVS"9
235Q޻Ḽ~ZU< XWGU /jD$T)~wϓ̉~#_Tio}v6ى&qÖI!hf<,=Pѕ#y=a^ֳ<̤VsnϭǆS+s&WeKƽn}fYǪ~լ^zrRdk0jTL3dhp$I!~bnSs((QKxXܞ͙yד.^hD\#e[};?_6;Z0c*AnQQ/0Kfc+%_@vڹ`!4&=噝]vҧk@HN޿{=Z.b*gY)jϪNk]rFΉa20wM4$yAQfZg
mfGq/XJk/ PqK}yW63&-wdZ{P,iT]	ŀLHڜ,--Y_:/V8StZqlZC0/3{drnI8bi-jv U÷JoaM;xOzXѮ{!(FБ ʘrs[ѣfΟ_s2Sn>OWڱvHh+h^F;_A}z>sۍ[

O9"hHJNKOum9qd&O1yxr]*"[.8゛*DU'rGł-SZpY"&y	|P@cMࠊ5気>[e_ĪƗh+Pl	LYaZ0 }?4x
6Zj?<n$v/h-y'.tI6CڕeGwnφwǼzӫ~r5jr9CRȲx@?lLih>Sm]?=(~\!Mz{A9S>֝ӽ0ɊC	Qq tNzGPŹ̻{ybتt]~D0As痎Bm<Rkb좛Oo=zCF80s:fMT.?Rk'ݠ>})~unl̜
Cz~/i({+.:)!zdB_KQc8,-\dkU[.Sl腇:~֗	eU*u	.}^wlxF>QwMCz?V*Lz0 Ȁ3p:;pX;b{>taG>(CIľ2rX}A$#0op{kmuaС7٭zcr9雰;-0Q	XL\e<ơ	ۆ8skffx9n2$΋5)o{y'wzCㆉk%w	unum=$/D'sF9g0n"o͡V6rtO`i\
ߪ&ͶnFO_H1ZD򞜥Ms rx&ȳ8Mfv]"zfvK<ݲo
q,Jm7c"?!?|!`%1!{ꎧKꋨ2'kg VB JSiuqW}6YfđҚ	՟5spMoP>
N
8PKhX-/J8IgAAdخHZDo	'ֈ]e/o\1[$TU>xM#Ҳ滄?L[fJUYIX'Lj C$[{77>E&%5N=
I_8튡H񻩧/Yљ
A}|:Izdjv/-S.
s4t}z~_m~EZ4sb oTIze4Viʄcs_xl2vmF	jD./ѩ4gs*(*NTi._nY@mA-*`z	T]k<{M"It#=g2T #liՃ?Cop!ffFb
(nI(M~{e!;a`j\P=3C}d'c
K?R<m$ALWֶFXWuC[W3<6U>sVHעkzkV+(/%k^^˂?'meV1x֡y.0w#;<qAuMB<p{<O;A$٥.ɽ1 U
uqAք
?JQOym@/&:iOq@8'{w'si>
)^[Sk)NӦHudjC:{[%\2#]atG{QBdt"_9
ۿOv x ]I]JVj<$z[1f"Ѐcv_\¯.%Og$Ufrv|3S!6Ɉ?8Y|׾Y{h+롋Ģ8W-R0̯,A`&~=}x3Ӆ\sy5p !hK퐧MZOEC&TJ)³Q=-dr
Cl &isOpL2dN~9_}
f_#a])FMGt/WطaSCec@N&	ry9؎GQ&mwf}^n۫a޾p.1]I0Ȫ|IgoEGm׀s4
|x UQhGQ?\Al
Z@g\3t:?ZsY?A- <zBi
$ hlӦL*c<}wmߟ7sW]!)c\Tč![b_[]eGIC-VzT#F\rR;ft+{t5s%-2n*8
Ts8'3V׬#b\->
c3Dgx0lQ]5VW]r}UMYȑ
?h~Zߒ\_èAnNjEe&Ǖ!
B(o`jA˦+XWI嬼N<oIcvT1{'b.@(AdMWq:vKX%mD0`uow?%xͪG{Pb.j`)~)PXW,~=vp9,K}Κ1
SgG?gq7n2Ya|^>*- #|[&vZ"yЋҥܾJ.bB\E>ĎG<<S={rb?g$C+&䴖-zy|Q5y:DCO !yܨۼr ے+6n@!&-0'LDib[FH[GY-[
Y?ͧ͢m(QjW8f#S')%ޞGOK)vFV
wͥC48L $x+K:x1nʽ8Sy6["	
|D-=~*q@cE^>Wh+T(ܗ80 ѯ/1ݠ?y	:XHIG:eh-X59?FN=?-=Px~8~6Zz]ftTd˧F6$^{&c6zp.ɸCځyk_b\ۜO75ᅓ3l5WXKEmvys6E]vbO*sW,y8FUu-snY#41kʴQO?kɋcP^-C9
L$DșN
wF1*}>	O vGǥze}Ue=*|p|Nqp	dpt-eP-B\CYBFb4ǹSUF::Haz+b%='c{Cxփb³V!hQ*TJ? nX҆CuAUŅ-FТ2︲7{J^<'!?/짝dMwڸwa=ɧ'3]ѧ4muYS38W}o%~r^'Hݡ!IHE<$K!rh(9@mpo;qϐ%1ttCeHZs	׼4cu%&=P`pc +˓q8SRmgQ(-COO?65[ՙZb8s2M3$jc:[Jo%-0^Cd
k=pNa*uʴ>Q`Gxݕq&]Ϛk~9
O^h=c)YncrЎq۞^?ehp#D?z^S<3iUyG.y*3rPb/ڢ8)ܷ<F]c@ǿ 9]!}8HeRN-u;B?^
SljXUÒD"<G9jrW$:{8'_RA\x[_՛N_܁Eߓ!δsOI*2B PH8rPρF%b<$)o)Q@̦JG )laet13GsGh|fDORmL	5:o66N/PWa$ve>|lqLzZY'
4y[7_
bsEoJ[\2y{v*Uܦ{sT]ИP7r=9sJ4מl.-	AHM^~pplVͅuo}*Zܙ4,اn3Oq	ᰜOkƐS*vpsj W+>՟z
3xCNgi ǭA
K ^; LȆ<bX(=!O@R1@pE
gn0ժli0vP<#{AOWzjX%F*Dc4kJۤxpuzRuwZrbZ&r^O)*i85V'IO?1-֚n#*8*x.˘/p?ud!M/jEZ"d-'(]rwn\?@'KtGtފoۯ^c2*AlT ;KH?n y)ۋ_O"^/wÝ(.֌,p#&Kg+޵N͟?~\}" 8ݬ4#ߕ}w<ks/aAQO&5[ݧ?n%^-aSfTlSw.TJ~QW)_۵){Juh6u-iT%ErO
"־N3{4,	tf\2ISܥ:cS.=u?B1K1Mujݏի䯳hM?qyvvH:-:y+٬<Q}?wGcw*dMБw=W|2ZGCԤFSr7ú?$ma~vi:6QrR(+~(Uz{Jl]eC5s8egD#;^-9>4ti;:K qaΜ)A8T*7H4cekw?w^GZ"OX	f}2PK=fG6/
WvTJL
NZB9>$9q@zKn߆);L)1HyE"go洐<d+ek/aJwibԧYRɈ8P/P6M]^4DtDP1(<Z[R
Da١x{5Ǫ@E(2WYm>ot|i0]ǽ1uv 
QUznT	&=Xk!¾D+AH3kk[Af%8ۉ.#gyh\kDK28~Aɹ<*;V7޾r{4dU@dJ甡}{m1'q[)_7\Dd1ʧ+Ѯ\'(
~^9q41r3FkX~/[HLiAsvܨFew	i7ηU/1|=ӓfba旔LqBdmCb#e+ ߹\CO(׾y&?s+	ᕇ%9$磪TjǍ
ӓ,\\:l(z76n oWe{WS8ȏbMǅ	=)+XRD($iVD묏$dX|GMvD9S^fj=Tvt\Sc[1~ܺ?nU/_*y̓'-KQ<Xw8yv^q41,^=rs+?nڻ园%ştc TkgtjP] RAVI.?	W <!xU+S-RvΈ;ڵjFmܮcf06n[>f T*ix;}t1,ɍh{zo\cEn5h*	31{Ξ/'[zpIfCn2l4PR+nZ!PׅhZGM0oMn͉[xY(|KlE~z/.	\m\IZrlw({ЁFF}`'k涖FA>փB"nJ˓;_&6*/|o>ley~ S2pB>E6knD׀~חqʺũk}9]D j)[N`#[ĈLv}j=Q-ۭ	osϩ:2ȊJom)aOc^M+˔+cſZ,/G{xA.tm4B%0k+4"ʙMj7<fO^I?RWN9g	ee$bῶޱ_s=;ANڙ>F$E=y`QwiVbbE(:D,tBn۟biQO}x>>J:;,WsZv<Os?Y]J!W[Aast%@8Wdv\ӗyB癹?Y}lv
sC2{&1ϒ!Z#1?:2
I5EmX_!7JXכ],RFWҲ3ssuVoq>Aul=hvdy	^Woy<4ǁrGvKP\%[*.3B@pD~SD޹rk'g|\>`}lG,/XQDq,B-(<ǝk}/GoS v{8擎ܖs]yLdw"kҚZtJ~yi~fTdgXIrOAK4ҁ(SmUld/L]I܉;]7>	,yz?.)eF_bUjvt'=tǁmvµ	ljև9/bH̏	0#WHy Zɑe.
xƊG@v.*u|,ӘS-Kǈ /mjYǄh*،LE'\P1gS-U}Uz&j\*q0ADF{':'Qg
Z3yJ
:NJʅ֕q"G
eL#@B6r+ݞ:/cvR#g3;b
p~؈𩗧ƹЇgEV' lcp%ѣkE-sۣ
(B31HA$3r{.M=rԙp<OG3էxw""pMG"O-x	` ǆw='{V-=SgxʶsTq	ust%_k|`l+=hQI=ū*Zm^+4v؜'awGu|ɷQP2
uPhzģ{wbC3!ӂ%c6WV Px~N;QZ<u>~Ns"s-4"5߅g
!ףײE~K/tV?W&̹H4a)NPUX+#yՆqwT23,{:!ӱ`W->_FnK6vQD~5; Y+k[y8"4ِ_ou
44"v	}hFE2Z
p>lI{V%X9MVbH΃Šϩ=hGpW}$UdLBk9Diu
-t'̟ ?UϙnH/!l<< ΃^îx2S݁T/2 x)0}0/.7~Nť}=4t~~oS:!`:/á{iOb4W}A+ iySamӆ
>/,76p[HY܀=BCvM<C&H{1,z?fۍġInPYHo%ԉDpZۧn@V{bޚI;Ҳc2X].]PUS5&^sUa'	g0tn
.8?K^qWԅofNw78{*}q;bG ^TSeW ?U\~m	O̥@aqk[UlTcuYW̠U#Q{~?mP'i׺+5௓+R~W Cz~X<'ԐP Lv/dN)S vvX{x{߂d\?R?mo&t
Li_b!vm~˵VdfرWIlsohӹe ̭0k0
J]eWS`L)j>`8̩ƭx\
;%Vgg8a63l4_7;/ ?}IAF;${+8fs1ICT4NT|	-U@v?G~9Cnx<L{n.#Q'?O!Ǐ#cFAx-%ALUEOLz>:[gSL$Ip"q)sW_͛'ǈyP^sX>IXya7z&rUx8~>no[<*0n®_+$-|4Q9y{:CG!V%Y(Bﳸk>贀̧6C}uejڸiUW~
ԡ
C)M4	觔ߠrWP?6ĝcarg(e4q[h%Q`Xa蒬!$FpMPfXߓE:һS	~)h%u^IEpĘ<SV5cOV~yy2:%>pYy	
{7^7 -f}>
[ct@:By#EO'&Xuz'[C e{r  f#sq7	yn7d4U5ޔ'"V[VrBs|&"3jFvW?oE{5O!AW
!VfvI#LJVcg\1TB~m!Ą
klb:G{֪vCd9-9ߥ=3<+fV@2,C%eW,:") S9y$d׭(,h#!3SFP/_&wSOrH*HM@	(rsۅ8y?ߴ -abp1dH&<;{;D=ZxնI$;Z.rVLӎHs8:䵦@p*+=_V])nÞFXKwE%pٗW(=]1<!Yv{z&G$q`;i וn:jþN6wshSUci`CND9O|ў
NDrNT_JY4xYr!G:\wZ[pRhuE[/y-7<yvvҊAy6*ZLKj:2
id4(ߥ`~GrC\k KhM\C
xZy6>co;H{鎜tBA9rCV9{N⯍61xrƳ5?g]<>z8m'S8Q07$cIrЗe#F; .l"q˕G)ܴq|]ǣu-H*\\ܦm@8fN!W73_f.u#ĎӺZ&usӌ+|3L:a)Ϲ'4ٱA}8:l*9&A',,lعrR5>#!4-T!)=9sUfl]7R zP;#}34Ii	q%
EqЙI6	
Ȫ$Br5Cr3<l`84p颲CplʕrQy2#4?x?1l/تpJ§vnZ1=lr:})I08?䕡q|-濙-v8X	cql,K7`"=<IˤWWm#[̡ZXYdcU -0V]p)[Vou遼Oy|
!3$ZY[Q
'.ΜDF>3P ..6ѽ`m C5z"wzAmb5K2Κ];}*gvdn`ok\JUJ:kCͪ=?MP`RcW4~|FX)z;.fcP
69])u/c}Ir,-k1[RŹeu{$1mni^V%>0+y XVBaǒоTki'^syŶMGD
Ԯ׮q3.wqYt *y҃Kn7|TMZBCԋ⦴dr~Y3R21otL8m(Kc+Ĥ=˲,MVo~yb
[BLNGP,Mn^ 0{@)?Fe3駤yL%u%@j13)*cW
c+ 6#Yeڛt>~Ft=$w8št0G0#.V
R|5ݘc^6^eP^L}8WJTH[eF%ܽ_;_A!P4Rsr[uJ<--1re= 8ohR	JB.&%h?жzxI1|08rGJ:=U1$CjVop,0+OUqHe*urg(}·STp[yV+ſJbir7|
'29E>uv@\:L}
![=GCU&UgG9n*-
iv[;n8O?D\v}omߒFk
&G3M׮vs	yOg	nG \e.ˣ)4c&4g*/)scKqq4Ҫ4
k*Ҝ
$3Rȇ?FŨS饭Euږ+S^>kn-yR
k{`@ر]1k>%!yTLtw
	w
]"S.(PY˩t쨚TF׋7!ہ
䮛MS>Z/CԢsMkfi*!n<h:j,ny#Hu)t=3P|RӁY$e
Ŷv8`Hc&w@̞o-0FT$R._7${=`Xj2ؾ<y<,O4[ yB{2`r
3Ԭߌ{g/;԰J
9bZmKB|%U29QU,%@iutxڂAL/MɑizLVU8
Rlg홪O #L[]2$8nӀiJP{h
!=/QIeη'LmoA0>h1%Ͳ}+zJŔ%eMzUK3

`:̘CBÑ҈x&QU3pip
P
fRWMt=
ȟ#=7|NWIYdFřP7[@׷ûT0P@A(AbL!)òV@#EB|8?,ۘ_1u]@dvK5 IiaGZgnz-=|	#H&Wu45(@~2B)#;ѳ2°m'`[a`N;=ůn=	=EX^/FbGC3;MaY2UQT[ƭ
\3lic'l^4J=~{vz	]M7'{J$h^ڏZm
lGn	XF70iXYa+sg'h}k9ek${''#[pwN|BXkjC8?m$6+Ҩc;lGm
14 ?6κo{b,a|VeBQA%e0>
YH0je+R?ZÃ ":mXl,І;aX	?;~A`i^WtjVJtԿ vy9jlΧ;Đ
/1%z ̖+xXË3}-N]'\McRSIK3 ZoF93Ol6vsiF02)/B6i5 3kWXQ/[
{]}{򛍺PNz2R{Tn>%7ցQ.USKui/1-f z}b2/7_Hq]ul!JAd+mԥ-A_EZ3Jm/(Twف=D8/]} 
*y\Ökv(^s$}[,]MZxAnbzB!KRҼ`p!C:
`%	?SxZbOgŊ[w5D0gv5+KSdܞm@]M3'.n
Uv0gkn?><ɦ6W6|X+GXO'iLheK~Xݲ
ł;]`+v}:#%Ty_jF󰇾BGn^\Яˏ"D;bXI0˗UD:HMܟGIZgPq\7Y DSB־fƽX5CB5ٗ`&eU bljd^iK逜^)-waXWcn
+~f{+B4NSفb sqDѩ(S|b$ɘ{C\Q5ȑgT='[(rښ_)o[m;5\8+uDn;O5_[\k#=[?,I'st,TaXCtvy+\h]ר|-GC彮cJnWQ8䮫3?#s@4᥋rO(3Ƈ7%izcjtP]5R: a%iܳH yMZ3VCȱe2S>5ߛlwyHS//K(@mNAD$77m?\9GRgܠo3Hp =4p^,f>RWi2 ބȫf8@mlE'T}i0dvkEP[ѶlQKT[p뙚H;ւ)[8VYZIbsD!ηŅ9σi>kS¾ HG@FG$o. ߅kEdPEd(	DAbTI[;,vrk;FaNPM}9P:0`ql6+)iʃYɘsӛuԘ{Y\'HVH@ʝBun!ͳ-MkAKȋP4@MCP9 5Tr]\Kϱ$^lqs|Y)%n2mFlK$CHoZzf8K\5벱
*ÅIs2vSC:,e㖎7U݆*#X'3o
v6ٙZiA"P
:ӬJO/WtO><eܯ{k/A OʩfcC]OL[jnD/xqqf*L̺	H$a3;w_B%m߅}\5d0^k4:ߩ0X:ޚvjs\.c_َڏ?E> K>*-`hDTc٣zR)d,x4SVF|HQ5;̭(f`pe+<01'1OAO=mﳞ˷P}dջ9J'?Ufד<sQSFrm~Gh~{#k<N\F\.aw/\G:2ɿܼ;1Is7oԣ<-[4+r`)pE^qt
чQo[zgXʜ6N%S!~3KZK:?C@cg`ŝ#Ax`4|P͐}zEgHWέEGaw95'fllȭ\>z9|`ߤ Cew`O08Y9LYἶFe)0/8z𴕍IwN<}9%~w (#zGO%68j/ek
Old}@G\l&HT3
$]lfCj'~Zh͈r?..l,32%Hb;5lkhF䜓_/q{ԾKU	>6.Ŧ;ݡ:t$QoN2cZFԙfՠgkP%ZAa@H-!q*)JI-h[L&R1gç4_)ryOy>J	m3WXҋzynX oC9Tq'#8Vv\|PR
9SLGp:3f=8s{\۔@K>e&'2#Q73<cSIm`HzET~s>r	3gH)U7&6b]P.{#De9`U*Oӛ^=y3sw<	4"
K;tiov#<߀6y
)^5d?~	x|UA
	e$櫶x&*h;2pQ~7Cav<EjȕЛ~S{[BgXVy}7YV O& h73O^QۧUg,|lmqyWwN&˨,UC
uW`=`_
a3j3ͅ)[+W@q D0͈zxiSS-Vܼ-3+@X員x$ W% xDbFyiut#KpAxlJХ+lWKٯ5+"*I8xhd`gӃ6`x|7Bn;#:DbKl^cA{T'!ͩB66bSLZB<sa/6!I)!Rb_g7:c82jl}#
P<cUBgE!,ZNs,ҵ 4oHE)\2Q%YAlNM;)0]n#xX[`l B$VqATU`-ϝ
^{><Hkrp1$(-̲3zN424BQۺ0-ydѓ݋GUrZ
=cgHPsuQ9C{O3{wAMTn-1AqSJ ]zֹ+?̙e 3KCX9݅,w|AL[!O6 _&ӗ-Oh+^BZqiI(QŞOށKrKFO<OBugIAvnۓIͺS1ҟC
=9_xq(S.!QpjpzVDqOiP~KT/ER

k\
M=eqbr9	t0
wB	tpDN"he(FnAju6W|w7*[}vyY0z$Kqȭa)fYu	
@wxo$ekvH\eZLl}寵q.D2]ML/٣`me^bh8y:ZhE fpӸ0t(k_jbG%bW ^$bMJ]s/? qdGytZn
Ѩa q'z'`Kj/EuqealTr4"qnAr2c[~/{\<1?'a5&,F؁J(AסJ	u	ҝd$+=Jx
$p#LYJQ "<Xvtbo7;WٛZcƖB挑R=9Qr^gP#}YSpA[p~&Vk(r?NP3X
nÚRDU^޷E&]HF%xΖSCѤF$j#VUNnѶmNg>^0Y<	QfU1{AB8oݢu{"yzZ~
n`s) љciW]tFVeh~"<݊Mqb2Mfq3z(!*ܻA{xrD dV4ho
JrzF=TAgJ}Xrc,sRжɦ\A]u!% ld,!&s[u%O7.ycv0fSNMZBP;
1	#~%iaTG#<{ %#>G%\?eFeǅ3F5+ڿ!؈okWtgS=ZOPl<2,MeN-iEC~E%64OWk}Va!&xȷBp>(~Cheox7n(ސ
tGj	 MfσŦWΙnisIڤ2n
9KB#{$C`%TeJHW pÞpsS[DcVԻZ&JG
"@5c+Q s%Lu"?m<;ID0D	W
y$:FIO۾,pm.1RBf)y-YB{:f
{ҙMڏ3/#hqju쁾~Þȡgi<NLBD在;uAQi!?ucc!w+%j!]v;ֱ%ܣK?+ŵ]Pm|wT-yӦajhs@!}v۟SaX~/Q:ȮGڢ5d%gpve8K-k: $3mN<0pnIxE
Gy^'~^`rj17c0r8sM;vq`\ޡo]O8LR̼Zg֩yH&Ζ䴦ve>_՛,@ʹEhW˗OK;ɲoa)< !ijc8N=
=;y>#lzAiu@0Os "GdP{K?5㴘I4$Fx&pTo'GmrhwƾcWM`ny3?|>4j[
lt}d
tC֤A	^%a&1@*A^0
;\;Y^eoaY
Oj4]O	R-
zØ.~KtqaZA\
1yvš`ZޟS#w^t-u|\nso76QKI!W9O=>MԚsBbwr@;I#38IYm}l5^OuZg /'dCQ<gPt'3
d>20Ґ
G6%_yg%aja\ŬJ:33	bspX{4c\h>U"Ԧe<o~ lJ
4reA@v/VOSkmr&BrJfSKMQto+>jfia#iXS%V{o1ٶU<\P	Ţt^Ӆ$~c>]G=[|!#O!BVavhl#6t؂{AsG,=w hڜeNv8a'(g?U{n1m!TwuW|{/@sU5ҾL?%#;ٲJ:+!t%.do96o?1O!g$Up. Џ)1kC*O#rsuytr;{p=h[}kBD* jsDA|9K:
OG	iTq#w&:j1ǖR*$a:yWj}>݋Oan3x))6ԡpeuf$=!#Ll5j4O*nu[s 	Tcgb9hMg[WGe6;xMrRH: 2!GrCAlumR&mEЛy`n(S(Uqɰ0"*n{x8Q8`Mr2DAb[TvnaF2ɒo
~bͿltxejE:zs	f{!SCy	AKcmgz"@2:mR\Y˵{ؓ[\	L9޲qZfaX
e,Ҡ>#uvwDww?4c4
yO(RTFTJ!*uT݆!?-vno:FT n;|51w=p=`UdEqry?9A#{2dm)4ɅSrIx~!T6qCS(mvnx>m6Ki|
/,/}6I
I:&3?2i;<D{#+Յ>CU߲HMAKskqwD<&־(gEv7|YE]5$Vz:!2S݅G5-{*[f(F{7b oK&Lqsۡˋ{yxɡĈCXsERۼ0O(K	UR~u=.x7xT̈́-AXX\K"g<s~O	'4f_i :
,쀝ցh
Y 7-_1{W|z'uon!$$ܝwP!Rֿ[fPGͮj gW<ɥrˀv
QuTt	@w_l~^ƿ(mZ6G0aqCg[,BʍūJt2EշW 5<۶4/Dw4*oSS[
\F9waٸ
ܳ b=T`9m|¦eM/6u  vzS1pb'*N¶"S~
cs8^5v8'M~BaM'9}J~Eݫ"{@wvo#Cſ=-5x4btu]Z]^iPzolEw"f7a7]Cia"<s-Y
wĘ>=+(X175tbRBpUesg\r3[$nS$/pQ@[ZF;_oφN^]$aa0W+Y-t78JTgKe3
Zfƃ}NP=-Q;i?H9X[BF8ċ*uGʰy.uSl
3׽H(DOdm ._@폥O9Ii5EjC?.
SιR{G

uFr((0e1=2&?$9$.iU֘7Ir@*˥?ފ?<
x:îiTfثXŏ[}][K)t |"&%P<>lܖ.pR]~M?neu|"z!
7ך
Ly*jZ%aLWE!uW.GIF{sy۟GP*?fh.n8?o̩o۬xbTMn=nLc!r*ӆY
RmH~P-e
;
 R*QZKD51Fi@AF@f/R ?c/Gf `t
ӥB-0ˑ)	i2YiV"K|OeFڗ~"q%|/AX%zNÉ!QvJhm]_٢TFl-DoӃFKs銆$f)W]T4oqw3Z)lsO_m[*8̝*)pi_?\4WmK/qABh6D`:c֩ӉhI1aN÷_dTǏ{&L	9-P|G1܈2p.մ:I0w~?\Hx9Ʌ	`]|7^^e!=oS ^cwh/l_c`s/Nryˊ+SZE>fBR%@\`;ǚdxcDk!`ҁy=}4=d !@Ƞ@lkz@Ñ[* /NK^ĺ}e;Wn(xؒT4פ0)}EDmq0-̟GVȒū=q<\#ȵqEOF?4\,_ev;
5Nxo75lb^K_1 xυ,Hbg%*ygobo`!\=YKP8DRKhR;ښ`3MK<CN[xxuѸ$}f&Q.H<
waw*lvU,o {<)#5m#m\	g\RQ-{C[+H
ddtM;Z0\΂8曽@E)Xi/ v;OXyd:XÂ w-OR{<y+RyxUaT*+?qEpc/w->D;oƽ4xA3ĤYfD{Ru{l^(Eq@9a
~]oғ\e*4H),
a :FmjuwEF'QQՓݲ{kFɶSQj@>	M˟̾cR3y;u=)ѡjr;;Nm`-A\rg_ԫ{#T0n"m0$ Zv#<"]GX$\?oF
XI;EM6nU<T
W~v=i2'{7=`wfs ެTO|$a}H$x#{?~ŷdMjT:mk>z)a2:/3#-E>ue~2ي!1ϪD9iĞbݤ4@bP!o'/IAT~B'=VO:ҒGCOlQ)6BQ__b}3w(:G=drEJ$|wEn	9ks1J"|F}#j=:^1t
yhqk,%ЪB%6N0V}:O@&kV
02rmACXyGtl>-.;N!uY$"Q|6!Cr "?ٳw=oR>v$l ˱E>LKb7OKMho?n:?/	rK7mU=sE^ލSObm=8DUo(.Cgt@{W|:= l)5/ /$Er˰lщx*:,B]x+w}wagڹݜh@5/
=Ki9tK\	n7n(s_'v>+#N5diLq Ӏtr
=D͐b$Nb;(*E݂7;l?ӛkHrc  Ha!UԼj&<׎ ![Bx{{_kTZM$D+=/΅"xSzt-S'& vvr=^OxibX6s&uK? q=~H-x^Mo/$
a4vuB;
L5D&"[#b&g!/On.>AY>dAHZݝ3^րS~Q%0Ks6^>2R`=n>$)>9m]ChQXB+S^oX'&.rK1T2*1dYk*uyсT@ȗ&/_j\nW CSJW.!&B{ŞnA>	O{@pBȮaٲT#ʯ8W
;r] [Sﺬν4lC"bK7&/d<
펵C$TG}#QI}=I-9Խ]wq0۴P\ײo߷ɋ}(C4O`tJEpS%RsLcC&RuyW09tICAt@Fwbx*O9ܙL҄菥'x'	FI`c%:x .D{95 (7kUBd
|_,#G-5*pc.Llԝ%j|;}~a:ҫGҧHٞ]HKHWQ]D`	uV1ɠ<jگTMw׷_igQv>'0oXv+Ǟ_BmCOҧY`L]n[ǐ]"\ONBߙ!LRm .7$eMw9*~X=wBtMszc
G̃}+;&4ܸSgP'iXxo
``C@.w;Tx^.`[ݲAGƒ<l<cF_kWݨ`dbM3B-ٮzU
y32#"aŦeC9Qt3RڪbU{ m%ǚ7'ftۘ*1mS2QI~w<xz6m:^z6NѡR )$_*r\xsl}@,j|Q*R]!؝L~jk3FPnbn\r9X~ACEsXv16qăaM (8NDs
}Y4#)^͡ZzΫڲL
L!l 'FjԦ]׿fSuXprBCZ"4um}o?c% -S6^zJz'/7Db	ںUgU)eHdȶ kjX;VE(.k,r{VFs-|E:qC[{H9[T	n$8o:
ؓwʢdxrQĭ4Z<;jKa~y@@f7jF!Ѿ0"p (iq_-?8LTU=ꉦ"q+
8g܊78P>O`
f#%BznXtC[Dfۻ"߶C{ /JY{ϙF炅t$'3\_4cnT7 ]a6SьG_!p6A|c2nmkdQ+_ou)׹MYR[nI]ĕ0,Q{XP~u<+%.rӷiU,]+ENAsn02h[~=bkeEy )(ʱ!Cn*QWq*?>?v_F.FX<U3:ۥ.y-J+bcTqt IP3$"OlE}NÜY̯9oaݻIJ8=Nt甾U-}.EAccKAU񗭬h=4jL!mn3ꀳ2+.ײ?WӑЎ-DTGvm
4F//UHiBU  $0O^:̷w<twS Le]_4DI~T
:N
aq}cgb	l~~:|}*;ϸNsq%&AouQZ.[|v<Fz>+ҙO Ԉnj$8`͒(L/t<M	W[ܾ`w-ف-}FŰpJHp	P<{̰MRz{
Yl;~mO~ӏ>5{G,QrΝF"d+gwlvUώah>*JD(!\g'}Ͼ	sj.wqf;tC 1@GTn罃l	r0QPɒ8C&9_O܅'!Iq9-_	+?Up<A`FM)pm6R 3<GFI(RɭԹGC|IwJHnF~<<:cN&f@jx[H$MQ_<{މĕCG[.2uԛ3-+^:0/	f!uui/˻=3QW[azq1/2y5ocP~ټw괝87(>-s\cп$ jePG2
h3@L;J£͗_6m-zg*T
!AYDa:@ht߰i'- $:i0~az@[Yq'T5AFBd 7 *|]>&Y?g%gIʂ㖯Kri&!n'Se!F'J/%9_[F;14w:m`VN_>oAC;<|ju-g*|q6S1ab6_%2&ee"އݞa]4ԼoZwn{<[dLio3nhav0o?%sX[5Wծpj@\>5_'1wEJV熭&(Hxw:\UlH)	YJ83zFoCE	lOVl/ݞ|PWU
8
:`{}鑴b(*5`2|:Qz"qo'5w g/g}ײxYgxkI*ك9S:PKTnw7f5-GعNFyf^
{/u6 |N+<IEş_?ռ]5O\q'pȔdlȘ8Fۻt營˱Tqi7)b6LoAm_!{ϋjhӏpϺP֙K1HIBTĠ AS'%D-ۥKVqBΧ70ߌ	+Ǒ<Yc,8]?ci(X.٣]Ow	'	G :Bn{)~]|lCκY[9FI?
T0aXviWG߸MWҽ0bVIT 8`Me$~oz6ʘP9eAe1Ux8`>7f'q wGqnZi&H!{韕ղ,fǑO㤄L	( #n7re1dtÓ?^\nO֍OşleM5PC} .v;UjTip\i0Le'iD9ˀie>U?K\E9BSPK@: # PK  D:U               META-INF/BC2048KE.SF}YZzWfyi1'/Κjnik3+֊E<q~ț;Nx)u|ƱσiC䕸.gikf	ǝ=-)u!nN,FzP!'S@J-	S7-arC>=eOp	a,cBS?\32m}?K 	ލ2[Xe:gd̒Q1}{#'RҎ
XO4@x M(YbN	`JKƞC?uww.Trτ/+p7<{[7AzmH
:i;2aG]{q5"?Y݋uyITU*Za#Ǧ_ViVz$tp]{2yѯQΧA hvubG)ř_2V}_Y,n(Bvؐ7162;H;G(|.YP:9%͸ػjsljN<qEnszKo'0l_}8	JR%{V8>d'/Q<&U,40(/{M{$v.ަbpaPj3ҥG&] ђק$E6ӇBt:^hxJT+%	-f	(?jqh2AX%'/ذ"ˈ@=UȟOhSɈuhzITgA]oкSKheуE'z1g0CmR&`[19Baʸ{2gQ|u,g|I$q;okDL0"2F.]Մڢa7u0KD+ :|iec\spZy[ZL%ؿV@<V
ɥXqV]}b mrV/HM
lkL1WkhjS1Q"M_3AOkևOTBH۬>ڌicFaTg$l
[ƝCNT%v橫yWrG#YjޏZ&K$#-nH\z
*a#	X,Cp'gublT7d~JdK**u**@;7׎*aE,e.y -SҔXy?pb1c-;3`5HlB_8 dJ0GޭZ،nbǦ+8R}:tsAiM6<m9yӯ=h:8hnKlyU>ڶV.`μ	ŜyrN5_pKeśy4a'Brh+>}
?\0=)P*POYQ;{"}Nj3s/yZ(v`b@`*{ch~UN҇OPE|Y528q0o٠VaOj1f+ڄ֦87sBLc^?+nV랬
pDqRTBunRV_'c~AT_C/\2;IqƮNѡV+h^#%Jjx>Y"n-Aw /bܞy_ɣǷH-I|ÅIOͳyZŖ'@C 8ǚ6oIȷL@|ޜ=6 I{Nͪ06kl=|nu>7Л8e(Bc3vhQƼa.Y&$K\jD6˽x;bțR]k[ҢF?8N!1`VQp<Sc׹A,Rr{v Zrߟ(~&3`#
WiDGf^ 
>e2ہ ?XV	_T֏fjٯ|WU\~X"^N1ߞ3/wuκTk v|}[+ab-C_ܬ`T!^Q
8okAm5~@]w#~^$W:<rR%@ z|,8g
(&t]
Ϙ]wO?8 B hBkX"#2Ӎxv%%cf˙/x}":
ZĂu<I9dtlS	08E(8&|JMrXYjI/_<tIV5sc2zN*؅M
Eч˻VCONIR\cN2KK^&dZaxV&0~8yq{뎎$?V6eUB'׳V,$@d:$m#$Pr-z`V]YS,H̕N/IǾVLԀQ6d!^S>L:ƝcSk~bsʕTJP
[\!?C u=^t)!e|3mj ujUӎ{94CN(r5344 z<Ab<Umr6W04Lώ@tf'=}Ym?7fjߖM	Fy)*%mmDKX3׌npC 	
	8B}P&`2MGwDVJty}*!ɡ	\stbaٛ?T<yF4=ïA#+72Pqw8GliY&fsGԊLILBY'H&X0XIlL9Fߛ(]~5=fd,Gh'
CK^yXKpwj_:<s?kCU@ipDEan!PkrUL?_'puNH֌*P5)~2QUއ¥h4\כmA"p)57ɃY#r5jepǯ_+n|So4f7bq|~"qh5H(M6uR	=9܄Ym𖑨$'n-kKy񱌫~4ʚ!K<E׎쑍̉1
9%	F%zתIO-uM#xt; w^<Hක-xZׁD_R^aEݏ+K;s|{t-
QR0QSbO1ό=|1~UСwo A>L\eErvZ8Bl_Qa2:QᩗmôF<I
  sn$<5-EK0al'5XQmB5Jm@ЧktL,x͍iBQl&]U#\Ղ>wO/ˤ&,lU4lJH%v؛6mS\ݮ5O/%õD!䠘G8WUr	f<ǁpEaQ҅ 6'Z,󓋻\xt8Ϟ'	}O(݊޶H!S@
Bڛzfcx0>HY}u<.^%L
Ju
O⦂~KX'SÿG{vZYje1+ri? \.`f\	dOAo}֚qnop6skzERv"9vRDBu8ZY ]-32غaU+ #븏sR`@IA	S
5L۟1[-Say62D#:$m370s&PXպ`p<&os{aE@Vv]+PfwBCoC8E=BtR4@:F$uUeu0?o_uq"1(p6'oo!N}˖C Њ߬xNF?u*TAM.irI9">H^x'~a=_&Cᷨ~<(aVXc|5̬朸J2fEcs
-Cpi@
/]YQ*(i"6tCad ylѓx"`94;GI^'%usT<D:	y;q$&%{DB/srΣ4Cr
heCέI1\dJeYKg$jYX+!׭_ЅfFb׍AR!ߓoW	x|zKq|tv2|lQQux^H))/1Z=IgLP2OsTKzB%kyfZ^7Hv5z<̌HخDK!c-?ZBe !_<hU[ƽVY[.I$+:cd-˶|p?-rx|&Ey.g<)ۜRfϔS*tǄuP(zOGC*n('L/s
rގה%[ޱ
ota5crwe-<!
aly2?)(h;s<~c85JUZb۩P$1<_
^m>#9㺥"G+޺lܙx@ps1택oѧrJ^7@aLm~13W+p൐rj0NrzWk,ITU//<d"n@M؈QZ#n8@jnO{lOńw%5e.ݖ>lbmˑVoO|v_tvk8dǝ9(<so1Ww/uXwX{)o8VH2<kXcQQ}=팱.I,V^ۤ[,gKt8ۛOfؿ8~hM;4n")R(+e# r*z2y6v#eALǾQ
G{
g]ڐK0/>ʱHX>Fk~;kc٣67C^q}}٫;=;;Raow}\YxC_KQc w	ܶ
$=C9rے/'8fDm^.(}7k'
]%2@U 3sZ_ll  c)g̸:sS<2Ґ v|v{P$|[6;% cωkJqRA Zl(S װ{y(Rxgp[44/FW:	wj=.4eg?$gGJ4M{T.Ny~D	)c=]G*HT$'Q1gKmGҫ6Q5j,d,u}CLdb8'˒SɩBe-<jZ*ɳ,u}
 f@af%&?!*Vti_RwfuT㬡A:D~qg`.b`L﫿qO)#߼]1ZhSS{i#X˙Ym7-<uwZ4{tO"}RS=UΞ\ ly8""+}!ԫh؝TwS>o[<	ٰQ8f_,zY,fzw68h[3Uka5 ,d]rZ,ThU87̛AK>=,_|t(C>;\ΓFHPuk=4lLl?rH:R9.
ftAA5Xj;14S3WI걅Ri6`
j8Xr~e.ʞ.KRwPj3.<X]v]ν'-pdw126J
?;_z?zpW,vws>e5a&}9է0H{ATlt?Vd{POeX95I6S_#oS_tةzȆҫ%ZN [D)m#'̲
=uu$4h1Oi v􈐘Fh͊oAÝc<i2jpf:!KC8Kiw&vM_~yMgu<|-1jm2M9a&Q rQnw6ʿrTDX>^(7MnHR.37oub}RgiBrPgS&D
*Y[s	Z&̏B|av\<
91m92MrI%&Fy^h*g0$7G#K:WpSܣ|
b8O_T@~5@QsA|-DftAH{^~S~YqҸĎ9`&8c,SRdI~}4Þ{nw={#N!?l{ۋ|n(v7!uJq vYMJˁs|gtEi*|8#\sHIL61õ.*JEnD*}gA	-6܏CS>F
&ܛD>le:EepS<U|E4<-z|ϘB*+	hwd'K֟9v7vwFϛ![dj?eqa(meV|6bo0EkjxٓF	 NfUa`Ӓ,P|F-˅yD"rX"Ǽ 99òZR_֤My!DEJ)
E)fwr
N7/`]뚝YzjT,PRlC㔡nz+wBc)'!QvI6BEUE(*=W@Ag1!K%Ѯ&P`08Rce4xY?CZAϒ' vWimM
0¶Hп],o*٣DUOjj?"	QJ&
>w0z| wy2pNfSFP^~vJ9b?t_ˊ^_o"_x6CfA#\-1c*Et^ O4Ig?(y#f$Ϻ
a|j \`o)'ͫx T<&s rSvUS:r#bbӸ[,c] [P;%%oe9NOAch-`]5yܧ_ǹWA^=oJGJU[p+<_}5#c]QIQX
3d^I/)!R*	A()<7^<7vB9*p[kdigIw0N/}O.X0zJM.Ru۰K>]O<WY3W'ρE .
]Ҿ. ,0RC=47׌gCH"#OHO.rUWKX86qaU%#0^|jt{'t
o݊]4n#Upv{oN{ Rl?HZCPP(꯶*nB"0PH|ύz|'S݉
#\dܻ*WNZЂrD(\cӬ[CجrqӯpxMѹ͠.,,6t:S=T z5`\?LH
#ŐA3dqBiRhZ'9~ҌX['3e[x5A"A87)~Ȱxc#W|{m5;]ggWZSIh2]z,N`K~XqnyJ,m4_NY)ὁDM n؆Niݝ?\Uݓsw#tOmdJ,H"GG|R	Hf
7ww6~o~5Dnޯ髇Ȝfsn.tA1U?nwoI<ܣTڰ<q54Df{ZcnϜdFo/``.ӝdQs˥νUe"g5I"ɽ)װgqt݈ͬ:[.вф
JSZm͈pā	;ҭ<tა9G YՆ~8 "^C.bFN`Dmtp>IJINNF~
G!?2>6Fh?yپlAԉù*%@Nz)򶊼E_<67uiFIz}QDEoxҽ`ĵߗ3m\PA=zN\V9|L`pl5xfSÿh(>[2
]atӧp
]m-|vi3G2V^-?fkk/Pbllt q薇wPѱ0^24Tg:owG|x
ڦrۑG
oi=F-bԪ9JLPfIHX%;CAwm=CLœxAtlu]f>3F4  %v#釪EF&MfFLa_l}N@**N8gGE5tܒې2k*cS~L陞FOҐ()%A*,-pQ؈I@+5BxHlT`5=o1;pK6'ga>C|?(}~M}|;_`
Zf]#K1l82!KkBt+zl>HƽRXYe)?Sk6((@:u;Vl6Znv,+\J"퀞,=3>&k=% ܩoRµXbAPFK~0,JnIQ1(r+ɳI7m$ !^}iNӮ⭴0R!zi$Khi{FI8#vq';f5ɞ3/qWei>YYǃ[Z]dSe&-U|%TsG`EbmPߛS/z.iÉƺ=
mf̳U5j47x~hgH8at{0	f)*y3;,70sj_˳QYQΣq&^@z)p|*;FabH4(>OFUG(6{(0<
^wKf+(#+bmӰ*|b"^m{=H4e׏e1Ӯ]?:)צ|)~9[j3*/Da
.h!'r&~*L7jtfom
/e>b~z/_M藌qxO9Őm
$;zFyJ3GiZTLg2
.I?ͼ#qRB9`	ۛG#æGRӐt`
cY	OtJm	@7P8B^DV2I
vK,)_{f	8!M+-ĳ8}p,}eK걟b/TY7ql1<%IXYm:G)FYlM2}3\ݛE\rhgb,s'DF)n&XDC5ދ'JV!&*;	Y@4Rm]kȕv.dv*Oy]S.xM.]<zYFv,SD|9:x^6r~Gj?n8 vEssmy}%9FJ
uT&*ƃ[]X^7ZcRD7igD&ϾO:aGv<E2ݬgxl &ςשf1=1W3^GJ10Y$eLWKaj<,VC/=NN_[E7V|8&9q/Տ?+h2fxu Nx{TqZPE|qy2Lg3/T{Slŀ
BĒ12DgRGܼâMVm%D.yH4ndxM~#S2Gg7b
ۥ	8t
24G r.'WuU{P_*rǿ
#IX@Y`v6W*W%a!I}N5mqu+ѣ|F>7_q
`!5~^% Ef9_7r^9qsᨼ鵝Ehj^n=râ$ZEk;7e0cRSubRux^{){hddǓ+Iv< ,%
g9cJ|2'-B*2	dYun{1qSݱeUJ>h[異<8UЮEzq{M,(5>*1u8=l;W{IUqaf+<I#	E*Dc;qP+|hnE)xO~-AGܺxMԇ{:+}#1
@jq7u8ʐYL>6Id|OU	?4Ѫr*	jf?]F52> zjLJ1j=mo]0 V:OC5v˝vi
/D'^(FĵqggރYt_ :v$J%9o7y43"0l\hc5]ZYz[K(Li=X i4k+2N_&ohwv-"	{VntbkNNt3?ƈ>ݣm z(DH?,ڭzFֶLa̘̯{?q:o&PsŰPq!%erXno{ߧe$rs O5ζ$K@O-|nkTAk0o]$
Ua}0\:
xo#3:Rbbݔ77LV$kհ_<W, -ns!mRn݈[#mEc;Rcܫyԑ"M')ͩȐ&Ӈo.~}{AZCs+Er:aaz$K"U܉g`7]99ZiV!9o/>A.fg],jl]2]n{j/N/NՂj.g>Ȕ	bW((qm	0%)l.#eݘ;[gcुZ̓~fkn)ɳV}H:p
:!i@\G
}LQ{̷~6
>"QD| vtk{1A501ӗ)_n>vRKJ5ٝLӦN7n;
F?_Ro zysXfNY'"7G+߮:@yUTbg"<oziN7GQpʂR3OzХ؎ND&h}@|"}.{c^۴17zz7Hh<!2O7]P`omm-N=.7m{p>v+Ѐ;K u"/~$]5qg/YAٳ#=.5 PlzQ}!f%?mη _g	orFͥݝWBfgBu:=qw昗gdLɈ
!x:alA!sv7ye츰߻IwW}je'ݜK
0d
rOћw{?(~oqX[N
m_܁dv+%r,XБG?\x}1Jm%hXq ͈OѦaRqz3ę6ʕN=Ϯ vet <5}x[.	Xm:n9rZ0uNUF=zO[ZwoN|exnX@*vThDl$"g[Hپx!Pېng:8$fcoDco5ŭ|~;RDO?1wo)B
񯺽p:eޮ*H^{&/hy*ir㫛%&yhbg47I~O;%i6\461$/7;GAӎe_\!*&;lzcc:n.'O4<Fp9q0Zlmw''x?Cs;%gW@kQqHOT5܇~~W2Ƣ<f{rg.[|y #D:)H#c\<Z?Y'k'wqBrv^ٞ~9T&?	l$]>byB9[x5>Tp6/$~sĜS~[:f}NMߞ=_C-&Λu<BĸZϙ)xS#쇏a%#`nXx=/GWlw|h˯C9J9Cnܘġ:ekh3\
]m=_ccFv{vA'lr`Q?[{A	:Rǆ[1ϯ5yF:Ci,X,p@aE2Ajj,>OMi:nDjGκ|IGB3@Rd,7 @]_ <Pn;2sCF7'2bKLӦ)?HlAR6|Ƥ_t
7Tz_gE{k[Z7NT?P$7x`znhBf!_3G|Ar-0C\ּm7Όì՝;R&?h<g9Y8=%@icqK^`!N`K&?3o&f]"M:#|#GاْNߨP/j=#]I!%"#,A,"w7XdͣZ-C9Lf99f{,V*Flx}3ƑP2n^mց[/=ԺO*eafk{m_y? }{tn(H=z}7//EeE)=y*-Is&7s&NWZBڇggϹ9~#IJ7j<x5p6 +oW;l]Ĭ,'҇,$Wuxj<tiXȞ	e״q݇d0&qADotPW|rcr6ħZ<cޖo}q@&&u첷R:G#B7n!c/n0
+кWۦϓy"Md03Y8
6URܒy -su_+oV\J;,!- 2
\%(U{|vm0#(sy̖weKQ;8GW'koM$.Psص0@6fa(~;u6ҩN@P^Zi{Wi]0cJ}G㙥.{\[ms0mr5)C	l88aziSsK$Cm>_h@DFAcm9oY= vޚ><c{+d|FzZ_	Ejc~vgXu~97I<!u%q]vPtޖ-Jf3C~%e"\zHjM|H^!!7WѮKg~ۃvxO0=ać9-g?F|>I
1רrV(q=̙5xJAݪ󑂂r'[,sѩ`fMUd.[YB_X/S;kq[B9[!O+` Ko`^4ƌ7v9@ei>`-)MsŎͷFEᕠj}A_]y)Eۣ*8Z}91$*F-)<yU>^=M1M-xMy
E{Mh69R<M|s_ߧ=@60y2a(4*TCW'%%򳉄a`66Ѱߢm	i{$vUmB4	e/˚pl1ert*ImiaMvdL)0}Ex.	JWFq\#~ņ8=kUA[/^n96@ kJȽ_#C*^!1%aR1-Ne4MKN70=F1698\/2qꕫ(+@oNmZoc쫽
:\.rp7sr*"8o\P)%\]ktƘ	2.ӳhxr}[ko̯Yxqh]Lu5u۞N6yZOyl뺱?$A>Ղϻv 1[_#E MN5&˟E!Dq:.?w	ޟ.y1Rڙ{Ulq 6=I<!.g	JF!ځBC_Yrp]/LO{-mm/:$%,79'IO$uajWm͆9OF*zn1 @t k!C z˞ F%b>&@>-޳3N?yvLW؅.XqT_
4	7P-_3v) yZs"_\h<Ҩ7u)/Ѯzid~0g"#]r}!T&n<mFCv"w{ٕbG
<z:>yk>#>vQm\v8cXDQWJmi(#[~[#nG,#lNjC7HsFw#usWKŐ<Ng`LhKK[dfW>koMZyBF{ZbJt5Y\ FjLqjtQ~k4mE&)O^NER֋
lI&f|hd	`pS
g,89#;s_E8i_F؜?	?掘T:D4U4"i-ۍrNy՜#8zOw	XC3RDCn1a1K*Ai&SP5ۓ9d2Z
F
pyd7W/5.|YjEi*͉J$s
8;#vO(n}+p gpYW
˺.J5C`ۧis0Ob/pYb;ECj#njJh3
;| _Y}^]*R]JPT
?hܕgqkt ?u-!Li
VX;s`u[*G= -
C-ߤo;DaxV*1,4Xa<]v/+E\5ڲۤ;VWړO^v	;2y#n?8'C?[w4;\O^AGR5`&&45j{),]b/JB"!>HFfÔ'?̴nr_[r5o+΄6[N 7wlBb(=Ӗ1`_M%N`y`IOu+];SS~TDk m.QwFЂnΌj({_V~A"qxwޫ,Gt7$=AF8f%rGSl 8xkc85oSJ}HaiRȤR%Gc>-L1uNJ.@^84Z\&;h9 P&̜*N"[)|XFWhKnlfx5;9cztDlmQHc\,vnyat:[Ķ1fZʈih}+ncF5=oYޟn|6Ɵ9b<xsV]߇9b6վ|{!=$5^ɩT
\;tdP[X
dyNыP_8-/t	#約}m1 c]= 	尳äۏj~5´y43yeAΞ-$,]VzߧaLn 2	/Z .B(3.G֊_>,YƎwaS=;L"腔<O}a+ĚQ@NPXF2m8x?&wGQ݀RȦY*hpJ` E\zߢՔ!|2&b-R}ʐ9	S:1nt^.5(~ ])iVC%5%rߙT6y3P"#>,E0O3biχÕoXW<Wb@\]	Ǿ"{F4̲f:;ISu.1=&__g/㜼t2H@=&(9XyG3udJ}10=Njd@ҙY=ӭlwYPn5d^:&ř;RpT{-`;,T*G-1$no%<jmhY㋆NF;(^]*Tk}.HWŇ
Y׬?/=	e*0St).cr
Ni.a7KCq|ƐR&@m-^;mƄ+0~?=Y=?T#Eg5'[Zdb
NeЋ3Y
I?_"l6,[,BJ?
bK=Tjtb`v.+^?sg
5`X^XE"'8"@uWw<	HLViPJ6"=UQ	Ȓc}ijCCGyTwq+L_7sNn+fXJsezb$dp;O<Wn9O6Q7qo|H
7ChvrE%2g"rn#vreim˹ށOp~lm&s,p{VP"auO4ȋg+v6_#[.޶a5E(	泖⿺v|ѹp6"	vD4J0J]JM}LuQg;ه{Q]Z<G\U|:&\ٚ,ȹ	渒2SIq4Ӿ&:؉a66:udk_+{%|W].3"УbCۄ(Q	}Y
/a(=}{\`WZQ$|T#[U{h(o,uh\7158#'n!nTPcnRSsa^`01˽@n2\#cXө##'u=e :67]Pn8;53o?$ޟZ@@SXpoXզ2_hΝ5L8yojX,t3~[puKo^C˿.wXW/5ಊer9J6[6'^+(Z>vwjًw1dOTo'|M-V`ewY}YhMY=/wIA>@rϋy-o_.tkdV[yOjv)OQ]b"}Mǒjm67EiҴWoyć99PJn농4Pa q{(Vg4M{h*_H)׃v$XGi;{=n![x[l;gOdzJdpibʩfTw_n=e߼8AV6 )HYWXR)DE]	^nkٌ9nS^IR7ig9n*aDBgIĿbzl_1`a:}<!2*^+cV5e~mck#doBH=|N6['7ת!Ǌ<Ɗ?[]Yn:CPm*$ߡ$l#ſ)4.X'wѺduu}=KyaFT<SړV_ēK+Qr6َ-4/x׳h޲1BT~}2yZa>B&=d<^0>,Y}eLߒI/i9_ϷhBZ~`)*#gfgsSye_NUw*3!1{`j>Cae5z}HQZ5}ɩG}q86i톎W:y(*\4YTYGbq ~`yY@YBLS:a`ש#S܏#dU]2#%S|Eb=MaV}C^/nTYujW'jU*yvk~߿GcN\ =Ĝ($6 @LqOK3}Ϭ9e5? 8tG3q!װu0bϜXeh<\JP_eMhFmabd ~|/{
ɄJ5pLXLFnjw!~<}zj
t铓-5&mm쩎b"R/:0c|=}9
 tqz[:rOR=u|P|< 0
c,mS\0J=[ CPdz~A=՗wU:+*]#l5mu<1m&Y㓨vX"}x<BN(pJȴ58	d)
?}<s[t${ј}/9M8WhKfIwQCs>Fq @gK:/f|68ZJ鑹v2 VP98lrߤLyI
zj˴3Z!jVI=[PfYGS1<*N^ۃ<WF=ӫ6d#q8Sn] -v4pQNfoDL"~g $2C{Zԗ៕[=WsgJPɖ_ۓLJ9y*'Zl
>NaͩЎψ|4rD%4iяP6->$y"X_WZhBSf5uCSݕ4>m bY/ǽ~ܒcOC9ңqdt] $%Mu*-Pѵ8rK<WQW]asyH8{p&"&23)ũz+thdrVY@`gȻcW~NCMG
ՖֺPKH.IfvKkooW_RxsG/1`S%T痸dbĤtp\LV^_?ġXqH@p4NYMI><`?HaҞRǕ[[-Q"n"\7xk}?h
K߾~|{c?{PHW9.Oˮ-ֶOSήAYb$|:\]#GHf"ẕx8wܬ%Ao?羚ڄN
q^ȴvKA9akp04ZE@_Lx<DRޮ?n݅יޘݒ{zXl%?Hf%k1OK
kSmG>pXt	2rۤ0Rڙ!BU	v@^V2ǟ7}H>zOSf,
Jp+!߅ZU$-r3N#9x'y`S=kM"F>*ۂs:OAS^AۆNqs,̭
N+ϋQG`0Bb%Y BJr)+gH.UG }܀]IsnT0`6.=\z[پ'X࿪?7:DS^D0'M,KI2b|Ij{<
 rkj4܄R s{(3
|T3wёbx9a:Â<mZKODDgtIRUDVf*SjY@yICZkZxJ<{&7r
nY*lb
em\1*דRw{ߒg
';8\YřŮ-:|DqԗOQ[|0Vȅ:y<
["2eyWS-IAMIN]¢6#-cT3E7\zeU2ivX`*a8҂y/9gش/b)H0_e1jYVKhh](hb2 )g߼;~/C29G0Wg	P)t2wBŝX_i
̻FVb8BϽF̈{Uþu	;HH7/]*Uk?r<QgԌ.+^f|o)>mn"a^IuQݡdNn"5;#D
޽}>>5ΔHM1QO/BC㳅o(f<ݥln-+`bjE
}fݵ4tmLV>^N8"k&AwX4\:z8L;*w]8蘛vm]
R0D26by:LAd8	pעXcu|qVZS5ғLb80s ȎOMqo;cMEJA΅־TczDⳤdh~JfH &pdHk P0Td@ڧ/k[C@	Y3_y"b
ˠ ZҤTfk/&QqRBDür_s`I':+lW.rӷ,}Fg	g<t(hc
{J,۾ղY訨p\ ;Fd"`!YB\g^VFޚn9^EZs,C)XwB$H<2-_r/E/'p4A˙9wm(1+?,zL~rL*(ztAhhXω	(5ڌ4ho)V U_a%Gu[zpqwUa>
;mU?혹Nl5mܪ܉tyG r5z,t{~b[?{G؀0P,}1#}@	jJ .)beSjS"p\4/m&R2ỹ6|=my{o~r:M۳,jB_'_q00C)t6.t';KЬ4N%y$[.@/O(4*/7po[13hHRr˟	
"`#APC`msV`@q)ĥ
	{{MGe%j}I1Pе ]^=gZ`??
<ͦ?VPq'Sx	p=Ae9Fti0~ _-
8Ꚅ3B;@8(l&D144Gkpvkd~_ޡYSF
Bm qtf}NYoں%ur&|~FTEw'=nҬi,[h #|8˿:GZ9F$)jZ8k ֋M-A~!fe>n%L>Pavr^ɰ~
S|&Ѵ>)QS_((f菉+
bυą޴tO\oP廉~KEK+czV-vVں<ln=ͼ)c%a>Vąb[+̒km[YXx8S";Ji"&
c
<Z,rPڭ6z 
TW|urB$zC_#LN߿1ʕmbYHfˉ8	a	' 3$2ꭘGlF-HD]$1H:t&q"@OxG(PY`{ЭOb[٣Z<slV0
Õ2iPrrmkj=?~Jh^_nsT^{jarX9ۺS2vUS||hJjv]	&ꦠJ>mꨃe2_ƜOyΨ@ݛ"mxVIAs?~6͕X
Hɾ&{9kO9[6˼+|E&KEV)J9u\z&1Qrޗ<b!0pa0af߫2no|-,$;{u/攗mrE"XGuwcܸF_V~Ko&wJ 3ȉ~+xy%s&V"G}[;m@nrL<
,"Κۖ l
<Ў7?Lɱ{nc8':PcotY.:fDՉ>->9y 6z\5(4M֦8N[`opI='J=l#[njd`2-7_D@0g`8Q^D[ C	v)[ ۀT1cZAmJ(920/6w	=]&IE!AD_"3h͚O,NT
yuQ	~iS."3LqS݌S&P׏>pM6t2׊){	{!?=
~*(Êc4zR쒚qҬCnGQ=јپ`BQBk9HUۈ0C3c8{*ǮS'k|SMscT9!hzwdŤfaD[&&$gہwy,3oE')ca	.!$F@ Z/R)C|:(/1T$
TV?-u-Lc?1͇ҋ`,S
%Ud:
g? xm9z׳*s\jGҸ:`ƄM%wӍPw*6VX~9@L;
[ɻ,6e+-/hv[=qnj{G@젵W˃5磽r͗sn?\m"?N:Nz)JK`uoԆ13_9XSdQdՑ$+υ;]c`9U׷XMni?]UFx8lbcʆm(:	3J
ņX:AI_>~>۾w)/9:tTWe'1oU*
{OW[r޺FqaX^w
38_&	<؋!Y0.T
*K@O
6[ڰͰ=U\TGKjG:
E]J4K:axv0(u޸owܓ;!\F</pZ-S%kӉ@><	;(xxΆli[ !Q}?!\%W:?kfǼQ.@(U&0<	y=~ap։տΏ@@KeN&#kpJ|(yO֖9z8Z/o]7v$2!8Ԭ}.TJ2GzkXLϜuw롵UM<CzBmtY)D"s9[DfuN=S^0 WE)eƟ] Z؋Xw'z{7zeA^5PiqtWx~=nOXnu<d7eLLO=s	vGa+}!<uT J6`'i}:18>ߍ=;~M|Xvwмc+n(p"c||PḎi,tn	KٝTmr`⧧jlpd
[<,6ԗL`KAm/}j|`L Ñh7bɘ%&NWjRu"|jj:+!xiiòekT5+Sx@:	uذ 5$`?5(S6Kw	n%.TdS i#ˍAeH+ ~Ln~խ
b##kӧ&jA^>wy;tY>>e-x۠%		mBu|=*pVw
6'Im.DxhEά	#	o5*Q8.Č|`_#C$ca̍p_7vW~k8]i	;?"pSmrdљl퀲nH X[ӧ_ۗ0o~jK=8|QnJ\-H4͊׀Q?wQ5mx"a>۞	Q[W`k"sJ=\|>-1g=RK:yM%HLl\p,x
sՃt5`}ckr=q(驎Sfg|JJ~qMe9˴gQ/Ȼlx}-_fx3TVؖ/	?8ҭ]\suʺaփSЖ\nѓa.^_~/x*ES}JZ1z\Jmݖ{zަ֬dR\&likWU1@W$p+$7!|16k0U-SrH$Ϻ<sGY3><j:ŷA'aVԁ]suS>nHiqoޯ<qI	߄uP_3	eF5!fnEIo~*AD,V"F

5Qzɕ#!8}SSOչ5e:4n͝{>Q>š;GoOdAĖOzwopIGң´[Ԭa#(Ж	f%M!tK֞+bVˤNHQ?m5%~RA,udQ"$.c15(^22;|lJëڵۺ{W+[VIsm&of 2s\*ЦC"n3?=f<C_G<]$$9zD@31xz>[.jSfR(-ۇ6JӅ̃SQ
4pj6:g+
A:8R-YL5D'࢕;2Ph]άv i`N6A˶wG
R
rJ WT-Wa@JW	56b`G_
ԃ<7I֋Ig~QK(:[3H<nluM12ox!flxRvJ۬ v tA|meרTWB{0+"&͆aS<?79T55|zB<D[r#.ړGWnzX?ml., Pr 5E¸P}R܆[TE׋yt2#s2VW]deu	r'h)kzL(-Ȣ`QLoA7EJ ?wIGoOl>-i *eYQC XފL氽t_޲io2hv%IZza	O%;s->04G6>/gL'085̊w-#Wt.8z}T9'eߎ^8S>g17jӹvkwD ,,䫠6֔>e3]}"~#(hd붾d*NP8}MCmv޷ 5[+
az<Jdb%UNƀ0_f4?b-"XB
,xs6CA}ʯs/EJ&mzǘjևelzs6֝=.kLf_tYMWa;Mtlqܳ	4(f[xxA "&a^ء
m#=NN/ak,uIv]Grt6XI޲ciՔ0=/ᷦgA]P+=}/1)p삙l6[\>E݇wYA^hKk%J.zL<e0j~|8=X>d	, 4`' : Zdv/+UޕJs ]Q$ȦDJ7n
WLٗ93s^	x=9ޖaVŵUgBPCiyʓ^X'=LO0Gq@zBǦMf?gkpQ|q`^xV'Aa%8PO8R\ט$W
>ev%fW"?e׆lA_
xd'q-٣Å0)'a<-2v>_sLguSؽfIp]|2ΈuwPY*mj-,h].r𾻽v(guῠE~&e-9Maj=9}l~QPM!@!tuOc:Pֻ/lc&)wR0  zJw]ywCM-<\t`@ClMc`#0wkmqrIv
W+_!z׋8W,!By
6&ǻ2N| 
(h6A8X2{pY%Obp3_'l[5QWrp8sjQ
`;M됏mžԼω/w޵,|&yz!-MmϏ/̮mPy6?Ku疳aVAYϾEiy;O7>S^&
]nzރB9;:T4P"{I
损R
5(jyJz(ܦFfrH}К{ZEo	ꋼm(&fAS:.;?/Ld
Oĩ"<w\AvMKa+	d50>:8mc1p7s袑ٗ֟4WȃC]d=3"͇K_`CpQjBU$2΀d_:_N%mǋ^^? mp.ߋeOg}*X'=P'Yro	{5ڷljou[4Oshv`eV3yFEړ̖6;QT6nf6~Y'U!Pݓ
ui9H6aΛ0!
)OxF>OP:kc=h0q+zj:hStFN,_*ߗIʧ!ZyZ]/3[mܑsk!/O+/laY){vfNtP@n櫣aK(WJ.'i}[[Ơxc9Ɍ8ISu%$U#|XVAjкOGXP2ѭX:<KP>O/gtmݟ.GV^3sbD|gwqO}B(D=#iU7\^2<ƐL"En$B[u|[*3 ʆs=$HНǪPw^1YC'ϕMsjm9U5h$"x8mʹ|Rc#@d$Ms
&cL
ɐ.qGc3b~h[뭙_ +<[j%D;i|кc(?Jn./{Pu>8m?V2Icq=~2^D8ﯗ29ClHς%S2oE5sckkۋ2yK
P'[,Yg
`{"mwM[>G{<vegVe$Az#SXדkq>h^4?1kh"`m3UL'PHK@6Ks\w})BL eN ^A7CB:|>uݺt94[!	
''p\z;qd
3^5SLZ[qv^!ǢF:5.fzϿogEjk8 e_n#ZFّmˑ[?+/Oߏk`KZ+Vt_lVh`M4[7.Tr}6pɭ`63l^)~"CΧ{qTl~|#O7(zASKC2Iw5'fzmHR4տx#9#:hۗe-+o,?tZղ7G$aZcoY_?ݸ/+oPc""NAW[Ȑ
nMq3)o7 :O<ڧlLg%p]
eKr,.9}!I-WbKl^MǶl2>Ŗ|Зm7jqhi,៧6Mj(-0gOi^o<̗*K4HTfL.*2=FM'{Qqj]@yq #)tXG7.Ihc$ndN]r=ꥇS2{Inm{f3mq j=rC"+ޯho;Z)zeIK6SUfd=hqY_ٿ_Y@6C_D̑8ǝ*w}b2>Q4ɭr|?śo:	Bd{=ZYq)l!}!;H<twhgە<]/Plv26oO 'W&8lф{nןqx8ʄ{+cr$bco}Zig]R8fkg}pgZ=X-b="SgG8N(vjvcs2ֲ^
׿<~\s"3y>!'wۇ=hacRf	?d423[)ɱ/Ou3X;q-dnE@e;燻'|z`ep?6X>ڛ#׬{U//'CEh|fFt#gWNA{,3PzԅV+d@8~{I+Ό fQd)T=GSmѦ(ef$%Q@r_dVuֲjw159N0`0{ae.Ab3RiFjBYl	[D+(S2Pϑt4钘Sg9&!A/#ᬘ_'tV iб&k~4idv~ԧv4Nt$pͼSUɉVEF_Wi;?mtVߖI=wtsFS;:#]G8x=SV1Ͱ7ˬt'T6$T,zKzec_pPFg+cO1YS
a0.Pmŭ?~Q^ c}eR-W<	ݬb!ƯBE|rIj>eG
]KaA9C:uk)mh߄ƾSLHgB*"x0Soyt_N`j'SAf$8CîMc%D.
;X=e|->؇.1WVG$~{a=,vfPdNj{WK%7&ʓtQꜣ
n΄tiR5P-p𰧫V)a!%ޝ3"7x5	Ll+Oas2d9|'BhvV|0ݝ3V}UlOո;MQƻBici1ʉ^.T|uM|Q=5?lRgm?;\*)OͣpKH-U4W|(}#6ٮ`27
TD:2	X/;6}Dۍ=_HTV0p҅ڱ,5&4g,/vv~Ú<:mr5a	a (]I/r{̝\nGBMwAK3Ku`|~O#}FD*p5A;GAW=ۜ|MdNKXρ|Г
e
g:EI%̵"9.} =o] |==48Ӛ	"\ᐐ.&tThyi"7F;gd*EkyJRK;5(vn$S<9r&vq;WXJa<dI$2:4!߆o^-*N׾X}gnE	_?YsCʦ#:,4&	
5)Wef_W.h7YC1RD$raRʅUd2W,P{QYYHœ9bXN;aӓr:/6O?f,Q[~`{̹Tu>8a]+E0ؔ,KCx֧TC2c`_d-<Ёq<Q6[zѡH?5Df_U̎󿳲aT'ɪlN:_+!f+CjjtVaOeU!Tm,ڌ2\|u#fYi,ƞTwDU.I[@S9i+`]e'۰{ >-~V CbK:'2م&9cGJha;UʪYQL4R2OZk8h&N70=ndtbz?nQ0%l
P;OԳМ7GQ*]!
㐼0fηs&FC8[ѕ,c !O+N-?#%FطݞξF|[-w2qMgIhީ=+)Ӽ}T9[~@x˓܉$#ԡqu2-^'o2bK4_IL72{4lC_
ZK8 8S\n:e@p꡿f?oׅf	G'yOG#)eR5d\|Z9b^+Yt{Zj(ꉛ{Nq(*͜pNrOBZw,7};dc~ £!݋33ct:/ "מ|UyZN/7Mjnh*EIv=؞+[WѪB'u1A[gZ׺ѡJ*X@DtTVH~xMwQb.|LOlq:s
s,
;	$Kh/h腹PNj6T_J x
mxv]QSw§̓Ľ |Q|3UeX+~371[rF*T>6@;'P蘌=GӦStxQa{~o.^虣cڊ͆4dJ p0tyVtL?,JPxT)
q6mH
%6&,l?<8$k>\@X(	KBAzgfN@ϡgo<w/7t>>ځZO.bȩ MF.o_IJt'w.jx4#zVmO9vZ'_.AߠeXcLDeC\8AUs	}I|&5AU:XZp>r #qawhO"bsnBúK|vꕆ٧-??/S2^nsFKaMY6E2#>>(!VUbF2Q2lF0]Cs&毤9JRI+1
(ᓪy"F	aY*WƸ1:.6[
wPgZ>XvS69r:ϢXlH4NuIRj./0Vѻ@8)T-[#@Qig@T14h$ǳzo-uTs{(>l"[?2:v7m/
L]VD2]NkelPNVVl͋HDx-'Re쏧HkBR^9[=V[J!P~n
{̃_xmY:}ZO@/QݬB{w*5bgܖjI%ՔT[tߞ`$'o3yWKuoW\-!"6X;]ShI@6Ps+$`g0%fb5a8T׺t%if>d^Py,A9{<;֠eBFT
cKFQBT$
*A65n=+_7kiix+#vY~`Hx~*Yڳwݬ]bw`eG,d@R	Sw¡,iW_ǝbGA&оYv<nw /"hҴ'VЫ7ht=y$"k-˱Y=rؾW=@.s`OV2(h6DnB2Wy6Uܭk|Xp;qc d<"fTIXxOeZ?i:%]V
C}?1ޮ[dlYGuti,%3=D7C5jp2\mm	ua"0bO8}q
+,\~b.:id׉hno*xwiSu>?gy p˟'X,}+1f	mq6S$O_|lћ&dP5[
OeDO&>i(ٽR>ѯVB*:AV<3zǊ>Oj}L]Eu
F;]3 ><F
TLuϻ5^>-`bzw;
KA8U\ad<T=SJ(ơ%>I+v5(d$Z#秇[)UX&̓|.iY#7sY̧U5vo2saֳN+:!sh\`޴5D>
Ui0@}s^i=yme	'Kd.vY;e1%s&ZwP[6ۢʬP]昇^\WCqQ=x HgnpKع볌J>wRd4MR3i糷xA]v{(3XVY?p7E 3w{8y#OLt=.ˀya%4D1w=Fv|ek.qM hD|؛FOxO;ƹf#_l;ѷPUEϝ\! di
'g6xVA1"jB^.5O~mb?шfוrgE]Dױڂ0ksQrW;%KCvG۝FNΜrwQCu}y<+ҋ<`
Rw{-9Tt=	o?aO]r>,I0e?~u~p6KkNOMJWGV=՝>LH),AC!ԙ+%[7dIǖxH I\ukz=*)v^;_.J}F0XArNSrfy:}x{]_91W`?d}$j@=בMf+x2lϫJI8Q0
U1
V_N哫6 =".TGAU\[$M!.Xc qucS~1+eJc>ꊧRզ,gY7* n~|c[c8~<}+Pls*9Ҵ̼O$D̡萅usP]G~+ <[{&(
5fSU~*.ʎpyZž_y<^+|c
T^T͎rBqۚ$1tn6I{859ޖ
4oͰY
SbzA!?6rTƪr U#rEܔe*攟a[_|-tj+e)|S+_+]z<߂괼m®j[ZȬ_v=8}k~נyx\ݖB7
żƝ13&LL`/5F2wS=;&}GCѿa"l0k	h+z>b(MS?P W_Td<$>E?b a&w܂OmUu[^ivIiCEYyqCr-wP˘y_t?`Ci/xN|z/UXa"~p_|?!kn[SA	ni!Өۯĵjo +wύQY瓠V lJ:|Zqqx./`Hq]QKf(G}:p[LjIQս'^3ń	\[ۈU!\qZ4y|@Hc^7qN*9V;q=hO`^ǯ6s8/~=$ԡ-ߒ7wb΂/$?WyD|UHQ1}8v>.A3*"P,V\UbL}(O|;ol1S	zVZטM#sq`,q,>^L]ps$B8x6"eouѫ5@$( <GJ~.;5>u1@
n2\POh*mh
o*nM.
Bidp>  8	=
I`Z0
zKȾXo'/}!&vX^҆#n#A䉣t:E 1	m5[=´'+;|r\2gҗ7gV:=C4K-h;%mG20fZEq-FzbˤETˉb-K'dxĀ_~ڪK+ϵXy9rErZOvIQDXsV~8#1vĤd!$/nԪgAubHXPfV)"l.?p^ASJ@O(>y#kO`ߏ$<*iW?oq744ԝK7* jIʷfR4W3J?TݟKxJ
 q.py7`S5^f3*B5Kuv@aCΎGzad1>cG<'i &3ت;>N訌MiBl9仏<]j]}0%(kg!z-BJ-\hi/
b e<!ë}h{~ ݘ&4KsKqTͬOsYs'6?xDn].tڵ%)Uz#onλO޿&Q{O"(^\6!#6IȔ<d2/ְfY4 *?01UNbnK[O"tKdh`"B\arJp[s0'?
tio5l=E
1tgIxlaCDHq;F A>
} |?o+ᩭLreyqZGcg;/y9{]<d_)J7UXTMnrNڻ4%5Gm
?D}?ȧSO7Sx/2>rXue%P?ex@$.qXo`\7q\;rw7us X@Hry.Uo$`cK@&5!/xjhDR%sI[ޮwdR˩VYU W9/94>$U=)#vpB{s#.YK,I08ZD??Aೱlh#Y.
[:^
&ז˔P4i	wqfgnjԎL3q勊/,MC 1$j~g9eնJ'9O׽p(wmS;{Nm|jkk$߸Cm65nk,=W1#5E"CN?6oyzӻ֗bHJ.|;Iܖem #l)e"IB	b._OCfg`/_1f\id:KZDm3O5)fITKRUAe;gȀ١D
85}vBBWu~'?>SJ4A6Ԝzv;œQ5a!0Z8+L7Ss[zEtP*F6LNcu6v/,Cx^Ea;@PhAk+E5O޹kNaz c7< 6FGm.({IRW^Ƿ''WvxaӧMH.ŦFiKA&&y%+{X$P/H]̂zhWdodtZZ}Jν2T O<6 p;BįcN"Ky~U|EOɗzq
j0qnBZ;y*&WL);RoTE-|(1	Re+o}U,2L;V48_i>~tnur	U<)pF-b}E"+	/=tf^%+i"ve F
`n4
j?ٙh ㌷z$QHWnE-ʓOL>B؏w;w}|?Ah|3nkc'p)XWxuo%c%]^\$0Yn?eo .ފ,Ds.
@Ru;~"
T#g5UKnܞJH%|UUzO9 9TIRA`?Ct[ .ژf6,yH4v4#$ֻېeY=?JoqVΩraYl_e<tHW~!AF2vh}O~?ȊYQ<|BvtZ6E=hTl撊|8wިz4{K|50S2N®W 
Rc>-QNzb6*+A=a%+X+uY;eSc{->m*Pg!$G m೓O#n_I~)gAtIY+(	Qux*<[U%בڏ[2ia0M6zSiNvH)ß7))sbdgzg4>Y	ϼkt$Mij/^3dO_:ERN8?V	*|@VU,	;s;He^y*}?|DAZz۞/Ual*d3k_H5r^֯\ҙܶ~}.ѝ_l4t4;~:`׉3VaYvץbtp/?oF=z+"6Kr`n
.i93T67Wċ}Z3>G7@25\<jPKP`5|-3.;D).OHN.{ gzQ
M%C35Gf?;JayJb#$r^qĬf:YD=v=D5mZuN4tZt?=tY d'I,ST 
Lm[ W
F=.Bw	RZ cTfeRQoE >]=1$FS
O0$V
̑2vlHD`QSM#v NCFi̹ڴPKe;jdҟFOv*јHN
aDJWB޵1!r6̋m!9dZZeEj8BF_e
EZ= ?JbIB_RܦM{
eN*t˸H~˄Arݭ2,ԭ0sDmLNiLЬ_ap;~_{iFU2zZ _Aa@O+eo?!]O$vngc⩜\i&̇7l3W졶$9]UaɏP٭&NvkfI"yװG þfvO0}7;<ŸB;<-{qP
-,l4.4itU%;B~VK͇q1%dl^g\B_rx|}SN}݋i*xd+!7˖֚ i
+oliME5TZmjf(Ma|+>!9os˝B2xTX+/u򅘾>źk(/͋'fY0FY	ζ+e%e5!ÎߙɭeIeیS$^-jCj94l$)0w
ex8wz_m_}Xzx7:=v}SY@Q  `w'^0 mc_EAv_FwVOI`䡆?A&I)Lbq?/C5P.Y,X'x
Xw$xK;Lznwb9!mUG*Ҏ(X\g0ZTU"/1Uuw>yp[g \+hI퇚hR]14_nG-yfdhm_g<\λ4siH۠f E
v̶괯_Rw@W'/y~lBvqͷT(-9@;AjH._=ג8A<
^5,{D:!XPnj-`"m|{7Tq	ivc&<T6ka9cep{oY{P,ǲnڨ5˦lbYP^C0t'J'7_enVhk٣4R5[-kȫ,}o~h<|w`*;Gi#gav*?F)2ם6!~1*{:eY:*ˮ`"bYjNQ $z|0~Vpɚ5%{ޅ%CWvufd0CFPlK#D`[z
FieD&(D=sG.}_AE&k̫Abo`3w6菹m=w]oBoBS;BT%͗@[Qf?!`~">
lA6:ey-N_W|ڬQa o2f",5dϰAHRu
GG*6&/Ξ(|SFC	Ǿ#SH'5|O(aWs{14UL#G0_{*h5.KyGFGԝ67m
f״IHoC1;rbܸ8c|ka
r,h"*Bg<ZݰJsNd@5GW몷g
=Y+v)B6L.jD_w>j}jxw=E9R`K mv.Wg";N	pIayؗmZǹ4.QY6=pm$Y0FU]<sͪ$gFiᄥJBsZӮ_U?Eޗ/54\9\Fڮv[=mO%>ޙ	ϻ{Q`J#s.m9p:a7G35?@iGB*Rט<_&R6XL͜`iI?qo>٩Q&
Kӑ췒YCt'U>~[`k6=z>?9B+)	hh QwSϝMJIۍn 7"'ȋ}"cYt_sQ9ύ_FE8
VrYu-E0-2_$;v!6Z'cʣż<qP$g?ē;n*ǃq3`oEw^'FpvczLs]fW-wI=ws"X	;8G?u3ds#"^NCXXO$.1lڽegzkA"A[Y֏2)al%0@؈m!\k"̫JC,DV(6؍Q$:`7)A
+%j7bvօmQ|ފ{=lbbC!5lsV=<(qCFyx@[?U.DVE1­rgSj{Zd4lqLJ*]	7l{ěN0U2YsT.:i]JiގSF<O> /6։ϗks,Z}hL
\Z^w|E9Bqti
<l7\b-ĩ#Ï]=;N͚x 1)X	7P^AU (t7^-c("~B-s?yڗ {y'Nj6JOyӷ9	q*L/Of	 ~bjҺ<s<F4V-=E޼*{y+RY@RQWs5ؗzNUrP1EOq"ۃ62jafpI+)TjeP)3ZB*
!0O8p^wΉe9*$em68kEPkR
,>CɇEm_23;m|i,/%EFWi!S|<[>)L:Ro=wч
1.qB*߰"qkɵ3U}d*)&?=#yIdjsN/]p9觲jj@}|;v~9=~-ef(iս{__iݮ|ƦJ	&Mu+GPcr۪Ɇ<ڞSV/i?p	U v?|ߞ&%ܱ+Pߎ bHrMAl(&aXrWCn%葃	[ʗQ䐷ۺ?\>" orJT_Btp/z`5sNdlaFsg뜽V%^K)fc_PL_H5V9` voulw6RSI|	w~kS-{T+,+锈D'
1<d7alKAN,@^"l"nih;T
إGwWb3Wt1麺ꏇ6İkX<#|1U.OQĥܙxț]Vޒ^ڐ$.CIERv4t6vLGi\]\hꫪK70?~wOTܴc~Ȝ	0~	L@8_moI7QIV5@	2^8ᇖ)XҹsjJ_ȑ!aY12~2
z딭C
+f4glV'1'_4?}~+?J Β).Z
Mp5߂J7&t:_AtDKE
s<)gn=

	P6P߄az[`On+HpJzQ	]>&'7WV|`jt~f) SK972_{?(*daV@u=8|muNfXj<Wp҆D,76@Să{XP]70Oo/xd]9U#UJ1
ݡ?sJPgS_߾6 `CyU\VB	3.@ޯäv[-D6*e;*gt|p:s_!ޯAnX;vL2ڹ\})Z
gvŜ|P++dO Png,M iʾ=.KkOn{+71Ld͢l2kߡ_@xy>aKbOM:0S
(\_m`pHBG'=#̅"E{)!JD`\sT\q ЌX;ϘnCtSGC|OdYU㑺SRtG8UA12ѵD5oo0|eXQKn,}fѢKG-bJIJnG.*Y<3S5	5}xhus7s<*;ɳo=3;PT(*″v'MFx}3Vzz*d+/^bI#9rgKC)܏;M&+1MAESc8F)1s_<'""|nZp(]SZ0.ck󮄫x*?tSm:j+UDQ\aaAc1Qj-*z'6[to
3I ܕ[k.\xAɶ>}"DoqGILߒVwri-p{;I,TO#|?iuEvt沑HW$=[I#R
]najwVH\_BɳRq^jInȿ!0P>cVZx\t!QWiA9+m޼nEKJAz&|^wqa!QJ-ұ71rnWGYD~!)ⓞ
 rRb00&`S#;?~%{'Y;εx
fqHsڬ\J@]U6`nOb;CA䤴u:ѫDa.+/|Wޗ->mXN-~jB@r.vfHV߄>I=ķQZ qi;̃.jZ0wl^SFMqNmFO:&ip`[ &\'~O{a^"rERupj0~Za=~~IH1xR{ccYhQM4_!hPj쩋>p+05'dTp>"3ۉ_P0dK$s^LQtcb
K]iO4?)m
Lm%C*{0i8iOǝ)<7;M}ߵt1E\s-dX\kk9:07
ه[%6s9#r6hlBdFZv}jmҙI͡g-RUoM!ai`ϵO5"smo-Kvܒja@h[ QS
@ O*)y-0izxeT`fi]SCy.9	l>U_"WUГ-i:)b2?Onƥ£}(HgS.<	?6MVA
]G_S
Würbڞ,]=QT^"w߶.f(*֜A¦:h>åys_joHx4!M6M{h>nLXVLt==|!s}0Ĺ.6a\dȵZ#f/S	H=E9ypk.̭"rlx;c/-D˲><9k	24WVz9O0|.c~/=ζc;Ŷv_ 
p?鯔KJ7JY|
t*,~$2n%V]xۦ%Q^Kc̗yz`n ȉ0`>M1xئ[(6@\]B3OQo}a)19hqԫnLߣ<%ooVGO:7!'M#"@h6&N*}06$Wҕ\88)h=˄

V&!Vw^KAtbSY 7)Au^-(~hQ
 Kz
6w]sKD$5֮6Ssi^K@SmB-AaUl`M[ܿo8ʏը;b]DV9.>"?#U0]4Pt4NpcBh46V/Uq*AjHH.G.ݭ}|C\C @n=Q=w B Sn
C9} "<=/{5$5='@5`'\ri|婘Lƻ
,͓2jXgkgg׋C5˰@DP/l~n`Rzy:i)Ed x9]CW +W[
UMlm,'[{֧Y)oO+`o#]0- jpYjgMlzIkTs8+IUe3S]JKy?{g)ȄHv|3D2YM\bHՕt1i,!&Q
7yrJ]ˆ@7s3ShsUO
n>0mIz[VvRV*G?|')!0jf0Rs e2
| =~
$Z1o@:K%0Hjou<oWhJ\0,{Wh])4Pc; i7>gug{QHC(?11K:Wcw|МksoӃ>)&CXg4p@<[ )T}ȥTd<Y|@)Mң뇻cDjw#ɦ_H
ݏ 	"U-dAnrF[
1sE#(tZ7`WKi|AeC
JKNBoˌ'wxѧ*vvݛ&);v0ja]%."E
GK=}?OӼ%ڴ<a7W ᢧFz:cjiF~
nJ\Yjڐ|0hPڃmiǍ<P/RDh)L %$J&w%]Z~owܑZGB3׬ّND7EY_Ɩ={bUr}2}Yڼ0J\ͼ b~ʰqjzO5}xso13	VnS(AUL3=S5GyMӀ
)eoO
(ď݄
 {	`s3ѵ;ÃrmJϾaAdrL48vN7E9{YqX]/`CS֬R^~sS5`jytY׌M /[.?K30(mI@ t=S9m.*"//ɿfGδ	XqvX(WPKe=	}	\x}{8_
>C|Ĉ~N-NF־5DRRL)nu΋wA3v:J998)Q{"c!"3BYn|x/,4<F1ԷxRARes)C
Q?!
YZ3ǑnX/]rtاoiHHs[rtŔ&&^pĕ	
0PfU7-FMN:O1$&Lr4E{z2.I{A!D@(6~[\L'Pڛq18S=ݞA{?Xh4Ni~Nbb`MWa.Q+.K( 贔vRr8@#4K'G|8g&!*ァy0$	^{	~8w{$7Y5B5tDe Ӯ{ˀ-.4q'߲ǄiL5(;Z쉩'3٪%by4}efR#bWOa.cu)?l~D8+Str(O/a\%lU=8 :jͮ	L:9fōrVuPfӟ4O!
uؒ^c2_IHHYI`04ܗA"%F}ɳ3Q/vQ0h*Ԃμob.Hȃl[>NtkQe2~!m?X!' "L-wiݛF9Ij{i-8	A#p{FOfO!mWxR7vٝ#fxXvyWD7kZ\+
qie(>J	GNz5[M}ǅ7ei144u`%fP*
[#*YXt(Er3ԟ7JGXt/S_j24[5AO4 ~5j-
Div=]zDh7Qf_9Cwͧ?9qڼi R4)\`n"L~,\nO $^nH9ncj8ׂ)LSz,Ahj'7FM^+8!|cܙx>fgd4v?xPj7̛NQgf7aD["<̏3f<~oL`p}`5]8UVt4jRA5OX`,=atTM+!#VX4-4J/үYӬc}z\Xy mhH[\/F&3b!	/0֭?r8?A0ةG<s*.V2}mĕ;vDO5[~O H(=FFDӈfJg3Rvk!'ݑm65Lܳ(99T$%եFrxJT m.	k/STt+$zf'X5xV=+Էj]5ljc+UDЄb9ُ: >0MZ@1ɯF)p;}01;M#:%yϞz59C?sLGJm#tC=Hi)[)/*ݑ'Q	xp<a?Q.Ijq˫+SY}&}'tiX^p<,UVo)ZU_@0z;o	-gv#bPrMD+`~U%3Bq9aQ
- v{.^~&?,0&4Ai~h^6I&[aSlfv Z=|S	*uiwH9OGnH(wIe8Ll+iEZxd%j4P׺?mO!wd@ֱ.iT8y=><ፖ0{P2v.S/X70=WD#a$?"KpQ~Fç<l'pUSjy\<Ӕv.
20	['5EtFT%f&3H:_\QY}cQP>oDlUC	on2!Gyȅ }څt!/W[jUOz	Dl?bЯ7{Y.W0 .S 'W?Ζ-vۧ,=SqyTh6MVഫMNΪx]߬C]1~H87\x=(3WBᴤ`U{ʶ֚3NjѼOiċa ڥE/t	X!-Zk.Ic{u .zA+aox#D]à<$2g1pxH;xd~AUX~zy0i=[&R0NPr(fvI!o)̳ϓ4γK!2Fd"^I
|Q	U47{-Հav7icp^L63:9$P䗭
^o <
8N_h6஍BA~O>tf]J|teb
qR	:$`Ҿ)lVKRls 3c\ "p`KQ<TÄ zg̬ŮSV>R*DMj7q_B=Kyym{vsF=pϸ+O@p?ăr
nuuk!'姭}r|N*0i
/ɜ؉7qjCO]˒Y&9~>f4>T%	gvIz">@}>t+"!M9K|j`{=WocwI?UL8$^ bWY1oVZr41uD$S9oiDƔ@g;rCWnmrz[к]?-07J~/ƻDIA(D950'	wwU1^֦
!Șd>M%D[#~w	". Rq8#E+X扺@1;
ؘ*6N?6/#,d@Sqc0-Gx)F^XM{/kqg@"V {'E::'wt7$~y7YS^gMns((5bPZ(\0\^OA0~db4MCy%!ЉH.7γrn<S G<0`+<]vS+\hhD'a>lLnrF YXWDݰEd*

>H䝬ꌩzP6t7O s]hqoXHY^76ǚ3`u'9l$[L7m:=[0AM|:
.Ff3srv0CKzpt}Qpf	}[9m,Хbo M0 $-no;^LV
(HDgas\
-E=4ER/[ya<
#p_
099s;`h-hs~.CY@
'̱CW
a.B@3nS^Ge=+"
ř7lzV,[!v[T
(2þQlɳ8$L%dDҮvYl?PN:?nG [+?n܃#iڵ8,[&INua[xR.W{Pޢel>x:}9fhG6w{LrO2Ben.-zC,D2ilmQ5ʀ2 n tFR;.")
,L1BePR֛^rA
#d<53Ϻ-32ل68,[h3ʅLVS裮 ?,|[*vs3cbRaVt)#{CGw/qi,[@;Xh]3تb+V)OxzS:}%'+[j\3/&kl>#bƴ?,2 Ԏ	?+I|LUcr_?~,&рoWhOF!^==ׂ>)AYH SJ^Ff=Z{ӅHSJe+ѵ?ҾoFzaqѤr9ҁG4xy~$~-H
UJR)U?%EF	sQDU'fHn5\GHF
<\Y#ϴ:[DB7X/Háś帡7bQNօD3ihޖG?
c+Bw

x	ݮqp5h1q3&}z&y}*s=RmW%n( (P$-.u<~AڋC2%#S᠏9NXZsJ\.A6ύ7>'8	 ȳ~վ'X#:Fu/dєꏨy<?Es2*	0&(̷IZJZ~괋ϯ5ZsvQM4FGCKYx<N5' H$Z;<Ψ&͋&lc$I0f-ɥKJ9x1L rٛzZ>=l/ $6 -nh¬/n#?8u!]=PGj=T-fVԫ6! ~`6q8tCCxC#٪r2.uI!xM}6C|z@Dh'Z"]^2Np|(OD=./qf̄ 鄽*u g /?cz-t}ԫf]A%<f9x(	K^nW,"=v<E\<Rڂ$^)`XsAP}q~"="S5q=3iUR",sa0V)"~}|D#IW!()sM5ݛs}u,3~S鑂Еc)zlE̒+}PD`qBdNw)`wʧd6PVQĽp'\]jKt*A[}?J$֘U+dwPA>ͩcfa$aT$e`+~/+غmQǨdF5Bewd)w
1!E&B&m`]&'6X$Tq)k"Ti-Sf⡕#񍕮!Nzy[GpihvsMP@%V n$(AoF8kr[n|`JJb)!IcbJeN2lh~HRjDO=ʅCW~;44U9Ɠ~;VŢXXBkiCDp17e_w2VgruU"#%J嵲Rk,q UVMH3X,d*G8+Y@!NSs`H}R1}ѭWU$l2jKOXf_sqiS 
g:҉Q\:cq8LC$xKpi^ƹy8"C}OuD5_ w:1Uv?*ܵ(
VgX?]%ɾ}67۷ibn\&s;l,yÁ <!H9o3x~K/߶)!E!{9gqR-X//*i.?%pG/>_). HD\^9ߧ+WòjkZ&q?(0DQ9`Ȝ+;2Y;[V1{"V$ZmO=Tct\:ثA_?AiFwuWuoY6:57x)8;q=ף1}TXBnNbPÂ$SϚ}<r8H9e]E~㛘@|ƚ)
H!*	/J	nA[()
i9В؋gO=_&hKҀnJ]#'T쉳JhU4O9@!WLq$TWw0F󩅀hιKKFʽZ~0ƋeNvQ094.o)%j\?&Qь5 $~Jʨu2bWJkuE0%TG#Xy1HQF&dگٍVƷ1"|`=_q'O<jyĕ!x!]aakĴSXzƼt:f/Wc+xZ+CbiMg(E7ޅK$ӈ?{tkEDl~G%.om
XThC!9z7NdQqo^OnUR
mN}`ݎՙjX;<rbTw"JSpC2[HqoA}:hׂi[}D-p
5qO7q1CoGNt5"$I˴g$K" Gu-{O1~5zs&|^L
< 0Nb/^I,s[
Ǯ8Ohʸhv\5ݓ|Gt:[ǲ+x_C6}?ǔ|)@{tȏ *EJ>~bW;[iJuFJʮ,6,/!P˧c;6BYeN`k\P-dPܿq?@$yG1ӛP+_d#^:u̵^*`юWP?>oNS[N<K1̋-j/s!i3hĸX:wQR!/0`d;6#@.gv;|]codQfj	˫uc4qf4ڣPw*dΐ8}<f"xh~z8ϊ䬓'nTUW=9TRZo &g9.UmkDcGc6bG<3Wk,v20881I5u@GW_"2tm1~8 @=O{|?n;U"D.G=]R0=o_Sj5;\6&PV3;DUvK`ZP}"a!-y@6./,QaM7ͳ
+]pn:u`\2@6\0eN
t&t
c[;@")W(b\Ux_Lo^5O0:ʮ,T7VvƜdNTp/DnY3*%`PGR]Y/S*k"\-;eW+w|^9)K0TBBI`f(*t/M!y7</ss ޻{-vi|-d%+Z{OjWWoi]BNlftT=ċ-p^{1m($Ӡ5 P'OmNIB]//ۮ}ߵ>Rp`bG,⪡%K"@kh&rŶҥ|c8zPOma(z:skYIqxkzh7( 2U]uV"CtXb9 l`+0C]wtκG|u(!u"9ag޳Z^Kz!ͬKԵA| ]ctdHGO?&GLܠĢ^5U]Ʒ+2J;\F{/Dۈ."6)*$AT<K&cqSDE[l~>eԗ1{c:@R| o4(|geT)YOU<h}lvl$/pO_v >*   t@Mrv-.\Zi/'ri
^Z[roe(5{>:;B	G<{i4/w)}X>e51juUH!ӵɍ1;EZSׯB'~-A8qOk S$
Ըtd@Ӏ_l8}9wkM-~>p\ShSOވ^=
	\L E_{v_5;74هq磃n1L14nFƤ/Jo>ّ\YT|K0ߛ),Sĵ]ɟ`CSc>=zè$p\FV9h3ZO	G}fRC8yǹ#1O8jH a[}S4a$&sP5fRmlcL_O/ui'SScgیPڞeXuXw@#/2wXjñ[w\=H*~V/Ǵsʷ[@#3N
Q7- iY.pۧ)o+ZP4Ue~oo刃jX&g	}x)1,Aw!S(.h;rGoQ):3
$L$^2umhfRnhy"߀t!xStJrؐ=gX8xxHN?&<o>Z)ՎmXpl
ʡ[ЧOnl&}4w+cRaɭR.#.VBBPVNi;3e|K)ˊ%Zd^v,l啲dv_HAeӦ͵F{:5a)vPWEz\wڤI׀eYSM|ф#FP	 1QoW΃rQ]1g|?7gSm	7{7
G6ζf_ea[R֯I_0>O</`e0zj_övG'4joRw㱪Hj~I6&IYbEuQJ*arx
yq=MeP)X}EF'6BBo'Gl[϶, kGjUa=͂,󝡴;=Z8DZh#T\n>17xMx;Ek5{v6cAmyE| uStQy	?ܷh/)8C$k~>2ҟռ3&J4-`Jzǃx-7%C'{_޺0!>0>+lbUT[Nxz	Յ%wK7eN1L/Ӭ%h
3-lnE:B_x7{}z=;\겫
.噇(<I_?PqS,
&'4r{dcD
G+Ms+jwՌ$L9Ҷ`glŋCn}>HAA [rtQ؀X8t4ۨm@9
$7](KEt.qgDni	H(Py8XG'<b*\|5GI9.EGhXɂD NqlM1a~nQRwy_ &2$W1Vm,<x#'5q6I+skSǛ~;h̼'R69\Ω\hHzFIS&w`˙ۿO'|m҉ȝaejR)y״{#aWZ\6PQ$&qհeGmZT?)fz?~hȾ)O-"8/:kXDՈmmSJ{u̇6G`_dV,C8mZx{ڕH4]ƿ#y=}"͕ѴMYZ3δ}AIԓpk~A"9$zq~)q, 5	ίos>Aeǆ
uD8N$`sysZG89%PVY5`dFmuQ/Ws^Гg*x68#R]НI@ix0#C~!_jXtJDQj4ک޴/Y[Ea 1fV?*~~Nnwb$:r)C"CuԴkOTiSq.Rkrf3H7^JͨF.pk;Gߓh>"|JtRӔdd/¸,:0f˽Y
V<lf1[@)t(i:,)VZ\Zc~PZUԂ)jXH +(w	<B4)wsY/ 0*Tjԗgx"y5?"E!ƪ(iQ|m=՞vub&`B[߱W+šxy#ՉBYP1O~pu?T$詌ο(J4)'ʉO53Qc=i*2m'x3?[8րj8nan$7ǯ/7Vc^!"UCNqqz梒N1U>;x?>zZg;O#Qkmۣ{%:2d`k.-&2>ӭYl`٫0`7#~wD\0zTkw>PzbH.zrp)o1.!4Nۄ;okq;4ݹg[%LPl;ĘVpkT1}DVn*Wotv"cfv^s4x?E`<tE^mJfdOw%g7
֛#MХAx=9 +0JW@@n5O}i]z˳&SEvCc-rXQ^9Bj+ig2fǸNK7RK2{#3Ĉk	앩+0&lLs˫u3%gGR
z~_{W=
mY^?TA˝4;BCP378V"Kf%6 Qsy`<b.)W?Θ?i@-Dl5YI&f<*tÓ=ɃoggoւmmW %T+ܩDqE!&gXe~RDjhy`sJX|$&н˘~{v]t40%ʎtn #{svMNFneUι1d)ar$Q? }A_e1F>+$>l=⌑.wYq|(O$}k׏ɻ썥'PMOHPB$8a%e76Sd>V{y=8K'%D#1AG(W5Idow?~]2Sf@J*TK <`zPxG_1{-19
u|ERz kyfQ$\4ݎ#ٳPoyW]lؐH6f9ǈVR4_뵼?0tٕ	19	QӮ%bRntH늟8NOA\Ν~^ 0BVvtV=|Q>< g*WV
ڟŜڱZh#{r
#=7,Zyl[\Wa7GfBˋ"ymAd1HVtui3Ejme?XM8Hw2;6	 ͍+b7y}qo&b&nj,ǹI]LB,7YgMj8~3$mxAD-yfWEu5&X{9bO*^|XcbF4UHOY/,4A^;Jsj޵|6lsvV%	uFuA9]|PށPDӏ~x]TO֤@veK	d)0~;Z/U#KlC
n"s@=*@9UkPZ^M\t2{
1^d_@dNӡg,.>UCdjQxZ#JtGX<} P}!#Ȏ6pQ P;mؔL;5(_,wWuみZiI1˸
Vu{ivԦ^U}DZ[^0+\e?xv6vԸS*TGԑ7Y|CT([G怮Zˣ=, 4_[j/wZ]+W^qeٚi?PqeHؠbsaE
Z*۝D m\-q甜l|	7GJ
!;Gz:3\!.唫|lsxt0*kb^q{:^O1x[ u1n{i+dW뺧Ηgwxi82^BkTAN]Mv3kKAި%B>Yf]Ȟ9ԒcAdq5V5pg`zEb{ϭG%/A+|L-Zց\Ӝla3ĘĿᯩP}4@]@Gz8@F0\Xx?߲{*Djy*)¾S	<]:x؆ؙ$LqO4>gҌ0vL.A'.^`FTjQ_YO{-9m73goHX8aVRUiT5+VtYk0*//	omqJ3R ޲Ac~Muz_SD[Lb;f˿+zRP QGs9)$ao9=[
f9§+VK|xKQ#|,~ZKbVXkYMM.uHvάuzz~_6$S7^o@C`,
-rswg(D>:%=n͡O ~]R
5^n/x|;XEEI,lzdj|oB*1_
{?Z1xYBvrSk_:T<we:"}I0]q ok!X$v[(Uv4K$3KsI7OAH
!!
-荇	HT/>՟{~'Ayا7Ŀ|i<S)8S	B+%_Y0VyY`u^b	5>ʘ)C%%2~e!|g?l8{"'pS'cRQk,WRoz1$M>ƣ,wBF;dŹ#M-ōX\ey-
G
c"Lo2c5ml4]h-zѫ[kA1yL&)#QQ0Wzn(l (	0dom6v>`nצ*O28E,+
G:a(&\+s<*P~ 329xl|^C6Br] @>C\Zc-V7b=j8?
'3߼!G6h$gϹnD`9ՍaYhӫo^qƌR?BHZN灨(V-c߯⇸d [jb3<CQTn\tKC&Wo?~d%er*lӮDwP0+*v`ސ}]vb܅xbImޢ WEsbej\wyǊX8{9PwX5QRvʌW͚&4||0zy~>Byb訔⍟<1INλ!Sk+nYkMJcJ5bbKIlcTGW/7(@ap\1kS)紩Q\GX4x׳O=sjjcLi,O
bј@DF^`/1͑a:bHhNP[}/[Ç]E%b^9gc5u;3)(K; LbZw kfɞ/J:~{SXILx[igi;ppwsj%ZF_Lnu&Ys<D3OcG/u<+#o=#eK7E0l0ݜaܘ?~o<՛w%-\#({mr<)6Bڐ[^;v:GCA=A(蹕Ce`!wѶ}.D{稝j̼pɀ
0SOd&ռW:/+"b],/>
+LirHa2;@d[O^{X]NѵU\z;C	Nb.~_6[!^,qH3`GUGȪJզӒl/OmL@QdtFB
8JwDOD<n>%:hdauR;%j&)5)9QG|s=ra)^t"2N\R`VBt˃6A[*A {+6@9	v-stۅnJd~WFhӆ'&uZBI^f	IHtRC$y䅼4!M Pi|ֱpOS݊p֧.iv \|syN~J|O7lSᛱ_o}<ʽS|Cd]@p.{$:^kc .m|4"?8Wmk{bw6J`/ ڡX?5(v	?_?'zD:y
zYMzM7Y3jEjs/T_ԁEb&bWD"?	ͺ|2~zE.ٷmm<.`*IUp=b\-lqBˇ~?ȉGj{2)ӹ<f_*"';~mԓ
D5S 0 LV*.Ez+㰂܃-DauoQ7Ϝt|^(ʜ OOb-0${UT)xuXذ5PGKoXeɰKR\vS/yh=*CcңEW,K-S`1+.ӁqnP<}-7.@[
qf+?|}L	2&w"p2.@y2>@<Uŭ_om}[Y%h_ﶖtࢵӐ'?ϳ_p]pÔJdyCǲJ>˪>/07Lش*]ZY@w>o
"MY:Ke>_П	3y5vKxQYczRד~Iz|Ym V ڙ	1Z Oze
̭}s=Vªyo-B	ܽD1AGQ򟇟mU3+ajd}YEXOu=~XO¥CσCG<l2w 1;ۍ:6f_J~8eE>{l\Mvez<SARiv
SnZuu^zHo~糢J"JMrS8 [nZmq٥ִmiH"((9^>i"yک'ѝSB&^puWe6zK^ELsgnu@o'.NNIJ1\`TCrSȏ_*?78.ΰKYfihqX6<; v;
Q˅ú2v%XpY[- '68<8۲n"?Lk=ʫ|.5kIk Kʼ:Y#~.`QKym6Pc)Y=ph.ull~zdPr$V$9tj
ω%bicR<<I|K-g)K	Z6V9& +0"7Vf/ٴIڍuo˨7u]58ƀpD)TZ-08kv.MJt+
p(YFh-MpWg"n;>Wo:O)=s雰z_L2A]Fh38 M[؆,̒@vCEZّ&[.A] oEԁ\>|^A3	[)Un͸Sj$f,7 #Ddf.Y{G/`t<֖q.Kr[{U@A Js%!ξw"<;ͩ[* '.au_'u[ޒyC'	uQq6&0HЇ=,]
0T4X,y?OyzzY<O-t{C苸U>;O.ѵ_t&ߐwVIraxeХo	$ʉ-[0|g66`QnA~޸rx(mqesGʩe9tǨ[jA<H~`㔯fء{ˀlp9-$#OaۆkmʮFULUlpU^owS.=(}zr-dlSНnMF1s2ygi]SˡW/&*q~K~>&[Z;歄VtQ0s
] R9\O3~h\ۦȭW*rbW B׊v(RNΤap\z;n8==wޢ5:5ʾWۛawMv~dNxa<v1gW0BD!ˈDafv) <w`VH#`ɍ"5l5D^ 
ͅn!Z1`[V
q-%s~/0o;Y)N2]g.i*,Z
5odCL^joΊsQ'"YjQeG*e"
cm_e]"Д'RBMM˳+-VA
4w?-edވxi澱iYۤ!o{;~%]?1WSk?Tqn˘
^[wsYe`/YhwJVc:og)38w)ЇXQ6+Іx8y\\P&JxE=x>W
C08d)˥hmh̋v6rJ#}Nh[NzH1V%&>,Da5-EK^'Ŵ60r0N{N+<Т9%@[842=?_2zTMjDt
71F*Z$vIV/iEYO7[h7ɴ<x!p:1T0]_5xMH&L\4O[!Zܮڴim`۵+C 3q,bИMJٴ&ɻ{ZxT`c0{ǻdFV5:Nk4'uOTria@rL"SUfU 婪w!PS4HRFM)SĮ1x	OY'[K$;kwzi?Ior+好BwBjwp3xDI'-4~Qе!cj3 ,uwDť)m.Js}%olOԗ)C-̿hsP+8"ρ5ݚI#RX:Qh1`KTP[t?NonҀoef:q$a||}.}ԈopR 9BJAw}GOw075m9D7=J6zN#S˻->rw鈡&*\I6OOJM4<ޫR/'[E@Cj주`ZV~>&:ߧ5clN!ضmYw:b6Qp n#>=H!TyV=esl"k4P\}4}ey>.+\E }I u%nFcW
*H]D;vCW=}-ߐ{OawuNij><E@OK09=Y3FM'.#NHVX v=w)p͊RÏpt[^߾a=-SoSO߳=~Ϋ6.H^G	Z6=B+9Kgͬ@Z	Y7]$k0C}rAmv?{hj*dOvTEs)v"e{`y;q;.i!HY{V˒+׀
zŤQB{b:[
.պ%**g+CyK-.	x\PF(}^Òܧ_[731+h!)}ԲY
ϩ@UWq!.Jj5E]`^^w9-}-.r; l-f;ĉ{p*ު4.Gr+fCUXN{ןSx&ǧd3kV7R{7 VL|
!< <q
saʍthb(C^}ia'b/52m̍8z64T¹v23WVzΠ;aN	 m2M_LʭVʱgOv ܆UAϊ WxE^$Tr)W%^+>\ ISo^[nF<7BJFpXlgE 
#,6w{T
$pϥMӁDvIJPJbȑ5vZ`*n~aT=La 86#Oj.ҥ:3}py43zE5$_i' £$@0TeGI7 lj.";qt>p~.3@+zt	BX"WH:QtӸ_lDQBt15ϙ}jd
Sgh&ɰCڀ	KU=GA64^EUkȕ}:7/JnCӟ~KJպ>ZHn`޲`F-
Iar87vv7V+J}v]
d9|,k`<רǺ*#¿I?֓|&ZTgi-ߎKYg衭DqўŹV6V3 uF$ cw:_}=J$"b{	r.PKW3CьK7oF*}]s1XwΔVhF.NND6[q_}yγCv6n:`T%ˡV!AgQ"鿔o6[f'w(Jp=)Ό&5l)q<t<v  Z£\aP2OWĖ Ìt=.cʆ~:9On/#7מ	u)Z"kg2j+ gdˉlB::J?:bTA(u8|hܫ'D +! ]t%7^w
y@O	3Evl]2LEFo	)<Gc	^=q"zg~jśI'E]}zUz~J{PAiM/FctSE<9a}W\zR
K314ܫ[3227p ξ{.le]H\>nc2uaЭ`dJdPQJ5-|eP7E>E
diĭuKD^%*q/0>6|569?c3NFE1^գrQmk_Jna1-(
KvThf䡩tIhBAׯu|DT)ɞۏi%A]7[Z\~}wnSΣapg*v=^{vVNl+ӎe5ϕ~ݡS?ќd=+@E@`{4RZ[E^>]4ZH(7U7kphr5ndC
mu[;!	/naD柠5Yi87uRIR"iθohxTe1Jwe둾 KÍ,W/W/|ly/[d5Q9W;;<)^l!!1+T}/A.SU}{+qxZ7ȣ|(`ܟ#tB(0Ws_p95eݬD tPUK&:O5A&9D4xp8gpw˜%Y)h.svi[f~	ifZGu؝VW1>o|[3E
8ړKOQ~ꍥ{ojIUdK93]3rdnLI}}+?uS(vH׃T> u)~YY/?`ͽM7wZ߹v
.nu:zV!>CMm_<7'j!(fxҋIhLXy88(oxN77fwAQhqtH#1.6(i!x}!2#Bգ<ō,ITuȽ%0t>rUp5iR6@)\^[U:%L4aoS\XH3׫:ZP(I v:?C EV:?6'?.0owN57ZբI1?}]d8Cğ׏;q/!m Gxl)HN]Ԅ\5r؆?֍P魞ҏU5v1yϾV3:tTH.d{X{{ҫP]LNHC/DP}kq9e3ύw
O)<|dه6hKS>~I7e;\`o p%KcpBySc'U'3MZg<]G
`p9µ`Xh-gDIoT6ev5y^KMy-ʙm({4|a'qukr_a
L1.3>[`aLNCbeXJgJڴLwd|pKǾ=(
CxUa)RyKSߝKKZfȥ	6;v^l11lM/qFMj>i_O&gaWzv̢T 5蓕𜝆O3nlU=2g%ZBI&U!OS,h[ŖX;:TI}a+V VHU7?/s=n?q^IMRfՔkktFP>n(k}4q
}oְ#qULNR哂3|m;x/ :/R5;(qfD.*x,/ZIE_K`oBUmdDzl2C4cD^/p6	*\4܎kzeaw[@x"1r1طP!x@ů"*^wY]u	 Eݢܜf
-j{}1ËKES6٘oAHmN81h.>lnwH/Rtq?	#HWɜ*bJ[Tkgسݑi/&Cn\JԽL&Sâ#-ڼ"tʢ%qzsH5VE
[;s^5qs˱)O=y[v1lpRe6BF\*3~#O1
]^
ӛ`bc$ՆsMrXh;xez2m?c-'{rTj$YhJуz9r[.Xuf 4z2juF*`Z4LkCnrc}
"r[Dihou{>Po"v@#
>	RIԙn\S.!7]J=,
BS'c	Zi=yK(b
8%*>9e?<\zňugH[TJ5ꕾݷr5ǅH'˱
:/"	th

:/os^kHy	kgdv Q=kv	[!A $Mm{0*nQcrVDўۺA#%}o@]0[ߙI֛z>~fx;nB SDE'i'&agj-!B#x1t͹fד2'꘺mDN4~x3sOJ):ag* EvQ%Vz[?uRo~C'lBby֭FQ:{]EEGu>>}vֻӰ-QR3b$!g.9@w\\zs$}~VF3ΓңuIYfr$rNg
\
ЇM:*\=.vXҮZ2ZJ C
䀉1(S_mGpz;5ܛUykѸS&9;q>. s7/qXP;`9vR6KGiT`_`ؓUɌQ{tT{s)0ixCEt~M;N4Y*?4Ҽ::yvgF0t?Ќl>q
QΫH07,fX4YJC|9n l`(q1<*	UpC2ӟ&u=a jd\Hy
>うT\* /f&oŃY(XXϷlVҧuw
[]>]s7lyW1emG8^O035
m4|Cp0J('EBaW䎠窒G*Ci)0K|1b0#鞐%k۹ԎK`͕Xl	~?
?o,٪xRiM'B򊒹;:^m,@(WDF>\ۖx:	'ج
!
0]	ER&r͢uVG?oT}C(j(+<mX},KS=7l鞗]ۏ5ґ@#b[%7Et6)iǭSir 󏢓n$RjX>{=t6߶Gf)]9EEMDV#~(y\W )_/,?]'tӭ:.{x/v
W(-:[^ϑ]f/]oK3ٝ 4jmS뒲#oVQ:"hkJ~LۣX[YBǠؗ"1
_>Ht%XxUN~a|ۇ~^spns@BbejSBO<4nzbJ`(zt(\]A@CQ-c*O;~,vzJ SLsWZp)T2Mಷn{g]YmT8[#MQ$`]I˨Y.06|J7EϷ_JW3RaJtJvi7S>-W7o*`: _P_9b:TaY/߾Y0w"[2Y:h9&KI:hm6/`?cf̼νYN.bo,)FoNo:6kX`5KY0l[ҌE"?mG1R{Mٙo F5C]сLSў)_f+-֕?
Lݭvǳj?I!ktȰۼ*xw#dSƾ@1d5o$ؕ7x|'cհ%eV>Ȑ9H^zd>c+25i9do?#'uv+*
UM+#
>u
J]T{Sv<'$<!ˡX-4ٔdugk $r-2N С=1)̀GcY2SV􉣠!5j}:nD1>ݙzXL~\J̛UcER[
D%:S$E@ fx iHB4q E,}49!Djd*!beͅY ]<p.~K%ƸՁ=qH^AcOq cw)<Y] ;V]@왾xbFH
!)߰BO>a	$VZvl^ؔ \fͿoYk4mVd-t"BMKЈ2t:¿gwm qRN5y53&n%iT=̰l)mXcۧ?~n'nk9ViS (O07JoO1RK e)\3*K%ͅfPDW5ʥp(J U+a!ƕ;Ƥ;+0o*R-^vJƟ:nSkk	Z3x}V
H?r0mkxEy{@I$˃OTH1
8hwY߇Dp?$"DCn#f?`Kk`_=bFU{!(Z&R;، &Jސǲ;ANd9$^	DBK,Ԥ^;lT驮^u ,Èd"؟r!rLV*``[QGFZh\j"K5)%B)ҿ~,~dG,[bvQne%H*[hH9pƫ	e}/OJ%\8ܝ#Ayަ4k:_>%LWC^ UNtZOn+f
]DJγoxoe A7*Z`\M1'ǶT c$y.PĲȪ?e	Dňc'N,*k,sDYO2o5؊8[lK\F\y=f:Wa=Ɋ,y:mat<75sHLk8+b2aʮ!MLS#ܙ{Ȼ*pT''OfHny[P~76c9i\o|7,UAqX申4m^e	
K#p8ޤZf=ZІWQ>&C͌a(]v֌6*]SǄ`Xz+DrV)i%r8͟/w7cQ Av\.amOtdIF쎊=>E?VeL˝-)<!vɔ&{Zy0O-xowEb@ŌOL;3vAc	~2OM$$wJ\pSM#%3ڝJqj?Z52dvq#OgL!LgљPi[ȚQƷ#'>H5[!2
Dw:|.
QH9tEy27G𿕛VZ>GÄ9$DF"ަ]K*sVU1Q>uS5نBe,٘ iGZ_v^srԚ.-x!bl8]mE
iPPK.=>wlar{#X۫]ܖ!nl		 KaMH0`fBK`Tѡ58XKs
V1wPO0$<ysB>Ϧ-UrJJk'j +4{_Y88M-T3U\+cA`F;nMG}2jpoGn!LYZFcxP3'B1::tSLe['
r;[?+w/8Wgfn*kN=a~	y;XGp8|tK05eţmNۋ{"
mLM\FlNt|c"$Rt-K~K֯9ӱ`]'h*IR;תiȞ噏H휪!{w}wAͷr1x= UIїXs8J ^/NSէq3T䟟k2!p
fŉf{Fh"A6iOowuߏc6>+ŌW`Yc	au*ߎQDOs468
:r6?&I>v q5F[m]
4=Pas>Fx>.(s]gİ;\/U~*o![qq@}
Иv8hm4WUyghP$c.Uj0lDԪߦ ֋X:XGӷKS$Q`lW=QqU{V
Z
A>S79ϋZn"X3\oQ#Mб:p*^ӏ2\=Z<^b	>gq=.F\$>OC'-&*0k{`&^
Ƨ={Uc9O(a
T8j7--$_(u^)AOA|3>vЪӪ;5QXC"P#|9'ʤ.3Kʢyr;:QxL<ɛtp]'9s7<C؅bJ¹Չ 2a42"~νIZ"+IwZ9%a#,fuK)O9O	ބYM>d$S	N'}s)?e{)m1kxSossߑipJý욈f&ܾ0U5ފtx^JRB5l^D_c~v[o-7g%i1r2Ȼ;Y9*R-]+Q(Hϑ$RW%ʩq7nO_WNuc|:%qDyU&iwG 3q,zGб},B*].G~\ڒbKOPf.~!{OA[
Z,A^lKSWX~5<wqS)ΏSXRG4RH3'ķD-؆Otx.)"3a~cۖ틴^{q^%hhh(AjUPH3c:蕆W@\ϙMc/Fב3nkۆѓ=i(Bd켃,D/ٮ]e?]m@0.[?Eo!.?K=Gˆ
w/-m<[eYꀩ8K%޾?8X&7+᮷*nlpM(h#6p[0|+t}\>SY޲דqΔ&Hi"@뷬ay6\$%3~,KyNdڧ}}u}0tL9(8W6g.tܕx'BVL/O(|:6aY/5!ހf^IlfWfLg/v,ުvgyAv3ߏPĈ0i\N1	҃W5ㄲۑ
?4O7CУr.vrY9Zí~n*z'0<@+Y_CsCG+\߼W>kjYdved3PZQ/kBkNY,W;
)Ef|ڜ'huqǿQ/Czk%Cr':5+VM3ф*i|D~)D^ʞp(9瓁g@޶%	FvCZ_ߨA-Rp:벒
j5M=;w_fk9<{)\,
XRd@u>brTqeVƽq%Eɪx4KFVK:CG[Ia,{~ejts 6rgnqR_Lێ;ұɿu"䃳;j)wkr}\N+B09lt2 aH>'1Ďu68:6K+q0^HFw3 :k{ؠȢN<-d;m]~/^A^o;a90Qkv5TaMz ׄBeUC=zxyB`yjfR2W4ʽ?S<o/o'ʉHrw.ſ9.ш۾꿔~$?_Åf_R].띯	!_@2.gI̟ߟn<w7@|["*""H@Ecz6ފY!o'9#.51714lWy#3x^̠pIHG8ܿU~B?(9=H'jm^q+%ZyLπi:(1k$ꡘӠ~wͻnB?'B	-)tLO7|fRjI+w]t\jkq)\E30 l-e85;"I㾷WoylĲ+k&>gt6@HOmLeן@Cqv6 P%>
gHV)(@4aܗnm:dHs^aC7Y%ZmGM5 l"(OmAC;ڵ>9!\pb㘻ufN p]9[mq\_Ixg\=K\'aIɶe2\ؚIבGO#@?B'îo4ʊUZBDՊL^)T.dʄ]+NSDq:$4=į
C2u5GrL$_p?/AN{<H58OdAMB};F\ -8]ނm;B32|0sr>$<@(;lZ܁]?Qm*<7|D
9ۋ+j7uF}!Mҁ+M,W@2#lIĖZlvƴ4ssw=q]o/lszp _ƼY=ۃJb:h6U[dkiqDFP}@DW }Hɍ%䩟]^DAWdۣH@\
 ?w>8qsP
e_SRAӾYN=WaS[x7`7]X)d}H\I5
 \uK4߀^&](U(dCK0VBUvz_lJj"$&k ЮEzMozYszvO!j>fJ(TU:z<9kV| gϧ(/bxˮ|^rT9-.7pqᙓ<usP9n0O	#A_䇔,ϴcחK?	_Ա]͑Wb^G:EAa~߶/5^3n~x߄g~R>ydb>NXtl7G蔪[a}R)ԭ+зK:xM.;,MbP75] aOZ%(ѯ-.=-۱iLeWXն?0!E'DzPD'qޱ%<g 0`vi2=_CPey?d1zsHA~ڣˌ!H>JD~>}GIÑ6ʍ`Yw}KA2Z'-q, nP¿?smqߝFhYnmaJ<~
bm.x
ǽ催b!aJPWn/g<fNpGNq9AD4~p6ecn	3Bf(v0l
;tMKW|>i>P5E]#b%*LrbzKm [~?h2(\'e.Et{Y4ފ_{feWwpmӮf3ѧki}o}AC9a(t=ŜP\;ΏOh~vZP:eQH_t.GOd%5yJesз3XG'K,I7eO:xP|[ߞ0}!&η@^QnxmK^-_%.}ټ%5MjLwKWѧrwF4 ڍ[kZ&i<Z<*YY3%Y6dU|@Qo)twX~8D\`Ȋh5u0_<eOHRnlVK}'8.
aa+㈎H=ڿCf9n"Ur`>I6	P~ѽ=nM#Q$gv|SWVEHLŏgq(W,:4I4a!n[ĠSJh@Sj/\oY{}y&˷pYtv%3^OigM]P_Є@Χϗ@
-`221״`tw̳k0As/J&tA'w^0\]4i^	oy2J|+܌=nݿ@î[	ɼ!iEXTz8_bjjwtf䮟WF_<
JZ=&9
Q`zlX]WX3# bcm}ӠV|V̩Lwb2A<S{&9()T87⚸-n?	o]=	Mw:v`bH}qrႝHp>ߨ8\Sݎ094fW'Ig˽ 5.M4yB+Z:ey[x=gk}_iAfi8mO/G3p>9~ugZ3oR-$P6@hfDiÊ59q92>Ke(y6ey =h,en&r	O>fD?G-H\
qrSL>>;;⭆|:p\yN@%-9O0:+f.5
j@EU
FN43%FEw˥?2`A7}ОyW8Мbڱ'8ã*֛$v3yϵ%VZ@NiNS.%T!JаFH%G;"6UF̃n׎'
e;"Dh<ОNFT?VgL?ٰ@<O1kェB\/o}u蓎r%nR9n3RJWoue

ѩ={˿r` jm2nE*6_L1M!LPoú-ćho$io8{ѵCVZi{D+7?\S9j}ݝ?`ec;YL,N6;ڹ8se^XW+Y{vso|2mZsbLObjWro͇Yl9/7 ބ}$@h1J2mxOXATd	ǋ};Od>eS+{;Sx-ކw+߈8떍P
G׋
&cHzQ7!n5G]NmEi}fyiY|/plaCj{"+R0c/,w@˻鲴ph$mqv9DgEaC)=>4fzXioQ*==x¸%k;dsO	xS`?!_Sẛ$-,ZP(nko$i! :%7gJ!Q"G<ttP-nlDI[N;<?ϳ		mQXiJiɑ%U`\-^"L(lrJēS`j$!{Ctϛl\[dB'aV Rvg8t]-Zc3*pI+|.nI;%q	boCYt0JDL 80f2]:cT/(
%i{> y{ux]Nuu(ӸlUsׄ޴Oɧ#
a:CP}u?D!C(+BȚǧyŀU,/MpP_CO:ٓ^LɯD(2c!$
0D>\G՗~_oW^=Ci4E
nnޡް=w֖G 毈'FISYD\ĳE9{9gv0n`\ov_+ς^'}z, iw@ݝ[x!n[iykX
fG#ar"F^!^m9;$=0Q3]_ڠ>D([{neT'H,8+j0mBI7mT$pWk(-N)}Wp}8?֯4`.~J"/*l33U]yKI$cuE[d9J*5qp"ܴY~hN&!xAc8p2:2&LEe=?䴷/>BwRLБrIە\ -էd&|z_UQ~M}/»iO7x~)N,GD$gpw[_Cc3p|7L^q,t:'rڦm45?xT75b9T)5e>_Igfע[NpxShdnQ-f mOowjKEVDVg#͔
p ɔGQvOO0!<̚!'Q,Dݣ9]4əs-֬L(8g79ʼ*Ĩ,k<33:u#XOcThGǎg7ΛC̍NI/SuXZPQ~Tws?şv395q$RKs0;Y
>MԐ |?ozt>ZQ
E:" wh Was3IԨQ*B x{"lP4Hc_Qx՜\u@޽,3qy'XB]-ۼfYqTe?5N2]n,|n~U?DF`յ^}}P'&&LUFT99e&֟nnƐ=ںMaOWb_2,;0>c;|{`P[os.
]QaC
4Z7.n˳*sf'R`ynF8cΥUefBt;]Nf
Jݼa5 *EPxWvIPG "+:t:AWyixdmepaaOuj[id=c4LW"jxW=>=^QvxZT)'ӟִSW2/i&;偼X_PFUATp0}%3G\>@_s~ާ-\em;9H"JB.BU2N'4ÁViHxbު0:|`Qvzu"N͛evTUyT-F(q^R{
5U NmQqPٺ"|{ܕG@%.>U2U+$nL{FIhtQ6T*ziSA:A R~#
xi#!cgŹ$WXx{M3\wS[IYKcҤc¼ VSzA{YY"73nWQ>C^˫GHka(h=
Tr|loiMWqZ*=nncfɷCJ<6ucK}C4)<>_-;K-
++|8Eog4VZKRYcx=Z#өf]LRa25TؓϸY
affsÊŌ6S3xC a2ZϭY_;5߫eX@`*?m+Ws8.F2mG~d<Goى9G\c "e ;@!$#[;n榍li (ڴrbe>O0~1,0ka -e&Ƅà:~@R<*HuS}j՘=DC
!b@&Yja*s5ZR*\Zl?t5`,Xdz)4}>4
?JXK%5*}={ոe+?U{FiȕT;U#M샽rBH-E0\,uMq,޴ho9(YHu"zs57w-[~rMy8`'
i|AE1RSjQ&}4SbB'`cĖ`x%es4I&^J/0c=,	3YYW;/ȉ2CԳn*4$Td=<Z}VKɏh$eup@[}ܪDF+ Mrl,NڙlV1k`7K/6»[` T].|mNh/w%8RFr(.E?DaӠM(Hn4:;pGSlh[yEy)4ak]MͶv,wSOm"su6;,gBu&:Dݫ坒C%1Ȉ!9VuX,3RNP&Ѷx,L__$`'
jb'^xWz]Oy+KΩD|~_N!jh:8(lJ3JvY{r)̋`$PtTu6heE9<];K|6kcR]Ej		&}.c巂ւ؛Dp(}he&
2HȐEGl0`/x	zU=
7%g;xBJXԇ{ okW"qx|jn;^3>99#|f=ħ!x(>oRq^>n7FFR'K?GVbgE$_w1lil:U-5T%g0}M	޺tmZuܒjl;-Ʉ^Y?Rb<yԷ(;R6Pln&دD=\BWhd??tSRGO.hnTϋ\x]Y#plhρazR=&|JsZIl(evVuZw"5͠.^[uK%SMOY"k_Uԟ03F|2ߞ$*-
Q
/ⳳmoO؛?cS="]{^Y(9B__MkӼ'	.ۢFHWo<KO2V~"y͍9E|Y.c˱5i!)[;T	 1|8+k1E2N3Q棜,khus|漒A\P"9c/X)BTplzr-gko!ԅ8"TꢒzKAk?
N&:no,#
@aOլΈGf/ze~!O͎PbN+k72JH`(n@JҨg_]ߢA{^99*yaovtˁg<	/<	rԀoL8aJY}pziM0ط}<,g_>="
#={sjxf'x+6n	x'@/'╗Hp$r,6{/MRY*|ބzݢ' Y֏6*8(ʉfOqb]6oQlhWA,	U!xA?0n)xʣdW$Lڹ_4"|PZJ.-8YtrCF&fN~*P<Dc-V󧡵{ݑQz\[ۿ[0i7΀@Y:VdFK6|Askd)POvBvͧߍWONV+E+{,TI8cwB2//2B_BPQY8y?B{е;҄IBwѰf-3c,\eh >7INUsB(WWUOWNhNr;r\D{B:reLFWƉq~=c%a6d!=%RᦿM1aN[8S[}nd:6a2X\OMį8j
JT	DlD3sJqk-).Z|+2RlȡxNIT^L$	d9BBt/8kǛM0z?-#dWC6lQ
mRqQG0}TatCiKMLᴻpa
 a~	Z/'t8{z D];]VS<Z<uSM6CϒL *ŕ#k
IjMmIVh2&!55\8&"	13TKjw!7(M؁D.b
ƅs!N2`+c6j_RR.T>SM
ȐZyΗFU6BtMyZ/:C^OzCis)SHLsWY^rӫ)~iCKG8KmԅG/-M	I˞_*8776tp_VgS<-oIdeQI4ʅQyEoN>>↑)<g19TKq@)˔ooK^aO)ϴP?EӺ2)A=jCPnm<ԗa1G~:aalYe0sFZ-X=̧],Fs-\8
}tn
msC
g0hBoºDUR l1*rJ7 ]GԽjԢ%z&'Zt]p|
,+LǸ|k_yNc]cWm0
5vHT@v;Mp0MC!\ȰW>NB`4w{ns^b|9A_&q6s֎<QA="BUQSyZY)9z_;'e7{;L`8?\Cpinl'8r^*ar05{/=?7aެ*\jW*ni>מӗ>V[PTttj.sFU;}75l zZc	f4uo.& ?!;1Bq`>Xoi质,Kqx_5FHl=t^xul2W\jcz;A,2LC떛nir}9F0	l^>oG~CtvTqSflA:P'w
U_Ű6uӨZJ-ٶ
DղW4nvDF#AEͧ6v+<dΓ˭r||'*_0m]nf`պ(elS
'0}sCm܅̧1HÈhy;YxIndJ[F{wR7p¥y[iQBP3[RS@#hr+"`tZ'piZR>عmV{+yVT\lᝃ^cS@d\@ Ć)k<MoRyd_2JYOri[ht}PLzv4lOPFSn!jC>
^*ssCJD~{
u?1IWyx3rf0TMڜg8o4zu}?(
z|qH+r
e\qug){w^"NR
>7yj&:3^:=uT=c5 +nct	`ӿ
L4
]^e^9/Wnk!;DBQ&[.k[ZjފlL%VmOic6f%tk垷AOT߆%uo)ѷ`E0wZ;sSCϱmUQwwQX]H+&4L/3}_Qd
TiR¥\98JfƳ&ipMee3$30Ucu58OLkfQc=]&:p|)Iuݾxrajy׮EێFUϯ
yu@+=<UXss[,=D	d+SR0RRGȧ `a`3SB`Lgv}s8Okû'zKfd hmawF,3*Q7 )V4~!7#~х{Dzo韪ߏnZjBc輢!9yH/y&1{}pQP~>ߎXf3׎rWfw?M0Drkc^%:-GWc'vHeb]T/:ڕN֠7dؑpMG,Sp`rA}fnFyb>M?oCz3/DROCۙɒggon\qV[CDWT.>+?uQM$qOCQ2%1`
:Gx˫|\`%bR7-ҼbOD;K{9Sr]$ M.?
O'$~7w
>ruY$!l+vF
|(DgBd#2&e(0kHY`ɢ+Drp׾]_7[:53)8$ҋg/>3o*Ts;jh_J%>W%G}5d}IgP)l54dO--^aXjm_@zZw?=\	1&v Ʋ|Hn0.Nͥ='J?=̫WAѳj贗l%_j<ˉkMXfFp=-Rr3]*dkA:s`#Opۣ)|Y?"ZsذgDKJX6PJ\!l@:MǞlČ$܋[)>>^w}=ܿu8Ov2IG"(Í'戦}$RA ~ h,/㏆.٫Tb(׺d
."un)}Wxu:q7joR
	\~;Hr96h{^ySVvmQmutdSpt"ERCzm,qmXCJj
d/p<0aݜt-!S][á	 5>:ynķFf-ޞ#!eHy=8{v`w,nwG/_¥;AIj܄h N%L,5I3בuktPUK;Rbilqi?{<
UHDۋ36K*I)p:B/7\Ed Q/%Y,UwU8KRgFo?A[4]Ƿ
~a2'̉ ӏC/^=Cȥd<Ln~`^=6Q2ݩ[lHEi.cϙby4߄gxg>
o*lۯC_8=nNM/SsF&NGfty(DPk	 `Q)J:lbj>0FQ,r5 U5#n?c+&L9З%ޚrYl?@O
 ʾ@N:E0z'\c_o!?Z0wKIJǇ5S#[PIj'mA7K[9ZR?6Y=	xP޲S v	:m|X-yHK.X2\T9֛rIp a	sM&rƧ1aız
OԢHVUn`0ڒqbZA`fmm?JZHe?=9@u'e9ab
H>g}-F{av$ ?RnXz']
̳N޽u3dLlzzTʐe+;Qc.b ~ˡ2O#R;b#o$3B?cO5М^֝Z|1)AF-t$m=w"]}㖻|NC_c[!Z);21pRSn:텹(mBG
҆6ˏ߇Ђ6R\FG稦
Ja{IywUcI5ǉ#f+'EQE,lKXvʭ|K;쾫$;7͇aɵ.]oWAa!(;{YV7zWm𓾹3<еӓtBN꒔%8t"~oU×,пܞꢮj]ѥ!M<v 1!D"A	@2ovjD=uQ<C˃KJ# oͅ`2 =ૡyd*]-_Q^1
{s.Y>sE9̈́3"Zr\\|Os7>J?me6YNX$7 ]KsP}$hԙ8YՀrd#BVG~P3Sn,i /xgV@l3fhȎF*Б//>$Vn宕\f%eR,
I"s@Zulg0Go7_qu	~ AȮW5|ZƦt=ӂ6KJB$#TFq%"6Σx@<s2gkZ]E}eYqy,&&l%`!q䐦ѮTb!F>G:^?1jޕ(a[Pq&|zl䧞9?F{ϒt(1KFtcى"cy5;kw7:zE&Hh	EsWS^ɇ6=͈I4ok|[if>l qHdzCEc.?o/EvQtCnQxz!Lz*I'+񗲽m^GatL`Dw#N*[c+PrRDt$wwgS⇼u/HMy*k	
>-3d,C.:%wRd<Kʸ9u.YRZSY0v*vW(`+d߅Zķ߫V^(^g y=麛5tqMcwzSG}n8;Kgu$S\/OZi	a"@av">yW!%\z/J p_ƸIsln.`Y}ÕC!mN!վ~*f8n)q,Ü1L<
Dh\.J1*P	oQ@_BGu2>Jr1TJ -"w^u~/ƨa	0&)oWTT;l>Iܧh%J] GFȬcs8a)=m1yw%*?Ck.91jBGh_1p%Ovd7~8yGAq>iPQáٌѷyt<hتqy_*ޕ~<}:B_9<Q<[#׀:)t1Kw	E>DC2}=}?(sG$k6g Run.fݥ)9]ޤ?ptG¬vv})WB΁(4upyi+N> +އ0A.'~*[D1rYOo?ԷoJayzIh{&E}UC2(D.rΠkTmWXhStDwd6}E}Mw	X"]RPT/My<JvYB$4֡8;T1®ՈkUNZ\.x'>sJsReieHgO^-2|
-Щs4&x:W
h6/~XĔ59#>ӲRSAv,bV8Nj5;bM5R/%$\uGH=q3/7Jzrvn@u_Q	E7K
_<
fZ_SS#|Hc>/N]xX)>B4e);GX:?~Ι@+Z4aky"C*a;=,n1ވ?d;~EqXF^*a-O"*({J!4QeO7*wҌY+6%ox9V7p-P0tB? :Vx0޳;̕-XYr3!n,%v䯂o]NtHh"1SuM|?уɑbZchIc܆3?-'Ζ;<8ɍliGIYfO)3^Txո'FleVoĲ2ݢ-0:TӜ)@rKs6>mDdTc>]yRZG2t/. {ț{GL)	JP*
^f]^=*-S_wۻ,h(ẌY|QWT]ms3u7Hb NP-㪻xkI 2|H"4EUʊR<yxڙ؟%ikj=6ۢAw D-Ne`XnLɇˍcׁv^Lf"U FH*@_ν|寯S8;Ĥ睃e8bXVw1Y0Ea!>L!^YuhZKXl"O/5mM+n}(Nh,j[ZrZaΞ'LqQ+8Kɭ݈|
_qDC~nja7dA_ᗱ:F:U\IjЇO&~ kuߓ#KIwbg{J6(y{cKP4X4bSeۯeBp
q"&zuMp-zVQ ڰoΦk}<{bїk-Y&('139>9`yZb⏏k@M筨4QXߠ \ۭh֪cSm:6~Zb㸟ǅbm/0:B7eb>7*rh7P~H1%Zс3tm)a;%;'?3^XhU!m@<9+hx;cN ȭ.<ԃPST8 qE\|y¬Ju{;ox>݈2)i֚ 	&ǘۓ=uyEߤO/,F7NI ̞qѨ`'cn#s*}@n>`
JBaY{9C4o:yϖW҃#i
_/tsoS
@QE	CV*vH~#/J{om쭆4'\P(wVTWdM#!;%&lUQ+)˨:A{"F0]tw\kpy\L~`)tŧsxsYwٿpu[0fvt5\QP'agj , tGbR:qx7#:6s(7b;~?*f/_dy[k  ^yG`X:Q}Ta1\l7ynD:$>*ma¢)l?=WI]{$.Uqh1aZ9Pg9k=w{2/c(M1+AjY>ѐ%O.FNFXu"~
Ǯ)9iC?zLBWvA;:c--PuV	6&v˙TaSWHl٭ܝxP{&"&STO|	'M
n彡]CW,@u=K/PEG]_1ha[(	gj͆9B5
<ة[8ԅWt^<y48㟷D wz@;
G5rt5i 4 C!)IGPkIR:]\g|LUO"畷C+TlwTkcfW2!5ש xƅ"ֱl,m603: 
#A˪Ɉ7Tł610-)8ʘk,.0t]]~j[5$+Bw/?-\Ʈ6YGwJk3
j1h
Wi}2H֠O"(BY,JJNHv{CD7tݺ4W?$έ(նsɚ"$|R8y[8xAUJ8D+bJ!)=#,a\W2yY_ ?^°!t.;74d@*[S(̅bXj!}V"(;欒(-5i? ]}|&=$`}lr(*[,֢Xm'Qg?UZ>,V\B,]Sk-Q@`TsM&wz͝Ief+z5c伉bӬR;n
I-cp4C*N.BE
+3y?k@toe|:~n& <)gCf)ݪa;x*LOF|Էwȁ
e3IWȬxe>GFMQKi+"S UP28@lWGʸFjU«4Nqqsw(E!F!hyG"v-5J!aΚ)N\kMf0SRSPPx%E_7,w:v^ƻz6Jf^Qe=&
I
(Ȋ*mYZLjk>%"qOl^=M9\v
O, HjajDC&oomoy)CrzL<c[ .M;uy<LuO=w0}`J@0,x<-XZBiFDe..>:QLBH XBurgzŗ9P(|1&L5f9Iv{2ήP=AK#Ga UᶟqP9X[\c׀<FuIWowRC<dAxwG'`OS1>hu _ G
EɨI̸J]X.Հ(v@}vm 
t\I__[},G3:eo,ssoG	:f<tdԲ:܋RJrmŊavvy`{[uT>J2 m7XEO_=﹆6L|lVP8bPQs@ xZwwoSFi5)X%'D\sFp6G1՞C5,>sH*Ӳ$äR
Dbt`)T&j[D>ż][?%/S6\LJ*`7T)mAاtYq1-`kO2SFdpP#{G$
?&6)N'Yn7.9+2Af&!4EҦ9P]Uj!Ze]+|kOLˎbpELFKjvEzܞLN32A8a1x6CZ~]*1j/Fw{W+e؛+uȓ౽@u	%БO2姼l
22Jσ>
{2xµ@ks}6έg!Slv*]>}+Nt5%C Lޛ*V.3ǥoÒBX*K&x{9-Fm:0PuoԂN?Y{3c4)yFyW,G"b*VDWztݞ[=0s(rF߼Owh%9ෞ )94#)'tgջ݁7̢٘y7{u46ז2X'm!hn@9mwl'WGB<B ϟ9
a7[U\"HyKRȽoqz} M2$cvM9OkoĚ4O
u+˷=8 έ!e^m[
	f^a{ Ѽ|"tÒ݈3xDꁄ&K؞L䞯~cI/gjۍED's2:BG/&eI+3B%zj/
X,˼"SC^,5x{F 9HTnPHL}fwᨛa3ikoq`1au#\{L0F'O_2ϛgsЭ볇ưb#!ck.|Ė\MWq?&Nn_ԫ+~6Ⱥ}ey:-l	ZҎ2m⮶샳i
tks#Vsſl҄z3K_bii𹚴>>K~MOJa
rxT3I"(+_i]Ik⿧|/%p5pu7RFo*c(
0۸~
K]|Ѽ=o<Mwn3dA/;W?l<#,'ʧTSk2{35Um{m4J0xhT.+@jAl
aO_9ޗ `+p{N3m&Nѓ1R+y|cmnE-ͤn6qՎwgz1nr]\ӄo~ɌKv{(Ɇ7Q={|k/B))VM݃;	`g<7."@RBt
ut%y|D
Ӵ( [khIdәIF,QC72139WVx+ԙhxjU~2䇄D=e,&d4Q`(#XׁԾ/_,1D#;~4jt+Z*Dsfgdh(+$)xّ7r6>*>O -x|/(U.|#\
Zq=(n)q6ҏ=\/B,Hqg(zwD 4:)#KW'^4|;HPP6eX,q8bymZEv܀\L냝utSw<q/,o/&8>E[]o2/?$-o*3VH=Z"lt&y{.Tf^&ލs=;U9ΪȄJoSЇ	 tr|[HΩm	DZR6U<&?^\`n	(= d@]P%)
F3D+5hsHN%)I32͊yBΚO
2ey%Oa	eoj>â=kyi4L$t
t
[jY Hߚ~38e	ں8u_M\Χ%v9nI7
~Kͥ&dv]R,g]/]b5+xo#/%I]{Տq-Gf7ml5;8r6GFW7lLRjXc/ךҚکEXڡaC?6tikA|KaV
!!Dz%wy|4}~
G)&	<\uN .k{)Ukk
AO8-qBgn<&s)4>kȩ9N$R)WNV~ -d[qwL烵@?i<eF-3~ݎ]?zϿ|Wv4SYNr?*AiѠZO[%+@?"R;z<p1.^umqÙ?tp5k?;uD;$Dlݾ\֒G3߀bL_-６O~qP.vX]m2%B9/%:8OFdQ/(|#9;B>]Iw:7&`zgusaM-_  U8
(݁-݁CZ#Izkj4ϙ토P"/s]ߍ6.Q[f2axJ(wgQ[=\TĞ> Ԙ7vJbbOn>G0@O^dGQ$}-
5JI\p[ve_kQr|TazHk/nwvm(Ap[F&,1nVq(6s2?%_n%=<'$L3fYg"oJŪxN`U''Wؑ*~ E>O˽fXAL?ֺX.Z+[muf6'cG
g㷖kJQـ*^r2~В;zXNQya+LHhieq3vԊqS^ *S,jvbfD},^(NpԴUo0<0ٵBU/BTU%RRz
aSp)WϷˍRTۖ/	f9ք
/Txٽ a%+/۰[rbcΩd>mnHQKv\(8i-`l愜-B_ƔsUوN<Юahyhc}0vy+_#w(4A?z`~}/0k~X$zď8xa`6gaU\;1&ʱWN<Z6~X
yTJ5
QSnE珲tuuSe^i]/*p	L<kjiÚvh B%Cd$RE
J] V똧~ՕiɅ5q!Ck?_eۃ*	@CbyK7;|v9BQ$|;8iQ[k=iD;}<[(%pSaxŋFِg7LI^՝MغuKA҉>jx_4n3CG94GϨ$!!r+\'J5<u6o9:m4	ӝCsLOP kx7h"oخ'JoBqg!q la@%YI#.87VNݥYkʽ$߳'?6ZiXѶ[L\ݜ9\:1Q<\%O;"͐JlVYխrtZUHe0^Ï[	{]YCP+
Il̎S<|7hic;x|K̀DQeHXTG]T(d@ůHڬ~>ң9*@'uP\xsBShk3z6	݈~7ʗ
=?A+m*R<+Vyrm#ggd֏0VFt^Qx갹l&\DXW2o^r!"2@+~;&~BX?W([G#,Qn5**Eˡzwn[ʑ z7Ӻ1xKu'}
Oנ/UhoBo%4	3[6).k
Lz0Tmb"5*O__Tek0F-ٱ_ *jŋ9@EB8!tA3S}W.C
@"8Fec="	ߘ~ڙ#&JW}N53dۭ/ dM_O]8M}wQ~P}㉘$lAucyų9+2W=mfSn7l~jQ_S=!#*%6y,UX1gK2S/l1~i&"?TU+5XDak[~k Fn6Ht*H/&
l
	pݖjyת+	)#Ϻ;FYr/ d}aCB9r#,\Q,b/h[HK涋tAtw@PvbFtސyHHE/7p8/,y/ull]n(徺<UYSMbBy07`1.0Kn0/,"9?anq<>ԗ`(IM^ps+a6	P񆛮=I4_@jOz)=xq#f$>!4b%X"č
3#E	0
A:	,QXہ3Z^ߧX'_D'Վ[88L2@.N.EN}$N	S! 1$N\?0]waT-hn8\(l^̑\m(i	ܳ5a|s߀!o݁qJM̄iC]kSZ>'$#ǁ}Ұ ejg#Ӡ6ŏo^2^GUZ?\ƪgԎcl0zPeH4DGfez*T\6$*HS+oՋS	B%bhǭ >
ONӷYhp@imwt*{Yt&@ݝoQ{Or1S aV,ADuW4e3V,
b4tOA;,9DQo)
,##.2>:c`EȽC
QֳGa#tEnݤ䁃=64vLNVV6Vk3İC@Mz
ʧϭbl2`z"elWm֩1h8_ϯi&W8AKTK0 y	Z] i)QYw'Fy9wA'Oj
`xJ+H4v	/<毗F(޶ٸܚyX5{iuy-ektZg3?{r߄GߑV}bxQC^pr~f\H94U	bЏoëڪ>ċ}|6\aLb>$#3-OF΄}9?1]++=6\r8^HAűuVN@}߾7"JWLNrneBX<,)MRSr]^FwcP#䠤<cF#Z'3*:1*>q+:x<oobpK$):)p)s%Z:E\XgFϪ`a%.	X*5!pdEqB2_ՇXĹԑZl =.cY ^Xf*E-|^}<JuolpR>$9DMg`;Hr?foy螜X9}th<v)[K}3oi;WAȯkhޯ 2	LZ|+yBUiևbbKx8<a#yc=OkOjS\[.F;.0<XgWI\f}Qt/(TŪG#N86iFb7Zc_eݝ
s0r[D]6(K3Oۇ1E'-?Bޗ)mƵ>'%
>ዸF߉۵<y-ͫrJQu~UV*Iaa[a:͌h7tkFK)]Ӭ;X~\5Fۈ}(9DDՅ[q3بGJ_s
|TjJ<1Wj\*J8p7si_f?⭎r5%'b&awk
|u.sm-?7$Re"[}/jlڟ4h*=
rFخN%cG[w|U`=^.mK[㻀7%u'$pt]U	CIB8
)?L(
!,(*X"L;>Yf\Vae_ԄW5ev0en/YQR@JTHWb5Q\+"=Qj
$"Jk9\>]^@M@	n.-<rDR{_4PmEj2
Lݞ֎fi5Z'`԰ocAQj<<@`j`tNW[+ bZ>sٟ~CzH3t}pO^Or&*g+-Vrm+e"1_d)_B V]I'ل-b}RMf;Z3dɡ5!IM2.<N5xúLE~&=iO׈RD֠~.MT>=@uF͗@<z!o",nuj4(XYESk`6w~OBi:YY.m77Lmh
7Dvk+WߊGR!?1]w}vWVcJPwc!T:pM.`W[?@4rr֓)d6NZ27|;}"*MoŭG@)9.X~.^Ξ"	||HCɏxZ` AX=5MCh;e=I~$	&Z.7œ{vuKT|.u4t{M86d=0.TgL>zoݻ5{y|yY5I;K[Q6amn/VB!!̧,,Bi8ԁG-YHTx#"]O-owE6gi+jwOak8=M|v\"#v %PORY&aZ>x|WHx!2N;v"<<;,OvڏVjզ)]C.3Ȩ_+6e#fB*ZW%׿iߦJLSyٽxݩ^JJa
l9m Ô5 +HfwQ˃Nl
/.&aG?ܭLN	[0rK; Vj{[ʸ if^p`7%0f hWLk1vSDo"
7`ymdgLrj;4/WްESQc0]@,O{ZL>qjn	]VFY]TC e)o7 C^z|P&C^GsrpREARC3nx
xXi_b4vUv>9R9LGpe&p^N/ql 
L÷JvnK&Z%lV	#zZ!dhnX"dMvX
^OW?oVVEO2wN&@J	e]/_!d+:VbʡoqLV~vJILp4i[o]<:)[m ],`dc{	{X1R86NwGJj0,[ SCC7JņNtߡCjwO<׹iL摕&C$
db1\ZTV/?UWռxB_bB7FI+sd$bQgU,ϾMa5>袑ڃiu|#CeOA^),zӎlHC{]("kKCRcԱII(yt<᭛0[|/ҧQwʧ\%ٵ]B
.af/\wk?,B9FN;H0Q6t5
cNvhRY'#{ٝ;n3Y
3<vr2^E#n2 Ί0Ei>4!U粻fYݮ
_IN`8
1.醞dn_*G:PDŉ.VЭךaAG1A9x,^~!\Y@悼}٢v
L7*QCkaLew9Ʈ'h*uNʵO*Tg4eK@׭M-|7F1cypOS 0" 6^jfcPJy&G=UhBƻk	xOFSS8Evɓ)s2dH/mc7f~/ϕ%}+t%pޒ|s9J_+EVdMs$/[`YȬ~VlU|lJt/_]IUU߆	%U^r
4#,Аg˲=K1@t#P]
4&V )N\T
Gsj(t%䗞nFAx[d Z-H,ؕN̎Q>qPTZ-4A廾]nd!16hxߡ@zE["5n15o)qsGnJJ&o;&[SBܟ{{SvoDܿO;ucE^Xg8KGE]2@>7GAd岞0Dj)wC䔻{ ۗ+Z|~_AIY*Hbo5Z܁8"l8~3?}zeeZD./>8t$k!q%8AÅ%f]Ӧg3UHC.5Us{CZ+ĕ`Сkq+Psh.x2B&J=Q7>[D)US`؀:Qek=zcp8z<}_zEdTXdkSG
fRhn92Wxx%}e])j3{T:9MFŞkk{ϵ--(SJs1d23 zm=K?ۡyO|UxV̑zn+[q(;PպRwq'f.i7
E!*/csB^Ca'O'\$=9HNNDOW!>OOSa`|͆KvcaKs0/qwؽ0eE SS	|pД`}$A{Du{
?+ǾP`Ȼӓ{>h'$$>rAqNiy_T /(uU8<|8Vl5a>WC⧉׽T<,#h;.R~
/c0^~|o{0r],% {
Zj:Hm^@kMa,ʰ&5Sp(vVw(CE} iKЂ)V.+NFݶTY⏥6}AR)~WFFHsQLJI05Λ^ibѭwhۋJGb[(]<yzku!G"Иh8V+hU໇-=E^SQ`atm:51D
B ܕxx{}q|  5?(,],!)iDH@	MYd~z;`310>!]e	?ҁ#N/%/[]Vэujwɗ';r[N
*P0*VgFס9RK̎4
H̌
i1`<m |0Ս\Tkjޢ3+dU|W&byuoot\EOs gFCnhA	#NCdh+eH/TwٙUY?Riҏ$[;4@QgRv錈}c
Ĝ!f`ǿ@~vwnϟƏϊ\]6iag;b_Úl%&WaKX_۾6mѷɞ: !-sp(/ʙK04[$}%&AfglgҀ$`IWpT9Id	_	آU=j]]@ ߤJx20Vzҙ-jFe갤Xbx0%+t'lߨ'AmJax]O-5cv$\2+	XYQ#ei4K''Vݩ1F^U+x`ԧ@_	WKn]o
niц=5^]1Y)FU6/tYCb=4Y)H i*䝑ڔ`I8{8iUT	0taYP?}Y7كAb͒_QA5Be;VZ-^p\,kdWk%mcŗuPJĥ8R_rv]D4صW W]@e4懦nJ[= ]AudaTvG{-9tm73g <xABRUiIU5ߎRWh\c!axwt?u TC8WyU͹4 "06E|Xs[o^r;Oȷ/sgiP5
mCu%^sd{*!)1InIUɐr?CR'9al+*9jNL~c?`}H]<Y9u:Sab0:zCb
\ˏisbvN
	N!C7ѕ}.\Bt8T}& oC@`]<K%<|-=yDy}o>K>93ɢnv,tG5S?иt2ץ˜k2l߇oC.:1l-M[ԇkPGT8}HQde-[m|]ۮę?ҧyi}Vc=c]@UnҎĪ,z.R_b@>&sJ}lg0n6?n]h})*pf*T窙՜NuU ? ˕W@	sD%Bb啨W&^LvazqeO;X1V{1Y,ICiX?˸TNCͣ!5涻K8Rzb
ɠ= ohQڴ=:bc/I7/UIX瀤+Oȿ7z-Z̝˾Sr#u 'u//OEL0w-ymRA;6,lMfdUx@6wj7bwotݪjk
 s$e |nX]W$ ;"oB;6ۯfɔX^к(y;NreE˚%YNr3	B{C~hL!ȝV1;MaCDd y0
_WoR]'7Y?Y'~Xiq+M)th8'?0^2<#b@N6.$:%ĕ"LJ4-:ު6#
d1Y*{{:[S/sW~EXwH5ƯњއʐЁ>
o坤?ⱄn+4 G+@,l%H,E3/miBc!DTw/I'gS),8TyQoʺ+<hMI!Z lG[8Hs0k(;}yj7)u5,*,6Y_j':T =W	UD"rX^i;"^Yکq
-%Zq]apђ.`~'ji GS!ؘ9+)BסL`nW^'Yn=B>.`VJ%pB7VCmbyڞ`9[WM/j¡O".9ំLv1$AS:;9ώ۪dBw݆A7_,C	pQƊoL$M~=O>o|69K;Iiz#lM.}g<=|UR#`wfa4AOI83j0਺
..%I5)!f2JXJx%R5P)9NlVp\Z2.)Ar/Kw]nuC\Y#Ns)|^Fv"	i%lOy!fQ TgIl֧*߄o{h4W]],	v;TG;]EJRve&i$C&c&j0wԣPD{o	BaXulNE|!wI~jKr\쎾z|$SԀ_{9Q`}|:LJ>]YqZt5p;%(+Z5'DWs1_u
CCsc[
ݵ[KIu2qv1⡜V숍-\DS2
+զ`E粠0w	>~<Lh.Pa5ND<tozUcx>J7ѕG0ڵ
`}F=:[3w±iP[U/2
*^~2
|:n+!Qk퇲 A%Ʃ!:|Q!,܇n:<J jrd}_h/Do"%HXI[/<tD|u
|dR}{ NR3s"VTj,VE^M&*ؤ>$͑vb޿s?nw탆LŪN<WЉڦ@(+Sә?Mޝ{%؂[KniG|ZlABFs2mJuzin?{NH\fueW2'0x%S5ݡ"RagNWgp۫tm=_OPu
x;9(+R󁫄A,D88y 
&;r{J>;i{ѝJߖJXxAѡmv$s7,a}'$ :`(gXm*Gl\rS֓>Ng,A7~:l߹oˇ!SM~		{+Rytè(Jgv
rͷ<it>
jݰtiO4ND7N;1|D\`٨_#JUԲd-5\ht|^e[L)f\1ℶY$T[lm\UnZGh1.;;whGR_$a3Ica}n{/]'adP
BCYNuQFA-=v+Wӑ  ǒPٵbKޗRNQFa0&>Ff{P(XQd^ENmln0#<&Wb(iܴ-cN`	;Se3Cmpf7Ӿ+VUzyYh Xj{Uhѐ>+pVAikN{ְ&6q-@,1_cj-N߂0cM #큪vs	*@~X(U:SCwn݃tˁ^ٛl.PV"eW3I?Z??S&es)ܷwtB\؟ۭ
Ìq#`O5ܹ<>zXlGi:ZN#[G#Ji0^ë,֥yd#}R@R C_a/[MGOr^"<e	}j黖;`nqӦy"8u8Z8h7$6@2scjfjg18?SљA.cz)ƳmIl'֘XIi9
^y7[薒@pnݡubg;oD]}`@9Ha2	Wfȉ q8$uce]OZ	M#
[lF^_L<pHe	Lw+Xgx>҈,MkxdWB<Հ^mUR^.-_qyso<vbVumg*h%uvܶ[_>TV}嘾=j~'p-2gGJ]
&hcy\?\K7:zs<̉C,6$k$M |,~s?1$o5?RO<b.MR,1|-nmb8;f뿫ݫf
jT>`=W{"w}
{{b'lADvS@2	ZՙWK+`4Hj [R#"dӆ]pp+a|
Jn@ERcOf;,	zF\uƳ7~͢pip9]3.;E5(~?U(ח][]a=^HEXW
,V}]>=ɨ߬B_m:Qߩ|{_S*Vs=ա;
1]mey-qi6\9CY[qcqA͗2<y/Ҫ0lȯ*Y"#⎦2o[x|bVDQ/s2
s%9#ݾY&3tu_8yǕ=|ll~um` yJޖGCr]	Snp:kAJQ';Nyp'`C8wBzԾ62EEVS~Wozм?S[wQr(8¾$-.p<ȸ&feDE۷28-BDrugVJFům~\C)Mp4nT@ua՞Q^:^_
?w9?1(,&[L 㣼%3%c'>z{ca0Ȳ-0|GU~UZ"W~lk^.y99z%7Y	gk;_[TrM*=rѓH^+(ϲM	ˌ,DuS>>
螶=>{bU<S?mC`eٹLPl}w{lAD{fx}ٍ,8|~<k;Nl㩯	o
"8z[wCjaWRuQ|[mK&}$=$0( n*?8x1s<6OO_T3sƎtB9FCci1ޅ	K\0wtx{迤T꿽[9|ȒS;5UnGC	У~6z KcwMCn/>`&.Hx\`q;yKIQ(c{Ee%loa:!	mٯgZ:gd=b9nRDYb[oJ!Ein$vI_u%
a:`bӷoWR%
R:Ҡy
"2[G)p+۞#{SZ$
$fغK~ds пTĜ9lpL[8y**R*/oc#r{#`"Gwdh/0_KVBIflA4#U婛5bsMHd
ىrԺ^ʊoB)'ɅCs"ҙvh՘0Ho׏L0@|~ĘbPa0z([Q)ׯx//OYW>;
 ~	f;ř	uiMsw)k
/6~6Qߟ\ׇ$5rT7	%)vzCt	]m]Wğb&cM{kߐ.zdXV\?e$_S;a݄rrwǷP=I!\*asM_I">iNzNPaӱ8Cm-)i5=q
.5[oƣ!;여q^]+-X	^^>8<xk>Ti30IdL"
yz.8"ZSpB
6B@VsR<;)ݥwoO1~<PvskwP5EnkͼfQtRj+zTs/IWާ3Y:uim[';1>ꚦ܃FE>"mydtx:`=i,᫣d
8*>*	'9{3hIc*ySk~~)Tf2n\_<0]8%\+rCCyBP< sY  $1=`&	paZpS?Ӟ'􃿽F Kx!QkL1cxų/Y*` 1bsAnp
X5B8	7_I򷛠i(ٜɁE4!D0;/p_~UgCCk+!e0iy,8Z.WkbxN{ۅo~dOݷV*|jh,R}Ҷ<$jx?zڿQ1.2󽐥ح0.]	=jU/&~w<y/) KHbѳ3/d_7Y$|o5jZ~<5A ./N1fb;G
%:6jQn1_ɞ7*X+AN-ȄhR	\rg0:~<-Ȩg6cN1U)f:m
&)2<wrz$JGB/Oul:a *&12̌qg\`O5G:?m6?ϓe[ji!-0<dG7R>ez0N#*gٝ:R\ڂ}䌁.WV\{ŹvjP'܈矫fzqF '3BXy*w n:DNrd#V<.i~~Kۛq?yLs.3"/yMee$g6Řn:ynX}-SVBqsNǆ~A@--cfg2D)HpiNKRcY烙;?Ćzpl;e?-q^k,~jZ>z|6߾<%D`'E0Ȱqx	$-.%ʝd=}*#޹ЇBʊg"u,10L[PE5E>~ /DT?VSxzR1
=IGnPSq= `.ʙ3:E=\IPŽ>X*tGI
Jnz95a

W/zIXT1Lehy]pĢ+iX=c8/Nq-kWBBvnquȜ,咈C{>d$۰lIr
rOuW9Y
Qdk!bIRrIV p0xkB9ӵV,i;NX?kK$yZQFRABm%I8Y̿M;vyhƳ$"Aw{"SW+0d.9ۦt+~ Φ;:a2re4
4 *w2u-;G
I'>E-յ߉6fsrĪ!iܖ,{8ЛvV	UǾx`	NLSlHpZ,`g;ėw[!GyT?lݨ3JS4QZh{CiwFw=,d&Y3sG$N{l/1AYm`=fGG**XȤ6c)ꑒB1s*RoO!B{\w|Hfs&Phr;Au#k.&qs{6e>q2N6ؕk̪jcҲ%[m1lY>I"m}ٺrKi(J:j<cD/pkKɉIR٬4Ω,Oȗ}#wO'y
KPv;U-N1sdoU7{wJgmB`vi PYH&+EsJRw_+O}G02![25T"hn]|`L}zuId?gW.+F׀ xAXq[`_'ߍۍli	Ewm윕Lh;dbf>]|W5xP]p2ljbƮ9dtjى%_AE')nR˭ZSةi*ƯԒ_}CsJ%V\vfKjo.:N<)پ4{ \%&٪ԘdpۓpYKWqs=K=? gr_i8<GЂ64
WRW*}Z,Ac£'{qz|CW!wa5<rZϽm^%Sq}}=LO]ѳt2!KPF^&,sSc7uh?}f;.܊FcOzIs+4?t
Ur('!$44pCd(&tfu1oi$DA@#J`z&&ՎesẘT25He}jt3H,G*"kqQ]_M1Љ۹EK<mO۔=D"ONCGPOBU*lİL[P/C7'IһDŽ*BO	ДBwJKwF/̪~k}Zg|NʎVrBBwZ{$ Ź"2F<iWA3r[V3E(4ʌGI?-
X5qjU
I-H07^GMќlCtRULiۗ)kE*gؒQ1Y")Vp\20|9Rh[!AѾ\L>aE^iZar,< s_n&?%5Du)")+	hQI-Ŗ{*fo-vM
nT&z]UAvc6\Sy*2]SV텬|Џ
H2fN] Gv]ze_ٓ`HTf,yt{`;r]48JS/ӂeQz"5 3AM7 K}]{RFx9%ܳ/Sl9qf(h^O+8]x,rOHoy!0^efQ0f:)r*2睁hV]Mke]Rbc]s'.}n\8R6V;_N6.2e~Pce~TGI>oǈc@-iv_d9 F荸}wM-gLT[M^6{"
J|Cwl2j6*~
XoOpiڅIk.r/;#d|."o1fwO֥vyyQT@c$N"P+ĩx^S%_>!^SZjasƵבJ3e0N+۹1[KL
Y@vI]aδ6)
?̲6ƚ3}|JЉw`3}v3dx
W?[?lbW9 #Rׇt:+7h()W+'S̀O&*BnKCHN3Pm
i~ M9voy
3Qm{@?Y}ϙP'aK%76jRw>ܻyˀt^WR"ʪ:p *-{.6),8;ʤ3BGARZS
wKvJ=QH[?;6xVU?e:3}t_} c9:Px}1X[m&BRfKԟwR,sOjNNjBP5(3Pu_/`߽x҄X>`Ms
ڿAnwpץ6ݮێvU~?RYcdE:0(mw C紊q6W*XR?T޺ZyڝI
в	%*vڙSms((筹w}"d*`zlp^@caY6쌗ʿ_z\oW^iQۮy+ܯs/zMw9Ng0OL~!\HmP&t+hIhf51hg/CoS߽|rr<pz'y@Q-36D2S8r?I1I1J
5NdnveImE$?j
 r|t4<s,jK*TT`=g.V"IkUCO6()AP
fIq]O!WEۧjHQ_ǫ1{Qkvay ?ѩbnqWFK(Tdzc[$*RDcEjK3r{_z׀F4Zɐ$buUJι5d0}
P#:EkDV\,zbxzvCLOA	 ;z|զ'(]{M܊a%"fܘL?Z~ZzsyxbH]Ȧfu.lVE Nȗ*!Sv}z2mUZ4?Xpl{ɷUov%w׎OJD[۩>6aswLP(~L8U@hK)OɽChۖ~.JTjZ-rm&7ee&H*˦ʠԙ~O*Ex|)d|Q& 92S(~1B=:w:E(vy\s{qɆ<|`5zv-L%#ɱxǢutY%;{ΦO b+vo4|]8;v>GG t|Fт4dR -jҭU
.E_>ͬ$Tz.J
W:r܄ܜ)'D9GݼOLo=^,>:3~oD\4~lYYۏT ,gfxV̆gݹؼpu?wy^7_-Di1`
ջ%Ȳsv	ˌmpQ_;T	'SAMhCȄ[U#yhdMwzKk0qhhawݱ^sQ;]i$T4jY
jiPnP8Ʀ6{3FHbigl1cS/PT77 >&:Cv2KUp!qҥE\A+Ф{䒯@*MF[d
hʗ|b0gȴsoΟ~7koB)d6p94 a !eqēBh^A׏`g>9InҮ6aP-nv+Un-1}}+e16eIJ0..2	`cnή%ۿ/~ ̯wf؀|lWPI%/9y{KjN{|ܷ*: tҸxuJ)efX1O=GE&Z/]Xha
:=QUnEP4Z=~<b@@֓Ԙkdvɂ3L}jCxTP9_zMXceݜ?Pc޵Л|⟷. B<ahJiVn{TS]8_orfx-H)`,K2㤳6餸 A Z<w4;)${N/2`5 N}|4IY$m!kGUhZ}C=
@	5rE2ca ~ Ξ
kJ	}vȳaeF@zz8a޶1X0y~Cc(Fms',B	DLE雡}[ٙK;3lm[;E}=|f ieewOS6<]9o!rT:+f>{ZuD׽|tMiaf{q\<ƪ}~ēDژ_F@zžJw"a>zOS."7~{$;vKm$-,G]hCDO%M|Mv9ar!9й22_g:iOb/p0%O;4jDY>8ပInqY9Y??~m0j)<㚟Yիtp P{҅8WG_&
m
TJcl痣/ľ],1`U|ky^F)F<``+n%=ȚBB$T>+=-B~jus_䍍=!YLp]nY
iB-lLWa'+?.|N;"gw^8vbɊM}B[id?C$ ǈ4ܾ9ϰ﷦㚮FϹL͑g2"ͤQ@k7-i@c`9TVM6#ƕ\@uѫ/|ӟ=ʷ?b!x`Ym.`$p-[u}}
k+rp瓷SX既dCJ	6SM(	L!Ttݢ-7P%๓nKw{;"CeZ}M{VPQm.$+F$\C׉QsldzXdݧiP_.&ϜVNbuꭾB-9%qxi'>ڳϩOiK."-Dmr˃CކjlDpnT-4[|6zC	9ͦV9;nO@r/!mcQݜfZ8ژ"x 5y1K1^\oC'*3|cO#
kƤ:N ñ<n揂hUsįΓMWk3U3}.e"w*y$6Gg߮'a)r_ܞVq2VH@=g_h~E\4ٍ}Wː#t;G~uܵ օGW6RHK2j $vc'Sʏiz`L(]/W5X#qAIРpB5aMAwL?e\S&=B1"KA3K6Np8fL{wqk{?|H,1GQ:Dɳ邒wM{.1Jy2OcITNEŔ	)a:$8M"_BkuO/E\2<XkBH)knao5&4ΆvbRKP,XזypX1Ql_'9+Z:_Xik`/N[U|5͖cF,t u`((n	.1:^I)N:^ŏco2wGA-|ܖIs>i~TeM|;KkK%8W|d~n=9!C[?i8icf3+&(j+8gP dgKSBRO^;{fu:`ZE?pQPslO@9bWKSi6y[s1׵	%JuxB@bfU_~{7Iױkc62uEkL[x.12㧙:zc՗v%x{o醝P[ʅŏe*f==8u^UXt
7Ֆx(nA$rSǟ<\߇Bo_7Se튝c7cME88mn\	#@KE~yܠHUF01)^Iȋ$d<:a?g4l v9@,J|Hu:2Q)HCJ&T6eۜC1g-KAA	e9z&v҆(	ި6k4ȕT$CcGV&i	ȃi].xGͮɅN-.n,Oap I[db )eY2/_$^9򔥌rdӢ.Ӯ둳Ǔu/%
inCx^<v5%y^9ZK&"I){I`$Yi"OrĴLRQ*AniP6NmÇ>
t|i" vt-Tظ<_g2}'/"~z;%;vu
V:z}uT[}^z%>lΡqHU;DNՠ
̋ d+
\È[
e//(w.x~L}?|姅mw㞶6}0S\CGèžƛЭݿg4Tܾs{yQIOKMf}Ha7r'O޿Nd|ڔlbX]\ǎd>ȤR'SsoCgkҮ@+ws63}_%1c
!ڵt5`+hˁɄ^d׏h	=h9>DuB
LАlfq5`ۻƆpA6И2n\w/4{N8MB%N*qZʫ ttEpV<8/Ș
	54Sy6!=fy
ҾFPrd
0;V"M8KC. ?lX%Q,%9\٤\>{	5+WL=coR%dVnWӻvTDPE ޔ*
 H!	>ݤms?{22QDYKf tO@;r˼lBb~URf;%Gbl衰% ,,A^'kiϿ_Pk+.|4Xk(\"C
S.((<ǏYOyziZҖsx}28zM*结ߔ5FǶȺ.*Q=ƸaDӹ{?L[Rf}:U2s$o>>RxnV*ohL-%̑Gbfڄ$y>g0:8ședaX&v%m4SQR	{wWAu"GE4.ǃ~{4ο~7ݻ&e>VPM𠊀Pg/WGuH$&xw	6h̢v;y>o%МƝgxCEmV^ݤ*v/@Oʩ=TN<)- X05jyBb]OفsOʌjzת;A+4tV'}_8wu"w͖j[	
gOC܈I߾( *;ߤI+Bak`I*sL(^k?	|}C;ڴn5{Di3#bcꟚ|((
%A1NJ[d3=S3;~E!ǓjzaŅ,kH<Mk3++F+ɭ_2E:u;u{	FVpՁDdF"5X~)yXU8E-ъKVpbd5FR6]SlLf}O|^*	@ż;We6
Txث\mͮ]vNyʻchI&+?Q=^Rq/FE,H,R50&Haev\;_Em"ҷ(Fe9x<cs!G	
)q-C-quuƞu
nDyg	x
aN%IyE Oѫ\"rh9E3HY%[xxHfv_i9#ܑ;i3<gy#xR/qgvĆ"΢{(18fN;U5c>1tR~w_|0'~U&fwv4xF%4n?9߈ C58A[$zoi9咫5cs1>|C׬XdL9>zC ]޵ߝAtǞjD0YX*9m|WĳW2,*L>Ė^V$!&URSn~KĐ<<f)1 rzuS- ߥ-=)Zm~I;N"L v64N=y )B
8x3zvfR7xM?س勰4I}y>Esiޒ,8Y݄pL$r Խ0ßBiGџ6>yIQrfw1!w&4Ѷ|Z"nKrvc"ɵTM#&\Lֈ;r(&/ <3u+Iij1We*n]SQ--}״T@s0-Rn$&`=rZ%*Qėu2oПwBe Un( 5)\×,/;}\ԗ{<Ty86G)_	vrn
Å	@k#J.[v
.Z&a^I{pV{_[K7=!e?O;	.k{l*MiZa+8 ^N;<Էν`|#5:|lgVtf~SEߺu3D;5E_ǡx!e@:Ȁ?c|˜eP!~Jp؝x"
{"c p׶?Z\=_иQFZa{%
u]kCL(4cR4,Td}^6hlǔƺ6dC'W	7@%鞽%d(:'n?%?';ƕUQ`|>2q'(gkkcqUѷi6<Zӡc>47J1aDOd8]Lc}VA:8/[!i^oo}C\x:޽ޞGrG3§+[G1#XL/?]|BxI5Ûnsz$V2kaY:,?G|x[&-#Qʇrnfz见V(= ;}n-,;7ӽ(ͤ4zHߒ~E"-ĵyF^i~e0 Ɯ0,fw#ʵ7\
Whc:m=#[연 vusYϓ4yCڦӦ
v$UzO4zvB`TTLVkshO٭ߔ.!a%67dszO
烺ÎAi[7G#+˻+~IL9 =jhڠk?ǗGQK&M4GBy/wadC"ma:]f>aq9H9<Xyܣm肇T[X!%oZ}/y#~l`f{*[:
݉
KXWJ cMφOע?FTh9(%{*O_\4w(zcN]:
Adx-'0W ɍdDR)3wf2]#na]~]3}ʍ-bD󴱖&K<oƲ^ll$|}#+|Xt</~y熛liv( ݒnL'ㄿuU954ddA|O Syk5;٤-kK7Xy%zoeUUNA\尴8Fo/3DCnC{^16xҪm"Ec!\ηٍzSdfo?>P(oɴ0&inг
}֤$̸h
:D]0xiAv6;iGG K@D?g~&ޟv
A ̓X4>-[蝞Χ
֭uGHe9:Jh0*O5z;EGi-+*ݍV3ynWnE6nP6G`5r.<;Wd!t1åXi<rpTm3ӮIۛA;[N|y˝v/@Xǽ@`HHAh]K](]Xz̹GKw:R|xZ:ŎVl@;k^k"{%ܟroT݄;饒6N22ij-LTy 8+?|h)#)non8"ڋDF
5C;.()r/s)bʑC \y;̀m8dV">w":XtdS{󺚺'z ̔:~
As!P@Stw& 	Bde H'j. &Q@CgTY[f/WmLc$)!G--I=+Zby	aE)Rg<G0 4M1^_<23-s;'FDKyq:d
Q6>^,vS rO3!sVh*mhE~}Q>"!xDinwpeGW4ZN?݄732a5`VV+1ƫ xcIxN ocU
"IgЀ\HG=jrRdʉiQ֜EsN~t,h";M)Y$I;2jpdlmp)}JYwM?^W[xk9,q2ήaQ^rFNU@Bisp={k;1tyz;3SRێJh{0naHb	"ff@_3BTóʒ.K.n	"o	1Ot]-=T Fcu}hi95tBx%y{@43X?*ȺE7:R𚈓7&Z߂O-̟v`)Pc IaUt* ^s.D*3m?=z?wCS^Y2<rwC5m%^XOJnWihpB-ΡG"Kj
q8(b: 罩#9o-iV06-$NR }&qobw._	|?υ_ BΧ^mSN~]dd%d8Z^O_2
|2s1fY4	 IC%뼇0kWfjThծxO_f!|]"]a2f/ھ {sH
x Uvm^r6lo=
ڈi<C)d?UV39We,hG{#756Y?ޥɏI![btɨIƽrN|9ߴmF)_uV6:FUV&,xc*Y0 /V&?l\>]T1CqW5G]Zis{px]52MQuuvx@.׽p99٧3p29>Sc泙ڤ/}~˺ѳIKM}lhh}$ȽMDy8e.mReDsE]<)ፕg:fuzX'#_ӣ\fS
#ơ3FmDG[WfCy	-,78?sjXyhVJ_ 0)sV9J_ռBSv?گI}8戞PW*&'u 쀤+SVb8$G׉#]$3	vWWʟtd߯eX^jG&	fj2+GTb΢m:
k!sh0V+ KQߋ&var/۽r8~MBzL:( ]nC͞mTŗRw4V
|qݮI]Glv{\84d~DNYy	_ì!҇w'AT]3| &^3Me[
wW,+gj.(Гb%{.A>jk`U?ݵBL|$BqzThHX}j" l9|hAeE|HfgPg'
"࣫E	lXD/3T֒du+zZKZQ2uDRO(T4eFW{Og:ε_"!<$Z:_#	
]#ޓ(EF
7/cߟSp_dJZPe\[#DGY ѠqXw9O>T0Wa
uvêZaU\v)z4n;Xc_:В]5	J:$1Ʀ78)}i,0͜>Si#q	bogYR۷N'CG˚jG\X{6eZ'{.OPr!}*!^`!(m@DfE73E'1lՏڈ=1r<ѷz}
A_ز:hl%LSa8M-%-jQL^SRvD=Fdy[֍h-ZIyG1ajm-L⭫HGJ!ϼ=he	z_00k[e5cUvݭoޖ3|sFs}j*9 H믔 ]ڲV%[RN!ÛCD=O}q<BtՀU6X6$gtj_-1zm/3Rݓ9OWJ{GiU#)wHN[b~Ѥ~*kA`UwҌoYthp\Ɇh*n/{ٖ0`(rÅ5Idz$mWDcCG~'7|SV% [Zyx/Gex9lh	h6}sw&ԢX7r# &,\?'U-+IۀsPI_'O2=JVѪCMm(OtT[lOa3eO+q!,Xјuu|Knl~e .)sN#u+}8nu:7X#
xlWE6ۮў[~r撝L7R}MNP|/CwUnΕf5]X/-*/hԉwOXS&7>]UFcq<FPhپKᣕ@s[UDEpT\HBE#c˓0˩wۛn4ۧ86\pw쪹BxS5%
zJ]Kr;<yj䩻d7u2t<&1-^.<g˯7yq 6q&J/6%>y;:;]arw ܻ ؋G`6gP 3)W:
bnrex]2Fmu"KUM:~]ے)#dgt/
eR޼f |$ONTJ!!~0ic{	虵W |%rЉw7(GeW{h>-nr~|{ܘocEV:{w^R~~X 0իn^vf~=
16-j}Thsɸgj=T
Cj'sJ˶, ]ٚ<ϧË"H<N= OppXci;,?NSDýK3Uh'0 7GiC\/O΋>]_<xJڭamRK
40HӀ'"gH9܋ccrsl6]LiIMW%OIl7`-P^+!N*8L
.þOE侫ǆ~>Rr1SJׂEe3+.r,,8_Ⱦ16^˽%{?MB%TK4{dDaqiS
b|T cv0\܋Bb8kWzvMBipA)J5!0W+>r ٺQОBBĜQZu#U	*}AVfZjOMʙnF1x</k˨TQ/Aió+%E~Y.g ;r}޶ʷ|3A9r6-]<g3Hywߺ$t"e<S;-bT׾@'w0p8-j||y_*;]R=OO1 xnڧ_גR0LC
pG8ogs>2U׋zB;x3Τ1`21vѥӥf"T_@Koe(G,/ڷ=f$oB̋KA! w*qXRY@~k]{t`BI',pP.ڀ^u(
,'7S}J71o甊\e	LcOR~]~={<Hs.Tkw.Tj
,rW?qFI
!IL
[FQ4HI1@= UxZ/-\tNh6ዽ,"ܧ	?mP)@8̄XܐPEMm~d#ڻLkAB7t;:5^{Sy'WP3}D&hɲQZ?@wYIVV*ʘ,{u T>?GQwu{>nZŜ+ws[QZ:T>,?f_2%yOufps0q[6,p	˳_| &HϻshuF1ǚfXKr!ͫjbKdހΜ;jaKW|O3Jx#	b\SvUC	WB-S@.Ď7ݪb[s˙Ր(
p$̿8mg6(_4+Ny@3AXƁnrS_ߣRu9]?=`T{WuU$qQH1u$&e=jpl<A§C((O'.7͛MP`Q͹iˁ T
9h rN3wg|;v K݆[yyJ2#Is_9<;EdṖBAlod
A#ƌs}3B{Њ_\29.
3(j&G38NIj9ŏtQ^l%ϫiqXskVyj&"#2/_	yUù{9אӦ!\WfBwNQ}yAhAmxLYYsyפqVǫݎ27(7wz#Mc]:wXaH[rzQ^j3GW|4:+".Ց>Yyo,S)ydf<9JԯBL򭯾fQ Fh#҃(#w6\VJK.#ջO9{CiK]!*p9Qfpmv{Ox' }_3\.g^3=H&CpI?|{)
|47FM#0v+	p
= &-27(W=:˻).7%g2л>J^r傼EǬ~a/w-A04CӕScB#qa.˶#ֻxbjp:?Q:՝&v2p:_E Zwj&Ko
F-tEL:q	se?Zzοr֌ަs|اV&o6܏Z{"Geqf0͊|6S $BVf=ˆDAC3c	%ƞ`cf#G}py} 8g#dh1$ !k꽌.*]?"GoԽJ\޶aO=ҠB%ix:Nk9^f-nt	uCư]R<w+^Ѧك"mw82ZFс"fvxU:@p2p_7/|[	9~Q
E*7~6y'GIemhud ݙW>}"m{*IKlл`7h];S|'e5֟^[A X{YTpGi9k%yj,\RWJ$AU_Lhͽ׼2j7lL_=8Ͻ*EW4bV߃9ZnA箳Fl`0v}Cz1C^Y(pctQ_ڼ*®,n`d8^|vOe95~3|[s4LODZ5<O8E!޴rpIۤX|</&"]> 3zśby vq,BY8(Z6%i,V 
!CpߛOoD{81C bΜ
8sFeuccND]JJ d~o.|v#owp*[S)h_ʦTVQy0[C}rΆ,,o⍺,H;#^C񚖙3EpNDMSs[j!ߺ4/黑Jx
oajHźXMᶨ8QKiǒ%E aڡV{
xG~AIBv;
4P\yA$I? !QAG'+̣ؒR!jNώc~H ;ch0ey}ȉ)CNsYH}egה=}ۿl-_lr2LF|EB%
K^0.GWErU$hHA`[&NyrG_u嘪uE.	,ƧCGӼB'MC)4s,6g݆)
9v7ȼUmGJ{D;_y돹%~C=cޔ15ȝ1ܺBGdvьJz|cGv^I:ՒqQalhPGx%/K*Դ>WpG,g6*DL5ȴb\A&&yiVàeކƄޔRGz<qAKCZX!GQoit`2YgkF7uT@!NI'иˀR7~Ѹ<O

IrTy%%-IR=넶$K:c\[Zu*N1<-ӑ$/\..&'v嘷ERD7BCoIR;>oEق&
Z6a2 |3P펒Gʻ{]{vWܶB˝-ͤ.EꝵqR5Ϝf~d%C!c2}\WT]G:/tZAU;ӕoCMx}z:!S@{M/gT: h9x9i
NVgL莓4Lͅ6ſ|~f_]f^	ahoHl(xO &-n&¨&?{=cz)Dg)ʃ^2`4x5 I'CGwO@Yt\˭P.Z&%O$oGrj<5?4>_Y'Җ)$@>qTڒ|8T7f~$:wy,=4@N4=10p(#]fN0t)|	MqEcEy80-Xb8x;&&AtQtJ~7e>AvmZ×r2> Mq?2؄=œD9&>E+c+3Es+[iFTLŎW?w\+az4%<Qo1X5
w`R=۹]D"Tc~ǨB|뢑!s=bYkr<!MJb&EOap\l!bRxfMf²dΐR}>%@>tbyq'ʰ ɕz,0#b?*"@zVq쪆5\vBKQ!SǼݗ:3u-o9'`zn4t2/?4b_2T
|".۳pb Fq|QB
)hX^FpӺ:Pn2啐U
Q*}1)}R/S7qe/]ٖux>m+s)< ITZ<G9yVt(wa.@éR^v$3e\{]o+[dMHk0[B}bmvygRm}ᇃ__{	'WS}bʰ|{$ҾjRJJzQuQ(eG,ϖAmU ffi`};BD}wI
F((~(>2Ȯ$^JmyMSRU`>,MSu wˤ`GsC³>Fcy=`B=b~
|i%.+?T`m&YUMiݬu+q?!Ks§K%w583Ay&@.*Tޗ*k}?2_t~{z=
$|/etYzN
G>Ho˶/G+[nSR ZWZkLQ.<M9Of$~DyIby'{*ER2-r~v@;~ђo#px̥vWgcN Q.#[`v{/'i>2F7 bDO4LFOr	{AR|
 ˖/(D?FaOlPhGLwrt&,beh\thi[e)tX%6d2]]BJ%Ǻ >>J`?cC{K':
NmOu'm%#,2{͈,i/&['ħ7+ K4m8:k9E>"6 
\eXMqE~Nzźp{`RЌHG1^5"-lhd(Yp31Яw_OҡZ=pLleazJ/[	:ˌMӣƱ4u~Daoh1iv-!v@R]F3^/_?jblV!+Kt<ؾ.63Q}.IH}QBy3-J*D:ZwDoݵnT;gSoMm?JV/ɇ>Ka)ɜX+%ctτRmcc5ݼY-l"*v}Ԟr<utÌ9ȘJ4%b<e1	S#cHv8'%/
aB"M.]4$TK
9p͞Z\v>
m?^bH7NvGlBz "!93vx3Vu$UI:^y9`H'kܟ6e8`w|yӘ	8+SFsEXnmd
7xNb!LG~޻
Hcl-
h4Ayy꿶7U_*oRxֳ#V*U vy"!&/GЂdlر/wiq.|t7ꝼZ:NG	)x>2	{vϟG5~
'	Hl ka5Ӱ[-)R5L!͙Tp=f|A>3π\9w8L!|ok}D-IÄAPu7˹8[V Jm@'Aht?4GZOp~uSMl^p
J8I8.>Rב8?ef"VvxYj*bDC|8ScP.tÅA\K=!wm5~<rD;;c^mYV%y@oS>-{xʻxÝ67Iڂ3%
WBm3S-^5eY1Cfϕ,z|rAJSOG[a:~/PZ{dCI >
G&Rd2!z+I)>`%BZ\t'RWQ<s.xՉYߥ#\~ɫ/Q~>Ȣl<7ť	9UvH|KFeYJ2S[}}e]Dqr)IIrSx»S?D/wϔ,L{ dE}^}3p)E<O j_SJGb@yOn$L6'I	Ut/ex[þ6	E(,	Cw /@l盠e)ml O芨N4F(fPrԡŕ.RX8(-0R1t "[;(pTangs RPdc[M}I9?ԬۘSo%x|sBst%Ћx̩ͧ?Ίxǋuƚ_ʝ['A+ݿõ6H@sRW&e#
I|`D#۳E4y洜T8p*Nՠ}IH($p.}(JR:iZ/r;$\:qLu]>{Ƀ{;[Q;f|iPݎAﷱw|k{>*mOJΣ5!+ۭo5!X+eH\ Z$^@{7I	Mi8" &yj[@_|AEM3|ؾF
#,Ue).evV~0-R1Xn3:"OL|/<z8-ݗ"Y%UZTyHMXmՎߑq}HK}A$\ֈ^67A}?B1V@,CE(7WrDاT?,{thG=d$c`k\8лl-]yLS,}oUʠba^
d9Ϟ ecnFQ_M:rꐷh3TU~ӈ5I]ihZDwG}ӆTcFr0Ɣ.o>C٨}:%s^={P
SW(ˈnگ=481}.?թU,L5gށaH^^+4HLQtZ2ȠM&tp.yOO=[GlW;ݿyϾp
Q _hd^;
C
nT_Զ;Okroq6B>>H x/kߵv2}ǅ.PBnsB< }FUvyKk}q~s>sz/;ĬN,I$#bl},1{eK,5"j>?La)y|m.B 0{ -?U,A!w7_ySPҍq?X$Qdlpu2sӠjKjY{XrR6bu<;WR`_"fY/hwtL:b4:V^Mb+6l6ew:h~7{~dsKM)whɽ	AKk;	UT5s{4:_rxe\b01/=ｏ>Q8JVh2z3gǞ`-dO!D) +Y%.(:plaP,Rx8bz0w;>%$z% fSJy=l,j,BC\~3HUgZتF<]C$	+n$*mJ´NG~YmV0B*jMnM7N0xlw&eGa~tpbA8n=nrŋr9BgpJ/0J~dB]ތ΂x&)0hsFz3~	bMCPf\i60.tUDwͥ	-p36QMUƉ fɛ(1Q[C5=KUU"(j	$.É4.NyvlvfT6D#p8Xu1`230bdh̢y"
}:ung<~s|mumCWU={۝\|yD//,{S|=0<R+OZ>Vc/c
9"]K(d:ĴO;R߈Z]wp/A[X-ӣ\;_7f9,^ӹV}\gE$ЌB=ԙGմ4Ez<2 80CG.aѾq+4* -~u{b}sܬGB)6{'@q JdgA/ѹ7`H[
ؕƦК3d]5Y('ewM|ژsЄ NZ#
P#>tBH!o];/ŇeYl({oIZhyh(!&o2
˞?(M4Rʕz7M>쵭9RӀǄ1zOWocL
cb;	L Ol7>YuюJ,Xஇ/ɛpz4%^ޘ;.YO{[.*q\R^4&LJ|d-`^?#؇@2P>ABVאa4t3Oͩ~aDDwj]~(MUЬ9k5PH>ng&{<;VҷGӲ ۖ?&2Ƭ*`<x'wϞ78ET+1z1;^0!ϱ*"@[5F2:~7`n6ծ%peWUʛ<g2i_dI]vʄϗ:>Gˤq?7Myʨcʙ.	.Nӂ1fḞzM6ڮZMkEf'bM^6vΖ~|yod)FdlΰXf>?-k|,#NL:d]%$"{]u 	ٞ6WYl%Uȣ8.s޺#ǩs~(%PTl5:yɉ~\M.Rd+nu̓Va4D׾9$qwJ }~5Z\ˇDm7a$lWk~>y|͋r`"e#N8juGS(Wـl˷^?f'/RΞDtpg]w1r-wI<l;Uj_)\UFJkT$uE"M'Ac}QĦ\rNX@Uh05M5r)'66PfV1@:?=<^ãF;K^=zɮv惤EPhV3_카7d(ܥm"3<1/a߷y|՛!yBʤ.j
TrU ѽDmRo)ؘ.! t>3&јQ?l{CU"O`fVp UʧJJ1R 7LS]Ͳ;͘^W{d
&!(O\Vjzq8<0ӷɉ=-$Dtre*xD=K6i{bHJP ԵȷB	S|H3@awC*S:\B_"{!/1:'EfhݻVu_9[`vgUzJrPWo]rᷥz4Sګb4d͠.ȗ}g5G-yiާ7mOhxbM5W<
A;(d!EEa^օ>QcbBhc\7@6tRu`Tck~X)O7xioIvPP[{v$'@;r¬!$]+=b?kYARYjU$Doop7^ȗjyg|Ѯac^@A|=[s%odx԰H*بhK6;#@/I
Pkgl?Co;m7S1|q{˦9 >=>/uQB6dq£l<n@ClyI۶}$/NeW_>M){*o&؆?ȫȃZ8Y)F vNd|,ǌL:22s2>r:oLpQMQ=ap<~|frcdw ﳽUQ `09Гg}ڏ8nƇt";
!q&ʙTQ|6w;I%8<v%M%e$=SK/k(8&9kD>0gPp-ǜR<@[e
yoJ;	RmFQ-	1$n+b'%\8d~:b	L7&1Fb[@@ӈ⃧u7Sݮ-YEրpoTlf8(bg)a_5yKw
g'f?)mhB@}zpm"藮o
=56~%Z
&AiÔәs5ik&H̏%EfWU>>mUF:wMzN{L&rK6+wE扙O]!"AFbc{ z[!)|oGUi_RUg5D8! Ϸ䮯렽ĳL[p7. /j'}Hwchd.@Eg7P;.$2]~hȗ` !~CЪ'\5ɹD:Цt4s8_]2onΔٍ0Iyy
~9۩o}vI`B	ᤄa_fU
Pym4C3Gc~	>wXN*wŒh Nqn0WOYYPnHcpsX󒦝6ۗaSg
 z9"fRaVr	Ejhv4dsn;!I$s1SmG4N(sk\|w3+&;a}HR ns^}ξYqsT\;m NlےvpL8KK6n2[ƱHHWKmݢ$va|,tR}/KGYJT		'	Zqke0jv J@"e^u3-jW3f;eϓfMQD/inVRYf/1s:eT<)$=e!*g3	&U_
t0YသrHhY`*+>U8]c@XJxH@3 і;zg!/ǔҹq>
PC	&krT~]cKrŁRewߚL e
O-ٌ99Z8HhlZĘj|͔/LF܅g.wr飔U6<)ʂ`e< lfBkaX^}XOV5zrZc?Sχ;`ZNPpN˕L+|K%zς=tT|fS6m7GmY1@!3bql
Dpk>-*[vWu۹ẑ)ڸWsp]rA#E"Rie&ϐ,wǿ`/vEkɸ'hkjaK?lraScڸÖ$-Us\^.ľ%Z DYOEk"dunJdHo)`	\ްO#Co3v:;>7o֖A΅`>&AgiW Nva
fv*
;)ᜤqnגnm5.67G<bhǮ; "R,92y(mĥ(($C#rSNi^¶͡FnF7٧pYä[z({yS,\%'!|O&9p/啟QXaKGWeq:tBv{g$|"0BK^ο\UpqP/CoCtCP/Ƌ7m-!qsĽz>M%}ui6e
_?MBl]̌_CnԺ?OKlZ󅡀!!jX)aޜ䁀gO2z㨏"3-	p_BG5MqՍ,9;^p'{b0wF;=<~]eVmx:)jpi-NX[\G]z'>&[Ҵ/ۑrYTNэ2iӹk'KK7V0ֽϚhR:/zתtuw5M33s_^cL9Vٰ۬5M'υs MmJK[2x$OcrM
zDKt^Iua3'=c-=c<]-fUP"KN7fs \LQ={F>'`FHsVէvv*s7yKgCv}y5Zap
o89* cO~J
oWB
V<AU	^cJj)INku 1]!{?46
sHn_Ԝ_o⊍5+7吤еȗ6n,ȊZ 
WL,.E:Uy+ƸU9﫯Xߔ}0"0a^An&%4 &[?
>/lYyp\)xW|!(e'C0*BMIχ<Ӧwt/)_ay0U-:~r=!8x@!YUbt-iO;uxh*c\K=ȍkZ3rH*orۃC$Exq
)vnLfM&Bχ'h^0mx2줨o8L)nf6̜w!~j/&ڃFA4pǸ$,8'=~jn{SUGf7r^%ʚ|ITso<yu'.ZX
jzpF%ڤSA}ોŗ'/KܵOIoWdu\LGoDx!STjeu_Ck48'Z%.%>&~zS@euʪ-S.s~'Mtd2M\Yn=53@In*o
8u]b?wAkNG3j}<~h"OvVl^Z8d!I|/U0Lq	 Kb[	kGD敫&B:P
-]"a;8앟(\o~n&L/
,GMSI,yl4- ~uxrx[1^z9/#|eҝN0xtP%
6"*UHA::SOőb7	)ٝ%s'-Nn+wݡ_	}&R]weWf؈L=WE[hGLO_}{YYnkI`Lf*$=[ccuZް^iv4~N\b#	# F|	L6_/ޫeӝvkv ٴI8dA$V^4eVi]]p#&F{&JjNoǰAHa2
juhLN/|_o32K?$4HV: &c7)orڋMQ`I?͟R8;"k'9->[jlSn{kru *dO@^YYzr[kue:Z6"aJ]nN_¡WD~5?柆k,cq@G}"'Y?F!vKOcܯϋZ"Sj
i+:'v!g̕CG؃=&10v~PSWmEe,rB6PÑʖdQH1~]
bc?ζmsuEqŤ.ŅA8_$!_7jٹʴRSUg[jYv"񒆤8n_v&9
?DtfxoЊ8i.0X& p^Ã8O?zU.Nl`5RDzu4>H6J7wsv\P`xHs'e/pu>\,9woh0y'|!8cp6-OZZ
v BA_N[~''8T%'.lOJnIgw̝)~(6U}tY%ƂEʙ䁤;{$ Y[q'p㵌UIV6Ů8?5ZQJ_w%|?oQ2Vt'~_a^SʭAޢDB-_${;ßy`hI$d*c]Fĺ]GV,$rQwG\
PQvGp`c1%)$.¶qBb?9)`aʹVn/Sqb=B=b0S0>JmoCV7/I13yE#197 ~7˭"[3:f<6ߋv;rd泤?Pf$|lAzOW%4,ssÛ~{v}˯4KTB>G}5OeGq*b(F	JFַXɧ!ԸѳW]g>ȉ7's׼P.{TN9=TWdPd;w;җZ{0(U1yHkf˭'E+fip♣v;"5@Xd_mV  q71߿-eUm&5,Y3]ME! AyEQvO ;oaO/eShn;Rh0'/G3oe'N	$]Dven-˘,9SAp[asR<
0Q/k}s>a:Ig-dm犺VAr!/+bf0\x˺2I?]v5#aݳ_k6UdmwπiIVE`t,v-aBbuK4r_vY1?eiba"`V݄(fLu^vLcÉ{/>>̋Q7WFL0g[AKǫ6b/_woJNt|hoxuD?фNs?CzLFWJFu-,u,-V@9Qanf?SGi' Ge.9Ƨy4,g8'	f"֨Nd$^HYUT)5lx㛺o	|ٕS+9 Ti˓9Zh}4x-![n#zoo^Xr|[9' ^942//aCAG{H_Ƈ᱿ WAnR(%.1k*Ğ_q|E?^ٔoEƓ[i|D*^(NIPYQB,4=
{-{1]QC~'m}ϴ$#)h;+kvw6. %9vn}!: mﾵgԈ75mmJy a fx/';/?rH:GǪX1?
o/Ëي]bELdC1v*ˇ[
=C]ABGjYX] O]V2߅݇wؽI_Մxⶖۆ=\i6
GBzHYj
%c< ;<'*||vr|xY]
s,I>O1
}o*}ӼJH1ӗEqdx#Xv}RYsԧ=8A9E1D4;?^:2"z<~׺MBSKi6iVKO
s1&E	')Hoi'08p֨bp W}y^@n=Xln XpCqP$蒂DFM,
<psD-/=tKR&1<=˰-z}8ۄnCӛ+ bueCA監t,ooL3*HZDueSYmwA$holloeFshשGSU*J=tw="iRWaG+Ro9$Zh/
VJU.]= _p9$t&ټ1S~%?19`biE3X.Zl$# _
{M^T=J 6J>MۿR#/~ܗ1?8{~wh??w][<FBZP(W[ϸ5!R?7}{ 83Nz=bAE\F`\c/?>֕Eә-qSoDv͕~!~fc~{jZ	ȴj%f4p0`߅_?|rSUK6ӥNTA>(DD/ɖ} g};YӨC
7ۍ~9P{U̎`4x!߆IA
FoʓJvZ o:Ǥp!'5v6{txgz2mOu^'J\
}JAidJgF"
;j̣SRBZ4/-[1WB
ynKC]f齜l?1zu+h+?HW>SWK\aT*\GF6ɐˑjԘR/vk(H_ڣ4-fhd;49z>,
NnXMtA.\r80*Cl!+M_/Gc~E
ss-:apev
:cI[OޅJFn~NIN4\ .h"e<:>|3ha؛ʇ\sxhX&>6-.]eobA6SZP5${|l	@&\zZM[Ƈn-9KS16JgoSyu-zFgP\Z}T3>4ڂ\_ G=rdWx{/BH@>%}6 wΖ#k(j0J|NNQzlALTR].@<K6n޴['a'(D]:A߉{z}z;@D9@=د t
W*+
khc3nSc0[>ƶ|ue}s G\#2XIgb|ZEŋȟå'Ե,J*"uR,NZ
<w0%AIo*wFD
;PzT@kG`rZ5"f6IM}D?F`>62j2W{My(vmh|{̈~IvzM6;3ɮ *s2cH_ߎZE}//K@eXڎqCXF2/i@]ь3ey[I/	Ur
ÞS@Ulnoy\rC U6f)D/
d仲~=xq&5`2/5_-)f3\U|
r*W֦s=噡̶ƈ{p#*hYx66|nwq찚nbl.yYoYl4Л/uO,}Da#C.0)s?1}x`Y"-T#&VPOґEv3nᝑ~M6䧀rkmj{	vs	kd6s%HXR~goC4M>qFRt]MՒ~{Mvw~
?p$`S:;|yWDnrq=ނ*hx˨)ɼp7ݤ"ޝA:nT7'7$S?(ѦϯE\1KZTR"=7L;|T^oh&i=H>m?>@/l4 
¶=2'1	Wߎo{sM\Sb>(5KbĻ4<|WJ[ia5Tnog`[`u4V&Exp8cVʧ7uAFԎé%m#/:8[,rlI~ƿӻ=wlE@.4=zP
713KS|'{XtOƁo
|}l/Ya[o}	
R1ѯB;qOB<Y	ԸU#H1=Gz_eHzVC#q++
/e3"4z-|E*2iۊ&3`&\W"E-Z&?G$<Ws?ߪ`c,v&fO	'5>;(|i*Pn
މB8{q90Þl)Aە<Y`~KW.0=lV7o;"g8ܚ&q* @@^!?-c]ޟ %˖@vlW4sW(^ۙ墥;kqV+ǻ+IQtk{Xxڻt_<RψtqAK,p?i
T	{YOf5rDϑĔRB {{Tð$Xw "1 Cǿ	f9O,`Ӆ!^L裊a6#q]p

82[>mGhg\=iJHkIG ivzrj킾gX|ޮj˻d޼/m&
Yad; ζ0r{i8ZgG-}KR%(FaD%I)D:G7 daJc
Bgؕ~*<Ɇ
D}(sH/~3o"kO/Enb\I.`,a{gOG"?adO/ownIzzAFG2ͮ0`] 3VA7/X?logvw1,Awѕݝg@Ho)ȍ0:RwƤ]S%Za#2	
d|B{h<=5֨<cz
xOKb[43llx	BrzI|#zŝ~IXIK~tpYK1®eu</h1\@ +Qsv;_ЌOokBwID:$/`vNd	nnt<Ijpcț#CN8?. xqM.pyc<|`oLoK<1.v({Tg2)jWg===|yag8il:D͸:ї4
vȨD\π*:] 0و6qN2[qfMmiz:&U|^33Oj&>٦4讐X:b+X(0?P'SMԴɎlKes,wV]۸y?~iAS^:\3yU4A>+p+#>[%]P@kd#@<4E[)K]/awJо{tnjk0䰅+WW@?-^7FCo7ɏ=!bEZD-DJTAǨ='9,lN/*=#qQͺ/͝SF}j(πғ T/ ;'1SAr8P3#G0Gn͓(T{oi˖>"nۑD%~wxO%f"ϸ˹ 1ۃ}Y!
Fc#pe@|U=z-=Z_b	v4Ja.,[o[{p&/q	 zO=/a(JuvġaoczކMA >9h U;vg+Fr>8BY6L
}=>H1S\B_ yw8XKcS;.=(Si6My&n>n1|Xӆ$	Bn4zEG
.{!? q	_@wE0_'Q"Nk4u
2+?4ٷc16%lCWGE\yKn:e)4+E	NiaNdL%Q?g̤iM X7
}*Bn&-DG~յ^}#A{r$P%\YfjK}5 !)$Y}jX'aƟsҠSªN#jƲZQ+Ng͹@T(pEi/\ZL%uRfa|3`usؙ%>#͟"#ahvܽ@=uSu_DA՛ӽBe.]#Y"g"dw2v߇Z|hqzS\LX,6oAn9Y	_I[wB1T'^ކw~GfQ&G HG9#lT9r׬sĝo5wǇ})=N"PfÞLNJ~-U#荑f~dzj!rSI+nY !尗?;DM=r~p} +A
~Yr]k涁Elc6a3{^5YW"ؗ+t_c	mAaGKrSGx#92]ͻ<מ@5|c@|]o/B8q}#|XL{Fnjq5:*Di+uwx43swEm l9['/]Ҡ-҂,|wJ:yV܋2XUNzcb#q..U~܉ 8!l32<tk:]?7ƞ<
 ?k~M9шb~`X{7JpQȾ_h'nkYϧO>;<2^_\ʜA/FcF]8Ҩe
A{?s=Fp@C g_W*PzcB~MtS>\D՛s\<n`ٹUX\Ony*(9*_j;COfFE
:;rS B
Lq+R25ݳY &}wF'osmMݩf,Xl7'f%gqDLTOi̕F^5~O荝y]}_c
r>_a\m &MyKիBP@QX@'[x-W~a96pY;7<7aK
.w;}׵ۏeu7'h\]8"	1]tGRrLg2z>vGz6t[3D!ު<$!uM*t:/7U%Ly.)()TĹR?q3
>:v%I7Is5]N.k:t(ڑs(d.ރq,`A *`57?/|0N|w,HA¥✤G`?\bf
c$? 6}];߼Ù>)b+S,gtuTK^ގt;xh71iޢ=e)[!S{D+d!9jan/F2"n9}?3$}/9$6>;	OSeT,**<Lz*,-305Iepɜ6f+UA=^pǏ*YnRt 1793fSގP|ltϊ`p}ǖZ˜!!	iC2C#ڟ.wu3AHӫ94/oxH|}6>[B1Sd/lírpܣXd
'vI!
wbGxi]7;Z.t^
H}OB.dqdHPrst_Xx\qCgt-o||ʐFo[4:3VhL%/
.=~0
.GWSŃ1ȃ<cA/w9C8WDE;^ǻ.	%-\gjE8VGqp_a@=At(1Q8?5r.Utxmd):3ZX5?V&Ԃ˕q9cNuBi{T49Uɿ\WAtB~t	vqh}t`aZz['`V nqx#Um#'9GÐP	12 nQ2`--y:ͶL
{` %RS8FSm~[t5AzrR:E=	cc0Z3:l(8MI^WO_ECav;$SS6>70 Pkg-f+2~v~ZO{D[ΪvTg[w۫ٞ}26\[Dz !la`*g9cHBu]cQdw6Qxί>j{aYKfI2>"!;P+ z<Oчu86@R&?\˯Gٸ쪙5A7x+g'G)'PjJK3KNT/;N!x
u0Toc]Í]!]x#5aΆʩt횴._qGu:2#胫h{U_<i޲aޥ;ӝW ũd@zzX_ u*kJ+9t5@<~2Mǈ_2ekZR &Yes&psCo#SҒQ@)AeZm$چ:(7xxE,E^Bؿ۟ۇCBΓLNhP@cLgY5!AuG\AMM&T\P&n]=ۚvu롽?e!qLsozr@ so>A)9%=AFPl'zP
n萷@se?R8ގ[?5I9fdCCWXKb)hlNDu>Y=h74民} Q.oId-a'#}٘f}Ci.?6ӝy/y5g_#B̌#wnU-	yËBLNW(-EO_Џ |֘P⒡D#
>+2oEwC^[VWCηhjA.H&~
,hx^vӧQv2X>j+/*2Π05`.-pA^DOl[ݽ6w֨18Re'aKsiW[Q-T6+5]eq2x'j-IF%a2+(2/@ۡVdguNȌ-*h]}ެ?0
Ved[2܊2G1Xʅ5t׋u^jMm;#~;jd$ hUt%q~!9
$U>oO3toNx~U	#)
h1(x soէ?b	՘Ӵ-X^`Ɏ'Յvr];8Ůi
⠽Ӎot/߰J+s߉e*?nĖFWoHʇN^գ`:{J(ŠU1-ڧp'-E]x
͎!$]-k髗3ЙK)K!?|}+9U:7n*kb/&ǋV,)~}P]\leX@A0f3_XDj5CѼӻ;^d
ʪjQG#.\S/J
+b+:
1dl!;!
LP߃(_BgvUb4v^זQ7Xal?wtVͥ-#9t
17`̦ϟw~QOst.' 9%GmC6}Zw 7?Y)Ԫ~(4$gz9;\P>q@!	&QSD2W6sĔ6خv̇ 2i_F=r:d_	0sZ@lWܒܹiZeO0yO]p/V:BPPNxK?(N7ꎍ?E=4uqu_Uk=":%%:1K~΢~D9Sb!3"-b`[W轠2?_=~co_/z _ηkIZhFIs0kuٕxY:2LŪ/JYQ{~p웊pNύupa,: dS.E4~ݞmm`G*{E H~¸ثElNT>MsSHϦd՝˛.bWɀ0@MB}BnwӠDPf@
864!\a
w"?ޢuE3ujҬ9%Ss?F(ub
<]/W3{O&c%س$evjm%B;餕d	q{?8=m!JԽSYkF Q
߬~e_'-Ie+*wa3LѕEj{heo.bdDT]U965-v;3h"dMn?W&xŞ5$Ձ\2P/'cLIێ.s1Z^VIL9Y(S3HZ0iFl*zﮭO(c[Nw5&tq0j\<l]̉0	kАyCNݮr(,ͦD;Z1mI}fYb-Mjjb
* 
ZutڇRhr 6;o}߸ow?'uc^T; q4d 
A
ᇍy?no}»!phYJ-TVa&rvHVo)G 9gY3tT.5v6K\'c1M]ô9~]t^Ş,;%O&^jjTOjG4AK8̄WV|_

Q	ԤY˧Sc~t}Uh9(zM9w
\3)=}	;g-dUJ )e^0WT;߁ج\gkfz.⾷R%H\"CvDBE5;Җ?ndٺ>1qdܳ 6>D>gB@0
RCqrA$&PDS3ҳY㚐2}Z2BvHc;C*`^k1 9`{gvr[݄b\5!Ծ]]ja\?-.Nc)'*@+p=5܄H)oJEAfT>|	;cgp|bP`$\hY4>};g ⲷ-v){j碠ζ6l-2IFi;xMigDIq$DTEtDJ!,{=J:/w|*=6si	cg"{P9lQaCn'?Es){s
#]tO|T2H0PšKa
N̘ep
y^Y]M/J8D^
PXq	.>@˞,RAzo>|!9ґE#"C4!Z
zE7)IT>0;Z%@@[
 bA皙rkY(tX,x!OGYcΫE١IW9g$R*W9#qm|-u?U_i/sFK^$VTW)]M8S
\@.ԥr>43.˽r ߷uw27Gٞmh m[ۉT]w9R"avުyZ)
c
t&l7ڝIKjVcoofؘ&UeI]
!jߏ֟dI-	^U&"mQtk^n(c=l	xߍ[id[mnx!cW$MO /h%},mogT-*2BLA):#@klmʌ#말IXo
 *=hZ]	txBV}dY:73_4dI:/Lj;WA\fGl|x{Jx+"#?U7eD_J']y2"tjH)؃81ŝc]
O$W.	Imt:7B m)5#/J
3μLgZ\`k5Ԏ{qR銱mO
9iq,-Q{Nvp^$+/kG۠J9TEV½U	ӑԹ]6]vcḿ6WEj64mnם"ȃpc.ŬV 
p[nQ4IP`ER7i|ӑ~ˤܩ5)d[9ctz.n`罛@@]:8\dbLvs9!'M
ģ-NϼZN%kU!LhAm򑙜x߁67}!/#C>F4$oi67a}kc.Y}9j}d"OR/ŦTf{D.c~ %ٛ
Mv|0%  J2ru~7_x ИPrOp>!1ǣ=e=SnOkJo-ysMHi8``
f;ٻxe"ϭ>%?lD5m#W@oG;oQ<"Ңu&CB9`s&
m)=[nw )Z?tB3-'Em4r$~dNꆤILsUWԾ(ojO\VX.L}SވVo1<AiBo(34)
E徸^l\(	OgZVs~%|:a.JYg<%G,+B?q*ñ}TI8<0*ІX(D,<X8>%`oG/ʞc>rjD6PGO uvT_wf"^
4aHưp<g!>0=P Xk;`4(X#w	.yr~~NFWzʸہKFq:V	oݢs-݉ifMcexCJ&\]]BODutL]Od-$4 U_BOXBA=:`8zW{
h^7@AF2$f2Q~;[uMfr&;i	i1h #(4"1+[?LHfdz)	̱/
On%*9ъT	qaP'"8rmۧ#[Qʟ"Myjk3 i0aڀ_{4I;C,HB6R3vඹY%5M@P3O
Mӟ*	X#!0;QrţBd{7L8ZOϪiqXGT'	>J1$:"Z{nŵ
2,j0't!/N-y@#F
uZtjlO\5^@ߜRLУv|2	G{ 2(>ks+c5 QϘ,Ւ"{]Qqʼ2d?9JPbUKJO;O-Rb5|ΩqD[UDGlttǏ+G~Sٯo?䇛#ϙ[%;v/3("|s^4j7?d^LY`@-@-
Qke\W{?ݥ$)>.zf^IcT+RIM
{	M7~UiL?E͈Zit|a{	-3DqRl(OO/1ͣO5q5rv	#xJS
4¢	5AQkoa)1R׫Afm=f+z٥K`
/&PYi8T{I8ds}"['%ʕ`}eUheÖU%P2``5`VZ~գqB!pA9RGGwmCmhE%0gpy)Ȑo!g 쮴p ybҒ(cC$,||iU~~'[P&ƿP]c͉7ERG8ȴw61sc=
U\0֤\p֏!]fkHaﾈv:i.Ue$ MFS\/f+Kz4o h2tvBfnZ^	f6	H΋gHo]GoY
J@ns1j1rM#I
Rߥśm'̺N
@ma'^_[}iV/-B~[']ؿӍ+6pw#l$7;1-Em^է벭e(]"_+tw*KWYƅ\Q9;[q:ں-^u$ =no*Q^{iǋw tAtTwY9O#(B}R	),&@? $*B&*镀z3+:t5]Q@%dl,dT.}ꊬ8kws3oU|B6\lL
<?Vs+xR]_<<X.[S<eANq4;RwJNC^LlUH6*Jͪ\1Vte8nWDrDE>|X^M\n2+6L{@ng;8++>iR)RE=Q>^>oTfhԤTR;bH ʯi=Kf?
qBdtRd nvخ*Ր, (E=?TzSGhv4g2m .ăCrbGO}ֿ
4f|8ηoz@vUIR5D[+X8/@M]T㡏W(_B9UN\b4,%#GܽTyszlG|Z@b8[i4M}8_TQq3]āŞay̷$l8t?b.DItg+ӘRS]_۪XL^-
lBTP/Ny=xfc%aGJtہ2c?okQ[]J1MC;Eދ"[P\k"9ϥ!ꖪfi]	ZR*`&6CIJV
1c?E	a fGY|8cD6>i=LKIyQ](TM݌V;"'eI(W/_p[wwwͼA]׬} w!dp	
[Fc f=Ki,9L<*i4=^iv<,ǚ3-}
Lď-$!U$mbmITFgs'm!T9Si~1G9#ބ؇fze%2Kx2P+	p`5WllhA"	YH*jʥ3C)yaL1mأ4V,n=sޢ$W ʌه3>g$iFl/:
S-e<Ɨ
H.wW44\kd_[-lvNyƼorυ˼)}b2NIPXdr~^ Opy@x3m]"xW\?vd_o@'BMꁉmXfXLpq 
rOqW~QB'_Uo{`nxxAS8i5N0J_<_l
Ћ)KKŀcHO8	*<8+cV4A9"}-N]?Ų1x@<˔1nQUq$"v°".l6>kXWAX" HگKrF[S#kn\ r+ h㙉/3m!iXf:%ᘉ"t%8q )4NgSuUQUbZդ.uH4D0Ḏ2CJ	({rh; )E83s甶J-hu8GX%d?
JY!ѻ8;6QZamЕ[O/bH7-yٖ{Ou7Z.ecitGrX(䓱#n?jއO궯LTvf97}s-UaK0lʭ({9-.7Vq"}'xR"#~[xcitIoHIZHFE@g)gE)l׆&>݋oͺ.\zxP~iG&
0. 
HOy~|ASr	8niqmFȰߎ;v.!V?m.&
GftOVV}Cw?o<o==(jRJ_$尖Axʀ>գaUOș{W=;?!
d؛6=]3
X	{[YxI4Ie!e.x>زl4RZJU$e'gAf*V?_<m1mm[切\,OFh
"Tԧw{n3rW8B3%F2ތ\mr4FHh2;w
vEuk:Hvgs2/pR'qq&\Bkcf~,
H$uG?GN	E
'i߉IKb/
3A2a?g?su5:t_S_ r&73$lok#w/qλXӥmsPI?dUGP0_dG5D:Wq#rދ9KgKS@
~t;aّj!9vLV5_/6i70#k$\&@ݲ'^[Q$`=XN5n0̜jtT|SyIsNy
0e6N;gGD9h/K~Yn1ll/#ǀp{р{h/08G#+$NnXi=-5adҵs2j|nO;{..{DC{8Sj*2@g
Cǒ׺~ m>!&llohZ9s
rsF,w~kKVwO	>֔4n)<6vH2jB1:/HO:nI@?/Al %oi*2ܼݼ.Jd'n"I?U~q 
ߩ*/xAc+Q.%*bjr_"o7zIJeKl-n9s;
Ql{D 7%~!w=Xt5tK[~z<e/ -Z#Cˇrc)e?ИOJ#x${? @|xnGİ@}O6-.8(bY]{$ t&sduh`+tjAkrO?"(ۉ'=Cd-_P"$*3}e$c[G_j/j-zl]TK=E{tS,M[|oIS!o%y`
߈u(좫'wk=|{v"	vlLI&KZIe/nEou/: vo5|ﲓ«Ԅ0 M%[$`L#8[`Jx]z+d.	IGQ!vm+zs,ðL\xg5@y-ܖ+"T)C_UUQ돢owM#)V2GN{k@EeYqH8H\K#n=XJ246/
>io
{.>L,utoKjuGפ0pgL(吻Y(z?[ſ)]@ǘzHcwD#\VM#:g
_66p(6b/+3vPTlI9)d^W:
m&Lg6;LQ.мQ'`tOZ~+q~m)D퐃gT9.ޥ@7z(0TyU.1kKs7'&D?JH_yEP_?	XH2#QN#.[++J]`f4oԏ	wjIq0~';H
@%O%Jݚsn[&d/2[4B?*~q+t0'.yhGɉYD
[$şf-_ec
I3ƙ"p{V] AQ ;qg^)BY"_\'DԌjEGsL?!'{Zb622TJy?N;R#a 帚 s#wX5d`
0[ nsq kխ#-1T+7ʰ^&#ϯ[	uG8N2!hyUGYE?.m0G=365mN~GѸh6;ge",|IQl.G6ڤ ?te[aҼD3"M8tUT`y]x676xͭK|ơk3x84vqQS-ev9Bo`S.p=d0o]O\r!-N2	J5Ӭ[L"־=H<r]ƽlY<'I$;ᤩ1fҘ[</Hw)8hNGaŲt
*:m P`9	Jwؗ2Y(~U۴v05 -;j)-^>:16tMdň]DSU?895i@2]7\;s;mXڋNₓv;Κ@F'u_DjmD0SJ
A]L2en
eS2!t Uǟ~fxr͔9ӵh&b۠&{nmh{zuYKآye&~Y*ۺWe7aܼcL7~,O5NZ
gQAqkV#H';Uu4z5m?if"g-^Yֺ8
NuX߀vtk`F^~"&vqBvem.%6p&[Y?aK$c5D^b5@dsw98]{Ȗ!R541&
r<y t.$AzCùKq,)ĻW1@QEq|uDϬH^,28ژLUz~J(Bۧ43V~e諅툔m 4N!WgSoH==mU	.9yŶ\|KO_N;傻˜Yp5Ĺ-n+n8c⟞)7E} ]S ;"D)!b]IR2HAjK_y
q鲡orR/7Iq좡u5˺p$$9)RLg«sNxy`[w}.2Zwc,ODՃvNȠ'%cSh-4;zw0Ԡ,"+|OhNU}g+4*ݎnp<Ӥ0]qO0=1SI|N"(aC}n\".4Of|[,T7[(,()˻
鿰Ԓ2(Kqa(oFz-ͪB7zo|6=,,g+Ƣ5`Wv9մ\|dݯ>8GA}ۄM+:'\Tt`1D3_)9v~6Sluf-V]s q9?2pOkn"2]G3/&@dWa[RwgOHe<EA<t+_QtYqfRFÑr axDtx+R5'}37Yd.Qv:<kfy#/f>N7g:	;=uEpf%C9w<T';I#3ݞۄFs]'s/Lܳ6Om,̒מM{򈸥^Tzju]5*~J!O,&7%|~!Y+X`&vޤ:x
KNUen}YjGi3^>1^V{s nwҜ[I}J:<cN~]BFҚ1oS&P1P !˻"!]ls)08MݐVޮV>+sOTm"tC>GV `lgƔ9ٯ8b|p*N&wK:Eb輇>xNğ'\DM<gIԜFՀp[ٷNXprk	j1O
2O xB>gV:fYOɺ?ݏۋOQ\a]TA6",vla[Ye^qYsH}?+L#pqI{dx'K$Ȁ;Z4O-N뫽SR^q#5If"✴ek9לd~24<J]zIrpLDG^'>aږ@Q8z2w	PgKOsqosF IH΍SyX	Jz!otzuȘkj+ V2~z5{WsIpI(z>}Ff@K#91G궇ǣQ,DfK|jTk/8:AQj:?@m4N#]F#5mDhE4R1Nx=䄾2d8!U24*qnb)~l;7Y{x wyz҈V
}:|'g2TG(r0V':wW7.*"Oƀ!t+4L_c,0ģҹ]×KN#߫ݯº|QT	k#aUW.)er)Xƫ4O* N3 2CU3>ZU:]]6+fvB,L.1C5☴Uҧ{9̐4TQoFRsH2!!)V
}TwGL{\HPm{ %Y$eynhE*.c,ȇmG*@}鞟8z{qh='30Iqv8`s,Puyv2mOnxO,%KYXRHީN1j겎<+w'HePdZE|n8U28)=~Z-_y|pvehP-ӵyqYU*?z7~{t֋E@f[GduDpݻ\MJ{`<~V1%[<6
/h~\4d^aG1ߩ_6w1`ak&0FP@7b{a!;۟_⟠TIݳW;pewD6cCjYiI-z@$_=Lo3[cgUe)cptK|ZsC
pxRy	u۬̓qi%
,~OkfTt~2UT^NG * S+'ۭ/6\sIv`9g")<	
o%[TBSy!30lJrUۖSAHգ?	Oo2af͍Gc9 "ʟ:S?A%
̴|w8wzkZ-Ҹ0[5w_d[O[.KaQ	z*|=-fA'U,Q7_hi}Jat3.Q)OWD&-/}}N	<=#Uqfr;ukq(|%f24;n^fu
Jl 2_GG$1j\쎮VyTsq;ɓx?Cm;ݞ3VQY͓8&`1R=(#6G?%K?5ƼfXO'W@G	Gb`j#Z?nt7
oZ(j[M>Q+UjBWqrk&)r[梻j(Z{HS4mwXI(4˽޿(d#AIaЊKDXv}3{ Ԇ
LΣ.^P8NlbqbZ[[xD	B~Ʃ1~yζ&ܾ*mFNKL?AZYMj :14UUݣ\>gG`7?}fRfq@:!X:ʁGߖFlI[RWӱ9i]AB
O 6Cs
IQa?	?pToCŹ1\bI2`A2W7#dx=~Mw>LBpNI={EpՁurʌ*yM%c{&]8sxW?ںx<o>ۋ Mea	&Oo;ݔwz}qsPj<tm3_l,n2F$ڢHQ&[~Z?ʓ*B^g|+n#@)Jtpi/V?Lⳉ6ԃ8)U2bhO~l}dmcНKr	NM;na.v[+UڌLGj"}>,>NC>e~Io	2SG2S{_A?;ORᅇ8:cƕ
yqEXbBfOɪWoZ+11t
3x\K6t{Y: I.n쏳AB:964s;"v	8 PAyLy#3px27v9"'*LQ%|gwxYyRm2qjJ$]Du3h^
ߑL	|P$w38T> avٗ5$)"2~?-E~4;hwaCC&Z]qܺFؙOSهcoy62
 l5`@aS }؀TulZ_|Xɣ :\bDJ%Wk-^̇s~GNYu[<Oa45W0}\21嘞+A=x#= ](p
}%J_k:35;Ծؙ}G]@茳sޟbgK3ϧM"Of65'Sĭ%\؜kQݒHjU לMҁG*XG7NFXRMۦ%p 1gY~ZyՖ4ťΧ83tIdK̳,}& (eYtj׌;v|,v<!nsE,>tq:R>ES@2Yf.:5UmPv?ie/8WC,Zr8vjhT}+/ڇ;> ́#|ZH'NpQu+"@1Hx-Ⴁ.<].HBl'Qv[Lgfϊ %^!{k&k%T;0{"
dLcY~yvѻЧy@[m)ed'4Ѿ">kE+јj	-_ӭ'{FyrBG#sɁ@v;w߉ sX~RHLaFrpuYCUq،&|)?6_罨8E@9Ce&#km	ۨ/c.? 6{+6P&blXpd4l{`^y~¿}~w?Rw3P΅M6o	Č6jI*ǽmȇ_^\icMv*&A(c-
pC+mʋ>N}ߜ@vgLjKr8<-=Pu4'dKz]g y5p @ @8rҽR
kE-Sp'g*V3DbOaSόG/pn.3aK*JӨ»6m3{:K$ھcM;Jw0c/YQ3^M'v[jVl;t'
wĝC ɛz%m$'XayqgkًCytkLw\-^E2{C
=N k][UCV,ǎg
aE,F}o6W|x,&#އ HUcJ(ΎbV!/Ƃ܎"S@xӱ,ϳ!jiMQGR*\-TsL´JPICMsm\轿TVa`঵f[?8Ifh 	"_uptx*~x!uNu>s==N63Lel9	1s]£`:	n0i68v3qR>2M`HM
ЩK m[N.F:剮hm>0˯(?ߓ3NpRk&CAu9b2q?b:z,[g&0Kz$^滹iQ,BlX.zz$
Ve>4Ӥۙ»KM<:emR?Uso԰#iuD⺈<y,$<߾f7[CcvcN*@k(R+({	xiA3y|4Jv\9w(]ʪ}l#Gߎ#AzwȬS4u H5t*7Jʏ01$&h(NqMM٨'f{7N@/v}hG÷?[߲\0ԡ+<ɳ9NrIS>KշY5OS/r|N1ا[#G~{Ux;NN&-#.~خW`;TNRҷu}O\UK.CwP]MH;Y}i}<+ZIx˼$[Ls}eaP:+}XlGWYO1hޚi%12gn3R:mMox?^	3CwpۗڙʰTVm]\?00z7dr9Q]\[L>$3loCC4p{a)VaGJxNɖ*x~ޛ+}5k~wtYzM=3K#ov<L mA4P_DiHVl<3{l\{z-]WU*)[
_P4g
xlKTLmIb?l6>gJ;.[9,EP(>F
mv2o#2gFjeuO(|Ҕ[nG 0@O,W|Ei6&R CH4蒫F|5.f?&3&tЎ/aeE+65*靺nA)&
hw֚|rFF6$v a2U#
i:>E[`8:jsXRK^B|xKvԶ/Z,Mk.8-ovS㘋z9ŠwY6s+'HKG'C9tW g59}o]i30fUqЛ
i(j:*L(]F$E֣Rlg=\~0,xX9 TwHT'4,
o4Gj`6~Z9As5m>E*9,i *-zKou:7圩i*RٸMoy
cI*^νڗĨo^cS0N q0QS 솥.%ݮ xF/V\_ֿmfI'ykgxe>E`=HI3DA-y={
<-=@CDN;,WxSNgVsDC2}
qÆLh("\K{+Dr޼nz}>qd!Yӕ(Xa2tTeڼd<=~bnĖ*H@ЬyRΡҹ L7u-C5OUyz&59vmh9.̼֕kVF;GkzM|$'z޲z1&e)K.eg&.T?U]t%B;2ZDx/r#I!tMtEAiiIHҳ{(zvO5Rx/WJufֆ?lXkPJ:p5Oa?6{i=LN	q6?v
Ycjq{A| vݲ` _| .؞u30"]CX36-&`UH\.*4zYRtp$Ziy>U'm^$/S*xgxV4NOEGm"nP%jʌSIL(8<[`
<pܸSU܃_Vhb&ܩ@!Z('&JY0^֐5%|o>N$JQeT)!iL">ƀPGYOA =dآ]!(k7mSX KՅp迥y$P-LKOza@+RT%&޾|7&b=>5$<h

1R6mbz$+IGϮw={[v' 93\oإCCfr~Qa`KY R ,ʲC6K.jĴL 8orvrWQ7ٗ|E4%4{ܸ1+YβC*|K#y>-?Lc'bLfeTbtem6ik۩\W4%NXf$$6[#}tS=>gbKu1GE'bLScੲho[ܥ
~sOwJ{aGXf
v:dT"K26oRlmydO(<>4ڬqckk" ;\}uZZ&lOv

.J[OHf;S9[q^2-hۇ%l-98կJIa"y
2߂-,!gq`c)K&^^;^6?YGVw)X5tsxIxvoJI[Dv˨EUߴ!
tȠT+R,S *nC\׿a;wW=7E"\'}j'P#)T
KiK ?}xԄ{d<&X;ʗm&ӚBxFE^f=f4o`I2p tRgs+=G/qۭ{	7Ivq\'+QG/#::%,~u謓 41BCl"57`<>=N%8mJo[ݍᾶ&wǙ^
W؅wo5i;U\@nY7]#``pRx% ]~Ŏ]xh5e\t7Kn[Ze] oO=~rlZ1oŋxq3;p=2xW gdM}=g.'.2=jee:9a'{ I*$V0K$l~_s<};q^{H¨l#.+Ы>p
?|]:jYoCKܳ?dw'J%:!5m+ ,S&>GW{Yc}Bک|]-4S=JF>jN1u<4.<]%#WG4oGה]lGፖk6zdcZhۑoEEhhHE-ʇSYc-B` ;oNPNGJ,}hŶy1	^emenZVv+vVsu1}<sl&n)C	@t>C
c}9.Bۋ nٞQeϮ-sϒSWPȿN$ORKm.Ϊ:b㞂̭k
dion½m3á#{,()P">R2$ֱu~?ġ
ϻ\уXB%n:3oεtjdSM.ƕ/4.>4W+Q칰ǢL^bC&i{efT G9]j$[iod6l]u؅?ur1>56NU;,򻭺mhIēDC3<	tCLx,D휇t qN[0T`aPgy$sE'#ߠJ]@.@v/Vi\VqFQ"{3]&Wd!D\؉[mNK5ˌE@l<a¹ڧmC*^ zQn_f
J[YQg{ 5
zc?4Sc)o/|T9õ`=%xtjh!0-.ULJ_~z%C%.xZГw,q܃iC^&R/PO9'+y?ٽG"C$m{-:tAygN!(aU?'x9~`\*yJ
JzKfme裭q)d< SQxp"Mu46+mFQ7w.0|Lv z
F51E[6E?;OBO7#砧}LRfDa(
S	$|@/:ocu|z{f
Dj*, 6SMŁ~Z?Vowj:n,c⇯XM\ܔMS2*@>EY/.QA
PyB6[Zt;0W$)^]ĝb9%eY*
[+Bj@V? JG/Y$HS\~ fMשQ:6>=ni ơdR]nq9=XRuv=Z$8
}XYtB(S@/z݇&hӿC4٫qehkD"	H!M-e涠
s}UU葌
чrXHLhx:A4c1Qx}\
Qw17:2ޛ?Lʂy6谝}VlU/vK'*~R>1 \E	)E5>ɝ)MJ6-ؕWXd]_AIm]ƈk]	UC;8~F5Ȱj &u9<
q!QV3){KgB/(Mhk{tߨOE$We?{U ASlRXȿ;we;r<&G
Jo>يgk5}hK;#ᶒQgpc7 ɩH_dRo\/wؓ҅=9GiAD?56r* }@iSBsr[8;ҜY2.Ϛķt#PΟG<>=Y(>@Q+_ 0KuY'"K)osJAer ]h/'eݟʱ6>

,J%$MyQDcޖy$L[g)_(0D=u>vkx&8=g}[ٜxaUr^%[J7`j>-TЪg2iT_Zf󛜙zKf^UCK!{rgCݮ;#C?`~
2
z,}{r3y  XiZf[/l]mr9T%AFu3Lwdػ)CCt}z|S_Bݣ1~&0W-@d fo6_Dٖ᷶Ctq8h"W*0+Ya7i8sLx9<bӠ!1>5[ CW  >ΘW.hlND$Tx`=7m^=9{W/۸I,="-;ΟSfp*K^Zj|PlXdw!a9PJ +3FO<[j{ƎI_Wτu왃vSÖ~	uv~.Kz[xmՓ[H6NmmLr(!Tg}ȺyH^}ۇ3zWd/o6e1عΏVik,.5Tahy*O
PNLmiMs~H{nGjBTgL"(J)
PӪvY8 0^p44Zߛ
`KkCmb!#W~z}+]qqy3{;W,h5?RBgKV!yb1?P%y`?P6䀦$	Xxl; !ĐuOZ^<ߊ%˺QYPj -X$y>B|0!䓖'/Z[rVsu	'xR!h}{{@@ΐGA'fxN\	q+H->'[]{dЯ({]HkOp\*wpLfbbT"Sq
m%f}h8'<Fp>,Ϩ0vfAMT
gThlѿw]ka|{@OwaBᐰ2Gc2rKhQE_%|%t]Zv9,}61
t<~Xͷ_>lMg=M]˧SBJ++td1XsO򿛷>6tSza6BJH(AxZH2eilP.Ƌu^H+3ӔD3GI!?`1uhm@e/*irی̬%= y+-VzIH֯OmGIT=B:Za^A&ݿ[o薰n;ꀷfjpR(lX:jIz74RscI#l2?RrEW=4#_#EPu<V҃˦N;tF^B o˃܋ ?⮒.d7בAu>K}$Bgy>ɘ^|37@A53mq#?Ң<+ġ#
lbɢv=o~3kZqwy(kd)@nYVV2f OnDΫ|bM}뗕!>)=XYwڊp&5V1=fĪ}H6&+α$0t&%#wF_}N/rLy#܎&ع sb>c8	ScH%xacg/2ޘ}H5xO=o_?i	D1;lJvEH<=E)"7/i3V^dbjH^#Ymoo[ևi:D(d7}o;`)A}΂qz0qfɾmwq0txkmUNL3_VNoSPq+,8[cݪXҤe#/DP$4awߺP2(|n_	[:7_a4"i!i
!e#~#aYsfڨDCѡa-bƔa34ѻ)cZn6:pR'zJe\n&?n-Ԛz9A1`\ہ%snYm&IWgRis'[7U143^06
D-9=H]Y/bſKp
ն_܏Ujg-%d5VqٯkRQՕ>4BO>,Ț|16)w]:ۙ7
!Yh
;*YC*<7xыn
kwrfu͊͐ Zhu#4Iћsֿz<Ȫ6o)5kҚ(ruGfMMXa_>O^VvR3t%]lЎH	p9ŢO
͍&܁_aV7/\"-9x2n``NNi|
H#.X#1;whhr<(DIItVͪ&L{>ܙ H_[Rf?TҕA%\@%ka$#ݘt:6o0K<NZTm5J;J	j噻RK/XGJbSK$ȨL rU;"K@~L(E>9de8EhtA08r?=)OgP}1E~jh5v4.QStXO#$xl-A9[ج{qĮ}8zџfOĤvC~bqD3UAIFaSmIS3BaXb:{fpoyL`¥po䟛5-jdD;Y!K#/
$	n<}dk^/ļRtJ ^N눎uPc mkXXI&5$ꍹlL1ҵ]An5 F@Fwg8r{aM/\nNܽH;G3ρ7YY#}ydp[j(ӹaL] eT_G4cD{7ʏVe&{~Q^5Vwm.Y@`0sfpF÷ۏn'	>,4).BATsAt>`HJ2f>^[z[(e1驉&h.gDrдHD$+4@p
Ѥ㨐|O:KJdٚ}7OKڲºB/7Շ3^sNpUƁ5]rr54pl|}z'';><Au^Imɮؑډlfs}v)piBaR[*U[y+0޷m|IUBvq9bOZ*匓i54uV9zǿ=jdCVSu&չDE}3gkA_<n0 >}nk4z='":(8GO?*oUAUh\ws}0QU3G\.QtKܼGͧj08B'Y:0jmlb|Riѷ Ӥ'.ɏXQ4r@#"Dզ׈\(@?VbD{ԋ+.o
+"qZ%Uۻ4tcsz:K(
u\жn$YK`b(-7}f4+o=Dif8ȧ'
Ek68O8,d?|&E&-|'OpדZ&VaA4&mA'(qJ"*._l|.lMN~
>b
$Hs1ϻC@|E͍<dԣu(NqЧp򔉻HS6r*'oRF=W9Z
:-bmCGoN׺M(.Êl-<%߅#0.%!.zc7>uVNu6זnU}	t:ɑ3PFd1|4yH"%"0	a8[|)M=wm
' y3sA`aE#u?)!e  c 
 6WxjLB ʞ].k(paERmkw%يpnuNi|<)%;	.nԛJwXLlk1XP+Ie%XOIuIW.<+ƑݡLxɐaq\]~>m^~܂J揓/VlpѴE9N;&)*:,/<_E$hqx7c7l+P њZt <jb2mOWy8.ϹnLMi<qPQ_)-=i)6
<-(@0+qe>F<^󙸕kƴ1RT-X$#ovR>W	
OZ@FdkqLQB2%%J5ڸkwD_!Q̽&Oόcha'WڋFqvFW
U	mhvC5ʪMHjCҧl.{p߭m!=λR
K1)OX6sI|ap;_np!u$	)lKQ6%!	3ay.罼5nwUׇ]*lFe}\+8^8I* *Uaz(03=@ TVh5B
CDxG%:?K52WMwnӹ*MjdBjAgQ{
دd?vV0?|'u$9t׋tsq#鉆gh({|}s.ptWJ+y	Qq9Kf:j>*pg?$nm[pYB	>{Q	h<.9E4Z
:tv!s!7ڪ?1sm#Nkmǒϩǅ\ajNuw\ 5mUYu<9+"tˑc83[!|b=f_X"+od!]O&@2ܐER;GD9v>T"ҹ"no.L+uv͜pc;NDD6eо+>Mn C;T$4(Nlu&lhoL>;έSh%KDT}{7ALjYKf.<^*:]PkQUR&K{G#d˖;KV
ty95ƞлi4X'VerGUnip>dD]ʂ=̇q{Ř@H뤝>mg,_޻֠ȟMbgu

&!GUVL,՘6Gf
f>~<0.4!]e3& __)SD)аҖ6*.)$ L@0baV#wB/.M#/aEIw٤S8;iWw#?6c G$Z?@4bmq֞g^_n=lxt*1:ꈩ1in~F0(j~\J_lHjj 9yvS誫W}nÖdػ!wE
&{MuTc1:~Y36ingJy̀3@4p%]vy/%0rU?B"gZG9rdXu&6acUfɪ"G?|or3?fmˍ؅f@ >`*3R	n¯~Zժ-Ԙ+p8d'A.pI>*e~ [,]N%rZݪ(`U>{e3Te
5ϲIg䲌>bIMS'c'[XfFW4z2ET~&c?|~kS#tܮJFp_g&wcRiǈZFI`{#L'	9ylnn%׌0T:`ptIw#Bܐn	]]IaVT0$\̾0?~FI19@~z=׀+y̡+xR#o#s+4tZkPн| P|=8p=A252Kiu$R#Qn s.3Gj]J:dZKt+IbW`x.a>k:oiVAvcl=S
7nf_۔ѥ
+1N?Rj3v\6$O/| %	w-2,7v&5Hij/1Ӯ>|e6`d>m0<""] `e7}q<m),`2ڭGg ON'ƃܕ
r~,;QWzTFhKrBl˖[X{qVov5kqB&ּUzV:9
ŗMCf9|7]W~C>Pvb'nh1[]KeXE^ȟҝ Jق=@lNuƻ8g}O2w#@2ל_ Z ׌㓑Hڵԍh&k[Qz-X|H*\8+փ9wMՌ H4
z1[rT6>Lvr?8~%~nSO׳f;rHsUuTnK%雨roG]#c[-Y3ټ
UӲI96[jv!K?[[Dɭd=Y邦 ހf!V		6|
R][Z˷ox'x'`7,p]B
9ژ6FJА*kW|xwui?&TÖ}\W'CK0i0iXGѼnx
uC婀N$񰈷M9U&#::"F{㿥e}
#	xu,D0uMNs՗^z
OU1?cjY22* Ctc*+<1r
R-
/Refo?5_̲g6}$.{hCX,Ϛ?j|rs˚-£i=U3#	wTUnIUu[OJ2#WDXǫ-a9_dF0KPOt?gcMwU>P_:ǉq'E%-Z]0v62%/oW W6sj3ͅc6\CbLH1wLو_*7$K._Gyw%Y>a$ӎg2Mλѣ_8ChVWwEsbWau<EoOwmdd-u4]N6rԯiļi90Tpֵ/6oX0>/T2*暓:&ɗkONm罅CAlBϧ9MrW8۠އzH\
urJΞ8Resin
V;N2BnXtBYm.[l05{ӯH1dM5a<6SHOcҀlFߗPES u.hIʺ)hKpw:Dx"՚>Mm141;ݕJ,40kt[x|pLdHNaZ[}@)u>"sxnSkҚ|u8߹?8OW9]hOM9̈!2[גNALA-s6	ѵ˒\No1}۷޶a"}dW{_gbpbepӒ!9&W=:Fv{qt1fN-]znlY?΅NrSXj=~WxFsw᳀j~V	o?rAo\%%f
l&,$^y'qCbI>q}-&|n9dt:eNEy>Gl8}XA(2{}+Lɔm%3AFgD=A1Q+(_"
B!A!D2Oa}[{B"}d|WRQn.Ԇ.LE̕+S;:ܝEϰ~45FT5N98/'v	W8LvOPT(N:M5h:YϚ7ggl8'͘~1>Et
%+
7B6阮DW4T[}Y9̿M;gJFc<R6*̋x	9;rCn}пZ]BC.Sv(%=|C
=])C:#]>=-Ri~2E6>(ճUg,>\hg2쥣Wnv5R$T2*x%17S73FZ
N
eEyoP/_p:X^88'/MDx0B:bojW
VOz>y	O
&q&9'%smh pduQ/g63<k(ԉm=Fy<kO]*@+[
m[1-rbM7蔣۷ n ^1+jvluӍYw7&\;i ȅarRG㾡?_tVpf˦C1u>0D.¶)fD_zqGfw$Tu99g7fP|/N,itYMEn9sSshImKmr]{br,Wn7Il4ᓶΊ}ew9mNv,XW	acƋnwپ|
//Эn[}h9L\q~wG91Sx7x<!/U<DB%3X9dқJn߹ԇ^?O6l㞣6 *,o*~7*m\mӷ6==N1p!6i,ZpbV!D%'bG`_Mizj^n0r-u,
*񎅦!'xr)˚>Ll|p?Sg{2*wIBZxK+y:(b'+_>O.SUǍiޮ%C#|KU[cM
;\iYO߭B?lXxIQ2ت"ߥKQ;oqH3Dߟz'WX# /S"hʶT ,v.!^.Nj׶vD7Lc}*a .n2T
]Y}zʄ,zEfye&s=	5YgznNU)خYibNlen|`W|J}C`鏅dQ[~,s+;ĔV\~[q>KӽCa9ԭyBR3A\i.߻oV?ep󲴩CX8vGBTfpwm*_'˅=Ʋs>^ʈ> dWTC5{AM8ppϜرhgy{ؽ;:Mub[\s14m_W%Bg-r;]{!sֵGq#h~J D1-XM8IwvXG7|qrЅudF?AȫaL[*>/I<2=n}]y.PB,`'o.$qp+`kAłgrPpQ<<p95TU QvwQG)oAejy<߰mxöޣg ɡ66b19HkM8$_n=:9lcL)ޮ.Ɋ%AK'#7(C}7Ae(!pZXw]GnuoR{[Nr-Z#)!cXel$=,<Ң{JTD&X䉎1wf͛^oLeɴ;K'pD,m^bD֕ີ$2XT;}G郘xwbc	>%5)Sk$*(~s<0DOͿRe8{sn`; Zm?SCnSh*9h]
l;z[c%}TF!a	-pxش_zkO
?B綶?*<+7\ ִH=ETxE]%^X`;»:	6͹(Tnn|^&@]nlL57,Y3P(H	]_9$Oѐ29Wp?s#RJ^}T5246Q#岳&i\/+lزڢ_:NԾ0gM|HJٔNҒmI-݂3q=q&r1.Y?<̓ȩ
۱Eb"d4^Pq̴<)<W~B( \$ğǅ\=A(+|(|B)O=wAR^6K=|MfåM}gShfz(TRS-!}W>hu0(=.粹pUꡥlmU"#rX?|Mݖ[[R Qmio @X۷7߇-U]sH󅶖\Ft8\Ҹ<DOt-E?`šm.& هǧ#a ;%%%[Jj}"dyh	1:/i_>zB'],C^[bNN,˗pe=u"S+ӏ`{{o-	.(bnʘY˰uMm5Լ#(NzwMT&+O j|ꯈQ{x,RywvHjFSU"Z&_B9tşC~(YK]>!>p퉳{ ^"jcfJ,\SBw~sh9ʑӺY1X
%%5\k1SOgФF4h8"2TNt4yK`̰y}o`GWiۻW#+Kdqc?ß_uaLa+_TXqZ{<!b['1!sz-;хY*iJ*USyBª[SEFnJZťG6))-`(y8q45O_Xp3rk$\[pؓn'd796̇KB֙_w%QvaOLG;|͓0]/:K_c=gY1s{',k֣s%3ۏF$z9|?s%sd?QH4քfBcs!,
WiS~Z.ÿ5ލ~IA N;sv[c7Ƴ˞ؘqilӉhQu;]GD'6:綍=Ez/?or7Ud^i!BKGyk;EmX6s`0]\ցq|n_?
%I]"7B VWˬ́,9*;-xr"|/KMҕo87gnPb|0Z	:+D-!K>YVulk͇ic(qwAoܿ]^vm%K6L
|M#n;-AD$#"?}6uUi9̈u<
Q0
;E.~iȀnS7s*%Y
3y9ilO~|x!>y̢oN+|jW_
Is4"ڂm|mX7]|T/+n^LJ.uY*pNsӐv̤%Ko$'?ى[6in'm8
CY5V3I~O|E{)HS-="WiJ➻\zYnk058:"3*Jh%75ʳ
[ʽM'w>Bm7堷7:[]WcԢ@{ɞɾn[o"×k-̇ {EEڴ,)#-k=3uq:\2CWýR1a-1N
7_RԤdWƍ
M^::_z{<[u]XxE^ÎBʹyb=D'Eeo gro덹	vhp^!zʩK\ צs
{ YZg?d7elQT70;U#R1?T~a@+󏈧.BHiᵗbZp2@]"∙Swc~&C&v{xzUo8BXԶ=ݱh:=#
3Sl+\H?AlyvbUF {,)Zh}y0O5Ւ,
zBm,04o
o;z:Zqu'*b#GIwu⫼7h+h$w_*>K,:
_FŤ] =]˧P&OP}aύtF&cw.ٹ\JF6NZ)KHd`z9fЅqLނCNt	W,(.Xh/;&zILζQ"-nVj>m	楀\*aqܝo^]Ѻ>?*SIg^IO6$4LA.(X_`ފ=}4/r:q3h.9m</)~^ z&K0p9fbHWb9ywKPv$%_w}@㓰uU*KVCFa1a +\=?G4rX7}9p1]H_ݲ~ά[%PWЄ1bWccמ0CXxO{$ſoENұawpTȤ)BpSy~k#-*bqg2&lړߞְ~op/ V6g+C&Ħ	Wt~L{g\&ckЉdXJIAc~iT/')q,=J>qb̤se|3|_@|hmPtf)@}Tּ$["̟;rW0hzsED+;ã=yCq劋]ӟOP Ocڣڋ'1B곾ě}KhR/>-Yo%N7 Vr֔XU#Zh{jLұ|k<㾩ݗUJm!Q)\Bn'? Źjœ82i}mE{TlB8vnυU\ь> Bp
t<|FI.򵼈ݩƂÜf0 Yd	lEg}be8=D7ڱGM֠!/RuZr_hZ=̼I+= P)uYoRcU޴QjY[XA"l_~V1[q7lc/WMD_N/Gr5œ}!Ҕ2z'KiLB*v
M~?q,ۻ93tGr9hX^7<y:s[!>7MW[3TuXџ̶ol+=01m\MVw
?GψGYjm1cTpT41Xى󗍐=pm5аLV@EbBD)ZX2r؇g&/'kBC;҆%39K6\ܥ%`!tofĭGM)6<U͑8Qs|.P_zq{RqP;7HUW_7
 j-&#YnxCyGz@vyEsp]SaUv?[:yO_&.7Z\Oh=,'v:־~զ|KsxeU|zo2:LmAt{QXVf.]@cNSm?ysfbh݆>pJHT?+[ef~6w|P()vFS]"__	+u+*c3BK_5[ބ0;*VNuXΎFv#BJv4Bav܏{jg;С\<Ȧk\ y'd_wwNV7ћCRDWoU/":7&Y	(B)y}K;X
\rܘ)>*Ƅ1ftKN4xJ=nkYE=X8pb-0ۀZ
~?HO]DQ.D]y<#3a)/M'{
|"
Rmpܬd4\ڶ;oH7#i7'B[a/!a+Pbɔoa~RzǑq&AR
K-o
/L1e"
jb@\өYD|*qXy5y`h7Wřdm
/"5^SB~	{zj}Sc޶'6f|b[ӲFR-@ ~{h(݈N9npSl, }6vDtK) ӑ<Z~Yi/`ԫ-6<qH+:)y<Epq_ ?CqTS*zXfVmQZ 5XzuΗ/a?WR> ߙ@O.zpn.Z8HGgS\rsҵ]*e=$>D>x?iݧ3Ql[Խe[)Bm8X*xQyLEJE=o|{}x|8z3LiK^| Ο16wE ʼ#͢r <]{0]%N`B;ζs.i;>L<d<It"Pu[*`.jnae7 R^pp#vR|^5;y%>
?" =%6'c/%-r<ցh=P1ٞΊ!_1~j]\u*iUMۄנ`m2	tHwxr@IX!!`zQ]S~:e}gځM㘻auZ ӎme-hYlg״"zܿ2V@FnIӕ9-ڬ*
3əf
ob
u/O3!&.w=k<{dHsXd2M,`YYߵbc] Ku7VUEPnyu~,סa|XJ
sG'4-9IU`Lz4D=y++qA% y4]%M~e+S-̧؟By"OZ^W[002E,m`GPrߤ_i\ %n01i[!x_OC{O_-.A١9Ccgg.cP܁eG!/.NaCGgHW!xzD>cҲxvG,"þ/딴^UR6:+^-)d\6ifL𜤃iP\NmRvԗO~
QE͹w=\BG֍:Qҹn[\wm@2L@npZvFdn RA=<7ĲsPU1Zhil
e)Y/?CLF˞Q՞c䛐7bxI:S?̣$Qm1m(}bc?E&IIs}8D'*R*Un:@/]Azc|lK#^Jk#
!B74g?:'2Z5n>r1eÏqhÙcswciyAl3֠/eKEy$B,<bvCJUl:FIv])
ɤ/ے'wqb2$lG"Qb6}l9wދ\nwJ(\Ao:K⇻ՇUb~`2hv$X yހ)dxYWSQß/r
fYo[bYb|Y[?ۄzBd2W>UHB&z@xb%Y/
C/PEǴzgoICR^6]s<mK,AK5?S
(f'Ām[;d|)1lPMS)x/e{!)|^܋esgRs|;w
,Ya<=--*oAiׄ`kɢv#+	0Þ@0S͒M/E7("tNffC˭p:TTKsKqn0@l0`6+ua
A溩% f\/I>-z-Ku Ι,(uyR0`Lc8n*r>37{0HfLy4K<[84sTUD*"r̠SKAՊ╷ng3{bNHӸ[U'8eP+?<B>ljЬq4>B6:?{+ޱ~2hP3Q|e,kGe[uMG =vߜsz{S|Xޣ-=)<.F	oȧ
5ZQ
{5BuѐZ]^[	6,1lhQ[9zso_0OF+AD⦶Ni"<,-~f?<+X՛2FC	/S^80b^R^@':Hs*U
gom7F/cxgrnx=MsKO5$_N?0FݶI0LԸ
g`1Yl<f=ܠ;SN֚N{lodʹ ̘<7a_<>Ʊj8#ag_'#a.yE.YJߓ'NM+K^	R6$~6DL&:wE7W .)5s819 _"<O0f\O,T+;dI_uqczb>yO;@@0shij[tVҜa%:$|(dvV>KDs6;:[t,h#)p,y=!n@!퉨)T^鮮fjcߠ
JK;1'o?~e|#jpPNz$pZq:.Bg敞0O+\rTm.eOeiEe:^VƼ&a=t/8lIPEo.askPʐ`_c).Sg'W vJd{k1[Xe[K1osyYM37
Ctt/G	@P-r=7we>ű|Gcغ?S4x)N\}ew*zR~
ʢ#f@eϑj@o*KSrQG^'lgYm:Cg:s;~6=%81;AFQĜ&YRT}x.mXrۉQPf4 y*VdqЌ}'j,PgNR)!3A
袩=)_PlC:?8B=r/=]0R&AOo&ezPob1OPX"б31"%O&2̍7~1'E]O._*~4 ¶r44E	< zc-_^>vC)
r
<OsVe7mU[0AT{>o'	<,$5 .K=vXwYrg}da´P:a^X59EaB*5ss	AN`sQ.H6N-~ϑ_ܥf1 T	ihc:lyvZq+EzM
C9nЫ-F{m0s7s7ЫsycHn15c8žӥuG}wG^aWH 8ړHzz$k;fdj	ye&o?c5^G\='#2v#ySt|?>S	5Ee9	p@Ig hGi#KE?.sUɒ<?uhs
ؚih{Kl_SgB2}SZ=!#g:,\hrRe?rg-߃p+o^еMW31N&֫z$*OQ=BV4ͬ1>ikP%\AkHWOhE/Yu==ItR:Kvu}LL]dwayRM2Mn#6*ϿDoj  "@cKMx PgfutU_l̟	ÇwFWǛP]jJaN2CU =mj^v2Sf X]=}kLĜQQ̓yb9ù族Ci8[񣇢Uye~Nb+Y +3T/P؆9>ὴa)- uKaL"zJn
.KݺӀAy6ݶA4T̉\B:87$#g%Ny-D.1󱴝攱ɧ#dq~q~6BUF <r5Tibar
9")]w'3'jCȣ;sn{%m5}/Ϥks"
q+Xf*@D,d^P.6Q&vvJvVc?q߾8.^d,-=1<3IDnHB|1%N}{jm\2zA3s۰gxv0Ռs3LFt㭝΁swxEÆ΀vD/QEB۟vNxʔ=lE4fJG\hɦRZAѴ$]Y_OQ! aco SRMdJ6[~t~\4wG]!ݠ0&q:6-&'crR\Z/G%vnG!fށmR	(nS-ZFL܎K_k dI)b+.LW{uefkN=/Vz:EGH읥job(yP{*
17~REDqx!Y32d@=oi#Y$^ĠRq!'sćk7' /[OU}6Ǩu;ˊsiW<DxVZ^5Pݢ{o<F@-I]Yb]!#~b{
)AfHGk.uѐ
tEK CtϠǑ&J~Pu9 " 2.$]/۩6z|ȹqxC^MaRh vlD |sh杰[dh|we-pS3I!!\=d%?Կf>ߘ+Z^ѣ*Acϱ)Fz	b/BC2y;'mSKa|e"oQomgF|2N!;
t`eU|E]h;'K<?*'c۟<B]qɯ̈́+G$Ug 1P
]V<qoe_P5BVo4q
fҋߦgÿZ3<<{BpT{XoWWAbsK{熪es}Y*qۨH8쌇8胊W;4 轟&,"/WeG	Oq?~GIh!gD9P"W.ĸ.Sxh;T_<c	sg^\csZY@XoʁK9_4~rY@VǾZr]ͧKvD"y~I;xF0ۅ}o(< "nW_=釪F	χ$VW|,Pdn<Yf<*&~u150H>:'X(OnVXng%$ck5X#C/j5z7tqQ:<ugRC=p=l'z3"}Ժ9ApSQ8vRd8k*z"rs՘d䮝ٙMȯRA$.øxʅ"=ɬQ B9+GtMlM9߮OEu}24sh0\BU߉I&X<ӄ/Edm:2_O$J9O.ƛׂc 7ԭ!|hvfO@XϿ?v`n]\w`+l*W׼f ܸ`~{c!s%#`U;YaǺMM;E[n7=g#_tQv!
Ymzn)\ Lqs/O;we@E90
@7"f4*r_zg7M0"(UD(3+WI}&&c>UtɤJ[I-yz5.ʂb6Nw&Iͳacg:ل"#SM+J`$UKRCkü{Xt$-vtpݡN\2H8ӝ&)L~
LFYBP$bhxa	`4OwWLgûCA=jۡP{E{s+ʚf3a_/%n_&~m=*ⷔAK+\U&PB#6xv6QI?/j^l*Yrه,eI_sxO>乨	K-I 
S u/i2ܣ m8U%pB_ K6&U+N
X*:qhrgd.>+kj7" U2s긏KJ2Β96Qzɐ=bە,g<(9}fAhwW/
&D-:*Beet]h+H;s֧0OdCGm?ڡ+^XDHr,Z^'lRYTi%}9m!"|ebə4]$.Å$zw ^hqg}g/S{<{<z07&-(5VGc$v}Rmc]$C;_`Quh7G;R!YViq2⌜#F9MIq Aiv/͎"	xr[}Bo3\<e(BŰ/mXe řӉ=:Q)jOO[[qh$^8Jn1]/E6ŝy
 U"֛*Ӄ01|8KWQ۫[K?A$<5e).] AlwJuu4dXMQBskm9*
8FyO2|_,7ћF{цmNi| )r+Vg@jOITke6C?Lcn0)^f"T/窸Ȇ֞[لNz_
s[k1~GѼ쳈£e 6U*؂C=ո}46
>_R62m@ppXrzZzˎj:jz<f+
n-XD"XE5{X-7n2i@0$g]D3
<-29bRyMU^=<Ay[Ĵ5cuCu*7"18fڗ2ÜNu,oUP])?:9l$@Hy+>Z)dB׼J0^+NU$ 8G$E߅}#Op0}(Zh%$kWT5t~xyXCBq|)(^5Oy b]R,cUL(q"GڨSf/g	=ޮ!o	xKeaQɽ
8ۥ{4bGo	l8lp3KgZ	=Hoː^dK_ܟ4A=}ɨQ|"T)ݖJ	
QwE{Up+,L$/i%~!/?-Ҧ缻SD!x)H07ŞLBl.}N+}y<~؃a]$[7OtЋP<]|M<^ Dv&~F;xj`U@^-TGjxuUO=#Ƴ2Ƣ<=!meF<fGdƿ5)RfOIcY)vj?^_`}wc
傒g:!/DϠE7J%!GU[fØ(qu66#uwk@u'|7|7E/.a-I!ƍ^wcJˁt~`|CQü>V,)rC/6'/B~wVxI`y#wo宬
`m,a&	;VoџK8_ȇ3*?tMI\=aXvt%S5_Uc[{c=j;ʷ;3$nuѧv%0s
$
u#Cϡ9_<([x$e>m(<<{	ۆ3M}e.»,[o8=U
&%x|IW}ün?,$^a&:=Mx`	ت@6?:XJ8êթ{FFŮTf|
/8	&rx2pdOĩ8)bZ\_awMe/|UȾ6>%!r/P&:jp<=s!D7
	kaT4ztdb6PM7332yәEonE+W1XWlax#6L"څnF-Oa)2Y fU,Oٶd$NT}D!^	1aD-ixC8}'Qp[hԚ}a	29d|"\w/qn(؊66k}\}äۀʸhu~0QZw5xN?44)K&oa|r9Uc^W{O{?[ϬJ;a}'eMiv(r͎`H_$/1n :XWcur)IM%Te ٪xf5LtRb8076FQDg((24jtFcj td_
?l?T=mV7,S$fy)vR D1MwQ<6Y Ai:\[h`1TaGzΝW}zۂ~y0Fhjz@B	;A~Q#K!PYDvQ:=ﹽ}m~He>pU9l86uZȧ~Z?*s=*]t&G_O7 wzxȁ7@b٨Ld (~6=ftAaϛ𶽃HdgZa/Dl/prG~'8jGθ E+LS@#|J4}]h)K#S]}ՂPnWQikwBO\x΅exSqё9F\@òfÅ%3.<_%Zl^Sh?ϛDjHU~pmH0{_{w3Ϭo\CK}ԬYX^aAiߞ8H*teǺ>cqdmիl!TM?uOo7قgTņ$2s_A9ϳ&ah=ÛBqmrgOv^;[Df @.	;;icAQg|Uj\JqEM^|
rm%%j
auUI~W;u=poW]i<d'-bEuKiczI5̘3ޖ*\vlɢwqۗq6	DG39)Hawpn<@52AT!ڡ*{C/ϡ=Q(=Ǜ.)u$rTt:'-꾕 Taw^mA
	m5	tԣpmw0$ÝMxǎ?o.DF3h{#n!Y|kI籐2Il}OR7 K8*5ECwmVFx'8QE
thFjcלbhK .b/tvcz4?bi2nrI]3:#,#!˷n&tsQRP
!]m89*]Ա_I=<Տŝ?B%QG`98$V%ܭ|w<[v͏ȷOMeS3la^Xnmw2!C6и!c7M8#|*g<Qil]IJ,]HjZ*NqDM2uL3xI~>x.ɏ ;"F;,Mnva^E@6tQҒKT<BHA̞ۤ1{!툧[bs{QIrXn/!QEp/Ji0-%黧-4K.sʡ3?IăNYld]aMF,t ^#Wiޒwť{8짥~CHM94J5
{[+LL+COR1	4(_Quٲ@%lR.I?-ar}1/g~8??ͪ^$P/nsތc@rm-s~ȭ9H|fR"H\tٝ.
k3,sv>dO'r%0AJTWQk}7:;L$MQߟV5Z:q,9R5  bJf5zz
aa[yP	lϩZLzʚMsΓ>%.sp``0,ƋjG"71@&({B9y
x8	##P<gq6bHٳ-FS iIxmt]t7XzMf(fwa%.}T5(&J|	qb*n9b	B!^g-\XyBnrR
_K984zp.V2!:E5B=({!҆j<n3X5")t>ҕz)!Б?8߱ݒyrdM,avѦi=`һsO$1@ZA.[Y̯)4?TӋԺ0
ArAT?8--͆QH~/D@A};}6[(v! Zd/92ICYcmAk)IRV7#A*G.8])Oӽʑ}L]4M"O4̘蘗&I79K?wE`^=:;#jgcKK)G1{`c?|gk<jTI3V`;Ch'vAtEDo.sdߙo&Qϒu:,ơ|.'#Hi1|Ecw~wϓ\m[ZԵJ,̓%wmIƕO4w!r,==ĕf	jo>4ptʏ'MdBe,Ph*vfO왗sSj0
`19KbUj'f2?~F)ۇe`M릢̦ElpL-8\!|J0҇~íJw]d7XHҳlC,=0dfC^y@TR^ȥYn?6".2LEZBߌ:y*n)ltw'mU$hl1S Gk20wMoufa< }ԧ:B]â]>dL-u<`l|
7		&d+խ䄿#;0GkԼZ:V]	iHs{)fG( \(/4\pR1؎I%Ja+
HdFGGץweL_S'vR.0!j41 `g.sl0\+*zvB=K*0mjv\ө8;` .܄Op)\vd(iN@64C(i1/2L>bYHT#a'ГlzeyB
YXQD	dm5zg4R	I9=#ۛVdNYz?/1je=7S<p+JO95͘P%{O֞1v\S 
h|4
޴	wwnφw "6+	b:F4m%UoҗƔH4QGZF<띢Q.H(N^x|/Mz{A9SxZp>Dk)vPW2~
=b#̓Yqz\]oBe$<;W08}T,A51V-ߛEސHQMMN8љ:cFz{닗rI}	/V2(g5|ҷ^lgT.khA>h`\n⧀ez/u@d(uߌq=6࠹8qjY_'1Á,X%U#u^xĀ9Yqϕʬr+^7!W\
i)!h)<Nlv|S5v<~Izt?vh+
UEs[V*O3c9/*.?	nTs:e\['#AosBIUG3a ·5,`|&ì|iӁp W&yI(KpՒk٫Uӧַw;[op9z#170+ZyDA/^ߴWԑ7l=ɋFKCMo(NP*z	l6($}
	f'=	KZ+Ȏ%(ؓ|ML}n,(zǌs<,	fU#lQa;M@%A~jS͸?W:2v63Yv2+_sU=$wRIv,zJvxh#(@a2
T[N8 /;(,
IG6qB2ڜ8=Չ1k;t52ĻjUQv4嶝|gCo)
O-lN
=V0ܞ#|`YZ(<f* @LtDdp`u(CBqu#Pi0c\U0C;v@a 1wo|<)81@#5s;pZ:[.ވ8j!љv3=tcNW9 :sBZXY,?A5r|_b_/˼-o?uFZAnDdW)jGBv_xl:3@YE
oC
y2U3ҫ:naVc'WB["tqphVܾMj/sfWSto#1zNu<Ȼbrѽ$,9 8Χe~,c~{ВO`b]du)񬺕Q<W#x{;OIG±bXhRu$6p0ŏH2	HpdFЧbiϾp3e'
V(!MLu|K}C0KwYR.eV6ؾL0p#Aj&zTω%Fw[:tb	P`p3m3\SC",ʓ$A_Ŀ*~0]=)[]\}D
2p4F1}2/HOI-fAѯ]^3][M)a]^ί>9VN?Q?ׅv#fB:&8q`8B%Y ÜYe6.ҕ	2e(`_LKߓG)/lC  s]4+sj	R!Sk(q
gk8|	Q!Ҟ8~</^}3?>=N*R{sڍ'W\ߨGY/79k3+.g~~>Ildxkjk^GNbLDfŏBK
ɩBu#,Wnǥ~`SV%C޶
*_?J2Ny9_tFר*claɞu3ľr(4{q!R =ITB@n;U'yb㩈D7뇹	@\ӊ:2%?ߪqRWA B7?ٟg81T3r1jʡ١V^D&.d,¼$7gԂ'>Znۅf5Y@!u!wmߟ7I]S. m(L-+oIoP?{e֡1>GGWfWRPIJ:lqFH=¾eǠD毘ˢ <Q^i7Xhd~:1pq-aJ|׊)!5L6qzy-x۞PX
V6&hn#-	ʵWFp=EtrBwՔ攖֥UZ+C0\}ɓAG@~~{{@'rgyc3I{ʦrq?n,=|-Oމl:cq~=ZcbYN:xrei{WQcz htᾭW:RLЁURD4W904F꼛&\o"xm{17B^/F5p{X!LN۞pM#򢈭:Y4xإqYid5Fl_	**bxJ5V}ըN⠀M[rFQ]̀K {{(}4stY^J][5dAY/<,h{)M}o[H1i
/ 1'>\~2Md\Z;b=E'
$/bAV	D^,#*zo.'?[
Y?Oͧr3bY	ϡ"Zsq{me|#e0?a@jddզ+tSeDq$ gW{J.MUjn
=OS'"̤D|ƅ|@?8,\;_>),NuJ]8COk70<fNU5_-?zP!dr&=?՜dlk*[E02:_ICm,\D|⨲%1U8|z'8ЂSvJުkQ|]:u'K

>հnX05ʨ jsd/w'ni0fCH\<]#tT)C~)ChYJ vhp=ْנ)29x[ytsMB/ޣǬ%HㄽsCaixE3TΨ6?`KSyu-nXoE|^Rb&t=WK?M=36L5nmy;ߔdA7eHH#?-3<?yJo}xP%rND5[rZTF3WfoVk'}:/<`n&)	sRZm!
m-t!׳v K%-bQpqRnǷΌɎZnIi)bɵ8v\\gmQeE$9ϑ]NQ;qPV12KV^ _؛7GGl=ks,n9u+
:#ϔ,Y(Pa|6<s]?B]jm.{VcLV&šmp"d=k˛fi`6u/[vW 6ڰ~Li
0EGr~o}:7+we&{EdYx:Cں~H9kJ]DsaDk"e:#E{*OIÛt{?w@P6g:F\Z;΀qEap>
,G5M3s87~?'}η܁yߓ!%xŠKSr.܎,܉nza~jad}6Kzkqф/k'3?"w䥖HocƝy{!=]6}2gGAV
Lݎ
4IJ2GddZFF~?oh~=(â݀G}mcч&¸<\NW58Z^/:!
߅a?X9]M<1n672Sx|M6w5#O*`[YkX"E!c|%WN+0~S4OfTuK8ܣ(I*YGU/{x_z 3x%zYDx]8HrK?QOK'  O`0ʶgج<\YG(CF+cvyymU\7d8#x:>1fkMFx& }D׭@JUWd,Gf]3$ZmQ "-1kt-bԮJ{@-!/or5|
v	_;0C+޺/"y6}p#:oww1͆C*iiݩ̖u&Sˬ3s'q|t`4FKkLx^yϑABV`^lmA1e\Ҷ.*A[APgz/l_m?[_FW<L%
Wah ߈<]P*#U^؅haރ~VU<Y%~0Ѱ)L@pK;,5_k<%]E})7d#%GSyA|.}7ɝNcxe~c*i@ޒqE,LlON١#Rso^Gh0`0^Z:--mCuे%i} <beIh5ql˩=}'
JGχ|g Jw`ۤ51yM~Oh?	ܜK'lA7Y%&oXf\DIC?Ƒw^Gop+**,vm}) |$ypE]jS;=X;Qlc=n/!݊n1:oeϯ
?u>Ly<qy8\.)`tg#*N/\6-a;?|#N9K-Xjteꌹ=I3MbL Lo'}MdMaa-J wc{`#Rc5Ύ%6z}zm3O7ŏN/
+8]{B?RCgIn=Lt0_r+AHg!6Ű\f	Tb\ڋ%g >t]Ruq!cpbs42Hkcw	}޾r{42Hp^W4۪F6OQ7_\ޞ4MTf56etZ};mS'J}/֊ơHL!h<5>&޶=9qݴHu: (qH ohk)&?sjխy+!0D>w|WI#=6$"Hv&^Kz_]Π8b)ɈRdL񹆹|t@{:.>,L"L	<.+me>ia	
WT5HeеA?E{J6
F,	Z
q0,CY{u;RWǾ$CWg6`{L5*1@ۑkͷl5",l[=I@So[fvQjVW@7nffkIsN|:h@(q |=P!}U#eC*w ǮZ2Ə
0rg^l	ۈ8_+p
WdO1H0ʣ|qU[.$PDap1	0ʡV6Kx+}tNY|2R
w|>RkTُI>>Rm
ԅKn4N>̪ )e}8ZRBA`gDFSrYB|Zi$5zGweήGҔ[ՠNEi#:jtkG?gaw-}ankyQNmھSli3|?N灚տۃM҇kݓ|N
$:Pg#)ZlBFg2=w8U^+S8BOpKkyC.W <23bn'c▄^c	5`qX<ܿ4
}p&/=$3a[u/p˥v,v)YkP$tMq'mHv|	 t-+~
O^HX,cʀC.>f;UZzb>jFyfRpzu·m=Lx.U]H)c?
iQOiu,+NDG9۞0=~VwR*It^h	ԙzt3̦W)s:c Јm	pH>=eka~8{;8rO##`!tw(jO~D, H\(;_@J&uy'KIW'xRMdyR؍. 6@sk᷌m8}wC5#u[#%XU|
2%d׹Ǩ9
!G@*Sw 0)vǯ#ӽ=lݢ"U}L7\1chtEOL9Mg@6Įvt $Ҿ|; LPAx^=-Mjv
ai
N6o]Ȯ>҂ף4x-O
biUV\@9ߒG/}f^OJmގǏ*NCeY f<O|
qL;<q݇Cdy\c?~PjX#Ǘbr
		λ
k!ouG\
/C''mA0LZXSmr_u03[8l07ɡDDnJ/nV<F=O¼ʃ뵂rm	5||s$VY-D:~Yc~J?F4:Xh>Y')wJs)CrӚ/#@u	#'?	CD	a*v_ɶ~.fJ-&J7&K#)Gw|>E}
cj5	&DxY}[-5<WH|T>ŸvGs JaSw2Ut/K~yw3n*R$#W.؀r0m53B{Q=l [aYyϷ2=zszgBֲ"EmG!?U'ɡ'KCP4I^"<pl8(h@qQKwx'RF,
Q#hݬnhԁMe`QrD{E0FU^C
pp1>P2˙
,3gʡ?赐/vRܖUcjRnvw%ZRP~:+&jHP1'YC |Qx;2r`UF6ES+bPGi.P6t^cHAlGu[ʡz.7oI$]7K0KWnwT"قmp4yx?ҨhzBF&?{Xk@n-7W{@
m?}D	dTv\Ɲ#$"KnaQD%/sKXb gv/ȬE
.qgp;@Fg;uOV	4,BœLepp;m/
ls:!_CwjeیGHZSn!t8GwIS_6y |^K#V}Nm
1KY !5e
pmr^^w~{Nfۍxt 怂Ba/ZWX9<
e!ڥଞKeCL.q	{}L	Z62aaEzgN}󢓈#_}B/F$Ć|bcJy*(aK..Vdgo<ѼDg/n%
5ګ._9oBEAʯ*'RAVT:~Z Dp'쥊2˭vSˡ 7DS
Z̼I^cR ;vj}drwBcdr<_%ळY.9u<Qks=ip<O`6ԏԱ,yG{*8L3"Y\7ynoQ&֯1呂pOJ0[⧆ZK360b$=}	#nvr_݌	t삡J-ZrcfT:hq.RmؼGr7p$ Nn=NPv=xܮӠXqX~	o%[!p|ѡF[9h+QÍYa%Z<?B~EwIAk;hܭ r"N\l5Ms*3:Sr_wqo'Sڇpg4&̀`}mKhGDO7~c=,m4DOg^/{L;~Rq9%Ul>g$9-rEViPHMVeŔ'~!7P'q)Sc:{WASؕB%CGE>'C{A2A\ĽtRmmR&g>l\g9LSj0I9t޲FP-lD!! 5L);&g؏T&%(tʒ XbNU#-a[|	1G g"/G!ntȿOTN/~$Y(Knem\QTgL&G%['EZy^B+ ܷ3cc_D2_lQx,+.eQ=kYn:½evTAԃiߛ<u"#4\x0c,Gbx>\۸U_s3uJ}>L
xrχBL}11B*guS,q|CR`[YUxzn1W`IG]5`yi;h%,k+km2G}8Of;i.&_-Il00<HxSrڔU*ec?|N/yK`ȇ#KhIf6\cOui7X8}EVG}N&(VR'	cCii5bh]1V]@¤@7nSe'2zZ&bKm%\_,l4t<*W?Cdsa-cU:^YP]j-jbk^A){9ҐKg{(qF%p
!Y|)-AɣKhh֮5uxЪ!+)ĭ0:͟^sdksi^w}'jXqx$r?{zYޥ7u,lC];&iUz*|D:=/+ְ,HP.Id˛aK
pFR}X-}^	9~X娡:aQ60~
 gZ5v/iv[٘ک|DTNXh&9$y.Zr[S0s{aLōi7
%=eu,f*U^]H;`ҮTոpAh6Q'uzH#ݔKAK`4*"
Y+tVHJeX2;_V@!k=\lLc^~dcxV4WPk<g
E6Q-8CT$FГ|ZrAc$L0F8RKL>̙>| |A{3<ܦLVc{ӤҥT!=ڙA,ھkQ,\e措C$	D @EQ?%˞kjik
􅱤/Ś3H6M'Ღٵ-"NS0Eqz>$uTt|y|EWgVg"	d?ςqWx錿=
a`Gz(HXS`1	ݮc0ha[F_ty|fΐxcV˂}󱣮 <-~w]рZn'7u$&yK>hӋFOO_k7A% )*˺-r@9>#:|uRr}R8ǋ̙uVA,]zR5vtM|(Y幰]bNDKN>{sTx-A4e+ŭji~ϓ\^e8IM^
c֠~2?]}۽Җ!q0rMtMdގ<؊kIuH}Om^yYG}GŜ4&E12̙_,8r\zzlFa۵!+jcϞjW`n
4+C$pyl,
-U&h쨩7nTߤ+GkۚnB_qWmBk-kԦP0pwCvNB)w7N1,*=Тsw5=q찯DO'ЖELp+1fmJg7ȴ%x.Ja*"NKF\
}rI|80B54UWl`I e ;0%wK}ICut-II#)Jwcn;MexסqŔǖFoJRmU[;gHLA,X=9%rT\plLTIGeB>E>qiV<شfjyO4f㣭A]^N[fGW˓4>}E6քΎ!Q54KX~Tf֮2PG3-z *Phgn_`?[,7A BNڽg-+[ i|{~KUQ/1\_ɍm\VH0,Y$S=>
lu8+&8r.}A<Gá%ȓsD":g{ECZ_؟
]&C.(6[փ=.P2zLj+HeznyJ%gvC'{4xǧvBȱ.3x
+y"p9^؁:ή`ڝ%p"bo`vkԂeR>-v$$8&+sqc]n!8:+N`0פ-@+ٌD
U1zEx˲p_i|B{F0Oa&NIkPy60eS
x[9TeW,|4^BhiaVJbL7֖%w%G7[cpi&(?2t>gfj0zT**	2ys &+ǩ>IzE{'oO xOD
ɭvgo5Gs%ЂT=\4W<ILjxF9جF3ٞu$[
9RykO|U
d:S`'r	\H,! 63PoB}'#xi}XƂ|0uf&i "+P)xK!@>A:c󠻎NUt]Cxe1٨uDn@*;b}i#W#KI d	IqeݰjMIV	k|̆46:ۓÞsɵFXN8\ʳ˄0MPa&-r^ܞ:Q:/l'*'en*5ߪQzr<cmvt:긹urV~x[LYY#teqZXԉ0X#yf9	ݱXȱhw1)I^t7KpI՟bJˇnSPΒo4^8%ʪz[V-~yLYA$^7[h0`\]+e<he,#L*	=?ss S^u\8PuHt:GP	.6%DwޝN>CjM\Sۙx.,ݣ6@xe12 :o7ŧ8#qwZAݐ "9p5@8n}Gf̓@zcvH&zҀrp nQ?ظ'SOyVWХ\vPRFU+d8'=U~^?,5ߞ(Oఇu1ON`gb^|D|cػ߇%;\a-l.ͣʮ]-(ϗ8+Ǻ:8Xo뾳;?U߮.0;Gʵ[ EGkLC@% e֡WSMK
QHJy-z\}y7NQ7;r( 
OIkZؓx
?iuIAwFI/ZJV8q있DI#$](%}z>P>QTaxp}{;8GzlFaJɬ#oc1Zc~3
++yWZ"S/<ꡯa{ֺ\P+rRaW5v(sCG>TE:]ӕK嘺O92SZ9VD }!k0o^Uպ:VY"unOB?$`USK0΂t fqTIޒo&+&ÉxWGe?ՄfݹEo-hd[Cj(:nLN@uF%	S+MmgӝBb^(6WwZg^p3Li]6BT6Ucݳ˒qC+]JfRr*.Yҙ\tcc"ȑX"}mlGϝFyF?<E;^:ÊPʍĭ֢.v(4UsVǁuӵR̤;7+vGz8S0|>kcV )'mu%QcD pl%΃گJBۏ=W}fZ6]xYqneREROW鈿iԿŌgV Rzrr"k@n#abX7:E1gH$&6Zf{+~(d9. K$I?X}hwk'
`6DX+3VVu7F/bT̕"
wȾHgɡAʘl=qO,1PwaFxvY'+"^vLȞ W,[}ztޮ'Yn1<ܶhb@
ɹKFuDk|,	tbc.u%tzY	?p+sMXy'#u9ξl8wn|bt3BK)	hΖ)Lc;~Wq)(18Ph˖ǡ^Z3+)<Li.KV+\d4v3gSGS~N_M?Z+`/y^H6YܸV1ö.!4]SgDJT[)\%ظINEdȏ}
!O;Vܺ`a) 3F9qq]aSǖmطqz{uGD$(:sXF(dOWߏՈ;z
E]\WD00s]!Wܥ[h7[H2;>[l! zVk-Cewh-r>T<Ξ%W}c"|ۇJ n"otjrd3;2郬W4=bl01U6Y.R#|*HFr^wsr.`x.^ļߗg6Uͮr4*Wj>lTӤ9|;aOJg,iQfn R6+OmkY$G#_@`ǅantǾ=)l	mi(	'6H/՝Xxz 2L>={=81ʤ?G3Ȱ4*\+ONe*HKRGYsyw7u	͉mا1b
${%|tdȨ},-Ul	U5G6ݫR!=֯-B`kf|?|JV :ަd>,r!b"!O?CηcO<wn:L"KLƷ~؆Yz?*}H.fQNEQ*s:82`,u96gc8J5UX({{3e$i4p]rW_Gh	q[(1N65$q
aa|z98=j%Ou|ل-qXf26'x5etBCgg <	Ⱥ.-sdQH^K}Zm_t㯂'l7V_GcXd|U~o}*W=:`E$Фfm8 o͙S !N/A
%b86h[/Yr#eByMOODtɂ!_4OYv`B2/j%FoKO9d\ɞChQg4
pf-qS8cuMW
dWSoD&3ssyJ^6g&kW]z~avFxr0?;h
4pC5҅P<軑dooa{Ss2X+iøhϲ}}aOˏBByS0JGnc^Sͩ+uOl-0XuY32HY~#ɔ.Jo|&{WSF֋)55$#*Lָ(-;G
7ȼSq~ï:1hf֩, :')!ځ8#3§m=e=r9~Ww@ܑ3#rt`=IƞhQjÏMi=`咵Bp1'&ju
ugwe=A#2BOe%BN$9&Ƒ}E{~ 6bFjIl#τ>vŤqB(c!
Pc;t.R#%.ƀwN:s/emPyJ
E4`wDf/^髓;kBKF8!
 -O$wrmo
1P"DjVHgArxԽ]Qk3="ZmůUo=Hu24
AWVBfrj`<=I܅K.I@è]zenK	s<BM$\CKư?v|]C Z#{wAMZq:BD[n`8ޒVlAWXְ"7= (\ޚP
[@ːٶcWl4I\D)
;_ӥZxsF!vNeTnG>jku 1Mex1,9Ղm<<$j]=ܐR JX
p^n'g|sؔ$ax!
[.ƱasPYdUG>sSuZ~	<gy7&mзt q0cNN, h܇z
n&.QRɱ|YbnT{uAe~GwM[6fmfsN=e<D9ɂ\o^_<OANWj-BKbSUhR񠛖(ɀ.4A=:˱=%BT<2:.}dJ^
D[?wa~-Ls9J޾A\ >(uCC_Mxkmpd:[MD	q>c[{-'ם?3}AF۴l@w%\7tfWޟѓaZifPr
FR6{ɴE&*2RT0V7 bCB9
'
8?]"9M'g֗y`zx)i;8Qa4+xs]?nI@2vۋY@$#@49̴v"oYỵC~з3ɸ$)v+]THop^_}T~Ĵx--]!fVaƙH,k(]yuV*8v݅5R<C $)#|oVb{E-5%5VAi4P[8Ѫ`be
l8c<?m}obqH%推ivppE*ƙnb3:2pe1x^- Ӣ={ҋ]<r}HU@wGaOP1+$Aιv L0UjxqUP<<c!|WC\e)عO>$aO@ؾX'>JQq	^zF@\ک
gʾWMnN{nNMm]7(a 4wRۣm$U"[CxMָݎ!sCW&Y>UWWX>˕T6
r.%;pݕk9!7-A8yZDpڿ6Thf/Gwtn~73{ΠO!ƒgmz<
*P+XQWqk+GsakKi⩼Q.! Ixw]5m/:Pzݯ)B>,78OXqh(!G/R5V6~=i"r|U-\pXK4݋^
Ol_V/=i7:0cK{Œ&B̌"7zQԓc4f:f=IQ/ B+c_gaOż
cJ}Z-a#rXL'0
zV{^q:K>YE+%!@dhv!vǳ"qkf/Gr A$́ls	?ڿSw
@<
$ȘQ{fċKԞn5|2}
&/ L
͒Q{C=d˩ӇhSz84QW䮿%l	%NTtpk}g3- SMBoz){93D1c
Q$aSI׽
09H]$)3K6{Q[}4\yn1!lac$0ndGvcZ؞YYRF<}?O]63y$,ńJc8gsBMߢ(O@axN~b4]/lɩIÀ4n,iv_c~<~؄`5kN$
R(0`D/R+=<gY aT.@ws
+S>s4xֶTvH}Yx"YAr^Yf\4 D6~}*?zEupҶ"-\=M]up;ne5.ѷGPdhsq!:zשcmwtsO?'+1)37)]OʼiV]Oqsҙl	`e)*>Iv#6Ю:_d:j%)CṹNN.Nmzp}K"}}%(ii7~ެΗfj^FK۩{b@#ϐ27Do9c=
CB-@_5jVL:y5={"tV.EަQgk v+]X1#zQ+-!#^;|Y
2V'ŦرS'.X(&s_={L 4ȕ1Zc'Kv+IAb搜uC1UʫKJtщ.?p򢞋݅'C[2Ux!wA:	i
CJU$K?ۧcxq!ܕ2nb
dʵ-4/a>Tg{ YJb#R/
f'ʴ=-%gd7l2)ZP_(uc0$[U(]t/
_?{ۓ|Sdܳpw\24e_lo%4Xt):?^e=7|lH]CZdƣVr	mಢ]s2П7nŽa\cctejd0	JC&n6'u#}=`_yXW=؍ RVe[&~v)kpXUg_v5}	!mɪi5an)WAkiFN1
{H\_#&le(&Rw
|[V+l^+4ZYg!!װQY)B2Tvy䆰TEQ57V-٣4oLe?8Y^=Q38np[T	]ٹqO R<l0:rwg7K/[0SHvx! ߾e;y Y		t5p0wl<>02%HCg[be5[iuLǼ0OYkNQS$A4uFP
+&f߹IO
E&\oד
 r6wu~a>6,}U3HnU$'pPe{t8Ɍ9gB0	05:l*naE-C4xO넚VXXT"'(֝W]TE:\Wh.NCgSMt<z"td	gWn)O+⭽P>tk]tν~c<$Awǩ G6}B[@
_ZZU5kN 
[??Ngx]a\ѺéD0mYd[X]pڛ.-['_⮼7w#KmI F$	I`f =ZTS/,Wf
t_y*!VN(x d0,4Y[UU'QW]\o$|c8*`mcu]ؘ,E؞$:xLBf|U5mUPw|	-⻴
oV[*bϸiMnv]VaciX55T֦Ss]EۇI:"6Ylz$8sÚDKG>ށL]
#q- -!eɥU^<kv w2p!E7RjPsLUuKJggXZ:)Tc ҆>ș^~O_](\O
ޟ
=Ha|'.@[!\A!`钊ٸe]_uK]IyGnw8֌na	lQS_wg{>lxaY@f
	w : /BW
7ܻ7cKιq؟v:ꬄK>Z.HE|yMEy?Z9GkK2?^ԁ%wI#WCޛ=
>y:u.QX9$#-f!;*tcgz>Æ_(7R?)ȃ9}{q=wW880^묽6qf+>Ƙi*&J7䩬A)zķ-]q*yIe'U"=B	uNT5װםHjjLԾ#Ӧ18O_)^N`9%)[Ia޻օl]6ߡ2l輨j]|+CMNz6+h_`R9C69!IŃyI@OzďtG@Dׁv@$6ˈVdY6*j/So-U'ͮW҇pl:o=n>dL6Lg6nGMCCu
;o-H,z\^eO$|ዙ/L{c!Ӄ' w7ۖJ .SdIǭ͸뙈fPA|pEG
E&g}= 
pIzse_j&~:~<3Pf`pn>=RI+0L P"_}:H=_x3]jQ۔]>[!q]kX]Vab{t2%B?P]09hxùQ4hΰRl8.>,#!A%
B I"3%RuU&0! t)6OKH$:4L`OryLFև
o]Eh޾2o?~[A~&`MW?âHߒ1c?V}s_~daj>D[2~6m몃k\JO.~kH
`H9l/ZӖ [6>z i׍ G،'F:qbëQQ+I@ù$zBN[Uwo.8%HF!:_#A3:"ddslmOn}pBlvTΚwCeDmįdau*d9ܸ8#o1ZnʺInYћ|z$O#O:Yu4;1dwGܵ^iceUK>?U}6">aڬi+Z:rFoh&J dtT)*[s;w:jg>[Kܫi2>_Ka_&e(7z> ?֚6UT%ҌWSlny}snd,Z1홐Db	ݶfh
5ܼ"H^euh\p)ܞ̖ٝPaa!'i%$ l:CUI9WkPjeV K.0z`JƢM]AkH,t[˫_AK~z{/s'i^S"/#>ѧYd]qɑ/tr~[,'kjH"nik1a.xCS*U5DSMԎi5nF梫~dk8{sM;sٳBƪ.M~]0\?1Z<۵&;")ҥ;zrK"E׹/9,G:#3R"%ꝝJY:GEG}K}p+>'x9%NxhEbyp#	o5ܶ n~{q8^{.5Xsn"0],Tbُ^SagoXvt*Yv~1	2R&O֝(|b?yPy-x8@'1$FHY).,!QK&.mQL鋠=@/D˚MଃRMSK[wU3hƦ1	E<21i0
%+lO;\t;dn=K)Q@~O+8V\L[Vůu5eXZȓᰛ떽1p#ϓ/Nqi6N0ݢ\' 
ɰيV^mUɧK;x׹/|;j`nݻ纟3%S׵m\E:h)	G.E@<Lelfg)
" tXM@k08}
%Hh1-D,	z}yfY˯"%
_:w&v.G_^XUY sTTs;q4%'w
(i=āO?])ӘNej3jt7"]CsV5#N,'='+:4^|RNJqEkqۨjOA;tf\\[m[}aRV2&St?
귬N\/DH?~H}@

~n@2G|_#7 Wkѓ8\)Ǌ ㏃utWk8qŽ.:Im';u%vz3σdnW[j||ρD:^FNL
gsx6eGנcѸþUjiTֳ{l_Bs@ P6!U\uY{'idTx9na
.|Q;}±QK}=,~3}r%تQTT"}1I4*'`3"y(Ji(1C2@I	+ѳE#-65zE8\$;y>%CC@~D	uT1`XgNP6XpB0z|iŋ?&I3)5g̞S[d^Sm6Wk787H֙.uc3_~c
ZnRMwjŰhzZ aZJUV̖:,C8PYթ|newPeP"PI0
,;mvPB=V~};1a+p0Pf,6f,$:bJD!^¶={ِxՏ0.D1:pI}1/%YKn߾{	׹oshƍխj:-_
0/Q+۾9pl0)RA؆:F ;UgPW9.lTnGl%m!wUźr:4<lio JxpfĿ^u-FJ{[~]
A
i~m[3Kvn02ߞ <9G( pQvYO0ףU۴ߤ,+;qђBpJ:v/ą|QbSڝ4>TeIw[1p5 <g;f3ӗKO*`VtO<7ةnEmvHxhqW7D2<$A༜L.u!{:xHn_͵i_mob;?jYd5ߩ1-gXѺnm
/io8Pr[,ҷv''Bӏs+cZ=)I+f˙ daLOi'V <d湔孍`ގCt
KU$7ڞM\DJ/ğȁ]X״b7_9*m)P,f=,U\܍/dw[чSpx\r<+3\D֤tSinQxb'?,,hH%;5mdhG?
{|Mfݔ2Mr~eȽѻ#i'U[b;ٔnBzM!x5ta־?L3䱚XAv[2mLɞ8|*9gǣdE&m}m	gW
~()Ӏ{sh ɽ=Bg@wB
6L
+ՌLdዑꇰ/yzK-GLG}dy	\Rss"a8~X}s9>.p4`f#oנ"sna<Z؂SK^ɷ<0GwƨV:(/cڤKP?oM Iv cښSKǍW.Tq99:^zF[f<NT!߾lxַ}ig՜(ЏߚA*_N0"4C6NLJDȸ)X}CoEĳ؎J10qNUɮ8ѠEC@OlU*qtsȯ4C8YD#qJmũ~J&H=k@NvزG5dԮɜ	;f=Ąl	T
]wj8f3O̓xA@>nCv];i	N{΀Y?Q|'V=SIpCr9:wOִ6)T_D5}{/`*J/<%7M_)qbVh ?1f9t:lo~)hᲑ
JF<!Ae?(AO{FN[lZxiPm:
Dsut/і2j#uKZLewʫ5LHf0GBiI;|dn|K N'sDѩ(0T@t!t~( g$/RD5Oj@j6Ukqc 58{dt68iF=_y5uNFbjTL	Ś'
}yVQ}s	,P~JvF>6U
n=lrIXSݫ]ufJhUGz*B}KELOJϽT_iCWwTq,ww{yVhSfv.P@,Y	n9)¯CuuuU5b⽏x7s 
LcAf\O_ph{eS4fUN'M.Xc+`bD~7V@%p7Y{Ȑ\0W)l$5֭޺	ӵ&b|sǘZ_)G{we'7l{>M9Hepvl`__rkBKC.iH"䍾s$zkhy0#֗KCƷ҂.O.\4 M:sl.IDL{J'S⛏_	jq\c(ٔ}u,W=9ՠ5y{ٙ-%نKEHrYlHeLHdW`nK,HbHR|+xqi<rGWRf(UM%F-'BH{)OP
j#55#,zE׳elχ * *SSN`П:#tWj0,]O"ЇA";nmspl2I荇7ޒӮ'(8chћ@\'[>ز2a,GV].|nb!ґ4WVO/ v=R|Qڒ\I	@r;` H}-w.3YO<C;tnټȏ,6 ;׏Yt5Jď"=/W8Hjͼ>u\6~'\m8 eCBk<w8@
&84॰XM	bǒq]JP-?yB_0P5IuwKgy8f|
6a rUCV7?t*$ӎ_x6d|:z/6Ŷ>:ߓl͵5	 A+
΅|SiCcȯ[wB
q0Ɵ~}"a'YaI=$$yX('Hj'*)NR Ψt>`ДgDzȟ4Tn GucƖU6\_Ƴ q8:1_!ǪO1ɠs0fQW!
V ^Mᘭ]h^}HPKeaZC 
 PK  D:U               META-INF/BC2048KE.DSAŘu\Kw-g))t*]R4[$Dzt)H")!
(wcy}Z3Zߵd
v@ Ƃd#$6F8a6Pg#q$@BgC!`[*8@O90ZAPcB`4,l
.n.n.7, i'>\Tcow9⓪*\ 0P D Q@D@PHLHȘ@@"?
`泟-(LBB`0(#0̹	`uMVB箔w$mqq%+!:NSk87=00{Y	BhVҨTf<=%T36K\2Z݉31KBBo$3?;alcVJ8LW:8fKA6X阧W+3Wy_#sʉ)VJV
ϼOnslmnț7w0
smk0
(85D2F.E)e9_	
;&O` & 6@JDJ0Uix
Àoc|͑h>>DKl[~Ö,y0AMM)-XYdٓ9\|i7o:Pt_9K=}]`Z!' 1qh/|Vb2#͏'Bd
mjRW(88
E^e:4#@
:W^]glsx`PE^p}#]$~I
 Rbi'\&#]5MJ=bPV  a?l;\ea_rqyϮw=@[0 	V@+a lZp[u
+_zXV|hwvgX]/<߭7I#'~\3]n&(i#GfB{o;ۡv3^sou8AԓRy9sjÖH,k9۫NꇡvZ[zvss<KlFŊ	-\D=]3\)DY%ߗMkџ<k|BN]61}5f6t/ñ(E܉7m"JNů![u[n
>×)Ԝe[v'
]y /?,af	JzYgf9MQxA>'!-O نѽoe$pw"<J%D́RWco4Y14/
%{-`֝魊(+i/APB~ D+ko+CܛTӇo4`Ww#K_ۘ6kR7;
_)
5o*1e^% S~/4|kzW!Û_iه؛
})Ic{#)FŐ70qdq,M;iL!eVM!Q~*- niHR x=N}wrsؽk5Ium?.y]Nӽ[_{TOog>HvW`Nm%^5uPTI ۩(FA3;Ƞȭ]%D3dŎ|+i؎X<ko@tV?ൡC(*&UF>܌\==y@^UHEܜgMLpDFô[	 d8BVt$a݉5^Tbbsc103x{eX62cK-SG*+<=G<&UYOkE8/ 3MT3v״c.˕($,ț]mN(AKftXֳ?>3S{SɋA!	7!VD=FVU1+)ힱ:_RY&A=3E3;Òւ%(!7Jof_n$0JzU{Emz;&)`HDiH$)e14푗DOV17(vj?TmT,=tT1@0%@7N:@jqOŰ.|O6"/
	)@̞lm$x<PiȳN
*Ǥ\<ʚTJx? 1F7"~i)M01m:	TW',0N3{!&}r|cNص|a,q5yJ!m#Opn f1Da5Hq/I 1ь31C).UiN`i㿲

&)DOA	?cRBE{;{7HCHߏTW\,֑E:E6:ήY\Wtd-,~gAX9=zIE?ϐz>DWcCs;4leCtz"΍z8y_1oSŋ! Gn)zO-pLݷV7:\1[BO-w]:
\˚"#>5x#{aMA-m	37bFԓBs}5LĹvmYtZmOCbt	q˞
$;Mmip7ggThɥ#Ǟ.bxcH/Y-89PLۣϼJT{5nEBI^n@j,|T\;XiX3gujuHeZ4S^3\J(fx >d}?vwڧ5ݝi>RȻI7QKry6|j,'NTZ!D8:Z$WK-{NZv{iGg+o7혮={}֑*:juL9WM>\t
< Qt*o#c  ;TNra %iF㝵򳼪tV q9&˻CǱ~iD9hٗT{xJ[9	YY82,Y3TC!}

 03X6`$Lz,NGKyvWEc 
{Kx:ҁ]T1HO8~E:QLk/(9_'弅m.pU<1mU6s;g)b assGt(}ࣅL5Pj,-8*"FiDÕA8tz8ưZ;AU%QG(-=t\f4,Cךr"?NC6	Dg-k>k5c:ԶjI 7K<.blLQaߥ$+9`"<btA!q{o_Q:CUv9vKY^!b}6߷k!2ܨ䪯Q/eۿ8PW^Õ+|o裍{F۶4қ&Ҵ:
S/9|lKJLAf`߬r+iw%k%ʼlU"PPe"Vě@'jꠇc`ڨͥnz<h4aX"5u'˾rr^+,?XFm#Rboo,͢B7ix	a"L*a'u	c<}.
؎-N*Ksv_Ir"vdDe2f	2jⱹ';6(|Ux{MлTsko;(J/O%5?s&&p%ߔ\䴿-Q&e}+ϴ,nSϘ=c~CA̬rV5``OG|+N~kKEϭ=d[:0VT~uO(Ͽ4U -6Lf/EbʦQ+W
z%!Ft?kIz,3$;%{ˌNI$܆
s9tb;/J?Vz);
}۲P4ե 2aҏk=9mȷ`dتhkj툨Gy}v.7L[&|oR	䫍T
/F|{9h|ɫwa!#>
0ci~o݅6JR%y\C00Tws`դ8פUګn1XY/f?d:&js|v2tD+C
xa#`/	#w09Pe(QAN)@
c VѽքjT"38vlI]9: 3Buԭi2.A	Az=x׮;Yv]:4,EM1`fց${e#7R<J+mWhfd[5њ-))cQFA1q	nݛ^6o^n#Ӗg`{^3˵UV{w#&{utTs]87hy}rX.
L)V!J5sj#-Xɶ]_Z6Iv|4B֣Elb`&IGj:6p|nfaJ'DR';۔uHm6e-hN~dnGc[?*VH%G!Y6L~k{c0;D
"@&m_X@x^-/pe ;DǨ}=]nmBűb~EreRB)Q11c &ObS2ĻqJs[귬M,)!swtCcDEȻĀ3y@'b? bV}
&R 3`/V$}w¨gaWZc?Pq6ObM+řw66cWy~`b
#='\*=S_+!wB<$onG{VWz>3Yat_i\/5es=|B`RGˈ7	bTǡdtWWtT9PAc&FD0"\KrS0wq`&ǴPOI	blJ^RqL{cx!kJ#P^F&^).m}x6eeBK#%AY#[
[8	Nv]^%0UV4mFșTXQ)&xYXzTGU[
~GD_HVV-9{,FɹĚkn8sj2VLfp-GҰ(f؇l{(z޽JE_̒@3K{Y 8Y`]\{d7Պ*,dq!|ϰplR8&æƨxj??t@)ͧ0H.:&xݢpMoY,;׃Vb ),'gi1Mp{]捼o&]R[5bwO>l͞oԆ\={PJ4|sYj_F!&ԛ]qd9hŨh`u[Hj ^4&K-`[^o=oTzb+Į5h9^8CA}2lBYNJ==AR','juy'$&Ó^}u]{
A)|]"	P%:Zۙj_v+揓"~ta ~~U IR*0pf0AdpqbcSl7:wϡ`f|#{<|In3#}|c8# zvt~wkγI4tk,Z{dTUŵÐP=-i'gb'Yc>Z=zzBtR+= fg@ޖs~^]90b}*AxHٟ2SJW-&Ѹ0 m_9}ɕªM.}z<
Ȓپk%|sR$[l]Kהh~*h.C=gwej9A\dMt'"<T0)ls
XzhaV@^M*s[pKoBPqj8'jAtH<ѫp{*kڑ(nlxvBUbp\؅U?w?Sݤ!/s8=9Zxez71C9r{SnVF|ַ=akGi~Juk'6nU#цWpt_UQ_TM؇aKZ.`c3wJ< uR6kjs)~ ВPK$&  	"  PK
    D:U               META-INF/versions/9/PK
    D:U               META-INF/versions/9/org/PK
    D:U            %   META-INF/versions/9/org/bouncycastle/PK
    D:U            ,   META-INF/versions/9/org/bouncycastle/crypto/PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/AsymmetricCipherKeyPair.classR]KA=㷶CZDHKRAaϻ`#n*
EΝ{Ϲ^
@1"0Vȇʰ̎
itl=Y#[r丶x}?v+uG].#pT(t,z=ax()9'`&gHE_&١l35sӟO2v-Z@!Z+CP{1OgVis
ÙQL!Ú0"02ΐү6\&=E}K*@aP!'J1, d	s$8J NDO2LP*"&( I,MlPdg!< L[]Z%\V3 PK    PK  D:U            D   META-INF/versions/9/org/bouncycastle/crypto/DerivationFunction.classOJA}[F[%
VV
26{ao/x"GI%N3̛޼lap0 dv4)ut	V
UG՚CU Fx245z$>Q8S8kz-
b9SY	WUISXvx/D?s8>v{Z1li=ed@#"O PKч5   d  PK  D:U            8   META-INF/versions/9/org/bouncycastle/crypto/Digest.classEN04BAɂ'&&*T)!ZƕW<C!..Y/ ,0/p!0
ImUY=nԻ^V6]kfl>8k:jkGeUn۬\T/Et[kggxq4ea҄>jt7`\{:FQ_y1rg<#O,pǓ	qBPK3>      PK  D:U            R   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$Property.classO@ǿW
-slc:@MDEAX04r+,)vW%$/1C{^sݷXģa蘖ș鞴ϛh⾁|``!b7*jŮlUvC"="dxRm-Na		zmJE:"-7L2VV,zϨ|Oqeգ[ѣ^|'|*;r
-=c싟}E0CdFw)-UN
=czQa +,lq8.J0i!&ǐNe㹎y=yfX<ֻ%Ҋ]=A(OG
i6;o
z̟QGX嵓K	Q꥓1]D?EzxIzi9*9dZ@IIhx-6@2;@. -7w Ljh#е$Z*en&H2@
I#NpP
w0y\J_`zGJNǔvAiSNȊ4qͤ.(J,F	PKLb    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar.classZ	`\GyǒʶDI"K#V#rb'y3M]Z9qB	r%iЖ-d%0ZR}rPB)
߼]kW;v}5o_>O~\V8O;c:@חH_.y?JZ}*E,t>釿ח}A?|1M/?i_3_^-*j}3Eз;zS}/Ckki5Eg~ׄ;z?2J2-SZ/2?o6S^50bs)C/`27CltbKCA6L-HlnYK-LE)X=a-ŖdhΤUߗjHq_fa[f+Ӭ=V[îiWYG]fפٵi6ͮKi֙fҬ+ͺSz6Ko)f2J-TtQv Wŭ||\3jܳQ]((F{G##H ҭ<?JT'FKUNq%&ұ޽x$7>+AtEhJd}</Gg"KPlq4u]^8ʡ]`AQH?DQ1xW_X_ͮRo<X3'KM">Zʢܰɻ4VZ0 hNQFőި0/^Q<6V*il0kjP,3dkrRţ9kiUEFVRTR//DorۧbY΋wqVkWƹYnG؍k#(u~fr\i2sm˫G"UϣQ=3fauuV7t^hi[J\܍HM䧘U`:jFmYBWRx8ݳX9kjU?j37K3qVϔ>5|kuumeatkTg#f~]8Z(=1V|ϳa٠(sq`bγ~!_Ձ26Խςmu\k5gm^z,	't癣D%bTbzXV$L6ZZaњ*WsYw[(ۥ¶hcamC{HTiwNU0P΁u8̜fUt4Pa(M9NV)Yz3%Kjz0f|F=SACˋ,},`!z$Ko1u
Yv=fFೡQ%GG*U"IYn=t/:/ԑRGqvKNǌf80blsYz	v0ٖ,ʶeJvqdP,vybYv3%ٮ,\B7KJ=5UFG/LYiB$ZKSβ|tp	ǲ:Agݗ<GEBNǆ)vk\BD9ZSl8#,=I
ǝlOm|4'6v(^xEl!{
fbqÌgF[[巒I8R]ܒYggR.v%n^
qe/ݒȗԈ>s,,eZGT,D웦\˓*D$"[F\seF_y2lǴfJAjBC5#)[)RC\
)"⁊"3"P#OفpoFC;RZz(\edrpc;s/MiIӱ@*5l#X^ٖBlC2<viH=ᘞrH#RQ*ʈlWq@>B
q0J#Yg
3*Tca(m׍m_~ceD\
	dCˏlzGJ2
1C˒"-'0q9a#)[eH(_/w,Caac
Êm6p +G&ca!#8"M.@H#رx"5
gltaqd:BY2B>b p9"aB76Csm(´ u\x܍,aXFaE2}Sڞ8#|'FH˰B@"pHYtMi+}sbD|*صBErv1U4]a[q ==F0v40d -r6w-
51m*E{ ucX-f܈F(\L;
xqbEaa','"B=3#xW{kvӑJE	 >^̏=<gqe&"		Uceń9(,n:ǈ́)bW+rNZRpDG!;+]YPt1åNB&u)e#-ٰ<FXYa"$2ЂLX{0Pc(AZ1!rlǝ،
Br1JD
>|fA
Zh`P+0nپB!G͡j =a(24,.%1oEѡi)JDLr7 
%oAC6ep!d5܋#+FHa"Ћ]=+t*|c	e-E>a\ b7xl"?[0ΑώHgHC0X]Dن
,/|;R6wb!Qߏ@
 & <Z
bcFɕ@q-<AqEpH}WxMh3o;@ޞ)3cʉc0Q(mӗvh w#:mq#˱D"8`1#u~(	QdxEH 4
B3RF!1ѐCȁXwhX}صM}]ErD]@Pa !BπL?ց.mۂ>Ql*A2!4LqAF
DJ#tK!eFwZ4}/e>:!QOQT#D!B@wG=u9
"Ir	-+ޕ^ ҆Jm&
N3p0bW=]Bkp#
DV<@Ar`8	F*v
b˅Z]4@*5Q|QQCD5L0x 2,
C䢪 I9#]Miу $qd?ʁ<G~
&aHtx˲1qiz"KwQp?0j?OxݪPٱyr
n#8Rs-s;Άk5ť
v&?08L_%7F=t͊}b81p\q~\/C5~:vL`s7v-UUiS+2)|냐EuSx?&GMEWWtC-iֿU#g#KrA)N>u0J"hIg#&t<lۼ:R8f%б!mgfƚYz-oӥ~B?2rjHrQ-;+{Q &ufE)d-ǭ
`r:I%ةu .+
ypˀ6bfγ~I<ߍB6l!Ш|\kxuml+ExX^..܎κ-k =UTEAޝ^QJ?j:j1Keӥ6
m5 ƨu:d',p1j?5&+WT/a<^W+g_WӃɾk衙
kD+p}33qg:E0-\3DPJ׿W{DO$a4E0ghbtkh<~¼ºӔ>N]'4ټdh΂)zG*rݤt}ADǩӔ=-xe4wP%riβ=
%iW[ٸ		j'Av.^PZ 
Jٺc;GyOE]O9T	e1Wn2'M98IK+i	<K'iY)Zq<Q{DP/B/Q}U꠯S}\>pˢhyD_iQ46Ms %U5M)jI!$ˡnz?f4&}V՚nHY]9l*?v̡3t.DCI8m+*
l}MOѪn(4}K}𯳑cm5gWvuU$a]iQՓڶStݴiMGI=k3S)~գ4oeW5qr΄sMgf]=Mwbh&4GY@WzG6D˶-l
 I#fclObJJ-l/iAYx/=^1N8W3I]:afuPin[6|3zfw<v1NLR7S"M:*"6#Ҫj$Z$[	c.YK&fdǢ
=:2f"S49ç݅ٞ)zt v?A~*ގ\#vQx?-d@rZ^Q5/Sɇ*m\ H/ -fvz,l3BLoTUئ)80xag'{Κ?9JZ03Rxŉ5e
>`; 뵫 OS@:3qEN*44N5}tc
(5Q}OW.Mqd$®rnM7zW7ԯLm)~nU69:
pu]cc+=ڌmQ3;tm{k6ybW^T[KؗaWQdB
~⻨#B64C3=sug6uK3'9;4N혢4pn9E'LƻqW2ޝ'=ɸ4Ex<$WeNt+Fԑt ԧhi>Mm/^|&;;+.S2C&{eud1ZYL78C7R|:U(!w:<R%'~Z=IԇA54=4<ghx!IZLӋbrۓ׷di*N|8ݔjơ$-Hkh9]IUԋFCiNgwlCc8xއǻi3K]An"{>P'.}kpiίqmNQ_ͺ$Qt4T!}k#d+[+PK8=  .  PK
    D:U            8   META-INF/versions/9/org/bouncycastle/crypto/constraints/PK  D:U            V   META-INF/versions/9/org/bouncycastle/crypto/constraints/DefaultServiceProperties.classTmOP=CtӉ[(+1!			r)Ům["ƅD_Qnl%/ٽ9<v~`	OҐP@F%,4e>,5	,f0;]	$ܗĐ,LdȭhjiօgS)ͽ:15yZ?+lp]Dru|ΰxp[?5_X\ս#W8ju:jIZ6mS<cȗ{ìU.96
BQ/>4օyQ&	ؐE5)x7NHK/;wsԝK3Z9$ۖ&B˘D!,dcD(r200tҬY74k3&ŋ:w*N`lGgfz,cyO3m0='bś.ec'z6&b]e7̂^ȅo:8Bs$DI\:E9$O8T31>ђ*FkQ-^4AD$*W-$BIB{da`'>F2ha04LodUrj_!FtHJ%\g5F%f;H&/H~8͝6gȰERƭ`7unPS%QsPK~햢    PK  D:U            E   META-INF/versions/9/org/bouncycastle/crypto/BufferedBlockCipher.classVkl[g~>Ƿ4iZiw55]))mv54M}qls|5ďD&(*O0͐@!B2l:N۠y~y?ͻ >OO8'Hng.ӳ4pQҏK't|RK>$5|lF>:L#'o.Ǆ,(HwS>u|(EN*u|J%NW\<M$Kbƚ.R1
d	J;ϔ\OT-f3F.=J_(e&!Tz_UeZ+Zʆe獂M]ΕNIżG䱮gRh>/gSi1rbG)m4QV:*:lu9>_̚Va:_݋3kت
aSmZ&pjTYB=f5daCU\;-MldV)cV*6X~x}bJk
fKEj:xNcΕV<n믎m#PxEy&a7zBc!BgG)q-O~r8@B`jٖiLݳGCeHpVB<#!|/l{
F1ד,̜Q8nSfѮG`Q촣3jD<}`sV!p_
S3JƒG*QTV&J>CUĢh.jOv*ѮJf|hf4y9Cffh"K)xpxme	0Y°jcr;әr%+oOL
N):ą\hT{P850ҙ_]mё1AۜaYtTҌ79?|+`
k1@49rdL+YUtOA8ǷG  8FƛJxbA$x9hx7,ǅd'xqn鹍Gn`mwk0r,45Zӫɚg&ܲRYw)}hsv06%\01~ПAsQ%yWp
}%*tiFiΛLK2
<)-ZWr1I~n=^⓫I&
6~R{X[N
xa24Y|v+5jҎ*έ 䆬_{i{
YtRrݖ'ņcG${^-cSK2EKeUUZD,JuDOҘ%@k@尖ݮQ79 QnrNd-!=$(i)6o4z(.;<-;̔
M{C:~[9g_Rye
vi||MGxul\`zMzX'6iwoJͣwбuJ^$쿉%TA$+&-Q'#B#WE~d>@8pvؗ4e'zpPZ
bODNwRK_,ÍEDSrAdG]k7hoqU2g|`Ex?i_x'p ?~"~&4\x]VX/8,T[]>v	>^_vFHӔ`KVtuNK,@֩UɏnmĨJ)ۧ2˅{#<j.rN2u{{$a؏- vC}GOq<+N8KiR&hT[rU1VϨ} 3pJצ}]h=r]٥܋]ൕ3(#(.M!".1)"CyO!6?PK\J  2  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/KeyGenerationParameters.class}QJ@=ahj
.
f7"J+OKLiLěP(98sϯ {bKX"R+f&V}eW>H+ {\=QP`*Њ<G	sn;r=WTq}絖@@joGj-@F.rMl:uC
#%{7R>iRn(k"r&6i")Y,_9VxЖe͞%[GnZ1R'5I=6
r\^Tpc
Į3vEwM'lq9n0_!;oH`#$9*0d\f,q
fʙcufx6,K-M>*e.|PKĦZ~    PK  D:U            J   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesPermission.classuSmSU=7	ٰYm-ټ *ViB(NH:܆]{~JtFTgڟ8g7)Ps=ϳ 01	|04(a&&>Qd92'&S	LlԛJQ?dɕ^ҁVXTPKO?@eTzSoVngsZz{gܨ62X2jo7V_1qK-	0rzԃ@	|3z5H:.	*~WE\~Gmq1(1;*{8z
N˕L醧8'̮w\~S)]~ٗrlV5'{oc覅
\<!	)RXppW޷e]Uc(,3MܲPAmo`B
9oSK~GܙN@nݷcS]X\-њtM ns
٧HN8	ˮ+0;CuU<xFNOc16iy^O_:_9b]"hxsGQ`P|Q_ +R_*X̼{H&u!ZyzCJ\*s"U8KD|^b<8<{`..n
n0EHM9D##oFCkC#:,~J$tURՈUL#0oib28ӤkϏ3Q!NUiq+ PKw(  P  PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/SkippingStreamCipher.class;o>SnvvvvNv.FҢT̜TF̼̂\̂"ĲDFtҼ⒜Tʂ|}lz@sRKTpSElL@ @
 PKL#n      PK
    D:U            2   META-INF/versions/9/org/bouncycastle/crypto/modes/PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/modes/SICBlockCipher.classWkpT~l% ِ&MLVs{HlvjZ/AV+QDEkZP8S;NtNot)LJg7Cs|~tE _ϼX{%*)
^Ëj=酎J	/-cyOvz4~/bRBGC<ER,qad,O4<i
WpGb31nlKv'"=#cH'e%+HgMN!M>bMՠװ:-BfKdysou[cAmcQUP>L7mq8E]Sʊf.dlӛ,#ҹHx71SV,(Vm=Y][ɦPX^ѸgTƍD{e%	Nʺ,DCO3{sD8+GCg#F<7,SNZy]#&*h~q,I]fU?DTp?#yԜH>݈Ό97+mfL錥Όiv6'mLL@ܬ>6%<~TlW
:bagt܄M:ZgU먑e,cBTQNI|3#a5qjxNaHq݈צۻdXi#Ŵ:L7xpT}уc:^:6w`+^LvǈWpAuv\ǭ`S9uafe^Q,궂m{頕L3]F<b*1,ArLTHH-7[ū	p,s%4	1Pz0'&Rmئc,*^pB8	:ECoOaTL\Rj]chN<C䋮Q@X	X66zXH<`MHśªӨaG0&0k*(]52:^Ò,[2Y5.]Sg(
+7hӥsQ^s'&Jz&g2Ý{bZFd,
#TBhk]$[v7yg7%1#ќlL&ڳ64H{K'
Gfldn6"V26&lzC"72^mnNF	j$q38˸n"4S16IwObz6ep~M)tX!up'ËOz>ygM&>E>\X<>ׅPB?Gy8)<g~si!xN]aׅp]eijѨ0.'%;>U8!ב#(_+o
89L?(@?f\*ȧ+~zOs)wDYVj(O,Bgt6hZZ^.j6қݨ%qan$g!֐?V
`*w>y@㕖2>3Q(T ?0n+/w8tooK)u$=GQ
~Y׷œIqoN?^趮k#pI9Σԅjߎ	QpCͽ.7Ym}`WKq6x'wK|1k;s${/adp 
׼B a}UF9(dW3+ftֹα9~w	^ܥssRr0eևUSDuU&Ԓ1h5	c#l~Z AKQbq;{H=ELv۫y=<a +eJJb9t+vx2Tȡ'0e8J9ɂx#ϛp'Nٶkȫ@<|rjͿ%q,#J$_.*BHϳ]f*'m_ږx
QʓI/gPvw},9*gG胣$2t9A>5C;~ϔ6#՜㤘3g'͑ ڎ_,n
1hDcݓ??09] txNj+rF6Ps(挦`8p?ϩϼ[ojW9;rupȽ(;>U}I, ]1I+W:$]uj\EB,:
<՚_s:zj<E"yfݔ/7^moP`?FK\3<p6]+9EK+ʯъ"᣼ryo[Cِf=ivQۗ_k]Y$ldUV ? k7*
Mɞ۩f"|*Cʏ'j.yx]8]WZZURU+uRV_"Y1yŬ(1[lt|0_VS3<ۙ	r5V]I):Z9g
Nc;T
se
HeW?rs,T֏ޤ԰PNW(Ur9,p)9KJ,zpF`W+.<#,ޅYLP7
faA̾E7aZnwcKH=?A#(]<;_,DaPlZNUlP	Zǚ;;Lu76)#hRQvk1Wnh }Y/~l~rf$]KPKrW    PK  D:U            B   META-INF/versions/9/org/bouncycastle/crypto/MultiBlockCipher.classuPJ1]g^Vs{!M
%y|(1EaopS	aj8>v.ڙL%amϳLՓMs[4A{R66K+F.|WVmt,uX7z¤wHj#+֑pxKuzzvM媨"o0H5L#g	Ohi:58PK
-}   j  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/CryptoServiceProperties.classJ@U>@{qx(X!OYư%͆M!I(B{rW9.s,ҧ(uSO8Y^T7er;kjTH0{'mڹNʔk\lL5'}ycrO(?x+vr.
"tת=#eI 8%&Nw Ӂp9Ɯa
¹\PKw#   Y  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/DefaultMultiBlockCipher.classuQMo@}c;v\M!m%,!ph)R .\q׭k[Q\p)~ 0kUi$y3~O ƊjXհ`=~dzJ0;oA~,	I&_G|-F),RSyt6H>ʺO/<UU'*}W'JDgGqd<l ||LARx/<4y-ta^(gE$*0*/
3Z,LEF2R,fJ,V'$lꧩEʎ(9)Si;	-fm 8X6o.:cc;s.Fvޞ/a|c.Ԋ[=f1{M-,KXÞɧ&}۷Qn<
kb븏 ;|yq`K0o0wj!PKV    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/DerivationParameters.class;o>SvvVv6FҢT̜TFIԢ̲ĒĢԒԢbĲDFtҼ⒜Tʂ|}lz@sRKv1201@ #3db` PKHy      PK
    D:U            4   META-INF/versions/9/org/bouncycastle/crypto/engines/PK  D:U            C   META-INF/versions/9/org/bouncycastle/crypto/engines/AESEngine.classw\w .f@Ŏ`+*X#\E@b^bXbK4IL31vsf1'
335&^;dFY~`(0jGj0HD%Syհ4*zVޗ+S Y
Өr0+/ˇ>j[\<G>j棩z]3t4d"dj4ʧV>ϔy|/pF1fbf&d)ZF.*&4)'4p7pg51<yr4+Q3 cu1	i^~ ]n	?	GsX=;ϟ?DEmM_~y?nX}vx|y'~:pxʕ0;9;rd۽;
^6͘Qz.:PZ!pa/S;jUs(_޽B͛ADɒ]6whq,p(P:?r,f.>V9~xX, ,6ܽ%ᇋWHSmPX={xHX<bDnH-V
ؖp~jvX<ib%4TD_>޾}0,ZT;;,#9R{أGGs``u7pf]]pGO֡CݠQ
EÆ3ƍwml|2
z^$|~}8dUk4hd>,]+5>Sg<g.0|KfKv`ߒ%k͗+:Շ)S\aE~I]Bgm|jB	!͛oWʕf	e*a?x,3,\]{,Tȑ#Z81~[%U2 6ƞ:샐\Js#0w\p9<|1}{t͟6	N#ƎsuN?t*gb
 }>|#TϡURдbTcf4V77,Xo:;^=?oPVwrNVVΚUݻw&z:sfD+ {&N ڵpiӅպu
`G|Mxުc(fL0wxiS=.ھ}0__ P
_Wn
wHŃ}wݹ~
w5
&x}`jRWPjApbްkp~
ɓ?Az{cЩluMpi86zths<(;wEػxq(׷@=}l;7JqqW ֭u0nd94Z8ϓ2L3<޴l5_~
Ltٲ(6nvBo5G/5a˼yEom'߲e \g/"59`v"|Ϗ*u兏< 3Fy@xҫFX(Ԙ/o|7a)+m~ׁ <-8_sNSϮ Z8?u>j18)\͗} j9;z;OzVm3[v}rltxvTx0le:n>_
#7K!ϠMIU)0&PjGp7JS~

]m}=C $0}G5oǰnnk\ o2a'`QDhXr(xWHJOXsඤwGh.³B;ak;P&sR4pp7$~o:CssÅZAŷmY|\zAOAp6ȧ0b0(lHMË7ޯUQ>ڦ*PBqBvb lfσ3vi!a<v45 q
^zj}2/6]8Y'kkhlI	^uf?J]kC!/A&SCvA̯%oS矣 H\(xZe-lZV44
[v~l1.}s/g&gB؇ėk/Kf穥
o&ӹ?VCVAɻ?7V{*z@C"ᘚss*tB(x:a	q)eOҼ
g`b~W<J {v~p&̺CY<;§K냶VCNBMSaԯ~sMih8WkwC!ɴ0z>dϵ {ˋlư'o0.|qt(;AJZm;t(J<Uz/}c>-+=qSuCٳѻѷ_C@ԗWBZBNv_ulUџo>UOtǷ2C+AVРrԘz6wXxoMzU,D<?vC{.YJffv5Q"@
P"K052.:UZZ	)	ӜtIiwg:*CRn-[6ѭ{%tkhG&&IIGcm7/8VN
֡x=k*zPEKXOgӴ^]ɑ]ƭn^im },cr؃Nb2%f͙LNu{PmFFl[x9fx&86}*81[XĴ1)0ݣİ&iq5cz֊KLUKKT&I%f ffѽJNtsֈڽWS<ÌlH>a	"R7xC^SԷ^ْc))3<
:LqbJ6\2.e\B:=%.5%k3&
3QkDbZrn=u"$tÇJ2?u۩J	l`MxSo[xF >-:Fr^΄:b*j`<FLXTJ*Cm=_euxU_mkZoI+2#o{Hus{DĴggr x >28bl.ǌZKq	)a]qD88%'&9S)6ޙGSu?Oha3'olomyl[Voxy<·vnwn>KLLLT8S'ƦpvbjpDKqkGF7蝁%kW8=STl%PD]%wm<hL=35APH/KԸfѴv|RNBl\tBdb[Pjzcre̞nq09݉5ӘQ&ww5	uwp}%(#ݫ4;/߭؜(iKٚMpk{*KgLjYXw<LV|t
JL*6ʏcB>*
Lzd(
@ZR2ͽ{:QDFE1,)!.LlÄ4ZYqZЧQ𯖘]bOgF ucR[Y|{%!$ Quwʈab)͆&O
#'9?pyOh#R,N3|eM#.mڑ!+ex«bjx
rw5*XyW,~ koGw56|
+k±&f=7Cu3}ћqy0^NO!.$A¿{cvձI!*I!U\Wp>eO
̰ϱEfFk)Za}Fa{w*A뇹fx2/C2o#1
2[fuo&pY:NȨi։YF1 {^{9T5[0e<ka
ܮ.vyrl9ixv݀(4r[ |t^$>\P
n!*Zb08ܩjwǲTv{8v0:=16nu
Mwxn[:E2-awOX#l͛ek]!}asqx]l\vϷ}{;^.^o6nl>\:cw{A5.jHwX3jwx+(_ܵ{CH5D0RHmkᶆ5&#5\.z8ߎ2iTCDN*ۨa9^Tv{:]>v;P>}av{u:mvۛٽuhkJ11}$ќeĴ۽t=[us͛jp|FkobYn`RvK1#-H7+\w j4B
43F +lbEPdTbFg"CX	c2+i,fq9q7
+VXufg5XAVaXmV5fuY$ԍXY65eX8[ƚ;_7𪇬{Zs,amy]֞7cymYx
YO>,ocį.K߱>^f8 U@C=6thF@4	(F46ɰMUl&leaѯb[m5|_`y21ai1G1F~DDۻaxgZ7xi<eoC|&4~KÍD<7<GF{]L5_qSoF-`3K1jmf;\Q?_f6n[Ipac{LG)#jq2Q#<Qpp#F]FF^g`d#N#D6Yx{k̥`1uFaJTlQd(jS(lx`R;c`g v8dcWnGj@q-~fݧ HRBOػXΌb+z'\9ORqErHؕTU,JmϬ%v%cy
	(nw Rkp)60G ذbpG|,?+ƯOq^=
W6̷kDE}߭7>t5/s"q Ǆ@gX%$@#w<#}_pi77|,<uQnwP:x
--lAUfhAz{{lYf
f@0G55k0"35k0ϬlYbyx>Y?lV"3WCaa'k0mͫ17'9~dN-鸦gλ-f;.
>TY0Z4CAjv4f'2θ"KTS5q݂G}Gz-kCan̈́ #㫀!FaeFecFK.<ۍ<;s9<'s܏2yx^at]"n<ȵ=vC\x1ׁhRoxQѿK^m\&Lfd	/R&RtIo&EL$82׹#jrd]u\玬ɑu;>ޮsG:wd݁Y׹;P:wdsGȑu;>zv;2a82Ⱥ}p>}#,sd?Öy`q|yöp	vx*WXmA|xx?臡R +tg
wbwB3C-SJ!SJ#S S"Sexy&`4㕌ϫ{y5ƫ^5/kC0o }yC8p'o沏7w-\cxk/ҵ/o[NmbJ)}0iNe7,	K{>K7,߃t??u=~o0(1Q.bPd&FFYoQgdpq]@pAn"&^z#TUs"UJF&EjvQ55؈K|'ͨb!jn5HF+ݨ+bjQpP?QAjQ
5X|"~E-&z7QCEI0aG-aA))NPKeDNԲb6Z^D(VwQ+P"U6j"
@!FPk	?H@+ڢKQ
D%Ԇ:j#(D|TDjsqDG"xJlEm-ڡ=PyԶj;QhA4F(ڠvvPϨ]z5VBu&]EinbjwQ5N<CSEP{ʨ	b	jX$+PEu15ULGMP}b @u9ukɆYPd#ďd#E'QbhQlA6V '֐C&*dE,$сlE6EMɦdE8qlO6KS戱dsE]y'bllHXx--_-Ȗd+lh@Jֈdk1u*z#хlFQ"$mɶd[mvыlDS\#%x>;~=$;(w#bQя(Dv\d'jSbiq쬸CvNy.FdAOxK"첨JvE$*}*]y]<!!nh[,g5b/m18JMXLk쮘K%'ȾdL"b!ُcG%O"g%/b"ٯbobcE8LOD$St'{*j=Ȟd/K안${-#oӂAAF)Aqh)sУw<i=5{ky3H͞
==4{h5zh虬SKF	/4zj3SFjc=4zhXgFFOM=5zzh#{B5{it	E졅٦Gçr
>4|&h\)ᓬT牆Oh
>s5|k|Rç
>N
]>5|5|><>4}^i<٫OGMO]M֚>k4}&i,3U禦rĀD
>W5|>j#ht٣]ç%
b>yށ9
j>>W͞=5{{( zOLdAii&z|M0n&z73Do&z>1󱉞_L0somgT=M<0ѳDOY=L5DO9=ߙ	0ѓfK=	&zD&zr)j礉q&zM6D&zr9dDK=LT5D)=WL7hgM1DO?=M5󻉞&zYk&z,&zN)igiG2SD0=?d&zYgGd\3ytՈ=^&{d =KL0sdB=?Yj+=L41ٳdOɞ?Ll1sd&{lgɞ=LDa'Dbg}&znMęf'DOK=LLFyX%<5<qGpN`8a:j8q?'ģzȢpnyWpBOX8#*~'Ġ*hpm}ʆӗOr
' 
FtBˍ+8|Ke9,="vAV.Y Rd5ꁤNYe
ꁬI(Yu(}Yҗ(}Y
({ِ(w٘r).)sٌ2)qقD#[敭Pek|
j~Z@E-(ۡQE$
dZTvF
Ѩ!j1I#[\ƢJ'jZBvC-)q%tg落P2LB({Vɨe
jZUV}P˾5d?Ԛ?j-9 ZGB+9֓CPˡ
$ͦr8j#X@m"G6Phfrjs96P"8H9JNDm-'QԶr*j;9
A@(gvP;٨ђ&b95FC4rjW\].FKP{ȥ=2x\ W&UIr5jo5YEMPSz4I܀WnD'7Q-VAr`Ib܁:Te<L".w=d#^r(l<@6F$+#dQ$yl<A6E$*OMɦ3d3Y,yl@6G^$+?&'?!//-+dUS%RylA\$[!o;dkddWdɯ6Ȼd7d=[->Vll|HC~OS@KH[>"#"+&'!/%; #;(OȎ?Ɏɧd39I|IvZ";#_o)fW_P_T?V̅\/)F~Y1ɯ*AbVky_WF~C1/yṘ3VLQLX6/XvA~W(b~*O~_ &N<Kb?(G?R O$YB(VWŊXcŊX0?Q'X(3ȟ+Vb%_*Vb_+Vbe[e2E1b/7Ő_`U"x)F:V<#Y#y*F )F$RPG1PhL*F<Sв)FD+FHˮ1-br)FXS-@1"[nmy#U-b
(F+b(FR(WT1\bĹt#WP.L1]	ňv%#ܕRxWZ1^ňxe#9#SW^1^{#URWY1"_}U#USW]1_
5#R X[1"`u#S X_1`
#6R@X1"aM#+F0lѰb#,TLP1MC4<TLQ1MD4LTLCQ1ME4\TLQ1MF4 !*F1b8ň=#LT8bD+#XVh2E1eb4ň}#dUO1fň#lT9H1`ňC#tUlbLWLsb#Fh4C(!:V1MqiWLstb$Fd4K(a:U1MiiNWLtb3DFl4S(:W1MyiWLsubd]Fb4[(T1Mei.WLub+ӄ]Fj4c(!V1Mui̮WLs#4h7(IQ1MinVLvb[Ӹݦv4pw(S1]iVLCwb{ݧ~4x({P1CiVLbG=q4O(	|R1SiVLCbg{7&a3`򗻘&_n1Mrj{6/6}Lra/W&y6ng7s9M\&_oM<&y^</g7MB&ya_d5˃M_^/5L&yI_^//u Ym-h ?N?i
l_PKF(  G  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/crypto/engines/Utils.classQJ@=WLL>FhED\).[%RcRIn~%W.:ps9>f?>a@E,Mݲ
?)CVeу`(P'W}
(cxBvx%t9[QYn|̝Dx(#Vb&9f(*aj4W
n$3rLXGG&2Tj+pB%<cͶ}}_vyw4Λj G/>=2Zm2;"$Q,Ψ3ji&Ⱦ&y
Le()BPK{$:    PK  D:U            @   META-INF/versions/9/org/bouncycastle/crypto/SkippingCipher.classU0b'āE|hZ ńWs|(cI\ru4AFl
4!]UNsz4\U'˓QvHVffmf%ԍ.&
#\#	a=PK,rߤ      PK
    D:U            4   META-INF/versions/9/org/bouncycastle/crypto/digests/PK  D:U            G   META-INF/versions/9/org/bouncycastle/crypto/digests/SHA512tDigest.classW	tT^282d`LV(c227μniqA:I-uZuU馶s<HޓIb@9{K_`>spiȁ
ĉKGert2t.ڹNwM\%n-bVyM
.p6;%vG^emwӁեGUF&j;^^ںs6ßlye/8܃_s_;W+= #;! ~C;ۅSI{D
<&>.<!']x
9zc՛T\T.Lug81p.h~"i)`Ls".P3m$5p:TtC4Փj(ֵِP!ZLO"Τ:Oj#-aā>sD3fDPEƫa_P'Fbn|b𞸪/HƵLBZ^#=P2ZL"G8Ҵњ
2Ӗ$R$SBaQ3jVՍ\{9UM.	Jjx0_%")N238:҇|Lo_CHZ.MEO1bqYrbL8gO[P}hi5'ԬVv3O;V;U$ɳgb@AN&x$ RSjZOhMYGL_4JiC5q1WƲ>]1_WwROO[盫 03}YGw1!7↎nvc~8ˍN$dt`TY7~8s;7~_j3twj"<nxYI7^W^rghhX%Z]H9o-ӏTI*VJتꁜTFiG&O;Ռ
ՍwpxIaIt1w;MN7Q臧v5
fi)(3䔅J5Ȱ8jt}w2#ߑ7sf>QƌH[NzXS&ZFؤl"YAf'u|rmZ8];̧t52N.bdR])"
)$zɋF3IF#Fkۡሾh{[=`i@@LY@1@v3:o%"ͦ+6CPy0WFtwR^<:& v鯊ԡebfיM;Ig^^o _qX1W`r>oT^%(k3͚;͚ZlV¹c[6L]IŒjv9qH6a:|5*&DS$lM*{|SPuq+i@#>H0
Kaɕld%WYr!=Pgm

O@C(82>2cZkRH:ЇmMEϔ{ma(*c)pH2{@)8;fUYnb%Ta$|(A5*p
 OFKP40̙.g:Ш8x-\/j0:PxSۋ1'6b/^.Ea<^{clm~[`8o!Ri4da*ƞ;c8nEƇD~.Z~x2~<>d*"[5Rv5tOlNs<IOQZ[qKLUUSTT7U-UU>STTMRUQu:RMjkX5zic2ɌzZƐ-en+)
r+Y>͉99)R9VENɡBdM"P%ҟÄ@]e|	]A\ҽevѱg(
x1M<VbEHNAb;R8YXo`XBh,o15T
0D]LQ?5$ED9LYC&ajDV0UyJ> b4c_ϴ@)̰sC-Lͬ[xzn%FSt;~k`;.]܌9{g۽Qxwv(/׏]؃OɈqxJ!k]y:T"2Ķ5Uߦk%~Xbs삷ʋyRh;|&%cU8<˳kubuYiES8i*ۡvyE%Xl{mEľqKۃW)3=O_R͘kČ8* 
aѸq.ZY4
4S/g>4(rI8~"'K7EdI8~SEl7sی=L M双> ;|^I _%͈	7ҌazrG}%%s<,ǒ`S{tK[03ϟУO?Fouy-vBacX64ßs\toqqfj[PK۴IU
    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/digests/SHA256Digest.classX	|W6ː$IB8Hµ@"f,$qA RU(ZA/P"hxPmjW[iT~$V{зwhG=@:(rP= j'rSyG[:cx	'~>3-=c6ze7szK>O?.K_D6yW͖r75￘l3"K|a~2+,L}ArҵEcl{9,?x{`<sqBVyWZS#.ye뢘\ޮow͟͡}]Ӯ)n; :|A "gv\պy=N}P>UYy/7LCy2-7^fqBrvA1Y96:Z%'+rS)ɬ)ϼY>8.O2k7[%nڒ;e}1v=Yr';893dͭ0]vT.ȵϚ_˭s*?i7l)ӦVV]2kiU
M[bpl5(e3`0a4C	D
{=S4ɜX
J
6-F1S3+/Zi
V-`Q 9)P 85i	gaSZ*O1dXaAI<T7-AZ}06>
^ZN%eF2
ǃ;+Cu#a~bs4\DTdL
c
EF'vB%l	9
IRvro7%R4esXY1fl!04BEMv :NSYܚIh9-FuzAf:@CHk4</zrl986zIлNj:jjs=ts}'LNe 9r+da%*մFrҟ鈓L;чN6!Pd4TcI:3|B:i;`L:i-k?Yz'mgN:J4邊~h]	;mLT*q=ʝe~>(@C0To_Q(C{JOqfr+u&%lF+⅗sR.^W17̾o@PpmTk!VWE&XFbTtHsk#(U[У2|(q[c'ww{pSŏ?:x4#'eR+-}0-?TN_nWx14UƸOqεN XyC]:Bt6([1󼒑dv2=JNbO`!p %pJPc.ZCC\?gA2|n![B|Mȣ<&uPcJucj:Ha0<:YݔAi=@Ĉ&)h*<ʢitMaT9+CW7{d%~c]=fkZ'ut
k:5NmNmN
-G`VS
pJeXv;<(5Z~]ze\hBK
tEb [*GL꩖.:d[-,kq0tB$mn#s]O71rIunZ&{6^Hƹb+o^5HB@ 4x^d /IMKCB#\,YKGiAWt4\sBR*.	5=kM)
!Õ6dp{l8i)5@t*tV=:2=١oQ73%{	ӡd	PK Tڛ䩁j'Ipª39YPNTu':Trn{]c
[z
g=^<*7}KSӃ䡇C`4v8@MAu<zLtx5̯
M5ԭM`-mvkB_JCt\g8X2Q9Ǧ0(r$Jl,I%CoG\vgⲺl{]	x]fWpwRۓIxzmp\ff63{̶,W}vB'lcf+$f1sV+Uq^+Z (דjq,ҸR,g^!(WV2Ǎ0f69%
9f6
Xa1P
n{9aMFqkbn@n(ǥ*)*sL߸P@j>WTĐKB*t׍D.
N<~n$ڋj/CmB|/bz	0eW
_#5FޠNzߡ]'G_?IϢbX̣OT,&LF?B<GK[LfoLt̔EMd"RL"a1	YL]$nfh[8MDQL{E Ɨz6YD-+HtE$>>FFYoeĆqudWf<+z60?i{2m+W?;?ʴ\
X:SKoL?("!n%,#Kևȸ[pCF:6!e(,zi]lpgdj`Ja~ t
 Bێ^ˢ/f6c{>r]g L%%!cnܞ:r6mx}OgCHTUTR5ωXX˔XXYCXYX/+?\R5:	rB'.,QCbpe]LSގGOD-]&'&BY,IR[2$twT}Lvqb"m.jڬFy-jڪJ65[mWc՚U9@LP@*&rSM &sj"0EMjj20UM*5OLSӀ.5_U P3j&0Cf@(/0KP| U	C3Pu,xf9E|u1@]|B* ,V*ꀣT=pj pZǩF9	8^*,Sru)pz]TOϝPKd
  V  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/digests/EncodableDigest.class]1@D#h!W^ղl ǄYx eJL&}7#)ډ^j
)25*x,tko;!&r.z84նU/ljO#lFJ&B1fǅPKk@      PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/digests/CSHAKEDigest.classV[WWL	/BL&@ԪpIm0g&,羶>v-_|Pkч>hDPZYe|$8x{E)0__'
FlTX~F*夘nSD9aK(Kfavm6̅i8CL)9zTtY6m>XrwVZsJ):
[_5ϷxNwW뾓+C+/6ܺ׈_ӗz $aFB1hY劕3jD %틚|s*CHdnDAQ2:5筚Let+-mEY]5#Fs>KL!rNlTZJTISMU\aыP0+2d(H"*8x]<22n{DU GTji/:(U\j2aĐa0~J{sSR~J.)骳p7-@Etʹ@>˻J1c&!~\;[M8Q%	ܵ`FSenna,kKPBkOw)?np~7xwu*I`$!5xع̜Kпj+oa7YLj︫\8K
Kݢy,?+mMOiaq8gW=ol]:;DQ	~8@s.6z5NqC{@a՞'`Ckh{LKd:
bB\ChbC;~x*LvSD1:*Kj*Lv1z!8 )Ca4 pn"!
H$ODRi
l;Fpv]CB>Exm=A5B>mvlJ
iCl<=_0kc7TCbN>1nT(bnnLRS-ѪiUXizY)
MgYjz,NM~ݸ׍&MH>L,,ͯl L=DGmOnRЮK/GgWCgV3J?5~΁k#n; ;(ጵ%I9{E3`]A;^X!N_nj D$?c;eRIw]`Xm"ER'̿PKUC
  u	  PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/digests/SHA384Digest.classVsu6MnizaIiZҫP7z1-B)n%]HwfS-T.ʫ3/>ChG_f}P-
=;s&?} -U!C9>4c؇kT|<J1q1'|8	N	L
8#pVG=?̏/z?^=jLѳ!?Otx=7y>3tc*ϯjCEOD<:<M+.VB^Ixa(
(P̌θEQAA4C
u
{2jHvvZǴ=Me'V֌ǵq{>XwGv$SbFR8pl+>1dtm83#,)9-d8؆<kqg>A̸e	aj)ސq+=e{^1Ra}֒[3U![I
}f%bDqn[cVZC(v./fe~ĐT=*^(RA#bV	Ka4;ltP$f
R($b΋7Ty1-+o#{*SP^\Wq7$j<^']#

ϵ?sLOlvo|F_taw-~-Fxgd&zU3X^h:dfhGdHè9Hʘm$̄L߸d/hhhhhi2Y1OH[lJD~w?KdKmj壡ײ)ѩj\gpE~qka?T4[Eµ4֍i%/mMU0]/åd9ĽǅGb_!ER,43mnhG!Uz%tspDdE<3a7jK)($U._Tf)u
sF+6V~M"eiTK򶟶`W~`W^kh\>zf'P?08Ni?aLq"ϓp.6X
9J_9TrٔKZ9TsٖC
9+=˲)22If3;f#(~Ǝ{( +E)lТeyʇw)UFo[\	;鑗]]Q鳠-R{,|xMS{[=[<o5X_&Xľ?%6/PK  
  PK  D:U            X   META-INF/versions/9/org/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF.classSN@=BiK@&a6l`ѴHR>3'HXUJ]QUE(lΝssؿ`&X)@Uê5
XǆlŮ⣓pWCd(ɋ{'f[;=zO@wZn4ݡcǕþF:Bh_4}l^վ\=CA+[
(թǩ׼?=*
k$^_Ĺe]%œWuOh ]qk_;Y(a˂;,
S(Zƌm;:::=I_>T[F}!/7Y08f<sq\J'Au1RQbgFJ~4zd0GȬ`iI9RD;;@2^!e/GٯtJ9VeiT2ֈaX9i2swd!yZ	RO%jE	Q]m>`T c
E-̗K'$KX&WWI"ԅ15&yO\%:EPKI;  {  PK  D:U            E   META-INF/versions/9/org/bouncycastle/crypto/digests/SHAKEDigest.classVsU-MIض6 }@imx U*fs.ݛBkq?8:3~8)~/lK
-칏s~gs(lى(EцB&ĩ^Qe;#7Bv'B	ЎY6/,Vg8Ƅ'Tp^[*.)h2Q1|NA Ґq
LAi|E;9IC'M4${/+8pb:Tlc=n.!`+nؐWp(<+Eq/>;zZ.$$Vd|*:y"њ인/iKwM8D\ɲ̙HQΘiqOΌlb"gsNSYG6a딙M)8LQXVAd4T\5d#{Z+ְ[35XMw$sNkb4\
{qUn!k.aF켭:n4c@CZاAG^Y= S։nQy=y0c	eǮk(bN4@iD?,3b޾Ug6yPzz&&''$l'J츜P8+m4nsuz~'M!NuԴ͝g%#6keZӯ\"
yAy2nWG57/:Yy	5#柩3b/T3ň)~^iVq٬^`c>M^H>*q('e7׺gL7.P:&T)+в܌{`}Nn,uՀCOwFe̚s[̠NxEF\RPl
v={+N5!*"Ze4oQ~;B=*=
tcYFß&!}5| ;=@ [:W翣pj±GvC@tn+4[F҅0	HI-_.#\VbjO(A!*Q`#cҾЄRY> NNMc
?bBR3N>n?]WuƓ$o-lMuЪh\p N U4
<AՊzxO3^EgT;(7D)֬VM-fWۣE$L2j¢lj&RS0+eɠ|@z"10x[DEl={fCzsPhMC_V#x(OZ;a::";k(
RJ;аOM.}'8O)>'_HQ?PaeGY_QƎq1Y-xKPK>v  ,  PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/digests/SHA224Digest.classX|NN7M$Xh^r
 JaB`4Ep1us8mX˦V
opeMsoϛ9px:Nߧ8(wP;=j/s'y-~#ax9CL=l/8;:k׋z=)}^\moj${fTʖ{dinf)K?c>Lee_9`qB3n+.0.u^{PNeT)mQϊvnY&dAegy2}C;N%wD{*{X8Iy4.%<"}u㭯S/Un{eQ\#{#mBenqq,vt2rAiY?1s;ՎϿX&%J;޻_>4t|˗m+);dC	Q,{CLqO<2O._?;7k喣ksG,vreC~4:oeΪ3ں4$j173kOcɫюDyYV2eP0aDX
bXW|AH,*H_񦰠H,ue8\LeQ]<\2ۓpy(-/iĚH(#oOfa)nOϝ>vl,5g	J+Z6'2um"*Ho'GHua׭	Gd"kfL	6mx(~u<фqPq9]5'[y<5ůĂѳ;! -n'9Mx:vfo56RZ9Bl
-d,k0z$̸eH|A5Q0}v,p60Pl!╈H]иN0}LP^9䨏w$B+"19ǶkNzpR'}I7f'=Dk['tt+6':ZȰ&
6qNg:wi;E@A'V=ONE9~;'ma˟g'gIa3?mt҇WAc>9X8NTYrrX8ƁY:}aWA/	7Gړ`Ej	3W"%oUmO9nc?\T_AĺdUPz0KU>_:JN`CEAY+#ͳcM`!^CxlP&hY0!>22:(WfЬRmhgY%{sW;|w?wi^$(INJ
,P}9~כM7&sDc1[<.RCpF'

.0}O&>ЂX!M_69cW}%$}8{
vN`JQ&UP.qf↲8{qK/o)o
M|ۍU`^I]12y,(Gts(GE
U9@x%ri5#sVsEsK4ot]@OW"و_0wƮ<hakP0B3({

c"9zA)P+x`X}$LU%5}Fl5B1ݾn_Z* R
!ք]a`3Ũ9-UW aYzFy}Yw~t'}#'TCfLm7m +}an\/l#[AZ
48;
LB
CuDEH,}eJ_jF%YS(=}M[}I.
ݸT"wR:d"u)mnmӆe!` %-"3K<ݤ@;M:n:\g(Cb3< &W2j5E}}Pn%j8'FrK9AU'ŉFsRJ7{>atK<.CD0|Y(<ypHq4Th?Jmx6,gh8
&uZ\85n}48g`ZSY_[ךY=)e_phXFTF5]vuGƾր.e,VJbҺxJ\e!<.lT^w7o7-¥\VCE(@Tig~I	Xe~/qS)~<]ilcnc)4淲U)`.S}bVff],{JVbvaJz	S6l*bnfJM[b??បprz\<2. PY0d6<ɥRGL@ \T $waqpbsu*Q* IQGpi%"zO_BO/ny/_q+4;~,k
72w4һb'b#E:)Ax>'Sp2N[&'eZs!e-l "ͲM,ͲG-Ot˳a9*2,ȱ-YetB!n0X.%ɢXͅv͎H9new~b}Nޏݞ8F?LύN[և3AZi[Qmm`22@dT><lC>P XmE{Wwɝs܃@d8.f| =>/AnOS^#.~ȸ{4|AfތY$4q59R~5̌U|c
<cwXq+u+u+uꞳ,RW,R,Rk<>*{yySk*ʻJ^)KA"@^RXI"kf0Q[BZjADK"C\od,8?f{8/]N_d_Cvܽ)c7lmjѪijѦoFݦ&5uЮ&U
С 3TSMfˁYj:0[ j&0G*58H]Us.58Xy<5C[-zUb%j	pP
J*`8J-VBu
H-@D kcT XrXBJqjJ5ǫ` ':$^ZUX)
8U]T_f5rPKw
    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/digests/KeccakDigest.classYx[ŕ>{|\+ıeG1H8qnB^8&d8źEdɑ`AnZޥ\hxHW]m-ۅ]lm߷gte9s=s^%6J_sM[2~7}p7 	 c(;"c<.<)S<o;nA8騋uS
=ysq!uE/Ez>J?"\.zY0^qӫ.g?i	MߧXSFo4,WtJJ+\Os8-
Fo*
V-%wIfdI7CF͞K3CDG&=sl[1re2&lot;z=\ʌdLC.3;cƊ١(ex.~ɐ9d
Ygʷ'sikՎ䰙x(70[o{s}=k4M{1c3#d:[H	λ:2	̜>6/nf7ƷYbJeNZ_|Y/5sbϗTo&_Wwǣx7ڕqĲŉ]kM<HPB3eut\LS<!Ⱒ+ٹ!>`ʞ5\qY*B-P@&YG|`&`uRԊ=X\?O]$s=}3]⢆dvKm^+5ùlVT阙Ba%3i']hF2\҄MʳK$Dڵ'eU+31/HUM^HZQ\KF*z(6a4nwқEkF&ШW>t5au&\_&18A뢟isz[hXF7җ5+hFhQDtRfo<՞7ӹ5=ssf oG`AHu@b% .6'ѬV;}dzw<LN`8d:5\r@(@&v*SH!A	~}d?t gbul`n85z a[2L ☝%R2K4RN'_j%Ik+F/]jSuә4tLqZ:DE݌g5iR7)
/{̞Ɠ Xttb6H4x6dBFcY,47[?ӄ=&ΤSˇ>UOʎukCd*.:uG2euQbkSXk҉d<1>#bCQZ9hJ2-Zu'qL-(e]gvL^qX;(3:If;F@4sz:~&w!4736p	t_Ӊ9Xi9ӫr*:TW2g? Wge?/GqJ$=yFb8T}<zpJK
FD*x	(-6s夌5i&/ebRx)A9ON8mJԫǔf9e5e01t>c]#G9CM(''x\CՒZ1ZHirӸS/~XHUBѫ/.8vrc	\q*<F
㈖N2\eN+V%<$z5؁Lo sÌh3Z@
, \]N^x

k I?5[ lJ%?T=;NUθIεt5ctz1Ct8yy'l2[?
BKBr>0PSlRI<7bFРxޘc,$Ni5+;2e˧oF蹬I0r: zD$?T8VN ~*K3='hkGOqz?VmtH:,(qU"jSU-V?o>ۃ=-TRWVP.,ƎP.}F&)	TCG:E_&x.BC|S[NSr_Tqj0]X\]KkKY.{j7mHCT`&*<?$JiT35G|z6KiG20gk#[
>OM,vcEF<:6a)vC$s@9-vUs&|cBGNZr%\a3j%eUuh?@}C4E&d	Nhoz|~q^OLpdYf_}g?a5rR=T,g9}-Nl=Їh_t1R˦}IBl''ۺPv:VV'd+crW]T>v[BPW\Ul_S۟wXJH!&xb-5[^:<cU؉ &#\>0}Fnk:B2;%z1ge0Le	敁Aqbw$]c
/NkU<e̾Hݏ͙]ew+3>2<1<0(t^v`'Ќ~n|N <7GN>18~UP9#EX5shC-l.-b󨃅da<#p>]ǚ˧J6t2xZ~Q+7˃±к1-%4/fVp0<aEbmT
%tdruRl:̺y\[ř2[YWaշ#ʭMP<<bդ]B-%^%BmQC
ۣ#3jîuЕa=	eQQQֵQ+?WF>-jº5zUh램֧G`XFPXEHXQ9ψ-a:j*cjEk<PࡂU^YPap`,.)p7xKX[,ւjc_
j
F;_jWZ!c
o&ecm*s
8s3<$Pf*P%7#E`yGF(P#oά)H M5Zڂ'zyP o0]W]#y /{uo 7+ف1s 3A44}e;x@8_uW`	?oї\ < <ުWZAyĞ}%ƭܣy2ޠLޘh.ݟh&ݗpF}Z`&^ A4r]wQ9\_ W4#ŲsH5R,:#".T`D_ЭF[;4(JԥJK#U#)JJ	rMR#"m@8H/pGD1yz%U="J
%k oF7JIjkM
lAI	?1EGFD!m"YR-R[3oT(*ЈVTdDl0"xF}ؑO;ba;ba=vrw,Z-W:-Xƽny5k +NP7zxtG 9o[ yklqa"v!cѹbh7d]t]NOM
~̺=>d[v%+c_b3Ull#aװϒjismXa6`[v.eYUlЖb9[
ndm_cdöX"6c{]o}F'U}_idVvrT6+JݪdmvvrrRd_UT^aw)ow=oٽ}G~3ZξdչA=vյlL=vG^-uQ1{\=ǞVX{F}UcϪ3vdl''ݪOVTmtutSweW8{;׭+^ryu3,uf0֍vzɈu+,u`-oʼVT5@k*	.q!4/m BK KtMe@
>/megx;E~C7
/_ЏPK$    PK  D:U            D   META-INF/versions/9/org/bouncycastle/crypto/digests/SHA3Digest.classT[OG%˵8e6'@S(-81iUz=׻TUyKUOVڪ
"0i9ss| nAғ`H'ha,>x\?rM1)wp+Mn,QNUl2DB@Sޭpf̽F&MWIfmh2k9cӏnE׫n1wL6ϙNC|0e|5\HIӄ^x{lx}JKwur1oW]Ng'Ɩ
+	r3h9MZrZ&Kn3%Y92.=1\9tXm^5yڬsG6yCXC,g4t+~⸭}̨8>P10G*G^Uq	zax2l?՛\MlrͣL~#;E|,A2oCq4j-$@4])li+4hm4
06pnxuLC|F/G)jvIǵ'fٮoW3]뽶۱dַamjS4G$yQOeʲQd!(Odw0rIhhvbX#E׭5jq
W}qp*6[D|m_Qp9"ov|&9o2=z}_IyY if
vik`? 7R4v7ȗ14JoY0]سȃ0Lï!d,"ĸH t.]#IHhU1@CBs(AQSHuP m#srGPfb4X/Y@2d0J3M#=h}:̩+>#FA=fsD7=i![
y5T7#dd.DRH(MOh~1Ȥ<Cߩho˩($UJCATg4Q%+t5}J4:?
$Xg]%9r 3j9PKVeQ.    PK  D:U            D   META-INF/versions/9/org/bouncycastle/crypto/digests/SHA1Digest.classX}PT?w[vYAUTAEQwY겋B	4iDIm;ɐ$~4g:ڴ3N2t6mH[{asϽw=_?!B.Ji4a0`QqLBLLfPbf7w d	~_RHgsoH1iyB7o}cY]?=OL,ᤅq	Ai[[&ՅCј75	g	2l)aRd2&c=&d`';	`Je U

;wkқ!K]A4#p7FcA싅]	H_8U{h,Zܾd;{jyLky}yM$BT	Ñ@@oe6!q{,+ ȸ#n"/ipbqb~dbYcl7B-^lj %!6Z
(8@xf$aaT}ȇ0uI15-S+(7%puNOMP ?}"PEiR4Qj*KL*
5P-su&BgM*R:&eL3@E&B7f	R}79vLv0bUXNXsD(h\g5j!-
ƏCυ#űaP=0iT48rSч5 x#Z^c"@(){?:s_)7&O6/$kW_xCpST'hLD+,TZjXES%
Fq;
i@qkg	$^#Vefqez:|o%4*<rF.BB1Z|ib\Ĉy.m$g_4_yŤJ+'i!*}+XH\&ëmA55X/K$9նIvA+4!bAWPXgڄڄ\g.k%CZwB潖T
-xpY:nYu.\Ωu.C;G)%>JݥM<:bUݿf9cjn
 MV4SmJ1oƮdJ+(Dmr@løB,%Edt;Fɪ[1J
*K]B%M8vAwvJ;]z'4ރڋJ0rH/IїM0pP4`%x!lÌö5e?8Ng7U՗Ʉ8fO8:]z08;Q"QKBNZGejӭ:txT@E	NHV=u?LnYˮ|:x%UxXNB`ayISH3<|*pnlr^%6ΌL;EZ┮^MjHL>
CAxrtڽ})me7dC6eCr+b'gďwb}1<RmxVX6$ۓH	c2*+VJvutj.sqNWvy.;69ޕkjeIjQ*OM&E8h3T۱!ݑ-_2"<<r]]:`7ʖli
JX8ƞ]
YK!p08hcK0'W:v \=bK2mtޔ0z&z6gg7z|vgSٌٍOjtwt"?H/tL]Rl..Zpٲ-X5/-UH	&\+2"6;(Qʯ
Լe~M}!'%}D?ӧ*V-.{b'}"<5-ޢ;Lܢ+C
Yv4àjxEd.wECHD.H"WRȓ|)$VIGj(/;%N+dYWyȓzy(e 僢ZAQ#xJHlČIG2$C,hhOr~z:NFIL~UO)k&R	d-d.'؍).fxL-=jnt(pK%7
ܒ>$pKFܒLGҜx?r]
*|4=nZ(vCtjJk/}*SR cXtqѣA!g;SKe7Ť'83hB=e]PK3	  q  PK  D:U            G   META-INF/versions/9/org/bouncycastle/crypto/digests/GeneralDigest.classUO[U~.B͍nvsʀЍR:Jow{1Q1hF 9n|9=9{o)
!z~CTq%>bȇaXx/o܇b$b1iHhxKU
4D7C
/f޽jJ9)
%`-qDv)*̢")\pH,N6e]VލLD	#/N>Yv~dVnO*4ɚټ5ZMZNLh9 x~L:n12d-̝2647eʱ<?J25$1L͌jfb12ZpP1!([;-k7;el'M'yjhX9S3
v6UqVQAgnzO7f55oڞ[S:Ѫ0ሎ8c=:t\Ǆwtnꘄ#8UҐaaJGutᴎ\:ĶOA@dəLb򖕢 V>mbga"#֬]98Ohov;rEךec4zc0I5}vyL!d63Og|άlz5;qiĔj5lMѵp'rD>  jQx{yՠ>BrFəU(/
:g(Q)>z@("X5ve<~[jQkx݈@F50> =+T:[ڳ	k.m+\{.8;$\[q'>x8DMwv612ꍰ7e4,B<:T8ugؼ|gz3"(px^YW,@DL>#<~^v	<c0I"$h:a!ٖ >S#y1@}6J,
NUe4zTAAuTdLK{ijjv͆X?I=U_SBx.kd5M
&5fR()#ͣf0iV|	y2/ps| v
T%x{Yo7G(Խ>#*`ĦտKKرh#S6glBjY_m$+7H'dԳ^ys$IS!k=LIWCe5`U_*z
r,jsfE#x}ǂMQl,nO 4a893_49a_ݲPKo  	  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/crypto/digests/Utils$DefaultProperties.classRMo@}/7MK>Kij.T@ j" qAZ[cGu' !qI@
R{yyf?}	ب`2n0p{jix LI=f`e	|(~ʽǡ7J3kQR{,Ou$@G:0T?heOR?govJ_LN莕A6:~DbEvj󩙟FȑMSsA[U3=Dڬ$
ij栆K:qɁe#TTc{_,}RԜNՎxt5!w>h7_s;Eϯz<(n#H)_
*e{(D~s'('(&(}:%JSKb"ͿPwtgJwheZZ^g<=5\SoΩ} 7L8w)T-cw`PKJ    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/crypto/digests/Utils.classTn@=4qp]h@i)ЂST	%T"wqrhT)J| 5Q
-s_~n8KQe\Q¢6Xla-^y*
$B k}ԻMBL T+s|YЏY3	GoN"IxND'~o'ԾE7W4)͏Bh6a\bSdϵ{{~`g	Ob)"̼:a+ㆃX5\kܰ"0kNAyO{"Ԅ_0cQL}G8[ti%vI֐Ɠh2?\Nn%@xGZ(-CGX8DG	.)*1>k!G#Xѳje		DlF
oPK*  e  PK  D:U            B   META-INF/versions/9/org/bouncycastle/crypto/digests/XofUtils.classOAƟ~tٶV,]^@Jh0*Ful&
WMx!^Ibim&;3󼿙y̪P0!)*8"pFG1 	*BAmcw׾yQYoъڲ7%RNqʐX
L=sEcN9(큢Ja̧-'xվe4GQLq8fb(x~è{Zf;hنwpv;hmhnXoV	,:$0%Y\lZ6+F.S*4(4a(/#(%q1Wkγ=tq}wq'CeAH^iYLFJ9MFsnO~dOdJj&"Q	$"K)V1I{8cL?/[c%ury^8d0!A)\ 9-E
ś)zq:VȟH9(*OxgT_dŹґ)$/Af=Q.[ 21T8 y?PK8)lO    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/digests/SHA512Digest.classV[levvJX*KRZ,Xʥa;vg-;
Q4l45.4WI|7x7ĄٱR|߹x@n`>
b8 Ґx|1aG
G|x"8&p\Iqq3*x{x|ϝ7ׯͳ+zAgyrc󟞃]<z&?Wz*??M{u]9^ܢS>0酡oox@>J?uf"ek	{DCA.#aػGvQ]A35MĩV,4az(b%m3,aݚ5"PJ)M=&j
:{/뒵$۝i̠6C
)mVŵD,-#kcX<u6N 5	-_TKO6c9SҶgL7/gl1)&"L]4lk6IǺ<Lm)
ݾlBH6VDcHIJO^dƋ)ӈh@=ŌLhuRiX*R$6PPBY^Qqs*aV pQ@ZU\WЮ*v&d݋wU
c2`&bYϠ\O5:GԮ^|3RYȤvҌ͂7 -[Z+ZLc7+㝒[i*g6-mS|R
V٧aHLs2lvD0>P/ ($,"d0iUd]4|fykZoy^-sS!~JKǧgp
U|k83a;:~B=T
h$6Q:u
PncwM3^lr,Z\&e4-%oѴĭQEbH\x]!?+4oyc5}Z1]G~0x/7P/4P,:B9z^Dl=W	>Q'B҃%_-98HMZك_$5汚BqpCIxV.\ʥ_v2ʛ\ߕ+(ow5[M-fGP?0-8ʲ1c8wO@8tLЪc	YbiK
Ͱ4XA1p٘a+PAʹlΠ˖,=H%IRYtR#M&Y^{=KN'KʥQpuiQ;A603
jn.W=NŰ{C2չwN71lg
p~|H
f([
m)}PKaz.  :
  PK  D:U            C   META-INF/versions/9/org/bouncycastle/crypto/digests/MD5Digest.classX	xSU>77kӴ}--U -[IEvTZ"GIMSq_AFE)XuPtT}D:ܾ!}|z9w{{zn߸ Bc, 
0	/"/[$M,:ޠMZޢe-o;w-GF퇸 iNm|/p9|gCԿՏ;|_~/壖v'{lϏ|q卍6ngޓϯ~xіt?վTy'^ÿSly27k/߼y{]}xĔc|Wߙpop,~n:W?FCWY#|̧lvQxË;kxZʍ&~>;<6*Q+tz Nﶾuo<~r>_d<R~:$,/<ї;{(S澰`	|I	J%8 hTaY±G3`E.?
:c{ӒCK.-}Pyi޽I]dVA$>D%2G)tc)t)tSFA
8AUG),&)tSP|}<:T$غj=
,Su~\6Tf{skB|(S|u\]&P"cIy/=3K5d雫yPmvIAA
[fOfnUC#/4zٽx{;f>w¢f2ͪSWxJ4[,{^~oh:"jz-UFfM4`
j%Cj:-D	!IE3
0jha;o*DPЏN:DUѾȅy.O0PC>A/GKY.QG,YʢHאּVYf1-+%8fd	~One6-+jZNHN/tnSf2v3Z6hYAF#V#wz=/(կUM.1ȾHe9m戱x~er+%:]W,X;Ek>VjCAw[g){Г> ӡkw9Mg<a["?&6MrDg[RĺAܦ̌h}Sg
zW%UBzѦ@-v$Dy8B_fQ?jꪰh%Ah5{5͵(agmꙋ.[ts?TAj#?}_&jZҞs"sE_߂~#?"$_2G!{ȿvpgwG oG `"V0>c&
 8@UtwN`t]
$Vi3k*#Ztt,@Bc]
C*EPVT<RvA% QP|ݹWÕ0]rg4]AY{&Uvw5oz"A.!U)E6`h%0IYZs?!77!%`u<<hMH%dd8}tm8-`oxH@a,'aac0-H;j%屸R\i;*'l1WeъL8)h
D{taSK)eFNۖ5j2nw
4p`(zԬOЪ0A	R 奂I w4C,TAcqQxJC"&GT^qvHX]vIi"]v9F
CdlQFlKؘ[R/lC}04ХQ3N:HnOU܁S
iKox[ۑېm-;tl1=s @,A'v`KR'-q6^9oat8id:eb/;7F5}ðomŎѺP\Xf;nC[iяox=R=<9Tc=tTRY2ؙrYhDa'EЦRJ;+rJSP݉vmR3J(r[:!Q
Ơ.L3uae2]W&N=`9.}d{#ǡ.Y(GN@q/}DnNb>R_EN	N?EN$,E,E*}Xg.,ex =\`]\
]XQ;Cuq)tpwK7?%[v\qѸ-r4n~KF)r%qF?E$Zjcs.c..ew>,Kua酙tTSm-{t"p[9^-Ѹ-^qÅ3AS/+\PMǥNť¹Av5Ya)t=d[NT]`JGj8B#RVBcRF#Ri~T6!%3Մ#	GÉKkHC8QaK?yvÏ(q8g6N)*8Ͷv~eႡ
4?0f3v
:31370>ofq|%zdkcY1KX[++v/&s	i6hz684'fse=̷u,26zYor,W`}٬ /fWI i3(5a.6\q1oGn0]pkW:
4X Sj킍VM݅I%08{\tJ +ARqi6t#QSLibpkWLt^1ӵDqF)Joӝj0VhV[s[,6ڰ	`ЍMlb7@!JS22U
0nt4x{8MWX'mPKq  (  PK  D:U            D   META-INF/versions/9/org/bouncycastle/crypto/digests/LongDigest.classW	xUNtIiJii($@RʾRhEX)i
TA6sf.
pĺ2"WsQYXߟ(|s=9y駿Q+l"!G/-Z"$,ϦpĉTыXf"E,,bяE8-a"dbf1`"<ab(aq8k#XNYtg'N21#?
}ߪ'G_ܯGڳgwi򶉫}$rܑqѷ%ߴ<aP$%́v=t]|#l<57ivʍ
8T x6ZC
u<^zݨKwiѰ̶n~eCrnC,}ke>SxC.$V	.:};~|&5澸ᇬڕ$>jGZz{ܶoKhj{M=CҳF]s(G\d([z}k{r¸'-۵]zАSCN.+<}bsYc|nM͇`㬭|m'Ҏ<v9{M~PnΒ.-yؓi>{21f2wڲ;G?8ma}lK}r<ƗM/U.}"خ[eէ/?C.(N̗k_\6#(4}Ry/3O[{T]R%˿8X/Ng9Mz9^L͊ʕ^_._?L
UVe
m%2e7X+IojK9ԾOafhyBnYr]rˁc;)//$"FZDEтjkJU,&H	ZBަVGZA`s/hHE XYhm-Flk<:TK|LˋZd[7W^ϸm!1"la,tm8,
XdQbcX^tAq
M
	y/Lqi+3[/k124߫y~ۦjTnaʚ@ksW ɼEoߢhZ LePI5#
WҰS:})Owe˲2=*D7QWCo|9`!i޺-J}+Z8.KW^Kƀov*SIlqw!Ҫn]c]5W7/w)I`5{xqp1|}
zto͐ޥ^cc
+/}ℕ1+}Lǭ<w:lxqV1^Lқ?Vz,a.X't"&Z$1*DUL%V1UZ`+up'+u	A׬"LVaf!YV
F4=ަzO傅~"B,t25_KVb^rпsSg궖Xo0ms*.,rlYCz*/7tBCS&PP_TmU=%F~\yt.aAhM)upZ?*7e^&#B(zkt@GHq3:SGhD;Q|7E(~Q:_Ott4@F+EbvBdfkE52}1a2}a.w.c,sY&(ܔF1~8
03_'3p{rKY4c}%^7&k{)=[8q "3ZdeƘF{Z40%2&)19LɌ*L
 9H+RJRΧ?쐓(PJ1(0*14
eTt*h͠TI*ZKPi:)QA#qh֬{)խfsk-eG4[46"%q-ɭMhn")VRef[7sqk3cZy|ޣTٔ@K瀅KhH<˨.+*GAu[OۨX2t:Dg{ Gi.tfgf`f`f.`f>`fN`f^`fn`f~`f)b\@ynҪz&ge#Yr@N3Yr @M+Ye 
\
r~r959_W]8[ԬO5X=M#AW-40<~ݍ{ |m{=*zʡ?~
V=__4lz9.7cnJok:Oo&7&<C?>2\7ACq2:Ǡ-6R<݉cz7=gGAX.ѾѶ{ТO5pdmeH`>n:/6dKYDwm_YY`/六3~rAx	r	b#9LD;=,qrr>ǥlA_Ӎ5k:OD&eLLOl!to]9;^xx5+68/'і)df@wwg[ДH^ؖ]Y/B!7&[;b)״{gL&
u|/ztt6;37LQ?ENvmom
/3X[68f::?ήԏa½\-!JGcbl"RD<_Q6ߔ7siڸtr+׷ѥKYكǗURFF5;F>4Gy~:k(dµB>H)K.Ph7L4LJIv#veC:=4rR=zĵ[r\Cy,<aJ^ng3+w;\g9Eئ;EC#֕o:IXY>=D:,\XvQâssY>)²;NNZn7iBfewU֣ԟTv3"^Xvwa=ڣ~'S|vIkĶO9BKC͎~j&P~k&aoBsXzi[I#4wH!JRч*D&N#"|D
lj9w7jD/q#G@eb1"$Ɗ(v'+X|ߋ]L3e10S0LբҰ^n6jưS69#ûpB\a8%^Cg§_ d Ӊ4-4EG$38:P9lh .9ZT4pC\_޺bL&9Q6Y=ٴa6#a7uSnsj+V9L(VZҠBG|Ȟ|A%I
m`>VG~G/6ib`:X[zduko1\{P_dƿtjTUkR4V*T՚
(^UVP! cU4h" dUQ1`WTM$*HRT	HV4UR8*R4r@oE 銼E>@E~@z W"@ŀ~  (j(ZUSt
`  UA +Z? E7 anWt+`πBEw F)NEw*h+` mLT `Ɋ(RXNEJS*z0Mѓ2EO=
Y@3TtPPc
2?PKI+    PK  D:U            K   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesConstraints.class=
@'E2`%(7#&ݰ	jCJ;b>l1I$"uau%lcV^Ik7"Dƶ+iny&L3ZfgRޭ*Io0PQK]c^1`¡!z{PKuL^      PK
    D:U            1   META-INF/versions/9/org/bouncycastle/crypto/macs/PK  D:U            ;   META-INF/versions/9/org/bouncycastle/crypto/macs/HMac.classWkpZY^leñ%؀A
4vL	а6VAiMliICK7Lڡ3ttL7I-ɑ{=swιO{:uXF@ 0,#)c<O t<2
BX&S)OPgqDpd|CzN7KP2^K[beJ 5A~wxˏ8	?~{~|Oe@7K!av-UdFлVX%ZڒPcA#GǢjJjMQs,eM]6F	/qX5$8Rc}jieDW1FmFݟSkPCe,ntd\Ps@Um媛׬1KfiÝjN#K{=32BѲpriߦJew nO
3a
lWGx=
IU7YfBӽ
r>439ƍ.%d#l^a3ԙH
iNդf邌nK{ըA̗Ilȼ
aOGE	]MG	Y,[CiClMѤ@1ZwBDx]% ~&4F$8A<`"
F⤄l(#5AK&l7Mj)+aD0e^2bR?
vCTMOf<][Э`+8`?Sx&RtC
~3
`1?SsBBLJFhIDP ݾgtk^6)@epӲ@1֭;׬mnq^\Tp	]-#;v5lȮ[W3slfej]Zaro]3uOJɔa0
YwТLą3`ѤHKчu^ڔNkj%	sGa7ZXߓ8=
V}e!_:{]9}'vBHTj9K[:5R
p;R`ˮu#SLf>8CE˘ɣ|"rYxO
+De\};{Ga͍fsLcÙ_kfgROkp6U%2GpI,`s{\j2ٗ4:yS򻲍ܞupYǯV 뱁/ޘCo⏭^1s;s;]V{y6WC< ݄tCQ$9xBJ8&Oyy~2o/!pƾ~Q6ј~Γb}zlN׊z׊@(PΒlpj	]ዘ
TECQ
]@G(W"{
{*0cX¦\|,q.9n[2}q짹P+4KMg=q V)Y6Kۻz[ԋqB+cmıYsjZ^A]?i_^JC+62z&:Ĝ99D\<)5fOm*i;;9"&3'fPh`aSL#Qtq~x	e+{?-sl)s?)v`w@L]|Nq,)l=}[h+Bjb!Q$u&EB")ιQpV8!$})TMg	W*ۄ2nTL-Gsa}aVm.5ٞʖZOQY<+x8ē7x>aUF.ߧ.emp]"	FG~FOSWed2}Z/,$@tXVyj0]Sk<ӿZmRPʹlN&*va.^аKP`
>Cy<jUՔGΣLْO];EeO@e3#iXIha1<φ)"8EkLH:9<1'PKoy    PK  D:U            R   META-INF/versions/9/org/bouncycastle/crypto/AsymmetricCipherKeyPairGenerator.classAD=5П4q#4PPǡYG(qNU`fz!°򒨽8Zr`ǢnE8dގJ.Lm0>&MTb̞,/hBhlEmʄ/j˞7Oh	*.QMS?bWQ+B\} PK\R   ?  PK
    D:U            3   META-INF/versions/9/org/bouncycastle/crypto/params/PK  D:U            O   META-INF/versions/9/org/bouncycastle/crypto/params/DHValidationParameters.classmQn@M8	NCIiI
s)- ")z8ŵ cpr 
gBY'7o v,j	5,aYp-\TW s+` HT$ Z^%GJppQɔz*{7[oIJ
-Wҏt|gS&/Dd"Z8ɸc"W=4_}H^W&^<<S֢X7aa[(YK`'zNݡ+W
I@_B
.ON'e*;H9a)Ad,9Ч-
|?Ow ¿\v2ڵs>Y}LBdqnUherkJ.]XeSՋy\Tw&涚?`58ffv*Sj%+0CI:h:OaLXd׵=@Q@wi?PK6G?  #  PK  D:U            N   META-INF/versions/9/org/bouncycastle/crypto/params/ECPublicKeyParameters.class[KAUWMMCуEF//IEDo`{uW[t }hܢ-moyy}z8fK!9]V[5L/t
FnP'$v+=yi|19}9L3Bu8!.?
̴e$1aTU}7-xh:ïr+6`:WcK:P	[c;5Bm,
)]sHEhP?9"*.
QZSN"%&
( يR}Ur1R%&;(7H"
LG3oPKQ    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/params/ParametersWithIV.classRJ@=$Z뽒b'!PTPm\jm6W
"Ql/EA	d&s̙3
-1adަ0Ys&R%oX6[dͫFfׅȤGnغv!6xs;)0ѹ`MiT<:eĘWNI	RxES)Guud B5Ni_'k"̂,M,X2mfE^J!EyT/E38AsJ9v,.%OЏu*M6RP,`CHgRb E+0ղV~Q92)LG{ןw`|uǩM0I<(53c䝳@74MΓERHvv
PK>  O  PK  D:U            E   META-INF/versions/9/org/bouncycastle/crypto/params/KeyParameter.classuQMK@}UŃS0'OxKMmM+EP̼7; va#E&Ul,jfa*~+R`G(9`ȹWK_q4'~ zV%fG$GJp}e(#U6O3.y_$Bt/FQZ3[`ˎA|tPGO%{|O?V4rJȮzt>CK0<{^mX:6oc@-^Co?=ЅasD+fℲG٪sf7#ty--V_F!,#S)̂uy PKEt  3  PK  D:U            K   META-INF/versions/9/org/bouncycastle/crypto/params/ECDomainParameters.classVsU.Mɲ@[K5$MZb"m)P--VytMݺ[|ߏ3:#:茏orl	i3Ly|sNmqGr\	!::`lTC6:tEU,a{Pf9!y!8%"
уteI%YcC(&8c-d}43:&<"((𤆧eoRX7z̨[vYL+
e),9֫]Ak;><iN^;7V0OgBvlBGrfʜّwY|+lx;FVڎ5T.Zas5Ttej#åPVcbwٰofO0ǃj8i
hR,G$J"_)$C
=O	~M d6dk$.`=T6%Ɋ2GOZYgQ:7KJ.%8a1ӷyY0=yng>pW**l/W2bQaeת=nѴ,=7ǀۅ e9ln6k.d\(,LmlFa؂
l7a

܀.
x)t]N֛̸-e.o`yCAp'r퉬8!xo(Yr
V"p8Ցp
-U4m]{x_hoN@+":7V'<+oqo:>%qZ%LZimyp?(ˑ=qeʾ]x9Y?nCLs )XtpiHaOظ0_Xe"3:*נ6.s=R8z~x1lb3]s.҈8>=|(K,Re0l7WPn;vx3PW
_Pa'0^hTt*Th@S5a)RR(UqHFj	^B_bEDSj/X=#K/2YXNbi4Z#hN_Uh:Xt+#ƨ,cV1Jm<݈ېF}{%`dlװ[CPҟCpTSbYW5XY`mfլ0e8nYc0`].a%.fCqhO^AX( hLƣma[3_jQڟJψC}O v)q8SX)@jAgԝEz=8ż+8{hD+qv=IOh߰[O*6IϭZw[Rn\}okip}~u>AMOr,+i?Êz	9ph5ˀCRIk$\!S3HS=Ҽ"xPo/&6-woQ%FSqwhpmfj7YCWvL	uX)K~OS! RtJt>"FS\ю/澤[	@?PKa^Vj  <  PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/params/MGFParameters.class}N@BExE+Wj4$xI0n\
eBJ%BҷD1g(9̜=O cD&XJj
V
((2mC!^=PoLŰz1^W-FG)B/WlCSWN}
uabAzIlQ&î/;vzN 	ۑ CV:e+z3<rA`H0MNfBH5Z#Mn:bSVUN`a'5,rS§FP5F*$U7hZ	7 FF?!DQ+w_4ICPK3^v  ;  PK  D:U            O   META-INF/versions/9/org/bouncycastle/crypto/params/ECPrivateKeyParameters.class]KA,͊.S. ZB0n\mb?dUAE?.RgΙ9Ϝ3@;XG>
:6uȀh	5=*3\9L4	'*O`SL[L20TPodvZ!LA>{}&iU'dT,d􂱰9w;*%ԨlIulQv	r=GP_˷lџ1|dlRd/ž|/(?SU+Hvg#fULtQtY5ki=ǫO=|#谠l&*PKW    PK  D:U            P   META-INF/versions/9/org/bouncycastle/crypto/params/ECNamedDomainParameters.classUNA=ӏ]Z
DvkQH֪$M!1$ڶc]BwvK|
QwFB9s=wΝ kX6RQL"Yº#`Q]K2eܓq!dΐN[o=y4!׍Uԟkŝo-nk;c2-wqvΛz\9̈]۴ql%mMWTJnQ)iZKqHWDhظƦsr.xjwKr7bn{T迩6wk^x=ɟRH: NFV
MAr
b+cEA(*XD%CqcfȜ>u
˥N0=6kS!~xZx~n@ 0G#*/TE_7tT#Vf!K";kiAF渖˯$CXOax +)75ēh
xɰmhC*dPRA-8)!΂ǿ9o_|!ѐiLЈʵD*2Hc53̕#뤖#KTl4*&GYALhk_"yN0Is ~PKq?j  9  PK  D:U            O   META-INF/versions/9/org/bouncycastle/crypto/params/AsymmetricKeyParameter.classuJ@MӦgS\k0DEJMPIL
y'7"|(&t1sg3||~ă:8"xVa,	4'.T%G3.I*w:QD+*nYBc8b{HkUmrFB6R/FhGaEEJ.3Y1^D
a_DeR~g6M^^jq߆[\a#v|NmSUf3xCZکPK*U "    PK  D:U            P   META-INF/versions/9/org/bouncycastle/crypto/params/DSAValidationParameters.classuQ]OA=vV@AiQ"C&&UieW/4`dwv+/=sϹw|3e4cʀiW1StVkPb0wDoWDBr{$~,B}:Tڂahţ%§ɊxCZ#wf@dA~f]/Ecխ;ցp{]6c<GF3HBG<teRlpm
'<䇂aJkX0%%51	ec	NQ		Gq`IOqaxpt_IzZ.Wuٮ%@y(ȥd[&r}998r)iJs
4
FQ6jݪWr'`p HQT+ǭG{PJ5C)*eeMRdUSi!%/0+TPw34.W	˧s ɖzPHx	EWo_o/d[Hԭx_EK]Fwc+dJ#\;F4EF+?PK6hDT    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/params/ECKeyParameters.classRKA_e="CKz-ruyFC=BAGUsGd=E0;73*uhHiHG\d5kX`{]
ϰPNh4&ﻶ0LgsGzmWu%_I-KZ6FcPM%oۄ$Z.7/x?knj/zK
SY^T/qXdX|cl,I!kS\KIW&RK8"PU
/	;abȰμIq-Vhf^ DM	Rn7H<!p:!R*? |$f&';II0y&
j0
S~$?,h/=f}q^PKc*^\    PK  D:U            E   META-INF/versions/9/org/bouncycastle/crypto/params/DHParameters.classV[oG&&8ǉR
v@X{zmvסC҇"
*/}?J.	2NH|gΜ9g/ a^p#F ]  .0\
`&L	pMu7S	+7Eb8+al&5LefCc#,(릥ִU\}Lb%YRb_-tq+QV1M+ZNF!-WbN1-'sb*'+7L2Z ST7(9CKZXƤh&<a)gT]1$cx{a163	vRf-}	6}N=ܔm[rp;bՁqG\tDivc8I߷V^UH
<YgE,:e(WVE
TbBЍ,uGRv(TK\><_京
ϩs*'dՒKUӒM:9(zwg=-UelY.k4erQe	>a_اhZlU79>[U%B(B8rve,;9rĠ[P
N'	8]!_!)|pBN
qk@߆72Vx;5JPcYvRq6gU+U˰	P];;T-UK
7,j^^605=ꤶbwӷ	](v+r+)ֶ<J
6VE
<#ѹ
;	@|
`^ۙ襑@>uIlxOyV6$SB!@	GoQ.(}6K3>m'elzq:	zĥƉr_Cy)%cpyGDQ_E<2HVE|p(Y;_BXE_ĝ^G'ܥX'jZ5r(Q$"Q
[Qm. LQьheMʘ,!Q

0[4Pn_x<$s~ȈTv-U/ZEoO'nWOxjknW6Pm[S\Cz%O)yUV蹪M
l	>r+L|>I$`xt#[e=OAy{/z?PA/#)QHgr}aN@yq_q}S
$vxx^FvNʶ݊;Gm͡ PKzEW    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/params/DSAParameters.classTNQ=32"?
1B$weL$,nXhb1qat3C͹~| sč("TTR`Hș0
frMD^o}WH{O_+Np@@Z)wU9^~}T5w*"n&[/ԶRq.%Im/xeʫpE4wMdl	=Bje&pٯ"]zye)o?:9!BҖ/s/7d[[AV'jGUy9gUOyҙr4mlKAnd$̙A$L)Ǆ@gsWJ~7H1&t5N%j0Cn.^bW	#dЬL9Tb*ro+=|NtRD'k@#|`Uo~cgzT0Æ0YGhOG$qTofC-f,q)
7K牜sCZ5R"o֎_P
&U/W1C2wе`R`.0Č
SڡE^m<L50Í~G%&5x-8/PK-!$    PK  D:U            B   META-INF/versions/9/org/bouncycastle/crypto/CipherParameters.class;o>SvvVv6FҢT̜TFQ̂ԢĢԒԢbĲDFtҼ⒜Tʂ|}t 9yIY%@; H21  PKyu      PK
    D:U            /   META-INF/versions/9/org/bouncycastle/crypto/ec/PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$25.classTkO@=SR@AQvFcҖH\BD?2.kִ]I(1
uysϙ;w 0$aT]	F%=	2zp?<1.afRBD<1ճg3~6wxl5h7Lxqljf'5e+nFaY+AP)-'@$ORːAiʁvocr $z.aoYJ-t}r6Vxoя"Ö/%uyʘŜy1|T^ɵmulXض[-rmO__,%45P
sɷJjexKi-Ttˬ(yፊ2
X`n3V"e(PehyA
YB(tA^" M9B6O
CH!O)UU*3W'T[9Sy"r7mT|RATSֲ2?bףHǯr}eҊSȫזxBzs b2oGs/g|7q<@Fc3Ѐ:7(7=yt~&niLV
'WOѳYX(Ui ap Q8Dӎ~?1U0rH	PK@dk  7  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$28.classTkoF=vBhh)ҒoQUg*jH+gl+KˏHH~^RT,{g?~)\2	L\&,\Ǘ䊁eWq3McWnhfXo5̬0+=ְT]UwGP*o׏iU{œ"oڑ
[	ꖆ3o~|_n4l7c?RS sׅʆbܴ6mMsR+bT5rpG=qZ_$pGw=LZXú
X,̋$ueya28
ByYeqBp2.%\ND&cݰI7PxHO6cc$x;L<2	p	i}[,G+#xzpc;0pӂ
f"=ߢ~k[uHu,U-Fy(ʁ)ɿF{BJ(TӬ04dNԩry~ڣLA=ˁ֔QaBC=9&LP:.[5P5ZW?E[i4O!xWkLEo=QPe5OB{F
?0%=^
A^A}p9H4j[8q4+mpqwa:9t ~E%	>O;:>g_S3ǚ PK
    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$7.classTNP][SQf`L[1&36 1DtcКWD?_1Eo݊1cs[{ug*D¸	}qWqMu1a)DtE(	PfAzXZcg8|fs/v7~Ebi9f
mK}ٱs_N)٣<$T7r?D FnI8ow4Z߭<B2{Z';Q<}Ii"KNh=RsR	E֝k5iV
͊jSwTMjͪ E
MB6]5fTRQ,ŭv%^/EquUn\WU̠
Rf0kBUYkhݤ2:A*AGacP``e(0i̡S20-{1xPxt$R-j=e!ntdq"/7ϖi)\q91m9Bi0cV>AǼ(Sz~Z)7j0mQ!S=4"׽hAюF75*S#TX0lFF.;0~(?a gq&-o}{xgr8Kh
=Xه^+@M?Tc;HX.2ThYj"OPKJpW    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$20.classTkO`~1)vp.[Řl]I1˧ҽΚ5mI(佝=9oX19"rq7'pKm1	,f%"^6D(XPaAaTaQ3Lo
<~HRc{tZ*QܕwA$qoeˎ=Zg>=bS'!$T取r?d@܎ p$iߢߝ;o#N$<}uIE$-96Lp2Cn8tîfڭ)Cw☖̺ E
M4͆2jNC,U5뭪eUM覢mڦ]SbU݆fZFhm؊]jVuU	UF SB
u	V6M|ǟާQ]i#yl$tk#::<fCzky,)
vKgH)pBg=>%zȏGhg4KyaW΄aw0qffl_gB)Yx=Az*5F.P!c4"pNnw7MRʾ1T`(nVF빕}/aDx&e.RTȽL
6 X.;x{+Jq !U@CZǅ?(w	(fP]%ҳ'kNk+JC$ZPKJ    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$15.classTmOP~.oŮNATPE6kĐ]H "tQ3Zv/bLHGOD0&< aAD/hÐGx܍'"FTDF1Lxɤˈ0% x=d谂*g]|ᆳS'K
sj<]	4|u='ޕ+Vk	=0bD*7Eۺt&q=h.xmWξCjm߭VyTH?EM.9:w7TuuI*a2CFU,b+R+mW
eۺj(T%̡aQ)(jI3Jz0U슖Xes^FPsTV`)X̒YR
&["Iׇ~Wnp\hҲЪ;QfZԫ<dO@zSuy+PܜG-Fea$/:h'8ܘ*$\wBvd"Uo[P{

	x~L'\˰y5#5LǼC"J%w->m3I5SSi
h:Jw%F	1jkm['h?E_2ZStLCXͥOqkVn&w5i/	}A;B47=H;mx4vPiPKK(    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$5.classTmO@~b"*(
JŘp6HO5Gk/?8-p6ݝٙgݝ?(cQ ۸ӏ"&pO c25N	 &/BDA"Cc?'+lp6-伈	.iSB=v'-.{me^C'AknG1yn)4m3a;Fv;42o]ځ
c?h>ɛ!`N0h$eXrL
e]@%CfWM3]mE3sTbTrE-FYHPIqa])UUfKjتSrUcYRɲ+5^rl]WpCucEFӴ;6	$i3Ggbû$Lw̮NQ2i%xd8tjs^[
1'y<EapVGwO;[2<(-Su#|/Ӛ[nДSc\,lU<9-lՔ؞y L\}Ym(],ST+A<"\>|zIH;oݪ^г4@Uu
0Ʃg}Uj2>zp
O]'K#tm=
L#qt`z}}Ozq8WGD=?PY1A~EHNGօE}=,H1ٲPKe    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$13.classU[oD>]ҰRҦt73̅ ${lPTQxloi_x$4(6	bin79 öjY W-x_,Z
7Vfc\o->M׳~6Z0 8ןXX;_Ҥ	{ݢ4ϞeiUO}֏mٱymX{	顩MY<V9*KWH`23ɸpYO8Y7y6)q>gŰ[X78)2qNMvwlFځ;`ETRR(C黊krA@{aN\DE=J5)XHnCW9JsO2WQMBHG	GQX8,$bdj&} [(eډ02&](7ԔzEH))_(%AFL8QFX8Jq9ܣi(s 3wpQ)Xy$bY<	ܞ[; @v@5|L>gEsn:s	tvܔzV5gdhJge)91W83&gYwS4g5&GoI{#1'YZ֨jgP8qϣ~rѯ`ME9N^)ݨ/N@<m}`=]B<ذ .ήHpq7xH%x.
ݸ_#X<_p
p{w7Cޠr `k:G+n"?2	g_P| 8.`ٶoPK،Ak  S  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$21.classTkoV=wu-nn^7+"5x/F¿j$~ ?
uBjXş?bW\SQUWp}7T/*<[pEmb*T)h3Iyaz0dɰrg'ވ$8Q)qN+vlo(GRߏ0hm2,}=h_2/OBFE7d@y,ERQ2ߡ߃uDl4eEE6Pa	o'􂶻2~=O>1t&7,w<'t\k+e(04p,gxnt.:]0vznwpD?_8Ӷ\
avhy0=r
{^hx]ewz
Bl)Cࢫ%ƠWeVEXWLΠm̃QTrcJ@qHoű,0D|*%d4|C[I\R5DGQ:+a:l=懲<)؞`Ȓ<^䓠_zx(p+-Pd^ϞGq_pN>[W-PT`h3k`ІG*afޢW? 3e\#:g1vcgw>@}hC~jT*jMk-4jDg\u-NC%ZPK&^>    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$32.classTmOP~ EDQ)vd+m$H!Jw3[k嫿H 2QfMｽ<O=;2TcqOf}9e <1/`nQ@yy,qy[sBqC
D峭ng6d1!b=~#ύ6;n| 2OS7AnvXJ?_uiLzi%n-nKjmkQon h(0	?Ez=_b#l*JYߕ{>s(b9Lq,ibiU[dG6+lӔ4M׫iVqlUGufˆ\j助e[TCի9aV٬[5T䲺.U͊aXT5C$eQȪHU)V9,
2k9 tP8W^x!(\h^%DnYh(btd
r(!y,$qp
@i"Y	IZmo;qHiՏ-?&\z4CW3~̚,$GD}?y w1O5dɓF7
tkFp_MGLbt
Rb=	RH&-ܾ i,pco&GNo!WZ-cr쥛PJ b<5Figw0Cc @\PKmG  >  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$26.classT[O@\(m޶dшh1O˚5m51}?e<]1DŸ6˙993_}`2N)0$N+Pqf gK㜌IS8_v`ZE3WI3;wO7r3+uݍ[2g"*ζɚ[Nx'%D~
;QmBd9A(O{Lմ"lHVh{Ð_~mG6HV7-Ql2fUcȸKi*⻆k䝠*0bcouKufXuermuñCTkq%7jaٮQpG_rL==^
lp]\2<0+0-^a{**Xd22.Рe7Ag;OL)6FoEy.$6DPB:(EOкŁ('/	tA\֙֊ZdTgQD:?t:ya8-57B4DFK(.Rr|ڍ.vå{GeCƾ]4a8B}(=G/F1z^u3]|D /p d)<}*!|Ze)3ZWސ#iWDM!%|PK  O  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$31.classUmoD_\i8h)BISzI./kv^5RV(8F
4$ _kP%N6g|;s?O Ö
jЂ6| .G6\mXEWpӆOV3ma
mX(՟[0_{h*wFٝA?FK'+MZ5)iSCg,qc2'QS-_ezhjSVlL:"(Q+&efpYM8oҧ)Ml\T|xO6lva޲Oٔ˩pg~HS.ǂ+ 	cBz<Dx(PS2J@@KB<Kh<EEbLanZp"=e(]!c'>|=DR|ZR/Dx@=yBjO
a)$ʍiDX(2ύE"Ji8␫@@HI8g,riE=eǤ?Ĕ\{(K3LGF,,Ɯ8k*Pԗ]֌נ
AB]i>9E˞%ZsSqZUSZ0?ަYfjb_+3)I=;&ϰhʹca9(h;M84:1n=,M}RگfP{9E]3~+]Kbi$G6CS"QQ_|fu͢ygG;X=>
pw
WG`y1~yx.ݸv^B	`xٻp;/}w[<7v_h9xݍ#x5U~i֟(
>i{>OF4-PKA{  k  PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves.classXy`Tw#D@!	$
$-!eHdH2',֥.mmkն.]ZXnmժ( *.9.L/ܜ.w<cO (6^"Ɖo%4)˦l`;McS.|&I6dEiWl::ߦ)4Ul\C
&b2VbR)fLe&eIsL+qTnc8e[ImrJ*MZd#U.2i	ReԤe6]b(t&Q*TWԤlLs&lmJI~s\eI6]ΤJWYgRE`R*W	UL
W	lcDLjU֛tjW`Fk]eIWLlU26BrIʵ&]gUd66
&hJWɤ/۸UbW0Nnʴr}.
-M;oK6ea->;,k,![8,e
-Q{-)Co	ۂ?O,»[8.S	>`}-| 3'-|$/iE=bѣmhE-EYq~m=iS&=mo?\kn7z S
	7V#
_s0/gCqe}a_?7	5Si<oQ8$/̭oێ'yզ؛z'շmxb<զwGOޓ<
xa~}^+	6ŭV_V^:^ߖ'l&0OLΫoF}=A>P:z_NK$А3\iɸVCjiqK.F\m,!9S@B7~)[i]Tʖ5pbPpm%/5B`b\ZjEr9eLq69#@v3NdkՉlIb7!uj
YZ5S_un:=kky*gc]|b ]Kg,[f0X)̣oyhgG|}M<jn_$jL-OmH(oB&ޣV<j$%)ӬӳW$W$Jhz(inɱ#Ywnv8n|W_YE پjsV%ŚZݠ_PK?+ uQ	5Jx7OLJ#CݩL<DdFg<{x3II?'Jv5TJc(Thnp3zk^L^W<Wi1ÿE|*ch7aX&mh6Td3=ԟ2<&t<42;^iG&vR	t8QyWծ{{^<uvwݫЃ=]ޮ{y^rq 7.)q}Jp
n\!%F
n\#GRp"9Wɛ]wrW)qWɱܸJMx
n\%U~
n\%Urn\%UQ
n\%I6
I=P/mAP"v-b"/Bp@AD7DqTě"wD"D񡈏IxYt[Ӓ	{+\X"7q\ڕkrmWN+bAa\v]9Snu0לdWos7u/g$zFNۉ^ueIr	^Ɲ=u\eKx҄ѧFiܷ%Zqn%J㜐u]GSRdǛ|>H6aifYV֡Gu73l_MMY/uпmU_WpH"t?\kcv{I0I$M2CK]әKKZK<[~wر(WXSID*sF{kvךu3$:9w0p %3K8ԸKn{4ոO~i<Ck|]h<Moi|[;i|Wqi|_OhPG? wkL#wbm2=s=̄ɰצ/ڎ`
k;Ҳ$|{ǭ.&Y: .W	ۥc̭cw{ٰ'y]<3a羙qV̬8{Y
y5P`sQ_
8|q|G0Oq/+SB8蟕-DGp#KSS)sFbj4ƪ1Uc9tu:]ߊsg@,߆O&&S,͋~*y1B#KMuBOK:tBٮt1"kL&9wK"-*%S21Ԥ~?ehcRx/)nw`jC`igpƤ3Htz=y3Υ>w1I?7ɰw0:O;&V
O<#v>MG$ɡ<ٻ8lG&Sl-W㨓onx-B0+pD#cltcbl\cdEvM"'\fyQxcg6)
M(bfG1%.1ŌJF132ffsC9(PlAcX(PlIKcX(ǰ(.aK,|QYM2. uQ1`!fMQ\CYsZ60Ŧd(6p/Fqu06H	/})>;1&_v0FW|x7;l_w
9BoqM^:Ao9";q]
;}?p0S]v0[=u0O|?v~
},;D/eB8xG<NVWBsspADtpЧ<`8BvHS	>d/?b̳OBVoHۂ
wT🼝/^2&>KZ^ãYb,`/aXA*h3[q3݇1C	<ax
/vpXcFR7m<Di"eGPtΦ*Տ.UNePXf5nRmjݥj=JIUJϩ*jU鄚cgxTq0FUiFZhTEruQ!UelRKR̸S]lܧjC2W~35qUm|PkjUST@P*S5(jT章*Q!5O5bt1]jxܿ+5nآ11Ac@ZWk\qe4.X\eK4N8UcBs5NИqQ@:PKD  $  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$23.classTkO@=S
 vјVQ^f	TfiMEW Q1
uysϙ;w `m"&M0Y3- <f7fgvn DuJ0Z{oƛN1S}6+έDqCډapIڢҞJ4\c)hÏ=8!X'"}4W6fZԎ53	N;I5]0$K}uà%ͰJݨcV :
k4T5q*b"0BI.JYT۪Uv˚byjzy%dfQ
eUu=j(!+U[Uq+ineS5mOXmںʎȺYai"X$2V<DHE(Y3@:
i\(F .!$bϢV!dM,	U4=_JF,6Z|D0e>յw4@cd7aJ4f3[?H#f]7&1ʞcf	|aka#g'LOm3u8"+]-_;A~X<V#v3upx%<v8s*09~PK vj  7  PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$6.classV[oE6qb5Mڒ @w]\
P'*TBڝFnޔ^~@%$8	$(	Ijig9s.ߙ9s/g d\L,fs1Xa)bJ,UF!Y20#C20v(N2|,
fI	wA7+a0.!S}!a
'G#	7)qӅfmp;;=Qt'EN-*K3Zs#wS"K?.~n;er 툋F7pݏUZܧ.u`cEOB?j7pSr"Ha^sΖx9Vn,y<0mfkg6gb:Clӳ4kW5|K&gY~4`4Jh\R|cnύZ[n|d1DIOS4Krxm:+/u炒0NkL5a1Jey/I.IѦ:$z28D_cGG)	׫z%Ǯ8YUJuEjk:W:2(fTjCmufU)YLNUu,SuR+˪ۆ6l$̜2xG+y&
<tĖG;[qypM	 Qo=?)ȅģShsb+貔eq/ >4
5]E?*g)z^nC]H,Y 9Ӛe
b
:u=\t&aqH_6xx\]=^בV	ED DHxTK{"jb=`$%Gl{'Sa.ڙ{c;.g}_;/xΧ%:\lb=\_r|W6SԜ{^.*}o0yj"5NPҞO!L3 4
K>U
PKZXt  g  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$17.classTnP=cJ	PhI-vb8BA>%5Jmd;,//!ѠKw;g| "NࢀK"pQ\3*b1
̋T!(`A@aBqa9Éݭ.Ir^݄{:0[a/^{nt&2F=ZfzFOx3,Cqʯ,ըQ&Z؋<S
^;t<7/\bnAOö%	8ɠْcڮqo]ՇZfTMj؎^sSvLlZ1LP+FMS^*
]"A&ACS)+a:uԚj1
tPm[7ZU1զb:UbABjh42J)+&qA>ϓ0P&
<w8TK:v<b(Cz[x)Bi+]OܵC:<𨰣X_Qmג*B+-$90Afl#
?"9/^,g<eJY	ʥçrﭿt.nP/&~4Cvhe.삽
)R!ԁ,uT5ǻț 	03t{k-pñ}KKwѐwq|
b_0ƾ"Ǿ!Ͼt3s8OuS`H,,PK0+&    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$29.classT]oD=ޤ]t@MngAH{FJCE';lmld{Kॉ/	ަDX;{s_ qW+:>GX5|cחq65qSǧUw]:zM7װ8W_hXhXp~g*'B%
Zu{;y12i>K( *5a^R$REa4fRfx_
{HU<%\
ep]$!,8U|fO̗QtO3m܆K_ځ؏?v}[E(dHir&`mpmX/&#9,bE#Y0Gc:LFu9y&]fEiہx0+aO!N2pØv-S8p=38#\qߋH"b^ly61XHr<Z3]+tӆ֜1\xmu4'i*oĭv"$e(m6~'UR%ir1!si5*KqG=UܫqZQww6&I62jc6=G:~}Z7s=0gY_gf 9mgjIZas<=G
[F%:4JFCh?D;/ƯXĻxA^GX_߈p	Ѥ5psK;Ѽ,7Ѣ8o\ujR%Ɵ$24>>q*;AM'XPKV`@    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$18.classTmOP~tvEAl0h2Ecu]$4O5mI
O(3̛{?	@AL)"	7pKn;DLn̈H %YcҙM68pvZͽ
sE+IfKT:Swvk2ܒ
=zp63wCJ󒡟qx١1n{5IX-׷*v܆!3)Ҋ|>
׹.kOȩ$caSYRr5Ct%*]UzV5j%0JXR
JZVZP+z\֪%	Y,0d(԰BA>7\RjAZq-9BV{!3-~JQZd)Md)聠2x+(k;N]XS/8wU&Q2T2%÷hA`w/+ML0Qgz4Q?w W1eBb[;D_k' ́iVGjvd[م>.Q<s37wO<F;1\8qـTEHёPKW_    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$24.classTmoD~w镖-%wɥ^MU#5UE	-Wl_iU𥉨G!נJ$(WK6;̳?`KE\pCGu|ϗ񅎛cqiKܫ]
zK_YZ}ð>aXbfjwzx$ͤPqiNkN^|%&8J(im1}TQ2l4^~S&^>-%ӚpZV.]f?/bbe$/lPUVq$-J-93}:ܕa֐Gi˶E/Zx&-X+9Ae(гLKiuɁ#B7'	rM9tOpA6}nY^xN^E$7p7kq2erp^
\x-Sؤxs;2U,9?'#U0!C$,8s~ΕOLtb,b(JzIWiRQ2vv3&q66ja6屪N_fl0yNiVng-oYЯQ
<͔D:*5VjIy8AlogKE	jl@Jmݠzaw0\y6pDuZGX8o@
c,^>o?m^IqߙjנF͆B1&要O)ԁ
:aVf?PK~v    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$22.classTn@6=\SJrCi$mZ{Į)JA!_FV@x(8!ѢK{vvf
@2N2J$"Lઌ\1	y	ebʐQ 0~;.HaM:zH[=Tp;:WkIU~~,	u;_"T=wZe(Hm4cX<L3b~gy3駡´d{~w7zqK(>#aIN2$lm7Ec}`T2T*ZV6m3-sjɭ&7,wڎs.AS+0pд26uO3Lkow,oEwpL39|0Y5W=:ۺ
*hpsPJ0XXQ`n1t<)s ΠűH^eriH^GqHoȲyM6TJ󨧊8O3@⸙QSU׋DS{AUa]l1LtE_!bH8e V]s)*WA'|?!pV)Ijb7B]:6h/%839~觿LR}5HtW0A2c_!?/wP,SBmKwP)#O	qQ"
t&OPK)    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$16.classTmOP~.onNATPE6]cu] 4Bȧ]G֚CW$|Qc2N`M۹<9瞞??(`I x؏G"&X &1̈xxJ0' 9Cw:c50z| I	qi:Y<бèIܑ,0M d=E:0׆e^(Wݘ
#N׵po[s~z55IC$6v;RڠI,BbH+YZQӋM)(łT)*RΫ%hI(%b*eYWʥT+UCWU3/W
S5j\M*Z%U7eYU3-U5,@yf;L -"$xS钭8KV4la:t7j<`Cz[qxN˲LiK__O%V6$9TA(-
FND^Ij^]^})SfUbo:`{5^DL\׋QڞJeEJҝrfz 5A%R;w6i=s)nj]>Aǿ`w
V IouZ6#$h$q*/c_`ߐb߉(tC!@;,PKK1    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$11.classTkoD=q4,Ai)M6oHiT-UukQDT۠J$(y]s{Ͽ~MgqYs3|/T\ŗ*qm	㪂*ͦPUǰMg=JY.w&{!2e4)j.ʑWLeTXID.&;ݤLe-ˊa$dR\w&uFhRN#T&R+t\TY>#'P|`tʥW4ݕ]qSR
3t";X;ܾz
z>bOC9W܌lb?+۶gX@7bO3?2׎e{qBx"^dāItxnhqGD"
C6\ᱣpscVjkn_3ǰi׺hN-rΠm,qRUyc෋P"ISYUa0ĝsqtvgRgc])EYP6ݺҚ$>NfaȰ4Q7jA	M5it}WN"4)F[y-G$V%IϢy'G;0ޣwl曧F%
6ͮh<v M>~1Op:k-`Op؂BkF!@k/⃝P6zoТTa=F6KHE3Oqzuj*aPK_    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$27.classT]oD=IkҰRҦt7)
TOwmld{K7xBx&?ަDXs=3sp<.qEC5񁆫P
-zc\kㆆpz4XocIg}Š);YvOIK*i/y4Mz~dԈjaIZiIƓ0
^@+e⬑p1VuqKGխo	tRTY>GŨMxAteT4S=[_3R`0</{#c0t+8 䮔-6Bs;
CCˎ㒇q(
#}0y$$Q4w,n;v	۴@$rC[
r!mtrx<3؎|Æpsco1lU|`M˧Es'neMxv2$U7~T0?)O4UU9g{g\{fZgC)IYwH5˽Қ$1IVdXz^5_͡3vp,>+g~jsix;XDi_'i]y4!h[}zVkjT`
s`ӄMc,-\8^vGX_?E}찍6sGXYAw>`9x5}6N/~%їO]e6i2PK@3;    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$14.classTNP.uvp
"`v[M	ۺ@2!"Jw5[k9LW?@$|(Đ=sww==?~~@Œ!чqp?"&P "	3"a6I"RO,mP٩sevk[^4Qmvd
iiix~K-ߗ)o35Z0
ix"E|aLM횼jFmwZt\D_mxXS0n0dI<ZnrsKQϕ!1$Yg+%%WъB^U!YKB\WdbbaYrjVͪ\AΓB2eE)dL>_T^UꕬR(h12xEG!b A5ݣ7d}J!f-7
D=_uu2' a,3TWQO6uɦ[M&I`黖SA%kAIMnHn,vK+[%`]\^QeUzv.}NQj>opE+2|v][JmS|4wCV43N҂&pd-NSWLg9A)B_'(n "\;GNqmNz!}(	_ aQ	qHI.!<
0PKA#D    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$4.classT[OP
^.,t{V	-Ј!^J춦*_}"?eV`XLgΜ9o ̋8Qc"0**
⺈)bヘȔDl*Q0-0p7CPp&g8|#oMs/n7~Md-y3%i/}!s_</^uxa(O/	y˖u1Q7y#(\pIuw3̽^{Ķ(	*O_DMqA'I?ǒڮsbV*99%jhb]W]E_4mnLfMsZ4P@<ê/ئcUo5MtM۲M,ǱuڂZ)eE^t][QV-FYpǴ	0%`Iiw42q(:<v^pc/E&*}$jQ:zC64h<D^[t&4jՔ)|0Afdlc@)qпxݏ_Gʍc*f瞟Fd=<:gNyA/#zbzm<+ߢs8`:A.d{(|9\e$S#'02a22kTf+;(ҐfvqH ?$"җHׇ˸Bk+0CC$X	PKy    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$12.classTmoD~6Iswᠥ@M]r~S#jOo`BKQ|G!נJ$(ݝgYop2pCk3
7UZF
_n34h跰aq>fX0,P1\jozx4TiiyD^(GA1ͳYZs]ezάހezjUV!*7BV[cr2Sɸp5VuqGYQJl<8=PbVkx'lKHWC˷3܃ГJiBrOaYIF2L,\aðPr~`8ǁzfXܐgY@z"#6cͥ;DA8\%ۉ-k\Ӌb[
<t'DpOl3
"i^.aZt
bD,7EI"9F,I:0ܝZp;w i
_2gYǺhW\79Cg'UNҪR&[s_LdWiZ7!]s36z<UQQ~_UݯqVSRv$'i>e>?VF>ؚ
`{5EkT˳H3`<k5R%9j7Ӭ.y8Ahk'WA6"
j	`tVF륍c_I`xFXrjz:kc~X</LpvТ=p{˻z0讜ОЦ<ƻo]u	ˬDU#"}N>u:9IC#ZPK&"1    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$8.classVrD6qb$
I@
8WJ,_P'͌;LgVk׌#ed4x ixJ	$L={.9{V tleqiX`)a,gjk2(HCbZzX3Y| O4>ϢqExƗi	Fwn`8M ot}$^B `G=QqJ"U"8TrBgGD",}*|c*@\Ի1^?
v6岗x}p$ښ{Aw6D<Ұs;\]a8<u?mA(]M*3\WTcUۺ2*m55`#H}z+*Tw9u!hyBj	jBUXrUjL@xMF'qpMަӸtn<KB]uMk+*3CLըvSn̓JQSCQ]nI<UI<kTFP<w<z/ɦ[ŢXICsx9jeEu[UjZVzh*kY5Q-Zg5C5۰YY+FM^]V5h+]5XuV6U|ͮںnT
,ѯk+fssh`#͸'ktyO%Lܺs}!czEߏ'uo$B3
+UYפt:ā M\EJ	^//ix:]OJW*뿐ҷWt*DؠGeq=	ԙu×OC>h;<
ou^'ًۘ-߰lCV1Iݕ# WI|(ф)|$UEƘ|G0:pk2511HBr>03	J%wg'ֳ[?Nǖs	y
 cX~7~A##5x4^arceט<tkeufd{ycSF`3Da1%DkPKk    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$10.classVQsE&	y$D@ѠQ.$ffgwg
"{wBQFg]n
>C|BD
ݙoz{Ͽ~{j%̕qq̗PbW˨A`e
Jp*(`+^/C惠/*Xµ3^W%4_u(
d?4[]W݁ЩQ'v4[$Fl
3F7UntRKSTm̤#׭T!?
_襰UPYKRmhk%v:.,~(5ԃdnQVq748<	_x:׹+70)
_S빾>#a@|+	<ͥ2crD:b5uC
U.\J=*ƹT2eܣ<|ͺ>'pSkZ
Tx^׌CsΔc#=P#.2ҢMQF\z=W=P+Øʥ=_I{N/cTA,FAXuքs5E߸q]DF}d5q׻ÊUej(67jIԷQ3ͨe3p6
זN}5Hxl]A[d~(lxuHM*Ѧe˸MpP*:Xb5o..A}Z>{%%,Ф@F!JqG1h)2h,Yok;˭7-ĵ#)z,ZTf4i:xEhPŵar$C0rfAwqM9gkoϓ}S:Ko  ùyϸh{bcWA~G=3>KwEI{?`l}SS8Vx`D1zgw|?{}jA"}w';;\_ i1_'{[0aKs9W{ӫ;8g6νT5/ #Q"wpX}jg0l?ao,~-PKJL3    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$1.classTmOP~.:"
 S6hLD15uQPI(iuMys_(aE1)7q[4ěfD^<̉H#+ྀyGFsm79hxih%܎
ik~В~s;\Ѯ2WNA!b/zA_qL-8|ݍ%L0;uL={&Z<r.ca"$kI,TRu	y,HX8GUZTєVQVEKQ-ԌrfECV̢YVͲV5Mt`e˰0g,KHP2^	pwtfUix`0t\K}r?M0vYEQsT_enP1>jqImk[Q@%ՋEOu=
<M5H"}# uMLiCG`ipXG
c?s(fN0sc>xNk~ eCmƆ!O),qxyML/	 Om 70Is@u0RKPK5{  :  PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$30.classTnD=ޤٰ٦%R

4z343E4 (rahc#)OSQH<b
A],=w~`=.ꡃ={"ivU\k=,baq1n>0qü)s;n?q3Kyeƚo/QY?}U١mlU{:
g21ύ^yT6.)wU0sj"ݱ̓>qC"/v=
MNf[y'0BEK!iD	K4*ȧ$q?85s&#.H#<$DFj$\aei.QQdDHSH0.cTLD	FɐQad#SF
y!MRC0T`d̥([Dk-S!F	UB+RY@8#ʈC'#r`Íﴋ} }жZFWn^5F<o$kbj{FɁ<,m]L8I6M@[g iޟdk*Qq8՗~jzN\NFz<U4vd+hU_~MEOg;}q;sť<ܣzW\1]ë^h';?c+pbzݽStc	x
 tl>ƙ;'>1^qunVZ@Wt:˝?n7pɵw0PKt!+    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$9.classTkoX=-u1.-icBʵcQDuR{e;<|H ~Ԋq(B5Xs3 8PqW\U1+*~ǵ9b9,Ue7TĭjjPT0W&F1Ì%Ù$ۣ]?v$ŹJtZn4|f4~GE9^TeWЃ(d)a8dTӟx=2PwQ0(\GEmCO2"4fEEWagǶ;2~`Y96a:CCisz^n>w][x]	]w(0448ϐ\FE
m˴=CxkؾN۷LӲln[#hCbNG8k١eavA6<p:up{60ܚ0
\t4xմGq2"u$2QQHk
2gh?J(eQ,6NNQuTyߕ}Yw<KVs0Jz%Lan ֬>1&O,IKI򺟏~Joi$fZʁPbeF&</}.mS?iT`*S+`hpJ1_qPuaZ>p6Q?u٭Pse#ԧ{hh8TfY5:ke
pj*
0kPK3    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$3.classU[oE6qb5MZ
)\.xmN*TB]]#g7ZoJo \^ ~:VNHҕv3͙3g 
ؒqiX`Q(2XNc%(h2`2FQ1yHF7cӸ'iI;-	m	)'h
	/6v\n$PH8{#r l`=ދ"ãy+NU090!{=_?_H`/DC`gI'àF)kx[r"H7]Qz@ihPBvny./smpf1ո&ZKUxّ013<2Όi*k{VRt.
MEQXKc]w%jh-W̶tԸmm0]m*liR 6oY&V3	3Ǹi*[=VS"A;VGd]x[USˢYtYSapMWTbLaFUelVJ%YNfZղS)%G4 ɘê
sj:>ҸE
Yl5ܓ:dQok(u彞Y9c;Ay=ՒrG!}q=_Ԏ	H ܹBa02<i
H׼xiI!}yHCGtZ:~DAgOs=u/LJgɧZ܋R8<𠴰Yz"F駮	׉NDbDHxDRxL"=oi`1c,!tcGa&{m.~<gzkh1WN}o#a1WUN|C->py Ӎ姸BK}J~"?/_)glsIX| PK?c  2  PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$2.classTNP nDETT䢻nobL@H/J춤킼Cc"&2әo9g; "0-ஈL{#/bDbvsr^xME"Ja>e,^2Q3m!uwy퐦KۋI/6-F?$pe
7Ze?qbS'KyzImpb7¤KҨE[yd僷Fw$ۛ<},KU$KNhmU9EEQJZ7laeꆪRUfTHPITUCm6M]˶e([5Ww,m5תغSk6*ZZި5"
Q$``g83ý42?s<v;^p>cE}$tťW͞AGO5'Hx&qTSōLWKo6OO7[5c@^PQE'OS#FN^S12;O#2<sϏvSzImhS
Ҡ		ݥzi3m<+u85Ɩi09L:KXa<1r[ ./@CZ:?PS QɇDzt۴Q#h3_PKN    PK  D:U            I   META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$19.classT[OP΂KEDQ#݅Ŷ1Ј!"O{\jִ]/B4L|Pc"&3\3gf|%gqMu%\q7qSn0frᬀ9q'ge"*TQ=`(W6ή_n䩿%Hp?N/٣l'y;EO.wlG:/~')q~[~fer ǽ$^C,]"BzZ7
qFUmpOAKNi΃QN%܅PiMMjZ˰
0

UW{-ը#@&	
ESmaVlӴl0
nze6kuj5۲[깞K-Tϳ
:Ý>S'``l#AU8Yf'NOSNOgq鬢(^+(BOR!Cm%aQW~ԑsaYl5;<;h>F(LGII"R;Q;<!G#9d1)s vtY٠4JC+M0N2ZO
yC} .`Pu]:	}`_".,C307~ C+ VǇpzbF}j<7b?0TX%rU Г˸B MW`H$Z	PK    PK
    D:U            1   META-INF/versions/9/org/bouncycastle/crypto/util/PK  D:U            K   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$Cloner.class1
@EhL4Q`.Vv* XxuYBdF,<7)?\o EhGH0;R:hMʎE)uJ2aʳlҺWtadM9=%̾a
)4B6mu)l<I!@h
M5Ъwk0~PK_[   B  PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$2.classQMK@}ۦz4(T`kAh<&RS$JOT0fw@&2X2P0²kC_!]*s\,qyx!Y/@
:2خ7HѭvH5ʿ02=')v<%Qm92Šյش``<KDvU*N[{Ku*E<bOc{aBgR;6{?~(Mh)2)ۡ(f*cJh	,(-"'/HƨRBd9W
i
|PK]F_\    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$4.classQ]KA=nwZ)%V:l+L쎁]z(1{Ν	@I$0e i33軞CPl1k2
O̓	I9RАkڲ+cn4=Z!ٔuouQ2mt[q$_pOmicXގdByUE8]m<V!;x[5w?4w2u=>\-852)[(&J}{JhO!^G,"]=C#vC5QId(Ƒ%?K#,	]ГoPK.^    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$7.classQMK@}ۦ<U""h(z<&S$JOqagfμ<êft
0cNǂE/|uȐ.ZMv8Cތ^N@H
x-^ǥ=ˑp{[nػW:=j%u_uU2mw8n #_x\ʎe:&*;LdΎv
8FQ}c<"1
Y-<rW1C0[H?JfO{rhTvK#$EkLDl6/`~n n6ߐ#Ѥ45-ax.eOPK1_    PK  D:U            G   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$11.classQJ@=GmE}WAkbE2I45H2W*(k?JMuXԁ=`)$1#B:t,Xf\}xaHe3d[KI>7{RؒcX26qJGU+VjзypӴ}Τg4W=ձ)$n$XsDYcؚD	_Ủܯ{f!7z1.>C|gR;agp&qG돑6MEF1Y=PB E`|9U!T35Eb9dy-PKsz`    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$9.classQMK@}~DhkV*.""h(T=T
/iԔ+VSAA<i-A\ؙǼ73ϯ j!yfM̙X0Ȑ>b!YQmyR\Z"vZ>!7_Izj*I:wVP%0Xu\Q\u\vypS*dB[6lC)NɄ~v;2V=G}\JT|'EȐ6}GvU+\ͰhlM;=ru$iTvoХk5|4 {@6M_HDdFs
 _ʙL#K>yy4KiPK`    PK  D:U            D   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory.classYtUBb٩АiK)kPֲUDLRҤNbQ".*9V9_|_|x_|wgnd$y/߿ͽsΤ; !`&#10	Z9ߎx?P2扛'<</O<yaNc2N2T'Cqx܍SxxRSn2aXȫ㌌gqs\y^>gePk$/xH^q!`$xH^C&C\j#y[EuFwF<]p"T5	JGb8Iմ(׷F%LDL<'aAd<FBzIaIu[GvGzG55QnIXLi1O*F#LBGLʿ1S*;vI`Fվ> b<`u7VC1js*Pj1AR0լcU3ntg$z\!kys<>>og,-\AWq%lJZ	XW*Eն8_SG[$Iiu|i*؆j։)˗a񡂏1rY²HN
ӵ+NWqԾ0{6_mj0o4ڤ[e|s\/񕄀S	}YU*~HW
vkPp
)*W,SXAb2
2M
bfb
q\vvECEC	n|?=!􅛈$c=jt;.UGY?D߬V;6ڀnmKO|_A_G켉~YxH߶H
m<OWF'ct9/&4DJX|?ǘܟ%.Ӌ( !im.}'wL8f5ݸ8|&?e#pu}ܻv$;$rOO{{1Jtt8C>eT>Kvˌ
#ۮ+VyrkWm	8`WCXݗ}]yQ~LA^*?B{ӭ53u3<0,G+3BLġ&D}54F2
"]ʱie~$FuhG'th"FgbbNMlB&CM~'&e7?uhrɟk2Fr7>$nκ9571WMsrO>5Jǌ1I#XH7עCubH&`/j^#ZҗB#oW=@zФIoz&}[H_e[5&}בޤoz&}HǟB-бEXJy=BdZq
a\fZ$;ۏh1iRR
CBOͥ',:W"b
"DVDUFPK'G    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$6.classQ]KA=nwZ؋fV:l+L쎁]z(1{Ν	@I$0c Ys,2軞CPl3k2MO޵̓	I9RДkڲ'co4CU-Vl^7ύ(֭E8/CO\]Ɏ4L0lSD2:ޯGC|SCD|+yȐ>-v;hp#)LWm#N+FI(2 Zy=SHGh}aQTdqdϓcttBPK]
^    PK  D:U            G   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$10.classQMK@}~DjkVڊ"*VBCdĔ+VSAA<i-A\}{;
`0cYs&L,2=DfHUG0䛞;GW偰JTk9'yۡŃVֱP0dZpܰVAk?}z=VuL,`bމdBuz;2V=֏ܙ"v0|ҵ.hn;8k6֑}S;ZAF3$ekTe D	|:og*@""^`\o f*j2<$
Ɋ%1:iBҙOPK]y8_    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$3.classQMK@}ۦzhzZ-
U$]bJܕd#_驠 Q4ՃbX}{;`RQ0s:һCTn3hu'Ytm²}B2N-t;(5esPtލPʿ0-oxnXAokZ#2{ՕXB(N,ju{(:,盟'B[aCIo	<Qм?ip*4Z95'hltl")UOǠI>{iɘ}Dr>w_UL"GQC,Y0
Ó&t!mPK۟^    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$1.classQMK@}
=UzւA)xLҥ]I6B

%NR=ua>13`@1
VXg=#TgH3仞gэÃK	ɹoRܕrd$ܱkoސY!{!//N*k#Φgח'=	sYD&zT1&l1"D/KuT|;yPcZΈdj
3P=mVEMh
nPd3	%z(-!'hW/&Hc5IE)Q JV$,	гPKr[    PK  D:U            G   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$12.classQ]KA=nwfГ)EV:l+ی쎁]z(j~sg}}{|$3KBüK}Ox!V(5'Ee[|)vTh5mBs	=%c塪+`Hd?pxpr]΢gԅ9W7c`5
SIH&4['g戲ư5Wo~i2OAͷѓLyiw*Pм?;Ç66S?ZFFS4eDi@	m=)?JE!b!DMfG"Y8G'tEOPKoX`    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$5.classQ]KA=nwZD	%V:6]z(1{Ν	@I$0a ISf2ۮp.CPl2ī2uWe{[W=)vPKm2Nױq7JnR!ِ
(w:֭E8'WO-iaXފdq9s~OeܯzV!Ym(FiId4|}RlbqZ95kd46RDQLz`*C>{i~vՌEMƑG4Y8G'tNOPK_    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$8.classQMK@}ۯhmߊC[ED*VBUZKLl+=ĳ?JzRą}{3;
`&Ҙ2P0s2{>CXj2%ru_Ν#+	ɺJXWՑn׵#{HWJ%0
	]Q\]f~c*w&jX``<JDqr=36F1:k֩"v!of`<GO{RHѺ>AFFqV3rZL^J]C2&[/Hܬ!Cr&"ȑO!Ovn'CBPK2 _    PK  D:U            K   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$4.classRkA}\sVoFDBň7WvZ?IĹڒ7s;3ٝW Oq+X͢*|,cÊ[7pW)KX9Daa:){Ӊ!,	r\]F[g1ZNWmԫ찧[ы9R5[_LYՑifprEI:V?)o^Fl1M2+ն;vx&]eZ*FEڥVG9}ad8m]'} 1 @=Fa/ɌJXGH4(ۉs&?#!OY>W޹4Ocgz==_?8;/i?8Gqgls7u\j1j3OЇ3kwLTpМ\
nbE-q
PK/J  c  PK  D:U            =   META-INF/versions/9/org/bouncycastle/crypto/BlockCipher.classuJ1OhZt:+W]@Qat2dR>!rn{nn?>\$ACE3tOT4TϽpJg#˻#CMkJQi?j1ᩊt
"ƊDcJf
f GNҗx=S'6,~_)2e	c)lSӉL|^UL-ѧ,Ͻ55ZQ!]%UelOA[h5v$ͰG PKeg7    PK  D:U            H   META-INF/versions/9/org/bouncycastle/crypto/RuntimeCryptoException.classmKK1cƎ}|VhV7+31iRbFo fqnrw8%2ЍKO1 $ƚpCh	{҄X}W-sd^s8?W)Ji*ҷ&B
f~
n*g'1EIa|!rWYV%Z:!N~wC4C4@5א'l
_{c@#3&_l1yNVPK^/   R  PK  D:U            K   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$2.classKK1kV[_A*RѓeQ+wa&%<	 ~(qD<2M2z p:hhX.P;WZr{I>	4Jm}#U9 ,pɵBi'#ohjzdJҽ5#^;+ɭ+UeJ6GxsK-3NoL?FU:s4&esZE0u%C~njdtU3&MOPb.`o("o,MQn͊u4=l`m+WYҢ7PK$)    PK  D:U            A   META-INF/versions/9/org/bouncycastle/crypto/CryptoException.classuAO@RZT@I4-<a=/nj
vIiU& qv!`^fv~od> aBǁ,PAts'^X<{	1a&Z۾eAq3`a١p>IOm9iP|OPD]鱐GA˂CKā;i}oL+fn2*a:"CFΣSΔAդ[:;7e+
V)p:d#:VފQ/*91SL6%\O{C{][%vVgPKm(PGA  %  PK  D:U            L   META-INF/versions/9/org/bouncycastle/crypto/InvalidCipherTextException.classuPJ@MDHlMŀI{.J
1cy
x|(PD̷3~}|&:\
6vl2X7B=145PHXD<QJ~B?
e⏊\Z?x76;#U1zу"R
wgPB/hÂbTyG"_q
_[
ju>&&ܠ[7
MBaBnmwc
*8LbW0WdҦPK;P_    PK  D:U            K   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$1.classQMK@}ۤj뷈J
O Z<&%nIwe7)_驠GA\y3vf>> `GV|r\aaL*38PJ%nQ$}%qb25[a8+xfd:	!z)יR9;3yNu_D,mjBs mE6Pa؞&")>M&f^)%L'	^OBPphVwF@@.mM(Pt'k`dI6(5VQzy݄ł`	5Buk$>(7PK#	E    PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/SecureRandomProvider.classm
0ﯵU'Wgb&'w'AO?!6C7xc"M1#L4{z*KѲClJ{;⣩-/d<ak5(r[!,l8+(!	#$PK~-      PK
    D:U            7   META-INF/versions/9/org/bouncycastle/crypto/generators/PK  D:U            O   META-INF/versions/9/org/bouncycastle/crypto/generators/MGF1BytesGenerator.classTKsEF5_q[CÉbMCǎXk-uֻ*(G.B)ŁPcrߠ
_zfgz; FCζvð=ἆAh
^^b,v1rNEa&cxh!2ZY׫VݺSjL?y5j
w3>eJka`+dL~N^v˜Ȭ*U<a~
f`΢<bvtsά5ڪ<jv*>4E
+73h|.hH0Į|P5A0E[J|fS3wvݼmGѧaZ8~D~ꥂX6j`ۼjڗj};AC)FAM*x8&;szPj/Uz=#p]0m[ǬY1yXpM#eM,,߫~auÙ2M]7ڤ''KSoECћ#[<˩jhw1|Jr*-qZIq-ewrL[(|v
~7H癍[kmϺ{Ep<C)$D2{*G'
${V'n"nCb؄|'vA& {mM|(Od!/]@}M4Q:a8MqX'&w|"sHlnJcH!?Qh+mGtY?ISD
hٝdyFDI9:&kdiTCRDLPpDF\p%)[6:%\IvWk>QY_yLAȑlNʔ(uQK'ÏbTpD"5udqBE%ac)*k<&op;nM4#o!v5BC!3PKؗ  7  PK  D:U            C   META-INF/versions/9/org/bouncycastle/crypto/StreamBlockCipher.classR]OP~ڮlÂ
uEKƋ&$Cb@
]9JiԸ{~/4QI4{?}OD%3y㯇 nj`fQ074L1Y
s,:;<biQ
NWFk
?tw]Ogs)*p34?Z<ZwZ>!m.[<{^^2gUΙqGA'LC.v%%L̐[t񍇯\^3:'~ZG.IؚGK'TBcJ#&b4&zA'Vͣrw}j3Zθ	N	 3U1V+wM,VS6;A[ӌ(SKv^9Mc;\-g>KAL微D7n'>J,X:_0$B}Me~R,mV"
F>} L6	mduuLuS57(SשSW"E\GIM%am	0
P$d`V
pwUԩP1cE\%@ERLK PKڑzg  .  PK  D:U            @   META-INF/versions/9/org/bouncycastle/crypto/ExtendedDigest.class;o>SnvvNv.FʒTԼFf
MOFҢT̜TFa׊ԼĲDFtҼ⒜Tʂ|}TՌ 9yIY@!9\z!z\FFV
H21 PKa      PK  D:U            F   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicePurpose.class[OAme/E@TEMtK0_Ť6mܗ~g̙93gwNBK1u	32

	>f[U	)	Kit^UߪpѬDJN|Z.5#Rn$f4Oec<n Y%^!#^ǎUzL:ɥҁϤt>/lSL2WॵSN+}Uy'Zh	X
lK6>juJFP,("Uw?
f'HXDvZDC}o2VWX-:iJ45"R\3gůMR띣X7wfHUwY
A_dF~(cG#*}>&L3	0Y`d	yDrQ͎C׎[:4m:N&kV+zׇj4Jb+e>&LMΛ\0hr3ZG+2V@#'GB_	xHcV#roQyضn[XIY(.LVcR@SR^Dp&'lh=t'77nܸq3,q3ͨ7ݸ8=O/ݤݔGEڥKۺpiMwtt!Mt PKpv1A:|.R;
;CA|i
8PKœ    PK  D:U            5   META-INF/versions/9/org/bouncycastle/crypto/Mac.classuj0EGc+}?(teSZ*i00dӕEA,E?U:6%	h^̠߯o 'p?І#]dJ&fYދl+54e	4?YUg+6Ng$	`Ji(alP/|I,>[dcjQ:~/zpNzQTcJ$K|R7,g
(uaC~[6&^"8bє%w")kx2e\b/>PKLq;.5(B࠮*
6Y-^"v*gq1iZ!jkpPK}E  
  PK  D:U            G   META-INF/versions/9/org/bouncycastle/crypto/OutputLengthException.classuO=O1}9]{-ԅNdb2`hŞK#HNAg1!1ҳl?_; 8q<C?@ ҍhR<7%k*`]u5}֙RVeL1hsg!R06
Y.ڍtp,pC%KjJ:lI!B~5S'c=e].	zPKxx   "  PK  D:U            5   META-INF/versions/9/org/bouncycastle/crypto/Xof.classu
0/ZZE3N\4%$MľC8q
%Ŝ"XPip络  X	Z~}`m1;Y,47+FP8?2RS]pӰtDAQ#GPK\@/ɦ      PK  D:U            S   META-INF/versions/9/org/bouncycastle/crypto/CryptoServiceConstraintsException.classON@}k *tP (Ƃ*JzYhgQ!Q(Hs7s ϰa:vNtjF7k]฾9{Vi-+
OjKKONYE_RX;K68oVyO1®µ|vcMvhNQ]qtK%qD~E*dǂ': cL~ PK/   )  PK  D:U            >   META-INF/versions/9/org/bouncycastle/crypto/StreamCipher.classuOJ1ӎV?@\ tVBpIS2ɐd?Thi 9~}-\p9Hu2ڈ>h̄[Vfw{᎗Qʠ)
À0:)t<l2rD?ڙ|H%y3U
!=I(E=R˽d=4yq1޵ɶ*o=((jCZzd]	u첿O0_;9pP3;İOtWz[#bե?PK'    PK  D:U            K   META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$3.classQ]K+1=kjWC[E'ŗpbt;5d[/|RP(qv*(H&sfrL6E0QB<xd(Z:c'TI?h}vVɞR@i:$P>TWmg3(X*L׆t7զ_'EBr)Xi7R
al?J.Ls((1yMcm:%1a|C%՚l3Α
%w9:d_9JZFϱC`RI1BVORc{,n1?m6 ޲h&QFmctJPK4<Xk  n  PK  D:U            E   META-INF/versions/9/org/bouncycastle/crypto/DataLengthException.classu?O0OBCe@BL1P+ve~,J| >T9Bnx{{:s-t؏#DhIh}T^r"/9fU0E:NbVN+EL៮WR-fb]in+#RRҭަ	xPz	`&/T<
hza5as;)a4~Lgv PK׮   `  PK
    D:U            )   META-INF/versions/9/org/bouncycastle/jce/PK
    D:U            4   META-INF/versions/9/org/bouncycastle/jce/interfaces/PK  D:U            E   META-INF/versions/9/org/bouncycastle/jce/interfaces/ECPublicKey.classjPEĘgS
YueMZa	iK!E?>\.΁9~  6x4Ta:_|VuIՖ҉m\m݁Uxҽ]֢PmRdKn,ayEٳZhW!.l&Uav_У=ڨu:H#!7@ߥ0Dtn0>PK甆<   	  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/jce/interfaces/ECKey.classm1
@DhTneebl>ߐP)x3	`I(0ŝWqb,a\ikX[W*Y	$;4mZò/*%mJ}ׄߛۋf=*]ꔕnD E!aOz0 PK*      PK  D:U            F   META-INF/versions/9/org/bouncycastle/jce/interfaces/ECPrivateKey.classM@_e2#.+w((xtĘ6|0AO-
|B~AF?XJ3k֩gnJi^ل	|l<o?o<fE+r5K[ܟҜWov;Ƭ=aРQg}%B'ZQg;PK       PK
    D:U            2   META-INF/versions/9/org/bouncycastle/jce/provider/PK  D:U            ]   META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService.classRkA&dƴV[Skkm(]Q<)."&$av7ɃE௃x,s77>*-TMl2c:`h#~d8Pe U21.Cea5鶟E/B=*Vj@ޫYmjńMH
\?J`8	7PI^rɜA|K -QDg^}<@8uˁs&n8þ770$gi>
?33KN7F<ݠ^?CT4*Z"FQY\Zo
m9
-F(S^<E<E
e4`ϰW:Q6)3-y4$1-.@P\jmP-"'ŋXˑ9Ċ_tKM٦jWPKD    PK  D:U            N   META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProvider$1.classR[KAK]FEEPRX	E86(Џ.Cbsf7,@D9S60c`@aHXeخm5@>=VV=:^jKc T?`-'@!Qs[!SJ7MCH\!_*׻v϶[fWpn8e=Vq=g-i4aR×^dH*%tͱ=Oxe2,G'x߷Zhr_i0pn͹j+DpDX66Fh`:FUCĬU^{"z I^$Hcb`Fg*`os3
tOiG&J$	]9F6D,
PKdr    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration.classW{xWdlI yޛl
-R7ْ5G:;	Z[km-JkѶbQREm}_"~{}{ιwg. 8()x1ÚI
Qn
#%p"-b㓇Dy<}7_tAovK>"'1;UoēN|w!)'g||V<<'y|/xQK-b'	xY+"VqU.o^}ƛ?C'^oxSgumwMJZ׌aoǵTJK&3̶vsA"f[ݿs`Z4"1Ey$U1r$<*19Z]IERd ѥ*`LS4/ʺO1xz۟L'aEN1{@Q)
M.Pu.$Ίr:f\ѾV-+:h1Gi}H%Ysbް9kHD3ȧr,G[k<H36h	Pn'#*jO:ޯ;>:uJ52s,n3X6d )3	1CUT5ņ2C|VC2nj1-9UA#iItJ¾""WEdԒ
#!T[SٯM>sɴ4M~MzrH?دEӺ̥EI	h(K[$ta*Sdm>mN$Æ"A*bXןbd
	$1	~$c#aa LJx%Laj\{7xʱ5c%lBua΅YBc>=	#xAИHr"28g&Ot3?V2,/ۛz9(X."/ss	n3Y	✀$?p^/qQ$SJA\.˴Zai;Zb~#᷸v=e9-d!w8'ى|($FE/{-~1CI[]7=z;Qykl'w	9MQNj4鵘rF#|E޶{r)r0Mk75\s]Oȩ8)W$0|4ꆕF**Nܛ:CW!z^JS=yQkn3ŋ)]]ƀCj0<Cyft1`(b>/$aU5]j)CUazO])HPT|7vv3D^@a55r7!TזX$(M
sE63QٖLbƽ?IϞ?[Ӊx2c>/jz^M^q]̈́;{HyB"LɦmiӐIKxe.vä./REIH=C)`S(@nugPW0mb45(,,р6,A)^KMFRC\{RU9YG<=w:
ps9Q︀ַG5^=kFp5eeɪlP?K8stj0m5ZE%&k{yb
\Le)
mcX4NSb.Zb-}eq{^n!(1!xC6TTa-+z6:3~PttS\8KhHH3xxf_BǡQ=xCTb'<<ʪ8kl>dK[gZ<,#/˨Gt^SpŊ9UeQ.gT	s9E^2
N%<](Dh).rp3
LN˨"$g>kKt\N/(A9}^O82GGC{Zk)Qh?sګ+3N>}F$nm,VO`(Z}7AVI8Y}<&ݚ ߦuc-YB\ ~m`WW/T
hb Vr:Lh[_JtIf<jr;	͵˗(>zy@v2(Nf<p:'n4EfV"3'ͤLK(MaCkrwl{TkQ9jGB{-GnsԒMw
GH3`!e1348JPKC5	    PK  D:U            L   META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProvider.class[	`[ўYo-+9M.ٱb'NBIdYXIQ(
&PYZJ	UrR-=[{%[mHޛٙݷ_ &`U٫?=wơuCe~Nm
vc5ae;ǈ`QN)ާq<]%ZYp<w9|pE/x	K9xq>9^CWq5x녠q9&?x3ǽosr8ฏ{fMxޝ
C9xQA=Q>2|DGMp2>
>R'Mc6|V?'JEx)_*	᳂7AμLkGQo )J[&إwo4yGwMpμ&8Kg>_	%O
?	.ҙ	C|`[<|B&U0p>%?E/T/e@sY`
TA88
$
3}GU!`6X>SMYHE6^`Nȅb$AMVX	dS%l*MlY0A|rvg8r66YgŜ-䬄3g8+嬌Ŝ-ᬜ-l9g'p9[Il5gk8sVJΜUqVY
g.rVYg5pYg8ssᬙml#g8kl3g'sv
grVξ6|sq:9s.us,YE8r㬇lg9NSyk}^Gdw8h~`vZFZ!aJ6'VGo-r"B?5m^"Ԅ47*{xG(y
@&Ɔ*Wz؀.鰵z>o4l|m>v۵
nwؚ!ٞ7Ib~E
Q-"4qI{*7ptvaR$e;.GkQkvU;Fnc[WSMee'OzÖjׄ^=bɅ	͒2V^@UyOs_/	c=U
mƦS?bg
P&|j
=mZ	Sxb^_(y큎P&̟?i.Um:Z+/ؠ"1jH9>
~:M-
2ѿiVM]4&oۭQPضM$
6uFF"=u0ais<7!@V*)ʓ~`i(mjׂ1V?J?-aQ3l:٣)#~@2$e:`e£Rf׆1l뉉nΐWvؖptzҬCP`HS%,|=4wdsO3(BZĿӤą|Q[$I7UiJaW@Ӣ9-BXFӔ5Y3H𕾀P<O ]c9-ۣ*f̸}a1R_lS9fv..-QQφ8LICJh͸xEvJ%'h+E&Cxi"u+=
?H[^,؅s
7фHr9NiP  8G(Ec#,Ƿ7֪b}s(A'PHG&']d礵LJJH)_WioBX4B`ZSnVSF#LYE|f=nܨ;Mhn5RMO?`+Ah,1"'?XQw]D3PAw]XjqQ;Np7:*]5tRGcCVDB]ZpYt9P@vZ@%Ԍt<5Ҹ,ה%aauHP*fk@{8ּ34lC+nX'^
wcqRǖT8IaRGkCjhD4m]>tz
ȉ5ij
BPIE540R\R-ѩDۏ'Ȳ'v<7ne\?J}O v]R1ѱ{&!dWj]`fbvDg_"^0MXSva){f}v9B^E(Z3ͮfv%]Ů\z#3v#<ŏ񽤙H
yBERW#Ao"Tp^lRuo
#}p'j4ո&PwG܌dffsU<~*63X96.+_*.V+f aFm=3;{Io~t@rۧwjPl g9m6 tP v:uNO} !V숀<z ~I3rހ/U {)
p&A݌>3=ك3o~"pkpqG9{Xԙ8_#Q5_cg)hf8{Ba6'Sf4{~#rd=s
{^`/*%~~^1f3nB~of%l>nE3{A'nIapGiɲ2oL5hg7LgQVR#ۭKlshGTQ[YUDtSJtvsJ8-M*-
o
v.^Trawz؊ߠv,/PiSl4tx Yx/%^C8rMOM,T7zid]-*T:*@R]N4.MxnG|'5n`WKxQom2=Ng("a-T
0y}]੧e4KlhNgno
:Z}1l,s#xꤷӼ~2B#xIiYk٢R@}1.aGc}S%NtI{z8bxdNC'g
B.!!Z:e:q˓kJk5+Q_Y&K\1䬯>K%h#^,lM%!jxQR."X@!<]?( f;@8x[| F]dٲVT8jE'Kfvz?
Rqȴm_

L`7Vh~sft?(CBv.*_H]~" >lb?-Z;"zW!y9V!+,?.Z:e[9)5iW/":Q@َXf|#z9)@s ݵhA'ucO3	`D7>n
E
R{a{VM2f
!!~O5QagnI	ړr&>: M'g~o"Э#z(]czܨ?8ұ%@Y^v8H-yPhV7&pqP?kSdzOm>[c`"G8})U!ORh'Ee\:,ʇ(\i,%iRua&Nk(PS\$	叒8K<Y
txvSBT.xm(IKCS]Zí.jϸ\7!oi9LDCNRJdhgArOk`4̹SH,XBK1R1*#'I
c^Ov|BrWO׼O
4*cR.i4c-Kh$OkwڛM{F~<?Hp*:1El|bJ
/t%4hb9d̠Π4orz+iV;(ec$ZL=ÐRHLylif5}ДjG|NJOѸ^+<"RB"j_2|
{Kߡi7:R4h](%~uU,Ilh9zc")w4O>2 @CsF>J@"I\ӻ q2DO?{6ΑI?wQR;!ب_hKs勒'_j%O&~,Y\J	(FcU3Cf/dx ;q= n3LpiaX9v[^01Vul/yq" Ve	$1&Ibr/ LSi`F:Cq:1KsԹ:1O=^'tªDP'JTN,RKuL]KrX.Ӊ	JzR/?I]5:aW+t/K	;:FIZ.uNԪu:Q6BI
"z!T8s,{`)lǡ0<	)8^ErKpL(|xބwx>sxTC
x.RHWGXuO M}j9iO4"q-d 2VM/ȷO/;d/?*}.I`QOhܕ1p+uEfA!hdu$e/^^h> 믆	DG`Q7JE}̀m(d~6)a悊TOy81lh;W$l~I Y
0nV$T?p3?Iu1ϢbM@iiX̡ l= 셉+2`KKQqAh74	 JN|<QVI۹PFHhX Kih'\#;U{|Y	1탶; i)#L}.A7qAA:I}#Gvp;`qu}pqܷ⾭sgYĝsIsΝw]w]'
wX,!`9BA3.6\a2d؋5n!_0͑(_Ǔo
>(idz:0R04<D`OQlѽ`ZhA&E`j!I50]2h?
@) ֈYVȉ|.ՠďBei!cZ$D3E~\Rt~ b|ɩP&c3e4M֧E
B*dUV;<q*qj%D]b!
&L	D5:=|0%LIdf^
2I8davyq.CjшMc:3`hb"DfN1!sFSԘpP`.A3af!0Rtþ8t$df%?tp1}#a)Bp*+2D"Z%CERun1b XtA_<Z> Ox3a!%ex6sσ-x>x9(s(di)163~5nꋎ/-?^d;YYR\B2)YZ5&&7
9BnarZ~~ nDu ~q53߶Ϩ;+zp_)u;}	SJë(Y]P7Qn><:L,-4QrTbQkQ@$k_,=n\ķ!28g*$΢2!wXށAuWG/M9t*,Y❩M҅/e<(gd ?wz~=d>8Hԡpô^%C=iT<-Y=l^OEA*˛w/<DGVEK*K}$^>gJRQrxi^D8OQ(yu2G}*/&D\mVǨ&s	q<UmQ_N6AOP_I.AORh3Y}5Q^!I'%L]o$go&tV>Nsg$0&{Fo@x/gyfoCQwQ
Kz#t>/!Mț#}">H	KdAPDeA&,!,),%|mlf*¹~IԂ4GZp
Yp,O: 'iTIGZ|R,xb
l.Si:(MnmY)AVx:@ۉ6|X.v0'9aOF-\Ċd28Du?g.{2}|Z>#OKdY9F>/PK{  w=  PK
    D:U            .   META-INF/versions/9/org/bouncycastle/jce/spec/PK  D:U            C   META-INF/versions/9/org/bouncycastle/jce/spec/ECParameterSpec.classURA=אq|P&|_$* \h&	䁓	.7,ʠҭdYDKCBܾNO &0'┎8&T8Ϋ*\03_qWUSiJCRCJ Tu)08Wr3R<s첗eIHfR T@aR@L9t+z<$Vu2=z\sGf"+6gc^s.Ww*%.Kypr*]aRvd>lwniB8HtbF@cJ2j"IΗѼ]$VML{:oՍlՠӥț9vk] =פsBqu{W
71l`?8i35Ѓ}o#ڕ7pnpb0g`'/Dj,	g5Ω|U=Z7Юb-sՀfg|E.,[-MN>>GbmjsE&aC(LLg^bjAh&U**4KT8~~h1a?D>þ=*[(B&䷨2;iG叅/9
"Q̺@`[x"o&9MFmƣVh85B1lVhG#tbkPɾG 
gDM쟾/͕/^#gI'g,k ;~ð5U
?溤Ƀ.e̝/6
}ʘe PK62=    PK  D:U            M   META-INF/versions/9/org/bouncycastle/jce/spec/ECNamedCurveParameterSpec.class͔KK@Gbkm}ƪAl#T`Q*^C&%M
~ ((~ ?8zxoOfw_^c1	S	1-afU̩g9F3Mg-ñَUfPlU׳8itۆsS?TQsm/V#:u|nq\ YdMVm΍F2w#2\?qy$AcL3-qElzjGϽz[M!-c"Z&ϰCvz#u)Pw
FU	UW3D$)Q@8h'.mlj>XiGIDQyL`Q!HVHR5L tHυP,=_
 Kx	/DY> PK3    PK  D:U            D   META-INF/versions/9/org/bouncycastle/jce/spec/ECNamedCurveSpec.classVmOV~.Ɣ64	ot-a]!$4ЌPVJ8`pvXiV
i:$PM&K9/s_0
W$Ta|,vȸ)%aZF;nw$2:1+.(ׅq_+)aAPR2z2 #c_t2,aEC9CҮfԜV!趵/YvIAdv
]􊮹բ\WSI_(9"\/;WQݒ`Q*DVv{[YӶL^36gXldr[մae&L{Z)0>+t1ؑg3mX^SBx;:QIi~z5sc~d<
[n wr.;:յ(TR}rI!!+*k
rXH:Vk#%W(6$<QwO$
Q<cլ'Y좡\ö|߁R#/o`p7
v'L
X.K^=	vuidV4<TFN+:`^Ӂu`$ŹfJ4L^Tm7(JԳkpM]UG#f&Ιl]NMa?icrW5\jp e(jfN9,uld,d[tpnHt3Cy:8ZץۥU!#L;pJ];x>-Éf+C<
ND{sGJ1#Zkw?7]v~A;sGjY4W0Cb
}駬ֱ+C,
Zh	}#>@z#Z}FU¤	`=|#zƏp5s+ zI^BB	T|DVA2?),850qp(t@˷H1`FOL$Ʀi+gHU<OӋp*e3D w)Stևg>@4 HDX<~6OJ$j0ֶدP+v;PK$    PK  D:U            H   META-INF/versions/9/org/bouncycastle/jce/ECGOST3410NamedCurveTable.classT]S@=JTPVjA֊)2S5&4eS|/ȌԻ)ʠaPٻ=ww~"VCXw1.a"?&˔i	B0( !*Kc.06CG*s޼aBVVMjvu4؆YI]QKVԏtTsA 5)iBCOZݥJg$Ri0)6[1jlָ9e8T_BX6QJ,ܬ1q7$e<@!\ab!Q纓+s1^!yjW]!I=y]bHRx2x"#%¬`&b/w.]WukqTw/ԌEH>;Vݶ<>$o/<˲{.H^)dj?ы0x kFu{FkWFoZEn|7"mTr+AyJx/caw&o޽txkJ`Io43c􇡟luuB'	|¿K\g-Xn$4hhtӐӢl" q\t0Fߦ8y&1",Ơғ<8(nI$}FL[kLهPK`    PK
    D:U            *   META-INF/versions/9/org/bouncycastle/util/PK  D:U            A   META-INF/versions/9/org/bouncycastle/util/BigIntegers$Cache.classTNSQ])TXE mQ]
F"hbQ{)is./>FB_cm>ttf5D
 Q>!M2Q8ƤIIsB
N+8#,e^)֋Y^N3rzc
f*RSzaڰEAzȍBjT*
n'	_6%
kIEْCIMxIw<q--
9nj^s<_/.2[VV2l??5:bjM\[l\15qUAd*zнؼ+׸D*aj5NtF*qA42*.bR!VCK#%ʓXښ-(\L3Mmxu0-r˒^f~Yh6þ"sn_alq\RfkAn$S3]ka yw' 萒EQLJwt1MQ#?K~ka
xx7KRS~Уs*tŁ,' 7)G%ܗrGhc		)A@KP
w}ri4eC!Tc;Z,4f׫tL6[Ds^S`/`^#J>7~']4l?183PKQR    PK  D:U            :   META-INF/versions/9/org/bouncycastle/util/StringList.class}J@/mVŝL6UEpSt&0LLh.| Jz
6߹ rf	|\;EJV+_[z^i>H0L|/m=
݆BQbt.}syXE\8Ӣʳm&Ko\xdji3rZKӽM4}{_av	:t~>@ h8Ĩg<dlPKX2     PK  D:U            <   META-INF/versions/9/org/bouncycastle/util/Properties$2.classQJ@=k1Z]k-"'EQAm-F6BJAQ|| qR
.Ιg [E &mLa9.Vux-INyG0ۼ݀+m-0#4K~آT44̀CwlPZ2̟!Er Ɖ0WaEXvÒef+/xdFwΕMH)E"PAb-MBK$PZ_/=ALE_Dgj)}5ȈH_RTh
)9؄ЯJz{nI#HRWЛ;Gdn~x!|JfQf
dϢw> PK'Ċ  r  PK  D:U            ;   META-INF/versions/9/org/bouncycastle/util/BigIntegers.classWktTNr !ё< ydIuhb;sL&38sRj}Zjڇ>ZkVk]Ly}\XȺ`bЁN.MN,[P[.n|ʁripNfHr|F6wN-{d9'}N|^{\]WĽR`\~@
oes@6l9u)
99l迂Aߔ_[(xہGm7p*edV&l
(V[#0sC[2K:p4Ff@Ul{u8+jfswպ(^NeM-enВF!UyGsuU=\~e@>	ؗ%R	s9Ϩ]LԲ32"FW$2CˮOew2LF%PU;:REui-̩
cCh}TnF4chNKp}mb׹VFt00w-鑃ESyˤ&5cMյS}.r֪ZK2SOgf<'R'˸)IS^MFéF&K/HOA	y!qH~ޕ(Gny>LbkCԒZ3jl7edRz҃qyB^%Sr	GqL`uTWcI84Z=0RB2'i1
Kg<;d4H:aWq-Hz]TDOܲ41gံsᤊhWNX
*)ėD҃讨5ƒA3̣/"zb2nB#LDL3Ó4=阇B3xV$u!W#oaZFu]O~6#x09ٞ&bxAŋs~"<{2SbįTtHߨ0$Mő9z<<*^lf5.W$WOl3A3yU:~
^BFHkEc>oZKW7t_S@o5-k
-nzkHbFkUZ|zlPԂQ_s(`457G_(fM!F](қF(֖m5"%6>_,5FuoKk,B&o4|z)Xk4Eczk[Z,D-"!-V#m1Ѓyi	45Gt7oc2M5L?4x*|}̭US_{if:(V;gW4(WIhz;r6OIj13T|\K"%I&!zu
Ev-c9%@#JJǔM
4^-p'ꞵ+n]G(id͎)	
/DlY?Ic!'lh7,ָDrmfz>x\8~</,$q*'MZjY^[:̱#e4Vǣ<4]IG+,Wފ}}`̜$n򙼌/^*eR/_iU2CY*\+Wrέ3yokl8a/C<@7[X"ڜf/
зsGpO9ꕆ(lNε E5*~qB<Y{r_g=j: [P<APC)\0RRuOA8vgN9l
5Jۈ[
MTVцiB򺀜֓ k#waIˠF1u,]!BXt}8NQILR@qRX_]Ãjp}\3M^AG}u۱V/'n7*۫I5TfpI?4!1:=NEY̢)ҔJ!rNKo#5`F9zuC4ŏ.[*bZ=Ԇ(f_2T(Q^AJ!| 6	tnE>󪵛.E-q45kǍ[=3v3@w1{i]4Ә-DiߥH593pS(ߨ0{-9ܯ}usnd?JO94V/NcgTYq\t# ?diWPinFi'ْ236N83\ydĺrd\lYg=	w2:R;܅g>Y~pmahNw\e걳^r>\Q>
`oNj+fQÛ7g2eXN%u'鮮gۦ4mn	\f/lT*y̓8n\?6*t70o?2	gʷW޻ieM//v8Peg1f('	⺣X0+;4y"FIjR d`1ޥ}
U 
[hh\8M!#\ESXx^^\b+>r8=p]A-d|͢,lʑы̙<+ZM.*fJ4\ʡ]\ ^EFj?5|I`kAJ.$ﭲygUlP0Qta?*&6_mJb瞠Z~۞JY]ZJB=.h<X2Hgi3glr) XRX @#(VcjэZDUH[l=/{iy3AGl<b+(Y$2+1F#>Da49%J#
'[yϭ{zt++Ш{0Kc
@HQc,EnJ?}VJnA֠Ak y*+;cX\6.3q4)d>ԥbjz2Xs2EPKnls    PK  D:U            8   META-INF/versions/9/org/bouncycastle/util/Iterable.class;o>S>vnvv^F̒ԢĒ"F1
MĲDҒ}O5#gpfz^bIiQ*#4VE6!!v@6!Vļt}k;L!$I903KS2sd@K+KrRܑ n#]lL@FFV 
cb`bLs PK$>   ;  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/util/Arrays$Iterator.classTMoI}mۘ$8	,b]H`
(pθI&wfzd/
+.\8G!gL8Lwuׯz/>F{q"p2mԊpƹ<an㢍K6|65>+5)B4u
QE|"O{J29ܴ'==pC>5T=)[|']1bhA<J!þn.zHK&#n"T\(j]$$D:;ݚRO=>Eȵ
p(M{RE^0a&YP]勮3Win*#Ы
p9+%U3(j^,"6R*I;"=yåhq
W*#TffiNJ6|E""׌_"&A5+/QO)&p;OiN]mГ+S5m=llLj^l{r]uD#p$x,]y:qb牽Swl"OS~.~Ŕ_p8y(Ƞl.كPd0D]h-
c֣Ds&X-Ⱦ%4) ,1
Vߣ<HpʐE;x짗Ww 3tƑ4[a#%@D٨-^|E?,(Y`79&6;FGq٢R9筜S)4ҡH*2O
70C58C<EU~PKS&    PK  D:U            F   META-INF/versions/9/org/bouncycastle/util/MemoableResetException.class;o>S^.f.vnvF6̼;FQ
ĲDļt̼tk0FTF~̼TܤԢĤWp~iQr[&#훚J-N-qHN-(Ƞ__\X\_Z]##59@=piE&/@I6 O	(ٴ30n˳I.P(Pfb PK1=     PK  D:U            8   META-INF/versions/9/org/bouncycastle/util/Integers.classmn@4u^hn4\JB]@]X*RHMTt2cXC!1Z
|33>o,Q2ڌcxxg8,(v?'P9
U]O y^({g<(۝SZ:
ϥRWcy,;(\ޅ@ɮIl:T/w5L=w&0XGəb*oG+-iղ/Tg-O"Z3~`*AW_3	\9='Te&D~xUvXúزQeuFd<¶14sa&W7ցt7%˷ƗriMr},Q
WJW"nPҠoqri I,a	|qS^#P+V3ՂZTIj=S-jFjjfzTwH&UkX0=r[ntȥVg\a{PKc;    PK
    D:U            -   META-INF/versions/9/org/bouncycastle/util/io/PK  D:U            :   META-INF/versions/9/org/bouncycastle/util/io/Streams.classUMOW=c=03C @i8PBb>ZS)4f:CQ
RUTjR	P`Y)n*Rzn͛7{y7_`A7.!,cC2ޒ1F\x[$#Í.Y
cea@Ƥ$/&0991i"Ʉ !*9bd {OGılJP32L~uIkKiZqrmh!#ffMIZimH ty~R_3lf] iXGiy=,"BLU!eziz[v"ѕ<͢'fۑ^*f4ʶ/ohi#z$Fs+U=cC%00Tlh.mz]#ɴ'r"%IuRYg
ZЪ%| i]0 Jh)$7ںCyH3L|C-MC=5Z
0+`|9 yNZˬfY#csLJLJOM$0/?AԗKw)o*:?ttY$/]]Mn ҦY՘bwēX[
}PT,V)4'iBo>z
t <m4:b
}xbiOa{>pRm<v[h77lpJ^EBJ䲅} C%)2V<9}A&k1,n6>g6R<qtRa*ERy\tN,pJhuUzp#8NEZ WYFStq,BHcX/ DvMe*_*TNOV# Y	CXׂOKě2^-Zcq4o{w}zZsڽ"1h%䯓A{XTEct^US=P;Ԇw~WŽ~EԜߐ6m))_x^K?9Q1(67R?nKySaͻRŭ@'kDcB{ҭ~q.ؔ~3AP.Q\lOHsz]/ox, 5*︇77PK Uޑ    PK  D:U            J   META-INF/versions/9/org/bouncycastle/util/io/StreamOverflowException.class;o>S^.f.vnvF6̼;FQ
ĲDļt̼tk0FTF~̼TܤԢĤWp~iQr[&#ԑ_Z_ZZP2 (]?)4/29$'U$3G?3_fFa*<L@ #l@P	Hiiog`g\`Q^:>	 PK3Ep     PK
    D:U            3   META-INF/versions/9/org/bouncycastle/util/encoders/PK  D:U            @   META-INF/versions/9/org/bouncycastle/util/encoders/Encoder.class}OMK0~2VԉgRnv/&#Me5 N 
	ծbFք(.33VjsGĘ>mVIɼ	&,'8nF:	F,^]RH֌fiZVvMukpȥk~֪&Znݼ|"xY]4=H`b}V#f0!{8 PKĈ[   z  PK  D:U            <   META-INF/versions/9/org/bouncycastle/util/encoders/Hex.classVSW=7l. *6
eZkRcB~-af7Vf|p:/L;c}ܛMBbP_:wϿOx&ᒉn&Ũ1͸eDjkc
&n)~6enU.nCH=&Vf|deYJlr-:͌y,|2Û@d<MIs)/¼2o/䜬@gbqb j?y&Kv;JG*)B%/NDKj2ۙi{C#pR-E>60o>
?:zt#˲ޙx)t
|J%U\Wt9Xȩ5JIϪ$=8iz-qm'6}yP7Ұp'Tư@{"@g!8wqOuu}/_qC|łO~fs|aaDA
䆬Ky.,Xp^
~u,J2*&vEM~~c㩽_p+;JZzv$\,e7)'帧FBk^{9+ϷNp7q֖nc$d>e˶ok}4K'7LʀTg('W%sk2`Xjyna]wrY۞'O{j-YK8Rj77dtI<(1is9_y-nq|'t~U|]p|O=m?t`cD-~_NtGF .]G	FU'v43p5$dRo311Ac~9E6"3 ~ChxBwxtރOX J, Heگ3084
$0!vD`	ŦVՕXi^?Aatp\ցj5#1s2!]?D:wѺ058oPEJpU]z!Zv%AB,@fr6`Iv^&jôxDcڿ[)Pѡh$ki<Ejbez%Q|<m*1^RpG$)hp>_U$bBpj{J۬Ϩ##1uq)GV2j<EFV.r_sE_D-_E|I=PK  
  PK  D:U            I   META-INF/versions/9/org/bouncycastle/util/encoders/EncoderException.classuJ@I/iӫJ]rUqS*MK8đq"[)(OR"u19o PD.\l3B.$Cwr-ka">J;h9d(()[Dh&ȋ&,1T"iG+^MoI(TFt&e>V(pSG	e'ԄXX-yjr-ZHVMt7?Hdp2mz.*TR4@^8OG(oS7G/pr^mZ/PKyl#    PK  D:U            =   META-INF/versions/9/org/bouncycastle/util/encoders/UTF8.classeoTEǿ޻EhY)nBn4M۲²րiJ5KFb@h<+>;sg朙s眙OsXp0E,6b]ߡ:-t	;:;D@E"-rTv,MC@$(xЬйUYf
A<H(JVh!mŹ٦!uXV}HV{h)Ai}AʃBo.SHi@@Ua$2ܣnYhs[>3?L.gPz36fY~MVRGR=2ߛloXH4t-3mzK;=t{FMUGR/ʱϗc+Z˱zeCXnpjM
l,S+Ɣ{96FfeSCCG	,e8ܪAY# PI$Wx	'>V=E>abrOO>^N~q9F
$qM5>n&3/kTjisF[m0nRHws$y;apkk.ʨkFSV^M΃IEqW=nQ'<0eaK7RpԈ6AcA%s10Ńk+hKsri,r+g/#
NkV&ג'mזx<gL#ђe$NL7akU8a6ǝk{#.)7</t(b<럧fvzlj81b\?WXpk܊)~n,ϷXvoe|ej?g>F>A7>E?.`  ..u|w×_"nP63Y:i,9	! ".Z`W;E`YhB*bV ɼZL؅jL΄og[0ڻ20R%Aɭ!VC+mrA9hk%%dt4y8[ajZÄȹJ[<udl7MwʎjxdqMl7d''ǒKJː(Z:%g9Go%JZKߢi:?2DWFf5'|CI74aߔC!xQټx/:b
:Z)w1I%z0arG}Z\D+z
ڎ{h/؁?Yahnq	
+NE*HFLW*+UخcnPKݦ,    PK  D:U            C   META-INF/versions/9/org/bouncycastle/util/encoders/HexEncoder.classU{l[g}}_v4&qtq{.iҗو7Goŵ+dЕ"{HЕv
Qt]LmH!!Ѐ	?h*
ͣ?=wιz:8c	Kah6am1p65|؀>a`-аS.

SG^Ч!bTwR._M;W~*s<|1Bo	tv="(hܟ/Ǐ嚹~s:Rct>֟JJqk"bEu]Wn[xOﶈ΄Yc?iӓ/{ƽ!:Gt1vޚ-ʮ<h~ւS6ƸvP R,]@S.	1T/gy	A^wV>!G&ŽXAKUF `9VDEjF~A$'ώ9e'J\;^8/ϑwG>*~TKg=8^(<XK9jYEUS,/M`T1N~ޒټcJ##׋;\O/4+l~$91w!
N!~;G+^|9rk=yI8'@Rygg:{BO53˕YO>JW3{[ʢyGՀmUpdNH3}RLg-tRB8X<@4{AZ!EZdth (3e\:[ۻ_~ғB\[U_Gbd=2wIߗõՀ/N_j]tkݾI_sQOEog/e-GXc%Xb`kD Mޙ!u_E4i6	3!7Qd:\ΘiSJH(
ӡÔ3KYo(LI&F	?|D0%A^@Kqt۪5Kԋ2dOz4hiO'y
d2}ymKB+3E IhXwlm3`+vc[!6rт*VCe.CcWfT|(;,9jHY9K9^sv':,5
LAh3KJm\~7V}V5^
1yţ\eЈC,<>n|x| }([$`6^WHXmf4mf%fR{?^A5'Ys [5W -`2踄h2䳯C;2Icae\Sա%a}#}_\$v讼+d)Ρ3UoD5KԅR'h:v%ԓrS'UsWK'7:(qfgghĞd|iEil3HKk+:Lp|eoG6~ O 2*Hʚ}CY2!jtm|3͂,p2m
g
zjE_OBSgkі`n

kaBkv6	_
wgcVpFeVy$Y*$9:!Yy_TIqN$
RCH	O!T?c9/ ~ko2@HBW3Γ)>&)nv![ɇ1cC/-YrIr:9ԂQ֨]ǈ|M$^x榫h"b/C]E斫nbj/ǂ'mV"RU?gMcMI~Jdx,̩h{34#f7	-$^V`аOH0r"O4	шϋ&<#Z<mgbPtsc
m4s!Lgⶹe?PKa  B
  PK  D:U            I   META-INF/versions/9/org/bouncycastle/util/encoders/DecoderException.classuJ@I/iK6qצ\UTi~82N$xy+EpPI-Rs`]euqbl!\E܊C22M+<Ji?VFeWsNC-vM,ʉHF,=Uˡ&\l4QA'iIfH,<Jsi
n.`=ZBOri"X;t2ɵ)r蹨QNрF8xw<vjSޡjop<#_	< բ%*ڟPK^զ$    PK  D:U            8   META-INF/versions/9/org/bouncycastle/util/Memoable.class1@D1@VVVeC +k`ׄYx eV˼ޏ'-1f1,?ضa]e䑯Vwas!9[jW	ﴩ]VѓF5<5k0 
PKYL      PK  D:U            <   META-INF/versions/9/org/bouncycastle/util/Properties$1.classQJ@=c1ZADAptSD&BJAqA ?J̝羽?D94&mbFf,YgȵyrkM_	Qpufa\`HM
I%N⫆ұbTN-JkX{@&ٳ>_B82lZXp2XPr"C9Ծcu<@se9TJ轀Gh-1P$XKӡp٦|iu(/LO\ V/S.H_jhr	%؄ЯLzص{nI#HR'M#R7?_B[%qzcI=PK <  x  PK  D:U            6   META-INF/versions/9/org/bouncycastle/util/Arrays.classZ	|U?ߒ&MSJKSIm.@(
-[Q
mZiZeF EPP+.<8}|sGdߗ4M77{%R~BZ1:YxaO)=mTzB3ӳzJ~o4xJ/xYXXY,d+N-o[zJfJC+/G~lOJqKFJ_߹f[ni4e=Gt58!,fI1KDOE<?\uv;%J"U)E%Rkڛe,
KV
UA|a`p?̅jhD_}vBiw%+{ibbt2k5z㍎zkWT]ƷWZV7EfnjuF|HC?/fYu2:`Y@k0?88p@؏Nuީ;zaS:j8BPRxj1kcՈZGt"d T=ceѺ}0jҳ#FjDotxb*H'kOוDcdPh
Zty8yky5"oN^)Q6_duYu[EIƵ,Zf2"<ȣVjdYS{-=F'	V3E@*'G:5䖦ig"bh	z-٢.x4huޣ0-
,Z#y1uNutC&ơ^[YV>Zg)2.|4UͦƸԣ犹#׍Ý<A__$hKp^:S$_YZۻM.iaRF"ZlRlXlXb%Dcmi{ ^pQ#hIU+oBU@ YUH4[}y֮6(9 H`7?쿨+RRj(*յ@s~K{8h	zYJIVaVZ"b
XYhgb-0N]6ZGef)
dÙo˥tdJV?D#'&4&eH^^3d;i/qTw𷋤LWhbMʖ
O4Wh7]Y"g{l֭i}3uE2-Mh)/ѤfL컛^QQ5~)~>ѱla}}J[ ٔg̬wd
wFm(x>6K/Gѩ+Z)6rhxYɿDڵDt`+OO2h	>C+5 :AZDd#RcĄvRTvչ\X~iFUs˼[ɬ!U=Y9Y4Nhsi$tRIPy.JԠ6#!yo̸aSe$u+D*Sɮ6W)vv2){
bOIei,/܈6ZjgdWh/7+4h^J3Bx%(Ҩ#6mdhl{)Qw]a@45'
]%QU=ig~r&IW2{+cXɞ粫ns3'SFd^B>t3֠2)@tV
kԎ<ZKgP'¶z9("͓S	:Wjyz.TSxgF-􃔺"zҞJm1wJ_5 e<t6#Wde'jIR*L
24%w'9&Ӟ#K+LS8WUa.kv9MTLi:]	Q{su]G7 dQjư,}I6ke-t,:t
,-bI TH4t=T,qNm=k~
8`gJUj_+<NBui'snQ'iq8p=hEG|ReܫOHשހooB//n{kP:R&1c4V'W4W h}Y.gNa|@q1}05Ҫ/[5oJ?}0x	PdLGJC§>O|!_?GE\b[oG߁ͣ,GIQI/E0/60h~|p= ME͘&D]로dfkF&1ès0O1N_ B͘!7qF-3BFD:0,
`8K1(bS\c{(/QV
1j0$8>fiCI'X
1ҸD60~q'3хz&swCm(pFYNT$J;gzD҅J)E9JpJQMMbr]^'dS+ԍʉh]eZ> ]<D@~
7|+9Hur _\n`̝p.|\gc9lszhBQ{>u$֞}(1Uzu!ʓG>CpH$(J];^$\{
=מk\_d_kXAjjnɯ+\rUn]߰cV\9`Ƈ 1f|
3>ǉD9_T4]YYͺfwALp$fBcmga"XiFF18ccg29d&*e)T%ira%CɉrRF<rD'
sҡLJJ'Hƀ	q$$A rb?$&<TRd7ňi)b:rT Oт[g@g.4`ǘd&t  
*y |,ޟ]6gLɵe~~*8LbS^$P$.4)16
Qt\1\0܇8cy<F<Fa*Mc
-a)SƕaL=L1Uak1usI%s?KVw/ofs)n*}h&kM)wQ|!/<&dU,e ,r	X.`+YIjߙ$s>NEne̨׮qLc|WZ0]O6F[wd3f:_	_&g=%dzXw.]`?u:tZ0!uK)V\e#b7hWa"#~XN0 ~p@ I   [XO 3 i'x / E 'x  Up0]v<NN?S&~M#T/c]wHh4jVߺw2Rޭ,Cx ޷-i(x? (ۖ:<EE4D%Eݞ/m(xi/xR7x/Gmjt:d( :ɦSȝC\d/#ҹ&9+rP咒tc?=_ry5g=@TeD()S) ~!*.QopZB~΅7-M=dY8P*j!R$)e 
'S2J)3ir SH	R<ʔϴ| S%NS5j4L?Vc&+LxLgi1iS=3ҙәpS
]SS~ 
py)]9+H7[MPVE;vv*_,n>u~{cZX{Zw}E5dU𱝲0&)*SJ5UIF^#SD3o % &_ ߒ@~NWS&Ou|ҺusWXȒXT>n6b(恸Fʵ0::7Qr3-Ȅ[X
nL%jnWVwqI-[]zn_"܏:R¾R
KM7&#;&vT,Fb)#%*r7\܍d^EO}T<DSG4e?U+AQHy.WD	ݡÅGܐz2_4&jFwr`a';*<%=l~
BU?_yIg_^qa%ꅱ^guHY",{Y]d{(CA,UK+Uj+oi`L߁~ Q0LCQWűPD-]RFT[<ob-ʉڵ\,F6(FI*o@
t56hQ4^#l#a$	)%87iM,3ĩNg!8g	8$r21?/뼣pjsùƸU.g9
=w_dRgYE4B$ZEȭΥR:,Fl04fDfDX#È:F,gF<@bqq8MrU_,;z!hXI7a+~6xc'eI(sc?|$QWmpoLuR\zfQҵGt}/vUwVP̕o o,# d: 3_I:PKHӀ  .  PK  D:U            :   META-INF/versions/9/org/bouncycastle/util/Exceptions.classRMK@jGD`N*RR%nII7~+=([+R=ٝ=0d`لEW
r2ꀠWmB(!Cqt]7`$@NpIWJF!8w8o7U,C>ƴn>5W_0%r݋CfĞ8isNo7=f	M%@V%9=;Q2GOjnmӡ`$lz	akn@,c~(-WhW>	X?>;s-0jXPK=@    PK  D:U            4   META-INF/versions/9/org/bouncycastle/util/Pack.classV]lSe~g[Ou]1v+؄Cǟ-,u[ђP1K1DBPH4^H$ި7zs_0zNm|{=9||6fӣfǇmFܢ|bW8|a70A
hQYO<O2ҷ12lKNYhtr+d|fGb:M&G%Rm0,NI|2#3у
9s+,nVd_56Pc30 \XO&fiDiD>Zg7F,o$Jbkf}{\l*M3R"lW\"=.l=;wyb#Jb#
+&d\X0LUwGsSq^aTcpBB.r[ljP'M-A/}!/DFL`29::=|*>d8F3)Hѯvmx2rJ2&02*''+[?Q~#!7Xd@jUw@.Ł*@] @dEk\9Vbmd*r@C(\{Ȁ"yjno5
!g~9IBl10uH&Fx~]Fn8G~80n1GiF	9pbHk?b.;}k]*ڏ<!"!->Sv;3Kr~*gF/)JtBMȰvu
x@Ij܇̼<3* C\ܜ+>W//sdi]!($ԇ]4"lYeq#Uh8DYvd enzX]<
V0#4Z	^!	yQX(|L-ݦ4OAcj=ZȻ6ph1zz dzzzv*d4$q7 nmWBQNkwF.\T"#Xt((땆e#U,{c":Q##DNT 
K
Vr)
%*p 4*V6 !ZLpӜ,F4x̨GoM/)&:7;[y2aax){[oCw.:5@H ~8. "Z,
>DW̝+Ki?e 7g2w5 ZnwvĎNʳKSd9"o_ٹ[KAe!}2lu,rc}*TOWGFDnV"7(/K?8Ae	J?H-	.VoH-pBuSB:^ _oeUfDr~k-LO3ʨ:&>2[BVIvf%fS}Z~[fk5UZJ-sAh.Ѩ֣gE~k+鷬̬zBfUZouh[/B~,X/ZM@Z-PdA(׃
Dr~[Uo   1c_mU)eddT_zEPK<Σ  c  PK  D:U            9   META-INF/versions/9/org/bouncycastle/util/Strings$1.class}QJ1=q>>.:pe(>12&dnT\~x['9s{?? cGX%9=,{XPa7!S۹a6uG0LI%.0׼1bG&\aa}'"GDKƊ'Ɗ(5u+#e"b9Ԫ1tHINM$NdU[I*J%\[P
0	BBխx;m<XF Ska[*FܺDnѩR4nbWPWV:q0we0˰]㠺r4qƟM
O
!#=Ӂ,(d"uc 2OCJ񈴅/KbpEY,(IC}PKR҅    PK  D:U            F   META-INF/versions/9/org/bouncycastle/util/Strings$StringListImpl.classSKOQn;0Ŋ-Z(!$&5,PvlʔL5hҍD?8w:LGhs_}:{bP%wDi3\r_9.湸
 █e4Ud֛5B0nEkYZƐPJzXY_m)61"?4;59aIPXѪ;=z"0+b04ۣʶ^u\S۷;MTxPe MSm6äRjZB2Uvz
/ƞw/[6,Nfvdr7ҙy]X*7[VUo,O&#21	;e,aYF+8E->w~åZ&+'>ٴJw5ǿS;3
&a^
>x4@1ҌtDm#>$6IR<8Oͷ~>%I=W? 6/|57zxGO."qJQV'(.{ YgDJT :D1߆ػ9&B"ΚH0I$"~SyTDEqK%kĴ\=xBH`d&!$kjB8ی%DQ
Y7_CJ{ޮxU.\/}D!?}
9`qb]gBb
۞)(a }ep PKn*  N  PK  D:U            9   META-INF/versions/9/org/bouncycastle/util/Encodable.class=A
0Eh<[ݘ*¥4
%%$ҦWs<vсa<pĒaΐJJWS貧Twmk:kQZ<a뚊%E׆a݋[񼨕Pi/,!"C1a84P,?PK2      PK  D:U            :   META-INF/versions/9/org/bouncycastle/util/Properties.classW[P=; B%,".%)DeXFZf,˶y:8r)|A*BT%rO*$Uyd+,-v}>y_°'tQN%8HaTc:N0D73q|<$pVu|BO|Ohe`1i`;td2Gs2\
0mE^ǌ6'Ⱦ~4 ìxui0]r۾`ʳ^~GDY;gQg
u5T'l
uiǵ7j(u9hҾr$7{,F+s~Ț)f7װY1mȭZhh^A7WocicN8M[TwYi[#mcB亩tDS$5d]+(x$xz8JY;(n+l`kE'%GcxO&W1/x{Q)73q/31!
{<'dl˻_3wM!e 1|P򖿏[e&>ϳűzRx6e*ևh(xė񼎯*vTN	wWݾ"h:OIhb
/[&-w&4lxf2ֽ}I˳Ž&.?y*\
?ggjfelj_M.)qЋ{rSDg
=\a~%Xx׵{Y?=̩ˊ9+toFKC~ 
K#>cy
n
L
ʚuS?=m)&\bzq}uJgƙf&.Qs9FcI;p&Uw_evǙIR̉Iϙ
"dɢ٫lPf)UL1^2jrpe""%kgsu)8Tsp;y#,;5eD]HG8#xQN$+N>\΢U/#)+jVШ@j"%ݣ}M8|mE&6h%&bH\}9%@bM4aJ`v%ZcUT7n(δ,4$'HQ9rADA+9$n1UH>[BPg$?M%
R먏
4u@K:5^{	lZhq+LIs:ȱ`.:\:b	wy\x+^t[^Uza^.9=PP
M$xmckkQ[\"1_~b[Da^`;#ʵcc-װsuRV}{"8s?Rh]\W+c6Z1-(
}~oS? Ib/{omc<w{P®N-+T:Y}]Z\~im{؂nd'G-:jeobI.i9CErO
%tį:.!Y?yj`gUDVKV*'2Jϣ;/2GsR-2Ꟈ^uUwxa3iOo@au%LmEL\X^+2&˨VxXN	oAc;Vۀw)'/25r+mPa)6m/o嘊fUQV"k¿pPK;  
  PK  D:U            7   META-INF/versions/9/org/bouncycastle/util/Strings.classXlSG` vH)$8`p` aM[QIǠ@TNJ҅BiR5i&mӴUuӪu@gJлν;|ܛOoXA7*mد݅/ac*wÉrCt7VSEԍYR|T*F܈=\8cv@I#*z8*?)9L˞){}sLq7D8Fe<+.R1S*o1SDwS,m6DHtHsqgÁ]==EMczU\OtWenp1N^^O@OvMHqL%{n]4"/0}KECgzڬml)]`&g<S}і[v22dUsgR{6J+
'FK&Y<ӴcEsⶦmMSqZ3s-h^SO0OY9c?#z{#9fNxV@M%gJ+d_"fܨ3cIf`ɅWOf2EsUgnI֘$H{4b4|gNz<1D 4&XW$\%ky8Yy4|/hf8Q&|:1R(B5BS/6)ˢz"4F"	-3褲.-Ѱ/8x܉Mhuu@nMY/k&&
>#h.<^}\h(w]«E5]zݐ:/kXW*^)-Ox]@*6srν?TJ"0Sz"-ZeeY]M3iX:\`%Q^U2)['B0-b!duƍDy*<ǚ1]Ɖ惙	
:3dSJ[j2cYqe<f%;IyF怈9C4{,i5mDH4jɄJ2yX;TC%6xbb$*)1'dG'܇sN)ռe+4%+bՉ߇8uGp%_5AƆh;!`hZH(m!o5٬q9~Mjse#g XEfT,UUx*^%Z(uFC2_VY3YC4l7g{(f
C0{;FQVFQEg-y>{QG-xs`㤍 U:Jw[#<ś6/^߼"DؿVWNpP!*s0S^96ޫ8W:7/K҈yRjQ4S	SvtTWMT=ɬ9m<ۄM{8~7v}"HcqI:%G7)GzLqQsN9y
oi->
^(\8gŭP$D.O-PH|FϒI6k$2ἄNUbWB&z'^iJCZp+IQEMQJB\5^g>A0?@<! `8>#H8#]3∹a8oMEoψ:S&d}k_j=m#Ck/}k~K]*vHeK鉅Z}C(YMMєI?imνOJuR[^F<K۶(ɽeR[]
eT;B>uPBxиta1oK[t	*Qa#Ua6R!W*Py3(.!MɸܩZA,e=iBM?;{Ys16gD5lˀ:*,AB1ysp?ǰITv^'.RXfXO/p_LXW8$b?28reXvǶlw9/ԣ=<
?E;:y
aq븈EA1%\L'/	zJn^fԖ*<eoùagw;v~{C(}ΖN1xo!*db
:xE5#yb։:<$6yD=Gu~8­k7D3_.[BswcO%SyEbyƊQIf}VXYDtޑ{'^7giMlc4'(Dmm5Usݒ:2m/K\Rq=L
2)Jy1ېwuJ|WI3PKNt	    PK  D:U            7   META-INF/versions/9/org/bouncycastle/util/Objects.classuPMO@}
X>T=p$ƃ'MHPܶuZ& r q`bDw73o;]l²	::*}w޸dZ+P츾8ol\pۣH.V3߷pHǐFܹ>"f*4(qJ1Kےj 
Xgebypxy#כ
hZ!GiK&4Z<*JW,#2_^aJ~KsTb6Ǵfs2#h6Pkh3:WꡔΣ0!d]@7X7lK~K_PKUL    PK  D:U            ;   META-INF/versions/9/org/bouncycastle/util/Fingerprint.classTksU~N6nf[(XJh$ٖ+joHMnfM$GF?08'eluOrF=8~y{s VepAF;F4VO*^0.c"dH0׋u.]qp1'a^F3D!W8!%⪌ViV9\
f1/b-O24*Uu3.OĮ1'Y|e-cud\XB0{sFɵ OYeehYŃ)9ŔChl񾑰B.Q՞֭a3D/dnZs>D!VjB4@a+#)sEKヽ}7zP
bSrX)dǠ:kSЉS)Pp|;(-:9QYYlD@KFdKdy4JT8_xGAn0tOڶ3rfL
;V!F*N$cEl'_Hq%2yA{.Y]rl>g;	.4LYЈz3Mu_A?$:~e6$`gQ*Y"]wyB=ϱim85ͩX%qi{)nf/(Z}&RHQU"n4Q = R;{,I,
/ sb̙EkMe.uA >5-ǴaxPvS	.<"߂/@	}F~]ND)]oО @:/ύt^GUH3R"B"nJJG?⣽"\!=>%-lCҷP?+o0,oaQ
WŻjÁMv5|ߵM4>맃 &	8KtIL4d;'upP
rBC
h~EWT74EqOl}6jfK{>ϚC4k=YߢRh֛m/hћpd;.ğn(;|wMس?vCxxc"'4O)gnoXԣތwh]ժ;Ҝ-lb~}N>8/}QM">dTu'ꙴW{z@KujZՁ.i]SE,֫e lP3j,ajԕPL?w6PKD;y  I  PK
    D:U            *   META-INF/versions/9/org/bouncycastle/asn1/PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/DERT61String.classUrE=-Ky<lc/$($&&[P=jG3Q˅*N9U,/<MyC/=/ nk
&z)5$4$uh"dJGt}!>R:>Ɯj:1RM"S1|lTR[/)ӉUR[n1&K[xݙM/<.ޙ-Hr*i`-CrJ%"߲r k>/j0e)lW*ܖy.1Y%3\LH<aKYՇT6<S,ZJ`'ME0߱HeLxQ@)k>0\5i=.ٶp;UU7 "0u]Y--F30mTâPÒϑe+VUf`LeͳvRu$ɩ.lS&CB}BG'"^'oQnQyhᝋ2U-rC%H-*}q>
yh7OA#^EE]$ձ]^<O[aqmmBRVm0LZΎ-nm"755B]wQc0Gx~1~):SE}>95qtR
Qm,)
|.mgp B4Jϒ@OH74b5?gAe"J+0=@2$`.l&Bp(`ddl oLaPc!!#A$T
)|I)P?I1 }+T	`pCA [
bdpF¿0a$؎G5FΪ\>W
u}m8)S+ZrZEvD%pi9R3r 74(w_z?PK<!.D    PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence$1.classP]KA=cfE!	->dDH&N6;c3Ay~pslX2CT*'>A0cnmUgȇz JmD'Mx?I+2.:FNmmA_*DܺXܪFp49*?CF&ɱh2]H\li'q&](Vpza<*eTŖRLooԝ"M7GYdNuwT}{X/ay6C9/B"+(NR\'goPK4    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/ASN1NumericString.classVwW~&&
%] % PJ[КЮ$)5l͐L:;K	ZJkkmjC@zҿrϝf㞳wfy_`>TpX`=B8 UϨ8!
VX#*S9|^FG%PW
*?sQL0p\*ɫ)?OHޔXiKތ\S *CII[S
feN_A/@dxH@*k;qdfsz-z3txӖypzaxvl5,ҡ^f[9C@2{B?wt+98~ȹ]ki?\637:H=A5iΰ>^ eݐ{8a=7&~mic1	J]<djڷ=s
H2%`X9g3N	p25x}DְMeh'X+;St*g̸&
)ݚԋ~iU)\I/лZʏ8)1"dN"k5O"G\cINEv
A輌n.99);y.@Zv{d̿lA
_]W4w-oL`BA]ix⽶Ý'Z|5i:j؍xE}Q[x]2ЏCWHȍV1aVId{

ƛH)-4<}
}@`sL+jxszpNûWÏ]k^;,M)p~
5V[W*vgf1׮ޞ\iɚbrwYq:_Ʋ?
Y~ql'aZhBl֧3;
۫mjS?"fyabWHH]
B,ֵ=mբit:9kz'\O]nՎoVWQKM`[xf6rVL`Vь59
9z,Duym!8j`q!IUt_<:ߓs}ei *'qDάSsֶJ3nMbZ	zjU*BaiRwk"[xwˣWŸ޳it_!L03!M+pCGX 3;fd~#uDG:Pw
*p>v
6\۹[6$N%a]k#	+
^4A4mA4e1gO`H<K0[WoCSU4:zct8M]Ce|Qu^cu{!I+
qj6HkiS|<"+@
GvWr%,BK)}hׇЛt
k:C7TKtu?
Лt(|w.t_Omjo\ݕ3cDI|LiF)M$TOY6Kl+)F!j-^>O$w9Ԅ/ɽ0 ewx򭗖*Hkl7٠oo{UCԑU@#Dw˻%;3P[󨝗bq~e۩8p/0ȋG?MR^wX˞	ED~1;:J{P-re>%
,,KwBB t*^ğx5^kzDH/ОDf"^mo$DeO U]ǖFL\jfp3]<~Z<g)1PKZ+Okc    PK  D:U            7   META-INF/versions/9/org/bouncycastle/asn1/ASN1Tag.class}PJ@MIӟ^E<)BM\B$&ARP|(۶P7of6	<&vM3hڗpGq4e`=`A3p87Dޓ,Os5tF?gP-A$#t_Q]2h2gPE6ZZm*g0$d,9珜M,l$n!:!|ƽ^6BWRP4UX%4QC
v[Ϡb ԉAnE6/OIK9>j7^W
*Yi"]&\4efA}^ZWkPKPQ    PK  D:U            5   META-INF/versions/9/org/bouncycastle/asn1/DLSet.classUKoU=q4 qt<vbRSyc:)eQۙ&3=.tP6 A+Ph$p   VJk71s8L 0ԂN.$xp 9.N| :Fq=\L)xAc]p/1߸e[$WggdhKX,R6F]O8B,|䮙lI'켳qcPSЌw M;7ӝ9P4IeIFܛysõ`M\yeNUjLݍvfv}l9Q0`l"L3Ç8W-׺j-픋ys&Ҧ;t9{5Q<B#b\<E,(xIˈ0x
OxOH`qKBIE)HX«Mj?4.!;yu1ˉ-0\	x؂76u}- 5sO;{0<]@5ꮦVв	Y_^FrͅJZb톲R=hŤlExq$L
YPGO1z<|BgZq] ;#0vϷlt7 $'!4/TE!jDvmHL 
bO;NTwRCf>b"%
rCf|1אy|bL3?;
<7'Nx'{C[8|?C-RO$U8e@y\xD$p
r8<`T
dO
FaDb`?h
&QѩWDKF;{hK"DȦ6v}`(0.U
hR{E
ڽqY5i݃ҩM
6V9FGG}޸)`eO.tӚ˛
64:dF~fvx6TlҮCxa4Yҋۏh%#(c\')~F[kw%_Sz=P0cd;K}&;1W$" PK-\If3    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/DERUniversalString.classUkOG=cl,@Pm(.m&8%!&pjXO
k=F?)M
""wl#vgΜ{o n[7
 Qcw	~b~l"I|bbqK0%n<1Z*{`e_=tWLJų/&wdճk6(W$yśM..=~9{¯p7|+Y ?}YkҎ7Kȅ*/7(J:XȭnbQbC9yP,?%z`dշŲJ0!9-a!O[Nj-ʑ	⺢X-	O%Y=HZJUQ>/
B*}ݸƂ42:ڢ%+7Zb%\6aasB|(J!lKO
u{_5%|ר"[/uJR,~j6i1r7gQҏڿsQF,]mgzA#MڝYD1ֳA)|r??u|@.4uoQkf|炡,Ǔ|3mVB7$BqM#}0ϧ
l='wEލ.s[If`mVjZ<׋)Ꮷ5}4\Qk{pVggՠEnQ<\MO=
~ƿK3'>?^87`[4C5Gktkb
[S9	w
$`>h`~q~3R	Ћ50abksxzW6qNZ3B})f`N7~+ 
.? bC@?4Ud bzֱF).~/%jxt@˧Ch5xJψQ]Vz~hآ?L6]PK鎗    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1BitString.classWktTuh@`hfa@#!$d$jJ4lu!~4)iZk4!	~PaשiZiHVZmWWuuuVsh$ʏΏ3޳'g lǯttim%}tdt)'|xãrNJ/8rL'[~:OSH%e|E#EUC&g%}x:^05IT?˒i}؂3:^	g|7u;-:#HL[XO@Mj'9Fs<q_ot!+3nƬ^HYEv3.[J,#=8IvVw72Sfzq+쾙֤d!Yu&V耕s.uH9}	>shJdEU>1|%MTQA|:HyF-nI^n>69*7~yKqQ5EvcGzl"{ EOƭ1'i)`)o;V^2
շGmɐ}%"'\#HM驖HKrxpcv}㓂?7aHY}37dIq(}J9F`Maf9#{>>u4ctíh:_=[2of7jO턌b?!^|Zw/<(!9vR֐ڗe
8@նq'cuYΰ/+MG7~qI+~\ä13`Df:m;+:L:f:#jg)k|}G+X̩=J0+S!1a:i1
26$>.mIN3~\7ύ*=Fǜ)pθ2e2TA:Jciw8^?~jo8;H6	T,̹։A+#OS?>?GL~~"p
nfs#n7G:vdˬPJأ֎hoߑ/g|ȸZs-R΂8SDhrV~KKBVBӵaWP'*斫.c/+tX>(VXeb:C],_	#LSv]Q4jXmt=L6[r6T;m'YN'In^oR/ɫl+WQ鳤Q[q&тC)e
,IƅBo pFAXmlU
U:ԨlMȏme
e${.r(Q肜BsXd2됵7M3Y%HU

geRq1UFE"GuΝt0h2f(5VÃGxNYnRrJL{WO_m}}yv,D7eoiSV#{j3ؙ)O=21&|!%4	vu.ZsE5TH~lmf*՛t:~IݒnbtZ~S7neJ5T)%J=IY}bF/F#Yó67%v}(8^/j/K.cw(tom(Z*nn#Ԁ:lF=ol捭Tz8(.E}:e
UGպ,*T/teR9>%
7
=-{/bKx14ָe},**>(=;ax==!m2"8;#8G.VQB/r<Fz͈ӝ+Gxk=ˡM5z?ȫ]Y8߇U s8KXK4T,'ĬϡFgo$t+#S}'<o #(A|~vxڟa=E|E)^bcƓXqxuXT^"*KX"C|ZU#	ij
<K՞c=O/2^RP4˗b (=Yf_ʬ<V"f^2@T`Q§.a<u6()ߤ:Rߢ۾?KNV6[mR=iU񮬊RAӘ24EkY=Wzjg

yF^FU݌L!H@|K*sU%}ʤAo3Dߥ?BޣSݟ0?X3eĲ KGe©R$l&X[(2%."0[>ɄfznNce%55s\K֏_1Jmk<QwڸTvryAz['EDc*%bULSu]Xn4"MZGemsIsyn_Mo!_묥ú1k,RMeSS;J鳏Q.DGIb{3Yg]Bmo$||QN-1<x6ΠaO{6,N5k7CseVGXb)"7r+_+*?< 45MT^Ui*kbLks!x	n,bJ,5J ,'<lͺݵ+@ǼW&OdPAlX"Jlьf#'z	ޙI/JHsP|FenZb򼟤8Jsvn(ٓdT~/YK':RU<Rq׍zу.|ZAA.߃0]qCjr,钂f<
zDsYb6޴Z㢨Nmp5
b2:
<`	u'Kgvc~""Lql8!a3GW88.&0%Va_Ūr˩[Q
E`3#7xB?]"O^:Lآʰ".]i]ٶIVAe|W57~Tg5BnլBZio$"GZtViza;Ӝ2rq
j<&α;6%d+_!JBT|CJmrQ|;Yޘ'?Ǽ@SLl@qε$/ki?uI`?ץveobykT	?`p|}s՘P%DCZS3j=PKT
  M  PK  D:U            L   META-INF/versions/9/org/bouncycastle/asn1/BERApplicationSpecificParser.classRMO1}kQTT# A	cń⽔JJ`wWză?e$$ڙ7}335$""A 64ljH1ΕBV71GxqRQ˭FڒoHg\]+C6FÎۼ3Hf/p-(Z5JVi4
[[Fy5*ջe
eI^9%\K˖D]ߢT{NAd.s =_,Hzҕך0ekձ'
wnأ9GK0yt'/Ӆ7^PiL	&)(a/%C
_C.VhJD/5PK	2k    PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1GraphicString$1.classRKK1huj}Է؃`kѥOO6[ҋ?JvBń<2y{y%HǄ1LZ00%4lr}J!QXU*qiՅ>u*k*/=iNlI#o~փ<_<Tww3ԌQԎ
tEt'e$:hnJg#rM!iWf²0`ȐźR`p*J	G!BWY!OdbjF",{=-?r_^ʴK#GCvXk'ڒhac5?)rbҚczJ,PK]`z    PK
    D:U            /   META-INF/versions/9/org/bouncycastle/asn1/misc/PK  D:U            J   META-INF/versions/9/org/bouncycastle/asn1/misc/MiscObjectIdentifiers.class{Te//4

9s dw Ah<s0{ؙ3˜مD,+3ˮE]Vvݬ<0G볟}罝<;9 wN­fK6n΍wkyƝ̻4fW4ϼWj|yƇk|GxqO0?)5>|H<Y43<0"K'_
1ט_b~[qa~WI4?1'O135fB_i3i?2=KθdZ+p^0vϭ񂺿jKfGZ}Sg
:w!YFo:uHDONYL}9y>?j^mةxfrJvM'~?K
lknSZ!-O
5ҩ{t_a^;>u	j.x*n'|%h'NYgeP\9WӷkÐTRWW.DKu*Yj!fƻ?o/)L]7+شM',
܂S.ϑ$eHOQG+
,՝p*7"g~9sFwyqsBˋv:юD6NC;lw6]$:B99?cZִB7c^Ca>5-{1RF0:%e?.ڬ05WbFmreLW'ju~^ݙtNU촕M,۲D&A\oVEMZ
"IFd"(d#pYؔ=2JX.m㮮EY%NMS^~)e{SIz')6S귒psm[iv"EW[ӦXi
j쐉m+aQJgjH٬arwh:ٝi?ul`B6n&ҐF锻mX'ynGcQrJkڞ`ykSo㵗
c9v_Nv̍gya}%cԙ>I+Lg3)KΉ}PNVRNPkR/3u8k_\Śl	k/DK0lח`xcX4t
G=m%QCpaٰbV

wCúN]
݆{^cZ^ox!Æ7_Xōě)Q-)615zqtC:]%sY:S|֨/%k̖5z^(9sE_zY^
W}jmAH5^(EM,.kY^*dmxy&єh5#e}Re2eM,^&9ѕDW^.uW5`$QyMWoķ<$IUl\\yȒp	[`Q}eޭp+V؀؄{*稢jvhحbأbZj#8FqH8:vܨMAܬnSOn4S~ʹ)xPKkݨ  J
  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/DERTaggedObject.classVmSU~.daBIH#VS[i!-`$t1$473`gP?M!BJsߞssι熿ǰ57XЇs|b-
ȧK<lY缸dq+*XU!uo'3/4DB懌Uv2j3[x!SZ鼜
PY)Еr
>~rX(;JƑY+ݪW_CfsP""%şgc
R`h#Yq*N)Ikwvts.z`bzfEV!%,
db'Xr^wm~FA@
qB+ɽV0Vzl2#3v:ťR`h$đ*VJls{^e1Ⲏ/1>R@&>q8oObJŖ񍎇x[=#v}uXH Cb[GryP:;7'3x¤'Ws$_{bLf*]?y"yjFW)6iWcP?Rz1~4ױrkEA@ʂco۲$NżU.K#}p;ёzr*#367@c䣤z\=??ݔ!ô!ep %FHjh#ݮƥxI ښUzN?2Dqs2BN.cuIrsWN2nڳt<:]݉"K*	TVѾUA\C>,Y):g?$-*:b>%8F 	
:r Rծ~q sżcC~!_mq
HN鯴q3)Cmh7Z=cV^&\EW@ه(Xݑpyy*:IƉ2.»}8S),Уk6x""n^;OOoǅ!}Q_
wF`3|if(5xKckmRq߬~zu>mf\$cnPK0>v  	  PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/ASN1Object.classT]O`=om>L? D Il!ьhqkJoЛ51p2>o[0fy9yN y혈
JI A<I	j+fJBVc	0a/0lќaAQb*!,VbUrڑ؇v0%6,&a!}֫V4R0+n]$,1ĕ[|#<}F9ZJ,%{.ЖuПvUO^m-7ƁaGP9ZVcKZͮV35
jI_5x('y+蔑C	2#Ɨ薎m}ZՎf()d`!q
w@>!<cxv#w=c)0`9QQ]8^lfm5dP6#o@;JDIk+k0u
n"-nQ&*U:tKxDq{|8!K!6}>{o)Zr+}m-F1$V:ːEM%)-{Mm
Jgi°&\5JFP<I#IawDhB+GR<Y-@"[Vܔ a^~^ݩsЙ:I1p)y,2ALd=ssaPKH  L  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/ASN1T61String$1.classRJ1=qVo`VTPluU:52H&+ݨ((E	ɽܜsrM,4m0aaT0d~]0,)RI>U2W:h۷9Ӳ-q:ʻxh|P݃SS5ZVУmzRjў8xtZ*~alDIۡ ±0A´AXfb<VzusEб"dX}BDrvKA;C-aIH=z7ׅ|}/%d>Z-&`/<=RJq=Mwsbt=?$('(}5 c3bz|PKex    PK  D:U            M   META-INF/versions/9/org/bouncycastle/asn1/ASN1ApplicationSpecificParser.classuMJ1_v/x7*aWAGh/P.!	ѫ JZw(y/?_ npq0LZ/cnLW~Xj;φ05i:6TyԹZCe\eγi䝥R&g-%lq,r{Ip9zῨ/E4VPImgBBGD:PKρ5   W  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalString$1.classRJ1=թE.\jn\c#ӌdR~%EPiBrͽ`+61acS61ma,ЎT2;ݐy{%Cv?5Dj
}Λ!e7:jU[9ղ%|qmFmw|P<Ve74*=/`7őLHE7:7V*?bJs][s0¼,:X2C7kz*%tj6h>ܓb40&HHPЛ}-wW",d"*24kDG0'h)^JxE汫zbc|AIPKf־t    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/DERGeneralizedTime.classSKoU_L&mBR:-Rq4!%I*p%d|q'3<v] 	.
,PWUlذD9wDcܙ~q~08))i>W$T$ⴊ1%2ń\H3,k
+x!2m;a׳kKn3l/5jk[1תunΙg$6Z5J(<۩Z"7]#אe(
hhGET
I+TRfH׫܆c5-.<m֝lqib!62r))nY|CخSWp_T:)#/ѮzvM8WuSnó-xY?ey1yz
1$͈42f\&f+)j9PσiǌCxA@8ڻ,Ӭ5\7i>>?NM\GpGr
h;
		CCͺ5>̦n4Biu7(7W]K_u٦2<H/
VYTz|c3-y #[J]pN*
R{;
Kct@`R+d8 D]z4dU}aGzWFkg H;%GHwBXi
g|LY1ZodMF䠲h0$ȫo+KzZ^iw}26w~ocE^#:EHJjKwU'Ie'8L4)MMs.9,<pb6Oqc.;-+EDqGxO~),LC859UO<;{Ӌ
8J	|!rZHty;Kq^i;LHluo-'n7PK𡟶    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/DEROctetStringParser.classTkOA=S
j(Z_P ,`,>McY);?ghhQƳmAٹsνgf?~~fmǹ88o!m.%!-۰02H~\p¸@_dB%&\Vr%]'#SU9i|\T\Pb'AHf٣/]V)B}%Yr̢gT,p<3꾑2\eU^,Q!ĳ_󍿮ȵgyf|DtdtǾ꼬UE]=5ǋ3Ϸ$A#5)Z:&\Ǎxq8}m=E
vNimƲ6̊.G>]p?kaSXUօL}FO5C`dFz3S;Y0HV4G=o
ϴun[e6:]bOfޚ\UxҼ
"#ÄK`oJƚ(~l7j3[Rfgtذ0*t^ Pa*HQa>ZIT媊Z:K_vLh(jȷ[Ocs28qѱ%9aҞlg7!cӄl 'I@qڼ'$>lSP8MlM}Eϫ&z$dS`;8Ez+K[Dv}ܯ5/ٱ7{D/yorPN3ƌEDp>FO;u?ף_PKd0t
  @  PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/DEROctetString.classS[OAeԶo@]EM҄H,SFw2?M{yG5=h
dΙ99߹쟿o laW(XT4e+X 
]i)(XS`2w{!4kc*a~QU>'<jk8Us7Ǉ9*oO63ry,-x!%Mݪ@'VM3CWb]\űu)Q䎊3nUw.\&­z1OKy[=8`1IhǭYW!<P)TܨRM
ϰ9^(3Z
)v#SdXy;.&1zͰǀh	^{*0Ls˭MV4KSkQJdǛCX|[;[uS4vr@_Sd71TBoG,i7#/9Gyn1hŜ"H_
I<Ɠ	oz-n+H:V5"HhM!I+#&>p$:3wtT>+	*Ig^A~f3S.gIIPKf}  `  PK  D:U            K   META-INF/versions/9/org/bouncycastle/asn1/IndefiniteLengthInputStream.class}OYǿv`:BuJ)*B!)FuWi{b>(g^LM}ܿ3)j=9ޓ .અ>F/
2ZÕ'&Z01fqQa\KmB\K&Ι8_-)r<P׍_[uU蒝p|\!=At]aPyoŠQ,kB
t*AX_}̝ȯkkiMEA#\71f/Cl,`:♅{7rZhl4kz6t'a]?`]htLmQp
6ᰍ~V83?Cmď6.e\Q(5FX{VףǺ诇w0
:p❻mX*O5:MoH"eM 	h[\lS|)?pI>Ksv;$\T˦ݷHB̿v;oⰃG14ldC#X8Eygn$M+81qzcm~B'썩OXLm+	9S4ɗӤB#EXݮ$Yc:	5¨lr1h)5~MTEf[bD*!sRKCz&!ӋE1Ţ+-oP"/:Ә,qPssbn	~ͮ=8j"VvI]ѦR	tZyeigߜ-1lGDL.V1DW4P#_ PKl1  F  PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/DLExternal.classTRA=ۆe!D@)w	Q(h %fwH-
.J>F7_"Tȃ?Xb&\
LmL鞞 0tʨFt	CzŬOȸA	p_PFF$2&Ӱ'CHfvTbap2Lkg39C n|!ֲ`|js2xrS㎷OŶ_Lnо1npkm̴yK4lc_fYZVS)7v_d%Hf~r]"ӳ'bVwIL4Od-G `sT*aL8&ԢA#zJx01(Sӈ*9-he캝g)xYCUT,bw.C[lN/3<w*5StZ
zu׉rC^
jl{s+Tu&J8h^Bs1T몭,m2X9*6`"XL1/w:Ca>Z>+Z鍮mHEcY8
,Weg~4S
b[Grp_dEıo,w+Ñ޾zOa48!
G"8zoދ9SqE<oUA?ByD>(#T
 
i"Xu\<ΜhUrb؁8<HWhFx~ְ:	1$T 7cTHKoP!IQqNhT6'PKm3)    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1SetParser.class}KNAVD%xjLpŊ&$9AOS!CnࡌY!Tꑯ_ U8U()ځ|V,&][kbXzO#glJwQBܯǲbBoG眞Mo\֕qԁz#~j&W#K_)CZBC|2B-)2Ǣ'7PK@   N  PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/ASN1String.class;o>SNvvvFԒ̼tF
MĲDļt}5#Wp~iQr[fN*#c!DJA!(]?)4/29$'U?8PA aRVjr	##00203X@
 PK]\      PK  D:U            9   META-INF/versions/9/org/bouncycastle/asn1/DLFactory.classRakA}\ryMmjj=I৖WPT'lrmE?_P-P#QR+p;s̛o?-p,jP1qׂ>3q߂8sL<0F(z:/}(>v{0gRr l-_PMBaK 	涂0H	ZK0v#Ekj_T>G2V"Q*~2:Io֯y/^K&%UMkoXGX ոlD6ㆉu5m̢HM5larIi=un_AW xҋ}BvQiӝAY+gE5Öf#v`y4N泎0c/0=Okih 6 oDds\925WOE.1\~Jhr^%d4r$YiZָPKénZ    PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1BitStringParser.classuAN0EPCRl!uHE"'pQ*#Ej,8 BL)ʆ"Ky|~ Hb q"188*W>R|?.ԫJ*Y^
D7Mi%,̴N19kq2izj˟'[ʔ3Zr/غ2)V)Q$;ßʔIV,H{S\]yujd{ԥux9 C*s+PKoqd     PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1IA5String.classVsW${Iĉe9ڔN*`7^ﺫU}P} 
uJ)B
C2Ӗ_`aȲg;|qϹ)xVp	*&pF
ΪP$OiYAOUDA9#PcVRߜ
Ӗ{<䣬}XT/)xA@ڶZzdbcC9-8e;Ke%Hoȑ3ypK5`	G@sv!p<;_{-.Μ7^FڳG=״t
Tђ3mc<?cŕ-㞞'b(6ki#mS[>{[%&ϹѼgȐ2h疹WkSvћSYmh[(Kf>3U.Ϥ!/[b/ɤ75IZY4<I,U'NԤXKT<n6)y+LJoƝ7N
k}м!jHYe
(xEWpYU'+qط,[n<3Ri8cq}afB_k^k
u|C75cq|K÷9,gHٲgѭU}JuvԌmbݴK)3JtY(=|_C)G2oi4)XpoƁ<%
?;~w5O5j9c:]ItAg	~ôVU`Qw#Q[wRo:ѪpxNFսzdeO8:>CVT~)u7eکPJp9ُwfΤ]`]mOfЖyiB/RWK͒B}^&N:z$~9.UͦبPL+t=*of?:Ũ!o9@l``Č
dSY[.gT(ܡU3?B  rPYj
ߓ,=XSAr^lM}3B<丼\̕ުV
1.XF3@'	zu*ugkSz^^r*4^n/>F`67B,!YQ\OnƖh~lr1wɞe4݄
#Y-7qWFFp-F3<@]h'߽d&{6O9H&Ї#DhhuL(PZ}o>zzIf"y[H\D2+H[nu2\u,ak
l"m~+mFu`1<888KOhaۊmnDGbOUI$*b=k,僞g9_sԜ5Ǆ|\,D9K-C	76D>WлCtSjRCJ]k6!zgDJ=τ}_fU%~xj,*tWFJHIe^P}]/^d]XJ$B{)K
dKM|\$IyeV~^M)*{j]xoC
{TpbhKKJ[eKV3Px]=x/<3CBq|ݘO@}
fs]#9#1eBw3 Hn/AϙPK@$  "  PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/ASN1OctetString$1.classR]KA=֖ٷEiB=AXddM36;ꥠ~@?*RX-ܹw=y{y$Obf!xx/%Ca"$?5ϽZ@̕Vr_S-{e+J7ܚBYpN|Mh!\nEWd))MᰗK['YU?_ݴސTH#nUt
}w0,{uѭRe)t6^HP^pnlk`Xq~4沿y}XF}-ѻ8gG2j5 Xbn?!"aKRN`ΈPK,w*~  
  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/DLTaggedObjectParser.classU[OW8,u!RCk'Jc *OM]kwRHԷJ-H?̮!:|ﯿVc>$n""5,V6%wXeK
+쾆uk[	m{ct3mv-
3_lWO|d5%0bڎh7{*
IZ~#CF*0]YSKeF[ݴZ^[؄*0bg{ldYh%rkL@Z?<!fua[vؽ=T뜀31"_'`IG+n۳#3Y4O*^WR%<q:VQбXc|y(aYͶ*miW*<<_-d[Y7V1
\ձӃ,}j맟LRm	d?}2Llc&WzTdNoj&0CUXkH$t{
EnjeѤlf#
k;00{e=O܅.9<A-Od]6i*Ѭ
Oo-*<|Bo9p糩>DvOZL>I`pA<NS\vh2n7
^$~Z1ZvY3B0~"*Lf9l3o;C|OP</ttH0L"ENp
w~K4Lkd
v8s<}FO (GaGǑ	Lȳ0:O(l0KTT[$_D|uOG<eBPKg    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/ASN1StreamParser.classX|[eMڛ޾[td݃,}O`A{GV^Yrۅ7Y*s(SED
EXk*{"Q<T@DyM~8ss'> "_v|AFvHD	_%^_*L\O/p9WJ>e\H*&Z.I
&yoʘ$|KF5x7JI
;yq3n.	ߑpZ>Mw=^γ	{e8q;e.f-c$t_	,2>K#<(ae<'CXp!ued-G%L*<e~^xO`+dCB/L5΋<[<M`KŢ]Ѱ_,wA
z{pzz|_GOHaYA*Pձ
j۳!@;6Ό3[8L+ߚ
^x`iC0yH46y"ZK-7cƤVaWݴ2$;yPHb(	kj%<%_Ow
8.׆-,XpTQgXd+Hh8ƅz\Ri
,^vکj}э)
B.Wq{͓3VwVxgN0,0p~E5ܼbDqXXW0+(4δS
~gl"bp3d P gxpsV=
~)F0 
gj2ֱQG<'P>~_֌G5ӯ5tC	GU_'1-U',]>[=t<aٻBƑX?Mf`QÙq_Pf/S.¦;3M	 tfQ_RJxY(x)xQBʪ~%'_N;e,"tF<KKPH-0+f]j4%fsMM Ξ&X?oQJb*51MR/UaR#m$;	;3X?Tð{,";v'#sl_زh~xeCcsRcKqknl!~K(-qKVԓN5XZ4)U{p,Ą#Ԩʌh=jGaK	KI
:
2nUj0<N
ň
>bLG<H=M*N̨? OoԲ5bԿz;5R_"ZHdx6I2p<Rp=CVqwY7Pt,dNK5Lȝ۱.K>E;^"U:)6qί{r㤷Awuc1WiRҠLx- ~"Dd	jc&-Uw&rDRjo&{6TG7z(2'&PMlO*
9~g̠Nppޫ-gix횞ZnQG
JoY12zLD䏷dMdSzh̢>#ػFkn#rI	I&հJ<zVz~HBWog0)K'Q)nJ6A#ޞ|52'xR˧ v=E&%v
+<@bIX(OI6ap& B2~_zзn8i5 s+;F s/.=(q.4p`O0a;q0]GB4WqJ
B0ұl(@
}e`-}3}+Ðu`q!ٰvri,x&Щ>難Sz !,BtZ~NL󡐲EhJ;yc(襹җqc:w4Bf`AR/ߖ3lnTJJvVRvK,{ lA50YK;paE;AfQTͼL6l͵ЎyJbS[2oF1m&OE2O_ε
J{6lMnMDT^"N[y3x~\FN';
JqչĪRfZfL4.$-&C/`%Ni8Stj5c
.:\n@q}EdԓCޠSBbDLl($r$Q5k6	1J}:XF U5"lq9fLck?l%`ޠs'V	ģy;QAGb&.0ALOa@AfV[])Z"
ۦu:3u/MWB'
4iIMyB<MNp9q?ك&	k)w{#{'=o nM##CtZ/E5L(]s	&i8ظxrMZy8I%54KIMCMah\ùNx͜b4!o6_=
\fį;m9rK8YWyxky|-E<sAj}se0N=HnQG!	)|WlEl|Drmނ|kQ:u?%#rQ7a+yqu7Ôm9)?败TZ
xB@U%e+PK\8BQ"\QC!\}jRM/dقzE;	1&	 R}
FlpCEjQp_%ɠbjAc*X
A!0u{QX Aýdѧ'$uQPSERFX0[pR;*J.ʱVTRW<F@c$M#d	rF/qT1è؉% M-!+ѮIJ>],̺ńyDvd
f{}8PK}8  @  PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/DERBMPString.classUkSU~Nٰ,VJSJi(z%	&ildsLlv3c#qCg|q|fH q?s/ >pMDB!!I
S:4"挎(n dq;}WGTM8CoMȜӔ1x);R0e:wZ;fMio:3'rQzSK3n<-G,++MH_Qrs\
O\*RřD5Hٙ!rr,yap9#;^}Vz]L`;Vcɕ|Y1*gde>r;S4: ٶq{ׅ֫#I00q]ٔo|V,D񙁇ȩh1
|EGac<1pok(d<UWNgٳꖴ6HH3(?TJz%ŬCB)};Νӱ/b1*1yء3|7.ȺKZMND'DڼInMA#E^'bV{c'vzro|=~VyL[2{ڧp8>O3V1|0~r65ިnJkiTuFq)S|OCTmo;w$R!ӠEvђoH30z:WA}QfGtГm"
lơM[ygt M~ :]zU@r6vqQE?]xhԋw1Q(F&$ӸD,ݽAbOU^P
UE8/\TR`pC;"^;ΒY?XkFA(^:jU12VbE;8zOPErV/v(+?c:įPW"^0<~h%E~{PKjl    PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1NumericString$1.classRKK1꺾oK*O(z)]f%]EP1!Lf&C_^laF?mL`,L[aؖJLr
GQ\dHWa"8i5Bx#JZr.4gZ6m+FR^	#UtO=#LhRlzR+1հ=q$cљl-O5;T^FT8&0` 9Xp%Bo.\)+%tV{_PdUG<uğ.bI
d#/轞܈o{e%]BiqKѠ0HQ'ڒhac5>3I$F0JkI8)<> PK*h\x    PK  D:U            8   META-INF/versions/9/org/bouncycastle/asn1/ASN1Type.classmQN@=Sʣ5P0FCbA\@X -&n\h!qQZ;<?^ bSEE2Vl-Rʐ]!7͝=˱}By[1х`ȴ,G}1Mm _|򟺸rEP^rΐxܼ:P5q/Hr̠vFӉ),:X|1
	lh!!d`GSǜlapש$3.=y-JH_2f
UTtH4 UHO:Ik +Z!tR!o"՟!=PbA1MN#BkER!.C<VZ I )lX6%ZRPKkY)>`  -  PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/BERSetParser.classS[oA=maڪY`X/5xIhK!Y	n]TW5Q06wAP	;;sr7g9o /#f&c2naSBRBJFiT	)CƖM-uKw\0Sתv2>5VN{Rϕ=͒|yhZ!3(]a=kahZ|ݬrP6X;scH,î	ِ
Lrj{E[)iz(4#LӍ{z0wq=l?3Ef]r
0/ᶂ*)+	AL[{y0h:Tٴm{'9Up;xamќo[uMOPLlN_]w]N[KD:+XMqw~~
+dئ[ӥG1NOWJ4}q- A"T.GZ11?H#5 ЭЊ?~B@%\1Ds4Kq]rDD		iQhw_E24MH,$"}3Z>ׅ2nш4`PK&GcQ    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/ASN1OutputStream.classWmlS~8pc@	0 @Xґdk7\C1ʏlvڇF%R5]Ai6m4&im*˞s|?r}8 `'1ⅆQx̋qBǘ.1s^x0E>^<	tL&0b9)XN	ŬX;͈%/XΈ嬎[aVCGT\/[*gJY4R3{4ܘ;t'B)~:5sF_j6-XZټq43iGR9J-]R>JOyLOIQN\{9!\&58ӹ,Q|*m1<KʕfOjh:_̚)#mjFWh0.dwL̞6K_iK6m
&+j.W
Y*"u卓[]f{(Ӌ&2~H$dR23f9+_uYZ+B\ѱIf\<rWq_^jQDOU"|SYs⤽"tp"UX
I5O4i͓CSճIhԉ*C|O;\(ᬘuip&χ(51fd2Ӈiز~&a6E,q6`>K/T	 14K܆
t<Ex؇~|Z,:.%\0>.!>|؃>Q
Uy6~A^7vqʱѤjOwYԫdNٴg7&ӰuYh=፛|8'kW&&0/ƻ|;w&][f~R6>{2W	ӯUGH!mN\˵!E0RꀭOvrp%HS,|//@,P椶7;*|e4׬:{Ozmnm_m%}QU.-"oDތvrLkbe}R{$ntr֣_j)6?˹ຟ(!1x'c\e_iv0xMխG~`DKXl>zGYx>PA}YlCmt-*#0[#==sHHﾰ7=. ty$	8etJ
M\1']ށ4O"bNA<,ތ,]3c?jݢ#ctn-x+e>q<).9>7Scuz@8rه1vIpΦ/Vv}.D#85f!}쩊S[,.Sb7P>C2k_eP`.VY
2pJClnCuIoqNmA|P!LpMTSp5 W&DYl?X=tLG+D_)
}eB?HtfA]n+5DR!H4 B欉R)!Nyp}cq2p
c@9OrX[Z=V<L_?zyU4KJF[~kt9ΈGpį_3Sr⟕,#ggvwXџ3w/xT+^! [0ߓq iS'٬d֯~sJyZqQ,ȼ`:Y,j<O+OGпphs?Wlt\s$Us9n%gs}/N(!4!޼)mW;ᰇ^D
r|(A|v)QW
Ro3WӱԚA+A_ti5PKm    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/BERBitStringParser.classUkSU~NdUh4XR%,@ls9,4:cSfw{6! 4>9
E#L"aNGɼt}
i#Ju<eq|aE÷cО5!Utz6er_"}g!Z\HOr Ġ?Z07Wp_zMSZTe˱
CvdcH	xrf*m^ie.tJ!Ynni4{hHc0yӴ̕N7.V0%=R=gX:DÕ~7:vqg=CkڎXN]yYq)-2տ3c`}S0e [➁n̷a;
YCFu
=du%FI=ǣXǺPohO(2~{@DvrLܩN98Y}U:i6tc[}Ms(<II?Pnڒ"=$J'UwSY. ^ ط繿iMi٪.^F}mն.<<F6lr}ѱ:74
Ѣ7t7Gx ?hCl϶K; n5ųE4ڎ%OdrEo@t N8!ud5ڽNL cL%BьCj'M## 6n@"sNo"ǈ<}]|4j#4
!nh;c{z?N#D<_t,YµY"49	y
?:BHZOqͱĸ.;	~&} 3w=;=̬F*rOZezQyM/PK5  J  PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/ASN1Null$1.classQJ1=u҇>T(USIMJ_T|(qvbB2d朙7 [Xq1	rCRKÐ-oO(ԊR0dRf攷EW&ֺJٕVQQÞY%|鲿prXa[Hݩo

{&2&_=6f0"᥃9Cp{X%,3S`2WZdp18Ԙ:VfGIӅEV7_%\XAix
!90LRgH.&)nѯٸ|~egK(0N6M `	=>PK|t    PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/DLSetParser.classSoP=0
]oV[EEc4&FѰ	̣`'-W3Qf4Q
clnλ?P#
:SM
X[V-4VqGŒ0TU*
3oZu{6xՍb5ooEȧg
5K!v]ۼޢFf}G!ò#Zvm!YdC+E't<7 զ+o	|ήJޱùjsu}[92ȼTEؿ:2ci+:pQ*,tq_e\aP7Ct6`PUbȞNqF>[mZ5ɍi1fv-MAjQ2YpYYǐI?;)~Hr~hdE&5u|Ջ.H'ilO8k[ACK@o3N+@&jYE4 aN9"-R4B!?d%<.Eg{E6>/S'cԫD[}M9iu!_B1)(#KyLOp/_V#)PKRwѼ<    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/ASN1GraphicString.classWiWg~$8aeQQ5(B5.FmƆEZ&c20	m_Ps~B@=,}];om pM@\xp\@W=NHऀ$Eh!)~138BS F1.c^Ky/2Op/i*.ȈhGV&b;&L	aV.
j3NECQ䂭Q`D{G{ڴjd=5Wc~4lհI3АQQeCQe#T;㖜jʈmiF4iLj:XMVJIvĖ9_zOW35]r?(>BYzoHU/!7B4M
*ZKw%T
cs{Vc=TEr.5okH@96~(D&aKi6U.ir!fx&ܠܘ6C5+gQ!Z6İR(RR6+g,ZzLl]`~HVFyyH0`J؅Ny	a1_`҄Y2z$ 4m*P.4GQ4.I؋f$\^:qUx/Rm_t5XaS-eUpi뾿˺lPa%m#a7+=ϰv*i/$|%|%Oy&>c読v4~zI9}4&2=\UTWQ+VL3,5fj
)V%je3lJ/~tCPA@ղL+y06)>Z>Ygθ
.ߧ5Z@Mգ{k@9^2!U"T/XM[rGbݕn_+ښuJF4Tw;#|ƯÔK
CMXOKf+ʷ_TgZsx	Ǹ"v-QnuAu˔?2t.jƴ9Tݞ:&+i4ͩbZɒ;NFZW.2Jia9|`~YG(1?0~(nKj-MfEsWtPni5Dow%

1,`гgm^d]}+h75\\42[y49uG/8A<C]uq&Av/q?$=H93Bhu
 ىfO)R4gu3r<X']@hK<	BĆ7rnE]$Ob=-=x0>H_v@G(+߱\VNQnzx	xWF	$<VnMV $Ts!Eڛڸ6(k-*S#Ӥ'Gyv8q]/簅&)9ɟRáکRM8R:3Y<WNϑh
{籭]]|Ch\6FDQ;%<V4qwmu$"az?PK%  L
  PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/ASN1TaggedObject.classZ|[yqNl+vd;N  W@vv@ol%d$9Zh
Ў++Iu120qLllXۭ][uv-^B{%_+{ιuw[??*^
4V
^{^~_?xJ|؋?zUY%ü=/
ҋwWLmY~C75|[|[+ww+Q4,{AO2eW~}/Z~ſe2O
ϼR7Gf
?J8񞇈&S䪄R$yd6Kf^J5eZl/*\9UxJzCU^tQF5^y1_Z؅hT䫄2,bZR/ne-vԨJ/"̋-I%;m4j&TtvuvvuuP#G #Opl(aw8m|{^
.ڶC;	qh,F*ECL]<IJ	BP@b,9	15imY$1c#tH1t0|8ǇZ
4"+P
 ّd*h0}-қGuGy/|CXؽAս)7{E9`nB_t2uX8XHH4=x{9éaӛ%+fecc$=m%;A!mv፦U4I4=L&yE%N	ڙt42)9I,2mMXX/S0Nc4iDDhd[hf</#jHpR"͍s,vYd*#*Lv4- wd(X/L:)B攽:y(GrT(\vj|~,Midܵh+.YrbP"<yad59XʩٛN.V&hlpZTd( k1f"LpPU4ڙ˫PfI'Ls#I&TgX\ɢ#RfAfVnfXa#r`¶_ܢ9YM%#Ɩչ Մő#,)¬:£ǾvZix*h
n,aTc1c(kKp/pjO$lhNti-](jmi#^&BXl{"gH&A
Gx"0qqxjtN:]a| 	ڻv
-D%ۤ
h?'#Xt wl뺹]-?_R:㋄
v<v
-jV<qL(~1UnND#H0&aܩxDN|N.
:>t|x/;Je|~$m%#X AnߤSua|F,\8m9f~guOhN;W87{6ܩebH)),N{f/	uK<t'g1unl0$ՒҨ.xF9Q=%=@
. 
`̘8vi:8A3[I!;𐇆%鐄^i4S4QiXNF$Fg}!,j<#|Jșn fN*;LdYWşu^nnKC4ƥp*s#suz? 3ܷy#CrDÙVmқKLu>@9=X=i7#)w-(=,~(3Q%ۺiMCW1f>nT]Wo'SƋ
Qg@ED-[|tEFu˥wcH
ICl(nj9D:<Dc`ѱ,.@c
ncPY"3?;x/dćÄ
-Tzƈ##`K{Np2qga0k3!guTw꾢"	;EO#Scm!f\WoR5ON*ɶ3L?jK.4{g{@Db4X(^AFyꏃH,*3X>+8w
gjl	I. ͶrW3,3^꒕yL&c2QNv=nMyK`a9мXiQP"qhlz07ꨖ=j,f5&Ƃ%z*[X7nyWlӺ|pE axP(Gl8(ﰭ#
!HOc֓;C~6btόq7@	cÁxtkq;ssF|$/Oaw;'ᚄ{<t	:/pd#0}e0cW
ИGyE)Y̃o#˰#*1GRϱCVTR)*ɏ-o<+EŅ$*'0DITC)V2T7WÉ,&ŵ,u̾]1X1;a{ 3uR=-	7򽁉ovÇml6
[\Qs_Y{uŝƕ>xGn|܊+^N8<<-6+Z+
3#_Y,xQ~SJ1~VHYH[ITXy
NoA,^̊aލ
^	*8yr!Qp/~XBu>ct_^wu:YԟR~u˦
Hklf/۠/hCB>K؎p}@.v%4"Sri)eû}\8\%%ú_fwyKNK^,~]<LiOsf"q9OqcWZW{70.M`ih}x8=/sqrP~Kq	85f<^-4؇d\&9WXהjͺ:1ü0.aă٠v@$W4hXq=}Y'tyn7~vSe, )X9
g[<~*/\wx4	QJx=rA?iF^IPਹ^x<X3T!ToD2UgE}sP2ԾO~lCN?͔?(vE91h
GGR#g >`Cf 7Ūn&zO3הLuNsU;<WkT++מUݯx6hMMVkj΋ugԯԩиJT0QGXBsHUXEXO5Fu#n$?ciR~\*+y$ZZތ695f W.	\s:
(Q
ΊǧNT
JTP_S&.YRtXR4ױd֟)y5j$--Y[e
!#hLC?%s-VEU,yY)rɡ<ĔL91KykIuG^/'Ru"՟aHV\mZkDI)W
KL\)6O QAwRøȻ~ή2߬Iaɹ^C-d-![&6I G90qܲ-|
'y$" aݾJf[	ow=NOkSmZ,ioy]l%kl
<Y%֡8'=RNgD*zB/ D}WUU\r>fu>
Kޞa[U/|17`+TzRaD{X9e*nYU7dC7[4ZHM{=6ni<wL`xKn@}kXK`N:BM.eRR!lRN7-yw<<}oҳ|>Ӑ㛇в,ӗZ~u/G }xAr/6|\Nu?]rZI-{s^ٗaɃ}sCd=2-=:5	!nN	Ni~Cr3sؼEw]}snaNIEӯ$gtŕs~6^	#G)f;P阍ruT`
;5֕߭_vnMS,v8ao	Vn	;3	Q6YX?]®((|5= ʾ+-ǖ0r=,ӄ˵Zrc:֠ѱk2]E4j8x{g:^h> ռnSǱ	c3tG[<zOiψ]\mҮ{G-5~M_WdddtqPKU  =+  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/DEROutputStream.classSn@=c'1 	h+VbU	AB[V;\;r|I7laS| _ \)<׾:3?4p8b@8CKA

7bwl-\shMmb苮9ج?es9Cc;|g2sf;h\߱^[Hy9MR/=[v#F|nw{X,XJuixd'NW
uFKglaq)@{|&aﺾg=[Ih8D
I*+g\'Ýi*gh3A1TN7܆KWnw-Agڔ^[4!q(pyE΂<
F5d@rSdƻ)6d2'PXRqK/#g0@mDNyȒJ s)  <"
AqQƾQ}G [bDR[')bgqyޛXՍ*K\~4J}7HF~BNSvVGPKQa%-  m  PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/ASN1Integer.classWktTW<r
I@& !Lh!JByAm.p$RڂWն*A,ҒDЇZ˵˵]6s0	f{9{;{w>|@.aCBR)IzC^|x Hpb	bãQ>9>|ރǼ_$\+|x|__'I	Oy
/87=1$~[˅S^)N{=<-8+9HFSLI&$E7uT"2QfLSuk;ۖnMhT#ĺuu,PФ'0)?6KI
A;7&C~T5HDeXl٫PbJ"Z׾{1NjT5I%-ZBmKwF;F+תm)u)Ѩkr*-Bpc6⊹QK=wp{#ѳOzR3Փ`-٣$+{-q=Z 8<H{uzLODs6R|D|-Bo"+v|ۢ&ΨͳOٟ2;MCU
7恈oj$Y{0{Z|
NeS'-e1fk*O0մC-eg܁)^LdӍ8wHWԢF~K}ZCV<"1;9zʈ5EY<jߔ;P/ᜌe;Âj8SJlMՄCJj{y82#	x/J(%e07c2F0*Ǹ,c%d|c((
h	Wdа9YsW^F2TY˸Wdθ=q"Y>".
&z}~q:)s'7 KBk2^Dj56oS)cx?𶌟frZ%L%J3_%eXx\Xʝ)EK^n-*$}`a(ԩnr3܋_7QrFT
A Ϭ0ҸbKAdTO*äd2A^s{UE%\Wx";9KT,HM;u6i|ܾNV.:+Y{3oاM=+z`5RBt\wjF!R}d_T6+o՜Y«lՅ;X,<cq`OiUxsƕnϪɏaajc@KSZک7ȩu+i$3Tdv}j+[nJ#E6i+Y%SdDF7R_ŷOU7DUN7Sa>}L/P7}"Sã,|>܁DsA,4܅$ޞM
6OUhpҫc.ry5Ð.jqӮ0ȿZ#ӥ""d|.$ja1.;PIԗݵ;
|Wwhɜ3a8XA$4y(F%{1ꃋ7[0Lmfr`0S34ߏb|FXoXhB5ܖQ?H&qͽ֌b
}%ܯ!xiu9j8ڄ,GE" 9!rGpѢS mmWք܃j~&*]Q<ٹAxƍi6*sK,WI7h}UΠ(Ӑ\tvw\Zq5fxm|3Vfy`VyOtNNͷﳹWg(2͜ӔCØKyC:KHb6QΎT	vQFY9*?h_:qb9|+?w1FrS\<]ʋ*9~^uYga6cBrBI`6Hg"B]7?O.lQD:DS]FG%tF(W=ֈgeY~Mk*ʿOC3~6-E0O0kDs*'vu*RM8(2@v+*
vc*\?I~	>tu;eP2Q+qy3KEJz23gJܿԿ1S}	f0Mlĕ7eȓ
~lyt&{x98}zxFqfnP<Ǽgr~&crz6iÕу:"D>@+ww9C"iEɢPrV6,<p3VJK\\_N
C~.oQ΍=JHnji͢>lJeT4#{	
RXBK';*Z?Hb|PK/K$
    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/BERTaggedObject.classU[WW݇ɐq!1j%֠Ԫ$N&ԮЇںVW@Cb
Yks?wUdt\57pׄ.
>8I2Ĕi1#f:b^LǝV$λ:hI(c3imwA
&Bi-8C]+wVLv9^vxry!L,|,Sf[1RN`M`$8%-+Sʨ`(Жre\OL2ċykt(cR62ˮM:t$){H`?U\uSí͉=݆v1-mX[V`1C3U;b3c{v-
	*_TwN&VZyG"ьG<%3<
nTu|i랙ahm	'ĀB\09MGJǪxhbH`xcD_xGZ!*&OqDckdMbg1\l	K2r1gd_إX"h?ٺH]Y.Y)zxF3l ۏAsJ%d`ػxD]{kFzZIlTȵo1|h!|L^cW*,ϤW?h+w`k;hفvHԇ6  ORB5ǎCy8_g\${*^bEw
>#4"1%#$c!#8'FW='2t1?spΙ]១V7PEjH$@̕eIR@JCͲ;5mxWFANSxW}{+"?V3hm}q,KPvd,
M5ZіJކiץIÿ_\(5FTFoWq-4m
>uH'^5tFJިtmDrIR$A/d7(4e1)"[Qw$zN/㦌.FdT`kʞqUT(^^u h(to7NW#/G;(=>|t2+ PKBi  e	  PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/DERGeneralString.classUmS7~d@ ëm.mL`	$I鈳\8<gIHȐ|L)`pzv]i 
t!Qc@@d!MD2fL|OC;L?7ìIRzc.	Ul0Ͻ;<rZz%lN_Jmɚgm^UH7ZX|z_xn^WJ3HVzr'Vk--$+\+QdxϯάRIT6 щ9f8VxFx!'f^|[,9@i0~>T@Zøq!TX
D(GzGe%ZYx_ЛRU++BjOQ,-,ᾁq/Ya X5a}8}(gN/˙	JsʝB5*y鲙x<CLx, &|_1ǋ;ȳ10X"+=:efzS?8Q*[/#7YWL	~tzZD2(4JX9dW4w=lVB>?ArMK(p<QXYۑۢF_7I3'v`-{tid
2qjM{EWTGm^3rpDnQzN|.n7[ԲC_]RjVZ˿K3'.?^<`}s1uADsoݘCL`ݿkAr.bC`Urh\C7K]d71A41F	"GM-cP tgw%|jY	T#7}ɥ=ul#5 N,%20pFo;nbѨ}
NY$9ݫC-=?u&~inFr>.*l"b[x02Aaigd PK02    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/DERExternalParser.classTkS@=[JSBxcEPR!@)31aO6݉4a_ጂ#3x7QPj?ts=>t4^taX2*Yrd<JbLq2dBE+&<QbJE<V0)~e0dL?_/0xٛ0k0E3$	_0dn1Ea:X
"<*;
F2uHs%Ps
+-BE FٓDЖqVMlk~(_	,ܻ*RЋ
im
1a wzd4:}5}O640MUh2`mؕ0aQjxt^CEg
sݔ
nri"Dk<SR{*	9֘$zeK\2ISBI>]xʢnG;11ܢM N2I4}WtpJD~ܡ5NܓU%=Uuh>0lw'Gh98]"IZlNfi0sTdLNABVRNK];MmJMfnuD%B;Sk,
?5bJƆȎPKئ    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/ASN1VideotexString.classW[WWN0rQ6J^ZQӆK@m;Lad2	B[{///>^Z־?v4*k139{L O;			ᔄ:0$e	g%dHxC21eh3p\F;&da<)c
^beqyEƫP%MBFF+KJ4=`<3&Gegc3VԖ45<;XP߸/p;cK<,C־C};)3都Nӗ5ff66<skN|3z[_ul̒!?
iCV:67?7q;f<S?Pjtb*2PGk)t759`Qv2pdhz;47ά0șpx3gnl9yG@ȝ,+ 2|zNwvqA+8g=igK˙ag8RV
pxC/IPbkFQN
+
O뢄
Vc0tnM
E(qYA1X˸1ÁՔajBR`RkLXCW3ke
Wp(`$\UxK
^b7\Û
S[
;ճI$QKŇ>|]Tr=ѭ',>Tm\K
XÛ5ZsoEgmKmuڹ<Jбd|(U@mfl1j:'F:ug;8ןGQc%ޝ}]ǹbA"!5'
{\oղi_,#.mF-qtvG񡭍SҒdx1<᪭;|GBzUSW,N'hqJ=U̺r]n=^R		Cڮn.XshiUs,{I7Fڲ
ߗ,yjf|62tç}ѯs1(--qcؿ9.A?ޥNMb]Apvѧ9'2ѻ`?ѳo{;oXFϨ
jb6=+XEb!enaFq@?6C7EE=]qnbA">BЇ1zMZFM}mLf)fUFZW xgF;Đ/ZO*mː{nGz~C
HnwA`;11K`L\=Z/-40]FE3Ed7J{)[W.QR "oUs;*	'HHikl&+hQ]_3Taވt1ޙjDSua7]K5=zT+4]`u$Q<S]ݕ)	}=B.ҏx$P]ocdԿ}k?E|Khfز_PsH,s3ǄƗ}|HŠ{PKo    PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1PrintableString.classWse<weM.i6k{BJ%IS8&	$l.6wao/mQ(0bMk;buFggqF@yvrMÌ}}|y/`/QpHA#BPla
T(xaQU|	8,]p,qR1yLȡ8&(-Ȕ|8
J*nb+PpR@XR(	D	$Vn&܂ѩ=݃{i)酡)K -װ\JF{󆛱Jn%i[΁FZIaǴ\}`Siu5<O㣉180<gZ_`}e0H=h`@["\\CrI$%k-c6s\'#_Vޝ#V
{N;^SN)פ!s,}IMnE'҄I}5TŢI=9:'KPt_ 3.n!tuj+ۯ퓩X
_v`jX"ۖf3N\>Zi8vY!ÝKx*5|а(g-F>F\nVݴJqӷMzsXiH E
/2($+ixi)
=x]Ýث
j~-}H;ҫNO)TQb룮;V]W3iڝL6vo\ee8Şv&yMXQSɐ~!KpۉVQ@9}t'^{}G[Gaܴ4;$6MRWsՔB~(x|mO[hZ~y48Έ.e,F׮[#; kĨ.W-?f<z j`N8di*1
cFZe>cx[MਪͥەgV&[U~3eot,ִ=iQ5ymvfSsֶ'SU>ynRZN{rh2z0HںBU&pʸV^{Mx1&4h@
i2 ?AMbe_;4al_L9lu\,^Nf/!:^@Ey4NN-`E4s{'-߆F>?]p/\%>3zC _iRxtthҳh~q,<K|{G){[<bshK_@)JSYk%x=, "ٴ=.y p"@(]ړQNZKќJI_cM	ᤧx'BWWIKXhh`/η!:X_DDF?Me| 
=K̤ƠdNRO0n"xvQBtjy5b?eM8$gdvyqm:Ht+HN7<
EW!Eڷ:{5?%^|["6e|O{ɷ14Q?sn8
ߎwyWؑ oW=l-]߳gĕ+isxw%܊2Y`I4}(OK4|E|̆>2߿XyqnN#^~W
쐗uU֞Ƕ_l&A/,}EN3o1.aJ|{~PKU+\    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectIdentifier.classY	|Wyfw4VkKJ>bvuqbDcvdaIvN[ʙBB]")$
PmEK--m&7:^)VO~{}oo~y M
TC
>q>To*xD'T )W	O*¹ }o8ߑ$KTEOXnL[?a%*vYeB&9$uRE|IW_Vj9b >.a_Ьor}?TSRK*o4;|W
}B.ߓK?V'*qQS3?_(KWrk+U/$?V*z?UqH|݉[@biO٬p/Pۑ5sɸ5FM57j>J02Y={rhP;tgG3+ n(mO2EFƎzcL$T<)}v۩'1\]7cL&Yۖ@ն[Z}z%PcI᥆&qEǱ`&=>k
ۻ[Jǵ腲Dʍ^_d0c|)<OM%z8p$}>4d]$ϮD*a8Z{X"|7k+g=qblW+µŢЋ^_mtJqI:eshXW"n{4d2Ie\^µ2ʍTb^&7
K@2%
u*<_.uqcLPUֳvRrsz8$F&[3m$lؼ+#$$^b44fhri\|>~非t.7nN*
j,#|P r6,_V41s3)랍%SoNX2i="iw{iYvpz [x_?5v?
^y43ǅЄi°&%i?,PY꽹A#	EфW4,J$TD"!E5Q.
cٕK&g}9S7B)bkxXJ
&+iX%j"wiJTkПţכ>nHV#5X+BX'kb^e;Í{C1:$n4V/*4܃{5ܧZMDDdۻ ;HcDJ&
wmhUvQv%lZ6$pEb^sL m^50b^n,ـqz`f!C;NgPgP|ҖCs	2Cz-!!rD?.nI3[`{_8r{Il1W\PB.}~	%3}*4oȱtm#	Id虬}d2ni$BR9ⶼD	yyځj~bxQ#EsWGnmENr\f k۶TlB]Q./;4;AS[PBUzUe;L{YKNHdS!6ES䠑ԥ-"e+نNIF̙NUE\cyA3{L9ja3++~K1鬛ռv#2*+W|NᷞLc$}hzUHN}``.adPʡ31,3=.%I,N{&%ڴ>Y?Qx9,[Q,J&67GIA-Ry=YCFogkdtvK\/ǚ]b;MN7,t"\G:}<GS>>eȞ ,ZfFYdئYפb1<G JUxʽoUrn# Rky
K.D\p\N.nA{<7(סF^sȗk5ܻ[#jF9DxÆ3wLA틎'rL	c8.o(za?qXm،'SFw[n%R\Fg݈RSq*[VVI|6T:/?*>u4,Mb8VL4zR}ˣRJ?P!*t
݁XGO[.qmd+o.hZg}Qn-_ktUOwpSOś+1KAiikC%,AuzZB-JABH4uG|+U+'n ɱ*eZ=3zH=r06z2-+yW.ԏcGjƠF'Q{賈\1.:R#107+ɵtp-2c߁puq4'\=x7Gxg>,!_YG]|?)OxSI?+Tp;߆e,NPʥ`7*e徒m
=D&R
`6|܉^F}	Կ@5EUQhNo
)x%"K髨Rw?<gVf
$b%osMyu<#s[B]$/QI}%4 1MSf&įܼ|f|C'mu=HSpEVw3fjA
SU7ON>oˎ1(]a%e>aS
khqya?<|>i露Iûdn@ LuK
*:}An\mMCchHAw,tТtnBmW Pѯc3"\xPps_hV+8%[vu(I̊Wrr0[|{eB;޾2Unf˳n*VBAjQ#B3ݴS,fU>3V@Y\ٴPoz~G5:$~I!]=d^B.Q"N@\w(Bi۸{7}{^SpG{</j18_V޴L_|Wd".(5c)p[n<҈JG-m7=_˓i4XoэE8M⨥xBj~F^+['=}:.cD;Y78V{]X-F)4Q4l~YA'{>]V7#j(8x0[?
x!069ag}nS8	>e
XAwA89y[IEj':d~DA?jwc[k^%PK?
  $  PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/ASN1Boolean.classWS]Ibd;ec!b'NX9Q+4Mi,XZ|9i<%i:C:-3xCL&]@ә{s=_ xhknQK
c:0y>LLsi\:fQPS2E2(JrU`
㘕AۨVͪ@dblV'VJ}n),g}FKs%R5Es@L:?}~2?GKhtg8ޤa0[}b\@2x`g׵M$~ÒĤג唗W'ƒgNotYv-5o9Hma֬L6%-Q6Z-Нhw2=őjFdhXS+ڪNTdɞiv)0^?Z3ԗSr'GK_,pl+5o{X GzԳ
gR1{f\$:[,5 yFFMe\Mnu(y.YNI`֋ėhXH3줃=UܭU
KQ[Cҹ{
f21A
N.v*ۗ]˯xrm;])L[S"HX6[6E5c)pIrP/Ɛ%,ur1Wbxs(KЯc<|6=P7Q-5(Kf?1	IXtr
)ꗪRn;66Drt=Gf.dH;]l(ٸj(7oK1ṉL&'L=Ƽ<;oyN[MgsyߡvI%3"`vVDMF$apU~uhE=.]3/u?MpAB~nLINdi}byfF>Q}LjxSw֟ZΒ;owQʲwX5mV|́ͻw7Cެ>s&Aö?{GMz8O h^8@BIs\wխ`A
c\6!hB
<?N}=5DS_A\<tG8#ܻBԱh7nK)H@_AM|"+7ʃ?,9kXIj<Az?ȏ!
}Ю8?p>QpqMrױ㚊A#4 g4
$@0 9q13ԨϵuYj-)T5jA^ʔvT[RAh?VLryrͺ#)zv{i;##Qw'I!{<%IjC̋_)"7p
\MPCe
O{aVnO6'p:
ﱓ[sZ4NoJoOYݷ{y|Z-,
b(8`}W߳UXZC'	.N}Z'+>~_<_MW$JnALuu	}G_Y	P\iE8L6loc*."7E.>9
iƲމKa\Wby[xoQM(aR?PK<ע:  
  PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/ASN1SequenceParser.classPKJA}'1p0"d+	ԈsN&ݱ{F\x %DPUx~o F))tv`3K|pqBvvmMJ&cg%_ljyUEIQ2eg\`Bp4/0o>UҸ^l|X?*pdW}Owc
R!vD~F	TjJP"%~(y
PKv w   X  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/ASN1BMPString$1.classRJ1=q>ZbAVWBbMWkd)T_FŅGwF)"TLH朓C?^ `&lLbF
fwf!{\5abHׂ!UJtZ
/xçJFrKO3-[{Ws@7FQ^CUpO=#Lh|IWdkAG{XFSiz)&mG
UankaYs0XbXC\+08e-!Fk$6[ai
HB"蝞܈^s_>h"A? 0$)[ MZz{F{,zr	/|=KPNL1q	j@&ƠgPK1(x    PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/BERApplicationSpecific.classRN@=jE^QD^xÄĨcoeYlkF?24Fs;M1cDǨtaL:ґDVޭ:JIXvYr'k;_[Kځ[c鈓]^*`d*u:U*ur.E4K:ȹU#*53{WV<+MCBA7HwVQ_ls32cH7q ~PȒ=u6-Vxb㾠v}U8|j6K[:40-нήfj`3D*0BQ6x}unMSL?Е۝LנW$*UQE:bf`4B'@*N.щ
wHPK9    PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/ASN1UTCTime.classX{X]aȲ&$!jj(bR!v؝&&mKk5jmZmDhm]>g`Y6?q{{ι&N X)إ Q+h+@RW)5(Hrpk ah؀k514Wv
qCQ,n
U>
x?cޤfQWV^fuN>{(䡈b N{%,O)
}<|~V4!dҴF*e
{E,{qJ'cQ#$F#\ӵjk2۴SFwllPV1alo(4d1QSNcј0;ͨ<'޶0-lbD,O]531:ﻫvzud  [ǎ'PpDL(
Ǥv#VHpE[yVV&EGd2mL306,0;[ҙ(.Om2omG]@ۈc(yI,b&!F s;팤4d_6N\[pܡ8kfI!#5FF2H*FcN!԰mOh4%wh=VڎV,sٸK_Sô8fu܏t\8F5),H$A#bMa+jY4!+*+ƃ*&tu\|A	<ऎU#:GpHt</hE-x"1G-2X~ѿ*x'><0927YA!V66m<<J(x\ufI2]\6`$#~o:g`Jz>XV05dَmx@uܵO0:d
ƓX2][u|PpG:~'tQ?T\/TRœl_xJǯU= $<_N)xF:tϬxaTA4ZsdŭƎ+sԚڹ]%,5:-mQy[;E_@P!Ӷ-}Uxacgl;C2P̗ePnAld"$79lRKR'usI*[?5.WӽRuԱSb\5LA"m$`ҀwRg痉V*Pu[ &l׊ڎ|e4J1k䶄+%E>_pvUUCn]*(vaē1s{[Ϲ<'r]JL&=HG^t]45]njZDY>c!֒/=/$[kIڈyM[ƕbPFav*;ڽ̰1VK;'
]XU #.jئZg{+{\GNfnwEӧt7]g7-mBec
IfX֮m$=$o6v!D٪ߞ7EH$zx
^d?7Sd
!ZLzlD;o)y({NBu^E)X	ap/AfP̛PL@҇x#	HVzU|.Ji5$c3֓PKr7T+:huLJz(ROjO%̠o!9Fj<Q\?> v/t,@+aBQNog"@ތt,n$
BIK):=)zRԳǱ/Ʊ$Cds\!OUAؠl!#܀0n<L!͡iDa&SӿoFn܊:F{Ky,(:yl@
Q}XBoFcA$E6ۇGicJjr'HTr8#aVCt0h0G8 JΣ)JImj%butϐ<It
8P$o |'\_k4LM!G#HUd,m}cPU!ikyr/tVh_
2<<0 5X'O>Czd/R%
KGhr2\Fb*] -	28߿ )7AYԝliJL~HQVf
6ʻ-*7tkB)Ȥ!*$aS׊>{TY@dQIxUJ\Mot@Uo^bT]IaxZ<~8mߎ"}L5
ʀa V
 zjn~5)?@rRXK.2Ã^h.9G9"Prkʎc]_@cQD5.܉d`ܿ)2Fš2f0vrQwcr'r<({PK
4
    PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/DLOutputStream.classSn@=cn )(WDĪ4AB
mrQؑ3.Ka"X6| H<`&}u^sg1;04$pm	95\.o$n$q!qqb#j:^s7@tϭf	Cw2;}ק!۝n
f0z=/pW5}޴FzseH}>1ԍgs;mi(5/m>玒(RP{wp_=m>(ftֺ^#se-'B(PF%nB5ճ̎:?Lwba4EVP1,tKOwmAKk-ڪBq:&TB 0߃'v	ʨ*Sl"dJC	q"Fn^8A7>@a8ڈ"Zao~~J(s)$ <"
9E8c_{cdw1g'fU2S%Ҕ:i
.O9R[+facR_f)Ǡw-ug^8}PK(*  j  PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/DLSequence.classVsUܶ.PrlچVB)Т"b[,II6@UA_|aafE;o }Mvs~]w??p ĉZ0FXd"x!V񊌭8%ܨL1	*3,,JxM8x21)aJv!<).h.ag2:0#0+P̤-#mFzκ$ bfڴxиDfhic4??md)Qx&;ŤRFDϥ"}#dfqG裂FdmBH&n3&?-	KO^9/8#7Ƃef9	snNLS'(Lt8V<"jex9j&5Ԑ>% %aٴJ-T`%-7J.O@+ p|l2IΚe^3Ih'y{Y+؍=
vG*EXe\R0c
Cn(H##Qوș\N*ȂF
@&TF
KSpR6aYUL]7r,I
n*1qIJ	nR.A͜JGtsnLj1	Nt:RQh c6b=1
׳efs4
5zbREԪJy]YO-lfOrk>k[BY<L(sMn,>UJOY3kMrzMEh*JUFZYڗAzʎսM9;gT压5u:YvOn\p٬K{2R^Ӛ:K~:vxhK_z
6zzxI6:ү
T&uZxފV(&*}]qM*t78nZUE Pه 1O* iO|zI{G:ncve|ː/-yŝ~I3[^#0 	/P؆!?8aIDhGFwLtRF	{ nɳ:x@Q򍍹noܿ2Fm|w堯;D¼2?軍%?92
xn,ũ%ZjAKDߴ"meFyqm)_I-xR@8Y%I3WOa3U|E]ؽv
N	#Ȕc(B #P/ĕGyJiT{h\E󄶌 ]{2=)Iמ]	VJZmI*8mYEǄXO/q̡қg=FW$۹PK?4    PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/ASN1UTF8String.classWi[W~o0;hP֊
v02	I@vc~菪=wf1yl={ :jpRD!`gDqV"ag8EH:)"DW\*W\6/i.{ZL
Dl%t)n5˹c$'Fc]	JG̼+rը3z}c=mNrϪA4lհ7PVeCQ99F::2uIUފޓlK3:0`Nf̔j%)$ucYLˤN^ԚW>ưO5Nd?PŮ9ܵM$cDpF͸]qǏ]:QTɨe4J14BnL"+:x$MNFڞ!)3d$ogU:5
$ C롐V0D5<.?f-ERоVx[$0%B˰(jeع,뺚>+P@4mZ9;3t l	yI؋}Hy$\GOIxo!&(xKxGntHxIx
=}	CI0/?vz>'S|*'cgX=<+\Qúkf4>RD|mWj}A5N.%-3?o}%&^"|I9eZ!;#!ư)#y͞qʎrSh((3'#$@&rrt˺Sj$flZ߼^9xrNKyWyRtPݙpTq
РlΠ&>IDTŝS<J;Byb	=XkPoq_	-ef̙zb͞i]zF:)Ӻkw+Y9O;p1 +5ư2.Fgѡk3tjuA'¤1'`?ѳo[;nW)3HXD5&#8ѽ{%EHuDC"C-][麃rl&ʷ2S{)ǃ(Ѓ$'	-6В 4:ixfQwD;ɳ,H]4x)pڱz6S$}Cd	MdGC37w[瀆1$	#/	0~eH^4$<w$]ЭX
MDiYǛn/P>ᕽw0m8ojo@'p:}q1!t_<Kgq$:mŖR|8J(S<YA&Vר9z
x/}LD/ZKAx.)MAZ_PuHSΓ~_;|-1w|5qPK>  M
  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/ConstructedBitStream.classVoSU~N{ە*/cpu-N`ml29d][[d511hW>`Fķ/$Ϲ-݀L?yN c.](^VA5Ra5D8QW6G1UIj z1PLx]GJ@[,Rna6vKNf1cLZE;76=pv3r#bRf](zaz^aLPw'N1VCU)DS׬VvNTSI29!
Y)9e;rq+$2+sI0I,	WM+AݘgeGclסMU] ]BF
%R-kņ5ЂvVl3]mM1]vas8o NPo1*0]cX+?"97[\040*[%tܢI3GUӑE1ӶA53c9u],:.TU+񵣭jP+"	:7[>M:1rvoxΥKǺUQ͆mLy0wpfW-kV.1S0k^]9-Q
W ,g6Y>^%ViX>&G<Ozkv髵;$ɂٽ{ht̨l[f;yYQ)2[Xq}!<qqd-+>~r9Yl+>r
ӄ=blO,Pn= jФWM/pvlC>m\
R=~"-!.!O,A\B{~dw0
jQgwQWT\r*PVk|lSJUlTy$Wƙ0ᇾ RSQ+`;LkT.#n9EC3=ZTk}Qnl2>9tմo ]r矯}	bIc=	l mDpэ>gp#8qǝPi,bgq)uj! ]"	~HXOZG49)e[n#Բ1l^e,dcMKdcl\&dclH)CXC6Hdq,D{W';=ŔeԥuZTPI-`3p
{x+)&%+mbx ~^	!yn?bZ3Opg;_/7A{b* ˗1
X$ͫ*
_e8/PKrsG  #
  PK
    D:U            .   META-INF/versions/9/org/bouncycastle/asn1/sec/PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$20.classUnF=DߒXͥN&/EYh;n$D]8N F>4Q$@Rn)zA/-%6Џ*:+9
(.Y̜g˿O 4UL}s*Z|B.g*&1ł,*XRMi*a(()02l0][@lwDס1?^"ntH^
Vq/W'Q<GE0EށHD3,T|b?3%Pwn-)L867{QuuG$}e
ӘQ^+Ʋf3QaFӲZ)hm/ZjA "ű%5kY]7]TJhإRݮ׍jjβҬ8Zvf5˨nè45׭f5iɱ\f^nZ6Í!pu

iaS%ƴׅΛҐ0}1fgh6Ddt݇9 'x/8OJ};ID[#N0}VK~:wٖHN 0Hw>l	ݨWYIjCOBrrBCٿhv{Tz 9zL=>=^ΓI5R'P1JI<]ܚlL(+)|5ݳcV0.KҹLNe=\7Hoaq?A?;aЅ*ۚ1g9pW0S2T( D
֯QfPKVW/    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$21.classUOUͰ,hЊ]<v@y
Gv2b/ԘRVx{3u{g T+c
oP<np[
*9,1۹PXIKPrA+='F09rXcP\olPuAiE.o7hs|%-IdINhP]n'
݉O Zpd(<EzF$8(I,XP&v'	#pesvQ}z$T8lf؉G#<ۚaȎeye(lخaxnȖ'󸃍T$u\ױѲlSlגM2%_[İ|̕~d(-o`vT.8JVQcP[yIDwEJS>wcDEk[R7L]7LUӺTuChj*Uϵ m4LW|wcaDuw.[6vx*-߫ KVnE	5w 4]EJ\ΛLhqCjŞ[3؊%ԫՉ2}-i~]W/>]d͖!]5I*lFϏ|cfOex<Vγ`l݌^нIת/-hZafmRx_j^<uMAG_sõS0_Ws!%
ȟg;cō1N+T3W
9+VsMxj)FMt3~WGkoPda0~̳?Dy<Qpi,W.al)/,?A敥SLUɍ_(̯eCx=.	7MV,%V2ޛ'PK*;/  y  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$33.classVrE>&eJX`==}[_%UXkan-|)|(3tt;}_~ [58	5p*\2UTa\+5h<*$e'@Z&5YU,^gt=#Ķ]Dpl+vG]m|TؽS[j.o;G^v>un>z*-oR(}bT\:L3hY:0
ENvǶW˟۹S+VSApE#IBJIАd$J#s"	
Qև@Fg3Mv*
Ag%KBRU\Kʉ<!>u^hEhVLuQb)^j=EgJ2UB%Lqt.RAϘT+RbNDjRHv1]u}+Ű;̀a \4i*aHXδ%
:xuNG"I	ÇPRH2aĥ1D+"nd7X468YIHQ+P!ٚq#d042!L	"dLj'.K^JYM&$)2FbdN*+,&3k9S$(XPPi02
QKATPVq	$UR
S*P^6ᜩN(m)7u\p6|QͲ:wp8Dnn z>.荊Bi+>`y{y0rgb8\"D<潝ֽ 7j{WGms{oϾOKtvo2{NUڸ[3\E[=a{h"Wx6)~3DwzwLV
gKhy{G'4C|{r|@uXϔ1>ӯDA
b{ks5ajmqdⵙtTa쭾gΞf*ptj?Bi/f)zgx5DqfD8ߘ݇sxj}8^^}m\z'޸jJA7fc.60Wx 4+JVPKX    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$11.classUmoT~n6kXɶB7`oKv~v|vmeAl/ $	|YMƄHI}x w$ÕJN	%TP-bYB	7-U]Y%9*.;'
	pX+baf'd+ջ/N:pK(a&~rHJK^G_Daurf)Mo(E珕Ix 2ˣ44֔ǎ^
iO"t6mOo|j3D_Mxx7O*7UKu&7\XfVRMm

4tòcjuWoFS3|_wL,Ow
dpu\ur"oƱHn"SApӴǷ<;|ϴ+6dlCBGզqι;0tpTjxoXuO4]7
կkEl]a׍F[OY|Ӱ-W6iMÔq2\Y2Zؒ*G+nIV't9u|E"MJ+Ǹ
㶲%1kXMioƙhQ|a틝'*_jeŽt=gt2UDQKReC<k/e(cXUtJm=Oыh<D;^'֏$CpQ9syhaHI)^K':|LK5}E3yv+}FL%
8E?,zyjV@t<Ct<Kt 
P\yҽL~
kٷXd"|9'"kV	^Z):g[^>˹96L" PvT
NQnOPKf    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$27.classUnE&k{͒6N9{𞒴;^ҤjPE8S n@H \4 ouR*$qH;??3+ nK$P)⊄Op5QPr&]PjײE]"ajih0
 91sm
wYe璩N̂A|Wjm3hvu$~>NݧC:c Y`y3HBԩ
+vAa^OڷA]N?JzaKG{"Lsx_%Æ#bM:664mp-SӢ;jKjӵoXkȸ">籟x|{, IX2s9♮m[cccۮi[ڞT56jZ暆aFZ*ho4)*Z-Pzej.'zK&|1BF7eʺ9>&&<
ݦfiVc1Au\glG&i{&`3cÔuY+mn@<\];,K
"1N\?9V1|SmG4;W3[ճXGeI 
hcP.TOTZ(>ǡ1Kڿj1/-Xg1t|B&CP>2~ۋ06f1%AX˕rGȯPȖ(>xi+˅CLA_՗3%B0@QxYxe9ɏpĤϱ9>.ͥRKL?XY]ys;|7KA0-CL`/g/!vǴ&|PK	`     PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves.classW{|ɐbD K.R B7$C܄{oxl}jZkk[3S[[
>Ůns	_~w~9ɧLXxbγ{fpΧr1Z4.h6hZ4.S`PATbSKČ1ĔZNQ	)3hEhAS*
.0pA,na\|ޠ
gA,NA-DgAs-DgA-iʠU[8
Zdaz,6A[8-0/pYn
gA,jX
+ZkaY3J+'fP5SoPuB]4d	f6Xh
Z-NAqi7hPB*p,lN6Y8
baGl5hkgAWIцx>vRkLQkM xw#xdbM~M,x7xE+&
~īxMk&^!xC&[4qXvG0L#xwm=L1wM|(xgc8&xA];X2$	yI4(%DxX2DbxidKEdEŜʚX"検Dr~{kC=Σ)3'vDOvTD31Ė{|<3^V3)ZzJKN㼬G䲖n31=+ǣeZn^=^^֓gb&Na4
U
\s76"X)ku@MR~qcxsj:!pAlopgU7ǝEmuNb(	͍	gV,t7SU'X)GTVTS⍑T98JrRffL'"lYr!}by÷姜27G8ϒά{ѷm-lJf57VSNcopstdbg.*]\OMUO5o|!F'5k"Წ+cN1jSq3<I_۶P"2YW&,RSoP_c$X?e~S.OE3BlQֹ0r3B^<g+(HlsTs{ìX}L0aBSӉt1շ'Uޙw6s92eC^$˜6owm'jτQg~tM?XA?AA?lA?0!ڷ'vM6IA6y8ap.OM]Ƨydԏrm2ȴi7Ҧ''\+ML¯ȉSjy}E)lN1Ƌl	lp)6SNQac(^	6^))ᲿRu?R5+ZH	.!%\7I\BJCJGBJop	)R/4~H	Wp2!%\BJp,MA[_&^=b^W>1ż,怘Wļ.搘7ļ)-1wļ+=1Gż/1Hbѳ˚pq}͉sCHF+o{>$Y<mճ/ĚSpnx[x)c/_ʋ&=A&}VMNW4xcrYf_7I'듰4J9l/έO8sƚs'
ԓG
O
ƞ:kNٷ尚0.Y'7'jn$*cIW^]g6g%az6\{ c`ʇ83S>Q½
)ܯeWuMo)<·])<}(PG
?Vx,CJ'
?Mc>HFFbWcBWT#qܕEŻa삹ya<LG
 qTUaj:^s]q۪&+(B6Ϸ0gVa%J9W)|ZWyvoI!3d/X|.⢀[\"{kyK/E2(|{Hu`Ѓ0x>'9,ЯC?}'zlh #*
ҐG9)nl7Άᜍ,نvgy8!p6U)yx=6Z+8%Wp~Z3'I\[0@%0,w
2i>>%9tPzv\kmΕ[eϜbXtN)>F܅<1c}cv̊<(av>"&x(eVaI&{⣜YK}Le6e>3>f2lfs<1|U>0j-G
/zG-%Xl>V2[a5̮:fWzcVlFM̚=l¬C8v>62KxHH1ff[<lvWjuvٗ<gع68.np1j7n̿.
(z(z/.nsQ*.nw1Q.b;]|ťBrq˄~w]z﹨}+>?pQ%.wQ-G.pX]<r?qSK>g.V_X-aX+Q	u]x.>	B\rAnt&Ir񔋤Ч]&ϸxVq[W	w.v2<`i23ߐP4~P
aՠ#Nwa;0npv>.C
<m]xNۍA9CiD%rs:h`έ44Jr>@Ghi^CMjJkj
Y_Kw^JzHz=z:cz#Io4YhCVmަZޮ;Fm=u)mީݠon7k[oӞҷkWih< \w*p-
)ܬ0p¸M
u
)\pe
k(\py
g+p©
NRUQXP8( PK|~  g!  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$19.classUoTMb/5M[mIsۮOǤu,(u$)C0	|Y+&G!ӎi"A\{{ιopIcYqǭ"N[F5e\\AQ/C\j.8eIQ90(V`Z{t#7[q=؋6I$
&46;ISt(ҬADBszZ|~Q%)~AKSSW䠼&arcMk=ςÀzqeO:V\euӬFÔLp,߱}UȒkb`-T톬떪;FKc()
.5|Y2R!馦ZUӶ̆ᮀaq)G%hΗ(=*lq8 M4p1
v˵-WuuStCo.iYdel`OhMwVW$5ٕSl[6J;݆njH蚞kgz=|ր%-9*wÔz5$Ҁa;(:)(Ml櫛y nYBͳR;jdq5zpwcS{o4v^0A/˽K'w=njQzz?ʧyÌd?7,/9O@ۯHVIzt:0  # >]C<!/~\!Zʅ
3#`jNimCJ!gJ1g8J'Da8UcO0an/P`D
<5
Pc'3x87*	ڜ+O0B1_FG?Lx7)9׉z,"щӧ/PK>  P  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$2.classUrE:d(DH4BMa.;M	n Z:m6lķ?$%U>eyf¥(pOw 0pWy,VqU|Rŵ*U,MXƊU"VhBqFf"hdMD
naF/7&K*ޠN{	^'L(0=b}=H`ĿQOdˁWݎh<VFIFYO[7{
&`<.
m?F$qϟ:nJ<Eߵ<qCSF`bnb>1U@avqB T4
BV
5CkmҢ$kѲ<GUMHp	'HISeϊP	!`+f-30-ӶS5T0IA6$l▄/qaMui*`4WTSolSo:fh6-
i-%-kcVL6v$.0,(71iec1r(y-*BNE(ʻyJt*Iλ<g<fzIUgH룅/┿LZ#|:潾̓47S/EܨZ<r]HKoۇcx;[^I暫3kQ8att/_It]<|0|@tdn%*6qvBt6Et6Mt2֦C|XOU1sW/:	#g}^Xۄ@kj#^~[ڙ#31r_Bߒ0iG/oL\.^Az NxePKB>  K  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$9.classUmoT~nƙkXɶB7`oKt~mhFN*&!]:vWeG!Ӎ	W瞗>?@E\nRw
"ʨXQlK.@BqLQ	S
,ۃh0,+rΨ.vymp8$r 8>U\|8GaC.sL(ʩ xa}gD<1F8 psכOՋ(D=>lKX%v!JC嘊g(~mh^WtlUoږŲ\7!S[w5ͬK
-6/?2,dBjGa$<ɨq$c7umVC3ݺjTM.uQ5v%qPUt[tN[+7
-R_}廦BlAda6U=ikRںoFT*a;gH`OB7gvL6Qbؘ3h16op yE!PNֲ0ASnUNUك~;Jyg`8|`˳/vyCϿBenf2BD/+lj>B)zV>[An&ݏIU]Πa:"ß4G)S7rXnZjzfFRWz%ϔLGWqӬ&Xs$K$<͜8
뵍R&;,3g$"uC>r!S\@T_⃽Z	.v_aqmS\?ዙs(eS6sYu vTE
PK9U    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$13.classU[oTNats﷤cI*U.x
_/MD%xB ƛ
eC!9>sf3~]p".ckUWuu
QōrKBBqzF4X"`1	We]bct&뽝$8f"ΒH^Kln/$NT<XAߊ'FYI3T'.^eql`Ϣ݈RinJáU9f		K7鞫s׹7LӶ\Ǳ2ՆbJ\t
RhGz^óUxRd4UH
O ]=z3#V4ɂNI^RHh3mBmpu˳,᪪o;UbE*.0|
5ԸfءSfMKC	5VtZ)ANrиrճCw8oxv.W-O'v}]5y߷rtM54%GׇD	MIX/6;ߛtFl';,:(<~`73!w%oU~I+hgvN/x0]sڇ!v%jIGX?rĦW;rtYf<c˒`Tt򪭤8eZ!Tn;-ndz~lU'Ժ$4DSć=\?9cAY;43Q㥒}
¡;YcY\\\ƞz~aq2=Vé}_{D`?`=Gi3.~:eU&!5⵵8
zj{8
V:_WLwwige}9,qPKA%    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$31.classUmoDח%
)
)v];I^+IT(s9tI/¿/MD%~ %H 
BB/-Jbeڳ<;3ß} &lWU/Í
\wpsN۹,TJnUS@rQ^:y'*0V	l
띸@/נ"
.lvh%]("|}a~Y7jA#j5|wZ`T0	,JR
iiLƧ NSmOo}HՏ[^ډ[Qv+jUankp@2};re;4T\
%Op	28	eҵۡTL2@)t
*5LnU(yF}8QPA5\'&,â!=aJ0CL68JnQɩW:'L2uہ5<bsq3%^|~ H8-A<bYnE\A`pN]N@hI@ߴ%1<a0-a9ZĤ ;Ji#+%m[8AuCc0GZG	!횎T-yYqEL1^82E]Cp&
WQ
hjps*]
y7
[XS?xޠf݋LԨ57i5NgQ;P:
޾3@[(M25Xºand	nj^; 5lW{NGHܿ0mDq$mlDpEoV=TQ,ٲg#.^'NKuf	ϩVCZ4t|Dd_o8xڷ}1?A.3>ފ%EOnWNvM?j6cSPDj	^Y)̌	T܊3_
U)Lew@WrMpQ?cxmk	\~WE|kK0E-W§XtJoc,/
pauXAPK`E1  +  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$16.classU{oVM4FIKвRRH~ů%R'4ކLNǾ58!@fc{?xZ,Q*`	y<8X@+90 B+<*,`VJa+mٝVJvW	ȸS.~+}矴I2DOۍ.T^DM
_?N\>2dQd|jԏs(6LӏCU~;}&N7
JC>f!;훏7/|
AO^vNsؑpU]mPܪ,Yq\fxG]cRיU6	渖 U;\;0KjTRsuJ0i̮:0r]̴L2LPzٞ[8Uj'Ih`^RQnjzURE\Ujhh6cv:lJxo<=q 0%7qDSv6Fti2u?xWVm?lID2{Sk5a<y&]~t&`ʋW5_Fc]jWz&À(+S~HɓxFǨ
ӣ?GmdZ%N_VaN>F2q%EmT(. ;=C9;SbcѭLq<e3ʾ;s%
=Lqc=de`I,|6!\zb5<X/^a
?_X"K̼wQL
2IQAQ)ˍ*qxn0`[:PKJ  '  PK  D:U            H   META-INF/versions/9/org/bouncycastle/asn1/sec/SECObjectIdentifiers.classy\e8቙)0,jbFhW^-˂yTQiyf٭ݥPZjvgmawi}= /w7<3+{
%ҒYܖ]~q'Kn=rHlIsMb;;$vrwI<-0GI<}BIS{OK<+,9/H}Ie>WJ}]
oqߖx~{s?O$>~&q{0֗X_K|V;?p/_%~.OK#BHǍ"{$)$7Yn)nK)Zq['6IX@_{jB>^U򬒪w|YpX\d(FG{39͌:dtGljtǕfGf۟Sp6Za9ld{t̸c>9NgtFgݎ>9n8י[NvZb݃;z蚰[˧J<,Fz)HSWiNU)]be:bMy<HUq4dGm׮kcv@}>d74C'R4zVcj
 S$Tօ:S#)U5!o_Y!9S8Lgtdf"U5@0
N7TrLWp)+1Q3P6Pˈ3
\hΛaNiΜg[/DK^lν;;-;;_I.dXhXdXlָq*DCtDĺ./$&]jMǯM;6i_mئi~eϯMWۦ
i˹<mh毳M׳3{0[R
ߔYO<zW ۧF-@bIV77w8w3M+}U_k/95	0r"R?UպuCa݈nn3tgҝ{źѝ;Ow݅t^Dw2店^{
ݕW^Jwݵt^Aku7^{*}H	OA<C\Nq_:$
HbJdfbؒJ5TŶv;2;)1;+x<b7	'2+x2)tS1{)ff*f1MCQt1s0̾OgP<89Hqf,u=R0G0G*X<Oq4sX8'0'*NbNV¼@,Q2K}2rfn/SN.CWёRg?zzIj66Á.b}q#qD2v"apBG8#+*1^
L0Ylb<b'JSL@oLl6PK\$  6  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$22.classUnEvxKSiZhJڹԻ7ov׻$I"Jz9kiwOQ
B3vK#F3;gw|_0'cWeXnc0D	nʨB1 ]F)Xjlvζ+r^Ioc;:ai&z1[-+nҪv{q(
ӬCGaJ6L
f4IX>ؾܘ$AC=Oo~Gnڎ[4{mJX/bJ(b,+DqLE˭yyTUC%Utшb"ЕI[o)Jh1fftR@}Y܉cx0Miʡ:EkO7
fbzuW%jah]W|b1>"VuTL
wVUVm[75˯ik
5p=ӳTGQl=pW᪪gxgٖF@-b;nX"n"\aUzcXg!6bnIF֨FTmv⌶x8˷+aF(i<0q%6^y嬦QygU?(}hG:W_eN=M>oR4EasZ4{3pm 靤I_ZI{?.3d@#d/5Vp]~}nC.Y`	ke&\)~.b#Ș`snoM左$3'B\/"/IAkOPpln~|>?/N0q
\oE^8'iG\¢3*/ƥ>Rc[J(6jS{kq}L?OUN,oGIQ:lɕ2PKz  H  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$14.classU[oE&Mb14HRVfR)IZ:[ȱzʿ6</x xP.5gfϜ9;K .Tp8]I̖q78[As%,TPƹbQU2U0 i%,0ym1fp`M7n{ɭqYvo>Z[nf;ic+4f)~tJ%[if}a'~7vLvU7hosd'!nk=6K8_a[X{*ąoGжomo@Jc^hX\(О²cI*H*aH<JZ({I;/(v%WV
G}e<oVoC2~V3$~/R`ʶ@xJ<PW<,I=߷##˔wpUcrVB/MȵMlKE١'d ľÍ%eK׵D,(]ӶrPY*mqT	Oh/v2H ã02P	"rۡ[Ԗ<
DrlZ22.s	2Xz9ԅ)nY0,hbfQS'fR3׊ntnq5ϨW[<m]
J;Ig;|a~驇O<ϋ{~pg߱#]ç&;ۤ>7.w6{3g82,7s˭4=@{cϵkwGF/gzԬNzf#OF4ě50>z@i͌`ӂjdd`GqO,jcطV'^ Q$<^Eiyfg&c.*h}I{C̰pH^)lD.kb]xK}8D}8~"?cB%_1O]ȎCX~`PK}=o$    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$18.classUksD=RlKuMG66G~%i%Ggt:q
<Hrh?K3 ~î63ګs0i|&byqWĽ"_F5Ke\}f PP1] Elr+`Uz;iF
~I8\n'dw|HүՌ)rZֶiK>EeyQL&}+|QF$'iaig%ܕq1
PҘmab?wf?|v$P$tv!nSka^)nݶ<T0T'0t|ʹϑ RSm_1-Uqót-\ղmʌ骦^w
L!s	_.]FBS$$;Q%4p
˵˶3UtkWo53h~;Ħ-rZGꡫut7UG
u+ںϾz4hj*+,mHe5rv(oWsAu8fi3ltIQ,[eXf#w%)mڹ_#Jr")AzI鑽#3ՇtuYpxZݢcpe;w=^$f&yNIؒqnE>^o@;on;ΓN^}g	GQ]j0!5|=ϧ}ymJ)t.1%nb5zAicL
#JRȄ0Uܜ*gJ3xF7]{ O!&Cc曨G>;m/;˕g}嗨gboRUM(L݂TUmy
lt:*PK?R  P  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$30.classU[oTo։YZJ
ln]/IZTi*g.ؒ
SCQT@xW ƛ
)![q$Ϲf37 Lܖ1Q\ë2^^
(Irq"c
#^lP.`
(otN~SX[+ĒV$V'{{Q^ץfyz!k[Iڮ%Y3nT?Y笏Z0qNQ4,V럺\Ξɀft
w9ۦwaHMNܾ</+aulطg4PӴ&o\6LMF+*YP
ܔ&ee/+qfYUrK	3L'0\z
UU[uMUxP\b3`1N͘K!8MqiU_7MCawM-W1f74 (L'h:34[f]z#q<rt,4(ScQd
pVCޮV!fItbFw늀in%V

jϜY9J;^*wڛqj}saE;ۋ)aeټPKX7<c\͹TGͳiq<q^-j,]>#(?
	Vw%8?%I4[;7ck~~2C?K?bZtuН	*OZL@/i!EP%̢z
mQh6&7&޿ck1׆gP.GwjT0z,_-l?$I|1'L?cVs.2rh&l-=؝1~{++q#L>5?U(aHqO
X$QHX(oPK|ڪ    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$28.classUmoT~nĩu]AC7A&}Y|HvډM,(%W 
/|>QIǄLҽs}⯿h-`㸊R\,#ã, ,<nD$`4]dPx<4z;h'\r c>vtco8FG*+aԪݠeӋ_=GUYuT_y~G1 M/hدa/FMm{7><	0n;~(<ࡋEUkX'ؔ;t8V͑dh!Zu
RU:N+NE[,ÂPrC*n/8"l	HIL0횪ҚR7.4MSʊM5ݨQ4t*uɖkjjɦKԶ5Ŕ\j[B͆%.hi8fKIMULFX誣0
Y,
8#KElX+,<MeI6	VFtv<!i
8񂄉e8VV_nm#V3	ە$Ib/Vu/X9?>+o1s>MH
"+t `Pv:ݍz54[>3)LB&x@#xZ<kӽαXl'l.>fk.er_!YOEC8o] sSƔgjV8+dN]gK3]|1SsE?	ur=5=A9s
~G,p?1`Uw	<81.rSH1o,6`';^TB9PK2g  8  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$5.classVmsF~81.$Ҥ -t%%֖euiCK{#3B[?miδәgtRBFoFw{{{~@Bf
MN .###28,qq1w{		BN0	J䪌ȣv	Ģ%$_lĲݪ
	GK
_,uEw9ھODծ֪=x'h]I/ؑԜMxhw$Lu;~`oZ\$ʭն'±c/Z5R߹	{VDpUagqNB{s.g,(˸GXNcܔ0bNgLc,_m/o<'/x~S,ߨ6a\3\ͺU\K3j\P-*<",/1qg\eLE"S%ԬK`c,{{FLKj5W2uи-:3VjMUi@OeUͰ|4405j4EMUXJ]Uu=p%nD¹mxOBO%}_&tD'iY㼄LvQ@sZe
bP[̴0,lۚYb٬0[/:N.>;	$D؝E9rΏSgiJYRjʩܸNgr@JQ6_O6UD[Rv:-p? ysU,QHFSWw46|}p#ԁBͅfu	!ܕ׳`a~<H}?ƹ}+BZ.I{E~etHj<BkոHWv9[eq^:(Qhh\#ަ?b~-ѿ]!dg'-G:š81fc	g6pDey{#шYĢַ#zc9k8LMόFbkx}#t7߷~#~&S!gS.L77p2=3;=6NI$^0Mc^_Pfy6PK%z  

  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$10.classVrF6q"#\ -
J	l	B0;FBa-?H}>A+'40JwFgϞ=7O: t4e\,
2f@AAq [c@5M.Ȃ3KlsY\,gJ1$eMݐ1Y̧[aN2aQZQ+NПX&Ȕ;!'8YmE|q{A̽gb7vfE&m^x%<(8֥^=	SRxnZNyGX(k8n+ut)/{'\u鶢OwB	wr{&ݨp5	r!,UCRtʆbjKKSa2gxv
7^<y:F%fQ<158&T5nP,j*=SMiV0Ӝ}AXThPFPP(S-Wְ|UX\cID-^\{n%oq͠AYӴtZ%[
23TZ
O
\)j_b(X
fREEMӄ>|545+*/rQrvy7m]
AL麭ZťUqUꖋfI1f0r4F^CmجePr
s풪iE(ʮBLU,Mn9[Uk(%!C0NbW6J0sH37;0-a{Aq-|5$XunE0Yq.Fzh֞Fvl>>ʯ~gQ=aHs hoJPx?gt@md;]*.ƥ]zDuZQmt)Al~<ixA?W޵~7jO,.dL91C`TPJVgrWA|&I qe[/Hb}9ܷKd``pV0f3g6q	>||hh6y>'{Z=
m8?t|G8g71R͌d_\}eN8K@V3ix؎^$W]x,n\}zf΋:>Q?^ H'H"=)N0ifDNeDh"zƱ~_PKcMܽ  
  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$12.classVmwE~M!D(+UU72;"B1m`%E6$EV ?lZ-iqOrΝ;{g~N|f@@6G =
P`a%;
Glsi\H4.ap)((2Aػ1L*(,dp
\#P띋e׌R=kwuWRr0l	Z뾜&Jj\Ç!ow"wE֦kh	v۱o:LYȔkP$e[kQ|W>qhiF
>\
^ӂ,F`9OqQ-盅nPT7T+r"˥	yԎ%n#VEKcq\RK0CL8NX̱U;fٖT"A"!5B

TCٶદ	UӴF5ǴBW'Uyy6#MS1F6C
h6U 8=#-T¶5۬̪qjMP:BnКmZR;r"Zd˒JxUƤ-m%!|FpW+cYY|sP\_"Ns݂gjjE]jI+1.:hjتłeifAi'x젨Z.iچTUv*-2΂Cpn=E(3yc[bjfJ%۫uyt08`2WvPǫr%ONM%Wf#VK#QƚXld擓v{vGue5{.q3֫9ZKWևǃ\Y^>L6OCҒVEjζӥVv̓Ih;Mka[ĲǌɋR˿CNʑq`r'`"$"qn[oyGRxoH-̦2ā&2CCv7C?伿+<+lhkַ3G"u9;hjt F7p:d@a|G8N~)Sab;__x&`taz
'8)3}d
I҇)L1%oDO3]sl/PKst  
  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$8.classVvF6q"Gܠi
Ww)%CPLSZZ]=F
; 9i}P|3;#͟ 
Mq5%!Hd
Y	Jײ,Y|.b_BQ@Y*	
Ӹj%K%TaM9p`Z+l	sr'`#Vַy,zm9G̍Yy;zW3j'jv?nfGnSNVFn,,vC*ܳ+a :ۑ*ą35{G]uBv_p		hxbp5ws9|{AYȕdЊn^4T۩ئUzNFuǬMb+a̚,Hgj%Y噺K5N%MS=KL{jC<EkIuڐu_e.KfQE$W3)嫀znkvv+~ICtcPOZN-yJSTJk>Ah$Y$LPizj@p$v@-5	+Q):SyLЗ0dQv ||%jJENjcaS٤%*d5[*INѡzٰCf0UU_]1uEU)i[#W,;1k#A,.A0bf̘KǴr<W۝r4n,\\>
cn  #<qlTVOcx| Ӄ}nj ȟ=r%13}TD's^懒#Nʱ~M&Krq\:$]QV݈ҒSk.{OrSKs}IڍQkSL<0+'>`$C
fD歉}>Gf,v!g9c9#rzy`C=S;ȥr>;_̑Yg7Sz_;80Q_X\L
dv.&/I40D212I2~&yyp/L-p{aaOYdd<
\7{PKp'  M
  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$6.classUmoT~ܦMVЍe,I9~1obڑE$$׹˂RN
|/_@;iǄ+\sß}MpK"EWeTXQ\@]UYhQ	["<0f˕[rlNzoxi'B lЪTqW0H>CV|f<q"`ugD?s1w8~/pf3\"8j3
uyz㚄%.0Y>=#S9{
˵=po;46auP|پZn12Tհ@p\:%K3Ǭ$	O3	
43uCc2Eo4-ӶS14|[t#lJuuL0mںic;4EclU\S
CSLѭ4sh24U
|,ʔ¶v&CeP=I)`m,~Ti#0IRr+#Dʑj,݊R1q$A{7^rNv^<+/|(Lun\|f2B:D-IK?R=CfhLvR{[^n%݉zҮ.d0W "i]r+tUC6f顳ޢYyz[z!+DqsiV3#̶99<8B~}
Wkk˹!N ~w?~A1o1,.FZՇxeV|uGX][=kWqyw
OionRМXІf<PK    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$24.classUmOV~Ct@Jh#}rבJLպjL0iHú})h&~Դ]5-f>=˯ t<+aX-aqX/`xHE%0(%܆Z)x	5R/afﶣvDX]. tOC(<읟I48Z]-ۋ?6$y¦9}+
>5pzyq"`cgDLzmJߘ[ǞsHNGEN7iG0}=-`9Ȍ[:S
Gq<ճ97)۲h4
ÐC62I);m^TWs樆)un6̷
3WS~:yt˲ulY5:yiԖV6azrN}F	$L:e*L
J6
^7(Ό>uqߕ]KQ+/K3Ye״2SdL8,Nqtٲ<HLMUu.*k2X2uh9>*+k#R}q-s8"wLcUlf9
co̠d+V(u%1qg}nQ8=3L/ptzљӏ:/_GU_wβρvG
&Hq"텯a!L%JVC}JV#T;Nn;JwI>T?YLd(4f#DKi@rv	gzp|ߙPD1v&WƮ Vrn*A
[x5_t
~/#EN\@A\MfX@\Kd3H ɇnbT辵q)*XńXCEܢ&(A)I`o;FôMZoPK    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$23.classUoT9I4huJ;[׵nþ}L*͂RG2+VLB+dcB4K>>>{?0y)Vm-2M`x*c
&q?ShT@Vp
Zz&4J0+X͈U,6JؔPD|}w:Q?9σîL0HC֏O[Ӌۍ^?j}
6NE#l5|6gFO88	0N$4^ڍ/lS*~
y'Kķi RVtn%:nHPP˰RǶlj	%RWW,m9rlB<N]xKqW]Ls,;:7\QS}ó4S"zfD.F;Z\51[U|EN	eqDi@f1I&y:Q4iIM&15(.5.SlhbI±+q-x&=.7	MШYLa/Ϋf\1kq<B(k:2!1>poL\ǾhDT訩1lGa,7w̠
&+a
v 7ANa;F%Nn??P|@"z9K$;9_>O;F@vR(^
R	\Jvl,/vT'FNnݨ_,qJ{Bq#sw)n0?X!yqq	;tSpI3Hߋ	Z̄_P"ިQFIp:fTsUnCkL>[\Z_(,L,P9w9 so(\^b>;zS6nAUWvV^ݵ9f^c+T}usBT3$
2iq
*J&nN,	zmfPK*_    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$29.classUkoD=7chy@yto;ICR)r6v+NhhB# QnKؒE̹{<`bW4 \1EH˨`X)hŢ.QYt		z;iZ=\n'~~wx3<c>[շi=JOQwa?jFPk&FFitq	Xdex6>wC5;Gi3f^򽃞WqĩIIk'u$*;㶀Mr;1]+L㩮Gt3smؖae晎j8,C]թz3lm!sE2)14CT'Tze+IDYggz
(|55Jl&!%5
ZZ|bQ4(|9]tjKB
6$`a<sz;$8᐀~XTOnٖc,P}!T#Ѩac6tA@Yݩ:qjP-7T;Dv`+la3w-h\+Cv'zX
Iۭ$[8w
ݩoʏ8!k}X'JZ<b_{%oyE_-Pɵ`v'M~jYc3~ijfPi|blr$_n%/uFͼˁ_Chh+dwňg*8kvGO |_y_.ŧ(^B@z1X%#Uru)*._.͎Ζg	N!?+̍¡J(?`L|IG\c^<C]ӸcZ؂)En\}v0qye.tס+TWܹx|K=kXPKc    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$26.classU{oTN,
KB1ұ\Ď/Mi;BW@r7JvS?k$> ߄/87ݘٚiW9;߿n	1_'X(n	wiq
X,Zj`%LC)BB *A&a`HotNP\]ܗzHNOK0,)}-T{IvafݨvdOjQXֺ$8(I%,X=uj:Jz$xG@]k
ܧNavN=
X+c^H`4MiYjkت*U[ᾢjaF7,EK-uQU)
d}֠ZN%^\=6hQu4RN7sfqSu2q
Q	^uipϭ{Fi׵4\OsnmnY
o:0M3iپa.\s۴WLK13r0C-cM	Fz[mAfC30w TSa6{VPAG.aZENgQ[x(~Xlukq{ 4]aTPq%4믵}Hl7w8^Wx^tN?tkQ)	H|"a;t%Q/ѪkƛǨ׉}X}m'qf=Ri@#DM!C'$5}D\">t7zA&By9ce
kkcrAc\e\iIlWQ_߷y9ǘqC $񻕉sὝ縺++p^#9D^naB>FEP޷u;DcXKB5 PKH  {  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$32.classUr6x1[.I(,Ma+Y-%jr	S:L?:fcv6ޙ]'mߢdLթ2	vZ}$˧#7 !壸>>\&\m
ܨ>q[Zq0C`vU+8p`ppbW6/}9yUᶝ͵ÍV~̫1zWj=aYTpAe+i;ak<vWCylCk~t|;PMFrAQ{iqR˸GQFEHͨL"fb&"ULTpe4b	j$ML,bLwᮍa˂M{FZPѨ{	\%Qq"B))-*dh&(aቖ:	dl!i\QN8g1&q0SŵQDhR&qeJ
xLcD@0,!TqjAlt2g<1Ij҉i
mg4!Q*@˔Xjh^+Z}eR2 1VQ@I8ɨbh*"#rf258>f6&d6V{α1׋IA9b3#7fOD6V˪(wm)y[Fs^8Xhr[^ˇ%oګls-|Zڇjc=|[A?РWVN
wslQ?VCȻ
~71-O3e{
vt'^tf',Zq+&oOi#L,M;845`rɛT=mAOTk5^qNug0΢F=SYq[5p1xv\q^؃>xǟ.\|?y5Ns3]+W0^۶1`W&/Յܖl`aWv똷ЦPK`K     PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$3.classU{oTM5d[e,IڱhGN*&!])
!b8v;*DJ< 
x\
n
nVYx(cGOb
P+hBGFLX/ca4r7r(9qqF7cވ$a9vz'q/G0HBs
-rxl H}$:2H#Y|iXsLx.zNA@P(0lY/㎀%a?&?|9♆fX,KU5exO:!C먒+ۖY:enWL΄(b3
Ҕyj :$NuY
MrIۆJnP)/)`8R[e74ŴM˲WrS)fkT--R\s
8ܚv84'ߛ\ʮMe3YBu9W,MkTIU#%h f	FXT4
XByyC Sg}I}%}rT茳HdQHwM%MyۼaaiR/XvRh)NjV<;I1\B-~YLOhOC9C7!5}D+G\/B3J|>G	WqD[ӪTg0ۭoWKsoPyZ[.-ϕqZxU|G XpX[(Y]8m;ۭG{GkGOuNWW,GD~L
Bk~|Z;C	5MAPK#p  X  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$7.classUmoT~ܦuV
X:nĎM;thb:wYP )_5b?дcwcBdkﹾ瞗 `▀sTea+e_UTy	(Z~$P	8#g<,59iXc&0[P]t`%,D	3捒CڭVaғ8&
l0{ HB/+
e,I9MX:&pD,^κڗaHP8~aكauKxC%xsl]1B᫺t|6]lQ2Zf30Al5EU&T}nX͆T-Ǉ">BI]
0q;Y
4eiBSt_li-˱|˶ij*@>USkyCTW#TՕVV+yd4_@#M8NCn:O8\2"v)S?b>ӴƩ"(biJ)$Pv^ {^PnVYE~o;X%Tg'9`vsX|I!LVw~<jrrSo\(dGԝTb,a2Krq~reB;I}um
qyt7)KClH_Oh
%mUqIޡuv;z%:_0B	qtӪI3c̶ihG'Q7|g\Z+·=_X/+$Fq8mHc#S^t1Mig^
?_XH]zxx3b]z!;CTC(6x
PK    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$15.classV{Eۻ]VCT^~L n9;H0D 1cͲkf?pRkYv2uUMˏ?
8
gpaQ7
5Xj@.[:P`
8q5
XU݀`jp"W"j/܎ꆛyz|c<GlȳqǸo/
m7yQ6~ɻvJ7"{b^h@;OLka4и5.yn6w͏.|=tQo7kp	#4	ÕW 5jOIh0$&J-b}D1a6%S!FP7\Y*sĦZjQ\(y!4@?DP-VuP$"%G8c5BwJ2XE\˘p	@RٷU|:JIA^~6売\RSք0CՂTTqÙ$!i"c,>kMXQ 1!=c*ƥsﬔcm'cM!+
$HTS$^)i(S	`skB&h:M$j M­#$N'"ؘ9ReT%T1="uh+f3XC(IJ\p	S̱hm4!R
҄Y'MX&l1OE+6o&xRظn7IYWu`sk\`[e:[y-^jv~AsoT>2hoqʫp2c̟dǽ~'t+Fk\7rY;^_ZV;ڽ׵5
Ɨ^8Q{7fu6|uCf@x;Ign)8
X@Ӌ _FΔWq8RKM*;0֪"]oM#h Xm@sYZ^MWh|㥅TЬLC2sC_)}B
 Z;\[|
/pS8Ok~mU*U0[9y?ĝ
 F+[-2 PKI]3i  	  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$17.classUmsF~8%8!RSl'AcIVzmC'Ewy*)W)3Ql(wz3{Z=r{wo T<cPc
ws"{>  硠lPK -
CnM8̔8d~q솬58=fq$Aك茾ru ~
81O^J,\{"c~䟲E1I~*+Cp`2?y4#nѿ||{̧P0n9`~[,kuPںhg˦.F(Cu
\V-fy[+YR"}(r]fhgl	x(L墤)zDFq4f[CImٳU&;Ws4Cs5]몦:<_b_D䚬njnU5T]Ozc,[[c5Q<2Uehi#1p7eyD4q 8NVi\Q9lNfk2u?XX*f(R;QQǢQmn&"귥Ir+T}Q9|Wj4&iz|\Iw.>SaI'0"}4AayR_uX6~;E*6wdg0ѵ8?O	h
/3ܦ{ytФwI#>[9-8\'M2շ ~]{Pi2D3ٔ.!;Dn;sondVfW1_oV=MEuϛl6CnAf5>=(\bolnF9޻(J2<BYQ&l<sl2~PK"  '  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$1.classUoFMzЭH[ʀرײ4EH\R{W/4QӞ]h"쇝t޽/{_' 
D\µ
nu	7ETQ+bSD	-&B*"%2V.##UXE|{;
N4F!Oy8&Js?$>UZEP>&ak'G~L:_=UzOy؜'"?,y+Lăhe.NOOP0G(Y4(ⶄ5|*j6c{65WMf̴%|;1i[,3k5-EwݮkZb0Vw
]5^5]q(w%C[U~i7y$IvGB*cln[i/M14b-C5̦g+ExŎ]\f-fLCmZu4ښY1옖jZMCcL}|'Þ~Fְ/>[1s;E֜^vySA#P^V:ASlNYyRp7LTg?^^即. V[:JzU_{Gf2zSDϩ<[faRkr.LiW!zV>~Qn:ݏެdТ~F$<_Į==𗐵EPs'~	(Pe\y%#4){ѽ~yh NQl/DfckT8)ؽ[h AGM|6|HkFye
W叧8G|Byo͗sdV`ڥ~ArAc>8`+]9MPKk\o  @  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$25.classUkoT~NƩkހэ@^؉7ҵ
MβԖl\~a'ӎ	)]8={=9~a_p%|RHND%I%c٢*&aJ֩fP1{a/eʕ'9'p[NOxUp't;AʝA|FRrI4?$ivs-K/88)QA*צ8m=:CɃBv?Jza1O_DE+ф)bS64t56v܆buv};e~S%_=j{<vA$EjbuնZ2<X~Ci^騺k5ᘮyꊪ9^S1m7jin8
հkھҴ<۴5ݫ9Rtt.Åǰ2IH^-E8Z12J*qlcL7{Qco8(L L	{}yAƙKwyL<[%gς=g(+)KA͓D$bX-_Aح1rZmمoc]BW	vf`TNWN!|:-zӈߏKٿ+OL
DO}H#qr0O}>
rXB
ڡ^1?gw~ġta37"2
lsbS~̆DN0!
[1'`IŲ<~W=hV_b|w_aKܢovsog
	'{>z7m
Xb'(T0EaPK	 U    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$4.classU[sD6q"WM
кԹUuu#)Sӡu82#ɡ
/0#~ ?HN08<3:{˞sv jD\śe\/V$b	VEPrZF]]e9!;'k"*XpS[7q70Y[Pr{l`'=D	3Uk~ґw8<
Ӭ0{$Hpn(t'L}$eX%*?l}&ND<.6+ԧ7>	BrՏ^?Ɲ-=	%apx	Cxphm[hN`خk2}?pxJVmϭaXczVkmώ(uQWLUs&)+WO^5a"'fih 2EL͆i5S5Ԇ=+P4]S75ǲ]Mܖ.38p&ymѨۖ曁՛
WՕ:llZio)FjZb>f&%-NN>h$Wu1l{{<+"UEQȩZ+/)y'K"9NgQ| 
CN>CR-qY8<A+>+pA<IRy?*6{1\Có={{oGkߍ(ډY]?Oqh%ŻXb&飗hufF!/`xt%Z@r(+GlUJD*SDەikYG86T3G~KBǗD|C|7Y{
[ۄ@{Z#Zz[+sGx{++OpC\}Hě WHwg(:PK&6֘  c  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectDescriptor.classW[WWNLEmDڊr	6\JP
ha2LfkZվtu7ug2Bqgf߾}No [J0&u!`$"qDLzLpip>"0!ь#B,P<?R|ƇDH3H1P~]mf(2tM+9kf
eImGW;eMt5Eղe}b)0ʶ:dəyMI8fJ%ۑ
Ee8_N]6RU)Pm2i`Y$f#jMȳ:T'YY3dJI3R8s`)#qbѷ1гN5@IA&i
@~%W3O
MwĈm~)lGN&UNS@G#CFc^񘥥5ʈ؊&r襬b5X`^i'Oɥh:CWh8^	;0jz6:̋!u;,*	L6`Jvwhfglt5k{(jJ{T6Ϊ>tN̛̰IN Y	,0X.`𡄫/3Y351S3*ҾA0L'8
Rp ͣi&:>"Kx}[ЃN	
j8L[A8fL	Z+m9L-9jeKURuaն5n\K(DgGd*d14]UJp\8diyEv&5gm6PEmy	.-> h'7EwjR}Po^iFq&h9
r`kliKҎ4Dyh:ƣs)EP|r>\#so2jƢzvPV(Kc"nwR{myɞ}{(>e`D	
WooۺƵJ2vKoMѳ'$,G`w-~x$w[I,
>_A`*C2pR-?Gc Q4!G DQ%Du/4DFi 5ID3 ߄ Uʡo暫'i4˨eۨ^AT}2?G~F}7\9G(cpՀK>L*MOn<LqxmD}Er韎On/q+9$9X\:lHw~zEZjVğj\9Mr1OyJt`yvGp9BMwP6YƮ{Q]yrf!-Ԟ'al&t^zC$k=wy=s􃮵wWQo݁k.xm%k1OxzqnЯ-N>+qO¿yϙBч~OݥB嵂T=G/R
?}>U/DiPK|>  
  PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralString.classWiWg~$8aeS\ ZA[QS" 
t!Lfdbfkb[?.`۞Q!9,}y{ <y'*CBK8) )WBbH0Nrਈm1+"^ku^ePLצ%%`ZD=4D4bF.  %Czt9Uс8CKҴRmfP9kj5:ں:Nڬjee}x.v2ӰU&mx"	#kˆ2'ɳr.sbw~\pd}ȶ4#E=$LjڗKOְ<d-+3r{:,R~i>°!?oe (]9pJ4Qeݯ*-nUBDIeruW&XK\b=rٙLӝNbfl	0csNKfS;yXi9;և⤀*rbK(Vbiv)G89KQiu+TrՑq&o&	&2v`,-\baǲ4jJֻT.Ma	$U1ӴrWlA$₄=hpQ.	xCh-	o2_pE;xWBv	xOvUB|(#\ch,_,>H{ +c\	>p1.?|7^OHsSW$yMZl.ٖϣ6L5Kurl&)Ll۲9b?zzًs)R-˴BʛBacZ;_3= ٙ͝båpn"7h'Ht*Di^X+u
ϧż?Zlꜭ^tmէc|67㨑2E7
՝)tW5Ӗ>D;^MX,VWZ!4:Cc$tO|j&ZF|MU͘5gT/xŎɊmZsl907)lLjEvdd5E焰>^HDCN[(6qtFF!:m#ZU|}ʱʹ?'0by#@Ͼylg߯3$b[c(pa>߃,7.,@Z{בFN>}ڄ
bڈ#JON>cbFq eaBQ˨H/FIJx6H.A͝%ud8 )!Gu:A|u0kG !gg{H	0Ư!ɗ>ѝ'X_L׎%t."l(N}xBtBO{Cp9snǬX>B%0˙
U6-Btl]NC y'wQG{;ov8ymT0\F5VNũR
EjG)x"
Iov *qU/bO(STKqubW_c3Na4N9׳PK$  
  PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/ASN1RelativeOID$1.classRJ1=qԪoQbkšWGB}`ՅiidRҍ?"EPr;-,G8&laBT0dr;~]0,U!ƪRN.9Ui}IseKyO\5Mt*S3Zf)GnWbkAG{PF(z&|O*Q]Yy~0A´Xfb<fRB2EU:C\퉂!ۋFCMab5诞܈.7r{W\24
C"a%$hzaLS#tl'PqT>TxF__)rbқ21}%PK%N{    PK
    D:U            .   META-INF/versions/9/org/bouncycastle/asn1/iso/PK  D:U            K   META-INF/versions/9/org/bouncycastle/asn1/iso/ISOIECObjectIdentifiers.classNA߁nJXTn?X$ԤICԘl۱EӫZDM /xfhB4Ns̜9;2k^Śuel(ぁM[,R@Yi@Ui҇3a(8ryQ"~$E2Hnt#ߋ^:΁r?ixC~Ńd8Þ]:r@(b;RfE|C.F])z9rCW"+~tzKx
ȓD/2vi֡n{c,8u0q
M*cו=Q1QT3XT4c­%QlUM(t.ΌKI3(;¾}6ː7mnu>I
tWz?`xrтy	iHћ5|j
QQDkqc]XǺ7pY1	0H USdN)
s/}z_v_QXx>tt4Icd籅)gv<iPK'3'    PK  D:U            7   META-INF/versions/9/org/bouncycastle/asn1/DERNull.classRMo@}/;!PmRB8BjR#E*gkR@M\E(Ĭc*zf߼y3ޟ ;hb]<rˆ]*TA횃1{~~)oY:4h:cȿ߾<dHrF!'s=nFgc%^(|
Ȥ=GQKg0Ncۏy$"H*Ќw6?.5RPi"QQ`'C=}mtDQc
4*n6Qб̤
7KCIjh~ۿVP.frkQW6p;P<FAL
+R+yr:Yh)`EY&ѭ+F$62(ŶWz*᚛{t`9U)_Vȭ 5-ӹK[.is~B3:j4!|*3,}CK%2E
deZoPKLa  Q  PK  D:U            9   META-INF/versions/9/org/bouncycastle/asn1/ASN1Set$2.classSkPn6mխΩuuM TDm!lx^_|P(w$$Pss|Crp+,*u;XP#;jC&~Z
~r|6oD&c[;Ů-E?ǇNpz㈩ա4[{|8
r=op96wjгs;Г# %Hq}[{"#
wul:
hcAGC5f1 &IΑ%fJhn-`GJm;5V\1CoܕXĻG<XLR?+.x9kD(һ*
L9%aR)&KU@nKdbP4Z'`)RrО\Rβq;z.Rqx&2iҨk	9#@_4}>~Az܅2lCѶcN~X{a$LPK  g  PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/ASN1TaggedObjectParser.classN@"RD/6&^yI#zR66bռ|(UB4f:'gNg
v55ljҰM0:JI0A6j DeE# [F 8֭X(zn58fKbSz̤IۢM[;'U6CWpaGWMC&(JgHE5)}5TnN	3;Q{ǿ2d0v\C]#(u3%8U=	Ep0e[}t0q/Ɵqi! H3ۙ5d Ls?iU[@T>Еe+#*ֆ6>PKڡx  J  PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalString.classWWW~00d'4/-	$Y5[д@HBBͰL`2CwgSдMkVk5Ւmc4ZcO*IO_sg'.9rν={߾`>RpBA|P(R𴂤
UD>"gUb*@S.V1	9IdTTc*Kʕi<'++Q9rY<`F6Ja_o(8b^P𢂗.2#3sd_@cOy+52rNL99yJ59#30;mc4c
F:B)rLq@ŸtY9ǰR<>c5O1SN˚wik:1

w-x~jNwd1OFW;`c_Lִv#:>xR66DXr{M9(m$7IT6ϵ1qVVƺMkܙxtaZ yg:/53WSs&eN;i<\Pj驴C.ZZ	#7QBq"J Av̙Yj˘lϟ>mf[-EnjԚx~F~;MG26pn)f2^Cojo	T/QtٮL72m
04әr2|;W5|i؏*}ohC
#ثM
om
x`eVXO2G;4\»zЭ+y5?]̭=

Gq2p4%y/쟆fʪnZuGwoi;ջoa.+Z/k,̆Y{J&B[6k2NG>-=3Y;[?V'6Mg(LpײbU۸y'w/_%ҝpɔ-Ǎ)t!?lWZ]ZfM/%MXe$\'Q`*c[fnpKεg|iY.YXeGFˌis|IzhN/`t~>v̥+
W;YӽH;'Fvvltib}(аړ'Gcgg\ݶ=xgHoS3k( [se9|d72F&OZN`ǚtxpu\`i%VY
|G8H_1P3a}_-P1\̣LNvA(4PCGm+ܽhC;߲>ɻQ'g6HD!z:p hwYYI"K8Ie.vg1vzfj-@Pu%׹^Ї
xUb|د@(ي'|wޫ"Que-l8u{UcPsj#Q=_\][|[U 垤χ&W0{Uϱ
U!R%5A:+RoA!*E8䡷zhZ	"	<75r52j|.>JCFnǃ7;TW#jQbs'xU%dXHIq׮r%+.~rRsVԄ.|hrU`[2濉TACl/ͪ}rNw
C`Bl5xzPTzcmˍЧСBm@Dk\Z{n;Mx-QcmXL2`\ҫ{}pu
CfGuxWA9B=g4~0};UB ~d@oLGeL}ILV
鏲-U6z;[M`[fNd֏~Ҙ
SMdϵ)V*>V߯[Z#=>fv?PKX    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/ASN1UTF8String$1.classRIK1}qj؃hpA*+ꂭ^<ciF2i (nP1!_^{y*m"ecc6F0nao]*i62pn<˕)Cr;8#UA>U2:hUZ׾9Ҳ%P}?W
tmmx<4pyJg-U۬>v-hkOH4IV"dnWy~Ra_¤>XLc,~Q.RB!a{Lk14!˟mK=-.ζK,CC?XmI=0h gi/tXbô&
PKw    PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/DERBitString.classVsU<vK@J1PIRj"aӇD҇myn%]ͦP
"PE9:~0Mxi13sxߊpW@EpX@/	8" &B@-q,a#qj8Nr18Wp}gU>@\@EDd9L8 U9>O!ť9* umF1L#n$['3kd-#jczzW<zBa2MO(ƨ<"JER1ZƔ8c5%ksJ,UC)ǧiGأLJ\6`1gFdRI8JR'@c(ۯjy9s'hMb{&wrVB\6U]mQcF|J7F6nyq$S9ɕŴf,J1ӔS'o0<|\H!CM:P
DŖaUg
==H:1c/j*gGWTݼ$!-R`0_-ՕUj4RrHfӊf0IȀ"Tu)O+椞T!Ì a7f.
\pILpYDH[|*h	o㚄w$_$+hMQs1>DTG0<;L'#>M	Ⳣ\) zkt0'JV*|^aYS2y!įa3o^͙S]"ns&nT-ӯæ<ů%u9i]PY33HpWBw_/-"ɪ#QK'ȀxT %7E&	n,Z3tly3FC DtE3v-VKa2bzNʰPFF}MJ v<|zbܸ1ːj*'_
ZE
%wr;;WP}JqOA]kj1]R󖢚VynzȰaYKNعGgㅒFDJP\
UNI1l+·zqP4=v.@3^ 
/esH2\4yr󨠵{	Σ%9N6->D`rPyleW;˲cY ԣO؄Z5=D\MhlA&.
ϺQB
ٱ~dԓΪ;mP}% ؊kᡱ^_#f)G_qt0:lp"$܋Xo%EX=9 ۺ
8a "i9&U떰
& !nڝh8p/PeuIJ ŋQ:?ݚMaԣS^%ĺϨm߉7?P=h>5x4wBvxO7~o{G s7;_M[Gq~aԌ]X/Qa3.S^]%nFG. ~kIz&EonQ 5Z:*/"!n˹Z1|pO` X6dPKrl3  
  PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1Exception.classuKK1OVhuNšWAP}:1R.(N,U.rorrK>> "2XˣG!$ތ\Og`H%C29q(U3dP*1J"(XHRD<dgg'2G{_R(#B9;:N(	G!ӳOJhEѤiMEv`OPu iKzP2~wT1WmѹEj+sp:sa=.ۈ.
u/PKi*0    PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/ASN1Encoding.classM
@gl} ++b%
pE,| J\mL~3	`DGhw7)2i<5ɂ][S8iIfj] ]Ec[JoLx?~	'lKJ.Bf&pj.O=yL
~VCVBw>PK8-(      PK
    D:U            .   META-INF/versions/9/org/bouncycastle/asn1/oiw/PK  D:U            H   META-INF/versions/9/org/bouncycastle/asn1/oiw/OIWObjectIdentifiers.class[S@K	zLؐRNRRA+X;60iA?OqpFgw{ϳv7M<vb0t6$KW$r%VH<UK)$[1<@Qr^`uՓK7;nȪ5
7ݪ6=Wf5S)New,9zĮ@giY4k9ftN)l\ձ];XhM
^)ٮsܨXYq(cjmj>LLfFL:޿sGha$-jfKƢٲquy"f)BԥL;ՙiCCJKק;[OWs
$KJj]{d	Jpȑ!B9r*d2dI8C_h|+Z{;{]w;5.n^}7o'o}5覱Cr0A䨤-j*#ҥў PKgP  v  PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalType.classVkSW~NPxLC%mCVVDHhqe٥ȷSB:L:~=˪(H8p}ޞſy'O`MX/Fq[~-)X%tq
EU|T.H (!tv
]j5W\SxZ-gחrggX{a<9<frKR#0t%`Xv&B/|x266dơG:B1g]x76إtl.3 ͺa:;h'i[שMQ Ǫbqx!ItzWM䝂UMÜ`l. Bw۝!;9p+u]YbŐջ*ϟXDT-5
H3LJB|2qUlhcbӦ)
$ٸ4?
4d$塄mTQ^^i4<Ƕtfaj5B,vns
UYix
=^0vJ9-:䦑N(K=˽nt2D\8Í3.z3Xz4ec̓@΁KWԡ;r0N[҆0dͅ#RQ9i9M%xQ%6RKB*vӻzQEAݧs{#[.[7s	2>A[ڜu}Tj!:K8Uv❓XNA^v>Yuhn=+\wmԔb̠-K8ӂ1W>GW7Ee~1ޜ.z4wZ"M3k2"|l
Sԣ'>xNޥF_Eo]yWޣ﵆nz /?wWhB1z~P&x޷P@WFGSr
>ϫJ'C+k!̴ϒ48	%3J|ot
1黋
ҙz?QC39,MF'ý	?N#0">j7+wQ1ҩ=탴>wPKT~X  	
  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/ASN1BitString$1.classSMO@}\S>JPp@CO*5)"Y"gH"c+P4o "XB"]ใU/oCo]D\F֬|e7tW0̵'I#DT)]o#JȾ~K^щ
oCH<V
۶F^2}R1<ih[P.8E[|K
<n['&ezt.Z_ΐ*tLca/u=Ml92xark*%LfƿETDL@Pd3=aI:74[h/?gCV'# ]tZmsV?X4\)O
s~"w#%Y<Ub|F
xA~!SPKW*&    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/DERGraphicString.classUmSW~.&41mRmmi`*}uō.\OjDLG3f/_鹀 d,{U0`j>L`Q㬂
0!"],x	C{P?R1>ELdnaE֩19R47T;ϸ)U;n1Q6Oug!gv-(<˩$LVFr6$W0FVWx!x!U,,l
/wl_%%˱2C ZJǞm9Qn3%\־+s/*D 5|6ְg_5a4kۼb)ҨrGi)PuE]<n>2t
+X<а5|T9y
lh
(J	1=%}J]tAT=n
<9Ma_Z	
4cعTS&dйce\O\.ajPk=.^C/ Ldor:}wKHFD
*Nuݖ^s0De>a
.NkBrMJ(z4VJ+x"{sa̬{vS^Strsר1hY^+xZFNbbM)n6k+Ld.Z
%R&^}??䉥8~jOw`[c8p D0t8R?v+'ږɇDpF0":$ś ELERx@F!HOPq?GP@kGcpma
%%L-_F+&o3JWSHfK)oJ:s
mVȓB zlvTWDgWigd﴾PKew    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1Primitive.class[WF뛌1P

	ؖ	-'uk9='$Qj$*! m_򐾐9~^f%BNpmzgg3;3ZϯXAM$n)>bUO|"ϤXⶂ;QU➂(6F@QE<`6-Se3_1v3$*7ۇy7IAKmtLϛv~-ڢ&ji[-COԭF4pƿv±3d{Lv}mǆM[r~혇05[MU?rUƿmMb*ok)7Zf! /J␦	aQ2\O{Qa/x!R*iVLz
0գHNPqo^VCPIӻrCS3Lv݊ʵKf?0eK$Ŀ$L)<2KTbbJN7luJV۸#d&;MTv\pT]$2)JzU$}yC,[n
laXIb"}MP䁽õJE5hD^?c9}f]5n[eKpқ;_GwlN;	!3/}	7	IC
<pa 8B#4 }q5\6t`$2LFQ\͒&DgINho.wfRE6blfs>{?DYvh	o>IB˪; E9E
4ist%
.&Y2Vi2qIADA_"w܄Mx+YGC/?8tV_0p(
 ;/1@w((<2\eb$.d;頏[q>nRF H{|ȬVn1=6=ׇ!BFYh"ukA%Е咖3}PK?>	  i  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/ASN1InputStream.classZ	|TYr'		Bf BIXD"@d0,(2d.d&N&Hj
)QPkڧקmZ뫵sd2os;w! Sh*<`
3<#ME+~OdxVdyq@A
?Tt(d8,K2,+L+"_e7pDϲY_B6%m~);
U_6Jm{
W1^6k~|#|N?3GQ9/U*[6LRW**Ŀd?Q⨂cB}\eF	^!D5ldFVeHF0S?=me

PQ'CM94H\R
S)*hJ#@tJhJRJȭ<*QJiJiJgdΤ)*Y*MUF
M'X@@^=[r/j<7mj.o]Ruu儌P :0jooB <jnVG#t"g!m~k
-R[ka] d0\*y=3Y醥]bm
Z*os8޹*-mʵZs43eevk0Uկk66oEk _bVϜ܅^w\U80aE5T
j|-IʪOZ5Z!0N9dy
,ijl.j ,*Lä2TKXb8RN`'G.!!T	Nʢ!dj|

aYcul)VJpj1Wvo㘘ⴎ5%,KeZwMbi&钄39	bMTr6V4"qnS
**RϯQ-YYrq;)WW[#d YMb4^̨P*hp57mV%&6LutWڱ۱X+؊
Uqfqf'ah
PASja@̝#L&9\1{&+\ġb#xԎqqv;N;yEv:85̥J	d_]4i-Hj;bBN"`$QGiưe@-хvj[#[CfM_^Y\f{-Mj-bx@,Ŏp34]Xj
_,$OXyHY-kQ]pab 7PԽP?ݷ~.{N&LY7$oƤ6iSlt	-SR;-'Z)AFPPGti!VSP&;(lfqe쎔AIzs9O i*j5tg-5eDPz2]o;v(YI/kQ_Ctcx>N@Cς'8p1$:Y9F_HXDِ;QA98`#ye8"95'Unh''9$FIM{J6JgM&_Py|"Ƥ	j
Q-/W Ryl.VZyN-*tQM
,nxBCܦНRn(]U>+@>=v	d
dMB
ܣcW	OrX>x]G]:e1tQc{X
=~'NL.1${gu^5 16l4-Қ|z8fգ弅5VW^r~E%TPUe	_
Ŋ̸6S=Zy{ph8Ƥo
RSCN#u-C|5}ژ[7M.M'/&4FIo^jw"\}t~ƺ7a~:%7)]̝up8kTHZeƦEHUYx;Nm'U\S#TXϡcn/,LtΌCME)Sa$ӜOדQ9;?Y{k
ky7=+<])<.ڒg]5]Ii%."8'FG0S'YP?ͅ%~=BC$LFx#7슂3C@^zC]Nq)di9Q4hpP3c/KSޙb&qħ7#nZđS@;O1Z0^^frA8'w#@}NFO޲)Iak5}pj
R{
O45ȭ^X	VzΗ &`G܉0N^VİzK$'e4R7eoލ4EZ'5zw}&aI}jz3,HKg-⚊X-tqq5ݽ2oI8튟>WZI[vA/UiX-yBk«5h]B2խ|*Mƭ=ɭ#]x/j-cio]]k5k=UuI4
_0Xj9Wx*-5 :\F~Ø&iFJ|d©l2h<+0z9X{a:`Ny`NyA9ڠ=Ns3`NqA1֠XObD
q2b\~/" dK`ǅd3*ulntgYGN:V3KxːKy:l1xC9dMfVF5騧Ia<Zy$7ce=fϡvdyDVf8 aQ٤Y`X.o1{Sxhֺ]dOÍߙg~S/m,s;wlŲsI;ȳGn	[s߶nbn8x?%CA(0uSсZqP1<4sn?
:0y݁u8a|=Fq+&v;xN{;vbx2pߎi} Oد=`qs)j̴'9o32qܽߏ呵٧oǘ<v^(lf逻6ۓg9f.X;0X{5S<{ Yc0f=Ϛ܏3bYſE\wQeY1M3q>YKdC/mqe{#r9`]fXXq>	[sWħ+<CwG\6EA%
JW0*cjُ_Ĵy普")vU4KeLێE<KV<.rH<L{N9Epn["Dǰ8>`7pp`U1phft/,}/|
Ut#|(EWqDuYOZ%.uyW+DYݴlhk=Z.z8|9]ZװGv [eDTٝEB"x"k;v¼(I;<ށ9|y +b/USpk+@,eDqTq(8sqEaQEprLV㔒Kle?u-'%fcC.OKIl7tCXW;Flt؅V.ǈ81gBb㪍3x@M|f8C7l7ɂӡcڅSlνmf	q!j)F0c<c25`*8K!\@ͨ,N5Z2L5Sf!G9XM}<9)tU.a-?&+MJg
܌8b!p9$$F`[|f+Zs-Oq`' r_aN,]Yt=Ѝl[0nچbgvKډyXFG3=|$]Cp	٧i0lǙ-7D\;ʟFi9	n=T=vs9q158/绋H=j-].>Ē^yOtu1VcQăxp#*JL7[64L\+˷_rs^M;l+a&a7YK?R̓'ydMw,.rYYٌY+*Y[l:2b%>lLsbsp>ɳZ9$#"J"W܌\Zwx,̢݅Cׁ:Ň
*cM&s8:pz].Ϳz7XBE>!vG>C;O,}sDƛO_W|A_tTwpdg! K|Xeayqx3b(Vsjމ]nr
 o qOe<?K|b=0b~~>6ru6,kǥmv,o/`iǊJҀ
l4`V3A6/
!c"lf^f[՛a'+˅IVLvcݦxҔgM0
Ly8b&7'4_kS!YMno*44ƘΠ3TB3MSuc1lU[b[)fU{6zڸ{߇10/wI7PKF  .  PK  D:U            7   META-INF/versions/9/org/bouncycastle/asn1/BERTags.class]N@}߷҅%-'fc8BL(HԻ>W/^)$Uq=p!Ķϋ@|1<|)bn5۝٩z%Rd#PQj#&I1ؚx+Exyb2(!_¡؎TE^:Va ">b}2E&$CXErrS1ٰÉ.FPgiUjOGPLm2g%)r1ibR~<fXY))&B@[EX>aKf`MG,EY2mW*gc	|>G/FVxpeE,n.scWJ"tGd^KPYAb_˺@
CO87>U[&Al
RH6nۇMO)J1E:?Kuo"7O/qYZK۝F[",e
yRO=h!ENB}Ƌ~8< 2#(<<O2O3,<ϼ /2/A+*|yyͷowy.|>!1y.0?ϙ_;K]k
[{xy\k>`V!{s/PK6_    PK  D:U            I   META-INF/versions/9/org/bouncycastle/asn1/DefiniteLengthInputStream.classUYoWnlgI aqf߲@)`6׎x&C#UڪR}Uwe xow&Irs=r^8㈆AChŉ:.'rJ-C
gye :J<Đ2aB*>TW/hHjH~tTzf(=5hB`渴H
fY4
Vq슍2DN$ri{ɮka;+o`KtYkd'@8/ݫ+|.YG`[%-6=DnSALZ=A14PH!
;}QhJe'#

SZYᾊ!E4vtxM')9EiPnaQ竤[iߖYh"Kc2$&c|nm:tlWH15\:n(r.'jt/8:9ѳK2ieˑa:Oi;TOe+1J)F:4]oϮ1m٠vn\hΫ^%o.IJعʌS|30>;2:&aBgo:`>Ec^JvqWr
esؚ	4&5RUZ9"p"c;NyAE+y]vu;\fKo,Q+Pl݂hV]ir2[>W
\]yYTa?fd\YҐ0nNrҲ3ld;UQ5erw}68 70^%*۵00wf{an;|Sq9.5FM6۱O\ZŻ۟@DCk.&{1#ԪE{yҹv uj7D^O?*Z5tAx{YE/=np3Đk^2{.v<G(sR>C=W4OGB#v-G)2Ac q8{
]4/hCY-WS4+#7D	A	@O@P/rw	-
ApרApa!ZVeUh}Wܣ-ؚXOm_>6/SlVZ琒 yDslM"A*[3EJoW9[-zpaDЧm8pEpbJ_g_._l(G#_gG|kӰKL񚟳{oME&<D MY|/ύQﭣPKett[  	  PK  D:U            N   META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle.classQnP=GZZ@HX
)@D*"Eq.[s
~ E` VT,l(\7BX̜3gf
\88b58sud'Gar`l*#wvkk`&CI8)^<l8iLU
3tkmW<A,v1ؕa~I"{ ~Rn}7dAH4\Pǒ*j\ppp=IARp,e 2ki#j~R2]E\%_ۘ_GqMS1KU/)RyW06'sz`zf&&@d&W:#0!峕H%<z)z͙:l ᷁SL V+l6GhDOjCt).X`29PK
    PK  D:U            8   META-INF/versions/9/org/bouncycastle/asn1/DateUtil.classU[S[Uv.p-KB"%PҪ$9$s3l}t	*3ձ'+~JqƓַu;~y2C
!\V
#U^t#Z1K|$15
{05bJҴRŬ
%S71tn*EĒ@}&02攑HMƖL8f3Km߱UƭUpk|rR%7F\7:lOiX)VX&5O'RY\ٴQ6ǂ'$>f&BJs5#S17Z#"\=a JRLݠŀ2p9+cw$tŧ:qO;8+q_g\M?ݶl>,Wl!c*|1k0ĦGbdrn.-U޾:g_7bH4 _01:L_eFmH!,rh(qU(=xW'_LJ.(a3lrIh>h9i&Him>)jG)eKfxD,OF%C7YmHȆ[)-'e_WLi>%	mGt1eXŬʺFƬp h-p8v5EcEA.,?ɖjeM{ *d1z
[N3gVuxF|Mlt<olYBIC? :[^YC$9܁kǐ<osz~#=y{!~<Sل9|hD:I}$
)^F#\WpK\B)y%Cr=;g8K/ѻmW=rvиw{KJZۿhGz:J`v{%eE&n!k
w>Z0&~wdߍyj8&z		@NV
)%BZUaݳ3'*:C>ZmEex]G*:FJPK#    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1UTCTime$1.classRJ1=Zo.Vm\SEЪPlOkd7+ٴп ?J]%aa29$o/ h60n#	wf!6w}nQT,/RJ0+RV>E2:/=iδm*n#GzFR5'O"]
[G2&O/jV*#<&0s0ٺxI"bX"y:~sGgXO_$T7Ks:%-"|<zȨ/` o	4kcs	\NRkd6YyF<A9	0FhO2	PK2x    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/ASN1OctetStringParser.classuM@_c3;Eq1YPÜ!, JLDwJ{Zu@SЎogxH˃:+[09%498aBo'/06Vݸ 	#"VOXL[y%DrX{BhWaqÇYѺˎOS6خʨ
բȵPK˘   "  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/ASN1VideotexString$1.classRJ1=q]N:t"hU(VݸJFIEJ7*. ?J3P1!sNy}{~EǄ1LZ00!4Yvůp*rpƐM0VJt
Ox#JBjH_#-kﻵPFU#GFRʅm[\]=37@X6	U~FT2lZ9ea,ca7OSUJ1{Hxpr!YcPK@:n|^kf}=֟e䑦_>Zd)[B&`-<SJ
F-ßy=!u;CPNB1Qi~@6$xPK!|    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralizedTime$1.classRJ1=8Z_-l-8qU|Slu*H&-ԯҍ?"R9'||¢>ø4&,LZbߖJL|[j>b)wŐ!]J6U^󩒹aP
}Ise lQ$[uíM=_<R3TQuiۭ~v%ljOɘt&>=JhQ@ǺI0"anúi,8Ŝy,0仳vZbV_T$WGܯIh4+a!LR !lzi徛"Z([B/MZ/=QJF-Cg{b#SLAIPKt~}    PK
    D:U            -   META-INF/versions/9/org/bouncycastle/asn1/x9/PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$9.classUmsD~q"GQMJ_0;$z!`0NLEfiF |i2t?b!mtgngwo
@E,j
D\G8>ZZ
-څºQCP"C+XW"t=Q<o1{U7Q̷'{;<:d!JyswWCntI&qcfwIG-6
p<Z'YYv~;m}LĻ$x0*BXo6-g7CՏqϟ$L	Ú
K^`螯=9i'O$lঀO)kfYƳXU,kN=R}O-[!l(V(w}k-SR}_TRUkyyݒ>
C[*kSS6gkn9cnOauKK
v_Po0|ec6(.OiSSQĳ(
%6xع#Q_h|Sj~8;._i
H$:K<w=O?Sڐ)<
o 8odǠwrߓ_["q	)~?M@S?t=OoA34vûD3yv ZP2J"VUXCQ=3R^#y}X} ?pB.?3~Vi]ħJU6X{
i]?sϰ~%Zt]/<*&,[8/o>e>,u+p2 %PK/    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$23.classU}oEAQUBoXDwfv-&(r%w1Ө@#e|(BO>3{~F3T{\'0T0%,Tr%2+
xA
Xۃꋷ-Nfajg[{YtCf/K|}qk5{yq3:Yc7odFRk+}lLx$wD^
ʭ^v-3߿ O)$ovv;%U0Ow&>#2W
"QhhŴ8J9PNX8UD%|P!At>CZ]:iH'xƴb	w=*}ő
_r7Pʋ5W1SZ	Md	?4gX=8	ґ)1-Z0/ԑ$)4ґȗS.$:P>/d%>#CבcAs#H\#|\EY9g]J:!x57<C3>3^HEp@%?JLOL"
J!S%#dB@RoH(#6aI 	5kўܵ:NֳP:퍴yƘF4o5n
zm'ۭ|Jig/yTx\_[~ԋ̝"sS?$*a/#88
WNo?_%Eh{is%4Wr6]$g
*t٢SX҂!:Q0>q_<T^ۘ&6tZDWr_67Kac~ScŜ.zoC	]4_6R;u[0uweu	=k=lq?64SP&WPIc8PK|    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/x9/X9FieldElement.classS]oQ=eUZ ZZʃDb"HiH>-+fM$6s)Zܙ{ϙ3 BC:(HPE*2
T(xੌ
d;\zz:i!tnÆ/"댸'ǰ'8e}E߫4{ܫ7TKd(fb!޲=wktm	BvqjoxVֈ5T?+S3%[JU*#C-$5, !E
94amv׍;-<<HS'a@_aw$
v"x;=q4"z
fЄ[zS5+9KZG̺tw]؀!
mjA-סo{!O3 FcM6AQ>;al~	b,яZeܙt2:O^QB{dbe
S(~>GzSm]@/>QD*t$QF&	3"c?"DPKo  A  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$21.classUmsF~8ZH NM/'H	̤e m?(08򌬤jLt2	ĝv[ x\,nTE
9v
ivKU,``X2T*[`%kc&^q_DsJ8M5L{Y$;}Lu4)p??Bs=Ȼ~~KWRHjM̱$O"͇OLYK&~I^s)&m$:u7`׀[|a۴y"1&2X9d!3}WR8r]K*׉i܋Wuᮁ{=J׳,~2m.K/0pbKfZn$:$ɵؒD}h#b29I'-KA+s3eE%Ɉ[Qq鸑e}#[pIṮCb643mI+|xX9
ߛ26BRI2=ǲ-)K~"GE1(0RSḡtB
,:":\#*(auLǃnkhk:tp4M
KvYǭ~u[[ENuxPgEMsfOk0~䥆kͯ߫|
Cs}t-[eq;dkM `{ӒI>:|tm2i@/i.X|FOez<6A.Ghf4j4[:M(%S
aD[TGʋ
YT0ƋKZw&jT8Ody#L92!&uW#ܤyEWZ{5+G/VVW^cC4ޙn
t}-rvt|iPHV'[h<cPKcc^  ]  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$11.classUmsF~.q"LhKZK
c':ɲk(WH	С~(aqYNELj2Lg1ioߞݽ_'6XƵ20$*`2*4uQ^|p0RKA[0kcI ;]}dKWVY_MI^<ʇRߏ?dXz0}l8I3%П+LG8hPDM6~b5Lzt4H2)hOָ0ۭNKtBߵ"۰!k?vhp |a|COW}Jۄj[I"3F@6C+oN :HږaF&x^Љnȣ(2l5]
.V6x	7ǳ9Dϳȅce
Z.aw4xV,  q
jSdP:FѨ9R׺E78a5)7o%ˌj$>r3Koߩ|`Ed-F=~̏!q`~IA;}MYY_(BKŽ<%_	h
czJ/#\YȀS]:v;mtp	+ǢC(7*3G.tWPǋRR&~F^gpLg-em0Uڗ98voD5]{	mY9{s;|%5])̰Ps,8/ZKOdgMp2PKYt<    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves.classXy|2ah1䅄 B`X4ʮe^Xllk;(UVXvѶvZsf./3?ι;wNr3(t<:*^#XG_OuxYWh:nϙ,%JG.~CPT^ś-БXG1uVg\/*cMuLpwTCG뼫:]=sU[u>P#
uUQ:cdB1u4Ud:*:*:٪cT ]'Gu4UX:CU1LR׹HX:y
p16W\>vFj8J&63Ѱq4lca;
;/Ӱ1_.
5a,ҰX>5g OA
K5fk8X($UBhmk 3cz{4fVW
"_S#\⭦/VTͪ]̸͉6rW/9J+ʺ;NYҙ\'tu7Ij%ssK:NfMr:e%:WuNKIeQr2#MisVV|PoN vS<je;}ôSBP|@EfS`@C(lhk2ײR '	tD͚@lqe=3YڝHk kGC):Ǧf'3:z-M!tFk
MyjB-~J94,lFM`C+CduSμ1i1N}U1%7nY'PHuALi
x
\w%הIMEisaXnI{ufw_mf4E|A3WRRvuhSv#ѠY`Ȓ
?ivޅDc IpC8.0_uUTJ\A
Qm)b*Q4q%eJ*!j#|65|7MCԊ%.TbU6QOD+"00"
$﶑J
l^~ySM1&or)*ll`7EmU,1ãӣʾˣۣ
ǣ*ףJϣjߣЛO?QB?QB?QB?ʒiBU\Eh0UF6lfV6lgN6f^6gsA6fsQ 5t_W^D& uјf]9t5_;=>+I`~7g̯wѧfPu=V|Rv΢t9oևҤOlDZ⑆I	۽el#uQ^2z ʉivpM7K"qmK!q]wK#q}K< CK<"qg98{:7P-<~ `tݠZ!j¢<u^IhU|<vF?bQj&e<N)<k8~SOiҌB'WThZ+tR2r¢BvQK3\`%r/l%&dƣh
*AEY(NG('W97*ժx='?,ZNjG)c=R4jDvS=Mў-W΍jm,GD5Il,	%	R}CͰTKy
OL&(U:	Y)TJr~k$OK!>>d
n vyۜg]Kss(6%	1إ	1Kl\mL vY6
&Pd	L#V@
?&('VdĪF5)	L1ؕ	L1XM6f@$Poc.h1XHHXJlYm v}7ظG0l@e,4Y~fLWZh0MB3]efL[-Y(b0iZ(e0iBLW[Xc
k-0->fa:ӏ[B-OXBOZz[Y~-\_p/Z%Le˙en7bOv?CS
],,&",V4vq[u{稽z'L<<,Jo(wmn61@.bS(D[){^B'Z"*!A9,v*G8/Pgŋ1xS9.QVb{}jy_!<C
?K%.(qyJ-qIX)\_Ob$8Jy.PKazx8	  ;  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$7.classUmoE~.ovCI۴PmJĩnvoI6&!)NRݞkʿ/MD$$$PE?!sP眔iFݝyyvfv?f1p-*yg<yT<X΁!2,anqь)-3w
ڡ6pތzwod<HJu7]Fow@uҖAUեZOkC;*Q;:I\?KՉCYݒK䠰&^nf&$g߹Uu)ZN3nA;"&q#^"?<R*TR{N|l׵[E,go
eCq5uRkNGӮ'2ڋjN[+mzҶLrå#S4=n9̱\[r,麌qf10\&3Xzuۖy#
ȅ(n)ŔdZL~躂K
ܵBf7#(,`MϠ,9VGgX0ɸ\xڲ$m_xfEEqɸoЊlmفc;"i38fda2zj1eF"^`K^
\"̆I|e`5ia`~(+VU<s:*t3ME#PzZ*nT7ӄ:aޯvU7"ʷ՚:
n%}+rh+:ݴ٪8K1TWC:١,Aj\_4o(u{W7WA7^wMx mw  )ř<2nlHK44ޡq'#xn!31\/cd ./"ys=?/OW8;z#Sh}e9⁫7f}NUJgJە#Mξp_=%?Nl2#6s=!z˘)JPK`    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$6.classUmsD~7ŤmZ(
mJĩv'	$$I
a:I$\3r(KG1lJ`pvs{~W ;%\lJJ
kwa0+E8%`%\/ˍ~b2&I3ɨ1PX)
Dmu~!Y&TLպi\6A߄Tu_fO*z%
Nd*UҎAXէ+Vk`
PiwP5s
S[1RH⺚v46Ui\ѰŃG.<Grymٜ1KGc>pή}a$F֒O4fc#TC}qm9Kw=Ap1}gg³-mO.3}nrSp!|G]=sᛧom<Җ9s+vt".CiG}"HɀG)/ϵq=+}.-R͝q:Su\pVG |eA 0cdpv#RA"SqnACLĖCm<Y.W8f![QưeNg6H^dҨd)\}P?ѿR8ڎ5\15sVk8(+
18e}'}Q+ǚq3t_nlUUv)ǑռaҠ<^Plҽ`kl
v$['N{5mt'sjXY_Che=EQzl4FoG~HNbo 9tŞs<rzc';^pbd]a"^w$$9݆(;4g@tVc^?J1:AyX9ěL-irSbD/Dvl#x7=F0Î]m`*PK9    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/ECNamedCurveTable.class]lUn+b+mKYZZWAeNٝ-QDA$^1&4bĘxm7Ę5cYZ^{9{fg f ;.<dxF ݢKT,QDKT,QKL,1K f _%~K-[]_Xz+XznB&nB&nB&4$X`jKB[m|)epkFC
Qܡ0!lL6+ivdfJa0ԫm~#7==Mmv'mgсvfH'kCGC[[:f*ݤ01vύ/·G%&;3SM(WX;͑-ͨ3rU.5<Pc'vz&QZaF+<XPK20ScIڊXlEASMؙT`p&ojԱi8c5Ḏ	QG+g̨khm^pR+8
^ձ[u	lS(XG:c3𚎳x]9.(TaE	}}4
(ԌэJ6ҾB
[Vwִ
E!=*UJ;HsfǌN*TTC-yLPsG$:0=s쾔'qKsi}!rܮF$Bۇ,7e8X4Uv)O=qS$w{}0R۲-1m;1I|	ƒF5tH)%[%#wQaJrxWL3bv`._!B(9+82Ίs^
k
݋iqY<ꪛV}}1y拂0Mg#l(
LBQ,|ԡsjj%&ʉZ
<<KL!a,lS՗쁜*)=&TqN]O
`JSЎ؊Y
~'YȺHkpm.oM!/a~$_L_L4U_}סcS밐l [}~>V`Oϰg,_	o%Cs[my)cepH5|1s|1w8%|'_%d7~쟒s%oa(_pi徘u9~Mo[fߓHҟH3I!oȻ[뜷/*ە9US9(jA?{)[R(W"ԨbԩR,Wp|{p,ĚOx
63咛TfԐe2]Ǌ#ѡPfD45ejrT+jB/5hzǼ	PTE5{k1P-a:	7v]PK\6E~  U
  PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/x9/X9Curve.classWsg}e:V&vYv\Rlq'N(uF^GZ)ޠ!ЖJs)m9ghPy}]RvAv|~~/y,8#2hx9&8?>&1)g$|EFx<)cT	)-8Rffn]SCrFelEAya5f2pQ,x$2vk1Ӽ<g</2^-	M`hDE#5R-;Es=Rxy6յl:[[SvetjFKnRP7t!]mwOx>Mn
H17'ԩ,Qvo@Xq?zĉzAu5L°y\Z?q|Q3RM㶚:Zp|	h4{du=ahhvܭpF#ĸS o)g?L='S548H|Li#:'X9)P0yVЏO|?Pp?Pp~)?O%,Z+
~W$`?S%Bk)ryQjY^WKso(xl
~ʾ7Nr\ϪF&f23Ϧ
i
ZGlpcJ@#owBVc	- ~xrZYbJʂU8#>4|<㶩GBo+讟a#O3'(_yzZ]+,sUqX5Y{.z]$mǌ%5K4вVlVOLգC`mLE[FLSx|g4hTkv|,&Nz5K&筃j9vlBv%3dZ~`w^u
$VG+}\3SUd32'ܗ0ZգwnV{jAΚeIb~aVhTdp:<rK+A A&p A*,hQ=G4N3_\lͪJq9H\
lad9+y	Y_=1)ukmxtzή4ڲS4c|a{7$G'lBs𠁏
tns]%ă~NFz"UxV!we/C{#hDzu*UCލ-Qh"*%4=x!P<cD~ 6%!7ZDLB"KhI|!HݳVw`7eJ}<HFO_'k9R!ϱt37.`uCAO[(<B*5|"_3`
q{hCv8;Ycv@K$9uv9Fn.6R`i`T9xqv^M::\$o8(1|c8.<8))я8$xRLcJ"!d'ငM?8څ B,pzds3eAvͣ)Bp#-ӥ}֥9\VR|Zf6uh;aim	rɵ{]ٮm\YCK>H~jOJ2T8n%N}=KN%"]!.`Al\ʹ{DKؗY++iP@4BϘ8}Ōeh!r.7yw_iu<J@3ݵ7xtmPK_O  h  PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/x9/X9ECParameters.classWsz\IĎ
I*'-KCڐ	#~-嵼AZ)
Z胶N*>BKk:L)=gWYt:ݽ;sϹ߹;p'
<I.=E
1৬&gYq>,YpG>=|G,x܇'E'}e<ff3<c+-s}7<ϳoo|Ǉ&Li^]ЊЋ pF'*a}QeLs4Ү%b&Tc1	u]i#Jx\ɚI5dȉ]wu(RpsƘ*are]G!Xn/&CuJpfUuXBّv	$4KiiWT=i 0K՞\jH5QԳTu+]/J(OfLϚ
K=hӔTDw74|PRYEYHj(,^:Cy=8 #^!ouW,$;WD/ {$qaA:5[q6rQ%kw8)VMcYXnZ^ڊKR&v%NoifQ4ScjJ^$]x2Bi&tΈGS*#2~jKO'\O
CK&Մl3q5cjiCoM\=9p})u!c?vJ1śleR藱D)KVzq44=12@bɇ;Xt%<1k/2?2fqAsP;~&6.QX#җN锦$'LUg-2.=ys6ګ']K+Á~K6j d҆ɇoh@zT9}q8`gI½<e	0iޗ	_7%c@**-~W2t,ZCB5ȷ1aڼFdْI,,RVR%P,qe6FƂص2"(
(ɜʙ0ƙ+kVܽj'U+eԷ]o]JyףzEx=[>T^PJZ,,sAs2Z2 US.TmD)zlg&9VdvgzI,v䲡Z=Ų\qu\WG)
5G؞Z8MRJr)kI%,-~uH~4YDlf`,O̝U/_v滑}q(|jWufYeUP;EZ
bOn}5}a	lJ_[e\FR5}D :B3i]cU<i8Oc\UBaaL3oxJT+ IlkBoKz_;P4*.즾KP<P}Cs$uun^VY?Y:hԀhD>v6{}݊{0KSq8Q,!^$^%:p}Dj}[!५!1ǠD%LGd2*P3矔&>y!&{.8<erYk'%ixeGô#NW^txr;)ũ?P\jbɩ!\fq3	l l$oIA`
gqFL@yl/Nl[Ep̠RN3
k	`r-4RdhK5:֒ǰY89uwH>(	']=c9&G䶢GJ>ma]uK|m5Mrp8t':#y

VO#T~ +b[=MB$[d
7/<OѭD82,abȾՃ!Trn`~' ,B$VB' CR͡i[sWx@-aۂ懪!ym
f2%|o;/z
Rt HO?SRiX@<#^ӨoG˹n PK
t{t    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$17.classU]oT~NY]V( ے6]cґ>SML7Ԗb?;$\v?xvLH]+=_}@v	sZĻ%\{p S%TpM"X*AA=X.<n92J@(V{q/[c0d;bihs[}Lw("oҩRJqN8Qc'̞4N#FR+J4܉(0,bx+a2PN${ys]os{dpp7XOeOmxaUǁY;=0K]7
U`UIW$ߡBQ WMnhnnږ-\GXn6-n4f[,&XB;hYw-OJn6$Cƹ#Z6R3V^5&4Yi75Gl-blKak^kBEÍ1ۨGB>8F_
6nn'(ek+tB5`Xyjø۸4O+Ҩͭ^w=΢n\EgPv0Rk4GW׏V\3ՓX׽؍^:ใOppT|ҋCwQ/V_[<qr_Y0I=R`xv2ZO-}KJ&s"\'(k}LP3(JHiBK=1? Ob?ٯX`xo'R*k/>Q/gyT_?,}P~e+1Y\ eZ<E= Qi*PKd    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$12.classUoD]i6n
Ѳ/}1۱iJ"uL۪I-JqZ1	G!]3q;??~`a9|^|	wp	'c/pWA"VJPp/PJKFfδsR/a/2L$x%ÕV'=>ęSe7_zi[
8g]DUjvF2ia,ͨKG}[a2P
X<ǎ?߿ctQAw{Nސً޾e\5˵|ф<ǵ
|]7pxEY·7fFT5^2lO¶0+%,t.L.vVZj]=Mc:k4<z
<S"
U2ker49ۖ-ݶ,rq~T-h׸!<u\!wqu|C8aT@w]Q:c;b'ha͜\VFt˔
1uXǲߟ'L0,V[9n՝,%HNXî{v3d[ٳaȭWUuUͳ?7?o2y?2Ueӽ5ɾ
YeߥWloyOGNFN8J8V=SyhQHQp׫=-8}tpG43/-JD'r&[GƩ(kcfQ8k(OfdH$#1?殓A
LM\ft&{Z(OO]4q*мP)rk>X\9k<Y^Y~
}.aJĞ]Lg(ǏMs6`i(;FNX$d8PKms  A  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$14.classUoT6S[PF9m:tlEi7ic@<]ڒxC!^֊I}8혐5;ܛ'nX*.NfDqY*VX!Y*8kU(*@qz"a
h	f~qaZngxg5ٽh{@8QaGouM8ʋWvc%FZFw,rqQhW
@2oǝ^DI<H~tG-,`Px4S;k9	;8m#hޗ> ǡ.oJI3o9'婚jvR]WӉ4eٶoہm풕?;:dbkaCW1mq0cв]54oZ+pJ7$|$Ġa|t30M6lǢXV`8m:N	>	aMjkհf2MV:<w(yUUeX|(()wcq(m$lqA؋C~yW_8nF>76ƛiyl_ J|ٜV{8"^t Χ8
z;ʚϕHII )g}ZХ\4=tM-gONS^֥}
cHTGƍ`f)laV%im>%r-fw8ɾ9ُL
G!SȺ+O m6k'pj)6ךO@}^'L!_pJY.ӗ)wW<e=ҝ W c1PK"D    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X9IntegerConverter.classR]oA=K(ֲ1A*&$X0/.dve O}/jCcv'w{={f~>5\AFd!Ux'1KR:a|kRd6}W2AZ`;#.z8cpȫF?<vyB/z.M
a}\yd	湍I0^ՈUKΛgd:
uee
Q;ITtMEtᶊu%gX}z[ζdHK]w#Xį?tVqy
$95cXü=[-INlRvTTUJ}7q@ˊ>,FU|3m
9Xo|A,N'd$`q >P$	Z@ ~@.#y_1qVwJ7$	e?be(qǜ&sʲKmuThrb	Uy"uIYPKf    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/x9/X962Parameters.classU]WG~&@@0hmU1$њ-(DHh*p5lưٝPO]/9x[ozw i}gޏ}wXӐpU5
_ຆotD1P ƺ[W	춎;pW=
S5pz[w̆}i,TiatɳE"d%wLp'U|ηyN%\2>x؍%PH֙wD/ZXW77lZ+InnZjoW*_;m˱$8j&*!JΞBY8zf	/bn*
L,$uoԑJ1[~Z-Ӓv#?Eqt53Dǥ^r)f-Ocy]ѷzG*bEty'bya\Rs`ۢ)RR?b,J_z6/[Q<
x1\;[cA
1|*<1f!3Lb#H2dگ󭋂?k>{St
i$=˩t, rY
tI]6\	1-w'ܤrHQ@jd{CmÜq~TBM	nPf)])0Eݪר]#}_~޿c&rlx0wx.7jQ'!<%EN*]mimEu9MODu	P:zT9X
=lݙ^<[UC-u`8\|.Z|m+t!bBS-$zՌd=Hc_^0/I. 0@
sFЮĊ@Wd#H+^%Y7p!cUDf;@>%I-q'!͐#ɐ.q/ 0NFp?$!Y2
xBH%
n3h,ǩ_mЉePC!KfcƑT)zGJP %<!opCooPKz@  	  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$22.classUmsD~8M@-yN:IGJA:h$ePҗ)8cpW~ ?
rS:̤nN}v? H.cJx2I%,TF˹Jpze\ȅS"dNkpXmចd[lso;}nI3e z-w{vwvYnjK^
^Ii?21(YSRؤ;?)j:v47nwxSLr*L|qUPƱIGJ
s9KUQLepmd+">`7(9DCYYtn~F<2,ɔK(_̈ȕR,b^ŞHX+cP1/4)|~:ڕBe`b;Lq<9q]:%ӑt
ׂsM\Mwc\ߪs|QAY,|Ix6Rar)OM2\OqCG:ID{7~~d&O"xL*-̏D0$/ʈ0희g6jt9Ƙzvizͫ/U6Z͵ kf=+fN[(j_i}jm~̼'ϒR3
@ F 8n38~jod}2O$md(	_h-ܣ]"I$,K˴Z/6Tɉ\ioK=6R>
GxgH,-|_	8K!a?ĄgǘS\1O ׬gl,WsL_^Y~iQ};ػ8gw(ƇBk6\G
gxPKҷ_  g  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$2.classU[sT84\
ȹTW)m)N'm\3Hr(
^VJ/Cqힽ|gw Pq
Vz
p3?0,.Ʌu4r)X/ko
Av[¬V{,Ԍ!|g'G7$ODsWj8x_8KX\\o5-rxl%@d"I%Mdid/|}o5)a<JhrKku0(7d">A8qK2>`=5,'ᘞxܖqG]|+cKnYm$a&'N9di*Fz_p2޷9pnY=ݞUύ]9{}1t]/vВ&-!,40{i7e2hm;$2l!c!LoxZh4\G\
ϰ>2eUteIX=MQ$lLe;"<Lq.Ҵj:yCYB-Y;]5D苄Zyi\|Ȇ#JTPBM6Oq&fvLjl\(uqNIo"gLZ</AkhNvRyOxeA>NB-bRy@SD/E|U{+|C޾]}noB=JtA	k}c23lG
sO*V䜔pn׷.C&E^X@&6ėy$C%oTP;/z1w_aK\vޅF]
G!~ L|I_%ZПt5oPKB'Di    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$16.classUmoE~6qs6Bĩމ	Ϸ4I
UٺFΝt>W%	->@/ĜR!+=3{' ESu{GPB7.bs.N|)K9
,6Lui$;aӏhw[FvSe2{N(~ۍ@6vICva0Zc?R$J]tȰrf47^/@~2JRz6ߢÝᝯb
 ަ̞$;
25&Nl\P7=g=۶mI6\x
+c
MWߥDiy#eP5]s-Gs2
]o-Ws=v,[F趹::t<\ð-Ma;-6 (w-
a"0\#09}7<e|Ȱi;
3xHg
ѶZf	-aerܵ5õ,zz62DN#jSUNW'ts7ȔA:uWJv~j׸Ok#ָ̭~o#dOԗ'h03\S?~Kucdͯz\g剮{'c /88)W>ٱ{WW|6-yu$	Ѫ=2=)0N%!:3>
cP+*S,pgP]JDV(b-A0ÞWXb&xo'R,Y\8ŭg{T_cK+4]دbAa"{NQ.Sc)rp*S:oPKpad_    PK  D:U            G   META-INF/versions/9/org/bouncycastle/asn1/x9/X9ECParametersHolder.classK@ƿm6Q]-
<KP<EnR[DTR
QLUA36o/ VP4c)8l$R(0-pZUZsfPWVCr-=kKFS`ntUtu>m*P~֫n5͟hwFzݪ[eNm8AෝQ =y2DXgTd]}G^wvwjJȠD3ib)̘E?]dV]\SN 0OV+E#OaFhM@UYi-=AQBaSGG[7\WKG6n)fIbT!aJPh\D-'J?xDf4o!PK`  -  PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/x9/X9ECPoint.classTNQ]i;e:^AS!
O0vLD0b4Q9H}:笽kG
RGuHHa;#<h
ncT)8P愌{23Mpv,{a(븻ڶSCC/x9S^_}jxb`Cyt^^j-e2EKe{M[2/o&6gdZRo3};G;C2m-pW5욞T4Ol-O㉫Qƫ'TUG' 2&zV]+oyցJ

)N5eW>%f<1b*:N*f0˳TԣAE#d̫HcAFF"qLƒe<[RV}0L 5orfWhHbr`|SL./_s\Eii3rM!yW6$zed\~W6(}0$4qп>Pih7(ޤ4:'`T	5ǐxj/!x1O`hD_ F*N?Nft/NC製~AS
RD*
	<VFk$2%Q٣JRHiT~c*w{(A$a?շΎ&*TTw]m%tww\ϕM}Gk-SXZB!>  }pEs7dJ>a
r-f)?PKB  ?  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$20.classUmoG~cH0i)/5;^CZPB8q圥B"GΙPT)W]ifgyn4׫? p%,V7,&fu6Zz


`vqax+0Ū`a@jfk5~aÃ46d8
#kak
d4dvQ0Ұ$Oq44ϲLFo⶟QVT
nܥOQBFYw0N:~>7T>qC!pL@3%a+V/$=\K۶-&xXk*pDych,K`F)ЉCJqb)x$ L	q"+e%cpS)(K
YYpr燡`Td[>IGGvp
]aLX6󣂻UWUxXְL:>"r]>ElNlq쇎gEe i(Ea,M%<1vl晒U4NYUbL
=*4lL	s8Os
iSm&n:#F zG㜪qkhR~^SU/%`%3
Wi|㼺cchorEq^0U(i
o ) ΢~ƧNІϒxH?OʯO34AGtFF1@:W[(*OUCebܬ',t0^XivqV&y-1*'m+77q]oa%|OOA"
hu_Ӫ]<ݗXxh"c޺	]`tEq^:%JX.!7PK]|h  '  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$3.classUrT84\
ȉSo&)Nҙ2cH,VbX))?83ڣݳV <Tp7:*
nj+EԊXU0ّV`Vv&td
eW0@Ƨ2$EiXBBV/ÃHf>Ix"X*䐸ZmIWkÈ 퀥Zkc,a"@8K6Y+er<	^aa7pm:s?CFXǃ^~ʸS"ޕwNYsP[kV	ᮌ{%|/dKy-+͟$LeE"` zx]pޓ%^9aZ!7alm4:n`Yj%GCm7p}۶P-v%dZ0Sh%6J	nzxo:wf|3\C.̶߶0Mc}$,MXZ*a;#ؑ|ῚbIX0FEBy95$\]	ZP볨=Jj(^w3JEW$C_;
%$xK$/adhτƍ^_
>PdlvJXW"=IKfhǕފ{Qvt'ɛ=ԪeiL?OhoRħǸF4=49A#%g F/ԣDgs
 WNTwQ̍-eg-)Ypa]L-.{s0E$s#ZV_`~Z{KWΫhB(ďG*ɦ1t~r;E%TqPK㥐i    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$15.classUmoV~n5l{$iJlǎ~҂TTarKȔڒtoiiӴ}Ր_vlФB3J?eJd\9&j
9wUF2u	mW&ca0ffm
3a,6'{;"팈OE	ӭVotI&q~4Feۢ~!uaҽ(D&1q8_;_	y+}I~D?Jx!ɮSAo1誦j:Xz7-Z<i^fq]C'PЅ%V#	B<kG+Ve=EꏢXPow5vu%\ӺjpmF	Nhݎ:<qK'Xf誺AqtȤR-4
[=x*
ڔVWKzpi&ڔn$]2ԧNA񸦪*CaoxRFLDJU3Hh">bXZ啓gNxǗkyaG7ջ,DvKz)W7cݴ |U_CKE,!	h
{mP<WYM6>>< :ٷ(<D!!f{U1óxV[:EJxE{E0Ͼiuqt.#}K|VE9ͧX|Zk=K8t%W`?cEJcg@{@!Wp
\PK_%4    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$5.classUmoE~.ovCI۴PmJ/SP &!)NRz5r|G *B&j$~ ?
1gS
ts;s<;;O~azv\<3f<X2S2#A`L,Prpr3n45Z3[P'ɰEIhj79 m֜F%lwc+2}PѪZ;ݑשN:yNlUʮX>SN((L
ޢ^$j;͸z1Kh,*p m+T>>(b>4pή}a`$ō8I%;M+h+FNs9Å%lwAs|0ιXld@خǸ|&|!#Ůๅ?}+ds_a1ʉx(P2*
2
kE|u,g.%3A\P3PH[~EEp-Fu;gLQ]B>@:";r$2 A2pc*bw$	YYۭzRә
"Rf<-7*;iB=4WOd#/D͜JgCbYeIf~u0]}MI\יU@.*N*SvlnR?vi=QkGRm~9!M2w3t]D6F顳.

z&^#93~1ރd]{Fk#mc|{!3d/}t<v#;e	|C[LM|O#Y6#^z/ftlW^,?ƫL-G
?-\B;BwyƟPKr    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$18.classUmoD~rۤ@kK.=[{Ih%E*T-ŽؒKQoA*BO_V+yfwvf/36n˘ǵ
ޓqep]
*X!Q(ȸ[4&AqFAZ2faJhKkx3L{e7ىf8nG$34
{n(}|5wQ35}w0whYQqaDݗ@^nlvp/X7LAߌGɎK%'k
OxZ~ lvn(!$|`k>O˸T1U68JaeQV-۲Ly[,;!tss^A]3uaY-ylu!:nu[׶Dnw;o{ZQuc,0k-K/<[oz[O 04^%@w<+\ 		pMV&wA;uWEYV4aIqy7OV뇢1;FG(?N Qt!_=V767?\/2D׽ҏ WO>t||-y$	Kٿr)Hx1G
ol8#~fiGP2D!e\(`z	tVzrcf~xn=4
"i^[x§H5]zeQ=w[O0x9.,u0`ĞAb|DQ.N	]eJTrǿPK4Ȥ\    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$13.classUoD\i]V(l#ۜ6/tlĎ`@ື4ڒ!)eG!ӎ	)[xݽ{߻?w m<a׫Q5|r'PnWVz
Z%F
p
\hnȨaa f	 ;]}g"*?iP4뫻(
 *U?dX:2ʢQ,gX$剮pէna&(E8(]X~Z|6;G$0I[[eǠqm2s|qCn9mpJT&J=+F(yc,o%aBLM׸cf&m϶,tLkm3$/BMl!"MYt}پwu4߰oZM/#'>>
׸hWowVu4ێ8z}70PdxnOY]2]*;Un0lLia:2v(E7kJu%}qQl6OHzVRȨϖ'h83\Uxz;ekkuzy}6:վ(Nxm俻 )N>ƥ5k(.Rbq_|BW%K.0OU֎~	Cx$2
bkT1f{˨cng|J<jXu+lsl\a	VY4|xj"GBu[{	yU?;z%/Fu`#̰CH.UڙG|x(xz;CnA<cPK8    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$10.classU{oV6kh	խ(~$1bztJ$&u/!SjKmg_`VC؇v!B3q${}|׽?`ᡌe,㖌lG4#ʨѐ!Y(˸ehŋ.qfZ2і`I
a~aV=a(ɮ`Xc=Έ$Q*\tުjm'/Q#KMD'ZKGF߄i'rf,,6]@~H"姮mn݉~H8%0le+Qpz+/q˹лAFKwtJ\IR<-j`Q&\ٌc0DV ;]˴}kqꚖuvj2mٞ(6=fڝsV۴L뾂/@A+M
:^Ak̶ܶX{dgX
z
]WԺӘ3O	0튔A;MEE"˪N8u_́6
8Oi6jGIü`3@4O'p4^0\U~&ṺItMF{~
:ȏSx` OpR?dǠIBZ"&)OjO@oA˴[:W? 6BȖQU~ybܨbO1ҳ4TI^9C<|uB..c]YB5ѾO1@֛_eY9{sۯ|%z7PyR*fmHl
X\-~.봖(}6ѝ!;Pq
2 PKM;].    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$4.classUmoE~.ovCI۴PmJĩwI(')UIioo5r|N'?4Q9m@J737/>? )2fY
|Xn0C%ŌG5V8L.[%xy 
(㣌,Prpr3n-70Vkz3[@'ȠEIhZ79 n<Wo'jPN}>jU]\ݓשN:YNlVX*N( L
ڢa@Xڝfv'EL㊁e?<r]-P0ߌt-\0OY+gmwv;#)nıNj-hTllĩn:cٮm\2=D2c6㜻8
r-AB希{c"ꙛN̽PE&s)EXQ`ھ/< 
c㱈)kpq2Q]|YDa")<[JrN`{0Uvhi,?
l)eT&ƽ"460tݬc`q(Vպ<sxtf@\5OKƍNP/܁luvdJ+fcE!)vIdA_V>b/nlUuK:uq36ˀJ
\+
>OVhnR?v+=AkGRmR|<!">\z.#Wiuf#;D'znO%SEg\)c^8	N0W!_:GG*cG<FחOcL>~𐢼G~
n8ƛ8Y)]8[['(U+O6}SGx3D&;C|4+,tG.c(+PK+    PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/x9/X9FieldID.classUSU|-YӐB,P O
%*]6tK/裣ӷ茏b6U|Ӥ49==?4g0G/
񒄗expA,.$^KdqYلW0)	+BLIYɘxI	bM(aI20,JfbZV6GSѕ\nZƖKrQ+iynRaj7a5.vD^n%lҴxp<3g\4L\oUm3G;h2)$kKZp$?pS%Yn%Ͳ%ǝff`Ǉ@K\7x.:P=1h3& 
j	ИNphHI*%"'nEp
`07šC+xglP[nݜ2u`ۯ	Rpo3d9񬖛*e+y-`2
B1F٢-Weέ-L+x7$ %l(<9d~M3$V	@<<1ڕX$Ɩ[ES)Pa}X?DD2mUu66x*fޗF٦Yq?ldI.]0e	ד
yS&O1zq0Ez]FHjn
އ<X@g/ i0<N!9HM_uLe8]Mk&lL$:չ.߃?B
{=UJ+Ă{CG:p8IG5^G;oz">E|a_]m9
ztE &.ZK'C.;etMSf90wq%L
pUMzvR7=6nyB$$[Cp.6PEڙG
.ca3C$,AG1  |"tmsUwn=D%Mt桠H%UIh*bzFU{?FwT꼓A1#/>&F}@v<|NS}Nv\/PKu<g  :	  PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$1.classU[SF9BmK%mdlJm)I؅@fɐI㎑:Lվ 45>tgts\=?@O\ŭ"n+;+C+ZD3XSzLSEXؐTy82X0{
3	vp	{<|zC	w3%J/N"gM!}ν(I7qxƓTBu\FN3%Pƣ݁4]KX;?A٫8q_">3<Mjz]7T|226$ܾhP'ʺ·sSH2
0p|w\eVYN=;Zi5mHȡiv۶eal6ZNô7az0
I[*qMm.X9,l|/4I.M1Za004ax&z=b{	)ʆ	lÀ'ԇI!]iZf('(ݨ?ZĔdcߎ2	Qya]|G|/PB/uhGWNڸ/Q6<rJR}pq{NpϳCk
/&@;n{V<{INϴ3wuN@Cbri@T/r7OqbLC7'5}}Eo3G~(x|k(Zi=y^%$Q$Qp/gYQ
P
e^E́*[KsP{oN1.J
S%JyE%TE={lSVIr9?D]_PKPGh    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$8.classU[oE6qfKR
-%vt7R
^T**-}@5r:Ƣ?BO $g7)1Ҟ9{.߹}= 72.ƌwʣ^F
<R נL)+'%8<aZ?g99aq8lgǒO½qsGzg(40i?H,|"GJ7$gKR44Vtgd@5%9;na?ExV?ôY`qMY&CM9pm[U\ҽ\EɣE!_5P)mqw)Ksǖjf5Clَi7T]ͅe1˓M8Aل-t&'PTWZamʞ(ceږa*dy">6.phȚl5ql0*Y:Jm9дV˷em9NY1lYRl/QW-6)l
]P5N}FK*@:yH0I:g~*Jqz,\۽ڍ*_:8|^kӘls#4v%=|n:ڗe.$C:]oGIGgcq>UsMvR-_H~m9MN:W{a	rha
Ii M^~6_).Yvuޤynܷp|%ǢB(+3cvQc~1K4X_9Edqao1xL?E<*Kc'mzJ4_c=+ۍʙ1wcnc^]?3B72;$wB=c!'5%PK  ,  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$19.classTmoE~܋8nJ@hq꽽wRZviP">su[:_+DT97BJ#Vٙg^= \<01[5|d&>jb	Xa5K
qvya,Kbc5i
z=
S*bi
Ã,:gginKam
;g탴x:m)RJ +|a,t4?'o	|4<;.?	=Kcѝң|N8
;Y|o
31)ײ]G2i	B(OV(|.˳<fqȏ0,ϏeI.M5~^KP:Ǵ5d解QF'R̎]GNs!
G&	LŌw9=;NG"S1g㓓R1(RvţPϘ·#@"p.]qqaAbܳXG*A\OĒ	E9s;A(lXbϷ$H!4,OX::TIjw(KVacB3,Кz/th1Jjkv?tۏmsk\Y7˩kk0a/ߪ|}k [ױ[eu}qPfi
8+7(N>ſzk֧K׆N1$'qh%+iT_!_)hAU:-Ү~aگt`VKnX8Xy`j{Tw^x:5*FЬy1LAB7Qէ1`Ao>e:W>>85"Qni۫/PYoΜK>]X}skhn
U5."7hPXV'EJx
PK#&    PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/x9/X9ObjectIdentifiers.classy`TǿGxp*Jjq=Z0XRHM`q/ews""
*^ "*K,V)j/[zۖv3d3~;{p Rm-c	`96g㋌l#xmD~W_c
*Ìo0^c|o1dߵ=6~@G6ox|Əɟ)3?'߳6k76~K?x?0㯌1㟌mlI!Qlad-JI1Qp#Q
h[TU1qb| PLfmmT:L{l.fCKܥh2_ff8HD7;G`B8ùh&mTߥEl<+-tqh9ޮG
Gx.<o[B;Cxx~W4u+'x|''yNx#D<-wЙKnN/{ɐ;r6<
o6ЭrQ6oR+lF
w
jx
+lV߂70_?9o`RםaCzO)lx}ox
e J䣗G5Gko[6vU5ǓhS0m"se%5g	#Q8cyWh'\|r员>ΎP4#O/bym9k.(|"Ӳ[Hla2:7V>7G.Gr]
Y;g[(ӑN%+,!W,xgd<w@sRdtDK0>Sptn	'~&.t_y{.Wr(NqC\@q`).r;0*{FR -gdY/rlu2݌Fqp-[+1gTnPpJI9XC&W{6uRn&^mr
jSܦMαQGα뻝qN]0/F7!/m*KnP^t+G AVzrSpX0ƣ;3v2jzOާ]$c7)VNWqHcZ&۫Uei^S62$	&1YC?'U&K#0aa4L
f9N.n^k
W^gxJWhpZÛl
fpwix݆
1>-[
7|Am>lᣆn7aN'w>i)EQg9ɧbEֱ+QyW{%{QGQ:\iYe#:ԑJ˩VpJ+4#TW0&1w,)x;k'Ru)T=LNcRiJOt3d#T]{U0zҏRRz6cJRQ:z󔺨JknWW*+=:CLJ/~\,lqzo
y4Cۼ9y	UosUoR'ԣ}O*_|<,Y.4U|yW.RWPuqkf͋z+T櫨z͟5_MknGs9f2sPt=
xFFFpP)
9P,YX\etɯ[~q|P+[w`^|"Be8|E8V+\%&j1
?Bb"b"DKE	эX؈؂؎i/`8
GN}lbUmVvXӚ]Yxj~
BxVZkpڄW8lk3xڇ#!;Q+ʳ`PKjg6    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/DLSequenceParser.classS]oA=
Xߕj튊hLB҄&̰Le&J&2Y,
afޜs3w~@UhXcTd.
R
T(VCVAN Ϡp+<lZF9ɻ-u
A{3s˱I:CɊ刃^!7aSF%`8ϰ-9۔,>[%Ֆ+.o=mֱJÅ3rXs{)ʖү+5'S=\C
4$Tai
0P
WpᒄkU2ANسm6!E4!5IvmMYye3M_
Tĥ`g+3Z*s8aHIɛ04 nH~:j9-¤fsul#@SC+$'eV
)B:CU30=O8О@8F'4Ch[7F
kԢL&lW,MSs׈:Z&;G>gPz2OH)KJynPK9=    PK
    D:U            3   META-INF/versions/9/org/bouncycastle/asn1/cryptlib/PK  D:U            R   META-INF/versions/9/org/bouncycastle/asn1/cryptlib/CryptlibObjectIdentifiers.classRmKA~&owMh}iP*Q!EݺM/\&`*=ߠX;/<;7ԱJ:,&PQQΜySbAâ%.Y{.cv,7P8ȗlk}`])DwOۄ0!!/#B;ɖȃ+o37kwl7ιc`
EBy
nn-d	dxl
L"oͧܷ'K.xZtSl:۪;7t<R@%0J9.:Rc9^5N.A? ̰܂1IժB⸘DjbZQg1Fvl쏑{̖ojL,2$PKþ    PK
    D:U            /   META-INF/versions/9/org/bouncycastle/asn1/x509/PK  D:U            H   META-INF/versions/9/org/bouncycastle/asn1/x509/AlgorithmIdentifier.classVmSU~.	lX"RHKARJQhmЦ
/lxIaK7Kt3+X`ʌ/_&[B޻sι9_x*<x_D亊5
97iL[r%b);r 
<lY3$-;YJfz3͋NNDxRCsOEId_2np]dZ;e_	"d07ӂa9XȳY8>	|6r},{7ƭ9'
S̖^Q0LO丙֔3m7Lùc=bX<\K̦%A2R$Fa0xRJNV*߱Ҽm
q
SVNiC*pPRj
`JWhcgZ5tW4\.⒆H0R"YRSҢ6aYNѱyaF8kVojHbFڝ0yKw:2lNiX'=YSŖh*iҾN(E3#TOPּh|#ʓcgEo<_qLs1INw-9TС(Rm٨\?*]ʦV	5FJv}13UBx=<qGVNdawanXM[%\6PLZz@m(ax(HoڵQ9Cɉb_=.I͂_c&<K*^{uUzwЋ~_wbC3uwpf=eЬ_EM:il+*W\<]|;<[+YwA*,i섂.h
4J3Oֺib]wQ4P~ޏy/@%yDhAa2v(ԁ]]:~(
-{PK ;~Þm9*~ a/ӟ()u^5r	1$JܡpbPAG-u{)>W:7@9*_;
]1]qڃqmɰR!4CRxoxqi0Ar7>=$d񙔗>XT|PCPKéc  
  PK  D:U            I   META-INF/versions/9/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.classWkWWݗAE>
%j3KCUĶ^Kę	[^j\
Qmϝ1@BXܙ{}=g3?zSJ1Syq9 'U%U(B+rH頴R 6#Wb*0.&T\
iL*xWnܔ-UtaJ 7r,fYp5D;©bFβu~>3(sbqp
@zDBwӮ9B愛2p7T6s9y 2nN^tg5Q152g-r8heKnb~Fؓ|Ơdh1XqЖvyfnJMtSw/1ܮɬA<|AM.dD-Q0pjˮhܧâGw("]ABѨe^mR}
vD92Z2	[>/~<S_*Zkiihgİ.UMRKb[Tr:PF9ViyOAa?)0_i;e"Ǎ;WSҡ,%,u\F{:M6ChG~_
4+0e^5 goB7iۖ-?԰{=5RҚJ]?;MV,5^8Bk-u@HP`?ύHxxz<G<픨݌aOωAˤ|Nv:T"m\Z4w
EW7bIgsYIP
L&
!Iп0^Em'6lZd2ku-mֶEW6dlS<KMS2*X^eF79Q/a.
WeԥS)A;
P߉r3k7Jpr OW+Aniq_̦bc8X=菺wG-hVQ4,Ⱦ4,ф@c]AҼd>Ar`w9K?оTd.%ϝ؍ G0
lO06Ak'#8J֒<$**ch~FEA}Z4!Ƴ9◌$I1R*ck-K4^&+8DK}M,>V6%_`_i}4rg`XAy(Ovϧƫ.Ei| ~sY7=hPP(ss?;<@WY`'wd'p8T9vs=\7	,qG}~CiOU
.cHT9F}{W5]kxK=&yB,g
ŧtU1>'l4PK["W  >
  PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/DLBitString.classmSFgP6ن8Mƴ)&qb2}A^	*R>wvC^Cu{Qg{V~ ng(Y*62Xↅ
/o-m߱æf&~06W4qTd¶cPr@Aqܰ)ԡ,{`^Za
Z?Zàgnj&%-ZP~Kɶ@)G+mW/4VϪg};B
knl)Nx.+~jtHxϏTOk/w[rsUcsܳ1Y636~Ħ*LlqE`AYlkG&m}δ`&p"0<I	;llv.
.q]QӼ^vP7(<Ԯ&ub}HLn +֣fqC/#+
%V]@GMj.+98cR3F=C㸁p>)otlޖFY,_BMC
YKO
 i
_"@t!`V_@!4^̿B!l,jl[b51FCeL24<yb$E|sTXCϬ{D<g0d
*c!cyc\HE{+IYſe6%Y+qb,˘IK$DT1.&%m7 q'0)Vc~-ɍc"@NPK/a-    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/BERTaggedObjectParser.class]Sg*&lMcI4MTĄ_HL.+n,îj;jz;Sq4PP@}8w</Ͽ
|}`<	2XA#~C
O|&f͊UX;>ėQ<ad|-ㅄ
G+$mKRz}Œ omT$iRoZ%Nшkvi&>Y8CY)z,	j*uְs	ބ7$͒iTffm(R6*5;acg4q4eRzMMaS#/4;D׆GzC!ɒn9KF1K/Fb蚠37miy#_KvU1˰ƳTlȲSguA 墩&3YnvdԼ[ڀvNn7X-=g݊n,ɧ'n4V0\0qzVpKC껀lvdp|*DlYHbu%|Ȭ%T"z
>/|oh`Q8_j?S6tsk3Z0թ&qȤ[-a7xjX=LTh8+ȃ/8ET׷,8taItP*q\=ۥ#A)ҁSiq;n#/6p](H]~Ss]>t
 $}.t>t+ F:
4Џy}HOKc0v):'>DWl?hN1t
 }vFhV&hh	19Nꩮ]^'}/2u?B4E_Aq\=rRr1auLP`cŌ=vݷ@".DcUcȹ@¡*|5"w n҃D>:TvuB\TEAlEȍXoH(WrDxI{U]@SuALb]XS[>*I\G>8F rF+*LخW4ҒaV,(gX?yhc妪p2/)mA@3?g&IYx|!$<-PK.u  %
  PK
    D:U            -   META-INF/versions/9/org/bouncycastle/asn1/gm/PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/gm/GMNamedCurves$2.classUmoG~qb\-vPݻ$	mAP9+\i/$*R@T9*~छݙyfvf4	V	\>ŵ"Q-nfhdGk%qfD	5ipVvA<H0h?b`/J{C,(L#oWջMޯpA>mFZ_}&AFɘa4p/wR&$E KGSÐ"qo8N>6XniW	/]	p=hKұrk"0࢓)W
'EhG,WJ\RHiAGt\Lk[J+p)T[sT\{ྭj_Bx
8m'۱vu]J~5!c;q4RsҀDa[-m!F-׎-Rkz.-T%[_zR+dK
ŅlZ̶oPnXu> #Kdn?h&ڌ>F(a14aEqsΰRfqy?M6/D*A;N~P/&g(It	Cvg!n)2"KGP;{4-(=KfNța4i7\Yh'a/ϳ4U!i_BOScZ+G`ӆS<.r=1<ѝ<|(>ZmUۿWMآ	.=4]u(\eݕgXic5pGxtyj5rK-#薟К'7T7Gah?PKfހ  '  PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/gm/GMNamedCurves.classV[Sg~C6YCAQ%Z)j5%m@[S|d7ࡵ`v2eӻ7u:}5@`N>{?~p|ȗK1-2f$4
_J"nHnߓ"#a74~qYrSB't.2'█"L	]:EK.KL1#/EqW2f%m3[@.PҦS2fj䙢F\3\M^P-fcf>ˬmC\=dfRYܚSUyeLo:j&H:yNh㺡;'G4$,К
6Q*duk
hLcVϕ,PmV4up%ZmnAun*LSFIN5W2X{Lm)3@])"@# 
2%\pX΍tSRX|k8vzr"~>34'eꄷDDrIܝ8hyLjբ_S>ޣ2Mr}]3~6ĳCT)DtG6@n*FRzjVW1{{Go5Jfn|flwppp_}q-Oi,Y;8'ɺ`,2M2^1x]FCE| Cx
Ԉ\SpXg2>2K8,C9H⌌Q
phSP{>UCwH
ʚ0e_.0E|XsԆKk\P]˘bي;v,W&EWD[Ŀ࣑Qn<^+3=^"ߐCh3;{'NcJYY9vl/}՟Ѿ:KA1Zw֓vY/g` .=*JC0ڷ{>h}nݴ\?
A܏;F/z
s3%AXDx	'eWjrvMD˧=Er44}ſ6/Ci\M*Wjm_%Ig2)4/ez1?+>
[%"8>)DRbHI/
:ɨ"%Eҏ4/BD+|Z'8@XA[ĖJp
Zo>>m(QX?"zR|BkWg[Ώ$JH-} "vT
x`Vx	$:QբuA%lArd.;[}@j]3S\F7v=E2viSS[ھwг8t\ԽDQFQȬ7Zz"3v3ڮ#?.oPKq  -  PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/gm/GMObjectIdentifiers.classy|Ty	MI !Ⱦ7,$,!ȖAg<Yҙ	!vjk-;;;Eqinkw[{Μ$>O]λﾹo&o:r |1Rl@F|VM
ߢm!~WW
~H|W?VOs TKGw+
'I(
F_U

btL08R8Jhb1\y|c')@<GD$SN%NS88CL,s*,!8Oa\aTh
+>Uj5Zu
B6(l$.Uxq
WW)l"6+\MlQتp-q]&ezH{t"Bis,QuG^۟Hr"j7k;2DM!'^T;v@dMӪ`KcLw66Ѫ?h
-6MU:Wh88LK)W_,keid_;:ےy=q(ۻa1ZQZ"VjYPGe9NᝳJ
u͘:wX$DNG׫<hH˱?h@O(ٞxƞ,ٲ*[s>#	UEwtX,0@ؿű\,	^	
ꍨmCvO6trmqzqGhPxUgor<Aۛ;66wyCZKV衭Y0uNPP4\xXPrsCQ;p0}bqY0~;~җ1ˬ2WUfVe
"\0BQxXqCz`ܠ\=7<p<p/U
-nvAW
mnvIjAW
ڝnrvt{P{Pn}2 5HzPLCfUqzI^~0Gݠ1h^q=TuOT>)+<%`ށ>Q}D?-Q}I-C܍aY3tQ7<3*N=pzʋzqQD_Ջ?!JJ-WEuDuIK?Ta~oQ,/T~r7%hG@;7GUmQVD]xZu7o$YxpVm]ۅw%[x^n}{>$|XQc½ǅO	>%/>-|FxPxH9c/
_,<!|E5LE_74vtoܘgy#B$UY٬#I=HG搎a%c':t<ksH'N":t*43Hg":u.i	빤HXI+XMRKZ#b&a%ZGZϺt!"Ŭ
KXIGu9
֕X`e^3j5kIױg=tn$I?zŬI6iաmb d
nfBfFYc}wQ'Y	$i7Vm~Ӥa,e#
+Y??_2 <BȆ0TrFȅ AR_UW_K+}4'c4	ކ.L`*| L,ca&NYXsp1c(E?0a`.=}PO@
ǓPC=~Xh"c"4s`aA +`+a&#	e-NXcVc/5:8xN9|PK    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/gm/GMNamedCurves$1.classUnEqbw
P[JMN}דPe"'E*h65rvz/OJ< 8T !gfΜ|_~`㞄+X⺄Q7hT񱄛UASBb-*bUKP`̔pVva2w#z$ޟ$,؟dǴj(^
ԃtG|GQLjOv.}eQ٘ase4Nt{~C29aB>mN#4Lt<L{q,=3
9r'F'Cpae6,+LvhK^Gp#<,
\ @8fmz4ntì`[nW	Í!e(L$q揢8ݕ)fouCׅ;mfY5ϹQ.pu7Mwk:]CXq]04n}ZiF L#
Bj2<Po-*B`kˠ7[Cgh/^::3&G~<7=J:0;3~ǃ8<9C8MOg5^?2>)nЋvfۨ:YU/E'w"t䳠)*="iSRno|uz3%4{FF	4axT2>SZKZ^m~mvY:Ee{7[z\>SH?CdFuzLu
bzϱתɧxc.>n[q˛'xԠ8KKGUe
lNuKTB^ PKvOo    PK
    D:U            -   META-INF/versions/9/org/bouncycastle/asn1/bc/PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/bc/BCObjectIdentifiers.class	|T}d$Md_̚	{(jXdBLf6E[[,bU[Zq-QE
7T=IfZιsߛyo^rgLby	"6KR!XW@tUЫjjz-%:Wb
z
tC -;?77;ğ[?q۠uۡw8ĝп9z]q7^>?
	 ǁ''Oy_f%`+2

 v:k]:t7&vw:{CC|=B?sϡ!0+k-=p	8,a   V؁dY@6 ]@w z>)@_p* !P`0F1@!P.
x /@	 J8`<0!ØaLdTl/,njm/-HQ(**U(n4Dk8Ap:"([`.ԥ3r)'M}.wj[&u6ׇ>Ay92Y;C08uPO46e+gc
.y"PPV.N+ܫ3.T͘.nejc'	@%uI,BϘ&1-d'Hr|J3T"$x?yI-&னRjo{a:~T*kj9	Z"5q^J['Uy)˪Yn|b_<{ZUemq+͓WT/
ynsh,Ωgglk_wA}$:-ٺP<T'
7F
M>#jIAk3$xW|+>ds%yO'gX3>v1D 힖˓^l\xgDchk,3Y'VrD|E
Y:9peύE#58~opCr%ołKBV4R-V.Ģ\mo ryZ(BMM H%KK.WiZNq]9KemI^2+-)I5%WuLO#.kQ
Ŵ86,uu.@%O99zg4{=v+[ݖ\xpm0 |퇝 +; +d;o9.|ť	IIg[\βU"H>q(U%~ɝntWKGs6QR.,>OgPwu_IgPl\ŮȍH5^M`di}P۩]~i/[1IU*aTc|X>-Y+ߩʛjpUF#3[䥝rU5ÑӣzM)ON.
-`#Wsa
=BWWv|^1(sҋEp9)F^-Nڊ]rlNzIzP=dNDkT'+nԽ	oUc9Dբ2~'}L>V&OpS3s %p88||| ~~?Klr
),X +`@ 2, p]@
UVy{S#( z =^@o2흒:E_BϔoN_RX"9BS?r)`.~U'_WC0`80	FcB(\ ^  cqx`0Lʀ)@90L*3@%p0
T9\`0X \ \\P
 : 
, 4M@3?E'x<ߊbƅEzU>F`xejUK<ڸpx/OT_o"z(]o<ne}mYwd}5]f}M={Yb6;ﲾ>~X?dcOX~Y`aV%A_蛔HJmJ]J}JCJt1֟٬TV+Κ`dbfuvaʚڍ555;kk֞X{a=/k?SY`=u  CXc:u$(ѬcXYXY]nVg-a
e:uDIYXNez:Y+XdZzLYgz.kl9sYg]z^zkbk5k5Z˺5ʺ5̺X|;q !Z277sF$&Yl2L`T66[Y'le($lIY&P'l/e{Q
/.N~u&L4X]0vQCLµCauv;Bّ
;FB"ea]ʺ1Bw^X=zD	#Jaz8xDF$m4$_44ʱ%=fISyK`N[:VN[=Sʞ`I3,XlXX\ϯʤ*>lI΁`uzX<X}·6ŰB=8lRSXZPHuF*Hz]TAoRYǕO(ߢ|K_2|wY}i.1^
}
ܤ˹`I+^k#VWWKV_k`^//`%%יtV^_V^fnf~~V7#>`YO;3iOVO3v+vWX=vX=еwt'VVtv/>>X}aa@3Mzm0i[Vm}}}}E3}c&=6㰺ٓ?auI}6=
==Z>gs\<}Vk~(E+qӄ(ԃzR?(CC)@#
i&iDM2fjEk|ZOSg#^A/
E:._ŶE%n|[&_ed|qB_)*kjqw5~Vl5b ^KtAtG~W״ALEmF=dQ᧍F=eT&c=mT3F=k,Uq=dL[;ezx/vc;0N#z8L?.Knɣ7,Mpc^DzRA-sKXbe\M_Xҗ[n:lyX6QaXv	]a|&,GDU\SY{|@:FX\Dokcm+@j1ȺVCP1m,
;Eu(~"\֯zLxlk.|o)|bmh!&ɶ(RQn[%ֈ
MbQi_e(fڞUmbmkP̳mG]gA{_v'tWZEb=*ȾRۯ1~h'쏈3վU,KKeR~K!PK+  #  PK
    D:U            0   META-INF/versions/9/org/bouncycastle/asn1/anssi/PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/anssi/ANSSINamedCurves.classVkSW~
r)7
V
	jxA"hѨhbKw7(bkoC2eoot5f2ù}=_;I\CJ32"-ᆌȨ-1ܖqʐ1Hd㾌^<O@x(U2"9	\¢-Id -t%<Q@Qh	+JB׹/-3#acFIϮeU.j#'bwMӪMk(9`,,'rҕ\VWX
iZՅْ*huҥἦkEIMRq&C{|WM+-,Rgcs
)z>MMϏ
r-M =`EE(N'pyΑ6sr|Y.gR#3<k'r\E𪌭Nck)B{Ĥ4gl5躺WtTOO!u&qa6 ;;(oH\?D[eFt΍ƫpQ 7%#a!
f)ITjkNbrڌlߌM|u9c,D/躜d'uR)aXF|S
b8{K0XFI*Kx"(A(*8/||g
"+eL(
.a\7Vs|pXS{H!Q=Nei13GCG@G3C ek<=#(i\ғaZ1*9.;>'v|~B4=iy8(3Row{C8|{N&Hב[R.Ffdmۣ
ю}}־,HN<f<Hit>AyЛ#&
'hK3>u҂
簃>OygMEhx
:BhzQmq(;q0y=]M䅏zr%N7!E&Q+U'ZA|%Rhe%Zw;5 F|85BKF~Dn8#qf	>&1
Ï6Oh+к	zt Z::hyB[z۳풃rqd&yt}]$z'<cBkGg_gtRI+<'ILy
3@"u'
E;HtEkD#D
YʿJzdpj=s+D/^A)ʫv^o%ea*V&u!a4n%ל&PK4  
  PK  D:U            H   META-INF/versions/9/org/bouncycastle/asn1/anssi/ANSSINamedCurves$1.classUmoD~6Ӗk
MyKۃ^Kjw!(I*Z$$^]|v|&?_[*\jigvgg pyW&>n5n&>:h[m6Zz0Mt`Vj"::\;lPn2Lw3 e=ݣ4:dIV(s/)a&c=R6.?3*ɓôLa,ˤȸSHR {Apwookv㄂Yo8*Y'-4*]U=_ƎM7i[Nd.HEX(,Ǌ}W°4?ARZбM?,È0
=m4T0DJ;!
yQYj(ȟp=m#6#\8@8ױawyV?0LUDʲ4ä(ҢJpW5,0bؑY-,
ddq6f,BgpqJ6<Ga2%T%D,%sql54nOXXb
"̮mdE1]umΰ:/FÃ4g辎*KmTٮ\&Y_+sgEVV4f,9C81,t|y%w6~S҇USz^Cu<5fpԳ`4J|\:iѣWHI$h>ݸꛦAm	o4axXZ~G,q5uVNknkzyS4tWj3\8EpVANA1uܗD
s;ݖvvj	.Ѹr_B>tI6Ex +c):LxoPKA    PK  D:U            L   META-INF/versions/9/org/bouncycastle/asn1/anssi/ANSSIObjectIdentifiers.classPJA=Wmw5ML@#vݍE	$hCqvddU賢裢Y0g9s>>_h@/bu:	qkp>G+<,ICnDhe*{jBoU4XH>Y-}1?TE&7/1lg@hڦc:nT\vG528*CAp/d2I]
B&wh^9ﵧ)S5e58{xs3PDNG7}=3
OZYBl9}PKX&    PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectIdentifier$1.classRJ1=u[`/*W(U`mZSYɦ/*>~8HbBa2sd>>b &mLaf,ZcړJ}TjG>B1s͐<
a$t;u/y'ONsKOs-;{ӥ@zUރC*\yFR
>aJ`WĩH۳z[xȦz'NO!a
`K°ݟx3:.g_)C_>ܑy6S20$ә!ӂ_/`IjhТa5$hV6D&CӴl~oPr>{@Ǟa91LR#FPKXÁ    PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/DERIA5String.classUmSU~nHaٖBEI@"*JjM
A+D,k%ln'⟰8С3~q<wJ<<<ܗ,`W^V0 "
fC!̫CdCgXַTFB6wsy4C_]mrHq`K]=HD[95<4(QK˛BN]L0N<g-{2J\	_5*+.7
.ޓ-X䅆PCe[#4,0vwB0Oy5\XR`s9db&J]D4/%4yEXMALċF)kenFRH3GTkTVxA,adאW
h"ª5
xaWl~SC[5Uu@
-HS)OqHmB*$:^D7Lנҹm:t[tojiǦ3Oh$pQ=[0Q%7o@@
Q֌2H;N<OG.Zީf$
mh><ys}Fbq|O28
mzfi
~߰%^;ڍuXj"mJ9KpzS/avAOWLC_؟Pc{Fc_mzzNp:AJg{
8AC;ƥS\c~EQ0 Iû	4t$0f"xYZ
G7(%!Sk-C_3z1L&@cedX0D4г@1{^0M|訕&(,r-_$JxAlzS'J+1v60J0P ^V;l4L+sŽPK(Rd    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1BMPString.classVwWL23&`KIH%ЦHI&Te̤TRmZjb[<~	p='s<r7;$ab~09ޛ>ޟ>zfbJQ* WG8
_U|Ma5>.ik00Z`"#d5*9pDĘ'D&/_EAJ͈'u4☊qOI0:rf>o%}=]/<x9;wٰ߱Z^Ym"y߳C*3}I[$Gd~|wڨWpv=A3s,ns,ỊdBmGڎop%q\;;
C$4{wo#ta󉂙cǳGm1ok#ShPm9i~vWHP0CPd,"EuY[
b?9ʸq_ӝ֘oӖo07iN֔$$@5S1z[.[0zy	y^T8!n	IOxߔx:Spߴ+2fn)Z?2Њ-3mnϺCNjx)<g`#6oy/h얰bԞB.ڎoy3|Yx:Ӧ~|Њ;Dx3NaS$=(XRR?4lQ}mx𚄆޹2o38kusߔ_f	
yS<nsem^nskzS?칣㾵}"x?e SyȪQsDTlP{Lg%[3WFKq	."D$A=H]<jq765BK*qC.ݎM^۹ čhgĲ8,1:^,{;]bI!V{ضpUR
fVN%Fڻ7\1]ܟE輄Y9Xae}S-^,ݮ;RpfpQ=l:C9+XD&oCs=/f0s^nM۬:N^L|EEEe_
܏m('& =Hg%?.egQqG(Н*NI,V"B=	?5Ё˨!	Xte	;gfdv
}Lc0MD[hJ\ߧBvp7nY_K#
W<K^F4	M2Hr/K>Dmd<ʷq/jp q0p
-
TH*ʧaoζ^>qNȴ{EkJ\ޢĔsX]+ǔٍQX0oƭϼ"]d|-Xvxv1Gf3tfPGVH7
{X,}J~H&?ಹ8G<*ӣ
cgGjqoȪȜ1eY=ζujE{!UȾRIҬD*Bw~`nafWjD0዇{~9Um*db҅/K!zy.+/ŝ!Nv	וԗx+:8^t+X=U]1%;EkZ@-I)Z@>E++)EcjT{t_,T)1-DbXE(bFbz(1t_jn'ϣy'~*MiN歿7~k؞gP9xKpaVdE2W<yxY\"+#ǳO&+xqU"q,[_{c85͎๛xn6bQ20´]1<E ]J!kMFCTh1·WP|+?ǛE?P>vPK B  V  PK  D:U            9   META-INF/versions/9/org/bouncycastle/asn1/ASN1Set$3.classTkO`~mllAnF̸$3&(v?a&~7y\B>9yO*)1#B+W)$1F*4UT,X"(m'P:6v,L^Ko`~`𝲾Y-E,
fV_b[nSr5
-iOͽơ09\q>l1ݦ<0FHM,Upj#+%|.p31zxxjIҙ^nKƱv}imfPJy\ AVa0UwBB#K:E~/2ժo6|_yX
L$ƾB	-WDЏ(EykG	Kތb׷=e)K;2)<jS6v+M9E	WyLhCȖk{y#6>wgĩ:A\{ɆW7R+DK?8m|<C[2@j[T "K똢
t[`z7BJJ	­0-m~0KMs\sIH#mxrϸ@!IL烅w/PKMu    PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1EncodableVector.classVkoE=okgӄIAА68pڒh6{]$$ 	!$j-TE>ʙMܙs=w]u 5 чA(pi9#rxVEVD:I
SsאS1E-8YKxYEs;3Dzr&'pl)-;;7ʮee{x(Ny`[@xdv\*9LeffDF=eװSU1}L\6m,St
坕)t8#?R/6xJ@I9Z:Eۜ,ϛIXFs_0Vj>PŚBy iYB6̻N;dh~ƐeC9T< ߂2MI)_7=5]ʝHF,6luX2'%Ӱ,'oȴ-dlVfkGVVsN7ǋ2=}Pl6H!&yƲJ*2ż%2 
+e:]ݨy3j[`J9k}ױQ@dŲ횥MDzj4v=EB`׀.f膥^[a}[<V}T2V3v8Uq^9F
Mqts얌	]t
?
:(2`AŢ"ΫR%CgyR ۮjXEthTPee)Ewޱxsw2,-wʭ]sY `ȰdA	7l䵬	]dm.ZohWMݱ*
o؊gɬ5nȫ¸TYa
gl,,\6f5j1eWnӉv@BQr|07*nP+zd-i7C{܂[dy3ˏs;+p}\xgp
-ȼ
@;x>2_/%2պo|
~B 	A9]H~w/.h襋>26
-*xqm)GayާU˒>վD`(Ǡ27rmo~-YC#w$r6@uP]r!ðG
J	i*5v5uz]Qz{F(ШkOw7"2m@$hǩv"a
O.ick(=+RPkHK@<Ĵw!UKBԵC^5_K;T#1 C' KͧЉi^H5G,8 ^sx?y,-	hq*j'(nOXҺ/z76ְ>tmȿz6VX_vxyF8jPW7
-x$3!)j&Y.Yܗ,7ГhS[d6n
yF4b].q(^N|C::h?gHPW=3] IzZ}
EpD<*u^,
'x!
߲/Vw$u%XuDuyy=(GN5#W=*)6֛a h>Q'=Pzp*gPKi    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/ASN1Enumerated$1.classRJ@=cD[.\U
Uv5M:Ld2+ݨ(&/0˝s9suƐa`q
dW>W-wQT;aS0dRv7|d/tTk_ziH#o6¶n=_<REw||ajFK*;jO]{2O˪͍hŖ\Yy~0aX&Laf;~Q.RB'!aܩ":5[BGπZ$
tSOw!W>+/ ~hQB`j)zk0vO%'F{"
}t!.' }	A6!$xPKy{    PK
    D:U            .   META-INF/versions/9/org/bouncycastle/asn1/gnu/PK  D:U            H   META-INF/versions/9/org/bouncycastle/asn1/gnu/GNUObjectIdentifiers.classmSU[
`Z*
UkRI7J	)4Z,ai&C}~֗љv 9wF	IFaܻww_w~Ǘ<ptb*<|^*sIR3mQXfV*B1
|fEʬ)l0_TTx+W^cMo+d.=(|/|'|j-dl/goVZrV3\W:Sp:WKP^jUݲgk,|Rv[7]pN,˾[]Y3й@-xC+#suzֶdFN,M&ZR-H8R7d:N$>R7l[z8mylkVaS*vo8SH<n&h!q2ttT@ݳdjky_%jʕkL|3HE/[%jmX{>f(	f<A >í N 0	$(5rxɰ Nqo	n֓Fh3=hNST8=Lx,)6&02fn@S820*!Fs82peaeB
R,Ӭ1PYxs3(s|E5>Entc.Y^1|/jcLپzQ>yϷàS;5Ht$Njji<9ԜLiќҜLk՜<y^sVfF39yQH_=#G\n<v?6vwĕxx}A]Ż/#WWO_|~H?$aď?.>$~T|X	{xH<,~\|HOn#%.ӪDЏ؏8@;U0!"A;&[?=
{T_"a
U	P((9;PK-  6	  PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1VisibleString$1.classRKK1huu]߶*zl]z"PhSf%
+xoW+_&3!o dc 6&1ecf,dwf!+;\5݃GWʟ3K0^JTۭuaԺ
/͉-i+rn#l+	#UpǾfTM/W~</d,Oe$V*\f²0`ew`]-08%NZg[!°$/齾܈_o.{e!a)qAIavXgGڒhacBk|}h	}/Hb}= pSy|PKk/7y    PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/ASN1External.classX	xe~'dIIh4%ݴr$`4$=
iNi6lh**QRĂih
"*-7xLf]qg;gsq o?UP 9Z[@5oSvzRF o|xz[t67>Ƈ=(xL#wNGŲWܥn>{ý*xzнOwJCsIۅs+#<C%&c܃#C	IsPqLŧ<hƧU<@kDXkXǍWO6@c_4	q+l4]+/F,{vM
̘6F̈

m#q{ȈXfi(،4eH!7ᄱƈc)XwC6-:@n7UECfd@N?(D,[4l_6}To둁FۍL89
Q¼3bt%XNa:y/}`9d:ٌ
26'MU<D<#Y*Bm	oVp}}	3UL񚂟2)P:-LNOێ1b4ߦaeD!a$n+fLU`EHL&M/:&܃z|\0ضUbe-ڶ'0eux+gݭIW%EjXя4FuTm_*+FWZQU/PR.*Su̫,Õ}V,kcdJwdPڳnVazXXkX<}X)'o<H28.WE*V<_d7z@{8lձ0c9EsxJAQK4j*Na#UE
_U<+xʍj.^&4gZЪ`IT?5DѰhB3¶;ZѨ7]Q%ټQ׌Lv&PԈG(cb}78Ux'5CmخB\[Ѱh
;"okxѰo"ǤXwI:p%'}@a#xAOS?s*~V4\ߋKo\ G'ڕ2T	fdϳ)luYll -;-cu,ڒiHRd2e< ЯcDB'$hxh*
C
%5(1=bŉ=SE
NqtBl-' 7,@%K>Ll&k1m>ވ>-
L9=yaC]QYnyH\3-#\gy2xLt<}z̐Èga"F-g|YdFFNhD^=]ftser sj%I}P-f;N-PڮF08?w3
6Pr	AjdVf15ڊ4
6>>-<M[M̠6jKǤA%m]h{Y6#ɷD?:d8{Z=AzWPbDE:LNF֦l_3ɷ=CDwTEmt%Pp>|,CćÒrWN9QC^/0gs;rixOBA猡9!u_{><Ƒ/;ǜ GPCGQ̵,iJ]T~:4Q
&.u94ԒG?j%YOrzTҫ
WW0rq|V|^ſh8P#;(@?1Ga\L:Q6}|c&XXr/
%6Q!7\@aT~aZeô	\Wx3bO@*Z8@`dIJ,ѿᄸz(5n0.@kR旉t~ǁF@ 7w髴ۛn4OAI1CjXQs)ϫ/2̵(oKh8XL0ꂘe\*ږ*dS)Ir
pu^0|X&85i\Ipw1qp|!y5GK"Y$S%̕#Ne{!]BsK8v%*Ux^,ͽ>
9TdbZthr~fyDv5HۖY M
ad4O^a*4HWAu= WRnwu ʰeТMx'KDcu*QՎyTp`$JJ?YzT-5R:IZJ!/S*"^fUqvHbi',J^x3xSj+*"H~H%=O.W|k^a9Y*Oפ<V*U񷴣j?II3TWk+LPɮ|QU5<P0J LqgNlsp)OXqcRU\SХG)uWRRH,q_[T8W(X<H
*(5R6VB3,6=[f
wͽ%J{y>eGRUx;b(h{~BPKF    PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/ASN1Enumerated.classWSɞ*ZPO@9TM+
xF^H.rmL_ҴIlZMcW`4v:t:%"a}|, _'2d^		
2!I+2J*(`)0(8(GD:
a	Q8%·*8a)19-c\l?-1VLg2^E[o2#ƗYx9
%ߓ}q@+6ִY	#		햝jrfr<eޠeƆc1Y-3>7I'-M-Vdv$Hm|Oja]B]	3mVҝ6fFOjcZCZ3S
]'Ӵ9PVk%톩w2ݣ
ђ#ڨ?4dJ郾e+/g YDK[ќ#FtI쭈cx		ǵt6D?Ha-K	%}K(*0$'$jv.Ivu3}@,aRN99۱u-䚤$N'QǠ"?\&N4&c5C=_lߗw+
KKɂc!Cڹc%.[E(U?4y'H]mKnSD0rx=h[ْ"4T؏7dbe\[8/T		[<H&u"zĴ̝&
ǩU
hn{%pXoV.ޓ.,;CY85. b'@HzA-hU;|(aӬm莑,V"jz?b圈5aGle\Uq
׉8QfyV
Tq*9c=]iݶ"i7THؾpm.P .U`f22wȶ2-l8k./c1i
3ŻWx\{M
{	p!۶eՑ7"I(h#$5o-0$G.J[W0F.dޒG:1X.b֔	|N4#QyLT!Qo/v
EE-)wlǽT{f9H7YѨӖ{-ȅ+pBK1F}$vFB\jkڂ_/ֱ̔fA 9]C	?}X;^
kgF^<#˸-G,鳻9f~y{Ҳeܥ5+,yfl'ٴ0wZ(޿V-Wd|,a۲Iؼ$%~!l
oe=#;
Q9J<RkC%		cCj#i`!~EIȷXMBDmQm`/7C3bT3 i6qw%Bš+<~|~>?U*As.s?O$)|ŲA,V4J'b[X{r
b_M׎v7j[s.dH~?+tκ:K{[z`WN+ֻd
{k|r,ky(r&G~ V40S,5x̅9&PtocB	6Mpvw|1<gYkJ=BkJ[,gfl-QpTnl
oE>"<gX;(r146U^E+y3V9ˠ|=RfV3HV|Ilkdb2x^F~fFks<þYUʗl-BBuƋx)C漫~WmxWR^X0<jb2Jf/QrTU82c2~]4OC+C"x%lH;7~r&};˘7w=
\|0{p̗U|,6r.*bWc3wCdgW]GlBA.T)֊zwΫyT'֧̎`:O1MSZ՟a#s#Ӆ3\<{\@{ˤRe
;n X~b/a5g\B#`E~pU͕
4I,MyPKwJz  T  PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/BERBitString.classVms~w+r@6IAđWXQ#jL^KkY yivt~HL33
BCS{??_fҸ\&u\{F{s^Xrm"s^x0⥓<&ϯ8vbLy7.x-9>ȷy{ɋo
]դ+^U_1%N]HrײLN@d:VǴKff)o*Y-͕Ux }%[ӕ_̛NJv_bpboL8Ւ]ϔMǱ즌Fl{+CJؑ-Xmnڪ2I:&3cԜ{%\+C=x^.t^U,i;_)~M[NH1-г].mݦ[l%R z&I!kEgMPXVn95~2!ynRs%?ouy S e.&2U4˃bI@bά-QZ ˣ%gAM;:k޴f@^oƇ"fyCC;jeLqkaͰN(0INpp
<po
D֞Y\
|[-pph\*JM|ve7Ւ;[Byj\W9U[`积[y?H5
שB{H&I^l͋[Т[t$vo8ss]ٖ b.W{Ɏ[Ւce
DidUʸ.ӖM_/}۷ln@бQA6@';h%@7b(vX;/.0/+J}0Tjx	q#+RCvSy
ϑkM-LbyoFX^Sr,յTS)-)WNMJpp]OC
ޠG
j=]~M:J{hU]r19qJIǈ7)ʆA)Gc/p|@菑c=6apе/B|}:B:qd$?bs*H:EqH{$9fR<
Ch N2BO6gO wBG(>#6t9+0aRIL_sOl8=;AUpT|+عۗ	:I
❕obCǈK__&!d]F|]Fob}/9X63<е׉DAsҀWJRd"^a<AӮ5P7eiPv)gxO\4XA=tU~]'eڀ|CRR^-aw
L
Unau-A[Vr*QyIgY~4[Ha*{:oDc~|!%;ºQ"ަ?'/~oxWZ {/D'u.W7ǝ<<ye\mx\BuWǤpx!J5*UDXNזW#G.:+5I!a7u=5)CID9r^GTB/}L}o#'V.>!3IV7=u"X׹٤שV7EgPK=&    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1Boolean$1.classRJ1=uEEK|FdS/*>~8j$drΙI?^ lbEF]a&dL2oI%6C6_j!RpWa*8j5zHJ.'F6?WiuRA;
#UO+lBQt@ƤiYPp%e*uD+S80YsgX[-2xICsELó	[a?}ahH@*_,S܊o]/˿uCZR!!M"zi3#D0Z3d.;KOyAÏ)!Ӟ/d*"'PKzkw    PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/BERFactory.classRkP=wM6fuvnG[a@GV%cdDTO0XP{C"tN0n9޷{lT-,fP3b,Lܲ`bU*Uɪ&nC({v	kQ|ajay>}A(L`ysA$[L%ѡ&vPz:^+E?*~}
rC?:`WIo4.4(z=,L4&'~a@KܱdXU6.㊉6hؘEW+j(at$1s2Ww	o x}DX]+<"8ހp*Gm@8!73ȣqZn~GdN8`h4h 6d+Dds\92+'<Ckw?-Y2Ba:C%+mrs7RPK	    PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/BERSequence.classUKSG,)W 
XN BRց]qϟ5_rHR(/3rqҳaVM{zzz߽,j"-Ŵ3ReħpwT|sU1=
hA}IxbQΗ4`YC9h#_0DY%BFbAYvv8Cwβjuo.Fqmj^̊ibϤ3Hܜ1tzղ..|'6,-Ya?vW˼*}a9vEŗtL0\* \nnȍ%KZvᆑP1D}nm2ROpļ3%v(;|~@A[,ZXS\b@qY<VVT-uL7_3P
ֺor.?ﮎ0F&V!v.cE	ܢ` }zeҖIwEҠlgiVO'g	(E`
[{1K"1b}2=YVvP'Ң&s*FOoHr 
t{Rd\|O*mLQl540I^p;
(d{c0˝H2UC[3>0>v>Ԍ%W
%%BPgg(Bn+~I柈0
Ǯ
7m랚2tb~i/ډBiޣ1Emrn:Ak!TgZZ>@G!Љcd?(m6AΏx{Ԩ3Fﯓ]o=@w3!K-&zK5|Xh1Q!L)9PK<    PK
    D:U            6   META-INF/versions/9/org/bouncycastle/asn1/rosstandart/PK  D:U            X   META-INF/versions/9/org/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers.classKSAOFy(*"j@&
(_	N-ݻw=JrkK?Ųo(D1{LwW38sL5BpcK\!^%^F1GLr Eq8qx>
9RG1M͑!:4<!˱@t9OBȅghb`yg
~6.,{*9'b=#25;8^>v!fRm&*A*3axT0Ryޤ/yY`U+UkB:´ɖg{нan%eվ3dV>_gZ#?o4$þL*Sws=7c;vnqg\ϙ]ΧΉdaٷ)ܯK-3o:Cz"Շ4x(h8а)FS@%jUӅ7R	mPeJ 2
D+xcNhH!\Ce
SdeFO
B:M"drcoɺ"eh,/)gG&#ti=ga;&]Fr@QW(*bT1WL()+T<88xZqLRlYqLl=jWQWB]۶w_EPdM$5)!e3)[II.)IrɽRvСVGSd@	 2\BXv,<,wE~	!hh44l$vbد:]xx0ޠoq+'q_~~LT58PKe6    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/BEROctetString$2.classS]kP~N6[ծΩjlS0@&
v;f'#9?xㅂc0Q,~l 4p>?$4\1xwY\PёżjGB򀁭2
k?X}9/;P'W+\yQϥA]9C
<ذ^2dP-鞴]{7M	'SLٱ_ؖgᎤi܌-	r95\7Lȣn@ǔLJ$g+]_PAmX+,Ο7Z[D#!jㄠ\K[N:LGێðZ4Y>~o/`D'(&ӟB#Yk#y@DÙ96"ׄE)uM8l~B}zM}U@LKHo0Cs=(\A`LhTM&[3h7d7G;jy*
Xلts/ZR@$/PK='    PK  D:U            K   META-INF/versions/9/org/bouncycastle/asn1/LazyConstructionEnumeration.classT[OA.,Eޱ*H/JwR1,`RAHW3,$(mE$>\w9sveIltt/a̦aܬXa,-25i%--\`HY0`"鮻<Ծ(PKwkYيtM7+/sJNsOUU'|\"_9_4!I04wWx3	; \~6w(p}τgjd՞32jaJc |)Ad4`rĊ"yUFGKWL"p y4b(;C\?֜
UR҃i\uCyw=
Aa5ѽ~'5QQM&)YOod&_JD>R&Qr;,@0=U?pT.o'ԪDV*Qj5j1gAa(Hi;yeX;?[bӝIQ_XG}_F!K Q=2? =&]iN}#4)l6ѵTLn Y?"hP,9I܃}FFyH}|dmڄb0HI1D/ZvtL/w6unHH7=ǐ&!mG>6B-rDCĚw&)
YݡG$YE1<XFwh)v
ӸM(Ҿg;PK*^;0    PK  D:U            8   META-INF/versions/9/org/bouncycastle/asn1/ASN1Null.classU[SF6qsHӆn06MҤi1!4.lHa KTZ3Oھ䁤30fQ
0\\{Ws޾k
F;EZ=c~$/_EЋW	c"<jcL*xz0 ˠMS9;pB啅idunj{w!1SؒFyo[dګBMGrS|
nV/&3Њu PΪvWA7E^[vtQ\ۚl	XWⳮ^uB7u9L$lXBy0SD3["IJ*Co"y*"Sbl8Vc'ֲW09<ёU51{ sech#`eT<egnӻؖe2:>oʍ)Z	S0Cwֲ#m='UqZmT̪(`
RʋK9xʸqcòksUbԬ
EM)lQQPT1Xscd׼z\3ܾbP~6lݓbʶ(bsqxUDnpz%&fQuM6։gcQ["g/tIzI/kE.Q2=5 =%z:fZ"_,9*K }ٳxs/O.+(UnX[ISBã`Y[mOCJx͊!xC2s>)zEDFI"fl\.]<t0|څFO&" Sp_z '#@yK8D{O觾k!>Bq$}Cgib"cxVV}+T ӳm}
/%uǢf!<'Wg`s!_.B(W_\d%̒Eϟ {1#Lzփy?۾cW`o8BJ]ߠ{Jg7A%1BOzV,|k#};)&=]Q,SQ|᥈yqx/PKN-    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/DERVisibleString.classUkOG=c,@ $iC醇
Ki6Ph$K Wٰ޵cT?T "R_!zgm
\0;s{Ͻzo [
z¸	
1אС!9@:Hx3:>!>VOt|T3j&zB5]K0s>O9-6vK9/vk5,^H;Z\zi]Go4C8K_vz+ykyɭ5^mEQť(1",g
\+k@r"sk/Φb$6/fvTG{u˶72f]-6-Lt1
!f*f|;x*uKT2wr"\/gxIWׄ|j},DAXTF4,XWVb>5<4Ú!Ұ1XtvŖ>U-jy$95Z}iH2wZs^h͢;)xx<)\+`
|v3yd+|Od=vS[>Tbm0>
uxd1hd+T#n..Sa<OƯZމδ
K
yRڌ-m
D1[DͅZ:9۫WU~PLA<+壹W[rDmi^\dm))RayGWvGJݦ4VwГ C|MЯ:BX0	~"^!=uczW@!zSoz0q	Po$f05NfCL-b
zAAlRآ?A1}KP	P!*"60ndH"9\	ѻ5[UFX+:/@B@[1Riɩ#l7BD0U4aMR3E43M{A?PK:    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/BEROctetStringParser.classTkSI=
vgwQPBEuxܢՙta:5AOZbI~GYޞ(>tsg X0?0QzqŢU3e89.XH/q7pӂ[90"eĐqUT+TT#u "񲎤XJ׏G&e3J*\?E% `MEOKݢ0dbS|U"DUV+/$"$5ʓu0&GZg8^[vV}Ie. `qَ<?Lʪyr7qn3m]'0pQՎ
)qFv[!u,(]{0\TJS@QzMU~LC<2QFR6Q4ҁt%	DX+4A`%]fL;ZJ2EN%neo0uT)#MNʩ4tD}QnuI'	ג39JT.Z^6M.sܭv vtZ"|f}1k_:pSv*-m*jr$J7\ʨ8uV<a5h8y=f]vbOe.J"ʾåqa0BWzwh-$˯#{}X.=oiEB  Vxa8m(1]ɽCRovE間phei,.МN"Z\>J>[8%aH'܏'r|åVNy|	a#۰W$#oaprSRYA.)S<\3h}wPK,QZ    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/ASN1OctetString.classVKpU=='	ClH 	2$L :>!"v:INw?XtB>&F-n\YVYnܸqB!*_{}{}?WpΖ"G%<e(B(_	!$$[B)H^	}x"ICxJ|
UBh2  |J%,t0# v0EXpD"2vdvf2EecV45,fXsq2;Dݩ]x*) "$غPfNqTScz"M4?4iltis_j
np?SjA+MAuTz箶<P:k+٬E@q~y$G=k7GU2fE@ hH='74fv?U
q審~/QF:0ɺYFSbk[g',19	9VO$%nЈMIsnB51@VX3UX=QGFɔM!ilqcL@WF20XZ5tvΔg*Ų<HsLE	
9qDċ2^"^*ZCxorJg0-t:o[)j3$I
eaͶT1qel2[j3ċcHGec"Dq*9堶Q-j{2y+`-P@6TEizO|Q5O$e2jIx'MPi'
(hbg5GqLwnW9ۤTZ5٭;ԝyZ
6ioW7qg~dцø%"A:aJѽ-X6E7CʍzqYG7b.Rm]ROKHMuua,݂J%7%<"7hyy$hNQkx/cmXP²#NA^OڡzM3н0+tLPѪFRwX3Կ-=\*=k
#aKx+5yt-[Ij=jI2@oq#%iXBo#~C!ECBQEgPMFDQ^r5uC뉫(mtek|!:q̻
oL?m2:2G	s8ŴW|B;E~D		)v34%eEՁ|RJN?%	T6O`hW:O<ӋPLy^ w.!q2?᪯p""iTs:X	,ʧ:bj /wF:|\1ך/*h(^|KILf<Koʳ(fsKM&F_ Wߨ~w9KIl8{=LPܧ:'=wNeԍhe|ߔm^joԵSMo#=
.9@U(8!	]D)`pmZ KHn'w>wPKu9d  
  PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1Integer$1.classRJ1=խZ`*z/>k\#۬dBJ_T|(qv)"BՄI3~dma(r&,L2lK%CPm\^\-^2k0ZJ
y#HFj>4Z6mjFR^	#UrN<#LhrGnWfaK{PƤތaDG܆0`0ϰқZbpJ	/"ޗ.;$lOxa&	txU=-ߺV.iKHǣyHgGr:Iafluhg6ÏA9	0FhO	PKPx    PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/BEROctetString$1.classT]OP~κQVL*	@
~p$K$`rviKW'x@ b޿db|[8y=+BYv8By}WBZFFA+d*P+M0T]cheMovJZѮ[F]QZ#d!(ǴJc1nZŐN%=8Cǌizȝ{zIʺ*Rz-k:SeUt!RM#cȳ|Y˨.	\%#*.⒊8"*:S*aTu70&c\MPӔuGYfEu]1xME,LUtSl/]ٲV};?7 J\l;
7淈z~Ir
4J14vLѫ&ar9OG+x!;0Z!{rrHjq2=1en:II.
oXˬ# }&QZ_Q<%1GIەYD/[Ex=-3tA(>A'#~s'^lL|m:O5(%6 ghxH7Ѻ0M(hiȴ>'.^/WkL
6~AI9a`g&PK*    PK  D:U            6   META-INF/versions/9/org/bouncycastle/asn1/BERSet.classTMSA}n,_"*$$5(LU PedJ&wW/\Xe?,)JL{=3=19<a඄a	w$H@':1	`H"!a!zx̠-z
m^ݴwcZ|t]֓z69-P-Sf)<))p,R2Ok^soz{5
3t&2vQ{uQUnWK2^U?weܫ"wm$d$XYp_Ü`H\"neq0/QK~YV~靄wy{0N0FM+|yYu+p3e&pF:ùxẁJ9^9_`H|Ydl,#I5рPGTz_>J~Mhk#hҀ*A@@m̓`,59b
DZ$X"KRp@(مgh!8y51~$f@cxF#Yÿ_I$
¬PU
sh<I+PW	:coOmYI>Yfe#譛X[?gTPK˰    PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralizedTime.classXxTqGW+Z=Hv%Q#m.ia+^
M<\׍&Mcյ"Z?$m\7iqڸqm/̽WڕRI"s33gΜ.?`5QY#y
\)8郂S<ナ|<F}C<`3{_EK>n*8C1
3
\qAWUP2ciD3"D>4_3*!?/p <xQ* /^Tm㯥q]{04ߕ^7}DTŋO}x"oW]S?TK|oJH|>w,o+FrcLOӻPמH7KGzʌz*sxL鱞C:NM#ntΞB^aSjƘowҾ`sX~DGF>#٣1%;!gv=zq,ƣBIfd4޿nB9"gj،7e3DX|=-dQ[7n|r!*1ּkaj9P@,ܜHdҦqlŌ<Q:z،&z` D
S6X%!Hx@OeYU[ǜ<9IAG4>l
hjS?Ff-4aFVj&æaw۴H7&BTװ94l}0p3Ħ6kdt0jr0ɖzװckZ6-%RyvG0c\Fowu}8 2,}݉d0+"BΐUBX:;o_bZ#Ӱa)r4	4-3Xsx$F`[	!u@"*O<4àBͣ"R@"*O+TQ)~H:Nɔd/ ,=G_GG$u`*oB5*
^*'BĖ%FE]CU-%iJYqWe&UDpatGmOUt	0NU,UQF˩V:F
bTώVHߨaTZɆ2*V 4wk4GpTDjm=tFkhFhJ7OԊc>Sa!gqTڠM*,g\fqZh#箙KL[Ǣd,c&
`-0SaT"_PV4L[Am#Tf|1-$;i+K:K(^%u`DW{(4&ۺ2BLLӷ*>`QhN&U3a[WePF2HJdT<k?&uV^~/)"2KL#g.Yj"lDhG2ʲ?RfNXR՘qj)}lnJlfi4~pt2E v;=0蒻yًڶle(ea6jgzdϻI3lQ,ޘSx%e7;
'RlnGC+W]Rx8ҵMNkfuܔVZᆫқUK]*p̔me?Wڡ(S|Eڶ{;J=CRqE O4#OUn,bernbMHSQ8q7iI\c#fG14GKfyjfx
@Mfl(8F3{"{Nr;LՓUt̞sbmӶn6{:͇,8h8f.ɣ
'TUV=jsnM3d{uPQźy/*8͇ 2)/2= o|45,`|=r&#X<<WƐ;py
!8mgxь(nW^<n6b>[Qmh@s<=QZ9ٍ&@1Y+ys~`8GXy(|h(J:dc(Gm9Pb_ͪt.j$% jpenrRв"XeEXq{eOay,쨿^W<*ǰ(X6JYm6^^>\O v0`zz0UbQ#iq&zF9|q^JS]xA=Vrþv28('_|prn!\i$RaU˱ pKa[s;nwCjwd}PrMkƱ8+C7rcY6TN":Pvu)xBmQŤPEwKugS]<!cqg0t
K8;]AEKPJ&|؍v~)?^|?9%<_/b(.-,{7G'wѩ9h츀
cX.q?%nSbMwǿ~^5y{r 6 WvvF
kJ>XY,aZ`ư~%@n;gog4
(jɁ
H~x\f7^BSVIF_]4ϯ8A(-	2w
jgL=23\g\/݁I.MvXt7b5Ӛ'h-6m16N6ٴ|k*ДTJs,%lB5ʩTF
/V`3B]k7⢢wk.?*8x0!<m{C%gX\-krWEQۿ=+T#3XVR`rzkSXfܜ=d
oahnE!25txHDBqmŝ
Ct.vRy+5e}8:Y
Жctԇ|'0f??d_9>b2qrKeI{&N:fdCs_cxe=nϲYVݑjwzU$cq.+'94pr	.`g[ EeaE(>4a:->^:t|r=aO1{p_m^u.C)#2_v]q[<&3"aPee,Ըp !q^rOsB9q/}$*/οq?y8j^u=9釅|сA=Rz4E<'Z,|hr=A\eAf?2k
EuhTz3?M䇿|PtQ2kgP#\^؟kE֥ՏN)r,Ҁ寏gu5kuaV uj:-T/1ܖ|ɧype."z{E</-]lf2)In=iؙ%hE.<Ir{o?s;^r>3i}7@~N=w~sSZ23%= Wt ۸>ZY헭VMKվlX?YO
PK?*  =  PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalTypes.classkG$1Ә.8WckK]Nm^b

-mZB`iKZhB@\.Z(y{}3;KO@;Ua1+т@%ZZҲZ-kҦe
Z^Үe׵lҲY-[l-۵DD@6˱@0.P֝J("1ƌ1&':dh,qæl2N[3iuI
;vxBmР1*ʸ͂H=hLXFjWO_bDX-%$%"C;%F$1Q.{$ޑxW="ن
T&_|Y]
|
;J*W`ϣ-/깖XY5dz깯/mVra{Tt	/E)O7̸r
O%|mME2ll{|Ugcr.3qEˑ[̰txkLlcیguǭJyjÝ3.9Y5éTbNkLx3nD'YD>].ȋ룄?nXXʻe<g8WU4(DM˧⓼q÷Z#)9NNS˼;CZs'?7L&Wur&wAIJIEʉ$T٤!5d.%/:2ԓ|,$bӹ8#1c3sI,hW&=[d94G4pw?Y,\axE{,XeGJ̿)7 PK?T    PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/DERApplicationSpecific.classSmoP~(ttEEtc̕KbX$!ceS)Wrb)W	?xnǈis=ys?~xEK"x
`EC**bo#-Z蕏emrpacѦHNT]e6ܞc_Vos:NpnSKRD+yU?LN6'+tmF^C8Z-ެ5㾻_~`XscG8%jxVw{4t:ma[z⓰7άqJ&Zx-K eȎԩ>'VqKK ͜\!0GR(~^vo
׬Ԇկ,O1H,<%q:MhP3E#TF}4G_*ٻ{AqvIn9-#rt@>7(^*d
ӆ&zHJlpSbx
0oZxN" 
1XD
Lȇ[`L2 \qH9%3xD(z PKy"2    PK
    D:U            4   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$2.classUmsF~.q" ͒J#u@q0:*jq~ 2:	nooooޟ *82>3\.cYeha`XZke(Ť)A zgaH0%fA~a޸P^p3nv$(#~>Y$i_Mid0RGZ/6	`?ʣ4cX=mgŪ<p|24Ġpon%c$ 8& oEdO%c3lwhqdpQMaBu[᛾XjK8]ձ/ǅ&
"ߎ( ˢA+qn\sz[Mw,G3҅<ք
[y$lȸސ56eXXjn:igm뾧Mn&wln7u2OmK3\07dYMa OD95yj^2oDae5z[e}Q>x8QJҸT8˃8'>J맯_҇Ey+r?Ob@+ 	 Y2wQ\0OHI\ Mk=QiTDA9C'42gV~%C#7(.PmZ:tZ"3;YbP.a_^D-]ȸC~%=,_Տ^H4' YyXU&8};kkp7L|34.{cZ~Jc^N^%=W0G
PKZG    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$4.classUnD&ěK
Y\j{}'m`TMUE;B_ 	!DTxJUliΌϜ9߹?j88[VpVXb
cX*pRɓPJN[ZGJ0C)bKzEf&CK8TM݈6ę3WYWLw~EKQqWxe'EY݌D[v=&t7y+M	+7TMHdk2AӼtWyq7`8Sm
Yu-E6W	<KWS<qҌ2L˖uWM۶Bӵv7u1У[mQuE	|?tM-ۡmٖ캶G0D\Iy(ydW,Yw|"".,9aFK@MM5ű<sCմTϗ-O|Od_34:U q}Wu] d2"ઈħNdth44!!-1诅DE1,NYR?JFQ.u{ݕ]Q	9*gL$M"J
at}-`8"yŽS㢔q	G7zHˋTןKbWlPFo7_(.RjS@w>w[78N/G9FiRS[;M+ul~ڐ3DoP;9@upy>NBt!n/i[,jeT%D|O@1K
{O& ֙UR&֏}S`{?F3+i=t6
ФY'=s 1PK	!OX  f  PK  D:U            O   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.classW[=Y,!
`C-$!v#ۤGRuYX5q۴9z6]g4鑴i6:DWj>{o2^%n0ã2N㦌2>$|HKx\xRF-%GdQ>Y<|Oh§	OK 7Y$c3gd9Hg򬄯t&_
^gM	ߒw&ߖc{7=^-٩<O~؃0?csnEX_2`還_IxI@u͈lV
$3Y܁X'3ffC#l\͚i-fPF_b@tT5iԌL:VRYǨeJĎqp,{(6nifr^.в斂Eiz]
T:xF^5ɴFᨉ:Eh2OT{.lf
'5c%}*ZDj3n
|LՠDl㈽I%uSKRb*v^Jh(b8?*.HSFfvCu\Lz28f)=I**z-PЦ(`73DXphd7nR8.I52;L?\kJ۩3g;
T40>:+݈m#|ֳ?!sdL:T6$ue}k
15C5SZ6gqZ:	s<vy,3ک-#c|C}*lMe\Q R\_+
^[VXUmΣ)=?*81u!iWRp
+
E \-l-MÕf+tOH aހC?{o@
V0#
`;+<t|Nn;vmG_8o*x/ԕ+!>B\AMN
p&	6NI

	UFRpVE9}GzۡuN5^Wk9jjNC5`vԾ,fbX:O'йbh6cpX~eqj/lnS9+W^,999VUt1K&i;k34djW<Q	__ǰg}ld'T[A;}:x!M\z֥.qK]6tܥm/l'QAto^$F5bdn)\h/6y8KyxnEPMc3}.ZI5$ZV݄u!^/&yԕtVvENY6Âϡ~B0[5NDjn4vb6*ƑC! p{Qe!`8TG%hm
մ5j#mG˴56*hk\6;KKNM[5f	Ѭ(Q@\@q
O:2
JH`m6H`wQ,^@ui44[ЪJPXmn5ITe`*3D	g͗ђGk;ۙǮڈ۝G{ݝǞ:ۛǾu+O<t̣q<"54pBzY8laG,Yhgc.ฅ{,a{-c~>f#gaBSa
b.</C8E0*qY !Ziхg?nko uh߇3D#n8.ӥ.ms6;PKSYV  -  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$5.classUmoD~\rAʕ
	./={k{ii^mP^)O\]@$ޔDG!ה~IJ;;;;;ϳ>U+x+`*hV4eT1bjѪ@(^Ż0!U]az/747w5TkY%n݉vddq0OFs=ͺ0<D^+5MEYq6а|heSf8ukk7
}\(_F#b$~:%ݍ8!kY
4_56sZ;C؞eqC▮,u
m!<0VZęGALk+f<4cX6wCӑL1s2[LL7Jẜ{)KX!\P&E(=7MTJ1=ҕiJН\ɹZY]9,;]8Lq	`<K84%9tlcaaw]F̱ɸmHa;2=ϴi[mn,=8cP54,X^5UB\썝Adi[y;řw:x0XZӰX/JՏnk;Ϩ5%kIw㌊yeG? 8­O>0,qe$(6οF*8?M V # <λ^ʆj_z ~usϽ]zt.[UqtC+]QqbϤaHNߠ0w꺍pb}ɍGYOZ/X1NP`sw{b<%7NvP9֗0Rq_ q7afgeu|S7i++iG^IC}-KAN	z1E/PK    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$7.classV[o5&t7)	(}Hi{6RBi637~DT+@<qfZ	$Z|s:^"jfk<b9t3h:Vj*:^]
qUxUN]⊆

m'WiV4c<Dk9V~KZ;qq[R4L<^;I}
G͌)k}>xdL^NT0)ŵMflP>oX^劣դmW8>Y\M,wB&MuBvB"y<
"*y3
)\vc[LGU\0uܱM]
CЗ4E/GA\ߋ lǓ*Gx	/r*f\p;dJ&67@Y2pȌ8S>7=WPϥd*J}!l1ʚt\2*c<p#)I˵lCYxY\QHWRxETi*b2Rvh1	=/+}7(Go)i$'6	a	X.9;zb;[dy:2=
'\Bߟ0\)ՋNk)fAͻH:INw[L_iAפʛG_{}a徨Z')fxG0f	S IrÐuz>盏=zq.22$TO$ޠ=eJ4<GjԎC:P<4@m0y1tF=ܜonJb+*=@&=Gbr?aT [%gz4y=3k0~saq.&>;~~!4~g;1@cCxP[ TAPKm    PK  D:U            T   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers.classYPG
PDDeO`A@E.uvvX,dv`ns>}@$T1y{h(v}M
@=n^hfюG:sԹ"&8yK8.xG8%>q8īOxǳ8'"%kė9^!u7orE|uwqOCG?57_.7k?ŭ#HFMm~@p4=!3LEL0O$<^awCE$CFh)^sad|Њs6%Sac*p a3-}o&eNl+}}iu,Kr])NrIxR$9X9*[Zk,#˗\~:CC̡]Bct[h{֨xΕ=2۳Ų3S[Q<;eVȜ؋WG\Vwt3lY!bD#H8Cn<_<d//3g5bD:KKu3Ev?W[w^C:Xr\N
]dy.On]zd[I9qQFbvS{40ZEL=Ql܉I3NZu8rgl9#kKbbٔSΤ""|-ԠSoԠHYٱƐW:g/W]#T!EUPiM_:OZXj*?h1cugw*S+RVQ<ثاxJ_q@qP␢_qXYIsuŠ.LL	E_[Ȼ;~D-rER7jR7ntb[II-%.trҝRwVHMGj%iԽR$'u?wH=HZ+aGH:HR]nRzGI6ڜmIMz\=ROB`4[QRv4;BUjq_G
.kp:ܸ&,]T󟢒UD+ۆIV	dfaN"b9PKRQ|  
  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$8.classV[sE>6eY,1D\`2==-X)ѧa3Xa<y	&hYԜ>sN9/~ 	_|Ђpδ`	`a	0
Op--`u7A#Hj!0iT237%z4h 01,oݻS7;90(*V {󽅕Q޿3qY~17@/2WTE9&g>O1^m"n悻|cH&k92h1\VTwGkM8'<'<r(3IRISc)MF(Y$eQ6:Ip!&*R.oEgv+|O`aQ|<.rӜpFq)dH=whQe]3li0f%LҐkn|P,&itQUԒE{<iH&.	g.X:2ג(Tdq*Dwcb0I>HD"sq̥b5mglQXm22J.\0m`\JX>%Zw퀃9dx,6p>H-B>piΚ`^d2*M1\m	)WVS!TQFaU0A+cNiӒ$t!q$V@kcs8=4c}Tr%T299՘}mB3qpaSAxj +{=.D܁+8W	~91s{2\+J!vx<O)%[f>\V%n=^&Kn_VzQ?۲=LFq+Ј7!WocebXlZ/5@7	ai1('dﵕ>P}{@p?
<[:o'@~rf|
xMW5q>۝z
V
מ6M˿B?
62ҀdN&vށwnC de1D]-?YzW+0EA69]l ǐ)Bt n~LPKjn  ^	  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$6.classV[oDlK
ug|7)-xrA$(<9]#)<4x@	q
RE3oΜ~u5Q%L0S[50?,1rg*1V/
7aƬcVv+ݤ[\U0ܜ"XZ77vl;2⨈AvfskiiIN;ʋ^ڋ[ݒﵬ`,ڋ8,42m}JؙԷ҃R7u
r?nGX&^wz\JwpU_ϲV6--Եp"H̴\uC/ 'mVqEim&W0Tu5IL<gG$HGh&3±@p?e!<ʹ
gұ]w,SJp:4r2o;,\ХRALsَ\Wq\ZRɳ_D9Iݳ8ܒiLZBWD=_pve|zƃJ_tKz`h\ӜPt34)뙎+|Sfy
PLuX-y>y`;_Y:qX
\I{qWLt Dv31͵rzQimm幇PQjRĝ8w鴅O?I^DIA77O"ʚ'_W^xy<]qnFW>1V=TNnR?x)>4j)9~>؟f:s7=KvY	
^EG|M
>=*x	SǮ[60֨]Qj6dAr#Կzl?*~"%	ijW2^yDPw"Pb|3mťŻC4N3g&>IE«x
%h lCf1FOPKQ    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$3.classUnF&ěiRHKBvsPWHI!.g,v3A"PU RUG33gwn>ǟ@Ƿ5U|YEVpVXb
cX*pRɓPJN[Z%h%k!`1_%hu[aK&nG}L
eOluҬ+m{I<ϥؖx,@ja,rnFyHlxIAm#bJfmUS5WEO"8H~*/-8pvАPw,Rdqp5ų-,ôlYW|մm+4][n}S]_ay=UWCBۖmɮk0{\.HIĕ$׏JvŒuG"z"fDN()
tTSQS=7TMK| |4M5CP5wU5LB!,&nX)i|`}1ΞnJGVACeXV(8yސea)PGIW(2*k n3*%Il]_μ(k}qM\2.a1Tvyqw8C<9;8j={=Yڞ>"%Ø:mݡ$IM<ֱ}_hC0Q9n:<W9h^!
c㴭DE~~l?CDB1fi_-@:/1J	z^aKLxa<81M)D|V(@fxca PKO  f  PK  D:U            X   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/GOST3410PublicKeyAlgParameters.classVmOY~ne2Pp
D2 
(.JcڌNM,/Y_o23mQk4=gΝs瞙ç ;QABAB$؇TؤٜU\`Qť(p͸+Qઊk|2k5VYpb*Tls4^INMgOYO,Dw*ʲ~MwmճbgQzv3lS
,pbQjL~!ӧpV]'u{1;!=ileT'2u4`~e%/ݜ/J.xnJ]L	g:MǄe[ޤvFڽ?xvd
ML}4o0$v^i6bc(Z<m'O4T\SY|'CKA\g3 0c(q͔_Чa?ln`Z@߽lnS1~H˴3f1'0ԺjfA95$p"oP`|/R%ΓίZ4"oW%S@u
JOB? ɡ >B8
zW-- *zzyʟoTo!PUT}~:DTFd=8IA
ҽU)Mtu:uD^mUQ-nhc>ұ/-F[ ]˄4NHW*WGr})t
I@-:0l\B!'B5&B?I	L	p60C-BRPwwtgCP.S-SͩdOL4ȞzrCZDB[@}<cG'
&zM,ƏЋ	10}W=~PKPW  	  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$1.classUmOP~.t"8PeVAdZ!`!Jђ+M(DLx{{/_?~c1p+;)RcSi_ML
R(idƤ9ht%׊:C8P񕽝M<q6t2܉.7)m{u¨ͥ'ږ+YfGjaN!I/S׆԰̟¤ .[	W,ړ+$A	g^:Ylyn[^sGQ\`Xe
SхYR,^+MF\Rj(>Yaڻ=1<f	C̊Ã88"bADI}n(VV,٨f.UM/*PUCzVVj4
4,V,EQp슨ad'?t7҉*]B.-0D.ì,F\yRZPu2Zk57y@u<~VEdCbubxP;>Ə(q\ٝj(6?  O\8-/:2g5XDF/7IU7v'<1NHФ6h< {G%}#5:ezhdD?wc*GlF RxT H=VvQ"TC#:&Oc 0+ˈ+pn0]!S8+,z	 0L(5]9z$fzww7PK  S  PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/DERPrintableString.classUkSF=ke4)U6iI<i3qd#?t2Ǘ~otzW6! ힽs]o ᩆ1
=aBä5$4L0=@WtD1*>	

aẲc).xM2\v`˾<p\|!,g=jctDWJ鈜Q)xEӗ]Z+o
?N$Vx1D !|nu6K%Qlx5n1Dnڮ-i0t<E!p|C-Dbt0s^ͷĒtk
4
uζ%P!mK3)^i{.#tqD;~V@ɪyeE^B;Da9
a25-m*`\I'^9#ż*USB-*j[[wp-H)|M5m9QG|Kd<#[>ZT&mV|hH8Jnk42ȴ3[;';0=<ONZfkw0ȩ6PXHؑ[DF-qKzof=oVa0]WA19񸴆vݢ#cubhc^hW89[
Hp.Ӎu2i~F8&l`/iku~EW>
ޅIP+Da5S{9w$`N1
?AS	L~\!AW1I՜	]c=
\P)\lR8[zӯR%@3{Ȱ.`h@<'5|nbꢣ5JTc`| QA) ]u}m&ԈMߑAfD.yb#Xa	# PKg\I  &  PK  D:U            6   META-INF/versions/9/org/bouncycastle/asn1/DERSet.classVsUdMKR
%B[EhI	~InӅtI6q|pqqFG_gѦ> zfAu29;ܛ~1A`@ƠXj	
2" ^){:Qb@q{&xYFB9/HR(LȘ)x%&\bZMfޞe`	h3$b>fnV/KfoTj7-/miqa\L$i#Hevͬ!zdGyֶ;rmƵHzʻP@JJX	mpN߲
,ɘ}.
J_3lTپUSvsC2.ɠpBEuܠEjqh1ϩGA%W`,LYEqI#eY~=rCmSMp\UN~\p]
"-㚂ЯBD
;8=~qZϗ\AVA\:w\bWpKhw4k^-3<lSUkvaht<V,1-빾]۝-IWags(V!mϪ]L.`gtVkjƱh$/Na]4lQƌSOHrfVô'c.`V0q#E	] f85h$G´2ZO<rtD|Q4W[#+B*jo -K=5}K%֐)>i@=TTSdBmBGM.rx/\dnֺ@O5)&G
*DCzR||;io}g{߷1,Aښ%i	ׇy?imH 	㬋 !cG={ 9,]vtW{]'5B#DAGzvCpQJ][F
=n*MPn"h[CvE{I0.U
RCWG%4z>էJ!TZfa|=fA7. 8 y
hrs N{2T..QhUWnv.vqY7"Oe17я9*O+(k1Y]o>$Y{XFt"7:deOn<d{:޹;
.зh5j>pFe/j56NG4`:zOUMWw?WA-kz?0?%0u{Q:/PK!6t,  m
  PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/ASN1Choice.class;o>SvvVv6FҢT̜TF~`?CTĲDFtҼ⒜T<C}:FJļt}L$X PKϱ$l   {   PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/BEROctetString.classUOU]fv,_]Ŗ hKk)K|ETa;,ݝm>ШD0-֠Fj#kw7`Iiw=ss|q*}8_;sqlG}*wQ.q)< 쀊aC{8uNYDAԁ9.wF1!ӽ	-35}#'щH@p0:
,Pڛ23fZ#Z"Kt=M+l$
XOLy©t<0ʚz@˘m#[+mNfYU2TXܛÆfSz:M%h4bisڬxW0`?d`xGEvBpz׭z
.he$A3ӚeLOM1ҧ*t3FJgcbMxG)nƭ33Ϩ2^TFiSm֚rwu-9*b1=ihmmen	x u`
,T6
^Ui1U$v[W1q*4L14
/hEN4𙏡|C׎ݮ{L}*`)>)*✊
L)2*(EUZ4RZP?GOMFUR&q
f'JtZf|B;CY4u}h>0ZxSl Lӆ=3ΟJ&lb_GSNj\m>)Gm@\J&?
Q@n0<NoExi^ɯ*y	.z6(4Vս?|RUR*V'^\JaiW#Z\c&+2A~l^5F9Da'H.z_3~}:p.HVN@EnAz&BbTCc1om.:s,+PQCl)LR2LҔ4@&P32J6"F)cќG#+p1N3jFy^zit˄ls_C:R쟣d'H@+!:w37-t|=Me¿9%8;C+W7A팛}48WI	E,]Y3ksvHa&{=1o	NZA啺נ(d%y
T|z[]|nP[ؿG[tfC߀ꢁ6'\v{ET*U
::iÇGԍ?&).s	B9볮hYqcO<{r*?g.g+噗ў;Gk:ǳCsN7'VMr{w~Ƴ$_a+6|Cm[&Ot~F/~A7Lw?nͼ-8o8ubwKw,pwZ檢T!la*-<Mi_D{/PK@e/    PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/StreamUtil.class}SKOQn;̴CT(-b"	Z BZ/Ngtj 7$-nTƅ?`xf3!N29;yί_}Ґ@JðœWu0#1p|PCZGY[&9iIC0`PM-HK*%<%,,ȊtӅ-祝_knuf.]n^۾IhC,I&®Ҝ8"A/Cv])jMxbL0v1~:u0xB縦</s7q+i0|ɭ2U슲pOzhۮ-
#RySҖ0	d[0~j-!T$hh0ٚN't_YxU>su>Y1(ǌg1Q:R 4^0W$#ٖ>t1Lkۏ7-B@`4lT6OU[ڄ橡=dH
5.~B5CAd>EPS}(/60Y?B5
?u<G%Ш(Y(!ƨ	$	=9	QD$^jqI
vt a`A PA]PK
a|    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/DERUTF8String.classUkS7=2kMpL%M`K۴ml
yܙXΆg-3?)2Ǘ~otz6鎻ѹW^IW}{Zè0!aB'5$4$uhHE9#0C|%ab>T3jU!)W|mTkۯ)3ɂUn1[&oH[yÙM/,>yZZ_T3[!CڶJ|&RQrsg;c}A=ar)*.VEc7!HKXsk'0ψ(TG/MKR=jFY2*x(i`x!PqXwKuFeUngj&/xɹlHW|VC!d y,hX4/5<2a|᱁V\u
f`]#V{V͒.%+l$9
o=kI<bHRv)/Uaj"y~t<A!&ӭz1ˉ81pwDud=KIoSpT=ۼAnOA:1hdk޺{HDoǟa,^N[3G8Ѧ>HsJqrvv{)]aduwucq'SOJhGܩآ16̜nV]\@/_s.ܶTjʔ1oR@}AKI4
&`{~{M߂m83TpbAHoޜ!t * cqBpL)6	$ܢvTMfH08#I%#E v`
QatxAa?N }D^ seѠ
mQ2~*udᢿ=!vSuZ(RSџ+T:9۠?U)mZj5x!櫺#|[e&}PK	    PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/DERSequence.classVsUv{I/BZ(A irO0Z I
[ڤl6zAq|pqtaѦڑWPl6yz=~|*H2;E\Fy[p"Dc|ū\sIq""$ .$_!cZD'R.EvМ̤59er:]f`&dUc5Hdrb2f@<8tR> 
_(b)%\BVGYQҊv1)N;̡{kI-{ͽ5b'8-%k%$w(M1-r6>ox+'yMɤfi];Sk,{i5Gr|Ni kRN1vW 婹
_d5'Rpl+0G\J6APd<WUAߨeF3<<*s,J]LNMʧVS/%0HlZ<JN.J`^U	*%D 	JАc. 0Oh$\Ǣ ^`[.+p{k	vV+,	-C|ĉ3tV F)>[sbh
(@dxvUtp«ts˳?pֻC4akJ\_mǞA=F)CQ{"[I5U٭L+jPj!&\bmǵ$h䘠5Yv
M09JT{*;d*Xj5ӳqYG3靻R5^ر;Su뺫U82
Gjq&U/͊t?m䧞j/U/Fkm}K램ބ~0zǇHݐZЀ]裙FFcwW}c$|+IjKYћ[#fXH:aE;iy>#^^_؈(/G%_')G~zK iJ^_WRyӎF
7Hr]Zx_#HCã#cݝ?a.պ%ߟ.Ręh:]Y8'ЄAlEOA2<B&D`S1&4tRV$7^+YjݷV2چuւ>2mz.s=;{%}Lsl[C$NINCp6gmI ^stp_A~\1IaR䳂!?E\%Wn?/n4qKOD/K	;Bb{	d98l[3
8ǭ+x֒Ƕ3y#8j\>۰
8~G/|oYE'Wҵ<+%}F	iaY*[#W)z̠t[pߒy;?PK
  
  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/ASN1RelativeOID.classX{|S67Ioi(XЦIKyhNZy
:MoHEtL-Ρp)RMtmǜssODЖPjX?|N=w~q~pQq6\sZN.}څpT|'n牛]p.l-.܊/CȵEMIcC_>pdvg>]K.lY=rׅE-W~9wx@2u.9<(?7W>]'A#rxT&]D; xL2PP1B
nٷ<D6RSrm9iV`4j"z"a$5+cΪXo4%'̈Q'77?7lzeKDUԸ`CE@-[&L=j#	Fw@~Ef*G;x8IP,j 6TG<]7mZ#<̔X;ՇFcowo"\4̠,į%QH.2B撉m6Ц{k}n;;
c_3<
WN'x48Pi0liv1}ݥ'R.ʃ\0cMFd^=BSkM<2o7hhIٞZUSkw/Zqi1c)&VL{CnTG{,uV`VbXUX[+	jW.C=/}G'gKV0x4VQϖUj[7jÝAi-KCtbҰͱxu\G`XSf\"pANLBQV
9
Gh!~$0娎aӭ#XѩG;{ia"
?qb&Di0̮X{"ώxAOI
/*^3\/*0cDNco$&㣀2oHFcFIRlq^.&EXȌގ#
Joj5-?wxGC~hH/zO*]Udl׮Xė7~km2$b
/)p9e0{WP!b/zpX8)}|a3#P6P3̄7F]jwf9fh3c|e,8.c*6Öb:Z9H$N%MCun1ohӆR^)FyϯbӺM2ts}:-0'2fT*{cʌH%Gn
7fyzGuQÚOm΢Wx֏@if-61W6!zOe1(OJqvͲk(ˬbLs}'(':U1fvB(DWì7:L	&xBG`EbQ#YenXxXYOXATa$?"}iɳJ;ީ!7|I0( Hq!k	F9flTrS$:B HkA)6G+ki-
wv"SבPX*0gd7Li\RU8	>#phC2ZGĜAx[E4BKTbk2!l0O n
N	gрF 8
oY#bfpvY{9X/~iW)n3p\C1c6rܷdH!wjH" 4` O; wjb%NBЪ˱9(!M)31>A%N3r੹X͕V
<U{R5DͲTlT*1sg5%1YͰ١OsB O牀m?
vbT.pp-Gq>/-?k:8^[EOT=jAM壝iKdViILgp
?hu1wuQJ8S..u %E+ժqcdmv(S1c]8@8WnV_dlۺ<jjJ$+$f'~_-r\h?WvVОbď$f؏r;yn$':VhwI\cCIB
GY?:7b82
6V!gxR1ڱ2t2jüh+N%`~]ي˱
7*5õ؅p?n,sHV<AOv>8k>9C!vpbk:`kΜpFv3ixD͠MG6!4Z v
<3ȇBr5N$#47MꐤIdPs16+/J'b3쑩g'm{di*,=.NF>üub/-6LV0EQ)%ݹHUO,^0b(Hyiyg2<ǳ|YK1U:
,ld8ߍI8m?Ģ,ޏ^	YZ?ϰ~S"#%&֗F_bf%TJP@S1J#'gKZL"IaVXR/#jAxތ&oۘd1R
3LpFfKzoodm[x:{_Ǫ{7]Z܇B-ȶye7$=}7۳D8)e$V,KUG}g >B!چռ"kD.EtFXcX
P8ʔYvUVj*=|vT+z[ZJwԭ^~fveH0Unm?	NҞDmFP,EpSD	D)|1lL)sE:K^
{~[,+މ-"XF)Vګ=wbFfخH᪔ye
%y-]P9xe>	?(U!'Z,$yITU,Ȁ&>DST0Jc:pS)=ʬ
bUk͝;L2"Oc]i4-J+'CYoa6`ki_/PKr    PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/ASN1ParsingException.classuJ@ϤmҦVMЅ EA(EHq?CII&"|(&E3s|^6M^A%`{\&48:@OUq A8)TēeW +d]ʾPM;v1(=qdwNq	={L<@Ji(iJ
wV؋0>]ŕX$G?Wdвt*ЙQm|T{`/yҤjnf=<oA[BE.ZX-RFZ_=/=7;Tk?PK5:    PK  D:U            9   META-INF/versions/9/org/bouncycastle/asn1/ASN1Set$1.classQ]KA=Ye$ViB=m!IM33+ꥠ~@?*EA6p?{w?^ c+Y,cªu2*{wھ+vwv[TC9C%$onϧJqQs4'LCIm3pYi`hT(jsղnuSH1C"0GVRu.=_i!WܩBsH[ȡM,%fNM)yo5
71i)ͤf~v+nB;HF/AFL$E밶D)< 2~K3xb)D~,jOƳ	PKp}-T  R  PK  D:U            @   META-INF/versions/9/org/bouncycastle/asn1/DERNumericString.classUmWE~&6,BP"nyMV_H h
Q{&1ll'⟰z_ox	y`><s{{Ͽp5kF:4D7!aZ~#9CN?	*{:#yT'w0SrխHZa>yyn1!,e<{{UxE:"+\bq^IW /&;\Jnr}//,.E!ma!>ɋEQKپ
1tۮ-i2x6E)P|[mtEs`g=˶R=fV&/&},
|bR֥,Q2#Y̕H!З<Y>/	*]X`2TӰb`_ix` tk
lࡁ!\H}bS1L9=-}*]\I*^)Ubyzj\yH烙Wtjp-@)|M5ϴ}1\+]\gܡT&[5K3Dl*¤^!7 qz (D52^୕6xQy2^6,)Ih 'Bه\J3Ճ9Szk-U

x^Xu]ǳ>j݂#*5bD7e<תM.q"}G6-zCPNtIwh3<`߂y hG+ &AХ3ٚ>D1t=o?qKǸ\(,pN`=($A8YE*N=3x۸AV::{C4hWp3HB0\OkJwOgjy̼BK M? Ú~TeAznCOûz,:U1ʥŧ
~.<
BG0|<,Ll$CAcvlL;% PKFWU    PK
    D:U            4   META-INF/versions/9/org/bouncycastle/asn1/teletrust/PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$2.classUmsD~.q"W}q4u8NHikL:i8W׌#1_&Cg(/1p3wg; 
W\
ᦌ[Kf+UʘC&U˅*Aqz)aJ,{dPgm41Tt_0\5:N7$B/q!QvHzM~{/%{q^E .^Ecu'NY| 
<<?9]'S y;e=
vPd|g, Ø0IS}	E.lVDqZj䫎	_(X=	_2:oR(Dd0snp:p[MoꓩrnyVq-tumWydtr<W
\,1<UMOsO3<30)Z熞]-Eaw lپkE*1u4l[׸;
<PNw, x`Mv,ոhOv]gXq#/@Dy^WUa-yI]dĳjL	o/2"$=tGK"rq!kLv/ʋqhqD.j_z / TF:HS'٘gbL-}&)͹5a(,u>8r+M>$9?VzNMwQ;7j3ǘǨl<-kR)$V[#\8ѮC"R<_ctQu%$
7Xw56[5m筵k\~yWޅb-=K']B%>6/PK\d~I    PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$5.classU[oDl6@åtK7xۤ%)R-O.xo <x&?8ޤe,HXswΙ3 lܬ<+T[xhNK,WRVOkUqVa2*BTqVvnon.5PRnl
vl;g%qaOV:0mَy/iVni5Z7pq{Id+ 5[_x{Vς)AN[l8ޢQOitf?0
La>ҕ7]!
MS
d@·}^TwkX23p)7Lv+ML 	3t\'`^wvr"J׷T\&|Rm۴r?t,۞CE (]IT-0{\HO)KppQ2fcܣѶs:򴥴0KZ(9-#),.#n)U+n	
<Q۾d(iZ 	RC]CTy|h@ġ8ƱaX~o7XQ;n3(xiu'ψKGłnV'$b~@y?
Gi~\In_t9b9ɧDPǳzZLP`܎nq܍+Z?y?	u$XE&Σx^!M
g`FWIΎ_X8ܬObzzܯϒY/BbetSO(~9|s2~dGU4Ŗhdl,?jvյ8Cٕ{>)D}|S44rGStu^U"}
PKw  t  PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$8.classU[oD&tmKInn]{ۤz1-JRFU[]E7+^J O $Ǜlb93s|w3_}
*aU7FoUXRU`ZEW+hUU]d8qwJ`'a8'$݊{mI'0ݣU>H;gy/iVn`dp8w<I3qq7[z{@`[0tmm(Hvx/ud~g#
vpjË7|/R*T ^
7tL7Bex
rϱ\[+pw.F1T!j$
zq%p$%7
SXԶpa<f`	#t-[A#Dh(G*GE*Gǩ
vMÌ2kx7j1aBZ 0H;87TX#ߴx`Q#px陶Y<<\Xl:8}eY%mUP/4cf+FV<kPLHBOT9 ;Ĺ8Ʊ2N样ֿ	DG!n,k\/xNNU#*nV?O:IJhnt?y83AqQ=-Y#jMtaU:I~xƠϏNG8|-R<?$	bs(4ua^8%M^&yb%=TF׫(m<	Z˅X^)_ve8	'Ѡu	0&cnkxa	N_Y]y,3LWr)H7E@cSJ|d;EOe\IڟPKɧ    PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$7.classUoE]Įch()uUޑRzKQՖsu3;x/&HE|<Q! 朔8 qffgvٟ}VX*U\F*X`*fZ,UQǵ
ZD/è
̂XU]+0{K4`'pKvnE}u8c1Lhh.i=&:Qn?nŝ#u
g>h74Ӱ22׺IR wô^V܏aI;#'ٵϢI?zIw#v5U
7}OoH{辧{k!7\ay9(ԥkzvkX2>ps
SN8(`LGZrL+dckeFh(G2s!u3%LaK,6*puƄa:`ҳ};meYzB [
s(KCH'"+t8ިCܬǂu
Bӗ'.]S)Ex4	MKoیxҢdͥr-&
=\*b1B	sЕ̦Cfn*v<@h:asB֠
248
s깜z.odmB8`GtN'β[()ҡhԊA{;n!'Pދ#:X͏5^<5aqQ<6ªt(	?ƠGN藍޸<sEhGQ'4KHy4tBkĽMF>o:ّpGQ7SnWPxYYY-veG'τįhм7?"ID%s^|VVgWq%|}dg
-MQ~i,cJt詽8EPKm    PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$1.classU[sTĮ"zq4\JںT~#mAWZIIqN]3Hr/MQ+'/1Tc9g~{ή 0@U5qCg)
|D&ѫ>mha	Z(
nC.",tTgX:OA.G)ߙ|7fy$?U[|(et )1rLQ[OM䀗</,"U]o@xMGU|wIC)ICrPQ:g(ne߀-b3HkFgƶn+Ʀ몡a*k(nd)q"
|!bwp-j)σqR845}=tT5UҔDi(oG{gfڑہ(U#q=tMC
USu#<-(p	6	Sm/)VF>}觫ea۞9QNAj7pm[g*Gpgd+ن%帤lU9d}3J/xQץ~Ug8I2:Ꜩ%ᏆӒyNE2K8L͙kC.6~WUcxsjuttWo2陋Q>kҙXB^$2#O49QY:>٧42׏~	Ç$J	u\))ScU;B_8F}5hjTI۫1_v
]26q2yT1Ti]G4?a[믿v%㽝׸{K^[u^jt-ݣ@?!]w:]^v*l۸4>PK$a    PK  D:U            N   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.classX	xWoB2aB @X*$@ȃ`hRU'/{3yjVvJ]`^	J]ZRZںեj]j]j93C^^ 	sϽL}ԃ d,p.p;99<܅%VH	ޣ^ܧQ$((qpBI	_`/R0Y+`|M,%<`|C7x̣SP1KxBAc%
<;c=}	?PP1OI5#	O+X1?=~9(#gs^2yNF2a0Jk12⌿a3^F2z_$jaV0z\F4#[+k*J@iu̈́
iq;QWnCpfiQ֭F3ҡ[6ʳgꪬ!3i2UU˭!32525i2˪*!32h&M2=fa\}wSmjnG$p$QﲵN
%kAY"]6,7
%m׭6(Fg+a
Z\aQ<t/+AvUь@ml ۦP'{t
	4["ReF7J3Nj
&ֻ2ߡwRZhbTYغ֖-ԡv3LFYż9y]BX1ڤZ{sW4oY+OvniZ/-ѬF=ċ5;wEkGɖkG^[=dHDuKæAbŭ;FBz<bT1#
EEi5VHo1MmV"ug(SNK[{^oX*^?$)0%f؇^	VxUUU*>(>5,!Dţ*XF\;l  Ӵ㶥6.#^+"GB˦۔q;)+U{U*ǮLEdUDǮ]v
s+TƮ]bصTXblR"~TmS%.@ԩ=$d:H"Op

"<Dy0x0y86	zx+%ĳ~X2++eQ7BZ*:|AL/r;.mg3XmɅlδ֢u^JA,:{-nyޚ(;mK$
,c<)Ύ%haŽ:S2tkRY
evZr&SUEE+Ba1-uAi8w3rĥDѴ+Pm,#lݺF-dV$&Q=4fw"&pJ޻Q3:"t!xlSleyMH5l봪B*&0rG] &A>(_t#>F}4|4}GǸ	{|t\U.Nޏw7P攞cD\Mc;9
wh
!(e'{>'W~_w+5Af
j:}3}wYG|!9K}EgSP+u}OWYHkW	[v<ǁJ
e}AAYGL,+gb`vj=bŝõxop-aˑIe@ Ѻ9,׆rD
 ^E+ȗ0-(d:||&[;MbQǜk}nqY֊ب- INxekiZ<I
Ե
}	~]i:ϐ'N
<''q0$RÌt݈nדuNԙp!^t
(9T_r1	YkHOqS	N/)$,IC4ۏ3"K}˙)vbC
$0yIOaQXb$QB	QIPNI,M!@TE)T,)TUĊjKbe
DJbu
kz}kSXGTC!.!jcj?5*(lrxCa3`ELnuFLA2&\`)9Z;X;`
W:Xj&@sv!A&;80%N%=(P#Xшg>[w\n>〸׉q[qX܅n8=xN܋}xYOGE8&G,IT< q^gp?
u>Z}1c%>.qs}E6QLK'CA PK?[w    PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$9.classUrE>lf
AnM¥kaͮ5;A}@@J| R,AZTt/M8
؄&\:|Ҁ4`	3Vm7a6S-:&\"	 	p;'p|7o>΋q9s"p^;ýAn6*yg7+vn۱fEy1"zf6@{F
4
nzs[y?*F[Qb{dtYz[yt]ق.	eXYwqD}U!&Q)W{J4BέЌ(uptT(·*Һ9gQ>\#:6%46Milh>hy"#4&5QPYc8LP7R4I!Ձ80)R-JѤ#4v!رQ2ZFN).V4|"$D&Ujs)#c93Nz#SFXic-W|0"L:$^*I}"Chm%A1(\Zis,(hM4MmZp4ѱGv	|BEN×KkVKoyAGjYFKQXioV}gνX~N^`>O,w`㶿zQChqUp*}m7х˃SvWMఌsi{b\goM\m$Cn@x7q,߇E|NAM788q$8ά 3Ntvjp>X0ӛ}z	3fqPHZۇO[ u,#SpLRdp]5/͕0wkm~	מqOo/T
dHdIL.Xe)W_PKPg    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$13.classV[sTE	]6+ds˙ :W
`)
iR]kw|'Z3ӗogz? $\o18[s
>myguBK
uhWZր+"p(5Zw	LjIroPXXV:șΤM͵旇Ơc3zg]v)lK]!pҷQg14;k?{6hqg1ꖹWA8R˕xJn;_~ 4`f9y<\nqxh7'
EER.	lT/(N
iJ	TR$C,W(ŘF͢gQF}yiU[T&5	Wj
 pmH`PB3c)K!:rФ1,gy4<(#qNQ0Y muB0׬.pQ m|&-S:#5Jc2J9)`./ufi<ho̅"jv]z-w	
,*SYsQmkMjSL0RQhƃ3yF";keDBxSEt,kx0QȔA[eA!UN&e0*fù1(1Fl@QS^8=sRU
b*,NJ.ǵ.E3<;DڄECM\nBԄ\5c#/a('En0nZUi;ϕ{k7ra;@m(o?gV,Z++xV#~ƨUr+`G{d덉
u!
@{og^?շ	}-vs bHTL$m[nl*RG4nA㗿v{p<҇dN&C4|w$Y^x37f[ޭpҥgp#kـ)	5G83;4fu.E8/PKsp  %	  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$12.classVmsEI.rDq3+DrsYY;ko_*?e{Lڞyݿ p`W|X0[j0W,a˩:L50	

NS&0ڜG2;luwg37.j&yYh9Ϸ[^v:(Yk'-v+V7	yU;YGykGIwv;%鍬m仃UnH8鵻AO[U
8o>mĒ !)I%Lr'T6`)Tpitcj6NyQ
!
		ǅfH`^t0OV0n3,jx`bͣ2ǌfR o2x!,J3:2B5JQFPJ$2ccZ*'q1\i %2B$)v>``T%Qh)w62U;5G
')0ͅV>P},gPFz)\(rpH(RE;\]2Ø0q\(]iia>6%w1qx"AC
s#ziD<a,8 a	khU=X:!~w+	`0K)|s,V7m֋sհVlgnȶoG	Tnot9	ͣߔayӾ+_'qkYq xxNSk07.6_y%]:3]<3/~"콏-vl~o!RI
\CP:7F`t~ g0`jSRP,,VwP*5 _Y\",+.\:DIж<&V3|N{faξ\~t `|UL3#Vo mG_\S> PK{  e  PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$3.classUkoD=l6@ãtK7mR
MQ!l&E 
4(6_6dA\3ѝ?w 6q5ܨ#|\MVkXc寍:SC*:n,UE**$A2(1̶W3TT.m
3:n7$B/q(;Qf^:Jz?a\<^'TM˯@_Y|kq/Toitt4(SXCwbJ8Lz4$m]<OpX\Y܌,ӷo	iF^H!;++e4«6qnVLiDgj$gu
8nBnh4= ܑ)nQJVC.xh+F]GRUit儔QʭK{\(s)ױ[
x=}3pmr+
HRA
Ho
f(Ǌ䛞Q).,K9X&
DљŰ1%t3_HqEkgXmoyTd͕WtAARH䋓գx8H/M=yvvDT^%)&?K#$)lk3bL-={EJ?Nf߿	VcU,}T>Q;z+u%;?v~
a4	jcp9s٭	*/19Of452kc\8Ag*h
iFq+xXBP{mzqv^Dc\y3}sbN(7CNm.;J|;CW-ꏟ PKEPc  D  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$11.classVmE>eo@Q9d_ n` ~a5ˮCW.(crHb9Ldkyf @6S-8݆6&|т,`
{a~t
pz@ph-XohD0{y0TW.EQQ叆I3/*f,rh9'հ=ͫ'~ju	WNer`y'|2"M	qڠ}gY8)_+Z9Y,֧ D8d0ڸYTOMP8"x3$hj2GɨArE"hT	.c$)cNU>2뤍ҩi(`.`prDp]Y#EhT~O&rB,1*:Eeg*j&hƄ%*xri%˴'{[bO]TJ+"Dg
GmЄ[xp[UQ4Tiǌ1Ve!q|FAk`!8I3`jD1<%@iidLRJµX8wCK#1ڴ/8	KӚ+˂R!twAˀg2\ZVUmL9.L	r	N#|̄:518k11Ӿ(e&Gd)/$#]G28_!P;;VfT3UoY ]B^׋/H~L0uhw*S^Z|֊lUFQ.pd'=|Y~:C:zW1"(;;_u}R#vNwq[EVh
` ;eߏx0AoӳqDƏ~5N?.'ߺŻp*}C}IwD iiQ. K (Z46sw~fq%??ZX^i}[NB3M9"sH!(2p]npb%$FOե0wsez	ﯜ_y}pz|퀮D~̤;FHħ3_,}i>PKi˄1  e  PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$6.classU[oE6qbwczq4\JںNz/7R
;IUmy8SYuDAD#?
qI1XiΜ9{s|3?-\%ಊ+a
V*XU1VkME
+h]U0U+*V0
f{
J|#9ݖV= B7q.(ݣQ^{{8Ju,n?nn;cug@_i+sf
V'!,z^_8S pv%,mɁJG&y쌓d׿b*8JaOz2<)ébo*pC&}fm뮩c<7u;,0
ox'pQQ
4ZL!D|g^]:hw=a9w&C9AY`NL xQhh36ۚat7VcIA1dG%z63X̱g>׸ckr5tXDě,a
S02
t*tS0` 4kSQL=rPޞĦ:)3vdN"v,k`)xI}7O#ӘbAw;eOt('HyDK'q61YϳЋo.JOǳz(<"y55$?Nz'sBP6|w!9~3MASd/eмez&Σfэ	o>
s+P~$E$Q,Genf1QQxyʅXmp.L	3EbuGY"-QIcaUͧ8jgWpEf;g/*=.R_Ǒ
yp/PK;  t  PK  D:U            P   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$4.classU[oD&[geҦtKwM}]_H)cmRFU[thc#ۛr@Hxi"*QMھl	[>3s|Μt毿@dre\{2!*ZUT*cך:WU&*R2NÔБ`1$&lup;Hhw[d[4LąlVff}e;%{q^SB>Zg8{YŻYΰ:3MU!iL(hP%b+[d3ɯŔpi>HxHkX*7T=25tϰxٞaZzjC'TqA
!C+'m}0S$y.c
5	|ۉxhVjc.&hFбXZNoAz[NCv\۷ݲ47kaa[5
qGQGyM"+2-tWuP˲窺wgna7末'Lڔ_CX'
DLbG6%t#2 U^OyCUUf2rȈC՘:;)D_dDIzi/ĝGD:/M9>,rhe9bRhW NߩN6ƅP>{EJOIh
W~GGo]s+`ӄMcTpKGQ;73l<܃<-R)$Vە}:ۋh!~|s"#-d[2<F^;kpA{g;s/?a?/tJCE+tQc
N|PK~1n  D  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$14.classV[E>;eAQ\dLUץѪ*,` >
2f1=o$>iLI(aEV9թS
 .6 5Dހ7pV؀&jLfl:Uց5$UDda@`W{:{b{{#3"(co2*;G{n'uH#҇ݢ{//bL`i;x:
3a\ymQدL8bcz%& ww0
Fpr^!m!xkdNg./1A7;Nq;g	
RxoSq"R `[(fJ1fh="ec׌jeN҉AyJiS[p'_D|TU.
y8{gX8JJi3˰RkT51ILJ%5BG@pG#ѺT

Bi-ZROwh&TTR+hNI4*!)bIJvDHxBBޅZ`(!ST(A@aVygROY-[!*RR3rYg%K]kԦ2[%bjyLdT9D1ʸ̬tI#{^ka}`Ή)3.eOI@h1țFBLrvGuXʩ
>F2紫V4)(<iOw2@#L|@bg3_v;L8CȋZ^	sQyJ1+Uεsn,afCۍ6w0?x܋5z)*:bnz^ny  n `bG݈ʴѝn;1hu{ T.:݋
`9]
P#ptK4&٩Mص܄ǰ4vgUbilB?W;ul~K!_5&1-c±-5OŇ0syy	/]y{o.Y~߿<[~R K~DC_Ù)85|͠)|뜂ӰۓPK<4d  %	  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$10.classUmSG~<.HA(wpx36hvvg)@,5cKw$' "TȏJ%luLO 
nTqUqKeܮQJULY,U1;/CTqV!*1L:=z)C)7:t`'Ͷ.L4 ;RZ;^v2Ȼik?_vKGCuo'Yi6`X=2D뇠,{erP}?کnHcw2mrakwNoo3_wː5cǱjGZT%#:sMȄ|#жbǷt$=ׁu]8B#(q/n%X!j{4`F'8<1(JlY;Re[ڒK\Ҹ۾VBǮǕGJX@dI(?tiE3dYm.^
e
!~N`JFq3ʉm-c'8,P	ѦxѾ4G=cmxZBE˳Uh2Zϓ"VP)kE澣]?KƎ! ZK
T%Jgay!b_1
sr:oK3M3 Q%v:,qN+ZݤzgTX덷SV<K3ʇI }**~5	߅C0n^U wz	l<Ze(F@'qF5bޭK(q
>Q;ru>!9YL9p'PgƎ1Q=Fi
&Lp\
fQ/o(Sw
5\dcq-b%\M%joטlԎL?o5_<Vp[F50͚D-kMćc2Q	PKL    PK  D:U            T   META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers.classKPG

ĬA	MKd]D%2øYf,a^0[V%Us=ܭ|_oD_owu;߿s@?4[ R3_xyKe	yE\p1kLO\,s8T8lpxÛJ\c%6w%c/C7$>f~")3ϙ_H|	_7HER^L%
VeK~!/U<m^<L/;^^qDwםxM7)}r[;闭܃%=&̩Mvքs+V\`VbakVǶ/}K"Ew=pLpZ6얼9m؏3A(3dkPiʄkpM2IP&\3ދ2d<|fpcG.
4dJ|'Ysf+ky_E\Τ˃Mrtڰ{)D4&ķNތ
|
i`X+(Mp(JhrLɀS&U4pG;h"Jg&80,)jasJN*J̲
Ռ6B5#؆}ao袃W./=VB6KQ٭\^a_WU>>D)vߎLqXsDsT)qʹi͌IͳSӚ345g545/h.hWipdWH/*";~Fm4Jͬ-Jc5V٩uY#JwsmҎ*:"{e-{:b._~]Uti}[kmO)=zHӬ(=^#JX*=z\i55dM(E:h)A7,q%UD?O-7?o͘=}ӞuXPK9  #  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/DLApplicationSpecific.classS]OA=ZKVur
&$D1&֧e1K>Ԥ??靅Fnrgι~~
q
	
:^bK"^` ;:t֑Į7"Җ{0jCǃpOV<)Vw܎r6V
<.TmHW.zt!m|?؜/љcFvuIQqS{FjFGW^IO^"5őTبK^WrK5	.?Ki][+Hu1lTO^sѐ"LQd)D5
QӴUCntkjtZc"='fu.̻-
Ier#5fH8+gkZgG
w26Yҹ)JaPWM=wQ<$BwXӷ`狱-ϳ?"<Dd;#clЫHbW$I|t(bnDvJ_!?cƱ9:Ѻ&ripd}EHT.`">8!:3CQ)yFB=UxN!PKh I    PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1T61String.classW_f~޶@+U@ڢ sSn2:]B%&5MQvߜO.s>쏚;oJ-Ǜ99ϝ{ Nk0$Bpc"gq.D1"p+$e_Q1
E|o/is"	 t)aկ˹c&FIJwOyCYT䜭r9chbVe*aMھ8CmZFΖ
Ee8I^n]6#Td=ugܶ4#MKj:LVJIiܖ!9=F*Yius=Q5CO0l-ێ%@d*>oj(^WGSlsѠ
EoRb3Htrwf(d4A~\1ÁJAlPLCKY[#Gu
DR"WuE*fS{9skCԉcB~ml4%qfRԓm!x.C,WD
`"+aZ\`Re$2[&t]Mzg 	=8P7M+gT{ΜU"/a$A%,5KxxS[xoxG»xOB\>rjH!J3/>8F=p
HI8)bh@zz8z,5DѨriHQlTGRg*!78囵L|V,K^]"|I9)V-˴.a{F/"4{371I},8qSW"bHeXhn'MZ9!nOESŵZy[ӽЉtmg[\ތFV4Twz;mNˤzƆ-} (A` I"	g8^4[-hҤʖ`.p+5Qq#2jƂ9z;)+i-
M|>pؤΨӲ16ٻ>#RtNS>L˺>NpΆ1쮌sktÔQ=݇0\/?}KIgHvf`	?˨]':Qs"? i_GF~q:%]u/ıۉ^A0}RxttL(IAj)BMMę5-gx+pi$<[A}6~CVAe30$8]4)ݭjDR#	_121F_>
{ӕm4v֞CWQBerԅ>,S]>/Wbgp6	O# ]lo*رZѱ_St Q
z4EvO{S^9vFUUGBMB
tܠU.~pϔ4k/ʳΫ	
8R.&b4RN8ph uw2b+n(Q`>Hog?_;|Nkn&(i/PKVN5@  q
  PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectDescriptor$1.classR]kA=YZ`>EIXd2S63qf>XPQݭ+n̹{=s__xGe̠;(n
XBi_2T:G1èsCiaIF}i{SޚQ{4P~ϪkcQ$Z
|,#t=j
/}[ZNګN\aoۄ)%C"W)wMb|ҿc)tª7ijY"6zؖBqa=_B!VbOio,)qW0
,0l^]q!lk-mvMT|x;^a;PvU\ǘ)FiiB8g`h0KsVd2O3Yo(~`\HrXXdd>??Bī.E9~lPK0p    PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/DLTaggedObject.classUmSU~nBD
MBQ B[h7%]	&Z	4oss}_	&0[lg3C?>$ЅE|胎%6Y6
VWƃec0$Tl$OV(rtR|1v^Fra.z;9/dY3J1+VAnVӲk!hKHm&렍@_<+B.U2
஀?eo6̣z~2

|'yd[CEZC
-t$+QN%i.첖Z@Lh,䢄ޒLW|뭂mC˶S-P)mK
+ɣf0V<d6>vq5Q	識/u-U2rj_]M4zU0q6liƔO@g>{e3ӘQa_h{XН}Y+,0fωr˵8+/ט+nmԚ*5g6*ǟ孌E.R˰0:vIH>"+4<,
 FVlkߒ%¬r|Wlٸ巅/,7Y%}&A$iomdY.cAOc2LvFSPশ#͞@<(Y\da!I	\͔>tS(N daLP.2Nq8A;UP+U@7x~W
cPܿ8:UpB:;Zi/͎TSF(9|cј]ϡq(ge<.
 nQy,9:F>GI")	~ᢏSVHwZzrJҜF4c1O8<=?<a%aUtchBU	Wq%@gol*)GI2==)8tC9E>+	Dem{|kG_׀ty;_ >4}sT<KmPo

sN0Gu`]+Ԍ˓$/PKܫh  	  PK
    D:U            0   META-INF/versions/9/org/bouncycastle/asn1/isara/PK  D:U            L   META-INF/versions/9/org/bouncycastle/asn1/isara/IsaraObjectIdentifiers.classQ]KA=fm4b5% ']ed݅5gEAA?lAgǙýoϯ z8PPU` 5)0|>7[1(<	W{8E&cY07Y΢>AG2!Pd)A<3lZ:,/"$\E.4csAo)%flvDڞi{lu죡 폚)tg\j+%HO_5GI뷦y"֠%e`H]RbQ~3]b/ ȥx#,& uDo} PKE    PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence$3.classTn@='qMBiC:nZJ PU)R
gv>`')-[>		$3{5&´r)$Ǭ
-EvJ\
	**.X`P&spxkE\jF-;cU(G
_+i$0Dݪ`Ȕ,Gl5+»+6yRʞ0ɬ6q1ݪ"倛7y=QacSu|M&˫Oڷ)3{Ee%IorJ!z[NmSn5b8rrv+Sa[P K\%z#E޺}_)Jچ͝o@;0݇La
5Gw@q$h$%-P3<-݅$ef|%-E(Elcz L?@D	EW}A~4(
xO8sh-"Y۔F9bEFLK{TʿEo?ڢe2qd+"HXj<D
|E|DV7CJ/83a[D5i٘:%:xP+$6}0rPK/zɁ~    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/BERSequenceParser.classSkoA=ka>>h-/ˊ񑨡Ih~22![aUc2Y-ޙ{Ι3w;G,9Rq*Ȱ  "
)iBŖ]=m;m0$
S׫v2>6VVQϖ]GfC>a=5-}ΐ0^5P0-iVWQ	X;	e'SDa$lhmI.܂kbFc6M<B=b+xW䭁àW%>2,wexG(d}?jXE5ಆ*1,Ink^h:oЁ\1Dh)ckTCH#ҠG\IbJ&l٪M/vשt	hZu*ĿY~2hlׇhfZGLu΃z>TzAX2RѨz`>ъSߋGd;Zih>ׅd
yU\\SI^|J]"}FS]O
P]{x:W#۔QnybXv$W;zHz&<FsPKɉR    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/ASN1ExternalParser.classPJCA=׎WЅ+W.*Ԋi(3ef*(1V	!9᜼^ߞ_ \kckgO$ɨ+MLS[Ep+ǹxC^k/*,KC68P<B8ZER`)K:zt't?sگw0cL''p=v8>M 6PϨ"l5ҸywPK[PE   X  PK
    D:U            /   META-INF/versions/9/org/bouncycastle/asn1/pkcs/PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/pkcs/PrivateKeyInfo.classWWg, y	$ڴ)m,n[C@uXe2Kfg	MZ[k_l56RmMI,)Vѯ?ţx/twz$9s}3W ܆_po\1悈'\؃"2a`2zw).lCyGDtx(}
gOp_uI|_<%ixƉg]םx;
f:OMB/Nx?K"^v-3IE1MΘ	Zx:,Ǎ@[_f(EoqBW'eC9LE#1]5FNֲ/
+ WF"{bE&s(a(q)M$jTwQQQ7d-#eg6Z8'@oܐ6#5{c$SՔD<)	X&ϐc]%,OŹ_&Uޥj_B1.!c|Vo?48V&:]\īNoT Y$G۽"^]xCD|X	2o8K~̄S(gr@mY5(.UU9x TMz\F7Egb"@㽙`xTftِo"T1&UCTnM3r%r1ƛAHoF>[u{`9	A/fFm#q
P,ܪjrTv[=Vw)n/xyr	(G~w$K?)|ZѻweeKwH؇;ɠthV%a$\O1$܋5'bI	xꆀS߲b䨛r=:L^㴻 SzR5umUWioOQY$%	mLVg+Zl)~&>RЯÂ'Ō.R@J~3CX ԓkk4tY6?h]X\TC:
gvSPcjHj4Ԩu9euəXucBB9PBP-j<\m0̸f;HS34H
@@'?ksS75=SY3o~)SF0pTXՌuk@uкƃ4Cbb<$7Rvr	$~o8[Cvx\E
8kWiCiuټPr;<!aЪyU)j|C%H_6擆yi>ish}nm,5,@Xm6gM61u:a-Dɬ0kct0>c<ډMg% I䛧OlpC"ā
$ʮ6 ?J|	uxД*/T
e$2o'6i $ẐejQO%s&8vX]>|h$}Qv3($zza`gP5_H%\Pw!d,0MB#V<B_')N5c	(aqPD.N%׎k=
m8$fn+g*r9*G}oe$Umuy>Xl&':h{38_Βyl[ZSZxJ5{5:L'p_}}ȳ36:Z[z;cw0yf鱌&Z'Sx)3Y稾'ŧуЏ))_zcdx(oeū8Gfpo]

%r!}#ET)e60Pf֕?W%Z<5+Y/zyXׯdB ]j	U^=$<+AErI,Y-+ɩSZ,hACtaw3)_N+nеNU)h>b~RC91Wu+#a[orph;;yzI!j"v%HtRE؝`('ZWO2nD7AS PKCIa    PK  D:U            J   META-INF/versions/9/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.classxTUϹSrPB "MCf@hJ x3sL	3 ""ukYZeeײ꺮u
{wo&2yw={&t=B*c]<ٔ+<x@j -Ly:ݔgg,lSk߁|S^^dʋKL{RS^WJ*Sڔ׀ך:zS	r)ood ; @	rvr7Ƚx~1=yQc!OI)S>
͔1s|)_ _4K?M2/+C^yM[@ކy)?0GĔL9ȗ
)3ɔ?
a4 ₸M4!} }!{gb 4A`(Ppd8d22
24@24'@&B&A&C@heTH9A*L2itӨgLpiA11y4j:|!"PX`Ŧl4&H Y
YY9rHJ*jHriX`ii`iEFD
wP* DmjK3
YtԞjީ5%-kP>lӑֈ%Edʪ]H".EI,[I7jvK,\U yHL-kN5S'" ȔX[Wt:ΕjIiBFN(UkBuF:#`OTH?ܾiKv SEbZ_M<\K==p骞pr`Ags7[X;'|]M^TUlWmK$
Uvr-:J)Ñ6;QA{MiRbzH{
e%iUzJQJ6]Dӥp%ET-nkUώl<Tglgx{SCfPtЎYhM8S))J3:t3LVJ2CxVsWNQ+V]W]ۚ#hgKT2@EGf6J6$f.&Fc$Ρkd3mSQ:WkBN5&{]X>b4$aDt-c;伂-
КPg]zK3XU>#D߷HɦSQǰ)%NERP2ŋTdTs
bӘL4b =UTvC
YŉtYMZH-_Ts>I=EA3U'4	CXV5avCtNf5bt7mo<`º4yB	
Bpv{*Rv+N֏3jjj.oEy6@߉=Ӣ`:3jMNDuId-[ViҎWkG#dW6x;tYoEf.zh$uOro@MXhNh#eωyM:Xgs^Fڂz,omޮ.S2O}1:USg 9֎~$P z!wfEұܩ8<JN6Ћיݳp,fɉtz0ܠSWVev0ׇJ-8
Jf 9 5ojV2NG&o>ApuDHNa-j*Q]4Xg<^Tn{-hIwYҽ?z.$>:Qnk55jۦoEOGaڊ758
j:l.!HG*7nK-V[Zv<Ωȭ'[ȩEX
t+'E3gjJ~>ﾼm뫞I7+nuQYM^4'5j%|J|(_Fzp
{ǮQ!iuЉTPiuQ@EP4B HNnkD_׆H^kVK@3G6.vQ*bw[+,/z+*gy˼c7[RHbF#"GLGLGLG4x_223<#[kO?ՎZߥ5vux#*MM|o B|#'$R5Sq*H2ݐ"Ib$샰/d/R\=r rJzВɁ{ʣSe*=dOyU9dOy<rhapH)d$dd4do>q}!"4j4^_G8χYSi&:~ 2VQ
˳ҽYOU|zD*b%
2
2]=r΀̄ۙvv9GwAѤAlԠy?R9*(L=PBHddC%u	Fa&H YGB^p9p
zLԎ6Jg#&Ԏ(NT}hюf&
iCny_Q:ϑQ41PGh'v@A$
鄬lltAl8n<ǡ@
9.bgt[~g'o|-I+jbn	7Ven)o!.#-$7_Aŷ0e|CG̏0?eb~KW̯0e~GO̟5SL`:.Y4}}{1=~b @ `f	ss(ss8s9997ssX83'0;#$&se̩rcV0+UijL,lÃs5yL?Yǜ<Y<\\\ldlb̥eÙ+G0ddbfG1-f3筮EmyQP!Rb83`c&)f\b<9rq̭E/OOp;\1ȸU8vgF8v
Qk*{z_b`eUvpeG*;vaVv>ʎ쾰);^}	1>Q%ORɓ3b2'O՝? V@X2Xݷo尺o^X7[z\z\UFT\
PgfL.1V
'v,Z)!FT"j
Ff#?Q٨٨Nug>uGpA6Wp
".ΆKTؘ
SaS6Y{iF,Ukr!2rD}<hDёrSQnV!MjD	"'h\6헍ZQZevDk`*͈hcrXBȈb됑F)DiUv`7*ۥfh5˛2bc`_caC֌hW8˞ `){"IʞkeO=UVTNW]۞<VLX`uφկ9U=W;yqv>ww!~/Ű^
_` as+aL\GeMkaV/R	fe3;U`oW;neɈw{3/qq_F\Cܯ&A5U!V͈G=y<#~Vޓzի4^;-<ϰ}V7nyX?`uc/^/Sue+[WMogQnz8|?b(Ɖ@1DTSb1REX	1V-x]LI*1EL51M<+W\0t-OWt=
t\LF-KtYItG~<Qg"I^+6*'768I$N3(q1Em<pq&.3R
c8]\m\,5M"c)n1v[~NHqc1]:j#"tlO;gsKKū[ś'G'O.wsK| u;nWwΖ#ȱ&9ɹJzڙ[)`9y;uΝylt>)Rrcr˰Tq1WLfu2:LvV
6JMrduDFns"Ov+Ou=&Os=/p&r} u繾~*w=R ov-9r{wW˻y;-soOϑ/OwʧO/ʗoɗݟWh.'PK{uH  '  PK  D:U            G   META-INF/versions/9/org/bouncycastle/asn1/ASN1ApplicationSpecific.classX*q"GQ$um%nRPhS[G,I6`llm
+N2
{g>;GVP\]]ysϹ?{= Ǉ2,T  Òa+Bq8<()Xc
2H<^/3q=IWzh)=&_U5|gߐ(`KMLL'x,?<Lg02~`e\*8/?c.TOEnz=	G풥bTsc٩3u%慗\Ot!!\ЖQSHacŢigV(t㼡HΑS¼pfyV/Њ{}exG$$۶x䴄N3}IWIٖ',%;#s	K7m}VntKQ&uQd=$DUO+ccvRs\Hg[^;A"`A+Hj&m^f_2GXP{ah--j)~*WOt
Cvg2>	˼3
g%Ѷ`itͥ#%#Q
l}\FXyol,K*K^e=RR8<NTǰȭȉ%^Zq|0s
<JY-k[E%+-pDtGw->6qj-p
e^/\1%k]L\=ݤɑ cN&cn\Ƌ*^*OHװGՊ ag-iys՟*_⬄qh	-9wc7~+*~ߨ8xUk߫F7?2A̳6|Lܯ>e15	Zwy+vl\-iXjzjf⑙sٓd:VH*@F	LC*fΨŜᬊ㜊/6es{(
lyI^BqH(7ѐi@g!f|_Ẅ{n)|Wey.xbq.sm'*'jy]Г\̳c~b(6OIT"*a[7Ͻi#UMBBs@ojX"7В SZ+Ya.7%+QňzE)6	ƗnVi}ݲTbP<;@[ 2RW2	d/`W+i2;5m/e	ǏH_O@F׬)s3JQ4akv_]'"fao6	[Ev
>In\pOsD='> %DCLKѼ*:"r9sgeVse(e^ZY#;K>EC&:^
w]u}dODz#qBD
hl1Dlz$_f|pSg4qʸ*_?BTs/=12wܽ9bh]4R8@wW9TGs
	L!]:ܺ!dI0dCi4 PX8G]9n{6Q;4Nx$p\7262ȫtwԡrL=>Xo';:y4S.60l۳D<v_$z2vX46\ŮWhе'P#Q2v_kPCW ~W+{jGPEA4ݱ742p7Ig_}]u	Klyu:FT\0z3܁ w
㨪8Kjѭ/*ZKJ
M	J6P$Ly, A

SQw5ק_PKcw  c  PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/InMemoryRepresentable.classmAjAE$Plf*,EOCLWsP!YYPT~o fxэz9{ޯ+OKrٓQW%+_I+8]jNHGbٓS&fťu-Wl
Y&Z$
irW!i+mz("4no;l:wPK     PK
    D:U            /   META-INF/versions/9/org/bouncycastle/asn1/nist/PK  D:U            D   META-INF/versions/9/org/bouncycastle/asn1/nist/NISTNamedCurves.classVkse~v.*J$%MBom(R$Bu,%M
R;E+޾9~utt86!
:99}7_ЋA?&hv1L84.uQgؼ$2cTƳ.<9Pg'!#ɨɸ8+*cJcZFq^Θc|Aa2d\c|Qu7_qe	HxU!HZ#s5_0Sj6$Po8SQZ@]86FR-5cZkxUL#EƬ?-艅73_H,i	s"fJJ38kV3GT*|އ^_Q
55#Olj"}ZJxV#I1$l	61iϺ^GCrbDN[Jgw4)U- WUÎ-^Leuv8qteFB;bnNĦ8>i7
WA AoM!p\-#U1om	(x)xv|H:]	|;
0h/T1Np e'DΧ#39D
>wǱ	\v+Ǳ	3]A"8C
q`oo q4yȔTW|TGT@׺tNw\@/&Z]$ਫ਼0%5&)pkma,f\.a5O"9PtV96tl*V]Z[dkvWp
p+f:wKءMmfl,JJtYl,vΑ9s$]uҳ@?5Y tC=B>v
z}gϳ5Z6[u,vB]R`mEZI9#nP?ݱP'٥SهRP76Ihp5jt}D׿nth(WGMw8QJB&(vd(gZ&wX8,M<%*>Y9q'݉i,f 2`&p	mQd*7'Z_ۿ}l5+V]KMKhi0Zxqm-<;-bmac1pׂB'cnN@nl>{Hm4)%q&	n~:1bPK  `  PK  D:U            J   META-INF/versions/9/org/bouncycastle/asn1/nist/NISTObjectIdentifiers.class{|T9d
pGnv@(h	6JM75YH6!((VEm-KZjZjkﶴ|%{H~?癙33f9| <x^&u6K$22yHhJ~W5u7i!&jMH(c4!.3ȟkO~1~572~=cd|'!7 ?'/俵RZydrӴ%dWݵ
Z {jՋUGd?30`ecg81q6c4ccl+'LYC]S*oT0)UijNVĢLC<M'á%XfNm<I\*hLOHV룑I'#DLm]p-ߘD!p4e1hly٪d펽>kk왵guC<cr=Y>bCݻK4v'bk,k(:iTt.O^2{^YֶS"LWixvY/td,N.]e]*m_Y.N*|eIt@ztS_%6wc޿'--nر.۱ۮtc lـcHi3li,^.9yS>ĽOTٚXC"Ȝk~c.T)oӟH+kњӭ9J1rNՂ¸jW$,-.p(XP .V
P i
A*f*
` ZpI29VJʔ x V93^,UW;3˯vf_lp3õk=1{\ϊo`cȸq3c=cFƭn6g۝693UTu3S]LUvfZYy3Vgf{sfVߙYy3:3+og;1v2fb<xc7q}VFc?IQN/:ɺUȝ&ߘUT"Y7?&MwgC2;-3]A[fe˅WW	^%ZZFxZZu7	o$Y^AxpVmۅw%,[xpp^}ۄn>$)|XKQcǅ{O
	[m'-gOiï9b}itiCN+r
N{
mkE^ڕzQ[
Pڋjվ~VSXHdu0tCgXJfu8L##Eelhcc::j-Ԋh!սf^3BuYDuYLuYBu9^s2սf)uPZF=ZN-:Zn<LOcjչyV+^HS.~B"_.%EV3sGrq+.nWLUS}RPŨjTwrPQ.R 
TwA$ٟ3&
 ` cb"CPp,Hb6ű6|n&OC'W(!LL1LŇ8`c
0TqXJpjUZ:Ejj
VX6cڎj֩gA&:6ت>61vOn7zC^JW^%^&kZmě>=7',x?PK;?    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/ASN1VisibleString.classWi[W~o0QQY4*BHdkE@0a$	vW?.`yQΌCHy
=瞹 âcWV!.e/B@"1"p&@a"&q+"U__U1E4\6/I"	8/sRR\U/%gj7:>chMfcʂ"g!gޑӺ6Y95Q[ng2PTd]Qy#%Ɏbu>e:b$>cT%4]ȥTsT&9ÆKV>*auTN&i/t:°%?W:Fdt?TP:PZ4Qe=X*jըBD#47:A:鄪'Y0'2þRLGn;R1vIQ3Fα99EJ2fQyXY9;ԇ⤀rb+(6bi()p2c1rxkרsZÞ1&o&	2vcL-V˹x*&T̥i7$t:jU֬1*GN<.J؇6$,ಀ7$\AoJxWO	M+]	}u	CcaY	ㆄO#8hl1x4.yI$>Q5#>Gej	-2M8}3.Xji_KާGP5Mjz0oF
2iy|Eh֬=d{6;ņKuᜥDnN>6Eҩ*XbHe@NhNG
Z>&3ksrS+-#>[))CWnkBz]S8mA9C{p&6
My,5_"˦je8	HxȩfuLW||д*ycNuwZ올X {6as|3NtJ69h'	֘Sb[MOÎ8.:# OGj>ThFIC ^  [? 'z,b;={~!qW[ĞQFrb%T܅,^
wɯF~Q:zJQI&6S!lE6$~B@1 eQBMͦF/ETNw$чh#<^Fu8r5!p{Ee#NaHU])R-j"DR#|ׄ'88kCJ+	1~ei}e<\A_ͅk
EQBe2-nxS!zBOz]=[9.nˬX޿B|8>DrHCuWY¶Bu<ѓֻI]rFe[U}v^o$@e+?WFx*#x85u)\_^v~^~<]FC!7Vv-v@=4Xu2vJ{vPyvڝigPK4  
  PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence$2.classSQkP=IVi]֦`@*
{6_LKF6
="dq	}p.9hGzWpCC945PPeP&^62r;ն;
mUQ/B.l$}G8JOuo
mGn8sQdd-TR0Le?X7%L@sz{zi%fے
зc'ʸg#4z#.G@-XѡcZj:QP%Bf(o|"Oc_]c7kgkg(jp}D`|{	/,Y3#O^~$AdeIY0䐢,4r
}3(nVq@yO!:g:E&(h.PcP^CS@UF*NĠ/1C(R²Ee>YQQEk>"}̧S7T=P*4ǠXY?*^??PK)    PK  D:U            B   META-INF/versions/9/org/bouncycastle/asn1/LimitedInputStream.classmQK/QngthJa4GRUC{G?i$֏^"]ys?>_^cޅf3f@2+WT7UU
y3h)d
}ˋNX@N&^kRe!T*,]-1T{ŮP§_vLTحNF^z<x0!.VèQr4Ņ^ETl?<H1eHِpiCHt|^$	D$E0$(ZK=Ċ=X]*U&qIIh1|3GX)NXufg5	y@h؄Q#y`Z`iIPK#׳  o  PK  D:U            =   META-INF/versions/9/org/bouncycastle/asn1/ASN1Encodable.class;o>SNvvvF|`?À̲̒TFu
MtҼ⒜T<C}֌\Eɩn9@mB Y׼ĤTĲDFe22$'e&120201 ##3
$ PK      PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/DLBitStringParser.classV[WSG&	#ǂ%QSåj^H8u2/}t
.X7uuu9>dϜ=?m
*bpd$Fd4K\՟\7p#(ZpG5U1#'dxCY_34W'
hNztAͫ,ҼꎦEu	neU}1GUXL҂w$>V	CdBCGqJAxsP&YkH{ӎL|erKIkVbO/F]D w+'yQg
/xcYYq&YXmy)^>xv(Ҽ\lqrrAx[^UxZi<2q
&>&a@
̘7&`8ef/#!7mOc:3R*^jI͘[OT<-(2ŮD3tp%u
]W* ,RQ3Vo
^:s{?.
~FvuJR%<K-q׺nI,UHk?CZ`)	c@:97U̺2$pLh9kdb!sT#)bRKص{k21ˢ	OѱKI@X\GpbtSWS(4pL=@3ɗDbSuZN4r
-2\*T]QZ"/;%W_
Zڤ:6jn52q䲨m%u42sR.Vyu7QժRf#[ǎL>Źh ;P31<-Iy=Qh-G^9!Gb!=h5wg,.?DkGj,~Pj
"G1m
;N'ighe6[l5>JZZc4)B(#J#栯&JM4EA/$I5#N&Z6F+0A|{&پTc%qzKrZRnF~G[|
t(piW :Y~Eh]Nh_s
L7*.<N'dvY}NTЂȿaV.Sa\
_Mkxj~&BOPKb  v	  PK  D:U            >   META-INF/versions/9/org/bouncycastle/asn1/ASN1External$1.classQ]KA=料e_EDiB=AdhdFz)Џ.P
ܹ;1_ A
, `2CX*iOV;][yTkTM|S*
]a:Spc1ғU`MYc8/6]*UqOۭJ[܇ByZ 4r |UL[g2*^Vèaj<_R/=+YL!`5vWiV
gx֕LӐ_"hտY{I{F6:	2E[Owo`/2L2?M1"Y̑O%kPKR
[  k  PK  D:U            7   META-INF/versions/9/org/bouncycastle/asn1/ASN1Set.classXy|ٝdrdI$~Q5d#1(lvb=ժ" Q
	9j=ZZUGQ739	|f 0_KLpu	`RU%\#Ct^7ȸd7f%K3|+_np?178.˝2]nOw؄_:q7G½2>~}2aUƯMBeS2!L[9CNZvE/'씰1Krcqb}2zϗ(!	OJxA
HEHF(Xװ!Z5ڀ"5UT毝u^8ZDPvm.SimZ8F3Gf)d~=Ӛ2-Vp@c(V_VBjhQEZ 6w4ZHz3!TZmG[15Z[ЪS[Zf鲱:7o)w4Eq.%9ITo|,sy́er63]*mZD\W&`Y+\5\/CU1H1,Qr
yF]DCw,6 yRHgT.1EH-8'2U5$(4VSG:F%H00F䛧FĸuR|TYXG?"мh%R!3/Πn,ih*5(bX<m,o,皊QJyN.te@D7;" /V'q2d{`ie\8Ko3EkZ;O;iqQ
i-j,n?gAN-^Vsy
E	W^Wr
?KPl,98vB`9HIVpXy4O@	,c,

:ZX!
T
<z15ꗜb_+`Gpĭ7Ð52	p2O Sm4|ނU)'zyʕZDx/\?};vȡmhNUp=*[v	N3FHF(1L,n-n?L=ʺAyQ	P1b(Qƴ,.F͟L=թ_nQ?J>7	ʈV6Y
\yͅjm
LE	>jJ5ǰr[xZùxMRcئPc*=Y\#RM>QTƔHjH2Vʰ#R<ְ~I/(mM|6>f$3
6xre⺆++k*kTzVU^AIG;EqQ¬FoӍ#!=<|m0ih#+w8ݐuTb)CØޮi<V\f5#O#g	#JqlkRG{:$=8g~3p[5g%Z[;LB2jr;|$OB
4_Εd2'N/
;6L
}e3XAD$5UKo@{0dߓ`AFdѳ6|2_vGFL;]p8򻐰2ЍăIlSIJHz1/Bj$b
Rqxb
'¸0n 67c1a$(f	u4Cs-r,.^fRpvځmea&x~FoGO|vև#$:J
38	?z0!Ս	}~
|`$EI'0I)`t(H`A<yRU
9ڈIH][.d
$Yw!}$m\>BE<Cr=G"HrDr|[Oq6Mg
CSr9`Qf.
+n\ұ3e)SƕRT'Ck	Wfl%f;D]pєH)>3C{	T`&)p#?s#%;o=ۈ.[&Vpx_"_rK0A>xsyz0$oim-)$&ɷÀVH'$aShׂXNK>N9VMt>H"1u^521} I,vO'~[5D)fn,S#ju!gޏ})82[4v>fFNe3}7X.dqWwwiCYMу1xiXRX+2XnJrܙv13n5pK7|͸:By_̫]۶:]Í{qnX`=ms.G(p9LJnW[r;!o](4w]Pt	j$ǮE&Fʚ
(b74v3bP-vLgw6{1=Kȥ_6;nEqla8<秊,mV=YhĖ->8Oуn\S؅Y](_ocٙDRAzIN} u9$Ѳ
˭0ې=,yx;Ø)l'PvA<Jǐ*5\߁o
a"׸jJyj7N
1)7RM>K/\ϳ.oJMAaO@OjjD>-¯P}#ۂ,
ʶw ,粗߽4HЖuޏN%Z澵zh?boR|E6dP> +zz^>6tqC>F`3#(&&z=>QB-يk|bqmT,mw{p:uRGAQSt#vE[G)Cqɠc{s#n,w-Z - TCW<>וpW\\*eN8ѝhQ*toe/eͅc`Qx|'+~_Sv~Ci1ù
M!IFHƍB
nq0
0	t/L!Da:^r0N$@/favT++P'G)ˎa-KoFSAYC:KMFc:TdE+y`_JC%-;be>ԦMQu;YHןPK}W3
    PK  D:U            ;   META-INF/versions/9/org/bouncycastle/asn1/DERExternal.classUYSA&fKQ9 /!6l(1ZUGKY˓z'?~2Q5
BW)uY
+$2P*J05L~MLo:7MݲW2zRs}t/sY#*in-	yoZ\Sm3D.r;1ԸcqBm)b0m)n`ml(%5NK	OV"t'g*N쉘U/l(:9N	MNƧ᱒Meٞuu[0`ԢAc:=_DAx)<ø	L*´hahTa	<We[+3<ɘHBF:RE;ũjpЉ^n Db
v{q84
_顈zJٸ0ٳC1T몭.<[elҹx<1pafXQ&F,Z-p@|$0q
iX+:BYG	%bY1w]ib=8D)Nˉ?QFEpjYcƛ~GZ
=">c1|r!&~? >#WQ@%jKX";$E%IB^)U
NBꈌ}I=n]mTHK(br4SۜPKfMǂ2  "  PK  D:U            F   META-INF/versions/9/org/bouncycastle/asn1/ConstructedOctetStream.classU]sU~Nɦ%RP|@m+H-0
PBnl^9Pq2WMeK^9{}?y9߯~p
p	O
)C2kV
b@GN1qZ:wW@zsYvͯȜ]s熧'ONC;^wuϓp
GvN4se_T6ꖤ@PvDf
-Kd=ϧ}8?nWEYˮS9OTt.dї
ٙkqyݺWceUs}NҊ?	(
Li
D72qMtb`]GiU'W61Q	ͮK[%x?&pIA,пu9/Yï})F7 v3lHzlj#L>Enɾm;ۂۙ˭ǈnb׸_:Vpq@t՝yvnɤuǗ,Оh7@LHjSU%4+ٚݤ@ײȝMF1ނ<tםW̼H/)9*u3UubԮT˾	FvM~<j	^@ -Nc0,r^$vD%DF{P&4	qlESi3	tz|ҜB_#	#g$mjV
Ԕv"yK"w5KHMF`e#-Mz)"c2?
nKDͷ8&pY^Gq	9Lo1C9n4>bs|^Scq`tK2L_H,#$'IðJit~|Q
u
eW(Eu>A3_H@5c{@2:mWH{=$3Cב-G'$j<X˸O݈P/ci&
CZoGzje	;xWeG~]

{ħ#(--#PaQ%!G@S'\Ǹ~ϩPKжk  A  PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/LazyEncodedSequence.classVWU=
L҂tCZ{RM5nC)&ԥ]?TC{Ǟ~OxߝB$an_܆ou!

87"1d\v&dGu41<.	!I!i!S:,UF4l
3#YQѐmG+dVȓB
:	)
9Ί7sixױix^A;eM)L)ULEGjДk#du)L?f=u

k374yJ{G<H$MLפ[tsie.twI
v	C-@j&OͮggN1gM@i0&Ma{6-%B>A);^1O+
ZU[QGysNNX)BP¡Y2a&=2.
*lKyyK 7lNFaoZ
u6~o{B!@=kn*DTSk榪8P~N8sg5XI7h4(~iq kRr9fK&ss [)"3dB2Ёa6,fî-I^l*zo{tkD30a7BWmӢEDY[qq;q!Yݍ^ѫE/e{pDaʶGLx@vTKPG7p	I(쮌N8,xx[w =?ضە*pJDx}z9;`yT7#1r*Aac$TaiKeY]RK0C'}p4)Cy<!3a*LzwL856z__8.uV R0<sƊg\_
rfOBs̲osT;wծnQ9!mz'looW
sPzgpFߕ訆R%_*Z"orzf쓮;Se(cf`fCAAg:SY+ TnpdnZA|eUlԣ|[6VC;"!s+pR{WX9 :Ǻk^b?
7kt|x-jZ&Ȩpn>*XCUbMh}DNh?*:_&kE5UG;ruk9Ź"~)̡|+}_`\*s LxrȺr  =Ρ֮+K=_QTn-NȽ|Y_I27;ᙒ|{w@u^ן[r,#Cw0
ॴCX	rTm+bc<6-ԓ>N3O$ͦ˓؆LY>KFagy;Zy)"+fwZPKms~2*dr{y&=X\yװC:!kr$UG]henLṿ}X<v1ŁZbX/l3t.`oWn#m?0FLջ)1P\`*?g~t#j!3mPvɡC.cՉH4Br`ϨsΨ3|PK
  C  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/asn1/ASN1IA5String$1.classRJ1=hZbC*O(*f$
nT\~xg"Bń^nn99
lb26Ҙ0ea!-4;Bq<˕%Cr?h	tU*q4O:έ/=iδH#~\6=_<T%3Ԍ].iۭzpet'dDN+[_bv<?p,uв0 ¬9;X"jbT:@k](CoI?qa-L\ 	BGFXhc1@eHgGJ<naOҲ1ݜ]x	ʉ)F1F1I_
PKPPw    PK  D:U            8   META-INF/versions/9/org/bouncycastle/asn1/ASN1Util.classWiT!!1^NDvԲ	bCxc1Fh4niڴi}I
ISNtOzzNWO9=wf$FO3c}w}y]]S cЏ,Ï]
C؇(_aqG 	7`*><ΰOާ47>I,>׾)n~kO203\*qY}s|k`Mn~kf?$hi͸OBUoZoXW%ԏhiuleiNĕ&b\IJFLN_I'VJHJ6}06v4E5a*.f(Qef<_.̈́ɪ
l@R5h ^6$߽}#KJJI'cFFK'i
IIwF/ry9%4cHɪTn
׮A4
o|3u#!79>IIۓ{]*FNWm6=SV$7W;
\A6s{*]R3Y%URFgJ:і4&&+,|]UnG2"n\Nˆ~|_¾M>Z\̞Lx%hy4sYŻe_}JV Kt1Bȣs[^:#>/}$t߳Oۘ@ٖ/wG2ۋTϽ./go:]dԖbJ&~WOZ \d?~ xAqdA[h*&
5`	?F(ˣgkZXOSE?^ek,^˵x~QjZt[}&=,CIb1l QlxQbBF]8&c
W,q`qdHA^.'Ed+f24?:m%
}&,(Y_w͙ ۔4wJ[1:/lԦ,I(Ú@cjq-*xϕ%ᔒ͚FQ	g}kivpbb$:<uJX<r6njg'&Ӄ٪NG&c#f;T]8\RMIUt9Tӑ
Ƀnd-iӖSEҗE^;+O+	CϬG#LyMՌ**%˳Υ|Jv[@WUq{a%i;l#8B⣛QjS)QYHdՉZ>]mճQMnm[Ƕڶ|'|;5
6s=&l;FԡjPo2c&j^nbكh^%K<q&('Hkd2\Թ LĀوMB;\PMIePS-/v4*=azަpu ֨i
V
!0GɃq;wVcZ뮩!h[p+1c ߽̑F3
~i;quM?nO#HZ&P1Z
cؓu:KӷȩfQ_%N{L"_$3=j	9e8zГUd]%u=k[g9[Gy 5 	2h2o]<I<ǀͱӹ49ӹD	@7u&=9:EKf^MнѽW	w^uHIZ'3ޭ/ADCP{l("/<Itɝ9\W0鬧5=5( ѯB@qmUEQgxԆW z>|fn*g(MPJLJ
%WI.ӹ
yR+
AuR{0%L]4i>6ǁ!,^ĢG:!, 򤞛@NP(aӚ5
iGPo͸DN)?fʏ	S~PK|SX    PK  D:U            A   META-INF/versions/9/org/bouncycastle/asn1/DERVideotexString.classUmSW~.&466Զ[@IJ_f]nFeIퟨh4~otz.`4

3{}syιo{A!x0aVAHs

"*Dļ|$awdS|&?KrW,p]mr{c߈U}Mdu4QckweޔS"7#FucBȕ0̽QU^si^b({Hs\楎(Xf\lK0dd jwdG;
T3~,hNp!
]O1a3}krl34]QIFIH0#5jY.; ~4bMF[W
|k$(jaSu+/"/-&{'uߵz~ӱi2:dSM,;~s,9;otnN ꖭK:c{<شY1
_%nD6ǃtSTŨt@5rbP$gTv^WiyM0DpeM4kWxGD({o8RL*ؒ{sa̭e;{SpܦfgQcҶV19910Rgچk˰Ь.b\r2*%8AS0fnӭy1$O,&h+%c/?; iJw  3Jb9G:
cGЎpWۘ|MBύ7(`d Ac3A&$t,a."
߰w1Op##ٛ@]hC u!xC)qP)
KbC
ny;+CMS Y-%:j֚R(
"M-]1v K9"-YݚaRߒy_k}?PK    PK  D:U            :   META-INF/versions/9/org/bouncycastle/asn1/DERFactory.classRkP=wM6fuvnG[a@fV%cdDTO0XP{C"tN0n9޷{lT-,fP3b,Lܲ`bU*Uɪ&nC({v	kQ|ajay>}A(L`ysA$[L%ѡ&vPz:^+E?*~}
rC?:`WIo4.4(z=,L4&'~a@KܱdXU6.㊉6hؘEW+j(at$1s2Ww	o x}DX]+<"8ހp*Gm@8!73ȣqZn~GdN8`h4h 6d+Dds\92+'<Ckw?-Y2Ba:C%+mrs7RPKz    PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence.classX_eaqkY\U|P$k%.jdXFXYfpwh6ijcKM*I[҇M(TM6n~b3󩟏wv=|ᝏ	| Q">'Dx(piY\ϋGr__U&bv"qx("8!񠀗De.|oXN(IN8#G
_Y<Ǘ!q^Eī^pAD
.
$uIUpcHDP٬{8#zH#
>%CZRU'%i|j@떻BgZ7]V
Ú=>:$=[(6~eoT!NdoԺIB~sPUZ]JC0u9"X[*l{znyg9uA53dUTngH.ˈt;)AeHEf<!p#*3
aԤJXC"!܊J3Q=~%,AM%m5&ڔ;QW{$bWi#rjިLp?SV$Etmo
CyZ+✄G|l܁tz8L%(FH_u8M-]VeN %\߯QjGITrC9,Fa9:O2eքtj>`*0s}Jd͡JP4Ȕ+&
J`fZQ0L^N(&AfѯEeS7Ē\̰peXt2:$}U5\ga3U7m(n<YB!GmD%#0^M)@jݑȁn▄xC~DO~'X/8hk4jӂ%h5ܺ	YU5ݥU"%#'Hx-~!e8u$rP80MܢJ؆1%|T𩹨3qO1AO[.*oޭ%$tq6HYSa8r6c+I89_3s
WjV="\ǿ1VݔK˛y[⍓vxEX[N4k
tHhivۢD"r"CnzW[xјP.ܵf}
k4pٜk+&_O)oTTn-%(#MMnglr7&mќF,r?UTQխ
&jÚ"ҕ	vg
Nt_K[{þf_O_:&(IWt#n	7]x}go!MMߚ\\[Eʉ?FIsEY89q̦WTB3-c}Jڭ_}cNlL&O~?K5~Ti}eYd=pEN$̻vHIY;wb4>t'dr(AnH	F*:0G9|dGs
Nt?>@oE4@m7v~QBmא\eV!x>EM$aQ8:{"hhvox!
#:{r4>A 
m(	d6
hN,CX]!G i
1
9%vBaUeUes#+G̀ˡ'&A
bc:#܅l9Y9bFGo֑U巤"(I9FZ84L
 &b9'-ˬP(r0HiyMl4Y0L)9\* zdF޹b\W@ЃFhu b%!ث&7_L\76Fee|% 7)sbɃ\F!%_keQgsdҷhB)k. 
n(dLI2mZ?MmW)TQvx#gwɯю|'Wɹ2	JE\jÉoOMmԠsY9_%&	~j%cGB\al!fEbKh9`Kt`RmP
%dgͥ;K$Zm/`
Wn.ۛ37{nY0m{\#% e1V'[
[%5
~ ^'hPܻA9>1R~'ib(5h%~=leq2v;o0n3nDγ"n'G;@+} Ytg)$ <%FQ1oA0*wd{V8\B:wނ]BBF/gAd=b6,JcGޏz|qÅHwQ x{HxG7(AuDF~d*7vadջgPu^
?84_o3!;%;QJ,9E숡olA;ɈxqB|≉aсH*7𨡌`Ⱦ8At-}XKOes)NYc=%=
ƿsE!IPKaZz
    PK  D:U            E   META-INF/versions/9/org/bouncycastle/asn1/ASN1PrintableString$1.classRJ1=SoE.\UPlu*cL3%+ݨ((R	ɽܜsr
,ĘqLai̦Tl1䋵^U
xU9Cz7Tn
̀*+N }iNlK#{T?,BaW>L <zaFKժ?m׏_pv/dL:yL,i=M
/-80`PPfpJ	!"՟/)#4n;$7
C?~1I
$$]t/v;܈>W4x"l)VZ|$$-UZ6?W(׳<!u{b|AIPKA
x    PK  D:U            <   META-INF/versions/9/org/bouncycastle/asn1/OIDTokenizer.classmROPnۭ[-
ԁ..DMp#<d]faW/>`";A M{s_߾@	e"ઁkX㺎%53}x4
Qc(Eq?fZ4sJ'ˀ~0$f⅟m%)NxQC%TUa.%}ҐoFB?6<zӖP@DK0u,&naEm$A27CYv/0u7a.-	=1rB=y6ͩ4ZR4Jtw
}tЪ&I
JPq9c(z3QpaF(q"ď):|}~
E~QFLXb>7Y*8NG~TZ7e픩?^'&1Q8
k'(v\:Mڵ*%۸.bk JPt]MV
PK    PK  D:U            C   META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralString$1.classRKK@mkSc|AU4"X_[xƵl^T<Q(b	]&3þXǜ>Řa[cHoH%&CPj>rxƐ.pM*qi7nOHRjƗ4Zjn͠;.U=90uj=h[ҷ\=梿B	O(5Us\Xtea4f"P٥Xbp
2,z(߸2LCKBBF}p^.2=	2G^Z^?=ВF	64G3+H<#y=IRNl1!StlAGPKXYmy    PK
    D:U            *   META-INF/versions/9/org/bouncycastle/math/PK
    D:U            .   META-INF/versions/9/org/bouncycastle/math/raw/PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat384.classTKS`=_jK(EŶTip:38m
ŶѐnՅK\qGu5ɜ'i}nуh130213L0Lq
SlK0$5XRZ^R<' sK@σJj
kdj@(Cw|;yް=Q
ڲc@iϐq3:f1c:cVؼ2:a2࣮w.zu>NfGi~n0ajۅcsKYi\u"vnţmڌTNi9i玭eTcOpOT)ʴ6^hNs?{j'¦֨uϻ^iB񋀋1DK`	H$gOtD2Bڡb
j"4TPSބl,ŊԄr(RFeVM
JIT(Jdr|
YZԚMT 5kokfK7:E>ܨ</h-00Hh.DIOK:oL.W@@0~hK8BxX@37g@л϶CGK%y[DyV gduXF-1V2LܦOfLb&G1ș笈_XB|D0L#`8&p(c
[1UF2XPKjk.    PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat256.class\|?nM)wCb1+"h(JD\UH( ETlał
,ް]]ݽe7<$sf?s. p,AЎ|@ahA&4ɏn/%%ehyu؀b,V7,e
 oMn	pi4%ʻ'7@jHcxD˜icF
1|`e0?^6~eыgm" Z~-a)
)=~YFV;|zѪx̚=d=d0fD˻L¶<FYVנ\L )zfDfLi8]c맟5~9
4</
<</
Rfo/09 [>7Ϫ1z#>7 %V7Q6Ep rsXtt,kD(7UYYpZx>*c\H2;N5t+/{V\>8&%'YOh?Cb4- %J(88JV0٪WxU)lpB6)rx_%Z0~4-"Sɨ%ܔSݱܰ
/nh
hCKp}cZO45U @QiM-O_<;l49~a!0g@΅6?6%
Ճg7Ϯ2'<pHS:?tn~ Hm wÅ~.v:?\h|e~@S5R7t`*JǤIuD[`$CʴHpcC,iѐ[0+2ytaS~8U`M
f%l{)'ݦqzmi:4GfWİFTc6Έ7H0xR?#+y*Q؄(!^!<7ِi5?RE. ;TBt)sC'(2DB&zWՙ	*Ybhr1.q1q]&b\uǸcr=1'լ5u-y-m	:Sg2h
萊3DAOH^}1G L@d\Ba	[W6nv$/@1%&tQ)%J8Jwr鮊<6@ZY`]ׇ\9< TݵNw!rCGEMEETTD]uD]vQwTmuE=QQMcb4;́A(4>chh`F
&[-

_A
!=hzp}N$pӠ?=fؑUUV;V_VVVVF5}mtp2Rğ90
rXca#CѧS)TGp|
+Lp:I)$ !J@=Ӕ:MCM}k_weÏ_Nםu7|@fXq,F3B3?s0F4&h0!0χw14r<Xd,!ˠXFIt=+а:r3WșkhM]E#7y͵A:rsm:rsm:rsmvk:NQ ־C	ѻ{>f5P/@eP|!Я/F?^Tť/|9R|17oܼ	sf`nsuJ	GJxI.,HH#Rg!K6%`YȒM,d&a^d<LVh8'ULu(FTM17߂9x+[1X߆AvTaFUuJ܍WTpwwT};vRMp?9 #A2>0!*م ^E:fֹСݨ:TBjWt^C+QmС(Qcps08F0vapJ6hq.cG=^$.ܞ(4fg0?Spqx^D	Me
{1CW .> 7I.EJmGd	|@΅Ep\/q@M]aruA.[tc$z0ba2vhr[ pgGpn1DWu78oUfZRfq,*{S6IeEJ<N
M5`(p	AGtϟp3.AӀVkJrVg?qVGƚ.\EB6acF#bz5RyeT^#u4O#$^(\Ny?ymO5T{C4쒙(ٽF5g9(#h|VQ'AzbRʊʂ j\FH%
	[!"*\QAl2:b
)R]pRNoH3mh7߹OfȬȯ
W
F۷w7n4r,**8ոoH/(Ŭ}|}n*7F~4Zl? >%F.5	͐_49&ANGvC0'_ Y|*<G`H#C!DGᚮx݋W`RƝ/ UN42|"-<#+xpxNG<St(%a#lxNB<وxb[ҳ6_-/
ڗ)y:-z/Xh߅ji4k̓ q.P!'G2-0rl6=mUߠ~o
g*hb~|{\#?ʐWIVӀKr	܆e
e
A:R/]|3t`@pb]"R䅁#Tkѫ.s1t"%f.jrtC^GGT%*j T
TӰI7 W*'ILȫ2܂|؀s$נ5\YdjDr5	7 $F38;m/"ڻ>7ou
{{yx]LzMHsfnTCQ9!Q?4gqO=߼	~(BU.ll`gBc~*N$kJnBO(ʰ6z#Jgr(C.2$Ud";٫.;9Ivr"{TEf*5Ud2Pd7Y0ǥ뙺^dĭ3UQ62eRd(Rn)%C+\R.Tr'JRRʓ(qHJ)֥3M:z;vD)@
FWhFס7yN
(ws{Lއh# \I>c|?/+}
O`/p9%.}Op|?o|G ȿI9D
Djd(%I72N?JN@PBJ?(#OSN^|L]+&z'hM]Oi-MT:j4B]L3m'Lkr.~r'b'!b{?
vH!-nJӄ2!=euzn^]WW,b	o\Vr;X8XKs%4(FKC0Yz΀04˜,l/K<g9769_vؙeNMnffK3)ie962˚]df~0euLҚk
GCnN,lȦ9PJs+̓h>04Zh	ΰE(z4l尃vi<N71Oi5]'ڍPڝiA{z,)5H/z@{x2!Sd:=,d-Gd3@Cd=짃't0EgF3pZAGО#h:Ntmcyt7	t;]t"}I*p0RKFXwcV8}/_dsV?4hqdD)g90 B+Q2܉R"s`(&24[D4%g41jC0qK ĥHnr<t*dz(h:Лd:FY0F`
=fٰ΁.Msa;|x.@hFhCl.$."9t1)KHJNK d&=̥+Bz.]Ma;<I#9z2Nh0Y0h{NTZNXMv [ZPla+s̐zɑzQrct#!&9fH9Bzmrct3X!&9VH3?.	-{b}tu/)0_A
1_Aj
D79t3k0_}<L-2Eo#ЛI6t[I
Do#zE&z'9E.wt;Aw`P[>\$_]kt+/>a{V7j
#eȳސ;׊Q{Oݺ1g{ܡqr[$*=kq[-X+@VjDOH4U+-Z.[-WbeZ=MrjkE7j"z$֊9zfǨ@ƂBѳTE;L-'˯;g3QHA}O@>	}S0>
30>tF<H_鋰2Mt|E_!JRkDc~o-2M&y,=6E?$)*Ghp^֚Fǋtn-"	]ctO1btW<OZ/RࣟaSPBK7<;MTo L=,eXEKOp%6_6+M	A_NkN<o?sjE.'^"?ww
Xg(`MV5g?:~

9ܓhR&>ʘNaI0a:KY,Thc\`KY2nϳ,˲s߲\dO2Xf8oF]J'!ajɭ+T1ᖮt#VCZIDivI]Niw;QI{=Ni-fb+ш-r
_oΐJ;
2Ŏ	.*`5+Jv˪!V
Opu/Xw8zTU~,jȉ,DH֋eǓ%7YN@OSMBsH3NF.=şXC'd"!Om ^iݻ~Vkݐ[1
'r N@Hg'C9;Ap}С8pB6euMlF_Q\­u s7N3ϡ{7͹st\9'>ax@$>Qx w<6`C
p&ASp:teS ΀l*bp*S08q+qqNl>4B\f4ZH8oYE;YP1z&sa|@kE
\iu2nm8PW0MRG&<$<׷e>w-AdC'v*dTU*$ @\${aЁw=ZVkx+6O'ۼ/.:-Z5+M+๶HȧTWpṖY×׸BIOm?7_pNKk\DNG}g=ӓኆr~{3)
]STm4e=JR)L]3&ju^/L[^l<]Ⱦ]toMT-c/qcgkz.] ]}(e$Cj\s#{͖4]vP&lTٹqD?\գqׯoz/TԼ&|%R+F~P"(ыJz뱃5`uT

ll.gKz^b}1TԒL%JL/Q7eQ)F,o9
a&RcRc0p2酒FUdsJR/Wb2*JTJ_!9LN1|k,ưJ,pLXV(+4,r^E 8̤Hvr"2ENo'W*r\)6rPKҫd؛*٩;zN)0B!]
%2\]'+`[U0m%&͘[l.1Mp6[p[a'e9v'v퀯=pK;.#s{ rd
{b&(9=F.az$=CeϒO<@%4ldثt {`-:Mr.ޣ[v>t>OAOFؿ}2g,}WD5;}wl&;E[þg~dOY3~a_Pw.8ᅜ.GN@#O|!yVwOOtgx&gY{yp\E/%P;Hb /Cyg1I(1&~XUցC&x3\|'D-&Xyc~3 %n=,ڶ@T\E`N1ESTǄ	m0ǌd
RkLLf_g"֭J 5^x=^R=*qFOfLXe{~ʮi
LFfM7svSc2czgӍNM)2]s+z%V;SS 1#Y`
{6wg5Ȋ7ja4#cPt@g5&
,+tq3۠gsؓ"浠X 75!F󒎩[+bGm,2Pg[vtHW2eA5R	
S
Kcɡ2Ĝda.53g@jB¬&-Sֳp4ˌ[ˌ8pFOi\/5EF4bδ{:TT)X +bU)VWJ0bF̗׫,>Ns\8T,Qi_iče5
LFLQPQj0|FHr0*2FWbg -u*7^UDl^	~^
dp4?x
!ŏx4p9Ap+w!p?
a7Ho8'"~*Iw>姓SO%x=Yŧu|: 70$
>">&">V_@f:Ilz_HEt_LW2n3|W7*?~|5X?5kY-
16_Ze*~׳~_
mA̯~-x1·zޛt~_okmb~;@6߉0 !}B;1|5ч?(Dddh揋	?).OMiq=F=ßoԢ [.
 )z+nYp:_
[ocΗ?ñV;9xUp7<q';nu@>+_"C/ohLodwK{W`;^7k)⟡|pb/pΰývz4Î73[ff2f^;޿l=a2|ǲw,7P(ya?j&,?B	#a? "!łJH+!4"BS;|ۺe^cnGYNR7;vG֔ҺAegcnSYS7.>FYE7|+@E2t)P*RdCE:0Gd|B"6lN"yȇD|*
+щEI$KLRO٠][ȵk1vWrʋƕ\b7s%׮-]ɵk(vcWrꈻ+*P	AE%cHTAOQ
DW+h&0YXh5D`8`8ްC ;ExAWĉ8	pHDmJ|r׸CaX0
u<*]PDEA]t'킞'Acb}kk޵XZb
CP Qb(TacaD4_`[X*cb<`84YL"1Qb
g!b*%Q`ycz1\>ޚʯȯ[R
gE!CɃ9wA`{-1hd4q&l4(Mjɔwpa6޿( IQ "_|#8ʟB  hF -AC c 
00	zWscuύdAÒJ
8<
]|kP@XPKF$x"  M  PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat160.classZ|TŹ9g&M A)lOZM^YC!$QUj}^ZU,GW[ڪjVZm/Ϝs^ٳ373y<BDV?"{POȏ~
2ܤ~"YR֜'?Vt~ZCm&Ix6f0YM0ɞILZL]kQ[4+ٙӻqM{a|MjڵL-߈|GMsW]L|O֕
_[TPַOtHm].L5]!w;zrP<e{&afG]X	.艷]0;1\$6:p]wd{KgO]R^;kC|k|xQiYΤvXОiNb81XkDNyjAnm@mq(zdc)i%5Iԃ-i!DKBfv9mJ)q9=N
-d:%95ز7-ɱw
Sb*FolnݡSX!ԤtfxϘ
uh0SMWw5]mŷt$^FOh&MP6t2#>#hnݘ왲-'Ө6@Fd*hc[lRW6fҁ&&Me
۷ِh+%ލ*%${f%:{7
Wu=xp?ERG&=ɎQsNذPqJdSTˊf;FHH@"d9%A
w8KId<=u?TP&R[R!/dxyhpY)iEg<\
:4TRݑiz'-#5R#-5)ރ	Lb|1B̾u!Ax$3&@f	+&
Sb7b>5 O@!Qrԟ6'Rɡu
:i}F)Su3梴ꨛ:InQtFc4@(+4ӥ)m!ѥ)ytiz<4E4.MQ3%   !D1@	(M]&.g..MK3r.2tL]) :t LjDW<B[mR_~cY<{[-,*zR,EOR4\E3hf)يygBs@Va.jB  Q?-qݴM)ZNCe 	Ou[z- -}oBOK֩"znTvOnUv#Ȫz %Q	|
Rt-0t=
t+V~A{u!chw[XzC
ea;A+j֨lzQ5U饢\9;) i7rEț{TÝG`rrV@S*4bycc}
ڕ[gJ~ޣC9UҬr4=!5Pm8je@UW&O1QXa2
1UWhFI1-0VdSЊTDZ_kx6'VDu
ʆoG;/N8]нƻT}I;NhKX 7Qo1z'!߲a*MNZB5Rpf'=*{XC pH([
I/6?%Ic`q=kї+;Խ+Bջ'|>>1ܟ?j\/i`l0.;уm=.UF*.GN6f>KL_bB{" xMPLt§Tw2m_`+Xr<!gq٨GhL]Ea!@uOP6/Q:z!Ϩ71㷱-x{xMjD`ԩ(mT#VABezw
a!蹮xcr}AH'=Zi3MDYQ=dw:?\l a~wn6bwc3MDnbXݽĊU445+<y:(k-sMUɭj#@U^Y @/VX	:愬B+44Y	f,hBCTuֳ<-Sjy<yZ>edkyZR23Pr>C%ȋA:2iil.UlZD<
>.Kt
W>Bwp5݋!J0zO4zkO<q{9\e</ƣx<㱼ϗ%nky3*H@!?"Y	F0L`bFzs1zKwB_,
@:lMH9p| $!%"=OwE<QyBWdfdWU荡HT}þ8r-k[bFcy1z++=o6;[O'9dyI{BzF^aҞ]!p7w'`He<4ϡ	|.ɴ<4i<3zEt7W[!K<zӋ~͋]^Je	/"^y%׀1^M|>Os&n+ܯsou|?üY^/C$ߠ\ݿ4e&:
yGƢHp(2ep"ܓYHbEl|,Vddk]f"3[+H۲ΛV	bF
/G|H/aؠw!mBی׍xJy;r!>Pe']λ諼n t/5.׸2rf8Wr02V$+cNU=q	8zJkG狕 ]Y%N.(z%J\J\J\J\J|&I::,A.>F][V Y\dqH7 YHg>7R&ut!B{[
nI/]{>`=H"1܇pKַ} cɚ(&TK&4S0/IdkU㋙ndWxQ`22gM*\iS`F+S	&UG+=*E"ժ(ie+ON+Ov%UU$[9VfzJVle23[A$.NWAG(G!Gp돰OyIQ~LS
?Mo3gdk?-)WslxGn?<wLcixƣYr$=Q<mO'[ۓmdhFmfk+(~	L#4Eg+_E}tױԾA7?ߢ'mzKwAf:ׁv$
G2/-"9V[|χs̄p }'S;@^a
3N3d)MC:VVak1]ʟЗp6܏?q="2{`;˺7r@78ǹW +}1݁ΨpK/^Ywy/2^s.~tcdЀC(	JjAI1yOKE u mR|FcS4_ƝdG\&)Dm)
h(Yb0-RTP^QE;5[O
]W>Aǧefxt f̓5	I|.e#h9"ԧݴutjq,iBZ4ڈFNQ&E6{9v]l{1Bq:UFXQL:C|yğQ\N}4}}!hNIk4Fo請x'=X ;EPv+kV
`f`o|ɚd̯Tfl
7]KcfT5bw6Dݟb`/LCn`ƓM
3i<&nrˉK)+Bѐb*e*A):˱B9;=}#nF۱R,rZR)XѐkmTZJPQˤQ8JH\#lJQVFYV	,[Je,Yʛ{RUv
JɖRsũ#.IM>L1!9:K̠ib&rldҹX̣b>u],KRXA׋_GwUo|XC6zFukNo'cbqD."6q̭b/=|v;6-BA[E#vwEK=q)|\\&4q(WS^1N\)&fq%WR5&.6kDV׉huj!nĿ>qHWoCSHfKg
W8:G(?:K!VXa}UHWfB;V7ģfyCڬL`\)/dIB5,coO4%>/3ͤ=w( Cx2]PU2Ev"?FfXi}{زNBenZ2u7}\#A#vЎGgdNb0-XeNJ4ĪTJ][aegcMmX١.r5$5zXC@Tڂ|؂P[`
O]qmT$ KMHfq/a!?Hhxw2 }]<D7qtXd%#d'=$},~LSOsxų<B<cxx[;bJ׉NKw+>*^Wg7x?oxKEwX.2|{FAt?bxOK9qP._ăH<-&'he$R&3EsxFyRoK'}N&}wM+&}WL%}7K%}J؎Y8+ThD5xMЙF4kZR3i^G;4?]еZnԂ
 T# ?3i 	,DgpU\; 'W5WUU5Us1¤i%TiZ4k]-viԯU-Zݣ
jzFkCU`8k+L%LXrYV%^Xryh%pcv	4LZj4SIsڨnm4muXڧjv:=5ғZL`
S4>HsAJ_a\lW4&)E"}/
6 L$K;!wB	!׌;kA@DȹWxl;Wp~on/s>C/s>/swh*)E3KVCnm>m}A[H"Pg1і"m)ui@[[Vҭyt@[Ek#VZ͡V:AIPQsaR>
VEʵ퇩Xݤ
/ӣQɡ#<Z;$
Tui]j)&e{wo"M]`iZk?ZutV
#mHBcfPK,
Bm  /  PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat320.classSMOW=3c`')CiR@狈R0Ԍ=nɶOʮMt&j]Uj@7TE;wν^/9i\ԡcX`H^QaL)?5aB 6zU@ɍme׳7vU2ԶN} JEW㕺mLPs#Ed+A#oVkv^ۚwێ]gr˛7e45LmhwzMq4P۵fbj-rb|LІeJCL	 UsBj;Vܲ=abonK=)\G)\	fRUz[cckMb5ʫ[ߚr!]"RHi#j
FYxʮl{AZڴ[l?Wiۉ[5DޑJ/x	/惕
u[!<t:icAPCp:L]6Gx+bF(m̈jfAHҦS#YIKD	
Lf5c@Y3YxQzыFO[;Ii{Hҋ&O2.BH	:~=̆dSJY6yn#c3? <}}3·y0L16 gFDbNAHP:OHo[Vf3ћZ+s_zO!._fx<RiFZڠvjoՐXaYWAo1`&>Y@h%pm0b@m-0i	|llT8*p?H1Z
~WP,8?(Y҃y-yD /=$wuge_'JPEli(oi dPK4,?  D  PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat224.class{	|U[^w cIh@x`H jT;kQUjEwVkjjmUfo/'$9gfΜ}ܮ?քQyq}/ca8GF4Pi
`X%a$46Y@@w*!BG9˻d{kA֎CP:0td{bFEΣ[-gl]]0EBn`|Gײ;>@KvM'.^ҵ,i뎣w\:'ŝ.fGՎX'Ww1hIrlj]|֕:D.Xٱb|mJ{WM2v	'\ڵldq0O	A[k|:6PKԗ\0_=?D'C^!9r3Ͷ1ZSTƯѹDH tMqpm<;hmT&4S\dy
Iݭ|Vu/"_m#X܅[]#[vjDZ#M#^ZxvGwĤoތ֮ѣkԽ#(@BeGgE,n]յ<azH8¾TD+"h3UeX6r剶͝m+]W/NJvGPt>+U8V+N)Y]M,:!Lh;ka&ڻWWն(5-ֵUL9txղҮYɶey`IE[q.ǎluݕ\>r&{ p%veSVߍq*#!,꫻tWnH".
V',<޹o6Vgr*UiX_w4֟l 
ALcil:1v4=oĕ+`
`X(~D1Ʊpg`28]"feI]ԗܮbmEa(s1/
o`/#
G[XACq,5qZ[*-ڤ*E<KK<>/?EiCSAiKMs𐣴ZcCPG#01#9>^YwsPzMxq%x"aK
8ưCHε
{
{
{'
{0
{9
{B
{Lؙg	ND5&࿓q$`&bubNt\a3ZX?3G1Sq4>1s(TyTZzqIHǙ.ݽ3ٞ=vfp;}?mWqM/ώcvӅ삭8g1WKIKq+3,㨙8pIr*a0i<:hVl.֣6a].6J鬥LjZrSK%؜\؜\KcsVs?Z46'k5~V3ߧr了m-cIgnv*Jq:z9kgq:&Zp:O8kY|.4rrz5ב1e,nrO,ۂOۂ!7stCo閇߬-a9˧[~3O<W>̢Qe,˹ sՕXkX9ײc5]?7৸w&<n"m1}Nq;Uǝ<^ime}uQ(,56uRkӡ_uAy;6;Uo~ivnjc>Q[]9	\[HU6_pr/;/9݇9^~u;5`{]l'[Ca>Qcxc<$WAxi"x7t<lgq*VK-\KYKVK}SK}PpZ;*NˈpTW}:\^L7ܙn=E:NVd,͘1!wcFFFSFFFM`m6x?2j]0ɜ Bz|C{<{҂\Oӯ7_?ߌ"ios`@Ðn3j^zDl>[/y⯘o2vK|!F.UfI)%u7'-}*}oIPF~3x[H*iB\r?\|ۉ~tCʣQZ_HK]r;{R

))ʋ)CYRa 0|oxJ|?
hbUk1701d#SW|4"̅{GAT4L|O)Frky7&5$nV-2^ã	jYG¢}QNPAQ[5B(-[fe+C[ׁQk0np]G3Ľ|1aJ\)BƢacNE-ԌQӄ4WKs^jc(c{j`mu7[$6ϔWY&Sil3PJ3,1'ͬyPoAow`j|e1&OcYǱc8m .1rtn]<r[-BB[VdkAZ
ub(Pg3oA/xG3GiΪ0VȢP.V_bY%Ò
 4"HQx9VT**|TgSs4U *CT*25Җ]lKl%l	RsmNأ8N$ZԎh%tL:Va#u\Et2Spm
~Nkz/Fmڈ4NǗtKg6Q1Ct.t͠i.]@ӅEzz.[2.
z*6g7]#ZQJ׉
^Yn44a0}jSO
d.)tx8]#-^ь+^ָ,?vw/ahTETErPA@*ꢂ9"@TSID{asBwV*Uz+bΒc<^L3tx"CNz#b0<t!HCW71yIB̑(=LLSdHo	#iVD6N?Kw`2݉c.,j6Ct/_V]q;(H-ډ?C;=GG*J`zIڇ8b'JQ+N穓~;v^m+&Jk7z]!#-1 ,zG(ПD=-=㞕\i*CqO,b25ϲl*k=Bg8=u)0z!**gu)eS庯!l\O98M:r[gl_,l3팔[6[C0q+g939Sx[?V'ӿؔY%mol	_e.J-切vQ)Q ǆwt@(J-(tqy*tF7#7{{!dm?
K9tZ.r 	,R-RC:K	NR'tzrBg:=t9	Y	iHr:*ofX*}>DQ2QjQ}E	Ɗ&ǈ2HF(9b.Z6QbUxSD5&&5'SW#8utD[>b$)hV+b =$2i\C8qáq0r#^yN`OLeP` o؀,S<eK~k^KeJ k@׽|^^)/4
 rbӫ8i^O@vLX*ֽ^^i-5JVLwzyf1ɴrWe!ORq͈'&`8D%F1"Nq$ixALg;wE>3'J-1t8&94M̥bi8lql,9>nPc+RnMf=E`JU&ܗ24ܟ	Lx0
f£/D+b;bKP%KhAb;r	%NB	'vX/Vtq.\bwKq
m<&8Bk?|,h4LJc0+_!`WE	Rw	:zP#NE؈4!N4q[s/3٢B8#&\ m\蟰|F\9~,.gb|).aBק>G>Ggҡ|ʈjP3j_/ڗKϠgSsԁl@.u0:M̥f}nĕ8P\Zv&Ǚ&7^q3Iq+q)>[8Ne*ChJ3]I8h#k4|4CC|e(tghV5j\]v5r"рDExD>vQ+v`x 9d!>B|֊Gqx9<Iv_	>IcM-]ʑS|Z
r,ɗ~+V\<r
p%F(eC^/s
Utpx9pΩ]qk~W4"[-m;\6x{\6X.n J{=jЪl
RQk#H7H`4pSt'(a'+s_S<6](Ѕd'kT{,i
FBu`oXG{C}W?CW[6 +3MMX𺾧*+3Xa&>-%f0gw_YS;6J~^eS^ju̿%]gN8Zaf6Qaq=;Löx
̰|r_YԊ+jOʝfѪ/sXznwn{.Ȟ;{ݎvj|ޢ{v_ĈG[2$^G]nD5 eLL9LL8s0^ 3#Ë4<5U}/$^Q
9<J aQiUVAT27޿1A/s6Tͬ)fӲ40LSXU^FRīyUƪ2hADUc5f^_*9]m/cnrjJ=n
+tƪMq0Lrg*{5p7ZjtNyҝ8oFH|;](*)0BJ
e dse25g"/cBZF6Yr r<&9YWe%ޑ'r/|!Iʽ)_PLⲞf}hlHZ&9NB9MrC@yyEO!GC,x 'pq(fIb"ʩb<R\"kqlwʙb<J<.gl<Z|,9\d/d<TϐE$XK&W1v&we2)_r|_ˏeT_˓dU**TVd5\j5FQZ5Qr:FW
*)OU]rI&%9h$2nFN-
Zx8qv	svɫRGf#I}Z֛[y3La\U`r`,|]ߣ($Ck_d":9y&~HӚtk
(b1qH g qC/SaHO/jǎENV)r~UxI<ӑȞ), er#}HeEY.é3	yז⃘a9NJ1nT-⨧+wnY6ܕe2^bGKgr9N+Z+4Ũ¬_xpmByH˵eu]͵;+2RO
dv)^2^0y.N쯶".֠Zefkrʬ2h8)wS[cۆjEvRkD jmD^FD/lL2Mēd/"lT|40A^E#/y9+%:yΒy7vy7y[9GmvOwS3|%;y)*Jym4ZhNZ/tIˇ60'|^O)Q(E|ssb o;q|A/%q|U\,_[{Ko[}Mo;(0!ߓri#lg:Wȿ'6@M9c_bU&R{˯UF<-8Rse:^A-VV*NQR9ʧ.R~u
UPݡBj
LR}fїA^O7^O^O^O^O
^O5$2NzrO 
1XRc?UU㔅YsUSR
B!TU*5[U%aخ/j6r/9/D'=d!BRH|г9"[D= AO:HU!>hTF|5
hWcЫjܮpYu ^Q-uTcK>u
SAJca~rO]H=v$ѿ߮$wuD㞅߅R')_J3MdgT`#ՑaN5\fb:3;l<S#5yQHKjef{~X:r4֫
?PGc2O?Xx46Wyzr,VR8H- TRRml8H%9HADR9H AJR'q TnR'lv-CДW	jMR*Py	})B_KO^@0ES, 0;=y3{z8,㰴{
hPouQCߋ
LVYQ-jWph:/o<KSRV,t6}
ٌ!lHK|wм(G=
ԕWQFL]ˆu%j
^ȇ fS8&Ev]8TIRǿ~
onR!~ڂ%;Y`?c9PK#9  A  PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat128.classZ	|UϹ.KH!D hYjy$iH "RVJԊOO֥mvںZOŦsν+˻3gf3s.O; 870R_b p(2tɟSȑMgg}, \%bRI*/-l#9P4?ݿ"5$sRݩf
>G6O.O-N׬i494w.!|.VG
6"hlL:r$UM")3eMKni7g)kXϹwFOC{jB]M.?v9M"9,mx gcS?!MWŉΆ4vB$wSZ,`+;M)6q}uHӎb=T_k75yDijV'{$s"iƁ,TW亃/}06PO'9C1Ƥ=LT~d+Rp,%)M*v%qG#}r-5<7 O+,ߓ {bd@,\ƈg;GU\,mK.H
.NO;efB9*U=
{.mKw%K0?XN
a7vNPw%;ygniKnOt0!\.prَp>kJ_p=uFHm))d5MTGFUjdX_!.HԆN0]=$ȫT[nׯ˫L
p
`Y3Snk#I"E1\GsYU0c<IͿ<RGQ{t0M5hq埀*I Z2hc"TUiTmgRUP
jdFjT3C5=*Fئ0lMV3PY-E+}0ʞ:m֛YwdVWw|ug61'`
N>[ыރ`/j1܆:6 +DU":/UiřZ輘 :/fd΋ijYجS6TmdDLFt#:=ÈΈUfMtͲx_TW
ۨ-9UzgDܐW6XQO39z>f4r|F3h0fh-`E8ь5hab;Fv1V9&9
%=1NP㶾U9.5RFtw&Ftw&Ftw&5m>U/kxt-.i\u]$p^] i9YI!86qVt֘Q39[3uV"qBs2ӣMqŝ<2˦H*ߔoCӔj6csB\S]m
K
K2"`5nWSܩE=xZf-.g"*FÁ{+7|N`>59--4"B70)BB71t3(ՖUhF}(Wcqʃ(-.!ef%~qK`]RE%U]S^k^q+j+c_e=սJv Q
<~.\K7)~.Gk+b
{Y os>1pbGl.ݮku++><zE~U09ZzE~-voz]K0OU?VX0>`
\яOXcx/|s9W,E緬XY?	WOripigY2s&?	}ǡrVºCPc.^iǫ|ʾ+cAE~m,A8UT
K.-=7zeT/W
I,xgz}o0r|R0}XNlpjr%#!i6QVL-r)z杚Q#j*䉣J4_)Qd`<8,L&ɏȉVJcNJKoctgrΒz'-m=
RaT
BQYnN=Kn;^oTmyofŷ
VbsO@&&a,ՠϫ)+vV1RN']fϣNwל9z;vL#sX\I6bFU'J1Y˼#3-?׎Ƌ]TJăuF (
5[ja3kΒzc0dCѠnT]4)ԥb	!)!$X
s.Kr\F_r\f6_[z(4ߗ:c͜L-#-DZԊi	ӹhXN˰#A"Zʹ[|UC9ZFpx)jóԎW)iޣ*N)Et!Mhu|HZJ=* Af;t{
 YH3(~w/3t@QpG؁drg췰[X|I/ <Q@
y$3$,57a'ǋ=Jb5rIZWҊbK9|h.QJ9Z|<0x㍨k &\/p+ihvtev*ڍrBC8@Wn]ͱt
ѵ]wsx@TME3i/5эL7:Gʹ ]EVS2m?V?:ǻ[8;ZcQ|VFV(;d1(1.E"=0d1(2r
O"3+'1+TY5namL	_\)nJqW\)t:y5i:6Fp݃kOdDŷ>hޏ_xĻtҝDmTDj*9sb0NQ>_kD#K8шG?0J+aH(+q3/ J+ȼ7v}|35+Pc 7pzSQNrj>Ʃ8=N'~6!6ғ觧p5=%|~	G?ŋ,^
 =O%K*qJ@/AlD(?_f[ű)xƹ9HC-oSSz"XV"|R	sgcX*NEr7ȝefjU,3o=9KpOs 1^F
of<^e<x;5z_7 ?y}z.9~l_-۰o|j˜Kv[S4emrf}\k
}S(fqu4nJBBd,rA|w574?cg&J`'1cI"(FF`(Ln2Q6c41\g8"QJyX/?|]n-uu1	`?ۗįI_^XϿXA,.GP]|qFIld,jS,jq|QfNEŢ.9=Jv͋b񦄄ɐH@{-	֞6bcb8ObsM|BYWYӘr11Bt@!3rPL,l!k"6L<VaV9YkRi3eCe4䣨Ϻco]X.]X	b%ku>jΗ5#. aG{qn.iQߐo1lbC?jF&lữ{v:CvH.4Qߗ_U`yW\ivl}GEg@BW%g#-QsgkԊLh&x{jy
k8fԀbXq)VZ-&qeX#{K/QfG%b.S.S2^*Ume:kG2%C̶F+_Nr4h,b۶t:IN</#E_!$ݝ)qg.Nn.JBS[c؂R\#񞴝kn
\\߈=xI\g񎸚BZ*xq5SKS&_nq3:q,nmt2}SN;!/Bψ~#J/}(Ro7Q^mH5k	mg8ĬhlpBӭ6N(w Chp]'"$7hUZp/
?ʱs)^'rB*1LUg25|7M72˪2msO_V1~3U2/.RWRE˥EV2cp-uK;xY]=K .uVxl*1ėRt5_	gQfSJr:aymc2K@}cx`Ic7cK%5?>3^o`x7hGD|Z<x}q} ē8(!4g8[~S<'L{9ϓOůhx_4[:]VSx?.2]+D{+t@[Jq:DAϋ7E*Foa[+N2f;T!;g''$3_~|0XA@2`w }!QTq0Y|6a&VӰI1ت,l|'r_Hoi	7X|7ZNc5sYi!TjEQl-N(*}(l0Eqfkh|Sv>5 ɑ>@O~rd?0H_hxL&`V)Z5h'`v"hQ;	\/&cV}vA-~߃M|2|3߃HjA$5߾ ߃h
lɰi(NA639grx}es?t^Pg=.˙0Ou΃B Ofa4s0úz>N@v&c pv6zfƵ;Y[۵spP[N4ֹNJl#}ڊPT3+ڍ-G0J-C([#yknmm9B
D(Va<_O֪"Z#Xd;֣]eV-oGemECS|TT+MVV
cHYvV Q(Ў,e9/մZzk6*JS7(-:PKE  <-  PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat576.classSSWnW	 *B@چ
u+*
-12ՌS.
ЗӗNg|_ĩN?o}?hw7A,i&s{|+7тwMxOAd`H^!Gn>0p>~\P'OmW[p+p}k䂀+Nen^'K5ύ<Fdj3o\#2ֽZX˅ ^M&wfo\F7p rIWe5
Vc
ܜ뵒w՗l7⥑2=Ve(H0"p*.RqST[VW ,yű>>F3U<DD?JFTy5[A*C.yH !N'D~9W,yh*JJ݋OyXE*kCzW9D]JO+.N#
ŉEuS3!w\WށxLGVRf9u,؊3WmV5Zi
۠MIZK-ےQ+i[Cd	uUy43@Qt4:4~F";ԫ,=ʒ37ԫScOŞNO={Izس8dȰd%sR=Aݤ؃|]I,K Uʟf{Ix;fjl_Jc8jg|hʣ݇xZç<y"^0'ŖM W'H<@=13ϠށS3XJ,ύ9gN!)K#8dS|ޫ3TOinfW`flwsg6UG{$I5[߭i:gM<>g75
|	Ak[Mn%З.ke_^7׹kϓ{Z)'$L ?슾X?w>Р:k~*U9Q!18+ݒ%PK*    PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat512.classT]Sa~^pŵ2ŏX2цɦqRZ>EE^tUL~Tv4s}γ| ;A!DQ)i .c
CmqKCR@]^^@ŷN*0ުed@ SC7=*;|Ѷ]b'QM햫ku.2n{a`XüaH鸆i\qY,급[l^qa9c0hJNU~SF5մkJ	0հ[{A	v
KMg:mR=NȮTUW#]'SNڹoղ[=Z^Ź\j}LezQi?򅳞a:M*A݋[Y4tmy
!l ~sEH
Jg:'TF~CPtCJvK~'
)?He7+GGdVK
J	T(Jd|M>,eK~S1UO"#;:ӂy#ʍ:(i~Z$@ LzX$Vh5th%#DOw1f9}}?X*ɽՁ%9$b>lcdc}2sVdS6X=L(Ȭ(g"~ae
4YDiQ<⫆e^:PK0\L    PK  D:U            7   META-INF/versions/9/org/bouncycastle/math/raw/Nat.classZ	|TչΝLH&3&a2I		dQ@4C2hH 	4VDZ"h+TD[TUmUԶOQZOs3k99_?nʧ;4ڧK}M2jt
n:@wrr~F?v #}{?o# _~/?(㗇0=&4Ook茴v.tE%rLnnmH)(\&ֈьyͭ]VGۗDV`D46J.R+O-4\2?xD#:%r3!m%mhQqc5mkh:?ƽ絵7߬}Z*.t陑uk:*c
BiaְRsP u#Q~mf
ô,:`xhmZZGkH'>bZ
,XJc_(0Ыr6>1"MؼfM1+$blE7tEZҌ֊h;zִinmr);ȥuεe;FKީ	i<,6qĄJs+Vq̪uQS
h!;[KFZʺx_f2.\.)84<hVs۞m&ԃQmnV42NUYFwF}LX'^0ӱyM猶B.l?a>97M<ƍtn_^:\mi^kb7;=K<;?1Ƌw'gŞ ;Eؽ\5qt*{n 1;=mf݀X592ac-|;4E}q[W{CtV3R]QڛVu6lnttDuz푍exCki)3YMK̀ѓz~(u4CO3zhX--ѦH˴uΙ;Z=4{9zCC_y<.-\v5αkykZѯ=(Qv*qF_B<[}q*yyW$<xsGg+,٬ݢyOLbHBGsSk:1yfushkSZhٚ2u?i--Oxx	_b޺:[bE0%ܠf66 ͣF[X>&|
L
u
u4F%x WETd<CNMvU2%:Ǌ+I<d6"JVu؎:Rz8$@p
go P&eQ1
Oly$E&}A@MPPi+ 3qG}xuҔc1i_ RF'!Y<I4͖R[
z
*|*0Ga#	OH.cɍȳr,@Yd֥,6`hMHI ~|1[MY&"?\9:Ɓxc2f1u{ۥIݺnSk2T[VCS s*T;
W,ron0+
N%qgS8l88D-Ll06$0=ŮJM	.`ӊ^!/ڑE*5cj. |vp	 .i.up V@:x
8L #^s1<̯ڍmW#5(iw1#	
M\`j"R>s p!Zk4Q [nEnit7BjA^j90CorYP$e%J3$/o/o"mFt
8Đ}9li}ZOZO!P^(J(PUPxh=6pvaKpF	^S_UMVMOA~*<Irz({>]]ԛbr		
nRUWJ
<Xӫs#..{a=uw\lhh'[UJvzq1\gNˑ aN.Eb<&ɖn0$5?NRSQRTj= aG  Bd?K?>d[
UYW1gP46{w5##z!'c[[okDq5t'?,1ezPme̡ؠlğ!.E`)|	a$R"#5B%ՖXXR_kxi~
LЌ:;m@]|Z2

ϤfɄiT7!A.U.#+)/OK<	Ǭ&)H9(c/.͢y9[5WǋGl'(/)gMH*Мn+	a~XKҁaD|O|7D;ԫ(΋*eJ"i+9)_rQ"#y,b_$_ 33ъX$a|/cX9Y5d;

\/&"4R6x<\BwRkD4UG󋕐?Fa2[])G2i2ߋ-I +
Jwq <z\~ %AL@,ı3X	+1ɀXw|㝀RebXJ$IOٟ';N9ywN.Ci< ͧRJ),-*KS9BZd H2ҭ=^M#sUsCtz 倸/q*"]HП'!Ns!.Ez*U@\5@rW?1z>q)JDf8Urc2U$Y{ιV$S Qf|U$/-
;r`+qb"'iz'K'mD$RH[LFc+R9/iI2-1|h	+)
kU~W
`iXap?,fG8c	t|D&x-ɏv7FG|:t4k~[)[1J; e8`x5;;`M,t5>{K LD:/ǘ;?L_q0eI@A)?qŤ:W+-5HNjf03Xe۪d=Au[u5f^#09!=
S9SyXQSeJr϶0Ozo6+%a,@'`(@~SHeS	ꦻ5&T+^n
?f_%_A@8IA74Rm҅S,n'hbNf6^/r>Td[X{^|oH&%S70˼<
P;q97Gp\`EzÖF(UzU zWHI!TC5Ʃe
jaE
)Ƥ<0(<4?? )~4LM .4H^oɳҎӀG)qfn1\ 0RV]qfރ4p@Qa[%%4\V)$k4Nv$n#kDN.:?^"2_tS3 ;řS'gPxٔ+{i<Jd?sh25r0^65`%fK1:gRP^rNNf"lnRBf,#& <ȣi\H~h-U%K|ۙ&Ɗ=1fT.'\A8Paʗ+@@E7Fb5X'I@"+ t<3\Ew<ĸ%F3 Wj%'y>ir
Q6~yIeR8JtӬB	O [^eA^N/A/9Byr8kT^)4'CaEC@|"xWR{xo}5-7x7Ӈf`>ar[sh(ڹN.6DĩQY&o&)0ȿ2_ 3;AZX.zXB7Y's}I]b3
VNCEe7t6đݰċxe.e)6|["wTP|q7L LǶQ9^jljM*wS9sWvtIG	?E8BamQa
p{)+P1֙iXE2$W'#6?AO *<x2a͠yz<Z`%1ZOh.4.81SL!Q(p7plEK'ޫ*H^'fBqYo<7>XfX^78*M,1,~`z6XL7L0qC4>sϕv޳3=p$}0SԛB=6M\keq>ͯ6Y3!j>M׭o9$>##?	'䟀4a=o3nrDU8t4%|7]GK:gd37ݿx1w@Td-XJ`iȧ*:؃GX`9]x9B^	tuשEE4 E\I(iV<F6\p Q\j9hap*asb"u[8b#n`M,KdşeZ˂ob Jr,ȆS2&*#i2j$dhC/v!,@
x>GO2ۓġt(1o:J\2尀TTre+in+X]ˬ,f7_iT󓅞@fmu^Vu}޶Kd\THz
*)O5g4KXG>/ۋC,ªˠNW>V0ݹpZp?)i Rea"tQ[saXé*x}7KAshOYr:KY_4\Gsc?uy{iηjPnQP\C&*RSv%-zNSf+hpn;m'hwٹ݂\g"U9"eH	;į 3p+zv [4\v ۓٽ)IHy֣~ID"^N<|AtAM|z>FMi6^gc'ⷀnp|+Be/m@
m346v"wW@."QU/lD0J_{ca<GDywmr/QA?_I,mTre͆і2aSP'4oS=#=9a>#HA֌QlI67>.U;8}
$<>H2_V)z`cf#ÂɫV-RSx}_'a/TH,}z-ƘKb*M9)[Xsֈk#7@M~
LJK	YGqz !}8YWZ
Bp=mأG#<%?忁aO?6]eQDd(OToY&~}Zp5#?%b
(#W~1SRy.6yKՂݷSșa(y()Q,#0AӌF0mjtr$(/RI!w
gCi4%,'v&
ek)t+:+&kHA;
=A{t2̓]i:^M|sO%=K'\
0\[vlӇ|.IkBir԰Hl>!uXvŭgNs	bHbs)Bc%RJg0VA8,VI簳iHdZ66MݬlgN'\#?)GB8·28U‘^tÿ4^g_;\tZ4!ڴAG].^eNc	J[!~Cfr7͔ oIPT%xWlsd|l9|8Be`d]B2ZΧr&مt5zE!?΢!s3eE%SʋWA;kg[ߨ)1Dw}jW3V_ѳ4ɫ{9p]Lv	j"Fczd4u]k'\jQNT2ߘ>(*sm.	xY|\ 0
S
;\6fzml+Lrl{@uhbpwE*Rk'` _a	lm/\ 1m4D53nfB5`Dvn[}Ʊ4	il
 u:hbw;jNUoOa4CTڏC`waw%::;?\ߝ?hzٽBjtvjIu9]Ԫ뎫uI;Jr^Ø܎S=Gx4;wtk'I)PP3,T{"[EFO)ٯ/!^RvS/ ѫ)?]B~FcS u |QM {_NQQ{Eww:$ #V3c>I:uu'g߿YsNU?1;wRwOSG|k>
"XWe*Iu=}u.AITT7
Whij:Q$u֩]qU_:d5T嫃i:BU)o<]]ܡ^4:~GuéBAџJQSrAY3@Yi5DYj	
VK,, 34҃v)[
`+i:! oғLS
oduo$fgQ:sbDK9AtYW7=✯o前5^ʐe!?k6X:%9NY(Y|r(]]HEbvt}hߊ(I8:q[+ISWVp.Jܻ >l+(*|4

YSGymtpy	>8/6;N	I PKk=0A  C  PK  D:U            >   META-INF/versions/9/org/bouncycastle/math/raw/Interleave.classT[SSW''!	"XQAmE䦭vSoO}ʃӋL婵<WNOvttk88~HUVjC/ NPk9< 438"~8!'V+6*>i+rX'g CƆi^94-Mȝ(P#
D|69ě6.C
܇SzCcv'.27RVrĜg8g/v؉vQNdriNo{HC';dܔ~sN&ԷxrJ%	bh͛%x.Л[7oN)m+9c֓C;`ԇ1U/HK=cgMJ8i^s>tpRxƌ_&mt|ʞWsb)9FZC1*T VaPܷm|mQF8wp՚AKCӜݎSE	A^xeHie~4Z\FGiaL3A}|S9s	xF@I.##?XhB7<7,$6#ыPiJ<իe.guz%1n9bq1 ]fZd&מru}
e]"c{KFKAkcUE1~gFQ>,va'-[2{vBʦx@U-5wS'*0BK	j04e؅L*ΐ,tL_b$oѓ^?uV1hB.Qȗ)+		"cGzիy\ 7e\n[Lu2ǡ_r7{ty}V2Yv,&;]{ux߁β8#Y4~{Jy:-z'w3>F>!|!@u@*@
8=)Q?#m~NSʖQW;sNO&rjΊ^ׄ<n|zܣkEU}B~?;yab~cxnz;_,|^^C84sPKd  F	  PK  D:U            7   META-INF/versions/9/org/bouncycastle/math/raw/Mod.classXkxu~o/^ٕV/+5ƶX^jHkK+{¸8!BFOS`'A!%NдIMP?!OKJWd̙33gΜ9Y a.>4=W>܊O(nvݡȝܥ݊)Rd"i2*r"J6HN=JƠQmC+n>Rɇ(>eEl\W]. z#T3580{r+npsnnY#3ښgvvRRȦf3Ùd&ӓ?-PmGSkۋԾʒdgUr+cK2eЇ(1*zxB*"C۩Je2.HbV햞N:?\J
(y24ݡ>FWr_&w`7R٠A`N-dl75P9{-}6lT@۫V7m5joh!ݔS{RR0vq%LrŁl18+Dpv9?\lΎFJbpXo㐃8*%٢ltp#:6ݸuN?^;788lRWa%;	6sEc0`8x'xB|P:5Rv
].'|
94ӧNޓMZ*<dֹB.߿R}ʵ)=b=[gk6۲ᑋ~2B!u(=@ە
Y"Gp[GS;uy2є0-bFy;]2(h);+x:W[Õ9+{igzXV
Vb.b@2BuRJl[yd:IZ.\^
	ֶO#p]yX/ҠT)Q=Du]9k5EjZV>Q2Nj)%flV5XfA?Se⋜_{Zfsv&aJ37
&,uniښz4j̤4\Qki~őF.iJ8Q/+!Ng$iE'ꖁvQNKD?m
/<LE3(3ZfvӄEfP;~j{3RC40+5c]vh%\EjxkYa73Sgeb£LTOa+Hw]9v(1m,/B
籜@1K2z6*Ӯ5QMV43cH'CD*25DާN	5_:5i"`+!X6\64-Q
qD-mLYO%{ɺI,U+4v,nNJӥLERWeSӓjhN=OB(Tl-HԖTzߒp3W?+d|
<kk?㫠^]Q܏$s8?I0gX2x ?e!{3-֩gD,ŵx\b3D_؏iq!&x ϊxO/)VS?vuF	]\&D?@

3
gWAt6̠a[k,M2cUʄ=\Xq%P!o19a[TFdCG'K?xvnHK̀L2s9}^z«#
?i	:juq3r+ꎙҜx:M6Y8w3afy،s_&5%k,2ߠuҦaq9ϊldŴ5M[Wf5ouϲ+4<ޤIIoAe?ŝߞoRW] %ijJR+aK[hvg{/e	[Kz|&-eJ]քMVi^B=z	'J[/1:{ds
,*N,PÈi	&t #/Wcͧ?'$^iG.Y;SwTyS|\V᳑g.wǾ<AslSXq:tr:4azd;|6צKM %-'3-X*4ݢfw9t-+^HNdޕp>7M1_z"	?a]RMHze@:㙄WePsnBҜ-7'tKm%x96DqPs:TR
=##.i&;t';8]{y
q5Lub9jmb
kB7!6.߈#b+&E/xL܄/꘦N|+Έ]ڥQX 9+ϦxTfYuYoI͐1ŉ:Fڔ5clB%q&$bE`x@V7tz0tccf}/4$FY3G׏a0@27OcŇ/	x>{cPJZH}:Lͩ4gOzZww#"P/X,yYp{Jz1ċ;A$!2z8Aq}xHq Ίu)GK<&<q_X NjT?o?ɨwBI5rlqpAF/xTkZb!ͳ,*̦*!It6a}Ք<OTdJi)	>]2ŔƔ2͔h_y׋oߤOkOy)ei#nxZև
So΁ŷ $۞>ׄXŮsf}vH|
FU3IչYV̟mq5o,UoZ}!XB~x]{V+^]*ҘQN%*P΄LVgLxbm"yjxu'"Fk'KM=)ފ	֬>X}) X90)zy}ze}$tDTSg2k8)ZQ6(kWO
QUXxI
CJ4NXyv-+;O8'NM*/qJ]L?c9CFʰ%5ei+ů~o[-Ήw]-ab	+!~+V`XbxT"{U_pGՏi[.V	z
SVzL̓[NZH{ւ@_y_PMTUۤOP[&DU\CN/mע@YTB/i'濘 F-.kl6h­F34!m,Ac)2.ŗpcxhʋ1,ԛPK/{Y
    PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat448.classV]se~66ӦHBZ[KAMBt0(ꅌ3 8B.2¨0`})Ig{s͟p>8vE٣ao}B-HO/A 0rT
r,!k8.hpBB):n}Br%9Exea.[JŮN	Z
'Pl[-A	Q_2pGP7Zsb;1W.-;LѵvY(7
޷;^GNҘ4R\mѐt.H^3>aI,XeۋÓJ'ֳk+UY#;&4x:&A[=#Og
;oʂ]t.dE)ubw05ֱ;9]c<lsjG8u!HAÂ"J6<+㢄-r>=[֒[}AOX~du%DYANXY:ż;OP*'Bvy,4̹'<
2AEutB:^\n4`eGydTI5'*37]6Sx%oT|fͧT=n	z,s}T	*蛞\qBz18((wp;	DC-HSWjކt 
zB
al5UM뎤lѤb* fj!3DjM5["Ҵo!Ƙ64 EpctdR-,ϤGS-
9Tr=N#y\\m'Cو6aLhJa
{$Q
n RgƞVNmx:d'q
f"L\*_XY^Gg`# ,bzq{	5;`yk"7H(S^EpHIOؔLp_5:v) -.:Cݔg&},[?$`bPP5KPZmcDDf}ٜRS̤MFX8̨=Q(bZuyI~#):fO)6ƁynoHkf2UE4XTd>U3]JKhQUUhW
Gh2K~o(ƃ4jW`!a
c^#!Unj<Q 0ͰVr^"ia	?׌!$_
?ԎXX̀+Njade@
I$d
DhE<>E`6)RJOU	q!*#\`a/{?d?~>A>e#%w+<)}7p6s[EZy&rU4zSlR=5\
[M߳/sxU@ԠSj](8PKuFB  
  PK  D:U            8   META-INF/versions/9/org/bouncycastle/math/raw/Bits.class]KP_4ʈ B#=D/CA0
ŮM])w\%!ws{ ǰ8hI'@ q=.ܿgcWk]h67,pCZYUdlZ&#-$ia.}YP@%`A۴s.3]*̀>r@A]k@@>*	*Dv?cB 11o!
)|X+]/?GQR)"=. f9zA/FQyT'2
C_[=FFӕU7ğFU3ctlƘEAPKJW    PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/raw/Nat192.classZxTյ^k3L&1w 1dfTKT4XH $5<zVZooVJ}ުZjֶj}@r9:ﻗ0sk^_~rѿUaE-H&Aiu^*kE+nUݣjz*U\,Z#70@ΧSTaEL|2>3Yӟ韗\1b2J1	c{tV'5{`T+P#K2v	GMGo{WWٓqN](Kw/O9(KzW]i:/G{S	g♝R~g4OXNY5P5oȩ9~]?SQ^+,M/[qGS.NO.UEju6kPQweG?խV<ɶmYTgh~?o2Ӣew#	ͮdtQ#^Ճ@c˪whK>)(\9"'݁b
ӝJ:ɡNW(n̊ ۷BpsNb8W~;gJFnǭ[k=sd뚁8Dghs>r,ڄ;KGn ^ցç-IH+4NO>b$4B5TݶwgKkW.kuбZH#t!mEi}EsŊTwr-IODh"MŪ%46:$B[h+SYNkpEh;]je]T9WDh]	$g;Z|^j	"-T
wba
Gg`&R=3^<tr0Wt#F_g~
%}M+ iXu
=K;QwTYQ4S+MQ bBU4Z_	u&wjpe\-ߣԕU G9iK%5hMۻ!5\Yi@VjR3+5R˕ZY]i0+
fwgw*V$bl*?fFtU4O͇,q|8 /w@pnv\t?Z)\W?Zgb끹z`>L㨙&oI9J+A
}Z5ttMPzxےשB	z,Xۻa>,NYぬԇq3+aqzJ}Xf>W
WMڎM:cQ{tg ' 'L`$`qx28XhWs]
WYʘ
I@K\Z%*ف]v V:FFS4
@bP(yfQB`F1W9}.5D	W.ӱ-lH\.PsZBRzR-Oi9:hw~'n:10l㟸[.v\mCYv]40
~]461i`61i`61,iojUǮYFNk~f 8ѕt]im lD6kx6Ӈح|Bs9]4chO 'g5R7] X+n
+DvweWz`تt9E
,";`\W!&C ht
Mq&J#X|1U:@(_wQtn*k\[w3rr+ҝ6ǳ_9;,ށ;Dv _ j
]+a-*ԼG4Nt;׽P=sTUnmiCv3frUm{Ȝ;ֵxŘ[oT<mO ObS;-v_::xt
TR;)^;f
Cb¾}a;<2`;Lr	.:!GݟXKm[횝
[BP__HkԖɺq	ѣQC:
?fɣkhTHWK~*>iHo0J
!Gc;PG>,?BǤ>ƔQf}AϠ:5bwG/(2i~%c>{>=c8gp69T`mwI/ش&^#ܪQm4
 afp R*(Uت8bF"9QC=]<-/F](`80x9=MEuz̾rYjPVd9k6Bv#f@[jb@eVn֌bI8F0YQ8s+H$`yr(	*Qaw]*TvCgqTgYK$'3@x(E;Y*Ie|i4
<]Hs3񖺌<|vRb58=џgaLjSjD7Op;*e)0 sSޝOgf>-tNᷥT0[zƚM^ƾޮ>v	ۭ'B<QšD(Kt2Q*RlEJVT]mV[:PXfau
uu05RP"+u,vyS5V{EQGT)lTZORZ|O+|-ӧU|-˧UZ\V5q]1TʷR~uՋ^Yɼt"Sx^Oyzx
F7aw!]Λ:ӷSFOvz/rzw|%*.9q:TOx|=坼w6oow}ď4*_okdג7?l5>cKc}u9X>2$@"'=|"ݞ'J;D4(>$*J^@*G(U(ʵ((>Q>Q'|'
TEh/5P+f+fL#
wZBWigNzO/v&ElL^IڙzӋ?s<ff6Uľv܉w}{H#E$C_{@+~?@D򃴗y/LɏG}?a@z?Oq'x5?Y$sH_H?1~_u
/	ߊ0,QO1NXONT#cN^d/,V֠2&V0r@VpV\fkHqpY _˟P|-n).i8,qXT]4gRT
s@Ev-1 ~
:`7C&M <~{=jvG wzw)G3y)|2@3_0 -RåNt**`W,c4Xf`9`
/W^T94*=($(?E\1ۘQT̥=E\*QT̥=E\*QT̥r;Tm9|
d>T	4=,Rn!a'D1(J$R6J*bt61]T}b4=-EQCZX~Qǋ&9Nb<q0f &"[D\#Q!j6	U;@ՅMEgyULm_EecF
x
,Rn&i(VFA+#UUi.V2.ӭvje2[eBHeUoInKUU04cIu+nj)T$Q0(qGRJQSM_|鷢 wq@\*f-N1D*:x1g411>Nuc
1VϛcCcV6
bދh;'tѧkfmm+_ks_]N\"b>g"q&uE,,VM?^q.=.k"IoX -*A8Nw2	A)8?e5V/I.ҺEi;}i$r?C"Kb5Py;(8*ji·z.eb=@ }毘oxEXỹ4}fzY(a3kE6 ֭_-|V_)|N&0|?Ex~(b60p*V`HKS\Fr
;|q@짋0<{?8KW$nÁȗgk.,FBE~GuX^;i؅:K|Vi@܄f=/ha訞Agtg{tNTe
ݴF,g ǂQdr9`ٿQĝwMF"qT-~R	~gzo]v3FC-PpeK'"p,3
Hi]N16v3qt"tv%Pc:ۍMp"y+6cV܈Yƺ+fE6Dy#{,﹡$^DuU7nJvD=L'%v.t(Aې$6bWjmW#%v.Qcc;ca#ǎlQL]رv*uom[TCG	xԳZjj-ƨUʨUFYFFT9FUέZrU׮-=Q\jJ]h4jQaM2ҮTuw=c]cPFڍzdTVG}!>'j9:TX=FWѢIg^, $;@RxY	aΣi)-OPO)\
K3Xq95v/#E
=/~K/c~*~GWYsDW׹^%gMoqx7_'[{|So;+?}!ŧB|&ƊE\SX_,\)ĹRuWKS쒖Yŝ2$a,ʈ,,ò\e,Җ1لf9JNUp9Z#qFvZ9OɅ^.
rl롽ElhSQb|-808t΋9,l
g=A$z*-O"K*M`,|#`:u,h4*Q|e0{@=j>D=VXp
m! 35#s̣E4REPEU?*wiܣDe)\?VT-wFj<VňGU!ekΠN5wd*;{T"Q
]rWCew8,]+ǓYZSXgVʡ*a)wpTFLwIYhhxT\
vltktuBY[[wժ<J=VFq!`#
PWh=א.z*+SDNR'[N&CCN9r
͕<#hPI[4ZC7]KqGOI/ș<ޕ'?l'8(p<<AƓ<>Zx\ɳ
y6_#C$L._,eʴU+Rtq*q\-d ׈!yJߓzxAnɍMI|"/AyXb9[Ir#/gR5r+wN^-o*_ߗȇ)yf*Ű~缗؅tj5=9?Le[[,,SӕӕAJ`&QDɛyMҩ[4_~Β*o4 CCA_w wiWDy%\5RT?ҡ?yF(TQTBU4O*TKT>KR`yMӉ|)}6ʇhH0}_>}'|˟r@>ן5a|p{M[| {@Nd|Ȑ{N 4	W4C>C'gAJkZt|vC%zT/#_pÃ5{`XIݙ=0^VBe+iϲpAo3h/7Aoo
x4.h=@>

41hUդsv9nB-Рhd<EP1Q)
͌h*ZE+O*Tfy|E?CG/U2i6 5`55$m2-I=fF5QD(ϡs75}Bf[jo;WR;iZN*k
}OQFݝn(QAFbF5|QbՖExs&Iנo|_RѤ7KM`k4&c)j#O(7&Ptg-GHb'(O0(h&c)TiJU:V-PKo{R  8  PK  D:U            6   META-INF/versions/9/org/bouncycastle/math/Primes.classY	`TΛ7f&/d`$Ld2h[$H-L&dd22 .XY_qImE!B}kuim⒞!AZνs=a |GvlwB;vڱˉpAxwڱǉˉո[qνO̾+{|߉_~ 'bz@b`&%w|DG8ll|CK	v]y8>k2p)>\oRvʢ;Rp?1~be?qO8O<iSNiY8y^E^eqݟ9s" Ukr"%'DINR$#9JN&'I_*7ju4u-q-N76u':
j/BfcK.jkXYS][DjBX4F#ݚٿB-[LSsAp]#h/
UGZ5MK32
'rQyQU#ׄڲ)wƢZcSC0
wzMQM%
DD+ut&bg۴xbNqttIkp`hMm<֫EۃѐZPk:Qs&|hKq-N7f=+Ij}7YhOcG0Y%b]l'(GǇJWb2'0kU̲,G,-Ԯ,bV6#,"h[yc+m#cL3t$eQ<}Nmd棿
~7!Μ^ȱ")	E_+VTU;+L-Js
DXE\8H+2:q]X!\tVy
~^luw%a)_NUtb-a␅#-YݡE7D8"P0%|-/o͈mKvGw\ߜ7:iox؂nM(R*6Rv. "|NMS;^=*PG|""fO*>(
*OTŧ*><.E*.G/Ewĉb:WTxLB_oz{*Ky:kD{5nvpI%,*|.YY	VzW*7FSJxl
RN'gv1Ok|hoHp\5{"l#Vgb	*ɡRTRZRJiʌCL([%7Qi,#dBx!1|拄;	kZ+!dg-ݸ-Ĺ<U**GϪ#0&H+8chLxXӑ]]5E5#܋3GK8QG^d99O6mT'XN$)ǻ[I:*Q\zg5CFg=:nkO9z~YC8֬P1aر:c+yQ`F'Pr`W6#Z[O8?+Уnv#ah̜=` [<pxri(Ec2=ud?#F2L,'ړ$6e$?qr;V5
Y)\aM.}8<(}wvfgZFBMb&"H*E|W5Щζh-VqH"jH3A=;QxTW>it\ ΢5$
F]*
R30ik8.F3nXzgҚXlMw'av32a#x6tj#OdFXs	d}r<9p-ԑA; \ jX]x@cL]Ý. Oq6}1$mUU
Cjδ|kc~Zg铰i.Ē[: e }h
HÅ,FLiw+t4eXX%,A:YtY$E#'%Qc1z88mҏpk ُ
'.1z~dlm뇻Bn{k T8<~pz:pxQxSIѷ=sP=)r ͝A@ 4&C}&y蔩7q;Q7t@䎢wExڙmP1v>!ٵ@B	A90abG5~C3`G< [m9pQz1$<_E=>/}[7Ɂ_S6&m*t:ޣJ!-ǺǬDzvZJ CR=Wا?G~zAv(ʮx!.2á&$pE rP l	}1'\ykkOwq[=CsuFߐ{[4%Ȧx(zM,*lt*Al*
H+Dfa#f6%;8M
n&S924o>Tӄaj5Q	enY(ZZ決eVDu"[׭JuO`5Tj4:71Z_E4㗝)h-0tId >N!dK!b>p4E5=:;Y_t/]#JjJw 
1X;wÙ9ve9.)9&Ry!#ǕŃ35sQa\hATlDÉ
YhA$*Nt]m`؍&vpf;h`kv0؛La<^c[yL[MML>M&Ń&b	?5)2)^1(,C{/هbP'\52ZshE=.崑pn0@[0]x<z
ާk2ʦ&-n*Ii5mE)AwzCtMн]{*N$'}s, )k#vWxR(hV5YTNdzAjVr`p%K5$=)^vۆtcȥ1`|SݳO/r{	稧_p{ߠerEV	Q=oIvJ2^SCKJK@}^a/X-V*`:؎}x1LRroS+n7o(2-٘i}} v aż-Ao"U֜yATVY#܏+dQ8V˞P :b8nj 1V,U+0<)XO
HXHqލB:F4.;~HtO'm?k$*VN5ʐWı
'J֒I/)p+BRMWgR#mYc՝+7Ub)}c,f+	~Tz]8ǽB#;	#?߸'.Bz7IݒH2/Y_R0 cɉ'$/I%٤rHY4NRK<Q*R	J"i*])Vi:}GIY4^*5i.-ͧ*HZ{=ӊEI Uɟ _9ғ
"V\ٟ"Iй[E#	R(whR⹖ysU3301 {ݲ
+{-ڿE!Ig!%-CT"O;@),QLV2KᇰD4!iב^pJ@&[^m$e6K[m
іpؗg|a,m=ȹqPoAV"SZԂ|)Ԋr%/wm@X7\i>F~4]*9.ŕ}o
.E[&E MbCԉR~3I|
yeJwcy;KtEy8{籖wx1E_wٲ7ϹIЍkubgz+?lq78ٚf[6^εٞf/ίuTZzxKl[3v[^+[|^V2ocYU:
@t_r*\#]뤭Qۥpt3nAVQi'nsnxyjt7ɜ
d^:3BoC@+8LV>qü듂LXl׸<Nd
	V.; 4<q%<~Nx7PK/J    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/math/Primes$STOutput.class}oPƿcÉSani-|Mcв&O>D (w[0^9;_?}
hVc
*xcOpc)P؍ZwX2:(@5mawP	G ~)0;t뽀֝u^7ؓF|g,uqʀ4RHTyrt<2TN7&h0<tHfzP-POh(_
z%{LXEUJ(`ŀ[:LQ_$1_boyrrti26ɰ#@Yk\`e@<iry`nPd_`)ʷ|>nc5̩,
Gi,jҏu] -|zT6f?h^A\Ω 1Xm2cD#PKT  \  PK
    D:U            -   META-INF/versions/9/org/bouncycastle/math/ec/PK  D:U            =   META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil$1.classTOAV
XPRAE*$Mb@	z]BS|DOM8Ӡ^7;ߟr'bRЃD
BH20$F4C!Ðe1GG0@tϰloZ`G@-

B[+#jIzFɦRVkzi-<'^vR磑0_ݺgef~Xg%Ǵ]r*2qVq*zqYE3d'{*fѧ>U<CxXT
O>XnrR@-8
tp*Ү4VJT
.YRU{re͵1⼖kLijE6 5JܗVr<M})RaZS7M<0%'Fsq;ƾeR%xGKhs[t){@{q]m}Q|(OC} O
a;Y`*;L|G
7#,VEodC
\|Ah9~@9"w4Vi"[(ۮsM,dQB^L0zƠAGQQ(`0-L e"ܵA8KH䃸A642PKr    PK  D:U            <   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$1.classUoE|?$4iڐp8q-GH
JU岵:wD CH#A/?PZjXݙ?8kR.%E6	vI$L%ygui
@)G及זUBFJS"A^+s0JO]5E~͉y˥R;\s}B:ؽRY.fR/x^[RQQ`+ae후V%_ϏΑj7qBLP8	\d@ɛDivL;L͠E5U&Ἁ#Hb &P0q!٫+~$"o7My⠪f2tZ-"Lo̥V:nT.-U}M#ҕ!u+}k*V?ύ[ݎI]*.YU}Dsk">TnCûx8_:0 `4^b!A8xfĞ7cHMoy
K5W8֍cM2o>d9Ѯa9&,vDAMtjim:pr'
Fڐ^wp!6>e[Mi6?Τt6:ZVPok<񥝛ڂ~A(1i7w`E
m#
z3u#c'GڄIY_MzT$\lIZmi/rS1_8l(	Ê҃eS0m#9JhL	oI5ur=|!yw+jkd774βu=PKt"{    PK  D:U            F   META-INF/versions/9/org/bouncycastle/math/ec/ValidityPrecompInfo.classun@Ď'i)4ЖB
		TBjV]&4ux=wbBbP;Bds̙{3?~	%`[EuxÆM[638}op0<=|wgh_wCM#5CÓQxNx
3b>2x&R
y蝺"YYo(PoNLOCk?a:BR<TJt'2V7
xE~ku{Mj}ڑLc_k00^6AASe<qG2+'*sWna+ӛwG,Gb>
TPy:
:b6o湕e݀*4{E:|g|CIC6yTX=S5ytenZ=n-jkrZ-DUb^'tZ!\DoҸ_6;%A PK-T  |  PK  D:U            A   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$Config.classT[OQN/,TZKi *HlJH-AdYeu5jb!D}c:gi 9g c	Q0$Ni!!HzF!ǕJ,^a`9+Vٲ+SfHZvIY<S{kp
d3]Ѳgzйt6v$XKa ^{R7uwUpZ8bfuyen/YZfq9qY'z8Ι&38aLmgL7Q_C*~-'[eM1i6'zDQW՞ՊϷq	i
gk|F#k*,ZeaBI4h)qF$n0\N%%ge2tzU*򕸶=ڸVq}zb27)A6w=(϶*Dzb;Y~5!~vpj[Ϸ63Zٻ!Z%Ӊ|u|T3,)EOM^UDb1;}߆s`h-|˹d
@ QE09TE("n:H=/!4b_Hctۉx-E -%Ewo҅=H/&r={ Y̐}5w`)::^bs"¾lJnNT1EXUB
Bhs_6S(̣@Y
Xu)$o]y"hK}O"D>/ m?(MIAUM=PK	-    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/math/ec/ECMultiplier.class;o>SNvvvFҜ̂JF
tҼ⒜TĒd}W̼kĲDSfg^Ijzj&a\Eɩn9ξ3S@221A 솜ļt}6FF&`dad`f`X$ PK,      PK  D:U            B   META-INF/versions/9/org/bouncycastle/math/ec/PreCompCallback.class;o>SNvvvF܂ҒTF?
tҼ⒜TĒdTg:ϼ|kMM/-JNu.sNIJLJ,Kdd dL=# H~Nb^RVjr	##00203X@
 PK0g      PK  D:U            =   META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil$2.classW{pTgwfonˣ@Ih(7`

-j%{ãY bZh&BT?|Lǩ3vSS3R𜛅P:cfwν܄W4ؠ5ܩyn6l"UW|D^t,q>$l/0 kvQYJ6Bf6(S 'y
Cbpn={?cq+K;N Pp,9Dj(i㮝^_6	es-}١Lbo"wSvK:؉膬q;̉iC]63nq2kN}zwh6ij9{PmxEىlzpeb}׶!gG/ٖh,P;マ5
I
ĀѵɻNZmz9x%
L'֓%쵎U\'u8ǧSͳKݶ;MXO/h2qv0p3V0܃i
܊.q
<!//|_5̾'7x
gDACg1b0F
|Gfሁ(7=`qh% ,.p&N/ݵ aѴkd\4<!$iI3-wmncR}\~rʕ=+JuT+e{DQ_'6WOE;.]LC,*07i'r'rtu(qOsUwՆ1m7l+6D#Ra;B}CcYѫ~J`zn'D(4DZ[[Bkedsxy@z;MNZ*Nz;yΉ^4ԗл:՟9@UA7Khཥ^Qd+^򲹤V޼k6z˄fr)WsǤ薢hS\]!i5N,v0
v6mTr^FtUUIΡxCUJ`3d>s%|"O r	Ɠeu*EXՊ6.AW)Y#Y\%_I:IK5BDL7*l/ӥPC!y<~c}ڠ1(ycEn11#]<f\L^bXMBt(TBP&P1*u?]4Tnn>v
q YY<mp*&u&jYxU
~϶Es èL+0
3p=CTofY<`cjQ]'2=Vug?3+,ujͪ"8,Vxݰ*̊f#,⟀9eVPA윜=E??J1Cs.>fyV0\+u<mTpUmVdUcV,2k
`|f|tw։9ZwO'LŒatFQ_;NK|Dajq&Zu1ha+1Yq<hDLMly"k!DZA=b9=t<np;C7;q4DNaxI!я#8
x~M~-~6dП)LIBtvryܫ=(OQ*Ue.RTo:ROUoJ*͊*AMU)"f%T*SlFSvMD8>A
-V{45o	pI]t3j5DŽοaY=u{09^l ;
jnz_<47cvXF,̘\T羣ZQt"FK(ڙ:o?3qj:=r5pM!|L/ooPKr    PK  D:U            A   META-INF/versions/9/org/bouncycastle/math/ec/ScaleXPointMap.classRN@=ӂ

]HXؕ+BW&vZ&Xb_i#qQ;b̝眙3v
䱢#UeT4iXװz<N<n<[O@!Om`D(aďgT!׊$U8\rW!38]ľ.a0zl	Ǘ|`?=p:6Mh(h20$hh#%[@.]˪%O3tap3RA4*
u)(Wh6g022T%U8i=@yzbH\PK1bA    PK  D:U            B   META-INF/versions/9/org/bouncycastle/math/ec/WNafPreCompInfo.classmOP:ythW"@HBD$!ueYE{
/4g2]ePJ4s~Mdtme,;\U0]WsށC-3-r.REZcy+FrQ5]ö5q(ծ0HcíTJ:#Vd^+kTKv},S$_]`-TL'ɭYjz+vbve!]T"cR3O41SEZ5[*y?Fk
hO*ƴL&y){u^r{V͝زML=U"UtpDnڅbH5Mb(V@T%H,C"C-+
׎h%oS2CLW!1R:;E"H*LӓC?N{5(Rn'do(,.BH%84\_8@+HxtIᨷ~M0:Cf)2H:!.-Cg"Ͼh,7@:l,7O(2L9K;+z"h)^#藄ޤBZIuL$85PV⬕ˤɳVh{
oPKf    PK  D:U            F   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$AbstractF2m.classW}pgm޽fC Q!ҐTBgC&pvRUA$6Hg:3ә֡y.$\
3^.|~{| 6-]*$e*>ϩX>~<U4_GUSSQ8,y.,L~ܯ KE da-DU)xLE5"#|	G|Yj<{zYg=Op
[
S²}!!
;Drao֐a;}ѹ-7㴵մLϰ}IQ2f2bɸ(}Zv/b1qFVa?/jh1-5
cv냞:OJ?+YmbFGڴ\	s{/1b
M-
-atI3JsHl+V]R[ԭv68F,cpCwNoVD,]LLčX:5hCdKm^>?2x2䤓Cƞu׌5Pޱw/a]&c[7[P/i%ZFL
&;@q^ԣyZJge#ԔXBuވZVѶa
[i
Y=<ᓈ5܇Oh~G8amN┆8xly%u+M&lPd:Xߏ5OkxOS
Xy?	/i9.hhGledQvNQk~ ʙ,;uUczmِz˓,nJc8^aWW1
㘐Ѓ Ɇ,m;+ix^Ǆ_xW5\co⪄y<h
쾨w<
Jǣ<fQjnzFySC͇\bs=R߳trJL=y^>_"`Lxf1֔Nq
5HyNaPɳpn{~#F
R$dr!̚r"!U	[S,Wև
w̄!}jX	wRTu畷O<Ϧv̓ԅ)*`rwZfh%cmڦNНr/Zsm`@OVWҖKʽ͝r>חN<y.Tտ7)e[_>:~a,Oԕm:.
Mo9iK&LOu,S?Qo$Bfn d\Y=B=(/=RjQ#rPxKIDbN{,V MoŶ
d**HJHznz=D+^ݎs/ќZ#DAB$#rh&_)5xv*]3(chy|%=Xx5("/!BkxkqGP,bчu"D86q(ǽNA#}4Nصu)%'QJMyE(d[oZG>Hh)/[C	,#8fhWٖx>,Lٍ	,МEd,#$J)4TJRu<Fڤ$u9:DC*CAj*	pt_(CU_G[?{*s#,5sqO3XuoY.]1Wo#v< PJq}C-&IpL'o-(
o2KLEzIA]v$$Mk@AY@ҋcҗ(b5T&X?e VOe6ɢLE

U`C*h}h£˨aI&QS&@PUTTVT&JZ#3`eADcE?.Lg7'ʨ?CRW*=@'1/FT]tOq:a1aJ#S3\b#xLu#pTK7&އT8E1Ւĥz)C=3MG} +5wR|4%+(|ETq&zA
UwR	mݍnH
:YsRv
'$]:l!rgQ/%g~Z
sْ3SӵP,x:1TS2}E PK$    PK  D:U            C   META-INF/versions/9/org/bouncycastle/math/ec/FixedPointUtil$1.classV]L[e~ ep n3`vU)m8mQzH{w&ńx+yᅷޫ7VC~
ؖx>O 2Û^T. o.;G.+|4ț!fK^ucc"E$"X3I)3Ll򝤞2FpUF28rpy
ZIg(
ouꀾ[BL
S1]XM9=!k-g$յE
fsFEsWC]ғ+1}Mu"%F:oK+Loadw	DO8MJЂl,d6)ҙN&3f,ֲ1yL*xghhQp7Nf*NjS2^Q0i3U*b
^C\m㎂"DM4rg?f\$Fã٥L⁑R3e½ZF*\'"a1OKp2VzϚoL#|!atf*YK͚U=C]P05dƮR-ɜ[FDcahߝy@[,"RyDܷ)kNI$Qe{jdIaQ%FN
Ӱy<.5h6u;
c0c;N$s:2:دpSp_}	h[#v?qU
*lձ&=m T!v-!Q$oaITZ4Q/B)Pb[ψ$sHPrk"\IdqBNeUc$"\*oݪ;x*Wݩ*cac!lP>:/7@5fפ'EQ(AU&oSl"
P) :1H!FypV֨_G?%OGO1mx1D/D~~$"iMւ(Η0zzf{h=41sLDEzh?йKٵk\"T DN~@?PDcNmB92]RK)+`_h?@";/{)L|k4rk3JߟPKn  	  PK  D:U            @   META-INF/versions/9/org/bouncycastle/math/ec/ECLookupTable.class}1
@EhLL$[YYAPo%F׬čG J)g^}ˤI$hIpLhˌ*MQ3)<03=$*\
񪉶<UrrWNi	g[)K PO۱,;pz5ѵPKC      PK  D:U            <   META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$1.classSNQ*r)PJAQn%?f=Ѕnݒ(@_&/csB0Q&w̙9~~>ъA	Q	C!1HKI
q%$$%ܑܘRAq7{fFBGh"i='
'+B38a`vRhGzH5/z*nچͲa#H6YAh]5,^gB˘̄81^cc6ߊkώy5pqږ]ttlHC8j[M55l
䁂PІv	"$fY;ڬ&3Q0
f$JÔy	 aQ'bYQM'e)SR}{Xif5Z'|\q˅1)_"_L13[f`F-:"ymmje.tU?h;{I\^kWO)^/XFoN`.֒lYFSPuScp%h;N˃J|F-:GZc'4YKhd>T^mbw^V:+W=Z'eBL4͠1H%$I<DP)3UuAaz8NZqQsns; &Xq( PK\_    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$AbstractFp.class;o>S~.f.vnv>F6̼;Ff
0FTF~̼TܤԢĤWp~iQr[&#얙⚓WX`__\X\XG1(1ĭ h823//9'8AHYF :Hy`>vƍ`iv j L@(
2 PKo
_E   1  PK  D:U            >   META-INF/versions/9/org/bouncycastle/math/ec/ZTauElement.classmPN@QH8+"*$
tg2d|,)G!֦H3{;;;{?/ wЂA
|}LjdWy..ڗN+9,̎͛id!38O)"K<S6tyVy`E-eGLoE_+ՋJ1\PĔ5q+S~/Gg9ۜMXaqO`B#8].c#cn;A_PK<&  j  PK  D:U            >   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$F2m.classXS-Eˀ2$Ǝc,  ~ı.Yq&m>6I㶩>l7;Sp[@3%}|>>L0#Sft{w=;|3TIYQCQNqKHɐ1$-asO[LIxZF
ln3#Ai	qQF3%x:>'c
y	/h$|PmR7MݎLFx`א !.`C23f:'tVQ~Z e[9idr7LÙg٩Q+k&gZI-3Ѣ'[c,t"a qP@k4{J򂇍Ttn/<xB Yc>ԏf'Gu{XMӌܥOzRs1giy(c?nzx!Fzz;O꦳tu␓icY{v&m,ȕ؜NMYY=fC3Gcxi*!GKצ-/i$եkٴO?c*m趀.Dɯ7!E+mkr)(U-9>Lv0}w(&/}xXA;_/k%FJkdmô&
-n*ՏHKGZ=qjb[Ӓ6Y"*6/mA*%|LLun^kyҔ{NV) -hV;GVN8^R2^
e|\CcxWqY'pbL
>GOqZ'Qm|r%
GUմfZ鴞ҝv*+bRr$xv&qcx y|rKk;^VTmk3g9'Wp+
n
|	j-%Vn榀5;G3%i]*%< 7"um)7nVHZƲש/}$qܗ(RmG)$k4m8ܦCj
eA#ef)Q͔3! ]2n9ԿR.%Z"+j4>RmXKqtsTXk
ګ553lGt7sRbGzG '{?Mh]4*Ã~x<Nx
E; DjmϷ+!WiFDev w~/:rfҖW!WQ.=5냮^A_#ͯ/|e @|(SkPATWlPP 'TbylՐRsg	B}P~{ُ[Oa?~q}dedH CU_^7wzQT'Y5Kf	,A%t"ۋ\!tzqk_qj|mw59V$Vؿ 29=u^Aj9o9l}-Q$*\[>UڍT=qn[vD~:1ޠQ`<{6s7a-9~NޞjdDq`\h Js޼DS[s)-<QbZŭh>1AqT lS`I	qR/xxYx+*jj*ZmNWS,#x
rMGdOY)JtDg''Zstխ=*$vlY5QW,O\鯛PAQJ^EDD^T\dZ~\vFC61!NYK`y
Ě:<}uyDRkBϗ7*oΥ:S9^qxIt	<&1	iIHWQ7;-܃j	'BK8%PNr$p*`ǈ	t+*k?R|\K.X?PK  W  PK  D:U            >   META-INF/versions/9/org/bouncycastle/math/ec/ECConstants.classmN@VJEJBRDclS%MXƍqP3$.h?_̙pVbB6<1A#QB҂v*(1$͐n9}l;ѫy5/7y!nXJJ֫5(QjEΐ>u}/3+^9^;uӗm븼	0FNu

{0]ȼ!ydNl}snA5UD4MnĠ;$w_
+c$RT4
?
EC
}ay4!DOp~} בAJ"U`I1)wYlHm 
iLA
3Xh,V PK
r  4  PK  D:U            G   META-INF/versions/9/org/bouncycastle/math/ec/AbstractECMultiplier.classSOA^{p=XPGkHBBRr=mIxW_K5>71333|_ Q5`⦁[m%´5Čͪݜ{#Ȑx!<!Wb;uWVoKVەb=dSnm>Pܲdzmwg]Φ'ÃjaC+;Ҳ(C4
)Onr{
ðq	HJnB՜]m2l^<XTQ&h&⑎%l	gxMTaX/QQ/]sʯܦzrԠ/"nEؤpr#.k@
c6߷ѭj4',рCY!C/dqǒV]l(֨h3iwL9ii$Stʑf`h0F23ψw1;Q"v$)xX"O`8}UJw1ҡCQ(e0(n<cЎb1:&^4E?!Fʙ2NPKU-G  n  PK  D:U            H   META-INF/versions/9/org/bouncycastle/math/ec/FixedPointPreCompInfo.classQOAlݶ,*Te1l411HҤ>oӲV? ?xf[)49߹s3
6IYihyjag9j2U5T?
N?N:ɡ'}u_QF`ԗHg>:Ic[LDo(L	dOfU5	6do/eR:[O,c[*0|o8SGa3`4/SGUP_bi7.'{\Zj(aFEذ1+scIu5d#k|Y9Xmte3\-K<^PvBk\<g]un<`_)+\5%@ҖK2
Vh=w9bZ]VY8B]IhcI'1su/~*
<PK    PK  D:U            F   META-INF/versions/9/org/bouncycastle/math/ec/WTauNafMultiplier$1.classTmoA~\B[XETc"$M
mM\z#Ҥ?QML2Q|h\r3;<;
/㸆x G
$,qx"㩌!2}9ٷmwWK=uö[	]qdpϷ.}혶
sVfymڦ.L9A8{!iڢmE;J>1]Q!
055DTɃ:7)?ra9iwkwdh*(EBE*!)a62*t<WCa?*C2d[[aIwPզe7cЮNawnU]jڼq.-yԋ3
;kR9+LϪ۝+eć'!B$ M}I#BnMZ%`)"_hnA
/HsXPDa+ a'w$j-hF$>i	XTd1'nPK_Iڏ3    PK  D:U            E   META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$AbstractFp.classTSUݛM6IĊP-h*
-P"_A*P?6lv}Sgǩ3ft?蟡ɝq~=?1QDΰH8C:A!,F8s{.+<}Ũq\JrY+,^gUtLĮX\x`2%7ʦ*S53ruke1i)UU9
[Q3Ւ̒M+/!(5jSo҂e31,R~l:]GY2ՑR@`%gm",u&-Mck]i Xtxy1pS
,Ĵ7bMem
m:km5&r/Zmw뵚[v]b9dor
EKb{r^\K~xy5b(8r˓}*r?JecV@˼<S=V<W@8ZlD\W}{7Jk5
>G]\lI^1]X	mzC[CպX5,,g; 'yRs#f2v|)m1nU~7)C%ֹov.M4맙F:ل/LBty>Dto!N(3"mBƌ"!/%lazI"
h b.dݻm-\Dw'DgHfI
:ՆHfw!o˩0JhD.dcXm_gXg(g#\JKy=č]KXU<7-#fdb+:s
HGH4.dxIk8!㤜cZN(XX3,>s\6KA.g~OY_1:qct`(a_!~=	iQiSD_Nc<Vu-PKN  k  PK  D:U            =   META-INF/versions/9/org/bouncycastle/math/ec/ECPointMap.class;o>SNvvvFF7
tҼ⒜TĒd}W̼kMJKS2sR⾉zYeʄF X?'1/]?)+5Ynf`X$ PK
#      PK  D:U            =   META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil$3.classUSe}_.,KI/BhHhC)*R#h(
f.&8:탷_yPGg::2:S|m!$s?gi:8#][s29WUx}zABxQF qA$5(e			2(jy&o&FȐRւ-kj걜jt-&Fz'ူ5L-Gji6Uv:o=3<@|FӰӘy8;nu!Gr)=?$FlbFv3n[ejI[nPN4	Hյ03OQo"1F-NBo1KZyM4Y}6E:3@
ҰnZi	C
10(h@xFA.1+MY(^W
hS0&cBLJR0
:C^(xo)Py

4FUF]s%75MgBA/0DbY.tޭr}q5Mx)d#`8gb8aس[їɣ=
Ot?x|ݞ0#HґH VQu-tLe';m-AcģƖ9Kii<yIu`>l'U&v{5*\p
۞ӳ_G/&\8 a
@/37pHEk`55"pKrj2A/a$f,އgrgxn͆#߃+aiiof{?3TPJTu#>)	IEԔ/m@
!_HAcgl}Ey8 RYAG]rPɾ6';8%_d/PsN;樵+8Χq_C7\E070pga<U;|	e>D+_&{s%6qP	hz%<4\4,EW4|R:+W$-	$7ugZa?	,+gI78"butei>w\xkȃQ}E%jϿPK  	  PK  D:U            @   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$F2m$1.classUOG־n !ԡl8HI4-q=b*Qȕq\qg$mR_}/}HFkH-=[@3s73<b¨cBq.>c4ɸG>q1ᒘHe3ț-Mo311ebUf"bb.FzjLCx:
Q[5TrUmm8=Ө~ULX(4M+ERͩt{[t2[чo0HwujUn/[&`yk
ZugQOYpkO-6gle$)!7,÷ot Ͷ76<Ӛ	Jc EǴzY


N│n!ARqPЏ2
1 a2d 1]앢m[/2@̡[J:y=kB̡LmRqCg~P
<C"j-}aӕ7C?D-zϸ
hTnS~%0LӪSccmߜ:PSzE?|^=¹	3n7|~:o"AtDBtwKӉ4@Ӂi0u!DHm06Bj6j
I"!!
n|gZQI3[&R-׿xHZIO!p+J+O&#\4~[e5.i#_>Zy5'GO4gyu)'=4A)8G5 
dIo`;4h"av)]L'$({("FW_'j6E=
xui+5z#'`9m$BT_BtW.S$(W^ v˞#N@+f)\(:uC';)?H
g%-x}dJ>!d|PKa    PK  D:U            E   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$AbstractFp.classUSUM&[	4~$HI.afnPgqǎ>:Q|8)}x|8(̘d6瞽wsϿGA(.+FLUЅ<^1%!,WB$MiRHSBzUƕ ^SpWzZ<fI\`]S02S;Wwm-ל،Kqkrx/d9C˼nR>ͭ-m]W5C&tndg
Sji2[)!Y-pydNlY|:9<_rtdfv2|fǁ&:+S%\dy/Zܶp:N?xR2ɝ/KU2Q-U=ս',JV't:m~Y HX*zT,cEMxK۸"akxGŻxOED,ǺT.#,
Œs1mJ"3!in&+
hw"b9;*$PGpvq:m;qEJBM&ff{	Zi6m,!Nwq(w-=`uhjt_&5Hěűz,|$C"򂉆Om[ZE|Sn;z+\CW4y*dV<'h04eWjfLc8~%Y}ע=e͜YVm
NC16g,N7/ONH<7s&CJN' r10wįuT!?ݤ~`.A/DwBOS/JK^ge\4R|
=hB*Hn{J~xs<DIE#.JnQ*֡H!i'*J-57O&i.Y7@7##iOPh"1Db3~2~[m[wCy$}Eh:&"B8I\J$}1ƤO>EJe4c؞\F1tXJw;3s(#GA4-=*}:r*R7{xU ~I_K(!nA>пPKy  p
  PK  D:U            E   META-INF/versions/9/org/bouncycastle/math/ec/WTauNafPreCompInfo.classR[KQF\5v*$DKBOERDE=tv;ڊ^UAGE&!g7Ϸw ;(P0D
E
	ZߓMװLH~	+8jcǑ^+|_چ醎`	?J';CZaܵ<%{cxzEP$dOlG=SzrDo{v:q#hT&GnYȎ)^_TN{F
4TɄ\D7igfGZ<V`a96ʱ7D}vl3m k a:qИH!IԞ{)W<<f,hqsH2|XPKPk    PK  D:U            F   META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$AbstractF2m.classV{pTg<

pKx&,"n @S$-If&]MW[ZҖ4X-HEnjqt?Ψ38qtZsÿnr;9~DZ
;=DڼpIu<˻IOyx{xE&{ub.m^
6O^#{:b^,Aw<	&6$~z@Af=+xtGy`(Ocua't<@E5
6}=T,t0Q?|
UեVT
+ZV,9sƲu񰥠)ZR=V#vyv0{#-$ExL[A^{2z98?ޚ[	GP0ju*hDSqG;[`nt9dmz`(aJ32JS
rRsÚ~Fc,f%A۶lJ״bҪ
V6ZO%BVCOXL1939,.
^ar|ī:l+Sxk2p_S=c}(I&iYN.-J@<KCx"R
|08k8gMe<SP5ü0qNAt'
~øk82ʾk,øl
:h`c>;Vݩ}L6Hcd#2
n#k#}g%dD`i)S2N(pjdaO"T`.{7'2MdKjTsJ7.@D"vL%hݟ&#QZ/5Hk>۔f()*my+S툦x8g-mN'8-p~6>Mx{29P2ZȕKZZ@)>Y㊩cv2KR:vҷ?i`4rhj~
z{J) r jCmG`8A؇L+#؍^gQ,6֧A[mYiVFwu_QZ6j%,2J2-ȨY\frZL^U?'S|1A.k\|π
4[A3n_ye+9
]J@F.}0, F2iOL{}i|Cm.OC*Q}(\MkM@344rU#6i<Q`z+/4
.:HBbR觇y8RC0
~MnjU,	RMyQShKhw9]!,8	{du^!=~n!^}s~T@*#XpQx$C&,(;mX-:ABDB؍n z^DlSIE?1TKGƟD
!+xT)+KT<T'
R-)yS&i<7Ѝ\U::|οyЯҙ]C3Bh7װT{(j̇:<N!+X@yfa1-.U
au
;L;ǘXU,;;U1ĳ, |&49zdFP2v65(ynqsk/P,N/^zqś*B8=m+ޣs ψe,Cru%[ױƙ8-
6,CY"]3AR)DZ@hAibS1L
shl;[P團T9i|w<W8J('K%ejn

Lrv|ãp7?5?C9JůP%~
(~;xQgşez>be'hXf#dQk>rbxi\/DFyOSqT:'^$3b4l)	'jb4j?nR7w1^GnT	
UF;97ar(0ouwV:h*cSiA+́G'-xH6ܗQWJ-}b|p\M7qo)~GvLdrzj3kGF3gUT
;˙*ƶ3Cìcs:مcX|mj˱@j>ܧc
m5kkpǴunuq#є1Ss3kz@]$Sۣsֲ\E.Ls`:~.'pdxllR(0m&@3hmj8uvuNs%l[(?z.yA1!
PKJl	    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/math/ec/ECAlgorithms.classZ|T;;;q.	
	HQ
2I&ddqf"Vumm-hVkѶ1Vڇn[ZnwHz77	A/=<a i[1|،	|R7y)|ڇYgdn[<m2OZ/;d:]<qЇZ|^dq~A_u|ɇ<"CòWt1œ=.<!{
ySFÓt#]|XH><#>'O?RxA&^Ȣ/˲启QWx̓ۇ<~|X//}_7
{Sǯt$َ|e2hI%rm)%˚Ӌ{rqgJln̶lO}W{<_H%fㅮK+97|,Hu#})39JV}WŻxyn{ն-WwIݩd"Oah[Mf
s$~Y8(%SHlKL?:~:~JcOpӨ).sJ87w\~}.پO%t7)l-NvG9:d
ꥩD:߷Q/:/JADg"ȴ'lXwwZQSɎx!a㱬JZמJ3yjqW}DU#THbw*K溻M_.O.蟵NI.0<?3d?v'fIz|"oزy]krtwK3;gK=C%w&:Ԭx[_bٞ\;5IaK/Lm撅t~(e=x#x@u5ρ49etY%5ԮL6,$2d6NNWL3fRmܶ	xKw',NX-gg:T<WlO-Qf2=TXIe;Ĺ''rp}*Vbc|'P2ƥtJ42pv]\l,M^ؖ/.P8-L"8y)hP8T*JӍ8aR>ݓ/ѲBW>O'ekQϙGi%&&1fAUTmIA5TkEc
'ҭisu.
c dT֩W4
H4I(Ω\ad>7M:M3F
D3ti4ˠf6E,r&A-2:۠sq.EnW4:5<g|Z`BZ$J.6h	-%4m":Χ
.\t6ޞMwd̴B}[!z~0]9+
ZEY#o( 	6VZ.G!P ]vIy48J!v=K BgW>| (aD:ʲ+=mK-Qo#
#%wrFw_KbhW5޷w%n%r|!ɡ~`'q6/3fc\p[|3VCuq6+䒙msbKh?PmJN\Z/><QdR#!E闋Sw2sY"WQ'och0YV-YX7B"_X
-#w2=lAwJGd~$	u۳	6Ow$dľ~Lm(*W]a=m*C/d4O^XJ5K)1'].,$SrYeBS^e5!٘da&|weu(ߚy-G1ڻCEPTW%JYE&ǾQ=JaMِ߯ˀ#`5M^R
}b]Amt\C(H8Eh
O:mOyc(gM+kYFW/Q:N\Zg8dw49ZJ#YyZ6O~N#Q/L'9~pRJ(:>BsYĒqf}Y'vRoy|،-ƀvϋWo+nO4Vmz[}IY/˶t45:50LP-A{AY	x@wS9X
$F:CcCi"hblWۆt.<u($7o BPZԲۓBFGs/܇26<5.h9#n= j-鶜!Ͳn:Kًʨr?=\qT!FZ
.C?EaB8<~6`6"F;Eguan"܍@#O~Bבq	mXGP#fL#c4|H)k9ì*j`||/AuMfza)<tbSmrbnr4r)fj7a0K43 +jZ:LzE&,a'{t𻋿ˠle;NVjbۻY?wx+xn\jd5/_
])v!E*ySمRd$>A-!o/>cƍ>9Oz&
ꋂ^~fRNq1GĵE9r.g2OuITL77ɸjbRm!,5L9Jmyu.4r8ȟZpsحq`(dÅ<kr/[>lqP!mWW&2-0)|JŔVeji:aVыi{8j:#.er4c¦Kxk,[ck84O'X
-GfG}
aY3O~?T>uec56\;aE52,QMMac3<Kj}W|1Gd(df/8nn1K_?aG5p
>:G~Cvwt%KlE:3*9lXzlc	GXc9~gj򸙷h,rYgDu[mH7)~	=H,m0;\Q;1vX>8301;/qkjfkY5v`&LL׷E5p<ʙQ",%
MgȇȏR QS%*<OxjMgBm>v]5I"<[mQ]Wd}1FM\WQw<uAOΎx,}
gΉ¦W5
Q2p.yM-hŦ;1n|AWo1 9p>1ۼԼP"eK_rAܼhiX>,VKFUfJܪ8G-o!xNqMuԀh:G!Nx?q'әf1Gt6^sWPS8^{Aq,Dx0GPϑZ
lc+yGA;,QTV!TPâ"FӭC\,fp`<4
*N(|m
݆Gx"^{+cAܼh3 4MY@ "ELJjBZt
ԊnZݴn;ZB|6YH
p >J.g'F	w{{%>l#Dr6]!9uD|l/6?Sf~ 500
3p-Adx2؃&{Hi0,xff	`(Jne3%ۇrtXY^Lw`7-(9@G[QIqXԎ:@=u0XM۱L.ESE'ډ]W`?]j|>GZ1xx	#/э1UvW)HW<aNɷQ~@3<îK{rxEru_hUb[/E"\'=Ɵ|\-oLO@'EWV;	8&S#pًet+}#AwRAw)~suku|mԏkwG0´C/\{7vm"{qAk谔oΝ|iPsDt֖kYa1 cvI%6'vegCbՇ#1uYQްܦgve^^f+$={QF_@-ϡ87<_G_zsWG_qz{y2z~Q%FV;GUPpф6!g'xx^sQg][^-Uz;8[snæ3)e#!484G`LDjEYm[fp0dy+8z*nWjKʘ>JV@ˠm}73qA߁˰<~=3ͳh\1Gs~axa	Emzȫx~W5p-ݧuV\dTe'r-FEܪN(.:Mh8=ש:J5K.QoP`$ۋx琄&K)z2T@|4P,R|!vY.Ug1qrDc9z8֙]$t)#Q}sW>Dq
M
f|Rg#z+9Ab8ŷK5
;5Ҝا85/xT3VojVg5/:/kc6ojuvyT!|5 Ó;9-SWU*Oimg8ov/q`M{]wPU.NF	6S]EUi8oG~CPS,ӆhx\aXL<.0T$P6rb]\sq&yWptD*3p 7;"ՎiVUf/62[j<W0k2RkV+TX1i!~)]Ԙ^`-Y0.TEYlZ5VrRcpe]e[l)1(w 
<nmLК0];3YYXEB;k(o4q<\C^+EZ[e{ܡ=J|Q[[[^څ%h_Dm3i[b
iZitVi`3X;":W7ABE6('Gt_:7*+QaP7PKu  >/  PK  D:U            D   META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$Fp.classW{pTn.!!<$	ѨAWY j(ݛdav"೔Z->5lTΔi:c3vN1>{o6ɒaf6~;o'=n!{#֟E蕡O
I	I+xІ=/u7Q7Bn[u!
iMަv`!d.i-XH^y}
-3w< <wqL<xDZBQ(*a~M%kZrL~Bq$da]kұhF#,|QTX(%PSKmwydFi
Y}X""4O!lFk"zrlPY=jih(˚rÉv=Ktjd.[uMǃ[F	۪Tw}g2z\3i֫%tt939"g̕tpDfo&ظfk,IoI%xf{ƳtT-q;}13gB|U=nf)e6&Z|1Tj>-
{z|ܑ-hψg]ۛ6jǹ&;dt3s3޺d
7]Zݙ6;-biH+4r=NE8+˫͝b;}O8cO{2hc@`,*fG'𤊧Шi~r)	i|0-ZZZEVv

UlY9?1QEcxAŋB^aΘ2	=֫5h}z,`ɉ^M&.^Vq\;Q.ko eX-&{nLXyUvPKj&'TdѬ`Xk"u
F3a0"-,&'OgLjn!=.-ꖩs5Lt_g*+6 Zn(6Hᄞm㽾-)9rlon,u+֝J9HoRIC#6E	b{^[畨'xKz^jƭn	+=|^L^ς5S֢3l5`L`Cgѱ]lƶ(brٌkW#o.! `7x|YʹŻbhY`p 397\C4
8
P!'4-yȕ20>	x|'P;e'1sfeP}<˻B_v^:[42]\6kF>al1VY.Oqtxe-֋(v/,ffQ<|`]"~Yt(
M5Gyp<4#5#~cF\9
X+tD'0{AY1FY,x^GU 9]Ne:*N|ŖN.U{fY0lRL͙go2ݚK5Z#i	g]\8$G͸Ҥ5&m\RdA𬣮Nu2ѣ{(՟W3WiSW,Ck\ŕgxC7g~ìi!3v /b~?W!Ae` 3NbaǬa,y
d#
rˋjՇXa,yA+p'>V_-;lv]ҏ	ȵq,U}^mv1a1N/Δ2 ɼq_oưi]I,Fuu5Vr6n*uV3gT}I)fUx[P|^E`vawbn>uZ*0Zqm3W>~gɿ7ç؍q3N|0~"HGn*!2rR9lZJsh9UQG[i1}t>HAx.06/*o>Ai,jVP1Ru?oanG5rOJX	'CNyE.-236Se'L ;|i@\qr-G%<w]ybȮvI)YH
33$.JnZ&Dm.% .+sorpdpdrt2nZ$.L&J}^sGwwl{xvpRTZjF6`mbڄ
b%M!ڊk
	jt5kuڎ1t->څR<əEM6r?D{X:>Ɉ2Ss?46givy=B9ώ-
YT
]M12y!alqoktcd&ƾrM~jcq
9[$*a6ÀJmDsMvhGYhF9/z;s!8MĀSכ#T܊GعZخ\J*a2mh}S?
8^|3r r/uxʹ.*5;1t
=2z4 ҳ<{!D/^µ28b
t:[ixNazGmUjp(%&f
O'(-p9OoR͉m8n4KLp2)wǒ¼kn3q3V~@󿍢V5DX.gtqQc$,%CG(QN1ī+X[IOݹW5#ը4".rѡ'zy1~mHt%
PKM  y  PK  D:U            =   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$Fp.classX{tglٝLxBYB.$)Y
Tdv,3`}ժQJZyZZmj{|Q?<9{g&sIͽ7OpސQL+ahao!l8<X ؏ ؂I3˘ >$]AlȈc,>!c&>ɛOxi>gyy<|}/e	_aaYH{qiWY!Z}MF5Ϋ!)Gd<Ŷ
woݲ~
,qUݪ2z'@cZMwjU5RUq]% 7fl]˿n;Tjl4]=۫VWa2'Xj~h]RGj2֥ҳd9'	
[}ifan !-`=F]h[ސ&ނZ->[xN+
ȫ:G0[3YmMщVOۺA:heXvVZwUmO ᘀgyl0T>w;qMReNby$lyTN&lש,;aǻW D+ӔMDHFBq iD*f[CdjGf^:Yج1
%;Fg֏TØgyM,eR
.2k_ո5xd_
C㸂<ԡW'!EVZe[zWCpJAzsQjL>P9ɪTJOZ;kX
p'qV[&ρ~	
I	IOጂxZaӶѡk3Fy=X
s
ynlA^=AQҶ*
^upe6FlXBV@|+?T#ܦ%V2~']Oq:5
U*~ B:i2$sĮVǵUn/LUV(K]vIMP.9<4nhݭk,Sjɠu=)h[iW\opmq6F.V]I}I>;0+w62IOqԚ]5j0Y6V]]iתnw4IK&N56f¢fv1SUd8K,`h45SZN(`F:ISSZ&KwDdUGicFg[4)<j7Z)t`PTۼ|ӑW:tPBՑVm}5)[_<Gצ	
m
/uɆ3]Wp"]kx =kWOPiiܥm2v2&xkUK$Jzu+wUķNjS}_C{rongZ4N Z	DvHbr4h C<A;h G6yF欀D@sEY6!&!G^IADc?Dl;&(E'A>B(vN+\*.E(&,H%P4-œ1ll ݘJӔPIp SPSLc(Eit3[z1+]ԇٽ1]-DKzbnTż^64'!g0Q<Y3J9Gxq/"!2:iS|>5/n
<"'_k<-;l&?IB-Dz LahyH4u|ѕ^/f9npwIr*ߓ wH	?L"_Q)
Ŀd6۰AZAD{Ȃ24փ(?~ISӋ})D"7<s>a|>/Xإ4M@Fy@@gr؁}!xVu#L	h|/va4Ȥc#OKcPBbY|t.dt"r)<{i3.z0-DV_<R?z-܎cǠ~9P|(n>/eoA[c'mwcPg~6A3/{Ta	=`\]= -P=AeC(#4!XĚ@KpG`)v~OYQMf!#óFYCba<ˁp)bmn9wEô홹Ok"{
A7BPKi3=	    PK  D:U            <   META-INF/versions/9/org/bouncycastle/math/ec/LongArray.class|y|Ev꾝v@H%,-dEA 	IXM

qWq6"::㾯۸8"<շ0}<uN?us^y!?g?'K(l<lQ_/_KlR2]W,*ꄿIע:tG-07F`nVl
lNs7=0[a~m0ly!<̣0<N\ѩMOⱞ7=
GY=G0/&X4
̫0	lMl1iwO00Y0iQ0Ìg֣z[~o=G6Fۈ~o#mDw.~߹w.~߹O1)&ɂIÌsA?sA?B/DB/DD$%/~IK_I'I'I'I'I'I'I'IGF!m6BBhShShShSb/x!1^Bb/x!1^B0x
)0x
)0x
)0x
)06 Fh#BhMMM
?#G?#G?#G?#G?#G?#G_B/!_B/!_B/!_B/!_B/!_B/!_B/!_B/!
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)
)o6e04chьXn`p$H%mmXC!F	1JQBbGq0GM$$$$֡m֡mښ֌fa<pS9A|s >9A|s҈/҈/҈/҈/҈/҈/҈/҈/҈/҈/҈/҈/҈/҈/҈/҈/_5F|ՈU#jW_5F|ՈU#jW_5F|ՈU#jW_5F|ՈU#jǦ)ك3ia>L2!كuq8eq퓶}ҶOxBOh	m<'60O 2:{`m퓶}8ev2;N̎Sf)ql<X~O`	,?'X~O`	,?'#Es@`=}ҶOI>v2;N̎Sf)q86xBOh	m<'6xBOh	m<'X~lH?援#mH?援#mH?援#mH?援#mH?援#mH?援#mH?援#mH?#2=Xgl퓶}Ҷ̎Sf)q8ev2;'6xBOh	m<'6xBOh	m<X~O`	,?'X~O`	,?'X~O`	,?'X~O`	,?'cǮ?]8vqǱcǮ?]8vqǱcǮ?]8vqǱcǮ?]8vqǱcǮ?]8vqǱcǮ?]8vqǱcǮ?]8vqǱcǮ?]8vqd's@`=}ҶOI>v2;N̎Sf)q86xBOh	m<'6xBOh	m<'X~O`	,?'X~O`	,?'X~O`	,?'X~O`	,?'cG6iG6iG6iG6iG6iG6iG6iG6iG6iG6iG6iG6iG6iG6iG6iG6lC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?d		5ڱM;j׎83kn0~_
]L {"9̮X8{񼊩M,/K/oi+IdibyMj7?lM#xI1tK7bjg[&Cq7i&^jz$RE=pn_Q`Msz,Yv	`-X>y19,ٸkl!\k[dQ6_-kģŬF	蘳qƛnЙ۴dW$|MӖ{98l;g74,Y6%+Y5g򦅍s*&.Y<oԲeWqWU/hZ>u\gx2rw
wYrb.^6>wv&>̉=Op%:arN#V4Cd4.Y<v>,E I]9M˛8
I>Ӗh¦KG1!hIäcHLuh~L/F-貸ƆsD#3e+O<v^|5gcǷ]dj^|1X{d8벽4!s)/MoӴdY3nMGcb2tk;>Dy33Cm'f&f^-l}gɀx`Q'xx~MK*ċτnG~ݺTq(Є{8xxJun?nӸl9/l[ȚNņ0#}!`ݛp	'mW_MKd%ȝY8xmSX6qm]r҄QIOe.l7{eV,j\4vƥM09,>f
e/*qaC10_rsA~e"*;]r\ko0co8:гGwxOr*`?#ן7#6OscmGŐ=sQ0~?-_鸺_O`0z\LAYs9Х_|8]'B\(ۑ/3|Sct S޹l?د$A(3QW̝۸,>3O1kʞ)L"40{pٽiF֣_i2K|+Ԍ-pIFwu4TDcY';ւ8HT<U>SmEW(QW4-XXa"[qzEp PN-l%0ŋL5|:γ.m\̛J_c_ۗ?\(_S!?@t4v`qY; Q#c=111|5>x[~m9w	6|\O	GP_sg̝;͝~~|_E}=3-ylDEKMJ[U1l<lȧ!R!zP/IᴊB!B%^
2{Ǯ	?}׽ٽ2w=" 6r-ͪCqS0n$VY)KD},S8ɆJ4d}e"*HL%6Al@ VUSh][SrN>*hΦw)o-jRbVr`{;?5o<DKC;Kŏ?#
h(hME?ipΟ<NL3P1spq$Ջ	(N>k(q-7bq-h-/k$1fVQ LJ,
~VGdH˽svl!z+2C$L73igc6'?[e\.'n˭>7%oQaz7oNzYSD' :qw:<d(N<E`J~ ncldD.`.6H 3$!nusA>|Hت}Rqo4{X܌z&Tfj-MoiGٶ\"8-kwW}E!K	E-"D1"zч1f)Wx;Eďs9':#B<аM
&QeEšlȩߓ|z#yW?zxLg'_6:f+Gq8>W/i-lܕοEЫu^mё.`w٨2^c:ek6YN
-FJ╪kIdsn%ZDnQJZDD?+>z_۟)#3 y*+R/YeNdQN)
N<GWIῥ?ɟD;I4CXo;z{f.9X쾡8tڋvNGdV5UE q߂eCŨ0nVa2J\*zA*1͆s*0KD(+"=J	^B_
c>x^RY)eZ{ր,^]*e8*r/f\m?nbNpK,;tYNgtޢ&:9E唋JH;}hmS0g @ة+:Cg8.69#͌sV0++=,JBbg)Zw$D	l|Jjlƪ0]P)t&wT*0X*NKL[-T;8S'@g	=G8?$D2*	I.v0
֍cX{2fU	&;審J|0g0"B;
<ܙ+y3W0y&;L0G&7Bՙ#"[E4'v>zKHV2rb0qWpq|-ߐ8$Ue[46^IVԗ[ERVQX(L`IOKC*
'/1<Ub^+6t]]Yz\-9׈iuEWm\ۼg1oezy31dfݦSwO-<u2cIunszs<sR&a.wִE*/ppp|^VMT8!΃&,!s(3ÒFԟҼ[IkE^yyJrqI^::u<ʋc<eOp(OA9ψ9_0!dckIjOLLS99E)SӞ	@Z^RqR
/v-N^c/}ȝe֋u _t3G,:be#^FM¸na7bwwәLjss_mn:88)==}Ğ>#OG2_TXwXE_^?}/_y1Z:c_b"[jjoXPأs1N=IG1\!琊'մp搳,
a}6θۮ^;)D?Un N…#i<By+kL)[Eid(ĭeƚc	GmUW^\Z_Qfݽ.rB=<~]É2^J~ϯ3OE!Vx< QgdFܔY'w;ۨr!#?sknwK3Kw;Q"ֈ;Etr41ȝ.3,q{h&d^|Ȩgqs1]eWN8ז~	"׊T~9N
{dfQrⲛ?P*QY$)ǏĖTy9E	S~[E{>[E?C졹Jܔʩ/ʕf(/
ԫ,HqռY-MpcN}]eT\IC7t᭳ÌӖ4İU70mg_QQ{؞9&vT&Q*T̐:SxQh͆I,LqЮHdG]aߢv}ᲤY;-)~0*Jg4G߷֎>˵_~4]!tpin˭nFNy"]Ptpqs}cwܵbNԻ$=Y,wO3q{ʽL\^-nu7kVZ{xm7^G{upTGm4}Gi8>AO<)ZmsEt<Hw/6ez}
|gtqH5)/ejύE9CS^iEV߈kV+'>'{7bkFd^ҦٳYYoj_iUBV,STQSQea`dTkt=Ј],leK+[Z5GɵEjPW]"x hi&p?e9KW,Y~߱C-IL)X beX%CAyX\%roq&nVC<!{d/->}?ɞ!Ar8UT[rD9jD!'a@+'YC')tJgitNqL,g-PzD6=\GrOb^bfwn܁\QƲ<ԊS.#3IVʼ0O"H嶈D*W6TUo
S+U*fL.ܔۑǉQQ}h٦[>Wdښ54ǘ/J bȣfV	lj,:qS`C^ئAxG^VsYTT5UEne1YRX!U4Uz(Uo=BŚ)Uʿ

h=j
n#IvET0}5tNRVfhS*-usRپ}kVTڟo:bmuo*;	dZN-
v_0P[(|H%"O-"LM<NEwFkyhd^0Nc/q:/gq/q	/1q|\^>)ψ-x_ >/K`BBJ	/oQ;ɏ(-?	Sg+[:ZZ+ϼhҹOy˦۽\ˣ|z/Ioz
C>:^WGz{;	pR^ɫpzN7,6ovMQ+y6׊,*QdDy3^>D"EPf|;}J0獑拉>nŽΕxe^"c}[q^xx
ax+1y*CE7Q$My΃D{Vtf2o*x!^5I\1ӛ/#([${*Ilxfdqw.ygKFw;O]DYJ*6S?]Gýh?:лnTA;.:ٻ}tw?]kxx?-2:?^dȨ}^F_J=%`.OI
wyMsh$:y/^ޫW@dGF%!+/.)-!Zl|{i|o/f{f|	W*y#*+}F6'ji{^"'xx
}24뷊2oYov>%܆<~TyZQP^jZZƕ/R9׊$昮]yR-fD)o׋D;~EO[P>N#z=`?K٢+\~8~R\kqN/vT<w];9c~D?R4UȏUm[!TO<~f'f#j	.*]-┏'?O/Q5qHyAȋ3/1#()m0g~t}y-#uh/|$Uo讗!Q;}T|'Țo/l)ZѓCo<x_w"v߳eJsZ_E7(пԴRQNJiW̕.1E_-
X?{1?@OIb?Yk<}+o{9a~o=\XE>}sК
.ﻋTзVQp9bYC9D6vV
1EDs_v(/ƻP}y
{~fn3y"#_%b'1,fbXa_Nam\uB{oZ01gKw_^3q.Y!(IY-km:̃9噯k	k+NvGbB8ǩ0aSv_9	{XObNY*v(yt	@;y&Mԏm-㧍"q_,2-]ĸTpI|}8ݥ9]/^Fs]¡_*+8+EG*{33~-Ou v>#,^6~ܟ?_V}~'7~~/?}6}_f`I;fGyqEW,[SгL홻p`\qz?%OGm
2M̔w#'&uɜP.%22{ܯ
o 6{|U?k>+b.L^ל]%=4Gߴm~kI}<Aѿ~-_d>x¨k;5c홷[*xg<Vg8C]0sX8u'k1䄰|UI|Zub9K	Y	G.}LپNY"Kd'rfWVQ,nAujeJucCVSN}l;M	%蜈>	-F&Rb,e'31v1r9\mU4ɬ(b؈>Xflfl2o$b$sGk+Na&>cy2se΋3~k<992留%N~bGwBۂ0-ui[9;bktG{0	&;'ޝRb]řtN+zX3l'@u0\94SfLc9F>Vrv̬|Ȏ{#1KxCE8LO.%l1"1GT'ļWɮ9kL&.FwqY;*wX$bq}ۈ
.Ƙ4ar0ujs\tH4zw<of9/#=X*N=$PYly|P?~RD$fWSmˮsK'I.&KnZ'CeɗCs2L++Ry}+r ,kۀʗTT^pTd\T^l\!#ƛT=bBJ) |ϖө2Y;TL2\+SʂQD*/o9TU:-=l^/P )
-E砃(JŠt.6K-ڠ8=).
z+⺠9+@p0H<T*j0X`HFQ*Kq/؏idp &Ѥ`2SiNPKi&G>#\k0hNg%{`Jo_VPG8&7+B+̥YE2Y`H0p88B
[0W拡|^O,B~C-MOg9N,Ugr;x0.%aK
!֙Û]]r6X3}4k^3},RTp]Ebw^.㈺E$~3}/~gqߴ5CX?yĺ_JoN+
Yn1u
z'kRn1nq>5u7h<'7"78M_QTybBp	.SGԚKϠ??赯yѫ@ؖU뤜^%DNB5.C6amV8mv8mN8mnX6/6?e[Nc'CR#EV>X/ঝ"iSEpUJY"x:)2%᯳E½JJ_7%᯻CI$+	J_%ᯯW$<<<<<<TU)+(*U
S
WPTUT**1
sUf)3m)3o+3q㕙	LDe&o2w27YQ
2MU
jiJt`oRWT
f)(*)+Jloנ45*
syJ|owwPi[4-V(
KU
V)[R\IoaǨRRoJq*ǫV)[RVbJSi<Q	^%$*OVi<E57*nP4T<M OW3TxJOҵUߨFQjeFQje_FQ&5T2/S(
5R2Rcc_ת1ujc1
j[5Q1oRc5U1[X65]5Pc;X.5[5Qcjkߧ65@5j1jU1U5c\OIUc?jUUcQϨYUc?j5QM1_RS5UM1_SS
5SM1RS5WM1Z}Ukj?ZCUkjU5?U_T5?WR_ZZM3ߨi4[5fTӌ45ߡ?iN5IM3VӌV5m;^P\s}:?̚mz2﷣&c2l,Cr#U)w+(_	}7}I?VvkH%q_}*JT$먒J⾲d-il$+y0ۮlNֱ햜ɶ{rCLʶ<y^Nֳ퓜Ͷo9lI6ld?9<J.`[<mU(I.b;4%l%<2#٦MlG%WNvtXc+َMb;.yǳ?k<:'=0Ilkl$Of{PSa[vZTӓ=8y:3%d;3yYɳ9lKyl糝I^Ķ!y1%l&7el$/g{d
G%d0yEɫ.Nnf$y
ۥkl'[6%o`"[$od{l&+7]q[-l$oc6y;wLCFK]Ѕb]׏PWWFa0am.ֆF6Thp-L	i$2wC{V"y/THM$Av" |rHjH>1$1Zxh1Ǎ0Zxh)`Gg5Zxhy^4ZxheW^5Zxhu74Zxhmw5Z{F-|`g>2ZhObF_-|i_6Z7F7ZhF-h{v-hh'Z8,"rȅ"DDID&"ªVeC@BAC@ɾEɾ%!"#"
DB"*D"jD"*dQ1tQ	Q)QGH%NJDeKD@.5uuuQw`sD='GxJDD!S#<-# >3#<+# @9
Q%𼈪G4xADCF4xQD/h𒈆7E4xiD#E^(Uh4 h,psDDڈ^xM Dt &$)#]DS["4M;#+:,ֈѡ":xDET| |09"j >F><>	|"OFTDOG R3
|6e"Z|>& 1":rD+D
jD_x	#Z|'FNQ3N~)?Gm ~ѩ#:
ID?_":YDg?lm~9":׈~Et.=Ft1].MFt).]1+;#
SDWh35kxgY3KiK+H`j,SeG
='"aKϋ{z~D"-5%vdD⣈눰ɧ"._vao6w[}qDw`ߌpiD؁;F-SD؃"&9"]"6WD؇Fxw[qqψGWD؏{GGoDؒ+"ODؔE]DؖD}y`DؘE2"lUao6!aw}#<,"l#=""l##KWGmztDاDzlDةEzW6a"~=1"lؓ"}`Dز'G=&"lS"®}PDضF}6"l"=="lG{FDؼ"=3"l߳"{~}};}x?j]9gAd>9w컎4};$̾k>OD"'Nw\:yfu;}	;(:I:wm]'e]N;p<C6u2N:_;j)ӱ2n]Ӎ![;=rSΐyː}
ӟ!@Jv3Dʠ3!I3N5C{a(8ٟX;J3T;2tN
C'PZڙE;3L9aoM;ݵsC40\rg襝#zkg!C,f諝YưviY0@;1jAYPuUY0X;Cs
Pl`W;1õslds9av.dav.c+i*a\0^;3L
hFڹavne8P;[&kv0E;w3SsCv1Lvy`<0C;2iqyavf8D;d8T;2΋yav^e8B;3Λ
yQ;2{||Ȱ@;3Og"|ŰX;_3,7K-avgXMɰB;?3]pvڕ3݀xeX|
Nnwu[\ج<EehpvOn7i<]3xv>QhxvP@#j7
H;xv7iwڝ Lk@ڭ^݃Wixv7kw^Ci0ڭh
m Vs7jw>&	Yhw1V.Nˀ[M oJ=xvWZ]G[W =
Mg Y|PkBڽv7eǴ{q^|BOjZSڽvo A7ݛhV|N{7En/kwn݇ia}v'oii#>|Wie}v_Yo?.cD ?hcgv?~/_j+WW~Zh{ߵvwݟi)~ܡe Qc7W\OZ2j	''GK\-ZBi	%O	-
)KK蟲)GKr)OK@KB-RZBHK蟴?PKi	S{-*ZBT%O%ZBT%O?i	Sg-%O{i	SW-[K蟺i	Sw-%O=\Kzi	So-%O}BK~ZB_Kh	@-%OZBT%Oi?
}i?
ZB4RKZB4JK蟪i?ZB4NKi?Mi?Mi?h	-:HK蟦j	S?MZBt?:-%O-:TKõ^Kfk	ZB4GKQKj	<-%OH-:JKj	"-Z%OKi?%O˴i?5i	
-:F{?=VjUڃ8AtZ=hڃӞ3_=g߬=g=
3?U{Fit=3g֞F=sgמ3P{Fib_=M3T{Fir_=+g֞f_=kgמoОogoҞ3E{Fjw3ߢ=۴gО3K{Fwko՞3O{FkОv?=g{?=GgӞ3B{FOj)?=?h3F{Fj9?=g_Ҟ3E{Fj5=7gҞ3G{FjO3O{FkY{Fj#=Og=ϴgО3J{F՞3ўߵg=oO}oCF?jҾ7o~1u[['em77ap	6Y00900y000aF$a"
)iL1L	L)LGN0e!w6{ؽflwc{rc{>5}glc;AV[e`c;}fpcG;tVF[mhc;qgƎ7v;IhdckbAN5iN7`cg[gLcg{{[olc0v
6;y7vG{]dbcأ]frc]a1kJcW{5Ʈ5X1c89SbMb85b8=3b83b8;1ù11\Å1\1\æ..aspmp}-1oc1b9[b5Ű%b=;b3b;{bý11l`11gbx6bx>bx1bx9Wbx5bx=7bx3bx;wbx7?^A>>g1|1|W15c[1|?c>bÏ1~_3=Pbp)b[+z3El#ݍPK'tE  N  PK  D:U            ;   META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil.classXPT{w.Uy*Q`Q|ը1
BXeYV]_5Dy4o25Ҥ"II:MNN:iL6NImw(2;9?{"x[>4"a5C>QR+ءbn_cI[*wKW^'^ _/ICazĎGcrǥ	󔊧5jУⰊt_$:;CVn,)WnX[^"ZvW`{5i.EÑHg,h
	d+)]zKbfKdKjii@ROQvYK vKQmuW$EjJxΩ/k66wEXk-k)K+Ñg[c,y	(M\⤲p$TV[)I
G@gCZܐ;ҫ*n+tTt"X#U
!4}X9]WST`p}iՖ]6\_U*piFsPb0,|YubԄ-6m4>X
u+&vctp8\:MH»WJOȚ3߶\_PeliPbT&}u׵iCk±SUWP[BiPb
uNh8`3g h4
&HGjCaJXuL|MXu-:EGc8-KU񲎓#B-;"04gWǝ!fk]mHdg0Gmnꌹ[C0Fc-UśyWt*׿Ku|tx]>N㌎ :n?gގpS%1Gܱ;E܋w8+>:iߨ&G%9
iއ:6F wYFqǄ],蟐7uL5"]`llvk,DX&[Mx-q/
ZkW̔23SRvQK[8'J^O*B%@kk#J1rF.nt-V2
%$`nTZ:cEXp͜uc.K[`'Ĺ{X
py$g1zՕ2+Jzv|vuB2h4+ޱK xk"2ut!VҰY/a/	Hv:X6(_>)˔LF?k⛵>a9ÆZsSPP}R+E}Pʄ$3>XEIlٔ^}PW\YpyO~j[k
<}H9c.Q3Rw
7ng\.w!2d%$(TR2z|eb5Z\r-LMuw(K=,W0}UoTv_*<L[d*M^kxUk7V)q@7=Pz(^|v&˵Pz.x/>:C_4l'Qԏ_hqJo<nnw#3ze*G%o:lݹ
T:pA
󮸏8z[2Mnc6@wƟP/15bڧ|KFQ >Jӏ֗HwN$`͐zgj9ު4\ʕEB,ucհ%?L,C:[lٰv|Ӎ;GV5#ajʀ{O\4TFcByPg30H2
#Ba4x3>|7&{}ĽZ`naCx	<f,Np^O">Yzhy0ISYp3b>!J"yГ׊O1ɘq1KO;]DJ͙+ϊ!-+þ008iVu?,ñP\jW#fn


ЬMiޠHu˜1tN4&_3%41JUeB?\8MzWQW6cf7C;
kRރսYÏGn7|xJ9Eyp֊kX5m3E<xIoQ뻔o1s7)~O Ǉ/_ 
 'dEe933䗐'\(2X&<6=&3dx5<$8h
Ҕ`wGz^ TtGIIxn5rԿaK`lWl?RĆW҈ʧ-w.׬e_*Ud*xL0Օ\U/jS3󔙺"V&f+Ґ/2D2*1k9X/JbG@x$`XX]b	/	ϊUxE܌sP-xC]q[iez+֌W3*s
ՉsWpZN
X$4Y|2oi\Ax%Ɲυ/LZGrq+Qk$l&J!W{-]eP V)U$Q9C~'\NL<FL6ķCg\CTOt53Hho&)(|XVgy.ÔtOւc2{-ޏYVY9]x!{vqSHe{8d.+$1I;9G|eɹ2$͂/6#3yPB(&#4Bʍ;YN̔NHS[9kzI-i#FOx)W2x-_0d"AIzΤ8x6H4nB(a0axLkZkI$j֙f Y$HTX28O6w.ϔW`}`5vAZŕ篵vkm:ٲ_ksg`?vS,9$
}ȅ4+LmܿL_^_PK_wM    PK  D:U            7   META-INF/versions/9/org/bouncycastle/math/ec/Tnaf.classX{|T՝͓py$ f+H$Q`d&L+vk>jZVZXc|ϵ+Uۺku>ݶj)IK"';99,5.8aN.ft}.8p%ys{8ONl~>yGux0:`']%zgzy\gZȅ Ł?WT_?_g/y3ćR[W7mn~.]~O>2ouq:>w:G
g7_ԸR`mP*鬏ĒaM4fJZn_ѲF@d*KeF!M/b\-
y]<Yh><^%Ի2R$^m7ofv|iK#Hj1#;9"pcow[8jҌ'ONL՜
_Ios#=0_ntK&Z6^K;*HGc]79ӓ_BRd$5
$JOlӉ'fW*[io`)?isɴ⹶-JSj(~X,pRqn}<K~<N5Tכ> b5"hǰĮs@qi~S2ek!PHlc35GVOT1F}?-mٚJ'[xB#(r{BTCcC=Ea,:{}p'8YݽT'ڷ.m	L4䌌;'*I	JjU"mKem'Z:>!"rD
IތTtPwQ4O=7DlNl:Dai{4}ݺ㽉߁Nv<@||_p_yx	̴,
:pg(ZeV^3-ݛLyjo<᭬͏_C!:BXצqo,vP75hBBօbf)̔C8fkH82T(;kfF9Vy"* 	̻O.v"Cōqh$u멷6XWVmi]MO=LO&#a1MLׅ3xŧCOaNF#Vw+9Óx,gY,les{|M[)eÞaOj 	2Hb(l"wkDu>
nFd( lrCTJ91@[
tQ#|CTsM;'9h1OKXH&4myyXZ	TM0)82W`X7XrT!|oM;6\Cd6G@>ͲQs*u.aDp 	bLL\UWc*X7&rB!(# '[<g;D%N3֓N싵cZ5!NqY^"p2ldq؉:"ToZbΓ%
Swc&~
ZTLkK坡D"LY/0|qFhOASOq:$YIHrS8Aגa.2S}l{8$st9r)S࡯#;]_f/ŵjl{Ƕ2
-S"Oed̿!dhT`N闗R+-TxpaQ2<7q>.84jFc_,>3=Ɠ?/ZqQ%Uc!߮I f1d.(!$? 1M+D&BnW4L~(2szf.I8Zt>K
a2Aj>R]F
֑rH3N\UF̄y0i6f'yKbϑb:MpܩܑF@c=&
˛ej4c&+LҤxMCv"IcA\7ppBdt`wL|gC@G<,#rJJK˒+w!XkĚGs9UfprL[~6Κ8MMxTZd&7.6'2CglӱPp;
M~xbv?(~~L8bf*f~{8W+X<냩xT
@z3'a9&Yp{a6@}(ǣ a8V))J_{	|?!?u܋!IW8_o}x'z|JoB,ALв.Ê #"(i8Q̷3PJ
TxB'nآF=(C(2^ξ
pQ0؊n<j4ҴB #-`<Vaڈ}pQN[LG(@RQ5EBRbl53}T47TȉPxl"bzwYI{,ѷC͝W<S*5ٯs8QST67y
EF!KqrU`/DɶVJpx4'3-l]h%t[lg\1NMԅGת= JM׈/j.LjTX(bш%b=jYX-q8[Ź،#ps"WE
oxG\E>#q% W,7(&jɡ&	bWlvNM=b{rɯ;H;. py,*:X}{/OBr~n^eﰉ&SC{](ߥT_綶"}uZl.CQvfZ>CX˯L/^.3d:NqPwp̣Pl,P(h(\)<Z=Ce*
<s+PMT[0UlnUL9@7HXE>I,yy
C*^FxsQxN
7qxBm4wIG!>ebҶzAQ8lS}dwi#\*1R UTsWX$bAiOyrjcRS9S!P9ceEs0uy=$%JN̗X!eFЭogc$pnR;SQ8x-q`KJïxT:BGm65,|i]ukB`g:l:;<]	$244L̐NiKs\KIaAyJoi!KV.@ϤM5+Զg.Bl?"KQ$RRo9VKg`)O)/i*y22"|.[@UϴR$j(R=3+5PjBԜ	\(铎
r(dJ2C@Gvf
E
V	8|tyApmd!epOSX{<קxQ,dY`'?	
RbJ	̓R8]ځuҥ(].JQt5vKXFpB*8W~'H[,m3]hYp=MWi\G ģ2	"LVK7!Bt3a[( I1+ķqC赤^@Byk2C\}fBdiqSzi_NNޗ7kip&E.зcNU`}7fUz&k$~'tA*܎J1e6?G4輻InPHSF<A?I	 fIOS9{ҳiX*zGh!\ 2hCy.l,b-AW
٢V͇>|3PYIco)&<,wxjV)pYmA2~Ls ʌ*{tۨVMjfl3k7+̟mӓiQ;@gPOO.9S=95Vn*Vлw4v,Nޞ ;m?7	;%;23ؙEװt`ށKzT>Lc,~e'X)}3p9Zb@,ZYÍws񐜇}r>0({pP6\b'{<CH)B\&rrQ WYrOKbAy)CPjUd3f@ku*1?vfI=4g0mV:G)h7_(cTrPZ(*<j
%oNUbr
LWX^
>y-SLn*Ҳ+Ct%jDp{2? n G౮"hu*и'3V4{F5ӜÞdr5ՇWg:joO/VYiIoHjiUVg5gd6>k4N 
?iX{OD\a.=<" 
;G}>Qkq3.QTdwqPKm#  &  PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/ec/ECPoint.classX|SyJ62<mK2&!'؍m\Lk#%GyeI[IMG34i<ѕfi>hfٲkӮk}^F#7~w9;{?/ .Q71cx\OhxR#R.cxJ<q9/8!ʹ<yʱ&#E_[;
t[,0}'#_u{=^;/?C\GL._=XWd<XWe|__~)2?/X2}݅_km8.V%7\xSƷ'	Fy[[AoFxK$H	lu}d<JFvB^۰F'1Lpvvov[#l苍DCCD2b4;PCkK[؈F!#\MpF{¢δ#>B\N	j8nĆ7"LcWpOa$4\LL2h8Fb~>U{~.Db{Ky(G>#nqUГvw\:ׄfXș"B9wm
sd816GxCm#f7FNB1
IKa\|H_"*
GIg"i)N#a VBL"˱&ZݼumwBx2Gr<_糛{Y4S4sy['+
F~&NL]tGBzbP3ɝO8YM'bYB;:<4iOo;jm0p&Dfdz^sGR
tFMDYV#`ƾ]F\wk&=W2֓ۓ_cm_q}lq#ȅ`?a.:vFhbO6vdxHt6*f=pȐ2vGFXθalH2<aS6YjSGƠύaךPĪH<dvrP}Du\k4r|t* :.&mDXuAh2\1V2:RNBTuq-D~\S1ѩJ4l*qu܎n;n
:n
i.
ܶ,8_.Ic
âh,YVɦzXeT!ޏ%ZIT$}<E`JShNtZ4*Tx1FGrHN/>;9Mӆ*IpB!./1N }kXL|^"2jpZOwQ.ɇuS@li`6ٙbשh1uC+t+ScTQ@5+OaqƅEԨŢ2Ws86&,>,?K{tY	Tn;f%M$l]xlh*uHBn*)V _3ǘ`y͜k=uX<9
v-#2:39zGŧ]6`<
3u4}vQ#
pP|p2Т#KSb1c1cS0c&ҊM2j<Qݵ3OG鲮u{xRns⬰B6#	&stDz[sv}3%Cq&q-T, *о^{-hߴ^F7OZ3uȕɜa#ʚֶݑuf<uinύnzMce䠺tgWhF '*}/JjvI!kq9TBg?u'ahqhx˃m8)8:W{)^뷂묽z&G^pd3qRQxQw1\7Y(Dj ؁,Q
{=?v+,NaNAU\F0d[By}@BL/<Jw!MT:E(GPAJ|#(
õ|%,e(gTaݎM$b0!=f0{#洬R(ÜBn{$R%ٕ({XS!nHZ$yùX)TLdpriaϷN6vn%7֑K5ٝMrt0)M$
!Ŭyz9KZt<y'iBIs>r#S+Ζ#o$u!,f˨޻{h9ooD)%`+jj8hݵ#ZY&%[=;穐,Y솟c7|]
7禇G$f˃`lԧZPWZvCq,-><P)GٳJ>Uo5kEkz]bqSX|v Q~(뜅^PT̲$H1y94SMчUzFV2-%~[bT=ebע@
5]jS&ߤWK0?4s/s)U<ad&[\NY?`+E,"UNOZVS~WH	 ._^V`"ؙ&Tf*B+Ͳ-MlªUr5<(\W4wrQ8ITӞ\L0+gy+dlLyj>GX_6
rBq*,܊K^zqy+Ybkl@9㬀.fݢȇ}
4T|"c|@|uIPyה,*;ȧk4΁Of(l(,0?B
kA$D5ENbtv1L!bS9a?H$XŸ68
yæ.aثTv7~Zs2mK˜2cȗ\u_."1
8eRPΠ=u\Pᒩk0-\s'=`_	TxRcklrUxMn9mo
F1W2Tl:%t>fV҇b?݁c'O!psrJQrNz`.y%^3,Vq>c|UO**s(CҀ,SXUA!a\c'PLO(o4_9yY!>Vl;֬W]JW<V&+Jd6I]ut?2:Jz#9,籆(:)ZY5"y<4}Yɻ(/D{[Ł|mk+UB} +e<?3qZO=Y^de}mMҷPAha-+bHR mih7UK{
 A*>+JO0w7tqWPW~Ӯ&{owܹVaן>Pש#
M4G?:ƐcRf$@/pܿl_b	=u_c=wBoobROs'`%姇	贔3mWrk~<7$U2ge=e{X<|inbY]faGa^!07R\s!<^	$k\ht]
yez*;}ߝCߚ5,\]${}ɆCu\gtznmZ?cgbs/	i94}{mqݍ^|;;xl~PKzt  "  PK  D:U            @   META-INF/versions/9/org/bouncycastle/math/ec/GLVMultiplier.classURG=#	
,²
PB\"b!8\հe5%y'8U1qUd*wC%%ULwO?w oaSIj8A4DBi| ^(ji6sx= Yz;X.{fUϷ[^5oF[٢YfR.:K	ޭ
VSbcן=@6ҕ.uXkP<tEl	ز3RWn=G9[ɖ}kkK%T|؆']T5KZs; 2 u|S ]bYB_8u|ПmVqͶe+q*ߛ2LՄhdܔqnN+
&/Ha\N(c2LS:.kTT9upcC5|l=\|=W7LU)?9V<X/!u53gft6Kw<['uKZzr پ%/⻎af^r_Lk0,d{qĉ0=E4l+23CѮloKSRiGf_-ϧv(ΔtZvi8oofl3'*q߯A |MU*TyX/cq~39FT0BDN>X"`>7}< Kxg':;ARx<x$'yL(G,'Hyi7HfW~}h71ˉHHX:],
cR<(Ïօ@:~.J!B%$A t#L_0&xe0) =ᙿPK{    PK  D:U            >   META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$F2m.classXx\q3wwJV2Y+`1kƖ-ȏ$Mbil:(`ޏ_R-}|iRHZR6}i!uܻkIJ;93s̙K .ē\. 5
L0>*
b+|q6	,T[\%_`0j00Үܯ	]Fd'Agm
&9&󄂍pJ2]EN4ϕ)j-F3PvpmAꮮ(s١Cl<}yWv
|vp_xeo1ti)L69m&c\_1Bx0[U(RLXK!ھ&÷NK*(fK\!ܐ16o /==5:PyWsH7fʌl,9Q_ٙq\(`1ht/f
tzlk(S*eKvc=>ů;'3XFō
S9nm~YiwSfp7Q8wV8WD'K/,%<8!|,ۂL~pA[x=_ή?̞V9/Q(L<Sva#%=<. P+Jbl|0̪0䊭[ oc8℮&v{G0WoT+m
WNi,hs;x)k>GҺ|VGngNؐU1?X+ZΖ+seoCvvS/;*ԛ,q=^kG2Eg1Oer#ۯLߘ:qPnOKVtm<y2*KL̾
[ZלIC27ؓ/gE^fk0|Ԥ	Ker1\7,obo4N{!;{Yܙ\ ˵
mPE# mcqB:ga]`#cجo0hU.1D4?xJ1*a<5k2"c@sZ60rCc?
["t"aa!UCg7cW[Q߆~0ï0Qch":y
b~^*<O~Wv~f].女!xG	F<]ULU~5q'p*Vguf
+vg1D+zr/&eRL_GӸhZ&OSϣ9iS ƽJitW/Ӛ4ywҶ]k+$ݰyڼΌQ%72 ĳ35FX\_j;pnu$ؼ LeK"7&yϬ!DX#BcLLGGTָBwfbϴnB^b:O
Ի1s
n&mrewu2tnRH=p'<&f	&nOMn8k
=ekQ5ZϞn->NO_
Eƈ8uYtӵɘPx*)7bFϘ9|17Ȋ4$6nMMS{&c9c8Wbmf%OQ8\(y9a^V^v#IMZ\ub;Q296
bf=ks}6~uJ^P;I>sNE#h/EhB~ؤ_5OP=u__^-w&?PaϪNfG"j7uի>Gm2mU悔gzTGի=~HR,YqΤ5V'YZBIk5[Wkm3Mbehu
Z%:˺ζntu7[|:zZOst5F?h6-@]K+m*
	\N6Po`i}HOM%p>x$Z9\5!@XIQ^ ƹDNFǱԬUncf+c
GsoJޒ"J7ƹĦ>p8>y˚pTG8u+GؖLBZ{E9Hr<uvUZ\8qzRνΡ)-1%kZL-OyUwpb|IX$)%ZE::!VDԣ)Ӧs#@\^sGW_Y\W^&6EFRgqy1<Nxպq?q&LP'j+:$@CL=tX(^3b2i]<+ FS'ToOzBbBě--{3
p?:6)HF-⊄Wt^}1Uo+6mrWDen^te踵cRi;s ڎ07݁zgP.̡ݸb-t#Mnt+ݎo#]+o=xxPQzP5N_RQSqOUPӓj?}YO!MzJLϨWԷY}m#.J/Z!=k6"zZF߲ZUغԺ\
 cr޽M-&dڠAsTI<'21qb:G
H(*HSSpgp~waކ$N'*FNO>uz!jmw?JI״(L?=ͨI@ч>Xnz"1Umg?߶igÝr^"-is$w񛅉kӼOךZ5L3
5:x JIxHyH 䄎jꙻC;}[>3&ܷFc	Noc7}s||ǳ4lm~lS[=vTj]RvNvgipDwPfU?'?9R'fM7R.UQ~yx\MA<j*߭^m_^oY[*t3ۇv{=dA>5vv;NGWً0h_%+GnPKssYr)z
J\&PKv2S
    PK  D:U            M   META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$AbstractF2m.classSAoEfv;&qv4!uܤ)
6A(JRJA@0ٝ8ݲ^C'P Q	.pĉ+z7(7oKC1,J0r8Li3ͳhsRW[b5t;-m-7#P|2FV	lǾdSSNmmuS櫖
F,/ɫ=&{G)GFu0U!;=a3ȏژGaB5_ZUST0Vku5a5}>PzUۤ-oQ9trKPX9㼍Ex#6^T=UH|@H޹#gNZVv=Tv[N*N)M/Wo>8}#Ğ_*Ar7t)늊BEO(##F	AOq#<
y/
n׾(1I'!Jyz+
Ȧ4~%{ý?J~ n|]o;0+Dk(KffNk>M[]77	ɿݟT'M,R`d#@={'f_gc5c9r;
%t,X 1'0ғ4SύҹEv޾IIDDA\+%Q(iB[]1JZoL'z~^2B[%)aady|C|'xU^Y>IʧQ3xWD|KDD\:McINϐ6}'"/PK2Q  M  PK  D:U            :   META-INF/versions/9/org/bouncycastle/math/ec/ECCurve.classY|T{ޙܼL 6` B4J4OH2Hx|0$#83Ajj삅Aۭun֪|ޙL.?=99;Λ<tV]-'O'E7yG]PCÏ.hX|O4?U30.L[b_*{1"?ѯͯ?ѿ7._ƿ?D*Ko]ќ(DdWIrL1WT*ļH%ͅXRp1p*BRJsTJՂl"s1\1OsQ-ySGw,$hx\OBRO(jޖJ'C4+4`Rnx_	kۮjt(@(T:Ooņu;_6&`WpE{w{p} B5h<իZWonY+ y ]@GMlKvgsWK[ŝ֚ؒUmGVMj
A3oؖwCtLo톎h<;x)k"tfx=j A=D2'	;-@<IRÉ>C3z<L$)g>R 9L58KGbQqpdwemFnZx(LAma+ZPÃж8.zZN-XuXP>јDg2voRҗLXw*FSlH2(o&LIV#Rzx8Ml}~:yqgpCJ{'%:ܡטn$w	$5gЦAQѓwWhpR;% hIamZȎ3Y, 8x-3Le}!6G\\"5<4HS.|= ̿]sMRoM}	dϴX(ГNFɔC}B
-dJa^Nx[C6y;<:(ehGtZ<d^KZ,8/+0(6(H
ϲճ"V<g$Q3|5QRD9kˋ<4h
?CfTcoz*eRo(KqY|dNǋH	&#PR /
]P#;CVfOCP |LxBe%Y$:2ňP,ǔ#ۛ9ۮic]27`_ 'C(\yLS\pͥfBz0Цf@Bp;]z0
QMYC|bm5 q-&15'_և@\FP=$ZFJ[?
xE6?:f✋	3Bou.Z
^h-T!Pp:kX*NoְZ4j6FԤ|]Yg5
Fx<5b9kDmu<6UٗHV8&sCF|.5
.Ӑưi)xHÝx8HԊ:2+Nz$ZzhxNV<`&$2NN×e	1vnKFs`i#':{sɂ(I^bG.kI$q;ԥTtFWЕ9Fr4JV
i
*(Bs	ScNlp,V5u"^fE8U[Ņ	aQ
D-ЯWp3i],~f	Q=5v8aǝq@Iᠰo$Mܥ+`@8e4`|VsNuMmT_9fn ̍BJQ`o.vMTf
{>&6Ϯ í+˳0cCEXŌs(ϪsBe%!Ļ'9Pk
	(1QZ/lW45V;	3̦VsR:k0b7Mug"fkkwr/NNO$)t0O'uɨpMyTOBW٧F6]->_#-;zs2ۙ庨Hf,q#ٻyp$tK<ܤNdBtovӹ(JWs?ˤ'vx8ȗқs%;е+b\|<ld,/7Zo0gH C=,.ZWHkaϙ
ϕL
m5c'sRNl-MuO˝
3`Y* jLȉ>aq!}-
R=5N
([aڏ0#9s}9~̣<:g籜 9χr@o%K~sl;XFϯ,^8G)ʳf^\v{Wu8U`ogeJ<`$r{`wXڙE}Ð|th>a(L ,rJXOSYHƏ!&3n_0{E":b}jw>'\-Wj'*}pu׏h7AR|%'S[0f	K^~WTGPpjr-CbJ}>(Lte-IdxZ.c[3=G2wa1L1d_BL=pz=nqp1J%X*Пȸ5PHY&2l*A	&pL7$}3=+#(j'qt^l׳*^w49ľ&~uc6E_qMFor3M˜0Ɠ(S~Qe~WmSLJV`kQ(3kx$e>SrZ݃Lqis*8eĕ
q$Hc*{#ɂl(=Gor{a
MG8A=2<Y;@TMxsXhK8Dp@dӈbn_c|1dKwe
op?xlh+c5>9;NsZk(@;^e9Cat*agvAZgw987,ی %+į
$\E|N'XoQF.c#܏
'8.9Ϫ<i<a`5 Lu+jxE8X"\M{boTj,r[59܇ZtE(|Q݊ip+w($`w4r5Alg(T3wh=OfU
ܨPG4M4P-ZȋCG&^st>>O>Zi)8ipՔ@xӰoN
sf?,>Ĺ˟au릪@F[-?' ]6vs{' ]脠nAyWp?ql9za߲ &r۔muȻ<KgB)%3	Q_q:.&LZƖ%aX/|w5#[/Bwfv.;nIQKUGecv͗Q\{
%\n2L<բ1(,0.`[ʔGLAXn>FpXey\
´F31%&f-B*,{p9}	
t? nq'!<H{;=Nxmzql$TJ/R25Ы^vzøU(mDJyԪ8*0AtJ6"(fyߴBf[g)#<gF-
/MQB^
BգňMN1i&.[k]EcE5+wXL#%-mukvƤq3;%wؑSc1V]P-p;c6H~ɟzxiP%	5	Yi'DȚ<q)}tRVp5-H#W-neg2F߶
*16+
ܾMsN#r^˄jLXd^I8yC(zE؝#{Ub._3gN&<>Lg~C;xgLH6V[α-yXb;+ml|p:?b{Ǚ=փǊ[.Ͳ9]hYYatF܅\[Y/okBbxlPo[vOpݨOKJp.LًFqjt>$f67^!Z_F2(0#BԺҍ񂱭¶
<v,[voekeǠ8FY[xD㈴Um_Y.17g,:bY(Im12ALg e^創U* PGP.?YPcȏUA'^~WqyC>[grܵPp#FWrl)X7稜yM7qF\KrYrb
UaPQOMῩPKd鐸  n*  PK  D:U            D   META-INF/versions/9/org/bouncycastle/math/ec/WNafL2RMultiplier.classUot|[N'uxڵ[Kӟ---]h!#Mv?`0'v3Įgm'8	@#)T ąW.vbb4
?c q]B7%㌄bT)<	KÄILiHH_xY.^cB5-άXZ`yWBR+Vy7Vm߾G;땒wF/[ɊIZr:ڎ?k3Kv)VƏwdmFUc+` B".H1Hn+Z+6gwFή-oo,20/X*d\BZk\,c^
^2".xY2rX&#Ͻ`]ʸu#?CaHB~~0WYMi=+V2ΦpV+=hal?k9%NpJn5.SJvLw{þO-*myVX|-&_ic=DF-)gw'|d9g" %ږ?9x?DX5a(D'{l'e)%WF0k<Lz` mf-ôMs4VZh]K"]yw{+Ӣ϶]Zȯ60Tm4#kz!A# NU4m>	uR!:R\SuDR-XTIxOGRCfUF1UއUS=PSvUkʐGUTSRオz7Ѓ`=jڵ#{NGxoT/:⩈SL=8ċ::iMEIEhJShrz>'j*Ш}(5`S0%`ۘmZqpŇo{@V>E<B
c?`?Ҙ/4eF~*@Eƺq4/n.:EtD1@7=
,'"IaD8A97EtPPK    PK  D:U            K   META-INF/versions/9/org/bouncycastle/math/ec/FixedPointCombMultiplier.classUoE&1zSp$NIcPCи	uҔPUcgfZEH NqDUp 
T.= )"H	K~͛͛g 4k1.pFrkǄ2z0|xE͛Vf,ǫ-2c1KnM2$+#UU<[M{{mYIkn1M2ayiJ+sM;o5ʎ/қ{DofG59.q9(B[u۞)-ڒ䒻Q]:kIoJA踌+Wu7u\<`m8|ٶeðiY_.l[p*sƤԙ+[ΨiMף4lken8ddl{2z5K:cA"6uq㦎
t,㖎nXmcu:-C9ת-3Lt8>e/JA3Gm4	x84Neek7d2C!g]E53z@SIUcJ?ҵh+i#E[cg99uԴ'mү,uw6AxwUSTSj	?:3
Ds7WK_|LP;^O~Կorn$VNQ_V0f
z맑==0%89x/m(	.zs{Cğ tt1/{C.ŰA?.bŨ^Є6ZV
BZ!)_c&ΔH?)DB;QL"HЄG"#=(&trb8{^	yRuP\夓M4g*J=Ջ	fH88O=ow0cE}I|+}i|Y@qOPl%b
88)G? cbLͭwoPK{ʆ  g  PK  D:U            =   META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$Fp.classYyxTUի5Ke! @$lJ(AGPIŶqݰQ["*5(lmVۯәvlgzzfȜsB 's=so޻qSo!$7ܤ
}7y(4q& 2ܬ
lAÕ43Iܴr3z~KmU6/A\5z q=kȽfn6Yp ~[1dqs;7wfɪi~(q} ?^.wfҩY+geZk[Mkj'ϙ=y]r@sSɦ9M5t	^,ggS5u極uM4з"Sא֯(;L8ٙLs@UżyL RC;}wAZ<;mOB2?q]湸E ]ݜL.MI?gOuVJzeO,hU^YXC̴9ZۜYSsekm3[$<,ap}mS}kϯԥj2
Ud2?}*RRCʁONEL`_F@]+N'g7ն+*V8>箥e5=ɹ)>Yaojj8gq3S`I,V
+N_a܇ma`s0'@`vb{<#<%a<$L_ʼs	Ɠ<_cNҲ6	8y/ratyMMaM@
ɵT&-Pښni]6ӜM63DQֲ%\F{6yX-n<o3=x!Yɥ<w).cy#bfsc+G11et&[V,3!.ic_?Kaof]K)e OVgvtfZE)/,Fb4bdveka	Q+#	S-ҫ8o4C+<'Hn(`6NX
ZgFjYl&2RR}-gMkS6&UtdTˢ4v/H[[<xۄSG^o."il$HǢg6ҍnđAJ5KgIJt1r!720k\^WԚ\J8́Tv~2ݘ]nLK6R&ݒMgI3h:[:gͬ86[éȝaJ(!w+ z.MmlLc4,pydGs-:Zuf{<cC3rV%fr b%z;lo'I;舗A! oADކ܌\CDi!BGw9{2(?
*;*;N#^Y8AM΂Nߍ6?aUF4᣶ a>Nk]0v鷉hwEst'
~v,'	RᘹAD9>	9AG;!vq	fӑdդ*Yg o1dj(H8v;$8pQ,IDs\r\\\v\'|OQG-(p
$
N̉na)D)T;L2)NDfh"e/ar85{Pv<V
wB
ߊ[I=c\2S/(wĒjs;N)`,W<OB3JΌWuKƎ[.II`'1gc4FYT$1E9@rhJ1sں
N+fSϝAlc4/bNC`&9N'FĝB`WAþJ'"lpEQňSl'),N#yHr$rۑ=geC=}fS.B{El#؆Aa܁L,َhO*bE-1/ʗ|W|
M|)A(;b|W̒ŅLV\*'6Ou_-_œyGx_~*,*>/C?p+!9UvJYJɥJ:-ʖ7+U\yʗ"K˽j|U;DFRjL/(5ZXUqUH5^UIjijJ9jZT,ժVLu6\uZ%jX=gJu@]^QwUX528(]!6y6lacXpݮ
Ӻ0cS\zDZB;Ё w!}|nKQևD]Qp{bޫTd:<E	8uAwQ<(w^НA,eиI9Grdd͟-~JZrw\nat%8c^&UK%|}8l9&ܨ2y1\hzCH
!6JJ6i9ưCfezC&"VUT m1_csKpgC8C\iw~u9qf(%$'b\dd>a3TNy3bLa|W'Ch4׭.KK:z:1~+s$"d	w`U8Kp;]uL2WjSLwIs~OMA3dю|30#xG`wG*6fay`LP㤒:/5%dHIblu%*j=x#QA\]FԨF݌MS݂mj3Q?jv_݃սH}Rۄ_/Lm!1QâF="VGEj'hSb%s)[V{kE+!u@j|,UQ
YޔrLF6)3VcSܯ>PaPFqTU1|EQGlsv{hqR1導d(=j.oax;_;0aLyBQee~ANw=1pZGwsEAa [XM88U'0s
G\/,Psw 	:0ytY0YX9k̐[c]jSd:a>e3iܩ\6q[y=-S5j JbEǌ,4(߰ DN7t(?eʵ@V>L6,9X^Gq.&=l#M9=
xKW}]Ot5D/Fb"z$.C0mr-p:E7;F"%_>"&s#HMǫ7mR̯tc%Yʑ)r՛6{̍1vhhÐKl%MfL10^,&aw#n2k@~99<Ήܣܒ<r/
Q?"
V!Άg!P]?E<`z!f1K/<}닑Ф7K'r<kK$>իuxz|n?~^XN)	Ku!ՄƯN~glCdN_=c(ϗv<Js2Qŉ2.qB߯w R,NukaM~cU#7~1׋BR_9	Jtg//+܉F5_/فGlB#05*9&CNNm
 S9DLi8AMnTMxGTs5 \B˾/ڻVFiWj.oL1p?P3@Xm l{ViWO5sA{nVͱSHuzQA
0^ߌoL}՛@߉GX.}{ lEn>>_~R\Gz'@~Ae"n1\?/=b~r8W$"kNq~Eԯu~S|o.,q}sn@,'(z([Lpm!Gt:"HΣ#'H-+q%6W`T-t(qw?+>+*	F?${hGxAǢgC<z@OKO??"\ǉF+ǪzaQ4yΑ77<S)3 1B}!;{mݰJf(tF>>	0BJ\DO>zxˠb[UodljĘ7\"x\'t;B6+8O	
 f1p+c(Lp`Ub.uEۺMJO264
N]f@]>W(UUh rjz^J>/hovA!nSiۜ) &~
<dn^$0.νi`*"dJr@5)?xL& aM\k.NwHZS;hpqEcCR\nd51J=E;dGPKd]{5  	%  PK  D:U            A   META-INF/versions/9/org/bouncycastle/math/ec/FixedPointUtil.classT]OA=S
[((H??Rc
&Dpw;,n/hbdwHR݇w=̹ pG*&0
U$qIi\V0@JAZE'2+Zyhxfʫd/ōˋms=w]1t_/M:+1q#(|cpʹ<t9\Ur_5*[Aͷ_fUx\1Ŗm}0j.ϥVb٬HWbrB̀icNDmdUִz_|ɍk(p*4c@4a^u3I&L=CeolFJdH:5}Kn3Ij6
IL~:y_p	!ARX
Qt2.CǪIp\锄i}Gl5g*715HRMvTD-٩vazELI( A/}dŐ@֤L3N3=Lh V~F=(I(Ya]anZ!iUR=g
W=!R~ s_5!"FB63gYڌz.?RaHj\rG%_PK    PK
    D:U            2   META-INF/versions/9/org/bouncycastle/math/ec/endo/PK  D:U            F   META-INF/versions/9/org/bouncycastle/math/ec/endo/ECEndomorphism.classu
0W.LN'E-ƴIi9 >rp? r;ۈ0Dk[&h/Fޤ\X.\ʔd|Q**Zje@RJҙ"mYggqa!˄IxVuj5Z-{:G
PK.      PK  D:U            @   META-INF/versions/9/org/bouncycastle/math/ec/endo/EndoUtil.classUsD]-Y"'mڤqICqbilC옸
-Y8Jeɣ`x3e`?ÞPfmA{{{] U1%Y|$ȲXA5]ǂ'䄘WpS-*=5(񩂒)v|&HYG6TpO
>YVƁچrZy:~`8a!~r`!Jo3H$ĆjnpѰMq}^7

kenOLlm~Y4ac[A6AEEUv^>x=H\	a'-m[~;ߺG!&*a"C)u<t0UNj
=߱i,{IxkT5lKliHcAC]pwm
_	kr_y-3QopiHe{+T2,N%Ҁɰ8ܯqD->,
xІpmo6Ir?&A
6dחfR}cdBaO
Y 1٤P~<Csxd"%.ka
DNz=&Ijۃ/4H(s鵕nvnߠrSvxW!e<qj9a[І诀hΦo[VktTq1?r.vJ(Ezf0wi@	D<
<Vy%ϑ<x(>p2Dc@
N\N,BIJČhjNcGF"_a|';R2^sWwrIULB!R=TIu.DrfoYȼ.bo#-SQAGS?AA.4CsRR]$uq.'MOHJ/哓?XRLGEpձn`ڝ< QX$ #PKܦ
    PK  D:U            G   META-INF/versions/9/org/bouncycastle/math/ec/endo/GLVEndomorphism.class}
@g;
-|*+;EE,eI.\W|(1j#";,̷~#h		]S^HYlCuR2V/灷IrΆ>7ռ
"&2qMllY<ycc="g<72,JVOuNG,P)ZL5B
FPK=Xo   
  PK  D:U            M   META-INF/versions/9/org/bouncycastle/math/ec/endo/ScalarSplitParameters.classU]oE=Ib-4uk'4mZ 2Bƛzk펭#?Tފ^j6U_ιw|~_p*d}C-%Na'p3I[
n+Tg
vѰ.CdRcȵ	<6~˖/dk
ў)=b71
C:.C$<vڑiwJ]tb۴ţ'ǼgI#181mSRߝyJ\,T5A'12Ii
Xbƕ8crw;#˔_s2\?X˲D[{n<#i:6Rq']>:9</C#h*G6q+,Y9
.ö=gl'%FUGN5t*Sڊc6ñ'c{&}^<ㆴN|vM{lY[cAV| mp)$$oCG0a׿jH_14=q"Nss'ێ3-n➧Jyx#Kx!oy>>|<1ajcX{DvB>
8jQIw
Ye',+$h/\xȟpW1*yyQ2*AH'?GʲF#S$r(W+ʛ7O/EOѳS,ϺE@E)oZV5jg2VHU#հWq
׃Z32?&g%B45+"\J	oJӳۄ̬tW<+]yFڠ-Kbmhě'WTPKX|    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/endo/GLVTypeBEndomorphism.classT[OQN[XbQ@PPzE1 )Ƥ*	idonIO>h"hG@-t973%<Wя8TW@R*⑊(yF*fQUSgP=s[o0,\ݦcXByPׅJ;X<0yo0_\lK0z+7)[w+ad:m.-iõ=!nqAϔv?f^;	%r;CM'g3kNyX)3gĖ
a*:v}n6yY!4B2wM+
4CW1e'0)<0eZlQG]Sߕw0]| lᦓfPhk"4.㚺jUߵOAݖ"l*EK4^[sΒ~ly$rauԒ>ud:&>0-JH!n`4DK?VRه0L6VC0;FSBC@NH(;.&0J7#t:7M	#DZD	49FLB(]S$0voFb_/Iޓ7PK"A_    PK  D:U            G   META-INF/versions/9/org/bouncycastle/math/ec/endo/EndoPreCompInfo.classR]KA=~lꦖV[=A`%+kп*(V/gfΞ{QAkUlȪ1hi
[շ58i.mkԥPVc#mzY1.V*	[0
`E49Cf9b`7{m4iq:nP5_79(!3)ӒF}u;SɆ+1pM~jɋH<uW;snEcb4Aa&=ENKlt)b[BvXPfUpNYZdK/`!I	$H<q,~IWJPF!ibRC[%,f[g:G
d>PKn{  _  PK  D:U            B   META-INF/versions/9/org/bouncycastle/math/ec/endo/EndoUtil$1.classU]OQ=vݶ
{*EDkIH IP}rݦ>0}dsƠ~$6{g朙;ǇO G BLDDƔAԏ>H")DJUFFU=͌phWZl+uVRv_Z1ZќuU\}#bT&mن吱wɰga;NGR.rкaFkI;jvpa
Vnzfgcݙ1MЪ-^nQwc$N6'ݨ|h㇎aw=ꑷtӮ
k
0` g⬂!,0zd\Wp7e,*bI-,+wpWAfY3zשEE
Y%~aN`-r94Fehf185d/wfȐ&0#J!WԣCuN?cEUyGҟi,Y\qk`@:4]<njN(8'ΓdA\<_ ×
$O߃óO@Oe!=>FߢRt@\M	$S##$۝TE ;$əCZ+QxVBTo
/h<y3%9kdDZJ\,|@PK[_`  &  PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/endo/GLVTypeBParameters.classRMO@}K+~xQ/ă&FM ܷ֔ă?eE7ͼ+2H*
&nJVqP
OGɀl<>CÊbϴA;/)B72[x)*w쇾<apk;NҭޡN#W0,Z~(.=[mnIyB6GWjiçd}͟s
I72h;WFV}+?}e',Y0EZAw[ai4\CϼZ6}$}
EՅNEhELt;F2j<;C$!4coeUu(9RQJU÷49JW&Rqj@nRqz\@PK'-    PK  D:U            C   META-INF/versions/9/org/bouncycastle/math/ec/SimpleBigDecimal.classW[lg{$qlXIw6$n'nP$Φu[.-m\
R/҇H!jRS(EH
!}*̌Ƌjk;?;⿯MxFŉ(F( >⤆SQ`Djȉ)BXbi!gBBJQ{TW9+"ɯ,Dч<!Y?sQ\CeWa(謙U˰gj*(+jQrf
n)
+.9
N6E)wyfެ*ղm&`]t.Puj~8SYئ'cfgb6)<nfa@p#IdNՋzȈ-VrnS,CqCFREl̞_7ȝל	ck&cm6pտ6EV8U#˞ъu۱*rYKygҜ~$[.Vy2^h.
vm[%BgeE7bKCcW֜SJy[m*euî)_&19mfсD)љr5Xk
tH|8nkWH6KjELܟ5+DXHN"c&[gMAaܠgzd/$Z&Q4a\*%ceY5`M(nq;c?&^r@ȝ8+xL:/nm:)L$>cGt<%_Y-𾁧yJ"&VQt|qW{udWk,'Ƥ7m=5~𶁋tӎ21|³/SlӚ/Ջ<`Oҫt4lw
-}4$Fb,
U,/ãH-@7HiO؅.i8
ƍO#H)`E(sɞ:z8';H9IZ	pݞ\BE\Wx	h5/
.tr̀
Eň걥}cӔ85")~ۋ+\FM^9 %Fvv6s=Bsn^rre3r34]ky o+<~n{%[fZ"QW-uQ(}{ JVuݼ6'IǛѮX$S
lh`cx vgN4M S$LŊˠ-Mb'NLPS:i넨QAϛ{<Mxȅ\90~JSw'=]~65<߼ؒ'SA_ߟ+kxgiRW_IٖV%=hw L/@ǋQl-Iz=RkM˥o~p{Z/D'LwDy/
t;-px	]ǎ
Go	'};S"Fh$8jC#8	7Q{S_Fg<:o8z]~Vcکx(F	o7g.⺹]K1Gv6pH\>rfxC؈7o~Slޟ1?]K܃_įa7٨|!=?`y?ğgJC_Cu7ԍ~x]Ek8J_+Cy=_ZVL+SoAybPB7M_E0r7N?ymͻ:앖9l~íj/6imιƎPK*Q1    PK  D:U            D   META-INF/versions/9/org/bouncycastle/math/ec/WTauNafMultiplier.classWmSW~.$ɲT@V
Jkx35X[F	 P&YfDm-_:p:s 8^̽wϞsϹ'#x('8>p⤄r|(q%p.tK8j3buV=.ZE'v>UB 
A!'>8/a'#v0:*> MSK52?_t1\S'U	ߠDCe(ef,մΫFVcpM:Pm<`DңZo6Cj JU2kX1ݟ>IKޞT:ዦfl:f,C%UOB)ݴ:
ԠAK]ELu3jnO2_L2l%5B-cՋHөd&n޲1Hl:umۆi?xIDLd4e36.ah	L'U]7cڄL}1)X&'y-M
dT\qBe\uCF&GJnH##BV$dD1-U_Ҍ[->98#M%eVl]ǠV5	wܓdh^O?Rɉ9N
32}߈[<gh-fѕ]n,QF5W;B&j3Yc]3[\+jIiAaDm%/d%Vj82 3M败:!@	q$KȽAm-jBM[T|@gcLвf|8TczpqV 94P
KzOm)UaθIw`_]
fFȋMV8DZQJg-mC[4)-S,!0tͮu%/,ZT0ɌwtoX'bPAɶhSI"۟Û!)7x{ 2졶:9X4{uњWRO344/B#Ots+YUr({(GKx	m98v1rr;<d?ʀE+SU<	Z.š9l9R@hAf܆n"}us;qU(ݟEGp=C,P+6>bkᵨ6m ovӫKHvd1@>(H-e7,˿
qɖ9T?ws],(sRx{g
9!B/lqKq3N֬%E\q7ϤHQI$۝YTbɢe9+q-.8C~#KHA ΒW{t.p*a	\&,LF
pzQ0Q#ycQq|רwVv+TσPtDoJSFk($bPK*   @
  PK  D:U            E   META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$F2m.classV[pg"$ı(nE%4iKU#)N4nݮrvWi\pK	<a&ôvɴ<ua/+C8geky<|?9߿~0AhaHWYEt`q%
<
*<.F}555*kX<Aymϳ>
#x_U_|Ypn\9Q1mG3ZK@L*:]S%]hn:cTLz,@`%Ke2TR^*kBJϧ2xܲC
p
ҳv:+@tweSUuF/J猣/dEw % <o8,:BlsVE@θfS7iы%`[l(s^5PjQwTieڳ,if15XYlFϳoPp&~ē.|i
ȸpl#ciyr%gUf՞**#nOHT[VO|v`\2M9EJwMi!F):Z9XzC0/ِ<lzW2e`h8{({7tOΟVhAjT>epnie3/؏Hb765J5m5Ql[U$[R*>}*Uᐊ,8TeGUL*&)ķT*axUc)=4N8}63
^Wq
U<T19@hjuhmӆr)EK&e5YG//=^
ʢѵfϝQQm읎˝cT=\|00j(־H{m4M.+U(\,pOr	PbJ+@Ptҥ ]
d汦MaQzZT0$wЏN;I^ ?2w !7ބ\O,#O.#k~$u$S&a4gp聬7
}(ݦGk"<豹<B_"&..HR~Izm>6-2c8<ԭWH׷cY*IU4xA)H҂ރۡ_ 65\w_&eDW$<)46bFU׉KgFgt|=wđа-k	4Dv7$N$WG:#
1BU6&{	O	&=E@GX(*h(*7
ղAP4̉#jU6@~mL)qȋ¢[m1SP5)Ȭw0Ś^_xb[4  Vr;bܿ<YŸD6"ߑPjFv?fPW=u@.Kn5jɆ羱?J4\yC Jz
?`GqXĿ"'r~iBMe⡯zU
bO1Ûoh_=-jw׫1<Gh鱍h9ɳu#iʐ^z^3~$ʅOZRq{|'ĳO#%>Oԡ;ɿ(N&y>{|+##t-J7[CP1u=#5$Zףg5RS 7g9ot{M~b5rJnZȭPcBKz C蕎`TzǥcȐTC_\=Ҥio-L)1I?x{q _PKջ`j  r  PK
    D:U            4   META-INF/versions/9/org/bouncycastle/math/ec/custom/PK
    D:U            8   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2FieldElement.classV[pgZi%yNfqBdKrq8ilcnJBYIy]ʍSʥ˥.I[@ZX4t`xW^ydwVm1?{wsM w0zpw`"vnRÙ ÏxSe:qV#B+䜐Äգ'S1> b	 Y
ƜAȣ ¢yʃ
"s梙țlbΎ\+k9񒂦qA`'g#Ō`ۄ]&L%-Sxڜ}QQGge
إS)Kg
Tjv;lo[\`gQzrl+4qK3g)ױZSjD<dLG'N6*饴YrsVՍNxF9+oc[1	,̂ru̴K6_ι|n`{іd
Vt)-MGh9TWKJZ#]39+c0Y4[`:WT줭1[kJ?p؏:Ne,*Y41ܐ-襴5łK݋flu3n3gg/.Xe=xR|HA!GtG70OKn1(mn|LבuO^!'|i|F)hxZϲ땬?BFh3
oJcoBrFrfd6oPyt1?Ϻ.n27]mb/8v5,|<1iqҎuLĦpJp`\%_Pv'B֝%OECj[E}W'j[d-jڹĐKb5V!fvJ,q=cV/$R6f3ýg/L&T7` J|}+Pbu4=]J:+^U|<>?駓v"F.Fi&ۤ]c7^'U}kʨĽ4Vgk}Þe^>J Q*} TAU'=H[ߨ-8}W4E}"TjvvRƑ[mpx]tTUulۨx(j{jwmqnSSd>NK7%^A
`jG1^)JjBeI	1A1IVlÔ
Ry"QJO"֐
mp@4mȰA,~wLl9\drh@%J6!.	JoA4[+|W_0fȈp;?_&~CPcz"]_ֈ&)hӌ
1IJ&B_V<hhmFPA*E5=FHdd0"%+L%phas9z[P74a"	b}mu
1`$Й}Nə<	,󋜹_
gW9ƹ~*sl쯳v&Ƿϳ,߼I^G1e:~3;?SWU_	PxM
e~ïn*Gro*ko/l0{ FyݬQZ0/^G^_];f{t [{X7+HSC2
yVOmAq֧
qNSA
8Zǽ8GxA
PK9B0    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283K1Point.classWkl\qqsCp^nb{11qb0℆&dw@T DQE*Nմ*hբ>"TTQCZ";7qN\);;g̙9sf{[:t X'd \ ]:?F!db%n!2qptJn	`XU8N6Cf{|Z;+DϏ#}"^J	
5LVHCW67ҟ$%BjNXɖM#4:RVz`S2WlܩnX
]32oziJ^gV{B"Oq&í-CV=
(f6K|N,f+g|>ҒFWCn t̘@'ZaPS8J҅ݚsk(Q0#;KZ)-Jur{e:L}&GpK5tU>!)q@HY!qHGNdybDaQpXܡ8aEo	yNxxWXzxRS8V\"YhVN静kO'y_pޘYvǮc
vrJRSuTa6R̠`T~*Xӛk}#B`ʎ35MìT~KƒNNNILđR>R2+_ؐ*8I:ɾ 8pE{ZLeF`wqxCl6dsÉt,Sכ?4Qp)l&_Hd
̙kK&h!5ԙ)XCV*s)B[ǫfN$[sف$/RK^"]RQM
ه'k%:K\=|MxoWh&
*leE%ba/j}jn)4B"\}in~=4
\N\tZv38
O|4N.ȯrW6cJ0=v>ys sz'1&w+5"pM`	,p8n6KxѸ^ᨺ;>%ze2夭йZ`Li\㨠qIcs71S쟮b&4JIM$nc4jG%'/Z5^&mpC38bDSt-,7<fEDrT8L ĬT@*%bT:!1v\ &ƨü75"F+pGfQ;:!2Fm\oQ,3Ah1ȨkX0fKtuJ5dD?SfTQgtIYdFer\FxO}m<v&l{XYݬ-,m,^E{קO?C0g9s؏S<V87s;x e}Za|*GUxBēO-l3Ϫ~|Is	Nzgi|Yŋ^RqV_UokRjK`+6\z\VM
b;82K^X]%le"W,oΝq1_|T3eJ1gX<}P
.J5)Ƙ4@t]x8k|"3"b
CҏT-VMl}b!8oQgAУIIhC4Xs3bvԐ~}xH{HmBw0,`#~N	-6xW+|"@9Kx'q{A8afQ-dd0)Xw ݙ&;w&Q[<KFywpNF7u&[H6x2ZB8wbsAJJ8	tWfh
۸2l8֝eH5a5uȨx<ɧ8[L{D31c#h;?QWƏq|	*/_]*ʍ*/V~FxWU/򪰺IE	?8S2_+C3>,5wܡ۾M܊w{vGF74]1iPsyPQP?rwڦk{_
IPK8  1  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160K1Point.classW{p\UݻwNӤ&)ih i	ium$>@hQXk28qFpq_3:#8H޻mR%m2|}眼ѫXXv!t&!4F7%LeVi7nnnnmM&,IzM܁BC}&bti!wIw3B$LGt{E1db( -'ݻ
+ק3
7gs{LH*/m#PjQdљ7#vp-A[bs:co)ع0%_Ԑ料eP':gk{E=~wwrd8PV8Nq
NmW0C9M3dfOKٝiY;m6-w2\/y0iZ	Ycǔ*ّ<1,䐷PRA!pG^EWL ਅ{%}BCY<bQ!I#8`qOEэxJd_-<gdZȾ^!2$AY	!ˬI
-%%7"~m^>/䒩B~ԎՕعd>/[:rf6q
JbkaEfsl|f|O+}weasUܲS!D#/eǭuuXj+,I_(,vz[f 䡶-詜͂xhn]"Vs:5c_]y(dFsWZp!Xz|qv.fE8) a![Nqr`1e_#vⰭ,n:
sf\%!?Sct{]NBee)S/(,m#~([M@}rR>(;+<%(zЁ	.F5z=Vz>-Pl^OlAǠǆR:𭢵1X|!2X[8c$fw4"o66a0ed*	RU_!J$$j!6Q|4:(MIVRI*#]1z}Q'|UuUY&u@XhRjq>PeZWI4p3at(ѣsZwZ1{ck,z-zl%ة
ҩY#k.Mn9uaaOG'0/u\ZǦ^lfv5NK?ƞMOƺ4h+g1qucOIժ&HhrtC$#2khBV{nbUl%]nP"G, u=/x869zx74n؄7э`^/ӿN ;UUvYح!a@V+W>ՎVm((8R8u/Sp:(R/au
3xTcS5<'}OY|mD¡yέk
X|d_9rѨa96	4OM7oi`](%<Tw&Ĝ`Wb>.xr(x[>A
ԆǇ	CЗՕ	3Wat]HS0W͐6~AGn`G2Kĉu.:.aq<<C׭wfI/L1ꈗ ^=B\ML\GQgjH'^䢿e7eV7o+*?Fԟ"X
C!@|W1!B^8j9PS]/>T~RU-5oU+Ձ_;]\tWQmt AKw_>^M<v-]/шE~re_c6Kψ<^L |5TPɀr60N *ݴñii˝tdkۻV_(rFKmZ<9Pa?}
WPKǝ!  B  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Point.classW{pW~/c$<i
D6
)A	|![l
i`tX1PUZ׌Gut}{q~|_z<rlf (]!"čwl2Ni7K_-"nn[ a LtIn`r
 "KĻnq-\\H$nuh GȠI'%ۂ2!
(x'GoN4r#D<f+Ѽ-oˢ=i
o6P-kKnJwy24xo'rܖJCWhsfU+bQ{36Q(H&~6.L[Vwrآĳtr՞%V\}a=qxU
+/;D.M
7gΎa"BࠉXcbL܋
-r8&-r?05𠉇G<*YE1q		y7MS&>ɜ?l#q믲2$,S	'M|OyF7Jx7^׵ex">-)##Vm(Ⱦ.RMlT)vv{l ayg[*fF.Yߓ$3#r

>^BAkb.?&!|a@C\ƫݛn︖\f[Y7'Q S uTt2uĺVc`̾\<Mo~g9|ùlrtHVՙ\]\tJfzt/U@/O
`wjFۗs	kJƩǶ
RwzssǐLdoݐr|NpX'{Q©%W(,數㏇VjM˦>OOǪR~О).)ǧmi{T$<M;qkDHyl8n/Z(ND'#8}c$x
ů¶mCà0EdJ+^)uOL84ciTĊBJ1ʵpp±R&"ZiMJ/diD>x,b*i*^
$V}bY!mt8^Se\iTsT3aXj8v,R$MpURW1GHlƪ)j"aj~4]21ZsL2piնMDl-{䵋mJ	OҠFŬ-"juMWVIk=ON:)-
|-+y+sB|#ZbDiׄ[JX	V kxrxz3/V^mx^/p+^&|
F+tO|w,zTzURUإbqՄ~j=êjفUTa>)S_=8AR?7xT?p	jk)
\OJ

0/r]D:Վp93#oV_P`}(q}[XM}2&4<;Yu,C!|ԽW!dWS~~d5 882mĊ񜨲YRF̋<<ޢM(\$mKh2tI{KmjP%[@_Pd`iA;H^DҼR
eG8kW%deQGjQԥyf"%'O 6>ybn''.4ts؎	"e&F1C8w+/%|_ujx/߈*PfHmŏU/~S?WGSAD9T;u{p5B]e]Ь8咹ٮ-h
vk.hыK5/ߒ=1^<yqQ;t	DQ`*aD$vP7Jt$bvb&atVٱ¯vl7ȸx Q+DwR PKUe    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R1Point.classW}p\Uc<,it7l`4Bm(M[%ݲm,R) 2t8q~~:8~{/	`81=gp/x?
"v!>tz!]B$BnA,!	]^ȨWH,(_X#.l_"!B[)mBEv,!dL?][i҇!IJȰHnwLFktf=hPMH%Ō2,j1S-]>s|+ff+c/lڪ
=W2ɡ9/.XaLRhhlO?B`,vra"sl)o{z{PSgnlO,ҹ@:#at56m'M@]}H[SܟNDzgJ?k&dJٝ"[@k
[-
NKjHY
mfT(Z
աܨ!#dY
9!{Z^!@^CAH%
_!Qpm"A
~
keɺ򠐏y7pT'cxDãxLaeO)
OIĥ>T(擩bwۘBhLې͚LP0y/U%/̱O##,mN~r3VݫU술'ta)̛slcL1'CSe_tac֔NKK-ix8`fؑ.K9EyJFFa9Ѹa!dsd&}дL--%d Gyw|.沅b2[d]b=Rl5f9
t!K){djeGd:pÓtɥSײMCpG
p'A}c HCؒޑX^$t9],SMjmE#D	gՋp
p9ZPKJv:1uʳ{)8`|$fu\,f1QfX?"zY:,U}
lb7`kDBQSXlUXx6D.	qq=YUobT}n3ĬݴA0EJ&IDHqZW3:C쟦`895>r&&Oobq. 'N^3|qtï{Umu2Q=(\=~Y5G5YT.L=s|A^i+lU_yQL`QЫ(݈Q=F
QQN^CFWUrɬ^E	\+6K:YO=*uz*,Q8%XjDNYOw줆zji͈IT4=fCvP)cGbH_j=fD$qlХG} |<dtnet`t'l#;0lb;u7!A)<l_FpxE8v^a}	;fC0~GvWUTSxD
QPF%|Z݇Q|F=N9NWpJgՏy 56<?>vy.`4\>ay48),vݥEl] U-PHA3n?'E|SL+!|Fa>
v@Uf\Rpb.D=k>_'QO$aE~?}2,u+ɯRTEg((B:4|rQ`氭12fԐ~~8C=K
HXo|md.{x$~HΏ@wv
Q|cs$]H[iYeIܞLaM"H*2<L?ʳ"AtmԷ_ac	c݉gs>*9	jaŝG{-(
ۂFzr= F^n-׀jH @+[1b%,-l{&u"bVP׼7a 3_2Я3~d5
4<m!pm韉+>k;L7MMS
ۚ7(*S~VHUҬ
 4j;{Z)y>t3!mQ3/
ӶX3}6cH5
]=^ >A@V2UWc@Y`Mo.]ǸI؈;PK`    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Point.classWkl\ξݻvCֻvLB&P'N\y9^5ȋHR(M)P
%K:)jդjZDşQh$Mgν8/sffܹ3s7 ,ǋ:
pb#N&L6XĉL|Dаn^dۙۡc'zt#[ǝͫ{tgH/%4
<c2ddQϐH17si&˞dixV'3فL!8)e(l1-
}檙I3շ>e쁍\m>Sdc2mn*٭ͼ{N{|<1(nI+$
gO}'2vƇU4p@Aw~2A1+U	inM$83[gtdɻNj3,fr`/S 7B"ߞu[gٝfȧK<is  ٞ.6]˗-ݲT%
&7
,
\>3Ԓ#v
pLVc#8*rN&'?c8jla&ŗ47e<f+xW5O2u<eiv0O,e Y,?'YY|sxͮMLZ
|Z&''^0ЎW5|6N99Lk`tf-8M\ճ;
5ve2Y
љ[ȴc\G95 gq@WiPV;↠|K!/:8D!̾Zڻlp\l|˦8tMvis%v%k9չa*oOBJ)RLvYj0/;3_~o⣃bm&?zhfM2j`?mxm2O2Catp
wJEWO,{_~Ԡ x#Ѧ3O1$AԀfkhk\7}h5uJCYݸ,Fr~3Nz(Ku9Bk#pGGcD_"%wFN&M4hdML	3Z
91Ec(eZ8/Tʃn
~k0! 1VGP!ݧQ+BFH!GjHd	T,y&I^6]ZY:f6Y&]<BʥeVJYʓYr],Y"+QMnURHV*幚U*Ίd(=QUjSNjk#VCb)n[-uŞ#gPRJvFj5klzlTZ{R@ɮONҩ`IB1Rżvtb;e:{;Vϩ$g0)h#`|p-q]$E:4c3XJMSSRtD[:C+G܏Y9:	/?	bn6aN=)n]wu#:;`8E?Rb/2"aq Y r8
q#8 Ce:F8Żx@ć8p#cz<XGMxъxу>Lx~wDSJ
1
UTq_@Ֆp-u	o~W|m%b3rG^Q-d::
r1Lj+vpYmU4k6StqV}+(Zo_A-ٮ[4h顟[U61tR*pXChDV`@Ջ%HZ&vM/w=)Kl d6Teq4X3Rr` TT2ʠ,K3=*>Mg:T/`M/_:
T_w:KQ
ݯ_iS5Ӆ5p?&/O~?|_#J7b~+-&~/qo#xG<wU廈+/+JL
\n^xESR<E1t+gf>H 8S+<E_}wP{rS@tG5WIWQ7#ҽh'_m Ixck[UȔmhvi(`ۼ|DӮk&l,`8k'6^)w:2!¯o#UYx1DaDmc}ijhd\<&[VTuM O1XhPtBhs
tl%
.PK  ?  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R2Curve$1.classUoTnbǩm.XVۜ4HZ~)TmT	uuKStbH 	`!Q:o)L{9wι׿ \q2NEiL9uh(0)EaXÈnDE+zeW
$gRaUkozfIrAYժt.FƺW8kř܂RWlݓ͵eٸ¨ʰZF-i?f%~o_5sءs`7C[Ư^
GG({d5nʹ~PVdXW4øG}o 2zP0a6p'&suLrMza묁ILxk_0*'e=Aذp<']8ڪEvjj*e9
5oő3EF5[mێ#av~~j u޵Ǜmd(dKsEӃR+ `~`"l&-(q^%88e4GfѶoHҽ
u|$Kj6z/e޷̉kLt6h!d U%PSnŷۿn(ʆJf0-KĈ:1lP{>!_Gxk}PnaE%>fRSz՚Zks$ӅjD]B!za	8+9NKO$YwIDT(%){U-#Y7CyOR*X?tGoPK'    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Field.classVYpW===KϨ-%ybk]%e',ś"ŭ4hƙ鱭ĉMb!!6	*L>R|@QTEE|P2J!ռ]޹oE'"$>§PqX&zP"EBlX"iLqR2dHtBLYdEx,/-RAĩ&xB6N''E)ΈY>#2<#9Շ㩩!WKmL63A3]67ҧ?㔭 $	v*d}9T&eoUl`5SkOab7G\QdRAuOEu>L7{Aj8Ep%Zҭ>N25f4>j0;'L{m/cLՔc*e;6QH۩IFII&g]k̴ţIf',D!';`u7!< Q[B(+[˵V/`]a蛷vL$:);ٗ-Δ~
yp5;SV:!N6Yݸ`m679-d	3o-7V3Q	s&N9|>/x_uq_бV/:^E_t\K:.C*^5ѣ\Q|Lu\ᆎ^
|SǷn7u<:nuuq咨|[l+Uffs`%*h9df(Jcv4q%s9INy(־
N-`&wLv
\Fw愊3#LoJl;Gܭ?2O[cVdul4Y$C5k4KJOX~Nٽw*W(0ˣJw(N\ڑI,kY6+fAW$'d'fpHZN"#Ng]3Bڱ

:8a!)7Zz8y״y(8nJ3
ܢ`3ǠX0hz\|

k"WQXZP##jB,C:G6SY7Ǌ&Vh7bՈPU4;QGjgNsYB^Fh`9k|n>iQ#/\{#dl!-"@)fCf
:01-òJĹC7Qs}[xSR;P>KĎY$0$SuDA=#lޑ^j&U4ƚ:v)7?lw?i,z[
$"pD{5|!vq4ZQ(~O,yȔhO79ϐ$6:4|0E8ʢN ,rhrzxmQɑ1ivonoQ`z&iE5ba3rZhhWVD4l>{?i&:O>[a` D(^-^6ߘWq9">9xAR߄E(jn=u3=1#J]`#.= ib,4.=FQhyQ
QT3UJЌK**[Q͌j%LhČFJ**
=79_d#Da\!k4?O^ug4=gk?FţB>`C\-bj`~sUO!=m_xDFN=~jőwO6 N\8zNj|F{y?*.$EwyGM;l??q6,UYG`{]T7YuPq{q^\sZwX>;~M߰~ﰂY6BqZ_)C^_%>JjKJ#J_ev;2ֶ}|oDdϭ6/ğf6HaC!,FHNTlC~*UU
YKVqPKEޣO     PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Curve.classWWW=L2;PP)XCP"[KB"VahjE89_73'H>x8o_;NA?*(1Ex0)GpTxB"odF0g=W&9<NРi;%$	0E#)"N4?Wg9i<#Y)iʹc`'rhR6'BxJ3qfI'Zýdϣ}z$bX׵)k!9W]Id2՟>B>yM993T%'3jv4U'U$62bJ>gꓡ-Ӫbܧg,
]\W;+2ڟQH(557ih.A姦tuhLuRG)+'Sj'A_h8,ҙ5b'z/v+C%ȧ,K^2cInŻ`xY$ѱsqShp\V&Դ<Tt֑J4HaƐQ}rq9B%7(^'yΞ5շߛϒ	QV5k
[e.%딩&3lvCÝJSBhІ"_\v0TޮҟD>.%	/U	=Ix
Hkxgk43':ɞD'EXgokmkEc\1(ҝ;9{cmH{ޖZEA]l!dcs-@8/# c	Oq.kjZ?9𥄯pS.IW_,17|#[.rkə)śMK(t!kԺN%t.p漙ɆTMfjBq|6BAIVCw7Ũ!RC1Q)sY^z4gq>E3Iɘ}6nN0\_ -1*}9mM.jÐOe*->E}J{tv hv2k7JljePޭdDJX={m!1z5J	Ke@2[׍Zlh[
!S'8мv]Vkp`Yxg itAŲf&q"Jʦ`uPÚ
zfP#Y`1QT^GA4wҼp}y'm(&*gQ}u^G.t;1+hYE[b;,T/A5BNG0KM`Zq7t8N8+̻i̍d俁Y%_4vuV-[
R@h"f6u4&#Q	5MdfJi>Z;UڽvJ[6T	"]Zu5?cSC9SｅzN`
j=h:NG(p"b9eG5){щC}P[
>0ۂ{#$rlF~馅ܸ@~B~JM"$iBFΨBWR+677ƮaL'T,hj4	snPK(  C  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Curve$1.classUoVnbR׀C1ʯ4M҆)+RT̈́:`;`BHtE?`{!mݱu%%r9>ss_L,C
:,
95z(h(qs2ec`U-dHɑN8006mF,-YvnT
ɬI{v|tdn
xNt.jRhə҂>mc29J[wZwXܛ7Hw$ A9hǸ!^;"l˪ǀvWלe묊Ų 6-N˨78ø,؋}:ч2ypQ	dT^sۘt8%
.c^<T\2d(1a;L%int2mW"즬[׭Sݾz[N$-Ewb4#)2mP*\|dTݴmSrZ#z_;X;s@;hy{F(mq}M
M#*p&Y>\[C*?t~s3"!
"wV'{vMuH?ɻ=#t"ge%]Vd̙j#a|PΤF	
&HҦby>#;^쇍Wӫ*?C<MS	"(7>,Z
>稓-4viKeReaobE/7I~G$3g7MaS*Lu:_[$Nз8RW(kTȮa6H]_abХz Me\ǞXHDOОuU[Zp*>NV5@a_PK}2|  	  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Curve$1.classT]oE=i6Ԑ@Sh)NRץMTHҪFE( e$Kֻ:"!h*xx(RC*ȯi-h#s޹s眹g?
$C?<
_G%$C)rC#D]/~ԢdU'JyoyG
#W*Z-kloC
m_5Qkz:.p/eT_"3ZE(WtpKZkuV=
k}ǋo#RڬZo:5.@t;[c@5~+y'F98jCʹg~x+:Z$Nउ0q YJ2*NxGN(;]vuS{Q\팉)5ؗ޻22!`=O5WJOrn1eGӵv7mwQSneX7{)8Ֆ7RSQu\ԩ/MPC^q^"v.qNKJW|rv9w@=Ҙ%X -ܶ4g|q9zE$=X݂(B0da81Cݕt6?H]wS`tmҳ|Tεĥ\zZj){j5ʜʛsTN.rO];74űmdnqDRgK#u#ޡ>>1=C_F_H_}Ne-_>w?'$	~I7H+N_H0OP6I!b@;}-AO0n7\0܆"*;L38OPKtßQ  <  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571R1Curve.classWwFI-#$t4IN,bLc[A8`$mBt#ݗ/}(b)mO[4h0ӜܫooߝOyLGЃף8<E L.GmM0#_1ƛQg<&[\%&̣!T_MkQXeӷyԣx
NMq	\g*y j5VFjp8\,NsEMW^S''e\ծ5\4MOB>Qt4]&]_J͚n
j%Vg9a	M+VuAZ+V+!l8JAel|ծV
Q҆SʯMMsa^
_PþJ͚h[icJ+Qj,Y_Pl\.2w\]NCBf8VyX+d'VLN/;yY,\ܰ\Lu{PY*kɪsPbokF?:js^n)fkK#G`x	#]V?%"y{ZqnhHViL+5{bT9i荒78U6q۾|';lA(:1_eaV1L&9
ϘUeY7-°*:.^`GN.i|OxAu/%	$z>8Jɣe9]d99%3T.#j\,UEbQ˧QNY-IZPt-2o&6mwϯC)ˣ[H	~*g݃֟sxny~\q+)&k$5)/\T1+5e]W9UuQ-f
"b.JPQsS)J1+g
Dʧ(2L%EHI-]TJR%դVf3$+~"Ӳ}Ho8uttCN9fqc%zX#Tmu'@L.r菝NEW:vӯy'`o:jªԴ+ujzŤʪQ[J,#Bl
RofU߷԰i/R,l	mӁIo/Eǻ*BKjk#^{okn\KLNFRL{u=^=Wvp)c:E»?9Q{n]wpϧ C솎8ͩ#{uN⎢;'^:Vi>BLƂ&9n
@$~
t08nb=OL8mOD>q0't'ϝ4/,d1~M'C.c{;fmm'Lz/طB&dG]z(	03\ 9vQԝ=㤏Y<ġMnzԟ=(uirm@P<!Z
(xo]D Փ#:AcX}M;r%/@D_Ҹl'Zz/ηDmg=q Brp]A6^Mi48P>z~♙`pʶV7O=XNNHn5wt#̣&8$={wk>V=_qsc3~wq|>6kV=D$W7PYdć)weZvzNWPKMx  }  PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1FieldElement.classVkpWZieenGv:NȒe%iԎqcN[d%ouW+N˫ЖG_!iP^eD00LgOwWq,bssιs8WB8:1шa
!|2-9Afy4O
Oi>! Af1 HV9A,AE!b!,G]cƒ\rʦ
5\V0R
3 \tqT}*|ڴtI\7o_T3)9.J9ҙ9fwOwkv׋YϚΨef'<avT5sF!tl]5i]r#)}쬂X&r!1JNtݘii43f9ٽeM`b,ӎmdxU|9XZKHv`f
G0Ųa*,6ҢhjxR۹u873<3Js29CŲ1G-qmf恻9Б1
8ձ>wN+kS*c!;[F#s˝KFlv2n#gv^(ڝzN:}N񤎣|_qO)hOOOA_g%OߏgDIAy _CDn|U4 YH9*u/eqo(8:<8."]`MSi:E@QVP+hܩ.
P>Yb~}yo.l!ΒMلhJ)6vUc3LHfR)qUox5-g,d94Z&ޞFE6sf0{n:Fٱr!6VJ7ƮB.%7.賦7!ӮͮgfpYuoc"bDSEs	NH:@O:#~

)|נtk:_E%n.>@+o8D Ai
mТC%µY
B"{ф}\9<mE!in? qĳ|z4Vmf;H7U?
m_MwoB2!|>z.npy78w@R_'IAx{
o<)~i"D}^E$ߠKO72s9t>BQ}#	$֘Ī` o2Fqn-$z{9bQJOհXk8m=]43lY-2^	t|[D,&_-@ꁬ)hYa>։
t]
ɓ>&$W.xlOȥ#Ꮸ\DԄd:"\#j*FR(
HQ $ߵLD	.R#Rx&|_rDrhtRjUY&:Uk}	7y:+V2E?'r6Y)43hH<ˮy9"[%VˬWp#2,
Ou<oS
JX{/	'x[	]הT;72H˄ЦaDPGP>#7qi#
c+jc?_]-W~w'e{m;{hI[2/SRLo9"!.
'7N˿?V{ʎ~ZnsZm_Aux@?.Ò:3PKYNE    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160K1Curve.classWWW=08@EEQiM@6D,J* 0	.]vQvC=VE89_j$y]~ﾻ_ <n	C)ဈ 
HS:}8"͎eO1G9I"*'rb?ߥ(A_cG"dQ!N9)Ns3|2g}Ek^g⚦Ѵɨv<$d?I5SSFE]u]ۚb}{mm$gյ)k~9U]"2X,AfuYM93T%tOSZP5zSZoJKO/d3>4*zP˿3z09فn+w"*i]SYcU@>wJ&;8f&FOJM5q:cdt_o+>CGKa9!:Zɽsz
}`!|^9*!nOZbXzƌy=:ỌlFgѱc	Hhᨬ	WmG54Ia1,0dGENPd
ϓAgY[i2!ʊf2U5@AiEI;i*&tRn-CRSB%TF&C}᥃K%m+wpA»xOP<*W[W;W5l#QE"| C|-~,nSgX5HaMh|,\.J9_IHTWUǵ^p
.nrwW0n$٫
UiȊX5d(
\>]r2oSd*]#Sgww4Q)$Յ!zwN۰X7)Jf*R5	POQgQ2a)EѴ8QktFc;5UK^EiQxeufU3n//_?Q{[LQS0䓡V٤$@PAj_>g<N1tniӺq]v㷟 OB
S|H`VYE~݉ݰ\mMXA7 Etf@X`*jiMBO9'hu4Zw;8O2!} 0`F1Z!Iy?X0JaB
6Ҹ^t]ܗJHf"`فSI9J#xθ&jгd}sZܰhݷ]Fk^rK9d吢$^ 4`|ky/!p.w8|Es9@
2!P\a²
M*hgYGQ]CG+b@Q5#X+HT8=rYwNgBggj(v5BMl^Z*-(Y'U)-ŲN]>z^`5d3wƏd0		ta#m趎n1עW@]8i?Q_O\0-5Xŏ<Z5i;4./Dm^䯐U6K3)`TQ	>pQo]<w.XtqcwᧈICDVV8'%,EY 7ܾ PK4z    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409K1Curve.classWWWMI¨(!	$$V%"8
343qikKk[/}k҇VSڞӷG}dD%Ow/h7<xP!/j1gʈE96c<q7.x:`'E'Dlًr6&4>ㅂK^"Y6Uyh^7=HCap*#)QeCE"6NtGc]g'"C	\Öꆨ#b*#	CSX,>8O>-=2(1@4ST4%ʪIEUEŤnh^5yZSL
L8~#M)<dVRJSH&=O:_}>&3ssZ#RTѐ!ϒ_<%a~qβSJ-'Le.iM>e%´lJ(Wesgɴ6V!O3]K⼘UCg^;9ߚ;$.0+X`Ƽ`L,b%/ȡ'BE&Sq$匃6EN+6)NZm&klP
PDf䄘4rI
0!ϋsN<VDIu.r8TERVEzZ&-1a-Y\EU(~pC&(\5p7JWAmM?іX{s;j
h$n6G"]-P%B<`#qGb<n2
xKfwj9`谘MZkf#HǸ-,Tg\MwRȴ~Wf~;tԍ(&:ċ3-8{88=,=%dgx0ɡSV@͛l3
*QoMS20%iH+rDu:0g_|<:|+[Ғxklg8MǛpY{.qC+H)6ffwq熥Iʘ|ntɴDt
 iftֳ.;iA<#-
Hs+Ws
pG½}%1`2KQL__ZF=R!Ht?D]J&{Ј>=:׈&^@WQ2k`}D4hy/3/Pcc:IocB)Z[)Њgۉ]M#[up#JGN**VP8L0BNn\qKV4
TJ=, \3DLeYmMqhH4qg/es.=Y F]
5sעeopt?Į?P Jgj\<[UT:WZnfkd^\,R~^JNY~=4?fVp(QB/Qno@?qÖdk`8dV
Ս7켏a#ZJpMЧ)ibb>đqxPK
,S    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Curve$1.classUQoTnkm.cc+'M2Z)
[1sa;6!$
$^x Ct <[峓-b%J9>ss_g pi 8//+Y(㘁RƳ8rTL0֥;*O@HJ LptB`z*~ǳo2\Ui˨UQv߮Tʾ293dYxN/25IDO-uګ*xXSQùC-mb8cOO8W;^D|o,ʛI@9֠@H%KlwbCO* %y뇎4p4ΙxϚ8C&#gbUM'qJ`f_wۜsU[yQ킉Y\4ؗwetR{
jC
0
7ǻݨIz"ekS߽{MF7UYq꺸8V!4۬mL[ǻ䇺1[jwzώ{4&F\.^H4w4pyj%<Rۂ(B8tqh8U\ñ(cVo\׸>=h=@پmt5j]\kfԝy#t)oWC:+Gy_175*K1a*TfM |r/!$:ޡ>nc{=˧N+OXxHKVUHp8VeL*%lc2JDG4bC~'|l&}
a%| =ڇ/³DfZwǶq %{}=F(/\(&ePK46Iz    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R2Curve.classWWW
Y&QQC@vDa03?ЇzNՊxJs/ߝhDxtNwm[obT`ȋN^x,CGy9/8Ͼ\d%rOy\fȘ'xH^$,{1bBgPpWyd؅Yj14AH2aT<6joѳ#㱡.aKLS
STQ1dC3h"'r؀O&*-Jafhd)%93ȳjp(ꔢ*"lR0ـA)Yʩ<)4&e[UN8T9	i52Ң"FvnNM#iZ4LyM/)Sl-´lZGL)7d&r^键*IՔeC7pEs})hTJ%]&{}0aAFWx9!K(,L{I2+)m"7@R$4IS]QYEpp橐Cm.@1QS<iWOdW9ɂv>'+Jl`CiSxDصMiY]
|欺8RÞՏ  !fh:)`5`8mX4{CP8D[D7wˤ'N;:X([#VᦀqsG=3Շ8tlx1[|#㶀O`Tg\M=u5/9`J-/Kad&BK@Ap(nP+芤gphCF'fzҬd*TӍI:͘I)SW$**{dDu:6鞦^X/DIzz$mbKb㎝l1E2_<0ZECkb7y⮯Cꢁ
X~6[qV]j	cE¾14^16́Z4b?8`J$5;Yϥu}E0aw7we8+p~1G,Oi,P6bYB̽C`<!Y##Cw(Q8D6oYAEzUV%>@0V"&֥Ңf@]
vm&FX*ݾݖWwoif44lʽ$i.^t2
!]ePb9pbiI`3ZFM>G9m]p<6iMZ?r$	J\s]"[i9J^@#aD(u=hw;J;m/=5G;bU~[nۭ_{~x
v5e쾷mH5|Ҥd)o$|7ElG8F8Ix({PZbǩ>d>U7I;Xv>^(Ǻ>MwOBwPK>	)    PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233Field.classWkp>Z֛ʱ7Ȏc9/lIG$HB		bYVYrd9-JHvtH;i:iã\`͟>δ:Җ!0=K<mA4`-۠Ae ?r+/{X6јA>VX}~^htK$JϠCt8"漼0J{?]fF<]Āe;|"ߛHϥͦk[2Sm`;
Rvd'nT&547=ʍ%Ӭk?8?Bd%3}h,+:NoS'DhbKAx;H%l4H=(LeNr>=Oͤ}Aם\jbM.<=k9Y.Q1!Xm]ucLzGvz&]
~L".y[[fK<vF.ٹ\2k#M%Ǻ{zvM8z&uL:B5it7EL/iZPy:өDͧvLfSٌI޿7RI6nd*D6fs\&9L)7}d497NGgAV{Q֤:nvGM,rVqgxX*pk"-WV.qOt(M!EPݛbHK2ȳ9]Sٙy\IXͳt*qIef9	U:SHbcٮkr@mhVw
5QՒՀu=$-x
ƅ3$!jNe[!<Ѱ'Z(!%VѰ)5F*9lbiOh97|hg#ZH5
Lj{[*ZȆǙ,Up& L3YIVp^GajlsFq$̮٭0Ӯ%Q&|+,\a5G
 |D7(>P st?Z'.j/7.9r<")ʶ<OÑEF R+kh=)p4kaglogh]ހw#[MjަZśzF4؛(>Gϐ"w(G"UڹHVgN,fgHVS(T+mRUopnrcH(ͤ 0y'ރƠs2'ۇ܎x?>:t'~t0/A'h
i>E)z`MʈyH!PK[
T+R/ߍ5L,lZl_ j_n"u&h9-ek ߣPqun͸ܐq;1n;c+q1@uq1AqQKжXrux%uGqL@d=у*}5Xp5x!5y>	:܀ЬynAGE9:tUǝG?8ދ 
!gqZ	,=Fo g~HπvB_!q1T5}AvO	5:Jq$ԬfJz
˼s!hGv.F<둲EjW`4lՠ,8J8}jEqo.-$RnN~V7{~ŞӋÛX}c}y:7o{c]Sݸ'prfd L,θR/K-UR,#b鑀-1
.:ns@$Ρc2}2h寢i:Dno"O}ҷe6iQzV9e3KH	 '7.>5^ ėww~+#UP)Ck ?c	~	Ote;b
 Wb͂(5#;$X{%P˄JW0KTޯDVFG5o/y=n{Q|SY(R7Yc/{.s~<PE<&}EI(yZ-JJ^pvi/hvs*#i 
N}5s:@YffVA*8uvd5Pk
Uޑ'eDϸ
b+`  PL#9u❻ 
F	-hD}^4hDU@'WMn@{?ggo˰Q0ðq|~7+\ဂ!h@D#EZ	ND#yy˩hDF9F;X	L<jb5ivl+`NQ5\.z
a0[kevf E4kU,)5{2b@G,`xsxL/
rKLH-N9m;5 1څB1J{ D-M9-,Z<QO_
"@D#b%GJXU.DX-5bX?ﯖfŢVE]Ү"7Y:i>AǠ(y
겍OyhZeO*Z4FNEPeBaڱhr:.k"E<
,Xo6Z.xs/
nQ
@=QRF2EM+E)6Q\iFf';6)zD󠸉Ή~ȫIɩV9rQZin^dhaTӪJ+B. Y:?PK94
  *  PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283Field.classXkp[q޽/(dS (Hk4IؤPQHPcÊ
őڮ4Lb'M4MNښcv$N:>8m6i~N;INfJٳ\|61Bbtbr2!/Q
1
Y:/1.0.]a¡IY\\MkȢ% Q]x1+20k1}@eou-Ŀۂg'CW"1UwOOsS㹉ٓL){ƧƋ0ٶ8==
ΚcSsܹ	͍2ENGXmPzC`p
<N9iCcSXaim۱dx!<{8?<CWP1ԟ;vƧf`Н(_g`LatNT!)kgz}WD={e.7x,K;!a "SYN1tis/'/OtOO^ZJO1&=/,O%W
z
l`뫸e*{

M%Cpǃ[$rˡk]y>F;G%	ȰO'SDnj,;1QM B|rq|zJT|ܣ"C<ڰi陱̹鹩|>7[(Ygs,:GeQ'mhH?J=zG[e],Ӧ5anu!CzNzV,V[&\[*"Ϟ,LnT٦T	2gwf&
셹ewͶR9]ۇu<Ioo%Mp]0>jE؂ZVb&wc 
1 ք'i%_'~
 ӃmMⳓvUXς3IF2HMI32V&e	d'LI:hYZ(!x>Zc}blo,&Lȷ>};I,ݤ.}wIEc[O3kw^@i#iC{+[֔x+gSk6%~fSc6%} Ʌ8`.
Z;m}KOVToIENg	@ HR6 YcaHHX@,;-"{rcrߺ'vWOs]L-ikWTz4H2$͈qgtB. ,*Fz#G_@{g7<?
"j?<tފd/P՛yb@U$ሗ:m/P=%nt]1kOjЯ]BaÙj\d 95ȫ:4I),46cL9z98B04FW]qtt.mi^5%eq
׳Tl+f ,^΢Uzq{v^KvT4.kбW3*gTe_B=HDnR;bzRȁ/RZoǐ/cLq|*AcM	s1e+_|-k9?9_Z\eŵ\\C9:"rq-剘<-i艔<-Ra&H"-*QV	R	ѣ7/@FP._TwcEZ]kpgpg*ݦ/ӧMEzޣ繚^}YF.eM燐BQcoeIWٚltldVbvYajǫ0*%x2t-/V0b!'[
to))+Akn<EhNѴ>NGsj*m\6MZVӪhhUʮ@((^AپyXůGQMko!z~k=hrVzRϼ7\o oQ=8
DŪ*R6c7i,nbRw	w֣l߅?F>؟Spd7u )[x?Yhc'q.W+ s qH%MB *MJ7j$jtMLP4;Q6I䂃\; KS K*o&\ JW6dI5u m+Zը35UuҊ	.4^5Ro:?D-ߡl^6c$?wJ?hxw?go$2Y
2$X@:Jw)6TI~]dc	-hR	S0{N%zh$}j ]$VSĘekAH׎,z&P|m+D-N@};.px9pBSpS
B @hզЬiuZ7X
bVViF̨ZmQu`rРVk!4@l_U5!T*X}bFQ!R^ \eE.
`zU3BUN@Ҧ 	,kU2jzlVjs9H-ʪf7خ42]MmHĳZf@vN	NSh
r7mw~}98ԍΪQ=H9e^fUPbN`ǳ!S1:xח@Vj!p9xT=iGȪ.#)_wg)uMlVuJAN*.U^\P-TXܸ׮Kx
QK5[p (Ugո5q-y:a|"'y
zM#n>^7q 6twqk_o~{y>cg?	s?j4qc0yS.>m3 59gs5`<<f_0^ƗxO_)u6Wy?9]juc'"HhP9S#qto=s}U:6Kl]PgV}'qvś%+4<'B
r4K@.7Qi-kNP
.oL6XtK|VJ[
O$?A&?C)qmȟv4,9:Q=9<S_wWɻxV4	i~:tlA,dI߇bDmXrWW	6ŏD1;b&[m;A숃wh?310?PKSQ!(
    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409K1Point.classWkl\WqqsyĤir&qI㤤&dwWSZڦ*EFAPS("BE BQ*;{w8j)ޝ3g̜93=+}x*FlQC[ .l.dd-2`1>!n!2qp[tJn`X]8Nv
Kf{|R+{DϏ'}"QJ	
uL^XCW67ҟ$O$BjNXɖ-#ڙ4:RVz`K2WlܭnX
]32oziJ^oV{B"y@q&-CV=
(f6K|N.f+g|>ҒFWC^ t̘@'ZaPS8J҅ݞsk(Q0+;KZ)-J\f
{eG:L#}&GpK5tU!)qHHw
Y!qDGNdybDQq'\,q0exJȃBg<V
,NxxSXzxBǓ8Q\"YhVN静kO'y_pޘYvǮc
rJRSu\a6NR̠`T~*Xӛk}#BpN25M7ìT~[ƒNNMILıR>R2+_ؔ*8I:ɾ 8pE{ZLeF`oqxCl6dsÉt,Sכ?2Qp)l&_Hd
̙k[h)5ԙ)XCV*s)B[ÇfN$sف$/[RK^"]RQM[-ه'%:K\=|Mx%oWh&
*leE%ba/z}jmi[}>47KNzmZRbs).'jM;9bc'>'Wtt1TPYʞfqQfX<FY9X}=Rdk}&0Gb~87B'~.1b48!DIyhp^ jfi+tV;(vZ8*gaҍXy|9MLT#(=4RR-	(b`{Mt4FQI)K9s0}I[7f`9&hDKo6
YE\:%SA&31+9ʨCNHfW1ȇ(ͬ1j0GfaD
QYkԎNfQmۆF5כ/e6C_#"s92Ef(
a]d
0FlT)DFٿ]%~G@!#j%vr..f>u	S.v_居}u7VVr7+viˤp/g~ i?FӏGΜ=<Ըȫx1ujxYzx
cj!Wj<;3_T*9u
_RgpV=s,yu	/8~5){~iNyb#t
.
k&~TqE~K};sod*zˈjD7︘/JH2Ef	x,r+tcLQa:D<5a>ԙ^T.XGmKb+u&>g1_73x HѤn!E,hŹxz}g'jH̾BH6!;ςU?B'^nMg|sM<_+_sO ^<͓= itUk3(Oem	2hu;Ly؏;]b(-fO;
8'
:KNm$X	u~-!m }r%hv[ZkAr
4m6βag$0	:d|8JS-m&?1g4o|l{+ĸqM/.rY5Oo*?~t*UUHyUXݦ"vY@ȩ	swZyQʺ;)m_&[YnEŻ=u;#i#Syz4<|TEUKXKmQGDSl|=X_PKa  1  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Curve$1.classUnU=6mjH]JS@SX;KBAV"YJ*FE( eڻew@P"/H| JT B%g.m-,ܹ3]׏?8}hy9Z^aԑC^DAĘ3(FKIb\bR@nX͑rDM/z
H,ѐN02.PҊvl+ԲFI%^P+dyq74_r\'|]ԖjkJDGW-[+Qܤ4sܦ]o8krOO8S9nH|e_n%2A'5}e*0ͥ~uj։P>ɪa͌k7qUV%(㼁g0pH\0*irQՙj)7]40K^R>xWF&*ڴ@ŧFys%}gsqY<xZnT-֚z"sSۻ{G7YZBupqN\ti43e**po܏w:1}9ocood&M/@%G;8
,HQ͏nCOn#F2=qMSk\(#z\D7ZQCo!YI%+Z6>zYmvj5sf%Ȭ;("TV.[=e?-)u+5Q6_A.&bHEp	9x	mroSc{k!z#%I~ycB<?K	~Ū)gȆ貌蘅mDF[.Fdދ/Om=>1E2Gb
A U9"LR1	d>~~_pE35QIPK+,z    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Curve$1.classU]oG=c{=K0B(֎cUV,%!rUem]NZ*@?xK+QiPPJν{gs3_<0˽p8SaE.a|
#)A!rl5# *[`.7@FC2hШݖc}f~T53hUZ~}Ue-_6VnyjgldZ%{C QvDthvBkmYy1TF6t-F%ꀳEv;P
Lku޼9H3m7LOhaB@{񛪺-RWeˬ
&:Vmge^
.1cS:^apP!u$$N	\W*تYm5K:1.И^q啛+_J/-gZly.Jkp+p]i5Tռ^xըwa*WQK}gn̀um\S#hmʴ, 9[>vԵ{hMA4:ox:v/@$[3~@Z1$(䆷 r'ˍl!FGrLR79coRV-bw-9㝥C<x)/ih},fzR2^)c"8$2rI޹{u\znݔ⻝6=rm$0\,T`F  \j06p:>Gz&/)'$N/O)З g1I3z5:|>b2і
d=G}
ddڿ9||<k)8 8 Go'yʇ]
!g01j)·oPKpx    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233R1Point.classWl[gqqܮ]il/4]i%#-szsvbݠ[1!M&a*)06@L	BLMwN
RE?9=~_	
ktjX]B	Y$#w	Y/d,-^!}_Fn
	6ˈal2([#{lBvN
-=2udH'
||¡Bq}0ɤK>.k2]]cŃ֪vdpw߸oWaR!8ʑťr?lә}
-KgTRB!8bw
E>14[
4t_zj*/ZR>I=Kwig :.]F4l&sSn筑t@az[tv,_e:H
iWxOR0^pY,q1*$:
B>:),1CB(u<c:VA!ɾ!q!ǅ<q8>:OxRǧi9T*әrOǨBxL_[Ů\T*XzLν{YԼ̩$:0tUG^NXP1+W,FrMUehڮƼ%=2-CxJ0eT^-;
H%:
8EyJ\`Wsul\娩/K@d^toBTNˌgcBWٱ6;>_F"G9
}lT.Xcן27$ܚ՗nW7}_M֠
䗐
G-9spiU%]u0PuL=mDX,%x	x|Jooh$%NbOR,^@傧JL tx0z?=N -)Dmbse30sx'%>V3&
&1@+l*=>SzyɩۧYF"|YEٸZx. B;%]CWcϻ!5i*1NQi 3)ۙ 'q\h8	f3h+11#$\3٥jgFblNND8N.dPkڮČ%:3gu97
F}q#fĩ'1	49-3:GdUҨYhL"ӈ'MFjlY|&Ќ1񱙮k9E!Čg4V#ҺF	x_+OG_Zz#nF%uuޗhǈI6s ebtbl`*ͤcndVmfvb56؍؋]lvsڃcGa2r#8y8;^cu̾gb/6%&O⸪*j	Swq˞i+PSj>s(Vy4N/:/zϪpZsڌ`"jͩ7%b^ܺEI,vKAӵUl]"RHB3</KĦ٫(!t :&M@L,Rӡt/;	-uARu/ApRR&
JS!p!# 2DJV0aƥ#(m,ACw%4Z662__$%~PMKvy]lū=?!+<׹#;N""q:LκÿZ{"m
W5өƊ`܁H`LHw@g)gtJL߽5@ʎįY0]q'ֺ%DpJUr@r@V<24.GȕqP4bcޙf=2ϨSuo~-?Ȼ~[~}s[~+b
׿%ZD]#OG+_oxg?bKlI~ʯ4~橠ÓwRcK:b?_k7?S+]kس@s/#c8Ǭт@S("1G&LAT/Z|MH_^lT,o?PK?D  2  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Point.classW{P}}~WW]	>&%5AYXԚZjDmM;M@4cW:}LӦt?=3zvlE{^^}
*ձ4iha]l⦑kc37[<Դj{xl+7mncjW<Դ؉]~ݣc-:х,{?>&c68ƒV5eGu,5s}HÀk}<!0T5NfX40z3V9:dK%nl0Dkw8=@xܖ6S;$%y%13X@uM\;qG{zZ朙{C|dh8(cȦL4wMb\	/!
=M̖8/yq۱bnSn=5pihfNl:O9ۇ2dq:40qD`\ GqncxO8qP>>aC8eÜYQ|89`'1"p
{pc<ϳ1j/ǥ_oәT4i9@51Z	3<MyK_*
PVci%DiN&ST{0fwx5ˇ0SMJAuqX`>i(I0Ov,th;su5ICۢ/XTht_ g<=ap**yKFSVIdhI9qn V%EtJQÃG^}jF(܄(d
H)Ёה$zM>,Н2{1sEC>nջhaNR<̮Mm
Z"-ΘUNK_LtF?7舃DUAu'!^!Z6juبAChY,>41	6E𠘼ʜM-Ya	8眄kK)QK'eE҅ikpp?G9O3N:ۨQqbN"
pѐO _>nu^3w>+WGQ"PKw(}ԈO!(

(5gI9ΜkfEQ/g]K("%ͺ%g/,g3YI/S(xV
Rų|TQnr&U&LŵL%KʭP$XJ-lwN<*W{&XY KNTIQ媣V9kU5Va,)
ZD5Xٰ2X8Fꕬ24Xty=k
,HWg\ +d$rmڸ6E)6]IPXH~,"j]FZWQ&	Z=HG HP=g蓈cQ4?M܃ߢ
'Og?U.v	;tq;
=/HRHȈcȊSqX@qTG񨸀xBcm<%q6z@؂8a[㔭#-8mۋgm}xӪ홦55ѰVq՗.2KX
}[%vcojjA9.'oErGLH'[sH}0b;Hց0Y<u\`麌!8]Z`71Kwİl(q#BI~.s"|,\::<J TO&R@*$]vLɴ<BuP!y,dsi0XsB)rO9GǕ-jJ|3/EbaY(9g_!SXA)^D>KP<ALP_ƽ^א$`
Uyk7	9|.~-@p^ǿI2?&LŝxCl/>+1qZoYN'	ʭT|^7EҼf>Jѣ XKkƯgs,aPFXD+kNM+Xwǻj^8t"u	+#[a*=YaT){(6[Fg[aQ}\J9p"1gՓM+	<P Ɔ;F:#hVk0PK,q  ?  PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193Field.classWkpSc݇$_ׯ[Wbc,^lL@ ˲ȒeBvhMtҴdڴӤ%vt:itHN	u=WXLm8gw={vs.6RO+iOt~}<e4'1 tO
㴈fTQbc:Eyw	vSh*{ K[ҳY-Jdm8 HٝޛHŇ㙱xOtbB ɞ./7d&=+15ƧAM{ODOGhS0\&'2lUfCN':`C\2I7>u'c^ <=Sst.QZa,5d]T:*1=ܝƲr E?L4`-ZYdbĊWrh%hz.'85X
xrbΠ6CAL4E
JPؠ~zy"㝌d2>M"cl"2(mtA=anB!h}:3匧R\,:McNln6vfA{ӴA)JmM{I})$ξW_ym23pJ͕#}=)7"#L\"vNgr{42 rg72x4K\*ȸޞtW&d%P+P&ZE-cH2~YQBzo&>SGQu?aO0VBc+L!ձU9}Ľja|h٢|X鎭3
y˔L|7o5y1.ؕ#ԌWP7ο
 "#E_v×
6/Ɉ^[Q &|3=GV@l@.n6|#jz6q0'[C-P7oIh_r1h+C)X4!JkKWvC8&[]NRM*SNG7ygoQ+{ew*8Gҹ@UNЁ2:MQ,/g֗3\gNwQ'tTE5
Rtq1AtC8a(BǡthS):IYPΣq4<$)DJC6|fRYsiu6.YXPS hjDX<72!|8o-4^Bq.#
j2f?1[YsG,PB! R,C(P6b**ޠg>wX/#	Zf2ڦٕgX cy C9n@#a#>Jc=OE=KgE,Aq=N섚cN_)#PأHY9Ƽt79"MGyFPb\@Ï),s#Z-ΝGFT("h 1l"5n6H6yl`1/-Md	D2Ө/A}m`,n_C?G@o@[PV^-R3_-,|Ivp$<EHlz6X
|3!E>FBP%bSdZ*$X nut?Q;@3ݯ؅ur[OI>e?>5Nd{cMe1*%֪B&!OKم܅V:ojfTn1[>Y47H|涼UeJ.Q/ئUm.c
SՑʲK+`4KW~~CH>׊'dr6mHePAŏ+P[DSGqv&	ߢ'wڟH>=lq{W+%h7*M/jq,P8SNXu9
5p^A{pknym_I)Y6V(Y[d;iْLɔdlos4umϦѨ2sתpO-1 =	xPLHMc aUg*u.e5PrZ>4 1oV>pu4/<K/`^U[
)jDQ'^AXbX&Em[K"`PvC]xd,'CX&̠*Ђle`foV	+LQ˅^݇A7&Q&4\l
4PwY|.s9ߝmM$TՆ/6\"(0'/qwR~"kHmdGZZ!6N"3Qg袣.]-tYl"vʘ/g<8EH#Ԋ"î	nmȣ(MabՈ~H^PK	  	  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Curve.classWW=$1b<
	&v>ь4R8$0b!鞺Mv1Sw_7#NON{o~w$(|:2.E0)L E"^Aby,y+"z
׻(^D*	pD)"-欟6|_ePXUljV=lD
g!ǚ=żv6ӹ}y61q.W$^ͮ\0uG0ܐza<?}Scvu>2c+5Ө9e˳gll-ZKR\cHl/fkѲhɳvz?
]`kŰT3V1S&h튥ի2jA՗Sl:[UVsE*]"\a^9c,5-%$ -BzMڋlУ固}f"W]C;1cSэOΣlG.c)c!a01gP5uQ(45Iᨀ
x@ըڋ|#^(EUϓzΞ*jV^&aV6FNvr#MŢ]^\Og7{`8Ԕ,!a		|!K^CQp=*	ooIBm|{MJ2W˚u%dcr62D4rt,*z\ͨ.GLJ\Iy-WiUN%cZTUUVh:Lsz&ŴxBz")DJMFz4*Ở/?R٤Ieҙt%RӺEDFOGl2%f-U5i9L*U$|	?nY?IuR+ÞkJޕs#~w޽Ak_7~+na^
?p%`vT
ї(7%2EEwFej
Oxc1םR9bULj$[Tg-Zt%NFe>ѡ)PaJZ]cuCz~˼ǚ㈽m49:&oOfJΘUwn~*(_h~7Z-QsQv8ܼ.oNUjd ~^/?atat	f()ZF(34@țEOȫތf;71 }YZ	3GީTCiGѽIcnV;dU@kpm
*܃67hmaq
Vp0XA_C$GGЅ'4qBiYE<IjO{=q95{8Js=tpi}uE,E	S.b-t",m;	Gh<
N8301Ǚ8w>z&WѻUw|h؏g'v{V'謶
\|C`~U*1N}
i|Lxwɛ6/w,&|V_Jn!;|K	wsG|5]oO<D.?}Vq:F%x{)B1Mt1h<,c#(Snl|FaÙ&ǳc
gO?	޽y0x{3`d4|@nALPoDjي~K&*;qcw4N#lUtaC4U?'D_PKFn*  F  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Curve.classWWW]08@EQiM@hE[mLp骵WZ==oRݙ8Q"y4'ν|~[ X[P}|/""<nH|y'$B8RyE ׯ1	2|i
Ȋ0q
9>{*5uo0HqMSHZd;PvLC9jI5SWfhdgÚGZ޶=G"[$gѵ)k>9U]"2X,=E6YM93T%Rj7VU$ޔ֗RiƩŔlC&T6SOY7r.`;RڑQ=rO(555iQiqqdCCaf"n4T3:Hv@%avyȱW]$HpD3;'煝YIWiKO1/gt9~M:x,>#>Uʀ6]?}
mx^C68+<Cz[dH֠-<t){R}{6M&DYQL((7*i'Mń55>?Vʭ{`zVjJGJTbh(tpVQZ..HxK J[bіp86cu[Zb
k"u|(#|q|"Sn3cW$caq-_
(.K
|-|+
.S.^u=zU5|'ຄ)K~^1hgyVT{2!+flnb4򒡨rTe:ɼEn!ϡޒ|v>MI2 w}6z=4k!US6^/R9MZ@wqCgWtz|=)M:2' u{5OQSS0䓡٤$@P!jj>w<N1tn)Ӻq]vw O
%Rby;m㷟-d'F.WgGK>."hVX?,*ExҸVgQL3=xQIE Q`fZY6;7gsG1o"AI3_H!:kA.W	Vzۆl=68p2}(^3Ɇflt[YDDJ-nXۮ|i~E	rHQ	y	o%&_Z^K%@v3Ha^J9$C'kFQ;LXZuؗG;:Z:\%sꦧ\4n6Gҁ	އ˺8;w+x<<bWP*TĦEц
r
E>*]1,>_lQ<A=/[zd3wɎLtY9D{u*PsP*`B6up7'/aY{M3 VOڎKDZũ䯐U6K(wM(Uٴ㉸.^wHS$h"D+H	 ȁҬ0nPK,	    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409R1Point.classWl[gqqܮ]il/zmMӄKGҭ/Z6ح:[1!M&a*)06@L	BLMwN
RE?9=~ҷ_	
kthXBY$- w d,#!O&n	ȈUFB6	mB}B!;Ebv!^~XCZ:d2(Bē!l>[SpkO8>XgfҥrjI[!kt;Vn+gXo\|0d)dVȠUHyҮ9~	n.d);:"c^d-~z7}N5uFR)[$;IC4=m nk
xD_p6CA97ZpLf0ZXY-oe߾j[mu$Ү=mfFKH{é:tdLB@Nǈ<V(y?8(FezH$9"8#X" X-Ӈ|T-1!rBX'O1
nt<'u|
VH^/-r1)w/QOyؙKJ?z2KԱooW8dUGf(s"[ڐ' É?[i
f
h=cMۍ2S;[ڔRF:5}wZ	Fle@D'A(O+LjNnɡBq$5@`u|y-9Yȗ|1lRH:;e7ְUȾba
Goɑ^6C{SV[SMꦸ89[A^~@[":un#
"D+>~.<(ގ%bJ(>^gj_y&EFR+$Չ;A!	R.x8BK%9
qڳqD%%MCt6lFbO$jsG	4iX5ΈZgTџ&QON3мg0@>ҥi*U""sQҵZy9Rcm^	PY1ӛЛX$ύL-a?2hx͐c3B	;]zʬ6|f$˦jaDA0ĬRHFJ̨q\3l\'Os`4cv17bFxhGΨsKV%:;[%Ɣ,rn?xd4ɬf1oY*S4pAhY}Zc5"qnĝ@b:n$~Ŭ7fTQ'QWQ}vxhy,o3X́NInVF=L^&ff >l'݉=؅}j;8μ}6-Cx+03콞s켾Þ5v[~Ǝ-RoSla.Nj<b81u'W=왶	}^< >iuWO"N3zϨWz
g<~/K-.aUN.c-t

$%.O`3^f/a2AnjDj5qyQ\&65\ME	cu&O5yo `&%e
+}1)hڐ~a[@ͦҔ74T@Vh
!Vt	;6.Alch[-ղ|"ob^"̷+Xb^1Y٨܁pp1'0ۍxav%EԒvۣlcT`N56V\$^ArÝeB>-O3>
Pbi6Rv%~͂ ;
'.1%6PڬjEr&۠v ɤiu<r5>FǈG+L4;9FĨ{So!%ğ[\ho-w#z~~Xǿns;s|s]`KKUwV~3GG @\7%wLLh^X^Þz;xq-55f͌TEPEQ
8,Wg
*xMEkB:bbyPKf4  2  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113FieldElement.classWsguYI($m&dW4I8*P$岖&ػ+.)Җ^ m
-CP`afxxo ~gU309~߹}oc p%8]xJgU|.G"1Fr0L	TqV0"+
W,܌ gek	#pPd{^y<-B$!Ϫ :.x^2qft(Gsz;өcf>]ra~\3l5KFR4	}@ɦqGϞgܽr"?s]MDpi̴OVYAc1ө4bPxwcWΈirH[O;YʯFOWmI\ND|lSJ)m`T{h`s{HFnFʤcYlRp̙ZfR>isA\]{Fj_da9gJKF^wg+E3p7Ekթb{y=FԅjӺ=B
85hf,,G˰Bwr?Q6#\~oO,
W5ƉɳFѳC4=]xbeSy۸ۿDn4
_ǀ=+zӅ0h+3U7w酊ɐ*[
LTxE>U5|SxCÛB·\3ي픋)lCm1{qI5ix[L#˸]
'pD D>5|G=
eȝ%u#E&jRɰ
m*>$~`z
N8q56ߴhJR'Mg(7s)\\mcgF,|*;}q=셸{HuyQt"Ij|kwDAt&2.ڷ΋_IC
2)bscR/U`:ݝF?+*uF4ɝ	&7$"ޅ2{>T[J$~OoBmFz3{4&QEfSjPjb6WqFx؏L8qO&I.Mis\b(SV;tqkѽҢHKE.zGՒU=&'֣b 6]x =mS=01PlaO|nv2ćҳ!zZVLU3=¸B;~4Jj+5**
TQE2;<Psfw밭>H?MgSX
+H.bK]tHM9z<&1bX Ƌ-.C±P,X&O D:ʳgMvY9@.A|./gaٶEwHkFS@:rX6e.6!,DnTu=O+Jb+UrV`o,nJ^&Ur&|]2n+؁W){^Xym&Bwv$/v%z
Mz*	n.ZGo]k
C*ciS9}G4Sk}-\˱"ϭTtTK|gt0\#'-q"}l?>'<LٕL\E-D/#&%S{-Zy!:,1Q3>t4DO֜{x6>=;//?9/sm#9{~/PKic5    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163K1Curve$1.classU]oE=cl[C4
kM&|J%$\EBD6!6Vu*TBHHPE x(R@ ?JήZ4$X޹wg{νwfǟ.td4i0!뀎B:xC`qF@_~Wz"+ZX3~cZc+U;YұfV@*ȫr&'ΙAea:7/e":0S\suI6.0+2֯QK9\߿ܼ"pҬp|{!sy־;ԑaZ>@Ӑv(ck\&MWfÑʞGY
cd39ԽYe#F1f	<i`8txg
	=|]S\^:g`^ 2Fٵ@CR6l'*Im
mբl;5Yߖx|\TvN
w}՚YTWi}jCMێ#avp~v u޵Ǜmd(dKsEӃR+ `~`"l&-(q^G0w>MͪazS86
)tQwKdI[7zV,gN\1%KlJH!d UE̮ۿ+ںJv0%bDCL	1|H#RMR/SS$>G/l3{naE%n2e>^t!1Q-Ppcؿw>oCb7/q
_D}0 ͢vON"F/I˨'ol!]t}
}1g,H-(
PKS    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1FieldElement.classWSg-I$xA`5$`zZ@EڂHod

nPKLǙv{S҇M@)=;o# 6D5bH*NH!<0Fddǅ
9-d,'ԓ*#~F8]HZHFHV!䌐qA0DgaȇaGPT8
GЧd^Ɠ}f.e{Fpy^AXJA6
bK붟R<T
V1Ţ
gDO[{z>Y^bYm
OSlm*3Ҟ)Xk䳖3~ӰCz0hZK{ij
J1ʀ*
\2](ڙzQ2cdGXFްek2L%bX-=GxdE3'eiS]m9Ɲ*0=m8TSb"-W؂tOOuwt|ݑB\[9{Wף]}!pb0
i,:j::r>cLzfV~eZF-3r,iĮY<a$^%e\p/^QPw
W]Od+߇WŉdyP+
)7aw.rUpigW=
yEe޴h$KfBKٶt5X|ۗ	(lb^AMdaeueTur8idYƥM8.dP,8t՜Bq"K$VV6yyD~%H5v.
!ކ ٬2ݱҚ7gZ^gjɫ֥
;Ác]˴Zԅk?-|=Y&|l's5 u-(_:qUWQhC-?}Zhb5&tPZ?V|!ƷY
ub7^Eu@䍨&>9g<+>G%m~+-QֲH}4jfܹjg;iWe}m~9e̢6x
j2V:g(~pWdݍE&'S_ŗV.V&݃eeEտŁA&QҸɿA$3|t̢6j`)G"8Ji7fZ@Kd,ϡ5&:IauXcz簎JX8.@6i0s	%oQ{J SqȻA.Cs _1\#r|>JC#7H|C>LDN)zj7g#ԉNZg_)7jRMx5'e}]Qav8\QY
+h;PzD?F(p]yԠ~nf `X
08	?e|r i\g)ߙ!Ytqq~0Rs/# zG
-r"xjtNht!чɌVcv5PK:  U
  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571K1Point.classX{p\U}}d$'iiZJ'M@m&6	ڴܶnAP )"@F:0800:Ȍcte{7ۆi2ssW_8=B.4pQn+'@r
~1l'dtl!ȐK\&At1°/"#.쀐˄XAl6 DWRȠhrIŰ;EmvKk+\#Z׉BnIҍnRH&+vvۚSx,bVu8:{	kpm۠iM
X
DҽAJyFl,]a~mT=5۬l_k*PhZe/tteWlG2ZjM
H[L"M
ںM:h@'iDm_6p7+-0>5[		t]|ѺEӯ팙l!oO6>ɦ3lNa66!_&r'L%wGpDua|Cdb?~%L<<xKD'-O2)<mbyFX%Y!jϙ؏ME<*$3bUX8McbL|ĸUƓ-Ul:϶/RM̎dJ2^s9۝kZ|U[o̝cv+䴨=܏LGr72DfN)Ny(&8
f;ʵO?X%2$-&	9&(k;F(keYgB~I'IBNʤ>5!#)iSrcmL&}Nv5wǲK/ctl	}m,3=yL&rq.D<Wym1<}3sbI;+/xE1Lb3	}ci
=&SJfdkMSr3bub[G2kmDpk:5tL	FIrn۝:SY50ЛHhc"_tc7`iIt0sw,ȿ ,LP8746zmsIp@XX //sOG~+s:uP|OՏß |yU="v͉s$wQ/
cqf7܋C!4I#$.\yfsh.p&rD#4GA֠-Y?M>Sԙƽ\qWJ()yg| l5gmEpF!F)J&u)?_Φ7et0JlԏRR% H7|G=Mc؇ro?cmP=*04}TC
	
		1oP#i29]ʴlP
`-:-GA싆gɟTAiX(^yFx]}bQ:l/Z"l(ZKtXӥ-źP	C2o"÷s?uԆ!̏V1&IcATk#Z"hB!Jd77^MS($Yzpa[$/]1u(a<dźRkb!UlBO0@a;أC2*u=F!989*3mu8pEJZd6t嶑ź o`p.$]y
-}n] ϣZW2ì^#Ў~U9<hF"9j#6_zdp	vR\yMw 2q\w0
@a's.^U,\jp
j?j]]Bܭ6ý}*-x@݉#xXG[xT{xBO)!V3#<\>wWF]uxŵ\+1jø\}xՏ]	ڍnƛkv=Ǐ%ENi	o {p'?kpaTlGrdl#;ӝ(5M'~"m%GqD3+	8㇊ՍRN>U溉ʪ)w"%$=K2o^¨OEr%E"*όڰىA
Y]c:AmH0&q|"頨c[fHZ~!qn:^PF"KYJ+_[fQ~ϼ'f0+{7܀3g_v^P ujD}X/̇"-?"G U(ڮZԢ|nrvwycW>D<}R*EpΊ\i,Am
RBACLEcb;7\
:/a)EbHrqnmMitZKi]r\:yoB
 .ʍ"EDQxS!,PU%Xʄަ"Vآ4U53l&Sp=mj.<&S񢚏CjTѻ	?Ug}VKZ|jfQm@J}aJYrQ(nxʹQk]<m7ڛ\ڜYn3y'vM;ggZIZQvT8pKiRzn/'PKo
χ
  U  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283R1Curve.classW[WWLbjjB!NBR 5mf^mھjjյԗ}&#(\Ϝ3}9~@/0\&ю^
|DAz;ŧc^tE_ .GOP؂IX
b
4	B+|zI@)Wļf$[j1l-d3ddlN:54z!32rr2nٲnɥ! ~Md\.?pC90ʺȖ]R#=QH6dΪ)MŔe^R1y
\Os1&U
Cg'TsT(JP))4upVyn0m+c椦˶ZXlug/[V.\+j;[,hWU9oi̦nӪ ^kzT	I	ЪWX|>V_δ'DPf3&J}	$EKj655ݘuc edeF-Sa\*ϓPV 5q>_% (+jYhaosMxP),eSQsǺi机SaGD"[{isyat+" 
F㊇h4֗N$R&NR#RwJƣ\FJ=h*'ŤdwOW%bx6OXWk"^"6l.RD4IœR*ڝMG{bR_Ձt<'m\-W>5?k.~/|(#>	>>x:2|!KOJi²MYs1:~3{nP7> NqUiOD%<o#S-ǷjTdki폰mQu:iEW?M|ZMMbۈJ>txj(?Xhxm^	j@1(*Vhqkh)c7^Ot]*Zʊ6LrdX1:1fӏcs
]jsR'e\WGHw>zFEvyЊ<F=4޽q#}#~}?ٶ@(.o1|;~F`a,zib\,w6TnFYĦp7 Ch;DB$XN O!<1Y"nN6{7.w:΅&

%\z==^㠺&
>/H9^͍*˜ڞ˹qwص@I}
\s 48K8Qt-Z"K m.v_6լD_aeTorUc
Ee|jD3|\>OPͨxX8C4Eo׆>OIB۷8ԵY;h	?6yZ|;~m^wp[o	m7૔&M)S#O\u2uM^dԍp( q>xo:$c}oY켅]PwJ;>NZp۶PK5T  ;  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R1Point.classW}p\Uc<,it7l`4Bm(M[%ݲm,R) 2t8q~~:8~{/	`81=gp/x?
"v!>tz!]B$BnA,!	]^ȨWH,(_X#.l_"!B[)mBEv,!dL?][i҇!IJȰHnwLFktf=hPMH%Ō2,j1S-]>s|+ff+c/lڪ
=W2ɡ9/.XaLRhhlO?B`,vra"sl)o{z{PSgnlO,ҹ@:#at56m'M@]}H[SܟNDzgJ?k&dJٝ"[@
[-
NKjHY
mfT(Z
աܨ!#dY
9!{Z^!@^CAH%
_!Qpm"A
~
keɺ򠐏y7pT'cxDãxLaeO)
OIĥ>T(擩bwۘBhLې͚LP0y/U%/̱O##,mN~r3VݫU술'ta)̛slcL1'CSe_tac֔NKK-ix8`fؑ.K9EyJFFa9Ѹa!dsd&}дL--%d Gyw|.沅b2[d]b=Rl5f9
t!K){djeGd:pÓtɥSײMCpG
p'A}c HCؒޑX^$t9],SMjmE#D	gՋp
p9ZPKJv:1uʳ{)8`|$fu\,f1QfX?"zY:,U}
lb7`kDBQSXlUXx6D.	qq=YUobT}n3ĬݴA0EJ&IDHqZW3:C쟦`895>r&&Oobq. 'N^3|qtï{Umu2Q=(\=~Y5G5YT.L=s|A^i+lU_yQL`QЫ(݈Q=F
QQN^CFWUrɬ^E	\+6K:YO=*uz*,Q8%XjDNYOw줆zji͈IT4=fCvP)cGbH_j=fD$qlХG} |<dtnet`t'l#;0lb;u7!A)<l_FpxE8v^a}	;fC0~GvWUTSxD
QPF%|Z݇Q|F=N9NWpJgՏy 56<?>vy.`4\>ay48),vݥEl] U-PHA3n?'E|SL+!|Fa>
v@Uf\Rpb.D=k>_'QO$aE~?}2,u+ɯRTEg((B:4|rQ`氭12fԐ~~8C=K
HXo|md.{x$~HΏ@wv
Q|cs$]H[iYeIܞLaM"H*2<L?ʳ"AtmԷ_ac	c݉gs>*9	jaŝG{-(
ۂFzr= F^n-׀jH @+[1b%,-l{&u"bVP׼7a 3_2Я3~d5
4<m!pm韉+>k;L7MMS
ۚ7(*S~VHUҬ
 4j;{Z)y>t3!mQ3/
ӶX3}6cH5
]=^ >A@V2UWc@Y`Mo.]ǸI؈;PKQQ     PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233R1Curve.classW[WWL
D

VIHjF:ثm/}kU]]o'	}g2YY9/ٗO *QA?qRk~1W~1짷S|:"uNe/
>Ty(q11+~L`S~ȧ؎iZ%t f4M1y4aK6bCtϩ,0IiI5"x6>I3g=8گ1sdZy%4-YS!EiUɏʴY]>UP5՚ch[^L.>25E'u0#>0W5e0=XVr^הdISHto133aI]7UMi)d'i>C~Z|4X'bVؘyk'}:Nf4KT@EiV*Z|,ϭ
IWlO0V,bƲ#K0Z*
Kf)^EJ<UHԜ m9l>Jy-8cc %%yJJJ_*,`28R%@IdY1ͦp8h^U-vyY`JZX7.՜]x2|QYD+
՗6D+*"@y^0tx=՛'ch=ݑwFch$bh8ՙLE;"T$r0ۑ
xS[x}GĻNw8.DbT{4FñHo4%өpop]; {8:\'
HǸ)X>>nҹzpMK}+._]i3-Ct٪vh*F@=GK89ɲ0˛C]G>W*ϰ,5R4:a)W+|Ucap6dWhg 3X\x!mZO'(:xdΖieh#1Nmtݣ$Z6Jh@YQ	eǱ9sCeܹlv2\$]])[e#]\Ga/ybLw7?i\O"zf7lp=s
>;dlyxACGe>s
U!.`Y[W\GuIdy%!݂*BUm{;p0JnqptG-`ӝ%ME{Fs4Vp[ݵ676onk-DlTPwm%9u7s+ase[JvNj}7<6*-R@#DnEG`J%RDqؑhp{-e#
8ktDD{.M,iJM.1.Q&ڻ))) 46S_y\q+.

p˶ZB c}luyjWY!s:vYJbd2D@i;qNzT<:xQ/1G}T㾇Ȓ8bqS
+v\<9ag'T-@pm'(A?F0ܕPKE  !  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571R1Point.classW{pT}dl6MD͓A$<.nx)ZTjQJ}T($>vGGg:u:jK@zw&@Fg
s|;w}GL/<-BiX
Y!ͤUHLWzP\/yJFd!a{(vD4	xtQޮv31!q!퍢(!$))!]f![؊mz7&f![dthnr;4)*doބ.|Gxw1sv4M!l)k'լw¡d#RJkw%6Gfb~4>#ar>!HSWH%9O_LZ9*T(0|$(K"x<NYd^fhcch<Tܔ$x%!n1
GtiyX>
5OHmyz.Jbu3=D82?*#i3&/L1Krm]T&:t<:/A<a!`Y=:
!>'$"߄qu
:~gŢ5<دy kD䀐b<!?r5ы>
:^:^xꨜռ&[.7d&.>s9&dxGvg}=Bչ`bݚd*
O$xX$QJ&#Jڑ8֮e`Xa'E0<mZA>8ɶH"Nh1](6tuvu:x+vO#'\4(nJ~쀥-iXӴ3H25720=~x2Yb3Vm檲9Yn8RJM1'"ku_2ڜda3
6>C1:V.T}i/6v7/d;Ot:#~v&o
%"YՍkdy̳{ud$b/OJd*Kq5#7+F-""	֒6ʾzh@+K{Y^mMóLֵęŮI_˙wrNOo.8Jsmƌytuβar&;C0; +x4**@x̎dꁍ\K"d~/3e Ғ)g	g+RE/gϠS-0raue50q5{/<AFUO7Lp"TT-[b:,E!ϊ,Q*IW`?B
(5G|l
؞~4V"994 _f*Z蘎,̄զٰ@s~W0K6s1昜<aN^8uϠ{/>োm*FQdŊdU{Q,#W?Jn!!^!Ř=Ш^yc1.idGi0x02
Ok0O֠O4,MFqEC!n6ܭ0`LAk?o#ȓ		{7t/Qn|r/s&^\(EAЂEaqX}be➀PJT@W(h6k5&Df>`Wɸybm:-r"(49dx
x6(|-jWB@-.5F-^?.s2](driWSj]TFR2TVlYd;n4a`BRG8x1T99rW,4s,gjeچ(C#ksv uk,`c#71|M3W[d77S	nRJ帍&40}?X;E %0#{q<J}I OGx>F7
xcͅmyxV
Ma[lm^-lm޴1neۋ}x~)asvB
e0Vfjkhd5
@ӓc2&/_JLIL2vvy?/ (b/5Պ3ƝyRѺBjT\.E9\iU̂`)F|7
C`=CSPq"kFdnUR%JMwJVCa.<TaJkxx7--:teHWM`&Sp  [Wԍ*<UxDdIYv)NS1,U.`>_.!w4 >/X9o>jQNx_K	Sy cCnʢʡKj).|2V bጸJ罙E&2=<!Ha8vƝvtXa6
%2Tq1HWދ8BRK"_݁*2%<p%3ogv>Nw-Qm!G"'?Ky<ˑ<+ZfpK;LyxqT|yT9s]j5 lR!a&mUE͢5C]@!7
$(4)LtjӚTgCMuRUgq.(gL5+zaXiR8<M*f7C6G&.\+sh\KSjF3_.5x6z.ST5u.Е8Lp;t5~E{ji'Ԅb|u{r5q,q.V6J,i5]Majj=mAtDOэtG(ERЇ>mm*#p'%$ObWKjD3%KntA/%{D\fn5p6qj^_oNNF1}n
)jYhmfto?oĽ PKs    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R2Point.classW}p\Uc<,it7l`4Bm(M[%ݲmQVg:e8NMUp?qDatGGDFMZ罷	`81=gp/x/>DB:}

BtHz"[XBnrQ~YIȀL7V$\"#0UFB!o	SۅYS.~0pL?$Ӥ")&>*xץ
{s\):Jm<YfںJVHw7_زMݕ1zY4>lrN_\ڹ #f1ڭ2@.M	Y#
ERJC%:ѩ޼Y(s١tFjnAyht^ax Ȕ
Kn͕)'-EUnninOrRCBWh6SB17Vp
F
!j	ً5	y
B(i/2W$
9$>
.p?аN
A!	qG5|h8G5<V\ihy$>Tԛ:|2UiW͙iY3ߕI
&`d%9ctEYN9cս
Yu.l̎
pMv༩9`?^{34UqYyN6eMԒ lI(Ù*bgho/hP`)1Dƅl:Ǔ!VS[WJtAڏN>
<\ed6w+z鱍٢9fi;<ύr:}B6Tc;.3ύRt',/ʎH9pÓtɥSײMCpGMp'ZA}c6 *H+CؒޑX^$t9T\,SKj]vGϚR+'sމQ=Nubꦕg%Q.p$IL$8
upIUUb2~E
X&'4n*5񣦱qCl*]>Sxz$jɩ=	4ܮfYYE&a'FBv!]OĕkͶ^Ð՛OBIɊV˙O?MĹ~Bhx8y]
eVt}F(Gp5rB ejT#dQ05r AgbTUPzJT]3WMX~9N#=F^7EB6t#G5pGUF^?F!2QQ^%z
'q^*/f=4
2XFmLb9g#ݥ粓:2u"kJ5#&QA!}i2jkzlѧ׺_Ĳ!zgufb󠋹"rv&vw3k3stMН|tC(v庋없}q,۱o{}'^e{<?<t<xDuj]xBʰ5*~<3iWpB=ϩqRS<~ϫWy,ksa&ΣOc=p_.-.bfjDj-bq9%.𱮌} U倈>-)͸T\8]zzV5+NH46AݯdeUV_HEg((B:4|JQd氭12ԑ~~8C=K
@K؀o|md.{x$~HΏ@w?vQ|cs$H7XiYc{IܞLaM!H*2<_!r :6ۯy	ذDM3W9cu圌ѰΣнgmA
#l{vAY3Ŗk@p5$zg|%ЃJz'V́XI$eku5[sĞf]حuG  ?e2!91kL_1~Ͳ{-wD7x I|'eg"_otS4~ö
ʣ*_U@-RAJiVl?F=_y
sLuwi[N~	1vZ熮A/  bzDyԫT5Z
"0J7gܤETlDbPKD    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1FieldElement.classW}pTWݼ(JKM[@Hd!dS*e<
oTVgk~ԯ+bQh֏tqgGqX0f4d=sϽ|@;@K0Dn
;vc|3`}"a
 -^,uF"1*"'y!PP
a<Ysg5_k<y'<'ngpM9nH&;9V*Swtw%O\P'A
vv6(Mӻ6ߡ[
{W
PHx1wo7*sO$dV!»	dFUt6N/GSX\u	鱭p9J,f.6\JrF\Vl2mCR.}$mUcۺ\5ju32I.,NҐS0RֱǲGH6lRlʘ(Ń% 
4
+	Y-*kɡVk`#fq{leCR!mزg
V2B:hqWXv9R"eٍLI17ْȤͬ=ܸ?_h6y@Ã::ڰRC:>X+CxD:<0Yt<NU.h[jaI&]nx\[D$D|q|BG+VHS'eOtVᖞw6kxBǓ$c
gxo*g;}DOrV+kVQɕF`*m 1U.U=q!?zeEV8}yt{aMۅxl6T$d
Z	N8#i(dZ%#yZb	oSupҒ_%ζm,#Ųa9eZ4nضbև-JiO{6:{6I6+fxbPOsj
r9z>rŃr5ghYñ%v*:Ϣi9/s.z"x"F7mB54}q+q[Ƞ876PWHޥ2=%:_x+ތ[*~%b "=9w8jT(;&+ga3м99Y_[j"`Op֩);(߅
kOtT[)oEgpIPs32u)7bSx='\.y_A	Dϣ.rs.+;bol#R>V2M`Pħ'mбhLW-ddRD{fT_i/.d0-,[bU$Sf0#X _\RU*G<+5F4qU
E8DtU)W~.QLl>$=|SnX!Ed}K_K+'qz~^7.f&`PEoXo;4	uьv@d4H`5d#1#$0UQ`G7j%Iݨ:uA5I4 7eU歕EuոȅǤ	ץ>E̫بS]8O4?4gr|}|=;yW2OWx'l=8U}8ɿ龁G<&^ijg^,9	2E+*UKj*|_?T#
oADśj?WyRƯQJ7 [W`|rvn
Ǟ{2*9)m-n^x7`
%3s
>9ٔcm׸Fvѩ=^z4t{	y,IyXz΀<kD'Suɔ?z}2EW$ShS2Gghc30s
5yUG^oPKōb  ^  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R2Point.classWl[gqqܮ]il/4]i%#-szsvbݠ[1!M&a*)06@L	BLMwN
RE?9=~_	
ktjX]B	Y$#w	Y/d,-^!}_Fn
	6ˈal2([#{lBvN
-=2udH'
||¡Bq}0ɤK>.k2]]cŃ֪vdpw߸oWaR!8ʑťr?lә}
-KgTRB!8bw
E>14[
4t_zj*/ZR>I=Kwig :.]F4l&sSn筑t@az[t.[|K:H
iWxOR0^pY,q1*$:
B>:),1CB(u<c:VA!ɾ!q!ǅ<q8>:OxRǧi9T*әrOǨBxL_[Ů\T*XzLν{YԼ̩$:0tUG^NXP1+W,FrMUehڮƼ%=2-CxJ0eT^-;
H%:
8EyJ\`Wsul\娩/K@d^toBTNˌgcBWٱ6;>_F"G9
}lT.Xcן27$ܚ՗nW7}_M֠
䗐
G-9spiU%]u0PuL=mDX,%x	x|Jooh$%NbOR,^@傧JL tx0z?=N -)Dmbse30sx'%>V3&
&1@+l*=>SzyɩۧYF"|YEٸZx. B;%]CWcϻ!5i*1NQi 3)ۙ 'q\h8	f3h+11#$\3٥jgFblNND8N.dPkڮČ%:3gu97
F}q#fĩ'1	49-3:GdUҨYhL"ӈ'MFjlY|&Ќ1񱙮k9E!Čg4V#ҺF	x_+OG_Zz#nF%uuޗhǈI6s ebtbl`*ͤcndVmfvb56؍؋]lvsڃcGa2r#8y8;^cu̾gb/6%&O⸪*j	Swq˞i+PSj>s(Vy4N/:/zϪpZsڌ`"jͩ7%b^ܺEI,vKAӵUl]"RHB3</KĦ٫(!t :&M@L,Rӡt/;	-uARu/ApRR&
JS!p!# 2DJV0aƥ#(m,ACw%4Z662__$%~PMKvy]lū=?!+<׹#;N""q:LκÿZ{"m
W5өƊ`܁H`LHw@g)gtJL߽5@ʎįY0]q'ֺ%DpJUr@r@V<24.GȕqP4bcޙf=2ϨSuo~-?Ȼ~[~}s[~+b
׿%ZD]#OG+_oxg?bKlI~ʯ4~橠ÓwRcK:b?_k7?S+]kس@s/#c8Ǭт@S("1G&LAT/Z|MH_^lT,o?PKG=  2  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R1Curve.classW[WW&I¨(7
AI"XHa0	ڛ/}l҇VՊJյԗ}&#jfٗ/ P 58D^1q ^ xd<~5[ǽ(~\L,c<&ت0Ijub #Ƕ< v1<yuIڇcRȸ844ܟ9l
=oɺ5*
8T=M҃)
td(ʂ"筜D$1I)ΪSY:VWS
y˘kFU.mwjIæMW9"OTrs6͡r m)]/
ÜtR3yK%?t)Kƒ9ǋ0Z3eD8e}tZi8'E~)$rS%<E;Ck^`Y@ogx9&t-L{W
hDN.I!3Ț15ݘ/1Ɯ5$ʌ8_'C',BH|`yrYQ|9rh(9`*jJcXVjή},u9|ZhAX^\_i3KZơIa{4M&Q7!u]))-Jd< 2^gD7'%$]ѮXQ[슷x(>EILwKwpExOU\Y=>]P|#㚀O0Ss_5k1_rxa)+_P=-7{')+V*N]*k>kb?<~L`i+4|z¤ʶjյNt1鞖>fXQgpxhF}ppͳ=4š>te5)bL]dɫWW%{3=YzR,(U}ȠlI]Ř[Htd	I8:	窥CƘr7<Msc!S|iLQ"ݷ7`2\y2v/^'%xӖz"T,BsT-2\wQpo7(CaiD#Ct$<!I'a(˨.+yHbdkli&Tyۑa޾xӎr 	t9ݕ8NI"sq`u%ԗ!śWom*d+pUp.TC"z/:to6|G"EG.=޵Dch=rYJ_\BTZ^v~hkxg~u'|_7jzlu]EUq?ƽs?k;zvXIb`	0))-<ҴM
uQ0Gmi*teGQނbI+%N|*ؕuܼݔ_YAR;XHPK-    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Field.classWil\W̛KbxΌk'i7R8v'nb}yqϤd钶!-А.@6e,I@R@BQT@B@$5y͌.a{ιY j<BN
`4/>$I}$[pLƄJa(˰G)nc/!#PY	uP0(Q~Yq@}tSCºCwpwp8{ nT>La.Z
)xF

g;t5^1ҥ$V2Zo\v}6Iͩ81fͱ49^3Tu˯Vo+>WO
ۦr%ݚݹD_j?SƭBSfY]Z<@~1ӻi5%S]V.#b(}C
FM&5nģIf']ky+Q̥
	amū U;DV J!ZF^?{Ij͕űBLDڞ
Rb+åv8ۘiwc۲\ژ$ϡCKW.ۺtcJ'$,K,texXIJBrl%|!;!Y	c1b:>:b[ :c:::PZǃ8S8) 0VxPVgpD:,S8:>'t<)pQf6Q|@)xJ,Ii33=8v%)D9y{Y`J/TsB{.tWRtT&+OX1rPcֺf){R2}xP{z4AK{$'$奰9oֱX91^z0`P'6T{=@aV:U kC&23YfIh13LZvv1v-d	p:8Ro]enΗ̘7x9*~}ΓPXnfBVwN³4:]3y$|޶$0M-Ez	s-Kk,ݶ
F0t	N"t
-~ԩ:[~aHrri̧"݁kvHJ2y?DwËCx2ŭLi;evxyDc חHv$~2kJƳ
sƆB] g!-p3%E1ov4jYxoĬeQH?+%
:V+[YHEٕ	ۂA
q	[t3лڻͱ{WS5kw5k]ݬ%;VE6<zs.ASM̢r-wԘĜ-R_q-o%Z2BEXia/ݬq~Gs/74S6חo2ix
ggƑˋ0Ǵh QڻHؼ<\:#n4>u>tz^?&N-6?5xSuspJD#7e^#~H6zXcp'l$t܇'ýov=3]סޘp-f]3B.aǸYG#a&Et̎eӔuFN[2Cdq&$#$U}3als$$ei
Lל΀	NҘ)l{g,=z
*+89nrq,߻ߗyo(4|l[fM|8ͪ|܍'Rzϣ3xOS
s#ʋ85|oxT
Ϋ:\PgUS1V;Sx^m-CƏ1XaĮVhSTf?xtZ
79W֞t{BM-hT7iƽcQ7*Ikʢoߌ%?ys:_2}ͯxooyѼ};6V'?';]BZ;s
ѬedsD[g8A?^w{ @4ۍ}GT0:ˌSV6_'ovC(kosHRtV5**`s5Ǜ6>p_7ϛ_JJG5YXT-C7<y~ii\Մyrexak;J.lyێ
ֵVjuieQM}3VT]m	*ԶѬWBquXbSqlRݮT_-:nr:~5_A{J:'"utx+]:I|x3SxkpDA෠5ʽ(7y_/6%!!2TɅeAk^>+׹v
6Y|!w PKȣ	    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Point.classV{pTWݻ7n
i
DĲ
$K6fs!K,wk؇O#FCl֩u8t86w.$8}|^wy`9NXv!VbN!B֚X!ċۅtIgiX"nn;qz$LlBѭ&b"~@60=(=)dHĤ21_FWdX
h2Ja_Tzg@*78gvH<;l'tt{[gLÃk{4{
|A[t]r^ӽa]l<1a&Í$-Ag^F;Y2{
d	ai7gfҶݛ)G,5̞T.;=vb-w-q",ЌwY9%rlj9CvY,-b8h+.S7½8l>!!![xZ8"28$>bp1ދ񌅏Y',8p5Ve<a>OL1VIg9S^m
dx"۹[6UFGtp<}{5O38Rw;lێ喎T*ͺ\1վ/oo&3];9@(7lUP)*r+\OR<dyzk޺zºǳ,ozOmr~nAvv̆Qz1@/=xZ.
g@|w~ p
V;bxjȆ 6Ѩ/xyC)8@%eK>oxd.68؛rwf\3fJnݞr'	h(V\%/{M&ΐf@c,oEr\,omD9̧k@6"}q>&hwIyf%x6S8Xt2c/2qHƳm1ۘ%)ϡwF;ps(BBP)8*ZJ+KOBEe,DNM"ڠ#UhQaSEO⺬r퓦4n%

s]".Iu90*Dt'Y5cR+uN<hk\1M\kW50^k4Vˇ=u-ʠ0s^էK&pClҳ$7gW4ѪtvG>WJѯ,=<jEY|ʲi0ϫk{buR}Mz&pԞGjOa5Z\,#4Y,yRZP裴HćX#4nKz%6޻
WX3Xvw5t
z=6Mo؄nLb2Uՠ_-6vu36ت;՝إ6ۏ=j;jY5v?د:CYܫ}˸_<Ta<ģ8.1=xs#zqӊ<kg
8b~\[It1[M&2xu3TϯjxpNe/叏FX?#Y`?$|r*`UPP1ɛ}d2t:\tZ"5]XWUTY$atKp@yaRB~x3
@42X*N<ܦwp^QZ:
UQw,2Q鮗vw%"sAbTp:5B%8*<:|<
U2Fx}]at|8$Ʊ[K8F==Zm=?"(_1
-*zB-/U;^S=	oqL
$jܚT"]+4 B_Y-˶p76]vo/Lֿ3"]^ZF^yeܟU`ϩwy_ΤC2Le[R4NXa$-qM\)ǵCaELK)s@؍HP<CT!Ƿ*6<_OHPK]  ,  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R1Curve$1.classUoTnbǮm]@%iZgKQ'jLP'Q׽4a=N'+!@ /{HH?e|vED={so+1؁Npʀ_4h7,0aX@[^Wz,+ZzFg7<MBWZvXc9 WjE:N\*5kr'k^-|AL8(/LLDfjk.&FmE5jlS_n\8-ptޯy!sy־;Ԑf>@Sv(cklvavר#"]x^fs\?y+2FLb~<ab؇.5xMq]lMS\^:cb&2	eϓk N8U*
i֢d;UY_x<]ﲔN
w}՚ᱢUefsѡQͶ5lǑ PkEN}|lsvpvMc6JQlXdBy ߷?D&8/pcx!n|2U?"qmOHtoC3,*ɢ+]e9}{dQ
2%ɌwgN[|0~_Wu|[
0%ubX>)|CR/cSO$>C7{l1{)
BQiC%>eRSZmq$SjD]B}!zai}
sy
'5'm0[,j{$Ko݌*~j&H(o'7P3
3֋!jף|7PK2Т    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409R1Curve.classW[wuY'e@far4p2	332^4Mcڼ<4YZ}?K}FXYϜ3}9_;3l,qqc.NoW1G7yF>)->j\xA,rFKXJ&[q 6 ,p溆p^UrҕJUNTfgTưO-,l!e8ĞԂݲ
]sZռjjX5,o!fZKez٫)^6y6}
\ePbCX
Ӧe̴VgN[hJ\oږu%ƻHQf;ضhZg7\X%;
K[lx]DۿثesfyƲ0ȉ鷵umS]Auxnvzbһf
q-}
biOc^ӽh/4MHv\"m;瘖jjM-^YvM_1ڒ1m۷Zd6umZW_S8%@Itpݱt:p:1Z<7Z햣ɱڮ9.e8h1H{/m.."	qGD"6@aXIW$eZ-r^ɕKr1-˹b\T+$UՌT
EZ˨rT)ȊTT&咜)RQ$TE9圚OlXd*"~r?.ǴΤd,BFRlXU9WTJKdv2S)lRLc''xon
>0 \8@OE9<KJį!{7Z.VoE|]qi8&/*?vQ=Dinw=-[8ɲΛP7jT{i(O<2,:^3P[49N᠑55k92uDm̱:y=Ԙn/Q,l"I/CKx6+P~]ix{W
GѼ\nk58p#0|;w,)RuuDpgehvSt[c`xh"ͩW{4otD=K7ABG7m!h26ћOF_hm?9$C&?%)=>B5s|*a8H#;I;b0ۚڨ_ *!piɿܜ8{KfO0ߊB8/&ykHG[8	tԗhm8Mx
h5LPDyH#d@e=M}uW#*?1 Zx,_d|͸3Dhe|+DP^#Jd}"B4TA-\l(#Xh(2}_yb>plzw}p(<e:e3p=_1è57^鏡q ==@.nW?Fgg8EY3z>}N/Q'ƣ{PK  z  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R1Curve.classWWW
Y&QQԆhmDVFL@jk7o}ЇzNՊxJs/ߝH#DxtNw~m[ot+C7a7H3."ι#&ye̅:@)ctJ1V1Mݨ=r^r2l;Cuc?4sx:!ˊLۺt"6udxlhh88ijUcTeYP'L;6Ӿ	-J3oV4f|KĒLdYY58uJQcCps6)3Y_^ӲTPyFSL	cY6O({L9PTy0?;!#D0n)r,ӦZHdssnbO*hŜ!ϒO<%m✥E
ilD9kQe:sx.bA}%*NIɞaqyϖLXҠ|o=db%i*S;MdHĜ&iJnDWTmV<րvrh((&J3rZ4r~5O<%OX0!*i:}<<)EIsm1)kՒ;uIN*֪3(K]W?Zp/myE@9ToT-i:p8Deɞ`2x8C@w8Ix,
W#uawx,EH'#Xǟp$'7
`XCcw{5oqm~.3r2x>
a>>
j7Ϥ~-/|\iL]dmv[ecxO6JB-4z8o(YJ4|FǤ̶iCW$j֌Ȋ괏!ֱ(
<Oj,ʤrTۙ5'ctj7@y68{[7rIB#IFFL#K_<2ZY
wb#޿]\
SCA>m⌥;7->duɣmh0tl

xAuО;Yu7}EG7`ʻ;+2l3^[c	N/m}>ʗᾇ%;-ܮn	j쾏%T{+KM8t<:d_ɖ&ıg;N?,N
j2x֚ĝZQZ˘?UoNr#2=UVMY-yL~;9fARA4.ӶbCH|/y3ϙ,i,#h(H<g-&v.ŤOiEZf+>Ȗ1B05ktbkt{-:[#|1$:qZ밅_7}m5@u{@]45h1Gy`TXƁ[kVz
쿝 Ҡ)s瑢]|Lw=.x8QG ƉJԺ@~eš%v3`ƲQ~F"=diAJ~׶({PKH  8  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R1Curve.classW[WW\&QP7
AMIDk'CR 5Ҫ0h	ڛO}k҇VՊJծvɈ6JWXw_|cM8D^q</r3D #AAy2Kl}9l=CS2c*Sь	f{2)赴=yv6<fj
,EB04K.(ŢF\Z3tb`<4t?ǁrX#FV{D)4sp_Gd3H<<:`Z1dsRZdZ"I]+ڴf}1=!Z*tH_sZvyLYPlktC,Miְ2V NP-&Yڴ:tvs43cZvQ6Mk\7[mm(.9[QUf\/¤f;G4oeNɬakA

Sf?UU'fC+^`U@2pZ:JKv{Jz9VKN")^2saK7i])p]aS9ANi9eB0{u2z2l*(*WTU+ۣ(ݡU~R0g,U놥sb/+]?:8tE͡QBVQ1IdҩL$=bo2-L<Et4䄔L<y	W$:ple3X2IR"d_⒘I,rW?-≄fYS.'2X$ɮh:%[,m#
.6>nx.vP0L=FqUGOp.Ճk9</Y(v?ڥm){?tP>ld\zgZ·K^hJC*Fiikl-]k~;;
1aLcc4E0M1uj&	7F7R=(\lMph	XN*,T632~D~e=N^6i'>^*qYr!2]=]՜T
:λU	粭GƘjpN
m`.P)BK{M:(}
?}:P,^7Ӗ{vۨpZW_ͣ!܈uwa<6 GDw"@u[N+dl0=OaI].t3d1W:Ek
H3Y`܉FB8=NjЋko8GK1Vṗ(,Wrckќ\@K%>2hY
>@JB;q
lH=g]V/|JD&WSy!Ҋ1L4Eo\dq+i<MIpy*
䦈f+#%V~7K>psKk_%pG-lwzeܭqw\Ķ|ŷח\&|,*KSECqE=<xG( y`MTf1{ҧFy+ΛI	57*TܣA~oIPK6f^  N  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409FieldElement.classVsguYI^;㤑D(M^41v7j4IZrvW(iK)hRJCff^xaa)/ֲ{F3;;ŝBgT|>/c1E=1`($/d2SŔ`.ň \Q.Ö#čYl焻*5!_e!
*c_
1xI2iftO('Y==Sf>Spa8 W
c4=aEIݘg/
3^7r"p[Mg`x4f:
5w[\6`GcuWiXa}Z^ȧ\,WkeR=S0,DT^ke3F6귌i0Qg*c4z%;]\sƺʨ!PrFb$;wLT[VΙTQ`uWrI4{}fh,;uOQ_V3ٌn]]3^mRw!¬aLй,K#Ic6]X_
'z*:h9
%V4ĔeMO96V,YcF1fdǻ=냢AC
Bz3ūz|IsYc恹Y*mI\Ţݶ	W4|j84|=ᆐL
Z3ْU-!
lk8)>RqKH~*~a'Cq
?xSàpȍ&+ci&jB,qG[5<w٨	Ǜ({vͫ
UiC3_(;YU?`y~hiWP.N4زK#QlJzXwf
gmnC;zwG҈~"D$X5Z+1iX}xNmpxl
qy,P˂aE2*aa%*YƾJi{m[ꔁLGzO#NIwSkg.ќZ@mq	4*Fk
Edj/ytnGtu7 &܏mԺ]6?֨WɄg7&vzOo=тZre/'<)ǼU&~Q d'#_ |TؓwY][>H]A?H"*@:v=z+*<%'Ɠb(ϮjQ{äyTЭ>:TW
|>0۬)G<Iv6ĉoPϥs[>@λhXUNcqlTh_TۨiӴFQZE0U@FOWr8Jlɍ8u-/tJ{D ȟAkv'H*)uTl}=N	wPm=x0nqcqO4Gq^DHI+"_"?SDdmH+FMwt`lY>3>1GYTfv^"TWR^Ky
Kjϥ*]ʥJ._f뽂*+5w@?Bu
"O	߉a]JT\,]+j(Ez*?jЌ7n@Qup݄^+0ww)ztUceO5}ґuk[˱:v-R:T*>(lJljoGfH*ʸl8[
'Mq&p!=>,s!w
Χ~7
KU{De%wf|L?O|S#TTřSߴ{zڱQ9y^NT`PKyH    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Field.classUsTW~Mr|dw
[J&|B%Y] ԂjA
VJ[SGgtgq??8-yM	v̾y??	`=~F10c"9CqRE"Ï8denJD.myюvLBEXap\v0-	>%┈E&x _P)
(8i)0;١\J|h9k-,nZQhH@-~frk{?AӦݙ9X7x3N+u
ȿԑ=QO;"Q9lSeN]ǍaMƫ0I#{^3?S<h
|fRN+Ծtz8ϙ%\:?`hJ5'^,!𬂰cLRD	:Jb|c% ): ,ƭ"J͜jGNdlT-{x_TH;3RŌkhuݙ1	Z}X
ଂuD|<_ʥSFʚN	T<U*Z)1a
݈h"5|	W5D5DxA9ѶS"^E
F
/aFEvcଆmخe
.r W4W5&pa@}
?U


Is^~(<Z̲Fn"?lJ9=c
:^q">hX{OIuªr񠂶NK7˞#5P:3u)2Teo&! 8#L),P'3%Qy(ىI3uL#NBiRܷ{Be8-2v̓VeV7/de!^
S;r錑γhcYX4rN(D'nvv^>/uu[E^2WI$Ҧ]]GX+OM	Ԛs5聂8u>w|J9Q苼:lw2Ymkzx9Dcex]Dc,㹂eAoheu۟-݃ ci*cgV%D/+^X7' ~qԥkt,#4653W7y^
tJd
Vs}^lq2G>.tD˨$N'[=I`5K]qf'Ku<;"evTk~$z
fPG{ &~_%4VE碑g:*!h8-?ZFÂzu yUe{ӨKJ,Bj-'l/(-]-[ߕjUHk3?[OxOmOUks\,y`w(F>z#5e4!_Tu(cDy1&&q1ɶ=ÜdM+tۡ&.uvή稹UoZ@c,{N-
=` VMDbo㞘Uu͔[.<R=x8S/@pugpٕU#.H<!y+Bv=yǯ.Mp>zO9ڝwI8ƚgPOf]
Ђ˼^틵uqF=(#SR΍o0793.8Ģ:aS2r	z2qu Y\7^'
lwxm6$ܬJgt;cM[+tt/	+/Y}q^'ƽy9>`CߒIXC*q4\Av/ƕ_-NHym\GՆoHzQ'9/_Г1&VѠ<-Pi_?^C@{FAb@7E4ϋ`tUn9X#v#PKlN    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163FieldElement.classVsg-i%yĎFNDI:iǵ[%I.ʱmJH{!P(0037 Zˊ*e͜|Gܾsη?؉a܉'|Qŗr>|%!!F)!Y!A*fs&LLNp
l-!vJǜl	7/܂|Uׄ<-Eǅf4i7U<@Wt!`:D3t⨙M#kX{S*fF͂*'
kBQ:3cW樜GOsW>^0\)3SUTst;)T)["3bLJSk22q2jԸTvTdLDGV61Y,ivrFٌNsF(8{Wd`TX.M:vK9ǜ-0ev,V1Sĕջ%
UȘsTQ`duGlIt}Zh/;uC!OV</\д]3^mZG~aь>+K;c2lX_v{oK
6F䌑f MO9<^,YicĔF4n'v[AC/^oc@\W%ϧٲ\fHztO:&D*^a*^*5
!o{LZq>]b>ak /fp/.#"Q
oe{	U8'.0*\
	\XeY>'R-Y(PNm>T'𱂽78irîD4MΨQ:5MUw5
ڦb`WgF,\";aӖnB=OGG̈iA`=/!)?	V.s-e(X<3"Lep>vWyP˂z||Y1|P1sA20M;B\z"Fn.%;tZ4h*_	?!	}OFA;nC'nD?
T*BȵQU%<^7tqez'c<)ݓ:S{s\b03Z9pQҽ-~һ+(
nNχ|G5_$|p?ڏ}<[עv졛;ZkH} I{MƘ85ڸ-aݧh;wWlS=<H8iFju5-]Tdz*61VbGmY9~VO');/֮N:TA_0הyV}u	_	DTH0Z­h$t;$boeٵ&xs5gE"YHriZ-uy-63y泔>ݐʼ.bsHpP	|Pl[Ϊ_Miˤ*y]ΤZ'/^­xM
ek+ \Hynص̒Z]Rc-KPUЂ8w;J7MFtBXeTnW?&MUzflE_#=~SǺ9	[c乙F*~A(}s%@%}dUsG҉
2R'G ZIq&C"Ǯ
.|U->bn[y$K,1UKt5HOT{{Z;nw_j՟t׹vy,ɝ\PK/M<    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Curve$1.classUoTnǩm.cc+ۜ4M30"]$:wkiaH{h/4N )L{9wι׏!i\C?Fùh8A!E
*F5A)*TL3HW@\q@tز1y_-xm2Бu3lUA譗ui-WƮNTY۵w.AQ_HU&]^_{MjI#u<o}CQ˿8\uɳݐCZ[0oUdk/oel-`~ju[xUcs$9rvWd*&uLaZKxY!qYxS[N\8P*/i9r]ax2<.\WU^ݕ M+inaNtQ5s.Lm=p&n)пfy	]>5ѡQNjeɀgFE*1ϫf ޷1ěFmf(dKsE3Q+"6D6m$;HycӔuxwkѬR=6Wqkg3k,YLVRɊRNjfO߬5fbS?,q=KR.}2OgT[)mKC8=KĀJG2&.SOךAZ!U'd'	З '0izR$ŘiDY.C)~*/ji
5*gM8i$;o𒔃*~2,R>@O7P^g9aSӸ哿PKdx    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Field.classW{pT}Mr\01j(`H%YHa[[*jVRS;}vNN:}9*{ɹ;9>3g ,`kbX#r2^
".F!7	1	IIF`apL %v
%v#f?MUVh"do*FʩtLg9
~߆շfOߢݰd	\! ]Kҩ
*/B+S.rǬ̐96IL&_T7eĮW#@
T4%nŎx:k[u;[fv8ѳh?6cAԔ=2S
~:\BsԞ}
e@7NNVM[\&׹Ik=#VAM_Obl%s	z	9.7̌D0Tو:tn,1tYg{S?LmchlMFML4$5)Iv
ذK6.Y&%F
aq԰2cStb_NZNDg"7-),ua4܆wi
e. j85!\7pXpDA[Qtix
j\5x >C*iX#QQ4㝃c;-ɦgOe̽fV"_TE-azI{^D*X%FD%

oXR1gԎUS{}~,txjVb`0[iDƲoE4fn$̳AUqs}il߾5m__粩
<
U,Eɔbz0z&4&-;;'0#T|\V<Iݑwb8%ȳI;)iW=
u6rU@3hz s;ŞѵSANNpڶjfc)%Ax^<%=.H^W2W@:mSuPaτ l@6,$"qC?p@BAFaBVFԎ#D^fs_pr]#K'fXV0!WĹ%wdL^zy3|]VZZ`8`c੭&NOgO%iz"F:D^hO׻QFeCqu
|6z;-e)e6ίYV7k#ܫ)2PSL2W͠j hpjKur;F4$}k]aN]\YF^vCRG̔9܋
{GKj'=Ǔ7/K>Oth})޸Wf0כξ0{`n(?+	rUD)g]$(=ލrc{qwբઘ^pݾ^^㲡^벑>enlEW1]sX#bFژ^+n#WFnvJWQ34n6*5jf{~h1rfwkk4Z~{WpeZaJUy˨U*W2M(PtT&Krz!WOC0V
*yidM5}^D
FʫC5M0B65\DX,HQ͖u"\uJ"У}Xq/}g	s1|0#'$ķ>?q^§UQ2pBusy5/<L<qu_TG:Nz_R?xJ
Oa'+<W=pӃypӏ{n7<'oyg?)c'2LSUp=^x~}*2=|,}ycݪ唿h8U(+y~Kv%Gg,?cx?#S ?c<_~/_k7b{^m`Gv	T^Fge<We~0xΠ#~\݋ɷ%E͉.gܖm_޿a?q
4-Xi_lÃ;
g^X3
Fwn vs*V#K;Ou7-o~UBjwߨ@+dqΊ&MlzUU UQBKnmԅi%Hf/	@MT<ENG:s1.,P肼Hh9b"ʘ`Oʖ(lɿ*-y?9`2*m@]jtWXCR+\Q}XZaZRWcGN]_p({ooQ-#foee3F7O0$'J+tnȰ38 _eð2ubX~_}b.È2!S.32Ǻ*iTR+dC\AUӅ߀jm4g7g5%'(32[S_ӘC&{PK
    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1FieldElement.classVW~e$@B$De? BH4:;Y,hG[jI<QCzZӯ_Cq7pss?;/(~Ýa?NeG31<3B<)(Ήi#FrBBL!̋%!+
C	pcaY򈂝Ʋ.|z*d,_(h(h9f9xlh)o*6a9T5#ke7r&Ixsb.#k5R>Kr(曞?bw_Z`wz-OE)iN!=SX/5m]z(#F>`&1Qrl.Ϸͪ3
lh:P%&RG-ꕳk|ne۷[˖$1/oleӥ-^
`)JKǩ삙cL{tacӥ3-)[;}=.ӑDZ%x+8f)ct>ʢ43}(]Y6C
/=u-h𢎄#輅*M?Š>WR1q^'x 8.a!oqDȨ7ť۷txx~.{lz`x<|W
u*8fD:m|_3cy&[&)S.*h͕lϙ-FHfCwUfD?3Ȳ&\\3lj"P	&N	'7dd$nyhBf-t
<	RKEx$i"rdONb&\Э=ߊ[v`M'yz&zޔEzdFz ЄT\3S}<- B/
%H]Gӯ%"סrwͳ-LUZ$vA&rwێmСvӡ>"(\u *Vz!^aW^P3IM8h;H z=\b49Z+hZj	Hn$o#nMhMHG*آ~Mjj-WU 7hjGqO}[m0(rPP:ҹmo&±P$?RB
:ocoU=d#<XKH4 UC Ru &1	Sߌ3]&y ltHsDz5i K6dIs؆</7#FZ f&wFKp	-!v5HK2f$Pd\	]A~ktO{j?X7U{jW5yǪ@{[DzoݔZ*3>SZ힞.W˫kjorI6;r>{ć8˘׬o1;uSr8aqKKwXnIdª<NvK%?Az5ot\As䪴^}ط6ey??CgīXV96!+=ZAk| hlϪ*8;qӑ-tBXN;jPKH  
  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233K1Curve.classWiWW~&$aDE@PjC îKɦaU(a0C3{~zNՊxJs?_j;"O{ywЁy^"cβQ/
pKot<xՋ:</:~l&d$x^qڋr0^(e/cS^xÃ$t!r2u]9#ֶp$sd"444sb4U7D)N\DbkəR%Iԍـ,""'"	yNVnnEVTXо
m.k\&Oku`Տrp)~ESsrrDLЊWJhJ%hR"zj~^KzHӒS*r|I79_sty@쒒2qi10_O(rC}nOXɮ0#Aŕ3rAtR*31Րg_%qAL+y;/L[:oƜ0$sbh]ȣ}dB1qҦ#IE1I}-jm*
Ҭ~MZ!_!b9qnPc"(I577sho)J	+#q-°g2̮,t9<//	W8n@0%
hpt[u&np(yVq:ܜ<tCH4j	<6n2xV[TV7?7"lmux|(#1y|"S|&sܦJԵ0_px9H񥀯ع5>/Dz&u#)JF
sfy$x/Ŝ(^@$kC*|.Ԑ)qRIbOJ" ˤ8%S	S2ƍ"Q/(LBTglQRƃ"͠%m|SbMlE_N~mb4wɲ(Rχ;n)ueSIq10(I_lfw8MS1]u<ah`GkRhG%^Pͩ~+4oTψhv.zn_ݿǘV\<x~
;Gضl`ȵ{C3p+u* Ej${u@P<һMi>mh4h,yQ/5/Pcc.77fed<[	ЉCO[/#뻲&zG,*٪N1,}d|aي)k4hh$od4[uQVQ-O^$-NY17`:/jsdorh('CE7Q&0fڳ.=Fbߏ ]:g)r;]NJ]
CPepz`{Z]c
*jfB3"d
,Q_#\0A0fVQ̣>'ށ
~0އ-۳;`4Bi,8c?g'e!i7VLl駖8RϿPKEe>  }  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Curve$1.classUoTnǩm.cc+ۜ4Mڵ
l-L(HmW-c
BuԵ0=
^@JM@G&Ad"VZ{=9׿`
Џp&jahȣuDEQQ
P1uv+ j}[h.;R D:l篔k}nA*[ պ+cWƫm]Ns{֨	^ٮ\h-Kj"ú}ZGp[m8m/8[]l7$дVCY[4C[F#ZkdG(^dU\7fֵ/ݕy	
^q uBV **8Kt\nyc3:25ו~1@zy9}
gsqZ;:ըVK{s8{o}s`Ǯb(Fm5Ӳd3F"v|`s|rzvpM6JfQlXa@padp|m~iJ:p
hV)GS85P,$+dE[b1N5'oVɊS3w1Q̩̥rR)u賹MU|fJTX(n#}13Q6FPo|̵&naCH0yiBqY#B<ԟ%	;i`l1f1QJd<ǰ}
Kdbڿ|
|<k18 $ GP?F&Eڽᆡʛ!0qjף|PK@x    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Curve.classWWW]L2
TT$JqAm!$
F0@4dKWm]\Ppjs/ߝ%Osr[~r׏R"/Kݜiuo{=?.qd}>("r 'aH@GQ[Zr5:F=&@oMY"N$?WpW!.
)iI˙a`GQ9<,C`\3AhbXFvmQ5MtvnM\anD2tVuM4bho7z1ӳrR3fZJ8t4If})m ̓
3)ٌ3Lmr4x7s@p;)M/MQI
󁴸S2ّ03]7SlɓS&;x4eh<Xq.$38Z"	)BM7`Sl́煝yqWYKϚ1/wt)}
d,>!>
-=!5)	]?}
mx^C6	8-BCGdhsR$kxd
{ZPԔ==&(j&SU[[P曕bRKq-Lg+30T>)5%ԡ^B5j$o1^:Y	ϣAZ.IxK JXn}mqcCccZ|(#|~"Sn39X5J1r/|%<.H3
.PY.^UzIe\pU5\%W?ceHW?)&2!+fllf,򐡨pLe:EnO|vLI2FyK>cb}Q5S鰪)sLxz[ʷIH)T5em0̉`Sv O3ʧtc:-=
PAs̾SGOX\;1
C>MJB
E&]My9cZ72kw=
)YG"%vaXs={m!1zg:;XI H @%Xu`w*jiOrO<'iw^ZpOWqx Ps&0#]X0cX1<c(2lq|$rz pxa5"`ɁSI9}v[lnKyZܰh7]7پ%2r!E%Il%4e`|ky/\p
yo0oüsH(ǒ\-Q}5hXWQ]CW+f	*iX+

'tB.."4~T{<C<FQ(*cKRp&_9ɲ?Q~rOwzYx}Tv*=Xykxݘ5(p{	QvBn	>v0*HЈlG<}pګk&jvl'^^$j$/b5-`GTQYwO&zx\߱ōFB&yESi%ZDJhܷ!V qPKN{    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Field.classVksW~֒,K^۫87l9IlIjvn|I@oNĥd-ml%K$N]ץz\e&naʀ00p_]ɉf{=g9ף+A 1d LdZćD̈1'D'qJF3"ۣA|)2JH9-X
"2 jЦ5T'4x{9n4-f>if65Ti{::OjRt֚,./X9s!/3Oȟl	󢻣;;[s#Dֶ%3lK#	?ک~̜tӅ3V>GNP\鋙U
.GOuZ4m7ܲvWQJi{5>+kF-S~9 R$QjA!Wh(ͼ&K3t&5₝7Dٗ/f&*2uk7\1ŝd<3s<meRb8Ehb64vrj%b-at]G6".㲎+Xq	DuIe4nOVxJGt|	yޯ<9>t|@ν(z^OxY>O8*kg5*T3Z8oG4ݾy9>ir093?r(ɸu;L*眃^XJr#i[* =qO~9V䒕`8JKV I[*[}	ÌamsRmֺbVA0kC}NgӬJ
LcThJai*L[M](V*3},9$\^e'xRT'.*3n}=<R"C=#9{iXKUqRв,
e.}=
{%9j»hO}ݏ=\(;oo_nrZ}Eu>/ÈDc%TElTPKH
vu3-EhᤄjgP0Zn**\5N4bHu͈qŏѥՓH]"E6!R_;e

0'BAmY$ZQG#RAE!E$	TU"%Ԍ %߭ءA
}4Ik&?z[1Afk6	޵cVx݄;T
8vhP-!as{{<a#e44Gתl5{7)귷(gÄn>ʘ?jڿJZSذh/ADJboaj	"L*.Fz^3ӳL9|o?3<'n06F#DO2N@G涀>Bםa>ƌ9l$ ]|Qc͚H<Q*a#h䔧>m}{jH-J,̤Va1,<bRhx}_[;DEz}\gދ'#FJB0ᨧ]XcM;Doi j	*|m:k814Rb8Lv[B31{Eݝm!rk["}t ,=Gbϳ_dX_ڗ1ƛB~ъ B*ƢwW1#?Z(Dԅa'~K̊Wyp#
~X
{U5\6_|~|F>_'oa|wU8j<jlu9IY`Gr
EX)≹QxRC-W̻ysv_2~E_+}RDxWC8jl`cF)콲RXE~Û4wP]qP.0ޘF.oK.,?AtǘmR-oT 4
p.&0 7b|`EЛӞ^>>>||j21dfi@DPD]Dz
":m
x̨Lx=?PK#  B  PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239Field.classWkp>Zږ6QrH-<b 1I,+l962(i3%e
t:-tv:}L)әNg >fw
[4=s=}5vRA<ϲ5cPUw^>p'F#b3z!À_#x_ZAAIA[P͖x!5ZؓNdx%Z1<:\u eKnk;G3=#|j کAZtVU!vF懨?':ύ\7<5Ze8:rGR#0p$=ܟOUWHؙ"uxx&#XvRg'B58
˺ƏhD*5#4OV>QQkv
eFR%h¶cQdf眵eDg:
M.&M2rtf0{/_Ù*I+JL:B5ʚ4BLa=.(4IgSCnW6JeBftf05i_3Zlv:rrtjxˤx!7⎃Rc&iܤmy=`jR&ysv
ͤ*u忕Op{RдߝQvA-]T\{UaI3SZ>5d^ߟ瘔1Eg3b`btP1#$ޟ[v]]2OKTEh]AF6`ld	f
"s bT0QUoԇ5ܘ-ƕQ3FU7s[Msi)5 2'{_ܘƔݘΔFmR֢6Tl]Ƭg0LXcabZgt&ChѪq[`\gzclZoꍱI9ryۋ cpwW|(6 1i5մ0GOz򒨶C{!wC[v=!Eٴ;ekhӾ	ŸQjlv,Df$e'\p:hTUk..E܈ekD'RyPsߛ3cMTfjci`E%ikXmRǶGiIR}OT>!4Z\
?PH=^xxi<n܊k1NtM6Ei4
}t>CC Zٯ>pgbܞhײ|B1!9pUnAݾ882 4. ;IٝIँM\I5i;cub)i8&SūYXROKKKꙎROSSS`NR
k/s:
JI.ZGG(4"Ӹ:-WBE?~Q8}ҏ'/~S]4>K?ѯ24H_א$ԆrpDQ=vF\%xuRo)i,+D.k1HBؾ~q.O[	! GSRVh
ؑI5bGShWѨT45ENLk`!:(DYg_kbܵ
*[+kO%p}(!fF`YV(+K
RVT+KRtP'\/$zz1u]Z:nuȾ
y'>$)4=c,Vy
zATB~ XJ/oYdQ
*~?u_DVΒu0Zuc'~y 7_x 1FxOg9_`/q_a[0P{/Ӵm|yW.Ev_oa+}Mz,d'n{mHmCH[,3^V,QN=q5'Oju3^==_! jjd1Y+:~{=~zvTf	ث@Eڎ39[%Z\Z
+lVzH /N\se3:\SH݁
&KG/:#QQdseCA终GބeoIP'x+0ߨ=_݃
gCc,`ua
+>7pW<Sݸ
NO!!r!0(xPMgg"!SbX+ͣĈS@HWsPf <ْ*xkR0Yf0Ia(_9YRj-d|3-iC&vuaqim+g`
3yqkIYAa"aRV<vz/4yD,i$b	}XFXNoRT+%ZDDbu"&6.\-VB\I,=ד*dGZ&p!?ɰ5[/rP1HJel*<?ee WY}EMgZ fk\L]L|؉Pܺ7MȒ?!Sڤ}S:/Uwp;e@b=)j2a#-\\Cmb%fڈpB{vM\O㢋Έtn:'E/kg|KV/VE5W+@ԧŐd
5xABI4PKb    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Point.classWip[W'*7v֚[b+!q`'iqBsV-K[-šv:Ӗݔ`{Ȥaae0thyON@t9. V bv7F!B6%V!nSHgdwI%}B6EA܊mBz0 -]!}һ3(vn[;mp1!Ⓒ]	XA`A{WwHR"VK'sw3{[x,KY-C`oޞfёR)k]avO{:a)t%~+OQeHk𾄕fsܚNCK$:fc{M{؈d*xsqansMY|Xt>:=V|k-3,+?foBags顖,ٙ1L7_4LaGpTBN ਉH{܇M<`A<da!H#8n}8a8iQ!&$OxćaGL|Tt8p5Ve8i)!Oԙcd[8>!y
MW뺶l.:Fesxʴb٬낫EFkW'ʵ
;i"}`29< '!BaFWxuPz+,S~j@\k㽳\y=ºgbZ6r,oFg,rAnAvdv˰u(}XF]rt\r$%c+l..:%;L/UO@/O
`ozZ۟b9bqؖNnK$zl}YWc&rlHw~	i':wjj+
y%.aeƦ%P_ '
EZ!cEc1_<g}@ib[v>8	.l)
v.ZEkcަq456=1#0Fn<s07-f0$L0>vk4Q&$*EBL!GP84J=pD)}ڌj.D.b_mK&ї],\6%\{xktqBŲB"grq%gVr]+'QaP̈́aѣۭH3ƱWJ]4"E$PE"KSf@8 ̼30tGk1#V6Cwocc:X.+ž&:Eƶ.ԞX5=Z)f];\RZ*vy(˰a-ײ6v͸JgX9+a-u^f;׋i܂s؄o`3^e_A/'_p;@b*
|Q7 P+1!0:06aȩ;_q@pHeqXaܣŽjpz	Y<^xHG8.NxU'\$p5>?ps+16j j%[{K|*5<V:y8΢vxjF}*릎9na7h ]wXMR=R>!]M<_=֠Тpʴ-rsFgI1Q x6O"J>o+<mi`b{~*:sKmo
gDB24K
J]R0a1∾^R{MJmuL; ItI|=Ok0`pQ<S|~,ylqI{%0L0{2++x({_E|o&~H+|{x'|
Gj~ZZnTT?WIR!JIxQTմ8z(\ ".3_>YopKfz>k+\r,oFGTm䍼z!G1OMt	DQ\/"aB$v@4H.ء=pAݝ].BV
N%UdVǀ
ر +Fm,yr(ۭH{PKTa    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R2Point.classW}p\Uc<,it7l`4Bm(M[%]ڂQVg:e8NMUp?qDatGGDFMZ罷	`81=gp/x/>DB:}

BtHz*ۂXBnrQ~YIȀL7V$\"#0UFB)o	KۅYS.~ qL?(Ӥ")&>*xץ-
{s\):Jm<YfںJ}VHw7_زMݕ1zY4>lrN_\ڹ #f1ڭ2@.M	Y#
ERJC%8ѩY(s١tFjnAyht^^Oq:E9)9,ܚ+SfOZ|l5SnaK{hrB*suh7jGVCNѰWPRDI>"q@A}4FHܤ<aL?,#!G<$Bƍ>1<WXq	|BÓBRQo.T}\!4gmf|W&Y(<ŗXX̧Qv'?g9U+,$g&F1;*(É7]as
2[Ax)SLTAfW3;]ؔ5RK%gZFh颽!K@
\ldv8@6OfM[M_oao)'-i?:(s1-"#߭Wt6f昙h>7>Qh~P @>7RJ×0W$DT+;"޳W+ON%NQ\6!Ku52h=eH aKzGb9<{PqL-mDuJ(>k^kH_9x'fDւzRb#8ՉWG	'1(įוví'VT
IF4`1Vd[C 
4|XƏb{
ǳatIOu9j%$|pq ffi;4S_
k
aڙBt=W5۞{
C3Toi*>AVNS''+j[-gb{>&6		qwMB7A[FP(cՃ	كUZQ{pTE	ۃ0!QWATՖ+Qv\5a8yuz$ڈҍcUz$<DkDy^c+J5/ĵZz}3ԣ"Р7Ȭb3X2F4tN8 ׉6*֌DEcv0db:{$ɨcFD";G^~ˆ\zd9,Mי	Y̃.J76VL;}LM̬A6Awv
ŖnS_fb3e1gp/gَ}þ?a*۬p> _8jՉcj !<v	*֨O:Ϩq\	,>I2NW1>^fTî9ˇ3w~S8&g<}n
X3o甈/@|[Ǻ2
3T"6v4Rst'9_i,X0:/F"	+liuV[I~= %*Q\()h
:#h,	O+\Di6&öƐvH[F[PG%FyF,+kE^>/a;-ηw8i,3!9?/X LiD9EΑt[`"`e&q{2j5 n. gwEo,ۨo%`úǺ5\^}Us2FÊ;B: x[P+.,z@fͼ[Ր@Z+[5b%,-l{&u"bVP׽;a 3_2Я1~d5u4<m!p&-Ɵo韉S+>k;L7MM
ۚ7o+P~VH*Yɳ
@hvLZk)y>t-3!mQ3/
ӶX36cHص
]#^ >A@V2WWcj@E`
Mo.]ϸI؈Ř;PKs    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283K1Curve$1.classUoTnbǮm.XVے4ۦMZ~LQ'e$꺗&̵^FBh	
4$J'x?IP>;"VZ{=9~(^@'NFéh8mD@y}
4x`i0,n+=1%+ZzFf7<=BWZvXc9 WjE:_*7kr'j^-|Yl8Z(e<9X]Mڊ+kԒ\߿ܸ"p2;{rķYJPC9hN]ڡمiڍ_7<_Pv=j]{&Iqʰ/k(}o &P0f^4q'5.OrUza묉qLx	k;$`Ny];d 0D/疂n;dy&Njl{+pYTe~G>ejxxP켞W9;,dM\i65l[vҬ?Z'}|v8@mwm{@hz1y%{J6p,\Qt 2
H@<ۄD"߿d~w81E	\xGZ;fHn3m=|%%YR3
Q+n%=(2%ɌC?Ϝpv]l*BRw/#`J#j'|oxa%|&ieKi/HOV}A_	x&,?׭Wj#.T#&EC{v d[NkO$Y6IDT^݌*~VH(wwzb(yJ5Q>PK4    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R2Point.classW}p\Uc<,it7l`4Bm(M[%ݲmQVg:e8NMUp?qDatGGDFMZ罷	`81=gp/x/>DB:}

BtHz"[XBnrQ~YIȀL7V$\"#0UFB!o	SۅYS.~0pL?$Ӥ")&>*xץ
{s\):Jm<YfںJVHw7_زMݕ1zY4>lrN_\ڹ #f1ڭ2@.M	Y#
ERJC%:ѩ޼Y(s١tFjnAyht^ax Ȕ
Kn͕)'-EU7ninOrRCBWh6SB17Vp
F
!j	ً5	y
B(i/2W$
9$>
.p?аN
A!	qG5|h8G5<V\ihy$>Tԛ:|2UiW͙iY3ߕI
&`d%9ctEYN9cս
Yu.l̎
pMv༩9`?^{34UqYyN6eMԒ lI(Ù*bgho/hP`)1Dƅl:Ǔ!VS[WJtAڏN>
<\ed6w+z鱍٢9fi;<ύr:}B6Tc;.3ύRt',/ʎH9pÓtɥSײMCpGMp'ZA}c6 *H+CؒޑX^$t9T\,SKj]vGϚR+'sމQ=Nubꦕg%Q.p$IL$8
upIUUb2~E
X&'4n*5񣦱qCl*]>Sxz$jɩ=	4ܮfYYE&a'FBv!]OĕkͶ^Ð՛OBIɊV˙O?MĹ~Bhx8y]
eVt}F(Gp5rB ejT#dQ05r AgbTUPzJT]3WMX~9N#=F^7EB6t#G5pGUF^?F!2QQ^%z
'q^*/f=4
2XFmLb9g#ݥ粓:2u"kJ5#&QA!}i2jkzlѧ׺_Ĳ!zgufb󠋹"rv&vw3k3stMН|tC(v庋없}q,۱o{}'^e{<?<t<xDuj]xBʰ5*~<3iWpB=ϩqRS<~ϫWy,ksa&ΣOc=p_.-.bfjDj-bq9%.𱮌} U倈>-)͸T\8]zzV5+NH46AݯdeUV_HEg((B:4|JQd氭12ԑ~~8C=K
@K؀o|md.{x$~HΏ@w?vQ|cs$H7XiYc{IܞLaM!H*2<_!r :6ۯy	ذDM3W9cu圌ѰΣнgmA
#l{vAY3Ŗk@p5$zg|%ЃJz'V́XI$eku5[sĞf]حuG  ?e2!91kL_1~Ͳ{-wD7x I|'eg"_otS4~ö
ʣ*_U@-RAJiVl?F=_y
sLuwi[N~	1vZ熮A/  bzDyԫT5Z
"0J7gܤETlDbPK    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Field.classVmpTg~&||
Y	hĆK 
77f7ˊPE[6TJt:8q?t3sGsf7d}<ͭ߻	`b=ƃxbROY|Nē2hhSE$DXb<-ڌ 8"sGE1'ZZhAC6lّpBIDϋxZDEˍI^pV239;@`8gGr+3mCf*oB6Du,9M.jAwgɴ5cT3H(&忘V!s޵(#ih%۪lf?93+1y܌ΙlsrPC'5SdMJ`a+Q#`'Svr>uJ%c"ښ1m(k9.[ΊIT(cqQ3
E!"f+_Tb=TͬXTiFU.?eg8QV,g>Dҁ썧ܴdٸ5_==4RnqZG5<aSГD2tT)B+svfNb~FG:9
_e|E.N#"ڋpADۉ]:E\ئo(zus:[k8aA%:7t\OW]o{:?W^W[}
/TJK2Wvi3e%:QgrVrdbc3bCe@q X>S
<U_2ﳝͬ(si{OD?iKh(ÆZVDkes)Z,qNT6B3,=6/|¤v)9/xGy;Ԥ6I3=aJ&%b駬\nlL]ڨt#vҲcgix&p֙}ntgiR.'ȊKXN΃N3h}VKSkZwۅ
PM݃(oZ6Au!δ:[:\ kk:AW<Z.˨\AC
x-j/rbC(h+}DԊ7Z i>Q0"MJ!
UX@
oGrV7З1G1LGT2{;f|NihH;eč2(#2
?`
bK<k(y<TA'w0lcL@	(~(D'IR(ZB3P͐TBV_EmL=;
-\qWx5u!OA:7 %c5"
:#^:Wlho)}G&M3g{	K~5*1z5<E*ʿPC=֭QpdC6fjˎ$SD1Q)"-!]NA9͢a$ٙGI.JSmSY)Q<Ϯ稻YoLM9tv~b	sD(3R# e//NP>T=U|t\}%}%S? ,X"_B%.8H\?y]cL`W:VhM:ܨ^!E<W#x)"uu?\'$ynh\@5tǼ.9<?w1F0
q䣚)+rZ}7 ~[0E XT;)b0JW^vp
\{?;.[@s
HuVYE3p{鍆]-ހrpD?ʁ㓈J}uYw=u&oXKe!:P{Eݫ}x`owq4VzfZ׹	Ȅ32QƟ?w5l:Zl頙f*b&B~mʀX!BQ)`~#uح?L$-=re%g:98PK؀}    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R2Curve$1.classU]oT~Nbǩma]%iR3ekQ'jXJ0מbCHH\@lp!Q:
&AydXi>=~`/v'p8@FG9}:4t@84	hHW@:·Zt@l~J Tk~ȴW_6ke[~Hs
MފSHCF}UsDͭ/TvN@)yKdoʢ_lrԖeP]d?xr'K罚ߞJ`ٗg+sĘv]Z2)	^u[,Mkb4x~]A[0l`~{>tas8m"jYtt댁qLxk;(`]WK,E?[v0Y*
i֢dUYސ ﲔ-QCzݾn]5g`h(l*O3ШfmKg(ϵom^mP=iFT*^
I4WT>]8 4<bP(!rGm@9&(9Χ(Y5bL$LC]3|fE%^T[x5v,_{,/&I%N.^?_gN[x8m$T*sw/1gJF!/ߏx	`%|׹&ieKh/֟8X	xukUڊia,n	$N/%?(_c˸=&KF>Lbjft+~ZSEǏU[n艨<g(tYoPKg;܆    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Field.classVkpTg~Ns6C$@.R$@hI5PAr)h.HUiR{ت:uFЩGoC񇎣3iu
{.KG9y{=]% Ubȇ61RxX8;|a'g	C"`.Fe:&Ċ#%!TRB!de~Y8COfElBGE1pJ/
fM&+jų6y
J{hfIƊr
v靱D,Zи2kQ*K};5hQhTAipEtku%tJ8Oc4ewݱўDS
6[Vf8c~Y]XzJ*Pa#gF9	{ʈG)+M+XZKۑl*h,Y
URlxsĊ6xsD蛻MgG2)+B-ey̓9 d0֧֜cog$os2c*z>MxE2цX
ڒ֑d6XL%َFLr\za48>ab3
0,4xI:ħ𤉧8iYxL</t4Bp&^^1qgL|Fԭ&>&zegW?yŭhkn[Z2ܭ x8Sց>+஁+1fAY"<:K0'G_KDّ9bb2'$cq'F6{91;ǎr-v*-xl"(կ.rҕsRO[$샙v`-l&o`+eZƬ`ELrNY	$c^ꖲF $Mu/$]-`t-
r˯#͒x79u|+|{B߂r/iUn+ߋC);yMzvR{
.34.cSX %@e+*M|`bk1kcmNwPvm3m-%h,
*eat\*F(<YjNNN&4SeYpf&P0Q?(4sHPŶgXX	YHłe,4&+DN!E;rFHFs
崗2µS}Mr
uvm0ǎ
XS$R\Uqsz[-;U;U먨	ն<Q~F;T9YEQp6qڶF>FkW)ʿlvaBU_(<9̈́ܢ>q<B;[ //J(	utżʹNj>Ot<rG&
xDq'~EooMUc
ժ]?DCLa:"=VDGh`uxY+`IM%Ti'r(\ۄsPw+v-q)=7d/u)3/u[@yMX=Pn3P.s3L]}&̼a58Ђa
ƩМtνݙ{z+s&";g؃NA^Naoŋ_2+.ৼKw.#TivvsЬ.QXWhqI+,=j2WdǹSY~Y5D_ĝsWb,7008O^77$Tpj?Q?Jd-	*XDMEoq%;|U0\uNG`C:
2]*MƹwqSl??f[	{T*]@w _]άQ_QKU8k@Y}wkZϢzï,mQѻbIX_yc?=xqص:-YkBjd=!k}عuOt:K,.\(:e_xP+]܅x-1=}wŜӸkmOڷ2B].E2:ŃAEǐb\篗'`;0.Ԓ!
x^kэ!K!s0)ZNſ)˽^UD)EYe˵d#C6'PK+  <  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Curve$1.classUQoTn۫m]XVXN&met)jHm75hmcvZF@<l]M#&A%{9wιί?Y\A/N<
:4uhq
x)k0&Y+=Q艟"kɕԨᄃ#3~Z^[m+M+j][a7!պN͏V[D7OB-U SɹVsI1j2;7|kZ	W|ǋo=k$,kЎq
z@ZLLs!zovb}ϳ*}lYd3ٮ:ꬌ3q!d`?8>T43&I=rڑ+ҋh
L₁+FdPu0@Q.-Q`Tu&)kqc{O+pݍe7dZEl.wcj;wHq?sVDx6.Ω/bVl[>#@E.1vyk3|pNqv1(Prɑ_C G2CH7.l!sv#\UJ`89*elU
?#SN>}(ͥ+tE%Goc>,gOި銖Ӳmsڇ%:sXʩ7o]~j˪74ocCc8H%	9x-r_ǻSc{+~z z
Gxs2`UU)Ϫ
a1	ۘX")ؐ 	_ _0{%}_cE| =6څ/3DgZC["}܃~@5S(5qIyPKK@t~{    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Curve.classW[w%yaۮ
8`,C$KH4	"c3my)m6is#͝K!<+$]]oG}i`{	${־} NЀywJD/8-QN9#`̏"~E1.Ec|S|6-`y'PьY: -D/,m(qʼ/+~/+2HY]LZ42gk&OguK\Z>'Nt3N##'s$eX/zRtR(i¤aL2{hl0FIW/J*h=M
L^+Lڬ[d֟קz޺pZ*ZlHӜ:&y[CA.'y+ơ
f'42Q ]K<-:՜8(ܜaZE0ɼXZRfN0ypYz2ZNks$H+ -
B.f{Mn26dU.vjj	傍|pkfЃ3#^{ut,X|L|< ,+ꌖS!8_z
#.::٪V)1l1}Ҙ]Egx)'%Ξ5M?V*	QQUXD"5A঩3JelS|;"B-CK^EQp8㶈Ӻ#ZM;	%$HI9&d_,ݓSx'ۛHɉx`$r<dɱtg0 =y'$$ɞtL,''hGqM[V$xat]IxW$|UHǸBEv:O$||.*qu	7ke_Jz\v$'Vf~b.1*- UoU>YsR5#E*t_,3aNԧ:RTٱ(k2OUaKF8bG+^jL$SyIgL!Mf_ ~7e0蟖vUe^hT.291Gu2f{uWb2)Ӡ[)q*C{XQt)Q-$G1==#iK>Hoc/Zxq6~0<_Ӛ*A
]'hu4^݆g}FC-~BQEi7"nti6%lY֐oߐ꣐l@#6tPN}4.ny<%N
hG~)hl5xkaӶzozn&4h"|ڈ5Љi<f{	ra~rI=NƹKhZDKAEaMjuYu*iW^%W`"KSD/tB9k#daEh<ۺ?Ny(];s~wk_BzCGhŷi}g ,St4a>>m (?1(!ɱܲc]A{eNl|H~D;Õ;*_%k$}#JDr7^[6܁=pcB&wu+i&Dhv/N( qPK  s  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Point.classW{lW]>缝Iivmhܴ[&[$mIf[8_>VdXً=SƦmh$2T(/$	iBBHLB,su6s{ι7wl:֡ANlgɠAM>n0e:vb0#0V2т=L3yۙ2v'vq01o3udf$8ܯaBӚH&FRdH<NMxoȥ-It%̉	sLf\aPՑ5{I/79bb#4%%5@]}b;S	pFG]%{E}o2
)
4pg%ⴇ>5ex4&/%	?Kͮoyy߹aS-땇kM\&6\2x.MM6e]h@Y9L؂ᰁ#8*в$`n5p-=}_<az57hQ0%IOܗg,9xR`f0m$E^5ʎ6W\F2t,:@UHɤe2|W_"TlUT*M)Y<F'21n6G
xIvzj]@XJ|K~r-_y[{lr}O5Ųd=6 ;1<Us"#i.Td%s0Ks/-dn"80A䷧mF&7=f:EIOpyjm@6Gsq:jz[CY$F@Jc.gMf<1@{"K'eʡnwwʰ/qK?z:CH9	XOP` [c
!>kHrz6:
!h,=E?<3U=J 5K͵fA֦Df%$<N17C@
,>4F]$XĈbF<*qn`T8gQʘ4ʢ:iG
EREEsqx}
hPd Z*5d$JiT|<M˦QMKoY^,[RR.d3@q,W"*Q*+9Mjvq3*U[IC@TY.Ed4Ր
G3;g`ɢ9\cSPXH

22x,I_-
%d`I.ewr)k}Z.sXŹeNx-U+PUī)עai_GRMA9D}%wruu@][JW6x4:2:6nЍуߠCoĿ:E5+"SlĈ،hØƸ؅b)1K8rbS0c8"n8qx7q8Y<(~xX|xDã'x̱
O88ns"P~wVa
E_ڶhx[-S,hy4Y~ELM.!j[]1HYLǛGXGRQ)D

$\<\Z6K<SS4
zp݌,ZTY+u4V+lO^~b7Ȭ6òfTJ:+IVP|c""5V[qi1mu4d²f)?^xPQNIuD
\p3%|nǷfTRPR~U*p$~TR?1>?nLT=?}ъ_؍_o!+ΉM(Vr[d]+YT?seeRtq
S
_ث0ݝoQGTOԔL;DWjB5ҽOh+퀺 ߤ5IرV/m
eG)/i6{۹|!ɓ׍塑Kg[M?m'+ToAڌIPKoA    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Field.classW{p\Uݽw77mބ$M6iZ4-m/̓6i(-dfn l(BQG+EyT!VCA1{GpFq(wMBadw;|ξ ,  b`\tM =&''DDveCfTvc˱1$$JRJtR	`=rb{L:|rxԿ^J7HeqWq@@s@d"V|X@nsor=_@KVZOӢT_ryنXSp#+7mRdSƊ\cr5|plI/)[#눍t'2jڰmYĪE[UQ+VcSI/)ml<(vwc&ڣсdv7	{D49&PNۑT,u*	&@VrE
˖rɵK_7nYjܖ;ȊَΤ!sMofOLI^wb@YM9֕VG6%S+&C7._qIW̎G[:`uFAHpr<ҙߎFә䘤u::>C:0um:v*;t܉#Kŧt|+t|wGJb{qP:,p:J.\2l#lƠԦ8wN2n%FZwڒע{Z7%PL!^vkَ\Sj*<8zz4#sQrO#JT>`=IȨ֎28TZO$e3ڝR^Rp
|;@7ӱ/c(QXgb~&YXChJ$yd?nVVv]dLp¹h"PJd9ߋђoe)}}!2㷐  pL`1&nAwC(<angL{*|O;$lgETT<Q6(z>7p
za8&Ti(kQn}'8àH⡙vSZst
T7Pxv		şfҸ$T-:	+?P@znKO_c^
RSJ|
ԩXCk.\AmEetCȲ(eZfLz!QQNKǒrV.[Y@
?%S
ap&6K%jϚC{eաV*''UXiu5<*p9{	= &Z-(BY4ב4&07^<9免fy*lGvֻ.~ե3.;asEyݕlFjpB3I=(8fD\x|!{ONԈ
b1&Fy',*=aM٨:>a$ ^AGwH{#J>e'&, fGP$LE~Y EISx1dh-@{g6%d\2]Q+BF+!KC<hQkMj+7g,Ӱ*MXmUfԭS7KZ4Ykm
F7ҁ3lphopw޴:*tRiμw/gBg
⛮J5R2MGIhJJGCaƤ1ÔeP'(蚣8apfafxoQ޹c0z
|8	j</	|(NKx'*k2W&3x\_
xRSb
0.b8gŭxNxOx/{cOldz^u/W]'x/Hۃ{bq0:T؛st+6}3qDjAc2NݪN!
AtH"~"?d/珙^}'
?%q?cb9L`%3ݯx5o<?`ȃ&g|!_Nv(6+۸-,'/q{2.0M9|o7\r g[MVo3Yw{.B-T$zh|i-PTP%,_օR>8]{k)b6bDLQ7LU@\YU}5(6^:zOւ2>YshoJ7_+d&%#M(!TjDݔ?AA>|G8N,|Px -2N&N2|ZYW\к\v甒sz̈́Q+
-?8oʄۦ0w2 .a!V1VZBq!̑vX'֣o]b&.c2=܋D؈b̯̥C]"?R#(ޏR(JJҫHvRz
)H0)()I)%1RI)M$)EJ#iR!t7)CJͤTc{ȹ\͆|`ooʏƏSبE}Td_ᄗ.5B+gR_sDX,E]6%N˦)gV0;t6Gp?PKet
  c  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Curve$1.classUQoTnǩm.cc+'Mk3RDMB{ۄ:ve;	(H@{=iH ~%{9wι`zЋzA!!
*5B1ZJ*FT	3HW@TzZr@btXo#㳞ZZZm#KM+][A5K՚/M
9n#|[TLDfo5^*Z::Z8mVsO8]5ܐB^*֠ھB{Bh/qm9ӈP=˪aʹk;^pWdXU1	/EpP!:PVqVǛq'&UʙtٔnE;c
ue|]Ы+cύrq)}+qY;ZcnT,.k֊|&%sSݽ{OG7u4oǩk✚(f{l5˶e3TnlǼb]\{v;==6JF4 %8i(0
H Ey8??D~x6R?.pkPFV%\Wcf(w7,e%+YFj8yNլjdnbU?,!Meb6KOlFf*~ܹ26*?HfDȚ kPsa'OȽ|~z U
Gx1`UMS<&odJ2cbeH"!Fg7 `/ïk/Q$v.0|Qu!$e?ӊߠ~0L$w+]=b(\ Fi܏JPKV?z    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283K1Curve.classWWWMI($!aSp)DêQ- af& .mmikkh҇zNՊxJs/ߝHxt|w߷m7 Z
5Hle؋<\E6aQ7^u>Nd<(1	%lSL
xhzՋ$fTy< A$E]uhd(|74uNpvE4U7DiN8>ѱKiถVIԍ,"''IyFVnETTXм9
m&kB2*h)u`98"ڄawq95$'i+%5USs4siHvRѴԄX
yKt.	C}RJ&T<)F?+IENqVJz)0*\͝'SL2W
yI]Čg:r:y<9ͽm`NVPHܖyZnCLEƓqt$Ō4EJ)6INZ
Yc8gi9!N}v5m;̘ss<)WDIuCϿ>&%&tJc
p-s:BCVY(\y`P/:nhG%-Pp1팆ݍm-mm֖X-v%ml
ECM̎wEcq{bSݔ'חZMCFHǸ+Tg\Ku{;
1_rxeq+_s*`j;u#%JF,Le:?mhu)*^@$k|={jϔF;)8iCIeU҃eJ7aBfӄR$%VIT-S.hIM[f%m|)vI#y/'1Y-usj#޺80i.6Sf)8MS1Y<a
i NkhG9^!Pͩ,4oTψiv.z{
w_ ,Xc$qp.x<wK^	v-#	E(K(p-H D!Kd~Q.%B,gVWP8k26BwhG^l(tܳ3Oq]PDb.hEF%}_#Dਅ: e!g!vfg#u(Ef3N<ulS&	V4
C2ʳ9īGe3lYMe6G&FuD7Jg.I\ùq2lӈ[fw{9k^겷|8^WY_܏QJ^,v=AբV_ڰs?<sGUeeT_L̑k'7?7)oAm3^a{p(QB/Qno:Gb=k`4By
F,: ggdg(X9Q2gBPK/K    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160K1Curve$1.classUoTnǩm.cc+ۜ4M30"ڮZ`
BuԵ+`HFA 6҉Ix?IP>;"VZ{=9~~ `Џp.kahȣuDEQQ
gP1;5-4W)hp"`xL`jW+^۵> tdy[eivzj]ZK㕱ƫmSp֨	^ۮ\lHFuUu&:8k8W]l7$Cд̍ء,sq-_ڏ_}K^#O*}`nd3Z[^SŤ)Lx8: c x
tiHՉ˶ts\nyc:^2u5ו~1@gzys%}
qZ8xXjTM%u+FSۻzO8[7yhǮb(Fm5Ӳd3F"dpUF ޷1ěFmf(dKsE3Q+"6D6m$;H1iJwwD*:qkg3k,YLVRɊRNjfO߬5fncS+q=KR.ɭ+en_RږBBqt;& Kx>Fxz}51i=.V/T_՟8&CLA_9MSV̴V"/L#&r,ｰOS|P3_D,aGb5_DtGuM^rQ} "=NO憡!g0qjף|7PKy    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1FieldElement.classV[tgZi%yȎf4uȺDqJFqĮq)Ka-outW+7NB)rimr)Z8Sx+#7+61?O~- aD;1BN
7Ta|r2ƃ8-!!rF &a
Gpb
2-rNsb9Y
ȇQ@Q%
s
DGg3]0ݙ)Vr~hGu{O+PKӖ-v,gS2'͹ulrDր]>k9%O|b|Hf*[;Ҫ7bbs;l[1@yK]̭/"-}hɥJbv1kݼUsceCP*XEp5yM{K`2:f%[]{.Hi{dVt)WLG`9TWʔZ<Γ錭IǩY+k0<S{`6_xda[kw18{⠎أ=Fy?*b4t!k͹vBX݌JNɣ.XEq|B>|R~!S:
ZE8Pg+eTH6'>#Atd~%䳲[Q!u|O8(XÛmDi6YM{MRf߇nbrflFnP+l0(`F+z7h|>
k3ȳ̰]81%.u,Ԙg(6Gӂ#r.9i4BS;jsy*ʯ\R]|,vk=;ƖQ5I;'k\,klhlj0ק-JeD7z@i◦&T;` F,|e(wБВxP]L{`D7zÍFډ~:iF>&
m?Zy~uI"(\u"\U<VF h*[R"{
vQvS]7WPK+VOt#m}ܣoEmEWE"4e\9*ඍ^YQM{{]׾ea;pxK]Q3GIġr?%qRHm\U_Cۙ2%{49%VVD8	co&Fi<H]A6B:KI"=L:.AZE)o'Lfl'w0Sej0癩<Goa4'C2nqS#EB\$c\hgTQ7_F~	/a̐v,6Hն50*5%kP3~C~F
5MZJV0hh)-LFv!&j3a#6"%+Lepd,fC&j4gtCtHuJuZ]#uYT\헰El2reeZ	<Ik0&g᳜q~?ωx2Է؂	|]]xC~~~':~LP~W7s_%G_wWO,+>TR:Vv7ʭxۛlG[5*+{
qi4qR+ʇWCe}Ky^#'Y}uvqgށ? L_T~?2 y;aYYw5v
;ϨTѽ]k33/؀~Q7WCPKĶ!  s  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Point.classWkl\Gf_wێ=4&SSAIkn$n4a7w}wiRJ(BE0%ئ%UAQ	HU!Biνw;P'w̙33ߙ˯XϛX!t&!]B:tX'ď!1pEEHt
v&C&,EHM܎BS&cta!wJw#BdM"N-dbQCZ/ݻ*63
dsچLh*/mcHj,Nۣ])\a@gvVؒ[cCv?94J/)
^UaL(,knq{6MrxX{ΙW՛<,*)ai
fa$g1Pޗ,s);-K^g|3uCv)UcmycX!o C6`8b()378f|p𠁇,|[xDȣ2Q4ppcǅ|'-|R2QOS'S>++D=di8%5 Z96/rT wkfd\h2-r6q
J7bg:eEfsl|n|*dasUܲK!L#oT[
դ8V&!|)!1.Yʫy6\M"ᶭ詜͂:m
4.\9ߖ%hS+<V-8BO/9S:e94YQN~2 }ymF30p.U<0B^l'Yg!\a#齅lJwa	h;z0bjż
WB-CJc֕SP"p=	i;r^<t`
K}A
jϧm+$rIyln Z'M_aΓLӈk+2 
˅	&DU]X#DpiT'i$B,!eژDqi%*tH^[Jm+1OGtt4E|XBVUfij^:]a&uǋ*%^պBNiPC]Ӻ:}8kKd+NnN^sit?,XXl
Zi͜$qivzOwG78-mzŎ}7֕AX9XU]ggdMV|4-@K"yXJ^K@b+qb7@&vS8d	ެyK'	OYtE܌Ӹa3^G/2/
;L;vmRA*VG-BR-ŐjVcڈwͭȩPP;PT{pXpDܫ>uq<C%<u7q\pF<[~#9
~7`]%.|YA:n\&pg4G<5+ެ濾0Q-䁤3! [%ЗqC>*	yU`6<>]X>Xf%":DJCGi\PP!`{0Kb%D
tXP[uݮY:~a+s&YW S^=D\ML\GQY!ʗ>C<eK܎YK_?V/>κq1mzw{8wQ^WY/}r?CVˏg묒Z
Z.A#Zrp7fCX]nR֖K!W-FD..R+^qo58Y^DgQp\C%Oe/nKI82y$6kr'89?{׻X](rFKu#Jw7sub"T1 2u8uDPKV߿  D  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Field.classVsTWݽM!	PޒݐRbEBf&Y] Ԣ@[5tV:@gm=;v̞{^yn~ hgH *bqg4.҄H2$e8.OȐ 28){dy-'%R^A (2	΋I S2\jwnl:7wo_;,_eo/)PxF{xh2Osw`Ԕɤsss
|rn8xd:iV&LTPy06ScfvKqG5	僖?ktOihg+ƳDO2'̬փǍFtʰ&%ζ
cHjR*K掚C `OSVdjZAh^J$29aXQH'2S
Vrf<MZACz
^"e3ku)˝Y	xZ.?fe8Q̋g>L҆쌧ܴ3lܟVӯM[7ڼ?iⴎءi`s&;鸑RB3sVfJb~FtxjxN%|E#lMF:u|CnqfdxQ.:4.pQǧ븨5
]|OǬDqCACsYHx3|ZRFz"?vܔtzF;YLϰ,UQMy'IXl(#wz\`kO	,gJ[xe_&!l#Lɏ
]WsqkoL;i=?+&>iO	.	V1@<k6ۼm&TVS2]*=a L<kuO[f.nau"V2`PPJZڗN$P,I햀HФv\ź۩:;&l=z͢nj`<[_´3I؅U(CTz=otM1l[2ip߆r9\ m{tx9Gnvso[oje÷lsԾ]iZnhFO#(9r|g(hP@촆/ 0g̠/>j&r-F%뫔:*?!?)|W#C8!F>b^!v4 7Tّ\#xù%\@A+#olgL06{Xa/8Ě=wJ,g?X@բ\us vㅧ6m!@<Iu@^9vکjʆpcev
w6xGoݪ'jhQɹG5Z{^E7By%kpdC5HڒNRQ "BEapCtG3&YS%4<t1}nz[Trd5T1u7uxYeB?~\茼Cs]o-hW#*W
nxz"/p=ob
QȷܿJ9.Ht|lYnaZ@S-"<M.zu]@txKӱ}T9R?J֋Z+7٦PHc񊤢,SIg9΋7781ȉ67fQrp%3-&OXSofl@hYRm|Qs.MjQ
~N;wjKLRï;<׻>]PUV՚E+OwXߗCG>N?\1ȕ?F\*&Rf4A}>zQnGG|24O
EtKSR?PY}<<kf_kka^`"rsR9{Ԏk?PKK
  n  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131FieldElement.classV]pW֖vlI#;?v&DuܴICln'&mXKy'P6P-mi$
?p<thaaxx';Ǟ̹}s8[Q(i!ϨB_"/Ec2drNHNTic	7#\^pQ\-[GEsEwIB,+BU!WT<'Ʈ֢_Q|
_We^A
BGͼSOszjFwRf.wa< 0P
yc83iEIgΏ^7D0~XghtvAAk8nv[X1`GsuWiXQ}Z[ϥ]*Q4*\jPg.etǵ#
Zƌwtn܋3̱Stm=㒝)Z9k]bT숙/:'B([wLT[?iUʚsTQ(otWBQ4;}fh*9uG_V+ތȔn]3^mJwAaL K	c6]_ǻPA-GxEcMNFTㅢ1LiFf냢AC'R^
/WiUZ}v(1[rs|nv[f\n_ńhY+W5G\k^w475\]|I<5S):na&]|_ާa\Q
E6~7[npL0ɑ4#~57I\`e3thɣZ:7Kw~]
O==7xXwǮe*mhE4a#s2l43[zi=j_݀_LnC,p68@+#ݑ:/4"j|]D*^Ɨ]z%fӞ#ˣ/(ܳ

^!=.jI0ʸRZ%>lD;w~P5Tm뗜0L_	Cy:w"Anhڕ
%[$Qs\jp]m>I$AvIPw#bhFqF
*?|]Ԡpnb	_mW ZQ6ed'w2ʹvJq?';N%DʧBg-t]5 e(ҭMED݀xڅrJ{Qt\,U-jTYtm>Lz}NmVO#2yq"+4pZp6WlR([9-=k:6j4-IT$WQ1JcegvJC<Ez|#o]4>/;'w:jeUjrjogB|F}n
`X(z±Oc;\݋0i
6ŶfgX<s] f|?iIڎEĪ//D52кٺu^au>O飬=L"ڪH.rZi
ziO*]NJ*_f㽂*v5Noy>j`jcQ,Ax&T~6o{^Eu{||b>ߧt<pWrW
=Iu}-m:DuUtT1U|B>cU{'64~G:ijH'6`/÷1\
)<d.$ЎdR^=uyr+JEYIa%ҿaWMaͽS|}گRi^΃N@PK!D    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Point.classWip[W$I򍝵&-'n6S+!q'iqBsֶ-K[-taqhδe7%2)aءle~@000wޓ;'%{ιg
Ux6X'M^HuBnMl0ni7J_M"nnK b LIn`n]H "G;Nq-\LH$uB4V #dPĤ"m2!
(x$Gٵ
6{ZSx,Zc+޲#g͢3i
%YH
)x:R	Ktcrڔҽ!ji5
ޛB}Cl[RIz(cB3sl*\I^idk-C9e&-
kO,K@O*[IY+eY
[3тPX~1slj%CvfYLL*qaQh7=8b^!~QxxX#02x? NxTceD'D$2!|X+\!a'41<-:slx7^׷gX<9-.]##Vc(Ⱦ.RMlT)vv{l a#Jn#tL9q

;|4'+
2\~f)LB\dMWy{G޻ZruOleYތO[D&OCQZ1hQ2{s4];
熲!Y[Wgrvq)aSL~٬bN~2 }yKe{Spܾŭ!ێö=Mٳ:
sg]%!36.$t0NSS\QX+q);(,#W?6ELB}<4 i	my(=p]S?*u%O#=p	x+w6p<^jU6PLGi)<8IĶmCà0EdJ̽\X#@p)TDS1hcUPpUBR핦Ei3Z
Jl
պ}e.BX_{IP*H
푦EܨK'1>FW.=^Z+tB
A5DF.d"5O`8^t5ӈXfB!,Zk.Mᇚ_yaȈjҚcKKGmb3vnt ]hW}m(xbe/fm_P=gϭk{uR\Z9nIiTXXPƗa+?Zcm.Dv͸JgYY+b55^ŋfK)܌؀oa#^&HF~^OԿv>UwjR[]jFBĀZjǰĨڀV>r!>~5*C(UcO=8*TCu<1wwypcZ<Zp#W(9RnmK\9rPa#Cxffě׷0T4XS8J\ggB} l^ϢHO;H{B|v5>JXBC(Fωj+lDͼm^a(hBE>,>۶>]RbyuKm3`"h<΂vXsxy.J0vDo3ů^2[ wg:,@.̓g:9	|M| Yns<ʟ'^V~}=E7>'^n"i!LbS8|1
!^W5|_6
 +/~BZ'?U3UTRC98U{`52^
版KW,g;
7rl[Y%w]cyKm7=bo7~kw~OW1|>+7oX-'+~%wDs=?NNq%Ik4#mL/;oU)w;_#7BK3Ȏ<0~cAWY P<ېPK^BVb    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239K1Curve.classWWWMI(& ;
!ѰAi0h	K[[ڽ}}C=jE<9}?~w2 Ãss|oЌy Bǰa+#^ᬗα(#yuy-^p"8L1FIN(f%fgPpCK^$0˦*͋}I<BLUd8!꺬s(GÍ{"Й8.a[XSuCT1šL(
F{`_KN'*-Jn$he)	G91Iȳjtrp+ꔢ*"ŤnhA^㲔6yRSL
.&k2*f'8T9JӤ"%zjnNKzXӒ*r|Q7Yӹ
Q4 YVvKIz)10_K(r?'dW
 *v+1ՐƐ8/<ЙN0Y:gƬ0{$1[КGb\1I1 5Mч*bs(K;(,J3r\5Rj-چ|YweŹAa'y+$ɺ^]__ϡRFwI	+#q-°g]Xr|^
# 94n@0E5pWtS5\&s(|Vqj4ZۣpKk%m7#Mmfo	x7w%aiL!*SrӺ[=l}M
|	Vo}'
L^1x|)+vnЄn$EɈ6RiϬ*`b.dg
vhCO-Rg+ep)$*QL20)iH*ub$Du:NX7u]_luRcdVTM/4qJmҸH߷oQd/ZVepz5{E.oj#).E| is-Mb|c1c,ã,ǹiv2:' ]Ci](K8s9UpveU] nEop`'ډv
U8F2\p/x޽ĕ7%<¶/c{;2vvQxr'z nePNt/ۇFT"LՄҨ*	9C^E
kJ=&F%{~0E&7
ww̓``W:Ҭ5b+KZb;z6[4U#DY:YEh
J3w.SWi3QSK8n
iA`	ԭ,S1bITX؝pe"27h:/jsdnrh8#ړD#x;S&]\hHx|Y|?<w?%ioq[";)//4vKw<@Yz%}ju**J+')O)Q_'@
3^`{p(QBQc;߁
fr[kwPgf
W輏`!ZHpL')X9Q2*H9<PK,<    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1FieldElement.classVsZi%yN,N F@bclBSJ${weP-ڙ>/ӆ>M3mӿSbqmϹ{w7 8xwa:^݌Q<GOff.qN3B>-伐Qֳ̋>#)>+RRRb	(e\ƢKQ8qTPfMÒIEsVL!;nU*[	^^V5W#^vuV왶LR9k7ΘKs()|^ֈ]Z@흭R۷<w_۰`rzl)͘-rvwjyԬ}t-gzZ4=߱fbvr"PtUOXa<,Ԣ^fRw|{Y%X^%ّU6}xuӕ]]\޲k\7M8[Xi.BcEZ-ZS<U|bF7xDtFFc::XQ0a)8t94yh-v`ԭAm:viblkI᲎U\1	EK::|QQ|IF2)xcuϯUǗŉ9|EǘU9>"䤐W𪎯:N㘆d}خdN5:o7a{3>o>jr',Jj VUXosmfB~KOs_zѭU6gneYM'.)V=j2P	F!
yc@n:Xj_+Ajۻfΰye-KN뚫^SP{AZd^1[/YrI{q3??>|eg1w~N$i! M(/}]oaW݀-EnB{*@ψH}K;i#n4jH!ʹfpnxW	pw+ qD7UՖfq<L;D!ڻ#ȶhO5н	I$o8FץoE'ҡvoCS߅Z[USo4M]='Q|׷|4Ԕ>В*xk	ԂIx%<{?K[=ɞdƛ	iU?	D
4!@c;q3D3ON.iHϒ:d mܑIu 
EA
bm3S	sr=-	b.!<rOmqG'UB\!ċ߆P^]7o!ﾆ8*©A!##4L&<HfyΩ#c#&FraC
aa3&2q+4#B&\\M\(MѴ	#X 1#WG6b\_N!
v훬p}{KdgUΙklϷX)?x?aE:)Pϱ__%.k_Z#w
~FjP>uttb?G$>0MAX]Kk֤~#Ƭx n04}FAʱ%93L` ΗNernF-u^8Gt~:=~~e̯ PKe  
  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239K1Curve$1.classUoTnbim.XVۜ43ek1EҖAJ^3מb{A	$$^*<lҐ(@@7&AdcXi{=;_g cx8
t:(dڧ^@45hkJO@T:Zr@baZ ֜wP`tƯK~ó߳ tj5SڦBV}qxkCF}MNp9g㠲0P2q<9X]Mڊ5jI#O)/74*'*_/$}в/ZWbAǼU
el-`ߨz֚E6Sʰ/k11Oi_duta\ǋ88N!.OrUza묎	Lx	k;$W<Oˮ2xsKAXp<'U὇8ڬEٲkj#e8u9gc%tWi}jCͶX-A"vh~V ޵ÛFmf(dKsEӅQ+"`oplB&-(q^%pai|2U#qgpetA3,)ɒn}]YΞvc<,sim#\IdNɥC?Ϝpv=-u]ITn[HeDh)>$}L
IU|y9umf/Sh8ƿ ?qX1}	&Lj_VSk-rS&Y9D1anW8Q>ocGfQ`'']R-x#fTd:~@n[pCO9<O0czOPK*    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R2Curve$1.classUoUnX,Hn;ZeSmڂ,ibJbkwe:CffKDM4hFy0h`o)hfvAHmsssν_?
`/v'd4J@.<
i(?g1
A:-)XZ=sk4WfJ۴A譚ժ/F.ɺ[_8?*y-Ѿ+KҿĨȰZF-xJ罺ߞjhٗg+Cc:m_Zriډtk<[Pv=j
k")vʰ-101=k`2P1n96pwʳu,O9rUa댁	Lxk;$`T\We
<KA[v8U*
i֢l5Y^x<[TN
w{ߺjYiTWi}GF56mٶx|y\.ubMfԶ{ǆ;GoQ2dǒ-O@ K

$
H6y5J-p)hV-6ӷ9>#-?Bs,dIIl^ɪ*˙גT6H1d UEifSm]rP߄v1N'x~H%|y	^gu-fO)t_֟8{K_	S&U,׭Z#*T#&I{N;cV 3W8Q>ocbQ`'']R-x#fTW6d6:~BV[㆞xRaz1D-(
PK@%
q    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Curve$1.classUQoTnǩm]XVXN&mft)jHm75hmcvZF@<l]M#&A%{9wιί?.ghySCCC*Tk8RUPMgБ	DOH"
a#㳞V^Ze#M3lUZA5պMTF-]N۵w'@m*z+Dthv|,5ԒF>x޵u3F-+wֵ9zPE5hǸj/PK\|KʾY>6Mv-lwmN
oEYq/8:!tI'qJ`r_2Ȧt(ySm/਀^s]W3d PzaKAV8]i
owjZ
Y7Ws/ݘ{&T<R͍sjKL˒/P{~KL~s\{v;==6JfXrׇ#Q+"D-$Hݥ](4%e|2*
w\5Cټed%(m,[tl6Ƌ9TN]*7o]~jf1o⇝6SMʏ6w0C*&KO!hŧxGK[M{ /W8 pTG8'c	V	X4LCitXFtb6",HDyJ#2F~̶~|_ט~H!Æv!}!,&)V<62,RG=hwz-P^c19ARӸPK4Y d{    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R2Curve.classWWWMI¨(K
jC@.MBR 5Ra`4dbW[ٽ}cۗ>sVSڞӷG}d@%9~\tkCTxǰg7Fxge̍Wzލlw1%`Ĕ&y^`ٞb,PǜWqR*ɴI'#Ppx_"=302KsR55g1*fи8T<҉&9
ht`B˫Ң$挬,"g'YyVV^nERTXбl G_ӲTpyZSL#Ly#Mv(<q"KT9ik.Ҕ"5ܜ铊*rz1gȳǗj>GqIt8gye<bZ&(xۧtm6LTCuQ%q^,x|CoIPE.2HpmZ{ӂ%shSZRk_U(DV1I 3ȚUU,'1OZ9.(.J3rZ4r~5O|%OXJĹ`/<yrQ\)rh5oHYi-KrRaX+jά,u9{Zh_!,phzi3ͫZʡIaO0DB}D+
`4(^c^Ѝ7LDD<kt:bp"I:*H?`wW7wDd]۸.+oVA0-8>#PG)cDLIuB^d
RW,OˍDEHQ/-Ϯq6ρBTϠ=	
%UX6mDYQ0:<aKŘU*l+ӀC3Ek
)捤ܒ6Ew%`^oa>Udfx-GDqnCjەpMX6qrS"j/cJ݄}h0tlwuxAuޘў7}wKNZ +}v
?-ù|Ʊ exl	*s:v[B;b	rA&Z/A=i@{wy:DfG'a(+,k
yaIh14_U4*0`oTR<iVI90,{+$9سL2jqF8Mef[Z)
/
G,&:h,C˨+H=cFWh? ZgŇ"L4F7(?XѾ5JD!KOc
̯e=N{eU|8R__lq׺cz{ 
7\6jw{-
)&@4vH~6&xC쀛Gyo/wӕכt[Œ:JT߰?cgy(;?vHu=et+Z6PK.    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239FieldElement.classVo[gMڤVoI[,J,%nYƾqnzmi2:
@:|Ebi`B_|A?zvH K99o9؇+SB>s!|>?0Z CȔL39!./\Ap<+[[H)ecN焛nAB(KBO~q_WU<@Wt!`:Dc3tK#g{W*f
F͂.'
{B(iw̙1}ݫ_LNbY:^0\)3K1JQө4bPXO}WΈiXٴ֎erq6ըq*\rX.d2zɱ#r
[F(8{֌d`TƙXTtl=͗-ǜ2;fʥv1[յ'MV̚sTQ`tGٲni07!DVqxNAo,uiݚ]3^mZ/mNe
9æ,m,GY(QlG<r{^0UR91OFt#Ų1FLi-Ff[4hAR"Zћ,^5hʂ7wVbHefvW%/k^Ѱ1jx
:𦐷-&mq>S.9|DŃG(ClG5-ߑ%\T8, F#wqYèpi'8r'pC`eqHɥZP0!K/*$~`Z
NqjliQoJB'Mg({֛sSv1`ggFl\2;3>B=OGG̈u"N4z^S~[+&Qqy
fE
D|`YEѯ$YѡVizO)gvbsncZAJ`*ՓB7?v+*uA4|h%;t$.Z+h*XB?%	!@JE@nF
T*BصRU%=^[7ftrez'<)Gܓ:vRz/s]\b(3V=t1ҽ͵>(M%#o#}תɪw@SgZԮX<@z [=x~xm۬
bO|n6ĉįʥw	>Dظb6aJaO>6SӨi	m"QGU!Sn9g%׆鑵8h4Aށ?Do":jCUjpMgu 1>Qy GQm`Tu;%.F7y!)V]kg?gXy&Q$j%g[u!RWMZ-om>m>GCnY
"{4U	Vz9$hp	ܔLLu2e܎WRͽιM"υ__.,Kj|T~42{n:zth+LΫUMctkFZutcбE:O[nTKT}itr-5L8pO0iw"~oz	5)jz݋c"/,T/?-'??Yu.ii}}w]_T5r
_Nns|&ws?_PKܽ<    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571K1Curve.classW[WW&IQQ.J@mh $$@P(b0h	{m_PԊJյԗ}& ֪`9g}9rɟ|%8-)\8V@ot< 
>ŋnI<F(31r6>)@%M/HcM5]<LbRӔL,-bpHc-HW<yw`$+ŁKr5Ô4sPJg'P3HG<0ܫg&zVd0JpJ2')E3;8xUm\TsClr0A)EΩ<!_7[zUMN*i4M+5%Ф_WHE+1gTM2Ԝa*Sǟ;O~I|4mk.gBu)R6mu:*uU>^qB1-Gԫ3
>U'L0KҌCGA=yߜ4kÌ4h)߾uXDaI.rhɧ=hZ5Zq$M52OR{BdaU $yRIIJ_.e[s&$\!YIèmllPEvE
)=l-Y\EU(qC9'
"⚈q7DJWA665'O(jkiH8
:ۺDs(ښH=X"ږ[c!&{"-F}bCca&)'<Z7keV0]">bg">"ImIkO_EW9jI6MtkV4[˵pf~5q7
jTi(YSMM.1*[qLaӔQe0vJKD-juQpf|-S>N	Ykf;[o>nԨr;/ueMi6'-OEmlيp皥ABtuűn5tt
bi怟ح4not
6<[no g` -=O {1һ@!6	6-`<JQL_-PGˡ^xVE}'*
!F%O6j7Ό.dhe%
FGitXG_f(qs޳7f夭rurҾ=_{64U^0Qj6rigvQ1T|Q25p[YѨoh3Q/*QnsT۶ɇ"i97h/u79H4.wZ-љH4,q)Dq|%ǖq;lXD#iS |4^.M'):vF<_W;M;*a]y[[}e-5t/`\&Q~^JNY~4?VV(QBQ^~?#?[IWߪׯ3d{)?S? >I	Ns!DPK2Yq    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R1Curve$1.classU]oE=cl[C4
d&qh>*+%U$Jd⥛ʻNE@!>KDH? )Tpv֢!ν;ss3_?`/tǣD4L@.<
i(c0g0
a5w' ][h-R 0-u'+7l+]iZaݔi7_55i_,.*ƚIst~^@Do\suI6.0+29ר%sy\߿ܼ"p<W?:Tx!}yֺ;ԑaZ>歆@ݐV(ck\nav7]
[s"=zZfʳ]?pYe#F1f1<n`؇ux
1]#)WJ/|10IρU}MKFdZA Gz9
*3qRe;[Xv]֬C_-wY'b}újYa4OP<>CZml[<><@Em:1ޖv}ؽcÝAӣ7(DPcɖʧ!VD
D
$P%&ǃ8$e4GV[oHҽu\$j6z/gw̱kkr*nbM]2i*Ԣy@{)֯늶RU(nBxS\'uj|? "><KrMSҺ:/HOT]A_	&U׫z#,T#&I}{NG >cY//q_L}7bbQ;`'']Rmx#eTW6d~@vGᆾSxRaQzOPK&=V    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Curve.classWWW=08j@A]$$mZ4n0@j	.ݭMSkpjsQ73,'J$< N>ʱ7DqP!pa^qDx1$8#{1{ŋޫ(	}>'dDT ;!B餈'aiV)9Nq8i>:YY1HIMSXFf,{	yJNx0Kj:]Ux?4ODN\aeLײLNu&%kd"D7>t=1srZfFJ0KH<NIfim4-K)O4Lm_O[Jwp\>2IkjonbX5JFXΘI%
3uc$ɦ:5	O6&\R-O:VcI@KaJQ-	U>^yخR<+b/[zٌۣwlY.mIcNhpLVՔ<\(hH&ZK26O,^"#NPZϓA{Y[eȄ(+ևB!-|qTL9CQiњtRn_Æ;hЂ?:9	Mhf(]18o"$WW%D^'
іx9mvD#H5Ad	op@(;"Ds$	7Ac88V	at,d}HIg|"Sp^{a3	_J
9咄|5_eFo$|%^iȊx]<ٴf(#zɂ]}QM73ә)T6lQOSV(+ddm,ȉXW`J?9Z%m1gfPEI&LE(G%WGit(3f@(A
jNw*ׇb
W|PO-iÐO{e2n(>IL&=s8f;dv2.ӠSZ)kC]f[^bV_($,]]}qOZ7yYZlV0lw]iN5⠒A*zG'm4R;p c3(w]曅8!Mcq"jvMƽqeXL'Nm$GQWzj@a;;؄CxK$;n@*k]w TXܰhkW\Wq
6M$|vXӎ!<[fɻ	|˝.:Ǽڈg#%
T
4Π:_w7fD_Y^5nHZqGn%G`KR#D'|	GG`w3qڄ
2j\_!oV{cݟ]՞YԜ+pP	@@3
Wi#}m
Cq
:>֭EMW@xZc!߃ݎM$lub#Bt¢<Ov/wi"$/yٿ(`TI>>'j;Q.xpō]f(Y2
{IF{-RhҨ'ݾ PK(Qר  ,  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Point.classW{pTWMyn	Pd<%[Zi$P(tI6Yoj_kiVmgԴ2IlZU;U:>1:9c߽HPev;u~ܼ_Ok4X넴Y# qV?-nq̵	 F6p6iDdK [qmB:e+E]vpQ!=bYԽC232ۈ]RIBAC
x}5듩dv(v MgV`43`57gS{릳h[u	k\aVOsR(Z6d{TG'Ag/%u_U^+
(̯qS2NwWe'sl(\A;j)i̾xkM,u@ʲ:"О̦bVK\݊mZҸt;ѽQ
xe
K/YS,$d0A^!j0q Maƫ
9yLawJwQo☐HCH8n<h!<lℐ> $38>.	0TXx!ar%6pxRSqd[>-y
uM=L*˴M֡!+՜Ӳ\.&6\ݭDdi#,5')mM>;sxuONBMmFx_jPg~ A.Y!xwkZK{*aC4fX"*6yjje7YWAFIFS6j[[
f,̩OwY$Ss^6+?i<$3IqX/efc2>&ێ18#i?1W9*@/ex{Эv:bNOͽ|GaŐ?<젰|x6\WhE\~ \0Ph{,y,@?bQʨrCq,~N1xGλzm)
v&ZAkcyu#u	>ϚG!	O#58pxhX(L"a

kԹGQ,o%8J#BL!Ea(igѨHPtp:sAH#/	=$dqy0JI푡YRRmK	^
-%HeP̈́"PiWn"Տbkei?E
Id3RIDW]4ZWC̕r0^٩0;u֬I
.XiۄfΌ=ҏсvm_&U內hP%VbVj$vuU{Z^k=CWaKZKLvlv1=z-m!v]dogؿlA}^x᥹ObM8n7ц7mlЁ_b'l?ѥЭ]U`UK-GZ/-أnAJ݆ʛs48Nuwaܭ=%ܧzwpL
ջx@
<8WN_x~Ȁ@/_,V8{Rg΢a<pSSM;Q*x8J\s'sgB> FϦ~t(
1n}/NX||<'*ltk41s"kQ	3Kxl =5{uN /(d
 9"8rJ]3a1މY*A[]#;@NPG)nӼA>m|+{<@}yww`C_n쩣
_ᫌ:#|^_Ǘ
J}[x?w|+R!j	~nďFXuՇ]:_؈?JoȑK?r"S|{dn+'nڑn53l݅%~͋~G1/rSc忇;=WPU\-eB$vP󇧤-ӝERvh\|%Nl]σVNE)]dV^Gʷc6jbKM# PK]4k    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233K1Curve$1.classUoUv;jY@PviViMI]ĔNt̖ȋ	1D_$
F R	/Ha#usϙ{=9ίQفNp2F
YR|ӐOAC
` L
Uu+ [`-:R 6?%5wP`dګ/^õ?-?pbUSڦoV}nP83TjW8OZ)8(OeDDkm,&FmYejq#K	.4.
7g,jn@|{*e_.F59.iץZ0h'~SQZiVYL5wyFUoICAFu<u^х15GqL`l<]Ҥ#WNǄ&CzueX/}gzy{L6(YvUVS1,{	QCzݾn]2g`x(l*OlxhTٶ)˶3vџmz}Ϻj;694=zx輍tؽ %8li|jyĠPm@l @<	pLPW8ġ)Y5wmW9-ߐDsxQLuf+Rcx1Ij(3&
%\0$>l?sٵa\S7x S|FS{Կ[s|5oM([^BCpAZ"bL#~טenV[d>2QLPs#ؿ>oC]gי8Q>#bQ`>''^R-xSv3}H2OyV[Ay	/S*X/擿PKog    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R1Curve$1.classUoTnbǩm.XVے4HZ~)TmT	uuKړtbH 	`!Q:o)L{9wι׿ \q2NEir:(|PԡaPSSðmr
@WZˎH,z#Usk4׬nJ۴A譙՚/JJ.'6gL~A@x+Dt`ڲ/0j25QKğr<r\5ӕ^
o_-s֕ءs`ݶ/PƯ^-5"=zZfڵ/hs2{+F
a#x>7p =(k0pO8{H幆tV&0u$<Vel5/	Uו~ű@CrNWf㤶6G[Xv]֬W_-wY;}'bo]5筰4rF UcѡQs-ۖ0Pk;ENu|_p:vpvMc6Jf2QlXAdBy0	Q8Dap8/pcxai|2U#qMh7E܆:g>YVe5ojJĵw&Rr:Vo`M_2i*y(̩Kf7_7eCrPB%bDCL	p6K
}?/#5OK>(^JCpAZ"`L]~3)]~j]9bL5b.dǰ}
Sy%ԧu,j;$K
o𒔽*~ґ,RFoun苡<')f%j:ף|7PK}8*    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Curve.classWWW=08@AE@QCPCȦU"qCTa'\[ťۇzNpjsQ73"'J$<}prs߻w hP}/S	Ⰸ#8*>/|T!|Lr|B@JD)p#"4>Z8	/LpʘS8Y|x/	xAkjDRr:I`{r(j2&]pӞP_G4ֶso_{OGs#6e/2|RL[,"@onQ䴙Rm{FbI55M#fYoRLjIÆŔLGi&T6KOZ
7qg\>2LjjWf_5)JJHE&H;%
3uc ɦ86"$LY9SuTs7	-Dj&4lm焝y=)WcYKϚ1'gt)}
:T,>!>-=a5!~" 9!:񜆦)lsYGoa/"$csּQ;3)2!ʊuuuk5y&%天3ƒGJ|OJM	uIV%QP\#1u"^ޒІv	o65646GB؆H86D;%k9uNklh77B
|HGX!9/ӏkD>	㜀/$\%	q.U/%||#
r5	[55IK>)Ӧ!+flrb,.i*Erzvy
2Y^sLPq4i*D*_&L#Pz8;IP֚v*xo;(5IX?&O%avX>HgG%ן4;Umf84B?a|0b6wvm`lRf;DG8sdlKgΘ*4VDJJPx=~{m!$1zjU
	J_WwWUՍ2^<hkAZSe808~BG;p c(ǽ7	qsByӈ6qƱ8G/d0$e(r@5T*4Ӹ++qc5!o"zg%74P߂VKފ-nXּ
7(!l<VPD'xѷ̒w-P[
S λxF,xsH{(@Yf_IRjYe-#PMT7#nK%a#Q@fMPLج?°g7X(ױvYp,-?Qz\eI/tsG'P^@ͩcZAߔ!2xha=F##j|x	s#+MjgIG@]pvh\$^"5|LWH*_[%*v3Dm$*oKoamܿcu51(xeNIf{,%PÁҬv+nPKuN    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1FieldElement.classVWU
	LH-B[HqiHBSb*(*Z$	LTӪGXWrq&ߝ1 ޻]޽w_?`^
Íhaٍ8a0¨܌q7
9&!ǅ0!Z'T+)}I	I1hNabJũ0rW1@SA>'r70I3M$4P)R]먂|PvشB.e8cz"gO֧@D#IYLwp>{l=bShgހ4/hMHW-
sYYlbsL;[)5j)y(z&`,2wT`ҺYFɌN-#gK2L"G-R=ns39eYS`Yݓ;S٘P<8kTiTHjH3=4sG'mlF}qi؁{5\40sRҲd4x:mL{fVucV
F-3q2tT$FTqZhZB{H8a'ѰKȣxLn<`ͿQ4<
}z\嶆8ѭF<W7	yZ7p{U 달j%`?K*^2^_^U{tUKi}<hI6kd
̬])hLsӬ23"(Cv5_|*3^˲̰&Ĉ`WGӂ2GA)67=F.,vK=;U1 I[u3DsnIQguAN7qae9JeU{391ugJqm.CQ.VǾF{-
PƊ}Ư|(i@N+-mDM:*?ZhvDPjb7ZDk[Aݲfq׌UNNڻܝH:P[4VATZYSEE~5*G]S؍k\sqIteRcoYg0Hop/'qXf."Z.x|͕=d{oRYiG*b@Ī@04ۻgZk93J1:s778&tHe킴!	'HXfjcLM3e۷,ĦZ3pۿ,ĆZs8Cl坄SyhP(	HY.;N֭Mʛʛʛc$a`*pCx-9^yCu784dz~i>>}>?G1	)~k!֩8\ۧ&i}R1Q,)b<
C`hg_/kķt
rІh3-djj(bKօ"|	ێ[(cۿA`j:Ťm,fJu2`?PK۞C  L
  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R1Curve$1.classU]oE=cٶmiJ mmM&|TV*9JBH(f3ĦʻNE@!>KDH? )Tpv֢!ν;ss3_?`/tǣD44`"k :
<ht8%n+=QB{ɕi-Ճab-MyñЕ֪,XN3U+ZbiBl	{y3㠲0P2훩{r$[Vר%9\߿ܼ"p<[=:T_BS
m}%v#|
n!P4įQ
GG({f5f͔~PVfeXuŘ=kb&zP1nY6qwsu.OrUza댉	Lxk_0+'e=٥ lN8U.۩݇8ܪEvjj&RvRپ'p87;UkyR-\Qi65j[v ]{[^/W6c
whM>4&od:u/@%[+*@Z	(#H7oB8jP{瓔Ѭ[oq|ۦ!.JY>sɒ,xMQ{QǮ;%KLJB&uɢA2dRϮķ[+ںJV0	6%bDCL	p֩G
?ċ/c5OK>([̞[8¿ ?qPw1}	&OT|_VSkmrSY9D1;a>g`޿	|I܈aBbEyDtI^QO_D*;}
}14HzOPK|    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Point.classWkl\Gf_wێ=4&S'&-8ݺiӄ&MWߥmH)P
u"`TE% T! HT!;M@3gk|gfƻ/
`->ob:l2it	mb?nrKn!*6q!7q;vCNh.JBnq#G$
D21[^ňŢX$_wUmLg҅7o
eT2_ƒ6;Y7eѝGF1;SrÖ
찭P%ǆ\rh/_RCv!QX2l
B3sm(\YG7yY2YTS\Èn-Hζc6;/Yٗ-RvwZNm_پjJg'%-\6!VgNbk˓By!Ek,GqLB w㘅{$BQ<l!ʨGqq		IFQ<!OgdOY>
˯-㔐gd,<dHnDrۼc(_%Sܭ's|^E)(`q]ػ3=0fxf:ߓ+QVAs.0A/S=n+#
WXR|Ǹd+v{s5Ǻ璇۶&D6r6)"rEt~[ƾsr`b2GoygGNXq>0*=q8䀋N.;fE9 a)[Έü9{WsVf/mei3ېk`Ub6ܻq4]=r1"ކ+ axA}"x)oWXIjGZ*cP/:0ߥ>ՈQWcBŶTlSM\p
9<6\@o-qI&b0ID&HiD_mDTҿJX#DpiT'i$B,!eژDqi%*tHЮD6ӕӘU:FbN>,!QBBU45/`.KXHD:FWE/j]k4(uҡDӮiEj	>OyF%h`Z7H^dW4MJEXl
Zi͜$qivzOwG78-ZmzE}7֕AX9XU]ggxMV|4%-@K"y!XB^G-Gb+pb7@&vS8d	ެyK'	OYtE܌Ӹa3^G/2/
;L;vmRA*VG-DR-j`ڈwͭȩPP;PT{pXpDܫ>uq<C%<u7q\pF<[~#9
~
.rsXQsm.83h#oV_R
`C(m@Rޙs-^K	}ơU~@pj*0tHv.,hG@
s%":DʐӸ1	`Rle,!Ў2h+6\u\"byBmy׭wfIů̙d#^<~Ny}q5R2qՖWFe}3+(_Ba\/q;g-}X:oKq'aASc^{Fy_e ?Y-?cJ~j+*j5~Cj1o͆1t+%3Ch	Z]\=W$kTq*5-b8/;(3J^B(`q
e2;HlְNoqs:U1v)fw.P.pGhn췹澿CEcAd^qV1PK'L  D  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R2Curve.classW[WW\&QQ65 ɐ %H00fdbV{om_PתZWiVRd@YY}ٗO? 
jxǐNdg)Fx2l|̓l<Bb%c̄y(^4bb
j5M/xqy6y:jG4Rд1CP\o*8?|Nr26V0%EAָ9l}(H3sg׍^9Y*y%0-SEĴSyeZUP5՜]]L.L}:P׬"<!&>)
McX+uM,M|핌PP
 1jd
2M2g/YS/fUIŴU(M伍>T'3L*4+V|Qe(
3$]<aַf5+kϡ5XCa,gS$Tcyռb$5'HZ6TMV<11lJ%yJJJ_,.ɠK&d2\G,e$J9󵯫yYhJZen]9.i#~qCx$/>uO-H*uvLGCtS:H2cN)L6
h\;#Q1JC]p;,|	ŻcD8	FwqU{&:w^f_D&#HǸ!Tg\Ak1_rxa+_3W{Z%
!f:Lj#5T	>/Ck*Grcࢩ&SS2
cej
fMCn{A^&M&2Ij[Og~Jɍ5&__j(OP,tYdUzYuIYzZ,r(U0Kɤ+3s(uh_~6{᜽
\T{HV)e}5tlsv߄tӻ4notD
[
Pq,_3Ӕ9xz{ܰm*Q::{
i!A-mD
ׄdN3D0]rf	Daݴfg<wkYS|6:Icӿ']oiIow,h NrTU% g;G7Vd#>r"sh*7$ZePcycy\EK-F\'-%RD-l߅G(-QnUMMDkИ#*.k\ƹqg>sdev
PMh{5[A#vzQϟ4yah&W>1u_ؕ77r^'4)<EJYdh>Hל˪z8:!pC1;"qAUydIUJ}*ؓs伃J/]&=a=@VtVPK=    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R1Curve.classW[WW\&Q./@mh@jFZq
3t2W{Է/}kU]]oG}g2 FYY}ٗO? t#i72Q7H23.
κ#&9eW8@)a%bĄynbucJ)M/q	i6硺RGPUYLFimr 6F3Cc$.aGLS3b:+'ʇ2}xbx`C>Ҳ,#-Ec'KX\iy^V^.EQTXZLfmޗפ,<)&:Ӧe;UO8&[Jk4i2DLvaAӍLLiE
91yZǓh=G~It锸`"ʆŤrE6m"|TM<+<CE1\dϨdzâh颁
Zw`s((,L{JׅJIm*W@RiS2cj ɀ51ġ>(IqFҴK<a΄DX,%IdZ~?vOj񈔶jɝԲ$fkF͙uq.O
8%6,
T-}@vDp8CxW,vXpo0mo
B6
:cHFBX$D:p@;9dP_w8v5qu>23s܆ 2G>
`ǧ>
:ho\KiE|\<i( e̚%xO
Grcଡ}*QS3ej2&
]خzAZTg}NDyQjNg~Jɍܵ:`V(P,4Xd-zYmIYz6q[v[KatSpJr$L]31Z8e-S[j/)cZ
Eºѽ62<tl;
xAuМqz](>}'w9Uؼk

^)n}}e+֙;61-o*캏Ty++Mqmh-ȼ:49a/{63M;Zf03]kN[r
QK=?jͰ@&]vnCYPCQ%U Δn!J=B }l5ԦVQoh/!7aPfz</)ph!F8|Gq̒hlwx$zA-h-#DrhSDc7p|y8nUsDxL(q9a8moGWڻh9xicܽq܏Zþα6-?8:AR."At,ypq	+\G1QԧB)K;hLySÔo>l3!{PKi@    PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113Field.class}W{l[g?7ƾiۺik7m$n-ZI%cssı
&6` RDl1/ 	ǐ~g{YYzsw^"!Z֩N:S&<S;d0`y4Ǣ	:0e9UHtzQp10`Bmo򁳊D} lzit^"a	sٵB2[Kf.%RKgӅ #sNTqy&3,\X97Z""o)`$/scD.yvFN^N^I:%q,]Jfgt'+~=7L!)IdUsBUxHx,![[e
j14NkU;Q
X	JfnF>!e:gj73b>Os4gli7p/GĠ}_.jzR-P̠q(Qc&]r `ՔRH->0HG0l@.T)\+djJܔ*rf+5dP.4Jc=NDaĩn
kD|	g*	!e1<(QW$6~[$jM]#✚ʭκ"g`־gdW̮]*..rD/7{u%]	+8?%ѣ- $+mjC	X%mI@U0}"[׃5'q*1ٖq/L!щ}\5k*z"؊USmՉoRk"Nۡv+8(joz2eomy+?sz;6ɹ}u?\뽸9jjoPWӆmo`6
壻/hl8jc톧iG(ԅ2C =Q7LqXx2tDZ5%<8X7ux\OQ;s7ulbŚPo}1> a2Iռsi
auqd& wLa)z=aG3tf1옣<=JW-	I`h7n6JmB1Tj4"TUTlkR!<5X:%&<6P~s3Ľly@	`GR˖
)VÖ۪ʻjuWdPq=	[zM_ےѠMMY-cjdLUu
+"W GqUNRh/ŷ4\U{Pe(:\E>XlP'K\:K.ׯǽQRzyM#t;QYCEUaH@h-Zŭ.<,~#X⸘uQ(p0Xz4צ]0ݥ!mv}XqsFA>`(Hߘ.E>j71:0iڗ/xիO <ժ˖bjJ'A210>Kc_] jVS:bZ{,-dx6+j)/d(ﱔYJИaJ
N<2$t@j;Bױ
X\xo* S
j7L@ZC䈾 }7o[
0^^B^F|w}>DߣO++H߫c68#-L
")m߃Ѱ25A<ajvP3kN025)FRYUbXޠaʕ~ϠۖI{1'M/ojiF勖i9Ӎ2!)gpxv%W޿
zh!#˟2C@&vB0?b/R%n?,>ۣDQJ{pPK/?  S
  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R1Point.classW}p\Uc<,it7l`4Bm(M[%]ڂQVg:e8NMUp?qDatGGDFMZ罷	`81=gp/x/>DB:}

BtHz*ۂXBnrQ~YIȀL7V$\"#0UFB)o	KۅYS.~ qL?(Ӥ")&>*xץ-
{s\):Jm<YfںJ}VHw7_زMݕ1zY4>lrN_\ڹ #f1ڭ2@.M	Y#
ERJC%8ѩY(s١tFjnAyht^^Oq:E9)9,ܚ+SfOZ|l5Sna*Ku&%5$*zj3U*smpnԐ2=Xa! }/E‐i8vIxP:~XGd
ByHG<}8cxD1<1<2OE'Iĥ1\(擩bOBhL͚ۘLP0y/U%/̱O,N~rWXHΪLtacvTPoM͹e Rޓ˯fw)kJM4`Kr9δP,;E{C~)G;ؗ(O0p4'7.dӁl.?̤R2O[~tQ؛y7b.[(&EFе[!+%lLm13O|n|KqA|n/?aHfyVvD)6ǽg{WdK.mB
8je<z+QAZ	rx"ϡbZڈP*;2-P|ּ אZ9	7sN̈zlGqS7<_/r'<Ob"Q_+][wO"%2o%.hb\7q?	vS	@i45Z5gTџ^s%&QKNIܧv=7@*vh4<1Z
´3z"\k=TgޔT|" OOVpZd|Ml"E@
/nu/:3BQ8!/VR&*aB<2֫-Wzjq91I,z1=Ǩ;2I4
y׈V.k_<k%VyIg4GEAoY2jgdKi?.=qATYm^cU"1`tLHKQǌDX#v`#>"
sX>3;]̕nmۙw0Yl;b'F-la46(Şg(c^|+βه}UY}8AտpD!a# UCxL*'UQ	V)uQO:Y|N=eRc|^/H
ͨc]sXkg(6qMxpiauff}5T#Rkߌ)_vTp5e%uef"-Dl\	hIiƥ*'jOsX^au_DV~'+Rz@J.(EU..P>SDAuEG֡Y4W
&ltM4m!=씑6KYWx||^|w[,o#wqx'YgCr~_@ӈs#<DJcMd
k
ARi\
(֋YQ~Ku'u'j"
/d$wu@V48oWa]Xس*̚y
-\!;+8WB;!jJ"Y([[ٚ#L4rEnV{wL= )gωd_c2khoy#ھCM[؍?%/?W|w?$n5o(VU*j
UJg4j.gS|/L[fگCܡf
_*mf>;%lJsǐڱkF
 |*!ePRhm+*ś
\"qQ]1w?PK:S    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163K1Point.classWl[WNs$v%fͶ>n&,m>nmW:&uح'-@C&M"1DJ
+!4	MCB14@<4),՚4*woLrx2FA \$]z?fq.""eJtF,\.-i+}"vINwn{bwc>.	'A$4+xץ2
GH&y<VppJvXkgљik}b
쀥PٝX~+חOS%w*$g2ܞMB?dgMR襣{{p𡜕ϧ=}jhKtB5X<$]HXCH.iu$p[+LIhB
mWíy6cm:H᠎{Eqa+ёquDnA,FDQq7*'pSx@񠈇D<6
qt|
4>NǣxLxBe67D6P>we2V=-"hژyU,88])dc
sTuwe[{\VoƄ^\spIRtUv4]{
3SmK*9u$%x`|aSl'E=8tE{ZL!#trKC\6dsÉt,37x$
읹9]6/$2PvK:362kmp0(llsKP\v`$|s$Ux2Eu	ߓtrIyh%MV=|M-Pd[!F@e4mEbaϣJ}j+n*4BY*\{Tz;Z2j)E'n
_ghC4<--l9\j3݆{ANI2eQ.`uE~Z0Ƶl1OC=?j7tNd\%1b4ثiCsgvT
 jfet*eNຄ \Br9V^_?w쟮G!F(55=PDe|MtjG@SL5^òb1թ)wOf1.*DStA6y&f%Ҩ2P"FaԎIj5FE~Č01\;4k1ԉ>=,4j<$YbTsESFmLF8GFDg̓^2C-/1,6gqBcYPF@Fl{S݌
u ord2fXpՍgr=.#{J׋Yy̐-LL&6fJ.܋y0}A^zyI	iU8oW8p[8>EZwxEN
R<ZTW;yم><,|Neyu_PN/zϪ/9
Wz/7U|~hXT26@Ұ|G+8:
eX]lR2ɫzˈjD?syI/j"$
s{0&T%,(0DWz"bgT75(L-&E)9nhRV>Bi6deP|2"`Ākb󋳐a_ԝ^,2¢ NLR=GRXWkL،13?`¿NxI%oD
~8"XPærv58K_ E.Pj~|pe;d6شx(xW.F%I3v:T8IR -%cm5&r'I;XʑeE%.J*T:tyY6dYm~`&?#_`ȯY"A~wȌGH{!DF3W|Ë;7	~\xWyO)*`'C/|qle:;\Wy)t3[sWRu]x{
wNtT%4U
AlQUD-G*$2fׂ#ktPK    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R2Curve.classW[WU\&i*^@
6IS5L46XMa`0	-~'ZJu@kZRxp9+k9{;r>1ފ.<Dq"/J3 NG9HSd O N=X
)6LiD7f 样lPayF{`XhųxT9E,TMK4$NBщ3|WE2IR<a
lPϜ"iF̚.JծhyŞhjD
V+ڼf1!Z|J%M/;G<9qh
m6?YT8AbTihґ"iU4iPlTyZ'T8E~)يz"jŒ~Qs0X|N-6YѳʢR_Ƈᦠ<U4sB9xbhl
h5o<6R\˴;DUU3*}	$EKf5:a9+>bcv$)VRfQ<W[͓P!MqdpG"eZF96UGԊ[KYT3jΩ,u9S@X|i31ġvBV11QHX"-%9!gE9HӱL4IɄ,L&NGh&cIE<Ǭ?/2^VTrP&'bRJr<JT.&B.]cd"&fe/5c?T6K\4JOr&O	xx	W6׽>қP9L
F񖀷w=:7?Ƭ~
|\1tNUmKQB6PUZ&G8"=eoz~{poz%*51yD@-eZcӒm*;QQc9jdY:7I):qDZd|COhd`=jP,LSYd:BM9O}I]RG;)$&+&Gc܅sR&cVH?'zdkg=؉{q!ӡO^vpӸE4B7@oo
<2ae]kh]A*ږ!2et;/3_Ǝh!Q ڍ6׃]OfI.̽3p]횥:|tf5ˑfvee5L{+y`qRZ:)	 "
.7,J#{l.0?L.yQ!GራO\/p`;5dAW_QtQZ.m4nrhvC բQLTZ˕t7
&_\JTހv御 8~j;~w_]3ÁUW_C%q﹅{SV۵d'	OEiiSxj(|A)|hGGG8:Q$?q#@1;vS-%uU'?c_Ò{,T"cooI PKe_  N  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233K1Point.classWkl\Wqqڗsyi&ˉy4NJz}lMvy5%mmR
)j$
5UpU)T*T~P*BA;{w8j)ޝ3g̜93=Wx&^Æ \(M:?&!eB|JȽB:d>.!2*papX-dw	_lwr{WD
DuY kRTaln/;IO&2(o-چsGit5de
7ذKݖ*;S{x$Ҕ	i[DrB]}t۲)Z(Bo[6WOo2ŗBN::ؕ8TN+e|>ҒFW}D?O@'Za@S8J҅ݖsk0Q03;KZ)-J.[e#	Y>Bv%Ov:Ѫc8($:@FGV!֑Y^rDdGqLq)w8t2<)a[*sBAGu|t<u</(,SEYI<iVhQ6D:2;2+זN3?F1]*00]IIN1T:rH;2-xS=V.3mANm8

Ci*;4|SK:9u$%3;GK(K|acl'M$ i1=ŕ;fi&JS',gRDB7tAe3B"S`\[7+:ULrV1MJ6LP*H-N %%r.Ք^ݒ}xNY.qQb>
??ioj
ͤCCmhs^,E]o0WmEZ(V_W5ͯ"#^[\4{ˉ{/@$u(gii"WttQTPYfqQfX FYY۸:	qc\Mn5pcqs8n.Kx:Ѹ^ᨺi!JB/BsD 1{7KI[s
D*PA?c'ndJ
wCL%.IP7EQlhb#q*ՌHMO1O^j2k3L
6fqT$0A'ZzYnx̊.J")p
2AYɩ0UFJԨtBb0q|fĈbN(ÈQ#JƨEjڶ
II5\oQ,3Ah2fɨ0oyj$#dDRLu3&Ѝ	J,0CFKRu#2\\_^yu>:v}c3^6}-.VVvI~&݃}؋<>^䍧#s9{97qWRcejc{,OyA3ſqJ
	5OxJiwxV9Շ/x^:8^Yu_U𢺈%So2!e"
i3UaՄڏ*#ȏcøbtub6]%rUpZW	I/SZaW=)"n8p!P	NI7ƥ"
OYAAn@<*m~M&$nhRhbs
 sfO^	=ݍ6H
8/>C/j@[kDD򿇹ܼ{&:CO$om<~6~wk#^<M= ilUik3(Oeu	3(hu$;Ly؏;](-fO;
8'
:KNm$
pݶX\>4N@;-.B{嵠Y9	6nugٰ3e
yiıGS|1d({<??`#}zrWtoſ>+㿈q+qL`y|I)Hû*ߨrIU#U*f]rbs#]kehVÇ~fu;tۗV[Qa|]αwKƔ:kZ&
ʀfïjQ"JhQw?rئk{_
IPKYQ  1  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283FieldElement.classVsW-i%y؎Fv>4MdɎRi8nڤMki#ݕJRGK4@QJ>vZa^xaa^YeG=f=w=ÿ!A0φ(|:"h@&,!La(1p+7%زuQ1/\pW*B(Y!_rMsb˵H,/)PԜ? t̛	>fuw:u̥3cg
YCa3og{R(p}۫ڸϟV9.(s
=eV
*
92
+;Rk
ԄkZԄyd;Mg
&;*+q-dȤC1kcF20*LƷr,\[ϸdgkYW
;bθ]q{[jCYsޔ*
卜
\*6swJM%!
t[Q֭kƫM6֐7l	8dib?aنCk㯽TaAQ#1ƦfgizщBC4	#3pZ
Hi:4|}
M[sE.duh3$2
v{eh&^pqi;x]u!<n3E-̦U-
lk8)RqSH~*~a'CI1
?xSðpȍ&+P,gGt>o8-T;
z7&]K*mhE2a#s+2Ϗl5
.؅ٵ[{i=jn/Fuk8c >v{TH^5}]D*^W=z%fӞ#+?,.ܳ
ءM^!=.UjI0ʸRZ%>lD;wP5TmW0L_	Cy:w"Anڕ%;$Ps\jQgw(\'];$FݍbD75*T~2!MvA᪉2"^@m\OQdʹvJGNvb19ˈ.O<y'izJaiQ]^\	5.dz	X8ʳU-jUX|!
G6W!|nmVqGg$}y#Dhҵml4*QsZ*{t/4iZFHVQ1JcegJ+C<Czr3o_4~/;'w^BK)ҁ2Ejr}j_gB>6F/Ă1X(z=1~Isi"+晫_9"?UDdmbIFMwthl]>1>QGI>Tfv	m^"M	J^+y
ꎅKjϥ*]ɥZ%/^=x;!=x-sxwbxO[-WjڲZ;
oނ:~7Mk:aBwL軔GN]H:Z>؆Cǖ)PEz*~ERG~s9P%}bSt+F'Tj?>I&C"H&n#XL
o X(eTw1>TWߘ5z?{үQY9~NT@PKH    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283R1Curve$1.classUoTnbǮm.XVے4ۦMZ~)TmT	uuKStbH 	`!Q:o)L{9wι׿ \q2NEi&r|P0aSKðQmv]	@WˮH,Z=ֲ;]ia͒4_U\=S0Rn6$OսzqPY-(e=9\[-ڪkԒ\߿ܼ"p2[=<t_BW
m}%v!|,
n!PƯQ
GG({d5nʹ~PVdXW4Ma#x>7q i=(i0qO8{H幺tW]&0u$L<Vel50+'e=Aذp<']ѽ8ڪEvjj*bvRٹ's87;Uk<zWi}EFͶְG<>4+pm׉^P].}iLFt:^
K4WT>=8P(6!6n"߂qLQop<#흏SFj{$nv1m]ms|%%YR3x)O\{g",]b!_h(}:z{v
PxS\'
j{|'<>KpMҺ6-4_֟8;pLj|_^SkmrSKY8D1;a>c?g޿)|)|<6?9j+^QO^؂mt VGᆾxRa1BzOPKK
    PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571Field.classXpՕ>GSew)NBHrIy$6IYed9!Im -PJ,,lQJ1%
-LN;v[i3S2)x~{~s=JDBg-ZC;-Ҁ ͥ C%dy-,xD# m=t\@	AE^Njƴ4=MCyR̸Oy@=?E9vNs/O/.~y;+/Tk8,Ǩ
.jRݠ2);[0qSp!9X؛̎=ww~o?FLa&4-ˤnA'#352p0JB$M;įP,$SwLmb؏	rXA2l4a4Nա|n`CBp:ϴi#@/
/fC]d*m3Gy,`d(]d׋EQ"NΐtgINI% v;tHJx"9渮%lчIR%!`pXbܙ]pGקRLvtVXb5\ʺmuFشtmL:۷L;@7M=C}>@#u(->A(}٤lrp|[6>"/
MRB&7b-ts>I
PRp[9H7t:@=n	Fs#TrMˌH⩑Bn >
3lnu	/@[$ %=)Y6kG㻒/Oj}L6|,`K[+0O;+8IW*74*fft>'X'1pnM9A\.Ĺ瓣b:S=Be>oɗpP֡
ǐ&qdE48,FΨ7npddp!yjSwEǆpZʭXZ6YOs
NLk<k!CꂮG-"o
iEZ; UW4;VGIMUg%1}8L
&!ĖH]-QZ.2:ejUGhQL#-aP:.>LEs-]O\< K=]F\)
fZ◻+ì?cV`r}6p*%nM$j'hm6%0˼kFn",P
{+lwWHYZV.ߟi @[/7}n4f=2EWfh̸~ :<K)b%NhKFT	.FCw=n^v
0<@ ݰZHnDDmn>Io
ޞ߅|uU5;leL_he,T9_}MڲX5}lE*K9sHԋpt 4w"9.<0v6(c(}^*I/?
z =H_Uz^
z.
V-ޱ"6|W$
zTdʝ}{Lx-.Bu		=ig ,@t~W4ˠaWW6k/ Eu@܊P|몦G֨W(1oh6ZՐ,E'Y?V݂Ή	QwB鿯)?V3E+^D}V+
z<jwMѿAٸqYi⤈Ksp"?>bWԆ6=U}ltC[bl:f<o8rhptMV3dsL`E3'l'M \!
̰mVT54(Xb%tP
shxtD$6TE?c~SDg8]	r9'l?_s
GoGoSc𧪪&ӭhWDjl7AXFj*v]pY(5x&믨~Q=7WQk)DUUZf:r|eia}Ռ#
'͢o7ՍLLjoG]aMh'@-
U-*nR|GT&*}q_5}!G~C>rb@ĴS's|#9
뉛2\QU4#jP 8RF8̬76"toENAќZ55l1Opnw\#^A\
Y 
B⹴B^Pël㢐ő⮞!8$NsJ=W:דHNN$Qm!!U<04-?RcSԈ97똂sSjLOVH\+ug@l8b:#Fi_4RQ	8#v\eqJC*C"QQ^̉VIUMUAs	Yl*(L241(ӥMLwdS^3QӥɠgJ=41gH=Óir&Źkhbq)%&15i{Fڮ#]C%Q0%YWwq=l+]rk\,"yD{{_p"pK{ \%Up"rI5ZTxچmĦbAJڮ}$iqtŎv#۞efqQ%(ՍB(&x)*k.e㴕S/y%=ƫ%-+ni^:a΋y-/ ]F7q7o䣼-|kvhw˷Fu|Oq.|ßT,]i^e5'|P>N+!ܯ|3?U5Pk9!u4<Rc9u|q>۶jCM;^-*Sԩ\TՑcFH75?djvo?.voNj<.bEݓ_*U>p[eϺ3x)')Il}MmSAJCiq=Ӑ?N߀?!%jD@/tsڇژNDmLhpΰ	Sф`zAmO62;x"8.B`U}
24na3T%4Ö
cmdg/*Pƻ~-Wn
[}=B/󵐎a`"!85Q݃WxC9"g(|i@"Ki_5z_'[<-z;NdW&øxC*7r޶^.^etgQlT%'%F{x!kzGCHshih/D1<PW$zlV
mר~Wt?PK    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Curve.classWWW=08,6m ajM`"8:}߫]\}UNm{zN?ꗶ͌ȉ%Nrrn}͟V|+` x7"xT!>raC~<&ǰHģU?Fyc|4.`i'QGI: MD<	O,qʴ8O)x
xAJf%ղI'i%<XxRqbJmM{#=)K2,
=k)5dr0)a(%K$}5Փ2cOSq926N2,.沖10FP?	60xecTcXֵٛfTF2DՌkrΜI}6%2L++9KKZ$	&.)KQS\+qzI"@KaJl	c1y!onaB55rƊa:d%3t]eKrqmKr>7:ˊ:10nBd
 4SGɅKdHΤ%<ə]\Ljl}SS`CQiC͸i*j4Ǩl>픻aRSB%(/2D?:	lg(\c&DN𒄗
%IC'֖h5&';=-=-5ki5574'ZDG$lcH5*MwX,.bw쿇EX\>!>1ND§8+>x꛹$|/|)<.pE	+
hSxFVbudRdNp*RNG5YtsJgR4	*Q,3RW+(x񮆡n*P7(i9c**O2a(8b.Z51F{`OŘ!0z5}ܚ` ZD	(|
\6BXԆ)ePTc*\ 8Lҟ{tv s\"e\WSAq$R eͱ:9Ŋ%PHY{⨣;xn^TB؊m`u9J+ԶJi<,
EM59Xv$X@\V9sX3o?(H֣WzjCHա]؄،CKDwHko|p?kv].w7%Waʼ=qF	*	6b%#؉\}ly/o]rֺq^=wQudYT!_djŽ]fUVګ|-w^rbmD	q%j\}kYS%Moi+	B%l\_!tױwT]zOt5gJ}6}7P;b۴6d1
#Q
:~h֭E?X	r2:F\#$r5n&[vBSB,=GԾ?OH*?yA@	|}<<Qg{2Ʈ>U2$RN6|)4pGiT	PKVӹ  ,  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233FieldElement.classVoW1;Nu^v&u4qvS{j<ƻ8pffЦ-AZJȇ QǢP@H!/H!!$;㵳#[tg9O Õtw	!_P_@xF!dBH^d)S(\Ip<+[K1#s
7'I!_U!O	yZyqxN
Y
)2KsXA46<詢Lt1uQrPa,Jqܰ%M=3O{Pɉ@1w5%Õ1>eXea;GMӜA[b]+BdpLEjm[DR>5Xf)5j>Y&s9cᲕO+\VQ5cdSQ4J5#q&b9+㎥gJ1sj1KUUqujӢ'
S(X2#}[dZ>w=QT)'+Sף.<&x׌W!mA4cX42~ؘ*t,e#<{[{ [ز8>>ed=;0Dӓn+V2ٱ^%4t!ix}
v-M
B~p6kLW;1*FCfclu`Be
E
{SW-
u
oyfҖWp`g+S.l+Z<ٻ5܇K=pT[bm^%h8 jHi<];Kk,;zL.ҥa
t6l
T|q|_AZ8q56޴k[iJRMg(ɺכsV`jό<F+sZ{1>1"p)3#O`"X598눂ӭ?+S$Zh/~U'ɒ*{N{8˷oӞKpۧU,}ή4:_)T!E|	CdoЖG;hk?cOn xbG$IoC7 FnF7
T4*Bص&A᪉^L-E#ڹ]q#
vRzzs\b(V;t1Ѝn{k(M"o
C}jɪq@CgW]x >㡷zh_kS=gy@?o>~҃.>'D36|ظd! 6AJaO>6SӰi-"@՜r0Jl#kq|jt	Jqv~yIj}~j_ 1nQ/GQm`Tu.F7y!	V]k?gXE&Q&Z:%g[w!RW
z-o}|;|ܲ;Ryl<i*bVY
H2)
zT%TWKlq;.)^U{suDC["XX[YRۗ1e*hR-ӹct^a:t^t6nj7fj_7Rv֣c9c乕T*~NPϵ5͵ߒ֐QX=c65H(p1hg"~į|5i^z#ک3+/2SCw>p4Dל{zZpv՟t׸q_=\PK.>    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571R1Curve$1.classUQoTnbIma]@N&lLSJ2-*BuKړtb/F!$^@JiaHN $(m+-Q|}{_?`RÉpx!^LCF4_5PLyaTImj
# j-[R 6?-MhT4zvwlZ\)mnbTҾ4^8Vm{r6f8O.(Uw49^YޥFmYujq#G^i_8arO8Y6˾2k]j0-OZ0	h'~ur֪E6r<+ᔎu<:`}GYCEK8Tvʩl-Mt8e*dhL@9-/0D/`:%[+pSe7dzK>UcR۾'q85;o=9g㕲@\bШFmӖmKg?Z'zѺm9@=wls@;hzy3{J6p$\Q 
A<ހ@,_@<	;䘠np<ݝPj{ľ1i$R=|e%^VuԳMe)s{D&3u
&-Y%\0&n{p.Zgz-)uMٿR/7ˈOP$>1)^&n2> l1	
}BQC%o1	ʩ2nHF]0ID}H#ދ?%݆u~_GH#Ŋ aMEx+~&,PC7FPs
61ji)oPK
얈    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233R1Curve$1.classUoTnbǩm.XVے4ۦMa-uRe:1s)v:1$XA4`!Q:o)L{9wι׿ |q2NEir:(|PԡaPSSðQmr]	@WZˮH,ºUsoz4׬nJ۴A诙՚/JG*ƺ)sL~A@+Dt`|smY6.0j29W%syOyYdx9BW-Ҝu9v!|,X
n!PƯ^
[u"=zZfڳ]?p9
%c75
@@&<g	=#ݕiWI/|10)ςU{MGFŵ@Cr6,;ImmtajQ캬Y<[TwN
wuŜ@<>CZm[-a"v~~yJ u޵Ǜmd(dKsEӃR+"`a`pl&-(q^%&88e4Gf[ѶoHҽ
u|$j6z/gw̉Nt6@M_4i*y(siKf7_7Jf8-KĈ1lP{_xk}PnaE%>aRSzZos$ŘjD]2B!za	8g9+xy%ԧu,j;$K
DxI^F?A{e`H)o:
7P
3֏j:ף|7PK3    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239K1Point.classWkl\qqsCp^nb{11qb0℆&dw@T DQE*Nմ*hբ>"TTQCZ";7qN\);;g̙9sf{[:t X'd \ ]:?F!db%n!2qptJn	`XU8N6Cf{|Z;+DϏ#}"^J	
5LVHCW67ҟ$%BjNXɖM#4:RVz`S2WlܩnX
]32oziJ^gV{B"Oq&í-CV=
(f6K|N,f+g|>ҒFWCn t̘@'ZaPS8J҅ݚsk(Q0#;KZ)-J޺jr{e:L}&GpK5tU>!)q@HY!qHGNdybDaQpXܡ8aEo	yNxxWXzxRS8V\"YhVN静kO'y_pޘYvǮc
vrJRSuTa6R̠`T~*Xӛk}#B`ʎ35MìT~KƒNNNILđR>R2+_ؐ*8I:ɾ 8pE{ZLeF`wqxCl6dsÉt,Sכ?4Qp)l&_Hd
̙kK&h!5ԙ)XCV*s)B[ǫfN$[sف$/RK^"]RQM
ه'k%:K\=|MxoWh&
*leE%ba/j}jn)4B"\}in~=4
\N\tZv38
O|4N.ȯrW6cJ0=v>ys sz'1&w+5"pM`	,p8n6KxѸ^ᨺ;>%ze2夭йZ`Li\㨠qIcs71S쟮b&4JIM$nc4jG%'/Z5^&mpC38bDSt-,7<fEDrT8L ĬT@*%bT:!1v\ &ƨü75"F+pGfQ;:!2Fm\oQ,3Ah1ȨkX0fKtuJ5dD?SfTQgtIYdFer\FxO}m<v&l{XYݬ-,m,^E{קO?C0g9s؏S<V87s;x e}Za|*GUxBēO-l3Ϫ~|Is	Nzgi|Yŋ^RqV_UokRjK`+6\z\VM
b;82K^X]%le"W,oΝq1_|T3eJ1gX<}P
.J5)Ƙ4@t]x8k|"3"b
CҏT-VMl}b!8oQgAУIIhC4Xs3bvԐ~}xH{HmBw0,`#~N	-6xW+|"@9Kx'q{A8afQ-dd0)Xw ݙ&;w&Q[<KFywpNF7u&[H6x2ZB8wbsAJJ8	tWfh
۸2l8֝eH5a5uȨx<ɧ8[L{D31c#h;?QWƏq|	*/_]*ʍ*/V~FxWU/򪰺IE	?8S2_+C3>,5wܡ۾M܊w{vGF74]1iPsyPQP?rwڦk{_
IPKKj.  1  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Field.classW{p\e}$iy4InEMZR&
(7ɶݲ,()o|*Q"UG:>稣0%νwwMr{sw}[/pa%
ak	erMC )ԨP12X21e`ބ)JuXʄE.I\/_
>:YƔnM2,eEí
mT6gr{EޠBHw&n#_Dg"mU45gqTL]VfM1q`Hjٞ;ov5԰m
1"GkȤ'zc}5fev47&x[Q<ҧ!B?ZMDvI+\prJȓPڱ̜x1SBk-k&3T!ݶC\pB'|l'cD	8Ć5M	!vQ@vr41cD)͓gܑ@AP>g@g,.LhOz2'$w۞V	K:!|Ta}:36LŦbf6$[d6,͇ьqLnp`ݩ#?EKݸGǽBuSGphaㄎfQ]IiGu!;xm/cL
$%#=

os<Ҷ19_]?4?8gJYXl<a9ȑBu5KO]>I>գ47bUl܊,+e,]lަfingt;z	7;o¤r=S9+kggyMɶA DT<a͒	I+7S[vBvWfhd[G5Va58+AHiZ-{
Zzm7_LۂrV|"C&6'RY\=tHe%[NbQo-yZwihOۦjij)i@;9JD,FmB[21dH`i>>)F-	>\+h`%f7%^Dc}y^nhʶ2__m[ S0˘v|h̠| ]Jglu[m ԛװBª{IT0!S8%[-Z;jQ{QŶTNے%U\\6$ %SŲ	قA]OOL7+=-*j"u+QfY㽹{m5޸QY%U0c?3=bFsgU
,B!mt+՘]Ta,*:Z&QFQR.Ev!BcIsrw&YbۅxI!6xX'Y%\Gs0˴Oܔ_p<?\a:#hԾ菴|
kD=6jN-<>sQv,wЧR`ݭrV
pm%}((Hi8A9\%\W"F*1J1tG,Cfj#FtgW+On2aFME+>WhB|?l6́򞖛a
{na-̗3BHҞIjzUTr'9̨':}"F@zXE{hϲ
(o2x>|GgwxO>Oi|3.g?)_y_k*×TV+ϨpZu૪ϫ>̨|]0Ψ#:omuQ'z/3xEiMjt)T(g埗?b^]@z\YҼvWOP[
|qѻ
LbwpMCa1ނQ_/T:y8Rf~Oϸ5Γ<1ƯPf[6L=[؇8^7^}'𪝪2bWؙYhohL3;[oӛ5~o:(Dc~L<85j1Х,B9"Uj˔v:(XVw!ɁYЕ?M`:pNUAh*R.}*+xk䑘Gq/9KN9G=G{JBEQJU
CW|{X^VZJ+<\-{Ryx iXLѐg-v5]ofW['"ӭIL)柫=T5P\s4A{jCZ.jvf?Zm¨bdl]"3/Y".fd]mcd0^F].cd;l'#gdXNڋ}>g`d`'9xsu*ch>2D(.C ROPbЌ$dPm5WbmK	IƆPK$5
 
    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571K1Curve$1.classUQoTnbIma]@N&lLSJ)m4P]҄d;^@!&!T
HCt H&AdlXi{=;_g 8BNs|:4rȧ:bb$L
N
hVk%QHoؒiDhC[6ݶcc[~В4LivӧZcն*'li/	1tRuhLӑsE]`ԖePo^7rğhF-n	oO=˳֕ȡsqlOZc~v7]w۞-!GYmZd3-o:˳2hKN(a\دc؇~5Tt:@ejdKH'}1:^R}MHڲ|_#r~<&3QRe;G:ZvC֭#_1,{!QC޳sV0^)$;%jt6mٶy|Fy
\.ubZWwkԳ{ǆ; oQ<	dG-O?@ K


PA	J:C8e8GđoH"E܅:g.^Ve5m]G=\W2ǯݨ$d6IT&0i*y0{2ג˭_הk*&w1aaRjG~?F<n5oSX\[g -/Oh8ʿ ?qHPSpM5A9u@&P]!
ɨ&h{nwiU0b[h{T]0N9'ho"]~@NOxRa҆0F-0
PKu    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571FieldElement.classVsguYI(㴑sӐȒ]5I8*PMZZЦʥ-@Z(!<0C0/33 j-;g`4ss9?@E"Oτ\:&"AI!y!S!*s>BLAp%l-!v*Ǭl/
7'ܼg|^<+9DeNC_U@Spd:G#*T긙O#oXO*s#fT5O(4WUϝpW>Y2\Y3UVst;)/T-޹+D
g4
^%dA/Sce+Qc3UiR=S0)[DRgu)U3F654*Ew܍3ȱ]p,=-V
9SgTKYاr"wHT[?UX~0gΚREa"RenCm1=Yxz#Szarwx)&4KE3~,,Ǎ˰BwrQ6#\;Ut`+_'',ghz͑ræ41#;{`
Hi4|}
,M
~h.kT?>*F;Cf}lbB%
#
^&Ť<wg+S.lZǷpLd8-1l⊊w4Q5,4ᾋw5{#w
W8Y{9\K%,mx_SC70axۮu*=hK0wǛ2hD'rqyW7`S=Zq>1"p)3#ʧEmYy	OIj|ksDAt2.ڿ΋_IC
2)Ĵ#qcRU`:ݙF?+*uD44|hڕ%[&6q57_æ?/E EzQތqZu+)mB(lPUUk7&v{zWo^ۨ7Fqez'<)GܓU$~ zڹP-"rv*㤇B7֣IӢHڗ\
6Tݨ%z𠛜 ]բvb/i/>{h_˦zO~f}.>'BK"6虮[hZUM0[(ᨧ+4jZDHb*25gvyL[C|z߲gi݁?dWZ꤃5ejp͈>g/1nQ/1=`LubE+·y!IV]k?YE&Q&Z:%gw!RW
z<]om||GܲRli*RVKY
H2ݱ"v)
zT%KTWlp/^fSB٫47<<2;G qsv,c-ҫPUЈw9s;E֑sZtNhmn_?&znG$=yWr:@8s7k9U*>S5k
k#ScG;qzܟHj7ϤO<\Hu7F*Rn=urFE_XIe%;I[M~!>鉶u&]w_Ƶr_Bn|&q?_PK^A    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1FieldElement.classV{pTgݽ%/H`+
}JZBb!Є@m\KvBGڧQZ+JњZHֱ?NgP+w<YMq9;|ߥ+^þ aҊkOf N	I)i?eA
mK+'␈"DqW1܃{Ec">.XOp>%ݣi_L zHşVCFCҰ޶m՜PPMou
uw*P[=v+evffѝȴ.ۈ߹w{C{볲{La+5E͖5B|{M{e&z:$afj&ToCRqGP{:НΥGFNy3fYԚ0f^]͚&EB26mgf2X,!ۗ2{
[ك9##
+uP]i"GMN'
B}sgd跲].sF-ܢrxExɃ]<!:(n5Xt.77Z 5]f|[c
&Tшu|	:AǓ{jK$HIbC7'ZfmS
jYKS?Ғ9ḎxJBWt<X:Vx_ӱ''Yʂet!f-8qVұIE<+ݛE"ⴸMs:īMǷ1:#CxQnѱ;u)
guuyT঍w?:8\
]TxhCw։-23-	#5KPMx:ߞJIk-np.G(ٟI''2ZSȲکMd
M\n'1WC+&̱6FP,v3kMJhL-[؛-i͗1R=d޴Lyp> rhؐGyżj<
YLڇyUo
kOo'Yhg̞\\(LY
3ن&oAǔbos~'xl(BP[~kr; uh<1#rE'0-rsPٺJyh#|w 3]E;3FGQ4"
o{;votF0.+`q+\))-"ڻ+]W˯X_B0JVzՅK)׌ipwS)ڞaLS*nÍEZ`$a=TMV\Kͮ|WQsγ|6Dvא>!pcyDQy1}\M${38FH> 
c@D VMLU!gvi'ׂT]6"}HsmEqpAJ=&ʰVx^YJ&IRBYB؄q3AM{q/GA\TCs}qяr#CΠf;_rvqxh,cqb#U6yP&URR	(xT=̊cLY*`I1Si'gkP`.?z0ouƜ3W|t3(Sy^`^_G9mUOα4
s) NwH6&gY{I|ssy-Nb^QppA$JY}ԣy;R~3a"{~\ ׸ױ o R|o:(CyS.\cvP}4o,JI2N{yuA5"PT9F%T
agx_{DjȻG,?O3֟%}m^>OV	q*m?R?H>Ty',{pj񛱑!k
z[14[˷o1ʻ
*]R?,}<]
Y,"g]N6xVFcRʵ&Je8qHgF_H_I;/hL:@:"Aգnuh$(BSU}'"pH
sݨBjNeu^pḙߧGd&DT)BbE])FR݊}4tsOp]Bc>p_?KCe_@EV+I1Kb,<_2YJowpK)Ԋ|^-7PKm	    PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1FieldElement.classVip[W<I~e'v\7uY#i6uj;-v&.˳"?I$,eki)mR,%H0fC`{wι{׵7 ܎vhMxHjkx013'"x'8%ŔJ>(>ڌzZj)f8-EVYgKmN3R8I|kXO%
a9sLLo65`gG򞕵^Nwܶ0c	4ykIs!0ᙙ3c|Ԉv|]<Qg۫^a-xg
ۖ33nH}1Ԅz	|%#gLGn65](32fsJ+TNC^o-L%[X\3Q͕ϞwΑl^ey+kzR).LW*v~ri/.N
Sh+9+eY8[SDfa[n[ۄy;YI#Hx>*g-҈0Qٌ͖5م@َE)Yt왎cH24|\'IqO鸀O:3[9<w׬}T
TjxB&n:}R|Q~H1(ŗdJ/
3<`gHY|]-}Eu҆?|rXxoPJ;/Bnsp2tV/PsӸBn}ejE-cXjd\K]6\ƻd3aB`DMPiYo:
\_|h*Y2W>}W:kai׊J]<WVݳϰ}ƒrSd3jld
F:i;-_^Y-<I.~G+'4$_*Ԯ#p9׉d+x)[8-؋d6phu7ihҘ*n.&ʈTy2+8W=Ggrݴx{`կJpK^A識Ѻ=ևi־2/BoiVU b}2!ܹy
{qWqa/HW
ojj?cGًU,*<cL|Mh]ضR!{>ՂTUFS%ErQRA8LKd&4d
Sk-Sd"ӣDWL%ˎDM:y9i1bqfকYRs9J9DoJaԢX K"oJ9R/C"UDc4t(/!A@rmcOvLtAGm%dJQ` n5*
5#04kJQ$!C!SWZF(jN]i!bc]FDMPW7"Gz5A]iF$tAWx8`AA
̳A
0
2pTXp^;HFYXƮhbD+.jwʓ,O>^,sϳ^d׼7xǾɭܷq/{< %<~H	`~g#~wp+^qWWeъ_6\p]/]cxKoTOl0,nIԣ1?v2M0R='XuW/%B%|Kު6Х:ƮE|'?$|B?^TW6c2:.lA>=+ MױyO{56e:i`:SU|hu;W?oPK.U    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409R1Curve$1.classUQoE־955nKS );4Q@A(:w"DB$$x "H"RW$~ |wvikѐ`vvggofv~IA/L
&ȥ:l B
Oa$lk1Po\j(@"Q\H?h({U5[9oVs8:qajI?Sws㠲0$e";[w|kuI5/1+*֯Q[YO4<r1}xyķH94f>.ɦ@T2Pe-N^zAV#5I6S2l"Nx؃>{6яq0a
"uXjU&&qĳ`UИYq],7+_`^-AS:Ty6JjlwVPeTUel97My՞AxJ U*Olxhtݶ)8sm׉^/ȫbԵ{ǆ; oQ<dG-O?A C-4}

r
sо~	JupqpV}ط]op|:!J69>/hMT3[r起R2L7Qg/ٴgLrޟx½zR|ַS&/l"qc&N!wy9|!0@Ah[_@0pAb&`L]3	FMuht|D7$/$ߣNDF~FEn瘠~_FH"Ŋv!aMAx+~&SFH*W0AyORjLƨPK5/    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163K1Curve.classV[WW&I(P0x)DU
8
343֖^<U"vuvi΂}|{o?qڃRq^8pyQs^z;Ϧ	&.w/^k	xщcc3$%9CI/*1ͬxHaMU{0uypJuYPG[LE=gG'##gmaM
Q5TF!':=hl82qA-=2(1`$UT$%ʪIEUEmIf:e)򔦘\G1v#M*<ӣdVRJSp&=OIE+ܜ6U4nȳ_}tyH2䤘IC̥9_(eܨrU6BPLktL5if7xIF]Og0۴	=73qS(,\>#+y}@L)U3323D}4ڬ"88iq[ l¢4#Ť<i3mWb<1cjE$YB&K}DJYk$GƵ4Wfu`ˡYU(f\кi.
hD&ㆀ7pC*ΰP[hj	uFBp3s(񦀷pyz[;X.:@6T?7*f|>PG%c,DLE'ֿYK_
[ӳRgR7ҢdD[ .Ϭ~6ρa=cѓmT$<k#IU~ӏsjT([9ԹI3
ʪD1OTP̦q#HtWX
%%ANw{b㽌 ˷%-IXd_A"{/;0V&Bχ_X3Gʆ>BpX4Z:!$mno?F8a9*j7c
EºE>2^%Ўj:gwThN5;ؙKN3A-Eo|*q+VH8neC^'2(J8v
m(C	3PZF]!Dr$!myq##h n-hkȽ
,eHDFc[yfXq~]vInF*!sOleюW];HvBVyGIRo{;YEeqU{S4hlH+0Y

QWP1H8^4j-N
+zdA3xY͑c$Ûڎq}-qIFrs8W>N&v[8{:%'ɓYO]qZ崷|9_6֔[U*^,w=DV_Xs?<s{*
r3[#
"e5uDhj䦙հ=vy]a$7whM [~hw\7Bu
{v33lwTˈI%;JlT٧_PKt|<  k  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Curve.classWWW=08@EEQiM6D,jn0@4dKWm.j]==K}3#r䃧99o޻s߽w x	7GD {$Ex)>~f#b6q,ED?TNA>	Ha.~KQ\&BǈGE) +rLq'U97 5M5"i9Q3(CEayT
P-5LuP5Z$mk6l»:vtwhO\afD2tVu%ɄcxW`{;tc0ԧg5"g̴jSP4KhZV5zS@JK'SSehP6=ei(]72ޯ2HijWvO5v}iJZHE?PŃɎ膙џdSMȘ0=)+G:Ǌ{P5 h8 $R'U5wր?bc,_vNlg)JwǬX1-=mƂѥg`xY6-3h[⓹x(ЎpDVԄ<vThU)֯Oua/T"Y\u5h9kQYSlLLM}}=C?PTWN	=k(j,c4[}`~ZiJh@ZItFX%Hxk#]
	ᬄqIuRPmoF֮cu
Mbm
fIpJ[uzD抚$|0útL&+_K$|=~p.^MzAE(˸)W%\#	?qڧeGM/cbF(ݦ.VL"JzDw S9V838irM!NNMTLwpm`acJf*R5	mVSW2a)Ώ
'iYq6mq<dymy}vLG᝗ח2;Tmb~tc~޼7b{X[l;׆!u&!%P;{qsd٤c@0u+)JoC^4`Kn8
0ۢo?E[Ln\(M:@wS7]9l!Va5BƊzZS8,zG'ʹ:RpO28J `3&0Z"I9;ycʂ1TB
Ҹ^t	]jL7 `&>ʓx֤&J[ng	=,)aonZ_2
Kd2$6[b0KMȵL+;KN8af:üsHL֎ca0aiGa_ABk+jh+rb@!#jr%Ҹ	*'xB.6"4>z#y~[<RWP.T]¡o%?QyUJOy)8uc3N*=Xvkr|ID>ʚQan!J`letFce'IyXY[7|(5s<yz'䯑9^B}JFΨ8&_wLb3Qomp.Xtqc᧔IAɣ|K"e4KXۉ Jj<@o}PK"΃    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R2Curve$1.classU]oE=cl[C4
d|8	_RQJ]EBD6!^٭T	$B x!^P$B*HOk
	wݙ;s_g x8
triQHu@G1
i<h0u-ߕ
tEoJ⌀֝X`lo~ӳ_ tfuSڦB֤}4Z0Ri6$O9>+p6TgJ_!'k˲qQ_a͹F-j+}o_-s֕ءs`5톴B[r3lykֺE6Ӟɰ50qQdc8c8NL!LrMza묁ILxk_0'
=Aذp2']8ڪEŲf*bnRݹ's87;Us
KgxR-\1i.5j۴e2*rm׉^P].}iFL&^
K4WT>=8,"P(6!
6(n"Y؂q(78Ƒ)Y=7;LMC
]ms|e%YVx)dN\{gBKSٔvlIdVɦC[3-ݛHoP
Bqp-KĈ:1lP{>!_Gxk}P=MGqAZ"`L]~3e.^t11QLPqcؿw>o)C}
~μSeS:ym~r%Ն7JxI^F?Ay`H)ooun苡<')f%jiGoPK%[    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R1Point.classW}p\Uc<,it7l`4Bm(M[%ݲmQVg:e8NMUp?qDatGGDFMZ罷	`81=gp/x/>DB:}

BtHz"[XBnrQ~YIȀL7V$\"#0UFB!o	SۅYS.~0pL?$Ӥ")&>*xץ
{s\):Jm<YfںJVHw7_زMݕ1zY4>lrN_\ڹ #f1ڭ2@.M	Y#
ERJC%:ѩ޼Y(s١tFjnAyht^ax Ȕ
Kn͕)'-EUoزpݞZ\_mJbn\2BƑՐk4>5QҰ_xdzHrHx}]$ޯ~<aLYw#BQ!Fjpjx+q>I|R!q7ud>36ff+,LKUK,s?S(prƪ{ #]ؘě.09ySsn-)fhC.lʚRi%ؒ<P3-#T4tސ_%.Sb62;͉t ˏ'3C쯷̓閃|yMltmVJ	+:cEsvx4(t4҅lv\f )O+Y^"rq+ه'e'K(e%|C:?_O2
mATV%q#HsX6"Ժ
L%5/5VNͯ3^kA=)1{M+K\IÓHpWJWݓsI[Deb	e#WqMO+hT!k
>,GMc=Vc0U$|g5}IԒS{>i]8vM/OV50L!B+ךmϽ!7e4+'ȩ 5ܭ31=~zsQ8qruዻ&~ˠn#P1AjAH*ը=F8ɢJajAĨ⫠j˕^eDgr<F{:n^mDFL1jz~Bd5FKf%OZI-U^zQhdVe,R#rFKe'ueDVXHkFL1;j1=Cd1#"؈OueC.=&,AsEv+6L>&ff ;f;؉Qbu۩/

Ja23؃/rYc`72sOq65Gx dw/Q5xHxX15GSJIakT§xJg8NzSz+xFWRj3*XaלC;?ʩMG3r{m7\ZX],B_ՈZ7sJė] >-\MY	c] {;W}ZRqJp4jW~ F#im4_@ԭ$JQ(QP4lAuh'l.]a[cH;e--##<#q{_5x"/;a]4^I,~4"H-0nҲX=BÚBTdxZ7B?ʳ"AtmԷ_ac	c݉gs>*9	jaŝG{-(
ۂFzJ= f^n-׀jH iJ-ΕPNH~k=ͺC[g+S ~dCsb/טb2e:[o@8yvODɷDĿ)5?imʅGU(
ZjҬ 4Z;{@<:>mQ3/
ӶX36cHص
]#^ >A@V2WWcj@E`
Mo.]ϸI؈Ř;PK'    PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131Field.classXklW>wvfgvwlc&Gl'Nbדּqx8oi&6q8Il4Xax"J#(B< @E_@
WUh%hwfk-ǹs=u{;#͔Z:4A:Dws3X,zd]7	nNу4L)w4 7v3x)nN(7g::-ȷC ''3>Mg%)ٴI#odk!AjOfFSc'Si^h=|#!i`
fLfϦN&ն;8%cm%p:L$`6{b_(?Ćt:;:	ݼg25<* zMe
ӉIȔ{jcc9)'jŪѱtOfl"̺	<(D__Emt3ӓQxTrch*=fR;)m	Κ4IMf'7]LP5N'OzԩDFͦn:LMdG3izxvhMפ[ꤍ6d&ONfǓdb*NyזJƒSXl
b:3:oMQ~zϤ}ҽL'ϤL&'0oӉuGFr2s벚wpZ235ԑd[{ELSsEC1u~"1>ܵi0ӱqEwy[.^Ki:j%Am)Ȣq->6Qz^<I1NN.36E{o"Q5l)-l
ԂemJΒE0c)=lB	Qb:lRc7`l
SؼYyۼ*2h5STꮒ]E5X,m#5e6 /
ڡ-EmMņ6*%%7ii"GGYR
X%ZeGgI_XBSͽ8p # UVP7,
'[`]!2IyLś0E Rp^1 7w)0$?K3mYTk(ڲvh˷Exi=	^$G;&tKOU,ˑi G-nSi7N74D	hcHw"#E[o.Z26 V00RHYUtU,[=T:҈1Y?+:*qZshv
G~ePdsҀ@wM`qߍ
6k0\iiYCƂ MkKCi̢":dai9st(ON7<wN; jX{De *)#u	q|0T/!/a\GŞ?B枥=8:GkYM5[MyUqKN \<8eI%X>ֻ{}q8'.>	ާ>᧑?7,U )!݄jyɢՃ8	B|n,i`f
lV.|*ݏ@2V $$+Zb\{u!W߀Gq\7=yҍ )
*7i
Xĉw{aW_]\(MЏ`.,1qqq#"f+

q
h ZRmkReȪwyaK>1K
B~}!CGHE")9r[N^y8.`PjvсU익3{Pd Biu J 5ʨ病dѭVzhh囥peY@7K 'v*e@
TaRV-RSsRGH:52嬫a{*+Ufa&t<`P'jΝ-8
2,\/8iȘ:l103k1+['Ws;wوc]-.m05Kw9QXƨ8eddI|<U<)ð]<yB'\Ue&*er	m	WGY%UG}r5m[kE~^v6?o7^0x&oXQ҈~Rsj@%2(ԿB5Ӌ(/D>DC^|#sFYz1gw?E9.
L¡7zKAo4͉)''DH|[T%~"*bj!UPDXViuJW:E]4*Y9,V)	Z9#ZX\k+"|LUU"ڕz庈)OyQ.EWWh_jI̉s\ylqgfV.=#5_!UQ՚ʮƚ<iJu SY\Rk5域{(gR=PP|,ܐJ&Sljj;]"7-z(/nV"368@/A8L!! 17uEDU}Eħz+mYj|Q&/j)"C@Ϭ%USS|HU!<ZOPx^ho/PKho
  f  PK  D:U            S   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1FieldElement.classVwWZi%yNfuBdI@Tq[NnJBYydVnB(P=ZHʣZ>r(OPY)11ܹsg;wfp/^NLDЁMj8QHbJNxg<.B	9ƌX=(SBL!y!!B,!ĸ(sQؘp1'"hXP< >1o.eFbYE=K
fr
BCvP`$UVf-&5Y+-w;BcHz015dW[nخ)SݳވtMD_ۖ3;i綦c)ϵōZSzDeU0LR+fsd}5	_,Zs͂GTs<{Y&جdKCehzTk+]^\EA
UJ-;dq&?ox
=<gV*8NUjnٺǎ<:1:<aIAﺧ0P[إٕK=KSzس=*nOSO)
t,㲎՞i|Fa<㈐s:
v'+Tp_jURTɶ_ udEC_ȗda!_Ƴ:8A
_9bU?Uu|ߔWptUt|/q{tFϕ˖;ժ8M@6XD
nlm*FJC^p+nYfWOsTf\"5M"CAN-'FO$o{V͑%m."ޫl5Ykty9rXU.j!C\d+Io3#rHY6T7]` A<ɛPRŞԛh{;R#&Tr<	O*¿C䆏$t{7t^ȥ(}m:4~~DP7hWqw2*`?qƪl2IK8[~/Madv=\c8"h_Y
CGZi뛵k6n)ځUP_5݀ b(>#0յ56+ =]
Ek}
!O<đz\ҫ輅sؽ1&{Ҭ＞zYuiGZH5 i蘤th;t
fH1JRy"	JXCk u;ɖp@]eX<ypLmy\dJ0ZA,%Dғ[B
b	4#!<yOо\&	c8`*ӤtV{C5ޟ
j,lEFVfCF03B"%+Lf5#14&naC
a&nh70ÈdlԈQ_1nDv]#Dk
}=<f~-9^w9br\c׾v WX^?1O^ųx
6~A_RWܭ:~77^߹ar{حaTyѭ>cD
xK;|Au%:!X2&}C=pbuͩg&/~`*֦Qe2v:iߟ|W6ϥ >~<v޵8[6O~q`:#q~ozyE5oPKg2  
  PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163Field.class}X}P\?{޾]G/..y^cj&
XFIɲ,KuJirN:mf~2ֶ:8mǎ~9V;-5={{o?m"ꢼI-tIhФ!a*F71fCt73q'$u`W_?R411`"yiI4`Ծ$<4ߋ&ـʨN|}[^AeSTp23fI$CCǏRbDn7mY~pb*?79JdX79:*(z?gٜLa޺,

d'NLAխO%O'd"}	LfƆf)*%S%:Ű4&2L^=wfңsl؂=dE[PgvrSXm=КNN'S9%bA_;HdbFooE]LL*}`#^1N
uto=0Όn樅(N:
ѭi2DS
4mQFvu&95d2dAͥMs٩Ͳ^V .Q/N%;3dRTr6I{ǖN9\vҙKr!!R,D]K=!:CgqV+J^a&yOBn3	iyjx_;:S3iS[?3mLId:1<f5L&<M͞cT[{۸gSۆ۽|@԰
DZA)t* TFQ>Mq @dm}0}Q9D\NLeLjNLbd*m*,,
Q3Gu'3fD
'fcF\5]az,ށU1^,$bp"ƋkMdP3J*)h6;Dy1ӀW<p$<ہw[ [v.ؚc6\DsIUwAA<_$-rqeF8vxu%m@j*dnuVH"ix`vI7}|O"#ھHevUxܿ
[UDܪY-Y-#NG2Hk"#]NH!&I8#tb-$(67F8N}=(G`v
˸0\9;_Ӥi,XMtM[eBnZkl<t>]عEA*r
kܐCV]!_ l9_(~`<['a<d&Rϔz¦z3lfH5CEeH-ӂEHp`vA=%h(?_IV_'җ:y8~GC|c*}^OP WahvNњc|Uyy ($xRC~܋4x=&W
j*0Zc%U-"u}U҆;8I)gʲD	p	pgu1فh\s(~ /"~/#BO<݊].OɬÀ@k螏bW2
l*weOB)T70Q0RMEMh.ϓ/1..e
xwĳPc߂[R.n
|_p(&o+P[܅8D3N#kzH>[:a2i\EqMQ_}"q8 N̄dݼ[-L)H3e i_u#~ً"Fs:F@%ǚE	=;pkv`]p]T za/.m7
v4ʤF|tec 2/wZF;|T)u,bimu+,ew=Clkj5,Qe1mU,gY=,HƝ3 QcGԼ:;bרzmT1Xlldׁ9z^wc%3fonfɰIFɁDc-@ݮcfH!>mї(aV	kFt >mїiìaEon?>6%mїiìƦ>	o@ĭMFW i2ۋ3$Pu+66˨_<b^A*-.R=.h@Yzq?h@=FG	Cz~ZUx5GOU8B;!D@
S*ļEx 3x\TgDx^Ԋ:+QExK4)hV¢E P&%&Z.Uq%!ڕaY[ӢC9/n^*W)SyVRWx<
J[IT4MKά; U
σsX!Fp1#2 dUa`!d,0/U~`RD'z
_
h݋~R
kR\KE/}tbz!^RNsFK=f_B_Fb	FEVU!߷}Cڸ]&D1N_cP)8쫤İZIa\M')0gPKNCs
  3  PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Curve.classWW]$1b<
lM!h_ 74%J18a BCF#Km6iin~Hc8uG}iݙa9H.|r;_ ?8߆"xQE>Lr%S~$e"i3,5?| `%*_Pэ9%m]L
D!+"u_6|&TTtS.ժ^e`1t%ZeK/(CwQs霒ϼ0v~Z8+]alTZ.!0ܢqes!4k*UMZeݑk!EΗR֗Eb|R2w&jUX
UiY5GYdsh=b/0xecNg?V㵥Y<Ζ	"je5s6FJX)aZU0̹REժ/@ah3+Ż[!aN(mɽMci!x0}C|O3uzJ`ԻFlFweRqɏ
CeU[ԋ>fk0hãPh(hQSKMdx*I&:{TtLL"DUju 36U槴[bѨ/q,g60}XiJ#"!!	q|!)I"Zco=.X	.oK +|$gcH4I)јp:ɬ˧p$
I%#H$Et:GbT"#'p:DBE3鄜Vr"G3J^l9͚$x.ch.O#p.L*QdE'3,'éwy%CFʍ8]fnT\~,'~%o	_CjBͫ7\)WH9䆄|[n{N1"V-Sլ2U]<-Sxzv3J4<4|>U*Fݬ_F:m2KO]%eT.Tset4sY}~+31=܎ݯ|20͖1`-28Fy^#
.e¡ƽީиJLMX
t4p厕:J8VmSǫCɶ8auD,:DNGetShq=N$rhOƠF>zG&ID+WY7x ckh]{m܅}ۀ]X[#AqVq0[EIC($[GGЉGׇ8Jc88x>'w=J6q}1O79;vi:mlذ[[:e{țQtNk須xw̦%xO}.@w[uȧiq~Ujɡ5Α.2qc5tbUOP	`^%SӘ3.E/xB=jgIziy]Z-Uy)DfH0K=8OtOuZ%}k`oo
G?݌1..AKK҅iʠF%3^yvs/CsNl|F\03q&gG3C'qG{|v'C>"|=t3`$8|B~LPoej~͊M?o
OzxRZM"9ۅE|V}p a_PKc    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Curve.classWWW=08.URDi
AlmEPc- aN&ު>Զ[~i{D򡧓ܹ{}_?
 o?pLÜr\'D<Ex1*$#{1{ŋqޫM
}>ɧE4~wZGӂ SD2+4p|g}Tc><'< e4M5yPPaY98-SDn2j14fSɃpph*ohrhp2V0e<*狪0aذ$O3Ѝ^Ԕ\0mOUd:SyuZL2i9-geSShUA=gifpۏ2ʰv 18""*y]SEc&mJNZ\BqfF7BR׍&jlTɎ?~pɚr<XqO!$e!{D&xLC.vbaì+f=:^yU-XI|\h#)5+O~x=]ud2
-S'i07dm\^DNP
ZϓA{Y(Ʉ(+Z(B!|wTECQ9цtRN-7KM	!tJCB2?:9	aD-zҕT9$<%đ^&h(BP4'ұhg$늅D(ߝH$P"+	Gbt:%_ɝήx8JCTg?+%cp</Ukx]17/)&-ð*Cky[;{3>!>1ޣbP{m\'>g>s	K+Y_IKt,cӐ3=Cѽ|m Cr=OOV;Yzs僪P5
}*h*fM#1$/kAN&GT(ū9/OIa?&8bXO$QxfU4./VQV>roT܏%vTY)kÐOe23>Cd=s;f{+Y6WHUkP~jiPݩd-b-zv/Bvictek.ѮZ;Mh#v`'7ciNCzG']4Z5w<Q;!@S{o<V]4׉k:u6mÆgߓnjÐ,lF=n_ڨ
`y׊]V6syCt-&pyQ sP߸;Ed-TDm!VSG;po3%&J-R8-@Wq=-8s+.qcMɗ$66&ޮcU@H9mDuS/9;籱Tb4:͎JY#6eGugguu	BEձ^86yboh]M48߿_Cp3-i+}!VSt4`$혌4?ڻP'`?R?-p>LHr,/@ǎl{@n[ZJ?&`yr_y΋!s)`GTM)ki3t 1Ʈ`;L,h-$RG|YsGiSn?PKe0  [  PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409Field.classX{pT{޽9y]!$@ػa!,4)	 ," QWF3kK_`lGZU;jGqڎ}8ö6}} )!~w~w~ܼg%e4nlEnPEUt
7[ƶ^[fkl]6hݨ4(S!nX	S?47fAYAeD膡\z0#?z˭ڼp m~Ulv
ˎ3:pNac98ޖKgnJP2h.`C0	Xwc0=4ytr ;,u\3Yo^hɂ_G2x	KyCo{GGyBi18<aZ؁Q}ә: c eU57dĈN?*5lmhl$ǹܖ-^/ۿʦ6>M4@If97$Q?=x0ߟ=reùAv1l*NMGضL̌gң`L236HB,ՠF)gӕx]ez`f:+eli7F7' kMP}sb5w(Sm9J$34<c̾#Cp,f%9Fpe'3ҟMŊG85w.䝙U;uW~m^֜
A:A8U%
Cs	oWZ5yer `6Ҁ`#-D+c?qr}LLN$t5BP
dčkdͤk$Dd@}sD+ɢJTf!fHTBt!D1͈Eó.AFPu!ސtDPz	5[v]xAzNԢ&x<E=g9'&YZ=.ϱ<z\o>Le.( 3&"npw2Yu5T7s8c38 s&ĜcKM+
ЄxJq:>I\T+^ZN9m2:C#Nn34MLR(^aNZZ`tZKDTC0,3LW!uxoZ/QԠ6,<ĳXn7(YMR\#;LR49R&'2Y^؞RArz9dqL˴:
i0e!"'}ⷣwL[yJf7&~5ɢV꣝齠CL
{'Jn0$JR>I@ڋ
&^K9IqJV/ՒD;;PT2CeɃp.F{\܋}~\,/.ȁ6:T~JCէxLT{Bl.T,.aqi'SUT)ۉAˣY=>19ҩ
'a-5TMh!%@fu5Thť@jjH	2tdCSH
b`Nո&)9mIA	rp,c3)8>^	cW=2SHPVS((O>zKYhC/#:KУ*}B?1:O }ITїE==!WBzRSb}M:'IXA53c륾7w'm'^eIMW!.(JςΟ=r6ޱXd"QdTuGJ/87ߑқdSjh;Pz!_
ʁ6jTKrfB`KE6eb\-+
EjjqQ`{

EycM(,)
%QêTj)w[D/`_l/ak>~Ǩ^_bЛ[D^CWOe;6TET^G	?Ep.\3|>{[chS>੐bb!欂J$=UC6nI:MBdGFP5Pp'LدxO[^\bF*QUXإRQZEu3e4g˕if	vCc%*NX_܀20Mࢨ
(*g
٠TܼS)+ՄԜweRÐZN)ՂԚwɰR#Ry@5f;Z0#خ4GY])-,|D(/lWD鴈ѣ8	I/J9
QMN#H1<ҩЌؐMr%9>!K`ѡ,cU,cɚ\`A2m9'V5^磄9WgVK4ҍ4^K[̛ր۞}4Lo-3	C(خ8C3B-zNCյcpBǝDH 1'pdi1`*졢|E^FT=F'\TYzl#E.)c=)=BAd#TOr,"dnuZ	@<s`z!{fGk>Z/B(Z/6h	6
hdNBD#d	S-1~2{e1LϓQaFev<,0#8"0dFczbO= Y%y\,h&[#\)4+\#Ph,qhNeӋ"EOrz[*a+DX-1OzqRDxXtgf%bJ5%bkC2b{V#pJ\x\|W
&v{boIQ)4Ο9iT`Г8pq xt8[1>ȑ
`ZdSҸ=~:e{{6q/uژ[,|"v6KuZ|:6#oLlf_qZ8ID'[Pj
ebZJQft=Iq8]*ILѵA4iPߜW]BB;݉'ѕ89IMe㫊ڡ"/PK6BD{     PK  D:U            Q   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193FieldElement.classVsguYI^;㴑s6%j&NvVB^ZZЦ-iSCB0/00;rƞw;| q%8xRU|)/GW"1F+2da2bF0g#+W$ܬ bG,p-yJW|MBQqAt\a3(
W<lM爂hltFӓݙN3scPc
C`èY4¤aMyJZ=svLu*ؙj'+=Mc}ڰJ
vNe9e
zBdpFL#Mj"z1w,[7N٬h%'Kbf!Nި12!p(EPϚ8I3B9FUeb>ieA\]{zTd~9gJFNwϕuL{9ܧ'S7d
zcO	5զu{xop*k,s1f-æ
1KEEpyx{>0`V91NLFt#㥲1FLi-Ffb}Vz}hЃoa@÷1`ײT>ϫZ3l=]szlt1$=ofJVWE/i^ְ1hx^7=&mqWM}l;B&!|_ޣ~\a
GE6co2.xG	 Q#O!
?xWèpi'8r'qC`eqHɥZX4nۆ}|C
OG
UWcMFUz?<i:F1L7Ue߳ޜ+hJ;W{f1jl'Ӻӿ 8ce/CĈ}t+όZW>-"jKOUcUbrxm0(Q$Zh/~U&ɲ"H{Ny8˷oӞKpg3,} S_)T!E|	fC
(ߡ#w׆OcOn xb	G&ކ i+uo@mԺ}nD(lRѪanҳK
WMƗ*Vzl(ɕꝌxqO&NI^{纸P-!rv*cVC7ףHﭡТH7	ڗ\6TO]%rMN MmG~mhQ^g A|Coоza0y@?o>AC.>'A+%lzo`㲭JG؄(G<MLM%DcTLO9û`^⣤G?MgX$zQoW'/RSkZl=^	y?fo߁p4
/vq4]NrZ}<9(0E<,,9۲hp:hHGny3泔>薅ݐʼ.bkHS5pP	|PlYWd%lsS2J^TdEK/)^U{suDÞi["^-,+Kj|2T~4]NAQuܱZ:0?f:R:V7wOIӵޯ);IOұ-1`~JEj*~IO(BZlzoKȚIkڨܸG҉ϚDp&}{Ǚ	;ZS^FwMjڭ^^X~#:+鯬1SC>t4DOԜ{zZtv]՟r׹q,_\PKY=    PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409K1Curve$1.classUQoE־955nKS );n4!	*PĦ];/H%}!UTB RC*o.m-,׏?8]Ʊpx1^JB_
S0PHm`qcUe-u%H՚?0,PtueȠj+v~>Պr._)5jZi8(Og/
h%o\5\YT-Ʋ
*VuϻԼ,p*gptޫҹ4+/G
!4Td-`Yl8j}лrUͤ=.Ϫ-8a&&^MbS7qGvʩ/MՊri8ce*d`D,j/0D/!`4%]+pUt"Qy|͚ﲔGND
wbɠX<%l-Olxhtն)8sm։{Z^_WwsԱ{ǆ;G?oQ<dG-O/A C-4}

r
sp^`?%pl|2sw:gpmtA3z&ںJFﻦ-^>&3ɴb>|˦E<e/<KL%[i=k:os&1abR#j'~?En
osH-Ѻ0-_؟8S
5A9a_ڨ6͐dD4ȏ|h7Yuƻ_aY|!=+ځ>7U	"S1	ƛH2Oy]? usC9<O1izRPKU    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Field.classVmpTg~Gn @fwa- Є
$@үK
wJU+R+|jδ;NEq;3NǡϹf7idy<ݟ  T'Cx QKJ/%=SzE崈2<("21CK =+"pGeǔ,<(xX'D<"8&1g.rq\23ҫ;/Mo0gq+5[rقedFhSP%zHډ
opԕΦ
p^nɥLu;Y81jgT#Rʿ춌]ƤQE
"g9&zcY3
;a+;GzЎq#iq*]gs
|줃bJOfT9<Bw*5sɚc%l*7.b>mMwKǼ^(@~< "l6S$QN'saphaG5宆3VHzk鳎md=\14%i5k\=mfR+
w`!P:T(XӉ'+7!

O)?>3xZ>!LNCLz3(SxV×𜈓~|Yip_U&
_	
[UY㜆E
_74|SzC[xA÷sV9%zxfX)(h;yHϰfcV%M)hydf'9b½3,!)X/Mv[fm g$m󒚮)\
ܑlO{Gf]9丙<h8OXf@7ɼB+De8.dͣVϔez쑬nɢx?(Ϥ-Nm˦Fv0JkGrj"c
F1%薫C|^g\wQ+3
ҟD/eّ3ɸqCK%(o1]Pg߃az8AEr-gZ*l}נ\fG:N&dwUim8r
1ݿsbW-w5z^}UCmBAgk$l2cg\G$2$E}D~!Z(
<+]GӨWBWKf1/v,a(1dU;\&}ÃN=P^F]/2:+2aj{kMjw
ejv_7}h6	~ ut҈!%,8Mz \BMBmX;6:Yz,K!n	(WI0@s/XwFxڥnjQi^qG4}pc]MޔKenlZdC6ԓn[9pV/a~_$˙1
C>@ieuH]͹vf֍^2wݹN"O0<I|Y$X+L{2*3l9S_Z|SN"ݣylG1uz`W$*nQU;N7?A$)oӕq'IvIֹR+v6K.:?
D<<k#rm]wA18B+@-v鵮6xw;>+Ka.>0Vz*CKӨ#`}yޚp+^`&h1z0
Mpģi)=#_|/Ӊ+6LF]6;~į܍(з
i+2tz<qi͊g<*7`?"рJOf{6q/ssïy
Pcݭۅv.2]|~G_~=X%	ǝ`2YUPgUm+|FGh-g{G~I7YXk
d:V~^
^a_.;o)U륮J]~UtEȈu6eH Eh"jDԊ؀a	[V_\7nZy?)|d$.PKoca    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283R1Point.classWl[gqqܮ]il/4]vmMӄKGҭ/Z6ح:[1!M&a*)06@L	BLMwN
RE?9=~_	
ktjX]B	Y$#wY/d,#^!}_Fn
	6ˈcl2([+lBvN
C-=2udH'
||¡Bq}0ɤK>.k2]]cŃ֪vdpw߸^oWaR!8ʑťr?lә}
-KgTRB!8bw
E>14[
4@_zj*/ZR>I=Kwig :.]F4l&sSn筑t@az[tvܶ|2[-u$Ү63crat:X~! cTH+u| uRDIGYxc2=(,t<c:V!!}B>&By5<	<q|Rauޟ'O
ksT.3垎Q𴙾>]td1U 3oͱJ{ySIVuXa6骎0'0V08cVNY9:д]!3yK9{0+e3 [҇*p`V6[vJt}
p0d:/GӹQQS_:0.ʁɼ\]G@72|ΗCnxԯcmvd}lXEZ-F/s:[q]eS0<Ǯ?enHnE+5ͫ/ nA//!
)Z%sP_XH!bK"axϡjzڈR̕YJ	gKlWm;HJvŞ:1uGYh$>O!@$|$Ga~~.W{:L@[R2O*Hf4a>-<OKp+}\ѭgM_Mb3V`Uz$|gu}	ԓS4x=/L9O:MEq\@v. JP+2Ǟw9Cj0TTb''+fzS3q9=zOpSqsw%<0̀gV
243ccFH:9ag6KOՆόtT-L3p杘5\
ɠ֨]5Ktfθ	rn2	>3F7F̈SOTc6h"sZgubɪQG'pјEnO&,>"L`=cc3]rB2
"hFu3.эVL
ďF܌Jtu#53/cv8ŗm p˰9<fJTIȬjǕm;;Xfǘ æeOq$Fpqwsn<w}Q^mJM;lqUU'<㪗=V<ڃ>|VQ<iT_)u_P*U:OeE,pSoKX]G9ż_uhqǓXk؀-05DZfy^EM
WSQBXUA`uSMޛ.8!	`IY&"#CJ_wZ6_F4%
M*+ P!j% AGCBF@d2$$+aK-FP4X;VKhzl`m _e H=K/
؊Wa{3GCVy|sG6*w"D	Eu#mttu	=(D*jS
WpgFS~"v{k
쁔g_`<Nu	KL
6l	k	6(`yd*iZ],\+1"QhJGs3{dQ/01r[~w	&1|iW~Ų5ZK^Gߟ(V/Μ2x77ؒRUÿ_iSA;3'Qd%5u&x
fS=Ӄ<n~*V װg>%^.eGp:AKMY3jTQDTb*F5M
^@xS;mѻ?بX PK	 b  2  PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Curve$1.classU]oE=czg..I) dR(IUB!4mԇU /<C+RB%gVZ4$X{ޙsνwf {ĩHi"똁|xH
L8#`hKy*0ru:Ra
F'J~{w<3GaKWd,*t_)4kʹ:u0YW4_r=7|WT57ʒjh,ޡܖ8eW/prwBܜ,l:m%Czh7q5ve7B9"
*fsZ~zs*l
S&J8kjb?8Ι8&=ZZQ^EhbL֥N
USJK

/RTf
wf
V"ꅈWs[wZq^)R]P:[.:2mڴtL׈[]knӷzwh-gLEIˊzfƚ
!@V	hԇrcH7mB{Da5p5Vz'$~R#OG}2C|%z&^ }ְN)e#cX'$3ZX,dRw]guC|Ǻ6!D!7Mİ
17>q#pL`
SiK|n.\j[LY0p pX8')/MQe6fiDǌ#BbdT"GI?j _:+w_r_
#}1uC9EIn+~&E:O?#pxZk?PK}}{    PK  D:U            L   META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Point.classWip[W$I&-'nZ	Ǎ	M#KϱZrd/mIRL[vS!Vma`
ӡ!|=)q_Xҹ{/XgXB:
t	Y/ څN!~%m
$fp+
D v!ۅH ")EC.EINQEc0=BELH],v-#I8b`T61ȮSؓJiLFccL6iDíVuCgg.Z3EWJ7$k4{M<Pړ6Ftt0Iͳ!{V6VhhlqK*Aw4WsfU+c{ck m Pݟq
v%.N[VbĢDrՕ%b[nla
;&Zq
+.;X.MfΎa"}B〉Xm 8#
rGLG"+>o8j!yDF1q	
y0>'M|9GE7
_eeHXl	'M|O	yZ$[j)
l:vqf
f訕LF3EW4*n"r",wRimx"y@"=:$'ABiFWxu@Z,I_!x{4v_@.M,˛cipil]:*B:<j]+10Jfo.Ѹ{g]\2Kʼ:N+bjfs36m}*;ܟx.f\8vexʞ1W?*qP,'uŜZrb^!>xAFr
CmsesIp@XX"~/3ץ>QWq4C-?
j)x'.zmRK|8I4O4' 	6BYؖxhL0^vWkݓ(7H`b!mL-
JB(RҔvmFʴAIMZ6ҥӨ^}<T>eB{|7HeD϶xKxOV
]QaP̈́!٭H-7W*]4_EfBFtuW4jC~a9K0uHkI.-]ֶyt9=vK?^yb۾JB4+{1lPosKܺ/R/բpKJKIe|VkXӮ7!Yvca2wA;xvSz]8[p-l«k7ǟDnPEءq.u*H.ثn#gNS1WITRGxGq}9ܯ^QuWR:˃.?s	R<F?Ϲph71`^咭%>aÿ:uZsgP?G<5+ެ濾!Q:-,>?'^z>,>P##ubՔǃ__*#`
8-N\b|<'mtk1"hS{!#)
	@xltI{K~*0-1U 8!b%Eh敺4o(-8b#z)~eF#8w5<f
#פ &>ˣ9"yn'ߧ*Y؊	%&KHb
c!+eVW4Q"J:MW^:O|_y"XU?Qڎ8~:L
ϡ֩iq2P8OD_b*|v9VpKfVϚ&.[j{W/[^#{"y3i_)2Þn1<_(1#Ju1\2(NZhYi`1y;r>H˽dEdX& UEvl}+
2.b'ݎPKeb    PK
    D:U            8   META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/PK  D:U            M   META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519Point.classW{p&ȷymMxjd7	ªXPI&
nv?j}XՊUJbc'Q0ivLv?vNvt!i
?uù{^{󗟽u@~
`e$kBz\'k}VHrd[dU	.F_ǍBn#}$	?b?NDLE[lX!5.{Xۄ
	\A.+|Ch:VawKw&36)&&Ibv2ݾt6
i{8~Gz3BQ02hgÜ9Iiy%_BsKl2iZ(vL65ʹ`
>F')OY"E'f-R19d
$̸iS燲ݟ)T;yj4&0k`:1ړIwf;gI,Y3#-1s+L?Jsvs:dvc:aSVl=_ϓwߗ)dj݌$nOXhBV)\%X[jk -|Y؇_8aQIqOXxOY%>w,<g-<
9- \%/w񒅗qX=ܫߌۅk,tJpDaҎ,Rg%g{1sl"߰'x`uD.'e<ͮbjE^cqr!Qgݝp\i{	(-[Trӊ(O\w4s"rNn[-|AݱDOƗ{XkwK8EK6LrtӲŎ)ӻItsAsEhm溔9耶D+3~7k
Iiq|?&CK3fEu[ޜ$Dusa?6PXIn o$ڶl? ?\FۃXX,A9\힀kM5|KڱiQ6"p_*JF嘭;qX~3iW\*mMt?RJeP~: ݸ;|-6Ӄ ʣcqD"׌1'rrqT[Nja*㉖V81W
t8WGiUGF[*]NIW]ɵ*CǠԚꃨ]&j[#XZZ5b8${DtchdaVi:Ej11uqo"5k+>B#BͣŝUOo#8X:5eIQl4:
ӨiGh3{ѯpo-S&եi<T֫s#IGs|^OxL7
|mZF=KJQճm,hE|Ѐ	-ul|L<xoMqv_yb]8k8:zq'pN
xGl؎c܄#1a3jԅH6U6{Եث(lƝfܭRG>.<ARO7:Gկ=WƓc<>Ӯr<9\r-ǋxu5W9{yPZ 8㏥J鏀pEi,
+2qsg6d
c]	vi;1x-8G&*o#G<~H_!Z,i
c;I1]9[|+dZf ]SYp%BTjrd*8F|;L)ySInŌ:Ke 20vw;R%x%-K>L,_tU)RKI%8g>@|`'ہ͈8%
[M ;gecXwDʞ(I͈Q2l-NhYXÿu{?!*|J$7OpB)4s)^"uKꎞ6RԚ1j/:Ci駙g\g*3P\bW?KUE~=Nj~Ү=rA{Ol#eO "\QXJo6"5ubEw~)_V}Eb}#Z!Xg/&gRŀIuQ\5v^:{taf*bS\f+E=CFr\Ֆ8$($7<	/xg  b*B|7דXS&<Wp@-+AG5]﫥PSժTTUj9TQRscVV_.Ş%]Ps-tPK4c	    PK  D:U            T   META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519FieldElement.classV{pTg&,pPhnX 
6Ɇ}x,#MCZV[v_U
-dbt8OGǩLsꈿswIe=9ssտ߸/}lĘm8 *p( >@eH A!	yXG>UVńhj.'Kq!)qQKb>	ܨi9{;ֻ^Imڕ_ums0No9?)U~Ɣ,n+7X͜Yު@o?=<hP#4Vf-{=iA҄u*#¸Y>`)i#Ƥ󭂀XxGeZfSlUEmbڞf*XjxiĈQ yKeYkzt\.cbBPKɬQf͍M;Fy`]1	,_|]66B5o[,ɷh[ʉQ*Ne+'ʶE&ˢ7"=~̹Q9V@߶l~݁R5Xr{]7GA4l&
'ѧ1
q͹f~W9W9i[t甑[GK΅]'T<n$T<8a3ְE'I
)<RSSjlb
ɉFħ%^
񬆻s@sW>!g5|GBT</4|QAA"`ݮS{&y'7hŢY]PGHeXb-&Y#JhyURiԍG-
7ȵ̛΅}G#ӻɖMQę#,b/[rvi4'=ds1T?9X5[Cpk[MYM^_QWm+U.'+5ZDʨwᴏqA".-uVc:N&(ci2^Bs"\&wL{Oc^U7N0`)ruuSؤMwSo
WMf*nVw5[h)vknt3>T*}Aבwni@z׬vo4av͠}ܮ󳹪mtrASh8Ha[.st׵;ڮp|EQف꺢gh1vĮ6O1,qDWіI\9wdea	)ݍلj,#HC(w/&eH!Ji $CE#9XC0	R8qg-3Q)0SEJBoQ!M*XqB<A')DZ'CAv'a̐I$'p/ȣg[HwߪWw=)JT]J*BwʧV'RDt5}U_dT@&SA=
A.(RoJӃi]FmMZY矄Hm!qZg[Fo4R"u4ŋ,/q~4paU~c,loVe,s]Nx?8OWCj.U\%}u.=x	śJ+~VbUΠDŽu._!k4_<2<vyiD옛s;LOw.ϓ#2F3ɝygX=Nǩi68is`EZ8q;wxM:	ߖxk5.oOgBjx}V=c|Zȍ:ُGϻ)?PKXe  a  PK  D:U            H   META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519.classWs]JĀdA[2Ɛ"RP06AFYײ@uV+#iK4m+6iڡLi;G<;3hν9 AcxA2aKT@gY J2Qgy0¨	&Xd,xTeبi$<.Wde_WUƤ_|C¥ oIx]@n+jWg%5r)gzIF|ՁESx"dSOΤ''OIHN`s4jSjȷfULl679Mq*Ef.jjծv]dٲ^TݰɈ@٘+e@bm6Vͅb$]tGqh9&WBSisV:^6BQN
adb/mdCEwTkeWӦi͖
@zBj玩n?G$+DD!_~Ew o̅d]-'NB^7aCnٺLDےȏLnӪ69}4nd\UG$|[-՘5V(/U]YB${&Pִ+XB*dUj'
z7TWrެY-sޭ}l@RAC
! #0
fVeI-1^~ow
86bteRpz,'bD:ȌIGlď?SsDm KQKdlF%]WxS¯
=dX
~J{Ay{8,`*68H"FXtxdt4N
ŢIw,᪂?}JԞTj[fg)W/`hбVVw'͂
u#g;{kv
U/PsyFGN}E5JFQj([⧾E)-dr#욽7s&15nb׍=/p
4AMa_^VUa#O$鞣'\~lM6}OrZܦW^.
?$mcvFW?䎲;AF݉훜]@:;Ѭ{3Ƽ1Ҽ2͍-5$h_o[BeRO\MT!ͅ[nb
-p+D228Dp7nѪ{Ї؋]O5d1[
v\#ɵa<QhGS͡fO:8ωZ)*Q4<y;!\~
E3dKG)'ZGRwr63x<Z/;KGjl&g'i':G=²ˊ
vs'8cGg?1zS'0^#k4M>%[|IM꺂C};ۤ%]Dxok/8{$]pW'7_@Ƌ|1eOvM̐%g:)! ]qA'3#8ty8EcIٹX_MPH뵛oS!O%ɵ\2_!(S2
nF5y+;uX!,Gc
v׽כGccS*_hv^@$C$ag+#睘CDI~\ao4PKzn    PK  D:U            J   META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519$1.classU]oT~Niꭆ-cc+'M[2)jHmV4
R%vZM!v]!~XFy_xޏsG(rq6X`$F&$T&q`ɫ(PWpC:"f!"

3nk)_uێu2=!Mӯ祕ڞ6[|Z$m/َ+P2j\YonHflGεUzM]N.j
]n5*݃Msm'Ci-Ϛ+C:sa4}jB h?~nei;@9QjR2X
׳YݚsΣ%kJ*.hxNŃpږTC6.j%

)Vq*7Lϓ@nWW2-<ֳ۱
^RDeӪykww˞s8n-s-?gGiYM%=OK{{~;~֝81=V?}L:xhz-@
)g;
#8
,"͌lBdNn"D4ϔ'\_kTȽeDWOJ͇PfEKhIIwq=މxT=q)XJ]̥ݹ6#7T1}C!S&;}r	BCo`S,r&> f*	/
<K{V5N:,A=QW,tlmc"N DW/S8 _0ڗW5|	m8"lhP]0J:ȰWl!,C=@~OPu3$PK!|M{    PK  D:U            M   META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519Field.classW{pTg}M&yy#B hٽ$]{ByVRE[hmZب:8֎cu:;wR0{;;|77ī,Ş L1a"JV {1*1'~10.Ӹ %eH-RZ"
`G|89155%+qNI2=%i/$gp#_N:sBɆD<eq{K[
(pX	[~z=P&k<KՆDK˶DV_z|J#1j<f$obZ6{E-x{hOܶFBm}Amܴ/V/ay5?HhjL(p	1;z vXȊ`"5ma4ĸ|wN'm"X[׫_Rd{(H:L-#,c]RͤhFn[-f(YaVhP
!|%N
_Y%L[ؖH'VwT^!<h-[ۻV,*>$n:Aa:هDΊpԏ؍:c:AY<	<)9x
:t<# :u<+П:.Drm$͔2l锝oi긄:!ӗMd˝}H+8[8,p7fGGY.y33IL{RyiKy=Zf"똶ἢG$=9L:=5koLwEmѓI 1wdn7
YVHem%StNZ,L7/&ad*ǩ*ȉx LܚVʩ.Iiv46^PTmGf|0 
w;҈YŎYKɲP"qJTd
Sa
wJY1ܝ6況.eW+D-ZOpVEԳ(b9V5tW2x5
U|
e1,t#<:;jDPw<4N8^g_Pfk@"f
ba8ECAT$B,B5ߜEr=:]MTwCrDC3mV0Jr6!4\~.$J)R4N`WQXC`(>l)w)i
e-%CPlQ0dh!nZzYKswx
bT"b]s,v',r	[t|g..Xzrͩui::kWrj=g8JA혋!
R09e
n&3&aCK'Q9P'	n%ܻpg%\dSgS9A%?9=9t.n}nyxUPeΤ磻Ѭc8;䷳g2K#6;AcZo{	ymCowkE~N3	W{a+7DyGtqK%iPNq܎D.uEsSQK>J@6$\֒zjhCF6x'֒~kk4ٳKwڽT1a%&<f<({cԟe=ΦIy^Og]J2
 j	urm=I1:$(EFyËA.3_vHba[.r	".c'!_m.|;\ rFAFX"NRSuh).M<d׹5?b
Iw~MM*ӭr6d*i޴t	)g,;E?AgL%9kv?C{|<Ý6¢Uh=gyG7ϞnI4^(U-1,b7ަG ?;{&/Yʱzy'NfY9&B9->bYb
֏2E,*ɣ;H;{G?fjaOCv«Wا
a--?[D20[РhRhWASOg-7~n|U*UUZD^ʏU
UT#vHPqL-h5ޥُg37;=?wzw)1db*jaiC[>E|||4 3C</k2ˠP"Ce-mb ĚUPKu,=7	    PK
    D:U            7   META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/PK  D:U            K   META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve.classWw]KHBb;qɲd[q 
J(88Xfh$t)KNiIm4ا/wg&eH.|~~w?	Of\O
8-	N9#`ҋ""xUzx_pyEx-Рh:/Y|Z`@SD\E㬿~	xAjj$rس-r$sD!L5Cpw*ğ>5;ʑ\akRʦr]2L&;:Ca\RYTm{L'38.%U3ɬyo}1R6R0_
X<,G#.8;Ϩۇ:Z)M)yHQ)Ꚛ4w☔+an4TsʦZ";l%gyޱΫ$HY"\96kU6k]6P+7Xӡ;ktg0$۔[hY+A~m#95'Ϫú~r'5]ud5
Q8$^`iڌ^Z"ãNUbPsֺn#"eEQP(p].?m*􊡨h C<}mM	!JGBd%S[X~ҙ
T$Em,!WgL2X:eH$Y$GC@/60Hz`&ND*I"tO_,=y82po?
'}D&RHo1|
Kx=uś8#JxQ6O#xWKxK R۹^C	cHW8媄k|M汀%Kl]iȊ_;9CaBz5܅']~Þ,ￋbAUScE*r3*LDR|Pd?;ZmzN)6࡚$c]$Qx9gMaU˛sW@(bEI;uԋ0Q٤EwEOf9f'`UHWhT~滠
t5fY
zv/Bvct몕mnծ4:
Km,h7WeiN5⠚C6zG&4FOnµw6<Ɩи!@S{o܂w;6me\Įg!Ԇ!Y>
؋fGtQ>1b?N N~y<$>뽍%Xl0
Է7lqâr_w]*"HhBkhxѷ̒wXՖS{S [zQj{s|:ѳj)%I~>Ҹ[9HkU-Ҏ@QK%쮖6Gv}OKլ9j#6
G9Wa/4pf\{{/in\FFz]FDͳ}7Vi?}g ,Rv`4?Zh;$8Yc>LHr,w.s25 HFm{D]_k=OI
_Q3+;usk<0nAJhXfOHNZQOܿw~PKsˎ  l  PK  D:U            K   META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Field.classWyt\UL^4}
$3iMK.4,tIdL
ZHQMZ,EQx<GQTo$ps<9swwwo{/X~4a۰]I\~J~\ˤn.1ɐlbnK݈l`J))Q?RHW9p-II1)dsP6
](P.Tn(pm8hv)ԨRtzDne֥[9zFL9e.'M+nsc᥅H
)jmLz31ܕYVF мyߌHi`U`cLDj?ٝV&-!`\X2ؗbG<ޟOYfN(cQF[֊e)Xë\-wQNc1ya2ꚝxWżC3UcC#JyAWHHHJ/i[R6fX	Kz,6&$ɳt/[b嶥V2&
4,5KәPz,\ʓl"l.=LGЌ
Ⰶ^)8"ާ!W_8zٜ4܀cQ5|5܄5"jhX5n5
npTpqKNp6iS.F{qc%pwh%i-y@q{SIΕrrNޛJ|GS('H%D*Vg_ˎ$v֧:9|vtI#)KmVНiXVxae2{b?-x
>Tp<eoIYs9+k'aLV4K$#}<UROJ;vy3E@3}d`Mk p{eGL@q7⸛s)3.fB↾ $^[YsycKp0n@ٚy'P۪+mC1L{
G'moڞ:	
8e!(\
K^T%ЪW9^uMNFgz;M[ĝ65	V"x]RpqK3l*m$-:iē^@ShKsr{.V0+yX.Tװ@aχUō젵}	TqC.BVm?Pl'Oaˀ,'jjl=QVK{B;P5/~{`39e˙b:/tVCշi?Z&NMT>TH{;7\hq]& Xp	kٹyw-+Ew\'E	T'0{1<(PˉAXlߜ-b̄8C92RʌvuqE^˸is$)IbePLmM||V~gvbϽ^Mja6o Σ`=l(::])Y'x`bx*pFrw\lcy*mנpGH奨;Q
#Cz#j!+CY^ԃیV^C55ͨahF5j
=nFFQkF0z3:
A&ØokFa<kնhJFFǨޒޒex-zVVJɪƲ]I#eC0
=N)gxҧ"?o41F{~\aN7w+Om<c/G2)u7=Nq܇#x8_~7<!c<<,VbNN<"bCǣ7qq	(o|e8b0M#;Q̏r]
b鶨ީPiP"RjIYwZ+Sk:giH.+k)b
oU;|~9{YwǕG1O)3Fxik
~wx	K@<~_Yy]vr.OV*p֭	4PENwg~/Ex4WQ1YwzkQqj%jB398'A_X^5Wl7cs˿3$VrQ*V1Ky :FWj̼>o
Q:W}p.8]t/YQx g.^9c[zyP8ڐXotm}
CP<-=%CwB=RjIY<Pk)NQ+Su	R"xA*T'H@aш%lMqX~qD3vEiъXqц""Xr+8\Kx$rⷡzgRjt5)]CJ'#HFRz)DJH酤"RMJ{Hi/)#KHROJt)9R<'j\en</
*Fixt]ZiI+u^vTѽ.ialm&*dS)MlX઩bS_PKfPS
  W  PK  D:U            M   META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve$1.classUoTnǩm]XVXN&f+)jHm7-mcvZF@? x$N <0	Nƶ(ssu~/ &p8-oD˛t(h|RQԠbXibDŘn:tDM'z
eG
$iH
;r,3Yna,
BY^kscW&*Ֆ.x;8_[RUoxڮo5^&ú}ZG`ϻֺ.pƨ_ozųݐCӺ6g^Ȳ/ke-`^˷{Ucs$irvdVT8	8:PQqNyL8SS[:+ӎlJ7c
t
ve|=k+cJ/ri9}
qQ;mwVVTM!|.ecR۽u牃7Q7CȵqqH|t_=iY2)roc^57:.hdtl4 %7g(rԊH Ey0Q8Dax6Rwi85M	r}:'_Jg$~riP6Co>YI%+J.>zWsJJԍJ:YQsj6sg9TN]*7o]~jf1o⇝6SMʏ6w0C*&KO!hŧxGK[M{ /W8 pTG8'c	V	X4LCitXFtb6",HDyJ#2F~̶~|_ט~H!Æv!}![pL+B`hH);]=b(\ Fi܏JcPK7A}    PK  D:U            K   META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Point.classWip[W$I,򍝵&-'&Iq'iCF-ٚЖt!-eqhδe7%2)e
Sʰ0 ß
;I=ܳ|^_z<rln $CF!N'ln.![E& nmB0'=CȝBz/(v.KĻmp1!Ⓒ]Đa{O KwH"UnH&7(oؒJrX&ZFb+޲=gˢ#a%6%k4{;<KtKbښ=$5_B}C\S	z(c
s̱p%̾+6f/2
E8oۓ9e$F,
Qk(E;Kǭ,yEw+״XagX~Ol_D*dˎ)dS#-C#-C"gb8`b֘8C&aq8&-r?05𠉇G<*IE1q		y7ЍS&>Ɍ?l#q믲.$,S℁&><#3g$[+fc)Dml:vqf
f訕nO2EW4)Nqʶ
wRiVmdy@"9:(AOG|+ ȁ:p-Pg$/uKtw
2ˬ{:ek,fx"&76yeNdZ׈@{ٛl4)o$&ƒ:2ڢS"gS~٫b}1 }ymLe{R3pؾ5[V2NC>mm`'eO+̟s8pb0{D[Нv:ًNI-rAa1?<5&W?6EMA}J \%0=V=LuO9`|Y8>PlNݫ&h
މ^ LSqxGQd"2	$$S(~V%l)"S*]!Ja{eQ
L"Z,RITEP-^iB/b6!mPҡiTbl#]:'eUeX&ʵGVD+O,+$b}.ǋ]{
RR]9j&=N*uy&8j]FZD65ua2^Xsit
?oWYpf.¨UZsL2pi5MXl-{䵋mJ
AXًYk[.}3Ԟ3Xֵ:)f<]7뤴\RZ*vuEYXX]3n&B{)bYìdʃXwoכxlz	8[*6[؂װo0/Ѝ_gѫЧp.ufTPmQSWdاد828Apy<^QuV/8.NxU'\Kr5>bs+56@ԀyɗK<5&j9vshqyAԬxj
G2n3> BgGg
y{B!fxkK%{U(Fωj+lDͼ-^a(hY}<Y|m	
B>]RRۀnzT/GZk./4ԥyCiÎ-~U	#8waZDui~g(9iE0g0{	I>?M|]n2vKC"q=cxe<CkN7|%{1xW>@ZxC݄mO ~q*H?n]ˀ?rU\278qmXRMvM|_-#%GßO=%ciOM%:P:IHb'
5ӬA{g_Lw큫/Rn!fWz Z) Fn:	LgU[y`(/ov@ѡxpCPK{de    PK  D:U            R   META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1FieldElement.classVkp[W|?N8nidIbC(nةZi:zWWjy(&-P
c }Ŧaf:_~Pq%͞={vݳg?o1<B6ц	&U|x cJVCx<$B.X=dڟB!)!i!!Kb,̩@.<
",W<s|X4yÙ[d1}K
f
VrN+u{+3q`N)Ӟ6R9JvM9F1_{¢$e[]t)J
Tjv̒3l95)nzS/(f-k:cLy]l|ʱBv֔uw12񢝍Bz9mYqc#h̛T5M?YTN9v9ǚ-,c-Zl0acM҂SER92-835JsMvغ&8v|ÈippBCC
z6=%s9;cgb46XPлԽhf76rVRI<bI2hl1
g54y|A W(	'>].9|<7p_4$%
2Kȗez!!_W5|
_p'T<)7X*VX3:>GZojؾ``uǙTɭ1։,L{$gJ&KlWL,6-#YS)=]oMlW#Ѻ{G㓆C\&m]a;ؘPmtJLYθY:(_٣^<,}+7xPp+KM&]ˎmcTQDS_,yR]˘2Kw3òpyG	rr^;2A9x"P`oî܀M.W>]C
_qq#|vbzڇ((hzl6OXo
GMF*.nF hWr2BK8ZF~Nīvc :kh^ٰäGikڲ
cݴg
/@ge#W~77>4|k'UW=-HDU`UQuϳvC'Ѫ &1!qDBoBl{6U=dRpWR)"Hk+:ㄘIJwLG`4` u6BH"=L
*!AD%i'Hт/ɕԾF#ef*Gжz#B؄(Qzf[[A,
!txi4*)o*|n!=&ɘo
]}<^JtoLXVYa\EZ5/bt꾄T*Ro"In@TNݟփzULtN[+ҠF$k%jUзn}I_V*Z$zd_Poً><z{];leسWYx<~zuc{K	O$~Fė25__XůOxǫ^?:7oXU|J~=*Fܶ>EXlB{voP4|ޕhgEn{9cnۿ8ث?@;,?qW70/ߘ n4en;v)o}
&sQw*v]\C*O1]BcI7{y&Q;^PKf  U  PK  D:U            H   META-INF/versions/9/org/bouncycastle/math/ec/AbstractECLookupTable.class}OK@$iRh럓Ai{<)
BQA}.55JVzQCEQ/1;o/ R  VAv{c+Mh\D2ɸsSގeAFĔWrn3-f^0>7in	)
~m!ƣUSy'#"E5OT|"ΒVl߲秼m^B8Mm{zoկ.kWGꭿGo5PK̸]	    PK  D:U            >   META-INF/versions/9/org/bouncycastle/math/ec/PreCompInfo.class;o>SvvVv6FҢT̜TFTϼ|ĲDFtҼ⒜TĒd}$@ 9yIY%@ H21  PKCp      PK  D:U            A   META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement.classVrE=-5<GDH%Nxŉe lԥLSB ,FP, ~U<1.
6ts_}{~_A1$x%x£;,aQf./b?+	a]ǆu|*]o	eǑmztl
-<uE:
DVu|(-lOV(ٔd&1-S=(<[Y dSKڍ5%&4UZNs?j}Mh&[&i6ն,ھS߭e׍Jd˖tBo@;k.sڠׂ*аڶwXڱd,Ȧx=M#]k#Vc GfȪ5UYi&^ԪteK`s;D,oKm^@
9/<Im߰?֭r:Iݠ_	3哘RSEKuqPSe4Wmn]Xm]e`y/aJG
8k
L8">Ɩ[oO>H=;뵇+1}yxtG'OUu_L ׷OHG]||XMǧpoy|~Oqoq+gJ6nzw,]%\פg*S>~ IMp[ _ƙ@ӶZ"q!LgC}1\τ:kCGӤO?I&!9ܝ!\u ǈl
dgִk>,9 DlZ~=Fܞuzf8bK$:П

׎0urf%=LGAc)yy
,
J#;DL}$o߿rJ8O&Pd '4IGq7{NՎs$[A?0|O0<`pUA
υ1)Ԡ̟1|wd0x0JIQ2OiqJ1{ZPKde  	  PK  D:U            8   META-INF/versions/9/org/bouncycastle/math/Primes$1.class}M
0h5D\6B<ACHHZ JLq{`1LvNC!Q~] Fj+ST[CBXXWvF>VmՆ0=N'd}Jl	 EpFG%/PKA      PK
    D:U            0   META-INF/versions/9/org/bouncycastle/math/field/PK  D:U            B   META-INF/versions/9/org/bouncycastle/math/field/FiniteFields.classUoG&b'
%`H7!ۀ
NRP4i
Bz֛a3vQrԿ^zH=RAD33jfmbj̼y3_?0L`B.p4Nlb"k&nY->HaćHac9L%ףyJ*CqJHgױCJVG{B׺&ɺbIopU!vG.WB2<1,||vo[b]Ss{%hc{z[nS*"Mwf4²3LE-Jk{isw?Íf#uah	i4
բڴ2TTA[~V,KrvmZjWy	
2%gpgLhT'Z6"2KgM;
HJ83Go[U4A^]XGqd]17dw^1wé^D5PjT}P8v#co+UtKU.]&Pf_VH:|yyבh#vƶvr^uuIt=CjzzArFe&J`P}Hi 
ߒvF)VC#^ϗa/Ʉ~qSHP ~DNcMp%cpDyfO {ξDH]twE,u'zB>˥g8s9}g?DNS󛢻]%p#4(+Wp:Cq~+t,FR<O)Ϥv=g#l~͈[aRDePK^	s`    PK  D:U            A   META-INF/versions/9/org/bouncycastle/math/field/FiniteField.classM@Rʁ7{rrC$M$`vvIPb\g^)aٯ
L",oR\/zA¶6%YNH)ޘ	Íqִ&P]+YŧxxΖj;YQ=@mtBBHPKl      PK  D:U            N   META-INF/versions/9/org/bouncycastle/math/field/PolynomialExtensionField.class@DgEWZ*&~qxK0k~el2&y/ i"Aq}26S\	miD%xdw7vUR_X{%g[BFJK¬v'Mf;'IC3Mq*WW@>G0PKeC     PK  D:U            U   META-INF/versions/9/org/bouncycastle/math/field/GenericPolynomialExtensionField.classTOP(cáPB
@3b(fPuVȫ&W&c<kCϽ|; E܉#d\f&YdАsQ
7eb6[m[[ي
Ue,^h^.5/1tlSڵ[G޷"2lthgUg3TL?n5ԫy5uW7<M4leGwBc3Hj̐ FG? dh~ZFBW-j2;X]+<p+e3oxb]z[r
&ӏMGx{4#` )
pQ%(*0C,Q0
&ޒefHu_a7Nb]3a?L':
&\Ζq>hBFJ_rFJk4-PDL  }&AM"FIa5$ָ!:}Yb܇t>^WWJ]dXqRmn)}nhZ%KD{_#"~B^|A$$?",	!|9DILv-K?PreD@T)%b7]4, йDI?PK     PK  D:U            @   META-INF/versions/9/org/bouncycastle/math/field/Polynomial.classE1@D#`w0и7P+I,"d5PƥrI޼b> al\4̄QKGvϻѬm6ܺ&qrvct2]TΟFԥTJ>$aeBdy*7q-Y]&,_(q*@01&cPKQ      PK  D:U            C   META-INF/versions/9/org/bouncycastle/math/field/GF2Polynomial.class}QMo@}8q@	%mi%$N $-B"Y._p$CW~b
E	Y;~;? 
φK6p5WgUu+8U
Ö@n==lyIG	성z*}*!n謻q	$zzˈ,;G#w'#dw~&x_AﴸiCmKaCm)ZXsp
*$$a YzPE/	`dkR@~Iϳ0里f?d˾e0BPw@9X&)8Tt}@LSN&0ic:݉:9:KN>1N;eNZ'(Sϩ3.hia`čBZ!DBMhe*	͡Yl-&p)^(/PKK    PK  D:U            @   META-INF/versions/9/org/bouncycastle/math/field/PrimeField.class}QMo@}kq&i q>qjC"Uj6lql7H~ T@Uuֱdy̟˟ bAUXrp:X0y%R)0,q5dx+t#cvV:CJɩ`X<"}UP3R˝\?#g2NceA1809V<xw!φSGq2Nї^{w_&r*$
A2OT$jƦ碉C}ã.LtV6]bA;Zҗx?7Gˠ<O["ttoԊ5z3]zR΋uu4
hIPސ-*Mza~eNz`iߑ9MtJ36	oܰ+D߼1.T˚ԡ/]PKS    PK  D:U            D   META-INF/versions/9/org/bouncycastle/math/field/ExtensionField.class=
@F11QA[Y٪ `Ǹn و^x(qcg#
3`n8D;DX	hHʤTV8K{X),yN`&45!UvZ6GEƿ^-M&ɉSKy_@ xg'h!j
PK!j     PK  D:U            ?   META-INF/versions/9/org/bouncycastle/math/Primes$MROutput.classTmO`=V֭tE
M~(q		ɀEFuqvia)ADe/d+5w=sO <FEpOF%1ct22:}7Z'Uݱ]Spvyv2#Xں8^-K&w:٦ݮteYܩt.CXNSk]81tW*UwDyM3ܘ78|Qysc;au#gebM.fh+̻aqY0ݑ=NE7J2,V/k~gwo^+ TL㦊)d0,](0MI*I˖n57Goy:1:!̿#>
]$iކwL|Lg}T/>/I-?*L9AԑrryѯOQЂ=l`G;Q's@:i:A?a#
Y)|; ˈKFqgEH*塲sAlI|uH>b PK)
O    PK
    D:U            ,   META-INF/versions/9/org/bouncycastle/jcajce/PK
    D:U            5   META-INF/versions/9/org/bouncycastle/jcajce/provider/PK
    D:U            ?   META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/PK
    D:U            D   META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/util/PK  D:U            S   META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil.classR]kA=1붉h[MԶ棸*HD(BTfv7;awҊ䃿IԻҚq{9c#
ec
8
p9Jeˠa(CSw3d!Tdȵ\_]y8qշǶ~ϊ}?~QaXh[mØc.Q@7YݏMX2y24Tгj䋉CI/쾐0PcבNI5kD,9GD5jr@ϡ$<'Pgxn_
PXPlєe0͓&ӓzV4Y&S{Pk_M@y^$n:eig=0<<9ϸhrs(#K6z`Ѧ\"YF6];@,:33CIy\;G^\;A
ٽ	HOWiMIR"+6Ӯ%H=Mш:NU$~ Ǳ 		x_kd
*)wPK\]    PK  D:U            U   META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil$1.classR]kA=Ӥ]&~ZmJ(R*
i-D>N
_UP(hi{׹{?<½
q-
p;&X$
,;CŰHNm:Zs6wP71::UG[K)<eXm{(R	PΒîɭT/uTRN hrLN؊p!Dh`aߴOR6DmlLʉKH1XYMCEkI`B!C:MbPdncǴJ_/&PIk_L,Ԫ]0{3ӅBz!	k|k}gHtE%FYs:(vةO}BEa%l-ԧ^QUOb+tJ6<%FdPKz    PK
    D:U            @   META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/PK
    D:U            E   META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/PK  D:U            R   META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util.classZxuHX~Jm,Hza`aXF};k,H;Rp&i^Ҥ&
0M
)M4M6m4ڦmJmJ33][j{s\q"W4~ω{|ĉhǤ'>OȒOVSǜg<^'ge88q>/³O+_5LJf	v"i/UY<'?&LdeOddBF,O0z|E:~D3^t3i^N~CpHx	d%c.sؽ<}Ӊķ|ۉ64ߑU=':N0
~D~(??Rc'S'^?UgxEHYT
?ǿ9i~!)į*lW_kiG3%yM(~X
n
"'JwHS&s
)
U(TIP}Ʉ
Z__Gtcpዎh]zDI@`8#ca yHp<H!{"8Լx>ŽhdT>5z4w6y ={tϮm}x Z<ap8Ղv^Bu*TJ!UjD=aLx-DdЂɸn{1SK`|<fD1Y`K5ܓZ
m9TcPބނ2'8(j[.ñܼC!=f4:s*
-ThQF]:):*L\$fl!&QֹqQ^6Թc"`+tYl}Q=bFg(2k	ae!
I3* h2dHV};zhTZB5*-e*-*hJu5QhJVAUMEF;T0y6qN6SA-&ْ2#AZm$j2'M*E򈂍*5Q<mVK[ڪ6%"A>Fjc3:\uމFCK\A{DUΞ6i;|B-bqT*ڧxO.,aL4	lUxVRF֮Rut+W RU<U^TVvzz	s/<$EX?'u>u#"Sz:JXSJJCt#nnA\-KIU

Ds:Q(EChXOZ$6QIQT:NU:AU
[nao/ E%btb$Ϋ*qi;Uz͟dTzUupŜS 1fq=Mr:i(*!YnuW&ksA|zK^$]vq@٣_-iMZ1'Mm?bhcZl,9FXupL`_춏5
la摽M̾zX7tbJ$a}O,:.Wfp/Y/M ̂ewm:{|qN]mlv)MpFFt g_/<n4!N7""c{cqc!=qVY|{0k,@h%#oǹeHG:VXMv).U̪̽Ap;n(
,
tt	({8$I+ppׯiaAB"wN
rK=_^!~y3r
Q͜3i
9}=#[쑫.9]+
YqK8#^,
2+@(9Z̧EEʾ0}aWXvG)+ۿF9cV+N@hbҜP͕f˼EugϕYuuWh-y;+K"C!-ov{)ǒͮD<	ROmks\ֈ>.{?pЍVEq拒\]Jhpw6Jb|
Y'	KjBߜkc-9l"ROtl5F톼Йتl|Aqq(_c-l[yZvA}q++ShQk	gubk<OWqv)ǻ\ﳯ5cBGB+]k̮5K]_r*ZL7X|QvP*'o[3בRH::G/⏸04o^ɡ"23yaF
_4GS:G	ȟ zvpOܗy&AOnĝxD){PBi@pH<r嘂R3xU"2Y%C%8*Q=xقI,|13X&p/资,I9.j?%"biWQ:e<[
t7Qbns+=
7]7`C/0n0nF%
6K%`<f0|8S_;ރX *3cw+X(5*.y
N+G<	\`!KހG}r呷l?xCŹE4X뙆k
ȿ[ſ[3lӘºjCaTl£ֶ2Ex@?;4t!R111Ɲַ8)l0R*Ůl<4RȪ
fr GI4xLT?F6*2MP7L'y^r5sPxn5m)lL`GWt;g4.niݳq}m8	gC=>-8}p`14|L3"aD~c9F,_>U_b_c_ǓSW|Go>	~C/#᧤eZ
BuvVBXakJ҃Uphf6hҸm&,e#(Yg~w6{*=xf|xv&Y`~e%j+9j~W{l-270j
zYyw2%2Ja_7WO`ܷ86)&_TMy~
m]]v4>3X>9S$p,wYѽLz[ʧ7U^U_f6zZ2b!-2rCkb7C+՚ $)x?ǔA[9HzjpOsT?	zj\79up4AA璐u;vIz(Rj:jF=mvm[#fdv`-gh7iU[ͱzDHĵ-*L)dmqvM)(0	h-eQi
'0(hqMb;>8gb@OC.4PtTrH܌K,)3z1U[o>:CLGllN	.%$y&w$WiDQbM#syc%?K!fN)g0t/qT/PKς  %  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.classY|Tՙ$w!!	hI&aJhJd&Lfƙ	Vk}W*/dkmMXݺkvmmwOsd<n;sw;y_XpZ<v|́4<ہ<><9}]u=U]vqy~_AWPTxIu/;p5^Q_U+_s
R^W |[uϩQ]4\|GÛEx[?9wY}_]
jX!~E4ԁ^.3;Kϝ(w&5B
~k
qU8x׎:BB\BG?;ЄCS +tǝ8Hj8$t;IW_%d:O9D&vC-qv"ll)ɕ<>.S4=j\N'Uo9Cf8&g:W\%9K9JOkr&szM(dDẌ	2WB*AzQ%[Uok!ň6y[j1񺀿ɈE[k^:od ͈
{Qo7\q6m;BN7]>.D{~#!@ĸvD@8TjEg]UR##a}H<(g\ߞCo,wg%tMo3<oܸ%]ht&?6zb#wz@SuMt(rMhuX PG:ShP
Q25Bm)+ՄF饞-琉zr1~ĆPRm4
-_o 
Sncf=:nMJC4ޔxF#jZ 
#+OBLj"Э9IGЦX"Il
[lb$'D}sz,tLN,2@(~ʜLwhR)#JɄo
!mk֤TLLu4.X=<*mavO`K*XԬejwD}Fu@e0纪@pZ``h+md4&"O:"p4nV%]GݸGd`"t9GPe,eΓe,ץ\VtQVjJղF
ԥJ}jMr0FΛS+rW%wJȌhg(L,w##$TGz`PCX\źlF]d.&M6,Kb	~dD3BaPWk8ZWBkѩ%le\VX:`IT\&p8G:#3egxui`
㮀;/(RЁ/5*5ieܣ}XrD6VvRIςķ[/Kt܁;0o$%tGe0)Fk.Z}Fus\a>bPՈjr.W:ѵ*R"A1]n/rfdWBT.ʵUcx\@Ak.]n[5MUDLӬ`(wYvomೃ13(Q('C;V]+2w%[ilٸ7YY(=gBp&t~yxY_pާ$=DZA:mO8	,!HfjĴbOUT%ҩ (e~WSE)ʰap+֏m4ԇOVTIvs>
$ [+xWҡ:ʬմӫ}x+(K%QK)AǘJǼ]­jI}3 UXN]Y쩫+҉782
:oYC&!MȈ)S4QNFJ'AT15tRs^q/1˓ DXiK?E<_ltgʊ<`L=C*mb1fQOp	2	F	I#UY FaRriM%ֺ1А)eTlUKA[F'<\YfL!
K:ט%rPģ*TǆŉGԜUP_]~ㆊէxeYQK'#iⲷhrwB#ѮSU&wݾ 8Vͥ@PHCrR-a37,SôTeLlddL@omhUeR2)KMhER,`H>T,{7V낆 3d'Kd>Sr/Ӹ
+H5ônKk	W,:fIӼ8c	Y@h49T:HM$:H
G۽JH1 N(lXgKKUӴr(.ثFПPuy.5(Co<<v7'gm1zփ3R"vƬ4iHhkob(J'u=3W|F,(A3ʉAn/JgzMJF+▏VirP]<dB{»֬<Q:5=6`'Y<{CcAv[=raSgHu56F&/o_aZ)u:f)|fBzv|7X6q/8jK^=ݝ^>0-y1 "978]b(crm|mpgpQ3̡M
}`jgUV$WL8
6qf')n#.Lg#Q
Xjά[
.#ь`v	c#&|q؎|8_E+zHB@Jٰ@=N$.9)>_AF_FF}Y2-$6Mgèq#EN3Laecgڋi<S}v3[.[[;t@8d	
WA՘J+:v[^N vȯt }I	j1vKbo'%;H.,>ԗar[uN3
2ʎ4֮
lIƛ̮	rE6m6YlsUT%yn8l< Ņxm8DxSj`0/*=,I܊HG9Ra,ysḙu<AQ5X.rKk]X˵nTЇ<9sXtsܗ}Xԇu&{itZA.}h.YJ4[p:(
)p3SGTG@^TB7z|zߠݼIz])w(~D蟚GXn?J
MJХ(;pgB?=FwJ\Io%_:g4:kt;=~HSZZvه5e;݃PBRfeNb_/?uuX>tXif/:|±o` ~N:%u>NooQ
>:jG>d;W|HM|~fIt<'6ŉw$?lLrk2
3pL
p\
E3M=`.
ǺQjE?Υ|RE&FHjRAC=ݪK*Pd.R%%ȗ2!LVH3I?FLR?#&h]KV}uG!%9ԯ(|=hI!dv}@KȒ夼d̖*tjvdزrٜ9&3&_ڇUm4*knElTS0ߨQ9R!rGSzT(-sZ} %k}1NFJk#r	&h-hm&&xO?t8&8WjY/[j\ӑn+&NL&V;(w?H|[mr_A&eSu-dA2OX"Twۛ{qi}.SYmR+<o*5(Ƞ[ۦF6NK*rrz{з`[o=
8[\\OUFM]nAFampƪ{tN3:OF"w#OK[b%ǘ-&!SUM}P|\N9G{#GCG/$Tbijr60(mq,É aC +,VQ^4bo3>\Iwn$O[F"pT|\0GW1ѯVh鮣	t:
Udkpm[&S	A4z$񤹹~S& <&w1$fPKikWp  
+  PK  D:U            S   META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil$1.classSmkA~I{yiӴj}ibԼhN%  l6]ػ*5?%&F?{3;s'x&\
dMLc5a gCǽ\+ޮw`(ZPrT:1w
o╠)j/wTx#OLu}|aq߱_6ZRDT/U8qYJ-Wבu!W};2n[ȣ`B,J`82!vr\0peD>Q
Ft}<<io	iwTsR<췩v(#9B^T2dȞr{lnQGE
$	m;M,uM=5甆C'%)`$DI%{=B p~/8 ]7򓳴7aQi=9tŦyNWL}"a>Қ8-b L<JC1@u2E4\qyv,宰XygPT.2q,
njjdbPKB  &  PK  D:U            _   META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util$CustomCurves.classVRG=#	V`l\@!%\2HҮLWR~u*.qU*O~)`aCRiu>3_g 1e\FT2T\bɸQc z1рI	S2B]LiFFCRhl#ŜH})		Kˉ'i[Rږ]$Cam!ָ3L)~eim<^8y2׀5-I$c	S:]ISSVԷuq\-jn^庚{04L*uy*:OǖҐ ]䉠E`<
9Ϫ9uѵ
3'aU'Tg
>	_(АUczTFbqkQNR|bPL8Q.! C6%ĦKH%1tKWCi\C!Qck:WKeq[՜bӮJI쎗*zpR9<)Rӱ`h?\'rۚkX&`
#._	ъ| RCBAbXhkNڲytW&V0'H
%1է㔌C2Df:}^ x"@3kB_9Tbfl)o,U{re)R;MnI@wkYjR\}cM%S"uʣAqPӌ3]$@ocîכԘ}rph34]kZ'#C	zק]Դ.SˤUr$cMB3.g>赫FKVv῿@j`u0JB=/҃{hD_jtP`3EB%H}(~<z׫֦"y=c;8V*8Xq >hm4F@^ucvwH(9/PÉSoG ~ߐE5	}F5I
룹\G;w#pelU%G5 qC'vin% nA;I7PK	L a  	  PK
    D:U            :   META-INF/versions/9/org/bouncycastle/jcajce/provider/util/PK  D:U            Q   META-INF/versions/9/org/bouncycastle/jcajce/provider/util/AlgorithmProvider.classNAƿN+;
;p+c1!$VDM${ze5.eeBP]ʂ)73| \`X~B~7MB3e]XVy<:O3jV`Ļo^K^]tl;Φyҡ'J㉮Se7s#CpXJQ0MF
O%|yF1ROGLEV]6jY=PKM|_   N  PK  D:U            Z   META-INF/versions/9/org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter.classuJ@gjmj| zqЃHbB`acOh^̓CQCA7z )L8H8'E;z6<&gJ4[WV]MXk{f^"-x͙%tVy0oUNje8Bt,R }ꆭ|Vp?^_5VAgf&g{j2ep]^bѵ|!ü%럃p.Sre,i+I v`ݐ8
J{JoPKu     PK
    D:U            <   META-INF/versions/9/org/bouncycastle/jcajce/provider/config/PK  D:U            a   META-INF/versions/9/org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission.classUSW$
hh@@Vk@AbPk\6KXXxkǶ3ON;gig|>Tԙ^^'9M >dݿ7 ob7)xbI	f˧1^	^(TyS^L+Q𡂋2>Rpɋv2^\K?T鑉xt(Ex,H'D:9E%H		MBhy{J5KyJ[m_'MF2Cd:3&[Bk
EB[4gqMTK
%҉rιx:>$ɤxee&1|.2i[F>wk{yUej*oyQImUT68	˺dD)(7~^Qϔw%$>ZZխ:k9T@mMjj%Sr̚T&mU[LNoNϓouXZ6
㢮,þ_T?.fqKcf;ʼZ/)y'%KӇ
Qqp%=gJ*ۈqDp`"R^E#朏;m&pINᴄNmfz޸[2>蘓P!y=oj,p$4N3lUu";Ԓi/>lc˶q
W\v٬!AK-nۘB4jF\iIk
Ш_C-bQφBha20uYgԢm*mC+3mUJ-R	k)6(TҝUQf
yPT/>ʆHwnC Hx_UPK
F
 >XwWp%uL|
|"U* ~
 ~
.Z=M
.p=;xO⻂IcFj%+|8(=[C}OQ]c׈:мve7Q{h(ӽ!]Cc߷
=_Iw;м{ݟ?	bDk1B"A"dv<gO9La̿	ڧ;װ`Qvrsv[F9qV7zH`g00q	67n#1;]޽oe~!(omm}&nm,AL'3?!mQZ4cBk%Utd)EG>nd#]uw7p
u\oQz}p7<C%7(R^~{Eq6}@A1)ÙC%_R5_1ooy!Bu7-?C*їKDis=PKn
f  
  PK  D:U            V   META-INF/versions/9/org/bouncycastle/jcajce/provider/config/ConfigurableProvider.classUN@@)Bo@/X</Jm(	H*Eȱ:Rԇ~@?؉"AzyZs_ [؝E`xtS}sl.:JN ij]}Fz6~ivl\nLP?wO
xI%0\QXqZyVtӴi'Dc<޾!0r6`)\L\V*RZZanda"%<6TA>UH'
A6FCO{+Q\^Qy{ҥo9]pL`g똷miq3Zg\kʠ%*\v*vg_
0)aj0H}*C)ؼf#Ӆ 
_*fWn$in!D
˱`4UVQbv	&60#RfUy%`1Tq3"يJ~ 	?aV#h,)A<ӈC<05 x.Rˉt<LuHG89Ӟ3LPK1l    PK  D:U            W   META-INF/versions/9/org/bouncycastle/jcajce/provider/config/ProviderConfiguration.classmKN0qʫ: J+"JZ@L#Wn9vEƂp(
B^xd?e|;pځ~JvU$JH0	SmR>.Ea%/rB>fY2?38p<p6d0]xhoa8+!wBg-7Fn#	)bș5ylg1YI"ԙP^/$rGLD:[Q1'7C)aЫV"K|Ih4Z&=hڂv];_|pPKbP/-    PK
    D:U            1   META-INF/versions/9/org/bouncycastle/jcajce/spec/PK  D:U            L   META-INF/versions/9/org/bouncycastle/jcajce/spec/DHDomainParameterSpec.classT]OA=C貀KA
" 
mX5чeԭȓ&M(KZܙ{ܙ{g?	$cAe3\ebЅk<	:Og%0y,$CaI7X
`Y@}M-h3u̥3J'+]sGMal*mRtl^:س-ujb=B$qY4%x?0Y蝹cg̢qR6J[.}IFW u:izrB}oΰFG9vw<(J'MVA3jD)iUJ2:=Cd¨cDe0 ,c	pIЇ~XBJ`J^򺡖)95e!N7Zd]_Ʊ[;vrnI`o.ox}#}J#BKK䛸!~hDV%vAD!GZsw(p
DXr&9
?HJl|Bx $g39+5q|[NB%?理k('ʤ>'\iIH9pB+EBVUR
h;vB3Yt!]#ZW /~khk}sBz.moB+sDcs2LqF<Bgǝ
PKoUH    PK
    D:U            1   META-INF/versions/9/org/bouncycastle/jcajce/util/PK  D:U            I   META-INF/versions/9/org/bouncycastle/jcajce/util/MessageDigestUtils.classWixW=O=#eeoNfȲ-Ǳ]'J,DNL҂KSyliFhFIZJ^
eԅ$%-
}-N
'({μyz.]ƿ~-K2/c^!@i@nS&0)`* ۤsWraa!/gqN4j._#\Nm\.._/
~܉D˻E{wn?ތxoEq7|p^|@|pAxPG(>&~|˧E<$aYxAJj)մdL2,T(Dt2ZJW|Ne*5`Rq#'iՠb`O|044>&hR-VMu:iEOVNS}':	į1lMiDtf;ɰ$b$U^̸Q,KVo1^	-6긥$BbA%C`bn~NbW"](27zXTTRK°
xLgػjJIRm;Pf+eZ9%S	#i.E|A|QBGiյ	(.3,]~Ŝ/
Xo/pg
jXW$|xϞIxcfIFoa8DP*Zr.V'p_wO]w˘&		?#C%#	?7Z.5ũyJ~^v)~Yd/W~mc<"7~kh6!Nȗ?QǑ=eSPmB3ݴɄ2P?ޖ]+҄[i5uL:NS-ԀΧ3^קt㬾͙YuWFR#PQLK-*Ѹk6Ґ@&VzhJc)L^Qbetz]mGm)WiIZ5
F#~-9fN(--ݭ.cs,5Z<1Bi䴬IR7nyL#E"~H*ZF6g#63JuϤ_MJ2Xh?n-s%+,">R3*"ۮq2#1nfZ2Lcxo޾4*F#=>Ta/uȢ>OOIaO2N
V3ƔZ-;$,#7-ԃ19,Eu]EҊitX3WdZ5w8߉LgU7_{\Dt:Yj1켮j7/~}C̀ᘍ\xKH0Z_Bde,c0&W8F
[Qag૿

G_ӨpU/A f!>eΖ!(z:A\m '1Z~6Hc`YT6\K/TpwJQKX%P"^:W`$M,(/bEFmR]hڅk]hޅ6]hم5.UB7]FywgelgB+]IPBr؅}..wӅ\[>0|˨<E8)~,Ȉ!7^fTFy5<Elq22쐭e>l+#8dw,uhu
X؎MhftS؆3wp#ۉ'~*oZ:̇{X#Y?IX,v;<#ǞA;{ً1t֢׀|;I݆8{jSvIE~O$/PKZC@  ,  PK
    D:U            )   META-INF/versions/9/org/bouncycastle/pqc/PK
    D:U            0   META-INF/versions/9/org/bouncycastle/pqc/crypto/PK
    D:U            8   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/SPHINCSPublicKeyParameters.class]KQ㪫_YAu (4HD0ȫvuЏf"nyaf_ l`@3fK""~!ǻ^!m9_gUz1CJlrd;:}:%h+mxW3
c wh]7PܳBt?h7o[&vCK孇)$P1B)ġ3]5}7p̱)<ߖ|tirSG˽љݗa_bMyeĘiok`o0-EFyIUi{"wn&
 EҔg&pk9X2)#MnxA'2,iӯPKUe  R  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/SPHINCSKeyParameters.classmKK1OQk>j
V*"HE*Fp#ƑvfRJA\Q❡Hnrsn$'?_ ZXO@!(V(&PbH^:`wųq#\s}-\L̐$h?@VR95Cq}Pww/+þT7?NΖfƪPͻOʒNTUۼkPj݀",23z}oZKz ▚уZ>NQdH{c͂A00F85(*!(Pft	ܠhe6(L}+IƅpH%2(Sw	Sp*!_PK?Ou  4  PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/SPHINCSPrivateKeyParameters.class]KQ㪫qawjѹ
H#D:nZwxWEE?ET;3fM,[`<2q5`"`^Ђ!Ԯ2DwѻRZ>cɐ;l{NEǥNWb$+.oix R|KjCeC'@qj*g$٦P'T2&
	,b)(L=_uyzJ޿}Ab̰ht+<qRbL\v}6lWJ0ڊ2-8!t%*kO= 3S4 'IRoO3gXp*0~b4wPK$0f  T  PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/PK  D:U            >   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/Fpx.class|xGpLtjw

2b9 D0$@ $!Dm	668
9s>pFzfvwv%}?g:>s ?Y`27wd8dŒ"A$?2I</"U$w[$GDr1eDq`2B0K$&D*&.H8N$6!x8EEHA("Q$d[$)"IGԦ"IIH2EEx먡DQ'QY$]DU$D]$=Dm%=W$>MH⭏(I_I$_$D2P$Jd(HF
uj	&7.șWbYSmuNʜ憦e5sM(,c!5u5M>=g꫐dD,(^d^uyXb]Pla>H!t| Ok\<-[X6!٥KHǒe5u+HD:YkZ[*t?ʦ:r5f"@٢`>fYYU͂e˚VԕU6PǏIӫZU:CIn]$ukhU8Y"0!u:&"q6#x74Ϋ[PYUPTS֔ck_Yݘ[iyNHHhn#	$"VjVj$Boe%S&ze<!7XP#WxRc[aƊ¥+j"4<[SƓfLUFH"vHXGn߀vct^|^Ɍ2nв-Ko@`KBs˪*ѥKh[VU((5VJS}$l~Iuc3YUVXUݨo0-miw4#Q
A(8v6(i.ǲ&s	3Z]:`
n\C5ܦ[Z ܶRXװsVoH;ްᆂPu~.M񣃎Y57U/3@dN]VeW-fZ'C	>ӽfEƨd肷
gf6QɺB
6){p1RNqTͫEqqbF2]A'fkp bGVЙsyUR
&jmp!rf|I
c|(Ȉ]^ڎٯ~|4o/jSƀSX#41%eR.(i+ԈiiXkQŊ
#6(
=crXTTXWQKHok`'\B@FI/@
·F,&<[lV٠Nn؂lV-șX_KF& ^2Q B \a#(<#P568K$O|fka
^T66R,L-΁68W]$X<) SD2UMp6R]*H>.N邍GQ<mѱ[9ET{mdxnC2tN%XedJflRj(,i62H9Al,<eH	eBT</ޖ
?F*m
~j'	tT44&[T-tHЕ }'ꡑ(X#fx䩣)*M9hTaYAihƓ&Z2vp>4TQlf7識*ũGN.h+/&)-+,5yt貂YYäp*UQ4ri:6WwjѰOiº
=߳OB|z}9١ܤi˚t,fO64\T39aZᨩ'*+J~;It5^.qа7XRo^,Zлw/Hwi՘:pU(ViWC8F9G:q
2|9ٗArWo((i'TҐAC2x%!b)Pk`A	J#t{@y s}47To S
1z<ܯH 	@&JtɃ.0"PkprsfqHFK`<ťހKU>oXQ!{Z>PR^0+렛C 0lb|Kt:aA! >a/耼w>XC0	T2̇ӱfmd2W+ F_c_yEIrEsJ6RgaV5h㸰>e`Pb賏__>ZUmPy&#:tjVn<;g`c)kQ|TYhEwA?EKTP?~̸YEͰl?	h%.OtK-$L$PDOCW| CBN?@%$$c0s2	ra>C8cP,T.,X.X2*Tcod֣."d٪ǡ (̏C&jC:[Ga
1><.F\\0fAƬUd(raYJMR7F=D֌A֢BOQVe0::mTiYm- DFX*eɪ>-|Gϩ7k?8GC_3LM2!$no-Kϱ\p04,@'Sp{Gcؚ|$ ,Fpȸ#$_WO
*-	_ӝSn>H{ާ1IJ*Lȍ+XZ.jBa

1؍
:R91hDNȩ9&t%0(C=GsG%5r+UP~,geTȗڔ]{@JՀ>
1r <;|M.LDSy
8?9x\Lp~~}^F}⾅:\.^C&.`FC :Fe1PROuyCiˋr% :dyWT [r/ZQK˅+4<(퐄!w3C{Vը觽zLifGm9@
-h7AZ^Q ۨ4XGb& A%Ls֤:?=ciH@a0
-k~pFa?TgQ7>\aD}Dg
/O8|Ilp؉DƓTL:7NR !#H2Y$TaM3D֒R҅@zI6y$/w7i!R駍,;3BC&{gu<
_0¨\-,z#_	t]`rkzsF배0d2R0z#)l2|T()91nvGߤ(>`A,@:{+e7t5鶫p]0Q>9h_ِy$̒8@Yd ӱ37	#,Bf<2ip	IxCvP1
D~hE Q$#4joXoZ*21YF'iI58BJjPI0,&zE0oL.~aoQYVa%J"@q]Y|bW̓!8ea6R-:9݈e6A=V5hogt	a9&cf u$vX_1vu 9~_3[k0ť[u)K\<O΃m9WL5=ԭn$z/J~wyJKE.doP@1X6\]
*ȵ섵:WݚbQ%D޿ P$nGIEI܁%qJĽ((P$EI<'.7v]Yk,gxv6;aOtsKEv;d0͝(TwZ;"vL#ޛ7vGpgb#B
yhM߱zCIxð?q>IpЙ<=sҞ|#/X2Wp
sk0KLނum8wQ}>ɇ(mA ߋv"j[H9y%Y-8tG9?#1¿`WEwAW`wVxCOowǹqxhFhqvE[+BvK8&NSp!+L",",VW^k-2L~!ŠCz
S77#d9Rz/sw"{zS4Fx d@DGq;~0&?$3x>
gcո'I
/JqdO$|)7I	#]J&.MҤT)KYdԙ,&+( Id;_+R/rCrɃR_ԟ$呏|4|%
$ ,
p)Y*Jק-hD!$)\Ϥ`WZb=
󧭭?bl=O[vb0+8wa<b,^KE	 M$|HF8-bI-l7CR4
r
g\Lr|W0wMt>4
i:8-/f3pB:02PyT[C-6Yq!^m\P2*4@*̅A.4XbpE\IЊt
^kzI3h* Җɤ_.ɬ]mmK<TrĲXۍH=m}	<^
T
}YhXuf.U4`;#UTfF j/c;!Eޮ='hEF%5*k=t`VBi!_Z
å50NZ%:8U:j
ЄӥMpt\*m}n΃~xD.פ=i+|&]_KúH߈MxHt5)]CJ;55wJû$&	LQX}u(ҿ0[q=Z_D:JESxf(`t;̓Uҝ5H5v]KYEPA%721`n{j/*4"`GVs=o]Jզ|-"#fVkc?l&d~pIBaHH'JOB\,=
;g,^zn^Kh~3k:?4JUc<p5qmLlq2y&NЈj$X68GRЖ?n'?ű>}wuqsć?zrԧ	EFȳ./C]"R&㌣2FbY[xG8	QL2kG"jHD		+s }<	:K?+0L~Grzv|o%Mi	x]eŚvWD8鈓$CDFddق
:v";`l IP*'9Vɩ("r(b솋1bG/O
_phP4Q4ݠ=@Ά1X6Q43 ,{CΕsZ Max])aQ@|Q<U\gxTKw!"uvptOԎ<$y$á<;10	˦ɣÇoT0+x	66Emf*Ody"6n4P6E_eQRFGkѳ<i*O^)h$xĦz}~	52ϵ: V
˥%!t0Kn[Bg1ذ_[[ř\	qr5؊<m6=98x!qQy[T.6e`-̆c7#`D0A]p4d՚v.8-=vDD]*::=t0^lȵu롻 yr#	Y^	;f+y5<%uy8Gh}q%c4p	5y[hWGBb[\\.EUR!D04T0<\Z籆Ai9ME<Sl/T5ӧnh~zaG֖![PZcG{X:{pkCO}p)y;Tdٵl[Ʌ}9{Xk
1AW
2'lk g.Du!G
CK\
"y\&_7;q*x]yI']H7BV2]̑^l"w忓W{ȧWC>|X<)}F4:n:mic
1xA*D0[fC0#UD;OAXԶ.qiøL[<2?M~s@"?1AړW~9(_KPuW`*,_fu8۬߄p-acxQސ?ϰ_pX
~QMBoI|Hk`8ZpUi6g?o.uǉonWpʿ@whu@n}*8Gw.kuAgAu@n4i2ĲTi	^çoVz$g1mU~--hGZ&nJ,}mc+ǼXG]'EPsqa	wq=<."fŵ[%WkcU3+f1g TFϠԁ;(:bMv
US2 G֔Y}>؟m'
pO_Qsz4 нT
?)"?FbBHKx˅I/̥`i>Ӂp[t8NG>:
e:ޣZ>j<	$N&~ZB)d,Jҙ"l!gӹd-#7
r$O*6&.b+i,meR)].ѕ
0tOe邫A^Q8(=tB4/qSQA՘"S0MHNe5!^>9<|@UeM Mk"5=:uЗtҳa2=鹰n58^ы 8|0td i?0(c9<
^i;z9r
Ic}pԢHΣ0V=,< )戞VJ⢛=TڔgEK7э*\4ڷ^w7t7 z#1fZpR9v'XO-'D-`wA2x tC%`H0vO(j5K'n|aZo|ʧ$"U	_[6>!gಒB<dt327]kܔvJ'c{8j?>=	JO90>XL_eL_+1}=o=G!xؐiYMRjD}Ձ_ 'jg-àAR6\^.>6:k<E3W]J5ls}U.Џ ~C8 ?&|NҺ!lpa?avxhNV}|&ı.@q;0EĒࠁqbB}~a)qZԽG5|QGwhdv
m?Cfq,[D˫=w%E8E@GAŢIK
1FqR@AGv%*nPRƥ(a!9it4zڗNsÛ7h6?Q2!Q]SC$]#+BKej_F1?G.&4|vTr`o3DdHMRVSwSVP+$Ø$<Wh6
A
Ei6
3eo	"1m\Q'.Cs-ھ~GN񙦔eφ1w~g??L433Xm=_+sQeP*pVBge>Uj`F(DJ=Tcbe),Ua&8۬WVVS΄p@Y+gFxCaݿsల~V΅ߕ-pTYIr>S.c9/Lyä`YT%[|0)aHj7.SXPNU'jᶹ6Shu:VQlusx[n[ۚossAkھȥhXU,T/^8:uѲe]-jD| sS`r#,%MФ[Ъnf.S땿~e<*5 |uWa8<ǕGѪ$e][{NĴ#lcJf\-h^/]K'a'QQy"ڡ;/=״J=xT*6T
#i^\	=4o>=XVy
HW^Q^ʫP+p&ܯF6o*G{^47XHEb+*o	/ZN~9<׏1Cnb3VBDLBXP&F41ZDɑ
A~%
+(oP;ئ|{CrS~@#
'?k| _dj9~8E +Hh#LGezezezez\U<JcUoT~Q1`5EkOo0Fs
[E9
U;dDJsPXŃ;0fe0L_ZD6z5	dv5R4vAj:òjVķCWCɭl'= AB^X6\{OIȆCȧ\HϊFJ- f/ëuAD.ЙO4=utW u8L4u$h=␊(C	F#r|D|aZx:PLB2%}~j>/bEV	ZT4iQCz
*jՙgSgSps!M-j9Q+Pp*aZj-xJ~&36\xkryR\Ĉ#qDbd-2\z6 KaڈV`NZS)(}q]nkW.fU8Oz&tg'uMG@X{An&&u
@Js;J_At[k?Z좞khp0*vG'5H_i!E#oEp"	?
h3
uC5܇q\	n|W %3>y)rnO䔈<szmGhM7c#ԛfyQOBc3Ox1`Ll72׭Seqz33;uKnHREQ\p
?Bpԧ'ZZc&z>|c8>bNhDO!3ؓO
׼
7ы%D26"4Ex"}Po߂S}Gm\[;<3V?D|(/AtiBxNK wOFNάH.l k;3v/\Qq"@}`_@1wzaQQcB8Sbcaf&-6HfLB46+HڔeĄp&9ihb8cQcȱ[˖&VbJS$鱉cZcomzMx~۩z'[Q_#->FC>ͮ4V>M1|WECHZFNB5A}  3kDዅ 6A]'EDX4Ҋ#6DLŖ"#ik_4ʟ=.7nc҉ͪ#FE*j@_+<61r^rL&bBcrIOfD4gb6K.&YBSnkh,vbW1yzlq/9&퐈3v_RcDH	OIѶAcbc%>%d{k?NRmd1{Vb3[Bi]Onͭ$=_vme-۴X:	'7b]KZ8vNv	RJfT1r>=sTAU:-|Bp]zBp18Xd;\d;\~;h9A4W=q8+LP m%y.N;fvؤ%cwșpY۽iGP۝o^4
ҎO쩲#zW؎=&Nl祻M-vl0Ď1LAb
v9vc+V?a2~E2AuيTL[|0?@,T5/EvpP7գzpRB0 ŌR&L&k%1\T1rq6/cq٤,f|!dR1sJU,Aj`,I%K73X6K1tɉ,C2,KbY'Yuoa]GX7y]l4yi7棹OǱ =Y]zYz%˥Y?zOX>}
!W6TlF*nVc!P(l)Yr	\&(cl+V>c#Dæ4uc"6S]NUekl6V>ϳO\0+c
+g`X_VƱ*6U6`yl!ng}l1{ղcY=Ob
#[F^SYflV*~3k1;V[dZu>,X2m԰FɲmcmcZe[,o,߱-Gxv5]d
Vk1Z.6ˬK6o{v3J*#z]geq^')n9n65n-n=nw%#&vgC쮸gq}Qv-`mxvmVa[=d=l=b{=j{=fwaO'){){ھ=c_͞oawًK/+{b9|u (eo9k;ػ=> 6q}oagO}IJe|=*~:7oeſž?;/9~qV_7wUΛCYv1=;@YKB$R`Np%a.WqP˭	gr[ܞpw&		{yb<)w%|݉$&ľܓ8%yzzg%oΉ/._?nI={$yv 3{J/i)'恤KykyNҽwcO[<7s7(yL#b>0J^'Ç$_Ƈ&%Ó##|+veBW?>5u\Uu::Op]'n\b|S^OqK|;Oswݹ8>=t/⧺WYl^꾓q?Os?e_yy+RRn2e0JǫS)xMn(N8	^*_5KקT4oL̗NMu|e6*u7oN?#=~fW|uqz:u^,h3o,=&Ϲl6~6syot~qZO|ᗤiYA5T뿂b`I'9PjoUpp N".?ali	[B$lMt$:{6`w=ÉpjM!Mx)j[CsF%ߞQjjb!{ea,mK/Y |_PKkXķV1  y  PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/PointProjFull.classUOJ@=IcUkōr'ndĘi"\?JSye{>>b' 
C||l3[{<>#wGgTcsиPYIFZWe.͡Vy9,t:/q+"jDWxVfO|Zj>Sİfz,'*I(iNw=ZçmeOkeur"=轃/Xs}]|n{p(N1mjO14-PKhBC  i  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P610.classXTG;.
VPQXbFSQ
X.vQE{=ĺh4F154ߘ7g|>ϙssw:z eOC> 
ǈO"9&▚FKW; q>{?!~F<@ogc߸ovfmV}}*A5]l7
lL?"iůcG9b9sdǈ,I=<<w s}Cw19`Ujgs:n16jݟO;^&NZ>;sx|Mf 'S k݃;E͚z&+\|97"k7{ϯgUX'?Li=zk葿صח}\v%{vˌ?ySvڷjn&H;>N{+--w=gĳҷƸwc'hŠ\\#ao>:nLd,M.eszenyun<}W7z
g2bM_oРa>>ܦ	}/[Qԭ|K˜wbzy/9{^v}B"c
F_L˂?;yg}8LҐ5~x/=sӇuo;cg:4_3vsX	Ku;~v.[esq#+K_kOMxZw6#so}~v{RY/Z>}|{Ymzzˁ.:^PB.ߜ+ɴuv-6}ӵA)m2nӢvziҞ;jKvEM-6OeӾҶ7x=YFWǵevfH;yAUW4m>h7am-qqEIϘ9sQG_{ؚU5wNdG&e=sNٲ]Wo2Ovˎ	doxtM/6TΩX5!KaM2YoܱLsκ pkӏ m]O'\Į^|N̼Ѥ_Q[
D;?u7r}qT/Klvu|~Iߺ''aҍᅖlmid)o\z:1okXs)h;͹Y߱~Q?\L!C/&κ{ncXАͶ7n`ut)?Օ>=pd[Ot}n-ϸF"sv]\FQW[ތEu,s*]}}!~h⮵,r+j{G=K>8gْ7v󼃯
p?$v[ofSiX`-̜ͪC-;e^/Yb7ieʞn8JyU_6g
e.oVf玥XB`VT߿h*qӛ)pj|%<s"d̳oȮjwu价ohfɿs1
5B@x" /GHo!#u D}5m
=i#XMx9#Ajԓ̣|Ѵ$iKj4560
m(Ehh$vDIC;4;SCcqh54m/
NEOC&kh
T
5bPt44m@;PCh4tڡ:p
50#OsL,ܻX	BBrg>jI)+ʶdn7J6_M_ n++ɱ*~cvmGǘ*|Z#(--D!1QBGeʬ99R{%xtNXNIyVZ0h[JB--QvDbb,b1QDLFLALELCLGx	1ҹmшEt.A,,++kk[[ {G϶OVl)XJtx|ae0[KwW	[Xbj¸Kf%Dfk^Xba%\o=X^j/1'[R;ݫt?=ASٞzHKCb!F:Sg=Lgp:6Ɣm.-(5ش4RhOhQN5EĎiLitSAvF+fي,%妴~lvŨ'-jK,-+3YvqZGY;Tb]=Qu\}QrFI(A)B\8q߿tF^(()Gf)6tau='f>˅!(0<-t"1a@DBF.һ8kq=^b1pǔ&.5٘NdK4f2%dff$`_bMq@lRb\M֩;ݺN7.'!-#apFu\ʠԴtSĄx~+LY	i&6%613tJx.&\D;W~bĦ\5a?T.:۞0ؘ~&Hpp1&-&j)1%dLL,{SXx5cm٨gobź^SBJ\j|B|Cjnב;=2Jr-%O]I	!vP$DV/Rij~N=iˌĘLS};Hgw3Uy@JnWNFLlRR%%uz6!ɿ"LF$6<t"x>*
mVNE_+4UYiR ^CCj"X`͋MzFiGy͜K?XɖRs?/9$=z@2+>@Lh,ȱ|u	$GYl}P=JӮ-0<#_b3ӗ,\KW[N3S߼Ϝi)xx> G	@R%ė@xu#B4"ވP7koP)\D9^V$mT/zmj)̡cZJ+
(/<#|H-)5{%čLg.,L/[F@23^%! |_ woc9@
@
T 77 Aw 7X	;4|x< O xJ=GrТ!!</>t(j o|*ag=xQrw@ *

hh,V˒z
DϏOpД9^'MfL tTlҘ)q)↋m!W+Osy:(y:)y(y*y<=]yb'NIPV$*y)yyTg{4$+H[" %CaačfnȐÍV7^2qd([7>2WR>2;)2{5QUJt5CDQE\yz(YgezV(Yguz6(٤gmz+ɍ,nndx2妞 72⦾U4(7
e8M#NrX472Mi*np2\&X+ܴ*7-eMs*ÇdV2|Mk>妍qV܄pv2|Mwn"eM{q%}n:7eN2<঳rEp-#~JNOqJS"nxJ)8%!ND)=Ah^B8-N!~DH=q"$@i N4'B!ADH3<LB4E4C4G#Z Zz'bIK$T>i%vOp$R>O:'h}C>O}(v3:HrS4b~C'ە'%!OPdd(R2xQgS3䗚.iS3Ւ:5S?;P84t=UuBM!!>_1zD vVDCD#Ƀ1n1&{"!#Z"B8ivB5
-jaj$qHT{TuNΈ.nxD,"xl% zI7FD"dD
fD?"
tle HACCP-bWƎtst_V"_d-3
BDVl2tKvt˰51VsX㱿& &"&V[0Yp9!	eB!3gafoxI-爎/eh\ "
}P.R^Ju^Dqh Cšgš~Fq0Wq |$ǞtT!jmhDaJMEfrsZ'C*<pH#T`O"RW1nb&ϬtTB7}TO$	C1$T-,A8ܟW@ds8T@-[R,B"h+6Q\(IAm,
!TOW9!8C,wQ"to!8ժD,KTOTr핂$o4_+NĮQ7
n,zVmo;Spn*گ	Q{Ű}{8 xP!C}XJQ<.}]t0HjW%Ro<2mj5
ɘ|70P_n:x <[S_ dA RiP19dAظVũՌL3TKMLG.w*k/2 8L_2˗tN>Fd&sSڴ>D^~CdQ @u,:ehKD3Y2rtWH|y_EVK;\Yj5(45:TV6QjMlF_[rr_Aw݁N;].w7֚k(%Ea_u2h@C\Tt\혃Gش|KĮS4
crk3
x7dՄ|Vv;^)Ou^{xd{ꗟ@;r2+N**w򿇼JwBwJ ' u@Z /@@x9xCB@ԇ>) #+ @X	-a#
Ba`?#NC8m2v
uA$|.D
#aЉAgѤ BqU V`v/wq
^_80zDLՇJ]+N0Ma.fR`n0
uE0OWt3`n,mźmL`lН3^!l}t`a>}2lכ`
;a~.֯W;5أ{>}/8_J-!E!i J#8*mc98.݆=8孂
up;Α1?&cTPaSM>P9<p# z[<p?ZPK.U  '  PK  D:U            E   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEEngine.classWipS'=?06ص048l^@Ҥ,cmȲIBIH m-	Y	IL;ig4]?emJ3Lڤ=
d:SƜ{Ϲ{9~{W/`.YZЇ
ld'%,|#_^$>$|KGE4lkLPV	eMĐƄ$t#ppb\5'\y;}A	1RvrnNZwsr7"'{^N~E<PƼ8CmG$h}#>o<14D5b#D!ܦ48	%bH@	0a钙aKtÂ뛴Fw12,FS=Ɣx\3,ԓ!/r0m`((ewx("q0nWF\
I#~b:aeph@C$)&K{0:HeGB3ᲮXp7Lၡ/%*X73ocJx}zmJDܪކ#
.>Qa$)Kk%cZ^AM4+dny:$Wd8SZ<"(5k73"8!Nɭf(֮kiRnh^[1/-fO/XU+`s,n8D<.	<))<-\5N2BkO\m?!$!qo82_"^2^q2pU\lkOl6Tj'yÁ΁/ lΚ*r7:oֵcs;\"t+}]Nv;zbrػvG_kiO	sU**4Vrɤ&0am$9Е%YqjsOs2himL{;&$5O(*7"QTudg{soV D)1%L*L)a?]*&ْlTl)x]K<uGK҇J
`8'(ִD5PQEXȫ7ý:-f5̔:5\LI4b
5l;vu;\.
޶~]GIo=\gnm3@97b
yRg;G-A0^\ݗB~LycJ:/6̡OV #hfȧ4
ԑM};Z:KrFcayЪ:KӉI̡K͚![h[.mcl\ڦlފvMQ
$=Ys5F!V![$Lc
и?@cWh쩹s߬B#gUXSTة-RYhQui:Ec("E9ͭ|>s/GiE1BXPQM
uc	*GwRMSU%T4fQҿX(w`f^i01InHn565]VjojҦbΠ{7A$Yy]f%SHhLe(ylZmZ7geƞjj%
)i$KᦤF"&s?=
 ~A~BЅk0
T
vMM>86GӂtD~ӫj;ؗ1RJߔt}PyUF&TG^jmRKSc!f^҉FsbX^Xl㨬M2uVsiaU${_!;5Nmv^tĆ]Qu6ߒ:[1ǽK)"m&?oN`HT݄wMP҅ڇ͸1O+qеy>S!>~|ſ+_$x5ISlfpۍ eO4;ϰy^`9v/
xEZ	qAXf\i܅o
po
mFa	@&3}<CTtq=on
:)wLÃi<0O`=}-:EImz]Xg5ѵmVՒjJ,6KuT*HK
U	-5*^sYhqBwn1&QX=ưx9*&uK1,3dbHV[jsI"ߔW*86}3oWOUCxJg?	Od>Q7TO9; %\\O#t[~DHcG[0?mzߡ;$,5=пe8`s=֋+,>;c?9];]&A(aF+hI ]l0*`%9V*ʄrj0l22GP8#rA0f*r|ٕ-mjzPKd$	    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P503.class	\SW}y<T܉
. a%؆PHX֥uZVvUR֮ڎC[.NǶ;uus_??=9wyK޿ _X:)d͈-m E<x^K}"//#v!^A؍؃؋ !# "^CBFANyPLǐov9g.Zdzș~Haky:`ԻtlcjWyޔN
F:p߾}cي{/gl0!Fcm15+U8m|tt^X_A	p_3m:;Aޛ6?2b͝o6
5ewqRh=EY2W9t-%|^WIouOyUM\pnHUw$>p?䬴S҄Kǌk;?@bz#tTusY
/qަf;.}PgkKwV7 Mz|N{ӴWV{-^8g,
)^7s8xDez꥗۟o<۪{R+OΥ?ݣmw/.Y[Oߒ^w>\L~8%1*kӾy?<!%k;L]_?|/1W:'\
ܼ\z~gZ=0sCl_ŷKuΏziә|h^(߭|f\)sfa'WV~4EhZڬcMb:݀Osns(>_eƐޅtfxrwFhآ7/TmvVmݖzdpoC>]'仿@k
3wD{7GssY4xL!wܦ2*&}Kqtf~H'NxS
?;97v[v7ꉋ뺝VXt@
o6}gmL#Nh;ӫ7onv-7ͥƐu4Ѯ}s>ȫCjeN\H8^Ց?c	Ѽ/~_t튆-ʞCW69q^7h>oFejOxٶ6
*>:E:Nslm($Qt.K~|>qzfwfSteetGs4V3Gaxªqޛ&x北68gl6&Qzw>_'C4 >D|q
wi'O!>GAEC<K-H
$"@b!hɷZr1Xw $[$-#f$^UHnHx*[hoڻ"Ǭ @DA(hRQ-EQ@(
:( tEAF"
І(0tE!m[Qh(D 
QhE!mGQ脶(tA
0 zR,w#>.v3ɮr#r&>)z^<9^}Г@UWSH- K>	'٧%V%	8I#xD?b b /XWMiWxz]ራ.+^vՖOve8ݎBaV"b0bb(bb8bHB$#R&D*"
@Dd"وaFIB.CFAE3?@'	ԃ6D(F RD1	1QD8.,dXHNW媪qU9jZP%	B
a\"⛖ZM ϕ2̦iŎ*wI vgi\FE^zEHB0rk5lUR/Li0]M3XUo$a0["q\LPE3h+uU3'	ָ$rCE@2&kkm35.ZRWcUS+;\V^){]NwQ3ݖO .`TK5^4U]Nv9E`u6
'		:xjl5xs%A/#N(y#V͂A
xO_9|Ih#, ͳK<j&ԲK樲Y$a" 5}TX&Ġ@IB'NIA<XXX̗umu8JL6g[rMV+ڢurn%lsMy<e4YF'ee$7I^tSn)?1.g97jK0eVfdlLf`I賍 X!H]p@FDSnnSW&ɜ2s׆2)baNњifZ1טm3FhɳY̌ƬVy~ ƊbZ'&jMksٌђ|Z%fI6R5kO@(DgZoԯqTѴb⻳jJ8ݸ{N*yOU)wuܚ_v2٬WO
a*561LNiKcm_UӤ[2L챕eycTOz	7^xXu@)^'Oa阪0ҨXJpk ^[΢ucm=)Yz^B }!Ȏtځa)NuN|F]ѸhY^
L&*.g=]Fqf'\"`O`3%5w·:%ۦ6U}N'˻o^ÃrF,?`R0Ï!1G[u#mA|Za~-$йiu:u Kt8Kr&ױ^p:55zo~k&vgIxļU6&9-ǻDZv
w7<I65%뀐'Bi`?1`!=hr(sV{]=|!dZD@!D {!PQ)GTx@B?@^==eAA(57HB~hex W(@kfx
< {e6жYv|{
lDyEڊ-EvhZMxn:e
d)pRNX

t
Z
d&`i,e]f<3,s/s2L#LV3Mjff<Gx?gA,6'Zh,cZ,.h3LL%*0eH
LbF@3A
8	VFLײ?G|~6|ԝ.PwEN;]tӕNWwFZfdd&DzfZ)P61(
lc0s̄+^d;iK̴W`3
L0h3Af:*pN
aG1f*3x
L'1(3=8LOGV3q
fWxEWK^ѯԊ^P+
V4 DBBVZ
[jV+xUu &G "!#"Qj~Q+Zj#^1"@^1" ^1"VbD#m,xےi#X1#1X1҉Wt#Xf/мIO՛gQլ~,kAu8Oj.*Y4hYAn :!K
B+(
WC1P(AD[iZ{t#ЍQ4"&w+v8"G@'эQD_V<&L?#;G aH"j0
G#|I|dLJ("MQb$dn6"]3,Q|\Lc|DC}G6Dg'`x1Η1R!1djѭ@TđQKUc\
NԢFԡ;GSНdoͼҰbcE\ן@}݇0DO}݇EZS_!©4i>D݇+caL'Ccz8G$!{PPP_PMCq"	dD
D}H>GLO[rQj|l=~ߧv(ִl=<V)bb2U8Sb{i|O;Gs0.sy9_\\_ǋ8%\_ʕe˹\`OxOk8Z>^$\z<Ź+xFoMo%-uC4C!a/\ƼEC[
W;nC<dA!FxHAd\;Ša9<dyH*ciULLc$(or4Z椨Z
F4<$+d}Ĝ}X
Q9z#!"QsDhѯ1 dQCP<@
<dxt遾 y?Bbk,Sh`Ga,6)Ũ4WL&,NNV\'.; *[nM
֢n&ԡ05iLCiziJ3dIPBLJ6C6L[t8IxВ&}ꋛ.Aam 4h8R53ZLy*/ėh$wV	I4%5%E<dyU Uʗ
B~o60p!B$C( 0:A2SәjX=
=a&eY6C_ 7?V G |pW0./0É `$ <&=|it3d!SYi4t1ס\LnL-0CmYgastú0Ow
>Pw龃%+TwK"RURx\%#2ad|"FA,UVi.lV6xFJos'tK xQwSoySxUvwW	x? A=`P2TfÑEz8:ǂ	RϮ`ce$ ܓ"AC-yJK,Ma
,X ǘ
",V	+ \bPK.kr  N$  PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEKeyParameters.classJ@IĦizۈwIADAZDt]m.NR!o.| J<*n9s߹̼= bY
Z**n2lc1vxل;ɍ"OIkN{煜g\{Q0tџqk ŗ?7Lc̳a״16'AQr|\K:Pv~[
4>^9L"𿂴9ؠϐsb:ItV@F&u{	zt_5 Equ3p<#_ }"J\!({5PKzFw)    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEPublicKeyParameters.classQ]KQ=]6M+Rբ  i^dkݵu7_E~T4)苽ǙsfPB>R*VRBFZAFA!Zūb-3hקXX/别޵ٲ	Q^q8UX)á^srmaAwu/eR7=+|o˅&kŅ5Q2ߙQ6!UC9&Ϸe8XH:#͉߲33TpuhY
,7>N:!5ܜ"bZehW#+p#7H$8cA$򉢴pq=ODQ9MYBW(!PKW+d    PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/Internal.classwgJ+ai		$FDTjI^^Hv-oyW.Nii$6!INáCs~sf%cs73ν33ۿ CgCpA'W
<\x^e^ PIO%rfm;7{Tpt,!6qCP5[Y(J|*egBMJ\Vi5ZUVZ?Z+Ul:$^
;UJL,H)frBz~
[N90u3?J>R{=@$eJ<$Tw`Jh$Y6_.Q)3<CBr9]IX+e%؅\%z^C[?̍Y7.g%nʼ[_ctmӊҔ6BR\Ѫ(JeՙDL#2xwgG0Z./0\?Uaٚ;Zw*H-kZv(iɎc	 	6\PE+HIzJp
ݹkGeR&K@'DW:I	,]6j=d=-!,nOɁ4k2`܆j8=m{!v:c`:1ϟ`4[f=f86*^ƒ̵66C\e*^`1 ojBcbk%Z"Ĥ'1G=ؕW_jaLE^Hd9
bC:%gXSk]#%أvۮbeܳ8i6oPpb%I+Io%)V>錎b\Y{K|G޴x8C_Yn{ڱWˎ2wC}]f3NfhXXxuLq$7b%U.0'k+OXB7&}ԍigKc8<=|7
o=m~;@ޅK2?e	l_׬F]oM#:WםkY#݁UZ:c]@eg'lcinFo87n5Ma?xV
Z6PǼA>czH7lｭ֢pUwye.awߴ\w?-3d64kԭyუ	lAwMaPmwvH.{{_"%~x/>>~(qxx?8 1N|8ALpH!SįJ$!>L׉Gib%N5481'gybX$eIbX%ֈ0'8O\ i"oEdouN\
doW<C<KlWixDF\'~x!?d|ĭ>O(H}ap ?#ddrR<pC+RA5xq.U
Jn~6A~∧g L^y{CMJY'dxRGc,^tGE<!P
_xol5߆;yd1Z#x	+2+XEq`.rdSOe)H,(MEarɠ/VXE~5<LJbAUN!?B? ny.}T[t߇q?yg2G"=<{A9(,~AY|YDg;Yb/y)D|/Q#`'I5+T#TVJj(F"'1Al?cjW01^Ö_IG'"<}m7
_PKKDdm    PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIDH_Compressed.class}`TEly.p	GR(	 h)_HB!	!  j+XYc{̾w޻Pݝ7'w}? oyVG!>6M)l*]MAG6̤dΦClg|GAv8RJ|XVN-bUJ?bK(AGRzJ(YFet&JVP(YEjJ&cʮ8J`+xʞ@p'Rl{Nc)Dx%Tq&eϢd%gSs(9MGJ.d3m%tu)%QV*Qr%WRUv;e[jJkutu=]@W7RODW76Bn(VJ ;.n*{)j7 %Q0%7]=JWQ8!z')y	3T,%Qyzivez*^5J^
C7)y`&tP.*ާ(ǔ|Bɧ|F|Aɗ+!|RP%S_J~ 'J~*(;%;(I좄@	>8s%]i(Sd 5JL
vS)l]U%($ޑ^YA%կ[zqʁ
\ܸ~#+*4al*mkZ΀0HW_iNyJ1|esqHVd,bjO8K/S 򏚥No\Z4fեTX^WQti}Ei}cEecXa#W\^xEcMꁳr!bM\^
M+k,^1N'Mo?bԂCJ	]GN)oP0x#jkk770f3JJ(-.)?
.-?lyMSJ䣞AZ\3cEyEiyUQK*J,_be^̼gEXreySZp2Tp|}*ˡ
ih%1cbw92A:ni[W1|Q}myiMDrF9:]TYh#gDCi'j/dv[hEiQ$˛Z[nI.lGλ
81oaedAe]ZL*WXSָ,͞?7JFSnuX1#>+Ki z$s<rzi̲d #TOkj\FYD#m1ҳ#Fe	
ՕK+kq=**wlAh_ce%GY/VY89݇%jQC;lq7g"VV6gPHUe#2d1R[lNvI#vml3c,OTKG*pa+.g6K>0wjqd(4*HB6SIrW֫$z]
叀*
BW5ئ	QQJ#
++K+jaHʶ-⾯=\t+jR*65iyeQuM5+K+fIQEhJݴlcvv5onib;55uK+ހ5,g:dY5%[ph<}71S3&+'FìFb sEw|?^w}ٔ$\x7e x|X
r~LDCa!C))d;"{WRTو| llb)Ǳq>Ol}_-2L)|jO|I̢d6%b_Q97~y8
;|>Vv"d!?} _
0xEXmDgy ~L0`%:3oYAI%}*.^ÑGZRx#_M|E.`و _M͏	c6uOifi,=SId:S?t~F

4Ig~;zX2K	$ Ke  ?q!7Q!|DH6Lӻ_]BX~i_FW[1a]X onU
ŕ\EvB[_/uDD
Tыl lB!JsXn
d `٬1T"o[~ut;%4;;	h6&ݔCel$R(=@ R!zQo?	d?6+9ҋ)y8؞ :{X2eWU5@L^ĪAu8S.i\Z>-C()Wl~ђd݇3,lSհA=w6av{oU
V+kYp=w1c`i3*X2axfM7sI{S<{)cgM*,-Vl_XrBO&?MCun\Y7URuyccjk|9ٓc~TI"8ұKM@Ufg4i8 ÝLUC!Qcy^҂ENf-,R¿Pa_<yq%	YrQ4e
,Guui=JnAy~+MY2er6;ꤕn*(xlgSevFv_MyӧMU0i0(+Fe>ҡDn2t[JEaVXj\cow24d/J'6(W:f1r4[ԭTJxŢJj\LUD J*_],וf|:_P[T&AzΗE/)Y:Ud0шdLUqjAC]E%
KjH]=5dOY8]Ѯ?u5GW639i-FٴV-V(FkU݀W,GZuo[	wUz`#EM
JcMQ1\&L7m)D>6\3bEU/vܑs
La؎i0"Fփ,f JiQV*1iInZ+=DpU")-TTKHYZ-]O0ۧǘ5
Q%`Z[5{:ҒB[,#,{Y^JfLwDJW.k$Y3m)bDFhM)A^wjM֊-*(F%)
œ')EXE2cc%׌[Hc,iM)֗V!CZwmK-w"u;u_k
bUT.u%B9sL}MPMAMLuF0yrA\r`pV|U5aʴsBTThc*`*b*`sZzrčyESM Ux\dti:H×uDdI!&PaJT}(cvi!dm *,([]7NE@슒Jv|Gy
>/x	^+Uׯ똾%9
sہߌ9ob 	Üà_srnܜ\'
ZAF֯vy]9pՄRi:B0B 2a%dFy޵S9xrCXX͙k7vIw"ߡ t.Hpp~$۽D!QTIS[!,uJ\0
vyH򐑂uNߝ@Ǵ/]?#zA.\(
3l;k^EEvQ]"#=0ؠwfH(k(}+G3EI-v(J\I+d0U)H)H)B
)-HQCIȼ?;1k;(
RN(JR|l9
e4[S$
KXkv?@ՍMjf?ki$vެԛf
D N?L8p,F8$&ɘmg̂_`69,^0X1l,dp8|,نS
xĀO4J06H
aֵ,P|n	؄#E&yr~O.ɓxrɞ\T򑩱AQfOY\)7
#*
>J[G"L^QlaG%@
{-`]|APuN{E T,zG Iါ}@q98CYdl
9P)n0GV'hk$6q❐fy9w08t9PnuZ@VM_ִz
j0GbM-:X
p64 @#+1o8	8eֲap;ֱp<['p";
ֳR84,^gL-~
<6Npρs@8XOKpRZjHWJS?_2êmyA,N
v
5+4$rhuYn5ՔVAEMaW7mlgiвGjR\5.<΄h~ZphoDx+
C܉K1(!d"dY44I;+hzl[`b\_'[#˶syNoS8r.ddp+1åp<2}]JUGͷ#|##av:'cũSu-t{t1y7nF.ؼy9pS`y]ew|@Oxp~_ho
M(4p<[)Ix}Т<4x-ʋ'
e6^aUVcuv:.7ٵfO»ux}_n#|<>cS>W[Iw;m}(+WyE4aJgVQb7G|7( CI K:ae
F4hlbtd#ڈpc51GGb\oi
$<Ʈw&)r#]_ܤi'84e-@
w08q8F52ݞbF6%&?ɘiNhU иxPK&FkiK"=U`:Ѷ`&`~˒`6b+=VX<Qs2Y?϶9FVV|*VQ$TęcU`CFlXG`a:p.H/=u3++ViU[sr/<R'f-mbKH^GV׽Za	o(JH"3#eFgTQ`gZfB}Q!
Y_\trbײ<l ݁5ml06l+cW
~_(^,(F;A`LԵ@xқfn].=n\e9:.:Ea#Qs;וlzФL&8%p ;X:>[ewjO.b(:` M.l
gSaTHh-
g?.'V(;*sD
%eEt^<+E"5r|C./2\(V@
%r@{Qѝ%m0sȽFsKe6\<%k!Hv8
뎈V'DȄ*<V
X
p[ŎrV+R$-+rg+@h5PRͮgY$9!pcKtF
g3+.fb&pT#s3x =ZP2Q 򚥵v)p ̧(Rk)L1bopώG9<ٿf\#ף֟&
2OC,;,`Y:;WM0P
hHts`
pױH]oFӖ} t"} 6<GE	;u،|(HFp.m{qd,Lŀ
MMKshK[Pk`ln¹hG%.Ϋ7ZbV'G%Bl`|wBf"JGj%ZZ{%ffIYRȿ-u[5#eAp:|͖Gkdr]ft綠;w.y`[Ѧ]m'\]Td-Rv
]b׳
yv{̾fv`^A^##|{eO3=ǫKH
od|-{g9cC!s+0ʀ/U:R>:JK}HIIIB{QkiE;0BŚ=(/
EiqhkKZHw\t HB:bu%
Wh[tmX\~ĝOhaW։zl l3JX
ⲩ	fIG^p(2oĜ5!-ZFI!Za|y8,oYlTJr%O,2; ˦,b#!/} 2y"S` B!Oy:LP;:y&˳`++߅bϧ;`%Ìt
?+"V)X;'7}aKx6	<pwn-O{9EkG@:h߽#-GTýgVNk:PuzN4Q2POɯ&U!r(oTnQ@/|JPÇ,>`#D>
.C? 	>g|,YϺsk՝;J-hqWKXl 8ǔ#}sr8萳{%(pȉ,ȗQY8u@8CPz
^DoM9 O>|
0Ob>u&rkT"i|>&k8,Uu:>5I3ɢ(M{#;DsSzr٩tB:?-{D$O^Ë١M)0^,\PI:z:8ʆ'*XX6ovHʭP"!Y-k9ΞIz/hLbBVFN,V]kOA9HN^%t4ꪤL Yr&Ҝl(7o'Pz^"DgT1E(;қY(mZa6(Gj`5:
-JM^(U҉$L2=ݶ] RB)mPJU-lN'9d
:7
,$hVzt,q2c+"Grjdb@QZsz[s*kuCx=uq{tw~6HsBǊj@O@,GӷŸ@Tx^	*4yK(^
+x-̗^k;
+Ytl.?ŏe'52tǱ:"?sI?Y4^Ok"~6o7s<:?_ t~͢'"D1Tᗉ#V_.+F_%ncEϯ_k|/NeQCM,OJd-l?IۏLo3}]\,@:N5sNpӼkg%,zuXt3</=jyai]JԬK/uucNKɍq yAb]wC=~X@zXMŸz
6@87
lW/|)yvr-UGvSShQtI˟ai͟i9X̟GJ3X9tHnq_urLW.:0
쳽<9'<dO.œK8(ъr4݋?=bb.pyn˪4h[4X8A	4AQd4/pP/qǭx0D;+u
&%2
TS	"VԆ#.lH["'rAZI%Q`oNv<!9m^utz/8ma(Nt(
G8>kr9ש@jsutJہXַ0s_ !a,{`n>:hUF+48oa^5CoD,B
a= #'sU%_6
elٿ/+{ξ;|x ~`FBMH1]&LAŭ"I<+w,9BEP'"$UqQXIEbMMtW/v
MKU02UPi0\AR&bV'yvSo^ޞ7b<n`ss2?v̶Gl#"<D :(:Mzq<F;މ®pXS]MF33hD7;Vџq/e
  YW\)/t _0EBȃb #½b|.tQCXQj0vή#أb${Ob?yXGp1mb,"U$z1-5q$q1E|)61Mx1CVY*q-sb&|0׶ZbbHhVp%bysKF;q?5($?$˼g+Hh==`H`DY@
Y*FGJuS-GtL;`mdڴ:WD1^e.ʡXcb%*\TB5b	.aG¿RxQ
X\ksx.{yr'θ8w;_6wIaP#G;_Cѐc}NݡwwGCqb
"q,w#ND3\-M$xPϋSU'x}TUHE(rdd^ǟ:ch\MI V86b鱚zʶ{$NNer`6w=C&Wl)!_t1tjTc!9%^Қ56 r.L	DhḐ2ʊ̖N-օZa
C
\')!Y@UǫO"4`QoHE"&zf_[Zv}߭b
zIG0$Nԧ:1s!KllqJ0Y\R}!ZͰAlbV\wK\`+Z+q%K~j6L\ækYՋq͸'ndv=/;WN.]<Y̓J)~>\<y!^-+#jpmuB"tGPKB؞umq.>]XWyP)xy#d|W.jz6A摺\[OEbvXҝH;=[fBvQOO>"{'fvlMDHBY}R ڎj*萴PEƘ@Xg_8:@uA&f:" #=sFm(!-8z=S]<
3P(qE&^B|
סJ
GҼ'
q)ëTOs,dl?#Oh+;_Ʈ;b'{KM)$`e-	 5OtEƺk|+.'&2]wȃ<0F,y1Oo*%*9:daջGP#]91v٩!V'CCu*`[ƐdbaCJ~i[eج;Q,ͩ1mNux&{nIӠ'J4AOC4`4P釥2	 \"vTxG{ƒe:Of;XBŚdGve'v]Ӳ+{_vc< {r?~^IͲ/*{e6YE5ulϺ0nnl%Kt'Wag=Ӹ>>q* 
g׾FVӇ
VWk	ɉjۘ$z΂)6DtoW`9AG BEP/r8\'G} x[r$Gr!ǳ)r+ry0;I
eq;7:yzNM@B7b#ѓq4w
ڨ=(hyBC;NЙ
eE$˳^P%>>X]AIIa'2*MH(U&f"$EԊMl(EPZ'iE٤쟤e?eҚX(?Q̀4B
RˊmCɡ4OMrUߜV5,`J^S' ]E'ъNh6Q,ϮxDGCk-IlOeGϻ0Ȑ3C0Q΁r.TyZ·ap\ WɅp<e,l˔Yb@V#e
;ZNK=%ge#^Mr%7Q\ŋj\31JZ~<!D~lyY*zD?وb<SLger8OnWsm\$牷N Gޤ("%>Fm
u\ ̩c4}ڋќ8͉ќ8-A̆=lcb@y)`*nҖˑ޾xT↖¢ɋ_ JkGj:[tQ}9Zutqٺq[W;vZ'{Ʋdzdz>cOqU{v:HvvZb\HAG^uP$	q;Hg˻J~xC>GX8˕OQi6W>Ö:<X/KJW@EޓdFE c\E.GC`8/#[:bH$_"SMbw.e*;+Jwg%3ssWk"/ŢloaEG˪B^,+,JV8/[/?+6[q4X#	xWG	s]%
ƍhؙM	!jWwbPA7XwgΈÙ#:?Rykˊ3;:܈RD>T:^"NugmYt\ ;Ե7̌}ffa
ไc?EaW;tE1i>Bˍh'wU*GD6r4&dʷ
;p|A|x!l%cܨ~7OQ%?/f7@-;\{v=$d/˟wgK7>@Χ_-6!M4MCEfu)h>qi)-UԂ2-]N2|\Z<O˒jZgE~u;ZXp,,wc(#Hg)JhdS{_qagQLZ|1kJRL>Otny
}@^76-*2pJ7ay%>G$}ȏI<ߝm6G";]:-ݔ0h'h{qD+B}ƳwA-p=zۭeޒ]ЅBZ6r`K|X
p6
Zxaa
Іl6Fs
!m4D;titm&򳴃PAX}z~)H^a9xN^i:Srt'$ƱEf_ګ$OUZ'v_ɿJ<U(mNCnr2W2(w~32Oubg<۟=
GMQ^G'Λ!ibTv(;	L&8`h8J/4^lNLmզC6&j3a6iZ'hsdm>l~JXO-f
VUӵ*Y[Zv{_;RxV'h
|/&m9Qkk+WJiG!Dv(ֈZI;N\  vh'ʮZ3dv<V;U&N߀NPA$q$=.+A> HzUcc
+\#P`Mb
+=a0Tx݃8xVBsuC{1o>.&"]<vZuk{gk8
R!mn9mB<8D;kڅYԶEv1k^ڥ]ƪYmԮb۵]~Үڵ|vmJVonh_p췋ZݡlG
?XevyhAQ>zP̤+HJIL#zß]8ϸg
_۔CS㋂*-9uU$Ȗ(p7@'zx_%#P^^,c@_ŀ%f/cc`+.mf,Xblz%.ۭMfo.:"7vL'yrʡ뢫b&KfC8'R
[][/ڃ{BQ}` ktakqõA{kIxQ{
>ўoga%/X2ۤ^cjsjo=xoj7gC!D}*it?>" S\,;שXaLhLGb7D,&=$
;:}$A	Xmz20Qd"(r|:zX)	AA`lP؂Wti8]srcXGZa[DjZ!`B!:ųK>0bygqau	Y,n| m,rL`(23@.V$a4l@$|6><dj!z?++GjZJD_:F%CzU-TDѨn$'HRR<9n#oItwj'4WTwZXƄu?PMvO	Y9:dC.`.,]	u?<Sz=%~z&wdNlޙ5]:;Qߏb-zvޗc_'?7U|>Bl=LCz?O/#M(?^?cx>VYFn愩充m7ÿneĵMzOFؖ
Z}2
-_/p$ehZ1~$4~El}tnhᗳcHtHtHp2[i=[=?',p\YQQEQ'OBtx]<qBDTN,
DH¢ݞxRۢTO>YOfxT}MGuE!mS
e33nߜT<u(c}*Y+k9nPGwYNhγ"dBPueut:DQ]1?91@@.$6ޗF+6d;6ۚ3ѸOF;䅃1w#ha?[劝~Nm%UeaGrYtqe;3S-]<E#-M\ ]	!}6}}>/8n^𽾈q}1+X
Зjv^Gez[72vĞW;(*ԏ|~?T_Ǘ'z3ߠ}1~*F?!|"C zoQMV?Oub~8[,V~o#+4*YoWy/~_	S_XFki8aeCË!mI^]ݰ&
]#+FsN6Gwд
-Pn^Ӆ AP
7'"I}+|-5n=zA`˅5Rz򘑺:RWuVߎ}7<_wa3'PWa/).;
H6ͷ<+nk"$OfbB]6Ǌ5CRSi>.%!hqiLH˳{UB>y9k
'{sC>jQWMmz$
t-Kl#VoK;Wy,:sBޏ@vbjx
쮰AC
/tdF1}TxFYg^Bbh?ֲ{L؋Wd' 5H_.k	pt}?u'p%ܪ+a;x\Wp#?oכּƲ
lHVfxN1,#m7R?v#cd]y;k7|яed5F?g|1?mc%"8PYHE 	
|]?tfs0
!},hvPS43_yss%g|R}2˥JPZEud0`eEuzm(:&ȑsԭo~[19}s©]Ҳ4Oa BMWWa˶1`3뀴/v^U:Ժ2ʪCIZmh?B.-b1*
(6!3*Yno!x--qJ޶=:M%郧:t,$ͮbZ[e$uG/dQZ((a5z"'}~'<e(iZX
='U1ɿ6jC`4Y-jQPTbvtbi$iLlc:4fL8ܘKCΘ'_ac"xX6jGH˨el0V5*vi͞2ֲߌŬh潌q
/4Nc3xq_iO0g-q"qM5yUbqn\/7ZfqqhwwG;C	}e<lЎ`4}-owz9Z!v
bNK]	;`1qO
h6Ǝu= =eUMjRz=4CY+A)N8<AKzr-֐ ջ/	'uQ	M<dZqX7x(J!L68aRlFkEZ*րGZwrUnYZ0iDJ0Z$eV*iV +;t:ݫPt	4@JYpd]
N:?jsϣv %K0x3^]m
'f2>OYSx>4ĝ,1eÍ*SVk./twv]i^2[`hifO2|3/1S3hL0;*
im0xW׎HNWrkvBzrs=vVP{-ug+gmU' !:#2W4q|ը=}<GbB;z9ECmޥ:_NyHI.[
.#J
M;}Lۡ&:Vt4׭;!]X^jk%^KXa(
k#QP|_oT2D-t
iu*pvxпbm3<nO
wH+<SD;O  z^vH4#܁>mIG#]yIܡ4&-#6"IAkQqj*rZc:"͍7݃7͍7*݃7]*.ɽR}'UbAa;;&X	VT=o4ӈt^s+mo_V;'
---'-JD+m,"=Ѳa(ݯ;:٩4E	
P(#Oq1F:*IXnoT(Xtˊj1Czq0ㄾ-c-v93Ϡ;#tN&SCn#щfl͞00f_7?l0sr3n1_f>lÓ9`,`B6&X9-5G5ly 
יcXY̳q|9כEDy,_nNb9EL2rs8ڜ.5g͙^sx->1?sfΕ<<LAB\iʍf,bY!1+$s٬rmyVbj̥rN;<Hh.0i[+fdǚ+Usbc?gl5yaod`5%z$cybjcfjn|oajf<`n0G9fy\fd^`n2/4/17mʽ]6R׈>V7k[l:FwL1gGQb$[_=ޜ]<b1ﻌ2A/~,=gC9!yW8i^
Јz&dNݡ֛}XOx6bv!ݨ7	x#LHK+
,_X)KII{zP,r~ܵx<8{0qOht
o;u=CwnFW
Hu>Ptl!uyBLg-i裸omVyRehrDQ;p(+lHݻ*']~ҵ{ҽw5e(
;sQ̏:j*RJvGgL>ebCYgDtJPzW>\jg
uh2**\\
G<]G&ԡ(+Qa鬊)bEzYJзҲ%O^ҽ>g蝤b>G
MU?rk"+/<-Zca&о.?Ҿgw%EnX'bT,Fd	[<lիbQYb-gMU8vrvPg"4D
z+%wɱtQ;9su8 ݼzwn9潰ļal1~~|
4g%9x|>4_o͗X2+2_cc7lMVcVoSw{}l~k<x/s_1|>/6+S*go&C`!晻D&@bO;>M<ţ>C<3ųWe__}2K}r/eȉr/$2e/K.u+|f_gy|]!r}}q_?_[u6K|U5}B	P0Gp;F|}}z4߁VX8Ux[}ol}#Idco1787Xe61n5ǲg}w|O}0~6_9
:&NZ~]lU^;~޶k=aqu;lz۷A績ݛ=g=J{Xܠnm5tO';8y}'y
;!
afOk7]JHUAw_
jao)Co4*rXkJb BPKYwBI  S  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P751.classXW:TV{\,(fEX]X\{5=.bƼQh,Qc1E,|y;g3g|r 	.P	QQQQ
QBP
5z#j!j# |z? h@4F"&f?d}QWgΫATyvڕIG
nu0*~%o
dǾwYjkЬIf?犾>ڙ~> w5㞴d-JAw'|sOzn/7ZڰtYc9ۛ(l?KUy=O6VTHmӇiQ=c֡>
[mѣe9G]#騜7_
N_h0ך~^uŉ⥹<etYw毢Eçl~ژ5whF4I<ThM5M~Co&m
Ta~c'N4Giqǲ;!s5m;kO\~Vt4u~;pi[>b{ZEwťT7=`9l(|Y{Urj*{`r,|Dj$6mB3tʚF
EWS#^M>M^/g;zH$W~օ?(k;QJzkgtTsloq;+yfb}42ʧL]'|q~p'Ys`u\T}V-Њ3NHwl5(E{owuhʚ6_^DwpcZGh1ˮ9FÚGD֡Ox^h5:LӶ&ռtҠ`V((}yʅ֍+IzOki-M/.MhsRtD̾T~}mFQwPE>]+yݢh%8{YL|FN5:͓+7oJFf[i=ehj}|Quz.~Mh{nH"zfUKk:zLj1~صj%E/nw^:/b;Z7N4xjthꇦOzM96=2̥ԽNw/KѾNY.ҡn'{5'x!QalGgT3jrdǡ@:7bܦcZfצyoAaTawh8_ƾªOmV0.;1F=vN5W\A[|-ze]P;zg#hAU=Fo֠Wv4i̺V콇v9/W|Qs_
A;XcI@##ٵ;+ҖRLLOt[NoMZGW6q앺{C$Ϩ<m5m#h`#%[BݢmwX.n2~ME=w+vf5NlF{H公t̜qvm=}:3UnLnjO_K6ShWmw#VƦ~~7հQڼ[:
uGtXP҃^#$yENK?nV Y3,{{4*i	]hCCcFPLBmmlS.1̟F<nؿq-u>Aj:XB䗶UD_kMw'ьl߼.s#lkˋʌnTS۱l/⻷1Y("!"(GNhD3BEtA!	nJJHtz
B+9&x z+SQ%_peJ@_%@Ѥ2UBJf?mUmJU	V	CTBah*a$GhǨhǩ|xt>Q	~&&L%L|@;C%
R	Q	sS	.P	_]XXXXJMFVE~ݘ	7	T2vk$$51|59e@Lr62\K1"]b7
l?yPZ(/,W+jaZ-AEC!#6 6
	-i}͹Y)y)9V1 {`J@%/j`ʲ-Y&	WmFlAlE;;ň=}CÈ#c	pq
qqqq1 8/\P0eW+A|qq6{]x}{%bJe[F5Ø/ ךa
uL\9 Jb̶f)9+- d2%cb5:"#11lX-1Fk95D%
yyN@dNKO`>
5Y֟W	C==,uorNFabV\{O5l-VTi8C!#S-B|9˚f4ZqA*BFaVY?Ttј5H-5Ʃ6vcQpb,</j!_xMCb쑃x2A\d?,¯jae+4eXrXɌنXa
&Z(|/	QX0gjK=vĞ
-ε[-LN
	<cx]x..1,1AsQs]âKvVQ]q
Q졎z>nr簨G@e
/C9a&%}=uq׳vPv,1a0K]FhG3sbB;+U˕q1P(
QzUnzCM)W8%Y㨑!ZC
2:;:h{Bp	rĵf
̖TͰ-Za{\\dɾovc',=gz؟u/v/B
%-ڹ!<=TKN%%E;+Zu=] `o CwyWbNp܁-ǥ Wǖ(vb7 ܔNfso9%W?4Yi?ڭ+dNN%P]5b99i^R}v9:Y21wlFJVFw7!P93y1ܜlaMg.mh?XFIHN8cr*&'bδls1!란
'b.5
٨~2}KAk>	J'~Ap|Js/*#>lyJ'%Km6e2ZidU]8"Y&c	y*#7X{\)MI~uW{#Pro5)/T "T
 2ہh@j|81
mʜ8WUذ'&z֐lB+mԪlb?Eqj[UHCL6P"ýlhT@BiPEٷܳFd7l3l `%X6E*VӊlOյ
<Y.x5jbrITURy]ZZʷtf,.$AD'tTr$MT1̸Hό̔ 0M1k39k9k+9k9k;9k5eȪǬQrNr9^Eϲvgua9e?GsuC+Vwlll9[-Ef1 `Ť(@f40&A.3fF 	1SIT` iǲ|{]D~'<~bkH9[cyl;Η|E^&{|U^'{|7*{|w.ϽW>~fHpfG.qf<%8Ɍ!YfjJpo	.2SKԖ
3u$3>\eWԕ3$fO;h%g3$xLOi,sf%xL	53M$L3	2\"L̴VqfDT̴+3m%fD*0^""3!qc&T"3aLD0A"՘Iē`DcmvI	o_<'~Xy +OyI <	')<i+OZb]
A!Q	QمW&myI{^a+LyWt&Q¤0&z^aL싨Ch

F ^I+IJ$W$y%Ad\Fir%3J+)W,Wr\r%˕̓+9LJaWV%J~+9W3^ɩr%ɕBd\BJeY;.Л,---eيngkOTTOt+JRY>ʠT0.B!QnEGnwc$TB2
UqT
Qݙ5/tk j"D5cm#}q.qb5DhN'bH'Z%؆-I;D{
PD8e"Pn$"
$Cb03jzD,"'q&0v=pq"ę^$Do8aQD2/n:'R5"!PKQXq(13fư98"rqSPDb(b{8bh1c)rsM
L9Nӓ9?9~8s~D\YȕY|<s(+_y_7G-_r.\|s)_\Y+x5ku|O|s3\qnv>ޡzOxgcff]/]ffW^yFfGԧfG4fG1A<W066ECbMup.aTnǐhbnw;	Q"'*)J1d j&t3Y^/ ":]f0t#F(.n{]??LsNʧ|<sLE˩s>+9п;cuKy2EJEk+8h~(ME6Eĝ\ŕݜŜ{8L𵮁KÜGrq'~+8Os<3[g/reί8ٯ?p^oDyoy
>};[||.|}<|#c|en`sFjld#{}MlF[Fhڭds:j}ld}ylӊٮk(NFvimdVb#ZA$ԲW+>mGd#QĜݲi6rP+vC;9M%n';7FNɩĪm.rb;9ONαDw6r݋=K^|+eq|MK*UrroETM|to;ѽp-Bý2|eG(<f./zb#?=Jϙ!@{(bN*kk~7"5]٧ҿR`DSK+
	K 6+2
dcVG1IgTͤ
lbjb1a""O:!M@4{45GI3 TT"Tej<>Ԁ 	2%|!@Z
4+0hYh!V@`M`'4,Qh\pZuhYB{x!DD0:2:%ԅNb$B<M.PLI.ć0^|W&j(LҔɚ& h60M5P8Iٚ0W3idRj"ZX2X9E#FsizCؠ6Mn^٭lqnq`sKmn9m,p;.
m/=n^W
{rMp=τcEp$p'%*)J	pN2%Aêw6
Jr L $'=~ 9)u$89;9AU!* B_?PK3O  +  PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEPrivateKeyParameters.classQ]K`~^N>E   /jY^7a(Յݜ|b-
	y$ cQ2xn!3^(iN>g5-_F&$yd9w̰5]1{i=[S7E0\}lp}ިa[+whXwL'gVX{#ʟܽ6&$d%XQb`(ɰ7i,[?(0m	ѮտT`ޗOғ­ɊBB&iF:Uy {F.ʝ#pgN8\E~BCG))D.]$4;s? PK[aT    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIDH.classX	t[oKߒw)F!lJ"a$&N!)l+2b nYR¾o!la'PN)[7ZS(=pZNZf页73~1 `AuܘBc:+e:fǹyԏTx	rՊ JmQUQsRXvZUC:R"DDҫD\5JUDo}Jl'+qR+q
pjZg(qg)[jXOtMpFڻXO[EslMWK_K7>;m_h
ݧۻG*IZM̭g5ўUpsStLS꫆^D:fGfFou	zqSuS6C8Gǹ:ӱacӮhKO4^e+.3z";rؚvWc]UCq
l:.4p.6p	.qqdk뉭R14p&@\&W\ZaUڄ
lV~Mϱ-BǭnP;qq_>[q%CVQb*aOIOi(vY9y`EdebUJ븑0a[v!O#Vм*'&1eMߤNWbu'bw?u<#'nEwK.q$ݑH'ɻ+tFܙ`]ܰ1<.T_K .V\&/S$\7wax^puC՝EhQnv*q%|ĺm1>D}ᘪ-GZ[9BS83\taYZ8;4\F[NX=pyՙY1V2%r⑎<jyS-$i-K.ZW5skEw q]Ŷ=Ϋ*6 Fjۢ𔰪)Q͘*IbHG:ҔQFJVk-81p:t;yoq]-&$
Wm?c^ [PM }\U_W٪R]Il*juK
c&{+ho=-̥LM&H)M$5&Ca̵$Luv'ζ[q:L@iN4LcUo)wS`pw !x[NnWb:Y+aૻP!1{2Ry2'&=KBl,Ke` ZJM\[,vXY6d2FyڐAYC\(+G.
p 
Q/Zᧇ"^l3,@=}dͰTj&GZQ蕺mY
pgnvxde`z|+}iSVY~=˖׶"PB9w %_>c9vs;@]7?ۦv?&ݶUb IsQ^{~.c7SR}yޯ
3vDc22UF0+e-HZ
WА1Ry0?cYZ/ {
|˃[OL˟3e0ח+܌܀rӟK[2k-9hN&UZʾl
2k
Zkyp?|bFvev2 MnnQӫir8{fw8 *oQ<jdu_>A& `?q
(淋IPxex*9*T4Z 2T͘Npڎ#M(~b<jTaA8ǈ1[܄z19	41_F_?űdqX*bG<%xCXryh/!*?
ڵҊZEy9(&HGPGmZᘈtt`Gk+m`/'`'D	OHO=LLCZ?ѭmIw(
E*
k:TD,x,@viL%&o
KM6YJ3Y32yjM:_u/vS;!TQnҾO=h'){Lk2Oc:dS3O<uSg2O<<u69S2O<yj#S2O]<u1e9.cpaF,µbq\/
Bl&	7{E<[۸MK'yS]2ѸG}	y:ȭ&_ƣM<&}<)?SWOk<sl<m=^6=1胜()v
woɃxp<=<;`|`g;<4d0[re0O(Id)"KA})|*,]=?/jh~Z~;pb~c
wCR<\ Nz-*	Yy6}v2|6f:픃$Vlw/qۗkg|f+)M<Y2xWDd_>#\EDR%$9a"|*AE0yL0͜65إ>}J0TԔ?LyySXmgw4x+8ǵnxyc`7>"/>*t)>z{}/_
?8('!&M,"$']l,\b	2#ޥ<1_?BiWN ,1`<ʥlq
|Q׆f5)_K"^_r
Ǥ&3/]gQ̵Ӈ3wbB
S=;S:côhGym_`X}HWLn5	^^xcL
\z-/NטS]Ǚē%<r~)F!Mx*TTTT>p	)i ޢCF*CP:fnZBͤרDW4[x^MsA4WRKrjXq2_Ϡ%jZ*eb5)$Wr9ENͲZlZM A{d@Hv c1hؓX7fPK$ȆE  !  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEParameters.classS]OQ=-o(-a[BQA|6e[	|I$g|8s}6s9sw 9<`0Ba!?n1ͫ;!,_]#*bT23W`|bqU8ZyjyeWfd*^(Vuhz6-:1=^miefl\eD[gj^3KY"Ke.5@7ߘFtKF9njݒө;Q^ٸN}YArٿSOiU"vh{Ob2]}d;Ƚ-NCg&ATM%?ڠa/Ye6%H,{ᶢlKk
W1`}o]5\t%_.0a
#bF99$8qǰ9<.V]A.8@X_򅩐=D_mDAK`LĸĄ1u@:1a>
RPSGO9FHAZY؃0zG`7e_&C0B(S4҄\+_PO@E3RM
NV>uψ_~]pMp_ѯw~띂wI@\Gz}8853t+t;hhaPK+  9  PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/PointProj.class=OMK@}Ic@=yS/BA-(Ei.ec̶F o^Q${o73_ NG/@;Dv2Gw6&Box5]gнх^SU>4JtoRх&;ěa/͐rSSr-/r^msQ])iihcڧkJFaÌ2qLns|%8܍ޛ/ۄx>aY!]PKL5   =  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P434.class	xSe{I!

K[ KB[mlmRPaqA("(3ʀ; MVpfy;瞻ǿ\="$2E1K2`9X	~g  www `# 	lϯ4.<Ϙ?p꓏񺟜.?2;!2WtߵB徙?;j͘]t#M?D|z,7//$G␱UiQIxrw<U
}g/
eEI]6!}?ގnK|K^mݹaOUxj3wɧ#GRU;ϥ|{p}=nSZjqZ5Avw_tUK|}3fՇO/}|Ǖ/z~GxLk(}_Um/pj>6{!sJ	]I^=Kr9vswkꦭu;zW7.ݫ|9V%E񤪯&
93vl]<'ڛgwkom^/޵LԉG{I,Tr3HC8;PJ<R3[qvIW3Vö'w>9~<g􋳶ly_,?>9BO+L_?xb+'SSgAy6<ϸ*xG}xާĹ_z˯޲'?-+uc߶^̧VohW~۸ۇ֐zs^<6d~cG9n?R]̿>uU?-{/nSqU>.Z_\ӄKe'y+W~3Nh/V.oVy!v_]%S+N/Y0g_0}^~p.s'-ܴcckJyΐ1/^wQig?~w |w8ze\<a{[d;{?pYõz~ˑw,X˟k{Q'=?YV朗c1?D? O ;]nI`<x AE={If/+'={Ua"5=;g+l ;Nܻo*l {KfG+2&aߑQ1ރ}_f~(`?	OevN~&3,2;{^f_Pk]FfKfa/;}]"aϰWevMXdJ%-KzX(z	bK>Y<_QB]</sU	%4誚]jP}ddc=qdgejtYP5JmF$v@{ QcdTzT:wFÜ*/#ΰynUg:"t ]d ݁@OH iQl&`0XIÍ`$V 9@.V`,0؀	@Pŀp=c
qĵmjKRTȌ˗17pDR4Q{u˰٭
A(YU\ޚ[]U'$DF\/]
E`:6Z*KFi42PlpkLf#;"
W,Mdo9X)U'٩s41Y
x΅nSVaM:A?`dAk%RNoSl N>NEIU-y5z$WL#;'Xw=F#B:ޠ3w@D8A	ss8uq}%U22Dd.@
G6"}"QJV/S2jF2'.(ef:o#QaӔ~؉FvU2B(8Ѹe^^Qq 51"m,
ݮzFQixly"GT41(>QfwZJe2+lsI9cXn1ZRfZW<^_kv؊iS-εEbr
me7	|!ZKvBdsiYEarb-:!]ᱢSb8ÙzGNIN3'2O	q@6e@̩T7\_%qMu\#g
܈6֑MWkH>3?32n55mQuCN3bKMؖkf`C,tFtO1>1Qȩdixڈ	_]Dl9Φy'8ĭpC<Yw4-f(-G[8M<cܨ)LY^f:h,UNV/ґ
hRam"qK#"'tC6G
^x{_tu>xp%pEj2_"JFzL	RhST4&0F	<	֊Q@<dz[J,7l}uZ|}wFkU=mQ,!n>^$ #JCL4T_fA{4/"^>񉣭]*[=]͞+F큖W#2孮szh7%-hp |z^9]l%\uu{^#>1(Y@jl.1Hv1E,1KRH܎c!fBt)D\8Bfua:΋	I"%:D*D1¼"byӘ
]iL]cL+T/VQ@lVA&Q%*D,}?Dfa>Q0w0BDI#ԝ%YLr:[Lb.Z|WĒ٤0b*^EfvU6DbQf(ש*Q7SoGltGIH}!I] 5%SMR!ץWSF)N	Ǩ7XV65@
/m0B,&LQ4Eʅ1i0f)wZn
1Qi	Wz^njim1Y:uޫ7~uoAuok{[m%ޖi{[mۄic´5aLfK83#L;3VfZ'L녉7a:a̴YD3=(LG3=,L'3m&Lۄlt1a$	aR̴KnfzRT3LI3¤EQ#uzEӫju:jtuA@*72hVZe*VPdu D#	HjqB'Z-Nj8V/ZjqNWZ-jVi{Qˑ{ZZ\E-LB-NvܔZu(3jx[-<NfGurn2ˣM\.Buz@uc0R 0mk(hLhL<@D:3.@W L&Dvz`'zaX@ `_J&Be7``ܡ
#L#MFQvFc\ n>FV`,3x6`P b;E)F (h0br$OCt f7NLT`**ln 5@-4FtÛh$hnh848^ZƑyItF]&M<$@{
zDDDwL'IH@몋4	AK]wAwen|]&&M.8xKpGa4i GZgJAN@R\"X޺K\[w	ܩU#p]*hպHH ug#>
	@4|`BފEK.8Zr\JoT6u|;:8>iS:XLKC,B)!-:ZYbR+xEuDE&>BŔbb}/C͢9)CL|G%Xw+Nh
Ba1ńXOK&aBi݄bbiSFg3o_qϰǩ0l`yG3, "{edמ$J`CC3l8^BRe$l&Y%%djVXX"x;nA-[q#,PB(0Iu-irM4TiFffBYH\Ӝ!VͥV_|JLU雅jnyum~<΂>[lK--&0Y/&zb+
gԦKubF4h]u]uECjHo52"$rD9gHb/HGCDD]3LdʠDh$<EBvC/B(HVu'
M4LAY)/`:LC-JGiG#X44.rrX)4q g_M@**VPad=CYD?Jc$E)*T4MWe4TƒS)
\TVf[j?RlvWWC>%D
PQP9B󕣴X9Nhr(Wh!h02ToAͰn7ՆG^Zcx42|Bw.=(؁~kLiqo\OƃCd6bñi+/\O]e"~p_S6C=[gH񗥵`J*ĤْO
G_PKT   6"  PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/Isogeny.classZy|TսYͪPBXa"$@B	"X7ܥ*ug>mնmuק>5w3wI9s;|]|'h0SGTF?dfhb)ɧ*6e˧vIL:eR&TELdGwG[-.cMX&keN_"Ke2tdL6
YvL6&fE&[evWq5jkjnK5tg[}w}rEGK<;ӑ._Ѽ,U^[=s8xzs[sɥ929SpֺTd]ҝCnn۞^:?m-Q-mȫH/̘SONfZRYz[B])7=LVLli^sM!NHk͋fȕo;A몚TsfUU"ÅùƟn5?&hUf!Uzʼs&.ebք
!bU2n /*9WΖWΥ_|EN&zrj	GmJu$dN4nim%ߛRGqPvh^n"ֿkcJLFϑLh<ĪdiX9o`eTvE\r;9ʜʘ8֦;SS%Ck\j42\'
z
7FW&p3EíMhpkS&wɲخnܣ^Ұi_&&ÃRv˒=F~nmd3Pa:5LD
ʹ&aǱG^ܨaL	I
30SS2;[>͑ J(;[ޒlk*S4Uϼ6LEf!ʃC$ۓLmу(eCΙWUZ=銪yLahCi˴ؘOgxRBk؏+:ay{5-̵vYӔnMw'3ƸR)c|&ޞ잲3ٲ¨$3\;w^)-3GL6ì
B1/IBΟknkfWpbNr
+KvAs&VV\cTg̚<qhT=3i$ߚHd7ju=͝JMe*!
,[G'4SP%#?@l?,Q(NQXWg[b<{<u~wA]FJT.QS
NiŌjķAw2"ײ9$h˩`$`kyÂ<$	DV6^kBYk>Dzrp$(*.;a4]8
d72'
88'9!P"BDc=͏?/ǐ)\88UOc&@9fwA]=\q'TCcOEDTX]@5
(Κ<fאVTӅ)qhmH(I|e2C64?
M>nu aMJf/|>fB$߃wPe~KXQ<.){[^1X0_p3QZag`cF1&w4:citNuO@b"mtΤ1dzU&ЇJ=&1SA,1+կ7"|Ar7WC_Uж0<H]JS|:|sl 1|$¹4TjV[]ĵmT8fӻfW;6Zz,Zehx]OR.ձp>^mpeya2k0&Xp0Or}~gWKYKütd ė@-3|ch9-8lqxu؃)xK1K1]fWhFc%MYZtB.\L[h'C;K/1>g)b5A6X}vereUvgǹ
g㣀6Cv8Swl5O,p紗VϘSuXwihQ)\{ڕB.Kuf+܌iʐچusWst
G'#\W
p
(lnjp3q3ޭt=GC92-{3c'2
1}ϞA`)>'<l, ^	`gx	`?83{LO
n`Zo)^J_'>^݇]q+k><3O'	+0/fkP6y)8t66t(AWk;xv ZP;*q0OltM`C1n^!VOCV޶ĤWfX>Yyc#n"F=%|V1_gkkA`i[܀1}x'xLx=;t2ޥx/L@r6>*L1}ԧ,ـ{C4л7x*V;*3'T*cΞb/t(0{8z>sHeYukxD=`[6S>W[@F'yX;wbqD	֔sj+\*EjpCjLH%$@D5/4GSM1A5[J}T1KO>e),D#:"\й<x<">*> A!JM<KK;H0DGM4t4h Dt:*g57PSBmChLF/PW`*L"ԇLO
vGw0OEԈU6ǪQ#V
[GQ񭄦bw֊Y5K9Wrǯ~r˓ŜT
`&h
i(9tRT
8dg~'8Aߥr":y
EHNhd@+Ti2Te1<Z~x%rV۹m7P(k %7b
f-P9T5gj@Z-Psj΂lz?}{&7
49ؚ-49g&<34م,f*fZ7B_7
೘Y|jM;ђ*e9\ [m0F8Q16"*%*VY0g;cj6gDG%EC|1XD|u#R
?FAM٣,嫹Sꩍ:)M)Ç^Y^-pnJ-%[Ze
jǿ'!Dy9
4Zr<nQxXW5nQ)ff/:JbqKQI06cma]
[*ak{
xM)j'bwѩ{'nƈC3ߡ~G^HX9!S907\ШwOg51ڋBFyjGA;673ln~+6M3l*[h'vwY]Lronf  h1=Lz.aMy
=FC^V6lѾifg
~lsn68L6h~scw~9*Ǎ z;Zoj̐:ޤ]ծxb6ZrflAbSȐ9CQCoXBdHºU@^w_yzE
o~;_]|wpiY9k"\:~8ϥwbD9q &(gyz/Iuy'ߏ,}D._>aax9ֿĠoa!v7)+NXqVdlaٹ*G[#.zAn8 !l:>W]E{]y,[G	H*"|X&H]KW["B:BQL$y"LIQg{.ٞ`\+u$>b?OZG*[؜X&Uc;z,
q,G)b('`8b6p(b8exND+=:/KD0_b߷
5{.͡18uк#aaaS1OV1k"cb"#^B^"ߓN#|l;x[˾b
t+3|\`bs)?XWElDtJr !Q'{2srq
z0-bc2tc8sT,ZqqXİ=O	],m0K=|{OF*l00JJkJL#w&Zt?b	JD3bb)&e/ZP1Ghk"dךȑ['tP 1# y+1?0)Ƭzks^;9"njcXb%s.fqncX
xU\ŕTl$Ulb3XWPK}`  A2  PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/PK  D:U            E   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEEngine.classX{|Tug<.I %L&	2)P_h$sI"LLP>PX] jHTjZ[jնŭ]w?ۺ{3nc5sq~w~{.?|q 'u4b{K!TeB.CBrctp||Medkucgu:
nQBrM:n*-6!G&z}C?Ġr
G}B_<(cIa!CBo>w	,y_;fǥitXܻky=KN<f;kxDã
*_<$*_B ֔8&Bt-ݟjhOeދk{$;Lv=dBovSk
>O{ݢ'L4SR]E
&g*NK'-ԹʬKusʶX}}h5ҵctDhKO
7\ǇW(;wXwMάoXyabSjtej[aM鞅bnJ'zHZN Ml}cs>4\{?ktO7,_j3qMD7G@2{
˚}#U욓P3cu%<|q=}EU@a{:dץOvfϊ2qZ'ֻgZǆSGQ9+]sDτd"k67f2LS*imq`tZ%!Pд1Ш\
,rBV
i$d,W8Va)'	D<'

U֞ͦk]V_SW4.;!#O
ϰYl'xFa??jY
x0֋m/x	4+x?XUkYu_7)c]6Ml
iFoȠV|h۟q{VX0FN:jW]hIz$c<|,RQ*H_7A{e8L64N[tg70>SJYD6d݊0Nd,3%?y13څGKuNF6}-}Y$!JӽT\qH6}ʐ}RkڒYTN9ٮn.!3
]YZh,X=MJ*y:oGYaO:$jXju(l>5N>wMM+(oK4wgzF;9>lcJ.ˤ.|,?[?֞%ay\hr.^/S[7CΥkO~7eЮ==]άM"ks̶䏥F3/϶䮯r쥘Gc#axc#W͛\pJ77y9v;b	P_$=GC0Tlhъ!шh$0-}^+jvSs|0ZԆ1aăQ3=!})EiA6T
u0QCz"N\OfpyR8=G"н-b+c"XGPBS)jN_lUsK	P#"(Jzto
sW5qc(VcboedcޘӨs̳+KF09Aҕ܌<k	n#	Gf׆+)>8#f`ԈjoӠb;d91{1mgp&)ʞm6m*%7Ж7P暦<hƿe 9Jox9B9-&-OM+a-㦆<SAiaay#盆eØ/u[dSt SfYt'x
"f,t3"8>ۚWX^dPNOn"[f̔/c>.f.lg \J'_FWj\/j5 7Eķ(><UXMܖjPM&TC<ƌxPY&(IxF03!iǥWmWr~4ďnt\`
BGBuoExX<>xYbN?
2햚b(KqB|ȟdNʅUņQ7MGκ=D!"0c#LGYd|)SIOgaSCx//~M_VAU,IIa׋˃~*T
bSXt".+u;AEM5maDQ`fUrrPdڐv(gEcXfŲ.D	!Z^J$&r#F 0dJQ5}YJQ<6P[1?YWA!#{W 
8Cc8	ӦH (
_Q!\tV<dگ
0LH~J	DLAUt5
w^1$
K5lk_q[|Rr43mʪN$*3oQ-7X/eAD:eYsln/?7ΎpgܭJ|ZD/[r2JFjgshjAdƉͷ'Ʉ)}0OءcW[[mڟ jQb5j>NVpZPU-
߭NՈ}FQs8I=Cqc.S1Ɋf'/WUԭ"vVG|1iF|ɺu;|<[c" 5(TgTt'3m"=ꑏr0(׽H}iO{^^ј4O2Hط䕐-,2#L[l*Ω­F-jG=ml;߹Gy{;
oGV0ɏr0m\	jՆj+T'Y*^uQW>ܤ16A΍mxZmǳ6QQ	UxۘBN3RH$ν9zDw\^Lu<\!m[Ch!cfU[edvuuG];Toˍse&UtNQvэ;X]OWȘM\V\n-jdvYB.GqX</yzvq#^`&`Oyo	]&[>	μH` V[lGج,>*֘kbwǼ4u7}0cz kXZԃ@=D<jfWK=AK%?D̫S)A[WyDXU_S*JXHv呈oɲV=I;@=ii&!V=r,_ζD]]uK~;rzNm f"o;)U2mÞKXEy@=ǐxx
Wȱ;CQ a5i2-vބͮd;y4WyknA4-pfƤ"H$WcoxH8_rL跱3
hM^o/ҷQE>OEq(&H6
PSk?u~s
&0\Z|]bqqyr&rZ`NUs[)m-OQ\CrO-0<lZoDlDܦ4Dq\u?/*
`@SʓZ
ڟ䢪
1+c㙌|O9J=S035Q9G/_PKݣ    PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEKeyParameters.classMK@MƦiRxޒ(AEAZDPz-K6n!JA<Q$xQ/3;3o/ z誐a4QCGF
7L6;^G~i6Nr;(,v;'R3.w(zϸ5dK`ŅM(le6̧ǹqP\*)6[WE
u4~[
4>^O"𿂴9Xϐsr:ItV0GI5-{	^t_UzuhPܡl\!HwHJvɶ^;PKM(    PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEPrivateKeyParameters.classR]OA=nKYC/?XPCb	!$tv[+L4(ýsܜs̙O X,'%Lbj L3*\)`9Ǘ*gn;n6NlKupFTO;*Κ::P2,gUw-i~St*lgZ` NaUD֛Tq:ۥNģ햦)9@ҝD6i(>fmŎ3I^JC/`S<1A9^lB}&G|oپQ';cdں&dlJEgNh}ZE)ȱ!}]0vR5rߐWmtI&NX<LS2+߮g_z@k/.Ku{+e.WG (
	'?o PKc  Q  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEPublicKeyParameters.classQMK@}۴Mck[*=-b@`xd]J4M6Ń?%N`/egggzx}Ɗ4TP-"yQx.!ӷ{F/	"0G27´S[C
9[ap%='v<hv|N+2I:,$GnH%޼l,X²<T*ddؚ
6.=d$	Py m{O
`m(GkctO(gB[3Xk'()dd)uW\%FV_UzB
P^'YJS?PK$'lK  >  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEParameters.classUAsF6%ّA
!# ")@BLL130Fz*7~C@L7f8ޓd:y{}]çzAW1\gXdXb̰"fYAUmG]qM1wx&㮌{rŞ(0]x-msElzۛ~dX]]gys۷՗fK~|2ۖ2-Z+j>6N߷'VuW
nqipD贡4︎ P|{&&K~Fֺwji&ղuV$
}׭L=SȐYù<VPe2>֖qH雴`Pew^^q8/KRQ"J*ㄊ1e	S8!p z8O*OTqFQ/3IgU(蒳#Ri+'х8ޅna7
hh(v,'#;rd'BJcʜlzf52n; }F1@Q
2TH.
] cCA.S(z+S ,"E3$yDB(wD7iꭐ438*dƿs/NS{2eóL
+[0-Ph>Ox.QI*ND8HMǩ3T)N]"!*ǩ'R8,.$PQ	LGݠv1Cƣ>˘{;se
o4Щi>jx99?&O pաXuC4;ޅ+PKɨN    PK  D:U            @   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/Utils.classTMoU=3ݴ6iTW@@]
$)4&${b = dÂ@`_,H˙gӢ	K39~8TkHh0BF-
(u[sˍ٪8ݒ]iҢobszٍFq)Q8+vGiH
wnQ	Z_-?nbÓ&sF>MP]n9v;M"	y}8([dVW>[^ٛno"pR`ֳw]Wd;WnJ㆓$gvTTI,}[dnôZI(&Ԓ·XAܣB|QFdÂW
ռZKvi}KL4)C4  A9-5`=h&.Gи,PU
ʂi
"\00o?ӓj F9ٟow?ԭaLo.(IbW8a%c5C-9?2ԛcf:#eoqIaJ6m#yRLv7Im0|^^ӸYBi\ż$s=BwCT?ߘ~JoU[g_MrfM5CS nҦsq>4rV. #cϧr  r,`8'0Q"^ŋx
E\>)[h븉ى)B㟂:ekY0ˎf'oҼRjm7IYAx jb)%3!dM.xqW8;8
]	 Q`Dv"WU}nUUZ'%PKo  a  PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKERandomGenerator.classSKSi=_iPt BèHXHqMӃ-;t,qaԥ7,d,:|$_w9{_	StЃ#4ǥ)H3.M%pIIH\t=7,(ԫ~;z/,Y=}57\-otxUw1Vs+n	,U~]P:+foym
ǴfMK}+Vt2!p\̒Sm^!0y5%Ee#ti,W5k}#	Yr3ZصKmos͕:Tv :뮥}:0#/FuǐH0q IqIչi*:w8%ٰfcSZuf+lF$3Iin!0pCfkyK~1u!?{cˠ<|ƋB&"g:rx^C?Hf6Eyٽ<?}&{N]f*0ڈʥ6r.3}|Jn?Oɒ0aBdFxxR&D?#8.m"$<LCjF2'ۈOŋC6OG#-y8F<8(]Hc|&N(ê"1rqg
fSfWlnkGl`sQ_nyze&ܽv5|闩+aN^?2uAMF?_1˨kQۃϳhTZ)$;Ӎ&DNLKJأ⏒҆6hȅX͡HOPK;>  j  PK
    D:U            9   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/PK
    D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/PolyVec.classW}l[]giдM!3ۺM-mJOR(-̎$k;%6X+lS6!4 UHĦ5ZBľ@H !V\?(ZS?|߽;q|  c@-:mY> ;,`  &!a,oSXP6!2t)CW HʲG-Ѐ61kc

}NRaɮ\W=ӗN$BMƒl!#|!ѓ:b[3=
J˦rxI
U!%'2Pp[J
T
ƺL}ܞh!H޺)uFaO:B*
Ӻ*dr_aYc3k|hMsryM4w'3ٜo-rPZ,YاPLb5jgg3tTYLR vez܀_tZ2_
䜎#P
V8t֊"h2n;s^wN;RBKf4߸'/IbE8-ӗK:W$E%X,6 d1u".Q8I9j9{R\)89e<:ߐUoa̼XQc#1ѦE7W΍gC_vCItHfАiIy=/VwA #_Uk A\
3':ɱ
~<ĵ`	,h fVéB"dKj:t,3u3Jj^]hґ)5CW2\:Ι7bYȰ.tv`%zd_ckmOM}=ȃ_}VDY,&FVWs@2DzSZ~&}TOlQ*ҹ(f)13:Ib<7]od*pH_]Ӡdp\თu#Pax"xÐ0Hw0uwU,1(#
zԡFY"9VSiMG
B gQ:;3(x-4ZU	.'Rmk-E`gm'EiagR}¹6KD9K*55<+(|S4&2g#6h3km_j=.&Y|#bswN?5np#R/➀ Ī"%ً##3c
wD^Z([+
hh0~]=F$lJYs#8+1kUOw^ZWgza2*dF@2dkJT3$+Q}4}:8Άxb#,-YKfTṴfa7VT._QmQⱵQ!ժ\@HZlnɂa7.bːl!r!\&kJr'_?;k`aS83ښ+kW00ZHU|^[<[܊q66'+<*n{؉p>n-F\U#"/FZڎ=XT?zUO ΨȪc9Oi홁<1เ͊˅L[m
NF,ʴ(:O4-Rg,b(9-I"k2'I}
c\K3Moη{sf<d6
'>wt}%;w
ǅbAkQg,knwsʬ3~0k<3MF0k`E:RMJtmU9%؉clr}cc3b+`tf]f
M\ch"7dh!tJc[L}WY
Ycf	,cW="eqQ%!{O,'}RUɟ''!TWGzr<NGX<fq/]8'Y.~pEw>?U&R!<r<ǣj0?q	sO3~YCk𤧗<!N<9"_Le7`BKrBSe=*blYDKHhKT<-X^%B6j+|نB{h3#7#a:dg1`s<&xxyؙ}9ź]y-SB/E_&XBq0=\gFa]cޛ2_a32cgRǯ(ǈl7e[̫FkԁnFV$ FZx
_cO|

`+v~Y<&Uo4-͉Mޡ6Rz
깧D'7c"˵GѰm֞7o(-BT
A[j"Yoŕ[-'#_a>f
7	;Ocgϵz~
VEf PK'Z
    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$ShakeSymmetric.classTrF=ɑ|A!N%-eqH
BL)M?"˛ı$wog鴌$Mgh{{ﹻ $
,P`Eep\S2%u1XRe
+ޞ-߷k^v]'vn;zc_a`W=ظ9<u*8pcoi$P|'/--?1 0|jw[~}ݫKFK~9I۩58wNy\Qcl_0eXZ-Z#thYGe鹇AXX6ڭ	d^wfCEvd7ܫO9&N㌉)(~&ᬉws&உULX3Qƺ{P?xiaUU;]UYit@R'
;{iםuorT++)_wb\il7>	P;]kw)_~katÕ	P/]vv'<nyl&tZvIp4KƩ7ar	q0_@Г	s'y)zñg<G:b/9fhlq1\BvwYO"/3lWZCVMFFnov%GNX%9ʜ=#=V?2}KYp*[mem-ZI0:q>RCL2k0'̚acV}߀G̶|6ɴTd"*ŢJXGt0i0|4F|;_C|D)E+/5fՙ{/UnM_PKG    PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric.classN@J_QY ѝ1$&$F7.̴P)-tcwhԥg3_:
Lla`mbCv:$=*[a(fC}#2uu NZCv\9/`iOYype2Xs)0|auߐ=C?9f0k:f60}l<pE|݀B;Ǟ8UQ>-E,a&k8R$p^HLx ~Jd(+kK!U/NKB
7з̢)(iehŜy,h]T,a+4#C(ԟkO<j*͠w6n#ʭQ:,(v"GàDPKn    PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberIndCpa.classW}td@1(l"WHP!C"HTf3Y6+Z*Z
Z[mmOmzN{z<m=V{g&I??{{}Op&Vq_IH0d*vLe25.gj!v2uSW2YWW3s)ޭ:

a/S7pEfodK$f/˸2s+S]<nVW܋*_c 7Gp :k`<ĲoqoxDc$!xM2mI$"Cp&7S#P*.
3ۆztc;+͙-d6
/(%zWkzH1:52j*`DlesrE?62VĊPM"xG2Hpx5l<KcXtOvɊd/ptr}'Β.p,- kZBpd[G8el$W+)"BVAƦZ[:\t 1y{:"^=1i-nd9|Ȉ/yq%] XhmbseicƒP?%qrkP@UBɁtXc䗚wͼwU\C*ZBcx\yX;Lb	V35Ljcj:T;Sœ*֠TaSX)4MUqT|Og0T<ScxAO)~E(jUq).Sэ@]P%7*^aj#65^U^T'?uToCT[|]ІvWqx8mq)p-3}Qrv"	T4U;\Ic6g459-hӭi3`Ϭ|Cdd-Vl	gl![{ÄȾONCdr]frP[>Bf',_6kPr[oY:Pog2!gM_љ%dJ%c4by$BD67SρDH2Hg'ypo/8kz5mDˌܗNwd41i}1(c>D\[42?RgT#߬LS!Py*Xq9Ù߬fD
lLU+OdcW>1L2c]*$
m0؋T fy2%m!WLM;4ГM9J$0>W.Dp5UvϷ6힊-e\.W!Q{qE#p`"P7@]a^{0r_4bKQ}0fk'0	w}|c:jnhRfB8ZThKP[.B2)Tl
F0spНsxN.]FntS1[Y\U:0fR]hWKGQsMa tݧ)Bqp##9vӔ*uYPy^sQ
;OFMuabrczZCts7'BО:d#5v\R4@3qK)g%P-#,'E+$Jvn~?^CAǈ~qz$蹒GI Ќwq
>ĵ,\#`87Z܈ɓxG2ɨQ.)QO u=4Nd|N.|
lŧU'Sd,t[sAPsOۂH.MVQIT٠y8ƄQQ	t겉j]1+Ml#Ŝ^{"SP+CZ5ꊹ#u
H_4dCwaR:O턡;puanz1CpsCx~&<H<=_ <G}	oIOeԟwKтD+mXD&0Dq_A<gd.mv\CrSSSx;)g\S ,p50C$h8O{3x 
hb&n[^GG>`Z#FS[pR.h<VWR]E-jdky~n+f;i?9]KNp#ѥѓ9vlі΀DSD*Bmz.D5>C=bj3ZC]3?g琄PKVLKR(]AI,;Q#5>MڗYQf	}$#YDmMoas`a9BU*XxK&w 1Г
z)QiB<<Hjw{ѼUWsBMίb^{|ptnԚ~c뺎
0*QM& 1_t\q}]l$6a}R<J،E7^=7}_BDkv(u+uoEDTT
U'脩<trJSGLY,6Y3 Am06*`tk2^ukg'b)^]VBDPvHe"1c#l/~Ief/6zeKTG5| הG$膦qH2A@J@FRI
W*$>@\omkGF%Rr2g%7@/,nKٜxtixxb|nmvom:J@Sك;.Z1KœGǐOc@<C3ǳPKxg    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Reduce.classQ1O@	C8j1A DU3g:>HPud`aBbwث3N
{U,U.q0h (9Vrq3663G*Oa,O'o1*N{j Wd>QƇ.CI"ن LCy_f*K|>rwgBP#CQIT#_H:?}OF01"OG=rɰO.M]؉Ds>{gOсހ](`J|\4Ǯ_=gJ<ia8Q;!#:j	DY41=w}sr]m[l	maS8).fcL)z
*XݧPK}Ή  p  PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberParameters.classTNQ]Rn*h;!4IS(S'A
$g?ʸLEfs֬}9_ 	a.l,YR@O|A }5Xg|1ad93S1J]nM׫Y۲Qv^̚kHcs1,rճHKq6-lK*q
vwQ3Q]␞-Nrj޶{R
/b]rϿ<oȳkj[#YT,oW֐/"N
B~+$ߞ(Im'	t@PG M
lmVt[맸H
p74`T%x
9&3nkǀA65t.8
fb2|2dŅ<+XeO (Mt}0	JEi5I%f
p8wM"5NX>(B|ܡ&Bh!ֳ-DH/V :9N=#NҪOV(
ΤC{LCLn Q0fO#y	v$ASt:g`:~5S{x4$$X?}CJT]f$HOH".>ެ(cP0ǿ(jKRzPK~    PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyParameters.classQN@}[
-*qOD11&ܖ!UuwkҿDcJDpy3ޛ.lePw`%f;Ԅdf*y|@j~/24RCUZC4 dF+1R6fe5[m^F
YoLq/pYE%e_hOt:#
B5.]ΦK2X:`LX{cNw	ЧN
EF~-)a-}PKEɾ+  J  PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Ntt.class}lWyJom}.lZ^BKm){Y{Q^.f.K&
l#:UØ%&h4Q0Gp]:4Yhsֵ_"zZPH	S@4uoA@NTTC-2bf ݠp9?b?_\kU]6^_ؗ3?:|'7@g #!eL`kL+*\~d^47-pkpדaC[
}ɞp>;rełP130<8#$FW7}HoMv`6_KdF2S̠MlE}xnE#ZBɈ"*v4*S4etWDwrEhAKnb'Om=rُ!`f4[8<jPmuˍn?C:e7q}Y`\qҮ;W8i3ɛ|w\q}!ۜߗ;K.h"fћ]%A^hNdCǠ[dȧ[izi10z
ZuVݥqDC9I{U=E[ϓw;F}JU]>EK.n'IESw)m3ц3-O
BxD-JTKIbW\a5#(8$wfhi69`79PZ>AE?QbbV'vv*1rR;M'#kԡHVR`cҟ*ŇxKv=ï%#yKVq=ol;6uJy+\֠(Aw#-&ZMH;h !bI{ZiE]Rϓ7
{UɹO
`
e>&**wBOcqJxD
*JUqwwq'JkW59VqSB͕BB{w{Pݴ5RsI/U٤w
Er{?as;O;\Vw;ϥ;b.q|6@n
2] " kZs 0_q@v_nHL>*Pf7`*B20lval>7< YX/ɮޡMH_rC>`0$8$;K?,pfk-<vm="( VXp[zU,ְwlceOG7&6lm67Ȗ>&v@3zfsf -Z9hcw*$-}lhHO4:Ox]=q/]lvq
F3#]Hl-2l6,=>vjx^(pm]Y`!&]Ay v?
fOC0ȞUYUka6tXG8zm([G([X+!{R?%*9~\_UO
}<YkbO>)}i/Z Y>g~]}#_}Wžekb[D>|^/|Q|c%R"wJ3;E>,_䣱|G|_}Vs+?r~6/ ]_E?~/~vg_]]#\{~l<'YtEs>W#(:E?k6~%>+;D?g}1O]
O-2>Z>om/\WN}>b=%Mbj/|J?b_ا6}b}^׉}}W>zdߊ}Ԑا}b'}IN}ZpeS'e PK!  
  PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$AesSymmetric.classU[WU04PAQZB&l,BmHQ@RLH}.//֒.~?>3!TC>g䯿0WЄVt㌌4IS2*hń^6s|q]\!݌2f5(ExCƂ7n?]g'`xv֍]*Xet3,\l#[FBf?FF_'|-f(dN3%f9ژ9l	82-R>Ŝ%3#M(m;5dvc4KWW	dF@1̵yfn=0[sU떽K
q_&mrM̷7ҤPvɱ\ў,s
}Ss, 8U<kURчg9>:5bYˉ%U<~K*ނ
U/ y׸.gLr"+@2X;Ȼ|yO5\W4,}֞Wg\cLgԪ5cn@1Q(0g&g.F8n7MOn
KŴQi{.[0ss0 EǶ'Qֻ11dfe΂ΧZhւ1Q/Tc@vH89bB)u=59MNQ@D,n0˛J
zEzsih'Ǘ$[GC/n^v	@iqmi۲
Qm0@qr тMz0<^2ɷ҇ġ{xB]rU;N$U~hR[;8d!#"RV"F-Ѿ
u$>F>!# JCzT< )>#9D됉/.Q]ꖤDvb.U-U5#x{sZn!ϗ8xjxdKQ=07$Ob&jԢEtQoi(~O(	?b?~j{C~\]<U[L_(_0N"B PKEkM    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberPublicKeyParameters.classR]OA=oQjQBm)F 		ven&4?e<l1iyix{s{ 5),*sOw4ǪXc]@Ʈ@:ȶcڑ@F̞߲f>7l<јYm	:>ӏm4gE
]|+:\74ݮ)"qvhncV`,#C}gTFw_:J|3?G)1
)q2
x(q3%	<T߾f%6Qg&n\IYFKc^N-߳
z<%^35Ysz:N;8V5~j(\sj(EF+G+c[I.(]"4[hjvm7P#l>\H#<-.c;	+dIECt}P((zq8ƺLJ`]VRI*))i
ڹ+SWdh/PK< 
  Y  PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberPrivateKeyParameters.classRkO`=vP
m]TbhFԕ*Ů#ٿ[G͚~!9<y aC0nXA%SBMdIZZ).h	'jGwLOt
h2wnN+nz{vyJjNev^d%9s^zx穽P#Vo}Fhң{ɬɞ4^&iE{u#<pHۍ&dn˽ _t[LmvsjkqF
%I0!=70ӵ<2ؼl'Y\?oO鰂6ÀLUnly/7cK̞yUUMx=HxB⩁<
5KY
a-}C3rURCJjbhVIKGF	\%VEh8jSTe
UVyRYO>Y?MT2UL^x'[_(/;\ Φ^QzF,!/mk?bXɼD>jZPo2jz8OoPKqH    PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberEngine.classX
pTWnm6daIRjIB[	$K4	.M
cYEՊbK-TˏmUR(*n@Zo[XgGqƱc=罷?,asw={{k=w	l%cCfx#>10|dxSNt`/?}Zghc8ш>焇ǃN433aN<؏8g$|gE|	icq'<!y{J1N;3rf%^$'e#T{k"frZ*`*T<U9nURÌCL^C	!j"NԸ:&G3Qq'IBR"x՚"
dU%MJxI9锢jVͰ!bw~AU^+89uO
)A8'bɔN+!TJe-lTSh$8d
^Mhsy]kޠi䤒ڨ'ʯ`KjFsu5i=sDIJ@:)j*X~57)GV@qm׺՟)#.#FykTѷ(\K[;]yy'rX0V\SP[%͗jd6Ϟsټy\ITTM
bA]gRZ<v+#zmhSu*Fq~V,l{J\Iɪ2(
r$ūOL8`\FR@QJ1R`,4_|nF 6^@"
*#^҃0]a*l6Na#w012fXðaϰa']XJ"-Q9FO31%
*I*BH$Դ:k_q8ū@lk.{II2]JvȔRhYqWG5nDrE%\ιpt}*&$\p".^vxŅoӷrisOdJP:՘چ{I{	՛$)pԫH
&FQ9(D{{PHq e!el-[%mWY_xmb\ MURNl0
JS;TF5ī'|kWn+SؠgQ#~_m43ОKMz[[S]2FP!5))epGF$UOĔb~VA5J!93HLeKfL|-Uҭ:wč٤R>14g/ᗣ@DUz%!6̃D;	\ȕK7a)YiID%m$(ߍLD^Iȷܢ鹞6W165Ƹc6c5uƸA.7Ԣ}6ߋ8Ю)oF%pA](I6⽯k2xL\I8^ m1S	7ZՄe<&|YL@TL޲TpsYjpKYLU*3u;ֲT V*a,L*efRfꃄ:3!IDt9-35PtZD\ +|P3 ||u؝CNM9̙ƨV:_vG
լu0ts3wiq{P=g@**sp->;XAַQ6s(`i>DGӨ!CiҜCi-}XL0*}hch~=N=מu!:TEG"?IxxYZ͘&s8r8A_O87]oqxa9EьKty&G,nii7vL~XDq}9\wp%#M ]`eG8eNgu{/8q,zVXIs:E| cY4qY.h
[=6]"+0.yb[/D^E-^G3zAS	ן[M?	$h~O8h#z6Wk;avQ&_^RjkpJt{kX0s:9]9Q=Gxd$(6 7/$~*u
py@o?ћBWݠ`hHH1WҊKbdo[::gЖw_->+`JQi=,CNjY.鳌y4+ȍC#;x
E V4
;ڄ+{E
Tz
8"ᘘoS~$*	M>?@m㏂CtXZ(iTuʯV(ZȩpŘ/hZQͨw.1j/W-Sv8wQkA#5zh|zN#dw
ߣPKSj	    PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/CBD.classTKOQ.ChAob-Q(IWcÆtBvJhL$&VwnX°pkBwML;}e{3;_|2*"UFDk?W IFڹÆ)	7FeEǸ*'>ySj,Ik#KxP`L*13chYMM[I]|)Z*i\-5Vʬ/E<9K6M;n	=͚il)+ysp tbQâ|ӁWOsf&	`]R=!|JM
"E40#.//BIƪ2[5*T9gʖ"ԾnJԈb :\e:JTǂfzZ6(Z$MDv4j"C±3$v#.u!,d~k2y;RqWH>y'\p(yMyC$$zDub/JEJOM%Φ|;Ufw*zZ˩OhRk_7;AP鎥i2vޣhZxЅ/7$7ZK؆\#NYBz$rwt2~a,_Bl[2¸h4jBmFr^O-movznNC6BYcDX")?	Au`fd]_PK7g  "  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Poly.classXmp~n,	
a%@R>
	|D&awIjcTmZREZі*:NuutNk9w݅ Ls=<~g +>,>bDOEhC$GNDG>~}"%䓔nH|H!-R8({D7hcȋa*%tB<ŗjć0xƃ>>/I{X>_!/՞t:;
E9fk2UۖHә^@{m{j?&kjsRwVaFw!ןri~(нjT0L|YYPs2vUSY97Yz=
kk]ԐKR}-^jJLD1ҰqTSEHBWҬil邩YӪuh{&ੑL7&:CuKr[2A+tLm~Uy[<l͈]WI
)<=kt:HqQҞ#ow%!^<tXܙJInKwqTtZ*J=d"<v+bۓ=iޢC/w~!gdRv"fh.g,ں?~0^Otf99jwn쑌%bjl扸26?jԏ1?aNEZ!<g%[zlqԏ'PǍ]u6Ƿ_F?-wx%`g49[۝~Bx ԓ%L
-[&dj\~V߲~KӾvnڷ-[C}L	9⽡L25^&&
gl8nE?fM@@gbaj8!YG+(N
2;;z*EU1Kl*u<<m.T5$%S-R	ZR%ѓ8˦-ex*dr]Y꩗+kj
S/#3З*j.>b:+i8뀛Waƫ?ɍPb*ojYFYՊ;ŗE ?x]n!CaRCHnYkt[+ܖU,p3XuR_vy-pS#`#c0O>oxIw),ry;JQ Q,L⩠%KwM;cxV bB׸hM1>9~Y
]k
* æΘ"dÞ50_]˺px%>RJAӘRfDaK~v;.kq
jnθHg]sU1cfR_	74'3˛$(:"UɁW
Ձ#G1
Źl'XD)Vn(7(Kk0+^:Wkކ/~36-4I\p0pq'[&	D7t*&4kE#odu{Ye3WK Wˀ8oUwPbmY(9ҢQQazbQO]ԨGEͺUP]V,;:dzwHkY$xRH$s.F&yX:kQb
ʪ3&RDrCFlf+Ԙ[Aolq2#a;Yȿn֬kK?\K!v^8Yw0'Y?ǃxqa]<(p'IOF<j³j#Lxe#G0v/ERy	Et8l9x32Ql`
^|;ha6ݞX#$Q;rdȍRu Kx3SDJD=1=3FTY1z+LmkfV6v^!c+fǼy"`vWZƢ!YeTr$+XYablnC'PR`grg N
oWq5^C4u֨WYKDN.2!/mw8MpFY6SqRu*j(Sj 1	h<hlAjѿaNs]%WSq&O(S[	9̈ɭ^(Z2b,8:iZaƪmɀHᄇyˁJ5>OyO,1(Tht!/Ű'xp
#EtbCQK/DfAb/v0F-(Fi䢜=]"AO$j&jD<UF$¨<"TkTg/?O(}N|*b|OSjON4Ts}ץ@99r0\׻#EZ0v
Ⱥĭ2'&׈UBF[M'T嘫fb@Fv5RsPjh6]mX,A5·nKǬn7 G)378YP*uB#/wIK\LQ\B>KK:.UXVa6KҤw?oڭcXx;WوcxHy?/s	Ău(Ue#MXpuVjA{PKXe}(    PK
    D:U            C   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecK.classWWT3ET@IT
J4h0@QTbHZ/3W3wPjӴ4m̏6mjcS4V,&/}[ԗ>?j~ ôZ|;;ݏ 0Ll;%,)Lŋ

a80;H爘Q1)1b2	#1Ή9/f\W\k$J(LT}>ķo̊)tۙA;̬Zgc-xڱ:f2O$p"7k'Vj(~VǧXQ;N$U0҄?a:+OӮxNBP͎CA+sLgicFz̴~%fQfYi'aȳ|rڱ3T:1ڴ̖gv5FYRvftc2g}X\3CsS3u73;=W٩xBd&GYG	'5o_,nѴ%@MilBuNs%!=je.d},
:3&cVl3,tMO9bLH>s	s',;8t[!}N&RX}3[fjme/eٹL:Чs:Via2[W
lE&wێ64K/*!ʣ\"ce{͌9j9VF@v؃	1e; ;(d?6pW
8$O3oHqn8~edYي ~5!\d-q"f2px%gtXdct,hΗ~UKXQ:ΉN/ZZ_Zfz)aVܻܵآh9$Mj[HWT¯Kl9P'A=y\G?]7kR7pN?g#Hu:(fg%Σgg9(ly!.|
.۶Gri=JYΤJ]Mp%࠙'FwbfmUdrli&}	"o)lZ7u{
 bzRunw0uv@WTy%)&ᗶtiE"!{M"{VD5p(;|K&JԍO?jbaڥ𣜟XeXC VJY>x#WSNCf;4@ ʥwP1{8(=?
xx]2&(kO
hiC7x#IrBz 2e/3o3Lg)ۆVRMn
U*VMdjѶ2_Vl%+!Jgޘ^no!k|k0#53d@0'W]|pJ{OD+#!>{9{"._@"Z
B
 |l5~-/$7*N'I"O#6O-)^}Ѓ</x:B".{g{yGy^]1O<)0ԝq5NVGsSRd.}1M!,`y]*8%e!>ܪ㶹NG5^ sXQ$BSX[<	Sx)|q~
?i_?KSu[wn$B5pKOTEG(1OfR}͔/[NuR/yDR^.^1G62TyOxPgZ_(nsoQïSoM(m"Cmǝ<9\6eo3%wu?~
7eVЭwO|ćYP{Dd*qY$|[cM~f4ƀ'(#.
ޚ4Gp( OkBWNξoh{Q PK"    PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyParameters.classQMK@}~Ķ釵[ŜzR"Cot+IS7!JA<Q$V&̛}.ZeQ/!MM+DA8g^HyS4#w"}od2uZL#h!NC} g"B]OT߱U+Oe:䜋dEۿ܂-N;-CkUqU)o!vhy6C3e&6(ڥ:GXq/`3ǌ^Xˎj$SݠnBM5[٬'PK
s0  n  PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecMatrix.classVwU$ͤÔmXJ>j)%)SXL'CddΥʆc9¥+W?pPIT7w{{_IU`DZH]ɍ*8.	aTq
UYQ8/%"(V9EHrq\RQ𾀚wۮ/N.,ؒ5Өx+ULZs%xFL]uEq۱	ثZfX@hY:W`(iz:gYrm®XsݢU	T_G# kֽlh-MJqe)r]~Ǹk
Oեinxf5d֭Mk֖6ݏ0
5A
W%wN77++d,h#Vؒ@Ǥzl,ﶛq#5,
	"XO#Ld75r^AR`9NdO^q>cs1ymy˛efM9-g2fJ5s	5C[v4/^U[.N\sAĆU	U*+b@0{ƪ5:]Ertx=Kevm^M*Xdl@cR`nm箻j5g
Y5T]wZ8U*ŀމaލ8
VeS\]/37LLB,Nї&07bQ9E|)iIN+ DD"ВHOA	땛!QzDF"B;µ>hمNۃӤMD)
1	k"N=HU^z?Hlrw0HW
OX4|C
wyX?HQ!۞doG^ͯ֡~m!wZat!5'1;ߋtc: z÷Q~>ڦoOnPzb't{(
ڒL.PGA'7=\G+8ʿƸK,<IBEA\RI0:!Z
Ȑ
utKo&fmG6ny'>sME}PKU8  
  PK  D:U            \   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumParameters.classSmOP~֭])ʜSH,hMWY:l;>4HGm+H z{sy=? .D7+"2"+$aJ=/a	)%9V$q|$'6wf°Q-Y9nP>n]dg\SfjgX8ϲa=}5"D}_mj
6	J=k
JeVLtٿkTiwMuRk)kբ0Û`c=t_/4k){X~}[$mXl܃Uvpp-7=[7L9_U,`Q\UePXůt]Oݕ%
f0 u*,NS%J`Ϛ2gkth6"=. FR	S8`4ii΄B`A^<0?}>/gIv^2U~T&IlP)G9!cDv.|R&JjQr>ؖ!eΦ.@BA'1ĝ	!DS<o4sqܸMH>I璃Β8hqOCNGQlQaPKu    PK  D:U            a   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$ShakeSymmetric.classS]OQ=*ETKP`Am4?mD/ȿDD
?e>Cܙsf폟_ ,rH0EŔ0ExAQ
w)f"sޕ%u̗mn4
,7fó"7_{mN'.,^c4w!>bV
guSD]z@WcuX.
푮lvT	Hm]lFePdr$Z}wM1hYq1 ,vES`D09!N*G_m(Km~-ߟjWy?9P
:wV,u9n;1jws.7*G
W쇾2AݘXycbAC5HlkeaIo|ԍ:JI	9SjxfٞeBMk!(_RR _JIR:/i@F)Ix5HDUע&u,;dQgHDC!v_L^!GGR$.t[<>zG[Oxf KkX;y	a_PK	}]  o  PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Packing.classVml~n/y-/L[k;:e!i6m5q$nu쉠i"&
LR6iH[UM$!&&Iʲ׎]31[>sϹ{? x.?4춰Ga?><~G-<&Ju?bdHazXQIoH2"ɓF-	fA-cR@.̸Ʋyxea-NO(.3+ӹlf]+ӅJ>I/snx1Ȕdtn11eBb[t3H~a15x&XXoC%ac۾kPO[V=25$_5ñv
%plMhk^nCcٹ|\)߯Enk]YN4*Hj]W֝9DRʸG&ǙV6?w6>8)pp}lI8mግIM9S6x
OtL
HIݴ$ؘŬ9IBgm`#mPH~YH2D.K>f|[䕽m9*y-+ah.nǊk8SsZH[w9=md]N>5A:A3wA3]*2"MVA4"/ۢ!a[=E;duj{@H9-sqgjwBK:P{y57SM֣YA_kn	"ؼ|bK{ZuVb=[wֽx"ɏ;9'F*	ý4T/pUshFkY?[SW4P- ?6Bv'}'Vl9~HǃtW+w1*Sr_цӍx3p?yߧ踉\PcT{BYzĈ!.I	-s|JpHwA7v{B{>FIȲHT45tGSO/(l5h'׫Y1d508 i9o%8b~bFO4y&Ca~7
^_ jaMm# R+G^Ԓc09H$2%dMYťAPV(K<T>u50<F9UrRmy?k^y6Qvȇe7|}Q-aVXK>9:bKOI*uu{G-$ßZF.V֒f]ՒcVp\⬊/#eSm ersW|69S	>΢88-|"/6,y3|Bķu>Ϳ
.ⷔUNn1q0KK([в(Uq늨l3VߝXA<#ʂ@/u#=eYAQkKpQ'V+V_
cVC{1^+r|a	>&oKcy^;&MӰKy.˽k16 }y.
<d'yc#,/x/-	>O)^_9.Bˢ^
x'ᓍzVyI%*6ʅVPLhzv'-%T;
PK׾    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecL.classVs%Kfrl[v1"98	qbM`b0&m֫XڕUJ)ڦ0/<Vf´}:C CK{w-g:{;s_ i@	1!srM3rv^fp!"x^97rb#i~,%ii1HcIs9E9.E&El	ȵ V(Q\LS\ZpʶY1
+Y\G%ȕ2\]ʖCN2*Ŭm	 ON+bNH"%2+EZXz$Od;&0W/PВ¹r~*9q
sy(ρܮ^5ull^\JvbX⩃;n;3e,B",N15N2E:C~V@cuOx]'k/eK<3ޓT=k_YG
ed2aL]5K|^y'/D\gWa/ya@/ˈ8iɪLYWܩ!uqUA$t$gr*g8@x$Ő@ZV
D[+l*OE#oVQɟF5Q2~Lǫ1	~qcBΞim^hw.9RK"xC/q=_1%8Ì!F^RݲwSٔvo~{f/._.lx1K޹	Ǻ|2'%|irc<j>,Qc{6^Wxʝ_eD
FMl*{m_6lM8igİ]m

AY'.29
]Llcr-!
*a(8rx"gJ"|dY6Jf|>CLLֵޕ6wH?+vƤ?!5Å͍a>}F~ [*kʱq
!9I$>EhZ8B-撷kZۯ?Qdihw#f~7
K{?)jFֵO>sg;@È
z#|X4KArE(B	{gA%',\;R1r509-'cK7h9N)%Aq:|K7r<	8zU&;ज़#*W$aFc}^
3*F!c'|&wevw		/#_oB*ګ9
nmt$12dݸbnEP
ݡFG|~'z<Q& %SLg4IȱZg}GP>Ė5uGc&y4/2xpgWcK]>GypQ7y^Z?^MZh=
>#D697nmE xڟa]{guUUWz,ű_!r
/W8c|yL
kf^&*$xWHPa_S$I~#,7(J5CXOm" փZ6
iE ||}|5[fYa<)BR~dw%U^IRēN
$˛-+WQPK:1_  S  PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumEngine.classY	x[ŵ$K|%K^b_rqh8Nb8&	IDnl[r@Z
@/+@YKK<e)^s%Y|ļ>;̜ܹ393;A,CnC`w	[+p<(6<`Aqay-~$'ʘ?90/.xچ:PgmR>@u</7a,^xCMv+
;yU|$)oox]`azĞJXiPEbSl$Xp0Gj?>P|K*rwo^bqB]{$]>XWDΈw-bϘ90}j%8#X&43,	f<1-c	O7z)_,mYėm81o}֧	]\0bBўtpPzpgw`EC?132aXdq5F;_0sΖTofuFZ´e7	J>+l?4.N
c,yӖe}Z7*kљX
i9̬ϘsU)oǛ!M=cAo$
c}}Z<
ʰS`D\zcFƲ&Z+knu͗fiW=:}
^ҭ?_\hULpgy8Mm9mIqv[(.Qn
dF3ȚdS`[~dzrJ	>[BخTo?7dEgyխRԬ-JK_߰5~N(J(Yvcp
zֵ2?5²C]Z4aGL\ӝt.טT1$mQHtI-n:
.
Ag	-Es
'p.H[X bBq`!aepw}ko/˱w~;ѧ-Z<Es/#%jH0Vl%J*2I&ZƛLbYyIiY!ͽXLxOѥ5ڠ`
U`HeYC}ZrTFZz` JKͲY>m
tBJItQK"CiB
A
USB>
L:Z=(hBG7&ϣ1)fLRh6P`<h.<:N+	Om<w5+PBX%BnjvRB˨SUL'(\t
7f{f뗭?MGԐ7gg6KukJH\oXѣyR(
GX?kAos3bTBWqjz/g9uTs>*3=1ύ\},O0m<p5OIn-Y
{ӶQ;xѨ l^c1ms?oqqV~bNǙ{02VsGꈳJ#pPL[	ǻ#}Z_!1'RSF`"oEDfWS08/mCp0$`v9CN_ꜯ,v>2|u8FE擾QmSA8Y
Ƿk^x~$/΃V36rD]PD#1R,9ltn1nR:
=~fd=TSiv4r'+Ŵ3;ōtW=)#Uc|͕3.dï>;lZGIhwsך2!+Y'ǿ9gg[f_?:`qѯXІxnKľN᯴*M\~٨=yi$:`E#~ٗ u	_zT9g׎b֌ủ+a_hn?/T
`G+JzK6uzjY^ne܎d)v,v"}:joy
p[wf<+U*sR幩rk</U*/HR兩TTTyqry,3&{
|n)V8,tCy\qR-ԅR[-/՚K`Q^-y\IWROaܑȥg2/(xU^Keq^3'y\?K-ΥTw.u+μTO.BƟ祖R/aC-͍32/,z9H0m}{0a[P12J}ax;;z`'oخa
Qs11"_I _Apܝp<A}3ϽnS*NĦ;i'ܯ{{ҽ2l5l/znVvqΚ\}2Ǹi&5LZ=y!rxWa hۃ):[iIx핪zYN%$%/H͖yhP=%;q,dp:K0UD.LI
 9%G[MٌWξN>v0P)],SYl#Kmkh3\bI_y:4o`o7țq3[n3^6<A<Ζ?b7xwe.|
p)
^*t(#0Ԅ?Pxxځgj<G{Wz/ҋxk<C`
R'4@؇}X-NcL-䈸B6sβӾTwc^Aj_mj6ѾuR;ёk
o$%knoGIuDêifݘ>U&NVզZ8Zs_P'1#=B-Lb,P$jQ4庒ıjo75:e.<ղ751iV#:}
TKjU~rBj2OZmQ].
TWVe¦l\UUuveEgQč0Px>4|'S>J#N&Cf\L\Nv\ENܸ5s;~ xX'g:1/ޠ|@u)$'ՓJ
䣣y6׳uXX*Jdu}tT3vk;t$]+Mҵ=/ҲP=K-Ŷv^f}K
25WlTkE6G .dkwAJ&n.*}PٽnārVԉ\"$ZTyfeyԴbU)w;-t&n[TRJEpR,R_bVTxc.YSJ|n&q:!66n<v)2-Qn#$:wkxZl~rZejǨerHtKg{r-axe+fʁK<QQq-%ȿ`1pP#&Ns1E!Faw;h!+bQ+x:XX͝xOi%DVB+2:ji=EChuS3FKh#->
RD?t5AfhΤ;,zi+=M_|x>&]bRRcD3y2C4nEGfay5؇q*9lhܔt;kG~FηM挡~K.s<}ɑnI,W[UZ#Xs]3>R' ~ 99(3trs+]+NU~
cU.թkzҕb5/oGܗDjAUkaOEkV#u[2$֮28)pBqά6	ZxER9]}F:EZKL6z8ڍ5ۨbYR^^Jhж5hMt-zxF,Ib9
d=8~a\Db;=8n'z8DUE@/12ޥ!OM2ӻjLa*LV0\krf*\?Tvh2Z6,2P11dwa7Jǌ;k2'h$+.ߴI{%`f
feW3gSs>xc̸V(ycPK"!  D*  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric.classRMO@}*[x@6b45$F/B?ۚ`L<QY4
z2ovfޛz pRXeVuXױk@+R
BS!
2wG
Ƿa($kƙx&}l{vx6;wڙ+ב-o;ʊA}X'Qc$ĳ^:1~cʿLˏK\تc.kϟ6
0p]G5a><ZB_#͎aώ\s
Jt5o}aѵ/'UI+duNJhO(+	U4<h"IV^"B!Ys$4Q$jIS"T(pA!I.F
	)ImjSPKr    PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Reduce.classPJ@=cZk1W|uY]Ttc(ud#iPFǸq%
DV3̙9ޙW KraXHP,%{g
IIQcehA)͜1d6
"qSꓢedc.I.ŅDM+ODByG.ITW܅sы<ÚkvUƁrfsqnjD2fME\:l;QKAO}'هF(/M23~ZSQˤ*S&^x0\/޴W'-
*4tE8`jE.[v

Rq3ŎDgIcyҧ
b:siEICPK/}Q  @  PK  D:U            e   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPublicKeyParameters.classRoAE@O5MD16jj}Z93DcC (앶I~73ߟ #;➎b!5Unf`DG!CCF=eשp @G}O`Pb?O000T;*\M*n?q#/΢<#d4>4?2^֩!#!_{d=+'_7nBhذQ-+xȰhc`HI\zM3tUSӉ/O8#0f~)+ǐs7ΧX^O}pVף#OEQQ|KAvj\'1R)fI~+9AuڧeF
naGib/I?5J*F]Vɮ'zgzۤ3=Y=N	5MbNVPK1}  E  PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Ntt.classgXUg3sh*|EQ
0؎-*XiAR,I Qc-bIF1b7Pso'<<gYk>|nR*ܨbXOe
ms1|_GU6q}oR}ys~V
U;KB`6Oy*lf6<rհXUӪZ7H
iz6ͫ͞iUAm<&6ˋit
*%f+j1V
?Ukm]SG^9U+9w6jcj`t3^Y6
h=lgE\>ĩFTc+xUД{VN>UqZ%-oV'
ǵ869m^-mLC9UË8cOVӲ*y6O<(ԪM}ZUm
~\m_/jjh}gm64LÐZy}l$15%&:oK9OhrZFJ*253p]F;mVUrӵVkNZ9eߎYgEN6ܸ#d<1޽ykiLS`Z5v<Ezf<Oܸ}nҪr#ޱ2w;ZP0y;[ٷslթ<6%q6OU;Pڻ\hpcVlnʱ/Op^YHѫx2YbՄ%_×/DHs<#,a~rA;iߊ-ap8wa1saS+%L2i?.'38Zd,F[y1e{$h(s\Uٳ<cĀ}㽵؃;L}ݹI&rv?̭ӭOdO6O8d_Nϧ,ZO[,39TmlHF|gof2uuz6MflclUp~tfj=Q#Z6{`q^aU9=	ۑK'٢*fy{̷~UmFyg(lC9552-#-'P:z7CYZd&LS&$G9[]+%'!	Jn2t>3C"ҟO%37+)UL1$6fFCEgf%ff$%%d礧
7('S?-w`XW1ܬhXmFE7hrl+,=!#5̞8 %]'7'-=YVVBS蚔9(Zg>"1;/)2yS^tYTUe|$R^%TV cB.Yr2\
gC
iwp
]cNG8zQQsT_a8ގր%UZmZF9FJD-N?g/Kb\oɏZj.YEJJ5:UUgo5ՀFj쪉ggojjSqj2]DEK^t?Le_ga.]<K%ʿ$A:ү䢗b2V ?TS_G[E3yZ]P{f6|[2mS^/z)L?:7}UU;UNuPTGUKubrHՕw_U=T7ξ,Qz\շ$#ܕ3Is*3j.PxgϳpQR&bK8G={#qV8lp9niC)	Ig!]NtR$KË,oeI#ʓ#, H_T$ˣ@ EYUJ"QjK&:dUPF-:B#CP:d-%CQC}6: Y
hD1&dD
E6B4M&xD32
h %2bfhE6+d&["AڒXt NEG:љ.]Ɏxndgt'q䫈''MơD뉾d/#{#D/~H&B&52	d2)H#_ 2NyA
@ud$bd&A&#B.!d s1<
#M20'߄p"G-r$޶Bm'*hѻ#zcEhƉ/	0Q4D0Y4SDh2>MTч&ES1C4
3Ehffbc\l|\,B|,-bB,-Rb,-'T>O\V>JrR
_ע/+|+E`[::|'Z
^66,ڄE?`h3~6bhvS?v`h'E?ahWD{_DpP? ~âC8"GEqLtN~IqiI&:38+
Dgp^tDpQtDpYt.e\?pMtEWqCt
7EqKtE7qGtwEqOtEw@tEH EDOEaxJ0Ħ`JYƖG0PKqv
  z  PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$AesSymmetric.classTNA=KnY((*
¶])*_VLV	K ȯea_nM[(&J2b1%hܹs?}BFF?I0.Ç2:0х &JHʈaJF2H&S>LKHJH	VkeP/WKf44ӮUܲV,0Gll~5h,wYOls&o*jq[~<~9ɴ I:ϕfFQ'<ɝKV#pNf`3W;a
=N3@-9_&{iqZ\2ۘ0/iJqGˬW&Ç9 gvaEGsXN55A,`]òXQ00$`]MIG;
Tު桍g\PZz\pF*:UGTmCه<Ue9NrT]elۨQnY6޽1J"C\^skex
nlC^&Է7GF1J@BBD!Nhp%R=G9|uut~S~^* 'UztDO'*_gD_8:0Eq KqTP}ӭ
NN M]1_p+:u(^qH<CUa$j2,#+MPIbh,TGKDLs^|y$ӆ_ƈ
Bl5JvҞxDh PK.O    PK  D:U            f   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPrivateKeyParameters.class{OPƟúv+&AĮ\@AM	&Ji:Z:%~(MP~ ?}Kf/b<=s.?}`	*:pWE't%yN3f9ɘgٺ`Q=LxwTD!Vf,pAÎ#7
3;r݆i#8tv<}Q?9p=J3#' <24U]c:a4
Xj]^ՋڵCčܰP]b[ K^UNt!OU-ߡ؇4zO=<qոѫso3I0%xP,e1n2bEǐF`˵\?.duW5nPS
|~: ?v'ڙOEߏ1Nﴓ7=U>\|v'ړho}vq~FaRA5@|B`(Ǔ=A% OiH_f\ 1kФ
-q34%.򆖋STf?uhcrShe`F#p3X:g$)q4-cn%ŽHOuRĉTw>x;"ϡZ׉M6pE;+>E"X^*2oȪ(ԪZ~FCچPKI7pn  y  PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Poly.classZ|TՕ;{3L` $bÄ)AP(2DdQAGRuնVVl'*Ujkv]ֶZm[=f~*~v
sϽ{tBMnT&in(IzFpn4_.ydEqﰰ@eKKBsOp,W-|U_~< C{X9(G؋xL>}#
Bɖl
l<!'eSfTQL<#ͳB-Οb -s-Ksw=i~ߗ~@(jtVgۺڻZ/%P!ڕYj2:3vuSkKo=3ɭ=]ͶNNe7uLh'1ńH年L0^eYmm9k>' 'wYacmgyvdO4u3i"+({4QtV[Hi45	HoԬYa%}x'Y3oF,˶^[/oEdϴfC#/3?i<loas>cZB5"Q]mًz3::2=GM]w1g;ͬȴ.<
鉲)% #S0	d}l΋X˻D4֮t[}n:}&aHwřiKy4[Sv4z1vVgΓ%ájĆą{aY"y|xt29ijt	_n.ҺQF3,> ^s޾ٞ֬΢2
WYf~OHuمu]8u'Z&t@%d.i͜&("U~]KpF(hQgbN'Hox9VcXsb)^U^R̂n1:keOWjjqsa]~ÿ1bX-*kBob-ވ|\dϝ8;UXÅdzGHbug&vUTO8?d\Ûx0HjǖOBoP"tLow枱`_D/_ox'w^b+FѼu2=pK>Apn$J/LvY>Mb#7ۓi:8'mfz%zP Xv{a_&ӟ񒪎V:(
luMo.9'unq>N6,T?$n*w530_qK8Qt)(䰆i~:0ʥVZ3_/pܲ^:8MNaX
:1eҮHDםnɲtWs_/[_S-oc?Q->r+W|dzͯ.{;#! '	V |iKW,"r]L2I6D$mnQ;m	=% /Fvd {`%KC`씑v{{yVp;R@J1WL(p	Tqܕ򺲲Ŝ>0HRK\_B@Xn9[ȥ[ٜ]TwqC83ƻ;	F1Dm!@ʡ.+qq1}LǪDT:V(ĐdHZn%{k4pN"n4Cs F[UB0UB+%a	/0Stx%=h|P1C>i1g6Ɖ,ldz1J|g΃cRBr_ OsRV%4´BÍf¬T¸maj(EF+aq{bPhⲡ5aL]	s$oax|:{iͼl)ulM-D=Vr<hfÚ7o4ݎU9RMJL0%4/OT8V(?Vڸֈi%̽9x S\U%jԜ]ykaܮEk8+p<v˸;6.ߺЇ۸<6c7.s\ڦ|'1o
$Fx48u{*9>,c_JSvY̓mcVc$aNaK񽄽!7mpLi0%"L%s;x6]0M:22"s4..?u~"7lt5l~)׳_&i?w[X뷲vocߎ?/2dN޳O6ՃXNT_bb&m$V${1jő2xwJުc9@9kLj۶Q%R72=kP?<7iA̾"ۘX?U"j& Lfc
>;O5oܐ-.Ynb«-8IӬg14Ƕ]6X)	,~$ͮt.OV&FNĊ{XN]h_J,?3X>&4?"YdEދo+yaNq^s~657:
ounieBxѽ8vq.TKVr_/5#/&͟<<?.y,/,6OcNg/tpk]!WS߾\`F ݁77nq(T{f(© #GaPWfj>E_Ixp:Ȟ>wpS>&FlK<}wqw+`@I-#~Gp?ǖr!$T g;jptT s	:2وQiΣϰ=4,h!~#69*P=-t_iYf-nЍFE%vk
3}ya6``A\y6>qQmejC*bB>bkomb2:`jc7ĭ</h0lKt}|U&$=3󺫭;}Zܠ.z>&EOYmJih>
,JrH1Ncq/U4/x4NQjh	%D=TGR=;Lӵݜ)i()Cr\כ^1╼ѰBc|2`j> #M{-=  ĭjGN1Fp@XA@-a:Q89^0[Ą[^FlMl8\ <U =] \l>HBSW8q 1.Q}
pt´fPvH|$,h&"4iIKNV<L7i4Ng8fBZF|ZL[ncxΤi}OiΦ*jQB̀͢q#rPyxo0qt8,f 1=H؃=A,b{ۃiq^ܟwseD.`=G0r}o@	F}ءA|7
ӛ\Vh)(ܑn$\ڥS26xX<Ǫą/]"[1<Ǯ79In7tQT1]4!K7-;̳b)
}B!?Qy=&̠64XCq9u&.B<F=xz*e;"*6Tf	i3K/c㿜vzG
9]IEu~{*{ՋNUR~k+
7 s/X^sgsp58ə^4pzg$+P"|nBp{#|RNF.xp
 
=/-^Hm5
kڨ_ht67ˀ2+
cI^%¸Wbatk0Pi2śLEQ
~q=JF$8nF7}N{ɢn=^o_۪S;Dz^'e˽-Fvjw}'P<G=]2zC4Џqrm.*jsQQ3nɲ.iQKK<Zt?UzMM
a8v.Ǟ
4SA̴ CߋbT!2̍:Λy~g+{;0Fc1fb|˓+vWR<4E7=Pt]T:}֖?+/
l0Yn
QЯq\)=N9Hm3RKkATV*ԱJIjjTM< u]]| `l[獩D^LW}?*zPcUa$cOIuvO9Mg/r,k؁#7;'+DV:u.6R>-YLa^[~C7{|ŤOH1|z˓%4NPIV$P)EMV_&5w㱗OZ=
R79tȨnh%zj8V^.LUG8.kCA(/ǭ0 *GV6l0A*n7qKV<xS@ގO{Q\(6ySUyWʤ<ɊTEc3zy[Z0K]k1|SPNe]itLWg`Z%]`ZZۭV*9gTn	<Z0ZJ*3+j>F9<0ca:0&ǹ!c?*f
WufVͺcN?.Kϩ)mMu `,*TjjX6a |\{HGbMJVW_35]WF>o~ jb6/" .?G	cwQ`$BS|7hu#ߠ>5IGOo:OK/^Z9=bAoaAonDuyAL@9LOg/E:	8$56י$!٭+Ω+S:0޿<t.lN áLdON C.=uA{r˂:-yz[^af';مްe=Wh1o;W{Rc]?p>;1T`nT_bu֪]H}Wpn_woԃThzV4Yiz֪}ԭAW'I{Գ6%򛣎$|a]	32@\ -B
I+BB?_t
U}1a_uU<~Ut{jV6+7B}+?s.")PRBjEnz?^d*A44#[*=pfizsW=ykNΩOp4N%V:0#}'eVKeʠvJHcBh4*1ǳCc1?TwǵAZKi3
PKD  2  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Rounding.classT]Of~؎IpбDZH1e
:]^6ZgpQ!u7Xo֪?b?a?`v$i<>sΛw~pE+ `0ǀ#
'%"ư CY:~Aa7=fHT׾kWFIh\z e˹a6V"-]0oѣqq}-TNX>it]l?0f{<t}-ZNNUn˭QȽ#g-2r]1HuzЈAA4ެ4zqN:0x.Qxn}j׮pX2&V#jmt*[m\P鈌љ?.]"`ip ) qFO iu}RGռ兂?{H]@GvȨkp)h#
Г"krhCWg(Uzr)P$uK9ҏ +=55]jV)F2F)2=Qr}*Ct7FSjm:)5QU_cadpI%K VRˢ	ZJXϐS'?W0t(Gg8
#;#-)/_$P²H)<E4%>EG@K)QɟB s!NR[aUrXF+eZoCȝM:1'`wȷ|i~)dd&
E4=`PK2A><    PK
    D:U            4   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/FastFourierTransform.classVp\UN{7m%һMiRRKjS´4mE166Mͦ$@ZARXh,
㠨(:")f3w2<?s;%(V&%X%@)5FVp-ȃ[Lm*JUyBC]lW)١Rp@R1?xH_"JAu848\77iʗC;V>jʗچ)Ptw0"T'EهMѳ;͚R;m@Q P.W36ty#bh(4v
Fsd75抣^7ݺuW=/C!\	'EXB-&6	7pLlyrcM-fl3=M`Tg3.n4vJU-4	.'s{l_n/[>
QO6:T਀[㝺7CRZq9K
}L&4Z΄,<޳4ӟ6T(BdFlB&
cb	 B"jdXŸFbVFƇ3lߏL-[׻m0`L]	$4G!z$ttd"1	CD숤N`#dOcq+N1kNOr'nǟbM'XꙈ.I#\Lr5'[HKlUD@ڵNAZ0&yhg<DiϪϊL{N?!;T""ί̐	W tJ:e";yIx)<Fe5DcȦ_B;&??F"VۄH1r`jK׸:*>3z>q)c2Ï)TQBf(hZWZ͉	ZF#12bKvn\#|qFBMm,dX5(1S)!qJ-ه<3vxf㉓TCE/=pkbV:7H*QS"}Jł\2WRrEVdxb.rj)&_7ʹ5uI1%/D#e]7}eJRO˒L~	AzR8[]=e]gҳI-]+R݌Zsli<k/+V|s
"sLτsX[q=v3m{!ENnWс?udV䅍b)zj(&pY8,Qd"{pDN&Ȉx wO^^Auoշ.ZR,2Xkzư6c03l_R]ү`@6zSI[ۨ5L2a;l"2;)c;eǲ
blg<fed;6!C5܊RX脴A@KN/ai(3N},*<f[Ǳuq,>P#y|Ɨ4_3/a#)T]B6osSQᧆ8wPՠ>
KMmK9R'I&o
sP~"Qc
Vۜmz'Z}tiO}9cqYtquKsTVk?5X5vZޕQeǳkLS A)W^L*,T'I3.`T6Ȧ~ggmvP^ᐋ˓ިUIc~DP1'װMoc{9bk}bkreJCxmt0&F%t32s`:ճgylz(KUV=MΚp$zS&s2dR~M&ƍx;p
.{XG?~pG9ÏYO\O'$r=R~9/pڟoOoB"?@|^7ß~E_Gxk$^g?eKÿyG7ެZI<Uu#v"tSks7O!ȉky7Har
6Na5.Ȕ?9Kk9҃|}(jeǬXT4%2:,R,z$Bccx$ۚMY	첍B:ݝ	v@ˬaZafXs6׸Lv4`~*9i[~$E"QQDX^'^L,+qϽmruPKG'g  !  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCKeccakRandomGenerator.classX}P\u} {jF>}쵐`ɑX!d`>d+·ӨHqDVZKN7mtڦ3nIiX]毂8νs9_k At ;0l"p̏\^"j ƜN)rZG
?7J$3.RKSJ=ȣ|?q <
[zӥɁKBqrq%ŧPN=V)9UZ=X\ҜS%7>,@h{fx8L:;3-ٻM F3g35/OzUlhlfzk8ZupXfٙٙ!>=l&s|,;'efhe=d'Fh厱l#Cqjt5Ob`&=dQTɉZ~*3udΎMdZpf
MOL
qU{e6eci\
>S.I5Sđ͙lOLmu-&LfdIp]th`˺;;:p{xqwUJlSǶܽph,G
wn*-E쨽u|<3_75:{$xl83Yض05i4Ldw3i5tvNҝ Iv%	'jʀV4i8) vD9į.ǽX9(N0)ǰ"Qrbjb3{a{x*793aYZrÙaf)jǒr`fz_Zevfl^751uBI1{hࡰS*)*.gB\`]~O)rL^t/zxD.A+.]
o\_J̉TQ0V7J/\2xO8?o{ȋWV]Տ\q;XMԣ-،U؆6Fiz+ѫJ#7<~v9e=0XۢQk*<x] u#x@Ӿ6")R:9b_jDF$U]A1Mz;0/}eЫWU}q1dn;e؎NN川
$L*,N2SkerۉZf,s[f4Zi;MYe;͖Ym;-Yc;em2ؖYk;vDw\~VhyYy;	iʼeS^睤ɪes^yGdM^%/;N,Ἤּ;}2ds;keQB/{zJ
OI&
-rm_V:VZtN+y*V)#EdbM]vz!}ŪdTlVYڊfSaDȘb1٢XPm;RW^**]7̏<4Ia3#*mIKf̖Iq:G^̾2js$aIATI &;dO*I-}79fFe.ˑtv#'>]tr$vdHjjd2GRG$f]d%Al198A@6919A29\k\%Nm4B`m
esQ`PtͩdBs*We1%R*\SE5*Y𜪂vQŜJxXVrN6LTڨk-".֢29UL1Y9U7E9U"	lQ7&WZk.jq5Ωl.RqR@T%$vKE5[vkNvrQ|NUq}Nlŕt_FM>5,])HY^HY>Y"#JV}"Ҁe-i(i.FMS6VfjBZ#[IC2NRڤtJ-˞ ϫabȃx/8-xgT
oB}{H?n={D3]I^	N/vb/!cHI0,ƈGF<iOy/
@V	]LA.fO0+QyqSqO'<	.Þqyrlixy=/0yzOzł=<湊56AZ
jJ։mm'3xVKS~G;'i9|F;j/sKv/hY=>~_szނ/xA_/C}Y)|U5,".߸W'w;xSo?ş?ǟ[ۆaTF
҈ௌzьq|^6<7)|ꇍUd/,\"MvGZor^7i3b3V'1OPg,eWw]!B7
aB.:cPw8W6%\s7~ԝ}0ϮO/\|mjH-?{{?Wgv@?/<<~go~Ħ'SgrTq!}ݝ!%3]J
X+:QF)hNQsB~ʦC{oF><,ϾNG.VDnV>-un0ka]b8Xʂ'}F_	.)e2籧Ғma=v+Ѱ~ͯ=n"\(Χxq)0?P_?.5|LyxypcJ,qa;_$!Xf

v^CX,VpFKۇ&fQQ8F!ZS}~?{xڬXĈ)%{+Suu*EXzV8zWk}XC[uD/X&,D;V}`4 nb	=vO=^30B3zJ?̝E8"Fߵ	,u5/nGK@FуUH>l &ֹYCB(dYdߴ'ݣT喗(?nD􈾴mqsm1gonY	[$?v&vᝪ5Ft'dё7u\~lPnI
\pkjmԠ?ԠIEFj2*o#ckIv2	dzȖKƮa-~6+D*p,,>n[+Y*$}݌PK
N
  |  PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/GFCalculator.classtUe#%!s(
I^"`A	J *i`5cc.#v`A@PA{oXQA>Ug͚\+M}|mݳvY)$W2%Cĥ#7wKtIJթclhMT$&9?=9&U1i9j\eؒ:6^Gγͩo_eUF˚hYý툑j+k˒esʲĥkt6ْ%ͳ%ZĤ_<XW1!Y[U8yrǗ՗ͪJgKwv4
kKgVUu#LJ6`dbR]CMu]U!$埛ctiU oyNxqk$/pxdoLN&?]SI84+ϋ^5篒U[+F
1I6)::r1~v5i5/ǦPq688T?5'lIp?ʂ?{~Ir:JXҔԒԴҴxIifUKJ3SI!ȸə@v@f,M"|d<
09Ȗ:i&WNE1hȽL>6yhgr	><Fk;dGg ;<t2=]tu@7c=L=u0D6ycrE5gP`(Ԯ:9B` .,~9X{!x&Kz Z<yAXa&o,l 2pGMFh!r<d=0JMcLGjKXy!&M>1L0YLԓL^&)&{Rw&oLn4q&)Lf
pdy@J OÑ& 'id"g~ȓ$d6`C@V#& MNюzlӑIF/9&[&W Ay:9s4ǀMg d\`T	&gZ@M瘬!Yy&,'/b
ߵ3=i[bC\KMn'/ӣM!"=:Xlry&n5z qי|@^o"ym |D.3yd#yV7l&omDnC;MV+4.ɻM&D#e>ur$WĽx}:_ˉL6kp9ubL ɇXb9Q%m%ģ:VL'Ý"7kآ9O<C:x)7ɧqgt,M&U&Rb;8#^4Id|d
N|w|M%^:xk|[3wv#QXtZL|L%?6SoL~&/s{,sKmNн/N!v▓ķ&?Rx5إCWˊܭG{<wŌKVÞ1SA|҃4jpk07hp35H%eїáypF6OF[	C%ruqh+_`%s/"JpG X;!m,S,<_;
BW7E0jBOHppAS>hAJ%xKpKC 90io485HIRsCfR."2-8[]AA_9:x?G`AlTP7Ƹ9*=#
"DHьڡ.
P&&2ɇE:E3MHO368> ;	^f8<h"\hpk䰂Ov,S๴`h	>V AOm5&un9%:dg|Ԕ
J
3&Y 3;+̷GI8?`:%XM,d3Ê{Ǝa_ƺA
#.pY4/ZD%xWzфA#frtx=du
.$/
Yvc$Ûz\[a	G6ƮA˽#wF}E$"]dt
_F*kXّ
e.&҂u;l|(t
}#<&E#eoB릨$<9[ؤ0"?P?	LʰS	٨lS9TAPo^eE0`h9/G-<&wL<^a݀7;"
8x'Իﱇ]H'
<Q+>$Ipڧ?nÀA_5B!:;Mo7uW[E&]1"9쟩\^w	_YWKϐ8ퟬPK!7:ɘ	    PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCKeyParameters.classJ@IĦiRą&Q+EQ.KP#ͥD[)(Ob9;sf
@
2jhXV $pÔbxqل;w|Q$YRxzٿ(<"= 0a;Zr? yz\\ބ*1ZnU5b.عs]*Vuԡ0c	?LqZkwG2	Tn@D%
ʶ(o/`3J5AIyM3p<#_ =|#JUmUgPKfhK#    PK  D:U            E   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/ReedSolomon.classy|\wubI3FnKv֒Hjk%I;I		RҰ}I$
ԡ@X۔B	/[([R(`wϽw%>H}~ys=={]VUzBBoY?G"hWx7.pcM˴}o^fe>Cs<'{o[[x/z8s@goܾTWpǏ;p,7\|#וG<1BkJ9ޖ+^K;׸>r[/{Yg73'zu`[xK֏^{'gn<rkOPzz{rnono;vEw?<<uM|CΫ<@̫Ύx1/.V"j[#޳bޅE1bocw]z#o<xkw]]x݉]W,^<pO>v<uxc3=;B[m1R`c^wn̫c^!o%:o[Lkv4x9pW>xv}LxM.8q5="t'2vrG_yÇ.Vk3-3=5o]{5cjO;̍O-~uC9#r ?hxL9^Ĩ9a?Lw}wJ9~cC].AY~d	HiXϢٓ ȕGhtرɋyQ#WZ#_qqM&hf6"[?&>Z8TP^w֦TQ({w0{(Yt輪dCzs)Kƒywy5Ud󤗛M˹VE1~m'~UMU:_zyU&-=鎧*z˷#:#ZJwLqwT	w$^W (Zcuܿ/u u}R^~/V/6s'۱//╻ou_ܫwNomnըvуw>T$0uPTt8Tph%sp ;pݡ:|Ɉ"CW%r<b\U\ݿWX+WtҋպRŽowUq͛Rd.-輪x2	O^GCUM< N_yB_[@U^ZݠΐٞqPz+K]NxލތboJo{zeN
n'~d!u!nؗg~/4q_mwKoJ&sjM%5's/HAoK2d^!Olpu޻G1?[z3g_ӳ=o!BG]ެ޲ە55˼k+ܗ={޻kqw뽟w{m>
[~땜uʋ>r>:!9+rӛFwLӗ|'gJRTAǦTaU~A)}SU&Î[SdaWIŜ$E'kU'/t,+vH}W-b?o$9YF/ZRv)%y'$7[	[ou{^ޫQ}hE}$TIm^[$K=98V}'tJ_$sr;܁گp%p%ۓ%,RCzǶr'wf	]D%nw^
x/sgޔrǏW:&Wz^bޫ_|xo>_=9{wNwoNrޗ3.x/9gW99?r\Lkqi5'g(^ֺ7Oy9O:}ӧBK|M8Iy⫍q]ԼCǂ}ow仨YAh:oM->n?q|}Ͻ~"rHkq[g#v}IKq7NN:E{N??};0;#u{	gZm^YPrSr+)5995mǇy[-A)ݔ*ؔ*tuEdy٠mpq4&-6'c7K&;oޟva{T1h*r['#[妊\R *M6ܲxsb{q-|W?uwK[oAܷ+ptm}炁<ѧѷ'Ge?wߙ-tEA_6Nr:|.4NN+9aޟx?pCޏ\>';Q'&?ޯ:'}/g_95ryrvxO个1g҅jY.{y"ʜܜ<^]q|%	ܜq7^씗µƋ?A{),
Ec?Oy9}&;Ǹ=v$c^oKFyhz=?OGh|,wou{-p	KQKxKx{s%^Kr	CKYzLx?u_߻/	UKe{ku<^k6^m	K]{Roqg9	-KCɽ6צZ9^[Wք-}}i?Ͻv$s_'O3kCĎ?#jc,긊t@1ߢ#'%|2}>O|ЉN,Šs<1xN{t:	O
6йIx<_6xW:		'Ogr
<F>DlF>
Q/dǊ8R#l{xGĞϝV;ృNxsyL< <j %= Tm %G?Ј!~v
ςeB @:}MU"p$*TaED|H(D.f7-ln\ۚKRaԮ/T|=
F	0*Fv5	ER
1S ^ X 6tQHя*NStx@|%_1RFP"N>Jg[gJ_5J#T
. N@::ҽ64FFcGvEׄѓ0OD#AZAt7DZW\gBQ!dp(B+D&_.QB@$E0$F`CBcH	ѡDOjgG APw=$NHPJGҭR<"MO+^EvE7($*D9ϔ؊@q(.$.]tN`
ҋDnҵ
ۀ

/	&âRD_j0WBPi]fC)^"*h+~"bҏalK0z+DF

 ֶFsHҫ`[IW<A^@QT(-)abGpUH*hDB$)AJ!eB$)	p0N0
jAiId2BԀC?Ai;T1 Ґd9A(ooV77Z
ωHV*UJA
J;I1cRL("	JEc%qgp2ܽ"ǩB
"Ԩtzd̨%eJMR""9RL=h-h˵+;I``*a:,}po89Eۃpb+"DO[*[@ڌla҄@)|2&)t #k`R= 5⑹V6YGxQ[-8G xBnЬk Z6i~b=cGkҏQopƥK =!^HsŤt>DnJJ2`.>Eܯ_LiPTZLZA0j`M_b^>[2x -ApW=,p#pn88}^e85A00]-L NEIt")!uUH}[|P*iJ!Mb(	6OR%&ljJ#Bm
:rz09[~67j/Q@O8 S,OL
>>n0Y0˼"sT*@EǡCt)1g	7Bꉸ'qVJa7ңc_v;d٢9u iπRPz/(JJM
;;a3vHRRt%հidE$@DXbqx3Wc	}qi>(V)=1Y6t;(JUlQ_YUޤR@Z,3j%|`C;G|v>}|
IdAhUãѽB:,⹆[B_@*3$Qr-UR,UYFKj,X΅> cK5j&-R-ZX]Kuv[*c^̡Fo02<0=<8{bt(#!}!t+-P	bKi^.>.WїD!SxR+
.kQvH/aAh T)^?$΅@P<7BF !@@_@@I l{EBFUly
dV}M}K}lZjlu,PAD4@hbf-ТZ@hg؞k %|0Eca z=B]&#FBHVKo[K:$",+eҗ$NT?.		_
_PJB:Q
z43hB£umX||'l
ghE>bmFZX4+BEUK6ӧ5In^0:OFRl@,
ެ֪6,e~A4Mү@bNyGa}N?>d<
$~oj0v*n~$A8jfTAMHN	蔢5e$\L*|k%lDiGhuW d4v9h9h]>Dw6
ˠQ 2[v6HC.1&5;$V%bN)SC
C*˵JN1Zw,LIhEPjEhE =`D:6>G?3A: 0.GNӠ`>0Em	GCOSk^ӧH D
HD:( %kU)FjjZkk{>L:W }:GtҨoR5+Ao/ʴ=ޣ`mn|nu.4n2"P zB\HUDS\0~OR*NRsBY´JUbN!)Ƞa$.U5)mZ26C*^e4e@LR;!=ꔠUP}RC ">"O
7ҝl@5 A*vLLcd:[0YdawX:lg	hK²(m	mnbDJ<.:4Q ,Ti^$!Œ>ц2>PT\$r1BTUjWVf^'$Aso)e.P#Um2[1*'>"QZPT$T{Fۗ2L+cϒRrV̩BUQdy`m>Wӧ#~
p* p uh-^[m>N1i{h{D^zVmP/ fAaKH=*>>_Tl˄rq.T\P &.jWDgpXXr?rz@TzBN#Naíǩpt50nST(e_`Q!nV$IrF"HQt
o(HMbaӳ!}ZQ" :F
i#盛d/BOUv٦iAuuZnJ <B}WLOd[Q )(P$)V"j+}ZB+pq%LGEB NҧھNsF<?~6v6mg[֭~8܀K>N$3qi@] Pwq0i;05OZ(+nOg{m&~d2Jː$Y*XXZKհT-K]6-UR,Hhh;Bmph
OޖxG7Gz~d=C	y(TKq%_/<#OQIM8pjvƟcκ1t\*}궤\b++O?b
I{Ĺd3T|.&j~A#̡;_i3ne'=T*!;'Sz|g7gO??ȿVtajݪzz6oÀRoN4uF{D5$R>t/3v\lL<4hl%{( }S+5֧\2Կ1'uB0[
؃peKܯg!2ЧDhASצWԧJ-Bz!$Tns(6H|;!z#gH9bbz!&pp~!8pْ#?V)g70жŝ(hFzAgӋ`3J(oP=(?瀲T10AL+[)S7n
¶]n	a&,Lkz)O9*1տ14\ |öT7K{w7~7SNyr5a7
8}Ja{7,~,^ e[[h{
LNW_$Z$O񝢲E[8-dyU027jcNa\I!zȲC˳sR>RT7O?g|L ?	D䟋ȖT5RiS"ttpP/@!hl;,? GCxH_'ŎwsGm^/$&8_83k(X_
W@g{O4ؿ1~y@SVv[)K94a1J1R4#r'D>&wdhٟ~o|msSD7i> _g V+
c50]bKAic1Ì2PN@7UP
ڜBو٧L'kj|7f!zmS5=|@3@>ii3LSҦg]JȰC`i>0e^HfHSdU{-R=,w;`2oOw@z%G7
ą@1:ŴЃ5#vw|9 'BBY9VyV
:1:?.̟W}:W
Nַ$蒃w+za⤗Ooʸ1`t`(Xu\.,Gr~?\Uqot=-	.KI$Ijrʊ
&U)y ߶uLxgB +dKZȔZmCq9AS,۸[iڅZvBA l	Qʓ/si<y}c<L'P5HIwJ]vQK+Q:׍rBT-lzNji/#Ϝ'XU,*sYR.+ϐ񝯚
تibƯ7Ư#Θ
jLͱ=h.Aê:FȮGތ`R	In/{'Lۍ<e^Lu9kdi՞%i2"Q|Jex֬bgp
V&۩iʡa,~T:ctv+ܣmleJ>sJpVE^<v6r^ʂʃ4i"ʒ
e

s!
>Elx~}cxaxlҫ6rPՙ#?]JIvGwyP
ٮM(9حT`Q=i?O38lyxv{W/iy"$[2
۬Yf]UR2*.`}㺀.q'u!`)wÂqD0
1`	[0q
qgq/09`1
˂1#+qt$sg㒇3t8Edw]#rQtL=}N{IqZ8#;'9޼nK %y2n| v?s9`cjM))9iÌ	qm2C0LJtymɃA[a>:s<@?%es /R~Ba-^T7S9שXcL@fw" ԍo7F#ppOPݣ͟"fYՕ{e9v}_PٗڋJe8#^ӫo7F>fCN]H0:"jB1pmF&)=

fPY^	>|m^ ("V-22u߾>Mh}㚢3wMf@0`)w00 (0	q`8)qg`qq`LE$ceN5ܹ	7:WKC̃qv
H"F1w\R<SIgb40\zO̜<m^2@Œy>G
vZyEs0[߸,}F#y~H$2b}CNc,oX>="q1톱{SLESxb{F6+;+݇y%j]T,adˊLDa{Q7.s;󗹙uC7jCF]hQ}cqz[G;O=fT^x9-		kZrH.]ia#zk&\\Ʒq(dؤAN	EwָÈbtscdpF =H)wݘ1jm{}
9yH O-KreΪe$
2pc_sՉW'3Ԁd!کv԰R,5R,5Rsa-5RSZjZKͰԬRXjNKͳԂJkEZbeʰ_x5C[jUK\o\sy4rx;1'6o,+A2FipJ	N)CWÜ1$YsD^1c'\kE%Ζ-Щ̩W4|wޥI7.&=4Z`X`gdj1-0ZZ`JLke)lXd%--5oC߆C[e7.=ʚP
tRY5,AG%(cX͸r	
j(8̐?Ϊǔr)ݝGĴLlQ5I2WF_&+(*)W o\|& F~,]C?:FhXEӈbgT3tx\Q9A[,ڰ͜ToJg+E?<rxN'"ΜVsY[&Y`_%^+7pN+M,U A8$1`#8
c8!
`)`38+18`0qQ0.20f1k_
0
5#Wno\}&F;$,!Ux^<ɏiW9`hC:	:LofYd05!JH44Y,֗0dy}/rW%k"\qY,F1vdЊ!)1o1cH߸7u`	1O:gq`nfNE<@,**dĒн8Fۚu~}+":)
^,G42UxL:k&_&͓"󔚎ƌƥ秳dӜ1O/|i"
Dz`>)0"Wkֹ7H
7
HCHr8<*R2OưqDfmG8$Z<%M3#S4h
˴v^R",(K	΀3ഫQ{%o+!}f`̱Lw 0c8,G(0	q` `'``M8/cZ0.0.ƌ`}`\qMo3;A;A,PTjpfs0?vHetnTv=Gn'H!ȶ{
wFWffdqQҺ4|[D8㷬2l%d¶ʴK8=.g@fH 2$/	diڶ}4Vөqlğ&)464f |y0
4/-2_YR*3Y3pw;kO28>1	̸6)`z=)NVxΠnʑsd&s:s6/.dqElD.]%EDI7N߸;g@
=Hkd88;"mUar[SIBS48,*9z^º*8Lf,5a1"V#'tߕm.m6f{:R,5RZjLKKsE[jJKMKj`rl;ielJԢZR,a)߾l-ւɬoMn2F(d6(dİDy(>:oɟ`"jOR"NVP'*HH%tTұ%5̠GفzssUfr7nsnCdf6@
;(KR4d7`̈Qf%Ǩ		Ni Oci4IbnV09''I^Ѧ	EN.L\V(W\?S{Wq y	9	wn720u\>qjS³5)c*VϓVlHJ2U,I@9vrP)RvUM}UC\+>dQHvA`7[0hV"Io%oSJ.P ],,z0>XS"H	!?T42cl8;9,;gȌi
iV%3C)9Nd'~)X%2/YP+-JTL,#HZ
5Hư07Zr4c98"7Bi[ʂ"SjWL2'谭-!J2-dr-PZJTk-P*c:-P8&}A@3hV-Цڵ@h:@t@ж@cZ`PX`X(iq-0H-0,2,i-X`YdX k`Xkn7DP5tz40_yݝ#_dXni!NT$!Cei;a11J2t$H[%yRjSJZ*VdfuUD';atQJfE^xumA|mΕY_nMУ4*0
~eB8(`L0`18i$0N	i`Y`nDf0`\i`\%m$+*hA;1G =bir)`TsIcbl)CĸD.W
e$U.FV(2̤V2*3oSS/
:CEBXIk1cXUxG2NN-3ao^ZMA~s;u˘GpQ11x\4!oǱ
7SߴR,y3nHf:'S4[{/a|J)2xo`Mt'^Oa?-[!lMhs	X3Ceɬ2	:S	u"L&5tQB{P)eR[)XKC'{OϋA%Cn/
N#m&fEժ6<?+{d.	nЎG)E7@
q]do^	lF	!!z`G]3
ifT7j1+{8d߼3ilQ]VXVYWt\DzXD#RS`c5)f66b<Eg.fQ?nG	\+V9+FxG_#koʖTRvUbUԥՄY07{(dGU/c2	O#iRA,YkB6$yp̚VvY&vک=ShǄlPD	Efu0v9h$2P+ϊ2Ysp3-\Dw8/Le$a!fBW;4׬<pf3܀
!d6$%"fjh8Q	#tK$쥘@.WȽ*1*|Հ\7.3ںR
8VtIi-xm+&nl?\t]DN7ly rLLa*!!-ц%#QqK'@3(f3pqd;/^
Ev4cY)IFc4+Ϫt(t>{GFZ;|;
,$fhD0H= iFDT9gJHiiCJT!ūUj(ԋ:4cQf$i4-$p<lWB!
'L:v)d%=JG^yI>v-%'# AqH0d8#8
cQ` p`)8
38`qӂqQ0.	e`<"Wty|-u7cq[L>F`}BGhs,'ٛҧݘcE7eD\m
B#ҼE5_3fpZI0ѡ=l 4aVhNiU&mlWKTu;1.)I7Vniuz{iCISXY߀aPv2p̺j jAq%C4):NYM#3f1`bQZg
"ieYnc+"VDw#R[@]m"t4:e"ѱ1*- "&{}J>EXd8=e$J[vW`EU
oke-rLQ^t
bwo]eW-HO&nG;TYZ~
{D}2#TRl_@F1=wE(<&Mm9L;tr2%s"iKKr	%h!$J4ණ8Q$cŞ}TaI󑡟:NCBr">wLYv1,3]	;]U*k($'	
AZ)"
":ϕq6f';̏F&rf8"jAvdV:vn]aαaaP9 3~Α
cear!FɳD#;r<$Lqr؝)YNdْdb=,IR$5*3bM3_VuƵq#DOf'CFia-"6*bd՟-d?%*J20Kj4*VTIu5q;3VpF:NEà#bjÝ?V':q.[#d^'N=`DΕ}CHSK&h d9~-}%34Yf&e"u^ipYE-`&eF4e[Yg~DOB ѽF㐅@OYDLŰb,/ECW**Z'rR,UR,UR,受Tg)
uh-ըT3KTjcv`):YTKh[WKigRC,O0K(KԸ`)
uhI-5KͲT0RRs,5R,fEZbe-al-l\hu6y+̧L1(eEҺbS0QF1PSJ"^Fғxm%Gzs
MDj+){
cS8a@5low+׆WH?Ost݊pd#_J疪(נwCdyyD(M1}\*3Zxo|Z띕"%`N?K,VixQ޺i.L.,.LWi˭:(cOOLSc(ҵ@F:VE8D}(叒azTSh0+'IW®*iQ7V4
Jf:u8h=t9*4ܔwĝvcݮ,
HbK>i|amWc1pJUv`tP0.CefÊm|r}\9!RC̂Įi
,],"Yv:$}.X	ʤuY|[[7KDS8ף8=VsƢqXT!PB(]Du#2kdS5!/!KX`'Ixѝ
%*ʙjQ@rX/a2"70n\kTD\5Soڈ6y2");%
w@[eU6MG{azv<%D T7D`$duԨj19и"jBNuW tp)2+yb
4,^3,]d2V݊:e(x}CM OA}b~D
M,Han2S
dSJ%deKbBhU)TTs5Zu2CN
ڸFĥ͠"!lk#e
dyV'%uS%a=
D#;E*bh$ҹ`L6k'pbv'N+fdHEp2A͋}JEb	_wdl
3Ͳ9ΐxS8tUA	(d1otH	Fl".6g,gr/Y$TH*%UPȂLkd
:z#;a"Q}&@o7ZDVʵ6};Ar`NW
wzDr%Qc>0E#+q{8"G`	}ʽ0_2qF0cv`3qӂq20f1kb
0
5c\\&Vhك	r!52"kҬ Ez۟)t%z4I.zޮjޮ۵z۟'+5vf9r!MzYoB{vgNzv۩\8coY!#ƼZrዽ={sۓoOޞ=z{Aosኽz;}*){{{ъ*eFbSI|sRa߁.pb|L0[/AvÇYZzT[\>WA?rDڡVNYBZ'-F፷@[1Mo5gYlT+N;v*%"ƕGYjn̠ҧ/|p8c!,/;<fmFUe)PLnϲ~Z6C;H->y<-`هYZ$\Vݐ!:`eR\fAZj5S7ܘ}oğ?keh9tOY,/oKfzrG(|@lYy2Nr`fB'o3-6MTgͤC-i6Avrp~|Qa(BOR$Q>HKjcrHQΏyDM@ψAΎnXT*xˬxޔҜ9+8)* vyIL5mce˪
5eEZz	ztD.Q賢7E!qL˫!1C*dȬNoX&_B<J)?+s-+ġψCVKԒeCܚUnaI(T4pCF՘1REխ8|2f2OL\K=v"C\vw~R@4NP2OThI1pJ	2#Uͼ$g	h'= $ΠVT^3d`[;L.AàZqMt@챘2)}NI~:HKPRar
Q/x% UmJ1KCSUn>MQc>琧fuKffihK&f7ͳz>q&xz q;ÂqG,K8gY
i8#gcxc1qÇYyeƬ+
kQ#O/?#?/<JgY*2J(YԬE"d<(}ԆnB(Yr~r<jMZァxcfVm
F4,ei&h;dXciVM?O9fT}L Kj&*\w(&<2c>,nϐ\@ԘL{N<ⶠc,K%e& 4hczDdͥ.|Tgocys8ƙ9"	LT'q
D{?R^pcGYJ5\FcƬ:3뢏9U#lb+e,?,Y4gzMϲTmث
eieCxPx'2a87a0s,L#d2iF>19h^<%X"Y03$)@~4lJ7$!xDxQ:P1V1ep2Q*,gYgM4Vx<RV5Azj9f~=0o`&9<xUw'>NQu*n9ȆUW(Gci3 z@|(t5(S,	Nd'6>),zf(g9@fyAY>FO	1F'·@kVqg	698˔#CɌbTŀYo=Ȭ(eΤq+P-?R]֨U@qF5Fs:& ي^i7P`ffv d'>,X;s#_7t7BzPept8*!/ڎAq	ӄv7߿Nz?[ό<s/Oj1Ǟw!,Ӫh
ϲX@P@*-UgMhs!H]B>ُr4KsH}/G ybTj|4ZQ(A؎qO#%Gu:GJ[&,b%cuN^H|dULBY{oٱ`Mci~=F3/Zu$r{a햄稘I$gp4?:,T{e͎0_0ttDF3|YRUJl)-UwIxnE}"$Qtxa3.{LsS9w&'ܝ<ҍW	W0lƛZх	#	IXDkf8:}Xk9F[-i=rXPcY&"N92.q[d#Ni9ճ 'Q7.#?eKx!c
B\Eše]r4^PK\K"4cbln3-stJF>Za\	<G:'[tΎKd$:$sE*by.ѱ&oΪ?O}
osm.GnˬWXԞ	䜚P}&w"]*2Dsr9Yls8p߱e^.rK%r2s./b;nW6"Q!cU1eSc6[8$RڕImkXBFQ)Ok
^^Ku+NqW]v6sj֠*h"i`{U4]vvyolпsX_!W@Hq\y)%kNٲ>'7vhd$>O+gv7ud.`iLsIz0D||N+:'J%w]Ių]( .!)y,yҺj^AU;(cɗQ\.c+I"SY#YʰScT閜Pt*9{2odt*nٔLq//yз[el	 އXr*tT>̒1g~8fj
si}Wc}6|o}C67H[ޛdo˅
"_|}
7Hݎ"D;[}o}c}2>+G*' އo3yߥ}}G>l?gSBq_~Jw.gi<0G_Y^޲o@wo~\`Me|{oɷdї<+_% 1@>;pJEN疷LI_gɾ_oƷ?Xn6PF#d~D[q˟%]~Y/}+*j?ݏ*wrqr~ʽ<{͉8L~{y51/ҕ^{^PKbN  <  PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/ReedMuller$Codeword.classPJP=&M&XpY]P*n\q)1Io%B?fӭw3gp=:>4
6
zUS	8'*r,ɒ=<z h<2u
y)gHT
_i*2x	laa0KryEMU*bl*]k	ڵY&,
RW
 [7RD)tO?	̖gh<>@e㹮[[m3n0`r\Cl3+=0 PK,"    PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCParameters.class[pUǿmdnsRZhi5҆[˽BR,:38^utuP0OG_Q.C9wv|﵏h
PSay%rqYac9`Q2@u4G'uJUҭПN*GN1kQG9ghF\>dt!c&T!FTxρ|]ӛܩ=Q"nF,j:8gTxOgSֲhUd#,FKiT5ag
	\Ǎy,2Όاd!ӓ̄F'O4IY;(sY9}{Gz\v'236Iؽklߡ{ϦY츟89Mj$t/cQR
a̙q;01'eAjp:鰝NQxjĖwv|8:jYӻ.??QԨṛ~oSw[r*{z2hώ/`
~V+sd-HQhn&w=Z]<ߠ4brZaJ
btttYVKB7g2h#a.cxx-ђc=QuNbk'/=5i'B%RQ+S#o w#gVLy	*owrUwzծG\7.Wcﾫ߃"Z
}ZY*iVG*"UZEXHUYU$eLHe@VcM-[$2TcFjToj6=f5}ǹYm5WIIm%@~lGqQe9
ҁbDP
(\~ 1Oh;Hp
^e]ʷx`JX.[}eC}}h;ˆꥡ{ˆKC*(
A]6SzDm\hUiqEnh^@;OV	gJ'Dr'/odhC(˽[KBs	Z:'Kh+J@:@Uh%\'S0UKj-Nb08'Zn"{D,^%X+
OX\3'%HV%V:IHAw`ADj:SKz@d
b/w%JH@$݂5K*{bW+-+.bvNuѦ(;A)k;c6(sRa.R!y1Eԡ|á]~p0fLI9y5{So̩8Yǘ~v8fNI/0JS4C[Vz^lGUl$`.6)~|+g=W[{s+-S{[ʁ~]ns
:N
$]s:;(l,EPԒ$݄-*l:JL$˝V +Z$}k":é*vCrf%[-IXDlFUy֨\;N
z,
b5[ҧIaZ|绤~"C_mPK~<    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCPrivateKeyParameters.classMO@ߥB-VX54&B4&xR6X--.-I&?8wޙ3۝yx}%)L(`:$f4jcHoIUu`aˬcг#WX;۲e|Y%@nZdH`OݖR%AC:AߧSг	jSrGN#>(j7E*4qc?MSZR򈚦lIlVB;Jh7)ȐY+3Xe'(Cd47'K>GULQLWx?a@t4O1OPK؂T  n  PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/ReedMuller.classVl[^O>ZJؐ;qJB&mB@BRCv@NؙcK7
`ӴMU&uC?_I&Mf߽vHm{=ss'ׯ,؋llǽ6\toQGuPWW tٸ{m$~t豩+AahM21`p))s
b/.xssTqҧ@P	C[F̄_&
bSꄂH|cT-f\w~=ۑ-VJy|?7Z-򮵭
潜7sce87Y*(0CrtNzrWG1scyҸWrT1M3xZTeϨ77M Rcåyt|x|X,5AN|1eAvT-g)іMӞv:Qሉ!xĈQ5rUu8ǐv0]Dݸ	|EAw (Q';RlEAh$orzUgNsRL:޼#[(!x{p\'OgK/:JpG!vLK3#Iy|ŗ"$:>dv
+1ٰbLu
+y?,vy/ZOUԂfJ
{=v%
QWҘ0*SAl
MfUԅ)kR֤KY!eCr6rMXj8n>8h+
z8~lf{;ml~sa|}Ʊ>ӺZ"oFXg3q6GդjAs	i5z	F9IdRb*\jQW.~zv2՘[nSj\"j'	p$^RE7ҴzUp?fЏ8PAz]|(+ػB-d"^!2z-KHp(Zj3b%ꙍs(?A]фȚ/:ݧ&
N	y<ZÉp
:ɤ
F_G!ʫn2Oyp4cm_{d\U"+ЯI5|oF*-9T{>V[1fh2>W_p]p.ifk"4Ά{H_c`r|aѤ-
\-/rqC_(
9b+vL˓8Ō0QD%zU⦋D\v_n|WU f?F[ Nn-. sPiZ^y+b6@Z=ZHVMH=8=+//
/[-/akDIfgHs6kI˵Wۅֵ2r2hq_̿kjTf7
-hjp͵(ES5lYO̇ob":αXϠ0E<Td_eZ}/X+8Ox}F+i"nyx
͊9v0caM\Ҁ5ր5$d!VP)(8,QaI!g	P<L$X4~<:$?$#5l
԰-PL#\JoMd̒KckXj2&mNhb!BZ
sw:#cҳ	Xy=^ =Vx:<Kg,K8_He6~+\g/M,=)>+_!_s|$끵*84(u"eZAYP`F>!chfPK    PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCEngine.classY	|յL$eB> k$D
@DhaHd`	;[mjXR,UK}٧m֥۫7dޯV&s=w9&Q  +~4
F7)'_Wp[ܪ
nSM+إܩ[|wioO w;ڻGwuxSp|O
2p 
(+Q
<qxDc
*x<QO('<ç*xVt1_Gn{A~
^:Wx
oޯbx[ =6zh"MIQ:h{*iJFk˖_IFK,sW'U=푾T<Zջ;ꪊz\nNFV,ӽ\7-$6|It"q=;7@K}-
g/mݸlMӒfީPICoƺVtT|ƚy[W#y?6:^3MFRdYe-$0K$57<-MtP?y)dkds ^XQu;ўHo8	STNK*Ҿ)kf
;h_Ó[b琌l&6xfr7ehW5xhz.̙q;wpE43:ITurUȶS"=.H
fprD"!&pHdk7cRp!o%#Nטd{\W-vE).@K?]S%'=4Y[#gEL$֙،v

+nV*8M
Pp
5Ѧ3:5>~gb~o)U6q
zNPԇ&/
J0у>2$8&1_
vR
1ĕ_߰dSe[<xM1gߔd1%WL\kL\L	Jkqpq)Rh|\`JxL	I!ŦLC,m2MRRaadS#3?í6xVUtV٬C[F;rsǗ4QhXMٲ=jbqy1CS AI.J'wYgfAW>G²wfG::is,q

?lFhTk}hG^n:;Jc}5[&[d28k0 6TeL%z:0yhwj^f6d'|cD*N7GXo|.ֹ,jcg?R<݇BBp!^`igС>oD۪~ ~:ZNsJ{ED*ٔ_z=[RQnjO@l!aAAPA;]kbFmF"Ҫ9k6jAi7IOo㗵n)"h~u_Ggf4N~/^:>ڒ'=J̮҅xQ,aѤS4EͺAᆙ>7S1j6>cFKTMK5EP8Ϡf>ԀRdig/K3ݶ8mӞ괧9N{Ӷ9Ni78-s2m:gi6[vƝi{n9> <bCAdpAþAxŃ
܃C\"qIv8>p rKA! á 
¡AKqa]7Px1>DG rdt=Ӟ*Mosڜ3#QmVδa]r]C8f>k
	/T0"0,*f5:
jbZp<}y"UK, "2d\:`w݃x˰J<UxM,(x0#u?(XJ=fZ,Bx´Zn=:rn7`-`a˗WZ>v̪kV"!MB2-ʶ'R[f;ZVOQ
uA0a&8u0Vo;vs0*B"*A
(!^;b+*wY`*\Vvx|t"::qtùtEtz:_cR;Py.toiiSkC/߱+.\$EX9
J.BJYJk|7)d{$oW}$W,oZ~gY "`#%iTդ<C/Q.Q^_+\Cu4ȚޛK}xQŔ[AIg-s+|N`Q=]DI4=MR`@*"TZmq=[[)o"鷻P;wEC=Pj^j>j~!>M]ݔ0'}<G9OOxTxhRUcC.z¼r'9S?TOGRahȯZhƮ7T}r8!T}9꘹՗/ʦm^FB9)$I"Fgt,ghj5! KnŁa| S]5šv#<TjY,{}@a~FU
WQ_gp~W4~M7n.=Ho<)/=
7/OS9Y'o5|W6_H`+,)sk~E\rz
<d
4{^s\
`57mLjdGwy)3(4>!	f8#k<V49&>v	doo*>2J#d0{sF5'L&y4\VKy@*ɤ1L)VRXn2`<gq)t޺*T%O6ʩ
D'8
2/-W!S)s?%ń#d4*<RY'w+CM8*2S'sQ%Ihp^j"t*Y7r<$xIeY	uV)Se&
r1mr:=&_Qv&ZxDnr.%NʛMr=,uNmCzwKccda<&2	;XvTf;ŕv8ԑ!GP|rlNŲ
ҍcҋyCQ]f0(69xV.r1:|6(۹r*JfOS;\:#2}a|i<Z?9r˵u-DNHe"S
4Dҿ9ZtUvո5\dwiRt!w/d|!.VX{rep铹w~0c
QfMBv\x F"ak5L?dƔN!cϾNaIR	yr3
JVLq܁r.,=8]V.>z, np>%>oE!}5gDtc`Ү"z?_	R;c|йN:vwlEX5Zwiqe%fȓ/O5uFsR|O&^-<|2X
Wd^Ҧ,G(3=<'4T^<]HУ~/6oc%#ӯ^bTc[z
de2ADu66Ȼ"!)%1}q
YQT骜LY?n?̗m PK8    PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/Utils.classUml[g~ﵓ.n֛uvKݸ;]XGBlM&g;]
!>Ъ%MTL[	`?!~l$C,<MJu{]}h~DԽf|8'Ė,}*Jd3	rw)	#TZBˉL6T0;|\DX7)=939(ax)9}v$wDOr9V($r)mM%TҩM2'rٙua[.f6qCCiĹ9s(f	Y6ԩLi$Y<+=<3\Kr
ӳA
mE?-ہxhضl \,`m&]$M2C=C9$Rʝ33ti|xn0>,e抽gh70o 6#cf"Styi4䟞LR.2˩u
͉"sLdtLz$%lxXJR0"H`vhT<<t-M,xd,u30ͦ2ɬ iim8gWP0 PZO2 ΂%nmH78!zMhc#׬QG̚7^nQ'Ќ#Ux+?;oSM¿˺sz4ӑ{'\"`UԲb9q/-'$r<-)Rd
ծ!21OfTLUuODTW'橨tfP8QEؒ_.[qiYp  :|urՅ؅Du1܏0z0
Oy8J$`
Uhԭ6Z[Ano DtIʗ<(?5m*
_.\q-F~Aa2OF8r#*Gu~!Lrvc#XsTHC`*TcAeBA1#xxhń4eS&^]vSw+'#m{aq%O*$~5(תooIfSL=}HL1YnUnIB-%^Fcgиj)׮Y]IQn+1)Qf4kayʘ6|%F>Ydd|*3R2Rߋx	qق+9o\WkE lApǨlcW6OWʋrqq#_"upn-w9[&.|sE1utDgXSrq+rUt%bބ3'F!˘"ܺbGIW(@x(|i+4tWi
vdV7V^ml_t'vzoRDGuv=\_ohoPbt3~떰U& {Cob+ʿF]yyy{\MǶ}^FB6KVZ
U	WE).$.	6#Y)n\8}=6a
';lM:).
"}/^ծpυޥmPHPKe6GWu
ﱁM}0_pbSΓǱeYf򨘰Zh%CrWMq7
ڦtlv7;;!|-cj9Z]8֐BP:|7	F(t#	lڥFQlБuZDof PK{?    PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCPublicKeyParameters.classQJP=i6FQ-.bEE,RQ\U^j4Mj+_(qBΙ3ޙϷw [(1R	$%3$7*k9ǰ]n|k[S3GsӬ/5u'A޹nTQom<$ZziQrH_Yt,HXTP@QqL0lr#,?'ͧ8d	|=Oiʴ]^/4f˴%GۉI@q2eq\y"!(oЀc1q}sپNU	'PK2X!ia  r  PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PK  D:U            i   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SubjectPublicKeyInfoConverter.classRJ1=iǎUk}XT)
b}&22MjfF:O\ )DȽCT1!e.
ہ)S7gahut|eORey#aEGFMc7Q*."]?N%ߑ
}njq%x(t;M݌*Q!FƁёņCEn {)_	8}!ccӥJ-s;6j?:=\1;u1,/}a_
oތa?E_G.s.(2P0H{_|$<ʇP,hc0M>QeF2A0){PK({M}    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSConverter.classVYWF!6KIH $(diM0KbƄBi`d$6?}1>K==atg߽sg?<;PqUbH*`<}UbRDU♊&<Wo15T	&ULaUƌYcj}K	7%Z#٤dVeOflkFL@zpz;V2 #uw'|rCZF涩gL'ϗ}GuX^!zM_ȒEcQD`Zf䧂oԩKu|$4q71}_#U|mY6+.OVz(&ܼgiA)GnV5|a+Ǫ?j	o˦Ind}__M$'3)	(J?
R
5ul
ԐAVÔT[
<l*k[
;(hY
8?ԄlK/(?ϟ_c"<)U-j}եRaۮnWjPjZN>UTtD3i׳pSuikv8
O}P;=xbnxʱT2DcQz>SW|Ǣ'夝~@GGPe"Y)rHEF襴AN4|uv_zY6Nc]Ě+VBo%-jDR8
|庄T(uIVRgA Aʪ	G.P;]bNO9)t]á0	D+)㺛\0oLrꌳ}8(n:E
Y'.j~'JyU\&6yzo
Q[Dhusal"H{u=VhGk']좵">E\*oe+E\X=T/pCE3)AՁ&q-t.nDDfha,~# E\wcB6K
w!Q+7)ǐ5;+<E#BHPKI7J  
  PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$PicnicConverter.classUmOA~'"
"҂pD"
DƆ6>].{Jh/@01e=`;;ܷ' ,v0q-m+5010#ceEH24Ec/
w3\M	ɷ۹Iz<Ȕs<㕌EpgxM^ʹeT
ܲ}fl9ǝ7rM}*2oD
ǫ*)WW;>`<=px)uLa0Rro`> kXzrPDƷi;UF	F-{zVQiL"c<T&bQǒ:&Va墈J±2!۪k'vjuÕ#cTstVkwLW0ecD#CaU!DC+k٭xE}Nvd	2Nݓ~`KS2E>V(!lk:!Dkuan+T5;\bW4
p+u|Aeu!)zsjcQzո7X6&D(u$qC1-cT]C(uhh&:2uchhޢm!c.k_>j}F;>$:, #ADpKtLL:[)(&~GQӌPK y    PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PrivateKeyInfoFactory.classZ	|T7Ka%aq 	`B 	 d%L0uJ,UT\[kmZ.ڪm]TΙ7If`f~Kx{={3~@R	q
_8*_kP;~*^{0oh75Y澥mECoxW{.a< ☆3ohUDLVlflˈR8(SF4HGאT*a!`Q
hJcXnRi4N([QUish&4I&NVt
4E<ܕ+L8M*аf
+`j,Pi
/ale$_
2ROedJ54H#HJKTZ/L}FV*0B@RA(S\CUrVhhSV*iUj
WRsX#)T:OZ+`sX#|^
*m԰S Q.pM6"%(rԠa72(-IÝ,#imU%OKXFjM`4|?s?RtC>
K4KULCt+$^t(9LWy
UA/=eKNZ4`WyFMֹ<24\a6ίUFG1@hȩ
6
h
r:|>#Vƌ,=wCD.EFkW*,5Fx"
u]jWk@*}I/!mBQ13lsۂlŦ$ns/h>n҇'QXӄ/L
Q]wJbģ뜁ۨHO4c;=|_S,)rw-l.ǹuΪdt-]:v.aZekVFm7t#RJ8'UC?r֮)M`Y[(6p=#-:JsS$pA~A3L'ݦhHut͝tfEr]B:E{UNw>t4fE{tݫӷ>:`I R4}g ,V$_X:=D	.u!On']#NУ騷z~Q}%yqz8%m8JKSQNߧ'	3SOM:n"3NO?	x#}dO$.q~ҳ:L\#PD	91AN/(,:i51CZ.6JK$%RKYW6
R_Q~MI5N1h8*c?tB.@5輡ӛ~b)i1U)WuzPGMݚRQyG_Yߍ.;wTD_}bB4Hű֐05Jh2⵿. ?0u3%ƶ66¿$Cޔjo8P
9Z:q&7և"G t'_&֠gD}QUəg
PE3U]P2S-^i9zZCጔ)"!tCMpezY#%׈2JWF+cgT4te2NWNqFK{{¤cJk/ <%hM~F+㹴S&DeLVNgCEy]&GW8Z)hhhO	4N؍Sj72Iǫ
j
IWm%@8Zps!4ܮLPfL%GWr麴i'00g %l%CüY܅Yt#iYiuVNXS:qT=N%&
w,TST>VfyxٍV'ǋ@K2B^Ne#b
?8AҚ+r6a$Ҝ`{7~k4zRW}lZcG_'I-P42Ob+ɭ3>'f1Ny6.VR}"!Y8\aP>*V"=2r2J"
3-B́`.P	riWqn,ɳ]4k
dūn!	{ޖ..Ԉ^NQ;8moAgk= T܃wXULz6MCL{s+4:OlBImvJI.,l|TIb)#zۂx
&ɇ՞3|o*GQ%j"^8eOEj#qH#}p˛ e#U?2Ͱ,5_rcIok؄Kh"JQؿ\$Y0<Mͼݏ'gT^
>)$
W4N#ϩ<%Ņ5k
!TĮ~|p,ɨ+E榲<
x9 >+t>[]dJZKXv
|=hHd »I:P+W4O<{P۵xRaq̕>%3T֟v	F?\t{D`CexC2"e9˙ 欔8{;S$D'V^zqӄ4#AZ)mFU~X5HXݥ&,8S¤'8(Sٚ fŊM6sd1W5ne7:eC0ZoRq	JzRIR)[j|;bdjp<lwm+$#2Hy#gυ{:	yaz!O0H'`BV:΂#.T8=[YƏ/4]-m,]J{Br4%k
|2A;\"Ս!0:vH2\FN/4
PdTДy
h/huCƔ2g"ZRN:R9a>KHzntrGm/V?"NQ,9b9+VdVƓQ´>8ԉfjWE^NmW1EV
^#4D,:YTuFOU$JwzF,&Lla*M <ɽ&
:
j<	(KCYrw=:O3r{oG&V/YO҉zNj~y C:T=a2ex#10G3f7bV'Cۍq5<BkQ[6K=ν;0.ۚe϶emdNK8Gv|'V1Lva"ԅ5}͑Bx
3.	l+e[1Uȝщ:&wc3)LНщELwwcq+7Yiqgwb951%X(+&G'1Cp̏`A'Ogw#_po!?YO!?Eb%vAN01G.;sgP̯JQs"(RƬa.?Yمk	X݉&	
O?6u8>Fsc!\i$8{pDJSo!#
N(8M=8<ipvqUZX_o
/z.zVb+#u%vf7/A8_>?]Na<3yv$28Dpig`\
2sbo!WĄx!>(U'vN|1mbщ˘厓X~)_I^ؽ6A">;;,K3gn7v㦸͉ݯ&voIޚevcuFp[
7x6P76Gp{lô+Xĝ&Ν=8{"F箤8GwovxTdT6Vn:l@..<lB>6[Pzm؊p}VE&>p	e2+h>G3pi@[eچk"\O_Nڍ.|n簛^twKnɸG{OYJ)WV′*^<lCr) an<ǣxLy	+{;xR O)i<cXYL<g,/[e#~iقY[r=`op'˷ac>jyZ6nf_l|dcօĺǭeDZRbz)٭RʴMtK4zFX_Q?뇔eSim,Ml[>MIt.3m-4v1M}fvL>ʵul34<9l/|kg{ζ}D*ȞOeTdiG/bn*E{M
s
UُRmGU+9Gy8-wq@Uc?QBWSr1&H(Gja]Q1lX|9<91=1\y|U_s7|:fE{ejubmb}b: R9;+3o(&eiWGpmR}{1Ŝe!҈
e@Fl@҈
d0ilT8"{|
Gt2Rg.<pLGt;Iֆ;0Zeֳf؍'~FAA2:.6 CBd&F1dra*c5`&X@XBͨ%|h&?@rK7(˲
{R ]'r<OW-:GX*ns^y( ==ㅘq:8.5+MnQ>G\6C3nĤ#x]|uƣOҍ8N5׳wo`^~3f-KbB	݆*NN:.@wOwr'8Q}7'}GA:.UzSwI_Mό?a/*3#)yBldSA0$l~ PK 2y  E9  PK  D:U            \   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSConverter.classUmOA~-=<DPDAhA8
"VM!)>]{Jh/@4٦j+Pvvvg~@I]RaXQq@CL#SVGH5KX:?~H{f<S.渳c
so+X^6=Bi9,̊i^+"qtaUϖss2%X82!Vu;na:g%	qR$DoqlgU0@gRBp'Y0\S+-,}4ʞUmg;HLކˎ7-y44tG>/qK0]=:If[ܥ
,*XQ
x`E*)iXs^ॄ+H0$ϮCG!hf5vKl=U*5ǠIJF2<a:ԂU?l&,1R䉆W0c$Dœ»T<4Bv,Ȱ_juoU[`2ӆ8
a{r\ZTMkZ.<wRJ!LdJKaR>ZΧmCpNīn^nY/gGmbf'
hjVdpވr]-&i F~t@9CnB\#mY40>hmHᏒ9k.Ia9vR:aB~PKA`    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NtruConverter.classUOAm988DD(E$MK,Xa{WM&>2VXaggvv>; fHC3z4踩z5\%{G jĐa
MQS1аh;Xbƞ1(kg9mI:\lm=
3\pgxM^ȹc-n7f&l֟IgM}(NT6,\Q|c/ɣw}A{|`]W1bAO:
s
p.$k뷃@ߺi	+Z
<۲&d:Z*.IUL}2TK"c)"rͧ[!T,3,מT>C)>SŰe
lHfmdv15a$Êl:E[P7tZ\d	N^MXDf|60Dc۫tgEsTᎰw]J?:a~nBYIW\UPbxqt	X軪>'nvi{Ux0E?
iCDШ%8Fa!vTK)DF:Rw
!Ӵm8zw+GV?/hf_žd
]C\%!Z?zv6nA7:I[#%('{PK    PK  D:U            a   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$McElieceCCA2Converter.classUmS@~!(o-o 
RZ p0iR3
?9
Q{Aj vnݽݽ 0W2pWF;d㞌x ᡠ0 b1(e4bDiΰo!}N[cհx\sgS˛$)po7
}W64G+r;.ÇȪԼ]􊮹U͵bĬ+wdڶ㫻ڞUPxݩ<[-	(WM"!:rj_%ϰ-WBL$,$Mu98``~PSڗtv*ˎӆ@ƅ
:)<
aa%Mun\ꚞ'db2 
f\A\sx`/%,(H`QBRRe=Ow>G^?BP.hdV3;g2u,C;%˫BH@Zll1gx0xTl4KKE`.VJvIk/1yL(_悜I֢&G.'4*}BZw=sG7alv-nyƶWx}'	@/㘝4m@ݣZ*av*H&sh(:U275 $O#4J3Rf]A{Ew4;@@>B!/U]2fćI	FXGq!"K.t6SxG1PKe  ,  PK  D:U            `   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSPlusConverter.classUmS@~!(/(PP8)
G
G`trܫ(~/' fapWEU`P=}P0FT<¨]Ec*0`Rа'xP2D6gh[wߨ۴Etx䋎Wgx=᣾z#V]-?(rE87r.4ŎXߵ-hm'bc^FYBFү>ؼ8<fL!.Z){/JV-;pp<!܊gUGvo)YVO
O0੆g0	
XR\TԐBa{G~X\vH$\e
+X)RvEjA]=n ~Eb5m3Vk(3#èBZdn#89o Gfz\KD_$,a6Qc[)gǲ?Pyy"Klh"[)3f2#'^=}e*Vxfn%}B,݄禋@4:bxIϳljf
4昵._>WJ61DW?`h'm4Fk;B3I.@mt5ZOkluǈ~cc(h\~Eӻ2yr͟µ,X	EC'٢.zN5Bk\"%->ܡBv˂	LAM`: PK4\    PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$LMSConverter.classTNA=Q>TK-"7J,jqb[BG?Ί(Rܙ{1I,PqCE=*zѧwS-V1!QELC%,o!`Mp)c	ZsgirhOyepqexNAeaVL\3\&g\9زSmcЊ(hY;;a:gk%EtΆO1<|b|
4ui%ϲ`\A!tp]Nkp.3,{VQ;lT)Y 5g/[(EA]Sp7	S0G0"HaVH\P(ǴsYɥm*e|^"CӖKa3hC+始#BQr5ڱ<k~,kzˑE!LBg%ZPRh(><$yJ/oĦeu[Ƣzj-8Q!i*٭gĒH7I/7)3$Ql-U'ɣ6H^X" #gG|uYiUY.yVoƉCa5A>ZJ
q>'+*-w4sKtWg1`q~ 3D<: 	^46ďWhAtɬۚ qXH
PKuZ    PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SNTRUPrimeConverter.classUmOA~888ND 
@شĂXa{W_hGgZ3s|`	/U_0b2,S1	*0 `eͲ-)} 'p7m<5E䋖Wv(qHqz	lb_1di~E#n^LهN<}dzѰzz^ae^D։˾؞YsZʶ,) ?*
wx,.5%*ҜHCtWa1Tgy9 a
/7EdnPvs{;bRzt]V]XN:1w CW4{!:]U|X^aȠ7NwQpH<VLLcN`^-kC;5S|6	X5D)FoR(Q,8+1,\
5}Ъ\c7U%usʪǫuD^qeFOǐ5](cM1Ob
C45	5Lqh4;vRivpt&d49E9S4ghr
WgϠ~ F.W@d:{@4~G1HT"<}v5	Їd[dJIE0
PK"    PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$1.classMJ1_=7]64	O.C&$m~\ͅPdpW+
>9|}ǅ8'>[c5%NCԧ"\>:>7uzo-·Q>;.bZ,99yoMO<9ÃU1HN*7aҜskYԯmet#PKM!'j     PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory.class	|o!I x"&$h !S$;H<PQQQQQQAYoɵ-ZhZֶG=mk[ھ&<Фw͞g dl~/e?+2We8D~F⥟؇7ޖ9xG/xd>YIXx|B7~+|B14~'2M(c
I_W	Q`|%2#e4?$ߐWbQf80Fb#8H$.dI,lUfM$$d4˓`z#9d<CI#9#%=-f$H"'9d2$ǐL#9@be1
I#Ar<L"b<2	I)IWb2b
J͒k$'H2$%V%cUMRCr
I-Iɩj K2d>I#Ihz5,$YD#i!9Mbel6,%Y&2x;Cb+%ʠ4j&uUfHWCNuüZw]ZOZBIs:0	[lzZ ^"
jj@X}Uյjk574=+}-m[qXz5&ba2ӶJ
ě{ڂZ`I2/kFt6-0/fpDUjSOy-IV *0`EXgQ['xP-
HQ*/R1OTޢ\&FZ$;T`H5=q_7=
Vawњ"\;΢_hduB ZP:o@/x$7 $WXH]a*P,c8F<*_۲R<TXӨ
[ź*%RXE]3;8ZaQ<gMu$1QwE.zt0zD*,j͸->QعlΣ#'RdQI{\)VsPb*lMEl.V%x[
[OQN~[@b*2X7eL{=(r+H$j+BRFu55$גl"zH6Hm<6_
Ld+-$׮¶QvHn'NHvE>I y!IOɣ$p=N ydN]$I\IaI$όp2r2=K~0OOC
9I~D$4cɋ$I^"yy\"BSWI^#yZ9eM3
I$y/G~5(W=PY1Gn骂PCkS*Ѻkq`9H/Vb~,zhU
3_j! o;ߒ2vt9ȼ?|ב)9`M?1󠭙}JĿ}x'	'ibff !e.{|m|-5w}H<?"aMWg3CCnzB%2/7c<Zx|PJ6t
bo^XE^R_mm`1YGv׌ CV;.2sYvi)2HaH&5!Ro#E/j Q@,bQbqhw@/jW
{]E:Bj!(evj(+[b]|33.y򬴋NiɒҊ
oik;8z+*&H^oESaq0ӵ[vWf0õ]5M|ՐOcY|*˽>|F#wIi4JR^yA+y6D<ԅ{lS3XFJOzENh|*촊)&G:-FOl(^)^)^)+YQt[%rZ	͒t4GZ--)/byvxʷ5	EHj#(Fs<
JKAPZ\d ܒ;,ۼSCꦔٸ`˽|{M2͜OӖ`4-+4ʽA|Ш$.v[-,K'3jKh,U6bfo|c5JnAI&(3W@JOd<\]E@ר/I}GS_?Z˩nO$	:?M[z=SMCU+L>-Ζا|1L:F?^rrOq}[/`ϤzdY 6uJ5pl`#\<ڨ7Uvz^e%H?Έ\*$K]lFez#Zx.܁ ؁Pl|P9M||q;Hѵ=gy%8~#@ϐ/#	 _>	9HoֱFuHW$l'=1$/c;1a7cÓ8ؑ$&daG%OhbS-4߱InaIGlLbEV,`nX&QFkaV!`6Kf	v$U[X"`V'`
X}
Z</`$`Y
"%B4[,`Kl-BN3l
ؙOXL.lu'$E,*`-,.`=I;X-`عv^koa؅N.$.l]!`W
UIl$v]#`
&NLFIn-Il%v*`@6Ԩ'A3˱a-،p?s%xK)k,gX&tl.Vhe1϶= ۋv&T9:76
mVٚmkC֋m¶mbۇնw݆}zYEXc@lm߈s\gߏwqK\pBX瘉ոر8Vac-.uleqc68^q+\唱9	W;=Yk˱uu޹78f3:nr~_c+[]qˋ[]s͵	W]qknw=;\{qMw=R>iԆ^<$m<Q{ȹ^w/m8<tX&;AGkt'Avt'{AtD(W'% QNB%UKgq*G@xtL+xޛ Ox֗^	<	:O4Y2}>yxGkPKC7
  &  PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NHConverter.classTn@=	$PZpi!N
,D@jU#R,Z॑@(l~9so?&,⢁K&.c\5D572OV%C齖d'B]ZYp+껎\[CJ?``=^AJ.U{x/HweK++Ԁw'B4T׃xHQ:lϖT``2CIN!8zgB6z~\0{^r70<>F`ڟp|IٜrnpeVTuwνԮ1#Qwn&xc/sY;ou&?&gCjP0)bYuj
'ԀiYhġVZʪl7vC6!q,DB+4AJ1*#<*3;sT$䫕}#XQyS
	U$ N"%pq"!tYb^"wS͔PK59    PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$HQCConverter.classU[S@6! "PnEvdء02ClCgQQgV <s~{ۧ/ DE+ThUX{OƈQ-SS0дb;vР^1)w3glo<^"I<Ez+gx=὞qwCǪXaN8^2ra[o=790Mh:#[=N۰J9ppk~D#u|
p/U4}SY]4jVzxBTC͹gu[To)khKC4
f4bN,hxEK.+HhX#"ڧTDUVOL\{dto/X⼳
5ZfUFdh#\&d#0XۈozvCNX-k<JC+cz?>l![U	Yc;Ij ֊׳̅WPLr'㙪]J?:a~j'Wg\mXfxs`tWē$
mpNR̄x f
k$(_cD	cJ[#tHth
ѸAۦc(h^?eW<fAzVi=:I&M:3~AHE^t#]"fJJ8?GYPKը׶    PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NTRULPrimeConverter.classUmS@~.! ZAAD^ZBA(3;-COi8j0Mj2t_?q/h)Ԛ{{vn
"^Ġ

U<a<ˈ`ccW0
b
V-
Z7r2óR{;F&I_[myu3|f\܊cVMl׏|p͋iMd#C
D
ӫW/W%]v`P7M^,(eҎým> X`vP	,[ŷiU	Q
5V<oZ+͊44t[,
t
s+װ=3
ϱ`Y	
x)"'*e*q=ڦmk
^2l4߹e$:G#\GB|X^a?^Ao9:$ٸ(XG8~Zx' ;ENjcjzg
%u9[ Q.+1_Xfz;u`}5
pcӺa{BYÎg\}pxNxkn1޺'!It&n8FmBL;E۸C:Bw2ZN	Zm;r+:3P?t?HtJ!Lgw鐆ݯ(JD[N!qGtLLz)( WQ<՟PKb`    PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSMTConverter.classV[WWAhVjQhQ!&\(Ԡb/!$3qf_j_>{'pZ9g}}~Q>SqC*>.?g{`TA)yW1IxBEyM14/*/xLXPP@C۱	sД]#t02H9z"KI32/:<zY=d~;}{*7/i8knt~2dD8Jlc~)OwG:Sim.
R̶%:%4q73}_\xi,vN<kZ"QNr%gmNʅ3
sdzq5|e+ƪF÷Xfw hKAF ȭRJŋv.#=ENEĚ,klӐEAK<|
Wplk(
?ⵆPP@	6:[8C{ԵXiw{E6;_sՍD%S^2y\`=/p'\q]]çct?j,q,7LuXt&'G>ZdɓrJ?PzR5NhbIzv-t!Κ8Y;hI;TƿQ̛
}jxkP7G>
F0|H;*-%%Px`5NE}?^QSgI!O]V`KV8c
`2H+d'kzj+jˇcfJd8t\á@[)7[Gu7x)aLs~0JUTG|')vkFNW$ho;h Atft
׉yBxx2BhYCe߶7PWޠc(;{vR{e2>(¯Ue|8bўP..Ce\f&2TqmȵQ\&&1(aB0+H9)fB|?H*yN!
f7[mJzioeppF0Xq´_'6|@εS.iHPK_    PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$QTeslaConverter.classT[OA-,TTo ,R!il(hbx.C]Y&(}?㓉L#u3sw_|`L	a#w7MmI10f`C2}Ő*
Wv}5j"X5nBD5u^x!BwvMF;<Ty'v5m	Ho|yp~ݮ: n*i75Th¸AysqMJ?41eJ/Pv "z}KQ2ry
*KIi톅s2Pl:wm%B۫krM@
LZ=-Lö0Ysxq
<d(tF.JGDI>uS\k8r{\i*d1!U
uUo6ux㐳!|n?֗Po]mԬ
'"]q+AZc};[bHo\q?zQ.\U6d?1DQBLv}F$qh l_	<`8OtbD'>hpA[Cx44R$
~FRE{>zޟh)
ݩG&vML`hWpk=(BQL̟PK<w  {  PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$KyberConverter.classV[S@6]{Pb(P/RʌSh`t_;>9*٪y={rnKa; x.EЭU""}*88ArQqp\gݴl˿[`$%p(mbT
xNl2gDyp17gmMB7<;^30igN,lzްs\uo
-}G/JW>Ж
sQ11ΠN[qLpm&	
{FUےojӆ;n;bڒShP^NC'M
p'9Hj)gfZ)4LC^y2LkliirFCerglc	\0ɘkfe'jW=_?#U|k~R檥0%Š7?TԌ|q-ya(R~٨J[ϬJ6A
z|o<\>'+$xiY)+5ՈSNӔDd޺wR*R6NLm{zq!IӛMgI<R쩃?CS1m2yiI+[LD?B@}14Vh}.v@>MP55щg[P^pT%}$}EhD`Y"Cp=K<|WAQѺ	-T-mH9IWEоA~Zgt/t)@DaQLWBQq["q#SP=qͳ[`{o|{	L4ጄP1PKX\    PK  D:U            @   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/Utils.class`gd$6cbBO![ F)חJzoPSIo/;I^fkI6|!a_iv=  lvӜ`gY
$<<O\ċā2^+82V^:^
x3緸Vv;NrAGrޭf65í,I	79p۝w:qs\:!WsɅ2@xA2	N)iY<K
+k
[;{
|G'
~g|W
~7|w
ğgNr?WsߘqO'o'L}$LdcJb3)L&')IeJaԙ))	eR:SLݘ3`ԋ7SL0U4)i  LC2
c:)i8SLF3P!e3021302130a4i<LJ&31Ma*g4	LL3f2bT4i.<LULeZȴ	LK2-cZtLN#aZu¡R
i%S-Sij S=S	F5L!0Si-:Ld:	ˤa:8N`:$Na:4'.tәLg1tӹL1t."'x.a2L;FJfFURKS,(UZX]=!T^nz	sKT!WJ/4!=KI;jzi^unA!
rrų>GHZz">F<kgܳ=
s5jse(Y'a
_Dg[>N>nṁQ%M(j9զc<	5Vk'm0D4c$]4fSڪ)S%5W'7՛^:ެzԭ1Id9sB[YCgU6S<+Tw_8аmnC12{+2Mt_bx/ǻ.23^4Eix_deuWEB`4e}}8O+
Wz)Ըkeދd9ӷ+.TZ_d T6U9sVy#W64F܆?rޝ'0
qU/rtmy{P(FddYnE|p02UĊ^lvYy[rjvM~eZh&=mU];6Vj yM5Ytr7:8HZWUo۽56?;tIVpkqҪd>qߦ6o{6Q4-άQ=ysұw7̶_:=m3(BZ
<yBO 3[̎T :j;ZE=AtW笹
rƠ{s@'dvD~an b_7݁H2-9A o-mhGw9i9\ѮvO>݊A(Bz6RkT=}^Y9*Vb|xz>0_]U
M!oX]Fh~KRq,SWFUIVw zBtt]ݱ J JCMpz1oNnh#!Ol_&.nWMԺt'BY_G"4c.U[ڬb-G#{b7rj_ESL;
}b^,ַT*izM=ҽ6
g+vU!DKrKֿ3^UiׁPlnq 63MT~iCz !0}_[(҃SV=#Qk sU1i'=nS擊*=-=HϪsTM/'s[
Y~8-|Uq 8msF`_넯X*`>kN(߶[Q8GTlͶc:S1Mۛ%M~;$jXn
DX;	{*ծ"J/=2'p*-i_Of{U<F&%l
V[k"ݬ{~"JKoқ[*ˍ>L2}1'L2}9L_2}57L2}=ҏL?3e/L2?N~g?d/fi>!"%Jd&dcJbJb3ٙ&`r29\L.dd&IeJaJa$w))))))SL]1ucԝܓ^Lz3fԇ܏L0
d4i`LC0
e4L>LLLÙF0`4i<&7)))))))))_.iz"SL&0M`4QʥLL&˓u{뷫=ZFxrXj즴8CE$V-7hFzM>%S6W3an==}e
A*\DaZPAOCng[	cl>,7Z+H0UzX%&ryqJG>LnRf[ Gk}zWweEՂˀ5:~^;}Wi'ڧh6
MP1?cN}
Zٺ6׹T,J_C{RKl9|~eS @jEeՂʲrϬK]ZЮ6
5|_ v}ִFȈby=u:.	h2X-
ulw#+e	9]8#=tfXKLy~mƕu㯸<w^H\0Ԗ0t)җ]sLu-sVrl6K.ة0蝧i-T\SWƐ_]\R(NPҟYֲbaaq1<-*eՉ
u]bc|f䔴47ʪ4[,)ɍ,NTҧUW5nW=
n;I\RT{N
:|RXbJk"3`t8[;LŔ4W˅)1QҐnah?a
䬤(eISYǨ?)?)O'pAUTTʹ՘5"a^gaaNE9"
40J,A)yHPJZvpnv~1m}+gp¢\
?Y/E9Ϛ7M'9ټGpߘ܉ᩨ1рj5P߻Uː)њvgbyh'[fQ\P,JdSd*iL+VLWz0&뱘2؈z w@4QSNv}扂Nͭ\[P`(#oFH|bX䚤oeukCw:tSr*mi4ym%E2zIIZBe}8͘	|!lh%T#<aFĶAc 
='y3i̼1f 30f>3j34fe#|2f6l31\33|3/0B3/2b3/11z> q<~@Rv-(CqYuHzi
m A6ٰ'uޛI6 4P6kؼKzvH~k~F~/9w2݇W)Xn6l.3+=et7gZ"Mo$k9mHw	%c;Ml h;LJjFtD=-ыDoKi-aQL`6E0<8 |\Gd[rLp:
	;kmo#S6EiEz(\Dӛ!	=
t	 ka#pT`D:Q3 5fyfwCƒ0p3JS.t
Ö.
	l
0DW::6h<
J(O,=kWޙiCS6egF,`h6^(97ebYQ],ef7c1Qhg@<.shϣپ &0/*F+(ԣ!Yt94#I6{st^]Y"y~ݭHFz

tDBm4rnzLP۬HZ勵.g#cRuL(Ud\cӋ;x.Jt1fsǱk@j?6ծbhPAA&C>H菏 |r)(gK}v5c.UF(C͵-EY6as̪"̧0de2)52Y@lIiM&qQdˤ,2YKMʧdś[&ScM"xXɴV[L$deRkL&dFN&+hy3i̊5G&5řn/řTZ&sbMdRxB&pu<d~	/7jdĆxɡ&}ɤ82LB*Ǚ,Lǚ#-q&KZme5?de,$L#"dyɑD3929<dM8V[H&*k2LMVJ'śx-XJ294vZd 9x豶Cԅl:]5?2BVaeL]
~,
REizJ49JSTQQ
DiFfFinEiv*TQZEQZQZâT#"J^ړD8v@p'4ȰH+SBx
5X#ȐaAF4hZ
	ryG	h
'58A'jp%'RH  (0AQ y&(0ADYT58Ejp OAY<[syYr2%<r.ȳȹ !<[rkp Hy
2
6
r
\%ȫ5Fjp%)DR$" 7R$"U HyEbi\
QyV
nl)Ȼ4["HMG{MܡNKN)lADa
[Q؂DaN
[wS؂Bar+-{)lAn¶
vi[ip AA>Âܣ#|TOI
LjԴ 05-GiA>FM	jZOQӖ<#g5xNyAGd.\ϓ _$sK%
^+jJ*U`*
^uA|K
=
|h䖜Mr.ȷɹ %|CrnɅ|ǂDO
W|-o4֒\sA~N%9\ߒsK҆;
(ȟ4Y{5Ej \Jnɹ $r.ȹ '\)ȿ4[4Y"h4i0ɒ[r.ȿɹ !R&L"<BC :0ْTIL-P0E4,T
,jR}AvL~*gć@
dBo"0
Ja4TA6A.h(S·b0&ϒkP
^0a8`610@V¡
XXkaL8/n>|
VPC
~)	VI]a4R.K ͅFHAI@X:"$kiIOzu8R~e#wcAp'ȓDy$'p|4*gȗÙmpΖs\S8OdEl6.U¥2[ 6ڎmgpVƶ=^m
$	nJJ2$7ܚ4nK
IΤ#ᮤ3`s-%ihI֤Wޤ`a=v.hmge}<h O=K^x(<nOgSF8xA	/*K%(U4x]Pn{mxGy	U>}	>r#X1>s,/uc|8v\8no[{" ~r|?;^g
9Gcwg\:koZ<q^&9G;Tå]YJ05;agJLu5ad-t=]a׷ONɽ1#y8Oѿ;UNP*ϐA/ i*=WOPK3  JK  PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PrivateKeyFactory.class;	|T3y rr,CIL!$`67Gdv7x+^Rj-jD=EVjkjն^ϼ#y{D~;߼y3}]_= {x[lWc;
f{/L%S_7sGYS>ϙ×pH
DTPEIZѦ%
f` `6Rp0xp(Q%8\fHRxah'cc0A8Od։')P2)S%)1e:S%Pg2eSg+0@_\&cl$'K\8 OU`%.XCjJXTR1er갂)`PɠA5̺J@QLe߭VxS1L,g+sJt)zx
h

$6y[؊>:ϯ[X c!kgl3c[`l+|ƶI@"vL/S`^>gxū]5wHv*W`7w1-Xkgیmafƶ2w3Fv`yoewVܮxĻ.1=epG~$>8 S{C)'7m
ߠ!궖z-P%\!mցPWW2ht|+jw5w8Ң7ɬbE4nqk!DΫjw9<~G-Q5-E__{C^_QW7:V<
oPM3r7WZHĽ$H;%vI|Bk!;ǰ))pkeȘe.wRO>>|Np a9q%q?3ܯsP ė%UaIrwhSHz]k:+cVGoT|
Uuw{ŦUDt[<>j0Rv`-m/ 67[5GubuY_T+[7|G*K@ſ?$~UG>Q_Tg*~_ ,Vo[i1~!xT[=nX}2Y /PBXRnqkҪҥ*\HN TbP)cCw1LbV V6XI,dp,I8Uee4=͚Y{R5B#Y(q|UPQ][:U'NP1Vx)r2A'âIte4")CPZ
v1i)b*K6{9AGsoCӁ.ggiӭO{^dRs24UegINfP"̢zBMǒ<aE\)8X`8-Ҵ(ӋdՕ%R,UEwpI>L嬲B,G8)&BO/Mh**\j}RB(NuKK08i'y
Z(V|Z
5Z[82SNUQ#lt-ժXôU$vSY9g\\ճAixaRZ[J8ؠFѤ
بfUEoнHWCt/ZM<R+!#mڥ،PQ8jSG{NZºbA`#zG|6666yfd3Z4Zq.]1H|v	iq	hVr/Ց2n\!Jq*Pߡ-;Fڭt\FEKA<Z m5m:r}Pn@s}֠zL賆 f̗֠[^(1"jkMCg<+A\kS\NmSskiVt3UJv"S2-3z\
SMZxXtCK3֪8}[obQL<{BvjlZ˵t@6o!^k`Q`qdדqI|'sW!gxLdaСTEAFTcVJ3z"s׻%٩
Ȋlm*4Lj(udth>)G%LLI^WȍT;Jթۨ:JɭF=Mm?!Z_*M$jϫ3K,]lF^6uS~6wԸ|33plBPY`S) sÈ]m@(d^GN)ڈ(s%i`˫s2ev챢i2hFz)\m	orzC8m^h+J׿ =1=K}
_!Upc.ZuڱrC
ŁRzJ'UkoNu%	<3jU=)#}i})7GdK_ۗF !3o]Zlwy۴WUKQee
kLHn%I}*i7λafRZxJajW	!ZHʵ^	¢~&Dy}xKdG1p
.Dr´Zjˌ֦d7q{b0">s^.^;OႹuL|ǮŎl_|^#ű3>vH̈́zu}7b=r>nL)7ݡ8kL7R]*،t7iA	oN<i'o<~_a.ڵլ}nWh-/oF$Nх<ncG%KkKij6H̭CW?IuK,xI!od0*DN?w2M[OlK%z V07a>Lbl]|#MoF4$EC8#la?GymuC'
GCo?B?00gv<|bdex=-͂%`cщޘw#͐˴{ciQL{ϭ\RW0-"̺8~Ⳟ%F-n%d(gCcO[yBcT7mH>2rR^E:&q1
b3%^fjq-DNMk5Ӌ@kT88U5edBB}:);zfT?Y	O9_B5BX8VD2W_4d7(SalЂZzj|p&XFz}ă+k=(Ң=:<:mkg7Wd4dDsxxU9n%\r,7qЗSѦgU]Hg}K(۫dt54$d͔IȕWQnKS5n@mrԟ/TZ]g=olhF%[38"]f+iO_z#jXaLeS)ɼ|
59Fy˱E\.󷶺V<[-4S^g뭊FWZڨ3Ph\-SuVh4fG%>$&G$h7Fzzn֜M@n)ŷo".&XPaDY߇#BƇ._WN28MK&XѪי
>*J)NOH+b7lC&>x)=:B~FЮW@A#wKXX?'h%|.tvmd4נp0
 aPa.ȮA}!p^ban.H-#`d1Gg<F1v	0__{c	WhI~	ra\5r3]0!&slt{#.YGfI1\ݿqUu.+vôu9ֈH'Lg|]drjV`,	ס7xg0c3a.o>N8e&ŋzNaS.bi[yK
%̻49o.3x˙B6xWpP6¶u#lO*N8YnPڻ[uI'U=CQ4nqkڽ	*c*c*Edf`AUְkYUZ;ֹNyFgκ~)ԟϦ!v^&v"̥cل>3nfjX#jrPC!1۰)FF7FCФ}B)	H$"16fr	{3G%CzYk6Z8(3:jaS3#z*৚sl9	}S4wy=MՔ62Rh놎uݰu9/w¶N0qyq.0\aaUaP]k2r~Cwtu`Gd/ؽa~mWc[OF+7醇
9[d6V}'bmp;{G0|n.	ý\
`P>pᇺ{
d1}fqI.=7ۓM}uCga_h;a}!Es=ė8@+ (a3pyA9\@+mp\p	.+ZN:[v}ZE/
솷p;8]p,܃S>,q<:X?Fx/p'<{ B-Dr
<os.?W_d08 b:$b1Z,W^A"oM(v[b-?GixO	)=Y>d-#࿖%>̅-rCpr6x-PXGe;Z-f
 taET,q̶[ZUn=GYO,m]'XqZ8k=0׺'Xqu'N{0ϺYqy̷޽81X<ۆH<6l3pm.-l˱ضKluD;l
rVm+ʶWnU8:mc kmuCx]Yx}k.ltb5豟l߈^{ [[o7w`~GpϷ?_2x~Z9
wx;'.ofYH&Cxlǻx܅=x܇Q?%70J  (E~%xV3Sɯsv@JxP
#+CpvؚJ|0
H{ߗv}T	!kRW?uF&u$crglާ*-?f"ϮL}G>=9`$ >
19T' C7KAKM؈sk7MEx?PK#>  !A  PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/SubjectPublicKeyInfoFactory.classY	xT<"
K@4d!L8$Cfc "VZZֺ)}ֺ[Z/u)gL2fs=PLg+8]2~+W
\ qkrq-;q=AAA.n䶛d-T0[qsqw.ѭ`2(8=\-/
򰗋{Xѽ2S0[&~nLATƃ
!.bo.1s
S\~ZA񬂹0%:^?/2EįB1xY+
*,\7xuKAbaoxGAPs߻2[/𡌏{>񩂵ܲq2P-[V|ŷ_)X?*[ǵ}F
d(YhdQ[6 ne`35p1H&UVsA2
Q[2Tai4B2BsSV2FRiolp6{DhWPs5Gy
E=nR'˯lr
v~[tzCP׫1Pia-`8gWdT\Xb3ҵ0v:@LtA&xq#AVfT:]as:]8Pzͣ9]	kևi[P)kOHQ4Z1*Nc	,S'x"C:q@
uUյe&)zAw[ݢV)O#iPs7xNB0($󹘢TG(IeOh*C?N	,jJ,jN*Q`5v#/4C%TD3UEU*q2Qi.z+ꗹZ!"DqQ*hBBe3DfW
E-1*Ky亼.Vf/0TFF&o(d[e7EyXRiHE%":N*հSzզ˅/#{
uL{9ӞZz*5ĊI._%d]JYYL
bݩW!VXE*慿F	*H֠o$תD'rs(]\Qo"ƩR3yۡh>[S]>V{hTj4"lf]%7K#Fl
+Lt!oZg=EIZov:&6`g(l<3K4aT)DaLپRC#NPPJqc>@b~U>Tꤓ39>h.oJS=vGDD*F[U:OÔA<PimOsj2g"۪_Z@/`\6dog茄)i8}meaJA	5%m\u<-EՄIiPoDU-Y)\Ls\AG7v<
,6ȳSZSޝny>'4D$z&JyԴrw2"JMl6O0ĝV? 8+kwPۻ*-"E[%_qg-!HĆ.(?]:Z!s٥Wń8'8 2kf(,$Ʋ90Sܗvc&Cɍ=.4\C܌ꖖ9wK
5	MP{-|}:f2 IL\[#"~@%o$xi$6e}Jق6Vf1L~7&1oJHP\o"z_l3CBKZ0wKqo!
U]#ۭgW>+Iy+M\+HqMJ6(knh3V/ί> xD:fF/n^gq4AӦ5HXR9ަ:Yz&
	g@LU+圙~~3uP#iu:SNc9Ytd/:2'k,'K2'4v&[6DJ2͕43Q?wcNf;3э<.xrs<dɓ/LT;ލ>1[$F),[-|_\2ZMgdOlH>H#gBï(l9fiCeah&ٖaL	fgiR'#E鷰F欶Z#!Y-J3i**H8J8"y /ē3gj76Q!R,H(F..]/@KNiaB qx
V1``fkzx;jjqP7"#va@#ucx1#0KY!n*ۍQv2Z@jRЃ1ӻqx72.q:r|f.pzdlL(3D0Q'0`j0`EQP+Q{tIڄ9,cTk%݅=(be3wcx̎s0stc^\sI	%y>k^h>:E=85cx#P泪nTi,<Ac*o9w6>Kz}8=ӽ]&,Ox>
4ta 40`E2 @qj]jƭIND3EkuZ4% 'E44f(43@nJ+(iLYׅZ[WtDїWv@F ^-J,)ҩI8$3uFlJ :8Y9(q>?9o)le
'(63
uv ,C@v6;xJ_cBFTc*&\|ԠvRhBa6xFl+$܅fAF+^F>A) h!6[Q#N8\Fnl0vV줋p.]]t'Χq!=9\J/2z
[袏q}+-qe2ZK-
ոMrn\[-vrv[z܏=q	쵼{-_~wxY%<bGGq4<i-b<c-ǳxz:/Y#xٺZwuxz޴^{Ak}Y_7S|h݇t(>R
To*|'T%'IA"ҩ#%$K@ʕA4XzHPm.}E#Q9hLH3p8,hP˘&O$Z/lA¹cyaaB$NwY,.?PKr.@
  '  PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FrodoConverter.classU[OA,,,+
"riAX
@k$il(I]Խ[|2G}?e<j؂u9s\9 氪}tpp[.aw5cDŨH`hZ_fh'3(b3\
Jy>5Et䋶WM,qÛxF#/ǪXazN8^0rA~[n=Q4
S6,RQ<cͫȣ{}A{|hoS1bAO;w7q
p>"k뷃F5M[Nd5\oڲ]gd:M.=*H1:偎W 颊%<bX(=W
cSU0֟VhtC8%[mgmF/w`V[0-c0D"a,Zn+%۷8!oZ#:Vz9iM"(S䳅lµOIV,_fjVo#]J?:a~>*(3FLj<J]:%)iC~
	
ǈ6c>ю]RҮHGCA#ѡ#4@9BmyQ1U;mZ{$BgFد(ƈ6"Ћn}dKfLI1㞢 PK{    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$BIKEConverter.classUmOA~888DD(E64TJR51|0c]M(l3;;}9ъ>x~x(A>1:1aTG4D5L04-G+
5r[ir1ǽWV@<˹7ye"3|]/oܲcWl
ܴ|'fM/rno=7޷-`9y3S=G/۰J)p͒tk~HKp_ä)#8K,BH@Z|^e8гnٳ躨4%0Іvh0
L#a,ԖyϰaQ%
qxN1]QNp3\aaͤrL1]3[k7wV \3a?`։BvkBHVֲ[mOE 9nj KHujRXMG	ag٪Jj$ hw=/2\
5.w'ht*J뜇ʪC"u?ûKBU9Qt׏K;	9bu4
ȯQK qh8;vTKm!FCh8z-6C;E-o{jvZM(/I2!MQU6]B=h쒙t4SRC|"x?PKX    PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FalconConverter.classVrE=G`D1rdcY6QhR&(3#WTOd/v%UY(6E@q{llrE}N{~3 0ư#8 8-8l
.bB6osL*PAqbJAW9c蘶+Mfͺ7g9"_w(d9VRh[uQ_2<"_rW֊n1Ik'/\
azNkfNY[3#{0z5p_2|xA{lj`11Ϡ#Y}A/5a^}d\,[!>oϤ3R&<S[R_4.ϧ(4*>sT, bK˗-&S7TpVq0L:@ɰMîI$ebHDmQ6WUȐ.r7In)q~rͰk"A20e4]ϣu	]{%u5o=wm
;0?7\zɳ*V`QBEVf\M_lAK}2AkU략ˮg+SMn;+UdWs=rE
U*^B>P[ԐP9}X2UhMqx*/ve8;i@J@X^n)mydTJo7,x@f Ud̐i[3tIzBFdOɽ2#3rn9>j:Fvۨr0ggԉJV닥EwVft=$n"I_25I#F}(@;bx]=v[]Gl<}vLƉ:ik:O.%VmDtl}
zwyoo/%61 },FynH_0~$
X`o~D$ _8'% Q>>	IRN
AlLPKr  '	  PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SABERConverter.classU[OQN[X.APTPKRJEJˡ.ewKhOoїB4s\ZLϜofwo? ")
7d_ nʸbqCb#2FƘqAܕ0)ay0
?~[#e|Tr͓7ݵR6oyyMw0,;fuq\3NͫRv<Mmk̜].Z5>> 't^t
t$LKaPx^sN	H
PrZoE].E6Uub9i4)PЁNIPOKx`
(6<cKIX2.ቂVJѨj&xQE1,5^]nCIE5}no2KM}e@ǒ.U%h`z(jd6
krfSN$%MռN#2Bɳnm
p}r7C3ss;LQZEzBCIR967뵧jkl' 3wXֱ#:-T%e-za`52*٣e6[iDiOr
Ўlc}]b/=edx
\J
Z /#/0K} c$N} :]o''~>Mc`$hWDq-TT"7PKC3'  a  PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$DilithiumConverter.classV[S@6+X@hE+p8<RiRsag  3l
R*uÞ'ߞs/>|pTEW1K*.㊊mcP5IU@uHec&CXC[<!2Ñ別\c`DI+aEQ]1<,o9+7t̪i-tw'|Xx!ߖYgM^nNI_N%0j%piZ)|`/ZkSTu|)RԲ#Y}AiO4H6,[g`U/%S#5),KJ#pzpT.95Ir5d0aK痒y*)4,btazѲ_\[pY\̱0:6x.<
ppuߍhsygv7Ye+֩Jrrj4m\/3oulQ8fj527Gph< -?/
iAv-_?e}&/3\mzzMi']K֡0͵sgt"0fvP$M2i:%T0(2=)Z_ͬf'oWD}u!6(rviǈ-(c8.R$	ґHN&6FtH,-b$;4gñ(܄F6[8AZATQFSѧD\qewO+XTfp;"q#$Pg
ysD-TpA.pVB}P2[;PK9y5a_    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$CMCEConverter.classU[OA,,,Z P.BIc`Pu/FI_hGTXaΜ3߾
`
54[[nGC/ȥOw5㞆W1C**F#Ex9vw9õpzXqotґf6M,{>ûxF
d~`sq85>kl}nyqTv<0
tF:8J5Ҕo,YNO1h/u|*p/mo@Fſ5
\4Llh[nY|MahB\:U:ƑT1cu*˴GQ1+霊y,Oyd,nW#---XbX>(3:#UMg5F/=Wܷ \#Q)#̈́-W8,kYZOnz q	uC.EO&X?a?ZUH6xbgNܲw=*0L\~9	.w'3Vzpi~t|F5j[Zx~u_E
H{d\kU:<|BD=Y!Y5RGsZj4m%fǈ}C)iw7HFʮ@A-#Ԝ@9B:m뎠~N]1=d-{th3蒆//zƈw"Ѕݤ]FROA1ぢ PKe)    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SIKEConverter.classUmOA~
"҂p"TMXB{Wﮄ&$?1hGgOX>;Ǘo fLC3z4踫z5\%@ jĐa
MQS1а(l/1Ec/5g3H	o
Y>7yt渿]慵ۦk]]49#llqhfrȔ{3i9Ծyhy8;orE1ҕgxytOO0hG/±=*&msw-oz B,8("oT0-q˃񄬆qJ7@Y	ʥKcqS:Xx9.HXS鲈<qLrs=Ӓeړ6dŐc 1j.F2<^2DCpXYlŷ]Q8䄺Җ!14ӫIڞo!(/䇙"Md+hlgN|q0uaA]nbOht*J딇+ʪM"?rRE%WH`(CإU954uȯ98@>цQvGQ1$/=nHU(':0VA	
hPz+^u+>T?Ohf*h'Bg&(zF֏";EЍN=dCfHIE1
③PK    PK
    D:U            8   META-INF/versions/9/org/bouncycastle/pqc/crypto/newhope/PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/newhope/NHPrivateKeyParameters.classmMK@MZ=譭Мz"R
KIl*W
'^ygvf?^ ta@бdnbLwg.Cq}u`4nA?CE/<Àk$fN[nJOyf/	WTd}.X(!
p%XuE{9(
z'XEN(X8d`%N7T+}/~o5<D!T̏2pC4|vzi.LѢMFZi`hO(<LG<Rk~ۤzD_8+PK䵧H    PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/crypto/newhope/NHPublicKeyParameters.classmMK@mߵx[[9 *"(xM\j$M&QŃ?%zwfvٙyx}EÂ,QĒe+f<QC?cЛ~뜡]
A6q<n@k,[lmFġ
#z|XC.DB&k~mjbF6;;n^$
x'8P]EpmНaX%N/'T+j~9u׽ 
i!CdO2/L֢Cq֞/(<A{s*<R&b7Ii_ʘd+PKJF    PK
    D:U            7   META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconPrivateKeyParameters.classROPu6@!8@}#:|].K$4en]`iw=;9=;رPu+Xa
744iXUܬ@icWW|DAX'gI4
7 =i#?OTFx)^줯W~?dy$yzDM،d0/H0G͠۴,h֤$8S?y6جb66mh`ihxt.(%p;okz+$fizOQ"8Lw<M	#.љ\Wu>y=zzVܚୢA5ʌ m~E3nȝ۬dA1`9O"-,2r%
wL1EǠX㹒/g&K_dZ!(`o
ٕ.I[/PKm    PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconPublicKeyParameters.classQMK@}ۤIc[DV1'V"6Z"iR((qE^,̼}`0Z:LLa`GNh18Hu]/JB
>o+Tڏ#"
<r{2ji/J2T~(O'9](ݩgì(QBYk[+_Wtq%̚1L/Ve\˜̚!bOI(($7촰J[*h=ٟ	PhͅF6g
OrJ'\M苼BQ.5eJ>	PK(C  B  PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconKeyParameters.classQMK@}MD[xT1*"bA顷ͺH>&?%Nb/˼3o zX7QSG	W<JzD=?cQf&dwC^˩DfRGdpAvp-egɍdpA,/ȗ!Uc-w9ͫ$WBƌp.g?pjp.;M*?bSs1sKuv(6`hO%ݤh_Mڔ;Tma[6fPKꡀ(  /  PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconParameters.classTOP=olkW,!SIi!g)vN1$JH$Q}3esλ?}
X`(+HE$aY㊨2VE^.Ơ<;jUZ#t}Ķ##۴ÓNV^Zu#?bLH+i0[,1BXA{h!na¸^/͠M7ϛ_Y-V#~ĵãF42n
F' QgUްQtCoBr
˂BM1\=;4t܏y'rӛz;!~z?zǹWuo@FUa\cR^iI/$槢 #hp;b0I&rnghky%yPpCzRX\3;q='UG@rrVL@)1tna3d*3d+SgN	mӐ(j}c(Ƣ2-A0#iI(3aObl(PZXLhstz6!~Ȼӌs(_0ת$%PH,w~PKD  S  PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/BENES13.classVmlU~n~wб	XacĎ%]7*vk:ܐ)hTQDf	b(	1M&F??Ͻݧ[ҽ9={{}w l,ac)٩%r)HNK
rP&)ѰR3YK76vD7wvG{"p[5$BTyV ndK840	8x?(7_G7
cdhg!` S@7i:}U{N0׉ըu5N]5N,ZkΉ{Q%`}Nbn;Q'Xb-IF#vO{?yڻ#Eߚ!I
BM+1';dwӐ<1^v2z"!>jE[zDFA>oꖶd"4b1?g\RhL%
?x@Cf<JX ^k6qkMu&cCρj-O+--3POv`[`LwV饔,O4\Z;D*Zx6ܾLą<&ʐ,FDI mUG0Ɉa>@Z34ənF1S؛a<0uADN_e	/VV+PȫdjGk\+3|m30K
xfq'VW3zL#[ewQ:t@n9V/-#?}^Q$mTǮF
mtM.=Wv͘I]uT^nvYNv"|C7Ve*unN#3ݝ9A$msUT'ZOւ8hvE/l,h^%=f;zRN^ncΜdYY
ͬ-lFVV6ae,"Fآ!<Ɇ="װgBq	|$np[<ч_a+yc@da"RxJb-
8$Էhs"Ĺ]{q^pB~'ouq8#>F
%~YA;^A^eia!:BdZ)Ȗ˙n!fZZ5
~Ml9|ݠvo/	ܵ_/$EaM%4bUØ
llR#c5
iH)8j{&2z+XEhK%ﴽr<5:%Dq*Ʒ5Rj;2
HKoY)UPjd>$9H=z1\d^b^!bGN
=\kJw7q]ISԩSQhy܎iPhAƆ4<.ZVn^.eX_PK$  
  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/GF12.classSKOSQn𢡊@PZb%@KhKi	R
nܰ11c\ropcNS $3s̝3|~3+a|2<GG(r#EFU7OBѩK6eKQ	Joof,8eLqJ1-->Y/IP{ɾdɲWB=Ae(T;ܖbѲ%rĲ"5X,
8c
i^-0%Ktwlk	6])a{΄E	cKY&!B
P7r
| ']":gI(j*TJD7{8ޠ%Pvey/JVr%Ll/*!l N+жPy-6GEf7rgHOo>܀c:1Cԏp	Af#vTSGBHoACWT];%{DJ񪉔)ͫ'|@ɹ6PSkJOy
=Yxq)P>BBL}hCуa(e<U<et3*`Zd,d*p֬ !_ˀ+
Lpz?y;8#6vL=5IBpIfIҘ*bw@[fdZO(Kݢ5A6,{:PK0@  M  PK  D:U            @   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/BENES.classoEǿncZ!?!@ԁPJNiX;&$(`āP@/FH8D*qH*Qx8(\y7OYLEqQn\	gkC㡉C?B@GtH"'5` c`Ay
3مMέVV4f#B2C˫|kc\_(-KҬ*ZQ^Llf&\aNn:k7/j*
#cVV7V+W<~yvU817Vzcx.8iq!RcWjoFs]UkV]/<]/UVW~A+E~qHCRYRVR9hu"un9 ;М R]Rf}(8y*Fc,wyD!9Hc$!I)3$+b{vN<=j^;:fFX&qKlfxfOmoaIQKw4ŷ'0jOIIkŔ)2F%ŕNp-N$?5j6RC>F\.?b)1% b
ZeA@@l/P8g=>^ˇoPBx+ ӦӲǝ]vw3[M|-}3#¬kx$+)} fJɦ,A0z.ՃyJ}4B)ۍ6׸NH ӝྲྀN[ S$$a%|,%|z*;,1NcQ	@}U%9("ِ"M2Կ~ PK`  X  PK  D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/GF13.classML\Uy3Ӈuii&LtDa:|MQc\BsA4ilbe21W.]{3ESɜwιs{8s>taP `
=U~4T8_!~|Ϋ]wdOIe?
CZ \Mqe@u2xEEQdZYuJY/UEhTj[*mpkq"4Ya~"9#Bq@՚fl]w GT&ss#8=ܸ.O)(Of{2%/8n +]-3*uL&cM+fKduv<bf>c8N8Q!gOSojf,6257g3gsXv&?=;Nds1Ol8E*y*uwr	<Ik)z_z4}n|.,rC^mU5D
CpK˶W< <vA@_X4,_Xd*Ʋ}U"b
FYŉ8jTb'jو8sC؋K؇$GaKQUU0pg*$c
miOd'Zf2q_ȱr,(Bzv-VtZjGac
!mmpDIĐDTFwBV.V5paMx7ijcH`oX|H3tH6!fdc!E<1f/4r{[wTK;%p,K.$l=`:+ܵG
R%Cۖ^jٖQjGm+lO"~3GGO}.+f7I؏3cpg9F0,y9 /SX</5"u*rp>"6H$F% 7C~R7Anbm69tJmtv:*\ЁG~'
ev*/kd
<^|
M[o'꿐}yyxy(Z[h"±f5Z~f-ZU#0Y-ޔXrY>lz&|6GޫF:N딧%_PK6/v  0  PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/BENES12.classT]lSe~@NTSĹt:҅gZ,m:q!$O41$FBDMx011bNnD}{˟DKʉxЁZ<$N5RVJR$5hX/`ےΦ=pqH@ٚ5Ng	0OdqfF!dd1?=M?
5|>39X
ECml<#F!i
x!ilKrP@dc[uװх6ЁNlB}X£"`FC.<V~G?WHƳd|1C@0/ɃI#0_O`ݽ
X%	ItQ3hs"#"LBA+ٱ|n	vL;aqrf2j+]O(lb8Lg$2@6@ȹ.i
iw	#HH=48H9`Y6;T=vt5V&]<oZnMi;UyJ3b=3&&!CWZЀ.Vn7m#XE
bBM)"Y}vsBv-7خ3P{nRU*^J3e{K}g^*5}ǂV/ܩR)))u)=vt.+4xҢbeNT8<0Ρkeh1ϔFdf[}g68x&L[ثYGKLbKN]?P:ۘH|F7zKZJڹIC{,"&_Sxax1W0s+c4,Tnr/b-{DH>;	ED1IQ1!^y5q
Pÿ	*\wi^0J`m&t_	y-_$̗pXkPM%,knmA~3S*u3UBb3j
#mm4>vDyINWs`|GMf%Ԙ_u:d^TV9w*gLvv;34e#Үʷ 8se:EL4'ODp> suqo
O~ wp%|?3[|Z11,9XDH3+Q: h@h04d,<A,|TPKk0  C  PK  D:U            E   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEEngine.class|	`TEpJ2	y	K$!	AAA.
L9L_8x/ª@<⁊**⪫xW{s$.+tQU]]U]ݯ' y\'<G@ɋ\P/SJS*%QJJ/IxoTxǀ..V]g.H7PJ>tG1!|
3*~N/6?\p=|o[#8LQOJP=%?P#%rO3~WJ킣prQT<A9|gF	WZ8c3jH@9a46LZ!\a*3D2`qg Md)ƌ;s%6e4]&M<?\pLh%.gGMYf2BQ8-J<'(Z6;)YŅKʰv}W͞]tqiIm݂JKkWUeVe_0f;A9zB$q--\
W!OgXdukjjVKUa=nlMubTUeM_^Y6qa첚)%`GUUlD,N)_TRW^P^++)?Bdʫ!۲:G?n }ر3N9עeTUU[=SҧH%kD%1J*kjkcUPAo1r%JkJ֔-.L%%!(넚P2]NE}Ne`FD,i.ZTVZW|{7J6JA#R)p*bZz啨lc^n(QH	3ΘՈUJ,%Lg#r^ZU][RQVTQR;?8HP\lmn];႒e5J@u-Z0ba]I]yU=qDSEWΫSڀh54 	ƍQ8^_*jM(D٢
|DMUU0<1U/)l^b;/(XJa7a'XMі.8-Q*"GLHql42KviŪqVjaMi٘rQF]9mx )`PRBI-y`.Qr%%+XQC)C,
TR0Ugz
ч|
jΰ3g끅4AID6A|nYm]mv#.}*xXgօuea=
XOz{1a}X_<<p/ag~K,a,w	~F=X7{q
,lfG
v
d8U&e<,xXX>
fx`+l@3xIa7
?-.xTqRЂʹٓf_vRft}y]OԶD(R,QJh##T5,خC{;Һ䈪JB-EQpqm]
,)Y\ZUFHqCƞʒQ`KFF-neJ^7rXr#HIIsp8,`^>bY/FOcI/(Yzi()*]RVSE\U7*ǏV̩))+YZ*;AM"{*4;1Lٰ̆sl8׆lXn+m8߆&Sec
kRmH>XJEccLuUӥD:fb,\՚J1^ǂbozqGҁ^!Bf ]H"мv>a<Cw(
ÁuG#=!2@zÛv<1]+-l<HaʝH	@NL}'K	, 06B${aUy'OâqvNkpvB<ddX%P
';J!q'$a4˪N	fBяJ2z	pv}$2`p>h< BX/lb0] H;eLC>`Kh& @àz662\Fj
SNۂK
Vu!C]mc5ʽΉb{wN.v xV1x@i!RP>4i8t޴ǡ_H8	Ӣn~i:iNbZ>	dfe_^eL0h@aoFO~`4hhKAߌp+Roڳ@kÌ'ǀ5Zag	g&<o|5oZ[o3>'I;^D1#2<12:12gӒϛ~',&U,ЉθAIjT3G)LT&쁾SW;pn8~$oSh_
M'8\~'Kh֎X)n^HD:R/bs`~o-]hk&Svfb;g:׬ɐ|Rw#wn6њM*qzQ]᮱(ICEo82.!bCbCkE@\0r,aZDZFoA
Uu͈#;܏j]Maw 
2hYW؁F;|Ɇ.6vOy}jx53lmX3<v9/~_Oo)Øqm1AeZɎAQ|e2k8xІ0;(:SZ˂.AJDtHo/w,0$K,S*QV#Wan,r%H!X+h(oC{Bh4\M$$UmcQ#tǙqAx˪=f<23cm0߃6mm7=舡gEB䳈śFo3!-%B[F5!']h_lUT4ZnSf澓՞lz3$dzӒa8x*. { }p pR>sQG7~7}яh3?=>T	#Y:1,	aǼTz/p
KgX&ګ4a׳s\vb=ǆWH>fOѦ" w
牱#LA8 eS(2ޞVX?mոݴB
6B)b4}>qhjٗvCKuBe@mXQt4If0%Z	Wfʃ͐ΧpS|3hH2LG8wNt(5KYOyR%/:в%m-m/`+a<Wlɢb0sJO2*SNFrΉ\l 8h,8%Z}3	,HG8@+&!q	"\``Q	wjx
[ljp=|ïl)3P'X̖l`+Y[F5%F.OtmP¬I'l'72YKO]NNjٳ
0߄;hϤj7[>4UFu4PјPfxTG5HCLFiyiЊqryvBxI3BG-x3x1j4_UYaa<[`-[ǮB
r	o!:&LG3 #ռA*8z46cԹEFC)N!)]ߪ7}Ɇ=0p!D̙hTpߢxJ`TOw1
b7B	;'
120TG`	{naO&3p?F¿u	p 7d37yه1;ˇ`g?ٯl7z㣨?uضW: t&7ªx=ri	G qey|vZ.ĥ
̯8Ck\6Vc:+!N.9gG"gluDS1W0&fYV8H7uPa)%9Ni,3:яS1v6gڑMz{,R*z_fodo9l:-lt@ufԺ@ hPeZL`Z>,CV hF<Uh`]xF#|C֬)Yki1PW+S[k7Gs
 cyk}7xZZn
f ̗1K%t."٭<v\
۸b}moyNӽbCczDHc+ג8G|\8hbӃ^
w[C0!)HJ	zQqcx-u`_XooO<lu3l!HԦBv9tK!K[ h0BZ~-yZ=\pӮج-;G[jMW¯k3v#끰v+Ɔi8vMնbNv%jVݫtq#ڠWDX8]	@6Z6ȅS*U!RSbAQ[QPW$-t둜rXΨʣYfmzLH[A&"p5L7أaTKLK4?ݻ 5톂 9<2!];-NuVLACisZ+ÌBecqHJoPحq/~37<I`:}:
&,!2ѠM	D$t2)c'wZ{Fi$9,E^B_",CaW_{G?!/ka0Ѿߴ#?nҾc/,_;Άh'%\cps-?vs+
ЦګrԶ{9
]+pG
OӢ!tvny"H	n
lJ~{'/ݕlVɹaVߙwS~_]A3N:5,T:	iJPR2MBֈnXyMrԴ{&,Q/R+mB!`՚myD#:d7vya13OH.dӸ"D߮56BOy
q ")cKz,*7KpOv8J]lOF؛(?eSC ꪍ @}BW~Џg@.ςGa3xfP`5kP>#>q~><G|/wX__#<'B+t~	뎰S(~9`U
Uٍ|f>=1^tmhܖ_k"*iֿ
&66|Rb!يоm]mhvK1|.|3>=g 3˔ya
pҢf$_!jVاWĚ!WytB}b̗*/ب
XW6FlW~\=81',9[Axxw^w;wǕ=T*i!:I,.+hV.ujN6M(Ρ{\3O	Kʋ\thQp~QW+5E |ŝ#H{	);?NL/ke8a_sfv=pfrDuMWNeؚRD_,?jff+ƾ&+%
BE#yG
c͢iQpx3\y5	S߀R&<?^`[KXմa)*{LuM͓u6Z+.a
Z?foOW.?MXܹ8S.Aࢨ1,]E%"%XuWQɔS?oӊm1:#[eoz\ZYXmz*VAjC#3z5P{&-x4kХ_~$7Aw;47k]mp?@9#\&
$gx	]cpC|7|_	8;3ϟcgX
fby"\*[_c˰Ě[f7`w-Ķ(D~Hs5?K?ZpVΏheG-?k/ڵm֌ߴqm7oӾ;	
 /21BđаWzHSַLS;:cõ=0i0ktINV;CRT	O+thN:@f>9(;`ScOtl6H:Ch\g,fV;
*;S3:[a/gOVP·[=wa1@,qhL
w֬4w7*xL	?cyHQa@ͺaEN[!(
SnkFFyϻzDiF|t' gaO QGFw6a(=!oeCSꆦ/\ D"<b$<uZ2o"^݉=pbf08`Йb:%Źւ.Ut5`ܦPgN#tvy].7-m7F:>!8CIbQp8Fp0C\X:[!ƫEO8RL
]YBgv4OaO7ѓh
uo]e؆d$UlL'?8]<'o$i?8̃.1
z3	)%MA0
+k"*պF׈G'JLW2 P1ƉY0U,!Q
sEjX.µ~Q;1}*/j}"\Wz/3<!K齯ыli_2u7lgEnrnz38)6l$ib׻dCԘr4xnDXЁсn-\3\zKfbk9.S?@g9qn/1^o=e]VLBXii{;Fk|\IUZĺQd39↠iAc`[>DpwD֦/(4[bXʦG6=A/)dd,;!;Lc1AὮ(DuW~/	_&jAwO!}X铣F{|TclI4
%O6f0=xķ
ef*Cў3UE~;fyQ	-}?pPo䒐b
#/U7ȡ}Mi$ɇ4JC&ii$G=k/ωܺFDP?#ψM1|˂Jb,(wI&cyֲ6#oy5d>_2;zfgb;*Q=z LVsiv^1ɮtY.k.8^Ҷ 	,*/O%E\J8IR&7V7[<KQ$5myd"RJY6T6Ƅ')T4`p+\eo%S\^DG%)66NIÓxT bT%x
C.@T"Mryߍt@RXؑpiވXib#``v@Á-
A"mOq/<&xƶ&v0!cqb"A'MtZ< ^b>'^euvśokYj=m@#Tj.kkŗ_kOڟ?~!׎c_'~=į<CC+,	B2^/9VI7Ld<_zX*&}wD*"#{e1aLWˀ^f2Kl2[2G$<3✐89DCe<O9BN#Ty,e֬ms/+X~"Or'/}rW^/3yw"eY"KTNkE
8VDl-S񙰎å*vk߬qg&Onł8t/1e+ܙى裡hn\
j õ`Fa;Cd#dtn}ya^)zq݃.~Cw?sb3
zYb.zY,b$<B꥔#hݙ*v]w7O
;yD<nq
£r$'u9GeQ3aV/03
}4D{uf!#Ox\FxQj[k0NpZVt
t
<NCg:M3:XpårwG4e'ގLf轎fj^<QLoz	e-UMm?>-HQl8,8!4r:	6&c0A,qEizsW{IcՈY#3ѠG;	[`\31=CswS5w3[؍<)`]MZ~"3N;1[evѺOi^:%b(鲐Y7
+JR"%Rdקc.J Y.9d9t!`Y#e5L50]BHA\Kn\
U*x;e<%Wu!C8"ob o`Yy+#7<Cl].rFݬI>U>vl|7V'G5S>ȝ K˓m|\+Oj}R٢Ok7g;'/kګ5W#|[J$LϹ'OYS>@y3>D~ɯx	¹^!Wr/~,߼E^y=lXMe#Q-4#xOI/ՓѓBXj]OE̿o08zeN+p/hӵ:0.b4xD_r3+ݬ:jڣӤE3e|R$3 ҏLԎCcG!]CB1TFCt"BtZ5zp;(}We?sͥa*(ї!6\)p9lhki$5zוn z&$
px	
'R	;/D:<-weBG>HE=<9GCzp
;膈N|_iŝWh2ySDʭ)Gx61SfD^_ 35'3Ur2v,UTݭ`7Ħ9eR=Ci9HqCPua}>FKѫ;ۈHu(n3M(g
ï?PѦL SpHH,zgV'wD@ꅓ]qۣprF*\u'ꛘG@_\Su!E<}"E8JK`:b}\πz
Xςz1ܫxA/?7
>կ_S_zY_yGcE4vW9k_șǡWtjN]	?yz<^jKQ"ClV<tP@֏r$蛘5*|[G~N 
9ym)M} -fI_$yZGZՇ%-~3DO(2LЭ~Y:!Ez!La.E/ú&ho;PVxF`?S>~?ӷ3ߏJZ pXݘRTVFK~^xzaۮ">vSR2(O7/*T}oM֧BAE	"eZƉx-c7Z^}Z0FV
AS0#W:3O7v}
Z|Oa~)7tO^nZؔn!q#^MG**+5xXKO4	dU<n:L2jdvj)̀ƠCM}҇H}cC#y{,VqR*)v=j}y)$p-Êg<&I]Zxl{JtcHIu$jj@4ݑ$qeAmkGiIXiJl-mP]C7s-ԙ!^RxB_xK5װXVߢME?=lDoW_ѓEC:12~%'_oc_cC{6N?

]!^U8 c05Hîba$#F\-/,Xo4
<GGzоDz
:{gX
֎BeLvYw5XU󭪙>uT%[bƈ:.;ʏQaMB>enD@_DϨ{vʏ^6'u0{geX
/Qką 
҈Ai9	FgotB]F
zd&i`5F 	,1 ~eLf>F"2tnI:d[wέչ+:d[V9Al[w
>PK.&q;,  R  PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEKeyParameters.classMK@MĦiZx*A^"(=Yi>$B"xI,V^fvfg>v_ߞ_ ѶYC-&+$HM\/BS7*tpt^e*UGC331J24~(ϲ{S4&2kv;g]D/J'2+-abFίZ|Af˺IV+Hw3tNM,QAq||v_-NyؤE:F}"FlmwPKRH'    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEPublicKeyParameters.classQMKQ=Ϗ&M+R8EAm
gl	_E~@?*)6s}O #`k
E
$dec[BvA	9bZyjnW0#~Gx7f&D!zT2H'cZzF
rss{w
¨]M3]-ݵx\[1-3`b[*PTPd8Zl߶ID?l̐qn-#i)C_'2dGS&D6yF>?#8d1]Kv\Et!BzB5hP|Z!Q(5.H@
d~ PKu?d    PK  D:U            @   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/Utils.classmS]O`~ޭ[K&ԹMBQ1^`4l0n/,KGd&Ko 	^po"Mz? Dqdb8#<G]
$H퉸,"mZ{!?fu!Q6-c^3VkEtmxx +-6m؊
Cf(1䋤]NcN:yr?KoFXn9qk67'״--^G8
*4Ԛݲm]tJWug{õU}]7T?	ӨMj˵5Cwb[UREM%=njVծ*<y]V28C+H/5:idtF
_>BvDz*j:#oZH	iYjT>eQvs!{{
oSW}d>Jqz4wg1~!@g	},0BP`H E Js9{/8A=$'i*Mx
9\G	xm@%^Nz)4D}5k_nwNI&H;xzڋ"	cqJ}%"q<˘"DrE]PKz&w  !  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEParameters.classU[S[U69INNPiB!h.EZ5[pА\[R#3q'qMqFu{?7 7܋U6kl|C6:"fM&͖:v'){iƬ}Ɯ<cAG@SOt2>)gn|z6:Fcj=H$ZyhxtHKX8>2frۡL18L'Ba	%( 4=7=ˏi8O%52aڲP}U*!5څe]-VgT>)qx(Oo
dz:{i<ż<^hܴTu|FY\Vz;3RNorM$¤@GBbzl-lRY
/mXF<m0/;i
E##+/˰,d(аT'ų*'#\d&]ClxvDJ5LQ_ޥL1%-5x+F1f`nd&@9_icsM?zsN]	[f DV5haXM![
avճb`./A4\MM-dnD-lZ	+6k:ݱrgwk\OY@|HSxCavU

+QxSaD-Q|$x[Bh5YO2UVyx CJvvZ	ΠU+wڝ~}O	)\>J\ktFyi.6uF6	*P:?J*t}jHWI֔j(ٹRg64$u}
L],p:S,_Zk.t~b[R?A~:\t,@=\|&.&2&I~MҭUM/a6L9uzϏ-i=e/6]2$)0풹H.sO@R$qNNINԥA+A%uTbH*1]*A$uU>I4iB=C2CqgE*ch+@Y;޿PKS.  
  PK  D:U            =   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/GF.class]PNP=
T^>`a5)!%lMRRZ,qeÍąGs1̜s;3o PN"RVEX.c!Џ-58vA4mJ'^bȞٮu1v,evbޕ=|OU2evK'LE7eSM|n0i$dmko7ǁcikq6
<5tEh5teg`!Z-7FG <*[qHRLGzRIDngzaHS̑ B,>Z|]OBMy@&%Y(|3P%
@9<,
PKZp    PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEPrivateKeyParameters.classTR@BR *JP@t*0:#?4565̔7ЧEq >x6M[F8||ٟ,`}%
.˘ƌLWqM1aX"dr6t?5UwN~5*`2f?EBftRjƲZު;EUa*%kkOַt[/q!6`UwlUEp3Ay1HJZcyP+o<6񶭪m(oG;ٷgB\ǜ!̇pCM,(HV
`Y}+Xb]3w4EmŶF*Y1թ#Fъzm^bEêhbjm
'yj91hP)!Z1?9K<!A>50SenW}k׶Uz D_7_?UQ]
N $WVFvO-t~C5b7b	b|"qՃDKȿ@/D=Yύ
RHD|))	H1bɥ%XR`~$O.*<hp	ۚ(=cԶ80ۘ:fetRεڹc#ď@5=G^&
db48EO|ף#ye=Mq'}1z&H3Ap$v`I4@sjXm):pޤb:඙uNr!;"Mv>&9Ak& PKW3;M  -  PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUKeyParameters.classQJ@=MӦBq.Ҡҕ"RDk%q(6D_)(?obu1y}}}{~ÊF
TUt,aGbxQ&;"	S9Y)>0Hztk GW!d3M)Ҙte3̧]DIP\-ҧ<_ CŲ*_VvA>~9JaE%ɛt)f Kb"5ȯO`#l)-C7H3U'E)k$e;PK!O'    PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUPrivateKeyParameters.classKKQWLh@`EQDE"]gUA/ZPZs("BƬ9JfQe#3gK!î^Dhxk-;Z%3\_Fv~Y5>z)>!Y]^	
.jfáJ}a=?بRĵjRr 
珉M7fÊUd5(j#7ݽ˰3;k5P*
|1046b9K2:	[/a~N?eH
^KDq*%Bx#!M|Ӑi^#x<#-<@"nLzlrܝuG
OOnoPKxae    PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUParameters.classTmOP~6RE/{A:^6Hф]JF7d&?h2U/6'y{ι?T81 M,9X(cB	s
yqYƤ(ʘPR+2VG3li՚Bnϕ7NU4Z6
׫syhjnz
MDk;8w"˅	+-|qBM\ƾ]tϱ*iͿ:s`x^2鼈MjѲe[6u~N2{TeA;;FNTަ_X*}Q#s׵+֭N_2eL m荖c=9!*n▊ۘ	ZP!/`lD3*&p"46*&/LŔo:
 OMe4szA׭f;oEwƭߣyxi`(5ZK?	"N6ۄ8~q1d#!]t2#2G!OК5Ad,}@,#;cZs:Dڧ3<d'Lb`7B@`+B%|h8A#>.CΖ6J84uQy<PK?$  k  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUPublicKeyParameters.class]KPԵR{

#(IDʺȫmd17;nߪ7gf
zc7y~s|}|(!@Ƽ,&ÒBf98Vtl"2|d̰U<M/pet}{KD{@/k0{(n^3*˫AnUkuQ.TzZ4)as;=wƃ"8*֑SGB,X1[Pahlr<D5RQ&LɐKDq
t%򩢴VyGSQӐ4\x<#(>C"qHzlj؝tǊnoDPK|d    PK
    D:U            4   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/PK  D:U            =   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMS.classWw%k:67(%IH*ahLbȁ'1kiVbwڐMhhmҤ4-yІmS{N~ǜSzgWel#{;wfk7 <
Sq`#0 )C
8氂}8`;r4,esT1<18F%Y<+؋1'Iq9MɯiUѨ:!
Na=0dsDd9L$%/YOsXޱ]},Pӓ3mG3Q7gg]IԝhQ`O.-juS
a
KsA1c3\L|<W0S3)vϟNSLōHCe#,Ӈc	$FG9dSie&|q
;:9lAd0kAk*iԣ9KeFsĴӹn)a'gJ$+zj֧|qa]ksCN%98)M}̙0Ҧ4qP13IBL<a"]VS0\αKg"kC8*%7T|Sē/ŜsxYn<<\Pm\xUkxy=a8RU?xCOg$ےxGŻ҄_"ǯT_a𡊏pYo;ӇO~w9$uV:ٶJ(ثgMpP10l(ql!
`np&41ܛ&Ҝc3TIe}4ؿ졤cfSWSBOjsTq斻5꫾-Y:
4a0(!'$p
fy0),	uz>9L]QFNz30#;F~licrUV##YWqBg)¶_׭L	
L0T&Zn|I#w~
h#,K#g?B)ZъnQeq\JzU"WɃ^PA.f;ҌTpێZ6Qn({-f[+9ٚHqԅ^{25L5Zx~Fbk'Ձ
ڋI?<MծY՜Ԅn%O⏄rݜMbΌ>-&yM¤ch-([,?0f4	v>Wn'8<k=a$uGtr,eχz~EuW-hDM-eVzAFgW>NjCU؅/d=0с#&GEl^CX@埃4MW^5mm 7JN܇Zl% *ZQ[vwD7Ҿ
I%@Ӎy(͋R쎣E^(ɫ=0:i:
MKMؼr{;YDl#\ǆX<[5^Šz rş\K|QWV5=Fґny
ۃ4bGe"viʶuE4tTEA?;HU$o\CAH"0;+G[(	yh ګy=\``*wܶ,B;b\Ò\5ts8tKKxRxRyr6"()Ӵk2O&(tJIAAIm8
@71Г,J??Q/8Ge	6¶UJ/$Qc/>:GG7u=r|p]~MSO1ߓ	iU/PK*8=    PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSException.classN@@ZʟXD$1Xrqctn .ؕ`MirąCm9LTl1jmQȟ]dwep{'#'X#{-YXg0+!^xBbnwpvC۹vlMv'ұM(2J2Xo/lky>(d&W	~𣢉<Cr\EIOCB@Ԑ!P~Hzcvbd
qo!K7nl:Pj(+P~
ꉿ}*80tfu
3~PK2I  i  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSContextBasedVerifier.classPO"fkDkTo^f J$6rs}`Ѝ8c#-/,_-aM69SMY'%)sEz,ćPD0>8eBsNeMy/Щ"Y$VaʺB
Ujxw{!xՎPK@   2  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsPrivateKey.classUmsF~Α,,y%PMI[G5Ihhj	/\=bl9H2|kC;$LaX|iyvϿ \LUgR\I\1kR\5t,bI,M9V
#XՐ.Xp[w}˵.CzVrT*ׄbV܃}aꞹY=%c24x%ܢgް_fXH|0r)+ef3(=0a;"߬ck2V~Ѯ:tjOYCEnoRQ6mzµ[pKjD{  N@[̇
PČm3$fhm&oD/6nE2gZ`Fĺ8{j=.Iar#1O8>Ǥ]4sl`SC-
wA~	hḇcBxtS.=s|u3\;a1kS5姢igY{d;(eՐt¶G֮
/9\͕b>
('Rv@!GTmE'àMXq]=M.Sm_|?pkmböYY&/Rꇗ()"O618GϊQyUi4*okz2k`t=Γ"PIOǈCPCF\9DwAHegHYZ_1!iYz}*oA[T?G8WRGUK|DA9yBT
#F2f1['zJ;M[Mŉ~PSwI[Dvԩe#"W^alPv9nzdm$g/S$$iFZ(]hx$I%{0]&95zudtsPKPb  z  PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsPublicKey.classW_^YƑFͲl٠F16<lYL20̪a_Ƥ4&4&M
'?_~0,g̹=瞹~SAA	9<.T TzWT>~ZAo(3ɳyJEt*P`l8#T1KlJ8Tȕ+Iy0;.9/%@RzZ1\#-PnvJ&t5hl"H\;j8.9>i1f.L p(i%BkVkyBb%Ǐn$gݠ,խP5uk0H5yZ1c1zbCOyFH@=r!aܤm9
.h{|}|,'I@a&%$xٌn:Y@pHwrJpͲyI46tנr3y t76B/ψ@+Wv&0ڒ2wN#guvu54:D5<z
{}[[l2ǬTƍ~DhQ'~ix-~msG])G s
〆pmY$u
oM3McP7҃rkElۮTNI -
ocLxG)pTz}}Z|#\[4iS{
?j&'(T$\:4`ZJ˔eܤAC/lJq p".O$[BbmFx*wNwDC(UF-c=( iS`sM]#R0mFWF;N.&f70+P-vpj0L_BwLlM^svuϊyEIkqIqeAbus(
!B9YCb."y}tD2	|=\/Rg[` um$́59h8nWUYAXѦxg}66餧gcU~h$	tk#c#th5SDn5岬vb2y#kdU=-Fפcyww7;^MM|NZa#wгMOvzT߉{mgR,ei˃.ӑ}=[nl\LQoTO2M`ˡ}
¯
ͼx>^G9^-8>D
sFAv$|IÕI>SoH8Va+
"g;i^@:)IɏßCC0|14qBқIG.?\;fOҕ>>SMcTR<>`,Jz(V<i`CGP<2q?⾊1SbQpb{7	[ti\#/OxwCɩ/BHH[		%#8H}u
䥎6rGhFRP@CCR
@7w蒐iFG?orYYp?E|GrQRrQѓ[WX#9ی`#}LVqx
LXײh:$GF*D^\Eu`  =>ѽ#pEO\|1oa؈ >2VR,2fkS@0T^@aϿm+<TcP_<"6z9V</ПɿGA٣wX{f=ku)|MZRRSعYL^b=]!/c^a_oy#-4/3?kn/O3SvĐdϢ'\FxWن^cxqkϙș{8/s[|ߥk-f-txwg;[iA҃PKO(    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsParameters$1.classn@ۄ1.M|6;@*ՒC[qĕuQPqx(4Klϣ??Ŷ	+e,bX5qM;{Xg(2yP<OüJ&tEw#"'N?g#~˞鞉@88E;Ar1Ա
;Z	-:h1qu\rPqd*CaY*ز5O24ϰИjaĕaqaT7w_͓/1u˨a<RzΰcOFgI-z"a0y'9.SͰggęDcow{XD0Z4psd(ī }%
(>(@
#`\<
k(\B
[%VqDתy6,z	7IgZ&(/PK!2    PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/Composer.classV[oE^gI[ɕ配i4Io)mq)vW5E*(RyW #j];IX"fgϙs|s$.
:vh-|ӱ+\^T8&뤎=:ľ _eJ.u<#MZKWѴZ|bxY;o&&j&ٴiuhNg͙B̟J$3)k!gV~>b*Q3f4r*/l+Y(D:86ZC*wlwcUnS$
3܃E;ʦgDx"qH n\177UEdP@FU8#Fd1
107%$g)-IxYOӲˎaO<{	mIqq@$C̜֓E`VAL#.9ǃ8!s=ըKf|椨mJc}L57mjf|N;ƸY($ybKg6.;	NpWg[ BU9[8Dpko#r+;[{hߨ
<!4F4rKەk7z;Cj	Lyܾ4P}0ZWe}h޿WJ61fnWtw5׾6ͬ	d0=d{>'㑻{cZs=6mO&2nhbwP.
& H$V"N;N
؍},NB)zElK{}`;"m>FF3
UOPBIt~%"5$ҌD"ҐD)-~UxNvֳHqϳ7fPH`*pr[~Z7T.RKH_VjauH;Wp[HL%kKF26-釟"
JV'_g'5@^76H6!fesm.EG}.m7i*5G4l==FziOx(C݂g$Ph$}5Zi)۝ݷPҟCK_ޯI[E@OlshãY%[N:Aeig>!W,b
/PKIښ1    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSPrivateKeyParameters.classY|ՕL˃G!"I0#؀	*4P'$3qfmbZkQA%Zkm׶ۇvvvêd2﷿{Ϲ7 fH1PE^Q-䫚|M}L+>,7U4o{O>uGg}-R7hXć ~jg>~nCޯ|׋n-m?o4;{0>L}8uh鯚Mw|;Ux@!`KM>H!OR(&%jRrⓡ2L'
IЙ#Y)7}>-cr>엱\MkyxZ&h2Q۪4A[l>V[
dLӾ>AHǡPO|zkdP"J{9)(o^JEk,AQktM,JXEg7kjWǻbP2nv^
'6w֥PZdm^J:HΚCӡ&"֦hG4,xٵ=҂OJwAkҾY

gGc\_pҕgc<By5Gc⮎Vbyhu;[>LE0;1]ԑƽT+KB0|qժU
:\lQ.:SxRp]zN:%Px}KCf2-4 &0~le\{)ԪI|چ\DX64TiL$Ra󂨕%kH{U~{E/J" %}ROP֯HXeVG#Vظ,Oـ2>ܶ)TgW5
d8o9˵*~7^6!2ǐ&WYڏy(>4auXÊ:uк+NU_#:iҪC26\'1'l*4Z,J|Sxj#坧܀pVk+.o}:_bb7q#n0щĔK2)tؤڗ@ģĭ,0qn<MeBMήTk*a:LisEn	cSVvc
ǖD`m2t0-4e2z^"ڬAΤŔxRKKmief+,rSើ8:k!,+ּm,Q@b#ɲB++LR3)Cy	jS>,N5Oa_Nd1?uYW,?3SVKX)DLV֘x w	u)&7Th+M@X ܕHPTv+t[5>{M܉w^w;S<A):*Ã4>SbgHܔNN<V
jEr$LIJʐ.S6F&S6c)krhM,[)bVSҷM܇c]s)'ݔOʧLC4.4,|Ɣr){MOvK72s8`ʃ)'CxRp![@)\+B9j=8hMyTxN3Kٶ$^y\D<j3PҊ&h Z64j((~VLc3ThJ{q|?{S]DʊdԼ-f' 6	t^GFU$ΖU
rKͧ<"{)^Vvq1HX'rNqb*E"&~@bÛ~V@GfoK$u1pi[ڜNe40?U
>+OPMáX,
tI+ KL,Jj`*\=HdaRS ιQf<--{RВT	
DBV^!߀Oy=H
[:mFݜl僢+J0tL<NtjV6~ PSq!^N6r9sys/S)q5+jI}qyP{%91!AwQFj%MOp	%ck]|#ڦc8·G (,&XC'^(W5zLwq; o;=/b`QIde)8VACaY&r4ѹļut;.ժ9]I#3R%)elG6t`Uѹn,Yj*-oR)tT@໔3X*+hy> Q6<aݨ!O	
y1ʃRߕM兖|L&W3i+Oi7pGx|U
kC;fgyY9oL<f<<
cTAIGe-'H9g yYkŝ	d?
h0scpq<qJ/t[\>φ6d銩NRe?b}@Ou-9ɐ';]4!JqKCafCY6:	M1Bje/a-"Vr3q?*L\1d6P{{+M<4/gq P}7'dҧSmmʪoq]1߄-e:{ p+ Xs'yap[F,8 oE9Q1A,Ea$ex՘)L&-`kudSaK>y`Sa*yF䠎06O_˼yY |-5Q| f;R"g2YsoM6ͅK(I!},,vl'Jm=nn00*z0+x**wc #q֊EN;]^v3]=JF+
{0J܉|m1+V`LnVT#؉RXwڂуG(qQvx=fz	&aZ0K0Sx6콒X6DƘp5uj܉0ǰ+Xx*˯]ߠ1f[	ix
.nOwP.\Fb~;]lbM>.N
r!Y!TUlsF]~{3Uh7n܉2C]'
ʡw[a>C=pqR0guF[D^DUfaLh1I`[PCosRgsG}M70%?aK16؁{M$?gqB~q
`']>{ӓR`3RZE<:W[݃)GljrG?ϖ<Gl(Gq9MWaN31ضh}AOj큯=}d?1`v;<޽D'	8OWˡnY.R=Pey<p+
x3ϩ`8qQ:T5<y~ÃҤKU9
cߠ9G>D	;s~d(hj(k:M^׭j|>zVy[03cN+^%ťQ1H=!>h3J ^gY5
ngc~A%W8y.!jOdgL_GrN)</2}F
SyJڶۯvaSsG<1wDB~3ضeX=y"ϣuBNttESLȶ;q^E
&Am\MDCVSn_XQL[_\`jFcߧsӄ+?Kzpi}Fne_7	KMRJXc/X˩;sku4;vp=gwuֹh'Ft}]O+(߅eS]Q%MЍE܍XRڃ+va)<u$F7du<B`x03UHpm˥+d]H< ~<,T) cwd~(S/e~-A^wC&K"/SYv+<̗I,X\.e,*y[>U!\~ku5Qֺjemw1uܶ#f5nN4W7K)p\y8E9'NK
ӈ;03_,}>ÞHYvC_֍֖
TLV;MòßZ
pZh̸z_X*3I 3n8XUh[+lؙH-L{O,valhو	e3&2o@HrV˭Q6ȧww	zUG?lS(<AK)+\E[T5ux*+̩Xsej;\EȖ#s6u^gɃ#bFPy314Dry܇<
K*[J5B3KJP¾xt3:<Ꞝ
=(Ɉ+(o>$sFpi-܍W}ˁf(?1[^Dr~9|e̓Wp|X#B|򺽿p
7;|W-I"g2

ҭ.?rnkFd偛nٞirn?E;#L7xjob2I7\#:sew,6_f6ͯǎ3NUN
	ջrjuh,7:nnL`n1ңf=,kAU=w3-Gjq-O}i#nl
e;t-pF?ӜBs+f3LN|y\W-Q>6.[B;;s2!u)p82i88G%0~m7Z"=Nt8bƅ/
2]
+ƟD)yǿ:Q"cGi*3PKɅ  1  PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters$CacheKey.classKAǿ/&X?jm!E<("Rzm2fuw6bo޼xk^l_Q&
e`wyo|vq	`,<uac焴n}	e?]sE0CihdBR8nO0Ujl="޶L#Dȝu\!zZ2&d[>!_CbܫR#Ve_
JOnyAG{F 6D,:*Q\2ͨK7g`yi*#L
f	0{CM.#/mP¸Wf JWx nJt29#䇾"G☮Z2F<j}8`Gc RdCw(=FXkfۓ&kMSp~	PKTu    PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSKeyParameters.classeP=O0<@(
PLw醐 	Q>"ת8"?	B|g{o X1(J kʕ;dvzND2D#2Kp*0:ŽcBNyjb|.ęt)nc>C_)OtJ֥SN4a0c#[e5J52lJRd֭J@6Z*J{kQ	v{`/tcX6lǰHazrSPK    PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSContext.classUmsW~nx'[S&F[RkH6
&XҙW	~3e:tlHd099<sxq$U&@N0N#/O<SP
CŬB๹p#װR]/S33Li:LmtZyzi8溹kYռaۭtL`pR@QdĚR*ً
m
3㥑jf,;$0<_Dq@+Vl9
^U;
c7(9,~Ȟ/7*lɜU77%2J5zAUTrB&C~aD<(LaB5ɲ?W'90Y?	񏺗doBǘX:<{a''hˍcZaS;mzu{(XHk6f'l$U̮OƪU7jO!lJBhesժSuM+$[
3Xp0ag4|sゆa	Y
)4,3
w]
XQ[	0}(-E_#!]KnRkvHfegI~+0!}~~> :誃@5
$b3RIZNPijK2C%ijz)ҦE^[OI9%h D&=ɧ)VfּIzfIUڊ6TaykG]DҀSGsHtn lmn#7CFE!s5.N?5ꧮrSN?5觮oQu?5>~Gf'9a}wݏٺuq.4țw8D7G"/ǟ
.NOsښtJGa8a'}aMhxA_^)@uk"ͨ=_y-PK  8
  PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSParameters.classJPbhj6^R\)nW
-'RrɩзR.| JKh3aW 'QQzE4R٨`-z{cVp܉b8t&H_ѝÝx2wqrL~g^s\~aրx
z"[OeW܁lc!|'QfqK/ к4PFEsL3)V=dP:Jt2)Ԁ5R^mP(3?E<By k+ǦְBmTRdK
?m,Y'cReAjd} PKX(M    PK  D:U            @   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LM_OTS.classXy|T^fyɛ0	<5d(H$d"
Qd$3af*n.USb!ZZպԵ.UZ@&G7s{wι/صђŉhu4r"11;BB4mY-5buv'8Sp؉pph֋fsEh6,,"\,\"Ky?&Yx[p-ht*\-Fnke\׋B
2nt&'l+7;qnmBmbv!WCƝNįChVD!}%VI\eH<$tKw䨬XT?xLcfᢊbbDˉ.AWT/SSυʚS){XUQ#HW9~<C
	dܰԱH81K3ykY4KR5m-
z6k0/ {J++'W	3DU4XmۃxY/j],
[ѢxQUD|a hz,^"@peu8Aoe#A#{}4o#z,54v	AO«{J&	{tr]78pc$hъ[ӑ7=+Օ֕.MJd+S	8sGju9:V"/̴TbmPoM&|F@ss݈'	G擄6Qb@7GbA}nXDnVUuZW,)
v}=ث~A> F^]RHPCxX#
GeQcx\'*Ug<i<YsKB@*׉N]W/eqÿ*5

2Q.={e| 
%'Q
>>PcSȔPj9oޞR#\z</͋Dy-DIXsq/|_+G5+*؇):MJ$I2W[9i,ZаB&$d
2JIpO%DƚX'nȲب'N1)KDOVا40ݓnY-dQw=FbI,)@`LӴr"?=Ԣ9+Cz$^c%iX~r"M0	5(A&4)Fr2 K>akhOqatj_	TrT18S98!psHk
,])grYx7
8Z==ԉ&F]
R"7g.5xG}GzUoCxS4+"p "v)sÑ m`77GRT*&K9i %.Od
̉+y@cbޭog
VTK*2,
FcZoogc:ԲzыCy"4,1#04:1B`SIA@Rh9#ͻIbʨ_?Ү}>f!ae|Ǵf{A5?ѓ'z}	=߰	2PF)z.HWOHCWCא^py'̙ZƲw@	'22:ɺV 4ͳ܎1>Vkh]fNWmguw
M|sH(d
qR,ˬNdV*,>jv4hcU۲|..XB6ڥmݯ%m]{qMq8CxRi#dLe?^,54P2$I>%'PqFR
#Nکvd]Ȭ
璾;=uoq:(SdL#L*(]p[]Љ!c:YNİbflͶg'T+zv참Gh)˒{dށAVMsX:1}lVvY*jf4&5ٺ
VЉEú0s.56jvMh #vGE<;pFuN]Y
s+\U,&lO:7f63eDmSI4K	cd6c11Q˘XBܯ$Wk8s6%G8_ʕPpǱV~9WهDa&-u2iG馂dp@Bഘ>H
ri N9wu+&3eŻGp&wb<1nB}FlZ4]X@ٺ0FH3g16:\z|>ņ
S׫#~t>5^EWoWm$d<8@zpɁt;A͵TZƅFG3:TkO`di" L:F`:eC@_9oe٪1\&Z)ބ=쳉PJh ,jL5xs#pr	
~)~@
J$tj:z\ބс{p3vV@0u 3o@>l 8{@&XhD. fp"2ncW.ɝE{
p$WvaZoφ5g41
	Y<`̑&q5QݛM=d58j(50ޏ8Sl-L>Q5&L
3HLaXq&܉b'_Va88Jݱ,?xלDĺ.j=[vbVAn/GQD՜-DNٚHQJ]rL窹P5[ Enee-%? bJ2}66FsrzR}N/;aM0#\ySk(s,3ٿ$"Ktˈk*kD댝7o2Vb\x8y)<>>·\/qTPoOj`?2F枽6n\\-iΙA-M(JFA.1l/PK&6    PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/DigestUtil.classV[SG2/"zY`""F\422;1!-?TRryHR|3W(ssN翷ŷQXR]0EHd/|,rQL	1_s!قOp]|\MJB
%(v0w0}	$<J^]4@eMIMOP
\Mk9Cq*P:ዺbiҌifȬgՄbÉtjxaqYpǚjOM-hH |mezMhL
4h6fb~YeHNuj9vR{ں9c3#ִdVP	}y["+.W=[6dZ{N'H:OdRƣiheY
s=21!	d|EvHM^=Xƣٌm2]\)"+CuWSu5SVgfeԂ@tlR
7Tgm!<#'c]oD*t[02@|pLg>PqO:mNWx6$}	a.%dxd< v2ՒES8N"L/")E#{E8ԧEE.MKkݯy9h竪N*J2AQpѰԌ3xi}㝼'w42sWsV8pȪ+!V
k%6lp=6A?:BZOmk"cw5?诮iƚyU2iK57"&'
CuŶU&Z%mSav5`c+Vt=9*F䮸1;C/!u	_t@|
!~َsï93'Cai_W4D&65F&j"f&KxW)(\&Zo~H?\!0RHe$Ηئɶc|_d8Z}S0Ŀ/q=L ezf	p It1xpVnā	rPy?yUqL[|Bю;K~G+|C_Y3X7GqוzXѪjV,cYiCF
zjHFcG}zΡ~<X~7Ӄe#85xYr7o^WxF;>Cݬ7ƛPK֒    PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsSignature.classV[WW1(h+HECFE
U	J&hjzLL[/j>u.Z5UZw&A@brٛ9_`3;]rKLA'.&Rݾ }+X @Ini<@
*x=CQpg"cɥ/p\N NAi.%
N+:.!aك~+o
)-z4{&MمcEL.Hpr5[nD@E_=m[C//k:B, T%Ҧޝaߠe͜)jCa54s0zXO9mM;'=hjN	^FZ=D@`ϹuҖSPxa,OƐ$j4ILgX4S*P
O)NXchcޕLj̧	*VQUZu/Əb[ڊ-nfNcZF*20UXhS5!,|"4Vp
⛤wr*ZNa22SA^Y
4L7}P3:|F7
,'Z6;C@ʏs(xT\%[Me)Q]ގw}\Q*-Cc`s?(;i#45AlktUVz`
x6@aq٣/8l9$zewS('[`ԕ7p_|KA޳6KVgL#Jιr!b|fS^/8mD̔M;10_Is'`*+rU&-pYJ}ǎ
V&KlJ[Y4qϷn̦S}N}|PX_	d'mF2ti)ǲ
!քej4uRBaj9Jwxfznu)f=+P}ϟrN0zҎg[YaX|? A|/+CrPkGcmTon
ﯴsXļ"̡bP=Wf`&>]CenqￆvE(LDs2)-EΕ{B]z#-cPek$wｋ`/}捡jq,HF@a|uމ}\C5XH[w7|1
~\FwWVv.`A*jXI^YZ;Xsу̲C\ۑWq;=b2z(RPV(h`C?"
l`~kŦrVP
J_7Tzku3<y5]OoYBPG~{EԒڟ܌I"\G
];$&*q,^ֽԽo>nD>s;Ɂ'i 	aKrc9)*"gsVPFK]Xni_l(Y~jBʲI01yNB=ԇ$}ӽ/HY7sVQ'O(^(b$KI5pE^`/KX˜SÙhvK mk|%ҝ>PK)Z    PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSKeyGenerationParameters.classS[kA&M7M[6q +x
*
d3lV'qw⻏>((R.R%-a3g>s?q:X԰ǲ4V&aUÚ$cP".lcȳ6fmA|fs:c]w=W`xT׸p3voZ"pw2`lxu["x[z]:CCRm0	h/pRDw8}z '\;^ѰQy\(MF=lH).oNΦd1RxaǏdh	[!<A1v
׳e"Utk5:q?HcnLL\ڑJX*H
4i/쐒¹Cuzyz2q+IK^@dndko`H~ b:sZ+rs&y(IBgC`Za
;`fuNFg$i.A
g1;٘&ɹ$PKy!    PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/SeedDerive.classS]OA=]ڲlO`Ev/Qˇ ԈJb\I]\e%j Me3[Vizfι93Ǘ] 㸡'ZŘN	8݆38x4q^/(F	!\aYmͬzs^dz[ʬkNY6g	RX*LZhr9_b.:].ryድ1Wl%fP)jOʉZo3AI"4[mZ'!j+Yx`VՂ@hYE˗knYbCHUsq WtХ[@zu!긆A!AئSlL[qǛ}Z*;gvN{U&ǦO!Q1Q4c3fuẎF<ת&n'}|<uГoh=rJhJxvYir<g9K吠I,%S+&|#YKc@+~9j`dAC4JcHo!`߂b؂q^:E+khu uDˇ_A#<L!*kơ-4h2bBȾf#CKGHz"G1tctؾTzpDj)]";1C+c}QQQ6PKF 7Y"+"
m{;v\3AL20Kd=M@~iJpݔ+ho>(3z45XEĸO;Ro3&Yw(.p.^=$?PKJqVG    PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSContextBasedSigner.class1OA r(%am00/TT:9vqw_{$Kb^1> Lp2ahĊ((0΋F\cNsVѩzpG)+c96^w)b9ݗFl5n^<kǪN8 mߙ09>pU֨j-:	Rg5y.`PK
+S   [  PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSS$PlaceholderLMSPrivateKey.classn@ƿM8/Mi
HU!DU8mܑٲYjS%{.x	lT% lY3fݫ?. <*X
\ŭJX	)PQF[&a/M<e4/qgamOl. s%[:A {wVrt<hթtOZ[@uV(BI11\*{QD:T:$8էWg1
J@˘>FjCOyН^TCvW,LYqF3i.rVO~,;@Q_ۼo?|tYn6+_y_QMԯQGhy1SE~|s%,bmTYnPK
0;  =  PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSPublicKeyParameters.classWC
ra
Qb\JS$R7.h"y82΢4MWӴi#m>hKڸPi1C>ɇwge%.~8ss7ǿ4Pe9	8SpZ#+g4h4Tig4!0ZC~4l@DC7$uT5#&	ʖC\!@RѰ(Q	)|U_u\sM*-(1~zl"y<5S
ډNYtb?~!%'?80?n$	1ne=Q+<_.-}vTPZ`jbL0FcNJ:.
7&
̰"c͐rOGV~c+LEo+_
q'j[I*FAJnP彷՝g^H1
+dcFr,[!T2ҫ&bZfpLJ-Ǽ(-J,EKTeLD w--g^xEU8d!?*P黥:5{yث"`붨?d8F!'a:Gu<ץ
J.aN9Dd+7$u|Wq$SM?XZ 3#F`"0-'B
{mI:	#>`:cv8YU-Ӹ&XOSq
L_ѯwꑌav,O\]:13:~]H;^pP1}I:>
ixLC঎qVDϭ^#iOɬ	zqYK3\F,I%1RLK3=Ek#_rYYYTY. 9<w'[ kKTʉ$]$U`7M*\Gz5,
*CeNSH$&y7ᜎ:|nwuWA×A"+Ji*5/gIͧt$ˋ}D`.PfxQdO`%P
3ʊEwU LEc1
Jw0I#BkPGPK]2
y9xIE]zVS}-}In'f٬FW+ȳsBpYF5WR9vvVv̖L[(-,<&ҏ4/grԚlBg*ZrĔ?X=3íA|@<2]
dsCቩY }iE
EM?<Tn
6;e74~F|&Ns8vr}sP|
7Pk	c7ҩ7	VǷ|m"6p$E>$GPQ,מilړ71 umo4:<ІW1usЃX?o4*fHU5JVͣh0I
;mE}(NRW^Ts
'&ڰ
U3|ExIъ~n8|=]з݆WJ@rJ*(=QN	=@ـV;?Yop>@Lαe. GPKgWrdE}6N_{3tT/Z:]xJgZ)"rSFLK;?pQ|vAlTeN^XUT*x(gLεRVOucØϕٞek+]ege۝I!pn&$ilIavE2v&%Hޭtyl4tGIV[;pG]jJCi"f]*<۳N6aI&Ty\G(	2\Oȁ|VP'HF;ؾ(uSÙҥvz<`{*24ZDZ_V/v!?ӥ^(?x5:z//ǸB}/b^Yxx5u
'tiDm2Ӄt6Z*>Ax+Cm]qq/A0'PK    PK  D:U            =   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSS.classX	`&{f2JXt@l0r( u,ƝYH-ޭRZVj	e֣j$ĀΛǋ>y Y8`.SF&M
r4EAk*#@65?I)+(
#-fL1dPu܂CN҇|
]`"h׋BHVp
FqݢV&ۅ;d)Syܥ`&&_@FfGoF"mU0ѽ2(>pe<$	-1=LiL&zzQB3ݐO	`Ʌ܋R1]p</ϴ5z)AHaN22YJ->N+Rd3fBh"ZMwDQaoSɕZZkM=mT8!Ϊ>R	Siz2xX#2$x2Y9RsDI%xZY

]2,'xsR33ie5.ta2"`R1a:szVSa_9z3MxtMU	J$IGq>\TT<f;H>Pr@%_2b'vMB얱Gœ!4˴s`픣Ȋ"J6;0(%c8 :TpݷqHaxFųxNxNcI:E:#V^dS)6ZtLbT4̴^-1Ƌe+B2ux>{x]qHBPLPP
?QSLpp@ě2R+ZbIrq-Ǜ*?x[(06J&z`3A*tǀd9hZGM	$nt+G9%ZoQ,鸨2f<Q4ұ̹L_5湌UJ%-KI,	[z41爛pdG_i}dO6cp*%Qpr7(4YmⲢ>2*.+LchRR0=6\QW۸/T\Nk4vN
6iu_d3MpzR!CQqHC]pa&+_ڒ*bgu;fR;r oP{
w%Fq	[Ǎb?pR֪̋fg%MC^%	G@쫋aA_rLmM눷eڊ¨SiBv8i]lBL6p7}G^[2OޜMg2rW;l<^I)a3JcKh¶Vؚ(fc4	̆Z[;(uXRY[}c7hXyVHQ`MDNLœ]T&;K!{TyfJVSe\"QHzlw醡5Өq[].<ȺC-aJ!\j(XtX	T5.a`9}DY~	"	ݘbcVS!GX%)stZC1c?,欈o^d)클Js>G%Qx9
;}\zftÛrUͥ+2}eVo}{j Uv70u,JǌEPe#<È1>ۻ'u㽹7cf{@)ۍr>=XIcC>
wb2I8©iTa.t(ŕ8l,޲gq<
,=nblz)MsᓱLFXF+`

p(/m*ݍqg<ܱ=89cW7e+;\~pMtSim=y Du
*M:W:9DϑQ SgI''.}Is<,1)Ť(^I]N~.DN=(t={bP;DL4k>)6ߢ1Skjz>PBO6c+݊(xa01z ΀E%Z1	~IB`:Wv\M5PzifrNY 
}UO{q<gk-ZdC..hCV8̏UFGWKB4rx\(u~kE%No^L%u 1B|rWw,	x\eQw<1c'=|v,BMj#1naA,y'qn&f,=-VFd؏V<K\ˋd&v7zp}XƼ{^lusX}
XU̳<B'Ee
;x\;8g
cVE1={{W	x-gG6x`6'B^sCĲ_&"ʕ!Id"oݍmBy0.
5 ~*.wPq31/Rt.F	p2 t>ڻa`>ECi30,<9D˸*anEn|C(6FJ>Y"ʘ>P	.RX0rOj&D?CS
PKF

    PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSSignature.classVS.X0RGaQMaƘ"m@6#iy$̸zL
LLǝ_љ8]Ǟ{wsνQyцS`@KqZAX7(%xQ!g8oz-D(ðVp^U Wɋ^aLw..)^57yCr\KcbB&!!ŔR

Lň$l搀Ąe]cVz"8nelL؆LĂlʶF2DykzJ
Φu;]sq񉄙{7nV8+>MamLلn͌1}S-hhD{OttsQ[MGvԵQ;kgX*9#gjh5</ 3Y@ɤ̱*=9e؏i")tʦc@B\AiQE i
U!
l	+xRQ;kIhހ6}B3[_33:$kCl.WU"(*k̬Ec!5Y[KMxMŇT i%y
~Gx]u}lR7<,i-I+,%*g*^B7UKq\[x[;xW
B/GK[So(k'X4<JA=~+2z)B>aޒ)aN8Ԍ|P|mہ>SHĘ5紴m=j|X#owȟu'ɳ7U6lN%f0v-s+rʙո@y+Z"etFo<ڴo1I<ݦݖ6<xZkj|dZ%8:bouJ,k..֭@oPB8BAvmMqɣ@ۆ	52#@Vm2hYY^{j4CDx'?"6ri͌z-g{hlJ/^(8MkMz;_6狮
\~MAy(^"p;'r]PU`jF,-В'e1<s(yp(/56|%ե>jʆpu]|xe_uo9oz"*=s8*"(]F(ٳED
K;x%nZPI%쓚?">exݢ?pi&.scD
9m  qoüڎ}pk1EgK}xob;GE!x'hLa)Ng1q)hY!"A(yC.MlQt=0uk~(e=ڮުz'LLno; ~cTq`D$ À܅6u.ʿ$Ǩ
?t({pę௒Ir:N)adIU2Nt_$AOPT<³ugdlk'47LJKxڀxf	
goCL:{7h5Π{X~ۿ\sjXB`İG$xA6^.Pt{:'9h#ԗׁ4#QxBd=&tC[>	EB2!wiBc$r},˫ PK2+1    PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSPublicKeyParameters.classXNCa9l6YáB6PI@!`lN؝bRk
"֊mh!Ia[{}@mMvN}{ZSzD!cH1{O1e$d
|VI)Xb
ihqHAF7÷*ɸCx)xw1GA-߫`~zX}@!zPa
`u\#2>G4	GqRcx܇'d<)UhSbxZquXKjqғ=%LFf:h)#Hrd2F<Eg/Z$mVwdXwwy	%mz%x71:	uAj_K̊VG"eiwν-lhhx^=bԻr{zE#yȾ.m&Y$(Ea+f&RPD
R@pS얰:J	Fyp˨02Q;xF@<Y!=%֞ #@pJ{8yi͠y"BrߐrZY6bɤ6":'fTLX!b*!ʍҙ-9|)>\HhV:CдL=C#®d/
(=f:7kISE;SU\7OaTѪ
4KX`,f,#1zUnVqVc*1-T^B]T4XvS&ܠbKC)s*^y	KazT3Zt\OXSyHpn
J/^%/gy۰]ōIe_WUDWv}&*o86[?Ta m9F,RKP#؇~g_i7I~%޿'iF*Oe4?aZ~;otK: Y>&w'%t+ƀߨ-~u,^>ڴ>C^LOe'uw(it^N]$)mŌ`*f^QDنgX%eo6ۼ&q)KAH0ys0F2eS$,̔$ns)s/fs2m5	5M	-!p)%֮O' "usc,Lw,m)x2Bs9s#{cqP}xI镀.o75>>m&If8rYJh(V݁
doz*cV[7@aA\y1Xh&KS)-JsEAUԩں^`ve1cR鴃9r
뮜H9~un}pDU߅-sf4S9D]a~fݘ?O"8`3!qf-b';Ms_z:;x>QAKzjsⰿEiE_eXkn>zmAEoʟբ=gvfUcqw](`8`YCgQ)@Yx=M"	9^/
jPɓGEsId-I't%ykqtpC	(]fuWU=[_&jƠ0ÃI}OM8*X#uN7>UqTw6L`NWː074ޛ]x޼ 	'$65i na
[@f-+ixףb0*anZri#ύQ\1:I:ܯF@<D zN3{	p-ea4Ӆn';'8Gb.΀c^ii!-{Л!
ؒIQ:~Ǣ[99>
%4s&* r(sO?}SԹz
Is/((
OSv ~<]½!~ưq(|}i5[{C*"8ȴucA<Em&23GXQx
\!Ze%e{~m栭ܲ
UkbnnN{{]]c)27ٹԝ#F~+I+p#'ଘ=1}Ȯ0'8>Jd2>F35 N-L@G6FBĢ6H@0 ѮI4Ƅ1W03^<ÓgY잳=@wȤIa㩠\'L7R1$fRFԖIcFjipvt*g>b__@/EyM
A~*6=ggVwƕi'PKXT	  
  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSSignedPubKey.classT[OQNoKZ.PQi7DTL $5>eKtFʃ<h`|dlMD̙̞' q32qDBל|($K11iQy(KX+"앪7@aޭQ57LKYߨyB?ZkC`b7K;KFX|LhWmJ~!"%w=uVCbP2ٽEVXL*c6zp<c㩡;FuE_<L2@֦ߵjxmUMzu&pgUm)6u˖XˤD>WUѣ}*]Nf8ຊS8`J
L8!3UQ{ێj7H])p]B1<Nl%%o%ܵYul$Oh'D+EBDOB9;=r1q0oNi!;;%p$HP&)S`X	jA"WZ,pJKhJ~XWmZKD#[m$&"9r]*D9RH?$6RnBDJZ_D6	o#8.9QDS #҈+I
Dc/1-{Kh_gh[XŃ-FM6q~TH]sUWDxI8h!!/K4? т>ЄBD3CllLNcf)7asPKc>)    PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LmsUtils.classTmOP~6m8yY	1 qjbԕQ'~M?xUgd<}zN?>_mY\K(e #[2$c+RH0Y%3$KC3-
*`sÒR]51;kiW{d5/vBtxaXV^)֗aӰ6;Mq̰l5햯C3Z\pߩuaov"²㝑Cy	jUUpC
}ZI?>5y[XPc{GLq\QjCPqMKa[9{1z&6N)=>
ևٸӌZzR\PjFEM|b|wB5)tCtu/QB4i`l"8}^A1HPTӅ.HB/N7AZ Y)b,TD#b+򔍘0XLP![U?r5Iq*"MĤ"UuONg][W!W#HU 2$H"XuVw7"8PK}    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSigParameters$1.classn@ۄ1ҤH	uTTFJ(R_h.+gvo8 <b6$&X~7:6.Gk6ɺkn
nedm2v$!IVtЕ[
Iu,NO BbBAXI=ލRB'/>apyM1߈Xd"cm0؇QU`r69#^[&=.9(a}<:(!9xlnCuJUBS]`s(D;/jgש{G/.yԝ;B99*=3X'"Lg,<(uf&/o`TY>fy؄1Z:hLWdFS'X;ΐ9C@nrc`M58	mst
X+,9ְu|
_2*h-أ3PK]    PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters.classY|Օd! C0L	 	 $$I#<d2$03uۊjmUJUbVVmv}n}vw*?7yqV྾sss7>82
_@.Ez781nCxLI~уvOiMoy
8mO=ë^s9xCƷ~w&=2=̃Jȃb/Wz?
ԍ`6A9~VMG?J4Rqʍ_o~];OyP}O[h!i8HKLqKnL[Lmeq-qnGKh7H`7W<C&2Y:낽>	jx<m/n:ڢ=@oOe{eXow"Z546od?
&UTp(lgkZJ[iuh""u>:].c@,`Avn>YO".kwsBQDnu7OkJ]M#&Tꓪm	^Nig,M	рø"J>>jQmzڂ0GVc,V׫̎`>O#+^No@;FzŶ+mDQ՜Ч2!S
Fjzb`$~suSYLm>q[i80,ݡH`h6$pDIRZl@ʐA΀aS҉KM	C1 Ns?.X^\q̯&ҩx4E#Y*SzV-;d8xR-q?y`SЍtXx56qBejw"YӾ
r,E8@Ůf+G;N$<Xm$6Oܽ<N29B<n)4F&zېiL"D7v˖\LnbmADP2c")Cf2Kf$`FB,D	&[>ݓhNĂ.Sq``?L*IJpyp7l/G**/ErE{j9DRS<2n9[Q8HtǋHXԔ2]~ Ö_]n&:le)d}`fuo":b)qu0e,3XGOs[ꕼ$/t;=)pŋhPL"X7We4Yp1S
SVʕ26eTFy($nn5،eJ[ lYC cI|FPqi`b:㊩D'BUTU&c5=^m:i0QL<
Yoh&iFSXДͲă/lki1e;/r)'L!;MWM<)'q!m]K;Ӕ歖"zq`?l;4cT&ȔnԽ1qh͝'Ѫ4,ޮyCyJ-:dF8$b7ˮ_!?_ivuhW(ʷMc\cF'
yHbԵHcV53RmJ[R6:IPu=pfvBAGvr["^F«˿	B	V:oT4ȋ:Y&(9'ͻ:L~>uq$M*c(%4hI`v;	CIڋSW+y;kd_<{"xEhQ
*;`Ko1hrÃzszfdܡomhʙGJϧj)*H]qrpF@(E(Vz.`J*Y\|s*?ڊ;~'簳ێpXDPvat+9t=hօ"}3[?	
"hDY#?7ۿlO}
GX&KӪFnRx#U
ȾkgBT톄5#	&9¾D4kshtO#qd#|Zʹ%.H<#&op%UP"XecVJaeE `w	j>/p۪&EM	w^OlS(%Oy8asC|%G+=
(>8ҏci.9}@1d8w?
$2[aEGQZf9,"FXXRTHJ{"ZBdP,T츇C r0KcI:s9C@Z, k0ЮU(ZB؄u؎dF d[:wKKc"
.04s-='MlIsM;}o"yAd	S=1ѮƏ],:@*ҭeFPrrN38<1m@Џj%^7՜DnKܼt3urE4 II䵜bяYP(y
Ҿʌ78J
w%j)Z0N,-poZuexP;0~zs7z|z2zZz:F6z԰6->.9\>8YfG"~.̙`|zP` mV6
fv3/(6o9t%\8C$q̜a1q .ˏZ^Km0eNs%xdKN5,줳/ªmOgOWO#kiK`-
2&; ]:2.kv7I^A:ks'w(<D79$dnul-\bQQ,_UfTy0=Kvp{9ˣ/n9]ש1T
n	BJ qgg`oobޢM!Oᇖi"	tkyL/Yύ3<ҾFcXv~Tc'ٜcV MְAG)W/ƊRFS鹶o,e[cuOï8o+)>C}D'}DUkikR_)Ɨr|u*NbVYpIHŉy<O;mn6ٖK:Fta%Eju^'Ҙ1X>Bg(UXDSoyfuGq(94z⤏eW[YVZ
2SA9i|$mlڽ)eڻb76	&Dm%\sECd02O%uDc㪡pB-0KXKMYCy6b[dsB}3Wp,J^4j{J]M/j
AW) 3,
p 0d%dRBlY
@OC(t6f ',&+_J$b;hȷƜz~ܠ6ǦtozR\gf:/`3wu;ɛpԦkn)ԠZ+J487kP -);P-~6\#ҁ҉d7	w0JIOKǥJ̲y4^M(<t'㸳-]<tǑ&]Shct\VDo}0O{
ZZI}Rkp98ܥVjy
J*[{<kXwmML!.n$ȍP,'a܁%r'j.\%`Ks|vw_v_a9qfygCo4'ݓ;W#-?=fn<θ18Ǎ{[[o󏌊# p_|
҇y>򜵟epcaӂ9U`S֑ݮ])ҳߔ$ܚ㸖w	Łvuz9aW5?٭瑜!{N<K`!o);ƕ]̰Ѝ3^BT[y/y!:USmjJNd`Zщĕ?Ss^F>9KKZP^&c}  }w1E;<e7˴	qໄ=UPK%f  w'  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSigParameters.classU[SP	AEV%m@T@4Em&&5I3|Ơ2rܓBg=n׷ 
(ɐqS nm!1-Č=ܗ@ķB,
HB(-	OTu7}>g_|ƺ{=U`-UQ֮ekKZPA_Z.ڕgg{4C4N.
, ,dSS$KS/5*S=P:unE_V0f)E,حQtfгCe-vŕ\#Qn`oܣh۵Y|0v|/jlw6W27B
Ja4U
L-'(X`L+zXRF@Ŵ,lVh;_brD҅X{_I1	*aLEL8/NB\3b+VU<sͺ$PQ.⒊RqJB$-Wq'rZtioB
h
ޘNn2 {Ge:,Cܸ+FZZ.7h'
PNIAQO7uCހa8~D:z	2-O>:2g2#{̌!I2
$U9g"%)CfQҌtW3ػ?BJKX4KjKΨi5L0z1CalaTH_Q{Z92%ې4` ZBK|OPŵ1M9zBH":B
B!$<vuӿJMj!ĘG%PK8rS  `  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsParameters.classTmSU~.ylX`6J@لZ-M.mβ:|͠vQnB.d&sϞ{9޿ y|#C(x F
#}(F!>E	2*؋cO%G12(E;w"6w}0ݲW} 2:k;'9\e7VǪu5ӶcG+V\gOcrX}iM>f(=Otɛ\5vlP{uu75uU1t[E=mwf	#&vfUnMbacrD-xD"M2-|<Om\$ưxs|~dEjrHA{G{!E&OиpqTz#M/3Ӳ{QgDz;b6> ٬4S.(ijc!5dUtE\U-Kb,ঀn)HbAg
/|!ÔCno(Ys,]!].T!va*Z.orZD\#+HҾr(Td+lb p\\m$Zh^,g	%h6bJ"[_3<_Ǥ(+'EQ=^>3՘xAQJd0vuă]2PL<܅IH]D~Op2"y\2i)7A{~K-ڍ\9bF<饫g
<Ҡ_6@i/G(
;_Z$|wH#?eJ[^B̯	UU`'2l?zPj2c*
O1vg!55S:_PBXMJ|n	&Ոz#6/0upg/
B
}41:=%%%PKi3B  W  PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSSignature.classV[vf		IL1YCRZXbRtYfj[5զ7ۦ*zBǴ^_Hwfva؂!{.眿磏|D1 3rxX0
ty9|SÐ/o:ymx\R:ajёƨk;eu4`\m0	Gn]u6c
/Wi\=)5|[@L0\??8_,RI'=6m%rSDڛn'R593'-l@gyʋip@+dbiôrN@qGTֱN&G,9brKN74wݱԸyLئI[ie#6+2~3h8i+g]'{*v^~=X|$Lt&eaZ$
i3:N+ۈ2mP͙dݐ.
	tPz/me%uah5Іv0pm} Ŭ5}3
Y椁gmn|@I"?K'
V=['<Ϝ^#d|Aie
N
W
?ؿؤm[>e
/n-{f(~Z9^a~
/8!]h1*~c5@z
7)^[F/1}k-Y;X"7WAMKcdhxց
lh&%{vUשּׁ|띝чc-SϳS:WitkU)?ivDȜ/p¶@pw@mto9[eҜz\'m>к.;d:WZ%qf^6V);˅Qʝ,-.CG!O-'gǝxyZ:\Wc\v@FBPi،FRMĆ7)6Sq:	ӰH̴z|Wq\w#IǱ W*#<NΨmkep밯*zLVYM`C3p1J`z./`̼8א
c
*yx
Tn o%ި܀
<C+;Q.ji@-n4o7}:śY3DgP9qQ_@Mi t{q%rZ6*F^%}_%vQ*/&CMm<JMhC7M1Q7oZk;G'A-s70a0 Wq\K\@q 0pa8&b"$-!΋
2~g	{_<uPoo{ow=?D/)c1)p\āEZ$-1
P䧮EC+`bu
ewN*6^n=V&?gTp;DZW:2(!BRmKJAF]%x;"?M0%؃Gy3$aAjſPGL$ _*ν2mB^X+!.[A4P̒6NCq(F"P-}3)l!dqnY">QāЫ!M-Pw-uޠ8z<q%b7"'T%eр><kdn3O17kYլW8>eUW^e]&Ng/PK0^ޤ%  (  PK
    D:U            6   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/PK  D:U            h   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Shake128MatrixGenerator.classSNQe",rkKZ@F &E԰atd)өqҘa	|L%g}	
AA,0BF<.sGo"Ua^Iyʰw,RkҜ]ZK_=ԝUu$Mp[U1*>Z/24]UYV+G#1*5G-8vnuKwTvFT͸ QYq+5an5KԪkY٫vdlU-ޝ79*DNML*aX9uLeWuԖ,{VxŲOLg<ע,LZիi}Voy5xdo10VW5}j
C[l;ddJjvSQ(f[- ]4pRқV)y&N `X[G]jED)*(K^JiCA>x;~X9=	
bhy&H"8}	!8oRǭxy9c<'% b2		}9)*5CrTڈT>BZT6sA[{/3g?Ata4F1<E`*y_Tb	Rqp0G;GQUi #S'ӣQLPKuG  S  PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoKeyParameters.classQMK@}mӤjxF1-A^,"(=niqW
'Xŋ뽙a
@:t85T2jb}	@7Ys'LxTz7JN/TA'
CLN3"qc2ͩH\^Ԏ+).At|Aٻ}&-Ta0sʯ.\ub4C⪀:Ġ[obF
w}XvYIPܢl\EO%Fl6Y'PKk&  &  PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoPublicKeyParameters.classQMO@}KZ@PH؋FD\$DAN&+M?8E.lv{3;_ vQL E,-  ǐ-Ƕ!Ҭ0h'\Tl9Ĩ$?s-ʶ#۵cR5̾pwg|ϸ^3!MavEY)7WzG{xּ75(+kXŚT
)|0S-m8P:f9K%3|ѽ?ިLhIstZfPC>I#uL4-I
j$ў֥WD-*86,s牝sPKNfҧd    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoParameters.classV]SU~NvmK!)@ˇF(FuI6d1	qwFۊ̈7^8:8Έf39s|l~ CX{шi63lpOo-			$჆yIwd%C _q	p'%1-ѐa\$ҋwJB	8c#gwѨł64C73f!Y0W󩵔^,HR2#;r
/%PPdK=JZjՀi`,V=b\yr$#9=Kl>CEZ$K5m,꫹Ҵ~H<F>Cy&g<ϖ	g]b-sqy]I+F(%0֝'4g"]]^0
7yQWqX̚8T"/OZdx*gWP侸ZHmKN>+(!
(&<sYgpV+8U6A$h:1b$~Ԥaw%8Rh֌
3<ӋEslFt#$0{ |FA!eԽy}ᮑ*	Dve(T>?`apn;tvѥ|vteh}ga6^6^#<XHG¨C6H;PIp,	
o؀3ԹWյ7YU^<ɎVW&mBހM'{:%JmT9QJU5w||׻2k0L<.ԡJ_P]ĥ:ToZQjuZyjSuZ$2T 07{oҩIL$ڍT"$V'E"zI+7ZW+N4hmE+x`i0kX{S~]6*ڿThoWYA,oYmsV1}eOV3-4&G4Ǻ~7nAKҰ߿M<AE=Zء`Q,j|h;ΧwT;,jg]j`ZQ}ɢ/C1z.5C;"` 
M%IHP b!Z3zxĈgA !PK:hΫ  X
  PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoPrivateKeyParameters.classQMKQ=OGGQS+"j7Z42rP8dbgaUAQ;Bڜ{y׷ XICA^CE
	̩W
3|~CXƐqTrD+Ǣr
gAqI82
!{fGw9M[_WRtYiI}.vܢ.gS."6;Q/5t$(XĒi#)Δ_w\HJ+
/ZAG3.rtN^҄EdT		ud>UG+[x <N]D#;PKmJ
T    PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoEngine.classX	xŕ~sH%meFc"ccl0c4I3B3ز!RL 1`!E
ʒp'$n%nn6q =dh^]^z zzEWxHЕ,bMW{i}kװu,gqafō,&7.M%Kn/^N^Cp^c,g x=ѿ7bwXgG] -$VLD9{xtRX
.lsw@PaVoC@:䓊V<IOB5
ҥlKglO$c}?VھOever'#59aU08TVK${7յ&mmT+V;ГNܸ֝D)-8P2{ɺU,O{'h:Eb=tS|sFj'(\OuB#4Rx2qJl}zEӱl_Zm.D<L^]f|(agyMqth5[EkiG[\t2\7{TO2n1ckvud!cv40z<CF=uo
D1kili\sAh]*O5q%vF4ў\L%,[Ѷ%y~qq
#
sZ9cAw[Xo| yO1ur`e3pm7%zbyn+Z)A_I:D:5XDt@x+Yb
SYequ,Ngq&Yb5YtNй:SEO=3yzE/czIk4=?qѿ:TMԡԩSu딠N=tN?7\No:Ct]S?[Z[Yk鴝.3&6՝z|wV^hAAn*L<|=	 @
S>TƴdiM\4p9~{k>jO']>8?VP<վ<ʩN^x]+hb}#ٛ.js2gjʼhHciOEPhޚɇd]rJR5y9 E`iTAG#0bc&n@{ɤyh/>nR{y^{Bo,O˕v.O˓I5vy]r]nge]3.q_e+y_G+Rt&e/*·tŐTU'RU2:c*VjTY%Wz!<(yCote]e@w(qUbeZBY5U5T]!?Um}()@ ;2#ٍ2Q*Q*Qx(pBhB a 4*s
2pgbll9si =ݾ4pLx k!y\C*qƻԶX.SÚٲ#dVs$wPX6=GMҁe~qNrM唤YQ4¬wb-?i__a$G&lϮCPQZv]Fh05\PMV!ŐU`ֻi2V*T6ADVҫ>'3p8`/۷!̒ ak565Qa8#+a8"җod.tMZ(sysM<}(o6K

7<9B)55tnHVc1+X77Sn_6<лf
tB@bM7`;h6݈@|~0L0,]Iμ<X	@av;V'lb%*FD.a</{ߺ
wކ;yǔs,r΃:9sW3`<^{8V=T 5\*yuPi7\*O־b=
pW+Yz'238̻U]~{رg54omFD+hT
`{Wbs g?#Q> `?#8OȟWFOcX|	_נ5n	]7@A7V_1r ;g#@qwVkj<
Su,=sf#x]K5]iɦ[5hN,+L>as18:0˚
LŚTMg
jzmىk
!4Mj^CwtYC:BSkkCinc`&Lf`Ym(ctxCt4O]sLhXL\_E'-Plj(0^KvbS7jH~
sGG(`/CYhgAz5M[T',zA}0/9;]FycoPޠ'-}JQXJ+sL|5K&n.S#DsMO/ym^חdD|qSU'XyCx\8tw>ɑ>2
ǵ;EOH>a]\ F7ÐbWn)[5֙ǐkiZ;-myU@݂,W.d|r*w(pAʹg|#V擮.QD.QB^QĠ(QAE%)A$1֋tA3iEhT̡GO/"jg(zK,_zH,߈cya*!uBDJv
87}6EmWia-45_,-;BkmP	jZ0s;CCRpa^2 1i)	|;NyE,#8|tqiXCZ:NUt:E4ZNYllJs)k=B^Bv#]ح"8M?t_ׂ6%6k@}RUk \f6I$<rL	mrmJ#6Z=WnqV|I@]rM9I!c_WM=GBį/nP`?
дZBY,<kdHɡ0>o19--%xdX4XigJ,
FȄ
xfYϣr6_aYQ,)7U8oG*T"clb krܰQ]+9FAf8Z":iH9"q!]/RtH觗 '6-l0(|b(bHԋ+rqh׊.06`QqxVD)[{5YL8
JXޖlz|7MNQSǹܸ=۹k27>pHn,CλT%P:qI[q<eN0܁&o\u˪+)  o<}2#OV3(Y]dw]e(=x9w;.]g)u!v\RJۮ^/~)JӛۃUx@2+E4=AG'O xR9-BHP	{KrqwK" 1
|4gnlF7jsƱS͂xZ!Ǖ&-"68Z.̲ReTzd_P*	=SR 7\6!ޡ(O?/%sr
tfƃ4	KRDe g~d"\"cdjqX~/<ԇ "A's&^|~>{},INƦ:(~) Ya=di{q$Xev3=v._&*ysJ*>g]

?'K$cX|Ѕʿ"x^픛9$%7M|[nL(8ƙѫᧄ˂KG'ҩcV)#JDc/^0}K&o![zl2ZFrFȚTg0*rɻ娕6VX[ǻh»]n%ޚ|5s[6&mu6g$N+fz@U1:2<ymfxNzT͙iu2~JKqpT*~d= 2VOHŃt>VDR|+nQTWhLq3^U<⥿BqMER LPLWbR"2J1y`Ufmaze]#FKJHԈOJ)uJrTRjPה3cr24*7++Sw3&JJYjr:M9G]+a
F ǅ2^l"@W4p@А<PKB9  !  PK  D:U            f   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Aes128MatrixGenerator.classUSU.
-BZVmkI D* P~iR.Kݥ}gû}(0ҩ-x"#N'g=;|By\WP !8!
K#[x	Y7WC+4G*U0(Up!=ẑ5gLV
Lnmq{]sy0tۖcr"ON3Dgh>`̝q#uJӅ0Ǎj"b
wuߤ5Ö {nɭÍp{FzKcC\dhe0$ON3CP1
ucD]yc:51L?sצ	Ou|"CIya[z!EXs̪1GϵjFYlf@x2NyA}3d_V"RB~"qrcjHzch+1+!dhBR$n
)P+gLZcH%v\XfЗ?D}(E-	'<*[<"f31wb:+֫krA&XPKdnvm}׭4՗(I̲m^6l,0&+Éa2]c&dаH&ynA&O]CDv Y&ɦ|LP9uL0Ql~*	!z#RVRV)uaL>jsRZwŔwY6NIY5DzGSGS+v972O:~m5R	]Fqf[csxZ|I<)(D✊+*
Q
+HL_/%Af;v*xd-BKK6dEmJ{Lٙ->m.b>]S/j4,
6\u<\`ÍhXUѪSػ!XwPK#$3%  0  PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator.classRMO@}[
,%ƃ`F(		ÅӶX-@L<Qiɼٙy/ gO#R
2!((UPe(^v+Tݡ{/|5r?e\PSĥXC>r!۱ѝ{MH8R4U4=tϝyh[!ܡ﹣1*6bTsi;s̹djj7hrfsgcaW8]Snݱz/\l@x2Qȝ,aScfuY[ N--mPђvT!"SBx
U7J#PKV  b  PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSStoreableObjectInterface.class}1@D#bq+K104&V%dqY{5ࡌSL&yz? C#gyit2=D0ֵQ>Lq[mX&9I*e&ÊKJZ>ڤ"uYW%q~*HN"?#<!Ё,oPK&      PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSAddress.classSmO`=J7PV
!ŀFS=Y
Ŷ3?i?x2'_,=?~~HaLFPp[@y
4!c%LI0 U.Rm.[qZK[]Q*ݾd!AAɮoCbMa.Wu܆Vs[\;xchn[[mv^v$S5m_^\W~\i}:3)$aS-|VS&w~*
. +K
ĬWԇyx`K
~
im>,3|dڧsLDh\Bk'BBw3#4iiA'6m)n6fSgqo-?ELYqr N?.
uEXXA=D&ZDj!$2vBA2%>E>#F!!	HjF9% !cM	q#_܏1X%!\kQeTp1|LS:H#gJωzLj,oRz2Teim=1PK9]z    PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/BDSTreeHash.classX{xWf'LGY  e,<Jhi7<f;I6Y (RւX
}mZZ`Rim}jo﫟&ď
	9gΜ{<^K /
ac
2`?d|,W2>C

|PALI>ԧzgeL=2c2>Ք2^\/
~]+uĀ^?`++8^;U_u
vypbIG(?˟0&N8shppPƳ
ms-ge|[$G
-EƌphsC PXL-dnтq=?B Ԍ`S8T6p<k13{#hO{wbm}>&F0z2J~͆P@/P` m'Ċu񣳆߮pn!TgRhxwmڃQЪx$D^7gj=7b_s0Q$^u	z,V^Z6j9/e}FgH3QrܫĒߩRUXkԵ9Y[1bҩ&۹lb
P@Z%8=wLECna6j}-Q]
hnj߭Mb+kI=__gpdXUl*IŽhaЈ*w6	L2Fԣi;f,#-+WH1!; Ugp<6ˇuܲ1VEEm(e>M
jSq	\T]S}\Rq_0*SWzU.;Kn2}oTQcZ,ۨ~kTc]7񖊟g2~x[/axaY
?ToV[}|U;ed'zXmQ
D=fg}Y>~H7-1*;55Y/h
zOպuGQ1¯G"ᨩ2ڍͶ3FӚy4=.}ٕɒ'n֍(4RE<43\|1_pFXmWZYMV>LSץ3ő
k~+aBĭ	6j=vG!#TmaUVQ6ʈ}Z2aEJاNЈwǟ;F1I*EGt<Ň.bu6;56Ƞyfk99fK26[1i]ߓ{kڇTm-`ZN$UQ-wQ#ݞ÷\v-ªp!YӎH7`c('AX|33Oh2
bdL]XI@?:M]ʇLl{lLNX~M&
[!Dx3$O0p N|F7ZӚlMeqyHdq)p0)B ILn"v e6dT!ﯸr@a?ZK\&^(rz_Zr?ZPM$q(b4DLL`ؕH` UL@Ȥ	*g?*H#Tزu'0w *y<VOhWs幜*2o/!p ÕO^ƞK)N(F\R yV3]ETWcQeƨ+y#KrW>CݒhXPl#$!AdF8-P8I+2nV* Gu9	*s(`nz,!,>,1,E/i,
jMV(ZVLFz kRK^ zA<Q4(Bx.p]
;?pvJJp4mR#f6tHqtJ%=t4+a*zpEJqa  kd씱Kֿi2fh)r|w?Rh~+=dV<OX8gD9Ϧw9>q8lyTJOk+rM&|~E7m[֏g%~(ɉ#4ގҼ<Kh9QF(~8Fv*3RG}qI٢Gkk({e`Tǌ=O3PqpsTS-'`p/ɈX%Gm!³[D2̶p> PKH	  ,  PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/BDSStateMap.classWW[B
7JI
Xm+]'"a<jC\!M:uuuriC+uns濱svtS܄xz~?.}Aa'Nps҅/AuaF0.aw&e蔌N$ƣ)=<#ʹ328΍Mfdanʐs
7x\xRS|i<#k:7Ys|K^LiI]
kɔ	u	^D<eqcX?*{G9M
6RϪǂt@YXF:Iwg15>
mBK%D:)#DܴNRpbRgC6+دu　35qm =5%Ա߼74r&	/
p萚T4T;1m	/	&4?TJOGI)_w$=upjژ38En,NB
{d{4R%L	[*U[1#$KRD}|Ū`{x`)-bZur) '55e#PZtAgLtو6mP$]2LR7mk95,t2u}`v16ظCIwCV=Ǽ 
^9QF|Y⒂'
GgPKJfGGZE)x\KvTJK)5~u\V~+E	)ǀWQ
mK܄+û1,c{		/rɶ+yǖot?AV	R[N'юbtǄdsBy[oi ath@
Wp/0'>AzU3N=cϪ9M4Y:mݖҹ|_]o0-RLM4LUH#V{}E$D|H&)H*a)i>M/\&8q+$MP6+SZ;z!įtwܻ%JӽYs+Y$F\o
s̄LSt
rAHc2qs=mLQ9d`ǀec2>I{CA@lSFq53et\eD|Bꓟ|2gL(3=y
Ȱ (lP*06܃M\]^sBРB=xye	"D`	({`A;Ql`yNaPKv/͜ˣ2[Kt[st
v\(,, L@pR[cuøG'p'ؖ
v	;韺v&ݚwX%̭u6I.kvxu.`k*=Ymv,,sW-$j}.? $d IebbLp:	SW!:nW
Գ~J_a.)]Ado%[^GIun*67;~>y	n`ureཎV[Y{dP}N2]5%ܞAM$;ˠvľOq+$u%\8-AI$H⺒n*f
yluxO)baY]1P\8(.IunZ!"hAuS%3Tw>xa#H&yſ>IQUTbPx5m21WVBcf뿰XMMn]O=[VACPQQlӕloWqg.l.!g>Z-e͑%ol3T:ܒQ=nqkGeKc4+C6AP4,K#ve_?*_4Y"ؔOFNv3esLykWIyQNxr'	Ӧ*`զoRδe|t/F~;10
),([<];=^9;l;kF>4BGY9Mr`׊*L^ &5^5ioG23̣5I?PK{h    PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$1.classAk@ߨ56<xv顇Q,	
u]4MhZQ^|üa㽿/$		iiLn,\
;8V&krv %,6FuJYP;+ދ[gӻ1VZzϞ]@x;?U8 0>F.@6PKc     PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/DefaultXMSSMTOid.classV[pUNӐCSn*ZZiAZzRRnwC<fW}gMlۜ*NOw q-Hþ2'Pq<)( >g9T'>ēQ1c:qqc8R'8#qiI3qx/r2y*^ `^ϦCc=TcY[7b}j,MSthf=?5Ts,Ӻ9kb#VLN&Ռmhԉd,LVD&ۥU}/G۶"^fhL[udK1uS1DK
Ck4Wnjى-]of荔fv;?
&ɛ:eɴZ6ɰndōi7@pʇȢ4'BV6vF³7ёqІ2Yg馭;O'TAUcJ~uBۺ$s1Gn	.-l"Ӳlz
TfF3~\x;w}1!ڱ!HӦ
-pGJⅼRxvn,[pxXX3WLsc)q9;>'UJ-yXRBt66ΠtV>4jfS#_|M%6L"ss[eT$pY-􉹟q-i3DKuDshXȜS>t6D-atv~R(|˰pB:,3]VM;Cک,iJj5*leR#ʬ9aGuʨ:fVIk\+ؓ/ad _P{-@nh4mK5G
-:&9{HLi6 ѡFB5*K5ǈF851%αAFlp#ΉDW?Ծfike6Xt-xo5A;si>82]; Џ IkP~a16D vYw.<=9UϐY?Ny*:
ڝhԞlK$y].H.+\/VρҸ=,5p/O= Gh6{BSCv꿏OTކrU^󄐄#S~@jYX8aI_+~Q#+EB@,BS.M#,V+Jλ+eb0UKe|Q+%BbPA)e׈
BJpurF
E<2rTUx!VKY_-aQ/!&Ԉ,zP4H	E4ºҷaX/%X"6KF)P+bR2IpX.׉I(ZQ'6;]/caj&5"}K_?b%~jZVBX.b#Mg4TӈV~l@
ynb]j6;S^Eyo-Rꅠ^1>'X44PKP(    PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$1.classjA[O<xv!MY6\gf]gtfVWCxnW$	iaLxʋ"\7Ւ۵trρIFikSv %̬DiZ%},G%k{q7vBx0\KkTbUX1ܦЏAa42tPK M   !  PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSNodeUtil.classWkpSHײ1JǎM`	6&66~J%[26!iBH!АRڦ$
4mӤ)	LәLgxJwdFsݳ={Ϳ} `3~=߁/h>h^}*/q@EzTx0L=Adj~LҹU1h¸(RL8"LD?J$L^FPxAk"ΔintnFXa]Q1#lSQ>-ėmp.`VEPXO7c7:vG
H<
h1&
i
x9vZTM=nƴ#Xs|d`@=d>g%8&<=j`d"tDbc}6/E%^P}x4
n<kuiͅmhC6
?
^	f(,oi)
eI]8.|/	T
ؼYA=* (Wg8G-c.XW\8W]x
_w<.|oLwX
\_p	oy.|o"C13^`Yem4}T3(M=g*H?bix,T\#]qE`mas xxS2g~G;o#|Y3XQjZV$,'>3
6svf<ͣ,-`Ehn=|t
YSjV'}x;Z
fMŇCX.K'[yV[(5,!뢥yEޮ;^$i"m)CۑLgi:A}CyfL)0w=Zl<=?an|"$Baף^P=v.T[@̰X$=>]j\?jJs*v=vWQP%Rd%+>h1GGzL}'Rtl`C9F+]DR/AO#*I<)Q:HBka]fdQMJr{m&/l[(npV9hJ+?]G\u	&PtDH8EL`5/Y%p
xzJmoUJƉ%oH[,cv1نbu
R"J<̒Dق%(\Eٙ!
/ak=vk{LӞEU-j܅55tGhĽG^܏Q(9<@J\-@?ZT
ZQzQQb64'QLҵV&-$%$%<4oE1>AY<w~:b愝2\]E (f*7Y9jZd%<WOi}/8ɴd7s;=ٚM*.TVJ/faZL4.'T5;47yl	lN`K=Ad*YJFږBd*YJFږ@"2Tf4RF*SHK!2Tf4RBj_L8nMNխtEՍcg\]DXKK=6\8"=*l
)(lt/.JJ.Jnl@/%J?NgQ1tgI|Cӑ ן0A$O#$qHTb\4`B",:1)0%i)LqD5#<#BYB&EK7NYpr/Y?-<L>Dxl-MT Y_~0
r3e!縨U%A?PK  q  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/LTreeAddress$1.classAJAEǀ
\& Erbӝtu\Enܦ:FA)\UGˋ1egmYi0p{h*M{{FcYma܈	aB}kg|ߚm"<Ao.".sY2C'.PKpj      PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$Builder.classTQoPnnLݘۄn03L3EKi[['4QhGe0d}==ؒ@<&'#UpMº
f5=U[v?5ֽv?-w\!Rq&CWݣF23,^]4]үڶV:癴PUN6N
;v|bh{z;#HjPr VbH**Np3rWE٤/L޶Ht|:CTY7)
]WZEul QZw]IRˡ+_YsaI_nڄ
1@Ff7E3lW&VCP#'$'&Ko]dĻ K7K. 8	=?2"4$]C)QU3DU"܈_h9Dɮ] Egq$u}K<W'˽J5"̍'#D9 ap; ,QĿN	Veg
8Jt|<kvS{z'
pQ;T F_40*.
#P~7%j4|i:	<D:PIPKM"^    PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlus.classXxo1I7$~&<		@ԥ Radwg@ŢekZwJbZ[k_VkVIUzdI	m{9s7>t1ˏaeۏa-"\)a7{pO_5ܼG{%O(.qxՇO)E1?qOsq#>S7Yb
ncvтV}Gm<<7_/K<2W%|!v	_#;d	C~p%8k
yx/7ߔqoX=we|Ϗ}	wH
x֟8HǛ{l*:2fRo$MFLyù"kZ^z:&<իA=R.'!3axuYFuEt=&PC?I&wa"0Y{\1]`JW"uZOf"g	?FQM:,D<%A(XZ.Mm~,'nAmB3V9E,D{,B9Q#UO-oa)ڢm՚f"ܕȘFqI-oLz\O-9{PSr;oRH1=[;	3j'cBzIj	7+H(ZbYNlL2M`@)%5A#VZmb(؈N3fM6\k$7eۢ [iE	*8Qp

cAWRȮ'0;Z=) Yv=hl+IQ	FGd$GDc1*9kxD儴?-/
sOH#_Qq¯
~"ţW;<!
'<<g<>=cDݑM$czJKntRzzIRdtr񒂗gܫr7~;QKypPG&kdDү
MP^SK7Okn5b)^ɈBvI3hA-zBڶUI=7{Ya2iT:hjॊp[xL<JF:8/Le6
zS9ȗvĵH~E2%R1}[3~$ErEUzv>6٢G͉d5rcqk&..Z[8bumJea]ZwB?BAn贋P@xEHˤ5G̳w(&6'6NysNF3VΧ(ygQ`8SdV-?oG9isadL
`wTj-%יF>ӑ/K%}o*bvn^Ġra[ak3A=4aNIv(|QɐlS84ym͟U7a7sY{	`e	esFE!ڞuk>Uᄧw`N䄨6<6Dw:R:sTKgٯKTT!MRffLp8nt-@nK<#r)N2+T1K>'gs%itkoILXp<tL3&\`v}"SF]EM#=( a2
GvEr%}$l[ml}Mv%Z2I)+L[5{<9x 7*nMJS_c?@`.!BJ6Vᾷ>t AH#zW#@)[A\=@BF=AhL4M4jFl<\HRS @.N\KU$	!˳+ކ,0Ze,
EhP'(g
혍%}c+"v[pe*4`K";m\Ӌmv7s'qݮG8S0Wu;RXAf.w{mQ-TDMo<v}qthDڰ^uQ=qRr	ƀ.\
)VUgS!~s6cnNB̡QAH!4Sw!?DUy\\pa-?F1 
9X V4SE<M%G˱\'@n@B? ?!MJ<(bшwLD[$hD$x	Q!)YD-ŚF%\ 1hNPl"Olr&4wZ9Ws<-fgS'xU;.{; 
T_>4ӘOCѧѦO(	ȤHuO؅FX>:!"u b}uz"GX'b}a܈sp׽DZV|ŗ9܏0='%t
}~Ux_vq2.pX;21$8h2V0?´8d{[Pv$'.tXfًJ&깛 uw!,9gk.YVʚOR_a[Ya:.!vr3)vϮB'rOUV=*{V+Wg>k)@\
xَ}wQ=D3?
cXG?97{Z\']Oa<C/^8tQşD^a,VPߍWxK0SSO7Qj3	",8-PKTbL:1dji/UWTejawM:ܫ#XayfeB
Yu*HTo*mvvDVmVo_,Y*iVj:BS9vG\`:EȨ>.Jq6J1QHLCCNzU(Yu
hvK1)m$ֵΩj̐PM+/,@YjQKh/>if݈r'rc.cSt֞ %]GmrHj
Q# δNFPL+yyRth8Ѣ]$ziQ"=Zz=I_:2$
t/=U˵55T]OfAdw	qCXce0eYbJE~r{Ne%sQLxSt#oPqav-ɕfrQC(dШ*PS__7\V
Y5EiF5bewaMT<:tpNv
.N\WP#dwY*/
Ɓ:?RV*N
PE"qPKҤͱ
    PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$1.classjAD*3I< u8cfFq-?G<{Qu I$hi̋"Y ϸ^H'<HBob2e׮uXٽQ>h?%w{8wI~KK[Ҕbڰ

Y5.koQ[
ZWPKڸ   $  PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$Builder.classU]oQ=(+-ڊB?hcFcFhxZͲꃾDM(-#`rf3gfv7 K8G'
8% +CFN2$0'Ae65GkUYWko-]s=G;gO޿Q	:^d81%LCp^go/eX6,ûİ{dŮsa~Ɲ;Z$O=T |ìs!qͲbj˩rZ
vNL[Z~kq	.rv|GtnP(0>h5("ʻQDpBڪBug,*lNk	$1=H$	p~j!%JUMZWo6N'4g97]0m+K$q$,ë]
R^>E[AZBbMm*q0Ip?Dv\6&"ia?-JᒈGb>I<a<'ےmIYFT(~!;/Ka]1)
y&ƄbR;d;fgb+
B
vާb6( 1A
NzQgzRY<6CdAEZ#	PKKct    PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters.classVMpSUnB))-ؔAO`__oÃ4θp2:NutUڥWnܹrF群
T 3?s{y
Q~<B܏.%>	=>ËBsP$+F}c pԏʼuC8& }8!>N	9-ጄ%JP$1	]fwZ,nIPxVKsQLebh5TtjNU,;ͣjT5sۈNMZVd_274( 榵eh,6
f(33ٱ&9'C5{ÁpyW}
inc3tޟ2&IyV}JƙK/)n*wgJ[3teټ4iUGi4@\|?p#QqhqH' rZo;\TdlE		)g	9OhZSl:=hh:!9g']3ƤgqDd4""a#˰~")%e\#yU%S!Ke\%	Ss0\OgCDHqh2k١1J:d~\Kq˖qYbEy1WUKxY+xUkgȰc%arqqNPTJMᳶ:7.';'398)WT[V}ss3CTG*-/?C&bXKx/)Z&|anUpCHWKT-tҊS(V=01aq
'jOA.PR=C%1}P祰ķlJ8Y.[I!#}u	8䖉iC_p`У`#J	!Q%2LDYuzNYR56d/!| kP2,1OkxCmxY	J;Io;c^WLj[^G$⺅HST홃|b4UL n;HkG&[UgQuo=[s5es!}w
Ԉ"7m3
$xG#]	xh>oq/V$NKcXXZluN'ftcn/s%:t6tBY_D3ަ_a':=B7~F~~
'zG$zcp5`mi*X>OH̣Iha̣@-
}B;=m9JP2Q6A
ËrM6A?E9	)$WY6vż$)QJ;veȁ
h;. BW[##pύSjGPֿ?ޣӺUxǇrxx#a%󤔈)&@	8?Gq:7fpsܤvײXPێ"RەQ0%tYKlHPUJZU:
oPK>F    PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusPrivateKeyParameters.classS[OA[RJHkATxCH@4!KR:ݺ;E'_|Dh&ƈg7@kb19_~~0+*bH*8FJEPqTу!aU߷33ۂv()8Ϡ]sKqKTBL۔ZѩzU瞴V~k[-KG)yVX**wyIHzDxݹ/-+px" h[8CtR̹.'%MLE-8W7M?8ٱZ-#8!5ۆ\UǴʍ]ѲffR6]ZyG0IDHBSWZc)ZE\RKul#UqK\FpS\:{PXMJqKa?Jsڙ5mc3弻T(ܖEȽаqGCȼddB,d|JWu˱&$ҋ1@ntj@#u$!d}ClOh؈vѸ;J 썼Gl]fH3Y:%w	t:K
6RE"})ZG/H"O:l`M	(RЮG)"h"^>p-uP_Hsgi%~PK  K  PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusPublicKeyParameters.classS]OQ=---PZRY>
$ GRz]uwgO&M/箖}w9svf{ P$digB8AC!aXBFF6 |10*AaVkeЮ:C`kk}ưo)ڎ횥5LThԫT\WX]/5wMu
${}3DWj2wղIHe$c셺G%%m%TkƯ"1uX!Yut[}эq8+jJ4lâ+Ww4^b謊<75;H`:D# a2bhʤ2
Ȑn]2M漣*~ؖjҹc%A{TT/˘#.4G6<1mJF'Sl<ǰ張\*fqOuL/#6t[phJ6Zʹ~"=QӨmtjA+
^ @>P킍|DZ6]^C_{#o!?Pp3E~`.{d>1!F0"OtA89DFHE'dR+ta81,""HCA@$$IH,
EQ$7{(iy7Giل/.PKM  _  PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/LTreeAddress.classTmOP=vt
2)*/0q-CPY)-aH ~ϝ QCssOso 汢 	*).JS4)(S
aʘ1ˠ]k<Al}h:3tynnm:53Z}W+Rw!CHn1H˶k+W=ZuB,뇡gQhoZYJo5z7k{/{C/Wuһ9UyX`/JBhSmM7uxe3W-a2Z	͏aüx"~hA!bDƢ%,3L]
_;Rn\Rm?Z]hŴ,1ffdV$Kv-gݰ[MV*os7
Y:*(C?nQցEg4P#JI6(8Oё9ATH"'Ӎ;4,A#
,"МȜigPI6tmM*"ưIңה`;RcDWRvQ\ISj6T$_츍cG$q)BQIqhѢOPK
    PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyParameters.classmMK@Wl U܋=)(^lEH)6.aIV̿RP 8"2<3	e`AZHc{(TDVQpP:Q[r3b(wWb2H-vпz\R+-Bi6)T*(1:x/J>{𹯓Sh_х!3T{tݑnA-''_uސ{],_#]h/K/v_{GJYIͪ PK'0&0    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$1.classAAE1Cbֱp B,@ҺGf %Z,UO%/? Њh;{g{	f=g̃HBgjqR;HCsugnJri(NJ(+J'Gf	텵OdLH?zaj{Ъ$?i
S
EP>@xPK8      PK  D:U            E   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/DigestUtil.classV[WFeqs$B`RRBLnIkI
ycd$Bz9}hC6=9	>7t$^V;;}3;{	|#&C
0#| `V	
!bn
z,Ѓx>a0v4	+aTc!UE\dkA<b=
<fr+jqy[ޓ9[բw4&մ.93Tx&h6U==l覑ӕElGeK'c+\)SӳwCM	"2qfT]g0ČwbTue6*oj	e3$΂;xtbdm##I[Vv(<X}{G"e.W#|RN2>#}HV:g(Z>bș
_T=#3	Drmhri~|I&fbl`86Cs`2R4y3Pn+<kt0l6]no)1A%laJevۅ
"#"/X`0tC㩀keh.]%ڢ PW)LXyrGEu26>Y&4fw~ƲWqgOW-;'Wߎ8kKvv|7'kcvT3":o<ĝ~RT#6r9䊑֤z#CFchޘ+[4lYUߍ%H}%Cn/؊WÆ:˦o=ħtK:S"`9Jkg</b恀ˆIq]fL-S(']%YOi}~*dG'ǖw5-ڜʩQOG/zb^OyJWH/EԏIY}}k#~	uAj~돨v#/Q+5Pi@	CTdp_!,wI:!LR'##hF6ⲭ	7(i=Ib[EK/y*ߨ*@{2LO2`[Sh4Ϻ`@Aa(@K_,"+ Z)kx/0GVN"9$9P(m &d&帤R5߉br7UgMBXs.hIjTƂDU2)*B2I
_AAMTfPz)ih̟2ڱjأ)n〾"y_b^$--]w?PKkǤ    PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/LTreeAddress$Builder.classTmoP~.ֲsS1	Kan%QYc)7PelnK4Ρdp}眞s۟ 

X0
*te+2nQqg`U53n;"c۶cBqA-0Q^lv)}o_mq
V{Ś뵍s#.7ZqƠB(0.
5͜&SMe(Qz=ArM->8? U5-KdJS3P:
Ec=jt;f_	nϳS[\;au$m
\Р	
3Cf6cu*ca#h
˽'ÛVo(2#@ 
}hHIӿ{g^DM3StI0Ot@';E$0G<.c.a*ER	>#T>!Ne"LGCDMHZHH<Ύ1v`ϑA\%N!./4M3Hh2
:	MAiid/вNiBLҍPII!/
PK _    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTParameters.classVsUݤ閦RhLmB
"	M6٦MH6@QDo7qo̠3GGgwGsw={ЋO0#Ahacz%<O!)yoDd' TLp  p<:3(s6 8YL	 8N4g)NrlᜄJAs2
ǕSJdjz쐒gMjC1KVWL,ajF-
xdRJXd**L\LX;L9VMPAsZ!0a-M&ANeT̤ѕ)bb@34sH"qW-Usi+sjehcCjLU&4Jw:RPNl䤃OJ%q{&M-gP̵ռeput5
asd<$%ѹɺ94;wK~fA32vjI,
xÉ=]Nsr5*2.q+հü7-4;v%V=4eI,]"C0+R>_xעNy/`2.EvNу2`3ClW-~s//F\^0v8ANv`eK2cX+]W3)ebLE5-^eЖSZZ
5s2W25hFñhK^3U!8asR1G~$dDQk2^ޔަ~]QJqS;2e}Շ|>	PAϧ.UU=k&إgrJAvB`xאm# Lz0r{-#pwuB)馝lkcr-n)J8Z*vqt)E/4UxizURKSVw΢VNP"9-h駋JOoMݣ?_Un:g{hjgj͈k(\o7+_SóG>~:KAiC'}=<u^/Bw@#vPE@(904_B4H^A	rco0n9FU&7Q4>@4jo"~:zdzYBOC78Z#%j#<ct1I&3EOoŵϡii,-7{sa\2O]EqbMtqlN30`e`$a%2e45+xU/]xj+%Ra W-^7I^`{/}G{7ψv6k;i{o UH_7Y*!;*
]j~Dk=a<b[!֌Mch!<ZZ}fq2_rkn#n}wP%=
ԸeW!$0/ݒZzAq:(E$E,QrA%"
I"
"Q"JPDA(Y"JVP"Q&B"QE.($"Hf+XGz|9VPnS4'sk
e=Xq/Sv눰_@luw ]4bs}z|?awl^31lZPKcq*    PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters.classX|[y+׏ؖb;!	q"Ș6Nb";&6B-K׶lYrHb(IA[c4#F)
m"	%ڮ[Vڕu뺱>xw%'b-s8'ϽuI .@+>858Tİ(w8`Ýs|LVwwS
>mg(q+p~CqXv|A~NЎ(#!avT,VO옐O32?*<j|Ic
_+}\V'HeȔjIO)xBp&Ó2)!egϊuߔ<W^ž/]|O
OPѨ	$Z'(wMT48$ilo)Kƚ&M;]KjD$Zr6ޭi!B65Np#᠁`bI?Na;mͲlW䕄yjcǬL[ce6BAَpTLk@!%[p#0+P1%M.m4D	
W+f2h9
	Am,EX$Z޻-N@RgVƋx P ¯dm<m,EkAcv폆~B9AY.HtD߻@(q
:Y	\Kot,8ttRث{;Á}}xQߩx	/	)6u"X8ʔAH(52H? xY?"'*	_T+4hȦ`jT&s8W%*ܱTp7B	?ſ
*ntZ6cV3$R%(LZ<oBn&vXtЭO	duX,mx;+Q/d?xMH1zN-tGyH1ww/*TKp5g<%2l鯅1<Uuext;{CBq*[wChgxBU*t4p@/F켤C/ʶĵjNHcDB^` *Ĉ{ w	){{Dg
˃hmUFJvdpPLJ%TRg8/IIn#ME%0񨴀*T*TMX
]L͋6>-9%lNE
ըTKu*-%߳=u^DX\V/Um jT2i[Σ:5dgb`P}͚5};\5m*Yq7f\]ù`]svs5Y|tܲX6-<8/]|
ў_)0/UeV\	\ǽ2z
Ѫ{ܜ;(IDu=Cl;j1-7Ÿbe]ӿ:m'67ml6$:<f7Rڮ碚9<{մϘ'6vdZ	Ǻ܏r?1tDy;5/ i.j
WlƁ.q_{a~Yol]|Xԛ1&MgUyf~wo. 
U$K}AcR/t1|rX/<ꉵeK䀃<.)mr*qafJK}n.
}/h[|5_s;)ܵb
'X4̗^Pp9?Ѳ}hέ.WR&jlmh(%-k_C3>AߓDIEzy65(.tÆ
yz<;WF}nW'eLoxK'(
F<S(Hp,O9(9[o2	iQ3x {-ZzZ[Tu4:SPNJފIv:>HN@2 EU**Ye@E:)>]^NG>եVTOaSJҸY|Dz+MUb[F	,r ]%tphⲜAdӦbea3&>aY]Vfq/5pl,n%l.ڲ

ŭb\Oq)dqW
{dɸ|vTˮbX<QMbs
ս粹,wMiy
B5:gfXB:FP#o/NcCFG8Ώ'}RZvFX*4C}91d=b؈rep	!Fq5Rsvt^x ;1cy=,zNs
\~B. 05c6"Fmߎ~ڍt#nn(n0݊tN|>;0>Fnzc39z	Gx~0QЈ/lc}8V0]CX8)PХ٘a[U~TpKKgPKks%~mu3X< GZ@w3f$xҸ,d;r+W擷jFKX$\U aXfQag*qy9%)}Y)sDnD,0e%(:}_L;bG_Ŝ\Jr=Q;d33G7鳡"n 7yy8?1=xAo`#xجԙ4|X^FC^4-gC^N"/?;?^CgK5f-hUo35A<~
7&q,TŋiləFPMk,!q=ߒ4;MԘ>w,^ZsbA+M̼ܸjnUb϶jeU9<4~φ׮~+W2^A~UW_s
Wd_*'kop
{+E!&%Yry*T{7qξ4ӫpBqLzG8X(O᪷rZ6ӽ뜖>܉ڝ'>i榟]EԷ9up]E[2ĚTe ĩCW,|px})lu܀Or8*rOcd崫4p}ٜgÜ ,4 QJCX@aT0Q
4&ki什h$v>9Vi\o
~+p>+!<Bw8Ww3
gXelAH zL6즟<s<b
;}bWy`?x^lg주cbיz:-<ֳQ-璋[MfѷyDD!>ZrA85̳J
ZMy-PK%إ  6   PK  D:U            \   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$Builder.classUmOP~޺|'nҍ	&JH`%fJv:/M$M(e860<s{۟ 01pY+22dde(I*C5	THCsP\Mj7-kgr\WuleuէkƺHw[!Ƕ=@ 7U˜bE5
2(}BegHЬWUMD_#_Tjf;{ŝeSs]Nd*dw(W#j*b2TJu|5{RBVFZڼs`Qe!<ٗnv[H`4I8
q̡p<CiBjj֦u:8ف{IF7mvM\+q+%	d0p8[%W,$=h}hۤoc`4	Z!옲v.Bi$8"&Q4q;q>LRVr_p+D<c}sXWyK9<p3MD(&0َ +aBnQ\:34+tg(
./M=u:PK Su    PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/DefaultXMSSOid.classV[WWa`/
jTP5TK09LXyCW>؋ھu=@2J粿}}9ׯ~pOeh+dø9h`M!1!aR#7$P011qS[yE8ns˱q>2>ǲ/$YuJyQ_C##yh~%tq/:n-.fkőY-fVml["S~ldw;%\zfadL$6Uin+<ao:6h!9jڦ?Нnn34B5&Ҋp(V5fTix8nSZ"#+t_̈
VBDjr}'(=|԰\
\;fǁ
CJ j˺阶/܉(WХ[E5Ҽ^}cc}6<+
N_A$

 wzq|~<'5u$QTk7{kf)?uu0{q4˴._&QY&CQPA4 FZv3CK6:3yT'nm{44Bo$+P"GkWH>CogZb*7(=
n@H
^>K9wh{\淲E!\9EBh"%`{їku{	ɟ!~⬋(9a;'gfL۶psy;#,).Xt7\("[V%mO8HH(h}ɚpZЀh=$Iْ ..AsGz,MϑDǚiCqGDBhBֲ?CJj~MGi{$Nv
\Ĝ#ހ^w> !a/͌hq'dUJ0بxVjS".Pʾۂ֮Se
~Rֱ	%'pڢi1hg&N7;Ԓoss;&W]:UI;o\;j=ӎ;v@/ju;誺oz<_q6>'W8ɾ'GGLQKО~PKAmr  f
  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/OTSHashAddress.classT]S@=KKR"V@I "TA;ʨ<-i%$uAfd`|Z2C9{r~Y,)cB;
zpҔ@i2M
=S0ddedL3EǱB˸ vjy
+2$
	6ynE`P_V=IJmeҢbjvm
A2ߛ5ƋJydxBzܪгn;޶Uvf⁛oֲR<ޱkTJxv˻\XRviڢW1bU s*Ы@4$uxb0Luūɞ.\/%7Wc7if׊L$l=kFl'y{gũܡ*neBJ1$ee'L=BWtH([j&b&)[hF?BGF?FQ;!("vk4~lTGH/*H99BzC!$Z/ӵaB6'4ѥU$O1g$=Mi	FS~j-QoKک/z\jFwI'bmMRQIqhfѢOPKZ|C*    PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSKeyParameters.classmJ@=jj*޵,TERFq	6RP/| J*z?3☟JI,$Ȑ4Nnmz;n(i;.Cu<݁а4T4V}GC(,CJI!lKx!g;g(Vڣ-{+#.M'k	ՌT{jp'v)^_ƙ=6IX CݕqS]Mݔ~_cP<{+m3*F8D㣆+jqqh%@D1hN#!F8BWxfXmgBij
4yg0;igj/=Isl15
PKZ  ^  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters.classVMpE:3$@% fC!	$$B`o 3;,63,dQVyj`%$j
=zś'zvCw{~ׯ?z `nQ~<~tۏ:,%Y^ŋBsXąG'FcCp܏ʼu8! '}8%>k#bs9/ႄ$JP$$丮s`Z,nIP&7ʤghjNU,;ͣjT5sۈNMZVt"1$̹MkXmP2diMMpNJokv'Cox8<W\i[}'igXӧ| ;氒L<a+~%K')n*wwJ[3teѝyi*9Uǝi4XTUw)P:	#k&(	"cepKHɸMH&dlsu$VTt NNE*d d1)C!y%dd\)
Hd2l-OyJIw$3/tB+t4TҮqWpUi4SŐ1Zv(CrVIl#Tԏi)n2	\(/fJ1xȸWe{V-+.u
c4{9"gm-uNY>#͈K
ܲ5551dF-ZŁGH8)İ
M$$lSS4'xWۼ	:!T"Q͂CO(QuW4	J%O٦ڢ,[])t_x;wf۴|QBR%.]A(BRЃڱrMnxEZ{?⧂
ѽ.KljdrD[Pմ/\P" tסUJQ

N/%Uo0Ja%ᚁ;"|Ϸ(3U|>J;Hh|7;c^WLj|PHuej3h4&9"#F$w0"Y!l
NnUZ;Ӹl#l_b=7
\6~|01A$e|4"g<m7m=ۊi	~	2jAjh/B`+K{N;vvh'chE7^㛄ݸ=PsCB}	G3~A?~w8Ƽ8qigfcZ.&(ɕ	1Ox_Ihf(( QCCFW{JP2QzO>wh^peȘ
࢜.]鬉]1/I`(ĜM$dY#r`S78NmT{kI*AsgqPA۔;[b
>q|D|L~M.}J!`oJI)5SL(-j7ĿtNApsPwYemþuxp7^0%tZ2v8TuRQBK_KPK    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$Builder.classTn@=Ǳ%r
7SԴZ*$qVQk$H| 5FMH9gNf PCÂt,`X6hᮆ
	wFa˄C~Š+{~3\rzyG搐t\0NpsÐeޱQヨo퇡ㆱܓv[0\J6TJ-Z>F"IRZGͮO!	kQ
dZޤwQqNjR,;
GWOfKF <ܗdr֥MZyLX2k4n5gXO!"8iXc8Mάmqu&/:&Q㧩xՑOӅ2Cu3Zz|"C#Ơx2TDp)QXk UFxs	B5"\ƕ@;b'PO9#BaJ7ha߸3]Opj}A,XI8ͱ
0nNSe0KQl֤ɹ PKO&u4    PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusParameters.classV[SF2 %!n8J [_hMBh6B^l,INC7fo}hgMf7uڞ[mAgsJ P
bD\F n1 na/g_bw2ɥ9.a8H'">
\(3ZOf1jTueK-[cʦP̭m$-+ `A-2ΫϘ !%UEٔˌYc tLm9\h{Pxnu)vt[]SIaT0# =a>EOʵ/,[-2sI^Hӓee##WE)R9Nh4vb^.?14HoHҜ'$b?c^eQ5ZsKEj텷'3X0&DiSUlՠͽLOGtq{"@}	x bEx(=/$#_I%s̥\:ŇU("
$wi&4VYX-Si
1۲Mav(X}~(IP.[wrڌJmFMESGޚ瞭jAvfv*DzqG2Sӌ"/&!.^aܷ/:еPZ0UTҾ	8A碍M:n F"`coR!} eQuݰ#k^Rs5ÌhD-c2",,iLW]"ɲeݦ,*e5ߩc5 Y
sKEK)]gfR-!>SvWιSiVy[O܁.UQہ;KYO0wH
{˙O6Sy1nt AB:IS|BJsFgu5P
P mnu{^'ĕBv=}kҢ/>;BtU+5I
+8`h8^T%*2wשcID3q,uq/D!F3"*w)`'臞V#yBZE&<R+ta
qw6W
A0aPS6'/PKiSO  $
  PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/KeyedHashFunctions.classTmSU~6ɆeiPJ#5ohiX	IRX).Kݸ?ѯ:cO|9w{Ξ<= #HDUBN$0<_V?ncVƝ~(˃d܋mE1P|2e# |ɲӴ뭺Vw+Aż ][5?g^0m'Ӛg䗪G=VK:}RCҲ̅iJsE՟k qV:BRv!].(
:
zm334:+CbIo:7}H`I8-6em83wy5xvI
1Rb*FpIe&=(xSo8OUΗe1C\Ogcgmvʴ;א0Nk2V>IX}˟n'* ߇. #GRXwMۘ&x`)*ˀ>Wʓj-$;ϼiںь"D͆ML\
^
YwY.]49!F8F GAnd BV\<*}D2c/ `:JEB#JqB%k~ AIQƐq!8G.pp~ DtNM$!	}xs`Rѹ0OKOPa?;Dͯ!T7]7G1Nxu, =\ӿJ'FSě6=_
lpUD*S1;ŞKzҘR)X%^:lgfȻ'3-W/107|Qx	
|0(.SK+䴍 T0B(7u0sg!<NșMҿEۦthv:'PK!
    PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSOid.classE0GD;9hX\KmR,ȫ9 >Do^1!Pf0I=!:la8yؗn	q{#䮬%aq:湫 !FBl-Y{L/]~y?6 <|w>|B8rDPKw      PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/HashTreeAddress.classT]S@=KKRBX? m$AAZ2LG:SHvJ$O>Ȍ +3
䞻9{ݽ/  
HFN +01!cA5=Ū<A.ܪdMiE#ˋj'hbUq\ DkܭEm"1=1HF/2~P1vgm+88
;Dqƚi<Gb_smVеz|˃[/#VhNTxTi.Ɋh|Υk̉FMʖ_l:z8oH4CCx@34!*ca¯7bQW0s͕10sGl[kB؄K%UܪQw[YY2NRvHCC7_hJܠ\~";q߈DʊPh%Ngh=$|qзIRHVHI,)nR,AhmOHvk?PJ	軌.*Fwq/DBïRcp/JԗD}p!5L}!L<z,vMߑ揢bx"=	*K^WRPK3    PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters.classX	xTO23o2y!!0!	{
A$MC2YVZ7\b+!Vk֮Ŷ.vZ4=罙6(s9ssy'0fЈ]\ЄKv˜>/3Wϕ\BƅmVx
npbE`n/Hs4;Y-2wv<Cw*˅[QpIsHă?؉/I(Nis+Weǥ%M1kS.=3"򼂯Ҽ ͋|CyYD)W}ۉ()(!AztIHAiH%8zͤcWED8b^sv:Gtbէ5677=Gcuf]rx!S\=lH$Nᠾ@+	`9u߈&s1JٓF؈/"+QcCMSYH*\eDwmCL)`]l`٩Ǘ, nVlkP#̲-'nDx7GZ/O-{z`!'k[qɭɑ)fژ֩Nѻ5v/I(bbf̘0eMF>Ō|>R1$̮y!7U0o$*@Gդo	CIMcuJ4

YiT٨E*TeGTHH"Зã>賴M

*~(B%LnJBk"F%JeU03k*~U
o5~.vY~Nś6#arz-(wjhg[3co$F:`L[SNiҴJ^RpmY_TS|5-3"Ci/2wUojbV]Vanbxۮ{ZțqC9G D#U)TUnmY؃1
zGHpaoLCEUʡ\ldWABNŨ>+&f 
q4`ANRU*Q*THE*y*KFa@EZz5oLJw{o=ɒ#bXҔH3N	*RJتl%LIH_ǽ:;,[abơCXG;BH9r*n?7/%CH:D>7Bi#[#"
kTvfk!ٳg:uDu}|zlG#bd9B飇m7o"tHG(^rWL)>FoT7b6+ts#s2v9d|DNk0:Ihk1++gUul"X}|uGWKYrӣUBu[nݨ>LϭdzW-<eLT77IuOnp5A-)@e#?Za_AȨHe,Io]p;Vv
+zǼ̏̏GSP֍|tlkhk₭bј0N,#=+-Dzz g(ȀCn(~+ym"ay]׎\4% #oQR͸nbQ!#Yl%4[vBp0g=A^$
8`lI~Y㈀wo~eiz)m'Ư`4!+Ax2QmP[ݑW#e]
yf:05
#)ҥ'bl9
hB+"DaG&ԒB֭wTa-=z,Iv%Z(l:ȶaol|F4!N}fZoM;A^fO9k>_  [k, rB>۬#w7l>8/`n8
yyTxP56HPje5JY&/rڅBPtZ\c$c cw-I1I%2J&iR<4^FLbJnWb &<OC?JQ}V)Gy'4aE)wSkm~{lOݙc>|eO:yļkӼ3,^;4[¼CxiޙǼZţe*![Y8]w,K\;Wt3fM|{i8<ݨ2ǚ3L=ڥF5dVɀE1{IM1"җbS MZ
e˳b&
Spӱ88*UՌ|8	Q+z,XqC=8xk{']4S٪դdߞkm4BAGi3t::) Ea(0]qچMt#6-襻q=q\H{p=i?.Wp9+u\CoZz;rpKDܖs
tA1nQa&ZEOA:5
&
4 J?=
6Ӊ\hH "_|8f־Ue
.\>F	#<(SwNrBmDRѥL3ϛ%VVeZTVc+KrmW2RUnZZq}*\5<n ]\Q<0$ŞKQ)xbYp,̷`H9~om}}
)ϚvgaQP4^*4ȍ:*"aO`hanQY/t2r
iA3GU)Nl44L$Hx)|ĜB	MZة]ڬ}3Wƛ}|xIܴ 
$͠r/9eoP 깍f.½XVqYO6{|5<J`PHi(v3da̺^lM&Sv}[?|._gL8lO]t˼ȋ2F2ԦP)C1T"q}B|4>}3|I!<`J&o >.DN6ꂏBKX@gOQ>b@ͦk=Ք%yW|8/`[<[+<aAyFR?X&ߏ~rK>K/\n臿+rUz'FI.Q;Uvk<v}y9v>2{EaY'KըkP˧2-t
~+tbw{hf(z~Ly~r'&a
AFU..0,N9kD3hM: ,OPK˶
  =  PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSNode.classMO@ߍ8		Wm!,!$Bj!`!1x o R??b1zٙw͌{~oyd0Cc,,ZXb	E  ?n1]#{=c3!g+]eHTْ)6ۍ`S~H_.:"82Q)Kg 35˷T/pž
œ!/`1\@	#V
5tna	kA2REoZ\l]W\4J%NIeț4Qq$=/v90X00,r)!oˤi#X}{GPĎBqS%ȧ}o)L4KR	9SӯPKפ  d  PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$1.classMjA_7:
d1ą=Ũ5x59@%sg`v$A9Y&lׁyE{	ݙ3.>OF>j\Ҳ:2r,=Й;aj!{ծP͞MI>@9ո_
54b6㥑5PK~>     PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusSignature.classS[OA--- 
\MH%Y:ݺU?ᓉ/jb4Gc3̹9>i#)	Y#hCNƙbHpQ Ћ2FF$IPiؚp9ChkkiC9_q\C:
[5ϷR+[ey꺺f55jW$W;3^1mҨUU-T_/k@0.C,|u]|!QL5McC-^L0dXm(+
ZsL\y7.0z٬MD$C78iJز ׊V%fͻFmHGcV:|̣$uܚGq3Q$Eo&Eflua?褩:VBwM({9o-
ߴ{w$ܯp;(DrhUjn9vs> ~0{`Y$#K/ԋ{`dhhA
o!?f2\RzR8MgL8؋EW!NkPtC&IR0KN` AA#	 
B%@,zpvF\|8ay4G EZPKЦ  K  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSUtil$CheckingStream.classUsU$nMi-Zk]ؖj*i*<J}\d7l6/qq'qB;Ȍ~_q<w7ʈ_r=Ͽ~S0s@8
ø	H7w-L	i	3
☕qXdqTƼe #'cQ;2KK8ɠNjƚ=7V1,{lHhˆ]}[9u0NXM2S;nj{.7*iq\DlW
]2
e(M^,ǮI8Šxzrp
A0=\]0	)U
Ro"3I.	H9(y|	O/'0V1eI<'ጊ'}	gEZ3V׫čЍ%[,J(0qVEԬGyꦸ:PhB-SATE@!rmʂ0:nI+P
ӨyeU/nT=G[jl;3F֪y4i,G"2	YOG(z/9IriJ646$EeD$d7[dwzp<7W-Cu޶7?<sMѨ?
M3|ds7'VJ_gJJ'<to)tͷFt͏@iz%^JS"zhL9"QXC+7@$n,b
錈5y~GtfF2;d zdo#Z7P`H<F4}iɃ-y<sMd#BZ7urBmQŮv^ކzӧ/\ĮG8nb1v#t!iJiwC+%_>g=ė+b踋N	DC>§C30vQ/}$Oq})vY9o|׸Į
JNЩ%( PK(.r    PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSUtil.classWkpֲm`[2D
OHNqXK,"
i64!+M*$}4Ӓ	MӦ:Nd2v&t:Li=jec}~ W*#%cT*0\UAVE;,9GU1q<4u\pqB=
UpT<>*E_e<b9g+|?OxREOxZE"SqZ3
U
[32P}Dݙ4VFFQ3SZ6gJ7%jAnuEIC͍m8E#RL+m2[Z-m,sҳN#R6ui$Lǔrak;k&]j6
u
}Jh
ux$-<R>xn4)w!Vh\*L)ЖʘVtX}fuK`uTcVFY
&Q#ݦqw(%$tkG2g1PI9#6ӲVJoeӖٚ_9*㻤6dt](Wptӑxz&I6}H;4#7|HRNQ9V4cdcx^YR\J-'4^h(Ux>b#g膕i),T\&ߔAUV+ZIxq#628cH͛M-/0,+nRzBKudQbVgVP7\b$Mk1=Hz4<2ŋxɋ>8q!Lə%ܽZ2&؍s^WeЋqeUP@R6+J:
ZfpXn\Ͱ/KF	FfѲ%?fiQJZy7"EYqy1,~*}},G(
*")>ձ{皶
^km]54[g@_JB!/9e0j
R;}8VHl.|^?-NsjMDW㚥V<؍sqs/8xzۛ)/~wo
̭Vxb8&H?M	7l:kZ7qG8K\^F^HYK'm3D3=GfUuZ]0iѱla5^ɶe2]pN-ov
tD"{k!PH%LF)*y[qu7*u)$(PXPrL#-Dr}949:bG(T+^@m
˃∖Lo/hMZyҌ@Udx<ʙѼMt'\/5`GsIfv^,5`KӥUMұ9٫6LhWA>n%t
b~s]濤xT#=5R>宭'guzm
DqzExdPKh۱F{vrrO(rMA2)g{t
ƀoPNF@(IREQ&qIQTHE_8dZn̘؎rzn%dv\͛
h>nta!G{u}n*2{'nwY[xٞΆvw4p{m%'tizyQ4%FTЀUnr\W Iw?		&t]Wx<HkEL"IV!Gmm.y{_Gyk?<}MFrE菋{L}ׁ
=w'`)CSCkL᪼YF8s#FS;tlsPlRrNTޗ&x1rX')ğNQ<I
`#rf1B[	M
UTj"?(`>͞'/^DW;sW%9G qڨ-MPGo6^þDdX7)߲#K*Xy?[lh聙Z.Svd <=t
rmiƵ']cmdׄ[*q#j%Һ(D!Uy/U~/!<oϢ0%\jpT4]d$T4
5/%3_ON'/2d2*61f	J>aEziJ oGY#=`[?X0j8YHӮYJbX@mNG὎QtÌEJ Cwj$PNDm4&R5AbQV]GChbaYVUXU2ˈ>iy~;˳;#[K+o
_dW!O@',@l+^zpmELẞ$oD(2s3JDId[dP:P:Ϩ{aVV]Dxz"Z#-SXٻrn*J5Sh&X'79FAoZ6vWxrJ>AX1RRq㠣L
6S5Am}1P7kOsnFN89b?,Qh@̗U<X'D
H?t=ANOU/UM(_s(_w'>%QoPKja+    PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusOid.classUmSU~.K@XKK[ҚDh B#HJxi*.۰ٍNG?Ziˌ㹛ռj;s{?z+)X1\Lb@<>Q0CsB3X,$3
V$09tC8*K@5H
6lJ fP%S,Z,Л?oZ5a*%[.Yo6[gkۥtwM;n)Tm=WFp*~XVaӪzf13Org 㶯c3h0DgMmH)
6_#s\z`.qH|	>_GhS)$:ߩD eְB(zkeSoVTQWpRsjYi]zhJ~*92OV:FT\CZƶ;a{Ӟ5;E7
iY[ѽ}A.,ONMөvIiQWB"tlv$p$H\]iF{K@!2vU|	Z3w
!$Y+MSFKjw-[&yZ"?~ȳm6m%<_}p+UiRzYǲHIǆ{v)M1A#KEQ0ZOdCRSkaY7|=q@'Y6wyQQ;b+]7Z̴~ p۸oBnY!Õi: ἘFZ_o@SNkM: $IDzS`'H=T .D=m 7x\NDvcDrjŧP#(G@g)l'I&.Y5
8{֛u8FNp љ?]4Pޥ$QqUzU]s%~wuݫ)'>ǳ	b;Z?F3hSkxc=7XC㹖p~\ߴKOЮ"!Ht:03>JQ%Y!c/
PK1H^TD    PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$Builder.classUmWU~&[R-7)
JK+P%X$Уin
	n>wȩG<,[HF3;33޻ f2~|"@A`EgE$<>EbXa=0lc!lѬǦ5=̚;NryKU@X:"P7JUGr_RUBh@΂[EBYY)!l7.Tk0$mb>%̤j&_r+*Xj_QQq$~.VhZyIz]+5q`1]Y
iyMT[?k^7ͦ_B[-K`ۛo?ohToz=me#,/Q@"4r9a?5m?A]䥋՞t!'miIy̴:Μ8h.t<couF6UђꤟzmcH{71ah! iHa3-
_`.v˗^;oYEf_e7+g/-dWw]fulۆܲrb%Ћ\"E޻. w9gO!go*b͞i
z	Bz	bQ@XO gNU;St4!0[G!G&Xu~1}Tjt4)aGMcA#x&|AR+9i#鎚hf5K쨉i
YQn<gM#<lۀ`7`#u,op]L!k!Owh_W5QyC_ƑC
?ES(RcA@j4:HQ c<	Q?B 5c u1JmTޒwWB|[h<c07PKv
    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$Builder.classVKW[UN޹@kT£P>,T$Z$9¥!7Irpȵt)AD':щN\\N|}s	.$ޟw!cse6lf3&f/L)t*s<^Eux)=@`Q@hƚ&2l\JFQZ^eKltj,V_orI@Xݟ%sr\ʤgf@@-'|"edrDHf9=']
2oG 6iKf̝#iJffZ^/$5'R	b#
TRZt.tZZ)=y82R-oHhvi+*7VJ
͕Ef*\&~U/)tvmu5ȗqܥh\#FH%O0V\dOKr!vWo@ܔtX%_'dub1{yםR9USNWL<>[Q<9dr7\ۼ~CWq8&G#l4ygqޏT<
#
UbNna5&JX@Z<8yzP)===e-e_ə)ʤy	#̷g߬mJױM?43,ٹ@._P
lY?W:q]4H:3{;pn
j雇=vFG3efǧCc5jlyK3@}ZxA
&V`gceafZWCNd?oF? Gh§gJ~AJIYEbVx~|N{ؖ%|Ivt8	)3zU9_!)ҹc[7-Evmrsr~)ҍ'g"<oA[CtjZB<6欥:?Q~W&u;ea@[`Cd]H8?(ڇc`J5 Ou8hdWŻ=.аpܠ1Pz[.AW7PIW
:
A°v49bE<f7ޫ:vʐPKR訆  j  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSParameters.classWwUnL%
m(

hKl邦P*"N!:dR(+(* x{x<A dAR޻νwwL~tK'~〈F<!<Y
YD1FJQ=W!N(T>0&
߄9s*©(p*&"oKqTqLbLpq'O
8)	xs:ŧ|zQKxY+UQ9&㽑X":(h
CEay\&UN_
鲑=O[MC^n(!%#qCS#o 65"cxܻOV%3
#j$QE
Gc̈)65č6l49{{#*Rj*yUqb
߈zS~8ŨhĈq&qo*ɰ]*Yˆԓ'we(	Tu?QbVNWҿ{,8VߐcbB
rާ(g-bfD2g&enpN+eix#%$֫Dʦ?BͰ*Mwˌ?ik>ZDz/fٖ	3 }y݉Үf
?%JGC剮IoA37nl2[jX(4l?Ph$N
^bXOhtnyL{&Nb!Q%m#~< a=60M9+$<ā;9p?6r;+=Ў5Kn(6㣑tʸsѨ1m 7}	&	⼀>9杪,vwQKH$\g.q2>W$|T)W5FM62wIzTc4O2wI=
D >99rAMvII;騹4\;7~rHNh>$/_>ˣcs;{}%ki
㲖PQ@HVFaXnw0[,z
o?y2ʡG5h0CXG;5gSl̃RnnP	BT$p$Hw wsgWKƞ:W#}f,MthWը]j\͵ZFkO\;=LZ	Ҽv+QH@zaS(N,E:]N\q;JL	\ŗP6)Zj[$&QiF$:J[P=;|IYd$8YAFC=5Xp݌72DqlC
v;>rⰛ^Q? ?a[I
IP@#HeL/-Ӄ'.༌z(v];5\p
nUO#a<SD(`/2E2ZfPb25wCqΉD=Ic)["4YT%Zj%&64d1@I6Q9Wa>%\S
 S"
N;2Bh{,fJ$Vހ{4Ĳ~{2ZDVΠix
+XNu+
1)îLcaצHs]j+(vƷ/p<6ӆcK6+;nQAsKbcݸR<Ab!L#?fN,eX<37/PK#.    PK  D:U            >   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/BDS.classZ	`T˛yK5,jHa3BX$`%,ƕ!HF&3qfZW֭.Z,Z+LX*.VVumֲfI2Ggg^w'Lqc(ɍqs67M.?X/eK4ۅnဆnVp؍^FoHE,7!#N47Klq\N锛Cy-Rwizh/=5F1y䣀jF&{3s꣑׍ԗ~~F]4ȍr
ݘ/ݨ0NDiNҨHnTʚJJ)֨čY23Kff,!$J)P@-iyls4'KST`4A
&
4Z1nDݘ)34Z1SQ
B2M2ݍ":!H4*iht4U26[3\4ǍU8ࢹnyBs(;BxqBZ$EK:SZiFs\ts.Z*|.Z&Hudrii(XnZAAi5
i&t/؈DТMȝEcPl/l8`!kU8lJ#e͡uh,h5]XWVY4FeK-كc87ĘE96T&}X X6'1^vM>5Gӓ-5m>09;H8H3T#c
F(XS}$)8#Fk#Ϡ/T_VFdb;"VG)ǺCua4evB~4G
?,F_K5bSEѝĪዙt$	eFdoYG]xcEܴD'^sMu̍jԤх*Kw3-j!V
.=oF]/`yUd猵8CU]MXc-:g&g>kd*Zb+;ɖ@tYEípHu\,jZUن)MYعLa)\xty fB=H0fgg:1	5lbvapn2
$g(ea'~
'vQQ:co>NXdi-.)9.xM*Z&TU@H>9&a?Hzw#AUԢjn?ױ[t&V/eJo؈M:6}BvF/Xond}$%&XS+*\M^w	=SSVx ѝc;a<c J$=XcByxƧNХ.+4ZӕtFW}NuI
tn tN7Mf،KzaX&eL[XHdN˓'x!cr#MkZҫB!#2=F
V:q[v:m;u%N|slSFupJO3~DQvImh@턲.ǴM~~BSڮm C@vQzL>vS7.{HtVvn6a=SGi~.?tbioŅՅVi7
E0?gtz=tN/]u<8&Blui~w}\;Ϻ٤r[F{/5˥!&ߒDsҼKaiwD؞3j^Bu|jp}R9F]!]ķӔKXcsvr46_*U/x*%L<5/0VK׾<al&plh;MR$fXC=d3vS>˪!ӁPyLE"wXdaBܑȒvE<'Wi:xQZ7=['
3mwfUУ]C-6׸I(h<35r{`̮WbeXBΔrG]0bQk2$_CTWֵ1s|H(.jF&dVjw8aX<֐d׆ZP48	'Dg_L1)v~Nt:sw{h7"-N/!\_t-g@QcEs46#Bk6qNf;voߐV'&Tdd꿄ӯ,71oK$8 LەǟLI]E&&IOH_SJ:
DOklMBN5bL	M57odvv|XF|!1,FJ
/=>ɛRq,"[mjdVp[uAы(+*IEU_Έ^iXB_ h=HBk>e5[~͊Kk;
r9
D/~+IccWe#RxAK-H{偠Ukr7a׿p`Y2_vY#

1A؀\ŝ(.^9㊼{i?v<~{,m~vhryvq^PP\\O_րVwQ<`'Nh?	n 7=0Ǜ.&ٟd+4W'
ТR
WlL>䦛䞴]W\8=idgێS§Ii>Y|b8f`j9	qhx[C9E,7M(Y
wqNbj-w@->	9MۆnTqzԶ"'چ^zv	ojA߬r$6?oz,YmG>I([vNmz6p|.q+|RxC	zb9@=# ]F4V\ȎaDADIYsbgl%ٽ(TRՖ@N,/]}.kL!;1$];;ГG{Plx`7s;0wnH|#8EՌZP*JwcCqp#dۑս^^ꍣtIynWi~qYVvcS6F؊Qbb	kr
Z*DNjb.bp)nel#Wp>XQ}%j|oq-)ܸ4@1Y%clz^PqB6TU9F VN1Ybk_̕e,)bbCD2y퍬l7oacfv;
l;ۻ91=#7
>KY1`uԇS$12;	K&!ۆbiá
m+RϤ
0vD+|F.;4iAմjZP܂/wIfzz21zel
>BO磳^+ȼw˭⇙BU4ɇa<CN<KyKl
`zjzv+o{/v{:ݨJvP4vI9L9L9KqOJ?^dc%6lWt^cӽΦ&g_286쯸xg~/7CG"q]Z˰ϮL~0d[䇓5{,K,pRbSmz(cb`CP

ddTZKf0i{0U8%mm[U{0B͐9'U1q|'X5r~o,Zk|0Bq,LK^]+gqqq~~W󪻰eogNeb|0Ҷ[lz
tACt[ٞlu#Ix]zQl./K,2H x.e"3HPp'مNϣ
ż
-S%鋼n;̀iǒ15$`8&/T*,RUUuy7ԚLեZ|ԥ	sv'̄%kQ,>ӿWƕPKտz롃\0G#Qr	Nįs~D.*uSԛriCcMzRzQ
Rԏ z{THt)=QTL*UHe	)u4JhZl4NA'+OQ"GOhMT/irVM1	;5L0s
hh8I4 [f?v|nWcI'OPͼZoijjʡk҆]njޓTu
(Ce/d`#2(Qh9q|7oHM"۷H&'za'GӓLO,Ig*8t	MHl8;ƆS--kT.h:%b53b5+b5;b5ݫYRC'rQ7,+-
5dǕHzq\l'&<%gȪ.kIv.-weI6\T.u얆n>+ll=8.[^*<Zf3q9pyzN$YhQ\k2"Y~4
*@̈́Nl9(Np-j:Q-YV:t.\-TOɏ?ôGE#|2´.(Jki]O-th
KmTQ2K+'xJFW5Jݠ&6t
W>=ʿir6g5ݓ՗FY4:Dn+B
C'P~5.Rf Rk?m_v~k֭,4qУpc5-*i9)>F yfKp]N.Ktζ#oU%WmK|oDwfp%'m?S(wm8J	'ö̠CkNpW1W轟Y([܋,S%a};$~`x}+w

2r^߂F>k0>X)3A"=ss.8{t?}Jos|C⯼W\PtHK[1l_c#z>	h.)M\>KI:RvQ
{Ƀ~}Z`~<ΜvHaKp>NF*uh;hB'^?w!o9~|Q#	>Uw/o'/iVRU;-i[;Y,N6VܖDHU0QNiJ)ŦS3$
]Xfd yQbteIFuSi	J#TYn_`U?PK
P  \5  PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSAddress$Builder.classnQ
i:*"LkgzjӤm4^@ðC*契&>e\{8unֿ7l~6vaEU&#MFmsVdPF;]as8XA>~lg=˶}"䋅WZu%˖_tkܩ&YItc5ܡEQp]N*VkulkZN箫>T!Qu%NJIѼ:~|iQY}>v(bkpzbGǜE}cabGuqph@І 
'bRޫ>_>5ZӰ)7=qJdkX,d	\R0#FIl)`)miP0ENUJ"\($<y֟TD
iao$5CXC3m27%mj!pihm	$9)~Eӈ!;*"X
TjڌpI>.Vp_!a_I"+r*;;EʌrDTF@j(z?SJwwG*PKmh    PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$1.classAk@ߴQ0?]zW "
Y4ٵb(qs/}üaigBV)^֚	/ص՚tO[FFikSm8|}f]%J)fqRB85ދ?B'v-gOo=BKSmy`cpc/A/Oq
WPKyb     PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/ExhaustedPrivateKeyException.class}OMK@}֤O=I/RA,RHqeݍMi~'?%NzЛ30oof?>c/Gy#8fjUEUǏ$qмo[5I5Hy0kFSwg}\P7NZ%YjC[G/8Z-"~#:켎c݄szrg-:`ސ	?PKH.   (  PK
    D:U            7   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature2.classSMo@}떺6&)BJԥ5EhD*.=9u宍?*D
?ubzΌ?}`&*g`k8x𡊴膎Gla3(xWJtB'ME0:aƠ1@+G6{B2.I5c	C!}I)(ߑ>i*
:a/J|{N?,k_:Y$]x {ɰ~H*D`(.?1QuH[Ωq9:}9jsuXV)Tt&n1l^h/CMcpϴT[^48SQ~,ޓGN΄IU4ڠQՒ_+Rɩ.H96Cln|3V̝gЧ޼ BIv::XT.M"o2p5Jh.*[PK  y  PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicParameters.classYRQx4	2L -8QDP4
ZŃI`ӉMb+ph)ET W*,Ϲ"|P=SNw
@OUV!fY
㎊ ø+0

L2	L1L3	C$ b>H3fMqOR*S1
r[6JՆcm7azhFEg-wHm,W<17D&kϵ}϶})N&mvf
84XahEll݊Si5] 8е3\}Ac7J],t.[u٥7S8eSm3*i{<UmZN?!4a^}6M^0	
,S,,qK%Œfae`BZFi2
g&X^Yn===3\|
<
x )Sg<zHxӒlb >^uϑ˒#(!|C?ё+2-@:D:FhQk^B$-$s7Iħ1;?BtF{?ds1B;p3"ҨAi:BtJ&*.&7z՛}{;GnPWnXnDQ]BkeH:iaP7uо5,-9x
;Z{PMaPK$E    PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicPublicKeyParameters.classQMK@}۴McSkDDoisRP`E/)().%&qW
'*K73ff~|ŪP+#yu0v<!k3[FGf'	b'E;nqQ`.]nu3ӵ=^q͐?	踾WQDSHGjA,8sӂq~[U,XƊ"T{Nve؛oKT	bu,P(gM}$C-}3y9K(jt~EcF!d

*Eu̎dR	
~X,^'d#/PK4J  P  PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature.classSn@=$	
J)Sa<D j;6~ elX#*C;Vź4\{|oG Vl7aeB5qCѶ
,踥cQm07@J#e"c;<D/̉k[=jƣa&Q-\ڈǅ'>Hx;I^2QHX,?JC8&P+яCcOH_qD(Mpk/CEfsMiF
wpѵ1YS>.0,OT#xl+|:Ɩ؀9<ܠ$W7:nPEcB=$-"}D]wfqG5EgJʣC=9ǿK`P4Q%?69:'kftAEC#o"˥*	0PKQ  8  PK  D:U            A   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Tape.classV]PW6&A$ZՐ Xb	AAQed7&o[;Kg:v3ǙN}Cܾo郵l"`{s~WG
 P ]8E;sI7~I$zeB
:brRS
Wp;ȼ3<;`ü<Ǻ,|Q%|V0JIBJd
W7$Ú4-C@G.N&&첥Z5=g
(eAwsUe:GZ ΐib.'6#R2tt舾hMگ\!|$ȸ,U
nV4):Ju!H-2dqd6>]T[Ƹ

;UL0y;T<˳]Lt&aIY*˸"

eUT^WnxS[x[;b?kY}C{ :# $r52tG+3J\SS4u4b:A۴G&2J8&WY!󦑜qxYWr4pn$~gh]sOpsLPRƑVU/.X}#Z|@
tʺ. a-OJ5LQ)z<)yw=/hAn74qKCۅ+.`曞1HIGʘ%7Ӄ?(Q
 LJzUVL1j1b?p	,װ	>V)⽮׵-ޏ{utrnS|Q5T8eqTqSzlȭ~NY˵+k=QHt}s]ዎFfAhΑƖ]<x}Dy ż]I"h=X ؊rLo$^5d	2cw!#b户:tN_W])s8BRHIBbHeCxHGfB*Pg%a~YonvAP*ѡv!v&MYZ_ \H*q$d<D ģ(R2,9G{JK\VRXW'fG]]2O¾dҰ
ASWƸRS|ɫPD+XmymmޚEl*
6׼mghK6oX_yNLy ,C۪ ߭Y݇"³V5E%*nl<yu ([]ȣ^ܢ'8/(_ӧ$w\$4N
pB8
]8F7g%2f\:8~LEJ^ݑ9
4SI/W2K%?E*̹<k	s_3=]3)G9DOTj7G=Eb.Ce+"	e"
%/|?}oPK>  
  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/KMatricesWithPointer.classQNP=G*
Tcq1ibU
^-VܘH\~q.!DŜ{f=gf/ PCVEKrq(XfHvMOg.w|c`t1k[nX[[
zpK?T"UfHոc7n.V*'j
\g'\s>ܿ=ݾ3LEUXu	Tġ0Msi*SsBv3*)֬4ʆa4ic\?0P	#J7@^|Q)"j7H/CiA.
RH|t2:+DS=-QCR
ʰT'BPKj]y  ~  PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/KMatrices.classmN@87_@ĪUw*$$ذrQ0J`*L]ЇB=c HQd͹w|g4 |eandȖmr4RZ@2M~Ucv<B댛(3 ΂)s-0#ϰ^hI9<~8rř<Q&9IaV?_7
.fPv5$d[^g=AHő00GK§hl>ebY&)y%zVyu{G
^}{
ς4IR
$HX`¬
֢֟R>\.MƛCkK^Lkԥ¤u<*';N&-j-PK3    PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicPrivateKeyParameters.classQMK@}ۏ-zK`E/)(i]JmRȿRP 8RA=,̼73&-1aa"r21mb
Pʘ!Ӫ3{SÎum'baOpw%<%f\KܑߑYoK}=X]{rH܏'*)X85r̚1L/K[?Hjcj=#=mձJߖd$&!\@E7Y:@[{?!]J#[JӉbK	}W3=D4^![JGPK<gK  S  PK  D:U            A   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Tree.classXp\yZ%]ٲ$W/ieI~0#la$iJZ+c ibR<lC#Dbl8/ -
&%a ɴfJ$̤ɤƠ~wWk!:0?fDC!4V}JBwKi>as!=B[FHE?>i$?Heii",B:pT<(CExHc2:r	/01!71*[
ގΫv=m͉@<9NV(nν]7oվ{޶]ݛTd&MfG6@-|ö9B3fe'S1;iSĢhW`􀽅
=|x&K@rxPtOR@R/H{Sɾh&nkKeSCdy6#T&8`gs̺z-Q_>$[hoBVĝ;K꩷oM<ϮSh"oѾ}EM~|ݝ0uoOЗv)OIO]n={䯾ݏS(N
BAM^/V(7h嬞!nw{
Z]
34O;YBLnfZ329	K9[TM^,s@:gOG+-Ax|G1/h8kodhfP.oww/1h_줝fmWBM"P4s78ʢ~ks]$vnət7s0ۍ)2юaM_
MF*ou}q	jLX+͕c>ƥXa|;=
~|78!]~|/gl1atc['za`02l7v]FcH;IIӄf>dia;Ok;jog9f?N1Ddf?}ȎrNS1γڂ}<09i~1~#z"H^0~
2Jj"J<?&b*K(g%xb/|BiߐNGGHj	wkk$_TRC#
znfɁ-I6ĚaOD
we$Y-f^>gE9Zeg_l#a<HJkNooBL<Nuĳ\ߜţI'<,3JҬ3sR׍h&Ӗ~S^WASk9jY4.\9bCaD`_{X*w`n]_0ȹy8
b
I7aKz	YjƦg{%rU/LވÈ4
;f(FI"էQ biӽ;XM'ԜD0"׼$Űse"eԜ
t64Y$020NcF~A=iF8DOL!#11:kyڬ
(gZ)kP6B7p)sѭQb[;鴣t׷H3IN^M ~,])Z<\J55p
usܵy=e
%,+=
LvE 
҂&%X:'5 jjAz=۸6.I)0Cf}:Y׹ҿJ۴ov_sSI+
?X^uTŨ^?]:HwcFJI:FnMr9Zœ:tJ*-%`
+^og28Y!oKUĵc
PZYZV!*r!I@\3Eڡv84-8,(f{'~|2K܇*|Iu2_!X/|6AkM;X
0ݪ^WlPupfd]T=~l8[Fomv6zZ}VWcX4 i]P+-ַ<۞KGғDoq):iSVc<r0^=ٲr!)TăvK«EXV|\z5壺%@+,Jyد"V`ZGPv[}lc,n 'ĝVi79-!gVmQyGd0(fAQVw)g8cpb<M{k;+}MAoC2Y~D10d^᧬2Fb\` ?'
+>Wq~M$|y~9{#ݛ;L2G9}dH3񜺀}ժ<*.X*׍ݜy/T1s4=Ԕ;U4wu+>~׆ɀ"HZ=U
Q 5T!́RgU)UfQ.1W虑*1ɰBT JR0ܜ2{xk[i1ujh|KIUC`Z%T:~>k$C"On&ɛ,_Ϙ.aV^'_'yc'qMsA+MU=ϓZbsԥXZL]XZ	{nu*_U/Yp^?{µXX̱VyX΃HkmKbXx\rf!!ϘuEcĈBgE,F-\ٲҔ~/#ؔ<A{VAY<8悎x+5)@EѣfMDbF30:5ͮщ_h9KtsFEez=oTpڎ6תآnIdT>lܥp/PI<R*jϫ[7_CxMݎ7Qվnਠo|+LJg]jy9b]۫t]Bhy1K?y]/0EvwRݧ%{^5ӹn@\À`rn'dPNW2t5.ˡY@w<p'Pl:
Dj̩TRp4y]0Xl`VdP A䫴L=\}Vz㌃obz4;ȪzYQ':ߨqm0rQ.ڀf&
ZO"auUϊ/zqxb`>I޻x<[ggT0bZ[嫓Tz	'H<2Ez3Fi_^e
+kTN㼁]\߫~wk̇1&9Q8+yuY"KFwd)~_m>p%XxDX[JWwG盹DPL'ʗ4ޙOkU(7V6t*46'rLi&=1-ofJu_Q%6/{=
<&>		OIw3í(e]lr}?Qϱw9M(ץ993q?Yh]nIq<(QrXT3{*)|*_,s+UEg^)EPZ\E[y԰wCX-ȱ^~jd%V`E%V&_
)w >31VeJgrO3JUq)겚U{dU+YE>yXVfYP!.9Xj&Rf{PK}    PK  D:U            A   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/View.classQN1=50_oąѕF#QWCifơ2QYV>NzO=p43XB):*hEUkLj=8`_27݆T#7^~N+)a=.sg̓<ۗȝ=6CMIu81[^pq!uiK|wylشL:²ɰ>4N_p)ҩ%_DciHBq3;MC}C/:(*@Hb;X}
9A\GizKFsdKHF	"}=<1, PKs^    PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature2$Proof2.classYo@q$)Mcx HQ6ڒS𭐈3V
}<ߌ3; q.{.
*:S͆M@%zص'@@i+ E}";RY&ƚv/C92L#-8(64VzGi:P4z8:>VE(ưЪ4ީ<,c5=4taMcZdLLK;xDM+:dڼ k;#$onHPSls_à&I7$$U^rwV=*ehr_Lr_'{(<Ab_oEGe92TarRK&5Tr[:\Rd;h|*tp[UF+p PK9$ě    PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicKeyParameters.classQJP=MQA\KUQX$t]zH7RP~%NVf<Ιf_^tCDm
:zp"r!3n/#b^0OHO#G*#8,3(gɍ`{Q,.gpLs$זU2\GeۍO(~8{]h@ÚTZC#?͊	q墐>E
]A^|
+dP\'ly`j]'kU%6e[0[=v?UC֬fYPK{%  3  PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicEngine.classŽ|UU8>sm&y)x!KJEBPI DB)4cǂ \.E׵kw-몫fν$__ι9s̙3G }(q>OOriYy^0T ||M4DH%Ӗ REoS]tHۉ~|-g~pC?uSc?~r/~/9į0;s~0&'?_?/L#ܶq^~AZ))`h02
	}s2K-HI4KuLTKtpD?':rЉdpЙK3)EWNfS8y=80zqЛc)~X*|WsPA_

KE?۟
9cʱvqǧ^*9z~07&F01FIُ9$W
{F1;h}̥SS91˦s0#iY~ĩ8kKq\nyࠒMUj%jDX96SK9XrVXb%Ll^UDp.pp͌.f\BA_ɵ\喸WWqp57k:q=q)#ȒI'"dQoScuMߚk-~BbCyMciʑ++F646N/i@6B]|ҩsJgI3&M2,Z^2iƄQsvSǨ2j<?fJh+1q+.ҖTS挜f}'X6p,4j>W:yȒQ.2
SsvQZ|SMU)#&4ejT&oCX^#JGsA+3jS')3jʘ^/o{^W۴hJ]SmE\:n9/i"ecZFJ'2fsk"gT7V55.njJc%6A0yTd0ɔ"V\^X2brEʆxL^r^S}u㊒ʥ5[!~A߹k*Ϋ_)u}
!ח/l>Ԗ76WT.hB,l$0+W0tC}hKh**k+'6-[Y?|nMbrܚyHn[̽Svơn鄍y'/p3;Isʝ=e
bqysVW_A	)6Hq"kyob7{d܎&C	AWŵjx9:8=T/eG^Oŕ"|/Z<oNI2!wD9x0L"inCcu#q=iφ	7:2\E@K!my]yQjߥWT6P~y
(i"{{fdQU55[*$ݒ[8E.+,*r\g:xbb_,\R;9nHSl4!АJ\^QAb?*"%L$j$x(pKR2lbѕ!I=U/v[oytCuKiWT#&	.IDIAwسoϫ`7AV
\{`U(EuDu⑃0 cTݢE$3=Qڳ^SpRS/ sTO1(+_TX_|΢&+b#4VNRISH[R]i\\}ゥ$*}fl"6R:ڊ+j-.
c/T/l(fi8SqT.O51s$=w\bfSFU5.d[l/&!bZm&/[*ydiSd9F.EL|B(neT[C2KEG!q)ޜS/7dQle2ܑ7-/_1fISyMb,BѨ\HH&[FJ:=3Sr?NTׄKqR\.,E&`7Bwt1A񚾹GJk˫k{wv#S:O,8N7G4-wUj}Dmm|bnryR)iQKh]#bqlsb2SZFjݝ,,
Wi^P#2˨rꥴW\.!:Fm+	~XcЦHcjEXugf7VWVƱXڛjűTsڤJ͟Oۭwb%ɄS˫k<1"2y
WiǤ3ҺycY3N2vJ|3uF.p A*>,9H)]зU6Y>rH**
q%nbAwOslL8HI$3Y>\HCғF3Z%xN=lMq-(Sm{Ľ6)G*ڸ qsxXbX󎦹Cq
Dc5Tn̎KSNqyO{T7*Ed]b)#b7B##GVe(([<*6c4+l㜜exO6ލ8O"!v)뇱iddm]c)ng^:\lCQqTAX06SeEvc]61z6'd+ΜBW&{>5ΝWkQyt"׬ȞKf[<+wN&m<8%SlWīxMn70Hϰx<oR).[8/]['޷CGq8`0e8'gP#$L3?!x-^gOg\|ac.ŗ\EP7%eow}^hĿm܈l\TGsq-~R3,0\Ϸo6l\m
[j+p-m(adWU6("<*]"qcKA+ xǒ1&}TL@I6"L?칊ZHSl<{8OAȈѹ+Ʀd,EȊ8 "
HqNI}KĀlw*6\XҲq& ٱ"cJ-2<ݖL4z"EXkc%ηqVx#dxB	Ge{r>o^d^vܺFYl2I&2 SlJ"耑bgY6M#1+m0^Z̖i^nx-;N6ގtfFނ"tplYrbk-U*ewşN `5eg[f,[v]Q9D	;_v-Z{+	BA wO`1i^eߥLm$sDcceH|+DM+"_fKZێ-͎^nkF6/UWK,rH!$4Z{h.~G0iJcmZeJ݃N.vbMu#e.ZWF7Ro+4f϶/˵}1
f銆E$.+QgdBokK~&xyU8~ʗd`,f价(c"uQrV\Ɣ^L>y)mye^*RuM[7bS-K.XX-ѵ#nZWV%UhB55şkűrGHҔ͋#Rݗ4EGD˝O$xtyc9j&|&̒|SFEpiTp:n#\}ZAz;nFm4x9.}z-lŐ<F)pͤUu'FKX
W*cc}Ӽ8ag;*vVRY>_TbDDImN&}tGDġMhn7lӐ=Tz
g&s]'G&yZsgѴUQmMD<CD[LbhSRm3. w!
,K	5ݤ	k*'UT6\=-l^불"F\_F-{A3fi8+/&nJ3S*4USj#3<fn(Cv$1=~e̬<'d#uBf
Oj̊յ5ћBPܦꚊa
mqAK	q(C'B!jZ8KJ7VlW-Uj+G=FU;r"鹇ź}h*8KIORb͈HVz]c,)u+Lٛ]RWi1
FM$lj*z5:k8u[o>cϡ]"/nY"<!tz
@O`
=e~MťwʿoS	?ĥMOq韩/qRvK}q>>HX2hK҂2.A*9-|*6U;	^l{q'yq8ŋS8͋ӽQ#bFK 3fRE,]uP)Ue)9^ծAAIUe+OT:ݱ[j0Bw( 'Maޯާ*TGo)`R; ! ;H@H


&O&XܾIդ_Ynm}^X#[l/7	P Z6Lo?[TcncVHTF5k4\5nTt``ݘ'X<ڍk3(H}ܣGC7~wv~:uB;@9;@Rv
LW*tTm3;GCr9BevTfvRWr鬶U悶3T收rmYen>Se	΢@:mĪ]pO=v
l.*5; 'S'[1#TwM˦_"N豍hDr&=xTDU)O=s&e  @p3WܓxM|qsV'. ʠRհ΀%.EpqB#\
Mp,VXw
VTa8<x=j7 	M^B't2Bt\AǕD_EZ̆7\pq l&7D؂f<<V۰	nǕ
υ;</x%܍=	ŭpnnx qЂO.|W|v(Oa~Ow46<'Ry^ë )[b-V_ąW:Pl&h	L<&|)ށŇ%o~Q$
YLJ~á}7!8(A$UAQʱ44lr DYI
Lbyvb	{߰܏!
1i%`-
hx׎8XC98R['Q\!tk%b#ܑ8>s_>XiF_Z j":p%Iq<r<)}h-*2Cl]n32g҇.&H11/NTI|Ǯt'P
G
PțA1Q@Ӌ..2hR̜c޻L:
􅂾|Gc@
A+
\瘶u-; cmNr,X
NIN3A	8ha΁S*jq>`
mKX6h
ѢFܿS$&`da,KhLi@g`oPC%H30H4Cd&T)3뮊1y{7c
,yHE'LraYLK(B/$\:0vA;?̈d
mS$UO^Vf,RXz:KQvǅܾ1⁌sR6(LA4ؽ(ի>^z5]N*
*GyJJy
FEx1Z`׌;6pKI'ԃ	Ӡ4vD؄h]0i$1=OfzfEt@;reD+`0ax&ĳa&p5ha5^HGEtT\BRbߗ^u9^^9x
p^x)	o	no|7ނ6=.E?WQ`{ہTL,-0ľGo?QJG'kyLJ:Y?SJ/
hJQ RPR^X0ӉZ2!I}tY|;7?I56_&Qo cNv
Xocѽ0c5+Ccuwy_Uϋx}
4Pz&%vlV`:fT	{(1;R8
=Aph{̚]p@/hvqN'Z@G|2H:RN?C=>C_$e^!	5x߁{IG:a'8#K<
Z7=ށ?cy_wic} UlB݅!%~1Z$)V[.`їFi`2$ֱX/E	0?ɠ8"28F(Nlfr;a.vBrżEzTjEcql9pNO]@2*G*b++~nk==D!yf@<
)id` E"Eg(xȂSEW9Xt3E8DOFMo}y$;Grr?[EWıIa8N
$18KZKQIǁ_َ*z[[Y$[a$ih'.I8c^Zsf$ͩDh\DX;a!KfMqRmF 2.삚X7ܠMY|B+WٖZbK8:`Zơ,CA91'Nc8%C(yb,eb2/NYL;t%fвBLc8U->s QɈa>`ybٗH+z~ȣho$/y2$d[%IVqnJwI35r2,Ua OZI25:M, {պ]POH$
j3I#].0Ãb!y0ƽxI
N"݊p]IF4C_h[Kb
3lj~[	@u&6@zWIqz$0@
0wnM{]Iں@e{hA )*u6 [VUeE'Ŧ(f],RjFjPvhH=7xUYVlլe"sET$uǧjOv45"J>mXIPmj?9*hjec,;RݦC|<Vo9^5Dʘ@<E2b S$/HzoPk7;oxlq!Y^2+a5P-b=Tl"n}\G-f]BvxT;=>^>bbx{xha&ţx؃b$nO}|V<ϋ[U"`ή| NDdQs0zTQ-d*p&,VVm/DwImH@.ttK#`{$j	}PIkк,K*].ol3+lhF?jgh!>$t_Bw5tVO H΢]*11Pg#jKyt
F
ď Cu5Ot2nQ->6GSO7
vҙHY,')VX:0}Zyf6L&~^NdWo%Δ;ᬢ$'i=S,Jv]Ej;-pLp#&xrfa0I	;~8gr]pnQ@# %"j'P0+zz΋>5GƚJBiOdXZEQr
GH	Ȣ'XÃ1T8UHR
w^|ff^~,JuR䭐< Iu{qRivश%ͩ4wCjz`k@d\hA&ʢ4'(u3OOZ4Fp_wn00BSk`G3/YExys
b}N?Pk˹sf
=.$&F1r^߷kk.UE<RRy;hb*BDT1UtWNhʠ#c=, T]~^\W`#pG$nZUn>.Rz2(UL#q'lG)ByD]RuoLq[`3=n	݅i79IQ~a=b?'BhIĸNR@
i5D*A
4Xg>2l.'D&i22e>-&y,-ǝ|B¿S?ȡ"M剢,b=&'
9YbL-9G#'rNrLղ<Cv5Y+Ų\.elr\*evB>*W'YUy|]#oy߲LW^	yfˋ\Wh*mN+yrPnɛ9duP}ۚO2aB8.Hj9)޽N( : QA^$ˑO]x6&`lS6(`@@+
ib<6Nd %2&Yq1q!bfTpdBΛr2a;aix%3_=pzߺ61/@	b$|"ƢІE%(媱tl]$ǯ"W:
\	$g9fHM|Lv
o+/Ttqq\c[cAbOT<)a7άx[,t;ԡ^D,C9υ'c^G(:1XK;UJV>	8uU_gt]}":.J\$8BҼ7${4`m['oR]C!y'%~'SXD"RR((;O.(o˧>ϣ._|	̖b׉>#;x|!Ε%#\)?f	^-A\3C~˯y5-忄.{+$qI,&_L%NO\+G4hR|i)~,q@~&f{Zi#'q*675`b4XbpZ+d՞̟IJLVVD+Z?kBÁ.ZGȦt/-C
7;2XI8;:P~^d@?Oͼ=mLr|Z6$i Y^hr|	wrT$S.;
PwZXjZv0.E6hVyת2RڽPM/mn9}{!s̈d6f}yAżûƃ|	wv&=T:;d{6}}n8\-pgSCˇT0hFj0N Sc`VsxY@ja6jVm,ܯ-Z1<'xN jum
|WTNh3WmlLN4ttrn<Ҧ­.Gnc"6%$2OR}SD
S#<:HSv w=]M>EFc{YsuLgDycY}LemfKϖNGDXj9P4]iFM=vj<r
[Ho]becHYvÕ9>e[WOyr.x@գcTl̪*JĶlae0U[ӵ`
j
m5ypv>مY.Zv9]kW·5ӮLz쩭
8BۄLیXݪx 8;^WhF#yzfim9vVR("iQq#NpET+hZ_WG'(ȡ=3VEYG摭<WeSJ|\l%52	JVr7FY.d˰N5%MTs/vCP`*SsΉ]͡Kd]n^iHiua <vsx
Dy qzx0hlm7:qX='s\=aܥi|
ހ7Gh<#'i,DrLӾƻo![|Aߤvi?
Ѕ~2
u N

3Ϛ6|JrZ^Lx3
k\|/?40RO]?]	o(<wԱB|a9)f8IO.1ONjmz4dH:'#pL6<'	CWDɺC	DL
AvQWIRARn"FZuBMSuu*CT;g~tO!5f	fw!mU-?hA"_lC
SD;+*tiZ6Dw>қi)'!\+r-\+r]<< h\H;<$i\H?<(j6lUae>S9)'rRֹON$QԂ01?UJ1PVL
m`SVNxXiKpdi!Ok "+tpn&=ғ= S_z:[ aDKT3v3=wǅzOl{a7!ܪz>g^я'E>XՇIPQ}xX->cX|eGq>EҧdX)WSLy1 
.`cV<#' )>'iԶN#jJzQic@7zob+q#mi6o'WjG	7?EtJbc8hɮ*37@ay;wHZ47zݸ
2%)oͰLm<\Lځw1+.,Ñ{M6!]qA#u?]zwf;
%i+@C p&5@}1їF	nїJxR?Ww9M}
f͞o/m(LEz^Z TV!R72(0Sf1b@|_$zQ
a~
_kXiȧnoR$TKXOT<̍k>,Ҽ@ztXpy 9'Rٱr7%}`ӈ qI
Ӊm%+p0U,˨ٓ=46wv[G$y
N4m^l5pZ%`CGJѯ|Z(ү'Rz	7Aa|/:6Xo?=]Dcz>4pGy8I<Y3֟H/JE<O/_

F67=MGwE% p{{7R~JZw fkHE<f/[M
|jw)|hMtg4=~YYn21!A,:uB\͠],.jm2BgZn^Qf*E;~Yqz\pÅ#Bѿ o?JoPkpZcj6ŕ\Ey~agD'(_Z	U
uj9UyJ&:;Rދ:1oC<I金L;0ݙ^wxZΈzt8PΈW1Z!21adwjeq"VbHIu4LnXga 'Q<'Ip3T7LÁ+p=(Ȁ;LxȂg*o9
>7ÏlDa2r1aF*jJq/,p/zR8+<W1Q*grڲeo)9yǃmX]f'B !108\c3*qGx(_Ha~Z1c<"\g'D0HZeziinZPy-T%S=d"ldtsu*,P镫!]ߜ s4n dc4ccQL[a1	JɴN%̘
ӈrF՘E;7NOP3NAQLQ@ӎ9`b81pޗ"ޗ/Ƒy_UiD|;&;5DX*=P{iEiPBUޚ=yTTv~q.F%/, V c!"8X&
1|IN>	e|ɪmQWemchRRYpty$ż^VGcThr"fC)Mq9jX USѸ\BVN#5%E˱s+
3͜yT>ō	Л|R嗽iShj|ES,SAA>>:r%AJa\J6U:ծU+߰1[eQ.gqN0c}	)QX>c#$IBvbe`q5DGΝƸxj0Xl$%eZ+}pWd<zsHwAYЍxGMPDdtڳH1v%c4lL+hehg5	~%ҳu9h~E
e<
Z9zvnQtae8,et]gn0ImNwLm%:BIɦBvsHocV)D/
ΈbE98x$ؖUl>!τC}QeN{ӭ &wHC*oɶ!ϋy@a{iZ(LS9;iN%NiSZ]>TcRBmRiN:}ST
[	՞Uy<Z=&e\rVSʟM9?:WOG`	v	
(v`e(J9Py[~X-	nFur:)<[9XtzU`w ,#!Մ`$Aad%Z CК=J鼙/tbT(cQGZ3N_!ҺE(rQ?N1.a"񜧈:@7Yk<#`L3^SWx
ja&\hM;x7އCo|>CL6>o|q6ƗXm|x-m4[q2~gOg
M>j :	pS&yiOoJ3Ql4fxL1'#>7;_̎̐fg̖y]2{3^r+1K͐˗|Y ?6ɟZyVhM5sY4z	RZa	$bY.5Ov@JA*/\tz~{ᄃ~'pGB tqTo+8dX=8cFF;U'PNrhV筐*zfI\{;ȕ9Lsa蹃9:eDWZ˽ޯC2OmCPz,铚5TGEGЋE8s<H1'Ay2RoNc(=<E(p1OSWw+p7hqPĈgAd['1i wz ֡Y>ĒpT,$?K
I,'Met95(
Pmͅp4zs'KWvGlgxoԉJ5 _rb3BJZv*`X^Ij^q$?XM`hV@y&dg@
B湤j17<_4tY-	wX,b7P⺙'ejeۉl3]Ldm\saJڀWAy
Jf^<3O0=j^xFDJ_ΘUŤ^ae^A%hFrK'y+49IA_*)s|[_RS	6i529jk5GVZ/F=V|BrSI>t[z<ȁ_Hs̛"B68F;ayj
Uda5]h:a70]$n>Oh ̗jkd]7HͷJƾ>Vݧe vMP|o*Asquҵ=P
GV<aohK{}Lq!4@6up
ո]:Q1țW4+ K([rB|3͏!Oa~J	1?	%5k$.L(`ZjW6Ws,9̚gJ%CNk`s#_nܲC"8=>|_"s)EOB߁4'#OPd#_$7}D<H.l$zZhYG	mLR6ySRƚ 
У=פE#66xbFʲtm9 Jt+
rt c0gPb+
 IDD;/iqО̛ޓl.Oe
g
جyK}ޟIV68V7bulzeNDFf%G UGpC7Lp	n_ۏ\hFV!ִs#k2ng?!izwb7k-wV!tGM<wfR&[^igRJK5j0X#xkd[V˽L|OFItUeZk!
[l_cb(m>8r,~-Ιִ;ƭ`Z'BU9xcMDdMV)̱>F5C3C+2ʼ~I5ʀ^dSAI9ʄ^dSA/̛~Z/(J9R~)i|;	^Fbt:D5Ep(>85~ղFvZXӬmDlu*@U0ܪJk͇
VZlh-۬Z?h-nkb4\Wyk
Zk#'BֹBNO.F)#ye<e}c("I lklBct.{¸5}4)?5B1$7FBRB2f-'$c3$"
Js`u.TXk:SKNBjƛ
NtzJDtx{>n)2RiYkMcF(KK^
Z"`u9XW0agY៸P D]}[NCuX7@=1
MG|0cy\vBh GSw[-Ѻ-Hp=n:ϻ"_cμ[xkVȥi|sM*u0wLba	k;dZǽP<'[af
isR
}˅5򰋖Mu{yTrOHRR8B]^Rdbyôr~ɏd	(ƻQ&wTE
F$-h8nJ+wuV
Eov2~{%=UWL>=HzN z%bj/ӡ
W	
xNކ;p{p>qzýCFk32>m6r>"xO^
D*R?7V
Ǹ!_ě{T-P6j$~7GWB
_;ȲM#o$
hʘ86M%S0/\esNR(@v/4_Pv>iiiVsF&;gjEZz!@
#58co3x>
>RH5,Cw_lK
3vmY=Jvc#ύ$1x+섿ܯ-I(5e"ttw|f	&okp-mZᐸЦ#}V_!s  |!ۗ}/lJ,_O(ްVp9MB7 }*e68t6AoeTE~4?zs<JyARXEN<'*W{̫<X].gS9L8Ώ:hSs/xԑ.[O@0|!7:FBoQ;Z|WPN}SF_)IuMVtv bʯe	A{fFƳ܏(ir8SIGCÙl3]A~J9MP)dEӜ"A",H(w*N9=|eP+PJe3}mOލxÝZ	uȯe
򕳁ơ]DiVCߢc-+ɖ}5D/Ƀaod

AqI<?s';T_qd? ҷ`%z|'>-F*䤐ugsu&|FͩO#$S.M]
`ʬS3Sj6kFjG	n+jiI#<~L5̌2C?HZhu^ =}Ab"K%r]	}눁\)}?W.cLH3Jەb-J[.ԸwNog)ͫص:7$JnO7N-?o.1bZpTR	?wBQTA"
#8@	 ,$e/9u|zxCq
ǩ?PKWwG    PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature$Proof.classKo@u8i˳	mjqhUPPqdK|\8#Q!fUHmy7]gֿ~	6Pĵ,`:fr84ϴt"SFՆ'0KZlAM t?1IA%ZMebҁֶHW':J:OF(#ŝ0j{0aǦ+þ	
h]oou[iy@f+l'^.)w qnIǊǋ
־I"&꠆5%جsx*$Q
q;LpmG'[EaJz~K*y]_j#0)p<46cC
:%:>=RmSJ_^+өsSzo"zk,T/x'^3/}E7WQYxC'a>afm)˔#B
_iMV#{LC;OcbO],2ta!Qߡ,zW
e^7PKiy%    PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Utils.classuSMoU=cχqdm8n5mL08TJhNƚf<AqebX
ldM6@Ăa:ofHsW1L
f
sNy
Ԓrh{kZ]
UYwo[MFbJϫw^JYoY0944ۍ$k5cףۨXY(ֽ̞U[U׵rjUt៮#8jp| R
#TGV{۵뫎(44/4D"	L㌄\m6-g[]Y/txBǱ[]9$肥дZ潺!qIUU`	J=}\cM#0P]8dBFAY2#RL0̗}"bTNP;Q\Jz1
]+>b"4cƽ&p,)}_+B*ΰA4#>Gp/`/y\Ƌ("7U\
.ֱϩ	Im1! s-壋r4~ΛoғHlo5`"F}p45MUaUJҟ'ή5S)C[^2`JN|X#:6!ܳ)
q3avL2!,hy#hg$hp/ 25oC	ۄΆo4k]E/vIv}!>o?z Cdk7B􇼗%C	)*IEN;@iJL*kל!'_栁2Yd9,R?[fC|G*?i> PK[\    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/LowmcConstants.classXx~O	-P(PmS!
B81M@$
:PQATDPQ@6tTPDyw:/snNsN2}i6̧O\{99s<+x06n?gW𔆧pgB/EW\zkW^exu0[7~{6;2=?1Ç>g;j%c1vh v~#?:br򥆯영:Vr:Z~cotfqI,<X@ǥluDJҢc=Zu\6SF6Wt\9Hױm/[|Wvѵ[Ml:nfGv}u`OYP0lUx40c+X!i	חG±?O4]fviՕRZ6hX5C;mmG@8pWJ+FY[S[%bnl0\ 7uOMү3Mb~)]*u1:EhO=5$kIM2O<):xzVcOZyR$t̓"'d$]2oddɼ$ۓd$̛V2owɼ)yKM̛F^ip0>C LkyR0Zh.DL_?'iFhU`\aRr%s`Cp7LqSU唚pjp#j6E呦&+LhQvUj_WH07u4@l4
rinoPIߧRMDwӴ@HMdW5h]Yo܆"G:p/D j"!C#ָ9+o7i&CbbC#&3bC)ǈȁ8Z8pD1sW3wN~p
-0lba
keͰbW0p#ZK3Dis)Ԅ!J8t!J]q+fs<	;	ӬH$GUf1RgtqE&1QLr'@3.p \r<k1ف<aj.aaz
W2ld:-[1p3v\Vgn_ĻPt/duPwLc%TJ`D(rIp2n4kɶ՛md~X5eRyŉõJ+tkx\
4WT."*%HǩcR~|qYH#yjʈDRgN}.
q',FJpKUޯS?FL69d4+־jE=S"zi9H;}ʌ
bNa-a
 \A9R 4㜢uA8%7

P
 pZhdeE>oMLpQ,3Gqh&f֫D4Eͨ\'<ߖ졚#l!36*10͋f*.Q)P
?{&0ߌ'`'J*
\)mLYt]
eWVeW)ZHk]^_:e/S+{UeTvW){V^oQv׫Qm&eoVv;ݩߢ.ew+{v'lf p'MLWN.ve޸6d:Ś}JfD[-zX݆y\εimȜ& /s/هy<~x9x<dxwI,0 R
wS
_GΏ'
d9R͘_.+ߏ^Y%aKþBCQ+*|axT/[ҧ~яv~")'ʉCp,$1T.ُѯdo}e A5œ䊅lad9v7zsp	bd'1Gvc0r4ْ+[Rce@'# LD)OHOI0
_P_RQCiZdl:ZFpiN'uĳZ33gwz?(}$E@A(1CH_2a#})QءJa).;<b,9]DN/Ƒn万DN!a3Hؙ$))>x֩x2%?GiG=#J8<jZLgb8Gy55J£Sӣc)(\^:R^B
7K)&p)n%WkR>ОY:Ax\!RjqW(F]ט؆Ia8)f1՘&a¬FۇpCpJ*7AMT>SVO.cs\FsB,SGl1ϩ.cnV,x*a,;9U2y	\2C&ْ!GY1.4B~eT9-/<1H|tPZ,>TQ%7LqKnXy)tsԸ.̬e,qe4E*89-7:CRTZ(*bI-DL%.\G;繌NY>e:YX"ΓJnge|zÔ,q
21dyX6We49+a1kk@2(*bI$U"TXRTD,D,b ƫC6&SKԺyhXzMza>>lz^ӻzswzW``eMbY-b.sq=bv˱Sl-b'vqx\~	pwZlĽ!R,ӰR-u8`iBe%A&lcq#KJ`1
m p~Df$41SL)0?PK9  
  PK  D:U            @   META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Msg.classPJA}=Y&dQc4.zI"$xifq!`<xGPUݯ^'3zul(Q#-:vt22.Qnr|.!{!.N}/pMۋp0qrL'Xg1	]IWH~~Hzބ3TT6,{Fȋ_u
Bdj=[*hhCQb8
c*AsfI׼܉hĶdsaoh$ÒxEC)
2uoi4Xpn7R#nu:o(R_HkKd:%*a<$_
o05~PKgfW    PK
    D:U            <   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/PK  D:U            b   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Shake256Engine.classUklUvJ)nˣ"B-RPtkyKgٲ 1h|$FQ|yiP4jL!D1Fفq7s9;|Ή Pe]A6]b3fQ'f9.<1/6!hb͸ÍO)XF+Q
)h'x)d	cZS@$3Q=Mt_6XPƽzfEcyvHdַ:dtXPԚ0KsxC$YɷffB#m^IL_2	445ݴD3}+gyZf	
>2)d[|]JImVyHnR^IdEXNxsB4Znc'nԍ]X#T[Wc&L ҰxaxCE9F#ĝT1
UJTkUCX]X/J>!":"nQFB
V&I
Z̄p)>6_FS#nLL<Cuá64<r:ɉCYOP~ǯbz(L.1ɜpK5'=yǦ~Dg^KOhPk4XfCWPˆAe@Y"F,֔)CBF#}e
 w@\p|q-
|1ekHm
e?P]Y>z$M֔àc*&8.[Io=ӧ:(1CY;Z޽&6|Eg02{<9*B
v笓xtT٫XT.Ġ{C+^选E@C0`ܴ%E9mF=m"jv9(sXO@@YUCPdly}'4~әN>8i'4؅ =:z!z0V#ǰ0rvV9/*Qϋ"o1krB~Fx.3	I"MMvb\L g
57`xaՃ[`XzDUo&yUSs4{UQXZxJ<5%vώ
	SF-R4gLs
"6ւcT0=PPp(M:QqKDӧPLOc4Dz,f4s\I/ J/bGU<Iz
8No:S|???`gƼ!a3sX14__jhE*XZ.(QAO>C3}fA0,ZCurKWL_s<:Ѧ],\JCH[#

iJ؋R/ߴkkT]cOQŝLBIcF`>%<'I*l1DgH/P'jwYDoCcʚG_V6ɞLpR_Q?3~(_OrWПydx̭cv6Ʋ,>e3PK1(  \  PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaSBase.classmZ	|LsL&D[L2A $%BR{Y!BbaFwU6mQUROkkVm_WSιx{~r~9swn? HDa6:x^U {ԕGLՎngOlaޱ2~6艕Ҏ%u鮗/\g|g:~~WNw}{ƤJ{wE+Yk7ν^gN	럾-sQKlɆ_\W-[w}ާkf8S-սbKmigb}L?Gi6{cVOt8'S^=.
m^a': C8O/d_QO7}f>Z6h{Cc_KSk/)gϯڝϢ^wN&*\Z߷੍l(gx%cKc~ff}rnӷkбݬJn]q?kK~Sb˝^ԟf}jF	fu曛ޓ/d?6>֌47>$ô%9Ɔ>/xW
qϴ>l۰tYc/}lꞿ%lBAɔ-f5-,_b{ zs#}~ՙ[h){9ojM/6ǖ=z}ed>KEGn;d	=Q؜lfď7^z=:⾕;dq
^%`NͰc5~ЮÖ1lXj>3VlZG^8W}ĠCV]QXYql#$F%.<Yp$_	uSd1Zcd1Vd1^e@͗|͗A2h/k˨|YB `|e1Qd1YSd1U[F,hv|4>Z">@|di7;ćI"_WX 0}S$bYhcѶᣥGkv66mv<]
=fQfIƘxQj¬Qt)#U\]<WӪK	h&6+{қ9%u3fUPW5cN+,@URq,Uӱye#斔U).@
.)%YR=rf٠ҴyXaO5)'G#FQ</.-(+_]UYS[\YN6&wQjD [$D#]PV=
cLsެB&W^RYV]i6 [u9*(/-]RU>jkfϨUF[^]UQ7Rӧ>A69VWVwIj$͆WΪRʆPEHmx^eorLR>͹}`ivX
$$vo+sM{X~]mhrKˆw
S1:;x~"r:Ir($-Ip"ld"]$$8I2IqN҉tv$IK1CdEd$HG'&d]=HIz^Nҗs>$ILiU3SKp
5e*M-nW[Z3oVyeiͼI#j~Z9꭮"5]J[Ր;7w0r.@#dtȡ t5I̽x
h/b@+( +(d1`+(@XA-
1QPBU$*]hiT@QG kvT
E*GSL`	@k0M{)}7L`&mMlC0G+oD	8Z*x,TI
8N3t5Ze
9S!rB5U&.l6F!rB6("\b"&rD6[TȻ^_!TȇL&rD5!(:|D!S
|D>]0z<e{9k2X&r!ttӡ#.6MR0;	

[Db!-	!2H3Β6BfgH$sᖴ(Cj)Js룟-Eએަ+
K3AY>+TA4t,Ai+C(?*#!srp[ɭ-	{8[#i^xA}۳^ն`^ӡNHݐ0ףl=z" VO-܂&^NN!Ja)jR\J܂tsB6聾z  ؐ8rzM!ǿ<V
F ]BGW+ =:B.בnB5W+8;[t;ݪ۸5BW!NVK=//!C܅)ܖjX=v
w9In߲D1.:wAͬ<սᷛ~fjm&s4];.YVLQukT8(w2{/SjR #]#CxZXN1
u|χ,G
+lBpqM0T\	E0 J`,U@gb &c޿8
xGzR2(ZK!&.uDHl	r5v⡿ÿ%F: k"!Qw\ +8>q	w^,S-[39-yZ?o	'}	,KO$Y#9cYծ
Դ!ݞd9}{ᣐh)R
?R
JlXܲ0nMT 
50pV
iNu8exۮ'Qx
Faf8	[3a8p܀h r:8r:
Z)Rh Jh9SlnGv<Ivia,Ӹ,-?J1`)d	yypsL؄Mq6&&E]VbEf?~؛7s>P?C 
cO
Uag
Xp+ӺaUxa"{̆B5MN`]wDo?8!]ӱl؋y]Voݛyuՙyumnͫ۹[hmᖀFj\	=
'\&;P]=3лۊwG"Уy<
--x$ 
~X?6'e|z#}zO=zOvދ.tMyon>[t.<}zޟţ} >@JyO3,GJټL#̳8y蔡|`>$ s0Ї>ܧ<Y7H>D|>ҧpIF#|OQ},*q|c>
腨DD$$~TNya@'Kca:+O^jpRġ{:" ҉O~C@xOppOp;|z2£|z
O"Sy
<w
xG	EO
<z	ww-ox'9^gr7/
x	/g|F@ç^%˧KR-y|.wv*W9YB^+$w^ƫ^*I=&
X@63yd^x]m|A݌7-|a[7=Qo0_[h	W CU c|
џ1_Ǵ<7ȃ1p
7a&FJBPǠXbMϑ0x$'"Q7OAO~L8|K|u<.n8b=\[LAa4NĻs{bA:d4&sIR-fa"2O%$,CAJ޹4o{H/r obONN%Sҏ|o+?572RIHulڊm`ڙd(M#h:ɡ$#i>ɣ:I>C
h5K8	t%)DLϐtBwtF_'E) %$))z̤?Y)9
-u&Z2<-ܥej-jH6צZ	f,"d1FnM5,yaZFO<	xG_)H|>f&џl(GIJK/e,'Y%ߺnPCO#x\H{4`xd`z0<Mt/)@'(6b,yb,,
V%Dʄ|1RhR+ä(A&*w<{@"Ywf,wҜ!UXŰ4lUEbKʮx6,M%n~)`rcs5imJ>Vgt*LpWt	"&kYd=t @yoAy
0l2TM'O
4<EU<_F6X^^"T iu7NhɚWd2L2Vd!cW
9tZ5;0"q(/A:BvN^ն4'2DkF[|EubڿLX4^)f7)i̤B=¦Xt8WXW7MC%G`9;!`
yfh|}C_!/d&/2bx'hY4#4c44߇*7%4~}A]i%I!]Z%E[췒
wxd$#{<2p0nq#YJ@	Xg$!\]
2+[, ?@~gk74s`W065A
1pöOR&._`IH5p0xH㵁U[Pa/Ao^!f	l[Q't%7KnBwJ@R
2(ljaipO0F@=TC
CXNa[qS];rS
ǞjX=TAaӃGzT%4Edp'
{(5"AH	WЈѲ*VErHщA#uq%!")h"+HF'[tw#h$:~nnA#=Q=EBx1CӃ,+\~c-
oT
~c'*FmF|A7E7>h,	Ybq
4h,RG̗}" zr4VDϠJ< V?!Y7֊UbmX/$GţqR

YIlS)lĺƠX/fo[Vl؆ʭAxol>b4vF'v]Ac'}Ol>:t@RK 0_%WCxp7
7F!7 <oCxߘ~c"d'b41*hCĸqHA
1P		GDGE?4a"7hԠ#84āqRdA8 IΊdX!9ly*hgA$_=4~i&΋AKqL|4#\b6$_eXYR..xlJ*xc?x4q NSEi*nЎvNtth:dѾCA?094i4lXJt0C`
0x6;pGu:ޢ8
1pk:-?DbH8L1nMD:tEKI/ZBRL˧c]F30i,Lg~
%ZIUdGwM?GkL~:. Gi=ySt.&%#?P?.@Q
H.nڑC^ڝG{  B#
:>D'ѕ>L)~z꣏ Ql]Cw}n[%BѧaԾM{z>KWt3BaFig-.t/iݩe]HVHh+Zݫͦ*VKk
/Ђ5<3C ~pl2db71HeW_愌]C]~}݀zZз0czCf:,#o`Ji.ƊL4,2|Xe ːũL9+Zְcy,#R*AJ)8'Rp*!^DJ!R	mK
.%$saAYĝ'Y7"& aV,MUXeҬ)>TU,*E<*XJ<
 ڢ6ː֦íUn$XFOA$ZK@=Gx*|='IH)La? @?㿄W^"	F/[ρ$97ov[L>d7(7d-Uzd2L2Vd!c{rr.U钵.Y}ۍ^:a+ h 28$#T3%9VdVP]$ 15%gY+NNCq/6FQl#g`gQ{}K1$"kHtkع­Y LcY!QWCo-4i0NsT-fhPjQp
kШcCPKt&  (  PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/PK.class1O0&!4
1*dJ\
qp,
B;ާr18aZVN7ZwÛ.[>,.NCP+yɋ:Tj!|8 gHYBʼ*%w)6mZֲm9Clx*6JFd9=8-\l餌5MQ\$;@6QħȈG{PKD   1  PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/ADRS.classUkwU=7$&y&TZ0U aK~p-]fuQ.2P;{;ÿ$/&@I/SJ4e<L,ssMACEFޓbR+YF,h9i]ScI.$%F+t!c4_-yL\
	b-b;hq -g8^ H,f2tVˌl2;P-5aFA';JOcա>+YlTReΆ2$ܑ`96o#F16!i4T]>꽮˝TE
FGՍ7ɱFM#mTmkn,*Wy2W6R_ě͎"}$g9I|T;x2#<SóL`e?7_1~	+ x!D/IUA}wN$U1BurF[Vi"mSC%~ νl*"UGDS:':s~_pLLxb0ǨJkʯёH3F
:ȕ홪+IWU7FBUzStlm$wt9M#܃+]Pmߡ* l(UXHU\b-D7iD|
O>`sЁo !#8|ӁW1}n;'k:1}_7<gOcXY>`}d}i|ۖ-MDkN4rß./uҐu<z܄[(
p,y1hl{mm9vav6x|`<5>M0,>QKAj4xI~="i0(:Hclϴ2(@!%;yUJYVj60`f4sog	M)"ay2HhJ]g_a<΅hc}&nPKا  	  PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters.classXy|TldĈi "	̈́B&d Lb&[q_PĽVҺvӶ*v֭]l̻f';μ{_^' '>Q)cӷ@.9i1@4đL
qTpP18"M1ߊ(abpS`irQ8q)ecǚxq8'ɦXa
152Q|)30LƓLQXeY6l9fkƓMq
c)O5<XqZӝyt3Lq)bLQϸqh`l4Eq)V16b5c͌-8!DDDv>ְgo-{b/:B}<`ld9sٓ'cgOv2d؋ؓؓ{	{2RdeٓW'c{{2jd5؍kٓב̻={={2v3{2ؓ[qcw".qتXdC"im^XoV%iMT*(m>nEhoc8EK=nͭ
˚ۓcxy˙ZښS-d}=U^[SYU=Jju-ޚGL;B0ɒTbuKS\kJyh&o/#INŻ$K\I%vGඥr%m9ᶹ
eYeh,2']iHficf&SrܞYݞUqy-qyY{M+ckbMdCyU-oEP*G挻Vvn}_ȼY.2Z.2O<r+˯mϯw׷*n*>Pdz]tHuA]t~E\E*(\E=ۜX^,;zCr^Bm9>j
X[{+V'ycY;f,h5M,3M'e3ڶDqb7!BÆ&%Jrg?P:5yy*	[b
j>%*"'PoDgtՕyhZ.?JTӦ
-6g&x~$OC
_G}P▨0E8*nQ_6&b_U+gEQSN6֨ClS2~Cr/;xiԤQl齘i8o̴jw̚w.O>G<w{In'(;ݯ;ž܍yL<[p#Є2[p#{ޅYYgYgYYYPgP{p gn/xsE]җ<rhGqc~^[Zy5gZ<i7r֓VC+*D#8)yl~l~6y6_
߲͇߳ll>b1O|36bg6a9TRt{}w_sSxЇ>>t8	Ⱥ3	ZgM59H͋5󡕓&VDԯyjaFry"3JEUP] 5<\P/4.%(ly"a
w*ܥQW
)|L
P
Rg>9+|A
_R(W5+|CLOTm?WTwJFoN~CPG)X'
?U?)¿(\_Mu$߇Rŷ8-]!uLX'Ul.ʆaj"an}azT=1	` Mv·=_UAk" D# wwQC?­=lQEސ)n!tH9B[VYA#Ao0%qs6?ssz-_Qa©Qw!nF{NI}~_$\ݠn|_Ť..IW7)" (#]ݓԏr<`W?DG;zJ[ɿDPaR.GJѳwQR?3;hY;}ԏgݟ/qR'H}OpuO>_!]ݓTOۇ!R?3;zԫ=k~G%ozf~G-9~G\WϬk~2|"ZW_'S=>=/BGϳER?=_lgkĘLb\bZ!jVJ\e5I\m%%6[-ϴZ%6k$#lZI<xuE7XKĺTexukɺ^foHѺI-onx)qum֝ڇ=;xa:Jl,aŽ~̗4fFmi4nFlhF1Pmk icFS6jFFu6Fjl4z=^`cF
6&h4zFF1U78Eؘm&fcFo1Kڨ6*5nQѻl,6f)E>T-h_*h*h1FQyhtFRyhCé<4:C<4:Cc<4:C<4:C<4:CTJљT,zGzMQPitUFQiijIx4šbVy)zIWC_ҝ0QR!:pD؏A +P_J|KQ0_'c c_~L	t(FESK1-ЁK13'2Љ؎ف=؏x5pr j.N
hY&(8XӃpFp+VbYX\x+-hD+bUp#[:؉h	D[ĚXgƺPOsBqnh"5Z]B!t'.z")}菍0\kLuF6pр`lzhlMUn1^m{ƿՌl3p9wǜ{lEx܄wAnw;/+\G;\=qx4|pDx=_[tx;	?gï;x>}kD{ϏMw?"(#|PK

  %  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaS256Digest.classS[OA^V*ע^ŲZ䢠BUbD"e(uwjG452YW ̙9g~
`\BB/.yLC(}9Kdh5Ph2lז7K^2^ǵ#LeZAח[k	{<y㑷9[\eH6N)tȓk	഼[e&BqM-!m2d)lد),Q(I[BMe[s?ίk:6EaOSRQ@uK,
7_:9t\Iq	W1U(JFwG:mʻ,Ks
ғ1lHI)Cnqטͮq
5
7qKY3,]&?7moER$TIGVCA+lngF}'JfAwJ{<h>uJvGCPKq-${v `|D=9BlIhbi͉@:r8?0g'{"1cH%7~CzmP+ӏH^Q2{d$A?Α4ƈ"|TbPG2װ%:FxLD"LtWhUK631".*_IJ	zy{A";f(u>Gc#KZ*eW[ yF"PK:  K  PK  D:U            a   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPrivateKeyParameters.classU{SW]y\Yƴ11D҇MT4X[c_r[dW?
QIj{ %t&f8<8	R09>
BcA b9(PbK஼-H$=)ɊD*XŚu<lp8`2Wɔm
["ldNQuZ5S\$B>]2m_fX<Xa#Z,н{W]&w«NY0M[lՎJKIn>݀3kԋt"B*-f=bVLW3(ĮutcgyS=_g>}AFgU?UL㑊-l3\ەLβDEVJH/p}ӱ&TPBf`ڕDՄ#7n;/0޼_xQqp/l5_!b_F$y};U(0Pj!	fzt[ u@ii匭jOz\`
iBZ20{4kqjieV<OS:ַ>&/~m?kj0rl"rKmPm6qZVEKX:B5^Xz}Q&Lխ7ѽc"'kVӂFf?ՠ%(Z=aDFFk :Csts`s'[NS1x?S/K)4I0Mo^@=:kDY 28s^qZ˸A1H1LVdGɦ28,&(U3T
:%@c60[9f&aL/A=H9smHJ-1@to4u.`˭ZvBu6m걔NwN;D_;/PK[  	  PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/IndexedDigest.classUN@B(&FЅb.И@.4lXv:x,ąCo7.{n|'3?_ 84Q^Ut+J׏Y"%@Od5_-e1Trg*T1MќA|ھQ_<<^@>!Ua:Зk_ӕZhb`@BX(Yr/CnǯdgOg42nwJ
i'}.J@RFisڬ0xs-rݦ/LiEn	٥y_PKwf*  |  PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SK.classN@gc'M21+P:Da$ (Ҹ/Gpdl<EDP`3ClLNv0H"U7/M^-AL(fK6U+MR?onӬW}}n>"^\mҏԃS#j2RmUv]%5/U[}+!0YZ>e:k:[✷)]`ρz5;,V?;Ͻ:a	q82)hPKZM   0  PK  D:U            j   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Sha2EngineProvider.classSkkA=7dnXiM
b$Vf3$[ݸ?AGwb).sv;gν 0
7㦤[j6%mI-!;*LTҾכ!.3,;Ɛ	rk!(M/#iOވgۄd~IG?0{ĵm+GM?k$0vCwy7m3˷NE(`:4\}
5PP(iI.ie>Q;~ʳ
9@4WU:sluv;s'T5Y`,w`Y^r)vuna
\R./7EVxXc]UuyI^`^Q	dXw!aGH+R6tǼO	B(qV
*bJئ2Ga=ޱJ)X$U\C^־!r	Cai\ /UNlG	i	vk`cwPK3t_   >  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaS512Digest.classT]oE=cN@iڛhIHFi@rTь7g##/} GH|n(%Zif{朙{/O,b=Sxcop!j.(P#Ye_ʣZVjNe:Uwri#v'̱pؗ]߉ o폃-`W0p}9uD;y̮^7]=r\*os~n+|H/),]*H۠%Z
mɝ7y?9_/m7[-]{QrKC&io]-&wX<T80U)\e8w(y˽;	_#
|$,pV/%o--X{
txkaÕ.B<G9*A<?6d?y0Aed{=bbŪP9v{{"R:=10C'*Gv	GK@G"2T2[cDE|4DV)B	Xe!RT4!M	 F*Lќ~8 dc
yƃcS4ג-db1+vw(q	rsrvh;R2Sa$(Γ@m71TpThM1Lg9\ӊ
]"sGɦq6!U876+M/iEl|jQZoY5sSfȫZ$Eܘ#cQy)SuyJQFc
jěXZ}f@otSE
\`&I\pX8IC ϹPKRh    PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Sha2Engine.classWiP['#^"Y^

1؀qzB6HDI-vlҤIi&ufSJ&M;w4ӴL8qy`Ǳf޽{ν9s~Q 4TbT7Q1'2NA'2a̹H/Sw}#Nj2ủ{q'X,ry_`},r?7p 7ya'N</.?=.	'2tb	btOs4ᔌgd|ŉrvYnNxNd\A
x{DSɘ+LYR@
/(pXj@2O7.Mjc<Z@{,ҺH
\uQCqqcNQ/`Otz$ܨuŦ]'lS!o_Fk[^NB@fC$5tim,ޒ7ͱ]լ'jʈ
H4Iom$]2GN`
+Bf^>jq[%[&}ZP: 
HNƺZ"XV`Y,Iv)ǗvL=D-xPQ47մ4*a:
$Z@t$-uUyQAzT+z]uAqWzC`-)^t3nxE7y9«
6aZA|o8ȴ7My}WІ
Q 7۹O!(もaQ"O^vwJ@<ЕozҒZUZl͙8թ׈k^	ǻw)ѻʘArO(Q
 %XB`
oA_emjdLTZҠ["wjTOՓ</$]	C
$)Z,(;`W`^4n¢&{<Nժ@/EoT{:ܓwa\r(VH+b[ڷaͨJdW%QEf<;IқHj]tacqaCJ`K>-&oztG	o"XC,
hݽ޸|W?HwOűہ@gY#H,znY4z=
)sNds$*S{zS-:_-\A.nz;9{xVlURm] a1 k`qv?ԼLc9@Zq8Jҋq+i*>grt,%EG<'n[3k
 pp~C-p{pa܇8'<qSj񣸕gr2*'5^y` q42kfH3!̋M.|`ai䵺וVq
b	Ћp?B<xY:dsy
l ڊU!Y\1׏9M
f#Y=R
K
[P`vd1ӣezxU:V
۳MKȓq;aݎϚMeOmG9Oج8"2hdc<R?Uu!c7fL4ClL_NʪV-k]nEnUxr"؅w?-LY4؁f"'ӳϡMӷ-elBu	U{LVCM*rѪ9U爣5!M*iԛ\	e%^2[<~VZ7RmtCMi([Q\1%u:t<C&Q7<[V!neYwuᲬa,ޑfy\VNo g#~y1XQT
IW9AE7~C=p
gޟ(L:h=xtZם%MӆdM'Ɠ%x7e%,/?ʒ	ۥ+؍;L[eҔe49S0%UhNCbaQ,(i.ڃ&0_{Kv`i?r&C&I_ٮcl!YX(rL;zչK<J^+PĤ܎Aם6>3v)؛"Rh"l2vV2GiO5E0t0bLR%P}{Wض8sTN^HBN.B(}}(~XGGO >L͘ۇ	GAw7J'MȈRM1\ʦIMzx;ں{o{)ZD)D9fX$*DjkZ4*A}P@EKPOi&ݭtM0#\lC..Mԑ7A
'ߧu6d&,O etO[鋴ӽʯ3Ӿ
PKI	    PK  D:U            n   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Shake256EngineProvider.classSoP=
VlBdƈ&̌dAZlaf4Y>$ΐs^;~@	hxJz$)/iSҖǒ
*QaSQ!D=3G:e80>l$$
S|KPnWmG4᝘(=1j"y@xQ(^cǺL4eXpo;?}:j4:=6ݱg׶WD1_>3/M
!E
KX֐")#)eOGsQ7Ez{HHNh
^}`_QQ%̱M3۶<
ׇ%y(tzƛΙƖK
ln'n:@Kːhj驮L53Dü¼ʣ.Bk  QDL$@TDzF
܎[|x*!N;HRi2Jؠ=lR۴kXc%ֈr2poZc{;%!G*#vħ'Zi~݊tP. PKiz&  N  PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaSXof.classT]SU~N	5%[( @TR(l*`ƶ-KX m؍Mmp:^z8pδhG'8:`:,L漟gy 0|-Cl>n<Ip0!wQ}KWm-?ǺgJZ򽢳eguF拎X^ekDR)R"?.CӒo.XAAzu˧fzr9%&feݝ+:V餔c/U`#W-Ϻk-t78-83΢CsB>MnNC}^k^Ǹ,.i@Z$(a
f00z5jTBʾNR.U+S>iƪP~&|m+(
'X&ۊo{%ۺgϺNŷ?M&9bGPVd4Tya{t<'mos]6,ϳj\c0݆?T 'yvEW'8%Z( 
k2QZ ڎ3hH-B-O3)$! Y񆩇ugHǐB*Lzx12`#GLaxG`{G}Ci	a4G:eV:o|:&*O: 	g\/$D!{?
и~.&xJyr4EѸNF~w;g#bX*4I?&ĉ9:.z1xroHGiAgɽ=x])Dv=V%p>NAEbI1Brꐚe1@{acM\I8&F
F'Ƀ]'Q)xTZ0OSOqɌI$$}DW'F+}VZ1N&hrIF1+^
ހX;Ev0#҇)Y!M3 PK*@e    PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyParameters.classQN@}[J+Do7@cO4*!1	i&+M4& ?8Torvޛٝ7 l[Q-Mu+?ɩ;ҐgWLw$rU|\ųTCbztQ1C9^Ӭ5b{ѵ`PD+2#ƞ[l=5RYhXOW`b"c-ϗܮT+*i[#>u/Cm14&6)#\\n＀=E'Z<&[&%lPf'hKuvPKZ22  `  PK  D:U            m   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$HarakaSEngineProvider.classSmkP~N6m.ӹ6o)HQW]5Ct4tٺ&d
?%[Ӂ_jy˹ɹ/ l^1IHZ"麤
<n0URq
0
{Fa3{znP6FOA]Ajh
;"ر;}^Qz"j9 <֚~3;s;sL'8D\	ahZFnc\#m;E$p}>5
0
EI%ItIsQql/lqΝ牠޷P. Xc<m?r" Xbmgnwcx<vǧ<V212_g
|Py<jr#-&ZJt6Q=ѹy?Oy.Rȱ' c!FX61CWbd=#k1r8"
V&z<0I(QKdav8{I2+fHmKI&WpzJna(=P>qzˍ-qC[bV	&
?PKp>%%  J  PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine.classUKpT=/H6Ncq[چi"!'%;㸑ƕe8q$#4.fՁE7lta+Vزp,L	y\s}WO}iT\GpuDd"'bKK
^pC2e72UKVl:C`Vm[(Mu[OO0IKi	Zfk;lFFJEUBnP\YXǹҞ+M=ɛqFAʫ]Ѻ-QK11TrJݝnUzAQe]!ؘ>0CqѴ5{j;m=y[KiֽcfNk2Ue`|mn2d\rgT0ȶ2*6ay--H {W+kibRJJ'?F"^paOU*zSmgfwG7ܮwi0\T0c隹:oNiIdvХwD=4=wMǮݕR45#&D ZF9H<:<${YF0DR5:dKN7W2L}u+K'(o[qќM%ӷkQvx,y|Qz<<>qǲ"	 {)c0T#CTe1IkQ<'z<\>Wb
WWۇm~ז|*Qc(#yLs?pGOeP҆8%iv{8m} 
QMcԦHџe,Qtq0-\G|yG(S<A`
ߡq?G'lg_& ;a&bx**8'Әq_eP|wW]||ӑ;J8'OBPKW  E  PK  D:U            a   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$HarakaSEngine.classVSWf7YVW1 A@PQas1BsA^z{C|OtW;D>:Swv@+w6o
_)8n=
n@>Ns₌.1se8oX.+EB!r9?q\˄kt8u]
qS~LɘecH\-p2^,gbZLj>.NSRfrTU[6FK[7T:6T
D˦w	O:+Yߵw 1ZLgxBf6̔ǌd8"Mp9_@mAwhNؒKFĖ&6g#:+Y>2Fҙt=0<#54HImNFeʷ)bxN#hb
YJٱYcPG@@˖8Ô*ɨ86R/P>AeV1Y̩c^EE%QQQQEMY*._NeKSxym
{E(ElW-?+2hިT27H ӾB[5x7RԃFFZZ)mTEʷT.&k|b	׈.
ƈ=D{>XrXXHbiql|8ob
.E}l&U팭2ts^ֶi&d.WHX1^,d?4(qQ@7X֏^
Rf`OU47 }%7ܩhwCMk }]{DͩI	ʿ`[aDCؾ9 
6XDzwNC\2.t.mʶa7?8NZ{oo s48*1<hhNDȫO9Cw:^3HZ	M:v5I_?VÒO{J(Hq>3 ł.`!ml?X3f;Yv̇̏oX -twh-(Iqcહe]\7)%}dKlxWGCKuvi\w>Uq	le-ZqDkCE0q"-3sT;^N;9㕧{]GפtD$Х֋5[
7,|Je.)	š+^]kͩ7x];yL]mRcK26rQR7ʚ+p#	x46F<I<HsB>]e,yyBփ%֋֏
E6X ~dq.%2vPOK~ZI;?5CW,,Bνf6 lNOS[Zl+B+k	KaaDXBNݲu]w-Eq0GbSΣH}m?F3fhF w3QLhd5Oќ"M?ς+S
dVAp{hv}[	ԅ9dsppPKg@    PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngineProvider.classO@C/ƫ1Ip^;G¯Y~(bvwf2}O k=<n`ElLAsJֳn*NQfz(Z뛐U[49E>M||C৪5E	?ĨN\YY>
"XQdA/yY3/cX*cPKȇ;     PK  D:U            `   META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPublicKeyParameters.classT{OP](%|tcZ򐍇LƘ(rr[θWHӎ L-9;{(5=.F#nAİ(RMhǭ&n:͗ȤGݓqdBIxl2r[0^,9pgkegFٱ*e07M2̨g,b[nyl5x9Ck<_Zf&VtcsQwo	O$PzQo֯O*q:U&V35Ųm{2I *k9ӯ}xʚeoN+ rWh.JZֲxInŅ7gڂ 7y5(m^ۋo鞱wrOgoW42~䴂`c
f1/#95`
PPs9a:_u	
u['y2\RstS<ϴU*ٰқejTW3lmI<I`M#e!ƨ
DQ.0{+ǆ/qN(uSx/uBv>=-bgҬX7u>600tӵ
L
^vЃˈ!^hDh246Aobj"=ToRwM_(]DubD[ЌVJچ>#,`H.GB/$]!Jd-
w|7i0r֜F6=4>
D
PN	]F)O a#AT~PK1cm^%    PK
    D:U            :   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyParameters.classQN@y
:' \"D $(
!E:8EF#3
$G! *fwgof
@;:JhUQĦ-
C%EA >O%LBXq(]OXf0S9JB	O]g83g8V0/9usr.Clwk:%n꾗D{
uQa8_v?/jyxĕ.)1g)h}%Z'^6(V	.Ruv_:G(<ftb3;J ܤnJOQ.wPxTAj~PKG.  O  PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePublicKeyParameters.classSmOP~.
*)snj)helf`4!#ja|*@JY͑eG-;F1G<kR`AC,&Ē}XAY+x"㩌UhcHܾ̐sX%[۱-VuѤOV`=͍˰뻆{gwwXX=y`zfv9tv^ޡl=&~=# *,
dQݾg][_om6O̯)XW!bI!tU!cSg2x4՝gY]YFkYXҍoUnf:-eBk+p1:	
I{rfD7+/>'LrF2AVLʠka~[~rT!KM;84d͊sC:FgjdD!R'^R"? ;yFQEIN"N43D	,H_R|At(}4 Z&DǢӫx.;wkht44Cr*F?;QR^
 !8|	S@ӑWikX:A]?PKR[U  
  PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePrivateKeyParameters.classSkO@=}A- A^*m(LD
nbPmn_"12)Mνs̝{g!븄0	C	n븃:`j42<!6G E!ћnkA}~<,цSہxn+ss(iơQ
,.WWʕ*7r<QkfmgR:gȗ/5-:1S3i	;
rR
SB6h:-v׾2z@o1Ǔc+[k%
&0i@
Li6p5<0^̩Bد;/Mū5S5ifb]b',̚E,0<E樵sỈLk `YJZ1o0t⫼0fXŽxf!ZV1d(^I󇱐F^T
V X\	f!=FD{4Q*a_z0OXqRQv!b9|L T+L#;RO.]t(/J{R!>
pC=!PۥS}NIc
&MˡPK0rh  I  PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyParameters.classQN@y
 \"D $("!E9EG6
$G! *fwgof
@;:JhUQĦ-
C%!Coૹe$c9*	""J'7J	OOz23g8uV0صp{A\D9wk}2uIW"ywסa2*ˎG]:J:?/YgZ_`ס@
UBkycF)6
M÷5
lVPKE}-  O  PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeParameters.class[oUķ}Ǎ͝&6&%IH$m	^%٬[!A^T UHH@| zWD3yl˯`
!8	As,K,,9,+,,k,7Xnbye= /H勼-A'Ktߑe	z_]
F BeC舀Ŋިktu'{Ufʍ
-snk^j46G|Jd2	)].˛^TҳC}V2Tֆꖩp(q)h\WlԞ
Ukb~A۳qjjhHlwKյB#(}O֗}&0])P'bY[mohQH`S3.7vKD6SӬY۫jhE@51g)
Ǵ8ɪ[Wzi"_ARǡJMksE2vG]l(,,gXβYX2,,#,_WCG:YXYzXzCj7jyC@GM[8p
Aw>gYe{=ZXN\}3}Cgl}sǡ@Ub9 2`BfG9iWIzM)I	~%7!$&HJR2!$&dȄQJ2jB)<:2xit5$=EgYz*'fYXr.lO>>:oI/^vENt+swH~''+*9m)W4DuiW4Dθ'+ush؉I:vЍDhLe봘nW_OQPtC]Qѳ^M ?Eæ?DуRI1v7M7[t=؜FBྫྷ#G;݂/;(ǰ)`}7Vnz~ö P|r#(A߻?	~
)!1<ч(~@Q:;,񒞠_JnCD"
}_PKy	a    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePublicKeyParameters.classQN@=Cg ]hL$U&8&+M4~e
s`kI0D	DaQCT!Ү0mB͑=x61t-Υ?pv7f_z
C}
9<hW״tCfڢ;BE'P4Z(4Orqf_eF
q5,Thթ?w9Ѵ[&'x﹦4|Rq˱&@+آڌLFPPGb:zr케v_yRf(f4ՙNX	Ø9(iL#PK(v`    PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePrivateKeyParameters.classTaOP=oZ(C`8A@: J]\ Aؕ
ŭ]Gҟ`3(5 fIs{$fU1n6n3Q	49*V0`T@Hl$w{(mֶ䇎s[FɫVhlaa57UߩevM߬؁f7~u۴ڊk/+%_3Kee"-Ǣ=t[&i2Vǩ@ע4Xe/:\l5k1w4:a(hť4:20`2R0<;xt2?\5ܐ3S6
)tFδr?NHr 02h
dl[jX@ɻj(kc«ҎmP!NWg@n2|U"ް
A׫2J(7} &l2rRz69#GLE: G+tRT]#ozd&$*wTE=Xv2kT{'-ǰuX6P?d?hGϦ"WKl|4bJ@#!M0ʍ4¤ީvM@W:Ko0il3| PKT~    PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeParameters.classMoUG_'n6vJZ{RqҦH	5V(ʱ`VXG U$,bs&#Ks/P~3x1^bl06/3^al1n1^elayIAu)swY
Yw"j7,Z),a4jݚֶzuRnjlie5S;-l_*B?^-§&W5(@@{Z0WLqHEmzNy[@'fhZ}km3&}-:պQwuPAd} X7uS geR՛zd4qU7j"Cڱ;dG#CYnNvOKs=EᣘlP.UNTu4;fM2Q{;9܈\Y,Dqqad*cq'-EqQ$)#͘Ǭ@lpw%nh`(p֔s5`+hѬ^5IUh¤cu:ۃWMSjC@Mz`PzPOWKGULb:*+TIVVk<9NH
R9<S
2%z?rY7Vz2w[KHWGZCn]Hkm}xm5趾E޷rT!k8:7%"Q@ǤHKOҫ1b1m˄!S)R>e~v,1"I!~XeRzox$?JS.6m[lKBz!){!3tXؖLQ_2)gbi2=LQ|	.`[t

H<c$q<xPKx)  1  PK
    D:U            6   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABEREngine.classXt\U7y3/$tJ_B
)
"4I(43m0[!(*I
"((Pdaԥ.ef2D
+3{޹{>S~xA(\)p\+p'|RzLOI7
$
|N`"
|ѸYA{pM, KԾ$p=Ą=&4uX;7ph= 3G7&0.CE#G<F7nf
t;?F0+)cSp9,vhtukOW4&Z
aWkC{,PF{\;ؙ̖]#M]t)t;7tmh_?ՎH]IE^msvuXnoUS&m-Q-))T::[tnjhooXmc+5Y<ir"mmm-[VGDr{|?69K]T(ٹLQ7M),h60e
5eF
CmL&Q]QNjr#uYB"yT:~x7))F;s!:3QAS@7wr{P49xU594H"%N'7BuoOMQ̤ĳɜj*ʞ״/fƲ]OW҉2
v7%3HCL:ɍtb`%i1ߢ
$PV|2G7i'K<NZWݘN$91X3ixթ9ӿ'Im'Zخڷ{`iHڵ360KI#C:rylM`3BZ8=6IK`@L`OXX':RP,~[a2¹z{{;sɡPC̖z K>i{xO?ď,<[	S<gy/EC*Dfx__W~W,,\Y
~kuN|1쳰1Țs
v%Vml1]ɧƙTƬI4kBH69$I[s?<`1UY#XJs2R;xF2.ͤ4`+"I2ɬ΄IlGȬ2gULM[cn
Z^P6IOL|o`(viDIk4znkhtPްّtv@5nhO@B#h AGmǁԠ+wv98եu<EtLq&t
_F3Vrt*G%xǧOxU3Zm.Gk+_!UFn{ۮu]vvnmcn嶛ܶm7-nYOyUH[prѯeĭ9JW2O&ƧQ.V<-UE@IjoZUObbZUoZbrZU_cZbΙ<֦QG܅Q
[؟ZM4@`(_l8M=A1=jiVA\ਪ+kd"UF*GQR呐9
#.Wע-	e$艈I<(ru("-nժQM(-OnZHC[GgҖT
osbim~C!S&	OD#eTh})[tP*4KPKq1c!.b\:\p-uiO&\O@|y?p#܄V|sx_ͼȿKO2\-{(ŸTr/|MpbQOJxocٛT4
PÁfCc6Puzq\jsAE_z;@UZmZ>J};=MpP<&3lrXdư6+p֊E/{xi_N	ҫcXmJm!ȹK.n,×YK,0ǲw?og8L?(}8ct]N0o`XoRD«1Jj5o݋7O9`+R[W?O7,-?uW6]޵K04l_G4Pk$Cc۬V~:a;^s?Oϰn=M?OXӟᗵ
SU>Cte<עbN%g(y8t^P7r8kIJdi4GI+l4¥amRҔ,CՙT/zۤi~WAB(71[z&yY@3֖	
󈯐௒௑{[1Λ
aɚg[L7IǓiۜoUU!'ȸf:9C(+I.L/edׇN5|.듡UdO[UF@Kt?@J4	hmfU3@}.q<^%S"d/Tmh:Lgϙwd؝MgISq_&йf?m *	[Y8A2rV|kUa"l||P+Bܠj1nW'k*逸d{AuSaMG;IYR7RYtZ9{'yရp@rs2+ܜ؛^L.S+YфYrR'aZ	5,WxZԩ8G>
FFZ3xLU<8a,ԤW㖋.7$PJߟR|28tyUlػޭ5<to_MR;ʰ$U@VґVuJNnf]bhj&݊{5,p훶vUPb@ZOWFkvMtu7	w	C*;jQ	Q;J/~vP,P,.'?Mg!=1i}UF¾^}>zCuG/(U#!,RP/j{~6%=K.8c\jrYҋ/=Х~%ҹ,>~V1WV]"LLF PKx"
    PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERPublicKeyParameters.classQNPKZEHthFQc7CĸU{!5ҚW?264tv'}UȨXĒU$I2(-~!fA>?e8,\n>7z-=׹3LrzU7<#|
Cm	tre!a¯pJݪӢV9FvC$5l !Y1Mᓃ4
+L+7a|˞gipۮCY
Y]Lː	N3TTK钴VyGSd
a̛Č8UzDǡKPU'JK1, PKn e    PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERPrivateKeyParameters.classN@@-x[
h1F7CĸP&8$&2BF]7637 XӑĜ3Pb
KzOs1dH4mЬcwzwa/>o	i5eKJ.]3'A[0k/..]-*َ&f)SwjS"376&ר[>(l`4*Ӿ{S?jZ¢|H$fM[$"42du,VyA	!Ze)QՠhogG(O(mT/M}H6O>OPKW    PK  D:U            A   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/Utils.classWkpUWvyG!) 
\MH,mI 4i(7!$Nc:iQcetƑvg-6~{}^ڹ3g^o}o% MȧR(ǧ%u6JfI"[%IR-jfImI&[6hav;};Ķ`)xT{@Gyo۽]nEg:040"P9<֗;0<9s{|b772ړ;221>;SC}C0&;9yGc|WC4^m<]#|<U5oDy#).{۷{S	J ,94GR۸^xBɱގqncG3"vIjvK:I%e#咺+2+~xt$7=ԗu`oτ@6juw"UltX+vEq: Y,r5.uz]j-`گ3 JcվQ[w%sH՘)Wk\9$嚚CZ97
`ti1M,KPlI~<li\L47	_*fuj]_auV$EXF,4Y.S]Q!Zꨡڊi̂fNYRLuy0
3{il7gqh6͈or|˦혒W98hNPZFmȨ=cfh,LRz̘/dEKTE#@8Rrn`Zŕ8z';[ÿV$^dI
b%E564/Y<DwZ@UſUlvG	UTh^C8T^*ʐV#+6WeXS>OŸNa!SXxNsmNђS\L3rx̠
UV1X!++F8,>89k-Y,?'_i{*܎NS&CMghn+vnB;/xwqlle<7^#yFXEyMh>щϊ<>'>1ţ(st %{-JFNٻve8x{ʞHY馽5æUm,{Twul9͌ju-uzVEUm9,rorXҬ%e'xCJؔrS6c>MMy^hَHvYC[Ch0A?Fqcx^D$R|I܌.x_QH*=] x8Yts![렑*]GtѦa	+7o=KMiFC:{vt,9NCde?I-GdACo_ȑCh=Wbǁ#]4?&7|i5ݔ/VsrGR p4@3?qQc7Y!'k|W0oo{*'hǨl_lbSWoae/xq[TqKٺ͢'LJ-R|q~=4r>?d_<X"`M?&䭅ػ R*^( S&5
e"a"0?&EgyF$ENV&ZL9euJg^ĢQ8rvj8"syeJDkX#O>7IZFg(A+e2S2+v.%/埇v88j8Vzqea9ϼx\ϟx~X^W񬦅h_e-\׊zm4˼mV:m,guFcpf .'࿗77hu~Qٯ$ iF-?E*	EON-'7h'W9+rW=}COF7iՂ6(͍PKr    PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERKeyParameters.classJ@IĦ\wIB"b&q(i'RP>%b7͹97 MPPڈKd{T0"Y>h,Fyd<2Nήȅ	?q~puV08x(.'	nx8\tn4:DF<]/Kv=7a
a[~M`3뉃VV$qp{^[+*2"bKdkmS^!_7^g( k-@ru3p<#_<|#ZYl]'PK*(  &  PK  D:U            @   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/Poly.classX	pב?H
 N	2c	!d `ak@I#K#sNcC%z]
Jlǉ7vnRVdM:qjٔxvlpbWeut>T`aa'n[]&HE\!}ٓu+M'~Ha*>ע<
baЍC~?[(sInIȸe
ۢ
z	BlLéxz+ڸA,MQm xwtCCVqV7w`Pך[;9>{7>wH*Y77ZgjȁSc%adךZB}ǌSjL&jv+Ǉd[| K}mA+
2 3oXvnpmKTsD@
'<Q
--Kn&9[,rKGWM[ڛ{:yF
w{F,-/ѲRPOo2g!KQGz{⽽έ7mvrm2dY;LZ!_49>۷i#c%qqGpԏzTqLeJS'Rin??c?QB5?c&ꢛ7ҴHOiq=~܋8Ai6ɏk@#OǏhfG+hHuun~L~=b"
5kdK6"~=鴟$i/[:Zwv556f=zѦ5>˚܉䦁`Z DJCs;m/5v;fh6EVu_W6/`	*=|PEԡZP^ϾVbahUV]RYu	EhBpUV>
v"Oά_K\W|qVs[ΨАǜB"p06oYp1c%?̝9{
YuSVmUw`5jEjD3d6B&5FK_BpBӿ`͢,Rd3ޅX[RFL{x~obL(Wڍƺ2۠t@6zއc+f)W?/g+q%Ytq1 xLW嫱r0}J]<q!*ychY0B7@B-R#41F^tVpE6iWr\?9jMN4p=7ԈprN폹0dģFjm]^c"	7OSS
o}ԙqXMc{μߑ]Ƒ*7Pc쿖]&NuY%KDg=-qH&\,=z˰	8}b=6oewe%<G.|?c}3Hxǻg%/	ł>+7Qȗ'%shZteu:r:i{NzGOy' 7Ex'(C6~~;DŚNltIbc<\!a7^F/^Eoa<G!"S#FRhR8I>!KEz/cyw[ńJ)&N*%_Y4
xPiC.<_(r/>qZ6UW~37UZuCWQHDyByYIi6F؍fpknM@_|z+r1g%Z$e4GMPV
֭F<'ǪOmW%Xm$C"f,e&Ty&i_᭍dUK5zcjlV>#k
[Ď+3lKidٱH3bSLR{0rNOvH F8
1c4#ӎ72c "L&l4@"YMYaSMU6g)Ygؘm検e^	?sKg>:6aB.v׌!!T':d[[ckj
NMi41ш鯥7[1Z^#Ҳ-1lo߱DĵOUڬ頵WgyIWaǘon-6І\r2N<g<K~:~7;.(@S~BL7OV9S݇(43L/?WxJ<EMe~J{_Vc;9p*w?goO4ղ>ToWhh-̏rfT)Y{]/\_J(#z$"GjC=:,f;4:ϡLL
:ߡy5kVr\LUFH~ݏ8ϝqI7±S"(dZlLK&NEJMQnt>&F~?&x~0fhK4ê3I~rcW9y\ͣzn r 1'9S>hϻ>~mϵgo4fiLffoq>3̳3h7,.52Fǝ!0F͐s'4"g
eǌ07	S̋i%"#,Sa%	e5F_|YNLwFc%Jm!R@łENWy@X@JPXkQS]ɂY_DR4WΑD+̕X~m"o=]-3].|PF:Ʌ|4Yås#JF~L$(\NSV4R.N/q}<iT巌"Jx|JKEEUdP5S
UP-S@˨{[JrO+h"t8t#}_MthHǴ~i#IM{DWYQh%@\ZeԦUZڪl)SC]mWeG6ݮ<N=W(V^ڣ=U^~4F~TiHӰ:QQИRWN5EԻz?VHw<U_ce:wk3yi%ûu7q^nYȻȳ|6doi&g)|2Yn֮|Ů6)HpL~JZG	YrYc]G#HwL7#ִƟ50lq =kئFtC_s<sd~iO2\^_ͤ"R%s֥	ۧ>R~: 7A+3hcylTzTelOBiy%^Tk.ٸA:Ltފ㖫JVoxu
D Ͼ)'>n;-]PK7F    PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERParameters.classT[Sa~>vAPA<ML4iƻ\q
Zfʿ袦gr~T}-: 	ϳ;v sx07d<aMºNlpTBRƠn7~&cs!)#_%#9-cw%Ix(cf5v:X0gfE3d#wSVASJrJ<+YEE$+j%_Cnj
q	5|]
 T>Q߫JA5J2u#OYCvV
֖v?PK3A7n")
kY7tk'zsd*{M6Ի#M;SJ("5kGƚvPB5#~\֋ƕq7Œq[r`!Փ)V̜s
>-z`ɋ(b^1$&n5b
d 0aCq1t^ow7{,
tQ~4G!z|z{!Gl9l&2OL!v<3A_'hTV_y0
%1$Oepv2EK>حČW.aIj맆æi,6I
aNEkn|E^WMnjCN)_耫jw~{^^{
:E	JC92_PKշ    PK
    D:U            .   META-INF/versions/9/org/bouncycastle/pqc/asn1/PK  D:U            A   META-INF/versions/9/org/bouncycastle/pqc/asn1/CMCEPublicKey.classTmOP~Ja
"8yT c̄8^§khH)(#.1(ݜQ/99ǧ 10"1"f!s .S#9<ÞD c3MtWzl!C$kZv`8{ZL;rvJjZUܲjk^MsIհt#QrG6u#5O=Tm$C/1mZW#j9{jjYJNdɖJgv6Έ/j-HUG7^|1wpn▀%	B@RBV0*`UK1.WtS0w#fGw
7:U⑇$@; _S	<\Q,G/_퟼~LmRͫF]Dji. Ca(aߩ0fYM9vFAl[(/xV,rI]	Kt ڷғB5韆0WT`J#|=;d'E p#-"qp?s/@2E$tvbE)}{F1ky9ހ'o :s6 u@Tb#Qdۥ3#|E;J"5"
DQcq
Q,t4 IMxޓ?PK%2H    PK  D:U            A   META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSPublicKey.classU]wF/9B!PRehJ	
8 ͓,o]"YJWqN}N?^vV1$żjw̝;_~0MgpM,	d0s2>u9#	i|,#2& >P29,J#8ITx|&&e	+ឌXpAmbyCIݬlV
skqlvjcʌZBڵNpszX3/#0+v)ñ6n'0	ð֞;n[_k>VP*}gxbe["V))DQ-GueOdU-;w!?RpBmQtY\BUC,+8s
SÊKXU:ŗ%VM-KZ|;=\>wo;wZ
G"CcPc$ܞ ^r-%iV݀/n(O.f<0v¡qdd#~ɐ?:~onD*zk0n!i9KCQ4e"RP>j$fgtB.Z 	&GcU.V-9FNx.dg-9nZBȱdI͎o\r4gy[Hr^Ҙ֚">n"Nӊv5?` {r<I1qa 1+"L1R4H? CBM+&cPL+g,<KBlPFi'-$d$<HN	1?iwd?!N=7$;$Y'"b
Q
3yEPTHV=8]![h2Rz8Z\;=]&N7]_oV̖IcvQWPKy    PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSPrivateKey.classWseͱ%%X-Xiڀ鶥"JKłQ7Bݒl
Qg/x0x:?gyvӘty< +
TT#,܉!EXlcqaYPЉEbeV0^>OcL$+X=,220%cHH+wT	L>~	e%X
!'a\A$L6e",I	vkz<[w]OT76	(cX:w iZv0쨐cl,]ۙ2RVPxW_0]h&K@n4gi4"]333q-kv-kjs;YCf#ژKCs6F0P>m\kOkF}kl:i`l1?̤=z=r+LΓmXh)w;.^J}:{>[&?8Ը@1s)Şi+->>Շ6J88
*Y>}C><Gp:'tw&
`\l-#y0h	fdp><n#D4x c`6uHgY<.	D//i2ai`?,ft"Ӄkf&x_HFgBMfNyq39:LgfذaI=Jy 2ޡqʤ$_xQ`mZ2'`K3 p$2/g($X63]hT
T;&i&Uƕh&PrR
uA^-;s:zy@].'6NJ=ݜ7_b«%1cL
TSy<yK4N0.ˮ] >rp\Z"4l󳧆vg}iŬ;-.~G iVM¸0.7p7HaTAV5NJ]x.ܧQѫֻ퉤{쉬{IZuʇқ

X5QKtF($㷐.2/Ci`q"uR&I1$&I1l &dV6u.xhlb&-I9_+Mj@]kan֟ǼI\E|[&Qyu<z. fDVr̀VPgpmA$O=SUۼ;&mdqdd:w=izfuٖ%;Y@.NAmq, 7L>I.4lGu$77SvNG	0@D.hF^Cb>n=#>BŨ LQhDB	\O2)Qm`xԞ
~uM"Nn
RDI/x)"<OSc
0i}5w'm({YGUko'S}ƊPe: 
2A(NMCJrSEM+
$o+!~Q(˕R~M<}7QrJ'qIe, [y]~٧^{XZ/,
,r+8tNC<UP@:낟?ԣԿR<O)y
3GWxEK|kgKh4[D~
PK1`    PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/asn1/McEliecePrivateKey.classVmSU~n^X,J"(H[BڦE#Zltaa0:8?_?$q? ICιrs{ι~0/EAHpPՂo(⚷Z歖XHc$E2S"𑀏E\FJ'qM3L6s@Ҫ<|	HEf/AMZL3֦dǷɄzfҰ.cr"`2u;oizlk[zFcYy3
KWssj,>7u8om[vPM̪x~=;cKU'gM2fа@>K캞{Sѝ㨖Fִ1S2
]s&*XCEm4tM_IG6-i7z*4ԷTecIdr_3[H2)Wr3HT^W*65.{{1~	P+kNc$SycŨ }T#Gv>saJN^H
YB6$(JbA.b2lJx&?}	Y=a9zFIqVue͡zQʭ-l0]8m$L`.!
C_ZyfDw$83T?,UKGnf Gҹ#ɝ4.DrN!$&>j(gs7/)!ˉ7%OErVU3
CU^WaRuy!!WA5čի=>z#D@?~Zw5~Wz׃=Drگ%=(m*VZCBPZjQZSZk܅33KmVhF'.M8}DhVСPD'JO)R
 ?a2%@ut6BR$ i۽^4X@K4h4Tfh5/6yPf)2SRޑ)!ji7FI'wLaap'N$OGP5fxEI4|?R	WR.D#3/B&|RUh=J99"X#9E7?#h?LBN>f_Б*B&^vepܬ;nJ͈gГq5C+Lzy6"GSa_)AƏPK
  {  PK  D:U            E   META-INF/versions/9/org/bouncycastle/pqc/asn1/RainbowPrivateKey.classW}lSg;q?1$@ı@ !PG iFqqBӖtkiҵ]	64V@""*iմMZi*?6U*[ν9`*s/Xw]X]pQ7]aO>·,GT|[,?R낆`Z*b*߅pPvCxH
6%@ T.oIE\8qW.Ia)vDPiQqD*IWJx+nǺKk
KH!RV;h9`3uF2ؗdOR\KPZT%B"@O˚ouy(^ntog&U%-b;ʫN$u"dXSHoHo}"i4twݱvXXU<K
57Gu_#Bᰠ%21P?뉕ǒmf֔6,eۙN26Obkʱ=E:eZ2>c2og>Vd2zV׹#a1azgR"0>PG"1Tw:nlJvKjj1
}x0ѰP%*'5,װ>#ͤ6
/%JXaV,ʒM*QNxMMB>Md0VC?Nn΍xU<F#E(ɽnK5~|b)O4ŉ0 aw0nm˱̴-}J
Buw*r)w!ｕߧޕx3L| 9k3l<4A<R25t_hHdۋh(ΐI3PmX5s_=9U -Qײ\R\ZuĨ3)6
sdZJq;NƋi<F7Ɔo_M{ʜLH8ժ52	6::bf	K~c&\PDScJLbnTsxů¸)~ ^}x]1l%=y8ͲyFL^s{xy
f 3PPPhxhp^d_;O$ϔWA{֜V@![
NwL0`fG8hqZ+y`ėU0P-jJˢ\UJM$;@[YA"=A'x̽Q[WJn ;kiV/LӬ\kBHt2<t[ɯ٣wܣOINx>K/*x?1$'<B&xH>ӣc<z{zXɝ7AR쭕ZX>mnݭk6Mb]w/3}2Nb8d$xUuwssȪῸog/B-/g3s[V41|
؏8]8(^nB#g|\B3>ţ5AO~L$(Iz )G'5!Mz=ti'<Ep~x_1EQ%#t<W%e=8$PRxMy+G"Trʯz>1gr(Ru`:t
Eŗd
FTL!Q
ŌɮdӠ݋p>oiU$zʸFlM!c&7a~^$y/w)qgF!?|n\e&H|i16Bx;{\-ß<hq
PEp/lxGP!9Kgn
矎gχnP4/[uhZ/d,;g͓7ss,Uh&k_aXE}dOn˩ˡxsD7mN>>Y;8Ƿcd/>Ԝcq7
o`Ox|%($7Kc;,K<`~\CX:rh=2ҦCհRReM*Uv9D>C,k]LʭA{A Y+/gi'jݬ*H~i:|%P6p++Ɯcޒm#;nlY<f D̗S65"j<hzi+
g'3{Wn3<<x[=7ܲc̷i,S9J|+'϶WPQaFSd_+yQLN)+ ד{ȇ<VRQUwf`
q?Q1<|I%dRҨbZLKh	m
jeN=X~VIAZKgizB5[@W;:YV)^YJ
J--SiF)ǨI9AͲ]Dbgč}uT	dxP|'gɔk]9)͒0CrVqwδl6QygPK	  5  PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/asn1/RainbowPublicKey.classVoUMwnn.;e"EKP)evvLYfBјH`"Tb1F
#93[-KI{g~{׿%@[ |8Zz8<{E'XJ/~0Ě,N Na	H}#9bT48/ B MvΰL[,;OYySԜjJNN>HL뚓HcQut3\PYɼUhn\u03j֚*?`sP*'ɼnjzgdXxJ}/tʒf]QKDa-IK]MFwfQi#}Ϫf&y
wSa+CTzi@6.Fz{uXdtt9rp$!GV2+~[cmIUHXˆcLnU3I+ok1#Z.4i؃1[UBelv;qt؉Kʸ
喧AFa
|)KI,re8|IYL	<=f_N78sjPst'ؔ<>k#w1\iҧlOEp8ZKP;Vehx+\ku}sRǠ׈W9o9G:e+r*X󪲛βUkcmcdT=CsjeRWwl[%U7D&󌻭a:j6\UzaSifȚdKwī	2~TpYW;(1Ri$L@聈JU D}
W"9T X\ )Q*ZN<?f`3/nQrsمGm]0菨4PڋFubHlw͚Ȭ!_"< J_P`	'[1zB5>{сCG_N4^AL6CtKF6&Bmh'Zb7k`ư)2PiTYoz)|{J-bEKiw:h\\WZ EO
;C=xpaQ#tЬ %F6
0mtxN94번
9HHavowTΖ.w)] "h<=NrqVm_]W}d'A/a%B-d%4,`S Q4kMd?[BK=h!ߣKh-`Հxv6EClbX@{P Q#Q.z H*|@^P3"u焹Nd.&E71
oq]4%{zZrh,! PKޚ1    PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/asn1/SPHINCS256KeyParams.classRP]ZBC$i*-rc"cfzlHSFŷ3bqq2ZY+{/'?~~ 20!aRcJUFXɸi	aioF¬I(ta	EV̜dhFbɝٸd|0 ]tf%,pYn:kÍo]7L`W
3x7,g$
in<L5w9͢æ8ЏH^7sqւ2U\ri|g39]|Ovu[/g޾kt;hԜZyU%ߵn0cJZ%;ß":IE
0z%Qp`UmIXtSmA<l42yG
S~{ւcۘ\6C*K}&*JxU_6h,KS[.ܜ|x%"\n2Og;}ZG: ү&I:h*={i0Sx)|hal:]R/ő@kZ\ΰ	|B$unC$j]1#7ߣM
Y9)reVv>*
W0NIbU/<Jh#_tER4ٻݮ5z%UAG"D1T
}H*,Sڰ@yD	D;cn PK/    PK  D:U            I   META-INF/versions/9/org/bouncycastle/pqc/asn1/McElieceCCA2PublicKey.classVRV/%NI	ZdA-`CZ^FOF!Agg:CeGvhB xs}{v%|ǟ ^F?=s!0%#BL!fe|;ʐqOBB9HJH!.,E	e\´X,32HXe`6]i\әSmF-q鮩x0},Q*c+X{3]+/Q'x춞(ˎ>IZ?Xmwj:A8/8C(C՝<w6|vpDVm&DTMI7M0FOM{%*d;
r"uڱ\뙗V'kP)5xf%.k'tg:桭M>?\K	|5W2r1%m)`zߺ*Xǆ{:n(°M<d\"wlAer7K\vQWؐrN),DMeGH6amL=xcd]Mai{]
ML4jd{!nωg#'OV	Uz,2JU3D<bBU6BIPD~P*0~*fxSg7O zŘ]4OӜxFt7q(#HzTin8DodGC]${=$ޛB%l锇r
O4Ʋ
z[J
[.ymo}#G7)"Mb,ƠI3Aw~=r6$#mMMc$5ḩtp4Njc}t8OR-7q1m@Ήz_/҇bGnr.ZǕcKg?G'2t~1Lu¿[{7B
ss\	\{
<Eza&N)!BԳPK  -	  PK  D:U            A   META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSKeyParams.classURA=HLل@]%lR㐴a0dBJ%UGYN"{{n{'? 0E
$dυ	
ч~a@21$8)`D¨{Є0.&=ngd\Thʚq<gP858gMEd<bx
)6h(MbTw_gf0Jv{kFNzk,7 Kq'jf&ե-}Ou3zθ2n~9[og꘣'>.;:>_"Betv
xq,ȪmlWh̹@+Ǭೆ\AѻǠ(8>4၂x$ᵂ0(xitJY*49/_ŌuE#Z̻Sm呋s/LhL]f=Tn(
Po+~Ն,E!rHrg=l݊+1Bh'^
Ҫ^(I=`$fOh7
7ZL;+ͣZ!Z!<_3C&
*ъZn#aRp	p\{#HǨ^p(3M9z
/JV)#ߪ3ߨ9/Cɣ:r:	A(7QAy\J
uB^op9-S8#E].NꋡqA{<C|"']y.PAf9cYjU?PKx2  @  PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/asn1/McElieceCCA2PrivateKey.classV]Sg~|d]kK bM6J Wj6KX²atko:StM/k:=&*`"yss>߳6
2`<vLq3O	MLɘƌY
$$e2"%ᑰ,a^&/ėȸqa Jx&U6<քmF,%P-=np3[e< d92ܜ\,c,}K]Ǵu'yflَ.YnƢ4,b'HkLX^sbaq8Zl2ޛ8e6,;ohH5Ӝ99wWs
۪b{xy*ߘ
ӄ:[gH˘tr-\n$5ۓk;/C;GeaEҭp5ePi^]D&OVHipN!_o5ƯEM7\cë}-}d{'uWf0چ35+,s6OH/nh.[{6jʌZ9e
!T7@VA*XEVD$r
`0tN4a<˸pr7:E+X`*Fﴓ'3?̚B{~"+0avVjzn;۪58]խ')[>.@itD+\a~Hy-K
	#bw75B`pⰫlb
˝D^{OvƏwZ
¨pe|ZFײYQcDtK<uA	2*AWI|bГOx
UB\&#IsxL--;;7 6ہ6AHm&QLhvu4DrK'sIz"μRY:#h b%5*Cjėh.}_<@ǧt0f/XqF</o`8ONEVQũiR$ѻX)bqڸiJ*ჃV޻~P	xBt U>'zC՟P%|TDkVnd{i(CQ@|mh	Rn!'D+T
Fp)
<&
0gR6Ozڷտа%tnmF&n=}hHjOi QO{?PK  
  PK  D:U            E   META-INF/versions/9/org/bouncycastle/pqc/asn1/McEliecePublicKey.classURYN~QpE'3ʀ.8~ְXW'é8:LtX ^`Ւlm>Ⱥ(t>}O xc]Hc\k
H'iL(Ȫ
*TLi7UtcL_ܖ;*N90ȩ`&dqv	sD;;[p$-0p_N1tL0mہ2`HgU/zrY?̷qk<^+wD$eZCѩ3%jn"ʪ~Z{2Sz	-%kD8T"%':!vB<]ϚRJWCPÏk@?C[!l
83/퇢$
Kai",_Ұɳʐi,:UȀ_5<@b;YJcwI̯&
&e9tQRl_3C_F?6hgX5~e۹~νȽ2.	$Mcg1$Gs$MIq$d"(nHqGÏy8^9"WNII+`tI5OmtQ337Hl\!״M7B2$F8Ib;|boDf

:fAb&%c5h-n'b$i(0Ҥ$H'?{-^"ykI2E\dA=1F2y:7j87蔡kHUюg$qjìLc*=E`&4W3":7H#a35e3	f`lл7@UZM m4PK~A    PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSMTKeyParams.classU]SV=Q4I&$E
4$!.3LyQjˉ,3G?)qtڗ>Guz0s Xq:K2L){VW恎Hgu&<4ƕD0֐жeB#6-SvaMܦ?˗'?U
$W
C\@)l#LOj#­S~Ũ=M9kyf]``QV}Skf1JuKeAˀvs5ׯV6_r8r}T*=;n֛i$)/u73N)tN16ZWBo;Z(%V/5ZAY>ԬU\on(8o".\հ``O
ķpGgSs
#Yˍ~wP~a{1(ec9Dg>S25WYoq opݭW
=m><&yv+֩Rw=UjPO? ?T-pr|yj`
0bu =m:ŀuu	.._#p
7X5{b6ܔt~ll;=?z؉nҲ{G1654Ø,l<]8h*
׭`AOmo`lX0GmfF_{$e#}0u}FhqHS	7$~.h虚<:O;M>LڇRh3\6Ns\i~l֐͏musjx{{_a'C1n|3숩PKRn    PK  D:U            D   META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSMTPrivateKey.classWsUmMܒR-Vɶ!E$բ)m
n%%ٔ7|qAe_38G?u653sqO>oE" Y vl'$],v=Al n$CoAD."<!	yBEXA4!!#1ʠ1}"xP89 rFFy iH;jmQOtk>b_R*K; o4-2fsF$`Nkw ao13u4۵TW*]]6֔Y2cihVhm	`I7z;#kmzGm8,!Wdu+n-`6h#Zk^3RiΞDg{_!7B7kӥd =P}a.iO9u%Fp<C;vHki""v`fG9! 9PU.RT7HBZߒϟ~U 7a*:xDƣxLAn :YF<))<-RB4VhZ.*yPܪT}J+xFƳ:\5wC*ܽ:{}^g/xIb%~,-}֌|M@ gRo%+kyZ u5×&̜N#mfhј7,=2[UGٿ-mQYG,]f>:#
'*tL23_ ¿w3*mFo˷
mH/[:ovr,F8)':f잍I~8K:|<Җ^k/uIg4~*ʧ}ҙ(`ezrR)~5?<Z&6èwg}hլ;o
@#}.DcFB=4W#׺:w\o7l'Ax&СN@P=gQ.==Y=
>{"
~{"
=	<Y!"Hr3@,r)16bňs q1?qY UD&LT6v[P.L3sBQocy%NseWq|]|F4{m#zըknWٷs6G{Ϩo_jT"EcZp,/:XllzaY>|H:Z7']56a	,V:)K'NR95v`!-ۨntWl7@/q$Џ;w;{c'&.vC׸? Og/dW	50E(

Jdҟ#BYg4yW/弃2WTK(GPN:%Rj&xZ8] A}8p܋9DnEk}	lݧ~SۋOBq֔A#y{U<28Eف*. *_}dwUX}dOUTު@{$Q\M)єkP|˒	,ǊjQ]lOqНeRW@BOUũ䨓nz$e< 92gIz="v0i&ȥۄI>CTǟR}F
9U"NjoD_M;lPKB    PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/asn1/PQCObjectIdentifiers.classY|SEƿJC	A ..XBX*&
mJ$mQTvp}QPPq
O>S 3gΝ_w(įxЅ2 pO܄G\xcw	.<EڅgϺy^Hy2ʫ\x\x[\xNOlһwI;I;IHH#Oz҇I>"##''  $$""&&!!%%}L	ҧ$#Q>|Ak7qttt-t|cN(쏴
EbuHs8(\'TWyDEm0cc2Cz+75W5W8K.k]7O )p:')4HIr4ONή@yc(XpJV{8!wFBD>4&e+#~'T496#qsAMzM`@%f_cɑ>sB@Gb]8=,u=z$E悽SĦ:M	YJ:Lrʞ';)ϑRvs~	sν:̶ThRX0$M씔m9i:k^J.Yӵm|cj_>nDk*v:t4¡.NEYVG/V57Qg2#1=!9Su~߿y=@G1P?QO
Dzo ߍ7j
$<EkcQG(
x)6ЍjbũKWKt5Ot5F_X(qJLiRRQSPRQSVPnBYIree5v5u
M͔-xC.]h͔~8UN.mUO8;:VPn,?Kd7jɫҮ!&9[M9X~փY^o=d|֛GG/lzY_l}֗Y_n}b}[f}o'L0њhmJ.%ZmH6DR[e\Gnܣ^[Y,6m+Ie=҉.={{4-L}mlb[~ĶgZ'`ZeZ4cld\>HUP"%.Q&qpFHTH**I+H*\H
1cIW qBDBDDrIW)LPZR'qBGa(y
$
K+TK*̐)\+Qp
3%f)̖A7u֣801RS@0Sp>fc~"=̗?xx^}@+1qGoq%@1D	BHCDr1 b|bP%<"
0U4Qbt$fsh
(b-b)X*Џ~ၿPKtj>A  )
  PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSMTPublicKey.classU]wDk˖ʸIKSZbmDZBS6-nD!IVRY
_"qN}/<Y5ˬvܙ?zEl+8k
O YP+
a>G
R`K
ncEw5'bRQ2(8eݰؖy!]f|m2ȹv9E;&gTm;
o
VrUo
/t}lͶ?k6zjF21h0rէ枩;OG}nf-*bՆryQLQey|{(@
^[-ʞz|^d">QQ+*ἊT2Tpe-)p
le8\76d3qCbs/GEc+n[AT|'G,o[ݖpP_2dO0$#C<':k0~!a9K$݂DhJDUuQ_<S_-	hJ$S1^7:2aBH H7d"l
!ǒQ8$rh~,^#fe<Kl^D5)n&I0j!4Nk0pψkWQ6#gE3PqVcB|GAb4EB#$i@T}rW E;'
D
z%>CC	\ߴ	LJ?%h~G{ߐ>@t];[d4duXo/dZ$T"ѳ4)')PhH4]&zh2R8Yj:wS=]JigyI+=+tf+$SױF PK]޲    PK  D:U            B   META-INF/versions/9/org/bouncycastle/pqc/asn1/CMCEPrivateKey.classVsU4&
|b)
nI)%@JBjv-$JOqFyp2#M/3솴)'{ss7q_F2a HO%pB'e+O8"b,FdYQ✌=^}_F>h1<IK0d4㢄.).yÛ`	HSF`I$|i#kks})%R@p85ƴ@`.劖>k;k&1`OTqivH\_?6M8Y3X4{#WlM|Bt<IhYMܙ2
K7XBN@SZ"DLT]nvfK~w84&%аhejsPޜ0msjW2 ɶ6NZ[z"ڔjV&vjl#ɛSmȩ\1GL>5]Zf1ulh[0-ۛ'N\ՍIۡumz.c׌tk	y
"hW`ɢ1EL)HCW1-ᚂp]
VTp
nc?OP.O^si"'ز<6iFs+wFN9T
v޴2lpNq%St/~Z3J
.[(t/nC-.47i7.qQl7צBٜEN|{)H$]UGwwD)
f	;33$lBzJ\՘p7R=d^) [f8E72[|@+:6E7>4,е"K'}/IDZzm_Q-屳<]CAM.E _@}a(A<$$e2d*rǆˆ?LZGm~;WWc#Nga aP΃I:1]'OR!ҮOC%>E>1i&( MHS⸦_;g{n09B?:ׁŚrVQ_&FYJ՚z5(YmGmtUQ!*!ʤ(8LqJ Ч8orX
z߄d@FC,824@ E=<5hdOM\}$D+5Г${ΥI.O7FaWBxҼ6.rzS1֑Yl*a3-̣u4ZJԪ5j}N&-zK0uwJ$ e4Q%䆨58Mh{@16Έ]KCRy/<Jy;ꠏPK  S  PK
    D:U            .   META-INF/versions/9/org/bouncycastle/pqc/math/PK
    D:U            3   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/PK
    D:U            >   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.classRN@=G
N
]	$vLQbGL'tH |T;`@9^ݙ7w PБE.y	,`QK3Xfv?VE	Cj/l
7}!:oxĘN$ra*Qn8'=awsٶgya'[)zIXG~jm%^#]~~tZB&s~
L@gSjQ0
)
ǘ=b?i޵Ƶeuyӏ͸sqߢYtDLn@!5Ҵ`&`+T.=CgP& Gyb0
HҎ"qZ"y=h?30c7
X)Z鳫W	?̬no7PKt  4  PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.classR]KA=뷖ZC
Od 	"8nz)(fFXsΙ{;oO/ C21!
ҽCDi| `HtK@8}>0h̲MJe;#u`O-mq3:T{c^eHܜ1:ye*4ֳ&_wϺ^;pz;7<aEs	@)
䳢|'וUҭ_ЮI%oh@`^^ʇNjE9BH,X%\V[R$R"Q9Ty4\$k>PKt5k    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048677.class;o>S>.f.vnvF6̼;Ff
0FTF~̼TܤԢĤWp~iQr[&#ld`bafnX`__\X\_PXWRT_XZZTj#-Z`"% Ơ#0!+dt$#dZ*- 7UI.N>~Q	 PK   ;  PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSS701.class;o>S>.f.vnvF6̼;Ff
0FTF~̼TܤԢĤWp~iQr[&#ln`X`__\X\_PXWRT_XZZTd#`B% Ơ0!+dt$#d++ 7UI.N>~Q	 PKѓ<   6  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048509.class;o>S>.f.vnvF6̼;Ff
0FTF~̼TܤԢĤWp~iQr[&#ld`baj`X`__\X\_PXWRT_XZZTj#-Z`"% Ơ#0!+dt$#d+- 7UI.N^~	 PKc   ;  PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUParameterSet.classsPO @ЦP}RPm9cgb]%\!5$iZƥk׮]?@ڙ< X+1H(aJX#(19yEz6"pI -Dݬ< Z| ÖozHl^	뚡97m_~le.fF"+H͙4̚tVsmӮ(%aM+֑ԘSUn(=5<)*f|Kl:hǼ\lZܓ\=߭yybۼbsڐ0a>W-vީOyQ5wmu	sU/Iiu/KYUn;43磫Lwjw3qD#$	)<L!KX$,aJy3hEgFEyP:>ӾO,g7Wr^L1
.'0+@ O -3-ʳ-؂ =@A9"fQ8S'r20#
MTSf1
ﺭ®Z~rkFD7c~]dr5ְ9ӿ-݁Xٮ9AW*E!_ua`PDu_G@fg!9;
qf8Kݪ%*+ {[t׺
5FGB_o< ?PK{5$  f  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS4096821.classJAƿqr͢.nW0.
@D҄.mcl[ՕPPьYMKg75XQ0c s䅞8!,G>nA酬}ƻKt9#FG}mnF|8t.	9	sBcgA`tS~Vٯvw##A5tFͽJPOӀ	GFJ	uBuJjf
2rV*R#.sV޶ݬ77՚<K '|GR18#Цde!s~ZpPKcH'3  2  PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/HRSSPolynomial.classWklTE>wl
<)@XRh%.-[lw``1hQbB 1^ GhbL3sbH06ws̜3gn<s']4'Qi|4S,e|^$b>͛x37dub5E"э":`yo_Gy?*Ǣ{QO07ZtUKKsj	H Ȑ+lܳ!mo&3EucZbg{GGyY}
HO^'wwunes{[89-
ѻZ".8b&0ߍұЍEvܨǱ؍:T3̺?#M3)sƻQ%n<hpc
o
P|  H-w[	lѽXb^ʧ% U.*n$:"NQD+E5r38hu5	*Z#ݤڃD-Qt0QҬ ZI)4bxZ@]PE#`o9s*U񖜄4ptdr(
h
*mvo
?
ɖGͱk" ñݣ*[OHTC& #ȪiYD3$K@fM`غidlM}!0Mti+iN"C3e.K[Y6hp[tl׺KfnG:to(p}L66t=e&P(O/RD@~w\ӣt9tC#ЩtCoDC>bb7ŇT+ݶP&`*iY'fg1@	ۇ8(c1]KT?1OrbTR%f,6aX,FtwX"]RxȻ5p

Mct'ҧyJYŭ4i4)!Qȧj Z@_$r\Y.ډO(5𮂟+xRܠ0\ʔ;`ms-9Yʪ)Vme=Nqlʔ5SG$2QnL}AHŸwX#JBߙ\V~o$N2sWBCM4
IwBAbDe~2z [Q~OT4>i}'Re`]Օ
ЂChXfv+5xZʇ%_ڍ
tHWQ!=r¢$Po@bCj~B.TUfAuׅp]-_
TrIeSU!>TL9dj!k'X-JTJT\i5hͯ7kj*iXMBwRLUUj&szVh)Ҁ(Û,*jrK0X@ODOw+_/[2vWq+¾p8<_wJ|8q~/>2	0-;#?Nƀ!B}etʛ5YFӦY5jΜQ< ӟyadm(1_vO1`S$0H>"N0vɇE1
ELPKP  >  PK  D:U            C   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/Polynomial.classW{pWowBQQ @
M!uv.l &
2tP)lYDav:ZZ)RQfԪs탅q{{;^<}BEs07#А!1#b/B FH$fXB0|k+x	z:xV5?\[:ٺjwuwxBP\B`OyC%i/T~:B5YE#;'	x}mގվ`gu;k2VBZOmog=Tdc(o"mVTkՔM}"lm
c4)i]ӥ4Ԟ@ƐGdwi=u@GLV8v7v
Y1U}jOn`R"YOv	^c}cg^y"QSPa꩐Rio["KHdh*éCa)(yWuE7R(	n\`pM`M4Vzi:
9d2c
p
mX
(aXI6LC
Eiݏ	6<*
0ƆnCf
	ܾ"vOZCg~KLNyY
]XHǄ2@ X&Gy<{-,G:N'`8zFGq(GXO1w#xwL^^Rrr}vYٚO&ie
K8:5'Cl3ټ͹\yەl䑋[fLq2V`OyrpUN;r
断:8tUU@511pV9$z9cFz#Zī8<XϾq'?qB}.a(幖Aّ{I uX{4MO~l5kC W׮܍pь>a3R*X@Dˣ9Sga+gR]S#Bv&YcGuf}t7r71,Q
i;B[\&:a^2}Vg4%KC&;O{g*54b7|xa܃-
^sxq g,.Ěˬf4[n` l0%Zk1Vd7JEMHK|qLg&M1vYW]mzyݟ1-wú>keQ59Մ7	b8kO߀qfΓ)M/>e>x!#<sx	*^<^	.K0 RIArT~3+^Hslq..yb/e˲Ȳ[LUآW 4*g	KmUMZ$,b(LJTSYqrόwc/3?_A-ˇK4Wf^ߌkLo1<tTj(Y?k26xcl~ϔt K#A@v<pN7Һg)ڒ*]Ejh+QmYީo">bnQ!|dGO!92wn]c]lKbtYTj@,Eij4>Rb6yUWҢJ8xT׉^I5RœMf+҇.g&Fcc
bt#.h}fTURCwDD^Mӎ,D?{iUNi)Miz*NItԍ%}&T,?=jÇ,'~Tk4v	g':?q=	;	j%w튷P +,4锁l844
M,hRP6P>Gca Ms4	oR!.WR2\4撝
j&'xVPSf>j4ޠ<zj
3Tg0<uYD#
e8iʻD0`7@a<߁JTF I%eH4[6DV
PLIan"g~bUˤ=Zl>(Vg+Rf!W9MndlSC(m|1pɗ"srWArc>yV3x'B}ԆG)s)1ϐWWG30y
;MaS苵?{!F:~;OaޝnyRtۆJ_psYvN.B4OR/-/|,$~~`馭XGGmfzK
C_YډғEڅ?nfPeNGs봈vRO-,ѳ,OA:Gߥ,/!J:@&1
tPD(13T4rJ%S+#Njb_v:9J_HPOw>e4FgG)Ί~BmH='!]m̉Y_szNg9sy߫y,'537PK	'
  y  PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/HPS4096Polynomial.classS]OA=X>/[Z-B""I Kvր 
!G_|Ġ1hw1Mn=s=w~; YD,G0"TJ"K`&.`d!p[ΧNx9rxN+ŧRݟNN"Iߎ0hwT97Ͻ3%$X*ĚKzx<2`ONze)HRqssGلJe/2bV:i7ws'{ԱQF/.l
l\&~Dm0p3NO9NW6C64cWh)g3"S{|A#Œ4IWsKLG=SD[S~~#YK)GCa/PCZV
4=1E[Vu
6]`6_m[,}$Imk]y=Hm$
]4 #h(%*hb^fJj'4aXWtSXVIeG
aoQjK%7VvgjTmت)z*AVHP=+-3{Gzکhi 8+4:P~B!
T}LkPKx  B  PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/math/ntru/HPSPolynomial.classVMlTU@*SZONt:ZbŚҖvhtJNg:EnHqaFIR"qʄĸН+tH=L1Dͻs{w= 2TP
n<ZsX"H~rq:Oau<ŠM0UwH*LFD<'GT`"I;1{7鷓M=6d3wScv"5RI{AlcXҟG^A
EDl,=&GGu$cc &tsܙ'M%"v('W·[Ww$|4A	z
u4zЄ4֊:
3UR-Zt0;3ϿtA3jxbh<'vه6\$^=<LXg,6W^'@j2iQp*H1Tw- zؑdS_:ׇb",?>H"\Ƌ$DV
vJit*cx;x#ht~
cip5rKEHM#z5
JbPUK2P1RX5 k
PfQňlyU93!P44+ڱ72*nPZ\0hWy^t2ւi%6,ɢⴞ܏#<wG!t&9lMx(5n0zX0-ԦτNlW"oLVgo9.XQu/Cmz=
=`?G^gQEI;]NueTUXv;I:UHQOV.X$c5uaF6;I)Ylbi7-A$[U&]Aԇ)V5>Jbyx(b:~Ӝ	wäŰ`Ɇ9}1QyORyl^ԣfkJNyir!1`
dъoEo63h-u)GGYfq`d\@V]wf6U`ڰ
fS2lL2W30P3N\٠,dHfFf;/X n.fy=kG'9Cx7ʐ<p)wE9j.A{G/.c/~A+F?!Dm͢~3^E	_.>ǐlمQGD/s5G
fuLQӟ+0d*_fOq8q KeQh|_y^2_sK݅bHVkW҅e+(1BW&ĚGǡx17[mp8$b`.p8KNBOPKU!v  
  PK
    D:U            <   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/LittleEndianConversions.classuUMoU=cx7P'I)JR%HҸmBdA.]'J$(A8+BEhi"Bi*+6b	*fpHx=w
 Oۇ`>xXX+Jw,~Vz+5^('.f)+S䎖<:EG@@G&V%'Ðqc18u$=)IRQ'HB-69;j~ReaH(U˩R9,UgBIxP'JU:^.+ri5oS,V!6ʕd<W.fY2$/M^E^U3LJCdHL2V<(؇١V(D>ZV3JK帏-6/4walhzlXXՠ3ܴOȠ&[
>A%B7WksapX~&3W9	Z_&A>
mw7tEy=N{,Y],`ykKu˯o06wXܶѵ}#}oƀظݸCr&(1MxCYIXB
eۥYw<^JA
4a=A# F )UY6!=s^z!0K646H,o(Ǽ457_;av<(M:?WnmoF+-p}H=d'd;zT5
E
COHG.	Q#&>p@{4)xYq|]g#Gpo`b7#D!ݑ[$ph&ՄcMؖqTnS'l|>Q	}q!~loQPh;W_ka)5U]a{|_skz6Z c7v2{z1|la\uxtDEGT7!o];^L}L!ϓn@{OHq?=ΣpkFQL?r|p~x?<_&֩#UKRzIPKA}z    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/IntegerFunctions.classz	`TfɄM^IB}CXb$,D!$LXQUk]AqTEElW\jmUR{-VZ-~L(ywϹ7G~&h-.uQq7?˙rsїOW񈫙S0cn:7gnnt҉-n[Vnnvnf7;C4Cܥ_`{77p}<~v:[:GOFp$$$THI"/INÓh`WIct_pn#:C餉GT/G1YGSy>xB<Sd474۫VY-f>¬~	7\fVng3>RU77ᒧ^՗SifZ/ޱ֬nM6K|1ϬxeO%UOݱYz:lVggʳ_ZbV;2O>ׯhYu smo0Ԭz5sEj_-2dN߱R7J~jSffڦn4Z3kZ>nY0v٩U̬*ɬmzij$kVe8|zԬrdֆ=fW Ȭ< bc;WA}YDPmVa7J.qYy#hVnbbՇfZ&vLWjV.dYYĆ+&.fVmfeMt+ܬ8`_7f~8lVI<1+nL$њ$&$Q$F&$H_%I$?IIIyʓ')OS<)OyR<Iyʓ')KS,)OYR<eIyʒ%)KS,)OYR<eIyʒ%)MS4)OiRwX q_L٤K hAYVքƶb+DZ:bpW a4b0 OcYΚ3~Z mq6L?e 1CPhGw,[j	cxw8psOW$~l#ṡh;5GE慖"UAQ@)͊tg/w%ſ4v{GCXyU}39UW;&h7螶9@XFks cT]6bS堖ȚHKxrGhON8ⷂH۬h qBQl&rs.oFuskPHl
aaѮrw[zØ6*hRzgt-+tFhm~:qkohG}O[,F3xt|!-܍5nLt'Uk3Y슴Hw77ݱDA(&ܕOqל2Dܨs<gk7m~ve٘o=Ǚ!~^h4;SOE(6'n.D:
7bᖸ/c@zxQ5]܅tNemhcݬkC</yDQkx}|W4%¯1acLlǵ1<GS<"(
=x#%/{+X5&=OuQop_?7=bt-a[ul,56=0lJw+Yt-x#ty<_YbGLǅtSS9J;P#4xX^Ǽ|"^tJu2q.Pt8jk
/
=V\zbC|#>v^Eu_1!#E!7#xznyq#44
 e+pJKps3}zh::b}5cvGZ;zzl%)Zzf<²#59	ߞLYUWDFZW1x4MJgG^".+E
j
/$k",i°B(?Fg^ܴc=^֬rckX
h QncD,;J,}f Kh:dyO[A,Z뉅cPODo˚>PHtLsjv&v<e1˅dV5u];cѱSlhw4[#= SZk8mkO!a%8;C|,AF2Q͡$Rڂ.@7#kvNިA}!V5Z@txp\9I)hXxrWWh=wf'?*p4SWG4G;w}OW۶IkCjSаq5UJ>7vwhnY語Ndܺpה6tsēȩ؂p>3=OSP5B-E/`yp4NNslcq$qb<	q_Q9cI㬏xB8Up@QfD5Hrqf&QHKWݤonEȰ#&s@O}nLsvQile8>8'Rг<)uvo_}n&+41DJL*,sn]sgƃ*(*sLfA
8Wq	[[NJҩL!/MLFT@3꩔fS9͡)4o-etZKKB<]CaZvOhMQzVn)Fz	Lc:k|y6aHFND.,D頂IdwaXQø}hՉНː)aδI JTClMB	`MmIP+XLZB{dww¸Oty;mF}X;̦`ÔEjT*1}F,GLQf}3ÒA9}vshg?F`;!}NϨ`N}R}n[,^|*3[[xq~~ˋ{oHn||X*dyBlȁ,>}KI2vR֒2 2WoRߺ_!37#tl%F鴍rNF/.Ģ{? ;~6lul	St)=
fO7~Q3<@EHo_U^oM:Bo	MIA: Cļ4MFD+KFkq>p?oV:$a=c"C{NM)tR%0ǭqG!
 2|Ȕ){dj>dQ8*%{)7nCM"MSu+f2i>fccحOi ws8d|!P0TG"qJp_j N`DЙ
m/c%Y=1\G"5V$-#;=wE cTPWFEy̿q.z>.:vq40/&{H;LNM9U%\(hǣBݤ@(Nx)3dcx=0ˌLBVQj\W	&}_|gyxOR,S*,6JR]bfȶr%_WnA5:ϭ fAHKE rJ.J=d5:
sldC%\lXs@H3RO'u,^y{)d9ի )K\O>q
7	b3II)B^HRsc;{30vv=Y߯Ѐs+soTQ\.0P>
n~/-Jfʔ$ϏbO0{O/˘,5,O74i3#6o/_ZcbwxXkĞAZrSK<謔U<JNQ6WTbD-
,=oy@E$b4rk|:A-ZY@.Èe@܄HA,UKqTHnB]cRHlEdH_QdҴyj'&P66zJ«u i^?Ok`Y8!Hu>r14p:p	NiQi>KeXoOH[rUܥXm^|<*?w3kɫ-t,Fja*Z$mi+hxa.YȄ(gd]/(,3}\L
+sx.9Ur$ܨ|fqt\B>eH2MHM(n+3PҐ:JcaPv.`yPv!6PvM.Zm#.Rj62
kryǔBI,J("
cC(
>^˪6\DO4ϼwTVk7u#
6C-4tP%O#`		3̧%%2Kq=Kaـ
!v/s=3\ĔK]hAÿU
b
?
;z<)XckMǇɏG{ǿ>=;0W䝔y*dKT&Jkao Ҵ]@Q@{h$,Ząg׋mct-
cYڶC-NtvlZo'9ƣ! ?_`
E
n6zGtA#tt3WLᰳ6"	nFzE`De1r߄Nu~P T~~o6`ߛ{;{Gwƙ=x4j`e|^-"U =,=a4VA@DB?VBgB~o4>.q58a0Ou7FC4gCu449)
MNojC*oZ7˛6;;m Xi	hr[6;mCm@mDmB
yhV*vyhb@ (pCh+`z#AhE *zP@1^U6DE) 0^чDɊ>LP
`P=E	ei2%2J J J*8	PD	`J
k	iJ,LSb	`Z%Xm*)9Jf)q	^+Рf%XY)\%4* `{ x@	VB%s&%~Xl38 XG3p_*qRLi0;oZ6VZ1`X/JcP[VDi+ziSB@ؤ:v 46NE fեnm Ĕ&գM5JcUڵuJcZ; g+s4|\4hBхJ{qdHi3^)%JRqe}V˕xG3P酌W*}UJ/aZ?Rz%5Je3^&딾zxoTjƛ͸Yk(
ƛ~5-Jq`Uw1ަ{oWw(!mJϸ]eS/0D鶞~{ϔ]JsҿaGw(`WI}J1ޯqθKɑ*Ys%JNcܣd^%RJ.a|DfG0>+qPZ'V/|%cO2Wӯ|Y%m{/3VwG)iy%ʰ2R_Tb|ITF6ʰ2l۾^SX?)4ו
ez2o*öame2Sfq_2a2l9n}*Yƿ+öaʰcezDo4+ssċ-֮vޕǜI+-tb3Ţ~|!ZD 4_jV7ۅy;W6v=H}dn#~NhHogcj-}%$kC"կF!կlϣHMare|gu3YAbyv=,NA/DȢ"[]>5C,ufZ
Dj5ަ:٦AM:PT52 ¦
AUPl*TMRůS{",Z΢ 6zƷ,Ք_:ԃ7D9F4YFSvzZVWszZyOq9rpn̶o<r^}w^~	ZGywUb仯Jnj@,cGw(}AhrA\Q2ŻG@/r2DGo[r3\%ɽ}_aQ!"Kd/^OߠPOC3Q- rCj?	ua9g3TR2}=FV&GjCAj`o-s$?RǾ8dKK܏s=> qR9<Ed
bi䓊Ed$$O!|`w2.O4A'Cu{T`*vҩ`/S悽Ekm#_n^58~Ak(
EXʗh<ȓiHJbej~>8D&+:K#T|fU>^AyfmhQnŻhs_	z=]єE/eN}1m};5oQ?,*YMCd
sPöχ*N/3Q.06y&#ϢRR.e3&[muE(8By"~Y+H4`:Ӣ^-F(|鴔ÖӮhR^w
2
_1-lbنKd^X>akg"nIj@Kh\O#9T,ϥy>sUAn.5%yM"K>t6q=mOvi޾/n_ʫHWC+=T&)qĜ3bT="&X`ڈhݨ`m̑i3F9EyMDK
dѠV̀-u8RS#wSomp; 6ʖ/J|3D0^K}4E>@3č?B\˿.!w ^ZT)s]Rˣ,2d@ HQ|,$S^aoˣ&=mnMPMEgmBJmrZ<Gx ,Z@iXx,Z
H0Ȣ@Ek^E -:a ˢ
L.dYt	 ۢM~ YtoѕEWr-gѵ -Եf	m60 h;`E?0ʢ 0{ AZt? bhCq=oc,8٢',z0Ѣg %bѳR~(9@ETXҢ UU$lLmTL}t> 8 8բu}aǀ}
egz>̶K@E_Xoi}ka@E}y,a Z8.@%R ,
Xl	؝K(Kd δD&,KdZY" Xf<@%ϭNJ+JʹR>ѓFcs9Uͥ爛7	G72=K%*uo cLh{^{8Y{Ԙ3&jOhFQmL7&k0h_1Twp.c(9=z#!.87'ndE
"	a9Cy/Jr(ØMiY9='X,3Qv8{HFNͳu"bQ>ҍdgRq0&~%߅bC_5qȕKu.y@܏PAS1|Íd+mDf=E
bVA=FS2Qr36cJz4
Fh~<is4K.|w鴯.Ma_]:K}u鶯.SES,%&:5FY$cO
H,
lkP+ެ!\9}4|b3x3lvPKBU"  P:  PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/GF2mVector.classWml[W~}k_M~^ܖmmCmIÒYi5]z8W명L$B]R~P!
nBτ&$$$F@EsuI"s~<'?[U
T1C~V1Ë8"G|E>
cWq̇4qLpBOJSRpgTƠ_*"1@hKOj앬^F|1.l:o
sTEO80,/	x/YTpSY4gaPIPihX0eTNSyl셣z~VqnnFO-p`mOڙ}9v`ս.hbh
V*RĻ%_.f	´s6D\iRpwuԧnZ/0B-o;fT
5KRq=NŚ
Ft^/S'Y'D҄U19u9MmTdaSRUϔ
T 1 ~]-#\`×FY""ˈ1+^NcNGJJ̚5b9Q2bv[60. Yh`Ŵfefqw8oHsldMU-/kE,hBqdLPrU_\~.UBe"ޖx 9)_EIe-	1T1x"(+6ʁ7d 1$//azRǛ79ì68>sb֬65"bFed"{8]G;<F3v<O٪kڞyҷ)zlFЧ{)Uv/7{Gs
@OR>@\|"dbP%$uEݾɥR
Nݍˣm[݆('ၶ4#7a<yΦ!{7q5xKۿO8SwPƭ9<My;0 3Li,z1aƑY<!^
-ϿO.Z|
yTTTt76q[	/o0>q#"LDo HFW	LoXƻuwcx'h#Xrr76F
/1	$߇S;֭p70C].ٌn\\nqnj\V$ PuNO(W:U}x2=MXSw|֮Reztz:WJ$aX%Dg*2o}\)Mu۬aGO6T['^I73@5VUu&: Q'%`\or.~y{]>GQH)B/ysAR@܇Sq߬͕Q&R_#ߵ}jp߇Oltg]@:lߴ0!ѿ|Qٸɥ59!9nnqPfR6]DhRg[Z%d9؛1%/Te*K.P!?I
ss'GmT=dJVʦն;l}kv҇7ො}Gk<,VtY;o@ю4'4Mȉj,"<Ȩ`chsDW3
񽜱'eL*'%k"%{&Lc?bX1{09ɼa,s8yq>b7l8"ɚ09ODK-۟^/PKY1-  
  PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/GF2mField.classW[pdYed 2;@|)DmyA֚՚-)kB:SBv4\J;iNtoyu]K?^ '+ŧH0	^Qy`\8 \NH >-Sr9	yxFhp2I?ɗx0@! #B0*Z4N1yPZRG
YզvpfjB3Չ<)c9?Nw_Ko=GQ%m1SeԢג2)՚LP5|N0䁡Ω!]gʜfwz[ZCK`y,d-+'ͺ8(L-i^Eq015צIM-sE5Y23n%AsApB3ZGΎOE'	漍cPOc*rIB.̨Y12qNXRU`R-N:	X#J-+(]Wp̘13ڐ.VS
v)B3fB؈M˪RS܌t`p6M[Qha&SVql׋q0yiq@(mFQZ܏τ0!l&	ks+(x0MF(9sTU\Zv&ۥ:1giq4չEEj!9E`lgC.*.y.;BWE?%|90lp?hfMbmWCx_wp {M6:A+G#%D.;=EVnQzJ,E{iW%/Xnua6kLr՗){DTMa}:?&㨰#/Y+%{>6|@Ɯ䀽iE=G.Ka[G`bol'oCp>M5&ZGucPԂE[VJ#A=ڷ-~`hڧ֓N%{D_\`kKjZ}"1{ZH_WߑB)q5rHX9Ǜj0pRfbQo.pZ%F07;Oos
'WOP1FNY*lF?Gq9Vޮ[ýD<pT|*7kE޵p݂JPhZRE\;8;JxGTțJ<^/.@Bu*c ԃ:@; uT+Eᕀ(l#Jp#(Om>q54K9ob˱]lô?x2ac4{:8ac'pJHp\pv{{>Sӌ*~ۑt5rg#lϭhMԹX5ȵvX.˸_<v1z$K@Ʈ,:]%΍n1Gsx9vFnu[Q[Q冼(}!{M12߂m$Fڢr)z<lUf;Z)Gs/pdo	;=5kg
Ԉju3Ȭm]);OLISL*2Bn\'F^D|@U%QU³ x";[]	}->RIw*>^4MȚY+[RhhDRU/gc*S鸏5.lcw
/v	1+{:!NsAs[p
TG߆_"zuQEZxAca?~sy般5:9k^S.s?`axAx*zl~dm#hWDQ-V4a؄fьVҒb;>cmLN$~谄
{ǀ?Km`2!vJtDD7ZDľ W0ۿ"be}ޝ{k$c Dy8q?x@rYnȆ<zclHSAԭ5pUaov&ʑ 8_*DY".4l9fb9t<^S+جoBOxm%Ł&']c9hv%-gu?PK)<  |  PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/Vector.classRN@ǉM 	)
D	):;'N.g$		kA4;{{3}{yp]6-Lc2vL)P$ӎa0NӞ`D\f/
%UPgQӦYG}{{BjѸ+TZPy|,	>RxQ\=IF\q
_q#C
8:{~Bř:Jbq9fXrZ~=ɓлD8Pq2ҊNZEIȰ_*4S8yLL92*U`24H{-ZIE9YPEK`ѦhE
̠oas a
/p.aqk:)l| PKo=t    PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM.classZ	xչ~Y20O&1$F	˪Q  qɐd ɄAFui@mu_ V.v_ݵm{-<?s|-0QHs`j\k}l\rnܤFndlVnŷTom݇݇o;UP͝j=nܣF>/!hjTC^<	SܥzUjQ/cjA=zOI<U30\1Lyч?=xY<mk8v^<b²xwGHW-:suHuB[#IDVD%"N[>Wm"nHDN._kE;]R.0>mVysΙ8oICc}݌y7K oV+H.uGMZSct/rV㚆eĢȲ6,"f[YmNĒ&,THGK]0i^Ux#~,09$uuD9uXkK\)rbZ5\z[g_Of|m(:#mmZSd<w欈&g;4S9)i):pUN<z9Wt&Ǣk]yיl8Rl;@6^Dr9\OAoe:҃
ڻے_%[E۵uJ4ج6f1[bk.<R-=b9
[ZO֊fԫuǺ\\{PgP#h}$U9B!OBr@qA<;ŷ|u&h!9fQ|n" QRhX1qJ)؞Xƴ
 ok<d|!X!0||	{b7;ѬPEuu.[QH9B$ER[ʙ2DstnL:f~e~bS1͏8y-"6#[ydLp&UޕLD:xKW?U?~_*Ru¯?~8:=؈M~,iuesxlٺd,HD֕ź:ɲ:R){يؚhGrU;DtiS5lu?~Cxq6"S_WE]@`rom&cY@y"eQ;Nŗ%[ʐd,͖Z\A
(h
?ZU*"=E]yDKdjt&si;plb%W^//>rJGP8Ёܥ=$Up2Kp	p1-01hH1e\"Ӟ]
mm茗*yutu0 8*6ea8J'ؑ-#UMMofPNKT@tD&aUMRU_8tWs[!WԀϞ/=$AnfxdGhURRUi!+mW5dY:DV;Đ]4Rݵq-	;n0q4Vwen!-#&b6MNЊ]3[U1`C/2⫢u۩檤X9uĬHWWܔ-CQ'mѮCHi1
bC A~GG}&F~F</ђ&q__jt؟9lrd:~vAɽ!j.A
1	LִNrh}jմ4'4^8
Zr\ދG^R`s_Muhx&9<Dq2)J1hC`sBxyy2aٴPY"+C0*v(kd@lG2 )zU3**Jv#O-ی( pD}E0 /!J!VBq%ENάB
k?y0F|0\CkP'#3*.A٘1p2OM>/	7`(\	7fA<H:Ɇw%]" kZmZbи؛UNuwvϊy
ŅjMb+R"m)f;.ݎQj :" I"o^&?(+vhs6{'":3(3p#%o R[mۨƝtGލŸIA\뱛#}lF~tnSXb5Jkxc.5L5Q|W~R@	^$^H@S]PO(y!Zjޅ@OOζ93GSշ*uwܕc1ޤEԼAxO4i0tLR
..ZfUbF/2fBCw2!VR51a%L:d+Ɩ6RlAns%9=b&`-ř'9BT9MR=`~_k4غ`N3U raA.xUkM^DL1&RG7qZT`<~ZsnĠWa$*)Yi,UiS)L2t+%;1T͖V]2;QNqVYbo?flϬ
C.įh@PA)LuU&rPm;Rn=!q7,(WAc0+͊eVcaXE(;nAis?UJ{\TY6B.9hGVQIm((1^$nL~ݴyZq(dN}>fXƌ^6J'
&InXCJ(vKI2k#3-iKT%(\R\#KvaAfv+n1RlIyvD3)Ǥɲd6zy<.wldN1]9f.Vf^jl'J6x9\|_],9\P1%mʷ,2D8B[=*BP<C|a<;SdPpB3g?ru^|z7"GִgPH*LN2L"4)dV pkex8x콍!L W1/b>g>,_Uz̚ijpLH=0P*+PRM5Ժ,IZ.FN~al[pQ5nWfcj(-U݁fZ^]ڣc֡
VxguiKM	,/OYp#!KoPzo\Mp3zgxQl4macL2
1(BQӍAh60l4,\gA<`	c6FjKOA6Wa0{
}
KXR:TG4RJK2VV*[>]8ɡt\ҕ\!FNj|@3&0jTa_fܘjc7x-2$c.N3NdId㰊(?"Eua̧"hvV4M&Ai%R}}5J?]wlb<؊BW9&ahy*n+ǴrT_ANq]
Y9v/	$sdWųlZj|n}/\yN:'״rh*}NMo3c3B^)V
BVz!+W͖B@+T"ݳlCz(?*p2	coT-IJ3Qjt`щDXƹuozc\1.EE¸0.W͸wq	Q
<i\猫#kq5~o\M|d q5nf1,[ı-bqk|K7%6lШ0i2	VK)%FDA
7Ai%gKllJqUp;N[j<*+û0w
̐8>N)oVYq>)3L ܼx](0vxQG='ritϠkc# %i3(v
Շң륯?cou:\JJk*촟 !A:锡|P8JuTہI:;HfhBO(C;QBVͮjYw#c؟3^`
7D6jwp4řߨ},cRTJ@#cSHBj}QdDuKؕn
M2rvcRs1OUeDJ/&NMpfKIgĮUZYsf>Mށb*6f<&/if 9{Ybts4ceCǮ5fH55&פ0	|`@9qi}qT>Q?
茂ki0wvLٷPEE1S=ތ!7z8ty6sl2`y"Ƙ'LdTJ֥uuw̬/Y)5$+ތ&PTE5cVnC=/;RGZ3ۇ3R,	f38s1yvί4hn\&sVB)U6զ<62}=?:QȼNvWԵc5#DXB˥!go]+b3`jV[nWZUOo^j|j
`>0,c y#͛0Լ#[Pn~V:6:m8܎3Xn~f/6w8b$v>o.p~ebF":?Mbn>HD?!]n9^Ƙ12VrTގ;ۍeմE{]kݬ[̨w˝d+)BiG,&af/bN6&h5UORh;j e\N?_IXvz't%Pu3Le;( Qi^ef
?#|y[(6ߡsKXSw3.TIؿP?:QuS_[;E_=ݬb2+S	
"i`8Jq42G3Q sBhTsZЉZEijBNɀ*Y, 9#=J<WRUa9T/eNNe \up>=8?B,Car,c8L(/G="sϥcz/4Λz6_UXZ8ZD;<aYzI/=uhH	lAAH=
֒d)RGD99W]E'6bC*UqDD6m7^aYa觊?+SEɯ _.eY|6J2%svcx/c#W|Vs&/$."9cyr#	CP.jy5`p.oy/(iTBz{
&tq>Ջݑzо8[ue4YuE:'ef?xò?KObc)&ز/5y'ߍZj9$WUS`->W('x?Ł|uEj;j9%8`oU P(
jjmj|^܆?nU6`OcOř:L%)f[\LT:I<zF)Eʡmj~W܆az:]ע'K*ꮶ&Nj6.Y~˟Xw`컓nq73?
&ɇk.2&ke6'p|
ʧq|y#_%<"'	^xMw/D$#F߉8Qz8S!"-){FWU/93j#G
~LFds}ڷ|
R7L=-fM!UǎT.4qVX+%?aN1s>guPKf}l  n1  PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/RandUtils.classuPN@=#B%HH(Z14.\lLLHPQN2`F~'sssmURFF,Ctr,`U}#-G!SnTQq+dXzCa<K	w:nYm2$ےW|0V3Ł哔y&-{Xu  @[
wc-m=nwqO!Տ0dSXG>?`
2eF9R{{!	ǡ[M%&gdIY{^I4J\<|J_H ( 䰁<6-M@@PK1=\    PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/PolynomialRingGF2.classmTklSe~;=h:1"ee6`[!0<kOʁ^YG$5jQ!&35b@DGH
F	Pn\l{/we kX*ux ղ"#UUT.Z)iZ֏nuѱNz_]io[>H)k	4lα°5xlV@kle{$?QSm
Ha^1k壕Z9lseٶMm*v1k9T9hYZxsf٣ce2^?%ВwwR6uC1'cmyq<b1MA$D+D/>8%gC\J[}ZDb بA-Lxԭ.a&V,G;zEXAXCxX`}ɥKcD-T,L19k1SU!Vuf15|ʔR
MI2إn.ʎezZ@QRHw,Sm߇NRẼG1	RJrܵeC|ZG#HR
`ZjFFcӳ>7bZ.Df}u]ͱ)B2*_xwO4˓ho=R!<nRV1G걆EtM;r )MMѺ[&?^#%ns7-M!-y	LN3"H=+6hhr\G|ghdV^ObNJ;{{a/ڇvgEOz̸5D!tfq-75V@>:%bR;6T4BӘG&<"MԂ>y5
J/Cf
|$I=V|gNZh4Bk/V?&#T67Xɛ+9Äoa%/x$@j-݉gRKTf-y	fKvH6+jpQ.ƬHzcDgnߧ'ҏH>.rj?	EF[]ƸE,a,wKѽܥSh4#2]qM_QB¿fp${7[B42	j$'l44tɣ}Z7C0	$|[ٜJ˾*A25ƉmNk|HBۨs5Y:;kpgfV6-^0#>οE948Qz*9[H7( |`υ*8;b]z,w0֑	y\
7h/DH,P%iPK~HN    PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/Permutation.classV]lWfwֳ^?5ަm&Mmu46veC$MBa=fw֍ӚC+Jh*@!/ C|Θ5Sh{ܹ;wXpߌ!<a 0XfE8c8>pBNFb140&T=ϴ@z|68aVZ2E٬mCv4
rmLTsFyF0q?:fiM.dG6wQ_3#_-rfZ,gt{)S)w3Ҽ9;{딽-bk;R5Q0摎ΜS.d未_22KLQw2!e*se=3=@eW-,Y
rtKUݪ(uxtȄ:)δ[6킂V&Y;h-`G'`V9!ǟgj9o-wq\P'kYFAբaFshKe'-.n<rҬ$mMR-VrIa.<u/C4Q|E;
%1\RwPԲ<Y4+<g4(aq+nY/3_iC%7*x^̗X5|)>|fD]cIs`6QCsvOW(o96J=t^}LoGySGq,p99ݛ.BuQIs
4WWǢ~m\vH\=w laKȊ|E(U
V#gLgW\ve#gwhS&t'ixpJw6(준N'(Qu-X/
Ѿ`;Y4|O^Jce
 9YDmG,R1;[>~9ZFeg8p'ڻ,p3bDi5x#{¦`ǟ#n>%7WQy{pldCw8']#WhBJ`͍M p܋0Tapg71Ane@C|	(Iy	p~X@J]Gk>MI!L<"$3!f~ᚠlpCӈ2^?ҟP'M+"Rj]^ILk_&.@WB%دEabjJ<پ䊪.bKҸI4r<FO!ahI4?A8	N0BmpplQϺt14s|32!_ASO/j?q`wL]CC݊!Sғh\	k
]@g9b. ,ts0JbRcOyy^fB75<(|6B
Ny*}
nqO,\T}=kh빶M_b^biWXܗ)R-3
B'IAuH:a)kR"H6.r.dぜ\xKq-2ԵmAau[7$(H? n\A_9+|`ozيe2Ծnņ0lOSAkw
UXطo[8J`
VY1t#і_c]MC,'7Tl_IA(twN/5n'
Ly*!4"m
.-{4AޫUQC/s3p> v]&?0_$TMubJQ«h=b]Q"TgSkD7:;t}aoU?MNQ<.<A4൥3VY3ܛ)9PKuoox  
  PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/IntUtils.classUnU]خӆNK<N/44;-(iRЋ[Z	i3.7) >Q$P>P	4 Tax$EX9s{gۃ6z0GZqd(z{[Y<눂(9fZ;. 
f.'YC`GɴјgjD+M(bySkիg਀\ٖMLHZ.z+M:
ΞӅb[隶%ANsDZ}kO
ӚJz[s}TK\q'Wkh)٨LOmWrp͚@HK0%* mg
=x/'pA	+
N&p
\~nZVUwܚ_tRƼ
6g4C<f]\yQeB^7[k,0'j)\,m-nabU8$	O`>oLVUw/%>9n$xhpsMԘ7*[Y-->NnZ]0NZnyU(B^A&cU{;NUncsl{YH-hLt1GڟѭٚnV½"z6e&~8e}!?{};W9!kB܁wvp	t
sC7?%yHkg@nǴvxv<}}eӹoo!,}4(ZC̀cGascX2`'A{1"+&e%P5!!q/aFbw}{.Oz]*/H;k{|cBF}1LJ]|܃'Ч%4IYُbAVHi)U]Bx\Kx-~W
p:z)p|t4tA|w	|	kiM͕55.FH$Qo %#d;iI97p,eI(ň6;rR^/?:d岰MvLVD>`?d?8Op.?4' =@bqbT855RCX졍y׌ߋ}AŠ$Zvfc(-OoMI1?27ӟg<!Ֆ,!N-7B
ykmJtYeUbu`v25i$vugx.1":?PK:  m  PK
    D:U            0   META-INF/versions/9/org/bouncycastle/pqc/jcajce/PK
    D:U            ;   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/FalconPublicKey.class10C
[8B8AE		R8eBlؒO~ [%Tb&Q8XQT9C{Vߴ.4Bԑncu-2>rsĭ:T)
>U˔;5#@{1	L̐PK?ĝ      PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/NHPrivateKey.class=
@it<xAP!xf,<-e`by +
=0V8C𦳓OinY6a,~{aa\Dz	l2XGl"&NŰdwJc$Їs$ACȄsRmQ	:Jv*oPK무     PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/FalconKey.class}AP8jB7n<AtZU\x9TܸH~`b(5'md\ʻ)U}a|SUr5ŉZ/oƩ%YaYZQ?R2Eλ\HzzM':>{%tѻMAtPK,8      PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSPrivateKey.classJA1#$)%3iYY
WPhh.Ϸw Ss8qc@35!/	pH3[g!d=x%m~I8׵7jQ7NCDjUj.(GMQy(	pN+kNړWLn&bg	6
#nN̬KAHhI`PK?   w  PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSMTKey.classENAZ8.U 1ic6]fd(1BCW:Տ`vf-#GY˂mNxYќD0\*E"S-BgMf]ImpqfgTJ.aq:+++&ulRq.~w޿dYP{)*kC]BPK}K      PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPublicKey.classM;
@؉pT(r6,f\x(1q| $Db*YXXfnd
>
5tvUX׮Py*jIƲ\IKbeY{kB`ޏ(BX|,iZNzc CuaPK@R      PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPrivateKey.classAjAEQR<n앫.!	zr衙IzZ9@%Yۄ(^sTVap0!LJ	Y,.XsǦ
N'MŢm
Kyg.a7ѳ<Y'5IԪ2C# ܟ-ڙE%U+
KwCA
7'{ PKk   X  PK  D:U            G   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/LMSKey.class%A@CA`Ѕ+1.8%L(3p5CAm/|8 GHq).AjK7!۾c9V쒟e=h®JU}#kjQ+ڰq4U1UT;WYᾫܨYH x 9!CPKh:      PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/QTESLAKey.class}A
`iQ6AЪEm*(毁Wk:T-0u XsH.
:ㆵRQŕU:aQV&D*)[A^,8I3KM^㬽9k~aܑ*Ya"\9Ndz~7PKӬ      PK  D:U            H   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSKey.classE;
@`!ƭlEXnuCHtr5
N31|X```Hhv60&,h.=>)2k;kr$㢲&c|&HVrU+YDdXܱHť1IYBV?CEBpPKC*ϝ      PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/FalconPrivateKey.classj@ј6B/RhTh'cذ$f#< }(*"a=O ^0WxP)<*dzRMWsϦ
NMŢm
Ks㸩;ak:ϒ['mMe:,.ڙԟE%˫
wކ^w?@#0AzbaPKot   D  PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/PicnicKey.class}K
@nApFA!)T\x %
	!|Or\o fEhGDq^BżL*1OOgDL"Exk%c.]^:ѥM0+&_By/Sż'*0|
Y_qZB-T=G
BׄV5DOPK2^c      PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/NHPublicKey.class
QXr(9$P.]ƶ۶Yx(9(4z
m_%B2H"^kpt}V,(BDRMbsqi:ʔ+6MDάc61R+ѰWW'&
6-ao.Vk7	:<%yZOPK.LTt      PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusKey.class}Mj@F?9?nMJ/lW%@hHi
>X(ƱqW"ȡB&]՛.$xC\ <xcFScABX--8oFz1Ǔp%e(:K
7,k;+)k%wڿV&d퍨\௼RߕSl{ؔ@B·4&1O!PK6     PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSMTPrivateKey.classMJA_eb:&GH6qk!jPN90hwO\ͅPbRTߣ

[

;
B8qsYw	7YWM6d?'&zV7δCD?].h64ϧ.8JB6Fl%%/pO>aB_J1p'؊1?=*C7=5oc=MҡI;PK     PK  D:U            F   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/NHKey.classA
0DWmԕC+ O~Bx(10{ 2(
=6r95}Y®5WIbx
;N.[C،Z9HNSP|[I 3"sXPK      PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/LMSPrivateKey.classMJA_eb&&B{q/D<@S==2Ws<A܉ԃzzx}pa9r}#qV!d
8
	wYgD:N-ٯxV{ut9JVR.`-AnkWnk[I=+ÿ́	ï5_#-doc~=*C7=2vnr}w	PKەg   s  PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSKey.classE1
@Dgct5-q**|!KHtr5čy ,1K$"(ewfwqY[m(>u졹O-JjHW.gu2
+
۩uSbWUL\<:tۄ PK`{      PK
    D:U            9   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/PK
    D:U            A   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi.classV_G&\6`D 6$xG
DP6"-!,	qwMK_K7?mr3|so .{*d\2nঌ0"aT/nxJ'ALbJ̝ᾄ2D f΃9	b\~9dȋ_ eŢ$-뚮7jyڈIM%n*KIzdMM-C`prU(aiSa+=8*QH=51ޕ<L)[3t$jz)WԱrc6:sFK(p$XVӢ﬩V͐!Xs#?^JaKFZWbIV,\8P"'eE<KP%NVp4U{1
hFT&Jx4ueҎ+mē/}8Sg*y^$:8T>,AcYB܇h>%+
'v}Ma	')aǨaؖm*)n1_O|0AxGX1j	 юEF?e1zWUeUOh1nOh$Oc~9%<!%| H^wЋSsV@nnS)ôy3v6[SNʶHv,Hi%#Vvm^G=	Z}33xGwK33qn֚ze0$fFh4[ЦhX6ѬGLS
."S]n	nيRԛF6ljQ+mDC=Nxs4H\*9-rX3*ˣ-k"Z'g8$8-(j
}mEzw1>>ȬFn<ի62[q2},-ujO_93m6:Q-6_
GμE;]3Fw $|KWIHS	N='SNX·(z,ɭnpjDG鋕
EDI&nh?l/.vͯ.tһid4lB0u7?4^ut&jz96Q1M؂m ! w~t@p	]:N B8x%EBIoKZ饧0@0E06om* xBl%&@A\ktC?<;~s~&p54.:ZM^<#=*
6򼶸oI {AS$!8(y!I;ԡ P"@d^]/!i]mx>hBJA4=߭e-+[h()EzTnxTv5  d}o%QvId{y?PKMȹؼ  
  PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PrivateKey.classWSW<XXD<Qx[ @CX.,MlPj=U{glSg:?bLFf 7eU2i@*{FB<+	pLP+A'2؝(FT\0/I%X%nX)	eTcD{^3^(Y/%^?'<^J$.
	o2'.n&q81bFR
K&y!RALΛ~jC1Kڈ&(	nptn60USJ04>L?5s$nnh	so=4aH JdղL7iqbl
Ewnb{fc+Z"avH7x{r(%~N}1rZq"EFEd?Tt	
ê?%
5G)aKNqGjH~n5Fcn
1d0
~pj14lOMOC	ݵ!(#63J!mV-5}Om9an>&W#)Վ_㕠OZdWȫbu)eSt$L%M¡KT*lؼe2ju`#6)7(؍
E[M;]}|`8`|399jF[36Gf	+؃+
B+᪂kDA |JtTXGdV	)_P"΂ӛon2$|+lbXSqؑFI"< -Cʹkaun斃ŭT	𽂧a,	v
s j
nw&%gq}Ka}Z<3*CT
wt>4'%j"M
t
1SmuL*D6%vJ
f$ZQ"ʠbiT\0w+ϗMsThFhZU͊zȌ{z5!rkMzze<S=Ґn~7>hhX5yxz$OOSO)xRw]s=-<"Wd<v6HN{)Fȍ(֐:NlzjJMKģE+>s"OMFE^w"*MdN9g.܇bX:FhNLJ#OlFu:;F6\y;Vk`%U(jf/)pOҖ٬kK>좓(v9oQ$Vi(<YB+(͡zKkɜIFF̳;}(tD5EY77װN1צ	̹}nרkE
	Mdh3梕D$wKP/lVfG:RѺkˬ(_/kѴqE6V;D.Uܺ*B"Hcx|"N*Ď	,@,[l2X<%XvUݵwP퐗c fŭe=LbW:>&O  ~V-FGר*aD?Psظ*F} V9Bl;;Ŏ=/F~+<ہN'w;y5ܲ5wDvk(T^ x
.a
ldvXsʡy|1Ԍ]Sbu|?d'PK%  i  PK  D:U            \   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PublicKey.classWWW]TJK@DKQhM(a`0̄M[mkkvv}/<؞
zN}COΌ!ĀR9g_;F(yp"R()[0i~<#bgxY+xUD>^q2?𝒋Q~ø<hp3pVS|0(\DXs0#("׹J|7\pa}L55921O:1,YH\͆DTm\Y݆91⺒PQrL{F&U
i̐My*8]tZ	(f"jXtBӕX 4G"r\Msj"M9Y-o-J<AoUukQy$B7VRbc]S Ir
cO켨QOr<u:.G\랔g@D9͕g)@aKVQWvp*CҸjE
S&6*S-Sɍ"au
эl_p;Cul9%L:x)$[ՙXj.hÕf^	ѸEvyU[xŎtJBFT.;=vaodj9	
x[B uWBH8w$\U	x]ޗp
0<[1gd0ȓ
mMcFU$.%ܐЁvJK8>!
7Un3
*ɝ̴x%s1d&vd^p~|XcQq%ry㣐UƐ}|#aG2oyu7nSL/?-ULUdr"PZ48&+j26M`Dz
>/U4m4;5C֬
xC!|C@rfCJm^?n	--.YPZaWl14
SsymPMi6ڭ{cm)'(Bv ۇ9M6xW?DfrBҗ%/3dvSjմL$:'%d7ϋaT;j
m\2}ۺc0u2eH.n2t>]-?1%+S"Wө38kf;eZ,P	JGy@/,LIK+|Z@5`F:5u0=d3b?"x	 X<U]6Di͢Ut,D[hCDËtoeDєr(W#{9;<M"_÷PKR2ͮi\UBwHz +G,JGa,b,x=s9ۋ\h	r6!h!%ZtA[)V*=\UjIFf-sG6LKccz[OQ4ēiNk{O"6uA}eo"xn[PsCծJM~ݵt1.L*L	5BUQ;b3<Q-_r<6FH7 ؑ4EuKǶ$.v67/5AqTO:e27DqpMbrK9};`Wz/vRF&_agf8n,kܜ/ v/T{{&
LM^;#PKm[  ;  PK
    D:U            A   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPrivateKey.classV[p[W]G++JKMҐV(vIijDvFc@:גsuF$@-o(ix0 -8-~aLKXJ~T;48gsYgg_\a>V|\'DȈȆ0C)"&D"&C%K @,X0%(rKo\)NKoBg`K8!1#agV
>.HcuxOp'>3!pNyџ
s>I6ukİf>w,y@ARXۛ=VO)fnF;:Vd)OtvOC!`%*5:|1-ec3ٸeR<k|\&p|PVuc$̜t+D\	֖_o~P4sF81a=cM8'F0mdGtC9;ƀQJqV>e87dn&#-n4pxaرdJu3Q8S-5D'=n̤u:[N0EҎ=}X18&FZ&aۦ319Ҳ(fnۆenwOٝ=;Ov7e-=+[HH0>{؇{^>a܇n
_~#CaJo@zG0aG[6Ls̰XL<#K,+*1o8Uxb5r+Ga
<wϾ$ǌc2
[÷xp!pQBKmB|idT^|Wa{f><w6kL;, a<L{X^Sw
Fsa}soQy1nM#"RWNض^*ѤLyUiŒwp
E2YSk%-劜^֕e]Hګe7F;*ZS0J'R}
Va`I6\Ȯ`Z#˭F=Ph[сHrU*c+WxQZ&^NЮQfቶm/蛅?E |qv)>ԡcqÀO_ewP7GcWdcaú%$:#00W-g[϶m#&Q<DvZQ"<
JVPo54O9Pꯆ(kW
=GOI
V
}@5YJ~8P@/?^u^þhȴ^-hKy>ڷ԰{ioǭv?[k7ͣy.^ߗӸCݾE47˰!TWn|Msq?k#ӏ?E+~L/4~x+14W@644eBP1V~^q5!<v,|ggdW.bKeBk;Ov7.e
_+=E%?0Dw^Fz=#>l>V|ZIV_(9^t6Ѓװ븸)މS⋸ py-s!v-6×H+ݩ+ё,[<v7w^ګ}
Wb^'o,n'<?+ÛkM [Xdg?Qxu PKǘ  
  PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPublicKey.classUSW$IX(Ն$Uh4D%<Djfe75}i/L/u:aiC
νYfrϽs_1N
b4a'g899sd 18?Ǩ cB.3	Oedo/rW8yՏK~(2AbL@Z SA蘑pYИl]14;[hb[fQLgL1
Z
J?РZԕGWin
b3ԕ"v.ZjR3s4HfƺvV<Ѥeb`EU;-Řj+ĆjPۭsA%((O1VVcx&Z0%cHhu32j2֊ibvqP~rKf΍9
@MČsUЮ		eӎ^R$D(Ye)7>R'Zh͡rUhv?Kze,ÆP2c>@R=8AZ*igK

M}j<ڹMcVFdd?%2㈌.t8z,	s2wIzVIY>8d*'$W2pa𪮔ٱ"+u+jO-Ẍ"^7&[nȸ)9#H+2U-sMD
aqv
nzm[)qjX&UFm,ЮWXrҚ1TzqZ$#*+RNsPTѕ_SՊ<.?0*?J;ְʒU:Ο +)ou<`SrK@o<tAx.g?aNYkźV?e}E=`x؊G#A3u1Sss,$>m
/[	G
/7oG/r
R G@i=k0Y<D-
F`ud	 60s5ӱL
F=	
!RO:fFsM;xks(UDD/)f(h/!=ޞVj=mׯynmY#r4"'?P'Pfѻvr
٭@qWţ`'4}ȏh(Dbݗ෤El=<d5]3wCt.|{+솟Mq2ޥz>/]W~G<rROW;q4f/-m|7t-dD?$a>rg*Ņ̻nk5Z=`KWDO"
&a>Bc!.`[O<ع]C"vW,6ݯw)@PK
{  8  PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeyFactorySpi.classW{~OedH6	l.6!D..DCld2Y&̬3!+jVjkiK6C^k/O}o7lv7!|gw.9w W}d㔄~/SwA0 A!cPFtCVĈQ0%X2yn4
p_0f,bq,αxDFeq<,ĥ*RadR|^F=z x_`d,fq#lQ&EY\`qcl钄/IxZ3+(
tX@EaG}B݌AmՏuBvt-an2u-|XOFoyF[VE\UQ		_]29V1CcyFY,hcM(pGLu<y|j:1CP!\ WE47Cݖ
X	SKjMd
Gs"ؽx;ÑV9b%lM4Tݣu^uk$cOVЊ6LÚ:~`snj]lbܶƌAp{G<v#뀩Q
*x_
aB
^7q@}.sLe/[%	V2CnYjGwO[N
R
WawaEaR\M9N)D)~ܯH2ؤ񆂟M?)~JaZ[ak
~oeR\`|.s1Jꓦ-kFd
~_Js~>h[V
Uy;m~'\#nskg_e-~}H}4
+u4+-V]LP۹9DknjȶFۓf*mu6ySi[[(PFLUMeGݬe!6TR׊P(R.%5QU029;Bٙ\dRQ,'24SFX;T4vឦ'v%->Zi^F!d#oe~5,#|64GL댹P`v.L0?9NQO$T[.^?۴#5P]zjoNdNtk]+ombLCsӣkv2Zɛ'M?Ot ;MwL$v\ϖ>4t<ҹٱE7SmؑTo@	u	1Mvh?qvU)-ضmN5򻡠jG
taX-oifjjs[-	+Be$┽.NЩ,&-Ts0;Ė΃PcfO+&qq=l^D=`Iӿ
)A
o~^Y	
hPR(jo`
+z!Mt
+'\CY)()zP>
fl-oJD1zq҈ hA?E:W4%% O@A.!2jwpڅ.tߠB%L]&[=՞kg6|=27KLyҸF\.<E|+M{E-3ĲxSikxZ?YU#/xǩm-jRWN:U<Yu+Zj[mMa\BC~Lxqu!^!EE6R.e4bnëk+Nø
x!ESB`
[bwGIOI/~=yȾہ^WՐBr>D#E"]O.ORoFb};zxQPvRkvOPd
͓&{A]8{h2v
a>;zZ	g;֒\濳0iհ#ȷOTjzoذ'O~PK6i  ~  PK
    D:U            @   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPublicKey.classV[sVcDQ.$\JkK@!Mh18	.QbK,>/֧%t
vC_:Nr.@aȌvJ .[}mCTZU$qUAJE*>Ǥ4VL+7Th̪m̩r྄T<w_*x]ɋs©u;}]cHV;ǋږEwxNA=˨^^1(pN+*EߜMe3c7i\(K^~0}'9pii4/Y>_M|uN_xvHzKpXւ5C]҈xpǊ1þh,W^VAϺi(;RA	Iެˍ)^j#	)qv_W2Q6UdK+eaԅ知Zp׷k5Ќ)4i$bEig8vuWkDciJ<_3`8L;$HNI7QG߈ܝr=xrew%\)Nआ8
4pYK
5QR`i8Az陭^a{2jH`@d3\yAٱWͼp92hp@\Ӱ*cPn\
74pߪãU-g_iQR Srl?YʴM;kTsv pmjWؿCU%O%)
Oy.Mkujd}5ɚ4)DhϠ!aT7]z~eqx&^+wDJN?;ύq;9t1͋[;wB0?iQHikP-Sf[H	Dwgm:pB?ڇ#8
1|'+kw
iӳ]3xW~_Nڏ0Eɺ	Zq	wp'L%D|!0h&[ENm^9YOҕѵ=Bس	|,4$]%il5@{jJtMV@N)dE3s+ FIZ;ڽ:1I pq`=E.EMD$]Op>]S>mt67	O"[:>J;qQI9|&+Q%\R>}:^ٳh!<y'A{*os쟊l^j>zc|j
Fy&;CmJTkDUv|PK7,H    PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPrivateKey.classV[SFBI~Is@`nq&ЦYlH2Ӥ_[ҙ0L'}Ot:=+0ƤxWZsH ;p	WiPqۄTT`H0F1`LRь۸#
>QpWZS1	9|3ܗ
H3bO˫`JAsia;eI\g`7-qy(Q1YQ6;I&t9+鱜rRbspr<6v?yAC%mLɔzTbS)ye4ܫ fƭ`ؖ4L1\O
6JWM
[KS?E%9MPʠeۛZN:B77D,;ɼ&"oU֤o-C}ܔ!^6">CQLݽghtY@((\-ZǍ´צ<Sg8iX	PtI$i懤X8X1Rt+]hUu1`Hv;sUB04q
]T0a9
Cy
&,4pQ$W`<u<CIN]E
xgڗUIT շQy##e
g_h'
jRJw_1Mi(x\WaH,Uo0ׅZ 3l)
TTw>t21EkvU7:]3v4eeSM:O>A+x1T+W NRqBzlC(<LU&W(W5|'u#A;7d}=ZKT_>mJ6E֌Ŝ{}훚'^:Z)z{6nm~\T6욯4>a? =8C#Gu8g33ُiYa#t!:kH~'Ҹ@Am"TI5^#Pwq =k!n#]D#%4R#鮝|WZeYuh\BO8mjyO{/W|/5T{\^GX<^뗰5Ib/={B"rC~ ΕbȋH"#D#?>/p&C>mKh%Wr#+0z7Mj%)jWqߋf+V_E?._~-#{vL?XJ%\}i.ղNSW(r\o')t.aך+i8G:L=!OvG){zZQz}PKĄqe    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/QTESLAKeyFactorySpi.classV_WnX&a1RE 2X 

Ha!a&LfXOCsgd̝9|.^F.K"ÇAWqMuܐqC%ȐMR	weԉ(&D I/-bZ|0+:C"x$(%-	2^
ݹP
2TGE
>^Yִ$nvR~30jFUl-*vk]Q;.r=PsT-1ޓ><T)G7
(kz!kԍr6 :#`gJF\$U.-p-հB吋<^
baoW̴e5v\Qm㜒Jhvƒ"%"П^쿬\sv+#OV9f-TOƢS5ǴH#OpΔQHl`Шs Mb K<8pxozv˅Qn |V0`Rmc;csnEʏ ,P-.*d-DZoOZՔeM]23"US(#UWY4,> õWܙ2?>f,ОRy6v:2-/v$xɦx=ce
d={JӎT
wrFke͏씓n*SycM.myMZ=C+n2WF,6ph~$\aR
g8H
Q
ZS
&wihiC<4J=Jh,L`D;I0oC)>",.01=bt>c+jӄ</1dGP͎atbV3fa>1*e4
a8HǨ*PbcIs\n{,uօW8_f%|.˯FL"K4C`ܠ#)'I~ob]^`I2J	DDM&c<n,?n/Nv5ntһڨetoB޵0u$?
^5t&{9j6P>

؄- a a@x4Vu<!qK*	'$%2	߄CjK=_h'uk$uwi6l-#xRl!%~?O\kt?=r/&w}Pr~&rUZ
^6|s=#=*u6vtmhC38@1"CjO}ܧ!bH
X\Mj?A`&%wǧRQ%zBr؝9lmRiQ^hVp$-o"m)?PK  
  PK
    D:U            B   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/PK  D:U            `   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PrivateKey.classW[pYN2'& $@Qn$C6]@NɤCӓ%Y]UfwT)Z֖/Y>Y/wz:0t(?? v:lE;tXiq!I\P@ANּ
"<LFr
#*gu\´uI
ұVಆy>ju:/*¾%
_XQm:Wh搀8*<˾YONE.C'ZJgCO5meߑE+ȼiM,o仩%[Z2$1S/a%K<{/%ﳋ_DbiEwݜx`.ʡJaLz'1;1uֈ3rq{t*fn PdɒOF^Nl :58iN),S#g`TC͉Lmq:)kNN`uO^tr3Sv5U9:_b,;R0'j?,WU(b5iKQʉLqJH]E^ٙIi{0+F|Ӻ5Ka'D-t*_Ӈ1'ЪzTٰ	Fv-R#سp'\M+GBUm7T4S,U|Ɯ4T
/=6r,<`ĭx3lb`b`vkK4,Ec Cਆ+q1bq0X"5I\);'y]WS^M'*-RvP3A|VvNtѹs\Adѷmi~].Y
wWz?s|1G6𦁷KMgw
?0C~ј"[eiUtӎY.LJ1W#i0l*ԉ0-(b'/:KPsj%{ke_`KέP};/t~.1aNr(ws܌u5yJ7#<tkdC?=~/B2WO0ǢFl=;2N-cJgXZ8!h^
qOյ;ǳK23k1D QX,e:B̑c)+ʈ&~;97xN^ۃ&ɟ'jzǓh&Њ'HN!ѝۈߒhCq3^[ܱ[K;$\ƻ*Z5P?IؿHO80G!nQǫhmdr^7>JQ#:H}cH4u[#$Mm4R9DS/orj	{w'װZ6ڳU<*]AtU *:fU\b6pUgA'Wr`@X >.#Ne,؁+AJ\1X78T:9aT߷vŦ0p-*_kmU_U|h*щ7o2jbtM
N:ϓ"w֝VS6SR&RI&[xO
ldO\ϊ끟06֪)+moѿwcjA=w gp:$\.S:6:ٰ㥓v龍d&x-E#şLנ8}3>DxEn	&iT+(;jGx:_PK ߞ    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeyFactorySpi.classX{|Uftmn[
!nfMJ$MҥIضVddvf;36X)
(RI@PD-BQQo'?ܙ}ew?ܙ{y}s>
`=.\jz 	hG/~3L(c+ThgBA<L{M22!qX@IzTAGy iFv#7xocIFne#og6F;,Ż,xp;Jq];owQ~3w{~u8PPPǇxǡhgd{8 UQhuʹD#IًsIk3C{872vE;%43Wb4&k!ZrWGU$=,%
	Y
46.ZeD-QxG8-%9a)d*yyj
eMxTd+CS(-fU4qYCMfXv݈{&
JirX45WoG=}dehIq.c6Dd`.:%d;S1ަdp51GzeR+A&0H`ÎL2DIC[R*JnmJ-ÇfPr,s9+I}&Qx|8>q0Tpdg&L9tDUIl$ff|#>cćS8cc<>çǙph,@ qP
IbD>F8.ɶ4Hcw1QLP%b\dO0y|$#_P[c!KzLSL9@(h@}8)t2)u@5gK^|ه<
/bOsXv׎;g&i[y~ژfRis}~#؇0O@vT0)ܳ2(W-ǯh<ٸIy53H%2k0!;P3Ql׮K׈s;|paA]Z#_~Rp922Ŗ4Ь]W[W"z6[>C8}<ДsǥN`i\\CqR~oAKn4'RYֈcH$%s=rpqZPu6󂅳u$[ae͎I٫o<LZ r=s}qXSI9aB-Xr껩9&Eմh/3	0s<}8Xi,3{߈8lr3;E@XVJ{1ֺC;L#uwcX=MS^"-
{ a~\엩Iu`GrsϊL#ޚqI4t_*Rdtet'rȭ
0%jJ%uUS>ʝ4i5&#f`m[9H?XpU&PN6=tu.1jz\U&7U0<
OZvꦗ)'7.?y׺i:FږWW )fi*1;[aDalvAHGZ {[T~M?MT&2K[[pXU~9UDlynv]O&("=	sMp~qm^U6:
j"]}n@D3lT/mN	қ[ilAzo6-4Fƒ#NV3E(FmQBǪgTgE5P|
%__<axG0V
taJ(;r{~F02wFpq&?	;c3èŅP$C
}4^Mۙʹ+屁6fڽUF܈ u9T삁={qhXSM<.i7c?Qƣ.B/c:hc1!$an5(qpM[0p[HM9W9>9mE[B-1YrFV0d$JFGP3UY4WBIq(#s*4iaڝ$ǵh @F\qnm8f#l+xt:`2:CMѸ0\2JU0VaO=Nl.'x狲T3J 1=d½}XQ(NP&$3*A㬎R8Vo#=4V2WRMu/2ۿ'h|SedѳґbGJX*Lg9)IlGSdT	g	L	KדE 
;Gѳ	<vy%mQ<ݙe9"¸ڛqx\9^́L}uh?[{
|/3Rş\k4wMm>PKot	    PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PublicKey.classWs-'&&$@BdaCZ[ef}ZKgS	m)&}Τؙd7u~t)4~Ͻ_U`8N+8Y1JpN9	B.0pr]hJԳIp^$0,J%*a+p:PE;*T/AY8.e	EM[*[Y}Gw{[<:-\tSQ,c{>*6T~]^睲m,-.%X
w;z)g%.[qB,OKV'CiQʹ4C,Cirq^'E;1)ܳ+gk3UǮZ^VqMPdؖX䗸nq;iaM2&{2ŉdqnd"CD+/]rp}"<*.Eu'T
9GA񹱔
W̘m{4K̍0t޸k~&	QJ$>-)$!UW\E+BUM'T4c>Y$x|.Ebw#Tٯ'!3N5ĸ)m5̘
PC
?N|H.b()
G%xZcfSpXBq]^
vǫ~3iP?[3EjhEҴ:̜puo
ijSz$ǠRC
&ޒ%
*V?}s~x[Ru*pϐ_y.CكD=
O
#
_œ
j<o)ĐliTn}l=ae,Cbo7P\6(#J,uŻvwY*~3a	Kyp~A$dcIT{{/	:P
TlN$G%#i	i+rJbɧbHԛA#ts'Ry^Gͼ46oVxϋ
)!'S"S|4B0nX|d~}Qy2l&3\:
59yc&Bg&@Y5DKnX?Qfm !rw4~[sb-qy-#4!)2A4Ƣn;YP39ACrB}̰wԴ/9K"LJO.38K;cS
RP߮gBQO.D\`5C°ҍn=a{c);чqn-񲼰{'='U/S]M}<BC9.ihmjp&gb1}]mjdV?A1ZVѾҀ=Hh3l{ͰF#8R3\蠁.u"~*~coic}Ts؊9ry<.[IXPS@hk]IBg6ڷ-Wh(V[P*Vq;PbBu%)bHElFdC
:Iwל9De˾Pp%^PYB/WMڕGo{6d	yT]5?q;f?5<]}5<8y`]d׈@ݡY;;
U:yu:}V`^7iSЭ3SDdn1ޣ8">"IQBȆ4;=]5[/JP(P	a%(v"ߍISYo3{4ջH63by]R",x*	݁z.p>PK;8    PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/Utils.classUrF=K$RԤbSbB:	@
H,i7i߂3С3]YΗt~{j (≉S8&1iKLq_iFYrMktQK}c`*89
R7/MlJ
r.U$j^6DdkAذ׃8<RykvkTͪ+|%JrNR݉Yb+l-VЬ2^<Tҋf66>6p·j(a;4[(my-hA-jT&uX~îzhp6M"#ZJ> P
ykIFRq5KX֜Vzl=sMo:`[" I\EK)j̇UOre0+յD:%b9pM5%\({i{lJ%E)_ddp	WSd<|){Z_Ӫt6xpi7a쪊W2Q]=/U1_د{Phpnf:~ƍ+d.pɷD%HO(RWֻ߳Ź8U(utW{d~{ԙJ;QO]~VEW}_G ϐ輨w=MuKDr\i>?jNBTեt2=f^&mƠp]tzKhӯ 	S0!_O_؟x/:TW`$ ̮D"c-|FT50G1LIbd9CO߶i;KFG?#`RualZzPK?ev  ,  PK  D:U            \   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePrivateKey.classW[oE=;Yuhh8m)4Mh8ӤnBӴtup!HK
GP		 !xT{DD̷97gf|~ 8׃؏Z|  .`Hai4#\fT\Qp5ȸ!i!\=i#J=ި%%$)%%$b++Hbf1F`)H6 G>g8f
Nδ3C3W.jgrq5+oT'js}R|FֵkjZFJӧUݙκ
4tC΀cNjq֘y2k1ݓʥmG!\,	Jَ鎧օ&IMLJMI~_1Vr
thc?MkjqhRƘ]Gn;lkZg;
yiͲL0q"\.øbj&h8jλKU=Nt=%E=uq3YfCx^0tEp5F\zk@$ԙɩCVn@i#TZOcUIwt˔6vDkdB3r!8L1
Z9\'q*hCtϠSNOֱ'ͤJtCBI/*
!*r
RN?(:zE;q(x)~UrtS燊e25E;9Yzc\3p6iԗkE F
蜡I}zb`Yz&p|F GlYJDˇ±튔R-ŷсhI=x/؞o.dYS+K%KE,U
*,-:Sc'?
a4nBMS|XTٯf}^#/Q3OG~@-~6l}k|j",pD@UehIe)tu9-etM9ZJ9Jet}7Oetm9mR`9z6U	Z^zѡrC[C͗muw86.շ!ֳ[_38Eo
5A3u0[_S3hކ[dހ7{{{ٽ+x6
G{dlN6<l6wmSSƅR~m2?PkF6!y#1SxzlQxqg>|F6bwj=2#vami#>Z'!Q?P?3Fѿ2~+"ǕPvu9U(;8*zˡО+boPKot  b  PK  D:U            a   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeyFactorySpi.classXy`Mf,IX@$(]v	g8%[Le23jZֶVm$VV=7ήI{}?X8xY[ 
@/Gi7g+E}4y䡳W#px\@5pmL=d8\z̈n!sގ2n7=<nq3{5y/#0>F[]
m0[cc:ʘʏp&qq'Or(q@QQ{L]Q#8ia[&d0m*&bws(i}2E^Y)FifFh]Ve]4DoT8zYJ芙qY
n=4n,\l1ES[
x 丩Օ84MN4fj/\Ql[zhy"6uQ5>'"l*#9v:4=DÌAPW/_I%3dXݧŹ*]{!~YtJcAcOУ%tInSX$-Z,ɡP
Zn%SӉ]	0Un@	VUKs^|}n|qpeq*Z0=I:bTƃx0G°#8c'y|΍Q7)3_Кi< $zյOփ1I|aHmrrDAIOM-#QF1ٔuÍ/Kn|n<_}opRY2zMͫ˒QCR9*wL7nG_NM<DaТiAZQ5
rn<9gPpB=Mg{wn'1^"[yC!cʸ)CO?9~/2WC`B[g L0 Xq3Eax3!svF"tSc:f2.?g197s*`<=:
6aj2si	4VӴr9dϪ
Z,\9mdp)ԱM397t5{L13Z%iͺ.RL}{[8V*5l]Ije]m-6T25wj6gYp&KamROVMeBDwkl,$N߹f&|
_Qo;7(1RʥM=|0!F
͘H/6#.ꆜu,)jbv 'E
abHs]՚폝aYe;&QD0G#r.VtItUȆa.AE48r08uؖY6;O
vpnm%N0.J}@Ŗr~$c?bjS1΍G`dS8
?]"0(6ɲ ]ξB<ԆSN
to:@ȨʪUvꒊf 	]>Lv&#'	+mShT+ENZ<.vk$4iiQber{bb4ڙæ)X´<3O9qLp.@;Π 94̪L͆Dj53	M̼ƕC9kHN]RUZ|	Eڸ;؏W9,تZ.ޚi:4?x[dؿ.վl,ΩNra^QLyx=,烒y،-46(A{[|9˗{^6fM֢h+4{qS(BigFPu7<N3laLAˆP1fb-}Ts3Ff129#8rØw	0i
 c3C?JQ!1l,<DXGoiVLCmR'q Hb78Kq3.bJylF88^C%U"!  9RU.lOXvG	!xS0.$gy:sml >`1WG@.P1gd)#40,i`AH=e=IGP1/N;+hw8\M^C37Q\qn)
a5!Ȃj$.!dZ){	ºAxjb[NvO	d:Nl^=$Jҫg]QMyu1d]=νd}~ʲ)t!3G,Q`~8{(l%40o`W^O4J˿'h|>m	/CI%D.M[2ɣJJU]c9Fg=W:mϒQ>VJE ZcVE'@1Ӷk,I?=K驧K]Hԋ8/e*Þ)We8Ժ$0(qx%RpQ_+K \Es}E?bPKk"
	    PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePublicKey.classVsUݦ1|m)M
BWHBK ڛmf7nj>⌼h;Sf}Or6dqpvs~_\JGqQ\z7bT7j&&E
r2HIfyLJ1n1S0݃܏`f<S(
>Ra#lvt˼n3H[rӝFMtcUnCP]RVw\Cէjf׫V4aBjN^jCt#\
;BN^c&ޚYδU)JA3`N$ܔQl-W%|7Kkf`uV!4wc
nݲjPteD+ Z`T
kP&BsGQG]-xO!\N_	Y(C[6hdQp9_FwՔSPGq]B88nE>=$*
>"(H1${ۜG:ͫ9ᖭa0a
"UZ֋$M h((AdC'S-3x+^VDQ,bIZ65̀sf(.CR3c+t1UKޖ#ML	,帵w".y
MPz:~03۶lo۔(!*/وg0]ҫx0|@7?H/;sw{4ADmr{nMR=t\%%[YluZӌMD9+ɵ
ekI}iokD
4T̘ęGPA!ƈ͢!
Ñ "ma8S _vinӺ+F|1^'Zqnq.
AtNQ)i5@
$AǏʀɝ<NC>IawXeӠے+}XE!gjվHrh+Vk$c'y0j,MשXu#R\m:= yS
'Sԋ=Y~
!kJ3$C4\Ŏ88ծU~t^^xMac.	M渎">
7؟2^&Y/r{[kϙkJX~؜wX+	p 
s5̟Yšy.=9Lψ|*ݗWoC!KALk3SȈu Sv[/a_%Ѷ~G}|</58Dany'PKjÙo  0  PK
    D:U            >   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/util/PK  D:U            K   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/util/KeyUtil.classT]S@=[PPi*Va0XddxJӥn)I
iʌ?xMAhݻ=gs~++P=T0%'
+Dajg1
K+-C뺝=	aq;F:O,wIT1㦻SLmZ6~(a;Y=m-4N<׍+|vx3-W
,75kGIyDqDpyͷވpd25eҊFK\%CC/e
fJ=oXY=~j+lK3LqRl?jб/Q
/a3IcD;z\{@]v!Q{wA:D]tu*/x2sm<(Qf&n\$}&{Ahl\}:ǀ@+Zh\@%Zϓ켌Ѕ6{221XaL*CG)3F
aq>H_wt'<.?f(F;f\+\#5۞+:.%.U$*q d<F7$kJ[%UhwY'kB̇PK˽p{    PK
    D:U            A   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPrivateKey.classViWGC"fq(IFh`8:,:Qƙ_7Aωɇ5?*'pf&p[ 8@'ҋ9@!|cSpMu`6p3[:ʸw4̇wu|{!\8aAr-YWg9Uq]؞/m^VՍOԥ+k.6LU?2V8u6ZnSiL@Zux;ɲisɲ-73/Up*Jdj&-*\rDF%'B'3n$Q(U>KVcJ{9?L,s-|8-ɮĔ:әZJM`(i *3hr?ZM&*;Yڔ$yq^VҗI9	I|$椹JVb-%-'WOJ
?
zBjpl7p(4Dk`ưiհhq񿗈X[USc-fjX2a	t\Ӱj!NmF8UAy
5v(<z/L׀.h-m$M5~TJϛqXB]i Ʋdj2}6o8GڕY	?UmeJ}/|SI僎eVcEXOm(qוkԝ^(/Yx}Xtki4KjvJ]
|cOSQK2Hs{K$\@^Ax^wU=>:щ?A~;p¾n>]Ͼ^eIŗw
D"^/Bcn~;BHB8 eszln=opKXri"E{DWtw>ϽAj::;6?b8͟,gks\%qHGxnzŮ'zu{WÁġsxb8ő61,mȼ7Wb,v( O3}\rD7(Phpj
T"sNl}([MM< ɽ$d5{jX**(=tEc@OG}:>Zǭ	67Q/PKv  
  PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi.classV_G&6bD 6djEAP. ,CXM4o/}-}@_k>=
>9s3g.+NF'KxM)F$Jː-c	we)L30ܓp_Ŝy0/aAL1L(UHI,IxS[f:7Z`+qJ7L:̭9u9A܈67:gcNUt'))wy6JpD7#0C}Qʹw䱧O9i%^	]cv89+g.3]QB5bJ$vhG;gp#dVB.ry5J{;8eZ1eLZVSm'6.)f$rX5g	*CC$SП^D\sWGAZ娙4>Ri 鸪9EgqB,޻UJ>~,CǪkx,~0T 42jBܟ:OBB&E4۱4w)a|􇔩bA4aa,өǚ
-3pK153ŕpdf`$<#$/0txCPrTyNR8v:?7Eʶ@v8	e&ܱ+4bN-ꛕޫ"T&gcɯ)yF\uJꎞ_d8QRiKP=VdJ'(14lG54z3XpP6p5
cF)FV=*@s4D\*RFr%=Ce|OKK,kXNp*9-(DȎ؊jgs1m!Ydh7Ĩ^4LQc;ǩgñP+ְFwY!+JY8%b>3ѻE?$|CO)ӌSIn\RCay4P]W3tTTP "j"NW{Wqcx<t^v]0knkQ_۳
3
)u9qj/ezË{g鞾gy-m·xqG!&ƽ[8? H6ɹH"FbFN&.zHpFBH") E!L}}4ߥeeY.Y-4UฃcO=	`/f4Cx^1r@䎡JODKl5
³8IړB[j~_{j -.m!!bnȓ#Ԏ	4e{D>Q< ɣ\ v7<[#!X٥WKLZm8}!JFNWs54}VQcE`w%E7B=
O
ÎRCЋk9TL5ݦfOl2PKT  
  PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPublicKey.classV[SF`9iB %Jֽd-/F K,%?:҇NdڎIZvW|;=?7 `ȸ`JaZƧe1+ciobA"(bV%y2ĆfIxU΍-aWt|g`eVn:[pEcKeռھ+!sMcxc
]{(=Eᐡ)MݙaC{*Yn)/G<oȼbNOn~WhN
5cn[>JeAN{,xr}.UEuGJ|MtˁT(YhٺSb'6[7L
d;1tޢe8Ѽx;zb7Jo2wݐPua L2fu%
MK/N55\^lZEI\.cA<Qp
F0,ᩂ@<wI0<h]B/@JAcQ-S%	p%h
naҩ㙵Z0QeI((_wM9EHzGǮnnw\zIRYX\PG
r1񶐺n5E9Ms3C~f708U-@6ߧ|G- ss9<iwz݊y-  i_#Tazqf.mF]hlIAo3OWFxU;;gw'ݦe
.=Џ+J~BBs1D
Z%]r5X2B?y7>hv Oo[F[ 
nҪHcd'7ؖw#ćuV7H³s3pAA>=c0N	.?Iw=ud?o
t&Oa:j")t#@Z#6	iV.C>Fg6u0}Yx.#J.1Rd}"P[l~@08,*}={͢ψb5AFȟ:AJr=
QuHNK/D)8I.G=B_sP)9PKQ"  A
  PK
    D:U            @   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPublicKey.classV]WW7$~TV
	:ⷂV@A*Ve2d&LfO}⁮"]?{&C!RŬ;3w}Ϝ{Ͽ \O*v3ᎊ*RpWE*FM0kBF(ø&LS*xf᱂'w*b6)x{Z2?c%˱e
Q!.yfd7(@cQP=Ɗ!K^ԋKn+Es2o8>^e7WW-n$?{F >dM=cmN9}(\\^}ʅ?h^5c眐O^6̢GIj<KyrlQz^dM{x1.YZ(֐h7w\[(KvWM{eSVöA\ݳ͜q܂d?]4
d!
S/jSjd_9M=۝1}ª)eYEZYNT.s5eJ+A17kW
iw
s
D>08T ~p'5$qFg@?';[;\tVt7y!^5`eUQ`iXy
+wSdOγr5@]%?H^
f5²}LOm
\))f9iZ]NRiav*^V>w'}ixKf+]|rJ+.uYq~lÇ\a%4I:Z@wc4bUNM}->*:'BuI\A|bMK\PfMnoл>:fNyAUܺ=D%˄EX\(}.8<b	0(1A?ƹSW|J]W5"߂NslCǃ|ޢwĝY>d!1h[
ߝFsZ~ΦS"_M_Е~C)_6дڰPwQ$'p
~m{q]Ŕt҃s@,kKjyicj 8= 
Za#wAZZh1(NL	8Qτђ@uܷպ.Gg"örb{ѾZOW#09F{
ף%-~fw7-RNaKlHcbME碪i%݁tj_`m-5l)nPK+    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi.classV_WnX&a1RE 2XX"(ʢ
Ha!a&Lo/}-}@_߯k>=w&݊3w{o .{],e\2Ẍ0*aL?nDnK#ALaZ	ᮄ{2D χy	|~n>Em/2bI[ޖCUНk5Cm\MSgRܚSd9nr[ZzԚVk)Kw2rgK0r34DUOI7w% ?xMfh)ɚZNå%uͻN7X)S"	ն@22=9K57BP%R WST؛)ӊ)f2j;	qNI5@Ic|TXSП^DSk\s@V9j,OTZ'ԄfP5ǴH#}@pTPHthШVrMJ b<k8p8?={[xH	}ss k>		06LӱKMNs瑹b7# ,P-*f-DSZO|)kѧen)pXS0?>?dx w̏W@ҖyN%8t9$>OG`h/[ޑ2R씣'Q;k\#bhr|Kc夛lwrKc(,zjF3huGO
hXG-K ZWYpE/IvTCC֬e03J1P ͳR#r87K3sNҷPe|ϨKLLk+]lغ4d;Kk2Tm.sc߇Ly#nOjc|x0M%C&u{Զ!	=1<d8TDuVZˁ}Fu%Η	k<wHqWA·t2x*4sGIǟ[v8\p9BJRQp:=KC]t[D-ju[`%wk<L3x.A-o=}Eto3>C]3;/w_ N|nNY$DډqYR/9j$$Hfyk	OO?h~yh6lh6dlʢm* xRl#%A?O!\+t?<;(9r?j\pmA_70b߯ha&y
o==ͼma&b #=AoIi{4>YCMgGsA˱A}B
'>bҶl|Fw|*%]ukkd{m,ݝ>b:6K0x-VA`
.< l_|Iݤ"ۤuPK[ո  
  PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPrivateKey.classWkWg~^ lXZQ梦b	B
Uݰ٠XE_98?nBA朼{yfٙwﯿǯ2 ?˴\ǘ1I	J(CBB%\Kҏ+2>U!pM<q7d|OTU]H&cHЅ
	q`H04K٤ftӸ;3F憝٢cyn\lܴ2Y4ϩZfdgUӈ:IKvA[ʚMdnۖ*^Fod(1ޛlo>=
`iLkmqƋf],9R$S-DVbƴ #U-o{F|<K],,72Ԭko1gxau11(fLKgr`Px32B1TK@p*J{`yMe#횔ͪ|V"*VIZmԴrv},J3 U7fZ]pJY!6ª,]vyG{m"N9J<æ[ĮV]1Q+U@,Z6mW{sD+cNA""RP yb8Z2>ei*T)K`wjMQͺB*MK\RW
O_!N^N(ZS_*-
/$o$|;(gh*?JI~ץd8Y_UYeس
6¸I/OHs^o*KTʽޕfx,z(Wm"[T*u/t]mpgʝBrdMsܐe
-mDR)03"Opgg5jRa en+uu~xԈg?NW^edPΦ-3"Z<<P$|Cy}gq

C{ZŬ}bCǜ͕JA`7Z_W*']MI{is_Јn~:?@Eݞc,C4Q-O-	
؉&I[Fc>Oz]5ѳ6-#:C%4=/^A3H5|R|!l%X)qԋ!	5-7t?
Kh9V /6.:n4;{N.̝&3D9(L5H=d8NxB%MeoGh'>Oaء<'/B5Nl~g-yAI(юkt}[D3@o{.lv}޲tT{L
VfhYOw):>EUψ{xcۖf5D.Dg'tE((9eNg1:kJe6w]u)fRo9ZG(M.aV	k	+A=$Gk*}>PKCGv  '  PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$2.classR]OA=CCV>DT,MLIߧcF& y1KwM$dg{g?~x&qy79nqXa*#${@17{b HݠZw7tmڸ{-CaB
.7uoD'"`aq.udJig۩vED&Rйd<l$TkѲfCe扨N,#]7!wq4J><rQ;ڐmcAH(=IQ*Wql#;0T.ސaAaвz@wj
Ȉ	`xr5ۼWcjQ-`3v8ku},$
U*yh&0COUR
ɢA5NhCyJ{ΟQ9Ers(S*y0KN8XE,aIb$} PKމ  (  PK
    D:U            =   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPrivateKey.classWsV^M0RY&\H ہFlv:eVbwemZr%iK>d2!cfLcf%}?!iZK"'vtv}Y	@Ou KIO'g0Ycx@^!aDN=<($Ìȫ
1[u8t
(pU]|%(c^-t,(E?K
~:~e
|=)=:ҏiОаeu@8˲}NE
WD0q|j-;֢%U+eyME?ˎF2 ŠCW. |Xj(;~,+o:]p

'g6椆#i=%miX~j+̋@/̸!qnam,
NN.hhMea]%NKK,
*9y#OXѳi8H5osLz4#,Y!2I1d]5t'2sb^lSYSR](hs-75@˫eaӳD9i}YVIWZ5N4 H4+Uuy(
O\JވFiTEA/5lFgƾF^YY|A{xdU(e+Gq#8㺉WPk&^nMiZXhڶe^,@Vuþ2AWuu?]SFz,y|!'!&7ʅfMd03&2iZI]B5:~o{ˎ-Y:58p_%llӂޕB5:5ejğ񾎿'`cɓ:Uf-

ǿOj譑]vdՕ;ڷQ_7R7kÆ:mQ
vy)ף)$ٹX(#5/Yy^/QM2kNuThSF$
wy:h#v7CW<O,bTiSSHh:	,װs͹a{NΈ\OpTaqZmvmȳ]k<#?PZЇ$Z8
Gp]^G ׇLF6dh8v
؃6wP$Fk!S#UBwm=BobC1zEjX:
"/f=b&xlmlWh
lUwwa.ck7+z3ځvGi NSQC3U4goJ_<YnU`/+*eFv_w/6oն:գh~L4]]C!VhvoU
pkH{/qY	f]v筌v+߆a
(8忉"CCf<] E@S-
꿋"[Õܷ4~J}XYfzNOa\J(\c_
؉V_Wh+FUL{)w$Wػ	
ا6J_u
<\Vh(
1orTMx4Z0Qzm._0u)^X3X\}#b}n|&x2|0*-;}`?hD:bh|PK    PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi.classV[WWN8A(^	 UU." 0aH2g&~X@_Z}OC}2ܩt͚sf>{og˟op<&U\pC011*/$V#Mǔƌ08fa	Fc&9x(!	MxCBxmwj\g
Ge>t2YR$G5#B[YݵuW5%ȶ&-IvBSI-~0X̚z.(jtJIdBp(KcUK8iEQK1]e|+7fîC';aؙbGcm8-Î2y.v⪏{+2d&
5*d6ˉj9aA9#E*y|U9\ZTg1hfRq=S*01-"H>i3eh;92fTzYJ}XĊr>!\dh^0q<aso1!T#؎$4g\kaya )Ʀ˄O|Bx$>\"-<KCU^S5>-3/k(A|xp|(p|D@W'
QesҰi9rWTKw9&"O>7Z`h/|PbIGv:k<GM#^Je,Vn3yYKN%my*O뎞[Hц-K,+,SZ:^	a;R]j&b+E-i0x3L@0ϛ+=Ridv2{P
p(!lDzAwW>,71g*bfX?CK\j4$םU<8;Pi.h\l;!2t$a>2*|yι$단Ya#q*T1٥=`8R2jD)IeN*u>s_k9캑2Z6{8	Ƿt	f4`Mte2ՈpۊӮ_`8KtXPJ\*XXw4:=fCE/IGr:glBt.S[6QtC@5=@𬣻wx6Q5OQڍxn-HO&olG@9q:$ -HO?zZU]=`/ԡKY|ypqp7Qٰ#@n1aEF\ if ptC9t;<~F="kZG[oځgWe
Ҷ՞܁Oۺ#[	6p"3D=JaØ'ɃL"5h(@}/gQ$@$^M/!i_h<\P&?zdWg{[C;hZBFQ/KWRabgXEs'^WK${o%xI?A;^]PKXʩ  
  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPublicKey.classV[wUN.L;- RB\
jiC+i
RTi:e2&3XwOy.-WyrOdi>䜓3gﯿ8}]$s11d\ANIˈ#'c]IXu=(ȸ0%ᖏ-sjZ]	JL`{Uw՜ҝa[7sUmU]rT?/5QUy)efl5z@hbŵ3fɏB{ݥA-p/
N:<9%E]`[ް	<;7;UD3of^kތihdYv'<R'tw,َΕv&yuA͘U\ǰJEՈQNDrz+v\:i3j;e5d[O Y7	9٘8J4LSsD\w^_}jn,p d0*˸t̜H\!"&=Bs4}15r}*=qDA
		ܙ&pUˀqKBQY	%Gq^$&g*}/pyM׸t;%)00/j
y	
xqF3xp$ounVU<b/py1,U5}-ɳZN,m*6%Z88=0Uk;$XJ8̫T	[fXf:彺B6tuiKj yEM !QYMG@JLO]`{L-/N[#癭FϪ^ojNm؏ȖI}끯gw5PݭNضN-\^؇8 &/V׏9)>pSO RQ#SgՏ ڊ;Luj0$B%^Al
Y=Hc TݲԀm	Npd7
pɶ~BdR>X
lt|t/݀;@>@:.ъ6V@phݷékҩOӫP
kZF8b8LX_ec7hqw.~/i%#c4.P+VGjW?w͖ĝm0^
g|H*z[ua)t0 B(||T"vPwsS+xcCIOKv2@`8!Ѱ0I;ZƛZߐ[R}T⋿?PKe  S  PK
    D:U            >   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPrivateKey.classWwF=x$ !Hb%)&$[-y,-c((](Ki

K҂ӆBd4L$YU#7twۻ
@ 'yR!@	" ]9: Cgeq^
Z`	BXc`	OxZ3xVsx^^O//	#?O/3WS2ސ$l7-=kL%HJh{~]ӟKPlA=-[Bd$k&3ټ-i̲<,`/>vp|fkv,
[չ+i/b&XU4w^jRF3}l48eÞ(RRmLQÎ8n1	flFF$	.aˈn|fl&M;ّ׬h	/ff$ehQ9DHhLr;f$`H-n3m~<-m0i1a$d$hL	=bfB`,TsxT7DLt2kv*#!̱M3#S>q̚F+<dh]RDUL<?R\
|InGLRn4W1|7QLqthxɔ>%2krp%,Գ}1#Oe(2~)9ߔ訔" ͛??Pn!A>U1o.x GTwd=Z*~ߪ;*F\THubRb4O4͋YNNvS,o<!PE=Z+WsfvAOpӵVWGMd#=}@*?xzlhOTSqEşgpZu	32>W(X8U	~޿Ru8FYYnw,)'zgJ,H3RqDL(BnSn=5;ISF+sHȹ 7'\M	j,Z{9Fau]̚F-.TxUV#݇j_e9I>kRț4j^~m9Ǡh!V^ػ	DRX p&\ NQtCuCeP#:ҩ%7~H֚e:wnf;ۿd>d;osJL>$S	rp_ ӓ6{:+MIo}޽i'Q	0woDmf:ܱM*|{~FZϳl Qu(G
?v!HᢘFZۈnOG[G
p5khwD;vTn	
0>Z`l}/# ӛ~k'E3	pW@\@*FÑ]]Poeu;QOt?!rAI$fﰃ.h-ڶ`?_+J	A[0XD$foR?Nt'=Y+|9	v`
AORCֵV#x{%Q</na}Vqy~ÿۜH`bنs>8iBjwF=<r=g?"pn 0*ow^9+.}c떋!EJ@鯻y
aBd7k[2'hLvtvl'|SWgc\p6^ľ?Mtf)JN[)ѩbtz"%}V=/1xA>UT7^x[N5x;像irY-ROWeSxއK;N(_PKk    PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi.classV_WnX&	JAm`Պ(6"݆$3qfI}{kC~.L f9|=w \2pY˸k2u'0"aTBD1^ܐ1 ݖpG_LaZ	ᮄ{2D σEA-PC/d	 8E	oIx[;WuCw`e
>N.qkN]J7bd
nkjBSjFUl-*vkR;.s=:VSޕ<񔣛R55KKrs6:r05%T#%Tۮ -tq,հBՐˁ\^X7CSS̴e5v\Qm㜒kvƊ<%M2j]DK\sHV9j-OTZNGsP5ǴH#}@pTQиQ-Ua	e8V$|x݇ppazʅ
Q.^gV|>06"؎\HyT?$JYKpѴV^dDSjhʪji}[ZҶȘ_a%>?d~	#T*%mTʴ.'	õgQ$+VBw9	e&ܱ
u428[m,g1[HL\q'?%¢e4:sf*;zj߿bHᣖ-F5ZI(-wpҰ(P~5[õV>%
M{(\ZǑPU	vMҷJe|ϨKLk+]lXRsP=Н%EV1Cڻ%CGڈS_+LlȤnڶ3:A'RG*CNj+e9c.2/sQ~S3w ?Hn.SO|nr1
j,'W*\+p}ZT@DTw8"ǍM.uPNVz_چ-_胒һ1g<L3xC=g=}gM4npv .6qp>@.@wvɥ/E"bN'0΢ZQ'ᄄDV&A0[O^zK<DӿnDSf`U8nPcr`)y
^iȵ>!@ɓQHhz7qx#;,F<l]6
@f&>Kt1dyH:;KX\
j?Av5`6ƧRQҕx=<Ml屻v\BFY&/C"<*
å!*@&_d7鿅6{PK޾ǹ  
  PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/DigestUtil.classV[WW0A"hÀPB-x	ͪ1Lf̄BPljm_L.*"Y9{g_sv_p2Na_`L&K2沈+2P*b\	.|)Z20-aF,$\pCB*7e"-b=ȴn厈Dq_@l´MHb贓gӦ2bz"MK3fyL"-mc=b#T63r+?go>1;>pKe}ؘKdJ-٭ԌDz]5KZwM(ZĻ+[TD"5HjY;B{t|62z|q gk90UЇOE,)XƊUwOޘp1!VsadlեtΔenMr2X7[@Gq|w<לCN G#>DJp*^h )H>2z%;	kT0s>Cֱ!"'HKO
m
y%fh ]j,id ~aJi晫m=OMI1|-.|x<f>bӲnQ~kMd+5lS~m&R|dՔ_eeSGj Hӎmu'TG͙1j?0

v7d=p5bޙ3m,&V%"rK)O.ӌ7MgU҄" i(uJʶ;mǈ߅]޿:.e/ǅk`ڀ!uʚ>%́azv')гY}	R~H}
/4F$5-˝%ZRyG)+ߠmY}C  8Z; N.@7a9aq6@wvuϑ6;^s"~U!FBBWUP4hw)(cTԦ(
eI&zo]Jg]}Q,E±rw	z[F\MR3g W)miWM+'̣p\@ڳpq)v$:(0]Vw>?Yoz,~Xk&ߧ&/+"}H~L0B|>=eb᫠&[T~PK  
  PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi.classV_WnX&a1"REdjeEPEDn$3qfI}{kC~.LYaΜ{ws?|'Fdx0*^:81	&dH
Sm	wd4Ỷ~0ܕpOŢ྄%1~n1ЋeϏG2Z"M	oIxn5CMSUn-qFl7-w-=M
P`v]M͵;NrM3ajG%97eh;Sޑ.<񤣛R55rc6:`bkFT]Z.ZaK\^MRaofM+)ChĹE%!g5y:KP%
VC߸28S\sUQ 6SƧuQ*aOcZ> <}8+xdxhШ"9M}X&!ǚ
.1?|0U 1j\a1'.!*c4۱wI/`*\U1k	 ZՋp~0Ru򉦬kF#R6LL
O'}ACO2'rP-)N%HwgL/Ρ:V@aXv)nʸI$ct4Ҝ[*gebtSY([r'7bd<<f);zja2[JK?XVYbEx/vTCBv͎VZi`:f444`k'VqR4F&0"-I"0w	>,-.1=bF Ʉ4d{;Ku5V1LB$CgʈSZn/rx'T2㶭G
qtNS+WñP'氭:wY!DY"b=i3sٻE$|C7Yӌl$0RH۽hI
W*JĤu	_?=t릋]%jLw/uR˨>((>Z(~R;M~g5s}Puۨߚ߃w6@M|qt>@
E_ D<]:E=q}mC5NKJde3D饧ƻ4ѼD46C4јٴ
wqI
O Q^9k{>c#v7o&YF<NlQomp{!{r@6017	ȟzO[hmR{Dq< ˣl"ul.b=97G!X٥W"&:ژOVkYZxY{rG_sy
ܱU8v:Z5e8Dd_&P-dPK|  
  PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPrivateKey.classW[UCKij-jsVEҲ*larH&tfjwuuuWqKh}=3$09yrN/ g2x~<$2Gd<
U|N7MF\4ħ.c$FрhyAh%80+1	Oxψgsb񂌋EA^!K/WBx{E¯%*5থgqvCs4kXjj:f囶GSf,Le6y-9;XVP<~gUx&[=mr~\Orf^j"#S3\c	nM!ڶOmNnZC6mbW7tL`#v~Dx	_4u3SSҴӵs)YG|bN9DD,
Inǌc
EⶪRsVbTwgT2MUI{<	{`@g4uFݠUWK*d7̚0uVU#S$q5W̨L'!۾@p4(w<KT+I\BT	STϥZHzX|#滪iXEL'LQL+Q&WN/&=E3ryj+u@~MbWH.!lx.].!Qh\ݩ Pp%p7o1/xw(z)RNc4OiTk Rj޲yBc\2sfvVOpW*4کh|xOA8[)$}>	Ro,*° h8%\V!>OP3'0-HXR,OS*
gٲ2/ ~Pg2tDӪe
gFt$*'[ewMm$SS6+n_UxHsEumLuT{tLbzUwXeӧəԨWak[eiI5)ݍ/
.͜PךxvOŬF(#'ܹ DE.U|<
.):,w&;7o^T	׉99R6&?!Z)07'4ћ8SVky+Vd"w8LrIñ
]Mn\p&	>hq7u}3r'ޖ&aԠvt!ߥpA8+hB<tT[KX(|5+%J]D;H&7fGa
B*
+nrTF{I6#IhQèB(.
i
hXFP &WxU4nCI)%zp656?3-Kez_C]}UTD*;Ylp^*V!zܝ 9gHFHжm+$DSOR"vk[Rx*7T2{8%/|~7/J[cP0Ai_rFWS^BCη
_HIO;vS,c$..󰝌a
8%ITqa|p@2]<WDDZn
]Ցzt'{drtgd}hudw7W,ѱbB;<Qa5S"4NYqþ2y=^mEػ3tLJ4H^sz 8J3u*MR q[.oN'PK&DY  R  PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPublicKey.classV[WWIDx6Lh+BPjX09d&N&Hz^m@C}jBG_BTy93'{{oϿ 8d`5X.ȴd\%	C2*1,cU.ˈc\*LH*B2cROo2-ɘ.. e$1#l'C¬9	),
-5aWbE~:Lh(?x~Lt̐e'SVuR<Gu;qB:^rS)CqLu1Ȏy#ɳCz$-kG{#S\wb	n:ƴmҭ6L9`GqL0g6d|$69pxg4s(iœtqu2(bPM%-pfᖡYm^43;a&u$5`N4-}sZwd-;VJY723^J~;H)\GnWu-;<!۵<^iZSf#339Z8@!2ƁRќSBV!Xh_6@ /e&Rm[-gqB 4($㎄8ɰch!kmT+eڬN5o$yQN#]}]
>]	)xM+Dpp2TL)KB3&a{zr3ma?Ӛ=\)-\sf*&gf9FjՍAMw,u*fp;7
E{4%^[tWN>{q.>*pOx/fY+yfr2}&~6aL0DSA}v
1H16wcmkyUDd}}B'DO#.):ʵ}bsdWy5Bnu=G)@7d2\ʹ\1tPk'bgN~
/[CRvME^ڏ
ALp*p(z'	A2ڷOcTڀ {i݇j2SGf@)
 
e	u.a=BG Y,#d_UB`	2ȥRD5n^E܎vC;=PZuJ@0]/-C,{*ĕpu3IUKF)uX")Wʘ-5?@WqRыvEO[CxQC(uyaҮh=Vo[#X	,	ov";D1wql$
t&},L6 $v	u=B޾qJPT]qa̭!x
	;x95d`:Zaq	M%9-ᠯP%L/cg)yrz2oB.e4izF@Kk}c~eܞKWZkRλw?PK  
  PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPublicKey.classWSWXXDUzӐDU[TVhU!,$qbkG;Ӿ0;SCǾMwv !Pٳ6o N;p
UrQ&rI %ɨ)᲌Fc*[1enT`SeLB$) )H.#`J2帥1ntӸe`jzL#g=^sS3ȶy9!:`ZؤZ^SsvԜJOp͎'aS:fy~DLchӬ|6c\.vm0q&Ӻvɗ6JPgfCcQ41aۀn!'3ɭQu2M''63cdXq
)ƍ)œ5)p\5MϻB3KF*4NIت6;f}ݕjn3,j3()nwS5@	ҍP&>C#$5MtSߴ2\ZMXP6GGNsk]mo?O5%$[\Mz1{q#d1W3/	o[|E@İc!	ӱ4ޯP)JpWU4!1	96/8%aNm3D9'An0TB^k]IxO]P_y]n<	|	FÎŇP~JSGXg9A>>SI`(V%oq/Q\{ܣR>Ve+u5j|%U
T\<u9^5_l"*J殢^{ab]|Z_t3N<{x
9]GyX4;]¦qٹB[K>TmywYJݷAMAj>DD@(hdR)Kq)9nk!"^\#'KM>()İtS܆ܭ(g尿T&k@*/.~hdW_!j|0]];zJ1(AЀ8WG ĜE%zOm'`c#Hh#G]	
0eWek]C${d$Zm>BC8 /,AZF%TB59t"2T}N@yp1;%U\hTGeCH,5WmF9HI-Mxd	ר7Z%Tu\SiD4!aWgM雋*\sN|FZi~ۣ"Dih˨,aUPF|5C\&G](PX8:pg3Ŭ7-ZEav It"SlAB_{JE{~{a0]FBMc'WA!ڋ>_5/^%\\j~PKj@@  
  PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider.classX	|T&ِd"(B"rݸj[hֶX[b= #TRZ졽O(f&)-0ｙo
@vfq=s;\uSÇa'>4|T%n
)wOix
(ÒndhqÆuÎǝr>;%72G2>'k8 qٸ
O̺}_tiR<ĳxN}Y"7y
_ubu|MKR|C7u[:;:{::~G:~':~g:~~)j
p}D̈p7o6#S`buMWtlhmYֆk;j4
,k{BѠgDYglս6=z
?-f_p~0ƠD-T+:4lh_URa	#)Lx
.K%Z*`+;uR?hFv5FW3iE{BFwm'[YiHi4I9^m!|%S4<Ŷac}
FXL[fgQ_ix워HiP.%=vF3-ɘ
+1//,9J7QiDkbVm64VdV,`W	ikV}X5H0c30eX\ZT5S7r)=Fz{+G3s/FRTGL_E:J#8Wl\G4Fme*u+GS׻L(LMYܪsiXQs2u̹s
Ԧ{oD4)zEо>q^)K|aĔQ$,XWīKyRʭ^s&0UUdW%ث\WC@^](dEbZBݑLQǟ\3_7g~c)ʅ,M٦ C?hVáJ y݅uX.:N
LKa#2u)r	[t\i$KЩ	K8DEg[`\B&\)]%r\b]@E.4nQB»EA\b(pbdBL9hhX	xʹwi^@O{(bUQnxI(lWuTNoH6M,ҩ4o{cSk={;[2Z]{v|=
m}K=CGC8᭭[}\o]ӱ
F':VulZ0QHYi+^״l_ȥ8J'<v
Ɂ5¡ciٙlĈ3P8!njKqa~mf-"ҵ7MSڦVUan
vɂc_4- a(Sr!f28z.bRϰӅWY4nR|{ai0_ܝffAl8g!,Q\'ѓcO
2zh)MiIL6QEmلnN!
9UR\h/[	
<yJFY7fS7j
h\s,5mA:,5Qִ\Z"gHݰÞI^ɑD%SV4?ECU@"un0=g>4n3pV݌u)7iAIcTjIN^{̠4C<Fv&l67)5XCjnq6DPN->XLYm-f)V-O3a͡ݩ*Lvv!kz4䗽}E]͢[4!DXLC%u>e$祜7[bٝp_5pe{Q^8 0β"k
&DR2JJʙ5)Y9I	r'L>mKK*<:d  rkgqn}?!l?ܻ1q1&v:rK0(CʒbLD3W۹uj2Iu'!NRFB
N2U6wSςtp+ۏR&fs9ꙑb+z%=a(͓q$V?'H&2Ke^ZF~MR_@xRare6vq2+ØY>)Ҳ%G){? ɓ2 I{lH	P
$Q"Wgx0YeH
W)8
". ~
!''!`*-|?'>H꼎xo`'D)q7P#nd/Г>73h	no"Eۋm(BuRԽŐX^qmX?2z
[Bƿ#wp3wFPQ<P:4/`d̑Cir`#q{Nkt!	VB=K{y}YGYCŒL긧vVS}4JN~<r*kI4\&l|],5N32&Ic7Kc%v\~xQeBYEz#\}),,3/x&l[J5w?T|^q~ÓAB8|	*އӨ8#UcT4U<3
]ڵz0*.hxY,cQg\#j[DB2S
J3z/K\}`^U&"$r5|4g
(͹8Og"RFLX'']j^;ÄXy aV^S촹/vݵNۙvjNݽۙnਹWrݍM9fWqt9[8sruy50Vl9Nf8pXPιg
lby?rR}jܥjScPKR;    PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$1.classR]KA=G}[DAkA&Ql5+
~@?*HAO̝ùg'#l@D9KX6b`:Ì?^hou@1=#rjw${B[':׭R]*7wT2
}kwB:PR=Gتo]uy32$}zR/?p{6Ha3
i`RMɣxȐ>WJc{cf؎ O@KluQ}kr_j}^͹*vh~ea4"1)m!bV_*o=Ӌ!K^dcaߣ3DSw/݌jMqdX3Ajġ~#Z?PK^.v    PK
    D:U            @   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/PK  D:U            W   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPublicKey.classV[Wg_ UԢ\zâVP*Vj0d&EM'Z-e_g2	!DZ|s;{s99Ͽ"^8;
˨,$ܔ0.#	V:0)6dLcBLf9⎌yܕqr_;NwKx$	?
cjqMۺ) &l4[ЊGO$ʚ\SSPo]sTʞM2uu.6*skLWM&?* >f/{L˘Kyù|sZ~~н:kZC>yn=JTۃ@׊|ޟZ՞jjQ
l0zH=M<#+R
-	(-lVJy1i5n-w2	)iˆ.0Lڪn.j
6"G1dn7C["iiGJ嬲1WC+Qi	?	t= F
1،F۾f XS0gr)Hᔄd'pm'ˎ\2϶×((8UF`%Q ,VA	[AC(pJAx*[*x^sV`5t5HvԴ(ǲn$V9?V\wfRC!v*@&4ݳwl WQ+z[)֒l:VaGth1L)] λc4<P͹Mk+RxB8
uAqŠ>qhdaTeLnԻ9e/zwFm"o85_.ܤuF8jOE={7떻'o'p8\( ~	&3;Ϲ~4xo ҙ?-8u$q=vru3u5;Fq$oDɈAIg6-It~/7ES+2#+2oN::B
qKw{It*&	^]aZ=D)> #@[p+wA2P^Oסxq%Jsf^jx22&gk	#0ͦF;+QD%Ϭ-MOo`~fq-#Z
k q+Qt2u\'ͭW!R:PKPsW     PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPrivateKey.classV[wF!P Jӂ/	P.!iv0BJۍ$JlHr m)'zN	9}衯Q=VqJxWfh؃NpY0a_FqEUY
*r0.iͩ!_0[hr) |Va(0lLI,Ǿ9zYrE!|aX1eኒ` 븳ibK.3҆Tt2lHOӄk-
߼j.MHeӧ
45]MX'<?=ϛ>;.X_RĤ!𻲖mUJӦ{CLs	zIyүF'@҆f'{MH_{QzG<;/E(iwoBN#9ͅ.
Y,:ϕu@yfJ
)5l+v<1aFW6_6
gݔyCfڣTzMZ$ڈ㖄Te
pMQyQ?"r"Frg(j3
6'#fU@xůWSq
sĒ,5zsL8Y}XQT0R{қRPvE`UU:u,R@BW
U T{ uΪQCe*Y=,*V+L,՝ea^V+CEycˮbjQ	M)lV
mě\baK;
\|aC
dlSJ, 7VMsAK5&\sX6!j|*3]O@Z=a<?m[?X/[͘]l?wFi+ޥ2g3S
׶w
Q)F[A}6[ȯ[tyك>q (Dvs:Fc$eZ8kPh]^tl!FNbK@kA}D>᪍ﺨqp*BIV*:^BmC&;xUA:.T7-FW^"Kt	Uh˭5+8k9;O3I8jQe8pޔnZy6$h'Rh֟58	fkUlΒ-ϲʳ@~+"ϻp\Osg#C[B`*5q{{Pp_$.E\/A.yd;_04уA;ޅKhDfJ%W{P PKd=5    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi.classV_VdJA ŅEPH.c!t҇
euyԇ&[!9|=w \2:pY>ʸk2ㆌ0,aDQ~ܔ1 ݑpWFĔ;ì{2B χy	|~>E-/2bIޑ.CUНUC&uO'ח5.rQTZz䚚RkIKwҊr#0r2EUM	7$ =xMfh*ʚ\å%uN7H1UFmddzsjqor@hBUͤ5v\Qm㜒ivƪ"%"'+?Y$׸	W>GrLZE4zU1-H)3e;34,C Ǫh 3M^0t0Rj\bO\z LtlRSyd
H8 Tˠ? 
YKpdV~D%j'kʚii)}[JN͢1CgrJI4oD´''~x)֒*/N:z\ܱu4RX[-W.oidtSNvricESWpdֺ)Zu>veCK#
 RW=Ab8a؎jhF(oךqW`6cFHC#J
yVq$TjFcqf#rIyOaqWuMp1[Wc&lu}!;bM*mԅ}nvc6oQil/shȤn۶5A:N'TJCNrkcٷÈ. s]~Е)3Ƴ ?H/K&qH9Ic޶~[5VK8GrTPJ Fx<;vϒ~褻`]:(QK+词ZFmM/AI]^KPM?@WeP5QAg38wݓm a a@x4Vu<!qK*	'$%2	߄CjK=_ei'u$uԻ42h,q[H	ϓg<W]Oc(GJD%"@Kכ
+8Iޣ[yOn{l3kG[z7dɟzhR{3D
aøO@jPX粬ogPC	G,[p<JFIW]jv=t;bwf س͢"^nKGE`{qXK.*@&_d迉6g PKڀ  
  PK
    D:U            E   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/PK  D:U            c   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi.classV_G&\6`D 6$XX"(7@ޖݸK?mdj}؝soΜ?U|+%ܐxM-ܖqF$ʐc]	d4)L3>0I/uDb^\X(&.箘CX*HI,KxCb}Xd
Qt>X漲 	H6un*634
u%-L$Wx&BPD7#CCV̅w䱧*Oښ[%QS+	Mev9+'fӞC;?aԙe9-sΛn%<:rpycN3\1RQNb闂ɸjW,Aah08Uӫ׃:W}*(U)S(dx&K,R+mD/xp.Ts^(28T<@cUB̃5hhfz*8i%ܟ:OB:*Qð-T^3I7{`
|bl4-iaac5**}FZr|ij%h˃Eԃޕ>Utn|U{47/V*4LG;<ig\P>bQah+2HQRX
n24'&CkZ+6gXc/=N@<WycDf.
nhMҰjB"_
TٓE/°nيR6CբV3nۈzJ(Hi	T-M˵Wșse|OKKM,XԆ素${k%RŎWŰc z[~u^-9튓Lkֈei1]T{bʙypl1ԉ5l:וp-JT4/kzڈ|N3eTeʉpGvf8OtT\P\D"ٜoNyb'")H/鯝FFc]6OAA]LH1;Ԡ뽿õʢfj.].fqd7; B@t	m#\I$%tm4i"zhZ5HH$e?g/ikɧ>"2lDlȢ1ӛES;8V JL 4~Z̃иL|h8]zF3#'H{Rh]4kOm$<8Bq?&%I>KpS
<%R"G}0xuu׶As)4t5Fﻕ}w}مow[%E7Bݥ
O
ÎRCr< d+|NM3'Iνgs PKe6  
  PK  D:U            a   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPublicKey.classVvFQ(M; Rn8
@Ii;',	] }_xCVЕz$+6
h$9{'A _4|%cY	9	7d$10ݍ[1n2q[eŽ`Xp?0{ k<xlY71ѹ$W{C_2]7|Dl0=k9dVӸBhlR]{U756|W-.NsE/%CfDm1`y'k{fRtd3gY~$dГ1nk/Қмk\B>9\G2QAxsfSܬ!Cq#ݫ]֑)0(Mѽ*ÁHQstBd75wjd9CϦ,)~7/Bc X54	RSh-26J	EUᴬ^p4G"i
{UV·H8֎Xf9(Z)=PP6Wg'8 a	+(1L}Zc&mzs)(C(
KdPQ
]q
dH>8K1	U&T	O$8
@ yY>Jxy*jTE%0tXᚈ׈+]wޢrSji-|O7<!ww-zS'Zi]oï'ר#A[`Rl4>koM4.FClEO)H	VܣH[>63^@<1\y^I+X:B~}xpɰ,VoxwmmE_)Bkf>nz*ڽK3DoNdD0͏Б#9h4WI|Jgtw	`HQp=qClncp/ю;F;tIj0"%B6-0z	
0B?"L뙿2K&eQ<$\p~jݧ0L*!!'8
btM7"
_egFCc@h3E#mP4]D-f6l̲V(.6Qg(a:'|~OG4ǅp82SOl&S
֗"̑02Y_+ң[8R/LmJcO	J, LT5}DQ&7I{ՈGt0/PKZJ  *  PK  D:U            b   META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPrivateKey.classWmWW~.6 b[QDּ)m*%4 5Ejes!nݠV[k@?SS_z:7$$9'w_23sgnﯿƯ2v#?ɴH`T<GRːq2%aRȦ$\0%c!tE,؂Oe3*ehHe`V,	НqYa6%r	&C-]NpMb4;3
Q
gB14UKiF͂-hdy$MhB1#v>H*y6>K%>iGBRp3ȪXtܳX`j/o>s!xeN'bf3%trܺNg͡v>jvd
/n̘E$y1J5	ok~fy[ 1ΫjFƧ/)GծyϪ?ץ@0Πrg0;kZ1te@)bИdԐ^lSQW3Yyp4k7sq2j i%Ry1<&
rul!aʩo)?Xo-h/1=Ve9Y\M2M븑/8Ws+	yM׉R^/8*d e,"M;uH(㚂(CD y\g8󊪘2y=ͭ
:+8n(X
5TdX
-%%_/bR7LI}~	Z,w$UpG%|>MR{ŷ
i{𣄟,^{*cYնL#]F,*s7#j*gu=RU}i=[feX"[4^$u;j"BhUܹNܠe_R`*:MGwyqvqV|F3Q/[t]gnzzcCv
\/5FO6<f,3◛--i>AWy4(x,q1k=^ĺFϯKyg{,ԑЈ.t
؏;bb1'JKAz
L]2X(
)ѺЀn4aZSԋt
e4V%}oSF}y
	>(0kX[Br¡kZo
?4'^V /6.]h|8J  9ENGAaA&#I5%et*nZ\>
;<a8t42}}+hM7&â|;ywo%(S|1!_AO?Nxȇ={ݏ>[&];et.c[s8AES]k+xZ'CQ-=A ((b^2N߮'1]ΊtY&Lm8M=ȃ-az+A'xXHgPKUʰ    PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/QTESLAParameterSpec.classmR]oA=ەR(ZԯO6F$v&>58Y,tL_ih|wh={x袄u8h8";kK1lu_ߝq|PG#7:VfJuhҞ0*HtPмdug^^1lX'#O("(/mګeXoYYOZ7y{#DO2n`U>JLH
L$¨Y$us<lXT|F
_JvFKr|\w("laKaΠa҉4c͂0OؤZWy
sZ^`4Iq*j&!#\|EbF>"ۨ/ZdP)@*Ws33{/PKzAJ1    PK  D:U            P   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/RainbowPrivateKeySpec.classRn@=C¥@
hIҠ" 5({Y"Gd
$,$ >
1DE
~,=>3sf`QjsXSpWAUAM`M[
NA	Tf3^c_
&224è˽pDø/}uEEGxgTUT~pXye8EZA?
KRGOFo\Oѕ!mWkj9:611zJQ"v;$;~m۟ۚoHg2x<2i
c3m9%Uvl\%~z	ɇԊ`(]IJ18TZ+N`BSqi\Ksyz&Y$-[e+tzKEq欧Мg3TS1RNLa}#%U[ xcKP,cxJ
s(2'm̌|Nx
sڬp)1+}Gx#>+@9RkV: \/PK~
    PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/XMSSParameterSpec.classTNQCK]?YBAI	+]Om[n|70BDw3gOK+xoۙsf þ
 aX"X}*+0H``S-m
$wv	Da/
yκ1cȗ7^6][/K:7*n7],xb=5:QvH|ųbZgY\?}m%,Y\rK_(<7=+`fQ$wTҐ%5ѫѡ.s-nnFQIekus;π2P}MULDWvN3} Qyc;.Z;)r,1isTO*}ж#ۇRi<leWL`PyvlPU
f`A;0]g`m```````` E&
KKEʭgA]Au|'&$vڠ&݅`V1N6izq?]EQc%OH<%9%9-9#8AFco,{xrwXf2)YZ1h@]0OIdܞ
O""8(Wm9X_+~WQR)BHNU&.3Pq5Lu]:#q904!0n~0sm:]=çq?mPKa5    PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/PicnicParameterSpec.class[WT(	!ܦJ[
3Sp[ZPj+[H0cf2x/gMX壾	~\	+ke~}NN~租Be,iX-PV4;
jU澻0L0YLkL6=&iTd*1}2m2*LU
<
gbSS1T1bJŴ**r*T+j.mwl&0xcR/[U]Ǩ޷mlǨUX/[Bm]O{d;crO;3wZwX3{ՔU["ȗQqӪ҂)U.+W,9W,y~Ő	Z6uPpbYo9-kͥadWٔ#n$HԜFjLJݳkE^V!.qr+x\q/xW<||*0qug%		&dddbbffaaee2erL999yyPuueqݪmPi:Vrl_ 6-nBgS#YS_W:ނU98)=OOoQyoT~	xJL?3chG4hFq2SQLgb.sQ%M1M	
\ed
?{4~G
ގF42tZ/%:@QP<~ow4&Z*nDC[;4ıhn/PϚאargPVhyMJk(Pڥt)+tK9JJ_s2ʠӡ=Ùm}&[\ )q| = - [*@wl =]cTlfn	|tu`T]T(	,88:z%N+k
+8pcX8/z0"1*ƑWHSƛPKtZ  v  PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/SPHINCSPlusParameterSpec.classypEƿ	I'YL8F$$&!D02I6.;` oA@[ÿ-˲mNl*׿ޞ77@~A+.F&.W`U:0\u"r=
BodI63!Np{~0<(!>O2aЧ}`xF>^B_axUk}Mo16;BexO#3|"SB?c8",|f\&NKqr_e,|!V^٩>v!gł7z׊~oKōu-̘mje&+;3:y~25V/4d5{5ґ+^SniXNwN$!lf1uK뗲	9rPZJXbJǆ*s&R(0gʆ|/ZT{||x,6"exMP%
x,&
fk((N,L1k d6:hC,ei%M:D&_eF3%[?<Af\8ǃ3qV;|<?iϙǦL܃h#nj[<XJJOW8Iޖ+..FLNv׺;ޙ]|+ucs+wx,SOɟpvN
GdJ 吺RΈnwVvwVvǝuge@;+;ħVqvQ#)_8c)Gl"ΘXZnvȆuƴui#i#@2guRL5uBGs^
Vw)/JPwE,\hF|/G,)6^c]٦wy	0i0b_BI]!uvFZ>RRI5vJ-5 GjԠ>!aFZRcRR7H(R7Wס=5(REҽJ'?Ip<
#6!Ϣk)qո*
}GrH&ͼPv-F؇A:G{V0\m[ 2ۆfۅl9s{&<䇐J~ȏ ?C~cM~ȏ%?xǓ@~"Iɗ/%?eO %?4䧓?|g$_E$k"?'%?|瑟O~_L~	7o$t m{q.;_?r"Dr2`S"C20)PH"#RHP!RH"!2F!cUx"2L"2I!%DJ2d)SW!ӈLSt"RAB!3TH*TVH-ZS,"2'2_!,Tb"R4iPHIV4Kσ8W1SQ"NZ-0Wcy5Kx{>51Wu0wx'jpL׎C63JTjP5ZkG֍Zs-.\&ӶcXBѨh҇YSJKЪ4=e,ׯA+=XvVaa a=2B
.5^F!?࿻2F#1V\p	?+
PKB    PK  D:U            N   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/FalconParameterSpec.classTmOP=wt:WE؆0LdĘ&
LW/Kζt$(s	,y=gO lHaVF$d2'rqCآL-	sY
Vd$0]=	%1{bal;Ub7-@\j㽮tsmp]_jVwvG].ev5탦6=Tk
JXdHSVbE2utYtjwqw-o 6,ݬWJ䑪әN=Ǯҗ2>O{bDyn::2X#qLK(*
F1*F$<P6abS@LӐaacaO
%GBQONI'ϞEu!\7;)UY`aR?t]?rgSsg:rAs%H8ʃ;+o
]I`MW)pqJQeSBFGS$Y9B'G`ٹo}E39ڇ0T4
dTX?){&M~G1zCbvUJ'v[!v90⾡ {CDs0k%3F@tY9IP3mc1ܦX3PKR  y  PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/RainbowPublicKeySpec.classmQN@u	&(@J\q,f#cc;P$J= <To

Rdͧs`kUX%
M
Z6VlxP<=y7a*Swk%n"vefglY*ഷC~LafW[~1N(v\fYv(UzF}5$I
tP㐫8H~AĎR|Ao0㠂)
֓4$@~IRx={Bz}2&RIE<'E0_P})Te#=]-zO`M
]ԧTE:f	jx]p
Qra
svi
 KѤekVI/=i2^9:^.H%^M~I?MO
*XjK7PK
c    PK
    D:U            0   META-INF/versions/9/org/bouncycastle/pqc/legacy/PK
    D:U            7   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/PK
    D:U            ?   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/PK  D:U            J   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/Layer.classUml[~?Mi3\HApiҦ)iB6PέةcIU?DuզBh:!&4nk;4<y{>7
 \ 0X&< p@`H`X[#Ml5@
 1q?$!D qDIG$|T=xB&T(Tf~LT>~I+;7c)
'V"m2z'=0fr>4qSIO
M=^MڅV2	SBKcr^ܘ(ZƬ9=15sRz$7vi0`F3Q$捴:rN,#iwmDڜha~cYC5@|'KV	E#e\:6<am)X3MR!eeւ]9AM]`kFk Dzt,/R)kcs'S,/%KXcb& R ؘV~MN؉]A-pzLbAFO{+L{'^ĉ @V`VakRbЄRf\X\7[dYa&h#	5=dzon9d8R0Wq,H7/G2E~q&
	PM#lkbɹ*kKiPTJh^zn\]'vo4zpEG[|0-Ecu9]^b+F`=J#C'܅Io@Oul0l@/.7%﹆z/j{
L;q}nǠ<n3dJ󸓆%]!+dv\E\Mu_ONoss':uV;y#Lcٮ23=ڤօ*eʹ}$-b
F!0pQ*a
c1_8>;1f䕉j]YiO;0ѤXS
zu
j	ۖux&-!LlǎxރsWH`CCQa.n!#^Fc_8-_284A3rU\+vkv]?_s5um~WlSzIǠL_[}/wt%^^ozm(ѩnnʊH;.TzVM3!G|^&ïPR?<%?ǳx#q]0	79ooXT
7*w}M2s/cuT}MD#
nu[d%t֢5veY2VM\rOUK+KI^ԷK"ū/(/qƊRUG|Rsei3UJVe)==.,ދEӘ\߽W]wt~9oq0
hl2n?e mGĝh!mhThVآ:ѡb8vBR:g'b(~9kvBwڻgdǪPw`ԕffvMރՋV;U>)D?PKo
4    PK
    D:U            D   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/util/PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/util/RainbowUtil.class_h[Uǿ'&I[ۮVkunқq2׊i[6O7.K62t/CP2 Qd: "|{ν;w8nU~C
030Bq
泥I-6(?^Xv:fygR).XWBS,=V,ZktX:5h/YO[jQխ-L!N\&^	jz$2ss&\epN);$[UM{YhP.TV>[眕g
g+es'VZ&0^($2r^SX=i'rΊe%j(2kOL%NnHwLS|2I!=2
<raZ&rV~%q<s±O*)eC6@"GySNaEE =fJhFutf.l=~'6o/rO?cc/o/Em0Kj,y2	Vezj2,*?ts"ޠK>JQbjUhZLȵuɈ_U[:(
x:N|c81|*n[h7;0HM`	D K.
KתXVR;uD%d;TQuB)J06Æbaa9籨B]ACwY/z#땖*slϦemV;lM
PiWclGcgQaOeG׌ց1ߕ&SFSߠ)D(V))x0xXl4Efh)M!1!n*MxPﱡ$Y/Cf<W<dV╏.fE_G7u/x11/JAĳb?'e(A'8x$VUox$$5ɋNBsIYoܻmQG<gJܠMޠ/Ͳ}PKXj,    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/util/GF2Field.classmxTeϐBKFPPD!0u10)$`Y.@t("XPWY@X]EAւkAe-w+<̽=;KLI,-Ҥu	I$4<$Y*+jъD$%a=6&$u&sSU%$)s,ȲXhQߤEKJc!I+(*fo심DxڨhUKzym<H-%ϪFV~șű!e)kCbS3$KדL[OIݐ.
UV.$pp<V-.]WG**gkeÅD9`8(
)+NH[]
f&IK	
#Ҍf<*p&_K0t$#S,M6ɝdo6MIvi
Y.)I6H''7HRN~I:;/Y_x/'bB2IR1TSGyV9$-l,Dnw^˟A1Bz6=u5O0cbشm~M8R_~#w䙌¤HarJ0%-R4HajLsrN:Y,m
t.R|8'
7V 4v
ji*2k=d6Cz9VNv8hVNBw$pEv t<' vFݜ<tǄhX3gh6LCЋg9Y	,d {iOdok@_'_ g;8Gl;yU\'o 99tr7pArr}`mCrBw50#9R#Gdh'1y^0*@tGNȈAN*N ND$'!h;z2'u
2dP}Z,qs2B"K,Ա2'S59M"z\!+,*Yd?0w@@LZ'Nf:9rr=0[/D^N`Fs\dpksqƉ#;&&mO,!Nn#o	ĭN֐isb i	G'N%g'K.q6!Ӊ;b.'ɥڍX˝<Aޭ:cjJ'o;H>]5Br6&Vk!O<OmIճu q)(΀|Lg|I>&7h%{Nڈؤ:x
Nnѫ|O>_g\9GyJu4wL/;܆9%۝Ly;5LphrԩīN9
""@M7-N2 i6v#;7n#:|k|_pt:%?2%?ˈ1S'z&qPO1%gsySFWO~!tnC@:&i)
&<!O`[,~;F|i!?!gNdrd#\ݗ_J2݇rBu7Q=iWi/x/콷
47-VE܆<7mem"kl'BNYifhne˧.A{P{,|ӆfjkr`8ʏv㽃zQ]6RJϏ@{ԞkY\P^/zϫL{Ms}spi=
^/)=>>p^':[eaVmVؗvc1E,:=RTxR:Ph%$sd뉦Xkru#5{ysS|5%z{l4ﴸwU9ˠVioZmku5JXQ^;gmU̱iW{__c<gu\XA
g2f|q2X3WSL|ΰRW*b65Yo(d_y,
2k>TAǺpL~VV@}>TW]#YK`ZS<	JXy>ʖ7&pzkM~;?@~{Yo)PflaGc*.o?gM~"77!_lc뉵p{PowxJPwyuf׊m?Ƿ؏m/h:c1[}ff?6&/-ϴ7J^:%?}%^3-Aߣ|j}o ?!5;g
?4cG|wwc|;u'^[Q{=h@{[M{Y<wL{imt79zPK*	    PK  D:U            `   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPrivateKeyParameters.classRmkP~n5sl6[ֹO	2s`?H^jKfFQiQȊx9'yy {Pē"T3	*,[:xsB{ ;2FVWArA8c
v0n8
ば?{@ol{<7bej~aBɠu
jA}Cht"''j*Q
&U8U2{"=]ǟJ'(ā/Z;!G~P91MrpÀeTnXm+l.Sj:iP)r윟iN>Щ廄(N๥jnBJX)
V-jj
n<fZ
1,n6 EʖU
6q5vFeNʌɭ(|+e&
5^*y!LUTUpUS}uzC?<PKpǖ  4  PK  D:U            V   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowParameters.classS]OA=oJRD`kF
A>j&
nva[*	/>H"!Q&1eF^|93ssϽ;# 70F;.!+x`(Fc4ƃ"D!4[}V2x%4fh]o<Q`͛eЙY+	kU)׳2]
ub)CǊu"l7sʎ*UPxTs¨UҢcj	#b6-U,iRwYьҩ lIm)-%(":%aX^uŨ.*>gU5a؋TQ5`&;,6rJ%Z6xUip%5T,nWdfa5
!
\Jc)hUIy+gyk:0kZtlJɺH_iPIN6ֱnLӾ-3̼V
ovO<w_-ͨ$
|21ALNޑG i1:=h<K>h _E#?ڕ/b0:?' D`8Opv$5_MS^9W?)C='-ҭQ wޯ18Dwvx_~QH9{u	!Ix{nMI/hs~ nR&ppi KXC<F0^E.'99I'Lw=.Ma>%ǀUF2? PK9  g  PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPublicKeyParameters.classQJ@=G5'⦍,ĝBDBWX"1i,?DPt!s{;o/ 1W@1a*<f")o(3fV5Ӑ+\,34%DAT3k;nH /)C7eej-+}]bjz*!w9ȏR?ľlqůe"Ukqf_C;jz~F-x+	ws+P6h{BoS[Q{3,Jr,N741E1HXl6	ל~s;0ܕLbu`=R6@Xhe$
Jl%Rdm	Cj.+.J5{KjRǳו? PK~    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyParameters.classmJ@ƿMƶ@D=xk#DE(zliq*y'/"x|(q
zo.VFŒeH˾J{qN{*Gz~$TJcxʏ`!~FxXqSU#&*W&۽wD<DRdXV򱊄,4Ekn2tLc̔ì7H_k;l:*k ,],P!mSn/`3^,[m[e'xT'PK8}(    PK
    D:U            >   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$QTesla3PPolynomial.classet[W+˒%˲eKزl;40;
37
54
33I[sƽ}1:v-&<sovJ$\
{Yf/\
{yDfWW
Ρ$q65=^9_Ů?~^%_-5?'???ϫ?Sjg߫<tIӜGϾ*ʾHq]}VCNBYsqs;sϊd_4eEuu2Ff_KĮbsʋfއ>;5|Z"/t߅f_Y:ڣO/B=.x3"բcfg_F^7"V1 "B~\©眙7u?/_2//[2	/[;/L''GsqS¤<O*ߥw̾hC7];sz`Jh'j)Ý}a[#"є2YE$?~uufi{zqY!Oo{:)R6زC}wň2n<POwc?vgp 0L'}^:y?Ct	O_>b_$D"{ю]^8Y}ʟUimɆXFjͳWr
	
:ʘ`)rF&`l'1YXKKSaj?}d]Kr2J4XrjB,7
3֣Y4!ն;e_)	0n}|ĬF`ciӿqܼ g]5싰W36ю̺Hie
?ʷlGfIu7y>mDaĕ}sς#H5>NRKj%sDmIJܽ1z̻&ol EQڞ}ݎ%AXFjބY99;b r/l]69#Dg
Zl%_OB?@򹛡p6yMJeϴY+cq3l|rDJd	ZsFs̀j9	@6r4L}C_l#12\Mrĝf/Kw0\~2[CE~o_&ISCH)+>o~y?4GOz܄AzB,DM}4N~bxEZkg
XfǗC+Ʀ|ꎥs8'!8c|1Ng/2¢\eU4AYWmOka贡ԎJ<KC׃~
f_rX
<"B*v(`KP 79W7
.-6<񮙄E#=<D|?7&y Ɛ|c?HR=.H"uؕ;تa
݈.,"pɞF uFwet^0ru~Å&.}r*TUON,
Jƛ3"&
ûR8hܢ<j2za]gw1.U=b|,D"C[Ι,L=2B-<i{q{PTCp|_؆չ! r8}Kf8~? `}#f=1u</A<ٹXC/ί7/]DS?s>\!d{p3#\Zmpj>H麇=/T? >D8.L)!Ҿ[:ќGl.LM `P~2HiB~_ Z6|ca1փJ	ް6qkм,%~fm3#?:I6jʄGu#ŏK8H|=eC3xI{4yAҢ6emQ%i~Ԫܓo~
_rc	#Lц8C@Sʖ$d1gc3&H5MhYQ?[87lRG,IaƱGWS:iڹwȍJԉLէ1!!)a+lL߂ht+bZL!LBVO 7#pL?aԞ<9?A>	7͚ap䬻p_0H"XܕڳUIN>uXBB6DFX]d)1-Mٿ|DFgϷP}sz(7vϽ/a=ؿo ]u^ѭ-D"֫}<b@;0rv#ԮFLǵ߁.y"曗%L#CGLREw<4+	l890d)$ӌ7%x4vLIzP [s{?HFbt^F_xT#ЇoF<տ)eF>'7
ȯ^7~u^ģߴаԙka~y	9D)+6wSuȟ}1%_CօJN"W|=c{PW&vpx|0^
4;L3jZq.آ-uI5071feIW7
|퍜]g}XC$%3$	z6e	k_V'^Dp>}O 4c"
GDo%.'l"Sfꁢ37/㸧԰7M5YoDTj'E,"8,	VjOtHI9	%
q
Y
EW-J}x|t݌C|7bArP#^XKZ7|9Hnĉma}QePJB_0%`Mv8bO$1P_.g9!쾳ֵ^*;NFJ[#כxwZoU֊QuxAL139ޒT[KɤP0hh?ڲnl9ί/kIsq%>(ו@`AKW~J
Rמciaˎ̃|$ٻ3@iiLצF,ȳjK]/%?
Z^Xny~y7-S^uWJb!E#3g	~K3v~9eEL=BW>lFC)t*kj2u!=RonR<SpWީX6c`(%JiA%uzț|	hrCR#AH!$/'U-(	^DFj~Ė>"w%:i%0Q(Te"t _6f #5ŨNj NY@&Kr#Ґs`o
tk:7T#"	^s9X|;55PX^1>C*@nڰnPY:egc4r"F.GVgUݙry'M) .%>2IVպ/D;b~7S;'U΀A{6̃nC`|1jNv%cݷ hܧ| ȴ._̎⼾5/Kl
ɬ%Dx6@߁JW;߾@
-0#UY[qqM{͕^%sQ_Z
b/h|x$zv(.KM«mBnL*0Hx=ϷA,&KZ"Yoܺ O>h*XӠ	λ1u K5a);c-R"lY
+^7vJG !ڃNP,=,qx\1$vd
QT)9͢*띹fl; ⒴'y{$Pڗ{	+4s 8GFkw1WTYZ>!le6A	R[#[c߃K8TӆƊv'`-Z_s3˪uR8`-
k?^5%}WUaY3%cSm<g`}i[{=1/IiWuIaoEhcQNTޫsLPJ*VN#lI[K>
Mx2ћ$I>NIdυ3d1r4ri72%C\F45󨧣0	O_u<0. E)ر~3y
-G݉æc-Q娲j_$Nuފ=k|RNo`i6gg>m1bVlsEքؤi*CF(	){TpxI>6OjȺH8 PR9X<fR]#IuٔoXa7@|U~+x`	|iS5๑yA*"/%']|J)r[g4z!qYr__B/|bJ7'L[T{(AnLOx~t2oDLr8yύRfqO\l9,|BE"> o	UD>H79~ XeTB*L:<ʞ"4YY	KfMS"5sadmh{%W	%߲t*0(a)#6w|Q<܈~ ,?(WyL=DQRi/*bWL}rxݠV{4%`cKv
.zt"L0N4C'`XjҞa&/Ҧwk;&>@ʗt/
>0.$D2T;&Sǅ*d3MbAڙrEfBPF.;wB-@n*
Bg,*yc_Jk
c 8o8*qLeO){J=e(Bd/2L9US~=IRF}ʢM?'kJ9-3UL-lC5W\/:dF[oHba|/xv=eY}0Q30k<X]$<.&HD7g!Qu/A47?_we1Tovl=(wũM#v>hY*]K̫bOzpe	U~\k~[s#vnY:m b?z,/Z3f>V&es^#cvN\L[4a)_=!!#$DϐJWĭ|!>-y>k6"H"x63loq]$*SN;؝"i{~//4#YAv~!h\hn22Kܨnco-7{ ZNoKE/~)x|3/ckᙞ )qa[ޒ^i2Y@ȤȿNsvw!KGexuT[o){j6'	Ǿ"Y4IGla#Xxo9y$lk|A}rTWboS
[WBLME3y]3#-W/Da~͖A=L
	Ln]Qaԭie?ҕ~+/J -e1B8#aDT\~wK5{3h9u9ʵ
;X]8}\ѱ?Uy2	]bi1GBg'QixZwZǴ/VG
<Nq	~Wy.CYLXo_
alA zɟb֮w'W
Y)-R{!2ÞȲR$AL#)+[Q9bb5ܥ&Y[/ɉR<ɬ	8;RIzC{yw\4 ڟ0]{@y-\Bf 'qވm,qL74'
O".dsׄ9Ė޴l_d1BյƐy4(!InN
ْ_Nwq)B4u8OAR{{aoAeDZmj_RmfwRB=_**7}OQUđ\<=@5}`06J]Uߋ.춿!iךJYDU24Ϛ/L/PT=)^UJD=T0d&0J w(hB)k]GuEaɹ7^_O.%̩wE [
4`:	(yg	Xg*M춿H.t}?3M?X[>)6f-|lum<i
+/Q+¯!:>DvL&xFohJfS<#.Z
J_=]://my@\S'k*&
Os#)k86g^0mb(5]FD4C`;âXK$fFڎߠj>:9~>,F2@Lu#1!@;&X^JTmxrx;Q_CM l6rw왌,sL0vpkj P
M݈ޤ mJNT_ݱBѩ"}|	;jko ,,hYPpVhٶ -aT܆ :jBqî\ˋBtq^Ѣ5oF&4Z
kҌ,wHBY&bZ,O
Y<%ƓDeQ|}'
kOE>2QnܘN0SgAkRW9, dl>oRDKD'I. 
Llzzjh`v(n{>IE֯ه<XS5"~tETucU&v̄g}͉xu l
ށxL±l9bKxJ!}P#͒8Z~!?C{Xm~!-ӉDH6 -۶'%ҧv5)0M6n8!hlZ9Cn4jLK&YdnN/f&:G
/*H/VC+#Dlh@Xvq,Veps%U+
H:|^DuDsP0%Tc8:7to>4ԥc_[hͶ]!=km?T.{v](iy /aD޻)ֽ#ƥ)(_6ܬZr19fbwFPrC
p\ز9){ёd֛>$GYp]9eLgG^j&BX%浙#pm( 	[<k)@Vw 7k"^E ?U鿊I-{7amG{yJ	c%%y_[h	}9¦_vc\v<QB=CtU7/Z^4hb.̔%IB|EkRb<Kp^iC
 zam{O V-zw;J'(|%F@8j$9ˁﴕ߈s1T/C4 )n"MO7GA
xb~gm/DD>uhq&|b/UFtzCh[/HHA]>%(gcBo%mgiU*9w$,7#	m0 ɚ/"YD5W gsbq
T"QvaE3Ƌ޴Mz0qcK
_	TY)R '>NN
	Qb#Fϲ[w&?;^ѬnCǰ_WSXg%dRDoJLu#N_2zO&ǴOK;Sz#}PeP1|
S^̠4w g);#߯EOqY&"c6F=y:3+EEmetrDۛ/^]gڙ
[`2Xf03YTp؞"CF,!u; |:Bq+cD9FN?7|#&~Y`q9GU↿r!o`>_Zw c2xqػTv6NĵXT`T芇@?]~3QPR
ȗ.#C82K'b$ͳ	p t Y(#ߛbY{&=iN̝ԑT
*`qE;8||?XSZ7!bjM,uW-oL2pXcX81وgjԦD~=JHv1hPLeq}I#EOVy~T`xTh0+?<eB{^A=y=$G~ڰ%+vQc0¨.焏"/HʸA8NsvK乯"!
Z	n`ʝ<L'R-Cp"y䗄H6p(ZdS>qaXlx[4j
l%5S4UgR?ڀYg	r:-sHLzDμ+!~û	-ǥBi4S2XwHKgc!{_m+s_IHz~=B{!.B'|IbѾV?ͅ8(?-A3 6G-їi].	'v(5ɳsؐ87Nz8h46­:6!Vm
Dk
&5<K'πEԛa՝&>HUB)`R!I4fZC)-HxzVlu4e#9~ȘW@z}C1>[_/#~Dh5SOmr]*NP{ƈsJn;iIæ	7I]jηFN#c	#~Uźͨj-$hCe#vf`_]ԒP׭$ŌkWS!W's/haiF]|#%ѩ	FD(Waʩ +.$鍉vwJ$
bEmg0IU1hm%C v(m{
Ȗ^˓~Rc.Y:hB7ǹX3Z|+{b גȻ3se
~GSL-[{y)$E~/L"d/݅Ï>*5^?!~I[qXqnz!K
)~N8E	؁muW1D1A7=؉_r#9hi}!/BMy1H]+hJ	zbu@԰Jh+,W1)ZTFm=0OC?ڒjjYP\"+gƓ<0L&clrL2knU	ю~L%'y^*'B.{7ϊ9FW,kDT;OZ]_=cDg!,
=6џ1;Hjړ
օhFRE.
>:&aВ֏DƸ^"^-A.8:as-±XO\=e>*ߟ@c_s0<,SnPh<]hSԌ9".stKꚜu8u<@>QQ`_A=]s|QB4J_[*֛pcOt9%ϑ|yK|:@p~&+kI*=4G	*~h`"sEp
)&߯*֞Bk-3ݯӥc菈LDwd]r0`3ZX>.}T
mNr<bIF32b='#8
ܠ}}<>heIK"G`
?wHIEdI1$I^dS +U뛈.mgщxwiQ4OZJA	ԴB	W6V1zAv_SQIV@MjCʀH*m2<.eq.j~P^p#P( X
\:NR*ki6;"(SIX]X2\1;<I>'@(ҥZhe@|Ƒ2oXMQ	6R[6#nɘcs'M֮B]U췊D(<}߻aŌٿ,P(3r׎Y c"ڔ'xPA:bҔ sa _s
^4e~IC>?zZV}!f	o9rq-x"NXР|cA7i!6?.[OH*Bbhd@Ε (YDfiC)f!#I4I2^
D.dYoʅ3d.Iˏ
Ϻ', Xi@EshX$$	]UZl麴1ON.ΪS8<krSDU
ǖ:OiLEftD'/r
!N]ku[
@׳Qp~7E,2gAsS%MQvhsϋo77@%PWQ(2t |(Pԁ/M3ت{Z,p!ѯ0o(kL"$J	߈oY{ޤd{yu5izNCB,YQ(JdtHsdivؼɯ$KĴ ̭Mm|	[Vzo~L<G]ɀͼ)8AY!}΋5E};RU
2;;T&L~\ѹz`{ sl,+FdL"
Nt4U	4[ָ0_	7+Iz>ނ=҂pƨCE^/ѦcdwKTb_Is"f2EjaĦZ>~?8iTC<̡k,*,*e :k;]GC`=C'
2\88z
\4hD_=B_.qvg<&O 9/JV8:EL>~@8l 
m/(W#ݣŁT"P66vK,^W4)p.ztY`h^S4_$ePhͷ7Kg`!06v1&a^k^`N"100Ү>:4S.bvyƂX[+dE]ۛu!Bp	 ƨzX(RrCtY&dR7e8Zg8H✢@A	QY?K0jSVW\|Gaָp^R*yDrA
Cs5jB8N>ERz83H}չ^ƫa2 ]	I hvwhF,&8Qjx>Gb.eڻ[+ޮb߬u68
3*-Hƃ_m
0uVgP-ɳ|;I]ϋD;LGK&
[Ճ/L"q8ZX#~b=)F/8{y&61]J,J?-@3.Ndz	-,3;n	
+Ep*/մbXVSyda93=w l28Hi.n_X#BG_h(ΨZm! ,7Jk!~"`>/=үF =k)bUZid"PJ
kpC+'l} 7&H߂+
O*Zhgos
/Vei;8U8O cįYLQm9KVd<UϫWYd
 *}YGhi oJҦiX|+v!	FitAгH]SFtk߃i|r!Q]́e"AY$DmIbYK|e2S[Ade]MA	xbGFTqĻ|GWt7/R[֚4NlK,]?B4K3&\
87ѰT-bM {w|']:3l.
ѩyEi9V$q16Nph0Wˀy>p8
JWb
^xw_:^knzM0c)V:"aR_ʅDǠIdߚ"<6rvvno)Eސygr=Gl؅PU,i2\˳Wn@e͆sJ\ޠ@Q0Wb(Nl)UZ	(W#,Y(e]jcAr,qRUxixXNQ5fP[/	~۴yX{p GWjjtӓb?@<*>fJ9\S8Jқ<O'.	 *:%6BTrT[GV}3fP>In:.75CЫ&bS-
ٗ+!O[QҜdM_:ӹM*ˈ-9bV-GE){cߨJk! vޯ^ͅKȇw|b(ˢTI];S)5j
is-GpѠwWrIzk*HIB$^а?ΉU:WBW"i/F1t㗕Kw&![7t% "V"M¦Fq1WEWv
%O)ZMM>8"SL=XJ@,t[EiqnMQJ|W_>AAk7YpxC"{6ej_KgCeлn-8X/mweiⲣJy.C*wVdվ.F/+O_e,<AڥXYxyKAEM{ZHmD1l[~?qx֠rk+ m>MPRP45k&:P':mvbT7p4MD}Z?H28?d-pxB+'"n@fgS&%_:9GjkFJ[܁$QnЖ|.)Ew=%rԦѦ4ΖFu~sNQ,r\ lH:p}-P\֘Vr9<KiBʐY6Iс gbV{av_6K܃W<"C8 [ɖ(x2-Iآ}bor1T8s"ͪ%ؘ.UPhݘƃu)!8cj_dI)hVu!T@&eqT-لNghhnO\PFAF^/;7~<(xI>yA0>4A5 9Γ﷊1&aa]>K!
S_ :+ݪM	v=;n؇RtxAȸ,I0zl4:Pz7x _Zn,Y6G.wK`uS٩}~(%:(wE"yрG9@l"K=."bHXAaHn	V>$xa#L5`eau!BOǍbJ2Xiu`qbwg0+mci)t9SztIisG20fʐw@|l3	g!D
&\E}-]N(GK R Ӝ;&D5js(xO;@! vg'
J
qfO9m[nap$zvoQÖoH#~pgD鵖CQ`![Y~Mt5C
+PI_.iSw9 Ԙ=7"?xm"+h\&d`MhX>F̃7u!/?q07lF7"Zh=e+#XJf엄=[s0DOnVc&L)zK1dް7W܊5u'urw~)Z'Xːsl>_udTrdk2xg
[x!4k@niV5{rjTlM3#R;BBO'.JG2/Y$5QSh=5uFVgWOu])dV׿8oW"+N&. ʧ>&݁OEmO:1^MWU,/
V.TtjoVf'O;ޝ4O*0*u.LOܳkXs=
1;EN1m{XwW?&&`R~LCQ%EK#f]zh{v:NO [ܶ2z	z>R_AZVdvjP4eG!ށQřNt>ʋ.jTn $?RiD$溟Ihsr8ѯdW5Z/X;[<cXHu-`@9hy-Cg$E(D!u1lL{ iՋx-qP$YkyA8&
栮Q~0fub#!W̨ڃ;}ÅiP
)D̄K$)e?)mb{uGLE	kf_Y\(<~
f1~9u&/&(E
9	[f~ӿ:HS3,<lk0<f],M= (7ºiu*4`<F$ټAXvDjM;$qG Eu3A$sOa3m<+`%n2ߎl0g
٨s>.RxNHq"k&Nn|-z
23宆Ew+9M6G
{=1rCWOSXbF(e߽NJvj{J;h=+bŀapO׏wGvz^Aj.T@>E3/	+}1F:+2qbdxHu+ )in[)֮mE D|ϡ+8R%E_$G&&)D[$8}H_pR"x:j ;ПԀ\N+{ש#Eb5qŻV.
*jY-NN}[",A+J7H.lgx0IUr>7^he
eb\݂+1=hѽ4Nх5x8kQQԟ92e	w4KK:'UPC" L
\ػtܾ	ޒ~&a֞g_Sb$sZ,:oLU62rw9YY_/z\u#֫dP8'""ܫ?obmq+ڢ;B;H|b*Awε9˳|vtA 暯2ьKyEI!nx3/mnHtw`)@?{WID
󊚃6t;neLOӴ{UKh3W]*
53!I^])>M+g!īϮ'(h.&SBQRbN뗁ʴ}a- ړ2mPIF4 6]R`lV[lq]X.Dgckŝ/s+=WXz-7\3&Z6	_r{*kqpUqf<\5vT5c7RY#&"5\\\"!Jg\{j7H-z2)	M4bǁSW=j#Hb\PrU~~x\)5L{	H2c(gzC>cPkkfn;Z,E04j#Z9eeXI+*c6G R=n~qTP0uHtVmxC-'O_be~S"6Yveeu MGgJm&-^1a]1@ޒ<lHB([a	-pa1
}. +_ C*cش!2Q,zokՉƵ <Z}]&PDM
/.&ǌh f*\aQM[oV#	ud_Qtq*μ-$S:[)m+o{uE-+oڑki?iNr<bC[ps2qE\J&4_UXw\o\]x{FJ\&Ǘ̷,a-{B?bUD-6V2J{GȿN]A/"j?EGcdEi<ūcV-(D%r<GBwxG(4
NQfV
\
7b){j _&ԥ_{`8tJ]E=@y5 -.t<?Cb
}j

X瘿Ung2zK;̇]Fr>M2#=}|q#QNx^Xs<]JN1we	ڃ,Ƌd4\Ŗv{1Ȩ.- Ƚ`S󺃘z\P-nvn@,{0c"8'ZaL{lhٸb8[҅DLѦ MgMM! R |着9
WĉsJ {VQJ=yA¯G"lf1qRzxBU
HWK~*[9{Vu+PVדLOkƻoMR;DDIO=A@n5j~<Vk,OloIyiEz{oاrf]tud-ߍ'7,(QFP/B"{~Tur_Rxj+c-;I5/ݞ	ricƆ(9Elަf-('D6%C`XSpkK$\<{g5~[૘xd=Ƃ1uMx3j0@x#e&V?>C3'&QO- ́^33(LQ5@a㏂Ⱇpj9=/}\s+;7.-Ll@Bo*YNԣ"I"5QLFCHU?%[Ew_fXB
9DJX҅3Y{3^+$vt6zW!m þew0%ZlJR?Nob	ɹRy:uGd3ITc
@{EBހ'=,3.c hאUS
J:[b'hy}`mFVXx'!303Rk L/'F,66ݶ| :C1-jԯajbH܏nexeC/!ux䃩i%an-"sI[xyAf]9ZK`u1P<N=)tCU"1Wશ&qP8_K'!6)g Xtt')|She'ISMKD+>$Y>Hg a7pb͉mϔH\];Jٽf}	l^o(S^	O(&oÚdN*֔Ef@Zy=B nz#sz1˚p"ޢVB!WĚB/	ƶvI8OlGt:vDObeUpKgoƲD6B;7h^)1Ő<8 -mO3⭲RI6Ά0e&
8QSY޹I⬆)N$NlCtAﮈwe=w\"~Z8r&3V*07cm+lCb8Ek?Ur\b𖠫j:j¶Ӑs4Timd'(ՂJ}x 	EkH`]e`Q=}4W!BdЬPt,(%ȔcսNi5"8+^"/G;+Z'X4)nE:HҲ5MJ!KfRs=Լb(b_HUMU(+B]vWQJlxz#R`DQ5KMڠW8~p?Ct2oK󑆩tgGuA&2\B7PSyW0穆ͳoNT!me|@l7#>sm9HQU\vv'
Fx!	5,'p}U7pBv3
ûq+U;8QZ&֦~æMhٻ9u_*<!,		d]	qTpi=lR|.{*^
:pS!ƅ(DI49p+%d΢ܶ,hM4wXG-*,3@7GYlոFxל []gZ`0\JEȗ6/5m~	XP_/d ⹊~^.B*k?[+NJOmu#hF~Vʘ^dϸCq@M߱pwؼ%:%&_sbn(,6hBeSh'CR__YDՊ&&#Ui
P9M]F"k#}R'oDU!AoVH!p=K$Yy!N@6c	#	*EІrFx#
/f%?#إBY?s"6*;RjCΦ"k[4	Ho1m*p Raʛ:iŮU;()f!oG+&pcZi`F#2"#OuV\-y*.D*& 'kWק@s?It~xY$ܽݷp,Ӝǒ<yB!
c~jܬ#ŽDa+	U@b[
7IIOOy
?$CL
Q($>ݛII?t$	)Цc$.w7"#HЦcF2hڬ;wj߻qf6-;u$Qꗫ_ϯW޴yM;gߩ?~kF?(ssxbp<VX]6戀fe}ٹS{Woule-DGwS杺vh?unڵ[g1+~17TxFZ[/H
w<TZ#[9:6C靺7ٱyMuoܥ}F{wݹ{'?j{$evk]{&
{SڞbOU?g^Omaϩgy$)JةC?ԫlǎ]oڭ[F)[+7kJib?S!ݺr[=yf׌,ھUmPdE˧ަClGpv?S?l2_KIڷO%;hӴcNe;x~JX'H?+$?5#	'J~?O,g$J{ɭRD!q3Ppn"<JGmpM		5;<iȢ\Qe1!Wswo\
Zks=1s)eL	!3Ld&IIHLɔ$BH_'vt>{?9nu8}odfFU:/J+̌o'xvwi9i|4d4o'^o>n;mryy{/[0z9ثC9ü9[-oN3'yS9o{s9;ĜiN2zsE*sw{\=g.0o+US"4_ҟXmܦMnz>=)\|/z+ڡOkhjΪAj뽲k=ܗr5K=%^-δN9q֋GoΌR3ӦYϾ[9|9?cv8ǽs{3f[GYi.{an\~j[ݷkytsνmoq_3w/ƻ^kѱ-
ckcîyɱq]y+ܧ.1=U2ʹ^qR[דZI._O'ьO&1qM޿n..NA=;g'7y=_5/z뚿y;n}܁OTÃZ^y/-=ȋY<(reNi~z+(u
hel2ŇW=yý$d\7oW+63%s[]VdQ7<k-^n-h6y+^m
>+Oݕo+_yS	:cܘ/ϘuTྱOˮ?S+ȖVJ^{i{p?9y$,Bk6XX)rOK=h!2WW__}K#O??zF5<<3='#ϱg>y?W#ov	gGW1ݝS}ڢ](˭v^.;4M=}s76?3e/r7	><·'8gr|/Vq_g5oܗ^njy~m<y~_|}.VȳZOvǏO~u'7EyZ᣻:ʽ]]_j$jc~Xs|{s&/>NdXn-f7pog7h-8Qs]sWub6Vl=}Z19>2{#='?6u<ۛv<jVώ<||Mz^7v/,3нir7}\<[w;xdw9zYG+<&29L/vWwym=v_o'wc';^"Gu'$'4Xt!u;~#/6^+tх.hxjZQHO>p{:K^A~״y=«ۣcyK|>]qO>vS{7۞`w4y\K&SS_^߻>^7>j5\9i֘ZV&}Gn#G6),щMe6=g^3,9k.8lyK؋nd/񶲗z{uigH<C^wWk]
ZotzݵVwk]w/^v{1۽^pU<+Ab{1x{1߽<?:D*M-BxŬ--,yfmowfm~sZhMEܸ-ƽsq7%x3ܔ-oi7Ux˸[MnVtӄUݴoM7޺n2xMކn6r3!M6sS܍]{7cx[qoofxۺ7vt ,oW7vw=LEf1xYn;yy%fIxY
nwO;2q3ޱnwfyx'YީnVwfexgYޙnVwfuxYnքw]fmxYޥnօw]f}xW4+l j7w
]w̂wsnu	l
7fsxl~7[{Vr5lQ7_m=f6'́=f{xϹnvfgx/+n?K^w7|[nv=fOxn7Wn*|f_kknps w|~`]79p-0ǲGGH٣/$
Qo_\X3d=2'_V$˞ES,{*Ueu)mk˞]__~gH{7=&gL˞o%{>md/^{Qb; Mw?e1}e/O {d
`+*{e-{
cdXk/{e
Oi7?]fg?Kϑym/ŲwD/e]𯐽Z^Z¿^~7ͲEA>6ÿCaw>.G#d? da'?*e3}Ӳs3e_(d
&7˾Mٗ%
wd_kߓ;d_?W
B o!eFP}AEj"hAK= A_v.Hi-HA G?F 	/!2߯ *߯!:o &o!6 } g@{@@sҿ_ #)ҿ?ߟχ@G  HBaҿߟ@E !Htҿ?/@D K!HH2&_/@G + HJeҿ
_﯆@WG k 5HZmҿ_﯇@G F   
HgHFo@7E !#HHKҿo@@E Hҿ@wD ;!H.Wҿ%ҿ2@D {ߒeF _A( "}J~ҿ5ҿ B?PPF( Cj!GP?Bh7j P?Bx	j'!OFP?-io#OGB3jCP?B\yj /D_P>Bbj P#e#/GB+jW!F
Bkj!G߀PBf/j P+mjw P]j E߇P-B~j D?P=Ba#Gj!GB'jO!F?P's?#GBjCP
BUk#_G	FFFF'./=}0\?` FB?00`a F?(HAF*0Pa#M?hHAF:0 ?Ha .`#?HA#``#S00#H0 ,#H0LEa`1?XFH?XF``i?,#3a`Y?XF``E?X	FVU``U?X
FV5``M?XFֆu``]?XFևOH0?F>#H,?F>#H0|F6/H0%l#[H60E?FfH?F``G?	Fv]``W?#_a`?Fa+|V``X? +JAuX?8VCa`a#`#a`aojj߄OOOOOOV?V]XLX{Yٰ9yEaajj?/_VV	SXJX*XjXg5aka`a`a`a_jjoVV
7/[X~XwCaaG`Ga`a?jOj?VVWXEXoK˰+kaa7io"H6"D?i"H>"DisIH}D DhIaHcD "?,#
"?""?#"?l""?l#"?"?LIaHHpH0G$"?!1"?B$ yI|p~D "?\.HF$ ipQD"?\NG$3IpID"?\~
.Hg"eIrpyD"?\HWF$ UIjpuD"?\HF$ uIzp}DiD"?"?~nHg!ÍII&pSD"?<"?~nHD$[!íI6p[D8A$!IpGD"?HwE$_B$!/#IpOD"?~XXE,!KK@xb?:b?<XEX?bHQk@X&bXqk' ODX?
bTk!X?"Dbl9sk!G_Xbk?@_X!bRk!X"D_X35#E_XbFMk@߂X%bVk!oG߁X5bNokw!F߃XbkC?Xbk E?X?"D?XbYk!X"_D
be+Wk!XM$?ho!FD']$h!GD7.xH#MD7!$ҿH!MD7	ߔHD7$ҿ"M
oH@"&ߴHD7$ҿߤH!MozHG"H&G"oFH3F")$ҿoE"Hf~$ҿY oD"Hfa$ҿYo!͢H,D7ӑHf,D7K"RH4|
oA"H,,D7#
H"߬D7+#*H*߬D7#H&߬D7k#:H.߬D7#ͧHf$ҿlD7E"HflD7C"MHfS$ҿo>D7#Hf$ҿoB"Hf$ҿ"lD7HflD7#H#D7;#.H+|	ovC"/#HD7{!HJҿ*Jҿ%쇒oGI7_CI7$QA(I(I`sJҿ9%0Q@I?%(QJ7QEI?%xPODI?	%dSPOEIJi(iFI?%;(ig%L6J9(i碤>J(i_}Q	JQ/EIJe(i?FI%'(iW%JPFIJ5(i?GI%:Qo@I%&QJ/QoEIJm(i߁k;QJ(iߋJoQGIJ(i?{QAI%1QJQDI
%igPEIJs(iFI%/(i/%E2J+(iwQ@Ye(ko?QEY{(ko(KCY>ҿ
Pmo
ҿ(K6BY1ҿMPm	eߖQmeVQm
eQme6Qme߶Qmeeߦ(K6CY]CY};@YC,eߎPeN,yP(Kv>;?ҿ] e.oBY,EP4(ҿ]e.o,(Kv	$ҿ]
e.o?oAY3Q(Kv9<ҿ]e߮oWBY+,UP(Kv5:ҿ]e߮oBYk,uP(Kv=>ҿ4ҿ e~eno?o7BYP(Ks(Kv)ҿe~enoo@Y[,ۭP(KvE-ҿo,P(Kv#ҿ	eowAY,/,PQ(Kv'ҿeooAE_EE"PHkH T{ *ҿ=~oAE8*hG4*7PAE&*hǡ*h'
*hBE?
ۨhT=TPFE?\TPGE BTP1*P/AE!*h?BEǨh
T_*ըh?CEhע_=*
h7߄3*/PoAE%*hBE
vT;P'*oPBET{QCE-*hCE ATP0*#h?8*P@E#*hO?*hBEϨhϣT7TP_FEUTP:*joU-TQAU'jBUU}TP?U?P#U?
PU?2JEU"T(FUTQ
TEUjJQU?j*GMTQT(EU2TP>4@UJQJU?*GSJ<JѼJ|JJJтJBJ¨J"J4ThQTh1ThqTh:4U?ZU?ZU?Z
U?ZU?4U?ZU?ZU?ZU?ZU?ZU?Z	U?ZU?ZU?ZU?Z
U?ZU?ZU?ZU?ZU?ZU?ZU?ZU?ZU?ZU?4ThCT賨JFJ,ThcTsJ&JѦJfJQQ/*G[*G[*G[*G[*G۠*G_DUEUf*GsPPQPQPQ]P]Q/*G*G_FUvGU@UDUBUFU탚}5?5?5?5?jt jt jtjuԤ`ԤԤPԴPGM?5HԴPFMj1iDM?58ԴQO@M?5$ԴQOAM?5[i5tԴ]Դ3Qj٨i砦ji_jQ/FMj%i?DM5Gi5rԴ_SԴ+QBM5giנ5ZԴPGM5FԴPoFMj-iDM5WiߎjQDM
j]iw߃/j}iEM5wi?jQFM5QԴPGMjiDM5)ԴQAM5Oiϡ5yԴWԴQj˨ijQ_GMuMԵ6;kD]u_kQ...u?KqǨKqP2\A]Kq
u?.
ԥP6A]KqwQG]Ku?Qu?.cԥx
u?u?u?u?u?^ u?^u?^u?^u?^u?///OG]g.K.K.K.K.ǟB]A]g.ˢ.ˡ.ˣ.+.+.+.+.ǫ.ǫ.ǫ.ǫ.k.k.k.k.....ǟF]7@]?ou?u?ou?u?u?u?<9ԥxԥxKԥx+ԥxkԥxԥKKlԥx=#3+%ԥx7ԥ˨KKKK^KިKWА}А㯢!!!!_CC@CDCBChhGhh@C?
hhǢ<	hh'2)hh
44o43&BC?
4sCC?
4/BC>hh?@C
hh
24_4+%UhhW
4_hh7߈hh@C
hh

64@C5hhAC
n4{EC
hh
4BC=hh?hh@C
hhO?43hhϢ	
94??4"_BC
4W_CC;hho4FSMhjM=4?@S7\4ooooooN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD7'9͉oN~s"ߜD&5oM~k"[ߚD&5oM~k"[-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~EߢoQ([-
~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~MߦoS)m
6~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
~CߡPw(;
>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P>(A
|P~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~JR)~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~FQg~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~KߥRw)]
.~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~GߣQ({=
~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>~OߧS)}
>@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
@?P(
H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!H?R)C
!~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~NS9~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_P~A_PD?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
D?Q(G#
L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1L?S)c
1S?^y>SSMmS^ PK>  ! PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p.classZ	`TչϹwYܙ&,5!asTBBȒH"!d	8ԥ.(V\hb+VѪtӮVmھnWk嵯*ι{U9?_'LFDt$HAEi}L,zP<>.x<O#xǄ)A>!zOS1)Oǧ3Bx|V's\.VH;]@r}^X }KJL	"0ǳ˘CHu }*_c)44F3ߙOkkޗgnH5}:52<ܗ`h_k=#¨ip`8lLaJBvkmjQf߈)KW)ǨȒ4hoZam0*cl(5ajlbtwA.y c.R᫛w,x|6nX2wG7V^kW%¶֮WkYZ]Ȱ%+%YM]6C?w];XrHtgljomh\Ҕ'\m[a׶68wl:ضvC<2FJ4ؓFt
׏lߒLmi,IIܸͬq]tP_fCtȤKhF/j3aGցT.ligj-F]顾KbO@6چvY#B7
l-UJc-F2&`ɝ-o+"?]\F4w{SýF3},Q}Lyse 3!"(tĶ.x*PhMv.ݙ𰜬E@ӗmKԖLWktTrth{zXھ`K͚;w.f]o/182ԝ^'V`gmm2u჆;[Sc
Cc;2
;3bH32L70
zߦa}?LwНawA~H?
ӏ'aiҕaCWh0L?Mt Lt-]_+az3L0R>aF
>*LѯP>*̹тF6dkF
aa.7Ѝ!L?tc<;
[D 57.<m7'[hR` =i\SW%GcVokV7lاaXk6!hI	^@%C	qΙ.%y#rG)H8'	S
LRCC*^vjKޑNCLN}xdLƋ;ԚJt(wg"w/G:8T2# u
V_i@{AL2k󲠈Ȼ#j.UZ
j(N<"nD+]<[@ɣ@ׁͣ^GnˣݞGẉ7ޘGy7M7O/B_G tWBoBw=%yVнytKmߟG@1G(m"Cc'QSG~0e,U)(+ˌgEj~QQ/GhV[Mbꓤ|
TŨ$!mfV!7!$Ӎ$iw~
,Wb;Iz,ORYX+mp.iݵCrc{*PI
?]B1zbUngpaП
ЯP[4 q !>pDp#_F@_F؟hI#Xe!r8+av?177-gobX5F#?|j:F7b"^x&l5VShj(b%QS#%51]PNn|1SDTbQ#,7jg+@L2FFm``Z<Q
A=[I*c!EŊ̨bnq68U'@H9X$
zBL^0IűI*Gs:S{JO3&{QΚNk+N&4Qb) Ea+cTe88kcTrj]E\!^8dC*&DFG	5::;}o1f1zB,COUK$0}N+,K_b7ҳHaB$yOO ,LI7iOvQ5|maݰnXp7,ec(Hu$Xs|]4jcECLIIǠ6OPFQE $,X4 sČ qmB3"[X&ia:=vQ0	̉SX}'=y,yS<Mx\-/4z	[dF&9}\?#\?3e\@@z}
5ߣjG:	/Whޢ?3Ng&l)дBdM}"vSD`tMjaqhUЕEdM'g;~xWfIW	H,tg
]Mx#unbAsL"f[+.?^{* ~RG?PLVDYbz?ڋAwRcIU~6a3
6p&b~K5'R(	UIL_p&n٦Zjި;IT-7Zg3{7fDCđh6#,$::Gی"!1BGdVT
!W9,S
+V,`sJ)&}{E/tW-hTʕl&e\YaYBJ]a
JazŮaH
\F+4VF0JX
+&%ؓ++9FRj%6'ʄc]it)+qeD(]a
Ia +,wXRX)
c+"UuaHa +tXeR8M`V9
)!eY&>uqmYxGF}v-8lZh#.c
 K_dl>R6-dؙlKYVv6;a/El1>-k2_Ŗ{
YȚJ5+*e[Ze#;OI52EDao(P@ӑts~q	N%qO+H50qŕ[K:<B}IY&~
r-2K\ݰ+ד.3"rZ@r!'z;dLOZb떊S	$]F0}318\.ר4Pr(H\#fiE?O0K-z*EI]l~b$=aɾIzKŐ3z*ѤZ*iRؚTJ.(4̤V]zLc5DVtFazIk[J,MKLSHz쨥R.QT&=vHT;lTT'=vRS~KJYOeze[juV9sfWMwT|׆|w>RL;2i؅(]6Ul3abz}鬋fIec}o%mY/(Ŷ!o/l@)e9lr۩\	6<2klD
]j5La<AP+fŜ(Pˑ!߮/8ڙʒJYV+5QHO>X{%.%p
cWS%!R"Jb.z14řUrlD=U*pI9J3h
H
ʟW}6GΔZ^qHu9f$1k.KY+j̹kdYSn p<E-g,\
˪̵=Qm0FCgdof)9d Z7qjm,cw w.V>n v5;̮c6ΑwZ^gbnu֝YkBф^gݗ@u1&u\"\g_g:JQU	Ro-d\>+x$.gGh/7%9n<'A( d" gpv Z̰k),)ȳ`Yg
0ڳP(ߖ$h(d ppl]@\}"  '=D5{'i1{VGi=;Nh{xO}gOlfOاEz=C`;JP~%ZE}`ϲq=[Wh@t-]gCJ	Bx}& >=(t=FMN&NS(6A{L5BOUכֿyc.CE&ӼWUIb;N'uz/o<JQ7̀%yleUhJn_6_P沟"25Wi3-d1gndC,Gwspq=Im P fNwȘ'Er8(Cata/Ok4jB"$fP/]uf>nzP1C>6{(Ζ*~[E|97wfgu<c1QmrҨ4jJvQx	y1:W^E|5B|A~tS~:qSIf=On"/K֕#`ZZ
k17(0t R-ov JpTqy(^5)"^B2@"꽀g@>`<f,!f=Fs>V>B]^TmϪɄh0C!YL|	h)oDVR+_E|5mut5_Ox|] KmK;xf*zUI$~
Z_@A~t4Y3_0J%׸
S8s[DЁ|]zU{LJbZ5q-.ЫL5O	ZTݣ=ڙ_h/r׹yuZ5 T̷Q:>@Zwy|:x][i_.=@J{֭or>a'>XA	qeY=%^U{.rXz%6piQR|/
}0<Keh?$<aCtW
UK*+Uo@_X`6;o}<﬈op4,0UE(L}	)UU虠X>"At=fe5 H$,Sk*	Ӈ0a=J֟2}UM*V*Q6wnj䇩G#4}_?FtzwOH_6d
%[n~D|(PG{p_j u&>S
f]x&r,Þ_UO/Qǁ'i6栿y&+CeNwgw}v5]ԀS{8q& -^:Gfe(L"?PK`M;  *  PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$Gaussian.classy\8̂.prQp TPP	2ɠI2352s)g
)KzW˼ZהT^{mzzg?{yPy VWS]SSVUp#:V>6ScR#jDת׈=z4]hF&WMzOnG|5bD˳`DmFLms#3i ݈CɈ!e
O=mDO
gH<8W#F5gyz:\nXjۈOiļc4dFt
-`y׉iFLIX!Ӹ`##Zʈ29fkd2_6"'?| TD[1kC2x׽FԹ9lE>
DDf>G)2MظKSKF'w,JͲOɾv"*V*Һ"ɈC]2u1GO1b~ezN䬏/I%nc=k+5mqZs\TU'xtql+g+h yz|$9Ru	I?p,J6FW?1xj$ǝ4"~
ägDѢђ[*sÍN~(ErNB[O*<Cy#ۍN5"?ψ݉hlDN{v~qlM mYO#!vdf)&^n;纻Sv
Oɺ޾I*{ec		Yd[Oz;͍jԡT)r}Mb<UJ];2ԃge ^5yWBÞ%3-Q@^5LF朽/լ#qslo|as6G1lM1./8N#5ÈQ5<K>yM̳ߺ5-V&\6"6,#fnl΃MAnR׽mNMmo#RF<*2ql\m*|{i+朓7rD}	F}jm?H}#<9vؑ-vcRͫ۴͑|^{dw|W#	K}[o$4K?#xaSJxzjsjd)?7uc_e`JM.̄7:nrd
{U1{=2u*s$0NyDmbsin$/`nRHpNRs0rD1l-vy[߸ujjuPs⫭o+yihC1a	h娝̦RKy^]
m\ozK=PkPmTxGu/!:xYHX/dgzv̛ao;jC[M<aWkC=jtG
]
fĤy2˦xkpilk3r.W6|<tqXYGT%5V|*+۽F=x,,V(	KF7=`9sK'e\u$ާf|1+6x#c=w|hHR/?sUDIHTxFkkC^yUd_/<ga9wlklMLQω-l-z;-O_[+׊ߝ(wLlJdC+*+Sr|8,1CGHHO7H(@̚R>AGꓝ]>lGLBay%\[JQRT^3Wߺ}q|e@rqF:TۜP,lcWQNFN32fg t/_57+8Y0++25-#kndV܂Y|Idjځe!yz|#\19EE":U'{}UmCFdML̜*Yz9߇14h"NY%E٥<mɮBGL/.0(&f`Bׇy IK<YY֝;wFpXX?q@#ZmWu{ӟڛu?~SXT
jzOT;y_pn{]j9::vQQ-ʻʷG#//6
:Wvh0x:C79OGT@H@PFHwDy{E:CBC'߲	0!%)yi5zg$-
58?td;G-S{A"}yE`kM}f&yz@Ȏ刄 Gg
tw>)_/;b`֫`up]{OhT{gpz܃xB?ja[/:(1>>Ii?^$NJ&MJ"}3HÇ/ij4 hHDA3 -5֨GVkkDh'рFCk4&hB4hNO 5Zj"њ`Fx4hOF0J# E	it"I0I3d.]	ht#ѝ`34r4zi<BPѓPAFo}KPя`F2k$XMH#`F,AOk&X1`Pq+4	Vi$FFc8#j$H"X1`([4Ri&ء1`F*n{5k#81Bca4	hL&8ApB#FSNkhL%HcY5	.h Xc&9k|GpQ#+h\("NF		~ԘCƣ75(%Ucmw4#(#&xsb.$`>A\D,'e.&g>I\B|.iBb>C\J؀,a#2&1`>Oؒ5s%a[*Ù	#/vb!|+eWk	aJ؋5~	c37eNB8psas;(c;	2wc&C8p2sa&s?©̃әo`V010",dV3&ͬ"|a)|Q21Ǚ	2O.bKyp	=§.e"\<M
U	W3?"\̳k1gp#f0?&pSw3?'p?K̿V0/%̯+_V1/7GW1Axyƿ%<}?	O3u3	?b@x <g7m_2o~K6oۄ_1#̼cw	0	2'y^c> YC#A∄?1M=	ezf:	0m܇KxG6@}I`R3do.)GCH`()O}xCR?؈6&Ml))!lF}b6)#lI[b?6ކ%žH/a{#؟)'ا))$>mJ}b6e)1A}=-{b_ޤװkُ'>l@hR{C}cm q)Aj,I/b)Ef[ >'1E}Iobm9(bű?r)UO}'Hb:)Yl3,3Ib)]b]SI4R8g[ ž3I/cϵ#>اϲ,$žEطX9Q?ײ;#mcenRm/\h)>pm[.|Ķ|R|~R~rs\
˕UjI9kl%˗-_!W-YFz`r)>pmnr+)>pmoa)>pmm׶Y<@K<hoZVX"(,+-f >L4?)Tס3 PK/    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPublicKeyParameters.classRMo@}[7qbZZ>)4$!ꡧ"DQPQ*$i.Ա ZT(`֤ Vٙ}o|:-,`R-(ↅeԻ[&VLTc&Wi+E2e`0XP<k1Ӧj&Ѯ`C42>bf=cDFFTe:r	ZӄV7J+rfw}6| ~Kmj3,s:A <4D6ߺb(d]{OvHڧjK
}s(hp%ڑ~nXfsSǕPEξq6ϰ>2:Eӌ?/j^?xM]A#w\nإBoC3.1&< 
^k4kM-0ۑ|
`^Slԍ#1&ޣƋ#7a)Ù!;<%`2bbN'%
Ef"ei<b]$ꟑj|\#{.G*-P {-kkPK)1    PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLASecurityCategory.classmOV78dakW`0hBj@)Θi7*1f>ȴoI}j0PY"?9s׻ O #FsdK#&L&0eࡁiֳJŎZvku-2T\mEq%qu3t?qbHNLn3t]Wv؈"G!]kN}7bŇ564SiT\O$WQ+
rm}bʯ!<.kW֖ҶXs5iye.lDE"92&h;GD{V_;\_R%+BƺP{n׍f׉fUH:MVtFi9A|@5GZ]M7i2mD7Iil<JcCKGiq1K&c9s?+Suy&
|SWuNqG#LIJ='9Ng)N/_fCt_8:˓SٮhIWmu~vR#E7iuyF~nhJ_D]m܉? ْ˷R8]";/ޒoIK(#!)4q+>9ШQ<FǨO;{G]}B8.$eqqKQθ6ERmZhCl.meoW)뗄+oǸ7F:qJ:6ihx*K|%5z}Sw"{PKrB    PK  D:U            L   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p.classZ|TŹw$9l$a ($$$hd!!<,ڇ
UAUڧo{wϜg׈{ېof?3O<MDs9:}Os~:H_6׸~oy^|w./^yN~ċs'x?xs00W'ɋ%TJMU?eot9
K7HvK<NiӐ3qN>^WLr,a'%00p֫|ίə儕KPܘhpϮi[Wr΂tFu퉡xMK@hx#?1XJGFƊPoRZkdS??4Iy*VǚTF~ش&V鞫?bHj[[;֮_Ӟ(7Kq7US'sw`.QUlOeqɕe,fN1w7lܺM: {ή)Zgw`Mԃ׷nliohmZּnc{4-аe庬a\nꭵ/ջZBAgKgd-4g	5>ty,̼nMs궎@]˚mᵅËN~;@O4lL;8gK'V'F[⽃έTn͇Wī]#ãmhwl]0ëm8u6aG?g(6ֻ?>^.&/:U1]<ۿaDV2{3g+¿::#}]B5
qwF:uŦU/eH2%ם6w\'>Գ|kw?m%=)aaDzm}W!ZM >DpbhH[ȗe')ΡaYUWaM]=˳m#
G8B.8m̙0υm`d+.k>he+>4ܗ޶/%5Z58mxz0RiIzؤS&aOޠ&=AO&et${cI&FGt&LaIЃ&K'L1tgңt'&>O&61,Ǥ|:1/d%~od,Ogɂ,d'C&L-YlV`c4b[;y05Nvea's Ix$)_bp(&_.2 #=[W7׮=7n>cC6Cٜξ⼎[ŖI8CHp;anj\`	A;`S6:4h`|k`fX39lCC	> !dy
NL4cGfa'OmY/l1(yfF ZvU'Pۿ0b[p  șkzovA 7p%*">D1,z	,t7%<z3,Y}fmgуa#Y?E =E}$zlI,z7=wo}դ&!/Yՠ?E }MqDe$<OH4Z[<FI4}&}wT)D-ɋJ*5hSZWSNsd()aUF"[р0̤Jê{º@	͠é%l<Ú̵49Zg'#\9['1ӵ7v@H4+Ø "#~La 5h>RJi-JlT2ZNML {;`$`	lC w`c$mbC
Wr FCjF{[4fbMtA%D NOO2}(}NNe:US:s*˩rt+aC7Wj摷aKJPFU0UՃG<'0{p@8d<;$tk!N_#<>Y_ '	+P8s&hJ8wo&m<u0m5lvH8lot*NPA5ADma|b2;T*0^a*ہ6JS^HGeH33^ ,@
ChDhA:hC؀߅-ދͽ
{; D&9z״/r
:F/]@10ݍW,cNXIe	ևvz
fY̮2 G`=-`\S їs7IՁѭnz8. Tn쀰`p^ွ]T
ʏ* *K&(Λ":sB 4LP1944F*B%ʁ3*hq@rp-\;(pkҰ9nmfk/0nr
!ǷØ'w5w  y/M# iHc?Ǵ^©S$:%]du	'8# Wo |7y:M/& UXX)S4w	N{SI@"w,ɇrTl
:J۰XUL{R^{.IAдubnFyWֹc%V5/%us4VMnXʛ~Ҩ89}9 $
/,zQS
+Ŭ6 `t9++Te4] CaGF
M&:PUje"*WJ5X5ut	*Wq8ꕨUHJ<pt."Ot4
=r.2(Ds{2KKL!&B
)beRH}i^HH|ԟi/#
yBjefW(9#iNW$dF벬!C aRjUUP8A3@6"[	͠\V
dfl6
͡{\:o<</dgl>[Bv3[el{ղoz)?Io4CrOO Miӌj<-yT#6I#ڮfJ,Ͱ&XgXg	ƛ'cPu4<Bnߓ[ /,ah8C8쐣"fTQVF˰sQ2lQyeT2*f,6S'˰5G%Gx8غ+Bȋylu3J^R~}Fr2R;5 gMd vճVdmQ6+LgֲK6].R/c?vdb$Yt.,P[BR
č, 9b`nDE/WnrDn#U9dH/g܉|lJ }!I8Nq/p)!Rs_8<o7o*9RS,Gf',MM0](h1$N#kZe@RQӬf5;Erfx<
=HȚeЙ<E
ڟ}hfRt	dex\utL׬>4˗f2钛}hcйIJj3u`CVNROk4>Fmv
}>Vk?Ɏؗ٧W>-Y`IY+qT(Oy: ̎U96U995W93jT9i2ra_hMoQbќ*7YEsܜͫrSOԪUJPcHG0OGc M0hsp!z:FtG@!]4ff3ZƘm"emꙮ~8n$R FhEp͘fAf(-d7/T MU/ybbnb9*gVn-cSgQdcUtq<=]v/vb$rC=b7G]ȧѺM'7MQ/?
1^OzhkJz/px,>( u']vÆ Vb5AJ#vEհns,.Uc5.v29Sڀ5o("V+mAݐ"N3}~|r)=+4@ًT~ ?6_vK\_췸OﱋH؟3G?֓)an'M
/l`
;w"$	7~OY
<WFmJxHm8RUB@Ut.; o,Bh:*8>P)܉''mI	@Gr7:G9;CBѹLI9F%J~ N^ɤR]/v)_x<RR99sʷb
v~o"ڑH@Ӣso-N>
@R!RS.
-H⨓r+%CV(0GG~d >zsEZf+"V<B|M{C#EmdGoꆛIK*XTO
<
HcMPTAӤ-AER
Ksh4Ini>]#-EtHZBwH5X|Er5|rnp"0QgS&hMf?IɔVn6_!GJE
^C`/8V6_z9	jKԵf+P=EynmC4Ok#6n:*v>5'Jvi{!'h][gaS)m%TS*8Gwt\5c`uɺu^")FQ릕RLI='}F>>*9W/
#Jѐp~8C=/i]/|̐ʋJ
j)&j18)o$I;0*vX(ocKF}&QaL>n.LW~q*TkɕSeI=E'Iw^SY;-󠈅uJ#i]^\(J:a]9ݜU˧W;Ol;Z@-x>[0\} 7ĸjɝro Rt|Y&)J% 1\.JtD:t\W_-H"AL,MZIz.>_޻فMG/#Oj?Vj+GƑ^U#'*)T($oy#UʗFrOfsp0ˠRzWIx_u=}+v>9{o]05hSUFTֳbv_Kā![P_JPKg  (  PK  D:U            M   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/HashUtils.classOPǿmC:tP2~TF01[ct]3JvxW_}a (㹕b{9_a)<1pPģ<f̊x0BSJZ|]/\}^Vbۖ㪖[SMO ٵg>'`^dH5`ncۆ
[U&Ey]:9ew
H1H9dRgX<ǵ1G+*Fţ>]oVORb{]M2s,(&paYZOSe븶4Z:R̕K梐0E^dXT9dSoZoP~ꎩ
3x˲Z-yqk.E:MեĦeXy7kH_Me(FA1cJCڥhe2}Oa0&q<uA07}օC&T(TC$4E߉7%&"4=i"&pX0@^0Tń ppB5/ȋDO+X 4֐I)idIc$#J PK2'a  o  PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$QTesla1PPolynomial.classUҮW|p!008[C; B B̭Iss^xR{IU]oU*9q>0
;cnggKJJr8
YAS͐?0L6jДrنVŦ|+|/i]'
*Sk?EGA#tT6]
a;Y]9 tl¥w`m+ػ7Mϡuo
wi[ܙrogð4Vqa+<CJ'JaV?]u֞i˟<_@`~T28G;u±Q6?J} ^7e#PCsYገ
{32e08>thAf3uB+x^6|h5|zqD'4G~wkn׻CA퀯_h5v՝5im싺oPDShNt#P#8ޔG
sJ
Wo#wVAo$A~0.\]
n4(>؆W!yjJhnVčרLI}^fjX]|a}G1gx[xzW݄~dt@`^σ^-&CT|*4"P)zGDĽ53z<5.oa5ԃI<w#͕gpN9y$B]N+27'Yp#;/`<4[R#4mK;_ςYGWxW.A|34[`ތ>kOΖ׮Qn~[
Th5JCvOS}
[K8O9p$|ُMG躭
ףxk~_voWfjhG ]*p_0T˝
:9kGVB1O`'Y^ZA?B\oNf@(	z'rCwyޡ8>'iUpNX3KKO?WAn7<&-	0
^3&U}+PҰ>oہb^,؋K@
PAV:|
Vo.xډ09ڮogtè:%إ}.;<[Sqhy8Oevb
\ՎE$Iϯ{s;/mۚu1d٠Eg9}SI`apM5Hm@66S:O¨By3q*>aa.jQB*1"!W])<l3
{M+غ{Fs2j!`] ۦT͡n=e+zGѝax<vҜxQXklw@8oZ:UcD4HFp7m;1"} c^̃;cOONx1Qvx'w @gvIN#pC
Mຢֲ7\K%z9'=/_Cn@ֵ|f.]׬|r֗+Q8vMX':o1\D0R&[K`n
nYna7ĂK>N9kAExJ^=5<ofuD΋վ9<ŻD>ܸܯ_zq|y<#/A7<D8W|oo@=W`YZ/>_	m)?%nDmwK:8"u!8}meht_=5כۛ	W
ty0
.7p>2+AͭwIX<'d؇4;
)PfQ5w_~_ςZ@ϦxѬFxz)Ċ_3P~XK#b@ptzwF'w³,U.NL=XFTvg,2?U];?3خ5o*]CJcПZG>hw:apΒ~0!Xx٢s+wł9+8W?
no˶Q>͌_?
!ڵpdc8Um/@ƽ625i	g`%CpuyrSe|~1	 !Q<oiuj)x{Kp<]z#̌_᭝S{#fl*@^n#l#²sDdh6򽰵X:0%쳃혒#xQz,eG`1.͗	=Xfa2N{נLݞ@[ntw#e#߮/x'rP|; q,9Ip<KuZvB'|a|2 TJ
;>cshavN0J/o
[[`,#S~'N:Wjosf^ĹXzqu%a6t<wLIQ|g{g&#K'ΚܙM-tbF~Hӏoz5pAM87Z݄쒰N
DC&c.+4Y"w%cTbX1+#-s^8gѣP#gy8"$8k#zPГ~ sZK-¾7
6	ka.JY}uaˑ:rG+"SpzZ`6똒/f2*
cRyE0u?zcnM_=F`sK-,[HK؞3u-Jo5¦WѾЧ&섷sAGyLI9WJDp1O/- {2]E/PR%XTlz;Wa0J$ogmMx.\o
{ǇAWN=t6bcB-0
.u8k݁Й&U\Eq*^*'Ԁ9cl4
h7j?g"S*ita<W@ۛ]gMذE8
[߲
PwElT5gv.	w&ٖ6هB>okk^ &?oӳ޺uSw}Eػ6Ss$[::c:U]U_RW0+\һgiLg?ymUexc~aT,є
w:Ǻ"_8#`͹Zca%wyu>pB.9xӅk`$͹ʬ_j	pN'o!-m~{>ٿlc~	.g̕9qK2v #}!k#
G0:	<BP0~d>ZEM+Ƕ`^T&pJVx^zP(.jz }3fFeGZ<4=P)URe*Fg ǜ`}0TW8(ƓYa+w+\5ޘPE?p?g#7qEZFAcsjx,<փAM9-[':Z)<;
vg[yv
y
axe4Uʋշ#l|v`<8	Z(yb"PrZU+@{C4<R|{AX]}v᩿f=\}3PXqf.NlRˑ6̼o}
% ؼTӯؒgy=|Q	.?~3߄#w\	&O.K#zxHڬ#muƦ僣8"ԇ7~ (=[K䃽٭3<
[|Vf&%Y"j> #V2и3opD21\<T`+&ӂm}0ߴ
sġesUndM,ԋlm&uPfȿSx0@V8t4qd/kvEDٛa+AYx)d,}!{e}<S]h1 a1Km.s8y7͇Z#~

=3NWӟ4Ӷ>O
9]nGnЊ}qlps9s"߃/TV9o%<Kxfl<6Z4Z|z}'T'
<Vm:WN1lpGIׯp;4wU:IX#p^{<
s<t)]k!p0b[^ {+Fp\1Ϛp@y\2O@]67D5E=ХÝ\Ec/8Y3 5uj^/cx0tlG:q48V,vca$* [^Х;v^cz#0mw07
±sYlxnӟ%S&'ql]ե8syg%7ԘNW+e.+u'Ng5K]+YBqlg7Om&.wǄk|<fGA9flU>9#IU;pڙs1-Pa5Zֆpy݀Uak	B`p|Py_+PV݃7.U	_5ʡM`^n[1}[4陵p`tM9rê %Cf&Ͻ9׽oW Xh2+pj~1zsL>ƻ`vXՠWa9ƋX:olygfak	SY.3*-N"L?'E	ӯ/mPUWYBj9;L8OF
a5ӕ)th{!ز_3`//3 +w<W
x=\}p!9_z_2~n*u{L?w*oݎwBv8
mm \Y +Cm)1\xn*8tǵ3{`˹)ܵr߁R\q
j|R@)W]('Ů݂pkɵТQbaD$jhK[Co+OdbM?|\vwdbirmood
=eRMzx~kr3ϷP"'g
yWNa}We'B8
G|$U887
oߟf;ĐD~m8i6x2)&ghpC(KWtJv\Eu&
۽YcrQPT|@="N]B/x;õPkWD>;4i\t;=(<z<?u%,:ѥBp
!"vpg9}#45%TP$/tܑ,h٩zu*:Dm
_]{_q
ՅoRÁ/!h2wsz39<ew>D.w*l?5^3g(s'9(>FB9N2H-p<}2We[*Ώwa}1UzY+Kcy_
	!4L"#;;k3\[^g7Zݷ5-L[CPrUlCM@ ?mP3W[n}
ｚr([z"X醿Pex7/7(N
pFO	[U}L溻kv%ej	Ǧam`.np@ԉgRf6|~.\}70| B1úV8h[0ufǺ#Xs1Fai9M9i{YJ{};Zuk0H`xA;9f\ӗA[ԩ|}.x"ۧ9TB`Oxx 2ɩړ/e_"t2Y)8!vpޞ31(.	oe๷%"Jw@И\=~ZVjc{<b1\n	=<8v~[ۃߎ1
d遼/!4WDD唧-=pZ~|"7ǜٱSrw(3'uXsr.ڛ!?#ifi'~NW dk#8Qbد-kTvۂMZj#@۪ô;BU<YG./ 6f{hq=oNKmDڐԟ7_nu3BgTK_<p>Ek\5[=InVE[p.=ohT2N#3qA<_>ٌ@ڟ9q&]h>iZt=Oz58kƭp;
F>/|$0%9X1pV[YvD(\}l^ j^_:]+:<3pԐKک8梿Ie0W-F]acX: _Nƫ5W [=0ŷ~)Bmqvt1{(s`<P;s/Z$T2I=G֪>m{Nvy}:G^fhq@^]#zPUxfGo@G#TWބg]jfm\JrQ=+?r2Bߥ52P{
¿S+5ʿ]4.c	o]kF\M-AjȎ:<1Cc>1|Q:c%tKXʔ<ΪpVzO{hsv9;3Q`ͰLثφgyZX3R1cOcl)'Ag|HW7}.{0Mpq=3Xѧ,0]<rMRkP$c?c9zP.o	J{Kk؜\z\35}ǂְj
稦<=!X,o;/rѲ5hתp\x&_Aٸ[v=߱/=h6QqNwq.d2_'갭Bkp%9K6N7U&O90{|-,܊񄗭`7ُ`~Q3p7Ղ5'ׇzšy{>c>Yk]sSʥE
Ӄr0l?1g>5IP}n߄%;\ qosn,\v9'mPXNDDC8=GDִL}T^В P5gosqWK,ei
pZ(kFwNw>>/@uW)ylO8xKZ1?5Um?^<rB_m^mZQx, eṛ;KDóO\7= GW)}goGD!Y|T[OEp'^#F}~dVxz
W0l
ᯜBdPG8}?ڽ` 4iI8~0f>c:K`[2B;_Gxr4epI|d!
`?W;*=6sIGc̅Ø8Gb8k
Nc&8;]Ur0/2<w 3gʹ䇵oILӜr{[Ja6У\9@DS\>n|@6Ӷzi0o_OU~G>k8nX횺	PlŔ4/ӣIu<sGsd%K	:8sAk_eh`#e=x
wK?gϣck
\fF(NGƻ-w=~a0Vq.O_@l}+#*zNӦZygSIކcO~LCQMA[gyZa6Ԋ?8wHq]o%00.],e۸SaMaU՚׉L6\.
D`@V`B hߘ+<3?؋sў+Ća6ixE5 g`IȌ/.K	{noˇ)Vk="?P9_ 
<N`_5`ŧp+R.o.ː+
T$װgJ\Sc؊Xa]YZ)=88xI0o$<  ];qPne~QqU;c|25/ux
摽L
ø56#orN[&5d;
/+G%d
k:S;KaUjYcō7ͧ_*j|3~}h6_݅zZtz.0G~k䥢숺>T核>1-)!ST|>e9I{SFf|}KhӮ+٣6}wM-PM.5ۥVLgZ7!}X^=}rY*O6TMNc{$$v<2_p)|_c7yڿ٭o}i^yF_?{H߷ݷ{_~~O1	db++ȥ,:p6w8[Kvk*
zM/k׻kLѝc1o}ݧk\ޞbv;0ol}zG.+(~e՘ޝllp:8z99|h3(gZ33YYL'_;xy9QI3n]pcxʬZq	כOkLy?ݢb+#:o>| Y
b&[ڱGB|NjTX|53Vk F&1z젼uy+#5T{
{T.KVQHLLc6RS*e23rfoQ⿆a˹ЛrfbkQp:3;y'dE1ElExBoq/%3(˕&~a4CAcKTXi䈴ujHkQ&7ja|Zik?;?#c毁#rFt0;
wH;wsǓry<)___/\0%#9.pȇF16Qxj/F70WHjLkc:_⭱M8y$Me0iS!ӡngVaO2~3Ù]|1IF;t钌yMk1Lˋ+m቏0|ʧ0Ӧ)6~)K4A2"L{F^wupHQ&7xMֹ#"H^Ui.6匴EqM63>Q栈tDZ;P)C[MH+?1W$-Lc*"i?VB°>3Ha3қ<fFɨbf6Y[g>ޛd;?a`ؕ`zoݨp
8XgRʱi+*31ڼ{>xJץr|ܸ27wJL7r|v|8Կp.|LTx>2omr7Ei
OOHLLX#mwuÓW'{T"I_E:Y4)b)67!bV2
UfUY͈= >oY럩qxej"ߋ!;Q:M9J]'QsH$3l<
 k٘Ix<GxF_#dWYsFS-7dg?wRK^Ͷ)3T
aL;*H3f#N#?/okt`gv:u}-:SΨ\Qѹ">ZWOwXS=	ŝ%u>Zf7ϕ;J(qëz/Q>{03p >z?Ǻ/8`dqJ=N88C]ϡPXs},<Tigz.PP¿S.6vޔt.6rya0?-߂lH\szE}5<ܳ3ufk
syZ_l}i4`mf~eęc$siT*7r)w::^Fyt{<%\k|)]'zNx?Ok7ۓΗ4RɖU\{m;b=;bQڇ:m`k	;Lu3_89l;#Cv>ٓoujheeJQ&xV:L+Mf6+N3N3N3Naed2uYٺ,l=VV^+[6`dr
YZVdE򲍴Mfg*6UmJTVa"lXEFYئMg`*6UmF4LVlXfʳfU`ݪ6	ۜV%ls[U汪kUgϪ6UmۂVm:l[u-jg[jՐm	ےVc&lK[Mٖ-k5g[jՒmۊVkXmVڲlŰbc[Պe[j϶ǶՁmM#ZV'xulZ]ֳoucζՃm#'V/MMlY}6mac϶5mkk 6 mlc!lYCZmo
cg
g5m'kx+mgk4.]lYvƳa}ƶ5m/k"kd})lZSoMg;v9ALYlXԚv5N1Bd5_d(kHhkkXk8kxkg2	r
IJ*)jiZ:zϭ
"3"M""s-"s"m"_XE[;Dv,v|eYh}-#+'/: :(:$:,:":*:&:.FduBduRduJdfV6v;]""_[DXEZWDYWE[DX?~9d]9l9b$rԺ)r̺%rܺ-uGuW)ȷ}3C#scﬧ"g"[E.Z\^\^\^\~fz#V
O"7?DnYEn[DXEZI"?2DRIi )M1)RѧHDrB#W%)+R~_ID_
!}K#!;H?H%}O*R)D?J)D**"FT&t6RE2:Heu$"YM*TVQ/l>RErH
%"["GHEF+I*h2RE* TAє
"UX45"iH"UL4-HMOhRD3*-T̤ʊf!UN4+HUNhR$UI4ʢIUCh4jyIUGh~R5E%ZTmB&UWzEI-FhqR
EKj$ZTcR&TfeI5-GhyR-E+j%ZTkOHDheR1UHJ*VIŉ A&HuM*^΢uIuGh}RD.ڐTFz6&K	Ѧz6#G9-HmIh+RD[(چ ѶƐ"ڎPXR'5L4pFv$5RQE;-څѮƊv#5N;=H}&ړ^&&$ڛd>%5UiIM@j@R"5St0YCHJj觤#%hVI	Rg5Y"%xVj4)CJƒDqj<)PZM %VI	$Rj5ZM!%VSI	4Rk5Z %V^j)!MJfj)`['%V_p+Rn[-"%VI	Ro[-#% WI	
Rp0\"%WI	Rqp\#% WI	Rr\m"%0WI	Rs\m#%@WI	Rt0]"%PWI	פj)KJ )a:HJä):JJ «Rxu@^$%WH	շ4):CJHΒԫs<)^] %Wߓޫ)!LJ櫫)`_HJ'R~u_"%WI	Ru_LZizHZǤ	izJZ礅_$-WHկ5izCZޒH;;i_'-WHGDZ
H&- -&iῶk;ivk'ivk7ik/ik?i ik_i῎ -ב:iNNZS딤:iNMZӐ(_#-Iu_g"-יIu_g#-Iu_"-׹IuMZ|:?i.@ZB0i.BZb8i.AZKR4i.CZ˒r<i΅@Z+OHu%]_W!-UIu5]_ -5Iu-]_!-uIu=]_7 -
Iu#ݘ_7!-MIu3ݜ_ --Iu+ݚ_!-mIuinGZcIu{GZ;뎤i῎'-םIuݕ_w#-Iuݓ_"-	7iCZ~?i@ZAz0iBZOI0=_ -#I(HZG1z,iGZǓH=_O"-דI=_O#-I9i῞IZg٤zi῞KZ/H|%i^@Z"-I"_/!-KI2_ -+I*_!-kI:_o -I&_o!-[I6_ -;I._MZ뽤ziOZ냤i>LZ룤i>NZ!-'HI}_KZO3,i>GZϓH=i῾HZ/ˤ
i῾JZH:i῾AZ"-7I-}_!-wI῾G~@~D~B~F / ׯ+A_
A7_# 	 	D h appppA?HN#A?RHM#
A(i	# G	d" GY	d# G9	" G?G#?A?
(D0A"?(F8A?J(E4A2?(G<A
?* G%	T!Q G5	 Q G-	!Q G=	4 ѐ G#	4!є G3	 ђ G+	!і GAv?b	'GA?:'љ G]	t#ѝ G=	"@7A>?G?A?Dc0A!? 0	 1 (?FCc,Aq? 	L"1 S	L#1 IcA?KcA/'%A?" "	,! 2	  *	! :	l  &	l! 6	  .	|McA?O A?8LA?8N'$q Ƿ?N8C,As? HA?JAH:A?~"q -	!q d
qL?)2xH1<!Sd
L?)/d
L?^)+2L?^)2xK);2L? Sd
L?>)Gl1"jN)i2=Mɔ5ҡ&3ܢ&3ܣ&3ܤ&3ܥ&3ܦ&3ܧ&3ܨ&3ܩ&3ܪ&3ܫ&3ܬ&3ܭ&3ܮ&3ܯ&3ܰ&3ܱ&3ܲ&3ܳ&3ܴ&3ܵ&3ܶ&3ܷ&3ܸ&3ܹ&3ܺ&3ܻ&3ܼ&3ܽ&3ܾ&3ܿ&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3&3 '3'3'3'3'3'3'3'3'3	'3
'3'3'3
'3'3'3'3'3'3'3'3'3'3'3'3'3'3'8v?Eܱ
P_)Ӑbv%I)\y'=y@~{<%1=yP~ϓ{<-q=y`~{<5=yp~ϓ{<==y~{<E1=y~ϓ{,<Mq=y~{L<U=y~ϓ{l<]=y~{<e1=y~ϓ{<mq=y~{<u=y~ϓ{<}=y ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////G?#G?#G?#G	!n~?돽?~47PKwsG  t  PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPrivateKeyParameters.classR]oA=YJՇ1B	M
4luKgg>hbcI}Gw(~D⃙ޙ3{1M&LL,h`%UIXYdqD	5eH8Cx+2f`-s !n!}<u6VY}0	G~O]	wwl`a3U)YRɝ8+U]C[}i7v~)2xG<9PE1k|_oHw~刁#{{־{-硴~r&5N!g5lJ)_؃՜vd<P}Ds6h&ٍ(S?u*`?֡6h>vHA%J
)yLJ9~=$4#&nЬ4	ZH>	̓=MtN/f>ՏGHA3OI}Տ`"~̳@v	i+H".`
Eɮcn;IYf!4T-gSH_jN<垄ZfHŻo8PKD2    PK  D:U            U   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$Gaussian.class{PSws9y GCEGC"bB
	$1EmZZvn]l;;uv붳vvvmQ̞_N2{N~& W6Q%P8VIxA
Өfc;}|?&nc-ɗ~3R]yq@_+_mz˜<A^݊7Vgӂ+7@.+',L컇94lb9;o_6\Ɩǌobۙ3C\#cw*ݨ	vּu3`ח.{\|x\;|f#ʟ1~ܖ݇C>n}9
KPV?C/n`j .݀}Ch}K3/Gԯraa
2
91uF5`~	qCˊ,.=\ވڍK0.+{9}s.;Ӈ#sIsk[0ȁTNmqacwՌ`Hp"iH77d\u
ԏw"
`BVDz-Ĝkt&=υqks-:^[0\ݽz	C;ʗ+ޫp
oD̭Lgbb4<GcWJxQiFM]*d@kz'nw"?UcTZE#4k~UEռZhuHPLqy\`f	d&oSJYooiu;~]SgL5`wco3JͫpVoi8n{Ak
{]Bm8:v49ngip:[^C[@bL
쁽LL+{x}8}&wpV/9
5K\KXm4,
+R	̲\nyveu:}N1Zn\斊2p%6חɛm
~Oϗ@2(~Wm/&S~Er
o,U*~b^ ~V!58=TJH౻CUr]"\TMR/')IfT1Nqx7Y<ʥ=c' r4j]qzM=ZdF^XulhTɌC0.YOV5f}P@׊>Oo#GvU͸c˂^t:|*:|H݁G1/ƬYz5|v^1FP3AY@80Fb!Lñ0A
Z u8	zp2l$CpnUA#)YD[7H@/A	?<c=Uo ŏx*E
bGN*MA,DiX%iYų)#!b4lDJbuK4D`iD(B#dQ0JeGP;`GQ:;2)M,6'hN9l岙fͦ|v9TRGcYcx&E4Kq45v<h*;h:;J)TJ3iTNl	45A2`gR%[NsYTŚΦlc+CVjXgvղմE|Z.%l--e2Fu"g]B
Rr˨#'[OY;5
:6
I+fm&"/ZٕƺIƶDlk$QE@$Sɫh:;i5k#9Dk,6z[n7m(ݓesBDQ(ۣS^ hzEFQF}IzR?<q	(_[E^^GWssTPKm
_    PK
    D:U            @   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/PK  D:U            _   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyParameters.classuPJA<<&1"
ޒ(9)Bb!CnqXFg7"x(w
"D/]]5=Vy8%PѰd(.~߉=|4=сOڝ;e[u\1SrU|]N/$\u{)GVR
\wX0Vacи|.HŞ{=
piEr_L+_Y=(ihH̺S쑍yJϢʢ}9ʕ+XS^XFԭ"PfgX?blSު}PK`8    PK  D:U            e   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyGenerationParameters.classRMK@}~~V$(xhtO*"XUۡDl$B"xMzz7a
.VȢZ@+6j6JOHEBNr&B\x*Irq\&j
I]kpٿ$#1$	]	F!CHw|k1r
RPe8l8Pt$[_ŧ~'r3?9mbb8k
i6"k6Jl26Y0gLk/`gXifu02J3\	÷$k,vOPK(5C    PK  D:U            b   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePrivateKeyParameters.classVSU=7$dYbhUVP"S4,۰e
S_>:L#j!>XA!;IΗ{ܳ~o?y2eB"0% )`Z7ebNKKъdD
	2:(oK)Kߑ-r-p|킖\.\c`6R[e6
s[Жo|ݳkQVފf]n%kbR%h)xƱ6*$N䖐eI374ӻ(0r`C[,{3L5P2D26O9LϱO&HY6:3_.."_e4?O~B۲WӼ$ܒ'yjYd`s4R~r:H8	e蜌6a_'pfop&TF:eW7X޴>end\s{Ƭ!%QxOA*8#Y<z<
^qA
>
paiTaaqp\WG?fPZbHAޔfjm`,yV
E?h/:@~N}^d־sOs;r~=:pbE]հӺk4vlSVbj)?U_>yiiD\+sXpĆ!,
қ)zǓ@_@?lG*=~G*@~ǋ۱oV0:/D{"J1zzuVRcRa5@Rc
"@,U樱e8"?$0@8paэr ӓdmxI\;*}K5{
ڶ;=Vё1ᲊΜA0\EW.	Ị\,g}!Hi>eH-Αh{#OeIF;N\&6-Q5ӸER؀)~5h4ǰ*$c^)ueWW"ul凝λ5^Pj~3+ڀ~A:M~75\OFPz7o4F64 SMmL8_PK
y^  
  PK  D:U            b   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyPairGenerator.classWWG
,mZ߅@0J Jeݸ٨=9ؿ{zg	&ν3ssGf<T`ԏgS0
FU4#E9sI8rIR%5%%f$xYAZE7(b^Qq
k*OF
fe/ܐY{1Pq 7RqK<a2~a[pu+;-wEц<飦!tOr
m'EK/"Mz);ksÉK4&,pװ-N),G-N͢2oMf֬Mv/i]z1R8%	1FaM㾘%+$yJ&{zg|Q{V0t(2F6W%G
^4IcײFnՙ](
awMsRC9TOR.o%x.bdlLE#	ɳp
"VA5
!8
p5ʱ!
Ep4q
%IK꾤$%"'꩔\$fVdb2Ԥ"o0Dj9qLH7m]|C
c
S
ui"dpi݇_̘K_+NcYZ~n0ط6+rZ&37Jՠ<
8&YCzO2]Y`<5՟TbTvZjիqͩp+%fbfШU~KO<.-JI=3S7v>ϗGvꎠr˶9!KQnTr"4\_
y[s+R+hl5<Ikqb,jBAPxk+Pð9)rfޟKjwO=&sdv	'Wt,e88^<!vU6MwB.'|*V
ǈ*ۖʫeՍF@-?ׇ$sh#>Yݨk_'ߧtUX{hC A}^1M8J.]M,~}*I0fIa8^
.q%r@/4;ZEf-2Ӭ_z-h-@oh.گۓb=Bmۤ/@GG4*5Un<}+tO'ogVNn@8H+\Ehe;?hӏP8ѝ&El/cG]qx*wG% ;#o"-i
,Qj+cD ?/7w$Z;y0q(h?{<9I("gi
ktԜ;Vޢa<I5L	^#PK
~  .  PK  D:U            X   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceParameters.classoUǿnReZ(\AŅZYgg	E4/`cC-1ã>/*~١7a~}lwbx5	
{+;$V'M< M4G^Iz8q$>ǐf8c1aDC`~ѷ5h
>ϭ44MDr2pƆ=gBC]U._kMXf5pD'*;{kvУ!tRClWEᏚE3gRlg
ϣNuiЬ=bА)>OFFy#D0-Cg0&Go-_9h;İeyئw#J5h%s()lDN.iHu2v1RX~T+7bJ`{Kb¨WQU(WQN`@Oa4kp27p*N94sհlU#<1'ZT̤#ԏe=٘)r38BƮWMGj\/0LCհ1kܤeEa3O>2.<64,l0[R-xcNNI}37<}q(OXXc5f(/ (Xvu~ :X׮kv]v-m>5GaHd[Z6&t!%lDT$)DDЧȕXVצ+SÖ:ȟutkl
߲I7:FRDѷ)AVGMIN7qp@v 5tv$Rtiv!M{	0!,0#$5N`/S0ª>Ϣp[ՊC:DbдQ.h=ʌY][ Zw<<BG2hpܢ芉.,+#mҶKzH`=hr߀.3+k<{}؇#	SLX$$(̶ۖOW],At>Yu_(_h`{MP>2eJYD:`5Zٮl:F(XE`:e7;,,|??-q ?SMcK5S![ƇРM3[!@ul[m{sXOsAiro]JK}yAiznPKQ  J	  PK  D:U            ^   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyPairGenerator.classW{wE
}lݾ% `g@Sj[!]ͦP|_~ϱ	ǜ'9<٤$`[Hٳ3;޹;߿`~X'%HQneip/cԀWL'ا_PuPPJԠ $hpHD$@aG`&*Ä%8*}\4hFd,1MR	-xVI>%x^}Ai	g$e(0:
Ռ{[7#kjwTWuQmsw3;-;Ըcp7xDՒ~Nո+w6nr[utt8dQzC:Շtnu[FV!&ZZ֝WJ5;j'%ubh<h
qN] AF[!5ar~aeכ[Dk
7{+[&OFIֵvNHQ#a53\Ekdu[r5ޡYs
<.>,6AT61|qdP
Z@mخqpNxElT*^SpA@Z+7NPo
j:dX=9Q
ވA[oX',R^iE)kRoT5zaSP=+ m#]}C	)(W|KZwX;pW!P܎&7/(߉{m%%Gb57%خ)Ļ/rs
aK趽Аƻs/[U6sYۊem+]b`K,ɊiI7?'j\VZ\(yZT]	4.BY+1(uJ͡XqXdֆ-Qb%+^hG*YfYNPkn@TPXLgj6TM5s߽̚W&͊MNsuòigTհMkWB&6RV6i
;YKi-=8deEw]6]['GoEg
	!>:cV^S<f>͡N~	9ˢ,%=1
lgC#	C̡#TȒ͡I\^.弻SȰ3Vt洕D*[ލ(ݻ<^,eR6{-8F	Q{Ob-t_e`X*
$z)hn5.M7_.<nOw4+	ln!Kzٛb1leB9iqK3(`QFeחt'F4&?E\rg]^M*/QRIAEmE}kEc:i_@^\E:l=;ЊN!LO3w2I/rwZ;31#!D<4fv-IaVz
1*=)
H{$PRw՞d=^TXP2X$gU,z9Ǆ\SBKg26S7Pjz<$\<@CK<4ڮ!Oq UhAʭANs
{p%.qsp'p	pwş8G~ŞՐs;o|A.w쎞@#᱐P17=+(뷦WI].\qALeTPK^8  ~  PK  D:U            a   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePublicKeyParameters.classR]O@=-]TD]XDh (l6|(!0)%M\I$w
ه
0;s{~xe%KEEA:fUPS\g`-:M:)vg-=(P\t܈'n$OxK/ncO*tl/T?`ǒa|8Yd{!Lw4޼/Maͮߤz`~D@Va ˼0[GɑLe^9埸q,X01fËa+PJnᶅ%L14)sn$d^;N7(i64򹾲o?1G\}PP f[j#
E:٪s0Et9c;&	)(@D$3C,ԕd,S9?PK5%{R~
4_C5Q>֮~uyGPK    PK  D:U            \   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2Parameters.classn@'8ԒPh㴵TVD*){Y,$.	B̬L+?ffw̡C=
fŮm{b)0.>8{<{{F̏;~0
.xDx&0l 9Y$\QF\DtfvEsmr&pE{TD"28={,fuDW]{"<]n{
馋Aq%Y,F٫4Y
^ϴ6=A3˓_Bt!#R
/B#EZ"[Н#3	Ac1bfiY-MŖ$1ѥxZZAA2Ձ
t%X]Zyx'D1O@lA°Sh8K<d.TIDyZKi!*efE{ndFQ)mS>_#wɦ
PK__    PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyParameters.classQMO@}[
ƃƃ7@8iue⶘_i1G&yｙ켽haمJT,
Fʨ f x'9ҧ҉&š4ig8-.&jD;
xOޛ׭kt!>+SP<
o^cěLXR2cmߨ;U"	3@Tyَ?;^
>&+qeq`c&Bs!SU5P
9#oI.mp,PK[T.  ]  PK  D:U            e   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PublicKeyParameters.classR]kA=djڦQ7+PTABSB"8+Q7j
Ƃ?%ٖ>ܙ;瞹sO qDU`IA	+갪vk
l0VV`D<K;I^b( {ND{A,yC_z)ww:EpAvws}#OGɣ2cfptj7[vTzaBvZcWl~{a zrOd:0,2<6t\p)tx%n$d\Uөٯ&w=}TGϓWi5TiiWR-,l4 DxN2eG[OJ{'(PB+^NAW1Y'KW>V
]k8a
'P+Ǩ-窫gEc\MPPKc    PK  D:U            f   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PrivateKeyParameters.classV]OA=m]WQQծ" BUD|.cYuK>A+F -B,`I̙{g̗o?KPъ*JޮJ&ẄA	CPbDM9rK(n+H)c`=zO,a1f]h܊cVMԷQ^2
[Y5Jܟ7lvQ<nLKi9w!Vte>U
i[-%%n9de-k	Too=	22Cadf;[]ܰS4UNq(v+	,ͻ[)lUa¿˰+L(tݐÉv,ĺ+'N34!9de9T!I'ɝw+)5/qHF=kbJTI$|=Y4&4GI
q@C85E#365W.p}:qL,N3vLZ]d*Oщެ\ε~gپ3	J,ױLn慹XoO|l/yYD+Tមq]ǎv@^?&8Iw}tQ"mCo-9A$DrOJA֧Nvѿ>DI8wtC #+hyKVsZUWg?G1#z(`QCH!=!#5>A}Dk` DCa:::LBC*CLQYZ3a 3<8ӫy(w^g6³kԮUj{md/6
G4P=$4RǅMFnB6R_7R4R_^;PKTOqJ  V  PK  D:U            i   META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyGenerationParameters.classRJA}=Y,&<	zK!)"H4"#w:E%sG=C0ăRޫ|{<(*Cv*p|&|䅮Nr&BF\hxܑd[$tXR~G[0zVD|s:h2ޘ}˥#[G
zc9PIYqϲ3N%%sVAs,h)d2zKzkxlMhӧΧ/5w*xxkxJ8d+"j:=>|M&
mIPK,`ΒI    PK
    D:U            5   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/PK
    D:U            C   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/ByteUtils.classV[L3{aY`vMl,
-	MvfŻK
QF-W+8Q]~H*N	QeU+U{TQŦ93\Z8s.x9haˡ]q:e8!^*vgot{pZn9yz}0AT(<K{J;RTU@ wd@ew*cL[>s8uuL<5xEނ;mN8"5<8{OZD:9(i9s%ٌⵃqe;B.,Y63ͣ`HRzagy~b+
x*c榗hSٜfE".Kd3	`eoW _wt`KwJi߉5QHe3֛niGK)q`ǨsDlCDډ7;KX'S2 _H'<}ΚY\ҏxʏ~.9`G3^%F<-9sU&nŐ&y*?!rOU"$33#d&_C&h܏C8,p$\?tVD}ںl&h=	̜l
eAvf b~5|gQ";Av#;yV,buy򾩦h5H5!cVʖSG&_03W$;*
":Rd	S񮢒%b uY*rvrDl&NB673;ߕɐݴ[&vZvd/q'"#^^EN
*	lr8`G5&ȲU;`
 WJ0G!
:Ke;?g{ʣoAnsnGoɉד7Qᦷk-3CD7jwit/,B1qUNR6һQ?V} "t'T],powp5E01n%m';|>NZB@Y=EyBOJ@]bh	wow}wvHpds8IwcD
"-b^hAD=8	5
) جqgLR{MeI de21p1m@6@_5l|3kllQ6<
6~c_ElemxGfKvGkt3YBetkn*WJE<ZpĢF;(Q>A||n:5ѯ!9oOHvH.y?
4]u]Rgz3e]ﻅjAՄ&>B{
Ό.f\DpnA~Qށ!\͡w:e[=??my>?c{B*KQpCDMsNERUYBB㯫BXbg>'%ݧ_(P~".ʘ$
B́pi?F@=r	xWcY[ّz&b(YxwŻH._]`~lzv@!8+4I]h[f&].Za*&U擋e&Ig!	-\bU̩%*	vP)6)NVh	V8p9l*$$;HUwznwY~[S"RB'
\DJ|2fհld
eSZLq/NʄhAGPĕkT'ӡ>5GRk]Ή}6jU$3&֢^!7g9l-:qd$~-2҄T%L1ҵ{(lUcZp#`t&AE1K5(1]F1F%4Rë`}MF᷹M#ȘV͞HN)3u+VH[4s
Ĺg{#A+Gxv
a&k)hY~Y3jȎ{Ֆ^Q Æ1Ќ8?2FS8?50!0Gqcgˌa~#Hr0,HPtS[Ъ07;l%l_WPKq  B  PK  D:U            `   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/LittleEndianConversions.classuUMoU=cx7P'I)jJҸmBAdA$.]'$ tWY
+dEBB`
!H	*<8%x}{w&Ah*XX*prHu*5+df/	+GKILEM }e+IbȨapHr\$C"6!v-Zd7wC`d-Ȅ	S))RE')3^-'rBIp4W.U.沥\0}ޚfx._3vKT<U-O)+`yޓUSTɊOH[x2u>.+p!<v4F5!@!*)50WT2l'vǣT.4{~Ԫ tUo~f%ÒΰRs>jElTk-6Qde]1ч;jW7zNUJ wԑ1
b/Av]
]Q!dcs.o<رW9:n8^6|
FG[{:$%3q3Ap%<WOyYv$q@pƜk1o_!o]%~ ɲl³؃)ܴ$o3\r([*}[P$Ykhz=˛x(%ƯS{C=dۤsVٶl\&U&8>$*م1ý>_6ѩ
KhaÐ6|aCw؈H`p'=,or|ƽF^爿!!Q/um]3B2Zr*R*6갯wH*CQlMp8nsV4ָ@9jn6c^٫y mWP4eIUW*|ikfZje9&t|C_=#F
\:B#t7ē۶뜞?Fs<5}˫B+Y֮?=8V'~Dwqw7)B.Z[=O2PK$c    PK  D:U            \   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MatrixSet.classRJ@=Ӥ HPѢ`RuQq$15Mj?J"(>qc%pɝs<^^la)8&1Ybة{^5{&BG+Sw͞خ>w,a\V6x7r CXƐ(ٮ1k[6k3-{!Sn)7RdKUVOj\V^7EŎz^ã-~U"E
m򞁚3$՚
 C6j;ܵ%L`me8=}C, *6I3GjZ=Ic92l-DI#a'fbw_1 bRg-
bN`8E!PKRix    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Vector.classWkpT~ݳ{66
Iv#lD !H rf$YHv$$)-jm{V)e:G!0j[Z{vimNgH;'m%N&9综}g^>`){qv/ؑ\.^İ˃^^]"V	/0||kE>zb˕N<H׌ݸۋfd=azQ^)ϋ1|là>㠀pnpצ)^@4ncu&ijN]Fvk33
n;ijWl"_t2US]=#Mw"ZiڭE3Lo:1Fe݉N=슛4-wxƪFdkywdwjR}͔P:}v\NDtwqêl6>`MJ?'ŻRFpFJ%Ʃ]F6>wR\$Ut_5cO󜀧Luwҗޫ־vq3Iff60	z3-l|62cB̚~HƔљ[80.w)W<j۩IeD댧+[ZqOd#a%l1H֬́-lhL$&%V1;3Xӟ0%3i3Fsp?z,APӲFʢFTO=kM#6;icBpe!)!V,}:GR=/ѡas_+K|x,)4[z͖
OLBöZΘF
p>mTx/aMwRxg*NIaValrL_W|D0ISTT^>mIE_a>Limk3[anX: PǴBge*ۧwHh#X4)m^>i63%1_PuR:Ma?ՌRTs5d*^=NJ;7(3LÀiӺ꺲1~ȱRTzLΉKmL75}BUk)uro1XBy~Q(YhT*PdLd,dwwi2.Y}eu7\^d9[ߙ+²SyhOU<=	@c1yPG>`.r\	1I\GPa+|.-RRai/+QJJdЎ`NKpS[CrmZ=1~kC-0C*%𣊶-7Ѷ2Ԣ7c#V){E.iPWڶ>Mi{(g-˕j,)gg+\jw<+!8>`Y1,O#S)xܣUބ,x3X+sX'gc3
al;.:x;V4N˕8V<.P/kB4_ȿT-fϕ<cZi̔|8V1C7ɱ,6>&{潌}!Ne>V,2
eB-H*F_KOeҎ|Z <	9O=lI7PY$-QTG8>x}	47\/CدuEυ,ƬOLIRscxxJÑ{j恥`6Rje<wbz*qfۇK v)3k0EHꜵκg(VLD;T
D;X?rp|#ܔ_s.I[sڻg\	qd->FyrXB`ÆcPK"
|nH}MRoC2R<"RRZ3ĩp}P8#J3X'E+?Trp.dr	֨"P~_9^[کJ7ATߤtS,3i,*|?Y*4Go65HjF_Ee\RkcŹ?"YU>U?"*.w#O, QhsXf5˻"[-/!II#z
sLM39=2il94 ڤ-P(pIh"O*QÚZTB
jv5X#^N1?.\DgK-:aMĖsuѐp1GB^l'OW8N.\+F
"
WSNI'z37Z.:ۅ6NPڮf§1%Hg6V8PrŲȯYJ|$ ACl\<HOģ#S._2"iwӘB;޼B0)<Ea_\%-Љu91DC]eX@;h}ဖAw>lgKmغuǏ#_p$}C#iv}}KR:*~Myv/x	ϊSxU/+
Qhբ	n\kr	zj{
!kC`+=lCR7
9Yϛ
IXZ4 G<\'9v
xUܒz?ːKDv|i#fFR7h/obx+,oc5Żd{}]/4LQ`2ɛz	Y}	zXhVא
,_]V"kǡ9'U
rĿ׿}3̹TRehwK!]doG[zuȕ6	yDr?m	g&kמ3tmu9pú0Bax),bJlU؁rqy|SWS$x;(qБcb?jyX阍{v8'n^c0>~?PKfk    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/BigEndianConversions.classV]lWzN&N6uSgn*6rcC$KƻͬY
M?R"$j
rhҰ-*J0߽3n"^{=s|盻 Ùvc8KBINr9*O嘁HLz.	h3+gWEgN^4byhaˡ=8/,@'R+r5X^.zz(<I,|87?QV2)h"]1Fm6
.G8'	&h2=\jN{s~s6W$W5'=0
J4&rW;~tKW4+09~#(~4jޚ<?pknSʲ[xn+v+F%p1YkJ`9uՠPwZ>Fr)4bcկlTX)ݚS(]uRctN.6jSl75[	bŘD9lE?Uql6q8UTgE烦N]
sn$ w]߃x@ t(|q/9;3{_yqX3M}fR>.$Ck#
 C*y)e1N~X3}?.黃ؔ1Gs={ժǵohœtekoj[1Uf/S,ӟ.b!=aLS,^4O9ҭB{8g͘Mm*>,je"ypY/JmK#y7o^2YTF"oa^e$ϒeIeVq(E<
S\L
0OF74#͸x*;b]{;la$6QYXfil`_OUv
uЊ ^4t([2'{\$;L:ySiT}:|TpH	N}en!{}L-jUoLR[ީ#|O8-
mjۜm(
L<D\TZ$$	ꔝ"ڻN~s2<O(T]6>p'KUջunn.k[3qɼu%Q5I
ljO6y\{L;8$=*5 p
%ur_{{m?'6:_{Q|QxvD#9I?{BaGyGX?pd!:c!Q얾5R>;Rpv'o1Kݧf>"D+2'B[J>iyŏҫoဝxrԴlKJYT:$[EbFJt##{QA=
Ķ0pX?:yu#X?`l$ėUF3-gQoAzn;["GyE?L1~y48cDIAM#P+
zOTfPKnl5  1
  PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/IntegerFunctions.class	|TswLȜfIBXTbvYB	KU!$L@\XZ[76"ZVh7*Uj}^+yϝ$ |{ys?^""EƉKݔ..r~\F??`ja釜\u\ɏx{'?ǟ8čqS23*;8ɝ\],mJf zYkC7qdq!!.$RBz\Ȏ#B^\fş46nq`2	Mub3x-vGjwe(Ⓙt_,2ψUO9yԬ~g^[}fϛ'}_vY?fVWz;ѬWfع^M֙mI{f`Ɍյ)_Y]b]=kVM-fuzjfy+gՎYej,Ϭ::m_ncVHy׬ڟZفnjWm6\iV:_k[lVݒZ[B?dVmLV۬ZZ|MfU[j9+OoV-I]q染ͪږ&]eVֶvY5EoU~7lV9RkV.K#Ԭ<!mf\dV~aVbJ,wYy_5+7rz6.*5+}YY¥ך%,\VcVfe-dV:lY-|fVlkb-5+v۞ˎąqa]\hKBm\(Bz\pĄ/p .Bܞ=q{)S<nOyܞ=q{)S,nOYܞ=eq{)S,nOYܞ=eq{J)ShLbKO!	Kk=76P*jۂy5H.A!9aQ OSsϙXW_$H[V'(eH҆f,$fJ:#AUlE7lt;4@KxEha`E;0+BH0q1nEnPgp^oǊ`w\+ANޚNM@@W*U1ߚ"3fBnPkpZgkcEgw*	z)O
rCsm21&'Mt
O2fsse{8m7?.sEf'Y`koKՆ-<_G
~]7ev[s@O]W0~D\=hoGG=(7چfx\AePOܵPG0AKY]`OSG~0]pM;V鱼Lݰ4>pE2_ÕCxu;BvA>mmOQoO2TO{zP2pOtF=̊@d~4gYz;9aD`K l%9P`z5PO]gK7:u,{8)aa%4c/0NX6[=_hM{jȬΖH$#Ny81#~#ߊ1'yĳAy&Bx߾(fxKh2FG
d
mg:ۊmimHy-.?t#­=Ix)lHR[TG!apW7(`΍[ɛm+0omwi)fZGO@{[pEwD_z[\r~Go{;]hx_Pʫ:P@S /;zDtC/GEGpR^!#>'>p٠[NGo
fr2dvDsj,T_qVmƄaT7=c̞P[goپ~rhP32"94p;0ber@8pkuJYZ\iO
\|!h
v#`{#.72wit幡HDG0Љ񽲷=7e3z#AɵWIpmG`u#KЩ}68jt|=Q~$up𫝳#ĭ_Ým1'۳y~9apa+07Y-"6kC-`['HjFx<G
%Pyľ:LP8ZƁۍ)`n!o_!yv0וY`jc%h)HxHpZww`=gNq7d,7SWK7t4֝$ucC/3,\^$̳pz8197^ۅE3=uXiLtA{glozk
:߬bHM)6 G?ن rt
[y8j9+%$/6'Ƙ#VEb	Q24ܼ*H%i7EH<AOC:$#(GkgSHK-AN7QFN;Ȱ-_IfJ,@N}T90Ub2Y-)<;)q^_n"+
G$IWJ6T*4sMa]uu{93
J+C!z~\+͸p'Q%TM&M'/ͤT<:l*z*yTNi5"	"LK
YtVj;)DjaZC;R~G
JGt!}Aae"6d(t(eR4LGOt;3Y(=#q9֙tfc78S+vSoDӎΛY}j
zyE*wiɨ!ӐRD#S1qд5MRЇs}Ў
eL1OϷ#.	pT`{A,tƲ#ixN(`} ҈/R$m_">v=!IKIӻyp&}[)0;?{2oڠ
Oql@<d9]ti0"%1=Et0K@ ۱A4D=|<%R2_Y))1-
1-zm,y^%DER"z߮K!F#|t6mE*U;hM+,kPY>%>/FQJFZL_H#L[y"tQf,r\76"wșO)r΋*O#9E: D.eQ4Rb,cMYL*ov6؝{wɼD@iP<(Qzx`0h|m+Dɂ-5xDgG!1H?GHLg[S烺M*+}Yo);>,Yx:ʖ ՂfGW
6)0n@XOx>y
45D=D7zmYvv<杖UY)qhL]ۗ%PfoUeJdF,J{3{P$0k_r͈[w1&46EQ戹1Tvi2O^kp'c hb]#ydeNX}U~Ƀ샬Q<=P؋xRS%j}6mk7):rYYQMrBsrB(`'hzO/AUhz
@C4I[StS=IYY&6*_VWr6;ZWoUVWX>q0'1A(WƋ") Me8F"]A@4Ƭ6iclg{s77FAi%2GC\teLg&6&#ѳeL>,Z̾207[&f,MͲ(j\WfS2$5N	dͤtA>I57h	t-fj#VK94EMZ2-R(
Mz?f	;~+ɵI,9"@([OU4!L;{̼3dUB%]hy4r6>6jǠ1%BZ$ǔ69kJd4K Ҧ`*Jt̮C%KTd`rmPq۠<ƴYՒGkR>̍l7MñPJ_UR]8#^ղ_'.Z BD$FIZRpgNu"ZG1ʛc
Ec˵\n
~7B7hdlcH v\
R+`FqhWkHP!a<	.b}3fGϸs"<zR^A|]޹|3i 	@ϛ*MH7yG>ĮR6}Jt]h8ڽ>(MhCT=Q FN8]3 H>L״"iQ@ȘG}ݬ
lh6
ͦ&44;
^ӫ:)Ht.o6Rw$oRw"DobI)Hr[4;iCm@mBmF
 mHHHkx/A:R@ ]Vt0F-XEy)+z `_
=)LR
PM;NQ0Yp"pO)*!%NJ/KHʔHʕ*J+8ƞ8CR`Jf( 2FYJj`DS%usWZ`7 
Jl+ZĽ@MJ<,TbHǁJ(,]%xXl)q8KCJ|ėr%JCy[֪1@PiEJ_ڔY4Ҧ*Ziv-:!թs8(ê[i]
D!իZ{)'yJZ@i*c"=\4KO(0/Uߘ)]J;ܠW(JQyⱉ(Wz
jg3QD^VS)y˙?Rz%2E̟(yҗ1oR9̛Ek*I똛~
Jyoaޮw(>?S0R̭Jϼ[1Q{ngJ٧?W'nJyҏ2)`>İdnW|X<%3QK%Rrs5]J1w+|TIo)yq%[{1P^%/eSӓJ3̧%f>*s~gJo3!JxA~Й/)H`Q2R*#'e~zM(ÎוQ|CV_a2;>o*Îame|G*cc+Îʰ@2?T7a_ʰ#e~20W*=2 kRtcbw;oskߵwO!>mqc1Bz|&q0䝍pm>271yy}iy߉{/0#XeNXΛL.?	F+bGdǄ}J]&ƟwR&Xhx]>ʢ57Hi-;i-A:͖!M)NHe4
R-CDHgỔۄ[Fp{M4zGze#i>
tOz!MӋh&X'~kz9W[4zGi887]'"#cZi	'h}
XywSqx;-Woh<ۏ@Tw%4G Y#9˗氝eʩ2́:%M䂖>rx˯H3H&S_N}Wh=D%jwPŐz7#ԮGa}=un*GJ)Y>B=Gbe}ǮGIDfZ~r|>_lmQgH?"c4FLfo8ڂNշR3{c[e==
teT\i#TTj'06(~ЮX'ᱫZ6TŃt&Fg^/S
-b@skm̬t漢Q}Dg~En}(0{h&h*7Yi"D|΍7trW=oBzH]4gk
x=ldAv\g?yDZфy/fd}ږmq
v׿yH77.x7hgFwt}j"IAr]D7-1lX7~I2/K؁Ɂ(|eM,~ؕZrU6Qؼ5̾C
ߕ+We+^۹xg*1ҏ!H0:1RPi4^T3Kʤ*d5H5D^p?ct?_LԠǎ>$MbY#r}oXttgFnE&MMJe|HL=0,j2.5Oz6FʸRGc7-*udmp<t[G"J'O,9r4JN|YB4ER,f؍;F,;Q|cWʬ󮘞sl2d 6HQ9lJsȒs/cD+/C7=f=YZhnl6-Z،%fE4oQ @^ ನ
,Z
x, -
#,Z$Yx-Ed)] X]Zt	fѥ@E]dZYo5@E]`-iO ,]7h0Ƣc-ȳh0΢
L^ A[tP` 68 E=LaآGX+v-z8բǁ,zb>`EO%=
n3@E2-zyҢ*^-z8â?,: L
`EfZ7Ƣ7Y
`.pEuf[0ǢC\>-g'@E-X`ї@E_M}
,(Ȣ~`%:]K@%RKeH gD,K 
g[BX"XnT `t`%2KSJR3ԭOzRqFu{uK39ɛ@7S=nKd.uo`	|9|M6k}O>Z>=# .ޔi?h/h#|%kÖ!"\
D4Gf$Pd`ypQf1[Vw۴|œ<%'"ߠT~«rrtU^'΋Xgj')FUklg<@{w!}oC?(Y!b|qAL_5.͟%q+"]b׾`~P]مry?Ī|X7-3NqZyVLt!mÈn!%\/͆flh6K]:KӾtWNe_]ĆGhplU@\D
H:52
oV(v\"U/?)n7yCPK  6  PK  D:U            [   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2m.classV]lSe~v-gx6@VX8
\'$;pӵcf:Cbٌ^ycbF/o!;k  ~?ttuxCKavpxnlrN;9Ⱋw]/FˡCԍ>7	]3Cf67t\YLCTӡjM=YHjY5
v'0ޯ16SjpWj,75ZY4Ch|JQӴ~]nu1S$B*H}$ײcA+I͊MլNS7Ejn丙-N?ϵ<fjbjU~Xϰ&wJF>1&7fq-Y(R\zRz4HQV>
pP^d)Af<>	CG#K8g$ʠBNduk2Yzt\XfT)esؤҦդOjYK'۸Q7bƸgqP!<'0F<!1T$<tOjɬٷ`!]>gʤ7s&*QC(:_C0dTAĄ׵4UApeJb.vm_Uwm*oXcz]^CKݎL*Q"=j"1fHu-K#o^{֖l~Hf=$YX\#'iQ2M>-A+jFasB_msA垪UwSbTURu.lWwKp9w73(}i<xexѺHߌ]Xt<ݩZSPk-hS뤳Q&݃D>v;hލ
A"AN֦iLnހD9bk>!ѥC}P)Rb3ΥKWlZ>NhQѡ,٥	*aeswFE8e[ho̢AAEA"H\&s(5Ջ.sFDZ<b[/0KGWPvda!n@r`bOʸV{|h<,fᕺ(8db~3L:vIƐHy$q
Y̋x/^<^'x_-\v?.{Ys>!1*kYքۂ-TXCwD-c[C[hf5>_BS	$+Hh?%?{PK  -  PK  D:U            S   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mVector.classWmlS~}kbB̗&C'mBIJ(46nZV@eҴhR~I]jڟj?%MZMAkbJs}^Wl	^T4t`PŐsrwHŰk<*F}8!0/jcḊ4Ꟑ'r7N8!A)&U|C3cir&9UҳibdB:32zz6׭l2g2TYO>?T~X^4V,:=§Y0g:nP	`qhX5?eS9#z~VqtPS``MFNɈ}v Muv=
-4Re}vX.
i"3
sr(ܝ](i+=t2Y=,>F9_t,!q*sE=9*Ip|YuE*NXehc͚S&r6%Z%|k?@H#%HN
3ռQ]J%C%;f%Z(ZQ5^D/娕5Q4vHm`&@YH`ٴy2;3d$R2&N_* cՂe\Hf82Uc@Wɐh&/j?
N3kc	L,8 E!>TZشCՙ.{{D]9=lJr?0a7g26ҨYi0sD̾s%˔MI䌕ڇ}TZ<mGU:OړS ]^*&<.w؇v[ޱ= Ȍ) nxt. [k2 M(A߀ҫo15EܾgRuNݎɣMc݄Uܽ{!odAs'Rhq/^yiqu-|=<b~];')r;fd&&y]<q׍$c8zqOsN\_G
oa x#juiȣ"¥K .eܼL$|1>|nŉ %ez r
x"O`u߮?`5z~Q<Z,')d/۱nNJtFt4d78qU5#v$,Dw?48ͷipS*+\ڇ)P6T}1j
nhD^/aIB	ͫ1w?RDYöv*tRzBW:^_H'@ދub_aʯNf¯a+	5R
&gwX7I7X%
=xx%Y;EC9霴{调TSkhpUxklr}%&+lﳉWlw'{d3NE'[7,*Bw2xD6nb
I:<f ٹ==6]DhR{%}2DKv*2-d=%	F!D*!B2V%asb}hejKm6>d5;㷜}E]l(ft[S`G춳Hۑ&S~1F>	9QE'>oo{ z#˽
kOv2[2.>{l5Ɛ>%p>,'s7r
^hLTaM|(B^l\<c{yPK^3  
  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mField.classW[pdYƶX2V -8_
66Q+cb{E^fVKhJ%Δx:2
Nھ>g:3[C]wvגǸ)AW vjՈS~q /K<0.
pGpT.$xl	^	BńfȆip2I?ȗax0@! #L0Z4NR<_zn	(mC,zA?35D1K͜Vݻ-eڎ(ۖ6\r)dJhL2L)9Z<i795klTUӬ.Po[;֒r` !f%TY%E6;-59xn0^OEj!kL
)@RK[z^M̌[<hW^]oiQ]IhX=&Ҝqcb2IuLB.I^uA=Uڹ5_<8F&h[
LI'EpDim+=^
3fFeVCEJЊaT^.Hg3ڴؠi殘5ŜcƘ^Y˫fNI:@(l6b~|&YaKX;[F-g2i2B!Jn]`QU!VvnjٙnWpDbiEj!9E`gC.*.ylBE?.%|90~[2a͚4ź*|%:v=>R7[
Z^Z@/K+nCKj-"I +
;J+2˱_ҵzqыSZKY]-v@Bw@{}Α1F͔Ч%v="6r tٴ6k<},$1KӖ1<g⨖epn1]m\aַ
ή)dTnqZzri_nxQφ!/
j<)cԖzB>=)T8獳x9f,,&63J
9WEئiӗVv?	e؏/3W1c.|s쉰
>"i7r@b#M]炇{WD{H}ޣa|(k#Gwmm\7k+ڭ歎gZli+mh'
xGDțw\&/*xwQcBPB KU0EAx`CC<e"J@DTo#Jp#(Om>q+h<9obK]lô?x2ac4{:8fcO6Mep{{>Փ)*~[t5sg#lύhMԹn]5u\V7Bu7pylwH^Zu;ʜb	FU{WSnDzoDkEP<r
=Q7ZE$Ds7(g_~j	A!D[
9Vl_27тwW-Qy3]*_<VZ淆u^Ye{m8OLIy,v%Uze<Qq#}x#U?jFU
<<VQ.v4kX]
>})=墉T]43Kͽ`553Wԥ4*W^:5T)qQj=g<G̞^>c
B6pr&ij#oïAal|XjQ"װ[@>nwl("-f5rEȩqu9yj)\}{Ͳu	^Ah*тb=ZE+IKMV
{Ě#X.I;D08="RXJ9v,Ʉ؎E/",&{\#lM1uC.[)8GH'*ŉ(+tUTצդ\eW[MʅnLI4c
~#?Q|9aF}?IOaP$2B1a1"ΠKKLac
y2+1F>sKwC|Vp PKU%_    PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/Vector.classJ@јMz_KXJPEBIvHLu2lA|($k!Z69f
X1V
l2Rdm,чw`0N2q^P<#_uRC,$CuwwDnIq+T^#yzn;WeC^h)}K\Ǿ~\q@qF:WސuVZJdsKRs?F0}eරgt	د.ǊyVI1̻7|%7*/U(N-Mv+&`2
5+m/zʚV6Ev-RF:TEN8g<@	LSua,ֺD.cvY8OPKTy    PK  D:U            ]   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialGF2mSmallM.classY{|Tյ>gL00B26hH@PRId d&N&T|jlV+PE޴^(j{[Wu
>gȽ*/g}^[Z{ͳ;t9'
M|R}l>9V|·%M}_ޝ2Ӌ]qwc4Ȅ{O|ɇǰ|كxU*HOy\ eC{XG4Qy	wPzIsH0Crx܃opmvhZLm)9Hg_97%ֹcv_,='b[RXзD+%0Z
;͛{:{c+/hкbE.\xek;Z,w-Zt,^$z4W{kVZ]TdmV6rd{ڲlkl{l@s0Փ1{t+bd^he:ֹ-֯W)e`jg*K;ZSx`g/OH$zbSzZ7=X%,Y
,}BrH}6
du3Li[E\ΑXWK$RW5bN?U}_$
dfBŷ3c]|3B8ԪFa^!ے.ghz݋{}q2"
2*[dkT0ճ-gg
Q[:uh߻)g /%8Zǉ}IN,dۖ3c+ƕRX:sx`f4ivEYW$3V9Hc5=w'GnU%SQ˨T@o,evǦLU<=e6Gݱn{+pb5y"QjޙLʗHhԣڱҷ29/Rǂ^B\G#<G.clrJ
R[%_Oݥ@:o]%n<ų~|u?Im~<qX
V-NM;X*Q3PHvZQCl'6KҕQǏ~?cȃgW?
.
]$
?p33^?|T<ZiV,QdUrsU;~)i&|+Bc#:&||BXue<䔕bϱڏ\G4[Id-Wj?~!lǀ;pb?GxIU/^u
yB䷯BNl/9SItt+9Nwǫ3n؜L	DL_~58/-3LC=*m8Yؖ'ZY}ڂSُީSK=<VRuڕu4^cc`;jU%\jd%,>s&*$@r~PRj4c BM>L,e1dP==pJFS̱85NZ%{puinXa#J֑({o$sw١Dĵ%kk"O$ĝ82h)a8~o*׏UDSJpggt300A#%[5{Jvkgs|BsB HQzf:{|-IŶAF1W
pEȑuʬ欬UZ
H8h҇Qv+xX)KNB
mᒋf1B"&vЬty`axRX8}Q3dm<kYufPvYȯ"u߅Aɴ](r%<WPրFn\>L6`
b4`I#f׍&Q:IL7Gh1"˕ʜ⹰XHt:r.LEm*jL>(橔=b'7Q')fS4Z2[s\*#(~<dzGX{4`DTAz)f#\t>\d60UKk%)ȵw)q=~?vrѹkyc?eީ\Gix'؅&wݻI{QaܗWІ_k@F<pvc3Q0B=h36e'Pj>
jo-uF&4|ZQ>F(KD<MC=J<v8Rk ZD˟rEbG\yKXε/5b~wv3(lEVd3N)Tese$kD0|:u]i &
9Bj.3Lb).3mi3v0$ܟQ.4Z3_1YkaG1It+ε2wpolJ"rFG0'k[՟]5⇯<iɘӨU$4>Ac&,eT\ki̓ptƝDӦe!kl&Wżph?&ۊ뛇̑94EA3|XU Nಓ:wlB+?Im\3Щ5hȥ`:G|!o|O?D`(\=ZKL=֬3khwQr,*cMVPEu:)>v
uKy>G!5M	TIk  wnySw5Lw
赴צMMj Yw
v@aCt֍D|1+rZ40	-=t oqS~8ކBvZx'*p69ˬq6mɬ|}+sb ɶ/NN.2̫P{	Cax9\P`dUޜ,.d]jY!adX=qQL4Dx-DBW9\'8,8@Q,
Qu 1
ߕ5sL4fMmԵSĬ qkEs%
&h8rfkXzʚYrh+P{qlq*VI\qV%66Zf4a
L2bhtb~숚Ѡ	
P^t&oЫB{t|:#Rz̮j,ztǼv"Aii$Q$ȯ;ҺQfEʍrEX0MF~UsU1RQeTѭZM'D|NMnj2Q!<xJUhO<I'J&Оfٙ#5dS'.3z͐Z߃Hf5ʠ\Y']G%C#y\fN">jSP\viBGZ] 竅XZT-%jF/2ϥ[ODi+`ok@Kz
OCam#lb{ yM6
>]Fx+nahAIV],0ʉMHnd, <8pY핺Z|n}/BNFSh*>_͠V X(kE_z2UJ"`J#By[T	Kd^t/Xf\0G1O<QmO:1NmA@ucچ
Ջ*9jHcd,}VWb
[خԵY}.uQCQ	V7$V7SxN݂gn7
F@}Tw5j1G2nc\eUw^Ip lZr&I i3P9A_57$xeo-Zh7YN}Ow5z(E};L'q| L;e!7+cV[Rv[}^OJLHѡ chRyϕ	'YCB=~߮kgA}@n !w7P}YϱחMW?Lq{gv QK'h.?U謶s&6zj.!;t<QHO,0r<Nhb	<s1^KR/Qut_Rk"[iX`vS.ccSMTyƊuH?.wv
&v03wX?OD<{>ʈL]!+p7=lΈ]#5ysfQ-fؐiYYY9s<ߜfXcVb9tqf՜a+vd*I
Ԝb5PS8p G"QcytW;_̋اHmmqS=݅	G^Ey!3bx4
Y7{k7)}uY{oie	PT
A5FsV'W}ؽ%&ڏZӹw
ݻFwf]<7ofnŇ9[~8 T7SʳmWk5ND
(3odo{_xuuzZȲs53DTB˥ +"ܾ]vP fqɄ*^MW#:'5d$0NDAcycy*͝6w".ݸ܃K{܋>~\k~LډXB?%{tmAFR!CdØ`>+Ǎ2[n۠}5&Xngh2 e	dhwjzz&H=DĚ
u=<<,tg2 ?A>*oOa-gi,2`,)]t6U	lgw{a؁+0qxC.DM	]	$	ѥ"e[?E
Qdr׫/qk,dQ5b6d5S_HM}Wu˃,c=zTyLq||曄9ɖ,دZXH·.^5npngمfsZPieQ8wHI	J0*C%gYrUuյؕNe2^}~`Yn).fkK=#:*[(*1ɚJ{+1ǚ&\*/croC8wrmLފKXYrxpV=
وZs2\Nȝph7J"r)\0dS:#ZZ(	Cm׸~"r4dmވ7X髊Tv2bU(ְ,^S4#[`q﵊~?w-yǱnPK5  ,  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/RandUtils.classuPMK@}kӦUkMIEܓ B*Xfht#[Ћ ?ATfޛyv?_ c:yLhbD!3OQM/PqVё}֍@3/5ŕ]%=J:7
bOt~02tk%:1Q. )0rƁIվK}
mϸOD$|Wّbš-_.?ϕ$_R'KP4(3'Y"򿭒5w#JV#m+~vԫ52Ӈ`2Ѭ*H-fP,X4VM
lVcPK7Ma    PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode.classWolGono/d;4Ɨ7c7n8nۛ^$
MVU*!(jT(U>!$(
G i͛="gZ{ͼfߛ7~ _R>wKAd+~!9 AC2z(>D': 2?"Ƞ
4|DƐ
dDƃv䣂
r\1AA>&j	)iЀ:0w>Nwy!0`G95v1bn;M~G
	4n۰lLizda!o;S	`fSFxd*SFj65x,=kLsG̬egM##lgLfKd8K;:ˇg.'u3k;Yti)#穂caC@vʘdgcg!qdOqH>0`,_2l5ED&bbTLäSq,JQ#8k$Wd.׶
pZf<Dfk*~09ϕt\<8p*)?SJ8O2t.T|
FϩT|STy|Ay!{Jr4Lψx({'N·{-%+췾z&
Mqr8JM?ed
TSXɦu;y#ec}@Իm>9iLnрHX%(\@y
ǜvh3t()V~,ןz?t傺7]*_}eo޳r{r+v˒jK֒GDpnrɕՔqkb3;]gVyYXN!U	bK^S+O5޷|tYإ52\O>Y0^mէc\O14b:]}Uf/|%7VGanWz2<Iy4]܉ѿnOBx!Nmq<طBu4y=B^^5IHKUƙ"|	I~*/7MѠ|ҪE;פK ܦ4].զ炤kOgHYǗi!M~{toBѪIZh\EEBd-g5Mjn2<@./`jDH҂5[$_"u|B%"Z"T-rF:jhxIKD.kZ6M978mkPFty*/_DOϯ=elW(jϢϡ"F2_}p4N3^<׉I'4s\pѿ7X`.ۈ76|ě.'Y/*qj؁e40dH:u5lwAtwQ'
./a P_!>NS0hc< C9Dҥ"jI_B00sa񧺟fyP'KXIGKn]p/įo(Vfx4_)9U)")&PCd",XP:ʨR֓+e[LBZQMƤ?hmMhLE4%e]&Olǥo[!=k"%=$0iܖTuEW؞"v$Zr@Ѫ=YKj"65Z-vN{
v7|\&d
B`+"jCӰwm	'f	pmyB䳬/V
_&
G
G?#@IIu_v lb"7Z޶;=&mh@?PK&1Vʬ    PK  D:U            O   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/Matrix.classSn@=$u@<Jy&j6]RG&E4qו=q!		G! QȦ9wϽw< v8,"Qxd`ǀ`з>+3+B*4:U'M![T-"A	mVnDy2\[zS7+7facʦUzݬHa1?w_0$rCrŕ]4xףLgJR[a﨑$m28$\Ò^EYO>Or
Bilמ0{lQup݀U3Et\ut5܌γwPs*yO?-akwZP3aX_zOq,)*lʍϹa;.5\`F0vg:z/ֻYr^e.AHJF%ױ4Z!C<;Ɨ/*!Ơx2	ajZ0\8'
Os'O)^*MLJH،&b#]!G.vlPK|    PK  D:U            Z   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2.classmTklU~N{~h:2z-l\V6`r#ooA/[G$5jQ!&35b@DGH
F	Pn\ls۟\ЌeϨ׀\-+|XN/R
X.jVekQ^t[Epw@vh/^c$Of!oa<_Fj@`ld0F
Y+OO&e#mjfYӦ6*60sm3;)֜YCK4팹Rṛ=V17qc>ZHՏ6,ұ>,|̶KD1Y눕5Jb?ب~c	ZbA3S]K͜Q0wB6f1ˏKƋJ+T2T(L69s6R#TF15r̔R
Wf\6	mwnRjme4
}G-*)__;BuCYM$M)%ڲ!>qmh$) uFFӳ'bZ.Dn}uݾ)^B2"_xwMy/,eWVk?$ޣˉI@*F#ְecARUi	QZ7}RD~bb똾`$/=t$v	GFMiSHK	S
IR
d<M9#CP!YBZlG֮ħg1u̽Af=İC'Y؀gY =Zf"5:bDX@
F7PgލfW?y
B1Y(Cc4	8AOqnhºD<Z+&>Aib^ds^3p'ggp=pgd z4uO+ޣEK,~%ls5Jo7)Vr	
KQ&^I|jm[bw'J-LSa-y	%[9 -h89(جH=zcHgnߧ'ҏH>.rj?	AF[]FE,a,wKѽܥShŝdZ>tʿH~N2/\ hf~IN=R=ihGw:=x,F Mrȷ)֮ʹ 2O,+_oю봹$ 鹍N9[#}g(rfiN"EM32iˈ|nBQ;fR'JWv=rQ &t	Ύ%|9]"udkhf}<MmPTI:PKS  
  PK  D:U            T   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/Permutation.classW]lWfwֳ^?5ަm&-q8vveC$MBa=fw֍к-TcUU
PDSFG!x@$wƬqPYΝ{wsg8#5q$ ьa<11c`DY<.V_CNØ0cBLtj'#8f%\T*;bڦ;͎l)NΜ)gx8kY;
S_KscrH,)HvdsE=S1ղ.exBb8HpG<#͉3C
wȻN"ƼS,U]#k/
cvtr!3TR^)]g,2EݝXDu`̖$Sk:v?(ywjfZRLǧ)UQ8t@;*Δ[6킂Vf^;kyhN`V6O9r5E7JQq^Z%rբa#Fshڋe%-.;<RҬ$mMR-VrQVYlyP !	&+L&.
VEQ8(ᢂ?q:'f<8n-1Ýw*MuFQbORKb~FW8lkEQmwn2ڨv`欬-.eY=BmجЅhѻt3]LvdoPyb7;)=e=H`Giz.#yôrN`wEѫ&w_P%ĕI7NLMY˕\NVtXvE} 7y=mlO+{=M'37;I۔{{tvt6!sLtiſ#~Aޚ6`FuK^dsP-)fm([zbk>^:Ab-3J6g<ow1[֔4_RMO>YC\~\E±O"? u
J
45?߈:7XAsJ$&on9&];;D4shEp/#D	M@IPHJW^hNja⩅!bV|!	:7D8X ##uҴ""ִqETp:e}t%$/>5&.#.)-d*˪ċMYHhxEC$h%Hq~pܝiOa
82&Z؞t14;Fd\^`_(eu]ե'8 =bug9@]t`s/?Q E?]LqoO4w4[Ѩ)2{n!pd2/WXYQAqH\q@'{XƍTҥ{X;O+]-M4y]&/Qn,ѷ$4	"g!CЄйK1_AX{t̞w|F&s
Xkٕi-onij+
2BoJQn!&~H
k6TY{M~f,c>us.6a{z_kvI
~`Of߾q@k@p-zڈ)AG[h~w%4Kݒ^O/hP!|wzpL_g?!$dfqoʣ:YBn9@i9u"65Y}2Aޯݨ9 > v\"3'TQGRkԕW*&>F{wErNKQDW:IV;uaopHi'(
N!R쌝w	MOPK;  B  PK  D:U            Q   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/IntUtils.classT]Se~&lCAڀ
BK6%釥|hEbf8q|	+lYvio^7hN'??_Ko:xv@t,=yssqyeч2b8-Q[iw@F9qFY	"#cB8nkEԮW4{dh+Un8Rla45^]$.ySz@|.x^^r,%gF1حp]2&Slۼc5ں1oU3k؇%g8ZOyʪemBjj*n8Y%qCq#N$В,qm^ּ(.1	q-	oу,{!7gUrrrx[b }͍m湝<(^[Zd
yŶ/jˤT*[RJ/.b"e1NX7C2_-]7K?(a3dy}9sjC\-|cC/KN4'C{{j-iKC	^v-&=JhYK
C`=np(E
833yCszipVq=AqnSQWWn]3tdsCgzIagG[Er-޽3j]KGTH&D5a{swB>m$Zi $8YA7^}±g0>ۦOQB++ƞ2cisa?D.BFP[er;EN-@K{qQ>T%YZQ>͹/x5DG<c0Dx5 =A*x[z>#UHIEق8&S>^M(O#6*֛>B
i	`)
D`@QG9CՔdKKpr0(HH6!nSMDKB*ZmnoFG5wPV+Xf%VQ>9|$\+&5U
}s1O*'u59 5{`#ϻZ	j
QEXxL(?yQulP1?fd	
ҳ;8MQu{E|C{ݏM7WP;CPK    PK  D:U            Y   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MaMaPe.classS]OA=n|"'~&|hRbH}v,Kuvj_i12) ᥘ={fv~K<ō*Xpb' 
\A(IUett9$SR4VV{#N>mPOO9Ȯݾ&3ʸ$K̦_y/}%0MN*N)32D/=E=Hv85ΞE}/HדޓCQzpCW<,1QŒqMd;#w-Yt+E{N۾A*8xv.K./G%ku34s*qoM9;phx <<Ud>*+c/u3'Jwc翥0Av!|"bs_Z]:bQPKyi  $  PK  D:U            R   META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Matrix.classz	`Tչ{gr0{*1ʪ()K-C2@$F\[Zw@bkܪJk֥V);LR's=,;r&zd	C8ׇ~ "I?ApnqԗIqWHq*/>\ĵΏe
>6݇AMRSoV)v	ACyK)~]~@#.
Hc?
oK!nćDۗ^)aoc,\ߦ`\Y׆xb]j)4OcPf$
񅭍kKbkӫ&ݰ ֤}xDWTejXWh׶6ק6WH#8K6N1S*$[kc-xEٵ
u$v}Ew54*̮\Y̋ԯK7']KR*҃9_2Vs},!֜ZXTUXfiSі>fqǷѵX*~o&R-UJ{WвЇGrSUԩͱ"ұV0
>س8IK}	cV ]9bgXcc}bݲx)={&g׷z
g\u|muMZ S~}Nx[*Eg$bF>BPmXcp^-ZS%ͱDKSR?Д.e-hmH75PحǍ͍X>j:}ψצǿ;χݙ?BOEY?iRЃ#፟kh!֊^hYdrڿ>ֲޱT&)'Ý^okz"9ǔcuuKjI6g׋\
T<N[J+1Vo(TOַ&X0B1&	9*ʲ|iO)!L
:q4uɸ$ש]_N06ژh)W|lS&;ҬI.IDOc}˖P!,Nb1N&6$驩M2i,X`?Bx*iL9$	_!$Ѥ0[$E<^/I)B^g766itw>tG^Wڌ--Z_KRyݨ-k9_B/9}G܌W}U)Fk޺vmMO&S-Xӂxj}!oV7ChFo{H>ìkFqZ]Y:+3544CE5U<F^U}<
594twgI
mTXUOmC2;/A?N4DM[Rq瀶E&⣘誣t91kU墚Ӝ(vq6t"HwIS9VrQ'-MI
cwm,T,cX`pUz4E3Շw޿W#w:$Ύ7N&7&xq}cw54!2ҙ8H5q	-Q<=rTL~0_n0fa̦-@#hK*ٗ؅^X%C<oqO7|[mgû~?@(=CW_^|?GxA25j3ewQ+؅߃ç:<VgzmwHr}е]ή7;뎟h	dXEI`4lcJ0iq87ֈƓq.exx%x=ew;*7TaW>..j3Ş9=JC`5z? j</QKY/,ܒppXQO#C(g:`;:
ڬeF=Ǒl~EXumk"
,.R",kHc9
)Xr"/gJǯm-
'b
O'dZ*!ݹ.dd[<Be^;SβX#b
JH'r7ç$>|Yg	|kL 	Ŭt8\};1T7ubnteԦ#$Bwr}Wqk(k)(;Є؂[ɖH44\ַsY^\
J˹c8QT} #)Rk:b,#E]FCkc^~7_FgjlG4;d.+HY tF~ _FMG(ޏpSޫr ŝR6"SOc-4"ǲ?<2mɗ]'b)-sQEdFbP=x)
yGe2k<X0 AM0IV	Nrj-VZ73Θ`,?myG~~G~IJ|w#,<$>
/@Pl
Lq\ssӿfZ/MU 7Ei/|{QZe{mlZ-Szg:3_<ɗ~߅)le0uMֵHۇT c}PZD0~\0_9']H)=s_d{(VR(QEGр9vJ;@(^-SL)g82hB}iڲ>**jT!ƫFSEVcQLPX̺\N	xsU'iO JQCE<|6"d>kB5Q3b/W4("yեtbRiO="<b0{'y{0l]+Mc!)J1J5RA)ΤgQsT5sU%7+|uPtF=&.ˎ	"q5tZ$ݕY0X$ӄy%?e~[[p;D[֤
04+ J@JMr~`/F8TIA3cpv#9Dx/Esⴷݛ["ޕvr;wk4ۆR3c
>ʝv!p:z|#vC;ϵ^m8įhw
ͫs[eWnF}q?b[vz#R+?'?("制tw袡VDpQYJ`X,
X٪؄KUQ[][hsnWy<Ju!^Q7=.U~uꫮPJ5T}ORWuS
j=SE@]n]t9ꖪÐpQoA]=V(DR_bTjOЦ ?bEtzkF
Xiܝ	pҩ`
Gs,W0tytzW,W;>eD#s)aMPcRo(
1#RIF
+YZ:k+}풰}]0=9PI=K<P^8Kԫ^{547+Y_o;{bds$c#oO1
ݹsse@!QMۉElP*h{.n$ͭ<ػB
>7nm挱s[;wly^gIQ=2odbpLO\8flǰ'g>GXFOwb73
5|_o	VÃ~#|s;^Z!l\Ƨ l9)C9nRsa4JnPa:܅Nwpe|<=:tcbksCcs F>a5
01+3iH\j(?	phXZ_]6Qq	;"xӹѕD[C΅WB-ڡJж*R)`KT Ȣ}ͲH1a'qkTb1	lD,7&!cf}$
؏1.!4	`[^>ɉN
AU:Do;_0Np2\*
aTcc%uM-aHI:81I$>f.+_$WCfj:2;c?laׂe[ڦ醘H{<0R'zL?l"p#zZU~Zݡf	Rfo1£#:B3X`4Q-`}
-xhǫ~ntџ]9 r%IYQET/	Xy5\(a@zeҐ-3pu$G%-JI92}ґWXP*d;3m.lS,ݗdua#tqRIV¸zzz	1؉ƭXent*_o܅ۍq~f܋׍ ¹7:_JJCT2RT2s?NIdֻGM7)/\,vj.LT;Un{ēx#+,uJ$Mm&?=i0^:1B_g1x%Ƴs8x}ƋXlo{6jNɘ4Fo'hQiХBǦ-@:v75vI-iVChҢ)+mXMK; E=" X@d8D
-fU\T2(eۻpN$;0݉1%PC(!l3R+җ
.06ߦx}Í"@N6>r>23Xc|7K~/q\gč4ַ
<nz<c.3_嘃 VpsVtϧ/!rƯ^'>+ՈVEr\~Z	3b
i|8e/H\ DN.!=LKf9PhGs⩬g'< 	05XS'HgI_.$TAw(ۃǂK#m=3|+/emJєĚ+\f]D%tbMVۻ֘|+zven}\ \@q9_gOE2A^ˊr+33gY9+/D)Řk.|,5o+3Way&6KZ\njs-nปͳpf#v	<h6Idk57=s77k5MDN]5mP:0v7_Ď1Pime6֦7N]_io(lxҟ{t{K_V=\4pbтzeŒ{\ؾ]:'y9t 
 3Gb2
*8ټs0ϼK܁M;qy+.d}C\c;qy~lIku7}}x܍͟U~i>@`ŧ8dUm>>5|B5TS|Zg2z	pF?e7L2@'&:3GDЩt3KC' y1ᩨMEn	fԹ]d}+}j{d3hiܧ髱*
/,sǇVlHWc::w#2vs?>9l9~Nz^_:[@|)2_''"N8y%o0|3ͷQe }0?#͏b~OhD>3
_px3~{~a~IOѤ<]ʴ̺вs?񡪰MlQqrG1,I]tXJ}w	iQ=i_y;q$y+G_AuDMjr:t.vrE^9z7/oM#=k r|"(`U0Lc55HF<eVɒ;usgW7nu~ƺsCVVi/|=>evd7ZgvKbv@'n#|Qig-ͦ>¨1JD$[{T.xky"X`u2ʭS0ɚ,TYԚzIk>j[q1+qUr]2-\榄#/a;<;Ϡ8
S+eo\w%"Э0=lV5b1Hhf/Jݧs/ݷ}gV͙)F,%b2A>ѺT.պ:)=asϪRfm@x+1jiV+VYmhAu.Zf]Xٺu1.exݺZWsjUUMEjuMjۓ[թmtU-ܜFט/1ՑQzs\+6qs:X4ƚw-[S> WT"eˤoR2!LЫnWG~~A4Vz'hi,b{{0J/aT?CAz7ڿzJ&Kvt]=Et?^m֫<,
0\g!];;n0%	v=/SŉnG#c&-?G\d﮺Y"Z1a:}@`2^7NZڰ^W_qyX^h_Ŵ S"0%}!=>@#FXQS{`şjb?4_`3γ	.&~Da18]{+\uO/7`R_|Pщldbc%DH;(Pid ÕőʚHYMgO>,`=az"\`3,$:dp>Ј܊~%%H5gߌpzD3q'P9zx;~.{|>?PK?E  6  PK
    D:U               META-INF/versions/11/PK
    D:U               META-INF/versions/11/org/PK
    D:U            &   META-INF/versions/11/org/bouncycastle/PK
    D:U            -   META-INF/versions/11/org/bouncycastle/jcajce/PK
    D:U            6   META-INF/versions/11/org/bouncycastle/jcajce/provider/PK
    D:U            A   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/PK
    D:U            F   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/PK  D:U            `   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448.classJ1iݺV<`

(EQ,T4֔lIv},O{f2vB#
(_0;ֆ'e6g"Wi^ZjysXM1]鳥\KBg®x]9e	M</(銔RɥbZ/
6YƅJ?`T:ǎp_,?~.Ri1F\
f8Gӯ
򧅶ϡ7 <ﵡsmzOv]tkGPK.    PK  D:U            a   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519.classKAǿUWMӼt"CCD^$I/+32+).^:x?_ n4DPRZcB0Չ%;WZ.Z%_'"Y!h2rG{uNh,K_K	cc7lm2-r]H|+$[sP|UX
G>wC5ӻ<3$9yq;KްolC>:u˙FPe&-Ių2z4PKD    PK  D:U            \   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/BC11XDHPublicKey.classSkoA=PZikV`4~Zftv7 S1iw6GbL;g=s??~B>-͝ஂ{	,aY
V<Pe2-RnKkځ\и;p|[stWzڎ7vȘ[}fUmC0dj%nSf")g~Vm	I#;SaEΒ}.ߴ-O*C%0XzO<tZ6yݡ:u__>ιd\.ޙҙTC1O$u
W&#\
kXgxJ5C
:6ʰ3zqi*0d\ca}EJt.JY=c.+<)T8w뒭5.̺ORʒ3lLI<J6Vq$@@O'F]7y4"B7ь!M6Fc7B|f>2_ b#_W(GgoXB˸bQgRD;b0)'PN(	Y!yhb(X6
APKā.  1  PK  D:U            n   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA384CKDF.classRKo1&iH<i%HT*TQ/=:ΰu#?"(w+.@[/ <Z6bl1"lEa6?#;o+};fBk
ͧ#v(8sxKa됋^꘧l|2ӏ&r!	#=}Ir{ϭK΍*}Bb歐b;ѷFIFzmMp|ɆE
l[%MH9QrX̜]1;!b:e<f%~oHLdsNxI;j{}
U!r:pp=\~GM9^gXJdҤ"	xM܏^TSϒ@pX4CӦF+gXT^\?lG.R#\,
OPKPL#    PK  D:U            p   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256KDF.classRMo1}NnҖ
XD
!BPԨ
3:ؑT?+l*.@[̼O_ <	Rc#ES$Lp%5gƚ\>XsCh􌥣x@In5uMilR<јlOÑ)xBdV{OV~W|&njuU9IIt2#K^Ed`e)KpYG
Jq[L#FĻ*1Eo!i筿3\u/W!Pxev<&&G*}\^{R		knG
oSNS3_.#of*g|Yj΁XS.U)['`}gC|FGTϰtsǃ5USE\W1OOPKެi    PK  D:U            p   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256CKDF.classRKo1ݰ-Q!TV
TQ/
3,N7vuũ$~@bv+.@[yŏ<Vbb-FcDXp#-gƚp Pmn
,tܐ=cd:)k⾛zM]SǔO4&hfJvBY8rY`۽VkG>{ǝîs9pSs>'/ol^v*U8ˆ/ɒW:j[{o9jIN!y|<4$-s,L؞W4TU9=H`՛g~i//L1vWK&dy3+ςb8o
W,`_ʻ/cKU
BXPE5\r#,tOPKY    PK  D:U            o   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256KDF.classRnS1=H_<c,JH"Dhu
.nvW" >
ᛊ
f<33g<7 OpFkXOQF	n$EXy	ҡ2ӆO39ȣ'۩SեyE'sc6?{#9)pl} lux?ڏOuةQ>,+&
;"[//_ulN5-=FJ3=d'/cN+CV7ʏJĢ=V!,jyt.t+UlcAs(2/L9NWHd`q;=A[Ӎ9qEqp%4ZX'`mg3X9j}*}Dus7PK7>:    PK  D:U            q   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256CKDF.classRKo1&iH98jP
Ez	8ⰱ#?SHHpGUnqf<y|u;'SC#JUŨ`=FisBuBX!=mh:{#i};u69o'y'H$vę?'lmvCz9^X+r[!E%=5v[z7pn6䯘#%Gٙ2cN+CV怭6!m'Y!l+u*uؕ*qh"½Vo~_6Ŕ^11J~k~D7|<],5*[rqb15ʻ/bKKK*ASe\)yX>PKԜ    PK  D:U            _   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$EdDSA.classPNA}ÁxXhni!AH$4g(얽	Yr݃>u$f^޼L168iⴉ3у6^AlƄL6KvrڝS<чDº2۵KB<g_<[_O8&h0n%vgT/rk%׊ٽ	͆~Uy1F=a?WEov[ҬDdfu6/p(<Pa,lt)>P{$qmB;DLaZ+S)MPKևY	    PK  D:U            ]   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$XDH.class?OA!4&P!	
e#.=HcYXP:kwy;/o~;c$MD8㸎CjӼGv3Bw&Ʃv=g8ͩzÃtߴh;_L7J4!pȇ.z}&R֚gVFwt^Pל(^QB"$#k3BLYgYe.Tbvy6p|֥D7mXjy^!knS2A%6APK\    PK  D:U            c   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$XDH.classPJ@}ƦhMVh=<y/-Rn6lHe7)<	 ?8٣3ཙ`g
BDw@o2]3YWlʔLVi'gOԾHm"+kcW}˭,Չq85MZ%]]P++7luF6-KV1e?b#	$5~'|hѢΑ'7c%}0]j-! KXp*:ð]	PK1     PK  D:U            f   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X25519.classJAlݺV7փKZRQKuvdJwlX>%<@H$?$_ 8ЊGMnBӝC;gB<Yg)g.Sv̶8s眝*Bm9a_<X_n{MRu/,ZhNVn̜]|e\8Nm?N_.ޕFK={3CM޳5!1Aó[Տ$Ah@6BE5߮&PKt&    PK  D:U            Y   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi.classY|[guqk%vy7Jc~Fa6~%qk;iv^KMdI``+elBl0ʠnFy11X7`mF9ޫmى9;w/ Pq/@/\P\R>SǤ)$V.K3Y|Z+qUsx^WϨXJ*J9W_V_Q
W
V2R(7lM*^T.|Kvr*ꄢQ
AU(?{*"+W~ _CETьd_xIv4*:fg*:EQ-tՅŢIee҅x*V/T|)Ħ$Z&M4l DEM\*B]\
)TLPڃu

{pXx\+ܱcBkӬ*B~ŠjBnEvպ1}@Xv^klyr^ ͱN f^	M-lB#z;"l,y[KjjoHNEYsh<j1#<Fo}ģz0-Z\`aü|>H:=2ܯǎj!^A^;fwcrGN\^c>^mȲ&^Q`mata=	-DehiulMZlVB%
%In aǌQ:K6Lus6e҄Z\:(}p`,͐Z_l SGx +(۹
=3zL}@YN J퉌~f$ƾ0>zkq7ntn<wޯ#< Ja!uVYφ#,6Yw&	vPEpO$DnDqFcQ#Oc:OV+ɤڢM[V7mRdrnoTAy{bcQ3j1m8Kò˨Jj7v*WFq(;Y v"vn:\O!&1`]Ro=7$[/
pS$ls,:ިE@$Olݥn7/n_#vӃ)}1aVf@q_0i󨑶,9~&{>77|ֶeG(j!΄*FmYև#f)u7>ʲlwfsY$ɋ#MQ4-bsڨ]n: x5v'Μڏȹ%1fLvP$/ʧ\t:@\[;+\oћyv^RdA5_Yc\@tôЦvֶyp-,1=qΧO7*RKYK-+tMP3%`|n39WdIs|Fºzz__׿a瀿~߯}n:-c:m}osg~5\I%Y6b!Ԅ|Ew]!gsJscT%1?p%N1UWea<G<sVΫSlsyPh5Cz,3AlXc|ȺYK,o)$xs<nhu|At(~ДW+nG?7ɊBfk%֓Kiͦ:TlOLݴAhZn̼K'+m3q6Lc}|2fͱX(?ٲ~)Vy
l&+̫ďR@-ۯsQ)6Y@pt6*=]LӪȳy,Cy'TYpTl4Oc;79.-BVG|2lK^ݶ%W	n6X*Ux[B~qypߐ׹x週K@OVTU`,_THel_)[*cBV$UoL~߾-F\/rSd6(3}gs}K-*Opfp&	V7!=%>ZYf˻$)cn&>AUF+lܦ^qÿ9ZJمXj{unYw/a%_~T*a~b7vN9S(YN5R
zkSES? 쾥a<[woPǳV2^,;_`rxPTK
YFS()%39;%?b<!=^jS6-z#b<,'%y"ZP0&Feq:lE/΀pX'W79-V2x~o˘翞1翑1Mn߁wr_!{<ws;<˴ܯL*&r$r*7O"i^'q{'SC-XV.~%[#@A^'?j?{m.}/gscPxB8z:ΪgPH&o
˧1w}Q47}LcU'gPW3Y՞
S,x8ق/aS\)q#X.-	x`s_|l[;[ؖmRkzޡlgPWʞmnz3+`W b
	>2uyqO'>vd!DXbţ(ffe}amJ?e?`eP^AkA_r*WHMENcoI[G[ѫFuWX9}ae53%ZY@X0?x!n2!:b5)xF^&q[e''=ȚԍI*?qUOVԻ.bVOcGSk
ã)4%szk %}@ "R?IğjxƟ3hr=nsyx5xlL8FAg3;{D:X]	=a;ee7[87{?"Q˛Qqg]S8f+ϑ=	Ff)(Gq9	~QX?O0%x14w=',0̣ssFy%+WiFwtI"-w}\Vȵ`~g
+"H+c7EǨy#㏜9½ 	U8:l+\DI%M/dD&I"LFd EK'&%-dU%9jC25}՗	d~p~
~Nc	'2ٟs_堽fX<E<EUEܤܵ?gq׮tWhX]RݵQ؂!Y]c
8p<0h5N%x#O-usA[W'գOchZ}g=oJFa1yW~^\-;!D81V6id>9cǹ7~_@hh\g
~$-PKS  "  PK  D:U            n   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512KDF.classRn1&iH?9jR"
EzY8Ǝl'hSH<  Do< pVhb	.%BXyO	kҾ2׆WrPDO٩Sӕqe7wc6!#91ph} <>yû찻pGص.;5T҇r$Xa'u^D2˗jpnT&!#Hɑb1qvxi%xJ5_Xs޳'<"EO.ā]r,"lEv	B\dǱ35xYM(VLuo3jo?~S,CEY}:7wь\'<G<}?PKĆR    PK  D:U            ]   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/BC11XDHPrivateKey.classUkOA=u)GAa,yy1Hjv(n%/42YC{s; xjkD354"A5ix#:4j֡cDYGH%0aL8Cìe[Lbq<mb
/HnpE^Xk/deC٤/kؒͫ-Ŭt_l,#³kz|õ/nr&})K؞	Ƽ_pbpuG	IZ~{%iBޡv1Ԕ!sjKQ1W9[`#3vLcJnD%LͧMCAS	*VEA2V~%7#As3N53K鋧I.<@7$js||#<:)Ә1⿂/Ξ.eq.st5}00'HNG)Rs池a@K
0,\ER;^KǁrzXT|sQl/_NM0#gDpּKJuLTwDYmQRy?6Evzl6NQXwi=Pl1$iȾD7ݖ-xDѬu|H3Ax4pf1ws7Rfk3!'\},MzhO| k]]%zL	:C{V?;/h?,b9";[s?t:0~HޤVȧ<E;)(G=_PKM    PK  D:U            _   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$XDH.classJAƿɿ4"pPDI!M$X)pl@J|(qr0ͷ?pNq5E؏p@hXg[Bۛj|΄:g=KEiM7`oϜ+&K{kMh9<B{cqH>Q|PF/v^2.5lsTqwJKD.Mq,h$HSTD@44%d zE(vZCtP	qPK4R    PK  D:U            p   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA512CKDF.classRn1t	-J`RT" J@ptacG^'>C2@x(V\4?|`jhDX\a=µ7ksjsB
I37j&5~@y;Dc?1OFjj}Fnpo;{]'rVZe!%}>	N_8U q
_%nqNA
H&9nf7ZҐ-GϵrN2F`s^`Rgn_Wi3"#͍<]ab^2U6}&țY9.}>x#ְ4f1n|9α^bZ )V˸RK(7PK#ݜ    PK  D:U            n   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512CKDF.classRKo1&ia	
QCZZ@*TQ/gX6vuSH ~» -xǗo N1ЎQÕ#\pH헄15ІOg!rMؙSץ~E7u6>ݱKBslsOh:8x^q~Oxb]*vfTd3SoK=klglIo]Mlf
*mBG̱cb\		{+!m>7!g/y9&!,}u&tZח*TYq9"`!a/rΠȤIEp;=%1@ph{X/`mM_Q{3,aSez1r@JQG3hjp*|?PKɵ4ʛ    PK  D:U            o   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512CKDF.classRKo1&iH_VHE@*5%-L;:gT?'w+.@[Ǘo ~
K1"\pR_0Ն&>CO&ىSхy+q#67Or*	<a֋SOz{guۉQOY(W0ip,(H	oٰ޺긍;up *9T,NY>wZ	Ww&$m28#,YONŮNB:R2^9-DDx\r!<j˦p-%RixM3ۏcςxBšpkX4̇B_Qs̝c4h,wTQ
Z#(-OPK;(<    PK  D:U            g   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed25519.classOK1ߴݺV7EOR ^b)Blv,$~,O?JLɣ~A	c:v*!4{9!	݉*xZ.S6/"]xti$߫8xY(ᴙy.ւОu:­6IBVRX$"^M"l\3J&L aYwp8"DθBXֿ71@Цȟ -CNШyxV#cAGhѱl{Au. PK&    PK  D:U            [   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi.classY|\ed;Iih郚goBC[II4&;s%PWtU|?TD\DW
iKZ][u}讫
Zwޙ%wssg?h7b2|F?xqD|~V?'^"a܋Gd>*1>.nLH8q	exBI>)2)yZ)բ3K%|Y?
xqF"<Y5_V<+ؾ.B7e_[^&&P I5xNj@es~T&</.؋B3	M/)W%؆_(~Ͻ+w?KE$O2K^ėe(^]nloYj04+Qc1-&*^nI3D99
@!I"P!dhPHQ02w
)iKfS$玤t䎤)"wDRG(QpovB:hiڈf؄50Fh4YQR$	Rx(Bd!@Hx<ж[,!EGx}ܻF7t{zH
DTc0c[1\
a0C7ȀfV"Li#0mRm4hJP4SS+l*
lV١nJBqKGLm!9޶DM
d#>]6G+J{l54ܩF$MҢk {fv16=7!ݒ|(_j}0g
vdc:3ʨ@&h0@h5KT.QD>=$B9.T[%T״&PUl7lm9n'LvBf_EKK`HCU3%8URSL	Qo$t'umzf{̸Ҷ^+y4M=Q}PҥNMvLNo
>;	WO;B
>+xLj8=0nѨiZuQ=Մ?oW_:e4Wy42ڍCjDO^k2ZZjo"VBUb\2 TMv*yHkV@Mz@A֗[tBW"i*K&M~+\ޘflslѕz~cߴExÆygŐ4mN2ñEKSjT(T'1hE
hBhBkh-g@ޤaSYuuS͚J gb c	\WUJB^\EXu	N]g̷<&k-dj@ԆTC|<)8ɌXHBF6Z6ӵ
}
'j!B̳wq9%E's%U$d8
[?g3'*(US )m~N8U
'yŹlBJNm
m$jW:AX^ZwYd$sU]qt7@ͦZW
JBei!=$ҳ4ݭZ=K/h
E
!ޖ;8gWf_Gdyf,w}Z
	gڠv̛*5#; LT&B;Zw֚Lem.37MmHm]xAu. YAw:#c2|W8Bi|x$s(V[{o AҍvU|e| &ecb;'(O0}ئ9{5}>pLVO%9R]1VRj8fU/S;&+.9
MN"~)0oDւR9+f1^*O.!?h>i>l,[b+׌t]G@XX#rvڮh*18WgP<5"HZۅ"`\r^MwCds
@}Ufj:>&Kz{wKzŌtsN[,cݖs)nH<OWʚIP>ht@Ńm6(ʿS-{,+.w\Cb#O*}0A#v/{0N1!sX!p('eb/録Pbiuy	xeH#sXKV5dvhiǣ3#!TlWpD-s9O!{4aߗ'M'Hnk&b
 
Q @<~9[q;6㯥' 1#IxEhtޙ!P
4XpGBrf={C\Ϭ{XY.b(guuY(zCX"^X$+9:z
Q6}<	#8*|ct])=:e_Iy0Ung)TO`1\~W!t6&!Rq(<ۢ1,albɉM`	O;=-*dΠҳ
2#NFFep-Z6vllFЍу0zaz܊>bM,cPq!|
A18˳́|WYhY^Z,WN
@0<pfYT8ԟ2@cL.~˻	 .`AF$=jLSh<Y!pn|k8[1n	<+ϡ.pS$ᄛIܶp0ƣX$ّ+Ne޽ybXwka1w{&J,㉱kQ̿waP{cs<1~Dyǭ">.-+w<b|> W#gNc>OY8wi6uԟ >:
GEV|5_Cj11æS|׎si-x!w:8*)7̪nPUUG$b˸caU| gpD$l<x4je΂3\8_Ep<
[w7{V>ǋ93/S/EʁJH_R	M:s$"*_H/	y/<ZՌ|6;Ÿߓ@:%w+8:Jn'nf~>
UEӶ
kHZYwP΃o1ʿg((Q>(f>XmB\GEM^Q	BTa*Cq|xUSR5#?(os˲QŃd^'8vw:nve{	^G15B@~]bL⾄6T랺/^-O_]1I~=$jB5;AYkM>'q}_=kKoNK-1|bMiop
:5` >97:ޔknָ'Cދ4N4^rq\ray*f~^Yv[bU~תX_?<~[1nmǹ=anof(G}#p{+^LbDxg_PK@Éh  A%  PK  D:U            m   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512KDF.classRMo1}ݰҔR(VU+Z!BPԨ*8:hq#	ڟũ$~@T7 -xofx|qxXC#r&VRTp+E!,kKBqJX8&4dg^I{vwtisMJB}8>vv^|S悔}|!ZU(CBbذ:/"puؿKpuܫx@xGCbT	шJЫ5A.gOx5CH,byX"Dx#<nSδ4E&ۛNOetecla)~rQ5\2S,\|<GgX2^rs,WTQ
nL'X!hPKy    PK  D:U            e   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$EdDSA.classJ@ƿIӤM`EiS"DzlِdnRcy< >
=:3of>p;RU"&	'U)S6/"-ɷj[>r,㊍I,A,ք6qJRغ8"ިM,l[\%cXȎcZ'7<&hQֲuOs9w1p1;9O8a(q7A~ PKt    PK  D:U            _   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448.classNAƿAkcmH4РD`(얽	YrAreebPƽ3ed?>\YCq6zN_ʣ$bB{
g=i,U<yӝr6*Ml髍<HBm.}L\J&v-VިLI,6JnM:b+˶[NV#V 
7MTpByEhNa;sY~Y5ۗI3wr#T}}wRy}GVr/P)=)yvTdBbPK'    PK  D:U            `   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519.classMKA㻦i^:ڡ@J
/$Cۺ+: }h.y1gϯ hQQᰌ&t|;'vɄD6vOrRٝS<i~d$Ul]2ꋵKBe>~>&[(ZɵbuvfñJ#z.uqD>60޳'w&"f%fa٬n_9NPIQ
_^;o
-k6SIrAȣH.,Ze
TPK(-    PK  D:U            ^   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448.classKBAǿϟiAvh;	An:sWv:}.a0_ ЫUG	i
BA	`I&v̈́\^v+vrҌ)=q6*.f+P_OO	c6beFeJ4aUrX=5;!}qf%3^Q&̥1&=?ϯ4U
@~b-tWy+E][1SJh-hR
Ȅn1A~PK
nL    PK  D:U            _   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi.classX
|S6K~(BA
Պ@BRj2uMK~97907H6s9sM:6`$-h{νu=7O3p@J\_|Zgxtng9opsQ|AF	62n&Kn.c(܁M6KpE]l1[d%#g*I׍dxэm2%|Cd\/a@dMcdSF#%ʘFF>*&.ndcHF'#8oG+ O2		ߑ2ZxR|ߗ	O	>xjJ"&$Pq
W/Y.9l-#氵Yk}
豄%TW
S@f^O1Ԕv9=	54UJ,wغAQR3{M%QL۪Z=U!7nEn4P@WwiQ<X@N.UV-%תƹ(aFJkw`YKK/$/3>.kE"mR1U5	423	?/qS#w9TGCʺiYL&	?QKu4X\oہ<&!+#+P֢eIF&X*"~LEXrZ+m.R|G\dv=iԥ;u|qm&	jS
#"A?`.*\AG<Z̓
VCz(b¹)PẌ́i(^'J37~/p-WyRCEY5{Q͐hT(QcSoR(yc
醡hw(\+%҃<OYrdCHRqCªWґW+Lj!+kGz6p

H6HK>2<Q)05oh勨.כ ?:"INceXWL4\#%~)w;7F#6!"IӲ[w>"1BdDsFyyHq$[UyX
n<3L+rgf^$?ygDN)=[x݃m8ݽ#09OzoY
Yyv2WG81:.]'͂ҖcqkF! Z\ .8VNFJ<V̬,~#DTnM|@f'm!7\[R)T)V݉aʣ3>zmg}7RyY,ܺ$ee¾\gW;-.z1`uѣ*5qefX~ȋ夜;R-]%@&u[e%I%FbpTW;́n0VcN-|`+E!jzlaL[JffTIt*Xh+-5{1[GoJ>Er$xu`=BIZWFG?Pvhs]RT	)Ӫ]ɸJ8D{b9[TM+r\zPY&rYh]3Uz~w=ltF^J 2&B\'|3`x-k220e**g#NO/=%Ԣ&Vq~_nTAaVpu")Tp'hH
._@.&UPWML}w'vCeb?ŘQ2,XiJu7
Um{n3| %{ɪǨ}33{c][QiH+F"XW3igXJc<ZpV`pyo>4A-=(؏HI$s	\%ҊmrmfYtVl 
|IA*t;tZej5qq8>8a x8ӞrfO@3{=;(@Z)V\DYNQYI7firil\T^>	UW}/.w4}<Ě[av$[=ۭe?9k}\}}vVLҔ3::ˋvO/2h$uqjqy:$/Nύ	7J[BIm%3+p`AXد qYΜElj0SZ0iQ´z&yb31#<ᧉSx85x&NY)̮t̀;](=tll2܏ vQ(<@ArCm?2#
Zq;ȐWzv˵8m"}bUXKOd<xڦ^Q@{\MNSBBy|sShڌ2߃lBQq4~Q"4>K_7E}?|{)1X&<GyJ/PHV|ֽLi
WɂYp ZBm8[{6QZxRX
S8lI60α9)<{gV{[Iw(ŽG&~E	CJsBJ_.:!::%oЉj\QL.R%UI55+iU
JZ[C(j(TY^ZPKvO
    PK  D:U            n   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA256CKDF.classRKo1ݰ҆B)VTR
EzYqacG^'hNE Q[q"Ҍg<o?~~n6Њc
5\a=+O5@Z`F$KGɐ+5X'n5M)RM=фlHX͕@p ~	{}gΧrfVZ!#}1
N_[sV@V,; K^#\mbךhzIn$k5$͈Ty1PFKa7͗s2<$;j}rJsמgnu<:)YLT&צ{țy5>cVx#6pi,XioAK'X\gZGOɚ.b#\,DSPK슛    PK  D:U            p   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA384CKDF.classRKo1t	M[i%xTPQPԨgX6vu
SQ(V\4?Nx54",Xj
.ĈbO5@F`$KQꧬ{n5uL!SJ<шlͽ*eaeGo0]oɣnG컉չVYHIj7~V*U8ˆ/ɒWW긊kup 7^sP{75RehD-i@ZZe9j;UYF
#9I05	4יsx{pFw0Ō[n1/*kvʹC?>^5,2Yy~++*_P=	?sLe	UYSy,<¥!J
,PKi    PK  D:U            d   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X448.classJAn]՛^C+E(؃xE)BxN>'Czh	|}|av=B&\ތ	GX=RH2|kOʸ;٩`tm(Bk>[7ֽs[ʇ%Vt,إʗgtmD8 Ce0ʍ=Υ5Z*{3\.GhHlJuZśg;joU?A}l	aG(N5A> PK7#     PK  D:U            b   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519.classPJAkc\=xC!BQD	K$xLel2$x(q޼:
n:M-԰`7qnnoJ
9#mx'3/r{5Is^og."˜&K}kIhe˼`пQ>!Q.Y,\(KHάVğ'rX:ǎp_aaw^Db&MG摷::Fg@pڡwTJBohʏny2.T8PKd    PK  D:U            e   META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed448.classMKAߴnqѫxh=8=U"Tz)3Y .=@B$/$_ αc
B'yi3_	'Xؿ\H{
o֮G.w׹=MJZc9W5sEfJC>gVKV6at(ν56!<M2\euި?򜵑xĦTGUyVcm=D/-!5lE5߭&PK&    PK
    D:U               META-INF/versions/15/PK
    D:U               META-INF/versions/15/org/PK
    D:U            &   META-INF/versions/15/org/bouncycastle/PK
    D:U            -   META-INF/versions/15/org/bouncycastle/jcajce/PK
    D:U            6   META-INF/versions/15/org/bouncycastle/jcajce/provider/PK
    D:U            A   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/PK
    D:U            F   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/PK  D:U            `   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed25519.classP=KA}sxFcZ$.RH&DBnce/?J;,읁|y'	mp܌ǣMhuMm*Vyi^IWd,Jw:a+o6\X'DS#rՄ֝6x 
k"&t2\ݸNhKBs'LεEY}O8/G]5ו2B{x]A<vIaC{#;@+ ;o5/@hD'~:7ѫT8PKb    PK  D:U            a   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519.classOJA};&DIC)6{Cp=v/,+Ľ7x0B/Bal솯^R
WdķRl%ܚJrݎ
$$r*dal䪉!zJûmDhz|TZc|+gBoxmf:"m]+pbRb̕~&3qbVTUCmuCsAx6`hϴ&;Ʉsp
3m?]#Gom["g[#y`oPK21    PK  D:U            _   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$EdDSA.classPMO@}\<h!AH$\j8x[RRvn!d2.yv&7/`nNQmDhƮ*tEbFYsRBrfJpJr90Lv{<HK}_F	^IMʄ<ӼoWl*HU<NK`WW3َs;ܠs
׶<JGOq \VAl/PK19    PK  D:U            ]   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$XDH.classPNA]YXQg 1"!0tȐe,$YL<~ٛg~T+v@4ʐ(Eu+p;KB\k$͒TlFKZT./g[#P{0}dJʮv{w)2b,ӝ$$X6/j3kC3P&PR(F.ͱ
.L8QqIpqy?ESF"pVCTk#4~PKc7    PK  D:U            ^   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/BC15EdDSAPublicKey.classTkOP~68lAA)M.e,NB2AҵYڥ?Ĉį&c|[p(,ѐ9_H ^_
hdHfA]*e{ʦdZ*	IBRkiu=ܬ䋚XT5]0,WZ
,rɒ52Bn:5a3~jr<buhdKӋR]9
 C;SkA+G[`XƬ3ӶihC/ޡ`;DzUl(%MSZ-%2fQVH{,YB]2YI5Wc(K)2-
` Y}FCϳ`əPUKckn*GXl&V[~D$Aj
CCz&H82A8<>,r1܅KemE:5CkjبܒE(ۚ[d)RQFߗJD!c
S;	-+eWcb;,n4u2!9b*s%r0LY4W#=h5Bu7F'`h{vRg/Qgg^<<A2`>|TkKR%p|Bs67Esxs>JbۭSmb`Gn`W۝x$&r5IXr,2}	8@G#Fa>:t⚛%\>/XWݦ/PKʼF	    PK  D:U            c   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$XDH.classOJ@}ئƨg+^Z4E)BxlِdnRgy<~TqGg`yxog
g<qjJJ8W2Wol,][T[bHOԾHm"+kcWB B}t=e`<Yd$p+Z6eJU#4Vуr+Krub\--*^
96`"!8{8t	ÃGG8b_GĈctPK     PK  D:U            f   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X25519.classJ@ƿmLRcwӫxh=*TKE-"Tv
in
y,Oa~3|3	
1ZƾJU+|Aid(]ZstbAjҜT:Ij{O%Y鍝.uBDѵ.af1qr6/noC3'G]ҤZddeV0I8C4+)ОyΨΑ~7Z`1G';1aqP\ @Ii2_LFs?PK
    PK  D:U            ^   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed448.classPMK@}Mڂzh==U/EQ(Df[MM
Y ɻ3070Ű~&!:=DJ)骂JɕbVglt+HtndU[N6йFW|%R"pO1alBk4^Y1?׆:e"O⤬Go	tlY!ck썼G8s!} |c?	IC5~PK$;    PK  D:U            Y   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi.classY|[gu?re&v弛6J~Fa4~%vj;nQ^K׊YRk':ȺttB ݠePV7ˍ ]tenl1؀uOO۲=|.\D;򐯡@G!ZQ?<x4]Ǽ1DuAӊ!+t1NsdёH`k +"
v	s3iċ?
XG	cư
!wMr"%(%b|G	tPf:ʰ"70
SRE)fz34l>>׌XpȆΡPdȎ%X)»|&?5DkwuFÆ%Y;Véa[p+$C5hbK !?hY 9P˚*jXGh[Zk}m}q;5TDᆩ2ߴCް
+Q\:ܨ%2#u5'̐RT:C1PٷZM]W$G؀fP^9u+؄uL+uB<Yڬܪ""Z54hA+iV`%pa2bѨک(?2M	3Vz#+Qc0j54n WMˌ2m)vv(cХ=,"I[ygVfZI*\6a*pLi+vuN>BT+s8z;zO~ܝ0n33XeL =:ƫ[!qG˦{4>Sy$^B59IC?m1q>&iSC-=oFhfkDj!%}6#j2GŌNU!ԩ3y3NsWc
VGLNdP`㤆S:F3ة$p]uj֎#_#Sw{IgVܯ\	Xj׌ex(
3o|s@(T4~KoR&y]M!si%YH١ifdaIMbrޯa>[8)9Z~959;S^b:Ao,3+CBUuFPh3v<*`c:>rrsȌ 258#?xc(q?H\ UQov
Rgh LhGLD.jN嗝>3dqhFO|:a ͙|Nrc|O	2#nWY֧rc,}qNAfX99i	dq5LxVL{<$'$
	r
]`VIId< m{?2C-R%q5|<$
8~ܖk)
_&4_Ov996l؜vDEyHd_,OeXyMȋv_/sŷ9CM
)֛$np]ƫxS씫>G]	kr$c6N'xD"N@UpIUV;FH棦7b3j!'ƏtE	~N>Li;?3?U6"ǽ,pK&W~
Ip禨`kolVP=?KJ[:ĉol̔.&5U8\S<xLԴGl@,dөH\$2SʕbtL.ҩD&jR,
,.;0*#l_\]p"-;-#lQ猲nZj
unw{cw}N&ni8N]ẻ8su\4,`
Fk:c
aZF&~5{7{5exUP$*Nb،Z"G%0[IEFpWjLqcWNϜ`tz."eLZPኢy`+ {F(LU2]愱T26Sn#kЈd[f4U5za책OOTw˲f[Ź Mv7jE掀O CǌYݦ(Ų}!]DFo:-ƢFwPPnN&/Hu=A`N[a+fEHi
b%h~|6cp4DHpy'&v!_Ќ
E4e^v9US j}lAaY`rZa_y-u_ltc39NrB|&'K!6LUݛD$L(T@T-È䋂D
LգWF\<R>$k8 {\rv%V+TJ*
^[<quָ.Ƶ,OCeX̭
|y<p2:ry,<nx6s)W	r;ЌEhaj(ȧ	[ϴ $xXq)	t&~p	?ߋ%vǠ
jǪq<v]U6{j
Q7+
4m<Nc$Vy&YQǎ	tƱ{g{<5˿qT8f(%7kk.:}<ĥI=5>hc$xVL`(w:>uB=p(O>OY<@=c<:3Y<wXt؉Nu<%,,.~JZwE 0 ,|I/
JAލᛙ:hCCo4h->!_MVsYZk{|4([R٪QTX{M_@(J&S<$8>Ǉ/UV1:@*[TCч`>>x,FӨ
Mᄫ'y~F'dNΌəq|a.՟SեEU]j8˚|ILʽgq>=5KxI, ^`B "T?
+)$Y染m<=pDd77ɾWE<=|F1adL{r'ϒI|Ä>K_?%'ɱ_3 7Ïg]tْǏ̳f3Wǔz<ߣ<8	~~
1೼x1<e?x
q"y\5}_d$=e*Wɉȍi;N
݅W0E^|]z )$m
(7@`N[y1K7Pvk1BF\)?FT΀6#龖%
Ϫ_ QQt&KS>?S穊SXYDϑ𔝧1qoz9	EYlrt
HbiK&멾@70iA֩}?`u]	l~\?_d[*ZᗎGY	?eqmz0f%ԒːmWr\BC%\}WP1h!Gh1NR<DtUe	vɾVLЍ2ret|֪7*p^}nd+Vvshu.=j.G=;y`a.n
n{VXr:PK̘  "  PK  D:U            _   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/BC15EdDSAPrivateKey.classUkOA=k鲼""
 QDÄXFc4n)$&Fwm{={v HC
hbNg삥uz9uKw#ӐnPzsiHI#q#7дjZưNUN1</q2!w|j
1Lנ5+ʛ֞MZ)hІvJY*]+.{XNIc~~VF*:ЭjVzIK
i04#1Я྆2t#yϴ-cTVogE#p.,,w!㱂
Oa4q^pL<5}2,M.d0 ˌi5d"IA!3P?:ҒZe#7
^@*=s_`m{^N5jL.}d2~y4A4)Ӓ[ÌtމL<j.Ap9t7;4']pbhM{B?x+%PZ+8d"2b\8B~fJg.8Ѩi'_bka.i<Y#䯣o(z"{9d5e۴b
7:>ӷ~]w|:CEus=L
#)<AK"]ëR9ђHWYD9^'"BNaױQ";]&rg>x(k{*l/D4PKcą    PK  D:U            g   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed25519.classMKAtݺ֯'zpCQԯb)B ;ef[$xt$I?>\ BpkkeZrIU9Y82D|Υ3:ugeTidab-hצ0區3$c]vuݙfLyE3!.{)PJc%5,=)U"6F!$RVy[ߖ#h	aUS	4qPK^    PK  D:U            ^   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$EdDSA.classPJ@}6mڃ*HTJ=Dzl!ݔݤ$x(qwg`f/ LCa!p[\Uc^IW,
%bk

V++Ⱥl5axe!wR"r/Ƅ_;.ПׄA\eL,UIپɴLTU[0kpEϕ	ы1lR:ǎtpM3G%߇z懾+<äSPy_PK&     PK  D:U            e   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$EdDSA.classMK@ILuӫxh=<+BiJ"o6lHe7)gy<Q6g+smޒL줰MI!E!9YQ9Dخ1J&L{sF4ڤk#0Vjn/&C8'+'>9U˶ؼt$Juk$ߩmqE!60\mmvY)eKED90r1r)ν}qE;a}vkPK{/     PK  D:U            _   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448.classONA}(HcmbX
%"CaMȒw,+?2]gL2o;t#Ccbe*tybFYs	[!]rnS.Rn $6ᨅ
:pޛmATfk&u_F	}Y%LLg<oWl_*L0{xˡᦼИ˟	I9v@?UpkOW+>AJsRrM"gjhS!RPPKE    PK  D:U            `   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519.classOJ@}Fjk/փBRX,^"EmCْݴ$x(qO7ὙO CtBFƮ,pyJ|#FZW+\"(JrZOTL̍-j `8|o1<l"D{U>b86b/x*'^E"D?__z`fE4eKbz&NJr.chͩdǩp`>C%:qVj!bqZhW`nPKn    PK  D:U            ^   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448.classO=kA}^L4פ)),A"t:ʹ+p?+"? ?*dԙx0@FZK7PbA	s+Xܺb
DL@8m!F#'mt>$\uy"f-ì"FBOT%ԻE0+&l]{, .}iИϟ	1F=?A!c
-
OzԱG|T7%Z:.RC.x#4PKƧ    PK  D:U            _   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi.classX|Sn.<k5H6* PD!-)V6K$&7ժ1לsTtCܴnV:7rnsc6uC4M"N=|g~@=|*
Q$0s֭@"f=z͈zL3#!PʪbPbTXGm{$k7M6tA=V{t3fjIZ#B	6v-!-wMPQthez
*U~)Qä8)Kd3Yf06|Fd!Zj`K6jI[PQ#;uXԔe@'jFj3X=ꥸ3q4Bq.}E,ҵFi]qS*3Gi֔Rn4iCZzgwVl&
iD¥cU'ڥuH8gOqSq7fJW`reZnU`azGGUl<"=fOTWpQCޡZLS0W`VYp"0C=#=pP%E>I,Dt君WV㘏b	NX0VF%2$pXJ>A2_ݼk!#@fn4`*V/P{2ZIf+4>'~c(#Z9F&U
Cfݶפ]֨8C-UWXF7N:)3?e̅oKгEкWy
X6f^i*If	1ȅw=8#C4ֹr]`b"\Һal%|VעǺ_wq3f;`P5{Rm0o^̤vÐ4_tsJَBDO<$l "GA#'/{8ܹ5OHyPs{{n/AD"v}P	Y?#.|` q֏+<Ky8ȓ8WKi>7Jl
J3m\-e@Hl2g]nbIh-UT܆/22OnN%Pt?_
Nlf}%Hl޾ǵ?McAx2lfgGiKs]V_]
Vq
x?VB₟9*-iT|_lCdo3
K鎰Ox@@q_*sδLf*%	i+ι:Xy$U\vY9Y
\P|aяߖVWJW<rb
>Iɒ/PT[2bmxZ*8KZ7nn?R7;mG9gV[&3έZ(YL9?5?y'_ؗVvHTdDW['Ad\E{TG?N;ŁS7Cz֑9Xz%yZKvlj]W@㡸V5aQgUU
"kc`CCʏ"S`պ1n/qCd#Du Kw×Ch3]p
H3φ6399 >OZSw_x.z=<\L?LBZ<3+>`IytĘɛp1ȍx*HlO9~.m3Hi_p|SGsz>駓F8}1[!~/i-\S}޲]P1l+\r0iM@-
p<YI˹x!> OKHo	޲$_-'S]|؅E(b2&LM-yH^"ߢjQ͢f;&
`V[nrOM?x2`+Tg+KZI\%Kb
HF
q"P+=R]E>LSp>̳ؖw
^VƷQI[,um'a&1XDrOe!X6,wZl8m ڪXއZ>އ}ha:欞c
X+.t테vƬj^ЉM:D'WACy9OlMߣlG/GllE~/{0[RΥނޢVz~.ܓ9W0Hgynϳ{֓&R{m^9q|
v3n6lP\Q-Dq
Y,B[}!#:u;~d9μ2ÙNg8 Mɽ}'qQ5=rg$.sr
g$WsrZg$etp>ff;VxgZ.GЃGi>^~iq;kFiJ<!KR^j{i崙N;7%VE4<fxE="﨡cmHH2d$ϰ$nނGp{[w3
zS_Opéy;R{%~xwc
4i<Sŋ%Ze	dBfkl}Ӏ-v۱SLX؋$v	{D{p=ܛwp=ܖw{xC{i=7.!}?$C#Er+(,OTOU&W:x^l%+*^`&f,?PK_%߿
    PK  D:U            d   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X448.classJ@ƿimRcwӫxhKE
J*f;Ȇ$[vB˓I773?_ pC-|]pkkNή͂],vF'`<Yw;U[7[=T0H}B;N_KBw0.d*ʌ݋
!̮;GȌrV}`}MJړBy^=@(?5F=lK:AY{ߑ	G#t`{m;	j5pPKqH     PK  D:U            X   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi.classY	xTo2&B&,E=ad+B@HB@4җG3o]Z[mZk@ڪZkvڽv"LfKBݹggO|@Br8T!_`vCt_<0:MfģzS$ $
g䖖m')p(*4m!_OAݻݧmH4Qlo׍h/M0-mEPy(jr)Pܦ
+O!;*kȀvF7E:JkG
![矻`Edw	}8^[
/ts`Td}plM*pHw?=3<WS&6-dh^wOpȉiX<	G
J=;N]2f
F¦\AY8up2/fn@dVd`*N95*5`K$9N?)ڳH;1	)<ZD*8]`rjׇ:`OMIY,§Ba:]mRۉ2.VcVO GPͅ,c#/RSo1\E5jFDM`ji}Zm"l Ɔp dTmqK)<,ua"*7ԚVcCJ7RņQz=U14*DlHM
q#7C97bT-lK؆C7;El8Hq
tpJ@|TfUO:3&}q-ozwm*GH.M[\ߺiA~w,s]Ea3W`9Sz0RQSE۴RgBq3?%T\Nh1wlYH&.^vS*.QVhLpC%'

ygsr1}JVp@޾.X*X@:.s6;}Lʝ+s֨>&lIUɦ_amfߍ*>/%vG}L0s2 (H vVܦvwN9¡޳v	3m.܅/+[WpAMo7b
6w!DFCxx9|
+oLno\6/{u41vtWV<[@~ax=+]S7Mׇ6YN
]̎zfiO
x$`%hxLxv^]{G-6iYo1CuXRm2ܚfK9o?y~[ug7$+Ǡgٍ%U<dZYzCv_PH2?ƚ(y-WZ+*~WOܥ8O8D7/˅g*~.ۿNŴ6Fu̐~xSYMBdYoF3"m$%o9[sV}.I]x3Cb6ڰ@
1ުG֠=,z^6Y&
2xe`۱NM`b]Y~H$u3p$*k1&fs^.[Ӕ[L,\	D$kI~'lJ5T1&3Ic:K|Ap<WdR%eb$PШǘ2ubp
}wL"\U-k&6bFT9c%F"EوE`wv޼R(3@-?Ǧ5;⑪As+E,۷dLZ00*$"gߴ5D}}6b:}J߈<n4Vxk3&l開q7[9<|_fBVuUQ^(}|?GPP
;0twKb?uE]Y^.GQr/&sm6om!LnqO叠$wb	NB<`<XJT`ޑ`{%
Z<练gx%9Y
oA<Gvx+o%&5@xh7D
s
?Sĝ^T>9-幽Xҝ0k
wݼغ+&#ZDZ*;XO[SzpQ?y& T"p
p	pU:]ؙ4VZP3GGk؅Pq A^ۅ#.'0v'E݆r%݅^W׃O.wgї6\loo	2X~^L.E!ހj&5,Xc1]yQ	gfb/K6Fv\;qo!nr~o50hP
T
68Z	p}WnècHm ՗[_ރ+%{p)_H&||:hLbvCe{SӑzEޒB&~b>H/'IQ$	}
s'Y,$Eʼ@0_E^#oJM&S_x3Qp+~Xb5{Up皊)D?~X;\%@W#W.r?uG)sXз*^<mxǰ=Nc,},9XJ_.Gcwcu߃s/ȑb'sAV2KiLڋQ|;HaVlX	dCxak[	3\pSE!f,MhSS12>
d A9fv1.11!)-^fGc0 ^rd(ULMQo`MX ~$;zF/~ql ;I=S,kH6215EV/sxC/
)q[t}۽4ɪ@ I2'!,ɒB0bѝ&Nk~& %1xj_f30|>&
pM7J1:µQ(᳀8cEPK	>V    PK  D:U            e   META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed448.classMK@iLRcU<BKJ*o6lHe7)gy<Q6gKnyKRT'diJela۲(p2yE(sQk3_>Bp*U_;0!qzFc7.DgL}VϚ2e*h#N?tsmmMkO
a-[-BȹM#W\Cxa;]vviPK    PK  
D:U            %   META-INF/versions/9/module-info.classYiE~/I`;};$$H BHB @oOl1ݓhQQQQQQQQQQP3nLO~|^uիz{wMD븗i+Hb	uڻC& ,w(vrrvF$Bs`8iΌUbmʙ~9a'tZ4Kj}u:
4'4idmyщ(zIVt~ŠI;o4%5	NdBڿg_ϱ 

AsR;H20ifJ{p]N$XKR,5<A+RA4W.)bϛbu["%m׎ÊJIjH7;A'0h3Ӝ\)Sڨƴ =S1]yN)ڞ:^yvɃZ{tnaƜYm۳}I9Lre$?iasr)_0L(aFsbߐGqh: ^mwvHꖲJRAm
_n.i./:-t⪑zM**%W2K#m8SsDyi%ۓ

ߥj  䊖nY%x~$|u=ʺíjva5Nd$
RPAO1rSh
&6-^U|^VMvhm0ї/>CtE)^֜g侢96_bZԄDNC52-qt/L
+j<q׊5WɉB@.e[r-ŨRmLR@ML[)l~V6=--,˴(hz-.Z\5G-j?#-F%Gug(9XbBNW>;;~iiSjhiEf:n;Ͳu$?HJwfq\Tt_`Z4nӹ;tY#~EwTQYyk
I_g24YoNghZv9v9ם7oE8LU-}'RA]KS3cU*jkΒLr@Twf7&]#~^ι_%,Xׯ`Я6tZ5V,oue-8rr*;*rcU?Q׽j݄QBQw4aYtgbnӍd't˩]p]LS:Mk)KW~@-tvulۄ:֑|pWl\r7t V9t<!MRRv,_6G$%2#/RQM_B<Fw4&݊kn<	׋	ZW|DSdCw"kqxRV:S49*s]L<#ruE}ӒLt-u0yAޕ)yLlɾj	j(]Hм,k~gȺuoϺ5wd
5
^u3RgpYW5M!wueidٜuXsjVz	U5mtiBg%f0:ib86J5휓c9WW8/6 DfhE3I˫|Z''޽ -13V|DNsm)|Kte48l˗n\ٖr70bu+u;u%۽G.y] %s,0Vk4#olhcG=n7$@Љr{ɁLeZ0mcn;C4f_P	-{L#vᯘL1)#DCo(WH>
CëO#B_!L#68x<`p"p2p*p:p&p6p.p>p!p1p)p9p%0\\\\<x:pL]} Z@X:` / ^
|1K	x  |7FM ?1mOo~x_*Zo ~ ? >1aπ 	|c	' >7i S
Jf(dy<zfmfhmfhmfhj:ghjzf虡gzf虡gf虡gfhaB%s>$5՟2
cs^4R6qdqtqlq|qbqrqqNܻF\^ܺI\EܹM\CܸS\[ܷLq-rUG\Tk\#.y9^M\+>NqÍ2o&c]T~.Db>$
}X(QQcEyO=%
{Z=Cy8<|DSy:<B^Ky95Fħ>񙼃杼w^">AMPKPo	  "  PK
    D:U               org/PK
    D:U               org/bouncycastle/PK  C:U               org/bouncycastle/LICENSE.classmUoT>+nֽY/)eڲ$NskGۮBrēkGB,Hٲs;7 <
WUunpS[*V=W>TaE8[[U@(#.lΌZ0#`VWW7ha&PЮN[~.b,	X	1tZl
nɬ-^@x{cx¬Ӧ(6w<lM<]$S[3\;m8.m&3ayرԱ;k혺SM(#>Lmkַ-	Mʴ^(\tNZ-ٵe[C[xTnQ\CCadqlj`gyce(vM.j:ۆ%eKti׵S;la69?xv幜dgO5d	#?r
E~rcr}MIc@713N3vc.{i:]
R@Hr.?29Jٶ{&3ښ~?}΋MRN9Y(q}QēdtHsL3'\ȏK,? I`r	:bۿ/"܏%
4t"0Ȣ@bh&
ٙqR$L\zxb>dIxQ4?$T`Ps{u8"ؒ*,'95kx@~yqƓ~L=4#I?̥3R3߈F/ኌ
\.v7.ʢ5'QX{Ng<^G|gH]InxieX.];'Bų9=$M4zMS{DXRRɤAT*I G
ܭr>g
\7OiC%mUyrzW>7jOO<8k6**|pޭ=
\U.*| _"<GPEhrykIj!ZU%,NkvWo>ofp/^~2G˯!/h쿄r?`Ts:7/w.^ގsܼ07s-G`zPK H36    PK
    D:U               org/bouncycastle/asn1/PK  C:U            &   org/bouncycastle/asn1/ASN1Absent.classMK@mU۪?.m"CAPm.6&Cz"?JMvfvɾ?
C<_4M-TĮյ[1FAVo*=gzGp,-aPqO|K6C*̵s.;$^>횵%vUwpn\߱n,ɮ0U/ܨo[p$
):&,1l|eCjXC
$tdElidr2Ѩ1_Y[[]53E:bJ2KgGOXx 4$Uy"*?_kHV[Qn#*E+:>ڬ7е;h&ò:6Meބ
">Ŀ }G̅ PKMSK    PK  C:U            3   org/bouncycastle/asn1/ASN1ApplicationSpecific.classVWWFQuSk5VjF'31v_iW[
S/TO${}fϿ l~~<N	UHO/x!'մ$wi!b
D-3m2Q;`4DlHHo
[%I=Z<lh4fԊ		u$YLvdvaA	84nur#҆$̌{GwV8eIu4[LrKZ$kҢ3Zw}OTZ3$IWS˴i{dݰ"3#BAkfj/Ei!ӢCKЬfKKEGuXKtH:Қu9z&*HsRC3$qؑg"ɋ Sꖌnx+Ut$R~+cFZ6D67sqҝQ}@JxW|/m'*
?01NC])=t2$5bkw/	eIېtqbDoO~.EEEmj;X$d=	aZeCSV*i=s5	H,ʹq鯱-ʠgRUۖs%,ɘ'L5$3d(#$IZhNzdlI
{o-+OQgB#uB9R)D\dMH$2).mF&k1,wExYS);)	BKlsj1N=2Ynb]Л&}8m&f'-x+8-J[\
Rp8ElLWa5V
=*SUcU _,(*《8b10C
Sq?W}8<GTlQ;Z	s؂(kT< AETz5`0qCB.Q(F)R{$k
2`/:N)$C!͐a8pigex^bx<ëo(؇s
}ps_NL	*q'~ݶ=WKp-H Z.}C5g$7hu>LQmF0[/b[GpM=#^ⓦ,ޣ!#V*(rڀXI)0JnصTC7FLE(to(>zp
}l%븐ŗW]o]B%hp5,.9z1>UHW-RR}{{만[%l:l{,~(MeڕR.]R.ݢV^At83ː}WૺK2ng+*3hd)U^}W:{ŢR_{g` nRM},wkչDdsԨeӵ6οvSrcӭͣPs)%Pt9ob_mtwR^w
3vKF0n/lq?PK@
-  t  PK  C:U            9   org/bouncycastle/asn1/ASN1ApplicationSpecificParser.classuMjA_ǟ1F!C 4B
)附j.<Fݹ(ޣxC_eKߤpw
g$WUeS+X9kKT4:XI0]F@%xHHTG3>wA|p,p.▩j+t P<Jt%zRO2PK     PK  C:U            +   org/bouncycastle/asn1/ASN1BMPString$1.classN@ƿP*MT[ P"ZֺlIVzQK!F1L2;|3 ٫$ J	K7?hwqv<s$!ֵ/CC1jwOv+.\9R`w6w)T hz(M4Σ&4
)
i5NuGQZu4rf&hg}m`@Yqt0c~_͚kCfM!XB#<5+Ѹ^e'L,)PPq<cǩzDjP+*ݤ PKtJ  @  PK  C:U            )   org/bouncycastle/asn1/ASN1BMPString.classVYwTK'hB.ı$BjINY8֑,MKֲo)kys ip? =
s%9v&	/3sg;3wft߯t@>!.NmZpZ7V!t$]ߥcHǁgI#c EƒK|?z8gē%MC,	ȡ35-- p=P>3cXmN)zyic6M<bJ&HD΢SҎAnx~8Sֻk*Aذ6ppC0혴s=ǶYJ쉬\Yqli4Zy&PTӄ&iS	7f6kdl87~H;I~DxrXژq̜EpY,ʚ
܆6Ecg
ӆTʠAI+ 2`*UX떫z
fv°DdΞ6&=Þ1\n		wnciMy'kn]*`
6m]՛&}<KMmeP)*&32ʐ}9zvtvm>ъr\*8f62F0jܲ\k\bJKCJ.r+%'hvIӰ142Db[ng!p'V.aav:omt/tjk%*wp_[%pnc<jzE#9._gt{s	;n6ëaTd	\;ѨfSAV=QkT&nUq?B*"zAT܆Usr'R*vIiM8b#Ր0
`/

<#É8Sh[^ Q0)NLNqU0('
Fp2iNr5=~+.
5iY>]-׌8z>3LV<
T#FKD9џ!}E94<#1ߘ8op	/`ojyT_UęX'qz.UZ|ϖTzGUE%[cxM{O7m\<:uGQy
kLxR2{{^ZGĨZk=.
>庽zEn mݒ&~M&H\A<YSϟwZX3$^Or>	2+zipyz~z6^+uSp|/zUCsD{3Ќ|s2	'pw[Ξ_ʆUy[й{}q
l.f4^+Z%4א/;j+X4Uī!춭5tTwPx#5yx[DjO&1||nI5ƙɾ"ɜ1WZ5gӔ	EIϱ=P
Oidhi&,yWsl񏘛/>'j#!&)!P)ːi:DBAFjXT/`$Et9d-}=H3yP<^'Cit7PK
%;Q  0
  PK  C:U            +   org/bouncycastle/asn1/ASN1BitString$1.classN108~A#;"^"8V::-&nԸ|(Gz{ڷW kc贳ĺBo0d&aP+ծ}	]aa9Ҵ>!Z1a9һ\}J^ tEBV۠rs
sKcICGwD.Mnm6.nJ]ro]we)RRr73dBj?oEj~gM=	01Yo&R30}bpNOٖ(:aˀ~U,rUigJ`Q??W啉'L>1ǨO<bщ荈8_fHY&!F$PKa  5  PK  C:U            )   org/bouncycastle/asn1/ASN1BitString.classV{Mvvg!a mnJB$.xN;D-ި{Њ^E

Z_<oꃦ-R>'ysΜ{9g] 
JFUf
2B2ZdexHP[KaZz-f҆
O[S6,k4'In]
a[+@lh<-va^ֆsְwwlVa[';![K&̄EBD%LɘzR32TF3X*0GujF"^epiÌYsk	=],HRڨaiflI,ZĨi5FɤƵpD;9pPKQC@U,c1I'1l7&kv|ᄕᆴ	KIMq-Y>AhDO$ɏQ2rY%LSqv}7md2:ݸBq1q[feORҲ|I+L)t3FeR
b6ESR:YC9F6%ZE||"318FX%1Lt);0$|`9aZ	rސ06}6ZܰlDMLOpɛ{'cFJL:Mҕ\Ԅd{2T%mEPⱪѯ[cꊊT
缦r12]kH$lq'(֖Tfu
-6ӳVh^hsp`ky|^7mx~z&Wl>4V̜/&a8!B.ծZ}!dz22`{Mq+	\3a%vSQ8GѬ1vб$m1݈@t[UVTX)\hu7ʃh2c:OTGLP֘3N'hţֶ!&	wH#[Bz%).	$%I0 aA	_p@A		Cwř@5yKqp]E
=;Lo[nc27҇r3j|[niQ_ѿPpC7Ұ-1Mh"cq.mK*uLtވ>::YO&ܤ!ܬ`+PkxUnW.	A^)hŤ
:,vx|	_cqBa<<ۓl[\9*-frM/#/bf/8cJg^YE/wY^=?e<H^q΋F/x?b1bC?ע[lpU¦id>_M)=ү#\R&we`.gz-SOOPNៅi:DzxCxG4Py46Gc3g4/b\t{lꛇ#9]-R,~MY+VMxck>!dT$lA_Od
c}N`'|9)rsx[Ө
أӨsxs5Pjse3u^'lf0US`e5 
B)v`d&{jOCr]/HG|N(&)gIaNOeźP6z*rEPH^\S-A>%~@տ6n<46J@A
Jj/,G]S菼W(B"V%R@wqksq9~r8X5WNc5$Q8ɲ.%)@\$N9%-w>CIϨ}iͯr9ų$'iv3y]y}TP^Y
h	e]	UdD5
C{`<MoUłï3ɇ{r
N+t*|\yx*%'sD'*krP<9ssTn.N
N#]H*RPyCsX=p?n[Q6/A9!.5(=VFgٕw
rk Ul$?C#D-d­;
W~[
"gUЦPb|lN;?9Ϣr/N8!}fy_lnϡ
k'T*C>&']#j~{Xa~?י9'z	EBI9,	
ѩgMВЕYkë(F;U:W!n|tb<@a}6x~b?uD 34p+Qs> `!;Ŗq>V"8wx\Oyh\
"	D%o'V-ɾr q4|Axp,/s9ڨB`.ep_0o\5=4hn!rny?:n2D893q_HsN;"3Xf`] 3\v"\Y#īS#	Fl@jhug3zumCQQ:uE=jPTR
EeuPT$%uIYdz;IdMRQ{HV{IR{IVw'$L:PKuc7U
    PK  C:U            /   org/bouncycastle/asn1/ASN1BitStringParser.classuAJAE91Q	sŀ:S&ݡ#j.<TTf֦?>T|{psB6qI,	CM܁%.뢜Z^;muY-&BC+vvcML-kX͞WOMW{'Z&\*#/}<*pdvn}R8P8$\tZx]ؗg{8P~HSH>Q=!/R[PKǌ   Z  PK  C:U            )   org/bouncycastle/asn1/ASN1Boolean$1.classQMO1~ŋDJm P#S]Ztɶƃ?e+157+=$ʕ^ W97dTӐ#FPAk0ՏԉAWp.g6fvk [31tԅкxK#gT]rH0rS
J*ZܫW3s:)߲loXCB9&&,,ǢFNsMԼn>&nXY]^u5vO(>+X 
~X~F~BL45*ݤ> PK4I  :  PK  C:U            '   org/bouncycastle/asn1/ASN1Boolean.classUSUmdf)4Z-B)
T`(Z,]v͆׿>[Cm582S$c=ww!ڔq$s|so' 0
c_蓐g\:9b,16wZbsC]}x$o\"݈RzS\6PW4Jɪ0uP]Xu+TZ@7gk$W99f'}H+Y V1ӷQОI[_}y@b2+];l<]!̢Sп+7qeL3EZv1-S$&m[[>3fh"ʗ鰻NhfGHYE-yYjH?*H 	mVV)utZKң.6x晅ʴ]%h璶%t+ɥY-zj
,&|O5y.V4uA976ՔcSTQ`]L,XU3*ɩa'_z1*WuU"3m	{1Iӫe~u9}ucmV8;~g	e%%H8%ᴄ$0(u	g)Kmږ.a;cM~mC{ZeRϸ]b!OŚg`xkvkq:?/ɶs*B#ޛufYZ
]
oCAi89+
VC+_
NBQpm
Tu*AF)
᪂֊f881Md\DA%ܔ19N,ʄ二$>
N>1q8k.z/pΌwWR%cv#mƵ`02DNAVGЉEM杢a,Q>h	LI@g@zH5}pkU3]G9*` Vu6:^Ur@я85X Ĉ
H$apM4'G\ Za>B?$DB@NIn1QC9UçhfG :ƻ~B#a1=~(AC>؊ނ@dݲ[\#ğ߅	edpKsd؝Iqx h	>B*tK7`StRFyԽe]2![}fD]̷k}D۬0[]4"~6>QOb<xv{G'y.fkyB
fBxn!H{E:C}柞
$g!qǸ̓d:_|xҕ PK9P  e  PK  C:U            &   org/bouncycastle/asn1/ASN1Choice.class;o>VFĲDļt}FtҼ⒜T<C}`?CTvFv&6Ff(  PK~hScQ   T   PK  C:U            )   org/bouncycastle/asn1/ASN1Encodable.class;o>vFĲDļt}FtҼ⒜T<C}`?C׼ĤTF|H@QfnfIfY*;#;#nʭXX@
 PKgx      PK  C:U            /   org/bouncycastle/asn1/ASN1EncodableVector.classU[sumnJlhCܚnP"-4؛Kt,iv7lʓ~t|ǁ@ad,>2 6AN\~l
 "C-/cEF@nb,5?nڃf[cf0,e`l^cFzIwu-{Y#T1jm}MZolKΞPΡsTN<X(+}J{蹘21{+Igrvg'gfoe'٩ټ |kTU-%YX+h5ГZNSY`%CZH19%V&IjU[+X5J`X&)[ խ.NWe墕vA&)$jIC3K4G͙Etݞ}<콂^˖)`4gtTgmF[F,ݖ`:?cM[niL/T_Ket^6z
ZWU힀C\PVsEU]3qGZ>1Vٶyh]J0$ApL		I񡉝7HKyJhX4n-tԩiGPl{#qx{so9<a&o??iݝ)8>_>fҋ&{drA#<+
pAA(8_/w#	&LLq~`Ώ3L>Dޏ|ŌcMrU&8/ϙGPXE:e,fk=um2Uf"E\#>0E4]\sN
Mtn\ .=<?l5(C&@Rm834P#ߢgx);Ɵy&ן80уF]裏^3se*Q>\$H<#$r
/_qsc肸I|C_~Y66lȫQʤ.{^!$D\rskE9AL[bӓz۝x|\I$_Nl8午}tq%v!B]!ߩQIKpcao1,	!_N+^W8࢛%z\p!s?|zdeVyXtGN=^Jaq1yxԼOW}fCzD4ZI8g('ވ;3ѼTƓN=PBvrk	}iN@$"_|TFE),nBa]Œq P'S7h {Pq_+ȴ{M|PKVڕ
  h
  PK  C:U            (   org/bouncycastle/asn1/ASN1Encoding.classMν
0$Ɵz椶[QR,%65/d8|ADʒ]FJԎm%ЪsM)UgbˏqjL%@L'w?5S]Tӗacs/Л,i_PK+f      PK  C:U            ,   org/bouncycastle/asn1/ASN1Enumerated$1.classMO0d0&oHtax1@jD=i:ko5 ~(cÓ<mҏϷw "H^ }8G7d#JP |2>QyJ*A9<6rw:BrYZ)><XF;*{$r<334/ں2bӐ֠ihȪ3r,!V嚠j7<5s74m HCGQXVB~(nPhqN*
X"<թDj/(=RX%OBg%_8Uو1]uPK-{qK  E  PK  C:U            *   org/bouncycastle/asn1/ASN1Enumerated.classVwƒ=d8Dٰ,b;	X˓fhbڦ}u@,EiBiz$'@Ǿwg_K ZBh
#X?GF@#%Qa%<ǃp3::Qq4qyMjxd&)q]a
ȘegdH*tGs]p#tİ܈YY]BKrpl yg4y(2#O1u+H(Vp4=P
jYݚh'+hE[]b'-3hm֦aq6kt+cOd7鳭2$TBlkFtǱJ!Ь?"<s#muZzV[ˬv\86G2)>U""-d
M'}U2?tfxJE􉌷Ï=y\ϸd;-OKjfNNp\;%;J賮a[n^8LNwLxCSY<=Nl2hH#q*Po0tGBiLȦY-)ߣݶML+3']
mG5Ȇ
lt-'ám~sԘE'slYp
3!k	c=RRMpkve[W|͓@C8^[dJ~2ȸ[=2qPFC22q(Ժ[B!]GwKx{,^^ٺHs{0MH]\[5m-kK(ttɺ:W+
.&nf)?VZ6O/OYѦb7؉ߨUsTfӌZؠlR1z~3lVbӌ_A.4-EEM*:rRE]R1;1bY{SX-d8ll\6G#Q<`Gc8y6/*x'<fi6ϱyA!UA*͟L	6S>yI{6Oy~AxyJejʲtG<:!ZĀ6;M:vPGV[4sH姱Of"tƙPbCG(oi><}-鯈c8^;@gEICxjrǊx7 ۄvD.SZ7&¶" /88C>G-PAk}vgx|/5KY	g|C>.&[_om|2|F9's}}i8r!k8d طOpy(S㬇ԁ K
IÔe4F;%'wsRQu.zc+`n]:!ȼ<%GxQ$u%IըyPDOt'`Oy*gί.~v^uUw$w!\5~D'ITJOTx
ÁVi.cn	*/ǔ^4s&[AuB:~OE|UKwTKӻJ7bC1	a%q,ӱVjǋ3~gUnvxu\%mwv
<+'F;/mD~hz6S{%HrWZ-+xf<%PKvD  E  PK  C:U            )   org/bouncycastle/asn1/ASN1Exception.classuJ@ϵMҴZE7M Ņ t?C	3KC$:03||~ 8FhSyDJG)ϱz(5%bf&~e^JjKyhzp{TDeIR5b'6(F
6
@}xpIh>;.aU||Y>F+l-PB4:e-]H$NkPK~R   t  PK  C:U            *   org/bouncycastle/asn1/ASN1External$1.classN1Og`EDtY$Ƙu_5i!VąC/7Bs|='cl3dOa>1`d,]hQDa$Όt<uJFxֽlH4WPWW<ЍcX'C"ם{,Cyc*aSqkvaZ,O1WpqEͮ9"G |CizBKX=󠭵HfO
\Rv%ha}ZEZG27_4rT$ PK~J+    PK  C:U            (   org/bouncycastle/asn1/ASN1External.classW_201@ 8]ģڄXC@ݖ`,Qad%9S{I4VkZ%-Hz޷=}A癙=e?)>;<>kykO}X>هM>l"	(7,ǒ</y<x!Z1:o+j%޷_J<eDPfn3
DZXoNT̸ҧ)~<:)GL-a1:ggmt:4"&)KjhXdsZ@Gt#*ƞ;↩
kYlS4[QMuKiZ2ЇxB viZ/KZipԌ9@,2aPM$Я1#AS2VJ">56)th5PQS\͏zj]L\cUb.p<;2ú٦&VzsYC!cN*f۵dRDI:ـ~3KcHp[M{֭FW}+nCc7yMjr`+XLR ṛ¡]C)3[SQ[uH%TJJFEf=q$
zܠ[1Ո6;nʭl[ 3o[e(%%XDoFY]ODcZ3ߔ死Zt6vU.VٛFkZ,De62	E(xzxk]f.eR9mgBM{rrfK3vK$X75O+\,M=6o;v9Of&yrޙZ>$E4${B3>+f˜$Ѭ33LV;;|%	r5!FD-"n7*MD7Eĭ"B"*m":El%b"nռY@b%.]݌ EYMVksuf bǟ`C8*7;Y]DcX,s)Xj(`cf3rw{#ѿXu2]i33-in("P9N7]b}
*ۭ֜&F[w\6y.b+@CUNYd!^l]|R,e*|ȓMbvS)une@7yf}`A+Q%	
HXbLנ\$b7JH2A`\!cR8ve4㈌X:e=2jNW^A[
/Xc2=2⸌x_F<2A|XF>"c=>ȏn<V>,>,>łxL^<#};i	w$gY|9^hۓ,FY`1)@$D<$/HS,c1"a?Y`"4%pZ ^`I4Pq>]R}!'?wjvu㞕Dx @R
L[#)H`S<(/0
(=hgEPVYyH;k"fULᮞ	|$ׂi|4>-@Vʨ
UxJwEaRZePoxxc5EV^
L'[
n׆ІQ0
mKzY'P0W
Oa;Ua XؿXII|kyYbeb
<"|"tA.YTi9u,;ȎD;D-N
۱xābQFD_Yw2q`Z9唿oS6bͲ(w&/cKi
6T	RqvΦ0#ct1LOl)+>Ϯ?ڻn}ή"ʻI7p7:yi؈sT+h%n	9{	}3|^ߢ=5Ygy|lu46M)LfB-it4<#R|__?*31h}2@6D# tfe[-QZ=_o^jui|iu9guB.7=oXwDw70e,
Hr Ee+7TSXOHS[]5<gQhvjġںi*J'CK~spYW	BSzk:LvrBi
ϭ>B5E:-B_O7￀gtʚ@/IPK b	    PK  C:U            .   org/bouncycastle/asn1/ASN1ExternalParser.classPKjA'!G"#.]VYoǠ 
iqUTQU{0F/k.%jŶb#&/u
X`Gs1XV\TBoQ}O^N\?d%^](BM)4/`vGה14C5MgPFhĲ
PKq   )  PK  C:U            /   org/bouncycastle/asn1/ASN1GeneralString$1.classQ]KA=iEBnF&!hEV/>Mm3	zЏUw0s||&Alvk{ 焌Jvz}OzCFP
~?=Ǔ?.gdRlk9THYTu90BwdqYdJC(9(-ǍHRCR!!l[tH-rתTi^얻55J]{=Um b#CG^XVUzo?]#0\|0=dT8bQfAvyEWU۩lI$4T*X}EqJtn*ݤ PK9	4I  L  PK  C:U            -   org/bouncycastle/asn1/ASN1GeneralString.classVWG-Iܰ,AOBM%%j@kYưF_@#rmC;CbH;w߽͝sg_i|Fo'd<%!O{'g$I>pO(:LlBQɲɕI!a9%85=-yfPsXfQ3%(Zmȯۖ,L-4M8ƒȹY=OJVu(ro0+.H8
+ac;Ê䘛3Zqݱ.qm&hvr&w+$4UI3BBqmeO듮CgA+,z2L43b-2ݭAcQ%;Φ,EfqGR;RF\q
\j
	{+&uh̑pvr9h˺VpMǘ͙WbfncNl|WiKuIVSd{&:y\(S̩<ۖۅ-	>,z@m
ޒFkW7kor1\VM2dDeˈɈqRFB2e<#㔌2NfQF3[ǌitg.U.(Պts찹?!^>
hp{VE3kKx=I}1rl^DyOJeTE6!ѨѤ*w4؃*"çc*`\1.^Y/`ByLq\Sq3`7u簠</a^bK!\N(x8"\4BBW
ф$73l(כ^5mQMh<j1-?şa9	/xY?V^#wN/h=c#Fzrݤ'2qΡ7?D>Oo`dzڥK(PuU{+XSTUDKA){MƹiA{%iBO	0[|3˰f'PNֻwC0.>>4<U%Rlh7uFp'OR&mj,6\;5A~?v	nh
_%*ML7&2襯{[=X	Ei"b&D*1rjfHq/Lt>鄉2堇P6pi:XkӂZ60:hYǻ?}QܯΑyPK4    PK  C:U            1   org/bouncycastle/asn1/ASN1GeneralizedTime$1.classN0ƿ2TD&ĻAbH@7\QfVIF>e,M4|N`٫$ JvpK>b?&OdH`3vh(]fPTI	P߳~{27[lϦ/펇J7y8\vd@CR!!Z+nZ.0%U>mvyz?ﷵ
,!k yVt,bY}Z龜s
~tL})bU4( XSTQ|H`i
T*OX}Aa*Q7TD'OPKʡO  R  PK  C:U            /   org/bouncycastle/asn1/ASN1GeneralizedTime.classX	x\Uofy/f2Y66]L4IZIu%2	.ↂMYJ5U6)D"+(s޻4Z&{9,ɓ<rJ<ӆUSWPѨb&+TTJ*UPWxwN*ޥ*nPU>W1[}CIO^Ѱj:dQgrjwG=3;ZGKYXC*pO]z:)lﾢ3#I]ڵ8DK#FhKxȨM$@m2MI2qKvBv><lDCMWKOD@%)"z Em\ɝߟ0
Qh҈&	Aoڃӈc!Z(ٜ
&
2:@rP`9
x,^ZGƚZJ[Ilp1nN%.Cn//ǆZ%
񸾏ƈ wb=3T`lA˱DF՛ۥm.#$b>D=zWg>2Rz8
Kz0EHA
.bw!3*
7#c@r'؃Smy=+mEZ%
{7=
$$/Q@X[ߣ7cMa%ɍс&,'Gnaa!>|*`qwVͳd2g836񄑣nnv'<41rZJ#r=<٩,9(hKEz"186t/7KGARgWβ,YzS*9J}謆{R[$O-I>d[v4oQVr@4fSyO[y0x*j䩿UV
]**I@Q2sЈvIE5ˤ`I*aL14GPLɎ(<%CS`V.Kt*L-4˦9?ԡ!eV+إ  PЯ`@
TQU0*q	I){\MFwfKʺ,RtclY}C'q+1;2·B)(V`M');f$
qPϕ|&ۃ<$iz^fyOCd3yltir.@dv}>>59Ïg=O\6 oX4_otk<'l,3i˃5K嗻(_|vm{u?\pVk8G4`!&1_vjx=^&2Yބvbac>z
kР4\k؄{5\ΤV&0f&XO򲣬SK
o1
}.
]xPЍq
q\[0rp!NhǤ4.:Bx&On|Յ.܄g\Ϻaƅ'.܂|wɯ[u&0]
?w ߘɿ~A|ɷ</L"ӾL{L~L~LgO&/p~>p[u`p7aɏ]1cn75x_RV(I+-|.@ܜaA!6Kb%d}O{=FG0?,VtIq+)ia;'psn8-JijҢx\GsgWK[X6SЅ8rQdٮyOH`3؄vGpJ)6g6ƅ?.?t1,ʵM65>BPrJ˖2aB%6TTS]M@~2.*yqQ_RfYsߤ_(-b֗E	FwT31/1{B9bޭwlb}v-9̶e9ep#F)d)-V=yxlH%rkD6a
-.xx\VP1]!^w!zQ=$qFrjI_S)Ǌ9桚3ʆ\,IC9UM0G%9:/VT|c:.bv~<
{H^poGDZ$]5 |
ل(sLle/|NkDFEyZAe#౥2>{k2p ub&K+K~PpP2!NO*M
Z*y.%	 6n挋1"޼o[@<oWmA
SПeee'Qh÷y	wϢ貯쇱 ॴj+c(&N?GV5`SLE2&3	2Znœ˽2QFQ\8
q9ysX26L~s8i~u3Ī耟yS}\dms)AgGoˋx
t<ZZ/7Uy_'LTb;TGλ&\crGyVZ4?-_t#tL(?.e=ӉWPBNi7+ŢBQ,*Bo#JPVuPm
QUgal?zT~vt6l')^/k"4=|nͼ>w1*ʋM]Eg[\OfxsGhٽ|Hɍf̒7`)Ɵ6,sRqQi#VӫzhwEyOԾ
9 ֧M`E1RRsa;ʢ^3ˤ9%B+_M*6a)Q!M(Ҿi|)Rm%P2;z=^7_8%_>L
APK     PK  C:U            )   org/bouncycastle/asn1/ASN1Generator.class;o>AFf
0F6̼;FFԒrҒҒ\FĲDļt}d:tҼ⒜T<C}`?CԼԢĒ"vVv6F1|}dc$44qIIj`a`fa`b`d`b`g:9?%E( Rd17 Āl& ͥ_K{+F  PKbX   !  PK  C:U            /   org/bouncycastle/asn1/ASN1GraphicString$1.classQ]KA=iEBnF&!hEV/>MN;zЏUw0s||&Alvk.<$9|%`4C;\8OL9ɐ`\ƿȡECQ:ՓȀYdJCRr4TZJ#	MCJCZ*<*\05n[3[s	۳8_6 b 8r:tuXѱe]uP=)",2i( XS"T^P|$X
[Rg8%YPZ7T
nR_PK#CI  L  PK  C:U            -   org/bouncycastle/asn1/ASN1GraphicString.classV[WW0rWTBM&b5%
j00'ohWlYKۗ>G33[qf>}%aTq4(CNݶ\nΈYFy*P+랜 GnaJx*S)12o
TeF@
eJx)dᳺiX{gĚ'%Tx!Z.ǭjO)hDViݴ-Nujuk.w5st{z_tS6V֝
+c;ÊdE:G[?djyZAFx	4MK
)dQE}uCi!v4yV3#<mH6kwa'RcE\ö7Ԭl"`X᎗)'[X@tFm
w u%S/k`3ܑpvi`KwMڤMTxΨ3nuAر+-®$[dg:]fQ'K9#Mm\Lx6n?Z\TFصss+CCC!pYs3fexE^fxv$ǢXFқ*Y[)4~@H{<8.?9}޻-F)qt%xBsyS5d)/Wi3[Z6gSOvI[ꌊ4hĨ0'P,TQqVԩ`LLUt>!pUE;&TuFd)-bNy
0`P!*[BBX
. "BSpIx_Â(HcZ]2nW#	/	e)뭦,;ޝ4p5e-7)U	)TPyP'B*y?~O(? /#'BzWܗx_qW^@f
ÙUk(b)^D"W>.+nN	@z_IꨄjCyUA?B4vV5k4H(<-C?'AkFzB=10BrlX*|xXk5HXQZMDEh%|FԣG:,{ը+)9č gعoPZ{wYDv{?]٨9ľاS=30cr(C(kBhS`Z	#>kiZVO%KHt} PKN2i  
  PK  C:U            +   org/bouncycastle/asn1/ASN1IA5String$1.classN@ƿP*M*jL 9Q/jYkMْJ[E2.M0lv;l$t[#Hy9'707s<<Rq*8vMcsSbV;f#B;sP
l!@P<i\DM$$(
R
ruomӷk}si\zf"h3߅_Ұ !8r*TUhXQeE'g5\궩zZ1F3P}ddbgA&wy)Q+o%4
2SRg8Y(UUIePKXJ  @  PK  C:U            )   org/bouncycastle/asn1/ASN1IA5String.classVkSg~$lX"x%$Hն*MAm%auF773NgP{	h_?tJ]HH9Ϲ}w  ʃXf
hhږfd#i0L;2FPИhF6麚QHzTZYhKҡG:$m9K!CI^EZu08$弲3C!
u콤m`K@cK:S(oIOٕs6EK릡Q
tiKUl4[;MrH#ԸLiPrT)re#ݪGqAղL+j'B1Y̱I[m,ebSW;,g21o!^@=wyuSwHޫ>Ja~/3dG;Bm9|BM%ԲsN(f&}]iuL:Hu$$Euiҍnerc"Ԩ
V T 9Y&˴a##E{;޴2a3g'JF}i2q	
6חsI2hآ5Y!
rbe}pr+uЦ;@9[Ư*vP*m\3f ^	[EO6E񀈝"v-M{E<$a-KnhKa&i]a/nប%t՗UJ܀|'
(0]X<nb7Gs\ ro-t;YwoKMb%*:y]:"cd㨌Q
e4P-#&԰6,c؀1%#!1&LpL<!OXecˡ؈
19!Qpc%t$1	=ЙL09+&JCNB?&L^0Ka39$+c|%zw4nENj9gTǪ[IQ2!ʨ}Vp7
RWNa?ኀ{ʮ)lIEy|$S3IM㍰/y\%7qVOXr@ImVҢVؿI;㥽>'mSh#W< |nM祥TX+Pw.0
qI~ĹdƯA,:^^Jqåo^Bf%e(
绖V
He<'Cx mW]TvpE{<D[*OWOqF6ya@!~|9gX_wPӿ<=BH{>^V,]Fw-7;9~zmg>TN|SCܯ~ik4~.WgH
QL|~'4T7)
HUϠ/8ۧ/_PKcA  |  PK  C:U            +   org/bouncycastle/asn1/ASN1InputStream.classY
|Su_q3c$P-1Pn1c64)AX-%GH!-mҤm4@B4	%MۋH%ҭ[ۺvv{O_ƒ
~s=sϓK n6̳
7ذ؆%6,a
7۰ʆ[lXmC
6ln>ol
%#zB@4JFw?Y*:RSGÉzYMt&eM[6ep0	yb][[p[`I^`lPgBɨ.x8$ݞ@&x($H(ڝX:|O`
ګEzXU+={~fH;hŻkCD$T菮ڲ!7N"p:X)$P:=H1OXٔpy3-;c@<z=՞pwfBcyVLG5)5SL
$؃`~-ŜPpIi'1mlsýDx>i[rϳ[-J2h+
6$y7sD)&{񆁮P@267FzטRw[7@G<%5\ˬ,iHbqB7m 	j%B!oM`o:KcQq)&[2f7v#Pw !=&2.Ԛ g iDMi
lr5xPpB'b<v~	_nMq+zR̥P,s3rW@<X,
DJjb{"dP;Ȱ12|Xr^<f[u{(J"Q@½RまpgoXDݘy [2U͛VޛPg<ܧmZ?H.f%l8>ctu&8
0P$7Rˍӽ5Qver<L,y\Q<'d{ۦ5D(3ޟTIhgzȆmI&ʙs웠YA#aI9vCD
I;'ܟs9* R"IIr 78OBinrT0Ŝ!gP0QuQT宣Ȍ>\5S͆H`,UhP%Mp٨+NV
C56#yC* ^O/HY~^R6K["U"`u\D7ߧ%h@Cc|Jd_Iҙ@=
6Ok6\)|ƶ̩jr*^	F&MK!ᗸS.fmm%vH|LvJ|\b}%{$:%!.n^}^DLO~DDBb@b$aO=>*)3y"rRIC~s-1wp'K=H3ݹ;`Wqc8;Lhk-lNGun7XVq-W_-(iZeEGcedcb3>x+~񦑬1Ff
(|5hA@^ z">'SE5nduF~3dUׄ)Y!.z{N4iB.5ufUք_1
~r}MSVNeS~Ï~INgyOB&K؂>`&z@33y'C( b_td_'4ifdzG Wm9us_}b{duuꩮ<xN[O<v ۍ|]荵`_h^Zg6:Ip ;E2[KX|!$pCdF} QoQ3
-#>,^TF\èR؀*0,C#X='L[*᷹&s{1!S @G#G*n?f'SsO*>rﯘ5aL3&?cLO_TlXgLϙ1o&d?*pEE=gu'|B?TQ}b*j&kYŠ02LlLT|D(*֊E8/T&LflOrO<#(8νbg\ω%
NqXd?;</+
N\&T)I,q
/
Ή|URH9LJ8,dI5uL&L63ia
^(XUuqo5
.(Wm
%n`^z&[QبD&Rb7ZDˢMb
YcLQF[Τ|&no.a|O8X,`n?[}}m|p|&tGtR ׵7fPx}1Qo20N5l8j.eE@kT|2k m^˔}Qn fey 9`!PLboQ1f7`Ny]vU0*:t<p9h
9aFfBa
#}
LKct{yTq(I-BB"n%%8"yQյfs~2x\31;zsb*{O@lz,2<"vL+і~z^yr>zzYgFıTy|q0x/u8}%/x8NN%e#5"JfPgDF)9N`[(WH0ksnNLxGS(udo/ÒŰ9&Cg:]Z8^h/Q&icb1O^;v/QZ:a)Ҧ}A{3L6|>EOa
3}^g4:ӚQKJ4	Tͱ'
3،B\7KJ9VmI}4[/ð#voDDfSG拭5;	̪r;obA^.%rtnLKo|^P$,&H,l.ZSu1jͭ֩kz2Zt1j!g[]>\POO'!TzY.1E>>ۣ(_mΨ\E&w*-wfLTbxR휵;}Ha^ļXv#HZdR!Ś!wr&?/s iw2-2.vۏ֙\3h98J9e1`]Ӆfsu~u!TWP6yMmO@*3Bj%+UwRYIk)3[L,ZfMN<2cQf)3}|X.gRĺ9]
8cLwz`la+S
\a*\km"gW)`}[L[="UݮrXIlǳS5kt8mZXz<8dJ;--tdmkN0mtmlZEFrͫ܃G^6v-:ךZ+u-͵nv3_z<8YK2y'Z/,VV)eY$	+8\w{EUC9gs{.gȅ(<!%D}vLѮXf$1'kv:fbix9=?gTiFjG&驦wuS
=iheQfLҘ;LeܧDxW5&>=&X$vh>bS`phi-Uh_2_6F>c'5ǂ\Ňa)mEMe&PK(j  )*  PK  C:U            )   org/bouncycastle/asn1/ASN1Integer$1.classQMO@P*_b$ȡx1Ԉzᴖ֔-$+GJ&"/y6f쾽:Aʬ}FJv_#FP3YW2)6ȳ;]*d,*x:."J`{:+H|<TGx|iHk4d4d}KG
(f@5{j{|6Aǜ-k9	
$QСy,i}n
a&,0]Tg$̃`E튊4SxB_PR%S{3JuMP&PK[YI  :  PK  C:U            '   org/bouncycastle/asn1/ASN1Integer.classVYtg! H8L:lbBqI:3IlO$"ޮGXV݋IvѰ!79`|^zVzͻ￹#xWA
)R_!OJGڢ<ʓ!ʳ`$eܺHt/cj02d=X0BcT2)Q&ĒftjPj#a-Vi&Z̴b!yM@J'5VtF)DVG8wj+}G%T,'Pn>=mn}OgIwz1><(,rS
1l3@F:fI#V:٘cmg3I;v&mаm˦
$'J_阱	JöR<3TêE9)|*HB-<}~!H<'"Nuf34z2bRI1H.*X*73e܌3naJ?wVgto&fL;ٵ&mәL+Y,m(ZJpۊ֨v"2N	h}t\*V
n"$MÎM͚ɸaK认^3!:YB.RR'[g$hlL8ICO&g>a)|Nwҙ*ı1;$|0j0LgڴJWrfZ:&ѓ#ӄlZ:f=TՖlkڰOneLeFs4ejWϱJϗcyCrk18A_2ȿD~d8"㨌>Oʈ8&S2>-cXƈ2NxJB[#zukE6kx}|)o\n%ۉ!Oj=/^[{]=pܵ\=<Vڗ*0x;> "ZkmI߳ViHq7hCb6Tbv؉iQ*Pb<RU|*zPfԫ8mTя0/4hf~*=S[ŇQ18*NhFVE/Ϋ؋*>ݸ"/(\_aqŕb!!<7BH!Lk,:o.!"x/BOB8X|+$ӧ_ƷY|ŏBs⽹
|
/]nj46l*໮bc#xVr*i
؁>|揕ϠKGz
בFa7.o4{B;ioCeΡUܤY}߃1zx&Ýnѐy~jZE x"T!	$e~70#;oTVB]cQk^9.nhJ>+[Ik\xz < IểCofSkC@;{!pm<jᗡ8+e
 n]uܘ-8}S^ɣa@{E
'̇AvHrj~sHT@C	BWע!TDLmRx4QrxWbkuP+ylb`=a㦰|
[yj\'u|?WD>dN^Zy)R>2uC#|	U)y6
;\NK'V'C(Z|VS/*[dT?N{
()]yB
_N"fvm"NG8wa&`=5Ay-q|'|Aըo1 [[<,6tqwr@
l`2Vjvo-6XQ0qӓ&$2]*ʞ{}ٯ<UNMDOz
n	pך5讒y]}$N#
ߣ-M_eIp)￐%-(LajF	kiEq+ PK X5  8  PK  C:U            &   org/bouncycastle/asn1/ASN1Null$1.class}N@ƿP*b*A$FuMْv!ƃCJ&$73o M0˽A.OrNdpǌx`q_isG2k#LJY4U۩vFG(U	#BUB]MrqӕMCJCZ
aZUh2{rkqs6Aۜi/y:Бa`M2V՟3J'0B j8DF%M-yjWqOVf@AiJWg"uKLtPK0J}CH  1  PK  C:U            $   org/bouncycastle/asn1/ASN1Null.classT[sDv*EQ
44U.MlbBíkq2e7,I4?^yeƞ!3mypVmBxs޿ulTL
C2F;utlo3ۈ
Zi
C~V#hn-w:m1h<p*?v0Lڏ>2B0=7{mc 2&_"!m칡xVwM6A)[yȼ?yW*OL	meXw|qŝou
G@^4k>b;ߦikz-DF&kɃy|qV:q:`iN~d}~AWߌ[vВzY
VpIwં93h'`cJB
7]vxdWWqT22S0/wZ>1pM]oG[{Ӻop؃3T
c9Xա
*qk:&4>G
#O4,ElhX:> m
LÊe_;5x
?:ަI'?lN9"5O+.2RËIy-'Hr rS!{=|#c,6qG%JzsvDiy1%q=fE2b%Õ|hm1iFz,G(Icq|N$A3HKUg%SqSlLAbT\)fGqSɬēIc,5>>hi:l2-5tJp)6Ijt PKr[T    PK  C:U            /   org/bouncycastle/asn1/ASN1NumericString$1.classQMO@P*_Hb+1[ D#S-k]nIƃ?e\
1(%ofw޼ݏϷw &HFN>bcR[ЋL%(߅squ8wnm0ر#Qӎx<vjOCtEȸK`,^s!lj<Z*#O)EAFAV6=fój7znTiq~a	DCy
IT(аbA_-4=>h-iMHę%iRVePuҒ>cfR%S\|PKLJ  L  PK  C:U            -   org/bouncycastle/asn1/ASN1NumericString.classVsUmv햦O

Bʣ}Z|l%]H7e| >񅯂e3#E;~Az	%ű=9||ExD;ZEx#-DC1(UHF̊yeCf!cMkmrOOoW e Cm?Q$%7Z| Ah6)Z<US&ㆪj
ivŪO
Sa3)=mR2[6S9(`鉀j)#遄jFB Y3RC-l(&}kRISJf9yj͎y	C"D	q|i*VZ2&d \,!UǕSJDKE#quR:,iR$WFFfȗuZ#NdlQKFKmTل)#Oeh\II5»ihz'Fͪ=@Fkvf͛dFMg7Ourbd:gnmf1dĚXն5Shz:0=o|MUk?fj:ӆfqQ#b
"6$Q"xTc"&b"DM-O;hج&iM>ao{vҳ᎔t}VHa]|I
R,pj	>88l9Qrq%|
>s1~g>޾[v<Hz+GI$k߃:#52#c3dTXRx2Z L2'c1*d e432+IX2s)2j/c5xpIBB;v!#a7NIx
'%D1丄=Иd(䴄	pIRB#% L%tch)}ؿm
1rTU:*uJ>e<(rt%4qk'!]^)<c[a){'b
Qaw8OV]&w{z'pR,^%&/ZYK9 %m]]$zEZa=ऽn+mS=
GTܴև'
Uqn&G?MB}h"<"s<vPTXR"Wi:vB1S$l<jZ97v=OpEԸ7luvpFX \n%RiRoӘx4v=VrWɰ,.ߴPcxSeBQ>;e<^WQ-ot
άc|1Jh<
w}篳3&(]"/9Y|Aӓs]Jw ܡi9Mu_Rn>BOmdd8Sg_p	Iݏgfc4ar0W>XoW9^N"?PKkO5  #
  PK  C:U            &   org/bouncycastle/asn1/ASN1Object.classR]OA=nٺ,Ֆ"Ъ~ZAScC"&mOeS.S"?E|җ>KxGl$Rvw{=sg??~X#-Π7#OOBr]۶kw]0hM[lm	5ެV&9waapCap+*6c>6[p<a4%^i6kZ#Z;n\("QWH99DP]sR3**UDTUb\ńIYrZ(;sCJ͒#[B%øP/=uh`:tL#c7tLaIeLi45ȿYd4!-iiH"C
:(OǪ[o7~M^L)f"<50OvV43##A>Ln 29$I>0U
>8h>G":Jz9H#*4_b*IMI,X%3>zU,Ǥ!ssψ(		HC{>/RdoiAms> ;F'(BgLavPK\    PK  C:U            2   org/bouncycastle/asn1/ASN1ObjectDescriptor$1.classYK@[1Z	[EZxbU1n׺nV[

J}hl6w2ϯ 0н.gUZ(H܊27ZV7a><+~cCFe~v[KKVKUaXjN_	nZlVڇ-U(ҩMք.I6?vUa`LxJBZ$ׁ\K.V~{Oe*?!^}K{@N C.<db7|T)H#Ch^RB7%VC|l)e9>q0~/_=`toH=a%ىlӍnEFbK~PK9ǥ~    PK  C:U            0   org/bouncycastle/asn1/ASN1ObjectDescriptor.classUmWG~6	n,⻢j%$؈7V@iRAmlF_/Kh9~&KF99pg3<Ν?7 0Z~1z(]QX0i5|OxѬ%R*J*fM3|ưL*tf2Sc
s#s
4QnUTйnk+'\s[JprvF%ÓV{
i\s*.dKjrhfs,FK6%puŒy鍬&%$;^A#䬏4MbQi`R,R/ %Zh庸%L]cȂg:6ⵄOr=*簛/-JkXcrL6 :ꀋE
v],L+']7:%X2Dѳd69<=?g"|ԚƟ9_;>}/>ԯpx+<!bӠ*IPmBEa,9kF<إj4JS]ӓ9oJWfQ8⠊C*^UqXE^q	}
z/g XozMՑw[l93pDl#b/
f#}~m}HQc
Ͳjc͈@ @v#:u.\#StY$3"9xvSs=?::6ӱtPulC~h:va}#:1c/ltg.؂#x[kll:HhǄݘjEﲹa ^Y
lN⪆Sa3Fj4l>`!&Ј!hx	"f># zGmKr%
ۦ=aܘS!b^6b&}G {ǟ"
҉d'`X 1+SJxf2˰eeԔ,Ɠ e,q ]'1awIY"U*/w"X=e|ۃ
QDIG
NdeXO≟\Y;CJ!":vĘIBmKG [7ӁCПFXB+/%*ʎ&TyDwZǌLP~"jB}޳~hQFQzt P&;jܸZnmϕ$&f7̷h	>䢙`
5 N]^vZ̉ԪBnVpYUg}a@Q{(ek_P+ԡ.c,<K+ބڡPKn  u  PK  C:U            2   org/bouncycastle/asn1/ASN1ObjectIdentifier$1.classN@ R(TĿ$] & FԅJ2%H[F2Mp;w2ݓsg_^b Q*wk#ƙ8&9=؈	6Ac.mGPT{w
v
sf{CO`FA7~ť X:*N6."0*H*PpОغgsW{vV(uk7NMV?ٯ55,h!!
yT,cU~\˙s
x~(u[T},42i( ؔ˪TO(<3X	ZGlğ~?Wي0U2UgPKS  W  PK  C:U            :   org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle.classQ]KA=}hZVVVK[	E4.c?KP=DQ/
=g枹]l1j/"z_HkCtߒw(bG}n5{sI'-"6wە^S0v7l.[FGv]1`{NhlapWg;#aIUkK8kV˦M?e)3
f$҅ߝ4LCѠ"!
a
qDHaI,HckU)S
z=nvOo9*	Q$;bIߑ0L3	0[%EXK/X{BV/=a O#m"`@DDv8NOb~ʔ>X)#E0< 0MPK
$a  D  PK  C:U            0   org/bouncycastle/asn1/ASN1ObjectIdentifier.classW	x[:#;9[d;!v
IL 
Q:g(Isһp

І6AZzoGܙ'Kql'?_{8^K"XK,0OͳSE#फ़
g%qf
,Fɥgac16h-&&`n_Mmnr+Q}+;-O6zyu8GꈍJkC )׌tR'?;;%<OSGRoHkqst{Z	q qJJI]3dtGԈda$ў6ҤDxeNK"2鰡,/={-+hLx'It]Sϯ;eۯi9dR%e4N[ND[bZF7ArI릨Fyn%1w%D=(woS)$i;^էճǒ^-՚Hq4m1W)0/=Zl4qOA8rgND4ա%Sܲhj5X`iuN!hRv6;7># LnL4X[MwieJ^PyFHG\Iw^!e3UcYpقh,
SC3zE{F#\bF4@IZUChwQ֗Ċ3fA'\Me0	9[H4t%𮰖2bzW_MmM\i]1oblJ
8pʋz{4AG8œLcte$zg oL,RidݬNxU%SZl>r`|Mrgjt7'YJ&>J$n}]Ŕ`ڮn*zttS_JOQF2sKU/]FRuL3cRUl$
BHD+,wӤQC? 39EXāǛt80b~H+auZ$\*a$\.a*M&	WI"a7J蔰Mv	WKF
-fEsՆsI0z{Df5_L,&=j_x.5[s@JY kφ3_&7N6'U,PPofI
w꽓}hNEoSs|MmN`
!d!NC{'3W֞cfʳYk81h㨛
ҿ\U;>8zfܥL	*k]ޔLllS
y˿=hv'B^4N@]1WjSwwhI5JT4T%Lc1en\*{U**bxex?RTU42YŤIɵ7ìܯb
0Yn&*ý*1Kq=L0Gx'|c9bUq%n&+qTxLEwALda2SLVW܈o)	/(؅o*÷K
`1&0ywe+{
&c}&TXRMo`eeE&1
o33[ey8+
28L~m(x;~
03ށ/9?f^_%h-nl=F/#S
zҼu
^%-|=r6̧o3ԛEUл`Oh.FҨZ>$ʎFm,p9(g!C=ol|L,B?DT?V<WH%EߌǢ0nƾA!agj2h{P$/e׼E
cM:b"z皡BoCˈ90JC*#*GYfd
 PC5(n\(E0vtk]49퍒Q?2ktU+p]`w޿Vmup`!\])5vu7J2xm ꘕ Ve{9L}} urqlR94).֊W.E'T:l4əeYveS,0_Mlj[G,F}u$^`?
be)!a]~A;bVitWʪSOA=#QFQAd%'(r 42"J2&lEy@(җQ4Ua:?X1u؆D8Ax乔EvKg.A 6`9/ת^ʖ**-q
er?(s:oN;iة]FP28IwApan;<d	^E=G5'|YSIa1C{1wՄԓPsk}ІĬcg}PdA*
4g~?̩j5uAy<#	khp'ahOi,"J]VԍN|9
O!`N?Yvk-J-⏏wږ}0S||Hx LTl2bQs|DdN;~yX6+,2g9,Cƅy~Cp3a;36'+aGhtLPRaz:O:GnB^Ӌk}&Aw肽\F`/>lujNNŠ="Pୁ1Ė8|CRF%Vșn3AcpѨTYMstDr+8@<fkPs,C(PKɀI    PK  C:U            -   org/bouncycastle/asn1/ASN1OctetString$1.classN1OGqhY$0&YAqX38-$n4qPƋ
1|=z p-䱐0Bk)M8
0䧕PCΰ®{6w=-+irI'MۄBvv+;6pv܌DfwVl>yC
<ukuQc(Kͅr2砿IWUZ.aA
i+X 'S~4yTNCJԁkbOQid:(oaH1VGZHFZ87cMPKPxBK    PK  C:U            +   org/bouncycastle/asn1/ASN1OctetString.classV{de]46E^:A6]*v[]X&bȒy }(IzMl=9s?I߿(!<q9lr\[7KClVC(K{hl~C8:?΄Iv2O8{#¥ى|*#gB6šv(fNBE1=УښjY[_]F&ZEb_VtC+ʮ%IeTTWȹ\z|ٶeWxBtmeb4wP
Xt%7MS $lz薱V].%Jiqy(u7s)E	Wʄ0bȖOM) KxrCIVt,W~jljIʮn'5אcvnh柵t !y[4^эfsRr겪8%Pc`P7@ra%aYve=&Y2!oL=T:XՍ7`׮վ5z䔶DOI9	#uKt.kx8iC<<b<<<8#<qQqeZlP4qcIW4v[i.'(<2V )ZZ#B'-b#ZԧCh% {ƞtCud(x	?Ҍc=R*^#Zw6"a3$c6!"aD	dWIvtI؂n	;1dY	{F6aN$s{MB?
za\d
F.8	U)\"tqM#,bo2rK$E)Da)E&"2(vb=Hil5ҕsڴRγq^~^B*&Џ-`cٍvaP_z~YBf!ΐO ?&LW&; -a`2k8]XDaox7QE*Y[$W\ō:FNQ9|Mu}<SIDR?=k
c޶U,ݏ'~}tpPxyz⽘iW}<n:-^́.̬kA?PT{
VI#Do.O3w>[BFݍsW񺺩tP'5ԉP{tTd]	rl^_}3ې̶#g	 2!!U
.Я]\Qo/PK=:   :  PK  C:U            1   org/bouncycastle/asn1/ASN1OctetStringParser.classu;
@  6|aNYBB6,<hi77`>ak>UAfdL"q%2gZU>g*eWFۓs&S$*vraȥ㊍w4@0L7xy/ڄh@[@	/PK^B      PK  C:U            ,   org/bouncycastle/asn1/ASN1OutputStream.classWSSW佼$$BjZA(mF@?!AGӺ`וK\:q3mlC;ƙZz{DsO~w~u 'nrg$zMIDB;%2em.ZGX2=X-ʴPI5 B0ga	I#7+
ɊO2r	2+K[k"oTNBۼaxiv$E	lIVdHyԪ''2Fee	RRl!6l!/aud.`˜KcFڬ1s+X}äH8XXJthx??7~阕hj6G=9U+./gfnֲjKVY^dUkv-m4g,RW
֒XbY6[j¶*vاb*8∊*"*::(;>ךjѩ:=z$w0h㛴ct4sl߫)qG#W+
|Mu[@;A^_[=odNnSlzi'%\iBE7a(>C?cpha[=X
Ѕ|}BAy1ϼx*I/N`Kq,d1s3^/ΰmS-8/{+,
q3q14'};eH۴$
<K?$ 	⠵?!q}g8XqñifKq5$e8:i	NcB/OH=J<1iy*#m#X|uX5f8NE^)00|/E-cY/#>\=۸^K>oo>o D9ٽ:BHnG
TFD(q!Z`7p}o}oŹޟ_lݷȖ4	/LpKIE۪#WJ=5fp@&X(\5T=:ևC茅[si"V^8^B(ۮtmư`l׃2%S7gm"kM8WB#Vxl.QS,GMfWxdS<5fz7k&mM4E3Cò}0TuS\nii
¿9*qeԝ9FZW	tyZw2|! 5@CPu%\ݧe@W
M	
ԯ5ݍ?- 
Mܗ6(*].0{_ЃP}DU~NC=)] t_~G[2 njz%2CO*<+|TsJ^:I6GDpB ;?ca&8>K"7#^6PK9I"  
  PK  C:U            0   org/bouncycastle/asn1/ASN1ParsingException.classuKK1OLckRu
Z).atq$$2W
/c},rO]
>Ѥ?`sCS+?WF
#(-MWGwܕZQBVv$љ,8F#FȰu{trnԘ %ua0Lih:KfV16"34BaC44ڬ} /=5YJڝ:{~CK_W?PPK/     PK  C:U            )   org/bouncycastle/asn1/ASN1Primitive.classT[sFV"G!D-)Mb\p06pD)Hk ?%?%2S'.gW=oe` C,TUΠg_US|WpyG"tC2#[ ̽h@C	`!iUwhDw}'hd88m!xڨ~Slʸ$sAmV}>oul-w)ilhR<*K^PV:a\Y[o-Ee#A,mmqrKrߥ,)άkɾyI](mqDKeBoc rc_>rZߠUm1${aqJigt1cY
M|z؉M7Z
Wn
Y3f`S!QP荪
(׬-t;@
b{^E"EZ'%dKs|9	|H
	KX0`[|'G	X:i@_-7^^uXηkM݄|џ*Cf42E/l{i헨֋=\+BS*r3A/ʬ
D Fq)	I+ܣZ=T]^a	˯jR@@U>1zGӉrx#(&
XR4NYoӞbzcDa7wkCK?Sݑ,2t1Q(MXe'-X:K$DbDJZv\H(	J1e=G&;41GOP>v;M^G2=PKoW  y  PK  C:U            1   org/bouncycastle/asn1/ASN1PrintableString$1.classQMO@P*_Hb+JD	i)k)[]IWzQ2.&y;3;ov	Rի}1*e}A.
(]_zL^IA`gGN\*dl*x>KXW#.o	\OFOoY*v9Ԑ֠ihȪS;ܳiY٫[}:s?uH o E6tb]}Z#MP&E$L9EF"<TWTIU+ϘE
ks@I)%S}JOsuGP$
PKyJ  R  PK  C:U            /   org/bouncycastle/asn1/ASN1PrintableString.classV[WW&0^JHj/% TP61D'[}]vP[lY˶/}su=3@t>{g}ρ?.<%	@SԒ-'@4m!C}Q%2(@#YyG"lʳ3JIs7yw:ಖÚ>@@"'jJffK >-&eҺFxZ75$_ETS2CI3yŚORi+mi=cٸQ269(`5O	fiß	͌
Uk☑j1PG(7RjrWʕY!4oZٹ:ET1b!BIfX6
PA53fmdM2jʟ?EV&3Ān)m:@qNș6l&:eYS;fQ;{y ,*mieMdj@3R1Kp:GjLia>pKf5ޗ
Fuf,sCkEQs-Y逍ҩ<#zF@ad{*}Y3
[K'^MvI=;*LL3=]Ni#ijm/FBHF	$<*!,af	[$l'%<%avHI["S;MyMc_9hpvz
]+䰞:~,Xd-ni,F	Qbg&
?ߠbS!]ޣ&ڀ#K,zO~	[Qs+XVTXr(XR-PP`[^kC
a,fQ#
x^*㨂xBUЀXCFx2!")#A&We<,NȈCD)8)gY&b1"- N8SWC3\QօhZmps&T18 qD5^f
`fEA'+H?	WB38[ǰ{'+#&w	\rx'4%"s07s0'%TYm=nlKc
}Pnx7|x
e\Gُ8wPvF/)!Q>XDdB9b-GRH\)dN e3҉]C#o|n)b#XA;[Mھ:9y;xwy)!a9wB}IH/91+;}Wnj)n% 
otE)ػ-;kv_ǟ
wj
㶷ŞYӯ6kz-źL=:Bh7>bGǹTH%qJCR(//{㕙-It/ybSODGo譞891	ZYPKgА  
  PK  C:U            -   org/bouncycastle/asn1/ASN1RelativeOID$1.class]O02Tįxq$nD>.P/䪎:gFGJ¿5^Q2D	'9m>y7 "H^ yrWQw
w
7?Cϵ]c?0Ѷ!8ƵMC1btO+IA۪+3. x((M\(H*P%yGG(wGдJzzUjդIAmR~PSȩPWaE"OkpCbh,lȢIĢ̂`]R4.ge#")P$]~ZSS)Sx&:I}PKL*AM  H  PK  C:U            +   org/bouncycastle/asn1/ASN1RelativeOID.classW{xdgv2!KbY@e5hD7	
hdw	H-ֶV֪ź-Dh+m˶e־oI$G;9{g쳯=zEF2d"SZ '5إ"	pwiI#ά@oZ3cjqݴ>CO/4zJ&n6b~z^"me/WUuzx2^M$2a yU,i.@vu^h#Mڻ{6nb=mpP72
W
iɌ oaEu3aQ@<~-"bɔXʴ(V:PK뚥oLgTא58DxnRq-lRfJ,x	s>H
LB/WH?u鴶[m.	jKjږvBP1t!;,ZBH hW0E)y3-A :ڕkTZNMvT(]"H&z)Jdôh!N])RJmd&/~Ee&G6\-#eRlnR3MNbLr"֥Cd؜IP4e&,dtRoLzoeG8END>n#gI-ЬF"Bf$fTT;),MM!3;emߴns
ZoR|̨yE](53jKei\1+2`錖=HL$=vZk9_',#d7
tF/ڛ7hd$Aإ^-R'$JͥlK.y:mX-)es.6d%{%,Z	JX+a$\$a%\"R	Q	$lf	h'UifKYǮ_KOjgԼ`}a$IL?_VJ*hi
ַ'U#&v}i5]lՖ(kR)e*8ђ88I ]ϗi
[4vt|w6|l>C/lt}3si矪է1{<8l8[&DB;ΚʵN-M:ӛ?+Uq C*bPUϤɛ2+1G9(W&KSsU.rT8~U*jWMͼkUq7*c$¤fq{T*갗;Ut1نw؊U4=*{͌{[T*V^ȸL> Ldr
ᐂw
ǘ3$d-;&0yɘ$,H1(39!&319 ܣ`{|}L>0G<qW3
e`y&d§Jabe76L|}FLSONe--CD,FE
.@w/&B*/	!\|ȑ?NݴzJ)ÐCOB>D{s7?DaY"y0#y/G1!3TBCGi#RC9|#Nȳ9۩=|Tui`H !~P>섲qѪ/f~>1TG'Qn?{(_¤x갭\`d揋tc/$R0*oY$:O1]!m
ƅ2E6>;ޕ%wGa|\4{JN^{nVf.ُ%~i^w[6Vko%Y\Q%ݼ\9
:Oryg\YhVVV{|xB6%Ԙw)P0(Hxr2(SKMS0  G.|%	#	XbX["V9MA	GƢwK+OZI!<5.7#t2sA3!c:w;7P>y}'6ؚ}p"$Fqqx(~q1>бjWư~y)`rtrd;/ҺjqN0´J G(~Eyx=#(?_q2QG~.*]f'dɣX0u\C4L_na١	nlR׌ׅR|7:pZ=f;\Z÷E[~7ڻPY+ދι^Ex >^p }.!ˢl~dSdY+} GXy Í|m;}Lb_J;P]瓮[۸O̳Fr!~13WzxLvnq@=|>)v?JCņpgcrX+ƛK%w`Q/`gJK\PL񡊋?_x
41ԽBLBOl@꩐}e#Ӄx3kC+:PKr
  a  PK  C:U            *   org/bouncycastle/asn1/ASN1Sequence$1.classOK0ƟlunO2ps:Vx(NckMf$xķW]&??_ N:Js'2.:SNG]trrrf<P`诇c{%X-GӇcao0y\easkdp5
n,Q bb=z*͵*YD)aVWA";i~hw:5Х4FouKCbTq*PKLo{X    PK  C:U            *   org/bouncycastle/asn1/ASN1Sequence$2.classRMO@}Mӄ@)
Bb\
D!ҍJLn+;@HE;?
u"ë߼ܹq	`
RM>Cf=~o^kX>t(<Mcg&}Pbx Bq(oO~rUO{!mb(PЫPd(wT#;(#_t) fs
)ʫ4j3Dl#F-< mx}_n=m?r0d0 	tE<IScQZ4\@BwTْR6CEmhyQ8c`x!:瓤?FzZ&m:e 9w9\H>2˩SΞXWƷHrC
ZE8xnx.99P=us_ţS4gX &c1?PKIAA    PK  C:U            *   org/bouncycastle/asn1/ASN1Sequence$3.classS]oA=[K"v٭ni1i>PcaЭ])0`dwWJ$s|̹3?`V}ΐ~lv6_5<cK` tf4֎\k#1	G\7r6<ֹBs膶2U1C2QMR*A=m:&A|;J]dP|
3;88;{D4NŢYƜEƼUFn2[ZuZMFRf]Ġj99BAR*qGEL#Sʠn^dʑ(X}66Ő<$vtpv;"<T񋤚uÃ@4wEʡDWp1 ^@>Q=]B4*јvCۺ4D3F Я	pT?!402N6(|ļ+<ӴwZþяU e,j1=ei(.gSQӍI	đH\9	?PKh)  N  PK  C:U            (   org/bouncycastle/asn1/ASN1Sequence.classWW$1f36D@d6Bȡ^8l)`QʖM! ![`idtImiI&qi'v%M}_ġ͌6B9}F}5 /'J(u܉:'nwbH=MJTUTUUݓ[MD)1%k o
Usk1wHSu9Z`9`ccΎP4F.?4<FJ#aU11=}Z,:%|HQUZDa=Q jH'
=!]p'fynNQDN8CY(rRIw+ҫq= BZ띖#Qeʭkg;NVqOǴY伮Oݱ<OaEqq-WuRVJ]9"Ӯ44Wq9L<Iѭ s<#gz[#Xƈ]Y'3rkDk
υ9=lTVí	wffѨݱp6kYc7"tX"0eؖ2ғVȲkQ@E㎡ 
м;"=rv޹1j؊@]v+0aGU=#sdގf ӗԯ$Hȳz~R
cq}0.xNy9Gi,bQks(T2ҜȹnkYՖ3
ŷ@}^[b+5rU*DN]KߞPOYխ:7
P#`jpVO~Qw	[!mt%^-
{s*sTyioJGACmWi.lgdtAڴoWqk<.OZYhU]8_RIQJE[K/)<ܟz<ͅ@s`O ЂQy\@Y
f6o*۹_#Ll.9Pڦ|l8+ikJaK6sutt󭗤7>8Ϻf{eo)4?ar#x(_X0}㚜ciP:?֤%Ta./$	D,h`NB\TⴄY> y	n<>OrE	%	
}U.|%p[\|[Q<#~ b?A|O\<"?1\1x?9.~!8.8p?i}xAD/OxIELs"fP	\*GPU%f<
9@+Щ~yncmtP
G'B	^0w z߆sN[p.Qbԟxek1-\6?D??pU
F+.c8-IBMZƫ׳M{x= u7>e(.uFm4Lez-{|{Riz.7x4jBurskye+x(XŖu*&akiV9*aLOYtit6r}cG,G-{-FNr^&"6Jb
E8Zr8`[E&*ͧ'RY{+NkxXͫ ҈JQX-u
%+OAz9Ⲣw+ezp7
rOX*˖bv{#d^CrV]ϠzH$~D/=&D܆-d@ϥQdĳGY>gQhC|G[/{T\WTWyo
#cDJn;x9uM'%7cփM`Z23GhF{>cM#X4[,)oSQtkZ{CqU
ƨN$}I\w
xc5G"|U$]\bɕKi/T>MTc57W
tT1
f-/2ɝ8cz6u]EL0__Ɔ2>Di m4qۈZƷ0NJײ$+UΊe*̢gu
7FNZzPK(~  q  PK  C:U            .   org/bouncycastle/asn1/ASN1SequenceParser.classPJ@lU~BxXzC@[_<BBܭփGO
af>>O pEXMb4)Smٲ	KjYVX*o2ydѶReǄo׎_6[/yسǪ@$p&L!gO1gPLH028  PKN   )  PK  C:U            %   org/bouncycastle/asn1/ASN1Set$1.class}J1ƿ?ۮEEuۊ b=nclI}+(x|(qZ&$fK> `|*g[Eq"ciZNb+:zY̍Mύ
u/bY\ `8Sr*RÓ٘fU3r?jwnLZ^Ვ=3sʑd4yp⢂5˨1z@k*Njx%쓦"D+1kT(߀Z̀:RLܠ\Dr%](_PK&    PK  C:U            %   org/bouncycastle/asn1/ASN1Set$2.classROA]vYhԊX(P]HV7
H(jH]Xf@H4b$w2/o[ /Qa0*գD0^2la݁굽K#
Grmn֤ZWD(.MLOã=rV j!z\J2;(/C	)z3]lC _ޢt՘ҝ *`[0ia9V$x7|I+Z=r qY<v`9$Y̧X<1j	z zPElׅ/<:?)Q8`JdqR#sĖIO,~%ˮqmCÍDJtx{	?'9F;ƞ{F{LyJY>C+ьV(*&ikD
PKS?2    PK  C:U            %   org/bouncycastle/asn1/ASN1Set$3.classSNA=mYZت K7	!<4)BRcvRݺ;4)	5i1dw7W&{=s3|`Ja)k2ny~xta5]#f#΅+\OȖǻ{9dX<nڞ<>`=!}u34c(/kh5Db՝X28~ |?	GO=#OEH/v綴D/=NբRbVEZEFŜ
MEOIZ"f,ZݫRfOӐa14)$5,yM)"*iДCS`3(`=C
%s$;L_ݔt]8<-mɭwG<
%PZ4I	ʤD1ec2FAO+
o	p#?#ņ#U-n?Q9
x4ejY1
@FYy4"zK4g:@O}N	lEHWlG=	PK9)  :  PK  C:U            #   org/bouncycastle/asn1/ASN1Set.classWu_s%e]H;ZM v޲l$Pi*(
laxX:*>#?'(]n`_{<?w{Nŋ/{ҋf/B^\M
XAan%5ȚzȘd.vI3[Ph(%

-âxyRxdVTEC]LH[x5,zc}	D:ehdN f|'KNɃI-of6-ollNm옶;_dIЍ12cbMj5NT:Pv>DHBf6
PL 5s"@If'^Xoۖ5fn2idv-&P^7C{r>S崃62Z6#\ÌHWĤYM5mPD>m\AۭMd8Z~6%`E:Geޞf"OdsV޴4#it-=vGR0YC@hF͉hmdΥ&9-+z5s/mNgӔܼueeV̥={trq cImr5W3v&Out
P[Rc.=6HcQ	BtIe/h(C#n2\^ GRZ/ OLu)q/%,^jՋ,U&τs|N2yfۦU5C"}A,T3v=ō=E4ۍ∡9nv$%4IxMn	)*	]+j	IFBLµp$ZnyxNmh&f¼j!uU4ᖞn?q8=VIᑅl/.>_]:\["|~*'Xɉ4hY>ϗpKp8TiυV`[*rjx2gmŕc
nc{'6J\/2ZڵKAg%a@B~khxp.Vޢ߼
|tUN^=RJܱhƗ.?2DA#\$X
^f4(`^VLm
ڑSЊw0`⇩ Iq@:T C>w)GR|L|||L>`-QЂ>ȸ}LC
a72a<"c_q?We܊<(19.cv`Le
&O؍/1y&ߑL1&3&oHbJ2erwZ^&i|M><XQ|&og%nzzU]>IZr61);"`?\X5Z+Fw=UޭY}iyt
M<,N;f~΢Yb~-'fK}Vx2z7ɳjxŦA	7\*
]W؇`b?A5F^/է	TN<Y~^p=C㨙-C
NctI?n;HUdf^rR5~*4FOGPKZOiJq/l0|G!]ؽjc9vrP'ٹIuq}c
9p;wq:#S4,<Sfue{A樵ٞPgĴx'nwVWf16D`7}#NBARA!^8t 
,:i9reQCFWK7]ЇXn,v2G7κbtܿEY]O>1j3
?<{:ԐTPU{W QD:9ںYblt zOpLli~yi:Ũvm=GIS
o)}kK!0=XN*}gm-tQ8)`X,.ٸsunJ
>O,nv7Z7R][~8x%43hXތd b9ϠF8:	
([;(oŹn)7D_,bgz	ЫqJgJ6V~
3oy*yClZ!%Z7-MTeMŋyL=9uϋcDqGѪ0Lh]g-<EGlť E \-,eHUm%-2D
QrW!*⓪W'N;'[­h_pS7$:E7w[(Q-/Zg.!{,hCb@x;`H$8Jo{a;̊9d91=?H	}' SXk<!^@᱇A?UF63pn/[KvDY$4fwe`k	^tgG2PK<3
  e  PK  C:U            )   org/bouncycastle/asn1/ASN1SetParser.classPJ@/YZ|xX<C1O|[vW1փCxf:?pUJVUyzkW?L'f:uoFZ0Tr]?ѶUjyv<u{6a<wک 	$'CLpg?PJ0aYQ PK]   $  PK  C:U            ,   org/bouncycastle/asn1/ASN1StreamParser.classW	xג0HPe۔PݠF@JH+!%MۤEڦM/ˠm&n6%Nҙݕ,	ɘv̼{3o޼ǟ?{b<@sX+u`}l`klt {cS_'7>SMec_'U+UMկ q>T5UU@(Db W4bꃱD"ו''@'JdӂЕ1R)vݔYEw!*Ѥ?=	(Z0R1(.YYci갪zLWE)!%cn
$JVN#0Ii*ZDg76%3)jQ5IiJ$QxT.%#'?Ц:ueM"i%*=TC
h6_4D5H_y ZdDIp鲮^3"VgJ,G)JH<wqcIS017">8$HjmklvEi˛&JVc-;< xL	qf!l0kwQixg5xT
؟-q%`vPcAnn\-HG,x/Ed
 s5Dw[
>u"zJķ"z.l)յ<)2`F% WcJ<$`:T~O1fM0+sUr(iTμbR<NRiT$ne[BP`f3[kV'f6uvн#%}n%cZ{$\=a^d㝩pnbH3cYvnJSƽQCtDeƷUCJ۫h:_ i<ςz`DL1O|D4h,MDDDb׉X""X&b"VX%z/Z"֊-zJ\+MX_HeT_ѸYeVe:̧Ʀw]iZ6.nzfLF64Q脀։o+7w&wX/aML`ڢ	[	=4ad!/j4^2t"e%B'q%y݉؁\hEM0{hl?7Ѵ1Se܄2jLäW26c-Lj"a&c2S͸7Ș7hedkVm22i;dN.&G{MepT,#d6cL>vcvn		v3I>dy	aօ&J.H؍3$/Id>&`)&|LN3arQa&_%!	8}8+!\$g d$83_!|	-6I8az= sf]rRU`Tzr2-N
DBVP+yG4~|
c¸`70S7s;,Lڨn礇pK?1QP2fv7yOQ4#Y&B1
 +]P)y]鐁%Za<Kt;4mGA<-!vW,xun8Qv:N@6\?6sj2J;!L^n@Yy/4
uU'09]_Ư2篫2?W$
M\nhI^w}O13]k=j9D4筭at17do?j6 Bĭ2eڅzy~bF b9~j.arNQv{ٯv{p
Gv=_yTVRmfl-3n$%
rWCFo&nj0	H-._p~JPsg0IUj4{>糄g_+&Jҋ]+N+9r>Ř1qf~_Jջ˹Roթ+O_t}XΒ"wX[$dgïCIVTU*D\-|6Gá
RhM{iNEWd~'6ߣWBp]sdȅFlr*Ft;<:v8h;;^wAE]5`97rq)[X6$\q03/(mz;Xs9ϾAOC̤
q(^3a|$jZZClW{ቖU>:Z("<
y>
~!YVu`cq(&xSPKL	    PK  C:U            &   org/bouncycastle/asn1/ASN1String.class;o>vFԒ̼tFĲDļt}FtҼ⒜T<C}`?C.v&vfF
Mv5#+00202 PK,	l      PK  C:U            +   org/bouncycastle/asn1/ASN1T61String$1.classN@ƿP*Mjc"ȁzTZה-iWJ/j< >q)h"Ifgofv?>` *Aq&	rN@mA/g
)A6c?.玠"$׼3rPxԴCn'3shEK3UvgsW\Bi2l" @QR{{h]aXiޭ9:_aDCY
qTȫаbj~OΚsCۢh
i@C##<5KѸ^y'L,)Pq*?cǩzDrݐJ*ݤ PKCK  @  PK  C:U            )   org/bouncycastle/asn1/ASN1T61String.classU[WW$NAA$$jm%kpm0:D7[[{tu-`Z}CT3$Hyhd}ٳϙ!&(8&!/g$W<̰'(x5ͨHFl㑑̰G&l#zFLΒPS	
P09jQ,	Vzc3lL-kh1ᚋg$6֝9Rvʰc={Enls9{zic:n̴cy
֍1Z1:%r]mrҊUfrBBSz	4rgDc"!I'r'=0gA+.5-kV̙f^;i7餲ۺQLǦVK)xgR;PfLCnHVA>
	udZs+SN֗tYF_cjhr_m֢}~:jJ\C[4\͋=QMM:DK6Qr5T j#G2k<*y`5y MS۸kzFe1 #!#)㈌2dqB2NJmqtcH֎,_B+;2䋨^#Mݠ}7k8Y*oA=ZO1%f|ޘ;btORJS
bTk*ZQ*NCQч&PѬUC*`L!Xb\ŋPx]RWTFpś
^¼XPp1`oX`a+,Q0
P
Y8
.`VAX
^5כ}AtY6\<4m4V+7R@B
e/+׈hDf#L^O(?ZF4;BEz|.!I\ps875lʸ,HCVm sRn@NUDKA)sE}>A{7miL;^@uQ͉5H>g?pk1ha=Pz;pG#Z.HyD!PQ"v;O(<&;"B`UPۃm½]B+׍u),m`p<AdOk;x/(S3D n0@DpG|Hh{bG5TjHDu˕M}Ӊ>^D0kYPk>7~wDG_PK  
  PK  C:U            #   org/bouncycastle/asn1/ASN1Tag.class}OJ@m4Iӿ֟KK,xS q	-1d+N,M'q30~~} 8.6Nrabt#S`GB^h,cp
5]D^<B`FlJǐg2ϒQp~5Qeif8TOAGA&
:6pmW%irU
Z`!Wm;{@F7]SbOTvPK\    PK  C:U            ,   org/bouncycastle/asn1/ASN1TaggedObject.classX	x[q8>x$DA, hʶ"9b ElJG
4(I:N^ij8lJD%5mҦgz}Mz_Jԙ{	З3;;|o-`<8=81zAC|@c;Q-H)ݟX$=.tO{@`"{,34
F=:X$<#O#'/Wh)}VkM/
xtNO)-צ:Ggڌ@lӃZM隡&i#5H1nuYX*63bH,g\bAOD@}Ǣ1#	VIBO?j
mfx:NsEC?p_%?cF7x'RU˂$!h~x.k C}怃cDGf8ZZ?,	ԛ	Js=kR
7sԓaO dN;M!MGY6C
uF9jUS˵ǴTZOeO7j~jiiC& ))8c)̫鏲R^P6.X o,m"}Qƒe'qo[çK&Sɍk^ӷmyN8gxjfa6m:q&љB1QXR6<PSv
,~b >63sy:쎼Xn'?&v[25;\HDz/W^N$/-58q֕Q$=[j*:FؒATA2qZ2Sr$2^JͶRQz<[),GC	Z`gi\ɛX'
%iu5b skqJX!iHax>R%
U]B.Rԏ-sn)4['@qe8ϫjbGɎ;f9irODOT'4)}?ǵ.Og:nCedO>c6lrwr2ʕu(M]	g~h O)uFr1yKI+c6.$kn`,ᷝ	
^bB"0?LcG#R]Bۯ`Rĩ`D(UpXQ0A)Tp\	TG<]
4S


N*Q0 1++SPT0O&RA'N|	kw{<1Ysnv-b́\Ƿ(<I_ٯV[YV L
W$ˮv(j
oE+^6jHzˋ{ˑfWt P v**u0tIJ)"\ֻ5V ib$9wܤPXp}aه{\U^seEmT6TV }frT˩E85*9R
a-qeEflx[lwߊy4hxՖ=h+-J*[Fh*"9*hW=Ld*NA&LN1yVԫB0=hT1&hV-*N5OTO^&`2<#
VTtbU>b*ܺb/Ϫx
_T?n|IEU܃x+~IŻY߯Wo0M-;*ﲾX
"?cx/9
g^z//>#L>G^|_gLED42ŏz/>o{qxڏ_N/^`ɋ;&_grp{qQT{IeL7|äʤI+6&L:hfdu^!"$6xYً+W?!:wR煋ٟ9kUKǴC|J|~⟦
-6?IJ]A;6џ'v>[P56}4:^fo:^<O^\g?ҝKKϞ.Ȫ_\'c+"X3b}2gEGUb3v({iWS.
#X5p8}U
tJh>F/e^G'Ŋ^
##迀vs5d$*&BjTmB6ȴ pwz=>HOF-#jـ7dc#l#Cdukm5SU+\oM@5@R=2!!}\q^\o-	UaMjBϣ-7L-I'ky$"6K B5|iCaNy?f,}?JCŶ<\7	K/AmPOsIND:EW9X	."6POMlz
 eҠ&hj9{qs%ϡ>C}Swͽ*K}42%SnR}[)@S;H/Ӄ@:1؟fun7̈}O/WIq5pU	AT7@H.V$sEVkx^R˩ISQǂ+ȣp לCSys&95p>v^W%,:!0ǿn׹dSDϣH,-h4|@z8rk@s(#dMqeͫbσ!jX{8<o5}	fw<o&+Wox7]m6k.Kz%*fA̴goM@MѮ
Sdsq_.L,Ȉ+M<|7rXE$_II̘ju^J'OgQ˭k8	j5
}
">2,%aKovGf(
zhhk6bQR~v9ht3|<I\;֔F:l1}k2;$Z|*A>cmRM&C&MypTTvMɈ1{(knWi:?Cgm`I![Xvk߶x[(HPȈ=q깆+ql!vچAm8$]wL߷\
hM[\ӕcr	1;Ym9d
g]DFܳumdF\]&TϻĠyDL,}e.ƯY/hWMfZ죪̈́
Ϊ"9%N_zм?7g;rΦ+xuS>81VģXb3>WdԲ@v3g̭7ܚ*)Mˈ^Lno3ۈGXϢ;BMV/9
qVF>g{66 
&6g~eVj#Toh5Qm@@^6\@NTd'~2
LMoЊx<5jb{k
H^Tr5uȜkM¥ªOYPKV"||  %  PK  C:U            2   org/bouncycastle/asn1/ASN1TaggedObjectParser.classN@\DTo\FqJEen(ZRfN%j.| 8m(ՙ9sr^ߞ_ b AZnű䰰3;dAA{4<*%A6ZHeC"BQy|鐚0vsd3?t'(ԣ1E]Me1J^7Z&Ev=FpK=~[
D0e~$aryŏ.d@R\
#Y%iSӊ%
Eݸgnuvyv0;SUrѬmFOVAfPV1VRE*il(i`26U>ኔP"elMl%;PKSqb    PK  C:U            $   org/bouncycastle/asn1/ASN1Type.classmPMO@}Khk=㩔CC
c44~ m릀MA
?8-$nvf۷{<-Cx

dÄADzx7	]`0F!	?ePG1px3'i(\DmwB@e0/4yg5{$K!李2t%0
**04h03 /P>B!PFset$lҠm@s;XoȖ"<#_taihWEi=C_ KݬL2t9~PKZ+.    PK  C:U            )   org/bouncycastle/asn1/ASN1UTCTime$1.classN@ƿP*H"ȡx1@jpek-$^x|(RDa曙7 $H+:Aq&rNHmIC3Fx~zayڥ̑T
 t;cң-x<.{3)vgP\
CW<i^D]ueȸ!AӐҐVw6=fóZ+UܯWs:eYjohX 1C@9::XĲF0Pt;T9
	>2*ibȳ XSUQ|ė%4
*NRR'0Y(]uEe'PK,_5I  :  PK  C:U            '   org/bouncycastle/asn1/ASN1UTCTime.classW_0aY0](MSIvSQMqΪGz}kmkLZԶjHkiD??mg]v8P?yx׮؊*X]:lPQAXA.ܣ^1Lw\zإ*ñoySUxʴg01f~ڑIEo/{{Pޝ̭ؼȝvJPv'ftbTzڠ\j}؁A	-FF͌ўwl3jw,=?ir G	Ql1x%z>I!1}d$cd%lCw1$Ű&$m̀%ctKƍlʙ=sDm[vmON,lN0rVb/y'+YvFM1O9FmSyJFr4W3v|sΨ lk|AHXI'/c"}qJ|^O	a=#vᤞpLn;ϗ_GI͚8n$%!٤qzefOi3ٞgLJRqcZ=	#Vrz6#P֗1/>;UP}J҈<Aq慬N65+:ჾ,:hfriksgWp̴rǭ,7`Z4NLXlb*睴wpx[F}g掛k\
=,\K{Y$qeѩYZu2$m9wv{"yUKCc:su0Q:ZX^;e៣drL&st5qdtx!2FdqW8(cTaGdFƸ2^+u2^O/wl\nC3`2GqRo
b7,f3<>~R|~Λ3P)$7$-UޕtInvzGxϵ
^ȟN?tܑřX*K}Ks>%uX3~%5}",Q=2NŌo)o`JDICop
@hҰ^
}]V
hczFi؍jg2d$oc3yީa'
K
x>a>e
Q6ji&g1Ϩx _V*2,Sa,sL>+*r,'<.&O1)2Q%|y'63KLgrY)|Qi<V a7kL^W7NuKN-,t=(+]KFkqTp:%Bi*;/QOB\,M)w̏"364){"RxYؑ"+e
j+J#6׸aJ݂!{'q-.?P"y$:??k7G.b?("_
ahG#݋cL!8unn;\w]nX*1u"?I/F(-?2	H0ct/ ϖ8"^<zjjY$YLgPk!.\@&XM=f'녓&74~Rr]ďfd95gKWdˍek9v]SZK<Nտ"O^GE|b``yjߡ:^/%(Bi;nchvl!ymA<$e_DjVW`w]Cv0֗jՈC}XK۝$]JsҷqQw]FW,JoΕ#PO-7q->ռi}!(ʋ\Fذ]X)nUU;IxQ[]73iIg++ELm6Z?2=~-0[;%6w?
@3m*^\h䵳-XɰV"4F˒&טUZ.fqj,
6OObv}(%PK7    PK  C:U            ,   org/bouncycastle/asn1/ASN1UTF8String$1.classQN1=d`A|%QąALH@Vu㘡Cҍ~e,1x۴sO bW#ܕ;`T1]ڮut%y?r{lS!=fRIz=;`* Wꁠ^w<dsOWlSJ
q
2Tl=5=Q!f醠\JhsE?iX1A@::XƪWf3
n{Pm&>	&jD$46.Hj+ϘF+3@NIK7f$!JWJ]RMPK.}-H  C  PK  C:U            *   org/bouncycastle/asn1/ASN1UTF8String.classVYWF!	$8	
&uihIn͒$5tb0"Brd@-]==圴}CT;]r̝~s;Wc :BxRޤco;vV@ 2ˡ`d6GƹQFh$s3#"9аkf_ҙ 3E嘱@Db{E )y󴈪j63lT)6V)X\ uL#o[fRKgȆeVX3Yf'ibl0L3-setf#SV|+}R9c'=JYUJOS	oIe{I/9te=l/3>@l˲53J,gkA5rP]1qOeK-Iw+[XBWˤ)GeU=Zf	8gZY0uU:㌏L;;WuYS;W`Jt
>[)hwiUiz
e=cna<qr}qNvg6$d)}[ʭ(Iy="""zEDED )q"qQĀgX!HojOC&q_lw{mniA"UWߐsDTqJLc#hi-/T}洒ͲbQ`oTц&xYF2 $$u< hAx?dńs<M&e\SnDZF3nZ1͜a0	pK^**^&͊QxE		,HCux	or7иYWm!.ma0y=؊zwBɥ
8CKA8|h絡_P4֣aJ;<	)E{G6p_T
Ƽ.SOJfW3[(4E܏aPUF}GW&
dI:|ڑdlK(:?:I汤hlG8
H[b?tWH|~<&\JL=>F@c(m<p
<FR)uMԷ|0	qOI~< 4}ΜO6K{C'PM~K&>	T;[6v9ArQ"
A|C8nr\D<>t"%AAv4-#r}4@-LPK$  
  PK  C:U            1   org/bouncycastle/asn1/ASN1UniversalString$1.classMO1~#rXIaL9GDpK]k.V^xe!F5L2}杙
6	RkꀠE*vW|7Q8hv:S	#߽7Ts5{R$
*'Vjs;y:JH0ddhv玎P̀JYo;Wk8?Szۺ	-$Q0ahE,Ok}=q% Z۰O``Q<	EN'M,{kzWԢI3ʏZ
K3$%S}J32T.|PKSF  R  PK  C:U            /   org/bouncycastle/asn1/ASN1UniversalString.classVWg
0adDqKP\*!FwjŅhmuC	֪mFwvꋧ[<}C>o=ޙ!PPJ)'6wP/}҇%lYYDxnbH#/QrnyݶVH#AZIS+c-	#D:edw+E@)8BjCl[Ne Y4jmy"%C'{"cXa4aꚥ3S)+u02ƠefNKnl98}s[ӦIO@ާdn2[Qr	}k%{L?i0ME6HiI͟`i9:{9x};~:QDR'u|2Cq&etZOjzªLSwB;ERHlBRhkӚ̛L⭘FH
f2ObI uiX0rnꦀ
t[Vfdx&k$%A+Gx"
;jhTG:@k34<fwєANA-=έ5wUY
P3[LK!0R=JYNK̔V̸3f'R		k%JX'a:	$lIf	[$lP/		WͲm4y)H4}-x*2lwNrmvpp2&6
Tv78	"ߤ|m_Se]=_kfI_i.-{8wLN=j>$5ձ (؁
qP|H
Y*VP`
Ja(SxS!a8`TP;qD*<͆V=:C2Za؅Eb8=H2XeIl1pᬌN2</c?fgc/+Rt]AJ0t~uږvmo&q9hx0j$Y]UZ"T8>t+!~8_G7I;$W84qMַbW|{#x 7jrx^K?LzHr/L(:4S[IҒ-%.Ni/9mS!GGs:㡵<4wBa5wu5-28AP0FH%O+1@~i\GQHvx˄^=&{kfn4JP )xTx`\@:S\PG|cTP>1exnP\Rۥ[㜥&oRPL[63S3)gznܴɰ|ETjCIǇ
<OY(C|,{rɮEt^-P+{lyXҺ?(Doݷ=|3VcWlm5KC]p=\~_>1fs)^?~3`$7y{QtD50=X\Tkcq./TZ
Zn$M>u3aPVFBEm",Q	-jk.:@WPK-kVH  
  PK  C:U            -   org/bouncycastle/asn1/ASN1UniversalType.classUmsD~T;ykJ m7ޚR]&qRIrZY29oPfӡ3Űg$hos{{/ +؋R1
"fj
F;#nj5s.l	 8٦kA
fU툜Eа':9 D,{}u*)z]T}OCalrQɸɪVb
^SqUڼ&S0޶̫dBr]^anQP}>Tٞ(ǫd[恂19R/A%7<iS\auo9V\ąQWxUP 5Z6t!W*Qb/6:ef)YArL(0?q6azœW%Nv3*ΩUwTW1₊*L竴J)3yߴy(qu٦䮤'l
xh4Ia69 n3%sۂiYrR4La~*a3nPW϶5Km@vs0oEw.0c
#:TGRX4>1Ou't:4\Ẏ2X"2jH"!RXRlhH㎆
rR4,F
9Lֽcӭk?`sy ]+'Mm+dyDyDG!{IȰC`Qq)-#g/aDj'-<{-Ik#n/HFi$&9&#!X>:<sIҌ(1c6'zDHn+dOoIJϥZ>=M"dQqY
PKzUr    PK  C:U            .   org/bouncycastle/asn1/ASN1UniversalTypes.class;SQߕDI@4FQAnK$(Z-c\9a?3h!bhaqHuwy͙f?y@j(4YNk(g#4!9c$
;&=jN9l*kKQI02v00N#ʱ{RTK*JJR<3bgc([Tұ1iT7iݒqݚ:FezX@U	J&W<3M:ɫRœk{>,3cUťkdKTRyX0%1˜2i(kAN]!"ofm5{]	zد>#.]G{=DԦҜz=d̸FcV\\,71+c	2r!P!P)P%QZF`fZ:-[	l!S`nz={|qyW
*шJ4Y-VVjgu:YXYVuufNN
ءT:&Ƅֹi^cC蜡Pֱ/r
omX?͍$G&!x>>#篙*xK#OgF|
Wp8KL!b@NLa"q$1FDbDQ̲J߸SR PK    PK  C:U            $   org/bouncycastle/asn1/ASN1Util.classX[W=#0TD-lu)VTi1 !!]n}}vaѶQzdf L:'7gf={߻%	`n:pāX@k(1)Gggb3ѱFfC
>_	pC@wvZ&e&t;^?t幯7sȠ77$IrtL#8.'RH@iHNvI	y0>+RD@%
uǢIy6RA$Se=N!VPL̚7Uqb2swDJ$ԛ?&@TgF g5@45RBuY5kzgt2
hPF#R4DHJIytW<4pdCQZ๠HFV)9߮$9BX#Iǭ7&ôeXjeи#*QOd[O)ASHiF}Ց:?w(kRVF
&*oTsCh'`e]ڸq5٨^C)hPs.1)Ә%`vlcl;v4(w7dn652TGv
>'-|yؘ4>ݘS55$pV+"(dͲv"yDНvs{lx-Wbe]MPdQwh<Zc
[V[~8u##	!h8跮j]4T8]hF3dGe|O3|=}KR!1|CzNM(hD~-AJQ~UQ
CvaN"aई6Jc==8#b/C9Ya&Dtb;Eԉ)fH0<!L2L9q#c80,9'C1<$yfxYgxË/1
ë1F1|d030<*釟~i:'ļ-xt^Y['V5
toԺEu-߳On
^eVj<Y7=s/mP a"?$
NqL
PUJygi)Uq>bkXeTVg	7%Hc+\E5W[TI
O]Z}TQ<-J63CauAհmliCٮ8;<>*)SAȳkF٭lReJV)<:r7jހY]85|Q2&]JnS4U:gTJ5Q}KRUR}\UZ%lt/V\uQ#յܪֺ.+%/O49ҼcT[S2ORVrHI1MӜڅ54p]@]6&~+B*?se;tfU| z%iM>gTr:KkR,FA5V]lzEP^H&%ukvHQԒQQwA_fZYT{_eofMhtwbĤ
>&ߣ6bΦ4/PKKĹC    PK  C:U            0   org/bouncycastle/asn1/ASN1VideotexString$1.classN1ƿGH\IaL9Q.֥5Kl+ҋ>e,1a4oL?>` f{5!Ldڒl$QM&']*I ׺3vl!=jقWi+:w9,s>e}KБ.AiQP!(
4.7NA
q
jl#lZu,v	^ZxmΡW'=ت%
DѡcMG
YXU?Vjw<_(6~hrN*CeN,zjUQRy'L-Sq(?cǙfHԺ\W$ PKHwL  O  PK  C:U            .   org/bouncycastle/asn1/ASN1VideotexString.classUYWVmd	ΊI\aqRfiXR/FDY&}ˏt1i9'm_t$lG;f7sOaA\ _'yG.
GzF=b"KHZ>r$WG$l#8ꚡtB@rHPX~AHJs<MȯLM[ZVur2C5Ӥ4ʘimڌ27t{U@0,
kF8$E(bMXIsLW4wW9Rx!zsZIxS)dT#mb>c[yVSH,asyvkʺxr*Ʊꊑ{[˖
܅54be
Yjprh8Y6Gf/CT8_deY*عSGXᨽv3(W%̤EK=.Rߡw<,ؚw!-n7ןmn|`i6+oH-"EDD􈈊qU5q/q]DD,'uVҮmE"I~_=v{VoN+נsMuG*FJ9*qo^Vw&	?}Y%aidSCyj8+$Zd4MM8:Aq2!sG6qoה*MqS2^\ъ9]\,JBZ
0	X:%5	x$qG$܂*6>.	Id1>/TdI`sb6؊zoB[xA8jp>M4ʨCw%}?a?!Eo="}dI_H\gslȒ"6=]\؁"aǊ0i("o2G_Q~"f
hI;qΡGi˜BG|v?ZS5ID; Ş19IQ|"<#{P*ȋm4
4?AϠC5mׁk'fß>Aasqk;XgSÊX젾2
>;^θWR"k5#{mJAr.;iK0Q[phΖ;i|iDtwqkG?"%kg:N?PKY  
  PK  C:U            /   org/bouncycastle/asn1/ASN1VisibleString$1.classN@ƿP*Vb*7 P#ʅS)k]SVzQK!F5L2;|3	G3yLsCHz!lL	7a0lG>sv<w%`7=sw:Bv'5Wt(j2]&Xߧ2X
AwqpjHj44U[f;pϮզ%7{5`*AYT@Đ5GN5u,cU}W=)tT9
>9XYl]^U;(<bf	́ӔT	/(>E6#*-庢&	PK#I  L  PK  C:U            -   org/bouncycastle/asn1/ASN1VisibleString.classVkWWC'PⓐhS}H5mxTP5cfdwm?յ}[ֲ~菪=gDլps=w=߿>pDaHY	4g<4^N3*"xd$;ɡՈ-6Ӕ=)dFB?E+{kd4KA/"uۣPgL7(ͰugqtϠAl>gyoABlẎ3X4CuDf\qgDkS~Ҋv;Ve:)XkJF,5#Q(>-	"Ǜas	C,hŅ#}ey͊9sW
ݫCvCKN*;tlƏZO	H
n5
VvEZM4$쬆iO9%[_ҵg)~A_m΢}5Q
%7-WcDr"nQ
Ʀȋf$k5<8G3}XL+ =l>N&ϩmbY[kzF7e1 #!#)㈌2AdHUu%E;O|ux0^QwՋŗRJGp!*o׊T8Y*oc](DH[OnF{Z[|_0PzhWцWU"bUTtADخb/r8b?Ud"VLx*5c*:pIE^oDټ(8g`*x	
&6mxl
d\es	iof8P*7jֶ
?[=6Oy~mL+LUGBB
Ųшf(=}0a;?$@h#?r ɡe)?D2xngfV1<Rei(
j
NQ*íq"!Y%|MD½dӞwzWG(P	è
K$೟Q_58B4ve(I
NyDJ!pHo(Q{O(<&m!5>m8 ~nl+r=\P@`i
)h&{[VƻH__*$|'E͔;[DBw'xw+ 5vel瓀NH\Pef||O`ZeggC+G\/?PKanC    PK  C:U            2   org/bouncycastle/asn1/BERApplicationSpecific.class]KAIsm>W.3c3/!22I6dw-gueQљe!
fy1s>> b!g;0/!#$C?qvZ,ۮðvV}tD_ߑ9eq^>--JH<??w}ͱoe޼0!Ac*^u͎l]3lnkE'ʸ۰-cXz˟9PGB1E:2:f@!zhnu%}l;:=l@ԊR$9
e!?B6^V^&rMld0nAvgG(O" "aTk!TSdc{2PK=t  9  PK  C:U            8   org/bouncycastle/asn1/BERApplicationSpecificParser.classMO@߁BV=x$ Aa=1b/ە,iM<Q)~Ûzfwv
	CP{܉TaDCgA8+G~iϛ0k)R*oQ"]rN̦+1*7)a긓8tD+R615aq}xb0V-n۝kVШmdE	I)TR$xqaUfYzx'`
MG6WFqZN.'PKa.    PK  C:U            (   org/bouncycastle/asn1/BERBitString.classU]Sg~de.6&A)]kI65fI
,{ƖQn{߫Xy7K+̞sysa)<hu|{+2 D5۝ddUO3=7´qƙ+듉cKSSɱM8mTJF/[#ޑ5ifnW/Lqi'S4-ôdcb
3S|\,[ed94U|ٔa(qT )gX
CMgcMGmoA7sd`p)@+eX-`Tc4ȝ
筲=y8^ҳYrp8쉲+ԐF/[Kˌ\/m;;j$1QYTF.9ֻl5R"ldyB<?*" "("$∈GEI2[b}7?۠ݑPFˈW$v'/}`{9=	9#Uid..JAhq>
Ze/	px
n&Dx؀D#21?a21D\Fޕэ20Eya¶F%%	QLK4zĘ>\`}&HǸDa	&.2b2HxI&&lD/V7_}5[Jt5MZz֘4
:~<u -Phe"5+&}mÅF?[g~4;xfx~=Bv1ATE`Eӏ89ڰC~זMojІ	~B~a+=n^qM	1yO`'Tcc~/$WQ6SxC$?!s9㞳;CMW	~gIxfQXᢪ xT
|r1qp;1jAl W4:!>lz0 m@:4eiiv'ȫjv
	;5TM,aZXj`ӯv (:>mÜߠ 
kՕs?ȟeh:NRE._0DSE"p_ 3B}:G\èZ{
+ve"d`H`&/Peh!i$=%'qhh<Ug
~ZD_U*hXn3SGl9y͇ס;И^Gf
겞C㶋<:J1R&܊{`khB6!)mZX܇P{qJDcqPKZjm  
  PK  C:U            .   org/bouncycastle/asn1/BERBitStringParser.classTmSQ~ۦYjfeoPbN3;̲X>L3t0{<99y\ӷE40Ll=52մecY:WKM:mΫnp6 vAaP9G2nYOiȓiv^D7x
{+T渙
qGF.#t-;JYE3}'x
-oVTx+ S1~2.]reR'TL]Up1rRծ֙\ZXn*o8żU!GB$KpS !J"޺.*9,0[@eA!?^k/G}Mٮ~Ӗir_	rFM	^-3FqzhMuOre[ ނ/Hm
:.G0|
4*=Pp.L02FT(gP cs2(cy!0xVG~o`pmB:=P=] keX#JLSD`hN1~`SFl#CzvEQ҆p	ߪjUz	6&l-J>ݔV))ƒe,V%H׿]Z$	wE%ZyEkܬDJ	%k5|dpPK%&  g  PK  C:U            &   org/bouncycastle/asn1/BERFactory.classRJQ]KtQ̴fDeM)!,)$}Ti=]3ދ:{͜`Iwrn%R2CRۻa;02kUQӬ
8;)*8n;caRiήE2/M^s*B5kA_f˴KXybUx{%!ё(
yj+@UЭ@S0iw,6'LnۖNZ~0,È>DUcTEP T$
a]S:<99qэt!"G)=Bʌ7UGr`NhSHx!v`7`}D:I/:!rFIUS7PKh
  l  PK  C:U            (   org/bouncycastle/asn1/BERGenerator.classuRn@=
&ऐw4V@	RH"4rKmd&T_m#FOwɣ"|̽=3_RA/UŞ:#3*}ɺӭuNÑ{=X]־`AK4f[BӃdMd{?qA!:\q-빍
ޕmac
W\z>Cae(z;R)Wqx'xS,7>aX.J&gԙfUG&M51{Uae
*)XUp?y%Mt1&m8qu]oy?i}t""od8FH
P#Ik[6ԣDPIUY!Vn¨a9I3
-*Swl*NOZV.U W.7xFTZ._de	Αɦ_r!+E`zDX7~yx5ڒjLfu
эPK %    PK  C:U            ,   org/bouncycastle/asn1/BEROctetString$1.classSOP]:VV*N>ԉ[vCIyRnb.a/	"L5Y{zwzz__	ͭvl+BʧE;LP`H0m'h	%1$<(y!|m_+\R'Q)ڎh0vt="
|EPm9nҶ#G.Z%y۲K2dfo-i;<yG
Y{q|Z3ģu&1cHGRGJǰTFs$x>;8rޒ5ٗVIP9j"&.A7qL8Mi1n@D	L $n)30W`H60	10<Cl)%񂈚Y6̲pQ$gV%wUxNRN{Aj,N?n4y(5Yks#|GFpz#bڧB's3`H@UȥcUǃ}]Ht9E>YkRkZ?jX>)<iѓoPKmذR  )  PK  C:U            ,   org/bouncycastle/asn1/BEROctetString$2.classRO@*xDD儊wŤw7AIH801_[6wŲ%_|D67||9p5VQ=#`s!dyFI_iܕzs(J=T<*GC1W`bP_GqLPo'
U!)%Oft"e3vHuVFykԮEװ0i0eaeECVߺ/=S^M<Q/{nMt0A	s1?2f6fr3[Fr iҡqJK^rl*%ӍgO5Z9UspcӨ,ye:žFQb䜒z۾qŏ%

Hoa`]]/W晫f
]=s}3,}GLkғ
y6
PKQ  M  PK  C:U            *   org/bouncycastle/asn1/BEROctetString.classUsUnwMRڀ%-%JiUm馓l>0>0J8v3>ȓ:ҀLv&sw=go~(	HѾ99(}iys]LϏw3e#sB6ua"5[Ȥ'955105KZGr_*׬Z^%#WT6]1␀_j'H4ZJE_˗W|FX1,J+_.X٪ڕBư@nۆ̞D/#|Wkz,S/ƪm-N[LF"V:GzSWjjN=/f{3,pocjsŴU7bT}Ob^6t׌H)xMAC

"
^Wn}kYڊQѹ84ǩCm1cMw$Gs7O_~hNC+a}	⋢i,jL㋩lC7{*ބbTf?Pу!H*xTWE+6>6'T<J;*z.܎3V89?4ô )6qcl.nMl>d#)?lpce\se_K5jέ߽>SӖeTJzjPؖ	}5/A!BHQ	ёx?y>>B\<Pȯi;gB?y:+O~~?#Iwц4,DB7"Y.'MJIYJz2jAO{ұ˻\iɟ6

Ayn!yA_t>F J*9HoZX`q2K zs!	oaH.bbjNrAad-KZ=j{yJw`q"b7mai><7,%vb&f8$퐙YK)YȮ4Jgߡ-Fv[(
xC%M 2(oޥpD-/;y^;\HA{ar48n@iWΊGsC-'`RV>8jJ]sG$Wq'lb>֎71cO1XѺB]Ťcٹ3.?#&cj`C̀p-MS$ _0=l$?PK2  	  PK  C:U            J   org/bouncycastle/asn1/BEROctetStringGenerator$BufferedBEROctetStream.classSNQ]vh
)-0`^@1()y1$܂	G%9ZChrgmv<:0,?AJ丒+ٜ%M2o|H.әxE-;^5*C(ۮIAL˰d4w#gyceMl-7?0m1~-xb[BLmg]˨MMw-;|L,YMttvf.VE1J燙	[߭Qr47Nɣ15
MYgfe\"U6wސH:$kEN	3l{lFQպib΁(
dѭ
74	L%.ڹУ	qB!E$0:0F'F2uхA.4*6F.&]<xTZeݔ|~| ~z0IFtO2$0!.n`bU
'G:%.;-tH!;"I?hkD
i#J@z[P3@L
|B4	(!+g}_5@>jP
ӚT
RFVTT
'"HDN82Ϧ5]4*!:qVӑB礣	ꈑ%mf:i>1Njlj^a1ZPK    PK  C:U            3   org/bouncycastle/asn1/BEROctetStringGenerator.classJ@icScK.]	BwAPUL%RI&^J7- >O!	V0rf>_? ԰ΠsԮ:baŉ-Ȅ.g-uogNm~'ey텮d[q
qpz][cup?_ny{$My{ĭ6U(*&TTEcxuE<XRFKU#l8k::בӑ@F$r+Aì4s0#ͼB܁(MK=+x
*A>
J
Iz:B%Wc%VɈ%)Juyeb\FdeF2V'}#Z2?Fޠ_I̚42?PKȠty    PK  C:U            0   org/bouncycastle/asn1/BEROctetStringParser.classTkOA=k˺< ( D)I"ĤკNbmS&emHkhwf9G *nhCw ֞usg[{{"32Ȕ=AOVM}E/0LNPؒA'϶(yN0aǖBÇ[o5fy_%UɒwT䬬_e^X-Y{o[WoVB6m
N61kXh
=*s΅%Uj"1f>O]~P=k24\`hЯa@à43DSWb{Jut3my;H24^55̓?}iAĕ%^^vY@}=x6/BݫKi8 kz0ctz1k`T=.j`^F\GBDX<1G:2:"Cז|SOշ'qU7`E_H$l&;h<'aԏxqC' L+V*xqZGQf^FP8F
1`kΘRu.^t*&2<be&xLKiH"٢}XJSD~nL(Te*PKW8T^  T  PK  C:U            +   org/bouncycastle/asn1/BEROutputStream.class;o>.F6̼;FtҼ⒜T<C}`?CҒҒ\FU
\ձ303032Hjd%%g#K[k0 mb`a`gd`qOIeP``rAـb`B6-* PK2      PK  C:U            '   org/bouncycastle/asn1/BERSequence.class[S@K!\
iVE- B*b(Ba^|:cIF̜s=ٟ_cYf+Cݸa|aiڲV̽i;|Sk;p|:04s֚'M}K7X^gh,ҺΟ3|2wq}mYnXs)#ġĆ
+$_mnX&C_*S<S]uh[7vTVWfK+Bz*b>ghT$_s6M֢HdwPQSvjڛY!sk.Ysd~e\wA8K%$(%4Ih"UBàrޢT5א^4VGRǭU*ԕTun+e/U86vGi-=͔|(-RC~z
VnwF/)~ZHQP4PЎA
"B(!'qQAq^Vp#
:0B/Fet"!<U7IL$qKF7,VAbĬ>7 q:W\8}ژZżN^x>>VgFȬ6Ԉ
{h:~;Ξ*A(^?l{ICn"0ׂEΑ/2ܬ
wq +	,dS !oQ#
9
a7\W[.}$IywowvJ$"wq¥]K\q'	)`PK%Ѵ    PK  C:U            0   org/bouncycastle/asn1/BERSequenceGenerator.classN@ǄC8ǾpzGԢ"!H7hcQ屐C&V(,zVOpv!cWFڡL&!ǃZ>~C6à|oxoJR-ŕ
eİ*s.ȿyS5ǛіvUR^oW8UxCJokxOD"JN_&]<;P	QPxDl`@΀i ob<xjDT,6Ì;uOr}'kڴKMmQX:a,1i&)Cas&D,t6BX٥`0'eJ,JMOk6ڜC+CHt!_p{Sdە;
lXiab*rn_xVm9-lPKE\  _  PK  C:U            -   org/bouncycastle/asn1/BERSequenceParser.class]OA)m@+?~v+Ec$-kH2d݁DDQ3Rg73gyϙwv"^1^7SGD]hZkK:LCƱp%CnK
핵WGv3/^}
-kXqP6WMeG\?nj
TERlڇ$CZBPzAaRnb==J4pr78Lj}
,3**,~v-p¶h#vFUMůo"mO_:e#6 35qL㾞>0Ccx4(Y<5cSxo(̐|rc'8Qۅ91HVLH`2/)Sau1gU~}1$ь^虱~^X$
E/,g'=@Yݬ=$W,QqeQǵi7Iz8PKfi    PK  C:U            "   org/bouncycastle/asn1/BERSet.classOAǿn;mR`[Qn+kh"BTC*Leviw	^x114zl+4e'yfyͯ? a@ѳ;^͖K/^fz`[m^gvʓBѵ=k	"m1qF9{ekk2,m۬%X@r>C=m9
;"\|8AlQ/'_ĻÙ_JeE"F1JQ	t=fsRWY"U	Z1xz޺T
hHf,MZD1&C1L4פ.
iF1e;+ܲ> "NA~DV!ZA&|]g$FDFIK9;XK H廸~b	rX>
e莚V?c^v2q^(=Ra?_n;5#J-6dUBCnVz\z #"+jPKbrW(    PK  C:U            (   org/bouncycastle/asn1/BERSetParser.classSkOA=SNYyT+*>xV/5M$)B,!n'bivWR#~Gl)M7;gΜ{ٿ~C6CKa$CQOU%Qߓn`.Hx!'+gmŕWX6E9S
=>WWDqS:"
Ϋڻ&䚌7OJÊC)ĩ+IavW#4ܓY+bB;M 9#1ap\0^eQ,U:I%Q	\$`̎/+"]_}k]x9dC>'5=Ojb&R`&2m:]MH㞎a´q<nbNO0oeAO%G#XEkK{41'@FJB?gF
	Y@qކct94wK	cFqd*O<#n'2a:wDˇcw#v4<8VN$$KgC"NO.&PKvL    PK  C:U            +   org/bouncycastle/asn1/BERTaggedObject.classosUƟai-ۄB15b%V3˲ōtAXj}~	vjg ~$_DY6$qC9w/ù_	`_O#(@<B08T)W
s&͚%`~8j:5]&`f8W۶ zjئ:V#`n<SS!\zXYk? .J'rC)54Lu̟L6q3]jr]=*uV-mx4^~dvFnJ}ˤ̗bT,2[99j[ծݨ*ڶZ
ô0iXlRrl.Y/\AHE)x]En{,mSP9xi:
,ݒ+	}rV'FSqerxm\'0Wa<N%slLu{;.cqGp(Kt
ӘҠA02I5 2F,ik,
%˻,YT\A:˦#-+r嶊UrS87q^q[KcږioBWg;Fk˴v@W2%=]FyսsSH^tR8&R>&?bhz{H愉x	k>H&2EEi.YL鈡
hݧ%_A=vw4 qQ<_Eect6b}dX%1,Ez!P`oRX:v^xP	YA\1E=]H}@sߌ.Y)C>a)Դo԰<w +̙q7,K㠏)bJ'L|CzY$k	~UŐ_KxgtOAn #$}d+M1=J5?PKJ^    PK  C:U            1   org/bouncycastle/asn1/BERTaggedObjectParser.classUsUH7,
IhZ*mY6%$UZP(!Z⏸Yd+em&}ɾ҇8cȌQNY
{ws_8Ty>얀g7=i]tmWeE[TpV5;O
 ʺ8ZhہMeV]»-8ڂ l6Q0TҦotᚶ% 5($(jF5_pn;3Kk[7Қc-WKtj=맃Kn:q:-H܃Fno_j;I&
bk-sh:Z]Eo1w{.;I;`r_܍I/ءf:"Q%wt{kWUf5n&rqy	t\Z3]:".$-ED(x[@TI4
҅*?_?Y]v1(M*ѱ[#-[Ƕ3Y{)Z_.
=xIQ?I!a\$	eL! CDPFK<Z22Wټdȸ)c36ʸ[X6+aHHbMfY6|k	)|%Ql
CYJo]hP꾯\My]k$v6#>>'F	"UƎPPGXWSG(	\=M^ ?K?^1{1;B'&@`nfpONQj'Ԩ:KjeBMbK6Fz*!|deF87x.wB4`yѝ qgךY(lѡ|)es:
-<<} SDsVŭo	7,Jd*9Ac<><b%ϾS9vXmP?Cup1hyWPK{    PK  C:U            #   org/bouncycastle/asn1/BERTags.class][OA
miK)3ZQ@<vw6ƛf!b❟㵟Ob|^7ovgvgZ~S))VڱMebxf`,F(Wd'̊ڑr]v"eT4Ul]^ĭ*,_oy- }3n*)WCӫ^lEkx*b8H|,_|*21WXG&cUJ
Nᯱl_
6gŊRlNi-1Q?v2RKFhXGG4X)nµsvTĊ@矍\^91x{

β[ov~MgiX9rR?<};J{znmÏGP$eSF(yJRRJ2B(Ie2CQ)EeBYQ()(
^Aܗb9iN.R1,B&mD<k̏!x)<\<s.0owmh%t;5O2g_ëou8;6{̼1w-l7<܀טكo0kcp1PK87&o  ^  PK  C:U            0   org/bouncycastle/asn1/ConstructedBitStream.classT]Se~d
b%6`D[ՀU6ɖdSpCf7Θ03jaƟ09jfryM_ \@6^ᜀ?:U9zm>sp`bCT&W--]3HeJ2+Гqr&-2%3?_p+4Fy,,Eyݫ4ez
rޚгUWTl4[KvkzEBCz\H:4oO.n笒[pN]{zޢioW7	cWC7_-<%;{	VdL[a޶CNy+%^;9*)ZqbO镩1jq=>w9y3["g58G'.86mtV"Ej!:
}vuǋڮU3dx^22Fd(@,k	ٝ)u(:~ȁVĻWw	oc.^턣ɧ󛯃&!6vb~)sw8';7sdG=6_)TRâ1
&TƤ

XTяWT ,^^bq,肁K,d1bbQx;,
cAA=I*
վߍ1\f1O~ӯIiAJ5s^;2;$D~K=M44t2.B CyI16R%#VÚaG4>fIi/:qMޥR!3h5csyKVW9I:L.4IlNK4r	Mk}eKOvA4IC$9޾C!"HIۤIMbߐv1.]Ox}F{GR:b"{yQ}jcu|VǧWq?c;&q$w8V'u7@!⒌:PK!h    PK  C:U            2   org/bouncycastle/asn1/ConstructedOctetStream.classT[S@6ME0b"A+^)^ QQgPgmd
5餩/`F(3^Wt:ٔ"{;g&,2] G
 mK!CT28Ni<թ'i'RTprC!#5C`t3F.PG{gSOkV4όxڎN'ͬꨕW^4cX3Y3IlfLa;3i;o%_$1FNvʘΘ2M*Zf߹;ı8l[9SԖ&o
wee.mЖ,Ik:f?"^FFd4h_ƠCtlo2ڥHsywݿ%ZOa-=/qᘨBmGEer&' ]J/+" 
GTԠC*$HTQ*jqLAt*ZUK7'+8^8M7ᬂp+Bi}]a;E_|tctܸ˻NT𡉳uxMR\ [ŕDL_eq́(I&*"xIxO7ŠM|BP`+rަC*`WҤ4k&=51'5TC1Dda_,{FPX*#
ENzdI	fuE򒼏-Z*%zy[,@V7޽ţJMz?*@"zG:F|/I@muC5WpBV1
0THWWqKeE9\[PKҐI  @  PK  C:U            2   org/bouncycastle/asn1/DERApplicationSpecific.classaOP;
emE:tJWFPf8	.̶v"J?HG*.ksrrӓs3l3dE{ϥ/<DW|>>gޅmwZ_| ptPrOsPpQrax5qDTÕP]I${
	VTIdQt4	L,Ț0M,X6a1Q Z>^o(z;Cܰ;_'B,VlH~J^n{8=,FRXߵk氀6emִY=ylZ
<P}%TWA:a$hDaTyE5,S;W(.+W(6x41~5ZL(S'Z)}qbv-a74|1^)oNWt'iJ"}@wlM'%:*C>LWp7_2$KэPKu.w  -  PK  C:U            (   org/bouncycastle/asn1/DERBMPString.classT]OA=[n,DEi(tXPTll*Ji%A,v!	01-ďMxJ!s3޹3ٟ?0uZ=	h	)!e3!L)I>gtCg8xԱ$H-gffu#`eZ䘽hlX4 e{6['Cd^-6P4[Vy[f]5<˩yl}[U#yEj9:[m4Ūfa7:ꤓjzPڶhۉ=eAECԒgdLFDjJ<u9j^m}4|6+r,{R@sZCmRf)KD+"zD\qMu"nP{C?=	:6Bl~5/oT;@p`z?V7xWRq^"Zd\{.n2юQ}܈сq2nɐq	Lz	<Џ$bZr3+7!0r3'!	
*<!7G4tyVڌ$mi[ޤbF3J\z@f$x)><oPweOWQ>&wt#mT't$
e<`kcAp2ur!)%#ΈCh^Zsh"T{Hcպv&'UR+ījz#Κ,4;<Z>tYY-PKW1    PK  C:U            (   org/bouncycastle/asn1/DERBitString.classU[se~K[zP@#R4m"-ݸiDoqjgPo79nJ$=|ݿ.C6#/!wqQ?%Slc7̳5z"[ñE+h<dJTc{FSaRΉ38fV(fVB$cn:E
Ln;͌%{¸eqtٲi9%vumٽٛӝ̌~f\䪣ٶ*:6M*h8׊$*$Nz$4J0si?~J[&FI3KW˜zZ&
Vvܤ+ڊ0DjfzF/8eR5_kgլ)/Ә+-zHm5R5Dɒ궄=K,Y%3ъN^OhE`blAjuXjiKyZfݷ;JND][m,
7rz
}Zmu7;Q*A%XylkgGK &/8 @B
	͎8#zy=lk}3;X,sc֣f}
ETt?M=Y#L ۙzgf'Z5M]@[7S/^b^n%RY^4$TCD.(*x-Юb7^R)G:^TNxaa'fTDqZœxጊUу&La^1,)8Qd M	c0\Q0.+ǫWL5P0	]PE.2yeI]ݯ2l=1wˬeNk9ZO+'H.%#2S]Ndk-"3[h&ylzH=Ju|]58
e&
e`Lu(T>ڝôBmWr!V
tPmw9wkB?hXVq:).5|tJB%t\õ! M>q?EK{hi_G*P5e0B#MzTN	o@N8uܨpô_
Zgjǽ.{Xrv8J4<4~am6q'tJ(2޽S#*ݓ>\|k6|_NȮeStxޖ?PKJ  
  PK  C:U            '   org/bouncycastle/asn1/DERExternal.classŔ[OAۖ.,KY⅋^E)h
*BoЬ-.[#F@bGLF<g$M}Ϟ393gf:?`O%ؖa)#麄l(mI9!!fZ[lmK+DZ,c.Zu9{]5)ꆙF-L[Ba^+ZdX2s9m.gN%7O-s*-[[ԅ`ݱ$ԇ,ahءSZ̊JS[H]fS"j)v)V6!2:dtBWW+%a܃9Ǝ|E`uR|їɆVa,kpʣ~8e#>Z<w pj ^)/lge%/tl4A-h͸B5
  ːn
 Fm%ڂ^X,	q	aL$6]qK!dZA(ǔܤ;zӥ.ݔtakϴM>%=Gcd}d[oHt@Oe0B`2Vۣn{(D_32A*3@_S+K}!G#-q5s'hM=YםMEgwzXcoS23h^P):~fh(JN<D#[ԥm PKz  d  PK  C:U            -   org/bouncycastle/asn1/DERExternalParser.classOPƟ;6(E6St脂	}X,b\Z,-
2#|2[[-[r_zss"^%bl3t8fDPC-CYݓAȺV-đ0,mADug%וpWp_za4Ѐ.'6wC,+MQwMQ<ᾯ7Z
q<Iw5R_N)~?ׂ.@Dij+ehX=lWGwB̡'v]FKΑ8z9t>[7Rq<:Ei
iW+%?U\]V.{E҅VFzMO%QV-MX=]}¸MH`RTbZf4"!9
Y5݁FȬL
cx_+]^*Cf(ʟ*
ㄏ6C	wK4BQcߡ~L٥7I5i	G284_xq&<wb*q);CPY>B"daEYFȑ~)TM[XfO1Cjx3;,擳b/Kn0K4?PKc  R  PK  C:U            &   org/bouncycastle/asn1/DERFactory.classRJQ]KtQ̴fQDeM)!,)$}Ti=]3ދ:{͜`Iwrn%R2CRۻa;02UQӬ
8;)*8n;caRiήE2/M^s*B5kA_f˴KXybUx{%!ё(
yj+@UЭ@S0iw,6'LnۖNZ~0,È>DUcTEP T$
a]S:<99qэt!"G)=Bʌ7UGr`NhSHx!v`7`}D:I/:!rFIUS7PKq$  l  PK  C:U            ,   org/bouncycastle/asn1/DERGeneralString.classT[OAN,\Un^E)"QnZb<
۱Y\vB$?Io23mI+fsws7g&ϗ FՏ

fB/ؐk߄aO晌R
mr
)JNаi.XY[*};}WL;ߧdϘ<K5TV| y+[BwKB34EA<Y61[XGc{kؖ2P9wwhO2DMkJm;k)(N:eZγ)b<kĦ#7	
z/f6z빘;kѬ.ftZN_@{uJߵ.ch`hdhbhfhahepCM7Y<5򸂦b1gQyBD^B.Uu;ΏJ~qhzUeOGSz2|Iso\ 4+j
!]ЯP!ib`DE' *qW1i*FܓfBE@<ˌ;Ί#t
&]]5e
*J~RisciUyp	x1iPra>912!8C"'e!	UR۲Չjyy4Wѷ
=_j u(|KR199<JD,
RMEYYj9yB-ɢy<-PK9    PK  C:U            .   org/bouncycastle/asn1/DERGeneralizedTime.classSNA=CKV@D_ThA/ iRXEe;ղ%T׾^Ԩ߷ոM̜sәo_p
3qtšDdI j%oOPJ:RGۓ[̄=w=W].^[Nm%wjjIzN,I 'W9.0ww}W*߳궣ܚgWr=zM%oκl~n#P U۫dKZ]5=
UYf'Gg'v}"k*)jockS,% Tm7_Q}(:1
ꮒM0aA
5`R{?he)[Iߞ
׉\Ǭ?7܇2'ں`|*e>D3d؁^f`,Hw2:ᬎ!1b80FNd9p!0(Nӿ+X|C.hՋ T.[M}>t1Dzs]|Jŕ8sxgt$4|XH:$ĤWjb}U֪FgT9YAS/!qbY?91)!c&JUs+]肯1ߡk	h0s;zDWQ;7vN7S0<ۑ$=Gޛd[\
z<M_A!f(Rak PK48  s  PK  C:U            (   org/bouncycastle/asn1/DERGenerator.classuR]OA=miHXbnkE~jC $bLMYn"<L|i|53D~'bP3M;9sg~`\ɑbrd!ǩ#w)bcl@<Ѩ+FѰmѬm4m2x/3_ikZ03
[,mcfWjm^ɯmeA*eZQԪѪ^-6-柟)#:[˰u2_.ܿL咽AW< A'Cx""ɋ>K4gy.S%#Ë622`2 A⹘2q͋^$8s0CCpnAG	MwrmUY[+~U^hKOzg.a2K,Av_QwqGq 
BQ0ĽE!ہ	yISǯȉ㱬mb-kVh\\d]j,$-iq>a'g,p@bAA=J$Ӑl
n
515]QggF
:JD*w:NTF@q SYs<M5qW!fHHMܢh 񡎠#ĩ1[?= ,^{PKyEb  N  PK  C:U            ,   org/bouncycastle/asn1/DERGraphicString.classT[OQ-vY-
B"ۂQ(QnRb>ǺXvB$?Io29ݒVn͜9sfdRAqY_PУ
jWIeI3-Wǵ<VZAа-WXn^A;mZpۉV$#9+r{3I;LSY'*FEIZ
aepE)͊F	.nmr+/W,3sMRQy1'&Tj4WL)ס[f6-=[cq㓩Yޘ砠tdC\e4]szut*dD)陕#A0C#&f30Rw'4c~*oYQ+EzN퓲3GD5kZ\U">rrOgdc幣jPp	HQQ
pC
^

Ӡᶆ5\@\pGE;`DM}+ňU
Ɛ*zPRI1A?);MW9GGOxs|=+(N 6>,#}}w{w"| }]_Ă4bLmcQbps kE\V
- IKV}#s&+ (Gc+FEM]i!҆%֒`]B}},IƤ<-`=y1CFí@9"GRS@
P=4*PKS^R    PK  C:U            (   org/bouncycastle/asn1/DERIA5String.classTkOA=K. OW/Hi%4&ȧe;6e.D~'`bZ"/~7n;gΜ{d8R>>\	_H[I	uK1
ݞPS\i	>4lny	̴ndܲL+
Hhxe',K=4?UEhRlu{kv9l^*g<ffiJu_eU#+h o4uӐWA̈́ۥ=HMҩ
a[䞞MsKBieb枡hj7bĄC0p>Sjk>i|VJdxv_uº˛61430213t0\cp
/긄ֿPGYTܮ*xI
 0r8q7dZՓ}t5tAR.MV++
1
|QЀ~㶌ܓыIܗqwe"<7![aF 2b"(&!r4]ey,6KÆj\Jr$9N
jFx9
C"_<-'nҸ#f=E,u{U]:A`}E,4K<O➭!8R|
F4DQ[mO1`Zx+{%r;Cc	ǔ<+W8&#GO41x˚80BEX$J\u<E q
	PK\V  &  PK  C:U            #   org/bouncycastle/asn1/DERNull.class}Q]K@=MnZ]WmW!)PZ.)c7RI&oE]o>eY7Csa' Xe˕vRn.waWTCZݶc/dPηV T8C.j/1XɝΐszHN0~l0
5O:7.,natZ`0`Xy_i :	Ch̳3Q{nBp_QJZm1ߑk[1:0HC:)̆eNC
(e^#@oV.]{.}%̄4͆ӄ;e墉XF
$GZNpcg||5:PIHKZAAK
)` ȋ=>bA~ToQJB PK:%    PK  C:U            ,   org/bouncycastle/asn1/DERNumericString.classT[OQN,\Un((*RDZ@E mLe{ln]$|'`b
ˋ&c-rn6s|wfN_ #U	`o0P\O)4i	5s3#[M 1l۶e3΂Yp4S	
mk+mkL9@UP	VIm<?y\wʾR1#Y-JgkvhN3rJda*3ngLU
XMG%rl:vbe-Alt6]]+89
X4J%6t7AAqVlcp̱ss'uC3CC+CC;C57:≖$u(<xs&uneg8*jEHS}r
^PzԱ˲*)GA«U 
B
CXF)ǰF4 *̨-ebBF d=}#̄0efR-3-c1Pņ)a/hеxp4MFS
SK'!)Z}<]w{A'-GPh	3,pF)M!v#`Y*I}x|ٯջ51WD0E=4CoVK汲 -.u<
:ʾPL"yb~BÀ)-(:g_@
q]XpL2PK4  6  PK  C:U            *   org/bouncycastle/asn1/DEROctetString.classR[oQe[Z*T.`Ll	cӲlqA q.PEKz6;3g&s 4CXZj.Dx_{Ðz]Q5Ş9ßSa5Cx|kya90<wCine6.]@w:nrj^fess6~h{C`޳
sVG/+~QQMj>0l
P ml.sph)f*$'S4'5&Ի	IX,!-aE-	3ݮU5<ڸuNݛ'{jsrӨ*BVBDB!)XĺUm2bGUM=ȣL}o<]) q`$=饯xGyE<_K!Fx4E>?BipAEҌt(Y*A,;s<cIbs̹J5SK5tQ?Kݹ6')MQAr!2K#Z]uPK&?   \  PK  C:U            0   org/bouncycastle/asn1/DEROctetStringParser.classSkOA=CK,%A]dU|1$EOXn;+LM$(>0as;Ϗ D!f?0ĭnͫkb=!U⊺tHf$CLc)LxŤD^
YxET:y6E`˖+n1#xSaqti(ZE :w]ɚpxn)ah!do
{<
p (g=JD#%;wDAAA
!
RF4jcY~Zogc:FzB%r]\GӬuE%BeK=05Aq@?@LYq70$а:`ƒQ[V,CZ'a/:g1mK~MZ}JqZGdMNn"gg
/fNopN:aO*<X+:\IAxĳ6pUFOkRڌ򩪋vO-b1rGt4$_-8V$d'
PK|_NY    PK  C:U            +   org/bouncycastle/asn1/DEROutputStream.classMoAvY.lM&Q&hM1iY'V%0'ū'ėg`P-vg^~y>p~
Mx8CzG՝zQհ4^ܮhr΃ͪrM>z[Z7E6{gN.jXZ$D(Î/x[<]`='7:41q+|QS
/
K̀OA'w%~'_K798Y%T9&,AƄYܔCHb
}I.\\p.NWh6G
xlt(*YtC(.e_rG,3vQ;ŭ
{ 1
XF)&GU%iK
4$nDȂej%gcmٿca\7PKj    PK  C:U            .   org/bouncycastle/asn1/DERPrintableString.classTkOA=KK]ACUPPTlf6ۅHOLL!1[m!4w9s;ק ưe	pw8	o^gR7t{JB]Vs9n%x5Ӱa%rC3Ӻ	p2n2ܞ7jh|" em,uLV
F%u2e[\Kfb1=5055m{j<x̽xMCB_w4VfwTAj.Nt5ۢmvl[oy;j'זFy+u r.˰խ,?U8f2<}j>\8;ZM'e`-~V6v+W1tRÑڞFMk`t.2Э(w*tOT~&ΫUqz?VW	<SgUSKA3"W "
D *BLA4`H
ać n]=qGFn0.}aJE10IЧhLӋ 5i\U[!z	YA=ܔo!G!t o+B?AhvaQ!X܅6NзqGR(fT-`d 	H`z"aȨop3`Zx-y&.zIhaA1VcJxP7%MIE'E>>!*.u$<)~PK.  >  PK  C:U            '   org/bouncycastle/asn1/DERSequence.classSuǿ%t[R@Rlc˭K5JjB
oOq/}hg4A;>NEli̜{~s~w~緿c g w;f`,
Ŋz*sàkư Tz9dbXU#
7r)>;'SUuմ&dJ7TؘPe jSW5$T
?,膥ՄA#7ҚLpeJꁵiY5FSΐ}ptԯ!?XcƧĚ ,ѩ%<6A$6-Mo%uCK:*("հ<513FarpRh/O*lyhd|X0e![+V2ԴX-;ءNJU~ʃ:4a&*ufٖ[rnJl{RӉ^Qc85IM^;iP̧"i"EhD(MD"N8v81
N
+#GI	+
Un|5+Jx36w9nG8e'sv8Vq\5wiC/so6Gcx%j;ĜVt@VMF-$uqjd[F<2A,|2ࢌ0.m(1,.Pшe
ݘ& d1-%mﰸ)џ*e	p,nHX`AQ+e,J89	IǬD,Y")akЇ%1jRޣ˴6n$$֯q룍|.=Q~\%!-RZQ	B9l\cQcĸHׄ9Oƞelxs,	nr(ܒærq#d:1^CaDIz<r6C;/d<,oj+~ ?|I6UT7S>33;L-eRդw-gY&D|ڒ⩯0Gb*^sm)ރTN
nx)cQO8_厊N=xT)bWwG$_C
V朖{#}YQ8˗߀UӵYq#Ov6*RŶ;ZZBbzf  ^fC?lqYk04&>/`t-oW0vPKStL    PK  C:U            0   org/bouncycastle/asn1/DERSequenceGenerator.classS[oA\.kҖֶj]uĐ4b1>emn]V&
Q?xfATؗ3]\w 08CD/bC\:\#z#FZ?19C{/}L#gQO'mU
~v_<T~&\cU;uhqn{EXzdSWڞ̢=lTR_EH
t?/Wp҆g
+
,*H)H3l|}0A9}2"nm
Vy#Q]?ӆF?DijN9`e{Mv\Il
40!e^2A<Vb	7pS
9AW	2
TO;QEpW(N1%*E@0oXz0?aQ\EC&Eiza&?̰Nl
5CMҜAO5i1aJn^0R{ÝPK#  E  PK  C:U            "   org/bouncycastle/asn1/DERSet.classVSUd
tۆJi
%5*V@MEZMmC$:>u&cWwTM)w;s䧽o^g(qE@
k"{,RP*K[=eLkF`t~ZҰFX7
V9X^+nA=_PY%QG7R..n22zQ\^I.-2ŬAZ2Mb/fd%hL`qN	d2J.H@{#`wkoVTکiWBn>Ar#5§c2n^/|[FcPqf-oZV#cPhY`z*ʿɳtXC}V{ih,%2W<K=1WM$/# GF>2^qVFZJԘLB-SP!er8:WkbHK	P%{!hl~1nJd1X>g(8v*
Tpp)[i
amaaeWt#` *8p
aS^0Y7^DC=/1ð0vW|]zpȻNOCޢqFY) ܅iGIG֏ylDq,ժHs|':4q$}ZH3IkM,p^b9Ivh=\EfoErV
_ Fbs9x?
T
>3;S|dg!ù.!3		iړHw.V.=3k&ɿSm$w#}c$#\_I%bVΘKuC0Mup_l(_vT{D&Θl4lF[
x\2.*@Du1EaoO3_qI<
pޱEȸ@?h@p};) k;_ŭe8|s2]0Zmr|i!{eh'DW9h&?PKa <    PK  C:U            (   org/bouncycastle/asn1/DERT61String.classT[OQ^NYA*l˥HQi&iŲl"	H1
6̙379??~0BhS%vJB@Nm֭3ms_BH\i	!2n:y	ԭafܶ-;lw̼:
Ka[{C'm[;bf<y햵=j[Su,hٰUJӬaW;Y=+W:9eJD\Τߣo+S5кcgl-;߱MPNǵ9O/p	}ƭƞ*jcb+Re2<}*|-XbhfhahehchgpCC'MU.5ꄄ?.[ճQq~iCT\bv&T>7'xw`j<IՓQ7Ux/u!F2B
|
./zD4 0
1@Z(0ঌnܑƤܕы	}%̤02n`\{2Up0Zi\N?uG_.i
m'˩J	R-c ǾB=B(1#4@ݤ}=X#RXlo&$i)`go±f  a	L8$<#52u
pVK汲죵.u<
c<tIkQ2$l"n1`l'~|3uy. = ,bPKO  
  PK  C:U            +   org/bouncycastle/asn1/DERTaggedObject.classTmse=OvaR4[yicmY i+Pc+AŒPKߺ7]oCwYCܽwϞϳ'kNcZ@2(pCQ)y7w߳[/rݚg"Zh9
;zj5sNG ڰ<lѯt[-{m|@T?^YЇBr<mTʹl!nuOnnשT3;^Jg=}ì6m.f^
ݶ؞p܎hXRuϪ'rON4sRkmUv~b$jj5͚ETil&"D.Ms}sIz RV$ʏm۳x,Qx 
*S𒂗,(x'~V`ވ6M^r(
InM/@s
cbj8LN^bxf+LQK'ثY>;˲ܹQd6>n|asey$5bJiH0
YkPbxaW55
 ax!26g'*bp#
9<Ç*TI=,.cz){f-ó*
/:rH~K<dH*O}3^:Bf:1ʐ!qDBUb,/G*>|18[z=7=|>ү&a҂tё8y᧷Xqcm2>"PH965V " &DICsLd/.w]l.?_MC/	%e=fzВ)Li*CY#oQȇ^C0s
kA_A_9$h3&倲7
7s$vܭ%~|=҉{PKLj  `  PK  C:U            &   org/bouncycastle/asn1/DERUTCTime.class;o>FVh'0F6̼;FtҼ⒜T<C}`?TFj\\JXD5|sK2ҭA	CKK2s]KR<L Dpp12p.✟ʠ 3u !?%d3i6-<*A`Cȳc3  PKƐ_   )  PK  C:U            )   org/bouncycastle/asn1/DERUTF8String.classTYOQ-0Ru
ʢ(RMazmۙf:I#OĴDMxn["8{ws7ߟ sdKpC$wp+))EXfL憝
LF-˴Oq{٪Iז|Ʋ}
ٴ*F5Ce_yNs{j4h̿xMCBw],圱R*RCt}v|WO'%ϴRms55gyT#љ]Bż5K趾G还PS)<{1ebaU_T<YrC#M[m`hf$4BKnE

!WWTcRccժ'EOG~SZ2Ճm^-/7
^AR.a(ŀaHщ20&ÏqqOF73&LLF
3%2
CSf$hyg-6HݺjolBNsJPH?+@{? #p Ow?ᡳg80AaIp8FFR<icէyxT!@bvHZWKEBpY4ivG,<P>pCy,b"z^W9$DVlܢpQzhsU5Y8^bPK3_    PK  C:U            .   org/bouncycastle/asn1/DERUniversalString.classT[OA-LYA*RPTP@E)`<
۱Y\vB$?S$^^|7[`9swA
<jA=FAH%kI,y1mUۥ<vJAplO^VA
'ep]Ǎ7mg=nb8l&w<1|2iY,/*`䕑7!/ZLinE͈i,Vyv:QSL7D3[A[!:sM"PUtZ\iqug6v,Y{ >87p$߇+h?gnS:G-tZE.Dfu\Z?;949faecgh`pC#CuXΜh{BAQu騼f]Dg!*o%gU;ʟ!xŉj,e^!tӉ`YV'VAEXCPuWQ
i-
C*hЫ}!.MpWE`HE+h'͐4#*`P*:1R}o3pRtIq=AIŢǍw<-A:"!$ 4	}{w
Ip/eyj 3;s֕CcZiw40 c9L0V @AN(X 5*JCKfHs"ms=9<II*PG5(b23AZ}PKgݎ    PK  C:U            -   org/bouncycastle/asn1/DERVideotexString.classT[OQ-,\Uʵr)(^\riv.>01-ˋ&c-i̙wfNן/_bݏj?%xІڎIPc¬uLLIJ-fB_LNVB7u+a mf ɝ3hjV:v)gSZˠYZ*VvvubF*œZ*`6/)Vkf&#
%3aJ7猝Kә@u%kݱر=#඄^NFv=S?Ե-kDf֗G
]q6c:w5*%<qFHa$ˡsk~rU?CC#CC3CZڨjh\ӣݤ^{$
BB;xY	-ǻ
^Wl=zNqRCn<~^Z
jRPB0+À
0"BW!2:TF c2:1.OdtcBLS2)(hBLgJ5xpԬ;nIĵ*ŋGl<X%#Z߇Bz;c҃Gh8Iv3yX#,):7Oѽ|Ëb<orsa!D1A퐰FldTTv)GDZ?@p`X0&e!y,Yo1)%1>"e%m`~܇F[𺀶<^PKB\    PK  C:U            ,   org/bouncycastle/asn1/DERVisibleString.classT[OQ,\Unm˥(Jii7n]$|'`bZ"M8-iJp3g7|;s|
`.*YG&M$a-vJBPwl^FB7u'eFL;dpox󉐄7<xuJKPrmTݒK^
y;\|1ӲY!'xAm_YmĊ5Jw:O{cK)E	ۥo*5@jJUϥNV׈m;{~k1-cKyʸ5=s:_O
R+͌m(g^=20F&fV67n1SwÑ3-Kh'Z pK|T2W
1Db^;tQs/VT){?϶W×T*x|ʬ
jP~U+PVp
UPTĐ:A?Fet၌nᡌ۸/w&.чG2	C`Ux*&yL'E[igRiE-vW)U<~O*>GOP~zD~!Nnо3rx)P'X؅6NгL@Ӵd1C[,Y<) aqLR;$յ5.,U#EӤ>"z`A1bre/@Zo409%1&Eс^|Bϛɢ9PKcI    PK  C:U            1   org/bouncycastle/asn1/DLApplicationSpecific.classo@ǿFTJaicF1K^$ԶcJ_a\e+ul%4{z<_ ^ kt.Ng
VJ{q"kqB\ߣ
$=eL="~l\:W|m%4cL3.wd5{A2HP>1n~%7TPK;n'opt_Roac\d@~˞*T*Th*ȩjt䊴=K5cgyҰ\gT'RTi>3ήhC /g䷻H۲a#R9 -W)'=,
PĖuh5<37@֢AHEсtBUIŮ5kӅcSLQb{$GHEXKѪS<51[P(Fqp'qV;B$nI"TJ̬͝4>GR*4PKji  ?  PK  C:U            '   org/bouncycastle/asn1/DLBitString.classQS@!mRB*AH[ TQ"Jh8)i(q
C9% `dw\~u`b)@Q0ӛ"6g>*~V!ol42xGfXIӠˎ.?cUe˚ݪW6YUevM@<l>Q]f!Nd$h0 ZjÕvKw<,T}xIQ׷[=ZMkVsTԪ+YۻSov׵zss@&
sgޅ*yRy{Ǯ2Jn8>;c22R2eܑqWVOfrz7M+]cygDx-\dFKwY^ TCT1aH*n#>zQH*FVqР+7K<U0G,r'
fL!8Cn o[ s+}Edh"z˙x}9@dg@%
P"IHo,CI@&o
mԤ7B鼮_	Pu
 
{įa.9
d'xy!jD@_6%qE7\,
rX##DgFR4;a\l>X\"PK#W0    PK  C:U            -   org/bouncycastle/asn1/DLBitStringParser.classT]sU~NftKK ©l	i
TMi%-gNv1lN?ҋ:#cg8g0M̾g>9}FM`,	|2gY<CH"=^(sxCRlq\ؽ鰨ץWe8C`%=+|˒˭e*wG2\OG:/o+.y;MG*z/E_TeuYpcY]\䖠xÉbG\?W&<'Wդ#j%E!]RM~ۭUep\VDCdN4B\;PJVEЌX
!d`!HHO,JQݫ,)__W㗹e0^Hot0Q~oAOCBbOZ
%<ˆ,o0p10i`00߫e+S+փB'ܧ^?
ick#9B+Bش:d҄޸ZkvPoy6($Hx&N!nbZa&G8>4G&k3y&.8MeT"js-4J&ϒ6|H"B-hs;ksCioUdFC=Jˢ 
Vʅ=6Icv+v3ϰ8hehwț dl $ˏӪC{J*ahRaso-Orn⛽>[XM&J3Mii⫙~20<r
Et;
~"D֠S_1k=i_e~.`(wiϘG-J4{e}hi/ðW0xj/oPKQ  }  PK  C:U            &   org/bouncycastle/asn1/DLExternal.classŔ[OAۖ.,K(^C/@EQ"I߶CZl|o>Fy3񜶴&ص>vgo̙?~0_8ّ_2-Y QW3	m3낰t!!BsDmGDR趹m	i{.sdieiPumiռˑiZ&Dv6,Pkl|e29CSx3|e:ZvT2]4XYx;.Aj6VֲYald^Pn'L62:dt袴Jf0Bç*gqzXą.`L	~穆ᙆ_04	W@	ǋ#k/qcJxR]xS:D:(_[ETV\Qь*d\Sx :YTtc[,c*dfDYb,S
z02 ,Y(ŬB-S
}7PbnEo&r4m_ ۣg YٖhVxx\1R*?+b:>YE}%xPc&*L?-'2􅚊_@sG*'bx)zv"ϸ{#Pq.`zb?#|6="h]"yTcy4@@9:G$X9AjDTd=*PKՔ  4  PK  C:U            %   org/bouncycastle/asn1/DLFactory.classRJQ]ǱFRb|hz3	
BztKfJ>/	}@c.fky|{ 4]o2C`Ѫ욻й
Bf~W4w!V(Qj8>%Vpz)7ܮʁ44F937ݺ0xӞ7m9Reb:
3ϰ7s"BSѥBW0i,CKoʳ/Iс>'Ca0#z1!"Q	
QHY8t!E[y~TÑ"i>Bq90M(LQȴ\xmg۱-P1zy.'.0CQĽuIEnNy3FH
F$_PKHxX  e  PK  C:U            *   org/bouncycastle/asn1/DLOutputStream.classOAǿmZ
kp mb*$5]'dm)ݿW`? &xSڪT&y3>}o/} kǐ|Є~3wب{ppc rnV-(dX:;n#{&wn>?_J%$S= :A+-ڨeDACD5v/Ro;&oPtƃt$t$u:0yQF#
/
%j3`1m?a%ĥ'}aoP2AǄYW5a k\m9䧐Š=|;cERuoyTX4-Aߥ4+dE3଩4YFV)~}SW&N#~#XGXd8BQ;}`rFw$;h~hDUI:R"Fnzj%ocɯ0;PK
d    PK  C:U            &   org/bouncycastle/asn1/DLSequence.class[WU!8-W-\)TʭrS)ԦaCÄ	>O]՗>Z
(~ _ >@]{2	f2 ^pP̱KnǸvnOfs˱lHou3u/64Eu!
>WuS`0fIX6hm
ZcBg4,eTff2m:mjG֦ef.OE焖C5e$D2_ JSW(d(N/YIJeEPcz6Lkk5tUP9*\yj:obpw
,O{ykyhlF^Ζ+M:`IG3MSj9Z\kyPgf(FCp,}{Ki.n%N$V4
sAzE:e(e)!h,ED6"^3":Dtp>vpхnwӉFBgu>PE >\e^{qe^(lų5)3gmk=s
~ܜ{hypJWp|0ty
8W.@% jd(dT##
zd_Fx@d	hĐcmWY^eec<^^q	^)\+bЇ,7YaYd$#Œp	o̳|!->^*!	+XuXXnK5
0n}^W|)SM߽3s~FpWK})H=E<?`yx͜&CmM${'A	hiPnCM Gm{XwPaRnj{,85wy#";kkva
-FNy#+ïHA7|l>QK'+n}GVfNoc5;ѶꔕhWH[R|"eoнqW|˜/,Rl)bEEdǂţ9RkqH(~ZyT[鍽[QsT.TsYq'
r,}llT\}{sIdR%H7&mFggcc`o` ^"?gEnePK)#  o  PK  C:U            ,   org/bouncycastle/asn1/DLSequenceParser.classO@ǿ7
Gyq}
]'֡͘	Iq$3$Dnݥ)v
F?^kr}{ )ÄUe=@`0"Ie0%R(ِeI9_*7-٪78ee
H8Alk=VA1PDaC_Zq;0=P:"*ƛN%`Zx*NGJm;+m;IpH0L2
L0
P}x׬; "Ŭ>5Gk"/nf(Ia}<WYgY<~}(3u09MebM\Y{W}9@r,bʐ}~;2-o[D@E-
ߕ]<h>E.	ahFfOڟauKTZ2m./ Sz݁s~G])],Ij}PKXS7  '  PK  C:U            !   org/bouncycastle/asn1/DLSet.classQSW7&tRŴـ[PE*6m$v>!,t-2a_|
3ЧPK{MFhws9m KPbsXdf/#{fO]
RԪњV7qjea|>ե57L hwqo[gmqDO9Y~z>$JJTΕnUoW]?tkF䇁@Vp2S/H}(ψ¹RyWey\q]թYaxGǐwuX:8*`]6^j0g.EvMjOX =̣43vˇ;,PFJߙ^MH0#f8I&HgK1MX1jb c	dq5p,Y.LL9NarG'0IYSwWW7S,y1.f	S%uD ŧN1fv SQ-(11{.>-	N^o>
IGwQb|L}CFf@ÕSʴ2I)L
|2Toqߝa
ʞd7HP0(x(Mju#Y'?4o`nA&ZPi:0<GkcY1,Y>Q
3Q
3=*aMTKKem['gQyK܇0N+YƈjM&S}.Qgt[瘤/Wy<PKad  F  PK  C:U            '   org/bouncycastle/asn1/DLSetParser.classmo0Jz+l<2Ҕx7HA4WM%UbVCPsm;GXa+a'MG&J~V
XTk|4b(=醱rWtfm(p8	f>}reܧ&
`a8L62Ϡ4U{|}0b 'M0ʸStՑ(r	cFpѮx'=M<<F=lˣ
2"#ancc6?d
k7;Ucl!f+㪅)\pMy1[p[`e.abIr!,nх4elh[-#e"g@G#gП
<,s4SÌ>1f4;awq #jY,FJىOӄүͤ/9]w^WTQSl:/PK6  4  PK  C:U            *   org/bouncycastle/asn1/DLTaggedObject.classUrT]'D6
!^َqS\B$S'.8bnm(RxᡝaBg >޲8:[K묳>_	-XxI@6s\7PQ,q:F^@-ۭxU[Lbs[~]@m'ۏuj	j,ǭ	LRf#_l~Ӷ%O8W]yMimgGVҹϥy=^.{mSju;mt߆UbNf~
t:h܎UByϮ'RITLҺtT.z~hMQ*6Q}^x#hC|?54o6Ă
PqV✊WTbFk#T;+0m-R3P:ir$7K\KWllTz3tp*8L2hC0GM(&t3,0L#tL1uPt\@D4U87u,2ûi>`ɐӰ,
iX-
M
&5Rp.CzJV-V-[M<tЉh2$	yv 3R!ÀB`s|qDY1 r%d#FI{ڎsx>O`$~Z{ʿ@~
O4#a"O6+w5dC~4&r9
,XteKB?PTE0L܋8\
])3b]d},SNF1'R4C9sFIʆf:Đ'S2n*
>{|x%713HuuӰ;@"/`&PQ#ߥ,p)N@|}<;:W=.;5PKƺ  1  PK  C:U            0   org/bouncycastle/asn1/DLTaggedObjectParser.classT]S@=+@	Sh- "ȇ|UV`Y	
>uFaFfg6`;@-nsOn *5ps0
ga,vI(O޾(;Yd5GO*ʛ2Xt"&Y[2nb61;	'ή9X,вx԰ءg2J6mTJO.%zl*c{NZrίLJw5k|o͵:p9q!P?|F4]3C*e-p[ezióSY."3$w*AZ/^e=!uyମ/*~/5]H(IOB5QaL1Hs3%0SSj+ԭ
wa5ߪ<DJ#0\{HF57ɨEHnʨA*ܓ@[)RH
	4,Ҁ?kэHQE"Q/Hc"=i\"=BȓE+I{Oõw/xfC#) ؄MI䁞<Y<!tzN$/@~.G#:3]*[	c,8)Z +U4N?EpO!8bN G䱰:wyF߲%֊P%:ǘED_J;+TQ2KG!;4X?NѽYx ,v/PKb    PK  C:U            $   org/bouncycastle/asn1/DateUtil.classT[wUN.=dzKhK4MZBJIRi2MR'3
>|G_䁵	Lڦ<8;g}gϯ \wAu"=\pX̕Xln뺑Lcx,r\`?ܸWR5ĮѺYԣm*M+3xj%[X
aH.tf\iK [NT)DQۺd0(.k;^<szKKRIB)CojY0kEPBpbM-j0Ub*6-S^yI3wUazŉf1w(Kţ[%-ԭSABkp0Yەz9(+Sע(X3joUO)=wd8d2[]-;(iq	?[g8&91x{`+yb|4P T$?#7Y9=n	{Nœnsp5&pWDyڹJ{_iP𾊷qI)8TSBw|Prs*pY JF\ջWqnc	(
XRMJH)ƢeQ)ᆄ[
9X߱Tx)}~M0K &das*iuCavô2ɆRd]-ZM}NF_ܲC~kgo|Ozd͐#
N_8G@,ᗔN$'?W6@*D2^>6q5q朣LIS;Ec`:"IhLh97D)Qv
G8k2sLIGYRu帻6}6Vw]t5%$D3z;-<xPK\T]  E  PK  C:U            5   org/bouncycastle/asn1/DefiniteLengthInputStream.classTmSU~.IMXZַRl4T$7e7_GGw)چtwr&$ 8?s}s~; pE
UEXŀA2!;;</tV!xAmN{Ɔ7X:-غbI:L
k>[.Ե+LfRj:dgߦi3l:Y2mxMo.QK\vAUEuSmW/`H׭%pNUNQ9UP9*.UBȘ[`\iǸk$L'ZZH}ea:ȝ^jUpZ]J-k-U-i%-dմ
ܥymyEm$̻A°,KNcJ8n)!FEX<aT</ʧk_ፅNR´$zFք4jβҶpۂϹeplrNqZGZp3PQ
^RpA
^Ss\c8kH
xJFv?6;uio[t~]l]S5CCDY!a)z
4
薾黪a<j8x')I!\!Kq	R<^ƍ&R,IDSE76{U/򚑳8tBX>H:d%A#i~<YG`D=tc"CI_Cܔber׷ojW0c!K`e
iDmJ &#бCZ
M>.f1FWgYçᎺBv
',iTbQ$ID1$GXK<#ux*	<;HH+HDc84= X>ʾ#?6=տasF?!&@O=vc9xg&֠>̝2F:\W~}}Z1~.6)FMuI
 qjsbu;PK8     PK  C:U            1   org/bouncycastle/asn1/InMemoryRepresentable.classmM
@-kKAQauAUuȂ:5037x p&)Ȅ0(L6R(#pwh'ͥNpeTD6IZ{{*L՞&meG0|*U
m~=d
u0:;t: ^PK*6'      PK  C:U            7   org/bouncycastle/asn1/IndefiniteLengthInputStream.classmR]OQ=ݲe([ETlwR4QKRt@vIFϼM4wQg6m)iz9s'i< W\PRkwy>+e@PEx
pJ .EwrR i;[er8^%mLs=*o޾W+*:Ȍ]uTSLS.HwߺГܳPޥ҅Rת5].^H_:*zU\Qѧ_ Ё#Tǃ|zEG7TCQ:C:q	aWp.¹d7qMQ
aj0!a)ZW^K@ϒo;ۯe#1B=	z
B̐,Ql,#g[E~iuL	,:E5o0?#oˬ#BEa*ef2
٘K(zJ_aFXGHI0DjaS\ubBK76D|Mv}񖑬1!bg2"dtY%-k<p2?\f9&5+91=!fa%YY֥ŊK+OTx8hCTePKT~}  8  PK  C:U            7   org/bouncycastle/asn1/LazyConstructionEnumeration.classS[Oa=.,@_-ʥa-
D&%$fLMl"o>m;̙3g??~ūF2>n34/,LqX0-]>_(Ţr{j;"a%}~uWӇ(Mm~5ϭ]}}g_.CE):py=myHfg=c/ziO{?NAokS(C%݀ʠȌ<0ήc{qd:/Y)R+VsɕĿyS"n'ge*gHRiO,];UAMA{
"
:t2D2ׯ90!fg,~r̓ԥp̂7%_:?w?qRecϱ?񝼘ojh}
¨Р#@>=ЈQ	c;ބaLHE\E_
IA$$Lc&e;'Z.7>(5{Џ:IgCTq4POT0bp+	TY8A䇡	(EF%_PB_	Ida$} õ**x~z.Ai\ MMN1wbh>2%xZƓd;.*/PKEEm  z  PK  C:U            /   org/bouncycastle/asn1/LazyEncodedSequence.classV[WWAj#V	Q[/۴Z!h2~wl_|jU>'uu=3	,;ٗߟ /A4_73VV2iZ"4R>/9<t@x`z)<4N~KW8L!JhM9S%[:SX%33ъ"Ǵ9I'm&I67YR[E:zA7E\}	,91K.Xvm9]L즕˘3ɔ˚gĈVt$8gO8ւmMX+Z̰bɉĵ>'˔͑53 2l6,&%#IagA˓=H>DxH#/١ܤ9WdN
DI#Ӛ]$6
0PzYir2HǓRycQإL'1(>pbYBV(I
풞WاQCIڕ$Q:MLd^#N%$ܶyWϒflN&θF*U]Uqզr[.RelMS2蕱C2v/#,a]x ƨÏJO7U%acu13KzOZԈw	=N6ZOjhEg1)rMp#j]'ŝqj=B7dRq9K[;G-+7GïN2jG['(G*a.tA@EAENJE7dTZ0{6ʳ*6㤊-H)Q<b70&<b ICxA.b-R*`L^UiVR+Ff8 4qM9
AW+o0
U(
esf2Y9Y
&8^WȫI)zϔR{-kO-siL;G? siEŒ?ilTK80%UPEq9|_ϒg>5!k\OXBT(ly=Ս!%EoC]h-蓅 I\.n%[|x3A]l%S׋vp">jR|j*i4nkI!͞2޿;ak?4ne]0e2]dm-e|GX~}[±2>OKJ%}]%Q9}"Mחrӥ3Qnm9));qj	I*x+-12߅HT!4#K88Y2iZW+x"fSGm8$js󵅍{WPK]6k8    PK  C:U            .   org/bouncycastle/asn1/LimitedInputStream.classmPMO@}B-TA0XʡxxQ$M0,X-ğb"x0zGw	yolv>fߪss_|.K?ArD7{H]?p;|=`tFwѥ2.y[jFllY豷shCj,W"5]0JL0OH0t[>xLPF߄dMh0Oay
2(P:F {:2P2r1Iqy5@P&b9:5*N}+H
pP~	I
iM$gdU{Ǿ#IPKboM    PK  C:U            (   org/bouncycastle/asn1/OIDTokenizer.classmQJP=7IGVEThq᪷FK"MgtE[?)NPsϙɼ? XH<dl;o3m8l10*D;O"ǭK]C_p݆UZ*-m0D]q&4s^aUsvU~UhJs-Zdϫl##ca:X.ߋN|*ކl#40P
a,da"8&cH`*ڎW/K26d"zh
EApi f2E%C#f4^	#PmZ+0e,➴"ڔe+afTH}ق7b`dFCх:PKi  o  PK  C:U            &   org/bouncycastle/asn1/StreamUtil.classuRMoQ=PSZ`K*ʇ:u1B	DW)nib\醍Ѹ0qO2f*f2ss?MLnSwB%\τ٨	&3APG=-'5aiKWvϮZgSso_m[X&lj;=riR5iG
vnC-[VO:MnLmpu͂V=,L59=7BSܻW wa
b"B1O@HDLT'8Rtk%3~`coE̨OŊPp^EpQA9(X%
`iI0[VCn}f36k?vNO঴$ (6@<7$}E#؈]?DVҸ+w(y׏XƙRJGW?AspnU!HɃ,]<9ς<4#N("\w7PKf  @  PK
    D:U               org/bouncycastle/asn1/anssi/PK  C:U            4   org/bouncycastle/asn1/anssi/ANSSINamedCurves$1.classT]oD=N6]hhhfdS㯤z3"(I"U<]"	/&?oT-ݪ{=ޱO IfD|w_	>w&\ԍ$w)
#`Q7BXE!I(TPʧ̑D"a*rr&T$ԙRSw6pOJs=qǁb!*QRŒqӐhYO&UZBQ q⅊ds=F>.b.B%tpgd28\E*$̋'9+쐺
ƥ~U&3뛴HfUV0*1~qaa~HSiZ=pW٠v~|e5̩e9}}8)	==67fd~5MZ2\ַ8Q:՛(&>0&M|dc׻nbWuڌivgf5m{Vn*`%ghi}a^ifAi-L~?b}>Z}BZx	>k*n.-\jWVkY
85507A-,
p
|
1>_eGRz2>4,D,~ҍ@OWn}a_>!4*ws7)ͅXyXl,.4NpoZm|~S[{qXz=×zmYDFW[{nN"M=- PK9    PK  C:U            2   org/bouncycastle/asn1/anssi/ANSSINamedCurves.classWRV]&[J !!mJ$"4$(nqBh
Y6[L _)t֙~S}$P,=>}_̟S -CC9+q&k]:ћc[1(e
DѣMfm:CieK44^9L-(l8YU1j65Y5eT@-EU	L8nSyA\$X[EO/v/$umF[HuϢlҩYtXd yiau]U}Ĳ;GE^Z>j^59t9%[+Hsf˫ʠY,)aKFIWvٲ$[zLΤcndz4s,떥IL&ɪ&6_>@}ɜ(ʠd|&q#5"B6R_HKi9Jƙ;A/sꌥ%,1Fx	97y
y.Wy\1#cGÅ&h	@p)=$P$g'VzBCrKEՔm(Bw5"`\L¡ׄ{uFJE1w׎vkb܄#S>ON$x>(q~[='Kf?gօpөzh<<"De&Z0h`QDxD`M	p_0fDt0'<>q)AZD;bLdx< 	KLbOP}΄*
Y&rL`fcx*VDm<0'I]OCA,mز1/o>d/{%ք kiX{U^g :E{ڝ9/`ٻ'vr8r>7/=<÷{;jwC]!妰Kwak,d.	md.HU"Lqs
I0Jkde"~O9X?x<nu>zYi|eY_tRuTcW]@^_\l3uv{ˁ < :+:u2
m:)֎F*r&L7>^!^*lC/ ?PKm    PK  C:U            8   org/bouncycastle/asn1/anssi/ANSSIObjectIdentifiers.classPJ@55I֪H5"A(*
>^3\	HB? (~x >/3;3..,L	ǁakwwRI}IĽ5؍_rrBĚp	e*^żЩ`PF+29!;UQH6DLq:(N'?F:*wl<b
hJW\dImvzߤg4JPK1   i  PK
    D:U               org/bouncycastle/asn1/bc/PK  C:U            2   org/bouncycastle/asn1/bc/BCObjectIdentifiers.classtwb/l @BlZ@ ȲeH6%{{7smke{>Gϝw'˲Zӵr]kZ׵Ƹz5ֵw
\kkw
]k#ךZVkոVk\+Z!
VĵUZ1תl[v@@uж**UGa	VuuE#+U*}L~{t~{tJ_O0Quʉի?%3Vr  TVAi+llTĎ׎5wR2Φ;&V$1NCҶJdkaLK՘m
6&oN
Zd7Oc$㬨>_,Wa;6`3յ&0gfanly>=nI	u8\"MԘΤ;ӝvx;
{CHaoQE*MdN@4%2ɶz2jeKlJRDC*&\8VS#6)FN(S,jQkuҰ@qN}]ԟSҼ Zv7zDM&WmTRA-K\͂+z(W˻maO]4ݣʤ5wmTQ?([UuKqZ*בnJ'jAT&JBX,&IGkcQ5h,9!8(XZ
RM(5VاMji6hf[;w4ۑlnkñHm?
k룱zc
ց\>_Wʴ\Z&h$ۨzHAZ=i4ufK|G&Ug5Sn0̬Tք5Sg=̦d1L
:eƫJCMΜڹZ~ZU\y@\yO3)6B!b01R'FH,o_ncw[݂^}
iw?\BASt+0( y\S`sLQ!RkϚG	RXo@eQdIL'6(zTc*^/.jnx'Z;;ϔLB6ԝl?	Q~$E	Vui*^VG,ޜ&Y09SfO3iY.1X:tV/hśDKաyr#-)=pqk^0Vڛzu=3P_(CkQ#p.SSUC
v%QQ@?%
CWjeJKÜd߸9?PvyhOrkE)6)`*`%	fl0l
ۂ`0v]n`wqH <`>h @;X r :@'X`	A`p8G#Qhp8N')Tp8g9`)Xsy|p\.Kerp\׀kuzpxn[mvp{}~ x<Gcqx<πgsyx^Wkuxw{}|>֗֎Wϭ7[ ~?/W?_-` Je`0(`
JP`$XF`UXk:`]0Ƃ`6	`cP
j@- 0(1P6$)6)`*`%	fl0l
ۂ`0v;]`7;	{8$@HFM`hi0hYy:B,K`??8 C0p88	Gc8p<8N'S23tp4QF.RVSRo|q)7/+SDgn#薢[NZt43D-:Gt;чD}TѧE}^EїE}NїD_}M
ѷD}Uu7EUo2v6,zzz׺ZƽFZDAFQO1ѧD}RqEO=KѥE=_$ѓEO=[ty!z{EItg]EwEt7=D7=DtB=E7Dtb%'$z腢)&y͢IF+D]v$YAJ[DoC.[EoSnKE=Lp#D/m] *.͊^.zѢǈ+z葢G^%z>(z轢n/\ыDӢE[ۭM59̲JWpKi}[U٭Φ]}f}3^K.Vi{vW`Gh{%vz2l="^5ы={yڞ|ϾX.K&2k]W!U=gUauvemW'Dx5
&w<vm7v=hmǮ8jnϙ CTcXĚ!X3X3D
!B3˩
M<g|3s6r&yNu.'9.sB]N)alϱeJLi Li 䮄5S*ն;L[&aMYSꮋ5uƚ`MݵLȳ?3LXss
wX]Ěb?cfcfٟ`WSmc쟘s\%D|*h4X۴/VR,R^{W}A/&{3<,D֜gK$
;ǳϑ?<bMsX3XS"lKX	/cb_-k56Cٿ`M^>~.n<)$<z&v)<eXSYXsc*d4S_Wrm<ðA*LŚ3]5
g?=OYX;ob͂ef{r٣XsXsXscX3XS}۳by_bÚcMXS.FYc5UfFaƚ57IEfv5ٵ[g&`MXЍ'PKD`x  !  PK  C:U            7   org/bouncycastle/asn1/bc/EncryptedObjectStoreData.classUmOP~6
u8^AalA
u0)O]Wgq]Lv2<yz?~KHtS?!Z᱓ǭZ`t-SЫ}e2d[e%6-lwt,
d
SMMwuIRL@S++jL(yYEP7kƼ,l,	{Ťڻ3^㞴SŜ4薐JT5_ffwEЩ?#{(+iV*B"B"zE1 ⚈"LoɤYW$\o-"x[TwA4*UN6{0[O&yg-x{j܏?VU%ŝd/^RݬS%-r\ɳAta<nL/ zp'NL) qF
Y	C@0nbI-,px$a%DE	0yW"]
=9j^`bhtwG~+N%
0KOSGqX;Ĳ\H~k"
pl($JwcseMY7x!'@1,F+_W?XYUCB?2Dk	w}C@TyP>珗Oo`qo=QP>P'	)uc5ZPK    PK  C:U            6   org/bouncycastle/asn1/bc/EncryptedPrivateKeyData.classUKOQ.-PyT
U, a:v ֵK%ݸ#\N0S iι9k<`̶@	4Ce<Y
/L-YkCYs v,3bhL2ԨRCvV
E7L.mgc\\I14VG3nK3jjzqtyM׬)bjxC5WÉ\7RO(D*.oDOe:ݱfKrM<?;cCӪ2:SZ։T<]%uAxGJbHfӰm]eu4h$C.]R. uK
ܚ4\Ŧ	r8G]9y)O9?y&9, r0{{8H9+,w\PN	ը&
n<j%
|zH A&_5hnE0(
qsOD;F+cTuh*I6a~棏Fy4j	qGvf
ywy<]Lʡ7t"_
Ũq^Eg_Ù9hQsGpm{t36Bxя:1ye\ww䟨;IycM~;u4()P}vRbܮT*;vBo@G$vny.U p/q<figJPK"[*     PK  C:U            5   org/bouncycastle/asn1/bc/EncryptedSecretKeyData.classT]OA=C[E(n`5$eօ@O_D(Q;RC`x3s9{; `DHt{I؅"K/-396ZMp̬Y'/6i>mv,N䲎kήigh;sχuܬFyC{RK7&	dIz_ekY!\tdK|wAk_Jch~M-Ռ3sZiseRwz/Z#{ZM	$Kp[	$e]V>H<9_2Z@1ׂzT&FjeQS\ k ︬9Y3~#kt;y ^7{CvN
N:+7텂FWЂa`
nN4 #
$<gD4aLhcBI=fV=L#a2Dy19Oe♌!<e'CϽ9uco]?x/a.UȚ<eL5ڍ  n%5vE3_PDPGϣN<k*
Ц'7ZJogxQD
`X'ZZQh#/B7,`)/U	7QxT9
hP	=["ń)1(a`+V+PK/'    PK  C:U            ,   org/bouncycastle/asn1/bc/ExternalValue.classU]S@=)`(~"UiS PTюKK0$|g2vƏQݴTisw瞽G~R8#.,>xۆIԝ)iRFsYv5jd:Duj^R[fwweMS#@\p[w{"33ahfDLn]3؆(4eŀeg"+VTߨ,Ze͡H404;IMybjي-ST-˛[$9܃4[X'iO5p4dU.Gā*ez<Mԟ:if3c?%X<E[_}i͙Mٕ-+ⰈVGD8*☈vEqRD6!`Ѓ+K>+7yo0Te|`\jUD>@UN"BMpffs5=5+_wx&-XL"+TIVE]KM)eтSɨG?&e4w9Dd0KF9\9 8s*SbFB'&9ܐp0:Y	ݸ&Qܦ%GLܤ[hJӝӜt{qHCZm<~R2dEo	R~z3JJxqoJݩ<0JNOIGv;q=%\,sm?Rz}>Tǭ\W#V~|""eMHiM ۩|Gol*?R@ ^7ͲJ
Grzn:ÍP>h:Sy$a>6p;_sdIH%PKQ"?  f  PK  C:U            0   org/bouncycastle/asn1/bc/LinkedCertificate.classU]Se~,X@l6Z5R

fa&Kx^8Å:#?nzOt&$9s|5[@@$<\Tl,rӪ	#H:D>e<I:ZMN4.LÝ(y)\heBㄝw5[7Ly͜vixVx"5L-;36۝znəeZq-o禇lh鬱@E]@gV/$
42%ɩ#Zje^Z'-{pUM+\%6MqW	{թǻiFNvLڰ\>۲m[n3TUfDxCi"qF[":DqND)dɏRyS,ˋ:y+ɣ>,w"sZsdB;NdUUYLMX<Vȇג.=|Zogn27JyCw;Z,
;ko$fjqeQܨBfkڲ+9JycAuYь	e!bH)4bhD!0,u+	tea1\c8S&CP01MO$^$nK8$\s`Џ;0#,CJBKP !/$.M8is5}9ϟ4:J!} 6NFm1g)y!GڹFS&~rm${V-@SXRwvvw0r#ˮѠ7 ҍ`Z'Ɲh:ۃ+{ËSc}6Ű(/A~I؅G@"<CLD_KSR!jb#:ӥ
'4AQ | %#S#j"iNeF7,ي*l/e\Xnh;xA6{ޔXW(G.e'8=@*Y+AOE02EPKS^n@    PK  C:U            )   org/bouncycastle/asn1/bc/ObjectData.classV[WUBzZbX҂ZBш4Hfh2Ի?B|ג%k&upeo}>	` ?JtO8/!^c3Q]dam-o[K&)mː t;1,Gg
1mkBs(Jj&ANx@i KʄKl"o*I4id%4rl҉NѴsf$^5s--3J7p;Y'kZ)Uד7ȕ}g,kZ,YXPԒ.:ΦbKoL1-gFgOZԖ<i
ji󙑜33ogy)Vx<k
Jpy5s"inYfGPWDw,g2%=u3E5LFYm(:6_~̘D	t.pF
o
8/pA@[$M!	'Ō<)DtDKKcR:GW

;"3\VqW#e t

1HD޵HT]J*J4"w$\fb0q:U*wᆪ<8@UV^[*K3_2Z<p0V(qM)4bHi7D )Qp4 8nr8$F{aTA;c	
Z=0<`eу4Hç1x2<я1d'2.cQ
	W$*>i{] >/⸝cӬ+3;t#F7hސƍr-ɵ}Kre!9E?b@WXSyll#5rïrj
n!FÁQ?߂F%Z"$m55qA͐Ⱦ lw}wtִˉfMw C@n?
@ъD7?^M%wOxV[3MJwS 5LHt{*OFJ[yR VL> ݍ[~zDvq=ptt}	fc«.|f|KW/M+hҿn?PK+k  4  PK  C:U            1   org/bouncycastle/asn1/bc/ObjectDataSequence.classT]OP~6VC@N(*8@'`?	+RɼOx奷3Q xGx!g[m6{iy=	9<d˱T9>gh_4-]fͬ`ZY5/XzQ7gcͪ5Kok$Ͷ+2Hۚ҉#k)qIfݤ4]ܼеkjNj.D.7FyCjZ]{V4QFWR!9.fNMrCf'SUFʀO|ECsOmst}C@ I@t+"٤<93[e>ykvޜ}r{Q#&є!˩X-[kf^oFnZ.M>rq3Q*yRu8x9>_X3UUzV%Cs%hp	L>%0gS<HhGLBq5%bEAE㦈1Y:7+m:7Rʲ{%9A2X;yiW_<6AC۶ZMGrJ3>b>W>`?9{Tr6z9HxYO;y~>F,^;(wnD1'	
)W+戟cD/o#aKT%aa cx˥/hPfno6EBbPKt    PK  C:U            *   org/bouncycastle/asn1/bc/ObjectStore.class[SPBR/(^hjI
"U:X%DWQȌʋ~$Q2HkdLwogIhahd	7u2(r93Vkn0#n/%
qfy3(e)k:<-jfcBk_3,~ܴ-Vxj;sF.X4^,]kE^0bZ%SiKsLvʂHvP*h؟cԖ4ύ\uم2D`A7
WTǜ3hHP$JK8,MB@	G%p܄m35Hi";*YqY8B5
]qY:veᚚVx2CjW.J=prl
{)j(8n8>4漂&DBUazH&&̀0M02:pMi\溌3qWsSF'nL2HmD%}Z\ӟOj{EPd [
K`ه"_-a\~DR{ /=bU5a^yFWA::h*Nn f!|A
;aWMԷhU0Y,.Q/AGd;HI43loMSD.KF2կ_GhZ%Lmq/WUh#/|Vqaɭ'>upg"*U	"h	\PKW-    PK  C:U            .   org/bouncycastle/asn1/bc/ObjectStoreData.classV[SVE)4\#J-)	iLha#4MA_:}[_LL/yo4ݕeɃow~gjuw XϬ"Y16qZibf
 r= )cS%_3qY;vNrLt7'Cr%+zޝsi+KFʝpEzxnx9h=L;#EZZ4ryD@i˪kngR|mx9bZjksJqrmYS)MۃDre,RʽaFN'FzRpnSbTp6twpS`̝VOʮgB97UYK)-h0BJ,L}|iV48 u;Ѽ7v̚A+2k.Cī"E!M'DqJD4UgrTxTCzBaMXO:cW9^<ZWf_Su״4~S]iUzU~7Gz("g?{}jU|bC1ϔkBsЈ*pm#/WjP#uD55{(_d`Ua{wA(.xe"e᪌3dDPP/#hsxqk2
`saFwfn2gՄ!fxCaᮄ>Ѓ{$(HIPqc^| 2dX	%C	(Dg+w3hSksYM^R-q+<Id/O@91O-YGI^V
P]8XUmdo_lc<R"*]
0긇~PO6˧.wF<ή6xzђn)OyuDB-~'?#";xFxu/pu"D@EyMt9ȋT@'~DhPRf_o	[-xIoĈ$ghP~uF1^+F.h~ْcՒ,}wOCz-=IfUr͗/$FQea ekƼHoPK:G$>t  p  PK  C:U            8   org/bouncycastle/asn1/bc/ObjectStoreIntegrityCheck.classT_SWm\P&Qڪm"D@NvY	tsc/}3U2KP^dwsͻ	`kBЕ,(XCu=
WsO3|nQCX??fo~WpwD=nmpk3^t*)t_qKՅ'Y
}?V.xͺS6*L8FV#~M~6|n/]Xjmx.T*6+߮mqW=Nk-**<mVtp:9kyeٮn!Ъl9yNFڣWoZ3mr^981񸒕(
jZ,/VD[c<@/aA$)gg>g8pa<_P?o2$ۖמf2Q~8~M$NKL:dOѮvsS%:x}<<_8B
dTܧ:
~Z;Eq	=Q"E7\dZQ`&/%(pK0+ccw%H @FGNUB=irJMEaZ%\&	+G`!$/#&o@|L^NFn|M{
1;xJ>3e&'^=$׻|8^=0vPHct:60dt}#ט	FFXx]*cc,JURT52ƁD7AT[ď4CjvH7T
M0F, 'Z̮`4H0Hqr}:HFg;47173-J`I%iTUH=n
4@iPK1    PK  C:U            4   org/bouncycastle/asn1/bc/PbkdMacIntegrityCheck.classUkSZ]FBU|]BU	xWjy(PvFJ큑8/?qTmfާgu/_ IIv9u'_Ocwב,hުx-[eέIӵhтi	ă [){UG]	OlKf@,i˚a˥V)j(zka5Y
Jfb/W
eqḼ~4=l@(HkL2IԜ+2dcm-&.[5cޘκ)}@Pfs%ەǦ^&V
ھ{f8YQЯਂc
+8ंRpZ`h@C+%h!V$Iy|聀|F
OJˢ# N9k6-$ߙQ1ݲܶLjo;]'@&sVض6s'.!!
gp)
1
}(&5h5(HlF4`56l ln<n)qʹU1JI02DҴ|[ A ~Λ~.TyIٗ481Ӈ0bpuKu<O_M
]S/';xtԏJۏ7%z!1N_?$>
Mw(;X#)6	!l
#Y[ܦ_0ZLMv0}1K@jtQ'5\!Vǣ4/9
O]u<4PKDض0  L  PK  C:U            ,   org/bouncycastle/asn1/bc/SecretKeyData.classTmOA~=+ oE^+RhhRXCz=ABO_D(/~Gg{Js癙}0uO(
7Bm&nZϙ	׋e0tJ\tdbvLaNr%z2t~aQO:9{uċFT+Yh"[t;EnZTް4(x(<*0^vZs-=+x!$S53]n	n8=CU	z$\p]
	7%J0|'&dF	q5襀br/u'NhV9'5p~OM4.BYQJoi{ZY7Q⭆8u-3̵@w
 )BXy*Oq&ޤ~L	qWi?'DLF?fqe .c1B<12FD&SxD%;OfWk/)ІQ-zDbz$d>9Zpv<PFzХxK+
h6C4FzHgt?,"UWeV&I/55@NJF%-"t_pe\K #TuA>G*XLG5QH6RA/PKMH    PK  C:U            -   org/bouncycastle/asn1/bc/SignatureCheck.classV]WUC"ԶR&3 jFiKD#J;L@	>t-!,YvٗĿR9db}Ͻwswǿ<0HKJdyB4<:I˶"y'K狶e7g=~lh<6c:2tל z&#@6mS@Gt*K]$!]pu j'Lv<9N3fzfrIIIں[tHi<;!JǓNu,;Kql#9sNw\ן4JIz6kfܽC\%xu_6bϬƺh!1mz;	#]+;E)ԩ⒞+`.7Y]p
˵6M"Έ8+✈D""qQĻ".Q|HP_mO?ц]:"~%
6&jDI4@QF87ڔYU'VJʚ٠"c~}uWVSZyL+kv6ˉF	8e--z>TҟmAAZI@ԯ^fs'ňxOe 
CdD CHvDxdH8Ç2K21CaaaQd!!>c%%(RT|
w2,KKWbF0z{gz{O&]X?ZMG)zz8Bcni"H\Zjx
۸AK
-c}+?7LzA0(W|MsXU_#AvY	NiAT-cP[ہUpeg@&a7^aQtN*L(y*@	Y
ђ]{TrPPRt|lzzi-՟7eJD*F懈`>n߭PbaY`*=	0/zId}_8OW1Q5D?^19va/qZ`*2ѲŒbjeP
EfPK\:0  
  PK
    D:U               org/bouncycastle/asn1/cryptlib/PK  C:U            >   org/bouncycastle/asn1/cryptlib/CryptlibObjectIdentifiers.classQ]KA=㪻Veeef`Q(QH=Af+*r!Џf4	Üs~;||PBDBTH NղzjI霅R:k1=å,Iѓ&A5*U:,JdcZ'(f.Q;f]]j賒mygCƷ/bYĊ$qkB-߳Ne$&C!08cXM8R؊C6p׶gBƼך<fxN)Ƅq83Il&ĭ^	M#+ 1rsݙ PKcW  H  PK
    D:U                org/bouncycastle/asn1/cryptopro/PK  C:U            @   org/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers.classyWW+.iB%LP+I Hm$C
:tj}ӞӞs%cR$'?ED!S;=ntn紏:8tӝrS''?  '))).NQN9ust76;HHNAZ K@^9jy{Bh^Qڵb{ވb+b(`8S4t1=BλG5(iI(2ڜ+1+:d23iFdE{7WIF;*KFYZpNՌjKalr?*Z+VJ0YF7V+6meOΛFm+GMǜOY.KywXc܂WHIYm[]Z3bA75EuEW>w|c6X1ؠ4UJnfVm|9/v?2E'OR,o젿75Fg34Nѿ|זlt#/hkP)۹n`^GG)@p p00'1 	`,p8Q/h{0@X "p,  Gǀǁ''gg֓E/C(gūZ񔅵WyAy1*Ϩ<Aq*'TR9a#*GUT9O1*TW9rJeReBx+EObaS;pJWZvF?^~=^F/BKAPԯ~
$hԷ7H}	SgP.ShO
mtw-R߃(}MR?n!f@I}]kVo@wH}\\[6/B_PKL  	  PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$1.classiSP@!DTY.D,38觘R$$+02G9:Zh;sϽ>, У`"pdjrISD].U+KERX%E6$M3TVUEQ]1D].֝zĠ\ ѥԂ(
EAQeM9_ŊYbz@4E<HMzH:iY'A:R[mF3w|@uߙVzֆ
jjj[wϱ,6o[A3p곍͗9Y	\m]}	\?ߣhՒGk;mQ2>O~@$	&	Xfq]7ͶR8]YzԉN#Y:>a:5~3NmdwdO~ԥV^-A/'_해d%/x!Axhn a)H1dQȅFM!)H1L#f!F!"[_aDw׳f;n86L߷}ASN`P#,}n	"#yΑ408'vv&iLJ#)~X	:	C,S96j3IVV$JE
~PKAk    PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$2.classkoFIvC`R.ْͭpg=K%"'㸛;
@"(.vX3s3o0ʐd2&edco=dm/Lu-ڶ
[hWCt3C=\]^jAݠBtӰ<ٶָ:W5eZs-!cpێ
NW==o8BCR!ۺZ9湂n-o2m:qR
"h_:z$*40xGy$) A')yWY W@[
̈́f,gOEe/iEEvmY+w?0LM]#f@l5tٽ3{G^ȿiDݬKj%1ó($d&im	?J8''	%,ႄgWE}Kˤs(4^IKU}$oEiu̻igy
Ds8rU4dY7-.t?TILyg{~Uਂ3le~@S|]Pp
hi.YkUjZ	mҧ0q/+YMʭlAI{QQ$T\AuS#;/@Oar?a>o~[46432؁k/?Nc3@" le5Veby-7_6[;1 1ȶir?"ӦgpPKW    PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$3.classksFMR$.J sWֽi%)'㎑2Ϳj!ɔNe@̾ڳgϑ-б!C!˘Q10jg5KU][h5քm@u_:uS|&ٹyPFhar=BF`z*l5p5CU=Ky7\pl猁mZ
,ǱCsx[:?cxupN@=>eGqEsot`:ΓLE03YR&yA^RIY W[MwV,ug rt"U;q~_fy	{?hw7$z}Ma8@^΍l0?|Ib*FdiQFiIFh,K3ܗpU'>%|!K{i|j2lKq(uy?u6rStFY?-N/G^)9g$2ֻ@Ͽ}_JJ\Tp
>dm3XR0*jЩq
F%f%vPh[VM&=z).i<
m'lAL$(07P]4004;#

5|IZ<ܰظp[[I헸`Qicdw|S;o=\F@ lkɼ`;/q!
owF	C5һ42?t`PK8u    PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$4.classksFMR$.J sWֽi%)'㎑2Ϳj!ɔNe@̾ڳgϑ-б!C!˘Q10jg5KU][h5քm@u_:uS|&ٹyPFhar=BF`z*l5p5CU=Ky7\pl猁mZ
,ǱCsx[:?cxupN@=>eGqEsot`:ΓLE03YR&yA^RIY W[MwV,ug rt"U;q~_fy	{?hw7$z}Ma8@^΍l0?|Ib*FdiQFiIFh,K3ܗpU'>%|!K{i|j2lKq(uy?u6rStFY?-N/G^)9g$2ֻ@Ͽ}_JJ\Tp
>dm3XR0*jЩq
F%f%vPh[VM&=z).i<
m'lAL$(07P]4004;#

5|IZ<ܰظp[[I헸`Qicdw|S;o=\F@ lkɼ`;/q!
owF	C5һ42?t`PK    PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$5.classs4ǿn[5ISbK%ѱ͖veR
?8w젣ӝG#~
Ɗ36^ND2- q$RĉL2܀T$]G.5I)|-X2%K tr&$W^zLG2y"BJ(!1S9'4	EZ	>euYsnLрł('zq$}&BJ_R;Dq&
qyݰq9ծ)O
4ОDPbb4Ԓ!!g&ǜRfUZ$ME5F2iߎC*̰H2UǩssHeZL`*>ya{Yey1|?ʆOɴdad|[w16~Οk\PY>aR>Cʳidl~Ak'Izwxx,\!yxt;+QZlY(aBjzq$
8m09Щ?. :|['zas+9%'=Y@_}&b&M\@y&cUt7q5
U
\e6p2揤=)$g'-{,-$N)YCՖM79BdfhT 7	jx0=۰:}ֲ;pF딙,c!|x# 3'ص{Oq}ߪU9ħwf)BӃܘ#@j[f,bVPKY`M  J  PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$6.classTmFɅ@J)}%G7^PAL
}
-~NE菪:NPڣz<3_ a:,ԡQuh:0sOY#Hx<2^ĩr2ÕaЋT4J.ՖrK!qz:`GXE>5 Yz2#&B%Ku#߁׆鰼ZP.#LmZ+*5pY*IPsyA(a<$#EpBBற4"iH`y!Cؓ0N8	/=Ii3"%)'
 XK+80c6و(ڄ?V~eONOq?J$/0HJ},w^yluw,d~\){eg=nܹl#U,^]"4ekS"7xa/E%.l.i۽5x|X8M$pp+-A;p}UjSSΊaCrgnޝ2W*)DG̚
rpGke:w^/&\m©Dކ&SsmiXnXMhZux.C2UWF4`\6
ne\Ё9Ih+)f4oiQ\Ii.Afq0p8[}Z,fksr5՟}/BHl.?[^o9Xu ׷k@+ل`ڛ[Yg8tހPKke  S  PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$7.classT[D>]0
xeًNtUP(g0֐l%͟>[RGYPJ@K>I'o @
\]hpn?HZa(B}	bNE$C@?P<LH@ǡZ-Z11QkJ(m5-p)b(c-)Lx\[n*ZĜȒ@*Ķ)T2	9XJxaQL"tgT*ѣЌP:/_
#b4>,bEJ1
C.O<L5gY8~e=<;;4 -; ~iRa(u4ɃJ	ôɠ:rN*ˋaa6x<Hj2#Axow<(;Q@m:+_F?}F|<K_IuЌγJ
e6}@t^6߀a>j.yLj4U0-68(aCJwndeÍ:ݣ%gBG5eF_Zտj/z+t辌諯~ջۂ7rNЂ-x[n
gׂS҂ӰZgZІz"\~
^ 	A4&t!h%X.~'M6%:кeiIY%x(skN}~-=KN
pe}q)\ڞi{atagoC/(l<k[Hh;Xu W{kkO@PT`Dum\Yd\tހ?PKle  Q  PK  C:U            =   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$8.classU[sTE]U`U;@sDTqD)ѧb͟> %U eM4 Ω랳{~ @6i6tR^.~F&DD9O;BKB0)::ʔЙ0b/n7Kŋ Rb&$T`@,d3U.蔽BteRK"p|`HJSYmo|N{ɼ	A;`":)R'bfh)t5p䃱$oRB$hP&QRd
$`S!/MP9dIrFl%E5 ̭2GKca$-OYİ%^;KCY-BrDpiasho	#!(	*{u郶uj% ,C$buZR0Vk˱"*4J	<2bF5EG~)2>F^q"f9E	֟. Hn(#]Lg[tL!)i5**߯
8}Z˻U]'^am9Gڍlo*xp`PNͪ_N??تG[Q?7n~%xm?}iSx}z~2ڜ2e}_
L
'u9m7hv/Ղ7Zfj-xN^_n+úZƫZX|2Vomia;f9\߬g2{C+ ڣư^ݝ֯}q9P)֯ouwppRNrzҜ^+~9 8
g@t,9`8h

p9s
^q,'jafq"'( ?OfUX9О?ի'pr n{P<., H4bqu!\қix^go\Xy[~mC4:2epOPKz    PK  C:U            ;   org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.classWwUmtP@AA@Y,"mDֶB[*iNH}PTPam%_x%ii˱9}~y2ߓ <fy0ۃrx0׃y`jEN3*Yl&FDs`k*mm_&/lY3X?1`ѨƎ޺)hhI>B5k}}
ΕQCg2AѨHӃAєѓ^OT°,LBAi%ZrQM+b"VLDi4&zF#W3ջM^Ѩ:@qꌚ!T0K 칸-a	ZEVB"uc2rj-2/K"/¼"%=N"O4r#IY?qs>16
:S_7SgJ$^KNR<}
1RRfߝ7Q=m%_OA]kS0fC%ѓN.̔3}i9o	omnm\p²MoypҞI{I{Ls=MsMf*t#iݥV8߱aKx]'s[*^66?w.)"9gODi]:*IAgm-
oo3]}5*jTUN*jUlTqM*TYEzaWآj[UlSѠ*r*X8Ot(QJW4ycVv8r3m1{[ANdB^QQL>]hr8x$̋xJf8tFϭBP@dOp>'+
L.M6ζsDv=MhpI1;h
qd-k5,BTz
ՈiXc`2V3TC0Y0Y0O0O0O0O0^R
G5TaHaeIRjRiXSEHkha15,~vqw0pW	ZqaV`x!ax܀a>/^4	/ZXkS1%^`x%^ex݋6vaC<Ezq#^B3^tIG?7CᤞN+`YGoNk-[+=*P
ׄ4ő>)RJr#/.p");r"o4MR!9j'N\i^iUUMaE7u?tϔѦTm6,iUuvᆐ
LA8T]SS瞳ˑ^SHS꟠*GVs^A2n7v>y{?{ky/vGk9.Gǧt8G>OZd1PԔ'U .Is
i:Y-ja*<Ҝ͛eJ2/
cʢs2x7}{Y$dN7EifA}Y"fEˢLv\wEoxթ6޲qi6ޖ6ޱ>3l|dV)cUOleqH5	imr;)eRvJKʮPK)Lh    PK  C:U            B   org/bouncycastle/asn1/cryptopro/ECGOST3410ParamSetParameters.classURF6\d(@J/\ȀBCz	:nJ1UDddC-LcL>Tg%)3G߹w=ge C3CC|h1
c)'-zS!\ߣڽރ>)ryv))iY
ϝ`PZ,*iK{"°e)܂[bE0Cn1('eg'"[C	Ha-gY9SoFҡL:OBfr=uN8-^pƌXɺ9kuRܔSVϩny>%-"lZs3ŜwݼWqTN-gyzh+k/{~0*$=
+RЭ7(xWAk'o+ްO?Wf'ƌe_"za_/9Ҍ^^ խq:	ɼXAΑZs"yk4E.e=j$^RRͷyZ^T;A]
%IpKBIhШAØX[a@B5RDC;>g\LjhZ``ZY	sRUƢ;x"G$|BVU$$aYŰ`EºQUʷ&VusӖyϯfzH*T#9[yq@O_9	2QH0
U30NHy
#eTp;SA<Sd%d~,{J-?)!&|!]!a$22<Fz&G}3{c+0~._3RQ,(aoA
.K$d#Skl[vqZ]$ec,<2j26jx1Tr:~n>HnFr+ۑ!Y&PK?a  3	  PK  C:U            9   org/bouncycastle/asn1/cryptopro/GOST28147Parameters.classTkOQ=k鲈((")DyT6$/.Y,,D~(/~GgK+69gΝ篯 !%<^P
LK22ɾ=WZf)[ИN;a'Cq:Of
VDٔM.3IkM֣[ͭuaIb]\t23;}ɋiƢbeռX-|l	ڿ ,5}|cfNBx%fMǗ8v"5x6}kö3Hlh}!z~¶
Wo^αEX7c[ȨQ/㚌2d4ʸ!IMzg/Q	=~^!u$hQB>ꥉa8\!|t'MRz_jN/K,a/IJD|}A%izPqwU\A*H*jQƫr6*Q*B*TU8aUQ~6161澂6y6(hǰyfBA'*¸B'l&tQ
ZAOPt̻9}#ţJ 	eO^Fj%5 vx!
}G##w;D0E$$VP_h]{B7o
љ`=Lk{&-Vy~1%Ȕ>sZpvmZ˷<D[lD}<c?E]Hs7^[O[Brp)
>A
PKn)  Z  PK  C:U            =   org/bouncycastle/asn1/cryptopro/GOST3410NamedParameters.classkogx׮I\{Om_bJ$!nͥ1!8IKƘeJ|֑@*RW}яOPUͳ^ml\f?s_E$y#ȋ9ޑ9ّ:r#y#V+Zcjդћ3"V%).r}P6r!j.~6]Ւk
XJp]	ՄևlՕTL.&+񳈅}Tg6KcC4kpx|!Cޔ6ww`81z`.+OL
)L5΂.Xl"`s
GH%p4Z
DKjW0U\
dp:kpfs*m*<Zkbުx,Pb7&1FcO9s`5N^a	C
r.FA
堝ޗH6Y3Dy9&!|L(ExT2`F	}ɶB%7,VhX.A'xphGB I,x$`Urbja,NW<(GOnQ-bLU- >pVXRwT475EJ<kX%U(3- 
OUh4y .@%`PBST3S.I
/44L,1G
H	
$	rZtE%bZm'%ĩ<憜xc)҈x\ Daށ	Jn(=-TsbSFiR7!E?&@(
rjdL9iR?$g=@
xjD3$`E{& hb6UJiU+KjSg- Ya2
dk(jJkS_*mZ4"Z[@Jt0`BL<qrJrϕڳo:.U-O	ck?G jѲxSXp
&@Q)6
3+t +s[i`Iڿo
u[ڊqҤQt/d*j~z(9(LO^9}S^@ST@Mגd((61hߢt

x}f{%j?xKxF(聆6@&kQ9Iv؃#/q_Ph5W|d}iC&[Ui-_^_
.ds5hsqckŃ.n/Eqby_.W{3^zt{ܻén>]wj{
x^ݙnuҽ2l\Z[zlg>>;./zh׍{s+Lll,m</?Z>fv5;gn}_x̮M۔\_++7[|^;lzc`rx-?oT[r-hL[LKNlKޚvt?8$ya_?6輹Wg7Z~Ɵ/aC7<.}zFޟ߯fgw֤'-?Io𚜟uxCrL_N0)?_M˺d@9~=.E}u:!^Mu	@B80.qyS@~?c\NlP;74V=D~g8/_5ٖ37\:وcHrqG aZIg./`іjؑ?6Zy盞l/p4kV'rK;[ܝ}T#TCOͤ=</哽rGFǝdl$^H3ݖcYY|-.nmgh>·PK1:~,    PK  C:U            @   org/bouncycastle/asn1/cryptopro/GOST3410ParamSetParameters.classU]SF=
!Є Mcˀ6:É)!]"e:i=Ӧ/}$	6S{t޻g]ݽ LoEx"X<´ܵ˟ /3[ɮޞ0r{`$yZ
 frFB+9iv>s.A!?Z?pj-xHZ_3-k.p桄Hmt9ma$mn2{3KS/PR[µP,ǜ-Yv{zoz!%"N~l.HHo%84XѷΊΘ>]K9g[6_.i4"cS|ăhk>3Ycx-xJod阎{J/ڣC]9YRnXTd\+-}2ޕ~2eܐpc_k2%xb񵳧h+Ѱ:gN(?Oc.賖y7^F,=^zкxuE 3r!j@[)L	9&4L(zDHy<Uf<yAB&~$-H{7yLt>/Ě!hm)M\Rт&1*:0|*>RqK@>Vэ;b.LP0%ܻU3񹀙6c^@J{
XV@FEIJ0XU0/<P# "+kcR!5vasn^|y9}W:>3vXaUt:,FGȶV!{G^.џ派_=teD%ڟP?0Kx):ϑ?ZsTE"WE2W02+U"a3c]`.J4EZZskU*q0ƛ78?;BӑR!,cgI}25_(r6O;5+AUD1gX)"R'QF$zN4M2ES.c|1d'jbK?V`anFxcd&PK  )	  PK  C:U            D   org/bouncycastle/asn1/cryptopro/GOST3410PublicKeyAlgParameters.classUNQ=J|(UDlR
PmH_,.$>}%ɨ3/#1ə3gfΝ{w/ BX`.[)[f29O^5ЙR"gYu7*L	BOd2fUgWJ{ɷTNe=gzBWkm0#^<%VA5eȦqcOO$Ԝ5 u0j<-60t1G7rRZTobrT.n&-.mT99րL<[ƦB "5al9?GN{K=ֳڮfjBFNdt0g%:ɨݢ6D5xz*jPŬC,%U=9
pou[WiUOz{HVOXLMDTecMiRٝDw;[7Zp
2C$71hu7
a7\pneP.aa҅~pc)|>}!$}!:yfb&_+'kl60	%4X$YDvP
{*3xNR1_@$/qEBU0D-d{f!fC~v`W.7"~GI~G9?<YYIOL&+Ө&]dyNf%5rfxS*WOзRU?9Cawv^N[T
;|2PKv    PK  C:U            =   org/bouncycastle/asn1/cryptopro/Gost2814789EncryptedKey.classU]Se~lBڏQkCX6taM7*g]oM3%Bbyl?`^/
)ь+Jtmߺi>{dHBM<eڦwK@sBZ.G:P0lu˱
aN3r}yÛmҜ M.z=ByM-/imA(D[g,kV͗
ۛA7
<״%.U빢o8%[ѵgqhKǩv'mX
Upkn\PZAHkޒdҚFęŦ#-i9[4@攓Gv
Dr|b2yy	y<ӊ]Wۡ'>>OH9FΕ-.u[3"q^Ġ!D+L#".xO{}IRN+KEn
;X#jcw+y)f!Ə9v-ȯU]U
LދjjA,iStm*Q1#K	g1\B	!fGYȸ	>qI`0֏d[3fHGY	
K.<Td>c(>eXaR>axkJ3	ױ$acX>/'G'<Mߚ
˼!FCaϣϳً.\DjX"Be{xX/͚5Uxgx>=OqVhv]uFPUD|/q2+
9'Hx
DH_Ba:hg輠D' B_

~@j^#Y".cRch'ψ(
,LL͎՚Iz`/WD
d70d50.#0L}*lOs*YYUα_<iǳPuZ]l탉ќƤH PKy6  n	  PK  C:U            B   org/bouncycastle/asn1/cryptopro/Gost2814789KeyWrapParameters.classT]WWC&cS"ZDc,-h(*%Mא\0N&/ͷZ5a5kCSWsj	)ys_`
a'r-\'Vx._㵟WϚ]ǻQ*ΨTMBh9vݪxc/;菑>gW=.ں(zY
	JYH~)HY]N,K
+k/Vt	#vyfZ%JH8n9VѨzHU;數<dYb;čm)A?JDL=хmKŷ5:ΤK;j35,:[Nջ4|Gl=tJk.f{3Tu-2$9kn4a٭2Pў,aWb2N1,-#2ޖqR;2NqZBrH'{IH=?0JſTgnVz$"'p$jݪp
n9E'1ٵafmqӠL:3=VgzVRG{cPqTA0*d)ЯB"o/87qIY70pWTDae:$>b>Q09[9
&pᎂ:Eq`TAYK
4+бPлpJ{FqQYA-&)*Ї(wJRۦU&U
	i#z߄bLu;95=ؒ
>k,ek\B+Qs
<%`"7'#)S8uj_$gHm"M$x-ma|G8A/YӥgF0hDc5{HLmr>wV.'mmo9O1vbgObP/UvyބV`"izÐĤL PK!p
    PK  C:U            ;   org/bouncycastle/asn1/cryptopro/GostR3410KeyTransport.classU]SQ~V#?KKDLS3[atvWg/h&ŉn75MYcdiU.<Ͼ_Ϸ xosplh唜1OR&á=+qE7$%-Ww䴱hpUR(i8oș5|IW5cCҤِ5_ղ]PI%ؗw!RP3Ma[vð5$)<MGA[R6+g.Լ+b#Z83Ij^SnLEB\mf07áIW!fW2zB
iC%۸CţnwytrK0QVAzBL- "o'n<aK&aj) xѳfRNl"KIGRp_R%6
=55^D_n'k7ֻriI-ר5ܺoi]xB L-r	/[3cόx<`&(!faR=L13+>"1#` aL<mIXGҐ֥w&|Ys#o
2iES,aQ14gX=A؏O.Sg
l`ƇOx>UOA<OJ<b\uR41ZQ褑)4_-T<iXq7TfT	"^$L@	)XS".}j~ꃿPKz&^  c  PK  C:U            B   org/bouncycastle/asn1/cryptopro/GostR3410TransportParameters.classV[WU AA
ҀkKJ
ː0N&>'|$,YKM.uII<|g߾}&߿
`7?p^B?8Kw
	^yeyaM	u$tZXА0mKHhVJm莾.+b]89]2=%3%dO^Q+VBvK"᎓M3p3=?\[paUCnBQ)wRua	EuDa&BKvJl%k¡؃0m'%SS|幅$%hG&)3cؗ*BTby^L<
UIsz*%)^,M39{"h_YQ2dȱ<o*cw62st+כ
:T|sdz(bNPZ%Ⱥw}gg~ks{fcp
4A,OWwZVoXt)rWF7etxKFe#㜌2ޑA>$LU?ee&`CNNi)_4KAf~VWq3<jUDUTp5R.
cV \/HYo)U8[Fk,~VGVa$LWBjLD	5W"ƫWYuJN}Y>x*ZwQ	>oUU\5^Wq7T(c7Y{[E0L2|pcfDpô?)SyP!ư |`_)8ΰ !)㱂XT(
}%!
ݶs}==o4-Hn>*:BOo6=hGB=]ZŲ66ow!~#Ems4@!z	y$rGLm|p)Sۇ?@<]d/9尚omCM9G!ZLz!z^ѤȎĵ=dzG9tG%Oexg&^wS imrg,_D	u@AꎢԂqE4ziC7>H9X%:x3`(ؤ>`[G<LPKP*y    PK
    D:U               org/bouncycastle/asn1/edec/PK  C:U            6   org/bouncycastle/asn1/edec/EdECObjectIdentifiers.classJ@EXۤ5jzzimAQD)}DSIFTTPP(qNlu>9g@9
UE\EBEC$9gPV̙қf.ŠuW>Cl-%kTJf`q)/Zmt;wU2Cƺ%jijëFSunX0=rpW.rsF)+Q0ʰ~v巤[<Wvfә΂
$BC?&4$	0HŤ!Lit!RX$,
ǘ|7&/OT6eT)ުՐSzCRg/X#gdHۭnrѶK?QPKr    PK
    D:U               org/bouncycastle/asn1/gm/PK  C:U            .   org/bouncycastle/asn1/gm/GMNamedCurves$1.classT]oD=N6.4Ivǌ흤cJJH-OfnmvॉG!ƻʦݪW3s9ޱO UApA`\W0q#u	lJ}?$3F"!v	%Nx!D]A{,y?x$C
}7m7M<!LءMYb&P{ңg0]%3G]8xSƌ	#
jGj%\\FQ{q=%=lI΅^UƏL -ìʊRYGO^5*h7A&W~HS0ZѠ7~9*K/-afeXC뫽}`$s[[?3[z47?g%|(txbYG*>V񉂫Vl;soS#nbTmt4[T oY0_/9Wsͪy%G|ٷ0;]TMμ}Cq{a>MW`x.b%lּv
q
ZcU:skju(hс/&yo8*˪<
>L2+aKmQYDruYΊ6NАAsMRt
lHk.Ho.Jjn-=GfX^j <oS&nM:P*p{TNڝ3ܑ|19 >&1)#+MvwpPKD̮    PK  C:U            .   org/bouncycastle/asn1/gm/GMNamedCurves$2.classTnE=8]wkh14u/&%efvJR$_[g9kx+DTx(]'+͙w=ޙo0aqCOOzccqXbOzBU=΂c̑̉=!D,Ўp{wHubb I-crp:Q!isKebpܡX)C0s_s7Jt B% aTG_2HP8,b*t/H{M9PiJ'h[2}XH~0`~6ceéK"KLǙ+gifeVL0J5~qa^Ygj8{8-{y
*q1tR2;_ShGlхݚM)z̻Ѵ
e}[DiU'oS5&>4񑉏
\k:mۤ9;"vkm}nWV,9Wsͪ폇yI?#>SNVV/1xaqwYU	n6pzlVN][
,`W,@OPM￬h<g{yjN&dniPa0 iK'uJ}:QthH\ oj)­h=tkKSlrĭs.LUcw9nu)_`Qy/i<gPS1&yV;u|
o_PKga"    PK  C:U            ,   org/bouncycastle/asn1/gm/GMNamedCurves.classVmSW~
aak)%$%AZMDIv,q1ٍwdL:Mda:͇{s揿~0~a0YH-MsjA7t󅰢m

mn[7	t˖Rld#z.[KYUyH9M5sڌc*[rڂnTX!5!`I׈LZVDkY
kd"z7"m=/&]2۹Xthq{	/*K\P|m~QSyyݣܗSz>c8Z^teG/ȓ}Q~wo/fr$DM+/ϛeC]Q)hbqtQ-m
&)+0u{D_0ј|{l"u2'Bpbw׽#Mgk8nüA{lٛRg.&J3#KT̚˚ecE$⸈E8!U"N8%ODDDCـ!JR#O
;ԗ4G=7%+ҿ%	\,MbtW#bEjɕMݡKz Td=;57ZڣmJj\s?MDw i$DPfr% ڿR:Eـis>KK{L;u	Kfxa%A14JhEJHKe>pW$qULJx
	xSQd%ĴC.oI07q7n12aی0	#{af4c1<y!pAgXd(0aQqF
|砆qZ4}]oL0RPl3>RJ7+9D#")5(]%vv\@hwVQs)h$*pxɹhl>ǗSkj_<TIkV]
$%9dݫ(ϮE=
ڌLC6AZfcC~H1N@(ON#N\7'MdS{
_ji}#˕i(˕0Of'Im~]\pwo3=c
>ӥ "% V9ryǕtP\&O+=_nFgxQ>kIZ~RU2Ѱ
g:>Va!4w>ֿPKҹ    PK  C:U            2   org/bouncycastle/asn1/gm/GMObjectIdentifiers.classw|SUϣ@X(ˢ"Ķy/IA(LŽjh0	^{O^{=$G}}ݤYDvgڎiL;0Mf´#T1Mg4ilvaô+nL=dڋio}eڏiz"LQ&)1ej`jd3cĔ`J2L2eL9L10t0!L2t8LGZT2bY>*|v/uզX1mMG/i븭㶎fP~Gw~G)YkQi^j☭ͅt4E4CayZ~aPX'	`-rN~K%[ӑQ~!]H'%~V@i_GJmyOsJ-H4If1q	sŊxHxhSܝXw^da)l9F2
5ԂF&&Mj&Ι˷Ly\|nX4D͔f	_uͬF3CQHi9iIk;xn*1/6;$sZ-ٴb.5G"=;[`ѿ`"fՠL"W6@1ߔmۿܷ'31:TCUjsc<ӔN,ꍱEnEQ{Oދ7$-yٺi[kWͯK5YW-,G̭o*bPZP"Æy`~~raަ60HCY"Ϻ.?/~@nB:a]tܤ8*T\&)TWIJs&OӑXE,ڲsy9䟼p*$sѾ
5G/l/tB)hQ1
1+lN.O6	]ϥXzNNNNNN K3ssKKˀˁ++kk[[ۀ@+X V{}C#cT9CO'Y9yE%eU5u
M-m]=}C#cS3sK+k[;{G'gW7wO/o	0n@	Jze@oT/py=-sͯԉTwj
/]f4o<M$5O<YTG4|T!5\yj;5WhޥRnkޫy=7i^y%gh>XsEjyjy晚giy2Vͥ7jyUh^y浚Wjޠy+2v#u{j٫
k2k\5d2+.Z!
hZ*>E@{VADA{
]Ot:Btgh_љ~3Ew/:Z%#tv
D'B7Ht{PЍE'@N
,th tkёjQZPh.֐JKt0
nLtá[n
Rt3͡#EAGn	Jt#pѡME7lPGt[_t,4 :
Zz%u4$Z

BcDkcE}mECǋn :z)߿PK!IX~    PK
    D:U               org/bouncycastle/asn1/gnu/PK  C:U            4   org/bouncycastle/asn1/gnu/GNUObjectIdentifiers.classRPOd ;ؚ6e YP0Ji+ >=;0|ǹ'7ϯ@2`?280#288N2hdĠ)-N3028@fciFIJ=٣?YtpJPPIPT~w^εįjȵ$Yw?Ϛ{+KJJ]*yv٥8|J{p|j8αq~`ݱavB
IU"N?%`9W[d_R+Cʠ]leʶ9u/К5*z
)2s9[[mq^Ld"eez2iFLXk:?s݌Y뼐2X4oR3̔a)+OezLKIݫMNȿG|kƂ87'̌߬Z0t.8vq[ږa&sߩ?
3nhC#:.D7ыC#BE C0b1E!$" p.4".!.# "!bC:b@,"bD LD
Q
S`!*TSqX(i@:EFDN9*rDn}"{D9(rXVm"DSuŖo05[݄_ד!o _'/ I^Hy1mr=rF~>.%K$L&H^N	nOɫmjy
'ب>ûMXPK	{<<    PK
    D:U               org/bouncycastle/asn1/iana/PK  C:U            6   org/bouncycastle/asn1/iana/IANAObjectIdentifiers.classkOAߑKX\A)]ʥ Rltv!,&?xvA}v23[
Daঁ6:b"!Jg8JRS-KVI_h^B.}JNoؾ']P |<޹@>؞rlח%:БVvNhe˧׳kmυ5fIoiX/Ф*Uۢ-UU;-y\鄶#y*͒t+HU(:4Q~ĵ-YK)nLru+z4ө\U:rΨSjS>q{mJWU=J+v5!d\eܻ{-.k]j=^F1da1#Q#gL0:aFpSa<D1͘a2I<cXb<a,32VLcjn4vI÷	rTgn1]:Gt9sH>:uIBzL^Ԑؽsֆ@Y`m
t9<k(5V#ЭzB>aW@5drZ7Y=`CCpPKkf  w  PK
    D:U               org/bouncycastle/asn1/isara/PK  C:U            8   org/bouncycastle/asn1/isara/IsaraObjectIdentifiers.classPJ@=$mӋZB+MjćA|*}(|*$-(Y⃠QnQpΜs@A?۳+<]mS1c.x~B?IGu4U뜠b7LDb
}O҈.k,㐲Ltv~X&A(r~Ô`g,etL$8A?Zw\D܄UQUC$5";
y,R#2˳ACY]YIzFC{@ू2PKS    PK
    D:U               org/bouncycastle/asn1/iso/PK  C:U            7   org/bouncycastle/asn1/iso/ISOIECObjectIdentifiers.classKo@4%WgZyTbH*{cGc"@B*Pw3/ 4(qq9r\Xΐm0m2l˶sڷFèfh*6a"j1}/Ȟ3tc/d4t(Haʰ(9RxN8K1`([UwTrUǞ2Z8s߻fƁy?a;Os,M7m;Ld/_nYbv}wշ(~FIp[f9tjGoˤgtKW2aJ

/cGaMxL!<)ad=L~u긚RMucS]VuPAQ3u ^i}F	+wkvlAYS74*9]j[PK[  7  PK
    D:U               org/bouncycastle/asn1/kisa/PK  C:U            6   org/bouncycastle/asn1/kisa/KISAObjectIdentifiers.classRaO@~V`9QPp3a?4:m]V?D ?ޱd<s=^ &24
0s"׷t:
S:o0n]ℹ#tΰ,vͺL:5RD(w|N>C0
Ǎ"i:?nĐ%<lSkܰc|l_^j0q7aga"`P+bв1A>VG,B1>JՓWPy䐗 ᡄ9,ϢV$<*iKx0A. fP*2Fqi+/j!9asa6)_(͔PzZug^"p
PKЂ    PK
    D:U                org/bouncycastle/asn1/microsoft/PK  C:U            @   org/bouncycastle/asn1/microsoft/MicrosoftObjectIdentifiers.classNAXn
V
Svڂ"L@?MYvمc)& <av)j M;sove9#6n۸c㮍QLy0ʝpaVsZթqɪmm5*PCv:Zء8/9^̐;Rp{V+OɈ07E[HUPxW|61S#-)nw|iiytsCPf1]gOD/]]Wx'X+\xP}Iߍ,ܷC\a(7>NU]cO(LLLHIa6rxy$H ),`$/ʹ4=e&Le
^J$ԧS/>z1q3p3a>"zbC}Gn}C.a&Ap8a6ANh%X%J՗(. PKwĿ  ?  PK
    D:U               org/bouncycastle/asn1/misc/PK  C:U            3   org/bouncycastle/asn1/misc/CAST5CBCParameters.classNQi0P<p*PiE-U%$
WtRT]"C^D(/|(3htg>d3	pG;n
D[I2No'od+ɳg>67--Z+Keˠ\4X{yLt*So8Vto:K0~ә6RHtsHJQ.,@תdZ՚V鴥vؤ劀Pg6c1h3ҙq
wAVQhg.gN-_QuNJMU]M%rdj]h{3*5fDpg2s'Ⲉ+"E\qMu7Dso&P-ݺ.phmL SgBb&"\/[_gdלdw}M-iVQuT,mH;{\%Lȸdqn' 2$([ILm%aq{FpWB3FGp_8%=+rn 4}wU{a OndB@~C
&yOXu"RRUa^&c4m u	߀4JBnpЖGx!yp[F)sϽG,!M[9{C}-#$߷AjSG{x91Ghb<k TOPK)    PK  C:U            +   org/bouncycastle/asn1/misc/IDEACBCPar.classTOP6(t!{tRQPn%5Kq]H?7_1QF\b&lswsݾ~ra5:CDMmdˋ]Sxq޹_"Y*w6
ָZv{e[<61]W-ގkYfWlݬzdvŵY)ث2$ZcSm "mW0W_ؾWƕl	;jk۩Yz~y%L*q/w*zZ5ebJתζÝ][BLB%\0 ᒄӫjҰۀOCwf\`~Niņ@t\PW]SnYn.i0PЋ+`
$ ,Va:tS	]*& nđ1FZ&MadaF8nq[F:]WkSh2; 
QtqoХ!#@blgȒPM1ZS1M8#?ձ50VLQ>b=69'IN~-t F(i` eB?!	qʧt/[3?W#	&t?-13Nt40Tqg5
u,qt}àDOPKݑ\  D  PK  C:U            6   org/bouncycastle/asn1/misc/MiscObjectIdentifiers.class{U 4EPlٞ, ` Rev2l΄M 4޻((
{.b/xw	<ɓ{;޹= %hsyU
	



	
T-\A#t] hAbF#h4^A	4Q$A&XAqASMӨli~i~dG@!"\=%ѐF~oH~j6٥w@U  SߣѪh P%FUH/PQb),?ir!fըMuv5)䂑sIcaQ
:yBhU'ۯd8OQ=x> vagrcO,&Fpn(>:ELMveQt#e[5<RIMm4z:L=V3iEе @8jVF\oF9yN5f4td1L;[nc;ǘ1&vQnڹl/fֵ{iC48&j1LZ9ST8?+9:
\_@J[:D٦`Yr6MlG30hqw9=zeZS!K6s7˙=Z)u򰊕X1<)hivҖvXbN&#[zhujKSL\Œ񺸙m5lvZtX"m5\J
sʤbmxefʚ$7
Z-33kTN8_ȭX/OZ\N%"	.ĖC޶vrtNj$xו;h`qގW`|V2pLtW\V'LZ|I"rrr\u8F
k[
4/FZwtU7	fs@@0)@2
8@39h6`	X,V +Uj`
X.ѥtMn nnnnnnn   6y`"ܕ6V`sΚ,_!Nq(9[T.U٪rE*\r*׫\r5*ת\r9*竜rʄʤy*uʙ*UZ*lRVQitTR9[eVeJeʅMe)/P60wiGLloYbz
!B~`z׼F?^c{NO3X+t0Xcn\y9oCb}g3a
{wyک`Wvy:	:
hַEn=O==.{2Y?!t GГY?dkurYps){6PKJp  N  PK  C:U            1   org/bouncycastle/asn1/misc/NetscapeCertType.classS[OA=C[,-7Azᢰ-"&HEih'bmOM(+&s9sfϯ̢GB b
Zk@wZ۹:z^P:(ɪʫ<CjUyetH@,\M^Ꮈ-YWݻ@9vQ5ZQ\2$]UEHFc^$]Q{1ChN'0rkeE4qi
J"Йj*PE%{IF#bAPƱ*O7"skM^8f-Q8C{=.l$+~Y>ًtZe-LY'8?eDK&"	t Z8km	v7`'Č4Ld0!kbwCSpۼ_r'hi%Z>MSQ&$Wv<"~=ǉE| oS!>B/ćD+R!HfR'XrǶs:-l]0Nmdb[W|]Gz:5Z:_溟!7d^qc'8<eu,|n,_PKTbtc  R  PK  C:U            6   org/bouncycastle/asn1/misc/NetscapeRevocationURL.classN@ R_MJ1&0!, ˤSBJ7%ӂ.Ź7߹scsA8'0L66o;ӲDhx 0;#jy;֤t1tTc=Cn?4hVۮ4O~ut=m%Kĭ@QSWj
ݜF[1?^I-fJ44ҐŒHX0JFb	2~aO&D'(Jݕ.A1_cDwLJlwhcIZBl|PK5=  $  PK  C:U            -   org/bouncycastle/asn1/misc/ScryptParams.classUWU$lR(`)Bi%"-X
J(j
-TlĪfY6,4`A>7_I8r?^࿤Gl Hȁc{g曙;sf_ k?^	.C1^,1^ye6ck*o}-2	
L(lVhӴdfՄQ@XR3y{^)kHfigH:h&Uۊje1YR6-5՞)!KyhQLS3M62VUP	$?@k]1To^{\(<wWDL#q
+dN/i=Dղ^@>)aK3˚bDblMgu~)LN,e
*y"JL&
O[j&,!{{;&J
\4/Jڤ:D5PfHBmdA}Y
32)d9޼s޼3w-vkmog*Gy>E\-⢈EqID"xIĀzf =xXO^!;PYv8QWN[mgrcLSECǢ'q;12NNZMj~;~NY8;zB"K"G^{66 !f	qS 	x$w>F	-%\$¸.LHk{]B;&%H80ͼ7$Ûo10ӄ(f2cc`>ûI%00|5>R c	5W6#T 7N 0@9>bxʤKu}>b\o*ڵrݵY!P]~/IG#rd/2{>c&!\>^3W
W\ºXncE܆.wy|0Mtw\xhȿ#onѲhR'%<_zi2Z(!]:Z"6g]%wI`
EdX_UZ	aO;xR^GS("}U.Ĵ{aJm@UnCQ&⡗L5]?aN6.cb>[ӬW5銹٨ø횟Nb8/lx7|>-"G5WJD.9Z+Zh2\g7MSEzfPKc  
  PK  C:U            6   org/bouncycastle/asn1/misc/VerisignCzagExtension.classN@ƿP+*R(1D/bL9x\Y[>^JC#=o27;;RI%Hqsbh>S3qG$BC&,raK>Ps@mNJ#>KPv\9#S0zf6:׵ɏ?l{q	23q+Pdd;q@7fVWDa\t;u
I$4a>$5aEB(X"Ec1$$ y2e1[=5k)R,@y``G /PK$*<  $  PK
    D:U               org/bouncycastle/asn1/mozilla/PK  C:U            9   org/bouncycastle/asn1/mozilla/PublicKeyAndChallenge.classT]O`~^6(+	'M!e)`H1PuD' L#e<o7;y{ssߟ L#c:MtBGͲ`0HYL:EO2vlݨ^6
I;TnYl(nhL?傚+Vm}W*eZNZQuB!HT5}@+o<dӲ4|6U.4zcVJ[&yestC(K$[5aK60w>0߶)Onj;jivA=g?}WK3ݬz1,θ
靯5\By)xc5B%Vzeǝb/\!S+BB %\	=+
LB'qЁnF!
7fJD"nbQE#zyzCeT6t1YGӷ^i|0H>"",o3@Я"NњcD7#<=|lmRjT
.0bFcZ0{gH)?G;@#NޮtaI8ubx<<(n~"WNcD6 К@/6*Ad PK_  k  PK  C:U            ?   org/bouncycastle/asn1/mozilla/SignedPublicKeyAndChallenge.classT]OA=j
JHOTv]]lD'M2im;ss9c?_X
C4}HB>frYk6ێ-azsWֶ9K@B%\֫κ
Bn2LU*u>yMzkU("dIV2Z0!%]iV|ǭVY-u_[c(V_©2h{;ܦ{?=T7U+w4hԠk`h3L*r 7vIp`dݠ|;[&<}٫ŅPf؛)YZ\=V.=P{Z]6^@1t.ᚁF
DpCn2L(39cYIqʘ:bFhF3ւ
}J-$&a,[R@g?)K(݀1'R1`@aBRoc,au$CH*VHBs!f͙cO@{7a:U>3fpnwNQ5?:
Ŏ5,qZ(PKO  $  PK
    D:U               org/bouncycastle/asn1/nist/PK  C:U            8   org/bouncycastle/asn1/nist/KMACwithSHAKE128_params.classTMWe~&&ChQր$ ERH	%F8cf0ySt?pƅɣ;3@kY<{_ .KF%4D+|dXjdV&[|4F<Oƍe[e2}s5Zg򫹥ܔ0?ئNRΦPcDɲ
Hh!E.6LO_k")$4dS%"*"k!ղŲ^A==^B<S,,*-
sJ:B|ͩC/p<Nۆe
$,	p
߉y96ѤIhFVYgfo-NΤGVIc}ɨ"b<Y*H:/GfP2uabC#JP6-a3#WEd!#,OFἽ)`ꩈuTToq\IY`	i>?_]KJ1g|nzIK>IP&ΩhEPqAhP!|Qqox,p]y1~30
L)"ɐQCI+"0>bfS08n)jaF0nҾu֔~9_[KD#}ҭ*bPtV"]	
.'@gVçZSk?a)n1ɧ^"bRbLIQbJl=6BD[Cymwjw7P?5G8mb1Z;w_a@|T1gkpϪ{=A
rϠmf^OpMk	}_w /N4K1$PU߫NFKKoSwh^܌:rYvD|XZjXb}mZ_=jX=ly3_FVBqeHnx9[g,xPKW
  9  PK  C:U            8   org/bouncycastle/asn1/nist/KMACwithSHAKE256_params.classT[WU&&ChQր$ ҋ!.%F8cf09m<ه҄e\h_|7Խgh- 9ow~0B(!f\\.a)Yo&>3m6_lzvrqJ_̯2$
`àFc:JY8#]X%.H*"u,t0=ini̒!LQجiĺVKzbxQLhbTlH?0M*!
Ub
,f\/dnv8mΚZ4(Sw47c`'|4ǫC¥c(\^'o*۠&/:"u9c[eIzn*9zmeS/4W**ƓԪ҈z~pzd%Sf),u;<Bȯ4Zp%k}3 M2zd8/れdep.=Wv9B۞=L=-k09.R<7-K+q\I)F┖/Y8~Naz%T3*ZѦ
T\bhAPE'Tt1@fhG3FTû*^(W81ߌ!1|pSA
H2dha! ƊH1(f" 
gV0[)g5<ErN3"/"Ftst놊3gPtV"]	
'@gVçZ3i?a1ɧ^ bP/`uLIQbJl=BD[Cymwkзm7P?5K8-b	Z;~w_c@|T1gkpϪ{=E
rϡmf^OqEk|OA^h) cH"i%딿WK;܍F7W!Rߡh>\wi^܌:rYvD|XZjXb}nZ_=jX9hy3_FVBqeHnx9[g{PK%  9  PK  C:U            0   org/bouncycastle/asn1/nist/NISTNamedCurves.classUkSe~Kw	[- Vk[/mHi )
MhhiUdIML6TzwgǯPFg?sv_"q̇9{{ޓ;nE
Z<ࠂ6V𐂇Q
)8.~I2ao@Ý.C]{]>pL8*tQ
]TB79
uq}HטȚf^>gz_ԩ۔nIh .Mh_cM+y	~#ӣ@%@F3Sy=amrŭa$8edZấf(_]Z/QzSΏ%elh&J	`eV0DЭ1M˘3b(X47t@=D6IO*p/po$2)(;f|#$R\oZѦ¦mmښMn[
v>$lβ첞5.i{첟9fVetqJFHFna=2D:b{_zc[WC
F₞,#kR̉J1][l
Ao5]Bf1T!EU}_*ضL{QkOvkOۦ4UEg1<000a80438Q\RqYy'
/^VeH4`
Ia!p`gH3dL,CP PdXdxCn0<M<UzDI~--r'㤽@j{ 	驉X"ç??
Y|}hq_W36>6\q5!uL
:i'TQdxO]ň
Vϗm.I5nHIk!"x<kn_1v\BV Qt]Ì8DVŊ]-;ؕ{*[K6:3̒=6>anbf*{yw3m6bVmLgy]PKk,  V
  PK  C:U            6   org/bouncycastle/asn1/nist/NISTObjectIdentifiers.classgXTGAA+.vY1"ĺ.

{K1&L'&wQ3sg.ʑ8KQ^z+H+r(r*PR(KQ_Eي):[QEhs
Rh\EC
U4LpE#TtQF+hqE&L2pH؜@2,/
ӳDg#+5ەHu;R3R1ÉXʉX`)'rb)'rb)= &0ɅI.a\$&龡ۆi-E
Bz"Bw?\yؖU]{L&ސ*rJQs<9:p:]^:Nww\{;^lRɱ/8XT=gfo=59BmjtmۖmBmۖnضkaۖ~smqmזmnu[\[u[m:0KcPZ7߭zڸu|m ?E5UPty:]^C~by7pW8ܙqAx&4?x8/X`Mq+Hq\Z[)Er/%Ke~Pzi}ް~D
o>zPԗ	i9yc攑@?^`,6vdބ3W_t_/h(.K
3?A-G#/
?Aұ4	D`0LӁL
<@>
 0( ?P   \ 00 *`!X,ˀ
`%
X
`#	lۀ`'
\.+c)jZ:zF&fV6vN.n`PT }A  pxxxxxxxxx
xx8<<< 
	
| |||||ڈg5-+E}q%g-	sɭ$In(Ir$I.\!Rrn)S%KΔ&鑜!/閜.镜%Y(Y Y,9[DH'Y*,#,KΕHΓJ 9QrdJ$J.\,Dr*Ւk$r?H|J&Cq"u"S*#91vѻWDjrhmڕkWhw=Y;B#X;A#YA6dMF6F6*F=@_C~chj[(~1{(N@#IAI?AY&
m74wh3֓B[m_6|Hh[Vcgv`vdm j@;*hֆxgO>H6b4}5ܗPo+yAAj^XyAi5/H<Լ 	P4%Լ i
5/H>PK<   Q  PK
    D:U               org/bouncycastle/asn1/nsri/PK  C:U            6   org/bouncycastle/asn1/nsri/NSRIObjectIdentifiers.classwU^ ,VQSd2-V--4P([LNNb/Hq_˟_>9=';r}9]hfEK-StV(jQVQUd+)r*jSRQEW*Tԥ*E]h5QVѵSt,k^:`ѯE-vؑHihV4DЪqf7-,%Z<2h:tp]v9
h}f]_^eQ}׿,7dQO%\6_CMQ=%«]IZukffSW#悑yJK|v(Q0gGc̮sv])5nm3gzv.gQ0fGQ={`b
EMZE9O4*+JiעEιA6ܗN{efoѲ|1Noʹt-xo;~O9b<)Qj[HS翟i3E?v[`LX}z`ā&` l6`;	$]$Hi d! 
@!nCt;pp'p  ^ ^^^^^^^ ޚK6Lͧj»քgArT2/Hn\/]r䠤+M2+LI$3}[%Ӓ$wIHK\'EғK%7J&$9WHS_LS<0Mネu)Y)?IECX;I:.]g^!B/~uz	l/~g6~U?C~4:z3"֯mdz!C= L֣&Og\O~=ǃ PKp,Y  r	  PK
    D:U               org/bouncycastle/asn1/ntt/PK  C:U            4   org/bouncycastle/asn1/ntt/NTTObjectIdentifiers.classmKPMiV>Vmn3I zЄ^ɜK&k
 }ޫI8w}}X '/`N@@<+eQՂ"*lVż,neNStS:U)t˴MSBl5tΰ,Sӆ	"#çv?-(t8UNQ6DQ,nKW͎;n-5k}2$oy""-v[öHZm4bɋe/V2S$%˿Zuz.@IIII"}XM&[L0#=EexJ{)Y+CC=Ɲ~],K=C.?	7bC.)ng9'9{8_x~ PK*7s    PK
    D:U               org/bouncycastle/asn1/ocsp/PK  C:U            2   org/bouncycastle/asn1/ocsp/BasicOCSPResponse.classVmSU~.IdKk!-]JZM 5DUgYVKG'~!8K?:s6!PM9{i|'I\,o;#ҮY
,.}x͖sk̻4]njےY)Vrj)d<f7j^ݑ?<Պb4Ƽz-S\冝1}w*--M-W5+ùb)%-;~$jjvVr,ɺBIr^L8ޙYf&gU+-h<љəL{DJ{ǦN;L3;-)O4)=>Б#[)+H*xCi
(8`PW
l806B{L;
;rI{RoԞzgDOqo&pMw+='*y+0Fqg;z(nGfftk擛b#NPLOAwNZ͟rΓbv5cD[pi
ocL9
Q1D4$k`uä8n0d0@
0UqY9K!1'*b*y|ĐWq=U}$MEss?䓢rZqI=LboHz+%}|Es~ojSAt bu_
9\@.JqF7w{Xk0	/OAJC*xoq~Ĕ-4$H^F7'HmOGbJ9z+i!fO{Ls|-}
7Ųr*v9bK.d8kcW!aF PK0x  =
  PK  C:U            '   org/bouncycastle/asn1/ocsp/CertID.classURP]Bh	TT."m
Tn0[h%XRl#3rq?q4TI3]䜵Ygg'7 CXPK*'tC7'iVK&%ԥ9bT&[;i*nLH<!8`Բ#s-f̔৫UյΦJ*ݤF/լeffH$-gDbsF"6bːx37n"ڜ9y\(	Ndfu#%Ù*	nf^_$r5.|O
|P%WRxacnBF:2nɸ-㎌	Wq\BBtN)AQ⍷"r]o&++O-Bjtrbctthpq["iHE?f7gkZ*%k*e.KXq)''_9l
ZWpm
+aFrHe
TCb)D!E |hQ1}03LЊ12<K$mXjjwK?h'F3}<'{ybG:5C?]=B*(6'SGV{S{U<Glp>Oȩa
8+qSQKHj)OpXڔ!6ŀR8Tz'xy(qU2O
B=EVP`:*t_+,˗.G>*޿S{˓vи!`f1.11fǨ(u#|x^PK    PK  C:U            +   org/bouncycastle/asn1/ocsp/CertStatus.classmSUKH7lMm-&H5*ԧ,ۯ~g_PT}?zB!h2{ٳ{ιMK WA$	d
X%f(d\1WpfYw`wL^	j5TrY Fji\JwEAZ{)|$h6eV-
4_-MS/[
̞ͫW&	u؇7Dr]u	^ͮ҉'&kgYÙΕӹ\K\wش>q$,
6~40_@]8lԲ9^o7K7u^)8kԺ[~ڰIׯf0JFrkn&\Őa'U8uU⌊*FU#,t/VƴVm~S.\P3"N&SYGX#TU>o_Bd/Rz5+ýShRH'{J:=ӿ;uT}7;}[U`nvFoB{.'}qt\:TL##A񎎄a\}qMju 9bFG(.#EsR&>p
ID$iHIy)hH㮆)|)k39B%ǩ*]V+ˡ)ct$w5Jv:
ݍ]uƗF9J/X|3ȏDo{D:P68 K?P%n[c?IfX,]t]1ҡ<$??⺧>a]L.oa<Tyr#C]Ȩ0XlCm{	7fSDߑ"x.2tOٳh
{>*]_`u+)M_@*S	s5{r.C҅_PK  	  PK  C:U            &   org/bouncycastle/asn1/ocsp/CrlID.classVmSW~D6l Bx	hU!ڴ m\c`ٍ
}q_fNKb?ԞZHa8{9y=_+9rޑ/d}Z*EK-+IKW$ȤeVkc(WweRzl?-cF֌pn-.sfm+c%HqSB=-7mZ"a0쒶tHb.Қ>n쌮%EΘKz=SxvFE
47o5~Jͼ|r.BZgᨑ4Sڢ.U{Sy$Rnmkc@[9TڐYq?/&Q"헟@;;w\6Dw*6I63Vf%cgVge|`tZZ(˝2d.㤌7e%C)eA.getK:pg(:j]vP;dk>}4{\!m?'$Pg``!v`xݡs萇iP_]GVTz+d`e4zkr1N|#<!̫!ޝ[QV;u1wEV["!Bw7Pp^T4㈊xTQoࢊ\RâYPWTǻ*d\e{,cxE,>l48[
 >b1"KA̲T R0;,4CXT0!,H*0>Q0g
G?nψ	3/IDR};4ZryZܢb[ă#\Ҏp]'U2i$|C__`@H:,RP\st_{C'nAl
9JKHqE*`9X* SDύ?LL#y:GFDFH2F~8	T9*t)">Cs	D	"nJUr/ݏf_
Jn?O^wm7RB8LO;|>xZ2u[0َӓrf٭bb݊	Sۘ,W܅")ZJ8zxUZ+L_{yUvg^hb;I*<vPKUZ1l  
  PK  C:U            6   org/bouncycastle/asn1/ocsp/OCSPObjectIdentifiers.classO@ƟsȎ9'&L,1񧦻ݶ]2g"%D (Y56<=msW e<R\BqbE:,A gh%ZE;Z3Rr\N+q59! 5sl&L۷\'s8OMC?峾=&;	nW|Xo
lF0b?
#oEnc}㫻|,kvϴ^@0y0܀pd3n:B[#Kw,9	6<eV:\Z/Cw][ɃfQr|F4q`w7,.۫g,氞E^b^  ($,"*qY))@B%$mDYXN4$"'CT"ܜCRHW"]4jˑ.(7pISz^'<9CM?T>ו?R>T>yfmWPKE	  q  PK  C:U            ,   org/bouncycastle/asn1/ocsp/OCSPRequest.classUmOP~ʆR
C@^ *:D^`lRY!7L-Q/]Ftɞ{ssN۟}0. ڄa$jɤn̴	0ll	{³m۰Lm+jL!R#-6ҫ]=M&"g֮H`:42o&QkG@3E@3%6I1-ғ'j=WO9gZv 2].e,qqL$N.e_vyxgƞ.A,Qu7D4)10Xxj
uLԪܰ<\nJK<T>iy!3WڞTJKD*y/ozW0sa7tR-вU'jʢȐ-=2Z p%CDZiC?àkPCè6<bx"cn!c Ä<ЉqN<cx.f$xm9CcTCBt:ѣf11cK@
ߢH\ 
D^D|k?Yiw9,%
Ԉt#pJ[v:p&)CEhR	uCxjx2x\IBP~t!:tq{daGb&g2-Ct.e@z>*PKV+s+  '  PK  C:U            -   org/bouncycastle/asn1/ocsp/OCSPResponse.classUSQ=OESBL-uY
P
C11gpҷIar/~oj37s=ﾻ?`L3
Ct"giUZHft5
ֶ}:C;ִn*t-qa)9S鸲KFjF5(g1Mԭm$Sicn!/Ð1%}FGIj<JjՉkbÆZyhfW	ë0,Py[B˜I|$6=ūNO}M(EU@66:`PW2ekE\LdZπKԺei3P7y.BFZerf
bCMBkTzJ
n&JqRuOwNř+~}GdױU7\
55RsÊ.XщA+0
CVXpOq0jE#d.nf80!9<ыI#^"x"S"E<0#"ZHw:1H^5П|: }0hX]GG}4SKDbt9,uEgt.39*	
h"uI6^<̧w2I8>I>P>Ë,^r>~14B\"\!CU})n8q%gr/b6YK~{ĕES/8iPK!ҫ  f  PK  C:U            3   org/bouncycastle/asn1/ocsp/OCSPResponseStatus.classR]OA=C)`QDV\Q|cRˢw[BetDI2޻&`6{f3w枹?}
`"`a:cAQXbf6J榾c+UP,iS_HZ|^JA Q6;%!]Lv`~ ݚ۲"'֝8U^z-&akwWU\ցݔ'0_Vݷ9jeȠoj:NݢG|	0a2p!.
,s5t/v NuIL|I)(Mias^Cuڿulc	)P0Q\ټ7Ha!bXbH3Ib1I5q{ag6S{)ra:gqbFQe>I|_!S=|~~ۀ֨${ĦFGTg|FLveXTqW~DI70)0~G-7 UU?Cm$-Bse0@[? 	߅g6lŝvWq(ƻ(+:aPKWfZ  h  PK  C:U            (   org/bouncycastle/asn1/ocsp/Request.classU]OQ="" H!nEj|H	Iy[MS-v	5HbQgEX,&=7s3gζ~
`lnO0vw0iWj
SգZ>ZҢ) SRQNmv5웚n$!I}U
s[>
/
h2nnk뤚L	tXs)aNkMZSq-VT뼜8X=䔥;>Sp}SeI_igTZۍ{Lr+ě$j%8$I!^M	
n	tZ_ςMbi, G-ê7e͏a@*˧}>\%]fz,y{;m{o[$r~jH`*㥣(SqfΗ|2J_SxDKQg݁Ft8ЄN!怄.*}>0x|5paaDFebT<`xgĤvLȸ2{0-\2F?7uaS^TwB'1Z!)rFk=O\E@4䉶C<%T~D1Y,$VXܨ"0Xm&U֭QYb1K͔eRZ]7>Z9+Bi>C9QMI

B3Rx.y<[||!Gi:c	Ghme@GpF<UCGoPKmΉ    PK  C:U            ,   org/bouncycastle/asn1/ocsp/ResponderID.classTkOQ=
KE"-G*
*$6"Je)ŲKڅO7BMI|'c)[l	3w̜7 x!ШF%|+S#iy:mݧ)ˍ9װMK@蕵mH,['f}2]ZEG dScs3nq}&8>᤹xIP	Lٴ#?)+Y.8xpn~^$.Wce+I+X796#8=vaKVMNӮٱ$JP$I"]BN	]dt$Ե?I:Ҋs*GH(zʪc Z@/Zybk|VN%0.l1>)=qyOTStK*
2&--3WЄAa?BPe@@aLFQ}#.0.:1ܧ֬-
?M\{oD>h"&L|X4{</	Byh~*ŽEx+Fap!zGQ!1](Y]<SP25Ca	PJ.<ݥ9A0u'of4zQOѫ}	yt0;F<(?}(%@TS<͍*Yn(0'Ui
ѫ{i12igiG[5q\B)BA7PK(    PK  C:U            .   org/bouncycastle/asn1/ocsp/ResponseBytes.classQOPmtŉ2)uHE &	년ⷘ0"Ps2$:Oosz{
@OB:C8s޲-@wREva[nnqS,	o݊cK*UNƩMg6L\7\{Z_*^MdlnuTF.f2hC%n)X l
.
je\፶G[C/Ntk1݊~2g{jshjO~]>X
b


\R`\isA0Lo-5? f86G 7(x=<Woĳ-cз
{oVŰTS(yO͌P}O	I-u1"&CE'ncH.TDp[ʘHKы;qA&ܕ2 RA)ѷ]Q)݋QrщAG%*Hh5HDlB㡖ǌ6Ft|0# ;䁡_pj3,FLa$b!IHNOjHִH!Q5&I4]GqCVfh_0=Q#-ܹ;Kw#Rsa`#[ǜPKT    PK  C:U            -   org/bouncycastle/asn1/ocsp/ResponseData.classVSU-	,,KmRhK[
aE[B R\ch͂~Tm?_ȌCg>'| Iww=_w+3J/ K,j"w.HUӽ20QDJB}L8!+VDڕ9q	
bDDYCH-$CA	M^vRZOj-Sfl,)A崰'+iǌ1SNBf5&zH2j&4ŒrG%l3)SyXinrDL LRDbIrLDJ;;YWKԂA%Dt̒W/=}(lP0ve"PgIht\q;>wK#/eGb'3a928 IƓ2qPFC2Zd8,Ax2%(fXeXn-PD,AV_vJOVDO	UL>U_efzBمe>taQiA{;rYdJw``t\2ic(T֓]TP+O,vLVo7=bnwΙxv:o.W!lr
>0-i8ZGЫB*GqFEΪx5b1UxVEc
y5/2\d230bu00paU	I)N 0.@4,CDt-=xS)D`x_i6Q%ł-"#GväcF]6%Ǡ@:%U1#=jT׌f$d$Niݴ_CMKcIWкWai=ӚךWǖdGi]Mr#{<\9W˚=ׄ92G16ჟ[}wїYnBYÇpD Zvn_TIC+Hɯ4NO8üjsYu%o)75W	_/ÐI2uOi*MVENkYu|I)#%,<݇q&7`uH֊OyGPĊW=xȱ=nE{q|CET6[
tkX%^rԚ58p@@O4>^uC'I%|?k.a=URet5TSn@3Hk_PK%W%    PK  C:U            ,   org/bouncycastle/asn1/ocsp/RevokedInfo.classTkOP~
e0(
l-0@PnMluBwL-Q]5[4Ms>w `u}һcK|\OTF94ݧtY(ήu(GZDP䔦rhr[K<;ڡSzB)uܳ\-*$-RՒ͸JR֕䊢+Ds幹l8w`yRHŔhAf7p!6PsUS-::)QV+[Sc3ПdI˚eKQ88t嶑CΣGf-<nh +n%V}5`"h2MdP+"A]۾ɣF0q\Z!S~ӄX/#WY͒o^ǹmV>P\pw#ٓ՘'o]]QT(fa$tIq`dnP"BލD[vώ6<6XXoG
vюZ3a0`D=d0%fSw #31XЍy=	zD?%-J?Ơ.GVtIZx$hA6xH][iuc,~'O\%z>K'xmQ۲xE0
,<<S1Ft&veE mxg<esv?:δx)a16\u|+B+Sb9CTz-\߆;XXd/109ڤSmV`O2X/y8PKsC    PK  C:U            /   org/bouncycastle/asn1/ocsp/ServiceLocator.classTMSP=`
R?6J,YtDp2%;wnqF(#3nX~12m)r;n &E\eh:k]=eh0yn&CPD7]C[oOqҰ)W!wC[wkϙZ*<hNV_ϙ.w0֧dyv6SN_mkݱZPm`Y"D]֌kݴqtn9v0Lϣ{GJqGTµ,n	.II%!0Ԅ$ÃFv(3JP'[+R"kZbHjـXs4϶oNG6]VdZ/ZcTƛW8[6l7㦂`
ZWD n_V
" UF7Fh2zpWU	'2&d\}1Iӂ#us},~>3z
sh<!E
j3j!a3jxS_Ц2ZRNa>	,p*S$qFkO=#DC0jg!z0TVU(oHv*tP..v@~qsi?F(<BZGV_	PKϓZ  I  PK  C:U            *   org/bouncycastle/asn1/ocsp/Signature.classT[SPB/ikbA.%AJ(^
-Zq-Fkmp	uF(#3orݴMؙ~v=  G`0n g =yު WR˙yfΔcțJZҌ$Z%9rvT/#t6
즑|TfFy#$bF2R72*z)	f	'鴖ChlyZ7fN7mIl9egaצVfOi?57|<_cy5Z,Oa1?M&B,⨈D8.MD;)mĆfP9?!"{9o<P$WO2<POCSluc<0X}3NtP}E
f|`ѶF&C6_\3lߛ2Ǝ7z$tp'B?/!^1p10LЉq0M]y\Q
i1Cřl>	SM>Wm&rZ[ b1BU',n\D\V0+m!
`h'la|qJJIȎ؎m2)Nzslde;|9V)hI*RFU^vTd0%Tlȟ/{hمM\PǻJ5qZrT|E5})+%.N5pmf#q{hWvq~U~]kJ{ |CHӄPK!<  <	  PK  C:U            /   org/bouncycastle/asn1/ocsp/SingleResponse.classVSU6	,YBmkhWEQ~TB,ɚ.
4 柡ϝ/8#$#3N}Czn6
%&/&3߹{&~p;h%HMU4k4M;1%@A-K@8ۓeǱ<aZft;7i]'l'h4LVޱu2r&EhE-3s/5,odVŊ
znL},;5O$FT.g%:)W˽zAEcs$[S?i/ڹĩg}9
ʥ|ܓ'VI4ʶ[y?Kãjq;#z,=ikW	aO7
Ʀaۺ"^qBID!ⴈ3"D)[:Ӱcz}U"Xn0k 1#IrujCD~nJaώa(R/˯0f*s6жxV33qqk+Kj~V|*}0jrxd+7_vVlF?aFځ)[x}Z{]}yOßbn*HF'TgZ!bH[ 52f!!#.<ax	01\e8Ǽc2(>a)CBBf%CaQyHs7$3	B nHė"%Qe%(Xa^&si~=Eo yIݛgDGFDPn
RY*ͺiW+E
uZJ(l;IBǜcouw֔=*]=VZΟ/3%@
9Q[q©Ȉ0}t>@+sza>@cq')V3˩	 H)zE6Iʉ2dJw	%ujcxr*ȞU@G)U e[9/i~9qEwvmr
{5ܫ>+5ܚ~r[$8׿r"gTNr)keJ?I ˡ ϊt׵zg"F)FEPKiO  
  PK  C:U            +   org/bouncycastle/asn1/ocsp/TBSRequest.classVWUM2e`2C>l)$J҂5JԖI20C'Ү]u+wnQ9?QL>(L9fݏ䏿1XIa<猜}]@Ӹ;@dh]Yݎ[3zi6Z-fDԺit@iŵerLKsZ6n
i8[l, lZh\5OZQ`G')#mfT^MK@77fzV'9oN))	I|ЛDidLٛGPSUg<xfpK[rj1I8ۺ[Zԝ`WVmK[$lKr-Hk(ސpBBNI8-ጄ7%tI?֎	PU.6тCP=fMJP"TCɗ[,@^պ*}UjUbNkUg=]lZz!^ѱ*:^ִh^3Q״rM,5^#t:!ti∜?Yk
?1d<6OosѬ@>^\RЃpYA;gc3
+h<}aDxtUA 3``p*>dC210+1|e.'202ygX_ȸ/cxЧOW,=:jMZ]me_e*JRʀ}8H*#п3L5$EQȩ-h
[H [Ouеloumb@-;~nVEznN"UV9 ER#N]h
X'B?(A0(H,D7D*tNRr>-jw`m:3K{P7Ь>@.Ԥ|7"6w롃${8>ۇ6N1zZ+[!TY}^4wџLsTmd7`]UElCP^E#DI蝭K]"j9BghJqB~yÿPKe7Ua    PK
    D:U               org/bouncycastle/asn1/oiw/PK  C:U            0   org/bouncycastle/asn1/oiw/ElGamalParameter.classT[OA²XT"Z-"
!%bHxI]b;E)(U|e<[.u=g+$VCTۢ9rvy6r%'C'u(:YOEFCCR~ёΡn`%v+EKș'ȴ+qyE
Y{elY
c=)r01aƐm$"z~vc|絝vx[BCD*VЩK%

.k0BS=f|#h˽G'y._ثN1h?xB}`3:Rf@$m8TJ!/ %i7q柭(pAw2RZqU%h2``؀e^7ЎQ-SfL	nv 
S>$я[JLcwtaV'NbG~q׶䙗๚
1@D6݀$ɊS>ͤ
[U&*sz*X'&p6X%ڴ>!1QcwP5vR
wh-["k}bKeV&
ey!<[0wrn9Dki5#ұ*v[+'B|CB.~PKz
  t  PK  C:U            4   org/bouncycastle/asn1/oiw/OIWObjectIdentifiers.classnPƟ#sn*	&0$lcu)Ъex^&^er~=9mҟ )k%f$nHJIܔ%q[".J$&
- (L~F:rp
vR@/rl¥i[^RUWHz!4hiǶ<(M[ξ5`n3;'gVv9zU,0{Yjnַ{.lImLw,\C/7_=m7=ܳ?|wjE )>Ss/m}G1CaHX",V5}:!E}`2,!G 	&aP"X׶"0cY$u*U.\PrMʔUL<h]#zWԿfgKqQ26`bec_e?`W?k7PK`"    PK
    D:U               org/bouncycastle/asn1/pkcs/PK  C:U            *   org/bouncycastle/asn1/pkcs/Attribute.classUkSP=Ŕ-*" 4)P-ER]D;|ImS¿ig?6))޻gI#}+TxQ\M'%tZ3icYKk$]cFN
Oiq7rV}N,fGͬe-7ehb,l03v'H03&2܎f3_Z-S@	ɩ%*35ӍXTxʙچfYs$<[1Vmհ뿘[n^F&Iށ1SN+
:TOϬIo'cy/wt['CH&l˙ΜmZMUz"n7ި_Df-"ZEhqCD"n-`p3B5wSm;:	nG*BSʕW"rW:WM$&zYuε*Z9J#?o$u?\"GOp
D.}!$Ën<2dʸ!]x1,2q_F-F82irЍЃq	q7zi	}<Џ)	ČD^{JOnfy^)Џ$vVuhs@:hVCRAهO=r@}4/`@!E5<.:>B=H$ ]j+jȓG1!_R
/i䡵IS:<tʹUa
KxR!-vmny0]"z,ͅx<CNrxN.PK,  ^  PK  C:U            2   org/bouncycastle/asn1/pkcs/AuthenticatedSafe.classTKOa=_0DTa:ShZEPc	vOr&F6.!J%
${s=   G9iٖ7^1D_;5mٱަ=mo6؞i{i{I0lVv_Z.? VHۮۆY:=[^7
/QU4Yeh_wumS״L-ZR%ڐv,{QԨdձ&㽡-C̕Jы9IF;<~,5E$"$]D":d9H<}6}yӤʵ<\LT# UTF)VS`N)C"]*U=ka@$FI[؀5FJЊ&	W$IxЌkèc!
*  xw`f}YYoxo/0!䣏w$fڑ0<NwI>& "0Q>#^nF&0ycO*	z)3<	) a/F\5Т|C8|G%̳^HaKU+!H.[\@	/B|2tjzAbBp|J?Hd{\sRa}}PK"  '  PK  C:U            '   org/bouncycastle/asn1/pkcs/CRLBag.classTmOP~^DMAM*:^tɇ%%㥫Kavb&K~?xڡQ6K+,6Ԯ R&fZNOY* 7E!~dvy:@7ղ&޾NyRfMkY{캡/,Qe{uc`n??JjX4(`rxwd
&ZͨK'.&>,9)
ۥMV\ִcC,bLWE&:U-yhrN@f}^IyL8y'&OEL]Du0Lqz!Dcs3V>;fZY5I&\KlcZs2-#>|18G	~rtW$Gs2PAKZ偄Id$_P4%DID~D?BJXfv'O7B7I!E6HB32\ٸc5;œ3<)N
ӝrwfΨzX[H6B
>̻=%@ĩ͋fK	q%',pw./7t ~DJR9jhwuN~ӕtOPKo  -  PK  C:U            (   org/bouncycastle/asn1/pkcs/CertBag.classTmSQ~VЕu2e!7LLE*feqecVi1X/h&t.,d%Μ=9޽?~~ g<JdOWa$iZN_Y>OS(>Xj.v.;q4cUlfmOo,R*Rb
U%m3b)m</{-zs;Q2yò7Af{ƻђ>ߛ
#)>~;\OΟz(;:+o+%U|k!B1."&D\qrB@}ALЙrI(WL~F5u}Ҝ~FwZ>aiGfl(;iEfvĀ]0EwY5|I
Ø͐18
b[2$q4/7Aĸ#a7$LaQU,K<pqnV$L㾄 $
{@k{`<k39;{09iq	'4q4QOO~55m:6Ou"|4ΨQ+5;Ms)6Hׄ1<%	{d vm^4-%@m8A#/5~Zq9Վ
25/Qmb27@b'ԑ6yxT4ob:m ΁_PKd!S    PK  C:U            5   org/bouncycastle/asn1/pkcs/CertificationRequest.classURP]RB^(UN~kEu1Ji`(ed(}Ri
eﳳZg~04/dܵuCW詚1򚽦YgU[7
H+icdhl(ڪ6DQF}dQ0QțngV^6Z)%y92fN.h$iZ}Xw_oHWJ6Vu;c[gRjcEfdsz77Tgik4)]j	w)В,2mO䵥~		! (ঀ[CW*0&=x^%Lԃu8k=a4\dcYxqOƽ	jӞ:#_ǪRP~izWbH5@tC2dZu߿эs"":+6J>	>0n$ Ђ7QnZ7
7"0ͬnLnD`N$ȼX Kto9IҨ]4[PGeP"Oe*Թzw>" #T xЖ|Dk%V"sGI
,WMB\c}A87˟ xO~ZpD$2Śd	"ɟF:œfZ^UYEn9 gJt+5t #5NU3tmh=ʷ9
_&h~PKށ  8  PK  C:U            9   org/bouncycastle/asn1/pkcs/CertificationRequestInfo.classWSW-	,,+>  XEDEm!5
Kr	a
U~+v2/8GMB|(3n4V!
!py,gno/s|(8yR@[wѨgTêOz5
M
k!bv53<8%j8,@RM3
%LfFH,#G5kxس|MgDg<j4&F8VNvIzQFvQ0U=RCY0dH-	k%`[vѓj6JX wFW,ڣl\Jeu\GU=5$aD[JZ߮a\MlLp(b	=4R
3[z(VTc"0{Z@L|sy /+ໝ@yp4϶_*Ŭ?7nJ/׎]sh$;,Gtd]rܦ]ܴA|RRG0(Iz:RJJVO\Lmj-PO]EK"v#b
"/JExE"G:׬fQ'^8&!l+Cz{\lHGއv>=;|u /n_]kTuk%7խ,*ٜ:rd#r,cU>UVLK	i[Ǽi/sN<v0o
ek$iV}cIJzsR}-2pF68+2j\2
ᖱ
|V(c'gd<8'CBK&Q%x]Q?zeyN.r\ЂANTN8	$^PdT/	G$<sd\1<+\p1	%'&'78IpSp%j1c^X^W,3`FsITCWԱ^_QA"Ч)NkZ#Ř"rx ~hQD
hUP~e%0K?XRSBȷ6+I,(7pCpӷJQ߿YH?jÔR=i@oE[DS"NB2+|	y+ܤIۖ[4'=m-2E)><޽FsӜq|k2S}Kv-C}77w02n,AazYz ,c[ѝ6F|.i\q9rOg#u-I_B
8~1;}܊yǩ8M#_"].Jc_~_ek}4tc$~Қ(<!m=o++04Ϻ/xuo`;->aaȖPK    PK  C:U            ,   org/bouncycastle/asn1/pkcs/ContentInfo.classTkSa~^@_YW[eJhUH$aVq`u/h&b/~75yaIy9<=߾ϿRk._D㺡[Oj"aihkw4)YR(F12jrŭb^Q0xީ93S6咧NLiiMuO
Zz*6vjA
ef:\7wǸRZP#H؈	u=P+*vWƖ)A"	joaoepL{&V-ɤ(98^:)6Po
NG/䵳EF
a
pq6;}/b)[Lۺi8Z989:8.s\q:MacUpQJ5"ܝ%EWP|Vo-R3xWm'T|εT

$!p2.2'H=dxP''~.0p)&d
	!cDhwe4b
/PG0&S	XB&IŤ><ЏgT#n	rbߚSw%QjѦCPC.4pNҀ.}4(?*]U`6,JEC{
eWPr9Q\՜2K?}_3죭=D a%p>JTn
GrpVD\g۵)R5QE%:xugdå
tY:ZE4 =G)}yr1 t~.PK:߄    PK  C:U            ,   org/bouncycastle/asn1/pkcs/DHParameter.classTRP=
TT@H" Z"P>)66e|uF(ʌpgrݤ[~ws_ `YT^qOOfS>b(-"J+Qә"3eÊ3, _4#N-ԲS1'c4k6Ԭ4Cq3aZm4v=a8X,:e9fL
4!+0-'e趓Q}N[#MHYzpi?dEuc-n.+x,Ӧۘ"&BHJx`$(Msl%ܖJP+^BF	W$\pM=}SaEuoov>s&Ԥ^tv(NU?$7MQtn|yLܜ}EY>5Կ{yӦ]02T`g԰	
 \B	J|
.
Щ
]
ʡ!wz+GC?]͸0"1<qdbᩌ6<)la
71^(:=.Kٚ5OR)g\+AE=ԲѲq;6ޝ7ޣBd?PaJ~>	~	7'@y+*
&rE
.%8?U ,3"裮נ{k13|L?&Aۖu{#]ϺGPnTX@AGhY]}>&3n+*
20<3Ǩ#7rTOסbfUBͫYLP1w+t6>Ӝ?JtPKg/    PK  C:U            .   org/bouncycastle/asn1/pkcs/EncryptedData.classUWEˆl(XԖPd7 Ħ@55J
\6v۰)~O	Kzs~f%irrff{{ϿO pvUƍL7DaK*:zX U(Ղ%,Ţ		gO\]Xp}/]t+(8C,,}n4ܳʛVq6.޷ddXUL_~hTᗜ䶿UEL23Cvo_R0!'L9&R*H@\7l.rzmx
qxXb7OȚ(#\qr2,//,0u:z3T<_yLEMSݟHc𥹵
w3: o221pamw\ʾ:)IꐒoPof|+6x-Z_ZI~-IIkv%^ N٦ͺo4Vf*աV
?~u	;<D%ZTVi}EByt`PeGEequ`J.2L븀슎>| Ç2\^H5pCe
HpSE|=p	iÂK2d5cE>-2L|*z-ze?Xv75PO(20GW˭{̿`CoWa'تC0`ئKֈAqҬz3L$+(i&"G7 ?ʇ`01+wC[9^E,\d88pd*yU\74G*:<闞uwiQf0"QG2;8U6>	t)J0K$øtM*FlDw]:JPK  x	  PK  C:U            8   org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.classTaOA}PQ@ 9@PD"5&OuD(JbQk)Adfw罷3agD?0"ѕirWYZzy^=a;$NSf[YDKdhpp,ooKt?}zdT6zPKcJ9[il;k$MR,`^Xuk2s"
3S7t6WCG0CO+%<0tR6KO,J
]ڰrFc
%5bQzdhٜz=zzM[;\A
n*hRpKm
(hQpwRg@JHtޟdqCHLBi)ha|B/(l\" O^
,ӗ @N?9r%}+Ku2]ZnI*~vhP@5jP
&UpQ
tIPCQ
fDEFyUi^4S*:1*1ƴ<E+Ќ0s뽜@I/(մDUx;ī1M 3_ ?AgHct.a1*RȷkOߨ?FxY?<}u
BbNTG!\Rxs	~ʢ|1ږHǤ!fc1cy,PKigS
     PK  C:U            1   org/bouncycastle/asn1/pkcs/EncryptionScheme.class_OAϴmW %D1iԇ&$%&<NCYhwv Q5QK$1xgԘ}9373gm[gQ/F\ydHQYڒ{`HSRme?Us.ޖ
ae*TO#V#LPiۯ<'hI*αh]L\|jk+Sjm=4
	
I
:Cqw<ln"%kDF&cmg?t{x}X)Ivsݳ4ҁ
ycㆁ)L*g
0f7-%IdpG:Xթ\a➒E%KJ+YQa_S"s[X=`FP
i|@"8mun]<wa}G Z6K,N_t>S؅!ģ>$MLY[?2%va0MJY
aF吰>ar(6y0&RDGPK    PK  C:U            6   org/bouncycastle/asn1/pkcs/IssuerAndSerialNumber.classUmOP~R(CDP!:ޒEDq)#.1(mi%;99퟿?~X_$0׵LJ_ժfVJi^kU#E\U*`ƨjxRʚ:fڤZTrR7/R3KԌy9ݚ_7JAɗmJq1LȊOc&!YS]vLVתiЮ)q=[)wT6*`VXozY7}G/G<<yI|*0jkp掲e(6: b4ŠW2ֹ+A1#^]myw U۝n@w&Ń	.ג%()FQO[KS8l\#|QD2Ĩc"|`f\Dc݆E'GXBe恀A<D\<3@E#x"UZ)y˚J{Ǧa
؏:$M
azSǥ_}EtPC@tM\i[b
8QUcRϤGX9@R$Y
73NZ|GC:Y-sM,eEUϚmwN!Bߍi?@)}Gᄻp$L	9JL0lf"||ùX/\PK"  D  PK  C:U            2   org/bouncycastle/asn1/pkcs/KeyDerivationFunc.class]oA@UGm`MjT	j^ˈ.uwJO_`(㙅r#ًwl3gv~1ċ7G3m՚%զGk3RXB%<[2d)hK%aZV?c[ʕukjuc_ڊ0G2򭌆z!dtr|9!ZkM)#ui;Ht~UbiL̳hՉdJSXV)N"vmEGXZVߦ:aOOH&c#s10$s$01E-3J9,dq5,2.f5-׵rS2Cצ}Ra8]CFTVh=OZh*=gp<E~\OOL76`FlKAL[?SNu*	x4.Rgb`zdgr4QPKs@     PK  C:U            (   org/bouncycastle/asn1/pkcs/MacData.classU[WU&	a:mJR[3@hk[*!QSԦ!:Lt`#7_B\⃿ɥ=&9g۷s& n♀)rN@BTJQyI|.=:,3E16ǍZLs-bͮEֳ5i
8Q
$@|aNzkOP:6:d-HDZ
N%Zq/놾bO<[u! 5AK7>Q-W3kz]Ƅ%\ƕVгk
Ň/qEN=xfS߈L[7n5p|'
9,hPqU|Wy"^qV9E\qQ%E&⊈!SMvL@zHr@
9í2Ϊ(s.-tTzIytz$ 
qVe;b7pf"9v|$u?<P1vL
y9nC;f*dU0$T:b
^AW	=
$[
pSub
ංۻ,9{,c>|/rdQ`Qd70bVFY<b#J,dd!OX|&cAY&G2t|.1p5shFs)L@i\D;Hmh!\Eۂ݆!lBjSRq3:#]ڨixOZ6[nmZ'-Yi7i8b"r"5I:n'fb&H_cr0v-|١b>b	Hs=گx1c\!iA队psH$x2H-|piX-S-|=ΐMe[mcmcy0.RD
m,H@_0PK)    PK  C:U            -   org/bouncycastle/asn1/pkcs/PBEParameter.classTRA=CEw4\lEEhQh,R>
Ժ`2Rb*(g77n՞=}/_?l ǽN0D%h20L>\)Ӟ|Ul1ahS_Ya`اVRTtlːqweVjeK!n%HBw1?}{p8e-V!U82%_ؼ*=a?fe
c9.eO,Qrwnޗĉ	0܂Wwy&
t=w']J'ڎTϜ'vZyTV*GR*">-˪Ŋ[rLh԰_
5j8ᰆ#j808NRy-X?o<LJ\>#m=
*?Q
VUl7Tu֝?v#VY#14IǑ2C(/]A@pڀ3joTY{0։+q
WtqI~L(1:qQ\1:F0SU

yWAr@KB=T0a]ZC;"d-[鍞kt5p1l`cO;dP"a7"!$R)W%)y3Y&Z:M1r6NaJ	WH@h:vQn
*u\rO8P]G~m?@^tͥC\#=wX|PKug  F  PK  C:U            0   org/bouncycastle/asn1/pkcs/PBES2Parameters.classUkSa~^AW-y`Wf(y0+kͶp1X՚˙UwA`9=yuw,18y7U݈n-UI:jT̯֌eƪX⵶16bdMHЩNƸU\9hv鍖0&xp"="dh|JJ5źZ36VJ(P̲X	5k4EJ063@RUÅԺCb:jHgix!_6Uk.z
cQ5ha\!YhB!'b&E4ne4oR4覾	8&฀FMN8)Y@SN8#,=Ff*E}%fouַpv~tKϟMuiA+ǹ"h~-K^,5̑6Ŷ8oQjsvF
*5J
gVZ*Ӈy}j,;Ւyha	'5KEDIpB~	*׸
.\q!EXщ1.ƹ/"1).D'"]hCЅvܥoX:Ic1SMVWXB
NHסI֗כ$.gx_pw8g[l*I'M*0[aNo#*nc`(tW,2@W``3?cf6q^CON'yD.9V$aB|P!8xt
h#	dm4_ݲe\<oI}|1Hw#^)?AY{sx?PK֋v  -	  PK  C:U            -   org/bouncycastle/asn1/pkcs/PBKDF2Params.classV[WW&	M1"*rU 6aHF&L,n[{m%ե/<'uu=3I*T}Y߿$MYxCvsYTobǬXK㚪y:
;g$`3<3#`%ԙ[ɔN
ҺBʝeT'sDϘ^!jZLguSD{☢'̤ -LV&Y{y7֫H0f)YRFҦd-Krf<m(ÚRtmHNR3Cʬl?Low&뉐&k+kZhXϦ>%6W̸ZWL'.QЖ6i_SSBrFG#z<=#OkI@in*	8Ks)C.R^p4/JSYlNj%_U4CnΙgBC&dCNP;1Gv'Ffhꬪdr|s3~-6~7X7yԙinׄTSW>DqDQ""DDE.⸀Cc9^ʰWJrL.1:J0JLmc no'jgdh@Mޕ?Zљ_oWߠeJqK[fͭ.:-]%}ieoՎÝbc8Y
gг_ޢemt#CC[/T	-蓰a%Ā	0$!P
AnTHx
.^*$Cd+ %4](	$bO/31D&$lW&8a\cbxM/ẏn1$}ƻ)N-z`}8ه^>rg0y(Cڇ1]x܃zk'Paa
TR-mFYgY5֟4`o9K!XC*±S|21|G^ב^
㡑\$=`+0(;7I/1Z(R"%AJ}>l,_dhkiۭ{xH]'>*$ڄT]NAI^B^|2r
_gnJo,aތ?GڟJ0\?Dg߾Z&~E58{$kʄ
k
;-℈.]'H9$yՁ_YGeq0?!ҝg4GF15˛]ȷetY5Գxs `\WccĉYosrerRH:&Iڪ 911ƂvA']zg1,7^1=t}Vzq5|1>|_ӾLPK&8ݔS  b  PK  C:U            -   org/bouncycastle/asn1/pkcs/PBMAC1Params.classUmSQ~he	jٛYE}heMX]՚͙U$ 6̜9o\_.`r4i}vd2ojnGMVMMgh՜.u61ݲԔ۫qmUEWflqoEޛũÉW꺪U3mV6Jg<[;&&|\JYR
4ղӺZ/FL-TWҔE2Ezc˩Uĩwӧʠp>f2f),95cGȑZȹxhg4Q+SގPBT6gث}MU:^U/挌a뺀pR)
hpFYk~	*
ZrDi'n
<ch/5woxh]@~߆!ke	,s]ݐ땎Bnz^?|~j[sT|`YK0 
KhD@A	nr됄_
qqfp\с["1]pSDnsq^DaF$ƴ~A'&===$mU[G.~T=g
Mh|5<rTn|8&oS	.|	yXd`xFM]ҷWK:ȳW.`A~ATُQnO90<a<e`C-,~-mSEVCnF<6HgD,&y
0 $AE3H)ygD7d驭h-|Ka>vѝh,`~>l!,]&<*rPKcKU[  T  PK  C:U            0   org/bouncycastle/asn1/pkcs/PKCS12PBEParams.classTNA=[zAE.BvEPZ@m!il7ulH| ·P"?얂Vd7s|d~$jt!Fג"ޒAu-)bEwmvl>K"#4!ScZǭSf߬oX&grLګFqD}JwrA_/8GӨ'g_SYEkLKeHsnV"`shH9˶S`jZv,#gSoj:N9ۛfE,/dd*c-*^D"es{גpEU	$tI.ᆄW[X֩[lez.tZ4ԥ(%qcj,%ne}|2mh8ݻIVeƲsuM
Rp
$0_@@@P%(P0 ;blL@TM@0.qdbB2}Px cS2iY(ˑ冹~'΍"$|S%LFLSOC~!raڽO5<C⋫
uQR	~WcBP 
Y;n]6I2.iGT"eUDʆ݁CEҾ"ο},3nA3'J<CBPKז*    PK  C:U            6   org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.classXGge\0ĉ[@BrIB`l,"Vˮõ\/ދH{K.{r➻~33|m1+Ygrg8klw:8[Y'gk8[Yg{pYlg9ۛ}8ۗ8۟8qv g:g9pfpY~L6pgqĭ8;334gml3gs6ٯ85g췜C8=g쏜?s8_Nc[cORoS.kp7ԑIOŒb%Ľ=i_b[ڑbpd}JsIcu}Ԗ:{FyFQcgdJ,:݄@u9G,b".b94iЩy<.\A=؃=-qq3.hFY5\Eދ^Ѕ7&ҐEc_	3Bc%ɔv<@K@T{hz0eآkpXLak0'aJQa+&\ʍi]c5Lweq#ؤ5?MZf?+dƈ*OL&.6diH-(&Lڎ]SY!|wue`
56NĺVjHq
]TpΎJx*%q3GŴ,K0%4,1eSb"-LOmA.\c5nϰԈ{TB`SURMuYF_v8FVdq1z<UPZW
 V0-ӆM˫Uϓw\Ѱ(G~
рi,cSRA-jJsEیv%cfXPÊ|°Up^MefS@2J<I5Q&:aĲ4 һS0\BOXFvzDcK	yWZ,W	1LW&ou$F5nnSj3l)J-I&P-غJlunuuAYc/Y|![׷xJR(6bۡXvxj+	'bcS>W;Pm.V7UJ']iw%2oFo)+[O	I-,VHՈT=2fB}J+zYHD3azx*[-o^ƃoxK5,'iXN.O\HY,~KE>]?La/bթN
;.@ͺ:HH$&؉IDskYb&o71=m\ۻA%Ay:GkPٓ=d+E,&hcor v:f4vq!M6Ʈ@pزRn'"UGya:C"oo]Mi&͇syv{lhQ삂'$οLŌ
[4iQW۔b5f(LŔ/
[ɁWِxOKK^=b;Msǈzӕ	PЭڱ{仝W
뱘]moNZ<LJg:x݃n6+;6piZ̦->x\!&N~ͥvjQ9Tg*t_bT=<bSz3&>3WHik idgx]=dqt1VX>bcζ;(;L>#˖$;bw-~{8E6Zb{P:OGz؄TJբX"vӇKm=b^5-+R)Za^쟥ߥ3qA&;il}ͫy0b?]ôrv8p$pp4pp,pp<pp"pp2p
p*pp:pp&pp6pp.pp>pp!pp1p	p)pp9pp%pp5p
k-
M-m]=}C#cS3sK+k[{OOρ//oo_4h%@)2`<0(*$`20U@5PӀ: fV6`[`;`.0,c55w9;Bi;h̀%R`#X@ Z6`W`7`t N`
  	{{  !@@z0	l 61 $$, 	~
-;?+7?CÀÁ##ccSSӀӁ33ssKKˀˁ++k0\\ln nnnnnnn  -@2"
[BP#VCLy)ą3Neu÷
V$cO>t.$}MҳlҭH&E
1t	s/H$koHO'=SH'=SK~D	鋤/L
髤N8T$ғ)_B:t2i%xRNZEZN:t*mKI'N"-\qd);t:r,)>GH#}	I$>ҷH&I"}9I%}igH&I/"v;H/$Z+I^Gz
UWfH/'"2KI/&I'`u+n+n*Dޥ-{߻Ň~@QP.Gߓ~K#KzTq*odE%?ݬ-ڻuȵ"ZQmqmr/^iw]&m#RV{EfN6xv;C`gJ%~=vX9vWc^q2ݒq#5a#y`a\^X56:4N{%B<AqXu=eZŌ"BXbXef jqN4QF4݉B4ÉF4Ӊ)Ña@jɐ;հ˜2T{e8$r'|YrMZ3V&vD(D!ZDkD]V:*D٩QvejwD	Xhu D{ DsmDm8jD"QKtF{:Sf;ffgsPXA.d=[+FfY(gyR5ޮ)>ũJVe\sqeSv;i'ΕvG	ҖCCθ飬UUw<V}5SMmii?ª=CX]k=\1 V=3ۏ
~`Lhʙо'헰vUWj?mkFimX._Kvi߁Iaw͐KFlH{/}72ڗC:̗Zyҏ~kz	Zjv=VXzVf\+.U^eUX
:[:1gWH?URHϥ,kPKcX  g$  PK  C:U            $   org/bouncycastle/asn1/pkcs/Pfx.classT]SP=)!XQ((h-P4RէK`IM'OmKAvJ27{< 2좀fEYe{q˶	°dR@خirKn$ﾈYt;2 O"oe孅ep# [d<-50;332l:B놹Z-@\pВ7˹3rp(?
'ɖ2"eqzjcu!m&XSK
kC櫼Y*F]L՗F.452Վ^ݛIbR	ZOޒЀbYkr5z:	l064~EhqDQ"8.℈":(sWZi )swUh~k03'amYgpA0GOSɹOw9	^9=9vj1Oq_
b#|T8U)4Y!xMFeqC\ъ+܌psk-Ppq[B7Ѓ	nnqpz&͌>LI8;qW"iL9I:mq/#>DM-72hɣy
D&f5ۈp=ڊN
U՚K{е-<}@@ռwO(#	xF(^("zEDP*yG(@k;oP6$m<*醰Q%lYh!HupUF)an󪟠oTe\g{vg4BR6``WܜVDOgX¼Yi?YrKh<-DPK@0R    PK  C:U            /   org/bouncycastle/asn1/pkcs/PrivateKeyInfo.classXw?i<IPVr%!SjP`C4V&Gb4r춴Zo,u8[$CzN~9m{gF*ww7_ (?P ;_BOW0ѓhs]!S{Z>4y=kfwf(Z)tԦ|sęnH:;3"HJIU2%l4sgӚW%o}[Hv#E oϬvgUF¶uL:ki	[XPz@T	bUYfTj~(kj6|B9rC7,Un̨=,2fBIt#sMis
LR7nΨQ=fmX.Qt4hi5geh
V~=7,-͕mKDc阪o5YˍUNdFr.歌Uh_bpn%dF!*f$)u"Cn5JUΒw;ccv uK vG%h4[w4K˩Z{bg2.h]|uIurE~)cn*V/nٻ3ViFjJT3UfSI9W%-WN*6+RG
Ɣh45]6]tDz8(8$pX]G8&paƵ3(nw\ZWTUHjhBWeR]Ng=\u=KGvVkWGIY7d"xMuG[aoC+p9nhp}W4Wyz*BhMeN_iЙOsN'+aMjս7]NF~-7iexܫ~n"W5xdaၛpA_4d>Q	D639<'܇1`\A/)-
d@(؁mVfҪ`0v|&la $Tp+t^P,LL,&3
"/2|WxsL ߐdי|G*o28q!c2-&?aSCa<#c3tߖ('+gC&`KgqxP6j8KXjrjH͝*a'){g<v{B+^DnARkk'`soEC,r^z|%"בX@*c%֓!Q<Jdk.YoNt#{
V?vWuU mL㥟L=%+$U`>P<낯OH
Wh_#=KLcXZKKx9 e#W%_)oH iYC`#c3bUayx*܌%8<gHXo9w
V/36oRc>I%<c>W^u󵷼i'zn6Nt+X-{WYbeGneL%Xv0(0 a)lVB+XOL\%v]q;myion	x/TvZ]
ZЍwP}{\&߀-
y냌8^> jlc
meU8uϺ;ΗλZ쒎X{8xJ鼁=83򮈢ß/}sxt劧A PK3&  m  PK  C:U            0   org/bouncycastle/asn1/pkcs/RC2CBCParameter.classT[OQN[vY,(
ȥ\[ "*ӄM].[l}G曯%jlbQgvK*0g;+a,xp±I^[Xy>TZ=nZ=I$}}iNPO+gVpo/6=c
;'HR|hQۆmdF6gf,?}H[{L6]Z7)=goQ=g
FgY̺e$@&+y16aF LS
nΚVZbܲzp$>4;WZ'i*|f*%-xYNz8A;,fm6("RKpU5	
Kh$Y O*ΌFf5m~$*-Y<vn\
nCS+uQ䩜#;njUR&LSЂnuQpBcSFRD}
P9fQP B`ъlFda}0(C2:p6c2:qOFFe>Ugijm=Ly(D S?jD6'/y-B׎kZ>QB)Y$+eZ1M`\+s%RL;_Uky/m]'<U2/rY4"Cxrrms>ʟCHItW[*'KR}wT<;9U4+;1t|i4ѺRUg=FM>qSEtxON!~YPK-   V  PK  C:U            0   org/bouncycastle/asn1/pkcs/RSAESOAEPparams.classVSU-	lBKkKCִ-	fY6i闾8>>2EK:Rc=wms=s{g_}	\
ƙh޼ʤbnǡRM92&.̤2Ӣ4g,aVgb̵D*Lp8ZeDl/Rbb"FY,.F>MhhVAWs:i*nmTTi4+קT%NryMUlѮr$TP]ͦd-aqZ}q=+Mcx=i+u򪢯*exjM#G"qP5Z)v잢m2)+
Z-lL"mCEs,"JXYyP)oߝ[NSw@Sh}͉D08v'[%θr^Li9FUV<KegRm_WRPyIII16rны9&ȿzޢjm[
zN;4Y2Mo7xqG/>y$S<qC3';D9pN.=΅.\ziQiv*DuOD5\<ջ8
JqQlA'9ט-jsA.4;ýlÕZQ6M.}.pp:q! .g 08Ġ h,^t]E؏Kp
c>D ݘdp͏ga0  `BH@!%`4Ţ1|,n
SuIB$}tm6wG8Ǒ_7bo=ftW0=2lr
M:"p4Tڂ$VA'=C1U'/COy1pޢ<{۰ǭp6O0F'Tz?>}3u]@O]_@W߾l6Q<<yaHggShj-$YC?auV}Mz|ynҦ毜 
2
iwšp^+[jes
tYj`,.ig8#GhI߅
Χ{?BT
FӞ_|eiPK1=P  ~  PK  C:U            .   org/bouncycastle/asn1/pkcs/RSAPrivateKey.class͖SWǿM65`U"ƨX+V+Jlٍ
B?t}Nes@bvR>~9ܻp_qP@c7UDb)ͧpOӬNk>=mhnBBζh0>"564\()<L2e]tQ;]05D%
cZQϫgΓ)47o	%mF͏ڎ4,V-UL.;ΫqS2ir2N.hz-,eUw&~Ȥ,W莀t5xҢ5ZS-}6k;]EMͻWV">4~14;NUĦݛVnS.-=!^j&{O^^Տi!K"vgtÔ5mSs^sl[61Ogqc<;}ñLiۉq^蜾(""b"xXDTD"c^kQXgwdN]
cXA~vn]W)#~{Hb-rJiWhvоtm#淪DbnˆFm5^k8̽%ߏT7w܆l 1$ƃF؇GeDf4x 5x'x0Nʐ-6F;b(edl2Dfy1$gCS)0c1ʸc\Џ		ø$$e*.K8)4##7:-Qg1&3^`x3fcq>4.67;n
;BHhjҨ]1xvgx6YɳARCȶIT7
)W*>^qy/iQ~MXRm
*^_GK91@-oq32S3
^U"%
J_r_DEdHSi.bVE)`ƭ^⻔}xmTm$./@WKoвa-*%m\ktF[5zFh'nb[qVz$b@QqF|E;pҫE;YnS=(Umκ^m|\=[|wݽxsk8<MZAao
I
1_xZ~X-?UjVY	;%c}+xsE
B_SPKR&    PK  C:U            7   org/bouncycastle/asn1/pkcs/RSAPrivateKeyStructure.classVsemvt۴/)[J(*-"ڂEEm4
ɦ4
*7f|r|(I(8>#l&M*3؇9s4O u'taվ`C9<)2q
 pI4ztUK@63
R8#?$Y]#!Rf=ѠC
d4ID"Cʤm>:zZS-29'%:UjShfcr46n6DvO!=$͸jHG5F>20>L)bDm7.ZѨQHӪrv4lu#/GZ\@kΓ?`P/"NޥЦ-If<5RJu+Q-DgTrlаSh~caLRˍYc&Ԅp=#Z(Z8Mk\4Lzژ
yV+݃X-:OQaeG!`CҘ0̳ث10K*lLٸiD6q/ONh)hQ}"YODYD5O*ָ-`3%YWY[fߗ̭VfXW_ޝWiBZSϷµ66Wf;έ0n嚝fR+U>D"Z؞ɕ]2哬G*ｭ|wkmIN~	
:21l>	Z	wZQ%܏ZG%4᠄fk1x3l`p␄5Jp0#1$a2CN0<bxIO1<]؉1pAcHЍ.d{qaʅHhaAg80ed0,؍gTZ,LsaRԉA%v?h=cƅ*iU<fK-;mՖ
ldK F
AZ^ENpĵ9CBpɿoNH{}#{tn;Gk$-B/eR/L5|E@B3Q|9d!+rurG-i\;Ә=4.ʞ4.ɞ41ǙFFs:hWjԐcjGon^hu\C]5-Uܬb3x#K\gJ~+KxgfѴ[Xx'Wn=4?q"_$ϰFE2s{}YS=Sp-Xp+Tp7u+[ʺMeݩWZo=╁y+]^>%t~RL?*<Dw#wFpE%_PKpT    PK  C:U            -   org/bouncycastle/asn1/pkcs/RSAPublicKey.classU]sV=Jl( @HEiCI(Mm]iZOYY2̄>/3N~?$)3ajϜ{v+"am.ⶄ؊9NtS<n	󝸑&YɬׅGc^30#A!kݯV326*qt6yUq+S=.=4kzw]ajnȗ۱D=p|O¹}R)h8rܪhH=qGa
3kCyb'ȹQ[2+-{9fԀOgs^ l̉SJkmsfYMc){W<p	Tsbés02NH8)㴌32&dqNy	g53x`9v3\a6Q}Qڞw^{GLa{Oj{8d/AqV8E\=53a,\efB=y `Ad$l&iۢ'Č7_0}/oU1UL2!I3$T¬؜S1]
8C*pElL~C(bxaipCE`+V>RM6CᮂKL~
3\Ƈ
%]cÐg7WA~~NznַJї$&U:$|KD F=|.Ôaz?#"E]$؄	9EIgô>׳ϰ?CǰKS0L̶EtqtSR~[m:7\im|VG:dddRiqqZӤ6"!$	=k].fzf6>확r97Q&PK;,  .  PK  C:U            0   org/bouncycastle/asn1/pkcs/RSASSAPSSparams.classVSg-DP+
Z%1]P!P6bm钬f[{CоiPqLk_ڙIS{j;s9wW u5	3QӰ39eG@OФ4
òrqrFBmLCgcr 6RrORc1J]OfJf]ԴlꉤaOTJ٪(̠f=EmPG#E5f4qXC	&UԒfƲqLS'3W1eH ɸ~}9gqͲQm6m"I7H[Q5eOMY]>Y	uh"N8-?RlM׈\-4ErkN9&Qt-TMɾ@IΓ%yHrQ͍,0;MF/)E\e\YQQEUj<UrA;O
^Z~qv_o'I#n͸':6mXyVM^
"v-I{E4hO~/8 ⠈Vmʰ玝%jC.=(myN/!Ӿ^C_ێfevTxꆈl|xCq϶)B{<okD]k9j	t)̑˅o6\P	=jF*#p-WvʜKJ۸θQahg؉n42q΍jF
Ë/146.Mnn@[Fy0!، 0H
r
NR
NcxaAa3a`")	d$t-(4Ì#xSQc0%z]	ND	=P1/_V3l
Qe!+H#tdMNJZGJ4!$
ߡ K?P>>%a"tԓ.:~2sox"ysX q})ew\+v9x:ةUI]$}^ʳW^Gp,Ա[?pZIwmt[v6E\DW^_XGb/1ۋ[/Uo*)ԩՏ"E<Bct=DC6}q!-$?c~)W-Ey6
9s5S+x7^acx1c,^EgDfB]ߣ}'#J+x`Maགמ*Xm:*ZWq"Ҟ'k=W#ljj**z"w+/!*"
{Q?PKMse  
  PK  C:U            (   org/bouncycastle/asn1/pkcs/SafeBag.classTmSQ~\C,XP"LPo*Lh&ƾT.4ι>/_ak63XRJR>ϡ?+ZQ5UrS|Z*dYF9KˢxJE.6rN+:JQ\)Z)6'UբH8܈r弔-i+ݱmr,H</TeKdM:NvBAηuQ85
rݝ\5d(=jIyQQ^+'1<<x\qencC	>jb豵oО[=gzLr.5l3ԯ!eΞ6OlK{R(
af\߶|s iNc\`s`fDմ \a9f1yfܸ{n.3y(ŒcXt;'U).t´jw"Lv"/&>bh"GC>u@O]t#f
|ોˈDk=6ȲyKĤ6 Y۠M[6';>#ZGYXxx'K4Zg"'DƉ0١.0ӡk"dS4sጣDi`5XfeM<#8D(l	6x:to?7PK
h    PK  C:U            +   org/bouncycastle/asn1/pkcs/SignedData.classV[SV
Y	R )`$:B15
Y,Ҧi//d`ZfZgڦ{$mH{׳u\C wKg8qv)MݹMR9tv9]5!XNܜV
VtMM;fٺ3D"^SQ:U!g䠛s$9"DҸvdSQ9t?*!kj3$('[pZӺeRy9=fjP(!9jȦƠe2ˎkVJ8njCH6&F4f-{!S]u(-[ZSyiPr&ƻcbYCR,Ti,jcaW
C&l}IwbsaTB}QV_*PT~a_./*a*7Sd@#IR0Ԉ3WXG[X޸pɘltdqE62j#-Ŋ7<xͣy\2FM<y\.'H?EPl@!Ak;ثǥ?"Df9oG׉Z(C;F3SʯA%y
,RbU*|UnOA9-V9ȁ7#OojdX%8ܜR>-"*0 "ĈH#QexAv*nhv@D9E`Ha&a$L{OD5Fcd}IFL1)#:>gKFf$% Fʹ
#@2szp[pIFa+Eg,SlDnpx.aS\^C>os@j'O 9P.oCz%m<
n
Rs+\	Cy扷JYdMKX"XꃛХM,He0/jo,%;2&u9u_3e9pXg<kP#7^[\`:{u43H2ۂz-,gaq2_?~כF<x\+P
|	Cj,RWoB<z1<꥜l^k=>WS˫6r0>ODUeYG;X[p_qj;vp3[{=y<93F#%F PK-    PK  C:U            +   org/bouncycastle/asn1/pkcs/SignerInfo.classV[WWXEHb@"%(muHa$dAz_+]!K33	 ke}3_;c6ĸウk%Ҫ,Ӊٯ)[ZRX*bY6XVґL05kjF>zҜ4C_chd4Z
[Oƫ5Kl3ϚpʊٸOt}RI& 3#z*LM͌f&)@$Ө:C wY:9螓1ffjwJ͎&fܢUNxWSUO݆jbK0|٭
hZ9%T2)Ŷ,-T 
:[nO9=9TVլG{hFJȰ1dPvolLXgmƔJ>
{9fԑj 
r~[MYxeP֍,ghlgSvWN'amĵ̘>i8U>.?Xfoe4樋z(5yo>6M&UmZ朥qP!E*MD"8.℈":DDE(
oH:\![ iYq}%5lr{ڤْ
r7-Z4UFP~v%02Ԗ:
V={UͶU7yvUc:KsSumN{UYPKߠrlܨOz9
o>k(Ӻ#ym"#FSwB6nfl58&#\Q2Bʐ8CO.\<^/1{q]aNF8yE;2vcW9y[;LHƔܕp ɉɬ^0N2qC%)a $\."f$\BVx˰s]5R+nu6O> jPb4.\fh![@H@$GpYyE+O0D|"W0 VГXD4HYxe|X{P?ѝ4_}vM@RħJg9y%T++`A(`NtKnO<J2>Q~w;-<W<tIR8h)Ѫ1k`Ф\rs*o,b9#f&;8 ߿OĠ>gEZA>}uM'|rKn͈W0ϗ2nU0/
%snT0ϕ̍J斊%s'nj^AoI,N2>{>'vbKE|s8
.$:b<"z; PK5N    PK
    D:U            "   org/bouncycastle/asn1/rosstandart/PK  C:U            D   org/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers.classRPO,T

(*P^
I!_(RE@%ihmQeYftFg\p.1-v;?}$iCCC'Ys]=.02\dpOB 2*AR$4*Q+TiLB3iBE|,&j1^J4J	U̪Vg
xuDؔYۛ4U3p̼gDFεxs4e\WT]'K=/_Q7$t(R;m塙ak_/L8Vٻ"K RhuZQz9l/sV=?Vٶm5̶erLc7Wd(r*T#Y!l˕0S?ep+e	ALq=FI	I{&O=[on0@$DCaa0Fd8A!A#		B0I"Ռ		ww	ECaBH`gKYɿ_NU	:&4!4)t@ЈBBeBC\% MPN;a#X`-E-ȶp'{ۗdܾ"&˸&zb
!nS$lN5*0hl$m} PK	/d    PK
    D:U               org/bouncycastle/asn1/sec/PK  C:U            ,   org/bouncycastle/asn1/sec/ECPrivateKey.classVWW-º<
UT%"lj`P}9wsĖG=A9sݙ͝ ;	pwW\yU!6
'<<m9$4𞀑NKh7
킕tl1ycABӔ匚vƙЖ1Q0/ּ/Y	[=Rtqꆙr$l {.82)i#g Cjh	{HP*Ef%<o7fLSkrPsSy(lǼ[I˛9cv
cވt$fe͘y"+s3fpM-ao.LB(8Y3bXr&egjv*6T:PWc묎0]S.VW
WL`Ou܄yktxu>cQ=x6~iM*	
¬
Y%ćּn<mΠ	[INˡ A`Ngvt
+OK`@.Cuﲞ
w͘5LcDme֥ēwT]πS+G\+(Z.2L_Jк|.]s7ɮr$É*ժ!WhUuT>@E}o8mO
\7W詣)-T(hPсY
؎FM*v4φT4#bΪh9*^Y$TἊm,6cDEFU؈x6b	Q\V*8,
=T^Sp/8
"⦂x] TpBfaȲY<cog8_97Stip$
ţY͈Y&m+i
4*z	zϘD/إGt
K.#N	.IKnoIt44W0L(?JOzJȋ+9C&5f{ዱeIK(ʚI"VN$Jx}IM.
=g2بH%|>I2iTl{g|&WZ2d|uI0zS9iA&?@;N& }ɷ}#Z%N4<@T8(a@pOOFM	ro2"IpMC>^k(L?YAF+e\L^Et|_/ȗk D8WX/R"+	+8q5yA-Q;ؾh"ޥBт"[G:WC/4
n	Ӑ'gD</PKم:    PK  C:U            5   org/bouncycastle/asn1/sec/ECPrivateKeyStructure.classVSWlrɲbEH$D
J֖@ZT6R.۰l`aʟo}32ӡ/>t'ujI6Adsιܽ 0OA :ɥ|@-xȰ/,XQxFf=fS̥=96!{(I	hu]ZD'nZg+К$H7](=钭]Y-VL
0WRpz,ϖ\.Ȣtxmﺹe&Lɼt.$N(]ӳKȟ<k%7\-Uk2^A&Ͳ3\IނNDTڱJ9s ZK]kl+18[(jk܂ܬHǢoezxt!5쀳E9L<WV2=5['UbyW^녃	&W)J-)	/p^EK>P@UknІ̼{PFfj]Y0|^7Gz"g^h577҈yPAk		fWנm9q#46xkU[pruC~wuoCOʢyLũ]Y,:>(:q=P,:uD0Cǧ:\G&y6bJG7uDY414cŒ$5C
#Y<0,__io4EYf񭆏ЅfX<BMrtٵiJ>^ZL٬墟Vߤw4.0a|ArsQ3X5b/PÇqL!q~Cqv`%jUl5ҍ=&K4v1}
	9qN#XF:o5zs;~\]j:b֒UP&y	oBH`\$%m+4P=WكUcn/Kh§aPo@bڇ H};̟_!+H$"7zc\O>>F'f%

v~~,YCt
F:LJ<PKf"  w	  PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$1.classTmoV~ܦ1ހhJ4Nֲnseq.!(8v_m_h4ii'5@YϿ~@

4)X¢^ Ag,Y,pu<vLtmgmrVXmϵZs	l;C+b۝ ugEڌI>-t8r7MYeIX3LẁZ r,޲xNb~wp:׍:C'	j$"kL|[J|av$$\<~(DK""&gR;9Z_G2.pbPq60$΋0<5\$}P6h`|÷kٜ;Mq?-i٫a<:,#Cek$GP{&cEg2>q]2ikGq:0ʉ ެoKXӷAl	k`YI+H0\QA4+?<L0$(L/gq5\ACUlhV)nkC%0
U%*EKMx*VURQQb
ߨu8pUQQV	x9Me_}yTd(s-"-J%%ڗM|ۧ(Xݪ.M]Z!_]$yP]&UQ'vk
G͕Rt~=庌S.Vh_J7o|iE_SU=ZUԦZ87PK=S    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$10.classV}sD^pP*"U"UoI%@/HrEf9r]@VcG>Ou*wŝg>l߿`"P𞆓NipZØ3>pAPyj]aqS7lQ$nAcD'^^
|[wLKujTA5ݴ,0zH\$NMݚi
LJUsIH"g{fZ>
A^0ͪS-a'H=˲^dFz4#3w!K&1:1#N"a!űj0tt# ,0(#7	MΨǵh6%KL
Fn%[uExD&XXAa#8k_02a&G6eN`t"۬Tt2 ¡X)ںKn[V9DtAyӊSm˺n2;
LXH홟SVy҇oks1If.;$9-QaDt.} geI.G?s+ߟ!7ۭ<7yV2I7eI*N U Q"ەKw?qbǭt.)k=aư*>SqIŤU|Ⲋ)
.k4{K6+kig+\X̞sA{˷fCvI'SY	6owQT:vGqp?(q(bN%|G99ZvcjpJx'2	KJJK8/KW/#~Fa (
ndV,ed9#+E|]o",_Y,"lAq[~v,SA["}ؖ$ź]ѕt!9eP$wZJLoo9qm
'ŘX[>|2vL*EnJc8:9;Rʕj\krII9?=6~م՘/`|d~<2'3)4ٱ|1;7?66z[!T$rI
-쁉pPKc *S  
  PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$11.classTkoG=8Y.O c}+; N
|ڮʬMJUXE菪z׉TT⪣;s{c_cZ
r
kA
JXlKT.,5P=BpZ!5<g隦3V}S2e2Fh,u?L2\>[&7lqlCUq	wؑ`K'\\ca*Boз[`%#PZ·4ƹ8Y{L8Cu-<Jx}2WY]Cu$,?I8NImE/qDEfG'wQL$%I<'l$7~8P+r0'dct)/"H54%b(QjJʣ;)mjTl+G	ٜ;M+~Zxuiqa1)IZ6˕䕄Q4:L>bOϫ/zގtWτvoV׷%y!9[B,%Ƭ$ lO9Wԧs叇iA?C>.̶>_|iqPclq
:&u|;u\Ru4`L-2VURܕф#c
_˸
.cf),-h׊GKA9~RK$FQ'9T⺍r,Ҥ!*Ѻq)px5,Ӫ7'X"X yШܪZz֓NwsT9\WyʥQ
k	zw
֞t7qf9⾀o$${4diNOjԂu\PK3KT  h  PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$12.classVrF>JH1.4פŹjJbB	Mqhi:cd) 2P̐;9;eG_z
 "
gY0jy7>`4ԼԴeFsYâvC8H!j;ϘNs݊gYĈcy>lD7.z>Ur±bpl;rR6aӣ̲cxUl
ExԮ".FUr(4j؂K0̲48r"JF0&,";FA:SYǖ f$ܰLf!BI$,p0j	LT?AǪ1<j0Q&aDFJԤqmaҰX!6ncBXJ
nu}nֳJzL
WE&)Rg#
r5
"eSDQaL3a[DzO;ѮvGcvGGըT3lk5D֥LkH*/bGQZKVzCI,:1.wdX^UIqdfO
-9]~;w"oY%ŷYU*
Zq'qh'us8H1)ꋒq*\޸tdh?in'|*CнttBK:uRtCIif4kQz"*'xkq)}],M(Ua'B{Yd6KS;:v(g'!?)zWj1҃ތ}̧fwj8̓ۧnNoCxΤ)gPTb>k0_#*pSᥢ:&y7Sq;eXNJ*V<`6r+Kyn;"2;aQ~E&Z8m):QtHנUPj:4 9_Ybld6_8wc2,j0Wjc.˶[63c.3ruC~
s>۞הy~Z6;7?É=A-ՃZU%9Ni3/276߯Ͻ.lvC=,(j.?PKlKm  Q
  PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$13.classT[oG6qb\JI8Ď2{MhLp*ʬMJ_b??c(q+4gw.c_' T*P
|P

~-nh&LeC҅:qC0CN		ta-;|c	N,+|qrj.Ӆ
ǔtخCas;q
a+k!0HR)
m{CcP1P]8dnh:E,$|GAY~H]qW|zܐ5K0u=.uVLE8%Dk>,Af
YiY
C?GNSO?P ~RFneu06¸M(az+|b=eiڋ^(O\qFϣn>JT
$|bcti/F$1JäK7aEYbhYqv 3&\2ik^h 
g_>go79'rw4tr~ҕ,i߫ԋ۸yuZM3m7~|
X)2>+2(2*ㆂkd(kŕ$3{hvfM}[J޹g-6H$>}[	ۘUyƻ)tYuwAK!if{AN'OPQclTq
*k+Ы(fTbPۅ_Qqu8rU4	ܗ(ēp[ُ|z$N0ʲ8.nEdPpO~]"c'>*XY[n$~mAZIꭒ:Ʒ[KoxjoVJ#muS.C&-}8^g5~A`I{%ZOpB*uG''9u\ PK2o    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$14.classU]oG=81nROJ|᝙ݝmBP		xa,ƕ+{վH}cTY'(Hsg3sGkoSBr	KN	:/s)%VFϸ0!ќQWEXP*.C)|sWPߣ	wiL(}@3{aS*, <2
b?F0THS#QQ!62R
*pmE
nW{-]\fouzlA]1K(K D+dΙHi<
#4VPf7¸~ILlzP"]bJ~#"f4UƖ(><`^$H1N(QnR>\m4jֶ#gMqjxY6j*A9ifOqȫ͝Ad.{&i^wAY|;tq;oRCr4&ٓFioA}nH=]wmƽM2)F<d;ib&Dn#%^ÏT2>=6H-믡NAO<.bOkԛv^?I0tp
so<[&lEơOqEvʉ>h\].eI'`߅чa2>XW9+x\JWs9V+ 7+FVP47ec=7UF
|Q
xe,"
/2;(h
8`znh_e'͞Ovt7!\uӖ],:noYjVgݩN[[-X^(_Y]+u	ep`ׅϡwVX_":>oF$6HmtR-XPK+  X  PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$15.classU[oG>Nl[Jss$4L@%$Ti,&+{C{PQ:)CG3{f; N
j58Qz
N֠Q8^Oq9V<vࠉ6dyoHj$VkK1*˔0s5{'bC6b\4(ES(qHрP)7c%TVf*H
OQÝ*JwLoVb1U!x2BCPlFyRwVKn#	0Ո`9AeGXJSkf{)}kǩDkRO)S:0-;M@+[R!ĸSˈ)*pƘRGIBaiM$EJ/<v#H
L9u)a$0ICC
ily";89!Ō1(5Y}*/9Y<Ӈ({h@c7wh[D|//A-jwx|5YQV<ؽ֠{r{8u?vq;x;۹x+^<+yW7ڻY9O"~UQܗ^iոjwAѸ?I8Ta
W*|Xq>ε'g^,ɠx&p=-	,oro91%ݚ[4M)gDtsýA|Yzߖ94-6]Xj9Xn|
+
x54tpPK0)
EPukY/:@2|V+pDidڰQEoo S~Ǳ*;ypz|xE+P!L8-=Pw`>ΤY9/ǣi&lvR?CBea6|uVp^z
ng9w s|weu)|	ɥhӌ+N-*PK	&	  0	  PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$16.classToF~&uje:o-s^2		!~02f_h4JFt{{=ǟAb `^<pnkS'pBj^@]IT =M\ (yk 5<j١]bаBk&qò@#!!]Kw
;gfO34hP属vlױlҸa^3JF..ԏHQ<o67
4.
g'LҙmEG`Y.@8E6"HGqfuv\>{N"(*^hO
6,J
gqGy1fj'X}HCqPqBotKOΣlΈKU%7WU4hp^wCvu7߁ʒYēh|<l̉L-*⚈/D\pYٯ<Z^N2<\Q:-:?6cs8=
9lmZ T>L9Sg ׿?Uo(4K3d_>;dX)d,c]R|
pGPe\0$܄+J]	mxV+6L	KHPpWBZ{iӜ_+^e8spտ0'O'\\NA 5s탿\K?,-m
;lqUkΗ|6[Vp	5yΧq+W6	Xy
_wv|T$=j۰PKax#    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$17.classTmoT~&uVBc|%n_iF!Ms2|Y#&QcXWss{^ǟ@ab"`^<p1gZw
s
`؁g]r}
̀tHK.AutB{Kәc:5=BzLݲ--l=00-cf`چ븎P4d=AAM0Yetaw=.8yަ6F4
d\ҹuEǼY.@8E6yϣH3:?Z.eNH=;KfC$s5My>#qPqѥBiu:~Ct\er
|xyiWUru FycN"hD
7E|*▀kAUqղ9pp]L{tl=
	6-ȷE*列og ׿ȿSo(4K3D_}vȐ CXƺk2>}CqL-Ŗ;IRbWBI]*RX<Ё!w/j4E:$<QU<M
_+@/]ЛO\qwiASZsTeܞP޸٪ꭅ3OrFl5+W7	ܣXy
_W]4iW;
**_PK%    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$18.classTmoF~ܝp
+Тp!`ߝg7P)*׷W]|sPUu媮3;<3k D		S˺AH{:fGN>q\/E8>oo9Vh[]	y$$L3ďGLtL}"'v"]'kF|7$'~LlgsBB\'XE$1ċCOju߉\F&{v5ntdjUG4hYYmƅiE
X<EzD+ZF=*Y}ZEiV
Ύ壢Gw$ՎyEܭ8~ҲR--s4ӞC7Œ
m֤WGo9#ro4Tr*F#nҞ\;j0hΛ[}%@<Iы:ƜOE\k"!sWԃIiPUs0Zc36֦|Dpș~3Ci Xo}6a3p/y
4|5KXWp/2(,p)c[bm2V+6,ppe+[@-b_q
G%CZ؋紈iY:u{7̳(B}Ĵt}/@9oB%S]Z6ƽzSќJ\1ܒ@}v˵Vh-{c?nb<4l`Yc`5Í7Xy_{v|&An1yfyړudaOPK]=    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$19.classTmoF~6;;-(WEB|yoIHkH 		r}q'NJ?_ȩHQUNr>;̬o x<x<.Kˊ㸪ځ~lf؁ږiVC\4]W\'&H70X]SU/L-tT}_,Q,É+t,5dЍ4#75Cl1a8xA*:^{ZYئmzڑNfrUkGB(mCiN	%X<'yrDKb>}Rôd-$-9_YgG壼Ow$YI[q&E9rRd\T~Y~%]U]Wo9#ro<+шtX~v\G2ͪ慼G_p'>z٘):>pu78|NpE:<J\]N6=	Ji&H߻ΎNCn[F}b!gìd٘^VOП=!%Xº+".㎈!E"
UBG-lUb;p`WmVaU ᮀLF|QCZًe4FIQ
udAp.1Mn"4!,0]O;ͻEjFZJqK9[HϮ]qivZßbomlV1Xi7'?X{p=?
VmlnWlώAl[#PKƂ<    PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$2.classUmoT~&2V0F:ic̯#m&Mld/lde+FLI%& ,s9y t\ 
(@.U̘fi[e}2/92]>s=#Cԝ `fz
@7#öoVF}3t}3Fفe8Xt܆JxVK|X!jLԷ]q#Y1v{;<^dRFh6L/te%'IZmߊŤH*OӔm\*-J0Maz*IEQZ8Pkd]!>gqTƣJGY΋}~%?'qYMR%.3U)DGq8㢠embsG	WkYOfx
?+?]P'xYڢTxr?ib5xlG<'<>qUy0$FJ}4h,
}۴m	]2S.DqVOː/+[uHxѓp;3|!0	JMBƮMܮŗ#Dl+2LصpDtqW6lt8\
dt*i4teiOLK0gdZ]=׿o#}Dkm
oj<l5HVI6qs
w݇۽Fq{SC9gS)l77Kl=^H6Ih#P:PKc:    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$20.classSmOP~
:J1A딽ڮʛn]1ně6iX$&ܞs;*a2N$ĂxuIbN,W$UT&ZRT545WbT*\ETR$kjA]բ"TU-RYKV|Yӊ弔$JeˊRT5Ahe
I8^7'NJ~;ˎ9u]C9O
Rc5l MUCZ6u0(:^?Յc=M/:1
Aw̜uaOUvD*ARGYx%eϭP^ q>1v!,,`1.DrV/ͥڀ:lrml
{2*7ST Dt}eD6I@}SMa-,=<qqa<1<8,yg#agD8	Y9!aid8,@bP=1լ-mGViu1D3a$6kN`+_}@ [$pgZ6"r렰m(tP\a'0,LNbX(X`Ks,":Cy;꠴sكL6s5ګsݫCxL{bhG)2g4y"PKX    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$21.classTnFl֎qKhlw=6$ !E\Yx%I?dU>@؉TTUGs||ˌ? A Q%rCO5)$ل:]GSuzTS5lJjSLP!ԲZ:CM۵-SUM
ȍ<XZF~hDDEUfؚA{ʂS
O1܈ZčZYjD]1X&#2uiCt79Ⱥ9f8>q53ڎM,(PY94ٰacb$iQtTU6ʸi\I~rX:y|i^pi2O|?HK"NqA㼟2iK2Tny'YS(U"Ӕ"M"k.tmVhG8NG74.fcFxTWr|]K#/|ҩ;r8RҬjn^(+i<:IX)<<>qMx|ᚼ_wyg:l}.u?[m36;zӒ|_aʙ~;Ѵ0+wkIqg}u$HhJ=	Xp_`]Uܗ1	JXVJ"JlUb[DT
vD܃)bv%2p9̒Ѹ`Gp/}eY(*W
l!4B5/!bi
~n>Xj,v՘ͅ|-R2nO7o]m6ΰ;wxf+	{&`k|fv|$wg<zE`-YGXPK?S    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$22.classToDM3
X؆.ݒ4ž+gvҤq,(u$-_ֈIQsZf,{>?!QcIbs$R5U⨖g3ИKtQ
BC˶tըj~	˃:4,+TFSMg&P
<6]V઎Cifkfoc&!`*KzHm#MJM{-BW\jj;tXr!= EqyA6hi\$*v&ϭ,:N$$E6$b	r$'ܻCt)QRH=4)b(Q%Obii,tc^hRf_97N&9'ro<2s	?e u]Ñes\K^	OIEcA5E|,ↈODqKˣ((夃sOv`V4ۏ޹nB7ug
CΕ9ͪ鏇ic6-_)ZK^He4БZ=26e|d| pv)RlIX%v$@%C/!>%< 3+i<
_4M26<ɡX߰'/jkj)]lr
~ީ=\.fEV!LUk,J\ŧݼuZYm֚b~p"Fe/|
=m^#8w~| w|g{֦;uޑu\_PKfhס:    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$23.classUmoT~&Mڅ26`kfҤ18n:RZ1	(uZ,Ks篿_GzWP븪`^<U`	|Aih{H  C]f/DA@0d1LDEly.qèROض0WphGBCO rY$\qa%wMǢf19\1n0}âdLX< "TFhjB7q8v.wQ%T0'$>2,APNPG
8I<o>6țYWq);
έq|8Wɨ>)ƃ~ZaziǽTzOb(.^͊_Ѹ?:Β8/4џpv 3&\2жi)X~pd]~=9;oPOr\M_*a\
pV
p[5|Rç
k{)㬯;C7޴o+hi.[a3G[֦yYB{7LYhZ]h;۝ߏ?C% k
,c
|
E
,`;TV)K
_
[*RP@^l&{<K\~Z}Ͳt̆q9uo[K5kL  W⃦r/sRnU.>Zx
[JZ8/ؼ $"Jz+fk<x/마Մ䮔{r5=٩9=\PKCli    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$24.classU]oE=8PZjǌ7I$%I*UٸFZnBWDTBDE]jJsΝssg=_`j
.PኁcOw<KN(eK-?:݀m(cs"w}?psn+:Z{^Ilw-:!(*'dd^`9^ d=K3[HaDiKݱ_|_Nq=Ƕ]+2$|#ɵ,GZEBhsȀ{B):D\v|.eqn`f:2P$Z	}b+Q:$g_ǣ(ɓQfqt|%|82P+fAB<fy+g~?<N?u,$f̒X}MW',xu1"Rɭ7**CݭwAZq~vfev@$'q\*WPUܨfTkݲ˃8᤽gi^o/÷Rڄ!tk	2ȷUM9ѮN@4?9GI`I
4Vj
xf`
́`0vѩ6
Y:ZXă:©c	06ױv+{:^?}H
,K20[hP0ޮ7OBR*w@+U57{9u/ٍJRqo̼B鍛酙SlBNt3쮼[kVӵFz<*IݥѤH\Q.PKFd7h    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$25.classTN@*tUaEtJXTzU?R5K/O.D\$sfΜos|+ g0 T0x')luf^#GdÓeSbZTa˚婒؆g:58ZvİtO<UUMMY7cXeXJ6!y5u阦jYQ-Q4׳kx[a+Kx6܆h7A_9șs~;n`=c;H8fіHA!lotu~RZ0
ٲME66$mDLصWi2/,&{SõW_ jwwT2\ێ$ÔNϱLܹ-vok[yt[",FYc1<Ɩ{BPIX:26My<]MM	tm?lӸ6玬NW֍>zu[f?~̪<Q@ xMÙ)3xp3ns(Q3qq9L@pRfdGaqF;JhAl$	HfhՁCg#td蘟c @հ>Kw>X1;+l~3wn_\-J}̿?`;*<	wWf>~Lu,=n=CpZ"]ډl'PK  x  PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$26.classUoD~&Mֆ26֥[Ҧ϶lMu&M?eA#n|*g%˶ Ns; XVG۝v	,˰ |JuO\2f:F$tfr;pKܮwmruP--B}31gP.M2O];ZNljk<0M-8RX;,d"$a!e{Q,nDPi%m#0]Ή-fh4 (Fħv鰸+#	rID^,?N	g("r	J?Q
BIᏟEq1$Klk '»CtGQ\eA/-An8%j'(EKݜ-	g_7n^֜ȽhZ7ӪD^w}8ހÑes\K^HD*B
pOjRCOkZ5	.tv:O+Hhߺ)nBnۘ2S9fôߵ{oy8Osd_>e
dTR|
@`R
MuX2n)[mkeĮt0Jaʸ!n/{	4sq /^&?<AWk-,)R="$tuS@=_f?GaCvP*>W국fYm.O/|<[EFe6^»m,N+|D(fy
v})
!lt.ڰ7PK	^    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$27.classTn@L:5RpW|7@ !ä&dxA+x ^7@J HKvfgofv5 5,PBÐ4u9♮m[cccۮi[ڞVW5jiY暆aFY*Rko)TEWlǷtCU\i``z
4ep-3b;j뮭(~Ͳ]B;jgרΡȿA0M+DP5L Fr8ԳIfaf,~48Pʭ6߮&k!N6y=Ȟ^ea+?%?7ffPHӰ)
XrQAp?#?p|kNnWTXYeD;w={2J͠>+xq#<88Kyqij7WYoBWk`R/]'Z,iG]+hH(յwq;ʈؿ?=/)~J%co꾈*"1$ .82.$bS"L؏7ኀSF-F.Lg8[$dBp4`Q a<^ .FQNa
h&0D:Hs[7,!]'m^ gE\a|68ßqSr\,omc\ޡY9ni#-ώs۸gVg?£lz/t.i
Ztr)QlPKؕ  {  PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$28.classTnF=CvqK |;;.iT BT,[mlvB<	D PUǻ`Hsg3;~' PJ0/>&kMMa黾oyn;0p
ӣz6(K1]Ӷ71;MŨg16oKв9u=I={[&r\=rn)MY;0
X^(/QxNYۡԣn[Ln^)
]Sp@:8itNw8*bC(v"r	OE"j7Ėl'sEύVq\Ӭk%?:Q^c#jqx$bg%,mXhS WDMJUI4ɋ()$ITBR^a(Q0ଂ9WpAEF:E}P]ز6Htc$lIGIxTd~P<XYA4J姽[?ԋq䏡XC


%0]:p),jP4KJiVpߨK<ҸT\*n,
Uqx#ti.~\<Ow$3ޏ<aJk]A[fHX]:R̐U XX[%X_Sptkq+*j}kxuDnB>p[z+q{\{-ٛ3z
b@0/m(\:1ܐdS PK_ry    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$29.classTnD=Η7ɒ.iQn|;I{$-R8v+P^'?͊J< o"Q-YHsΙsϽ; l|U\
j
LO1'a3	8tB;~h!%0D칶c@4t|PԵeZB*.btFlza,)PǏf`<H,xD9#5; 	KHx.3)-s}ڦmFLBیPf;+Gǌ<IgZB}ӤV<N,pFoЍc4/1f\N7ɂ+В4͊I1vh\IYRf4Sp}(KGٓrMKdeeVyGǃLF~HN8)_ˬS[A?IQ2#)r(x£G2шK&]ڤѯ㛀Go9!rUr*)Gu7/4Gױ,;(4d_|L⺊UPPe7\oKQ]Nn?g
nz޽uylHtsuK8S ZSN	ݼߵ_V㏓ȟ@0c-uu,Ut|
:6u|t|ʘnp~eliX.v44A5®5܇`&|Wyì|?/~gEVH0-˯E*r];C0ظ>yN3f[sjQig7o]i6jv1\P/`ڄ*}`>3ėknԧ}\xG$w}(g]FVF;5ّU\_PKZ$  3  PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$3.classT}oF~Mkcctot4NelBZ&!!^22{ݎ}
i`j9aʹ9~{9? tp BqNyOD|J4(Z	lmv-ݱ4J58fZG(r,]@kkZ|צեY~7
}ݤt
0pI|k]Րr<E3\y&5hZaكMQBm:kj{vu"X~"$aEwaT$gqQ~.Z?y,/>K>{Xä+i"N,'+h 3c|i[<;J_(GLTWCz#'Z<hk^juc6>B~-[s2Ѥx!vQ]XGpjm^{5p؃V|)+_F	X%&@n$4WfoVwV{l	g7fQ-f%"lɹ>ChV^^~6LK.<s(l3zr応ާG2$2>GKlʸZwh7e\*4u٨p5lWS-	
xH؀]#A&kU (+e/~`4uX䓧{_	_Z'j7ۻW4Ɲ^q&q{{-'R{ctj]TKAk|]1{7[?io.	?Y=Ɏ[87PK_	    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$30.classUnD=nvkhBB?ve$-gmP *Zq6v<
oh"* ׻`b;sshƿo ,<RCULs婂?Ř"fGE/c,r
Q+M

B/#aPssi7$Mg6]aI"وYIox2+ۆcK_$QX\¶A|sL),I='TFoܤyf;xYbmcˎ)M0E`v{T̈(<*n7coxs;L"ãD,IsBdqȆ
j7ƖýfA\hvZ$r
{oôC7΋AҎhID
7(kB&3җu)(ƿH"K"N]>6.ϹL%1:-(&U[EłEXR*SqEGʼJs嬥z3h۔!tc)l97^I1짽3D*)&:?Dus{{r|FJ$WS54tbFP|iH%4uaEUVKӚM|*kJcp4,Xi
$=dd9x)з4AIF4ˣ0CAAhThZ\濸'ܨ.ҝ}>ڪW1	~:e{wNZUh%=^_TNpwn<[oDH=X;' GFihF" PK2D    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$31.classUmoEKؽPZP:&i-qISJRpcK%¿/MD%~ A='u+Nڙgg9@
\`؃V!&Ji!B31g$[\8Jʘ+CTX
MġPa!R	Bc0z'D)cb)H$	CLPHlD#̙"!,(FQǚ252q&BN8b8ab!pbII(!G
8䈪Dit+v
fhm(aIpʵ4:2hx(57L3PLp563=h0$uVHi$s#3F8!if;N~
ْCʆúk?~ q5<3G̃3tfy6zPZQ>rog?K[yAΎ.an]A;kJy7aì<J̞˸?咮M
S2F&b6&DJUh$ 8^nN܃q=>gr>*Õ2,2\-5.7vG]vPZy>+q`q{k؄q8vq$6rNh..wfs|[?NB~^y\f0*`
VW
Ux>`Tu>܀>,&lP2B>܂-nK}\Jzn izt0r´["xY=PK~9罟羾w
w7KB,ι9n=zmc88{><.ZZ]}zmO7_@Vv4GAn8y߭,v*
p.
PK~)"    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$32.classTn5d3B.4m.tcNcCAThtv'ނG~4x 
ٍDIXzڲ_'UBŃS~@!_&G`,yfbULP©2QA86'FH[1a;[FQLHXy	#b
Zh
a%4F!}S%!q*
QdbIMF!JDPA+0kfBA悅Ph\)VY¨Iqm1Qku		Lh$5-(e,&*BX2%XQNmd$TcJŚI|vhw=v;<tNX:,-2}?<y +:Y{/v{P-e.MzeKwv"fi};߷AZ ǭAn=1K7rYƅ6H߉7oV~Xa"Gtl=2{M0ü<mZs弩zskn٘Ѝ)Vt4ﴞugʱ>,]GUsǵkvch7yT+OkPF
ao5-M>eh`Vjj
.Z[/܂a @K& n`	Z,*
604ޞMeޞ< YކIם: qsnXY=]At:{ f%8y6xt/^Wu^=}w<}n|[Wh}~=~
7o\;`Z]pvaّPK<O    PK  C:U            1   org/bouncycastle/asn1/sec/SECNamedCurves$33.classUnW
I1n4PR`P˞k	
P		:KHelv(}>J"PUgHE%W\f7  As	i-?L'bF
1Y.|`TY,
'MbtV#u^Zju9g6(H\jaFcf`$d>([qHr-S
)kŉ&"TK͸48}s/<f!Š$Y"#j!Y.xRd&(VYf>3b9yLJ-Iגfr̛iA|TA);c+Fb2wl-J;0H;kQeIԂѠYxȸ5h#J&Iʍ\pI6,fGd#8*l-.:*nHLKK$	nbfvF7F,zaׂ`hgP	_}UghlV`4]\I	Ԫվi5?*qwy~VFoTnWۭ`]SGݲ]{=,;C[c.t:)yWG_)XcUFp4Xz;^}|@~Jd
R8),I
gR88ݢݮ^_~7tky'غγU409nn"SN	wz#$p
}a'}l63
8r4#Xk@6Bu8@W]^uzp	uuN;	N?-GO[ʁa9\p8&8ά0
`xs8:1~}F񺜮k3ܼ6;?U
|Z^GgΞ;988.^A܃>`>R\\ރ/6W^6dn{
]]{	
lI.`yY0!(	PK,Ka"  R  PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$4.classUkoT~&2Ve~kǶF;iĶO9˂2n
($KYG:9{7?KD#]r!YUvlױlKC7V
 
ucowVZkDvz	4S	ivFvDiĳW?RUtt(᪡{z`[v{kٰCV
P
ߏ#? h{F0`pX &iʊߊW4gIɂq:ӾM9+Y^p,ك2%OJ]'yu,Q'3
*<,9MrĔ4` 
cENBԃ粻$`<&~ExY5r8RXV6/N:fcǇ<>1Ox|3˽iGI6Pd
[T}vڒ!tsi(ȋ"S.Dì$!_iq[Շ-˝o}z(A/}t$\Ǯ_J $\.D4'b+U%}۸+B-6؁ácp%ѸٸO,cy0JPK>U"8hwVz_:{Ax{V>kFQFJrt~ݨmk?A˜mʜM#5Z/u+ǯyC;gWp4%"yLA[\PKN3    PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$5.classURFl$7kҸ%$i-YNH81iWwM*͏)<@ӕLh	;g;geG? P@%+>0peԈ*7d&!4JRCAKjY*ղemYE8lH*T\MJVUJEeİ&)٨VlYb(:!6JV2e0tE
%
.2eMiNLCUuJ)q`
b%KUsi)p=t5gS1*T	Ґ%aV3lFwOĤl,]-gcH=/vso@ba#y%hKkz
rdH*
J>@,^'Q`uY}ЧAtDvA R?`>->ѓY`'V۝FH\^k
?n)cjf0Y|d:Έn%NXmnDÈvߝJCQA跋wW6>
%]jmNmՌ{7/u_#+_1ˣʠ.1CoipX:pgi9LgL13Ns,$94C
wzf`'W<Dj)C&jam+sof`cbf939,eng0;L>Ʒ1+&vL*c pDݘQJLVc&Bw"d|/BAUd?{1YQ
"t<`e'Z.{As,aб[
,km;8PMcg	 Oqev +/Q[~X^`Ŕ!!nֳxV<bz5GhScԿGO'^k,T_NMS=<=G|[G,JRέ^:9k3?w 7	Pdc;4RbT\?PK0  	  PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$6.classTmoV~nx2^M8~[Vf_۴iHh'ϹLlcjB!GMN+
aʹ+s|}s^|! BqQ{"'XTڏ	:=wviI?

;[==;l׍b1t״m\v4oezZ^H=S7,pZq`ֳFN53=;u,[42 6b0LR	Zf:ؖOc׋]-4Ce[_CQcssИ`!@JҔeoC{kbZb8bOo"y*V=QZqU4U^uZ>,{%ˤz^VaVb~fiRVc&e%KG=S.3/e（|<m)^EDO^=Ҫ/a5,G[.{E %CD>/ 'Po$nוvз	V<as[:|Wr>\YA4o?e'i9fOaYP_biёq
2Kte|2.Cq=Mh5X!&\	تv-Hh$܂)av-	
v$ (KyoeU/yt%+\PEy ϿpM^#u
h>=ށe_K\7\4	[
i[Ko<n4V؝*6O4Zsq~5~0ApkO׸wq$|$\nrOkz".PKK-  	  PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$7.classTksF=JH+}q8Hд,P'tS*/ƌ;~!2镓bxj={ce/ApFY	$|,`Qm>ҙ>c6"։M	[
ݴ̍Xl1c.,+nqFd,6<']z7Z&,frGX3lp-O~lfN4H7\C鸶lڌGTTSB 9IS^

{scTiΓpd}'yB0-?e8~8 U㽼zYrhϓ{YYa&E9ZRdL+xݏ؟jQּԆ+`}6Eᛵl\{?-ӲW?DiTq-a9i<Z.!@<JF+">E|!K_&ڛvdl|LUٛm+w6؜-!vc_5+we+9fì$_Civf[0W˙o}|@Z
.cC

n)8M
`٨qت`2dk7aXS+CŎ&lEY:t+|:ӗg/xtҺj,Ҥ!.=]Uuu)OpԽ	˴	՗닄up&O+7ڛ+1v';պS-FAkkZ/~;4ctO/໩*af,GPKv)  	  PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$8.classVksU~M
%s- JZE'l:ɶ¿R>~9tj{s뙳 𞀋.	0)}>1ܒ+]I&<œ\]UKd,W*&Q4(٢Z&ED,*)-Sd,,VĊjzIeERuUe[bb	PQԫ:>ˁzρH.Eգ(uWRɣbIr0'.0QnIq%"Q30kpm2aųLjȪZdˮX5|		%HeCj~!x^	!o Qg,	ՠd0ᱺt+kN<@Eq%.K'ru'
̽~a/w: 
:]hٮ;^pb͎0/ξS|DOfc5F.;ӍZA醴
b67X?Ţ̟9\~fy<3"[I!(m9a^9
εAPT❵wӷT=tft|zgU#_Σc<kf儍b54j|
-mgCYow9YaĜ?;AO6/xJ<ǅϣM֯8OrsoVg111Y\VWYu+Ť3&8$ˠd#o26W<@fevVˎz=irv5rݠ(Wrqlؚa,n_"xi,ໍ))S/q6a¦X~DNZ*t>/:xOI=<vKҩ跣Z>ͣZX%)^_85r7AkK/#{XaunȨl0~6`PK2r'  	  PK  C:U            0   org/bouncycastle/asn1/sec/SECNamedCurves$9.classTmoV~ܦ1ހ1WFS)vZH8&d
dW
i?`?jqZiRڕ>>s97_ LK$ KP$|$cj''\-;Ah1nr<::
f]"ڎաoAvwmۣ횎P;zE0eFrvҋH7t
e:nuJfܳ#m0IQiO˷ٰ!.?cnqcU8A9~.`"@$-c?G1*|qQ*w/i &~żIIAZqRsRPϻy?X{48tPq>О$.QEkEhNOּІ+`}6FlΉ\{?-I٫4˸4ZnBxӻOE\"񕈯E|#⚀+joQ
Fv/j{D%nBQ-Z<+_rS!4+w?f%:J0;د\>j>PpORp
V[|
.BSp	LAz6*ӑqUlUf2d4Xw2n2;2'@(KFne?-eY(n4)EM_hh]j#c
<ށeZ?Kdd5[5y﷖^A}\,Վ;eljthֵ{K0
kۛ&8FxB_*:EZ8/PKi:  7  PK  C:U            .   org/bouncycastle/asn1/sec/SECNamedCurves.classwxGƿ!!	&%QP6!$0ƶH2`z={۰	I.w\\F,'{ߝ}g۝"GWQ?~SNa":4O:-ЩV:-iNKtZ2B:iNktZ:A:miN[tڪ6CL-3LfjY4#F\RY(mqJJp;uÓFے``vyYMϔ:X0uH4ԄTFà-,K"9JR@|_"2F,`[ڱ*kž[t{\9|hr3GWNFhdk
2cgqoU͚/	ʘD|9@_1u6D+]}9߬JYA:|pܢRi2׬`MT]p>a;v̢Ry-gc᰿5 gVZ.q6r3e7?c+molVt[msmL5[Wؚxؚxؚxu&kk⽶&s	h'k',o|ȷB书nfrt7^MYnaz7HS&SfO/^&O4蒟'kr*SbQ[<;~ 4+R]9n'N&ۥOȩp'}('2yd&/9ӯ"'Hvon2{ޛ>>[NPOdRoKzS}"/'>"ţ?rDAPhF5QF#5h4z\'4*hFc5x)&h4QIMhFS5tfhF35zFg5zN#F4*ѨT#yi4GrjTQFU4
jTt{qAL}(&M̲G?t-OJM*)dl^72;֩؏O,{𦇏pR/Xl
itC0~e71
Ks'9YM놟+	ZgClnILy,qWxK?kY7ʹ}>	1hI7I7Vp_)S{(7=̻:ڙ+Sj7:^t걳ȷI. D:)D`0X Eb`	X,V +Uj`
X6 Mf`lv ;Y(BP"-iHEZ(BP"-iHEZ(BP"-iHEZ(BP"-iHEJ<H=Cqs`a睔E_pKNG_vҋ'y}'
9i }I-'o;~I0}Ж^?~,6@[@{pd .@WNpp7pp/pp? z'O?~k7o g/_oC?G%-@+9]p9yx / } {}~ p8 Gcqp8 gsyp\.u@= \&p&q[l`>.ù$)djU 1Ps#/'D|%c|5K=|zX:rT#JkS:_J*]t%J*]tJW*]t5J*]t
J7*ݤt-J*ݦtJwFN<yRb<Dٔ[KmU+/9p=դ7ee7zcֱ}/||5\>QSkj!KV_29^=7q]_J#c&2UVȫb1(˔{?]3CN-^9rh!P.i|4yzqfZ|H5z@7d[ޔ5[>pޔ]-Ԫ/.K;yv,׾E.ӓvK:4hx.x^Ts4BP:PbKwN,ݛ3+,Cրkk|Īn_->N?xߤyL:&ntQcT'iL#Lj&]#M*yGdJw&nE&nO~¤ҽhpI{1&eǚtHWgav<ޤ#ҽj&52t{`	<Ѥ3xIodNKw)&SM:+!tNO7tGaIB4ɐϘtI?keNI[mc	7$f`a
%Yö\"8Rm#xBX<
ra
.kBNm/Jp1\c`o<j`;	~^x!Ovl`o\#x"lWOC|a@nkOKB`HtXLZ,x콂~>Kτ_2v\=rVҽJ)ݯ҃J)=ңJ)=ғJO)=ҳJ)=4~^T*J/)NiW^Uj*}[~?N?PK=|g
    PK  C:U            4   org/bouncycastle/asn1/sec/SECObjectIdentifiers.classw|SUB{Z*CpQ{DhU4mӦiI8{#{{+^ފ[[_N~bx~=&/ݵwN"ri]\܂<


:YP_A"S
4Pi
4XA*h3)h4R(Ag:GPs'h4V.t]"DХ|J5J5Z#M(S3t˷;t9hy*X0ؚ+抭pwܱ;V='V
X@O^;Fp (&v<.L2.&4rAs
kRWj[VYW|HZD*}.+/+5=[5nݰW{Fe)yVt6
AQ ;T|ΐ/\YZG5V3aH}(-ZҾt2Rqz%{bB_Hz3*aD/
HXw,^aep4XX.G~g~D>7L:xSԳ`M@
zqF>"~LyU놥hv01{[vwFMsv<>B݆Q]7[즭#=>z-;^ܛfbt+ļд{Ot斞Au41.ˠ=?M}5;<X/![gS]M@PZ`` 

x`pp%0	LӀ`&0
`!X,Wˀ
`%
X
`#	TN7d5t#pp3pp+pp;pp'ph{6`;x 	<<<<<
<<<<	<<
^ ^^^^^^^ ɤk^,Lɯڲ@&WLσx9\r*'r*\ru*\rʕ*W\ri*grʹ*\r
*7ܤr*'VRY2Beʠ**TW9A8ʈ(׈ MBP<6ǱMDiwUܤA͚'y<dTgڊ/h[Ckhk!PV0t#Xk&H~ڏУX+'ocY'x'#B{fm=Cֱ~oro~H{rZ>~`*X?fb چCh6Gv_C۳~-#wNC;~%+W[PK1(C  
  PK
    D:U                org/bouncycastle/asn1/teletrust/PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$1.classTkoD=Nu
--&͖:Ə!`Ǣ(i+U|2whk#	KQB\oT.`yǹ;c Ԡj4p^`\{K%2	deA̲^$X92@s 	؉#)</8!4<Q`:ҏxgXnRp_Di>a1[tc7e2&2p8C<Q
϶5.mʑܗ,m"Io\v&l~
TqK#)XȾSa4}+lq~Xy[Ppغ- Փ|Vz+{ S+m1ܬG7~9q7tmߴ.iޥr{S^>]ى?p+.CmΉL\~:l189WAݭdD[*VqEUxW{
k۳rKUSc6DBY&y9mAfr ?_˖ȿ|٧0uj㵇t5p	7ى0
5n"6:ܠ:>NN:XA:>ұ
>BKڣ,)ڧ՞NYMS4:g5	ioЮ~fii[:֏@QN,,">?0pa*v=[w_``st.@L	Liȳ<h4*^ù? PKɡY    PK  C:U            =   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$10.classTmoD'iZޚ4$n]RwEQF"hd.Շl'&?_"Qv33Z_ 	&k߄Mhy]ODD,6rؙip+EP储XSHdH*c(s҅LČj,:汌[PD['c9ӕ&RƉ`qHE	VRMu
A-%ptAH-jByBLTPNBah䘴	&ıiB-u1TMx`d:ʍT,.Rθ8СrŜ%B1kp
*T @^aS:?eB'H9Uĭax4uTsfx҃~:de!ЧV;EV9(3.xi>ʪ(0*3yIANNaҷaVz4WٰI139?ҲgiYUUw{ۻXQ4ٙ?Dp`Oڜd<UTm6[s:A:4AvAl[
܀+
x4].w׶g
s˃+/yis*Btgo"l{RnU1ʇ[uO9WsOFyC>)̎~q/9/vM8ۂQ\n^\\׫ͦ*ڈ>,aBG>B6ćfL`xR]dɾ[yfeVAkP?1@5|{>~70==ccP;Os}Rml >>ehSMhm?;w[ʽf1|Ӎ#$u̔*W#ӓ&]WܟPK?i  z  PK  C:U            =   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$11.classToTE?-첬|Ai˝"83w&bZ0!_n/f5U+BIG(&,R&sfΙ篿؄FM8ӄVf0YDМ%Q&$!Sr):P7Fhǣ1Q"ϽNH)&"Ⴋ\	\LF{йpF|$2xVKxfSA%"HYfH˨֖J`a8S7D8t3"*R
ByD!X4H$+K0+symUI"B
&PIC\DH`>:fH1m4*w&KqN*\Dlo]qnT'$Q,iJl̥sRQ`0opd8 N	qFXD(ˇ&{;j56R]ȹZijЄP4Ngp`T>V!o>Z9EU^CbT<*r4FvYტW
G4k[J^+alTvmvSW[[펫&6ymMx1/nSv珶VOl؟TxIeQ?_Y+
xo5b.5Ӏw3Y\?k\|ܻet;aE^8L[hgRŔ'zDwp0߅_o?꼌_ۆ6nAި{a.@
bRr[jڂk!j![pX@*|Ԃyւ`t3a\1b2hQq94WqabkgZڇL 3h]hN:3`[`6½SNb
>#Yvİ

p}ce6;O`c}u
2,ZLnX<gPK    PK  C:U            =   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$12.classT[oE>ZL[PgfJJ\VIDTl FM/MD%xG!fHTRJsvΙ|9gV? |juLu8|g^"JDQ:E<$eA-2i7B:ʉ&KC
EfQ'ҚH,0mSi\PTJ3B`ujpM)WI&	LEd_ia\8I3S0
RwYN=5X`YAƒy%-	P$1&#x!)v3F;F7)sϭ	R{
܈`S* qJ#0&.Ղ(Z`'N_"M^y=m6BO?9+~q'p,+y=zH^yj{c7A}fkX*LGEhAC-A^㲻w;qs'Nx7imL:={BylW3"otޞcEvu-l}X7kV
.R
ޮ;5x7iLRsbڌEt{/FjXn
bo|nbʙT@4n7,#w4}
ӣ_o_t^&GkBN7u	oT=	ӄWa	`	a­WfneH+C+Kp>j2t+Ưq|4Myk8;|(\ꙏ+	{->z bsrL>I@m5@n?֩*3!#\=a؀Z'pm{杧t}c	|׍C8ur.V,NNexPKd    PK  C:U            =   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$13.classUoTUvYV
xUپ~XD3b(HRj]{?I@#qDEMΜ333s˯   ՆvxoѰ1K6F9keTE$Ě34kX$Q(Iho:ʬBЂ('2s>x
c:ƄATsB l@Nr̈	'B
ԳbY`VܥHceg26!D2wcY?4JB <9k119i[:c|48@]Q.bxRA$Z&,?*nUY3)hÉ&ƙ،A"]ӢZ;
\6z}3دER.qlD	:G=2"vΆ4DJdi-S
jI
%4*,	QS:h=iL)#K!:rIfz2>(#qNN)j:]SO+Q&UYWaw*y9)Wu5"`n9Ǔڍm7&[ZO}S>(^l_vcvhàê_NG_WêNM<nkƋDK)<]!

?σ,5mi=(Ս-xotδՂ8[vcnp3}x!z _EJo?ܰm';gf{ϧ<T; :(.3ÐW8+͝YՅ«^^k;~NA/rNJNj[kzځ!!;pX΃ҁ%,N4SfUoн:U0,j
i.@ǅAO^~d\yX@c[@{vZgcXxF̡X][xn>	"\z°-V͵b6?'>^}_0#82ZD˹^PK    PK  C:U            =   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$14.classU[TE,0+*xcUfoN/h_#>g˚a̜]͟/2֙D$]UW_Ud~_@@jC
6tp
Jic4QTNibL6z)y'2Dϓ:QYY;̉LH*;KNzɅ,]&ٱ`,Z#\H{8kRN%CB9rF)eF̢(DU{Fkl<笀uއl!;Uƒ$1"Y@|*qPVKO)CDݜ$+!	11)JjŕԐ(-O5ڪb
(B<J/G?2RiB,)2E"R")ziU@-!ʾb}P
?Bt78v14g1,(#qNNL	mr0%Bȟ}asb0ʺ
ۓS{|XdͪO
h79ޚlT=MSڼ6&,ƓA9UhU=ٞx7ƌ+DE)<!u[
) Kͳvvu~^o-8ӂ-xo4}̻UL;dG^:[dky
rzD[ɿ;!ѯ<[or^<zoNñ.
uƼw42,w$t6Ƭw]811:pT.Ɛ,.`>7?Fxoq7
^Ii54  Wp/p?<c-=K-{Xp̡݅Y]n>ia.3C}GpBo>w'>^}ACq-`dqv~/KpPK^_    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$2.classToF}l)-PZr'kJkm*T"T_e9:ld;V
u}T^ʵ3oZͯt:uCo;ǎL84,
X^؏$~P8<p2ʹ}0t
(! (eØ9i
?	(
#3X)[bV9)g,Bx"dLUH|F]S4Cap{I_
TNF>ȺRJtuN*7RV{ܡw?gUCوI>hʊ@oCnkޫv^1gyԎG;E#m/C[~u3v^ȱlݺDWUKZ%1='nSP32.ǓƟ+v*c]n{+^>ޕhPG.jᲆ5\!hlN;
K7'R4_UU8/Íc;ȬwKTBQ(Ϡ4G۟Se})4qM|'X&ÊX5qk-ºO
f`%s˰[	Di1-<-w;E!+1Z֠Jg^-beDO	aAm$ooFQr;-)X-#:_:qM\}[[9Xz[Wj}/S &W&juTdqyq PKkB    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$3.classToD}Nu
-G_M:&`mQHD-zj#	&_N=֎gf{ko+ TApAE
es㾂GK14bܘYB"'$<,6E!88b/H9}7#Rad
aiKM	<<146Y9"ж}|)KPd<i(eI+8k\ĕ.sH.	]'rL"?rp0Af3'$Ϥ,t;Hb?d}v',e)h>g`8]pqXy[Pp42E[
FE+jZb;^}PPʷQn='V<)bԥyUGa9q7򦴭m}ش>yߥrS](*9Ch}ŦD~^M

?mZm Tԣ|rX{Mo⚊U]W͍y{řs[D[#BXm&y9jq99srɅ>\@h޺j\$"(߅o2ه
8ou|`μ
\iUlM>lvwӱ
GH:0}]"/pR5t{E:P`)ˢidn{i  &5*=y?O+4gڔ`VN'wrgl
Vf
=ܜ)lCXSv7ޠ`s=l3nST:لF2]+PK6!    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$4.classTnF=N6--,I6={
cJR#T/1V]NjH}>T&Rݔ,͝{sk?PHÀiKürOCKB"TqR?"(eQRʼ#$X !~]}Q
i~'2B\O,M#)daS?$YاD A(kb\Wܶz	I3DASFR@z.ᑠޱ~I4`NߞhK`fA^]u
WU5حr
g*{7yU+0oD(4ehClޭvr=K9O&iZVCa[NV㼩vV޶v&jG.:ӉϸզgD,Ǔ4)cMn{+^6>Ou\qQg:>洳pѾ}ښؑBw_+VVY1t~lQ18~L>AhZ]~9*%tqUp?`垅S8i#\qkö!V,Xkq֬
K[C[7bb	e|cbNk\]fA;?#]lrGu(JkJ2o^
U4;fM'Vq	`A%e
cB;­Pag5sʬߎ:z]׶z w^b~o߫qcmR &MdP.PKj(    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$5.classTmoF'Z-\%4vVA	Tj~r/UB"GU]_"Ҏgf癙] @oAgZpm{k<(EF",XP$0Ih&T[q#ljFB7f)%¡6JcJbH+V"62uj)$0i	8"$!4E(qT&TlJjtܘ$VF$QbW`Q1o:
uDRQ`XE ؠ4DK4M16ъXqIdrjd	)1(!Ә[-4Ju!у "	geչ/rGde$ra^ɣlPOJZMtmܻ^~IV?VQ&M'0~_~dU=ì*y]Wu]q"{Z7l2/~~9_OBOcUns+A6>]W|x߇|Ѓ˽Ygm8ڜ9tw_:z8+u9*[/ Zrǟډ4JOavdgkC p>i;>m%mXk9Xoyhpl1D\ژ8e |*At{'{?gxRǓ=ڷ"/8dA,]poϽOߦ%lShM	3>rag1lA翞(t&.Xן~;;`ArˍC☺ z*pYVe;-7*gPKAB    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$6.classToF}N6--	9\]{m
wm*F_Wve;iHT~~K+3oZ~
Lg
Xj8ǘH]?<eie)ea"aQ#ǂ0 n0sBQS~t˘LI2*P63@&Lh,PF	&i4"RISS&O$	XFyιpƸ7C=n S}I$ ,	L{eN2aB~2j0ULẏâiva]m!Bc^^OEö5w̻^ri>qv.̪z|WßyN
'oJŤhuv;TWU$h>;yš6d~UM.?:89QݭdX{:qIePG.k۳rKem9'R,?Uu$/G7m=.G[/ _/9WGsWU?#>S6[8.w;ZXpc
:4	+:`&XA`*>3
bPÒ.-QwSO=
,j1ɛh@UtϢZ1hHzk}j7T>f0	voѶyS-u`ctrMVg3iGغ+gR[8ub*pET"Cͻp/PK;h    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$7.classTmoT>n9a5M}_|}{}j7$O&A[+(qZ	R }|ιy΋/ \hX=tǀ*%QR+aЊhXLqDbL
&4T0і6D3alLiM1$DS-5Ԥ0LbI)KTsi#Yř4P<J;,b#DJTPB<	VM.4`!`*8>oQ}iJBc45Q$2iLTR$	UǌAh)X̣D-A"ܦM9n0 1	B0
md8(`uA/;q.<s_\>>Y^ea^ɓlPOJZwm^+d,j4W	I9YUs?Яq^U},7ŊI7g'~///9'x:ao:VϢtdt-pͅ]xǅw[۞->;nY4qqV/rTNΖ9fOFE#>-̎~?˲or6xp
mx6\^^6\6\o`Ӄ!:X܃e @
ȃU<dL1O*|;yt@^QgUW
h>x1p@>|[??O	K\3hMz#;/sbCHN:pDa\Vpkq`Xy?xl'ǩS<,OoZ8* PKT    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$8.classTnD=Nz.]
|5iI6᱇R=ٸE[/ y"DTx(x
d8{g_[[hp?y<b:Ԋ1S `(/QNcDQbI|A5arH)2d$HEM9	*V"L&
<$a|EX*m4$KB#j!"K<T2b4"~H<j-򸅳7GŨe"*?HTDLifHz2	Y$40eDHhOT<4ThRAYSA=R0B,NaXHdA^U]2ȋm2</r/2{yY0lPOJ:6r/7f4j4SqI9tYUs7
8vwk{ޔT'Z1;~%uPs"?.?6:>9 Vll-o۸b㪍wlk=Wzk۳rݗ6Lڜtwoz8+u9*[/ N9WGsǟڐ?LOak<e伺ڃ6lo6l:ڸ6.b;Xu:>v
.[OA2wO&{w"/qVUy\G-eeKf~f~whMz#mstvԈ#6K'8a؄ml`^;u{ϱf}qOSO	1ie]k8'PKKS9    PK  C:U            <   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$9.class{oE璴v]C)j>vIi٧(JJD-
rmd_|>DTsN$*Hvvgv7;o+ uա^su8_f	HgAh%*ɔ	13O!*6
h`
Rk'HJ){"Q由hDe2L4cR2%T582UKRܹ`H=Zeɸ<`3MRM%JhtEI3RDJF['SRARLBc#Vh9\+VqXԤ	7+o";"cH6C˔'H*VE#-6DBPTTJipRsJgG1Ejd*̓cxeU	4^Lڄ?*|o\eE{8RxtGyWڱou;-z >]׿=,~eqhOA'C-AQ'ewO;xڹv\̘N8ژ`np'X~Kz+|_}T7kV
.J
ޮ;5x7˝f/[ð;Bi)V;
/ v^)@%¿>)nV?qÕMh&4J6t*46"U~h@px%D%d5`	\J5n_0
F|Ex@pX L	\ǅAO~fn<uX@cZ@}i-j~3*1bm}|	OPC`)Z}
7[lyK7֟§n'ǡsঀ(=Z7uw^s PK;m  y  PK  C:U            :   org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.classW	T3ȃy816B
d&vBjZi3H#y4`;ڦ{{^gbitM{}6]Ӥi)pߝ{{7M,QB*֪@:UlPQbzTlVѠ"QEPaXhB:{hPwFq3n_LHH[ZZfZ~CJfC7Sdb♇֎cx:Åp&n<BM{Gfkp<)l/<15H-KOdܴM;ǭ	-6-EH2jV<BQc8nU0&2l%vic	kNHV;kNPXy_凜>OU2J]M4'<ua=~oKF	=XhШOތ	*tuQXkPW<kFrq;#>Ur`ɡ(`ҊfDDO	#ЮhzJ8l+-i-mk<m
GFtVO#3\vֲ#]p[
,{vv
\8SI竡tЕ=g_;[ܝslC(wt	-n&*K(n|[w=Ʃ;A|ɾ1w]vK`\)
.QЭR=
.ST*x+SG^Wp@3+Pp+TpA}%}s?IE>P@c_Obo.]Aqr31KIZ7lE3"uCX/a}:՗;#%t΄m>{ih,vZj/)U2Ŗ95u/o|%ۋ摢n=s2ug|/C=;zNXzvhӞ厲-x]]k\
0cXϰa#C=&
F Zd8Kd8Kd8Kd8Kd8Kd8Kd8*,cXYx'4Z
Eb
;
Mx0^*uЊ4tU
xf^!ACo7V3dG>qO0|Sf8pÐ1\vw0]fx{~0|C><A`afY"nb:×U1
9,0ge8`c0)Ca7p.}8/p_IkAiRo#{ &!*1&gI^
IQzi7IYi6J'qiwR;Q+٪iKF6סȮtql04%B<)jSI""o
m)պr.Ɠ\RDrFMAg7lūe`e NO}M@'4M܉	5T<ZQ6E?Z:z̕~t&zR(o:2z,,3&Nٖ5RHKNxɮ΋Z)Z 
&^((O(B<_+&5yCOʿ<~A0_ҚLt*O'%*uEe7?zetv_k/WMKheŁ\A=]$=.fq.IbY"ElA8J2{]XĪEXuQdbAqbeQbaG=#."~mivƿ7>+|L|L|]Li׾n9i;ǔg9:R=CL;.q3-:rcҎHvT#&֔6)mJڣZҦ=oPKl A  b  PK  C:U            @   org/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers.classsUC=-bEA &ͥI[JC
ŦnnfS\Ȍ?xޓeV>wn;ٟ7$6KJ-$K+K@C>{$>H>- ,ier\1XaaW}.eg,ͶGB]X]):GUT׀X+xDcȺz=8e#+Y)ۉG${
dOJ\KU=+gUaOϭP`C[ܔ-̪7 vZs5^|1_}w-y%'8a-;93ﹱzTԛ{uqeFhe+ՓVe|cEnf#N+V6;KSWY7j8<7#ziq<s盪z.l{QVGн6āNuމ6M,jamW=d~"l"GQ$Q&!b1B'F
q8L!181A >TQ)L3gYsq@\$$bpY#.5by+" wc+^P+<^P!GLN7y1L79brd	Y&-ɜɼɂɢ%e&t/*b_b)&ϦWA]OcܡvkM]'[xZQ{ޥzk^ozZhAm
li-Zxd45bj{&
KԴo~K}SeFW)QWjJUjkN?PKu_J  b  PK
    D:U               org/bouncycastle/asn1/ua/PK  C:U            2   org/bouncycastle/asn1/ua/DSTU4145BinaryField.classSMOa~,-E_`lR?BUhǥi]n<pR#ŃIl@L!fywo|_/8V&|l:F4CKDUv٪QTIѝkϻv{bl	aͰ͚fkOŌEZҼyU*躨zΪaUĢӣӳ t΍,VMDe!ӪfͺQy^Qk.RjHrQ1Y]Pss-89k)%.1mk2`lϩGt¸fi==-m28"㨌>2S-ٖfT8m~j2uWD>쮨
8;ظ\;[Stμ5ewnz\ʍJ!"0A}	/Af8^!8Cd8@)siA "p5(.1\b  qz'
REWOsvl.>mRa <,<_±
;6@I{~'ZōO(#dƖqM.aq?NQInS-ᨒo	s^Ér$A4~x<2b2?1 ]8*ΐ^qbKT[Qg
B2"lH	OKsO8E=ܹnc,2#m,{٬GCmctwh+m:Jwf:L({
[Cq)o\5D&kYn"ϝ_`zJrx8tr)M9.x~aXF'&PKFA<Q     PK  C:U            /   org/bouncycastle/asn1/ua/DSTU4145ECBinary.classV	wƖ=xRC!Q&ˎf5Km	
c"']FD03SZ-KW%	[,t5K)-flD|;oww{Y O+FhKB^Bі}=HH.R&aYϒ
o2,ûEB
I)ER9HKhHٜö-sHd9ѓòfFl'-O)5\	!۰<r^/(0^*A><pR<w]홽1~'\
&M5+uPOrz3@f5s6|AgvWiO\?Ұǽ
2 jYx4fv;|;sa[ e5@$,O
"mGtǱIڶHʰ4g<2fg5Ên$g2)jd);oӚz\sxwrCF䖝̝$R3Px<ڐʼ~O^XDom}P#cV(8CΎkzDcyЊz_o a\q^@m8vsiѲnw!^smfldr-
ETgYq>`gRu^ﰧ[.`Wg388<:C5<SW=ɇOKXFVq[dt*2:e\#Zɸ^
2n%&7˸Eƭ2#uu9bm*nbW`I2,?/nghK;kGEgJsWUS/^c/ȯW
Mj)ύ{GRg^[b_Z_.׎6PYZ]5еhpqmc>K|TcFݳ"וui=7Hz.´`͜u]*.T1,U,c?P!B(UbUAahdPU,~uTlbe؆ːf혊U\0P?Tq%*Z`h
5ȩX{Tj*"m@1~3D<6
9
vWcxAxPA?~p\ ~A<#
;/^R(Y{8(؋#
Sp'~kh#Fp#F<}%IOK=JR@=S4!BR;lĺmI>Gu$?Za
˭km
ÒiYZ[ğn+n>O%'n5GslGCu͡P{oMJq
Pz"S  ^I7|XęI Z3A8#߄W!%
J=2m32o@
[3E]uUoQ g08Q%Y81SS(odp4[QHM,JV|Z=P[R
|I
$_POhtR5ձsHE86D}4M#9doOHs>CQy5<\J=+bx Z^ä>A20VFb*Sx%n֔usz~i$F./X_^Ӹc$Tˣ
"x@
@RW14Zě[_PKX    PK  C:U            2   org/bouncycastle/asn1/ua/DSTU4145NamedCurves.classWUf^xL)$zj.	&b2liIg4#fL|8,mpL f%2Rb a
9/9G9<I]]_W{%"R/-XН-
dA ])*tWAwtOA)}WA
bAuA.{
Z.}+xA'
-tfflQ{fyv;ŝ-rL8a$^Qh%ԌqYBJl](XEL3eYΰ*c 0A%jm*>%[UʹձRԞW1H.SVrnsJ۠.ʹ5R*LRթQ1)sؾ*Uosv0HFi+<!CY3]xJF)cU83Q
[lT0/0EUѡc6zuIWS%uJhp_"{[:|QdR*Z8mťt\{jSGHQJ )YJWD@
:*넳%++^[@[0wƕ^)cRikiKi6$kLAVx$
2RUܹ0OZhLwiq0XW*8
PeJSi,"]u uĲQ#&x?ɔ,J*+bژLD¹-2 ,+i.YԬ^v)1ɣ(1au	&hnTlYe&&gUF`ʜFVҕ!ltHMpEH\ΟXrXbu:$Lؙ#6F+5
HњY
GTss6!WrѐtЉʁ_y-P
>&DMD>#UDՁ!{l-Yb2DR(|)DW
LΫߑ#L-F>&ڋZݢ9w]&	"6$'J5bs	_`aP%$Pa[7C}]m`b3B%dV.
<A5L
0u=
|ɘ7%Y
HT	
b'8Weur 㯵΀xt>h	T(X4{+P=_PQȋEXaIq
EFK^fPʳ \
m``O	`H"qs9A5OIDƈ6(QRDxJ26 /Ĕ"e@<FVpSFΊfs=.,Kc-*-\á1(D
,s^@	0ϕG=Ր2DK%+\}ƾM1iQ5Z"cl2
"ldi(m0BaBȭĔJk6ZbsY|*t⛢D7g7Ax$/=h=5<֭-!W=H""ITWhv\$ƮA$	iS0
3'G塂QtxAxeΠ~.%zJK+*d̃>H<s#CC(  O|H)8_TC@׽klA:~X|)H	-<fκJ"w!@_TR%%yI"?Жd٢Ս{[4qf,OGj?TDz.3˛ȦnmY:u~s`Kn8?q`y9X?>Ŀ pRw| y]}[&z7Ztv7hjmgp^!7pL8jqtW<iѭC6zgF^q=Zlo)W?7"&n͵N	[kڸ%sH|<>[+?=?;_s=篂n?qnt;}yykŵEw_Q|'C[1;\<ڢɝvF*[{1<8?qzM{7=ԡG:uߡ:ӡG;ѡVu:o;zuoV,XRda~x!x}	fE
A]̍?
}3wx}xfL@>4_%w67v4=Fy4}izi}z~0NӀ~.4_w8MO4M_wg¯y<v>ߙMяNw{y<==I?S}!_<=C:Eyh"ak
;4;YoYV?zwީ>V|j7Ngpw{&׷d"W2`GnŵߟDP8'i~e.tj~uz@_ڥ}fwW٥.Ӌ9Yz>G7rD<Gayx'ZvoIAetijxN}H_ק/ɓ/W`.}]ysc/S'o۽D2fh61:[Gb8ͺ
{i~tr8}s3Zut~=V{7臆7{O:{7MwbԽ_3= ϟ=y+}~;\ݡo17&%BA=ם؃|XYo _hw.Х!ӀxDr֑3!'L|;yWNsV@P!fnsX՝޳a݉fns\Kw^p8֜C}#hĕFI&e"0Doo߯,w/xmD[;fo_.f˳	 nL
`z `tS L0xnn7.\#C9p-oڭ^2P+ u.%DmοpEcAЏBII7^&6)\Oi PK+G}  2  PK  C:U            -   org/bouncycastle/asn1/ua/DSTU4145Params.classMpSUI䕞|Zhi~i@B<bhƪuV7Tceʕ3nܫ80羗~(If?{NN4HyچM7yQ61 a1L\b\wY쎥ó݅{(|HЩ2`SqSS2ʤ5O3Zl*V9ӯRtj.enÃYCM4K;h~CfOO]bF!BX1C3dvp5HD`8j_Of~%LZ+ƣ&cmU֨zFЖL.Y#l:ӱL\JiKhKk%x&sɫI㵬#7d:[-׮4ECTRDMrj`h<r3yh4[='9#
:lU^Ȉ}ѓ3I#yCC.e4hG^2Zd*?EI<#UĐP_묻턄"gZca,>
O
yX7릵rO{Ie(YbrJ
mfXpݵA{Ȯp-^/ugC
T*؉C
jpXe
ܰ)
NU[ѥ`
@@z
U'8)0/è~r/#\yQ`̅ ".EG9'pi3?3wgPcӣlD(4ŞW&vli6ݐVl5x<c..y}wq3/H[Xhv^"l=%t;'lI凐a}b3(s	Ez{LֲҚ\v%NRT֜dNlE aBEV_paN^utcw/lH<@M/#j5Cy̌p><~b9{޽[\7Z#qkjBsxQQ%}z
9]q':xi*&hކ[t'+jfV%j|K8#y$yn	/k+K`{,9NaY+JoB&}HNG%-p$*o#Q*YLo1a^c*YIhYE2~gVfNs3gf=1Ps+u14A2wR1ws7ma6&t^d6Cf1f+czlw^v>d(<`̃H$?a<B1yzhEf7<N2{h+GuPKpE5  |  PK  C:U            3   org/bouncycastle/asn1/ua/DSTU4145PointEncoder.class]sUnveK_"y!
h
h[R	-Ђ6
vwKU/D/Ҏ?_@Fϳӂ3&</s }ET@s'|)b )8VX1ZީetϺtg:i*wvL@l
S,y7ٰfYm6*8AwdzdZyzjd®_!'Ja˴qkJS5=J:L^32y6K=*e	rEs6l[qb)ЦTփ˙e=+egD;fkbIK.)z̴[q׊fFLE8w0ԨE0Y䆆\t' !sxUʼgPm k`ULE7<=9:Ϻf?ǂK>Y<ʪj"-=F4c32[dlMv;d]2ޤ@x}<,|sgPZk]|ٳ%)
LavBn~}/ejX7S/ĺaûO?=/"GB/=^C z1V*ThVATI*?Y)
GUt0^albt2630nSюwUl	nHxS#
2xQPc
zya?>d|Y9c183N2Fg3.0.2.1>Pp	$2ū#>mʝ"X6u(5-6DDA<5Q
:5|BM''/*CqPxDgL@)sIK 0*d\lCR>MvJZd%ʩd6*u:%{(UDMQM+ADni^5mOND$[ W}zIelOT^+idA70Lb|~i{#0m/>k%X5F{*@4.oܚƬoMV
jG2YG߂FHJ$8 ^r	3,e(\I0-p~JC[ibթR7-Է̇rEZd	W&=vM0I/+y\`YF}1Sv,_vDc]?I|l}_PKL{  r	  PK  C:U            0   org/bouncycastle/asn1/ua/DSTU4145PublicKey.class]kA$fq]Mi[d	īh\UB8ĭlI&E%ł(
^w3~*C.X{P7LyD?fJN(M][gvQ8;2=U^^RІDh[6xn`<VkMVmf~IsyB3tjtD'ƌ
Ƭ
=X
2LKks;$[#{HA:
1:\טdOco90,cE׋qA	\¢\]07J-ŇheZ,`uTpb2prxooK`>sHobĞXbe̏zT)B!Av  PK	DIe    PK  C:U            2   org/bouncycastle/asn1/ua/UAObjectIdentifiers.class{Sec:Z`mz4JZ2IMHFE{{{"xy7_/'\s{Glgl
:^P zA   CO_PFA'j,DA4GPtS*4A'Ag
jt-A
jרf4]NڿU(ըTz=&/<7QnQnQfʌW*32c(32Sf|ʌO+3~eƯ4(3
L2PfL@iTfF̸t|Wrר7}Yk+컊f+K24*n2lGX)3aEJg
EܾEobp:Ko(,}}ϴy
/5ʖcXAKr8>8Ʊtnٍcnx2м_^~x\&|8g7[ayH4[h)<d!MT5%?acL|ɉ1eҎ-4[hx,Lg_bWLG*}0q3q{VFTL'aLgaNzvd^(ĺcF7-*=g?E"]lߠ?I5'nϤbHO]n]NrZt `),L X@@1@ r`@A`V`-Xl 6ty9OWХt%pp5p
p-pp=pp#pp3pp+pp;pp'pp7pp/pp?  0(8$4,F-RD/ /j4en2.Tk[5^+gE2\"s.d.BfJf̨̤̘̄̈22MAa+e/3$3,[jkd9 sP̅27 suS:f}7]㴩꘭kFh-(a}	z6ᬯ@`}z$kУX_tϡE_@~	@KX?~-c-g}'iB+X?V~݋Mh[нY߆t:}Yt֯լ@`}z ЃX߃3_
-;{:>BRwΪ!~L_PK5o    PK
    D:U               org/bouncycastle/asn1/util/PK  C:U            )   org/bouncycastle/asn1/util/ASN1Dump.classXi`TnfɄ,H&pI2G$`Z&d2g&
Z[K]Ԯ#,"Xeֶ{f8sw{;g?W\	MI/b	HX,a.p%\!UBv	~	LU\B.	+$pUz$HVuJX'z	p%%$|E'е3襉[%-oݺ6ɻ-ІԑrQ#R%$.c(mXiSDLc*8H<
%>
9r7ɑiXz!ۺV/`~#24 ǂqY̲e;WJxV:"h)ɸ	9	i\La6WəbJ(FvZe>E@$!1Ұw$Sb9Wp~9)h,ɑAe+	{&[?M{Z:n	iAr6@mT<3iuo{jū{$XF铣	ys3~Wr(Ut=Y)oh`5Ăr2
CC|*1mS"0̱"L>J6Ģm[H,BAmRK ĜPqZ`xHΆ-Q$]%]&t61}+0Xh%qb&J<qxe4WLR}B9Jo%Jߖ(̓a%S-p0ߔF2a7چ6(>!)	+GaEcMCЖP0Mxd~SkOAi43(C3g:	ׅZzñW*YVZ0B-Uu݅an~a[#Ӌ,#F
tÖN50Oat՟O%$W9j-AC䨭(Zf|-WʖmSg:lbQ!k4dBZPo˚˻r
:G'eC?B'Q0$i4ӻ?Z3ǝU5Dyӂج65Hl\cS,59)M3q()5j{$==9n縃Cwrű#ws|c'9>ip|spy8E9đx_x8p<uops|1oq|^kq	3cWT0IjL)^T^kēnڔ}@"0<kTVyWiZjge5Z K@IR3xlou4sLM`4@,SSxJE^e~1%ukEn"wi7>n|P,rcHn7n6A>,	uc~熌 pxÍ&ɍ8Fq#ܸY
w'؈V-}xӅm"1ڡS*v
Nɸ  2U~`{8D[
R_0@ rf.<s.Q1=0=+'p+q9ay{U$ȫ!A&
R¯X v~hiFҿxJzЦ`JR"L{[l43pZ 5)~8ğ$R`8a]-ƃ8d_ʦ_뫘}3̇Iz,;u)M~D¥IQCk
U7^n
]5j.m*y0T;k\ef+鴍έ
{}Ϡe:fq։W4ƄNvN\at -&1*-λ}";2TsŝcbƷ9)N8|Վv7b{Nk>]e.hCIN68h$}qDefT4t)$1WF^RU⸓}&l\zFe!Lsv,'Q#j:JB6*(k:`DMQTHeLPj$Hi!v_GWA,yK	<*ZQIxo_qӗΣO*t9G2Ic$jH<b4F¶PQu:yuB=eDMQOPG:ʖ%#AGQ	ˈ*QT6u5fgUjZGFdEUKzʖIB=gDyus*v	#ZG=樻7fRK=-['
t	I!/)&$ >xAټZ,QQZw޶ro`J
SB@!:vhR`:3:b1#wsZcXG݃1S˜Ѐq4d9vЈ㘘Ñ'gDq+LNcǉSRCOYbRgGfMxыH=`*Q#0zz)&z黢 'Q\ 1{('T*(Az(nbtWF-1*=HlNJczަ~zkGԕ6aR^}"3f{aøa(SJ{ga˖hFyf!,J6;*em(U	VXNLrln{md8ϢNKOc:;	SNі]B*Aߖk&kܸ
eP
n^>btʦњ+kvbbPK_2    PK  C:U            (   org/bouncycastle/asn1/util/DERDump.classKO@kB)"~ /c#	^Li)-)[^5[J0#afg7ݝϯ 'ȅB N7	Bgesؽv{~:!eȦbuduۺCܲ]K}T>5uY[%Ҹ*,֔/\jcʊ-SۋvAKGG@]	{qӴ<˕VYSdnlC+LK|SD 	Q$EDZ@Ol{5lyb;Ul.mP{*Tאeqxcs,LB0xu&Y0~Gvzp>M	d
8$agؘxPKa f    PK  C:U            %   org/bouncycastle/asn1/util/Dump.class}R]OQ=u(RDDԶABh1eYv
c
|LP0sgιgη atp2AINITy۵qxeA[f­7ptZ}QcM'%sy"`<Y7o{.C쳥kק6ʾu\nV,9ԳR6xkc\se߱Qvٙc|۩z:`%^$|=(MHjb1SyxEsE8ǡq4rhhhh6}$s#99+@uͥNZ'O)ھ]ryB괪v\EXF"

*O:DJC⚊.dRэaq]%T	4T\m#oA=1Y_OEiNn	ID~!0g#m۪GhV{{4}xr|xgw!6\E6hwfv7F>JcWIDt`6}T1	-=eJb
50AVG4O;$G"+D~PKP,b    PK
    D:U               org/bouncycastle/asn1/x500/PK  C:U            6   org/bouncycastle/asn1/x500/AttributeTypeAndValue.classTmOP~.(2H!1b_>v]]Dq?%:lsν9yW x҇^gz\e*#
|[Xvѫc`PhE}[^Ԇcūfkʮl		^H<yCO3Z,unֶfrv~*{:ikP_BԹo]K.:NAVޜb1٬JX%뚻
wfUXR
TA\T00Erpց#MI/dL.	uj]%LWР=N*ڜ	On <nNȿ4t]ųl$DH=is.㚆K!i"Р !	9LI3SH -bwUbZS2*bF{*ƑU	7KSB`QX֚ &hqc=VDjRD|`xL;7X42C<<(S,Qw$>8BbxXob4XFHeq x.iO(׉[!p0.fagC-s/e
PKiS    PK  C:U            0   org/bouncycastle/asn1/x500/DirectoryString.class[SH-#=d(*%
L+"7n*

莻BjfƂo~_Jut&s!~}.5߾ 8PW1s9[b8c=agrAhf\r	3gl1暅CI Lϲ8f,yM[|f[ωe׵3i5.k-^s*#rĊe{{P9TJ?KvgEٳV- \0^127?:=[U۞*2ЄgKkG*ךjTG]e$
A\]͡r&<煝/OܯoM\3Ɲ<Wpc!tZ\&V%cG^}9ph8qQciv:aԦ%Oj>U2HU =K#'8%
iv2<B1`#4N)Z4VC!F^s#*NOE
*8U47	iڥ4*\PqR(͐4Teq7Un(81q]AI3*]g
z%b`\[ܖfR;L%Ѕ	04	z>mxPKIP#T)Ohd~
q35Whـ^DZJɪ,)T"ҹtGRJE<\:E޺ks:f1C:q&DU>AW»@-m^YFkerYU7!>JVrB=1`̥::&',dN/}twjPJ8|PEx̰2u04!s$d%]wPK\6n    PK  C:U            $   org/bouncycastle/asn1/x500/RDN.classUSW.겔RJ`Z]1 ?lEP*`S!(Afh_$[fmɆ}柰/q:LK2uڗ>?ݕw{ٛ'(VT:L@Ne9h츎7%0|Y+½UJvƪÙoǆ2ӞWqj|=WR͞ .Xʥ]^AUu׳fpdJ 7V=-AvP)
2CBt:ՅZsԤ||nx-Z^!rEtkl$[]ұ/gfT?{<CCm@oDL|G.JoVNmEVѮ[;*8"ℊ*N	4%)nW|聀<T݋= `*(ů7gv؃/p8R,g#e6nB6,d 
䂌9K2JSDoY}տHjaeJ	h&Z|0sȊ,a:CAYG'>``pÌclƏ"5$0fJC/.iN#6hU
dsELՈME:Uj̵$m<<@+@0OQ]1z?#H֍?ѵ
rL"_̀"i0y$Vm|2x6k`qW\ILLn_*gCG7_)
3qC{mUAu::{ZY[!oB`{*D|Eٗ1KrI<?0:SÙyi2n>'8/fxf*%}8戲B)i\ɉ0^RxLGƭL%ИCw3^G=)M%0=-[q?}CQ	KȻR+V PK1n8  	  PK  C:U            )   org/bouncycastle/asn1/x500/X500Name.classWW-Z
i
FvX7"N6
X
Nxk#VDZmgUGZ5};U/~	=9=3xI:ሹ{fvOw%ZX"nN	cDw8tҔ`ϞJFCɌii3F/13<fB\OP_3=¸bFKHR)m*=%bf'XwrDp_L3YߜJuf$K$
bD2T|8cSz7$O)S2_2	3ʎ:DxQjT亚t=l	iS3b4,[Pl6{B=t[м6Ε;W	;/jZ(K1}'
	V*d0@* :Ut*mT2K1PSZkL;j	u	=sCzXrD梕pR-|%w=$`qT['X_{f4ыc!MͲRPvΑ95bPdz`7RVN_NBdxu
4xHQ ($
4
<,8@ikH@-0SLj_pzx6p[˝џod,	M[lVZ[x67R~e'X*U X
?g.KCv_4<por-E.ȱֲ<gZ|0m?
B0PQ}vxLOm%2).e5C[(.\}onexleݹV$g	?=6/.wᨓj.햪`P
O*87>aPϰpa@槧@Tv*8p>bHA)؆</y~gtXNx:`t֍tL<}}gaH`bD/zЎ<8)t!A7AL/W=ŗX|ۃz2xe_e5d>׽$K^<^Y\a]?˺GH+^& ԭ)Uן~UX#5tRHFc-Qh>OhtиG]5y-<<-X'{eTy	/av.!ȵD>/蛆[}sǨ!u	?]̜vIDjCpu466[j,fr5SX~Um
:xofgcȰ
'i\SCzȝ#2M;	h?Jp]KUuBܩR)}YӨR[s*vw;ĐE.t6Zt		$A
]&z1A+V!IAMUuCEl52jCj05U㽏N&U6$@cܲ*(_[[F&Soc
dci`//Wʿ~'"t#N`XG<~W<D$ZW=x$I{oފINJ5	}4dq	ռ_L(Qffױ;@r/rj$I@$5|TEsVWs
Щdzo̪<Tu7Ma;B>n^Depʳ|YAY/cM ha|ٖFaaa\YTQD v[Y^;[uGީi?޾6*V5
5q֧2vث;Uq~PKjOt    PK  C:U            0   org/bouncycastle/asn1/x500/X500NameBuilder.classV]Sg=KKZkD,ݤ(D
M&e.&t7?M22^/:lVIZɾ; .bI/6rqQ@%6+zSl.0.Bj׊ZűUcj2%]+XƔ͈LI)cV/jV-et}2VG嘮NMsEwjZѠ'=gM4{Y/3[SUǴE(Rh	DZkKKVHFn5
ku8Q+j)GuB>W(+y9{ceCD"8*☈>"8!"$?V8CHzٺ{g'b'M\x>6NhimgpV5s6"tjG(Oulz۲v<xN[t:[l?t_ֽE.	j:MbM[z mۙ:{%q^)$%ABLB/Fx(3(	T	Id C >AT|^]b ADqktj202\?sFOOVs
hLI4:^=Q
:nH?
YyA\ฬOqS?]jX#o'<r#y%^B
mQ{}mq븽W6zHo@7I<N?Z_xkYIpgUPB[D|"I[ꓞDW]UH}z70^|CL>MXnxq@T޺L}lp
s/>"ll^GvzSPKK  s
  PK  C:U            .   org/bouncycastle/asn1/x500/X500NameStyle.classPN@=?tc#$ $Bեdh;5k. ?8L\Ŝ͹1o q`Q{		
)
i'r2=^"HkH*
CmI/d
hbH[(3u:chhadzkb%Mqض_;}5VkXMD-%7%`i 3\Eu&
apILi\dLmWW5m&1/mwn큁|{'}	qX}wP7XA,f"R/PK8^7  8  PK
    D:U            !   org/bouncycastle/asn1/x500/style/PK  C:U            <   org/bouncycastle/asn1/x500/style/AbstractX500NameStyle.classV[WWL20UQX@M#JvH
L(^o}	e|/CWR>3(vΙ}>s2?}%ڰM<ǁk;8ZUM59=ߓL
i-6u#e]kﯯ#
obT	ir"pؑdg8.ytT
u%-'8H19;*ɸ¡=,۶dmQRbX=6LjZMj*RfmS!CI,9:	\Xg&Nds)xD6bä̐BjJa\[3gjaX#I:pBQ4-/D#鄡\_~Ij2>5SF
5qhZ6<>pI]t$&J\Ij"إGl-_3K&2AY6dŚ2nse/s7`OT9'N9>rʚή,6';s͝MY<Bayz	&aS(Ѐn䘱q
qwuQi*Hq3ZzSqmD7UKJH.jZfTݩQe2

.IvxJ@j	# age4[즋'}]W0+|vڽ{z"[rOΠ+}'Rjcn}kyf?^3zfwu`zg@NXe9=YnڬVYZ1=[gm=mݺ8*_y)ށ,ͳJzi8HBm6)aJ@X~= "Q	q\BNHpy	P^	pJ8-g$4_BIhdPR\YD^d8alCL8a&0T!Gp$H0x8WD<AX10_G"~y5h$	oS)N^0	q^><pǗLrfLq|3fɁ
D@m(`WQo"^17Dٜhk7mu܈:x7#oIYϛ&q*"'wg?~</]wqLcg2o`3ybިY:97|Ih=fkGz}~Golog8?V2.ti9|Uny]"?_-|=K{x8h'UWОK9I\&o<B9|4k+MLm)fÓNǌp05"Ye"lSibUh~_Me5@x 7I(*쵳Fy:iu
;|uMʅu>U/'!ҌgM#09ɔן!ܧ*o<
XBf}yv	QzL[W6PKMa  }
  PK  C:U            4   org/bouncycastle/asn1/x500/style/BCStrictStyle.classRJPkQk>7mFEv!hV1
[mS{K7݈;
u.S99s}4 ,bU(
z~JKg&OvJzVWlTJq^^S5e3sU-1o01vH&ìbרLgrN׀+
sT3A_D!uV8ׅN7ұNN1îK+U[?_&CDPF ŠI0R'k~Y&&IGCı#F~0FUexJ}5ۧ4}e	m`O6"|WEH&	uz7y8a2Ot%Ly=z#PK    PK  C:U            .   org/bouncycastle/asn1/x500/style/BCStyle.classW|E/m'# I"nvXMv,q%,$alHQ @@8=y{||	A?y3潙6oț ЀG,Lr=z$$	X! % - # +`/`[*6Cw
K
G 
"`<,`xLg<'yxUk	/`@	8$uG|H|\'|J|F>/(K.%{~,'~*g,/*/@,X(HX,.p@jjjjkjjU-´VW7U!Sۀ0uu6ҿ46G[]m5E
bӺaZ?LGklX0<UT
#gmh&nllmjg[9kK=D<3RLh	>O0r<%-t<ӮHFNЅ!LvþP`q~.#:<ܜ&2~+>jxLODu*B-@h!-UǸ=AWiynswm%p:;[ ;Sx*ӻ"ٞLk2<L3u3ٓ]4Oo$RaJSىxNcEn=SG	p%
r؊P`xe"1l3H#L8}%rN]P?Lq:]#3O˵v8nJ5?lpݴnq{v}h{=舔'әvv%c:KX2K'@[Zd8AC<"`8`lI<~C{Ʉvr^7{usvKwyb8ΤL6ǬKFiq]k2]I+3=zu$^XSSpRԑ>m >Cc#L%XIy?Jێ&7_I/
E:{hҨq]c՜>cb4_ӨD^ӣz ;Ǝ;cbz:eOB4Ρ)Li`&Ot/dɥH_≘Z2=?w 6ϸw*8!&*	=d:1TH"ZYIFws!M≌5KEVF{"jZ]]Ȏl&S%%:F\cD2f0IMcZO6龞HQ.Bq߹LfFnrj:ܣrڷ<n<>y'2h:W:OI1ͨ1An5[\(懩QwJvsN4ёR/gϫ~̇ljZ~#>~`l|k7tx_,q)~G\ׂTSH)>	:HӀ"Z_w7MWIn"2I5g~6NdIV>#21vKN1
>l6
~i_6
~k6
h?њӻ>k?׽#ʓ})9\Z^zC͓OlgN7^(UEV'^̕܊%t+NxȸV؄pV>!Ҝ9r嚣y9)Vg</+r՘kSʜU9:-:$NH̷~r/BC?b=jx'Yp2rN=vt<9wXϰa#&[2lcΰaã0<$SO3<ǰy^dxe21b8p(o2|;eہ6<〷p:+x;]
g9x>U2V;Xbm1N"Xu
M043\0R1\pf0gXp%Um>?C; C!̰k3,an`ю%e1tq	ǎvh@7R;0v#bNGq2$V
E[KDD"}O"AL(3KOϛi7  AuOiLǴviviי%n7˦oͦ}vi7iӾhm=lڧL״Li0Nn1ive|EȖ ;
({Cy;LdCr WXVu1	`\;/ GtC>j]5i73ml
9vx*gٿB<BhR]$(_f8Siydp!'F9^dzM2g͇r(V2\3Mt)Yy +(1Ed]Gd!|`E%M

|
.<s'y{>d>{ͬIua<.?3P>L"p
QJޣܫYF
3Gqb8/
j)(]N)KE)Jn,%wg(yg*|DJM:)KWIJҡ)*/x%H9YɻV)+M%oP,R)mJ*P6) 8%7K9U;A5O|r7
`j`f 6wˁy4p%(N3 X.4]:!|7j5ߩ͵ZofX~b?ͱCl-~v.hX>YWoӚ,GZ1-f<ߥ]hZ7kߠU[V\ߦg{PEߢ5X_;⻴K-^&-`v|
~5UI!N>S27P5݊{#n##TIo1g+UO6WQOS|1UOqxUONR_DSxUOqUO+zz[Mdp?UO UQ,60IPKB$    PK  C:U            0   org/bouncycastle/asn1/x500/style/IETFUtils.classY\[yt/WxȶxĲI!11pL
85ԱZ(cHڥsHqۉ6l&uݳ˶.]m+q]	w;o~e kXgǎb;vlgGB X
x&P8GFAmJ|H@|f^FNmnN6mɆw#D#mliOZ}A3=17hdGcDEFއ;7"5IûHL'C@uW"FJ'8
TFG"}}xbȬ#wW7uu޽OjD?lƈOnnJޑ=:l6EBY_%G`(:d'4J%YhK'		89Y/.$d(KLhШ4ёB*ƥޑIFp_pZ13`4f,<)2M+9^z<y0g>v'&Kp$bCǢw&̦X,8J1`0 f4i^nMiԒራzS,<`)kƓl,QuDɔi-s13Bct5O'Ñ8Yt
,-0
rG3hD`|`

\@~	QW"0P)Rw-y5v1K(,x-WF&	!3%SFY|e h<H灃GҢgttRo9"cD.OIDI,>95[%Xae"	K̾elsUڳ J`sIgoK.NՅ)[IQҤtc=Wj䌵tW\wSH7V*qYx"K{<WEq-0cpk#>қyq&\FHJڣ`E%D[Dtʐ">1}A.[#]'Nሼz+$y9rDC2
whX
{4ix5th԰OÃh8G{5h)
~
G55%\}qMW{8b;|ʶf	q~>X@y~pdZhfN2,=weԶ^KKEVK+VZLzZ)3<Vf\!{.mN}'frKgrVYZenʔ1RnSuqLW|el[>pZiۘwbا3jjgFafMt[<ߦl`0͜,syEI^o\Kl29лԈVeKI;"mW&3I\*Cܖ@ca
r
4!.2P|(0Qn&C~=%iS101O3gYqlECx]x@.ea؉43KwsyE;pŀ~5\50pa!^2P_7pr*1m k
lƌ
lNru1|8a:2|7qw潧yi3%3ux1pC{	.ëg:ΰg-EoU}qq>~o:¿31(:~
12Ûo1,~5o;7('N4ى'N|7kK3}+#?POcn.*@?)8Q>oJh/I",'{|>udR8AϵQv촐snk5!&zVm#ƯԺ/"WS=J}RmuVnxvn彀l.z/bC9AS&'(n}R5L`HZ"*$<L:mEђӝ}U:Z>-MG/{~2ɘ@[&g^ޘCLuK	QQdO	M"t[&.`⚉x*W.&ᔆBh8M} X#
v
q'_QQ\ق,JŮQ
&j~Nk%˔WءNm'f5lqHŮ6^W]MM3U_BNoќAmxgQSSb[gդh{i'ù^#&єx^(\
<d3M9Ç
SB}%`{4k,;xc8CSz=qztcRl8=;$[ubNsZ4LwL /qXu4l+ũR4IUZݣB`RN{18o@Y
O͡vcHNY9!ce9	 5o!JȺ[,+gj0Q[N8E_+w}Ʋ(~?)3Fu_:_GٝY> 9P/[>F̲=jk vvqQC`RTP2~)i)6pZ#J:G6.8ϣvM}+0
hlQS9PClYM*'p!]|g9U(_
I~ڶ4!stT}
O3xri=Yo}A((WPS:j<i4)dIL҈M :%{W%-dW̭PNUjN%Y5-y'GãZ_Mx2#:5NN t+p>.(z|D5$(_^J됏웜1"?MfxzX;
۫hiSfrۗ\ T`ZSȚ2I]zYAUDaxrۨs
&	tPѴGQ9]u=&~\}kbor1C]N-΍6ru1[VY</ሼ@@_`/jV`V
({LgeX<M˻v7n2nźnkR&-߭<Ǆ<&ssoUL_qJ
Kw.y:G4|H"&ďRgg)M@ꅄoX)O:ܗrҭ/]Oj/'^Q>OϮ%XZ<sTfˢQVMqVa!|lX91gp+2WJ*7`n+f7
#t8dUC4EUuH_,|ų}
H	Mwstizd"Y"/ml}LQGJ~_gN$`7K92<*|eҔt(zJ<P7OY䛊×,5)Y]$vW_jBTe(J
W=O[i)${j?HYkXߩ,tdQrE^]p_²tVQ樤4+~COlr@ZBy8% PK?oW     PK  C:U            3   org/bouncycastle/asn1/x500/style/RFC4519Style.classW	`_><\$@@8Pq;I63,$^x7hkն[mmZQJ{3lJ7}j7 ԰'8$98RVrXšC7s8<sjr.ᰆå.p9+8\*k9\rX:sz7rnp+
np;;8a#9<apa䰃N=ǡ9<Yq9^9UqxÛGosxû=s?8|>/p7O9|s_p/9|k
=g,β9pY.gAEVוkUu*-b0p-f
זנçU>
ڧ5>M0֧|:ާu
~oa[x~oa0t:-K;k5~?AMZ?5kZ=j1#12Ir'JҿhS1gm/g0@V;ć[ꛦNc0j,;^jHwDO:1BOZU]&`b=7(~.A/v;NI4Z9
e$SuhibYzEobˀF̌Q}fg&Q#IqǴ1PTiډݦ5ݞ2Fpo%|Q봔3L#!
_
6,q1݊fCOD:fh7)7נd8mz$iv1ň2Rԇ&K6
iJNb+v;$i7,#!64ol
կ\iXʸ]v*i4F
ˑO3éM1\rpnXcsC-f2j)Z+b^4l_הT[hH9fJqKp.΀XLmîLcz;̇jN2#/1kU/3h.!#|2{9=@TF]ߚtzQ4ɧ=8e|\n\1<oԚڪ:<N1ȱWYr#I<#efFw^cT6ڢq;S.X}4ςQkinV4<0FT
jt5NْO3=Nx747Ps"T\)mO'`0cIe`\e%-̛o{)$ctNqZ6G_֥JqLJ;Zl9e+Rlyv$hLQ)
Wy-C*dnA??
ς *o .:Y|uvt`xɁ^{NZT<kߛE{𰢩ǻ7'>UiEEǫoƄxMWqN(`zoרR,ɔ{mVˊ2KqU49ӖvfJq2>î>-8Eμ W~su]	4D;9?6Q
K3=!!q'6<B`3	v<C/H2+FoM|@!G|B)g|A%A/A, A.5ǆnH[6Xa~F)vX~!x
q!xb'1VYq?6!(' $"T%G0D		N"Dp2dz)S	L'A0S	f&h"C04y-	,$8`Qc	I3 B$bg<1E	v<L]GH
8R}
Invۥ!m>#s>/Ҿ(Ҿ"Ҿ&Ҿ)[Ҿ#Ҿ-{~ ~$~"~&~!~-7q-a
H+HGB:-hҵ rCu<d]mlYۼŐ-
/@'G>
pj6 ^Q.vtY
F![+pd`SRR-s {	Kvo1mI+|"F(U bQ<Ď#+CfLsЖMv?6e
v
ƌ]ep ۸1Bַ008g_0fhzYޢ]l$'
ѱ99#6 Ϟd/,+i=59{6y]=0rlH
ⱦ~n]js{ĞA^Z]S"%-!)id\\%W9TɄ)%!U2% %W
y<R.!OP[ȣ<GHMs,V<!+yG(yJ2BP"!CJ^,d?%B+yJ^&%/P+*y#J\+J^-dYBWrNJ^/d7ɔ\/h%o0%or79J[zY>;e3:5,
ni
ǵJЪ<Oj5wOi=R;㫴&y[s)?Wi?__Z/Nک_5yRm/f{2k=~Wj<~k3=~hg{ZM:iQ_y57j<~͚[MmV}
+ūUXWc(^U8ryV
?	@
*P|
V
XO*P|:V3
Ux#V`(>@XU<[
_UX/*Poh/*Plu#r@v;
^Xwb(nc(x/7£٭PKu29    PK  C:U            8   org/bouncycastle/asn1/x500/style/X500NameTokenizer.classmRNQ]32`-)8o@&&$or(:ӴSbZM 1gZ<kΙ xȠ.>w5[qsq>^(ku^|0Ғ]+Jޜ*|yneg
qPN1geSkkH:~Kl;p	5vdxqs{*4K/)|5v$Ix;v#v[؅wBC+:Bѭu_ ~_]dv]§d!K]EG'4mhq
Q
V:Bu1GK!f 	$i/	%AUAy%^X1H+y/w%J\Mާ
U#=Ľ/T6	R(7!&kHLSm#ZqNFEq@uL|V*]B/<yz~=X\};*s&:"'weδV-qVv:PxBE-Io*Y؞JX*:>0Vވ\:O=xcF]k˃PKw    PK
    D:U               org/bouncycastle/asn1/x509/PK  C:U            2   org/bouncycastle/asn1/x509/AccessDescription.classUmWU~.6MVė6`[
lZ(X
T/l.ְZ'~/QI9Ǘ/~G3K*"$<3;_~0
+QĢ8ũ(.	DR邏%TH$rUg]s݂WfͲ-BMSt͆U,ǾgURe1
A`UzO
5bTz]Wߗv(R {zmSizyʺQY76etOgFflVUoT[<T]]lZlF54mpket*FMùAQ
ڴxEUSNZZ~3ٝ|\
ԃ~Gڲa֌-Zߒ{tamY"Q	(pcWvskC6fR$OMZv
[T7-WT0`_9RO3;OᳩQ>>):E=z<a]%rUHzue"=:g >O~ڡ5y@3G[揩y%:Q;GnG.8*^ce#mUqWT\dU#V10"ybwO@Ga6RC
1Ő4^}c20Z!ƹT2TUƈg44FYw:$MTf<~xzY{-!įߧ#+<
}d>(22;0P@~2lL&1C$
in\]"k>Zɰ0e,~Bq;\~7,v/`6\CamˤlKdۘ*gZf(Ko#Un}dN^B$FB騌62D|@%PK.    PK  C:U            4   org/bouncycastle/asn1/x509/AlgorithmIdentifier.classT[SI$Nx5[2A*EAhIq4dܭ#[eX%	e}a9ʤs>O?  v	T
/.Y원pxlY#\~7.+s9v7>]P0l2j&7tL%Wivu@'dQ.Q,	</e"/m3
SEsyɰWYZ-vmN,[Q9E3,߲捄,#dȴurr1o,PjQR9zbqiO<Hc
PcΫsnά6)g+ZKk$Kuj)ح `
SЭGL	6}/ѻ=ѭV~-)ZQ*%"7>eޅfU4+,>hkB6=OwQ-}us0c;C 0۬yiFňS;(f<ym]C/4qL~ipywBC;Njՠ 6a	
a8paC.3LE+*&Uyq)ia\U)TM:9L2,+Ba6R/5Fk9dSc z
ÔQ2
#?	3BUD2+x"#B?} ^^/W0Wqm-s=N1|9*׉mG2F׈Tq(SE_]l/c[>q_5ܥQl
u&Fn)($=GEܫd/,L@+^G8} N{IjUџ	Tpg&qʘegW:V+XP8

PK Fp    PK  C:U            .   org/bouncycastle/asn1/x509/AttCertIssuer.classURP])!/֖xXQ2c`	Q2ORn0cVNY{wO}ph`Ef*oB[ZVJa:\xOr7fjC5-GY:'Kah=-zQPR[֢f%^Bd4yR3dz[[/m1)Vv0}dtN[;]K&j)=:he04ZL^P^KSqJNlsBI3Z2j{NoEpw6.Aw4S̊X91d;4Dcpew+~c̠akk;z%(I8,ሄj%I8&Ḅz	'cMoiަ<Fv<mPXdwT<aOe)B5lPIznYŽ
yϝbvF*𠘲CTض1t4k"rTP6PPTႂS|( @e'.CA9(pU5]W!n=2NOܔq7dC~2mdL1wcXFwTcv⮦זfբW(C ~䊰F}BwH4{d'B+}ud5ͩk`V<z=fs!`:Q [}u*2A"QY]dvzB*)1h}W3V=U{_F?m&tx	aHh($uilI㒗taA`6PK0oiC    PK  C:U            6   org/bouncycastle/asn1/x509/AttCertValidityPeriod.classTkSa~VUܢR솋VFZWY][^`3Mt҇~Tu7缜 ne*(G,[%'Of ^V0M"¦C[Nȴ]q߂#kRixiSuIxc󆝋y3I7WʊMi9%ZvnhM*}Ns
8n.v(ȼ{4\Zi
Uu-\#O#0^kPD&̾9562OJ\LKn/
rh+~C:nѵ6,i!Mt8ⴊ*ΩhWѡSyP?RwFkr;d-ܢln`eUjCDN:ջUh*F]:ݕj8buFw'"SPV7
s'p=Hh_.4ipWtUCip]20CVD0p3n
03<c r&F"HQrLz-I#꙱L衺PU6SG'O;"TA$Ƴ2(;PO(*uV`dJ/ITН'SFRK-aozWg?!{iBP@GJ
:Zcgcd6ԈgIrs#;5sHԮÔ믠7(|
X/PKV&9     PK  C:U            *   org/bouncycastle/asn1/x509/Attribute.classUmSW~.!n\VS
BH5&$Xk@FRz]3k&&'~/MfƗ/~G='Vp{so
)B#'2\gxsɲ-9iD擆iHzfD+
HZ5mڄԖ׫Ynu餻}iSB17Af4cIaӍcHL]Jee$ZjZѬ:V8򉔣via
&JBa׋͔ۓtnir.VY(+Bȗn>(2Y;erkq?E^u''MO\LuN

{YV-zJ$\:
(WpPC
+8[GƲ;oìj$@<|$>*;Dv9{>!sPN;"r~;3b5莶{:Ituzn,.]tk8kSqɯc[;n.ovV^Ҡ"z4`հ	
501
H1a픆01ߋffU#b3\acYET6Uk*N`ẊQ%?_|AΑ?eu/>9CuvT"
øoVv? F,ƽl
bH^P|Qɞe-l"|6m[/&n5qz2׸
Y=
vÄ!1Jgq/$'ɘg>LtnqTL4D~0hebHMpcAfl1)7!F$l!M񖓮6N-wm/PKMiZ  3  PK  C:U            5   org/bouncycastle/asn1/x509/AttributeCertificate.classVmsF~;Q"TBBRBËe'J$.
8`0ZY"
Կ46SϴJK3xF{w>{wO 2	D2ɢh"˱U	WJa4Ì512<vITxYMƪ49
cw/?1
iU.u3cWݺ%۔0W_&y?ӶT96W#&,בp S]iZvŬKHj6GCoL
g1)\:[˶Y\Ƃ)`Hg)bn~fA<[Zޥ-W!.Wss)UxCŹ=r^s'=wZ|^$٨[fT]d8$cBƤ2dLxWI8.pALRK@7H~H=دt.>:4E0{о|_WZp{1߅78wpWBztq/,[`{r]5azGqro#߀NFs$T
1bQ!ų3*0BEZ(XΫ8,.byq|*O`M1dXȲBA+,)eq|s_*8u'q])P(TNiܤuխkNA7"N
:oR=w߀̀%`T{7;o-BH0HFq!!SZ%-[ڙmlhs;DG1TF~l3(LJ-Yq/-i9t*ͿRQ7AJ?{HF\&Y`}FvXA"ayc|=QJ.M Vizi>T1?PK$"  	  PK  C:U            9   org/bouncycastle/asn1/x509/AttributeCertificateInfo.classWiWg~! [P
"ƲYcq(-vcH0&Lڽu[k-hiӜ/~Ox1}޹̿@~+@U~{]pWmq>w\X.+bʩzViH9$'yxXh\h{T3!u +1RӺԈFʐe*lv ])FA%B!ZL<lY<>T>8pB	P~I3 H4YG)Hjc](cTiUE꜓֜GڰjmP|HJʰn\1C㪙xm$ĵJӶֶڮ꦳W0U[W/$BVfk*2cq)Y]g|9-DU}pU.)@יn6A:ۜCLr Uuů!*b|bͰw'ZpE!UWGh@،FL:(*T
X#`u `*j
c+ysGOnu2
B!',g6:ӡ)$Usj.?)=b=5:ʖݤ8Q5+G.oKVXXe/l3^j"3t'!cCVX6{=qρtͩ5[6-0v;2N?"BJJx,ˌ(Ɓ3â=O`O(ۏrv?օ;X	So	eh	2H萰VKB!H(^	[#A@.[J*_B'AċaA6I(1W^cx
7d C!AI0Ðz"!c3mfxKDN1D#10ъE"vC:X8G[:"ARԣˁ#@%Or6kHj!7Yvj!if@rb .J2US~
?㨅Kri<
w{IS9w]8\LIibfW#xXn߂d,<wPD}_&ikaM$>&wCzM{8{hL)3̿$p~C)+ڏ	\&-Nt4n%pS~_9s5^龇1z
}
_$p~y
YCm\ c,G @$A(r=D/P:38dMa1IB\4Dwx%m^iWl
Icl=m^4櫶Ә/Nc>oKrmK:'WBTD<Q	|%X%/X%/RMuRGIMf?P^DCh-PK!  e  PK  C:U            ;   org/bouncycastle/asn1/x509/AuthorityInformationAccess.classV]SU~6	ݰ,R(5 Ɇ4`˦esKݸ4Ox7RGLx?8=%PI"asy03cAG5&@8v]7t禀PlƆiUG71۾Z3aGEC+iX\+q;l32:URKY(	8	rf=_x0vYD޺~;$MrUlYSsE&N_vTCcne}iN0>U9Ɠ˪-Ay%cFv2pIvX
ܸvV_d7tb98ž*ZR#A14Ul+x0®'Gݐ%ʫa:ubCCXcjZz^w	:(D8-bHgE8'⼈D,MQ7hÑHff#Hٽ{i/[6bKzji1RL5cobL7-L#`C܂\K6P%98֨{Tޭ,.7 oUz̵aڴۮHۍvM߄ZLpaܲwQo'
2dLAQdqS2Ƹ1-c Ռ"D Ẍ~⦌nW8dNFnw"N\¼q|$pc	*!u|(A\➄(%L`k-s}.>zozS=YRy!D~Li%?J<ΡNKzԯVEtAgp^oT~Al[
;*
63d >zgR~@\O\7>^XI~R*2Z;O+UOx17bPeW'|@NODL/8KCu J9yQCz!rhw
b
؜;C<eȢd+pqӗ%ȓ m6;9&CMz\HWW.}2>sPK=b5  
  PK  C:U            7   org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.classWG֒=j'Ɖ+M"KvC
u:r6Zț+w
v
GrRP(Ni%*i
@syouDog|fz߯^pta]8B@q)	No ?,kN򳅟,AulM㺡[wK3fn-ާ-cat!&Pc1RR5ԚJfZz*I+ORi$)h"ihE,yn		ΙɹK3RzHѸfU9APzn]<hidCz\KYayyiLi	57QmLH46s^Zd'QK1sOgz4TK-F0C}VMJpB#	-&Zj\E5Px X4SڼE!*)lAz]Ei=;9՚
aiqiKO
r`EmE}MnC[JRC@Ҍfi#USVB)/0
V9a#3	m2InVB[S,
(\rhinCITظ+{6qh:ur$Zge_mG>uôu*niԸF4:*R0i;	٤5dx%b6!+wo"}?`bV3f':VtKȷrq]V<lITK!	z	[=GnxS_qx=0_1	=
XΩ7W;uMNoh6*$X,.~WRlgÕFKo)mx[wm@\jCw*xۮn\R;c׵YG٭{m'ITz{nTCL[`&h+ǦUڰgzwk]	c[o0uN$܀zwYzO
ߢ7ԍ-8Hwn}֨]N
z1`'
ޅf2E!R.E=hSpb
9C+8Y
ἂ	1
ށ
nE0,0,2\bx{T<֊I|SnI'{9'' #-c_gdf"e7~ca|ixB	\wʈg2i|Kƃl!|IƇ57Fyqa2W	犾Q
id[RN\*ڿI
pЇJjO*"6|f5/9W͒Me#%Q2&s
L^w
K0屜õ%$Љ&>VE.؂͊'Dz8yɗ+><CƟET2ޒp4<^fQxtB3 }|<rd'wd.=~fVH#^Ϭ>}-ԲI3iI8NΘ._r;ȼGK7'虬`Fr}\Ɵ%oWeiqxZ.NФٱ80+`<ilm`[c~MW:UOA"*,75yY:vskƕ
I.6lFx\`go19*]MN;bRTK?`q!zr[gW(zd]{xLJp3fkMfxHt.کBFt8<,ϊɳ<Ssd"Vp}.-^!XF]o/mE̠9Z?hE;$,~Q,I_ۂ PK&q    PK  C:U            1   org/bouncycastle/asn1/x509/BasicConstraints.classVkSW~67	U(XF	!R. QJmmda
_$Sf7ujwwI2\a<s9M ·> PqU
Ey
]w!h9\T>j3hＦkE(-^Z͜
jQ%DJ"ADeqQhBh6gTV1&ո)^X{lzF#(Ψ	E@
DIV&fMm@o/Ka23iWHJѓh*&p:]Pu=.;S"MiMOdTBM8l9#ǗJL%DoFJUȻgwΘ7\JwnI3;gGvLU]2v	y<&(8.6S@W%4nI6n;ꌶB)ԛ=4S[im(m`I8%~8(C+"8,∈NGEt8&[@s,:²Mi93ltKh,_t׷8g6-Y{Vf^..⁷9𾊨%CnQ9f7/[^UٻS\wԯ{,nodc4"tkƌL	G8)!jqGkK/=ǼR^^8l	M8#!ATK>	/CP_Bٺ %%	/ᲄVK215Ly!*a?uaaBBM[~ zV }xqD pA
` 1wpNb]Zy)maa>x;j$觧vT&.kЗPS&7 k9~OxnQ2P,_~U?0N**+~1Ob]`%VJj'fL:+?C/nCv<>
Xz,<B8CfU9|U4ɖ]#Z^CMs>pܽ?SLPX7)Gt#bP@CjvםBukTb%:x^ hSQ>IcmbOXqDY.#GO.um#?rȮB[cY<-ۆK1ǗSͥQO+J]@:5a{eG+l-oT,g%I?<MDM-v:g&ʎby,6Q_M9sH7	dp}5v9dUD'/PKOi    PK  C:U            -   org/bouncycastle/asn1/x509/CRLDistPoint.classU]SU~N!,`Hf3ʗ
$KfkKNuW6:22vh}d%L2&9u, AHX[n]H-n{S ~/erhe莛7cM_|#̂StM۪HgXYH&
-吕6"#狆@$-խ7[۹odyW}V.&I+'0pܴP5
m޴tצH\ӫ5c)iaѨF4ژQL&Lvr
DۡQ<#gywt	%vmz|`#]FpZ	I8+!"a@ %%kFNxu&Y%:~ Ȭ(Xe+cg<+ĔfU&ߤ	aal'~֜Vb_Ù17&#U<qxۓ8F
ۂ~z[=\kUM=36:ĝ?Fdˎb]4FIurۻ2BPeA1SяIb%2dL2p*52zFsݘF<{0ƶpadX%eCBP
!wihgכv+&AQR( E؇dftCܩ^	a52uy7DEPђ;nlc$JU'_äЃ `V#
y}UVT*^cƁ: >>=§x4^RJb?7͞aP.
>K?^.zz9!)%1o%]4&0T_h26hjwWWgT$0SiS+c9^Ro$D%JPK)  }	  PK  C:U            *   org/bouncycastle/asn1/x509/CRLNumber.classS]SQ~~,I*dZ"bѨDwlk.~J7j
㦋~TD2An=}y3ylF7CG8rнb&_e)zaYaLǚef*vݬ,+Vsۉg{$ed\^+l輩ItMEMC*qH;֢fѤef%
F)|$?}^0mcdZY;P4"nI0wۍ!`DNμhEnQhǢX\MNiO9Y[5[ֹʊ}Of汘wN+ᚄ>	|nH`jdG.ÑVXvު4n$I^>fa|QcVEYWs/<.C:!cIEH,qamwd`ʃ Tn"3^0-஀{{19/F0Ũ1+ FpOԻϵm--!rҋgpEgpnk 0VLW5S>W_Xx[WxBJrIJT0S
~2B}2Pw(	$*XqD,bD\HJhVz
bR!n+e;|5SGU2+7KPKf    PK  C:U            *   org/bouncycastle/asn1/x509/CRLReason.classT[WW 3	QkCk12fmFLLS/]-Mm>h7>>	|%`v#`8,ऀ!٥x8ʡSa጑l=ǡLe3p:52x_T#Jj(]Y8ڪ9!G>%3$%dU-/KeRr#dԋQP{{VYHwv܈eG:><šq@V6VF|QΌ)#oJ˃Q9Gf!^UpeH,c-ד7Y=lLu 3/83V 铓V]˱SdiNP|޴i Zf#V,ũT,xC
plW9Oɚ.i]tu WQ=WbC^Wn*gGGQr93liƴ]y0m7l̚*9qBM0VofFwblG'\+׋S>cNg;ll)ƼݜӋX\:*3ee9d
	N9֘yV/Rk֢c;5QoҪ@D[\M`8f_hN*'orp\kuV<%{v
%7
jolƼMM螃ǠAA-:A!1Gxqq'x<<9lNS'jɍH!Fٵ[e^Q٣u%hQV3M],ȍ;zq8Z/5R垐}7x͑NxCqD<"d</i48Ġ6":0%x.LSD"`*
Cb#
r!2m/3e0f8\s!\ev4i(p
&	$]y2Cf`'%1=GXc-J7g!vsvp_GjOm>U}ꥪӧTխ>5YUO;|jK*W=6~|\!/?x~$~Ǉxn15Yy}yd#!D`>'{.%{%Q#6+ڊsL>˸I5Kx2ƴKx'ܹ[ujxh'RW|]#O=]ǋxlǷv4GP? x:%1-U[鿈E؆?䞫{:hjyP}Z+?"_
!ŦE(OeLovh|[ߠiKhgf9(;yi$:R
@RJAUT^U5^UMxUk	y)L(H
A)D}Z(%}s PK%,o  
  PK  C:U            -   org/bouncycastle/asn1/x509/CertPolicyId.classJ1bzת+(.*JWoP\XuF qC'm{9''<]%)-I+2U\RTSO<]xsZ~snp ]`&վӅE'+헕{fIh uZbgYe!Z?UᔅWr:P^N?sa{^Mpl2? >]_#vG&KpD
k~j}_woknQ(KLЦE>aRpTU_}X
+\Vu75k3{-o0RcK
:o
!n_bC#ΦEcoPK*[    PK  C:U            ,   org/bouncycastle/asn1/x509/Certificate.classUYsd=ve1I:2.4Y 4	MU,\Z	oC:C3-,E`J_F
KH>J1mӻ*!cokpzfu[i{kBJ*15kը__LּC͒e4ӻhxz\J8oj_zSy9x溩
5}#lhdC{-6efH=?nZeu,Q\{X,M̚ԨcچlgrHgJE<h	_ѤGǧ{"M3	8$XEᒮx !mesuEvd~m)B\L	Ws9-1WazC!㸌e1,'eJzZ^(%;:I!*{8AAw͏u9I>_.z,.MZ=a#;ٍ0KZs^cvRb|POQuZ7iѝ4'{`W΢	tqĜQzM
NᬂאWU
dA s
8`
dL(gx	100pa&>`p,e0F1˰̰i|!'gp%>f(3|paC^s:TwC_w	Q90`	!0
	F@Z=wmT\	(;JH!ȭjnJ'[H(t
2EQ[Y}?BUm|-R=7[XU?)kǥ~d c	9T?m+7ݫ[$>}"pؽzȠuf~N90R4CZh2z;1NUC-r4p!BНj~Ͷ PK(t3  
  PK  C:U            0   org/bouncycastle/asn1/x509/CertificateList.classV[WU
Uɤ&Pik!DMJ6Ia 3
77_keZ^^|G{O&!$
KΙ>s? |HE	pIН$Hdy	=ь'.KB/gŖso#9ˮ3HӼ4E>!,G_sJ咰4G7
	Rl	
2zМEҝՒ0aߴn;VuQ?=/
˦f˥,'ݽ٫	3OtQ+Yo{+AέiZxX8e(}InF*ĳfm4)fcXșy-[$I{s+ў),"4!$u'XQ0ܔt(֘uuzs*O'ڰzjVq#^ḨcmK3[QZ1:MHJQ?Kd%k%7e$cH2xEƫ2xMFHt:jpCh^3%ʥN
G-oP8R1{glk.-"kZyc\	*ωI*j%yY	Nq<y&졻OwH厹JΚJZ
"\n3qu-
sauP_&'\})DӐØ"P:0\`脏0W(xSA7&x:bR	b`a!0Ðdx/n3g!C{AD0p7s1|DqAO>gAq!aa!F7CXfâ7h;2UIsGRIRw$}	OQxt:30T$=8|4Ϊ#-Q@!bK};IO5꣠T/IBǺE.bPըo|5w.tC,Q6IwJXI<I#'ݩʙ$<ټ*z1c
Us50fO=5mcjƌ'UFO3vq	oyk^mCV:4Rt1jg3`ЯRvUTjZ>UZsAG@PKNt    PK  C:U            0   org/bouncycastle/asn1/x509/CertificatePair.classUSU-ٰaٚJkmkJ,@k|I.en6>K8I53~<$M43s=@
_8ʥ\ h3,ý-{Bȭ,|*g#\>9-RU9ܝ2Y A%NIF*	O[nfgډɝY~Ζ|
&_@^1LgC:@d\c,f2+$N([YE6@^Z7\)1d0sܑS)KPo<Nod%Dl'E+m\XMFVαɗ(Mz:}!ID=\htbAsEЭw\c2A-QDb f][1klQqmfW
PpQeo* WA-!<sFGf^%=:"wO+^K5Ƌ]<b	'[pha­mk5ʱKcir-9Q=c;3NSUq
Edm'8
j8w5qBЃv)^{.}
gpSCX ni@]:q[h
1!v4ƴI|BGJ ČB,
bsB|"&vT!/TJ?/UbNw"Y!S2eq*Y(o*WvtPABIPF@]҇ &{
t22]^++JȖ#%釯SԞZ)LzJ0'%r5Zfc	۸G
}J/xpOmD.0
?w/m

 +_HF JHh
@N^~+JXƃF'2ݲ0<we'ځ=#:G &k*n/(wkytmPK4ޔ(  _	  PK  C:U            4   org/bouncycastle/asn1/x509/CertificatePolicies.classV]WU7I;0QhM&))H-mj,- ʐLҡa&M}ZJ]d.,;J1Qy3}9;7 FI/^@yWmM̻jԒZ\1Y#55ww}J,%QOfbhW`O֕4O%Ԧ9i+ͩy%24JDϙG3+j3) [jpVO5$Ml(ᴢQ3d*t>35VȦ+ƺߊ+93>>*& h}Q*jٿT493Xypv2\vP	C=49𪴥5S9i4٬xM"gt
pN8//(Cxzⴣ>~thBOq#UI+E2XP-;x5t$tXH'+;_MFS@Zu%;ȗ7Df)Tl Z,c77Zjc'7A
Q
0]*A5	0$,<88!2%->ЎN>!	%.w9'c9Lp'H8!*>яi9sX1	+X/!YDHssL >#ߙgH/fsTO(9lH`J@oMdM	*V;>nѦMo'+Ў3Z+.RP('w) W
҂)EIJeܪHzOe%sae:jS!-j Ls6۴(e`}^K=<~b_ek;\Ȩ[@HLMKi':ET޷(L19izV<6H?XX;Rj?b0om[2i߼gtm֪cO2
}~XB9Ăï{6WQ%ajp	Q@?<PK4vr    PK  C:U            -   org/bouncycastle/asn1/x509/DSAParameter.classTkWU(lM2(E[k,@05yIө$M&]?e-_U=gf ,,5><y IDü@<fX]3KguUf}nE+K%"JE94&9ʽ/!qj$@fk[OUѭ)6ZU^uL>eʖض2X5q;EUq#pEʹU1]RUQoZv*[UGi[@\5S[S(kR̦sgN\[SeR829j;ǯNk9:svL-*Y
=Ϩ|bneֶw[ۧᔆ50aTj8aL`j?; 0ONůmُFˣUrKnԶ$dc;:v{A~x/'s啨bA,0=͙NѲcU7yZr6iR #W7Fd]nqVyCxa<t@?À3H I!Lx
3<CGJ<ex)s:"gpbX`p'F1,1,3<c3|06/.}Ua\F&L1E0E+;s27/mH觇j;nBkgAP2GbOľG]/#V0U]~& 5x'p+P	ύ}LM|3ֽ738D;!K$bLbaBEx|7f_ӿ8ܑщϞ244j>/LYnE	
<E#pGF-0Q|&ԑ`$xY/s+|
PKx  w  PK  C:U            +   org/bouncycastle/asn1/x509/DigestInfo.classU]SP=@ D?RiS`jRD+O
1&~gVqnΜs1GVԇ#l<kβmdSi8xPs9"y=6L89C׊V]sfe3ias8iRDŵ
-+ŬsC}6#KV2)ԶD^+h&E,[Yfv;SHl&h$afVHܲts+'As0ufSsS7i>t@Ǘ[jߜf&T4-]܊ضMMhs,mxhqZDNgDqNyD\0:A:jJ#h|u
 _8́Z!n@?_83ks5G}5keO7bY+?":q<,֪ǲZ|qDcF%SC?â2Z hFF2NGzdBXF"2#0(#ƚup[eLH$ìL31KE\ܑЇD3w%\T.Y9:v24PG_Q:dE4t@re<2QT!MWvhC(Xq2T67")i SJ	2V>ݘ;qy~FwhAgHSda)R
qOjṛ}NRetacsd#{fJH,=f8'4ÕL~PK)#    PK  C:U            ,   org/bouncycastle/asn1/x509/DisplayText.classUaOV=&CbHҕh:Ү!I;$0bm	^0;K~~'U4Ik؆_j?j}&%H~ν{/ t׍1h%UWbsi)rRv>Ig1qBN'OL,JOgY3L2Q3h6'%\*,SQ^ryC7ݔv
4,(fL4P˦J4ڦ7kYRAUӔ
kү~oS~!5Y/C:Z*T)N^)spLu]3U[WJkMF^3*z~7/MM	e}"ͤ'إB؆8C]B}!4_RUS})Tu9Eeq9*3[o9mI-kRgΌ'gڜ8&A$gfMvJĚw&>rQw%eqVLݦq?ZMV5}L3.fģG?<qG<q<yq MwzɆ"o	/ &wo٥
5Lҷo)=ܤqkU>,ƻ噳r
W@%
|x*"	a&(>g񜍒\@q3cу{zF`,{pfd+|0rfbı^D@'3֩;c6dpƔ[)(MA+lҸja	w8] K:Y /hZ6ƪ_۟ ]z*8
l_E$Cϣ!ٱlB%"g,8N0|}N򯬧Q&xwk>k>K{:J=dQ|QɷN:Tn6tn0DCox^K%~`C251nCv@8|>BAHhJ[AdCĳ׈@{p+~ J7WE!XZҨXܣmpxZ@sv^zi;}9,oȽtAe3l1@CPKbc  	  PK  C:U            2   org/bouncycastle/asn1/x509/DistributionPoint.classWWW&hъ5تaZmMimdLa-N۟p9]~I[{ofSN}߻{w{_6H6eja
56a >,zs#4
(mhU@UW$#CI=ӎ"<%`_Usiێkͩ+acIMWjќDOd\epb+TFFT:vsdzDRXZaU\xU	RNuU"zaհAۉ%ѨOU1-a8P½1gQ!h3̖?UJ=N#YRvcLQXԑ<swU;x"~uD+zxaTzTmPڮ]>z!e(R|:s"j&(ka5/޺|}=[rۻs
vFl/䠪q%D,eFuG07)h|4/ƳuiMD.J=ƹ>G(Ylz̠EĽ"U6."dn^;D4)b"vSDWhdU(D]YvZjծ\+it̘É/Ό'{*qB\ۢd~w׸2
moȚY={,XP˖\<+
/ѽEҳtPjQM'e{>+0Z$&!hLN]V^ߧ/fu!xոbh|hּyrB1A;!;j^O{p܎3Tq7۱	vlgxGQqߎ*p8 #{xq' CȎu8SO2D$CL~%4BЌ(y$𰅇-H0<-$6cH2<#gЁ$t⢄.2I/IfxAAċqt	~/~g,D<wXu [K2=M(6=S4*䍳p_LgLQL)Xt!w6wvshܖsCK 7ޖSx5ia	,V
Afhv\N=KK;b]כG?ֽ[OZgƧ&Pkŕ42,!i7L㫄[nxhDrG
lAy'-Td7ɑ=$@Rk&{
gOӛ)ӓ
8Dv0$3D[m
NG9t,<HeQe<J3>1o1sdz>E,7ZSC:=shv㰤phHrL㪡(c-~
	*r?q.
X&\tMe4*!47b7UƓAs&X PK?j5  b  PK  C:U            6   org/bouncycastle/asn1/x509/DistributionPointName.classU[WW'@RkjIh
!E4@Iqt>еj*k҇^Ljs}9_~p?>pƇK>|  Op8 !*DL7usSz.ke[{ns
^L&3sqZCyY''҉x&=\Hfb|)Z(hfN\̯=ֲ z08/M=i4M%[5:UsynC5wO0jL
ʹ[Y{@9Jͼn׵ƀn8m視
jQ-}Pm}SK[TDTYe3UKEԒy-26ҹ-(u4_9>N%kGr9q*pw9okH0bɌfjERP.-5{l+:zö浝,OLY:hCWDx[(=,⊈!A"*M"ͬSm\p$#ޚXr|熃U	On-a$!lA<7NqN+L2&ݹĿӶV[FRo&[U
^@Jk?=ƣn3$c=2ŧ2ΡKIF?>1	0Sq~$8IYyq1gXp
KcYXdB(졄16W>f&2H1|-a[aAeJkn{V޽IﴗTvVOfB/6m9FQ)j)|GD=d_.y%O?:hR(َ).e>"8	I)#Cs!Lv͝=\_r~KQ4"?^?t,I	=JerJEL%&Orpd}4Ng~tlvϸnaGG"KL/HZȳmR3*":DD:s´횿۷egdUu
Ԭ.).Ia*x6T`<kpā',
Wdg_q]
h:Ac/D;C;ymhA3t#{
PK  
  PK  C:U            1   org/bouncycastle/asn1/x509/ExtendedKeyUsage.classV[WW&	xC
^\[TjE{C&03QU{Oؗ>vUe]}opuI	CY+{{2g}`~h,v\9+j'tSwNH88h"㤲t1]XvX3-
f893+gE[ˉ.	y+tFC$4NL{8A5E*{k٬&aqoKX#Xzʏl=oƟM$˫CefHvRhffAb ffiًVHlf)9rLNeĄC%IVZ__Y?m >k*D*oaJQ=}\gKf:@^[U]JPVdAy:<_Dkt֒]hMz`T=u)5DR$(~<;d㺣>+0wM26hQ&m26"cvd/#,Cv*B/GlZQM	Atu-Vӎ|"/E:QTB.,QQF֓S;WrhŖ36d~8q~.l~v9VPU`]=3X+\Nd=Wط2UqZp͚UNs>Ҹ^"YƴcV+o=8aSA{8#qL8E#>P'yԧ`>R,ΰHW
V\3z1fщKADqEŗ,Ax-At"A$a-\aY,b4A@\`1܂8>oũ|ń%2#[*hڄ@HGG"Bq	$|KVB09e7peHʃ샟F>@S9zE^"4ޑ
EL?XO$TYPpֳ\ϸ6nbS;RGtO0FÞh c,/=v}\4Osh~I=	w%<G\)Ix?b<:GIE迳x,^2BEr(I$a*%T5}VĀD{Obҍǝ_fv1E+6·@D.McBuzWs?	3ѻ	w2obmP[jp	{\bMڮi/!ek@gaAlI&k񡧕*CZYؿ@xiɷFI3D+5ߗTȽfZv#; &5=txzPKc߹*    PK  C:U            *   org/bouncycastle/asn1/x509/Extension.classW	X/ 1FQb Bvc!		1Jla&y{(%jmqIi.i ub[b՞sy??s={GRPa

4PFC4ҰZ
k5Ӱ^
hبR
4khШa&
[4lհMCV
Wd5K+q@ViU
,Y]zU/\UY]YGIVRY3tSV
иfmeup\
Wkqu`\			

	k
2SX[YE1hjLi̘F*5(j0%	뺤VI>d+TL#%Crh0HFm9j9
B#uq7;zӴ	sƴ-@xmt	lt7l#Ycyqdݭm;:mn.;=fi8˼uWb{ [$mg՜H$پ(ksci[1ی%0WkĒwgf"{JI'1rbѸى7Pڌ+{m$_YсelQ+J<atYl9͔˼q+m%<i9kixܠ̆,1]ZKgj,%/D)U.RRvM6#jm$?Ei;v;2=}5J\Q;vM}0Y&(l'Rc'<[f>ƫv=?uFN>vw6V/O	,ژtU5bVw%{FǍɭՐcQ.vp,Zr0ߡ`&4bqw[}}MXƻ:ݤcFYUF©oQ1ˠ-FFeӰKV*9ߕ3	^s[2$mqQnծ%Smn=aǳ^U݊UM(>ÌZ*V%^J=;NECyqzٿmVv][^.Lݷ}~LowK;=j2jUIofg{T{h6/xBxU^kCx]po!)7oҙ,當_͔Y1ulQLg̨;N˖+Kxi:ItMe稜iAPE1Eijp\Y]&T4}
z2nPߓt,[ɫҴQTݗ~ӇfrB	Ubfm2Mg<NkkfxαX7QQ:gzJlцŰa{d`ZdapzC? !ndf[nem3w}:bX-X:\#`a-XPctg;Aֱ቏؏A.Cхxq
ib#GFy1WL	|b4a,a<%/3|_c:7-o3|c>~#3Y2a܉øb#ß^dx)
ß	
^^q~<?C Dx~@c"#w/qd~<[5/L0ރ?nRgᱟ̃{,n*-_ɛMɄJUV%%{ZIO+<Jv(yQICIS%w)yJQ%۔^;VRҕ.|'!bE@^|=cхȑFQQ1"ZEǔm	mĶs#be(9Ӣ4eW)dH닐LE89#b8,J;	h#82HMǱ8R9$GZ3,ϒKhhg㨘`LrEv`Q1:EpᐨdCT>,ʞFX̗!Qlٍ'T+鈂y
'B</="EsGgӹJL)CvaQ4rNo94jSL#şwWMoLtYdH4EmCb-CI<𩱃бkpR|qחS&Fvrv5GQBl[醣($;G($2ǽ!3TQ7Wգ#gXԴsކD-(ʳF
.%9:KA=|a~UnUm,q`kIBu[=@pd懶.ÒT9gGq_GaɰX5$V?$HRI5'iOK$
ty>=WRݧaIgt}H|#Ηs$-I|:[ҹ>-tOuIi}z4W>P|Z(>+iOI*|IӋ%f4Ol.4ǧ!I/^e^ӂ;PKBה	    PK  C:U            +   org/bouncycastle/asn1/x509/Extensions.classWiWg~&NƢuDjHqmDDHk*
vݴ*Imm=5rj?Kf&Cpx}}޻?`
qb 2Ipx3}kFU+ګQ}J\_okYխ@H
mj,߷vzPՉiWB!?#UQuhz|zP@jqb{-$ZhH҆|VI4!ZP#h
4A&UZ$`ɘ3^M%ҫRXFpqCу)]KTħDZr6Y-أě1՟S)Kt+_Dþ@$H},L_P14H#JcLf4=WԘ⤦">Nbid|c(]5e:)AdW=HaTt+Q-DBg4FNȝȯ!~eM wKF#&{[>YPRS{TPC	/MCեTvǈrb>$hHN#j6_()b"JEX"\KD*EhJ¦́ a)sI\LR~	ewf734cI̼=suE&.WNDv<'U-TQdy\7^^#S&=cIԵHfZ93べnW%&9'n<9@elYuuL~jMU	-uT]/6]s貀֩jWa5dbM3{FR	fkvLq:hl=qz}y=:hYS2%cl2.c22L4"c2$-CVkĔfE|%hmGlQvQNp[L_11<̠(B2V@̓{4	+a=`x)	Ͱ!ËjY[Z0g8 :!	X0axVBKh>2<'Q@1<433D!/$3%Yih5~EC9ڹ@p($pU5Rs>pj#u:..K"I	Z5
X	~2{s+(}9ȁFR-$s{alp쿀cfwJ@?i񵀋lqU	N~
c]0+Bxu/;isT=s>]	X"W9B#M?
ʬ<h1}o^zd
}n2On^si Z]RGlc̆m.Ԥ(G巈;'[LsVdt,\k d+w.1Ţj<ı&'{NooUT
X{a:6auAMV<閗-T9jg#GFCg9a9"ꨉ.DTM%|`)z;t걞	|:Φ}1*Yf#Q1#!y8!|4ТLwۇYJ?;ޑMj郴R6Z3l߸Ъ ZjgU&I)yy򈝦׊h Fȼ_ΖzږSϏzv-.+jV[ތۅPKӍ    PK  C:U            4   org/bouncycastle/asn1/x509/ExtensionsGenerator.classW	xW>F^/b[8Ф!6!1ӘvXKX^)陖6}4-#mĒwJmzwKӓ&dɖ}|μ]:
؋/J.V#pXKPU3fXjj6KBqMmF~YVRӽdw}(dA$xu}wkm&PH[Ak;i9`,ulr*W_2hiF\, $Ȅ-mv^IBfiNH3BH`<L
$q	VmfD,Dq4H3)v3Khi$lFe#uϓqgggOۃi}#2lcIr!ۦj;qhY>5eGӶ#7EiHze fQ"*u;eK3
j24zPmУ
lW҈j6#W4	E=Nr\`\aqf7&Hw~Hæ(YNz-YL˷\D(YR5{|DxA;)eSײ3	WMCMv7'N^LvSyi[fuhw$4'i)iT{
L\nqj,MS"}EC
D9;AN|<M-QC٢>s\$	{'Bfݴf٢D$,Y	;嵢D@4LG.0GB`FZ\'NzF7lQ&f6,p<mEG5HR:Ha^Mmsĕt1O͕W5Qj\)O7?gDjj	9s6WψYP[X>b/tE!|v
kZ|N_r3Zg-jf2&V<C*+^5G%9WD~ڧ$;LWL8/j';wMyPPS4"wˡ+ЯKN(kgŞϣիjDT!`	Pp9LW3lgxC;
Q`5C2
|(gP1KA
RPy8`!"8AV5 ;bD
TUxOR0a%^6\{ʰ exxx,{ު`9ަ bx7e`x=_F'>-vSx!>'v~ׁO0|aP1|a2B 	a|^؏2z}$CǇ  pR& (eD ×e(ɐbxHEx/Gʱcx9zp>6ѯ*	oYoSc;߱to"xhjB.-z qA$$&?RV`{;SPOG	?	2L`>`	JPLϊ@]U=BJEI6\CPL=3Rex<y֝E`,I<=?%QtNIKᗍoDz*J8$~5|)f_bCg]tE
I)-ƼFwI|M321tS]A~BAIgHc${2GI7?w}t/Nb%QnFED@X)/g	%\gPJCsQ<Χ2b
my;+Dp>qаT=kXۥ?-]tګ|'Uv/˯-7b9:u,X	/w-t6K(lϤ<bǹ*5PI@Yntt]].k$wl>,k\Fma<0[nrgǰx^C='K3(<YtpI9+u?ڊ6,^uVZ_%(~
W8\D?kB"鐺,sPmsn}I<r
yF_ˌ}{Q?PK-  h  PK  C:U            ,   org/bouncycastle/asn1/x509/GeneralName.classW|[e&7M׬v
F1VYv˵2M]rfKoJr;ڱ	|+2h"jH+E>P (*_[=ޛ&Z~m||sw':aWi..T݅^vWG@҈8;[ Hfj487&4dtZbW1w2éJ:DS#VD<=0NEٲ[O'x/J$گ[t

" :;U@y,Vz*=b5RҺ%:k$YS#CoN**fD%$M-3ޣ;R_ɴjOj;eMZL#̕<HuHz(}E"ZS~1jtnz"	0IE7ZSYDI5$[U̖4]i޼s^Jh*esUC}}l~dl!=F&aݐi[H{RCZt$dڨd[;ܟJ]iY~G)%T&z~,]W:1i+Ki\UD3r)mm	9$($Z%9~͚ƫCUb
xi%ikO";&?lޯ:3yg2ۚSOZ'hwXd 9pZufhOʅj;=5g|z Z43ˆI=0RciЌCZ65JGW;Rjr*ŵ<ǰjg5kV `c3'\_	KX+	$$.AF	K$."Uf	[$lp$JsJo]#]Wͩj֧:mfڠG/FJv+h>RB_G;y<]5߼Mר}rqk&
X<yf, U&#agKFQẺfo࢘;Z7)Æ)XȶTT4E~j\νS9gS4wS㱈VUr$tcz=̃xPrXº
V9xFchfap؃AA=CC#kv::N<hc8fpă>p3dSFn\|V0pv;>17яq	L؋,C2sHN0|^dS0|q4i
7eu44f÷edV0t|G+c?q-'ccߗ1Ku<A~(Ӵ> ×dx2H1Ex3;ƥӧu>A]/n]kW{VY-נ~\e%]$@~-ɵ$,_Gr@MYBUCr9FiM~M('im[?BI܇'C}xn~*`'[TYE T@XUD|E|"F
"sģXR8
wy;7޺	#'cTy]Rg?
U;Ⱥ*/)W&[GF	.B1?4,LAs,PrȂ5嚡%$:XriX!A=Lhp!(#84
Wa(p[8/S2󟋞\b=(gVτ JK⤀I24)HuJxaRpE,~SԲ?@K8VL<
B9{	gHF>nm!q/~lQ$L^<qս
ɜ5efk)Pn,~=\)f,i.EaK_Luom߲+,K3qSSahώ25tiDuj<O'-lZۘ/.~WG(<!؛Ő_OB7`h*
We6۰$w1Md{'Q6v'?W2F`ϕP!7X/Q1t֏$\ y4	T%ѹfhmtȌ3V>3h0ҋ$6!^?iMG$Psx]ɚݻ.c79fɟi8܂p.W_߈S
W&f]Q,9nDCyn
	B5rA:跑's̛MO9:&w5
nqE
ٺ|a;rJ\KWpM7|_A!5G$au8cnSC`Ov6
;9\Zץf.nSh,~mr3ru#Nόbi
]wa46˭Jx40|R\Ŕ{]ù
t\S)/B6b,0}&ϙSENJ~1+:z^\ZiKqUJ-]ڃZDEI;Ѿq
VKs	PK{ʃ
    PK  C:U            -   org/bouncycastle/asn1/x509/GeneralNames.classMsV_YIƔYJ1HSGqjb+#]'bmi2X@ϕ'3gս{=H߯ J|}8r2eG&p8fuS򼶦;9$g-Zfa9nYOi9ztҵ>8M"ZEQͶUY'gplնfp+n}َ^\UQɘEho,<*kf)sm,q8upfuuUdW_
S\.w2ӹ17sSUN4ncۤv.tV#$9@V]ÎŎhkk<dp--G		8-w+'AM"˙dbf̂UVʬr{d
<"Sǟfdp6*V
,my"˥߇LݸXH:6U ڥ~I+b xCŉCӤfK!Za-r:OdнNwojPCt0:o<HDXtI"]fCek\ Ⲅ(>`f\1\aCf>pW5	11)"L3	3"aF{l<̧dD㖈1DRdE$1oYEzrVqN,<L v KA4DB4v+;/0UxWvjȩ`(=@pV/(@PB|r^6<g0BRS(ak4Ƽ;k80`'	bXTQkW÷>Bp!-,)a
=ϫ1՝j1%oX0rOEė$J$?9&Oѧu`5=	qY'znd)O/O[q4EE{x? N	1g5^@@Tm$[Xݜĝ( {)j筳M| Ox:^b?	CK6PKޣ[  

  PK  C:U            4   org/bouncycastle/asn1/x509/GeneralNamesBuilder.classSMo@}kubMRphKqlSZ	Br(IVQA#W 8O8u%\fw~>pkUی.nЍ6j^5{5՝]DHcyG"4ZH!T!Ts91= b#sᐿσy(Z?hu}o^D1{%`tD\M|(!hL}#4d4`h8ႆLcrp:YkL1G-8YߵRiUC$
qE0*9e:Ha:cK2ղuqCG6PoxX""EQ(z2f}ٽO~ .
	s7ԍ{E#na
(ia?Q"lW2+uMrn%$m2S)%gcJαBOPsFXϏ灿PK=A:~  O  PK  C:U            /   org/bouncycastle/asn1/x509/GeneralSubtree.classV[wUI;d
łiҐZ*{A
L!IH&YK_Z,o/.4
dbQ2go_$_~`z@`p)agpez8"e6q_^Z'k}Xk	^HGb&It!L Zs㧧)35lVIpGռ&@LhƘ)yI
yCH4+ś^bƨA{51Y5U k%5o;/j(P8jj4(5_iY#tTI3F.'
T\	h7WҪq)4LuCKZLWrӕz3D()k15oB3Sz,W)mΐ}3w%ϙc6L{+`3*oI?]uۑS!CԔ8S9n>NT.NyFO_MD"|"EK"v#G"щzk;D,Łu6ڮNHYyPW+$-ofU9`
GT80oiߵDWk&]_=JW03+g|u^tyQҫ\:T?:۴JaL?8y8:;/#0+R5XC2pX2z$02GF #<}RF؊2Fet`LqqL>)2L0L2L1L3t+0p,ì ^/2$$~1$<K*%		<eH2\%	I8HI"kenPcW&A7-,7FRWteIo.]n"\q5P_B@Nzvs~
M}E4#YNNmdoỊ22FJo$_질BF	*ls>XUfk(@LAdnHM"D"bANt:>Vqު4Y`H(Lg;Gm>("D_5@[f9f+c(߶Kpqvʦ
Rǹ]h?a&yC2޲i	hdop
@08j/+&ZޅExr`WVmDXpM+~<mdbl&R8(@bM	[̝3K_Hq[(&-+u|
PKv0WA3  
  PK  C:U            '   org/bouncycastle/asn1/x509/Holder.classVkSe~6lB)J	 PW%Ji-MK[]lK__Ψ!b9MHHHLa<}^? <=/8+fhIF?^OFLQ gDNEFfW&Nϳ@EK)4hSRꘚZLȸ I5,ͺ5,5Zi"syHY
]ScֈEq-w!댒DY5LCkʒ#躚Pd"@7ce7HVR3iMI;ͲLf23FVLIYRRPhdzj(l̸2ƤH֔iߚDE'x>ZWe"F-9z*n<:jRR[ffn'ERi59&5E,?x7f84K["2sIݛ6
ᷔ_3yMRM\tAv"+SK"^.&kܚcNjͥ-;uɼ;PneiY54MIH䁚.{AOB7cfbc1on*v9N fSUSB~-&T]L~l#׫4b~kǷUVQm)lq;M8Ë8C\> 7C8£>@Zq/N$Û#a	&C&0L1cx800HET	}2\p᪄f!\p KTac1%$5zՍqz55iO[Jl8GtѲ~z5@74CRѼ_}vFF*,G	zC
t}x0q>W1,O
[Y~[z:fOD(j]Y,eWp[Ͱ%Ac|ǟ/CUֺ,?eEyTH
S*NİHV0(n/VpGtqUY,
+H}\4l+IOYIG5C; ʻqNy=uçl=)Րe X czkh\-qvjH;WlQLp~rO[x9H
N'-w!˿aBپM/ր^bs'6TYǽcz޽
n#~
o9H5*
YX	ڂ\<9MYnv}`fr[ίس|[i+}
6PKItJC    PK  C:U            /   org/bouncycastle/asn1/x509/IetfAttrSyntax.classVSg-IZx\h[HM	hMKհ[{}}t[3>?it,=gsbB/9}?5v!	AM</
P}\T㄀9iLO(NEqUK817TxZ3)9;N9USҵʢ_Ұ?t.pto$	ɋ>\!=-6FRi:xz3qE3QUIu
pmȏ6RQ6r""a S4JXɭi	jiCbJN4GQ"b	gg1=RsW#TQ_?&(}I}IYKɤT"TL0T]d242~ӊ~SLoM($)CwQQWќ7LJW
u*]VdsI9PBVrgT,m%2 J8;ht@C825zlM(zC_ZUNڔz*M"6hSĳ""v#b}"ZEpph!b]MW]?V8q]uM.`Z~uoa_W~8F+u+brHb~6FO?.qӧRs<Rj [KlTyIv?iZk/jAHJv$<j^vaHBHh+;+a+Fu$l0^eJ؆3Q\dxAvB!0Ơ2\v/y}H238	xiAG8z1z^^羢$
9vyPY(PMEC$?J>Lr*EB`
WS
&16mZ;=10gs_@s׳rN7	?u2Ah%dۓzLz cZ}f1׋Xs"_f;mѐg9md1\D_6}43nF,zffjvt$+K9{4(&}:wfoXl4Nڸ:ǗKDo]j҆8fssp>%̙Λ'"nx69yL{y[XIz{=an9`[_reC__$;
#48*<DC(HQDc|A7` eQ[/Ż`B}S"`nnli/D]gTK˕TaYv#l%=WPK/Vl    PK  C:U            -   org/bouncycastle/asn1/x509/IssuerSerial.classVmWf)!10-8IЂ\'Ȭf1ئI~>猖3?7l4-Lڮ=+vs/I_p/B
*	W	7,rg뙈c</vڈ8ƵqLHz`40
7a;NrQ 7s5vg1i-=K,ߢڣnz,f,-a[iZy[=R-Z/YRE3/iqFLwlrqzN3zX!-y⎴&l0_5)nMIIlIZ-ixs֥;m좞#DgD=VFv\kvBn"8*☈"E/℈DqJB5r]6<PRZLQe]~29pr4̺&6nQQkOg0V^نXolqQ
bUkCW}v7qYLg[7I`6N.W]{7]ﬔK]\X˕.4-id|;؍c2مiN~2*c0)c=2qxv^F1MɐqAyy2#-}0g01a\ܓ+FpK	XbJY}}c	cZ8H(2|#IGO|~%]=^Xݢk2㍔&Bzfiw(?!E
%"W-lCar<C@:{e=T#ѸV%/1RřTTG2/#SF݅'<V>o/W
7.G"RV)~D3V'RZ+(V1iW^luӷ:-YU[>oBe^U5=ID	|9}/x¥&kL79^O㻤S>]H*Xw_Sl\e㜆^CDT?PK7!  m  PK  C:U            9   org/bouncycastle/asn1/x509/IssuingDistributionPoint.classWwSUqoKVZ, ޤG-h$-VE/y~L[y29j.֌~5{{&:d9{>{ʷ?|O ;F	k%$\#MBM		Q	]vKS><Θm'E8GnnbtF7{'2nLݰz:v	i:5Eԙ͠LO&-MTc!FB	QiM@sB&1#mƤH1aMMFZDQ51d[7VXگGS2zBNF;Lj	5ٛJd589Ͱ3VHhZ.eRtRR7mFMILr4,U7ҽ֯,wmוʥ+o2/wJtOcԤZ6wmӭj[Y3`LSDR;H:s׿:eD;RDЊT%=%cr.2-n^VC4ƖjR5:{s{j.}$ݲ"'FMO/M9ҧuK?A*ײkzk8fЍj>"bEt&bD,b[DBĭ"nqWԝnBa,[Dmw/o>˥jG^<-l=dی"JǗ||:lorv2s%6wTYnYw;)yT)D{N.[v֮bI	J&w[yHZ;u⮟%8;Tb?O<z*Zg5Jiw[;e%΃26Ea2`6хdlDX-c3,(2`hƈu2Y2Ń,cgxHF+e000Š1aH0Yq#cIida8]8@,OЏ؃ï	` '~^&ߍ4ïex.{bx>~m >Ӟ`xE~ S 8S#jR'
3cqҟuaq1⎔t{wk	 B$^Y1aS.e<4+ ~5hZB|LY[y|tN`^M4?$Vx],%[/`Ni_ҶV,a`l?W{[%;Dx?"<^":Wz/`+zaW%n_K%X{8}z/RyH""	AJhŎa7k貼46(Ghkv븜]I_RtsG[$7Ļ\ĻC]9O;%R(,:."_)Y-M!/yE1E[r.UKk,*?:!{P)-xME?qOCcc;G3ָQȥS˟	Tƕ
ճRQ=WP
Wι
xLA*OS{hb/o,?F@4ȧRu+H pkYPxǇx׳x(>hy99,1yHu"gq4-9OF^
wWD_KKʺS7Ľz|Vt0xKBлL#F:zgryK/#PKPq    PK  C:U            -   org/bouncycastle/asn1/x509/KeyPurposeId.class[W"Eljk+DEZӈ D*jKGIPj}_pj~C֧Lb[ͼp{_.h%7
X)pnU`@@@P`ZBa@T &hhhhX'^CeSn
Z~DCP[(*c1
jxtD
H(ߨSΥ#ʈ1<he1ԖFeP-%½D/E1.QĩT4J4xe[&
s7ȋE=y5팙1=kHIC洱vg4
VX𑢆^'ө-;ᚲ3QHL{R49˴ĨKϓ*ӕrg$/ە4
_2cn1ԛJFK
iVPV1N;w\3?{:6<10jfR
:f_8Ld:4y'ݕ3-&͒H5\"9c]ʕ~ibF)ʼ^r
eZy3+
lx0j93;v4HEGiWIwzZΪ+k{o꫔ы-/i[R%+on{1[]ոոGoʧB
Mͽ1=l8Ʀ?BM3M>C/i4Me{b,~l¡ ;`dlat22݌F/cH1v2v1Ҍ c7cc/cqсe܁a،B QAjp1Q18>2b<x(1'O2b<x,9/2^b\^W1^gxJ0'IGqd^Gr&V`/R>	Z>[en'_Nd#s!;d+s̔-2;en-K~i2׍Lg[LwI
9'_5tʚT<' ";u
O8MP_sP)yРþ0rA>sb\!p;WQQ*s~$Ο	ޮ=iS6'+9Be>PQOV/N/Y,UeW27(2|Pej9L2+3Oϔ	(3|e~TeRNY,R#eX|;*:-OURjR^/5PKvs6    PK  C:U            )   org/bouncycastle/asn1/x509/KeyUsage.classU]SW~6	lCjW͇6PJDDh~dq%f6'N;zvZ`ʌ7o}&N&Ϟg85,QL
.*%SQpY!@A-4m
i^h*%[
Run
"eCmUjeX2	6eV#nrSt֬¨դIMȲmN7e6\ۂ$
;Ssnp}՚䤏f
fC0B,JlyCQk8yH_)<cek̬fUnwnrQ匶Us7>n1b{x|L˜n0AQ+8oljv5DgYNfFEM-?Z;S>?f;TpYt'瘰dsj쏰NPaa NEB@BHBXq	kkPUqJ**Ϊ8⼊*.R.:!:Zh,&`2U|sSt^{Lv<rNKUI?׻9<bd;sPo좮ܭwaCl\c4-
'A

I|nK>Lh8I
S|A_Dq3QpO\qWBA´!%7Qb(J;z$OZ=sc2p%
:2Q PaxiB|/3}<M<)1?Qh|4Τ_#WȭBl[W=.C<I,=-K':-
Oo6n.
m?d=)ۑFiz=MK
<z:jWwBA >NRc<A(Na@O89xS^^*%G12m\[7G
,eWl=!gr dkNԸQ	0-KPKq  d  PK  C:U            8   org/bouncycastle/asn1/x509/NameConstraintValidator.classQJ@}1jksDpUPz" ijj)𣤻As)㽙p ;R*SNfze+ĦȬq-3h+mQ۰ZOdNz"k,D&eBQesT9>*ԕ5Bǔg)7xfRG"lG8e͆r7:OϪA/k::U(gϱS6W=G<7t^PK:G     PK  C:U            A   org/bouncycastle/asn1/x509/NameConstraintValidatorException.classEM
0hm8)>?CtKqg[J&F$8 >;7xgpB
bB<'u'#d^e|0yʩS^'c*YMBrQPPg
6Bf0jÞp18JRѰVѵjYApG;*PKz      PK  C:U            0   org/bouncycastle/asn1/x509/NameConstraints.classV]SU~ m-6GmmSk/	E~-iXv͆BV\8MPFԛ^[*g@
	$39=yIm  q9(_4uM@}I7=az3Yja$K%Ԭo3-X&c!2&YdN&4յY '4CgU@sd VZ."agNҨT=ɅE ioEVZL1s9mY$QS =5;n,e3g5z*4RMreh',3nZZJvֲ[frVZFtdE%:[|SMFIuAcAFz*sS)1v?ԝLXrW[oys9/hP٨Am`irMRS[g2x0Sf6+$q[Fb""NhEt-u="zE&Z"tP\I6a)`t8]C:vlUtMRsѪ>o_V\^Byq'|=VpeDkWGTrGżɣB.X*5KF\xTOWW7WCkT>_nQkF|!qC+d.mᢌėoʐ,\ф|#ahFoh(["ޑqex	xØ/f$0!O%(DB pHBc,9|s	AsP%`üA%aA"CsHpH6Ï)Iz,54ff[^ߠ:Rq{tS-x&ht+a	ʟPḲl_l
a=C(SHVO# ßx$	t<<r?ؾ?^ (}MX|ctѻo|xNy,q}y,. O<F1,_$D=#V#䉋6Wd^	#{jX+Ng)w]
l@+sc߹Q/$8EkGV~]aV8kcɳ9@1N0w05m;lo߄tӥw`nfiU)cooBvW?PKD    PK  C:U            0   org/bouncycastle/asn1/x509/NoticeReference.classV[WU&&+`0-Ж޸`MmH04iVO<W\&U}Պ{OB! s|;6翿?PhupQ>xc}EBŠkHjS]Aaӊf͔UvBI+4055jZ\.)Ʋf3Z6-	>--jPQ#it2:M&R.-OV\5Yii#ے>ݰgDe5Pxh4jb7Ֆ
;H(-{iʶt#>1&W:OU{>4Ƿ5s.܈rڊf@2^.A%1fLMh[J	
smڟ2ľw
L89+=Bzr)ޙ%(#1iVVU6_/'mr-}Qel3+"J*jWj^8%@@@4LVn4}h#je5{*og={sHnۮQt\kn=bꡈ|cǡu
w0˕}5t=_hLK~xg	?he#}
	3#v.%8(\s[zyzT]_2qNiQ7
dwd-#.(e*Ï~
03M޽-C(d;a"u?Z1C~
0`PaC?:~ta&v;˼aO.>񣇕{m22Db42cm.quiD;CT<R9;E4e	#(un%$ôZm;	}	о
tEڟ=>ɬ5gA)~THO4:${(|rNh=>X~%dO#C}r9us+3-os1V#!G=<	.?F|Cq!9
Qf'4؞'J %sW<y)M@vsCc½h=<C*|S+t2j]ʕIqieBgn	J1>%o
\wOQtNMHkplr;HēTc͵F PKhm"  K  PK  C:U            1   org/bouncycastle/asn1/x509/ObjectDigestInfo.classVmSW~.I\6P԰hZ6F&YŰ
bDi )	s6/LR2yssܻo!	8|!7.Ǯn]8>ĽiQF5b7?V'VfYǉ$A/q]StB3S!Y*5՚;.[2ҖB	zi{O.XkjjМ@B)锖P
k~+&-4NVJ7)y ȠQ3cĶcJJ%m÷捘W	u&R)W[V(8}sb5kVAFsr+q,hX5:jPi+U%&
u[>K+2Y)}CM4[fS5 $H-ᤄ$pZB^	g$BE8_8TxDA%=tt2w^򯠗/w]َ&':αG"rz#Gv૛ZԥVF}1ʋf!6x9xZ1Tq_#tA*]npB\R4tL?⌍$S$׹\/5_
gt1Sէ
oyЇx0 <8yLyo:x=7n 0aGč!epS7#6n7
ō1,10DbnC񱛮ab|°JԬmִ/;ֲp?l)7H E8B?!
V@7*>{+$&qݒvKJC*AoY/@';3{ç%%tRe3tS&W趈E]rsQ;,`yDzrHbBBwNCSBKBPHpIl-UG
ǹ!YlJ?c?/$HN,,6rxwdҔi[3Ml×U}~ .8^Н"(Z[41]̳%R1SeX/
*N\2a8&RyG~"G-u]/y\sbЂ{DPKt$  m  PK  C:U            *   org/bouncycastle/asn1/x509/OtherName.classT[OQ^.THv[YPKP	ڵ.-O_D(Q9-u237\_  UR\Ӱir2-ffuZmYv²==.V8HvGf$CsZKloN'l1vQKc9AR9ݴ׆N|##xsPz:|l)2hc٩mz6>"E7,v3b1IDYD+""J6\>. D	>D\+t\C]TW)IWsZ8.έl_ZVjp=Uec3̼fvM,s6/?-dx p!Cİ/|9]~qk\
. BqqOB4.%cR
<pS\I.%Aܗ(l~ֵboŲo4?O_pzyydZIQxRnC7>SPY`z
eLOIz L8C:VHbQb#PKO=;a999>ُϐNdi^OŲNB݋1=G-*2
Qs%x=<uڨb `&/PK3u֨    PK  C:U            <   org/bouncycastle/asn1/x509/PKIXNameConstraintValidator.classZ{|?w1Ʉ$,$vv	 H4$>X%Mnl}Tik[ֶZW-hK*֊Vժ*mmվHϹsgv}O~>νq9}4r@oFI.(sdLqTLs.ptpAw.Y.fs\0\P.`` lk8.縊t98WpCU	%K46K:g~HeP8"̫jɼPd]{ƒ@$)TXmqXAn
`P4@fG20z
WW/eڃH?lgU1:E?jlEL8chI~VBh(Gp?T=/dc#nɲ%5- oYn&\
4Íh=TY}`u핁e-psY}=Jw˰
3 V0BPYP8Htmm0pڃWupHV=m37WE16731MϫcR&Y`HB1SM
#4fI28	E)Hl$
&a&6YIS҂j
Gll؆]ڊ6nU ZG7Ѱ ,z9 ,å*iU;Uh2Inh2=AEZ#˖2&kGDF""|EsVEtE?m&e9\WKܻ\Xj 5ؔMO4a H~	ta`d,5Fш^6KuХۂ:j-&:~.ʆUGP)i:
!
2 *f-t13`ђYjK0
 AdY>٘:c\$y^.
Fl=%BeD|hk;.8OPֲE6NihA`JĹm&4:4iNG)i|H4A!oꈆZʬN1pRx jLSjJ	T|@]%nG4u}3>mc`aB\؄I;D4cZۛNҸ'm	")eUuSxֶ:װ7365MBBdq}S\zq{6t5
xNfz̛A&'teUQ䷶#8%tdCPfD#-e8U$5K/KdiNQO<eQva0֢K1B3ئjd	}d>_\2tE)yDUi&nX3
'5yoZ푲A!&I[bp3/hKJ|7/LӊŐfmBVqSYok렴>.~Q#VƵYBK0J+iSpWnFhI"^uIfMEf); rI ;ڊ6whQ;8L%4d:I@R:Ք,(^:h^s-8X2p_.!7e[e&÷eߕ{2ln/~$N~,Ã2D]2<$2Tɰ[Nda?dxM?:xF!xeM|ڮfwij+ݫˉ;qz٦H_
>m^1(J'83`6aːoy}\'d68C_Ҥ&ԃ_NO)#e))>0I}NƋ_.ŀl2Ny[C74jJg9b|PL45i˳	iӇt.JΝeƄ4|R*3ŘJ+d]0pgH? ųRY9qNdB4#T6r~h>C+Rq he/+A簁k`<P}0鯟%&Gg7r[OH_g`i8N4Y1lVPd8+K?(9_YFDN2O\)]]pU\I`#AO)O<\*\%*D9{'(*|QQ§	a
[`
? 	&*\U+U^mpTxe)*Hp?A-VaLU3?$8FpP)J9EX
l
	|^$X
T[l
_cCUa*d 2+ZVX$(:dC\JahƫM :A+C0ԷwN/0
	I* XEpX1Yl
ϱr^fSUM#8:B-Nm3Tfq6KgاTVvĪZEUϳ9*|/Jp;\~Q[uςV$v!.&%XHPG`1%KxE=۬l9
Ö4 ɻlW!h# `V8A	N	U.O:ܨX;
]Ep`HK$N>f_$'$
.NV_!N(pݩ0@}CHp+O4Z& :f!+	>Cp|_%k &Vm&w	Gn =?$Oc	~B3{~N^G	<F8 xO'xZa6 hTmPE0'.Vܔ
a>]k!ؘ
l5A+g	p_mnZ1E5a<m	D"AGږҝF3	D Wgxn_K|Z<Y|0SV6\b>nbfƋŋǋfc@vYl:%@L,kų
?7z?c/@G%`9j]O|TxujSR=&z1F}%
dfeY O[(ƪ2Mee<'.9$z'eX2encc{3
6S*2w*=CxWYھPW=NɉW:|i:`Qxi
V]Çi+X˷GcGZοGe1,,dH1#]B;
Afbs?~
ѾI<^A4.Sً18b혹ͼ㰵p/X;^%㘵cnv,yQkǬhF=oxNu?vt?u?v鉯$9
i4pF?a=-_N%2fa$80^,^wf3?lOG<PMX&Y*5T#5W89o8jRg:tT>_Cgw.;Ij	o[/Azs0Q~>P30:ztL~1gii%-G]Ry+1+x\,q6 Eҙ!\=0]Êx$uKrskcCFQx(6
GQp(H"'a[H6JA+öS{I>I˷vR9]<~BbvE
T=6j/cu	U*`u.U`uU`uUJauU_Uêlݶ4~6زz`̤xҢHE0S!z"fxLȰ11&/LJI\Z oNwpbɋ{b:٩n	lv:v}m;*~m+8cŎ9c&}jq"}8=xwTdNN~7_aV-({:kmP@<Nq(N.UUQ@WNsNcPHevo^x^ss4HKq#ljMol00`><yMފD= !%ɏҨpSndY7R{~84s8B}!Dx\Ȳu>N.99;+hBc?4iS8uyqb$Dqd.seL#'bwYS>
y2|Qȼa.BG0giph4De%]+xVK=omfֻˢ0sNC%/8y$u5d\UkQ|9fX,4Dz7c;,b2cOhxǚ5܉\,Ĕ=<{SM4fZ0a?D2HQ Vw[]V+	l-84n{2Zj&Y8ҶG`={nj.fX=EA`xW	rinhu)>Oqcͱ"XcMcKA%
#-qp<V
j^j/Baego1R\*,%y^h(+lapq	cb_3LR`ӸnH=0'ylκs}-χ!a.mx'QdGy,'ӆ瑻Je/R^qٰJne'ˣtK*|xl=Tl%
f˩ീI"wF!JGz*4PڷFif;uU5n+fa
.~ 腬_.9Zf@9Z+8x2Ng.ȼ ?
o4P}To|䗍;}t99]l[q;vrӭhne?߱#[M7b˭,k#ۢ~!dIVɚU_t^*  ћ[qvhgb=6a⹡KTēoA3#?LI9R^Ib
)/~`Ϲ$pc-Yl`639i\:Ai~P:4!
Ӻhb:pW0^p(AGyMm[߾ͰA	W/ggԸ4҃tSڛz|)H|v	<*d\&zn)dNY[dBu0l=x=2%DBȇ72~aU}?8;-><(HČQskZN݋ުFgI!ǯSwz3Nf6x) ֯SdΟsģΟ7[ZZ:<}1*6U8%,w@[7Y\S/uqiѶF3
orX`#Q0\74d36Px]f&nKҹ{jlކksOǔ/p2BKgMy6ygtI}
AAP %Q`8fK("5aZCh(rِ|Jp
3Y./& חchbNSA&e>0Řp>?9R:*4de<=Qdxa!W8AS*eVkۡ=p.:I~q>s%F%R_/^OW<sO<_0ϡkVg&^-q4b͛\HoF(~׫|#y gK'7S 	=;w-F4"Ѽ&C4N23$冟
3CwTЈxFP^g;>CPf
pgjjSo1BmF[sR8/]lYO65i%D$!2AQL/(((VN%?t'/0]ҹgRZR+(eCI/
eÝfWӺu,pP5
wכWiشVwvy^tD&6j6~_i֑@2}8=9}_R\ʄTCqfULh"/ֆ{5ûk7wIl]@1TL5)4/T5N)&hz%G?`
2g-_4boTx*H|eq47)offr-ibJ
<v}F4od},,K]ip1')Il|8Bm|~}\">EU
|apRJ%T^:HxW8cv[xr/E~l18IuXEy2sí&I8K'ؑ(o)j?E;ى>\{}7{|TϢ!{gt6+f'1,Cبp14b,y
(/֗?&Lt^~q^+.cG}E;A\!(S(D?<%oV&	`yI/"$sΗڲ7n+Nk]&`! e~I>[dLol:(ӯ߉ޕC^t!0~'vbWߦgc!4j#sa\TӨ^{=Faޓc1{=st?myz1z׋zWb4Wug1h[Ϛs?g6}~m}m
~> ?`JWᠮv>nȑFaץ<3 ޗV9
PK	8  }J  PK  C:U            2   org/bouncycastle/asn1/x509/PolicyConstraints.classT]SW~ЕuMTc.*MڤjhKK5~.plą.kjr?޴wN&IL,a)3y~~pzx٨|J/Kiطf;s1ff,[ -pv*DlfY03OhV6.[}#c؉B>u,%[3y-2]b"C5M7Z^5@{򚩇<ӵ0βMA-Xz(Cfeg!d.S el+XݹQΈ3Ω'JqSR=s*3N,wHXlʕsRk5oڕf]Nh>Z%miiوv|%10	1l!'_k"΋ b@Ġ!E.bX@̙;Z1Ft:[CĎ,e[V?!e톋JkwSQ	9aNUUe31y#pfv!76ģqu4C.5r\clqنk;fNz"<+poH[=LOSӼΦ^9e\09g1ʡ^>2XB2d\!bok2znpxWK~(x79ܒ0Ʊ#	pCLX0er#a
sKf0DzpK_B\gRݦϏ.PIЏtsVE6!0{i
lCԹC$JA|B49,
E_*e#}LSO'8SX_`'a!N%t@7"T"6"J_PG')5i/+Mi57@
=7)CЫOT;prbA꣕_:2K-#e
nަ<&jOwU2O1a&0'|VVi}
sia:<"b|PK3  	  PK  C:U            2   org/bouncycastle/asn1/x509/PolicyInformation.classT]Sg~^ذ"C[$$D*W۴AXh]%..!YuCgloLM:L?nuўY 5!y=99=_/~
y}|xC$\tĂ]WtSg\mmkfVoX=0VqSudCwIOHC-4z4KJ
-kڤOX2kzmp%
uGMO$
C˫l1IaZ: nYDC7r243oX|b6j6Z2'kfʩkB[<[N@yiFopb9.pO`jg"k[rQm},>۪A	CNHxS[NI0"m	T7-p}p6^d7Zew^
KP"r҉a%ZehsP%̺QZʛn6~ѧ_
pT#c\mvuG>Ҽ
j>J~c8.?dH>?`8wqUYnı𑌳HIn2n#Ď>ƧeDث`EF0\cXòL9nȘr<%p|3N
@QNh/클RhkcVq6SE(SZeVpw%)/П"D>F:6)nD[} :$%#![ÐS% s
J8g"}ss ݔa%NM:<#?U3
UV_5~ur=;);"`=e2FG+melA/2ߓ֭*iwS 7׫5e׽eX_>cőyēG^Gj4l꠰~x_ "a~s>'PKvA  2
  PK  C:U            /   org/bouncycastle/asn1/x509/PolicyMappings.classTMoJ=1u
+ \'!mAS(|(rR$.%;=I *ذ@D3	)Ͻsν3
cd=%dP̌XO3X^i&9ͻ]<iݾÁޓ^'_R.gAq˾9C]J<]dvgS~qgѼiw~l\mk/;=]=@y:\Яei,x_{z}İ9wb.(mv86'O\1i4}eĄxc>բ<U=dəu|СаQf
[4lհMv
aMzdjv'֭qz6?0%N;NRLmLfQSomZ8BGVj"r6-J:hHlךLo_֙"_mpSv`T3@쐁M8,fM17ЎD;ӱN8u?:_qZG7N
H6ԁ8&8ݫ@Js%}NSGCFaQJ0t )hG/=ـ|zSl!h}@hќ*e	BL&2U!^a؊ G >`u2r%`dƳ742îA%QpNLUW</Q*8JEdhb?K㴬D*vAհGCFNW1^W~fqػNP2 ݣ8FU Yi̭H83}5VE5^$;^~`DU_u3	h K/JPKr    PK  C:U            2   org/bouncycastle/asn1/x509/PolicyQualifierId.class]KAs5MZ.m+HJ>ddd-w6gEBA?ͮ]739=/;

Rzc@P0#D7<!AWG7Ni[.L\?dQd{h=rtl[3usӸ_ףcp3%_.~n7ˬm@Hܵ$ȥ'P{D
Sz?nr\k䐅JePzYPJ$:-xurXG@-V7Bsؒ@70b^J樾b#Xě|PKJ    PK  C:U            4   org/bouncycastle/asn1/x509/PolicyQualifierInfo.classTkSP=1O,؊j(9!
hLJ:?m;QnA%ٽ{d?Vlh
vIvδM@礖
ռaF g4R2æ휫us1W_5\1lR
fѪHkϴhܲfŲSvF5[gp̛Vl:m\ˈj9{8Ku'-[6P[Q OQeÚxl"F&hh:3*-ln8$ՍEvhw85"S!av	;%tH%SBn	%m`Iiܿ@H
xPBWhp
E(tH6xҎ[cBL(! iZ9^B*4PF"Ukv./cTs͛
3E6Lm!WGAHAC4)8 GaR #@Bcٜ~bsڏ##3l8	8"2K2<ۇ+2q$2s d;䒓C22YC\OkE^b	D/i*H y	%{S|ZDB
5u=fހ= |ogh	"qpy.Vkp0YBoDs/f7XE&h1<"!~BEDw+sW_U
%.X[v{䙡E}kk*ǪLޏtϢK8l)b~6<,!_ ,Y/PKDxR  W  PK  C:U            6   org/bouncycastle/asn1/x509/PrivateKeyUsagePeriod.classT[OA-,]ZDTv,\
" 	$,Pˮ	>+&JQ/$liBHowΙ3|Ѕ)?0n㼍.0tC/\xA!l&9ѵX4έq#eiFg]X2OVxJ11ŧMK-5EHrC+Wu-fPX[IM
af2Z2׌fTKY	RFghpv3bD͘Lq$<6R
|)/9?:XVlHXS^Zg6;zC3I}]||'uFLQEWuK_<*$\pEWB$\cN&^`ҞeB3Lκ1rs
7Mn?nڨȋR]Y]|!柃/^s)aG?bT 	(SPKpKA9n)PФ"/ Vmn!]ɨEX
ܖQdԣSFze4GKqwtWo،ѿlҢs1G2~T+"JF;&Ov@
-÷a$G;l.jCZʉB\iw1<eBm3~mwm=~6z%>!c*)'NVq&	?Q N)'+h1 
lI9݊֡},`RG)4vP]ѰLcpQBMPK?\    PK  C:U            6   org/bouncycastle/asn1/x509/RSAPublicKeyStructure.classUmWE~,,RhiT	X۰!
hk-V^RMشV6vf7$?'c4(ͦX 9<33ϽsLϿ~uTzGAgb"⦂DجgE!^;tMəѬ+_ͭ[mޗr~902:E@2T.Mz,/8RQGӬ[	*Z
ВJƊ(Fխmi>CƚW}{Wn
'v3{%ϕ[슴#\+?dGZ+[Aؙ=S|sIԈ¡e|`;YV03.)ECD-6=?bӄW[^LQw:=[θW[ܤif]_Z?ޚL~5%e!gdލ[tHOPk|㯕bE(AgUS1⼊aoQqIś*Rp~)zQO6]ґ+FY=8p±жMY
'N^a涣W%Kq[BkEm\pUz˾ffbr*צdui]lw;ņ,Y|y^C.	=qt2ѩ#.n}H븈)1c!wuhxO)\qa!:^d&S2aۋ5O4\Ƨ=
WȐeϰ!g&̰I,01ljĺFK+9/pӯ˂WŢ,)|I_S9_OEi ƈn箃2l4U:DP zpLQf4w
}'Td
:.븒`GU|YCUU
~%entu
lh2餱ߨ[#fęC1q*1
d_GqzlLOdf(Fjdo_Ja7]( \nG<؏8q9\íhyOՑw uLROk(T4YdjTPKryHV    PK  C:U            ,   org/bouncycastle/asn1/x509/ReasonFlags.class]S@Rh1ъ-_*㘦)XNR8\tv[v,I'IUKި?xedyywd 7	L̷LGиzT+5uka[c*fjMӪV3ʘ/tnSךFj0s>ͪa
m̼5]ܦa-fCY-!F 9FY?8HRMNwF M{=>4䞫SϺ\vАU:,s5d$0ga4dnevK<DNW<_xihS/''|ylRh睭݂h๕c?Cw}	Vv8u|䎰
 B&L
2'$+䍐33H,%6UǱ^[I	$	7`BT1QM%qyx(PT`
B^AHݰE#J
}&KrҐk	x.aēGTZDHt5s]hR*\Dg%DՈCJSd-H~
Wߕ
E/.;ϢOK^A'M>wCXOq|/E?ͯ( PK1g  n  PK  C:U            +   org/bouncycastle/asn1/x509/RoleSyntax.classV[WW&& JUAJ@ځ1&
ު
{R[BתU/v'vɄ W(sٷaM 'rp:ȁB;vȁ'@@T%5Gk%VOl?s^/h!USxjlkn R2`,K:Z&JH
kR{4F4]&=-ǔJuDB=Bu*{ZPuotHSzDVZM[S"lV%$gࠪQ"qy!Ukq]
̤=
BZqh|4G,+j'cLeUhьUKԜv(tHD
)Xhh@>uPG5&MJ8KZ<Ws_	X"	fm4i}Ѡ*`dQM^0vRL`d̶^P1ѵy=cn96QUbXjtHj:0HLJv5LK(У\@XۢGDRE<&b"*DxDTEDTX'Zz5"6d+Ɖ2UvX⩜AY꩜)37
O̕9ָydJqֽ"
eK͊{=벲|
n:<f6=!gݙu ܝ'sTeIOі?
ض3_Bxv/:=xB,,nJ8AsS.lDsaC\.,G\XŰa%v?!#p. k1<
<óL>%PzX䙚f:Q0v8QϳzCgxɉ800
0;8p'fxՉ88e{c8~pIh'gx<}AAЕ`?ETfX*l̨4!짯/`+̀h{;(Ds>qa5#
Wͩ\#dJcw@%Ua%,7W	p	5Iux|缾8"Xc
"EE*ΊȕF+w 0	I*̑-F']ڗ̾
atm9'J"{J6FyNXNSehU$vtM=-Y	9["rih[U_\3hRg&P᭲eJUH3(3at^pX6ew)Ҕ7)2<kFvesfAE<)5JSFyƉteMtxvwlyZ䛴j֗7F.@jm%5"_Y-J1:7g߾t"Rqdқ5&9FuhOȓej_&!8`.}R*&Ónj	oWhp[xtȬȗf*$Ϻ2Xv[i+3F%5aM"sEe
˧ PKV    PK  C:U            ;   org/bouncycastle/asn1/x509/SubjectDirectoryAttributes.classTRP]i4Xr)(m
(UT6h2⌶hgxP'P.e +Zs	9ؽe,|]f9My*0T7UdLi9ԩ0
UsbIe=m*z\,=mqFuUa#mʖ"gL-)̦RL94(Hnj|Fj]=WfR>./DVǃzH(ZTJ0PQ?dTk/瓖/9s'fr8L^@dUNesi#L<mjţG3<x\: VN*\ۼgVtϩRCI2ʤ%΢^Z=DT(*KgiiNג$sBA+WM~i"/D4FㆈzbzH"3 3c0`Rz0`V@/! Pgp񢑠k1%;J(6V2j.'F(b]v!<ٓ~'*#Ó=nR:h.Ң}ސSRR]bΟRxU܅O9ުs#xOG?[`;B+<<<zxΑѭQ=klf*]A-uW4xU4e:Ya!TVx!yM"lM6D͢IYk*K?PKV;  H  PK  C:U            5   org/bouncycastle/asn1/x509/SubjectKeyIdentifier.classTR@=4`A*
hQ3/!
@I$e_GiGf}r[bA{wϞs~3f2CHNQ$𰙏|yҴLol`hp̮gXi[.C<oxxAs\#DάzSF43,0
!LKgx$2J汽^ɫvKzC\kLξ_4ta0UcZy?gCP;
RxbH:Q̂:8Z?y6x1M1
	hpIeW3GiE-ͯ̐`3#ٴ<hjAm:q'Š|\ 3Wϒ?q)%
KszHKYBz$4IAġ	}nrƭ0A#!q$EtbaTDFDtH;D\mz9zYOӷ^joxR#F^Izxz4O <h+U<bqJOIf@whQ QV!vĊRŃ
Yf2McЂA_!N\!ǽ*mO3*+U<^m;>W0+Ej&N#kQ> E:gt%IZQ`␅PKW]  V  PK  C:U            5   org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.classVYSV,B6BӤ)ٚuƔ!]d2ty_ 3M./}j{,7 3߽,+/=<\&xH^Mxam	Zn(\"U-#fS4
aѤoͱ7;umG})xȊ!ZHYEW#BwzY]s6Tʚ~_j庶
;ZLn%a[55+Ok欓/m
m"
ҮcXD0s0\Ì'-RsQwĶ4pv]]+kEk2>~00ܚq	`V휖5
DtklQjGYiæIlL\7՟fxt;i)kͦV*hNQ45E~~=]]22.xKEo1,cD6
ySD /蜤r&Z
,7y;~ےڹ[^{[3ԞB(ţ("|ɽ*zwzoQ :t*(ߣ#iPUvI*Z>/rmZ<J0wAEEG5s]DvWU(Q:TTq]<f8S.g8,R *>Uя$G3|3+cYA1<QâQ,1<R0Ɣq<V
_*3|`WB>VxH];_s]s}$(5}
]MX
&1?ețQhѩq41=<.ǔOF'̀?0=1ULe{(Tͮz'Z\f#IhfhWFc<~i]i&|߇j:dӆϿXV""@xeX IBtgлr[d!e\t2d*~'iTuGo펠K}RH2=l)wK8ęylֶ67H
cq*&3
J5]PKRI  F  PK  C:U            .   org/bouncycastle/asn1/x509/TBSCertList$1.class;o>NFĲDļt}FtҼ⒜T<C
SK`ԢbB
30303032%gd02x9$(010@ ;da`@ PKik      PK  C:U            5   org/bouncycastle/asn1/x509/TBSCertList$CRLEntry.classTmSW~n^XXF"VۂH򒶩~[6eCw/[q_g48e/?J=gBFH{}sy nt	s	=KGj&KϖM^в&@ݢJzST~/%/PQ4+f@?yrn["DbK_9?9v
ZIO߷6ky|uerghk[1]PEW[wܪ~-R_쇶(WVO<%kɴ4*C*hLominirv82XGTg!$R-UG9VRhאpTÀc>p\`a=
gSgHcQ^|t攖=^V\.q4	]n#nGyq{v~zu|+yc搙-pԽBC!CN`@7|$>h7ݳ3c͗lb3݃,fs^ 
:pE6|$8̰ͬa{Y|Jo(y}U]+$+ʲf-,1S3CV
%!bf-'|^cxZio[_sPG{4d5j!}p|6_ i6s­MFU)a"b8Au2a>Bqu3싴@~?T"D-CU#T1{i03[e
S|DIzGT}s9Uӿ_;IRW69:YF=oPKd\    PK  C:U            =   org/bouncycastle/asn1/x509/TBSCertList$EmptyEnumeration.classQJ@=ӇiTXPD*.,]UAwiڔtR2iɍ(q#֮:0ws=sϯw GI!I׫wa| X8-	rP+Mg
e=_m:t@Z|2
d]ӧ (/l\ïݶo"ȢIё`=g2parV3FǇEA=Ѳ	wk'sJW(H)XTVQDPԫ}
mfzzk:>bA(ȢBêHHdz
rT<959jinMyɓ3?%'xDg#:8ň[	U>O&X$Zʔ},ߖ1/Ⴄa>LK}PK|
i    PK  C:U            K   org/bouncycastle/asn1/x509/TBSCertList$RevokedCertificatesEnumeration.classKK#Ac&MI|o$FA
sFT<3qt鎘?J;;..~ c7as(BEpAwR1pBɝ8^ϸPP:a̍_'<Pj?Uaz{ؤBJrtvA/`REeR/{-(?t.v}OGި)?4(-X-6	zs:<Y۫-iu  C8a 9f1%LM_&5Њ:B1)~ә9 eSFȼ>Ր|l\c;"S3CSw!\!e&R%b*/t%uI"aPK    PK  C:U            ,   org/bouncycastle/asn1/x509/TBSCertList.classWwUPb@DVT.L!Lj]qgǭV
~sO{g&$-IL=}w޽rr\-8EZNqk5]30I	UC	UUq툺J@ݞh,&7"GK=KV{ڛjh^݈nP<+ݪN`,5T=E8ê9Os7ZX@	mj;y@
 ތTd=8$m$RcA	(J![~-+F"ZUy57'mN3JM7:HB*Akf?ңx""5Dca
HVT$pSB\3^6{mKz0R:#jmE4Ii?"PE~ss}9kUsSvM	XԮj(-OP;ۛݑ^&'gzr.6W\#hL3wB^*-޷˛
c_F gTgm+`eޮnhϏ)l[O7O.#'Q.1K3zRlDf X,BQ!bJD1GDjsE1_D"pETD9NʌVq~VpVM$;%,g.KbV=53֑'=)n*s>Ȭ"-ahOFqn3:oG$u
bZn..jѦA3_YwMf!k91sXm~aE(Wjf˝N2/Hv5/Vyue&4U8Ks懭awW"2:\%0Z7Êhh3Yz ҭ.fn[d,ƣ2Bʐ&c&X0cd,a"eΣd`2y.c"vCF1.=O3S CAefϠ1d]:CC!.aKX^#JXg^Q	
[ó3xI oHhD𶄍xG&"a31)/Hhe_dN}d]tJ<Unoi&?ն([ԙeʙJXJ/ @iC@k5\M*S4E4fnŮhw!\p!3jd")ߖJ >w22"0$ޛ,CVAĻsWM4✿p2#x NeLɌw8[/bsa=ap3,0ƅ)F]9ݽ<?ۨ(	"RaaSb80uoc
c{(I%4m5$[eV,S)u)Ȣ>ROE}6U}&*ԓm<
akѺJ䇕㧽|wJ zOTI(9
6$怵gI\I"z
,p:
umQ}sD*P&&|Vrα<e˓<KĦ'	kz!Pē$.!<x8U&#.w~ԂHzʊPK=+ԇ    PK  C:U            /   org/bouncycastle/asn1/x509/TBSCertificate.classW
f8.GbK`a$j	
FpczZZĂ2+IHH˴M*I#ٍzmz_ۤtfkfڟ޼μy3vʫ vAAq Ao8s<<RM׬>l>ճCtK5THCeVPwșJ264	*ꃤ^TԲIBZ\MwMKѓe4sC˩T=0rFMZ
$5ca]R29rPOK)xntȼuvDK1,'PsGZHFKV/SYʚr0AZL(xfH5L
"xZ14ݲ}޴N3URJr@sοR[t
gq%Qt4ɨi%ksN	Mcyk4hޟ2)ebR1yaN%ɞ?g:aIJĎgGSƻ#RHFtduNwU8P2R\DH`#5㦊nQE%+䭳";ڛIg
:=KQQS'n
%-PPIUn/p2Q~j*7st,_N㧀Yf{Yoeڨfi$he݊5pfP|P2[!zJ(X
%n_Ut=k&n3<CMfӺf)E#CDXDD[Et&Kv!b]"Ns=CXGb]6OM5Uy66SͤjnY_͆[8~* =^i.vYZ6uID;~<dr+[,]V+\ܞ۫1+5hGu-zoun&Xi^}ո[D,w}XҪVŞKsx2Cx{by{=AqŽ{pygnwr+tYM<vs١	p?e܍20{e4}220C@; 2eG-$826B#2V!%*+N1hSxb13gp1>T>G>13<	O2| ,!|i0|S!^;/0|MBc"×m	30b*óߑЏJ8J3%oH%$ߗ~ a?(	I8K3l#X_emT?{#qNյGj	{Tzk)#+
ƯIʔiDb
$&óAb8<_NO>VZjn#=~aB+gi׿KL"~F{`YZaǝPCP7j5I>Wx(Ip9F<iqxwMo+RK$pls6WHjp\H7y!%vZh\;`Ziۤ%Pګ&'
O;}vD4fˣEpQD
)+bިb?5v}l[QwH8LaԽf-<oπ~Y^Y_TO!%(bF8y>biH#sj3T?ېP_u8롾߉%W詾W{:@PO$=yWSn¨~4b5S	Yٴbo̢ǿRWIfp:`߽>)W"tgꌗid[E?=G<^g[[sVfm)kduvUΗvSϭ9[J9B6obCF\/PK0    PK  C:U            8   org/bouncycastle/asn1/x509/TBSCertificateStructure.classVSW-	,EV-jGЂTm,W}3t43.%S߽gs%
@;kh8,p
E@@4MWSNFB1zm9nZ
t=Ώh까ge"kPIr/36>QldҊerڰvft`dFjr>J	XV`
+!9їʇV| Dr2NʼRjh8SDx4bcn$k-*<j	f(	]oxdP
.'Y8~6vuѸ)zɎQ>yvU	w%j+pp.pn%ͱc3TL,KkTy.:ϧ+稥y
_ݯ/v?;J_UF=VTC Q+YDԉxNjkDQ/b"6(`Eu'5lRmPٍ"]αȥũȧˇ4!/!E浡!%b<4PgT.^saZnUkvrzo/rMުn+)sv_l5:#O᤬%jd6Sȭj^DYf-" R6)׭q{
GN2
Eo6%)o)İ%6axAB]^	d(C HXG	O}<J@? K/321afx(qW+k'^g80 32
)D H!0p.V

gz "6Lo(0ѝGO+\L:T];v<>Ŀ.'V`':(ं()H6GJ9ZczO0G*96Y#URVc5Yi+r(/M)KZvh>D.ʃ=|1-o	U4#he4.
{]PWC|w"hݟûY\BMɮ}E0T!IdqҼY7*[fq-T'M>WY6-r(uNVy7C3x_q[th&,gGO=l
֖rx3S5.MA"#Yܹ<g3	'"""V	(t;'_T6^;Wf'sOEKScAX3mѕe^
}ͦp؁mӢ#}˦_ro:mz#}ɦ@߱-@_oxPK}]    PK  C:U            '   org/bouncycastle/asn1/x509/Target.classT]WWݗ&L50@#-Vň4#H>]ttɚX}I(9	ĒP:Y9|9g=w78!3&r]x" (%K%+
$lKe]Y.$ye%U/J{
݀RWJ=;Iч̸ҳ39׵l.veⓂUR	xhT^g_8n
~`g6WxZeZYf2o4l ^[9M'^,YH>r݊H[Yj]5ܧ|~;p6<槤rClҿʂsizd\:Fl
4Яa@a
G4
acbyi'G>֙Rz؛#:l3AM6XEkLgf{Da$>Sv}[(8vw{{Y}ěn>wl|Ķp)c#B')$`0IR0l2lf87\
.#+:FpI(\f=,k:Nsas:gS_7'L&
y%n*/`PSKuF/^苦$i4\s7Eu||[[=C6ujXFz}54 X1Uq57l'b #)ДZ1k5YِW 9Xz9FwxSr4?:F2y*6"sknc|}h;!	PO+4_VTN,/5q6*_)\>Y5
87hzbPKZ\  r  PK  C:U            2   org/bouncycastle/asn1/x509/TargetInformation.classT]S@=B!XQZi))ʇt,ʊ6&eg:etnBQr6{s{ <?6C1fpn2<N[um*ٗYvr\m3mMNkza;vvt3d[YfhG܏UsSDB#btǰL6z63YJTS2E{&M=8U{FCm"iɩ%/y16F	EB32׹ڪcCi9\*pt#2֚I1$S_BR0Oⷢyf?,~'4bkZ}=2?d^9\T>+hA	]"-G@
pcHHLWʈB0ւTq;Mpkѳb<K?9a	g KPd}ftF]DV\/cJ-BQSO!L;ZƄoBPZwψ͵eF(hGf2o~d{IhgBz&%hmsMc%^TGxVE-Yƍ*<.y4A1e=PK.|    PK  C:U            (   org/bouncycastle/asn1/x509/Targets.classTMSP=_4XQZiDڦbZ83eAWiySmmʠkmQ2:q/7@K*F
roO=~9>Ch0
:ăe^JV,?-
5a삶+3X2n9L&/
7qqDU^㦨D7-]kFU+ahmc=\čjm0ROQ6v8V16`h@xF|}0m	9wFͰ-.!(AHpBBDIQTz1͵?=ҩn)fKU$؃ys2>>%
|o%c1^]qzw"*SOA/
R aXFDUy&zR2 )BFK2qQFL0Hݴ6h^~?^1g	!\UOO	hCb]Ls-rqC2FNͼF%`{t;=gژ@{H- +d`=knryu-v=1vq/$pQ	LB9p:
PKDb    PK  C:U            %   org/bouncycastle/asn1/x509/Time.classUSW-yܰ"QE| bX#6Ԇ>dnnn?δәNљ6qZCsw7BbI&;=w9wϿ	C|8ó\gUM5GyEK^ɦ F1KETғG!>B&a`4i]4SRi5QlҬ̟%%eڨ/jrVM)dU˜	KZ&lLgJFΎ2ŜS+)%o&``iΤ
f* U6@s(ۛE5<bFquלgN»-gTQ;=u RmAv ]#WH/dzQKd*QЎGfOU^)Jji)W
jN5e
t=k^dt5ܾkpkh)+#NG
RkP[v4
nM>Sˮv[j!:mHB7唩VyiǕtCṲ/rdưaC?N]0e`1cp !G%6QD#oj`x%-<ֱo`>'~*vy,noD<G(oȃ(U&[lab\F~ma	8A@kHcDFv?HIih߱'a%0x%l	$pVnŋ$8yFB|vYBHfW%0D\Љ|yCNH#ܜM5&-4^fM!"1,qF1
EdnT	1׹%b?v8ő&O/	=M7}Cnyy1`9!C~,
h)ᓇz
#C;	,H=0 [*80E~ǝ_'%g8|	#<X+MBTK<e3;|w+8,cuxJx+ )wJXyIO˾]45RT$}Nz~F/S2Xq\O0,(C%c}e4;k=Z\p]rYS
zF͞&͞Vr7_h+tdp[Ub1!FWOz84V8k'cP,PK^养Њ.|P7ܱ3ڮOX	բ iJw	q;"g%*I :GV>1`KZ>C`
!Z;W]PK
=  *  PK  C:U            +   org/bouncycastle/asn1/x509/UserNotice.classWfǿ)4R:Ւ"
6Ym"iӮM=D_ηxn=g_7l7	T䔼soݿ
`j/ILf! rdZ뺥鱚~9FZ,V*EYߪf- R4adZ
M_u/ol5;C=2Uʚ^RLT[R+Q]5b0zU@v<QR庥=Ԛm)fͦ2eK+Mڠ=v0f@2
--sK%V1Շnqpzok@sVefոoe"EDD1 "*℈">1(─D=)~"1; >دYw
%pЮ@~tW;W_
H3̏S9g&Lې^so.tO.ϻ\گnpsl5z"}XO=-dy# #Agݤ^(2")C.8iޥSa̱ggq\bqY0WX\eQ|bQBoǐfaq\0FY|+e0FDk"mUZY`S I#$3CkDib]I@NzgO<4ׅ~%DaB?\q3&z%K|Ag) 'o0ѱ)rO1q9zXC)[4pM\QDE0U)^2s@GU^#ExAy;M-l:ezBs䶽JpsM]3-BM[6g3B&#C1PKݢ    PK  C:U            :   org/bouncycastle/asn1/x509/V1TBSCertificateGenerator.classUkSV=
aEB iSL6ㆴuI 4&4E%*L3
LgL͝tW8NeA=stgݻ~4nHH$$t&rGa2jYXy.=	3vo8/gfhenU8w}-mjΙ53~UIymIk*wEɓ0c^\3xEʚg;Ce7
/nXL/5˲iʤ]J%L\+/g]֊XyX;^<ysUլj.ʍ̮^ݚJ?%X*mʦ?`hLk2_j=Z
jȵRhA.^zηHU~cU=|9PTrsR-F8Y;6Oьs:z6ocTg}ԑ2Pe|$WF2e|,れ2.QiOl	mT4)([ڂtSuێὨr	)EpObbyncX_DDm/M%N-<Uܣc;D946dAfNȭ)<q's~#պ,!
~
 vh[[js#rSۼV|iJĚZ|T\ƔȨP!AT9Uȸ"pg::Tхk*bgXa3g!!"Òa`
F᱂V$ 1`OL`MAO+>g{Ck咶'2@7)OR2Yx(xO e 4i4B	JWS5SH:;(j5o7WU|Op7ٰ̾_e@`WSco^rkS?oڿ
W{(X
l7Qaeע2hZxfX0VލAK5
uLm1B^ :8OQBz1\j<hGy2fĬ8KqH/Ypda@j
PK:1M8   
  PK  C:U            D   org/bouncycastle/asn1/x509/V2AttributeCertificateInfoGenerator.classVkWUij*} <VTJki=$pa23~ ]KLYKŵ]3dsܹlf?UpGtFɮw@TRy\zBfD@ViŖ',Wm']'eֲPYxyHٽ+Yu}KnTE~VUcȚUMS
sjXXMUQ,KVlg;,YrJ.N%;=ct	fv%j"kdd*%ct"sOv-OvΜ%aÈgsw5oP0:7q!K/,IopMc?az?LLLVEHcxS_sp~dZ]aW+Kv$ǋn7Bre;7{+,[WuDJM(6{6#+ғn
HŀAϨxVQϩx^1/xQK*T 3o!ĳ(ݓAS1P:݁EJ*D@temGz+	cS!p9k@:k}[4O}pLxr>p6.!S#1]r;|l\sH9k,>뱩2d/~;2R=E>]oUP<ۼmDoF=O)O~/oiP`oikt]A#:Rl㢎4 tt
.Û:M76o\1Gѡ]6wx
lf{l)yl>ԐF񑆱|fI8>ѐetE
04LAhƲFaEyǿ]ub;OTq햱~5t(
{?<S|OM=	AᦑV)CtT(+P݁	G0f.W1ɟHYtl!Sv>_Y31&
'81B9vg~v?k?_SxnExhc!~<;XriWk#u7C/}S
%1r
sиLR;y Q\
ۡ71U\/neFcwe
iI!NF+L>W?Wl?z&bLT?/PK$A  M
  PK  C:U            '   org/bouncycastle/asn1/x509/V2Form.classV[Sg~>ٰrJ-Jr b"(-'5A|E{pLg
Δ)3majw94Lm2ynϿ
9|K
8+xd5$p|D{AJ!IGؼLȡtN_Z&]I9*`tK#%qLZ:y8ƻd2%zLfS2d
[n̈$[H:G&R5m]nFhTFp"I_%ˈi+a
eODzғVT7C>t&N=Ź(\:(o[k)Lk(g¼g.JS&(8YmLzTW"ٳWM+@jL12eųTp\A74*xK	o+hRpR)
ޡNp&LܞR܃)5qpI͗]zn<Mn|阗eM-N5\lroYvw}[*2q{m6|r4H}g
*NJUtapL>'qP+g{Bx	)*n)
,sۥӛ|M	|?tp~7
s7<p2qg]7Tsݨ{,08FF0\c*C	*NcZEn2faSю[*:Xۉ);3|I{*pWTn|#Ƞ3?h<ooӖC_:ZHA/QYRq]׶@ִxjSr-G9G~zWMTo7c)G	|CD+q)ge4|=Gѽq5!1dAL!u!Af/gf0+BN7 R'XdyF_dϑFPBhvɡSL|laryFjN:XVo?lK)u\Am֮;%nfBAB-4-u(6DKJN
ҭxD\ܸ\@V`Zn[p1Q]6{QiD&}Ђ2HerG]V/kwT8ePK*f  Q
  PK  C:U            7   org/bouncycastle/asn1/x509/V2TBSCertListGenerator.classW	wdKi<a0 clK6'1ID
Шt,tItI{t ;,q]6mPIs|o߻{$7xAaA;b&vufXqtOAn}iUS\:}c#$ӡiYKFF=*d6UN&'UF(hμL@8trtD39r,(M$tE66+դj
h䂡hY5\TlFzZ!_ua=hLRR!dMmJPJbJU e
YK(@E@jQM97۠8RfsN˳rTDc#ʌa͜MZ*Krt
R҄ag+	:ӶHK
txәTnQhN$M]==i5JTjcgiՋJrR&jsc+j͙P)f&ګGN'(~D+]3)RJҎCy}`L-X}Q*b:*4=D4S߁qaJ;CWXCt\H/FY4Ymcu)xBMiӕy򜚵lRѦF}2:ӪҌص"*:K
hv!S@n=

'`u_~
ۺv`3GB8g^
ڊ&޾ڼ@:U
	NK&.'&W$qtv~hs,^=@bk,փG˺:cɑ骳sԽZt+J5?TE1'prZ=NSCfzQڧ[;T ;'<;z.EfAU"W~GMjOe~vU'RSwɧح̯}U]`?Q.w;I:C{/w[{%4aBc$2<2ć$)	[ІKg8x$l{/8ýH؈rcЀOH8{g%lB{I	vDT^1d$0#at,޳~EOq>i0<Yωx/`""×}x/0|M>/I|Q|ID_exYQ|EqI(SFcq|Kq|CͿm2CW~c'uFV'+3/d~$3H;A' |RSf?mR6͖ON6[M^	p%Z<up{o\x?R&_G7Y5~ 4]
G"p{t5_Wm_BAM{#):ܰis͗MUۭMU{i=Ueo\)S(;)nj7#,2(*Hw+2%gQnK-0AOmv
-%<_Myܤ~ǯ
ٽx-rRӲ?P?^Fct/4͗oxkLnO3E"$-S?　aɷ_RpZ<e^V#neP܊ǲw\ǰg &EOv2轪Vm{3[<b+Tז;0or{; ٮRnYU'e4p8ǭKhxh
חfyP48#fj,@Rou\QFw,c)Z8w̪j,:*?
o򳷾ixCz	%񝤃>,pII-!BI±KI[fІ:#f)
|~#7f
oxR}=]	V:^Y7`B6|]1 rX]/PK    PK  C:U            :   org/bouncycastle/asn1/x509/V3TBSCertificateGenerator.classVSW(EjK0PPD( b_.%
f7_}wkZ;8eg7u:=gIMVeswըPoy	'IVUGtCJTEiqkX#Ia
5}I#Z\,hf		a	Ô%&}"iSg@(a=MÆiiF)t\fJ$%lKhjfBx\ĴEs1cٴӓDĒc$,5#YoJ3
x.)\;4'd"eD#iEH3PpIDɸsT6,1gFyiGcOY̘hγ]qsBHp$.JHCafـظ9ot|NxG1߉BV{͞wg=WMԵpjzCPrE[c*GrKSwBh+zЬTR8SKKZNS4$0IM)16
Y^@5#zHTY͒ԚkϨ\#I}Z>+Jdɨ2hU6.cd(1Vt8J%ۆ..8S#ؾB=eEBPo<t]]bM
YDhOn#l^>'8.Q?`64?~j>nrE}fd^{[ώQ̞4ezbhtIeUNWpme]=t=&ŲՑ\-݆vt](j12DlWZ${kYUGMW%؈WUℊxMEa
NhaQu*jQ#JTTcGC,UcG؉qͣwXLz
.XDXDYS,b,.Y\bqE\\Qp
`Tp3
y0`N/c
0{
z_}(LRpwm
}#1~DSBf(ٚhkG:Q[Sx95%mMHq`'<+84Q4>K%|h]u@p	r8[~+g߅7i7|/"ZǾ
^CW?6L%+&JM4w4y?VǮl3is\1Z~=gٛF)}'ΗJ7\Q*HdÇz%ږe| >wDR
U˒HA*9"︖A'[Z`/{4VRȫlu1jVp`NJ㣿V5QI n.S}YI>Xe
'ZҸOc>-
gАi|0ɂgP:#~#^ɳܺgufV-۫.PKk'B  0  PK  C:U            9   org/bouncycastle/asn1/x509/X509AttributeIdentifiers.classNAƿ֥*r^"Jf]bmSC,& >C6͙3sng}@.0p@..	4ON@S*IfV <S42'4%r\ڲUr\G-kJvJytc2N!gZ@O`hXv]]Ț@g*9fmkֱթWlZүDt{ղN9d܉Mh	$oK.Q2et)͙JLzuȢltk{5X ı(n1?-)0DޫV2+d'̊JgwSAJpcs'fC'_vc5ˮ?TBdS!L{K/O42K%fkzc0Cacq1Ƹg\cL03zv,cfdm"cXe#%]z3h
|6oͶmܤϳ	/t\1Zƴj:uTRhqaGf^E[?6؏>ض+˶I٧u<>#[ulE6+{m>b[[A5PK8h}    PK  C:U            9   org/bouncycastle/asn1/x509/X509CertificateStructure.classU]WTa4Ū:ņvV*юPR_d.i`&I|\K>]ˏQ9̀k%<r>}Ͽ ӇRX95	-g%MZQ3(۞yyM"-asAZUkfqc7]_MǵGߪ+ GfnYt$QduRomZFG&\rl	#[=Wm3Wׅ\_zj? eUm<3tϯ㹹rxJE<nRtoޢ\6%I;ۆ[Y(TZ5"D}H-yz#+ױH!a"AohWM5:A**'KB2_mf<t܌13YZ!ZIfٯz%:ssXq[O!d(㼌a/ɸ ePIv4#j=qchq!T$f:$VrM^SNؒ%pjzFm_A/;	'14!r(χ*78D3dQ=Cɪ]t2}|LNriZ	3f36O!MѝӦ|TqWzN.5h
^EVxKx[Rp)
WЏq^N*1`,n*eal?T|00PH2>Jcq%;+qx4PfX`Xd˰Ḭ̇3|Jw(v\e>@|c7Wv0J L	dYrCBVägv_b{72e6L!Eo%wߢO
Cv%I	Az'2pvϴgywдlj_Æ=kٞ־s\8'?vЀ4d2L[	Kѓ7ݣVOK0}Tt8F;hF͠#xf16c h3F36ی3az;F."g07PKҲ    PK  C:U            :   org/bouncycastle/asn1/x509/X509DefaultEntryConverter.classmSW
TZm5Jb#Zȶ!$ ĵ.l7_ߤsQC2?w翿0_C8%M.	t@ϔ=ALdiPȐSʏYs4
45֥+_j$)KFXrnq~e=rcCtG,ҩG=%B@ by9e,{]:T$RU,q
n$|)7eRfزF`{בn5U>YX|ۭ
vMm|jQn5x!jjիֶ%kR接X~ElgC*_:R+5Ϸ@@:%>VXRWmMܼZ&dԚ;v&Hc'P[~h8ᜆ!
_i8ႆ5|ᢆK#JfO5gb&Y:G|bϔ]Y{SMƟhw詹PhIAJ1za%:ttSitMW1>D/nm]$ccW	10f¸il#H30b,3QFb F5eu@p_hQ؝7M ?X]%Xx[F<jNnWWp}ehK44PE~~س[dx'W_Ibe\fc2d7!~#
Hp=t#!ڴa$}-kxn040PKi7  N  PK  C:U            .   org/bouncycastle/asn1/x509/X509Extension.classyXǿ#XWbi
`pDEI:;;,n!mMbkazgz4llsNLF@|}9 lƿTxBBR^AQaF&fM
-

)
m
[*\Mjv
TFY
*t(t*t)6P= z@ipʖTӖ6l%o1P5/`uR6(o%no_mܺ)-NE8HHHTf*R3HTdSgm"im[9ukm`1g'cXea'q˲.{<ؾ8Vo:nHӎ7bcqnڝt>t<w+S??25օ,-~m7ܫ	(D	<篊c96U\0sy{۝>b[!EعfGcy3G+;CsY! .4!7iʳv
m
<Ji6./CXN	;q7UY-^b
-9e&h ]3s(sAV;]3t
v9BK9yNv,͎ܳ{ǘer͙n'fGh#II{lh=v\GYB(JwY^Q0Xg^޵-3sv-[:=/g4G=W.V+.7;#/Ycm5Hc1=o+>xP
TNw
ؾэLRןȷ`d	2y{~nv|R{R7Fojs+Cӧ˙Yyz+':LC1dc0è
EK$ʬN=s:Y; MQ
?rky3B1y"sy"3GNfW<ܹ0f
l\h歂s󧇷H~bWX=7N_$Nz$,XzYXYX`&YnaIX,,,X|%dɳX22r+pgAm;>LxzKe	+؏W%p#^ux
k؋ח$F7-,Xfy+Xw.w,cy?˽,` ˇX>2|4},g8\a2ۋ ,qqS^3,`T/Cq*0IG/gGF/GzOg~O2rˋZvCE
Q
@{A{Z.o~AGiߣ׾S1ߠ&=Ǵ;{گ~T N'ב]%(!j¯'3xa<qWܵ:w䮝H'X'VKcO͇ygf(F5
xuоĄti	qS`c8y7L4>}kO=ɵA^[6>T^R"XOgӽp9~p
Z7v/	ĩu2bĥ;n/۸C
#'V=m
?	\X	[\q/pBs˅(B+.\!
J/W	Kx«+\-5_D
VF	ExW"5aC3K&\"R/p/S1}?PKjb_  p  PK  C:U            /   org/bouncycastle/asn1/x509/X509Extensions.classW	X\>xe@"B6bČaF3/Ky8
{lm"F&i6Dwm7F9ރa
_s=sϽ3> YH5")B.JE(-B"R*EX/BD(&6EZpD."xD^&6gcvE+k#rR*RNN[ 
yJ31
&7I^+MM{U|V|V|V|V|VW)jSզ֛5xjLkkF48#nՐ kAyb~5+bE0roHv2T0rCL	z:9P$P=̫S~%V}A~}{Sjo,j6MF}K/W´O*H$74ڴS\A	Fe\
iJC˅GJȯ1=90V"}J$h
j0^
9棈5?.

Ak4Ԁ[bz$`T	:/ 
LK
>ؤΡhF]jScu :a%6hSªg _+r$ђX!2cA
#j!OTτWؘ4wbC7'{qE(|A_r0po^-
H4TȑPeU ُ8<\L;EU1,lF9HI#*B pƆaL	6&[
8%TR=cud$*
` s91,zj8'{9HJ=.9~#ZXiLB
,ָy*6BѡFC\C
#&5^ݕ'#>e@?FN:EBl`Ec=ϛ#}Q7$\smo9l5<sZ74-ȸg6!d}2XUzf0^Ukf6şq44O:!#56W4.3>ӥM
@;2QaFV	e|ŨI>&-]wp ]O>( >*86dS×%ijrUh+*,irPآ՗:NO*Nuch%m-&M8WLYa$d:+CZ>+SLiAd;=s]RLΣmgڴw,&^5Lqgy?Ig՝Ҵ9"Pk|cxgsI\vaX:9]'$rCnc4fcК.Wm,=KqZ)gr:90M8NJ0 y	Y	%I%EDLBJF`A^}=	! u>?B $\&X%[r	n&%J$8Ko1	 $8HJfw_@q	bp^$~Q!"_x<M3³_(|7hĞ#|
w@=	~@C'?%	~AK_7/L[B{W	@G?/%	AO|1l,\D/^p^C`v\"@0M,w8A`LFhQ'iIE ,slcbp. 0`AΰyKq7RhPw,ߊװ0nXU BjC`,WHh-u"H,RE-ev[}"H"H^tEjH"H~c,*tE
z/!wp0J1۵;m`z
'Q]Y'q8Ӎ1Q7Tɉ{|Tg>pg8c+l+<qY5+-G 3Ǟ['ǈ%TqsN8܅v>.E:a4κa*v$c[q/8\Kݶ8n;sl;{ǘ/v/gUsavJsBŘF#\щ sVM3NE ][tǍKp1v~~TddpShMi4řeD,P[(Q.ˤ28[eX-TB{a&/-
2bnvq6ړ0/K{M}Ŷ>5R}<l,ǐ[(,rfa|N<oN'bOD="8غdGSYao%hRj	+$5N`?ݺ1dMvr;gLKY25~q(8"$HJn;|tIN&lRN`ovNF8,ň5Ewp'gW1ȴUdԫ`[-8K1 щ="2O++*$x$ikdlc̟'3[1C)mۊ8eİ-֒cl~'Zoa?=*33G5u`31tAߏ
=XD**l`6,{,.+*-
;}Z6O,a݂Bfqyr.p~"畜gss[8ἂsU|
9ݜ/伜Ep:8_bΫ9|5K8wr
p~煜ps9/8g<8gr,΋9qxgPKx  m  PK  C:U            8   org/bouncycastle/asn1/x509/X509ExtensionsGenerator.classU[sF" \J	C(%\ZPhB\Hq0&`יLLΏbzVVHOj͜=w7oMlkԠk8ᜂ3	URfr3%֪
q<G%x-TNԌw'r'Ww|V}O0ǫ?
&xA{_qjb
 B3?8+Ъ*H:NMPlYo2{60!2j.2w%6dH#G\yT2ՆRqqJ]&98U7<{furսk%x!Lc؃$pvJ<Ƒ[<))k
`ֳ*I~'m*&U|₊U\T1⒊OT|"bZx6
Fݝ'pvtYXvMJ7q*5~xx:{K˥J^VG
cR'8211yt3O*vg=ZvLˎ n`7qR㦁3e3|!/
rd
i|%]3p+U)ŷ:LHvĺ9)HI,R<Ց42R<1G:6t;f9+Oo%kpPz7O`l
nC}TgQAnS-lH[z<iR|wF3do_GHK}M&o^hcF̟7Q0D-< t4t}W/ehu#'&3ݒQ5QaڸVk܂2dL7M*(21M:iߣNĘ|$cd0-TPKYך    PK  C:U            )   org/bouncycastle/asn1/x509/X509Name.classY	`E39i@pYA$)Z
c)m`BbڤmMJ"xjDb-ZUWu]]=u{׽W|IK7of̼y{o| P$V@M.(I@@@P@B6"M@[Dt
&bp].p/-
^np;).wG&>/!Cz<-OxQK^m]of,S0Uy+l`ł
L2gvc` 7
bP3kŁ=ȀMc`ʛᕸVzʨ֬f=5ּ
flXf.9h̚U8k&ln\Yg,,9EFS'p4csҌK) ]B$IrNL-N(YhPEtQr}QaLaHZTll[d&-k&oPqQS[(/A,҉kMeu+k,댅XD;
̼`\YuaSMe:
_JjcS&j*j
tex`8``7kP nB_*Gh2oMJ<O5WԠU|U4bMkK+˽4YV7/E㭴ODa~Mp[0&jw7Fbx=WhJ(vyie-[WT6$*jJx~

&uE0Fq|CRVcXTZ'W&5q]ɾH?;H47Ҹ9
~ո[>&q;^]7Z]YZQkJ+75PL}X][Q_^kn7hou$'ae@łHxG;Qly-9su᫯ZF>:TYm]MEJm}"U[ɜʊ+}[j9.hFҽ[\󮩯DWFN}83E'C<>%8<Lcñx)
礎jvc9@)' -؎ǡ;P
 [0hXo=sdvtPeחcXFI4> DmDڂINrո#EjMX^GЪ۴*F¡&r6xF7EzR}M47
yp43(IQ-3A:괴%Yx2#j
%q S<VDl׍F"wB~8/CMF~ԊE6$Q<L-A<`4b~ۄu-^!BY%R7UwiڍH^é$,A^ZnǪ"ѠD$>RقF~ dBP`?IɡuonƝ(
ڬpkDERcC1e6)f6A(R୮Д8Z-4d059mk`xt)<6p$92C:OI/pșx"r%bLr7gѵb\Ay
Bn֌I2q#<dPOZF"@,w43mp}i?&"іF|~M;x[.(͖^=c\垜7z籤SH:jG'܆N=9W-j-L>S'\lAU9{Vz^	"M:J4+tǖXj+vR}m;kVZ"*:)Z92%7זi=#X#F1(DˇhD]HkY"+X܎%҉qiEorr3]E0!5)guHW6d5eDO1ł[qzΈ㕉ə^ph<.DV&H7joFW@(:ńx84;832*	h*j7
F0(ݮ3	Ctbm)PJЩWeVWn(,BK6Kk?џQUw@{~,'~&~%#"\'6Wy-l`U(/(GTc
W3T8c

3)l²
+l*̡q
3TMT$MV\<!.V&SḽrxAO#7}
DD"^઱y3*guO$'ҏiǱ6f\Jnb=*'
2~	%ƇIMMH3k֧?}N܉ye'kNjڙPBiaRaH<*:"F:lXu!hSIaϓ"HV!?mj[}sttNaL﷮
7pm'aNyޑkgD3?GkC>b+D>[~j\z*8!J}aKbc?SrI._oi	=tć_sV
sv÷\~%K_pc)CKte8uZ~<ȅ#_64:}׏(}'ZWsl
p3<+Ux&v
_!O(cO|}YeY2[	 *	![Fp;wME>	<@pAC_'x	=}_l*|]ߡ^eVp)^u*# W{Р¿a=lPY>RU9\@ԅ*`תSv
`׫AUY?#0BE+ݢl
eR6~nWMv
0]*ݭ23ݣ^b}*U5;[,"|C}70#c*=	<ICЫ7Y\
?dϨ,- xy^e/d"w^$xeo|[J	^'xM|-M}w%{?$xG?&	O	~Fs>$/	~Ekw'	Dgol;?l}M6m,H3FXu["p ddm[Qdn匀"Opcc!bl̴-4O J0'8A`00dcvLg̲|6I0`Ah"Fc1^dcd`bc;;8)gL#8`:AAl	J,"Xlc6v;F9Ld1nd|J&sY'[y#lM!6oR﨣g;D QqR(L?3wŐG>n}\oz{ޮz{AZomz{^{No{Ko̀>ޢml3(>0>Mz-e'Sz(VrRrl(>dcy6T)=9pG׏ÈWg	\/] \/;x~9zg!#Z
fJ_ݮ~~=c>ͫ/IV>)d@&uY`&.<VyghQH%~g*6;}|?O*8-}>`{y?)^崘cG}^<VbuZ_f.s/T:/3Jwșm|,j/w}6ܱTrrdr9R@9}#{/eiv"e]Z0wAFk/Gf=GOz?b֨A(v*, aAq8֮ xXa>
k)T;pTX -uK:K3.A!U\_Oa{Lw	]؎r=S<ϊc8
_G.P k䒱H)*y7񯖘fͻ`tt!?Ҽy
QrXGCvk0l0,r?i6֭$DyI1`FoQإ9n>
gèq+hnZ~uM׹A^;OWרTVyNbןA(sR Q"-gߩ/G{aEyZ~wpcb&"'Ͷ}:x֌mƙfӇt։Ě7,3S둙Q+G[9}.`
n/WePu?Ө*h҃˾n
:RI0O&L:g5zTL&cq..}{a;g${*@1l<",VžYg*VLa-pdx^;<bÖba`wb3
No^gZ

O8[y	=kE7f!2^vCVrtk$}PZs_O8>)7vO+Z[vV+> 1|ؘ̬'ڏBQ|n-E㓞םtm]րn^ԾA9.p}0XϿS<ϿA$.cV`QK8d՘/X 8Dv#R&3M}|[,pZe1GFS('@a*Ekb춡Ew`%9RSf͐9%`EC1qX*2ʞsdﲣ0 
q? N!oV40VDPG,&c`2"SYy}ZejVӂVf"sV^?C+C&o	8#lA۫1*M'	&rwsTIV(lM}M}#)j)ƦHɸ'6hbtM,\YF
f^x$}2<|nuГf]cP#k'F?/unwk Um
Є+#0:}|h~IL1mZe`MDn8=.nՃ݄CxV̾S9]ā$t}Y$,vXvFfsT4r ~֌G[~nuj^?gfOr?\Mt/XL܉*]
?J0+K*-8$ԋeV l

V$N).%UnUAlɮpsRnV~!|X,)T5c¶TX,xFEqX'U?&~3Խ|^r4,e/=^fZ45ɪ\hg$>[j@~b(%W=]"2f(3r+VAҍ(I?6UdOm|ds4ub9 [tsj͔fsʋ(>4inLiT8ˑ05ӳ
(/SYQL(i|Z/v9Ug6Zi\lð;&B33
ۯlE7ӏC)dʴob3iF^-Kы=>+&g>p_3> %|
]_\l`&9
M2)no%
;՛~ò#?{]Wo./_~)O| 'B ޳X}y8>>\5FQkQ<vYxQ0
o\+jrThމ4uUZeTK<3_&@*2j:BťòD<C9;?)T&3xGN?Ifތ~pxeB׫kϺn|;Sp:wb:MM&ڣu-[jt2[Yw[95 )6Ɋԁ$ q:ݭVz&Ζ$_Y=+<&?;Bi5	l]v.ۍԞ 2Nޖ,F CMMt!{Pd-4%jJJP2.3	*uXydf;d~Z7OꔬN3{啮w!Jr.j
O.㗒u"
r-s!k?QZRe}W|
+fb8*1SKNT蟕/<gR>z&']/h
}c3O}yJ;"kg>N{jIgJ/iUҍΒtGKzϐtHzso-rdPғ%][$=F%=VH!
'鈤GIZ9JzIz%mtI7IZHz3$]#ik%mEΖt@NI᝽{7|kR/
|o6I:lt;{
ZeP^Zf+{^~ kj.D$Y=|=߽N~ln/2F{Ae
:d_`Э`3z/1b_h.1
a_c[5ɠ5f<EO5Z4^owtȠ
:h/6jn_lЛ35zUWUW|UW|UWyU)gySM9˛r7,oYk]t5zP>OHA	tzPLcFWotzS:U`t֣5`F=F3:|[eF]gtG?3:F=jjz6&3:ACgt6Zt9?k?UPKz&Bt  >  PK  C:U            7   org/bouncycastle/asn1/x509/X509NameEntryConverter.classRn@=Ic0#胇,L$X@RSER"U*S33Ɠ('G!C*^;s}ιs̯?~x-B"*oa6d?(!5$P
SJ烶ӈG'@+j̉JJ\xtȒ^.#+ќ'c)3_~LTjdwNyZ[I'fbd8YL6탽iZM{Fj^xǺ-^zT8=-SogpǂcayU<q˘q[7d&%sZc|LA	SncAXX66lÚe;fdu7+r5]L&Oo}4j^5sZԢK.X5ũ\>³υ ?PKt  a  PK  C:U            2   org/bouncycastle/asn1/x509/X509NameTokenizer.classmRNQ]32PZ^hD1!}xC)iN	fOȋ}hhI4tiAnk}9go? L`A|+5O5
qٜq^,
ku^z`3yyP+Ma9kUl377ʚO"cR2tVD煕ضRL*V]0y7''ms܎-"/qV6p4߽!ᒆ٥fϑM)_Tgv]d"KoԚ?t\AT}:.0:/A^yIC7F|
	1ze؋C¨t	z
ª`=Œp[/<ċ+<"e7).y.cicҪ~*)BHGp'-E
 w<DI#QiiD;*I|T"FهOT峣!tO/!
QUٞ7ʜ2OnRi`2rxGznOa58\`.9YV\1%GN&dUb{*cUxjX{#RwL60w|Cc0-n1ܓWPKQ	    PK  C:U            6   org/bouncycastle/asn1/x509/X509ObjectIdentifiers.classySF_	 MeK!B-Gܵ[r%q&w?IL:CuCh<+e@~e0`c2xd<Y1x^d0`9/18e:=cW5
2)0tZ빜n58ii LiɌNu#M5Y9LfQF&ZЦŌ-.u"d7.:^T(F(f(մ;뛌LРr[-)n:k,Kn]a^]᾿z
Z/q7 jۄ*UGr6{,ԅطlip:DS#ʛi+Qz>ǟUyuU7a0K[ްw©ǹm?g;
O6\+gZiD{Ɠ5<vk~I;FT)a:zN6UL^G^8xx#o^!gEn)kx\Ҝcyð@,{+e;1x5u
/wlUv&蟪?X=HrYB'Eap0ED&3Yea@X$,ʄe
+	x&kqu
[	%$T	8Fu "N 4	-Cp	m
';EcoyFЍбIWtQҋJ'N*+-+]VzIJN+-)Q:Y9<T\Vo%~OؔTdW2FQF(~+(~$(~ CQPƞ(d<e'2a};=_=-dH)G&->,P6%-JwNއؖˏ;PK"Å    PK
    D:U            %   org/bouncycastle/asn1/x509/qualified/PK  C:U            8   org/bouncycastle/asn1/x509/qualified/BiometricData.classV[SVQ%mӐc
-h1LӋr&}tJg$e䡿vW`RM{.vt@ .rM><˓Ke:whUKM{pmFm
t
VZd&mgMg7Ҭs4K7d-o+X'|V7ã)qvivrD ȫJtxq*@˦T1,߼y:[S-wLlY1mRgN&tl[s]9#嬡dbah픶1 vV-%^JU^99uo$o${ŧV$ithͳXfn1x2l)hM5oΝnf*d1:8	m:$tJ,K»ޓ-ኄ%|@}>v#AK/2	r;J
}vn]WKg
aӗ8ɴp\@ŭ"{-kcX!n!O\{?ߺ`,|	j%vT^]T ~u3u"WU^5/D%^~KfU|KWЊ
>z-Q@A;b
1!24b1 	Ab1⾌|bQu̱x(fd|^,X¼><#Ȉ`	0kzzݳS>YC^	Gӷ%8R Ѩj:2ėryW#o1~-Z&#/~}O8c>i }?r#@ۗH`<1,O~<*UXoL# A+S{!
@
DX&t}0w^7uFT@xFj~ql'K>Zn܅fVo+^#ڏJDLl=+x*>+n'fuǎѓ\wǬEJo-d}RY?1(QPK=Mr  <  PK  C:U            B   org/bouncycastle/asn1/x509/qualified/ETSIQCObjectIdentifiers.class]OA߱nQE(Ԃֶ[S i,!ue[$hGkl.t/w3?~~m
W44\0aRÔi
i
bB/j7F4(FGѠ
Ѡdc&{1Y-G"dNtwnco7š8Ξ!֮3GV\z$kp7³Gzms909ybvW5;N-kZ/GvlV>Cʅ
x`:t_vj?	J6zߧfrͿo}vkP/u
!C'd	Ea0)@.X%		yN(qHl<d|G
I9S.CP|P.RqR17iOPV%co(?c/+_Q>|glFVS	٤j~PK    PK  C:U            >   org/bouncycastle/asn1/x509/qualified/Iso4217CurrencyCode.classT]WU7I3a21)Xiuh	0
Ҕ~Q	`$&}G>kQY/>G/&6vsg1?<0{1p.Ը6gaDRwpǿ0+.n{e~die}1JO¶nV-ߩ16x7yb*57#n1۴
fgPFosCSwMnZ6~afm_amA]հW`PW&}S3kfg\ɯ{)^̪KѣY-۪+va|Ǐ,R*&:{Mur5hx3ә|^(ꛎ<$&G\ڗVh䣺m|k=ET^U7`^b8:%sLMe03&?0(ᔄޕ0"ጄޓ>Åh`j̐Tu@ƈ~l::-;l0)t|{Ȉ+P$
Q0$'Hb
N"#ަ cVYWe!'#k2ҘpS@^˘n˘<7p~Z)Mu~d}`ZE( }^8~	pDJ!!
($>"
YkCcQ'Ĵw=!7,ӿ+gZX;;Ţpʻ'bax0YT@B9hj-
Zdj'-? 6v#]~-SmBt2Ӂ
"mCew?@bn
I_ Qmʪ#1H+R~<v]+0F\0b*~DhP@w,3t_PK2Z  $  PK  C:U            8   org/bouncycastle/asn1/x509/qualified/MonetaryValue.classTRA=KEDA.J K{C`XTqIƸBTYeٳTst__Ŧ o`[.5jftC(%ji3gX<\&Ì-i0[d֢r	ģP	ǣ4#Hm첸%5
TwMYzJ
4hn6ءJ5`f?kY+T-kŭ@Ȉ	m'ŶI.
K2xc
E
)b9fwU欕Ы՘ñ)u?7:K9:(sLu"jni#g
ɋi"/ID"
82 ro bf$li֬꒞8NP绦E;=TpglB?[Qf#9SV͗;v~]aRoAh/ʨA7"zd!pSōK]ʸ>x,Ox2yP-&͈6r3%cLp3#$tbY	]sтuh8Ͻ~k~7MoPūUۋZTV@(=V~ޘrpc6Hsf)r(yb5~FT^`<?`#`˺wizn}\Js9cXlt[VOX<vҵsMNCS+-9q{ Uc)燝b_P=qVoPKy  N  PK  C:U            6   org/bouncycastle/asn1/x509/qualified/QCStatement.classU]SP=!P@P
"mZ0o
,)?Qg8Q|aswܳgޤ|`ǻ0wjuCUqM
)K5bH--fɉZmk&lӥa2>E3 jRwU%m	%djAmϲafrSY7FsLMY	MQSư2}32bf\]OoUk&o;b	Iks38ܼAstqФV^\	DK2hCem_
a-ɢEvbNueQKۺj4h$Y@[Z1E8)	Uox#PM%pY=\?o`Y]7RQSTkx^tˍ&8W*RQf=OLTHQha7wSWm< $IHB5<<f@B
ncnFDt	7"cTL7DtHzcq8}iHKi@nbB7zȂJ0^-:pV>;#u|P/2,CdԚX	a<=,1(!pfhaMvR l?:gDϛpqzG2	@e
l'oZCt,}$A*xѱVly1nctX8]-ot PKv}    PK  C:U            E   org/bouncycastle/asn1/x509/qualified/RFC3739QCObjectIdentifiers.classJAff=@mf"JA 	Bd;cM}CPPўA32/o N`HX#]<3+̪ɘV%	)3dp/m!f쯂>];$8M<My.ds;$W+C1|x^=̡VV
i
2? (Z?!F\iJamA9n̆ZFWdD-*"{궯(:+wy'[rqY'PKN-(    PK  C:U            ?   org/bouncycastle/asn1/x509/qualified/SemanticsInformation.classV]SU~IXXRJQTa	M~Q6F~tIaqK7xg,Ap_8SY %D2y9=9?ue,C@e<9A5#ͣe7blVn5\'5\ri8y[	GAZuWs*3ms݌Uru+zh%S`\Gw
JE1\c>9sn%LgiEr\)4.a/qiIKо%4u̘&/f)1+é}ЮCjE*L[D{fnn_qq,;j5~ւ}X팧Ci+gyMG`g2j[t'=?Y0>.8X>Y;SgJ X2'kcs"	pZB3:%)Ky	ޒ1^+Wjl!uD=ͺaFĥڃCG{WyD@1w}b/v
N\#]z.:8j#oZrM=*U`J7HQh[k$~Cl(
企RN6pgD;T &(8E1K*xcHA,u 6
7ȸՊ>ⶌ>dd{2qW1HP1%Cø22)t'B|Jm;Od{sߍ~`D?ϛQ4ү
)0,z=$Тĺs&U_g`0H)Ca⢐}
5V'u)ڷ7*/(0L6ckhb;&A+HD!H[?yg̊U$o7b^Szn$$$$^Bp#0bo4}#?(@cA#3ZbRxث>)ǲCHL IøcO(f}a[Dı51%*C-υ*L;hqtķ͉y:i*^~[R$?BK'QotjT1-hۛ? N?PK򺈘F  
  PK  C:U            >   org/bouncycastle/asn1/x509/qualified/TypeOfBiometricData.classT]WU"N)րF2E[[J[Bl!E_\dwbT_DhysϽq;+XB:	H f{l麩nX\en!S|)' X-KV.VhN~TSyE	f$u&k5JJGePs[	XjW`l]>n u S7|J~5R|AZ&e]רpu] *jXץ%+7Y.Lg
.ekx#!OsΫ(^
TkM޺zy.]nnB\bMmH=QR׏uMꘛIH	\hqt*lR:uf;i 5o`H_}DH˻<#4/oܦH{L}>g0~bj8!kس'jOy9(B#8kD8b]8`}^MYHe󲅳fl\11&,mi\e2;&]cE\6,k
zr^dY-R$5B&i;6g)B*РNȒɿ<	{qgp~[{WF6ɧyޜlFWz:/|F؅X"6G5ޠdI}^g
q0@G.rgϡotÀ-nƙj(8$ɲ#ZΌ<ޟjh3Hl3G/NAqLa2WZPK&EX    PK
    D:U                org/bouncycastle/asn1/x509/sigi/PK  C:U            5   org/bouncycastle/asn1/x509/sigi/NameOrPseudonym.classV[SVdLd	$$14i@ȍrk&lՈɑe
%dmKKtW1
6c3{~g;{4o !4 p\@]{ҕ+ ͡ˆi8WRkqYO:LZym=u)"]9Az$g<{oʲ"!I-dtU˙`:aɲmJROfuPZw3Z.'@&3ڊ.f( veKp s9=ϗۦ{!]^rӖ3nSF&Lٕ^V55iULzGtגz1,S@spl272)zQ&E5/H9>YM/YW:$NMMi}m̾JC<ǻʐriV9#mY{L4dzgF+Wc19X1Orh.℈":D*┈N]"^qZo8]E=hK3H#z
cމkA_=,X{)ˣI(a\hM@&Wa~,v::Z㑨Jhj52L7RU_@'tZp T9~#2⒌ EA!8C2^eኌø*#"k2p]F+Fe`LqvLPgIƽ͘b1Ӏa̱x-	XЇ{TܑЏ,E.<Y|,ѿ "CTE|"aC
Ac("d#S9nsؔpi-{:	vΡ.pmܕEk1Koig!HpGyI)O1IocxA_M%S6ѿPRWR}
I|GQUGTVI)"Ķ`<\T~=]L1VDJ~1Y#?n@v`5
Ă';̛xAC1,Rϯ
m-ĊJ]a>$h
Yx7}aZ!06}w[Er[;AI#wM]6l-8 tO/m7sDd''N0A8P_Dn*
pb^Rg*  PK0	    PK  C:U            2   org/bouncycastle/asn1/x509/sigi/PersonalData.classWWW&#"UkU ZQӲ)
]d-n[.v9xNIlsNk
=GϱM,VΙo޻{w}/o3ފ++q(t{L4qa6UW\VNEݧeC9rGF~?6l(]j!qJ5s(aBLhÆLQ94GiTuaC5<+P_X('AhҧɾpLZR%Ơ9Le-BFpw05eTљ)YPvU/2SvB>-;5Y8[0/$V=S5y.8̋4]U3DUs&JHN83U/͔MWƍ8Cp0&|r[=-nÚ2H|TJQTVܶP=M*	yBQNF/U
m=aSn#jOEvd7tcd:wcNav;jȬD*3.gX
Όco+P8V8[|,슠3ɂz$V#vyyc<<yH<x4hⱅG3[w-VQq@HuӝI֍9[rg2rw-HZHx8w#SnUYCLnU Sa2WȮa^kS˖7ȓaC6rS~גH.6O7i0usX-ZM"Om`CM]x.q#(cWp/Xp'?zrGm掜XF-']m"Jq;p
"}"܉"b+DE1"+b#DTᰈZw1~"DQ6@pL
#"*!3fcg08^T'd1e0q1xN<%`/3xx\c$gxZA,^6! BA?֯7dnyl:ԑ~ߣ,4*`97ߔvM7Tݜ([Ni+<SJk
eqx4wLqzcx0(^UEfB~8|GXBBR9*
TDߥ>l%-ȑ&⭤;}-5o8\WH0~ťۇğ:zi=Ǥ« fqvtjqHj\,O͔GFSJuaz1bBϳῒNF7 :*xV\Vj
؊d%Rxzob	hRѓjHb""Zs+*Y$3Iu5fQM˩s)u
ʢ>RWpdJ:)N<T_,8xˋcxm"w9i〷0}^&L͡:YZ~>%9MMZb<^ǳYB3(>ԬPK
"  
  PK  C:U            ;   org/bouncycastle/asn1/x509/sigi/SigIObjectIdentifiers.class_OPƟp=!sLP@7nh!!zHUsJs`XI |(y5y~O[ 89JeI'SF󈁻vn2~2@1Fk?kZjC%^"CWfy #u#Mgo OWFZ#PɃwIHPt|g0lFqGʿEG$u_-@D1shG/Ã%Z1lv]fi,Um12HIHI*$K$3X3<'yAFNAU	u4Ge4\3_|޸7@t}A,h3mMEöǆ_;x PKԄ    PK
    D:U               org/bouncycastle/asn1/x9/PK  C:U            1   org/bouncycastle/asn1/x9/DHDomainParameters.classVSWml,(jZmkX@}-MH61Ӿؙ+VؙMm9
Af>fօD\.lraH'Fj#1Q8_nv-:m +
}aOJOkFHkZGΠQz3<:1&՘fjpjf D"y<R'R U%-k
H:5;L;yNӦM3"F!/xRj1$asjF
DU#q)YѨQHSF!-4
LSfR7"Ci=֒Yj^鑠aj6Z洩G#-TF)`o<	Fh!̨PS#QjK:	fS==CșRLw@	PjD<O(gxI=z,.3^8,rf{D'DtC{hO{DUN[]cL'Yg-F'2z˭|w}.Kiv3kWzpr)шA_Whaf}zY3nVY^*=RCOuVΪ]Up_7-=j6
xWu8x2[H2Z0$c7LLq(	]p$؊a0"
xIN؂Q2qRF3guLALtCNxgdbY&瘼Ј\`rɋL^bDVCHx!	*KL.3K,+3p
9&I	$$%aG2	у=`DRFoJMS2&mGe7z8o$9|ͩe4N!+Z ިXGlsvE8I;	r$<fH_'yhm%sFRo.ߨo,ung)M8o/-@GWkqp	ZkJ}3KxZϒӖ%;-%OPv5AĀg|&
quē|hڝѷ[aPoX0r{~@3pRٞ[v}\xURkoN}7Ѭ-{h'
d;
k'0*∈fH|m Γզs4KmZPJv;^WcK>{GEw~;StdBM1;Dc·j4f9<m,q.ΎyA]R8Ɠqp"z7k^PK\"Y  
  PK  C:U            *   org/bouncycastle/asn1/x9/DHPublicKey.classTkOA=C)ۖB)"<e+VSmD@HͺlvKO_`-/;ByM쇻wΜ{;g x˃@	ܲ2v8i2c[-se؏.7txz!es8&f5+5{<C+	+osK$Z)[
նY $-=hՑij:7rzaG=UF":ej[Sm:aK_,fZ1;;~_4ek39=,mjq&kǜpcQߑ){Q3vcٙQV&v	:%Ws3:zfOnwEϣ{gfE%ыwDh,
b3GC/rxrnkY亮k52Μ46<}Tݜєэ7ex0(Ç!WEpcXF+FDvCQ2A"> C/&|[>a\"wD+}n"<u)7m<SA?&aEZuDOwC,@Eq(oL|O><W(߇Pe,TЛ/Y\GJ	%LSV2fT<膫9@iNi^z2c?&L)z\
*h:2WȄ.?+c*,cQSޣ|T	k0܂QPK?r    PK  C:U            0   org/bouncycastle/asn1/x9/DHValidationParms.classUmsD~d;*
M
4'!-1B_J5M).gШ(Nf3@~eWr@l33{w{=I_pc(MdbKo\|YM&Lye?Q	
&5)h*쎂X*é%s
W3e o$+,@RMNy5_&\mI_UJJP0H<YWxv6rծJ_bʊ=;_u<{͔vD̊].[Xq eK\CZ8#6GMƄIS^!v%{C:DFw̓ٵ;u,̋nzS9ڊX-C۪`/|u|1y~9T⬊1*ΩP*^QnЋEjY\:JoH]+{l}KXSbK W080WpL;lc<IAjܧW8;4u2 vBI+'d[ضڄd<;uݞpxʬcxtCexvYygX`lt*lnYd44n@Ckf:5`G
[l>d殆$iHF|96[-[:d*MKoۻ͏H'?(UUJ`CI >J{Cڐ+h<CGč?3ctM=)dc4Ƶ6C4f&fHX^sO!8"/0iE"܅6i\
l'L1gS&
cv'
lq>pX0/+*%	^
/!ێxFȐaswlol_:T;LqiShl!U4Y PKg  "	  PK  C:U            /   org/bouncycastle/asn1/x9/DomainParameters.classVkSg~^lHQ.Um%,ĠZ*
bi%ٮ\6fogJg*2iR[{28-\=9g/AQD@cIe;i-bMRFgucIolԞ6,9#4&#9-׬w$tZH:sA Lb9*=%Ę6H2=%w:.3cVTͼwN<FRuWjnQ;
ZJ8?ΪqSijjg<Zl_'M8YԲIJun}r4-;f|ȢlYK:~VvB9Wsx!+a'i.ձ	$uƦ綕)ZLM)OgZYC9ej)f9Z6Wq"M
7F\xH tloR'τK-aIh_	/JxIA	4)2U91J^7l7kNll%FKpBس[Kqhf-Ц޾k#=
ι9cesKT+LL*]eO'R{3r/W*ﺪZOxc>G1%y0k*9K+w˼,wetL؊S2v1t0(pZF'2d؉ka,#3lрs2-8/cхWXa͸$FFЇk^e!Bo2^v`axfǙ|1LH(Ơ3
$0`09I/_?ᨉ[j:Whu
Vs]+T/PZ§KrÔ1҃jҀcCPyye
+R">'a Ur2dNYćOPTc"u,V`UT"<]r[hrc=
I!2?5OV$.;	Rռ~P?/f6pS50pd}<t-k%|b#ݵ/b{c"1oEb|2ᨯNAv)r{pY	GMxuanWqWG8 )Jj9G	|~tT~޲l+H1vdMk>c1'T::R[qя5SHI^+
.N
s^rQ4klf|3C
zy#?[U[BPK  {  PK  C:U            0   org/bouncycastle/asn1/x9/ECNamedCurveTable.classU[WWpJۋp$*ԤVN!L&؋oU]]	a}߷s/Cs^Vrh1A=Oa
:cFEIZeň
GG9nT7jzHkOSzP~N~i.(,q<vDkzuƪ	%}EJYfKFnJەYPbIkXm׃9*TiJAZ53WUdhzՌjTԵʓX4(X7բ6Jx=8o*~<W/ۥbV{d?$ZXZ">9F,4+ə6U[KM3
PsqiDA:\jղ+5J!!N9#=[2,#b
y{"MΎlSy*p4ڔ8-*+D[Q	<.O	<-x^CrwƷBݡͣh:NC2DC;)i}9;'yb?r<9Iet)66p/\ช=إ v8{ h'Ug؇Q-S^QцqPŠ┊N[1A DSAq\fH2f.02Ad%,yih,XD,gX$K",$³QD'<ب;K1XcI%1XcQz!ɐbef KHg&[yMz|pP@>jja'P}|"T%%}w(:#':S)K>/JNM>go3s_V].R,-I*'UI\gޯa6Oxuu>g]MW^veD[$JrE$K|3KyQ2.!ɢ$x sBOm}3g|fm2F&L9K0MGfmq&6Enps̓x_+MJk?K
PKJsl  I  PK  C:U            .   org/bouncycastle/asn1/x9/KeySpecificInfo.classTmS@~(/"yIJ@E~X>6O_*3~?q/M(!7}v~@ZCcvlDV3c[Ż"bGbjEScDo3FکyPE17(u`eQYvfٴc9s7(KF.֫2drT޶% %Ȋ.e
z=<_0^.q]pe%h{+RЭ
zPp!vSSAӮ	٫ּL'oSyawӴyћ>z? vNc:mNC o!$Ux^;; MVKW={,S*qGEUIѢB]ahèI1"-(t)a3a mR<ca<BrZustgi_7wʓQB-BXxoDt%
tDa^"'1		ъlяO?9FtS'5,VY$ۨ׈|0GXX_fYU{Hg$^LiIGkq#}x
z, PKO;    PK  C:U            (   org/bouncycastle/asn1/x9/OtherInfo.classUKSY.	\h2(2>Pyt(:f Kdft5tg%5r0ReB$PT,Yw7 ƐbhG<CPKHe[U4C{F	)nՄ}ah#e~0]R:;IOsoh%â#1(:yϊaCFZX.ZU
[`8Ll)iܬ{46ۦ6bs}I@LqaK ?#ҕՁ7w0Ҫ\%s´[Ct} >H{e!oXXp8p8#a#G3
mwAz
wkj{ c"_DKep&OBi꟣I.v<d`墼5sV5[7~wLGB
>GȒcTJ"*:T4IE'R
肮BAT*Z0"3*pVJ*8I2ֆ0.H2.E'qEI}P0_$+%In(8
pMiPveIKґt
Ѭ[7~ѿ d$5I<qF'i}dKѣHG1"~.(/#~BSB8ob5F߉i_!@(g\>/7$cxq߸
?CN|aHcstY_{[ 1|Gh"L+~*7E\ԬBb͛UqOUjUt}g?TK	fntq0T@*%%{|}R쭴4NPK&|Z!h    PK  C:U            /   org/bouncycastle/asn1/x9/ValidationParams.classUkSU~66KA.ZZ
(J)P l0R/qtMM?O	cf|B2aLfsλ_y!Cἂə!j<)
vȮUR01SR?iƲ/YKt' }i-cG*qUENLQ*I6!Cg(8G۬]q=Yt]*BOd^XUPɔJL'"e	He-KZ.}iO䚎Bs˦mdlv)RYQT\KDNsdάUbגyJ!ũ,cpHg3%lvGҝ{mwHH->]LQM]pDYJ	V1y
]3*޸h'bXExU%*^SqY*"*\]aK4.f5wd򅞤~I#}>LeL(ʞ=:a&-,1Rx5KU^UTZz_gL_
6u[ԛ{T}dNyYI!s:MXaokxjEwas<24㺆,7{p62Caei2|Fa]MOÈ#ː#5{a$1ga̲>dsB)q
0fO?i+N?`C9Wm~0Ego7@_j. z
t`! aJ2>#=Bߐ>҅!:J
)Іi?~ :ğj Z
ůRDs>Yoz#PHQ<ojo2k'Nj'N)!/H!ВN}R:WC늧^^bb:AkʏCG(rD?|!0G:/XrOةaן`ƃ#U,5szD}=Ʉ#]w|_PK+x  	  PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$1.classToF\1ހ1WFS)>;cMZ¤IhO2{ݎW/4QӞHC%-vҽ{y{wpBUqABWqUŇF1[Er[	My1qqlqf0Zion9Nmiy̓-i3pױ-޶|C:cёtl!?/2-Q2*Qn0,~fD<qu7t.dY,g#FaAħߏdRAHNd^:#e6	?覱4cPKQI^I
(ۣ^Ra6lh҃$5y1|?tES.XZ#kgXBntgWW~-A12)/0]A9(VpC
>Q|7ik"'mF?7Sڂ-!tmZ5yZ=ݔtyu-?%L0?l|2c 
װziDSG}:.ۥiiO
*fijװ5܆a
ni:P=.$9ʾ,o{I"X6ʱLJB+\S@wfiQ=7}mo_xR[=_e2v'mPƌ*V&7^߬	Fa8}	MIViV)R$|
?PKu`    PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$10.classTN@=.
Fnt/D4b.eYI[P?@$|(tw8ɜ͙}g2_ PA̂"~ɠ,)nհ
G3Ԛd׈V-E!fթR5$]6*M([]vMV.!5Uє. EJ,K뚺\̔lX;zV!f)nIA*ETM50\jdp=Wq$O 4G~t3D/?)'NՓ0bM7܈}x➗v$~#Ma߇As݋/zq L+v[V)J_&zd>[m'gmW~]$Nw*J}7v2>,n6	,0
]"IŅ{%zGo?W۔V:Z^_%Q3h,^؁+\-S7=fPw
{lK=/uڅM2<Ǎ!<
<:J)9La
f$yp>[aL/~OvmJ؏!Q;陸66+CLڄ@n(a1k'o@f4\R1튌b+ Z<Z9cq3[!t'}pSkthf0PKb]    PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$11.classTn@=K[6;I׎c{iE- !!.Ȥ&d
^hE%>n%̞93g/?0k_TC`L{HФ:v]2<
aUq
ǲlx!ypǢa`0]AA6u=npzr;O]N04/AqCq[g0֥V7<'̲=aDK3	)F G^
J@10`/"׳`r'eZ\Y. QH3Z`l5WFEK"i5t=Ey1(Ot
1˸+ZV\KkThC	y;VJf~W]ݍAKp=b50-ᘄNH8)ᔄ'չ彮ozg-Q66nilk;Q /vP;H]@\B?Sķϖף?¬7PL(%GKwԡ*P0
Uڥq,]We\Uh"U7Lsq+q2]%P$aq*h.T}LMu+8@=!W:[-8+h<»V}\cµڛpp.$C10KҮm>nϷ?M\)"8/| .23IMH8
PK  %  PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$12.classTmoV~oc7iRl_l^R4	!>2dW
i5ڭ44R{ssss߿¾Q$aM,ἀe@ щIǮOLx^	{I=tbĥ6:Ա	5OئmENPˋzPN,;mǈuqiL@]#,;g[v?}p()~cD<=4=:Ax-@з-XVz4M
pl|Kp$Twbr @NҔe:vΧK*GL]R$bE)@4bV?fU?M*/HwZ/FG7~J id<*6j^'a&e5eZRf~(+.^(m[o@GbvDFɵ*jQx6H9TcY=ܢsQ2=dY"X'">\R͔I6ƻGjg8owyyMAr?.@47'Y|?Z__?/KGA|m*T)M
a`RSu2n涌6<#&,[qdRFb[	^(Ky`UoYƊp%+sa/"_[cD5umCj:n_"\_k-hkn{3RsJa@>Za0~pfN+ojHّ- PKb\-    PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$13.classTn@=-N6;8Mk-8$$E<ԄԖl_@w>
1N*  Y̙3 ,%/A.T´	Pgts+D:͖k[u\/p/0$0fs,[mnyqEƄisaMfP\
z\^np[}pL
(cZ۶[iA29sXml3#pWkߠ|Cv:QU(YrFat+03iQ"yv$P*!xGd{nF^w%Σna֒?O6NHx#w)ƅV=Ё1ݾ+TftkRƜ28.ㄌ2NI8UWGoYI}5
7BWF)`0]?<?VN9V'ck^3meeto-!)~J%SP)H!N㒊24**bQ!
\K
Ppf!B4̃+X<( LAIӕ?ĝ~עe.A](0ˢhnm*|zSsjq7?n4'vܵO<ŗ$YHh]\ޥXL: .~zYOXx\_-7k۸>1 8GELD
_LPK>#%  3  PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$14.classT]O@=K+*QUb;m
P"R5K_IevI$;s{=I}
rTEhmW=5]7-5nPPHMQ,0\ͬ[8X0b+
b&Q^PMuBӚXQ JͰ)u(u)l>
B璺ǊڞS˴\L,04Kw,ԺyFa;]a<u7AEӎ9c8ދ]A	Ԏf
fۧVSo}_niR7^~%	+s*~%sk~O䣨+
k.
R;{at)y\q4W8LK^׷aFz|YKп`R\[4n3;SUeD[GȻ~Q!`X$n-IsXqW̢ n@ˌY@㮀3(0dG[ɏa%׃t' a?I
_ 1ph$[9/bS8
yB8pkm
׎`9A-1S~{O(&pb<9nm "w'ǘ۬.VC	n0YdF PK~  3  PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$15.classTkO@=.
h䥫.}lhӈ5!!>>e&mAWE$ ?B"Q56;s=s'~?
ΕP"έ(,Ɏ[kJGwٳQO3M4C6"+bZ;T*[Mku}ɰ]ɥi*USԓmͰ	-vND.[S5[WΈ,RSjmUz-4ZaV$I%w[Id޳ 	,LRh
ZYr&!vq+6E^qQc+Hn(i$,+OXu
S=~G䣸[L2*l=rR?tçoQ|89\0p έt}WgcId3XzخDmq-K:Q{
ٔ=u}IN?D#]]f349E~Z+gn] #)`,7WQ0x0 s9:yLB΍&)H<A,ss
nZ8efEav4
SHfxl1a xNcl'lbsy>JLj^P+=+㸶}u7^,WoOGpch̒[m`=|غ_ai`Y2LxC	PK  
  PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$16.classTnD$549RhѤ=/w]k^HHý׫.d;
4x ^7@"Q4=ݙfV~ irj(X0XV0,^e%R$t#=˒l3O:äLl'`\Q{8t,]a	mCXp=IAďpocᇑ(]c%IJe$N䀓#9$E!ܖy0~dSq>w0$;TaVUcƹ:,΢8S<N0"(I:RAff<(,=Nô~jƣݼFM(ʑ8ʇ?ӪdfZS`~x>8֢.yFI29_WSUL3ݝ7A:WQfߢUU=7TTFwRp{=JS;E`Ƭ$G7u9G[e 7ws:q^Shqs0/}tаcx1m:ttu
ol
4հaBmpfc,
C[ג|8)*:~Z(w<+IZUYܞD
ZYyi;Ξ8vњ&tۗNS/y?;'O/g%q&Tueo9m[_`Q_wfM"hSdm"wpWPKv  c  PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$17.classTnD\u
M -6inx{AITQ?.ؒx+DTx 1Fi̜sF_Arj*X0J}IBp?َH<7tD^%¶H (!!%L.[6w}FYm+:X;&<慞0gnykS;̶Pu:t09˄gPVr!}Qn9!\PP,b(NBKH$Իr)(?Bڨ:I`e}QVge%œtTNͰayIIjS3:7f(q>yV43*̟dÖKfY{b[s"?/m'/ۮ{'8{d	bM*Q*nxO
4xo M{Umt4_$oarAtQ]_LZg]6Ώ?G%Q
K:V񡎷>>хCG_&
n؈-
`i
N#uP
4lЃ`_OѴiq@Ӵ
Di_ܲ0(mU<6OkXunN^9C<G*\u(`xrN{[Pl(ϰs0*g~[gLO?ܖ2+-뭧#k7PKє  c  PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$18.classTnF=&	^[mjxӤ)XM@Jl̲hcKHT>@_oPuTTBXTKs;g \ηjႂ9@El'}R:OiDOc!1"Ô
6K6lYoTr#;`;\8cq$0ߏ\;$.<1	#
ƙ]g}2bGvĢX*AK<7e.	BYG{Ģe{K@.!$$r-7ٸڒÈ}Z2eٱ,_صsqXI0U8~Hd?ҢQZi2BAz{KetyrIǣJGuȋ$?Ȇ/IYMR3)3b̟{қ!g哦MW(fa29H?]T,⊊*S׌iPpg=ym$s?eKښ1M7IcU;+KΔNqVIhegC>
thXб/u|RgJG]aMռ~
 pN
n
Vk;nU0=/l8K9ݴz)з,-$)˴%en6|~XPU]X;o
a`{h5ce|~`5:bh{^B1~y"'P*;ko;ƽX}_]s
\mYiNZ[ PK¡j  c  PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$19.classTnE=| - :gf?fJZ$8[YK&[&CwHT4m{s?Sr
n
.;Xho>p0Θm7x
ǕBG<!lq,2,7P,!gQ'$H Y0m	*R)HFRNiRIj%xHql.b@2RK/I69V)j0Ϭ$ce^$coTf&"E@PgLi4	&9X3,]:*+Գ~?N[#*Jge&ǹ3le>`z(㉃Zak?dY0+`(An'㣢s?MIVG%f\T3/ŕ/A9GN֟Ϻ=n
Қ{0-Xs񦋷\⚋.qpw8ⅹm7B.BK6gFY1}UN`
lՔsUft(.{Mqsh/uM64PR7*.>lv
l6x
׭vq^euCԱYM|T-*h!tt鯚?OAc(ei>#@k[աuiwq$htN)h=\uVW"śd:ħs>'نK>m=n)v=v	>im=#A6٤,So
.
PK3%ـ!    PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$2.classTksF=$Zyqj%RCP:ǧʘ1rGRR/Sf:]9	Np;w=J_ 	gM7q%EQ_)\(`	cXQ,hqaD8{<fJ1DzT{☶=P<.~Hp0wɣ{@ŅPy^xo+TP&#
t2ÀGT90q'8+2PYN`K%RXdCQZImH w?Gt3N(Yj	ۇTzK^<w7P쌳b\*v!{S.]Zc^h vڜȭhZȵwӢpò_ɍwPp䪴,w+cvUg>7/
\#t68ެ\u{lFfTaYI~ʹ>hV^'?&y9fwaFe֧G6,6.a2Vm\)u4m|[6>kCP`V

DU)KqB
e|m&+KѶ:ZuS1VvT|,*xTsD9)}WS}t*x89up&gMpw
'EVOj	COu0vfL
4ךqO}|wྀ$KZjKmzbW`PK    PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$20.classTnD=nz,Z@4id7I)=HHHd6vƖN&GUHTmai}{9 .wwpe
#
%T2ƙaƂ̬8dq@4bʐ <0*5~D|$G<IY~iI?tHD<MbjKrGPGBSOb\ӰI~	"ύ@$!a}!RxI̧G"qNjz$J9R$.RrF.\_Kp$%QNByt9XȆüzr4pguOOr
+W4;|Z)(I6˩NcǇ\U~N2(x[)[tdP_YUOr;
j9P#[.5?/Tp5$~Y/Id_U>wM^9lr?|zqGǚwu}t\kެ׷{}67BCmY&Y1bJfʹ~;,]_Zok_mY?#ew#,X'&iD	&op&l
M1M1pvŸ<TjR'e^~^?-5EOIVUyhn}A-%"/mo-`Wa]l0چ~W;C xU#K+EU."<g^6t3t/a96p_/R;eRt/PK+    PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$21.classTmoE~IzkhbhҺ;xoo_nI)˞JZ$p8Wȱ%_&?#QAq<3s~ `+X[AK3/Ly8\`c(HUXJsj%Rg0L #2ߏl3VĲK0&	Jϭ0	KR(kXttȹo"/bFv.4<aѱ0TF*HD"yЉ$C!ddB/FZ30{&\*EU8ԗʆ3O'F((a$"ِ	婈	ePi$i$
"/_;
{R~蠚zt`x/:t.&yV8w:&a^)ydb<qP)9>]!;κY
"x~?>~ebwd_SUi/
mpWmN6u6>:Hc68`Xww\⪋k.sp;o|;5xiMЍM0_RiU} y^x0*hq(/uZkb5ܪҼ5ѬV
o`7.qlW!*/(bM*n*n[VEr<>+ŎzƾOjQ>tO/"apnWNp`W<KKTfZufo"ƣ5ԗ)Z_" <ǿQ6\MgowNs96u;O'd~u	:E6f
5|q/PKe~-C    PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$22.classTo5nm,
6@K>|cgDQ!!&6HoYQLɵ _Z	-K{?~
 |*.Tq1\k^jS\Yka-72!"dhA#c4L6B)DG)
S&5N$VE27QǤaL1ƅ
!u)1,%GF$!ס&1C1'SL&(%4aEͽ^q+׎XD	F<U2RN*MKJ[oQIK{1<HA1iw}$5QiyȈ-bg
%JBrRYAL"Qè[sƩ2tZIw@
X\0x}=zhZF'rywaϊGd5,~nwa^6)y7iGREo;廴g6phge1#`d_uTweVA~,WzoTf+R[.ֶϺ WZ>wͨͣgA['ٰ
e^^rf(t
_֖gk,g_~ݫ:^m_G:X*%S*҉VjX>:#547]/ao0ɋG 0A6_y %?~^X?­_y\Bt[6=nPxS4/h|c޻v|Zd7Nlc`5^;ƹclyq=3-p{3+ӝ|3PK	&c    PK  C:U            1   org/bouncycastle/asn1/x9/X962NamedCurves$23.classTnE=$ - 8_xfvwv|EB(ٺdoBy*OQN$*V;w9s9+o`XGztV(8MbjH!""gY-B\L\iB#4Q1ԺT3j[gCNLfQQ&!rxD?,!
T1SPVԄ'ɉ񼵦TH
`@*$JLh)GiHJy)R/,2M⌛D$!UT6qԩؤ$FpVd1{O-#-#e"V,ZG0B&?8Έ"V	A!"NY
TGId,\xk/oұ 6!>*YQ`42eyK=|(@N^{j]y*w~aA>ݯawI/?e}ZhV^YS"?&JOT彮gۯ'׎a~&5,f
ov
WkV;vVwγo+/[Ǧakqw*GE\-rͿloW!?3[zXMQwa-thbװXpUl}#BT%4p5p*fpWlݼ|8.|xA||/O[?֎q	`W9ێQXm]8Y{'Hw}!yqkW[3>oC_Zc&j>'
Nu)oln<g~}~ON^4+K|q/PKlj  !  PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$3.classTrF=JB-P
ȎwCi4tjm1RGRRV)3}>TWg'ӝٻ:w=ǟ <i4p^E
5|`l>Vl&,ȱmIFn~%B~d,8Q(s>}yR{a`0AP;tTޥGC
t.,mM*`
/\?}7(؏ɸǜIE.y);GyHG',]GDc7<[
=%d61,(,;ـ2h:Jz|'zhrX,Zl?
^ci"ucTW2բZRT)n͎m,Bnş%^yQ}7b헣% ڑ/|/T\SOT|3ↂ+fo1OVuplKUٛM'S؂-!vcXDkKwK.֧QZ//4϶/7K>m>6C5p	-Wnje@Gm=Xއm*급H
feh ֱt܂c
AeB&hWP?B7㬠Sٓ,m7MelҺj,Ӥ>=}@B!O	5rޞm{Цf	{
I}`leȬkؙo3:6f
Fj6n
v]`k>io_;(|	OEVhӘhTPKD
    PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$4.classTn6=LZUڮg88M.YMtNR`@(r= +YV۟X=jh幇?,fKO֩KTГ9bn@z KFi'^ɘ!R0:ȋ:NB0Q EnQ$^atJ*txN~OI	\7dSq/	|<c9~5(^H=<0\;C7PҐsqkWlL`
)pX'6[WeDڇ"~j=x
	DA~(,iJcF4
"N'eQhR!AN`)~(8Q<7zݝP];fW)E_b9KnCwO't~iu`WdnB>+{"Jâ׷UVv!%AH~Z*>*>*>*jtWY.uWv{RgR3V	6uoYMyU]-hZsRo`qT>BhR^.
-4S(MgeާKO,j	M7l6Zp+>mp,܀[|sK<JuuX& 0V77&T\d0UY;Yv_jzdAnRۿ	`m3Vmvvac.ZEk3[c|?T>g*>ׅ:+ljdͽ,VZHϝc|w>ȼ}=kSE+ PK|\d  k  PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$5.classU}oD~fmlnmiwhҎ4e2FT*uAt=_' 
0
\5`aD:q=SF#7HD0׉@2.'DAĉiBzDFB'JyR
Pq*$R)3?xTD\R_P+{NqJ^sE."呤(J|*KBO6zuGLG(~,rUsАQi庆5\Y
s~V"Hj~{sB2/4XDP}QjhJqBx܋)a*7"f\N{S.avTy"z'~|no{;Y){=;fWr m^d?S%c-_kZj#аxys>)8{oIIaovҞQm
a2|A?C긫#Dǧ:>{n5xֳem=	Ns;6lYMY*nLb
֚"j[r[N!4)R2J0}Qu<o>]zb=iYeѶp2bCX
٫obae41|Uu
X& 0ZfoL,AjhPٕa>c;Y&΀,@TcVM,4쪧jzuǄώ)C^5G=AsK>21og*3G]WSBnvumͽ,WگH͝c|w>ȼj*E+ PKtdc  k  PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$6.classTn6=JZUڮg88AJ\l,霤biQzpAR? {=0	`u#Ks	c+:Wu:0k-=ѰN<PP:aq7Ns,~HHH!#'Tr*4cv&J8M|$<K<
|i*=?p"FDHՑpċvLA:y\qe;'Až:>.Թ0t8]zrLH>90\
S2gpyu
3[?k0DˢhV8HX,e^h0CR{S\^y~HI	(NV^[ügG,5E9(2~9sTd6w7;kY=\YQe̽:,[fUkޖ/5ԏPuܭ:>:>:>㞆[Vwځzvu#Yozm'64ܱ.cU][UؔR$hI|	%t
Izw~V*_Bir&6ϭѧKOLzeZ&namMܩ} &n1р[*yUʬhb6 "p1@C^kY<~ve|Nɼ3E! ՘USv
jj:cB
>ڍ1	4.%7fYn׎;S/Tօnv
mͽ,WگH͝c|w>ȼj6E\Õ PK6khc  k  PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$7.classTn6=JUڮg88)Jt]/ibiQzpAV?M {=01"uZ /{.IjpZŵ*;n.>qFHhDpr$~bbIE$%wKi(O"SB>"d@D(X8
X@C_F*Ð1(#Q"
ҜbJ2#bf8	Cƚ4!<&Z,&)g6eEs.f⾃Jk34!4u t d\q."C`KTiunTaqptX)L>pPK'"JJGFFRTH)VOm%pX3cgGmSE?wP-GϽ<16z'uxu;[Ya:e;^?Z
 K(ku'C.+}iRhC8XxxzEW&Dn{C!EGig
Ay&+8x楃ʡ[|\'|Zg|^vp=,mOeYg|7ş9\wn5;lMX*nC-K6列hקݬLB>*>[+O<o5?tI
Q)R
bhptwRGjxAk.fK9+ץU].Nh⁋E>ӶL{>;xOr+L@,]6mMvwla36荦#TZhoX9As#|[hi[3G6b~>sWi՝c`~zGm-)I߳n#LՊ_@
PK0Ns    PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$8.classTkoF=/-a(`C6T	,x%IhU^;Hsg333 {

48ۀԀ,`Yi?4ۺjNh,MV`hB+tb?Lǎ{m9fo~,bLTܖv鑣QcW` L0ezڱei!FC[l\@]G-b=bw"u<vtRg[76HIhQ!8Q9Ҝ'%g!v=Hd</CN2%GdgIZNs;ZMCNa's5v2GA&E9jRdWe\(	|8bojZ3BעxFDv}V}NDYuydr?[q["Dħ">/\R!OlVwۏ)^Vڃyǿ-rk]ڶ5/+m)Dz8+KmS?-RCpFGXGWƥ|)C2C1%\':venIhn	2_Kh8edZtH?,9$EhuSpfhh\!Pɲm.`Wgf5GZB@;_OH:!!l4Wgt^K3^cQo
QG/nMrz"zA7
PK+    PK  C:U            0   org/bouncycastle/asn1/x9/X962NamedCurves$9.classTN@ʭK+**ݛv[p11!?L]ʲfi>/HP&q93wsd~'23
D"Y1M3;KM $iVU,h2"+:cV%ڤfmȖđUMMT-rWܳvi%J545ݕHMK,Ǭ5Wq])JQsWtIR+ʄR3h&T+1zݏ!#vG~t3x/?)'VՓ0bI6nD>N|<qKvEX	0jI8OPuZbEztV[|[_+;w$׾~k;>,n6IS,0")ŅgE֣6Νm
+r-/h4/ra3H(;a54,>~Kݷf~AxFj!,<<:)28L%5U39B0G!pAe0`я:Ad7fY-/̵y?100n]GX`BX4?:{NǗL 5jxK2.I,YfpR'*KxFtR`	L$C%cÿPK7    PK  C:U            .   org/bouncycastle/asn1/x9/X962NamedCurves.classyx߱
2s0Ɩe,gl 85GKBhʲldlɑdﳤ66Kf[p6Mϴ}݆wI#Y2>}?~;73+?p jč:꘧ctXLG
n:t,ұXG.[uutئG UqxWf6`O8N,cKqP<^Z]]=f7|Fi
_vßim|
Yzp_]ըK4@we
_vßn1n6+VƨQF:]Ps ꋆ#	-ݥ k\
F;Bp:BH:uƢkB;~wl!yp]e|[` -Au%35S}tx0!P,lHzRw` 	D<ۻC)G&[=H"	LIO{<k@{͠`[hYDۻ[;ȸ.O{?≞'x=+6Jv"pgvhXhQwqGFKi*7Vo+]c+]k+]g+]o+`+hgmnZx\ppppp0+Wd1&o+S֪+.揈'߷gӺ@3"|^\JE{G_,6ߵL×dnj8D-=k5,װBCnаFC5BCiXaWjxnp[4lpnӰEë5ܮ5^u55thOϴ_&Z{(%>~]m5*4tUdiU7$usc,DrpzjI/\Gۓ\xS),Rwb˂0G_CGuϔTa[[b!r&<[e6e_={]4؍cܟ}9y6˶|G	/J*\ՉyF)c!Qp1*nF%ble݌m\\4%
.ipIK\4%
.ipIK\4%
.I33mN.'|N,;]NND'j>'N4N4NT#NNq7X!8O2:o2g|m00~ǌ0~_0~U!ހO1>㳌3{a2><,cy"K{_f
Dkow?3Y7`onAN.n^>~A!aQ1q	I)iށ;x#ތҿ-[AnD'HO 6&mk}7Oڮ	t`tttwIݪ4[6=J*tJ]J+.PVZJi҅J)-S83OWʤNgB@Ĝ{t	
O:ݕCb9Ѽh+Ψ<=,*?Q
NKIc"wl.p'Ǻ6)S1䒳%rW%$.TS*6Pi<b~hnh4\AVyQ!ޢԻor>M]wpbާUmzɨWS_-*߇g;IfD)CbU2O{Gv!5X_:ԄThJ2h4Y1/cvf7ŐX>='٧ӧbߎ_*<+&&yy7n/ZOpuk2厑[b|-5E䖙b7S䖛x JZNcv[dixNrZEvxr>[Ko⢅}jL<a :OZ8Hk0M\#7C`](,tX )R̐B*L)NblKqll)ƱRxm͗Bxm-vlR\%	RLx8)uJ1Y9ERK<vS$./m'jR8%d{S%^`KQ$IRLD6xn+J+ݡtPNVG^Wz@AVzDQǔWzBIRPKBvs  Y  PK  C:U            -   org/bouncycastle/asn1/x9/X962Parameters.classmSW	Uj@+V]D-IJkZf`:.u]fvoP>;ӂSf/PKId{sܳj_1p*gۇ}{=JFC5ӏà^ڑ|aGU$;TT%-*y]HFgܨRoxnՕN`2p=<q/ta(Z<p:ͺetZ;D`
~u#<|qmy$p#MJ]r{x5ttU9&SqDps[37Љ\(}
`PteTϷ<a$>AM0sb-4i24kskpesFHdT\c*߉:~,NpS#P%rJݦ.퉋SO}>'BE+Ph'DNnmR8e@5_)\70L
Ҙ1a@?nm&t\BAS2u\Qna^'2E62E&yoX~=Jpuڌ2y/K3n4b &}B㻘MB}X<Llc!=o?ㇿlGhS)Vb1̆s,u+5ioèl7bfdӮKl>aGvm7`2|'لH)PK5-  ]  PK  C:U            &   org/bouncycastle/asn1/x9/X9Curve.classVwUMf2)A-MB,*ІRILok]q4稟?=3	m1'޻w{\r$ᯋX-;CWn`+O\~{t=zB77ZA	em)	}QcpO5H@DҬSqmPKZiPVYƧ9~.i5jji0hy"{XƓ	G6DiǆԸ!aE5i
--@y65Þl
xy0L5#Zl1%xxENI>j$4w!6'i$#A
ad-R#q5W`$bj%ĄOF',Ҡj[XcX/9GUÌkAH	tu	'~/uSI.)ΝWScBB`6J~FW s2̴QƚU"mὭ"Q)gH'7o{-lnQr6	
%HӳfJUy-ZdZ7Bx@FYne/2x%VRIAڵu44m=5S<3$5qaKV/P'hX)J (Z`ZuhϽW3Ӓ@j{MOB]{;J*~zeKx2uQ-꜈|9Q˟U(E|ԖT*lnu,NgqPsXfٿ}̿gCIבS\*ɹ&jAͼ畴7ޠT{.夜(=o荝5c+b*؄y
cj
eX
ASAB  Tó.5ا`1Wp3Y۰_QpC(X,cqH-Up+,eY?av 03a8g'el0т02Z2`xQFIS/hCḌxT&؉ю2<'/؍WdtĄD	-+L5zt$|&>8Pe?e\,kR(h_ƃib4P/"jiA8Hc8ù@.4I?)it^T8W<^Kx-Gd_mrMbKtd>qJIE`{|.'VGgڦX	or\l:FV&h,w4zO\VNar(:yUk&ȣ晐GQ1=7~-`
S.T>O@-Ei}>e֖'TVA~"qqvb}Ut;MJ_I $IZ=WygjzRO}vNcAEJL[-;cϹ那j>ڝO#uvUvOS3^ce#[ݷ~w~?%ES~s&;*iNSNb{O8>0	lm&%TxW`xPK`{    PK  C:U            -   org/bouncycastle/asn1/x9/X9ECParameters.classWw֖tey%Q!
1I(-7d--iH+&}wv	i-ACKi,%azNO0soΝ]οߺ
0E;%w$)#ٳB1M-0gr`gԒ<%<g((XZSAy,h"uሄ1#=0jHra3+B@k$4pNQM	5=kt#pHDͫͤEJ,kG	յt2z\ 4O-hHFIN^0kЁoyd:G
0
mDBKy=ha[="T(;h6Dʨlz.sZu6꼟Ƶq5]X$&Ղcc酁C@M49=)5VT8Nk)5ݛO3ttB˙T_	em-eTs2ܧ<%@l>LB-i-#Mimd	^3PSf_jm#ƍj59<^iHu 7_Y6@Ud*$juxc,BD8ߛNe9)T;mWj tz;怑iS3pV4t7Wg,~n1LH^nS1v|@!8"@Q1^>~c`.鑰w֔
N=a!J]ZYֱUp }jd~#M9MArbFފfJSaop\u,r(pW;z}k-$T	 rt	<\w~{]5%<xzOEt>׾vXۉgDFelÓ2B,cq7*.L[F+<2:>4'<Ylq'(!c2@㵳2:q&yxZƽ80V<## 
2䵢b1X|	c$O4ϰ,ϱxއ
me!||xg?a,fYGAxO}x_e5/qŏ|8q|f|_j>$5Cj1NG $@	K&z,}c9$J#*.E+N\_UJX5.5ff
Ws-/b
5˷-K"BKxsmJ{2V71G.%,-═ֆa|[U/<v*++~G첸^t%=phD
?mN.ĳ)FnfUV1\G
⊕ҕia-
r[1D	U'ꖤ4`a;;	&fs`J]T:^Ɵ蠡eawS)SxPۋy^ΆUy\_$\u~Ubo_{eA]@6
Lyy"R}pQ]yFѽDSCyP+;Fp3N w8f//-a؏d se/2UNCUbkqFqE]ZسR9x;*͗ S|l~9i}VO	V_%v	8,u8K)Ʀ9ۃtYh`4*JOP^M/WJ[Ư PKw=    PK  C:U            3   org/bouncycastle/asn1/x9/X9ECParametersHolder.classQ]KA=هiKЋ,BEA`ں+Կ*Hz
Q̺b=ܽsΝ G(D+[I)r]1] fNZ6CVZӔl
n1_6	7m>-3>]aLd9Vb}YT$T$Uh9-	v~s{̿׹7x__YS21d)" 
rQ)'E
(4	,
b8-y>3.X5-Eg%LL"֖@ ^ (^QDVcsϢN-b$#dj6++yPV71%"Cf?PKBf    PK  C:U            (   org/bouncycastle/asn1/x9/X9ECPoint.classOPƟC"Z"acw(DQ*֒QF.5o2l-ys{ןo' &Q`ҙu1n0ҙC</$	YXEϵ۶m۫K3aPvg6CMVP᭧mLJ+v,Ԯ̢cs,E0d|emϰbR`mMx-䣓T*KöB>L\RU^E7.CKN	}[Fk2h!SFnaNXMK$4\YhA^izBÐ~#quqf]!MVу2+T4#Ƨq
K$&6PЋ
nb\A&Z` $}yz}fnm"hC]$*JјYqb^^f{*X8#LqY:
#&dݡYyX$ (>V1OVZNjRiP@h!4%pZ#h'4HPP/`)jBu
nYui"
ȱI|~OFJZAo`4kǹ_PK'.C    PK  C:U            -   org/bouncycastle/asn1/x9/X9FieldElement.classmKPZccu>u::9W1+io570a`jx*b6fB9;I~k3V!mV.|0TI1s<	йgaL{<*0F}봥ml[;GܕKvî+ܗ<d˦iq-P?zO_n}[<kתPދDKHѡu
VԠk`h0ưx7C>Y
Ӧ8u:NA[ZL'ݨO1߰U4Ƥ!LS&e	
d0c@2s:19尨̒gx0X
9/^ԗ"]
!OyAvNDTjxzc&KO.5Nc6NXeE\X5
o0qP?Ӂc' PKE    PK  C:U            (   org/bouncycastle/asn1/x9/X9FieldID.classTmSW~dsɲ_"hX+h,%U,5M\ ~3N5L_%i{Nv	cRHfs<sI|ݍ>ز`2FMfVV<9uy~Y5-iWt;]ޢ-ە=*a߭Iӵlϻz϶K$fRMACǵnIdYZi3~0%-]4KXvE:eWr^-Cˬɒ6kDz:81GsDY킵L9)ܬ+"q=ǻ(5'oF)$6;wmFTze+;XқQJKD2cRfoOA,sK̑"'_Aw"	//lv_ӉI.ONVLy7=6RtoJ"xKMZ5Z?:G{m0t00p:*C!pL:1nZG:'&H4Gg2d4ႆ|pQC0Lk8sS
G1QjvR1Gߋ<9iZ/<$ :tџ.G.nzN$u\7c-:r/㈠ ٰ10ԑߡ>OZ	?YH>TY5:"PRǕ_s\-8H0M< 
y^?^$(ŭg4
nF	$	*/_Q[,\ʡƭSX~/ 
͊i:N=dF1ߐ4~GyMeuL}dYA5~ߏ^Le{q{;s	K)֡]lvbŋſPK  "  PK  C:U            1   org/bouncycastle/asn1/x9/X9IntegerConverter.classkPǿMw4Ngר\ˬLT}M/Yfч"?Iě ypsO9)$(ڎZK0}񄠐E,qㄠqM<
`xeЄ~ĦX/GA2|L1vQ$tMDm6	vW;9ԋ)EFCܵw{x*ۼQS|CdU	fS(t*AQBlgq
7Z~R|S
zng
Ah(h`MWqK5ѱ:nԱS>}/o=68Vq]^ɎՒvCFK[_Y<$/XӃz9ZݽUp3ޠ$?+~@Q~YVQC+J

Tf?b,+U[ʓ֩|O

N` PK  
  PK  C:U            2   org/bouncycastle/asn1/x9/X9ObjectIdentifiers.classwxSUB{(-B444(C@6$$iPp^nq
?{s{r9IY񾇈( %$igIHUnK]4D^|%%LIIAIC%J
I[0I%#i}} WCP/gj~+|[UlV6|ϰ'y4~ L jZj+6"W7[(MM5"BM B.B,	7F*RIfP8`AUD3WJF(,j

u\A]IbfaaCmjv?PPrr6)j+606-`Ut4gZAx$sN\;kM\'TMǝ&uC,^7?qcFSθDU_m]cz7٘pEٰjP_W#ƜXC8kvؤ1mG\DPPX<Mv)d2;[\<\_74k3y&i̪W׻I$ܴZcicrt$fիª]P'}xt5'9zqz*	cnRY鶉ّHu"l9A]jA*
wz=#i|;%H6iTbxM9ɜ6}Ȗ煪g6VRN3ncL^faamoy{am56>hsm_1ЪZrN6SIru\
-n-\)+%ujC&&'S˨_[?Sh: cqx L&)T`p p PLf 3Y!a@8 Qb4 @p 4I @@
, `)X VrڏNF'ҩiY9yE%eU5u
M-m@X	
< <<<<<
<<<<	<<
<<^ ^^^^)U5S4&sJ>^h
l ZrC8pù3r&9F89sΉ8'sy g=XqsN<sx:)S99sQ9q.<s	Rgq#9[9GsڜrF9sy8-͜+8WrTi$mOB$*ZOjO'̪z迊UEwJ򴮪ֿtCtVJyAFK^tOyGz;k?17!OֵyZ3fxf O~Fm	N[nZ?i]r_A+
hOA+~u
J'оZczgQݠަAcP ʡ1ET?Տ)z/G.7j/~yя7'?BR\o|=OWޒzEo>l@~zG-;|\G#oz}K߼ZvPKiw J  ?  PK
    D:U               org/bouncycastle/crypto/PK  C:U            ,   org/bouncycastle/crypto/AlphabetMapper.class=10 E5111nL4 !mS*9x e,p 4)dI칒0(jaoznmhdMe+%8*SR=%8m'(7;ݰRZa( b9n kx}PKx      PK  C:U            3   org/bouncycastle/crypto/AsymmetricBlockCipher.classuJ1׵[kS4 <! Tx45u,It}4} JL"xa>~s
,~6-8ϧT	EeD(yM&@RJgs%cta]f1J1:XvBeǹr]}nүޓZTuRyߑRR)aozN/73a=\pMi؋dӊ:~ PKPJ   Q  PK  C:U            5   org/bouncycastle/crypto/AsymmetricCipherKeyPair.classRMK@}ۯi~੷6
("AMy.5mf[ȿRĳ?Jlx"e7̲VP8f`0GBJ0`>x.Cuܙȹ_?C5+@eMBIz"qO2R\iC%t' $-+rґfV{m]k4y797ݷPĆRl2`%Q͖	?0D K2D&
S6WԘ#Jv;
h+tbb3%6;,՘RQi!#h<zPKL    PK  C:U            >   org/bouncycastle/crypto/AsymmetricCipherKeyPairGenerator.class=0Se b` NS	jr5`eeu X`0)ٱPǜ(Aaz\řMk-Wg&TKzĺ lem?h/)z)
lRXd?Km;bI%4q0 v9PK6     PK  C:U            ,   org/bouncycastle/crypto/BasicAgreement.classOj@5T#$9^zd
 X(x͆F6A?~@?ze`{3?_ ,ZUUKvA`9ç@jKM'}*Rko{Ί`Y*>Vw10H`o3c<5wb'P>k(T4zk	n
@LnPK 7     PK  C:U            )   org/bouncycastle/crypto/BlockCipher.classuPJ1}ۮUV^[Oz(
%;y(qC{<=*IgcdZFS,Mf7rLWO#0%|Ii#]/LgttNgD#(Z+xo>c?BɂNUXeKOt8[$:34c̃W(+Ab16cc4bl	pgDf+p<׹}ǹOE:_&ʪF5!p(Lqٛ(j>vPK    PK  C:U            ;   org/bouncycastle/crypto/BufferedAsymmetricBlockCipher.classT]Se~
!(ѥYBK,~@Q::CeyY]v37LBgz̈:qs6B5$s{>l~~ȤV錮Yd9Jtع)?МG%w-PyRda@nǲFՆZmW#GmS 
={3mׯnح75M6Fe )]onaTM_锃}r[$PqConWY
d*A@cWVUfէ\K+p#zT݆+k:P%7nTuT5}7auvjCөPƒT\:/\H6DJ#M™@ѱU[ND+V5-bᲅW--\PJgIgmI~o:gƚpXƝG^GRPlg|&+f}ed,.bE7,XHFf
,bq+k0
LenEnx{,̹h69^1wIKǲ,A׌ɑe2S9I:z%DBHї}pwo?yjw0
{h/9F_?l@X3گ==L&(A2,8(RlG`9]lq79"6)I εrѕ\óoŕ\j󿱧BG/Ц.**A_-|8Vrbgێ?v%џPN:NNKt%L0aΗy.7 X5Wal{~C8sS7c7?/,-ſPKd    PK  C:U            1   org/bouncycastle/crypto/BufferedBlockCipher.classVmsU~nɦJ	MB(}@
"MMnvf28q(Xu@h{wΜs=={?!"XE[Q5P'#99ti(RRH2+|	&|#Lv(W44ʌ630"U3TUX6tiꮫ,-f(;ٱ)>ț2tt;^"g9DռA,hJ]pn1L9wg+E;jJz`P)4ēkhzj̺Xf<:?_KvpY.DBČzlD[W>K}"nqlG#=:l3Ds54^rkz"rn[ؗsfl^z's"+tCԔC=mQw=*]r:n\,hm_3|5̆^^I9@sDt3$=A&{*뙺%؎MD*1,ԊjUQOOgԁiFaרCzTz_:dlCFi2v%On/R
qO%{N>ݰ֒Fxތnbj
>nUlH?ȃ2=TGNU5&vSoH-q*^%DUf3[UE?ZTt$RqUl*4mq3yn.pswP0xWMAQL):enS0q'a\F&Ǎq\&KܰSTj_=^Sze?6t*Ȑi$qI'U'%'1	Oi<#N=s`yr* +;!J(RP^F0=u)E\b4Tok}T`*~kzB`4`W(ەPHf spӓ` 9h^6IT.?qHe.B]Y|R%O`!ZMby3BhRq\g">
3q	Z
y	S,0Ibv4^r9l"?Ri[vwjZB/S sjZ_&ikUC)C`i:U"LP9&häo)-z㋸yhj3!cbVހbyi7hmGtHZg_[ؠ59!=a'&pQ?*pR|?p<5WhvHZX>Δ6fq9?>_є[+]wk">RÖcq-3ŲnۯmkǵG*8ZǹuBoyu|!c`1b_=%Fj"k
vHpyyl\&NIpQ0ElD0O@:D^Bl}O.S#g}H<>()jPݡCB}ghK^aDOZ=KhbПPKF@0O  (  PK  C:U            1   org/bouncycastle/crypto/CharToByteConverter.class;o>NF6hgh'FԢ +=$ A +,Q?'1/]?)+5(__\X\\TYPXTY1(ADCaRpIQf^5"6`bad`f`` L ! PK      PK  C:U            0   org/bouncycastle/crypto/CipherKeyGenerator.classRn@=@R;u@	UDjHH/$h_D)Q$U9s?~VE[Ƿ9vȻM,2/W:&)P~l%2*N"M\@'hE2]na$Y$8
^ #BZoUG~$t!RI7G?J2A{j4Љߊ]R!,C4)=(6YĘ	ǉT'MڙgC0i}Hܧ,S,\pB²	Ti홥lw,Ʈnm1smGFwmQLsu;pqP@Aym8Xm%)&p*ڸG6PqLpmT突r*?rFĘ0M8UQ0s<	\bxiM
P7藭bOT-uBfD`F}fsq)PK¾O  |  PK  C:U            .   org/bouncycastle/crypto/CipherParameters.class;o>VFĲDļt}FtҼ⒜Tʂ|}̂ԢĢԒԢbvFv&6Ff(  PK6nY   \   PK  C:U            (   org/bouncycastle/crypto/Commitment.classmOn0=&4کS;P#bСRL W_QG!? `Ef4H'J41=.BO*B\vIKQK{'㋬l.Y/L}Wb%^H.՗Vz<-p:|h3s=zT}J</M#@>zE܍
u0)>bF܊/s31PK   I  PK  C:U            '   org/bouncycastle/crypto/Committer.class;o>NFFԲĜFĲDļt}db~Q~R~i^rerbqIN~rQeAI3؀"vfvFM
jsSJ44441ـNe`e & AB PKjh      PK  C:U            -   org/bouncycastle/crypto/CryptoException.classuN0E<4@Y$oرu+Ev@JJ](cE33? 8$hFe/	\3AʄN=2Z0ѫg.:WDfV4cnK&z˸e.Qaӑ؉MC4@^ U8 pRu'plʾbXM[*MV-
jotd/9]ڱ@ߐΟXPK-     PK  C:U            ?   org/bouncycastle/crypto/CryptoServiceConstraintsException.class;o>.F6̼;FĲDļtҼT׊Ԃ<FtҼ⒜Tʂ|}g0ZTꜟW\RWR ჰ (3/Z3.vFTEV 
9<!& d`` PKܪ      PK  C:U            5   org/bouncycastle/crypto/CryptoServiceProperties.class=n@߀C@)QREBWW8bm|zw]bLIn36
;-	6r3SӃ>kueM (']]h4Upjɳ}'b	}A0/֯Ӗ8b"⟈[}9om$		N|wǰPKF   %  PK  C:U            2   org/bouncycastle/crypto/CryptoServicePurpose.class[OAn+.m)Dm( Rza)XHH6>6%%tIh4<3 $t3NNgf~	`C!be31D2H;!J`jެw)gde])-|v[n^7Yi+oBX*PQ5+^ے?ŭ6E)bw;v-q5gJ۰I3ij'6ZM*>VJЛ)V=kA:2eܗ0?2;7 MXZѱU865z,|q[⃖,]/7*N֛Cc?Fr	sǸx]<!
|2es.\\^pY+.*&b
\^4[η[)|"@r<cG8q<w-@n(xgP 
G%&?	V|̐HW3C"Hy& yfvE0im?g$α"H
z`
*5AfZ?4)V5Ɗamc#i^)0Lf#kh!aLj#?yPK^Y    PK  C:U            7   org/bouncycastle/crypto/CryptoServicesConstraints.class;o>vFlFĲDļt}FtҼ⒜Tʂ|}g0ZTZ윟W\RWR`CހԢbk06cX@
 PK
G      PK  C:U            6   org/bouncycastle/crypto/CryptoServicesPermission.classmSkOA=[)   >" ZZ^IBۥ,nwqwJO?Aѯ$cw&{gΙsϝ;; fGnbXM,3R\THnJEZe]H,Cz&ljmsU
.pQXM3TBLæJR
aqv	I]'(pbRUio:I"y&ՕY<ݔYIJ=~:7|yOUDUfPK٪R4qxZ5ͶCT J]8ϘV5Q6rp[jBHCQ4E[lŮJT  Bt	$\0,a?=]3,]Z&`$-F0Di{s=CtF"MIdt⎌~0~d^d\sq2v"{ALb.
&惘Lp	'w¬25.EWʹ[\;(6K&3#m0ap	_'ބ	51",8Bjb$c)ľ`)?a!3,L{YY8bogc'Xv8L{>IQc?Gg=YO6G]MДg1΀`MypuЃ4GsG] PKSv    PK  C:U            7   org/bouncycastle/crypto/CryptoServicesRegistrar$1.classPMK1}mն~\<xЊ)^ xLÚ&Wz*(Qb<x&yy'6_gA;K~7Ør$VOVB晁[kYI|I\kBv$1y+,!:aYlzFf$A?Y6j`)6IPLN+-K.n?}5٬ΑAİZԋh,}~[ޏTqkd԰:"a0VZ?PK*U    PK  C:U            7   org/bouncycastle/crypto/CryptoServicesRegistrar$2.classJAZ[[}QMxE4l.3ef,<	 >8ϛK ?_; SƓsL-YF+O@snVI*mWv6D;K]C*G#ɑV]dGꡋ!-	;*)9,п7]QIGqp4Aч:i* ;joFk%ŜאJqsm_PK/A%     PK  C:U            7   org/bouncycastle/crypto/CryptoServicesRegistrar$3.classQOK0enVtNM2<YjGM$
V
_yP0ߟ;l3,u{cY"{NXX3\d*B`f2T?X0:KBa"N\39f83L!*K"AO4uc eUUB߂_|o졎U%05uxhpPHP2LId|-읊K)apH+`WAڦMyxBhxh|kJǂ.a2N`j_PK6    PK  C:U            7   org/bouncycastle/crypto/CryptoServicesRegistrar$4.classR]kA=l74&ڇ4V!BB!bdNΖI F?J?RZp`sޙw ]`ȷ>1J+7`(Uɰ.Τ8泲V%!83\Gs)COh,(7?G0]f*	d\pb
3tI8`,L	i?HYg8YO~Z4S:km˿ox(z<<;1V:mOwW.[1 C}雾iS}R>6}<DGGv+b54
d~ZĉU::,0ﵖfsk+UA< 5ɟ>a.O(v
	;<\5P%VFX/eW-[>saPKOC    PK  C:U            >   org/bouncycastle/crypto/CryptoServicesRegistrar$Property.classSkkP~vKŵz[oV:BH++Z)S9K5#MK
?J|ϡb'09yO_XǺ*. /Vm:3Eխ՟[;ݶm:
Zǚqvj7vc۵-	8<sJĨ
#{WoفY!Bk;s7Ƣ_j2c~|ϝHAg`mͽF7YW曍-Ԝt(]s0
X?VpăhґܢYۚ5#PqQ%:=O餦|(p>94Ϻ#*^϶?LᔭO&3#:
,	+`UZ+'hUS=zy gt6/iT)m~yң=K
1d89jdňcJ%~s=IL+B2n.04zIɊ]#fďQRyi5g,H&4Cd~PKx~  i  PK  C:U            5   org/bouncycastle/crypto/CryptoServicesRegistrar.classY	|\yF[[G%z{c,A"y3Y
N6mӋmCBR#^IIz7MnJӮc|o޼W?1"Dz<]tMuy>OyS'yڗ[t[Ft O`ޜG9zK-GwpJfѻ=1lV޷glZ^h	vWREvXʎm'BBXs?%D(\[9Tc
=ϳlǎ+mAy~I<XW+mi+xb'X;m=j_I B+
w|(\fWE0Aj8~EqqzB$kvJ?BựN-#?\'%o	L6'2'<
e'vCr'qKőϕ}A/Z/Be9]
#G+?T*	C@'pp̃Ď\8%w% O'LlBz](+Z{P؎q
"-eHrφ?#\o@x 	ЗA2J&'TV$yH2͑ͅHc˓pb0\G8#
2\ڇ|$
1N<֑aBG
"ż "daF/!K߆r-8Bx/<Sg8p승]+FrU\G;E: @ұ=e)X"h.FI L1VD*@y۾qA:֖ˎrЁ'r0|x|VrR&tN	ؖkq졈=s=[P ʋc"O
bm$/ׅ$ A&@  Th󈣨U2R($h%P	|B ,&ؑRD#,d0LQe (H<YHYdPˁ2DBX^ r -.B)[88T}ji-o.G:;0eDR"	9
8$rzB	ldvѰ(-Cr<C<	\DF]) [,QmnEVJJ7 Pq l'@bx*HhX%6\nANy	Y1
 BGLF r BB
}G."mQ~(Mj6veM{Ꙫtv縘8{DνbrT'(M֪D]hN1G]V=|jܷ}7<t
9t`Q׾ѡe#oaj4>)j*w78.'!-k;ZƲm^QSZ|\W*%#+z,O&qU=idn+WnD<F,G$ K$bRjt>L"c=(@xb 1R" t*.Fx3Z>E`muHWRy2=T.WH]S>6	/ZTn(bbAݥX!'ʓpY>:%*zhR!fV˅ך4xJ˲ңJIjanEn-Ņѩ	FoZOC҄7qxEs(Z$WW +jf#@ 1p4{;r$Z ^"BqQ@㉈1<
8XP^'"tXv"=+`nm2Dl
%0LK2H}D a9{ZDNГAAFPϽDvFvd<D68N0 ED℈! gl	 -0TI`0aَb1TC#L"4&'N9$1sjG3aR U](+ ]Y qU:(mqr)!cF	ƥж-#za|mc
0j,E/hΉ!3Eh ;p=8Ƈ0`7<dОF
m&
ڍl[!&>iAcԞFjvl[@8 SZcUftď`Ѝ1)s" 
clCXC=vDjRMЛ0Qa0	p&`sƭ<n!whk 6:o9vqT?ȘG <<zNv‘
aņtU9^BX: .bD
XzHTx`n|!Wћ	}shT=uC6U櫫;711T?vTOnzTZї7isk!
ͭ:ޏ ^#{JY*aK]*e(݋,Gc^s^+`kgs9 ^|G
\1(j%98>ԉƮDll@`|2m0m6
utdyA
{W2=FRTkzN]LLyp~`dӃrbVܛ>Z&u~<cS=Vq}<nkiFylǓ2Qܷ!_tk :R|C_x{z1j}5!RܯEbnNԋ} leEE]`\JA2][]._ӌ͆Y^
k'&Jy4:kMl@m![ꐎZy~GDe #?G*G:GIz$G=s49Q9GS9=9zk9Goѷ[s}{ޑw:#vdbgk@ئkF3p8O	gen `_.ݸ]w,-z0}$x=]QIȖibb,]0?l'wCa<غ6w]<#ޭ#KFE^ֻlsf{k?]krb\$fPs5Keˮ5ZC26_dLit>;--'UxRyfnl>nlηP3xóJ{Lj׵V}}S["
?JZ_pE!7[pK}#i.X΍;]F%cecVv遳;@WE_J״{bb΋p*wW4@EfvC
tH3Ez~HiH)m~-N\;
+t?]Y7"A?_~H{tȐ_*ME>Q
E>e~H׋t!c0R~HG..LFEz~H!9{E^CV"UsE:fH>_!'Eb?-;ϊ=_h#!m!o?!lȿo%C@W ݬ@$=a^=IV=Ů(̑g+3re37!EC
h&C褑!/5 \NC
y}>DSn3$o*CS_Ob+V5eȥn5=.YM/lTԕ55!26Dmˈmns0{nϞNuwwxG21Z=LcGӉ/}gVD>_G^4ʦٶ,g؍Ћ/3?B-=Gfg10hVߘNHyfͲ[>IkqMzIz^w`㥆j۰~~;ԝ]~I]2܆Qa<;o
u3}/VvM8ن
욺ـ{d]8tmeo~@Rjiߵz=пȬb\쫴wһfwer)tpث&ҭ#Q`H11=ͮa+6zmfWi]E*m]٥eZuC]O
v
Z\*2)Obg#@*ѮM3~w_9R+iGǦv۱)Z;ɯ}$y)Owӻ3gS7Q!dW|V/2L!>0ͮ7	К9zXWs?ޗchƿXO&
[wMkH='y
Ud< p®9z vf0vqmH~tL2eL:n^E76Ҧ/+-{9҇$P;K޿uiYMܔAM4]?G3&,Hl>0 sZ9T]tB4f6ϲoMcf{E;f؛ΰ{ΰX;qg'=OvwgI_u,o𶾻sKxuѮ/6^EYӎ;F._]<*k5
ϙ3̙eN9znkvivm<]_צ%9z!	O̲N9:ٶ9zC=N֑{ltݺ3lg5c]kfX33lgW5N4.k7Mll+g˶&[1Kuۧ`m[10:r(amǗM2n7Ǌryyg)ׁ.~]L˩k%Qw_Qr
f?=_ȞȞm?PKDO  +  PK  C:U            !   org/bouncycastle/crypto/DSA.classuλ
@лPk4.FXa\Wt#*, ?JL,t;>_
mÎ<q
%WhFHqu1z\]tGֱgjм]fnD~̜g2Tu?vb{%	س\ZqiUTO1S@
y/gQOoPK,6!     PK  C:U            $   org/bouncycastle/crypto/DSAExt.class;o>NF"FĲDļt}FtҼ⒜Tʂ|}`GF9<%L,>`sK22=JRSX؀bb  PKp      PK  C:U            1   org/bouncycastle/crypto/DataLengthException.classu@i)$lMuEIԌ˪PbZb&s| TaD`MzF,ku5fGrg׃Vt4LvqA%	F˓bσ2lTmncgFS&ҙdQ)v`QH
 u1r	&uKԽέ,s-pPK@E      PK  C:U            5   org/bouncycastle/crypto/DefaultMultiBlockCipher.classuQN@M;q$yT
K
E$&s8˶5AICCW:B$⤛ٝۻ{|y*![[lt`֎7
i懾 XTA7Pfw(/W=	D9 PrʕP)[gU9"t]@:n:V-ؕ}οjy*^K[~ܖBV܉\$$a&
LEdH!h&J31	Vtc"ak~|OćHm%FkRCffe1GC0SdLǕl]gTv~s\윭70ݬhNEd>a0	PKy'<  L  PK  C:U            0   org/bouncycastle/crypto/DerivationFunction.class1NAEò @bDGEV
3&MfY'bFp(l4_-.f:IEyXe֩ּg8z[ }D}xsպis&ylvu[
b]9+/$z]:p'-s=eAi`7gNM^mI8)#Yܣ<-PKW   5  PK  C:U            2   org/bouncycastle/crypto/DerivationParameters.class;o>VFĲDļt}FtҼ⒜Tʂ|}Ԣ̲ĒĢԒԢbvFv&6Ff(  PKF]   `   PK  C:U            $   org/bouncycastle/crypto/Digest.classEn0+)䅍Uʀԥ	(1H:PUPt?_ H	,/NU >VEqyՍ	Vjy|GIHZk%[W^F#̍U|oMٕuN[0|:'cb	,ܯՍZ23b
Ss?=Ox?PK=5>      PK  C:U            6   org/bouncycastle/crypto/DigestDerivationFunction.class;o>NFFĲDļt}dV~Q~R~i^rerbqIN~rQeAIKjQfYbIf~PD32T S;;3;#~ll@302p Y PK0B      PK  C:U            9   org/bouncycastle/crypto/EncapsulatedSecretExtractor.classE
0/:N>C;e'(tNiWs|(w X,(dUW@,3ĥӪz݉Q%rF`d{:$uZ.R,S$
)&E	0z1E?PKjJ4      PK  C:U            9   org/bouncycastle/crypto/EncapsulatedSecretGenerator.classu1@EgZmDa v0,<2J(W/?yޏ' !FgXHy,M[~0+N$cZṲu6Xjdc%Ϳyf+~K0d$T5fӄb9%Yz%?."L .! L; PKJl      PK  C:U            .   org/bouncycastle/crypto/EphemeralKeyPair.classN@b*񎨠RM1QJYWLH[RIJ𡌇MܾLs>? c!,t{0wsoqjjV7Ӡott풻>BNMm~!VT- ܏AŲ[Jꛚ=v\k{Ik)HQ%ڙ ;R$W<aa/P3݅#4C_T]V'wҌRonAˏ(Eİ(bYa0EDCke=$6H!@4@$n^yԆ,o"E9ʇɦWl0|hα43d٨%_{aT"/yC!7PKr  J  PK  C:U            ,   org/bouncycastle/crypto/ExtendedDigest.class;o>NFf
MOFʒTԼFĲDļt}FtҼ⒜Tʂ|}b5\
\+JRRRS 
XX8؁nadad`  PK,      PK  C:U            8   org/bouncycastle/crypto/InvalidCipherTextException.class;o>Ff
0F6̼;FtҼ⒜Tʂ|}g0ZZP`Kg^YbNfsfAFjQHjE	\;3;#OVbY~Nb^~pIQf^5ZXđDB2rRyA;b`e\ 9?%A
fF ,V<
@Pi! 	HiiogEs@允1iv-m| PKȱ   V  PK  C:U            .   org/bouncycastle/crypto/KeyEncapsulation.class
@Eh|~FR*(DA+qb$nfk~%Vieb]ʔu'Nz'LIr?r03gJEMYVJ&\εdL2M#
:eS MwI`X)9Y>4h=/	8Ъ"y^PK6A   9  PK  C:U            (   org/bouncycastle/crypto/KeyEncoder.classu
0EڀSN
N
;#X$Qȯ9~hpL=	`AN{}aѫrFڞu",}07V1
,ucЬΣ
FZNᪿ8NeWfP@ PK)Չ      PK  C:U            5   org/bouncycastle/crypto/KeyGenerationParameters.class}QMK@}۴M?R[W譍\<xA҂mĔv#m!ɃEGA<d;73<v?>Ig(^ח'i`S>R_3Z	ƌ3sn'3j'P3	ҍ\p\=$0j"	*ZDWB
ŵ;BhBR70bdlйILm_G_^?ਗ:,ɜoBB
r*8TPnc15Y.5%M 4@Cb^]
¦}kćʹ6FFX_~Ne3!˭DPKr@  :  PK  C:U            '   org/bouncycastle/crypto/KeyParser.classu1
@DkL4	.T?l݈P`o73f%_XZlT+tC~܊\RIGkLw%[W)!M:-v?"9EDд;9eeõk׵r~LBo/"( 0x/PK&u      PK  C:U            !   org/bouncycastle/crypto/Mac.classuKK1OtUp!"2w]>`>U:
iJ24 b+,rr8ϯ 8&EK=Oo()ණDfOٔ4c@9H--لX1-D).QN7)ϭ4?2͹a8K>όYY
xYnYZB2nx]fX#1Ebbbb	H-:QY<26c):~{߁`{k8S;P8A괯M+hU,^m׹
PK]y0    PK  C:U            3   org/bouncycastle/crypto/MacDerivationFunction.class;o>NFdFĲDļt}FtҼ⒜Tʂ|}Ԣ̲Ē<7$fdťh:zv&vfvFy
M<zXNb  PK)a      PK  C:U            7   org/bouncycastle/crypto/MaxBytesExceededException.classuK@j)$MIl$nāq!q_YaWj>x([K<_jN;\x#!UЍ:(Q8]$8D<|BI޿$i~ٞoٙ	]Td(Xx(Y(SsP4֞OP5+ع!߸atPxPK     PK  C:U            .   org/bouncycastle/crypto/MultiBlockCipher.classuPANAp\|aIgXlv#>̓QD¡ՕJuw~}xH
|1+
0į,D0Ywk)B oÜ-󇣚X)N+Lc2n+s6q ]zE%ՓeBٚtndh\idZ+?LPXZIE0464@PK6%'   =  PK  C:U            3   org/bouncycastle/crypto/OutputLengthException.class;o>.F6̼;FtҼ⒜Tʂ|}ĒDԼ׊Ԃ<F]\KK
JKԳ303032jd%%$e[k0 ✟ʠ
 #1''lZ86U0  PKVJ      PK  C:U            4   org/bouncycastle/crypto/PBEParametersGenerator.classNQƿK(Xpөڨ(&iؤMm)L/&.}^@n\`"ҥGpMsՂ9~߹L$LdA34ntV)mf;s3ksxḛ'ݔSDpc
FEԄ˥'\{Wlr¥>Oo"dV*vjg&¤c.ϫkv_}tT*GmQ&VR%2oȪHf]:\z7AqOؑv5]^i
fDv] A	"83XDƮo	q`"9`cFY1 \$)򒗟zB)/vTG/aZQ{0$h7JQ[q=C_JڶA娕<u +GhPXSc{wj^=Bw3VP_De,^
'}7ҢH?םdG;"1nxdZ'( [BV5nX-mÿfe6i&+cv[Wl
PK٭Y    PK  C:U            1   org/bouncycastle/crypto/PasswordConverter$1.classJ@M&ZFAO
E-%VblJJO7in*32o NC%5l9Ab.AӻrF$Ƭ
hYT%8d<oCO^ܿƔq׆YPvk5i0_vǡ=|]VkM?D6
nD@uL.6%r5lF`܈Y4*`[VM~#/h>\?6
"#I OXRu˝Wld-yێC"L_PKD    PK  C:U            1   org/bouncycastle/crypto/PasswordConverter$2.classQMK@}Sk4ZkCc()
U%VjlJ 8isS.cޛ7cleXm p6꜡\ٝ
'!]qӽ8mD3h&\*B>Wh[xj-OFc%,t\>pex.]%$gC2ٞ
᤭[{8HCNâ%bl߻ou~TYm=7=ckfOG)iб2i[hF3F"$kĀAoB{D^< }|X&"ƕ^u2a5QYS`	TB6)6ft
e3i[1QaePKP  Z  PK  C:U            1   org/bouncycastle/crypto/PasswordConverter$3.classQMK@}&hƪ"
^zR+1[6k%JO?J|T12:TرI.fL\J^;)A5#EOOh>ɦT9%8f|j߲Џ}/}N@
)֟8'Boas)]ê5J{pjA3۳FoBǶ"K0]:*&rf7ɾ7Tܱ	
@Q'v$@M3Q〼za3wIRS&Ϲ%6b
LV+o5',3f"uld
PKx1K  Y  PK  C:U            /   org/bouncycastle/crypto/PasswordConverter.classmo`Bvd×)*o6a	%ݖ?u"[S
 g<mrWszҧ`/DDH"d8bhO'9jn֝h+jjDqh;m~_rbjTgRVe1lǰdYmZ&==;͚g?qH]~CU1>׮Xv&:7A3Ͷ&Z `,gg|y_	O:['&4Cp|"9vݬK}/8%frPr}X6ߚtQD5vyyܑ!10'cd/6bx1'L$D9ZE2"IMNi%4l#zepXQXFX0ֈ~NWazPjߑ ?d<mH /LEȞ
AÑ11EwmxH%y#}JGJY+Z!U|=k}(g&]6UH30PK!vC     PK  C:U            *   org/bouncycastle/crypto/RawAgreement.class;o>nFf
MOFĜҜĒTԼF878*%3/$XR/JO/KLN,.IO.,(J,ȠKsfAFjQ@bQbnjIjQf#	꣝<5Àvp03 3@L31p PKwկ     PK  C:U            4   org/bouncycastle/crypto/RuntimeCryptoException.classEL@"&il&􈄜;ϲ"(はMvv&3`b;%C/
Ym
&1^]83)oQxiEy	(T݊dZ 5&4k>Ci0@s+&PHޒWw'o/PK4p      PK  C:U            5   org/bouncycastle/crypto/SecretWithEncapsulation.classU=0R`0 (ꏢJ_PTLL>Kߟ+r֍jUy'bt0^Y:׽m&:N"t4#Tm PI!~׎ۿIRb.QUy(f#k1)PKk+      PK  C:U            2   org/bouncycastle/crypto/SecureRandomProvider.class;o>vFFĲDļt}dN~Q~R~i^rerbqIN~rQeAI~pjriQjPb^J~n@Q~YfJj;;3#بb̒Jl, b PKKn|      PK  C:U            $   org/bouncycastle/crypto/Signer.classuN0iCiJ"$*U	pI]'ry5B\Gb]>3|?_ nq!ЋW Gh3ɜL|2ɐU^tn-qYF+QZ<yZ(誰y(j5ܚ6+یJ#p|PNMn}VdYRE,
7d{ؗ8H
Di.dUVwL
b?a<F! p[a	vw_PKslk     PK  C:U            0   org/bouncycastle/crypto/SignerWithRecovery.class}J@M̓ˀ+
4;i&0ͫy|(q	^TwCU}~ !͋՜\sxbz\.mfi%GaZ<7y-֮jP
5&8`{Y4gކ&g	F[^M~)e?!$C !a:Zh'1@8$il"ΈL)my|PK0   D  PK  C:U            ,   org/bouncycastle/crypto/SkippingCipher.class-̻
0sqHx4LB
Ҁ8֕qٖm0"8W|_o Gl>4nf'w]Jyn;֙?Jy`ކ`9pH(ssJ²$<Q*, PK      PK  C:U            2   org/bouncycastle/crypto/SkippingStreamCipher.class;o>NFĲDļt}FtҼ⒜Tʂ|̼̂t̂"FB
KRsaUp*GR  PK@}u      PK  C:U            -   org/bouncycastle/crypto/StagedAgreement.classu;01)TnRJ@e'A(8 Btxy/ ;L9:JEaӃtAUI.VIuRwLtlqjDJ<\[/CBCLxs*.BJqblYۮd|/FB)Z
3PK5
     PK  C:U            /   org/bouncycastle/crypto/StreamBlockCipher.classRn@}:$@:@
-@qH)B-*.ݸԵ#gȽ_ 	·qH
ٝy3ovv}=C5aPb0vn3\ߕRRq2BE]1]j7DXAPrca
";|$=pP'\r#
|\ȓ$ns"E*ߒr{L.\~!3GFqGP(㓆+2vU:iu^׼qAo?e_2e]
hdF*2РZ)"
m`fqi#اA14nݒ9mLEPHqv$JDU:0jܩ?ǐ&G;#kP0u(2sg)sD}R?/W'nM|j&+{%'&{ZnljfEjuS=Rb~GxJFkJp4c{dk+(JƸ_PK? G    PK  C:U            *   org/bouncycastle/crypto/StreamCipher.classuPMK@}kF\Ԩ@QAm)&N(q`{Ǜyo{	C^(qd
Q幼$W814YkYiKVwVښ4*2;dZ8S!sW3l(-Zn;zBlc63;m))l<W;gWlA0n=aLdWiH:~l3zNhu?oqU3(K
TɊ_P/(PKgE*    PK  C:U            %   org/bouncycastle/crypto/Wrapper.classuN1E
ᕂvKEJDD*Xm:!5
>BxU9yܹ	gn1VU9FǛxqMȬ1ur%E-ӹVtو_:Q7!zQۭ
3OzJh#\ZzafBgS.ȑ8!cd̀pYvZKND͠|&4Ih#8I	a[vA[扄v* PKU   ?  PK  C:U            !   org/bouncycastle/crypto/Xof.class;o>.Fvh'OOMO +%-3/1#%߿A +,Q?'1/]?)+5(__\X\\TYPZQ⒙ZT(KaD~;;+;#';RXl  PK34      PK
    D:U            "   org/bouncycastle/crypto/agreement/PK  C:U            3   org/bouncycastle/crypto/agreement/DHAgreement.classVWW&CE\J$ԂUHRARqe2LF&3q2AvoYhkm	zNŗ>o=$HI"9~۽?Ѝ^4z!yًԵw=;4(DEfLu2и(;r㊭쌀pDYhFJ1lU4JѶL͟^"2C'S)ѨMIf	wIU6g=ZTP3ٌh^RLFW%:=hVtӡpU+EѰeH]*
idv)MQcNM)Y4(+B3>q++fJN	fmV$	
+3JPL-<lLS[l*K;e
?	Y4?fRN*8a]61J
MTq"U)EiVVTsqV\ڱ\*`ꠞN2{x`qGUb(V#CemomykV,ܲ3u1#%]{3eɗ_
k\_E?ԨSI-`]eu'Y:r)hzo&S))~;Ev""":ED="9i7Mwr+Gˡ*L~:sS{l8L?A'cRNUV^ejt*7:
"ּU ̵hK멒LջNksݕUj\wmUF\jպɮpUj;~eZ0h28t㈌
ex c#1#&cǈ؂1[9l¸V$c=&d	>V4Nh㰗gd<Ir#^9pxk^zHE!pCZ琒p%
10|HHpABShזA+A&zQG	%n0{-jh
+*ƮK֓60nǋ˳=Do`Kp@(p8431i|y7t&[㍻EJ ;.|Om
B	u;cCͤiFE#s,I.<H3Y搣GqV1u8[ڰU}wRunЮQZy6WOhyBXy8!b*sWڼ}lǛw;EM|yOn-`<^6ս.qao-PKDqb?    PK  C:U            8   org/bouncycastle/crypto/agreement/DHBasicAgreement.classU[WU&AZ֦UKK**\"Lt2EIu-\`e&tJogs}s?"AhA񖂦x7K»e:hJMO(JMO٦y?*r+RiW3_i[RʊinYfǊ%߈Y)ul3V|Чl}A)<syΟ2Ų<֯5+Yn^^A`Qظr^ට l乱6%eg_r(\-AY4h7+lyi)rn2k @imR$Aoe2
έu[6&],	N=2x2Rc޷XȮR-*0/Os]J"*8Py5S
<놻Q}Q-/2]/-rS|N`{FjtY}TKJ+fTzhv>v۾Ms
Ԫrr.3VTV3*b*WUWѥ"[E^'gQH!"ώ}@J<:HGW;|Fu	Znb/1N_Z28¾?T|7V^2:[$UgR>ލ(cDkxphEC+T
,Gjgޖ$5(&5D0%GW4$spW[n&aV\}"]GXK!ᶄ/C[!\W!JA,0$F#IɤcmX D'1<I1/)b4Ov"=>|TuZBs1'z126.`mo9rl$1zz~ý
째Qx[OMJ!4A@ť0iNmJV**0pJ8?DEr[&i	Dt4T="@]- ݢ]:?mri{mEHȣx$TӿuGo/|-_qg7PKVN  	  PK  C:U            8   org/bouncycastle/crypto/agreement/DHStandardGroups.class铝GuZ5D@@HX`0[L,ő,Yɾ'{VȾ(PG*Ek?KbLv<sNۿ!x|K/ߵ%^%^%{K//߳%wK|ߖ8rSguf!n?u]evls_C=7~l謋Ybsy꼖:fP-T]4f|r9ueUzk(&6G
Mn<\GUX.j
6ToѼJUnH{19gZo*Sʸʥh+.%d=XӰz0\kFC
TmG)s;)/[7vLmTEe-ԥ{JcMGc*R)1bCi{:*lp_QVOl1QKe)tĢMhصf+^3F_6+5*dScƕR
jD*U|X?jjd BI5t^7+#ٽ2IY,-S5!YZK
o!e
Qg@wե:L*TdDB2Rjmx&}p3.;k.P
Oqt5=u].k M@d'읛6<WݨZ	5`8b7UJ K1ַB*7)MI1<a2-(&Ms)	]0­
^j9%֭L0uZZxfǳ}DfM֦dky8ӳoYжFZ\AUIdk1j\.ZGABKQـ ciR ,k[N}K
Jzt4"p4Ll̡%.P~V !pY:C2|ALJk㣖FX&IA{i%^4gۭF8>l`&
?sJC8A빲\?H/Q6ͱ܊>TX*v4Vv[PA`\Dխv٨v͘r2@;(*

⍚KHu#)OW$IJUC")B!&FZH]Qk|Vex8وR)tM7\)hl~كQ2tB Rf"`0ʹ!vM	:'9Qb &Ɔ@fz,Cso	=%7QcMlÒm<3Z'!\FAqAIVvX@3X`l'o!W/h!AB'=
A>E!	Cz$"Nz %a	pX Hn=L)0<'R ,>oHC	8W	
H	 fŪ)qg*Pz졺5Y]eN,cHN\&VLm&)
.ІvCA;I|ͩ-;	s@-hJ?|L)rɜB?Чs1?%{DJ>Ie[+[oԴ-	Z5G܈M3BK<0=_=BR{$97JQ0Ě._&#}% "Z#*Ӈta#"HEG#ٓsQb)\ǝb1ő=H傎dj~EL*RKdA(7 .!${{j$*=u\>NPd23;`tQnH)
0%
JT#v/\lfh8B@)d\ӡƞq{1f-Y	jÂR&
ư[ŕ&iR2)&8#Q>"J`|=[!N
͚{D";dr[wN.YQN~8xu7,h\`(C	0PJ ֊t9'%144vcԼyF!K: S*m*mWqc6\{G	p&GQʽ0ĥy^CU
TK܊m_:̓O$t/d,[)]x +íd6 k7q]D.3PSASZe:
[NʉVK	Me$Za$0I}[rlr8@_ahjҽpZwqp+2y (7=uqU-r'3AH중ZF^[vT#\y:n7bưm=qܭG	n2ɎĭM"lZĲ[h]I$&W`TcK0h'ΡG%jMըĲ7T	 4XC F=Rn\0?"7 4PN:Qemf76AlH5RG	`5'!#GUlHb\L&ӆQsrLq:%KWOcހ8Q`$Ur( ;ՄWoH@쉽4?^ru'Fu̆'2)6Ly*ԍt@4k)|QRPk" !rk~X %a	pX<JZHSa
8L!%P@d
l~?S=	<X蝉j? byř8wܿ흽^8G]r޽/w|`/^>/q?7~ç˅g.߻ʗvY@_z<zG^ۿwՏ<{{.nmCWz+>rm!^tٽ{3<]m<.#]vzyj+Ӄ(p惏,OtεA匿1[/>c}\͛&,;'l4aٱ>moi6oXǯMJ[͛&,;V~;h.]:]Jr8Tzܹ޻}OȓpቍO87<zbosy
ۜo'66?;{^wǮ=|[/xݻ!7o7rTQCGbo{j^TfU=΅Nm.׻B<u殧{Sڱj{8?)8LzϤ]l#^-4i{y4c37ӼuUӜFO㦉ӼzL)i4}{y4o-?"szx8-~R<-{ܶx8?g8ͥi.OseGiNsmi|hOi~ni~i_4:ͯM1ⷎw<&-~{ߝ14xLW1[]rkI1nk~XxX&ĝkbկ-K~ϝ^=gמ;F4r<?_oNYz5k~j59˿y׭ͿXׯJjƏоo5o}jM񷭍/hu5miibǯ-j$w~C?}u_=|}qq_Fo_j[,ȿ_ ~q;w>./l/~q⛼⿏z\ucc?98q|!yށO/\vbg@|bg:x߲;G'~|1S8_.r x]|@|/׶ħV>s̲oֶٝ#]vn9[vV>8_vPKn8  <  PK  C:U            :   org/bouncycastle/crypto/agreement/DHUnifiedAgreement.classYSA	"%ނJz^$rIU/˸]6	U|*Z~(5R_gzsQu$5g|KtYC^ O,֔}sI9]w9-:+S슰_^|.=hu*Z̇<Ysw葠=R[K#I))|#4$haW>yIq%xMfDX0rc/6z#
W+'#|
Vwjݳl(WXVSU+W-EȰ|""FˬtҎpt7Pٓ/Xa;ce%]p+ZȀ;zmg?sWwM0NX0S#FEPːb8p!pqTd?/34塥WdZFŽ?ѽ4Ǣpa["4񈷠4)՛%K9UMDCH1	A\2MtB	5pi\7p
~"g
g7p{2	C2_]fdi1I	H'0\)YHec#
Z

,cf6ID#Hӯfb/tmq	(ʦtv~AOkȟ8ő
,6p,NΓ5 ܑmubW}LOw[G)L){2/PK0  T  PK  C:U            :   org/bouncycastle/crypto/agreement/ECDHBasicAgreement.classVmsU~Msu+mmҖV0h
vsf7l6du4ttF8II(3}9_;Q|CgjĠ)hOx)
)Ҋ-L}WQozc7oG/>
:Y_EQw\_7anXy
Blfmlyt9n]{TO娦
gr=o;,OfiS~9^FA<W6]N+蓆g/yn{vfYܮ(&ͬS9tYjEϑ}RUѳFHچc%gm[S_3L^P_
*7)C_~.9%YHҊ0ʖT(t\/Oʊ\qKY1oU
2lR3FLf{eayn	7>7othv,L`Qf&Ymc<Q&Js\h3`<7x,,8$nRmsy
l󫷢q`RgЭg?w3ưa/p ! 0a#I
vm5
Nsa\/pqVە+b$ZEZrkXmo~(/ l*xɥtDnMks@#EriK
	J.m1 xT+E盫mZ
y`+
]Ұi
;ѡ!`z0-og4ᴆ%8jxokY
/bNÀr
5cI1Ѝ88eqE)T.!>Pr*Rr!w%\C8Jb!$xUUL	+2,0KkƊITWM
C"tM~Ew=dC%U_Gamd/XU~:6uYf들*nWq;zw~uhJ(|=dapVEo8~+$G$o뼈r)G]{{QGA7("xthe_X5ej*>!(령g`H=11vPKq  
  PK  C:U            ;   org/bouncycastle/crypto/agreement/ECDHCBasicAgreement.classUmWE~&ZK/UTbֶu6t3I;/zn9zd=YBI)sw<}14LL4,m|bkcFR]2Z
/ٕZ)vWav1(sP"CÖU:dn(DYJk^B;vMG$ٴBq<ONI8bRx~{=
5N۹ Ҥº0Nz0PIA/KMX1EbZ}Nb՝$
uf'\)f#*J>e˸ZyUeJ9}%\Rר8@'Re#Ee\BPëY'lTTU0DbMuuJ]e:}<iqtpJv&1㡫j>16SůFv@1;Y%T2x{.xfryK0p,9A!aK2K{'wZ*T(}wZ93K5$F[֮෎:6^z(3'цpq_v!k92Lr2x\g ܨ(.h$>Ї4:,	fckxC
bq,`1,Xe5©m[gJ'ŗLdq{X11/5|e21oL\Ī5
7461>71
wM|{&lb7Mઆ;5rAn.zE9˼r<A!ާtL>1z/5'0>#į=/[pCj66^MP~7ם5]XlDrded8~GNϑ(9AnVSI`T*BUOGGMuwŻQ@fd3xPK0

U
  	  PK  C:U            <   org/bouncycastle/crypto/agreement/ECDHCStagedAgreement.classVWT~mSb Ap*V&
	^@tmGog?s4p9g&!@ɽ>O C!88^CИ	~+b-cS䴄)Zj[ZV/h<1-G랞cy	3ΚP֬\ӵn[M7=rȴ5ӂдE5MŦ6Cs6rrm&n2	-Fi)p2田bLwBA=,6͞6_Ru8ͤ^DrRBؚ^-FRoX,ZC0/
m)kszIOںc&glMlj`ynfqku=<3yT[0犃(a+oDz9rZt=3lnMay%`;̴yb5E`v8#՘{Mj{HXu}=n
VcYf4fJMV
{@}Hԉ$M׳x6G</þSޛCk^~xC9no˸(#!GF>2d\peБ=ػ",3٣:B
$fYUl,B
Wv#Ȇ)w(݁z6u%ڥѦUr$^Vb(HOq&e]:NUT?}x<oWw:/![1<W**∩肬
qPqF@w`RYLh
/CaZobF[Ws*Na^+Mm],*]B.}*Spk
➀%>Sp
TAj`(:(x+
pWq$f]L_=ccNWmFP¡?;ct;kQE{+ďבϣ~޾qwdۤߐ݆.EvAQQE~	٧q3dw#F;EH--l>	%(tBҺ'/w
!g"4D.\nk؂׀;æ;F*B?F9PhgǷ>I:cjIgL|S2>ð2E!?PK$?s  L  PK  C:U            =   org/bouncycastle/crypto/agreement/ECDHCUnifiedAgreement.classT]sF=J쬢
HHZCP)		_%@cf^(T=ufofZig~ÕPjbrݫ{ΞwW>4j&K>20pER_`un
FjeCya^;k"tan[)\x;˪JKA(jyGm+MR5hr+&P7BZzYn˔Ju<+υG)|g
G:6Z鸉	.==Ϫ[qnGbz(IAY2-J6ʶr'\,ްݏ,foifq_ָn8#Dzƾ*iS[~Bc=F21f8Pd849JKeKDv=T*JJz*ן'7 ٫}>3T鼗{4Y^	A'v~q1=ypHGM+s{ޮx60icloc epچ)qpl `݆ô`.[Q\
X8y㘋k~ub©KupcD
uRt}H
ħ'GH{ʰQl->E'p8~:XbOe
`84$ߠ&ox/xnNnf-(ܾ
,xkΚŁ_`xPPK[J$  z  PK  C:U            ;   org/bouncycastle/crypto/agreement/ECMQVBasicAgreement.classVwTNiHi; q#JҎ@0 E*]) iu&4@}p]
=xMethg9ڞޛ$tRR	b浽>񐀪meTINMC7\sBmdqg(lBTڶfԤcqǶjNi5GK19^k{Pjٮ94⪖pK~e~ =ZWnnR@HL=kj.뚢
_$cq
ɥH$d5dj&Ikفm;3HX16eMwȱq
Fԥ$I'ɣC(v	
?i\&Nd2 qZF\5bi 3ݧ9Y5298F0:\qTiS^d	fX	]ö(sGNF_dHZ.K0JyR#mjvRT\~s+l'>jg-}B2ڙ^éc9I#RѝkG2RN1/#:a	W",ǸtgzZ3?okY_NBqEFu3]b^&(mF_Wڰ ﭘjoSl]fv7"9YIUROJM#cj:`J)u)Mo.2VIc}(M
=nɮ==1"VX#YDvX/b":Dt$>El3}:n7p|u+1JIyr)ͽeښ3w̡_OnzJ)-ᕚTn^wuFߓZjŽ?QItʖfJXHD[͟V>ZC@D3=سskNϭ(_qCJZ@e,m+U2P
QF2/XGd,wrÃA94Q+𸌻9܎'daX#2Th2Z9bTZ-e4x c2BHTc'j )nb8!!9sxABKD{ECxQ.XOI1'$<g$NIÓ%b\\	Hqxó M_1;N/^^%IYIAA?DVҞrL]*[ġq?OCB/8IĻS\e=<Ux.h^*)*ZO*'yEW䳯`g,EJ`/<|
ۢϸ"><|T*=|3e?9\򭇯/!HFEZE1LDP/>JsSgzx+ZMG碒")Obt1+{U}8BtDp&Zr+oF(Jw{x:Wj
S<%VdQ	O]+5Jx_^kPK>    PK  C:U            6   org/bouncycastle/crypto/agreement/ECVKOAgreement.classVwUMtBu"iZ
-JRk:t2&BqW \pAQDs$-©|oI1'w߻w^ǿJO4	e<\+mFzmpWN7ug _KӮmj\&}Uٰ:ԃe՘tSMj`SVD~aXSi9iSXo-
m7onP0CKu)=nXl[0=Ѵvʢ,:d)ǦpRL3;-czh ƬVRi bim%riq4SlOeٱ|MON#)m1J6
stVَTv[yΌXvʍ7g,3/\$As=:IkCZx8b,]P%2)/m}Y<xtX=TOIe'P<e}VڌGcpN:V]ң,u^r:EsnRmR/ܤyaWb͜"ns}դ6>DIncvu۹~Yƹugm%wdQڣ[6Z-˵ݩb^YTEISzbR+tb:x7dR-~AU"B""X!!+EԉX%b5"zkliAm/ޔDYSRȲ"~[_])*`d%}MyAZftm<eσ+bt?>
JYES/+Bk2S	Nv'ܲ`(TVz.<߁"W#[{HbRP
@`)DK )XAA +؈)
fv)
*9,䰎tQ=
ar<GO*}
fCS0b)X!f)~b8hDZF2p^тgd=ሌxMFqxNqxVF[^2:𺌭0dlðN8*c;OA+9&+F?)SHtCKF9DAJeF%<R~4Irho//2q!PM_\8·F.~Q|8nz2<A YI|*Iƹ{˱n"#_[Gdk-mYKh^27~c",D{ip>ŗ/'r^n|z᫡wcp6<ױPDu,B}Nf+4vYj[=v
sC1ol#%_Bszo:D
U.Ԯ9Rg3&;H~Kr+Ӑ6X*z5_R*
)
* +lDE׭9LK?)>O7vӋ8+65s?x; j
Q馫<
dMRg"W1J( PK  
  PK  C:U            9   org/bouncycastle/crypto/agreement/MQVBasicAgreement.classV[WU&&J)6BRK˵ZV!̤I(ow|kooRL)'3g=7 =21)d1oUjٮ%4Ҫq1E.َ:1C4,0P9w
[SvN3,59Z);j%Ψ
iHsyۢ٪c[']QQB-]4qfeܬf]3fڶȑjI2}eض
C!\5Z2aKZt;`D#z4%fN;F^ekZwl2fg{L@NRuApYWs
u6+nyZxYifrk]2IS9&̘s9@8mRsT	#oRSI.EK_ӵk];9 aeNY ,&[5AtTj_ݟ}T{ʪNn{*TR|4QO-QՉPES"N)"!⌈.tS~oޤl[Y1L?z;PcOٻ~ؠ;ݩJy~$e~1KQcTH{n_'ǅڕ
,A
d$ s)֘ נVsõ*2bx[k(YeD (ѰvxË^Ĩ$e(ъ+2pWe8U'1)S2`:pMzq]Bf9qxtiÒs@"mVB
	M@%\.]7%bm	o5׻2k&qz좎J?ĩJ
G}Ύ*\oF_x}ޙ?c',{X6+dU<<\10Q|5"LTT3>𙇏AW7ֱ{Vv."ls#:JJ*%Ofn"+Rx+)Mp?AS"f_o `JçJԃNJRB*%C(tRJNC'8)'d4VS1%دclEDPKcC    PK  C:U            6   org/bouncycastle/crypto/agreement/SM2KeyExchange.classWx[582HVi
ic$;18L:xGdh -頥MZ,ی:{wd9mm>?{ν{龣 6j<h갉xӷzo+V|0KH0s>,,mee9Fl$Pѽa=ݹvHТQz<DFK=i=2(sR)m(hH6ep"vh~@'%KL[2gLȅ=Ց~=ҙf$2i^Z+i5jH!4"tlmմDf1oMWf8Ͳ5bzے	^Gti)mU~r@JWWve{mS1=<ƤH藶%h1(C-گ[rh-O3]䠞:^lnjiޞ$:m'sR&-d{F6o_A31lv!AN&;zFO-tg(bSj&vԞ,#%kL5H kl(ns6i:$eL	̡v'[X{"jhWF:<
mkX(1-5rV*."Es&$:%]cWz$3=tuEDFdc_p@;h$b %1'yIrB܌/zDd(3q=I

f6*NhZQtFDO_4~:mvݬN@tYC~<jv=#NN*4m!oȺd
mKP(ǦYu&ҷXoz/ڄ,C-hLvmlV鯜o;nǒ)2;crvs	6Ò)"YJVKܩ$8@GFHʕ&l5[Kt}Zfw0>O:Ką_}U*_+dqɻQ쏪_g]Uj%K8Ov	;$%/B	I薰[	KD¥z$\&aWHxWIx%hz%Dȿ3WuiE-':kvRE˧jsu5L-Y[Qϰvke}Cpm=NES lAO2L3WV*|n3%rIҝڣIuE)Փf+nhoO@	,/BKm:ϵdKKWj-Y3lW;^4]8V̭"oUַɖhgMgL(pT9WrVfdo+*KWbVW@3&g
V-
|EN`
V@Rlxt
Ebݷ*X)8a3C*1$vxz5Pp3Nn0l{{~M-[.,K)Ç,dɰ!p|DA5>`0`)> +XO(X'8O1|3Ga,ee28,dod\0<U2`!|]c7~G?3c;ÿd\ȸ0<}x
-d\&3|;?a]ɸ	da?ze7?b72ވc9f|%W_m(vtd_6Dcw546)I)M)eILʖ :BlB8h(qmϨX0**c;l]AT?02[q-svr.0?%c>'
~k\?'17`xhỏ<tezų9dO3kgz㥧sB͉ծ3:kK1eh6=VpEP`1nͼ%z4sQcwZf0A66;QQ293gRfQ1Y'c_T^<*=è[uYss`c=/+F	WVBPh@/;-Ei`fgж59Aæ,s5>qⅇmǥ:'.$U'cmW=tɼג74zVzr~M͕jeXw'\q>GH
G(w{\7,xy3\^ly5rAaz-80hg]pB&zj٘XӞV<krcEoMghRN8>M=^nN=
ϩzǄ/'1?vtQW^\Rk/Rn՞8%GG4{E$ơnnfT͏C<ahr'AGpbrw\%,;*(G-U<.ή067UJ0RA&bԹ:Ot/5)U:O2F\>1Jp8X6p׽]|lXǄx<'*xpY
}gm 9.
r^>⥤&05LN괵9
Y#wyE+a`+Y4Fڴ<0
M*L-ky~pr\kۺhK`i[MKmZH{lmzKlj`Ή%)hKIWP/*3gX?PK
    PK  C:U            -   org/bouncycastle/crypto/agreement/Utils.classmoPP;{ѩmb*%ԳZr8%OR?E_b<mCKs?9ǯ@x,^0kZ&{( \Ekъ%;d'62S$fxG4ʊԮL0AZ0BtPkjJUerHt&`ݦRKoZUVي
%BN
oOUkOVQʹXCQqSo=uou|z;zթ uNݳkc/d)Y!8'B1-⼈"""]VV|,^c[x^±34-L6s+89r.[\N(5-#\IdoreG{jG{4B޷LjHͦȿ[8tz(1/{׉e㪌12D,ʘ5!\w7dLbɝJnq	k."&2cC,	sHJG\HuyVK{M'E&	Brgyc|wdm?V#2m; ;@9\Q)PKGQ    PK  C:U            7   org/bouncycastle/crypto/agreement/X25519Agreement.class]OAߡu-E(@"Ilh4&^M26iMycx24&Mvg̏_X8FRNL`쮎ǝ76J9%C!:
d8jX#ud"2,2hGHU%<=Wڊd&FINeKIm	Z܌T[Ɇ
W]_*Vإ@'+1È]f`dZJ'+pԥP1zLJ2Lwlj֏x:8tu0 '+Yu}̀:9LNp;At8vRv_SS9\Fʃ+qՃ	\Ă<up㗄8H;}v8
/X8˽F8NWcrKX9D/`IW>sKe&0כiāf>5/PK#  z  PK  C:U            5   org/bouncycastle/crypto/agreement/X448Agreement.classSOAγZTPT-ӤQDĆFcE`|2Ε6&mKnnO UlLcR S*tחST̶@U)Pdi豯)4yow(L*4@Χ4iJ1>JC} "[
L]G1i4#d[}y<vf
'Nl"5
mQGJ++{Fd0*HƔ0@~0K-.U{:I4?V3P?D;>ѳX8o!gaB3V%p4\S>!t:BwOd'TPz06Lۣi[;*ܩ8"5Ӹƍ\Ʋ"nژ-pVԢ7{(B"
_,7V|g9\텗6v_Z/X=B>|!ٞZ&R/ils-n,}CXPKW|D  l  PK  C:U            9   org/bouncycastle/crypto/agreement/XDHBasicAgreement.classT[OA=CۖEH)Xri,PX"HxqYn/I$
b,6
f;g|s~RxW-Fo,Z-10ʅ
Qipس'k7{{R<#;|6wL=kkIw(yVahot]P{z2'L]QaƬr-Tjz!L3]S,9FeVJ^Qe0ڈM7m~N_BCfP<zo	Fwy/+\x&*krLxr+.НZt2EZ*<UAk
:t*KA
n.s$iАI.\w2pDVϟ#Uȝ*hQ`TuQь1"x1h&"A?&#5VbJ4=ڕݶǍU^z7mahkOI#<!\^3Z3N9;l@>#Ыǈ#^!f?"N~j$5D?vNVEꇖC$/MA0u"#nE魙3Nm0~Re[h՟u"ptXNT1ٗ/PK wl  Q  PK  C:U            ;   org/bouncycastle/crypto/agreement/XDHUnifiedAgreement.classSmkP=7]uvӽ/3SaNӡ"x]4-i:/gܘsro q!c#|0z>CD(W끔
umdKL 'ǆ2tjD$ۡ]'١TWP=/lOuImO:D6]kv|vI	i?J~s}ʝo9h#S<bd(6آ.E"B%c7
4pilp;Uɸh:\ABn_=XWRJ{*kvA
p9	Lqqdq(p81iC	cY\4e9\U0g"Y%3
\kH̐)(R_4՚N|S'^hT`df.ʕ*!*=Z+LQJ5:hX#R]}XUyA?DZaIǟm͛H{ PKIz  R  PK
    D:U            (   org/bouncycastle/crypto/agreement/jpake/PK  C:U            >   org/bouncycastle/crypto/agreement/jpake/JPAKEParticipant.classXy|-{e9FX$Bbmmhm",p9IGB9zФ
IiKgj%$Y26?Λy߼y|dC 
VLbSbv+Y1݊VXQkl+Ym
f5Vj}C?H4k}--"A^V}v%Qހ^{wH,'?КWވnߨz5?!
z)PU	AͥaZ::7\\ڔHd[HcCF|'aKO&ʹ/JB-=_Wcfٙ/Tw/Z:ꛛ5.(lPܰ4Z_n_uɆ

fI;\9wspp5:L:^6Z.%r3FT	ՠFt-9!ʲtm;bEt*ԠrR9JT-2P>M'[Eވy[<P;ΰz>5X".O
KUh->UeC:!d7Ў:"$_&PBtVz7nYMMCjjzo}Le7)[g@	MSG
=jH` '#jGU7=mCר3(̥ŽWhX"ޯ9Өi>FϣDh}a=l0D

ОQ#5^\k'n4Urn
+U状)X8G]q,
x9۩yhD]flv'7׍hO[kO|#Ύy%j:y{/qkG'Ggu2F6?i4e"RәoK|&.SM*<W%ĬI,^&'VDy~&e77nxJVvգL"v Ą=՝OvW>}.dX*)S	k%Z-$^k$V$lz	<K3/t+~_SPW}F͹/2ۛeQN((u,zDiWZۖ!'wA+uz
pS.2)R)T, {i+6gmd~R9#gK9q#7K^p\|9i,-"&'ĭ2VsyssS
#*
G<YJ~6=?9ős~<և9#W2&뮐~8e~22nfhcXͰa;Cf|P"/c2QR7a/e0C2%KV0dhaXXGdGea[q>!#0{gz|FbxR
ef؆}2^_FE10d1fe0|k_/{
wl.|ӆm.Fοc
?dxΆ-1|G?f
;غG~{vN6?e~+_3<?2c;?/۰Sx0<+`iyGP~=Jt[ttx6(Nec@4.4帆P9
LHze&ҫR7>+Eצ跑HJzu64$K
I=nHCn2͆1vS3e)Wݔ3%M"QGx騮yZ~Q4|7}*PH^Ą|jbWW	k]k>@
IR]R5%c	kK[JbQPRC1 *Î(^rQ/(ΰYxQn
88ȏf!pyB	Hx%+a\McI$fi~VT0ĝ]q7^PR_Hdx~Q/;H=KcbZRQz^s11#KIs嬹z-}kVsiqL⾮ňt_\7yPGgd$$ƻK3258()Q&1)&阘T
zLTeNצڊKӪE=X(wB<f(FEFi>VyZSZL4״&Ҩk[j6NFv*% r&%׋5:lh*#9yxI;hJ9.$'*Yȯ84Yɤl2k*öHKdO*#ln\N1Q|\h\j&-l=0pQ"5q#0io|fжeʠ͍X{6;8V|(2X>j~ic%{G{.5̝|cISKPKy	  u  PK  C:U            B   org/bouncycastle/crypto/agreement/jpake/JPAKEPrimeOrderGroup.classSRW~v&nGbM+-4b IDљMr.lv͆+w)5x-$L3f6ϻy?s}ϻ 	e2NA&cD)dj!̧V'l'-,]-0D^7Q_NYCVB5e4?;d]zo9(x82Ŗk+%Nᘮe[3X*wܟe2$*Vy9dlRU3|jLV
:I!E	/Ww˛e:(~p.v1V}sũ\SR!`&>C͢,u7lj{î
S&3Z8s|t/\;DL~C#;	J8!{>5N49b.>vq16TRG_u?wyݪtFLWZV `@@BI#!b
8+U

ႂEr9
"+Ɛo1KiL
Ui7܌QLҮ=UhhCvU':z

Mh>0th!Mli7inbbJ`AW#Q%¬"[x\K_b^#PAŝ<m2
k:{CO6PD	*%*o#lc6-qW'An=8VU
ĹIeEݳvtjPK,_uP$  ,  PK  C:U            C   org/bouncycastle/crypto/agreement/jpake/JPAKEPrimeOrderGroups.classWێGc;pB0pejWծ-"(d^>݃=&|  ,x2}tשڗu_J)@}@]9P_?P8P/ԷԷwv+n\r1M'u[mSK!6'煴V!RU6lkrZ.Ts=h].V+'$6CRM)S$)Z=yxkMJ$zlEg{{]:UR]-5SkJ1tDgiHETL@YSiKh!Rl8VauE5Jqkok0	E$1dS%|4cwJ*ޖTZG%fbccjHI=W#!m:
6*+%vk#ؖaAإTZP
E_KXg־8lbD2P"m&{|
B+,MƖ*
USL
H'#AJ7bm 'ɘrMᒚDf{ElDksҋJ uDFp:ZԫBco%h+,z/Z:nJ؍rH5:@1< ^tʴvɄL퀅8Z"jH=(tS6/NeՂY#&`<'$CbGZԐ ?"Xʕۚ	9 mF{g@v8p@2k;HnF8	N49ņǥ6R@b/1#{J[,#D)E[L/
?I
i$TP5M*4=z
fJ@8 AGb#]n
FK%<hHI(רbPBpCz;*mx!1Ivl/:ES`P0*tlĸ%0~֠JrPANEALA)!R ʞE ,q\tݩf7B,33
Yga4N\6ީ[˃{Nکo}vsN%ACqb
ꛄ{ҩx{.TȪC9%\t"	E@ Jn-4OP.tb@_@P:zĵup6 k+pn÷ jtHjPC%QpW v^G
e ڱ=Au=P%/ dՖ46V	Q fMQ`-c "v]L67p Yh^IXp:`y61ٱiY\cNW,XɂCE
	$
]@Li^.ik;GD@`uQ@j%|ML;gɏɄ*4{<2YE/0"@BC%-PSapPY>zH
،a|fu\vBI	(>y݃56TXoP;,*kNmC!_
;<;~I^8$+H&jF85
O/1B=`@yxhUʘjRL
Ȑ`(	DLP$pÀkTS	٠,-`n'aא0zS)Æ*0.̘	ajw`:tw~׀ϟ[N]w]]?vj+M(luey~1^im:E	Hh8g|ycs=4
r5;7fW2vnaٴ@%N~%`gdĽjN
s27m7aBϜNnarMpO+˦A8tרlbm]6'f%؇mX*
6Mu]V
.֋nH7"ɼ#0 MdYp_]5ۆ{=?xrɶYC'Ax+iޢ9P<8즱$´.V^:i"?pC	7iũhK"=_MKةLrS/=}p:awtt=ZOv֣'p9d]ǧO^~?r~=ɣԯ?]T߽wQ}zlvs^YwNOݼUߋy\Q/7q.Gԏ'U5uz]ة~Uoݫ6ݵϗ~S1^ϽDjo>{7|T_tn^x~lgΟ>o>[{lųPKuc	    PK  C:U            @   org/bouncycastle/crypto/agreement/jpake/JPAKERound1Payload.classS]OP~ؘōU6JcFdE#!jK9C4qxG3Xy~s_X
9ss(0ǐ2+;Ͻ/>6	dF +5
i>o8#cLf~E(7hI(HBGk{]FqUMB%gy{-Jq
b,\{/~K_ߕH#Hv!9J =aa,G~{=xaV':\Pn|?,fEAo^/']ˬY3xɋfߣ_/L(Hc	ܕ
s[
t4d1a4L㡂G

*yj1_?e u KWM\`j5Ґ''y+U=s5	B#e4UnXؖ6gX`22FvA=Wq1SSZQz!q'F^Wbe{$ksP&yY-5(l:6Q2 PKK^%    PK  C:U            @   org/bouncycastle/crypto/agreement/jpake/JPAKERound2Payload.classRaO@~
:f'L`"*41&h2Y`HLtG(0WHG>>{+ (@+T@!gZGsς(PV>tz;g\}t)dq2NOP-RGS(<_t)O^9"1]
bGq#9<	W1TN'?~.?Wp$tq&"b~*7$v<
%e
B>VS>+q A?5njXа`tJȧ-OkkŴ&WUӚzI5ow6^S,#eа90`=QqX#zv/'A=Ց͌pI#{yº
f]jbӘhشl%j_}7P	G<nO"*ftZ6u~PK5    PK  C:U            @   org/bouncycastle/crypto/agreement/jpake/JPAKERound3Payload.classmMMKQ=IMSGU;UEP>H*_kL+_$A~@?*F={?>aCi4ЄH @%6m3!-{Xf(Ѳ=`У*$FtH+1=(y98acCaD|C&w&)9"{/OB6ViPk47D1Xmv]`E%<
(R@iWF^K#%u޶xvK;Ug+c(ΌFP}ȵPKW(    PK  C:U            7   org/bouncycastle/crypto/agreement/jpake/JPAKEUtil.classWwޕ0GXs-$@$0&B֫ ij6!MLz$-m
&&wZһMӻC:Z)-qOffWʳ l$KX$.	%,T2	+$VI ayj:sԌCɧR|M]|@@MSWvҤq"O|wzs$kWK
0OjVMYZ\*`I3҇R)$혺2N|P551OӮzK[1mVorʩm.3P4mjӷhw8z S>f[-Rf\sL+kfH1lFصrS=;ªeq3a8ބeN2Zê1=ehIkhOM;mܿOCmEgSX\-25e
RfMkQnڨ|J
uŮJZ.Ӳف>6/<659bKrt+MũkИ0N3Þ'ZTMpH\KZTD	UJ.g*RT=etJ5%fHB%S\CT>XitJE@Ȑ'X=j	̐` 2`NZm-~:ka08VYNj1CE э,S!`}CǨl;6CY՞7S	y2n&H{}i+duZ2O9f6EfE$`e'CV>ZIQ:V|\^
YJZTK؆62NXV;nDǤYYNZsݮP5թExf8<YyU2)aU2B53)rls)9V1seQTȅIN|ٕS8i(Zpzإѳ@X\;Nqrz7N_<fT>X<0oUěDlqEt)b"D-bV*-6"[Q75._U⢞=78|ogGc3Ti[c,6KŞs-/TZW`eƛZ|=**";c{^%b4V"t1V˛hG˷zFy}mt>ߦ;mF39eoVAyuc;F-5KoG.\9Z/S]"c9R2V،2eш92zYl\^Γ4h|@ƛPF2a{Y;pB[aˈ"'nep!#2pFj<"c;&>x!22Zx{&WF`b A ¹ 4i8A,αϲ*v:Y|,,,H,`y_"vM|2c;AǧX<U8>c,`d<I;8~,¢ѲPʠl
S,,l1ƥ8y$Ny4
4ִ{l»OKr	p$4oTIlX`8guxO(b(2kH١=_EJ]\9fMI|1)7 GP4yC18B8cA%bՅ:VÊQj	"VH>EW$Rzr+
rzəZSWgI'~C22\b5w ԔQz1[<24y$4ӆN&ނ{#"4-&*~[L
+b@5ld\uHYum^;5H(*"
NuhfACO`sx|pDYYb#J
Yyqi/mj_o!9f&
c]kW|$01).iimsG\kX묢zSbԋu^my'q*}wGHE'Z.c$8
+MI$io@A_̹2JJ J_j
ChAj	-`\ikBn˄HB
TP?	yM
{.fA<q}?$*׆Z(nD0
WWT~%2ZI{B=-a_Տ0sыb_WykOtoTKo
^n
^%SQT?s#Ϧ髄1+ūҠq3gsX8Wⱶ@!+m[	<wp`PK_@}	    PK
    D:U            &   org/bouncycastle/crypto/agreement/kdf/PK  C:U            E   org/bouncycastle/crypto/agreement/kdf/ConcatenationKDFGenerator.classTsSE65
\Z4)*)֢0Ld{͆1O>82cU39-s'=ݿ
-܌#Ǩ@47V
񆀑[0siKno͒N]--7pוVAgFvTj?Ѐnⷺڨ&_lxnS Vmוr%~:DbYUELcmAyd8[;=i^)56κ
=UϹݶV?;~ǫt+n[7S	-;vIeqeRw{?ݏѭ~|(wVkΌUh0^Ev}}T+_|~کT`k߷n*TkdÒQӪR%$^HKd%K%N
/ޠ)tna_tS|lݭJ9#}AOkpMEWQ0N1pD-$`Xx!,CZx
Ly!L;2c8@3	By&p.'04c@֘t'*,krwm-Mgt^` )sC;ҳ21%62lGo|aW-Л1c_F> _"S񟱴yl!wkPla!evb/C0YChobx4:F&bˤlLi"Ni8G1dea;[5#=~ސ1cҌNJVY|mbbѡK(s"{!#IpZZnOʴ)BwOI}|fӲJ5a>(Bx1>2itZPKr    PK  C:U            ;   org/bouncycastle/crypto/agreement/kdf/DHKDFParameters.classR[OA=++^(-`[eOmԔTú
f|h	߬k؇ssIfP*XP	Nvb=S)
7:kZ\++~=`\%=~~T4ΑMwsNspz.z:_TyK5SK8e!6W^rɛB	bx?;wM+Vw_{XĤ)tZx/:Gߊ7Ԩɫ{B~`FlGWNvCF
阅ZGI"ǲ	UV}v@Y0.${C֐C";1Zz'-K*EuQ㍽Ê!coL1#ڷX1'ͧrf [{F
Ӊg샌?PK    PK  C:U            :   org/bouncycastle/crypto/agreement/kdf/DHKEKGenerator.classV[WWIdXEł׆X*%h
F{9#a&N&Hl[{WZta_Їg&
s>I<}ƚ0ֆ/]D"vIu5Ɍd)7i|ٴLBO202n,p]ێc*6u!qayJ](R7
Qti.5-gwEWEnR
{*N!2ͬ8ml]_zux}[(/Dz48CBnaivi-|L;LOD5mnynL>/tҸHkH#Do\R
i]%3!P
ګ2&1R#vʕsETo|$/N6ھ227sO˰eUڐXVݱ*gvռsNp{$WeǜKFyUrvFtWsBf05zp=__2\3:scT
D#QxMTynEA[
bJ9ąWZ&9ũJrnvlS];<IARA]
v+أ y-
*xaW@Fp(MvcZyԭL"-v#8yb'w\šR
3,k&ٺ$9i?z9gVPyrkH)
NC8AHf	QTkhEC\V!a#T
/A,Nh8 !W44आZᰄW5㔆h؀u	oHxS[ΩCWq9>%*PT-uݰU༊4,	UÈ!aTb F
2t	MIͼx=rxaX(B1:%*yd$'{2H(ҨU$,I6OCNW8{ 
$wiLJym%)?%)?Ă&V_G%EiPX2y
N|p9fɝƫ6dhn@$PjoߩƪrU_kUɿHU1^
HoCwv,hY'ga6l,r_# R:[*5'7HTuWdU%?oPZ6\X}4Puۼ͡u683LrM{.m|XDX-Ox )<u#i"lJe7Wt-DyXʛ{/Ցڻd)~2I.
sEAG)/;\PKq$N  E
  PK  C:U            <   org/bouncycastle/crypto/agreement/kdf/ECDHKEKGenerator.classU[WURAhSJ5 &$)WDU{H0&߯7uI"fgE>I(qs>p_{zy#-Y	|HB?Z!aIG&!2ab#%H4Nf#	^ɒI	5mpVR)nNwC.OKPuq54:OX	;ɓߌ[84i)+	˝C$[fL3l-:Hkdm-XMfZ4̠gV M-,oa題a&C1$)M+{l][3Vb3Ү5z`l[0,r4;1M	me.w;p,,2Jж0]@muMRECqp6SƹKR]](~;:Q)}(Lw8ӨZXxt9lܡy2^d{U)IkVo:RbW5g\ԦYbθ[,.rڶ/DOx]{MKt!0iܒqZFd\*㪌6d<'y~22:dtʸ./6ٯe.&DaTH>td?lSQvq'Ǆw">]'[<%BKl+m/cUXElr|Epu2A:s\Bw<:8,"*NaTT\GE-T4ZųЫjğW-D-*@*cRET\_J
e!fxU>,(9	_T0"!Ģ!pw`*ܻ1/ e#xCAj"^bIz
ܻMt]LԌ*HA"oM,hJ&i(Z_Ш rpy9|!>I
pw"ЙŇH	6,?؆ˣx
%Jgs	?0T0)0j4<x-W<9lx=y܉OX,6i(c@LXrxjy`ѓRo>wh j_<[D27pHgCܲO= &l	_vQYJFP$SIK膩[7PK<  	  PK  C:U            <   org/bouncycastle/crypto/agreement/kdf/GSKKDFParameters.classuKO@ eƸ2.hP֔M$$.(㝂s~N7 (1˕frSc;tjFznO30C;By-dےݻRN2}>րu[2h<%ޞ|$²ɝ{c.{{}>op_pu{}c[>b!=:2H!#$-<V)YO"$Mw-KM+S,̜Tk4"BC]\jܬlgGڂ(!D[fu
4(S%1T|'b3]	PK!X    PK  C:U            ;   org/bouncycastle/crypto/agreement/kdf/GSKKFDGenerator.classTSU6dCؔJ*!ۺ-jUB[)ಹ[榚g83ۡS㹛5űw=wO= 6Sx=xnMjnb +Gr IeI&79#+Pa},XmhmrP<IK7~ csLB[&\#LO9g:@jM@ͭ6	'Vcyuy
tge6sg=13;0M~`tնXSܴvCf	V->yH;yeD.]ΩBp.2|maXZf#X*w'SsGkȑo/3kKi%-;Ƀls4{Zޖm̊v&l5t-랆
jxUCV9
ck5]VRrh"p<{Z^7sGzaXn<qGRսuq
dtKKĔ!u,H
:NBR:&.8>kޗp]>L"nq	i4LDABQ\^4ԏ˘zYNsK>!XEXa.9:HPTN1YN(PGPߏ_j1C]|7:XQ?9ދOTH&;X9>w
!ݔ;&x
VKiHA'd`l?~}&3H}'$]7~a꠲2/%sTntVeXPvi18n12T^,h0%-I_PKjt  '  PK
    D:U            &   org/bouncycastle/crypto/agreement/srp/PK  C:U            6   org/bouncycastle/crypto/agreement/srp/SRP6Client.classVkSW~RjֶB0bVQ zq9 f[AiٙNY "^`=9I~--hmAR hoX@@1$pz؞gLe'zBS=,բkJlUR/vY/IqeŰOja[gr@ʙsPf(VNYE"]⬚x
:{\? 4F#OC=Xئk/MCZQ.sH.:Px+ԭ^B6=!J&\
_.%Q`hGJ]%i1aWRw,썻F̔f'^њ!1|]*ZԬRdQGCFieIZ&՚	ir`cR;m-؁2ogCsdF@_#OJY&YuS{jv=|Ȥo^yԵgҗ.I<i
*X	V4(A4iKK.IK;t=	d6چ'5l'T$mH/tF`eKAVٜnLWjN-u~j(pUH=H#@k|VV>m>#YfWV%?%u_%J
6jU(h>	
Cc11fn~kW$^㠂3bX!;RYVϰlī
:QO#
:q\&o^`e11dgxCaaatެ$2pAc(0I$9gxR/ .2W$^o]䷉şAi~%9B{qVfq8"DdwG/U"ٵ	-$wZOV]k?KmoG9=ULAtW%#05О÷4ǧp(r<@q Mn*9|T;
wp2ʷ\1DqTl_:3Or
k_TQIWt#FБF3.
733/kqM|#b!zy|6JBcz19MGzj[4}w$ޏ֙eWc<Iqw]H2tv1ph
~
Z'KᕨX䍑=TYV,Su.C
]ߌ\DOHЇv"\t{9=.ˉRϫif7&PK;qy:   f
  PK  C:U            6   org/bouncycastle/crypto/agreement/srp/SRP6Server.classVkSg~$$*K7
^ZRAT*QjDe,fM{~iigov9!Sq̼y/H?`?~hEk+ZHz/	Xe+<& N<xnXӶTCW5\ǫR=+HRu,R+uupF/[	TדZn9Ps`aW`j}υ's|Zu}^->)HĐA!9ZEK%Md
6*ʳʁ6-j;ry 
_VX*ɲ!2tS
l]@qud2 giyl
t̉Iߪ׳t]%Vd2ex.(ύYmlOJ+Gg#9^)}*R҄MVbgS{\O1oAh˼{-Cz}4uӗҡP&x|вx;Ayw+$e(}Mڧqs@TUZUVU2m[F>E4t8W3x-\h	lX;4*狼YhhBH;7ޫ
Чax!,/n[3g'lM)_%x*44fԏ-~)owyTpwClzЃ
uFAo*0lbPca!Џla-H)؁aQ
G/3e؂
^gðo+Љ
2QpR+SЅS
q
p8;g&
3L2p.fgCKR.3\e(eq>fp=Cx
}%.7w@{1ԍ] E*kJ3XR=#I%d:e&K%,;:u$[	.sCZ_
_RjVFbdε|K=|ƪS 9M]Ok(k}tscq7V~_@5~av3bq3őbƚ}S[g"iTOjpƩ{>*aHaе:lZ"%xcHFڽ
-/dR8'Q$$ϰ#,YOW:qƴXa_Ȁ8CoЯ$K~"Q:

lw"n ],Sn[CֳLV+{א-F2"SE;9	PKAJ    PK  C:U            >   org/bouncycastle/crypto/agreement/srp/SRP6StandardGroups.class[sUۖ('D)E>},h:LhC,Ӧ4uΏPǷiKIfZLMao⡥R|a)^/-#KR<_^,ϾgϿNQfcj}GI&rQC
نRJ+٩6lJe-*jv:ҺSdK^r.&iJMh
'xJIY[mCCՇGXRH1)s-Go
FU+ak
v3lqԲR.L%XvqJ$cס=-AwkB5X:Gܣ	U{ɩYteu
sώUsN(r^ll#xM7R)|k_"J/~qJqUFۜy(qnW&&>]0^zaTNִt2`t,S-dXc}
_9msE$qƌ?GM,(THYy^eF!9%n<$Tq!qgM19̭/#`\jҪ1=tTL9b
.%J$5zIFeA-ft1Z^Hx`s9 .!{Y]G1|R$펨1#MOsk(آΧ8LMVuPd',Ń ZLip5um<n,0i	zcZ|Hd
6d(ؚOxjDG׺q{[T#}6\|Řh
3DfvqL];FMe$
rFrkP^)j34qC*x oH|#Sa'w 2IMc"㟒FDuTً#~jeCyf,低dH6Զ䛖MQSS!B,XiGNbj3d*F"o()8 $h\^>_8,&螸!t|$DPFz7ѓ.ǔFvR0սMz2Ў+U-%,'ʐ.Ŗa;spMbbSLh6f\ k	 5$I8P$P3#HVgɱRS<UƚUXEKuf0n7C
6}"ur{aӰ!y0ѯh.'H_$G+|F0v,ȁ=TFB##:(q]<C҆%`6:fc+p<j%ZL
˾C&5<Vd2w"Al"*JVeX)"ymaU~(
^;T3 câxYJV\FbҖZ+A
/kݷ7WTh
[s%J#,UT΍D^ymmUVk@'T,N[xD3r+$|SÃ1wECT	&%)Ⱥ"G	,h@41Jh8ϴȯ#E ` HbDj(&ۢSLT#-	nXZ&WnJ	##ٙޠТ!V)hԌHD+Jl_9͓iRx[	%RM:|uTh Xj)	mISgI
j:x'h-Z"kԓ(DɥM7hhDgpD! rpL%ú+ [Qd
y舻PX(\SɜLƌ1ϢljC1y<#nV8af{?*t7LBttr$EO l
DC
J	vmSR $:S'DC)!dvmT4\
_;!SZ'rpw<BNkF(L8jIϟI)t uu
dkP18gXؐ@AʔAE9&hH@M#hh *ob uPYJ|]8)OOdAVN6dؚt%B+%%egT_'qԘ;
Oj־SqPŜ/O+y @5eRv\I	pR '%I	_J
{$̉H|6$C|
8}B' §kbWw/\rܼzB<wms#;.^?=Xx`ow|xe+:w{cwpo/_9z[Bvvn^Y}}ww=^?_tp{{̓8
.׻z|`o}3~}
M]Vzm~vڰX`޵a5Sc]V~ݤٽkj`oC<!!!![%3^X{鿏*;aϾS&./9eg?:Gmo7ӳyf6flllf)?OfG(llllll.^|N9?Ή$.??Y3T,Cmw;'ģxA,og{(;kgغ֝_=ss?źG뾿6 c?ZƗuh]ߠYgV0FhhߡE~//,4W˅x:scG?-#G˞d)~?HoW#֧+.	qqc뿈W}[N~[ˣ[[W_bOPK}
    PK  C:U            4   org/bouncycastle/crypto/agreement/srp/SRP6Util.classUYsVK,H@n8	 [-eGFӚL&}otzNwN[{;{Y{$ϛ .KĒ#V9.eqc<i-6ba&{ݠkq+X}.WRe~fz?гЮ9rMTb\-b7yhhYؾSF~թڅsC鄌VsvVdQn>5^Um"h,$[%q7%Ȣ[^U鳶2WeTfm/6̇^g9WOy3S6ﱯm)`NÔU"B4L+t"V"/XgKa1S(Uؕg'Rf!&rX9Jg39ŐDJXf"h;UwJ&*]%P*Bڼxt5!7ƨEܘ%e8#]PYI#MEU^y˞B/(^'nݮ{ɽwFuٴ%Z{߹nyvˁ}ONt	av?	Mk9Ћj<_^SW;g_7CbEz9G	*bLއո2)q۲Ps5

wpK)Lh8;	3V1IPE0a<8<V雜W_pxcx )>OxɥRko>Svy.g((}{#bV*d/NaDZ?IdaB$W@1R)1LtxM3qGqO
U77Pae7.teӥflti\|$:ܭCJ{
IRkp$cx: R5xٸ.q*%2JQzHHkXE\ztXXǋ_RUBbuUZdDNAH
rtK[	ߑ훱Z^yYqmλn(JrvL2$8nJY1=u+rLJLWvU0Ď
gTB2Qh<nq(b+L&w$
ͧQG0en}ʴKYG!=eoXN*
5f8
<PK  |  PK  C:U            A   org/bouncycastle/crypto/agreement/srp/SRP6VerifierGenerator.classS]o0=iBF`m@,!E<I*>O^jB4~ ?
qCBksl?~~8Ck0TFI1N `-_Se2T	LTH*+jew$$G2|j$;O-CC $8Dcu<)r$35ϟ
QwoS)-b,U:Xj2l6.ظhPߛ^adkޛ
y2`כ9b3/w뢄	e\uqYX2<e4Liº6\mqlpt(AIz31j4=AG7f5Z~{ߙbNA^!7	Y\'0ocuNrf[&6OyPKl  5  PK
    D:U            $   org/bouncycastle/crypto/commitments/PK  C:U            >   org/bouncycastle/crypto/commitments/GeneralHashCommitter.classT]sD=qdRJQ
-T\
jb$R%f^x̐ӎyG1+bq??-t32r-Ż2e&K͑1Ig)Cs
~[4)D)BW!f"X*3aK$a̶PՑMiQ+%=Ui(6=%E%fWz*YWn'Jm*@G97
%BR,׾bԓCN[R-s<*jZ(nюdG>"p}4Eľ:
v
)jP(/'.EqiF"Qtܸ{"gt'g5X8BAkG<T~j8=ӕq#%COzo#4826Dr0)(?pXti4x8\УqAK:^aXqI+:^q'^`n(s96T쇭*_rilUפķ5guVk<e
^707<y"^!g"t!S
a,ߜwn0[@	7(*xJ6nV5NcUqыyt}
%ܯ6hTZoo^RKz	Qt+'bVz:z>x{XrկGޛ8ޓ&y#yʞ]||ghsHo@xRYݷak0Rq$EN}W|Ө<5C#mL
O[[çYp`g쑠?_Ň@PKrN    PK  C:U            7   org/bouncycastle/crypto/commitments/HashCommitter.classT[sF=qP*R 斋B qkiqDe)Hk}3
!
cQL]bz8~j?m SXpGRb|@r3.ERV'ٵ~bv,Oa`ĺ,ׅՓF,HHA]nĆA(0e>(,׫X%WkIQI9w>b66D iWNĒrkH_4O^Bu!gz+U~WhG^*^
s>sPTA4#O2*
)lP 7¨nfK_Nڔݻ񃋤~5s\N-GlJ/|+
/+t>6yѳ34Q[4LT9k8ጆ`hpN7%JQRhUyAB/wpJWs~:AuŰ	\qu@JI::Ā1_!cȪ젎cCʽ2rRyɡ[
n+\Jfs13+&q~0Ke*2\5_`XPD
#jQ$+5Ak:7CTwphnchʰr_P#TLBn<=OF`
mmvy5Pxb-s+;J~ Ly
WJjYm5?+߻,WqVx0fh]{$HfafWm.VP.䫤kPK2    PK
    D:U            $   org/bouncycastle/crypto/constraints/PK  C:U            B   org/bouncycastle/crypto/constraints/BitsOfSecurityConstraint.classT[O@]^
rsx,` lH$%Yb֑v?WF(g&	wΜ˜ߟ LY
-!#6"B!u!a!i(Qͷ
FtYT=[BN$;WaR_nyڝw!G2w_($+O=j齽k[UW]	CSµJrGDs~X;.H*ŢYD\ǫY]RpV</9*`-Qi7FC&B^Yjk>:dGK#]Qt)B<D
4\֐УWCC@\3c'syڪ>3{9i#1WZ*d9㔹V(nt!fNs{яБԡ]GWhэ:fq4a,<&Up_ae{/a<b
&
]β5;ذ\=~HKpVytbjwLq[T	IR6w9 |^40=Z<a(|X<@~s3改#HｸkPKHjyl    PK  C:U            9   org/bouncycastle/crypto/constraints/ConstraintUtils.classQAkA&&4k)Ă,R

QoI!W
B.ҖĳI7k
o޼gǰ~/;7bG%J0TFJdN|PLi/oz=/d?T_$CP IeE-#IrO,
F$	u,0uiLDAV8gxpa۝dGAŁcXkuyf{?1y<P`E
+.na.h<>M6"J߈Q,N̲y[sV*X,&ݘ[X5Jviqj
Fh]b}
2N4}!9P8O}nQ\m{ps*mPKi  w  PK  C:U            B   org/bouncycastle/crypto/constraints/DefaultServiceProperties.classSNA=c[PiDn) 1!	IM˰,nw7S"? ƆD~z]T`Mν9wowCR]&99+pm?t^ahs!u	hG9}IbRѐc
Ѧ̾8+<\s]iw%;m驗o-(F6[RZ
:`mgZ"R40PKV2T.vd-ߋT(OE+:JpTrwܝrK=y?q99F8rr1f3Ԝ_̓҅J5It|r_RBMsɉ*IZg͋Q/7A (Fydp3qHPa6IT=@jEr(Q9ǐ^w?n(ay%עJ!$VNQw/}//eN4`xL<dԦGԏtӤ1~4\3Ȩu`Lw1oԻ01_P.c<fLX<I<H"(qZFq%6(gOv!sIO,n%foPKdp>    PK  C:U            J   org/bouncycastle/crypto/constraints/LegacyBitsOfSecurityConstraint$1.classn@m8	.MPNH*pBJY4ITEQ6%qz5$P+B>xf? xOaNO#1<6tr:RO!zb0_2䞉0T[]Bwv>
߫b>Ůz0wD56!nKubdدk4CqKa,AC{4GWPQl4"rt'0quGP"6Cvñ-,hἅ%gޱA`ck6X1g<.R"\NJ((5WUD4Cէ
Hj/q,cŎ
eq\Ǌd$̓&zF@n|+|N)$\&av7?P<VeEq13Tr,柂9UY!-]Urs?PKfh  J  PK  C:U            H   org/bouncycastle/crypto/constraints/LegacyBitsOfSecurityConstraint.classU]sD=vi*`Qڄ6!qbp>C!-4(ZVH$}ewa+;Mtj=W}9#qy=)keǶ검⏦WjqSyŒ[N2E:[UcBT>JJ>L{geC@4Y̭^~%'@}rMK!y@V]0s^-;SxmQ6mbd3LN+M/Ϊ5cږEڮZmE5mcfZ%
<5ߴԬcYLjo_-
Cv%\<Xbg5ecՈ[2mbܤƫG,e⻚iGSO]s*s}Q-)ԋCYa ɫ&L g/f%yruvfClOu
WV~ʚe8# bBDB{"h:)}HP)2%Sw/h.;%2U8~<v8a
Vɣ(ݬq1l	_N9e?:CտeÔ,lbz23ڳ.bXG	s3.a7$`@%11/AM	c	q㶄wϣH#*rq"kC
+5G1dPmx#r9<aBEFNn)oZjk6}͍Iǭ2>S7~3 D@LMZxhp!.O5𸅝l/)q8w`6 l\04/X"(>k!ԕp4=T,70?y!X?CO~ha+&JqD5P3"
|ׄAVMf=!̓%ckA"PK󗸺
    PK  C:U            ;   org/bouncycastle/crypto/constraints/LoggingConstraint.classTmOP~tu8uay/ ()DuyaM{G$~|Qxnl~0)h)3tCCb.!1gh3ɥՅ""Cϑ	:KBFuPmVw72.jaGD$pI"@
ߣY~┪pxӖ*s5Q-(SjVN)[ CV~X1K~s]'Unv }CqkP
1L4p}/#<5?!ɳ/:^)RKCKz4jc賚,C\2JntT}

r>C1
6qTj9nX?q1lu"8n3qKܥI1hjב
сV)8[:.+:С:.bP9بi\Fcp_
Lgp
g7u<j5S@:LGÖ$fnu%T.% 64ݘF@GC-1Աf,7c6RGWȲāRyϏWʛY/KB'l7PK a~    PK  C:U            <   org/bouncycastle/crypto/constraints/ServicesConstraint.classTRA=@dTD 	H
&V0Ljg/\X/
o[{OߵoO'xq{i@xX*%}efMPܗԻT"MɱĤLVA6;ˠX.,9aR	f3a$ji,H2BN0HLa8ɭ|^[bRЊ363oڣiei\ PRV =nQ&#JﶝLl^+
ˈJNرg
7NuFP9='QOi'ZJtv-Pp4ѣ=NQQQQQqEGI24$O:+l9hޗ,n7{o?YU#C%:|7y>!<+k̜BC(ǥk7t8#!fTpUT""$HE#U⚊2	⒄*TGEn(ǝ p7^	}
.#)hǀ((Đ+.E%<,E$<0(@ܞT~D˥4SVwG5RdC)$p~_4?SMul%'E?7$W1)'68_1tncB6F"I
ƷƔ;R
a=;qjUAsqTYz7WY71>ZkRLvW,ϽVSCl[x#PKT*    PK  C:U            /   org/bouncycastle/crypto/constraints/Utils.class]J@I/IԶ-B6ݵ[E0^4
ajd*Q|׮.| J<3(H3?|}|AA3B
5a(No.DM"\y38a*?s?2g(TuVJ$~ѹf?KW2\<WIzR\r;6j6\uNryd~H?t
T&d<EZ.hUG_p@/o,p&	hjQfKwtߌAtn
<k/h<WtMmkk#3amPK{}>    PK
    D:U                org/bouncycastle/crypto/digests/PK  C:U            3   org/bouncycastle/crypto/digests/Blake2bDigest.classWktT793w2@B&ea$h4ĄD4*L&3
%BKjE-m0Vj֮Z]vJN*k;Ϸ{s>:6 W_DA sנ][#Zo@4;C
reA Hkk55jX&WZZoG%/I]ƓVws낮V6@>Ze<2J\[
bR75[-@+SU;ri7Os+l3
T8eV1lՋܶaպMmk֯qSssM ZFZrl&Uz3E+48\njjYJ\E|ѶRxnY+(DY,|a ҝ5Z
ݛZ0Icq#K#kfr~K #k%JvWmkɬe12bl>g:W(Z%ԝS!1
X{ĦdQ6ҖݔMoه~\j*zL@{1_v*9fCGn&QyCC|Ւڠ2g/bn3Y3dV6}V^=iL>Mmb%3:JՇ@,=3&ʘ|[>Ep2M%|1Ix8PU<tXm_,KuKtս|;l\J9Y|N!Kf?;J>f׏x)kϭvfr R>G6zZ9&[ͤ/nwcPN}k|<uLgR2>¾`1ޮB
YD|OGb+7k馺C{v|'oPϜjz~<^oܸw{S5v\2 o~ī
WQzThVa
7ТB
ThS&bl^Ȃin34.#_:¼!rqѦkߺ$j8y7xStzcY9u=.å:,"`55pFPW谊`A'A":	#Xtp3A<: XIt.7@KZϏ*搢LjH;Õ]:,(C{Fuo|[<@m|{|?B]#/W^^T'<B3 xa;<J>0 {p7q'gU>E+9zY4fo$@?̀T|:RqR%yQ?\	+<bxܱv1UGloskxIq6Ĳ#9 Ψ(</\ U֞mrkkr4:
Qa8`TQa	0g!8!F{P<H|80cAq#$8Jar!͉a81ui4mS9BQkhOZLIaBb8
Ͽ'4`YrYp^1_AU&x!|X1.年wk6|Oxc') y8&FNblb^M?V&uLPxPyzϙYmrj>l5 }XF<2ALhA#9JjdxBS'!tQ"QY̸m2*SVj*LGj$тg?ϕ0hNPt'Yjo?@7mt1
548M0&Ʃwжj'iL((;*#j(j,Yy{S7r4g&W2\2nK)áqYRA)x~
+.':gE8F0NYUJ;N03GpB%!'nw%^n/7qý)qR+B{9@/UmRǢyh/
\<5Fe<vF%lPMS"3$mCS!~ yUKн\:BE߱3պ %byJTZcDpN1M2TǱ6T
JTA'¼nLӯ}!YPN8324 
B ̧NFgVfz9(zc0t3uRYO<.BcVPz-52#"'栔rrZߒno;78EpA^r$I5;g<5z
RMS|ͅ
U7Ej>AAA\w%iI\T
GᥲV*Kfx4:ՖeC1F4L
4UڔkHp;;#<C2S) 	(ݒs:u*,(v]hh%=ߚM>*P!?+n*:Jܜg]FxpTqݠrQ=lχq>
p{D̊r9* I%lvmTڹ2Z?0upu>#w Q["=/H҇7!VA=!U	
zJޞP=U.p-G?H4ؙ΄,w&3	M=ΰIqJ+Ã5>Ç:#V#ّjZ\F8TІO^4+>& *@Aj٥5ʴKM*N4LLy[aj"K6*"RD2*u173y5&_:3hH*N(h"24{$NuZ|JH92S>(jbSEGLIiL`j[)1rFW\KDT7(*Mk"svrM	˜.#A{n?I*qK(NGdn
֧2qY^vsBYDJ47NL3;x@W$TJڣq(408'>05%YwJ37y$?;yxyrPKz	߅    PK  C:U            3   org/bouncycastle/crypto/digests/Blake2sDigest.classWw\u/o-4`:I&j*i4ʒK2d&̼*֊
↲(B
bQ};?E7R#=~}ߛ^0>ߣ>CPT^V_Qu_Ҩn
mȢs-zE[<Ԗ=)t{Bo^%aU-=}

`vE⁌mZ2@g{oϞbG|2kY/KYa?PM5W(t?JCNMl̻Sr#c;
n~$Jb.Q,qrXPCo^jWܝ_էr-=-B>W[i);NĒŬ~BV;ĥ8:Dh:9RrTd2nT|x&&g4vJvL@OPC`uLȖF'8Ngt:F2lgS`]قLx]0(dgb-Vd6!|JEۥѲSaM=猺
T0y<ȍkf1f^wyaTλ#k3#np:W:ri)yj+T_6>G"ws%E|e2\e1]*"?u֦̖LG!S)Layyhl)Ƴ1W)nd&*3,id:zSHgb)ĸwpF[<Ա4VNd3>֑-O"|Y7V-U8^YQ{nsOvbոsN˽B'SaU/p}'Frt;o/|uf. h5:+2hKnyI'7NEZ=p>*_A@IiZzMZg҇LIi7iI7t#?kN&pc,^3Kr8˱Wqsm}Hc|k8s.j^w˩]NNu<oٺr(98޳~I[,ɻn-S0]H0]tV V :jt~ u"Հ$L%;LW :-L03AZ~ZK	n|bqv0@+/h>8N' |
pn,s{|E i=  A*~ <
	ۀz*HeǂT <
$/L~Ce7_l,87B%OQ%<";({q
e|7dޗ\j7_/e/]D^W܅j
$2|-$~+(?l><"
%);M?C_)Ju,ɦ7|SQ=%vbv')ڟT @R]؝JʳM&m`pbV3=4	/qaY:nxOGgW #2<4XY΀bYN} O#Z&L>G?MM(k>FA>@)IJdSb%E8ޠ-4|+P@BcJcV_.?BcH,mkOUU#$[퍚8qQ
~BR8,6+a5~\sqZB2ik5,bGtGd](Gqє6Cf-&l/4+=Ww+Eɽ](`敨inj`~7.2ro:hhUᇩpa)ahhW;)++v"EeYҶLսtXMh7m,8]m۶B)?c'nk]Ku(謠bnHŠ4tؼ]w͔-Zc7%4C;Ԋ@ߐjUg3svfòmx6l]6>2`mUz۸!V\g(ՓqVk4(^~ץ#ūpH6dnzaiIX<jGg$1B=/0%GV=UF5's?H%l@AxeF@KLӏD"HLW$L2a*(g&NsDGn|J_KּhW
4dmyz,x٧l7vWniK3vP5z7^a2{0,^ʂQDQ3ZLqK&z(YlՃQ#ek<K!;$G>=LlN5F#`z~T5kǄ°xKv*uR1jH0s	aOlA\'~]qwNElKŴNuIiKRi[6_/Uw]cIJkZKRmA~ζm۬jئsB[Lp~bl!t{vv}M!.\SSvOɆ);=braeݓ5μZO#5j0)_::ҿ?/YJ<4 QHz"moi{Zҧw#!މ7̄u&Ln7ׄjom{uJQRP+e{zQ۳g%OV;ރs<8keR3_fL!'|$O#樂iMk
joZo{FC]ol0zVқl0{&x*?VZUӚ֟aM?mY|/ϹA;Ca;#v=cԎ5+u&1abGV,MATyH@=G
}yU)<t!
qD
3\! h6Lm&yUgUC8pO/h	5lY$bjӧfVt`M9,SBA$!aӆ
0Qp:|k*	9ΘiS7!KB
Pڮfy5Zu7XS*ܦpK\#]2"edp&;ۓ0d@n82Vw~NA[,gp;K߀.IÅE%9@W4Ԩ%J3M9*9		u@WʰpbTG?}PK-cL
    PK  C:U            4   org/bouncycastle/crypto/digests/Blake2xsDigest.classUkSg~6!
]ڰ[D
*ՊKH& hk^K?v:S;ڱ;ӟџvJlj 9>/# {XZr֍
nh`4M5 G Ta@8̌
APQ!y6TT;&J&qn銌
pzg:JKլ!%U-nLJ*3ImŤmm
D m%Q=uf,22994&RTs"Kn:ڥJċR4+ʸ>JƤx|jG"}ӑ'BqUܦ:& MJFݤF:81U!CM[׈kKtGbz1pD"I;޸jt%z&aL"JnYræ63UĲM&Jmi%Tx0Lq%ٕRfFմ5kI
{.o_T= G[{GTL>mnSDT=ˤ,Nn}iz`(Lbv=lAH$]ΤKq:3^E.SAHNĊ]B.B/ׅ}\jJs@@>Y4ddZkO.&6OvovUV:hvJVla'ԉH,bC
Dg_°.q *Et`
"a&""cJa8	8cai31cx݃nhƄ=zpcb*C"C!͐
8Ca!ɠ3A/&tS@ORe
E3N)%:5JS4BDHc+'Ni}3N7%5Ĕ%Z;-I3Sm;_j}O.{=2ve.s<6I7UeF-BNX[䲂"/,0'{_I`f;zQ}o*dArKCJ-u>f뜋x̋$mׅB{1CB&7GIJޞ{ؒԼY5؜4{ 9c9,H^<J1`$7hRau褤sqs:v]bk1Xuz,I6d_{eϢlz9HaJsCnHf
bx=(0Rnnh~[eJEi 
fw:|T(1%`AFUo_\S
In˻aCj;O|xkk<ot:U"^NPv{%E\s0PF7I𹹝/^o򌒁G	!mZ<{mqN6}!|tq<Puƿa¹?nn1oQHsxZDThF
%cPK    PK  C:U            2   org/bouncycastle/crypto/digests/Blake3Digest.classW|Sy$_A@rpxI!mmɱe<|m,yzdl#k郴lemi ~$dv[uk{ivn뺮{0}+_!ͯ;{sW.v6)qL<+}4O=#{kvezJ:Hwzlp9>@nzH7
"H]HOt=l\҉f{j.Ou ""[ڕ̤n%R(`
e:Z+Jb:;2puzQ}H4fkl[{}ik@W=F}h^=9
1H4f5й`Uox(?8㱑H<0{C{0REV-c;mqHPK'FXh(ISHyb#tއGG
i`h(@XbC0oDI1;B#_*hTТUCBgQivadn(-9a$䲅bz\ɩQ*ٝɑ%IgMN"1o*ǇR*;ƍb(3˧Q}UaW7&Ȏ'pT[L12|nFM8І>P&BkHgu\fO0hcL*#Md^!֞|n:RpA-7O#,.'(J^aҟ[3zv5z&/Q#IcΡpyMzQb@Tjdᣅ1s]b:)T)vQm6x.B&WL"gyvj.ДˏHMњ*Z{86O`K\/iilH{fngZ3a2G0{[gJ듖Ab?jnc÷/?+bs9`SvyA5fU=3^U<cp!;Y*#MH*C 62e<U*t`1hpj?r
rr'n.x%8R!R>O%`a}1EˑOB$5lW/\e8̡
6]/ AD 8
M!$P		j4z.O
S(0@VS
<O+pD
M'~VS)absz% ZIF
[֠.}
7Cd%~]B
?f@嫃yk!Z<p[w|o}q}pc]2e%fVQK<>H!*<Gp{U}*'	Nϩp|^_ 8 
PB~c:A #(<Mp$xB
	QzU<xUEPaVp|*U*a
p
)8QaUB*C
p
E}!?P!
B?|/|Y(?QOUx
p/J5$:_5- &=MH|!e_<0<
^$XEl
|_		G'O\!?T8
CPITTF`-=X@K>\A~=VCୄ[WJm{] Sq:U/c$m]mׁt.Q?|u7O!bV+7_C{lwO"}M6߼%l"uI<AamY䛖%E1wilo nm6wO 
klq
=-IA'䰒qeZ)VGN>'#qzt0!V8GL|>\VHYtUЯ>k[7<cz@EsȗI짗c;Z׫\zfX-AM#.hQk
^Ws-4:0Wfβ.i=>Yb_uO"(gc@jJZ׋bAAb@YV:Ś.'49P.lh1:h9oi:q{Z[l/ͲQe#RI(k@q(p*͖1΀&$SphT]=L~.@)41=ϱbq1$HQ[`3cZAAK7x:ez
.B>ƀn}q>FZQRȁQ+NsŬ7(x5:#թ`W	Q
9*נ8K| Y ~=dm|6N@zǍoͲ'X*7Ru D6N?J{lX]5O@..$slN9Iݤu>Yzuv:l6R>'_n܁/Jo7y\18JpԬr_0c;q,׼
FoQs]ŵ4ݯ5Mؖ(zh!m ;H7c(D7ΰD7̰
HZpNJ	Y{/3>uԏLkpYr~pz&Gn6]媡W/_8!c1[m
GRUAU!M:x8q1$=4(~ɾy	Q|K:7<OyN42˜XL2צL~#'ԽL$Bc)JHW!kwa /r-iⴛSc/zC'=au7Y)9^]SňBXWUg9u.EcXuZ4熊dW`>]u(J~ԕPcC][8<Z:5Ej,Vr`QrѐC#%FɊTy;Ëo<d"刟
B3GZ8\-cVw'+/8?ӰEXY%b2kqܘW
+N=,t}/tJ

<d-<P~A r@slO9yfi EL9[Fa޸Bzy:YcR拾%{wM/|gɾFeӵqs,iGeGel̏ƨ՜cfЊƅ`@DۊDɲ$]6Xmo3ig̬ךUMm_R̢ѮT@V`&A\/<
4]QQ+㇓+CHXk/F{sX%glʹ!qZLX9"w4H"Vk]+۰TltSDFܰt#/ٖn­fsEޒ|WYr_+Bϖb\`X,h2-0cӌL/izxb.XW6~_ x?,)K'4'6W!dVTJjjFsϳB5L;Ѷ#[+!y]b	K8u./_xylN ~PK    PK  C:U            2   org/bouncycastle/crypto/digests/CSHAKEDigest.classT[WUI:0E,F0Y-&6Rxf&aa&N&]Z}5aG	Z+,}ߟ
\	uhI V*,eZ^-G١ղ!άH-l:21A0۵I4+

)ntQH)ATx%ixK_iW=,t䚥8lz7A(kx[Yft9g`Ԭ<7
=pGݭ#rvL˧̄1=V\qc
~=SX{a-4?i׬F(FO/^V`;4j.%ӵTM3VE)ƷM,HI25(#KpDQ	$'Ḅs%~uhE9VrD/̸ZjllW]FԽxУz>'9]Pe8ЏwRp2IH+@S
>Ev)"Jia2$GW2Eab.f22\c4qL3T>>,>acN/u*Av-q^9QqzuOZdDFС RSix>e&]IOkmTGv l?lrlNMG8iϰ#;Qolpw^k'a
,/Ѝ1!(at.A<O=t
mԴ3,ohQ͘P+|\W`nA`rSlF2:qB95O*VxSB)+=8YE4
DN 6QI-ln "yy}ѕ6noENmWH^wp
|c>a=w.ON$INC+2J@tSʮK@z䟰PKXLB  o  PK  C:U            4   org/bouncycastle/crypto/digests/DSTU7564Digest.class	\Te7{`6/FD5Q\-FE`P1M
-[Rˬ2r)7Բ,],Ԭ-gF-<9|-JY0֩आuJ.%!)#aN2g
mA48tȠDb mgj{e6,dsO&.JiSzJFK<vOsGyMJR-Ztj),]y:f}lִ9ɈS	-XOTP(SQC\Ů\oQN+F+;' w;wTg/6) xqKStt!.aT2
uFnqY]<Ɠ*}7niv
p,{=FqpQz]SQ8=UZz(ڬ']ⓆGdԗN
#^ݵ0&tq9\Όw 8_q"ǋ\>w-}tn[Կ:YPoa>-f̣S489[Z[*=2ηtiq6/ZSw]֩&aoP_v`gR\LW'yuohkX9drG锵؋.k/"H%nlK-O	CJFxy%_"+%EizhVuof%EEb;;--,(-*v]ޱnÍEya0>p
0Ln*G7M4Apވ'nOДA;'yd+dPڡiBL?C'aϤژT[jgRM*ݤ:TjRLI0)|5_nHjثʽ+]J;CGkw5Ooݑ>wx;[Q}:Trա]ی;,b*jCGڪTMJhLJч:U%RԥGѐ"KeU(SԋVՓ"Z elUw,VQZU#e*ܪ2U5"NFїF*ҪtЗz٪O
kVJ-
QϪ!jzb17(RI2+(VRM*5ТfP<ZLˢS;,vEzJQlJ}(vR|LEQZj#-j@.&|#U*(y|*ʦK 5KXj**Aj ת2	U*H%yIZm>Zūk?*^;\KDj=5
bsq 57/
u2ٱA^X^O ]SvEPPPשT*d*	˱d-VpQ؍V
JuBK7VどhB =jU4ko3Ikw
v$Z>۠~&M*"h4¡SUVDzU%2N~/Ua9A[i*2 8KUd0󬅆`G1잖uǾҪf_CzE&`3-BBCq]5OL5:UZOS2B[i3[nyջQ.V&V6.Cj%A}hZt-wW~:<U#~숛k^}35қ?NtT=\Ǐya^['Zz˭tIq
6<K֎Ԇ Lk^G>/R5ypқ\v JO+?e,K5y[ܴR]]L IXҖi{V|߅u&E*6:i>h}NGdjy7/SkJF9Fo:]BXU5u8aOמR	tԐJuB7yv(no2ϥ|qo#R]N5L
6S_x1f(z!?TOlPW9J%{˞r+)Bo(u66FxMvnOEmܴCATmSU'Jҧx1|x/s^WA*L' >p/9ٓΥ3{t.Rܡ
.jT
kІ@,	lĄ($}A41JyPM(O 6=tdB<h3F&ʨFٟp+=mF\rY]3ii=ceh8GRt!*zx_,;vl,}g1LǳZ@X.6%x4s4ޙwFљjvٙju ·; `,QjH-<fL6+.~d$f1HKpJl\fZThp	63._^>mov+?
@;O0JC'Wh'')`{/,fr&%aYp,m&d-
>$!(X6:Sc`u: ̙pgj9SԷ(5dRjݖ䱋d";Jن+h<BA+̴`ʕ4.TbqxZHD8*q8J	b2%8O%͎+@Kp].	Nh瑋J'6J'@NhN#u";FH넍;FHDwϡuBkYtBkY։@'l=Nh-n|Nh-NZNq'xNh7	Ɂ&0NX+NhM4k Љ(
Zm܉U<Љ8
ZBt_ߘx"1ClQ
3ib0Ŭfg[H|bEtcOpWm֯O3=P_רцu)5PdּFYfC֨#83E%Dˢ͔`79: ,3nrkCatXcatX#6<:k
6,pp>mFi`/"5`'qA5D[!9F_8I
82.ԱM?
KO%6юcM Г9QdW^<m6Û9z蜝cs`13f
0Mi0C+L<
cZf0A&h	S(3zcڠf
x30kט0/f<LnL;t_`&u/f=XYc/a6p$b&C4Na6p 	t̦0c6-c\
?c0m0f[Xl1;&̎f'3
.bC9fgH]4f7cW033LX21{LPǄ`fA{{~
f
/` @y/800s9cjC`3AH
-1]s\̅
y0
1|9̑0s,֘aB؎"H|Z`C=HA
f)k0B[qf1˘ 
s",;sΉPe*SG/*0TBePyQ<<	u<<
̀ZT'|~L2<TfC*s`>( PDEȧ2:Qy	*_Ry2RY QY
㨼T)_,\#/RY
Ry>rAe9TVB(aw`UjBe
졲ޣަRg'lfT*!ʻp&Ge3̡,~
Tއ_| ?POSZQHQ	|ר|bS<Ke7ةT£TT9*B Q9P9R9YTB,c!`rr*||è|	R
>5r
Q|@4rST~H*g!sp]*?^*/0ʯ0ȦrQ}\.T~Td*4*W>p5E:Lrr&gU!z6=?=sDϧLOu},ӆ9az0=2=5?t'czLO3|azRLe^'4cz~gzLoLO"ӳ)ezyl`yV<_<Y73幋iYY.,Og!|d<cy6<,(\bycyZ<Y,~egӇ山<Ї>HLO/'y|czj2=1=Sa8ezRL.{`zn0=/0=]LO1=eLwLLLϷLi|l`z
Lez1=ØLY,azʙd	,<",y<[EȳW	y,"?f#Y9z!zj	=	=
=݅1'T)zF
=&]g#4gz轑#{	M݆iG[$l||>+SO7g |N	>ϛׂU+|O=,\{
Ş9bO#v)ӗ73MF'\M,g}|Og}}}Z>_>Eڢ<gR)}>_>DE-#~$`|bOKsR{֋==zWgs6z=uIBϓBOgгMi(EzM'z^"z*D+sdzyj`y<<<9,O&Sq<<sXXM,,04s<6˓cy<X!,,Jgӟl2L8Fj[M["=o1L8gӳ	az2=LOӋY<gz0=G#A3<&,gx&2<2<`x3<}Oo-g ó<0<sO
sdx0<3g+ϻ7
q2<bgsi$0<9D;N3ݹfwcw;;;-ĝŝO#b*<g/x~x<Og3OySx	<O='Ii*</x:<NOV<
<'<)lx-ϗB,y~y<DȳKi#Ċ<D0}/sQ<</<JDO?gcz.	=o=[BBOs.gsN)	=SogsY)ze^yP)yrEZ"O]3BIy""s"
x<	<E$7YgK$nBO'⢼\~;/{a|)W5y.7/A&~9U zf=DO	ӓ$3=~L}d=	lOM6CxEnLO{1ӓgzʙLϓL0S)cz.3=1=1=NޥX,=,'t`y<<Yӎ<<X,O'3g31<{XX
s9|T<Yzvf#+܍:՝RՃ93XL~dQ{z#
ic{=QllllO Ӕy=ٞCSta{o}=[؞ٞellt۳<G+lUg(sb~+)3>v$3Ib|`|V0>#>O÷tY+{=
ĞgسPY/{==?=ĞbSbbOABBgDSq==B?pDsZ9.+yE"OZ,<#xu^H9!tw:;HF/,wv;ŝjEvFq;/;;q;Hq'6wwwV;;qH<,_G!<%ug)C/$(gȳQ$LyƉ<""Ϸ"J'(yRDr]*_=9B[BO/3IyNz>zzj	=_=.E PK|Q  ,3  PK  C:U            5   org/bouncycastle/crypto/digests/EncodableDigest.class;0߂K8Tp5%?+ȲxA(8 B(j4|#,aD/%(Nqv%uL별)Y8Ӡ#I,%X-LG
4PKwAx      PK  C:U            4   org/bouncycastle/crypto/digests/GOST3411Digest.classWktTWܙ\)2GÝ)1	AIHihx`erLfҙBZ+RUZ}*B<H(j}Tե?\>L^$WY̷ggsn^ V*0 P@-_ poy-|ssmsf3mu20'g/%i\uXO&R	g=Z'eeakqu
<uU$n76lmߺ)v
דMۢՕ$*w7鷅~%'NvЏ"+7/c*oe2VO<CǮKwFÎKNJ,eOtu*P<NT9wZaffchG:b@xIG=3NG$mTlضh
t&ttn:)lRF;<7mVwҙ6&M<@40\*Vb۞v|*ړul\-=nL8NҮO&L{*Q'nei]XEm2MdU7
ݙt&=v{wiFNڭɰUd+&pUrIlqmo
ftY3[qݳ9Viv5Wd+6pSʋbw=IʰdzV|+MȊ/cgm7+гݝܤ"*5uwW吙g?zv&fB4PaiؠVC5ܩa44hجkhʵ3Mז4a^	$RJ'+g ߴ}|O	ՔҵbBW_%&qk&+&\Nf8g*f8]1&4}4'۰+s➺چiTe;8s2Y=:vTG!&3,a(ca)2+Lm1{P#P:V!cP5[B぀[3E*1aNG%
uTбI۩cR:q3XwC!Ѻuq۱ g
` C2<a>G2|ãg'>iьǂ Ľx.H1|3|	/3|_c:ó3|[A #oъ/a d8<SMYn_|X)gf9НqS-ڃ`Jݦb6
zD%ITR}AcRLPjAłIP#A($].
AKq.\H<;`;9l@`4sx4q\ғI:`jF+Yʙo8'U'L#t4tPSa7O#Yq99M
qsAY}o|-bb-fX,IFHr]ȄGk\mV.y'K	՜ko>p!QnFH헃w;u(;.nQjh^zJlޖa]#QV^xMfriTɆ͏a^AT }=1Vˇ<!uC"s B+-5"?i(b\Z3 2ȝU)5HOh䆫pK|Kϕw,S#Y? (vXب<0ɰ%4kIl>xu:E&@)WLu.nߓf	}嶔_I9ْH?!r(dA]]s%~k>S<(yrx

\ƹ*^u{apLc+CFY/C<Sr39P?$ү
o9ػ>1;-b*cUîΆao>WS;ES?Iӆ}dÔiI@Ri:sذ?<~qa?-j0^>p'eD\|MD(bop
qs]BV.J5c/]&(ʱyؕ zRaI'#2/bOmAu<%tG$!:G,onk>HEcS-za0])TRrOzhcc1Աo`xw묯J%vUЩ6L&'cؙAooWkcD^`P>vIKi-^-{C5^%ϛrj
Q)!N9?
KbY$:-F@] $0<Sx4pEWNN#]:#촜FӲp1D<2Rv'=p&|`9XM}?kni/_ŌU?A"CFdG,Ԉۯ5}R3PnJy]?w_aֹO11G'zL|,",9G~V&9cIQ@/4j5jDD
?1ƜX279]\!s8bg,0,b(e]a1K<Sx]!PK`?3
    PK  C:U            9   org/bouncycastle/crypto/digests/GOST3411_2012Digest.classuTQ=ĔCR nQLZ	Aii)APiQIA%=wo;=֚k9^~?R4!oJb~[O</_N?13-FH/ΞzVug_dNN:N'%==}=9]o7qxY$Nn
\"и8{+xxz_kř?TJ>.	C/Wu`[㪳T]]\o\a/f"pd|zx:x\wwqvsu!?󆫣I7-ogw'g?oD!x32T<T&ޮnŻ!+fqa3\yI<o8{B}꿧s-_"v.Rؿ	_Z؈ݐn_.Wşۃ[l8]9B9F)
+7	?ճ<kONh~~q;Ǣ8a5e*Γ}W_-Q1SL76P}?7<tA'27E
[
vܶì(c)V9|aWbyK*b;NhDs'CxyMxɗ5gqB {M(BM'6_Sg J}zCHrKuv?~6v G|QD?|${A&!(:W\aGP:[[!iY>܀״UOuLlqrE,>Uqx#8Sʶg
r x*_&C<$s^/X!x5r-<Ӿ|"#'Qγbڙ/Et{2<l9G;sq\y\-ۗ3*M<%xSSC^9Z<t	I;gCGsqR:pRS{!Vm&~oEA~	!翶a\Dȵ-La|*7C+#NgPonzh#>mWB/Q#5<%B}B{ZxIQ\Tta?)\ZFlT(a2YSJƴm0_Y"DG#,sp%]}_@6UНy񖂸ᢩf/G!Y׼$EaͿAtbhgAx['$U%]E.DpiDN2Z "ew[O
j!bn\KIDxy憎igT*tgsr"ޒs"/ד#29Z5W/6P@vnUD0n zQ-)[J;z}VzCQ=&Vw4V;9JKm^x5
Z9N+|э:
*nݻ|_x
$EBѭsuP撥"FR 12ЗByTIfPq17fG̝tC
yU}ڜfg?;U!D[A7FMFle
퀫=qM_FHq!ˋUݴa8Sm:3tq4,#~k+ď[.8cv2z0h~| [幣oӒTĻYN >\ 5O*; K<MB9OeopDRz
V$(SǍQF4
$*yy	1ĳHXUO_NH$l'Dgf!,_׫PHԕ $^3(#+4HFq5޵-@YR48ovkI+?%Y6t;y$Y<\CRsH?'=YWEg$7a]s2UNBo{B$G);&D#9ͻCS|/E<WtALJ1uO7]ntǮzOZxE}6Gk/qǺh~
5A
D9)[{L둢rk/R!49;g)}uMBJr@R숥zr&zy/71*v\&IZRl7h^"55fR,|C1H#iGyz/#M"ߘc32EZ{qZH:z A
@)WӱaLt@H?!WzpJKH3.9܋{'HMՄ)K}+	O,b=$s+<mGYC񤧛<M<[E'(BK}m.2w(!D;Ȱ;yl9p[=q>ȈߧRAF6}dR9!Srlt-e֮*\|>`cMqمЃ6yl[Dsx?[a<ի\gqO-mu݊ᩭ̳?sE4۝J<m5wO߮6#ӯ6vrû3xvp .:Hg=/RJ<Zgq^b鍛Y;ۡ*:2MzY*?.e AVd_H=2Vey+uǹY_s||r̟6"hG/%%{ċl崧N3}_	Cc4reYex*dO<Z3J?cvL0rOS!JjFP9Nk.3(9N^
z)Qq
Dud4%|y+,G2UL7
#7Z/5r{== w+DE0nyd$6FV#zŽ~EXʵ/gC^S_Fu#ogrM,=v
VgOx#$A W2pڅlM	bܒxSP H|X
$D=B{9	/d 6\v
DPGqyܗcz6^JDŚ`<w\47ҎwI<*zI
5XPH
eZE٧ڮRL+29C[kWQEBO~v񳾀1wQkgv2(~4
ҢH
sl5,>~";NYWQ׳/߼%NFQnțrE+im&S'}.y}b<2?$8'6lQ\yO5(?aƆ,R̡FQzӈ2g{Тհ71X<֮dB5՛_mPQURuM%lTo%P1d̉RV6r!RK7C)?cԴʦR
JP|4N'EiJG){ft;(+H9cӯ<(n2.g2_Ϟdu(K)GY)v-{͒.@
QN9 lP.qͫ24f>1(P	DyUuȋ(6}a/:I\E-ՔCQ!fu)+=1Tzi'B:^dl2LCůsb˨#<JJ˪~7T*])BY "TOJ5]@eO#8TԏlJ)r;dxA)xSO"cZMrpVS{qcH	Ƌŋ [x/I2Tݹ*م&>8lۿPuĵk
̽U*FO.k,TMZ8tt5@G8Q~fc=4
O6<A.wP~Ȏ2cWeBuÎHT6I5lgfPs*qʪW
5βv!
=ƎƛʿDQ3)[_j{׷vErdwlMw&W4Q'lX^em{KW~dg?:~$妆: 釬3e=O++lOU_kѽXuO{5-zu{'Y臯hWKơGB?.n#8㏓Nk:;?;́v1
QWzhb35^S<-hp p
>u}FCY	49\|Qd
SyEܢY)\ H9,#|jo4bJ=C *4И &hwQ@ODa"41.JL9@eRFR%@S[*/=oN֣Gt
"X~/?\LtKͯ/v
^ugHxiK
^bnW8/G6R28̞7_95JE4;Pg͉)+zʵ.h/
!_AoaDZV@173
h9>!=Za	QTGKxԓ{hW#k@eBaM1정N٣hcF4%#>qCZ>V%^WuGh8*ymGhRЦ;=X5T@[&8 ީXD[[vh$|Npys%:mEGЮ+۔!ڍT>_FO&hl 2rUE}Y[Lo"9mW\'Z|JvN7f7^)]ѳƫxbU	B^:scNkx)Zq:(VFIS]yW1t_uM{w<T]ѐ_bczFtxurklNʂ1?t:&ΰFLP_	Fc?䏯ϣ%3?9[H+ᵤ<y7xƗQ='sC$g@hש<ն3#&}?
5u(M&Es"(4GץStmW^}ȅZ]M_i/k2;:?JoA|tTr3CN{	f
^qF/R{9/mKoV9|\Ǜ;}	s5&E|$<*Ǻ7YZ!~
 ~RoLYS-aT}X6[b|x{QO5KU <Y]Y%2ZΠ%=?GGa#hZm=
U=BvQ|<=ã|xG+zu,)};ˏ5W>y<.=QH!U~vze:rNd݈^}[;2R}^b",27z-BKk*a	=bzf z_ogtأO4mβ?)Eġv?JDճ%9qMMu^[yeo^v/ޞkrUݤEݵKU6Քpț/?QqK0iw6&occ-Y>]E!e;В{F`Ǩ'r0𲉗.%VvkgO5a`vsvЍڟ;B&bP. yӴg9,]ߣ281X{zkk/rcuNC͜5	d,0(+LcșdP=y$~P?vyLL8amon>]\auOd>`\niPp?1`qZ){BG{Π,f2m=yv}ghޏVQp|?7l|0Fd>0>m_#V^߾G>b$+b#5L\=O02lelχm>	F? 2|QU:^c^PLh>yS4d~x~+Fy0
Jbl@Z1hUZA]d:>hw)m'1'Af*|%
}%3qf//Pc`5o{v|*N\-S1'܃|1HUcaʂ-3HOH$=r,mG1~^>>&POe&Oq!|ܠ[hq#g50v)t6Ư$6Y>"S4̯S5nOX}7c_-oǥ$k9M%jnSV{.
>%xO-7\՘82s^f.&$^)`B}&B#2nDEj/Lk֯bK_=X/%$/b2LIƤhAmdLyWkd譗T
09IɡWo^SϽ?HRZ)3VYvyL9HU
bʅge#!2J=nc-N+N'(cj=&/pfV90} yH %պ'1ma{U
/>|/i/'c=G1x3b^qb&Ǘ]4mi`LXsX"XOڂ(7̒S,XY>f%cV5/0{uimf#oNLo[yNݝUy+9yb^nIk	)!̽u s]0f[Kkux~b)ǫ 
e>;vzڋϷxl೟cT>T5uT\yNt86|^}-s\W0o6fRyTԘ(Q̗-ܩVE4j~1*9:IBsK_L2BfŮS>%s]|I|jNш/F>×sW|}kk%<)b%fiWUάr|=OWW_C>
{_#rEkc[RvOGk7BDz;&rlѬ{\o.	˧LO8JZ~ѧ*Fbo-Zϭ.BۢZ,R_>q-&,xoxOUMWB6SX(K|3\DdǓb>fcQx/c,^
VӈNW$
XUt6^>yDv{!X;'7<S}#(=?P,ƧcI|+,)3ٓomBİTzaT KkY
Rw|O+{Xf~XM˂iӏvi,~rJv&cc
-Xybv`9J\$mH׍/54R`%N3V'&Q)9LR}E<VNʛprۗX% QU%;9XՕ`j'Ʃo;j Ibs&
Xդ=ͺcc;|28G2_=
|uu+O5ORС.a`Σ/5
ʜO|,X-:,I+5OC7Xc-8Ka:%
KkV,rYn>2]X_l=:R=X~T	<F~ke~%'%5YZԴE{TQo-q~n'ƏB8/J8=+m-InKdqףvA^.ylJYT8zp<f1űDA`l|иLGɾ"Od76&?Coqϰ1q2Y'_z~~,0_*˧:n&~IMgK_j+:W#U5rYV>	įOWcɘ|
l2F]Ʀ
='t:j]](6a3]d6Įc_Kibq?'f3{4oz#WUۍa ~Ny}s;O$wΊyfE#(5õq5@vpmtPhğM+1]7ڴ	[j_/<ǖkxlL%L͏v5&bx[9;4~Vl_rJ6ˇsؖh=mC-l.lWb{#0wפi`{]9`H4naϵ`aD!sIΧtas+v"`8zd)씘]	EuxsY۾M|H|6_nP֣+>ݿi;whрGl@W{<uVQlդ;.cU
ހi؋kXžWN'ؿuc4x"\a@$bәJ[D?kM&Wg_,/ԍhn_kMAPe8:~>Z13Bj._wC0DJ]tS? ]N)oG@P`/v}soI\@@?3d z@!SBKĊ y a)y6d ]=/.M =-;TikPM\q! J8N
H􂞧R(]ZbΨ(m vX1_v  O2Oqqe#_#@^KtEG(wACEpzYVĺdZ=&\<B~0WJ l v%*t[ vѷ8 y	3.aI ;:Ub/0wn@鋾8jYK@
ކ(-&}:]M;ho
$粟*作 $U3DAҮ~\ Hg)[VLΝbtd6Ө^DVJf#ޓ>I 46-%F )~d!W'AvO?|b#}9JE6
1hxxMO0ԩB9rr"u; w݌0r:r_E
aH'yW7=yRmzR*ȇàb:(HwؙdB*
F(d|PdE
b򦿓X`f4a%٭<Tp(9g=*Q,cM@S!(wlߤ怲ŕ#nO+7-UR8/zy@իvB }.4ܟï@\jHFS{p2Qb-|dAOQ+8xs%^7>৛}t߯T?
jWYV8$Pl~}-[2|tz(Bͻ<g}lch@ӝU4: E6qeC4^< ;#vDp4.{*O.8C4lpHᡰo8ds1]_.ġF\s84eNkv6
<;%
p8;8Xpyv@R[pp78+뮗op:OWU ZWuAIr%ШׅeCSA 7 L6MU
Ԏeбv3sNk.TmJs>I!=v,ܶ]3bRU)u2._oUzCt6cLv^SJ@_j[gܤ{g.oс~K}L` =%\w4I/M`3,*7?d,u0[C.sO'u|y)(t<'	&7 އv"x5L8xok*Z8w"0E~O}GV[lpDd>1DGԻv$p$d]d\(FO#l-WtG>zw6,L,ut7|x2Y:%{RTJ,Q`Le`zv-CP0e<Z R,׿QYRdP[?5v+??\JsܡR!%~P<gi7%˓isjvr	]=VdqԞKCy+>rG'Ldpy*PكE\	iO%-o,E#EzRR~^_X>V~5k'Q`=@xJj=Xl]+q9B`==NO2VS
^ +Vl2럨o}B0]uP[z1Vo(e'XoZ6>lKQ2	#WՇ`Uz
K4Dďn-ez,Wvw5?1`i9 ?n	dPpmꔛߪU~pKYW'w:
[Y=G_?ippt=5Xz;N75&[rpEщ'Yg<u*8+JYUoEnӸpp~V	\,>x֘
Cw-Wu\Ye<wKW?Y p?[21R}n838v.}: ¶qg2.՘l2\b;p#
?͸vI+ܢ_ߌ5[w{Mp߼e~ݑEpbȰM=pU~ܿ|yr*<ֆ4"/&xxl&VǉA'{ܬqИNOM_2m<Pn>y<Mt'n]/W9j臭sWcx^y}Ⓛ</n%u~GH6Pm)Z%O-2{+HOZ&Z|=/n?u_e[# %P.;C~MZ0 j3cC<E1KQ@oԘ>^0 ,!
C
B~]ɠ"W<{,bwA	G	?MB%e
dNAм55fL}pc`<~K)k(C9;?5zn5:	,~zB#M/nBqG:/j&AmwiƜ;!mfYy¤Yk戕Ws}aj{7Ar~.Zdtp~εj	)wTYgʁrGZ@(@$DX>yhA[56&PH{MpdVD.^cȸZυ{YQboQ
ګs/yp\špܰ㭵a-7[;=7۞/,Gp	פ]-Hr'DlI!ʦ(
8܀%}0V5D-(L3.At,C[,8qb<vm2@L](7T7>
1Qgj]
TXxļr~s>08Q91?@'e6GZA<R7"aOr4~dxj[=W #iz0J5dCBEPXa$Ldc.	BS/=Hꥵ$ÄA1}غ;fHl57ߞ09I7;k}ԉ6"ၤ_dM!yۉʺHhם݃ڱ[o ~xXRZ[M5`V2oEC*)'R)ٚ 5ɮiP'H~	N_qB,`h6Nexk(	?̪Y81 s4Nԧ\{e's^AO` i?Rlis<!Ht._]t}R7nS.ˀCn7!C/}/2W8@F0Ͳ<dJC!b4dyD@fʉxOerm>K!ٙmUzpw;@"dNS:XAౕgȚJ]]YKԉ{4g!WIweC71Q\$/BU7px<:
h]>F˿8er[go6AnRAKSy
y쩅׶<8k
HB̃/^"I|_>Vޑy@~ʎq(0h.,:7ɮqkk
B匮PbjB'B̡S-3]|忝'L^\#/${҅W{PlSxGŷD2ZH8kVl(ι$N~ɣ2qR蔠GtNC	K4d_-D8Y;7No[ɥ8W8EEp8%2IzNPoĩo9TŢ%82iN}
=iΝ*L΄pK=tv_#`Piˋ-tW28n3N/o>Q9w
7ne)JS-<4iǙH?ߡC8_{p&o&g8Ao8]}Y;(n
%סR$@!%qE杰P_͕ؐc'&x,ya(UP%ߑWҬrN=)ʼلH 
e/"@惣MP	Prʙ!GA}B(Ϧ4z \tPa..㇊>tDh?=6JS\MZ<TdM@e}>
Te_;yB

C*,mȠjuO[+T]dM2o٫5s91l9VBMr:D	;%~AԱ'jVq@TViIXydZ.~u˅'	Bg;)CP7KͺFsnlA=sT?)s?,B<
918+rsmg"C=ë9^8'#Y-lJ*QF)ZK6rq|}o+
C!FDuh&BO.w	4Vn?F ]qhl*F{w"y
MCg8DeyEhyyn
Sh{u\.g>Qؓ}`J=(Ip*aaӳ0t\t/\yxvr-2s]):}58*zB< Z8OA=TЊs>@$
Mzk{UZ
=|WZ]F?КY}j<	Kg}8u嗓\^BYO,˦B
h$[<_S$s'R
#g^t9?1H@':oЉq=qA:-9J{~JxT{0t(\f,HsW^dEAc*\'_4ءwZqt?'-܆0YY˞1)e:Q/>rhޥRS{\(SWޒ~ w>%#{̱lCۃ/1CB%
z>
{mDVzhcs_8\$ז?D;5tQkv ĎGas:k
|w`cא3noktcĄUiaȩ;$Ѡه"`FĈ'=a=ˑhzfT&\VieZ\gE
>;*O
㜁^r0R.я7g`|,{<Muoev}_w7`SԊcY0.qY'I盆ÄtUH1t
L9{mА*Pi$ǎk&G&O0di/k2>>SZVsaQ"gݿsKgac[t!L>n|ϘzI´g(y{>.fZԏ~/%Lˍ'0`g!`p̪ܬ2΄Y^׭|XMh\.:	skNaqgoYW_KKő?e,,Xh	ũl8*.X {ׯHUYώY#7`y>晻mXuJ_r&_>Kw/fҪ'mCA='aN
,X02X%ԃFh+]wzXq|C
-
J`?$VCg
8)%YɌ<hE9o$۟Nէ//:mMkIa܉~7Q	f`3ll;UNÆpדs}hlBkMaڗ
WXS{4Ny{iE`E[7~A˰-Ux)J	u8~v9[͆ӹƔ8ؑۼ+";.ܰs{vW%s~m^#6O3%$!XҰfff4K3hGrH%I9H$II$ɑ}Y}>n]׮xw׵1?~Ͽ^b-v箰*.9s>ւ!s~7=іOojȲ33w'j=5M~={e߫!eczc9z[yn#˚_eU]};޴o?Ry
Oᣖ}
pŷoIˆ98yGR6ϾnÆeMf㐉l={ʙ5y1*6B1?+nlDowb#?/ʫl|7~R6#lE6u6b]-K׃l}h16rיgXFΛ:⎖l3=l3Օ?F=IV;]ݾ͙,oڃXvuɹcc32fxz8D_z>βWv[{@D;}v{=\£~7=|ςg$=6/=7;3RV_\_l{mπmEl`^x$ԾXN)'_g9c/7,gq3+r,g3?-\hqIse_W=F8yՇ9zPF%K;'QÿzGQa*y&Q;su-6껟嶭qNXnZI
G܁j߿3jӏ&?e,	/hr,{q]Z}nltѻr8 6zh'ո2Ho?4~[Y:f-~'ÿ/eyޔ:|xяx5yҊ峼2j]u:rK{Ol8irfnI)l}tO]skc٘iy6fu
dӞ{3ac^x)HlN-ؐ#٘טЏkV+,WcZ!OkXm;sWX@;aQ|IĔ#[<<ӳw|6kϜ:8xynƖ]y/Ol쪜sGd6݋ڳ_vٺ?1V/UԍO-#\$GY[,wC-}l-+h^S%??Y#ظ_3[ső.aV|f#ظ_>4l_&:ֳSsٸˎ/0eO-bӯ_pV:;+:f{uVXrҴ>fOw+\FsXᦊGMgq:M6uZugi~-\ֈDC=g|`iy+/+zs3؄.
l=Z&sMx_8?MV/dLi͉lNs6Ey2=b6骳[{G~|R#]_\ȋOPe,מWoc|vWo{yoouzn=+W`y: +sOyYQk?͊n>mY?՟7w7W%+3~;h(X'lO&m6?{lڽ=l₨\J`awm16[kڱ~sRŊՖJ^
eŵv+yVܦd#̊S@'[V)l^ˊW91x%tأr'{[叟G޾mWߞceg>-UO}{ty#G_\ٿ^`^Yuq'٤;>H|ફlRóm٤
z<I=^lҪ_w&zY٤OmI>f
0gc&/?9Rcw.V7m__7ؕ÷:=vmΕ>J|}YIeC|8rgdPi]#oIV_/Eﱒ=N5i]YWrw1w̸lr/T>6y-=}O6wgvf<gdIl7˿R+!J3_
n>+{+Wb/2Vjy/tuMf/zK7XJ۰)^~llJSn566_So)z)6a <6e3^J[M%U VtkSʶN\ZܜCqKY_}+;+? i+;sfX}Gw96ޯulݏMM$=[M͕^[t'ZXs]?63'-aS?X;{ˡ{3}O!6:t!%R!0dCjiH,%_
:MMhQUU UqQ&eG6b>\TU[$Ko#5|G!v(QjE%VxQEi/+uZR=GjqH8R[Q:H#%͑$H%Ñ<)$>
J;Q:DΑbN̿-')t%U.Un.J(w];Ea	~/O3,?h.Qzr(W~^QX~K>o%q
,>r=3Č$orIRkF:HOHoH?\$z"[h|%o/tIjЋ6#n[
>$3#}p#H

D5ҿ_mqBF?Mn^'d',>
zps,5ۢ7'dqPDn[zMRҲ3Xj 87D`?N\RC6yL:-6#I/ҝ+3rW+O+^j7X*LH)WrW~;twbLpn<Cݔ˕notO`%=}񻉝fZ߭ARa45\_휸wmeT=&\iy7v=ƮfM&B[? >Yb捋"H'1菢Qӣ%WɖRt"A܋/o>̂"^9p;F{<r?O')#6Iq1S=ݸ8X\\uq87$IۡE6=<ц(VPzpMߩm
鷲
-WЃ+|\Q+
+|5&"Ijoi]};VN۩[};5PhUnNJۉzշXշênNi[};շӤvWN?lǮj;IvշT};Mo'vTߎQtշӢvnշSqoN2oNZtiV};շxշ>-k
u7ԼVP?l(
>/?X2=i̧36[#5ApVcqP4Tj)R{c-߹oXͷn,nXkW-]`yՂ5ZFՂ>ł
ZAՂ1U֯Z^Ղu
`U-xKՂMlR`\ՂlM`˪lQ`RՂU&T-xkՂXcXbWخjŶU+ZuՊhE<U+UإjԪ;WRmU+v+18.rVWMN*
Mjvjp>F!I&)9D`j#+&ޤwBb& !q?Z,lWHI\ez?Aq!dB"}@7=qC
/V"-CPBbMkYU$,SȈs 1d`toܭD|2-E>'55$"d#77(ׂ?KR~:8FwGRMҚnYXj<_/"w7LF
*ZI
ZZ:]
^dR_/춚A]1D͌! cbCLO}&mPCA
^TT8_԰0>nSj_ԚA~rPkw5?~tPZz
j?1
?5Ԇ6jcc"Mԟ[QAmjs-(~EPoӃ'5Q<𳂚Ԗ~l}vޠ5{oNA͟dTbP+72SD/7g_?["z7@a_7 O:?' ~7A!?FG#~r[#Hү (/PĿG;gB ~qC#
_G ?&7!o! ~'?QĿE
_C?wA刿=@KCE?G8'##)?GK:/OA?C!oD/A! 	0-G@C1/ 8#P b  za _b 01)s03P b y` a 1'@0N@GDoB5[GE!v ?_D 3#!~oC[97':.{"E1oGG"&$⟊k!G#G{ĿG i_
鿅e߂?_B_	*߄ 8!h_eS_EgHB`+/EH:ҿ?HߌFOFF@?B"qH9wF%Hҿ
oG-~߉EH9GuTW"H9 _E+&#M[8/o` ;0m.`#0xt b 0U ` =0l`
PsIL]1OL ZL༘*LL&p/&	\b!L 
X	NcoaO`aa=14L-&P(B<L5LL&0H:b:&	<	c{0Y4{_߉ 
䟊{#L?B ϑ!sUO8L#Y#͐HvoBWxw@Ǒ~,W"H3ҿb	?{>u?F"~"鿌'ȿ_w D"*w!/.cE7:*gE|/8Dc a 1`
 n  1@*)p	8@( a 10O&c ,`100%@a 0c<}!da 0@w^q|421B	&&MLธ
1࡙&0t 00^z##$p;5 g!I3/Q]g!-_@_#}B	C#-¿ X[!@n:"C_wFW"w/!¿/A߉HEDKEDߋ7~CBH#¿ 鿆
?7kHo9/G98C?, 7@SO_"ȿAv?A"1_!?!__o3G4o 8kb 0b C%_S G .P/`3coaogFx؍84
o4N]%°$pɀ%
Zio6@-^c{|wfGwoãKTg,
i8<ƁoY4LX38;|qŐ((((((aQ|Qj%JMQ(D(uD+J=Q#JQbEi(J#Q'JQr(Di.J(B$BdQZJ֢(Di/JQ:IDI(t%Mj,m\_ƭ0m?DCn?AX4frguBLŵA7?h˂:sJl|.Z
(Aꕠ̠qΚ7碹'h$nR.ww-X3uր:-{ZrG|y#ZcZք;֔-\W9yy=hrih-!炖{ւKAKUZrivZqU\6<t*hm7h!lq#2ȭA-۸!KZT:s@R-h]LOu!n\NLFeKAC;"҃[֓UAŕA3\WޤA˥Aܠntv
NJrU=
~m0m-;m ŌrLnIІqGqKĚbù=h#xDFrgPв9;{kK-QcV~Fs6+hy36[+vAC"ȥ璸4ۋWqDZ17paA휠=ƕCA+d.pk@8z*֐qV$Y\,IsX?s7F\o%ܚ#LIsgq gsoOqusx(Wr7{Dk٢#3M}>wf7~p{+}D_ȝ/Fsq%^%ܜ'܈})W2.^6+~ZrL\> !QWpp'Wre**k\+jήw.Kiε2r븑%z
\9oz=7rkx7s6]p[Tr[9I7녢%Lg;W/n`
;7Li
}7qԼCa7c:qvN=BsS&g?x?^p}ryGG\q[8
?*s*'?bяr3.bEqna\:_ry<4MS</W.in{8:ppGYZ)<9Iѿ*﹄/p!OwۏQw;;DKD̙%\qr#D]v븟_8C׸}U:7Ζ8D᯶Yk<{Pk쇿Pˢ௔,+Z
5	뵂kkW᯷*᯵/

_(
_Mz{j
z:
_+j3o8_ᯣ;o1
mE-׸
:(+	W W]	jo,c᯷-
WZלC௻]W:YN_ =3	JWW)j4U_mUg_s6U0q&_}tkvCgG
_ ௺ʽoh6u,+#_௞Nf_<
/\+吿q*M᯺_m#J"䯗EZ{כM{_s	k]$f䯽usB׌!1nǓ愈_k>+-&$מD_V@䯜E_kVAyfmmW_BF_^F_sk!-N=p,&O__2"ox'&o(
EE2
#2jC_c+%{WE_'5,7<UK_yk4%䯲5V.k#䯙BZ_O'_k_!t]&/K">0 :(o+䯶Ջ__ iߔU搿zY@L]N[_{( A䯲uzᙁ솿tJkL#
ͅ솿J4_uu;ᯒe7Wr>7 zᯗWN.
Z#kɁ̄z%G_ou_y>VWO.	,+_*b+mm}_u9/KF
&_z>Jo8*{G.Wv7o<5_}3௾
_m1_==דAW?	d_m{:jR= ᯑCzZE7_ji:ݳ1/[զO&߽!_*uO_*o8j|oh0/
[@ڭ_m?, }_(kw܈䯳5AZM̈5ۑ3/J1 5uꑿv'zr5z\Iz
o#C7%ý_u5k f~
Ʃ䯻7o&6S_C#WE_VNz䯻.2m'҈/"-u
!/+$G*>U_ve:k WC*_;u瑿l7TJzP<[WF_J_*%䯫nk$A/Kjtu撿*7t_+!aoh5'quN4>A*_c=_fNx{Y+ʻ_c9׹ yj
fov/o)W௻*^+g_%%XJ&_ug_V7<-Ju_
eW~ZW]lg/ڧ\;oh U_w_ÁWoÙ7nW=Dr25N_%g|_{/u_$7_+J%W[5%_0UN_e7
^W
C*n7|kV_}uw_u!5w_ˇjW=	7$_Y<kJU_'2]E^#UV6m&͙~՗∿tU_$_˖o
2_֌5[ZA_w ƑN'W-$TWK}_$~4J_czMЂo(U/A>Gj_g&Ygi3k/%e䯲U<!gv6哿tN_mk'<W;O:_xӌղ__k䓿QWL:E.'lיO:_5zfSZJj䯻"_1_-
%C~7|Vר ok'-䯗L'_=NWKJ_65u7
]#477kL5^FC_T$L᯺j௽7qk7z*U

ᯙyWZ7	7z>6שF&
_ou\l/_z௷ʧveW+v%
],վ7fWʃf/+_yU2uZW׿JF_
߰=7|+ox05௵
_suw_4Վ__nuu+kWJ˺_5!joHf5_?7K᯲j{z19Y,_5
zW$+N/k:M
ZqHzU_7jWIt&r'<W_O_=5bPE+_-W#q5u_gD-%䯥fO*_yWGi~WyU'Yo_i"=o8_kkIT@j_k.'}w+-$se_k6Ev4.$Cyk׍UFUG7U%טF_/ur_Y"ՙy!4W#uE=KJG>N ]چ5G=D>+&'䯷uPםKj_}+O'䯗IJ_o#×_mN!I<U_+'z딓j[Mzeox	+%C_;3E%
_gڻ u\W2Z}/߿rߐFW טWk5Z9u摿WKJ+-j7j'2]C௔
7ohJᯛW5k
5_ox%Lk9|^rg_)KeמkE_,5ᯱ2j;/
CW/;
WT_/u_[qf텿ZU|-z_%W
"kx׸7t_łLnW7\ 7tTs.יu	pSkͅ䯲_.#M5v>ON7gA_#5rW/"-oh
'Yk#֌*_N:GnW)"C_!lnW;Coxh_5_ցgTnJ{#"R)"
׏!JW7_m.+ ]U_u+E~搿QK>"	zs_w7%Nz
"䯻e_U,'WiCC_/Ul=k$6׊"v5K_o k$Y"_D=(+G~9C䯖L䯹FM"=Ozc_0k#/[L_y1$ó_75
_<km/?  8T 
`} خ 2y  C _a	 + ` Vv	 8\	\  Xu , X
Y. 6w`}+ V`# 9 ؼ5
 [ p ` VX  X8 ,A ,k  &V `3  X; xx(  `c' v` `}- z`  XY%p1 
0;p ۅ  8t { 7  \ , l  `~ZU & f 
 3 Ke Xoc X>Mz `: 6| lR l_A un nl) 	a X X.$ V`~d lt ,
 K[2 {$8ԗ f`+ v	`5 ֏|XF {G	I	P:̆rnC K{\8܌ v49@ +	`/ G<8O [ WflG k`; V+	PS`/	`:K ;Z_8M 10B +W`+ vvI ۍ`e,"ގ ֕)z gZ),O h:C Վ v# !N1 '9z gNgG k'`,, VN,XD ~XE ++	`wl$w ֮ZjG +" sK # _"#RH 	` JkF `{lm'I ۻ	`o&	`w?%zlgl/0X9G k` hI ' V	=) fl  3 6 3 XJo ,[ U `{! 6O`  6 0`; Kv K   u 	 E`c/ V4 I 8L@P f `y 6R0;B lg `~ lF`m   ; {S
 X=[I#O`k5 6  K   : X[
ezM V& V`  <a X 9R ,F X[b  `e0 F	 v 0
N X_
U >f 8 6x   l 2l l^k ػ
+ 8| g {k v pHv X/f 8 j1,"Cu`
&[N ;	`3 J*J`;*ylE~KoD > 6`o'+l'û	`̒	`c%\%FU@ KK	` !+ < V~]O 	`, Y+ v$8< ֓`;q R`i&M"ڎ ~F i`{=lO#ރ  ܟ rhv  p  dX
$L#+ph!2 MXZO ;i v:D >G l 1 V7^v`'p\ؙC [jlD wRI ˍPE~ˈ'5 R`g?, 	`9
XE [K|NPPKgu  =  PK  C:U            =   org/bouncycastle/crypto/digests/GOST3411_2012_256Digest.classYOQwhF){Yޅ2eQ(`4M`.P&uHiIM^(1j(yC^l2__ XEW4=eK[[b,4\ЋAf5JWRdzm]BGN8ڑWMSmzSUyOzMH˚])nժ&[=Z*oE_>S/TJٰ%,+'y,
)%Ye׮
yWfhOmy6Zu,n}[޹Eȋ>/%,sM	ލ7LVéh{13c*{Ny{8?-ԪzR%gvSţ7^bL+Y;r h < A"DƬa̐ `d! ITxwS
)	A|0-zpC%+( ;#&Z!vb%ⷂ&	'O	K"*uhƜ^Q3OzLMʑwΤx	gr
}xuI9#_$c>7+-}"s?)o焴ìES(^Q|vOI7!D&!G $Cd0%cdLI2E"d̐Y2GY$Q#q K$IBVHI5N6<"$K-}ַoPKJͦ    PK  C:U            =   org/bouncycastle/crypto/digests/GOST3411_2012_512Digest.classkOAw(eR`r)\ *DM]Sv!E#?xmJL?3gvΙ9__ XE" MOy)ŲUMl#m"/^3Rz%^ZKxGhWnKco
B<zn̚zvJƩ}Q)^5lEƮ7L*/]}gޙ5	۪_RmVmw̚jЭGay7e(*%#:V$S{ďwZ|ZµK.#cnN( at?1DÈ`4^yB&BM)v3S蓯VaIIǠU?|h9Fl//A/:r;IÍ9Ϙ7S;1H푙zՇfXjԷ76Cm~C4\>f@bV[y0./C&# CBJA"$LH7!:^GA2D%cd< dLi#3d̑y'	$d,eb"i!d<$yL
%O&y;X7PKBUO    PK  C:U            3   org/bouncycastle/crypto/digests/GeneralDigest.classT]Se~6dIX ŦX(EˆKU(HCÇ&Re,1m$y?K:p:@xyASaF=<99Z[
,A"<Z4AEF9v6W
xUjs BY+L-V$4GV3b3$"KsF$B(|YBk2YJQˑF f['ˎ9mˬ%#U(;n6)s`͂5Y<TsKt"DVơ}krv&OƦV&<o0"pXL>7SNC(^.:eƖA	')T9enHTESBY-Ǵf~6c)gPϚY0r5KN677l#;O,jy;_wHP;e]9lk\?i|:O,ܰR>-tF"u[\_wӈN)[U
\Sbyq	gXyodlΩ$]=SB#.BV|BglVd]UEETW1f71δ	L$bsʹØcg~-`ͧll,Y#<`3!
ǴaicX2
iS/|'X%pA'u$>*^Z, cäE+<	ǈ*.WBW~m#=eݽ	N܀2SBX;4U)sToPd^QCn}9:ĊRP}$jT¤˩\ըP!Q'K<U*yy
kJP .xP=W5U=	jUG}Ǔ1xP]	۲6*U^x.'(=;hF۲{9Srr9kRs
^h[ifz{s/H*pFJP]lDt/qOtA};-ITɉToTeׇhگJqn49+6^~C$O
'.>aĿPKD13k  ^  PK  C:U            5   org/bouncycastle/crypto/digests/Haraka256Digest.classpWIh%܅¿RlHQ=l.ˑhvSS[;he:SLZKTg3u#:؎x}}?ݽ\gh9}A*-PEVyuCuR{PYWlt0E]ҧr-6_66%3lYYmn۾96ŭ+Vz[; ol̯&9ϰmc4iFf_a`='P;:y^}2c6j+kY#ÃSӞIYvlsiŶrMΨ错wb/0mEbs\	N#FɌF?hTKW&cL*YgH9i+롹9cNOsw>,;gѤw2fK9VKiM'-;gy-74<L@3ǓoP:yy(rc3>n6'f\;Z啐
<ǲA˖V6fzwJͼw12L٬9lf4Sh>b
ݢ,nU6>""
EjRhBjx3Of
6Ny܎ΦkӖ4w]C]%ԕw1Κo]7>iF[4I4
]-b5FJQOF
T'Hh>UkZBq4MԨ(Lto%)GAZEv)DܱIn)J".6)>;is }HY%_&#72&Gxw5nd\WȦq床.C_O^Qo+5ujob
.Jst79xYǈ(><y	_bGu>^K|ߖ:N1Nץ~Y ב:_2Ώq8?Ʃe9z,HWeQzeyV<zYZyVuyVMyViY`)'*Cipť~#ߗ7õ9N=cĈNwD\#c4=|F=I;#Q28%'gwg\ZyvdwSVssIDxFͥv7JY79v.#lV׫Ӵ*Q93^fǏazN3IUnR'nh=O
yM
8NW,=|HnO*8=[߯k Z?F|&fs>҉'W>W:\<90>&|WZe 	'xB/'K.=ȥRˠ!U߹\cZ0 	(C  0) - T 0,g/oHbɏI;ߏo## {HH38=_$7K>w#^Ei,]A 0ʀ/	 GxI
 : 0
* pNT_(U|@+1  Xo  @E>KG 
!.|o 	B tcoC-BppT#"\2B
n@x\/@F!HM"$Eg5_WW £.@8U*]^%"aDpB?wAc Le8% 9  v bj_ďH[߆x`"{5w  cd'D8$BT!!!`C.P
sD: ] X	 	  M>8R:.^	xM"E?"
ҟZ7}^nN'ߍ_ ' 7 \@wsr>ExV	/N8B3
| Ls>z'T`L~fG
;  l+Dv.^"Af   pc b  +,[	0_!laiM@x_ [O@XvhPKd  6  PK  C:U            5   org/bouncycastle/crypto/digests/Haraka512Digest.class{pT$BHK@"@yXf	!td*0:TEǶTZ^!Amjjъ-JJSw>Lsw{f냇3.rb]TEI+6	K|lڰmih0	
;
.ԧ]~vqXN,^v:ʬZc[5E7u0ɈA/г0yHw˃k"T0má,-|YG4	=#ѵ]|]CZZ9$w{ήޞ5`sgk4c|7P{uC0h"]Pta?Lb·Nj3M=@36׬1p5}=`i
DnF=r;=^0	7b:7U	Fqݢᰳgm8=g$tp)PkzHy4kBa^p$RM^ByuMkb&RM\)(DIT->WnIW,I:P<_o? cfysغ.mCsbC|cb!\htau7qBs"aw!DCL8o1V\.׃t1S\h桙!ͅbi< hi@s%bh.I}M~Yyw.u{|(ϝ% @r/34L}9&Ge/O~n[kX6(
ጹ4w
\'
>I<yn:R댝_rX%G`IF++2kns4ט*5ر:=9ԉJd澦¾bu#Jkb#C+mITN28*>UyĦjKN&4]^LKcXB^K,XiO\i9 ic0L-oHٷ
eߦa0^W:(V"$ݞ2JOOdYcY,k,+P0g6֓sztc=m'XO1z
WXc=z)2SlXxc=WXDc=z&lc=S}W=n="XU sY4XTE0zkcwl;WKXłh5QNkZb}+suҢ!toeP4򓕖yrx҄)I*^&Y
I%$w1,%-jF`HWKe/(}6xspqܮ3k.^zJ\]x""F}wQY.غfKPh83[/ZT{t.[k7xVK<^MNWV3dk6]^ײ֡6KEM<M25`
 	Y$F @'		|N@V̐Ǒ?Ms濂|+m2ntJFo"c*F?2w3+L@4
= X B`;8Mb	&M`
Xc  p6h"0?		dD p'z  TW	|@@	4rR(F&Cx!PxFj
_Q
/RȤ0B"=a)?%~L$Sޡp'
CޠpB!Lpo@pBf
.
(4R
.} ^	` 
L"p@GAU#'&ǌL߇a_`21S98&6nn࢐K!SfPA!6
o@RxI`h ,5$0.M~
F
 6X,<46370~5C/1}+w2FzJ_V!/H@,+,E#PF{+BG x)TQ(PE[O@Q
hВxd%=
\D3xN`p3NJX	aBA#lzx#_xhl0	 ()0Ln
[(,
QyJx[ \'Rp-t
?BށB-vA8C
7R%z.Oy6C
A^-
'K+|H`sʭz@i
@z ,:b
@k)T
CQXFE
nOg*0!6qN/䭴B|
PI	
[(,P5<NQnG>S1>!/ S@ | K=*
xUdZ	'0Br p,1 
 	8S.ENp
CPHp
B'zg/NRx  
pPl<!|
RpSI>R8K³+ikf oܪ[ʒl?AA^
a8IA1?!0p
S	 \A26k}*l",	L#pF0QĚ'
;(dRؔ򰝥B^
)̇PoBLB3{La(R$
c(0I	S BNPPB=?PR!A	0YK p? ĿRVKQGsxK \5_(g9QxBB9R
wyLS g+ߞ!ǔY
=S9Qx+ʔa[&"͊rߚr~~=3yWPK8u\"  M  PK  C:U            0   org/bouncycastle/crypto/digests/HarakaBase.class}wxSUsn&aQZ2k*.D-T,8HK(`B^'*TP"^8p/p+=G6羿3rk+PV`)_Iei%+K'JaK!|t+1Ĳuph]cCSCn4y#GV$>R[5`w"@*jT>Pj-fSMjr
hhilє.LKS][]*kL5eK95`2dI5*SY|L,';aJn|f lKme[.-50CFy[32
iǧgil\/[EmVl9"*?BQQtTꂦ+BWXaM_4G3@f6<3YLS6jMH5&>&53mLzb%<HUԃdrC8LLځAzKzJTĔŬdݪ6Ϟ;PU,7Ce%f*</s֯
{oj$>~'cE	8|mGuB2)gʈ#::j|G2[0}mzm05$>\"Hr"'A%Ĥ۲08[C¥zHKSRUkg}4ehvWr}|G6gTQ.VB_1ghn![jV'y뛤e*/J88DD8G[8Jr9	8P9 ɹO<V9R{%g>pK>|f O8nqfO9wxq{l*Y_8!_%{Y)-XxsZmKي[QUVEd{CIWwXDmdcOo]od7}`okNNoYUׄWap|>Dg
ad#^?j`#bWū{Pr%r/P:UWMMsrrrt0Oz選\>,]Vz+.~wJ/Íҳ5o@|?5n"LaXo `J9{''p7	"P @l?]!2mwd)_2~ f|f!䟆ݐ_o&p=#:{@9
P%W2"1Yg>?7J6_-Vp;?!0B
U~'p2%p[o np  \Z{Zs	oSMAC ڷy   |x A+	,%0&s	RN!!dIN0f} 8.p&)|Ca5ޥp<
 >P
!@/c(<J
)RXDR
ShgO!<
a/3 5
c)F
?QB
wRBa
V -$(C!G'QQ8F	a Lp&B @$ 	<Bb  o  @)\Bj
P8^p
A\7@8BCP0APF!Fa)tIܣJ?PKZ]    PK  C:U            ;   org/bouncycastle/crypto/digests/Kangaroo$KangarooBase.classVw.8BbI6mL"+H"VY C۴i&BiBnRƀl7c=+Yyң;w;53?YUܯQ$xZ ne˜55A]>cBGT)bb2'ծd6{H{"fm;KJxH?/63 xBDP`XODBI=I"Y#'ixlHaz2i
۾}yyQdfnYTOIب۶q"oGl3OLk"rj25"qFQ7QdS#U0szVB 9i$m陜] /Q9e)5eP@ڰ{lcQG,3oXv(8b{3i`3gJ*]3Θ9g\Cz{Vϥc٬ֳ=VxFޑ}sBq[*A]LO3SΩN.iQωj7tY%zIk*o}
dpHg8qW?mr!i5&uՔP/ u4%[MA^;YoDM哰략y3}7sv&K;?'WntZ[&^֩GE+orX^(_=kpj©t[pNY&.4%u؄Ҷ'I:".W!3
q!_9\sFKX)5@AX6
+xL
v*PK<`N]
%lq)Ubj:0EksG]zQ\X,voSv-+Lt}nԿb zVW¹:c_0%_^}?*s5<a8Ћ&
!5c C~obxA Cd
Ax5<ϰQ4Ӡ
Oa/j5lakxihe؃A 5l)a#Cjx!5D10c8ΐe8c0/2X~ǳ]?8G?9'0ex?`!+2ȏ#co0?yoezg5U'y=gҳEr՗zU3ۿzz>Od
9BQC&ꩾ
X	w5"*N\N 7 \J$l5M>4-$(QyQ--6q	WwM3%J((p9(/`nWgk{,Dw
g޶Pf֥Eum<Z|	z7q|%i&+U0,ez!j1m7JDU2}eׄ!W~r%8')lEh$uѶ9of]Ak!,$;xQA9iE6PJQmy,\N jIp"t+AB\՛Pwώ<fs!!Z%HkiZ麲m\,c

㗷9sdn7WPuJL9Gx371}~3#nym48`],(EGiy!{X!oy!啐5_E KS"y|]:6)mEhvfo:k&Bi*]n|QOZN00pA;V2!>jvH3ypQGD̳R);7Q9iyJD^x;@*-L%ruQVW9!##Hq2r{_E=ۣN|ZZ*9S{[z7p	Ԇ]Tw{pmFoPRrjkӉW|?WB
BMwPʿT q&G=%qo;Z^&1*
hB@9yh>}
}*}f[=P-Y0ެ+PK    PK  C:U            I   org/bouncycastle/crypto/digests/Kangaroo$KangarooParameters$Builder.classRMO1}	l( mF(TE$TEj
qr6VaY#Aʿ
J=TU̦^C왱ߛg̏__hcaŭdXuϺ.9(0RqdsZZ`C~(#P+<ycW7ȟ\Px^
F{o͕	WB4Co	vC(_Y&&#DZ"Ȉ&C|CY9Э/}]*A~e-jqi+`,d826me{۶'֟ڦ{rHCH^ȵqI̵o>v)}Ɠf0'H-Lk`]C%-En4;YYFi'(q;4c{g9F{'ebPKu(rPK׆  P  PK  C:U            A   org/bouncycastle/crypto/digests/Kangaroo$KangarooParameters.classKK1+}ڇZzXo`{=yS܆v˺$*(?JDDhB&3?||8@!\1$ܝCʽi 
1CleKcj{{I?Td(ڨH6PC+]vo\ޭE~Ɔu*wZIK?-5VY9Z-*(=މ֢OEr#đr89yj=K9X@AG<Vc5%1fMբWsNHf(c7UPɧ"47)*< Y#!MqzqNןP~Ee0Hay(0F;^?< )Q"J@PKl    PK  C:U            =   org/bouncycastle/crypto/digests/Kangaroo$KangarooSponge.classVms>k^,:QF8V:&ѺyiUI)%(dȦJ ڙvΤdi~k 0Yi[`C59ϹwϞ{w׏>_D(Q w	K}Z\'|=ubibD檍Zg!tJsj-[+.t6*ՎFc\8٩tZMGjfVݩ4;m|R$J?jRm1SܻS)llTjkJS?tZ2/]k37kUb+N^j~mYHv@HYVs}U^X
,Zj4꫕),Ѕj}G+mWWKuvN9mQ45kkɖ$h vaϯsUk:JVuYﴬji[hdS6'7;k
kAʊ}rzϮWjک:ճ[2VtՏ|]=,7,K.qi71K랁h߸D/{KQ߸=!4߈
7S&Lwi2Lwira:F@9;>c_q\X`ܷ.L^%0-p1*XFɈ!
hD@	0(	
(K)$EbTe4*Vc
R-u6vЅ(U@G`S)-T'Ggq<ЪI/5v[=gq_=heteQV@aJ`%6[}>R(8`}	V |0nѫб=Z-r[t5";^Ha#ރyޡ_	ܡC؃CSB_bov^K'7FMEIk;ofRo7TmoRݡKAGN~ٳ .I+h4漏xr$q~G4!=6`u E"I$Ԟ髚vs_\,<]R,_;i#
j`Ouԯ]]j6
jzU{Og+ԶKss;чYd#1"(A$H̤~~▯ꑫAv!5
+@O*J	轠]?{Jא	q}Xnٺ옩㦂C
-0UԲTC2U̲M5liS-{T#1ISZvT	˞2՘eLeXvTI.-h]=meJ##bUc.]b.\tڳbY}#p9Ӯ=Q6\p9kKy޵QJsPsf]AuԵTIԜk1wc@;,,>;y<\tm*P'& T@6R<.4Y,Xî	%8-))6)dr<#4:R՗_rU:p 8CFw !W	Pw8qe:$Dj19q iV : vA ww 3Q..y3P(:  SYJ;,DTΪpbS* JYV* BaYtPv!OEx*ڕpTT+{x#zWvH:%9*S	/℧tA
Oź<ޖYls{R<mӞJ3ySܕ`T+-RBbY/$g=5Er])yJ	{J؄<<oыVࢧhELWZ{g<JpS4l	5k2GX#i2eSgl9T6Qhٌp+0+ N
p
`8)`ǁÜy8OG9Lps@$E.x}A-A{T7i?Г*BLgW(Xp踿+ûo۾6?c7}'7z_|rR?ߪ{CˁhyrРceaNq((/+;
1РA'A8)O:4hؠ yЈA hԠI4f"!i{e?ҵ
4zרJoSPKnT	    PK  C:U            =   org/bouncycastle/crypto/digests/Kangaroo$KangarooTwelve.classS]OQ=K?[((EQ 
mI#Aimo5eٽ'K(LPw3w93s?~Xv
i
1cwFMP΋+&7Q[R}aږyo?F[r\!U޴T4dmJ
upk.C[#%wk/[jB|hX|Q
TC5<5o;5^@^Uz7t`Fհv]\([bg=˧++{
e "Vn)cXGNǈQ74,R

'm
d+qm^5jox.VpZ6zyq5:@!1#0>!1@!) ơp ~LNy1ep`g(2,0,2,14NUו~aW1KyXnXww<;XS5H
a|͊fC(iȦ(¹8Cd9W,}c.[
39b+'!M5</Lt8T\X;S$B%{`5P.~r]/,Nu(⩭x*ӈ/$x94M-PK*+a    PK  C:U            B   org/bouncycastle/crypto/digests/Kangaroo$MarsupilamiFourteen.classS]OQ=K?JA>
((R@Ő4"Ͳ6woA|i?e[Pnr=gf̝O  k aWZ@.I۟5yqy{z\J{
*^]y;A>k狺L-xF
\Ku7P><G@?mOܕ~\+Ie`1P9IU.:in܏T#˾N^kw
k7εe)ֻJR6nݱ)%CImIGĐa#&nX_F/X8uh.mڕJX<!+8-@!,b z,2"aaI}H1-Xc0-dpaBw{1{Y0pCaȰȰ`o5#RmEJ!_=4fɿ ~A5Zbn;&^T5H
C7L.6B5FHC6C.X1Hs%7r8=C1*6rIz9tOOcEuE*VS2$EmQXtq'm
O-xiF:T>@Gi
	Jf"'	$?PK?ug    PK  C:U            .   org/bouncycastle/crypto/digests/Kangaroo.classQN1=G+.\ ƅąL 4!CKąGF$,tqi﹏ϯ 8`Hj{\7n}5wB"Һ"Ñd(= FǑR1b$rN_v-CYGѱꎻPzh<4xgM+ahu"iedV7Z?ʉ{չ3lNПrpÑXp9r.XC{)WXl[1qj0FY	
`AImbKS~&E7a 豀dE=8(#5u4oPKLCC    PK  C:U            2   org/bouncycastle/crypto/digests/KeccakDigest.classX}xSye]^XHƖ݋+,#/1$QcI=bIef1%m۲euYC5ִfMJ޺מ6+^H8y{=H||jiԧ&RmtԘdXoGmT1m^VQ5 S\P>L1	|z
33ų<`ƌ72*] sZg˥JwLp xC[{jh:<b^m˓vB(U+{{jeQ4 ݿ.6BfWBsZkhcѰO3㥲md.U:6qZ,e2vv,<M4
>ǌ#쀸mjۚ	P;tAϓ=n>^({잭7k]?Yjͮ7J6F"BOTKB>V*t+-Ż?6xj8qWu@ٰ[&qȷ
ƕKm9{1]z./dVE(V,KEc6r\Nethv\
	88k׼i޾¢s΂5GoTӍ:JoT.(*-}R,*\XC%`ZE6gze:Zuސ=\+m.z]wTZ6JeT8y|f0{|a +̨TF()BqR	=~::fΗZkeNUmzG34p4-5B
&Ŝn1Ol12>bhZ-I9m1\-&3gRiP*T}*RiJ*MO*ݦnW f݅C|蝇DZ-I<'׌
Ӷۍz`MOXr-Ozk؜<wNzԮs3ػp蔦^F>p:m:uaNSD00pԮ:3QNRNYZ)I1t'%tKR<=NE[Wu3:kNYxVm}!B1&sy2|1JDQv>2?JoF1K;_ax{_gKr>EFkQ%z<n"xgP;\8Zi#&|i㲈sAξKQB.Mtԧ(Am?MApD鮀uzmEbF	FȼDƤ^>lAtSz$-6~LwhR:sJ?_/_9u5Jw`Doț4s^ĚKx.2}<oo#{ e
imX?_??'hl$W}Ro*[qu<A?`&[#$|ya<L>zo=k~mE	e]fG@tj$ME<	%kŔ/ϽoQFT{^pǦ8޳HGىK
m>OY,?əV^{q5xfwG+72>x8K>qkL,BZ഼YL6t'ÁCe4"oS8cLϏALB[]YqWFA_q
çgGㅑSWڍfFs"A]u뀆R'g)6̥ǉ/*w2HaP#j	83%BϓD%#P(sj\ۄZx(?@ 6
3uܗTHR_#qCWJqi/#W&=^S'仸_X6]W}dӾ':[M9k>ۥ{	+	,
p#&lɟ	jg@4ٌ/fߚT<x-dttn+
ub]FτT$c2ϸϱgC
'YRq'8U>yFB2ѽo}|;O-$]du!:đ
a+C	:w+k!j_6)]?Q	|<:u7^DS^"R_+fb!yRR{ G~W+^ni?Fj55t!i`vTbVg-TVԲn
ȝB)"Y+nh֒hZ=гV):VYk벖a
MѕLZæXRg)Y+c
FLѝFMѓraHݑґ#ӎ5&G:2XK^G9rıvJMt#Gkʸ#rdα&4Gc;!di̱&.HXk4N:  ˱0^gR@KfFXt&=rɠ0 ˤW1#LF1$f2,Gbw86$.1I+bGE:E	CPd\ěN9"&r$nĦ&`&`=MO^a6	aMzeJhMI9*v44&b}M-M@BTfBM{dLXM@BF-Mz1& 	aPj"AH4&MuMVòGDqCRp>=RbȔ!8^.Jڒt+Ed,q;'*S
WR| &㮤/qRw%ePR^[uW&]i`))\I.qHJ=K"chY6䠫r
!Wv
aWJ-qO˔+>KoKic("eՎ2rĕF]o#rԕrKڣ2J%LRfveYvb{֙<=p'mH%od8o"ySѼI=+JvU)82RePv:	BA`0pL2
LP`\~rPeJIR1S/hGЎ.~}
l]/7_=t^:A S
H{NNtC # t: ]q:NmS$σHo87PKQ%
  d  PK  C:U            0   org/bouncycastle/crypto/digests/LongDigest.classV{|U?M<_۔>hHiRR)MRhV݊4bIJ
]?]53κ~@G@(>PF
*3,cfjK8e=s={/Ǿ~v f{qkh"qQh*nbMM4!	)K=M4Ƅ ݡ *_Ow;\UQASpcs߄`A9t3	*np?-Dm]e1hW#v-.\@A7ww5:`c  @o0rh0Hz6n5~Kч2f+T7|Ng[uۃXJ-^W7jY_66 {0J.r7{.5DWez}oֆq^w7w]IS*dN=oYPc9q-
O+z}7c{=TL(So(yz:1:6{+	9ż{;]ӲbZO?'4n㷽s,_h_յb{B#q񙝳˱k7<DF6~wd0sZ;VonHLv4_t[{μx=ϔ+|OwOj$խ_jy/8h|O{:9xv!FwwnWToz]%t#eXQͯPΏoۋd<IЖ
{uWVolݥۺ-a䝇O~~d*[
Ngnv|eݹ|,c%k6GBg7W'wpeϓkjG0?S6.e
.^A|g6L͞s=Kqkl|ӎ_ytO<;yт5{yѰaUoF5i7;q4Vy}B^~lϭsg<y mvY٦_9zϺOD*y##燮?'w]17G??7j<U׽/#M~o4W_:1uG/ofۏ?ׂ{fx
}w<{Txϼ;S:_ힷ%u!ɭy
n8w߲\՚-_m!_>ݵLzzЃ[zJ3t{i2PjۇL+e{;	gz2AA*d@X	&dd8 y
|jZ$3A!A\hL0
&7A.A5Lz̀x`b0LsMPJ>>?|ApKQ&C/'##h	8  gXβl
F @!H&H!H%iY%X	&a'v`/
[EvZhm9 !KYX=8

+-e<x|$;%k\%(E(OrF3~l%K%k1"Il0z
@3jP#91JJs8+q8#lCaV>V~QҨqϰdǪc%[Kͨ8H\diMf'.b)6a6%΋<'.+$."کv*a9uT{	t@jddf%$ՠdw*b"TiSV%SW\RJyNe*;*U*p*TЩ4RSiWr=ΦNȤ]NeY2TǆNSCLQ/Vu$$㟋ue&ld):YsʦNVuld):Y{ʦNVlP*rlpo%t)ֿPg5tLQYFQyzZTiaUP:2L=ɑ !및Q:
^,ĥПS:6Gc-T3{>6ߤ`γpY:Y#flh	Y*Q:0\/n`.GC
)Cc9}K^!+hw.܋H@wjʒ8KӾi}D9bbIVBxi3G6
:"5~
IG/?1JidBel*h]+<;<\Lp<1=v~^LczKvk}0@#}~{StJUr2f4Ţ#~@S,eT9$N0)EEJM:DN桦pzj6j4n#5;ISHIKQ;R-IK0s#Z0˜i.KZdzI%FpXY'faKzq%fnNId.ܡNNhR6Kftz0Z6r`#WOZsQD{#yP$X;E/k!kV1^r&v[,,Zxܱ&tۨbC{U&OlB{JzUs7bRGfRG)æΏbZ?XP(PG?Exk.!/.œ];wnj6ct/YF\?743]V:mu]$F2jF*oߨX=ު䠐;~U@]Dv娔Hv(HtagˏM*V-Ur4[Lb*jZZZ-LdOٶ uhڡ^ko	ڡ\kG
N-A9/NCJ
 a$בL~d0)QHInFRGJ}?AJ0$<&%$Hi2܈)%)[jnEp^x&i\G/?
RF"mH;܀
)D THnGr	)R!M\fLG*[;HN!!lXT%ZR]HHs#	X^HlAjpUE/`O 5
 5	xiH^AZ$
~"ZfN2?PKRh?/
    PK  C:U            /   org/bouncycastle/crypto/digests/MD2Digest.classXWϰb`X躬
dw1Cz5[)&QԨ1Mh73s{;m*"'0Ė^d̐<*&tQ;x).[#4cLpb1uAѸR	\5)XR0HJ<C=k0޹>` 	yHXDbRxjtp/2:GNtZՑO}MdR(XEp˰/)ag'Μ8{9RiC8JjGUg
^O8R"|S7>Tk4<<WCs;
F|*_UK醤n`9 ;;5t9h\2K|A}G](j$Z\zmnǄ|a[_WA<%.]..=.
P|$k^Ŋj<8?&ڷ/FrwY砕0o%{z"cʙV;Ww+:§?;!mҕ ZI;$ID["A8$C	D;8/,NpH8K EK&yD>Q@M2.AȤɒ6("#'J	ɖ1V@SS҈;SIwD@K'i-mĐj}>>ymZ{b::jy'6)Y{8:AfppkDRg97HY[reΌ&茍(3FXL=2%S|%aJX)1fz$xuLgM2UUH9#{#&q)cloIJV~&JTK+b6 
vX+caUx54:9ڼRTWc+'O׋,Gӿ) h\eD푶Kdp[eui~r:3eh0j	[-2+X/v_$vص7iXDBkͲ8ӭ=KbWe)Vʰv`%!usfdQFyU
IH1BK1K(jyۿ?{NNU!lsmtҗӳIEFjvʢ$i>={by9;Ѧ{c+Lt}_b-7iӹrz4KtwyZ6+e
Y+;$Gqd+7E;ݔYIԵ}aQZWn^dg_ރ+lG2ȭw{.#!4ѷ&JqkFKZ8
.w41wcmJ;;]nT=Z\e<*R
_+[{e*N	V&am~R6e2+BX+;:ѸR	xC-T+`+VvCewܠreO({a7^Uʾ8Jje:NA9 (3Vʁǔx]9o*`r(UCr8+GO1E9*sYL(|<'+GUA$+N9v8ExDy<(JY	I8S9g(`+]˕e,G_e(F4<gxH9)Oʙ\YQ
VFҋUV4)r.v(8A9W(éje-ʔܩ	e&*OFeÕae=nQ.iʓ^
ح<C婸Qy"3˝$g:7QPG
7Ո*HЍ:R/PG]OKПSŐ3+ЛwSWjԵ)~Fnhj)N!Z
Vffn;ԭL݆{U8Rw`:u'jl=}5GE)9TҨh6 ڈW	Q3cq%CBm<aM=aԣxz5xzwQ۱z4NA,sxzkp"R/|e\MWځZj'3ԛxzQoc$|{A!6P
1P/RcsF}/Է8	HGL~ϸP+:Q-,vOdSڃ$/M5>h$PK6_P
    PK  C:U            /   org/bouncycastle/crypto/digests/MD4Digest.classWsU?MIiR <*B)%R$Q@6݆@mַ'u?pea3wϹ٤ipw=߽ޓ] 
kw|Wy);ʟ':8>ǽo\l
3<Ɓ#̉#@0쁃484Ҵ&Ic7spWgLPW/ʶ!'}(f!->!1}[[2ԧ0[ue,
q ϪZ:cJ2mdpGYp>6lhQUMú6FREOa@۟L+)tfbjI%4=i:Ԡj:`/	5cDmja@RAj2SJ:euRZ8mpY~m$+Kv,Y>e)D#j"IU9b16	viUWRpqx9
=j$SXՏ!xX@5\rfoJלFtS05} m8W	fT\GP# Nzy;	KPE ,w<4? vv ;%@+M9]xe"Got-~L{Q[ODOfbB1%o
jz|P.C:))*aCK}((sO95n
PmzOYp{
""$XEAM",c"<nˡBZ 
*Eh>$8)8Eid8#BbY7D N0@$x28)`ăs	RCi` %x0FpGu|  ^:qLI<jԭu=8*2W*sbW ~(?S0?yE
(/wP0lQ"7Ԡ% o.>q > ~qޑ%<\m,-F6fT#,
Qcbʏ6cfp,Ryqb&hIa
KL@Ya:f8nfW7MctSqgB	Nc
rZq{2,FPm6RJkj{JTN\Yrԁy)vLpci!0bYq/Ly
ex^
r	'S^jUF<ZF[}Ȼ_Dq=kqn
}|Zlژu+|>i`|yN+Ŏf'>5yH>/{U㌼>LLHr;vLa8qRڨhZO\M1*ע_SۛbzGϟ38Pݲ_4މo+//9-$Arܖ+
+тkQiQl$E,ŵf6yI%LE[nI*C.C&sXi[yʰUZ9[U)9ƙX@7?Rg[<6U`sXyʰ2[UZ٭e\eؼlNkr+W˪B:n5 &1j(MǨ4UK,ց

bC >v^5Zjq:~hn;ka˶_!-ovCqٟfPKTP  s  PK  C:U            /   org/bouncycastle/crypto/digests/MD5Digest.classWxTg7,KrF 	H 	G!OVAKrݰPb!B
ZDD+Z@Q,X+^>jABZ˫ęw"}̙9矙3> ?ol+s٢ǎֳgnb-yϰ%Ə^`wVlM,FUsl]6l7gulËIkb*g{=lo12;c>;"NdGVˎ;sC?|_7ݶMvnUӇK]إ[/`gEmbW<]9\bWk؍e+9/	}V3_KY~hd0SgϺ:~}ԡ{	W1vLK,{B`j;_\FGbr,;I`en1昳M}>:M{͞1XrW1heKh3W.mE6ô蒋2h
K}_;o:r lOe-&?fXOT4tǻxzDV/Ă=9rLNS~*Oi|?4~:O'qHKk7ثUDNreJvW
 Of]^V`-|a\{ʽ3Q,e!ĝpٝ\婘ޡ2<m},@,neɥJ7pkvǓz]"x^܉x
y))URPUᕧ3CSBLrW/%4+=
"'W<*9rg[³Orʾxn're;]]|7^~hHe/oU.t(/c,1gy̋MJbѱZ<r1<n'O.EE;3PK##DZ	"	DhX8&\z\=zzxZw/0 [9k^Hy=WnO)x*=їO=DMgRϴbP
?Rx1n݇$9;6רDgǒ9Ac0`,!n#<+9cC,&xlF(PH0`7lQ0	H#<E?af#x	FʡU`[`N]X

~`-G!_	|BO!x=`~2zބB(e!?vwYI:~RBGj-C;x&|??
kpySʊ%\oC/Ceԟ_E]
=D_EԋC娗E]џG4D5e&+Pw/>%D	!+;C Q㞀k-8Z<6)li(2lSqu;{;|m炧F(CN}8epu+4˥c(ǥ(t\:-pr܏)UdOЖ?O#m:4M0u:$(!4(6ҙ`Hu/~
.)yCZ
<Z8c<Z8rQ%YNb̄QRYLf$47Fn³bLT$bG	Z	9XkT&Q\	z|0g0#-D+\j/v0Z8F*7etS;<@\Aլ|qYW(-OPrh[oQcScT혞b_"&?Ov647 IoBdi;Kf٨<>~袥yd6ij>!>Z'ڜ	ĠF>a&sMB^*wMxÜ/W$\#ڗTށTATTZbN?$|ݥfi%QF$hhMfUtIFkVl1[^hIliP3V=X_U[ҊtuHwU##ЪUg6:s+43Uf#Z3T[:s$
Qhp'#&Ix/)JbDszIbds1KblT85Zd:-JK/Na/1FQN?U^zA
/tQOKbIͻb0b$j{1(6,E[䥮P|Ӓ:-F-/so^U^zXuZ2PO@KݜJLN@F$1oc}%М1~%19ocqĸyyJՈTaTyqU^*K5aU
W%3HjY~S"U	R<$ј1D
J$WP:G2锩%8-:[Ǜ X
xKhg'ҿSbx;0h|CuapS)d؉&AҮ<w·9/iF|Q2hT'$/7ӻ˾9jזmB@F܄\i^B%!&:.PKNW
    PK  C:U            7   org/bouncycastle/crypto/digests/NonMemoableDigest.classoAƿRXl TZb4&EkBB4N[Y7yA=Go6{37oo? <V9}!i4:kEszK_`Hwx_=WP;,A@_k_rZ-{Bm^갻ǻ!KP:'Gofۑ7
vS~(z9Ygwt@N49VB="}{/N0B$brsX2l*պrV5V/=JzKHhDDV-א0Ƃ^%Md7QZ9I#[\ǺZZ6ljr~~)a:aihmDvO
PªB;rV)տrB5z%d;f`PC&6 F1]6g`Еgjav2)p/B'(f5T_[Ab8XhNg'wUgNEΫgPKf+    PK  C:U            2   org/bouncycastle/crypto/digests/NullDigest$1.classA
0Dk5U{D7P.3i-!T\x %10z? Fݕt[y)#aZ+ykjk8<w@`HvkoO&^CE7)fcd1H0JS&PKF˔      PK  C:U            J   org/bouncycastle/crypto/digests/NullDigest$OpenByteArrayOutputStream.classQJ@=Ӈ5j}S!U؅4%;iEA➙sϽ=TN#y뢮qS:CGOܰPA+<bk~/tZ܌U'Vg*}D*AFmƁ\*_8ntT\zm!tNc?NoT!ovD6|'UJA$ s9	CLF(1T箚kZA3GĘdM/`EL`Q"&R$qX&G`0A #K)as+T<S`m'ݧӳIu]lT@ZT0K8J~fD1eZ?mcqg0NePK\    PK  C:U            0   org/bouncycastle/crypto/digests/NullDigest.classokPƟiuu-sSldn
}13Ҥ$JLp(PM:A80{/{_~ "YٙCNo'#MAdPDN{x8 %3O?'gCG1gXбcP:\9[ky!YSo
PDfq0ٛwxp|?^;060Spk̐xJ-?.eUN>CMovlgSߤAkyb* ȫPH(KXf
l.C)3GRKiG֠v<G<dh\{%lRћ3ϫO3>yq	
D+-lYfs\I&4c~JY}Iԉ͐-Ib5Ӌ+"Α]ΚZD!hv	8iWWk'/H4FKCk2\)PK,
    PK  C:U            2   org/bouncycastle/crypto/digests/ParallelHash.classVi{~ZF,Yq#;jRyI`!)K#i`QG#=M`-Bh6<M~@sAAs\v ?{={/ c:R[  Pj`n!n==H7Sffa6ϱ=9*[^L ;4@!St[gdgGhÆkضi)V$Y+hA\h7<^+/|`
b;㔫kXeJ9lpu&es&*Yhuic-sՒqlԼU6l;k^)h)XnիbEEǵĐ1AVH=tӺ,5vzYzYFȬqF(gxfɜY,`>=Ǐ9ohsrQeШmrSqj/829pbfdΨzɹ2b'9\s+N3^=`-OdkxvjdEmq
+)0fzF{x\!ϲ{QR.mdkLvrm9b>#V}
Ѩ<ŮU,5z\W帴xODOZ%OI̫Q9TQVѡSœ*2*V]7UPS.Ϩ*'dvr}#Kǝqz?[*LqwӷFL6|jxVz6Tt.W]"@rɃakx!ؠ!ihc̰/i&aC
Mt5hxY>5<f
@TChh18ãhe3'05$^^aӰF3q0ΐc3"Cb8`3L0ǉ((Qen/~((^PexG?f)~%1~f#uqa2CxQ_ЯhD3їU>rM:m;j2YtUA$]'i,hwZmbASB&FADG2*of
EF]zRWZD,~F7v,ޙ%<BBrQOL-=9Sz<Sb{gi)0?oMゞ9IGetJi"ZjDO¥YN[)O,&z~p|b;N@'+\g@-3H#@Ze$K3k,<rD]뉲aWu74Hioy{'kL[8}886Ӊ$8WwCX"\7Sb$p*]'ws~d7Wn|K7rila
PEcŇqrjlGڝuz޿v? _ĔЖ!LQMd3kpΆJ+J^R櫰.ے3}rY(ʕ=)=Ig'N3oH!vǻ,%ynQZ}dvI[epggH;$y}EWlw=q\! 
ILk$zxwF쳍^u˻ͿE'OǃI ]?3zP@Ze7>۾
PKĬb6  
  PK  C:U            5   org/bouncycastle/crypto/digests/RIPEMD128Digest.class]pSՕ+⠐ )LsMdlCq6v!1-,Lp`[Ж4m~yh:uI3L;Ӈ<v&}tзz_gs~{G_ _o>T_/ovy}7_d>ۤS]]?<޼#TlY'@7S<5F3=V;4ҙ+*];ptDPOp}Gsd7<DLw3qϑ]$pFK
c}8"vNLŤf4GdGuJ)+T41I44Z`8-UrY4ǊrL8?Nc`8|טV'\dV8ԓL+
&PU4ۀ
rJ>[e0l|5)L͔+I4XS;h|nKS2z_cىeSwc(L.+گת8^1k]v8:=5U*b"=c_0Qi/KcxS,00>wcn?	L4a	]&<AA2߁}5gY)
8מv~D~gGϜΟmvbtT-iʾT!VwWDzg: 1X[86&^'قaЂn9/A؂VX-xd3I$N ydӰC80dA-	ǩwz(;`Ă/ISxN^":7H^&IdHFop>}0N
Ʌ ΎdII&HΐHΒ#ɓLH$S$$)I^!!y5G5׃0 i.1,6!)TNd<T՟ߏM4>yaEMMcbm/{oBFװ;bXX m N2%l
|#`p%ܶ;-o+	g{{Hws4=B.,sKS[]*6uzV;4si	.Ƶ&lizcdXm&pS'bL+D+9#Ioh8xɶ}"
)QP:`'C}@H;e#2"[쭯_HthIxHK&R `g%nyw%nE}V7ѷ*ő=,Oo)ߍvs%3FAzljceMG IU&sC,~!fo68V}2j'/F,^MTWw?cjmf:xS]`}6[L91'ztԗUG׬5u!;lÏCPv'A=7La=7 7^ztx0:|bt;L'&+Ia~DM!oQ,Ac1<+m$mǺjhfүIۯl4Um&퀂@ADlAKD+i*1$aLHDy_%l20|J@/Ud{xgQ;@p_|uP$^ߜA?_h05	d\Gb`-g {d`mD*ʑDd):8::C
0Dk`yy~7g1Z @4(l׻V~n&-hX$+]|
.xbx5usњf!3)R7;ko-T)˨
mBeJDʫ
J`yW*T^U(jfݐ&pQ#4(S}C¥@yeUrP^\(_
5"֗뗊j@UzEV$n-JP^']
JL^j&d]ႊjPEU)X^rU,+jׁc")r!mArdۂ-JJ5N@y[pm墚uv/~*TjX$R<Nvf:;>Tc(]a6M
)nN7
FxU
U#\	xWҠ^s.V|/]<rgwvݬ[bKۜPK/"    PK  C:U            5   org/bouncycastle/crypto/digests/RIPEMD160Digest.classY]l\G>wݽkozMHֹNKnȟlci{l5kN4P.POT!@+REH! oH}	U$*h8޹wƎwfcg|9;w揟 7S|?9ӯuhbQ/,DqϏC{4}n_?~}n@ݗuy
B,=t*Yj
>KE^QTqSC/
==qFI$qaG4PI\vlha
rZj~y25u0ud\Wrq[TdtMUBu8UVztb9_B34Mb'P2]ƁfJX<w6?WР_*JuQk^gx:v&*zT*O8'J~1?PʗgƗkJb-5_\,5lpDi:_H-k
E2WUzL;jB5_rHFӼ{U=Kh{p009_k'JzLBy+igPP+K33:Fg.d"<FsxJ8v7,^-ga|ݚ&`#݉`جϡ}uI2&wwG
sr67cH+X{ҕT6|lv4}ǄniBDDI' y`0HOl0~H82	HgM&t/.8G5s&Qx,<O$.HE_"RPDbDD%<K$HL(!1K2$H̓JZ EW0NOV1lN:ϗzcO:@dqx m
~O8hmbe=|hw<<w.P~y
`
A}.!b/"X>dmM۲>oᛷ_]α..[7>r3!j_~@:,RymQKT.2/6	ݹ
Ruqa#cIT_CMV;NcIe=4=\pm(nY?	ݨieǜmp;Jmg'|muyhizuutVAiE$*Y|+}Hέ^K[/ade[N](򋨚qހy#D>:d Z`}-L飷4B࿰O0gu1Tz)eJOr,0
0P>+=+^{ X*}#Xc:H+7 s#XZ-AO"nxdг\{`%OC&3L8"WLfL0evI
FY9+'A;bX~I"CFHU8v2T
!@r@qPaDғsqD6*`-
"[n*C9wF&oVT9{`RLߊ"."`<=J
$9TژAڷAN$Ṫ#v2"v2f	!i\:0rjrA;i >6"`ùa(G0b=9úJIM3M|QLKa]qloV\*h%)r%錴*
VVeU
65Tbh.4
-/V2Yc!U*5i[dH*!ޫo)]MǱ:)壻8SM'1R6!nI8ܨc7m1Jk|(I2k65QEYe5QnRVNtD{5ZN0!@.SP+%<nWV+(,9`حk+d&2ћ`t7	o'I5L]oI{5>Aٮ&)È*::M\坄<;dޔ7x #oaGŸ<wc\h<(,(ɸ*/
agiA
H-'6Sr\W$|!<l驈VW|Wyy'oH%CgeM1R暿I	MIPM?&DEFQ~CM~ l34.oZ-M%DZcpR6V؟M/-lx	;քr(||$J(:'RB?TNaÞP&C)Z_JY\	IdZtPd{c] JZ1aaɽ&,-x]Ioz0KI6X9.
Xb%b.q)}
-ߟ[qR:AP&')%c&h	lѥlܐ
UIp?n#ĚpZ+MUd._2#VH(p/D+4Cqi2-xCWp8.
@-h\@tÆOKP]r*%zX-iХs'4֝`ɸ>z+}#~
s`F ?8JM#|ۻ&=]=dGUnAǴwM+;*?PKԱr
  %  PK  C:U            5   org/bouncycastle/crypto/digests/RIPEMD256Digest.classXkpS>WZ!DRp0sMl0`0X)Ix4e!%W	!NB͛%}Qچ4a3џwd:ݵ׼:Sf=ߞ߹{[`%LǮ}z*;wկvL{yUiȨFkAu'Tw~B5Ѡ#Vc`_P$nWݘHГ[f֘ص>A\/SiĴA=m|܎tPvcbsGo][6u*Pi9A+
8su"2\k:C'9tC'XE'x^ܖѽuunWE#b15:PU؛ؿ/l\DD^ёr7]<Ho-Fr63¦l>C!ib0&]ڋkduL-ޒN+P]Cr5a-ug3R7Nr.ݑ̦0c_`%gZzGK0NU+$e=сT	G[x-lG
%\呦3Yکc%PjٜΧ+Lϯ5alw)Ǽ8в55_}XKsz]|+ 
:2b\zT|?
z
6hQ
6iY5XK,vGczl|l'z7?|Z3G``v=9ȆY9De5VvϞ},]"cn;
a%XLH"h"&he:<50GN.f<|K/H:bO''x`AK`
tu}BX)la M0D!K%G G0LPw'~1?A]8:B}"ALp AC7	"8L6?"Qc~xІ J;ʗr蹷g\wj#X

	j`GHϊvhEDhDҲ=G{A_k}?k7ьbPq@j,?	[sHMMg͌kmp[h5}?yZ%ܻ@xͼ4KqjOqjOL	jONIjOM)jOOijLjNYlW-n߄ȹI87w+
QáO`;A:t\1צVv;]I\)zn`94ܮ_`(%O60!x;_=oaF[G{$Z40W02H+@>ExSTKrDS
$ںOm4u>>vX y!%͚V8@
]_X%ira7VH5p9-Bj#j{2q_3Y?FL\
O)\{ =1ꣃo.O11)O.l=Xllz|ue	q$z8R3;\x2NF5cGfX^bq	hflN1E׈͊Xј隂;izӳc
bhv';< C00١x	Â&E8؂;F/I;q7q^.]=TqnScGKߵYFj6؅4)>w><Yy{
ګشflxdzjv6Ck6|6:5FYb%FkE8c#3x6Vt;յeUWqiWxeBU"K`'
^	ay"ZIy6R!acc' i$ri,rilYZI-~G;s	ug*K/\%E]WSևKpEh#"HyvRTdjc
ibcc\%V=j,3]gы`~FsqxZ07G&=z*ݳiL(Ojc/Đ<7Ogr}.KpuB)xgA*R
<O-N2쨤YHyȤl9ZtcyznOO\.?_PL@	RmvCNdBz^^>G"O%c5l?B<>7FO܄}X	Ys߄H:8EA)OFE4'ħ:~VmEYbS\kX^eGtBx,I+No]ayԒtBT4IW-Nt3=MӓKgMorM?-w9Ԛ~|k!AR
ŏqtWu$+~_k+w[K+p*YY9PK}$0	  F  PK  C:U            5   org/bouncycastle/crypto/digests/RIPEMD320Digest.classYkp>ҮV+yem,H8$$PPHL8qGRlؒ+))K΃CGi)Ld:t:әӡ3ǴսN{Eg{Vsw=g.vݏ?Φ?D;w/wCßO=}ɥsZhyf<1|soڞWǷq6ڻ<OlVohsnsUΣ ҙѓD;s{Q 5F'=~)KͨCؚ;0T_m mDn'z"A$KN"jݾu:|SVCCClkjTLǠ&WCɉzeX=X*V&zpe'_*p2s!3G4A8h~hZQ/`18R80V'hV(=bоJ_^+K4~p=V(vLq$+r=+}ɡB
{}P[a;Ppk%[5k Ժja#!oD/R5ziѽ0Lj
7V{+G6h:QkEAdDÜ\aQ'
F(l(F2@>!j<?ǟ[X88jCDyx{Ø4f]1$IarJa9rː*SvCsէ2r_qCL_R`KLdDVYI"$Gd5A"_ǂmD"Yp\oAȝD6fak8qOXZ["b
`)!2Jd?<Cd828섗 Ԉ@P{IJFN DEY"D^ "qx|'sD5eKeKL{G
cyk{ab,{HVA~Oa؎_ڛYY+Y{koem'k1\^=/ƹ2 }{
#`/^&
4p.]0>pEE[x{

[v} ߽j?MtF?oT#cԞԞN44g6h.._Q98c$%iun|8|!iֹ1лe9	y+s~я?!;e*Vo@[ Riߴvx{Hd/}x<M	d75M^"*19B]hguelǑy'_io`)3?RƟA~B	ZdKIMSS9QS1q*BN-Tb2))\Zg\?!_ڴr(p o
Sbf\Ӗ<f?[X͘P
tltfc*6COgS:l,f2f::̵lLKǡLGxkKТZPT ~M۸t KJ@og#lQ@7Q$:0kP&-wnqy/_'qG917rR$ͣOjDQ.EP(IB<H'ʡX e=yoBUN,͛ؓ4PjMTe*miƨx'cJmKaC
*GxVB)C ܡB"G\8ׂPژd<u_p!@%Q/fW(
٨ kqg<Qҏ(Hj7ԻdohLޛ֗5%-jD|TtF[Bepa*
j2*`hW\Tb`Yq
t-mw/KZ=7"fɳ<延io˒[Kb"- ӘTtJhKl)
M{hgaT14n1*|I6B`lt<1b2gjVKfyn$XQ2HQyّPVY`y)DULpYZ)0%\1[.]X.rXQud}F8Xc6$gxlߎ8Ãfh3
̵M2q˖xg"edR'")À*8Q.WE'J3N?H}[N|F	QLʋ	:o0&)Ǔ"ɒY	L*IV lCTr#/;./IE#ɖ
ʶ<A]Po=?ϒB, R#bjikuX]^ a?MP.UEx/46*{2L
ɰ%Sa658ҝK`%8&(Ec
#h"|]M)7'IʛiO⛔8T%%$)e1>R4AuPyّOUh%ת@啛PKvaD(TSHD~K
?Mҙ!MҐ{yK8qbKW켄wMė}
2_Wi縥ptPFJؾ˥/0D.pN[|<B	ɏbQ8s6N(G㰾ZE5P8E񹴰U	[p8ڮ8urG;te1\toqC<dOftܴCWĞBk>.=iٸZE\~
QXZV+˽4,Q	 {7g̡R
v/CTF0vW:
=
zu[|=_PKu  '  PK  C:U            0   org/bouncycastle/crypto/digests/SHA1Digest.classV]p>]ieb%]X'n6(ĸiֲ@*5u[?JK䡓v812Lۼe&/Lg:>Ӧ}͐sd	{={~VO 7?k'#;ŧ/g*o񹾝o_C>Ҟ`x!>Á/H$hU${γ4x#=4"
ҕ7v7Z:rrG_N<6x xxك܋8D!"qgMeiYp<ټf	@ΌQ--o%tۡhH<*EЭoEݲ:2ŬL
(*b41nNr..Q}T/ˍl|N/	my1zvl\f36hTixA3rJ/;umZ9nd*dCwE(V,N<ZE#")YHAwB`ZtCB][%Z|0muq܈kXY/`ݴKEĨK=vIX
:XMK:$S<ZE)"|C'ExJE8(B8HV3'޶FY}{u n%_5kwo S0|B`al`v%LE#9g색KS׻:sHl&BF%
H=A= IM^,A~IVhQJ%xN p$]P	p`[/|e4H x 52H`<AH
@,N0J##Ep1 'vK[,YV93OhAa}8x(G>|3y;nq6wT3ƣlۖq}ټ	/cׂ<r+^}^]GDc3D?7`-vUuUHwϗtZ\7^:Y (2f&M2iLB&ML,#8ƽԼÝc x)EHfKcReqFcPf,@ ̓d~,zO$ݺ3^U~&|0pޔ[ea'qFI'Q1JG*:>o@\p)Xwoʴ{GLӗRL޴Rj( XKK/*
e*
*q"~WDYr)e&WU
FӔEn4
Q<՟w)AQSK76s_bcPrzp(:x 5u.<WovmHd-5+L%
?{?dKA7ԗ`v9RsMQ:DU(Y'P(״;A&;JlbH!/+25U!a~&k!߼Htӫ[˪wjPHy吗5܈-(V݅,026`whxL_;l<Gi@G.]PT?L0л#{^Ĕ;蟮PmZ#zjAױWzu'+T5gt{]GowkVZXWuUZX_UZz|YIS#D4NSCDi2$+8k%נ bk$YjOtxlÏ"ѽqhE8i!W.EžIw$ODw/%#altvRx$=.z&8
=ˆ	U#Ջ	WUIτw:j!%dq;WckI<Oz+])n)ڂ>ހ_8PK7Q  <  PK  C:U            2   org/bouncycastle/crypto/digests/SHA224Digest.class
tS?KӴ}@$|ۦR(hAcQ4
ILR,kqO6Pc
|ppdNw;#ݽ//N9r7 Tl_)c}9*{{<<c')]϶,^¶Ŷl銞Vl+c񃟿ƺ?)>^qi;m;cf=	
,A;kCvJܽw{3'gf:LY̲=äOQ`9>P6|R@
OcY[Xa~=w4L&w=̶Ȧ
/)7ʷylAiy~rpy.k|y]̫6'zc6eҬM,}c6v|Vg?kA .s Zv"k	y$4E$E4nO*8AǪX@5EY9npN\[A$L T&lI
a>Z^ϝ1mmiZ1#JR5b4w$^	l
!{0&izVE1lTK`'&{#H(^6fʶbSZf,?5K>olFc-ݭ^rph]%>o4V
Ͳyvj61B1JjwyׯƼB(ҔH4=k<h,-OP>+uE¡(/N%^z?Mrr9{7Q c7荸Io,!iKWB|췙/E"gNC8n`
uޠ/<_}DQ/nw473<̚O"&Znaw!@YݕLT\MEu,XnRK؉}wuS&ot5|ۇ[:!Ook'>f_P֢KZXM2$ߜ
vsc '
pp#&^
Xe ?a '| 
I@4|u p`),6݄VXb[`x aRx B 7jx"
6si$l' $<Eai3݄g	?B¯~ExMxpP$!%<Ox"!NxE8@&"Ï7z1#
?Ol<'-sϪp&AM`|ܨO	܇8k~"\7*&EެH"qeyKr~c)G~O9^@>킿#hBg-SV8n}	@EG|r]p	͹ oYK^8C/ɾ8<#$Oh<c$8י@Z>9]|Eo^$ʩH9HHfYÄ)IIIEiIvvM3c'b,S%gBC@5Elj*dIdܾG)V9zd|PN	:QUn4%	\̇0"%JB eL8PH)s4
Y߹HFaɧӈF,*%fѕPJ̒NяnP~%E?zC=Wq& |?IKoNZyM6@+hh`>&4ӄ2jU8H$M)~t4P]y0bO3+$U;`oi*?˪$6R
J<H8ثԮjj諡:bR/l"Mli̦7%vڨ5]pi.yx͘V&˦3F.8m5-]Wzљ&EQ-PSA!Ku&s"HV[(ZQ뚆v %Lf1dԸьCw-Hk_MUIT5;mTM;u:)
 3JYG-OS}B6UIVu;nPN'$t&UXZ@=:ѹS/s=&-|z.ZY\P;.@;I[գ8'P=KPR;C^dvȖ/||qg0RxԩE.-;därxR6l|vQц6ŤYk3Ii_aG-֜r*nM/엇x/WG%kS-)GIF,J%}E<`Cg?lq䭰SLaL:hKԝ,@;)FN&G*:zR|8ݘ8nLt7&fɜ<nLt7&eI;.ߍgˇƳ_R7XRҭnWoP'BtE,j
u|\@蠟 Nmt85\r8|)W;k"Dz^LS>d&OCfq#RÑ|$!ˑF>	9 9\Cd>B"-܄#xr$/C㑣d~5_˯E^UB."Y
H+,yR2>
YίB
nEVq	YūOCN3l>y5gȩ\4|x-PKfp    PK  C:U            2   org/bouncycastle/crypto/digests/SHA256Digest.class|SM4m$omZZ) 
ZXԄ4MSҤ&)(sNCg +`2G6>^JC?~y}{߽n (غ_,b'Z3IzPY#\mXm6϶Ͷ?1sQCks|g|OgrO=?sm/;(;6ͬS>e;+7a>a{7wbobsWڤ
LYҏnaR͌XF~e<:
г_rf97tܹWC
l!Vd9tVA6uٱZV4*+EMcӖeSRƻ^dO}jsڷd坏żH
k(
}&7GY٪Fa곍o]`yvVS.n1^[iWVQ=`
l+S6cS
βϙ]]sksjb	$B)a2a CC-p7b>sg0	#4-MjQ-8 M)GHv՞PjV}u~w&dF<
^ʙ`$v؃W7GC*ǻ(j~/FuAw qFg|?д fy-TjhKAO[WuG%
	U3ݫwW\:6a
pBa(+^j	zV{ܑh[]<K鷄C;Gx}~*Mu,"r2-~b7
B<w nxo_+Zx۳9zE76C8He t+Uޠ/뛢>߀u7˩
{#^Iꨯgx^TDhaNakEX'U]ͲMݔ_u6A6O6Rb$E25kLz̀^4Ж5M!ڞ8ʖwY+4 MٯjW6Fp7j		7n!Jp6VJ#	'Fp3Ba=^#4nFZam&XbgFfxs#4Z`[2< %<FNAIE%a7aq^!3(OA8bMI"O~E$' $<M!&<Gxp ?
c8Dx?xb9!_!`t;BxxV.p7n<F0ÍFC<%&7VU{joQuPLZXCKa>oZ "V#`D,[!M!gm_h޺$٢J$y-!$Zl58 Z9E
18N'=d{cKDN=dbGTN=h2.xz̥4o~t@gFz+Ҕ.@Aʐ=Bʔ=Cf"=Eʑ=Fʓ=G*荓3܊نܬRUlpa=I}r~AE\>&B|ecީkj4	SZ휂O4єS@q؜j\7a(o^ʇ0
uHL-]. T46\qFπnt|iTtðD)@q<:=VѥVI'7I%C?COѷ>nxA:lE%<OɴF+hqkf۽
$hp=?4dH ӄ]5cSk8+Iei&eh늺mٕĺ"S	WQʩ\TR
UTK)QUJEG&R &m&I?Kd}d]zƤw",]pbPs{`MkH>X6
ӣG*b:?JuVUuF(Zi8P5^?Tk1i]eJRhz=i@<4MeZu!4R2+8lyUAi*4L:+8Q+:( Y\yZhʘ9"(,CaAmkz.fh{w'L{ݓX7ai{
א<q+$0HŀxK>t/ 3!񇇚X`_9?H:fsRuME"F-mkcW1tfwaR*:[׵!Ћ2*ftd&]
:&YxΗ娺L,qtH3hH(ƨ,4I1TMD<JLtҁr:x`?jP<ͨ4)/@[avRKA[:Ҹ"|U>TNaC@@;P9|T^˗݁r%nXPЭî>TSЙGFH*PC?$Չd1svJMP?hPCd|é3N-p8E>2SqRRχ!5H/DiH#L2|RÑH$9 &^§#9LGftBZ	iYlnE㣑y.r/B㐣dh~-2_ïG^Ó\Dd>OCPd7#9g#(d1y>r#K$>Yˑ>9E^r ˸Y΍
3%e+PKޡn
    PK  C:U            2   org/bouncycastle/crypto/digests/SHA384Digest.classSuǿ,R-6l(MJB0PlR,XdYݸAtzuFOxP0gg:xw>Oo﷛a
@7>	Q@y-^PDLyCMVxt/H=#jD@jP@`#fdbf P(a2%{Gϐ.={mհ<I%J&n	hJ;KYNj΢F;9RK5I<CO׼SÛ]Q4
էͨ9{ع
]sqdJ-Tv<LSvRdeێsVz)EGz7sK"ے48<2NH+v?Քt
t%/{I.G"jz9U-5+:Qg;%Aj4fݡOg4֋ǅߛ_}97&߈?k8l]mʩJ={Ka	K8"ᨄcB:;9stmBm9uQGcX:mGi{{yuv_;k|WToWГFW;ڂN\'ެPN'p
;>h!3j:F=c7
2A8؏raseRF;c/d<A͌ 2Zq
/JbeʸH2Rˌ1k yL0A z0ɸ04LW)0 z1D^u/}/|U㷙zQ,>bُW:h\5QNvhO P
^Եh%Ez%ew6	_חְtɗn*}1~e^8VeS.NdBu~?xmbTb.ܲi1nL&Eڦu72ׇ/
D#s.y2]ydN@|H6ydɜRM6a!6N?yė4(}Ć(yH!	 vԏӛeSb
~
|f?	WqPK:4/F    PK  C:U            0   org/bouncycastle/crypto/digests/SHA3Digest.classSoVncǎqYjZJ̏'MPV`(eRѤ
M\RS׶Tia4io6M4$x؟M;qlisk?' UG^0k8(n4fFfpʱ
ZA_n-6awOΐs*1(Nk,ڕXIuک;w[]X_C_\:#J,vQa0ƊAZ㘇]6[2h=woD<x-h(֪whܠ[<׶=?
fHk"^k]0ԢD{}<EXNOtQx_7繛WCut]N4i8a^
o3Zy./2L;Lfy*t%O"
;߬ƼjiL1{KN#¿obS&x[M@A&a&II)H"aAC8eyGqZ%\4p$'ႄ8#ᬄE	\-N	ۼwN)	
Ol7ԅB:Cӫ;H]|4yn18>!%Fp)dJkF\NVq4ϸ4'?%,"ZIZx/fzWH]cU2AbH)qJGfW]!+;ٝXAC1eE':D0?NJSאCF|R-(tRI<Z"TX[RK* 3ƨPKK  *  PK  C:U            2   org/bouncycastle/crypto/digests/SHA512Digest.classOPuǿ,	RPJXvi#*m `P,e7lPJ[O^֎W;7O;gq{ɆX|oßh'~Pl8.$<N#< 'lK<@ӆeg){xB@yo/66P48hc3:''JbG;ZI_OjJjXn۩%MPwRӜE#8vJs\C#/a3,$,՗NR>]sMv70.hjhWU3xp9vcU>+n'DU]~bәaCJl'/vЌKq5Z(_{g2NNSЖQM7= yDn%P˯)ih
ϓ_t
)]>F<u5e2&7+C_XM#um (]T͌.%~!&?UΚM~u_m7})6]O[v^䟿W_=$Ε!^/pćcM'`stN]TCj願Nm4LgڃJsunu*/	m*{n+sY˝!mVgL.3opͧ&l	;P#Ab3v2**.F$Ȍ(pQ*Q~	/`@QD$1x]BÏF/kxa0.0F1"cc"@x ]	SC-یKiH0fz =HЋw瑮}W-wo3)L	z,@5ٛǨ]-xFjhL k(Zh$E*YY{
!CGҨ',]dĜlWQ$ڎsje>Ԁs^PY.xp/W]x}ti:~ܒ}G)
kNμP&@~[|/*SWU793*bL[dNfaib+YXdBYd:Hr%ҖFxR|k}aORK-P~AxHnYG<M(D2Ix?QWJv ٘O^Ë*_$*PK[XV    PK  C:U            3   org/bouncycastle/crypto/digests/SHA512tDigest.classV{p-8Hll%'nBhlĢء,3*HLIM_4郒iii@JIMi5wg:fBwSbnvߝp`58P'W6p E
a6}6qnV63$K|lNDEUugNYZj6`6jMjnfuB@RwgkmS]}"GIY	(PjL=ZX%cո>FTUӽћI^ru9B+3zX7QXګk9$t%ڠtEv"Q-9JYESI]S{+%售d)ŔX;{Iy18DtV^MS԰v/}KPA@6ޚk)E&F(0mDVRZwQ-&Ǻu#Ӯ֣M[H(Qp"!#T<3"z#Q9+2Ru9p]>[O)j-$bl49QGBQK
T<4eh4rȬu}N3Sޓy9p;)vJvPfAΘ&K_w;u%G@B~@N˳^1Ht
@RKfWbr8݊msҞb4$u-5g{)c}$cW7ivWA}{+WO_ݽ"qS~ѾA14{[vzp~c)<cػZ+:jz嚃G^qDlqVm"El!^	ظc!3q_͎Gh=7.6u$oo`u/¶pЭ;oc506xsvsmU|ĭ\hQ	~	nax2+**V2T1T3b2fXð(pC9D	
b0ISX 1,cN$`LNhIvq	!$:s62a4*aIh'!//03<Igf82|I3|_b8D:q'd|ӉA|Ï	'='i0t0|)
f8w}2ȉ=8DbzO{"^j0E"C.
KVZʒ,ڒk
@wV<yi_\$c#byb$y\Rr$[ ʄǏ[D~2IdqƟ￀3.P%q#	Q|1,TXOr@/f@oPbY~\頳6乞U#V_O[Y&5I${Z.3p<O~:fmfm+#l:ޠ)2j^!+ٰߑt91:Gˤ\u&ܢrDyMkQ|&峨	6&"ŤZZ6;qz,Ac7lϱb,αfqe>ˋYXNf1RSfC2Ax=1v׍حanDةӍ^rwuVk
l2zC	TC&Bsp:'&u/78,ǲgy.,/de"ϲEYLQ_<AjVAxlG}`Vkxj7#J5uK'ul44خylGPrxlf{`_?s۳3+zPMZ<rp/
̟Ǯ
Nyw,r{o]x4F,qa,\à1jyAc&Y^SCwPA7N+԰T)G?,/ =,D\zylg:O~Mظ7MKPKھ    PK  C:U            1   org/bouncycastle/crypto/digests/SHAKEDigest.classUOUnX(S:V*ERZ\)tvL&&&Ƀ46w"_43;'H2=sw9w?w oO"D"	9z4
j\?Z쌄_8`e@t?t{
ZheYםЖN-%7XXnspM䖦B)ZƜ+$ڌG[_n'2VJι0	݆ܒ[滞*Ȧ{rtԙZ	ֺ0o&[ڼ&$tXkv;e+%36PmQIR[N0n/\hSY)|	î_)ݚc<0j`B5|ϭi}/t_W0Ն|	C{Ù4b_,{5}Q)WՄf5&BՅqL2xCƀA	#sY\np醓[=Oh@v7۷rf%5yScNkaȉ5%]GDYYgU
N[AVg8CH)bAZAOQ
ZdQp!T03LyGA/βu]~TR81pb(1K2,0|[p#Mf03\eŞMO&ZKn^ѽlR3N%W!ћGoLg>[|['{)Qǧ[z0~F'tQ>Nw`c+?0c"bh	L1chE(=E=B|:LZ!k	{pDN2D"rcTeWܢ؟ 4Q(@floF,5A覦|fwwHO$ecu<FTƚ#Qĥ:o5.aq.:ֲhF,ڣ^$"5Y
T3#m1IZM5-j<#V-<p5S1L;	5.U9]y5u_LsڕUZUFLIIRHM?m_FSyGpsPKLX  	  PK  C:U            /   org/bouncycastle/crypto/digests/SM3Digest.classVsӝt|ϊ\';Qb[$v [t@։ә!B
%Iδ$L2hRNLL?e&@ʔ;CՌ>}I >
)WCOwon.jR<ã<
B|)BeORp&>oUa4
h8ё+'rS~Qp~LOŹR1>q]_}Ϊje˨ˁ\:mΎڵVm><|\wi9o#]72S,ۇQEyL4ULPb;{zaX09©1sXc4mŬ;m]@v\}iVM)|8odF^nmkpf23z_Nn y
paes#3nLǨz[w+lN|_w*;_~h1Jg9ꎍ)7F6
cp¬U\lD?>%Z[:f<A&H{E'"dE9'މ
rV8hL';.YSٴ,H:h,`fe`=4lcJ%ܵ	>D7Թ0w,LgDYn#S;	vl$$
1	^$"K`;tH P	B,s
LLJKiZF``uGT0
QY
i+.'NIP!8Cp6
a!
P")e15Q]|ҨPϱp9\@2<	=8
AwoX_+.6NPP*@=uCnBm
޽!	`I÷_9MI64y.݂(޺G1Sd}
(@GsAƱ8k-,LЌS`Ry%헏]4ʩ}c
Q#qm
~Պ#K3dokߟ!7^o{O6DoB\d21Lqp<Ȥ"߰>WI*OܗWG
p ~0y*jǱ'"RЯi-["`}@n'dmbp!RI$5HloHczJ+{xj ?g1ξ*GT{euH;QXYV͞A۱YLzvn"lgb8}ĺISR՞I-Xm>KXuN'p_8s*@9^qN4v
*CIiv:̦XY
 KWVAųeS"e\`ӛAءٙևؑևىFnvuF{.gCމֳwlFmCU]ET*M+mS(6HJQhͶ+*fCS=kE%VT:YYSJHנTTڋΞă2)"fJH~b	!JU:b6x)ek,wTYOfu=5zӂzfuETՠQ
5wu%ܼxp@=1wY"hO/o',JZ'[p{fKz<bO̔|vP$褨 V<&	Dyep	petr>WRuۀ`r=vPKW~>  B  PK  C:U            5   org/bouncycastle/crypto/digests/ShortenedDigest.classS[S@=	%(T.*E(^Ar*2:Oi$n3(6\Dqvٳdǧ/ UEnq3D\3Y9/9*r'zr,1G:j3<;%vZjQ勖ɫax+tf>q<70I&>1E2*˖cAżm%ʕ5:_	r؆cfrMÞ͠]䞰\|E-^J-]o|*xs뛙8ZѨ
g~nfi[PxQ	K
A5/Ss|UN*fB6J
WpAE	e2У.^OVS6MwKL/TC<tjU
h'Aᒄ$T
.W1
=5\a\4ń\Mc$db½q#&ܕp_lW0ӁQ\0%ᦄi	$ܖp$_o^WalNcdHAeЬ!MJ
Di S}<JC6}<HmȵH.\*;ta#`L(.?H`dscaqF@ă.x{ȾФfi*dyߨu"9B :(Yˑ_(FkC7|Vz2Z(^LF	G,̆B&k:<aGQz
:YfhPKǬT  o  PK  C:U            1   org/bouncycastle/crypto/digests/SkeinDigest.classUmSU~B7IK-ְ!,[*XesI6#~A:2xfԆ<s?0?DCw$y҅{,LQ.,>X+l>IH4B{~&Gq#a,K0V<ݴ`81XrnYeD.`*;Tz\
cd8T$*l{+~jöj[GOu(r]3rfZ%ItlCQxOMCl<i	CQ64nk?TKQjd$!ӍX
	v7ZԂ[~U^&
Qu}dYO6ÒRknID?@GcAƸ2ޑqMu7dܔ[{l׀$=;.Gү\K6K8jbZSHT޺WmݠLPnv~RF?upT^ksOǂQ+0ƐDL{`lqGEU0xvaC)؏mа@kIdQHb[_&1ϓD!CQ)g66`;IAiv[5뤙[<y߀Bl/_')g*[Mq@ߓuzTRaƯ?,FZ5Fkc>Þ}ǪTP:J9K]R1TY>P&PzYɌ73\1&I}EKDhL"K~(q',FS7}u|CJOmSJB#4P<18h2V(>YdС$2V٦#(q7χ밚$2cTQcPKF    PK  C:U            ?   org/bouncycastle/crypto/digests/SkeinEngine$Configuration.classN@ƿZpAЃ^L!&j ^86ִ	oFcCw'=y7o&;fhά`kU8.d)2t^лX 	Q,Q|ΥXOL/$&BOU孌)Y*So8g\D#8G^77<\$T3<.`nhałkB	QEAk*XWSuI闻%OS?N&*n
@6mOQHӠgMz@2ZF;?դ6l-Ehr]EGbp PKTP    PK  C:U            ;   org/bouncycastle/crypto/digests/SkeinEngine$Parameter.classP=O0}Nچ@Z#CZ1d	ԥZQJpĭ ?
[~w{|ϯ LV8dQᇣ~yo\&*W$FIY˙dؠl(9X
TF4c>*ZFЩQOXw2Q*N\C}r+r(̩_]R_}XhZش8B6,u6)a	{T5&TJ|c46YUQ4AFx@7Mn[}AhBt~*+:Okڮ5}HؤFGPK
*    PK  C:U            5   org/bouncycastle/crypto/digests/SkeinEngine$UBI.classT]od~'q[(dc[H-dk!fG
qĭk5\AӤ]OZ
 
8IV16$s>|s>^_\uEX\Ε\g3]UXMfr'X?R\Ĺ=
sC֘?~r`J@G}B\r}+\螧
&F[KuLyl07|3uwrt
7`4e
85[wڂ4mZn+`Զ6g;wuTg}A
^Zs^Zj~k;8
ІUuʨYL}
aUinY~sZ?{ek7DhgxIPZk^gLC	U"nQxдq:`
%	{H8+!#ἄސ1	o	8?v&MJsCu~r
kC
\5;0Q~SpqBH)x!\5C#*"
^@exQYN#
^ARې0QL%q7f>f(1L3ܔ3㘕q	d}!-7	çe9y9×2XbXqtwLuvʎczӶ&}#zl41(Sqdc<턴+PրTGvĊ	B"DkWwf%:XSՇX;L%G:X 	})b)ydvr;A.G\b11WZ
#j,va"
߃Hb1v.GT3gTOGbcb<I8;_MM:ocZ섌xO~z"!>(5MoTZ2/uҪ۽.,.'Vb+8E:ؙѾ_!"Q$"qUqi(pлḦn"Ŗ<#49\rHWCdPK]=Ғ    PK  C:U            :   org/bouncycastle/crypto/digests/SkeinEngine$UbiTweak.classTSUfHHBmC2C[I
I̖&TI}_x3:cST}ЇsnB+~s_>|`%<>tEM˞
378n	cl0b/7	6*n_ zj",eVSٶ/wjj\mfP$^׌ TM|̑+]hiGf,[dԭ%V+Q[{C&QIoh%2
^-k5,RZvUKFݮ%zEl+tcѨ謬Z_jꮀn{^MLSmPYU#tqDގlukNbm83[r3jv-GFHFDư32ސqV@86f'!'X֫/Ʋg6;Ys)x}
#` (Ax1x~(%a\f0 |E,0@
Uk,2C[Z{jeVHW2Uղ4=y[-Z3oN%Q~vCx
=CZ}C}N#=>A/ue
?#mǥqk?;"PޔCOIGأ<D{=[DZ<Ď-\ouy$$¹aě0i<<:syz~p#߹x]<z4r'_#ח&O!@%ud'n]Dxs(<0/^>O_}Ou&I^Z#!xw$<d(̻\Bt`KDҞ)_J<C#~)	Gr#DO-	G~	!m$2LH県h@Mq91y{ >ŬiQgY8
{k޹G y៴p5$Iv.G"B;Z0"PKX_  P  PK  C:U            1   org/bouncycastle/crypto/digests/SkeinEngine.classWXTGf90ꀠ +G_A:
B3ffgt1&WyI\1ٰI7Ȫlj]7m4z@1*~wWw]U}?_}; gM0CL`3A	F30v,1}tLjfҘ1A
Ow8HQ(Kؖϣ^t\ל+)tLДhA0a!<=,ܼHw{8=U0\cԑW44A]ҧ؂NQPۂjGJj?_+c.WJ	ټa5=[M
Uluad)6|7UIJceW0pe8嬢sc{旔ɿYxQ)s|ǂcsc5!gĮ99ڋ?(`^V<JнS\ $ovy<>Nc]UW(jp
xtQܵns4M3CKUtZ}LO`anV+hׂ8pז`NbqIWp>G!+pIK:nW0R
Fq9[ZYOvBTn%zٸJ~UVBc.=PTJqJԐ_=rICXU$z!f\WFuaeDeh+kj)FDq<[ui>%p)Cr_[J@:2Pw71|J;TYQ`*5=ba[pVd0&G
OnW0Ⱥޢx
)FtCZJkBR
D1Fqvz|vqzpzXPhy4wb77R` *ᰫZpB02lZ0aâڍaZR#12UZ ҋ8?>ET1J#a!>>.TEUX]!LVy?@`$&h,|s]ك?&򇦽O叾`a|yl7T<7}ĉ6mTώ,9!c/߱dմ5k+ʓÇrXu`]G΅I/V;6/_Ue񶳫;]xtƓ?|57[G}ԙX~e/?rnuh?S?vIC>Ol;ڱ??L?>l%G?]g'+;~U}^\kSN~fG祔wc~c[M}?t<6<!a6>烒>?s|UΧ<헪{o{pЗ>KW=Oo$\~kNmOoz{x֟l8}׆n+4ߞlO~ܺܶNwˋZ,0yk/每edG=z5Ӹwë;foJOۮ~O/֫v	 _̑`	I0_	JP"A$(`K$pJTr	Iˣ[{
It!uM1^Q
(wc>x81^$׾~8Qz!H/}u:(^uX%GV7Ue
N()	~3G (co"So5I=,<!ڸz6	0a0{YzZޒ{Qt2$b[HLeӯWnnohjB-!f5T@\ѵ@5cB0`B	&	j	f!	R T|`>d/Y`A
X-PqXDDl?@,p3Z qǌ0t#/`fLeh7]v04^ЮZ*YcI1	&B`#J0\3as6gYi0APjc%f&d,2WlA:A>l3|Mv#Fvq&L"B0`AA!b23gc&IMp.i32%koY|3\f	 3wlXe܉OYw?a/+Y>W8L/ϘO>,^7E0:,@$m
葧<\jzAr=0XKطR`OEGO63SoE'
S#LUEɆoTz&'[6j்ݗVT \5RֻocO:Oש.V\$2l<`jfT)i~8leJդV\dT5~Lie[Y/:eyha[Zcl%ND@'dAdc,$[XjFŦl(*ZF㯅Rb9B,'q	KCq+f졸B\$Vnp2F g{lowB~.Ƽ=][ƸF94$ߴĀ97믫F:
(1 x][Ї&s㣙+15׌CrZ׺I]	I?,NX;'3
-2rP<3ڭݺw\x?oeqekv+kv5\#.ūY)N¶ɵ+̿5fζ1hJ42xr{2oa7_MB`& ٻ!)s?\p
19=M0 rf.3)QZO|y@N6F')k9L
	¿#o!>
s;=a#w`naS2=9YN3zr
rJ7u~"eldhx
BwK-'xPO[D3+B9x}e{{	neQ͢Җ ~*Kἓ+wS+{maaeJ=ܘhSsP|7!Th'ZiY+`b6fw2Hdtre =(A{.CF;Z0SPU=C)-쑈Jm#I(#R{4ݥ5Jx:J{ǨAZ9#RYJXs?n^\i"!rռ~Q=Iv:vG!
ea
ixCM5BL р!tZ(IM4&Dh
_j<m=1ZN$W$bݳ#Dn)-'_kП11@Էfs,XMLC
mbs%:C?gHnOIΣjBO1'ccMjBc0Dմ&K1YF1S6`,"vM&17t,~:o0{xq_)L8`/[[ǰ&KbxiLb'O׋	Bq['tv:QKNǺF/taNE<%t>:Q^(mJo	RcSJb);83lp.O]
?FF?/;}M[#F8Bg]?&OfAo7Fo~$B&&A?)iǉW$A,6ڎeʾ.Lo}PKf    PK  C:U            1   org/bouncycastle/crypto/digests/TigerDigest.classy\?kyզ$IM$I$!JMҪE$IJ$IlIl	!!$[$ٷ9z^s~>833gΜsfU+O&bLD(c$Ak[hOChOskBmb2O5*&9;:^\,f6SIBf_$/u	~$!pnE^^1>a1ܶ77FoR;&*4*$;Cr>|BC""ýB"#T%P'>~a~~\7tJ@W7ܨ#qEZD.

e]l_$ׄ'-
{g|4""s-Zeo`'b""	qĝ7( 22:7+9tFh?noHbxh77}?&ulj1?_?Vΰ^JzSC_  ?5_]"k0joHat",BM;(%v

垂?~~ E\VVV#i/FsPTW${q*Žrb]>iJgSlZ/X5攞*X՘|OH(=]6lL!$;$<Ko{$r5p59zKYz[`pfH0O{͐hphH,ю7i-$t-䔳7qSok8YK~lXs{d>`TXsJm$Y4\ܺd$myLDf)τڿmk>־+Q}0h$kk*=҃1/-.'j^	_*"͚&?h˧n&uXmQ#>hX>!:1R_)Vx}> )M3ks(uvnTT,'kSڮ|z|ֿZ]A߿8Y Jo'b>;]Rb
d(lppP
bjKȅ
[?Tˬ
c Ii9
>CY!GN_g>`!])<0\ﾥZt{H5qJRdmґoտ=[/-^>?2*߰-Qg[[xoК%aSbbRظߩqԼ))y8us
dks
2'}nȜchr16I9cGl
W4\t
6e\S`pdd5{ qIua\ 3uC@BY6_s,첄wfjc8Q{d"Y]x}dzߔ,)0lJ'[.nzv@lyWivzѺ֠UsEknц7p;[WL<ݰu7SU"P"Dr/.5ma6= 9M.:`R<6mmc6VmsZɓ]m[ZρmgkG~F@÷$;6A^Vz毛M5v+ڝF}U>t,lĪ-JnsHȷrɐR-qb4 UCUءuj31o֨NÎ ռ5BqځUPcn5,59g[l?n٥39L9Y1!\//;wrr}Գ>Ype{CW]M^Ԍ7ރ]7>۟Y|)usZkyMv
oXd:
􂢈T;=ٕ8ݖ_]7߽wv3.s
vw2~sY׹A&ך_WBXWPgéaOأ
faOLuK	nOUo׭dմrҠ$tsƹz(9PCY6\YVػ}P{n5;JeH7eD d:.<Z=.\1#ڗs.췞R"70/ψztDk^O?rZԟ߲9u'S'mG3}jpcQppdBҖvN=>\]jMPRw_~<V`۹{ӡڒ!YfL}rp#3UTj=<
e6
yem6yCwI7'_&J%-sN#-XC۰^P}GnMï{e
5*vVpdodD8t"I]nG}s*F?cTgZxTlY䜀ڂklt>G"*&8:ĤyOv5߮J99{|E_t!G
-e71<h](Z>p֜`f.xoP%_0T1mUUew?2Jn:JEzi8\yp"fTk<3 ՞o;?[6Pj8
'lfoHl__8
N<(\{4
N||5e-N2ޫ_
'GW'x'Z[P"x[{)EϽԞ-ν GK/APNé#Xxs>=qATl9-9NN]sy'týepm;
5|g
r˻KÙ˰\-p'I+n,J)osN~p.fZ{C\|[voyEfR>GXځzAקN1Zǒ~k/Ȕ@m莂.^svihOԶ5	\Vo>7.TYiދP3j\8.*ru=|='KQuM&`Tp`,\<.HT׎i̽y`1\mj.8u~x^:.m.<J;\k\ioP@
.dwO:.\9Q[Po\p6su/O.[?+kgxxyk#͚{GspUSWnZ
{3CN9Xb\a%ѱ*\[ku]f/\k?o>k)4X;Otz-
[
YYprR̂릦'S}"χ/,Fuc
ONU]_Rkl(+QӔAAI/ra2Q<Ңpcq
*Oƹ-C֥{
) 7ppCC*	W-ͶcX-er#(iѐpȆĮ{QcMƚtc"CڸLЬkl֐x?v'pߦ &5~9	Xxt̀IpgfqUNwgLpPໟ],O76
w/=3.J	}Juu©<`Y:>Ϡo
Мtоеӡ9kf.'Uzet7wG}poq=wfýGݭТ[1spYhUjhh)Z>nQraꂧ_g<y-3cjZ(2vÃY=y拏o_VP>	{%vGʪ6£IgPJg0%cMLY?xQSi\x<nz-7AHXXh͌}{|Ηк	\?nxvRݓ<q1wxrf]cjKC**T&x&<}duFx^Cfx<voFRx6g+g~#gϏ.ԱֶsWo7sC?	C؁hj	/?-Rw필3W^_m{Mr|Sh{89dxq(x{c	YGgP>^e}o+;6~*&xݥje	{UсOΓMEB_N
=Mvj0hW?Vhϑ:jp+7Te&<xs9,޾7'.,M;t6}z
ke\e%ˡC/ۙTX짥6 ƌm|oc?ʁGȺkޛT=atZsh݊%ǩقS:N(rVX?eAΌ=f {)j9Xfj<ZZ:-]_JVJD@WOٮC{rծ_x?H4ra1R|,&-=	odZ[^V@wYF5tױ8 HQU:6}	>_߱@Ep>[$pϭI,eG>vʓN!K=lЙ]=9|;Ay@\sh|H=ӤK:)frۖ^sGڲ:|-<Q;|1z&][<r_;&_<m>_/3G7o _oQI|
q|i1SBYyUpceC]fN ??fysÏTi-c$ri6.:?bis^-x~𻭾vd&;ï5}MׅA6=2'mzǯt/zfe}~ =fʶ
	T_mbe=ºļG~7[:ޡ>F-y
yon,vf~#@T$
yM"Z-q〘؏:4ck~̺H&lь!԰O9κ!W/L[;VM}N	h`App1a@y)PK8To\TK3od qÖszʭuqWԃN[.(mad3hAM頟G 'ؗS ֻ߬:eA ,YQ?7Vn
>}-䋄[3p)&s"0c
e39:{2ѺGSWHoƅ1[sGuuu	{1X3H^G	v
	z9A"N `3=$54e׀Oe>Idݎ+1Aj*_Nz\RV:K:}.mu?q!7*S?͚ү.(m ő=S3~~޲ lCxt8 1>3>B}̷\9|*i_d+2<Ȇz1d7([cn=;r~
?OՁܡ:\Uh?@o_b
J_R׉ڮۂ|S탾cf)_	}u(;	}e߂*.8c5~KPPɊ[
Cd%׎Xi
^z\kum=_5Tҗwt|"(ִHwb@Ѝ\:?(V|^P|;SQ-9~:WG	uGBj&A+_%JqKdtokJm.CmVY)6}Md]m(/bGg벝ɠqf'|SLiA?3`-FVsA=0`\GP1$fL*VïM_kn>;{k*Eyga`j'P7^	٬͊FV5aB$Rahvl10ȃ\0q[t>j2s=)ڙtPqιK`e	ryF0رݞ{ÿ^4؆[^7{,A=}P<~/4oϾ1jր!K&ܽ> r5E㧽yx#0ٜiđg޴E7n9+Use>o>Q0tzrK{WǬ5J+Ӻ܇_Uj	Mri_@s`w?d[/f
x='%2Uu-`XAdx:V49$?}~,K%]c]
5BofiЊ+qUeT^3 pnx3J'A[r}ՠêkXyt?~:J/oz+þX@w}sIv;m,lu8tqq0-ܪq6W]p<zMۙwJ~;sWԘs!746<o[0ЗמׯW[t7;eZ?Y&E!z0BT]0bgw.[#~@/ B[N,>l|n
#]ϕ7K-	#>p)Fv߹sx6ZI6J[W(؁a*U`6n50Ĕzv0ꐩRdm/,Fj-#H4
cg}FN.ͅJ7N;y蝍H]t1D3u&{ƁDNY	>iQ300LZ'g~LFL6!x	yW2L4㺢or}y> nc0vzSbv1FLW-1.yL7M
rLw ,8`0|:`\Aøcw>]) lg~
f/T;fw_y>NJy?{~_2O%0>,nS
ߑQ̍N]Jy C}NOwg|37a:0u?2tqe9T"=L
Ðx W!$d<++-O
ljtV'(׌~~5N&D!.IE%Ϳnu?tuŚTɊ׏/}Ӌu$wryz,mQ)>0$8XɴV04F`V
w9
&J
&۞q&_`r<`=#s
`}i fZ#~=ڊ`s0^]#K`_SMxGg	)O6Z-ec]5yOgYkTl.[Lrʁ-05`As\``#}Z~KֻI>QSTٽۃm9^i#ۏܲi~~{-ʾZӾkzYL_|?czn&L>\ZjGw)WGy܁griP`+̴Vv|;kaVؽ$,tm'|a\Y>B=yg7}6x}?Voyg}q4vècg
F%7'cøH}xg+8jlcٮ"qEѫ;,+'΃YALD!0+c%e`]1?GmA#OӚ2VgSAE߾!Iu
bq༱뮷ywB:7ځ0\*?: .k
zTHRX0V̽5Z0ɽ`_j//n/5V׃=p=hMpmf}}Cp8weV`ΩϏsV=ܲ՗%mwp.N^T
^{܋w5"#3`y9Hmc^%Lnp iب.Ph[y#pwc7;F0o{F}<󒋛>LyW}uz	J&ŏԖ׀TM7xۜ'umJ&M9se{!S&j
ߘfP;$x:j<GGgL	юѰ֋`ٟ
u6%&^CH/+y=YJ}&b:xH?w@&x'S|}w7Z)x
z|<1|w><yG|2|3*q|jWޛ_||nM,	6 ~ow\~u]ذKeSfXГFdnf8,1k~հw͂o?TlݬH0o^ym1?_X1opX4aQL`[W`Q'7AJm `9i0{v0>LFųLt<e&,:`/X1ۼaqdN4c_GQ\t
6| 
nz1ܙ'A߮'uN`g{V&|}|u]/>~};^Ev0OY`緣 B.\!mB{CC(?xuqye3#oK#qNmxdS4cJa>Om%Q<!	ط=1CCqJS=!;Z}!̝_M!0ewp
{1M!
g=
"-Mm{"wz{"N{+\(O=@TR5([ZH=x
K
z2P,xWZ?!#x)DR5 Gh8{`D,sk`
R>,jUOw
ˮnc,LSLʱ1Amk
D7 1?m7UWox?1,w0>ASY[ V3K{WQ7i2w]+gv(^xIXz(_XuwpGib臊iXqp:a!NTW;)[gio .c3A
͇2[FT֬<9nV6#IXع·v{B|Ƚl3GB*
U QOrbCh1Cg}1!IbČ˗H֙񷯦EswhIW
G͟3>|2_-㦠_g+]م!xtWYP&䥉I|я+MVG(Jf|1/b"_͗&B	uQ|1/&4aD4aB|a#MhBRP-&TE^\W"o:IJPU)!+Z|/"/"/B"/E8_DEETR4[NR4GF"/E,_8X|/"/E]")B}/ozD
ⷝ"|Pu!"7<B[iYB EAKn[v>_yi.N 7չ8SE=EyQ!Aw rIͺGDD{ߜI&[q-\VʉN*ET(ߐm76Urtq?;(QQ;&!"Oqg?n/yX|P??
gP|pL=ݣݎ6̥px\t۹?pz'pG/O=&5Ћ{Oʐ;)-Hwr=IJo!U)GPR>>i..r	%@c5r
[ZUNTHrPP,mw^쿜k

{kŗ=FH:{ڨX)Ҏ6qٸN]ipDo#hF;FW)J;JsD/|j;tivpKG}prϥ>!sHu799{iC?v#?`ϥ>!sHP|sH=-l??sc¿n\%jrK&&Mm
&wmBTOMF|\x/:W)N|d?ggl^ן
3^a&k^K{pYQIq&Ò9L@W
u,KH"]<5cLfrh'W*f17
ݟ>oN4(jf7G;'_|?@o,o5Qd<,Vj/G #K4 }F_^ 	|}_,Oj|MI0f.HR\Zh'o._4݇{s
k\<??zDp}#WCu?lG<q/ܠy\t_$ȯK:Uk#ǧ
4$4P|0S|0SrrH B>Ah' _J'Esݸ`}7Y(^zgEstsOt~.\n&3sNG6p33,kaτ+fu_6ED~$F(ppYrLe81MĊH79!K6r.D,˅+BBY2 >,Yc\r,rї%p
`Y"KTrяePb\gEPfh.s.TXƑ,*
b\`6B$s1%"`InrCY,0bP.Y :,Ʌ.+B
g\`d$l
Y1X?݈r1u0f).ưD&,/XVHqa
]
0c9\g!sV/Md.&dK~ąKq1sf*\La)vذs.4 ,47ʹԹc~3Y?{Zp`).YFY,7qbI~,̅+fo]Y9,˅2%wg);.PƅKYq1e+x^.d!^Гo
eӏX
>Y"\`i,p
5bB~BX"kƒ\,a	~,E+H3'r)K}"%ݹXƒE+b9K*%weKc)~AVg}'VU>Xs5KU
|a	k>Xϵ,]g2+sK|g>SYs+p3Lg~|f|ndIG>3YsK3e>%f|na>sXA7[Yj2	|ncIy>X@ΒJ|¯|`,`|d)4BAb3|Ʒ%,f|a|4ʽ,>V~>ydi>KYڋC,Y|fhKY2<ʒ|V"X*68+H䳚<
}<ɊXFVsQgX&ϳ,9y>kY,֯%MQ|^bEh\Y@g'*+D׻q|6W|^g	,Q
AMFoO>X=_YAwX.+@]|c	ty|
K|

|Ē|>fh,AퟲnX9+@}6%Ku{Z,g;+B
K㳃s<峓Kub=Y?ݬH,d>|b|~fT>N>_X@wVˠ'KKua)t~$/K:T6Ew#XXLyH`A/X6GSFH`	,H`Z	L%!),H`	6H`	L[#X`&		L!$0!3H`z	9jDݑt3X"D$ 	L4!I'$	LDC/8	L EX<$	h!:$	CNH`&	H`܊fT/X`2X;H`aA3QH`>X$&H`aB-$P	Ly"L7X&"
	L"$0s		,G!iH`5ES:,>,XAӦH`	Lc#M$0h &,	AH`*	x!EH`	Lg qH`GڑBH`X	,BC'X ,+$0&,0QfB,0bb;",0fܱ*,0&J,0ٌ&t%ձt,XX|CX`e,0L2X`X`R,p h	X`&La){,0i$8`iUMX`JLb!FX`,3X`\hVVX`aXX`Lt`U,LaI{,0cERX`,P,0̐X`cic,0$`,0a!
̴bIu,0Y2j}[D+ӊX`X`O,zX`L$bb˰,TcX,0\X`L`X`t,0LaGX`aX`X,0T`b, Lc{,0c>pLaX`g,0rg%p/0Jj$/04"X`3$AڐD5f&[%$0Q& 6$0܍&UH`	L!L$0Ys$0Uf	GH`J	 $$0mf@!
,pXЈd`c	L#H`S$0&BE$0&ːX$`	$&Bk,`3,=l#H`a&CX%H`"	,H`@^H`@C-@:X&B\',p2B;H`RCCCH`	L$ H`R
	L"8,pX&ݐ"C$H	LcPfXXVCT(F3w`a#VA$J,"t019X`X`E,,tL><X`Z
,H(X`.C4,,Pc,,RӮX`*La!,x,@L\+, ,2$ˋ`X`
L`X`f<wcIa,,0L4b3X`O,Lf`)
LyX`A9-I,0cZX`UX`FX`a(ܰD.1X`V,0&u"e,0 LU`EjX`2,iSb۰B3,|_tq3b_&SX`a9hjX`Lc,0da%b7b=,`"{~fqo#0d&+t"/0L8"H`	,E«H`-.E9|G3H`:	L#ENH`t iC$0`N$0d"WH`&	,4GSH`
	L#EFH`AX"!	,p!E:H`A5*B
DSX3H`2܅#EH`ܑ A	H`R	L"@,p	,REH`*)AT;JFO$0\BH`R$,pJ
	,f($@	,L;!H`2	L",$0	,TEvX`=$P	LE#EH`	DXD>CIH`A11qC*l&+f
D(DC7(!H`		L3uX`LVC	ϱT3X(,,%X`;H\&_a;X`LcidcX`M&S9X`9b̨absX`
̔cZ,3]X`LSX`a<Sb+"F,g,0,t)X`&fڰX`R,,OtXX`LcL`,0c4,0-#>4bX`LuasX`&Lk`X`ZLG`X`X &`	,LtcX`Xb,L`E6X`A&{b=bD\&),0&kb(,0b,C,pXx,,xqgH&?PKo@'<  S  PK  C:U            /   org/bouncycastle/crypto/digests/TupleHash.classUkWWݓ$aP<JCDaHVD
X8Id`Ȥ>$aյQ]=g2\{޹y:~
	pG|4l4@,eT
|!b\K1;Y(b$n YY\]{80^ZL}A+DYC+bC,żj [.h;:-Eͤ5rJE*z1kڶeeHwn{z>kuu1m-emD픚z9#ExAm홖4b>2M=i	}~/a-c%gőTZF1/xjb9ݖ|2cUV%a%4շղڅ3Φ%D"<$$Ϊy99^?0~wqik0'*Cu:6uMmbmw\ɔm7qڶ}j{RQ(xnkK2d\Od|*㊌a9		ݱmtd{c't5~+7nMW`O[:
	t+B1`:U0_p.R0~(
>bvSp3
2$13̱b^A/
6R!La}E0 .q-0ɖ21|aaa3L.+a|1<	sj;};KZiU˘:.zLb~zH:"n]|JH	g9xрLzI1F:9A8֐W_z/R#ȨiG<@Vkq<;ѴV
evP)|}(Qr5ܨm[,85]R;R@*pta\a7,Kqt~bdk3r%vIxoɟG
Q?!^U~F"uqUUo]&am*5ETaMq//tlwc#%>3sM&AP:d͈fV;}U}|㐀Pt^PKM    PK  C:U            =   org/bouncycastle/crypto/digests/Utils$DefaultProperties.classRMO@} &Ƅ
-6bH=."@}cwcG'EjT~ ?1PAΛfPl40}4R<
%͏!rO}t#R(1Wt=TD
u!1:܏xGs?QKq0
65oe!d Z|zJq*CQݗgF`ln]d~e<CT[xߥ4ڏ^f<q0x"
%XMa-uKx0JNV\ӎcZZhHrS{<7EjBq"VӮBVU~歏m}c
CJ鷺˜.zgNz떶.[#M% PKA5]  J  PK  C:U            D   org/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF.classRMo@}u	(Ob@=@h@9o܍qqlk?ĩ@DH(ĬPRkg>??x]tNaxjP5Cn(=qCxΈc+TK>rz=QJ	y9b*]9'yc(;G3vx|a;rn%4we	<A[\M17QsEb|jwK1#_@ITŹԆLy(zJzq:Fr9?Pj[]KЄ
mbk&HeQvᮆ{PL+<s\|f;l<w>;W	7!&'tKL'arC@uil6髆E
kk;AZLP
9;4IÈwԿg,ѪzJP9Mjw`˴ac&+&
 վ̺ft}^,]Sl{D#^-XPK9    PK  C:U            +   org/bouncycastle/crypto/digests/Utils.classRJ@]Ӫmo"P*DE82
vTT(q'm悝C5ΐP
u~\rrm3櫲\*#-<!Z¹r,	<k䂻a2uu"s˕UZ
|+iB%|ʵ)^*׿<4
4ik%EL~i@+rMVÈw4$_1Š7G3a]0i!bӯFud1ҍ&V
OisRՖ0vpY(K	/!#l_cBD;_~=E8|-&s):5/g#5uL4}:Cu nПPKPڞ  
  PK  C:U            5   org/bouncycastle/crypto/digests/WhirlpoolDigest.classx^,^ `"J$!@bH"	h6&Y
ET[ZkPT{گn7[ZmR4w'D
>{̙}҇ ƛȒ3&LZY (H=KנboRsV0S
Xl0Zvi,n%%Va4lu-H81\ݰUhxAqUaKk*W!ꪢҢEUMd.&2]R"3Efs-(^TTY&J+*^D&l!siтeUe5eKKRD ʂkMqMS8`fIyeH5W`dFMm8Qm$0KMmKmohLЭh4MxMN`")X.aƢH}8F#&⺦P]sa4OĂHXSDi(Ҙp$
 1oiֲ`+SAG"?8B
DE,%¡xmA1OToXÑX5$5@K0(];TOZl*Zп/DނO\]G]0h	bmh@e(6\hEX9KCar?FK"L4
x`Y"?O~fY#1U _^8&s%hvۡ"(Ul#	](ζX	jp~\Rz3-hQ\l7R4tO[tW}zom4FWڨF6Z`"-"-OS
sQ9J?RlX8̜O8+O:L/cγԃ1l?k6Ɵc3}d*_N0WWGW)s3)4Ib'	NʢN!2Rdh[##2I/2U$ 2Md]$0:iH.9"y"W")I92;N8Ii:i]/D2KZ'ͥ2nϠfZ'!rM"En Qϊl,%9[EnDzAM
mt!%D|Yn#UlyP!н"|AO\ԅz0~|`K<W&p,	UI%"
͈LajspK&z
LW9#K<W<WK͑4Gk4ݚM	8L
 XhighNkN3I)"D-!.:'ɻa>tHi<\vptxZGs::]љeQ@Z3vչߘ$D(MۏsO{R&|}QCG|<YzhgQۥ[!ÚI_X2*yvlv{M馝@&Um]^j4k7vvnoWK{7]I{&UK{{pVxZbٴv|G鸿{.t8PW5?tn0	!uf/$G#*@`Ԧ
3ҝ;<ӝ)CwC<?%^z=%k.]RJQK/>(dKAC5r7y}:1TKAOc̟gk75f8\7۷xY-Bux&7sl7-(46P	ѓQa`U &<zmoSԷ!9п跦ݿOKݿOOgݿ跥Gݿ跧F?g;H9V##?hȉ^J2y
7Lc2cK^ sd.y%/2@\{?sIC$sRmܫrQFF]:;uEj@Sd6	pŞ"Iq4R'[f}n/Gw|Հu
}nN<DNqѳ8'!yO2-/>a<@S%Ϭl_oxb{fsξ7vrHS%XLn>gQz9lw[]Ğec*ne7.Aäq
YξS
=~5hCOǖ^qKqJ'Hg q[_N0r4+wcϤ7p\\<RA$ydelmcSbld}}!%r[bha7D[gen' f*wT[xTyǗW)z:]˫mn-+-t+P;φf(zp(0H'w@s:D`(/2*Eǁa +Tb'tɳ藀KOz*Ech6gA/2xE.V 0A_\DO:Iы'ANVt!`*7Ci g2Cq>f*z˸:Gov WN oStpWC@ћ@.EEh'-UX+e:r:i |=J2
]kV{@ +x%tۀU>EՊ<Z

PR
3ڄS
FEw\mlh+7A#F %
St7qC8],/FE 7)zX͊6(y-~"IkN6ZA:SgGyE_5۹BE.ܡo;yKW
2mޭO¯pHpǄ_^EO	#_xN
nltOnÊ~/Cy`
Q}ᣊv	w".EVpOj>Kc| 
uüNsG%aR,-<cSMH(|s	EO(:%|&_-%|[`>xyX	_ReVU
_2V?˹QW
G?fopxpH?'TSEF/NdWHع7\)-FǃG-?t[I?慂zj3`-_y]B&;^HLȥ_\ 8(<9xCpˏ>73]5hܧ_yzr\zkjßx7Ͷzњv:]nםedҷ+J?mLv<i2L{]z1L\[ʴL\1̈́2-GӳDPKG
    PK  C:U            .   org/bouncycastle/crypto/digests/XofUtils.classQk`~ˏ̺U]/	FLVQaiBRL(*xx&zu,2WoP&{{y޼߷_ &X{ 7쵶FޞiUC?0fE7
]'Bl8=v>eQsyXZ;=M%[y}uFIYn<&(YϣF/{q쌩\ ו1}4y0$pdKctq=]*~q9Ö	<m)R-z-f6`sF(.y5A7ޣ(OS\%ⷕ">RJDY^+GE>!!/cAEBlls%eQd/q&c.7e㡱,ÜOJkJsQ%[30:LɳZ\`$PKo    PK
    D:U               org/bouncycastle/crypto/ec/PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$1.classmOP
DE){/t/dkk$41!Jw#[k3"$ %N<}<'o С Hds]ciz)u[5jVWjn+mYY5KMC۲tjWYQf؆eU۴- z1.
Ì(?5J݀:Nt)AȁeqlFgA
?hɇ~sO]'d*;
a$عxwӷ̗+=hGgTKÎ"6}^<>cV+UC$઀kf
#Xvgl[-<$(Ҙw(sIXF0tqm5Ǹqp}w_7rp bE$nJ­z[DXQ'b"ND,a iM؞C.eG~@<'i=	>3db 	+RX:xC(CI>r49GvbxB	l<|f1PKxT:    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$10.classSr5>K8MC)дqn)mk
uJgd0aFʮǛ7O?M< Šx&$$:{.9t (X
v.Jp݁¦+R?01G!mFHچj߁
dX<e5
JXq"YT
QQ5$ըFDU2Y'Tj%U+n3P
c$*^AHpRF4"QUi(,QV%im%2Tc#cB
b[:6kDṔ ~Z<`>ULFL !0)LE1"np˨EV["PFrEZQ`
FiHۈʀafBJ/&"!lvE0BɌ)=0*5M>2Ϙ/l:&i2pY%3AlT~j:{>tV׻Z
Ӟ԰V֢\VΉ|
`w;M<hg&[OlF3彋m/9kTKzCn0ЩI'7&<S6vfpӅY>szϫo#tյ쓿Q^h4Ul3蹓i}W>uYDn?_EqOn)7j6Nx">F-<>l,\,Ux+%xVJ~&nW@%xp%3Apx^n+"EY2EXȢpKQJ{^u>ObJkD=5! [6dq,;p\s0r\o.Ø}}՜q~^K?=;'rFs"H|_:'+rc<jBs.wp
04_Au}yf5Oa
vՖA<ܱaWі# PK  \  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$11.class[O@ȮeE .^1vHBDjw\,i«H_HC>63s朶~	@@6WE7j֩2`UC⩦hfݢj9VS<F5[-rU=*S=Fkg;c&s*ͨ
9M*s8f:^zUW&(]Ųf*50-FŁupLڞl@'IQQ.94s)wCN0rmS'JV
S7i3"5[\GqSq'i~RȖ̽,#;ʕ+|N#{ht$\ӽgnPHБZ5n앤Ֆy6N~p#90ý`?6-C0Y*_D:;j&	E
xWJ7S=	A蚚o(jҋxJ׷]]-0𤀻rxV@\8%L(a,HBIC̼,s>YDa{QCac'	O	dO& ըIp` 1
O:)3օ$<BT0 湱3k'P+c9w*KbST.`tD&5ŐT'PKKŴ  [  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$12.classS[oF&I٭-$^l234	$n	x2ajcWC_ԇ>GUoVjդbk9|>ǟ~AtSJH1&"E:weT'vÀPqJ˔{NB=\̏"W3Pr7pxxJ,`QLS$#&SzNLHx<Jd\qC?(U5.x"sƎ$MMb@WK(C ʉ)2PDK`eyzRj^AR;gU]ˑ~T1ny7eEmּW^/<(yV7SmguدL-YNgzsS:)Ѭ%CoNTg͋DAB]{̋(:h&S[nھ_ups`|?e/3{cb|c4$3ׇc] 57kۧ5"z )3`rR4E`:}GG=|VU=|ç[=tp.ֱka61hՎ[߶꺅KmK\#XAp6)iY=͋rd~[EhյA
gوΛC콙V1
,ҫq!#|d91;oAx7|f=|	dhn2Tg_PKT    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$13.classSmoD'w\HRK()K.x߼/*BjTT-CNi|i"*Q$	<Ͽ~ .uB  !2q-|Ĭ29*Ҍe8*TG88LGVZ)"SI222WөVX
N8GKⱐ* "#(Ռ`(%ӈ1"|I\b:j}KZAlgD
a	ӈ$ 0$	s .|3-ͷU.8FI̙eyz!O`=\8sT=w\:gUvW./aSM'1YޔU 6:缾7jP<>V[`Ir6W˟2tyh<yI^>|.afͳo͢Q|.~
|kgHGtmU܋\\F>(Y8ˊI~brsT=fqW`ߧGOތZJ%
Ӣ,#=>;ڇu}=CC/{	=؂lðu{=|_FOz kߏ ."]<+]2]
+lAz@ ]kОos;c'P>_o`ͯ7VN{h#8k|2:
蔾|.RWPKѵi    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$14.classmOPʃʃ8da{Cº. 1DUcf"ehd{==?}@E&!|a`M\5U5Ui)&ЍM%KUJY-Ǳ*UTUjYA*YRQ64,S7N9U+ZyL075<E9EQ84qF11#x=b1#μvŜo>^&Wa lznF>Oc-'RO?ǁ<nGqp3鑸|<G5+Gn|-_K%/wR
&_Ij͖a$opW=	&[cWn~CNno*B'll1kp`,sX-=՗>z|MEAӏ~P޻aJ#	Kۘ ੄,䙈I,BN4
Y1xEI!26>Fk6:-7}vˍ"A
SHA>I@8	α-2nx
ixP/kQ^@жΠl'KLWg(AQHE5LPKx%~    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$15.classmOPʃʃ8da{n]H "v13Z!|+}D?x-={~{m@4Rifs{ZQݬ*vEwjzfW5f4kREJkampnU
dfk5ꦡԨԊU,0(Auj~|@v=EQFӴ?/d.gv;<fcG0"PlM|t=Wa lzn[Lu#'e]ٱ_Zr
y2OvDF=9WogN0w%1BEDRryo)]}S&_IjfKe~0R7؉Q	c%LH+ង٭O\Ʒ7rt6׉$ME
:ӋlղS}	CGT4}.Ŀ#އR=r{
1`(xNlncN
Ҙg2&,c
fI2yleчX H u|Dیu[n>E,&?b@q11-c[ps%fϱz_']Rb^@qkv~\@ݹ~~%tN DdZXSYH$oPK㭞    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$16.classmOPʃʃ8da{׭]H "v13ZvJ 2nK42lrϽs?}PE&|aUʊbPԭvYqMT-j膭9SU
[QvUv\ӡ _ihfV^1US5Z8VM)>o>㜢(:c~ļLtW^E1Tg~XgI7Xb<?	#luS˨r5a;O}/NZL't?$7VGxOI(3_qzH\^<G5+G^r+OH1_2
UkKZN-ioX`'L0%඀;L>zǞ򂆜BX/XB7yll	kh`,s昛H B}j$\ (om'a@n&$x,!y"b"f1BjVD!/fY|%Ϳq'[a͒ð `Pg~Tjτ#+X2^xC%ϡ^ٗ$Q.PZ9]"w.1_\+]=G>#2˭·ȥ:/PKQnE    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$17.classmOPʃʃ8da5aЈ!"jw35m
I ~(mD#3&{9w y!.&NM]Rc芣.[jdhպd8UbjRMg*k)T'(UrԚc1L5*F.W"[Z3+J04$v#%Dǔ`"&4	M0I;IS._F
vè);{qҦxboMS|m@r#lg+~JB݉he4#1y\!Xq%)ڽB"~&)lK7*VzIW:I- m8	8p]G^[`XF[f&	VYh2ЏlՋS	@OTD| {`bXPĂ 䱘"OxLc
<fQJ
9y,ODA0~;Yir6o4^SAN&L<r
,3c?zg_zG=Hfؼ45tmkvy\@ܹ~y|
ynLd
<"_PKޥ    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$18.class}OPƟʻ *N`uc[4&]&"Wcf-(J"e<={~{n?~P O!dwvya
^4K0Vy^u`׋VQT
ey\%ިb,7Ų7y*@,DZ5m>aPmǑAJ(u|iRGa}@hPxl'|TuhoJ];tc5OU
H>:sBO.;&E3>2ŁG%z8rG:/uh
*`L	Lv}dwյvk
eKV4Guj˩^`c-}'nym7$󏃘jﾩew5$1
4FAża0[QIULaA4Fដ,;QXT1Y~K^Ap]鋎2 ''A!h5A3yx@
{F1w?n5$i^b+'n&2˭NJce!<
)4T+PKĤP@    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$19.classmOPeʃʃ8da9k	CD^:fFk[ PnFfMιο?~~@G.Ry`OTDY3MLf)aay
Li":uK:n͵aUu\ۑmC4
U$5TU,ݒd6jRLtUMR%ݺXU&}
Z}EQRjwcJ0э^ywDM0I;IӨ[n_F
.QSxvM/$ޚڀFΔ+Wx?:'hdGbE$XRq%)ؽFDLRvo$M~-uV[A:(6	q&9Lqӥޱ')o!h,RoAB4Z'Xe'b?斮z7P(l	< JGU+`A<,Vnb c1E*y̢s(񸇧[1fc g`	v9l0lr3hd81D0fN&J:r
,3c?|g_zG=Hb
غ45tekve\@ع~er*3inLdyϤLPKʥŷ  /  PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$2.classOPǿC!>l0c+@H$!"?:fFk_Hehd{=?~~
#\#>AQ$Wrfjkj*dRVGhI`IUYu]U0MKq$[14IkbufSjuג+85TuQ!W4ߎ:~Dڝw]/iB@hP?lн$j	4A>uԠlw)g'm*zq t?W$7v\٧$/ڝ8	wXF#__K8w^??Scܣo^µNj4H[=0aI8`;Ķ4%ҡE0S,u#V$Iu.*a@BS
 a@kZ}0,`x"nj`^ gXH<c3(f,<Ejx̥GX$ sƬ49
m/i)L#}`7Vl&lY6{ie+\r/=$rl^$n-C.O]BܹAy|
ynLdY
If/PKyZ    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$20.classmOPAg > `ǭ]H "v13ZvJ 2vK42lrϽs?}G.=%U
jԔ^qj4e٨5TUMuT.mF5ŮuMdmbW̊h̡XE\Gvݒ"nEU׬0՚bT9>o}BoGN1?^BNtL9LtW^фF1AAw'o?x~FMM/eaԔއ?8iSɋY:1c)6 3ޏN?%D}Ix2ّ?xAaXq%)ؽB"~&)lK7VzIW:I- mK8	<xq]ŭޱ')4Kb^oAB4ZBvх~_e3-^O
$n >5_SQ
&yU1acx BCRs"x<b<0U3(E)5+PpOS,`>;NØa&aA@#1Ag
vpjGVα5r^xCYxP/Kɬ.mlH;/Ϡ!M2[aC`RsY$PK6Tv  /  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$21.classmOP7˔qۮڵЈ!"jw35m
I ~(Xf{=ο;2*Ye1L0X(2en,[sVU\vݚ-Wg+j(Mma*T5bۮTMGjE-Uҫa;̢AQխ:Q^14ipmb&s\xK}yJoΈq/v;:ck/y£ W~XI7xbA6.S嫨b5a;O|/NZ\Ǧt?W$VGtOI(s_qnzHB^<0+^r-T'w$X,MN-ioX^f0xn&#OnyACNo!h,B2yl	oh`Y쬠[K}B=j$Bs?}(nm=
09(۩2xC)T$%L!/a,IAA}<K͢4 C>Fo&Oº-׃Gvˋc
)Ϡ$ j\DKgXps:A=/]H.DCb^8Gyct4A!o]`rR:"[>C2} zGdZXCIHt"_PKˈ    ?  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$22.classmOPeʃʃ8damv
Ƥk@hWњCV$~ ?v[f{=s;*2!v	hRۨjš[TaTd%S+3LMјثQf9FIU-LK1vjU۰LjeC(%vfՒZE/kt!,4Vm*
c7^4f@r=GQRa3܍9x{yd|'^, $$^75Y
\.aC}se7|bS|u@r=huWx/<2dѶȨw$sB0%ȍޱz*D2C}$fK~0Ici1dwҸ=Gؕ[ߐ7
U|_m667xF"BvVй~_eH B}jB (omja7bQsY$䩄)HFN
Y0x%	sI	R>k-7|Vˍ"
i$ϰ& (ՄGϱp4:KC/=HD)1/N]|U$/1W\-AMVCRHPK  ?  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$23.class}OPƟ LyDE)5k#CDǔִO 2vK|a{==7_P!1aRQR%bȊl[uMPdTX*1Y=MTlY
ȺD
qĴ
ϐ<M,pTٰNô=R\۴5ݕB$M,Wa;}A&IY	ɒ ~Jrf?)hDo b,iܤlw%[0?I;TL:H>:sH&itH^,+Z8w^_ ܡsYQ\ģ2+<yL0_nn6h+
x1.85üʿ^`-q'aoE0e1}eWwK(`K/a,JFq#0i,
,0eWq+KȡDMaЉM&FIBHL<f`I6slY=Ž9P ^y.s흢vO=k=h	
l^6WOPݪMqglcj^;kە~n0âȆlfJPKsf}_    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$24.classko0_o\6`eڭ#=)Nc
b)u	JR`*&&QbCH>y p+(Up`VJ𑚔ro<541]3\c̱,pbԸ
c8oY˨FQ3&5ڎX,`(8wms|ϰN@F--9uLhLf&ө5̢Apn70D-QJ9ZLDswܡ(L4#EVv\ɫ0ʓRxarw9I;ˤGQ=Yf.6"y?
G(}'TΦh$t`HN.j&["zcmx$w{ަz_|(lʘ,ce\("tmM.T{aQ[;w/l~u;\tDz`UF쬤([boj$#S?*Jq.ߏ">=~?$ƫ*ZřBe\`
f`¬(CM%*̲"z7	J>qK2ه
N|"{aT*̠x'%Wr&r>SXg06O`~{>nB

!MPͩ}+_@7Sdk/V8L=֑CRsH'PK<8ŭ  S  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$25.classO@ǿeR *N`km4&E"	UšִW 2^%`䞻{._+w|$Uv[s,tlKۦNlrjjV*950T['N͚TV7U*щeMPC]4TW5jzPGvN	<gq\$L4#%FGLx7{EKXs$Ҭ˦˧Q0j)?80ŋU`+/:mm@qɜ+x?:~
z'6W4#q{fX8^_?TbasMH,Ⲉ+"D0W*om6X@*/
x1.85SYZNV?:
Ab>S-cH%Myø.c7M	(JiN	3XpҰ(a4le0od?l
7E1Ax
ヿ	>|^9Ž^y6srO=k=h|^6WNPުL
g(mcrV9*+ە~f0ͣmfJPKTV]    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$26.class}OPƟ LyDE)۷јlwm$`_њ|
?D?x-g{===_С1,`TQCTUtݲ4ԴEL%FiFaVkĴMBUumLPڨij;FC:cUݠcK7m'jh:!&V
U5lA;y$@|qQQ	I1?b^atLtg^E1Z,OH@>ͺl|5F-uxǾ'&{q@vnN\$/8	mUSŁ짼C{ERr{B2"1!bR|;z$ŢxitǮ9M
dr ng/h;IZ(l	7? NWn9p	AB#^(n՛P0E	3;f,*naIhʸ0od?l
(lhǋcCi0?_MY)}΀D,scn3|Ay\A\󲰹zVeJ8CiS{	X];ݮt3e>$n3U? PK_߁r    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$27.classN@tײ~#bύiDЈ1~qY-!x^qlk93gsޙs~ ^cU#7|Öbp7ZT-
=ߥgۮ|
O!~9`6鸎g[`a>Wp3P-pХ̴N=渮3Pc\xBq.9A`scùgqApN7w	(e/PJ9FǙ
d0ʢmY,'efuBY(.ҌZzA֖jfuNI=Cҟʐj+7qM2H7TF%%\CQU}I=WM?f$J)=]&eo\_*tLUp#Fz/J:zN0[oDng-)dGf	Uh*z(M
%|#jGEi7)aćP:G'5h
\C
Wj8Uk5T1_"5LcY4̢Q%
Qp7JsS2z	c>&D\a][i[kI"3AgT
uj5fcK{XpsFl>n}@ C0ũ}X>7>􍯘~\i~SXC }N_dVYW
MIG?PKVڵ.  k  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$28.classmO@ǧppg9YAOnј{H4WW3Gkڂ
I K|&;lگ? H	vFTBt5U-&
vd"!*	w2
*͘똮c:A;CSJ#;"T12+E4L*c
.Qe1ä%VujqXҰFRn1M2f1L]L5&'FvH  I*9c~xi@̋ 
VQ,@)l}7<]::cKN yI(K,ٯjN\4_bIlcF3/	+`BƁg<gF_?sXO<"\."aWko#[a ka1oj u;xaKIv'[GQ;LQ (n
0TK0_̈P^QEo0aQ;"²WVfDE
,j2C%VGMaĬ%I i0N$#pS\)`c*	\mէ3n^}~k8WNn7u3h%"PKnC훙    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$29.classooF':iIB)mJCK.x^m#VBr}FC[oHT~:Dq;;y3k X⌁`܍/Y|?#X$+mɄQ0c+4q	LcNٮ9]ɜ0	d^@PzIxRD%nJ;HbTA䆞yt.?E
:SwHyBT>WyHBf{N1i/X(7R/@DBETms5)&mf纮co:yFGmmVeUm7y9j7ďu?gySVw.Fv<(WyV7SmeuCD[SNg|^zޔέn1oہYh^N$IZ5-{<ꉤf2t;e:8:O:h`Y"Y1[(7Or7j2[4zv)`g>OلS	)5rR4$"(wbU\顇{5b졋-uMZc&>׭nrD}8uoy(tM5)l}iI`
b5o`i^}ˏƯssS+4_[[:p8
a໇/AD6z4L4tPKP9L    PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$3.classSrFR!
4C	Ďʺ468i:tf%;J^0L }NWgNIg;9g߿	ĖUE%*ಂ9˕	W\zWשRFFj%&uI
56LMۢZ-Uk4̆ݬ]x-֨^a=1K8lJ="3[ͦ(k؆n;]F%,et}nS1M`!D3ƻ4%]N-?p(
fp,]0	~vOʂNȱar@
OB&b[sx-$DTu/	g#	K.x
@g^eA':7Iȅw'i,{(ܽ'=͏ `i6K#]{j߻Md3"ƃ>HXYXdEyKb7N
uOt<GI$)d{oώd|(#DƧ2>q]
KVnmgI?obҞu	U:zi?(`?ߌoM(/B~mL*>>WX|xb~,?x<}p|)^)
j	cryރG\\*nR{*n6źe*ʰsᨨUQŗf8fT^[<{JQoҔ ߴ8;H$fW *QW\xr!nv幹!2R?=]8gvg#D|_g/bsCT:C<r5Y
ר?>RgumZ4C|u:Gm!⨂f( PK&Zy    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$30.classn0OhaJ:le);M;-Ģ,Q
iM,o7Pg[C|+ &`́Ň3(X1!|b>"$pBK_0
O97kI)aH
|!e$FX!DPA+0k>'a"1C2QCe,(-E@0XC5F860"	U1_ƑV)ɤmXpjBjLIlf8z/7p4ͪj!#M2YRgz|9pxKd3@7u,It`Ɇl[nd|QvVMg^R{#G"?H,|Z}Y^zz;V1ؒ#(6yzQH:*oၨhjqڋU2T^w5nV^s`ٖF<KFkS#=hY?ɻݬ5=NOŇm=m'0Na/i>8TϹ0s..&\r8̸p.4pށq]lPņ<JO* YQh1;vuΎ.mÕ`Zpz<= &?6t>hN@+V0ngm,L9agZt>Kpy(WlpAe;PKn  o  PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$31.classSo4~vz@1~ұJ؎m
!NMbhb쯐3C%ؾVL$-ڑk}'~$ @AtaX.P-Xؠs$	N"ɘU),EֈDs)$eD2dgEғ"LjLTi1IhjCxSciD(m	km9Ibpabq%(,"#
J#RFB1-ae1BF`K4$3VTx}P3 R
1a9Q(%Di*bl06_Bnyƙꫬʎ\:=lix5!˛
ۮΨjߗE"f¬.p\SpIr6WՋ2tyh<z|{sq5O[|jFsɰӇ.q5^vϑ,tE۪ҁց݁w:n {?fϲp}óz:[4nҒ轋avzRB-!t8*E^F|	[{=|ԇ˰ڇu}oMC>Cv['=؄l^a؆\AރOp7p35㿏 E>+k߇yZoy(\efY]W؂Zß`~vK'po΢++)|ԃ 
|sc6SǣK'0:@<R_PKj>N#    PK  C:U            5   org/bouncycastle/crypto/ec/CustomNamedCurves$32.classmOP`LyDE)v'F@"v1-(_E$ [3̦99us~ r˕}d]Sn9*U\\Bd]7K#:lۮl;,V'S6LͰTWw
$F
8aDUjچliRjn견nTE#lFVL>,˿%My	G10v밄E1,[OH@!ͺl|5]	&<
ߋ68PDzI9W/~t>	%K(NW4W%MtIÔwhQ埈YJ͎5c_4yǍ<cR|;bdk4pԏ9斯2z5Q4$j~t| G]/""a4X(bŝzWJ"(b@,EĽ4,â
;wƼm
 `m{qb\<?I>|Y=ã/C\c;8C+{Pz:,l]Q޹Auz5>V+`GfOPK;4Re    PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$4.classmOPʃʃ8dA1H 	$DUcf"ehd{==?~~@G.!b`OҴuptò5TK3Ͱ-۰\r[V]ZlXfVt⺶Hj^sT(KVZŰa.:5fj5>$I9uFz	u)%x^ЄF1P~XI7h<?	#|uR囨Nb5a;}/NZT@l]u_[rG矒P$<aHL~F0w#KSvT>weCړI7I% mm(1&8CG[^Kk#`XD;fY2ЋlՊS}	CGͷT6Gޭ{cPTŜ 1"/xLb
<QJy<,M@sA0Z
V>l8r3h䶼81$0d:[yh+_3 ;놧0G1{x	
_g]Hfؼ01pmkvy\Aܹay|
yN LdY
Id/PKiF@q  *  PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$5.classSmOP~.L;Kq]K1ٺ6 Hȧ]hM!+D?x[hd{yoX#mbi`G+jݮ)ZZRӡ45e5c]꺎:F]2ŤnU5aۯZA+yMPYVz+4UsT^7xa+fŠjV(>ア(C~ļٝ\E^E1`~`Io?x~F4*Mo0jN^O,/\ۙrߏN?%|Ix+ّkG^rۧO)12ʎ-VIZmhX^c'0&ྀ7>zǞZ:LKWHZ$ɢUE9X.b6śY}	CG7tGޣ=$ !< ᩄ{	Kc61E(D)u"P/S7/b:Ec g`	v9l0lr=Xd8f10O
ߍ򕤙s,}9L@]bztI"uI73(1ryTnt$&7KMeHPK`  *  PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$6.classTnT~֖1:(nMsm:61"LBOԮlwpg!H-a,mϿMTಂ+
SpUDmi[PAHęɌ b<t,dBb4FEݺY
b7搆2t6f6_Mt=Ҝ&fw,0tM_kMQ LJY;Fkp+dF$ct5QMӝԲΨmDC!BHH%ٔZnm]'NtG!̮0͏3q?/0Ƴlr$h0?fV\Ci]v]K4okauk:$\b)r/Ci;<i& ={I7`yJP
[_ګ?/u'ȟ~o#yP/&iO
 \
/]['Y;#Q2(t7OTTo/˓'#*+`Iq¡lN}oԾ6ʈj&-ΞRW{LGNdD}f7F-tkwϏd|(#2>OeܐqSgAS7/q>mV+}W{3do*$ǹ,ϻӒ+>1ڷzkN8F}m>V#<$~XڮbdVAbYªD/Q-X,~aVpdE`ĩ`.^+B¤D⳼ldDqSod@D(	qDuf-{jy%`Ce\OXVgVANؕB(Sr3YJҡt>/]"%;Q K!˨k;q
R{^ յWh<.-NEY,-?PK[    PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$7.classSmOP~.:˔q[`L
$D"t13ZvJ 2%a69s<oh0H101ʚb!U(S֭R+TeGsqYQe]1ժYrQ.RVk媪YZI/:W((*v:e&YRZ =b+bk%WMf]Qew$r7V;<cю<aĐs/8lz1<!C:MX]t}s%7ԔޙJQ.{٧8'Y(QWn(VO(E[KAj͖da$Sp_&sWj~CJ.oӹujǼ5e*9XBg{j`NvT_B-M?&{^`O2iwsxA	䅈I,BV4[1GxEI1R}﵂㣠NjQ#Ȥ0$DqZCKXps:+_x/]g]B
h]ty0.!m_arR8J,_pM@#2M^'IjSIPKi'  :  PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$8.classUnD>Υ6&-4m6z{lR
k
ݔJAK%x]#SWxӭx 1vVJ &4g;geF LiP]
.kpE4x}qKe(&K=`+#0mfy^Q+܆x
	EnxECFA쀆Za&r򛎄ak o^(o4aˤL`&̈tLq/.b;
ylp#"!nEq예bOpL6iE#"sNјpFmMc/v(=)#
8b*p~/b07:R;,q"_Ȃ,gۢ@֘$\brmb3m6pb%ǔ'v#k"Ƌ,W@+cJ<R{G۬xnzZn^e)lPi089~u1<vvEDzU2s0o
UDc MZylЩN"3a{۽m
>e>7wKTX*T>UaN[*|zW]c{iwm|4sD=
oFOMd_'Eq'[wg'G<E}mu~zE~/n`)J
>|X``P
f,VIpIapl%Ya<@KXZAgy%Ly?!STA
b H7.Zr3rW>4o`12aL?Rgnwf!|Y#v3+Jٙ$@:b}jCX£>,vp5r|r\U +hn̎>wVVW^AKpy_*]Ir2BePKsIצ  '  PK  C:U            4   org/bouncycastle/crypto/ec/CustomNamedCurves$9.classmOP2AA|@`Чu
d]	 ǔִ·7@$0s=ww ,&	"2S*6sJQ暮0VV(ٚjNu8%U5[S%\fkj˨i[-MۤfReղʆUlA9SjZcئk;65aYVvKmH8^PFM7#~Ľۭuv^G1A'?x~FtIMޥ0V^4Ł*Z[j)'6k}JB݊xGdGk/Xs(ūvN퟈Vc7j7iZR+i4ebyf0XLdp/< o}N<u9}	A}pNx֨o	h`Elz-073՗л>z|CEa#H~PCVsrx\<!y.a+ a,KA^CH͒4C>Fcчm5Wn<"^bq1Գ|կm`1
OaK}Bv!U0$ŉKЭs(	r	y
941ԕ;(E5ŐL;PK
   J  PK  C:U            2   org/bouncycastle/crypto/ec/CustomNamedCurves.classw|a&b@.ِ
bL(
ؗd	KݸAb+w
XP
*}׫of3Ϗ͝s=sla;Dԃ1)ߤ&ThROL*6"ztItItIM*3iILo&4ɤ&M1iILnf4ˤ&1iILoҫ&-0iILZlILZn2u\d^\Q2XV}՛(=ǵgh+qe:LǕAqz{$0EĹ|HCݛ?eʪG~Bj,n\fuEIWڼyRA>rW+BpBmS&;=>wMjҚ#B۟(\η~aZmʗjq<ϝ3&rLbg/,Q8sGF<5`_MW38*^:_
r%MRӚp*M@/22^O[PX)(e	iJūlL
*K	<C
_$Z"<OeᆺhM`DC3̩Ug0sx_\Z!S1ŞKKoTfF
T;z|~yI	yH4T鮌߀wz%tw||=g8(tqFb:^$^ǋ*ǋxx/EuH"q<IEuz=&8M(tiBKEG"Dҡ$3cjȡ|#1`e#ۺ!
u>rP
׍Dj>,)YIj"> v~ሧlq~](ݫ|z{؛ަbo*Fi:ͧeۜuNh^^Aޛi1SyM>S1iMO7ti>.?<ڏĬH1ZζCw%7fn1Vn3vFTeH2ڠj
2Π;
1(jPA
Ӡ15tAwtAtAAAAAAOAOAAA/A/3\aK~#co|%s#%n{)gW0޹KZZ؇YW9$CC^֩G5g>{Ǉ%QODa2MM&g&3|.2hIЅdn.qPF2L4璟RY!stN0M<*f<Iz$$5݌NL
~d>Ncz2<|f~C,3׮~y&;u~@%*7n*ߺi,0L &`*0
 f`.0
, `)X(ub/b/b/b/b/b/b/b/b/b/b/b/b/b/b/bOn*߹?Mwnফ8'7]IvM7]Euӵ77Aw@t=M}d1Kp+MIVnǭ-vg5q	@6p"pp2p
p*pp:pp&pp6pp.ht : @ 'g0,rn^  @O(.z >@	pP
\	\We.jr LzV*tjZ`Kro 77>}> kuz`l>> [mv` {}W~ 5v7|
p~׹[E.`:D~{1N8te_Dʶ!SS{zVQG23 uZ'huZhuZghuZhuZ_պ@B.ֺDRi]uVn\k*`lbG+9:AXU
~u9υW>}C-EOa9]W+xYF^..Z$ɛDkGI9Ǧo?o&
R#G1IX(SPNF^4t7DQiWh*~k.D*7+y?ꮮ]"]Gmlj{^I,L}|/'[dH-Ke֠%+gH.X'HQiubҲ:>(7sS(msbRNb'?Dg+A7w:x!77Oj=5-ϕFtIjyf X+H-ίL.o94~eM}m,CiO,~Ҧ}YM_n6})n?k~q,~Φv[M[e6g[MkŽeK6/۴^;bqZ<֦V[<ΦĽgx>l$'5OSqk-lq,bVq-j6q,fvq-nqY<æ>xMmxMmxM96}.nsm+nlzSJS{ԦU[X+~|%7fRي=QOJӰ'+Xy5?{Q=MqaOW\3*~LA/8eس)~w({qGm8xyO=_hœ`;(Sd؎({Sa;)K4ΊV<{πQ|♰]ߧxW<ρPzW(RJV-d(hKzm%Yr1Py͒a.*r ʋ =NR4:e> p}uֵZi]u֍Z?MZ7kDZhݪuZwhݩuZhLZjݧ_jJ~~#{PKcC  "  PK  C:U            ,   org/bouncycastle/crypto/ec/ECDecryptor.classu0T7`1q16Pj«9 >p˟\^K~Uvcu*N:Pf"5ZvZW*1FPR3a9Mb&dRN6
/i~,HH(g*r0vQ`A^?0a1XPKr0      PK  C:U            3   org/bouncycastle/crypto/ec/ECElGamalDecryptor.classTkOA=-뢀gE@R%8,㲰ݭ)B-FO&(.ؤns3W <F\U-dʛiM
[neT ~z垛}t7bkKJlKuΕb5=	/%#T2'7C=N2TR:P
/ôLIBM$f<O8N.-|zcBOcEESBT K7yxXq҈mt+AηlUH.%H%=c>xcS%LIv+7p&V2㥹Z@j-M)ds+Jr[l@Z\7Pgz7iaF.*ΰ>up0ԄJ8B;~bYP-5@R?xT8g
Vl(^}E>O(EKhTМB
X(Cq&-\D
tYmR:\A[k@oqDM4Є>-xC1h"h#maX*]t<W<AͤE"n.B_ՔoC.co9A{/hX)nG7>btZH!yJe:>`&7.װ<Յ<cR*gRwOx
PK]  d  PK  C:U            3   org/bouncycastle/crypto/ec/ECElGamalEncryptor.classVmSW~$,VZ %*hm!Dz.6fC3523IN&Іiv望ssyw
%|ӎP;4"4]k8JigNʵFdR"iH#Y$sbIIIH?&C^u!<w6b925,3wϒ|yE2_r|Qp\nVCdIs
AZNWقNbP[9/8*I#	(Usp9.맞Z3
O1Bt"ρ5AAyt=I	z%ڰXwxZx\-dTf܊7N@k|ľFa
;ELui_=M}e4BU+&ۓ͓p\m[=˭\ՎBcv S)UPI/MVRqBGu=t㴎3::uqNyth85Wբ:߈>W5d/k_U`UQiR3m.Y0ChzJDa098ZvK?Bְz7wY
DSMQ\{r<whtt|VMi5M'A:|VZR`#cA7q5='|jg&:0a&CILRMJ6c7;0YED``P(
p ]#o >-E(r(Ҋ,H`Q%A3_CF/
\Q\WOz9;Umͳu8i(z(a":'$9eODkCMXϡ~z˱H|DCe1:{UW}Gj?\a#vD;K]?unbm 2
fzMd_*Ak*Z?܂-Cb,fug3*.	El^2=RBe1}`b	MUiu־+MUJ PK(  ~
  PK  C:U            ,   org/bouncycastle/crypto/ec/ECEncryptor.classu0T7`1b"O@	T^ r˽?\3v5=H4dJq-j%ho])
{7rF
%Ef3:Gp<\*rr*\7~K'"r.vIaIx# ta3E_PK]W      PK  C:U            1   org/bouncycastle/crypto/ec/ECFixedTransform.classV{SW]ذ.P>G*`m!Rc\nl'gLԤʴus7d 	i2ss~gw xA(0C Xg4mӻKϛOD~veqK1bhrˬ<tLp'J"GUy6e:8yW
Kp;㘶5\=1+,W-,[p"ᥫcBcYa0H^ܪ6n,YZd#gc[.苖%
ܚqՒ'({c3> Z6^nKyWWg¢퉂mSbd!
"Fl*AXCqzΩƎ+%t){.}0DgI/ma/ws)K+v)qn?C}:
ùn>y~m3VqMX"\9#BUPͩ<Hk>*ra&];
P0}(Pi1
(HYF:M4õ7!OėZs깦]x[hE]w-$mmK.W)l'}gLDoX@"7ƻԍ;ݹۻ0Lu};qZ8Bq(޼ba_8.j8kHq]@V75
pK[RbP(>p
erNCHaA;*.sq)XTĚJc/R|bwX
KRdT\BVe/XWK`& _i'OOz˼s(H?I_}gZCc]@Mm2A0S?]\U2x{Ii{3M&`/:y%5jȯ$k~*Hkn*
WhVj¬ZP
Mci
KE4\.Ʋp`"Na<_۸,U^1ɐ,OCPNA<L$Hsd:J
PK(<]  	  PK  C:U            8   org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.classVkSF="4ypc*iB `&}FdYˀ~MfC˴I>u?m0-x2g{޳we/v?e9w[D3ḛ"ם344t*;=ؼ/h:ggϋgY"5k
P[e%e,)tg޵OBLظ^`\m1.d:#d^ט?MCRB'
tXoAwnN	Ql#@iDέkz36m1ns&6,בp (Qj]uă
3G
PjQ4URdc-!r3qQ2gKyύ%*C5`fZ47`FQJk4[D92#Ϣڮ4iw閳sHJ>"]&x *{lWkfT;UBm2imlpsA^+c8)W2>2>qFY>dqAE$oA\+ߘQ	gl(7<[)[9*AՅJ}9xdB.5Jf 
_f_)[GԮ5oؽυ,oєv إa{ػ裍c$?<$B4QkoPOVlO[I[nJ_mE`00-]LE0q[;*aLEUH8!L0!Uq
*dL	{*L} fSЏ
"DT0+BZ|\0YRǢ0_(CaR
|TpOy&p@㻓ʍ9=gl>,
wF}tzj:'?@v~u(lHxזq)#}ṁ2Et?ӶuD8 
1Ϳ#G56eeNO?uaLrA،-}-e8"ds?H>}+#~ƺexbGX/	
G(XFaCP-X/$ٺI=Zr'IW_n"!PKhs,E  
  PK  C:U            9   org/bouncycastle/crypto/ec/ECNewRandomnessTransform.classV[SV/E$@4nVc.$֤) !\B0I/|"dɑd?kC˴I:ӟt6x2[#돿
U|_3<%kcsl}A1SVdh+в3Ar+|.i4+a.bt2h'twhs%EBj0ŜtPmlLqX33\=kТ1Ь17ט /=N̜V2tJ;ŵn,9Ԝv=+uI1re{% kpnEYS"bj)`bZ.Lw|CeYWLgHqh0n'WJʞU3eJuK6)'jc6j"EVT*q
Q|ֵ"3{MW4ݡ^SۮZHYwռC9Zvòw]Jsuw(aӛ
wYwӻrjUFqӥF
Ͳ!`^yxIzRSݶ]ʄREV$rI-{RI8%-gD)✈".(⒈EDt	89Snc6eLcӥ#/f^hL][7a;ꪕʙPdzPj4Boq6Om|ͱ}.?SDʑ.Y]
?KY{W8ϯ'ȣ*F&j5jSokFzʗi7pMF/<>ъm(8ܐq2Z0!CƤc^piܔ&n1ͥfdH9͸݂˘pÂ,JЇ%
ܗЏ9|Ap)>r	HpH8ܓJxJBᐔ0)RdZ3@]UJ` ` 4NЗYoKR(N!k'+poxS?z"VCv%@кDGV7ǍM*ZwQ޿oП8vݘ*#twgjaϹ53.z{ɗކ~E4	x)~WУ]|OxK_r0玀&'~@£'{S+y;0RgО{V'e PKEjh  I  PK  C:U            '   org/bouncycastle/crypto/ec/ECPair.classRM/Q=jZd66BD""BB+cҖџ_`cAB%֏i%:;s=/o>^ ,@eM˕ZYĺTßp_}j1D
7V2vg0z(5iS޼tl2]^38){R#vK)_ƀ Cf뿡%hp0vOwr9˞z,!*P`
)SЇacDh!)0)`*L[<`h6Ū4BO)	Y&^ghH>B|LxC>	3^;g;ۦkyEZ㣘htȷ*KU֭dޝRV+3L\@#Fk0ʮ)1K
{}h^|r7PKʮ  D  PK  C:U            6   org/bouncycastle/crypto/ec/ECPairFactorTransform.class
0M7A](~bliISPbpv|?%VW&r~,yLsaἑjWRJn7'UpU+-,
/9:3{~A:E0	_PK
      PK  C:U            0   org/bouncycastle/crypto/ec/ECPairTransform.class
@g4o=Fn%!.)+[uzHux"KS:eEw5BJ-27zETܷJ.ͨ.}s/L`:L
e{՜S.0!0ň>PKJ      PK  C:U            '   org/bouncycastle/crypto/ec/ECUtil.classRMsA}C
d`B$	hTb*CPUIm6Y;X_!Iѫe@E8U鮹sy%3̔+~dHr0;{mT-l}L#aIkyU:vSiiK鐻mOw[.WHTck^|zC%FڕGYRX{qD2@sIRCu
0
dTI3˭#+dFrH1=ngʴ^oh8M$L fbyI,0C b-4Ь

'2Ow]"rD	O.)E9|z0V;߬[</7j}gAMFPK    PK
    D:U            "   org/bouncycastle/crypto/encodings/PK  C:U            9   org/bouncycastle/crypto/encodings/ISO9796d1Encoding.classUs>kqQiʲbbS?[%XyH"Yy%)%63_f2/| Ph'~Й{ΕbH3sy{ιwo ^UR-}*|%ȑCL
DgQ#gIR #d]	
ajtHhb-[ds<Soq4?YHؗ+Nśy7*eo-Cvr%*ri帛V
Tpf.ղŪʨ+%WBk.d:NZFiQśY{qHdgϩzrmR/ByکP:lXôS.^6SݤP
\*%?t!;n>,|8Xf9sFSE49_	mB4cC|<7S)Z
zK|lTssl+:1QRl:?CǮr8kg=}~]ʙۼNNTj,99q豄7}W;Rm4杂7}:%:wx|ÙT``+S6nTkE[W3\*H^tհ[4J:JDl}	RYt8Z*Ye+
!j͙8GXcL
^VmQQЭGA
b4nM UhzNVd:| ?"];%E^Q?F<}E}$.IT7q8r7mF$;d{64xa?L/wvZ#{7` `(4
e8B87|,4po&~l`7N¤&5 0ːf8pᜎ2:^ÌAǐeb8P`pJ:c9ႎQ\1 >Ca~\'Tv9FhkTA]\<:WRЗm*
J/+
~30A;ZuhK!D}^gVKTðD+5TtK!y	c0e%|Q]^E|&bPC
:$h$kl:c	ǉ܂!gŻw# `/os'_;luBmwQٽT>E8{/x66dKxn4=o&>W7m܂U&k1c(JTO~ʙ3i/Z|1&VaJ!^5oRlz,>PV c[
6.>&RmI@3-><Kk5j\+ZR36-.g-
֓@ y*HML}	RMd߹8ԫWӊ|NIe!%xhY726J4#
/I$jfoSh+Ф
I-i_5ns*H/	>`rK}Ԗ-!_]@oKHYu9[XwSR|녣r;
Ill;Q!B]QӨrMu_BA+ĿvV9Gτ<lq-6bn6)~^%36n-un벥~/aXF(	~˘􌜉n꿣_ކJ
I
`O}מ)Ejc
.ݾmMT'n׳Lw^T~y:)(qA~DG̶`jDM]Hj*0	SKU%6~l!T}LA I>a]2
9 ^#4EbDD.*GYE]"ơ9{zjCPKY5J    PK  C:U            4   org/bouncycastle/crypto/encodings/OAEPEncoding.classVsvv>vX$_bb
JֱȖ,&hvg6#B>T>vPe!]}!|ɇC~3ZVI=u^{|'xSC^	=cB$A;;2VktcO
E	0#[9znxHtFBصj]B8VLGZWo;#exVm-Yep&JH2nQԫ{\rcnɩer1h&:-NYW$=gue3NP^[wʁkMe[mtpqKZڦE+_R~y[BN.j|Rjq<'B?8jTEs)NM|ZXv)??\W*NEAjAVGvnѩM9%E8FlSKE'Ύޢer.Ze׎
P
C'G'G'	V`UjIVNSn8J~UB
[EjM|9a~'1ۿ{{7O,VG>HN!*͚b*V>{TdUȩPWE^*h>[
E oi	+dGߞf9<h>03weT6	"`d֨;\w%qN=h|ABc?؆
6cA3q$lgl7.$
<Vf
t"edţHs3q@8i`
9ޝ`10^`1bSxS)\
apab1bQdqŅIa))4pYcQJiWX>GHMHʆ鐮u)=0hc鿀6&OhbRhUh"A%gzvT.HKx6}}"i-۟[1{tLZ'~2̓C~_XD5KH[D?HG{.#'2=IF.>*{cn7Hn}H8bH w`,>D:I8)x{Oq-l}#g7n)w]](eAmUȦ)!$	A[	*.4*ͮ


=fW+k
df B$Gqq[t"}V#Nm_D5
oP!'dvdC<ٶyASH325 6e[S8$$2E={	aTSѓMbൿ\W+_phǧ5	Foc^LNM!ٹ$DKvBt.f&;L4H|Hn4c>Y{w3JFG5ހ)4z4jA!.\M4Sk45*\55Q&
'".j2]h	5JP~VB=v`J!eBSMقv]Lh#B2fPf`S*?ġӝtQ]|lbWgߌLWڻop2nhaMSt_#-hjsh7&AN;4x7$
"]uTQYJMئՌ!ey AhŔȜa8ڍ
{_b
PK
    PK  C:U            5   org/bouncycastle/crypto/encodings/PKCS1Encoding.classVstgllGX4
n6.8
)֜| N":!}M_I
)팿`mM?e3ҙδCR
=%l >>v9K ^x.pbgA|!^.=S={X(?=E?yѿt^1-PP@mJ&G{|ogpH͟ PP>+۶^J%
\\ԴR96R
I!'&[@SjH>*#ŴieH%maE5!{DҹcX5:-7m0iѽ	=Y[0Y
´ңnS9KyYmNqԠgQ7&
z~p@~9Zm,KIEgKydPD.!hѴQ'fu;C74)öʹ1j8aXg)#[ln;S<oXN߅eXU?VF4Z*88`)u<dcP2-%ggvVNؕrXMm
tQ{%]('XI{{]6jSf(bZ֔5eIJ51-tikY?
5PUzF@SL.$U1<Tv.o؎e%UF+<I
4ǥxԙ4Q2*geKQ(7>(ە̌b*Q
5ݗq& *26xIn{d$d|QƗd쓱_+2*M@M+XWcz,''w*SJonv³FM8ĳjUşUYڭЮS]j.UWQ*I硩xIMبb"
{Aۘe҈(*1yu*}U[QTDРf&L]8"Ƥ_Wǘ	a:q&)&i&	&&

U(1+8
t&L,&9&6IQ0+8o*
Fq0e2[4ѤoVo*8гE+<}{M
'>s|R-:Ipه >	'T~TwMq9/xT\S-]W#NFvGbn̷阰wb;nd?Y۷ܸ꫞N7hSbWM&<mO3$Tq>졝@|S$,$|SO˫9yDש_؁SzwozQz(:L/8>q|w\f1<8Mq;WuJ.~H*5~#Ƨ.>
.;`˟O8rɿV%	/VYb}+seWBflmT@߶ku޵_i4dqh)vDec?"	zs? ^"_ 3x1,Ť)iRX\jKhK^GC%JnaU43g;$ٹ
?#m{	y=| XMC}QkO)UU-~K6?ҥVLK51MLpȚ$^)/̋LE
oXCb@$B&D%LYwZ:b P{ me6R\
),2W
'EV&Z>MUq!KB|J&*ti۸4ƾ@8.J
;C;
Ǟg4g$/(yV+rNy 	w!.@'J7-Qgpƣi#RT::'绾?XcIP}9eX	fM-:shdir8v	jTnxl[ƭUԤB	]-&kVJE	
 .:H{
	erּasH&I/]`3? mT/I]*~ęU2)-M7V+XAAL{!^[U}R_`PPK1ӳ    PK
    D:U                org/bouncycastle/crypto/engines/PK  C:U            /   org/bouncycastle/crypto/engines/AESEngine.classu\Uͷ Ì Tl;E@NVλ#|s:̜=k̞s|yǖwC_~}޽A!C`@Ϟ`p^_`H׮`Ѷ0[70bH#{ w;ut11`Rt=<`)]i;?}zпzfnLTN\OX mc%'`٘1%ayp!X1n\YX9~|iXrDFހ`}x%0mZ>H
l5+l93lh1#*W/?ؽqcؓ+V֬VGT*U׮'֭'+WL:3M\ZS-pvipyǎPZ8Qm[Z:njir]&k|_,[Vh5i\YZUg+V͚mM˗WWuΆ675ͅwԃ
,χ7/-g7s綂  `ku0{_&8ٙի`7o~۷Ϗ!ٜ,__><
靜RCGT۷ӳd{$d8L6?z x||ҥ+?
y<<|!{a^Ϲ|<42;
޻wIJ޺uJJJ߹sܽ{Z,PC|ٲCáRR]#ѣ#jݡZbQPɁPxhux?]dgSD,;<8(
j
E#o84۵k:4/\سgܻw&*.$B7@PL 5%Kh9s%=wn;}z3Qg^::³fϜ	gnlj@|ZBt޼!ҥe;wretzutqcȕ>iAkk7쵛={Ӟ, gJ1&gfȪSmM97P٬
;*XfkY3u=V
KEŖ(_QB"B"B""c˰𰘐`9VWf՛VƎUto1
0W͐n^!
P`|WWؘس_:f?""B:D{za ??N?,3cax4P
qЍ6	ūyP##bb"bc0jPxd-*BxdPD^un]h	`

},G]><4ծcTaݱjՊ1x_;,^&,;bn\tTdVlhř:,"*.֫M\۶,^1"7da8*{\V"Ù1x,vc/z+\v:T	
/1$"rנ
dLvQX\߮]צ}H:_M
bq*ąDtdZX I!$Eҥ:> \|ѡDEu
 sWQYaA!1CB|GZj6_)m`\xlm\1,M&?ŧv꯻YS7:2*$:6,Wn1yWVEemH|uYLLvuW>::sO뺁jT7GEG⃋6AX!1!-7]X[,b=>po"١С#_>{
wAW+u7&CM0|
CG2r`ڝaTO0zl1QQ`F0!0vР40n`[m5ag8c&Q&?~<S7G-i=Z`ƽ`f!at}
΅9w\k0/0p̛\e$߹,,/zzhBx_X|$,m,}ٺ,ke9,r ++m\UkSէ܂5fX`gX'uS'zcaq<G}ؔ1nԮ)؜6/ޘקm
VÎ-f΢c`W۹E`ba/{q}#-}6t%V*vu%R>k.Jի{wWBod
8B8yso6Lzfmf=;lBչ֭Qp)wFpZ1py-p%Dsg\}q\۾=r׬9	wڜn3MIV5p{׏pG
w7N{3K޳wGhG.Ǯzw³}"ǒrL-<3#3?ͿKW퍇;WOOsƍWajO1|x3~=2~Z궆
.I<%N{ÇgC>yr&؁m}nV`t-؟ܖ	f?['g0g
u.uׇT\]3[+AxxUȪ:),},8;CC^A7 ʣ1}-O! !c§ z0dʘdZؼdΐd~\YY=:
YNIj!+#}x_yv:x/k|<O܅<w坾Bc@	@,eaP-3jC_AÁtn
V'5Kݾ}?%R
%fSRkvv'A}6C٘7
\Ot	ʔ	o:oe.4hU?
U{΁j}
Bkn@'C)6fP
j~YD7
BEA=80ꟹ:
_{Ab]wIjQdph>t4[4OZyU"Uy{uz!pЦJoz}o_vur%|#4
@9BDЌGy6<Q//Nlqqޛ>5ëAsáK<MKP3g]m;v"UZnS߼ zl-yz?=_\
}T1iMK11[31717&&M,YL,1L9sTijP-91<u
|7gZxQ'$ƨHs:3nr6/;RLs^''kF)I?ϑ%gȬ3@{nTz0kOPj/kY1k_fvάAa$#IiVhf%Nbޓ|Ԯ/zGI0kP$Qfm־1fGmvz$H Iҋ7IG>Qos[6z?$ }L߆m'Q#O2d  $IF$zAꨇCHbd00կFqTǟAjF	2aNK4	c?19hw5Ĳa9V?ul/Ϳ}_ ο7*VBMoϭ4GzB8g {hGOwخ}kHzI&š6]M=G_I6'^Ktzv-.
.i3mxOz*٨^KyxpMz|:&}
<9RgL_էi?{"
T]6[5x_+Ӯ7n|vI^4{Uo %swkmv7SSlZ-?YÆ9|`.-&XL~>4}nkǺT8:Z<A&}Z}&8oO-*dX{)c[,~#[s"=7Jz}}x*r'_3ŌTgq5s٦3Ř>3}fYP
hquVG\ kݿm?Zefngu~|lmrZeӪT7SGuO;SgbjqNk/]qܘwc.LŘpW1#tIL{li8[jbE?D}NiZQ_;{s55YL'+h1Y-&} 7L:2}훖9|2VNs2Lzsƨџ}b+M5\]:|>OޣSa	>Mc4'EEkMT>UoZj +2wԛ[lgoC7ܘ/ߤ/^cCd7XSi:*nTw]zD=Cx{lЧzLո7M
E3V_ۮ̍y}snDs@ܨ/ʽQQBJIV<ipPxk4G~v/97:ce]q:p>HiwQ|vp<ĉD}NMTl':U>y,6$Q߸g[}qcc&MfgpVC+ve|e@	UR4Ǔ۫=̪`1rF^&FPYHX4k1,ΊOsصL#//Kb}<5k@ܬk_,guo")9y0SFwU!%<S
h\H
<S`83c{xl*DR0IO<?,<k`?,ۢo?niƆuMtNHwFoܿN}ϨbPdAiM0-.5&gLZM{cIW[o]SʓE5Ŭɚ6	K&UǒJ,TmMR"Ϯ?BFzJ_%%d>'ssUKJ骦^O#]Z|J	IYBݜ=KHq7[߳,!nNH%g	IYB=KH1X߳,!yHH%8%$%-YbOH1}Z{BRbOH>S\Ğ#'!ybe3}ْ!'!ybOH	9I˶p
kM-[SJd	)&s%uO9?ԧ'珚̿q&Wc8'圞~w93I?/|?iZj	;-n
4k~=<^cmlxO [?07 㑨&՞GuAq䡨N:.|+T7*aT{_P-< 55BMWP\T
Փ@MfѨ.T/GǣfQr_l,jv5?Fz>5jn	5@-M(AԂ<j!0OZOBG)ʧtyq.PK%R)ji_Zǡy
<7jEZ{VUxSԪ|6j5^:/Z_@סPkux>T?> .oZF(
sTڐCmנ6P(jS/ڜ@mkMP[񓨭)@
_Ŀ!6j[^5Dm+ϨmQ:>.jG^
5BQx=N|j4/Gqq|&jg^ڕoC7vWP{L=9GoQ3nZ_~7sI֟?#[
Jdy!|PlM6&Fdx:<loM6#kdxfܛlC6!«M/ȦMdy*Lޒ,;Wf[dsxA<H6W'[dxs|~l)_N![ǒV{dx7!~l-/Jw$[Gm6:d|	&N7"ߑmOȶ;l''ŷ]ld{y^}ܓl?_Hv';dGx,QIvo';N(Ӽ,oKvW#;@v]dy+1UDv&ӓ	dm>.w#d(|#>1@&{='Ȟd/xN&+>5C%{˝dGގ/OO%}djܟJ_OBO{ByBO~BBb
=;	=*8D+VbWŞ=w{++LW<ZWSXgBOEJ
=zn(<V9CgBOA
={z(VySKgBBO/
={zzh#{*QiؓS2^\Z
>|*TW3\紂O6hO
>||)SZ眂|
>|Z((lTESW绢sE͊>W}Z*X}(4VY3Rg E1>}
>#|)UqTs ^g:
>v
>|r+d
>G|*|l{v+RN(=ԋȂ@O	=c
)o@Okzl獁zNyegC$=
l硁zh玁zyd@Oz"T5@Nzegz"
$ic@R=i
0a盁Fzi瀁3z23@U=0@q=M
3Г@u=
23@@A=1#p=zrk癁VzZg%z!tV#8c{fo{^m{jYi`{=
2`V=7`T={Q1mg.z.n綁0=ih'^<6 5!v;G)jՏG#:ʢe~Dڨz'%*G	BRG)G|ڣgw;NWZz|鳈8~' hBNAENSib@8MI`"/VE-HE4F7F/
^tz4vAFҊ4rF.ZE]H/Zf<X%
f]P3Y&Ԭb	j615hCF)hsbE-Q]y<|b,j~ZPЪ+PިE;@-*rPa%ZJг(-QˈeEZr3jy؍ZQ@$V9PԪj5H@!V%Pk	z:bpC+wJ/V6Q	@E&"/jTT@m&f6P[-EVb:jk5Pn#jh`Q5DGm+
v$jDm/BP;5\4B(&FHQ5Jv"?jǊ,q"7jgAoKUTF&
v{P{5= ^"Gl׸IODŋd@*@A6H#,F
Ȇ&d
SFd#EmQhJ6F#+8Ql8L6A'(M&)(Tчl(C6]"!DWYb/l1lXH6W"'0b"QlXNDl#[*-Ȗd+'J1lp [-֊d7zHA%(J%*dDN͢%іlIMd#.d;NCK#-Ld{vb'>уlhLv@dK]=#U&?*ScM#?."?))|OK=Ԫ9ƓL='(%KqYEȯHdCȯIVߐMړߒZے]%#YRI֑վx P$SXO$+AT'Ϥd_HKJ%K$#o%INI葉L=I%kAE~7L!)u'DL+IFLl%CIY$9{(EbS"daR&I &Y1docm'IFELD2(Cr{ˤ^`&%7),dDAd	hQL#YOBd IF%#2yH6&Wd#l}$Ip%uC&3Kq(fg6n^'a9dq^('uMnɈy$#>N2_D!IFid顈dQ_S-*'Bdǈy$IV'adt"(-dt)+u$L쓌PA2BREɈ"$HlPGD@PM@jΈRS-;%kL (PIݕ`(%#|4QUqd	IdfR5,(-HKZIFRAd$рBNB)VBiK ){i:J8)2"n&RJFN	0ZKɪ-p):K&EDLN2%COwId"lJFǥޒYdA}%ˡ)u/N"<%ۡ)YuO"?% *uE!R*0UC#$S)yQ+f"J%ۨX*ESWR4D(JTU2)RW*YT KBQU2ҙU\ld+Y%*Ybd:n*B>(JVV2K6W!V3q/%SL{U]%:EZ:)J]md*/,PV
W[6IvB!W2-cVu'ۥTqW
WlBd{%SGV¯d?aMY=+[Z{௞
VdWeL+X{vfV_aW+eV2X_[+]nVFe
kY/u_z
촕
^Y+ՋիkYkA&O/PK%  C  PK  C:U            3   org/bouncycastle/crypto/engines/AESFastEngine.classIm4
4ڸ[
444t7:6}WnO̉#~"z3wIf\Z8mNÑӻ
}z={~A0GOܹ5ʅa]#FvڷĄ{~WܧO<LvzN}&~aV0qݘ3qb̝4)O
6=M1caI'lXެa;VWbMX5m
և^S`S6u֬T>cF2h<vjuOOEnÞ;aMpD8~}YGʔK%ڵprݺT%0p&NW4g6on*Lƹ[kŊSqq\X\+Wn<o7,)ĭ
q~͸ti -[V4؊kÕ+ѪUNxbE1<Wo#խϗ//+˅kբE5Jx`AVm!U:ϯO5k.ٳܹm޼0߿	۷/6M'<o޼ˏD폨/^|EW#_CO#O۷]$F¯_o"QԨ/|r)<8	EG~FǏO mܸYٳCHd/;2>}$ȍD'O!e%E!ݻ R۶S"ϝ;g/N(pe+-
ݺuo߾"QPȑ!(VHO8|xJ,ǎ@B⧼yۡ?@|Qĉ>X@GTʟ?ǏCYPС	-[T?p`j5goZC<yڢnܡ{4ϙ%;
훁IE_7idܹ5N4'O^-Ξ]!iTBԩ+S2Ohs.=sfR*Y4Dxq2DfX.]Z/@k[tU#C>}u?requ:z
׀׈k86]YmkgtcezҖWݝV<E??x٭66

iYg@RG|ڤm[
N6,21$(4$"+^!DF-Kn!6n8^:i.ICyȖٲ͒-_,sN$$2"3ϬXRI'Z˰͒
EpdҖì/T瘫{
oҶ/uSF=&wPvm6ͫ7o[M[7m]"mDdxPHNM]E
kښFk^w$$[
3X|b-xm*3Dz-gy}ُۅEy6CڶI9aaI#Z1*DFj,$O4j4,pa,ip^<'}IeEI3%51ZuԶE#eCC[oѡMpR$j?|MZ7CPp[!͂9?zXٶ&br)&H"KmviӲ	ˢDHr,[%T48jpq?Q2(2?/v`Hٿ|~0KAB#<\v!fDjiTkDF_='"?|_݁R9HvI0=8?3̈+<8"uEiNDth
hA(wiѻdx`7z7Qi=dHf>
or!"4g2^u}.}%G$3owg+V}߮ڇ_E_Џds7w[<5v̈́jRO OMBX p$1Ĩb^ 0Gr`V6ўT8c臁lba0pj/AcaPڬ0ɓzm< T>EDbp~1U`
`1C<aHC0z!d/8}1dH
C(714ƀG͐gi`(S-p?E8Èl+[0-uLW`bث0h1j8:poe~6(FG`Il 31oRi8_#F۫03d$FP#K>>t)5F27ak(F%]C&C1j^
#s.l4FkwL^a0O?aէ0';ɷx0 p0piw1LK0c6clc1۹r4媀
]e28.q1¸B+a30U^qBc-Os,\`g̊LZ1!bmL`1a LT*&nyLB0M~0W˗;םliLREcR0yĜ	&s1|Y?*R~&crg1MLff)VO{`Jµ1}LY~ liSmY6L~AO؀L1	1i4Lc6ilbF00֋btLs4GF> ;,va:S}L?h3bF0#?̨9'f0혙|Le&fr	1MdՀ[t~T[gaVj=f1)Ĭ
`vnYFE^`vs1٘Ͱ1{ sj9ycNS~*氉9B*an+Akwsmu.`-s,0ytQǤ#rmT6qlb~1w`w(,;Y]_7X+Zca~d`G~BV0X#xbQɱ
V<MXo/f?3mÿ`ձ$qX\K]%t"%'KyXw"ǫW獋bF{XL8*[e5ǲڟcSnI4ϗcyNrcXQd.(dV05
FK{wm:bU#VJ|+<\	`a+?֪Uª
X,,aٰj_߷XukNw;Vw;iMQV}YjbLׂXkZcMk0\+[kntj׉-Va-,O`Ye*{ag&ju`uX'>Xqh=Ƃ!?=_~YbCE~0FUl`~y\ؘ\;l[~ylFl߃,)ב lbMn&F[UlNq67}y[<ͭl3|x-l06Tǖ4WcK-5F)-t;lAlM"ab+c.VVr7l	9m簭mFcvC!l:ɼ?c{<vl[
bzƎ*V[;Xbq~CW4v簳ŝ`d1d/aF K%ckn>7v3!nFPݸ1Xcl&h7{:=6痼WxƓy`0{{`q Y/QpcfL}A^}
  
;_ؤ	W*
4/Ltp,٫`cWд ̬ -$ppAӦ`_?iC=A8fN:ؕܴ+p!Zp/.03f͚08|ddII$}G6˓#qMpCB0FQf8*8G+~űXl^V F16q`5fKAMqf8\
p}95N~'zELiq'\
Ɖd]p2wX9>?N23%-Z$`]S=zF)(~f&3=? 6y80)n8)ũ{:$Mr◜w>$4po/zqin$4-N_[Ap&Ydmsδ>g"	gKpg02v,SeٝZ,8}[	m̎s8hsW8&?6w_x;pA繟q~G8>~v~ev_+t}z7.dQGqg3id.
6q1_3\{&P#V\$p&0]K'9Kڴ%nj\b{n m[pN2ф˴pߎJܤ Wֶm+29W߾
q4cp9	k&ȕ5uAZ\ck<	5Ru;+uכ-&plF%plQkp6W
	7hq3ׯ7pa
79mIO&-|895}{b-hq;ɗ/LkJfo3A7=0npa*q<O6q7︛S0`WWeitܥ0{""p{ 9}_}yZb0ytTܧ{LTY< Rc40f-(0GM$oq	ixpfuGx=fM<V>l؅ǬY31-L^v	O'xdjǎx'xg<͐'<76xJsOI<ҩXVLS)x`:e<c>}`ζY9C?sM*x1sg`z/>GŋW`^:߾R3eN5 ^r1G/y	~^(WjX.`:^}~^p?\kfxly~5:y7q3E`Q9oFv
xÓo6UvevO`Ftw#	ֱ#{?427	gŁx=-+OCth>X?I\e|G=W#Ku|d	RA4G>S֤51)"r>
		h~ϙEz9{3?|#3->Kߞ=XH|v		k|-5*/˔y}o	g֧W/|co,;	he{3Tn&DSܻp8	1`45#`	8apaN7@ &hn>Larmk}|"\HN<N8κx,CgdpbN+͡`5t(vg}qnVY.D~<`ʿ*3xx	+xV\Q`|%e~(Q=j4/N J!C o/Vbi>>o!j؉5Z`#*{Q
5c87?`Ҽ,GEh〟h6p0D۹21$!|(=
~#zQ o/"F1O0~>Dy ƀC4+8#^aj
Mb
1yČ<b&^l˼9~ d≘9픹;aI "klF2(:QPEO*s
aԿ?2#V$8~`/	 7w4E );vN.GT%Bl|8hĉ97q؉^n8/s.?͚Erכq
/^d&x$1,#<(Esf?ȋ >
>@$H;I[U@i{#1Ӑ0aޔ'!1!!sXwjd86%ʟ$BYf"Quuhf~W@b''.$#BDbHp26I/H2o_$a^$4iƠY`#)IY& )s0p8քۑDdś"YCF20=dD3f 9ɓlZL0c#ye|*d%R(Eg)rpR>"sgLS(~6R͘)g
J )R*~Rz[jYGjFFN]
lF%s%f)4cIS)ieʍ4'6{i,ҰK-Hrgjα^ZV 2Ut%u.FY[=e
ұC:HzOϖ`/=Ee51d`LCz2dLU{2<3֎DƜ)"6N)SNȔ;M>	7"iӐi3G3!s}gxfdn>Ȓa{Yf&*,NE&"kƕOV=f$Jl#[&O6d?aZ;ʯƋٛǜldGvA \\`	Ur`@zrh^9Lj&^X4~<87
9s~r"gfFN|EG@\\5h\s'MB"ef&38- s?$i[AsgĉȳR$^awxBЉS"ov?}yĨ	EҀ{^F>[<fjgA"*"%珬~򃮛Y2@Qy` 
LY~,Q
2^a#1
ҍQ`~M6
2]QF!*Ե)B+ǍS(z	,IPp(\{JkQ.0N$y
)ҳD6]+Pdر`Dh޻lE!K輽PtƠ_fFb}Xj`6}G'+V)'PS`J3x8<A	^%J< &F	pӦG_%/_t,98eW%hDRCF^՚R`J,bKzjJ~p)Pg&(ݫJ0x4J7	wܫ2?z!ʔye\6ʀlU(pJ< F])~(x'0n`Uze([ve޽U{eQA({c+70SA4%+V/Qd0qA$k`h|!`nx<To/^T\
8T0,XSW,bũbFET\z:8%P޲eDJO6
*
E<CPiέO<7YZ#ҥ`E{[r/4" i^eT^
TEGF`U}*{#ث*o,@ժ߁!;X6>A	ꀇP屨@jE&zZp`XG:G_P޴_PI`|Oc6 WW`5_6jƫEPHޤ`z1POl0g {5QB`Q,_֨$>xQ]{nS;
Y<T왂gE6$XQ`&,>:staa:PgRV
	`DVQƧ諣ү^=<{6|[&[?EOQp1Рh0kgo ,&\`-

͛АFÆoLʂ3^CXш!8+5yZM;7^#4:w.`$VV4n{6X}AgX7MzAr!שte0J:D5pdˆ&M/D
恍&hLMдh:A[Moߎ,AeGf];%U|tN6|%_ڵ`/ b07?ڍ˓{т%'B'E2kw>8AfD˖6FKd)A]p"$6tw
!l{!`֓Xj\hN^+&1кh1%Zxlo
&<@w:]]za=	EІUڴ	m:x6sB]mm@8A[;ڶ`Z^[I,vm
d:VNۺ<v@jOhh[2em~.^\jR;ڳ
F{z+ڷ57l {A]%~g"X#ny{9"8]y!EXY	~~0	Ob'DF>6"D;:tx4=w&W :v|2luz]щNM:ٸNQ \ 
3c3:w~1|"$.]^
hzt9f
XERy@sBE׮oF내`+1@(u{7ݶnNEcWIat?!`ӝGW瀙AqуE"z  X$z\ 3"`Qyi/zL,sB|i03(^Jc:v-q<8^zpyxǈ1,cCyX#cqJ??#֟Cף!cIfN[d?"r>wӲ/oL795 ++{t5w<vw<1K㥿㬿㜿㼿WHLBp\78.;:;މm
w|1K뺷7`7os+o927DL+1ńi#01Uռ})>byk{yWꊩ'f^Lb:$nb!w7ELW,,pD?5md͠CKn)6ZȠ+$4ؑW0e#ħ.Yζ0؏1;w~?CmVz߭?\gr
2	pt8O=~νk8Ə$W>9m<ݭ-w~nZ~W~Nչ`|;[B	:- {߄8KYN}V$s뛽3L`wZ[0?Ox0~{սp|+nεޡ	b:! {	b/o8v&Hhy;NdY{8SvY|dY_YI9YSѶyձ+q7~w瀷\*E]'?^~R&6{vs!;܁<H	 S4W /ҏ"}w@@gn ?oa@=szG9e;j; j_xz'Wξ\>+Wg_.%Wξ\E 4_+hTgngh?΀Q1h}sG;7^c8gc^#N>@_@~x ?NЏ#psWB9I#F9'V9"ʏ}x.̲eV3Xq/}>	MhѝcDm1bp18|7444aG7[1d؎Qxq^O\>'qMh}D׏k.^}z&]	:8sܲ:2 'H3<?$f{t<jCûv#Gl#WGQV69`?#;r8;9˷	_rF?s*9Q8GT#'DCH#Hgx08&no
Qۼ]plN일F9F=ކSYӧϸpwqMDCq^{FFEjyk`蝔qwFh6z'Jdmvɘ/</<'e²as\|bA#.C'diYˡ:u_6y
pfX:Mީxސ)>CLN&EypŴUl>E;~d~S(ߟ<3$Dc3$'[^u+Jogp:l:'|;4`E ܶ#=wŀ [CPZU@,31T}i:bh&M4`b;N2XLߝ|w?~'V+ &/STߝ?cբz1|7ΥYZRE
~_;[_/UtߝbdmKˬccIoWcޏ%| o@,}X#n"zn++o-H Bx薗-
%Q)]7Xv5C:&߀=C:3[~ö#;w?ŘG]2]2]2??_ݏNǘ15n;ccjwbL?Ř
ROKWA[*c)=K僷WR-2X}V]/vZʰʰʰ nw]wn]wn]w#v
I׿@Ap-Nyv:l/L
(glցմzսzթzխzzպzmz^++m'Ղ6F66ՑֲƴZee}
ƶƱ^ƵVƳƷ&V&&&iXiZhY_i[hSXiSZiSYEhS[iXiZ9iYh[wi3X/i3Zi3Yh3[hXY=4٬C٭9}94yy-z>˦o-`ݢ-h=-d-l-bu-jE-f-ne-aŧ-i%-e-mե-cͦɪJ[*@[:O[ZG[JG[ѺM[BhlUbB[4լխ5/55zVucu|r

ڴi[hMMϴͬVEV ږV)#m+MkmUU56ZLΪBޚGnFFZci;X3h;Zyi;Yoi;[iXiZhYh[muz	>H_K&Jz
≌"DF[EX}DZ"+""""""Sg"S"ӬX"ӭk"3"3"""s"s",?VY[dRdU_dWduFd\dDd5Fd5AduGdEdu_duXdGdFd5BduNdUIdDd*Ū)z#z$
auieyEv[[EXEZDYE[	EXEZEYE[DXWEZ"Ǭ$"ǭ"'"'a"?[CENYD~
6~9NW++H䢕KUK䲵E5P䪵G䚕H5SuSA5YS"r׺(r)r/&J,$z(:)Ԫ!J+ܺ..Қ#"ڊ&%ֺ'*.j)*&њ"$ي!Z-ժ.&݊]}w?SUEJsNГUГ[gFO^]	tT*3Eyfg͞=5{i왦#q23H'FH=%5zk\ysLFO7=5zjISHFO	=Q5zk|٧SI#^Nd왣\'fEal\gOG
z>s5|jO*
p
>4|ii3Y'Y
>5|k4	٨3V'TçGSY竦SM->4}jhHgM>5}.hH>5|kysG!ګYgO)
)
> >E4|b|\={4{ViUKCBiCO~zӇb>+><g=|ه>g=>,'҇>g=|C-z>ГǇ>$=}iCOz^߇>$'=|CO=|iCOtzׇ>$=5})COyzsڇ.>$g=}C7z:s>'=W}YCOz=|YCCCOzۇ'>4򡧱=U|Cztqǣ	{ؓǞ>tg=|9ct{3Ǟ>𱧢=+}Ic[{VsǞ>l󱧠=|c{|cO==}CO'zГڇ>ˇ>'=> zYՁ3X	$vĎH$
p
w
wr
wBirf)@!OE,1D,.RXSN

ʧm!%.=6P ԃ6>CI$;Qqtۉ8 [F`+!m8;N-Cy2F 7-aǒǷ۱	[gʳyv5yr{<$nWe22mή^AALNIF^NʞHږYKcϥMkMgףMo`hGdl/bj*ef7We=sisayty|pv m{mAm!{+ma;?m;.mQm1;mq{?m	{ mI{ m);
mim1OvڲlrZv
aڊXJ@;&me>m{Km455n5mqZvuvf:_]m={&m}m[|HȞA6+6#h9iŴ--킴!v;VvsֶIjעmcOmkg
ѶҶІYi#l/+NAHўNlbgjwv;wrgۋ`'hdl/bjCd=Md\d]IdOdCdOdm7LLL""S>"S"""C"3"3.""Q"s%"s9"""V"""U"K]"K""$"+"+"("!"kI"ke""m?
vaMvvZ-v#vmvOv*N.;Rd]Ldkgo9`9h9d9lw9z^*1Z,z\AO	='(2ʉRD_[iXgYElsyUr\E/(SOEi*zI9^V}U-zMΈ^W>]]rEL=ᷕ;e<7E)}ejyK#eq?VOS&Lyc>W^/1FrJz^+^7
D*w
g+s.F\E(c)L܌g9EMDEPԥ<[Ds^ԣ *wh1ghTz%ꯜE)L}d&j+Ht0Wshz[шGF\eʦ3)	I42&RXy?$|+T2F23+ch
u3R*w	T-Hz(U错U4rJ12(g-ьsO4YeYKȪz>)dͮ\
FN?6r)chn&GF^|"O
WFJ
z3h!:+ZXv"kUOŔ!(\EK(%~eREK+	2%?)r7- (ɢhEw[+Pz}++sB5QM9VW.ٽF
]eTn5j+z:
ʼ/ZOWn
hC^HA?mc֢A)hjMShf4Sn}Wrgm}-qQαhk zv(w[Ѷt)h;1E+SHg+eE*CpctPGюʭrJ6:+he磛r+1]S9E{)t \1E*Wq~)1<лar/\E+?DEE*07\yxF(p\zF)Kʣc!:jSlW.'(Cщ5I:zMVSSҩ*:MzNWhoPuf*:twN!:W)~P$1)$bKttXLLyY
eHN`T*JyVNI_5
/*DkcH&bW>ʭw&eoV=O[GalU6۔3vء;.K9_VHlث\D)~ z@*s!=_SwDA/|%?ܿPQ_?)ьD8L_gGV5UHS/4.(EԸ<ڏ.+StUzI
z]o*P[Qr~Gy]HeIq;3OG3,\(Rޟ7Qr
wʭh|Pn'&JkLI#YME+r&_<IK`IsIuM_;7I7&?U+J=L_v"J%2&/~`{#z&?P+JK1IǢ!JQ_$W
$0Iُ&/$%k2IɖL_ez~I[&/ɲIUQ(/~keTQ_K>2IɆM_,$L(/2Iه&/uIKb_M_c^$L_$%>T &鯟NxQ_y#JKeEIIK3IǦIko$犒&W׳O.4II뻑RL~j(/Q$%ʛ]_S$&/هI.7I
_{
/9IK45IIK1IvP$V&/Q$WL_*AhhzHJ&鯽,$7OKgPNkHJv&/َIU sګI=M_(hP$y&(oHH=&$u X6IM_gR"&鯣w_Qj(鯽,$n"%Zw/T3I&${گH^<&/نI%&/YIAKk}_G/_~Z0I	L_*JEd&DKjR&⤿Ԣ&鯣-/3IIzߑR`zIDIHG_GK_	_;}_j3ZL__	_jBl$5H
L_G=_/ىIk?%u@}K(K}D7%IZM_!/5IjQ_+/I@ף¡ UuR)
_+\
VuGU@K|nTڂ#2%+@t~$C9ş`)CST.*a+C2(#%"@{!*d]L<WHPd!HV
R"2dݑTy7H ~ʭǝB*@JT+UHVF H|F:qW'%!2)hf /Y	HwȦٕ[r(hNϝKDnϛG7U.Hȯ\@?[V^ɆQD9%r	QLW.%[?Tn=R
2*F)qeW~@9eJ+ *(-HQIy$DrICeeJ֎*G5eWWnٕ Q5Wv=j)Sr4VPGmQWy$zh/(hCeJFʐ)9$EAK.fг͕GroP.-W_r,VNILuFy%G[һ$LSD]Wk!)Y"[
:(oG;wQ^Lݔ[~1w] 7Rʐ_@%NSЫ_brk/z[}2$:buz)pE#)4HfrjoLcK^`2sSx喬Gj
LTnKG`SGc2sP, %c2uH0GyUP!QKﶅ-T"e,V%ʼ.T.SP˕[or/ _Rb5_<)hYRc2FFe}I:mVg2f/)oخQqr(K&n呚{S-t>~_ʣHրC8&zXA.QQ߂pL	+C#Iri; 4/ʫi,gt:Ǥ֤?_j1\PQytԼLɊqYy~\z^*Ckʭu& %{-咬*S=߬p_|<PnP%#XAg<QF
ѧʔLseJ)^*nxI}7#Y*H
wQQr<d*Sr|Snu?X+7Tf<w[;V)oʔ侼&˫k7~ʘ%/됼VNyz_^%FWF2yyl)Qy<?%/[l<.VGACU*[;]r
mr:[A^&V.X^*ogV^y\yUx
yΔ\"K^VyOF=rtʐפGz[N_("﷕kVͪ<4rE;neԔʔ`!C^s+<#[(3yӭ"Vuy٭L
xy^H3~,j&ÌƮ2cmȤBS5*Ҩc4Dך}+[vB2^KPB$ژ<=x^:y#Mï~AțƂd)Bݡ{ӎ&KzY<7]h<4~u

z܍8U	]Mɻ5g@8CYͩ[ЄCo'LT}k$mz5;PP{Hjt7>KVst
B;1vv)\qДxؕ"zz 9YAh	S4$$JNV"X-QXeS5F{~`9MCYKdCo)W>ti_p&/d[SuNߦ~a4}Cz1͡~&Le&}N3!=>e
U9I+LGSTcFǒ|QU_1)ܷt"${2ՠ:W}}t
դTi_)ܷkr[}tMlc:$}/%rWSΚroy</"H_Lk.:[p)$2f˩:ݙ߅J嶺N6
m{5URկx?%K7,nyCՏN;cۤ65Aĝ$/ܷ)W=z3i.MtYt/3>=W:7H?{a"+w>z?JxqITtBu4:bÿNO3=C$"r/t?м^dȅN:C^Bn^{~^aTqz"^#y^^'I7Gp^:uy7ۘ&a">/))4,:ÄvP(Ba9Lgmtb3p:N 0m=?	ퟴ ,3ܷYQo3CR)-EH&,{E}KZ}Bpڷiqt%&KUt3euiYrt0|23Y'{|}N!ڇiEJT3)f'P7UIf-'˯pfQLWg~5Hff{dLk6K0Y:)\i-oZj6֙ȻKZjƻ.C2кy8_qހj!}c	۔jR۟T7'~OQN6oAucKtߊu5ݬ0,xThү=fNqg H;RURo1!ʿigF鋔ss-2LBW2Oգ5_.6N
m"5	[	dӜ'ٓʈv$߳Ɂi;C5ۗ>I3Qݟ3SwyyCM}}8!Lәe
w9fr|9&᾽kBy$]g(	d\{:*u,YG:s<CgZ:.N&KHߣ{OBv(ܷ!ᾝ8"MgS͙$ﲳH~)н;Υy#l-O5]t!;ܷwEtiN2\B23WPȻ3s
t%IH&ڡ&]ujKM5$Rktvg3
$p&?-W[):Hᾝ|y]yU.wtuOT/&sIv|{ޟVz,ܷC#t'(e9|{K]\Ƀ_S!{x?azy^R}9Uy}o?]_{Hqw*2ɪ
yWk't^'
=ܷK~7fU]3|_fd&֩:}yW!uafV3/mTwƿP|dO+T3fͦ5ݬ5<Q^qʡ&3̀B<0Q^X{7Ɍ0칙d'
.I2S[,M,C1^f&6=։a<,t&+RLWbfb2	Uf5ϐډF6#^bf4oy _ӹ!̆B=fMa-Pu?Jw2bItg^jf1Ym$3
f2̪˛mLS#n)T3ҿIt ߜnvْ.({ȅ歩N=<l=ݬplϡiҼ:BM?O3A݉;"9|D"Mޅa/ϒCUi&14_:?U;ٳUWט9$U{wUޓ&nI(E2JMUaؗղ3oRՍ&b8Oq U]K>ͷiRꯞ;Dno	*<ˇPtady|8U:As$_H?d|4ٿC2:#OuwTy|3tPUUwS(΃J1a==LS>,UϡN0I.:wadƹ$ΣxΧKWRw_"E%dy#{)24+N>\Ir*I"Z9s5Uh5TWk0:&_Ov57
d
d]o&y_B.lT$vFw~|EurnJ9j?uP}WIN $bӤu1WT4'H {>p4P[	4g(NBw59tߓ/0=Ei^/Q
/Ӝxj*5C3"t$HO_ITJytUh&,kF3kl0/'_unߌ/if;/|e~Y3(&LK,0^j43fS$1-B1
7+]z&nֶ3uTߓeqo	ƒTkYb&43e&R`#1{K6[TPu%
$_dlqe**E;iOd'V߯NRw'nݬiK{M!-]k͘f8oQP"C=}QX8,k}\Gـ.7&n1Ϲ		M)fC=
ff3*ymIs~d&	ɾR.J'˶̀#,3s`b/FR<H	lxh~۝&M$CÔPŮ$/&+_!+NsB`w\;Uųob'ݣotWZٛ>dU/do?7ߣo Iށ$oxY\9Nx(9t&P0wd'x]q$EEshf&MG,Oj?|ǉd'NbL.ɻ+N)$yr*IH9]r:YY9&M^E7ua(RM#yB. 4_Hvu!Äb%PK\Fyn^I5
/-??!;q5M*S;s
ٻ-<i4^g7Pn{nbL­tusvf4W;,EnX݄:\{ٿKYB.Ou%A	VG.ʣ$^b88IU)7̜x\Ux_7%2Np9yf^ǿx^ [;q"j'e+tWN[u`ugs`GwMʎ]<|v>PKg^ZW    PK  C:U            4   org/bouncycastle/crypto/engines/AESLightEngine.classy|SEOMzZ,m*mT
D)
iBRĈWplJ 373w;7'o OO:z1G}n^Y:0͞VmJn	%|ݔjJB˳g>fVQEހ?菌E~|qHs|ЗErt`P8enYIE1
<yaCDz
Y(ԁBL-	PH0pT#
G:s*4rkIt3}PC*'["9O)e~	bR
j,b"&O]/Hfخ2!Po&S>|Ȅ@Ȼ`bZ
(_D|π5!Gi*5e%T5SubSO3QQR ;[4!\`]C$2	rkCaA]*G"_q2.:DEz3U9u0:bk9Crt>߳Sk
v@W	4,#ō^_<T|$=\}^z"aۄfR*	RX
Y`Is
T^O=./(T 2>_Wˑ5QX/y5GW#&y"Rz9ޮu߻9LU{M|G/ghW徬/[ꯩӀof-VP}-mkz7P-=CbIVZQrJa_kJ}C%m,ڹfzAbDl(0H@cdQXJ8N)
*0Ui:薛WiA.Ԭd$[Qk=m"҈ܮ'.o][/3&3$dhoB?+$K;cRQaBPPa
a
y*MlHW2P# Cq0e(h*Z
p,=a>aJ
!nK*8%Rai`Yd
8<r24e9\\dyp<ܥ\l(,a9e)2Y,g`9>հ5(CUY`d'u:sz=BN8Ӵ_8)>g3Sȳ`|B@		>1BI	u=}݊2J}͂MԢ YMYّ,]RyfVa1+S&̮ͥ|8س2ˌEY)톦l)j77*n5@L w[֢;"V}Ȩ!!20(;[;p"{v+e/o?&o˲2`߲,\A:6Lhx[/نڒ_7H3 o;v탸>,[	m0۝U;|̀y%w%y#N9ʨn
}?!=eC
F}^3
W4ltnTWu28--7-Ud7P54LLZZk]S4SSkfMrtsx-U3G9:9
yoOiq`w4S58tY\`\ZZ4kiӬF`sP)xT
80%΂[ EK:-JP-qsN)䖎I䖎iHUh]
f?B_6D:۲uΪ{q]:=\rݤY]FL׬O:QKQNiNSuMNۦlӆ
-SdǴc&	\*Y5SuiVMbK1oܙz}ap45;MQրF
5%nC[akBc?^a"}q#Cl!{.u/)GG{U
q vgK 8[Y}3c<4=`4na[|.pWl;+5-pS+\Ir:	`@J8<?.
we#?41`:lm02-[[aVJ[Z>KAEJ/LN/NnFxbZ&;rǝ7C*ݙi-pNwJnoL&o,]cFfp3n)$/ӻ0~m+8h%3TQJܖ|PjrS-C
TIN,ܨvbhH_n=baq:DUEHՒ,*']5#YTKiɢrjPՒ,jZj+:e`8=Y`Rkq:DZ[WMq9dQӻJz`jmɢ'p/ڪmOrЖl{FmK:	|o*)d87h\S|ævX}{93nI>3!q`|Qkǆ=,I!!Z1ex:XWKc=cu,Zu^`%;/b`y.q:X"l:׶c`Mcuu؆dbWMW;DMr^ĒĿIz`jd1tSۼw^yն}5X9h˵Զ/{jT5v5$9Ŀ9@T̍zzt>()
[iv[rF<m
X6r70D#f<4@b4t_#鸈Ifp)iwMC'wƗIp
i6n u}p-i_]9Bz%=/'IC' G:#O<\G:x
|t(#-@pd>FZIC#Hi&9WB~$fIG㇤ED:7ң1t<I:N,IMZAXAzDz, -Ѥ᫤Spi)NŏHaWN2z2sHgYMz"'uSt6IzGz2IsyR~GZzO*Hé8"bR?A:H O'
t҅XDICx+iOz
LƣIHzE8T.ƭKM&Dҥ)$'rw,g@-įV\jq9ؓ\|<lf;]c.*d7%Xv)c`r|
<Jg
/ee'oVa+۵؝:|zv݈o݄ﳭB5xha[%lv֌'݊݆/ݎJx۝x%]1\̶?cۄm#ضB"{8ock ۽8>m~ɶ}lxN4Fq C8a==w====8Y9<yc{ǲl/lt6d{O`{e{f{`{7}}װ}l|S3s%~5>
dsپؾ~l?yl?g~+N`
k~lJ8OLgۃb9_m(g'3
pFSg@(qXĩƙ"!`k=
4	|$s`OTZ>'{#3Bb=zyWzzNBPzVTJ4	=zUN*سZZ'W
fo\fE>|,@>a|~9[V>/9Ii||>[|b>:otA>+AMg	>͂>	\/BRA}+W/sv|,>	|[`i"S,cy^gO<)3N'cy@g`ߓ2Y=,9J2=.%zZG$z^nO;*=C%z>SgDY=J!sD=v$z=H ѓ%sDO<G$zΓ	IHTJ$zn%ѳC'[gD,=S$zyQgDOD*$zvI%(DOD=$zޑUgDϹ=Dc=$z6IdJD[gDr%zJ̓9^t$zėW$^jdɞO${H(sd=I|'sd=%{J%ٓ/dFɞ%{&S$sdOdJdOO`"ѳL>S%z^(D_DWgD!=DRBOn`tcvvEq1v&Uh;.	Qfg.&TRݼ)p1zҏ.f\L.3'C^b]Y4lY-p&PK%s  *  PK  C:U            3   org/bouncycastle/crypto/engines/AESWrapEngine.class;o>aFf
0F(fYbȠ__\X\\TYPZ
f226( ސ 7gccKvvVv6F

\ڝr򓳝32RA$N)< Dps13p1p2>`8秤2(2p  B@=r;v`u ULPU`6/LvA2 PK5     PK  C:U            6   org/bouncycastle/crypto/engines/AESWrapPadEngine.class` gn˨Q" ,ڷf,'EQMzWx^ ,T	$X(}?!"܈cN9{n`ǋqV	|W~!X{3L'7|lgG=c!FQUE%.G4H\d %
7(PK)8   /  PK  C:U            0   org/bouncycastle/crypto/engines/ARIAEngine.class\S'd Шa(n*`W+:+8Z
Ih$ֶ.ý=޻]{/[H}~9<9}GRI5)IM*դ2MiRMjI(mVHIʞZL8)bjqTjg'`:UYZ-q5UZ3zB3STPwy*<Eߟ]ܾ[w{9󪪜*}}U}}~g%v1
`	#QVjH&u	xzV<z\ɨ#+Z%7|l
Q ur󋜹ξ@||npr
ֆn(80:WTj<uuZ{FJ}*{6U=H=WYtN0/,(*,W-k|H8hTBU(<nBjdH:=3`;4 MXt -i|C.T::.P[ɬl3#Pf}M(_djIey¸v
})O!m wF%=չѝwim=!Ȱ^tG҈'[h1rI&:L
>sic}?[gKLoKB
tչG\>ڡ\>%rzp)	 n\#\kD<}"xr{[ܡ*OC0pxrZ]\:Fu:OS؅?z7fptsG&lkZ糄S]_.}a:لgZdzUolTF5ĨĨF5¨FՅF5ʨFQmG>@ڞ*{f[?[imwv[}*F"]d/WϪ?(J-逑gil?M{7>lG9{ͱ.UuAEz[U)EXU{oUժ:Jѝ'PhUTUeS8(2TUuH1LXƪ
UUU*(hfZK͢OAWV_*WYU5OSD((ṚOhQZP[TB-j}XeQ-jZiQWIU7RbM-XLb)2K)(.XNq9+(,J-juS6(zj#<BĆi
5SW'htAtfMƵ[,*MuuA*NM=V`;<q'9]ܱOO֨fuw'Ql(٣qUVu;*ijCik{?S4;:[i}`ڱW`uY=ݛF*M:hp耓Ҁ)ѹ?rPz<
wGL%TSStΣ9G |SblVtOU}Gsz~ڤuhSG>f7nv=
g{ͧ-jwMm:ޛ$9>J/fT5|3=xkEnD*_ic5Сs
r][0zɅp l09 [0X\xĻVX]$܉HtrCkM6cd4lIM+f5'4ـM6kk!-[c1e4fnMv6tM5zb	j6rwcl+Mikbl+fj6
қGڊ!31~gp_i-QsBZt0rdcILn/Ic!^;8GT*qx~y73sdP:
!eI5tTO7,R2uTt3uz(wUݤm/͜xN+v?V%bMeޱh/ڃL_kVְ-X353	GԔDn[Mj'Ꜹމ[FN܊9`u:I֑0J%]2j%dKY//El	`ݨ1AVHDY=%qꄍIhƥԵ*ӞآZt$[-aJ'ڒpJڹ<IgJRӘOi$
OII]U|oy??ðȭ+ʭMszAMs%SKFd3lP{LIK
6MhbLENYӲfvo&MŝBͭ#)%:)qd`>8(Mul
æëӁYŮ/]ý׺67(UUt/H?]TkK.z>l}֜٧=Ov
3ɡE*Zы'mDEmihQqbF=	>p/`K0(X˴H_E22җ̍esolrsbƆ-6:::::?\=oٵ4nPmr]8/++ˬN8l8~&Kt 
$lTvQIo&c!Y-k}T=A
Dj<DpXM.צhZԡr]JW}n7zToYa^Yr*+0	0:TcCL0A$	$f24am`1f[-f؊i1SaflL#1;1Lhbv1Bna_0{ӘYP
01f|`1@>f.0b!nt0
a-f?Ea1'`؅y4`f!pf1,T̡9j1Cp9`^bݘ!s|9r1rPy9AQ
_aA&D89	vbNS`&f9<YG0Bp!4y	La΀1=
f%<?0}P1U¬1k`f ~ÜǘK10s6Ĭ;1Cpf\9pfnl1B?y|803" qK̥bY9BKJ	PSnrSrlr5,r
r-\Ө\v*7@=ap)`m*[AVmp%0ZhRYR.rSޢrOnpR *a$M`r/t.rr?DBAVR
POǩB*a6=p
}0J3OT$*G*TaX@lrLT*a>НCЇÐNʣc(3*O;Tag0g*T:*/`*/^*/AaWp
?Sy
*o@_*od*o~*oTށTޅ*Tއ| RVST>7|SVQQ:R7|NKxW0אExʷp-n*UT~*?Q*?'T~b*@
_a`
ߡ7? IAO(r
ڕVK='UD	Bi=3ٞl@gs
s	;c{b{==G؞3C;Sgz23Ldzez0=Lzӳ2=1=2=-ST1=0=2=4yZ-ٞallO5llOog)#ۓla{c{=+ٞ؞ll-lolO.,cb{=4!>\0>1>73>ƇT`{ٞ|tf{=#s=C3a{lϓllNy===؞bcd{V=3؞7h1O2s)\+|||3>FgUN'{:=mĞŞŞcbbd#!g{=zg]IX	==
=텞BBZgS$T=	=sۅgS#|/	=BOM"=""+"Ossȓ'<*\$y:!OOgS+tyډ<M"tMA |#by豒Izz	=!gczBPgznz⅞BKY,T=sгCyU9OY$zz
==ABOgs3GIz=BϥH=33y#zL&s9鹇鹃鹔yY|1=ML:&vq,
幞塇4:-HLϻLLSLOӳY8{LOWg53鹅gzߙDlN&Sd=o=؞]l\g*۳f{a{^`{=aWg\԰=ٞvllFbigg{=7=Ag{d{b{=o==6g83\{?2«e{e{=/=_@L6iia{v=<ӋX$sC3=ǙLaHaxfxf	<O3D'T<L
yR^ijz> yyy<<ѷ[E-"OD"|*ly<<<xA
=	=BOS+\ |'
=s'[yDJ		=BOГ(< tz=iBIg3X%<*(4
=B_ŸCJsX^PT{T^	ǅC27?,/QyL{v=)b=bOOg3]!\$,{{b^B'A-|,,{{n{{֋=߈=w==Ğ1b6!${{{=ŞĞRg{ڋ=9lQY"z	=
==V
=BUYѓG=k4gѳgz3=EL[LLO13=L@g0ӳ鹄鹞顿#ٳ=Cց2xL_?ud:<u9ݥ+@hSll<Qg2SLb{ڳ=/==le{lGlO38c{f=llO?g5ce{~d{ֱ=_=Kٞ.l\g;ӟg{=lϕlyXs
s-sNYn,Os3Stdy>fy>dyXY`yey<<񛑟iY]w q&c49tWˮX:6i?iG{ٞYll|#^Ob&o	5oLh/}}&>W>n}&>>EDѧI!DOε(|
(|6>
>ق6'\\yQ9 L|~8Qg3@#|>9I'$",||	>uOXS|:>	>MJ
:a{n{"bbqgss3[i#ŞqbXgسKI{{Ş{ŞCbϗbOsسPyN){n{{~{z=ߋ=LZgS()</z=BOsгLV$$tz{Qy&Q,"bʋo<O$=p lz=3XPK:VQ  -  PK  C:U            4   org/bouncycastle/crypto/engines/ARIAWrapEngine.class;o>aFf
0F(fYbȠ__\X\\TYPZ
f328(  7gccKvvVv6F

\ڝr򓳝32RA$N)< Dps13p1p2>`8秤2(2p  B@=r;v`u ULPU`6/LvA2 PK     PK  C:U            7   org/bouncycastle/crypto/engines/ARIAWrapPadEngine.class
` O2M]$  h$j
z*Rฃ^>00[h,
#^,ItaL/ioU	F\o^[1/#h(wDәhTі @BO1XJt^¡\{ PKn'   1  PK  C:U            4   org/bouncycastle/crypto/engines/BlowfishEngine.classXY?9R#؈-b+(bR"v`ݹv"`w'ڽv?1>wo0q3'ܫ(J<F-1v^bLb1wC-7q0)=$a1-fL[fts_y֫1?,aq͹5xlG,y!2-w!ld	w
Xaũ.`\{9_{F.iٗwf_33#r^Ŷӽ EIuD'pl~m3;=cOUk9_ajjMwX뛇=sqxc{9"N󻉓JdLg{{GRo2Q0";*
kyvp{$[?>F*nn
KF]ǝ+{5+ēq)[t㴁xn?;N+*O1r!n2ObKڙV~v|8!߂c쀄	`V E&O?aSdl?>Z7І[|nsP:R(yX̄nn~;Fz$Ѩ4z"*e-lʿ]sиpOE
&.o(=ߔ{H1ps<o$uXŢ^TSK@PJhP@S0gw/<Y)%nK=^h~)ʴ\f5liax/VǹC/h3lCھٿƢ3AN6Fѫн͂y>}{gDPR|4Br.}\"\~6"NzՒ`_Z;"g#W͈:Ι~G6b+،b1kr{U$wgz qZ^$ݯah0s嶹rǜhĜX;Z[݈9WK[̹m^mz[,8ԙ`Y60oŶml,y@XzwmѾ۞>D)TۣkwZrx;6>5"*)(ZtOv⇈
J
{aCi%Яk[Nic]S)Ho_?]|:g;MU7Tvf޾=g{MU>Tj/vp8/4]MIJf+lB#CcZ%%'G~[&%$+
a6-fT\wٱ"t
6gĦQCXӜ5['㚲flAnlɖRXCIQq	)N!)NNI5sJNd{'&~~'W'XG
v
ntkƆm?e@x\pvIqD)/''c
e]+*D64)QaccDq	Os
4 %]j8S"&ܩ:u8ɇb|bдpw1b[D%DO[?<qPThϑv6O??-;k}SٽC~.[G&u-	Qvg牊OrՈ'+ɝ=~=cƋ^'*!1S_58$$1<)med<lhcT70ʽ52FM5]v1Z;ސzw-
V w"=XUAG0nbw{'/u<}X$Ä~1axBL &lO0qv/$wvbeg]+dr)`&F0u0LkRc1}sv~L_l`Fe1c[ۧ(7f1L^SfN*90'Z#{:s4r90]pƼKaޭYjWiU<K!퀅n?pXxzm,|`^fh
XXiJU,x)c9vx?%69Xz,yKGuGF#7dWK3Ff'Y1j2i3dNlx3AݢY!zKl\X׭)ͱkc2U.aǠXV&V
=>MbuFwF5yG`m#3m
kVڥӳvg+?vsXgV:"?ݹ?6̭^m~ƸUd69hMS?#|#X;Z}l||{-?aUS+`kܖgzrZDM:rDΚ-m ܆ֳIg wSTk;`y
C~`,)1ȟ`G
wl3*v]}"vUwUǮ1&ue7݋>vcwlvv;ŸaMXT{_؞+wߓgd}[c_`<ͯPv[<?b۱;8p,o9?\W?@ܒqC՚!pȧN:u0šAWpoUqYKWjpء8bezGuÑppp+G{ Y?.tǔCqz
suǼyXW8eϙ㹃zNv88Vqzʏ8mkYp3^#qfВ8cglH9lq,{,_s΅dE>`(vϤqeofpaP\ظ*.TmۿbfX~34Yߖ)dy.N,pi󸔑Q?ueMqٵ\nn=~mȣ~_~,W2pɰ=g>Z=UqH\>W*~kukq1Eq=:Εbc7~qaQ~n_皺Fc
7[x^-<psJ,zn=^ּY(n]:?=^;W>ĝGN
qg
Rw.κ;fY{w}h+ߢNR}h<8:p+<mE#pS8,ۃVǣ^;nzv|ã_qr*	SՕ <i3O'3ē_4;qO-xgmgg,<2ϏSk`H	
مrX$ܻ^/ϮƫZU@ޕWkkx]r3^-x]*ǛjÈNxW_1xtTo?vZ?:[-WK~ >}K"یŇN	B|z>:;|ǌ||?q>%O"0,}
Obx
=/=fo5LR"cG7(bÆ΂}Q*sc]v:H W
PJB>3ԻPq_ u;
 +{揃V=Zno`\>L^i֮0ξ}>;[/d+saaV>)i
{RaYc5Xm"+W܆U(*c	;g~7) 6_8lׄґ=3~t8
=c;לm&55Qo2lIɀ`W>v^W(%%ݿH}4J,R^9PjßQVF6{'Q`ZJ@R(3cB[eچ2[̓ersWH}aYSMpnp#-]Ѯq~p߫p-׮DX{[Z8
 8
NcNӶ	pQOE>B	*6xMQqL1-FPzkT:*UGBF<Q5'T͚U,se4WsT[8GB5Tk:W~3\^
߈A+v}jο
e`w
q"5oA'P8
vWѯ3x~!-1jWj;FmYwQ;,ux:ZE1s\En9k?xԼ1

	BD&hl}4
Fqh%>D?
OdxV*O?fi1w4VCcRh-gt_KGhRy4q&Ce^^u-[khGEeW4U3v]͚2Gi+,Hf==,ƽ]Z9k4vNLyx)>Eoh~W#.f6n)|^Cih5pzuZR7o6hSoG~@nh?$	#~y)hvx~3!aYCtX
:EN!:ꀎ㒝ѩi!:u zNI횣Ӷ{2aựo&|ό?%8~}	|9φslZ{t]"WF{U{O/on5?!ov7砫{tm<zb9^ F:kF-K,mNDY[ǡ3*tKݎOʡ{Cf;O}ݷF+{z:޾B`jzj뿢Kz<Eω;W{-
G8tZzx7@v{Eq%݈g[z1A.KX
A~B]/A\__!MAskZAEyrC}8
a>o"ly&;f#,'=8mG{jK "NC~Yl
D6W#rdtDN?TQ<Q/ j7D-*Qg!Zh΋]/nb*ν,Lp1/e"f]yic_>匸#nY4MX {/{w7/be^
`n16 &vu]dk%\TXtW6>bgH-,RoTMR}z 5^fgAjnxZbۛcBGfbFݜ1GRfyV%C]kaפLÆ:cجa0l;9nHJ0rÀ15#ff܌XK3RČ5#̈1#fD7#Ԍ'[/MD:cQs׵gf=͹m8IHuح&]g;gJ\뿻Ye
ȿjݬʟV^yg<T[)x<SxkoxR{<X)וVDQ.X)VrKdEJ+VJrJ6JY£6P+6܊+6Jm%hxL1BK#8yL1$c
Z-bxjx,ZZReYj|$Z&P3y1<y,౐"Kx,i'JQc|p\rO ~VTj=b+6J~kz~D}l'F}jlslYU///St~~E}m7F}&ʟ^#ĿC/	`G:Zڊ%_\mֹee寅-Fu.-9%O;Ŏp(_;]ۻEmq¿q@PbTc6(O;M[j8ܥEk;3yyڎ<--i}|ZK(>"f-~On%%+t?ݥ}em̃]W%il\c]XT/jk'W+V-1[fNus6*~~Qg1`wZFa5؄4Z[mJ
sc[ml*?FVlamơG8vfL	g;mۘZ=S;SeJ.am̘&.e qoe*[1M\LЂ}y˭q	$caUo!_*nJ;6
/;R^,Ų^bo63]۳Uț[67ff6on\q6:kU^{/S reJ;W|G3q(+ݔqKdoc_|툋7cHxW[lnwXXXc1뷱c	Ŭw3!fjB3\ƝҜA׎3a,/ڙVΌZv.v&a3vvv?W^$݌ҳlkcQv OrQiRuggLOG7]o:ft/WAσqhϓ}^xlJ
^V6GU/kb4yT6FeZi̮5Lu_b>׬n1sfhZ|f$,34o{mV(Z)"?l-bݚO8R=c)kij,jkV+[՛LK`KN+Qq
tS@=7Th
4Gژ1,^,,-i,-,述,7aYLZwaieihAll&gsg!!Wm8[Uqhq6qMlŊdXR]eY\?NoĲnǲ>e)1pet/+˲zz*,,uXV`YIβȲeU}3Kg}jh.z5x5R,]c,tgz6˚XC,=,kY+fYO?²>e}ˆ.tOV
,,M,}X6{X{l۲l`ZXǳleNβ^e}0ˎz0N6K?}'zG]tkz9]},ٷyZ,'XKԧ쥃eoݒe}	˾q,t}>P}50}p}2=e}H}*(h})X= Ӈ׃X&XԫLmX&,,S,X,y,,Yge9\,GX+*z;2FX=t/_ye^J^&)e)z./S^VL}ye,}/
'2We^%yY7e>z^xUK^/z>/Yzm^,yYRej}/ktz
^mxYgAF݁MF^uo^6y٢OeK6/zE^@^&Do'%yE8nJDPu{)>J$V׃T!Jvz"#\(U'zO^SU$=iJvzx=K51l*Bܡ%⑺H!noTMyLU^	^Pu:W֏kTmuJzyIѐ[b|nSE+^RUܤ{xOTTB\#1%y}B5qR)WDxo([>Ix@
~'Jy-y^PׯyFb^SU\5bm0(`F	ȄaJ	~3JoN`\ֵQT㓌%\5Jq(L[jm8l9ޚ|bR|Q+I)y$FL}JRu%'QOrz3Gw9
%G
>)OqcG	+R1DgTcJZ)'ns5r\G՛=JS8||T
Q+_j-Jp(9\zT5R_Pg
G34*siBoM)p
))ySj>琂}P;֊!>mʥhKvEJ_ :P.Rp)r)/1~TvZ+#%q:HU[ Ur NGN$UFRI@$BzS>լ/9.%
+(
\Kqè{IUID.&"z(GS<?s7G7O@5@
HDIfB/z?t*%u`0%N?C(oC)jrF?@)R8\R
'A)䏦n)U	MSJ)*DdO0Ux2ժ
VDJNV
atoV
aLW
:gSRJ!fT*}!,%R1QU̴*[BU1J53-%5a)%LRQ"@^N[E[
*
\Js)%ХDjET3FJlR^~RU[)Cn_
1R8)!pI)0HR`)@)zN
.kD
#K
k'J#X]*H)V[JXMcX w)zR
LICR`l!R`R
)0|x#V
[KIS)%[/17.Fy):V
Y/OJ`CWR`XfR`X3"֚K1M
5-
HU&ƿVӅ];\`,kWj)˅8-B`X])>!0)n*IK	B`>B`<$KRB`X vͅZ!0Ǆh)>!G
T
*vc^B`X] X!0܅*F!:Y
<Rkj!zLcwjX,/&c.&B`2C
<WA
N
|V
X
$~*&=jxXUK!0~cXS7X3H	կB`lVRR8!0҅"!0.,VJ݅X!-!0['!0	ۤdU?)w!V_NB`xXB`Xs4vцmZX FX)U
UoR`-@
J1CR`WL
R`5V
R`!pkCFR`Xh|S
AR`uX376.R`uXHR`Lk
ߑ;R`6Ζ9R`RX53i^
ƆR`x!p)0ibl!&'D
#R`5B
9HCb*F%)Y
Lw3f\
LIqJ
3R`2G
LI/R`#:Ik)VD
.R`wCpC`s)0ZHqC
LKy)0i/Vgkۤfb\S
4,Vݥ\)G
R`Ԗ-R`2I
Փk^R`<1dG
zwkNR`,dox8X&\`r5E|>!V݄$L
\OLn	B`Q!0	6!.~! V)pi!0~cX/%F!0Y"&˥ׅdXskD	B`,B`"&Ud#OfUH
1[uB`RGLb'VIXukRB`Z/B`|B`5TB`uX#ZX.'VIB`)EL	)p5!0HZ[!0,CL
 &OˤTR!RB`+V'IQ dB`
/B`XsB`5!Fu!Z\!)&KLnKR`4^gS
CA)0Yo<_
R`$_цݤ)ZIW
}X&&HQR`\#L
LK0)0]
_)/FEC`3UHպ43/VKan2,&(.VKգVR`rxX-*V(-N)0dX5UȕB)0y#V$A
'KQW
vv
].C\)0igX
LVHI
5zR`Tc!!p1R`wR`R
YKY)0Z3C)09d\B
+%JX#ֺHH
LjHI#)x!X'VoHզR`A
LfϑR`rX
!h&pPK[ P+  A  PK  C:U            1   org/bouncycastle/crypto/engines/CAST5Engine.classwXZ7|IA0ة]PA" X{`A@wc{Wެs=xm$9`Fi ]xז	'Ne zHRއ)G=\2S]]YYma[,05`ֳҪRK!5+Vou؎է_GyCwiWZ_BՌX862Æ	HXlxz%6w]7,S)6~ysGSG
WĖNo`qcl%eva+}Tin!|\{s?žicF\}6,G8cL3{5D֓>_!}wd_Q9	z2}-X>_}*Ċb#'I]'Skm s8S".U=qqi+cl%1q=\uf^7^Spsinnup,(U3f\o76otϛ{t$|0_~G[F)h6s#س+ꃮGxN~0
CN-`|Xn>UtD-:7	E3a=i$l][{`Ul&6׶FoSؕ*[Śp*hAGE4,\ULfsd88eѲ$b_=&pmumOB{h?:$Dǡ	XܠEǹJkt9n#dw@8&k.!T=꜍C+z6]XD B`.f#R!hnrnu
aAOapc~1
C|`ȫq@DP}D~yE!\Ğhdg{_
0ҿCv1[4g$YIsO<8Q9dc`i̬""clX`xXtH0'M?N[q4:kOOOTT'xWԩ>n<`ǍT5yI]݈LՅlRpf	i:ywݖӘD;t	4yψh2Y\@[6T&$(lؠ%mںwKi׌]=I8sN=T=_Rհ!1!QTiV1j_wnӿww6>Lmh}Ȧ}Ȧ}I4 ѐF$\}V'HkKq(MKDE
	U?*26"8,5D]1$NaB"kX@بA!AC##chC#fBCbZF
RV]C]D_	J{z~Iz :V6VF
Vgxr9Ma1VbT.&2*zPd-VkgxxHh`xء!1mGi|bcB_kx_|bԞs
&CFdT ccCiD:ғv7 n-wZ|BF9uBBȥQw`ߵh)$"4f[;6F~nƆc1%9,$*&܅	va[:X@юRr+W&aQj'EƦ.Ev$H>t;D
ϐ|HLrבq*$U>FռrHr$;9XBRߏ4ԮIQqu"HzR#hJ3$V7FrǑ` $\EH9×D=V`B8.mNO0+IƄMcBQ+Lue&ܮ	+x`ØX7&˺1q:Ld[UĤ6Z`RGlt'&49&ߨ)FH\])=2 )g KVOLD]ǔ_aS0Ŕ)\1ʐR|?SۺNԾ9s0uoyWLliGh2Ӗaڡ{1	L1uW=kh1V+/LkmUS0sarxfT
3ČMkbd8h37ƌK0H}2Q4fSθ|'fY.[Y/TĬc0
ZY_F`v1{xdG>eS%z)Ys9=0'G-\0טvs-`0kjۈqwc-1w`̽g><aN̳;d`By#?
ǼIc0/5>1Mcݺb
s1L)?̿ot_!1X t5>X`}~
4X+_nKXho}n=Pz~ڵ l>E=\hbc,٬YE7a-;wbX{ ƽi	XCo,5K-%M`Ʉ{dR6XN,<K9a_,
Kuϟ`,=9
K_4aYX6,eWcSo
Z'bhߣXm++Ċ=VJae]L+7
FX:7aUXdtĪsj1k:VǽjW5R;U?3RCkOCH]0 H}TBT8eT.[Vwk/kxcqX]X4V74>N*?BZHEnKH1"Ҟ쎴/Fzk.5V`M#ߏXӶuڨ;ۉ5Zcmð^2X;Pݹj־k?|WJa]߰n҄CXw)euO/z2Xߧ~gQa"֧;SO`K3lP"^b{lhw	&CWlS
^ĆM6vƜxg[l»4Wl4o_h={6ͳFaܤ|w*6/{eplI-Nز~kl-缝~*f
N~/uǯzL^bMLklVW+ƶ
EqضQ=h{lO=	/Uovvi1,v`b|SX6v<;>~Jmyܸ!;o>J',~,`CQjE.kPx~]	:x.7]O/cw¾=!@#"{x==Uc챰{=>4س}?uŞ+_{
2
{Lީ5C7y",H>W5Ua߀~}OtD?)EnHT!K يH)?Mv U~2q 5z]BƏ(+͝Go
e'bbrdcxؿ.kj81
\Ϙ@h80tz}XA8co=ǳ8j&6p}8a:Fx[q0r=耺^a|ֳj61!3q~Q8rTDS-dE0Ȝy27~̜v3zaqxv8rd9ZdUf<)YV8 k׷lduY9YޔEv^e#'r5Fλ8{uGjؘ82l<#&Q68ZHun4@38:y$3GÂjmv
r.Cu?;'9{
DnȽMD`>Lcp,pd:SqQ8n7>S:X=8~]0	'	qb'2Odipұ;N:Ypճz8ci)Ypj`n/ڠhqj=8Aξv״p:i:yN;g4ѡ8ۿY,܈klmmVِi}qv磞8ZkAf7p.Qˍsܧ#8o?qۍq~8b"+ߦ;k0 /kZ6#.춉ą
rp0o*.*zb՗yXn6.𛇋g/;b\\Kռ^Ҍ*
6|Kҵqo.jZw{r{=qy<-./[G`A^һ^:țopyG}E%߸9+C:Õ
ĕ'6JuvߖR'
W=y5<jKj7ڧO,WWQqfd\Wǵ?Zh7\;s%^ty'zq-4^t%6~n\?_k~
[ոPҰnDg9	/7r	i02n-)&=LV2V=p}|aߺ{AA:*n]k%n;~q{}w2[ilǝ6I3Q*L=wvh;>]ݙ4*rqٕwCu02rLg5ǽ
ApVcV{p/gܻ{
P`d%-Mh ^pTc
&[@ꇯQp{&
QPG.\ɧzв{?xFrTCAxTk X<x^NrN&xX8׻xehs<\8P-GuRfCR<+Gx0_얏O/¢>xx<~٣)/X'5FIx2pj<IO8iG$=!'zIqwS<*7S <m(OS*Ӵ<="[)QX VPw?
Q3
4E2LȫgfE<Ϫ6ǳZAx֢o5r<
چgC٘Vl|d<[m.V硿FZ|f<tϯXy-#lk(^DF^btb+/}Zū%xfrq^w/닗WJsz^Ww6+xܷ
^yV8WxU^kJ?>l~
xcs>4l7msJx/3,ÛhiE5)(rjE
FEQ(dqP4M/oE-CQng+]Er#P*ޖi
o	xow=iuoΘw5+4;"wtYxp{<nޛv8o?އFxw_v
>8	|.Wf}>/o^H|RN8n|\bzt'4<ç7Ӧ!Vt >*׶Oͧ[t,b-_,/g<|wh"<X_^k݇uN:-|1gf}O58	_z.7㾮ֳQ[|[JoGF·!Kz
kK_V#3byM#et#X]
3;?o[4?o_
w2~պb<~a_u~=.߮WwOxq4~Oqߧ;^+-9(Ź:h44eT @DTHfw.4= :xJ^k68
5 ܴw~eZ%Nf!]%?C;q:#Ǐ;s4^>_rx iSݛWxNU^|׿;:9NgA(UPC	>-*A4+{9:Y_@ףF"˭fts&z@DݺН@5
@8b5[]~e@Ψq{*ʇ@j\q:C
L!M8i
̂z@H>C:0b4;M!xFeZFՎ9¨oD]7\
mѱ0Ɛ0tƓ;zx=B}OeEy(eJmjR9
͂(z-{R}U]ߞ}nu+O~6Ǿr.{[`b2Lj~{ I4|K\kӠtQzܑ>(=9J7Ni[`ڣe&%LP]m~ی	Na6&UџQl*i4e܏y=le.2PhZȞx=ZA2mxR
r'e]<#q15kBx{g:C[}*m(1+Cze]&lϹ`^.%=ny̙r0?	7|[t`~$c%r׮B9Pkź(7-pF
Wvܣ(_\ʷNEy(?T#ݟMQ~嗽x1%|~ۢBY!'B;ǡyUP{e~GɎw+*ދߎJTQk#7TṇRXa2*DQ)*=|q
^5
^}{nFXkEfk:as,7_Q܀ި젹ʮPOTTNtWz~BԘU$l1U
kTuZGYˢꢜ٨CnGP5cOT=f]ae_V'jfA:iT"X:>V;OՃzSXeTkjoٷ}PTg=ך]èdT\
սޣz`Փ.A1F(e'j5FͲcQJԬjLۊfƢPܟ7D9}RLPѦoZDŭQkCխt*j]CVv{= S8AЍP}ңN_y]:bۢ΃ePeçր0	ea]jDuRXw1}VƄӰ.j
͎Űݤ3l!6+a3{9lR`׶[y	ی7a'\;#kvCgn5]n5
vϧV} ckþ㰏9 `lا7TW9ái88t>+GnCD^S8˂CpuEݑeffcu	Q7?a-Ê
g9kZnp|3NpR)~ipZNiN#Q̰
7 uA#ޛQ#wي'XS(wnr
k:;p~X
ONϝ*h048|EC	hX$4]u^wD^308q|0:4|6\j2Ri\˒1"\V=p9a
4فF뚡 <4{'̳C*Ϯײ5pZנg:\+挃9\[Ɠh=ǜƳ^E9ơhH@˛IFh22M=*.4mR-M;eBӘhNh67-Gu7ʣ!hvt4{`{f_N-AV+мH4o]?}AVo禋hm̓.Fych`x4?/Ayh4> -:?+@~MŲ`=Z-N'GrւBLG˜hK?B3~U|~.Z9}@/Gкhz9Z'5CM˴h}! n#*-x]1Ɣ[)6?8-f9oc,{bGp*z}AJƂ(6FF	6މh1_6Ih3S*6fv=hswEڎTMA+m{<յvLCuѾFhU<$}
_9& ;kc/=M1=vgxq$<cL9~k2<|mσ/<oo<;~F!AA7F~æX{.ޣcdW.:%@5^1:N?"&ӯܰΞ]8t)qCUIXQ
UQ3x V{gJx}5hGxEט&Mg
rxޱ#='/<wN9>>&g#ewtMBK3ǃ2~?]voKDECr	]S˻iI):U[\vڑ/gt-SZtCuts,ޅn־GtknI
mG4N܄n:G_>§G9|;>9Gg=q_7acV}~T?wo;݃@1K=e|t9ǗZ~K{^ߩ9{;~wAMlz@:G<#cb豨xXu4=ǧ[4
=<+Fϕ33WIDϳ"z^}=_@_ez5^M뙋Aף鷞c)>}O;/koomCNwgo]5Ѯ4G!;+)}dB߇kCy5ҬA?{y9	~g{R|^t{/ѿC-Q-@6gϷ
i|jv;maS]? P="'DG1]y
_~i=8a_ל~Rx)o?SG[}l([zLBPu'To5
|†FA'@pͪlW]KwU#s2Ç@pѣ~"xQ.X7k>oA=|@kCz!!#[7$~@bn+^a޷k0ZaPߛrj]:G]~TmIP,b#m΍AUfUojE?FXx@X֯a.c07 w1$d%luJ@nUw>2~QS'~I9,GDepR> bMx6i9I}D>޺J}af6kVҦ`Z_U5a'$.{p5hwËgwBTeE=56潨۷UPQ_8#ꧮR%DGt}Pc!ۄqAEbf[}}u<bKDlmFl6
9&[=#*f8bDc\H9#ňG`Z4FsJuȉM}0r\cF+,0YK/qǨCcԂ0j_M".Ħ*"z".qs!npĝqq".o%⮸GwV]/)
T׫V'6z1;1&N1"g?1A&-qk/`Ij>Fa[.F-4ӮGi=4H0;|	՗UAB󾏐$Z+qH(ÉI"g$r"WJ"g"rETD"\YNS?1XSNXtߺKRK&u]J~^Y?,k? ?[j`?<? ͜',2O]?c5_v6~z7S^]Qy׼"E$ޒxG=$%5H<$SsNqjhnj9h.54$(\k
+z]U^SLPs]izN#
s<jhnJ$5H='Hp,H %O"H
IĐ%1HHđMb$Ƒ'`,KERD 2 -$X
Kd$[I&1d)$Jb$fIb$搘Kb> i#Cy#bcɼOL`А΁|h-51T"WQ+C}moP;C}O橺s괖ߧο^u>o{4<4OYFHU{j5pd-ϪsnZ]l3fe2I[
u-Im}R>)4mt&1Cڿ_ڷKCqN0l/NӐHhm-&sA!۽RZ[)u8! <$uH
!OK{:ja.JSҞi{6ٷt^MhFapIӂ|bi^LQj4CɱT;$/gdG萋`i.e՘{ɧ2ls^]3VzONl-:iZ?58L=	YtzW٘I[<ًsQۖmeV*McdkW/Yqg^pћ4j5;{Os_: ]:"::IdXГRniIݺIftb2`VdN漽ѣjC{v[ɞgu%I#\IRhhe34f:[s=9FqI;#C;RfR	%.hOz𴱺ƿKڲ@O4JFi8z7obX/K7Cq
l%
DsɁ^?+`8F18acn@/@/X׆-;zp虨c؁]=63.ifT2J't)ek^ţSGQ58MJTҷf7y(iPiAi ԿYI9?یOsTrzvV"m 2ښ]ƿn}ISe-bflHJ.i`Zr?
׿Vefz}C5%oP,_ۊ%m
ѿ%KvgP׃XroiV7
J[eO(4Oy?а? ?06XD?m	i5I"?POF='\ 6 ?mͮ?mk`RkLD)TzR?	XSAk<ACd.iDP?;K1ag))Йt)Ƕu'd#>!/V߶Z|fتl"7+2ͬ*MtQuXQ[ĵQ{n:'zsNC|T'i=Cpk.=pF1R]p-]ȻH:RhuE\pљKIUoB?/o7f\}䝠TlKu?vf_R_ q;\vuU5bHlh~h-,*|W;,)?Hd>ѤSտ!:xCqS):&0cW}e]ʾ`agΘX.Ø+\7laKhagYdVa%F%Y
Lb%acNդ5Ƿ; 2Efoɡ\5n%_:Y:@~ ?:CK7lF#,R,IJ&̤A}
WJ%944-ɾTMڠQ]OsIRz7QN(bioz^e8Mq/S{rY^߻NKGz2޽t65EKMIn,i,Wl^><\ҲX5qj[)ˡj*5ʋ4{YN֩Y^fjVwi!ǩi)'YYfyUJjZ{Ԭ&WQf
y5j֒Y[^fֲ6!5-jZ5dc5ct$Pf}rS5
l("SRMWye{5j6׫LU\N-j5[jɖj˫l#oPFvr#5u۫AޥfGyMjv%-'EfWyh5}jjvCfOyvjfy}e^~r5k P3P^ Yff|@9ŚZ5ɻ9XQsYp9\͡f<_HydN^5l5njȝԌg9BTsl(yqR5GAj+OUs<Tx	2^='#e<$)ɲ+),R&ʫI$W%e\9)$R6L2]!elKL9Y5)eoR)̕RH/ eܝ?)	,MHY";TI2):GRN*9T9rWRRHY+'e<rGR6ȝI(7'eNf9-)[>l]JىaRvɦSI#;WG>)reR2d;RsH9 o'ܗCFR2eRdRmI9"{rTEJӮ?H=hI=`'ދ
QUH=`86=-KGe5ISR(R*:a7YRo*IRo)b;R~Er#"'꾢=@PR*z>Rt>Vt=Q:B*SR~"R+R+R_(%%.hiQė)oUR)
֓Ah?~T~Rpϊ6/Ԇԯ0o
OWfPtIvK[R1{"^s*SǫȔ9ALXT$h{QC S0H<f
wXSfD4SAmp_gH-M'tU@
OmQMY^5EGheh	g
Oȕ )}k7E j@UW0
wH69EOSۄ9s+N$"'<`iGyS@p <@St=EG")\}EXLS'>ExMS?NSVЖw	
OhD
G j^	
OdTt
O&* b"7P޺(|)µ  *>
Oh* wWE}GEd[j-A;!8*
>@IT
R9`EKFA"vΕ(W\0EKHVD!HH'R	p*RRhLNTdHP8nc"2JЈSD"q=F鬱S[xEK%(rʧ5~*\
OdEE	UJP(r6Y$E)ST+PI<]შT5*"v"Q(Z
U)>	+hBMU8]HTUE8BYUD祊UQZ>IW(=
S]>RYqXEה
H	VU*\KQ7(<=ĜUt7+\1V'VEKߦ];7	;Paw)݊GQrJOQt-)vuWPxl**ojKUĕT_E{|DQΞ	L`.	sbEL`&	g2kfIL`ɂ	%3	,D1L`m]&0L4&0ߖ	,0uU:/&0W FAIL`aAYL`Xxܙ0&0l.X2#nx3X-a
`]$&0	,0E	,ek͙&nX{&	,~eKz&0׈	;
D`nXxBkyJsCھLT`%Wb&*0Me*0
,xR/T`h*n&X	
}s6T`%#X8FjSyT`XWLPźT`.
ssT`VT`+XF3LT`.
ˠsT`q3؍
؉
]GR9G*Њ
#
̟Z'&p$XOPřT`T`9qT`.
,Z107P%'*0W	IZST`~!7fT`n>XL6s%&*0
QT`~2Xd&}*0ה
k>D3ݨq*T
-\3*Ԟ
,ekSy	
-R*0\è|T`~kQ_* X1uL`N&0es#v&x	L`+Xgc7Xas3Ub&X&2wL`AU}h;es
wg?DL`^4	2FL`aXhW2L`AKL`XW  &0?	gL`nXw >&L`ކ	;̘Z3L`<XkF L`
23Z	e11	}L`I`k;Z0L`2u;Xob
X'm
1L`8>2L`ɇ	O7 B&8	,z1ufL`.	,d2i&0w	,fߘ\}&00u&1;<&0mdk+1zL`dkL`o
;Zg"0Q_t&p{*0?
,uX0KT`>
,T`
3XBjRT`c*
,QT`XEUbOT`+@*Sy=Xۅ
,ß
̿cKZ*0Q(*n>XKݨbS*.
,>Ϙ}L`*0B7X,|]*ؕ
<*0*SKL`M}KݙvL1T`s*.
A:RuHRu+B2XB
\8X2k1PT`u*BF.XȦk|:CtT`mOb9*Ξ
,T`
R
QT`"Xb"X|N־s}`*0Q(*p
JR
mCm*	,csL`]&07	F&0
vL`Xpfs^L`!XL`J|&XeA&N13
4&033
L`1 S&0	2uL`ecA1GX	bÆ	̅1#L`mA&0f0^L`-XgAL`>	6	90&0	`zbtL`qXh؋	1sRu&02%&02BAP&6	,&0~0L`>  &	,LbX۔	2uL`n!X;	fB&0?	,3L`3X	,92Q	dxX;	,R3L`AcL`!	!L`r&`
D`+XgNnڍD`a
Xw
,P
6댩AT`XF/*0ߕ	>XF¨I}3-*PBFcUtt*6
,i\:X
eS!Ru| X<G杩7SZ*
_skXBROFXT`ѕ
*
Céf*P
?k[QEs&4*6
̷XkAFXhLq*Nsө8*vT`ў
`צkg`
̟3A*0\I&*HVS{LMT`:CST` *0(GգkRy{*	
Qщ
M־X;
,Q9*=&T`X<O1L`3gAL`Afc.
2fL`c+b&0	L`X	?a;
0|	}2uϙ:g&d0%+&0	,|g0RL`3&07	,y0~L`]M&v,X1;&XØH&`3uG'&v<X|z?;}ײҡäB5*V-URΜaMА#͵E!c)gxO;bwBbNw#pv# ǵ/.?UcC<9C
!p	m8D| G`7N8^E8n 88B/E>i#piY"!p~ c?Ax$[w8]?!pX#pހ?SxC`J9JNQد%	:J<S[$p#P	K`&Z	G"	J$p?~7-ݏ8k%8$K8'C	l%p-ñ8^#	<]{vv<?qvK`X$p#%pl"c
	l}%p!D`'m+خiv$p%5k	H`	Fؽ#k8tP	gIN%p.Z	쏔	$pj 8&m
$RJિwIXS'	yN$ph)ε%p+8N+%=K3wUM	ϕK$uA 86@F#oW> Χ"
F`8B!p)#;-lVm"pգ
mG`7ӷB`!B_!pa(]cv8O,~"X8D<|?B75.U"E7B`<OC`%G!$IE&@`߬*v!p[!U@p'/8wB`8G v	烋8wDs#؞Gl8߃d-"p,WlW!mB-8)B`N}>B`;lˋ av%s׺B!?^g$pzR% Xn!H`,em <R8!	l$
G`XnN5$II`NHડΏI`J$pJFNcC	J4RV^3$p$pQ%vv$p8I6ޕm$puN% ؞F8,b/f	J`Ju8n%_"<	vE	I`{SWJ[	ZH`?D=%pP[x=${O%-ӭد$pL_JN$a'	J`GKI%pj&<I$pW%ՑyIX'$pl+J	\!7W]LW!p<~@7@"bv"pڄVz	mm7#'ۊ.C`ǁ!p<Mj#p~r}8a,4v#pXqC8 E4â"N
#p:A#O)o@"6\5A
s3Bnx:/G`n@P݋"pm*W-x%aDt;kf'!p0y 8MA` cSCXm	 P~l#T/έ38F`7|<cabCÏ8uqNRǃ$K`?\8̕$%/%p$I{H`"(F͐	{J`4_!R	;H#!	FK!8%C͕ ~Qa8ME$*s	nwJZۅ8~zKEW%%	^nv8vJ0HI7vN$͖vvk$p"C	liD7%pB$5b	-	lIUWmxN%p:W[<^D	\RKpJએ$pZ*%k/F	잕q^%s]	 p-	6I^[	7U7	J}دFq px)?ox>*{w#ۈaC8G`wE'8t@su)y:!pա
VlgE`CPS;Q!C`; C`;C`28q#p8wEXs=8B0mDD*g!1ڣ
	E8C`~.AxN=8G`}_η#Ӓ"1!pR[Kv#}gv8v9[8T~'+@t: p=8~N-8DxO7 p\Yv8=)ǽ!pk+\PKN    PK  C:U            1   org/bouncycastle/crypto/engines/CAST6Engine.classUKoU>yܱ346MyLj$4Ft gdqƑ=-2B]TQ%~dÆ  *Xb(sgƶAE<wk7 `om~$?
 bb( J"ɐ!%!'Kd6\iFNC%Еي[ײK̍z11 d61ri1Ors)VN=W:F0N0!@	ξCF\X's=z{N-:Mڮf=/]wtNS/9bTW ]|5WyM}NUm5)kRjv-6vë:)rRu)jmjɶB\w#b/"~Q@gp^d ¼:>#fn:Eo&.\
	bq	458A/0
U3F 	cSQx0VF0M0C0K0'TvP܆guzgw{y{Gp+>@u`C].2eu2{]kh͠_@2S=~	bwCeUK~< H?_ne6ǲO?$x(Z}\_׼~֒^K-P,Z`z NlB,Г=5$C.X>>}þpN+,6,(RЋbPPYֲ*n'h"3T1uݤDHҊ2!*bK
HrHO
c!uԐvV>3.VJ=IC

:>
Or#::}rӧ!+a8|mIi;0R߆_E=@D8 ?s}(^g;x	B(:-1pHc*WUR5FLC14d19bHD*&C& KXm?<dM-ǯEBME?v6+[J4$M1]@Ai>f}IB'hnЌ+r܌Y4/)Rp<C]ٵVrzӋ;?;r0C!qLm>~ߠJaok3ϷFԻ
x=vOr{PKƧ  g  PK  C:U            4   org/bouncycastle/crypto/engines/CamelliaEngine.classw`U.wY) 5D@4Q04 !$4RK)RE){bł
}ff'sϬZkϞyH`3ƌ#;v`ܸq&L {'NL<Y0eԩSӦM̘1C0sLYg̙3G0w\}'7o`.\(x-,^XtI߻tRe+V\Rj*իk֬]Vn:
7nl4IlڴIyf-[[ne'm&~رc`Ν'xBg޽{<䓂zJOy>Һx/ॗ^˂W^yEꫯ
^{5믿.x7ow{O>~(裏O>Z<xP駟
>3./>|Xp{pQ_-8vo|^?~|+?.駟ĉ'O
N:%믿J)Z %Js9DAɒ%{TRH$8t(] C1FPLAٲew\r*T XRJʕ+T"Z 99YPZ5AF/PpE	j׮-S 55U&ԯ__РAAÆ
\rK/\~+BpW2^9W]uꫯ4iDЬY35\#hٲ\nAкukA6mm۶oQ.h׮ছno^СCAǎ;DNrs΂]
u&޽[ovm=zz)KлwoA>}}
'8P-4h 77W0x`A~~@0tPa#G~;Sp]w	F%%^>/xxJYNJ5WSU+{0fn[ڭ߰/v#_[{ggd\SG7IoѺGV][22T-L闕[lD1muh}ҡyzz=8\ݩb>ѝ=\ܠAta
/nk;m3ާm?fc`Yg*9WVA~ze5 3~VNo;ڿk&W?9y<d3n6%7rpAVnY,_.߰yW%<<;@߫Xdonh|
Y9$ڷof^rAnnr~<V>2eWUvvffy)h9wf[UqRbgDΜk@foȎUp&yɹ9#5[a]y3ϵeA3qeq0
12G3s;4ٙu@u"kp<%uvVt;3}f,g⚌6|g;;}h7><1u14 ڹvy3
v$nWrO=؎}~߂rݧ7W\g*[>evy/ic^f~}/zb?3/ 6h/>^-Gc41Z0Fƌa}#c0VƎe#c1Nƍc#0^Əg#1A&L`#pseDV?2d$Lb2&ɓYdL)SXLSYTLiX 4L1ɘ.W2|3XC̔3YHL̒YXM,̖ٳYRl̑9sXW̕sY\\'
K<7e|?rɸ,XK`,\"LyVb ɢE,dŬd1Ȓ%Xd,<(>Yҥd)ɲe,dXd,g'+VxHz1+YJUX*իYj5kXkYZuX:<,?ezg2G#L#,eVeFd&	ef֌[d[eVVʣQ&Q6ٶŤlvپۙckKفs'Lىqyq<d<.%vaK[vn&c7Sy	VȞ=,Se޽Ue/ɾ},Xedg*O>"VSSd)<-O?rV33i<+>VssxxN<<\y//&⋬}E$/X^ˬe"RX^ꫬU&ƢX^묌u!oX曬M%ooom&mV;,+ZZ{{,=/ϪZ,|(~Z>GG,#|,J[>'',XnYsA|*~[>gg3|.\>|%r!rar_W_+&+rv9r(v9Y8&ǎ|cF5|ooY˷N1߱gq/V~ďLƏr8~9䧟XOY~?3?~_~/L/\ȯra ℜ8ՁooM;~g2~!??'8%NqQ!'d2C
ifΈ
nq~Hll,$..uHBB#.F \@p1:u!$#.F \@p1b#.F \@p1b.pERfMHZ ))).P \@@p[.RQW)R \@5jRreA^pzҸqc+W \@6m
ҼysH- \@|\{a \@ZjB0a \@p
5k75kH.] \@p!B2.d \@p!BH!\@ %
KHNN5!C@ \@p
2|pȈ# \@ցq.x \@p
`Xq`=0,&U=`0(d)SA⧁OM|LY ݳA`dz(|A/!~ 4xbP%.]ںuC +A=Wp\rr A 
of-v[AyʶlHNP@:	=I{Ay)PApyd9AW^ 5y%АA>^xD5ЋA* x-Ax$=p? #p?~?'spC}#|'c|
8߁s8γ)'pvSg_I8ΚsyOl8W
			?8"`"!b夈X&#VqLF %(%H&#Ap'OD"gP$2Q(J2q.RD)N(D*"LԊL_2a80Q3-0ILF,'^e<ξ8rQQ
QQJQʜQ*QQdNHfkTc:'mTg|8Q8&q!qJEL伎LFMA-dpG
"YéuHT&҈ ҘK	Pɨ+&b&c>u@}&4`!@C&.!FFKi.e2˘\W0q%QL4,hd4\EcpW\Dj&L4%9hd44#>hDs
LFsAZLF5T	0ђ4%'\d\+R:&'WV4Vn`5	Ck&1a-1C[&nhtt&6c&hOОHБnf2nt"-40љ3]!0]]"2э8)$3q+ĭLF+q=&z0ѓj'LDo"LD&9E&}i*2я+3YtYL d$D6E601Cdr1rL1!C!<<&#OODFC621xc)83#h9F0##:F2q;iLAqqNJ;.&F|bnqM|')T|*9q*1NS*)SV3PJ%I5yU9ܙVkq)N
k: wY]k?twnûwZ;2Q~cra6QqQ_3(g}/$ʧn.%y?Qa_A,&/dDA>NTD2G9(m2xމS(}nmAY6h# 96rm1F^B)bsPt
I6n
&ؘm1#mnwڸ(wmc6%=	A`EnL%%ߕ3r
:ed~B_bf+;SE]h}p7_~*`+cZ
kth{4~m6I;>½$;S"^WϓF,:_+1l")YzUQ;`I驁=1Ŏ1xlx?3{t{7w[nN5;yG7cسtgf_t3L7ctgE2m]w"}=jZc^-RLQK(Rlv/g^?_Mcسwgr_w5Q.7m|>F#\Wď{5(-Gz|V}U}f(T8FovݬjaoTYqVǊ;;\tO	x
gJu1H=6
3۟FI[{LߎLrEGjiuwRY\Ru̙#HoGHjtOKM;LC1iubV'8.|>~r	ii.:F;żF#;~h?,n8N.o:y$~wql؈Mg[0Ξe\?_
+=/6"v+KI6bRDIt[qH܊xnq[U\
nWf9i_d7WK]A.;{aS-$ť&ť_q7RLi''gkR
&G"KuTYv#H
FLj߈MMK{43X#v/ܡ|lNĔv'r^XNrZ|߉91b<]BNDIAkӫU)nojltC_8$ңcoؠ[,-2vpT/Qg
D|KJa$KڿL9с+)֙~EE&.+;B81<R3Lȯ?zR?bRiIv_Wt?+aztoMO:_8"%
vV$<}zW]SS=1EOmUxҙ_L^%'oju䥞y3*ecf;p#W8je%q̨p1E[4f(#f'wuZшE
YNјEReВ=&Klř:-M%..M゛xRڗ8EXD6TNJ'U$R8NJ?6v%ɩv%)
b+8_v;͸3g񌵅)]qN/WJŶ͡$vwN$={bR)f\On/E"gjD[s9sâAV?
btNE(vNbutejߚzSÔlDzNI%׶`vJ$ѶvvI㉋vw}dG[GkRgsa0y&)znJ	TL)~:wwJ^^'hKqϕ|kM(0r!vr3w-]w!{[{m3%|{G`o$KZ_̠JP:4~,ߺ[pa3VuK//<URyv %Ow
J^%>%K$6|`Ƈa[fBx!v`fi%NO;i{NR&;5pw)ifb؅Y2e`
1#=04aY&\L
d
03˅ݙ!
jfpR8Y9ͬbV
/f&ja]fa"F+p,	fY+f3̴ۘ0Y7yqXY/Y? 0yI Q(pza?faKfp-pp?I4L`63e-'ׄ}-ë׆11e
1o0[mۘmÚÀ&1ۅ̛acf!c8ys
S<p s$KVgvg0͙3o0{2{#&fpw'b
2w33Yas@X90f
`=/sH6e懵%̡aE\p"sdͼ=ļ#Ƽ3+d
2פw)-m3&lfaEی_m&'|62pmcl35m3-lgOm
wfF63|
f6l	fnX6m3/|6lsX6,,oa+,
fqmml`X6K8,fyoE6Wfe6Yβ͚۬
f]6Y#᫶ַưm6l9<6[l5dG+l-keηP)
fw86Ol'|6{v<&<mT>c:}֨lQ#̱FWF׶KFlF/FͰkm	FMq2{6}w޵&h`ZbLFnۏQߟ׶ԶN&pg(|am4maW7&5Ķ_̳1T7`m3}5ж?GG=n?m6ʍ/FQm{77ah۞4ڽ)_F_FiSiQL@	1Fq5?8 aXÌe-AM	X1޲5JftIKQkJe翈Qv*.m<4Xة3({]YX/ea,o`g
F}da3R%@YQQ-oFٻT7ڒwQ&gp529ηeΨgsvrmt&hQvVN3
|	c;l_luGzF[8/7zrQ[-|&66ݽhXL`G	~F
a3?Y
9e:Xծ7E+{o4խQv2n1kQdQ/XY([b:k.F}fU4je(;Fݍla46	zXeRQe%Q>LSK-Fٺ	ZX$
ˤ	죐mJ9FնTZilg}Og-ֆf-2m+i;VMl_0xպi`Kz2%n*8;4ͷc
ܜ<ΨSO.p<5plM4p$rQ7L3 5Aj70jԨF5v퐜cKST3j# ϙjOU7
ws.6͏K<!g-W8˕F9W5_8d5;FNZlGQn7֠qk0yḱk0k55xákQ]F5uR	\ͲhG^c^|ο'r.=eTo ﯺ/WmèD*oS:_um/{ߠWW!/Qo;-QwEϢbIk7UGM9_0__u7ZwRߗ*SW{Q; opC}_Nxu娿v3
EEnjs(c˭zwu_Wwp	E/J;u/~9=_}es_8uO;zBEo;~vߝW?79uWOr꿜~;_w;篾w#_+/W흿fEWՋ>e=zXF%'^8uXo9N`	W8q9uK/pXs{zXp,'n_{{;1':o^!N`}X;N`\3'FXeN`C'^O:*/p]/mN`=	[;Ӝ
(y̨{^`\֣F/>?zp/֧_S/nf.gz_}yu_WǼW7xO_x_WweQyQQ{{_W<'z__}WW_8Tﯞv/΋WwQ/"x/yC_:_"!s_TM_WO_xhb/zu+ՇEs:W{+_=szW?E㽿zWOyz___3_=_ԊW7wz[y/UnWp_]4tM_5;+h_8u
篚U{W5p7*篮_5i_uWMv#WAUq~篮UW:
_ oU㜿x~v_trqNߠ79Mp_<
j8U*;Յ_|]
A9/N:U+N/:u_tw͝S/^tgU'_>}8l:U9U[vz_\w"_w	 .q/:;U58E{*p7hmߠc:qp͜_wb7hUӝA%/_W=C_sj]IoP/T7uﯮU&zWUz_Un{j/?_xTokyՋ_U{
xUGozUgzO>ToUՕjW_r Wz@{Uk﯎Ww{$zﯮ8ﯚ
bA5jUzq{W7FU_uy6ߠ'hEWey7:/Fz1/;/OVz_WW'y:z~/{+PK_")  J  PK  C:U            9   org/bouncycastle/crypto/engines/CamelliaLightEngine.class՘	|SuOz{CrZEmӦEA+ -H i$łU)
Ό,/:83㬂~ޛ۰y^!_8JD鰲soyYK)W?OyQe[Gߌ(*c^vj[bRsz;iF;i8i¢Jsmd/,Z0FIEY)cJ]VZ8$Ða8ôRαHK$9cM5*0yS09,FB6OHKz?FVldfL~!zR`0KfL|e.2/
,SI&x$a֭H呖$77F=FUF\_:9֒HCpF!\EoʌU`fX|jK}|Ek2kܦprb)6/UmFפh~0qo%kbSv7ږֵ56d,M4p끨hPY4TVBщe3d8̓<uKJR6&O
ﰑe*ʽzy5#:;$LDdYk4ŶgHJ	*L7ZWԇhLOhLOHks8n&R/ԇM98(nƔP2TniJ6eߝw-c8lw]S6%j&fcx2"Vt\'NnHSsrisYsh*(K?
[<K[1$5z7㴳N鹨</1'Rq>U
rv@D]=m0o5VT0dI4i4V5TitFjTeMר
UuUuu2iic3{i,cp~Uʄki
}ɉc{N{uS1
uS"yT񂉂KYnInD}4i
dqlu0sSZP#GnSM4Mek,,uMEHqAB	v"EEut ].8\+X-NFp`:7n*Mp5=.jxO5ӄZsC6]3q/<քa5jF!rQZCaMA>7 n,u088]':^<9_]q\\;Gvx_$?.93uUtL*9wl{mRP[^l7a՚.vߑ~ѯүJW5J,L,sɥ=f0nT	a:TT´fV3ep`F4!kHMrXACJڐj[w
W2[~݇v}/r<̐ǣ%!8e$'(?;ۋVE&\];nqR6zAsg>|,ghR)A4
ksX}X`<'Nҿ%v`w1lzO޾@~\˱tdÑ<<歞G_Ԓx޶ذIRZ-];˶s'==RV֍T'O1 sVY(ᰆGjٚ/a%3ǺdCC".K1ZTxwim<u3.'
C4URn	Kǈ\#Y[hl\cdT"iNH-7cyx5u/ #h!P}%Gн%G~G'Ez+v+t+ana!vwY,ȿ@San9aeJ3btPk99)bvPô(9lyڳ5V
˵
ޔc8.Ӈ"O2o(l&ůİ;C!@һ<1m3UebQiNIox͹J݈a=nّk7Sszpg9kJ	6#Us}pUpvEom0;]J3zZRdmVVʶnb1"V"i
k`++<J{_LjsYsJn"iؘ*\G&vjn^T/UY~s,,Տl^Um ߨfc>㔺^	2nnd[쩟K,ĪF:uXU밪![ ;jHhI찍謁iI*&(bڞʙ-4RY2h<mP/dJjLRf?5cRNR+c\fKy;2f%
;6z)ihhFWZNwf=NP 7q[q[?mq0|UW\h	5hݤȗ<_\G].xwvye7aoǾT;ͅ.w-='ͥ F*ꅄL`Uo͖8xO|'' S54iz--殗iL;kr8JbOI4J44Hmwni)~q>y:@|xAA':i!zxeɟuzCe5k98>hD&RwIyy]5?hd+/Ej>H;9Rtf4ne_Z9H⋃s:c̵Gw'=zLkF_Cǎ!Bԏa+*3=}<<lb|.2|GtKd%CN:f#=NhFPA:<@P5#tz@U<N˓(}!FGA[kv^[tpIMP?5Wt5X_5~t|#+<t^<dfG}>0ٜ`?\> 308W@/C`
<?ǁE|_ż,E_K'Xy48
E`#p$_	Ev`4|9x1q3	|;8{Ap27S88_nrdxV og\o2X9+<^ςx ~"
X?k9<G-0`#gM\ 6s9~\}(W8l῀1U<wUy%x5y(e++}~\ŵ|\:U̤5MzZ"r_+oDn"pȭ@6 r;? rJ] r7_f5{}|
&.o٬
wE⟉<=D"/EE"B''§"[2y"r6vDd?"y߈"{!}|~%r_1"zy9EpQ\/rKE^D^"/sWc"pȫ|D|7H7_""sȷ3~rP{.o>&/'C&#JO"?sE~E~ΓD~yy?E~͚oy?E?;Dc<R=D>f?X?"E>DD>B"5""o'_'g+)99W|_׈Gk PK]t  !  PK  C:U            8   org/bouncycastle/crypto/engines/CamelliaWrapEngine.class=PjbZd뺩T
~IBQm"&$y<w }	v	E2&hاkyىy$ŧ(:ޞ9t/i1szAPt:5Ov<ڮHVe%TTGn8SB+]K% uzwxPKa   6  PK  C:U            6   org/bouncycastle/crypto/engines/ChaCha7539Engine.classS[OG_qb\ڔ%
))))8575\USeQTR~@_JR*@A"o}oz]Z9sc o^(E/+zvfV2#vѼc|^yQ<7ZV&*-*#Xb3Mo)牚ݘWWp9aKj.3\RjMMphK=tvjqHb6/縂ᜰ+-KU-\rWnQR*C"Uq\SnWyh1
hH0mᬚRZb.f3+e
J*l5i:D:CDu0.$δ+
*+
}VG
'oK)ǭdHk-1ݚt23cX"oJ>_"<;7iercοFf7
nѬT9+̎mu:v WCusi]!~EG0\`$k9G"u6ngBiCB ^0 7ѭbG8U0 5$qxG[1LNd񮂜e,qߎaFegz9LCY
e	ӄ58dnШ,#;G{)q~$~A\Ft2'*9dCqCgGo&X~1+>kd2x=Iu<ix+l-&C#%hU2xTx".)Ocd3~D[~c'ݫOHױ%wƗFK(%&_b/)g0R'jҤ
{>%^bdҿv8#Lm!y}`X=@XXc=P^$=	VDAh~jץ@xʤ(65PK6    PK  C:U            2   org/bouncycastle/crypto/engines/ChaChaEngine.classTsU>d&٤V
/I%)Xjh!hZmra3#3/pgxґx&Mir~ 0x"*j_*<TlauǽfsOu%,
|*r "Ϻ.&?C#='B<]WitfW
raVmŴUj5ZS5u|yEu^4ga0M^afivK,ZtAj<_V#슫~gAج+us6lfݴН7m4j(e>S-7Z;o&Rxn/5*]5ꥊDn\72U^dUlTXVͬs7fӮ44rXt!vȦR/ϴ*Ւsh뼥Fns0ްʙU\/bU3S֛v#㖸q[=88EfLN{-Rfٴ8~1QahJ-L΂d5U,-'vm	*2g	0"*>pPC`jtn‥WI{P};^1ȋ^Aɐ&(d8 ,~ʰ2!2)2Cp$3M-	&m2Y	O,y	qd!:At8#0#	#.>F	9*,^;g4	0J1G)8r8c[|жm' [I{.=-0ۄc&,mN@ ^qNUqQԯnM;ŐsJr:Y9y׹fB00 ܻpm|O`sj	휁B>w%Y
#~wdLu
Bc	JJ{y ǖ-G@)P+z1]9+$ǅ9ە_*?3n9])u5& ԙ$~ v{݅~'TPq%|.w߃C̃c8pQ{(w!z=eOrc1.AmGcC߄K<A؆(94w(~OHH
mͿ
W\!zn12{unAxton-L.'[󧧵@Zh<_&uAӺ)8i
.H+aM	uYSєpZjpbބhJ45% 㻒dBaŒ7ezY70^"L)2%{Pb?JpQ<t劳+ԃQ
2Y\	eez؏rrII$?NA"HMJ܁݃ TϊYPJG	H)F:'~@=w:ǻzPb?U÷O=uܟDr@	3eNQL@9#2%d!5H,L
'7d9
(	\HFB'7rc,A?ac3 'Qr KPKiӦ  }  PK  C:U            ;   org/bouncycastle/crypto/engines/CramerShoupCiphertext.classooT'N8^麥KqL ]K)(EM=Z;JW|  H4(I|%ĹӎHs={7yC w𭈄Aʁu	7</0Ws4Qs2A5ej|Reg;Dݶm)1M0eVmt]8Y|u,}js´xny
恩^_zn5iКױVcu8\6#z>~hvuڎZ,i[nif۳f\rZcu厹ouv^{nZʎzgrOwtnВnؒnؒߒDW8zMz$(f) +-Q]>}Qx\ф=M~aFDgKΙ9mȸeL	2EJUHlq)\qwdL#ocf>I,0sEf$0@BMlZC		:>c9|.aYn[AK/ɅR5_ '[Ev/.6bHaX6{V8)!gt`&㛥1>^kO~Q;GؠEϑS9Gqӂ3;փD1Sԃ|:R^oE+#H1߈#Hyu$'Z~zvz!qp#<OPWS k!< OxZ\@hhtQ
^RA%j~l[{\`Z)$dh$(°(Ƌlodؘl!"eR|q6NQLe3VY!A4yFDN2, 	+Rp4PKҟ]    PK  C:U            Z   org/bouncycastle/crypto/engines/CramerShoupCoreEngine$CramerShoupCiphertextException.classON@$Nh((xn8)f2w%?/P!( 
IC:$H;\i/ĥN>ȸ:GJ856oLE&/(&&+M.N';LYOs*Yd6>?NBlhlL~zt~vFZh#PO-$F;/OeQ|4֚lRHam^޻ 5BNspt3ی[h PK4R`    PK  C:U            ;   org/bouncycastle/crypto/engines/CramerShoupCoreEngine.classW	xVJ6	(7
(qII)Y{YV&-.-Ҧm$CRzЖM[J>Rҙݵ%'y3̛sX!DPAu	H.nuq@0t{@8־vfΤȪT̘%4Taw[,ܰV`IeÉF_wSf߰ch3QhH9
+m[NYaz#R?׹Hm^g5~#[73NDR`V͖2Cj{&*agqsR;&=k
g3HHY5mvѾ{ufFO<idJ'U+wZZoʴ2aO*_6-36YCRܘ}F2o0<29.D\|9w'DѼ}qqlTxVx4lVc+o-r^㏯۷T1
ot,1}F#˙F7iYF9D2s[ar:f@[Ξ7}JH]9Ǡ溤Aoi53gP,p9?ZZ(2(BiǠXKB)`u=`>4Xv_KϤSzI-n
X-mneCfm2LPѽT_'ei,5cHDK|lqLU'#ةF=l, ˉfƠŠmRβ.Y`)-֊.y!.(Ǘ5e%K.wRNXY(	eʗ/^m:'IɁ%'47Lfö,P&paǸ*VeK(r*C|׭b
;eX%bȸT:˸BF+e\%cdt(26蒱Y+'+/_Ph8$;/J)tk+N?cK˙Ůan~	,(7-	.0PxŶ<;;jE<i.;WlylvMnXobpƧɑiHml5}-+rn)#PF
wgx!)^ WN]Nmkfr>rF53ʶNSyNCwYyFE#jT\ZUpT40lcp-VUƐX̰!Π""k 0b!*^Ei{TtcXYAŋ0pCe8a/ax9^b^4ex^ܤb>nVьײUTM*Z2\ͰoVт[T\X8`.(L}gb 2+؁xXA`ee893|0<eaLA?dpZw2aW`+Hc\ >pTA2|3)p?2H"3|Dۍ+
9|;{>Bڬ^z,z2٧wڞmi=}evuzOڠ
rzRu[nBTh>J|ߍx>xS	Ajoƛ|=bZ!0v`Q(v'q-X<+o؇x# c]'T*c5Qfe#"ped΢oť U4zl5H:{߻wR_Π')QV1tVv:^+f?5cp=<Nůiwaoiqj^D܆#di}7%Ԃa2J|R-Zhuu]9=%qod)|gS?`-!B:NK{D6$R8YӼߛ˹)y<1ޛY~:]
ch&F,<{jWo+w$1adGbEvCsAɠw2uS'M쯿E(ߒ-E(Al2'&]r3iRKViQPZҪ%zBSVCIi*jV+i}&YG3uVsWm~H"]Ǒ$$,[[줕avkQMTb( ؄
SF_8nC]"ny_
iRЭxn$oRmhtLh^$QEH&"`(cO)VaI{"*U4y[q%o=QJZzhQt ߢj?(?SO8o9S& hhKMO.&x;]*	jڭ5]Z.9v9:ǩHJܤomtv/WD
ybLD>Oq	n܇Tz!t9Vc(1$DqK2#[i[s2?'FԺ%ՈPK^c	  )  PK  C:U            9   org/bouncycastle/crypto/engines/CryptoProWrapEngine.classSMWW~.qt:JcQ65!
4)1$cl?Mu4EW=jI:s{yqg2lEF0p+FhYXbV-a25rSp&_-Bɻ|owݴ@'\)m䣍I_L{;of4,Cq%o=n89l꒗u)n+m&ֽGn~7+7( akzVJt`dH+ť+FǯesV}Fem{"'s+.xeE	jb}oaь>oes0^Y^9ww
ȠK^.vqhg98>8artsp|`Y*8IqVml#Iz_n<Kփ]q
LG':t",t,\ttaXF4\!j%
5ĤH
qMRb\ R1a,
1!Q	9]dz׋>\[/شI|2`Ci J/LtT?:!kdRfch}`SJK7Tѿj*$ˌ)E)Ŕ_/SZErwELsU؇ʱIP$Bq!4qM*ͿKSOIIYJ*RR5T'bʷjýcZu"l6I4CHyR!Tü*T|jSUSrZ<'RZŭ
2&I1VC4p>GCm|'K	c`/7v7&B4wu=;?YBW] PKxZz    PK  C:U            -   org/bouncycastle/crypto/engines/DESBase.classXis\7#yӾ}FH:6``,ZG26qq!	,CHrRWC~F5szR*۷=}OfgRj@m[[2[mLæaӰi]?KEEKO1e-<0faY@J
)Rl	0d-@̶`R!@l	b~;j
0!&Äp0rB+a0ax	+Lm0S~@3)x(x(NYG`(F	$$PJ/Vπ}`m
)ɼ}&ܶST쁐r`IA,VյՍ	ObSwO=GKLb>K#4q8R)aڽmiu~-~`mCa2f2,¶|k!,-X~`k+OKյԵ@!j>ut~m%5h]?ZX Ol]N-?}lc=|"oϓGS[%ʑ)siW=3λꛅ[tzIL:8 <xp
	jZSsjP}M=U/ ~ǀ ~
_ . ^uL}_xY`wk3GO
9=ǲG;_JVj]|
oJy%(ss|.?>̯Ϗ'F~<ʏOSm)|+\h"߀
ΪrQJ҉{U{&F8zJ^QNڭ+p3WԻʵ/#"{	]٤/W]PcJ{T.
%ϞKG;ZV:tE5Įf.JhHntR|Lr}yf\QJt~Aע1_xfߜ9Zdi9~ϦvNnϛ:vj+`	MΙin`SԚG1HF'|inHRW;Dz!]W}W;-v] vLݲhqr>QP(}7[Cx= k+U?crmy5Wي'u|~j9Ls9MQ
s0{.\,qQ9xGaуO9^47.jϬڐIn#>}<+
ڻ5<UguDL^Q>o`}512PXl}ߺ9ڛ7G{h^3\#_W/hg/Au~xDȍswpͺ~hs?\.{kaPxW*>`)G{{ВW=~2^hΊ|kEtb&'Tfrrgr;NDgջj,gm9oEts_9iqギKcxF'05¸aWư;PaBHZbK'2{z[#%/gᬜ'+ghY9Cy6'Vt-O^n,BpQ"[@,e#.
Yp/Xcer=*X+u`n5:-XuE0ku`-ب&=.ج[t`nl5:л;q.=&حK0{t`.Ӆłi] 8d+Zrl[qQGuP.z,dB,$	muQP]JC3tˉ0z#Gc2x)EUJ.U*Ju*S%p/Ru*R&NJRUJPUJ=T*
Qz4@^'oZo]7oDҤtUag
KgYh]h=h!4.~Wk1I[TKS.;ʶQ :XFK-XVhvD%:fIW=4 c#5a3]ZgsW9t2KYF${ɡ:]PC9lL{x(18SN0)Lky<<ڨ@
Ayy|9C	l>T[(E! wqk)@
@b1ֿ5?TZ,?W?ұc5@5ӱZvR NiI3E~=L}Ofd9Y|XIvG`Ip	'q[nwK- bKX;Y{>/]=cJoG@N_dKX,1!jքcs@&uw7s[q6.,'-JpqJp;%2$410ϴFQ:m=)۶
≳"xuRvO@KJ(DHA:%,
&.͇k<!y4e@
l4*6Qj@LZYL뙰dAb/tQ	Fmf)D7@t)ózM>86L:h&!F6=&9c&8M&̤Vo_lϤ1[˒ϱ1ԣzRE62QQE=#_Cij+VQvV%HrXbOTQJ

l#[Jmd.vIHqzi`A*,P%D{bSP;b̋  ?X2Ke|79ֿobdY `Xfo+-T R)
d*a6pW-MuL`zFhF4t3)ͭdFS;u0DYr7%# 9,*4L9hN=i<S(B3E8""!	n
d>`5O
Y`DK0[ C	)A=$=
SX*̯J)hL(AF	n{  HL$M=K}dOLi cmbY}q83NӤPVotgϠPhʨav%(g|T@+4]!jp@)BER(7˦̃(KTPRJ &}4ss1ҷ1ڹEn3x)Ǣ34`i:q{x9ИbY&ﶺlVPKS
    PK  C:U            /   org/bouncycastle/crypto/engines/DESEngine.classX	xTu>o̼7yHhGhBpL 9IH1F6D&]}%m%uF Mi%q`+o!uE;{ιϛ7'.QV/(`3,lgJlJlJlmONBB~n<sE&Kf.M%33Sl )IR$IIlr123y6"R#2ٲؖIX8`-6motMfpˌ0FhrK*uIn1LqUn-RTja
9c
9Sg%3&G	aJSBlcP#2B-B->"#RT?"ՏmTlbeILzIei~Ƥ_p.$n?޵tmO|2)ׅ*|bgshz.I{0۾]vr;5dSt&egy[<ɹBjF&Y<:fY{.#¡܌=cԂF<qF ٧K͛Oe8L:l2a*65}(5}x{6%ә<c̤XLkTt0ۙϧT&KSdsәݩca667ͥ<<lNO?q\rc{y]Og?.-iT/ŃS9pǤxa=8~0ZәǙ{>pyvLeIר\23+pӲkn.5ۖ]<wN\wxCz,5e4sbzn&Ө1MecɅ\*z1==Hbڎa<{<=Zx85xGvH{zRr~cy&.O߼8Ź||*OnvmxѤ<wbQ|zn[P+v{&YsOw{, I5R)v1Y8\n|6˲čN/&2
zA3{
Y~Π!~ޠ_0AhЇ
%~٠}Ġ_1)Jm{߃fu9*{$ĕA"
yI;
nt|Ƚs?yCoeMQzo>&}Zx	O
x9	
O|>@\C
ЏҧO<A-;A ^~_lH,'*?sKk[??}\/~H'O鲬^xS~zA^go%{?&?wdrnQ>w[ɩsuvTQ:Nfqhg50gRy^1LaXa|wa}00.da|0zX<$ȟZ
M*kv9Ez>Ѿy͸!'+tz4=<SE;O_iz>^UX^El>wA+:E]ܪwjJlUsI8)B+at6*T̟izPQEe~k/,>G OIOXvZ:.@JͶc׼WecGu$^9*=N7.Brߡ-M,>u㕏(!5pɽ
qoȫP}>3dxk!CKKpS^ڧM}4B^Ѹy8䝑yt"!3?Wg??G_4f8{󃪞8\/jlk$p+<蕐4).|ܫ!ty6(n!8"!o4n0D|DoȰh?GCXy6khIUm]R
%Ck<}]gTFdfг=g*BQ|[aW`֜һuY7Ӻ5aX濻Y?{]Z]8xW#W_e~;WY'ʮt\T1qzh2Bޓb
y'B*틬!,hI\4ݷ/*YuuǗnwC1cq_ȧ3ZR)oe^u|!@d{ѷ.EꞣJy1|YE6la0ʍP;}h_-;q歵z6jH)v&̮[">	M܏;}Yffr?s?,>tsA+2[\̍{-MC:MGj3ܷ_ʿ2/z'n52({2L&O&Lc2=BԆKnni,채תKVX´
2Vi}eXT2EA.!F-ITRder
]%3	>C!<g'&\2
T}ѯשzƀ`,RAXfPj3!OH-
RK%cHYeXaؠ+T/c`RjFkUN0ڪ^16ؤ06~alU͌aUئBCN֩#1:cKU3vR`5Tc*au+yJ>1Gh
~(1jb% 2"AdD\
}AuA"JP~I΢)uy=^g"x)-ʋP*P*yoQ*InEZTZRTJ6TAZFTׁ։[Bcj^Q#,]Hk4Fi,^f_9]?n+VtR)vKGY}QX:
RrD`gz+UTsuƉVF](A26"X*lKթ3
۰5t KQTC.DF
=݋>w
u#r8M8f>[rX[bA SmP/
ԉ|3Z^HƣL( 害4Cj KYHk׀IR~_mu:ؗ
H׈-ԊLaXPj;A:!K1ׅ$݈ЃȽU[./I0`[P0neC~0[})[MM>-\7? Ò)J@An_
w\ K5B OmDǼ4:-Uv6:ډD	vC] 	8݈8&2\`0Bom+BDX}E z]lXQyu@6"hguBN!tB!D;@v)< K^#)/LeN%$ilt,UXD¸$kz=6F,79RT^چ]!$3Ĝ:ۉ#νN5}H 6"cڌs"rLNsR
y%r[[4$m,yh!44cBcU bbMAC)	5fAhq]!ҌH!űz
BTB&$oF-XnEadij;ru t'V#N(Bİ܅⺑{aC~*LADzb$8C)tdZ舷!=k}_,& 	7DffOwޕK( 2)+dW%TYD3 Z
vT46R#B6§	E7gs+*
Ԇm,wb9}QĈ	,A+$=:4}H&ύpLp8`{_+`ۥ	S>`4	
;̯C"
CPtF A#$	`)Ů5ꡀX*_/N*D$
`] 	lH
lP!z;HE1S7A%)&Y~#A(CؿV.e^a^n&DEV(IH]6hP!8M5hoE(G
"L@YvyM@肷B
HP	* A$ N&i
0baQ;Pc'\#8fb8~	&!A9$	dS?Q	t4[bYr+/MPK)|  !  PK  C:U            2   org/bouncycastle/crypto/engines/DESedeEngine.classUmSW~ATm}AjP+	XQ,Vp	+vwƾPg:C~C;SS:~igcswW^69s{{Ͽ^Ѓ$lp@A	%NMdl<=%94F4CsO	eùWAϟ((kSU8^SuaS
(hkொr5VKUuRs"+Ul%C4J9p\[סlsb4MQDV]vŴg5|ee
sLnf-R%RsP(MU"M|pf#2R¼(;5êdezيk3cHi<<XM]ZMH	(!"`uu^QqՒuVV~\c;xĂ*o ]y
"JخUSѵlEӧ\:.̲7\š2u\1mGp˙IZRWgo̌kNfxd=yB"s.[[1jѝYIz^n×V{13ՊɍئlWcTΑzBKYT3 m=M_v5vt2+S{tl&x* b3Y-+kֽN;;I,␈"Hh!"-SDFQ]"E#%ɶSgWuV?2$7Zswu&ڧ^d}f]oYWr
Z{󛘼BқU|
>#Fe<!>.vAI~4؃V2ǰp
Mx2v㒌pYNP\7Q\LpVa*Ә,&c.1zc&\1*.@aW3$;\ZIQ
&`m+Jƛc_0o4%H~NZ74j0%<Ʌsc|Bjx!?C^8(E
Cwpp/FK`/w|6^ﾋ4/KD?/p:g!nR{Z)ǔ狤Rk$	w d h5$PX%	Svm!>რb_<h8("ΐ?h =	B'g1`PB!vAq~|["^DC
޸t};n:;pk%Loˏ%5kns}Y4M3+X?m<G8Ad$vb<j'9pI<܏[CZ PK+D<n  
  PK  C:U            6   org/bouncycastle/crypto/engines/DESedeWrapEngine.classV{)v,YQIc .5vhXBKf$B@\Y[w׶5.Yn\:˶g>l_fHv̺\{ <y	$UF	]%lY@(-a䶓Z'x2Ld&2)XevN`n=JC~RHv,	,g\f%;[-{FQexeH8gdQ4tdY{^r5D,Y8븉V.v.^iaqX\1<_j/mZV옶g	"SMTƝUcTey%WNjt\^,ji1x$QkTN:wv]4˛Fk|Yd5Fh
)CkT6
od)XĐ6A F9&m4\P=QC1!>gUh!9)`9mRX]d-(iV[Nwn=ӱl^y
Dlq9C'뗏rK	
TMhjϠ6Gjw5Ϡ2[ʜq^ӵgݭ='3/9Ý4ur(ۦf}'ij%S+KLog4	z~op6Pia)?*AeJ&yiS:zyFh<yw_榚iU=Ӫ萦{KkGh=5cVq)eסŠk/\BJ46E
̔4Ὀ-"a">"b+b"񘈏1 bPE8|+`GSȽH
ۛ*ܣwt:}8\}/dv5~ImS=o8ɦ1̝]Y4
pw$OwVzZY7{#^enZ_i$lI&<	]A
EqU8쀢
>)x6Q0,:|((ڸ0<s
v2㼂,&삭!8
ޏ2\&&*I&\dR,8>%#/1
#cd|q&eEOY&_`u&ߒ1O3oWV÷em$>tliW~Vkg,[UN@B>ZJWjRh-Po5dBtv	v<nT-i/.tO/p0W3GM?`/gq
MCǵ!N{xa
ϥbf;Z 21	_kWg&yYIW*t0u#ڎ1(zkh:B9P@hu[8^hÕoI}tu)\U
/c$Dj+7qyB\,OF,A¿&1BxfՑx4.FB|Qބh?dG>ч"PWTyɥ̻TإB.UR}"v$┈c@$A`"}5d1Jx#Ԅ	"ADVϼ+:9vx%AG,iV42[Y7RHWW9좟ӋP#\E1ުHX䆩_PLZ1K=z帬F ..
=B_u\CUۂHRaJfae!miD
zXi5z&+Kݺ_),	+nQyz9J/a_
7Bٞ ޞ:nhؐJu9ụ4-ICRЙJc[Vrb:zw.=>S2/bOص|!X-_bb/VPK&!    PK  C:U            4   org/bouncycastle/crypto/engines/DSTU7624Engine.classxT7=LfLN%"!!fH^RS(
ED]қ
`Ob{~5k}'yk7c9Scb=1
<fu];3v+K]uɝuP;Iܥ̲r]Enl5<;+'*7_ZjfSxcΨ̸܂8=*+#;+?s8]r
+923/ 77.tn^43^7&sRܸrĸ|9W]ZäϨԫW֧WiܤyJKSKW.ma6XVJHm-]6qLTvfΨR
}rA1bD2'˘4<w,3i_S/Fdϛ4]v1\MΑY127#wfȑ2f*=ԙxeNu*.#Lz͗NV_\Bf^NFv߂=7+g|Y#NKa&dZ3gdgJ钝9*#mި±9'\P?aK56_9a

3;I힛3J7J2zfMl]8V%ҒKV#JW90i\;7oT0yh'
ȗSP˹)YFgI#5<3O,}rFҟ! ;QIp|?;~xiK920 pqred#mggK&9Lݿ;_AVv_5)"{.bRF
zݽ3G>./Wj<Ig^f~4\60.t)[CJ)Ջc%v/iXUN-,O-rs'W5EZ222s'hg٬ߝ材7Bk>ʘQX)]8q\FΈ3yD~stFGO+`+LCh״?.\0FdA,
dţ\L|W`q]j6
&mڸM[i6ݦpnmzUnmMH߽LR'7a|	ܪ6LOޗ4|,Ϗ/
~pZ㄁^3˖].	
^w
{ Sk24Ӑfi5u5\
5$jHpIF^s	*&kZkBCg
]4pZ46^sQ1^s54tMCGcf\Tӽ~`*y
Z!ii&hcӰ@аPÓiX)
K4,g4<0sffiüf4oafnGý09y
/jxIiXaVkX
k5Ӱ^
5lѰU
;50sfUa~=34lְMëbd҇F`S?#PU~3egx)eM>}vi@6,	yrU9q86ZkYϒe֯A)|iu@	\?9	9V0A`)٘(3mr&&6*HR:shjX2yy'1qyg}Jr"18.ȅN|92!-yx-fC],z`3ycT~ω˪.Y'BlZ`>]=ʕ$?z'^>_{6m$ڰuYk̹:F0vL;Ds3s9
G7.4~X;=ıgzZ'o9C&ߏS'9X)-B6gJ~GM铩l¢Λ6J5bϙʎ3ZrI9^+ؒ
vڏvVJӝn0'ի٩>k@tjjRA
MڸH7热zπhO7ɹ{}|
>Ĥj>I6oS]r_WtҊ܄,1D4\CS5%fLGe>+~Zb~N>|.?_Lw]*iʾ+(JM
?gɢH<ҙ:&<|Ҕ
C5xAjGvrvuy6ܺBsNiP=%`in_6	̈́LiUUy[ިU^ߖ'<G3)O][3pvTZn]ׯP7U71'WqTz,кޓoq%>dK%}lS,{p⃫HwGgGmѸWUZYgUɗ~DJT]jpDq
s)A@+ǘBS=>Oq=x<)6\eVŵ{e8X{-9̃xtpFZR]MD>
8'۩]y_ݓI-435,
b/9BBJaR#Kη-m%C?ܢ6
ӱLU6H5*Yw;3)ҋIYqvTDt M6L±+5AKsehw3$$U[0ij3TZz~W4]%)na~sZjr]3S.7efwc%r92nnZa9\aYըe戬V45WAF8%+KѶiZl$OFFb#QWƔ+)֏b#}3bLT_74~LD(>^}-sW-x^_˫wOha%ϳyOս}~k.ݒy	 )-68exDa}oz~^Z6gfk(֌4w?o{˴}i{˴}I;[+oM;[+oPS+NitJƔ2'*q6ƹ8-(mǃ	;zŦC#sBn%uֺuԭG։
n%u)PԭSu0-URl*)֫źPl/ņ-)6bszOwyac+mm,Sq2q|m._G16V	%/
Y]E#=c<
&)m49SՌ/17LMsKhj-&WJ9$%ͭ'КТ6~4W-['xYowV7>-PqH85pl]!~w%g4S0򤤅k#^.<?J.<T^nl*[e?\JDb^e&d-%tjRRzPp_HtȱŅ,V2XRzx@遲"P:v>uգfxo֬?r^!xBi7gͼG1oh
kD mvz$Q5~4rŋ5֘Bdk?D7ۄ8FH^u.LJ3`h|v4v*Bheohg=4Y+^EJZm;07{arEi}IHEH9+(?[kҢ~-R
r~D?]1R?,Y_SCW\_W<^cfLuN4fuO1Y	0px-9!<\VJVϽFF4o
]BkVRj[ok@ɛIwh[]:\.%KrJ 86"08ex,1?$};IrH)2I	n]t|ϕxEJ*<I$*$i%PL'BE>Bd;kQ\Bɵز@e/uϚngáRgPIpìK8m.;$}@
Icxla b% {P0{p{D$1~/1XJv({Zb.}Cb}]
$V/Jl'Ib?X> 1&͕XvXvX^&1ζoJeXXǮX׮x}Hb=)1֔Xnh}.
}Sm&1Mmf]Si[/U$%Klex]$]'
6}m)l6MbNbG+;&;G$v%vJfJngKas$tKeImJ~.Db_;Pb'KokK&In8fJhGJd+HlK>-:IVPLb,q='q]-q^b)q],q+q, c{mscMs6qlSy| J,;%$N-%NwKd'HѮxQd#q] Qf+~4[lwMPM`M3M5f4Ӿv;E,;k{tMsllMs5ͳ{5=`izЎ4߶]aG쵚4=fմq;Q6JB'qM5.5=eԴ>i}U.ا4=k4=g5=o5`jzю]eQ2vM+헚VYVƚj^_kZkOjZgkZoj`ѴiDfiNVmNM^
ѸӴN=u]v7uv{4i4e/U;gM0M{m}fM/ޚڪ[#jM5޷44}`iо#mMYSlEM[/l/m}M'Uhھ{@ӷ6_w.M[4N͚No4`{jv]g;Cӯ33Mg.MdM;45]җSzRz(='7@OEг|	zZgz=@/g=@L
zTгz=@]1	 =׀@yO]e!y!O3\yB!\y:@֐g䉁<A O:䱐YyB1'< OS,9yޅ<Cѐ'CGt=Aݠg
zZ*	szn=AO.I=CA.9I=Aogz΁'DI8	z8zVl=W@>3$г,=EgI$=GH'LyR~g剢<)#mIy(!UF%=IvӉ􄒞p3<Jz'=n
y<Hz*&GǍjO7.{+ϧ=D|gg"A|$>ӈO
Ӝ|L|#%>xS%>u=9g.I=".EK}fPOOs>ύ'Pg9ɠ>/R˨ϥ&I}S'4>G;6곑\G}>@K7|BhO3sG{ОUg+qI@M9zFx3"=HNҳ'=}ܧVzRzV*=*=@OGs=׃]gy\y@I<[!\Yy< ϧȳ	yA?t< fs<C!h7Dhn*S0iRi zcg<zV'=-z> =@=.Yz*=!'J	< OC3|xzh(x <x^1<
xsx <{O*t<-g6 xvG +YxR ,< <
;1p'dÝHy;C΋p:ӔFw^;q1]!
g&ṋ$<?K5L#<	O=6OxބI#<uOiDx'<{Ok3!<Eg9"<WMxYg=#<=˳:rQy<RƔg!ɧ<R]JyRʳ<g()ʓKy6Py&*=}H*!=Ig#Bzn'=MH%%st#=#Hr!=?I}N3R'Ԧ<Sє'dR/(ϽsOEs
9Ix:03`%8Cd'\Iz:v G~gD4WvqHqH_rJ]J.ғt==AO"zk{aO
SԄ=WT\zAOWgY
zgl =׀Уc.
<y )<Aw!<#!8s-9
y:B6g7̅<!yBg|yVBG̎J7U1EQYĞ&g>i{b`[{F	3=/Þʰg;i {n=yNz`F3<{=3a!lzs='`N0*V,>Ok3
d | ӌL|,9I|n">p⃯Ly=hO<D{ўPڳ,=hASl=_ўʹgI{t-gy4$=L)$=p)OӔ|JySW(;Iy)Z-&<w\_W9ΫtDw;oҝ,|Bwn;Ksݩ@wN}gt'̣;OҝjtEs=݉.etsݹ`vl G4_d~ʳ,&<4y\CySg By&Rps?9Fy<AӒR`{CS:(3@z&=IO%3Kz֐Iդ'|Dz2,Rz*=O+=*==LH9yn< <<  ȣs(h+b0a8U1{j)W^DoP<'j>.zKz2>zD:K;P'RC~=aϣg5{n=CavS {ÞlS{&a['	{Þ!G{N#zn=ׁ t=A-z~ =As|zFg*9zV
zAti)<M!Qs)<!σg1y7	< < xorU;/IpqS\	wspvDv';ovd^MvСd};;Y%WFw;Nw<Fwѝtg=	;t*y;Нit3Ủ8_qO3_Y:Tx.'<#	ƯK`s-@xOK³T"<m`uWpT⻳|
֯ڵter{om#FohV[9wouX,%=)|HzbHYSt!=3I254#=ɤgAzZoH''=3HӆēIO(BzHOHz$=gHUg+YIz%=WHiғFzҳ%=Q9鹉l$='HϰrJzf=)RzN)=JWJϗJ!xFC*?*WJ~]^r3=!2{ÞH8{9{Þ}ؓ{~=g# {Þg9{14={K=qyװ0
{=+`!
{Þ~nؓ{Þa(أo{쀷[+1_tؿz0Tv=0	zafЮ۰>p/zt Wk@ ^Y߹M>Ag
Ԃ>1gSt>΁`v1XLs[\3
:,~>?
r
170L$y#7ɘM[ΛTv]% L^%@oЧO	;&C_	?ҟA&П(NПY!S4/gI&ӟ)hKz #@WЇ%:H#@I( '@	P! UQj\A:П6qӟY3T?'9ӂJ
I'?`s9F}:S/E}&R۩F)Ok3B|%>7OӀ!>+nC|1y3 >\#EzӤg3y'=uIO5Oz
EӉ|CzF>sJ>'\iTz@7g
z@
7г
 =ޠz>=gz@@г =@b3=OG_@Ðy<Bِ}
yC̇</@ T+y< O.,<Axs<yf@ OK=y<![s<qBݐI<]!O3DB͐'yCg!9y*@!ϣ)<7Cg2
T<!ϛ(߈
<' O(y<O!Yx'xx.<{ O" xgMx2Ex	4³<Ex_mY3\Axkav_0!<
Ճn3N]IvdKvNdESddGvsdg4ٹl';S.s#iMv';a:[N*ɢ:#:u}=IF66sHnkۨv^eWd5:	š
o}92xw9O)^xr}9$<94 <	'$giJxOoN<aW|U5_~_Y~K {2|#S,+=HyBzV7Dz֐?^Rzj+=QJg&y<z.=Av=@O{г
zꁞ7AOeszAϠg0=-KzyD
gyV-ŵ1%,Şad3aNs쉁=Oxs5
{zaϴYwgi{ކ=`Ϸ!{Þ{^=`OFz韸EÞW`O?سL(%=B OyVB'!$B䉃<?@g*9yC$3A'|x<*(3:<'%s<+KmQpk;wNu	L;7-p9DwНJFw:ѝt'&<U|9rdgyJv>tg}<xA!~&p~(*}O\H˞KE|ۿo<d	KiZg9~v^d;2CU4t5_(ڶ]:!zN
6Hg7Yγ6Yׅn'}Ӛ9P<QK):ӂ<Srӟx(O,Jy<aA}<Q]2繂'=IFs<Cz:ғJz:qg@zꐞCӄt$=5H"ҳ,$=W9Jz}Q PKV|(  Y  PK  C:U            8   org/bouncycastle/crypto/engines/DSTU7624WrapEngine.classVms~zl6$imaoUZBiqZZK]e@ӦiM3|Mfj9S2|t!Sz^-s=s+( 	xL*`\#
Xs
xړ9l)OHISTfN3|j29nX{G.C\vjYfNOp\}!zj6{sVSgU) +
[+uAsWIh]q̗If͛Wf:9IoYVAٰMQwj'͢niLn2RMɍВ;YcUbuiIwT׶JvhA0,QDjNP'fJFj(Z
WkZԬb"mzQ3O:nS7z5lÞYWsǹ+zj6ͺfAwgkjf;Wƨ[VtW%Pժu΅yvZ5Dީ];qJs-u|wq(t'肢_tv<|T64[з}{T"#nso8:Y2nM.;v^T<']3W._Q\uikM]T">S\>@Pnyq!y|Gǳ<<xqJf=!|ݤ{9CٽaeHwEa_>۽&cww}|S0yзxO!&cvDI&deE_GDF'bP>|Mw0$ce<9ø$r岌^1x?dEL(03$y"4/$!2$3l&,&l	69Ʉ+QfP0oI~&mj{Q34Z]AzyWrV[4u<U,N"t7pOO'休xc'#L{I'|IKK=
7k	uTXÍMjW)Lnofg>Ic4`wYEd3q{:>d*u.\4=v4yFm4r45<iqC:i,\_kFW1~= ?uXQu_>]w,G&
2K(b.A%,KPӺp,o$~@d#fo[BoIAW-.caE=YbT/3"fIõ@RTD%t*+Jdo7ߢ۹"ȴXہH<EIM_:뷳oH݇N
F%QwUH+CM?M%H;5yD(H/_cZ<퇶?"DyLq_ KWxfOp+x$e.u?206ot54Zj]$Z?m(:a;%BNI<v
yTc'?-;*="ڌ(##=x0FvKX#D
dⱼ_tW_F!ANAN3G/-4IVX*	\pfR)Cfg|ᨧa@&/}E?H OO_
6iAOfPK6a    PK  C:U            3   org/bouncycastle/crypto/engines/ElGamalEngine.classVW4@b=0^
QRN"ܴ+b63(%}Op[A;?	[|; ldrwۻm Ŀ|և:}PꈺxN'1'NF]D4҆,OvNiўvVidEB%aۘqFu[O	Gvx)g">m	ǰZsMF"])q9CgGF{	4FFuq+РgY##zYCS3H93dGW q١Qنβ%3">oi'Kq+<,	ⶠGtJhIA~^A7ɺXM
E$>ӊ'P,da
dM쌕%?
)H#ޭ@I8E2AWQ!'ow,p{q#3#nE6t25M^;K3J\JѨCM)lXM]qgh4u%R3.oeլ%JY뼄˴gS912&iXv2<e|\:ݶ½|eqnU]2*9#.#"iJ'uG/bVoƎw''uRLTw)a1D!M(lPc/UoǷU٦׍g
7lڡWVo)-HYw޵KlnVON*9̉jv%㈌naxBqOxZ32"2zdiANS"[
+N~MyOG>(tߟ=Jjmᇮ*EoTow(}s.PegTnObkc9*T:ֹFE9JͮrBч-@E&ӟbnQku9hG $SxQT*9}b?Tb`d8HheⓘVbxI-0T|y8b7LGRqa
i>-(8^bCaegAegCx+_e÷S1
>3PwW
͑gxU9HyX:7L
bI|
~A0Vʈ>g)SP)U	Ð(/Ki\JEWȥmpiuo(HT"Zݹ72}`I><ں`lV.3EwvD+I:.Λ\nN.፽[[83Q__.&Pv&=AV7]e}NxdD2rl#7QC
O"3V3/?su=YsOV
<@#Pvd(T8s}2~s
6yD}2BԫyZ|oȇ[4o]];̮^*M-Mx42~yy?GT4%Y#;+絖[VٝfXp[6WqU7q+x2Pn`/AS8(	2{]{RP(Ӯ~jQsQvUVWЦz; 'pѭhV[b5I"[k,f"~.:X.}42bq5pA㤔$b8X.A8Ct!
y%9yx?PKsx   b  PK  C:U            L   org/bouncycastle/crypto/engines/EthereumIESEngine$HandshakeKDFFunction.classTSU]d)
H5$tR)-Z>bcA(VU.%lYv|jgK}/>N3I:.139ܻ	X
&x=xOJgiAg3K%#]da#kX;|Cxqcd8"[XAX0TqV.n19dQJGEFAy;mXd)-O]dUSѳ'
gV"Qd-Faܢ֌M;|LnRn^q

aySD3lbfW/WvCv
]n+]U$
ڑgeb¤pM.krPq)%X8>
K)oM8N.ʭa+Odg(i2g'fjNVJys7iFLɝ8Gr?dyjil~*jUPqFY1*T[9x!6/<O31¨s+sqx~NW㙓HVh_Wb4:hC\#j		8%ᴄV:M.Õ00.aB¤)
}Џ49
FpM(#%\0#z&<}Sr'hb?zƢWi+zr3WLNCA1MCܪ/i߾lB$d?@.\O`䏡cemIb:F-3FfciY)6z(< )<eѷvG~uAXٶ0MxTI&CmV)f(6O:eƪ]EE&6`Yi/*/7+=	jSh$s%x[RkǧZ`0DՇ\)~eҤ6 
ȼ[B=|͎hkl&erǶ򶄃ϖDïwѝaA04+iƿЩ}\DDŐc
c$}=?(W(!HG;@̐'K#9D9PKuO    PK  C:U            7   org/bouncycastle/crypto/engines/EthereumIESEngine.classX	xTofy	2Dp	(Am	DlK^f^&#0[U,*]l6݋LЀjkkWk[k723$H'_s=spX.B\VE&{͂M\L9wsS5tr%*5t5"Ъ]lrGK2gEeУ) c$"n={ɞ^izD:Mތ{M8
l\Nm$2+2R'uzXN&KOZ錞ȴƺIѼ5%w}z"J$5bS=x2I%qY&3ޝ&kwu&S&1LAFH}#UpG
kwcrhmY&9>2504U2bD6d;0
eHc&*f#58<T}KF"jգdIjJJ~E]0i=jn->ZK41RiAn:dXbE떯8Kgޒ`uw^G[7_6,Γ8\%7z|y*e("UH;.14& C5ec<tO-E]䥦VJi
5Ţ--NҲ49'+(fҲ4v &t&ațB@KOl6ȩ;bSD5I6'"1vhr6eiP2
u$poXOgFHc2<M'f:IF4X(jKF"cĩkJMBKQ:=$YF7Ӽt$i.ȥpȳKqdhՕ-CW/_|ZȆ#WC-)#ҼYVMz	]cUsYJQtĽc[%#3g/ק_tuכTL/#ty&}ͼ8ΰUcFd3xHx.$8lqș)Pl0jO*l]Qy߸zQDׅ#e
0W&iBls\ pr%$cx=	P6kPD(c9`s)m
ޮ`&+TЬ`WA
.PQAlRpw(hSp
ީ]
ޭ=

:PԬ=DL4ul"~$$yl"| VuIe?d!)XXRxH*k}S_3Vʯ5-kǻR6ɋ
M0j`8GY_ڧưyI'7ŢSkԘv='hs&޶t.S+ΕKb#_y@&4yγfgMՓ7ɦQ4
XP!JsZLڝпȼ-41l^ou&slR 3T1St :
U1SaF]*Z	kI)|ZE5*BNg80,S)04BQ.UxUUE-|Qa>8$(*80U\LSQUQ]*NM**NTP/rf/*ĭ*f+*f6|US؎0|a7caC?Caa/ Ý<؊? yfdMxlã?f=
gװ	/~'>y~pȃ}o<y0<g>2za^/.G_Cw3w1 #Dɨ-	
q=ocV0طr-,QeI,KmY_JrkYN2uY/*h&$ump kTq8X?(w?Aޏ'O.'a%߶AJTQ,|ҲZJupv?c
ϰg6
a߲ͥav*A;4`Qo,"zGE?ZeT.;waN v~<nUgĎ~؇
rU	Ўl:|Rz<ZbnnkI;PeB:ʮvNѨ{pS~W/DE+N-EsiP;UYsæ9<;.C`BC{4FèՇ9y"Oe5ꛉek%^rݢoWyEq]NL3uK<zvI'07n߇mpC~3sчJ"sWڪjn	{bĕȩnL
ja˱pMۀ4:(N2WO5vnl$4a,-kPԕ~mįK-NM}Smy
{l0~O'yi:y]JsۦۤMM[$nzMâyowE]A?`rXU6;_YpX(EP=Z*5o}mjـp0Cɓ"oxHTvJÂ7cRmxwwF&S9B4R]ٌ&;*>̵DDQRU{޽b
78ZHL*NyqkSFΔ	Q|C7*|Vq<oPЩwN'd0Yya#qc^[A$цg0/a
21E;-8J!arqIGfc(e+]t\Iyl=:CBsB	2םta;?+akDTiAQSS؇l L09rx^}`|+
ro;4{̠HƳbnd<5(p+e3RsUNԽBӜ<mÌD4砘/U|AޣcTew˪}p>ZM,I"}e\Zn0eTG ա =e`˨U+~<r>wK=֓elTΨpw=)CV"_WpyīKmj\" PKg}K!  k  PK  C:U            5   org/bouncycastle/crypto/engines/GOST28147Engine.classYy|Tu>,h$=b1AhAl,Fa4,c4i`3#ˎ,6Nݴtq[G]n'qb;ݛ]|} q/s{{y>ED{FnR[RoK-4ٲa˝e&[-e#޺坴h{WHGuز:ub۪;|m]af&
b-Bt58Lѝںw<ܡ[ZuokS'8[{ct)dfx6hRgmmݪy<;k+3
uwDW_vG"y$JT:AX2zm45cbTO.w٣eHRarÊpFWD\:Y?G"h'r.L2SMc:xPd$>FTlpTl*N=6ךu)ԖSt6O#s#]E"zg̬mfh7Vnn-.Zj iQZ=H<wюeGcI=܀l4Hip|d{:en*́$x:ӑȜ%)CT<3'!*8PԶ&ҙDnԞ)]jKN$O['cY蔱Nsxy\<.!=7s5eUǲzY83A8H"Ǐ3zPHv8э^`4RW#zBzrMX(IהwgxKg=gDL9K
5WҙLƇb(wMN=9%NѣD| wRO.7.&G3K$;RJgIp.2՛y2~Ns/Kr-tf?⹁X67Sfu{bdDͷjϜIĳC	N#n5u.MVE7ϣLz$%[^)Y:ۿS~lJ-۬IȪ]|shbxέL[;NN,*fyZKKG&E=dvuYKbi-+%YrĒ{-9j}ϒ%-9nɐ%Ö$,9aIK$eIZ57w@VtӲ\n^YS
O?ѳ?q*n|puQna,jBWHjmݭK°Uu'Mܖ| SҩnT79QOT=,?Ne:f0`Vì f3YiKN~ ,evX˜tܰrHeԄeԆeKD"òG~0,Caòff0̏]~,,aG~2,a'.VdX2$"><090K04̯~y!$JH_\H!uWB0~>,/|B|!$FG`>*/vH'`,%0\
oQy&$g`~#$'L2f{z-
{X*w ok>prwl$$y\<=R!5D-dLqQOVwlvǕWwseбRgz_kLӱ|BQY灌\әȢIzsV|t,= O_u|%y	xUtI.\?/zfLX?wYU_^Y0*^QҦX>w_%@{^Ꝕ?yI%]?IIڍ.?N_{]mYjc{GMD7p/RGoUzwˬ7iw,p77cGgWpVOX}
W>VUMʟXӵ&ުIPT훔3&exW©sSC'u~sj'?
~!CO,eoYÓݏ<L\-%=猪Ը4)	h۬w*xǀ%ǩ̚5WX:Yu啵N],ouw)Y[tg,:s9%#N\c15zڽZ&͕yuh7]i	haf)ثOH%X<%+-c?%@]mWC+&n	T-#!|$uB'
]r7^	|X?%eաK4ofkv1Of귋62Y1U>?xOlwty,m:Y=	zޕuПɕz-?hj<*xC]kQ'U0_3]L(+ŧ@<g΅ǣ~9tfs6ybGn\VKrNjx}tiU|6l\w*2[.ɟt5|NãN'鑫ni,PiR{B\ph}O$mYs_"}n<뵢>';hoh^'Uc9jm'6蔩
Ԕ9aaGrRmB*0d:03Q
|gCfٙ\Fyw-cqs"."x-&X:&<o Z#h
b63ϕ\E[𻃄-^G!wo6j7#nlmC+p 6n'8t2$E.@{
𽇿1^Qr$!2$:s/)211&F~
 iqGA 	dIr"W
ɤ2Ȑ$FwHg1#9@8TgE!hؾmPA s9
&REhSg`&>+p	r<9'FJɵFӤ]F:P-s=HJʹVxK]AEhAZw'sf[߆ʈzlRЀAN&HЅdvh$Ӎ( 	z~\ziwHYTthBx=N! []"idQѡ?B $FT4y^y|¸U_sx|QQ5
EMWPӕ4+RȡI2錫f
HnFuyĬaD^࣢ТO=\N=@nBT40V`hF3|-cHOE{EAiMvLG+|%65KE#N. t1ms& )pAЬр<HCg$peGGA@$F7a$}';ISJ14G8?M]hgwcd){Ɍ3-U@"LvIA25:@A9:*?Vr ~6!߭FϕE=]E3tX{	QnHю4M$mE]V{r8wз?$sDwEA#Lȭi%|齕.фN.vn	hS1秠1`%
^_X+ipR0`b !Q@
PЬ0'z-6T]T46O[30\c4@AczL	hrDA|FAwWӈA)iCb6G6h3yVA~*h)_t( F0[%8nˁL G#|QQ:{FMρb#zF%:HE]AIWR`[J6F`U4m:NM+hF>0h{ %~ A+Z(ҦuA>yq9F~ztqB[	xd.IQa*#F҈5t~
Xg0Ƹs?˨r*ɍ]	Ik_@@v,#H|ذ.K0T̰hW͌gմEMGo`K
Zu%$FļKɺt!j%mSҀkb&w3X	dS9B4Zt9%Nu xSFFnF/4:q]&+j](hE5KAc5s]F@/
mu	Ǆܮ&-3}E93dO=#.Gy3GEE7Ct :M`1gRT-4rkPEWt8uP wwCTrJa9UhH*:-%}/Z(6vi>8>兀35Kt%
esv !X
&\^E3Et41b=R ܀غ@[p0-4>*:-;)hJi7i$lMhHC"F/q?w^>i$L#m*y3q-Ѧ vQѦgh!YD'uhpA*zݯw޽!Fh:o|?uS:4(AYAЦ+L(g%oSL
j41_,JЋ賘>!6pF\S(hb f3sZi1wh~G4+
5@HihS1oey3$jhj42M= ^HjhQCA "y3Ec?1cEW\h[T4 ǴѕEE#sI(垫h|1$>zg4Fy]IyYlBњ/c'+U	yc|B^蛐/h_(_PKO!d  ,  PK  C:U            9   org/bouncycastle/crypto/engines/GOST28147WrapEngine.classT[sT!nH!&	i՗5%vݘ$\r"kJr'tu:)?î4fR3~g~}
`zjL+%DҙXz+_`Tf;ƻ#8l3sŴ઄r:qnBP7Fxh&Otw
O~ j6eX;Ldn$+d$ȸ)<ϧd߾Q:,B
e4U	D`>
70=;w=TiѤ4.A%yiM8-[o,Cӽ8Z/,ҭj<q\n6ðmv	/$QaQT@H+z&kwP*Ǚ^qKu|XQݛ<
LK[qP]
[~eX˭$Ф-#!u2R2&eLxSƴ32xK2ޑ0vYs=ά
`v(3>,}o {Fif/c3@7G
.^ +$>T.xa 4*N!dbDE
^R1*^WXH	\y|Y| hibMYY|b
qC

=+,H iV:T?{=<ݢpb2psn!DT=!.(Tm!L0}h{<F9RkQ~~PDh4'~@b,f;Hb)	26}oI_a͇݄;$}V>PxTOFy679oad*Zv* I8}P/k{DE2?/RE=p**0%FUoT,ǞV*=?"hh7'a|?PKeC    PK  C:U            9   org/bouncycastle/crypto/engines/GOST3412_2015Engine.class\SWߐEeiPTL@D ahLhTlk[j-ҡժ_ޭ]_ޭu|Zm_{9{ι	  F3B,Fc,#LӀ6yHptCi@OKk似!R<dRPB>0#>)<8XC52]ZOm -Ѐ&M@i%KӇ
-.Ouex*5yZ
i**pLdEPԶr<.WZ]tKyCeI̴b9Njfпdf^WSB55sOVPZ]UMsyhaNPkp>ȧӪhO.Ph qWI}9
ׯvƻ@͢E.
(XXRNtvr(R3:<
ѓJr7]U멫X뫪\>_QY9}O-\<w/LsH6.E<,q3bs3TdIv<;RIxƴ
z'JZOu^};rI?Zdd%̴FDgE룡ʽ*ە&KMeɯmTk3,yʸS 3zqiR˘di{wϨ]uM+C;1._wQ߹Z
[V{\y2jfqo<`
Phs
PdbL1T
HRERu'*N>YCĨ4ڑfYg)OfzFQpOf5 pb`5Cc2#lf
F3dBlInDn$@F#ee@!0z?4C2#0*0
\f(a*33Bm8ac!X0:ƅ&Wך`.cW`>͇kכ|\ XƸq	c9ReF+MP~TE#ﭤ#<,M]pT,⬳󧓦IFDkD72W2@_F!0`:JBKyjCKCgk@OG +pqѡ
v-v;B>jw݁:"0LJM\q]4s3;w:{
VY{`C0
6Xm~'&o͊0HGG-bo,KA5.=>)i/C4'j_  13lQ@s{:x*"=e6GȎmq0"N+rb#MXҦh]3MYqeM	ooW9
}|pAӯ//"n^
4J8+87Rfek5֔CP;;S}p%JCs;@Gn<k:Mv9лo&e+mp8J=XDCH&^=!VHku2ETm.Z-uѺh-Z1nJ	W+FuaN
9tѡhʚвSR;`Gc(5<~QM:vʺ
T$CX`}1QGGHgIGc҈ll{a
#V[lU[<?|x
R:1:6z{6sH1:mJ>}0/~x]:B:ঃe[MuTQOS.SmdTtR'<86`\1z[|6)*a-*<=?!vѫU:#B&qM7{f'ZO|lVtT~GC1UKq#{0HGcZSi[iblM\݌{MFDI@[MF-'!G!M=|@oҢetcYz^{/M_/`/Qt[".N,|Įߥ'	S:,#Uk㤮ޱܘmɱim:-a;_ܮڙUMRR9#lVuKMgS&tA?~}H9=7a#$WoՖ{xr4ji>&9F_ޡTr^åS4BKjw(;,H,j{aQ Qj$Fb@{zb4%fbo|{c0?p1{yb_,%G}EsI1q '1`<ъDS:b*i88Ht=!'O#q1GJ<,s5b.JkxAb>G_?ĉ88	#NƟh%5"l!1C/sF<3;gȏ5Y8s с>\AVA 'U2&:b9H!JUx"Zl".ą%6"D.w0x!}Cc1BǑx-q	.'.Eċ2|Él~~+0c%шWWb>U4&5q-qq=^̱
s9ք2MX962Gn$܈;8n7{-̱s܊S9nMh،r܎wM-XƱ[/ǝZ]Xъ8X{p/ǽ8>\
+9fq8cn؉p"n\Ǳs88N}x	~x_87p,Chxp<9qO6'1)?8i.x^<~"^~2q+9^Bװu&xWq%Z-N$|NϞH/9>TOq|8g9č_@%o Ƿ)wgp.03~+^?e?>	GcXq+8N`}7TϝTVO:g
;gg琨.LԳIsgY=MJvOgg'^S&1zzE=>QݢE=CD=OzzƊz>E=+D=_z"z>Ry{=&tgwrndzOiϽbb)bb/i.yL&R*)%'(yUYsL'Bs'MQ/^اA.)\*yDgs@b6O_O]bbmbb?>}<#N>E>E>|>8D>[X>"z~+>>bbk>>.b}b%ble}}SyEgaeǕ}J}SyQgO^e}}]ZJ?=~nP9SsOO/*/~+~)lWT)RyPcs?+Q#?7*x<?*#lQ9_J?~~nRD9J?+SKb0peJ?J?J?W)4qe}PY'W'Gaek}Vy_yen>=}n|+\V%%$%J>*|J>J>3Ag:%1"r (X=5=*\srS=o(X{L=FqVXM IAPKdi    PK  C:U            M   org/bouncycastle/crypto/engines/Grain128AEADEngine$ErasableOutputStream.classPN1=uqQ|.	raUBƌvL41j\~mr{7 G#pZ+\=

QؼpP,ٲ3Ny.;
@f\޼aw1
R{R"D_j-A73:1I'LӉL:\BJqo;d5IGƂRÈf**.<+.|%}@|Z
6<QLa['ٵ`\.S+^8 V]UwXZh?bk(ٶz	o'PKb:    PK  C:U            8   org/bouncycastle/crypto/engines/Grain128AEADEngine.classXyxT?/o%<0300	:E@j#5ВK22g	I1M[*jTԂ!m^s,$XY=.7Ξ`L(411a"lKm2T`
Gc)8NH8i Vldt RIS+7RTgخTf`ov~P66	P-aVYWPEkgl0͔HIZ}(n7]F\53]pˬc-J#h fZ&;ᄙF(Cs[_
bld7hjkn8Ը	P@a(}ѾH#Z]
#ebpx܌bH$P,H&c0qvlj3;b	jSfo&w	it.Qj
whP:9Mh$zpqFD͉XL&VѡLE:cp{æt 2
jN,)0n}AKAaw:OR
MLwқߜO1t"KbT1Ftpc98Q4;:̄?])l1~FQ15iDn3j
T8FK/3jJRY,vap&S8YG㦾d.jjJmܟ#bF3Յt$Y@KQ5mt42YJS͌503L8@<;TӶf>hƸ}3d3rӪ8fOq>zkF:;B 		Gd
C?
Mmoꆄprx\f|vݱvyh^!G&k0ԭx1#Zn	s @q|vp_aq	g6-#%뇜ʕd؆PeGX JN-CXLARa

*lUa
7ШM*Vfާ-*4Ьp
WEP7PVrztKVg}*M8Lužߜ_[1R0up}WXGӷh
s4'ĪqY89y^
r
*j
l!VhA*x5DvEhpk"D`%:"DB&$40TA5PNH[6XA<50x!plA
*C`z?lȽD>FD>AD>ED#rDr@;kHIH@|D"9"G<LD!%"_&ǉ|qyQ"ǈ<Jdpykf,L`o#kDҨ]|nQq*;tpo&?X+U`)0L.Wq^9q[8N6"ϨUc_@4qH#Ip%S@;#'GT9;o:
_A8l)܅gU[znK{[8;t'ɶgG[9rMzb-Qe	Tyrv:gG9Yl@&$NÈ+:r+8j8KPa/TGJW0MXKD7zJak 8gQ1zA)_w{?ylHOX.0_yHڊ?جekf26T<f{g&y'|Pynټ#l'ޑ38BP  *)Ldn`pd>\ZXbJzKp93T	J\,e.f
f*e6.3A;g.z2A'R˖	j\te\\e.j),$%,$5\`I.l,bQ&se`9qE\ĩ\fz4T}1
A7K>]겮 uH5K/A@/G궬nGL׳B鋳'{]^Ԩdf\*KјD{YS4U<Aߠ.uexQP_VzǁKDQx:
9j8@fMm@0f!2h?<H\(,F[HY(^1k3}:ۦ 
<7ɠJRD|U體PBU\IT$er>xsȟriUB"ED]w5*WaE7AIg=?T2mԧֺ2QF[*f*j-Z[ف:2:2udȤ(
IXe

.{_\F џ>!2Q^/е5
Kj8
1PߊU~BZy1-ZsA}xqTKia{!P%]nȯPiŒ*{&$Qrs?<J^ qBl{E*bP69ztN0݉+ӝ9xHb.5]sw<svGQk]l{FʲN;p$hR!@z8Tګdߛ=
*<p2?R!
Fq-vk[|>%ЃA`D8khP8 ;39(l۰ Y) {(! R0-Av|XΫrΈQ,پ@^Ç0,|mR>^1(ݤ((cZCak=>%IW[Buc
*/!tV]i%8)pRex
0|1	PoP]J"@ 9B%Cv\wOEK&mO
E;
cf3fDJY9U/W=>D2:Z,UBu"w\bYfKk6 ,KE+ fQB ԺDհ?οIl?vj&5M]V*;.Uқ!!dB/XI4$ 7;~҉
	n8<#`BP^͔`f{6,
zE 렄g_у{w!DxN>:'ӓ~6xqJx2+ehQQ酬o*ΪJVlt{~u|e<
tSZ$%I	u"nGo;^PKS(2
    PK  C:U            4   org/bouncycastle/crypto/engines/Grain128Engine.classVw+v^^l#+Ԗ(ZNl
vx-Y+V+bS6.}$B	)9&Ҟ?=YLS;7wf{gFϟ `/|x~ uAP%Ah	Bkzp%7턑7lCE}G瀃iOqwtNcb ƏDT&[trB?w+fw"]v"fis[\H.dri=S̍g'쨙L	ҧș,5+K?W2,経[@Ԃ98FCoGa9{
=
i-dzdffhBvneM˰gp-]Q.مA>ȉPU?^

zLz*EZO7 K u2㌉̌n%lLgMl?zsZ>ۛ;deKsz0q'FlY(53zgnQo#(i`<Pu)bwD'״S,d{3B6{;bDxBl֎=ͬYN߹FaؿYV:G[fAlC$l61zI2Vs
8i3㜾b/i؞|f]XT~jZ0Yq7ԝ\L[qN$2Ti풕')(3Ą;i-*6q,n^a{ExQ_"E_砩zIn.4ߴ(tqsokV/ΰk@@ߒPiZixb'?LyJlad8q^%x+}@y%&` ha'+(vi&mIdH퐡:A` 8Cp '|GapN]@$	x[dr4|O±sy@`	l	$E	P"WasTy}J˕Pw0^뙳Ǵ¨6qoIVM<`>8Fi!&1c348WG-<!
?Lw߁@?P?:MMD&C>E]P]~ԵkvƽQ}~UXSoHX.6K]{*\K;5$O;PqUH^nO`ŏ܃[Үqj8n;#b3"Y	6Ʊ	0hb|(cJ$1?I\**@YQ\*o)`kde>zY.\oB7\O*w6BHQK/RqAƅ=q~gd#02H
"#c"dA(-Hxu18hJQڑgkp9ڐSzM)#adpm5T֕hYm,
/Հ* U1JaQQ#[ιѥ"fM~W(s`:j:?[QsRGd#aOeG˪Pj
DQ.xY}n~Փ"{\S<.
g
Yw#z
%\{WBHzY	Q^ZX	UcdGʬ-yq6FkUqF
*HZ!XOҦ"T[`5;:ىw
jIS|pO)QhN}F3F
o ?u)oK	4F)񪓥@UG&`Df |Է<(=x4L{vԆlq7t/x]t
2G wqSށY}x}lޡ.#܅wWⓩlECj >ÝJ>A7 L!k:g2vEk7X}c>&*gm}Us,׫'pKFIa/Z	BoϋxOˠpju"{݅Oo&+7Ao${6L/PK  `  PK  C:U            3   org/bouncycastle/crypto/engines/Grainv1Engine.classVw_Z0Yk;[2v(ġ`h0T	`Lx-eUV+bc6M~#-K9%$/y?=tfJ2>3s̝ (pC:,ul%:%EOy?oegRB{0逎JO2`:M +Nw&L`%/zv8CB&g%Jg832-T&8=v1Ե8ԘpILrsxΫάs݉9TM#F2;L?\.")f{=uKo<;dte@!zyz/A!OP4Ca{<r*|Pļx%勓,G~tO711Qrﺉ39`s}Bم^2óY]aU'K75 ww\w(#raL;r1`[tNN~&He_p\wlNsI8!۷8Ŝ?*kiܯZamK|ŁԲ;Lٕ/psK#pE܎R¶ʏM}ԣ^{Dv-OQsG]ni)vfslA~L
+^QrSG)OhWzD%5L4hЧ
;4|MN
iحhثa@>
5|C]GoսQ~=fOov=:յoK`kqc-ݛ~?,@⍓ч?s$L`&G4Bg<&`*l@&L1ي_a֛x&ഉo2ـwM$nēl0a2$dI&g
1B1y0o00*#LF`m"ɫL<&e&瘼d*3>Mփ$eQPQm
igK#D$H%D_6D,鏲i
gJ<)8xbLv%aRu}
#q5:m^)|yPs]B-ʹ*xvg;Gn@S?k?Gf%װϐ٣)7M]5+5}_ǅp1j\RI*.'com*.FɄV0I{oMKׂ&(`1
Gb`B2)ԓ9Mi?h1:$-~E|)[%V.)-/Ң$JR!oD
O>D
=>#;x
޸6O`-Sfhم~9 RzM))@֯@* L1.4P%,Z i0Cؘ3"0
߬'02eTXҫVԪT;l5niD"M1oH,uRY%6Or}Sْ-&v[7-62BViDxxOͰBfIx%J[,j
Q&CR,ʴTKR.`ɜJʪ՛%
h4TRHJ
jVF5Lm4(J5hH^IUYӥlW	9V˗&Z0EߤRQ,3(5S3gkTg&Aq,WI*۪L;I%z2MɽC)9UR*Q5:RW}m/0##=Xd$C.?/[ArW.`uSIĝqw~kV/F#2͙c rm͘D\)(x±-,=7~k
h?9Zz8Ӫ/ۖ9N38F2ev_l-RSDv yEGL(oCRߨᇌW^oD'i^~>?""( 9wո:pl>%1Ha'ac%=}tmdOP	Q!8|&Y?9d1y;q/PKFo    PK  C:U            1   org/bouncycastle/crypto/engines/HC128Engine.classVY~&I3adRXM^(*-Dh4&i&;Զ"[˥*xYxYEeuh$)߯svS r 	1쓠E
1
mFIHF[&f*D	!$DOt'/fwI޵Y	Ͷ&
tL&RLY-Jtj6#{'\G$4Y}<2R.ّ!=«C]Ba<'T)J8y?T9=},l+e-6a]eIӲ'5-΍$O%4=n 'OnSHMP$"P%J*<.[EDFfRQKXPb"/SlӌrE41*ah3*d;]g6fMX^m	-픭/bh5F=MMۖQv|F"l=+1bfnA!.
5jZ!\HS%;wmvŜn-NVT!ukH#z࢒#vM٩^sbl_W)7/ǧt' 	k׹WN!,m'@)n>1_;Xꤾ	wٵ*Lw{)rDJE	j2R%:
]K/鴬X]
ΥR,W{|Wd)@u')dlC2;e쒱[2>'2#chk#7f5:i1,mDMLf:?>._ۺǟC|-ѹ;KL%ؔ(K0zTE3T3tb֩bxxJ~x+T`V4CV0>|B^Xb$U|)QAhEZEU4!b=rjIa8ːga(0EW7k
0fM*x	Q2N{
YJe1q	0c*yW&pᢂ/
N
Ncu=f/jY뼊>/N:I.K8 <\Ij%d+Bq!;T<YCF,Wwb\a¥v-lWXoyӤ^hˍT-.I
njJp#5k$eCB!)4MV(KQelrhP+ɔ{
|4mA	ɎmKn^v}m
 w[[,S|e֥j@
M<~WK4/wțKŒza';bBRULdCTgbqa-qLULLؙKԞaC¼ֳ<:9qIG!s\R]iob]E_FQzw5mẉҵv&.z[ej8WM#.m}Z )^]j_Z Yvitô/1[dFt$IXh"t%NReF<;$Dk/T؊k>ؼ$.@%ѵk 
l[yW4}2
<vCpzણ%j8uX85?˻81ŝ &B-lZ~TOfqs'm?%Z+@dwD0G>Z8L͍f½iJxŷW\+!-0!&|N=:w'Xgswq^%B/z$ M%Ii7.TBTPR%7'>6X_7okN9s9y}u~//.\觖{s)u[
P[:FW$־tǭi}w!PK_  A  PK  C:U            1   org/bouncycastle/crypto/engines/HC256Engine.classVsn+%l8%
61PqljH[Xʵ
1K-)CgO;LgNm0Bgҿ[z99~_ W~?~%@fT/覮t[4e+<̺⍥Rlb׻S)ワ}$\O[[mI&m6ZR
u\352}%jzg}:<8ESW㕲֢k*G:Gu97M ɞdO05.ucSK%@P
CKSpeόjbl^0dL24T>W4tstb {$ORObM(yTs(dtI(g/`Jʬ22B2hyh̥O}CPyK:!kRS\e\+g&3Zԋ6LV!:6Ur=Ռ5SFc~hJ!3dƘ*d^ՌHn	؀fL|IjbUS
9stUBm[+&xVx]Stmԧ(yZQ+yQ,ikmrpVNZkq:R/eSoZrFsTA׻tƟǻhlJQNy;(}C+kdͬ{ovEKznLV[%bVm"E$E)CD"qLgE9XKﺍ 5Z=Z~Z	iܴǮ}z8?zsb];M\k.
_o6QmcYzr~e&[ȈALbxUFM2L092 v$CNo09Y!&xEF5\&(uxO~|E>|_ہKH3Q302ј0Iޗpe	瘤pIQy`2)|]»Hc\?(LHĸ3)fioWk=ܙwҠ:(Kť{WTXS-w8!/\$"xLGuY󘎋囏W<w!K܈˙.K`H|Yֶ$c^F	~(MfdEY˖NX	DKR|H7ָꚽh;6.Кhm@	huC
V7Z@\YO: Q'<zZ3a	 xc͇ts%lIPwxA9:o*g^>nK߳rN&:+3
SŲkQH4wavs(N[uj(oft%<|70ş3!('z	m?+D8HM5K61۞֊vnͦɦ->Avi)Dǚs
}ڭ]nJ!q8# {c	.bK8@,@`z윍M75־Op>[?lK{)敞ifc.gE{Chk	~O8#ۺo-`|ǚ<nS	!}RxpwIit.8Wwyo0D+c)<
`uv}37CBNRI%HD7n=8*׃Rl"I'woz#}[? ./|A_d}7"I~8{ofzP2́FVG_\y xW8]y%<p: bЭ!sjC_PKZ-1&b  H  PK  C:U            0   org/bouncycastle/crypto/engines/IDEAEngine.classWsؕEg8)6&QM[iA*`J#--}%K3LcS;/=jenhF{{W?u }l
%<+W+xb=Nxc=ْa2_,W19?az16s~<6qyfWLftᡉQȩfN	5lD˖eLdV<Ƈ&N~F@󶃻T*F`ݶUY 7:im٤QrE#wy*W[7NƵ^Ο2uѲG9{VY@`
[w:},8H)P`٦S?d
	:m%ڎ*YO4AUeP3o'kB,WjNtvaGˊVMYBG+MV#O(O3ME)&vݗ+zoI/z]$R(!P7赜~ph¡D!";wȑZ	Ǧ
RްO,TcnV{sb!W`Ď"ӻj/}շJL';8;uSl*:[s,[;s=a\k%umU8At1^VQx:f_"S8l!#ۦmQ. &F DiťJS5i
ƾ9%@񜈯8*OWEE&☈"EuAӿ73v=.`S$Vc[ٿAGb3c;ʹTvkU{56l<L8l#⁤|ȝ=2>]Fb>Lx	ao9*2q1:d./c8=2^^)уi1##(#*3m/2 yʈBg c$)A	b0e\UF8kA+AL0$#gQczL)2b2rˌg̈;AAEzG<
gQΔ^==zeR+%[!xhH:&})|,6}=M<$9/qf\7t|
كu>C︇c_q&skx\K2>RTLj:~>dX
kXNk>qkxG;D/׈W3W+鮫AU^ }#n
]0>"&D!?zzIj&CR?~g׍NKiJ6:UE)uۗUk!a1݃ٻ.E	R$#"ݸ=xgۓM4%.BV1:Cp05Gpq0X(ʍk+zf5R"z>sʪACMav.Z<i9q;788sqOKR),Gyگn6-"9F)Th;PtPҝ$%x 12߼)I-*DTiYW;8$HƗՍLZ2	V.~$ɭO7p]pؗ}AxH7-?݉\S늲P:R|b>~FX%#DWBd=Ϳ4}+EqQP2BGw5V77)=U}
nW; W^ͯ yo3nHO'kc)ͷv;@M^$RITx]S}h?QYwUF:]߽Ss
oVgڵ9^"
k,~C!T~Vc;Jk
45|0Ƨm[\oPM"M&RXsVCd3r
~K$[l5Z
XƀbT	b:~y/Η:~ղG?TT PK?\  =  PK  C:U            /   org/bouncycastle/crypto/engines/IESEngine.classW	|T^oDȂO`հ	FŦeCF@P"鑗ݗeaEb=ޭ֦w
P[l]{D{U.I6?m|?f{ gkp7N0ClS.voÆ6.}\2+%CJe:vTYe6w,T&e# JJ36F=T&W"ł6#ɼiXf>bm42fdՒ#ĳݩAPxc F.gf7`F_<i.RIrk%Ì-F*mtmFHǋit	53Ŋrͼ@0ĩ/CUՙXfE#-I=$嬶t6.Oeʎs7#ohzRibd61P
fkƪ$Mk3R}ٷ6u%ѧiOm18l&(t6a&ө8QiZcT&n.OKM0J1Ryco`lQsJiݮhb.Zv'e"LM^#NV9bS	@&T,	:ݱ}kt9OZӴQ鴙4K"yLZݽɌг&VL2=},
-M+lIkamlnK%;2dvjϳ78Ki4=$;מI#l+s6l3QfPyIrOKⰷjmF!8
UŞ3O<&ÆjlPjԲfS'US^YQ;l3Ws9(jzЭUhh_.qc_
i4UsɫGLt/MY'bJzUe*mu<9'xTYd[(ˇ8'LYc#ˑu-rRӾbCTIoe;T[XHތgwHN^:b.A?]9
UZK)X`v+Rp
(H
*Tpu
.U:\`+x7҄VݱoXP:?Z?^XDnJx~rUzx+\Eϩ4ǎ^5d saMs:VNhyy
7i
IrAuMM`"o?'Oo؆8eyj5A>i
ES0wjT)
1IL	&2>_9ɓEXvwr
\ȯg۱(`rjnL|L֏ڝR<Ս͓co0kA0a	xnЅi3,5wh pޥMxѰLW1t443p"(:gJ@P54 hQ4$Nt
`8{ya.fjx5ޣd{5>
q>4|Pb:|kf(>h4Ǚ	
'5pg>y/0|K_f
Wv0ܩb3p4!!Yk9JETQff>7*p^Pq
v1ܭZܥ:|GQ
~So>o1]7*n׃~q Ap?Z^J?t
=TkZ]e:f-R |qdIҒ%iOFYHeIre)I-y.V,IIz
v1ZgC)!98GMx"` l=.*2<q?|
?GA}}ar(}q:[#{SѦ#M
OC?Z.M~lێmPЄr}f O"PB	=p̉nQKPģ;)'>Ùq۵
KuyD+b>S8ҽ%QA]*{BuȰRj?<)7׽T>7Qss{%"qB@B
,vs
?xߏa>\;(~G.| =mn\^
	NCCBQt;]dcCxs>{܃w?g?uIzbSTz`e#Xr'
{hz fH[l6n]-A8lPߥev4nu-BsH&mGI"8{MB8L }}1<Ŀt7R͂Yxl=[4cK5ѷ~s{mes%R%lj^-o\[2l>Џ{^:vQ7k!`{8cJᮖ`c(X
w	-freRI(825f,1XҺHB;Q3J_HUJR}v~'>lGJyN߬H4	cIo`e.ĳ}q<wcz҆MY.W1/'x7$AAU)y'Z;郿
R%x|XtAaq%˃¢8KݻKLA_^ڪu	<pOa)+5Q~vy:v eGT{)m
zf>#(D+V <JwAV;Y|yy.PprBNvbc=/<pֿǿ 7X&lmSY~C;PK_Tpr9  E  PK  C:U            1   org/bouncycastle/crypto/engines/ISAACEngine.classVsWWaeSKJ [jH@l!!MEm'Ndj'@7JVi\Bh\CiB|5@)3a$i2<ugZKݵv)s9ϻ'/؋w
EED._RqX@(ai̪1&@LvHv奷)yQlGV@BY7jɇf{zĻMg	t+â#u֧
mS 
FalU[7-*`aMtt et'O*>g=o7H@ͮ"֘qdOC)fZ?o	\NT6=F{1k-uݦCi%&|dU)E=SҭbwvGɖJFQ/ڤa9.cX%jHF/!hбM(`Po,SUǘLS$ećK/r"IILbf\
SJ2=Uqʙ>2n+P3ˠa_4FyhrɫFGuG淪pWk#\͡߹C
9jk%Ǐa.W1ut51E%}1Kfmjzkkd&3&)nziyb )#ljJ
f[OcWN/41UnABhF~'_*đHJc)i
t+(أ`(ا)<
	ؒd
Mp4K;9YU؛X~uO7U۝ޝE>V:{w~2~zu>wְ
a
1&Lv0crNl$j8$gjH2yzInh4|->sM
	&ǘ-
mkxaTvxcg`09Ϥd	&%&L,& TN'DKA07|/oJ˝b^	o3210 ar>G}1wOzt&N!}dPdgx*6!¹$~&	_ޟR+]c;*Dk3٤=hK-ǩzOR\cr=%U&L^e2
p3-OodHM켋^4:yytoFNvT,wpjBYhsζEvZo۳H

W0 Q*1e
@}Ag!=ۘ.G~}fM8L Pv;$BFl.RRZ&n≻8iZț{|C/G<N
GO8@TJ130~{͐w<@1:	hM_2zĳyYv?qhyvx'a;y7.fS8B}Iϴߨ3|%O= Ř$3<+_J{2YxDDBP*F ixuEq_ `tLu@G9v|n&@Ym_`nOQ[~=-ʼ[-  f_!aKmN,2MhZT$"uVu{S((?!DWj6]+D^
么y*xMm?#Nϓ|msկKs߀IЖPZy+0txedW-/tnFo+	%D"ᖏ@?%
euݡMsix&M]t6W0TVUW4؆`8\:$RVLH^).(vBj;>PsmP3ꊢwMPK'y\$    PK  C:U            /   org/bouncycastle/crypto/engines/LEAEngine.classWkpW>}:Y+IlG-r$n$~AT;VP,KkY"UCH4
yP0@88-m	4U-3`?;M9+kmX߹{ι޻~K3 >^=[k^ϗbۇ=0;׵b~VajCluM@ǝp5$d#F:|@D2Oj:v `Х%Sss$OƵffދv:{8'^Hg(;<-dFRg@r_8za5WѰ;d(<]-ZS:;Bk
`FC3zCl``U2zlU<
wz66zRqC&
'<lk>ػwlxJMR66Z4}`V[ D'؇$r)0b!sπv6@<@(i%dU5<Iǰv)ɘ6EFȞVd]kK%3'RTci5)=,M+)9j
O%XS̐Ng捍1gsyl1EkIRj\ۍIv	ն8wفY5ʠQ:_+i	#1Żp2VoN`	$J,hQcٽJR(frڭDpeSƓl<3єa	eX$(xԗ
$q)5V?鈌EsOtѫ%ӣ8·Ј6*eBloo^)_}2&4ӹj*Z\,4׉'L=moݡXp2X6W78M~j
1O*ʡc#Tb].UvmDɟ$lZ
$f2JKH`'(!(%(#	E$f'vK0 EQE0$B%5]Ega9VI4oZ&MvFzaekŁ>{>vS`M&;3sN	G]6K'
[$pb	 Kr		)	bDa%A,KVH *$J`;A
(K,A3<H_)OW	"	N8 8'	90O9\p8wQ=@p.:p xg!x[g	M|18)|&oB[*H4p"Kz}[8J('8|*Whu>EϢQZ,]CE뭶{Q_cѓfShۋ*E5gQ<->Y􏡾ޢGKNr݆ůK,x]9@1XJɛyˎyF_0Y'@ gIX3
p(WIxvf&a[L._}Of8Ǎr$8Y~(<g&q[yrp,䝄a}9</>.lfE8S&e62|x.P딞0;NY>gvFaقS^_a8(ȿh'0fWf=يo]#t̵JW! ;3oo!>^6&?@nx͕<U;
"7o[OB:Untj9r:5
GCΒ< ^ͼxAl̝	-@f)jb.>/č㞂?3(yѝjNYHpԥmB堘nMMTEk#tqYDDv!Q.kANΟ 
 TpѹCO;`2S`IeRN8cko%+gnCf42S#.~%321JQ
hb.I*,L
T
M3]e1_sUSvh!4r(n?ERd"\͈-ˎn[Ǻ1(Gm[i5l	If$[(x	ňp@9mӛ+e>$L~\Z3\71Aj0t#8EfVJ6Nw]

q$xOB04'6nÃ6t~nذ``0`^6ol0S0.;	)o.\6\7FXJ̏w'Q.gUz"Jd\KRmV..gƅ@=C-P\B!ɷL,Ub٭ˋX ,3	t:p:6~͚=Ιgzd>4jj(/;B	8'N{0$8`Ht
id"N.xKPK	    PK  C:U            9   org/bouncycastle/crypto/engines/NaccacheSternEngine.classX	|nfv9XDFPd7DF]J h.	lv'^ݝbmk[Zh+j"mzh(T4`[޷[{yIofl7ɱFPe,ce2hBƙ2Vx&g8[92B2ΕJy2Ηe4h!S:24}22nXf
/MDtxMjOi~c@(V{
-#RL%6$ZVںVnpmj&Mz#ZkỴ4im5y<ŋj,ܒMF7inL<lD-SZ7ݛ_^	8]eO*VGl8z\kͱddKeMj54T5fcV;H825tZ:FԀ^70I5NkMFhT7dkF=?q]
Ka#lBc4~?IX־%1R%Ĵc&hM(9z^&QicZTZ9W:	)*9'4`Bvf
%6RvmlY)P)3S5Ƭ7PB$~8f(bĴ0(+© Ew/I(zu#׭Ei0ϨS	f5ahZڄB]QwjB=Ou\lNd02&`h8qPi囚֌l:ALdc1UQN+JLF5;	)
R'#$Ċi*FuEl?!շQ,pV<fާac;(ݯb4	cU*%^[rf2>1ۭ4x癕+5JRy=_T2Cze莇c133HQbwSXKA'z,mⱁˆL3=HG&n#EMn,olŴpZfT1{
.pEPDžrr`JEhq&yYOIE[LKj^VBPL6W<3@yBۦrV5$`$1bZd`"#f֘0	ҷXPVt֯s5BBzmgtf!TM6Ne9]eՉX}t2
V4Nk-&See;wN!ch1R1l|E[L^N/p"Lee0ѦdR/FaE8VnGٞьVsf>Sb$~ve<i{"a@.	[$$%$$lMv		IxwIx%G{/eZ6W=ܶ;fdmkiLl.ɧm,TfncsYzӺ-muln	;?&5$(R_^TfgG	ZV?GZ`
su0W_GyX
opU<S|ל7
z< w{I
z~6dr~&drN`4^IW 
z zЊ!V&a|>K"l=xL>{<hý\/yЋ/{p5<.l{I΃0eL$`+|Cn|q'1y(L0yTG
&cC7
n
noNM`'cM&O2yϘɳL
vq&O0yw|W'+ộ܎+Uɯ2:o3(~.|ɏDf?e򌂽O[I2eAoV)}
FSYL{E)~'9RzpXBv$dZU~R #袣JhTػ%#؛KirA\ OIo^%#ѐ'~gNȏ`hr\zn;}P`g_&,_aWϰpw[BNx3jCgO?9J!}>t|MNdLGH7$A_!Zm-Ɵ"=;z9xDTFa1oD2FB,dTY3j	{$q4H<,KSH 
aRh,ft'ѧ"gaZТ
issFalIB[1dEEK+{9	=apM}Nx3oͰ(;lc<,WwM`t*kC@!BC;1ru5j:ePxNdhR|'n[w+(+y*1CY=ay֘".^zr2-	)ekKĜrڌA{%9QT+-ڋ{-GDeLKY\2;"ΙxıMe)>T>WfneTMϘџg:.JoMCcqw!OcLQ1o"w1ITWƩwP]GPmD<PqMqI~7
qQ0N-M%7N^?4^9UHAǈP?0G080m4B,2>8,0
ԸcM[`)`(	3qw3;!+Ҕ50gA.>gs$_H7̕H~N$\E0pը9Zt{{tiNQo#uiM~q)1d[ g9&>O#fMAbG^hu̹f:`݇[}<YPiNT$f59PŬD;I:'_zU~Vb qskybCysB'|.rMp5g.0J3۶pr*n+PZzcgcXHZ]vc82Z%	UH+:z%tf@h;Ԉ͓LC~A~<q?=y En#AvpNkcܚD<jj[4\Lw.)'9`/PK(0X    PK  C:U            3   org/bouncycastle/crypto/engines/NoekeonEngine.classUs֒vWt$&QieAIJ;N#.i崄7ݕKhR;i3N3P4/}sd =6qLLs=;=߹׏ {*{T<*U \/,خڦcVSB8XdqTZNX0VrJs#5aWh8<>mO?_`Oy֒tlunszx=(2{q'܆_\n[.y56mӭyU7l,Zq
Bߴ0ئ%9^c}ZVxiy.^2/[ ؝ߤJq(L&OFȚm/EW)Qmw|gaEϧ,UTƺ5Kezfm.$xNU{$8+$.f1V9.-Oq[˖NѰ
چ`[KVJݻ
}muliDu^m\iAXeS,6n9j\Y_Vղ9]1[)34'(m+{d7t'$vOolK`v0.nږV9k嘰	p_	m'Cif!tҔiS1Dk2z )
,rkǇeZSڦ][*(#A`!
F*xJQO+xF1*(xN
!aOqp>.ymwzg87뤉Ql_ wo-E}摇ռ-:<ߕ1x^~<1.^^eчt|:u  :r1']I.Efu<WtiL14p	Kin"3!/qq5J0E
簤a
jE
3xt2=o:^cٮCj@_ ۴->jNOwh8%}utJ^/%n'iM7A}pͯmJKZSmot}?ʧpex
kZ5ܟ"c=|s2Q^O(Eu/ъujp-VT#e(+AS76}VO6ԕfmi-J镊l(|*_D#5-N4d)tRxg5\õ
l?+ږ(~S
N}ٸo)6m궍vn»CԨ
ީj=\ǏɑMKܥ\+

z&}ͺTpROlKF_4=@74WRCkܐ*,,]XjX:fLF>ܿif
z"]"z#t"*7ga9
Ea(,J]HFobِ!<ǤV
Φr'
g*?5˭le9HYYyoާdV
4㪡%j\Za$ `FI?޽;ccqʾL}#󛯈0&	S0[d}wz]ՓVOJ.3VW?kuVg2;GRaIL2^%;${YF2~E2˞%cH2ڟю.9PKAB  
  PK  C:U            0   org/bouncycastle/crypto/engines/NullEngine.classuR[OA-TZV)XZKQ1R
&Ee.,Ԉ>+|4&&?ٖ6sfw.3= 0{A	b 75Qt
/U+|H	.2D
枕KKZ÷0tInjɓ%7FêWOb,[EuBa
͟0|<C?21ݬ7DvRXVҩY6FjPM-W4Ɯ5v)
/.td:C*USReWIek0{UUrny^6CkAj"jd;;OwarE3pݶq6wң`

b
\PpQ%qDd"eav!:f2VTikPOUZpۡa;8F(Ҥ0410*wcҌ#K#omR=ytjhwxlt՝'j}YI^xd^j=)v!"B1*,}Eci_>C$t7}8Lrmicߡ#VVzlԖ釿
AreY^1@~੷Ո	y`#s^GW#&>7mEV#̡wu!L?QfdD~"vZFiW'i_PKϾ    PK  C:U            2   org/bouncycastle/crypto/engines/OldIESEngine.classMO1+_"o1!h©,eiXd)&0po29N2<3Ӽ/s #0[/:n.	b:KL6M}ܯF
'zt,xt$CGpN֪-B_u'
&	,4VMv{~dJmR{N}ްG?&@)66]FɖT6M!'ϫ,C`3l?-MDk [oP%sfZy)?. Ț/PK^    PK  C:U            /   org/bouncycastle/crypto/engines/RC2Engine.classݗw|SUǟ4QX(RҦˁU-J
Pih.m $1MYbEĽwhU{=Ѿ&
Ǐ|>|<9ssn\'"C6d[eG搌
S˟QW^Eͼe3Ԗv:9=6#bH7<eUgN>!]̵҇uᨕ%s5;Ӧ;޺Va[scцd"&
YEdY$V;]+ڱIw:dYQ+LZbuVrL.'Mγx
Ëu[	6f=7{UϷ8,`0j_d#u	[X;N]CzdF^ rc		Gsx0Iy;+Ĥ\%[ns%`$D6G*".kgEZ\x,[%MNr:d`sFլ9\CzoMN&]eHJ8d`,QW2+]TlHF{c%Ur[p0ɪ䌂mL+Y*\$yʯ\N%cH2pH-ntJ/jtʝG͂Bh(aQMl/	E6`S6/;fßԛWgEACVńX2uLBl|_v
l:<~)LbJ)M)0Д"SM)1e'Sv6eSv5e(Q^~u<!=Mݍa_QMfy/	C߱ 7s{yÉg.g*>N̟'[cOJ_RyeJ^&n ^S<^ɑ^ɖ.^/{L 0E7vrW$Δ
QhE3=Rrqޚb_3)V~bydLH<bv`Q?k2V]`HwƎd_nVѝ9
"oj;1N# SE.Kz93J]>WKW
kThnPNGyfY6MaWeO5R\bfI6-4)5Я*egȀ\56Whkn{FF3
>l-g){aMrKy=XU;d9EܿswME۸)ph&CH<
U/27uv[좏M2n-rU&sf˼+$y[	~Q:SY2h@ĳ\-(lXeEm5o"
.KZeҰz=Qr챩l*PtEeduZܞ +'oz0=]U<$]Ș@VF[wM+5w *>'cE>,Us^
/)1iqxۋR7LW7a'@3_{r4蛳/ZtePۑ̧0@K.6;FSS*qw0FA!j9;4ӗ	\!'}nsuZTUT,4|n{sk\`uϴxCv՞`0	涤m]Tvםr5S]=SSh/g3xӫpb,a4vF{EsZwmb'enG?nlQtdvJG#RxMCgNzܸP.->ofߖ/΍n*?P{yx;Vu;^cU
ȳ$.[-(9=:6i_ڮqicIwu2Ju~:`":49!373^GvdWLvE$ Mdv'{('
H擽0S0F%!/#s0+M=9ǒq#!A!Hc< '$p$YBȝq*FSr(!wC+Yљ_{lrv c 9{a.9QXFF59/erIœ8Ԑ{frTr?MGO8*NNDy Ixd5Six<e$؉<WcyZșؑAb=9]ZJ7i!LΆIaY!dߐsЏ֒pE938~"Ew2@&qو/I.GBE\PB.M6a{TVU(Z1IuPUax\:	ՉX:	NS0Gu*ptQgUgPY:>9P<W%T^TJ%Lu)U]Uc
DUW*R]U&ZT7;ՍnUXZ%1LuV݊pZXu;6p)Dj
fb.LQùYu7T`սEuSݏTՃ8CnT=lGQTN"'q)<zϩP>U)xG.VkT/P2jUU5RUo]՛8^U.w]Uq#R}5
W	O1SP}ժ/Kq\T?W~AWԫ6wo8B;Q[$PKz_j  Z  PK  C:U            3   org/bouncycastle/crypto/engines/RC2WrapEngine.classVwMv3;$Kdź֐6$d%]LvYdm}ﯶ*Ԗ$`<Ҟo9s7xz3M Gs2}~>? 3WF`
:lTpC&Iue<$!:2(9ud1Ja2+Y^SBW.a	RvYSt(ĮrФm,WXv
a9IӁ
J)-Srm;nHb</gxV`e:Fv	sLy.=x7K%8Q[^lk'I	kxl«R\[FsfyY!9*FyҫYR*U,$R(/Y"8nYRUZtkcvulXպ,9gOVLWj6yd6*8v1:S%Pzv0NxLN3i+5B5%4KDhB-Y,xS;#UEKBvNI|<ef\8ɺ=aDe.O[v)pVF:2Db	mQK
V`7G	Stj|E`5dϟȌ{Ur˯/3$?Xv=ߤ66xև )n!9ayI9)!f3DݵoXi
$	33uFjLOبt#Jีz1nmX}f]	1p+eK+,GL.OttH/xF0<c,VY0ƙ9FYxY)s[d|N}2>/c2vx@ƃ2 c@Ơ!-ce<Bۘ;{RUe6êd[CN
|VzoɜLhC*_q1ZR
s\~ުb}fG^?R?;l]K/\jܙI|Ϸޮ
a>ahfb,k؋	
[1Q8NjEѮ$4`/CcX!.p=Nj>Li{fmE
VY<!
_çQfp1TXb,,f_e59|_,Y/*~qMQ1gX|ŏYL	Ys*
n[,`.}yz
җ:9lrkcmu8-FbzB:n:#n1W(h\ë+x{҉*3x5hFƅ<X~O9i{iWKoś3x/B࿣)Ai	ctm<lM4iҞF<,$WG./ZЕN(Y^-%iIg9\=/S#j{i)iD:j%8;&1"9|G^y3:MFJi	^wzs\9yhVbzl"z3E#3:E}Lx]^#Bt0ˤk<S8k&|~tեI%2]?B4#ZRKpwR9Ls#d+?xc&]o=.RcوEw4E5N5ߖl#t5ғmѱB_LbԴm"9M֞lO1N\B$ךL#k8뭗uՇХkt4H$)%h>@:ky
d)EƦa]ek?xv4ߡ{cϯ:"MmifkR*t2KR?	ͥK#4'e~DibTyE"I9ḽXTDǄ|	;K(LB|]yD5fOeAaAH<_FS>^^+I}\dԲsz;:,NUW,z\z%JO*xΛ_ý[B-BZk-z<DA%eUku0!{z!^uXuRy(< GXvқ7BcO;L%9^(xBϋ`T={WekЌnz\`mpxY>x4&7'.DO./'_.%6[x!bPKP    PK  C:U            /   org/bouncycastle/crypto/engines/RC4Engine.classUsUf
ҏD$iKT۴B@ mznݍJ_tTf|W_Qfa0๛mРdf9s{Ǔ00F!H2H1ƒĂcB/9:;hdPgSFM	i*7vyy9gkk:ܬ&q53\	lU]2ɡQbٺrQ[!0ro|A&4]CI dح՚-,p;ZVYl8ǫM.V)0'8e8Cǒ
ͬ65+1jWj+t'n&ѥ%^34U3ns!mٕU3keq
`s^e^EȣǸjSTXw0/\Znꢀ}Y8_j0m[Un::&[7IS&<^quyI]>;i͎SG,/mCU[sԠNjn6fg0L-JY2Iݤo- И"*#&
eeqPƛ28,-Gɩ4CϿHIWu6Iq4Qj9h^KJxfS=b:6+%3]2/C%9;j0*hWqLn*
 b7B*Vb (xOQȩx*vaB߁8+9A&@
Ƈ
2QI䒂!!
 )'IAN!/
(ȴ3UzrּxPV3Yͨ5=Z5m&;NEm8NTQ_O!.ՅI!H$Tk=)
*ֱw!~{1X&0t_0xWdױBΩ{Ju,5#އQ.m SP:סQ#* ?{@$/HN<\$FkB!R-evSy1ߔ^_oXxA2_}{ǐß&Lh{BW["XiН,tIuTCP6|%rk9W"R_$-e^@V؝C~67&Ujkl"4N;66q|;4Y!ߤ$4j0[ %6:F4J(_l`$0,E$os/(MDʔb9l"|TW$VRF9<A	PK  a	  PK  C:U            1   org/bouncycastle/crypto/engines/RC532Engine.classUmSW~6ٗ-JHmHQXEQRQؚ%Y%73C;L%:Lg/G8Vzf!TMmy}{? -𖟜nH#9~Bd`D K~P-ˁc
w#yIq$Eg ˣ9b%©ŢVrҘy޴dZf*eJrVXE03Sjn:Qfiv3-OQ5o#7e%FS<회
OU4KԑFgЮfUCφEfU*iٰmi]stUUZ%FC˩F
*hh򪖡6WCr3,L+$Z
-L8;N<C%jRլY=FOkUdg8]Qg-̢fٺF*
9NN8ݯCuVu^;נ:Y2%wK+izeڪ
jWȩ8#z.OXrG-ti~66K"m	HHh!SBB#/J-V>@a%rAuNAw6~XT)+8wK!w	?
h&ސъ&
AFDaH2$q u2/c+e@db;N=;H2рelÀ@F3N`p3Lq~Y&.qYGGqُcS(cLcbL|&&GڏF8a&FJYV
;q՘afN1uh}āC/xXg߅t6{ΚHv?@|4 ?@&=vc}sH3|hdN/k[_p.q/c3ю2E%L.	:ĳZz.<e\m_+d-cOd؅2f;V|<(<}է$<CX»M,P{dbS4ڡe,B^e6d޷'IJ<l+)(glELKcioo(Cq3jꭀ/$s/$*?ӡy<C|/CӎⳝM[G||z1]$$M
ޤMJޤOa1ZQ
VX91Ux|YOɐ|j%b34JY'Ne?)Ʃm3#=OPF@g:)+ OOJD
FvGa;`yAN"*EӬvA"οRsG[Ze+;9v˧tJ.ɚa+qgGHif"O
onۙ]'Ws&ǭH1D悁0ٛI[B{;DՙX+vxvUp sDZ]lw=O-
~6`wYYJVnoPK0  .  PK  C:U            1   org/bouncycastle/crypto/engines/RC564Engine.classToSUޗIcԮȜ(mL`*kez{V@D͗D#M4MLMLL#L􋟌	8s{"ڨM<׋ zqIAD!ON
]SYRbxkX񀔘5
\:Ն(ezI246`Wc{`RǩqgbjYEtes2Þ9a7H
3Usô\*ԋԫnbfdZkxLۢ%>Z)َO0N1 =nHB`ŨqL>D)dܬSkdd,9LQ1Pj5Vvyb'.`I㴑V)pgRa%S=,wդ'YzkuL5+Ea;4a,Fͭǅv<hV<+,k[ƙs,+x۬z6	c9Ǯ25mY9Jji}!>j4|,|rM"9ƈLͱ]e#1fdj@(DG4d6F'	;'6HLb@zQiCoGdlq{e$dtH薑#>i]#
6;F7dykdc]qs?a˟rʟ/ʞkRGXu@PG8$ c}uzUMGh!۸x0tlƄ8#I{J(pqcGI05\0
C\B'qRNiT,ǹsap1E"'4z"n;iTf=Q:aLWaL{@'5 &5C'<(u@J|/ػO}D-WJ~HrdD
+)\EsR?s<3AޅH?؉q?8˧wy
Oyxy^M[<l
;3brs0r49ňRN}WP/|}uBz	 ОXf/_d^B`~+DxA7	)l݋9Q*ã=N]ҫjn|zH'lޜρV/.ӭWZ2>B8Z,_s>Q3J03ZTkI*ƒF,d/>SQ5II4""潾ՌU|uN#ҽ-'@Ml%&dafR1*1EA o׶r8o|hXKiO"3}HY̨'cRL	(KQt1&qy^;;쳔Glch{	#:	
-P'sH%0H"JI+@}Isҕ`0V5v͚C(Qn'|cZ1pRYOe]ԟ]MϭɯcPvN53RTz[EzwTښo̸hKnt-86Fm]/-"elJQ1q͉rn`NSuuTn"5PK=W  e  PK  C:U            /   org/bouncycastle/crypto/engines/RC6Engine.classVsWu;΍:T,6Z;n֍MYD։)K(%
_K;Ïf:CB:'NDbCzFvw˿	މGZ;_`j8!!+")A/HK+o(q^iVV6=`LāHtD:7aI8B4nIռ .]uN/I{(Dy:r͛RuFvz4fJb)^jZ@F)`Ժϟ5W e'8S-{TV٫yJXϻ8Q/:1Nlӯ{
d.P!VoʊK5*OkT~)U}hN+OR\]+ghUlWS&׊N3Ht,f8EpG5n<t%ǗԐznU'/	^a~Vbwkni9eD<ځ=MTRg=Og_Ib7A;Y߫;~:~ 7ԨIJxپ)XB#OC53O u#(aV|Z=nBB<rh=uBtWgv;gCf0cR~#*r*FUU|I*Tq\	_VaxJܓCfAj3}ߛ}GJ.V
p"}v,ܞH_s{|}S_aGoQh"t7pkx@
e^6(L$Ƣ4.:USXQ`fnU&uP1&L[:dIIdIIt,u+єޮjezՊW_rա(	/A#H)Mo&IIҏ@$vY%ӧ.y~{IG}C3->Dpm6dMjὛ0^io"
WFwL-b=
mwGs6gL;8̈́V?n⼷xHibktp%r|R2C轃AS)d7cbRi;wMtP7T[x.?ǁLv0g߇q([8,%&g4N+LnINf7zz](ZKjc\vS.Y)G<*hB[˚za榼_3uI-J,F{I&6+LEDhR#bf̔oaAQ32JXB-XJ2kkMH5U -dni7co:B)*>-$yInA ts*x["zt$uSZ><;2kV3E%1+\ox+b+nF\Xz5MM15g̸ũfJk)N1c
AӪJHbf
96LA(	>t73f XXQ,\D6H@AWi,%ǨʿUbUn(<J*nJ`H]vr":t3FRgJTސM7"T?*/Lڮ	}&cz,2
߈e,oØx>QGϧP$VG(}k۱8P#phĔ
?[HhOC"!PKM4  
  PK  C:U            7   org/bouncycastle/crypto/engines/RFC3211WrapEngine.classUmSW~dey.Uh4mA$/}aIְm-Z~#Ng:c;W)`KǗOo
j݄"{sΞs/?VD:%boq&<yr1ƴH:hdKe 92uQ2֙5ǸR0#閖XU,R@+E!uыI;W/&3СaMP}vXi9ԧ
7ӝֳ̞ɩa:mkh{Vw5<n,:ZɂcX圕2LܤA:84VjB&cgCkkGhEנu%kZ~vke}Zdt+Id2FZ:BְܾkI#皶aа:De#I]L%<\̻UZ-FYv2R,Zk=L+YLy7cDN1	+F*6i3i䇌wJ	kZϘRJ|=atTB,~3^'k#o|dmGilz%UpLj$9Ӆ96QravtvD"[.QI)^s6e8k44-`* ,M@
8$<s=
Qѡ䳵uׄJF+{^_WJz?61li}?`kQHХ`˅ͻ0z~JMO%xLǩG6'!CIx_ke"(c+$,c;ead4ᴌLf;+Cl5$#a[0"xeC&$tCQ\p$ƙ,8L	c	HJ1\.0	)&&&%i	`jt4׉d
ɩSznDhC~T12qD)<Zi<"7ֶ} 1&wc)f03O5KkZ|yXsؿcR!}{}[05R@Vjb96J#k	Bv8,mH, \ƛ.9rqb@$]KS^=cEY(/J(F!a\Pԯb7?fϘ -Pm3~@};#m;U^=DA E'QV>'x!ugD],/*_־B,3g;EXQEPQaşUA
.=-'p$˨bQ"#7 -3B≅{(6_ĵ!Ɖg3N|Z^ӷ7TjЗſrARhM뢡A8!#,<'αu	ǶTU"K
"^"FRM85
ޖCR(lQ1k=<e4qM[]?S[NPWlG}5':|M~PK{    PK  C:U            7   org/bouncycastle/crypto/engines/RFC3394WrapEngine.classUSWnn6dPVM	"TPؖ%YHHdceO}茏Й:ΔW)k%uN#Lifs~ss~},
4+xG!
N	ÑI)P3CX'ILxr@sb2T(Z!󋪑Y9A kRXZ؛ʚJu14ofZ5U,T,`M9!(Y
X*RdLk0)sVvH t׌2,\CpnB#7
X"73F~.kn,YbAa
m3efTEDŴByZ|khRʨXy3*/bl(_L-JY,бjİ1b6dڵ:QcsZ	kdI	QV%vpwwYvu
c%.V%v\M 
OQpݻu.RZ|l[c;hr1eV*v)+kԔP-V+Vhr*·΅,rb{Yx1m+mehqXGe+㘌2NE3MU5tU%~/pxWy04;4c;)5V)S9~8ޟƔLjh
1Aհk
d
hB a
oaDj}X\Vqbэ1^ڟE8*X~
k,&Ukw[ja(Msy)X7>.>=ұՙӁi^M+pox1`|M4&4P*Iw牤Bf q3ڱdm{
$eO)d\)w)S.L:&;
c4==Q_zҿl9Χj/,Go8ly6pP3x0vF\"G}\]i|\ҥm'[yS'u/km[㳎iO%^.*]ѥ-9u EוlۉBz`ރ)]嬮}R\}+8ouoM辀UܷͿ8mz=_VP]IAσ:G4
eGO!^ +DlVP6xY]qXuojoųY4jkLi2mබ@q8^,Q\뒔K
=~ХOI?;fB~o-Ɖa%f*3ދkD332겟$sZX:QsfyY!1U3X)JlBԊBۭD3*^S.*$&PK
uN  
  PK  C:U            7   org/bouncycastle/crypto/engines/RFC5649WrapEngine.classVW-ZiWE,u	4j'BQ
DG
\%6+;mYF*6iڴ5o9MkS|p̕h
.3s\n*UST∄Hz /E	rzʸh:/Xg3fٶZ!L/1'$_LUZ),j~rZ+OHȮC^*%	94Ys<6kb-.4y۫ޢ_kv-XNrLJIY+Awo]]g,OI׽ZIQrñJ\=kWٞTp{(II
SJs+<glŮJ-ٕXuk䍢[=~BhcUR#t1
7LS[ݹ~J9V\*ڍfR=^׮i;ˢUFvlq|^ʍ3OȾ.mUBXow%qޮ9>ЫdǸ󩹞}{..PmgbSԠ"_t
QDj`8!ᬟ6D	-&ء.6ԜbzSBv`Wېf:۴J
QPV0 `PA 
SӏяG%n}oza	j~RGڥӏu6=HmmW2f5waK]T:DOxxM0^EUG?:~ M:L:r1%$u|]:i8䬎s:R^$.0aL.1cp4gr5
Op52_h&LJN1ciM&?OG(0,2۠mXԲ{}O)$aFFX	8WK
DO	Diʬ!(ߨLA6
3(d2_jFZBfp/?׎sVqpjũ3$N.c_UVedyg+$-vm%MO輇ci
_"k
@mc9nvpm1`6j;?:*F,9we&jEIO*K\=kEQtE'z~#)ίF|/N$Ǒ9(˜86g"7cpmT~RWQ'ى]G͸6?a,Mxw%+0Q`G{b"ol(%Uw;!wo]h
N@*dPY$Lu0tIW[nCa
MP
=5MY-X#ܢ7)G?uJdқhDIj
u*QS5hgAw)X(VL-8hsFf
GcVlTQZL"Mmi8+"h<rir.aAw-"$*͜n:MLhtSsrI3iB5#NZ5KP&2eD$3fVF|nuoxu엺60fە!סA_۽@aJR|=R!>?P"QU$c*7܆
EOk2%%w[cD{QGNNUyPL5g|Q*i2(0ʤ1*l.!SyxL|9lvጙ0wrOs(V1hBL"477D=zU8
#UzChoPK8H  a
  PK  C:U            6   org/bouncycastle/crypto/engines/RSABlindedEngine.classUmsU~Me7R(jnJ% JK@!E@.})_:Q	Q3~0x&-(s=9˯ k
T	١Bg$(ЅI2Ya	CmxrZ\Ƞp+/6+\#V
+	|y1t쀃]fyÂ[B	<ey9ӭxKciq52@B_Ut<kdߠJ^%r""lIkFo֨\lTvlkzsKudbٓHy\4
2
#S
떈)XBHjf8oLՂI y$PXXKY5Fu#_5^Z
BGq;<HШ|ۊ<ey}#?%/ږDBߤV_z<I"*ӱEuLQc{unO`<Y;_V?(,htvg"nWWnNG}bũ_~R%$&]^4H/X#C/c]2^2^7ed%ly-9(a:a輗6f^VbF9;^:_+V+fkv(<zXb?Hhrw,o0yȣgM*>		/̥ZE%lA
95MpHC5ldҰuXa30א
&5lW6ᨆְhdbðjɰb/
3̨*UaO>gm|gI"i3>S1TL`\d0?U+BzkY?e]TzB?KD_.(Ix$hLd"f&Xj>wQILy)/~FepC̍4q߅x[XŻnCI;7-܉p-zc\#q}q\&li]$F}1COɐ/dc܆{DO
[0O&yYG#:CѬ%|{uYW&غWyi]m"ʯw	7FV=zJi'61].Mr~{fO+F	"cI1''t%:CxP~6xPT
VTuU%?ܺ6PK"  	  PK  C:U            7   org/bouncycastle/crypto/engines/RSABlindingEngine.classT]sD=E(JHKZ&B?9jHh-qId4KF<T/<3S^M{]sܻ WB&+	!a(],rE	$H[umIDk}wťF{a%E,;aDh5pV셁#
7.>iVj]YCgLYTZz'm	G)
;nFD8Nȳ.Lmmv0+ۮCKbi;fkm)˲L3SnJ^ڴ Ժf^'f>f-Lgϱ۱\n5T9i|7hx67ˇ}ZK٣OB]?/[ܨ_nzΦæ7|N_1"=[QKRc
L+8-o+xG:KtHTEJq9ͥ8}ӴM3ӽ[s1zy:ɟ^\ZEie\MR
#xMs0I8
kexa#X5qAÛ'N3E
8!GK*`IY|PbXWç2KEU9\Uk*fqaY5zV:ivv-uݮ.f(H8ǅqpb.ZBB<fIp(Ff~/ߑu[< $BML_1D.+ȓr<^!G!*Sk}j>6xv"op!+TghB̀!N_zV_20cJd1;}Ls.I _{K+ٺo1?g݀^8CN5kаzU7ܴ _^"6wGfˬ(ZAγj9oPKSe    PK  C:U            3   org/bouncycastle/crypto/engines/RSACoreEngine.classWUǿC&$
aUCmb-KڦB@u0d&N&}߭K]zNX=$㽓h%sX?{!{q W3qbX O0y޲ҭ[?726|09A":pFR>É1G(v
Gv)4M)T3_"}B4#cO	h 049EKK{MK@:}Q-E7f.XASƌfI#_UCEz6KIJUۺipg4"PK2q2oAN
4rfMuzT?Q6h"%HkVdu,KifʎE+o*kh;EҘ!U:oafGV2ZAPfuљ°(6E?(bdbC'4վ4Z*ZN@c)TW$
[hTO״FUwLq|N7Wz>K3&̢T`gS63Q͚UmD
-/h/WWl	VV[Cwoī_TWOdyj]#h5wN7Bϴ3AynBlԈb
JWMJk{4Ie_"*_"Myˤ{*8
Mfi9R;[(NP͸jmdkz	BmK!A	;%<$a	%UC>5_mFf];%\ŖjsØLV-ɼ+8|
tm$U֖JcJ]ՊVRUn2u~$o읇eV~Ȩe1naD0(6dlat0|e(<<de-%C2;w22a4aX&]ьC2ш#2pTFcbt30{Ћ'O1f<>c1؃?z0&xqQbb<x>~C#g؋t2~G$4F N0dx_3~֍ڊ:=*YjRjht$GEIk )tƯ`e:MEŦeO29Ԇ"e5z]ޱF!;^_|Z<u_.Wg"jZ$+;v;)[+AV7͢^:^͊_*/+q<G@ګ6cin>EE5,?+N^:K޸nx<x=cb@\;qw߬
pϯOS~5v/cD]EO3yz!GMD\%DY~q͑%1}ɛQWtRΗ~BOѥR:Rw"l"KeCu?DWm{Qtp2H8V=K$~fQ`2F]}\$~w{gRÀx:
DyXހo@ZȆ@-/yp+?8ECOG%IAms][֌vpN3fQ^ov;ʫ6'ƓfCo_PK6e  s  PK  C:U            /   org/bouncycastle/crypto/engines/RSAEngine.classR]OP~t٘cm*݌-\4`1ArR
]۴gDD4Gvfyy>:߾x05=waKk-k7
w-IۆcA5=Bw`%~_Dvΐxh9yڱ?W .]!9qfhZ820`r_؞˰pp.myukL#`O	mFڶ̃ZCnSPXg0*)WpC<_7{wj*%|Z˶tWpc^`hTO#k#0q<`IUⶊ,TIFJT(XVY,q/"ֲXªȼ/၄Ѱ#uf<}eoñFњ)ШOәnI>Bc26	S_,YB;<!$:Rb=#C?%&)6Ɗ҉%frX<(?$1^!C<bՄPKo    PK  C:U            4   org/bouncycastle/crypto/engines/RijndaelEngine.class|E$ބJ(DC]!J
@!]6TAAzb{oM(7ݙݝyOojie~Xo..~7H2qMz@5*G7Ao\Mz	9,U6q'q0
KEpِSqn;f_:!]ZIIfIOz}._+#BI]J!g\ؼ`~NؖIm[Hl.)1)UbRؑET]ssdo.Cz9HԷ[lxXA1ٙ<27cAQ!73/(MG*P0!=[^28DoLCo0a]S92/ȷ?>yq#
Ʀ򳐱YYcfˡ@v0pTŻsw#Gv#hD՜`~08xMAjNK^NAanq}3q3|Hϝ»~횗YM
[J
GLtnؑ%Fc
bFrA	kٱ3b.fs؊~6%SeLļD
鑗RS2._}RV}^O}N
{F1,nZҋwRKr󲃅yg_и77ڕo,.$,(ϚYTL;)HD'w?ZnxZ]҃rE92 -87>sjGuv&v,+vׯ`|87oNׯ(uw>	sScL%W>e,/pp, ɷ̓gpw+kіG[Q?1#2uKL̏ŷ\Թs1ɻHg?(?R^T^ǭ3|&gZLW3}Jg|>3}f4]-IdwTGX`x?E8U;/2nh:?q[qߣG]3S7`aLMZ"Eꈴ5M&4x"W\'2Bdi0ךĀ^$۴h0D.d"0=Ez#W$fdS9`* ؀bi`L0mD:0dD90Wdncv;DKn{D+r|EyP!"<"cfYa&3Idy\dM"[SzF!L*EfM|"D,yR)E<#2Dy^"DV0̋<Lׂl"y%Ϝ's@
wLn?&GD#S=y9xGoז!x70藑x=bDDnVnX-ZnF~!26qxy15b[k3G$/]Ed~f
55{VgV3=?:WUqbc>$'ژGL$=182W]q%)Ur?ψ}MSsOd8e|Z-!4ufloOvޑ3!Lw3Bv/UτqS~iךu'k
.O n\Wn<>>J.3do;w݊{l^ƴo	M	
.6
=GMnrg6yV03D{VTH	ۄy褹P.nǴF%Og)o,vʛDwFy6mS;Gk{-µ)rJrܥb/~|TD9U|X(,
<s J#K"ΖF{Qő((t7ڇŇR?[}9tKhC _r	GƜ4;kUtFo]C]]`oT`DDUr*_P)*/DE|Q)z?^	bq^qǵ\U:Zk9
ǵGzcӛ1MD\jYbn)8\cp@%>(4œGx}nS>V6%!}Qe$[mo;u*mW:-5Y0ZVTr$rQkۢ>a*ױa#֙-K#f)~MZaQI,y	Q~J8;8rT˧op/2z'·$u%EEOEt/'7;/z/=;7]xI*MEIÓWݲͫ%Ki
J<=ԜyXmdw%}ߜVFhIa7Ц_zoe_f1ǳQb)1zgxr蜲j/10aE|0Lm.ouO꼕p)'7	9gWN<x2!ST|x,3+nFSkOe|r9\
r76ufs|u3vMZg+?iqn
Oy
(-F[[^ë5۶ZFXy0o;kOk >fzvjf|g8@Iv67ݘ&,4aJMzCfeu\MfFFz]3Қl0ߗ6#ƛ̔2VUzszz*o7oK{ͺRx-{gI2Ct]=v}2y
[a>_P^Tphemu	[2z;ۢ<fz|zFհ26>P|%s2m|(>˥yǿqm>xitQy"6-ϝ.	uԏV(uwwS<XMPs׳Qɳ*텇;g{8yB*~!5JGEӺHa<SX]zӓoVٽu6YTftqgNv+3dT3;/,Ox9gpRqǠ{gK^j\JNuF_PivșgԈ!p
|pCf?#4t`0M̰a6Ͼ귽XZɎf
dHke{J٬=ZVfn[F;Y,{֚7k-{kmg{Y?X\zk}5Ncm`w6uYu?YY/^fǰ>M'i[>cmnY$6&&XQlֶ
kޖvY;֬}XwvvwY-l
kwUv>նk;}^Ěf۲Xۣ߬@u74z:ĮacjO
YsYXuΚiYGګY.l5h׳Xsl*h۞5׎ecXځy$8;5vb-YdBZdX#%v!{Du:پ:.gj?e:NKYgkf0f!J3n$̶Hcp=,[,aMp}^mK	۷%a?pL]vM%̳G$kK$gHop$Al+%<j}V㶿vEv'l@b%@K=$,Hxƾ#YU2[_sI	+	۩^eVڃVMV%C%IXgGHXoWI(7K`;Hx>!a͓.6>&a}PZN{]	/L	V	/$챧$쵛%Ko_p"m#{CvW^^$agKxv"mXa;N{wlu	x	%o,IM	sn>^	w%|bIJ6Uv/$|m/([@wc	ۧ$`s$h{J~+g_n	ږ~%nkJFJfI8i).ov37pЙr\5L&U<D	n}!@Om9S< <Y:b>9nOs?$=`O=!3
Y|
{==mkRgسy<|{_=d=`O7 ؓ{6=o=`j7ؓ<{:=}#`HiG{I`\&qE5g,س {{ր=``ags
'c`O?S{6=Lg	s$=[{`7`O"ss<% {){RD+{+{*{PS){v*{U|IRVTD){PtQR\9JٳOYٳ]3L󭲧<lS)Q,TlTV,W|WLW*{SlVSLQܥU3SgggeO#eOP+eOceOgggg甲'KeOQ4SLT,PTP\ٯyUSgveʞyʞg=+{.W*{^VW쩬쩪IQU|i왪Ssnemʞ9ʞʞʞ=ʞʞvʞ^ʞʞ==*{+{VQ\SUQP 9=O(EC:8EAa!>aC~P>E~t "@U9TYCPȡ!!ɢ"P4+ZRMh-9#<r ɡB$!I$bJ5*9PP#5t	RIjl.EN@pG!W&H0(S	5CZK͑P"!j,Z0$$Z!9Hd(!ALmTQ;C푥P$@QP'dvt9R3BPgC]P*_*r2I.rJ$tˡ^z9BC`9WP0̡~רP̡1҅c
94%
FM"0s(ChPCÐhpC"i]/LshRrʄG5ke
£(AC904ZP͡17"<q 9n9T(s4# {@uM94Yh!
3D7"-ii:G3<	, J<	ȣ@f nh.GytGytGwytGwytG<ȣ<@= у@=  1 h!G<zȣ@-I i yGyȣ<Z
  Vy
ȣ@h-G<ZQG<zȣ@mh3G[<
6 yȣ@% vy2G{<> yt ȣ@! ^5 ^
 - 0GG<zȣw<zȣ< ȣ@}1 yG'<ȣO<ȣπ<ȣ/<ȣ<ȣo<ȣ<ȣ<ȣ<ȣ_<ȣ߀<ȣ?<ȣ@) 贇wOޗGn&h>y$pp%p:0\0\`pʀ
.IkԖdףp\Oqqm*>8KRฮ W+8>8wZqɲR,m&gÎkWM8.)~a|0\UafpsW	W8M0\Majppp
Z5 a50\M`>J
Õ%p@(ַ[[Vo
u ~k+V;[᷆o
[
~+~kVw-dc[3`nuZVح%[aݺv1ح[nmZV-B~ۂ;t%I-v9]ެk.hV:Wn6(kC̝jEmI:n\	z}5-؞tA춐/<a]yDd1up
B$$a;Xd춰Hv[H"9dS.;-S_%v[0+ty`5V\iQV:|Җ_TQ
&`՗mQUW!Mc-]:Hm!ߣf:}j'm=ZW±ۂyzU}kNڥ7ےdݖmta5G4"gU8ق-;C$klx͖x6[8²'Hla3BMl GNCfFj?JOjV?_u7u#Ig?ծT-׿5313@.#y[BГ<z'p*a))eH|ڕA* 1){{dznzZ=w=]n@K@χ@ϗ@g 3$=O=;F@O';7s?S	IzN=͢Zbm3	XjluX.LoLm n;X'(_ vu1Sd>7> h-Ig8s	>{<G4`5@zH4`_m2ݡjיkuF`4#+	D >>;|6 >k Ow|>W >kD/سy쑅̩r%Op,"gQtQ)zr=(zR<I琢EZEgErEOsE
EOkEE	Eϟ6/=u=%c|EU==7(z*z(zv+znU(z=#===5=[=1SG^=o(z&+zb=+zWlWVLRES_sT'Y3WSQTRTUXEO2ELE7=#==3=*zd<:Gt~Ggw왢YOٳO{e"eqeOeOeʞxeϯʞʞʞ===7){ҕ==ʞʞǧ虮٨虨9T'WS]ѓi	(z1z^6Gdz2<޴/Oc4Nl`3?4NLp'%MZ{Cfke>=iXDi,j<8To+M:M9& ZC:<8/8m9b2B}?	'2H\{+5݂5mYq6VhoCKZHA\y9mh[Q6'_PK("_̕  /;  PK  C:U            0   org/bouncycastle/crypto/engines/SEEDEngine.class	xV$ϓ	<!laIXCز@@l@@AmB$$AAQ mEZmYT\EM--mg{^}sf9s}wO.
Ɂ
B"77b6H)=ȼF,_<|9[[j;	ZԂBtчB`R~ p!^BEL"frn!bV7"AĮinEG "nVĝ8xB(u:v"iE_ߴM+B
yIo{09%%=FB$4mބo*7y&BCKKo}ͳ;CA,tht: qYH\?_-t\>t<|-t
4t:z:y-t;s%&3L1]Voco3N9]{ISKg#itw-nE%7ۺMɳ{|B7t6&t_at?ƻNuC
[FEzy]${H)+CrH)H-/CJې%{%Wmu_QwlC?CmOoTJ]8^&Ν~+?}R<_?\ T-@j붧0`rX8l
V,;xuGJAEen3t2?5CϭƐ
chރ0C7xC\^z:sjk޸s'2r"cȔ̫E__{v"ðk	Ge	0K ;:s'5 {}'<G|YX#[wG/~kb2FbԔ%f5/{ĕO1&>cja̺016>cN[cڇ.}q2`ea>;}so5a=0̕σޟBETP:`1Ϙ^ u2h^M0<b~3ܾ1ods'`.W1ꪅU
rL"68J'0Axb"XN &/ɘʅV&/iH6ʫ+KKӭfXʹE/7Ћ47wiCeXPYqk~
V]eyC5uV-?r)_r	W4\o%暺	+6T,d
k6Jx+Ҫ;3?X^,]Cx.nH+jjA[o/Z]pՕ˫s/raÄ%{F
ǿE[*+˭Kjɷ-Е#V@U3DjL׻nй5V,(oj]3.vAe~]|kJ+nY9D=~]"uÂk]o|]-ЂʛW7D^L:뺻jr^Wk/3-+~(\U6v3"vAy}e~yuEƿ`އjjz4dE77d#kfE#4<@#4 @#oR=4-hl
q]h7m
q۶dpLG@SK
4ƬFӺ O@i45XlH4DDsk4kd!ͻwfrW,o	ָXFOopK_	t](> 0P/Vzn8XDhWg%K Ds'P
{8FpBM6 RM|$XĀk VzŚ-wAn&Dx>i#&0LENz7sXăXn0_-;@ 7ǁN{lpOzCm<67alb]M,dlNqlM`VZ
\f0^+	 .r0^	zv>
:zv
	tX%7n6 XigV0"js`Dփ)J0k`l e9
8v;pxqvpmAO;%vf4 
Tks\u`7̅bL`.iT[Zp6v]wmwwv]wmS'/w$?X=Xϣ7)mv4xm'C'R8hx1<'?:9'OqXR5xv8p(0='۝Kf֌B*<I	<8GNg2Z
+|6p`ۃǡoua#
R/Xz
`yDXeǐ Xnw`6x8+  x>	w:Rl$x>.`I: .}z
xH+8Gi8~Q!%,˓2u Xm?tXwKA`7YTS}<Ƃv`,bU8{EP<,O-8c
\.eC\m?;.0^;
.A0TG ;z:v}l{|&,
98gAo΁]/?p	Iy2p
a{ [#r̭ࢾS` 0`DN= &ApQQ?<=m/{z̙øvy Ep?Qw̊ಝ%~WL8)0wLڝ yG8E%eE%epK`+Q?G{x<˛;OBxedxI+bA 11x R 23 
GGCcc!Cځb{ǤL1 !yRQ7+@ux!st"x#hա#x=1 =ٺxF  qI
pҽ۝Sg*x
	ҽ1xQr+b{!6s(N+D NwNB\ԁAm4B6p C%]xBX1gzw:<whvxt{ء	n<a9C8A$ C@Ԃ!E` ŀƃ(@FSGlGl]
|M-Wt8s8Xt zR`W΅%:#,_*@81}MY\Jad/!9E fPo0?|pł` C`y
UGb1`4`~D+z-s+F='NR^P>;> M8&J>o(S. 7;&@/p<h>FzNI!2)3O$ |0%`"""DyL<X}?A	~
`rƂ9HvYVO! fh=!AO`LaXd<Qq2@`,\3yxܕ>OM';"c^G#7)9r
S*BNII9eeȩMG.!܂	-ܢiȝQ.@]#+vӑ7DyuoI//-ȯ(,rsAwy`|UQP2
AAm0LkaY`ńE
((:by0!8&I9P.y䣐 (,[%#1`r`7XL9+oiRdr6Z:;	S+%4E4JnꆢA(]6TLqSw09cڢec1?>z-bJ{z(뗍GI8%	3PfD痂 K!8Xb`&s6
\<0TLD>I\J33Lm)8N	xi&صe9e(K-Gw ί ,\0̅`dWq`D0S8L$\I`q(=]s2S9u.ضt\zv 1MϩEmF"fա6+ r,+ Ӡ\"0s, dpfD0
4L|0&i0\bS-uض|XM@ﵠE`:C=VGXG俀IK@Ȁ@@`@Dl@D( :(ߜJ-~pH
E_#~}{ӿce0'?߹p]Cw%}%E#\/wC_DUH$Pyy·(^H$ROC_!}>E/~Y?7}WbJ#7od*#Hu?˿+ֿumlY?ȍ=lWc"#uF4Ylv#wYbd;cow
ϯW)xg
וW/ث׫҆[*[]u21#LW)򺫉"r~l46,:==_x_ƥW2i/m4LE>0-y1-mPy_㜴AI/׿诱NGpY=1~Ӎ}?yƽW<xWi+xQo[_
|	sk}0G|P(^2@gxco;FvJ3D%,Յ_6c`y@Q-1/<]no>_68Gtⵛv	J}%?@a͘e|Ռn
X"&t/|5~d^k}KdٚL3o%;ڭٱȎK3mPTb܂@bLn)1nȼb{/KK&sĸ!8%q2hհxQ	_zý؀SKcũs۸RҦ/z>߯>T|dF'sDw3<g8gxMF$mf_1TM.DCvTbT8Be%x_޳<%SMʳWzQfsHxw̸{IQJ85/\pWY:"ԃ6k,QIoN2/2d<)^7[?V$;G~|MWgQ<oxfvTJkvtZbTRbt@bꯍep~ɽWKDq=Ĵnf/M6}V	WyiSoӜ=u4Axb@/9QjFhUX<'	焣շu/5ScT<5V]GSPCj5^S՝԰ZMMP	TjZ-vPj	IfR;Fj5UI :H&P{jO05Ym^
joG}WUQճT 5SR UAENP*Q3\j5K]OFQ!lu:Rm^ZԓѪu*U9q3uMQ\5-5:A=OnNR#Ed
Յ:UB-R-i*:]=F-VUOSgQKUuʣ^SSUwluuz(7ԛT
5M[j1Ls#
:OVԛU&uL]VI[U:ZަSdjCUoRm:CjHmPIj2vuzDUSwT]&2Չzޣ6QUˋ*hLmL7fkLh
1+icV1ƴ׌YFV5N5^Ic6٨I5Y=nט!cS{*2;vc^6~ccPyPu0!5ȘU1
<1YlS;y\]
7fzݘ'|O51O^<vuȘ71Ϩ<#k̏6fz˘]*ŘUc<`c^PW3EmKj1/c^QK٧u1rc^SӦ1f1Tc8cGy]31G0:c1uʘ1'Tj1T1U1g4cΪƼ*9:g[j1?gZ؟i$\6ٻˌlca]}O5n3Fh17+Pcը3#Nzc
c1؏5lQcsc^i%
5grEF<caSZm4Tؿk'?׈7͐/5# |-DipւF@K~A-[0Dja6[ji_liiLHcri4W^70Z6(1 l54{'-vi9@Lb1-M#̀L
4${jn&kyf}{¼`
=KC4niZ2jK5݆jZ
t`
!ZTiat
3Pi]75oZXlZ^62NYrfQ7 }јj@aqZ6il9
4`p@BoZMPzZOS54<1ǐO=}(%348SKCR-ͳYڏ5 :@-j־A-
ji^F-=BCB-|SZ30p\xP QKSxTj1 QZ/U&hi
[4fȨ!F5lԾj<b訥H0PmMٱXw"4CZ`-& wii@LS~ܭ^--li'Y^j+"S#ZXDM}~xВSaN
˫ro߱"a}Z^ո"T7-CoI~hnjiIwZjiwG4[jiiwmIZ>lq}о~%5,S}J?оZZPv|FZX,HKZkKW
Z>fVV3ki?E-m_rŬv}ڷzUدil~
[=jKZ*簆-td=#9E^
SZTXj~W,}ovNW,519B`_׏Ow9D_hr^:3W9+1D;Wv9"WoxWvbtWtu7;ʴ#=+Β˿a+Ɇ
-/~`8_$:W[b/:f:.s--}_tGXW,_q-e导ti;s]h+'Y
~寬MZOt=d+Y{,m+.8whwȲk,el+~o'X\d+l+;ų/{f+,D_7_/-k,E[osWP/i+Xʛ}9DGK_GlK_{~7K_jG,}NpK_#K_8[g+7;WE&G_;7X|,}~WG_'B5WIG_q+s}1X+;bHrO8bG_/}W<苚};b/*}
G_/rŷ}EoG_Wtw#W|+8}#m++E;Wnw\+v}@G_񞣯/B߇}qWWWNsE#w~G_9W<yr/ώ~/#u"G_o}œ{/nwvs}ŽV3ok<gx_㯬r_qnt5tZ_|Z_yxU{W8?D#_8\_Kc"/"og_?W,s"͉w%{3{lϿ#w(_q寸/[ʰ/~f-ŧOZc+Rb+9~W8iZQvWoXh_q/Y?Zʐo+[k+fY󎿿-Y	硫X.kxWc8OYb-8o8[e+e+寸/Luq_Wf[[_k$l<X,e%d	,npm	,Gr%uo:9l	,`	,,s%K`y',X%vm	,E#p%0N;g8?j	,-`K`q%X[EG`G`w9:!VG`q#(G`Xd8#egG`X,pw嗎X,v9G`WG`!8r#<,;9cG`yX>,9c#0.DeX9^#0r#08##X,ODX>,>tsƇb#0^uӎ"?B࣎E/G`!F\,:/",wE<X1BG|/8LG`wG`yv>WϿ?q8;~W8nfEtxWWL7Wuy_O_|W~+E3t?wWs>(:vbhp#}#p7:_=Z.m[cl+o?'Z{-~7,~/8`PKPo&  >  PK  C:U            4   org/bouncycastle/crypto/engines/SEEDWrapEngine.class;o>~Ff
0F6̼;FtҼ⒜Tʂ|Լ̼b 7gccKW#!=.0z(FȠKSN~rsfAFjf#b`cb`gbd`qOIePd  #2I> Ob`w;F: PKig   .  PK  C:U            1   org/bouncycastle/crypto/engines/SM2Engine$1.classRN1=NIބ>xhDH6<TU)j,RXɀeG3|Qm%7IUX>\cboDD׷qoڞ)T+_ƃnj}eڑQߨWFԯٖb.UGxΐ=:2Qa&,>CkW/-L;f=9nUs޼R2e6nEFh	^	~~~v&esd9o8\tp]|.d4\qQbsXay!28lHmȴk*[5FšIҍUhB^M
9K?yY8wx7_ñvwN/?"V&I922dR:yZ/KPK    PK  C:U            4   org/bouncycastle/crypto/engines/SM2Engine$Mode.classSOPT
C0m2{ ᡑTj]Ji;+g(㹭ι?~S<V\gP/.dZjϏBfs?rN:NAsq0ddc^E''(AjA6vAG1cώ<>|g*dic/{h<J+`C^7+6,QgSY7KB>+iM8ݫx/oK׀4ad0pˀqGa
sOG:XN5<Hr hߢ*k_B yMe!G_d7P]/B5b4>*sQ7kJy^RQSm5Uҕ+͕s<<-H252G {N
AI0ϰ7B<{ofNKPK'6]    PK  C:U            /   org/bouncycastle/crypto/engines/SM2Engine.classW	`T=/?-0Q\tjP!g'2g&HҊ--TKhYvon[k^)Of@-;<w KE3<\Ã7ެg
jgn+o1R&x3kk6=eԙ#	8*Ly)8+b<䪈Tkb¦ZwESm-pPxødkuMlj-S+:%jS]" -zԖ
kX&5]\fT+&u-KjZ*K7:ivٔm)-Q۝V!Zl=m'Ϭmm]i2HLkQ#ɦU=͐JTFC7Rq5菼V
}תmA:
]ɬޙ57՚۠FGKe6Ѣ۴!W|	-N1Չ_0=	M˘Cj=&),ZjVhujZ %-5nR4lՓjIHemZve+]5t"d=⡑(;GVpc:ҨB2}Ur
}QXJjXve;lm:et2+idlvj,h#Nd)2Qڪ˲Qi741hhu>'mjROvj	V:4U뎔QFP
̹Qݦj-K&652yV=|ρTږxvPcw&~C	D+u;K;;S;J}lͦz
Th+EHK"؎=IZ/ahfӨq-AkcBԬjp)
d^R5gR<wXù)9Xq>ZV7.mtj鬮Bֹ̄vUkp-г?ڪΥ`Ӭ,*8?֡򔯰
6*g-=^WKRV0OlZ=>Ta2Oeb`klsaE
AV۵-fgE7 4{\!ʌvMLa-I"cuj|+UδA$S4ӝIvFRF~swu&ԱHK(pz	
HX+a&	KA%EBUBMB6	t	7J*!)CBJ!SM>.'ҬަA.,JuAp̅F?⯨?bZ/ٴj[ίUR}|*
Ln֐B$Wd	#6byWK+

`-y*ZomnaՅQrAXyS>e`FqL34HVկs;j=ͧ3@Fb()6P
Tl/xϙ<o$m߀dsB'|"reQz(lo
_?1\x(!`JH`&> 
ai,Y,}
.
£ b,«M`+1NrW1Q͘

lWP
.\rװb>`>P
*XO* >cVp1UP
j𘂋X,g\*E%)
pXl|NAOeU	}
֡ǎ^QO88//{n|ދi_Cq~,:oxvU;xQ;+2xw;o.|,,~7,~,_2yUůe?eYA;w2/Y$
? ~.c7[,~UbOkķYPd|6<;,=x݇=x_7f ֢Kt4f23iט]ڹ!kJbZsR[ęmfKlfKN^q)}M%xo}bzFUD!TOa~
 jK}S,-}u,`eN+͉A	$&Q\\>e.j?%{8^<O=q+`W\q"ve:B{p +϶b)扞dN]/fIb\n;8ů%~2^Up@JWn.v,SYCö]p(2:>vdN9\L#"f\.lsVx^
C&kiZOҧ<ghf87+EwZpY	xGWTFܹh<S)32'{]<6WTG%NO,'qӽtѣsDߤ;	8E!9
s:5UB{N7".+1bE&&l>+C8F\Cypb:<<stg(r
SQ#̈́_JCΫ
4f}Ë@58<b1
x<n&rZ*y:j+5>/؏Y~9m|;nwā*3H@%I+D9M<=H>Gl'0$E旍"v_Jc\Sf;j~g;+Kp9t[/;/*q?AE|uڦ^o9%?v9j""'4Ey0Ti8t{"R@:"8j~wh
H`:T+p uwzpM5!j$3ܳ"wV
݉~!Q./4׸͕p
;T9i.}ӻwG;cZjqƝ.b*^1'0ǶXd^!;/5Tt|_V|2n	B\N3Jt5*G%.7o"zпyv+PKv  &  PK  C:U            /   org/bouncycastle/crypto/engines/SM4Engine.class	xT	s!l	0h	*	 @J&afqwq_PeWZ[mmV[[mZߛI~=s<="2R^3_}oǸ;0v-;_56>9gZ7}`~}zxw7ύ>KO.]o37[=}\df;:zTcrc̤i35Us9yuaŉFo7Ɩ6"ɕk.dz#xdG8+Ygn޼RU\y:nΝW71w認tp4t[ZQY6c~UܩR66T1L1\1B/`qV5sCzh,녃p2~M6?6|./X3/Uf})ǹ>b!x(ʫt7N6Xy4//.ED0M%x00C/Pjr1.\rH~qUx%v"$'ٴgl%{ٚݔǒ8+7uMT,O.%8ЍWSe|<RLN(,X	FKꌔG"`driI(\1`QIU`*tH:3*YfPU*66#
C%uh`2	'VS}5xYeBePPcX3
7cJ0ES)xٕM)/sWL	-6ERf'bP"Eo:%\v!C[9p$<%e۷QML`bV~cl7_<{NڋÏ U.	vnFTKc/"LnJ)0e)L9ϔMԚ4ΔzSLͫ8bsHâm7`8+~sVw$	#sv\Q{ڰܹyǉm5BcWyȫ1R	3a()YRIRS'52'3eOfp&#}2V1N1^1[d\䓳(Y
Y*'gz]UVeW(T\啸핥rW\+)m^Y&ye4+Vȃ^^Zu7(nTܤEqv
rUrWV͊[u.5pfؿh&i/xǗ23`]$$'jIqHlEe`	-];';t]ȗønvydϥIge!z
f4gV}2%L1Mlge\3B130x:rЧ?м6	 N8hѽ:r{6gʎVޞ=זexq|
n,ξN!/Uu:Ͷ>mi`vVy(^W͹N9힋{n՞
Zdpvq>'3x3mR,rPCE=lvHHuu #:PAs+UQff
ŤY.g=%]M,R4Q5^6w֭cqxi+gV=dTڶkkۊg``>MQq/4eÔ)1c+&r34wԤ]Wf0w+Ai[iQOiߎSem13H\
zp%
|u|;9|Җc0\&k.?\'&k.?\6&kthCbKpҡd+'ZYE{$c,
Xc{ZevٴIN.IZ)+E)l'[QZi%+-7Sf}mlұ>1K*#N,^ҏҝϢa
ٜR
QF=[AGfi>E"`*jl*[ڢXs7x^{(O69fm{UOG͞ޞԶʮhmW<$m>$禃wۃ<a=_ZsjϮvWK|U/+q@F9'!;~2|y!6btnO/NPp7~x:pci-="C.n(${D#iN=Ofa$z%'b
=lL栜pnD0ɓp#9#O)XIbj2'(#9Yx,A9 a99<FďS8
"GVr֒Cr,n!;r<	I$<B37PMdS9Irzg`'9gb<9}
|Bĥ,TxYXL*l%<
d
~E/\t'ay!/=|Jb Idl@=¹M6Ar!a"aȈX(.'9 F&1L>	?#r9&QA(rp?/kyTcjR]wTqRW]1˱]uR]?TW-5ZU!Ku=P݀T7iM8_u36n][1Run9;jnV݉᪻0Tu7Q݃kTb>|U{C(Vm:Xz6V(CqV='TO"CTOcTj~ڊѪmzUmT-NՊ.ʝXڅj7GDT{qjUlՋxFnR]WիحڏT!S#zd՛1zsU?{«z/0pxX.~.TϫC}TOU ;TUųYTaqc|?6'XkTBHg<_爪aWU_ᯪ1V
>P3U_-V/Ta{LT/Up Wo>eUVʀWp[*uRecLҴN =V7Iz,/`ՅnIX^2 -d'CfY9d/kr},'J|d՝̱z +h+FӮߥO=yWPKէ    PK  C:U            3   org/bouncycastle/crypto/engines/Salsa20Engine.classW|]6Ȇ"I.\HC$DMXݒ\λ=$b>*DڦHR}O߭ڇ~?D| ||3̷<Σ,NLUr	K>	*$!A
,QgKpm/tKEkEL-'!4)m(2P<fꑘkuM&bhTۄ1?̙\I$ÆǴ'
r,njFNHËt3q kæ⛘e0sE:DƦ~45-
fcOتAͼd<Y)P^3hbzHr਩mgaÍ5}-4Բh=Ěv!ѬYEh!־YPͦW!P	Ȳ3r
,lt--+@hW0gl
F/Z؀:krxe(|9exe;/sڕ]h]Fe6Z
':vYW6tKkQ
Z@a([XhEm&݄SO$iC	S3xteLxUF2{
mXafPhmnRfLqPh"1M	=YX6cd,ʩKFHNL.3iC6`сx2bjR?	
Ք2N1]lDb!UIbd"n9O(H,ƛIoڄ3q-5O"[);1ͨGtT;r}|hhF=ڜH1
S*a]}
g',a"ԒD\XfG,P96~lh8)5Boh$d~deC	
JbnP`SqѷPx'3*δwwSwm$H+v,=+&=5m%̈:uV-nc$sߍNWܛ͝
XpTX3OH
0 K3CX7DEqv7UqtdWd`HN$R)vX8'1JAɞ]+Nt7.1DD؄ڜVIuƓL8XMFHY6)LlƆaIcs2#U`W(Ձ
A oǟKEX&BDX^6pA_a60  .c\VSqrXʁZs*=}哭R)[v3A}x{mɮjo*bb5Oc	VGOӸ3	{yfFm+`-	`}TadXI`
Tɰ
2,2K'H\A$eX
a6͑3dgp#5$~PGP/V/z#2\MCpS2=2½2O>b>K9Q|_"Op~/&x[nNp3X4	wp+Fp;7jyA	!8H0F0N0Ap1G'xk$x
;{nu.
w	>	_'n
`h#}=1G4I#]_"|Cn?j,<f`CWa,ΣAsU%d%KPB6BlJ36bαql-l@!zy@ JE	 _}^Qyg)$BNp" 3ܵUNã8:lcm3,:guB<>kuʊǤ2mT\PtnH#uEq"b1P xOZq럀]#0[z18: qصv
0rn/̟DND1@wST~##u\J9
*'X!<w%κ
'<wh"
WN[	q9kpu<1r
"c \؋K* -:i}5V?ZOQRf&|E702hFp`E),Ka/NS8>Z^ƿV^:Am48j
JA=.5DAVW+ۗWo=Pү*K`'J`M.|Sv{Gp/B(rLA,@BY:G n'6ߏSȳSPpP$9JQ)f)fT>9I5-y"O|υ\s縘ٞ/#ZGuܛp^`x(9gkʪlʄ\Uyѱz<#
b}{=7GL)
^uB0>Y\xݎw\ncN,ᶝzvj-ZU8X+G5\@2bq4ڞgHFBguzR%*q-ʅY;3,I/WaKe_T} 3G7AEzUn׷u1t橴b{2A0ƳY5~`ʭcXZ*!%L(p~A\{Id"VAI3lx4=	7+^A;icv3⓻;=YI47&JP%Dѫs͋czv!lKq
8U
=h)~fbI^sLp.D2K-GqB"\Ux>}i%˧GЇ}()@OR(>()%gF`:m*zՒ"NZtPq1P-!:1KtP\U	;-(
-d$$Ob$T-R]RUh!#"VllvZunZȺbZzTKmtT'Iu.t@WW*BFR$ܙPDm
i!a22fCiIWQB맽3Vb;y4
J8ތQ1p"Nܢ)B	FSI-,K)hV(hPTVK(hZ*~4-VK)iP"?@().9_eH߈ G7*)Ҟ%xy~6BqQ]#,܈#PCsznUzQ+~9(yѸTϱU_.'ՕA&ƻS)4e] ڣLpaxSCO	dyPKx
EB
    PK  C:U            3   org/bouncycastle/crypto/engines/SerpentEngine.class[S[NA[F \` $1ix=㧘yי)3s|y;/)e֪c%tv'U_O?K4؄=кhJ n
ۄLaXh]	.*zU	r-L1H%181 lE4L&<[z<t|O>S=23{33m&23	HSD4%?-:Գ9>e7z
%P8w2HK4M4yAtT^%D&>,o9Ipʰ螾%R;Ӻu;ٝP,}ќ|{u!=Hм1DhNߘ#EᎺi#j3zy{s͙7gޜy{s͙7LRyUԫ¯fU؄70CnGbz	cIUQ)qA8<'hGxDGAGB8
8qEK!@ Z! !*EGT
%"(f"$f 0(517 !& &!nBLA܂
q"qb-ŀ[CN_7NUl4%u)q%;Y|GGG
M)NuB.!\hOY}akP7~/^;؎;>Kh^* *˵'~ՈwW=\Wմbëʿk+(dg!jmGGZ'q?N}kObUދ!ӫt#zZGK?q?
S\xT|NFLwP[sYNsZPSR3YR5XVڍh*jR2*ըO8%uQנE}`g Je^gP%Dyڇy4@4B4I	˨P7n"BaΚu3e+ikQ_B}`Z! ڭyPnCNtN DȚwNA!tC@ZBݍu/}`! yG=z` !Fy_E=zѣ`AA\=1׉fbbҚ
'PO}-ּoB}m	C܅}u]Dπ=z=܇x 1o{}P !"Ē5Q/^"e+ּ^F
ѫ` !6y^CzM0QDܚ&(8ClCXBFC0	]=kOP'P#:	f"D::MtS,DΚwSY9
0ϬyP~Fs0y/y?GGK_y
5W_~mQ׈ߛyd˗
!bȷ->&2f+j\Ũxb25yJ2T.r
~Sp)zupk.)=uOi'=x8
(KyP#!(XN-:WA\cHպDέ*b=v[bk=vz=CYQn#hc@l#Mhm&ߞ.6K^&Jm%  "b{K̷~b,1߫;LH{1b
bǉ v|o;E-bob%v|g%#>/1bHR>"vĮ*kĮQbF/1-bub)1'&%v|"6]bb%6Wb|'/K}C|S $*mk	Q\r ?< ?:$Xtg
׃/QȥՠuGO6)ֳ73ml(uYb:X!|v|bgu>eY֙;sؙd3:w.;e{w>,vnNunΝ;3:c3~|'ٟsu΍#ֹ:Ε|:YRsugX|suβ{3R:ì..{dS]:Y,{ksu^/{^eCsu?Xg?`e.:{Xgouv ?uEyu^fWޟ~:[X煲g=l`yuXg<_<:<[Xg
eޟY:YɲuVN7,wQ߻|0o%zk=PK'	     PK  C:U            7   org/bouncycastle/crypto/engines/SerpentEngineBase.classWkw=VCRCO"hqcؐXlaYR1ij.-}е%ӲVTW93&^+r;GwϾWC":N5H70AzѠs2
7d_ɴ5w)BIsREHퟜEbL@x<ǉW䉵Ico[96pmvrasg.M1L"عk>5s/^>7!}֭Vܒd0ͩ`̓7:^.ռS(yYKnYƊ*n)<5iO/rZV֦5X0n~zRa-,c_x\KO@h(B
ʺ׷~[JBWq@"^՚˂tn9E<=Y,ex'6./"쎤YPF[AҬWc[.X[н欺Uɞ+WGfީyEwTP`xqy
y-J]t sLeo%T^ٹu-ۑj|ǞzkR-WܪWp!{}8[
L`ς3Q?rZWxͪTː\,2bʽIܟ\,,`k&nkn7GVCN/N_K:NgtN_Nc:G(3$&9}SĪvU.7]aoBb5x,Q}GveRpz?[S_ 'EG(eEJ[p%ӢSܢey')aQXtdsZK78,[,,꧛}VyTPFZP2ieeIr*Mx@oqIwLzSqNuMx9p794LZ$deo%9urͯT.9EW9OSF)OOcB]g`h
	gIaM1VXVy~	*?ct<nӏ-Sڦ_LZ	7D3?oZK}DOӃ#[F#06{@6Wݢs- -6@1J,hqOf(~bL&?Ou/&~@tQ*>ox@*G|Mz޹K=C[٢'ס|^ӯ;[|Qy6j|--l)ie)WQpϙ6Z3m54,mKmƆT@J
i[czRliXڦj6sHm0#]Ju(ښ7 M
3e{Cj6R2L b}cg]iIa)[l̥\56 x tFwH.MiQ0JDC)
p
_4[@,7ⶅeVFBrRZ\H):wPřigTX;;paeAAj$P[}cl(Z3&@dFvTݰ&
S;)}Ԇ0P^

̚,-ԛvZ"l6D͐Шp`A
SnS
+tWSba>uĘ#.7@A
e
Ȁ@ԜNC^n3(=x.GVso(!^mkjH
5L#m7P=cw[u]?TlnS-C̭dXR݁:Ttv jZd7ā|/lUj|
,Å#0tM& &؊D~5AɘNH);^
"6&E XOOvUBWKr}"
u*;gдlFV_Շ#ps:أ}l'tc[mu^?G^ӭ/%ậlb}
Ϳ+E9nՅ$o
88rKJZN![)Bw_:U任|>^y|
>y@D6n]ru#є>|psI1j)C?b}4|
Y yM5*͔bc[Q;&uESݐ{^$f `f8N3A`3uTE?;`J¿y݅gtoLO߻ݧO}z^wAѸ]%?PK`	    PK  C:U            3   org/bouncycastle/crypto/engines/Shacal2Engine.class{PT˹,r9
/D
.ò{YVEEļ/IŘVg	vFS3a'f:3Mi2v2Z+νM2e||{72 ɾvΏZƓ']rdyG79O.۴C?=I7NL/#g5w$ȜH-9NRղCrmG˗ڟSnM|j%7{%?fE>%9 4" yoIx|
Ggg{`:?$Y擿!ɜv9}$\83/ YdaR(Yv%s
]G*f-~E<o7os|BdS48d$F%kM;@ZNP%"ԋa'Ğ]ޞ]Ś^SdK9	{Mi&!
2KܽيpW[6Tp T4x}P-66
cFSmu-Ȗg+*յr
q&#!٦`jX-I54_cRVc )A5R15Mf싶FTmrxZDW떠
2PAiIhҼ+Q5Z&b`66G#J<	pj6UQl%&L*3{wz]!o8*
72hnd#NWGyH#O}TF S¡V[,ZoF,ӓ["H;9D:9kycjHvi-Q\Z᫂9ʁ},/axg,56TѝA,Q掱VxUo
jݬxX*xm*93	+qWk*G˘kWKъ{2G
38Նl
]J*/`
<T @P4
$@X E ;
@b,Gqګ˿y}hF,^
/+\K~mP1CTa7Fx>(5C+36(7ó5[^x9bg53uNo	L~lL} 4ߏ2cx8Ûo%8aCCV)~<څ
UP3h*^;H.$tcp<`2+Odv$.r
5Take1-zrH/tp}-Î)l[b*
G6Es:Xd{/1)ëM#VCo@e롫tN&KEZqń~.r.{yqIl(/AOEx§s#9@%^3絀<0"'@ Zc3z`^YJT%^囎1:ҊS@qNB
bXUZAL>8'IK]6di0Rz۰EK1bGK{ǰbjeI;ku)
Bۈ|'Qm4c[Gb;;ƥ |Rpo^?7 p%i!a5day?'EF 8%c6mi]f	V]kBD&$*{:jq)Q/E3k.nF-gNP"N`5lFbdhcpLZ:(L^$]`1UqFlc5Y>8?A3$ {w۾ränBizP&gR"M4qdChdݳ~C
iV,4'&wжWH/v<r޸v-gIZGxhIoі^5}psdiA! !fPQ
 ~$qȘu`1Hb̵S:	77HZF)RK(M;
x#'C=u8d \7]ASŻu|
)-#r.Im+G4M1C[{ýOx}b@%H=u="-r{$#5":)Ld24Q;2Cd*h22f %LSNGf9ԁ| 9.GN"JSi2RdBȩԆFg!m49"gLZE"ge'hrvjBfS32G:Dd.̣N:
3O|f#<d!u"ѹ":9.B.K
"J)\B
ȥ4#Sҿ_PK7/	  H  PK  C:U            4   org/bouncycastle/crypto/engines/SkipjackEngine.class	xSUOhrn!P$,JRTmhHbEEu_wqtQDmUqqqw}_d'K[)̧7k{ϻ{䥏t=D4.)Wa:M)_M?:'/)7%Z%>;
9&N&W,m^\IeUo:L'&IcMuü]F56\H%
Cь
M4D3dIH#F0qWDD'&r4تh<	cjNi0܊۴$M![DY5&ږ#@(1Sӊ?X11VH ؎QCG,
PDD#hGb\Hop(Dͮ?;$p5X꫊U2eNin-Mb|:2ZXkr#Z0c$ZԘ'+E}2#5&bUyG0lĐTjJ
SStMZK"?RGJ5FE{ZUDJFkPz (ӎJ_.K
ȾxO;m{ZoJJdrEF,4Yɞ?^.ګMkLHԻ6G4Aρ%f
u0p^FN&kTQFEk4MhFn@B&Y&?vFtϢ 7ӈīBI=(z}e'4#&^rW&^\1.]?~1&{GTB#T*2Ed", AIwоds~""AcADqPȑڇ4:ho:JbNǊ'F5Hhb%"0jS-SHDZT)J
t4WṬvwi	4""TK~*"$=9ޏBn@5xHC2{|Vҥp1diSҜ&*:e82cD,7<oA
}zɏ埓,֢*ʼKkr=tJQC0ꡓ{i{Ϋ+};uvJّfg+f]himpfvG#3F;QϢ+QklZ,tz:U];TCMۨ	A4X:++״!]
EoL_E&uJ[(g{s	Xszszk3jSjoNی}+
Th=d&g-J=2u~,*w0lI^_!qJ_
l'Y-e'6oN1k.EI@Ns*8XܚD4~2brNNݗ)LQLx2fT囎Uyf_)RgIǬ0OKLL+ck:Z&gmYnnYG,w3uT#YZDep[Vi3bԝ&ٺMZ6pcn;|xsZP͵16cX|Nk&h89|RTP89@FN=EVN}u'MH_h;h۩i`n5y2:x+vsN{Zף6^汻7[o[sZܺe31m9&+2L-1`l/6_xiRX`WtC5bHGuμ74lÏu26o<^=^<^<^Ms=^F[ ]ѭAfJCѕ@[UCsy>tsኞ\Q`$@}]
R"0qtݗ+c9b;tׁEy$t?E_ :۠(BE E> mJh)7B(P4]E_39 u+
8'BRtpwYf+8G@2衊A2E=@9 JEU.Wt*pU)P6`(U0_ZK (葊(z	hTt:eP"Eo Gb(]`	/-c9z.|<W,Ф^ h=ӡ[-l@[9m*h0L%@;{!^]
 j Шˁmb6qE	EE?^VRћ*Ex>mDE'5<z2x5NUK58,j<[p'gr,$8[sXy^hn\{.>ZE	SX%&TC˰OxW(zXx%'W)zExGccT]/?u\ENG둲 $
͂y$MVћ0!k9Op+)*]уE;<Kpǅw*Qx,؄
V<Gp/lF{q}Ic	P<\>RlQa,xW	>O^*zK;[}&|cgC,GaE_rK$x%|(|Yo.xWb%7"|-&|D{_>O|nhGHJ!`s>N_A_0׼H
'FɄ:h.6>XYt{2|VZPKib؞
    PK  C:U            /   org/bouncycastle/crypto/engines/TEAEngine.classUsUmdai |d4m|XmKBi-նjMt7nj*~;ã<ȋ3Ҡ}q}ϹB	J2{͟r>|ZP1
V)XQACe{iMJ&;KJJC%Zy
'XA~L|>́HHpҘ\M]O1{h#}-6(!:Cxaxvڭ3]Lے?VfX/Hd$ogƇ9ӞGˌ6r=G7-ϥnqe
{TjXKќsczc]%PI%"Bb[^w)t(E!St
KB/aiԏhmkaiMZAwhG6QSҚ4	5I=׭\ϽuQӑ9=Oe9zg,.zt32TEUVh泆#aR#vLgt):;%f+UɫM,3if3)юJ;iX9olIMyJ1I5FbqxAA*a̼ApS4T=#A{ ǦV3AC<?
]<KEg?s
&c]2R2^[{efe񪌃V%;Iz~L[NHxb(gEӣ&bþDeĶ݉|s榧ռLG瓗Q߯b-b*1gPX"UEVx/،[Ua'zU@z7jqVT$M``5z0û13#x"8|:3Ep	3tb"SЍBd(C4΀,ݤ[^/L/)Ч
lmpjĈICQ_\"mJ%2p_uRZ'V$1H]L$SC+c|KTƨr767#*ZÙ>c81PŘ<Ks`Ç%L=HE1YEe43]ɦ9|^<s3uY	W+N)A0~0?aBbC	c6FtrbfīHTu
Ĕ>z@ߠ&ٰ)^U'.kբ #*vڣ>vYMEZ7܏Forc*эdC<1Y0XTe
=֊Z
Q+nS#iLssV9,lJ\j7cl|:+rD'}%LxHX495$[ótxHj2&¹\aiVehoj~,<&=Vz媲g(K'c(}}7J6uSeRѩ%3٠g/_fR]t}>.REк}¿PK$  L  PK  C:U            I   org/bouncycastle/crypto/engines/ThreefishEngine$Threefish1024Cipher.classX[wW>%n"ϑ'"dEdI'$mjIMhqK4qN7ddMMＲϰXYVx}h[G9T/o#ooͷϏ	! Y,WH\pysc ZygsgO <O\}q{
6eڒi[veړ#Ҧ۔unSmʺMY)6eݖےu[nKmɺ-Y%dݶۖu۲n[m˺mY-eݎۑu;nGȺY#vdݮەunWʺ]Y+veݞۓu{nOɺ=Y'd]Gud]Gud]Gud]GuPw|a<FcNH7h6P6ʫ=p{`ޝpr.;쏆p G=pޮ{80{:fý!;o{e֥i @?_o6Z[l Oߣx#hd`wG㫣xf B!E!$t!p!@2ISy
BpPC8`#4mBA8pA#ȳyN#W4/%el<" 	p,&6B>·cMy|!ߋX?G7
N;!Cvsx>&Birh$L.wG1x\yu	6
_
i_׀
o_[ ?|?Y?)׀~)O	 1e>N/	%g~2^Y/ (kM{*O]#g
p[ɯ|MRG[y_+!RsNJ=~ '(=|O)(W?w]gz.)s%
g8mZ{|.:^y2="?<?6
%7_|VqDEѪAۉVCmGjFl'U5̪LՈڎU5bqU䫆n;qvU#i;%mhk!Ʃ^Uɺ$M#pMtij
|bLGjAu,di⮓:NꐂM)bRAdEZCJS
VUcZ!sllRQcBK
Bc@)#B!W$1aSiԂO@`9#E!Sd1RHyh(QE`3a!GlΓ$V+AbM5=Yj9'd@6ɦR0iJ4R^)
:B^+ZTKPJT*rTsj/2h)Y,JKFK<Q,//A5FTTuOU-27fyfelCr?Y3[HllL?Gp?Z>֟>џ>xܬx1$!KmTTGUTU'T۪kO>7T>?\SmUmڼ<2W|n>?<|MyMނbjjjjjj%ѧVͭ[][=2:u]ۓ<npW-RmѭZƷjao4ܪEhjfi| S8`Z1 y@ " xq %vyFk7c# !
C~[#Ooq5
.l+El"6w]1ELp\1ELp\Ďp;E"8mG'%kڟabMHv(F,lTpڢbִG1VŪM{v)FLlVd:m[|8'$ӨS+uū(bE>yJ3Xi^,֕9htǉ8q>q8NO\=bYY>"XD"Z:/+ee"#F4q8N/s|$WOz/t+/"EdRcyXVo|6>ͷL>0aL>0aml>I_>|}PP@A
V|mP_|mpi_|mmx 냎}} _|}@}}Pc!XfB6;ٱyBw,dޱyBw,dұIBן
cn°rE~ENpu0_PKYI x	    PK  C:U            H   org/bouncycastle/crypto/engines/ThreefishEngine$Threefish256Cipher.classmoTǏ'N͈؎&6M0@F@Aڼ҆J\>o&V
#Es0I(ۿs|ޓ?ϟ@	Z3K$3KL\jJ2fIuH a^ݹ]]bQĢ7[fWUov͛]fKlɛ]f׽ٲ7[f+l!ZP$fu:|0X(
A@;GV"r[K_YXfϲFfkn;:6[	Lou΃5p{8&6{}ο	ህ^wx_d;Eo:n?
!QIItd$M2G2OH!Y!)TIjf\d1WM$THCHWI.AX
l@r*>$bPMԝ{Zݱe1ڰmޯ0kuoXG{/[фoR8CQ<%pYx9.2*	<-
rB,.pyFrRw/K)sȆxۂd`=Ư0>y =.WGRɧ]hLW~P1|GZ>06+,+%1+lԬhˇM%/iתּb nh(>D*'~IGRePi[_T)|5]7p0P'	~co`>$wpI5)=2
`|\SJ1S,U	5{k)LzTGtuQ1a"tr΅
ɆEx+57P ?1`.|Ks\I?Sm^{ѓ?{rI}ZMIzp64=B[A90NFiT|>5|MM˃M˽MǿS
L!(|>a8qㄏٿ:Z%<zxݕcPK	  	  PK  C:U            H   org/bouncycastle/crypto/engines/ThreefishEngine$Threefish512Cipher.classVsU>i6Mq	%?tMjE*`@,t	4&$(8CGg͒{w|ινW=Eh 8=s# Z k3`[[&|z= Ol\<vʝ;*-TmIՖTmIՖUmYՖUmY.UjT]TvQ.%UjTmEVTmEVTmUVUmUVI;D`h7@̩y+HHt7Z})Ӊwp;Zwƹoy{QtZM̰} V{Ǿzج?;n۽8-7wco9ٽȽK.oF`Vqn;*B%A"d	 ' 8E#$"%Je
2)lJ	, J,A	AzEan|
kp+-1_cXmr諭f47C䉵fWN;Zש_v6
|=rT5wapI8dC/ JC1_Dy	EKyR+SYψ/!OK|; 7%~%G=2?<+U$1/#W◑x	}Og=뛐S_B''=} h-q>lS 	E. /fo YJpyƭgGV{h>hWY^|Ȯa]M#vȧ)0-VNYѢϨ/b,2|&-u.bK[f1EsL2jF~dC\%
#kESsfpnW!1Y4[F*maHҀaI#@L1+1(1\Yf11+uPZG%+uLaZMK($JhQQAJh˘Vw蹙nff&ݷ̄/lf-I1? Ny?u~|uu>u::S^痽[~{C{Ld#//_4+Z+xZYZ!bB*lԞ%^ca6|!}j[5<ԑ/_ oz}S4A@)X|>s2p͡=C#&mZIoЈA{
548IŜ4I
,0+.8qqĜ$I$)NZ&Q.&(Z̉Ӝ8"N$Ҕ+-4">hD|Јqo#G4"iDmJD}*쫄DWSJ*1İJ*U"ĤZ'~yW2˘/c޿y2e̕˘1:vzNEFg&~=:>?PK    PK  C:U            E   org/bouncycastle/crypto/engines/ThreefishEngine$ThreefishCipher.classPN0=	

)PC	H^HDdaA,$i#P!1|Bl,ecɟ_ q@pF'oIlUe{I$1ALT,uUg3Ji*չOUrkBuqERrժyEciU@gGP
Z_`C-~SjJQt":-VC;0:vr
tlW.[^̕=FM7PK<	    PK  C:U            5   org/bouncycastle/crypto/engines/ThreefishEngine.classW	xזA#PY6W9Wîmf-maYVJHmҖIiBl7Piz@N93o޼y;\ v8(c71ێo;ڱHD9s|_yH5,ZXi5iVW};;
+Z!3ۭ>*5ZCiH,B3.3+ꖷ7tVͭ/0^*yAU5UY= œ+#^MQ>EbhUVIy#	o7q1ۻ9^^MҲ^Zҫ^I*
-	DS'j!%̱f]gKUʦ*:!yY`6%ܛg70%=9)AόmmCN=Um
W6pYʱ^ʁ7hzF?/z	
K&hF2Uie?^(D23kʫڨ92.:8{R8,'Νla6)cIU*KARF$뱶),R}rN%4UmHOV8IUcZ-@bViQe=`h"J&hR
Rޭ
]TW$e
_$pvלTJtճIE(`FiJޠ9ǌ&ʽRFMP
[²Ս9j&gy2M]055jH6vs[<@ٿY;ѴH6ee%Lf*joKIa)AB%'<X^u:iM*7H#*Q/i
Z_֦cyW:ec3{dT3kVj1cD0}t8bVZ^Jc랅zzWj[_$nzVkh
A ]TpxPYN_7>Ia%cUۗ1zE)-a{"}S76lnEmQ45y.	!@z%ϗK3D,TD6EV:N)bIDn"DDԬxT$_ki'_5vMjz-?4JQslO4lo^{x|}cgmևU֗N}cQ49/
Pϲ@B1ke'j1Ӊ:Fىr,qPP6,uAax+>D&8
.'ЁNzLa 1t؉(aNbX9:g(}NvuyqvD'1|> Ãe89ދ/9p;N:pv<0v	SO9O:>|ف|']:p8c#epN09~:w f8(= no)I~oqUc^E3ɪ~Aҋ!ܿRq{SpL5`:mt;]^$OఙYo̒Q,Y#:KN̒$ϽF%o"w<oJ[&u
u:RT1iIuJ$Zn?tV ~j	\8?3:{ٳl2gҳ%0O}:,[?4Y]OO#XL}Yڟڙݓ-<ݖa|q*#X<wӲ--NA$˕OAV>KE!fZ̯X(?dx>!|c_%n8%Va-pF9G0;{<Y=o(#K"~_d9EQ됹Ȓ_d#I6]!xʒrw3(O,S?(!ys(S|@%'t9a0~ڂvhjJtKlݟev?[kZ<FRY"yYgD|'8W^"@7l30 ᪊Qk*C_/Y*,cA]ܩlJEМY8Xj悳YE8Y.{epxsD<W?i\N	MFL5=@s)P1 qw;;̆mƋ+"S
ZeH>uGNn%[/-SUeF
O"U%8S94m*c(OwGYMI7WXVy~{<͎mYJJmۧ<j:iRr*sutˎeh<L͹S[rYIYoe=w̌t{v5r<ghQfΥ)|bf*.vM7LL3LM@](@KEW0Hbo^ ?C_ PKvB	    PK  C:U            3   org/bouncycastle/crypto/engines/TnepresEngine.class[SSYFr	x;rD\ J!&4^i?</vWMLW|y`uٳYfбNv'>W!ĀH[)"CE(TVPx.WuQ!>a-˦崶r)TDH>[Du4Io%"L([{KeT2ۓO4}5}2dNj!ND{5~#4ra_'>Բ9
in0LF`(d6~Ә'27-s=-Kt_TEURO'5_f7uݫS=m5K㳚{3x09HHNOjAWt<r%-m<oGƼc
_@O$lFڜ-o5gǜqs}1gǜqs}}="jѢ"*"[ICzVc
[ZL}eI+p[\vhN.hJ8Qq q"" nK.'nDuɵ1	+W!&! !A@\q"qbbbb"bⲼә-9O}(wTՒ.8_DjK]'Gv,dANI/ט/[x&ڄ"+ST׼u:dUٚhAx<76Kg~cmh6W걩ηmwowX{x3dq:TQT(?չ2䃣`u##X	Q,~g:X.4yoňQa>~]PQ:RZqދ-U\*6x{;<:#6"?B.&M40j
DQX6Zڅh7*j#
u5U0u'ށeԵP $)z㰌ڃzOB4@zQ{Q7>Ct#&f5XF݄u>0mgsV}[Q>K90!.@\,L[=</iۏuNtC 漻Pwߜw^} 311l{  !D_31
1fԣǈsb9qԗQOBU0S漯D=zk`f C0}
o}LĬ9Co%z<D؜yD/
qbɜ"ۨ^"z]Us˨^AJ=0k!yC>u7<xȜ~D&D"f{uuuhC !漷PkQǉ؅3罃:zI0)4DƜwu
uu}0!9s΢98xb[G}C<xn)<gKWy@+ԯV|##/\dVȗDh:~4F)-	ζ=ⓨG1(E8(Cpr:a!v ٨l.mӼkqwYܑ5pa.1n/\ʣ8BbtJ9"UeI8z g"m[7UV[v[Zb=V$bO[vzm 86Lln}ĶFٯOyb/{|ĶAlgvMl`Kl%;@ C%bG%v|ǉLWJ*N;]b׈!:7J&!bo;[bs@l|MbJwػĮZb]#>%Ab|7%6Vb[jn/1bWbIbSĦ͔>+1_b}RbO%ؗľ"uq)(,./msB_7Fq'*E':<'8gXlpT k6P<-?
Gpn/ _
3*Ŧ\wh34gg^jbS֙gX;;uy:Y;;Yc֙e;7I֙bi֙9sع:suyع:5ֹ:w;7YguFYgN?7Xu>*{ck>\/{.λsu?Ymyu.?X<\`MbXlaY獲U9:Xtsu^fJas9:Y.{^:ޟ]uXgguv?ϱXV:ϖ?Yglf-eӬ:X癲IaXg}Seu({Ygf5eO'`.YYTh5:Xa	^rKUWPK~	  ^   PK  C:U            3   org/bouncycastle/crypto/engines/TwofishEngine.class|Sǟ$7MBd*JP )jJR
"b=p[u+
-Nrp+sNҌ}><s=|/vt 
GuPD*ԪТ]b34VebƔ\o@|Y5T`kJP6=n\KTWWQssn+7zT"&McX?EPPրMWϜ\l/*@FߐsN>5'nK7g#Lpnt¬)Eb{ʲB
Y-wJUSG--GZ²eJLɖ)2%[Ȕ#SrdJLɕ)2%Wʔ\J1+.+*WTOX
J+<:UQs-]1:t^n/W"*'4y纛40(p%&_nvUi@K;l48\Œ͒B
^Ot{z\MFo|
]ݞzz\W{[imW̡Bc?s9|XH^^dLB&jjLcܞ򜖹s]dכQE=[]E:ӣ4g!MW]rG-&UG7&'MH@y΅άF>+0C%ōzg_}_Z뢉R'z$U~WX2sh*>wcG06,vo1
x[<kT%^7Ki+@X˷]jwR;w<}eW~mh-f:[My\>/Q?n9+&D+nl9V=[,z-z{T'oA^15[KK/9>W>/\
bd0]@9STzbP"o>]Q,Ee1 K
Kz
'kJYFlb#eF7B1MF8>#43 edIrTlMYH;r̔>׳X/Y4:Zb씪Fy$d0=[g%ѧø0Fΰ,P,&[d2e$8V0[l`X`K2q,'`9t@+b9 Z`Y`tT8<+r,0沵&a>YY`y!Y1Õfx3䫕2f^5r*x
38,Xdye=N,Olb²9Y^4MVcf6<c5,6ZJPvz3-Aj:9.Ȧ}z-dP~}sB
$Qa2GSEGQQqVT8;*?'>7*?&*E'GŧDwjT<6*\Tа2)NWP_JQ1Qa%5(>-,^NqaX|a	a1GǃAxeg|fp:[B>ڤ` 	6[qZŎ.N|3Ut33үLg[T>{Xqе̦Jy.ժt\T!D@JXJxޱӔt%d(mprag2/WDuzUOfȻzܽuiywzzM{װuj8"^7
 |EVwY4
505'>}hV۷ڐ0ʒ7~ۤknx;nNxk}$'l;+z%u'o+q>M:=O0jtbiOC+Oaj`!*hagryW;DĚ-rxC'|ժPY,v[龷@Դ~%x#3>.~@J&iА{b6hx4q0BY;@đgiiӯ~cTLGs͵g{iIZ
`y2:.22.~hΦZUζ>^'f3E&V#a][{j(*Qj4ZJkU>Qt6udLC}<D1dbRwlhE޳B+:l~[7,{%^яi)e
#~-jS[fy0A])SbC)?ivʣ_(ioDvɤ_(]s,"aDvbeaP6[fcY[6m*6ͽinSj,1qgNLFcS9H?u̘)"'jڏl
!SxyH tV3EՈ;L}.:zɧ?242\{*]tPYlOZEv,yZZ"mgg6>-Qlo
iT`K@*6fZޝ͜j[h5[cj>60i2kx+a?Jj[c"ST1Ў*lN*юj
kȥ6:s7ʡ*B~ۃQ"U=(| 1'Ai
/hLfZiIT@hO׹VKL}%_*\zk fvk]\+s1Նg_gzʹE,Rlc٦%B4#h#ɦ2LDd+/ݧZR03, %TNT[ׇ*ʊQoUifiȏƤs9/yy,+_cY٬<
--*MhnQj$[<&?5PAayE>vxwO5&}5]O	> 5|ds4񷝖aT%E헓׻q-}%uy+=)PqFs=VZgEY^ʣ?-QiMր)NS(Ei}3-xS%J}P+[Z"`]0&014N-y|$!0bᏪ-h@u71-İ}xAK%)=?ߵ?~Gtg
d߶Etŋx@fixJYo)R[)tqJ1b8
5v+`T{b7}都4`\bH]"[MD^G0f7?;tooա=>ew{h;T<bw!5BRo!5f\N4?!;H)q2i<!7VGzL:Icl!'&x4	Hdd8|xt8"=W@;I84٤xi:HO|4גfa(%VHr"\$i6d\Jz
Oz*D:#[H14"=g6	xi>%-II'IC:7cx9OZ8דSi-t|H%i%E:;Hg\Yo$2gnҳ1<#CN|t^CZHRM:&ԍHᩤqF%]zp%mIŤ>46㣤~<$]H
b|t	>Mz.BQ%]^tlb[>ve[|RvN`cbخlyk$x-۵vv=ְݠe]7݈g݄Vl7lk6[p:ۭvVݎ7݁f;W:bXvv/f݇lJv Nb{/e{=w<8ֱ=l-'u0m=fۀ:TN\¶a{/`ۄ{6Pgp
۳؏mm*md{Og{G^zWp#۫!k8
d{W糽3vvx5.N="ۻx'{c{}Vx0c	>5lhNe?e
ؾF7۷w{||GLc	`?fۋG~_^5]ll`}:e;D!g;gs؎sl]¡2$#?{sH3{v	|+3_H|{+ؓ#`{]Q={$\*sP s`9={-sG'@=zY'Og@=;z A(سAZt{{i)\/	L9E	g{{IQ'_g`
,I9I*=7
&س]={{^a:VEy]'N|6
/sO2G+s`"{j
@*гUzzY,cyHMg@XzZ{zV,Pg@ =$zI9M7O%z艑IK$J*ѳCB'OgDODω=ٳP'UXBɞ${~9NEɞ=?I| dϩ=k${ޔyT'[JEgDpO$zIIdH,S.DKVyv jɞo${n)S/#E詓y\VCD==@kd=
==KJH%{FJdJ<"cqH< cC#3I3ɞђ=c${I-d=JlUrɞݒ={%{쉗Y++3]g`^'KA$z=J(#ɏY!sDJDO*PK)Q7  )  PK  C:U            +   org/bouncycastle/crypto/engines/Utils.classNJ@=&pFlE*.][M!$$B?/p. ?J"n\^s__ :!(wi7堯^OK5IIƄ8y䳁7Bũϼx
%<Q1s7,w2HfVaFaRP**'j3Jps0@,بnBƏHqt͓1B=i:0uKG"*|+t}/0h
F
>:~ PK
    PK  C:U            0   org/bouncycastle/crypto/engines/VMPCEngine.classUS[U=!R+6_4  QȧBZ^|yqqUgMvFch7.\}	h8ι߹=~}668@5ht (>|?W~RN|4J?*@"c=a	F'\J19
3WrYtnɊVO(d!
EN5XVnM]hVM2%TkNXby@ײ%W}nfjePN.b'=KA
ę9#g	-:Wer[ZbբٔnrW	-,dniW	1U]zAwX<4
UKRG	ӍdxAiՄ5,0V3P3)f.	$3	*! X*cP1%TQͥ9z
R)<cJR
ْKa2b}T:j,645dOh50AOh|}xI34|teW钲|iJi3sƽ4R7iJn𦄷$\$m	$\+|j}-{_zঢ়Dop4xzoJk͝PבKb9 ݶ2\sq\E.H.Å:.P.\@p7T|G\|EO	'Z1D;n8N.0D7&b܉^:߰}jTˣJfJYH3\$l+rg9Kbi.K.%V@m`f*Gt賤9~(@!v*X@;T=Yms;爌5o@~9z 7p3#n:u56<,d<+P/n" g9d3t6]:*j<BevB
OOqUx05 !ފ=P.G.y9жG];tE|8jdJAmE|j]&<m	553q(4?Uly'39n컨B.RJAQ8gajNUn[1.g;ro^:g-ޱ=v<<B<b
E_jKyLt$Ql1OF|ESzVt.N͸}|ЈJs(#ߓfIvW/y}HJH^t74[{lPKe  
  PK  C:U            4   org/bouncycastle/crypto/engines/VMPCKSA3Engine.classQM/Q=L(m)5Hڰh"fvHX	llI4?}G؈{={g<<`aY#Ӆl!+sYeZ֖WssBSɸcs%ǯط.=v+xZQTm+r[縞]&~,F4vB2=+Uc傊9Q!E͈Dqt%C1tyQ[*䣁c?W	Fb7R
|7r]:R:Z$ĸnju.RG6kpzy^8kt(i
S|RJO(9jޗ3Uæת[q1cwwRb"
	A|PK^z    PK  C:U            4   org/bouncycastle/crypto/engines/XSalsa20Engine.classQ[O@- E",th1FE%OewR+]YI1h2δ%$@bs˜99%<QUSE,7n.7>w=gBxuCb	Ods8!Pxe뢬@.S4l/zAt&(2q}6ga|sPseJVX,;myXucN|SubKSw]B~c~۵s3k/Ö	jXhC;W^;g[H7PU$+PpK
	s/n`|?FYQB"#Pu4Qч⾆1T4cZ9&$&,d(kFl{äpL@>YuWQl rT.rf -=ݏU|MEqD$rhߘ<wOPcDcX'0UϩFSϥR?<U+!b˲:mAYx$sdگdΙjMńH	0E*A&UJzMiI	U<I9QzPKe^Ɉ  @  PK  C:U            0   org/bouncycastle/crypto/engines/XTEAEngine.classUSuwK,(y'bhO*@$PrG`d֗L89E#54Mo;I`>?> =۝aT	8A
ӑ5Cs4El5pi?hP>1P(3P.&xrjr:+uU؎<ʵ'NˣcPk}77D^
VfӎfۙvJ:fbr5cʬ}fjb4lR4ñhRu;*TuG!jl6K)iS9S]z{>bS tZ\p6mR18ՌtȌ옦l9i42)򦩰 rG9N(J\WT}hҡjJћTfJ5ypKP8i#{tBMT6L'UaJG͌M(q:3ӪYT|VִP+jJcC;e)ҩ)g|;EwgyK|NcJFwz,3ZGwJ>񫎦S\귻;N[ճt#{m6HL[&ai-*N

x2i%1I߉SyTQͣGq<NqǛ<y;ZB6p5׍̑V+{Ij;nJn7kܴ`+&[z|jcT؇="ً`DBHQh("𚈃(Qt8o0r	x"OD	2[.\{\cdAFBhB+R!1ҎIpI0D0B%L	-DU>ddFFFIЅl5Qb8a:=VJOU:e< E$ߡM;˛s?q\O9-ۤU#^?I21L=^j!q}9cNIx99'D G:sYLKZBf	Vb%Oh^B-@l	0_Uf1nwYspQrao!@SPƬ5ֺ+0R,c J$l9Ł0'+TKH^7!ɟ?ZE@hxw:rؖ{H$kְu ghΖQLXeY>n䇨%YZƂʂ7jF\Դg\;.[>Equ4R:|<z#L
Ϻ6D ?	
s7#6C9ROH0G:.X$bv#	-Tp>xS:t%
md}pi~uqWj;T#
Eϓ7Z>୓grBVoH&M`+?<N ۂcUe~D*҆(bPK    PK  C:U            6   org/bouncycastle/crypto/engines/Zuc128CoreEngine.classݗw\ϲee(be1(*Q $
+.YC1W5D;`4Mz{Ӹw0<ߙ3;3<{`e6ѽVB0
pN4 y|*S
e0qQhyȆ) ܜZ ZjAyTl!;R.+rdjyAxۚ[Y'07gz[RS&LNY6S^oiFUU!7ȘW< <_V{՞/s?ؽh?o)/ft'0&RK
)OYT.
kUI+1/	=[4TdaS]^*6/gPq@J}SeMJ'Ii*tSR}:<oKVM2cģ#ߠr>BOCOW	=-:oè1F"uWҩfO\WP
ͨ"xd~[)4Av*J=AjOEo
MeM˗{)!ƚ@\Yɪ
՞z?\mP7iaJBOmQl2tH$	3࿖|uUࡍ[Cz3ZtzO-Owxq>cTZXYMʖJOcΛUlifj귩D7W]l4ҼgjSz̢4Z5~tt5@n*{^,rOS](|@7yiםN6fѪE?3K\vO~cݱ_Uo{)?M!_]V>YVG'08 3vunן<~5ѣ6zlzCMA?W
(5T-Wyif߇y yi@g
&j0C<
fj0K|
fkp4A4(`'hPAɜȩou6O S\>S4Lfߜǟ7gQJ{o.C1چr1ZpX7H{XI)VLZh;32as #`R#'é|niFDa8#11b8	bh'800
bd0x;a0c@0!d`%﮲lEbɰ9phpHkg02dcX8q
6`x"T*l*p
jQw٨2.f\¸q9
ƕW3a\ĸq=ƍ3A=l.cBZ)4-4ڤ;WG+  6Z,efQz"s}/IZ`x2n'n4slwj(av*o6u+j M 4ʕ)&sC2e^bx}HGՑWݰjj绠lƕ"w=}I_uav97'7VE:*0it釷FlM^696}6IяGqm2H*s:#nLv%%W7'WЬH玳u}ɖxK8o7W8-IptŰ䶞)ycagW('~U_#N+.SDKXjeh~ͭn4cBkw(w>x^htzRY4=T([fڲʖ"aCZ~{'P_eLbR8dZnm=LcpxbUZjܦGoC0xw3@k'<3ݙOKIā)-ZD_k۷>dd2$fmfXԶElkڶz#V7CizCT-#H՞ME	]"-b+S{IE;^c|u
Ǩ)3ӜI4}fo)<=l)M=`Ƕl3"֘krm&$ج-ƶfzZ{ZԬ3ct頟`g,Hz4~P&'$;u	hSbG؞nN۰^22F K4#н4'Jb$ٰ6M
L?,]2u̊\+sY1MUe.3MO[vM՜l~;xi)d5CGd|eܷWbx>OQk{͉|ct`@Bs/+\ڋxg;\{_3-\E24dTWϟ5SNfvf0,.,9Ҹdh=55kNJo5HC`hu4'҅RzdoBmT֣\%(G.KNu{o=څRzto=ƅ1RzLo=օRz{L(*IO}wz	63e>xG^gTX)ӓoD#o2vSݛ?ƣ?AhHߚ"?a
0vs͂'jtŦ
knS'\?xCmҟoGvA?N&^X
kA\</0PV38^)J\)&:$q`mnKf,/u[pN['KV|ԍ#AlU#DDZ#x?1뉱4qo H[xq ;C83	;1Ih%&c	q0/#`!q. Q8?&gc
8@LwiNttKtL#fmq>D"f0$l$Ldģq7|8 NcXI)2X<x$Ӊy87gs|8cĹ ]㱋8b!,Exq!~D<%b	N bD<XvIMt:b<Xēq)|O".$bO 2|XUxыhb5'ED_aNuI71p*TGFMW&|%Mf؂Wkp
O q
fKX9](h8Gr8T||r\p\Ws\eƱq\k8r\QWa:x
5Xq-pl:p\wr܀9nD	p܂c9nū8n8n8mwm7p?8c~цp܋p܇_plS8m؉9van<сnN88.c89=p~xxp<{9E'cf Vs<r<8[9:ag
g&;gWq2K"˸xox
qro4U8wQwC0}<C\r|c8>2?c9>C;8Kl
;8p|s|ws|^81|G<'3/7rqp$n(	s"aVO%TVTVVv
OMO'Ms*E"D>W|";E>	",#q]A➠8qkH`8W,XOjϙ"7D>""l#cD>3E>||v|D>N~Og'*)Y.'y[%UܳL3W'EX==O{<'Y3NS,=?{^+9Cܳ^3_zq"q="q&q{?={.|%I{^,E3P3XgG,B[
ɧ#FgF@>fx}:>
bc>P%bbO>>W}."yKsϽ>)ܧ쓩O>?*d(V+$+\>_(*sOe}nT٢Ne}}WyF٧@GLxIɧ]A%|F+ܪTh%f%J>J>),TTJCA砒ϳJ>_+*R	(ܬ󴒏ظˬsrOr#=*ܦrϗ='(`SJoaKg/J>!%ճ=#{+P)U3Cgr=9=*d+h=6{((LR9Ogrϵ==?{>SsϓJ>/)W#FSIUR٫sru=Y=n{^S٦3FMgr|GaQP{R}{"FǬ&=encYm̭9_:r>,#8N͡[)fHG 
Q(GwvǒюBG&XǜSPK
7  #  PK  C:U            2   org/bouncycastle/crypto/engines/Zuc128Engine.class;o>!Ff
0F6̼;FJFtҼ⒜Tʂ|Լ̼bdC#TW#qZ XXL5|H^Cb!QTZj"8@'7b`gs~J*!  @(	YZ60JylZ!gʋc`	4B`X	 PK[17     PK  C:U            6   org/bouncycastle/crypto/engines/Zuc256CoreEngine.classT[oG>m/-_mw
&mHܖڴRC"Q?T/HU>yH/rԇ̎R*H盳\vf`
*0B}	dIP{^|elX
{Cߺpbo}f}ݸe5FQ+^O`Գ	.2-˙똕lF8k++ve%gu{vcxӴ8
>U<nۦEv_V7\4*C+GTFJ0YJYBi+\;4-{jI%]Ӱ^Y3;,:~gUJnj߶[ia4numμ[kw~ΪL<yn9M!&äSҒlAx| "m:)Oz^6F3]4[Mͽ"Jej5 C0#	@ \+x5 c$o iЉ3TH[i%ed	V	`yNpCC
xη[5vXih4!B /De0_b
E㪁f 	v)ַ֟@?R)B\*
hq9-4fL_CM%ѻŽ3-\	lN	>/T[]0xC\2$AUUh)
QK){'p<aOxTahHDSHE<^C6~+;:rt<EQuTg*&h9A6"p9 ]D.uw6l:EcGpڃZء^"}!u	mءe]洌ڈC+SRm><~+:a3̇0
`#Q2|!P(:SUq%3QȎ
d
Y(4CP0vQD>&¯c:.d"	
I@ǔ\	=$$A\D6Ȑ"ª3YKT!
鸇B\%:Ƈ).yq}]qXm]Fe*+u؆D{)*x7-=GlTte󥲏Je
*aTG?  q1[*}o(0M9P
Op9PK /  {	  PK  C:U            2   org/bouncycastle/crypto/engines/Zuc256Engine.classPj@1֪ԛh[KE"
U7]	Y!eO~TUAbvfe~ d(	PsA$CTsF"uJ.l(.e5Ocyb967YvrECoR=wiSS!j6eEP&<\\y(i]cW׍jfןF@ztw:9j;ޢ.Gq&
(4PK*{e     PK
    D:U            !   org/bouncycastle/crypto/examples/PK  C:U            1   org/bouncycastle/crypto/examples/DESExample.classWyxTWr'JCI퐢$E@>fn#3ƙ7Yp.նZVZZfhCZZ[K>fˆ~~w=}<G.@ V@c xN M+A39hexxXf斝Pmn9N@B_N<'ITgZwIެ`MǂId4=M+a tTж.m&cA+Fc;D+ɂ;\goต
&2؟MD*.2ie;=moMߝh?cH1b(pK(7C~;m&6HLԒތG⒄Q3uThʰb4Qc2C)Y̤'LzAMiF9E"i+zn0-3V6Ec&QdR)]rNlHڝ̸ӮJ^Dy34O3~8kL"G`i;2-că4
k˦J#,/)ILٱZgKL(XQ%%UzYZyL):>+]mIERtc2jORJJԙ5ӫ3G_22Mx'rYzZ+=>BDǣFƎ˰S<VeIݭclt[!3)32&us|3nw`\ҥ+Y+ۓ	wuvuƭpWE2OB&&2V)sfb2\/Wϰf<kfã.`AJt+_rKшKQ$tf]~:!8+^q/. =ΙGжJ")W $!pf
H`@@Vnmv-G%{.\yP]5C_}ɠgJt}Es,MajJ,[Rѹ
(m0KH˯Rdlr~,kǬbnnj>شМY?8Ͻmqk-b$"/C-4"a'Vkx>^a^
հ<נc0d`5g؈EX:4g8p3C3hXR
QX\!`3-}I^Ơ^ЌVixpvQWݵ;p'ûޣ"21Ux'&>B!ϨGLS*0>"OH}Ta*RL4*Eu4Ҹ_s*qÇ>QVU!b0|GWqx>pg	v9QkV#MC
j2jF?jb
Fi1Pz>%
]ݏ
'LN"EՉ}9|'oѴN!9|{?%_ސw}q
#[Vmwet_?=MOTw)`|G+HM[2D+4
.spã);\vJM%ѽW;ID&18.y2)SOS'yhky|'֙xP&&29urn?∟vm'aŸ3$F6uH%S͍%ţHk=zSO0|aL	kn*ñFBSO<~B9?Q(I̾i&jC7`M
!{]it)YenZ srп,CM̦២tW	|fkl*(L:q|ǏM2:' 	+NF9.@T{Pbzizu؁]<k]'Rd
	c72e[8K_uK9aQF5:o#Oqj`3u6zq-8\=E'
;[MHԈ)Nap
Cd9CS18P5M4(EM>
}~_&
P(wq*b'!
0y|#'{Q*̭W"'I_:	2EIRd)*(<VᔔTOUJ"OL V.[qQD-2uL]+I-jRdfuc
cPKNz    PK  C:U            3   org/bouncycastle/crypto/examples/JPAKEExample.classWxg~/rЖK
Tv쨖6Uu$nh9KYܝ8l(Jٳ
m %eP(d[.ib=?$? tJ+:.T2-&C`}W	-G`PjC\+p#O'D'	 d] -pP +0./Yx$6jNsR \Z[/b}BkZ	}=+%6dl촣M8FZԺfXIvV.ic2OXtaKuw
[	Lh-sV_tM=k]iYL9j(xDE-&U².	ScFꠣ?1KXHx:Yg`DKO
c6Z[hIm\Rrm)s-ҭtڧZ|(sE,Im+J*O:M&B%-rI/4/c9Me?w}?st
ӔWUso8a3˙&TQB;.,!Qʑ.Du49HMXO|#7ta\9jJD"{w%D;d֐g.q]]C6ǡ;H?ik-&Д6nO1mC0K:fg<nZqc/I-h{qBm\Eu$k3ƠmYwXa
X]^P_Ipx@?M+>h9wȥތS<iVe{F)DD,	P3afI5e'313}90s'vԄm!{鍵Ȧr\7sxj65p:B˲3Q>:Mfxʞ̻VMy~B%l
c0ƍ?k̼rm{l}'m	]K1
K}8'R;f[ÌމwCWv'.?Q}<5?vE <C%C/kpy>Y>6ܵz&]۶Io;JV,WOɓp~+i^#eÐ^OA߱H/MQfS7S2*i2.2)2n<ϗ/"/	+,ȑXM╱b)YW^q^9GA/x"H_fadvw\[=vn)$Bb~
m64+-\R,!(DN¶gYeںwi-~!RTUq#R&6v\W"U̲.UkpWn{Q|@C00p8aL8pa?QZ|PExf}*L|Hų^S*aG8X
ށ+x3>E~og	|K?Rp>i+-}0?cdwk_g6w_aw
'g,?%V'֑V݀$j?QTLw{<2VW+i$~5 I&@2OV_I2"3812G
Sk.e<oh(o4)̋I6ʼhhe(u#SC1A"ND*V1!RjUΑiiyRDgRcwrTLO86*њ\UxP9ŔЂZFxSU"'QU_WyT
lր^ͣƢjGPͺLDk!X7Pc|ښ@JPdKkrN ɡ8?`y%%3nRglXwpZXLᨃԩTm\td=wdKK yEYݰH]Hu"E}')~O8RicA	}*pϢ)Ԃ7qB#	V̫i=RA%o_hKd4 ZOZz nh(Hu3mm{PK|  .  PK
    D:U               org/bouncycastle/crypto/fpe/PK  C:U            +   org/bouncycastle/crypto/fpe/FPEEngine.classTMoU=ĉSN3)1۔/8fóbO;iÂ]%$$6l 	0޵?Tྱ%<}9s{M5aQCBCRÊSj|+Ho&uKN!MNT:l9}#X⺂nw
L[̶>u]	HhunrO\j䝺Ŝ}t=`=:q.7tm[V	faTsuf<Xz@w9ۭݧ;=f,בqZ\pC\l
׳DKi!7KXFguxæjQcIvx	c,k3-6mmqGH,ƈ]*Qɵ}
07U˸^#[uN:Yn&UK>E>
	ixj&$M+,;[b%g]?*=;Qg
7Gsyb8S~bNżs*VU*TWWU\ i
xT8nDYxӠt"5G/_B$t#uw*v;%$}Eǖe#UG
Du,aVYibx'˸"UiE(6Jsף$Mi.c[\07yʎ[fhnko><F%
bQJ!/$u+U#/wEKD>23?"=Oa]zدبĕ>|%J<Sh!=~rodR%rrL|3f&J/1-2¡;~MHQP*2aIB&i&͟Q:"|!87? 47`~ؚO4fJ63&t#"#B
^{ :x֐]+7PKk:η  >  PK  C:U            .   org/bouncycastle/crypto/fpe/FPEFF1Engine.classUSW6	TnQ7jDKhbSQ*bK7%,,KK_:KLԙMs7 N3swwwů >wAWF )!%>񞄐XHkĢ.!J|Hz}ٴM~ra	UfjL(X$AnQ-:`xL-6c%OZ`ȨZ0GeegHPJO_a< f].n֘
ˎS,
5\cq撀2VqM~)9-u!a23N&%gw:؛Bp=`	Q-ӛ!k>jzi"c
Xur4ҖaybeÚt٭"+nٺyۨTR01M[NX-XAej))iNojX5Bs.6ғY=O%i%lvײ|Gwbz >;:4t~V؊'6oJ}M+=:t(dDN٤xNqG_cM=2>qV&c@Ơs2R22dfL(%ZNGt%.UZ\/}=i(R{-1~@$eWߟcH6kʊ|<R^+	._Sz]@#TЏV
脬"
N]oJTy(ȊYN)\S>W!
bBQ\W'vLf;Q|q܊2p[ W%0/,
ŧہK pSNNŵFeNHU0$M*Y$_b|a+۰<YwBr`stŅXpU,G舵.(z'{H؃kK@ƄLbNje\SSH3 #9hd?}M UdR+8E Ƥ}(ƅZo{$`6x;X폷Y;`m,}Hcp/Fr=>HAPE!/PKS'Ǉ?  D	  PK  C:U            0   org/bouncycastle/crypto/fpe/FPEFF3_1Engine.classU[WUL,m%\ڊb	
5
m
Tqa&z}ŵ]6orY$%(\f|}w|GЏ&?Z
	pG.K;bj1veGN"A$o4|^34g$(PFՔ.2$J]:ղ|%R-Bi-$!D9f(%B}4S\̈91Ll4"Pmnа0vf]miK.4ΉiRW#,
gTϚ,^%7e$<&GAS纚6%4Uc.,W3B%M^.ͥS4jidY[3	.:Q]5фZٵUa8ʹ(+nyNof
{-3IJf*',cL+ۓ2i|Z]Pz(
Gn̨[>be؋*f;:OݮS{qIb[هny|Y`oe	]{rV/s:RwMMd݇-6QdKGEBcpc:fr6lq܅%sME;{νg2^!#"KFQ2dqFYڅa	={v+
wLT]Ǣ@2W&>@NߓϣDIs#]:PDz]Sev,\b>
Ѭ0R2
B)8Yi:'Pp
(x/0Ip#C(+8

:00p#aG6ܻ F"daAcXfX	eg n{ .#U@Cڐtʤ畤hb q!(<.`~1k̚"V
ݑ·ѰfOfo_~Ϟs5|[ j%Ȉ$M䧂A-E݇ÈUp޻z+>yϊkJΏ劤Z-E	u=$B&Dxo4R4K5C5-KIOoV/vkCh߅^搯iԒk:VCPGoPKa)G  	  PK  C:U            *   org/bouncycastle/crypto/fpe/SP80038G.classX	`~$cIv5 JMrB]
!hewlv̈́R
b/[޶hlXCV{_V[Z[{(U= K|o]'\502 CkdxdHr3@ḿrֿD$'n;
LVyDHMYl7@`85Ϟ'I
XTP,KpyQZۖ_olí+Vl5ᚖ!ֶsm׷uu.rPD&oj454{=鉤2j0*&8vT*#H"ؿ.GM;2Z$bA3*^Q8ߒIm\n](!#yD#n"-BЖe~<썤+A3]i{^%!d㇍;ں=8ÑS({I;mKJj~@QV-jPc7Ol+\"Q>و#[w,PSx({p1bЖ@rܩõpt;n/k.I,)"-jYIp&](Ϭ&CK3f"QߛH'n'Zh041ob`=-CM٣&@$/*HN'6_	3kKfʱB$/&_}	o fF1>>tDg@<#7cYȬp?9Uf˝HCHM<ǓB8%hD|k$es4ci rcCeC[mnd*]d*`
E3A)L}_2cE{tb͑yޚQF
DP=2ĥYev_I:e\	Γ`	%X'A%H
%,AH	TT[Y;siv,	g[ԍ]{U$8Lrf
(6bmmܘ|D{XU3.P&,1Ũ2qx gg#L;a!?wmѐjM?Q-cq-3RslAVU
+	6CzPiXP<(Ua.he*\
*̂
*AW!
THd0DbPEjNQ1.}*xzW]p
p
sf[T[Upm**\Lp	:
*, x'R_	V;Uh%XM wp>a/|WAG{>K9"3p`Qvw_ 8Fe|1Ty{	#	Dp0_#7	Em?"1O~J3O<i|]Ci#
|&KDKq1\TVqЖUd;]_:j)0>g.qM`Zn܏ctU;[tT2~Ȕj췖7Hv[q%pByE]ż.R+ӂW}ve(nO	a74Ws4>KBđu'G}v]FTPȰŌRCIjͪCԽ#ۇHW"4V <HóiR&Ǽ]RLꕺ]օ}.ݞT]ޓ?b+ofjv;u5C5DOS}e.4-5JtM5W1!N3ʆFWaHJCIFOzQ9ĕFk*h7WXE#pIpJ8	vvJGqh-/u	0ڵnX\dfZy\ȵ8ǵ$lC1qKcuiOt{qLҳtI!&9=2tYM;,/xPMO2ȖWQ$lqOyKyrdMWqe];+Ң$Q3w3;;o}/Y+rkd\.(Q^M<ܮn{C@P	8(8:da״O0^h7`#HU|>U)HNl4U5,gw$KjTQm&[=oln!n^޵#%2&5Z	ץK/_sz!en\OegejX9p]P3Aklë#F60~(
*Os@+qiKkZ[jZ/2żQk>%Xez^:23Ieai\|F9MezG֕vKw=ۙ6k9t;3;Gyg˞elSm<Nl5pD1_
qؐ 9ʅCccRȬRL?ȁ3`3Va>i%D؅z~ixixvZqs|bcbY`eQeEh4{E3}.]>M  z
(u,>^nӅA^m]ʹ]Tdﲲ OY`
-dUuPq+KE"{*id<'FO;X1SzYGVV׉%J~تnxW50,^wu "#p55豼zv/(}PmsOĚ&ajjʻvֳ
r&IXu>\g_y,±u;wVTⱨۭo2l_ϕa{#{VeCj;U(*chqM¼6t%vAws|D7-b^;؝u	-KJU+.]BKuШj;z0iT>PG½	ؗ3h)Y6ZǖҜus
Óq4yp"摲-5KFy0>y;y.Ӂ7e ]i1{ֽp%࣢ִFb*yA`[M<S_ysȲK,~Kc{[%Ap]^r;]vB]h#sTဢ	v6-Eֵrj.,^讦zվvLs١uɉ*ɇt݇_t;!Grɟ
Eo9rrk:3G) FB&LBh]HX0xI`b~N%lT <qPK@wp
    PK
    D:U            #   org/bouncycastle/crypto/generators/PK  C:U            ?   org/bouncycastle/crypto/generators/Argon2BytesGenerator$1.classM
!r9BRѲ"EtDC-j-:@xO s	u+a5?6p^ݬLRh>]ZYEt>)ɔ
aҸpٝýÍ!PC/XU L]} PK,Vm1      PK  C:U            C   org/bouncycastle/crypto/generators/Argon2BytesGenerator$Block.classV]Se~d
!iITAb6$ i)-
D(L7v	[NU%So8?l6%*V'8c&sΞ|&??	،L	"%1⵭:?F[z]3mS.QdY Ut𼉙ix ]*^au4TnK:,G혖E[jKȚv%sޮJ]mg~fʖf7526Z{-FS-0ttk?6ڞ4Җ)e,wMtVJb$.;nlkʺnJ0lդze*ñg&nts}"'f
%M ucNKl
t}tp*яLPŠWTQU1U*rJ:kڍy>XOڼREtBp!cXS$׎P-$:!("	F4PY7)y&)\J`+(Jy\csqNtsLdRob>22Fo۰ܥ:'5[֬ɉMeV-%7$]Um[rrn\c Hs/|$j,$$X[r!?~|2PBgOR
!=>.|V%Ax.'x"9T:Pϲ_UFh&JG.e#J&Zb˨zNVU/)nRp+JF3(wʥYa=C2~n;#nK8Km)4t˿dҘ
rOX)<j	|Ry:/7Ő?f)|EWUFG}ԺGovCOQ{Sw~x|.[t/:PKNp&  *	  PK  C:U            G   org/bouncycastle/crypto/generators/Argon2BytesGenerator$FillBlock.classU[OQN/]X.*-" !h=u)k)l_>J@41>O2Di15!333{9O_ Lᶀwt@B.6@5MI3vfάۙcGvw3s{QJځ.z3gC9fbs¡]^h1Cgc;z1؎yϔ2ez,S,l3zQ͢Kf~"UuNW3:BU@k m%ui^`iyTΰǇh|| [ge/.WIfR<2<PepE2Ԃz0tiiXB'F$taLB7FLQqBF3En0{ͷj;};]^ϓUC,hok
@1tS~'3
(ەUvVHi
yIN1'7?".{eOz[NSぷޅ^%һҪ?6@Z
U,LA"4dBВ>+!|T*
O 		
!I"#	@x~^+X-7w3ZIݸkTN~r3ԮhU@#'(b"(p(;N8Ԕ>{T[W'V~
Uvp$:~jDoՈ Y%iH"P "nePwшI\)PKy4  ?	  PK  C:U            F   org/bouncycastle/crypto/generators/Argon2BytesGenerator$Position.classJ1ƿm׵U^D'=yOcXR$Q$x|(c/Po~07+	ŋ`t˷YN]FZ=md/+VMktʍU&Tm:}|hM_݁΋\vsNI0L3@Q)Q*rj^5-
"t*Lc؝v'밖
G?PKb   L  PK  C:U            =   org/bouncycastle/crypto/generators/Argon2BytesGenerator.classX	xTu>W޼Y`$xFf@oF0ŦmڬQi!=3#ҸNű[h`.iӦ6K0z}w|{Ͻw9{gvfc:9`	s@+`0Gf"ְ9AR#hVsJCH;
ph{MĈ;H;NJ=svZ].T[:(a;ybE
%5J=`4
uvGh|(3q?1ɡxp_GuGC]ў[0F;K^1Պ`OP_og ΀_\#v`ewCC}mm]]ѮXn
z{PEo?7G{[Et##f.i2qo%QID*f"D}*odztgSGĄN`Xl֘LLazL#ɤO<%f;J"/6R4apMǒԾd6:1K=4mgS!7
q3"c8Y3գfyLd>"1fd2aYdf-XDHwiĮ}/k=v,gDDH'27udRitE*\/q#t͑,P?odX:a&LKA3C0Oƌ6Ij*@[Ɗr"i0911B@+ϧh:4PP\뒹N#o5Pt3;̏=AKH)	ǌtK`'pHc9jpy3zrĜyGZ`MyJd*A1`O&z[JqǺ2ӣyt\`|25YVQKEE0ǅ5`eid%"Lv4|431rHvj"	/kw-)ERɅS#f"Rb7dp[v4nbq}˔܀ܽ\Ym˕߇_h]L.i`x)F/ab0uHL擩0m]lA2y܆Mɷx҄F=>iP>2&w6C?9:TufUXr.ψg%>9@U6#0 c`T<(V~V`L+)H+Q`B
`|ى>r*-ah]kk
5ď[fD
C0jT؄7%EӺZiXq۾qWw,K#x%]-?N=zbIhҊ"Zr7XG"C<mgd݌DX
jvM0%κ4v{Gzrپq`!#T0`
G	&	>@[ B3S	UO*'8@G zpJ~NpMCUA&*!XI5*|`7ԪJX^TxDQaU`'H_wC
'"?{gT3*DYYZ
M
SIzy*!.Ra}sUThT8½*l_Ra i+\u0K+	f\Q+|~/	_\.x
~	p_%5&		H'NKe|k@DoN3G%#{uDE.\%.5	|	>GA7.q6GO	x%ud<Kg.oI,5<H{Q~>U~ncb82n\uwL#0ҁ=H!7VЏ!XAiwoq{>nI-n`zԍ%w"U}U02$1Ëb,>}T^ogXtGkYeC"FWf&fXUmU%5Ø
hDbҚkl@/U~5ö_e既$u\5iyIKlk7<ǎMR+d|9Zd'5V@>V`5H95Rim6`Kُ};o>mwtái.)n )!|
2irnO2_''}]oR'S+cnZ_-!֠׽g7m5AV`OW_+ksB}O:Ux7u]Un۞z+7lGbkH-"kx&_0V?-ǿ:-!1mC,
۰J8hV=:)8)PEzX94DvȉcÚ}8R`CA}2|c؃ulQE0,@|f4_jI]n=uX]Zi.[o>t$[ k!k1mpS(M-5x>fm%M86B}W@C^Ӗ8 a<ՋL3&ag4䒋\>YY$\1{)GxiZIaYb0n7/U$myIl,h17
GD[EJ&jHu3"*S8aqjI< &B/EGֹUG+:ek<s˪0ELHJϛAa)q+W-V@	M`չɪMK[Jޜخݳc_eC腆`#u@UѭKHĐ߁~k౉)9|'jJ%r&Ƈ[AxjXn
xqJOƉ[Tm*!^E}s/X;lh!{-X	~tg~#AxK|A(>
&
֖G*ܽ>f%q9.%NiSm }	np%1ڣJi+b\6stY|v=Po¿).XDS,E욽T7c4M,,{}t%?Rk@9ο׬*z` Wl$leO+~Z֫Ԡ&yc&(>'ɏݠ-huB3~"ΙEf͎:6r*⬏z9gD0Vxɳ~Hɉ[09nRR!;2!gjhDDv(@IQU;HsUIaQ$(SC<VenIv=LaRǽR㫩dͩUϲUfG{W~hnm%ktu}?2ByBdDVUpѣOC\6u~r,[c=k<+8QRq?Rnz]YfE7;WY
2m$1fًS֤Y٩y>+V,|
ŗ2g)F5U@<\6R}l[";;Bo S')O+XjXlMĽ6$<0m>gم^`+.ǲMC,7lʫ>	^]iu1/TeAGtt5<эViJM
y:R6]Au6܄nq9ɚW	/uD4XƭµҹԝӁ&V1˷ө{0y21S)?]
m%r*fW񓑊kO7ĳ!u3p O@Ol/?jPK  #  PK  C:U            /   org/bouncycastle/crypto/generators/BCrypt.classX[6Ys)AlBAP1PQ$D:vA;cb}+>3{1k֚79cg(յ:i c0}Pm8F.]1fvc:a|hd:ƿ刉u;ycb|L̾>IoJaj0i
;[`nl̫:2捞U/Fny]۹.EZXbU,Kr\5,99VEխ-c`M5k&O]Xa
wj{ 6OI+WT7lnmF~oKl;.~o°s`:4gQ}kvؿ2tt>q[8]'R/ĩaps@qyx	YMq|&?>EٷSpHڸ01d7.\sV|ĕ<4ea"n˩]w-d^Ž[]GXI<7܈gk'x1x*i,^9]m!sNi۟i\|-Y9ˌ؎FG{t/>O;K>,
g茌I7͆C3{C8z5ǞcQ2%Gӏ;i(sGʍ
{A9MPRUE|?mƨ,/9.s.|[z	^E
ws9i7[ok!?I_,se yufzm^\Oj:u3Arg8·~hP4!hZne!8e˰CӁkv<45	ͿΚVW 4-Bv]pM9
 Dh2k:;]^EιU-ZBWD׫MشF}R)InfneH~Ǥkz$v4CϊggЫ5B$?I[H~]$	)1ӮU";iGF	:À%t,=_=f[*[*-gK%)G%)Xt
B:u
omK߆]m֩?/BĻaW6db5^5LNpMIp"&޵{ZJo^^|Rho\kdgħ*=:?&i$]،:]Vq%NJKO_Ovk;yUEY(6-4&U_7n$)5
 _mӨ[Pp~H+}ºwd&4U#6a?v-"t,Bwo~xT~NlḄSSuNKΎMI&mLbBpr\btrDJHrIl6rSҚǳm-7Mtc䷌NH
HKLN`'=1)uzW<<CMLΈH	7;):9۸Di	3Ƨf$Fiӓ]ߛ()i	1)줣3٥x7ΈncZ'--v_m33̱vXtl/8obLٴLtjZJl|zzDtLbnKnOvԬd㎍NwMϮ]FJdDZCЀW0tF2uЇ+M&
9a2ԫFމI}^9.Ml1VeF<QSYun`=v0`̅SNכּ?py|'/GN:L68A^`҆z0ZӇ)^nɻK1ی;\4/S0mE
L;^}cz{uL3fqƌ1c)f|33NYw0y͘U>1fU*T¬_1^9`ν0米|=]0wԫy|%̳z"8bވ?1o¼=[b枘jߝ[?vmBn^ݹ29Gcy%}-<y[ y{(ohdkXW~%.XUXn8Y2fm̷o9,|{!
86Gby:B:X(1V&._&aa`g*̢&Vqjb	X}u̨kZǦ`m
Xn<P\`݁,'뻇ǆ:kb6F?Cj&M-MdlnR6[cؒ.[VvS5%	wcfF_[tŶg"U/8nCx^ȟ1燛aG5|l:vu]{vU{d{bpsuU[잞<swc{}G~{+߲PKQK7aoݔ&+{ǍiVV/O7v0.ݶ,-kq`E\ؘ{8\=Z`_߫8J8<ׄ!Ǌpȷq5;xmȶq8\UN#"qd_,{GCpnM~}GhD}T
mc[Vqv_'~ŉL8%A8v1|S8!VکpSp|Olg:8ř8)d&	g-3c61h>8~87sFs~$O_c>1.{kW\Ś^J
p1w7\\X?%}p)t\\Zepan"ص+UJ
ƕ@[\y~v
6MT\s^꒝^g͋d\3u]kÇ4Y^#\nxǍPn$*7؟%V^1b'\Vefyn{VCթ/nT[G4=3f*n*;5LOG[`u_wW޴ݍ{q}l{47ܯuz;xzABx;x\:K	MzeWk);<*nGk]hg9xt<z;vx<M<eO:V$.^;O.'Fi=x:{G<+eVg'كYiF<3Hm۠<^/
[M22"^fFEyxUx5n:^(WFƫ3KT&x{ڊO~.x[7)UZ}BxfSo>Emx7K?	.;Ļ[ݧVwk5a~hZ7cUl*>~-;
Om>]ǧ)C>>3ӊQ'Cϡij88ocF,wz7+;2?zf^PEaÞΣ4,ӱ<`[JTU 9 %Z6dO7=BU6r+Tqͅ׎P>}h[}8]3k$Jީj}3`fv=vgŗ`)[amVXYN{XUVo
Z`]yuX7
DK&3}tl-`{5Ƹnʷ>;[=x{Vs")9Épx'^N=)y-B߹<h@ObeB3P,fcLf/TfLe<W=a(>?JlA5_+pdGsX.J/Gz(<x&3T6-N{σSk
OhR9=׾Op.p.a%\:cPzAp
wgsWfFEuPEp1a4\K(SXMF.Є\g(W?5*(7g
F;BoPa@0{T\oJQ)gTʛ
χ[E_U[,xwTu7w5<Ak/*o'kZ^}x>ܧsr_5Kvk1kݕj{Z{f*W؃G~>C{ᨱG9{փ3Yk3j>5\ZUoND{P;ͺ>Su:FII^:_
j_uPס?zlٌ-BY%֌MWaUszb`S
5!`㨯$U*SG̞
NZA%hE}ѠG|Zi;:ԈCO1C}bhX#_GQPnv
3G8D4p{Mr~/&|G>OD;l
h޻D[41hx4_9c
CNh6Z^XZA[˪hY#-B'Fzh1Z?	қՖZ"a5zzH)Е Gh]LZwZ[d7Gr-Ѧ
h(kn!ܫj»9
U )J#qDש)Έ\km\$ސS7DSU휞F?Юjotm>,E	ht,?/B;V:xlF[q̇x:^ْNAģSw:M
>B
	Ҍ5eLo~p)tsp(DD|Vc*/GTmڈ&{D0ߊkj ޠqv%bV)jßAG
E\[dq.>eF"0tb|EH-n׳v|	=.G!5rcl=nA"HY;'3T=~[Ы܌35&=^[BRYHjMwB
f!yEO=BJ}H	*
\>o]D=}j]E#mKk=;Cm	ȴjjܐ2}Ksd~\
YG"+x_d-lWyp
;R~FcMп}^1_نV6À1`z^T
,+?b!axf1?!kzÐ:[RԂ q ,q brkW5[ǯ:!ˮ6J!)j|w?xdA4|ІAl#RFylCt
qP[
WېKRLyeC~S^ېv -݆iVZɣ/,xdc Z/wk-IdYk|3ohy10y1ZKrxh#yҴQDhÔ䌶I|;<#:WT=Îğ|"ثDQ>)D[^P/'OoFn_~"۶eOmU]klK/?3~myYK}m_/m+JȮ-۳)˶@MmUa:uC3(<hӜK/do?A98+JQKcp`<,Nf`w?
~f&3Hvb8^j~&s{Eg)|mo2>G59J]^U1
eE9:-9fI.іtP!,*^|Zo]vv|Zo&l۵0ώI0Fώ0ώٖ_MLDKςzfEJ6's`H)k2	g\*O1C@9Ylxh@)f?KBwņB?%u{lۤMWhUU3VX5g՜UV-Xd+ꕲoH g{EJ.q5/äzAE;_S?M\3qU<Mf&-49*p-[zVvm'<ѩx(WjZh=م ?lb
B~e̘Lmêse> v5V=gm6Y-R
4""r9r;BsOvXPlfͼL,*+gi62Y)˕~&:cKulڙ,GFǖvl)mɻ62Y1,)1,؉vOUJq&'d?ߔb|J*5۲7|G->e%A+/PҒ;Y{,+'K^{U
*-[mn:Ze8j۵E؆bw標j樁WsGU\>%l7E28_kq^o93d@	Gkq{+4ʱ`6*V?%Db%ɹTBbE\c2|+v7eȊF>l_68Xx5&Xwx7g(qܥtfdR1b:gݳW"c+-?~{£a~1t6cFQިoT7=Bci/ciaieYDF`YToVciul<[Eoxoyoxoyo5xo'EoEo	*ћmU(z+zR/ʲ~IdY\/7}<zCh%`Nzut[v.9,]Hete,YףXV˱oeYI/`of鮏cWeg;`{wO`WoʲȲɲ~~eM},Z,kYуXYwfdY_Ʋޝe2H˲>eކec=e]cT2D/ò~es݉e}8˖z/,C
,S,[mYы˳/lbNŲ²>eGN:Xv֋/gUɲ>eޙen2F_2V2N_2^ɲ>ee}6D˞z;U,tu2Y2E2UƲ2M7LXf
XfKXYfYӏ`9@r~ zCtP/2BK^
^Fak2FX}/2^?=/Lsy2U4/Sxoez)^yeމz8/cx+@e~</,xYe2}5/Ie^Uzk^VkxYwe^uN^!ly٨eނD^蔗/^3l[Cen.(/u{^=x)-y٫;O_~(/P^^ҧr4U3y=N^^OP$U]y=E^OSgYV)@I$)/Q5T
U-xxJU1ר֍T
JzyE!ߦ[^R4UxOx}H5qEUqiQ1U	%bRM3
q<k^Q)7˼oJy@׏Tw'
qϔUǭxJW^Q;%#ju^(BQ>fTe9%lŒ/lW?n%-9bT'Ě1w2
WQޖQǌ+@sFj3J[1\48~nUWb/WQ>lm6Tu(lyi\8QxNUhA9QKG1SGʭ*g*UݸvTRըFјGA57d%B=
NT3SU|zQp(R}G~1#jT06R4R<Rg)U!T4d'w|-)8(B(%C8T5QJSI8U":HN"SR;Jpׁ#Uӝ(Zp)츌ܙnGh
s#%!j|+v*oҝ?$P|HRHI<gAIJJֽ)VRLP4.KJ8{)/?t%%Φ?%1?x
z.' 
OC(<)'Uw	>*T] JUAHJ(*(%oRY8J5|!)U[	J)?Ņ©TNc:.DA*US)+lJ	U)vVZ[JU"Χ<!+լ}%T+!t('xdj.X?XJ	d)#D!jg5T緖!:
z
4BRU1?VKNK!FI0B0B]]JwVKKAK!襪z/U|/U%_`ՆC!C`s)@
cXm$&5jSjy)HR`T
u7"z)0R`#D
C`_CআiR`D
H
IQA
kR`Rh4~+VOIA[[HrR`5XcX]i!p3CR`5	<!p{!v!p;.0qRB`WT)2!0H$F*&X+#K
\%SLx$V[R!0K
կB`u]
B`DHOaRB`xB`	B`u&V!08)p!QUE!XRB`<7gjE)_B`2JD!0.-̤/RWB`YK7
UMc&FX]#F8F
\G
ՇB`AJ}}-V
Iu)p?!U
' $~+&RB`uX&&	RB`uxB`5L*B`mj{)
!IXked!pS)09+E)%ZH_
R)0(V7JR`V
EJ5/)09nF
("d)$
)ZhXs-
HR`_
.kֆR`C
KP)[
.1$R`!
CR`r!:)I
LߔV
IR`G
LZ1`C"R`rR
L.[IfR`rT
vk!C/R`l1M
~ц
JJ
LJqZ
R`2[
LJ՟R`"ZI;)VT
.'R`!pC`)0q[
L^IE)0	
KJ5C|)0זkݥX!V?l	R`O
H8X
2n#J1	<߿rU.0Y7.O	U/!0!B`U|sLU1!0ėǔRRKB`U;	qMB`@B`PLKo	x!-֊	Io!0y,R!0"&B`RUL2-md;X5cX!0'&B`dRB`M
|[h)_jXcX%VK	B`Xk')VB`X}&~-&$VLKaU
Zf)S!0	wReR`$\XyRB`lk&!0(V;	5O)G!0%֊KQU!0jq!V]
YaRB`rUKJ=))Cu;Z):@
s8.F!M)X}+VKו!-Cp)VD
R`KIHaR`5N
LIrR`IJR`!C`"&M
^)0KյR`P
0N
H)0!po)0,XMY
=R`R`U~LժR`@
O)0K7)0[
FKIX+!pX!p5)x00~&&+(k$@
vR`22Ζ#Y
UR`Q
kR`rN
,)x6.!uChi|J
kmR`$:3.+VIջR`ILCYR`L
LHU)00'׋ PKՈgh+  ?  PK  C:U            >   org/bouncycastle/crypto/generators/BaseKDFBytesGenerator.classTS[E\rKaC˯6`
XZiƂ
"$KzKn1>їC^|3"E3I:go2dٳ9{vϷv J m	 Ʋ^gP4.J#+]dylSܧdf"n5
ۉ⣪abdղ#%Q6w-|խT݈)%vĵ`h[mZU-Sm+%ᐡMFb¡p3
V[PVgjƼEviTd^lA1<.Xi4].LCw:O\JfMSy.UDٝ *ac4rG5k	.%WtZ;)Vqd|ֻ}9Onuu.sBy:4w彎9(SG'F(4!a>C]UJuuU؞5nZmOdT+ET+K*TPqREDŠ!/8ⴊT}~&}Bpm\h4zplq{'b7<Fkv2?.z::G.
EG:b㸄	}Pu4ɛс7HM	%%\ҐĜLk;80^!!#aF	v/YEzZS$6(ܝb
.# EBA<5ED
}C"4#}oc[Dę/xϘM\{m Fqǽrykm?"Ŷ	[;I[uR;\QQTZfsCdb#boןWd6Rn(qܸ[	sM=HMOs H	ޗV.>MiT(
O6>P ]lNsAIbn1-n_	%\@t=@ޞ昲4&^ݽ5dV|Ӽ]aPa$WS3?z\ ?]k$RPK/%  I  PK  C:U            D   org/bouncycastle/crypto/generators/CramerShoupKeyPairGenerator.classW[WUC&S)֦*^C*4PE.
,zc2d&L&XZ7Z5aZ.Q.L L$`XߜL~0|
8YSuqcCGR2Z4yVa-O'gD[OӖf74pôtuf|JT
8n2u;f9R4	8Z6-)ƺ5H43EDK(WIXneAd>3l4g8r@dBi.,F
uաTd'IP [ʮbj4U(fdRK6K35c';L^NnGL+IyC-JYD
YیL
rԘdA#M2f*yQce̬]M"YY3Kkd`Ѝ9rX[SǎÚb
eefeknt5rPI˄,odFm_G-:fUp	W?OEi[-"3M˧,]Eϳ
E\qYē"-iψxVs"񂈀Q}'bcW\y5X3+rUeι#ѹ<H<
3Cc_
hnYᴑ>6jrtl-nW57zBwr&]k~*[qI䶑]8ri~hɚsR_-7z&p7s.H\kwOԊ?o6"d⺌ ex"/8áCssxxY2bR)!#Oaxs2<.82E ^m "8&$D6uCZB?6$B;BaöaqHI
9J$&8	QFAO\g&}p-ȳF9iG-:H
$?Ĵ<Bn!d;E+
ûU-2ba2!r.+Jxf0.x/џJZx
%pȆ[D>oD1dZ2%Kwݰh)6k">|ޏz{I'~o~=~Z~,W>?XaԷh2o~_	_W,(jYY9iPK{z    PK  C:U            X   org/bouncycastle/crypto/generators/CramerShoupParametersGenerator$ParametersHelper.classTNQvK]@AQ[,*J
4h?nãozI*1|sJ"6ߙ93u D2(d1Cp0;	G!nqGFFHs9Vy|PE27(	"FR6meyMk|&kpڪ"wWx!,"/lF.zF
ܔhY\26

{sݵv͋άZ4+lO;=溤w(h-*qI-8@Y-)B}	:ks"ueSAI*UheHIHOʑD\hhmOH2ގs|yǃ111yz,NB0
4Ч!sq^)kPqACz\Є у1B1	F$\pEU	B8=0FOג%GMOLCƳ9$Rnu	$w藠>.m
Vrcvh3JT0ܜ+rw;.e^2˴?Jau;l0ⴊ0Y5yq>Dc9ZH|bvl?E;$߯Z;rй+YjiEPKՄKM    PK  C:U            G   org/bouncycastle/crypto/generators/CramerShoupParametersGenerator.classTNQN)h)"rM(jLJqi}"
6`|3gf7s?a0?bdc(%4C-mlx4鈸"*7am===%H:E|pf#ŷ#Vb[LV,,na'ږ0TyRkp1nXi''vl=6;?0{ROJVl3IVn6+̴/_Ҵ͓mS-\Om3¤^hg'>
eXAr
)TPPR[+1"Bj
Cm#_ƺ\^_k(C&cץnu5/IB3H|d=:
~4J(}
xLC	4hhP*5Atʐ4[c	
x"^	*U`HE+J+>Z+Et'Mn],9xӯ)hs|I+=Id1l*w5(|ѯ?x乃Mn0Y #H!/*,)p1rN_BWv1S}uC}F	ZVu#8['JX3"VIA`TDwCL/Lݪj
NWūVSvVM"{槁f[IkS;"$fPK"    PK  C:U            8   org/bouncycastle/crypto/generators/DESKeyGenerator.classS[S@&-AKTnV@bA00At
mI)oG3Gݭ@}|;O_ $!x"uHt3El:}ƍy2H&[i#\,\Dh27\-cϗicZ$ǁٍc.Q7oQ-9i1Ǡu4F9^tR
mk;Z,CU**QRewuZcͩ[I.jAtMJvW.K5t11Ԣ]􆮹BUiԘu.Ɏ-UΎպS]J*])z{Ej>v50S3	nGqP5Ѫ-(9[T\VJ%~7L e-	>	!	%KpAE	/&I0
s@$~昖59ek/?BZt+Rܦ:Kpu(5=@G9x	O"
zUp1)?&0)č Fq;˸@3!8f[BL-m-0M/?jObb">h&\{cMx>tqś{P
J?`
Zz0"MzPWpÝ&caU;-C9CN#g9ݍD2q>_{A~+a
PK0w    PK  C:U            ;   org/bouncycastle/crypto/generators/DESedeKeyGenerator.classTKsGƒ&k{1	ĆbG,#p8j5,׻9/T.*`WH=!-U\?0It%&12b$+LCgΌ\&H1(҈Ĕ9*CfP5o^qKz=ʠ.<K,Kd,N߾[\cUm\'\A`46f}/x"dj/ȨŪhGE=[<$q"ㄫt؝x'͍>|dFumӁ(<x]8>OPYP'[M,
c1ۨ
jZf(\nXA.|c6Re<r,~#Su#o'8
ykxM.x@!+7}@8v>x4jVW0K]PC.k5ڣ1$WSУ#'R!
tQpaԾǓ,3gEOI9C&2GLפC`mFr!UAOcPя4:UBQ'T1ܸ_ŗry9sJa_I1Fi4Σ(H1oҸiRk4hbzb
	6pr\BMB|DMf;s[9AHE4垖t_zW\U*G2s,hg8<О5l7޾ۡoae#H&IՇdr9Kߓ2ĬlP	X6֞+Fɻ?[tEDn7_rIPKM    PK  C:U            @   org/bouncycastle/crypto/generators/DHBasicKeyPairGenerator.classS@ǿbh*0* HJJpZRGǟB!Lorۻ/ xۉH(TBܔrc̒Й&sҙ)gr.|(0p6k;z٨uFBrBiRz-%%Y!Z0s2'G}y!0u뽽J*Y2Q_ӵnGf'vLmٮZF]4éU<[tkdFWV1t_s"M5nPNv!QwE~h hPk˔P^-{>:v9gvDɾ	W}<ʴ!PEⶵ4-#G[s~:igdt8+㜌2.ȸ(㒌2zd\qU5	)ǁ@;ȶJ:#Ѭ WuoEf<HCV?1$QÑ#&nғ;\`!>Pt@3OLx9
r]z=HU?5TEeLv_*:Pq*ѦB=24p_*0,fGDHE*:1&ø01]$H)IwLA
ΈfV fJAOD1 izS{FɊoыN}74&)m`+ď^c5(6X7~ Y)uֱ\c
sXm+'aeAr^d/zoqr:-+(n!Z
dVPKjj)    PK  C:U            =   org/bouncycastle/crypto/generators/DHKeyGeneratorHelper.classTOY.t:mwT@Fv]*jE\P-m5å-bH|'_ɾ/=gZ$KM`s9;/opSÙ	]+{zB :4bsKyxYU.U.Wn͗ZoHZ\^7P#˕I)kURݎLDҳ
6h^"ɕ%VucРtrC:>;R@w&bt\<T	JNR+j_9n+NIU u%:sYbUgPZUEgRD՞WLwtU'=j,^]Vh+dǪ$knH+O&M8fτM?Dv\=8(/5JNeg[Z]Lerk76utB,Wl0UQ  PB?[0p!6HY8p8-3$qBF,`\C8Åp9A\dg0;d(G1\bfO)`Te>YZ,"82K:L,3[}kӽEB	'#u'Oq*i<$Gq7Y#6lc=gƋ_?L:B1xW18fwyM
#6m9${g+I#DO;8$	m;71(>hGxK1	8&ljJu̿;(NO[B5HlkLwdh4/PK /I"    PK  C:U            ;   org/bouncycastle/crypto/generators/DHKeyPairGenerator.classS@ǿ@((Ў?p`Ij2J-8帗
@gz{~F	4hγ3OV&)JL%Nnq3Ŵm8iЬ-Qd$ܪ|ʯg+m1K2s#%&rdNgΒ&.T[aIGeܰvHI]Uɨ,o3>)+V
s2LBֱ\aLن5[>v7|Eb/_s"]CY+.zn9"J
J:W#Ccj>h[Yf;#|׏VNt>JY!Ze3y܂,<YIm +ڥucp9`f-"ZEqG]D&]E<ЗJ=ExUQOZ	nQ-etn@\@+{ұ&x_2qE9\9EG}vT*k;YAkb<imRB<6߫ZX?z<}S)ʖG≳Owf=|5
ɨGXcʨE}2D(2n	e4ad4bG|xQ^ C7$tୄND%<Äx'3LfZBfRI"Fb`dxBԧH>濃!FyzVVC2AO+*`T+H{YJC=ɱ=eP[.C2-biCu}">\PKKqM%    PK  C:U            >   org/bouncycastle/crypto/generators/DHParametersGenerator.classSmOP~.Ut0_kmTDD5መ/etޑ̟/eD?xoř0osO{{׷ VJ3r5Ě:L
RWS68u<!m0-&,Gm˶:=O-z
lEPQ8k4etZܷ }>	VOܖ̏kI9j&t\q}Yu7P8BWqV9T?$!ہ;ֶtHQFn\j(˖_2rSVTwRշyg91NH#z-ը)w|or5PtHǂi,ꈁEFGWt$qUb)\5iKsCqKC
5\!MNC~!+XbLH9_R3څr RY<+m&y s4ƥA8#eC7=,
*./G{
bWX:J>V+b)=P#V_P$XKaW)˥!|E/PK>    PK  C:U            ;   org/bouncycastle/crypto/generators/DHParametersHelper.classTn@=C8M]J IvH,[
t"0q&U+x#BE
 (wܰPr޹7 b!$3="m-!<Z#)9B3ྸy)X_U"[X<pch)pɝ8ɨ?*.͖7:9E-|=
s{¤Im%c*fʾ(
!=aV\_5Ԥw29n9jrϷa˾c9gL^./	_ea/X$}jN쿈=aS-YFW.Uj+ܮc5ТUCz1Оq#rub+m0竗?_
S/rm*4Qt%(`:CGu!{qX#:4ձGB鈡GGt㸄Qt E'NJ0$pZY	؇3QGL8y>7_s$W7%}H,!eҨ7sX,`z֍ɚ1MhPjB}nWVRŹl5m|P"W:w:O$EP:{dSnKI(91
]d$QT泆N#U7OPfiHa5OUqQ*
Tm|+?_%&ё.<bu`PKVk    PK  C:U            <   org/bouncycastle/crypto/generators/DSAKeyPairGenerator.classVmWE~
bˋJkm @c $)iԷnaMw7QZ9g£l ,%ٹ33>sgv_LvSf-
_Kkd9V
ɕMfVhhxif^I0=ٝ<Ӫ؎M5z,W-F4i%%lհ<W0Zv9eQ3guf1˩kyrQk83/)@&l1C/yMoNoTG-39n}x֮ZSV]kwU61Qe{;g?؎5LhNʒ[/ӊ%J9G	uH6Zà	3fhS]vBln0@L!Rg$iPlG^+FǮ03gz+sB7À-P 0lB<ƶOmQ=gNlvp~
2M٢
wS%[OjZ%-Tʲ;"^1.₈E\K"qYĄD\wD+t0/j$|(GdX$#'uߥ\iBǖP7"T0X*v;5߹0MD|Zı!Av,gZcNi:P(f@t$ϧϿxxJK	򮄑12D|(=Pw=2+dp3$nɐ(cWK2F2psGy$e'VeamW>&#!7_H3	
>p
%\W!桄ilqS.7%s	|M	sP#aoKz(޺ZM	bBzp@_i=\jOSoZھ؏?q;=ƣ0ۇ^?c{6`(^e|v1k>W֩߉7`g/b0;@38=T畸yDݭТG)י_}SO~?oȊ0NLs(1XRDi̗|ROКIPKΎ*    PK  C:U            ?   org/bouncycastle/crypto/generators/DSAParametersGenerator.classW|[e&7Ү>lldl-1pM4#Mjr3V0ߊEZcCoAA|n-6k;G;|s{ ,l '*8ŉJ'qb|L$@q}mfkj/W:ҒX&\!.5T]Iēqc5*xLTLjkRL_8DVz4.`U{NesN*]Ozxɨ~YY	M'AXOcX:7ͩڽ,ye#
Hƥ)%ˏPS 7'mn(ek.jNT ջF#D$zROTzڶ
˃[ių^ܮ=pwBp֬
,EIo*f3@J,/yztO7tF84
{$J,Kޙ07iSR}mI*cd!4Q %GRQH#"jlGZƓᄀrkAƂ%T/,l&=}(f&=Je.8I	61uݾl_a(EE d1-wIo8CIœj0̉g6Sݜx'^0m-cDs:ӓƚ,8Ψ ,JL4w^{Ρ/ud0E}ԣ%kKzLOMqFdqc+ӶTH1uE%0Z\JSdd 	.7RuV굙r1s&ϙ86L]kGs>SA359~l?E}'1Ol)GgƐdx
p"WglZ5Cc-^O0nz={"zّRFٕaCug&mKLlnpicmC<7ؑ+p$JX#a%\ Mz	$lp%tHpM.0}:ƮYR{g'%x|dln9rT߅:ų;n,؛E4	CqD6<V[ZB̦V4gemHrE+^$\6\3ET$0'3
|Nji)yS'}{(DST1h-W0,˰]*vg ȰAV
BP\V*8scíe(gryJAv(،1l
j^}
VglSj|@
2]
AdЎ)
G`>	O2)O3f3WeDtу2bыp+`#dı_pmw1pý1 Ã29/0a2"ed-|y9v^_%r\./2,yzB*F%jLe,XfYeUX%q,gfy)w2bῨUAr6Ż-vZȢJY4yl!?TajCZִpxQ|wCxB
Qh䇻5kg*߯.qʫP̭=(y :̒[QQS[Yr{N$y_jjGNiOϚr>Nj=Zثa5G.Td'EvoB
$kTr:x1cAHTTw	ETIRZL^Txΰa=CH$Q
N"hۙ |Wl94OЊg6?6gxŁ mA#>#5{]08*.orܹSs/o z7*eِ_
Q5T4-؏Ġ=Xdjxjթ:TǘG"v4,$(X%ydJkM8x%*8㧡bj߃ǆ3U9dhhT>UQ%(^	QYR-q.n]Sk<AL$$$tO}GD5zG qIC&؈r-tJOSqARkGzȮ0~ _
YtDaK'VTC3vXE͇Veڢ<\/99v*y*NT.#gTZ9q.0=5U!Uds6[SQ61X)exb"_-IcRi"(X:eh$*<XH̞RT'3sqB\n=$zd/U7э(^ekeL&Z%Q-'yW"e*]pM`
\&	7L9q#pNǶ)o	cU`c.?/2Ka`<MS)Tų(o!G`|]̪2oU2f(GݩMN\؏']RG}RΏ
,&pd)(ʽ}M[MsrknCaåw[ae.JnnA8$sjv?V{Urp}pJD$z鮴swz5Z[䜩ѕU{@j0qUZUugk018rba;Nb+t
Q^|G6*eVϹ PK#6%4  6  PK  C:U            A   org/bouncycastle/crypto/generators/DSTU4145KeyPairGenerator.classKAƿ)mk[T=dQtmܵqE |f-,˅f|g}}{z*Ak8rFж,$	YjQn8t
	YQ*cE
A.oI#qEnNyV,h&/[.s4_S*ᙲyAObq@ԒuEs`S߰\Ԕ,GAUAMA@AF8u&6<UM;3UNps	EmIgMb#?ӳY3G4hhE?4IaP!
RZ0,eDER&̨1!LJ2JW%ܗ`ED=/K'	XE:Y.aоX*=xF"ZR	QDXF"R{PKBE  *  PK  C:U            ;   org/bouncycastle/crypto/generators/ECKeyPairGenerator.classVVU	LXUS;@[	p0 Fa2l&L:3Fէ;o]Pry >OjL)da.g_~ A@;EÆi#")Vd&M'gHevf\@Spݬ;+L+چ[l,鸶jCT-XTKY=]̹F!g0Tsʏzt7Nd6mjJDgnh3gi:f鬔jy2?u3K?4D{U]Wjlfi-U7T}%eJ*ZIS7.\K6Q2{#"&}y`qogT.Xugv&k(ÇAVh[f#`\x(^-ƕ \쯉`g@;ДmW*t7p0X>WL#k:jՍ?X	[1n3՘@uO~-"Wuql=us"^D ⢈E!]ě"!S"ECV;NRۨ|Q " Ѯ;ڽX'#:;X@gx:ŬNj5Xon>,Q/=)r@vsWcxevpswF1M/z_yrcp
;ڽx0P2z0"dt}FHܖьQghE\q1)>фhHr43\rq5AB1<w$bIBHKM»'
>p+}!ѿ].>B0OT5,K&ac	4=/伫jkjaAf/N2nHC|Do-4
46l"&eLoQB4鞾
|||k۸>#
p/?Av
c/alJH#plkx8F+[f(
?Fý|Ɵ
oᅟ
8h7|P6.q=m;jѰRڄqZD	LIRx@"JoǞPK^?r    PK  C:U            @   org/bouncycastle/crypto/generators/Ed25519KeyPairGenerator.classkOAt]x7YT64!e[g$OR2ٶۈܟs9gf~*r`O$6+#[os&v[Cn{HK0pK+സh	ka8Cx:N,bz4dz1km*ܴex3~|)켨rykvKGh&
͇Uadym,w#TpdVCxnђ	bE݈V	:W2(7=HE)N:
an5\`hpYè1
q
0LܮI͒j֡1,.fՁ_!<@dw5ROS:E{CtݶNϲĔv]%{Q8ߣ=5=W1k`sg [5o`wWBבa	H阄踉)<1*Q{~S6yrzqՃV>B}:T+}rSq{	K
<lpM-`\ SM̔SZlbI7!PKH^    PK  C:U            >   org/bouncycastle/crypto/generators/Ed448KeyPairGenerator.classNAƿeroYh
1TmhҤ.˸:mҷRH>7ٹ朙 yF`dk3N>;ܥR}acwN+hn,wgH(dkj[fricn{-ؖ4iN3~gRE9CiKbXUl cZoqG0J܊%-%raG|ZF^@p?&Nkߌz&}Ѧ*RDa^5j04\pQØq
)
.1LdnIt̪jQ`X.'f2qꨯsԣb>!
1O%&h'x}d)ŵ^k]%SxY>{{k51k`s1` 5o`UBWMb阂鸎Ei1%U,sTv8i$?8HmFSꥨfTX1ݛΐs_VO~OxoxQn$>L=+]W/-vBPKX [    PK  C:U            @   org/bouncycastle/crypto/generators/ElGamalKeyPairGenerator.class}sFJ(VE!/8&-!`ǍqBY9QYre93V-~N$LxF:iݽ 7l)
Vln*8Sp
)rWtRYdQ3u;hm>rAg3c-> Qئ0ym>ݠEFwO6p)fr(-<>a	o3wkH?apk'ܤG[Fkfdwg:
rfnsE1b@VCUmR)%6lQ-
 #AAAqCZ{M6'fNz-x;D+X4۱bfdpS49
7N~EsÈtvǐh3Gms6*R*Q񮊋**ST|⒊T|`<Ng(=)pʢ{Kʎbjn۶UrnΓ߈sKFx> xD-Fދ=+0#L)`{ML!YdxZZCIڀuܐR_*޵r񏛼'n]*:>W:Ą&uBLcQ8dY+:4БM16Y&m
⎆J!-L*Bljஆ,օNBX0˟8&
>kB$N`&>JF3t;@RMyt6ٿP!U;D?3|<Ž.~x#/:{yD՛"2,y]<d?r,3rg0_Kuq0PK=q  	  PK  C:U            C   org/bouncycastle/crypto/generators/ElGamalParametersGenerator.classmOPu|D8|*!P_X2@Bb|kIۋTlhC-#bɹs{_Wn	?H?mJ@J(=FH))i]*&+nh@}W~~,Kf*421uu1kG(xLd|d^=	<k#|J;Y"P)YylQQqV)^6`OEo6
Ċ@mOR_rg;&} HTSHjetzͼxY'mq`	.80ᲃq\qpW+	Lfu0azZ,]b#93bezfiȀ[_a.fa -9MoaCee֕yYg]3p3WZ|5g-_8Y~v~/ PK6<D    PK  C:U            B   org/bouncycastle/crypto/generators/EphemeralKeyPairGenerator.classRKP]-s}Z'0z $zP뺬n2W 
q=87 {dXٲ-JSq`HҪϹ2dMnY!Am8ׂku6|w
o{~[-ṖQ7+~8DUGQO"Ts8Eyu~Nbd'>dI`jaRb`9_{3}@ߗ4(
$dDLc6bd$J
*D#FLx27ʇ} i.aܦ<BgV{BWT{X{	PK^X  F  PK  C:U            A   org/bouncycastle/crypto/generators/GOST3410KeyPairGenerator.classVVU2-Զ6UQRZ1
pP0'a2ę	,_ǿ֥%k| @'af%>{}`{\⦄Дe[+//p,K	}YVw(_~z7nپ'!l8
GMu{)<E&'U%[MJPI;[2s~M&GWSLK&u-ۦWUi!ܮz6Z5-*8kη45S{~k[.6kII"d,*!9DMVEJnsCĂjԷTvXs|G/FSoq'f#sOkjs5bE?aYc7x9!~Ov٥l2ΑGv.7-:bGZ)OWu1d2Re7^aa*k33& [oKM]f	mL:dD[[+Aky	<ĚYfOW1jB/J>Y_2=xA1/p7uUbzk)pL,_$A<*Bx]tѩBŤ+z0",G@*1*U(@f̪bcsahWp
≀
XW0U`OaEq|(`QG
# &`
.V9lӓucoY/n< x!4hSId>yp
IHɑ?10&

C|Y_4Ds*ZwPmuEBl/4R+3?yOG#!?E
>wa0sX&	`3Y>.#t#0p8JMO*PK s  	  PK  C:U            D   org/bouncycastle/crypto/generators/GOST3410ParametersGenerator.classW[xծZiWZ	rR# RpQ%)Ȓ*ˀiF/\KHZ%iIZlZ~_Լ}[:sv%YWgϙ9sfvz% 7wnX.غ~.
l볮tpܽyݦnܛ_ סfƍ7pk*ΦOj|hp \.?0B3fhCw4+C#b.<phH Y~dxds<Y<ٓ1%GGPBr*OXS|`	,U0Es2;ٍOGMcf,}Br,	1J] /]3[:[<Lӧybdv/1ǒq3[u:e\VEE3oE`ފrbn @*Fb*15Q41J%
0Stq3AXHaI](N὎Of|K+gE4z"WMfSSD1cv
SbӮf0;8n}wWe ݍ6zl}ңI*|"b:3ZF{\J!:o1{FjO"Xɑb!I]%4U]ʛ+|sN4h$aaU52DdhadX/bFlih4}k
#&*䆍uecs,Vɱݺ!kmaØÊJoh]3Ǵ#h~K_/mG$eCo䷳AG#m@t|2*lC$#
JPTxD7v%$T
$iU_T!GTϨUa|IpTO
͐R	FU E	-`	ϩRS`#&q	S#'=0 셳qYyH&1E$^ u/iH|C#e<C+$'5S	E$ѱY:7?ɘFlhNpP#W=^WUuGkJû$͸W=t^4߆#UkRt
D~A!uo:^ٙKVixLwap4IPKz2E5Y=q7s4$1anӡ^]}OF+\`{܃*33D2fJs"
SP
ĥsp1јWj(7LLc=a'5'~C&~2\p9g¥YYbڏ~1:b~ӣ|=}
'Z4+x(JYVStfUvFLG=.+@#yncrݙn݁hBwkMlrD:f,(k拠L{K3(ҤὌ{kG&%摢	,ziUy<`
1C^	?2|^@| {@,}Ѕ]W ?
h}H>8^\}hS.63GGKGoQ.\oRyZKcϔ&&U3\ryL>3S;'|~@9d9pNX8BNʱj&Ny,NihfVH=hZB4pRɑS^*S
/isʋĘ{uL)d3F[
OR Genls*TTS14今/28rNa8ɚPQeNUn٬
BNmNrYXSh#.T=GSf9sJjbNH*攘JRG?y{ڇ)jXi+OU9lX*|mX¹=:I;KT>J453) b+hiiUKa.5'Z@hѷ+L2{"Yc*FquZHFzD?«A:J܀ZL"XLtfNsfpKCZhEaߗ;Lg*p>ɛ{2
z@LjY'Ѳ9bB-ĕSHK8\+8;nM'YVTÇ@Ce^~.lZ+b>/jpW>>FfYycf|)rC!6vd~C_4<xE@C< ZhEЩ*5vjV糠ǃZq.xDpu`ZR\jŜtގJ<\8h
m|kJ8a'P+~4xD 0X׳6cnWB)Џ>BD"pY}Y9hwa{61:&EF/]xpZannY1(J9y{MdLb49x=469[Rm`'?i:^?_+$q;>%V ~Y+gPKmN
    PK  C:U            ;   org/bouncycastle/crypto/generators/HKDFBytesGenerator.classUrG=kZY
d$Ȓ
l|aH%j,-^
E!UJ/yIHAJ!BtdW
=9gw?p8Ǳ#
"W} 1:S<3:S7|;FPyuƋcmz|znvjF7m;^t'J+[?62,Xβ~Nsk7RI_[
ݱ^z&t^hx;uZd}eU"=tWޫn(	
q\
v	
é6čJۻL\
xAA*+u7wVӴ$)$k9/~<` ,"]0Rsxy^\ :U6Wp许/Kټeɒθz^5d3lGt\,ܕB
uH$qqKقS!j%ۨzNvJx"*y-G۲kLŀ|-9,H;Byn`;]E*n[*RQ?+-m:lXZ6QѧC8"""bHŰUdU|FSLm1ϥW9j+4eno^4REQ߱q᭎sBoM[[K{&tp.SW!$4f85GTC:5a80pq
b^Bnlc_7_h g4dsJ^Lk؅.pC<lF1IJrp31,0\eưpFpK8+Qt$Z$m'yQ,
st6=Dׁ$:<Hd81S:( 
-f6ଡ5y
)TP Q[1/pb7U7{PxӋdۀcfg<kMw
"Y4_SU";_CW1KńaH
#J<-7m3͡uX{#Xƴa=iL##an6`E{©^eW}~ϰabp"ۂmPvw[Lc3q1?KA?&wѨg:'E-o
<NONP?v4eoTjheGcX2QMvf'XN/%.&I8%x2Nޢ[͟?opq9~7wPUN PK˲s  #	  PK  C:U            ;   org/bouncycastle/crypto/generators/KDF1BytesGenerator.class;o>nF6̼;FtҼ⒜Tʂ|ԼԢĒb}To7ʒbw0#)ZQ303032hx2%3=Z3AY*X8XSRX\`Cv 4v΍`% PKpܣ     PK  C:U            ;   org/bouncycastle/crypto/generators/KDF2BytesGenerator.class;o>nF6̼;FtҼ⒜Tʂ|ԼԢĒb}To7ʒbw0#)ZڌP303032hx2%3=Z3AY*X8XSRX\`Cv 4v΍`% PKvB     PK  C:U            A   org/bouncycastle/crypto/generators/KDFCounterBytesGenerator.class}VkwU<&
SJ	RJyYZ}`Ni:dɤ4CŷPmQ?%,9
iʾsν{M ؘNua 7k*i{+4	pB!&ML;;=2	5[ȯ1Y֜1%ewmkitr֯YϤO3hV#u{סi}|{R錮kIiQ-2ï}~3[وgZWN)뺒	(
CF5=KeChBLkQSrB>uPRz&ri6X}(+)ŐM)'4>PMǇ}I\1[\&RE>AH1'rT;	@tt4"I˧@̽r"CF亄ׅ	%.'>UtSH)Na(=.g=DiT4T)&bs86
J\uMj<D9S8BՑ9?ZɖTi}W20U=AY^)i3Enju,__Y[1vˆTHt%~ZȞ[P4#]Ƿ%wVѴ[+#3(*xp'uu(GZܨ2z
 SgOE5"VJD"ֈ
"6$ADmxD%{E`Eho`*/@h)r<u'3ئX(B5+J+TY'Yف'	j
i(뉯N]ULi	~Kxab,c2e=*`g JXΰjP*a)f,	U$^>KXn	񲄭8 a^A	+9DKхggP3aH0$hn`ax͍]98pm7N0p7:x.n1LH12dޤf-F=[PFxHGބB2uѦ7MU^R[[-	_t>uy>IzCxFAK]`.kC8ӿpG_5Qv;FÚ?nˣt|}vhr{c稹%g{|6ك8p઴!	چpꎵ	6w%SDXxO%4_0,á|:sc96l\Ķ|=v$gnb(:G{ۆ1p_<@NM
WLcW:zΚ^=|&2:X^ul99 6sح?}?M1\:g
ԒE}**VBy!q|>aiۖ@^4X%Tʳwg)$D
	{JWێrc]/}|gG:oB
sL{`om7YJ|ՂRs&r2U`/X&s)w?PK]@n    PK  C:U            Q   org/bouncycastle/crypto/generators/KDFDoublePipelineIterationBytesGenerator.class}VwUmniiRjVJ@HS<dٔQ|!o@D"zm?Xg6i iz̝{737X\dʨ1YsCnup w`Fb bRē)Ud"7Ք,-i7in
o'ԌH3.͟NiQah\hcx[No$=Jadj~1I[:YF23QX:A1GK_
TjZ2*L,51#FT--lP(QYOq^-Ji{j1-Y5fS^쇗ќ<͏I-Ud'm1N-tѽ4eO=ioUiRtܧq5ZL7nPȵOt<	MyGi:{ʨͶd1ǣq[&ek	(AXcKa?%5r|t<JtHm݌u|F25eǵ1mkђ1{o,Geͪ&4C1I=|C1\
+UOEHwŵͺQ/h!U)uÖy39<GXa/ZfĜ7V76yrLQ**GjȦloQ/pm8~C$TI'a%<+a$ aIX.a&Ի-cd-W!}'LU-mQ?y1t5
I7jh+.,n_=<{ev,CD3>c0C
fb bFLU0
U
j1TbËخ`$0!+Ј2Oã`ZES`5&*x	,ۡ;.Mح*=
#ڨhe!ưAgǰ!ΐ`H2!z
xۃ,pbxmw`3;#A;,lq؂^g8.n4Q'GfXׄӥaqNSSOci`-	qŹu]nM)sƙ9|3rtQB@ 8u8>8c892;synJJgÿp_u"EB@{+<[;
A|{K8EW5^9ξO,s5<r_e`

r{ qe
&Z?N]8zӹ䏄
ˇW$ <7T\BKDvφFF9ǀ9VQe4C5
nǯb]l֎A|RೊA\9^"$J՚qDP2 $x5$8+obL|r'E}rA$yJxK'{[_57FH{^`)n8eUB"&,!|TcD}OnD']w0{DPШŉ83Rݹ;

ҷm\ީ·yl)V{r>J_Qćs7:rw.\5Eټ<^L%N*LVb39FPK]  G  PK  C:U            B   org/bouncycastle/crypto/generators/KDFFeedbackBytesGenerator.class}Ukwe~6fa44`-!륖[Ai@˭7+^Ma!ɮMi^T]Qۂx@?'_uf^='ϼ̼<3dxed̓1_7[ wdiN,(@l#%($^L]QnHn#ަeiY;eCsSpF-lVX@fŷoܴq糭럠kwmiX6Z'|֬N.Ȧvt,gkpJײRqq"^4lR@jYj!aZ'ZZAi$f=d<k
ҲZc-e|U|,+S"ElU|EFf'z7-@Tڝj:OFnPp/`_MTm<Rjz})	ʹur_xSM1gңUIŶ=Z.0Rf[z6՘IͺŹ*GXz*NUJQ8I<q}9OۺR+UKMjNk	`F-עeS)_V[~ѨMrN`Lr͚U{4nPW74~L+L#mX9꺼k*~?7ض>?BBP+A	IxX#VJX%a5$@>e1mcWEHܮfA$~/XTG6`¯HtsfMʹCQBbaf売N8kӨ{t^`*0<Є;܍j1euUxBAqt+XIQJ
MP>0PY(aFܡ`=d.w)ixVR(A@Rt={,`2<f<C+>l-Aa^a;lW^exMvpЉ>~p``1"!Gd$y'Gz,fK۪joZ*tceL\xt0㎤2s}hi+헕$ёJ:GH~K(]$hlR0G?/0/;ύ@PKs}
(޾t5tu/*q!Jφqħ!i{,~']G## 9 AaBE4 Ђ
K8ue'X9 J萰SB Q%	:8[.
7!t>R$)9KL,cC?V%푋Xr
;ak(G>Gp.Ύ|6A2|'T^dS/b0-WA\rer^$}ڠx+9&r=󱡱C_O	)p(?`sEț Zϡ	7ڃ!+iY;XY*i)鴧_=\4,@b灓tx5~TH
y9>;ř+w;+ݢt_WntM?X!~MXt%Vq\NsGFgq8ePK*b  
  PK  C:U            ;   org/bouncycastle/crypto/generators/MGF1BytesGenerator.classTMsE}](N1lapòc#)`zZ+vG)DqpFŁTTz֊TP i_ս G	8͠H~̠U#_ۨ*oTkmJ9/-WhۨIPX]^<;B U
D|3ˢ%.!Fxnow)KuD(/-1Cv	C(B4 +EJU0y_Jý숖uC6yM4[n(Cʦi5
JOTA-"8=8-:W%rO;5֑|0haEM$X⢱F13GfgkK};.PPz
贛4H&N7񢉬	9'M2a3+nC&20-gN]ə~LMx1*UqK4W-z},<#`BǡYHB0DqGaZx	#0;)W'q$qo&ǻI9KILcJxCJߤ&ٿ-4T]Ɨ}oz)9С!j*8T=8xdٴ#}.}ϰP,g)FT/Lm:x'WPEfNR;JcxAYLUQ_#Y]e->Wz6V:M'6G!AFa_:5'nWb{XKTwuD\`(}|Sy1crSՔ8Ǫ5cE'(MdT/K,cDy@M"o1cax~>}ϰFzS PK
:L~o  B  PK  C:U            F   org/bouncycastle/crypto/generators/NaccacheSternKeyPairGenerator.classW|[U&inқi{=Q֭ <wi M$Tc(>x?ɐA@@@@E6}&mڦ={|y=`mS6UW0YS`Qp,VDR(8Ta
)hVB
:T
"

b


zn8(;#M#)0
F}H#PO'#FʟFHӆ?,+ҝc]
ddbZO׷pZP4RsGPw$$Siֶz9E{sXp.=F,M^Op]MՈ4PҠP@=kxda:()
k}$uGdSό^g8ӿ:
CF{HHH7`gH*`Ov h-;#su+&"ܐz#RQU]i	FɥM͵b *
`ꤛd:(܌{hYJ}-\?}Xu(t2W4;
)KCErFRa$㝜\x7#FjLgAr`,y"'5C]E/D)QÔRi̮`qY$Lqa֬3SF7I5󇑟76?ϟ|8sh"ĩkg~鍦#(^.g0.,+dVi/LFc(ٗHK4PV`-VX:i8jOFhE"6ϙF5`P7vI13\L,2![ILГ^R9(킄Mien`1lopI'(8Twd=o*muI
wŇL't7`h[cw'ڝ8։XN:'Nt:r	É";v@uk=GeC~t'<ѽ|KHyU5gءGMZΘ>h:Z61dS{?ɂӎL}<`j^FcP<{IXC2EN}O,.*k.{6ܮJxsq}Ӳk3`R;abikQAU*F|ITEha8ai)ԫaXܜ"p4fX/Tm3q9[\bu
gJJ"|0|[AVNd8a#Cb>SqCWq]87c>Cg6qnu\v0˰!	?`!pO~~ïw|fp+w2pv7.o2nl~cw"<xK]mq~{c\\eJu\kbTM=ԒĂ1s;py	9K]3g=rlTi$9xqx:/x*O^6Lۉs;glE)53S:wࣀCwށw@)֤xݑێ
KuW)7[џ}90˚NSUrIBv@WrD&eO&R`uNa@^f2՚;8_j-CUW
2x50N7!Fiټt<{=zA^۲æ+Ŕd:\/n@ř= Քa*Xy϶ԦԒf+,U8s7r[*މ@[k:JZW3x-Pg%ǹTzNjMzNxRw!7`.}SǡLo$jãdlk,KVp|ynTZ<WQM9+U~4Zy*+#O#{*p>n=ѩE
ʑ瘆
+F6|4,+f8^6pI닮A$q5Z$
$Ypl/^By]7ky)cIY1d<K<$uF,&bTX-&d+{;qAN\aJU؎;qq`[wt;><t'É-Yl;ىMK])mBa5V;ܛ=oYtl>
ZơS`,01ӂ̓,\8&K,\ąpk,X	a{+4ѣ
_
ꮃ'~0Bɧp|-c3͖>5wkj?f'teL<nb
6.
6L:gͦ}|MqCaHp7Lw3¡gi.4!>_<mުmhξ\kx_b	]>{׺kNyp D-Gne3uوo%)Mճēl5ޙ5YQnvWÌ%7k}[i[]iphζRéy:MuhZ%S!T	.m[FX TYpv0aPӖJB[AXVim^Z тAka:BC8^@8AD8QBI_$K\J4YJ)WMh?I/qt%!! LfI<L4[HD((A͕hnDMRP6RP*R-KB'Z$h%R%Z*|CXHtäXIL8p)N!Z.)8m+)E/Qg%n[ZhWbQ5RDt#DRl':VDIZ+ţDK8	R<A!D)8g'I&RCt*DI1@NV)KxdT.YvtOYE?PKtv  1  PK  C:U            6   org/bouncycastle/crypto/generators/OpenBSDBCrypt.classV}xSg&&m!t
F.@)|u+Riha8ͯ`0~L@K7XPNtt㟓YϹiڒ>>=z99y&WQ§bF+T4Xbf-**VXb6TXb*nPѡK.a?onXZPe"=eQ8@P*	C3b6,/fT2=[}C$
{;K/
ҝ_HQTb9N"vv]&QGѷ'CUas_NI7o#ɌAK˪I%QWN-RB30byGaʚ5a	j{$KČ
]E,茤GRH4a	Uǿ\;qDǢ6̐fPTífL/zle2|@|rQY৴Lh2%٢֭wjLF&H$IKPc":)݌LhF6M-B;.&iQǹZ<<G-ZKZ:D)0$GC`%#dOd-aņ􎴾pVɅ )HZsJ-jQ=VUn"ײqÊB&&	=Mi'&͠*77EgXTԎhMdS'5gg3k
IXjZb;xGz0cyrREގЀb6+Q9pgP3YX<'LUP!7m2zu"ωk;Շwy0,`2=4&"#2M<1Md0Ud:,	+ݝԉ
&WYF+-WjJKgt nX;3فBsd.N5;k$o۲fh:f
6)ج_{C;ܡ]
)(د`P1i0zf::gڭgtNVHS35o(uކRݥ[\~dJw|-,!j,.xT`$MV[u5#S\¬(^tu<^
yw	//]Q-ǒڳVԵ̚`nD؍w#%n$ԍ̍Xpq4Csc7q;87>7v0p?8q3>F/pcbntnl'؉c=ާx7e4g\wt(uF91f858gq	`s.ֻݟ]tS043]_`u=Å9_f
=W]z\wi,{
-rh2_5,!W##jV]rѾܿ8e|q*ih.OT-1<T,*UTVL7</Hxr 87BqM$´}m_/el߀Zsp94\G}\qU^_U^bϡ9.'),{&T
s>4>eWvv6
%]RdBm^̍07$]6?26;i3T%]AJu>b
ѺpT&<<17ၷ|jKhRz.I}ǴC|]cZ~
-bc(YITZnp'\4Ò͢e6iuaQ˧(Lv8(Q2uLcKA5r؊c#qQ,iS#hS<v;^D^ՊQ:gnS^c!hS^u|*ns+]A\\
I	TC!Hb}n?]z.ggX&/'v{eV]/
	}t8^
`K9{8&|VĎsN'og8e/V/B%O>`М9
WgMj:y3
`n-x=JK%&DhE;琣Sl!@Syb:n8c&1=F'^S72oJ$,RFL1cNV%9z."/h`F*'+'MW$;|kX㨦eiTҲ,=	Q.TщqQ}ަUɗ߫savzóAeC3mgڞL;B>;1[pPə>G'Ά6wy6~ \mNآPj}pU'y|^zpmSd5M(7qulk5/[DJl銸o+eo}ׯ~UlP[U)D7q#[DX.z+v¹b;	+̈́UyV#]b7WNX#	{kFDpND'\*	u"Fx8Hx8D\	aHD0(R!qQ	Wa0W,*qY%lÄbzq0,V׈fµM0zpXCQ;\%N\Rً:qUΧ2f]$]EHɓu5ԕ4"si)F'irsĝO\jZj̋Qe"5}%ZPK

    PK  C:U            F   org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.classTkOP~1"
^:oezqLtdFc¡;ű-m̿`~6D	?d0cd}λ<󷏛 cAII|6/iMy%bьSu	.]7ZA
BJNYx>(զ*0EU$	y,Jw$~!ܾ]"|z~y,\<w?VWVbp-[ժݰWe_raw7)oj[Ϛj8)Hu,϶u;_9<V}v>m!V>4Z_C=j0a0tt:p~4?3Wo]dەujd(39Ӿts(֑㤎`:baH	EGTEtMG/NInXGHK`q8ጄqI$a<!\8.qWv(NK8+ἄ1:ZަG^+
k,&K#&,пč@:C )hM\7Gږ(* HJm"Rtɩ7xfŵuj#V06bʘ*)z*61"&$5ѦR:(x`6_"\jERJ_|\T?R/]C6S`kߟ_M-Fɗ0Xf}.^ 5 [0zci41U)WHzh*}i$m?5m$`v¾pQx\k? PKG2  
  PK  C:U            B   org/bouncycastle/crypto/generators/PKCS12ParametersGenerator.classUsemvM7ZZӄJ!`[6-A%VdMSIfA0^?񀣇^uFLԋO=xa<)1yϛ*3(!W
JT3+@w\R,L. K.7_;iw 3N aJ34WGubd+eR,P1
mbiY78e/%)gLp4C&Z316LǴsgvޙ[%d_tas<r<!;-_,$Uwh޸i-,V,gV,1S@&iܱ\%oeMJY,;悀E;ŌQv,3KN1>P;co9tfvxr;X9\HncC[Gs/1z' /St?)Q.PiRaQA(`fRUrS|Fe&]AdqDQ|=;G2kJbTǶAҜiovHqN?xŇɬH}KWf͌ӓܢLQ
UECUg؋WTIEPAf5"°
*tt3(ab^Sф$ϐd`dpY)\UЉ7dxKiL(8˶(81BRc!I}0YFX(;F4
㎑1b&YAw0@e
&NNN?I_:WsרUِhDc:=HtH;Y<+ז^é:+x ׉@B@ o7F}22#c" UlnmUgj4jM3I	)Vg~	:5)k~rHsY/Yt	#?W6d:XFµևnId=d-w&xR$;2T//D@~oZIVK]K2"Sɚbb_&7f@Sə8CE]5f i^VLSV2+R"Ycb9	p@NUUDLI	US26teޒJ,2[R?z$n/-`þ.d\ү\8$-0Kgr]'(R"&ާ%#N'zR#C"e:.AYϳ&xy--rGCoi&[VoDjYΥO$fPj=4~ZC+k4o[Z4GtI$ý-3/PK<h;S   
  PK  C:U            C   org/bouncycastle/crypto/generators/PKCS5S1ParametersGenerator.classTnW]6L\Jm2q$l&PF/G03кHW*T/D۽'IŒg:{K q7dXi*2\߳'x
{e^YL;_8YXlS!
'i<R-C@PYs5)h:b:p<
dʫs%ߑ\E*Va$pb{C8Lu|z$=P>+=۪{=W+/f
qxvyqɝ)?:j(v[A[ծ~lћ|:q_ŉŹJR}rbّE7]'`ݓXr5w:QRtb:7o&4it
G5p\ÇNhHCNM	1w7n~w>TV~'xGO+4ߝΌ^J{9kUב$:>@J 82cSeA:8	^~2QL2gp1Ә`fepsjgq%1|#T&CX6-\q;J' }SAX_)U+??	<C
Iu
9o9rwR*R:XJiy97ݔ	ӿ_tH5
nSKd*vk?bd70ƍlb


p?.KX%!wDJ];MG$O0MktVj60̊b)ot(<m.۝@zљPKn7  W  PK  C:U            C   org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.classU]Se~dM6՘!RlD6-,",5$Rq:;mg);xm	!0Qds<99_ÃKXW7\t˕1^I,&Vx	CfG]DtW,m[/|eh6Ka)9`Xd0,󶑝6>9smaģma=c1
RIpn^fы[;U#FD#yC#Gg@v[SZ!y#G֦Q'֍3ZOHml
ĊVN]N[%
:t~O#IGgR99eunz<s%s\F^VUJ48bY>c>Icɴ74PF[W'̜Q4yr^<5Ui>h.JYRd(2^񚌐6xCFDF@̿4aP 9c2A$=*
]϶/搌6'9kYS"8*~n2t{0}W+hRMUp^8Bbͥ%Yѧ +L)h{+h^tcaaaaćN\!YG{Sf|H2`aʓƋY挭_jEm=o"%5/VըN2H"|^#5F7$ x\NTc,?aa_<<.ҁмe k7k߅&IgdA׼skN,UՠpRp|XLjaVx# }swqGqZuwKTqxsPFNPxMʆ#Sπ r{Y&ҍ
V8u'i~wKiyW+>8vA)
+XRe,zX5
CBx~$4ܣTP'?Upsv{?9hZ$U~`8NŒ=욬&C
>;r xg|rd?PKõO>    PK  C:U            =   org/bouncycastle/crypto/generators/Poly1305KeyGenerator.classR]OA=Cb[PXk
G
%J0fn%>IDęι;s Yd# JPRJj ,/7{gnK9zY>u!rݲ]2e@޲\e\k8\b3'o7^֋kյb@<AD;dZu5	<A*M3hN0emF,[5>h`=A͊3V+Ҩ1}^cu5Aڲ+jjZSk0UuRW!yնe7hivtҩꨝ5]
\^^^KvCa!RWS\[7+KƕT;0anS-+Y"sFV|\ZB		J8B"v_BMHE1IaQcaDqy_o*3sXRݥFC_CK$'p+!y~!yHt0>^+-̴Ca~
r3|H}b>сyB3
]Hď?.uQDEHщ|$
ͿʧPn: Ũxu_Q!oyc=?DHvk PK2    PK  C:U            C   org/bouncycastle/crypto/generators/RSABlindingFactorGenerator.classU]sU~	fݶR%-a
mѶ%%mJ`b9n6َ)x+*mGg{I
+y>ݳ' .a}T02o\δDimQAb UuETpl>:_0q#	5s8U5w,[T7N<"-熌@9N˹re.݈kab5E^DYUgqSSS0HvgHR6S0qڲLy̱9Duoln+8JQEn*TM+
-iv&"n1AM
L7"0Zk7"lŘB;9
9<]Wlv˳7Y{WތXoCWpQM/oSS,/bTWqB;*NxW)*S14^ĴD(+fT0Ǎ0w(^^дN8v#Jln>I'ml2߫%lpNI}R1:RHER[01u㢎cRq
W*Ŵ	|cVYHqM9)5ÂR\אgrXc!1t&ZVc<$)&K #ٷ4mU]Ki.VB>tr;%rOalc,jvr +Ҭ<B;gsnLl㇭տ퐘8FN?ڭ[VvQ|,;Z6;J~awu57vP_d-?G?߿誡gTj)|S{X7ZPKj    PK  C:U            <   org/bouncycastle/crypto/generators/RSAKeyPairGenerator.classWw4۲qbhVR86$tc<KFFNm&mӤM7Pi.%@dt#6DoՑ~}wyow B$C|޴	<	3tHE>" x>89:s|4iL>/׋DQgD5qsvи<17k˰LklL@TX-(ڤԦLOŌYN4PR-|KW1odx_yjY[$M~M%@nټ؂;=ΝՍli0[si5
r$de6ohKfQ/lh"4Vsjy0]P1UML9hd(Yu6׼o5PΫZ&U6b%
܆]#ڹ1#.zV
eF!UEi2٘
mief-hj	Z(fbP(eh#F)[q}jĘ::<ukɊU2MO/OYBíZ'UK%GuN/
mRUmpzg9\ߕe
ԓ^z	^%R]N=csfXxuĲ!]\'l]K&(7}Sœ
}|7C3L~	+nJ6{'FO):AϜiz.⼚s&{E1"D_Ġ'D<)"8(S":됀4)y*|dv,>Y2{:nF1;îx
޼[s䑋])ns2|y0Cf`yl}VڠWkjL=ǋ$*T%=Xss;HS#Cw9Oo'2~fM?tPͶv}ݖT*B>+#)ƴfdd_F2etӞ!tw3<2R9md0t2ZE;e1>	8C!Uƣ&#ǡt!(0N pAQXQp.1*3\f^b72÷%U	c(HL	i@%K/2|OI
6W$;N5	+& ae>L/Sj_zK6AU&
3%4N=ESbߣY=zwa|@{xcv_7mp];uN|l%~'^}*x>OcL2G3d0o Dv^H8_Bz?SSaƂ<,
\7S}1Ҫ}*ǲ"+*WTQś*Tŕ.[(rRJ3񻯡ե,U܎7оyЕX<ծȩNEAZ0UڨM*mUJ{<AvTTҢi|;Vp7չUfտ?Idh[1YƍII	0Q	#5j& e.D6jBy	9p]{Ki_~6֨s;lK{Z,Gm }I]wO+
(*:)$Q;EB>nǏ(<0\%T^T^8:޴B:{	89|M#@~YsѳM׽?`p
n-{	~u!4CpQi]3yr-x+y"t%Khy>swr-(
ץ\k.OqCQiRsB84ם@Kt:2#.[>mO^w*PK?|D  )  PK  C:U            /   org/bouncycastle/crypto/generators/SCrypt.classW[siF,`^YxIb.X9\<i`,)xCXq6͕l.lU*/yJQ)cRyJ-Eg4ƀlƮ>Oӧ;gJ >| ߛVK*「2^	'#)㐀^=1o֭^)N%YoXzM\}Q>d2 9?n'fGѝ4l|J
)*Ex2،kmx!>xUWq<G1l7N7
}O׏Pd8i_ˬђ;8
f\VM?rA?CC/c^\ܺ
Hj٠_t*%pU~6IidTm8c9vl԰Uj'w?kRZgc`(s7g:
=rѱ2
/5;zj$mwB%^fժU.PZ\WK6/\6- 1j0iS8eqOFQܘ
ǚ(lL\Y^ѩs+f1t*T4Zqq*7&*[@d45S=KF6:h;8ToXz6KUsޡD'Қdyj5v(V}
Tj|e_ʛuJ{h']z:1jDÝ/lt	Wp|'|q#z:{j,76?7foj'zD-ņG87Sˠ}f2q0VQ	Fy	i	%pT1	%Q	c%LH8)U	IH]R(?u_M1;X<ʑ[?7T1Zjm mF/M>LG3,gv
!FXT#*GJߡ`πn	ֽܪHaϢW b*C\د4E T0:%ZAA_Wuo(8!_<`%..qQE
..*e.(*.kX@L
ĮI:/$׳O':x+Ң4ҧ}y1=@q- ;ӭǍ
k1X߻J|5.=n}o1^\T?W;/Ec(,p kxG84Y7xSz2S?KM2`8 7G?dJF 9xgXeMZ_7,+>Mn>CKFg)aQwеSnt
j2>ďhE3Bx&~$;!Mj%?BwOԺx([xETT%Lҿwz&@z[؏hЁ>=yj9j÷g)cԱ5'\5ZueϏWQ4^"b׍fH, *KPm;]2dȕa&gZǔ&}FER"LTb->
2עuÜѭNMBLl'Zh=î}cV[bmgDY4IPA>]>8C|2vi=lwCSLJ$ď#S
j|3>-܌_Ss3-#*@{x1*ƩI>zCna
6'&!"ӏT_.}^m&5?HdrʕE"n>:^t>$?KHN.ёcXGjo)p6o&f<aʆ.p/ctq6_fL|{d@*ĹEAt| m_H"RIr6]'N	0}Z<aw|z+ ҙ_+~&+Jy_}ېU>vC} PKiq  
  PK  C:U            ?   org/bouncycastle/crypto/generators/X25519KeyPairGenerator.classkOAߡun⍶TV
(Xbb*!
$~\qlw얤IjI(㙥[.aq3;393`1$ҙmUu6*k
\.ÐEi	7ri֔-!RHS63$lZWcUA׾u`Uu7;ܦ!ӓ5\i[~P-3ZREQk4\Z¦=Ⱥ.N-7#Trd(Jܲ%-%r53nF5Ie 8+q7;<XE\YǲeXY
4.kaPÐa
WKa}n7#Q`+]L3=NͫӾ@..x|bv
[tevÇmx'bJv;ޢ%SxY:{#[̶k4Ћ)	HM]>f&$1duqu¬1<1jTv9iۣ1A}FSJed-,|ztkOIIw<!*,[xKN=%Ȏb|%rlBPK0̇`    PK  C:U            =   org/bouncycastle/crypto/generators/X448KeyPairGenerator.classNAƿi*/"hKe %&b@B2.nݒԨ5 >Ob<m)79;sf? Q C<aZRgsAϯlwF}n+zHK0pK+4l	ɐ쎔Ua8Cy5|XY\|{m2=阻^õUnڲY<߬x ]}.chKElsy(lZ{>wJCt-["\R.עq9k5AW\;UfrI֕6U[!VU
.i0!aLeRXj
):
TtǙtj/snO㢄`[!Vh<Y);3a{<Sw:i6Mqcrgv\#f 7k`
!$:Ƒ1Suq:Rxc
9,]T8fi8S^SQJ_I`P]&%1xGHUX'<lau)
:)N6uJ3[X)'/0QͷBPKX^^    PK
    D:U               org/bouncycastle/crypto/io/PK  C:U            2   org/bouncycastle/crypto/io/CipherIOException.classuN0Ӧ-m
m
TbckB,lE,+5qH $B\%o#1438	/rJppy(u8<{LJڤL*Y&<\X#Hoph0^d\>ĄG.*1p8֢~CwhP-ލ-W6Y!p@D2>Rjj[RDl!5$]a_=W%_Z 'xTPK|g,    PK  C:U            2   org/bouncycastle/crypto/io/CipherInputStream.classV_S䐓
j%h	t38,n
nCr#!ɒnlڮvm݅ڂ-UN]MԮ|>|}}s_N
ōnq&7nv# AZF6	@SXKa>`B@Xl^e6cB\Px!V^ٮ-fܴZ%jO)cfڌG䐑ĉ(JD8J[)C#/߻gcwbmo\~+O%ePz4KDl\z2iģ<z*FQ^T
dIk+h1hB-[lS#7G1cĈ[n"IدßIQ򧌴a(X"MhsAt&eI=bZ<hƘoX17(Օi+6-3'iכꖑ/0̌85(3a,#H;]_8wI["Z٘?ؒ'lS1tʘ(G<d4m:{R##zjDWX*o2PL2HY/׈~T\rp<q6`"ue GF#zڊ-hJRa*N4'Cұԥ®XRP{AU''SP7 _M&CJIDtw$eZLSMF
@Q)[
c'A| s髒s4Dqw*ب`w)x(ج.
:ܭa;OA"o`3y=D
AKEG-%&n
@S/nx}?9_8]u
2"p6m("|=F;X{PYO[Gd4	+(.}k-DNXVP64X;2܎*nŐTэC*nFU1Uİ(WU;BETQbx?CU*EfPa%okTD-k*ކH)>H3d0za(`8'>)O3|a^c^7؋/2|+_ex^ay_`x	NyA<}x!q^[^9c_bx÷]/,<o >pr8Y2<0p}5 }ǭz,C{>ݖީ'{Sm#9PP$v?uXSwJm!(5ϷڔzM6>NV&[`vAx`s4eR2Z2QA&N<3Қ_qx_Ɓ	n
E(+(ث>1M+tsaHI/zzђϾFƒEOB/j8suNyx5,~;cqZLj>,~FQ1N3WI<nysB/=OVjy?4q)[NNJx=hu	){3A{(j|v질 <9jb`Ɯg@}*ޯ/zOjR`dqi3_E'Y/sBZQF{D<cvE&>:P)&{	iUZm5v><Z'#,weD7s^'FY8C<~ ~q8dMQ"m󈳅ֆ1bV	c
1R0:=#z,^~Ls\r8+TFxZ]Z~Lj`[ccR=_?6~%de`,qjD%1Ή5:ڳ=}u/N`k#724'(jrrl?WeEb)rHɥReVVWUմf{d͍*h$L3Uxi~OzOk<Cg汜<~ ;fxT6oRLL)vUW.uH(H7~
U\ssLrm&RI8M˵ C9[Kżpd寢[=K,9Ή43-ѧ)UFe[UsO:T%?PKxj  _  PK  C:U            3   org/bouncycastle/crypto/io/CipherOutputStream.classVMOW=1WbLIJ8!bS;4|Я`x8	U]tUE7U%HmEwT?;3إ8g}wy!ahE;:(M$R)(荦ټd["X}f8eћ%[2
Uپ+۞X
J^ZqC5zspP
!EUrɼݚv5Pk缼J%i*E-ʆ:fd-_.mh^W͙Y,s״EY^T+	MOLkyS5)Zr<zUtGJa=Q%1in'Vr!UJf^Md'jN9[7>56kȮ8wz55)5_RbbjnM˦ hYTbKtZR)0TllR'f"D\-Gě"zE\qU["j(>qlHh(k/YגG"DYͫxAsʉ7Qy37g`QB+B"ocDBnJ.	pKC	o+N:À~%H0ڄwqC	$$ b$AL1L3| R23aM3H7AGfx)>IХ?yML%Q|ĸBc@_.6b򂸍}ƭ7^nnӨnVɱ}|*{~Ĝ=k.j.kH)xH?c~6OxKDg]`eͲ%T۳脴	~ZNN'yse8>xǅXwh]W#N:ͺ;v1K#ę@[;nt"=h_`h!
w@.:]ٕ0@h
uںGI:aGimA^Khk
(DαF붷h_dlvm}L_QoN,tgrlrݾR?]d~r+5
*iU]2?cG~ߣJؤ[
	|VOlIWwBIP2  PKpb\y  	  PK  C:U            2   org/bouncycastle/crypto/io/DigestInputStream.classRMO@u6qJIik'HBEE,8q8mj[ɦ*?J=?B}9P˛ٷo{u
)vi1MUQ/ :/!!Cs
R0Ȗ	=XQx{s:q4ˮpI,#gm龁`4sˏ) n{R0tL0{cRcX{8XcxcB2xa`Sh(fs(`!gRcslEm&}^|wjdQ߄>bx%А"7xX/`(dt	5R3,ax5
(2ɦQ*1Z^3Z&rkVL~7&cXmc&N0?PKS    PK  C:U            3   org/bouncycastle/crypto/io/DigestOutputStream.classJQ팎IL`s]х`@"&dG9ޢ7)(b"z*Z{k{_{
6lA5ʍLɒ)b4jd4)FbD^=!v~PM|c~0$+i4n!5
Dw Eϱ/^<siŅc6{îp >f-[I
S
fX5c':bס"c8"Ri1G
	!#Ò9z>dIѿMJ%u:WQT |~aHf!`#;+!R0/Z/RM|u)aM0%XDJ^Eh7+VV}7>PK32bx  y  PK  C:U            =   org/bouncycastle/crypto/io/InvalidCipherTextIOException.class}N=O@}W -HE,!M.\K(ġ,'~~?? \0Vk&WjVܖ#:8t?nJvpznlud8M!)
JM#OyʰcV_lύLϊ!iz[a9``7uNu0Ҙ$OPK;t   /  PK  C:U            /   org/bouncycastle/crypto/io/MacInputStream.classRMO@}ko @Th,z q82
?gBECp7VZ
pvfޛ
`	Mq}*c/Gq$(fcE-j˰iWnN(Fk'A(fN:{nҍ@vT&^6}e
8A-!Co(0
2X}P[aO8}ꂦU	"M7Cy cT.ޢT0M7B8bܔ"8mE~5y8*:A',6טk|9	h3*EBҸ@
?n^34(QMɌgʨY]'n3[j,pXc<&z#)lqPKjc9հ    PK  C:U            0   org/bouncycastle/crypto/io/MacOutputStream.class}QN@=CR|<| E74.0`XU-
J`_'h~NA%M=s9wn  K5[rԮRjjMxAfґ=1I=?7LuF2
vZִvo˛|d}ڡ/)g/w`NLc{n&C]3p-e+rŅRK644Ӱ
YCTC*u$dl8Ly1oML&DpNqr3_:{)}
yQϯT#_IgؕK"0E-X;.*^_PK+Gr  d  PK  C:U            2   org/bouncycastle/crypto/io/SignerInputStream.classRMO@u61I
P7	|	U	UT Td\8g
l+J-MUշSA˛og־u6vu`wtu h@3Bv~(-*o3	"U0"qx$;2)}6%}$
@8~rșl!pq(yRёQQa0S2?QZ^M˾_3]a#`@S]Fu@<*JX-`5UE,bYzQO0|!lGz^|dQ߄ju,*T-:!CXlIk_ѥ"=%+h\bms7ﯰi,hQ́DN7͏2se	ʨ][3n()vW0_9,Չf88~PK0d    PK  C:U            3   org/bouncycastle/crypto/io/SignerOutputStream.classN@^AxƝ	6jim2UyDCOK11Q$gwL||86Ch
$;^$qN9.'#|:CʺLٽ{.Ciq놡c]{j[qv0g.2I
Ya.1оi
udCӡ#)64Qb
Q|O=X3(!'Qؠ])Z~V9)1Ϩf0I՘JN"E|ޘ.R<@H1PKioH  E  PK
    D:U               org/bouncycastle/crypto/kems/PK  C:U            4   org/bouncycastle/crypto/kems/ECIESKEMExtractor.classVkWUCiEmmKCx>h5`P"H(arLfo뒔e\so %"ܹsϿ%G@Ac;)qN/ܽ898\]Uŝnx;du$O&d"=
6me}(m9|mBYP ^2t6͍kzQUn乱w(7yEA
(BʡywU.WZ=r7<
rZkqF6kvqI3Jh8mR=ӱ'tD<.FMneM&L^M
dR]ʹ}Y_գnKܠʩf.i{<+,qWh,8"B̢EG؎[-{KN6*^,5Jsqi]5
*ED}fxjS2zTiUp<SHVQ,cѭLkgu_\]DG_RmYp%|=BQt8Js{<;Ov7p휰xh`Nc8
I.sanCC/CC?C5H u]³}GW)1O'v
iRxY?mA̼^8H͇ r<Qr;qvz'7Bn]
[\*]A$
촰 6a"m&$vvSvixV
-4~5Hhx
Ѩ!N/	hM
G0e$5[0!	
g1SNcZÙ̈ .v CpKwXPC]X
TĐU17a*}ױ(TqFN@^EfiM{2g% C7(}Q5%y%mٴ>5#E]EiGtʑuxu8u"(
+}'oo+4fdS>b}kh!~B l1;oxPg
oC]`CEhDc} MR>
~k"8TeOGdAPs>CMU'*B*⫘үD?'n_F\_}Rgpa@Ic?A%-]o5}w~PK#  @  PK  C:U            4   org/bouncycastle/crypto/kems/ECIESKEMGenerator.classW{u<y6m$Ȳ5Kk2>dGW+XLD[}w	.m	JK!>ifv^(@g ]<S	!g՜+TVB/0Fp PuDEMw,{Js	ݱe^c'E8JcSĔxS1$VF.cZa"f%5J/Iض`8bEpJc-6}Q+Wpl9	5'AmN-R,7
N{'\s3hOsX\z
ӔЙ9n3%׮c)_(wg3he"$2+Ӓi{$Ńv¦\/δfkYpP?LLd^g-lRifۙbYQ:jJ3\w%KGe{MtrɶL
p+jRxsψ$rŅjn).ySdÓĮ$Seg5nDXv&`szI
ú];V8$WOU s[R/Cԟ
5Cj"Kct#͔JXkk]u#aR1n55Jݵ4Vێ!:`32MEyK@eS3T*$S5EsÅRz6t͆p&XtF{61>py}hWիAݝ<Bef:fr1Ь?Z9uϮF)2fiW+jeSzW۵#t<vƚhf'zB2e8pgx?Caa0|C#QQ;'>DnʁBR
N̠xHk|齣[ws]ogv|~c-2mo#;5ZⅤ	#}kp@"{7Ņ`h2Vjj\쬰xy|^6o&O'FinsBmH)oC܏7t+ihQ^ܦ@=ldXTЍ0tnx)x

&nh+C^QO8SndSWp;P](({9XQpO*8\!?*VSp'nL;f |RO	iA>+c_1ɘďd$
A~,Od7e<8Ʉ dƗek|]
r^<#d<*Te||_X.u|QHHK|~ut&M_'8gprCum.ust..g$'߄\ųU:BUJ<GKU<#.sz	=z}VjL?ގaFbH2LK6i]
,ǋXރ*^Dl_ob<:70o`~rR=meVƫx~WqIȦ4%z9#_/
^X_"ΡGeT_/H^^PeA2%ӯ2ȪW˸ʞÑU(j7#j.ӣvybU2~_
N"U;u]kXl{)()yY/+V1p՜>M9n'>z#]]ǟ#>Yǟ7hJQ
\ڰb~'_Q.Fe*j'#1<J
(O@^^^PK[<    PK  C:U            8   org/bouncycastle/crypto/kems/ECIESKeyEncapsulation.classViSG}bcqW"$l
2C,IV3}_UW'*g%@`KU٪홝gf z>lɇm\<+Z1N4jwa&D		jLheQ3$l;gX8A#h$6249U;΍Ybk0	w΋90҆ҖMY-*ٖ&%kkE%l2X"7KhSL	ټ5#k%4-$#r.Wv& m"KwKe("Y]i
,YiM5e8ena
{ZBi",yaY+rCg尛VƦnN{(_=dQq&]3񄐌mdh,d4A5t6^93OR_`ICd2pB2(34Y
<̊Ȥ+Z8W!Z,#Mt Kh-nFNɇJ[%2) C
#U a'PN
b`O%`8|X>V.1-x_dųqe쑱W>-「2B28,㈌2zd9qރ}͑Zv$R?䨾r?RqX>q+;s5r)+<uS

ӳI kx8ro#\FR!¾+HmkuE$\`(*8f:99),;'FZ޴MT|1CSϹ-l
ֽ
O*D1*㼊0BGE*Bb'|*FWцb;.܎+*ZLI!^W7q
zDpMM)!t!	'QpI~0fU0o)
a*8`ôa2RBAL/)+?Yt7,Mr4n2z^u"=G]'f)|rl2\%-}hE	p7=;n
qKۿB<Zwp^j:l/VOيHnGݿbeDd'INB;6x~FNL4Kx@!po	uqo_E
|V mq	zBhP(G 	#]vn08AwCMzo{{%ǟz<k	6+}wpnB#a_ޯ$RArbpv͈y|zX֣.SOu]vh!z&r!|$;-y|+۔jXaMUml-_PKZ~  
  PK  C:U            2   org/bouncycastle/crypto/kems/RSAKEMExtractor.classUmWE~Iɲ(RچX|,B5H(be3,lv_7A=9PQ_;{w
`_'1[x1ĭ0$2eyMdHn/avmA])7be_b[[k=a:+5nv[tWaf3m+Φ <0_]4v1/HŁ%'neq:1eO!>3
1\K/:g):-r*ܗQe7)!e*[5DɻTZ^}0u\kmp|(j<طM^צ7eFQl
URD;~z͗2{,lpkt
@ؼ?kV[kU(Ƌ?4oƙVP=O7ۡ4
;o;v]/Hs7BV0W
^W;
*0UvHŅ##hh_lךx'pf.чٌhҋ̱Qv(OK='eRu뜁K~/J[ƠjH
71MjӐD\u\w5=
$}
/
bNB
x$,JX}T<$HTEEDJ*ƚi%Jx{
zk0e4v;S@jDr!yE2!#}>[	I.f;1x+lCg'Q9T}ez/Oyg	~_^+L3P2/Ar,N'Os؜''x**cR#I`#9|!囡Ch PK{Ê    PK  C:U            2   org/bouncycastle/crypto/kems/RSAKEMGenerator.classVmWW~VlZ#ڢ}1@m		$
lv]4}Ѿ_X[K](ˁgܙg?%š(RzCyoxKXbUb':eW%DF;%73^	pR~yvl5%nE	G5grjٶ8bU-0.I8Bc8tn{z%7mqfXCt45f7:p,i]8'yҵ4I8<o\Jfv3=(>)qc$YVI9^lsur
ۢJ2Gܥt֨-Ө-M
&hдk%Yz[di[,+JoEޓSfuCpH',&*1I\R+3&lVznU]$Gb55thvq%$NZcnz[WvUL.u%B͖I-kd<51Y#2RS-NdEڇtδi@j6d/_룎W%D3+⢌'eqZoxK2ޑ񮌄!Ig%+#Nnn8nf~ZR/&(to۬
>"RCA$;o
-d%- Cz]J1y!جo-|sAa]n/1ݤooj
0.Q{vdo;a`dA}g_ZMT*T\Ua|B'*^ǘ^!*SY@VkWq\aLH#&Uᚊ8>Uqy(8ia6(1\\$3eǂ= ]@MM
`
2`D(>
>qUz50jzcZkiU4y 	#LtBpCOEŗp
zdr
vr`F2frx?zha3"|poN_ph+}`+>]z53dB~'aA&COd"^NoԌG]F@Bzx{qy
QH/D[TT!ys)/H%~ԟL8Ϟa7G~Q:";[P|PKvl  
  PK  C:U            6   org/bouncycastle/crypto/kems/RSAKeyEncapsulation.classVk[G~@6,KThQ{]-6F{qBg7~o?kU}yl?&"4O̙sμ3Ͽ< 0Cx*!GB ]5			BPJyiy	Trr!3L<7u
 g7&ge+%״-	'قi<nĬtb 4+J9+]Hɚ3fFnXaڤm9.Mu$t	3	rkJfp)g43qL2S.P@3*sBA#D TSZ`hBBEf[ke4]eEvi巪*+	喅dDLy-k-b[`Q[4K+\/2q<k5iM͗yvhڞ̝7E.XYek^5ݕmC~F V1\qyl/^SlY/.1l7XD&gKzghoq?H#n|ֵ%<D'x^ƀ2NxQK2^1(㔌24gd3^;y9Q	gS00żCHl]IђY_s&pdfiH6Qm̧,'pdhJ©UoM\ѽP9.\3F$yvߍvPL$V\"ܴ?MWMڍXck$JsxtQTܬѥ*}FT)**8*^%]P*O.TEP-ǐR4VfUeSq!*X+xWxX"#5C*qt]kXQ&
ƐSpqCU`
bYA*{B
&wa'KęQ~Py5ӮnE=[`8NA!a	R諭MpAoitjĪpb{(Џi2?cS1719{sCp>zgtEWª
x I@{"62^GGaxUCZ12#S"'v3D導Ddjנ	駉=v?w`86n"o$T& m fN0}:TauWlJ53BX +UQ}}76}	z9҄sp@>k N4PKt    PK  C:U            >   org/bouncycastle/crypto/kems/SecretWithEncapsulationImpl.classS]OA=KePQ>"킮|)	C
x0]Xvݩ?EIe@4q3sgn,ֻЧ!nG=+U1EնSJhϑ+TW?X(iN"wRI`Aľ'4d
E!tNonW*u7<Ϊae8]<'.i73e^t]QfnA2)6v}}5jqm{6\DyߧR#;$sdf5Y
`+JMg~P~uB
x5bq*<)&P!_!:FtqCM
[}Ke.o +/eM$cb\uL0fTBĠ&D/tWХbnL"R0m Y0c`<PР=x1k~^;i$aEW$iuC$z8q'
th7vXIa	歙C=t$5b:3jjIՏ6(MT#Xh?GǖqqTF6<-;B@.es?fdO)jgH老3,~7PK0  a  PK
    D:U               org/bouncycastle/crypto/macs/PK  C:U            ,   org/bouncycastle/crypto/macs/Blake3Mac.classTkSV=lE@hChw<L^.RQ#˙iC?Vd6ԙL'Ok|wuv+ߟ)OAOGA-EnVUQ,CR䚶];U0ZtĶ$ʆ/6l_
al]&|#K3ؕz]V3Z87Hդ[
G未2R"׼CyӮzbHi whdPث"
gr[DZȪpjcGʲ؞KZZ{Od2
\+obv*ҧYUkkݲn-y%鐄vh4VV<x
wDɍZ5o} IlK^<,ڰF"bH*>QqJi#*>UqF⬂QڟRp.k yg>o-EK䘫c@v^#z)#.8p:.@ч[iᒎc<+:q]0>ы
c0[LL1iȲM&%4,W750pGz
=+(o/ڪt$REthn+"[5
Z
.@D?I8cP~Xk!g:	B-ol6rK`ɗB|)/0tP\_)7!=L(||D؇W11*M:Uӝէbh-LN(CI;Ǚ;=AM4e']<ˈbYjPK}O    PK  C:U            1   org/bouncycastle/crypto/macs/BlockCipherMac.classT]SU~Nv
RCmP"eٴďJ[PhB%C{ò9m7ͦ#^'a:Í2#Eo8N='3<y?= 7PK"Π#U3FY\QM8U^ML8N1V,o8,YOy*xaw˽FvёJ|N;,놎Bkp!LI 햿NtV)ªpl_Toq<eH7x86Z5YMΠS'!Ey.TQ4ÕSZ^Tu]*ٝ&/mN#CcnB7ĦeSA̓QZiu<{ݶڡKv,5=5/ԊRQ!ɾv*UR\9ZmdͩDǯ[!5!!a@ÛCsghk12wdFax
gFŃ23
٨^?ۥݷz*!R{xG>	!FGtd^q:.( UE욀FumN+=7/`,ALn0R-`*LUp[|HC}"3M_g]-ɼ׬Si	3#(~8bi7iirC|*֟*<,w1G_Qr--ŁCwͥ7}|>ƬI6fW6fS_$L#E*;N(;)GbᇈӏRQyUS)}[RD̾H-New{NI_9!(|`FŽ8Ḋ2-(ߐT"=$6Fcrx)Ϙ3[K3g9BO8?屸Nԧrd>>P,%Hy}䗏]O
xK[I&\68qEE;f)6@K覇
tY5c\5pKP-PKJ  o  PK  C:U            4   org/bouncycastle/crypto/macs/CBCBlockCipherMac.classUSUnv
a@I` )aD*?*$PlvMG|WNgg|X>:?ዯNϽٔ`f&=;|眛/p˸D(Ad|A
RU6nyt\tgzy؍m̘+-Y,57f傻(/7UR6ܢmf<o-+-TQw}ۨnIuI.nr([CKŲn1tLw*TUZK&JU1n.Q]JN9ݨ?ȼ-=iB2cYߚs
Yv/~h[)!hqiG\KU,ŒnR`)$7*mU2mmlNJ5Nrіv}	f
KaVw̪I	
VgD)xNAL݈13p%_R\O|$۴!שGná#ǃXklC5=_Zs?9yK~LO4r^
<a~]hW*zƸ$U!hy.N bA=xK*N㜊0'ې+\\p1\aǛ!q	a1\qu.h]&'б͜n/~x.񆄦΄;Q$ߧ>ttk>h-|ñ盰##سDhI!dYmoE:g踇3+ݾ=\Iѕł6E .z5YM廢5'h4+4#Ҿ>V(:&B-tjad**):#l~Bg&2}@'D"'=?.S[!䪼NˇmQ!Y2C?~h6rXEh+HO{ݒ󳑰}&ElEngv~=I9A:'$I\%gZ"mZXZiHv~1F>$r?M~YlA[~.wG;݌aiW6]ҽǌޠ@=]eh|PKY._  E	  PK  C:U            4   org/bouncycastle/crypto/macs/CFBBlockCipherMac.classTSU]6Ɇ` aZV>ZEh"E,f	i7t>LNgx֩?)sw#`s=wsnoz
}a4($z.HL
&bʋ)6ʷFż;&Н6gqǊ3<-rՍV1nt
:ґO+VP5ֶ/V?/P<!19e44KMbV]$gyaC|Ѱr;nJN(K@#ӄ]2oS^fSZ(\GqHF1mwrՂUt/eZe7_*R}-t7+U $zZKEs4*mLgRN/(T
,Tzr@c 3:PR9HAJ+;%ӪTbQBrp-*TxKE\E.ga#W:ל>0.ċVđyahפ+Gk9t]˩}G^bo+3/+ppBCk8mu("hxi8	UC5D{ϱЂ44<o/ԣ,FXcqť$^LD,#84XL+
Hb)\']8Q^0l}K듚*
C\zvq4ɦp1nsb Zy	zGG	 ]'c^!w	$'q-.'H,/6'XJbeW u:`ocF|θY]F̵t!Њ~I!T-h>B?|ϔ&#ZMܨF}ޤxS~ AfgF}o 3>
9eˋ?%Ҷma -"w^OP0١P,zdOh>_`:<kVGct{Py#C[{GQ`YAl<"PN<ǌ,ܫ¸>1~Eu}ʂ*۲jXUzܐ6Iry㔳؅<IGvΓQFu[{fFėKG3ԉoPK%Fz  d	  PK  C:U            '   org/bouncycastle/crypto/macs/CMac.classUms~V+$K:@%BL
5R`cPz-+")%3N^>03N!ikJәδ?L?w[R6u<C5ssg=_ 8"K0%!ĳAbW#@Lt )a!';.d2k 2
Vb?aW찖SV^WYSm\4:TRu;j:몦%ꨦ^*8rRC՗<?ܗU+5]-V+;3JEʪ~|6U1l"Q	+͕+%uڴrsuҋ=?H)i(-T-ͶRZ-g5m:C[#3{V/SvրQLU6uH;}f*lV(dp(c	Hi(9V(VL\浴
AӤ}B9vHu%=GvƜ2)S5<G<V8z"1-kjZ&߲NFd{r!=mUKZN8Εkcݫdmfo[)ttnɡ#R&āV҃c#GYjjwZ>FY>a&v1znl5h:u=uMe֘q҃U uLk48H
3 8(S฀;V}6x}B%Ou,{x:]95N[+A}(1x<S#͹2)
U"C+b
v21ic㴂Ф!=Pb؇fqlSGD~)8Ђak#
zqVA+xw	8y/1L0L2\`^BBBěbf10^\Sȇg
0Š3$eih494-Ú=g7@!G|'q\IJ+)|{nwQߡ6HlOR}g?&z_BH2w/Oq6?Bfbo%\_י|W'R˸Z(''E\٠oЫIq?vCon,0+(?7wVdD(+mq7yʆL3rR[d+R*wƣR8twa/)dAG}NGy&Ip8 zNcgjşE]w${&y$y&Ԉ~NJse6ˀCkzhݦ7ZoM~Bd=\5,Epۉ&a#bsi?3.T$L/<K'"VWHxE <#lKA=OQ|b)k~/Y~8W=^5F6&SK6D#V@lb]2'"*$+$V}F_y\sZSĎ17#ީ"(h/Fޔ3Wڣ}]ļ@E+Xy"ؘ 4EmO'^;МuKQw|LQnl󽱨<u2}"3]g||nSd؋m^^7"u܅{S>i'Hb_Yݼ/v햢rM-YXXgޏU72KШZ=g!=Fc_h^M'jCe8~KS(#6&WGPK:    PK  C:U            -   org/bouncycastle/crypto/macs/CMacWithIV.class̽n0	$iʇDW&eakա@b*qj1xNH <bt`ʾ2HzK[DdE.!ʸj<8Z~+L.yHm{eKnFZiJCRȥGz3>|jhSE>G4/jDޣƽ#ZW P;PK[f   ~  PK  C:U            .   org/bouncycastle/crypto/macs/DSTU7564Mac.classVsUmaihFPI@O%дE
	H
6ٲ
$"G_y	c/:_nJws9q~l8E?G[xC@pȴؐnLW|ёё4i+Å̤ioI;|$pucJs3g/)}iE(1ͦUՉa2pY(@ W[2fƆfkssd,kZlFk;>J[m^*uZ'uS1H%Ԩ%%Yy,QC[:ӦɆɖht<@"oȓ#:6MumTut,k6T[u%i(f)1vlFQ0ݢ#´Uf"1b+l,kjKƹziBe^e*-[v)9kbT$Yf%'ɮ"^nxۻ*&s2|wyapY7/gIj`
ضƺt#y^)^RQhvBzikUvj:0 m	%D%HI#a}ޑ__MFEG_wuOtz+e:~	ͼf+9_t͖72藱[ec@a^ezpB
2vAGC(c6(M.^L㬌m8׍q> b 9 ]Nq8.qG.q){2a*SLvQ1jXUR3PU*yeаItQ*!
Vҏ*欩2:rؓT`:C#I5[Bϗ0btGӃ,HRs"3NO8XOGcD_/=Fu\Fw	>z*:}Z
9nq	Ǆ?ҞH^fH
$}!CHSvfKl;:l,
\PPry9G6T#x:؄Ŏe/,cЄIJH hjprF(Y'^d͛:Npw/M
SPgg47}N8n"2kFw9`5W8-|)0⤁>?Y#yc׾SJ$m]?g<7èHIx9^?OQHn[mO
[j*Dl|?*}/zkbETq@t|PKlL  	  PK  C:U            .   org/bouncycastle/crypto/macs/DSTU7624Mac.classT]se~6_J
	mPiJ4iEI6鶛ݘT:8.qPn2_?AT<MNsΞ|:3"ap0xK?y<'@2`2'h(9ͶkIdfŜw\;$(\~vnv ç\QK$ș˪u4GkgZ9Xڳ|sY
6jd[
4ըbB	+Hd,Z]+%p겖PVUXݬ7UgUV.j&Tt{3jT,Ԧ(ODN}RG'10cnZvE΢4nh	U袺fլfrdYUFYLgNI;eJ8MiQmFOGc-h5si\3JsO[jh5RڎeJVݱ2㪣NVm
ӿNMN8L{!&$w2r:"gg.kۦtt#3ʛgKokXǲՠ&+Ul[-`C50ԬiwnXq)i'dddS2N8#
	''_c$MܴNC7$&K&&w1Fl?}1^Ucb~8 paW*d+xG(8z>5L*Õ.L`a*fnD0#xj90Y[2+0|qaދ1LLQMj4MٸrtKKWz^-U8Aq%d(wik|8OUyG?=C(5h|baf Tj
Fʿ-54V	+(bSQ5op\'Q/S\3BQ|Dҿ} @zN*1W|')ְ00 _	N"7#%D+E<;)TGmtyǣNqﰇ+װ̝TgٟdtP܅~֫upSƣKǄsEQTbH<x}tgi`~?;q6$c'._$ IwsyU𳰆O9QfB
f{	t{3ٶ6ZVŎzk0.E)mmۉSX7i'2Gў[]pI4tB/W-pwD".=Z(
"}Dt7eKW3z|x,J@&z-+
}4,3!^p(r`4b!I	#]'EoPKATe  
  PK  C:U            '   org/bouncycastle/crypto/macs/GMac.classU[WWC&Vse*Hm&4JjކifeԿ_ZVZվ\{f$Vs9yϿ \B%x=N$SEI$SE"ʼ(;\/U6y	gx?ኟ+jtWpkMoHGjUeZfu[\3mݒ_^ު8.wVɘM%X3&e/mZ%],\aڕoӒpX,ݮhEʻ'zcK?DZtO1[[A[5ϥȅi9tNj(s[Ѷm4YB3FsަZ=}Eo-NXru]<iruVdS*-lGSDZ()׉^۫ibEvAȿ!t	ɪV
&Rt1	.&^-0xOưe1"cTƘ32eLȘqV9	S+Ҝdj߳Da-x#EH=|w6'2|p<>6t6:b抛#;TW>*N
"*3[Ň胬#T㲊
>U1TCʺ/T8."PP
idpKƫi,2\cXfaaUn*C9Y~S"и;g<*u}H]Hpi:IIs2ƈEr Ic|H!	}-hqsD`:dt_e^amB_%zKW"i^&
{Hm$vGfJJ|aR)Cvcqz:!4q0U1$aCaks͠ҷy}r,$.Bəѱ&mo@\L`80h⛧{Ho䚠:_St!
LIQPK    PK  C:U            /   org/bouncycastle/crypto/macs/GOST28147Mac.classVkpI:Y>gc~(<8%Y:²H'c! IФ%nZiahCv3Й~!{gYh{ *2;4
 RWNK;=Yړ}c!{ش/YK,[(i;ڷ;hzѨ@0p|7butm&Pku:UwBzX"q-ՇkC4nܥl9M
=cun%4-qIn5߽aS{0"D TWMDDB5V'l0;[H{QZx#i53Q$'Ph7Kg(j	-ڱdz$b|hx4ãꨆ#fȊl*+;(aRA53N=9NɌ>W=\6Q	P	1]koVԝ\&Ep VW3@<oKGZB=Rz,nV<ԱXyʼFi-.4=GSbrB@Q!+Rs]2mLb&ju鉔l舥t~}cv0N%3xB
/9EcGw1]vrզz1mvm۰KRq}.t2/fe4<=ݓi6ΕKbjWQKYCPMVQ5<;Φ3xxi-jA̦"ؔ8grC,j!bZ	6H$F	6I,f	K"	Z%xMI.A$g]vw>3h(xJjDbgR}-0&_TV^c53A6a{`9y`G_ e
KeXU2TB+l%TQ&>"kA:(a=8dX
E2lY%P"JexeXa<DDM0$C-DI6,+qAN@($78p&,7:|}m9K<D"6N¸N"_u@?LAn y_0Մ~TgiLsW$^cB	t:0 Tb*䖢7@>/{?xVn5W<E^xf+y-A<?Ƨ
taxwfgw~1lh`E,|ca#rS{E0kQl^+mPCv(ԫ,H$EBjWHu(%HR"#-(HKX!8Yy	yQ*Yq2R6_FIZ*6fE0

p$]ʫn5뮡WYw-{cz!]ȩ[G
zFndkbfB[6ZJ5q'k`:af=l0qO#غ9F>H3PCY%cu%9>z>Qdu?#ʘfchp`Ab4isAGI+$?fie1;àeB8K9<E&sc|K
Mû4Qp\xixѰPq߀p\]bK߀%>%
߃_Lԓ>#b>=#poŹgnOC_/*^oY=#[ΌCrGJgퟁ_H{욂:yꝜY1NƍSׁħd~	{H	¬܇P,\/`3|Uä
#Jptߝ@%|j^[YbnHswWԲYM@+g*fB"
C&n<QC]l<Nb%O|ХT<KYnS.bhŹ\
Ukυlb$Yh	fӡoik;%u:ǗmN{4d!ҿ9mvJ3Z'vwHpXn1رWc?OcjÏAס2Khzܜu(sWIÃ{6OxlIӋ[:4@1X'qwr
>2'\0&R4[\N-[~PP)m95T˩IfA5/\Vi
oi؁=yrO,O=|.
06$eP9짓,/~Un^JL.sG
U5-=_f-RT͕_s	ŕUq)⭑(vy0a
-?ܷN+ݨĖjZM
t1B8)P>eM
y"1J?l5Giit54iA?$"~PK=	    PK  C:U            '   org/bouncycastle/crypto/macs/HMac.classUsUmvVB[-PLBh}!V[
dMnL6HQ|eqςsv7/ɹ{9X)	5j%,p	K$,p%,pF	^	w
px,iC'[%Y1]`ؿ1%@ZEN"t[`f2m-\e4gN	v7m+iˉC䱥eUZ[fkkӾD]<	2MPg*QqUӌH(c!=>&l8vZ XI1ipY@tJ;
QM!vGDI7ɎXDOD;QsPlwP}J;H	*!;EH3KIjѯMجR4Wbd[-bjDu$"QU3zԸ59 P̈́jvɺEәƒ:Jq7*Cqhz6Ez"SZh,$%OrY!@JB@ʢŅfGP1BPF~K?kǝyN;wɂ:2raHFMInЭRS.MHk!$jjT<lP%#=zAw6>UDN]"Elq""6]D9N@ChnHY	R	4j1[&wg垂tE#j"S_BiaR/h.
Ҥ͵c>ʺgx pD.,}|Wb=|2,Pe4a5,nf 2XE0OF+D20"c52Y,NfeMq&xP/dBr$e4qRPC,c,aEυ{[-7\؆]ξxś.ZX0r!pg$,f,˰!WXJ/J%
%T XL{Å4n؛O	7u*9G9#jXNe%K&y@w;qRSx;Lz}?cY3t[^Փ 
`O|x(EQEwj[Van|gp|
@606xw^4>,֝[^:CF9nq	O6	;R^ub
yU1˚棘~	0`xεsHǰ	1/UMYGۜUNEUN~pMqVmg1O6˘8<qv#3/Cqe2̻LiP7(B5pϑ'k*eG4(-tr2Wge2
WĆF .)4<	+탰5o*HeGuzx6':إK5W?Yֆ
^7J.`Cߨ8*g&Or26ӈs-kS79vq귵=~JV+!Ld,E/Ge>G[r9}kUgYb%Yy+*S7We,PK	`  
  PK  C:U            1   org/bouncycastle/crypto/macs/ISO9797Alg3Mac.classVmSW~dCX1ZhF		Ƌ-DJb$K$,Vjߠ_(COiB:?бsn(ʐs=>ٳ7 Kv˅.«. {*AՏt7Ë*z8T#;lq댄!ݬMë{M#[qMf̚/A-%=ͭ1	.3t
&ȑo8NSfL޾7XC'V<0qo"f֣Kb=g"'dy(	sq3kfD$6cqӠ꣩sqSOH25yQOҢFD*25@$8hґ
HnuM.h,JonƂ=ɗĦiuߊi+2uPx҈XB3YHJp%,|t}HBI=Bu$WyHebpjڌD0LJE%![_!T_He!h\_h
gyb
a|6>"sCAt*JyC
+O&/Z+fAxM	ge.^Qӫ'aR77dAlN3͊23F֠FqNe(Sq@A***T48"5GTPnANI8QAi_Sme޼^24Q|mghk }%©79}9#~>|G"zroS>`t{`~
{Pi@c8kcS
UC)\E}lQ6oh؏^]P~
/O/,yU6Clb3qoq
na617AF@ԍaхl6%hQ6a6tbWBt̀GN,I\(b97Ak#<%<)$<$|'d?YZ<@`7kBZ##!!6 /26l#nB!?_@JŎ%V13K,99'1)9$	<G/j	EYmJR4Mh'ym
rRpP<n=ZI$B}(%5x0O*ʲsK
W(ǵ.s3KLn<ǉg#fuT5ܘ>^mR5ٺZ~Jí"/!;MQԸi 9
w:(׶p˽!wZ3-O'|UL2aB^ShZ9OT+2kvez>*_Kk(h&Enr+|nY]|=P%NP;X-59=SU;]]<Dm,2#iAٕ׳WSrQG؆tC.}+$QR\_ok(jD[,Bٕ?3M][@>iWn"օ͡
7XQMoj+.^n;rgm1%CR#I+'A>:EQ$C6PK`6  *
  PK  C:U            (   org/bouncycastle/crypto/macs/KGMac.classU]WWIAR!XF&j#&0N&._Z5Y-kUsfF
þ|ݓ'؍"*?1Hbn;KOl?ʼƭ|f67LV$H}7θǆ]'ӫXj.0kUϲsӴuKB"Uq\mPJ
Ot#{QhF`C'tgk5Mp.ەtβDE2n'lo!jTR=ňwwvvA':Rlôzh/H5kz%ǭwm4
Y"m͚:_b鞾)WJg;g?-x-'UNQgQR143R=INY0k5_=YϬu_e.
<KH}tO\z&mz4K#
 ͱzNp4ZAƄeqNƔ2ޑ1-cFe\.y6-KKmw<8j,`0RIDO%ޜ͉\I<<`w{âœrQ3M˹mK#𧾬bC*NᚊЯBAD,(TA#U\FTEH0(X8y9OadbX@aUAy<dR[Mr*`	
6}\z@ӳg<뵢c	\!Q9T$i]
aNO\I9IEGQxcͧft4S]3A&!c/,K-K|x=
>jc#YkދgW0NK|/aRŔhGW/	-<Z(&y*c0QiȘ`X8ܣlᛠWyh>9'uchk	&A>ڇVJ~r1]t[a~.AAAAԂPK*\  G  PK  C:U            '   org/bouncycastle/crypto/macs/KMAC.classUwems4lKZrI*IK"ؔ"RfMnwc7PPsA}|A=>n%
{o|3ۿ.؊x(.Xc))^c银`Q}?F뚒fG!j6M]Bv@ޱ],z
=Mֵj<NhɅj5Y㪑(SC2Y}ni(PR˳Ysf:#k,[EYъ%fTkXϙEMsF^-):&1zL2!+˕{|FN겑Ku]p1WS
k,4kp<Bw<fNui*jFNMg"}\]F.$b.1ˆRQ䒥IX)XfrlNw ̛qsF@ݬRrdjبar'ңo:'+3iM,Ey!Tm.Sp(W(aNi_2lAfՒQrʙ{y+,gDsk[Y"b"EE$DHx\f[D<!b'El]!z#cñt{?5=шVȫ-lLIXN	;z %<A	^	;O	"(aHz&a=hJ	qHn]8IxSVh+py'N2D
 Fr{a1(bip!à0hf8,$җN179	0AL^34mQf'9Tb?D~U:r-[߶۲ז+!PoDi~xHjӑNa
,yTy_>a 	>6'U|Oq6Ǚx81_az	H)Tf&*UW-x'7۝Hr`qpXp=|aնy6
[V[,>
n!5ٲsHoݰ#$$ʎz})ݥL6/4hO,CħgS`K5RPdk$x?_^{>\"z'oVqi7_HzF/ZVw7ls{t}$SRvz9gNJ6/'{(f9fr4di]&gzү"}}L?vgR.8'M:p{tҁ5+	.߸/H]K}l~rpe2tjbyk\"Tְ/6}?IzX'_H۶}dsvxn3/"D8kp\i{|ɹ+E|;鲽PKONj  
  PK  C:U            4   org/bouncycastle/crypto/macs/MacCFBBlockCipher.classTSU]͆`@Vc%@jV"6%Ig|:vF_,M2S;;s .DgqAIK%l(vLӏ	u2E ]GH0*#qӮ:[ͻgjnej.Y,G Rvna{&FB[Er0EvˆCT).L`Xlmkr]lgɒQ'ӥ7JNmݹOM1R5\n2w,"6U)3b)'kkT]k[YV6wLꖬT\;)˚hǺfƼUλ3qj1X;aVblPT9yVL}cVQqEk7[**^TqZŐagTUqNyO)gCH츖{4>fIn#JPkBCcso-qo'Ӷ1Ҡ[C/Có!
/1 "C5
5
@ֽщI\ex-iFq-iwBbx'	I̅u.$10pmzy9zӄ<$BG߼`TVl0.V\NHIՓTA*E㽸j<
KX')cp+-LCGP^$K:	=|c~tN#~Vk{֫~r 9D2y0PR1{EZ?Yz5ORłC`
aOb9,=}ؿ$+3
?D7Qo&}}l<Voh'|1 YkJD!=(l(D֩ϿZBv/}Li޹m?wP!H\ѣdC3wN{	Q}	8PK{z
    PK  C:U            *   org/bouncycastle/crypto/macs/OldHMac.classTnU]cglgҺ447$[
6M58M)	B{k<F2R_x I1T|O(\b4kg}&>+ ;n5``kLM9(f'ʯ%)tڨZ+J"WHf?N2魵u[lꍲO3MS2re	JN땍{ՆVTtkV1̪)8Acdgu'%dou֩6**nZ[m4֖Fkj֨
EN\EˤDZJ ;-Kf%oNIkY5=V2;Mˈ
EVFEZ+)EkjVoh[3`Soeon5K,328+cVƜy/˸"㪌+c\̝dH7M|8R!5wdqٷ:rA\(
fpV"y\
|,1LUx\kIP
9 w|2nƊ>e#{~:V:n3aXcH0$%2hYZjmzKtt1&V$5T<dLc
ҽpA%{glcK-m#d?$IɥSBgC	
(
"u (x~\C
쏈<||;d@:Yu$gy>O|mӳ	׏~>~H^`ŎV
sxoOF$}Ho/d{c`6A,i4i',e?~03v7etc̓>`A̗qagt͝sL]8dts`Rxvn8"<$7xgMfGO'srQ)zbgm;t&݃fu:iG~PK5  4  PK  C:U            +   org/bouncycastle/crypto/macs/Poly1305.classV_?˰+;*IpD@DдA
Fݑ]Yv()MBkW&6U&*o0aaߏ"?Ӗsg]Eڔ=|9y޿oV;%<
Ͽ"/&awA"TaQ0|#87k&L:"Or T5⪦F(l0Zy1օkW,3wsnn=زx{kT̘ɜ8Xo&t4i9%[q>Lctö'fѷjOebkdǦOX*A820%p騞gz:fF>TJODТ6N9f37_=xDZ7q#'b	-΁ܫ{I?R̻=NTCt(8mZزrH30ԍ4N0`+f%ّlf\ߗĴԞZ.Z|ћI;Sf,NU˜M<<96͌rzؼj7XS͙X<B;<6~\J-GVӑ%p?3*46lLu=L"<Q6Rfmv}|j֪'zhޚ+Vv%u{JZ8]T+1E4Y	w.}bR/Ș8:RBK)#i;:NĠ1(n'04dK-6W:i<<`b.f2L*c퓝@K!k\vS]|D<&|L O
_V8 Ap;9(z>"^R@k
;v垗yS 5Iz Şe_ܝRFM{	Z|0A;ASG	&$"P	>A	L	6,AJpAx%BIQIaP$yr	j!#'	*Y	9	S<
	#8O/|3>K9|_"2WJ57#7wo\vC
IrI7	E2+p
C7mKnH_q:?$1>-=*-D-AݽT)ƺkRZO\
8V8Hj(uP=-qxLe-;l-i[vڲ˖{ll[eK7r-2h&&%;QS_e:nSpSe*?WTn
޼NEŝ:Hƕs{|WxN4Rvg
ELR
a b8,lIxl
vw.p6߶T^lOPxOwrc'W84^k\(DY%pe[%1Ytd3 K$]juv
nr!Μ:PQ)9e	2**AK"#3"z9lO8	1:3Ԛ,5GijL߁Ae#!A,8o~=~pT]+D>3E7"v$Kd?8KKG?A-KS{\f-z/89o{Kg948H] avxYXegz<p_/yPtLûVgSZcG\(vE/K|#L|d³9u@9?9|CdD7\^mHsl.Q@uZYU(/Zfwt0UA4bx./_=S~=nkӚmP3K.\Gʠ{H0#oU(cÊ
eK12+yٳd'Uϓ~5ft[~7f(FǦr9=߬ݦj7yysy";x2<|#/x>/uTlO''oJ\T^d^D^0먩TU
/R3)xBFbqŪRlqcJR̸U)qT)aWjqWY&(H_TbIS`;ӫYE'1s
*b{Q^'݁[&;J"얭< K?-ĲnZ3K@<nZ:K4KĖ8n 뛶M^mJؽ|Pfc'@ ΂h'{F;vlvaghi	
>AtD&,6+<[ϞbaĨʆBic*	E{$^;3熱$Ye!Ae  W=kd0wmx:e}!n*"!C]ţH(;tW#eE&[JDV~KOF +=UOp#oQ;'n;Pw9[Gp* PK.	    PK  C:U            *   org/bouncycastle/crypto/macs/SipHash.classUsud!6Az#\Z)P)/$KMiPn8Ë-83Bk3s}۟1dlQ,dwDKۉfg
NtR
ؽ6ь5/Du\r 1y~@)Kyr(šRlk	XI-*'J(8Gc=A:ne	HJJSf9y`hEJ^wy*8tJ'q>xa-;ZBV
qQE'RŢ׊VR
tV/;mMШ9e9d梞[MU0B1ǌMaX,8NQ?b
qLF$aNYeZDf5U-;fhi;+FjY/(k=oI	emϮJS(&F$lYݶEt['Ɍ ;f1J9Gvk9fa+2v#>b~9ҌYy-o%l2UG%</avIxAB^LŃ±V^Vzx[x,n-1if! B+~/"Bʰ!9&ԇa!4#B6ЉM!İ98#!lśH4[g20p<;2Q8 R5`04CAb N-8hh=KO_z;Z)N 86GERd\}dғ}T=yOޢ'>Ҁv9Xo&PT9y
+|p^늼vs|Ty|Gq4jzy\KB7d"9UdgI÷G]?`xx<>:({.]js(qEvK<skBBh0,>vyh!o뜦H&ձ*j˭&UozS?G,)Qk.g*zzhQO}bǵ^?eXX`X\yV.kXnޕ͊݅_ն?G-.
Ԫ''%5"Ur[s׍n\wY	C~
EZ 	=]ΐ}۸LLfNF($+"g&I_!*jm'oTfl])@tHWw>?ӽZ)7.7YԄWIw<}Ub{UU	
qWҦJmh/Wgz@K&YILK2$e_o0l3H "k@DTfRȊ3	$%#~ؼ28)ܔd`6H;e""	03r &~x}[?PK>  
  PK  C:U            -   org/bouncycastle/crypto/macs/SipHash128.classiSP)j)ZW6AWi&DCI.
8SQptF6:{w 'AVop	:}>Xi5}FO%[I۵i %)Nwt,}t(pIfrH^7`Ezk6jg}Ies$gL$
Hh?Ύ{,8ҵ
cZ)*98*]gvf CwWּ웁ԟ8ka[)w˶A1#V.͘7dHb}æk韦74BT@بTUYe;QiܧMga8B̫^@fh*yp`H^ǣ^Cy9|ӰIf
[4lӰ]
YuwlW[Do)2XB#Cg2rX^>F#x
;
x,VԧJ!8nI)iY9F7v1Ì$:p1I_ccq!I~ |@_W]WkrBQO
5P+pUr"QKJo-	Jh\L"_"&3_x^FQ%M_Db1&Z{tLfjpcS'N8T'#+:Fk5ZJ9>
ƪ#eqIk)kx`<_ݻHOi0ΘXa_)<Juhҩmk˥S-ףZy)ۨ|z)xGjPK5Ǿt%    PK  C:U            +   org/bouncycastle/crypto/macs/SkeinMac.classTmSU~,ۖj 
@DIyH.5,lv?_?]fLOsM萙<s?~PJ:nKD'v3dXrFw39&,MRKeˤV<gQ*+UQ\[
6V{hqM_[m>NI5dj%fnf8ڡ8ngP̊+aa*{%a		%ᮘ%1&ő)cڅüAR&O^$cJC^hdRajn6vܢHOUJn-9%\qJ'Qq
ۢڤQHmSuƄ#avJ=fz5EW\;AeJu-%QuV.Q_Qo~	SîmiHso͢ΆiVtƸVuWtt΁. dܐqS-2nxS[22&dL҉^ D':xڨCыVWE$ţ}GS7ݙ&e˹P''}1jbs>jޞ&?78iaIQC*bUL!ȶa(;*ư"ƻ*KW

*o|PAyTy)RxͰ.r13l2l1g3PȐPi|[E~UuuJ1ۨ,K8,H
]pW{
j`<]kx\߯34gӀI-\G1Dd&Oqwgd/xcnj73<þeSvNGA="RMa'?JƁ\O
? KS"M+d]`yp<<S4SwQ=|Ie9W`0"lRX~V/	acA8#Fil6i6~#?}9h1D`CߦaJIҜxRJYͷl5MG?PKR#    PK  C:U            *   org/bouncycastle/crypto/macs/VMPCMac.classUSSW%/ĠV!iE--TAZ!Jmq
3]uюLgqQg:K;ܼ δfν޽|ܓߟ
xPN<M1Ʀx^=16<g#IY]>4<z#}ݽTO>gX
yKKeڬ1MB4Zfem'yiIt7UilQgS=MM
՝Nf͔53O'
H_Iyiҧ'Skw@qhW+,m0=mtɚD9pMGz&FROwH9+{4hQ'	kjp>os1Y32F4alnLҚط~36.pp3뜞G92(Eh-x-8_pN\h<yw!7E~5gS$\q(C+1UP񖊃*xGE&!ƦLڪ] _@3771̲Mټ}bc]6C3;p!P
Շ0^x|gʇ}=x߇]B;zN3a89Ç.0yqC^@'qɋSlEG^tbzU)ʬw>)}znHLO{O\^a[FmyĶ-[)@iZi$B+HK%\]O`7"MrF
,
=G{p
:!v(iMK~F+4FxI?GJVf\*
\0#^pU2\%X]p`ʚ%\^6rY
4
UeX6÷g;5N,b}e|r׌Ń[<_wlSn_;,h$Pʺ%_<U^*[
]嫈3YSeLGV	H<1c49BO{e\Z]
D|读cDw5PHÏ-Z
&y:JBNobUrB&+YFjK]u;Tt8P%SvnG`W\d[P}\A5S#+ PRQ)ܿۯ<9_![T9T,TuŲmAZKCtN
fBh1دq4:;"CUp<EXK/ejnRj|-cOBqݸn=/ݳgY*=6m>G:~4
|Fj]+0\P!L.#){t{.DM PK    PK  C:U            .   org/bouncycastle/crypto/macs/Zuc128Mac$1.class
0Eoj5U	"n.%&ҤBĀ?{sߟc)CVǪU:=F+n{pFթb-VH$e֥wΐsGbM bPK3O      PK  C:U            A   org/bouncycastle/crypto/macs/Zuc128Mac$InternalZuc128Engine.classOKK@ԘjzIBKԓPۺ]J0ٕMzIGDABvf{~|8.폣*Xaĵ`mnnsUXE𠖒ey"\B.b)~''gBYR7f	aP\hɒ7г`Y[X#MN3]6Z6llɵ1Kjn~DR
&,DFk2LyyW_PGWiܲ/Mj7a䡁XǎTPKO5    PK  C:U            ,   org/bouncycastle/crypto/macs/Zuc128Mac.classU[S[Uvrȁpp+Il-HnU Z"XB 4Lrp8>_x3
8t|T9	Cɷ^{>' ƑG7җ"Df*"6R#"$DJ4NL@ٷZI,4#W)YTf'n-ñnX{Ki۷4eKgm#'l3F7-@r2bڞ7ɤIVX.?R.+ܛ@1>79DSw,\b&߱=(99+j
N>*0|ҮegUVYi=)d02wt=#tM؎U$*jGuEdQK[9Le.-1q>ZʦIYrj4SFv
iio(aTUTU*0:N
Lt
(#7wtt!`ļla*.EAJY\8~"'&t }V4F
=h:5\Ĉ <:0p<KP4tNC>
mP5ta/kh;_i 2&$ô:1|m8;#C}s%ǰ#ómU~Ch5?Kef#TK@?h@tFփ>:)Q$ud'ğaI6Q,HI(gC,?"*i7e,<WnDIMw^ܽqS?':ke,R*<|nԢ5{˘N)fቒ~3+)>Nۿ2R#mxB!LKԜ~בoM^;A0k4Ne
(3!Z"<nwT6utsKUg!'Q~1FiiݴAjiWc^b+JqbCWzCPp7LqoV=E@Hܔ)!uTѮ37cXqq/1I]uF$L03Pkzy*xZQS3"oOޡKJvX!V3zveM|A37xZi#5-^ ,zVC0PPKQ:}    PK  C:U            A   org/bouncycastle/crypto/macs/Zuc256Mac$InternalZuc256Engine.classPN0=7mHP%"!BLH ת"9baQD,$p9acBg2M	I:#%a,N]1+]xZJ*zv&VziUkyzvpWK!w
R"ovM ?@`+B/6vYUTke\*	M!T14bqg콢.?lЛmҘ!>PKO     PK  C:U            ,   org/bouncycastle/crypto/macs/Zuc256Mac.classUsUdۤӖ~H6RhŰIi)PZA# [mrInl8x2cSG'?tM
:Йιs??pNMɴJbiutBʸkOHL#	2\O	D72CgL@`RIY"XM֌-
G^iMu`Ebf5)IB1g'>m#dgwi_X(*f.5vSfȥcD^37Q(f-\j03e*co+E+\W	˖]B֍L~5ǞHYٲ,f|sƯ!o5-8N^6@-Liz$]i9U2nOv,Qʺ.
BA{!b!h!CxK``u:,0z`+T'NN8dA}(Ҿb4tbyJ2z)}N떱Vܻ_>LEwSq*N0$zpH`PE7ΨhF@E;CAG1PxNE/CU"$T*:pNE9=
74FFgx}A҃+sc:B.2\bc4'S`2UOf1A_vLXf1Lg(nMSE\e?&z[SFiO'tRT4^Zp]IEve+\oW& 7dqP]	-Zz]\a`)[;Xc;EKdKGWOMd#$vY`U|Q?
}HPVy(u*X;Xt3^"?5hgbol	z~ɕ	P  A	8iR:

Gqo,xVX,hԵ6eurwlK|UU7*jWK)%}ts[ނ]U䶰ODU=m_yomFPѱv=k4Qof\=W81R5竗	$Ǵo٫%ڝ6%ڥe];(S-j|#Ԓ6%n 62Rmdh'QBuY~W'{x(;Ud鷶T9o8me:6zZ؈PK'  	  PK
    D:U               org/bouncycastle/crypto/modes/PK  C:U            3   org/bouncycastle/crypto/modes/AEADBlockCipher.class;o>NFԒмԢ̼t̂"FĲDļt}FtҼ⒜Tʂ|b}GWGlC3030302kh҆d5#+#;@@ PK      PK  C:U            .   org/bouncycastle/crypto/modes/AEADCipher.classuQMo@}ۤYh~ |ӋJXBzI+Y
-RZuVFZOƁBPy3 p(_^*,!,«0FPA[pYQY;yRN)HMDs1KT,)
7N2̇t]mkHX(?U64ՉJL'ms2xi@ܮ;ί:GKljY
JYNS&45xGзeEl?8	z:e. 3
BkN$$:;{{^ɱ;kx>+Ǉ#+Zx<;ހ/Ŭx^3xF!+|R9/Xǃh-V/YksTo`>e'PKN    PK  C:U            2   org/bouncycastle/crypto/modes/CBCBlockCipher.classU]Sg~6fCXDhW
I4V-A[ӂڂZ"%,73pEƋWڞY>,Ё=9{W?>pH&КI;ސKw.Ho
<oA~#(^i	E$ݢApLT=AtkSѸd9PH8c1e	pkߴ˚S̚>-j'$$qE<!

2%\	8MØ4N%agYVq)}xTX)Ӕk"{Mw'	Z5
82z٘ezo:6+qk%SB(f	Oih^riWRurR87=}V[WhY[n:#lCT8Yu{<}5w۩yhE6a-KN6j:@[y]}}0ybRZmubƙ謺`{K:}/7i5:6羧NQ
yaʮ]fw+hVpXG SAFAVANqG!}/-WQ#NAs&"E>}wY_=z]M||7,O،l-6^-PUa&4͐b؃*: hD\IPTCB^4x!ЎwUЈ
*Ā

U%;~zp!GCIt$*MϒƝ$y5a$1í$'8+3`M*oA}!2,<C8"3Z,$Q`I>I4>iBF@2zF3 HM2@G#d4#
`	1<OyJ#I ÀrN||t!SY7}B}wsJk-[4-k%mrƣSLs%R=,a69o_9sH%v-lk)IAS?#ځ#.n+NSi\q2Ό.Bp%T%,",`rEԞPdݝ~P3b&o~3َ"f栮ǫeDZ/KKst^7f<*=1B>u.Ԓ{
<8|qc|1߳pF["-Ǿ>te;Rx_|)KsαD{	nF+4JL#%D4"ҟ[+9}E)dM9e;x^HvS:vZMt8Q=qv-Nc#qD$H_PK"N=  D
  PK  C:U            1   org/bouncycastle/crypto/modes/CBCModeCipher.class;o>vFĲDļt}FtҼ⒜Tʂ|}ҜLl̂"Fm\JsSR}jvFv&vf6F6FV0  PK9is      PK  C:U            O   org/bouncycastle/crypto/modes/CCMBlockCipher$ExposedByteArrayOutputStream.classP=K@}s3f]?N-,,DLB,aw#_)?%n 303y󆙏Ϸw '%5?ĄI^kQ03BP.L|""n:3F6jw匒K±61u6P"5MX깲"I.BI^ݶr+m!!"(:Æ?/񂄽$|Z$VYyzVУaWWl=wͧg5l}PKzm     PK  C:U            2   org/bouncycastle/crypto/modes/CCMBlockCipher.classW|S߼MriZ"B)@TrRe5$m$MBrl`T6lk-uOuM{on9ν!yw9t8aNAA
B
+LA-
V*^AR=<UIpgo⦉pV8§w׉+l-Kc!n]lP(|tCsJyU24Ka(vPTr#r^u#dd2T,ץ:3P;Lgh$qk:[0B
$Lΐ0yu8
#mll+ibLWX>'chӷ$T&q
)'ARBW$_B2$o*$sz"%itb!5tcNϤF,m%{9eS!"$bFN9&f<ВzF2ҍLY!x,kͭ]F7C+M%<ޢ0S9Edn+EEr=f-TʤQ׌Iu=G/
鄞K&]͖3l϶$AKsdz3eUx&uy	Q-Ixsls!Kw5XO/ʹRz	uzѲ5[ޟ:Ơc8Ǣ4ȑMd*6
Q΢}=8%NLX2S*"bH)ַ$ 8f0"
F;YD:sL
e\WÆL!FJoi#2	塮D]F	ofdUb5s6MIdJfSaN%>9\	q@}
ߵ^}Flנ;*2QѹeNWQtMkVt|Җ#*w-\|(T0N2q=_tO%{QTk*oq(jو>kxxa>rz[G^FXTlfAUnɷ/_Y8q^}-TFƬj#"[ze\.xVo\m2nq2,]:e$-2*m2:I\qj"$NAvQx֊RtƬgb&p,tQM+(pή,z7\ F^wGT8iʃa>UZ1%4\7ek$<Xi*V34be\*71*V*إbTaC7å	U̇_EJ6JE
xb..# cR1Vq=cx*A~{V:|DL|Tkۍ8m`$ç>Ͱv0|փ4 !丗 A`3S02l}9~;uo0{g/3|̓Ld`x>|aaԃ/eg[؊}_b*]L@ĩ0鴞-qe,ې1	'
{e-%h)DjW[_]eSvh'1?iSpb{{dO
8',J7Ql^KߍbG0~5KG"u8_%P$r/Pq;~>Fi/Nt
&cL%xujD+*EHpIXd ?[`^!ܺ	8A<$:đHd
w70wj khWѮ>kןxd/)Ll(rdCx~£زǠDf81p3g|wZ~2;2|kќ((<M9h)CTOd<$h%6Sbfm"~n?<eǢl@EzRo-_L-<DzEk%'KƂlj08cg	+5MwÃ[>U/3kT'Kwe+&^{2vO.~k40vFuE?/Ebŧ(>nvyp<Aqh!D1nO`ma:1r:2K`)_+$P:0֔G>^L#N~[p}쓪N-,'vcj{2-l7Y|>)u'jDTdA_QVS[dEaPH坻X=8 (vsۅ '2Î`ԫ9LD=ǘќfWl5GpXkb>ZKʋ~4or#j^8%h3'k7A4_s'ILic80$R*R<BuKe P^4zC޶'
z5%]LTMrAX&X?pre-</@:z<|$\P8h4=7	L:+K/E29*TN͔eJm&ҒW ?RG_~E/po_ҷMJ8SyD	Q}JpڨR%E(
4%U8EE~eGTޥPP	8I?*<AOS-n_ٶ{fu5YN~`+ix&	|<b#ڧ" np뚛Fݚ{
_U]H%8A+6>ߓhi'c޲0	"H[Ք|_ϜӃ~TwyеDG%jh,s'Et6aM?x|ӽw=Vy0qKePK;    PK  C:U            1   org/bouncycastle/crypto/modes/CCMModeCipher.class;o>vFĲDļt}FtҼ⒜Tʂ|b}GWGl̂"Fmꝝ}}jvFv&vf6F6FV0  PKĠr      PK  C:U            2   org/bouncycastle/crypto/modes/CFBBlockCipher.classV[wU&NNK/&Zd.6-h\4
LfdE	O
}Aײ-^xtO'MUYˬ5o˙v !4FBzvחŢFV?<&!Y$bif%0)=RO$0qwʻ{)XJdeO#EDҊEâoG4ʟ3Xv~lu˦iڔ .I:=_2	Aݴ-b(YCwnJh,bX+Ka{yӔМ3>3g;ywpH+pJWeq2dH搇k8%[$HpB;%M%3i4ɕdYݠlKB2ҐKatVCCy3hL\@ZƙUr5K7N.9A]֧uFRo'Em^W{Vb
h6hX9w&JlJ
EN-Ygiu,Ra'Wby$du2#4XWtG͛>>4>غQ*ygiI%r1h葑+#))O*c2vH4$9hn-74,{bU}-Gan\ȫ6[=㫵8an*-LZ/=9BW=tYA'hUЂ6]0"8	4N!+x!WaϠAN(
614Eka%<AqTЎCl=\4^axaa(1Hcf{q2>gxMa*ΐc?b8ހ}eg`NUOkw7n8A8Mu-M(!}[	ɘ'BRK)Q-8B>Ud·U#-#q=uI^T{*,]CSm}0a
6Bjt9mHÙyR{]%9,5SRQ`saH'd9S)U52;|g{]xR]?bIYzng=w
-×̽g	`uPKw
OAw$	[-]d%oXkgd'Ero[iT.6{-X5G͢Pөߋ`86 n'}
<wgbyRRAH":?݄zY|E| .P*:9z)>
bU6o\r)%uVc㳰lTn?+tו(ƒ3{dVYu߲,92,XIR˲(
ݣX7$٦DÅ*vFWa}XMTb%kJB܃xrU1vxq7&.WLCI&PKSn}    PK  C:U            1   org/bouncycastle/crypto/modes/CFBModeCipher.class;o>NFĲDļt}FtҼ⒜Tʂ|}ҜLl̂"F\JKRsaʴq)OI-wvs2 X8X  PKc      PK  C:U            2   org/bouncycastle/crypto/modes/CTSBlockCipher.classTsUn&m

YiRP*	E#ZRlmHw3-C|tL_xqRQȫ/8ܻ!	s9w ^?vGԏ'2"I^Ny썈ŭIׂ jth1Ld宥rYf鹜QvTrPl-Li90Of-
ML;ErfyJYpa-T\mUxLC-qkuh%y7sv-!X0d#A;KUvn/y.Uf!UK'Vy1xI7tD2J'Ңa:7zQw(P&DGVc!bF^y7C54!ZkmMP3-\5GؒZxӵ0ĶD-ₚ
6b:mhnˡ
Td`+|Ʊ
}[aQ,/3g	ڜXZeQ/^~Cvhʶ3*iXuMⳍ蒱WFM>e$「2eDd00(qslG!'6j䜑,.AMA(
b7N" !FE Ahaэ7Inܤ9x+L+pf+<<0&Z	rIky5L#XBv殝\@9FO,R?yx]vDt
bM#3]l
*GcwqapηpϿgߊY;PGZdD/SjES	/}{{(dv4L\?;o׳`yEO=K7eTe7Gs!i$"2#=}Ϡz vʝ1-ĭ3t|֛gZ6Q60[覎hs)Qo/k}l}UrBV䯰G)r6]_3]5\IgN>J`5Jh*W	AY"eEjSXX	dGUEZF)9nDRvtZ#+^UѨxw<AF8?8\PDZiO~	X%^NPߘOx{a/bOtyp~C#\e|ƿ	~]!"%/wP
'.O^o{?aB"EW)1լ⥦w7upRJ!Y+P6Wjd!K&YtLysUZ&Ӹ*RcSy8c2o=h;:7p6:ݥчaćU_PKŶQ  (
  PK  C:U            :   org/bouncycastle/crypto/modes/ChaCha20Poly1305$State.classKO@* (D¢Θ4&.ܘ6	?˕?x/B2[33盜;7w> 4'<8\þ0-ѲYvMc	^9՞^;ӡl˝eMlgYY\j;-*
4q4hzcO*Mo8~U=i?Kڧ(+ؿURI,%dIY2,K@ycC e4?~,tC5r9ls[
/4^&hBx8qZ
EknG?pw#<5T/PK fN  ;  PK  C:U            4   org/bouncycastle/crypto/modes/ChaCha20Poly1305.classWxSǱG9A؀m	l@pN+
R6 
$$9ܖin+4%)-)-i @߯꽽}{y7̞cI`;M;;;3;3;pXFB
4,PNC5հNz
iبa
npK^+LrV09Hu%֐a	,^OUHfgjWSִ2X2723fws.qeDW[:yKgg]ƈz#4,;ynyDd߹noYe5ܑTH^9`CHv]4OsHuNcm[#=~";aWnw z9gk4kłLJF3c\<$;6wwLKdH2=J+FL0JéLNIa& %
AZK~np+Deڶ $+M[`'ٸ@Ѻ3jY1+FI#ۻQ rEFsóm}e'4c]$O鴕d]f;jR9M(HqnOՎocIi;eFJݭE(ʮC%-̙IфefdJ򱉦ٜGa1.V9ZvVcYP*
#i>T4nXu'Ir-yM-Qfw(@TP=f4moJV)WedXɜ*7({[i;.Hn<+n70[fr%HPuItdFY]7eL}92c	TIdQdضv+J[ZT$2Ph<20esyHΤ`N=
%Pjk<KXX$gaP&9h|NqҎ\c*3ԲY"6O[ bj%r%NX=SQlp%Z$yY;f:?1ƓV5k׬*Us-!f[5FR1ݱޠgWd¾wqmzItZwQT\zg-\[I}*8i3&.2IEljAoRɜPydT2T܌emi}0IT
t!{sԞSYŠ!**nWGEBňQwx;Ux7'oV./r
5\yMWnq&'~z͘qj-k"i/p{sKf-/~jTV^{gԛv62Igs>ױxC76cfC!͐e؇؊:^eXca'ރ7
;2RkL۰\WHahԱ
+ulGHG?¬Iput
-:ލ:t܆:vciy)i{g2cxK3|+_e׽؏zq dGo^Ͻ1
ay ׋C	GK?y1δ-o3|_?gß8o0|b?`}3ы<|`0낞b]SrIU &dt%E
J{ztp˫KޏASkp
XEu%Ӹd^d>SR@m%&J\8e|ڲ8mZe|dKC}NKGF[dA45h1S@^TEqYuqQ{k(/D>!CۧCs!#8|Y|jϒ#{B8z/MaT<R,QM܌kh6+>sthPƓ8Ш}Uc8Mpt3)F} 
li$ey]N
פP*f
27N@s+/1G	?I1[s\b+F	}O>\d#<)v.Yk]1k]zZM}uRb?0Y%I~V1'ŃC.jݓ"DU8\'C.%/cZTpL4Pq8Ja2(b(W1#4\<T6"~U\Jg͎0?9z"#صi]#NQcOFNPk4gѠ\:]{;fѺDڒolZ7rF{:6Q^kG
0	@*"uU㾼9|)'ghŃ'wrs!0=	>ɔC>o^gYk ihD؅bFpWUT̿yO,=w~/~V Huj\vL< ֳR+FTrMX}ݦĆAK	ebVFX~MiyRQ\[LCѝTi/\q>tPfp
I>T<7puX5jwרMsUӱ<T1>u`'d>es_Xs˧~Zq:w/u{g
h
Ys9KSΑ=S'e)65@J\xޖrSV^rq"w]湀mpNhdKu]r
Q"#;))
yIqBUǞ2C>_^hgmRlS1(?+,P@Ͼ1X`H\Ο&\y #RtuQYDA,s-L%RM%!0PyU%Kk-!?g-^U;wf;nE~oey!˹ء=o>Nwh᡻m[QkOsY-먾DYn|C=}	[oG}e:/C,yrC;
|~4)'
&6;Dr)DH-ʦ=61{yiC5>h.tsAN3P%o!pydDnhT02)tӘ J0/N2鄍myXUٸy6~xs~9

Uo٤@5+zb]pPA?
07=ftOrŒ{~k}x+I,vtwB!>=zy*)Y.)d]>sqe4ڐ&}~Hh^%bS[.ϜV|QUo-m-DZBUjߜh%ܧ靷uPKxѼ|
    PK  C:U            2   org/bouncycastle/crypto/modes/EAXBlockCipher.classV{|SWޛ44IK6*ƣ-Al7VmH MķΡ8Wk:f|m߯S	ܛGiO~<ߧgra\uBZ] -A7Δoo]oxooOĆ59"4=Lu:!xlp[[N_D7u_Xo鑈Cpj,iFPO}T"loDOp&IDKtȊx2C2CCL$|Dʔz_,ىK7W,ّȷ2SO&x\S)},HID8F8bô?KD3$Ha;$O}CCpon	ZX31Rp49bH5Ei#Q*J$vEz
Ec4T%RxIX:lmD*jvdK/1"84nYaۚ^ѝiZIS+vw):2#u>$9e*#"0
C^qh0)KΤi:M5d&|롘ub0)I
gFy$l᪟c)%Ka.R"3X-aK((q%/<bloH8.ڱ+EZlph0zڌ!DH_b(MPp1֝Tr{9R͋qwYysnJj5-k<.OQK:s41ҡζsxu~ӵtua_Q9)	"~nW<"}gEbm3] ^"O
v"^GH	.3au t
6Rѡ1ʇL$2*ޢVm*UtM*ث[>wSTUq
nUJiM/XoseӲ?4o6^EJ<Շ_<=k^9(
unZ`I|P4-yKMzְa7ChhbXz
3`Ű
7\&pkȰ!Tha;i؏J]K5Qa Ya4˰i{5܄i؆|gj،kX|@9R8A1|#e>I>冁bƧkv#I7b;ʐ`Hq7~'N2|+'upq1|[ndy	oq_A<pqg80eGAoa0}`t$iSw@Q%C{d>3()rZ»VU$M%tTbN#F*+1R*Gq=
6`!֗Y~¿v}	gG	Y\@/8L3,yv~/K`dd,,fKGP;$;3OqZ"[\N#l<5?9Ppw6sǦganu8 "+&\eq٪L$2h"%܅8c0#8xMYa`5^)C
+23A<n+Qx5Oi?	(WQq^pAD$}43(vt1Ӯtq(gJgmC*B	ZN8EsdH.RPUXVySX#9o3m>ce/k(%F%jTm3Ue|lHتX	3=rO5%(l-6ZN+ƒVϣ%[ihn9.f!-[n$K8^+TTC}e9\g/escZE>,L(4YP<譛VЏJkV|.HosYo)>5W-E){ף4(9@ZTJ+d
+.!Q9^;tral,Rg)ǀG40*W{EO@9g |m%@NX'4NAv݋"sa8SXzS>&𶵒K'\|^њH1zKἌ-j-kD!zu%
VSVYv5sou@C>}{${@8I1x:YbKX%9l)ӯTG
U'Prȗ*:%RAD!
<! UC-GP,t$$
t4Q6ZuVKo2<za L	=C,eR.	kOeQg{m{[ţXqYVM{fj)e胭jWNBH)Q]	nzVPKd-	    PK  C:U            7   org/bouncycastle/crypto/modes/G3413CBCBlockCipher.classU[wU&(IJ@BZܢ- bAizH)? .YXQ_xeiR
]i}|?5k
%KyFr@&z
{.^熲qM9$A'$8ɸfk;QIT5'1mX~C$F&*q\|\y#Z*ZWmmdUoWgMKeR ƜcU):M%ψPeOjGn4aYAz3ʖ;YJ|{0
TֶjTO{X7t͠D9횖54-(kƘ]W^CV1zڌSsDnn|]7f.Ņ#eU7K%"ʺ^uDs	aUŮX3=ox>j_rNϺi.kT0j\3ȨLٕCRU+5A5%WZZ8Wf}21(#%#-cHnY{d񜄁ǨM$QcͼףF+N^||:ϟZ-kʑ#B&=j?!GT<u*2۰I3S!#*v "av"b;"*b==[ХQ[1n	U"CT	Ob3^V^aL0L2d8pU3QL#8Ũ%(%9So2\b^gxA"D؍C(2g0p?teӺԮ1zw'YmT$J" +vovk)?_h"J0Re|,=nH\B"r=6/ĕȟrxwǁ"?(-r%|ԀI$3HPa0KSyԎCs
z"AwyC.ė
D/Es=P<+@ѧ.&鴭QO鿏ѩEجqIW"~,gycl~XJqvka6-Gh#/
NqAy%_{H</{\Ƨa\ +5ɓWĕE\p[Iҟ8.$$/XIG*_X/l =94w&3^WfxŴgeíO[E$&u60Hhw3uN/PKaV  
  PK  C:U            7   org/bouncycastle/crypto/modes/G3413CFBBlockCipher.classVSW-	lFJj&-H*meY<(񁯶־St:L@~C~h95`)w=w=ßܟЌ\tʅ8,$Jl-cvY|yaP{헵1s #b(qHIT_gҦoD>CID5_iFy{|=-peJ*%F)V0LeI/5d&A^]10Y5
RmTFJ<X8Plʌ%ĊQ-ģ<QlӣI#fS&$2)e^IlD83F.dfƹ^/bNPN*NUEt]*zĵy`BL
qfgD4\ςlԸۜ4*Uk!ɐ]]Rti9 ğ:yRxrTK65oo|ʧ|z-7~ԌBK[|J"z=)e$U-[ZZQ&Lj6dpe&Q#"(A6!E$YND$`K2ڴ[}'V~#b=1/Z>~ysRo6|0۞j<d,Y	RB-C#nxNBa
j$T3lb3<$lS
JZZ|(a\63ԡ\n	^A!Ix$aX.	ka	/∄z.azyg8pa
A!o2t
	i7ȸq ︉wAaPF7"pҍNhi7"c@;N00qhcY|Q{N=խ]wP@p?,ޖKVے`I%dmYkKiU' +@`kgL챉WQ
a90dG罷~7 mӸZUŽ<i\M.r8#r,{=.=.ݳpJS|"P>OݧJIޔks8S
y|\眓řPaU9ɘCVƇ&4 097k#e'본#uGVXŕTD<pN{BKߑI(lojr5.BGJ۲5Wȥ8%m9٤6irS=U;Ŋ+޵铵P2	倗[PVdδ*h{^:w@.phrc)AZ
9s);p3	ԥ<>-֝X  n֒*;f;,?K3]n.\tf)\+'Y|B}B3;X L҃<m_{ҺbY7>q~
Ob
?PKM  m  PK  C:U            7   org/bouncycastle/crypto/modes/G3413CTRBlockCipher.classV]se~tCPZi tD&`iPI4f7 ^2
z8
2cZ

tsnbysssmc =Շf6HD:H#<;hhBy٬;ƆȦ7ke~r(5$ɳk'u[ag¦aepTt)#NH/FNeQ¶nep޾0]}B&)^ݶr:_(ӼzŖ*};eHK#!t#N"-L66m4e˰MĩQ	ur)	*mkziɢh&Y$Y;AxM2vLIiǒidtsΔr6
N6oIh_Aq(eM5ƈcgL5'9ಓr1rvL,E¤iF,mN>&2JD뱎>,*,zl
syWOPwϾnjl͉Qa&觝)!VϤ*jrB+,J)T9`F([Sm
*Ds_,WDt(Dt*RGAL^$^E9KhtʴY_~(\w"U]˞:VGM2G^T(DήٞHMip["ISWNVWvEZ2la!b;dxU3ba؆F;^OzQ
hRFB ؈<{aHNe$Ul|cq'e80A~i	Ô#G~acgxaҏ7pޏe0Ĺ&({0\`wQNFYç^[9Fi8t#@XF5b16b$UVO!I6tӢy|Aoj0q%^'.i
C#Zqp!n̢T=3>MVP*jϬ`F~E=qׄ(W@]M- q))^?0p:qmekXz̮px
"
<qx@na!KwE>҃;u>Zq)v5DЭ``-
Ndb\]H`J۵ŐYfx_k!GlrqCUY" qo
%aewc\(ޠECjgXi46(ӔJ/QCF:]iɿmni4'xU/V%Tаn{6u9˓[4r{fuDy\b,ǧKT&aFm[ QH6/f#JqMB),ڡ% PK"9n  m
  PK  C:U            7   org/bouncycastle/crypto/modes/G3413OFBBlockCipher.classVSem.,-mM  V$5ZvY&l6mS/z=8>'_`g렾u<g*e9~J5$IHۧ,$8[X]&%j!֒|">xz 6r3sFıScd1\l-+af[:cXh?ݚ%Qrt)	>~hfY"7Kl[+U$z	#:]39"NFr3֜*ZY9vJ7I֧3`M;e)g	
1I#Y)+O=(b1 G*ȼvCZ.KHkƀ.dE9wK1sԪ-1RطsL./dY.~M1+5tlu-"E1cnU	CXD.mJ};6$cfY]9CO[~b۹X<|lcX4\aEOOlSئ#mm4F5(ktY+#,]*#"CF.2#xj#ꓰ'ܞjW8Q\F)v2m}_ݜ̼НLI&w<-&o.ϢIA#*Ͱ_A
ZZN2pA@Vp
BzRZ0+8P/+8xExU>j0!aFCWfC8L/z(&^cdfB*õx! `xgpaaAgoU"VU^hZ:C5jϮ޺r'xA7s:uGY-_BN#	%,lU	T #qcɇK/Mw$Z7$;~o``GCN6U%c	YuoKd	Lkm7#4Qr{u}].=r UMKzFD//^*ոtH6qYجhVvoGKU\ ZIb6?D2rJXF`	=#n@j ^n5-T]߭FX»dgG$=OQo!S7"u=~}Z$-pMA0z~2|A	«!gR\q'_'ALwwM;;Hy^ld7;~lňup|P.˝6օ	PKըG`  	  PK  C:U            3   org/bouncycastle/crypto/modes/GCFBBlockCipher.class]sU&$ݖCi XDJTD-զ4P|6٦Ml;qgDm:x~ /xa|ݥJ99y99x GcY%n21`l_Ff0~]`,Y%gHBˠߑF9B-zjX	myM12
Ǡ3ӣVdQ_WcؤأVnTRŒ 3l+və-$Vi(cVs9Rmrr't^MFOY6%8R6JP츄s=mV15Mv^EG	YMJ|P^2<g4$4şoci7JڍÉTuG33̍jjw\M[ZzPywWuErIHve'@p>ЌU%<@&2y:hU7j57e&f:gAۨtµt/}ȩx%`lWCA
QK
v+*)K3 e:&}g46vɤ. 5)ݴN0)5	މMem>x$/ҫ/B]{g>'+2w50*^ExVxNfSBVbt#Ah$B*؄aid#* FT0WYp$~e1#cqqR#3x%88ɘ`eƫ7 NG0)
aOE4]#tg:/WݳqӧMO A
RF8qnKIu[+!Hd%Bo"*
د%]E\X@8[SzA7k1	Z70q2x&`s3xs<N^u7x
Fko{=!	z=[6]>mfBNt&暰:$B	L5q&_aqVxU
:H~(E|k[}Q+S[K^7ݟ~ԅOw:˸QOԛwd߅% &-3EJefwJt{&o@K-A9MV6ɞLF1cPciO`s5r2ߪl+#/ȠdږC3B7~5YrZ@iAaїQi!KN-
A;!1,U|LT!b.g
&C\!n7	^~ v!q+~"n1Csv}/0PKXwX  K
  PK  C:U            2   org/bouncycastle/crypto/modes/GCMBlockCipher.classX	xSWv>zғgXdc8bҳQ%GfLۙL33I4Nfhi͐BtN2}_w%ˀZssr9o|+DZRK1/5yK+Kz>/z/uyK)/˺$Elg==~g$hc;sȕ΄)FiD.ֹ!dK
Ov0S5QjWXn*: +[%ŕZ˃0ic**lP
B62&|ldʌDcyn߱C=]:  H
sd#v$gd?ؙDndf 9cI=eSX#HlKyV!-WFlA2CØ,614+
ued8lK:"oT}%#%!;OTh.Yԙ.ᶆZ9a+r9k$T<svؙQAUŦ\{Ђa$%~xB ?f*qN)Xa(8!UOr؎RˉH?u9;f`W}"L75h\LeV*7#iKCz2@*kepǇU(G4xUgCmm=HJ!;S9`i
Z	쵏}z/K]\m%Xl8l5=JG8M'f,-B f7sCECa򵚓>&E΀[]RXh4JsAqI%meZi{ "sÃ	[umLHv\6'vyNpaMrp}8N7e=#yGH4_~
n7۞$S\V*{1S̲b\),
tzU+MRU~K&7Нqb(h9N$`TnYmN0?>Vsmqsϑ/[<"'nS4`6iΘػ(r;@bʧX9Y]|\y-.Ke3ZJș^Hί>vic"3ٶuFiQ%x'%i[𰥍,wW_ڶf jDcU+ٍ^~R\v켍3[:g+]+]ǳ9^|?oQ~6NtJ4SFNߧ3:}Tq~@t:I>#:NSew h|',ٲdDow_feK!mf.F3bdMwzˣf["5q
]wO;m]w;==ؾ).|4~j1Fjgxta9aj5k1laʰaa!463ahГ4n11ed C?g֠2fA{hAOk!
d3gN~=KEI9ZȰȠ}ؠ>ǰ^g	~Z-#4aO2,Kmp-ϳWܫmy<Jz~u327~W~~7[;{G'>:#\>zE^?Y	AceQWoU/w/7g	n*},'1; 4י<_2
@x}tGo_G?G27of7z2C}rCj{7b5^؉c֐|L8	iũxw\}?dl#%EK+IQ>耢]VEQtݡhߩ(
W-j~5ަ%mJ_G~U^bbyy3/*٤a1O&Gp(Y<z,.p5ŰXK|/Pe:WW5._mNUq1%	TQqpN_[]V*jcWܱ7ł(_5<Lg$\^AEN .eU(kUϓtm11+&DcLbU:즷zw}Ql[Ř>8&Lh<f%_*tCVfP\1}1SzL԰8EK
GCPK1T|;ަ`u4"i4iVw,~;&5+YV`\LڄuV4_WL>iۛb5j`|Ql,AlMUxz\ho|Isf<_%u~4q vo(@TH6^1)-3%&DwwqܸX{dd=}!fO%_3.*shPy1ט0bcd'DD5y3k$9l[Ez2;&u|:4y 
,t).`o
kWG@=GdU%	<`	(}?-W;P#\Q&S:'Y]T)s%Qb۪:Ys$p*{z%rd&7B9T&N4Wx ǨN	{ȇF!+n~FCoD;| q1MNiz:e!hʝ x4(_xyU7Уxd\BPQmCÅɉ3&iÛ *9>lQCb}9
s淐xXJBsɀIWݠU]Zqt WIĹp[9e]l59,"9yrjYJ H4MȒ9i>
`Pdp痁IlD)<.zP+d`؀C
L\%Wj>CwcoM+dXhj8<϶}R?٪Y
PH?LMteZ+pʮ	tl:F_`,b0D;}]Ff;JMU<f/ўr{dHr4;R<4#-д; }k B-nN-wZK!^HUߧus]jAqA҆)E!uk!/|Sd]s|+Yf'db,LUaBաH;#͓Tb=C5^,'n	 KgG UDpB|}OY5Z^[xe2qs>[ZsI׸37m\܁X)E#wQ
jrNP&*
E9F
9W^MTr!^a5n
gz/7ZO91׸<9PU
Z(j֬>ݧ}"Ч]hy";>[:5c:
T_Ro+G黡P3b'?wܲ*fy%=:N|	+mx|iNI)U1J\^Ob<wuMU7Ro@4aVC	dB3:7]5?KJsyS*~߭*v(q4ۢ|ýaJU<'Jێ߯^j΄aOxS@Nh8}4JZH=xS
u7>kkMaXRF~+ṫ0)i0U˺{b\,ʻRᜮ6q%̚UtcNސ}FS窧srչ3iW,:i.A4nMIx!/PKJc_     PK  C:U            1   org/bouncycastle/crypto/modes/GCMModeCipher.class;o>vFĲDļt}FtҼ⒜Tʂ|b}GWGl̂"Fmݝ}}jvFv&vf6F6FV0  PK\9r      PK  C:U            7   org/bouncycastle/crypto/modes/GCMSIVBlockCipher$1.classK
0 _j5U{݇'tQ\4cLJ^ͅPb8f3Ò 3uN '`ƶ6w-&W	;ްicǢ:2Zc'-A#)ED1#PLC.P9-#
1NV PK8_      PK  C:U            A   org/bouncycastle/crypto/modes/GCMSIVBlockCipher$GCMSIVCache.classPMO@}KJ*~x \Mcb{0.jivkQ2NAM'goٙϷw 'h1rg8|D>g(1N}J"!Ce"Ժ1w2-/uh%Ōjqy'Jlc>od/ݫA脱wixOF{Jv/~LTM&mQQQA
شPÖE޶ԵKi(
Eǔ^CnmҤu@^cv4~we7D=cxRӢ
PK6    PK  C:U            B   org/bouncycastle/crypto/modes/GCMSIVBlockCipher$GCMSIVHasher.classSNa~DKuU<Qn*ZQJ4`L1a@ui&^y光1>:[E737~1X>PsEVzn@($<YU=E2#Q6R^z-`F #9+T}}2*#k֙'+cos]|,\;*宵V&i֛bU۾FtfzEҝbP钑얓x&VT
)^W(5e(iT"%iSD+0˻n5*^P{34.uM+4B,߯dW|W閐=؋^6R&!mb N0cj04&t4LD.NaygXeqq8QX=b,,05H_ۯfk5,}at_;"rkIi(?!}p{xXPe4d8>:AV~'IgWz߻ˎj5_Jt`U'|0vrx?8QqIcGqh:Fj\6C9&CXoQ~u~&d~gYR*m7d^fn*J~r7qі5ekPlV+uz|~M|YO//}8?ުs݇1Z	>:̐LCGBsڽ2탗6v**;j?tfBZw(%Չ$}VwPKr(  m  PK  C:U            5   org/bouncycastle/crypto/modes/GCMSIVBlockCipher.classW	x[q{{ '6	hʰMJC-Hˢ|AX @lr.mԸM$;N]6ЕQڤ9&==&iz_%3-QwgwvvfvfvWE RSWN

*lSI;Up
CNFUg wqAr]6jڈRڎu\Whp^I~#GhH;%I)ETGlV0:y}O9"tÖ.==.aG"Bc#j"dG|"j13ƠOŌT:6tf͘ə:K$cPNki9ɀmeiODOHLdi:11HdPܨ'clIӟ72 r?;C{#ݻ0:ޮkRJ.,@e]s̜DT*'ҿz"D\wk&rfx6:L%?miڶHYJ4042c2G}(Lsnx4ZHF'F0VEG1r}MdQw>SŹidsh22Idzl<i̽FvD
r:9yH2Sٜ
$H|lH羑F*NRbf439۟4)5ff}$һ1VpfJD$Qs<nf(|$idF8)hq3I^cWl6Mb9Ze(1D
{:9?ڴɂ>
QZaR]+,D72&V)@r2[-F1[ҵzM5Te["830zӣq1ؕLq#'H`'F(&"GA5P.M$1R2300D3K>fD< #F"IVqV1cCxLI<Lq\l䱑n
.E5
k\[K*EPɢrn12N޽tsF:xs~%+nqŖ&i7VSxtDXwc8if{esi/mKG&䇰QR{[1K$#tUn<ߠD7uCf\zeyk%3f֤B[{UDZ/7jsD:q4Gٗs!T$v'x.
vYj(=(UCͥZUAO3piqq$@%tIUw.
<1
)R`B
<
L*?*s
P)N*
|@_PO3{eV~O:HM\S]Wu׏d_7VHBn"b+"JZwx$UYƳ |MA)B-Ս&#]7uCo[&nC58;5xvi	g	~Si$%	~X/t
at'8DvC=	<LAp4{`]d`iѠ<:
"!d	rV$ 6h<50lyآA/ܦA?Nip~kDhC
4h?&o|	'JgN] K"k![7	/1/\p[Eָ5b&!%y	~D?&&%x;x (*@#('XM&`{'7C`vHO?"/&Ը"-J?
wV/2D (s2x9	*w`11
n18ĥO%/>mNJL{>Z9zqWa4v`l`
K_G>tK	"O#(_@ *?دl-0o?%ZW~6Jbޞ-&?o6J|becތbnqj@BewβuA\_\q=@y  m`)}G=oz̲@@_WO~z^(_+K4hf,f[Jh?Ƹ"4*/G*@Qkl+BMLwo
/^"{p.å1%<"SP}
"g<oX<#21XƔ1
y䋺ŇWϰC癜Ӭ6fymxl73\4wAߩ99Ygd%a	]xnA<23Jk<d
-V
wO%
_DU.ѐ1$-3^4*Ymi<<FHUFU́mzBG_`NNu<>}Zky7Ykd_D'mN.<`,ע>UBu&"f3|x۵>iG؝a>'gEP,-'XCƠnlo}!|AWL
J_Gaۍc0Z#\o)QK;XK8q |b	wG6 =W.ӊzwBA,k
!	s95$!pIm|fjaɸ'|K
}\C
ԗauushX-
lc뼘.b!"Z[C;"cS 8	RUX#)bML'pY{oE~:2j`kmX)l
\M<;k'0=pخbu/"t}ɰ!|	7	_EB;.MГc?)kCa9jmvg嶻;`fl5M 
VҒw
jcWګ`+'v~qa{FAǮ:ڬ<yz8װ"U7z!ͳa;<neՇGvn["b[q;caª>vM-
E`[prRf}86omR/[[NT¦+YRЋ74
/KM/0YBy.cdcnE?u+3Fp.P(|,̰JGYœ|
6͋X1% G<pמitB^clvt	RkSZa\z
AA8{jT	=gM!کsK1"y_
M1,zuY3_uеÝڰl>}N
R 	E@[j8%SEGg
vѷ]<<sPmzKmE8v-,$!^T.[Û-TjQ%FB13R>iGrjGG΀c
R).Hx<,ViyW듟ԟ:Qg/kbufӛpq`2ⳁEu
UHk/vƲv$(G)I)5(FD5H!!	kBdk8PߓFr+IYطޕp =dXtG3iW_LrVXBW!<)qBzTP^7GH8GIB2@	٣@x6PK2e    PK  C:U            3   org/bouncycastle/crypto/modes/GOFBBlockCipher.classVmsU~6dӰ4Rhʋy!@-HS^hfMq#:_ 3~7-	/3ys=sϹ7O~yttD1>|"I	$A\NHP©۽a&grVIJ_ ρ|)o:pP.^6KZiuSSêH(+E[Fzie
5jY	W
52%*d^IyVZuWm$JQtުcQ`!gZy{8O%SC*Jf-%6žtY튖(h\"U(90hEd׍7Kv4fSM[c/|!˥Vj(ҠѪ$FbiSk`$tV̈́8Ԑӄz^'5[6J9{>C+>9oęgەD4$ZLݨTD&>eT6S]A
(8.WX-'CV~7+ee^Ϸh/<?\Ԭ{</+ٯb+Ut2`xavq}#b|*Тa/*PUDQM*vcHm8pJ8MQ»*j	>0YQs.qя4ÇS~@|'0L1Kl11\dd̐W7DךRJ%P%Еlϝim`P'NЖI\"!㎤6rOBnvpIJX772ZS	Ţ2>ȋEDW0/aF>{>o⯾E4&GI%|A	*bp)8PL]yB/[3dc`~H|	WT&
Yyj6wktg;	,J#;'3_57bQ,Ąq(OpJ?rmzNW7hM&#k8LgHbEN%,z	PILPGD(>qY4n'Crs$bxxÙkq>1w0λuf2O׋{"_0@,fzAi!
hH&au!sBɲ$vx3]k7ӱbdb>n5":#ߒBw㑈Pa󹅢%=(gN4d]!v[|V$"2*%ʱӓ<c\2zYF'e@+O/b04PKTa  	  PK  C:U            6   org/bouncycastle/crypto/modes/GOST3413CipherUtil.classmON@=cL:-PJ[4Ƞ+D@HH&N&e;E?/mg43g~]l
Z*3R(w=n=xֈצLted^PLҎcoTro}b=_5;tQ3bXsNvd :G^Z#nݩnWg?#[[|GC(r<x J{yOQ0	
y,0<R/!MP_
0&QEc,%LYq:g&I~k
JLrGEfJ5CyEUkP1Y}kVww:c"i[N/$X}"pPKBC  `  PK  C:U            P   org/bouncycastle/crypto/modes/KCCMBlockCipher$ExposedByteArrayOutputStream.classP=K@}s3&
wlc)Y,TBmh.v7b XQ&"837o|{pMB0_MBX8z-
&uFf%u)Cؾ'SvUQrNf'.&s=Uq:yu{Xi.X1g@cX
HKNRQHkŎZ
zz4*`_ב~_1a	눿 PKf     PK  C:U            3   org/bouncycastle/crypto/modes/KCCMBlockCipher.classWx'2@d
,O
!aT𕄠D1@K&deNZ}Uh#mQֶmPjm+F9wf7 ?{u},f*`9
NRT0WAHA
)Rp

.έxgp&5<5ky1_Ĺwp}Ɍˌ#3#	#XKbp@+<m%蜊$HdiИ*+
ܧGQL	jM}㚍
kxHDiX1Wia	yB:vJ}R-:p Bz8#Ť:tCOUm\U]N޸sy>%pF`q pCGH+lMT-\h4a-hv-FF"ǺUD*pj !ڑЌh"NqhhHN%z:]K7o<$-(Z*u.	t:R4"冄bhghmStv"nOhmNQb±D\PNӆ7zuJSQÉθΈfh4I,yɭۢxlk"UmQkKF{GZB!O
R9JyC61$
dD=&cnVhАKF0x:q	h|%,jv>Q&Sݾ($ņ{01'ёuf<Qkkj1*XLo#N}a
޴cPi6Be/;b=lZcUwT6ޓ]"Jz9Tkv=)ЪEc|*WȦ733jh
w+D$*Ďl>I&vI[m*mY,2|G"+몗
乃?CϪ<H.jnV)]8O]kӈ*-pRB3=%H1Otg2I訴NOha%=IVW/F98XH?tlQCPɎ&Lq4S\5PIg$jyWQ1Yu5JA 'p6Ad,^qe4dȈʸX&12222.A&^y7m}j"uE+dcg51qy8c		isOLTsǀ݉\w⬿8+F_&:"d֏0%/֏cORvC,Uq
hc8g10e023\Pm**j΃Wj00AŧQb*0|U\˰*VbQb9**0U2\i*D@ũ3U;U\YGnWq)f>kЫB|]Et|SEW;|;0<]1<İ!ða7{<z%9nc܄~63cxE?{ݼЍxe-,r+m=x	'~s_0W0-x1~=؊3{p;~G~1
a5oDZz뤱'ᥦ?NTm^̢*ilZb:7BWHTp'mxmElDO-(շTӂF,jvVZ,^eRZkS~qTdA)Ac`V|Ɨ@~Ir'ƄJvbo/M1INf() phH)e!$bliHcv FH#Ce;zlT,a'Y#Nf_6%?dIZKWyڷ$/==X71l],vIy[p]grJǊU>*ĳ^Z/L'4t~{B>C	kl.<B?3<Mݒb8D^y,Or
f{T2濃9/擥i@\OԲ)Qt7eib>p+UH#brl.sr>i\6	M-Id)IM<ntnrR$VTUin:Ç%	F]4xّe2KHe$ֆJzFsn4q6oXT]xK=W<+a>׆E榜??.=r6%S7sMSݤőtsϰYrw `l\#G0Ȣ(
@&vV%'1ѺDE}xH\Bݴvn O!`/"i7ѩefQ#4yff	MHaʮ*s,YJMR)sYs5ygp8'ya9q{3c
[@$#{1cEI*^t~p<HN+2J܆Xse$ŖH{t5stT>LYH|(>yQ3j{!<6qvLc}r?y$Y~>[>2'׼ChNmN6V61
s)߃P9_GSX}6</bWtXf=,Ŗb6jK{kw\?Cd`wBԩ(u:#s%0S"~yyJNАq]~@/<~6[:=|CB!q]LLS]
88DvU>JW]DZJ>6nC;lGlC{N{1iLlMpJ$k	Cf=EOi9GQV8񻤉o6%шy%;&Xqļ ZċX!I"E&=`уx.gy֫aּRwsI+畺+8Ep%ݍv燐={:h(.Suk{)1翟i g E~>_l	&"0u˽NZu\QWΝ0o~M:L&;3W^=X+k=x?'C%,c{a>qgҲ=R  PKSM  `  PK  C:U            3   org/bouncycastle/crypto/modes/KCTRBlockCipher.classU]we~dMTʗ-)壕6v7lPo<.
7\9)zㅿ GFls9gwygw?o8o
c0Ca#e}! Ň3,2CȲ#ɰ!%:yCK׉yִMoB@Q,8ZV.v\4jSyƤS=.]yF^4UᒿaLҲiY

kzҴVb2e,G_12D,%EUM[wa{i]05ˬji`lVK}HqI>4ZQЬ[t왎-ppiƣ[Mƌv!S5<wc_˛Z3JRH#qqtYFJwkeI=4EhǺy5+d4܎M;SvC+I%'oTzjjOBlG3T引F߲A%kTb=gdqT1oHHqBFJ+θN+_x25IqiҎ'NjkWr+gw1_ajxMASp+8g
DH^t(aa臬` 
 =Q.}H+=LGaRA

Q'c,'.G0N
g_DpG0/b!Bif>`#8=xn01ܤ=I/.
`}8ZyVYQĳ@CZ
I
%З7 ;'{dJMau&סz{	s5(*c)&LWLLoж' $^t=|wYw%F^Jn瑿72!ݹ_B"(=tЍ┗ {u,sM	l-6PQRë${ETC#!pÕJ8Re}ѹ\p_0Ǫ:OiiFp9ž[?"{RishnHN$byL>wnl;Pʳ᭨ԴwKu>S1
G
|9js	h%N.U~ r\FZЯE2goTBh3ns182}@.v9bHM4_PK*    PK  C:U            P   org/bouncycastle/crypto/modes/KGCMBlockCipher$ExposedByteArrayOutputStream.classPJ@}ӴƬQ[C+^< xM75fF_Y~%nAg`f
3o EBw8K oR`&mTԄ{(xxT[y*[Vj)g|"al.y*>WSii|*y;TFN]#C7
ba;E_(sa4uu@Cz/Z{]K~w{Erl}PKҋ     PK  C:U            3   org/bouncycastle/crypto/modes/KGCMBlockCipher.classW	xTlo2y`.Ä8EJMBЄ$P*̼'73H]H
kmE۴Vh͂Ahkknv9I,.gsSo?2`i^</L/xqx3VЂ*&U<SBU-U

ZZra
X+GrC'XYZ؂+!kÔA%i莬.0L#R@SkͭZ܈ZJ3zF;`["lmP۸6V6X֌g/_\baP3ce[L5n`3L2laL;p&7FrA-!L&	h&Yf"jhIbVb֓!r0ţqbhТ3	3LѡWk:8MĲJo:ɸHW41
tbZF#LTbՆz<z͈|
ūƌɌ0Le=22;)xi!TZ9COeth\˗Lth>k`xiҘ04BC+9-0旙1=f{vjN˺8iL->9M:ֶjfGjqSvaZ!yE#k[֣~LNQic|<tF(L\1cf6%f;/ICtLdi[fD5v*ئqҎ8J]:ɞd/HGZf4d8"3%*r7Q6!;;4Ő*^E]Oٜq
y'T>TcLߑHeMNk.=)~jם5]uͪlz(t2\(XٖhԘ~VNBIkE[HWI+X:Z/-O/	".J'6?av;ph:.Ό"^qIDTO++W+028R+vG(M%7#^wJO\igV'k`DJ{O.r`)8[A:k+hPp+WA+(ؠ}
RQ&VQ16
6Y?t>|cODꖼqʉfԏ~,h_Knc?.$v6i\BI1ͅ'P:ĚpȏsBWN^*8
O#'88LkY߲ڄץAY*Vl0\ʰ!aeMx7Ca.
U$U0\ĐB
LS*1]*0΁_*,DE
fa-氖4JU,U\0P ѧUTabϨ8wU=ep_`"C7×||2lC>\ggG7bxڇY&vNc8ãek1c:CÀw0W3<cv?`D/cCg8B2cdxB| 3|r5%8}5W8\[0B;p_5M=U?{
}F4hInt:6܂)BbjdG	)ǔRJJ,)%RJJYMs_)%],48_4]' , ?4EO?P>o w=J6oj.vgKPtSڶvЪhWVw^.a_<q{p$a^: |=x'<rԏ9l/E^/O(d`D<
ๅcܳ1Z*qbht<?XUxx~-7a|`zB+E݋~E\s9Lbg/~Wzj/~Łv: )h$CO`;4؋ucy{֐BLCmlyoi>hp5嬢Oq]T'yAWN(إZA4g		[h<$k58;9B;BEO@
>)[jXp8}5U'qҜ^'ԔmY䋋h!J{_fjp*\MnދH2+<; 8*\CGB, j f!#E鲈No2_Bie^> kN uXVG)WE{DRJ75{ǃV~.q9qEVy/q$_pnD*\~=Vf
_*5(Ɔc>M{YZ(|G~^.$Lg]Fʁ=){$wngB'YMۇSE^EJ?AFVo9UqXmE(Qr%_c_ c/\i9
tqDCfxdr	?\ҫL]Bz>ܲ8fY[9RU8J3pX)JմF;6]hRJqv@c#*(N5\e묓mXƅeBd6^q
XJחn
G!ћnfibW{L5jvS5];gO<47sCdr:24~Q`529t9DK+KÃ{J7DLpxw8Ek8J&JhMw+PKR}:

    PK  C:U            3   org/bouncycastle/crypto/modes/KXTSBlockCipher.classTsem.i(R(P.!M
riImi(Emt7~ 
xEEaFg,-}'.Q.Lx42,`Y
K&e\xDB(nMhj˰8x:$ȉ>Dgj?M_*,KʽB%	K+Vp"-m\7+hʞv$˶mX,S.,[h#fԌzeցU-$ʨ.cB-<iEP1BN+>nvt#GTn>pm)m֔9mˆZhAxiN~5(E2ʹDڻpOw0X,% !
Q5m땬UFBḭiYl
Y
^hyCچ`<m
5^#WΊeXŊi8BRr0C<f).f>)^k4FcIXQpUg-*퍄X Do
ouZfRIh|zdu])	+voUaYӅiy1V~ˋ~Nc}&"{wO{3eQ(!!տmޕa+¨RGk~Nm1hQqn8]aZAbͧ˯Y%9@VDhU
6*ؤ`
)xCv;T՝s:;YL.0%s
ĺzf
'ݜ'S=edŎsDX*1؋FXbhF:DU1HVEǫ*v!`-Xq6>b=؀!kpx0Fх(1F)El~b 'QiZ `P``#NNOQe:B7Xf.ԯ;0IKnω +⛪qq\LsqXµpF׋ Q?뙦/H|[KE୻'q>o7 (#*xuh;ld|$ag_pf
OqI	hLٻAh<?*gQn_,Sc[sq0p6tp{>4i|؆"`}8%_!t6O`(<g_UFLW0~^U<B$M/:ep.
"8߯p6>ptC:;NTҌo0&OF._E[LV˓
qy>qGZO4ެJ7" C'!فJ[ⴓ$
PݤsS<^f_SKdn<`W%r\9UF6]"x;=1T94Cdnf1"Fo]a&r6.g%_Bj'sKxi}Դ(5mp<T<*w_!NUV\]S'ү(_3[HG(5PK^  G  PK  C:U            6   org/bouncycastle/crypto/modes/NISTCTSBlockCipher.classTQSSWɽ	*rjبX Pڦж$Lrq;B;_:#PL|_v$$AC&g=~ N"aЮᨀ+rX@
_	m+e{dKRC`̴8)2C5i:R3v~	e-{ҙj"Y(\~l.uk(E3+L~*P܅mf&rv0w29[?i9U2g\w}N[lƞn>m:Vm35h<2g3Ӗ휿orrcgchXa۲!0N(g[!Yt(7Q
CrJHdt<7cfS䟵\Tr^oۖ^3VJo5;n6t	5aݩeVJ}+\*Fc
{{
WZr2rh\2rrⴙyՇr0_ȥbQB
ԯUsHVQ]Qټ*XԱphRRѢ C*8"UEDEm[@S$ܺMp|[o5RM+tg+:Ǜhc/,ۏ=h#~Y׏w~?B~Ň,,>bqŀݸ6{YaEG~X]
u2FcEߞX.:}7g"u뒙OY-MwS!;:~>I]҉	Z=tրs$|i^H!FW0#vO=Җ0q-گ`P)Bf	28k|4[$UhQAM(u|XBWF!ܴ^qu*"穀/v&ݐce7|*X*݊1%IfsBWEk):ji:9R
"@_4<ĩFO"Huz"2NUW^ݭɀxzG+H>quj2gN>5tk{)M]Pt,(Y{jt%OޠMg,f,]KnGȓY|RE18se0UV%j'qXPǄxPhhKmJ+;&cfѵϟȝ<e/=z^=WudFIp=]1Lwڂ\0W/Yd#azR?Vi dE"*-
1#L-[21}~oO@2.5n}s6#!誑YvQR;:*_>-Qӯ)B/(
Am*SH
DVĳ7=5]ӕ9v&(6fkHm/#{ߋ&B\C3$"QgZCaZ*EpVE}V\ŎUzZ4kPK6p'    PK  C:U            2   org/bouncycastle/crypto/modes/OCBBlockCipher.classW`Օn柙 1%FDAk0["G̟dd2AK)omVm-݅քPm]p}+jR!s;3I |s=sϹ?;,J<X-4xpx6xW=lOk,FSh"U`泹;뱃h&әDWvX4JKT>X1cT#=tlo0x5k^
ԤկhU@_I-m<K"otYU!7iHԐ-lq/wTEŪNk7ln%Iu}s냻m ic{y]IN4mUpO
,lKI egt:IgrԾh2`W:hn\$s>9dJl$,]hdx:'i?gwRǙՕs4oyhn$`:nns>wu-ОnhvkHk{{c(e7Dc~U*bn;hb\"9;AJ4ߗIKę YYKhF*י赛K͏GsV'R
۱YGJp^ϣoPSVk.&*6
feX̌wR)vkBFQӒ69kP}K~(XNÙΦt*FytBqh'Cp*ng|rK( vk:dIt4P48Llw	}EèqxP͍FE
mɤMJ2y1[EwB[xIX%{c,JDlVK>#Ӆfz|.lJ
$Ufs̽7'?ٛ`W49iD-읗OBB'ȥSS`i:ݰb1Z?i7ȼK78
T\R%zBLsI>mʹ&9iw"svyC}3<m9t_S<kQ\H4?B|2Ϛأaf3$b*JBWz$k*/:J9YWƦS6ۓ
뢶uN\PQ<LkB۟hk f n6e@}>h`~U*g7_C	\uZ:J._Wo	l5j3qд܊&[_8.D*j
K>V^->k5	jXiDa֛^3a52ceH2%e1&2|!'>x/#]рԙM|	KL
C&č&~ 0n2QlXn&`x/xL4+&U&>L`6|n||}8bp$÷"0)Qexe11a8}eӇ>0?}
yW_ՇgX0?`?e319_0%0-1?pׇG+f'i>Vm֪ޞ[Nfyeb{;}Qz238p=X	!P-çGy&ۏ)J),)RRJzRvE*z;M)OQ*IӊVr]hDѤ5GMBhӡSBa;!bsE/cKxj[e)Qv&|ZbǰDtٛ%R"txJ<
ia!NEBWB4?z^u-| 
(	?ťuN	)T	F0*e<p$$"Xq"gqt߰b8%M߰}U~rz`	{lҺ~cDП[Ba*n\a5J9+-Ȅq%,eY'"g.jcYCYnNָãYqYf<F?5iRBe]ma;˧3FLpZ]x$QQ3B/sv0ɿh`DոF&M!I6Q`{Y֨~Z16V``;Qi8ts+~҆!0^cx]9񶢗?
vkFDq,Fx(SW4p2v
Ћ|'5,Sh FW,?^!8%VZID}n&XԎ1>¦j?sg~HIQ;{p'y#LGA<Tt(8Vݥ	,1<v~W#	pUA@9+&a_S;>UUs"L/{NpoTtHOMNlz#d/^|
+M^h
ꌼyAT+M._XV4uƱHIهpIʈHs.'mD939eQyr7za(%MZ뎡-SR9.k"|	"HIv1xEFDe׎O7b>C_muiGcyf[XpFkrk|l'K'd!N+{7->]^9ȯl\#^q"(](m)au֧T0p,> (<[0*G߈XbI'k
YEyL|8'bUpN],K$@)(mJ)QqGpu{-n^,5ߒMO5	%y;~W&q.2rOVl&pafu)DGhb娨TQ/_/c1jw쓗GN>MMzU#wtvR^:?BF3
K%7*;Pn2g$9Ws̭vI2'F!!&kV#ofY| }BnYWD6jkN^K.xYɃbJ!IB)Jy܉2g֤|iL)-]
+Y]2'gJ94! iph1dz˛V2κDbkH~-Nt]d'^YK_.eMB1fLɯF,DKboa2|Bͻuo,Z:V:<9=\ ?`,>=uqmb߇3oL,?~h@<Ш܄Uj'5|D,knl*pҹuq@?nuA<A~+M[d-XKB|/M
MVrwF*PK=G
    PK  C:U            2   org/bouncycastle/crypto/modes/OFBBlockCipher.classT]Se~6lHB"Qؚ/D-JQ
URl!ɮcgE^	bzβ yyy'?G'|tk\1ݴԜ w8qQ'YMIFëT~Lh{W)el*
%e\)-a%*\UtJ~Vӕg*UK+%K@"kJE-5IAڬ5ȫִ͂V(Ғm#{C6bfzY?\'RemWjɺVA/	?BZFO`R>Y)h9ÆLlE~;;_XOf>Q"-MM(fհ=ǌ3klɳj)o5tiƦTxr2_!z`}ˉ_2L]QeLÒ.keg{x^"E1$EgEpvM
8b(>
򝋤mJQS̍S{Hxtmv>*d!gIT	hp$JhCC/D	aJx	~	=ehë:{KxTSȉKo2L3$f.u?Fpaaa<ĻƐ[7N`W1û]ç?^i}uHYM)Ǩ0@5cldlKAppVw6nb;'4bˏ0ՠC5|ȩmma9Jdm^_|[Xlt [ĘQ?M
/M	|wyw
נ\zv?bq&{=nv%s	']ރ=tu
ODA6w
nlshq;ZLA8
brGOΑ<N✣) R4"@T&9dy?~Y;b^X]:yy:/c6O EY+ͽ>o<X|Ι_Q~I=L/q 7.S~s}Escaj%^];N.䤝(eBA_dC#?PK*Of  l  PK  C:U            5   org/bouncycastle/crypto/modes/OldCTSBlockCipher.classTQsUIv4BlV 4MZ#hM"b	`J6mf-C|t8083}KE"3>|qܻ!	uvsws~Gq?xYn	,Q>FdNXŷVٙ0Ҧ])WZ,ն̺JFQ'3!ծtF-qHMf
8vP524Ln٪,;iXb s:.)Vj]_d	sO
<OrN3A5U+Nٶ'"pz١nⳖnTzZ4lEvUKȚ&a.,/3yU9ӆi!rc,	ZVsʋVFYS9j]]HeT/4V;v,[獪o}\s)~@mGBgY]ּq-[mr)V%[7j	_T"O?O nm^ZV[-iI6o1ZJ.4;F"EsFp$JxU^	}KxM	%HJp`jg\jN~qxDnHcɦ3v'	cG2zC؍^B`FA a;!Dn; 3Ǚd31Az=H"aef	r9Չp)zE3tl^:.KWNkV4
Ӟ$=1wE [}AƯ
k8{?_E>OL,#WyV1OP$ۃ'EDy[Ҹf

ʄrߎ(&zdI,L04ÿ?M3@>O ;1|ϐr|9VeO8ǫ[uwfi@a_^Q7qNlVt%aoI1II'Kwa'皙x=P-|4)儽Tp"EV,xb'"rRdm\f._؊3"ZybQX&+JnG8(9	?8\PܖF~`B/k	ϧ'=c%slg
1~>YT碰/>whٗ.OƮyb0U7
v=Ԝ#mRԬ|M}mdRXzț+T
raQ%.X"p'f<\HC6EYl08&m'<ԁ
wCӛN/PK*tC  
  PK  C:U            9   org/bouncycastle/crypto/modes/OpenPGPCFBBlockCipher.classUSUn͆E-J(QZ"TZd	iC68G㌏Oƙ>L)bxuj
	?s NF+%"d_B%2H&KF1u!5:N;b>'1A,_51K/QN
閥W3fJ󅂙9 B&_Z2,:1cV52Vd'CKظl-6%[4177s=RșV^Z/EP~\-U拹Q "p(_,Uauۦ]^2-8vC@b.,^reh}1Ï"Mۺm407UmYSyZe㦕-LjF/#nƜk7cm}(쥆;E'+6o_6F!i:V)Yf(,lP8d2qTFdqBIxEF&v
Ma5;%DE"ךr]ZJȲav_{LʮgaPdxO)MA+>V,
Z )cDP
Y!3xQЂ3
xU~ 1cx
DQc&Èrc!1q[Fo2\(P e2}I0s^J=T"
A|>n},3z#)$3{#Ec[2aV(qH[U3Z:VҴHZŕ,G0^jQ(g[od#towa:{.aEe]:ǉ8"G3ڴX6$~u\Xi*mOxJ^L;=܋dj
uO^Ŕv39pj~ΧroB$r?saw`6lo
n'uC5I1 uy*eIR%.p}.mx30Oہ"THבpU:#֩=Urj9ߒ_/%,篗;Qԯڬ<

Uk4n0kJR8%yovgB>uG8Bc_#Txls\Gz)B%~O9#T%Fs{rnvDssY;x#]qFVF
U5׸$~ZAf }>qyK] nAWèfn&aV&Ȫ\WFBN72凜^d:-kwD^3An 
PKM-  @  PK  C:U            5   org/bouncycastle/crypto/modes/PGPCFBBlockCipher.classUSWmK ,рHZPLmZ[iQm!I7>O>K[@gtm_3N7al|؇:;ιn~yQ)ܥ(/ŞR<#oxVo<%@wɖw?\cݽ䭰GX6œq]4=#@^i1KtZKF)ʌJx$R'5"jj*iϤ.NgZS8rʳM=#J
ӌD,{2I\]yaM9N~E'[i~&L<Ջ\d"Q?25:F*UK5L+ÉSzljRK=TW4`(V؜gT\w
:뚊',<01I
)=31ZЬN*h Wziɘ1Ve=)\?j#WD[r7y!e2vI4&tFʪ.\hrمolطGno8QkH7Nll
3eW6n&OaȨdbK2 ɐQ"YzdP*c;d0`e84:eTv.;#2ᘌ8^v^fxIS"8d#nFpC;2cxaa؍ax80pC<VsϊQP'N(Ae$Q$E ~\%AppL[iېmv2k[iwVx2~@w,"hD7@-`j JύbXn4~>Co!+3q^d^kCCd'`)`ɛk	
B
ylnk3g8`֓9-*hװ)k񊋸49;[x`qj.ҎFҴNjHl+H^H9"ǖ>^KEOktⵡ0oV2;2\BM3wj|;4P;gt\tO8ٲbınFtМ;JvRw[x앜W%,LdXH'\'l6=y^<D.</<@cViM$Aʃ~>^j|fݧ?V}ʗ2n3#MK_.چ<E#ׅWԱiG<t:&Θޕp.[JUWZaZnTk(GR41$FCD=&pl,)B|:׋QeH|~=5Fb}좭ꚩgC~U??˚,zYI!uHbY^RlZYe3C3|drJQeMLbh0Mh:/D.ߍ^s%TUt_+N+3dnzYZٛg#=KYNK:ﭥ~UwxQ
(ٽ
HsxVtǎ[;ɓuROn	yP	ߊ4ҘNcg,jPKbZ    PK  C:U            5   org/bouncycastle/crypto/modes/PaddedBlockCipher.classTSW.d7!PEWE%JH ԊkZ,V%%Dnfać}lq:Kgjہ?ЇсsoH̜̐{Ͻ||yu<ТpQ%P7/#55d4/|%%H*cbp}V)#c'%4/~%Re.F)1CӓQ1=\250W'4Sbc*ܣlN1-7Xr/CѲk=.tMTͧju+O%3[6b6_.S^CA>4D8^|ͪ
i]/'m~tsnͱ-/sX@:sdTm~{>^雓R;KfdQgFETPQͫmC+sawdu|dŴ]-j4ZZ {.ɫ2=^徊*:T$TSERE*.Mc0CzjaWrCI BӍSsO((Shދ
'8kqE88"q
-hg8\P|$$>܎b
w@bHaaFqC|L_1} y)ŏ폚mzvϬ̘se.E@d$M:άa"y)_5CkQ1$ݥkoVFoqcߠ~Txx0`/Qfjh#t
PoQ8[`;(=4I)G&yZ'>g0VGY{ѕ$6.3L}
'C7)ĂZQߡgl1u|Su{úZhW6WDٶ>
4ٜE
=Lő	~(ON	HB
zx&!bun)qP!V(;Ĝ3 :uADoQV>6#ux!KD"l,2*h!:?c_TiuO]i@Е=*lr?@*l[qCW6dm>IH[2^CҎ;
um-}
P"PK]d    PK  C:U            2   org/bouncycastle/crypto/modes/SICBlockCipher.classWsծlH@
6"v
vu
D@[E^,k=ҘIK
!铖uH!J[2Sf
Iƴ3~/{qQYe3{=w'?$cM26h# )42Qҋ8ÝqYxL+yNkׄXZ'-%KID{Hq3JY7zT6
z1?ʙLAJz!Tr{BvliPV׊xT+h:189},؄-:cKLZr#>xrdh|^ϥ)RP&Rf~B#s 6\4sɚ!sʼE@t)-*g)~
PRzjl=eGy"fǞ)7
wF6+%@q$/8$Ғlq!O,%[l.
KN)r<x|4_i{RޣlVhپBL^IeJC%J_ƆReF64LKmf!!GS)M&%3jgNd562VӦȗ\Mh) 
C\UR[\EE\.
,;Q.h7敷j1(ǢJ5T"J`braO+5NZ%L*"%J\2k.S/H#a}z%/J/a@>B)\Za$K]lǮH:?YfIWӭ-\1
xtuW#82rFOWY]5NA!@e0qJA(,2|
vbnChQz*BmhSp>`KU[5
+<4Q)H7E2[exYo2]9qc9%CPf <÷=8ICc02|;TԺfzSc_	m$SX/+
/gzW@/U{vk=TVhuTGq$/&?oB}z}vQu[V+
ubB;~OHV;Tt~/^ǎp$K^4~{W4~07,7&-rNne3\%dտb=]	uoU^nY
l-݇	ӎ4/բ0/ݨ%ȼQv#S~4I:W#Gs7-pdǑHz\糒4U3=6D;	.:ↈn'u'G1VsPC,{)7P	rfuzJ#2GX1ɵEgؽ䠻栚$aF[7fߥz6Qt'%&慎Z!ap귟 ܁vEy''j.GVry?.\Aֻ$8s.!rjڽv9[k휞kI{߻7)P_sX+ly@9
$)v6I~>T5|dbiv758`n̆ǈ>dj9<۞tT"C3YHD:QI>iұކũXD`
5!L-лAA-};emnMǵo-rGx$6] yv~K0x*br\A>itG~δ>j)^=bIZMgq_Ҫ`nmK
5H~/^7G*O-yE潂5VuW/O*D\.ZlJX$=C	z>AlՍw.s5/kOo/!bSD\fRw?ti=Qx{^quƳV|,Zg=PNbQ}Yzklw	p=S%2	'{As'mwuF>'$ᰰmzPK<ór  p  PK
    D:U            "   org/bouncycastle/crypto/modes/gcm/PK  C:U            =   org/bouncycastle/crypto/modes/gcm/BasicGCMExponentiator.classQNP]gCKa@EE`1!!C2qәz2)t:=cOƉ!~_x٧B|zYk;ۯ/_<=_{`v7
_hORjGQB䍡yIِaBfi"	%_ӱ1Lmw"E
:2 VQ&ǓFitACXa4odt^ynnT;饊bBv rXU9.9it`w0a܂6f1gnh40ᖆ۴
O|Dщ%?L2iL2EӅg9~&agV"K#,~iDG*pwC7G,5~o:%[]ceBXE'\+MePKH)    PK  C:U            :   org/bouncycastle/crypto/modes/gcm/BasicGCMMultiplier.classP=O0<'M݄ )P(_[^:"v UTLdrCGHYH *~ ?
`˾'}~ A7*Y7aDIUT*
Vi2M0gh3ORD2	lTj˨Ph`n(iYL/"
E*1Eb$s_:A+q_صahA6,8Xay9`أYN>Wb墉;4Bqbt8-PK@r    PK  C:U            8   org/bouncycastle/crypto/modes/gcm/GCMExponentiator.class;o>NF6
h'0FV
͛ZQWXY X2/JO/KLN,.IO.,(OI-OOwwuE_ L,@43#H PK"P      PK  C:U            5   org/bouncycastle/crypto/modes/gcm/GCMMultiplier.class%
0:ƀ5L 4
cȑAjPD\sI X
6z*v*|m:KwB8)՘a=>EaFn5J
A(@lPKG      PK  C:U            /   org/bouncycastle/crypto/modes/gcm/GCMUtil.classWojgwI׊v"KD)v*-iѲnM9dlS#ִ*tdR(Gt,=9(S}%ShCC^4q7;\? f{y;~;I>Gbc+]8:}${sP(
%W(<JSETT0|	R+d"I؂Ƣ|;I\eK.wѓSR<%)<p))<%O6tuNﳓB,!r۳?,5?{xiPt.t^}o
;BY weXonGH=j+Z>߀.^j0gv\1V/gO7&OzzX[=	Z9(x4_ܬdV+LYY#fmm"[ݾ<{dpNaШWg<DuP~od56KFsYZo5FfeFo4kpǰ7*w23`V+7!6l3sw5azfu}|Ajkؖ]pj,*꧿^Q?eL7wMV4Y)ƾŴ;1vEbK@E"P}
d4&1gG~e;ԼK{ԬGel%ʪF*57SӠf
wf޼RYݤ&t6_Z# ˰,]
9'2`cq,可CCd
L/^a\%e=hyS\
m>*WSqJ
P{}Gg
*PegŝT*1w7Ov߹ekGR6ʺd<ْ38gHtZm"M+w%}"12OeQx-ZL2)-ޅ3).%VZMD,p]f}v'+y
N sVA A}vۧ:@?Fb<*좯S!ܒJg>	T99g#~Sq'>5GX׿YHRb68r#唎S^<VSДMy;L4H'휑FӞIiI:106w}#0Gd;lb
ͥ}~.<Y_Dvf+.Ǒ9	'Y+0a,=IroTMS!8Aq?V[)!m!'zB@;BE[۹Qџ;"8·Nen	7
qtM!<%(F]fZg[h[TbHWq"a=6{|<˱5eZ6evԼ>tD[옕nloem#n5l3!\Ja;bRBo
oY[[mݬns~;!E@M!iC
^-GmvvI46UCޏ/YO(/y@%g(Op414p4W'}	JA`e e(캣
"D:A)nBrǆ}o"lacڡ##%0b4CIɁaNT
I*3Y2 /#ą*^`o]V!8boCpWp
5옟&T$Ak[2~m'y٧)R
[ bgP3<g>ߙ _{E
vZx:xϣeGo>)dYadNeޖ) P2 ]IAB:ZQYĬIJ)2i4Ȥ!M"|3aJ1ÿf˱$/urTK&FNnmt
a^{fN80d<W@<{)?n?5tcgmx)jzZ̴E.""BB"n҅	+"Wĭ^5	kJl&AM	5](q#K
dZމ/NS{ёp?w?>e<M;	*gkj Sxԏ0'׸J'%"#?T``Qڢ4wQZ1&>f=3NڣT}hEZW9_0dzFN'H:󛏤d{%gRΏ:ڢ7v-k
ע5j-KSjK*Ӛw\ݻi]ݻiCݻNƺha(oY?FEhGυ8?
7wr;9vrat;hRbIIJ^b5wzkmZjm8z(bR+PÓEI8JqPXR#PD\@M!ŀ\B]13 PKu 	    PK  C:U            @   org/bouncycastle/crypto/modes/gcm/Tables1kGCMExponentiator.classRMOQ=3ǀ ˇb[K$4LY
:3Ukbظ1э[I45ƕ
#}mN:w}{:_~B$:S;b$a$
|$'D5y;rdUɒ~ˆ\cpZAd<ZA_L*쉒ە,e岔VN9t(;tp1NxKU큦Z.ίi*T1LuPJ)&~Ӳ֊Z;ztYbѽuĭBV]t)َB)X꺕m5^W'gZZ -VL[;zhu&#:'e"#$U(CveQS g4£^Sp~mUPCz}C.ppC?>*Ypp&$;賸hY-_TsJEI%)2RlWrm{	e`3Z=<v0'ӯk nޣs[\wV
Btɤ8ܵkIb(Has}OԷ> ƚm1!d׀[Ag?]x3kx|M+	2+3
 'BƘ>bo@,cĪ8bo:z~t|PKh˫  :  PK  C:U            =   org/bouncycastle/crypto/modes/gcm/Tables4kGCMMultiplier.classS[OAf,e-JEJKi&VIv,,&H>h	$c|3&>rIAwv9sf2ק/ p!yO0%7;J$fC-s2mv7dh@ժ:KG\1ȶ_iPtݢL XY${MT.V_kxu5i!_N3~dFnV9]mV꾱Q׌;l'uRYϩͭ_
h,[*sʡqrq811!MC4ti
:4k8% c(RyH
H	0)J_
0>SCYq*2
FVA}D+dCS?4	$00&(āɏdnWv1
=Dja-䝤Vwb4y9t[1B/H"W;xzL~JrzK?v@j?1`u6?ALv"dVy> A<ʹJSq^mJU镅U|c^<ja!tqCAL缏oPKlx    PK  C:U            >   org/bouncycastle/crypto/modes/gcm/Tables64kGCMMultiplier.classMOQ۹әNE[:ԑ?5F%$nڦbąƍ.Xh$7
Ϲ=sܹO?޼0s-cxX>\,tL@UWu3Q5өa=l;/+RV,Ȣ̠Yxo%Aj^m\J˕9s7x^/ܭHej2(ՋriK+v\[gZzn0-5UoR/VVJv[j+-ZZ.]tult;,*ɉ?ZқJ=h4

06,6HH@CFF
q=0ldb셙aeY8cacQFqY8aC.AR7ڴ`Yi4KMѨuRVU{
ءn/^^b#zsWk0G&ƟAn[e
:sASL^8IT:vdُԴ>)$=9}R>'y>r)Zk1dCm,q .{Y!2[o}w&>CRxO|Wb?Qku;xuΆQs6}׌١a*C-N'59.KDdXd$$#R&cG&LL*2edґqɐD&;yy{< :#0&#IH1Ҍad	S=K^3a2d،#0F0j8K?PKoQ  <  PK  C:U            =   org/bouncycastle/crypto/modes/gcm/Tables8kGCMMultiplier.classRNA;mn E$%Dm,􆥭ubM01#7&@Θg
$O~7ٯ>Ɣ 1P%w8hSIDE[HX9V*O
n;/rQGhYL<Y
ds%*	)kJHhK檩g\FNʒ|>jefr)Q+l*dX9s|1/+d5iٴ,V弾OKz&ߚǛV(<-j%b6]]#K_ϙerOEv'ddxdt8#/
6T8!¦BSq
7*: 8N!_A
z1!
 [n/Suqh	.F*Ƌ"+Nј )k[SC|${AGPr?mנv1l+i۴."_c7fafbAj`)P!0<{{f~G7Vaj[oT+۵=C@g+$óFfCnԟc,\\1QI#ʈ:4uD(yc7mik9Z[I|AZaIֽm4M^|Ak:Bqݰ1>Ƽ@1=<~PKw^  b  PK
    D:U            #   org/bouncycastle/crypto/modes/kgcm/PK  C:U            @   org/bouncycastle/crypto/modes/kgcm/BasicKGCMMultiplier_128.classPMK@mnF୶AD<؃R)҃k[П%(?J|P[wٝff}||88g0FN3+c9/J/5Ce(x<#u{Dq;JhjZP2I t$gқ/d2G"KoU}Oǧ%}bI]Bͱ±ʱsP᠂ul٨fcu}m:CUҌ
@{^.
 YyhLYOj
V
w݅)XKLҚc/PKC,*    PK  C:U            @   org/bouncycastle/crypto/modes/kgcm/BasicKGCMMultiplier_256.classPJ@=Ӵ&pWŠvT+t!Jj^Gw*3̽省{Zwr9+x܏삁]3])3X#
`I*II@"}N|C1'Jw4bƏX<
e(.ݱ/o:^pXsXXX1Q7Q3QfUl06iJ>,0凼4c8ޥ1tޱEc{J V"+OҤ`%1rI{B_PKHnT)    PK  C:U            @   org/bouncycastle/crypto/modes/kgcm/BasicKGCMMultiplier_512.classPJ@=ӴͣGkcᮦvT+t!Jj^4Gw*3̽省J螡
$sVzf(e3XSNx
*iO'd>f>Ȅ,ӈѣx?>ϝ=z+/*uk*MTРc,4l)CpH=!/X!NFPѶ-9M)k+]vOҤd)1rIwB_PK*    PK  C:U            7   org/bouncycastle/crypto/modes/kgcm/KGCMMultiplier.class%1
0FnC7pPPRӤЫ9x %z($i{%L$lR5ZMi6ΎG·+?85*GY[=?j/btȱȑffAH@d1PK_l;      PK  C:U            5   org/bouncycastle/crypto/modes/kgcm/KGCMUtil_128.classmRMkQy3//ӘHlAN*Hb2MvDD"{EpƍWw"f${λ'":A4ƜBb#,6B741JjtZ#mN#vyy2
z4vjhﵽ+S׼;xҚߌ4nthkK1a	;+Rm5{Mo3
|鵣Mg}\0;5Z
nĆr:]g@D ;6eJ<TT46BF9AE-=6#]zyy}[
|P+8C.E<] SQ{G5PvHU:f5ݩ`f5/!}P1_W􅺢<C)2le((^gobXNv3bZWXى23p
:%ܼpdiT<nUshg%}8p-"Fyi4X5 (X~J)XOt+$eڃ}z,@yoS,*{l֥|ܦ^lax}ɟ%῔6|}"$S5u̸0A2֫iC1T?(f!2rc*7rboRűX[1Rdzs\j!>y\l0.
Dô0môMSPeUHj`FB5UMISyi\qy̝E	KU1w.v]X5LV	PKt.!  	  PK  C:U            5   org/bouncycastle/crypto/modes/kgcm/KGCMUtil_256.classTQoT_۱Ӑ4
hHSn
VjQi&%uG}'KxbBh?;9#"'O!uvB@jds_hC!Sng7ZTHYQ\xK*
xQQV(:>;WwBvvZHQ;=h#4i)w{;V7èAۭCNsWO~}/N[W^W11Oj،AA9
*A=G1#f$U-rhڢ)zu
'Fa'D|3
pVD
ɤ49(IA""f~rLlчW湚ꪾ's14W=M }Oa'J4<DjiIJaJsݼiŴŴŴ@ߑΈ?J.4<[BP~)._ƜC(-R	   AfP2	3(AE%;t~/t$(JT<'/DeklhؚpkV"5'QW$*/>
JYYK˜<,f_`|]	lnk}i1>rdiR|XɆ$>ħś"M$g5YM|Vg>I\
"|:+A8RSyKa>eنqx5*t)gmyLSOB1bDi,Ou ݒ.p7Xaq4]g,x>ga yipK%g"I`[*8txym ?j5\f6\
_LD7t!5-.}*_CzTŝO/=-l>@	LcCĚL&/l?y+{J
4Rʟ&L$>&>:N/^䅋LlPKN%    PK  C:U            5   org/bouncycastle/crypto/modes/kgcm/KGCMUtil_512.classT]oE#^Lb\wՒTm*T%RKA
8VI!q*yFB≪E ?wTJ¹v%Μ3s'?)
2ǯdחYu\ɷֺkyEĕoX^`7 jOAzɳy;Q؉7wWn[}NmS~`P
{7Õv5hE[N;lm6p
ol\xZs'
:Qp3.vN;n	`܃Oۛ=ir,C`lJٔiܦRl224FeHh^KKQй[!{ݭ~_:̯h6MK,
M^#"jؒ.7L3m6/@0|+,FI?IFo0pyIú7xa{FsP68P3 ̀4o0fy$%k(9/0f W$ou}xN7yyL&֑9B`e#rNIe9ʱʻ誒&\5)W]5Z9/R-TōP3~?2fl
QX]U%iiThBNJWI9%MɲjT2ѴȼFYg,U䉡++5bŬFӨ"f;
e^d;@e8qNfge8-]`[cWƶĠUp^ȼeY覡ByK{;ٝ]eI_ øWKܕERg
,Rea"H?r#'5r

#+rDVt9%CD%^?4q7ZDz8}%PI9(vBV+sI+褡N&R&"bH2&L81qd$8-=1F[8s;H,m `bO%c̜T̐1MG>#op'x`(	_%1w=es_eq1gzyiQF~9S tM6\BWЕ?|_eW$(7SEđo/JBOPKxLR  j  PK  C:U            D   org/bouncycastle/crypto/modes/kgcm/Tables16kKGCMMultiplier_512.classRn@=8<\jS <b啗4JȦPłP Ǳ"7N]u/ vl!!`ϯ  ܱEgsϕg	eT=d)#m3d"gS׼6$}3BfP`0fR2;c[v#nv\R?ϐ]uZ0V0;+dݑvucòb5wCpVgh@e|wTo'p928sp@	
)0
9$4	T
Y$38SYQL	%pV*
aNh;]DC`y0ONt	dGoVFĀd B$ :7XA'c[MaTd^ǥPgUFMf
ziBLx!{2EeOxˋ4JsPѹן00߭W\o4W(U_
3a|7oUUZ&j|5(`r%cPK=m    PK  C:U            C   org/bouncycastle/crypto/modes/kgcm/Tables4kKGCMMultiplier_128.classRMo@}Y.M|ID=@{*@A`ȍAA/p/ n\r!
!q_A@E3歼O PbH|}[EN ÐXM^^v6fAwވҧeC)|m=סT3C珮o3g|[ȑw@t;;WjX}qHVqŮl`}M9p898q7A	I0$LX
l&ti)rKȦq
9gUpN
-gJ]hX!Nҧ)':q@+;bQ|Ps\~~BѦE-VǰK*WKꂱרLV\"U.$n(iI^$@_A׎lCmHc|Ԁ./lLe7sP(s'"g䣿]ee%Rs52	%?PKR    PK  C:U            C   org/bouncycastle/crypto/modes/kgcm/Tables8kKGCMMultiplier_256.classRMo@}^`h&|IFr jq ȍAA/p/ n\r!
!q_A@@o7og[y۟\A!er
9l!8_:^kڍ!
slܵ·;Mq:J~u=ԔWV^SԃA:v?]0Ej5xnARs'kPluWZݤG(,q(a@3F)`@5,0L
(ᬄs筓?vZUK$)Dǘ NvieE
q~jϡ xPx寘-Xt_0VQ\~u<]]V3+2QH1}J^(h}Pf~!~ҵc86ݐGR)nOPԅYyd\"ksq-KQ=?YJ01M~j@dKfPKx4    PK
    D:U            !   org/bouncycastle/crypto/paddings/PK  C:U            9   org/bouncycastle/crypto/paddings/BlockCipherPadding.classuPN0<ChJ+),['Z1DB(bar˸8N8Uj< BPÂ%;YNvi0v4}kf8;)8Ηb%NZ.u)oRaܛK%)w/F[e>[	kҙ)^U/Tt*>|벛CzQȇCC2FmkK2O΢NK>o(\giT
h1G{V1[FGJ#" PKX    PK  C:U            8   org/bouncycastle/crypto/paddings/ISO10126d2Padding.class}RKo@6/&}7@CPHb#zT(j"$ic[׎j9 r$rPˬRJ-fw<?4idB5ҏKFeZXZ\*,l![]!	MYCB0m]nܳ
#pm=ӢƖ0	7Z	OU?}BWf}vS6~]Ǫ8g"S.eԷUgVLC͘~=9DSP0`HQc
L0hwa"_X?v-'r7gɊgW3A<	f38+*&qMU\B^UߢuS{0X7
z9to7JVC?@~!dcdB ITt\14T7YF ~YeM?JXo0kŏ(|~PcoO~Z{I+BF[WKQ'i9-a~&^c'cC,|N`(0zЀPK_^    PK  C:U            7   org/bouncycastle/crypto/paddings/ISO7816d4Padding.classQoQ޲-P֟lj	($x Qk
1i<-/v,KS<Г^<詉&xKf͏y~\|(c-	%4C!^|`HmL/	k΃ʽ2Cʴ$aX0r^A;i1;$>=x7t|!}YAh}Xf/tan
ttŏ;glu0G/*z]cV(dnm$ED*`Q`I2C0 GZBq8h5=?E$z
+Bhuߦͧ1дݖv9p Ԙ=NhH&/Cs!QiZ%Dl*T%Yc9e٧!9m#[JXk%=}:^Zc9VI+~Ae4C}%IUVWSyɛLd;]x[IhN"G5Y5e8UZbX;|C^V:G
$cUuPKk&h   5  PK  C:U            3   org/bouncycastle/crypto/paddings/PKCS7Padding.classQMoQ=ofATpb&J"41]
3/M?ҭ7.tD+ MKǻs}/ p594CR}l5ml{ܵ];hPfasAj2u$]!i`qy9B9kimQ=sR'EO{ MϷ7rk?vwu6[|4O|t<cg]~LleKdx?dQE$	I2R꣓;ODwʿ#Z't35>U@B$TP#x32$:n<]pl G QDCD4YFg<.C$B6HD*X'cuɰOs6aI|ȫHBH`?ge2ߐXȖ!|7dD4kiL`EE,A%E
JTUZPѤpPI}Wd_fcCdJ2r2Xx_('+gPK	%  8  PK  C:U            @   org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher.classU]Sg~|l**H?B-VTT*j&n6HlCt:^8Í3gHH{ՙw9oQL'<cO6 '>_+ܗ9<:3`'3|z5Dhe{fN(!-dYɓ7e'T0̬'AiZB(j>N߼%RͶJ*VT9C$eXI9æzub
3}LەL	JpFVzv" 7n㚭a(5S$l'FQ9mIWO
T᜝-sa!mԒp	@\ќJ1dζi[JN(ŭ,\@=ҍF9mOYe3]IST_L&^btCT91lChc6y|#t
y:i,4FAF]*5_fY8o<)4M%rh}o\}wYPJP
rMk裤q#U.+T6J%YB[ݬ8F,ZxmGF}2qHaa}2"22b28*&錄S8(N
5o7Wut;	V('.?SÛ1ʶ^qQQÙ?]#I*ۛ
[V;MNW.([A;<
NBVp>Ъ~ǡ0䢂 >Rtc.+؎1^i(b',1?-?>@ҏ!L1wgYcs,nB#X|ކ3`1N>ħ,Xܦui	Zvz
ghI~b1D_jt}bhPdw#%2
wo	zĵ@#QQ,>ǹe-:DN!z7Hґb  b?#~52G^AddV0"vWjbHIbDrKTr8@8;HM?@[*88k:-k/IͫQc5&WП!Ǆ
*
^C`:om,0p3}=(XpeI2'Uw#_8$I00N$jt10)-#JFOQU;V=rxİSeV]>QWG0YR[!rQyt
Gjkr8(xp
0V%e79ϫF %uh5曐kEMH4 /bGc5)x%T6^FE=L,pKu7AUw-7-ZyH?:HfzΖe̮
FeZ<zXJ{KguR[!$<v]1:FPKܰ=  7  PK  C:U            1   org/bouncycastle/crypto/paddings/TBCPadding.classQMo@}묳ihҤĥ
N	>X"ȗBT!/
n;r
.p  sEQ+{ofv6p73H3*#rܨ[}w:;&t`Ț{.́c=-sz0=:a>C{XĻ=}kbst+@oMw	;ٟ:Ig#V?[ˢEM@^`T>D9`د$ёcC74};T6!C*ӻ5/kĐkGj;fsp;ePdD݊Y{_/.tLcIJ%&J#>2KX#E\i*k|E,f੷aWUmyMUx\b~yٺ\8dX*ϐojڹPk$;sKߣ%A#o]mEVԐ65˚%H;EFR~PKl    PK  C:U            2   org/bouncycastle/crypto/paddings/X923Padding.classQMkQ=/d1iӴiNl&q *&#N;	Ii\@ntBA-(ԥoH}IH>λ?N
-XB>[³5Eև=۵*UWo+aYIl084:Acmumy&2ΚvIs7põR[z4zutO{c[5MjyCxhvW˕I,s-3=wn1([#zz1%#%cFFA8]BqOR:S;+6T\q+N@$ԕ8.#`y`Wi5Ϣ*1$a>4Mp,h$#0E
kJJV>@XI
IH"0IdhdZ8ޏa∎PюU렪jǒG|!4Uğq:Ojj}7*C((=q#d5MVfp򾸦U%Uj)#A+CGM=ÌZ~PK'tfk=    PK  C:U            6   org/bouncycastle/crypto/paddings/ZeroBytePadding.classQ;oPq6}pT2jPH$bL7qؖsS5PK	
Vpas& #ǠZczӪvr;ɐ-5]%zk'=
D(;"~2n?J<Bg$XFv'<HzoDqv
"4._՟<AmRH7(XcضϖteB]+3J|9i!^ЍUP
\;r]6d(v%wN=la^NLbZo.+n}A1&RHCDGy>P7繃1TtfmŚ.v5Y4ߥՀ:KIA*ڤ]jӲjeEC/{-k*EӬWy51k1&PKi    PK
    D:U               org/bouncycastle/crypto/params/PK  C:U            3   org/bouncycastle/crypto/params/AEADParameters.classRN@=qb@Mh8U@ݰ(5$vdD.ZЏ8QxqϽ<F̯?o la!kI XC:hמoI2rSQѾ8Tq;1`Щ=y>K1?Npɓ=7VHja9N}w(

8pvW~!XC_ҾENmsOyO{]|i(jװa'~wjS:6m)]g`9yhJ̢b@E@,eYeYG+:u/u<z6;
m`xJ/,#sDT<ZLBXf]3lU%\`!v9Ī]QimY"d}6]z[JȦbJ^#X(pPKn8  c  PK  C:U            7   org/bouncycastle/crypto/params/Argon2Parameters$1.classA
0D'*9D\oDWs<>0	`1hNҒ3дZ%郑9+jB%/;
trwCd|,jQpf[g:asNusPG]b]LPKW      PK  C:U            =   org/bouncycastle/crypto/params/Argon2Parameters$Builder.classTOP=oT"
᯲UZpJM&~ ?698{{6u@R-1fmDD6f<!땊雎[gZenȎmˎoAcIs'YKk[O13h*U5[s얳gke-#[vk]=q+ųʹWlvu@Z	̴S`[8S{iQ([dA3ʮA_%$*#L'(S	+Bijhj[;Xw>n8=<ȩ[a^UGކa3J;f&GB~	$pA`bMg;/0TI=579ZjX(|?f=-y~wԖvt# pa!)0!m
$M&"000p,ÜQ˸2uda~WR%N%dۆ[J~i$8Ej%8ːSa!Fx0>4Sa]\lZ@JKb+D4?M
O(iCu<Ւu(j:Zga"Z?ZAⰂ%\Hp!^<֌4ռ5CM5KcXp5G[(Hkɡ'%7^Y,ƽSq!q']S[Ȗ2hh %q2ᎄ-rÏ+%QJs.mtPK_[3  {  PK  C:U            5   org/bouncycastle/crypto/params/Argon2Parameters.classTYSP>ڦ-A֠p+
.mm"̥`0I`?xN
fs;7w 
ggbxv@4Aq1ןתK[RԪ["b~0H.Gߔ-E-*66rZB>JRolk
DՍ`inwipߪkrihxijalpGs	RBъ8UvM[L@@uǋ69^T55!H:ûtnjۻZĞ?=gZ;mhu[vt-ײ߳syk4։h8[Oqui{
M"Myttlx]e/Kq5=Af##'		,U	p]'6b`vYe@
$㿻O,>qs@.3Wd91!K0K0DH@A8)mX#xH1<AH4
PJ"
+9u6w_v4~\TC:m͆ؿL`<t/ ȅ_D%1sτ-O_|ؼQQRеcE]{ŷ3[3NCq[ddiyWxӃu9s,{RdIKYJ"O,gR=x>:ߐ7z-C@
|+GV*FVTC7N#~E+~z*2*HOF_鋑J.sp?":88
g􄧏ꉠzozjկ MLLK	I47E]Mw)_PKnEN  y  PK  C:U            ;   org/bouncycastle/crypto/params/AsymmetricKeyParameter.classu1O0ߵiCPRXB/!#:tsU\IdJO,H $~ ?
q[-߻d5j`2@%ͭK	Fj-V<ZJJ:Bٶ񵘙I۹rpsmԵ;fQ$ƈcH2d@	1N1	V?j\r2!z}/Lʋwޑp

K/PK   8  PK  C:U            5   org/bouncycastle/crypto/params/Blake3Parameters.classQ[OAvۥ@AE
^huU	5M`He\vJ/@)4GҒn2;߹KNb0mxSfHwCW~70Y
n(q._[)eڨW24SʕGːpesK`yBU.ߒ;SRx\G^Pz슖À!;=.M]#
;uy[IQBEGP(A[vʒ7Ռ_Kg=xyȡyZ{
3&ne6CX
"?W!ZdpGFHdERi,Q0$
x]щƩ沣-&o}R`pUC4`w}{fH>#o4#{x|
1Ax1)ϑoLcÓ}_PZ>!D<A!Œ}-|0Ůa0K=MA)34/mc8NJiDZ#38Ե$!	~PK    PK  C:U            2   org/bouncycastle/crypto/params/CCMParameters.class;o>nF6̼;FtҼ⒜Tʂ|Ģb}GWG 3$Azgg_rv&vfFS
ڼS+ڬ=4xb`a`gd`qOIedrI-(JMN,IMaPd`ʁ #1''g\Z2,86BUq( PK     PK  C:U            G   org/bouncycastle/crypto/params/CramerShoupKeyGenerationParameters.classRN@=cB)"vtCc.ȾILM?2NK,6s@@j-ԉ: sx6$lʯ	ra192 +pXT3Lchq-S2cƮXa`=ԥƞsBo\Rx܌3fm)-C	kZOTE2>	zc}olպG½bpnlܮ,VTH *(Xª,cCM9l)n+ȣ$STMN(!:)Y,$j^?c
zg 2%QO'bL	'yPKZvd  "  PK  C:U            =   org/bouncycastle/crypto/params/CramerShoupKeyParameters.classN@ƿ'v o	Г@H@*@Ƭ+o/%Vj$	!fMDEffﷶw,3bE ZC6p
YO:[ޡ``wOxHn:aC؎iݒ:Ǆ]g[t^y_ے~kE|kK5R_ʃVp5{z$(媕fU1B̀
@	|БX&&TM1a0Er~ȝ;W4fuaI:Uj􌒒$
T!{la/e(3L,>cisĕ
;r#=CS/*]InDH?bBCzIM"csfΠ)QKr3+sNK,Jj="CgPK8XӶ  *  PK  C:U            :   org/bouncycastle/crypto/params/CramerShoupParameters.classSKoQ=RmZRajb.t5020_pBԅ[1~w&jhgqNo AJgv=<`2[vu6C((2>)LvxgH{n!~ѵ2C^w&=ב6GrZݺv\;]۵i7;wCs̝4xZ`VZ~v\Uך
ie+㒌22&d\q!QYar2{R9t:s".Vӣ{Q2
d*u`
$L	Ün(
PA
Kp+Q\mj|Y9+1$a,oq|믪LJKNLD?Č}!eʓHX"k!U>
jM]#&'9&	}(>'}#og#!=AUKdyYd=K~@Py[1H(H=*N7ZFxZ%ֈ։o	ptd8VFqa&~PK(ZS    PK  C:U            D   org/bouncycastle/crypto/params/CramerShoupPrivateKeyParameters.classTMOQ=_C RC|
CH!X7&lXhb!qato2{;͘H]s;??0DrE 4_,
,ye:2r-7ߢ<@-Qrߑܓv\*Wʶ+K`bl^5rfUbV%j26
zj󡲕E,{UܗWEjB7iAxSK 9gKos@.r|Q9{.I7Hlb<mϺ%7Eg^J\Ђ9:Y䦎p	q~\U!!õ0b0pa6Ýp^QN4!5d0Rʜյaْ0Qz!jJsS[r.Ĵ7(3i%xNmbk4&&x5^-!A?rS6۲)OO9ݖÞr-w+Ҏ>#d{ <'!3Tov)ހGu9rŧxppЏĵyG6~lb"6z!R6S6CٜӅeN/ʆ({t۠/lZq"a'xPK&    PK  C:U            C   org/bouncycastle/crypto/params/CramerShoupPublicKeyParameters.classR]k`~%m,ܷ֭Ώ|Tr#X&%55MBn譿IdM:Ay9{N7|p5Ŵ6[VySAˠ"id,t"`(4}0{r'oዘAn3굽ǻI(\/wuwy)۲(G{v?5Lj04L1oVg33%m}<^RMo-%|Svޙ;e֮T	E	:fqՀ& aE1/aA¢+X$RI&Ẅ
FS;	x5oUKk
&MH#)S΃Q<GhSFr]bž7ĪQ0{0M̈sg|XyB.l3)WSܔCpx0j:jϝ(GN8Pުn6hef6
eV6Mw}M UI(şXP~BPKmf3    PK  C:U            2   org/bouncycastle/crypto/params/DESParameters.class]S[U>'9	PGCT@cA(&)j8$ǐ6nzӛ֋:㥿x0Եawff{޵L~=ဈ.yZM#+#kx]Ȝ̗KՒ7gv--̼V9[-P/t55(iEڬJ͋{n<_wlωKas\(Xj,br\vvy^ܮ8U/u?Լ[Ue
72uM+֋
woWvzɚ]+${rt$]Qx7>)yM)b6ݠ:u,xBګū+a
R8LF~ R$D=4b|sn;V]VӞߺa2F١!csդ):;NQ?g>>3gxw+5^{chxL'۩Q'|k;<fPA (8nS>^eФ>}קcr3E'`27cR?|4^vuHJ!`뮓d)@H`.%"SHva4apl,v|SˋwI;$mְHdfu_&s8Ò%;˴YX[mvevAOYvCOC{kF1 tÂggO0'HHyMpxQu$!&]U$Moߖ$
	u<|P.xeM-{}`Z0@p*!e~>'x9n d8)_kLJm{Q;_௘A/_PK^9  (  PK  C:U            5   org/bouncycastle/crypto/params/DESedeParameters.classRMOQ=3픡@iG` ib
*(
"|24Ce?M7pѤZk+%pqyO5 p#CsC(tdw>n.f7>d`YQ.-ʄR$^!-;b,\<R
iboB)
7ⱗO'\W{̾ɉ,Ô_'=/ed_~K|$*RFj@@Qk|-lE
^~fb- "TitU0ч~*3b2-|,'׸九Gʷ\Qj'A P 1U@q&qyR`[eǈ`NNt^Jt(-D3{9\ hjvtC >%BkQb:SIQk"g=Sԡz,Cc QEX
:`<"jWk.+cZ$C:0uHJֿ4t;3f5v}#"_ZFlr.+IkUto6z.V㿕i Hb>*+XzUj[Y2z
 K[zv1upPKb    PK  C:U            >   org/bouncycastle/crypto/params/DHKeyGenerationParameters.classRN@=JVoGRPS.L4.ԨĚ12)UiIMM|ŅG.D{{3mu,1\!fH<iߕ.WH	'}
xȫBKsQ-Vˊ_
WVV)JXNب:ዐK/nsԔn.kN4jѐԠkeX;d3sooNԜd¹=ٰ/B;;oȠ~=:;7` c fKnaЀ$ч1)L4NǸ*IAY&%w.y팗$K:2ʡtQ?BuI^1_y#j	3;釈Qjѫ-z$-tw̿`>
[TvR$PK R  &  PK  C:U            4   org/bouncycastle/crypto/params/DHKeyParameters.classn@`c)&+SH
TjJH`7#0%@mĶoѾ@6,)q.vHyEh{9g	`/jJ;pWTc̎OD </u}3(t?	z=/lǛ=ڟswbzc=vﾟWlNܪt
I
) u	|б߷{	ViAҖZtl@ƀf`	1*qd
$XGO0*/jaw>od30$*5ZOH٤2
Trk@@3,eF9^89g*2B@x~M=̤&RH !ˤE$Nrg_)QfA_,Jj KPK<)    PK  C:U            ;   org/bouncycastle/crypto/params/DHMQVPrivateParameters.classURP]BJm(AK xR)PaķP"iRݯx(3:MObPNg휳Y+;=g q,x!{EF5(yX7u灄xfR(
=uemn:J3T
fyp(ata33Z[_c-cI/fJ.*fbCBVTQ]a6W%fP39$zw1=?Q
)	uҺ귾(~Nr_5iSss<YN[Z,OYI
Zks<Hhl噳)"M&V6eZvNK[%3aEZ^/86CJ+(j3yvۛT=Ho{odqFY!dqAE	w?$!: b?}!TIZi:´1x(㻇z~[8z0^ǔLA]w~YhA؏.'M~W1?NaVmNH\7U%඀;>(CKe<Qbć>
0C?xZtYYN3řVxfK4AH?I5&7<ZƤmL}n&1(lc"',=x%jh<!ObOމlFz>A]
yʘq,c2DR<e$D0ma42mO	Axd|U Ma}=T4EI8lbkzt/}\4~PK<%   P  PK  C:U            :   org/bouncycastle/crypto/params/DHMQVPublicParameters.classSOP=oetM`CYWM2I4`oݣvo}?&&J"4sF\{=XSH0ˠ:cs-ɥcikj"-rW:
vКΎ'⎧<-!Efȝk=ܺ2,,yB:K*wì-ڐ&YLǊ7]s6wWC"k,H
gE/;Ll	K2~h
Y]+L+7i
VVڛS|lU9+$S&ۃ+d6FEVE*TLȩpc
18J@~KgWisP1T
Ugj3Ib,	k\6\̍4p;|dq3+"tt9&X<xp	z?]DDF^|dQPǸSs1'Q"JG0(?c(CFŏԆ>(?bA"@6Ok֧&'O0> =hzr_PK$$    PK  C:U            1   org/bouncycastle/crypto/params/DHParameters.classUYSV=2I %ݤiIÎS%,iG[TȎ$KxJ3L
vK:M+%ĴS{._ #{ "|ޤ$o6:6>ϤSB: aYwR;`ʚaДg([ʆ,mSDnW)Utf4+hQ3E
g(uمb	hufYz1F]p~U[fI`y5f:c_gYgM˫,Knךz>i:,,JiMGV>\,ٍf;
q03eVXY׌2ZQrT`DNNt_OwSފ+;%f9:UTRR(vQh]bY}E*b&	'3I~)iYte̶ʚ-XEmGi{eC1.*73	ޕ-ApNy:Z9@5)GR@Cs
'G⮑tYkWyO O'8DnoO$/(넋
rhĥ:8p\!q>SB#WB8C8áC 96 >pa#FPq;(&a8dI)iS9!>)?(s*eED!j
AzfC/4owxLrǴ&MԢL9j%_ noBjƳ0sHMӷJ!hL@{	\;`{7-=YzE_voaħVY<<_4|N
& .;'OqQ۸=zſEGn^!Iu\Rc̩
Ծ
U_U+U;+W;
[n^%%Ī F+]#~fs<+֔w妚B{|g˓kʳ5任e"C~f#	ѷ
񴺍b|[1[t2|)Hx
ZK|nK߷!6@-^K^cKCdhIuFOd?_
yRN PKUHu  
  PK  C:U            ;   org/bouncycastle/crypto/params/DHPrivateKeyParameters.classQK/Qmo=Kn:	ݎiֿ?`	mb!l&gB؜=ι9oO f1
l>+1TQ,%CD\
Lu7Jc.x.\䝲#J*'m+U.
OMYTң?
^R(Ǯ0t0l4Ml29wtT*q7Yf̣g$8`X5NgG N]m7
!p
5S9}IL2ʡtBzP[:itrKcJ>"v4ԾՌ΀]4}z}:5ĭ:-%[#J U/S56tY:+0[Z0N5-1|:}PK
M|    PK  C:U            :   org/bouncycastle/crypto/params/DHPublicKeyParameters.classTsUm&a[HeЂQ,iD1@GBkl7ݰPZ0vd}pƙx&
aƝ9{ ؅/+Ɂ</L
%S>#1K>whm-ʖircEKGo$lKh	Ii'ʎe/aN.kFJ7ۆWpN:1/65!gujM#o{{-FLPUQ=TȋbYIHԛ%,'.fh|y풖4-K74k4k\W*4-k1xBMCݮp6Suf( Y+nqzL*1e6F4lYkx)uP
Z#3|>;ʼNgDw=Yۯο򈙟d
GyDL+Ӯ 9nTioؙCqǭx3Q%oFDU#\L7<2MG+Nf#Wl83zD+ag%$$l%$!I#k\b<loCg=˵)9U.\'Y_2x ߋxx`Hv;#O1~u
 sX:Y<mOwtxCZa'3e1<AH2 ,#De; ؀eࠌM8$#ΰAaqD(qᄌm8)#S0pEQf؃"(ax}C%UBbSQr6CAb21pa(_֓}Nk1du\JFf].Q	#O@$] 
XƥTJ%~Ӻ|[uT!R=Xw,aނ_!}֥uVNv-dCb\,6.HD^
>-Lqt}x|N؋P*%쉬B&܎W`;T8NKRnhjI˕RFOȝf[ڔ<$qb?AB3w^j)(*ajU!1
;P:0x
=
|4p7X\VRNDq10
+A%+s$^:
B\\$
_Chج
Nz(ȐVBbΓfC~3J}],*Y r.Q$F@]r/ n/v,^W}h!PKG"'  	  PK  C:U            9   org/bouncycastle/crypto/params/DHUPrivateParameters.classURA=
1( (l.*1Zd3nlP
WPUhd="Ssz{:??lr5A\⊄J5RBa}	I90SӦ+|Yg%cynJ1Ra9r .-KS|YBUљeٮU4M	
{ef5_,2rw/v=f[*%V(oukX}˖f2+M&2ssT{]ö$f(mX<I+l1w^2DrٙNj;Y-m-}Yg,][6B[@ h6
Ȅ}8z
^^pNǽCi/
QQ<ӷW[_zei8+QFs2eDd\qQ%	'j]#0n}>:f5:7XJ#1wΑ5%+{ьE韐&9(y_끗S?]E_D4!BQ0N!.V0N33B4Qq+d
Tt#Do
Bh
wB!BpBǖx" vO埳)J$\C%*DW!.kʚtqS5"@X '
V!>FPs

m&vvb/q_ H.a)s
/蘋JxDi*a"B̬ 	t0Ic8XPs#ܞlA/jt@*zW{kmWPOZ0i{h]>-7~PKE#$  N  PK  C:U            8   org/bouncycastle/crypto/params/DHUPublicParameters.classSOP=oetM`CYWM2I4.AIQ
k:⾊Ba&J݂4s{=篯b%R)2(0đNam+ci\64K贴=~(+!C5#5)BroCt5KZ]hBos*"\R$Kx-މX>?˥mp]asw-M~xpz<GRXYBlձx+ti?̪CZR{sjϞǳW>8m\>/Nl
Ϋ0l*&ULVSq(+h+ƻ|+iW_ԍwx|!Pq>s4D&&Pndp	q32Ҙ44Nƪ^CѠs`^w5HE'fX&"b|Žd!S(ODa9>c]N##C3P~#EŢl2$v<#,~AУ.ePK%    PK  C:U            ;   org/bouncycastle/crypto/params/DHValidationParameters.classeQn@=G6Bixq*y+)HTv5qF=m?@ QX Mq6;ǌo (;T@`Vf,6=@?$&T48R4*!]I*+Ԉ#m#BWckq2T3_:T&:&2Rً}#8zm E{uMuzOD8̶d᪅eُz6XAF
%-Tlبڸ6rUtr{Zow
]
VJiuLZ?Xmxܽ@\`#%pOmeOؘEr1qܥчqkcPm}jyAx+37䛬uвx(Ql$6܁;PKJѷ    PK  C:U            ?   org/bouncycastle/crypto/params/DSAKeyGenerationParameters.classR[KA=m,+&Mt"q֍1UP=QѧC9ߜ0|~ 8.C'
)CT0$}inCZt:bߋGtyה<>o}Ş̃䞎{&2JjaPMOK􆦈_6Φf+g'񶅴¼A}*C<IXׁycHP[MCJx͟M6$$`X
6N/%Hs02R܈ҺCSZ~e67l+(<d
+?!#L_PxPK@=    PK  C:U            5   org/bouncycastle/crypto/params/DSAKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF}\5 mbȰ33226ݚ@CT-FQia`ca`b`d`b`gs~J*"P@i* 	@83kle U$4
`i PKa     PK  C:U            E   org/bouncycastle/crypto/params/DSAParameterGenerationParameters.classR]oA=çP--"jmd_|h܈t'2]&6&&>Q;R} u9=ν{~	92Dku+CDN+նzжFFȜ8lٽƛe}VjPͿiΒd$:r^1lRXXr$>3l]Oܜr96..딎dxzcIgp_MxkWyj7>H(ᵅWW޾kzv2J`"Il&P3y57m/k
eYwY3YAI3၆m3"a/(j(i(k8ڛHЪj3CsICv(OR[⬞"lɐi&NY>0r!AM{5H7xb#_(8YU,+QJV
<Z#|
e5 PK  W  PK  C:U            2   org/bouncycastle/crypto/params/DSAParameters.classSOP=w֭!
 ݠ>1DEbHF`Ow+mt_/e`տm#Iwwsns/ nb[Rqxk-1hGOJowxD(ڒVu'F1wkO2LDK<}o
OV#r^9VXn%8i
woVEpz~֦ljvngMzi5i04k0YpwO@[MY>.I۴˪ Ü.HbQ	c2P0"k MBL\pU5	3:q]EJim^
	t{wsx7䕗ۼk$'$d$dGLԧMfh]%p>!,u;BGv_w/DӁn'v{ƈq}_N@Nʋ9ʫ|]iXz9VyTT-KwPv4upJV5Ky29@BxYr;_PK-&    PK  C:U            <   org/bouncycastle/crypto/params/DSAPrivateKeyParameters.class;o>AF6̼;FԒFtҼ⒜Tʂ|Ģb}`G '$̲ĒT4,b>Ye%Ny%E֌4|nf#vH5)@6`220TYL@6#7 y@Ţ_K{+FN*AV-| PK     PK  C:U            ;   org/bouncycastle/crypto/params/DSAPublicKeyParameters.classSNQ]D&M[An1(ZDr:=ә:=E)Z&eܧ%jUI{b!`"y!3۵C{nW	.>3DMTX(A<rf	bahore,:3[ՒpS]OYZtOK^q{`xekL^0LVAxb̯ee)|{c^-8gLR-HME.CԪ?f`5ް'*I˂mW7=-߫Ch~00:80=K)НX|aze{+ҷ]+^D"٪UobG#cUVn(8VF!
!Ю[A5AŠ.i
ЉsゆcHD1tC2
.)1I+0bT1FWX|zWy`?h
#i}ZŔd	 =H2
fv0JI̾+wSg3_1tHgAVו13*PT^"޵N_[ԅA&0%oNd$CwjO/[wxChPKX(z  4  PK  C:U            <   org/bouncycastle/crypto/params/DSAValidationParameters.classmQn@}$ubЖI/)"Q=mUb`;\.@ q@pbƎs ,̼7oޟ~p@x$m4O:I+|r.tD>y血yǯ'%+=Erǟx
H	ҪNIO@7PoTLiOgʉ3udv8~?h =㚢y4O$~)0^Ƙ,7ѱcSeƓ7<6
-\0QfbYE8MP65ʸaPk*vn2ܢ%."<*쐶L(x^|ƹAVoS,iժjh~?]ҹea5GݪQKMJqϨt:Ot>.k/2-t]*B!Yefpw;vh;t3_('PKM8    PK  C:U            7   org/bouncycastle/crypto/params/DSTU4145Parameters.classRJQ]ۘMVub#EV/>MtFƣ_t>_"af9O Zci\X%|
5aE嶉Ί'rM'tP*q^auܪ~lcMQvkԛztu]ʒ6{S7,'i	i*Q0`aVKmCNYS[*wgnhjMryo(t,[ 
*BPTSa	
TaZ3ClQIX(aIrϐw*IG1jb>~5v맜Lobbbb";6_x1a51 ~FD?PK~1z    PK  C:U            ;   org/bouncycastle/crypto/params/ECDHUPrivateParameters.classURA=I6E!/%!	
xo@Pn^K,_&1nvfC/	Z%IT#U~lDy
ݙszNtj!q(3AtJh?aX{K/wi|U]f5c|nj1Ra9r oڢc0UufYjMSB
LJrwB	rh#PM xw%[IG.s

LfeYf9bj|kؖ*h/چE9k UB]	\tIgl'\ӝռkk);"wz/h'[kyy7ogUUڟ}{K1wY6e);wa*2jtVd,|׭w1228.ㄌ2:dDdqZ5nTٝ6|#1Mw+Fv6J5L]oK֭u{p$`bP:4q|nG(}Hb Я  Èo	

Z1(.K*h!tcX+\
#!õׅB/FB_
!*pQܡ'%eg8=)~X1Kt?!hFPIlyLO .]q㉤TO1B w2hY1^5U#/I"ֵn.cbc`uDʘJ!̽F[#nn"@	5lI5Ǔk!Sl'?OF^|i=vBVm%Q3?nR7<>N8U	PK	i.J    PK  C:U            :   org/bouncycastle/crypto/params/ECDHUPublicParameters.classTO`~JsqvӪAc2cBKP]R
][ێDXiR[ΠKۻ޽sw{~+UBBsDU0v 4:M6?\׋&W܎PÜPţ 7X<d7#f02[YNQ\SlB& ӧ=nFT/qͮt3j6$[ԏAQ=yzPsvlfNz)m)'Q>TPe\i;;<)~fOĘ
ӽ/<KK(H8/aJ´	|CSU{oFZxWS[Lyox:s4.1Ȣ]#ek9fX,zp#%k^ae?g+t8 1FŧXHVH!&[$]{Ueq%VF#~z^9б 9'd%,
v
!-蟠 ɡ` PKcj.    PK  C:U            7   org/bouncycastle/crypto/params/ECDomainParameters.classVkSe~$l.m%kzJA,PJQ
(be&K7fBT~w]H`t.Ψ}ys{?
b{A# H
q qK@e|}i epG@vLcqj]"i՘Qu5uS
VQVd]V^;4#fgTje=63bͱ*8)f6'[unJrAivu~zu)">*\ŰNPRf[0#3mߢese;	kE-?"m7).TiY҅j=S5g4@;Uka2ap|RU(^v&եhCZ5''&(Wʫ#2r2L+K]V:5neZ󶮦ђjMk-9RxU*bMl3cR>}ʚrOê=NBN=mZ:n۲a-=(ԯlMOuZ<MA7/83
"lCV$ᎨK¸)N\8(".QDC"R"hGEaoTF$'"EP_{ö6uƵ[/GS|u2ˉrl2^gq1[\;Vkufo&kD\D6Ngt|:KY#CD6H1eH2ᤄ蕰A	UI8ENH8>	xZ]xF8	1(!!		K؏%e:pa<^8Fh010ʠ$4CaA$e+tR]a!`э0N~k\5lʥr<ԲJF*Qm{j:zȘ#+$Ѿ*~MPA2H6==ys3ޖ:')%MͷaF<.bHnaV/G*G4Tb%9wQ3T;͋+WޟtyWQ
h`_!
a=*Dt%}_Ir&)$~M/E2E3M\Es}Ys5ŃKT?wx5	|E`ͥ^xk=AzxG'l7t@7&zJx>ZM"pm}KH?qS<Ny!ΕQXSOV)봞zz)yvXA $oj	o|D	:dn	;VQ<9x)h{I%mAQq+\%|Ow/,W&voPK\
c    PK  C:U            9   org/bouncycastle/crypto/params/ECGOST3410Parameters.classT]oA=c-UUUZX+iƤiiZ[}rXu벋@O&&5,55/n6={w' q tr,`n+ԣ*	^-9Wmj&)W"R6m0xkel	anvnS7l^v9`~5{(QWR8ZjU
ʍjtYC\kn1mqvqQFsy?-6`iNuwixwH|eA
"

b
&\"o%qnrrR1b&{Bg5,nuX)vu wԱb2Ro}+::_Qj	%\(1ESry]LIܐpS­P#H`."w"HaVm[gʩmҚ0+h)#ُ?AѴX: bX>%)3ǔg@P-;D> ug>kBim*_mQ$TTpEAnqlS̈́ӿ|?PKFHWG    PK  C:U            >   org/bouncycastle/crypto/params/ECKeyGenerationParameters.classRJ@=[l^zEߒVXDUXD*}.i$%
+GcD}3{Μ2$Mΐw}W0dۮjHQ]xE(>C蓑JĦ=c(^k=u꾒x:|;E_]InQOTF'җPn(G/׾ϰgD;
	
Y
:v߽%jtxw/A誈_)|jj1{MsoX-)H`@,Q19tLa޼t$6H31J$'E8.кB5*$̗7+C,r[ 2tX+PK$qID    PK  C:U            4   org/bouncycastle/crypto/params/ECKeyParameters.classKAǿNJ!HGa>e!B"WqPPPQz&3;ٝٯ GȆ#ms3ʹps=#"Z{B35'ؽT(h	˃ƃl"#n
:t-ve@sL㜍g	pP/^f)C
(
B

y9M_VR(]+v4X*aİ"

IԺamwԾ=aOic$\$j	dJ	IwDdRgHA~1 iO/PKj`^    PK  C:U            <   org/bouncycastle/crypto/params/ECNamedDomainParameters.class͔jAc>IVmjժͶkTPBA
$cbvG)7PQ^ >x&Pk6R/z1sfw>fg_FiƐ}z|ʐj&:B:P@ȼLASwEѦ-oP{^CVح@x7s]o[MAxl*\
r-
q|/ܓI
)}~#v6<):"2XCxUg;Vs_F[x}y4*m*e߭ۻu+:rRNn:]O;xbjy~A^B?|ɫ{5UzT|8'Pݨu1##:4%pUG:2S%9\č.a)n*YVrKm%+J('=XI_Fi yفnl,[X@s=eNE\1s[%43fD}7`Ř5M56
F97͑&M4YF6c~i?PKto    PK  C:U            ;   org/bouncycastle/crypto/params/ECPrivateKeyParameters.classJ@ϴicc4օEApnLI2y+CЅ(=sw/|{p-qx`?>#7sY"CN]eLLYBƓxƂhK.HK}SL\7ea}鲐	:AϹc)3&oiG\~ud];^zԿR{[, oUk&t7`i`m
ԇcc*&P M[k^#PPUdCaPKS|  N  PK  C:U            :   org/bouncycastle/crypto/params/ECPublicKeyParameters.classOK0YժꟋC
0aeE"-l3JAxĴzwhx_<||c~#.OS&D<ubO0׏ә4Lܳѩ)e	asBP4rO`=ЀOd߄'x$uh::jK!w.e5)s]Ls%f4QǪ	ӄ4
m
#1aCBaWUEjonZ@zl9+6_`=U=<z̏PKH    PK  C:U            C   org/bouncycastle/crypto/params/Ed25519KeyGenerationParameters.class};AZFFQLx4""B7,DQbW=9$yO ]|;&mb/
]#ׄgł+6Z'lCz^wp$T˃J{1
&ӧAcK%m'D{QDZI$"5[%PK:     PK  C:U            @   org/bouncycastle/crypto/params/Ed25519PrivateKeyParameters.classTmSW~ YMР%hEB
Fv\nP~i'ԎoM};g@SwfϹ9{ ΡSA
z$$OWOzƚm~vDB{yFBW*<<#=V֝ǃA8-!yr,RpvaN_x[^E[-ӫfB,F07vkzlqQ.+<<aU2gfY+e`w:BBPoP|RpG{/6CL[$l`Tpfd,7Ce[#a&[uu?{ m8LζEɰR"4MZXy$Lo|Q ʞbSfZi^Q+eVf4j-2רnjxF5*{A	j]-ۚhYV{/gV͋gG6%GAݗ6%J8Wmq{*QZD٨(EFD,qLq8!㤌S2N藑1 cPƐO$LJLH8L;h?pyNN)0:5a42yۆStn#n\NPVS[mޑ.5GCh#0hab^4ALCYiיp7<*ΣbTq*-b,ULh
yW,>gqO4U:;5:5p]zUT=aұHz2@w}||Ө.;@OR$@;%~ !k,-sc*iFJㄷIJ:O|5 :-BB鳏Fb:mmB'w0)|5n} h1)"&.d+dQW@ߎ t! iy2TAI_`FaWp8JTaSzLx
Qލqa|VDIӽCDG3)'W0{atQTߥ_au\ƣI%Bǀ-i\B7્ JЮ΄G0	\Jihj&~Gx}q`XƔѽ=c(%@7L(EO[HϷ|%
PK8  X	  PK  C:U            ?   org/bouncycastle/crypto/params/Ed25519PublicKeyParameters.classRkOA=CۮeDUW^*II4`Hfvkh j?JT3sΙח f@,a`LZP|WHJv4Cgnrv[khq(E3s̥gd +xͩT\^LMzXv&+1$VK[E]7)@4mN*B	:IެJU=q ,?زcVۢ^=T*0VueUA5IO]fΓ֛
%7ULh(WZvЬ+ߪ@bYI8liL2ᵴZHm0
ZZ5
ae)%I.)8C
7m@>700h&CMѤʑ^5"/=iR,)$O:niD"!LU>k($1{&1mbD11&,mZ){
%<!PO٣Xu%N])1JRu` )\ËhwY#s!FQN0;#O$Z9C?|K|la(	?sNir%N4>"Ûَc8ȯ^Mw3pwRu@tBaRوz3CSN+#GetFw{G=lf15E)]PKpje    PK  C:U            A   org/bouncycastle/crypto/params/Ed448KeyGenerationParameters.class}?AwBQlshDD(D^][X*B>&/3? JHEvDVU2INV9'SVlZJ#lĄ)b1	}c  Ohv{y"l"ux%UoCh%fަSAeBaCFŴfG_ү<r^7/PKK     PK  C:U            >   org/bouncycastle/crypto/params/Ed448PrivateKeyParameters.classUSW-!l.>FT1$*V`S(A@[{\nfM>>g2#3S,F<s9}?~
`"GpIBf}V<̶fq䕵ړ:C!^,ܘCpxnY6d4nNˋikXliĔVumq	oHr"GzV|ڃl hEUr\+WuYpde0̋+M4	warlNe(/J=%ns4ĽoTm3tt*zŹcv=3JwЗZ.9%f͹z^iQQxe?/Z+lӢ:*"''oR㍆jumT=G2Uj\Qp]2N#0/vv`Y0Lj9eyeeL]kJxXLKK@~4 %^\[MfU'[qyʴ~2i_xXFWFdɸ cP2.qYFRư;vaF1[3#U\es?hv7:kܨ{iyq.:M($GM;[ФZl1"HOiR1
YE"*@Q҅*
2 U@:U\I#*Q3	q<PpC)|`
)	$Ȳ *Y( *H^
n⾂F;x"uvl!tW
ZC(Zμǌ'YuMx\pӴTs![ҽ~L!w> ۈJėXsҩPEOB>^IwU%!DB=s@8
2f	#6L
ㅞ{;D h1#:	l'KJbAF N?$Ρ#GA͝ A 89j'>)_%?|$zuxuIYJݣe|
Q;2&ddH6Ag!BSx8ޑx̿HX!m6#"h"^_q?)N#.b)&ba7
=4ZMXi	}|ઌYcc(%(MLDXf?9@noPK}l    PK  C:U            =   org/bouncycastle/crypto/params/Ed448PublicKeyParameters.classRmOA~מWQN䥴(4h  ]s# @w:{T^b/g晝}v~v ("Q`o¨5i#a8-}cf55C[jwYvY][.2LW
Z^JዒaF.ax{Fՠؖq(]o,ZT}^*,suP9tzY|.1#nڞI?Y*me֛n50wfqD;K~9Wޠ&65)7eHIG_JϬrWjR^֚o(L.JmB$av%aU)%F8=Mڊ
ENC
4Яa@àwMW?<DSB^FR吔%M 8HC[xL80V8"s#<)`*L84
J8KϭI-jJlJnLSQCtiNX,iׇE=9C.rW'Pʉ6r%`sdG+d#f9)8c8\Fΰj9IH~K7ߢaL#JAΫ%2C
	*<#<t842RTFetϓ.v㫦(PK    PK  C:U            C   org/bouncycastle/crypto/params/ElGamalKeyGenerationParameters.classRNA}
0*%1FO."&*{3vQ!Cc§^<h~e8xP\U-7 +cgyȺ:r!ZrdA<g谅,4ᐡ[yEHb4&/7+\[w`zmk5,^eaZ~*=s_4+|.񓣪D5s+oHХ!AcX.7h!{ҙ&SVwd,Fs̫峧+n]Ϗ~QP}B7a tt##Q1=Vel;gEɭ^=ᥲ⴬r(pRi0a"73&sSɖv0~]Z-zE0u
]M O
f.	?PK  D  PK  C:U            9   org/bouncycastle/crypto/params/ElGamalKeyParameters.classQIK@I.Sw;xKq(XQP<6CI*xP
D/
&Ԡ\{m{y0Qʹ6t3o3KRD<gHe#<Q?j@2U]+N~Jjה޷WFl^ٔ|k(Oӹ,0#q*lWTvH:g5͛۬}$8b`":9H+z%F:ziJ9=Qp%H3DT&u:}:	[pj*;t
2W@@B352!kΆtVsEK:t.+=%ٓgj[&a)H-Wj;PK[$L    PK  C:U            6   org/bouncycastle/crypto/params/ElGamalParameters.classRMkQ=dtmV&N"")"|ɇЭBWd`Rp!7xd*R҅8{87 P,@~׉J#)2wԜҞ@-K%x(H/{:T~,`&ޣN*PM~xQ?0GǃmwmHvU"Z^;tECq#2Et0t\qQ`9I]d5ڮV-ϚaX@@%yE
sX1㲁L\ap%(bEʭ3Tn2ܢ'~,WrTB
Kī%s"aEa.E&4Vb-(S'	n;16w-g}j:IZqOϔ7O|<+oR.,6[w|6rܭNPuPIL>@|DF%#=yh_tyi
ma%N`Doy̋)PKdfAQ    PK  C:U            @   org/bouncycastle/crypto/params/ElGamalPrivateKeyParameters.classQJAMN4<l6F6YMtp3!Mowxॻ~|~yc[/Wj
yu-CĖ!Vv\2$/č0+B̭WUҖ.r͵bj5-P4-YW5.\Qi;ή'/G^C*Zo#|#Af4hb1.∪m/rCZEY=˜2% G#A8Bc4ƼLd;
+a](:ӵI0U8K4-	SFdi#g`ʛf#&&	z"7;Dí+R3Iid;j9qHjy
ĒA6- PK߄    PK  C:U            ?   org/bouncycastle/crypto/params/ElGamalPublicKeyParameters.classQJ@=cRZߺKS!E""*
ij0
nPP.D~7mq!
Ι9{`d^*
j<	ʠR1_+H䩸vQZp7KJg++JNUIU+Ūmd}/xJ7^-o^V7m0fi,àf<QrܩtT6}̐2ӿY?5N6}Ȱe4!0
=:]荀?("X
EwW9$fP:!N-E4:61ne0|Ծ
Ԍΐuj=t<ltdldA/+
~ȼ>bmB41vC5Z	STc"4W'PK}"    PK  C:U            2   org/bouncycastle/crypto/params/FPEParameters.classooPƟBsNZZjM\c7
[Җ)M ~(㹥x=ssH׷ ːH_Fɐ[k"4]ZZ	00bFju<SǼϐ3{yϐwcw㶛"
eݵmcm.ojO<mm{[vvгN
7l~iLP9

(7GX(#}j6pxYye(0O?OLMUФwޕU8{z=ݠGTEFdUpA<U`*d$H*iIrqEU!ׄh
+t2\WPDY
}b
oJ0C
y1>ͼEEC1CKw jnO?,HbN78-_t9FHDhIbU7jXq	\rEI8F"=3}1q'4b1q
	
QPK%y    PK  C:U            D   org/bouncycastle/crypto/params/GOST3410KeyGenerationParameters.classMKAƟms[+n	h'CD

:9+cߪ:PѨ<dy<#hn$=A&\nRa
2 ܱFL6.ԗ.#=ʧW<s%S/AE$u\).$f$AoR ?rpg$=d-&zڰ;g̫_K  bذA:2&Vm®5蕸{ڳM=E>-)QIq1bW/>fV5^xFqjPK%C    PK  C:U            :   org/bouncycastle/crypto/params/GOST3410KeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFFCM
ucH3322ik54gE>06N&FN.v^`:秤2(E؁ln ) @[Kz;V`
\PE@Hjma f  PKv     PK  C:U            7   org/bouncycastle/crypto/params/GOST3410Parameters.classS]OP~ڭ[)
Ha/w(~CHF@vWgيc]!]h0譿vf1%`>O<9= Xas+2Ctu)pOx iH!`$*{}?r|#{;ց0rO͚S9t>xṱm5}xF˫ٕIzVU
]wˬma؛;{+ť֦A==!a&Jqs1<*eà|(ykKa^1IWk܈/>:WڊY cBu#F1A !!ri2q[wL=70#`V9ӥϫy{WfHY!!F&!X"NOM"EӁ[=VZa#ܷ"<S[xRrrV?3HNf_N}9j(9WYу\܍2D(C"^I
}p;-()zHAAe!HXV?A~PK4'    PK  C:U            A   org/bouncycastle/crypto/params/GOST3410PrivateKeyParameters.classJPϴiXt.UHq),("qk1oUA\ >Pdoϯ f>$X	+BDY\Ʋ,bUu.RQ!N/S.	kV!\t"5AՁEDr"H;q&Ls*$t_:ZU[4]"z碆Bn6֍-cLlc922UԄ5jp}k
+Zh,/hMk PK#+a     PK  C:U            @   org/bouncycastle/crypto/params/GOST3410PublicKeyParameters.class;o>AF6̼;FԒHFtҼ⒜Tʂ|Ģb}wcC HjIjQ1#Jr243V30302d%%&d;e{敤Y32Hhh2׈!v֚a>$8VF.Nv.6^`:秤2(E؀!Rd1ٌ@, I00!v~-|:8zX0m K3  PK|o*\     PK  C:U            A   org/bouncycastle/crypto/params/GOST3410ValidationParameters.classmQMOQ=oC?JQZ?J;(
M	&bܽN'0tj;;V 6ԅ[1Ӆa9w܏7~5TRx(`Ԛ͈[-A?|) (&\m?X : u$G;Au=7F=
WCs0ӱzo`~(~W`/F[;NyR=ߙH#i!C)(1XtOv@v|UrиEVLEg@w@>g\'^j(+S6sNql)hTW&3r94E,ks<+|frm^mB>&M|J;N,tqUp%&*	#df,7_nQV\PPKb    PK  C:U            3   org/bouncycastle/crypto/params/HKDFParameters.class]OPtu^`L@0 j0&YWfY6)a7~ 7^hwts,/HwϿ=	9<L!^Gq!/,1$;KQRD!鼬u1چ]?ZjnUsa6w
Z:V47tFcvt<bX<tE[$_	3(pwvAVZ=
Ucq*wjX\r`Z=az^޳LQBl!0/<csP/lmi/?
17i9ވDmln!nDTXAFE
F\Rpm`AѬ<s^`2Yd!,H*)dnpG2UL`J5Tj*n@/īѿ)Y+^v,Zd8͡q(v\iK<uoCK?;½oz3Z[(#U:yZ9\VgI}M`"ţGex@*ivB`M蠔!)(/#$N9cS#J
jIV%}ж8+CfźT.0@#0eIO&+IPHQzY<S`G%PK8  j  PK  C:U            2   org/bouncycastle/crypto/params/IESParameters.classuOKQi4-gɂIMZHDs|L#:#(gjQ- }IBw~|8CZkzˠTkCi]:'4cs3Bs\!mǢWܺsO9>rs]ۼPpɯzmvk,>´(̦3
P3CG2^Og`>UȪXS#U)qDt$$m);Rrհ*4΁aQDd ?"3JT㈑SwHsjxq%ֲQyhF&g|\?.ŇPKJg  0  PK  C:U            <   org/bouncycastle/crypto/params/IESWithCipherParameters.class;o>AFf
MOFhh'O0FNf,cd`M,H-NάJedHO-qF/JO/KLN,.IO.,(/H,J-t
 RKR+,ɀX✟ʠ	
bY 'dDud3kle u`5`i PK'uz   =  PK  C:U            :   org/bouncycastle/crypto/params/ISO18033KDFParameters.classuJ@ƿI׶QS(<HBKOt	)5[6ko= >8ۓ7~HO0N(ܻ)
BsBPk%*xй#\[șyMj23rmV4գY;mkB?|ZOWחZX}!/ЌB#5q8b5θ!f8\hp<fu:;3~?ޑPKK]   6  PK  C:U            9   org/bouncycastle/crypto/params/KDFCounterParameters.classR[OA=SZ*Z.e"1јp#CbxCYXvo FMQ7K939ef_ `VGRG+_6pbcdl,
3%W-˓>_x^p_z[N00jPZN#&-'ܖ]U|rS3CDulבMk_+֢I')~՞00]URiPQbOpfŶeCs^+~M6u2gmY{X5*կԄҬy5g	*<+0}LI4e
\jmy8 ykᦆ[rkg9НUS(W@4+`,V0I0IEnqgNT4_-1Ia0pDQM跍!g:LkK8C,b$%fcQcy.2~oH^v{_>iPY?B
F-Ϣ*ZhFoc(F>"T#(	sD/bF48Yhi{I@az侎<A:z(YCoC PK=  N  PK  C:U            I   org/bouncycastle/crypto/params/KDFDoublePipelineIterationParameters.classR[OSAN[R]7Ъ(ZIQhZϩ1<&}4Go73__V\ʥP>e+]H2x],R-ܗr-υ-(Fiu8Jz_w{J>UJ|]W&=^SKDH^ӓB'Z+1@ȵfQJPnS|qi7!^-fa۲)Ɣ-eCtuCȦPrfyڛ[-˦Rn.='^J3oi_`Ֆ-G6(H#Ue[f4TTq'
8eഁg9iiridѝK"XJhq!q(hQԢ(0K)S8˴5wv:ZvJwE J1#SA77iE&AvjoxQ
Ej 
V=.]\^(~%_;Cwz+Lbg6mg3|	;(v0:0L<o70n5(QECj]kr8'I;aBEHQ=2Q
%M=/|Bu?|}4<>A폆':+4v}PK;    PK  C:U            :   org/bouncycastle/crypto/params/KDFFeedbackParameters.classS]SI=&#*jM&"n-+`u63ٙJnRXjUuoOVԹۓOysP`HWc|Td<;_xZ`_+e?"'!_qxEPʍ*!wn5J6~)pӏ
ޖ|Χf|_fݽswVoTLjRZBv}O2ځJsRȁAchiMvZO,KzϮY7l1=[rױZ+;]:3[mU1~i?68aAj{re][M8[B*L֐]Z4el[O,;UYZM41P&3I1N8cl,Czx58^g^_Br7
880cpZd
(^NC&PP0+q\.i9Ǐ^7XP	O75EnJLQ0> _?P
1?eŖƖTv8(DR
Z4=\}[b{]MRLb8:c2hYcn,ewq/jKC'<gڿP2
23QӄY\\Xhxr"Iԥo_C&Gc@J'86H!k}Mzv~2Oh1_э}zHB爞_PK[    PK  C:U            2   org/bouncycastle/crypto/params/KDFParameters.class}J@4Uܥ0"A\(d5MR2}+;,as.̝ϯ g8b=8
p"-ÝLkA(9TIMq^3|)2%>.UgSSQZt'RyY	%2L~ݪy];p|Fl6;bֻ,'D`C	7n=15, zAt0o0xi(܉^1|?67PKv|	  }  PK  C:U            1   org/bouncycastle/crypto/params/KeyParameter.classuPMK@}$McjAzIC.((^zƥMجBRG]ؙy>ߺ`0V`6nWGt
w<4'f Ա`uoy4AtXHs~"Q?y35Q,T%Qg^	y%%d'M(܆cõXf_:=,`cA.pM`6I.A-ZZA0 4;GKOIs`RzD-'l蝏
yFҚwPK
(0    PK  C:U            2   org/bouncycastle/crypto/params/MGFParameters.class}J@ƿmZ?AzIS!o*JAQ(xi.%MJV
JECUAE\ؙv~3<p*6ntm1nIVQ(By̐Sy'	ςx3#Dauȧh_"?:Y*Řa?N~/,	?HSS.8	)|Կ<?)b2aX20x<ўw`);0fuElXML}N"hMPd5%Uykj;PG!'R_@śa˫QiVT

GAg(n;PK
q|4    PK  C:U            9   org/bouncycastle/crypto/params/MQVPrivateParameters.classU[S@mSjREriiQ/(Q@Ǘm`4e/ꌴ30l
Bʃ;{.ݯ7?  A_3,ý-a(]Xy0S-2/jX^\5ka<wS02ʪ1֘˅"XwrsJ|%\l0̲lWp*p
E1UؗҍPs xSIIjŹ֘f2+M&1sɕka[:k9
|6,Y8Z<ʬrݕ̗L(FvrZ.YΊ5Y/2(|>+z/jԤׁzZy;E
C}3wEvxͳ^ISv>3[jqOvOS28!C)eDdqV9	gTQ	ך`;b3h]cXQEW
^u&4w0ywf3?})n{QwzN$p=:@ڢn*Ě뎈E3o諂6W .
ڑTp
Ⲙ"ĠjC&0*7BF*nq'Eqte,crG:ъ%]-"dOSd*y@0HJ~	6boK|AԥΨUe<E|IeLpK Rs_	3]ƣz"{H7P:$&
6Ed'?OFڿs;A0.mq$474@k`NU	PKK    PK  C:U            8   org/bouncycastle/crypto/params/MQVPublicParameters.classTmOP~蘛[MɌ	` ,owݥvq_DhROM,myyyz?|&SH0 S˱g;,CNK޾hۊm^GGBiY{{N6>o@>mߠbpq)kۤBr*̛"(%DPp$iq掩mar{7m[{o/\pz]ˡWaz:Fիi+u0^>-YsQ׍!/JħV!##+㲌i32fed\ax5
au+>Jm	|1+H-^*>Sx%xXF2g0$&2B!%(SXJcwȇfӸ;i,Ae-Aۄqͽ7ikWO 6#/*YKZJߑnN|Z%¨tL	tic?Qd BeKt<eHذ,yF>}P#ePKm-    PK  C:U            I   org/bouncycastle/crypto/params/NaccacheSternKeyGenerationParameters.classR]oA=K(TlѶ-
Vm4h#&mXuu%c|D}Gwрùw9;7 w`Mc!Yox°r<yĨqD$ÚvQEpςy#30ȌÀzp|
|a=C+:C!
<_{Ùnp r}G1^0lNEgm<};\gXv@1z,qer#RD4cD;w^6Ƀ%.:
::u\d0Oіcs^_AKID'X! =.)`+2TdQ,6`fˠ5î`ȷ%w>プA?_	NYB
FA1$ӭL\u}bh	B%ښzd,h}+9ƞUjh(ZOLpv>L,Cf)96KHB+::F(IELk}F|t팾 m7PKNE    PK  C:U            ?   org/bouncycastle/crypto/params/NaccacheSternKeyParameters.classAO@B"RPNzjMc1ƄlJ
mIh<h"1Gg!v0
i4guNЗg<	yP={oFP$:ꏇㄡ<YpŞsG<Cq:31<I@wDz<!Epw]ѡ7䱒`w.NZOWt`GݖQ#,2dCf%TiQ_`MDDVumv}a7ްeMP'Umeְ6W;g<Ss>6fBCPKNXG  +  PK  C:U            F   org/bouncycastle/crypto/params/NaccacheSternPrivateKeyParameters.class[KAvCCK$ED/1MúUACEgՈj{pś [c7p	(=_x^7r}3Q 'RS\FPDRȁijMҊbOañpW1n*#v ƂBt1H+$lW_~͛t"=iK!M/lmdQC)<6T2q+4(c|WhS#l(u:50I6ٺ1E]7<!YP{Q^~Fq!g"W2>PK:;  i  PK  C:U            5   org/bouncycastle/crypto/params/ParametersWithID.classQMK@}֏Vœ$-ś"z钦$$`<Q,Pwy̼vW 8 ~0 T`#N4gdXs,Ҫ(LƄTK1i,FSiewi4dgJD<י'D?Is#*ŷ&	7*9XsPwU<!t?rᯮhxAulbۄvlpTXỸ]|8svu>c/,aO>In/i| PKl    PK  C:U            5   org/bouncycastle/crypto/params/ParametersWithIV.classKPǿmN״_ZӜz3zЧPԃOs
s	
#??*:'z/|9|ι{Nt jf!~!ƽVd{~ $0EzeV	`H;bZ#Yq:v+t
CϠyAhy;as;3q]PCC㛽u?d$e(2dzcm
nhӕ*LZV!U$ HaS MV\p =8Pݧ{wAMB#MH^	^Ǐ39#ZY51F^/Q'䅬Ϻ84ː2RC󴌭,PKTf    PK  C:U            9   org/bouncycastle/crypto/params/ParametersWithRandom.classN@WUP\BWjܸ2!@R&P"LJ	ƅC D#Bs͹s|{p2Į'\;isEt~a
w{O+wGӰj-J
:umWҷonYoOt,.˃2ox`8DW'[ݙ11ji4h3KA5'씗ViѡΚnE;5կ0nK4ۦj`	:B`VNU˞:qSz9JS$:\詆iAk,aҔ5B*hU")vkn"լx
D IRF^~l6 PKo  H  PK  C:U            7   org/bouncycastle/crypto/params/ParametersWithSBox.classJ@ƿMRccO[M^z%MِbJ"x|(qPwf,o N`	a̰r>gLJ}%Jq',+X=2'AS~9D3LH,JB+ϊ,{q=+8\.V]4e2?8q8Ǉ
lݽn%)マm;,SIlݣ6VhnԛHAS7tڿZPK]3    PK  C:U            7   org/bouncycastle/crypto/params/ParametersWithSalt.class_K`ƟMkZV?jNa] uAVoU~>Tt^40s<89$x v!vKxh9nȐ5lgP(oa5q׼lg=bkvZiy8floٺ
7~Л.>$
6Wz?OkbەM4bЛ]m(!	Ym

QdHcO})đJ!(P}@D&K"T]ʲ'F,gS>A\,(1'#'	񌜔_p5I4)#
qюagE;?oPKg    PK  C:U            6   org/bouncycastle/crypto/params/ParametersWithUKM.classoKPƟ5-+VjNa3z$ k'uc`ߪ 1" }40Ѝs9w{?^G q QVf2x1\Mu˻4\cy#s`m[/j-~guTۭ55}ymK7]lt;=?POao^dg/;"d	KZey5"ꣅ2hj63J+BT`U CBAaSF[2#SM_,d(zi
] D*R]:eI'Z./GC??IL 6/!Hi_h/NHzCXNPKݞj    PK  C:U            2   org/bouncycastle/crypto/params/RC2Parameters.classOK@&M6?^zkB@<EQS5XBn~A)xCYgy|} ͠w{C;
zUz
Y"uQP3'\<#?E~4Q08ŔqVE,}2Kg?wnjfnÄaM^CkuXhAz"UM9:ԴXBBIթb`3jN/e.~S[hK>_]aURJW;p6ܽ82KY`+0w8PKyy(    PK  C:U            2   org/bouncycastle/crypto/params/RC5Parameters.classuQMo@[;$
:q9!шC"$]9nl?9DU(Q @潝7;;]xUT;,Êa0^4VIAߝMD7H
tՄ;>CE\J^Y^S$#AM(;L	O`$"DE,eh=PAs%fͽLF"s E`!qgٷ'͵h.MYf`[[8mጅ5x)qmѷہ	CE5\M
khau\<\zA/껊'<ǉ@`
}dH/]T
MޠՈ:mz&NޠkWŗ:=[|&a3,lX8JV~7jnUo}c=n-PK/0)    PK  C:U            :   org/bouncycastle/crypto/params/RSABlindingParameters.classSmkA~6vxIK
/RڨPq^M1?`)((~GY碵p0;<3~`b0̓ 
S%zRKշxv,WZce	+aYr0GǨDX1}LFW)'wP"T'#'C4鍻'=PzBwߎ%Uc;n<':Ftj°~QHm!'9HY--JfUqrd9rW8L<bs"66'8eyV$}#Em4yĤvLL㚉X2a ,J9`PFܑkn(Q"[Ȥ57p==AުO,~D
+?kr;FG"7UL2/~F+aPKJ<    PK  C:U            ?   org/bouncycastle/crypto/params/RSAKeyGenerationParameters.class}R]kQ=74nj?V[TA$"HBi>let>`-(?J]ȅ3sg
jvOdofs.ZJGz
.0<
;BEJ3RyN/ȓv썆;w)~yPgzJGjN'b_N?{СTPyJ蘔O,V2A rSW&: ǍHKJ_XfEd,)NNSDYPjףa[T*ր,:#m.6CSw|mj1t:mX$X2qx^~bOWJfL,`"J&ʸ۳XZf֫XUEwhbi7<&Z_K  lpl/w3a;l?;.`m,Yk
?Bt.i.:m\l`@@CpYheI;_ȵ7ݭO PK˼  ;  PK  C:U            5   org/bouncycastle/crypto/params/RSAKeyParameters.classUYwDؑ*$-
Io,Ri@҄0FZY2W7xkHr9Wq6wΌ~*e038)oB/qMBj|d*7Xѵ
SjEש5ꪌif;ղVr:\V-V+aV\U)s6tR64^,"4]c(
C3Kp67̪TK&\]T*ʦ픪kbɶ[qܢԢmuW*s-ݲu2nrTuˬV,[Z2TSˮi/9#t[>7/jm6ߊ,γ|`oF^]f'a$~5/MHn&y;l4K!n,߳4À=ۇjK+K5"g_;OY1ǑeB:YKyPO6;QlJZH<b>ex'2`'wrZSiQv+,pY{Ar-*f7yyq<wn+Kl|̟ŚbfⅢR%B^"#{=a+ɇn>"0O[a+l'>b6M#?Xo1s:K8Uއ@~yIXk6=ǫI(AEEfF'gʷVODa=#u7͢ݭ;-)>J-ck%91
jX&&O$y'!(]'d<)cBƤ)dL(((I8dH8${pٺdF<hJA}F<]IHvGO*+ ..{({bqgd^ƽ2)0XiQ_.]Ro?տt&3
acP
AVcDN8(8E(f1ay/)8ł<^Qp*(cQS0,LxM9hx+ `M9Ta`b,<g07sxoxO tB<Ygc0k_ߤh@27"զmz@Mڴ1g&ԩlހ	sOH!Mtfbt8rjAӯ1pš&n6>
yrSéǥSûv%a}P"i$C}hAM!U(qrN^/>ΐ"=y}(s4vjcéo;Bq&6D}ឋm	}==>ԏo _qSagi,w3QyWrCp\AeV+NGbCD%1pzg:ǻ;@#jOƳwuoC8$
y]N8D=CtLOSdPKO8  
  PK  C:U            ?   org/bouncycastle/crypto/params/RSAPrivateCrtKeyParameters.classՓN@I|IB
K5DVnRK@"RL#3DZ> 8'؛U]ki|9ۻ?BK
(wX>	-`yI,r
klGgAU?
uhelPw]Q3uQD^ߏw=p7z/6Ԋ>.w1*Px}7'۠Bkwe0n|ᔧ簾]E3UY,G,,S,s,2jx̲"Y<eyV4WhXI4
+pO^HKt<uL>6Ғt+K}?\OaS:Vf{|U`II;NnE%K	V6%̦mj㦀b7/e3lF\J.^yPK<I4  x  PK  C:U            D   org/bouncycastle/crypto/params/SM2KeyExchangePrivateParameters.classUkOA=#mV+J/|RVAQ|v,ݺ`&Qho2-$͙޹o?>~pq%Ǉm-Y{47Di^-	X,|AypyȥmˋnboL|C,265LnێgaW,TYҜqQY[$*oa-ٹPI-3|Ȯ5"S{.ٺ/B:kYnR&?7EɓͰtE=&.V,O,J*b;n[`H8n!s*hg.<'TBVNgnȩw+ـ7;}T<(V5}
EͧIGNW;!Kj2!qlGajIѰCN
4ѰW>
5`h8pnjS9kd+'Ұzzؕ:|QY\KR!ޅ͸U<b4ժGSkIG7:"HUЎ:+hCH)1щ3::pVn=81\P0`XEÕ((8(qYA&$*"(c3馉=h>楻<g	$|W+ꯑUݷ(
!L|E[V0%U(k`B=˸Jl7|&,a"9kɞ֞2nm`wp=Zd͗Z˾4FO7Ӑ~NV洛ښ|׀/`.m^somʞ5egnPKS    PK  C:U            C   org/bouncycastle/crypto/params/SM2KeyExchangePublicParameters.classTmOP~JsPp|ki1D%3$t]G_Wh",D>-BSgfHsz{s{?|4H @T]SOmج,MM-sp<低bG\i<n46]gk6=\Wܮ
`:HZCv8bf`u$~h{y+]lJf^7
P2^5{&7̠燞QIk_9uj`nqX&gchubZ>,t,${pYY	sd	W<޾2lu;96vr>R>O7Z^y1YG&,Qndq	4Vp322XYNPLV&C<ap8VW19O9jF^$<5()W>#=YtZMDQF{GT/CK>Q:d!~	t<eIذy|J#0fF.kePK֤T4    PK  C:U            8   org/bouncycastle/crypto/params/SRP6GroupParameters.classuJ@mh]7]A(t?Ø&a2V
C3iq`ι~p=F#B2R}E{s%BVf6	l3hi$,Y$S(t
dOf*=x6ws3_u*o3-P0o>\+
Pl[vF|&80W[2]+tOKwCh_dƭZ0 PKiRm     PK  C:U            6   org/bouncycastle/crypto/params/SkeinParameters$1.classA
0D'*=F	1)Iz5COyz? V2Kab_5"y-*wS2DCBNkْqd=*Bmٝ[kɯB9 9~d9E, PK      PK  C:U            <   org/bouncycastle/crypto/params/SkeinParameters$Builder.classVkSg~VlƀTREhk$/aeMw7hzSomδ-3:Й~=fKNa漗sy?~@/>f?Տ8!@]5hAES-Iħ#󲢲t?.ʆ,fD|Ez#1ɌeFDȩj$g.Rδ"spkEY˰HwXWWXɮG(e-lYVsvSUx/_S)f^f&\NQRu-6n])`*[be
{S^69?9k2$OLN蚀]7xPS#2:ldr+*Ќ%[̅B:7=wH;׶eFd{,vۊQ	Gk3RVenvۙ5>gC.i\?+<E'
4JHJ͢RlZ*|Y~f|f)ESxZ{`Ȫ&39@Ŭ[G<&4VWxV?m]еIE
aPLG=oT%eghn`K/] y[ștZDXn"+b"""ZDqPD""DUNָ;ɪ"GSԽ_ꯪUop^D+Z;BaTw4^T4q}d-DU)PZw8@m[GzuMuJ|_lJӧkTvA'ιm+걓^Vu;z5u+yLA@+	8+ABB@Q4H8C8'o2)87O`JB'3qI\Ј+J*w$&! 7syn2,0 9!C%øYFIs0r(ɍtn^P5%3H5`27B\xF41cTMb3}SSro?PSL&$Td?R
FE%ႃ'+5
}4HO8u[];<3M1!bT]S+ ˵T#Z_+*t*"h<W0y?l#5_akspk7t-u|94?1^ju<[ЪO;&:R{=&o#q_F"@Vgɰ'+vwɐX7w
{-`=xAo0!JrhSq׫RċYtN;fE{݃gw[e^DW"+~1e1_{izhz+h^Er=dZjKnA7ɍh´XwP{eاdC`APK!  L
  PK  C:U            4   org/bouncycastle/crypto/params/SkeinParameters.classUmSQ~⻕e-X:Y+m.jslM gss=ow 2*]yb_6m]a`p>/t.m0ylEþfںn3<-PHn}A1˦Ջv"ôǖWl2E-e:wR-LG 'ǩ2w,.o*]5?PVutt׬a,hx1K˱\tHTwM+Zw\dJV*u85tǵx̨VJ,mVx{B'jUX7mo@"R!i~\
lT./7̤ݪa/	" DPQ!BJ0.aB¤)	IN3ϴika\"ChA	%!dRi`N?D䲉aCtDl޴ϦË 7PY 3a Wh XੌHS\јKWSHWlmwW̏^m^K[p!L>4$_YMX;<8Lw	<G?tlT8}R&:-Y;"{gxyՏbOMi	hr
cn	E?!RX=Ѐp~ū/X{=lqG7oG@#w ۑCȣA?迡SA񐟴ܡF?yZ'I PK~L  w  PK  C:U            C   org/bouncycastle/crypto/params/TweakableBlockCipherParameters.classQKO@R
XE
VfG"5уi,ԖED2
Ba;3c&;So1zqڍIr⇾:cH(v	CG)= x .e_k(N4
CH@Ed|-bq/IZ4?D' ǱH6[YX`[Xd8g&w1ws:-K0mb#
f##"GyEjF@;@`RKN <5kTHah}Ea{3a:)2ӔRY<
PKj!{3B  Q  PK  C:U            B   org/bouncycastle/crypto/params/X25519KeyGenerationParameters.class}
@Dg}Wcav>E1l,D]E"6!e%X~;\fμޏ'!*Ǔ0p|BF̙#(hF0+Ņ(ແmG?2$3$Be24ζ
:Z599nudtK!|PKN»     PK  C:U            ?   org/bouncycastle/crypto/params/X25519PrivateKeyParameters.classTmSU~l](4He		-/kF Al@\6fe_QɴNnN3s9y}}?z4'^6~Cw+ИT͌-aw|G޲(rRs=Kw0k
ƪ]滂{lخQeyGLp9o*P

bkba7j1*U
/+XӪթNb;TwLXN[	F22
wGͶ54;ĮĊ8U*\*$;b]]x]5WAIqiԭ(<Ϊ
F܊Yp^aΒWPQDQl635bAXM5MkEͬ3URYrn#S0m)`qO@2qhr鹐`c.ɻ@Ӵ='H8t±#t=x"bX-Qe䶊QbL]i73뗜|C9U&GEVHopl4r·[WD.f<ʼ;;0d;-P$D`Hѭb:ƥ1(M
~\ՑL<q:iSxa
45
X("g}0Ui>K
cY,JQY
\|}ѕg=l-DHu\B9?)yb:7J.c|M~z.[x'j$^Z؊xyE#	3Uհ9Nט(%ˀPtRTQ*TH
%۰~cEK/BD
1*.evH;1]nlP0, 2 KE#ᛀJӉ[-|l^)I6:Ai9hJ2ԉٗ}0m1KI_;8PK'7    PK  C:U            >   org/bouncycastle/crypto/params/X25519PublicKeyParameters.classROA}R=[)TeE*'*JJҠƈaץ\Ư CGEMfv̛};|>R$LZ5͛a[m++3ojz%C"g׸^T"9ly}KCO@ֹS[o5ױ0
CrZy]f)c-'l$PJAvfCr3r|N/eK90DV*0VueC6NQ[U[+-;贔oD m4R&;$ýڈ:l3C
Z%-y0]"__
]N
!qeƂ40d`y\40b`%g=[0;DsB;
GZxT8I[-Wz@4bidI#D0ҸM
40W4ΡnǼ	mᶉI4)`isu̚MJ4Lk+ᩗ
p9*a<JQI*qt>CX*iwqfxC:'͹+d',
CS5Y֝EM:ă|f.vo	~<Fec5:m<#<>ty/0t3TFg<ib3p[a)J ~PKRWb    PK  C:U            @   org/bouncycastle/crypto/params/X448KeyGenerationParameters.class}A:_BQls vݽ	$g$
Qĝ7y7CP*#f'ؗ=M|Z8b#mByd&"-N)~dd	|//RDMhcJ/
q	Ϳ]WApȡHȍuh!BՑE&R[
PKg)Q     PK  C:U            =   org/bouncycastle/crypto/params/X448PrivateKeyParameters.classTmSU~l]^ -VyPQ*HP;7Kvl2ſΨ0~79n!N3s9y}}ٿy
4'^?n0!7VŁ13 [Ď+e9vQ #q9	z8.aخ-oܵ++5RqQ7MO猆g2@)(KݼV~;<z׸+}f;Kʊ3c-ޠ*I9Pե05b9uS_&I*'a7B֤Ӡ_vl+];qUUHDvLnR-vUw.lt
_YMhu[5ëYT:r	T"q(S噺W5tVbMpZ
Q7clj\xA2Oٶ
fdo.kL2}knn:P_v%y9M[miCg;dMGT$U}#*U@c*Wp3$ꜢGDW| Lݭ0٢eo1RoSOO/(XL+7dQ~-P"A$u1	ituܐ&MG?Hqt8I4ܗ#iKeWB/_`f*͗|a}VOAJm
kK3CfeJS!q
~ qX G(hDm&3;ֳ߰~G!AZIL[#0sW /Śòh$;'G$g5;vȅJvEKL]Gxy@u(op]*T|H=8U
DG6FX{ҳ§!bK))p]-r.ei7O(CX)Gh|Pi:y"_JRsŠqYhJԉٗybyyvJ%H/PK5  t  PK  C:U            <   org/bouncycastle/crypto/params/X448PublicKeyParameters.classRmOA~מWQN䥴(4h f{]kh j?J=*/3>;?};b(tb;aT4013КYRn{r-|
WBۮ-k+p-/pEɰ]bJ0]C63Aѱ-@X!Q31nyUY
j%cTp]bܴ=DUڞ.5Ej 7/xa$D͂2wrPFM^%mkRof.k-^0-^Y>ZRҷUQ_W YfSB:]!vE%aM)%F8=MҊDNC
4Яa@àMS?<D3B^FJ吔%
M 8HC[⸧L80V8n#t㩎e♎Q<)`*D84r8JeϭIMj._JlHnLSQ}tiNX,hׇE=9ŋ	^C}*'Gi܏Wd3C/FS<⤨4$sE:g$cx3!
1
xM+
;/;ht[h+$|й0CWHQѝ>KF	fGMQJ'PKJ+^    PK  C:U            :   org/bouncycastle/crypto/params/XDHUPrivateParameters.classU[S@Zʥލx7 x)Ȍ߶RiR?>ʌΨ<9gӖFNzvsvۏ 1@QTЧUB{4L1[ҼȋfZ*]SyE]dMW[Ej٬]n;is\>+xU9eÐnMrS
̡t}ԝl@M.su͏ԝ>e[E	
K,j؅r|[S
,jMl 喸JHXQQ_<23>O2PJTvx^BԲU6)ͮ\+io3vRR$iM0:Ն{wOdi^Rw#N{ZK駍;6W'U(*eT:?靮E"#,[F^GdqLq'd$gZQ*hlfǡ'oOg՗F3AZܿ9 hn&zs< AaN#ck*.sE !a	s=3D?F8+93 Ƃfp	d<Aw	BK8v)7MLkz>˸J @X@'&A"]C|xڵ&&_g619kP3Z~NQmjSIo`
WIa_7E݁
ܥ-Wcu]='֑'q;>;kBɞad$d\>@#DӉKvQ+	yWPzpj PKSE<  J  PK  C:U            9   org/bouncycastle/crypto/params/XDHUPublicParameters.classTkOA=C-( *|ˣEƤFT~nea;[w~g+4H4iy4C;gι{Ν Y̆70n05Ƕ'qQ%qgRpl2uKzA8aK}z] LՀ ~mK#zn{r2#!GX{V$dv%2^-̀!JOrs:E}=%Nb_-S"C,VY580j9p(P2ؾ%z*
f/S=_'g..N_&\|.lTV֪vzwD׷Ћh[ⶬ8FMHSii[C>
4\cxR妦#?qLnW) &!ѢEYr-

L':(02nACx2#H+ah_p!FgyoF@;6(>uȇD>8D}/ľcx#~Ox!2',Vc  'bHea|dq4kE70+O/yF#6rQ?PKpـ  V  PK
    D:U                org/bouncycastle/crypto/parsers/PK  C:U            :   org/bouncycastle/crypto/parsers/DHIESPublicKeyParser.classSn@=nbnu.E[VX
R%Pgr^#W AhT*39sg?~~?ٰsaƴ;y|P+BOJ;ÄAa8ˏ,{{+FҏBJ~8gm+jБ{v('bz{V/JC7sDrl$#kKdDֿrF\"&agwO	F*k[J?P
ٕ;U&L c*&8G̡s\08.q\°ܝkTҮwl[N<!W̩PL8$RϮMs)Mh((S4P-j{y,➎1:H
<~~6	ꄫ:@dnzsPUܡ7*)!4`C4*}^7,;j{Z{J)/eҨ5PK\ac    PK  C:U            :   org/bouncycastle/crypto/parsers/ECIESPublicKeyParser.classUmOA~= "xB)"(j+h&%*uSwPOhkw×ٶQz</vL"B[%:mLg&	ou4'mEʹticھ&ləv^;pO?XKR u	p('Ud1!adtO/I?UJ)\|JM}KON"<m7g	pt;Oz_[^"O*$Y2q|b)FЋ%Wv}'q_)բL
jI̥n;ݴk	_xT}2"sٟ]kj
M>)%Z%+K6_22z8B9pD8rtptr8q?7mF+g֒cх7I^]Q273GvqS)pt-[`@s<j+ᗚI*TwGM:?ꕊCUю="$b*NaLԝS"ByaLH013
NcJ
ಂ:"ɬ!\Sp7$D1MGAxg}x+%aZ2[z.$b"h Ī{ ?^\ |U{!훨xc?X^W;U
Vp/GBloب[V`D"EBxK߳x0̽]mHL{R׃9h	|PK?  Y  PK  C:U            9   org/bouncycastle/crypto/parsers/XIESPublicKeyParser.classmOAl{r
JkMsQ[Spj{\r~?o5`N	шovgwr:hԟc+SFoʍ&	E(	%7~yݾ@ޕov
|z17jAcԷ1h&n(v"Bo1 6`$k ɋ.ɘp$0it%
Pizu	eۏSDf3.0.P(4	v	~&L{V"ﮯc/jӠ2QԠcbTⲊL\@Qԣ
'_?3Ԙ,ϩ,;cm%7xuk+O}@6gPaOxB#jPҫ{;*_K뷚g\1M`U{0	
:mVwbL?PK9  0  PK
    D:U               org/bouncycastle/crypto/prng/PK  C:U            ?   org/bouncycastle/crypto/prng/BasicEntropySourceProvider$1.classS[OA\ERj/¶}(I5uwJDcL|GlICdesf_ uL'|0F2/z#0](ΜvƅٮwlO\u*$;(.%}oO2T#uȏra?
>%OpZTm
ǽaoUDȰ
<PvvSv3t%J[Ga}@fȐ1,Ww
-%<[_.GՁCytMpOiIj)L1p%:zeo0lf&{08GӦQퟡL
?+
k&L1q&p&9yvIdCV\)XE4*۞;BFf٣ryq*Ǽ
,P$ fY4D+?LGb"=˟ΥN'
S&Hsa.% ^6FA:1OΒexɟnNQ<
E=ǒdGMbSvF4K#h
wJV Q PKVwY    PK  C:U            =   org/bouncycastle/crypto/prng/BasicEntropySourceProvider.classRJC1=ի׫Gh[EP\EAэ4+5)ɭr
~%N tQ̜3I
R)CVd]0_6":6	W	1/aB\6VIbe-\բëk)ȵM-M%Zۤ.#aZDG
C]nc4B}W%RYXaXSaaC?jJ4qҊNAsU7N[Ń.,?lw/QRᇘz:ǅ;F4Rz1mƔۦ}aG=]AE)iZiD!lneu)	w^rtvLp	0bD8IB0{Gcm!#
k=]N̗OPK֏sA  j  PK  C:U            /   org/bouncycastle/crypto/prng/DRBGProvider.class}
0F*88vJ4JM5
}5;|p8`!CW+0򻬵ʝx^(Ē慽JqsYސ@Qbtc&d*3tW1lNRe«4]!}bAx}PK6
      PK  C:U            8   org/bouncycastle/crypto/prng/DigestRandomGenerator.classR]SU~Nv7g,ʗԖ	Fۊ-	:XdSEѫԻ^Eqp{v	N;ֽx=y/{ `I@KN+-'2>0;&+&fi2ǋr]']>.,bF t'#J[w<^v*FⲍKU	?R^%@oMg祵jJG-nխqS7t&v%ˍzP[6(]3']q酕nҷ
k;+rT/̆6zj
F;
⦋5:_:EUjv_nzL=y3u\IOը7PcL1
*9h-/HtH{~cm!BC?C/Z,І!g ,Dg8INpa!-td4+2\bp%GuQ1qQFx*54lC{UdY+ZP6EH"L%S_4w/`jK1WqxpN#H;i'1e'w 𫹍I;̿96ds	DybI{y~?3a#Ll!|`-ҏv	VhO&1PH<&g҃LP0ݻSQ>tСIΡ<z(YO3IغY\alv'_MNjɽ08=| ${yT׆
tWGa$UQ$M2.76
q)?:t*;6jwnYLQ)*qHgR=  A/mpP`J
i2Gzx|yUydG6=t%O#݇NjAPܓW#Kv|Nr]Ekf~ucSy"ctQuOt+▎fN5u]_fr@֮D<~Ą/?PKb    PK  C:U            0   org/bouncycastle/crypto/prng/EntropySource.class-M0'* .]'l:ڐҒ9~7%wEFa!^![zH¢~3+NVޔty=aY;g
;[tZ;H&lzZZtViY0ǀ(&$ AFACPK      PK  C:U            8   org/bouncycastle/crypto/prng/EntropySourceProvider.class;o>vFFĲDļt}dQ~Q~R~i^rerbqIN~rQeAI~APk^IQ~Aep~iQrj@Q~YfJj;;3#ڭXX@
 PKBǸz      PK  C:U            .   org/bouncycastle/crypto/prng/EntropyUtil.classPMO@}q>@MIS@zp"W C+E2K7*
;rJpr*_z?jKÛ7oۯU,4;/a4T[¤*$iRBUF*J5L}Be OE4^et1'DA
$H(a0?>Is#~	DDՄeFXqvo?F?T}`YQPf<|u,Tр=G/>oRvh_Be@1\58G	ͫ\PF	sw3)rv[	s3_boګ-mMu7;Tn4l٦D~1-&nMȶ%&k<31sPPK㉚  g  PK  C:U            4   org/bouncycastle/crypto/prng/FixedSecureRandom.classmT]oU=]{IܤNBܴn!vҖ/JJ.mErPn+ݵ~AGDR$*Q0ν	J;s̙9k.y
z&[Tni025
LQpfk{MFM=|85h8 m#ǭ6q(}֩x
sgDvyz[<sw/qNEqB>M=fx૲b%-Q>gO4ǋ
os5\Qu
zX}կpWJJJFl+-BIs.o9F4J\tD=$lJm<VZnSaMQ煊i]ͫg;HK&L71a-&R&֖KOo<T|Q1i-HK`pa. f4rFƬ4sbƻ\fp+ޏ!+6IsC񪴝`lΩMـ9
9#@߉$lo\k!/F#`zLBR=Yh=elbˇXz2F3ҳq ax13^ٳXb'jcŮsE~:O!taLؚwLLk&Ah.,`!%,%.Kb"0q*b?#
(Kr]ML
PZ=EB6Z0cp$THVRiƿia:H{9+d͏wZf0݇}	$K wZfp`D.Q0=zZZub$(ڿ\!~y5PK
Jn    PK  C:U            2   org/bouncycastle/crypto/prng/RandomGenerator.class-A
0E'6FQAt#DPpjRbx(1gއ?ü? a& ɷ˓4?2,ј#!`+`UV!\LAc-)퇎|85!Ky	08I~QHccPK      PK  C:U            :   org/bouncycastle/crypto/prng/ReversedWindowGenerator.classR]O`~޵]1nALxD1(:e{3%]Ǉ7\H~`&$v%^pss$&#hA^0'ʌ@p~^jv{B+3fye[3-ķUns!yqʦm;5aQȚi,Ӯ-WM[msۛ.
]/{Ul'Q; ªӰ;eYPvw6<RsӮ8돃'Oܭm]*o7y4^->pmQ
fqjPѩKE^;͐.`skvuZj<{N8чhqdP!,Gqtb044E!l)܈Qz
)-/5Th3˞Y~hnŦ0LQ$MCb i0W1DqgĔC?R;DGZm!=-r }*&(v#tNRtrjdeAxKaGBt} ˠgfhl
s*[*)^Z
TP0J*)y4%ȁT^T"dbL|pGa7#$6b|JF/M'}%dv1K]%pOɓN(VzIT^Dq{J&mSaTj$TDǦ>(!,w9%PK6W    PK  C:U            4   org/bouncycastle/crypto/prng/SP800SecureRandom.classT[Oa=_iPEnEn-oܼV` "K]v*E&hO28-MILggΞ9n	%h+m6k*?̈́뉵@iuFm'P@\4tRu7MJf[OF<gXSν4R9"ޠb<ɉ\2M,-|&,m'OV6
nNN1CK{⵺3fN`nkrq|doMlbejb5yGf̴k֒,װ.ǣu7ȂgR.۪ంvGt*RЭG```"smuGw =^vss{tRyTkƕgqC3ᆥnjm
ZxEQ(*ᴊQY8"M*zB+*aH*ڠ`:(#aÅNr+N+8Qඝg-gF~L4Hs@ !X/!_"iʆ )a\0Jл%m?7ܧ?	}u_4/DwbnR{(0C0~?`GKVPƂՅ'q-FIl_C?p0=EPsoue_7tO2nP#Xx\e$|֔{'y,zXQOȞ+*uW$uS#la	pcWu)2USV
G0>'YBU~PKa    PK  C:U            K   org/bouncycastle/crypto/prng/SP800SecureRandomBuilder$CTRDRBGProvider.classTmOP~.lʫn)Q6J1A⇮6]G2QvϹsyd`1V
p2;ۉCr=*Xc/MͶYd.-0cܡ|%2ȄC툓@;ԲfԷi+:YJWrQ$
Z893mi:%Z^ӵ[lRW%ʹf0yE"z;xp!e[ulx淖<׫̢uty&i ֟mJ*q|osbZ8\2qTD9í3]q*ᖄ		w$IpW 
b7.ut<Q^z/oq"vJoX 2kstˮ孪P#|hx`oWAdB1$620!ÇNaLʸ'SXƠ0# !`6a!DXs!c#H2\{|H3MdZ]M?|;Z1J ~DF%l!I><$LnUTcEֱ$XR|u,+:?AH&,1٤+q#Dwϑ3/xX/VO<
%aZv#L'dG.0+؂E42=Kx~T!.#PKh	    PK  C:U            L   org/bouncycastle/crypto/prng/SP800SecureRandomBuilder$HMacDRBGProvider.classTmOP~6(8@Vʫ K@	YuM)vv$/0q2-%}99篯 bp<}ŴM1I%X!OW4&Rnj>Djk%ՒKvQwik{ċob(E\9%JbZDgh[Îk(bkUM|KW4Z%(9,ZR5Orr.qC3:27Jt껪]tJnoWҲP-_]ϱU|cHxCӯC
wQW\pM@T@>3ĶZ{/:f#w3bPde|::<QR
E)ek9٦(mu՜Sq5=Υm^V󙝝vpKY/K6	=h0cI¸A&$Ё;<df8$Eᮈ:8<=q_(fp
HaŻ*em[w3yНUݶZ~,P[ ʕҗ(ʵvaiCdÔ$*
C	d
r?Xaݐ?ab0~<cpwĎ3G_ՕFIm)F8izO䨡-C(!PKB&;    PK  C:U            L   org/bouncycastle/crypto/prng/SP800SecureRandomBuilder$HashDRBGProvider.classSmOA~-& ZR*(cBAm	5&nGnw%JF?8{W/gfgf2 <C2,A*"2$vu=tT"jqQM=yQZM_ j3iw^qc]H/f+>!Rήla䎧:H:-E"]֦AY[\*jk+劺+n @u;ZGJWn3xF']^:au5"yrj2pui7d^G0onrrIw;媾RP̝&J7KBDJ:5Vտ;?xIXFk0a,$0)X@Vb5Lk0kbL@Nmby(0dCBptÐRQ0D
]=팮+C=KŒM/ۄOo;adp.vy{$G
09f!۟|COc^O3CH?Қ+*ad$;Amx
PK'i?F    PK  C:U            ;   org/bouncycastle/crypto/prng/SP800SecureRandomBuilder.classVVW-& Q 4A,`[7KXqw~1GS-Nܰ! 	_9'3sg~3w?/4<x .9XpW7t  l/1#-9׳|B@KYɪ*I˚2s	"[ \m[M=,.^ٌicu`HdZb	HڹFewDHW+njdB59TIҍ甆|<ieB)3ohM,iV!瘡X%Sa,ێzzA΢QֵUyg#s>^&G3>&l8S3 Q;z64nYj&16
5V4*]ur+y)
32E͜Zqjun@lGZ|v͛=ˢnE\"qU"!s<lC3& 2}#E.zw%
~Z_AݽEsrt9s>gz)l.r
F#q"<֝cc
;o3{G\uT0'>ѥПς8W?MmJFɸGhчQ^ܑф]h<2:0&#ȉܓ}?d('1혐qS2$Ĺn>ms2'_pЏs%',IxIJBn!h>D0$7FxҊ0Zq扙io9n̊eUftO:>T2&*Տ^B
eN.2oK{z"(ow7yDHn$WJЕv`,QvpcQ_	6V.B5敏 p>Ouv$%m([]NFTpЊǵ
{k0B-!Py_-mFBV«
H+>sAFIn">Pdx1lvyȘ>a.򲚋ěY ~^c[0v`PƯb	FWD\y^:IE[r^?FEfzh'ۦ&_OD/Saj'""!PKXb  b  PK  C:U            :   org/bouncycastle/crypto/prng/ThreadedSeedGenerator$1.classA
0D'*=qHOk	IIЫ Jxm|1g({Hۊsӓ[[ѸU!ʏCtbɺv&}!etTm8G1aX2.l{9Ͱ<$B9~sLXZSPKU2;      PK  C:U            F   org/bouncycastle/crypto/prng/ThreadedSeedGenerator$SeedGenerator.classROA֭,եT*?-bAƘ15(Fⲝ@l.ăgz2^zT5^Mcꛊ$|/?Y%͖rJjF'\skVn(cI"C1'D~h궻T(K@CQ?y.]\NȐKiX*ˁy/X*,`gͱa]`DUG&h훬Mҫ5B҇v@bF#qHp0Rٙo|ٙHZ:4G58"Mǐ4q0G'9)pWG1.5ۍh0$)N̅W$kRm
$9ПV4ȫ#."F+kH3	wcP:@+g0[QSAm.t'u4=FiJVG}Rݛ7f"WȚr1ŭܦ#]wȵ'VL5*JUihoTZXE}A]4uF1g˼J#+bW4a>6riF;¢=joh׿#JKF\8$3832_PK./_    PK  C:U            8   org/bouncycastle/crypto/prng/ThreadedSeedGenerator.classPMK@}ӦM[M^Pҋ(" уRPOd-!)X迪
 8[{of{6En{bp>HAD*QZ^XL"?TAN8Iu$2cz2SUhV&/:<&\ [llm6*Sfwy="HBZkبB`$`uPuVube*#Ԗp 3 2\(PȌZ\7j|B<[;ssقwySPK1    PK  C:U            6   org/bouncycastle/crypto/prng/VMPCRandomGenerator.classw\u Oy#K2̴H˺lp(ql[YڴlXY)jfXڴzOmGmkZlu]wc)ED*_&ǗiKGԖgp].11
\:/3\S36)'"pc.GkKFWMT'_	pU}ǢXY]hM]8ʻ/=(kJDזTŦFÍHIu!+iVcњh$NǕWλ\25QW_RiZeyڙgJcښgLKMtVdXep-:Y>zXvl)75!V3ṟ6ȥ$N8>f}w[r`(TTCy`zіMl:m3Yg:g3,LacOdLNx^lgvlNgўl7Աx-D	Sxl/Q0E}l1aMv7Ɩ?`x;ف8W8v_,cg1v(>`w=2`a,{c,`,`G`4#q;
5؃=r|v4^b+0=cp<;wA\8٣1夰 Cx=?c-{bl%f^
ոP6^8a0oI֣;/Qưmd?TӐN
6aO$cO)bOEv&gOC(ʲ831QbƋq8ǥ8I\b6Iq19(81y$.@1'_\" b!),³j<'AE+=z#c1Y܄flKpĭaXnvwR,q'wkь,+XCj*-b
X}WBP )ax	.":+Ƿ	+)|.FxgxGHŋ8HQeT*axǊ7P/ĉ-*lbx},׈">v#nT|SW/vߠP|wL|V6?acf,[V_q؆o[{ -Vlq n_lW:=$uM	VVbɭ׽&ԍR7pYۜj.g5&ϵ\o:z;r%O)v^M\R+˯,M+=E6_s~ώ6dne^<I)XAi47m]sR[!,IZll{ͿE_E~PKK7  B
  PK  C:U            *   org/bouncycastle/crypto/prng/X931RNG.classTmSW~n!/,)Pb	 jQ)FQ	Meհn6ҙ83b;N;|C)/'8Mj̞{{==c0m2xc=)WfX|tg!(a*s"Ob0x33T&0J3/bt2yV@ՑWlojaT#eKˆnpӉc[ը͝m%gTZYvZ.N1Z xщKQǊ9<8<̠>|埤zʂmk:f09CCPidr)[)!r0C㶳3hW(abƲ5;G7fR<i3v$Ot^pd|	v5mś\w^-:|eZ^-8րI(6:T\j?3Ǉ'/1bZnIE.nb$(mFx!>U6Gx׏n?b~0Aw4RŽ#"0sY"6QFSXJ؎z2B	[vс2:р:QeG@e"$C,d F"!Y!B| ĘB8C(·p!
qQ8.g,a-/aEG3/	^uQ+d<>{F{Є`j!-]5!⃺';,p51nsGPjbP8CR'/M#J1eJhio3?֑*? c\	ejG;Ԡ[}F-`Ӵu]dM`yM<Ƶ{	GffT CU@7/"LW
M,2#+$=[FfÞ
=Qn):f	Sƻ	G 	_d[k'ӫF$7
W
2D
\#ߩJxIT_("QfF7dr8'{pzwX)i<<zQvHՄMEB{U*W>s ]oDEmիV.J/t5(+}iѩ_Mm2$];5x=c;OgS:LH|)to y)457PKƨ    PK  C:U            3   org/bouncycastle/crypto/prng/X931SecureRandom.classS[OA=CKE;*vŻ%RDvRn;/*T&O2ͶDJ&{ofϜ97?~`7bЪ-[sqQ}5'c⦾@s]IbP(1[p s^d,qq_!FʶʶWV
Sk](?
jeWmdHz
2h~P
T;en9A"|bc'-3H}vsfju!Cf7J#\[
ۣ |Px"a%BGC
)b\<㋧)~2Th?ytV7ui(*1
*`*z$GLB\E*1"$qQ%	c)ᲄ		Z
Ȧ0q	_SydW-ZG@]e]HVzcF(Zm|ed3=LC{0w!&6+
wːaes?u7b CD*	"id~FԑcʤQccH
Wr$ŏ/OmK
Yٷf>=ZVxhÉzRDoZW:	PK.drkf    PK  C:U            :   org/bouncycastle/crypto/prng/X931SecureRandomBuilder.classUiSP=i@TPD,PDIYd_0B,t32q?Qif&{ϻ/ `S@P	v[DeaW*eWjԘ0Ӧ7) {{YJ7,;4Yaio<b˦e;Ic|`h$cgr	;lͱ$`yde	EQ7(,IH@ @?UKOս
}m(s=FJmښI'M=-vRꞝM9Cw=x'}E-.c`K-8G]ӘyC%EH]%IƆ7V
^ܑ}/Z3-uq曧tNS2oY ⮈"E4x ⡈G"EhK\ԫbKv%\:nRj~_ehc;8AUe%,4fSڭi\خVjْU].7#qEGzdBцQw ȐQ{QJ!~QwA/sQ	1.c╄NLJƔhA`BBZ<Kn^עoQKxțg1泌@Z.fk[@Moy,}8 !J|s$HӑtnG>c5S<+pZ(]|l`T JO0'ļBW_#zU_	~9><JkA\w(wR_ XhcO% PK  B  PK
    D:U            "   org/bouncycastle/crypto/prng/drbg/PK  C:U            4   org/bouncycastle/crypto/prng/drbg/CTRSP800DRBG.classWYx3c#D"*BHbfd,a"m1kbH[Iƶ@I.4MtM6M$!BK6]҇}lsd5:s=wx7g _ett,q::tѮ##.An]+wI>[W&0һ|M LX/Kycr:yWtpmFwmbXGlUX":&6u6zbx<2_+wƻMfL>WU63/a=ɮށd_{$43gsI[¼|1s ٝK쐄}M}][r%];KȨ`].vv.o^{,KȺM=vN*Ǉr]DW*MDJŃNix)çm	E>UK'Td+#xdg%DwڥHq(2#c3.W"hBVU$7&*6!jrH-KǻAv$#I6&G|R];KJX2Pl0O/=(
\Jr=Ax*UKלt#fFKMIr-tQ̘P]/T쒄ɚOKIt6`ҥRz"CWPXPD-0P(vMTN`dL1k\B'jftLڇ(3}.%?lW:k3=J$H)
>8*%,͎QZH|ӥaRt`=.p:Y%C{e1'kKꯐs$_4ADMy[4>HLdJnϔ&*vIKr;~lQ%RYvxvHhBz+BWI]^mJC屴SHM].8ݩzz z/5<OC
5<!
{4հO>-7i]W\xut7?Zow-Gk
W.1Qhw]aG^eay
?{Ay
܃V`=Lw.V3X`-*a@[,Fmhflld~0mh1Ѝ||]Xh`n1p.
Zd`)>e`3X!0a`'؎؁/(K022x<0aAa?~a;{~dO3%	y#'Fu`.GSwy0=
́鱁`ƭ>	ch"t$Ԯ
sYگDk}}d>M?J)b^wஔyqW*Rmк˃ҽDi>jVƔ)OTiMi3<g̐uғiZUMNۦIeZP9?JU!X43ՠ%B0!/I
iDzyѺ͊o)d::!g	$_K[47*/Az~/T"fk׺{?Kk-}RWKLh*0׌jdԀ6b͜V7XMzxσʌ:)XP~SKVP!NPδmV(2tȡ4\GWR4~ÌtkF{~=Ju<"+<mO@Iu=>pCkD/.B>@Tm/W6SXaY3l|\J@!44e
^
If|E.bQ/o	r/@׋8"udoUKo[/ו }q=6tI/~Zb5PB(俒J5R|x$4*!yF%u>iHd@T7LǠQN.vM99D\#<B0Il6ùl
6*f͆))4Oz4sw`l]ȱvCin;>$:Y@R!j\zg3CSwYz/'GX}:9TS<"YpU9
xIRJi)P
Yc^rﴵd]K,\>OUy
o9||
+!L
pW<Cz9܇
BAi+-&3'|)xZp>61u1@hy4OgFvDC:f
MLCXWN&XtN2Cy˟^GHix	NBu	DM.1[ϲ\{<N^>
4D7'7Xp{?2ڒR4$$듮3Hu6TsK=Uy<v')8{
9$ovG=<ܗ3OCuuB'taVyg=QYMkQ`QsF$Cҭ)˭)
S4?<>@{CVHaIG˓$J,3qYjJtr :9\$֦3IY<}G&5~T'M/^GBwOer8z
*/~"(G#y]z!{	ޯoK95<PKs0    PK  C:U            4   org/bouncycastle/crypto/prng/drbg/DualECPoints.classS]O`~mQ:DHn|/?GLd	nXuOMM[a}9y~+%,Gq!rn2D0:NȈK]nͰ㨰jgPH}\v1_>lkzͷC8OzIYAc%98U0mm8mnCϪp_7y/DZgQt;^\
ZneǧvsS_6&%HC[0WC:_jyRտv GBBB~	Whjf=PceĕNhSQ֞z6]kOkȥ6HT0(` kRЁ^D6@Ƙ(ƻ0n
d$1#cS22#-@1Y`n#
՚QyjlQѯAB&-!
(51Ixg,Opkf=ݷ}Ar+N-c>=]'LHs(!CvJ;$3	#GQe8NBPIVi>	_Q;-5bhD4Rw
݋MV?]ܲƆ{!`p+]{w#yZOX
PKIh    PK  C:U            7   org/bouncycastle/crypto/prng/drbg/DualECSP800DRBG.classX	|y],{mmXJh&`I͂$˖R73oծ"ۦL/iT816}@1fGY
}ߛf| trX[EI="Wv"t),"*!>p6E8&°#" xnZ!ض7bm{!ԖmBK@,"ZK|dF'dUsӔ}ߒ_5'u1O31Th'"Sf2M7r=Ɏ+k1lY}*
:&lj'!5WW=W\qu1,uV,bLS:]5u3udE/[gɶIUKT]m9e1h!SN@5f(oښgaN=.eP<PU\RkTGP=B{
s=UTU}ʖX蚫0ٞ.3S4:PEQd_%%dDb;Y,pVپiГTյ|M<YTUGv&گ:,]C}STѹf'a%T']]_ŀ)1ǧi`)hLMU<m5=GfTfF@`L
Bqm suļRLaxj1yqXn`(K.R	0TOWu+qS.eɚۊ3W:U4G7|۱
1k𱦨
ÖSw1>hkDMϰYnي|_a<
NFlm+l)[BފxK|5_*B&_f*r8J-a,{X-&Kee'+DPgUXDá	++WLA˳b5js&wjq. qs##FcG
O
sܽ|ȱalECaTB 3n`4單䱾ι<{$TM)>Ǫ'3JXBGNNL՚U~~)c]niMyR-.<5Q-uMc]~:8I}C|ZُG8؍ቄхUeˣ@ 5O1?=0Y'
yVSJ[O)
fP/5bG+֏.X6>)ږGUe6&fRX2-Ē\S]ұ
'tɶj*llj>ifHMJ'&XrtClX=SU͟`*vFð\,~?Tzx:
<M]\ے
lTEV1{B1%L۰l:s<4;6u1ݪg47p1o[i`װUbr
fad66STA@m,VM]SlĖ``	kCC׍ oi 
06
KV]=5-@؈G%+=ZeEq̐	4ɟg _(`PXCucڍYdJet#=`mZ.N
qOOOslL"ڴzHljp]BP`foF2Q,(g?GNQz2_)ke{!UXVBBwylrwc	P4\E,h^8><t楡[L>/eS$ƱCz'?ÒxPtYTk_,y7Bz.5 ΕO9]8Mh+jGj`Zw_ީl;7۝0<dc=W2nND{V׿/i2uaeTv~%CyV
 \޸u}rh.-˗^7g]vUtȎ/e0xZcG1q#[;8V1DC/bEX˙IZZZ^kP\SjV]sTnh8~G  /<(@Aq'@Y U&xHpJ)N]| #^ؿRk?s՗ZmJǵ#NT]^ZzK郚7^K38TضSmp
9`{[~z[w嶶ʏ˝myYUk[vd5G㡲V['肯ۗ;vSϭ0:s\ý+꿫WYՑwИ\
5BpĺVNcmMCm+j|9V(Kp'~r`Jp'%xãpx9|Ç9|G9|9%聗$MQ>ơKp?J8.^$2	nawn	>3\oÜG`^%8
_\ HU	PxE!xOi	?W9	<yν&E<k~/s8:~os8>s81?,	O$IO_'35gR>o%iI'Y8M78-@E{ῒ<iH¿'K?7	~?%'?YsX?FUִTTiz7-L,a[
^ރtb;,O/@+lio[y&шc`D?G#hD?яG4	D>IwrO
)fHB:#zCeވbHki?;
ߒk&[;ӱt||C_)!S\>pe;fȦtllno!M'<qel%{ 4Gf\|e,uh!c6 ;K2|	ܶkҸ<uh&RTB%@<1#lt
`vY,̐X$[#sl;3	r3/Gm	MiQ'IoOC7x. ?"3D|ln6Wy0l`|Xx|+Ɨ0h<E|nƲjw\})<KDLS|
[d{,@kp7#h<}<1G9{_9X_p 8Oh
854G}Md׾D:9ؚ^lJt<[҉H	
0x$Eߞ1"H	ًgbbJDZݒ#JnNk8_2<
C_o;H`!ɛނ<}	=ҍoKpwn,앁Zy4ґTssY]i@xq5 ݍS6L	,-͑W/,#'~7F݁S*:ĳ/d/~El4cX'T,i{317;\Mx
|_Ѻ>ffqItYF1ߌOA[6MȥZO"Z?>j2cg]2+$hL
̈́{qGw[RteӈMf,7KlG%F-9rӋ$Jb$	͑$R*ֆH.HZJHjH
keS$R,6R<6RS$
ϾH'{fI۫/ߓd,	[;6GnniB?V&jd+>~LiqEwp4H|PK     PK  C:U            5   org/bouncycastle/crypto/prng/drbg/HMacSP800DRBG.classVwE&6MRD, JM hBA
6v6J*/zx/<9Rƃp;4-4ܹ3w3ߏXЋoAl
=AD]|].'3e1hl
iΖ I^u5,=ȒH[̌ZF^rbWM'dz"OLe&߮MۉUt.nbѯV
G3tUK9݉3VbeU1(.Eڱ})STj8K3~(J\~c̫a[qÓɞ@ܜmi؟-78zECvruaKveLccqԚFmi[_Nzߌa2X-LIMSu[Zf]bIղɓr^,*{2@f`3Ϋ	S
it
Ezv#e\Zi
#85)UF*1총B"GijZqM=9k'DY˪*3ztQeCC;.e伓+$N;r OCϋ=I0+U2$y9Po6\~	oJHH8(ᐄޒ+m	}ޑpasr<@WoC=5cXtmΐQ.NRmqJYUPK)9%#6MNt*2vᴌqH2q-|aZetsS6؃|FFFd(Z99sp01C8}\ap9DipC6	>㠵".qA堷bS-tK6
VU-wJ5|N\Uj)p:HӃG֜Ӌs(H#%SY1REsӳ_'xi,Ʀ{86_ug	7j\t.,`ch ~TRKff8G)QiZmp'hG@BJBI[)p*y#-Jb?@,LꋆϏKyC<E8Ky9,/sPu.S|WMۻϼ
Uk5T?Cjzh5EbtWO%p|_[)Om=w};lJ7%?N9/=̾"R$pHQDzSb<+k[yZSįL	C*uP!CwaCO]?H=(!yvSƔ=>
F`JKaDd"ǧ<mBWPKeR  
  PK  C:U            5   org/bouncycastle/crypto/prng/drbg/HashSP800DRBG.classWwgMfvg`Xd)iBhy+ٚ6Pdwlgg#ijU
ŗ%_R $T/~QQwfv{{<`? < `'<`]
V 6;xBԴt _.f8"SPX11I猼aw#!MK<_,iCaZfa*\I#g£SY,YiP7y2O&RC/M$4,e+&c.edo[z>k-aĨnͱa^9c°)ݿulM(G\uR\Q)bP0-2&50R>?ټ*kk2uͣ*mPQ-U\T77+1
)4	R^LYۺ%>U#ASq>-I5Ҧ4f>z_|k9juӊ좼
)(Y=[):\֤}'	z+gϹ&8Y|^קh"Ɲe^R1)#or%6|%Y-ieKr^p*M,Ө_Ar9dFi{(1E3!`#*Fek9
QʶRcSih5U͖OR(Xwe[>U9cfڳg먀-<]tr*+*)wGZKNqgp{{l\dDe񬌣2de<'2eqLk4䰀pTb))ЃMM4F>K`j);/]joq'"5kFrOʯCk?b/Qʰ*GTE!1CVEUB3t3l!ԩx*РU$I>Ud82lQq8Ωx9PюJ/qSx,"Pbdy)Ww8p_	K~ g:1 @ʯ1\d* .Ûd-e1\bx#x5e_fhkk.C(.̩t(b;Iv* Q<RM]pfǮ6g9+5Y[5(!'ۢ4j?po?y'YH,Gr6މ.{q~<?IMwCoJ$J{5bZrDx/T{x;ŕ)TNb324)Aƈl$#9Ej~G/es	x<8jAC5[M
J
B]\لW߃fu"{!>7"gD_MWI'VaHQ}浐t vR]#Q/:rٚo-RDn˫_Na\0Wr})k$MD(onVJ_j_qj4D']$r<R):5P5}U@xܻ*<gv?[#bPXii}DNCf bw9yIf9Fd/Qgu-4rP
@6@q!!9xƉm\xv簹|HHZqxzU5ݲ޶ajHʰW"fb<탕

V>/	^ċC67+;tl6ڨTYMp9vYlSJP~:<3!bP	ɋiTΠvIF: .vUB
/vHQ
'Ap/'?D
	tsAR~3sC[^{+Ye%dkVel`uˌPKlǿ    PK  C:U            3   org/bouncycastle/crypto/prng/drbg/SP80090DRBG.class;@gǀ,Xi$jYlDdYMhC2b>
3'0K3C`%!
դ!"TקR<D!/Ieϛ{-{):SoM[mWO8Sc4uDχ1L1 ǵ_ KΟFCPK1      PK  C:U            -   org/bouncycastle/crypto/prng/drbg/Utils.classT]SU~8'R`+hm	1`
VaneL鐎^z兝~ТLᥣ3l CPwfsߞ\0
K%vNM]@ܵ+lٸdk .c, Y;g;I1ULt}:x

3QxR߲60E*-f,iCLmgcs4ڈj[fIw?M4eRUNYa6nf	ٹHH9gȖbQ	6bcZf>SʹsyusåʎQ
Ǔ,1X*_Υ+idXX)8Xm='	4CIB2SVli:a}$4]TNkáYun78s\sD89.rDDOc%@g0_iMoYy~υ^GW*y;YIewp88N1DM(M4yT`JT.MЪDTⲊUU⪊W7q-Kx_
=&(G|@GR4K
&Њ	I4	iYlXJ>#om1_%y$G҃%&䧟R&t=@"'p3Y݃]|#Xy_#9u"e!A}=lw鱎}ud)V
[A}*U&CVzu_
?k\~#n ۀ(R6=t={0<XV5nd<DFk&}=
B=-~HTOWiƿDPh<`IStq?@cݘuqcc50_~1'Tsh
.KH!w^ϣȴ%=F[돱i[B~/vt=!<;zC\QGhPK$_  G  PK
    D:U                org/bouncycastle/crypto/signers/PK  C:U            5   org/bouncycastle/crypto/signers/DSADigestSigner.classV[WWN2xBT/h TX,ې`ę	kk+vYi7u{2J	h>|rN߿~`[#`G/}yK@MfXe̰u,C%/rβ-oX|URJr̲媢q.L(czV>"pubcݶ
~@$HFFsenrk\s9Se5O_
T*[ #(gkrlƜ3S7XrREU/|Tbee*Z5ɡ"/@U~%-~cU阳SK[nlٴK{UmpӚ-U,RmV*
:5
tvzURjR*Up^%E8w tK@c^Z\?7vgU~T&qߴ]
ZE>7f_#btehZZFSFSX{k9UVW1ټv4jџm}_DoK#{q>DDRb@DJ1wc.׆ -!ԅCש팏5g9Oc@V~vZ]y-$2bUӜz}8;_8#ַ~>a7 S؂Q᧷!z(6F7c?ztEqI>|YEVH,BD_Ψ=yޏu tӱWuᚎc7X|bv(N(ΰ8[QydavL(݁a}	,`%:pڈ3IpY1YӿnNה;t;aI&PI/J$1Ey0>
k{VTzfD"+dЕ|s}t1"Iֱ<G:f_5Qcc9/b:ja<dAH:pECXCX&J@{&dPu<V`1'<}g&W=#c:
&s
-}7Lju|iߡw\VdԋP?8ĈISQ
BB|B@(<lY1@xpix?Gv
SM&'
EP>/R9`b|+/W/1\7+
9/qPK;D  
  PK  C:U            1   org/bouncycastle/crypto/signers/DSAEncoding.class;o>FT #5J,KwHN-(cd $'e&02h'%W&''Ug;Kgg`fg`ag`ed0XWZd]
RD5^*fcd``g &FFN X4PY PK
k   8  PK  C:U            4   org/bouncycastle/crypto/signers/DSAKCalculator.class}PJA֍'^2zɘD&c3N؝^q̓Gc/U]ê~&;!\4cfVkhobeM#2'Cj:oz4L$ly7׍-!(Jqw>xaqBOwzEw'颓^-OڿvRrc(@p;dPK3~   0  PK  C:U            /   org/bouncycastle/crypto/signers/DSASigner.classWi{U~Yn2JR6EAC"-BJi P64	I!ﻸkJZDyPvJ{==ܳ;=`%~AHEn	H̜i#}Gz6jeie=_(Ӹߴ\ ZV/e5 Q4|h[2%4AmZn ?ffR95,gga'mfr]	M0h6
IQBD5f
aUwAH];6,
ܝe.WPx,2gi6%Z.kythd䨆5{0Q.L8WP{5y*o8Oi HF(bJYyT[)aÔH%@8`o[D˺VFB;h7Ū'i1uȘxu؆4[oyr!b2G.j_`"v;M{lyyY.IDm,AJXy1{],=vx%ZimjbD˖=t{?=quA &X&hX.p
V"p]h]kdi3u]dNG`-?DvMuDtN6
"pyY.<+!1"}Yd=Y>vǬucMuh+=yԉETj
U˼Sk/p
zkG܊":תiC،JFfΫKR]u%U3ˉk}-3Y{oiR[,
cz)§ZyPЈ]1ghaHW`kKA3z4G*q0Pp#CaT@S0:O̅`!(	*\	3.ebʸ9wQ1P`pO0(3<+.<"c#,"-cJ2Rщ)^ve=xyyO2<C#!mk]XD;	(J8B2LT£48^Ėq|s:HfWe6u$eRYU1׌=o?9L/Ocq/10E+/xu(s)އWqrqp
 "&3~.I1!V%ڠ	۫z>BUjJBJ#Zw42(LRRL|LC\
O~a3'x27,H}8*x4T>^RWj@2a2Pw"WC#	3A'uֻKEM@p5)EC	s!5VE.>'p8RjXDf$Y|z
6vsUvU2lE\SEU['\,_vnnJJTD\RSp菍#meu|q_^w8.Q3BLuIH6Pʱ	|Hm+t'CU%d'Qźl3peLu{PKm  k  PK  C:U            4   org/bouncycastle/crypto/signers/DSTU4145Signer.classW	wdzx&dbHJH)BLI-cIDҸB}8,JHӦ%2PҍJzh$+FNrNswGo @k˨] 5zh?h=4@dG*gN:m"ɩ}}Imb|$ft:a=ԬL2Eҍ]$q閜2Rm9IR6rX[i3?hdG̲#c\z$'`oXʂj&j竫I#[%X@&c}CiQ:*Y$vEftq2eQx'{4wW	+׶vRU0tRqERȣY8mg]5@10FqZZUy=a"b{x}zG$)&$97ie3fZHE;')ka6CּŽ2kp}?QrϏ0ǩ)G<uJ}.[.+l_Va2._^43RݾaVKUڒ%l^Nam䊍xneeMoc6\ڔ.fO@RvGee
z7N,}BX4	[^a%ge*Y.xML=dG6g+b[t5Ys%9&Ff	"p@@Vm}n.IO	|Z3	;vXAPH|۞&RY׵2k&6tx47T17+K5}t^?K&n}͍.Tu7+4g/Mѧ~(7T5FcӜf{׀o8WryկTS=>^Sr},{ݿne
6ͦ<>M^kh<}nP08hGw1DTq3B*63DЪNU*n`d>b_P؈6 b$2*GVZ̪XCE'8C7#*0S&̱*:`X

6T`>I<paA]x_cxd1?Q0o3|Wn|O*؃)c
	|;
]C2,2<{񼂽$)<81U0Hv>< ~ֆ}x
2E{SG)}&')4T,*!tW&m$~@V5v8	H{uW"z.`bzxٳxgX1'qڮ	˝eߞq0ư"Ӎxzϙ6pN{.]#jGqpz!-EEOHZ䘃7m1g/v"D:߂p''Z/-Ļ?$US8pp|MhmNiaZ:"w`PɃ!-<]yZ>fIpڙ~ZU5GB'9|(ϣ5xKE%~:<hn0(SZK`JS;JX\tm޿	RBr1	jnFdE?Ƶv+}iu1\u(?rß+WxkB^	)VIx[J='_bsxt-LVut֓^B8Q<zn<^[˜W2Ftp;Tg1QWbx2h/PKW)    PK  C:U            1   org/bouncycastle/crypto/signers/ECDSASigner.classW	tc4h-hhYPLȁ
blbvH;qFc{tI)mB4KtK}Ot9==9d[KƜS}7#;C	jwq|f32Q5ֳamz޶-M%fDB@yaw虤=(@kpJuV3-Yf= 5nDlֲv
lc(e2Hb2F=cI^N"hLvol1M|
L9md#Z02,84mgR RUnnCe:Ng4>o59=]VRwfii֭lq횚n-09_czIߛ|EnΗ4l2 3GiFv2
=hKi=Cz|FW(U{>e]{8-pҚ=X_+,&;ג?kgN=iv%
ENtIƛ[iJ۷Dȴp&>ײvJ[CYb
VaR&[#F\vIӐl/-&kjOX[0vm-fЍճlG*2F(]/k]n?e/[74waNq]eC0
jgŚb^&9?.4b6<78yєJԃi-/s֮+Kruoc)
a)n՜)]')zeB˞#3L1+_9;hFrH*3yt@ϭ^QlTҍ7FJZ		u"	HVBTB$lQ%l$YBV	m6K"z	Z1SjxѢ5s%Ef$0qamUVC%f^x52Wz_1K').}uc!T_XŮnߺ$[[>.>)-M+ndB_UZn_U$me"3~M)"C5͜^4TQr4R_tS_|V̐EsQj=械uNS43F
kj̶LqżDA+RqT2ιx\iN;.Y-~*(g^CA=*X}
(SpWATb3U0)V2,ah`d؊*
VaH2X
JsoDد`!Fa9nSP+XW(a=W*Xða^k<SW0o`
jFk&/do慷(؆cvw0]q!xG>/2`W.972v㠌^ч3-{2cq3|)Nxя2`##02tSfc,e$N0MG@_3A?1[ۦ
h)mvCMИm)g!pFP>Ocx[E]fmg<(DxM
5&r}4r}Q1wA~s<!|/Ǐp̧NB zqZxEHBL&(D	{	=423AiOnZ K7v<q8%Oz6<i[hZߧm$){S'wcvgNsћ\'ʪ~E{,S}Gq'SgUT%tY*MƼ{Gv;<L`|n8K%; s|圀.&y5GE>'h=/r_vȝP"x=&'Uo8BTǢH?squh@Um$pQwѠ<C
:YB8=jQ"w;?ejYlR+ ?D WV*_%+!wKnx*gܱ%$ގs*Va0A38\c>@/-2j+"|nZ:#W');q|-]Pw$QN+^
|s'1@%Ok#rU3zvC=ZEwm7x~}XvO'[XI-[R͐#&		eM|?PKr+R    PK  C:U            6   org/bouncycastle/crypto/signers/ECGOST3410Signer.classVWWƄL2U(.Sjka
	]FLPW.hMsScZ=GhH9͙7~{f nou6	py;Wƃ-4١隵S6;&9j4*3Y]LYDFYd,hIT5J8b$UTIk;L˲>U-֩[,.v$iәIU+e2cjtv h&㤕V|`#*k̴4J;C 7
!3O)ij	f13GKӐ5){VE'IKv#|>I!8N,BJ{)Z|cAV/!ETǣfBkcaFJLFԤg99n=9EX4~	Bcd_}!8Hl5tٲ6mA^S۝װ^j8Em]@m_F/VRق+6,xγEhx0Ɍمe]ch[%n?8 :_LSڵc,jFb8ە( fT'ɏg8.3w=H)yuU$SHQcTR-#6298DX#bM""EԈ,'V~u"E<(bD<$b;
|
IP3wu]ѐRo~ț
ou!#_Hs`G/xmjۊU}ӛ]]=]_kWUhGح<qwiD~-Scw[CEҮ@^84O2ͽBݝfOae<~eX$CCpYGQ}2b@
;8,~+1(c0$eT	KxJFd2q!Fd4"n0r$BBBG88E/qxYB3rDóZq\BL	xNB&8g$t5	
	]$@4%pxxFnV8Zs`}ZSpBS	rKjK6,ČN{:w=5i|v'
]sXUG|7Rʧ4j~ɪK)pl,E@9JBgbή{q Gi<9s4]Ż=9Sq^-i
j"QJxOdp> )eƩ3V<\gJ~ŏ]T)M4:DE&_W$RDx?p+iْdCÃN8:PIn;ID&tG1uUZpھ*Nr6]6B2L㽳}˞8.,.%km빀aފgfc{RT$ŭ*Q9o\
ʔ2ԅw&`ɺ$TP$Q6&<=ه6pe@%6O5lPKpe  N  PK  C:U            ;   org/bouncycastle/crypto/signers/ECGOST3410_2012Signer.classVSWքl,U(>
(6ZC*$vI.a%žվlkh/mkgԩֱcM)ifwν{y4g7mvl./iC5kPoKC}uI%*9j4*3YLY#EFXd4hIT5J8b$TT5Ic+LK2^Uf-֡[,.v4iәIU+e223ƬaMga9NZiP6	=1LKcɌ=3tp22`3Ľd=
2gYΝ^q`	d>#ꏫz:"$5w1ʈHd"P4ڡ_%;q<a&Ըv<f?dDDMZq揘cCZ%{YL@,nj=N"$#AיMa
[U1qYz
륆Zdږyf5kdB#VUegi<Y"qS<fdKxkRP֦x5L_쒝+[)mqYA#1;tRi3B#dvP$SC*Dh;Tdȯ
O亇RDAWDEDԊ$/ND"hU"QꜫAw
A{RYT[];f_Hs`F/7yοE
7mE*Ⱦs]FĮ.Ξy-εP*tCts
l4ȣQVR{4y<?ÖZEҮ@^84G2;BݝfWe<>eX CCƃpYGQ}2_2;8,~1 c0(>'dTIpXR<%z2Tk8PX2#n0p$BBB#G98E/qxYBqDóZpBB+L	mxNB;9g$t5	
	$tC4%=px]x(}nRԡ8js4cɦ(.ZXDo4
4\ۗmY̊4vWMbOb&ڻkj*NhS籢f
EJ)ѴB>lrr^g\+q6O.e*p:kx;p*Nw%sWM_<JI)\HtoqיT_i|(UJ6Q7>40܊{qPSq/<^6!-b4.2
r>ZxP廂7xd'%ڙEd
?Zz.঻|i|>2qlKSR3xdENI{g9/{2<}1.X2.7
MG~rӝyh'lTRj4q_GhPK?  X  PK  C:U            0   org/bouncycastle/crypto/signers/ECNRSigner.classW_+u/!,>nJJ "
bmiWYqN8u&5vcAC=6=sZ@YaO|3;7{Vzko 8BPCh!pH/IFzǻ1xT7ta	dOjRI	ǒCƻiTf%ܭF3D{]Hh>a)	weDTilK
DP,1lf鲖8M{X2iZiZS7r6!,AM$4/f-X]!1M<1	Z9oZfQX.JǪMf
Z|u5K+[XdOv8?'zJ}:4Y@bp_dial(ZZd%;?+anvmmyʉ6:vKvJ;M%R1K'i-׌\79-(ںiPV,&N9*hT[ȱ>g{_$CN/9i~jvo@IdJK!۱,O8{ǭeܴr	ldf2Z΋xƚ)f4SYzG/N	k97<=Nִ!9Ӌq,ݕ<M*uxhVyYIkZx1	xENF3tjs599WK{'Z繖	-wpmsnXb{\.VԋT(GPKo-[tscDVL(:vNӜwGu& J:&n3)56Z:Ry)ZJ3fz;5Q2z#ddt+㰌d<(!	Gd>xGdt#㘌GePҷZ9B:Q:I-^[0iz_(#}V#{xJ;omv/g
z#[#FZvҎ^>@묀ĊaUmߡ؝P#EvuͣJ9ƍ9@G;6JxR]ڹ<um?ۺHtQMr{ꤱGI8sY:#*ߚ;<.QȪC&Tt{-^NvLqUऊWq?C`؄VnX*ð%UDYn24cZ>MQgTlT|o	|SnGIgEA|_`?b1O<`da^eWI|

K¬q|
+~
4|gLw

=s_+kyABHHÇvk89-Z)^fj%jy"O"Mw$-6mZg@g3vhgs*F/]<[iu[xupտyo:-w߭[ML
^s\ڷ腳ذhw7)^I;c<[4̣rEJDp#O¡E
+BsC*XHaA
UfK(aN[ZB"\
^>-HK7?/*1KtX񇃄sl&e:"P|N2BRXYW#sJt8MX/mms2Ѱ?9ױ||7~˞6Q	KJ.<a݃g\ד:W{G\Hu^GsViDC
la5K҂;#cK'juN@tŃ+Ub"@k`8
Ql='G"/paűv>ut{dh?PK/d  N  PK  C:U            5   org/bouncycastle/crypto/signers/Ed25519Signer$1.classA
0D'*=*vZp!.<ABx(1	|0üŔ!]
+*0}oDoN
JRZ~/5N$fS/Up0cİZg:\|0?($Ҕ/1A	xY,< PK      PK  C:U            :   org/bouncycastle/crypto/signers/Ed25519Signer$Buffer.classSmOP~ѭv2DDd*j19EQ>O]ղ--~(c(e,DBsOs^s E`PC+IZ+Uªt
H3)ӧ0U"4&CmA2x{5նDqf]ցe:Yw&<n3u٠v϶|rz]1gnaiiauskۖ~.3^4\;wקI(\gcTfS2.-grbPj+G;>u5Cmh_bXvI{N0|jtVqSŰTbLu-g).[W.^JT	uDD](:n cx*p
SkFN#_FBV<ss
IݠAk>'5aٟ{rJ!"[{V#E,|
1l SVNaoW̼rBK/}$YeTȥH00wŷyeN8rT~R8:- 8:)xUNyrnH<%IJ}23!-TgPK;
y    PK  C:U            3   org/bouncycastle/crypto/signers/Ed25519Signer.classU]wUݷM;I:i"B(&G,@IEL4P@[&ӛpaL}od-d-ɤ͒p̙܏z_ HzCX.\VUn(dW𲰅B+[.O5ѴڎUaX[ن#}2&'Ǟc{7sKf``ej4dH؞/
aC(*a-^Vg8u0Z.K_pTYSOmhvX,4OMvwOI#źӲ|MN=J(	?́J5WǶ.6ɻwU\R/K}[uKFq@>+4CޏQz]pgp=NZ-w3;kgo 5LhP1
i8c

'4Lj8ɰPb$m#Dn`|I\n32eE쩯h|~?8]Z47S)]{
UfGc8,>1yItV4e*vAG
:XqU쒎#4LI$ey$f;e)SQ2+I+:8ݣ8[tZMXtnJmýo-N*C1F_g@5x+ypom2x{X+]|+;$ō3).Vl_R~Ufi&^v;σ|dc8'H D̴-rh1#
2}b4BPvtF_0S=[U{
Su"&ZDJyNj7`OttzG+IqEhnWdTc!Ȍ
PKMzN  4  PK  C:U            8   org/bouncycastle/crypto/signers/Ed25519ctxSigner$1.class=
0 _j5U{bg  MCl	$Q<x`JƙFcK)ث>hɄ.2)#gu[VU~&志UAA(6B[ul[Nsϗ ŏ4zq,jH} PK+є      PK  C:U            =   org/bouncycastle/crypto/signers/Ed25519ctxSigner$Buffer.classSmOP~[d Tn0
㝡>,}ݨmn5>hH疁D\͹{rӟn3DlbHUJ$KҜ0ƒjTOoknOX!"J51ĜfzC7o^v
[>g\l6a{gۦ4|D+es{a*t:7Me^),,̮l>ey;[+Uu¶8;C90
eX2
j5θܳŮӯ93sS*:̫7}WՏ^ ̐$\2-[Ь(gOEZE*TT1e+HtQAzWnРH"#cH":nCq
QÈ%c)
w0)
cȖ"5<@!y)
iRoxv͉TYv]8P%ѻJP#kf?H JhzGdt*3
	3;BS5]Nn!Vye8	sŘ<aΪ"dg8K9+̰4(ߣs-E-͟P$9B3"g<%p,c7PKF߁    PK  C:U            6   org/bouncycastle/crypto/signers/Ed25519ctxSigner.classU]SF=BC$NZ[qLB	mݐ$-/Y^;JTɕd7о䡙
̤},S=G޽ \c4cL$2ɝpS^No3/$U2k4V^X\,3\
FW4wE]ZҼUN1gL_]CA
YåzOrzfXK9mqҩۖ<;0Ŏ.*nV7c׸BB
ڮ65Λ&jf#ڞkm]ѣ{\'Pv]􆮹ӺӨyv:"wv
jʙ^vyܽjঃc捂w(>i^u}eídX8)|aĠlsoB>2=WM,kujA=pӮkeZgCC?9%+!&aVi	g$pN{ޗpau
J;I7ԘS>/zq3\HldG  OYaް>*\h~;ԛw9vĕS6
0`+ K
&pEQ!),F#baY)v
D]SG
an
&'-)|!ck2>m>qm>&/̺0w+ꞌE|N'sC9LI[TG՟jZ8GBnBH~@${J1yɖi!Zf}<T_ǷMl|?\
 w	2Hk{S_H7&!*Hl?T[W&KQhp=Eb6c-lw^H2M=N'hN
$b/ښǃ?ZL~_-j,B$"ٍF MV
vYoc
&iaja#^n"
2t4/PKa    PK  C:U            5   org/bouncycastle/crypto/signers/Ed25519phSigner.classVWW$aY$ h)jEZH6Jlnew]8þ־SOOn>Fəܹ7_Eg(f'2DP1H
B&G2'-BWZx1
$1ӆe7ii826v}a6r*ylq7n~\4<^l7іo<^|öOc]d
C+W2xI3L^d`<$X
7fXGmq"ۖϟTkhh2,d) cXe[g)s-_vm)LnȁҺf՜if}r6\N5!bimdnY],}G<8fs/"Cb3DT0h驵cZvm,us28֚im0kI|$ωcMͯ\Wݒ>>|cDmtiWgͲ~eaVg]WۡSo-iTͩWӉt"7ifguhA	=.IK,ኄ$\pM>0(!_xcL1L7|d>uZgOֽ.])%VNGDsKsx_++o_=	+gRɬ4',⬂Q4f|3hQ0$*@ET9+":.
>-|݆)FB,(Cc#3|+cdLbY%X⑌/oXx@uddPr]⬩yxT;75羶fr\&c`GE-R'u4 TϠM8H$BK'>]<~s5D&=E&bbI?#&Xy7}{F2PBဏ}Ƥ=`#::#;(5p 5&ϻ+@;#:~[|GlBl&p>v(ZH<Nc3F2m㢄2Bj"!BgECS^}uKJ@P\LaOlE	5o-9Lh	1ܤn/PK㊉h  
	  PK  C:U            3   org/bouncycastle/crypto/signers/Ed448Signer$1.classA
0Dj.܉!҅q	4ĖH^ͅPb`y	@`J(;yJg
ͩAF;?Ֆ2aQ9e}h9x
a~pI[1N]@MPK"(      PK  C:U            8   org/bouncycastle/crypto/signers/Ed448Signer$Buffer.classSNAm"" UCY(*E#%\4pa˴.m3%\hH|(m%D$w7gfΜ}g~Z*JkexR+ԡj|J~Yw[|*C
Ci-I>14y[lhrrڻ|a}`[n*$eǗU)PlU'Nϱ#zٶ:nPx{J%]KA:!!TYC*ePA΁mgq
/g85{s_AR1P7긮cXGBǈ:Fu1eT+yY-US?*wLM531DC&nC3q
!ǐ#%R m`
5HV"c<@!v?$6`0+-.ǫv>;oQ'!kt	v| 	:?|5VN;B>sǹO$Pк)30{PNqsaO$T8+ (ܙ%%1HN$	3Oq
PKU9h{    PK  C:U            1   org/bouncycastle/crypto/signers/Ed448Signer.classUrF=8(lpL	`.LhKFJ$Qfj'SfZ~}N24$g|js]?#dj+/\Tn$7D	_3,ûNj.penq'a^BiN¥%k:<Q<ö3dmsǨg`$gHH	Wwb#?)ؖ9ay.iM$W-?d$aXu@ /$1Lչw״)$0~mkYS٢if=<y+Wyu"emMKo<;gg+sgй놐N薇ai9n֯e1Im*Yq2t$jbALWP{}va8|xIᚴ8ZƛR1D䩁rpQuq[}
3cx\»$pJi			g$'}	gMphF@m:eϡ#sÚFw.`|	;o>my0ЂQCP|[Fx@G/fS6b
1`+ LbIQ!),Fbᲂ )H1w];)L^0dVdm>qk>(̪0w+枌Q
vRjSs]qˎm?5ֵqg@JoפȑH)cDVi!Zf<T_m]|?Y\	(w2L~IQ?	5
6TFWĄ_$ߙ.ŗj_Uҫg'bO!'x'1@f"?* 鹓l@3T.)dS*=(#^"19	~/j<JAFs7Xl/XYKwoQ{ѦiA`'^nbd,X_PK    PK  C:U            3   org/bouncycastle/crypto/signers/Ed448phSigner.classVmWW~.	lX	ZUXyئPV.deٍwo?s
B_ә%	993{}f{(T1c茡K 'M
,MQ{*44#qsjiZX3^K1j W"P۵)	\uKTIMe!YTҧ%3XS2Y1s\.Vh!гdɂ]~,#H71UJs@Dr<WRy@[JwvMG@LvKU2_c/]uY4ל`Ay[Rg\+0( p꩹nf-er#KsKVv!旟J2*e5ڰL?pdRdCjݶ[lP	|bwS XՊU?Ђ׉M2|$ӵeǶcyrBaspfPH+jɎ
xSWQ5
UjդW%ZO/錣̚Z@0*ǰ7ر;Wn
4$5O4pV9
jHiА}QO
L4\?xhl{R{]In%éņ^v,>7l0jAfhv*5p֤9>drGOc1F)
DAL51m
Gh2860xqY=1n_׭D7,ne1Ӌ䞎Ks|cuL`AyWg@Ǘȷa,eq]}7((`\Y}n9r\v$NKftqNI7>6 Դ5C+IFIo"ݝ~3&aok&WѷEX:OM<NM<	q֏yr]
%Qrzu(z
z	U&m_(&СTAd%ΠFZ0g`K/&H?aAW|{|ml6>ħvD
 66fQ3ق5s=ֿ\4
H48xI-xd໗8w:^1dP6ʯ9X'
|qN̣U7PKti    PK  C:U            4   org/bouncycastle/crypto/signers/GOST3410Signer.classVYwEYj,(
8	@,&lS4Aqpp9zgxoBVݥ껷nU_~@/@DUuxxNA86ri6 yiPr&vv*OMٯ`hvGe>*dJkn/iBh:r`Hӕgt!7hgFHWf[32/Iٙ 6r,g	PkKzܙUqBzc+RM}`#SҢvPIpƔesLd|&1,-Ry&&\
&(\%j9jdIL"](筊eܬLXNCHIg޶d\:Z/b85pl99RqX'eei5z4&Ǟ[r:k[˂>#y۝m>6Lyspֵ?__1+d޹IOة'
uxTNөsy3[3ԣdg*͋ 
xM`n=:
צ%nqۭ$zR
]~%S)ױ$#c+]ZJXŶ_vihlz|]S	Mݝ3/O0/oZS)PV,4FV+^>'+45*gs8a@Ԡ!! CHCa
0a
qLm/23
p\vh℆)
-
ë6bBNDq)I>T,yS1Y2CV!XRQ&.1
HCH3L8pAۘ/Pa^)״NI3DRpHOE#f$v=@FNropOFG!Ǻ>,z>
?cG"2д0I~A}=o<2=&m8Vr[QTi7yݺO*JE|}7]A=HqU\!E~!=TWިi>e!ʧ«PU|iZզ>#Gz8G gG.pPO!*8gol=zXpteC"<
EuwSf*y
J̈tʠ>_0=WytC\#ZA/tUCǑbߢТ;BB15vDH}Ͳ_PKo\     PK  C:U            3   org/bouncycastle/crypto/signers/GenericSigner.classV[WFd($8%)
)[R7ơB#%G9uIc_q㤯MJ&.3fٕ:aq* A EcO.yr!M	5%lѵ)a PY2b*Xm]Er#bFW
ȆeGR݊#EU]2Oܡ
]<m4:UVU2k鸪.%>i ~([陸YM"nzxK"wg<]y^wК	DCwm}|No;jPbz[}ƗE՘7&KK1w׷3嫎K).׭U5q
jٵғNDiK۞˛f
?VUfbKtcKZN`i(Mp
ëp=\,XnGISW7ғ'9miqesSуq?dމlsjJ5ұoW
]=zذ2NqIeox[;2ޕqEFTFLF\FBF!}F#N-=-%șh#)YG2k?
3]p?ޜ?cWl!TwlI )g1 v=P0,E
Cs#EA


Q0YpKA?nw&2B|&ĝFEׄ\q7	,a]y!pY!rBtmM[qUnk9((>>QKDaDe$)LvtO _{X'D]
W=$.z19s?":>y_1'޳C߸01X
'k{	K$82Dpȶ	 kl3
 D(1x!<AF	⑽3W`֋!ՠKX\R^C!J`0hAc  =YvYeNʒKՓN֟R@` POR'G.5ܣ>!HbFUM$7'0كQ7X%H|RZ PKT6FQ    PK  C:U            8   org/bouncycastle/crypto/signers/HMacDSAKCalculator.classU[wUL2PSp
- p	m),xa:9Mę	Oҵ\ŋvYV.qIzQ6sg3oT2>aPr.^N$Mn4u%<(2r4,6d=HcW)yW	-7$uիSJآ{Wl,"WE/[1iC.wrOc)uW;sδubO	 a3	4Yx)ZHp	[Y&/[rv/=$-=kv!,QЭ1_ۆ(M+a3(F&M5V|Qyd)
¥m8z"S{w;n!;TljoV˾CTnơ%/;(yĵI8ЌtceT,wxtJ<TM+lVYyQ9叚"0U&}WvF+<m
t"Fd%c=2xAFR~)i22
	{cb'VmvŎfdnulk[@lfqd:rQ9,XVOFOn
UphVe5qX[[펮	~5;1yD؄6ഊ}	-*v2lDHADT(Oe

q;uΨ8>Яb;T<˰gUl98ϼ*CN\T`=0pUQGBk
⊂c((ko2p82`x! B
)'q])t;y:b4f>i	&QHF:B}Rw)@[H2F|*Su!L C99TGfqQ!WO?ɵdISk:0ܰmCeG&ڤ9?/skZBr&~rMI3D2=Ïbݑy|բ!-EjZgoV9KaŵxH5-n\NLp9|0X1f.+B"wI-ԛa$k2rX?a
{lg{ =5e
~%z~]%66wڬ0_)E[(6:H׾Sk|`s:Ц	=%E/K1CZ3_"&{|a
/B!Io	98t4*"r9D<0U
kb[wgw_NNgr?]4R)P= YzZPK
  
  PK  C:U            8   org/bouncycastle/crypto/signers/ISO9796d2PSSSigner.classW	xT_ޛy3A&$IXdRL VfLy^
vh.К BG킈v_ͮfa{=sy7O<0U*m|6h6tJk'.LR;iy37,ֆFR[.!6r'S6fkY\sq<gJ_EpB3*t*&dL'$k
驅틨bv\mM9m׆Zf:$DmEsZgO2tY	Μ}^d	g
L,h>dS.jkYpaIg*#ZZ2J!9p:{2gL"iM$ݩ%8"	-n6xLhjn<ɆJW$Z&iGLKj鰮cɰޓ&+MX*;H4D
4vи5IdE4)ZvTrk-E$mے0{Zͭ`p<Q:pfn
<'=w3A_~]xM>N笋hz<E6DBMXOԋjNSj)8EeEI]lyvvAԮXsO<=E7kt
!
X9Bäz:WjY%atW826S=;LeD-{R[7Nkxԫ!Jit~eF=Gҽz)EGfNP(faUESwlk-Ӧ:1vt2B()aA*7"-Ť:hpL}!by*#
r8Þ>#/)ۍI{̼-N&.b4mNkfS,MGR"@ao&Wf\
%e42oAndC/׌8nk)|W` ~.	hόNQ#6HcJ<=W$كXRXI[x3BjRL6:E)yHPԛJVLR/`$)WkL=Lah`0!pT\3U|Pť*T4bUhU@BT\MEWXb	]rj}UZvRQ;JbwR~DTՆN7k1-vJ񥩱'ZHe]]Vn(>Yq_q(ьD8S!`;uK}3/:VMZąyK3`2q1ΉW1,ca%ÇQ'j1'|ՉzF
N\0v'V(ubNL'B1:dW̉0ʉ	(wb
|҉NLg0u"8c/q'İa×U{63laa+}3|p@aXo;Xg,^z#n7uV<xAc C3lg#;exҁ܅]	;~P-b`dMOY(Zg\soDl+*vPduk#2\x-$Z0Aetu^zN4VI"i2/)ұE[$ޔ0MEK-XfRZ6jsv9?lfK"kef{.5E#VP`6ہ?}]U[و23h[e/F<ATt7-݁*į1	/vǏm}$I"<Dn[Tܩ&FXs~t
}ujy]DSl3T=A؈qq;9=*7)}u /6biZ #٠"6#x$>H?Mo'~KI.S/0<#S.u˖cs4|x9tԭDc7?By㘤b4DWTL!ȏy%j<Em,$%*{f[(jLf?yT
G׹?
q"^-YPat%RQS״|>YwQ|IUQW%w
%G%.d֖T}^'ew
ZBbBq@ FٝϿ
Y%P[Rn2:I-e[WPM</Z݊ۺnkY-(u+e،'L9VK?!dRL=FaޣȻpT_f_:M~iȴcW7x,nk:
[o!*HAk?B
B6۪U"YJ;LipXf4
/pxl
i
cM"Ľ5p%!d%?Ejc(,g'RN̻QŐaϾIy~&_x|Vͭo)	)+./rS!L.BqunZr`WW07}P+4?-UUJmdYNoxEF7=!r(q.`/\<<C'.\7^Oڴ6	pԺRA=VMjlOlqֹ>ol@dřx/GR-V$33
<J,bba	ZժVdMHD*ϸU#V&*Lgڅ gRXԳAQRy2;emgzI+5"D]{nyqnQ2Cm|b,4DkK	˳𾢴%l!ks$b+2<Y
	tv.v1i[0$I*H5N[7N&JѨ'QQZğQhn'lQ.KP5	n2=Vix8Mv!S,^bߐv4b[<^ K~mJ.n6ң
XA^+A{Kn&lE0냈8W\!&+26jzMɋP:DCk
fFg8nD߇fDK6=B?Lͬel96 ?l<sO/WPBJ[KH0Rf24W.6rkwm(5DRk+:jkj\.qќ52wr{П&%vڬlL9h|dEsnX	1	C(&7i֠>ASV1Rj)qįݸnI*xfv+PK&^M8
    PK  C:U            5   org/bouncycastle/crypto/signers/ISO9796d2Signer.classW[tTWΜ3s&	\ɔ-m234%@&ICQr2s22tZUzZR
E-$`7|ݵ\/9s	!f}{o؈cƦ{u/@jlz.欍OKQ!2WBe7j<IX25;PB{{wlhٲ>, `EIeSp1Ѻebbӆٽ-MWZV*qeJ:LSTi=j2S1ip\U]&EՌF{I%QH6U3%RQ5MEM犪Zg<JǴ.%ATQ;tWvo*g3jѧSմ)xfsP+Fy%>Z`,UY~R+q%m>VǵX*)"ըLG	5]bԯJ,J,\En!5L*RZ:vecMMթ6wŢ:hER+;"2GRVSd2H?dO2=cf쨗xm
XJGSdx"dNOkD"Ra]M<v(٭{a
e9PRؘr@=ZzJ
>)(R{rJZId;P'pCt}FdtPG6?	#L1%Y-oJ񴚿T9(cSa:TwkZͨiDܩ3n0u~fH(Gh{GҩdԔ2h~-eHo=$M.:Rٲ)C(rްB7.M%)IjTqldhD6$haheȰ!Ȱ26$#(c-2!SF2v薱SGd<F*nVeGj'Ʀ;3ƥ,B
f&aHPe1.*^jSE_Iq"_iFY`A>p
DNƉv2<'ǉ!zSNCډAv0C5N2܉tb*x +t	X*'604!jhN܃~vGXNx1O3eH>p'>p2|q`!/;WP
6w^r`s /:0	vg*^`8@
/:0oc`8SCs3|÷=ܞ;=hJCC?A9X2>U$-@@5C-P>`~]U%})aغZX8zI*K^%N/eɓ&7ː^ }ޠ	HR9})L4*|U6s9ZT'@N%*Pgjq L3W
$I2	<V"s<2㩥x8}8Xų/Q9x]7zY\[?it
>']fyjռ#8D6Ú;{lFoŅ22+i?^1xR;9x~.E/TbPrK:1~$rd:pwӿx.YyaVނZ
(<J*fxQx5?97'-ow,"B%4cߓ/xnszbk>8AJj޼IVW1sqntUaĉ3K9hZ
e?Z49佺ȺYoJܒ6f(wKU7'*J$}^vs2XmeIZyg[:([eQ<V-E^2$+[]cgO+>݀ǜ'tQ|{ݫ<gkӫStBa\bd\=U{nY[UXi-~K
=>D:H *Yg
J~rܮ
R!
Q<E^[魗f;skK
Ә!r
cٳسDAqt}s2ysx\᭹r}Ӹ)v&^7qf頋&[w/0wS
ZxT&.6=mGHyxi9zq]a˕7.oleݝsٟ95P‹S$zMk
Cg9]gyy5<n>.bmshru	+56qzYt峝F5[m'mtI	#`UnZSUXDs6f%NRyhڋWea`*lo +᠛Ps_$$h"-o/*YLz(zzG_[IVK]+Ã6NC,^C}Y`igypO۬Dsr_:_4R'/7*zADU4Šm)&@CZn{+ihM'eu<0sOcL*ˋ<.#t
LC5E꠩!Kx,cqdo+z¢
/@d~=DM	JvRvл/PKG
    PK  C:U            1   org/bouncycastle/crypto/signers/ISOTrailers.classoWEƟIBwjUIjM !M$mU\.d9|?-gxg19w;wܙ_d˘HxC2.ʸ$}h* /4۵EstxM__^[}paRe|!=-1v5nbhʺ\
7Ԟ$rV%)=Se6=%}E!(W πs[^3֫UεgsMMZGYɖ׶>?ARmڎզOCSsLo6תO&o;Zsl[3ZI+`n;TĔni^m5͎XZ}t{ڒݲ:
EZ펦׫aΰt( zХ	加ػ6(PCZ(dO丙f<7nf)r3>pK&z'Ʃ
߶V"-CR{+3\H3\O`qQC1AJLk*+`
XUbM
+39xzHG	,qob|Q|MXۡ<V_o4ul~K%7{UJzޑ˼0Ix牭Do<K|Y";O	<O|E{/_cw^$*]kC|!RT#gO)T)Z§$s&1D06KB7|)bia=A`as|I25w[؎b3Y괈1(:#9 E9꼈	uV<y'PK&qo  1  PK  C:U            /   org/bouncycastle/crypto/signers/PSSSigner.classWWf4K@%v Z^k`dw즻J"mT--J-eCH ZW_--33d)h	{ν~u̼c ^, 7,IT߰Y<]_Ⅽ-1%tD =b=Za
mg͕33;ڛckڷ6V:hs
5UwfN=dTI$%	G
%MͶɉLj=

+TSkW4+zZ5Hۢ9Hn|JJ#YM@eJs=4Ѽ-7s5j.CO<4mWL/A㸖 yC>h	CݥF
5ٝL=CsҘah)hΦ{Ь@q(A];9Nș4fOEO()LKcus :މ;:3Qםޭkɺ5SGjuQw5-Pzgk	Zћs@٣l05RdSѮmH9Т@6z);Y=aU*m@iN畅Z$#ZvrZJϙYh,cj
(OY|W<*
#VS9p.-pne{j7z:S9(6p;Y |Tjmė/圖:ZNHH9jʔߗH`ջ
Ez!22"21_Gd'ce2X!cf-2VX-c
Z.uew'Htj?Z'j#R9C{I{y8te
	zjwe	D1^~H[Z;w-kDV{S12o-wX;X'n7'r(ʲ|݉:¯`(gI'0]A
2yVDJA5z0YnarDg(	Y܃
&>^`-uTЄ
}SMfءCة`PЀ^DZd.&2]$>d/01&e9&|&_`E&_be}L>C>lW|،o?T<>tiǙ|7|<Y&O|$<'h>2yיdI؎o+ЪLVe9SMT
D(mj_ehMt@ O7+օdZ/v8evSX|éD,sNbr8 *PO4
/,=ytnˍڀ4_c#Նӛ K}!R0WN09SR	Yz"uD(ۺ适	T2t
sq:$DF0jPxBaa	EFa
x>pa{KP3#Eò%Ky#⯊AǠEw;0q-(A;t.:Im9r6| ×.Y\Xbv~'8QG.k3#u?[*1'ã!L'qE,g,F0,zl+{:Qy[
#Ő;^!tO[g]"cKe$S]:KAOW4Becq%]GQG\Wޢt)w%\ȇzo!Ujx	׈`xC(`fvcvJ'&G.KYN$G,9ߋAD=&;A3t1k9eN`QXPR:XJJy%Z^8_d~&
S"fv[Si"e9H\~oCrJۚj(Gx~ZxM OFp9(*}*Ub
_?Cxz?ҝu59ɱi+Kpo!xD}f3v(}GCH)Bi╀z7'5mYn9NBilk
pv4I㭤D]ZB\MXU;%Rqu;f0qwAd8Wׯ]S	-^bw*<RhxsjA*N	S~VU{vje'VH:ɮ3}w){y&߸x|	ۃn A-ŻC}m!_W/r+hፂң=2Y\­^|
x.]kAPXqq:
 :(eb~t3JnWBFS%v16:ަ[PKVn\	    PK  C:U            6   org/bouncycastle/crypto/signers/PlainDSAEncoding.classTksD=*I
Nĉܤ$$<J2REVde-_(Ì!~71w%uB<Lݳ3 +Q*
Ta^!0ߨq
@7jAl.vctt	7(r=qr۞7ηnޡAXfw-[սmS۳~/'lCo>lY(&L1a'bشhIr2DKI`q]mc{V$[OKeu-pk[^ܴ:{u?~JjsAmbk{e[m<P|<oеf~91薷׽pEJ/traD)Fd=$iWBVf$ܔ𡄼Y	8,\65ڛMupՅ79@:;Fb4:Zâ+Ҹx!qK7Vdƈ7j*&񩊏Rc*>Ȇ)*fò븣=fbIŻXVq+*4\m|)=fVYgk13
J
mތd=4gF8v-RP/ҧ<|J!ӗ0Cdz"@8
BwyUX(BJxP\
Ye&
 b2S(Ϙ<)no^	`(E ׏xrs2R/LSwR3{L8ދDy)xL\M'ZL㟌PgUR.|VbwGq-l(Q0Ϊʊgۊ\Y5A"k~ +jb4ĝIFLJɜx4PKfCt    PK  C:U            5   org/bouncycastle/crypto/signers/RSADigestSigner.classW	xTof&!d	Cjf!T`1<̌ofZ[jԅڅ.bl.ͮvֶv=7 sϽso>eh$c%2eX*cVm2Η\2VX)Cqe"ưWAиs5lJny0H,#[ _	=s1\hu4o즁*^^ܲ|Rn[R[Z.XޥǴtO%4×Hf|mI4MbqԌL,Xr:4CߢGLrAeMt6n[Z%6Ŕ.Ϗ6ql)dr'{̗Z'Ge,\G+ة.5Gɏj*%H$錚CZu_U䣨ft'"ɨFܨyH+TO𴇎Ƈ1W(1cICC4QMCyH}Ș*Ms"TN1[ojH-zj:MRzP5lʖX1{5)Wdk>гJzo#w̼Vݦd(Xhp<xiLiR_v*bLd|!fOe
YGVS|d3z<t̨du`HS|(H[f2bI$>Pe&ҽL5%Od6L\Dsٲ-`[&5)喔OL7*thξ*+Jd1U?I$oqiZ\*\3{
Iח=ɻ-MST"p*z#lSlyfSar.5`{~Y]T**GиlP:[lUЈ	-jN9"ZN%5']Up	,}
ɒ&NqyfE`
ֶ:LVRF2B)T<24WaڲZU,ܴU}v]VE|)jdV!f6%×I`hO%l*jWEf7&e	J#"	$lIU"j	H"!&aP.Z	[%%IHHHJHIN!!-!#!+a% ]]>Eev"ƒ2r%TBSUNusIWV!64>aoQ
Uj?Z^6~-%Ny*V
eI]t
N](qZT+	V6N[iS췗A#ylE9ǗLSp*YXvkl+,z'KhtBVЃ*eXðMpz(|Lw
:We`a sç{aUbXO),}a+9b71<p@8F><=xaq/0L0f8e0<W12b:7v`iK3܁o{p?awq.<܇1܏_x w<xyhg>g!U؍o1<]3G-irti)Cg\x
_%`Vwsd+}]B|.pq
l)VpQ;*/!z$rx90&=*f=c6rP{T8`bA8QQuBjyA!&hC	%
2Dpܩǝ m뤚:Q4om%%m6I퀿 C0#xG`/~jFDnTc@ͬQQq~5<#,x>8&<Gs)Zml[ņ׏Ȼ.M#3j&Z7پA$UD;j{@<*-x\^mX
o[t'ęNۛ5Ƀg-)S.[RьҭhNH=X`EtRfi9qm$٢d]
νV&{is+76M'h,ܴYi	6&{Ø.|:ۛojnϛ$a$^i7$W4
Ygzb*^U䥐ʷڎ޴Xwac⣨//Al,XvbTpc9ĴBf"=*px
HuOfjL\%Wfjnsֽ`<;hQLƕFg=˕97/K9=9//W\yyz3rS^yyf˵95/Wϼ_yٙÿY\PKZ+	  r  PK  C:U            :   org/bouncycastle/crypto/signers/RandomDSAKCalculator.classTRA=M,쨀kI܈,T*3d&t(OAT*}?|,v2}}nw|GfG\*C$cؖc)LJr!ǕC~Tr=)Wrт%cu
XXv
Op)-3Ha
J2}*`hY!W/-apoq掩gm[K*5mR'"W,\Om90z^pˎcp_B7tu2lͥK%T;;6OZYZ	I8ۤS*-nEeaƅ0:3\8IUFٳ䎞WNpDwNФҳsR]o|N}gpg3]^}1d#}^5h`PCiNC#B4+^\u
M%(H(z 
V0eܡG>	fzƫE^Z[`AYAeRl#2
ۅ-薀
fJ6%FJ$=uSH=g=`5 IP(>gI"|}<x}#Y&}OOU{apQ'US#=joPK+E[}    PK  C:U            /   org/bouncycastle/crypto/signers/SM2Signer.classX	X\/3ǋB1+Ä'114@bK}<gqLFktژiS@cmmkk}.y~_sY7<s1 %uʁշx}۸seumNi<A-wژ7u&z
$IͤskVZ~g'ѕNj	W[?Lz4WDK&]>5jvzWJ"ht)P;\	F~-(+Hc[ZhrP5Ѣ>-9MM%I(돫	mOLLhDܦ&]1ܑxD0c!M@vR	=y=%3'imףjJ @Rj?ZEFGg˴j>VtᨚJ'gkd47zT9Kg3L%/9iN'LaI
7ZJVJZ"k6ޥ"LVc{KjحMYy.-%ɱVXv]Z,0ɶh/MST_D}Z<Ǣ&g"-F&i|r:`rC
oKGү|p[4yb11c9;C YQf4H sD1<XK}=t4x0&SLbf=ާ%ڒj4y3ĀԒM{_j%b%}QoEz)[kō9kmnӡ˷~ͬ2tpfؕL[7\'Y^J"w<VRI#I_K։Ba<$>'t1Ĩ2	nP)Mꊔq&8Z5%ȗ\VWU_5j-[2gI[/bM#lh!W{4,
swy2 մxGiBKj:*%\F{nMMzT,r:
%V`q:D4W*ʮJt<D.*zNP+a-.U6	m^!av	:%씰KvK蒰Gp%-ak$Rµ^%T	=텪F
S{I%ŲԑKM>$`)R.]pe YE
\[6SnZ:i~]y#-kۧ_,?7kCܜat٥9$?Igz}M]٠uu|f-3sY+geeME,e%/RJ.i]bgOȍn 
mƔ$ ?ofO_"vA	k2*}jFZd>++|.s$gM3(Vrv.rRc@;kH-(6b38hRЏZ[
V6͸WA5ޮ w(XR(S1\I2842c؏r
6BQsxuOAީ@gQ.ܯc
3\ǰRpޭ p!PUyk!n|X*#
60\ưU S°!

'l'|BxXA+N*XO) ؠ028!aGFcxaT9^'deq|UD+I|Yo3c4~-c e#˸?q.fBa|{2nwwSex?cW?dF9ioɸa	O~).^M7kO2<y/2|OkM?WSlH ^gj|3Gȑ%87@4lL6ZJajK8rh) Ub-\IQ;$Ċ>86R33A5).Gq)[<n ^v¤	SrIڨ]XPқ'	/Z$j)gg=7`wǪ\QVۆDj1,EGq{Ó(64-R4#x~/eAHbFT3ahÃw7Έs5L<2vDl!#|+
iroΈĩ.ajXTN8oalD\hH-_pHHInYEJez{ET:K$9ɽvj0ɳx
L¤]B$G(RY=#b
nkoˎw؎Y*]#e ߍF\\MmٸF=ڢ X=(1R#@jdvsWOF,D	H8.#@y<#2eoFTJ'p?h봟Ŀi<,ʝj%#ergAYN˭y#q'Q"A^Mzx)AmFЪC'8&%t(G(P}3>~pͤ̳GfChKmǽsމ9 ݰ<P!)5hE딜eb5{
ff4Mr;Oe/a!%i0eK~4MfZ9cv#m#b
WQ,02oySf3Ԑpt%3eDݐX9u~L
3cfMT¸urJsU:6{T:Ua,{mޱ^SbSK%i5315$.JNztZnȣH{PK
    PK  C:U            9   org/bouncycastle/crypto/signers/StandardDSAEncoding.classUSE-q(
6Zj
N,@Qhoe	;ztǙ1%8^f}yϿXAqġ2Dҙr tX+f˦m9!<DVKh\7a^S-~-nSn3)#FNKۆ͠{<æ<Msӭr?@bzts#<8"K>7Ol`5o<24M~[0hmrX+6ovk;&U(;>op!z
mm;i|kF˙
ze>رǞ[(p)y<t;)&wczGRs i0/Nvƪ[ԲE5&Բ22^k2d\񒌔i32nxda2vZYV\kEy'dqBht9S$
ֹA'10+o~6c>$bg5&$1a4&\Tr;iOR9$v
nxW#9hAeRqUM
R1E1%I,xwUxWEạ dPRŊ(ȉi
(Yl(êk
4/DE!HB
=+K<tGZH+	Ԓ"\ߒiLܣ%l[?@|L`yAtjE)KJgA&.&k.E:O	*dE;f#
YI<K/V#IIҒ~CI@I,: bc:1F0J&I5pLLyS|DVG.30^G,&=~㔍eB9H/PKO  n  PK  C:U            +   org/bouncycastle/crypto/signers/Utils.classR@ҥ1x/PVoi\J$5/UP|(ǓL$vzv\6'o 
'%$D<ߌI&wyo!-#E4o>=-۶0xNB-oKt6-rhMhfZJp]H촚^ԵpUYaQwHp`ry?n9ak)rj2'UcUju%2?Q-#_Ze53S)Rm%v#s5XNjf܏i{.N.n^WR=%Mv}uHMܦN8NIއ/j6x3!GwN܆&xʩҧrN0Ӌq}nWp+G}@y.4Ṧs	Ǟۜ)>#lpRA+n)hsL$wSĸc:fBA !g7g12aNF?X Ă!ܗ1G2F@
<qYE^OQ?:B?Ѳ;Z*ik.|fh<S1S%,rgS'
qϏX+aݓ#VKybLFcKMRrv]_<7$2+ʍPK
Ծ  <  PK  C:U            0   org/bouncycastle/crypto/signers/X931Signer.classVks~VZyXcrbHȒbCv;0&kiՊDi4)MzI Mm腶q`hÏ?~˸Z[L=n؏?1$艚8'@TGQ6MIs
ODy]}MtOj9xJ@Zobv,}!:5GZkltfrjVn	r614{Ccfc}R(6x,W95)꘮+e5#c1O.ӒVXRudFUHmOsEC	-KɗJJi]U5N+FIW-uSJKE?XٚVsnRӪ1IuXUD55a.kC|)hvjq\%*3Lh;U%OT	ػF35dt)&jnrӋg${KGJZ&vs&KሖѴ<J#A9ؕwU2Zۨ}:wW9-/ËR.YN*E#z`cr6IVo7-ԇ)'Z6pEp#Ac-gcϩe3pPu9hYVƧ: C5g[%C˄ƧzFz>VStrgKTWM4jT*UutNn!`d00p	>	$~	H8(ᐄ	pX]K֜$
%
Jk={_;[YlyKhIg z)jL/j6ًajžEQvӍr0رqP=s2"c>{(2pCa2fK41'xne|n4$eDv )qdtBу2H`I'c;نS2t[̢Ag=HTMxpEë_e'vyy{Yp1ގ0^fx5/0|_ǭL]MB_sOަk9n()P3*%E!`-KoqN:jc66:>WgwX}Nv{bD2-iL;hYj;N.Bww]BsV
Fzo#O+Z>o7M$B]ǯCY7t{B?w	D	$I8! %acjhg/;u_K1I83Vq1G\$'T**ѻ^E;s˽
\Fo>k6a49r1lccJ/v7 Nzsr3GQdYwX[nvD,[/1Z05L_8p&͋w2^Er5𣐕PT5Q7j'a"vr/V\:;3<˟SO(8Ώ椘J`R+]N	]NtRbx	;7Ļ+wanE|,T+
8@?
FTj<h~ɹrXAӔZ-S\{t{IZ(f}s+x?vdȝ-x	*lkfW1c؉.	IPKT  
  PK
    D:U               org/bouncycastle/crypto/util/PK  C:U            =   org/bouncycastle/crypto/util/AlgorithmIdentifierFactory.classxTUor3CBQ@fRB1$F  *N&00 (ر]UWk[˺ֵ^'!,ɓ={sλyHO;]薝SBZmn1ѿ[--((*.*NN-wa@˦w<
JJxz]HFbg/3./T/+Qʲ]ͪ@uYUy-
Nzl,,j9fiE!ǮMH<VW+R,d'
KZJ֟վ?pp	O;O~8`G4\pW㠖zx0iu-?sD̅+CkCh(VGv}(ZolcNAkWaǅԡnLD&_@P.UM͍'}X)J:QJ
|ekxpah+*V5F.c;'ջUd7(xc>f^%
dؗs'IHU՝EÊ}(GwRC^N)tRJ&]>I>4qn
sw,kt"JfN<Giٱh=
Iߒ/ɞ%v/IOCQ_`x5ƴĳBNxEVh3Zea-m!BYȳ೐oB"ܸ/uax[?G˞ۻزK՛oHCĉKsP{\z/c
M=}n_8]}6fi!Ȁ?4zk>4k1H#Sc4kdiИ?@Ot衑4zҘ*7΍iu`h,8L#DcGhFirc(G@cF؍XqBJ҃I=j4LE=D;x+«V&L^Ʃ5P'f̧SfPیoq sOntKVގS/tV1[kSl5Z#::ֆT[q.0U`^3NkrPp}0K2:45mN[ZJl-VXnJ
~`fl=5~P֑ǥFN܊XcSGsWxywtk	p\8=̡CχsxP׵Zak[@i~8y;NنͩkWwqa;ச`w	0&fEM2&nyMPx&bI.n%ni2!ϤSD$i,F+ 95_
dsdc$S*
.%C9`&#e	3Kʘ# #
 ^$2ydK$J#+292N0dE">̗iOHB2^2	OדϜdp,})ב292]2zff0(f,dVGfJ=s`6e9s\<e2̗d6PwBHYm%Ydp1,03wsc.pGH@28f:Ĵ
!
^&Or 3bp&Y)3jp'i)̘1R\mYc$t"gu2dp19ڠl5cak,h69 7LV6n6H=AWN4ة$dSdrOi2Q"4ϐ&LUϒZlsW5W=|9F@V*bE2R5erq%rriˤQsR0xKR*W1ԫer\kpG\'=?ɑw?ܯ($l"QVR<n<n,;d7R4xD!rr51xSW+IrWR!<,w<+ʣ<&ǹC'Wէd$gS5P<[>Rʪ/ȁʋRS_lN.*WY}+.uҠ)G+o";RgU>=Տe|*>3s|YSDIoVr$G^&)?p$O2WW)W~垫ن[߃PKW
  _  PK  C:U            6   org/bouncycastle/crypto/util/BasicAlphabetMapper.classUKOW_c̐Q ~@B-iCcJ)=0[5,PYt[eU+U
,55TRw@J鹃<ܨFsιM 068E
qiW(<K'4;jl\ϠabnX\
:C8@VBfTyXiUTܰ7ecZb*'"Nt)o).tmA_ҺSBOkq3I]\HIF^[<m,ivd'"䑜RV13)dJ_閸Y,gdM$穰Ԥ(Vajdi$3vv
U^
X2WR)^K"d]hE#u8ę/Qɮq_Fc)8+rG9MV+jܒPh{htZ3u+#4E{
)8  Mo))8
.0OP;p 38D!>X#=k35ZB` |9+}PX{SR&Q*pE	p87QqQ
EE^iTD1 aPE3T1,7Qǻ*NaDZ*C?ޓp݇K@¸1|CޗpCG>tCMzՃ%ܒ0WqHԣc&$LJM>KӅo<@e'Mm
p#^\oӾU&	Ĵ@]$ZƗkПA~Be5|@?N՜va.wYGƁ6@59Hn2^uNrFrlugv]pn# ~]lNS'X=]DfϧtG7;RQ[G.2SLցUC'*Mw?Tˮ;{7b{)t͵vVv;~wWhUpnW,ZPW
\|${VGܻ]LG=,vY}_nVA)'Cj׬{J4蚳3>8ұ>-g౵tRI#W}PK@@J    PK  C:U            0   org/bouncycastle/crypto/util/CipherFactory.classw|TUdED$A!	#U#2*
ewuQ0ڻ{_{o(ΛdH	g7{n?y엻0Ó63kLe,+4D=>:yӛŹ+
X^2 bDJ=n?ʬu<ՙu
Yz%A{L
ea>k7<A
fddܴHp.*
1QaUZvN+gO9:%qP*+T
j'2YHzVϳz5ki,yBl0V4*U\oͦz+WI9GD:]4MzNnW?'6v]ƴcnSiɖ;dJu;z˪Jy2/%ʽUϪr
UZ_ZUDpZXYS0U~KfծBoU	cJX2+!wfm>Yae=[2Wlf
#}\߳NbgI@ !2Jջ+c<g	L;ۢ&ֻ]sKJϠJ㲏;wuOE*<!ׂ1LS%Q!]ZX냪Ի-*Q%Ux[/T͝8eZGBՅB_Sre
\i6ޣyG.1,oջ
KmA}Жghy\|JMsK;ŷh\k]_`V=;͈?[E>{׹++yDE`ƊN:㱉,U&n5}%<zeV5Z9!/֙u.5#ux1in_ڻܱʜU
)>%ɡ@˷'=ij4cb)&rML5qi&L䛘nHGab&L2Qlb9&6QbsM31M,2qLXlxe&8D&87_|k`v ]*ozN3 ;o:?㘥];~\YFQB1!ki׫HqK"݌oM︟Ov-ډ~:cnԎb+3JW?V?SMmҲ«Ce'a~;-M-?M5vۏq:9V_d{6
iP;wBŏRnsi<^8teB=XNN8EREDE%rhDDƈ'2^dK$!HtbIN0CD2EHvd\$No91wbD.KE.sb".N"["W\%r"8׊u\/qm"En!rȝ"w4 F"RP[Rp
&w75cxq2"<-@5s<ˁXA<$o#k"DN9Mt3"/:p&w,Esq	6~K\"{D^q`$7Kr3^텕xV^X'
$0!?ܞ n2cVmɔf 6!)C{l`$gk0wpzy0({1'2-oE:wm+vNc@^
4%fF4<g#	ʳƌcJn4t^Heϛ~މ~~2Ozs?;i]Pf$AV|N?_N*mz۶fz϶riǶi}h[i}k|lOgGԄʳ3wm46=V|ndJ>{Ϥⶉnnר[6k`Rh{K9j٦GgUZ\K	Ac5}a1zbt4qDĪgdgiwKs^dav+a7XZd0\{63vDߏ:u9uL	&Gw
VV#:$$=7[0rl	у|hoEz߄3朷
s۔ʲHY!Ѧl#ee6ěmֲ,!R6	6&C>:aӃLZN
3O`	O_xT(ˀ7)ۙUF!y[o4zY/;'g}ޛ/53}vT4)+OԸ<IcsYtYyƖrTSͧ&rj7Cc#KF©fPS5}4${V4UCT5ZJqPj\CdJ 5:X9C4"j<CSQѸEWè#4.'F"(U@=T%bsaj5KUbƏXeR85:^1b'KbRIj5G
NV)j
RW.T#44ygU-H[Du$uSDʤ*HbDD01Gc'qZD-8FUyP.h"Uc5'SXex눲4v
Ruuĉ5'il#VԓB[jBb£qQai<DT%*5ZP4.%j4. |o~иӸ8EF
%zg:ָXFcVͤӸ8U4ǉ5.!P5%T2Yjlh<!<W{u`MԉM/5.^*5.^N\jo5N#]?j25Yp9%Ƌ+4^nQ[5^RxCx-.Fe	U!ulYU&AMj`ƗT_44^ެ$;[ު6U(خk"ܡquN:xZؠTN@K''hRCAGL}\]U,'G-_e`AKFGؗQqvU	NC<<Gr[!xN]$	_dP_RG	^V#T_
`
Toq%owwzEX\j#'~A?Uux I/XY|eov |U'SGW5P#F(IrxUo/*W+3<PKRk
    PK  C:U            <   org/bouncycastle/crypto/util/CipherKeyGeneratorFactory.classk[E#%i$Ri*P/hSkCJza3
twCo˗Q_|rɒH'9s̙ϝPw:nbe3zv*ˠd~,0\ԸiZn-4ho1\l]s:+LasײbqcGA8^lL\'+pu.?p]8֟=ڿ<O10d_%a:چ`F{ư4:B\[|7j0DX)	ӝy[&CסƖФДwm,NUt YvQݰ*VոB9f򋣾8W:9_=y[w:gNS<˯ i"qbH];ۚ.e'Hղk'_󡛬2e]/|<N䏧IN$

oD3]
5c-[w7K5)2T@fkc?
.)xC
RЧ_
Vw `!1Sf7xi>ZϬnwVyjnR:G.x,zIw0vk{>:9M*mbZ"N:XTm~**%gaY9˄W](!FxM8OxC@H"&'܊ "x#@0A'!\'!"G0G',	Ke!$BVCِS>$
:fH`-acǧ/_0R4a~ԝ$&uZ!ȼ˵^^@}O&g9wZ:a,A|>_pJc3-⁅hՃJ6*PmToT>_H0F}|'	lP=XJ	z^(w91,5$jz7H졲/Y$E(~##!ynŽW=5dЪ?^oN_'zPKP  	  PK  C:U            /   org/bouncycastle/crypto/util/DERMacData$1.class]o0_wYv>غ5X`- !>.@vRv.vQaUO7$G!MJ7?xG/֧~S|r$EjTd40HQSȪ0o!L\=CTQ7wF];4L2'kT@PPukIo<윆0ptX(mL[.z0Pd=j9ykOWaT>yXu9XA1Xذaq@eq]B-JQkn=dW4
S#ݙ(X&-DyEǎȃH}w8cIrv"Hf'.I>_Qm<s/PA"oZoT C.Ke"2]PK10Z8  +  PK  C:U            5   org/bouncycastle/crypto/util/DERMacData$Builder.classUrF=E@Wk
%زpS

I(Nc6#G ~DӐ̴Pʂc蜻w{w)b^:\fƆ=u
;uol	5.3{	f{ WB\Se\,`"Jp<GTp=^V,l
@rܖ\kvhf=	C&.ckP`cm.r⁂dڂM;F$|^0e^۪.o3&+w{Ğbu)Z\ST;k,Jm]ƖWcFI5,'kQuEr4> uKE5~'x8+'ԅuzℊ*PQqJŗ*N8+*_upj+}G{]Ai\u#7ܓʐ]a[l塸@9|n~<w/yDq\Ro$ڀ$U-c:buAQǄcK8:>G\:>CRa$ŌKQ\ґEIgpWƐ÷J&;	%p0
Ae
y|/h(඄9?}CyEW<.v95!7gteWJf6MQY1i#>DTe&|hYƊY6ŐL"4L24)8G~9#>iz<^ 6*H_G7BkN_C8=f_ g>-^*;);xk"q?kί%k04;KQDOR*BIdx1	O!N}C44 Cm0og> PKEE}  5  PK  C:U            2   org/bouncycastle/crypto/util/DERMacData$Type.classTiOQ=CYP*mY".TTI i0!0֒:%)IeoZ~wn;s˛'	pC"ঀAA<nsCVN	G9xÑ!aTVIr')/7s$ɿݍn],ڝ<ZdN69o`Sw
UU0S1Un:U+Jnnlq>RcZd:oGZѭ9L5^Bp"wucRftcm[oС镺]x1/wˁXR'z3H`8aw`Wgy#F׹̺t;MVws|qc1  aFd"*.fd\,U=DgEO<0gBx !Q/.!w=enJ͐.D(Pnׁv
c,$q9pX%Wd1"%W$E!wc#2<RX~ұrprq*stW-?V|ybQ=/OrU.M)>&]W.]4Ҋ&ZDR+XN9nOJAH S PK@  n  PK  C:U            -   org/bouncycastle/crypto/util/DERMacData.classMK@mڤQT7EADziBRG-K.>23
RMo3kzu"|xNtɐ<[jߎg7]͇"yx}<+xi0Qfqn'$O̤lc=;`8NZi?|]C9
4
,3Op55d!iPΡ
ylt+XC9"{Ԝvyvty!eE8<)CQ8MBJ8SfuR1FըL,*)#|bU d)Q$V"[3=:˔_vP"JDPKY,-\  n  PK  C:U            1   org/bouncycastle/crypto/util/DEROtherInfo$1.classM
0W"#p#.
.
CH$I^ͅPb8f3y 0'xixUJֺv0rt=X>NSqB\in3C0!
#i*JX(w{5fH#N1X#yPK6      PK  C:U            7   org/bouncycastle/crypto/util/DEROtherInfo$Builder.classT]OA=O?iR ?(@RynXuEW561mLXMz=3޹sg
CiSz˥m:2]YwÝcV!rZYJZp
!VKZR3C9e5+m^&v,Re~@ʊ0}v{us=TE}Vu*Z1Bu*3	D\n;g^YZDիWyѰKE><IB^	EB~]+t)5'钏cri]lS[ydr[D.|{VRb:LŎz3nGӱiOyWd%7ӕukhgίKO+' " (&)0A޴0tzqQab¨ą1Y1%dLࡌ['_ThRρ,noZrn}Wĝ"AGEQe
]e8bω= ?D86H_`MXV\\cAZo5@861$l`yK<'ɶ-	Bmb4n\/x,p+?tգMmb"X>@5M&ۋ/hFiaR:8gDz PK㜜  +  PK  C:U            /   org/bouncycastle/crypto/util/DEROtherInfo.classN@Zx'eѐӸ YHU-#4S[i|(A6brn9g|}|8A֮	Rv$du6>
C2tO6	zu->0Cf[/ضeyѾ걇qjsGgFh7g~yQXnFg>A	X!Pdde9%W7-#,T5,#!
 !{,V"l"$ȳXXlApkPWrH"'Rª[F
 ᥤ3E;b_I5=,N:1jL+k]i]PK:^^j    PK  C:U            ,   org/bouncycastle/crypto/util/DerUtil$1.classPJ1=K۪Uwnt0U[(Tݸc#1)ڿRP~%Q.{7 ;XcەZ=L$\c~G<P\GAW)qw܉}(NP56
.PN 3I{FȰZw5vbZ>fH
I)iJoH{IZjYΰZ-NJ
Ǻ'VJ'G_3g/PȡCeT\џ;:T&&CQZV<EmL +&ZT%&VO[Xo`R"	a:)dHWd>PKU    PK  C:U            *   org/bouncycastle/crypto/util/DerUtil.classmOAk3hV<kL(I#jjns[V5K?qT4^r;3;ٙٯ>|9)!mjͬz#ؓz0ťT-T^H7hy(O tlQR0D5 Z+3FƞW!E3LxW늎0\#*[Il["dX¶sKHᑬ8O+B\8ڮ?a
8m$ɰ?X°8fn0ZWdȩ 1&L20m`a.6D{#~#E菞U|sVofx޳U-dq."ca,\K7,lb(O^&`VM,d*n;ޢ`H)-GN+c_~H$HfJ},:ڽP>jZ'7Ãd6Nѳ~]G+*7=zX/pDNDidyY[2I.%~PKv|+    PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$1.classMK1ߩmnWW'Ń`&xLӰ,B

%nX	3da23_ ";id"wFDK5POR҄f#tl5U2u*>:+QSxKBw;qQ,ԥT&Snwx(z(y({<T륛9ɦt8P en*>|4x};.mpݽ+@?iS"lobP|AvxǨ[
6smET5%#.SfPKqf(  7  PK  C:U            3   org/bouncycastle/crypto/util/DigestFactory$10.classMK1Զ[?CHZZŃ xLӰnYIWz*(g8գZfx<df?_Ű޺e(D:rU(T?6Z1GAX_FJ:IB>0-S)I:vPYgI'.:ҙ$eؙuz~E%e
o_~63 -XD݇m`EbiS-cc#^)wo&kEe3,"1kJ)Opt~?cNN*
&yBeX-PK&b(  :  PK  C:U            3   org/bouncycastle/crypto/util/DigestFactory$11.classMK1Զ[?CmMV1MúeI&TP(qvǢMIz}pJsx3eShP'cC~;)&	LJa]Lcg0
u]\ϲCk=qQԹ$Sû.Cw	>+(PPy(1tKstq/ ʺUT}d̐_kFG3d.5XX,:(aFˌ"y@5CAn&ogxΨI(&"%z͢
PK$*,  <  PK  C:U            3   org/bouncycastle/crypto/util/DigestFactory$12.classMK1ߩmnWW"iś"h(*cu˒&TP(1c&$|~Gܹ###BY$[ً?qsH
Kh$d=Vb"d"<Z͆Q(5yF1Qg\XL{|VP!P"tWsd~/ Je2>|f${z_+kZ=$#
:\6aō2Z
piBaie[&"%LEPKm4`,  <  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$2.classMK1ߩmnWW'Ń`&xLӰ,lRJOgz,ք^20ϯw Ghڝ[B4ֱ;#TeShE?'&BGAIG4
fD
tL8#e
~.	yI8.t&v	nRE%e
a}p3'ٔ'R
̭XF݇CBgF<څݛ!aGلb!7+ԝQ	Xg	S=T싨bkKG*\
PK(  7  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$3.classJ1mnWWCBZŃ xLӰnYI

هgz*Ma$3Bs뎡x1eShPGcC~(vLi9ºXq~*,8n;ى5(S\HgÛ{sYACR4 ? @,U>QFC~!5}~LH=>Cp	ZehL5jZԟ.4*i@
~+O:<ʤ7Htd=SjPK°.-  =  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$4.classJ1mnWWCBT/UQP<4
%M*TP>8ՓTio&ϗ7 4ŃHG,%F+@<
@IǰePˑŊdGݽК]	u&3ܿxVP!PYO{u<=KբyT}&dwM_9266r\hVYP42	BV-Bk3EF ;
^mc)rX%GInSgX._PKd
-  =  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$5.classJ1mnWWCB*VAxi-K"T[驠 }(qv'҄&L23/o :h057n!CY&J8ՍVՁx<:׽a$!#)ޏBe7G;{К]	u&3ܿ]CCCуD)Գxz EQ!L>ɐ>urell+M!tcah#he.F{Zfg&ʷAv¿|?SFJ:25:Dϔ\ PKEr.  =  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$6.classJ1mnWWCBZQ/UQP<4
%M*TP>8ՓTio&ϗ7 ;h057n!CY&J8ՍVՁx<:׽a$!#)ޏBe7GК]	u&3ܿ=xVP!PYO{u<=KբyT}&dwM_9266r\hVYP42	BV-Bk3EF ;
^mc)rX%GInSgX._PKe-  =  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$7.classMK1Զ[wWWZ(
AWEA 4[D6xG[=5a3Lf3~wL	hSc~(&yIa]F~+,>;>./%)PB:6Wwd*<5޹|NG?g|S!J`1MZi-Sc_*wg& Jb!e3K1K*1ZOmpt]?cAL
Y^"R2'PKv(  9  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$8.classMK1Զ[wWWZ(zAWEA 4[D6xG[=5a3Lf3~wL	hSc~(&yIa]F~+,>;>./%)PB:6Wwd*<5޹|NG?g|S!J`1MZi-Sc_*wg& Jb!e3K1K*1ZOmpt]?cAL
Y^"R2'PKbC(  9  PK  C:U            2   org/bouncycastle/crypto/util/DigestFactory$9.classMK1Զ[wWWZ(zEUQP<4
%M*_驠 QVjM%yx~6Lg톡02S©(5Z14AT_J:b3C-GRX*.ѽ3:˯<tI'ԩd#]E;Cw.f/_@X}̢G0"C92}|DDǗݙ>Cx	RaDHsRafJwC[F+&'/oXP%,/# B֢ԨLŪ	PKs(  9  PK  C:U            7   org/bouncycastle/crypto/util/DigestFactory$Cloner.classM
0ϟF[A]fE!
DT9 >Y? l2*(¼70%mlA+.]{
7Pʇ?\:ÐaD/}s $,av2Qs-W>@0iT$}PKNߤ     PK  C:U            0   org/bouncycastle/crypto/util/DigestFactory.classWWƟB,Vjm 5&jmQB@[(}}+}gIy{/ <Ry4Jc
6
T&?LsyY$:d|
U,r<U	m:SP2Q?t~t(*e9..6VCXUP/(iZEjS5:ZuȭוZ%}z}bC<G\KڕJd%z3Qo*Nx/cDUk.LyiuGTx|_&^̥ch.{c|ۣxr2fr.+\|VEyilz,@l :ytf'6
u;WF?h׾Mn;
|6pՔsmv./p^<-
	:!pDpёwDC.4Wב|6N%[MKK_GW[
;aXd
=.ly*(r*\pT԰YX4lgV\tqp_z1]!$Fҁ,}\r ȣ yϣB<
c%@{
7ȣ!Y2,,dYr,y9,<2)fa9222re,9I$8Yuwb
OCUѓHolW0MӞT4EץF~4IczԲiȏQz89ǯI±.4#xB'\d:[ē:TmtbYLPyZjb)5b!YLbӉbBZ:,&B1/Mf1-ei
L"^ѡ];mlvE::To.tm
a7Z
a
VamVaa-ʌ5Zt,lnu5Y@|/
f%]Ǖ%`	ߗoL2hWTR<CZJ2zhC.+tx]zx	?c\ߐ(7?F-鏓[g 	6H,wo
{ҟ$;(?5I4ivj*tS:"iYGeu\3NzVsN:EGϛPKt  7  PK  C:U            5   org/bouncycastle/crypto/util/JournaledAlgorithm.classWWW&/ uڢ
nQl;$C38uh}JSΩ􏪽w2 o]}w kƋ^b^</J7Po:J*ѭY7t{
iS]QͰ!]|j"E}e&-CkѬOOd<.Sk!M5ȧE%LR"IKSyp_Fum57ڨ6&vF{Oh[lwhffDLj)eRLئƴ8/ENTLZtj$">LЦHتhWҚɮw[fs9jY\N<ខ'3jH7C[CCE$[JJFuP-P/My\Duip

5Ksr>WXh[Ǵ;ͤטS25u֬<Y9LkX[t4Dχ
#VXBiB$r>&RƪP{*` E2uZN񹤴^v:9_K\9nP[`fhP-ѧmY$m=*v%הc1-`gKA}T\i@M!ix0c*s$hMe4
rO|z(s0ͽ+@9줁s67Cf	,X*L`}+M@@@@H`j5k	/^`FMm	YڦMº&w/*gU
xy#51'0ExdsM%0?u7EG9\L_&`'~WS6V-Kyj)tbFeJ[r޴$
SQ2>I2?^|Kw&m!J%Zaƣ
VAUZA9L2i`F&
+D UЎp\v,8`NS\b&│Z3,$Į 19/؉get1&8eL^у2e} @! fCx2a<MGxEO2yɫL^qO1#x~Jlov~7]
e"'RK"*L'Lk
%D^T_þlin*xhˁM\!u	7sV>>|{hoQ\e[8*qW @e  6Z9Kz^*TD	T-Hp,RIkr<Be݃ӮZZ%Z7p+"Kq;	(1̦Uŉ+{)B@9' Ki֣b<wCInv91cnf1q` S,w|fg]'WE@Ƈ73LEzwͷ+%qqr}S%
E=!@ƛ屐M"@FVEĦ,Ov2҈ ?Y,a,;JaxX6с𡶎@x_v)|0F
Gq8csqHtCCsIs=.q4/G"wnɵeِk@+֐'na?PKu_jd    PK  C:U            ;   org/bouncycastle/crypto/util/JournalingSecureRandom$1.classM
0D'*=AijK"z5Coyy/ kN>0q:ʺFT6h\Vqё4-5gI1lx-#0virjkHk_1Bxrar2Km,PK@ܛ      PK  C:U            J   org/bouncycastle/crypto/util/JournalingSecureRandom$TranscriptStream.classQMK0~nvv]΋"Nv)HS?K %y>x||8DlwKQ2!(!0aHм秊KIӛDWHNQ 
hB2K(\L,H$bi>";IEH>JlBt(80AX0pfu[#]EcF\
d/qbӞ
e2]5G@ͧ\vN׵8gl%nR`|'l$Z.VЀVPK<O1?  O  PK  C:U            9   org/bouncycastle/crypto/util/JournalingSecureRandom.classT[WU&	LCV
b
	鈴
rhN&qt&kfRɻ//-%]/\Ci]<|{}w9>s~ a`lxMB(6>-!>F`Ǐ'uӰ&NJ& :YMd$H)	KhG+vLUr+n
m80M	͕L3h;Fѓآp]@y4HUO$P>bSBTS
[M-n%ϏUPS)
4Oetg=ǰ
%k[L\ސ՗wdMo	Wj;5g,kg
UwEVg|SC(2cg1Javɱ4jG7p<cI)Qe|Thp+G!oDٳYN-S)=giѯI{![2ސqIe=2ze1@;[8Uh«7c'OؿWx\/6MN	89yAOԄQЄfW.`L\WF@A+ 
)1AA;tↂ7xWAc&øP
MPq0LE0X i>`+$9\װ!Ra0!r#z C3v+%eY15WVVքleU?`6AbQTpqj5(WE|YxpBzc*W%nӹ#MQ-+?d%vMh"^<KTc,M@w?r ^EH2&9h# !b}d
>u65ȂnVc虗1K֚Ѫm
\jڑV[̡Cm=J^nr (٩6T6Z1Z-|cjȳ]QN៑>:_ 1]9PKʗ6!  :  PK  C:U            8   org/bouncycastle/crypto/util/OpenSSHPrivateKeyUtil.classX	xSUolT
iKjl
IM^
uweꌀ":"Τ0:38ξ8,2缗4io{=o~a GgEgZqspZ1ϊˬ+ъ[nmVgV|ҊOY# 	=tjPvآudMU\Բ,vSW,qUl64ULլu{D\ȕk׬rEm@Qu8إ9=ACvPifcC
yfu@z<W׵6-N!fO`;Qe9답Zk@`Gs<hWC=z6GU,KDmH&$ݩBB@DvUXy@GUU*mZKi|uIk!ZSCTՀu{5NQ&Apc[gO](\AѢUF̦B!M5/LcJ0cƖ͚[M{LVhy HNڦ>řWviT_X3#Aq*ͬzħcR7GzQѤAm:̎
ZZJ;FmVT7m:uoOچԧۜ&$I	iϧ`[I"MBjҍi3
$DMzpu`QUhAFO;m!p!qzs`8;U:>RncɯmSɱؕRN򮊣7ۜ-txn54W8+*mHdu4 y>==v9fk=V/qwi9ӳ8ki9;=i֦yKfkV'ҝ
Mky{36[!૮x-̈́h8kiݶx	Gט=+-y"2t780{56&-ukth(*AVsA:N6rV;zи](;r
LcG@hcZk(YtK^d=<,XZyht[:ҝN7{}FfV&\^KR)]5uhɹP(HVA­n!5=t}A3PNęcJҭQT-ܛD23)t-ҫd]#V!4B]s4cz2`9 Yi6J<U<X
bJdNk3b	y#M3w<q+)LRPPƗ|ꁤlJẊ0oR.-S[y#rk,[S7f*k4L'$KX-I	k%^	6J$A"-#A*%x%lEOBN	WIJI%%tI*an	WKFµ		Kda|]de1ͫnPEҢb2n ۜ`zLʿSRTr1ab|3aRc<#ȐYLFL3"
gplN7sc0!S&c`$0vπT& O%Tg`ތ=3M=N}n/K&}FE|
~Y:
fd`(I}p'jHD
<b|HGwRǴTS=837-OgntfTfҿ(/%D.xw10p	&*8v.dGq'1Lf1f`*4ep(X*7T-w2<0_S

\%3,eXPPPpu
f
7
{
J}#
`~`~`6~𮂻s2\_(X_rW
k
{l}1^se2V;$cȕ)@dxZd3ͲBfP&$`3a"{7{Yc!c>"xN8e<x2^dًbbCQ0P0p$2^d8GJDL'
3Lfp8(00+PFT'qHd072ee*x
g'ÿ1g8E 2rdxfAE1WƗEbC~.gojY@&]uoW;`:SOsF,dQk,9=gS
Eٖ+*=(*

MqϖAGW\Pž^zYD{ڤf``lr,]htY~%f3{ťi++]QWlq=+"Q+{EP&_EĶ(^'meĒ̖Q0Z"}چ+oXR^1*a*7gm$CwP&w~{ݱfiD,fˈ{]y[AKld8kYz%'aDSHq
.{O<L
2Z;2}8
QW9`KKPkzAYfD4žXs@,2k<fTYfW{EgNch0Gx QW[C)X-ҧCߕ]+&eaTdms}bb-Sl=Whkٳz+u{2lQLͭlx{-51lx#wBKd뽩O\ʛ]Y7X'ʶg,ER5n(
|+ǖo=YӃ,i...Xa~rfZG̳؈xa
}>q/i%'qJr̕kdq^3
3g-vW\lDUƣL&6s6ͼ11*jc튝ƭw٨2+7mB{#sCj)ZcWq
Qp!Bh:ڌ)5	OqS%|#HpǐwJxfI(;0i<:!tgP9-s$6I2E=޷<tɏ;F7Pd<
h}Y,1PKix    PK  C:U            7   org/bouncycastle/crypto/util/OpenSSHPublicKeyUtil.classW	[=c3vm9uĮ
Hc njġX"m:H33#lڴ龦J{"hI7ttK;3"
w޼]}w=?%pm]	$%!ሄ2NH8)`]Ե[V]-:Gn٢=EMuJ
hhk?	N~^lq{ث{Ӵ>8?'@nZ8̂QVȻDϨNtܲg
nְ&P̜Y0ٞc
z-9-kQK7]Yw k;˩JqiٜCc7&	uwAFqг9Mj8?3Bi3޳9〡:GN =SuO,SB4;3\(HVjҨVo yXR)f֝Qdl8NIJ<Ղj[W>;_ԮYAJ䥊~qh씖uҮy9aU43Yq
-:fg/=QH]gǻյ,0I93Sĵ_PG~9n^)j:z&Y|:7jʭTSWfrK^S7YG!HՍ!j
mP'!~q|vݬ rttDRRND8Ս(Z~6E-jGu4C3n[Ssz~85j9fOhXIj:\yDǙHo'-gOnsoW]%תh:fh|wd-sZ]#v,
)i:Jvn"qm⚷{Fj9cobg~%?,O47#W^Oqg'ODEULEDRS/֞Z.I-%q	{z ;lʃR0dZ^T
mK]Qn^ѯЀ.iU_ee#kiFxnvkD[}(hC^nO>Ka_M~c5:5+c|,_a޷!-j|~`W꟣w%EGW
ItaڰQAviS[YA;*؉I<Oac[|a8	:nd0,Pn%
:RLx
lU
v{
O_`^*-c2F{ehxele8'c2NfüIqS`ÜoeQ>obx;Q-dxdg>'O˘ Iw<oZ/]JiV<g o4[o7ꪹLHռ,r!_Irsf:[@t`mv(Hs喝V'EfC4鸈220
Qfy'TNf[J]<V£%XoΑ97`H,{p"lqZz(ZWSK"Jx*4dq_N>cq_
%G+)<2D07JA1x1#qc`Úŵca9pfÊ-(bl q]#B7+4$p"Pgfa	Q4DB9$u?
7(6zTd&Bx*"sMM%\{I=Hhi4^Į2\Ax
AHc	_i"?0SeLe|oߝ[<,angH}\]LXbCeXُRJ5󪮄Uʰ+s	1t)7?_j߮wͭPKӸ9    PK  C:U            1   org/bouncycastle/crypto/util/PBKDF2Config$1.classA
0_*=7"( "z4~I^ͅPb8f3y 0`*J2TTZ(\CU{p	a[掮a.8G0ޒΗd:܅a'ungG<:A/:/PKO      PK  C:U            7   org/bouncycastle/crypto/util/PBKDF2Config$Builder.classSmkA~6/$$5V[k.KHEh#ÂOrl-]ۨOb((Qyb4ٝyf7 Ɛ/fO'bmdَðl4~;:nad;ڦk{=E;tAlS9vPt#})\swuE~nl6ϏRzy@]*&]ý<`(MR_F54\Аp3A㑹o
l0Qҿa͚pViD<𩈓w&q_4#dIJ$<ngQMen)C	9
ܡigw8C<\;y%'.JCJFJSԌB
'TXk՘Q"FVXT1#:]0P2XeW;a2HZ)D% i3VNǄWXv$plu/OPKIUn    PK  C:U            /   org/bouncycastle/crypto/util/PBKDF2Config.classW[g~MRRփBPC!Z!DjG$KX]vb}[kڋCikvf7\!<<|3|73_ jpÅm+6T](ؕYuۣ]}X1EfZǢ2X['@(ձ,6:+)PU5g+լȩ'
ݒUlSIŢZHV_bRÖ-CƀNѶh5+IezRaaZ5@kto5hjkG^Ak
ϵ5m\,[u=Vfbv|+ϳ`6k/۶lV<Xg;b|6:.U 5e&IXӔE-RZNĕD$3VdӀ%,Uf9E
:(3}e&HSc:^|0.eS[:4Mxz0e٫q	E^UINAMU򷇣]:7mh=C҆iZӖsf#	NVO?d3*8s<2!CU*o1S0js2IO{h=欗2Y `
>"*/JD@DPD"DlQ/bH7F"'FI!yO*9,evNPqD@ilSlzmD_-KltZRu9و绽@:\-o&9lTw-p[{4žr[YzⷳBms4'v35蔰nu60ld(c^61ϰADT]<CCȓ#JpHfۣJ-.a1	w		^xRJ$)m=V .a7ZGhEi4F4~`x݈!pa$ó1<^A#^	/2.{ֆPo{Ў7bxÃTfÇ,	]$u]I44я1zwS"ԅ5	Zfز(#3RZ %<ܝ
_$? -e&p&{MDï1\/C8.Q  76iy$}#|c	\y"qJ}Ņ!*-S{tXPngb|<Vh/)Hd%D'YȰ;~֜~m#83q
qS~nJOM9)I];-5\ap[6pλwﺹ/Us
f3Ne',;t.g|m:;YLCԺr	PKUJ  {  PK  C:U            .   org/bouncycastle/crypto/util/PBKDFConfig.classPMK@}{KY"6-qWҭ`<QXzǼ7|{p6CBv'P'ąr?ٚG)Ji
q=[bd&_rJ%jଘ;].4rf:w{9z>VV10I+d|:QC@!ر	M3>&;-V=({vDX}D6#1ֳ4Vk|PKUE   ~  PK  C:U            '   org/bouncycastle/crypto/util/Pack.classMOatK-J E)=T=@bb\$&5WE{x#ln[l0;;;^_ 2c $2p%Dv;mEr<㑡9ٶc mܬЊ2Ʋ\;f߯*FP)?VZ|]z)ga~3^1jVkemW*ڕV_o=HoAY+k_hŃ}ppnsä>`@`$aH ?%' $RQ{ Sd̐JY2 3G&Af[P*FizZr`f:00j;7= 
Ԧ0LXU")9t 4pF<
8&t,yq
cɘ9
l/y7.n!lȁw}.UW^Jaj|NЫp0t+ZIi	\^V.a%*-wUk$FRbjj8GB(&)s{1c:om5h[{$&Fd\܈'qd{JdJ<c2ũ)td:1ODeYoP
.6SrJف
.2ipK9
Kb

+<d,P:}h_=-+]0/qޗұ6^{Ȏw=ԇwN9ѧf	{oAk3KJ PKap4    PK  C:U            4   org/bouncycastle/crypto/util/PrivateKeyFactory.class	xd=k-0 1		9dl[6+8BZ26HB6i6sAڤZNhڤM>KZ YɒlKE߷}o̼wgVɇ"0NL%{ō{XWnlI	4}H]P(
i}n]-:zQH{ZX
X<!ڶ3^RU?R}[~v1^q3CA݀ֆBn2z^>UZbG5AgP<+:#>U`65CnKy$kxB$]Co0@NV+hШ5v&P@@Xw<ԋjrkS,7⋄cztUyݫ",Ú;ݾji~<L̉yFc	hSOI^IMH79(%
.g:̞`Xo_U4oW(ߨ]bjs3;jˆJް;֬B\eO"H$=U]yyyEWEeU
&Z7{ɝ4Z_>gwZQCdH}@u~Cô0)j>)sF[gzڣz{g>rZA{B Vc7tm4K{,ͬ{&ڱc-Г1xYZ.镌
N
vOd
έSLv&J,<I۶,իz
gX3LDP;hoVgVnmܕ
zxm)3Dn(mw.f8kA,tU&!ut{{<g8S{0eg1t8
B5E\;bGAH{uUE̦IÑ2fx'	A"z/0f5٥WMA=m?68~HY3Mx!dCR&bo'5wzzӉ[fp*MW=qXrm;Ѻl3*n5_ʑу!:M004Ra5DT(&22Qt̠+&S&PyKl$qfZ:	DD$%..$,"*&qDKbĥ;%vItHtJ#qWHtI\)+JP=$4$|t4M=ͩL)% o2Xc4rjB^Gj	$A2'4fq֞mLrw3uS>6<J~"e4HjmA=rE^h]xMN.9ZYN5h=L8$mr!i2(Wqۀ\=Is|1o|BLSYߕ0rܑ);S%茏5oNgw%yCo3upLݍZ
o
9252{FvINƿ&mwg;|	~F+-ib(c3*kk*:zF54+bX0݊(BҊ (1+X12130e,eXƸq!q[g8QX0B++Q+	I)+ӌ1>bDÌg2F`|y+f+0,xъĥO3>x
㳌1^e|×-_a|u7,	_f|5,x+oǷ,x?T/)/͇/(8$1W'Q1]AX\/+80N2N7ⷌ?LGz`(Tp^g&<,ofG_cm=AQp+N0666 Rq#Əo\Oc ɘlv8Wbws#+*O,P0())xWXaq,;xD6pPv$3rnρfwGh/7j&XZO
ZWc<?\P:,6
aq#n$)l*};c吨lR(-+0!ڴbH\޼)AwOR4J45$h-#xsՐAW]躔t뒨8Ya^D*;ly@N?|[ސXSex;]b9*9;;m!&">
e1ے>GPLstm`3a= L/c8,0,NyHt1d\n*Xfx9Hwya96;L6+PC\LQ;c57cľq11z"ȋ
v;$vv$X.4b)NZ3F,]>*=^e>^0*} .=aUb9dM?w˪a`pWc6"69,6pl>E#vc[>
KDc8"l<zb
*:cX0NQGZ8X9"1˦!qecLQ3.=HG-ߘJi~js?%Ŧd86g5{܉a^id~f|.wZA͂=1n^Ԗ7D:爨xOqq,>b[%ODĀD_8eU>fAI%/qÖJ	B)U%9s7(O&'%% BҿzI,X0$x'$sK1=c٥~ilGPK}Nj  7!  PK  C:U            8   org/bouncycastle/crypto/util/PrivateKeyInfoFactory.classX	@\v&`#0,1JF[\vd죻ֳHҴZ[z7bFQ{Z{߷}{$v}ږd7gOz$bo>.-.GV\ry=?|f/kڋ/p$oۜZ;Z9h40֛HZD#1նh =vCU@A0:4kmQ5"5zPz5F7w0z@S̏s=jLoD.1B*|Z$th5ַf-473e-Hh`sFГfOȝdlair/r<\n8G7l(,/X:U坘ˮL-;겴q%jUVUUj/7nȠjgB,nH=^B=XYuUTvUVU[5UUT
,8p5`P5VX`!Dzܭՠ>E>~ZC=QZEC<;}r$e^uh`r"^UZO$|
a~`#Viw6	1Oub
w]{K>&VjczQȅ
rkeÃwׇv=X!>ՖA]4If&枌~Цڒcb2zRweyzjH
C4}ZPz1wNo{JI&ʴ4XAww{]RH(ݻ4Z@>7ͨ
S#bb	5kܝ5ՕkIiZJijencu~?3K
zJBl6ht r6dL9ahfw٦05Ry3S4y¤'̒<Np7eҹgEMש;]L
oT#3fN6=-:ҊhS6wjQJ|E3HƕLf&T!C˫w7@IM]knߝ%ΐPbDGVb[%$%
$KI\"SIYEUMbnvK%H\&)+qxDĕnDHBJyMSn8Ԛf ꉻi7MՖ&7A)
Lӷ0m9}|38fSsߝ}bcigQsT2 EYTΆ~{sve!gt˾W#'Ӂ!]&
Ok[fk҈9EZ#:-8{ӡ4gsڃin4ݍYa.Rs#ÓM[_uty$Ww>1gݨלYPM
JYc(K}e؍[i'NmN2eXPưPPPɰa#CC5>owL8@.؜!ey\N8qx׉fXprsV0ǰ|5Ӊxsb	R"'V#N,:?q qdN	'!~}a܁xʁIGcx\O1|3utxs܍G
%U +7\00Z%S
9

nsPp#Wp~o,[7O3<6w
nW~c0U%ïhk+8/3AvԄ?*xw}1<g~+ßkwgoxᴂ
yֆ&÷l^-
(UA6:8RMّQ!."XZ127畊bqn6'L^6yqqq\
QqȍqݘhJmTvP⋋k8m[m$/oIZ[0ecz*ba=qtal	,M~c0xl$􌉳#ea3!ccLl2¸8ד7*ĞZy娰yGP0@~HlՎB0b:ϓBHr\&m.]yCW]8'.V
?
Иb`㸙e8ngy۩TRRO`%)q㢝97Hzcbw\,/tٌ]/K`Ĕ52RV .V/Lެg˘hp$K!8Kc)A8jH.NI8BP	Ecb_(bOx^Խu%n?	Ӵ=I視B6&i5͂tv٦|zxv l/e*|r$~y2.\ù(.[$Y	q ڗ݋گt1*6tb#}`y}_<1o"tPvCǅAh2R)ìiPKĭsC
  $  PK  C:U            5   org/bouncycastle/crypto/util/PublicKeyFactory$1.classA
0j.G "z4IR!Ws<{/ LU'
NHX9pz!ʧ{tM:'_H` 0$wVZۜt+avV!P-0F2o
5S_PKhA      PK  C:U            H   org/bouncycastle/crypto/util/PublicKeyFactory$DHAgreementConverter.classT[OAN]H(hRĥ(-^JYb1qY6[bR$7Ld[e̜˜ dLNu|Yl̠+K!Z>c"۞oئhl5Kn)(	_C\WvBTO*xm+!jٿWf9erlnE۾(aqڎSͪix~QhgFi3lS>0=mi`÷&}kϒZan9g<LZ,84o ^ZU|5]Vwj5'XZ\!J\ޱ[z"EM-G7EK1=W8z989r0$'ւ
+pTk6]c(iҵJoJ˙jfg}ldfE.hu겭Nԕd01-s	(z-cWоݲs^Dٻ*BSщa$\mq$U0!R*";AS0Y#HKpO¼k:$<P01d$0wv}
&X-|<A-0֍+Y#m{OЉNV?)KRЕ$'kXar4p&4UÓL8x1FIc9rcl;QadX'nrps-B!d_i^&A2:³Fkd
<d6B
nJu,PKR!    PK  C:U            K   org/bouncycastle/crypto/util/PublicKeyFactory$DHPublicNumberConverter.classUmSW~.ܰ UV[, lb-
AF)}l6e6kI%qdP,4!J<ss}?߼,lA5p!&BM۱[rsՊNMz!.DީcZb!A[^a,
GX.Qf*3ѦQˆoN@=bC
SclW˯/=3]b3֪TShv%/PF3WJ"?iujiFhZ|r|{&CTw]yν!Nskt+{gSǸ]m7 P]+Ϟs'I/	l5{u<ðt:[kJ:{ݕӭ(t6"R:c9qq]8pUkjeSGYrLl։
ϮپG̰k"RNOϪ6K>yGXaYtA?(ÒW6WoDP+5oO/艌s`20 iqC0D %bVFs2F)}&#	I	nJ/$|&p /A2$rK	Hm;.akRRB$d"UnY|.(R%B98bjP0z`>p{"n # :(_YaW#B2Wx-#="BcKRZZ9c0H}=_o[]&GJ6~ԥ}L>JTJLV6oD2i$48q#xia	h-8+䀐Cm`xY*A6GcPK|&C  +	  PK  C:U            @   org/bouncycastle/crypto/util/PublicKeyFactory$DSAConverter.classU[OA.]Xr]ZԐ]6[B*LK*
mm993~0]o0
wANn4l=0xhJ"n:jjzysMV3CXiC7#C5=깪[kX&CSJʙZ^S7+chb7nj֑LH})fms0TkaZ"ZAi`%Ou	qbk)YթOl-rV*.ZvV!GCyP1<o[sEhDW%:`62k2GG;GG'GG7GCG}R+fTDY5R 񿖕re$m_*"nr\YZ5S^Ho!Ldjus)z+|ADG|WDF	x @BcЌ0ńx0%a sॄA(f^IBX0%0#a[я1\}! MSciqtZ%\U;QʳsᵢCtx)e*~i]z|(?-}?R9ɭ0Kr~o=A#.СW>. 1l]ac9hC:')vl"(b!~%!G3lPK\>%    PK  C:U            A   org/bouncycastle/crypto/util/PublicKeyFactory$DSTUConverter.classWwUM5$H`.PLBWiA
N!$2T⊸{?szLBӴ߽{׍߯hŨP
xƣ\c|c<9mdnV
x'
MBIT$@R7,	r4e[[vITIj4fI1ԍXuСH\T2f%(cISN&YZLLPnftZ<hsa#eFnu7fۦl{OB)7jBfи?biVʑ
&I-ͤ:G2oc)uLIlD!a=W?k154cfXHsSZ<\iO%T뤿]
Ki$F$QSV\)kt4Q2Й%;hq$lK~~µ9K.K@̆噜go#7{oM?s.l?`^`6ƉE33j%dBՍ)ײNL]쬬ZY.5b%9j_C׭48FAUbuߚv.γVȚ}'{Wkp"irky=n*&RZ{R%5[*& ]/CQIYE`=
'K @۳[*ag8wz_mOB*[I%RG1eM~-}M|+"lǒFs-ް
/UH%_;25ֺ)#z/L1=O'@+pShiU5_X<q$s+y0ߟ״Zz,+0s,sKyzɯHBOT&A1~%Zᐂ
(Pp;F*
5p+XPA
UxPpDj+G㘂u8҇Yk(T^(DQиw0N؋ L8'#32:3b8щ$(cOy`0<2Ep!#O0<-2$/@!%<#c=\!zj񦏛<7c043WS)~Zjt::UBUO9}HFi$Q[T'M_6#F$.	|0O.OQMsPh1ëʅ?E8~x<u^1	|p	~8ȃK3tvq@	s(*x5`;ޒI|(ہx޲)|(F0
ʙ${'p+XF-ĕ_Ehޏ34,_@|ڮ<t
TޠPX$ry
3t<KiJ-{;m/T6p,P[VUMU{믺UlgBi|os69+<]UP뮛ėNHeW'v~rqnL(PK7)  b  PK  C:U            ?   org/bouncycastle/crypto/util/PublicKeyFactory$ECConverter.classVSW-${
jծ-U,P,!D@*~-KXMv
%S퓯KBˌu3Lu:ft=s?)|BHBk'oJ{nJoIe[lDB=@]q;]j:ԵLg8;$aFK\c5CY,q\$p4H83l%Fn.P	m̰MZL+)ǲLKc3$쭟
\[,[ǸVaW6}X0tѓE{YlflsfuUmjrˎ8nFuY2R(zlzbLPB?(;Ysu%m6)mk,fv5F%Qv1laz+&wZxa=_
5c6
ǻ2Gnڱ&hq旃	/=6R9:5xɸ~01ˮzhCSޟ~"zr0%B3|W1:_Q&ִ% 8Hp9	:	^ 8Lp(a^c}WKCJEEqo@D7B&lI!v9GMb| Nq_>GjdZ`ws2ՍoB]W3Z__n%3[Ҽiz}|SʷzT n+r|SwmѢ#v\P]xY6$U(xE^b\\QbBNL)xU*0-	+M4n)

!/ᶂa-!D`)bN!UpN0F0+DZyQpYq5NZ歩jҶ5
$nfy犑_y5- V7B|rT?d"]yB,aqxG>Ț;gySZP+$xn-ރ#bOpP1|	\[(8|hr iMj`>.irp0D+ǙeMUpWq8TN##ۖv~YF44R2.Pi
>;'p.y!8Ix	5B{?M0Q~OЍmx^[ mmmϪyK,ᛀQPKOD@    PK  C:U            D   org/bouncycastle/crypto/util/PublicKeyFactory$Ed25519Converter.classR]KA=ֺ}<}0 PRA>$ƶ;kЏ'ЏB3p/3sΙs+"CslփC\ضT*e2S54N>ŵ
_Uڡ-THnM
R|b3r7~6?){<?d=YRoٲJ<2&pڨ^IKS@̀a`!:걢n~Pn3BJ
Ə[te_~-UxM-h!C	Qc)71Ihٻ\WeG(%C-X!AijVrl51,YPzA|m	3ML?hLBK%:Q}l[,Q#0 ]}PKQ    PK  C:U            B   org/bouncycastle/crypto/util/PublicKeyFactory$Ed448Converter.classRJ1Z~yBZXQZTDAAO6ʺ+GSEēV
8$399y}{z`c!ɞ1tgJ;:'6k^-bH
ǑJ-\a*Óz٭92:ÚTyٯ{N;AtZ߭z[ozXs'eO8D#Ba3Fjnd@;˗zT30`1kd3GSoCogpt)nwWBp/Jm]QÃ/XХCB&6aaD
C&1/ɐdPtR>̟yRti('YhnoOg$ϗ1ؽƤT6@Kh%JQIXk{PK8rS    PK  C:U            D   org/bouncycastle/crypto/util/PublicKeyFactory$ElGamalConverter.classTmOA~V
ǁwDa
EJq{,]&(IQTH3;??~XB-6sбf9V`eg'e?).(@z>À:senuA'	]$h8ryv7saʳrI[t̒)\O,d@q<co.Õ/+]H:ul) o/N/s2$W:\~:Vùfb`ټ(Ja	ҟZ`XluΥW-*/R
.
n
=hjЧ_Çj{Dp7|w$jctDΖXJsf6#R$xXxf
QCj
!uӻv~5/!2;
Ի9?ID0iChxjhÔRyVA¬"/yc:FIŢ1,@\,EC{4FqK:	<AK=m%D{#*x
WO'f^(v2e|ڮjcÑ2/1z8WZ+XתMZ?Pg/{_dH&0T)!G;PKo  v  PK  C:U            J   org/bouncycastle/crypto/util/PublicKeyFactory$GOST3410_2001Converter.classVWE
$Y
HVR/K|R@-.!llNs>W}⩾;
)dC{tΝ7g Q#itC$Yd]˿"DQnQ,3d^ʣ-YN)us84780Mmlږz(jIv,̠:YO/1IIN[%Q(-:	;pLl#m_ahq`'|~FA0D =^2lSSkexj[nz~~)(.maOxͲp:¤z\Y5oݨ8Y}0䋄aYcXrQeYFLoX( "kFq=ۡ>#Ca3 `2񨅧o8*u6zW@Ĵ[6,qXǆ[/mӷl}aWmC3,y\N/p`դ-ul0#} $Y8qh9xǻq8Guaq.3ᧄ[4Vm1N{7~g-ڒЃa'G}o Fkbл+M
&OXum]8١Kck=!6aB 7 C[k'*2-ڟ-<l"VS"]R\¸6\&H
*N
&I)QƧ
zqS((gRܒbV/#@m)`A;
XT0/Q+ӭjOtjq7e||xX=Bv-7
EuNa;Xk9Ĉ*mܟƷOM.Eu.]d}4O_I\\|S_;Sh2>ڦm,MylI4$%D+_I5Z"jJ2TCRI߫?6-RNದj`L/H#:GS忑}AL'vc$[فy"zC K=;}PK*  ^  PK  C:U            J   org/bouncycastle/crypto/util/PublicKeyFactory$GOST3410_2012Converter.classVWGB&lXVZ$ ,	K(
PV7PsNO}ChsO;Iܙ{;37?A5p1D&C =`ڦ7!HНGkf:nܥM5b|~qx$5JU*\4I踦^bHfBLWM 
g̢Q4W+
Y[w;eOu6{Gط3<%\5; GL?jV<=Y):eoO(^MM{SB2좷_#Zg}讶g膟 I좚,YnR2lgh~~:[ZٳU+)u2?
ap)16v6\G~TEM6TF[ NYzcg;Al`thL>jm?fs0ǣ!)7pӘY^>3NI3FǑ7:6=*i.5sj3ٟJ1̼kbڱ;x WYM{J: 6 G;G9crqq8Nr|q4SJ\۹6.D
u9Z!l=kLЉľ_0[f?	9,֮.6֠Nxl۶V;ԥ%}cy魐
,mE>;m]'u_o~Dևmø 2zeĄ	eD8 D	\¤X2dэ2"">"'0R&pS $RnbQX3	\[X0$d1\ŒqPLTmÝrYyO]6Ec8޶#NNtKom!|Z_g}_5Xs5HRj(fO0JP	>Bahbmv1
=Dw6˽O'	+_p{.e]zFRB5وy~@tPVVNDcXGQXT±haxQ(%_.S5r2JT[2ʸFP|AjccGccȗ#`}|^'h"$H@o}p/&cT1GǃrO_PKx r  Y  PK  C:U            @   org/bouncycastle/crypto/util/PublicKeyFactory$RSAConverter.classS]oA=S([kRVv@R5ARRm$&lG
dw 5Q;`P̝_gܹ vQdǞSPU*G$muC)n{/Tm_jNഅ=W(ϗ~
+݁넪%"|pC^#1C^6gߪ|Ge|Ѵp̟U^;HN7.A+쉀1_,9*-PB10d40o2pÊ}1g^*hDG{)k{	ܵN/VIa~wU<G#pXy,1tzk+6]0NJf,ıbaV+Xն5-YẉnjŦE20Qw[U)EPi9a(:\S=bĄHw?ȱS|h$Nvߢci]9ߐ~˟`Sd?
4LB7xZgsȍ\#,Cw	ڝPK9"    PK  C:U            Q   org/bouncycastle/crypto/util/PublicKeyFactory$SubjectPublicKeyInfoConverter.classQJA=k֪eOA=h`BM쬸OQRa30{3wyx}Aٺ'(^"W	ףx~'#،k"-
$
o>@
7CC&&t8r_J5c?YCN}̵BҾe*!	1⬳+ł+3
Flؐi
EMgt]֟OS'"z%3cWFāA.ՕY9e,(&=w,֑r7fMV"pszo%-"2Y3phX)>PKzL    PK  C:U            C   org/bouncycastle/crypto/util/PublicKeyFactory$X25519Converter.classRJ1vK|UI+-X ҧtf[\QbҊH!$sޟ_HH=[
Dir!sl YIf5C0p`q4m7,NM׿z@o
bOz?jkXLq}:~9Gp8Yϊ}]`Ժο4
F4рJ@=hL9zWi/kbbvwK+=Qkv#+,@ D!H`B(&u0N,;6wX_ߏ%Nur5&WDpzDw~<%_yյ'L10q%%dRL3]9g$(*=1ڡ PK#א    PK  C:U            A   org/bouncycastle/crypto/util/PublicKeyFactory$X448Converter.classRJA=ֺZ]xaVFPB	A^$ʶ+;CՕQPь!4̜sfΜ}xy`b ]$ΖUZOgͅ|`ʃfũ٧<<g>Wikvh38~<P ALs/q7b39G9bv!)ƸhVvyzEmq_^LM54hF4j	li@;
	@򻴟Tg-FVYgZ+<ү&?e ʐ*)QcJIL$Apu_t\:?Jx|J$Ԑ'(grFdHOaݟȞxEz}sm>*LJI`)b
Q2t$:OPKDO    PK  C:U            3   org/bouncycastle/crypto/util/PublicKeyFactory.classW%H4$
F)`B*v-vQQ֫ iBz}wza$יWʱhovf޼fgFC :z	u-KXzGB>5_}AmovvtHةd3;f=>kVn4Y]mf
i461%׌j5,[BH4юh3֦'X#Q4irE~m-8:]oI=l',33hqRhF+Ȅ>*Y	lHu4lx@q	԰b)9'z1))chG*NT_:CgM:;w4Ixj8 #4-	{RkhDgP|))ky]GJ)oh,UUW4&)HPYU;i=6ҡm^M=9ؓG<ml7V&2nuFUl'EۈFh
JT/䖵6l9OM
Rc-3덆-rXuv+kiMzTvPVD`˴9~ӊDF((lWǞHZАYF!Q(l1aV=Oc`8K
AKċ1Pϲ;)cZ3A{XN~+}=i8TwӢZA/M,$>ZiMק4-S}_,6>j3pp(q\"3ؕGHEM9Y6k/Ƙ:*Tr/ײF}g+wY,A[nIfV6mvD:1]&[`^n}Uq^}
TnJikF[Zʅ{2vsGu`q&kZ,~38J8r&֖=+UZ*Rw8sgGL9#ΖUJw7x>ݭK)	/_6,sKVn݋/G2}ku^`+|«q+\FY
ɐ2chbxdkcx
C3OeUX%ȐGylWÒqpxZgdlY[0#w2<GF%#e܆{xtNfa/	!2^y/gx}^WpgxkBH0-a(0277171=gamadx_콛q
bAagPCaAØ4k kgnrsPp
]Y>kΩii/.{SVgSE79ضF1(4c81uK:ƊB9IWШ̄zzJmy /DI_o.nhǗy|''^ğ[ucdbuKZ<o5m<$y$$n5=omW^E|>(ߏ]s106nfKY<4my@nnFadK'hͯMXS`WyoǣER錥{yEQs{4_/ppܜsqtqoyw0m .4~.g>C.&"܏|܃ܧ\(}}:)~>bP4s/rňW;8W%kpJ7oI+߁V$ ^I38%pKoL?Vs2K|ĿbPKwY    PK  C:U            1   org/bouncycastle/crypto/util/RadixConverter.classuTSgm\Pd1 h/ ,*bh J/&nt>}d;Ë\N3}Kg8|(TM&;we<q>lt&\wqa"vB$`Dr6ͬ8[љo0k|A.8h=:t29=w<ujt*=7>6ʡjYZԋNgjvX|F/7&Scs鹙IMMgGRb6yQ]Tcyչ;b llUM]3r0VKn5Mk:YڔW
Kc1j%a޴mRE;?jemͰrĕӝ}H=jU{MTs+ua[_3J;oߴPmT梞u(7%Rdߴ܌j޼A|tġ.bdeclqرc1%Õ*2ݯYf>)_ނ}CPԳvPr-YzQXI`)8{3"65O8'ܟEBHx[;ޕE%*J$j:ϾO;Er<f DQ+yy	#!YHG5'`_
w5}j]BF#e21؁Od41 EF^{˨ 
Dc:]؏Vb21$}уQ-8*Ac~  1H0g0`ҏi }8A	#L1H3 82epwS>OϰјQ/8TǦ2{iB-LSn2)&ZD5Z{KZY\ı&[F 5:hx7pހ*2
\
ТVh븺
; Q26/XGE+,Z@4{/QH"s]kA!ά#|_}=
̗3+Y/oo25X
߳+q^0d]_v_a7.(,]n-ԇe>\Yܸw3U {g=K2grm-O)rTN0?Mz^EEdG\g2.)4"K^fHa(m|]X7A(8J"]^zW$ta'&2UܒW=?|!He4C0(!.aG~9"O
e XoҴ92Q~ٯ<uaֻhm݌=x//D{Jl6UcyowLvnwң!>Yyoyv<p=)M ym4K@PK:Ĝq  .	  PK  C:U            ,   org/bouncycastle/crypto/util/SSHBuffer.classTKOWgSav3M[jZ&E`&3xU]vHR6]	J*=zl+	νs?uQѯ"
]ś*.3HtA/`SE` PȭT[TZN
][Kg6-տ%,7bskt')~Ʋ-op@@lQ:Sr{[w
B-ש-R5[#FY3(]afF,tlreժY1nY3moJ{c3ĺN0(T5.Z8T3*Vin֊wjVA]xi;ʶ^6<ChUt
fxvF-:MW2^̖ܽdUͮ-'^qS
5ϥ.iJviXV9}~hmMkZihAƎU.
$$-o+xJ궺`AK4wv3(.Da01(Q@"Hig4!0(F*>&A\\tq1lp@+25(6Ū	|J7P#B2$tNgqFz|f)nJsɱGH%ƓS!~(ǧeA~<pUÐN)ં	e?
^1N""P|_gn+JD2cFvggbߞcQϳ9	l?֪oN"5#>Ш}
\ PԃxNȧ%y%uGuЩBAlP}yBJ	swRw';AHw@8/%S67E<pi%^MsRBriN$|\0S\ȅ$-%-
-SsA9j\XS5Gj*"˪a?_h$B'`XF :jDԻxo&}6wz'g+qe]8'gbg5#|֞i`CCD 6ONPKzV=    PK  C:U            -   org/bouncycastle/crypto/util/SSHBuilder.class}RSPBS[6QAT@Ap8pJL	8'ʌGf/	!~{>1<Kgr}#@LgV8П^r>eT6MU(,t
C뵚VtXJ%Uk[M5,ֶZgyfچznٻ^eU0dMRVs5340"ǌ^dzԆVլQU^mC]VVR*j5fjު2K3Tٺa83yRmT4X3ӌaf5}GҚ6mWu."*7*K%tHpABDBTB`M\1Jҧ	{7
9q%j[Zԉ,#+2!Ȑ&>12z	ϣv}܄pSsP)C#Í077QCHNIpWy5nnqs;ˠwg=C.y{zx)(E@DŔ.ƿclpN91O(0}c\9	'i^
O3F\37'GZG|S~\Cry]L!~;:̺C ߔ**ӭLKAgCw5p7;
J$c#,O~ԕ>%>c0(MbLL~ADZ'Q>rm/PKwY    PK  C:U            3   org/bouncycastle/crypto/util/SSHNamedCurves$1.classrPZv*CH8JE+BfFS4l:1:C9
iGif5kg_ f\(pIK?hZs=WV4L[n۳w4>nW݆߰ <7;f.7|vu8v:f)ң޾j4#͕j4*+=^ivz4uVsrx:~aalA?˞Ͳ6N:^:A<'H
^Si#/#"F.))PQ<QE188nq[b[[ƿq5XJ]k]]>ɞڵ:(W$H>cbcqg4gE
Xe<fk'
iKx@&35DÑ9~kPoM[Vd~`+37wl%BԔRY,+eϕUe!6i!6
ZT7&Bԕ%C4ؾ,wI'`==taPK8@/  M  PK  C:U            3   org/bouncycastle/crypto/util/SSHNamedCurves$2.classRPmZr(Eʇ*PkV\aX%SJkIRf.]g|׾.s1	_mN__pppp0CMCK%		B&d!KaP$ٹK
F2ܮm
lFeX
(0OmuԚm[ղY?%/63_gMĳNQrA-2^tmVf8nLÎӪmoJ>0TpSJ&3^.rd3ܨ]F<h栆q3bJUTL")P;2vq_V92O1\ƥqeTXpUj;Mk
-˴+-qQQkrjDw!_/b?7Pf9};<6A\B!!$(Tb{ƥ&)R"R= e@JԓRBR<
ey*q)mk>hɰ	O߼'?9+*xN?xP
0zaQ޴r:P
PKSab  k  PK  C:U            3   org/bouncycastle/crypto/util/SSHNamedCurves$3.classRMo@}:uҖRG|֭@HD ng8^W
_K)g~?el@@݂-ώ̾}3}fʕ}0HGm1*Cn(ԃ5eп{]-WT=n\͞9dXP9ْX\9dXy0	CV}CҞ<P0y 
Fz}R=w |z"60P8= cM^줘ӳKwPiӠkji8!aa(}s59VPx"x|+Q쿧1X'lH~9)/P0h@%lXUXMq#2%EE:Ctk-i^@Etyc[J[.hKwֈaz=&?MjnܩG5Vȩ3|b~TT96Y#QTF%b\HbVc
PKl    PK  C:U            3   org/bouncycastle/crypto/util/SSHNamedCurves$4.classRn@=L8	^J^	RJ(Bj$]Q	8Cؑ=ȧ aX|ʵy%]G>s' 
<dKO#|Ɛز][m3,jKMXBV#T|$|ERVš0
S;dDDَ#QW\oN0a@N#aV<hkM-(G?+/5eօ59(E#šs992fg\xu٫*-f!5b+S"E攂jhXĭÞirӱ:8:XՑM
9pw4QL"B
C%[ހ^cr&ԕj
J /5m*aPODߑQOEѪ8(}@y{3STf2*	q[&Fw96 "vGSEO+D +x@F>PKx+  l  PK  C:U            1   org/bouncycastle/crypto/util/SSHNamedCurves.classUmsF~D g+2ڒByiJmEq48$ ^d)#ɔ
3mf:kT83D޳{ޜ \'{ 5g6l
z"%muMP*7MG&''	l6]`P+|ê,JY
'zRR_-/jI)`'#q|rK7SWן[fef`7hv/sI׵kRIRuCvy׫n1L
KSo+Ff9myQ)kDfꛢj__*-vڛ0yD<p@Y~4]j	#	WC$T__V,}񉦳h|!n6	~A!O>e40g2|pNP%vf)ie"J흍{wy@rq<x[&)òW8z7AitHlY]\ܥ`>h=tLMx>1Hv$ѐ'HjF4TjXÄ>lf
(h`pRSB@Ѡ
}ѐ·cV4dPp74XHc%!X▊b+*Yȡ"e !q!&Ѕw};
=ZZqkp/v&S〣AadaQѮ=M6k/{}׾4T9}p,? ~i"3op?ׯ#q܌`"ؐ{ؑmΑ_2(p_{~xM~1
j$A\۳Q}'p"pR멸GJRw6O-|1NiObm:i?Kv[I"g,=ѪPK5  	  PK  C:U            1   org/bouncycastle/crypto/util/ScryptConfig$1.classA
0Dk5U{nEAqB\x4~I^ͅPb`3	`	h]Ic	+ZYuUHek'ORzԖ@`HX;jLM[:	cd1H0JS&PKux'      PK  C:U            7   org/bouncycastle/crypto/util/ScryptConfig$Builder.classSO`~PV!hAЭ0ru8co]).m'?`$ѻ~e X@?CP| [axNPa6y
ԗ~uK]S+**Wemu
7M+g+xY,'Uw}sY}6M-M'6.u{nesi`-/z޴{KF}2#zoyȵt38lFފWNagl;P4.6K-_6nnyv0tD;aY#2n1/GE٫Kzm2NVc1
!44bL>$ҸNa3BbV9((}9=`/^P
ٴyVPuyZ!n-|뮅ibMO'!+ ++Zh''y$(kеLR^%
ca|+Noc^lCӦXBG$3HOK2&c@q -~IA V -J1X\3[P.'5>C>AJ\ eh6C&-(}W$(6uʵnƵIgx	zTPK  
  PK  C:U            /   org/bouncycastle/crypto/util/ScryptConfig.classSmOP~.NA
7
57cJį.jiIM~ѸhGL
4s{O~+:3LK-ibǥ,8Y'N$Cm[pJF.W<bz\5䜦_+#}q*cjVmW[<z/}%hO1¨gw~{T>]8LËVJI-ZW·O?i1Yڎɨrڂ~|XE<9933T=z~n&]<I}%FBf54ѻXƤ,Y,Y%)\0E&0&p%(dk	nMSgeEpHPb0sv9ZAJ%u>)i&i8\z=ƇP,@jg
Bq}* `]gs8n(ru$[H&v,::ߩgwF*ړ
ŸoPK7	    PK  C:U            >   org/bouncycastle/crypto/util/SubjectPublicKeyInfoFactory.classW	XT/pǠť	":Beԩlj@[c	<2Ppצ[4-kHhHv1m}k/652,}sϹ9yه/,Veb@z:{l%{>h/_̭` 0	dl2Mm5Mu4榫~C
!?DrWhBF}zPR_XS
uW-]o6
}~Co	?ڠV}F퐡Qq~f<iuj:&5rItkE
}!~Y\CZlTivYF?X&/O-_~o[!4;,VfEn=bٴ&zEgtt$MVY'S+_V^^ZIl6or>,G曞%0|e^^iYgYyE2afϠO7zH PTCC1U}
t{C֭)2Lwsgtf96T?!(k>;8kFwoȧFV#RwMkS`jWeUbtosy&'{4
k7?#uTŧY10Rlnm5^`wlw5i3I!_ݲ5mILfHPC~5lq`yIƮFO_2&iPO},wf]4Jw{eEY:$czb3 IHq&|݊ uwMd֌mzfcB!֮4^C-fSJԈHiŧnsSYe*3kk{{J[:Z
-)%gYlIaў=Q/iqn]PPl2v̫FAd.e#*#ܶy9
=ˢ"]j%%Q&IbDDU[%+My%j$j%$%<;$vJJ<_bDDDDD{$Z%$^ WNv	oЬlÌ+'3b6>훥Nj.)\'W5lOw]7q$3ʬMߝ>7Q"YSm]fJ$6[=Ki2w$fm}rZlvj&n3+Yx>℡7Nhë 	wim`a_=q:Q%.Qxnj/⑤dq$4fv"/qb-^sneaCzb
%̉yHst'j28`g]K	'^|^	ReV0bXðW9 f5N܂:P^'Vor"ovb!"e2Ndm,
3dx7}t~1<~8p#dÇ1;00|ԁxWЉQw;
T<)]S
zp^A/~U	)܍/1|_A1<eHo+8O3\fA|+
IMGWRpaxTi.a8+
^)Q3|#>\`xXV/2O٭;ԨNArf )I6qPATʥAo{Q~q BWWBRx!2N
N5q(~ױ~L,ga9CHM`8;6tzlEt㌻?4vfrtC8f48:+ŗpF1tL,[23᲍lgjSO0l9Ic[\15WHlJ2E8M=rf~WȓdV).%Oڃ.yؒ2]T˱jOK<Ъ,qFrly<<ͱ11/gFP6HGPa;+=*d#U66s٢h⁧	&"W0VМYDqodcOZIIq2k`qbab2c:((EN.Ja!
(/aAɳ(8r`q	셔8l$G%T	TsOPD+q념8ȄLċ@D4`5l$UXE5A#Rx̷^ؑAo1]\v?V,l0.E9Uv<hy.[yv{bdIYk#
w(y-?SyFv#3?Fby4?#ҒPKP	    PK
    D:U               org/bouncycastle/i18n/PK  C:U            '   org/bouncycastle/i18n/ErrorBundle.class]OA߁.-|XA&^(^`h!A/̲%fwȿkg"5&M̜3ϼd <SIwz{mc}}xi5;'r܀r?Y+RQvtZׅ/VY*Y;>[G"}ϗSqD}xa9\KtuyJ5Ng(z~<BaV ]n:^&xɃK:r@Uт4jHkhᶆ;dqJKtz!_*78>^)3Fm|wֵ$?Nϸ-[^^píq]Ǻn	}L44Ҙ}UXRa%C<
HUTx̐:ev=HKc
)7Ot:OOs
D#9=3֛TzfR
P4"tiQ-AN +6IDو^+q+C6Ogh6[HP6<ICNUSw'զhUlz6i	PK $  4  PK  C:U            (   org/bouncycastle/i18n/LocaleString.classJ1OiU[UQkApTHwYj:
CʘTO.| JLV,*&&`}ƙ< xTֹzyulVέc3a_@V;v$`1|{qOC<)N(}j]n5[buD	DDڄI4(վg*J>&s%h?{R'6u/rïʜz%ȗeA!C>&-X(Zǔ:CѢXaf%VY
H	>J@Q5j(`1VZcDt>KH	X.}̍ⓘz"R'U򄙇;PKac    PK  C:U            .   org/bouncycastle/i18n/LocalizedException.classRN@=#`V𭀒&42֚ښ*U~e-F0d:w;ɼi.CL~S0
wJq}cCuP4 Z"X\mh.<ӱ!{[g9:YB37m-LFVkfh|eI$%q]熟ZPI~书mTK'YGߙ<L`QBLPTcJ2T82#H*H aJA3
FM`so^X1%г!ÊzNZ:-!B8*W^{BJ+@:ەI=[Zhc!էB7+?bKG0=^PKp.#{    PK  C:U            >   org/bouncycastle/i18n/LocalizedMessage$FilteredArguments.classT]Se~d&˦@V$'XZE0M%%fLvLxEg*38(Sozdz
Ð=<yǿOxXCuMҙdw2,Xm9=d]W>SE/'skբ9]T.ZTJ7i0KU:cmA-˔ Us0?@j@ׁ
%TJE͛uM/31f3tk㪩EV$aFTkՆ^\/*YQڕI=y1Aڗj)R&,&O86Wk6\(c
a%˺y$zdtNB8+Yma%7RԾ3/$8axDH"D8'⼈".2gN -a_$궛Ξ8ZnG|F"F#i&ֆU-vl$b|1P)#IF'Ct5*wL8)]t 	\'3,'sxy	1%ɂq$$&TD*ꆩRi|䴮TE1`ޤ%*VQqΈ"}06}6}fI80',NY|=[*|HR%ѹ1o AI2ލ&rxX|2Xl	Y~͹-P|&~B'XXΓz+m@0"eeA+GaKHm+<_q>&z1<tgi>{aSMhfyi\uRzd,
ªH@e3aK~x6<:):m	_)bm,vPG
V!䡗&u{|D'9i%*{K|iF$b}!їcxgAil^=t>w`p¯ky	;9oHćbyK; <m<Gd'* PK9    PK  C:U            ,   org/bouncycastle/i18n/LocalizedMessage.classWyxgM3iؐ+
nŰrh8$t$lZZoUUA
6BQwfH2I!޿}fg;	Ej$̓P+NB	$,XBP	Ih fUքt%ոfAeOuc9_PoUnZ&Mk=VK[ǂY33l*LZ|Њ%,J	}uC7o0U5و	\ Twlճ}s떶7wvoiln~m*ºdeoݵWMmJ`ӖZ(5dMQ:Rgy*8U5M-mP svkVMB+AU"/XYfnڮQAXZAlKֈ'H%%BMP	6lJ:Zrx#WҚ/L[,I-I*LwɦFQj߯L=I-dy図֤nꩽ(ږ5L*}TQKv`OW	|KcбtF3ZU4(ޤe2`Ac#ʚz+ٯrEL2+_rE6?!8QSe`S_2kW3fBkW5vr-<;Æk95%G҅LLqrt)LDgm>_J!I"X&b"DqR/%b"xm"]KGk0uE%38WJBvJhŌfP5\Zz;ֆKm{9]u!00oBU&qV|Fhw{' /
3Nޮ%)5nuN.y-y]uM.ev-fehuenu2~.w1tWtV
Aq}Ϗp0kg^}'ϭ{Bt]%
1sRDw>pӯ+*=T=.I\
wʈ -F&=LhdkPMxL2VvQ`2v2y%d52V0ـx!^ǲdz޽AFoы7؅2Ǜe[dwXh=2nL2}2VLxx>Xf!&f&G|ԏ=x&яG.0k5e019K~vx̏A|ڏ!|u|crIΏF|~~B O2crʏ$O&g	&2#<8}iMS5j"KD9s]Nto9ݦڿoWO!)<Zҥ!/C<<*XkҤX+ G9n
@Nc2d<21zcP{GS΄##8CD)AeBV.?@?s}/<r71 	?'GqTq֣qz
8m,>Bd28hڶ+ƙ7rqNpd^ZW IB(pp--
)[ظGD".ř@.r2*&c?jZFO1Q̵Vb^nHr:P~^7X<oZ'raԆ(S|.S|b1
ECHl\>":1x,,rb8ߌ⯧8NNp>k}*	T\BUH\BQY,^<}MQ>	诤	{/ӳf*N7q[eSQiw7W:07 
/u'~ÓAӘ|X+*bW!,Iu%+)/(^j
Wgx} qTi]O875cz#f1Oo-iT<9|wA/H/tEkFZ/꟱@@'jjkxVbMrm[
zaӲvNx?>w_;]gy5}38yZ?-v`cPޜqGsm%}m8f1*5n]99USR"\ E@5w4wf(HO!4[]59<e?O*l-">Ylw,*msyCŧmyh0.K.,kx?Iz PK@-	    PK  C:U            )   org/bouncycastle/i18n/MessageBundle.classn@ϦI:)-I6Jh,$.E\P|Zp\g2QF[
A\ <bGjigߞ9#?}>1	)cCSCP+ϫ'tOO#ZFqw]=,}-dXKЗ=0JHc@9b-B[%I|K
zΉepsĽyΣ')"cXkN{Li3B¬BB\v.x$P7:`>OV;1
7z]JX:R8L:u犍1]
Jb&P3anX-ױi5nnC@u鋙;P2Ҿ~Eؠj"&2/U*t:CjChe	O]ZrлC^y"q-W4[smֲCӴ1HØmY۟/'^Zr߰7PK0    PK  C:U            1   org/bouncycastle/i18n/MissingEntryException.classTKS`=*D1*jUDA@V|QDgU~@L:I*?8tg,+g>MK)8~sɗLx`3
df-
T{%Hamn^h]v,	',k0mF0-	Oh0<s^GX^8da*Ř	-y&-b$OZcdGs܀F|(LeFAlvF(%/r_ ʺF^xPZӴXLI64Vڒ ӉzR%'g(Hlޥ;q
e6x,tԮv@
[re[s#Nj}Z<Px5JVeqHF2zDv_Xvb)TZOvK^mOG|go[<VlU_q' `lVoHa^e27KFܟR$,Uጊ#"{Th9KD`Hql3N<-8Q%q-ƌϷn`3FqǉV(kg_a$a$w4Ezb\5_ƤXFFj*[YUzd!x:^;Wxm%vJ}pvzCbvwig6jHԾ/8`
cUb?b<ygVq3D*nq?%sj6#믐6RmyWhWq/PK{W  z  PK  C:U            &   org/bouncycastle/i18n/TextBundle.class]OA-K,E@/1Bx!]A+,c3diUzc ̦	a9g٧yO2/ .aB	\=|KEc%B
_^vFͭsqiɾb/"s"S\
k9fIr$P?Tr S<Yؖw"3GaבQ/,>`iv	lڇ6=2kL녞e"NHVT8pL9pL;(&T,TθS;cZ>/YW|?zqr"Oy|6\s%{\.w
weX*+:tX-c\ᶋypGu6\,`nʾKP0ɨvݷDB
Xܤ@HiPgNPv [ߠ
EٔK`-19bWljfc._"
mzYZOCxzPKջ    PK
    D:U               org/bouncycastle/i18n/filter/PK  C:U            )   org/bouncycastle/i18n/filter/Filter.class;o>F|̜"Fn3(A +,Q?'1/]?)+5A9(]?)4/29$'U?"O?
IAMa@pIQf^&#+0u123t3h PK]~      PK  C:U            -   org/bouncycastle/i18n/filter/HTMLFilter.classNA.ݱlTE)
BK%HblR+MKB}}oH0xS'	|(1:993g i3AYAĐ9h:2222בLe%9%))+tBlI7_ל<MJUȍƝXM~n;aqo}*QЊӬ+ew϶*0hVvd>ul˨M֍rXWhYwWLimfɢ{:
⪊*		?nNt^(K*w !.㢆.iCŤap~#ur]u~Rc>6☥'֪n[qRHi_ ٷpp+x}k?L7I1J,&#mf%Ed>tc_ɾ풽vuk:խ"(CmaIcZL*ʤ0=bLE><)g2IASLU?R;vA*t/EF p$}DPKcB  .  PK  C:U            ,   org/bouncycastle/i18n/filter/SQLFilter.classn@MHCRĹJ(
-*@Z!rq4r*V5^5ؔM*Wx-g2HP!|,8ⰊqIGTTUL0Hz>{^/,1DܞjfyyTx<j<y4y<<ZeޢϠ7{oNzCb2
tֺm܉ߪ{={c+#v5}k2mf\31(Y;ˣgo8ec}
N*(8͐>qZ`Zg(@M)D5pÜck8=s(FEGGG$.oZW̍Uشp"QOP^8pqރ7wuSfWLy/gX2|%ƈ(,ayb/xEԈ]b"r&#?J|,τ'Bȁ%@L	1j ${TKZQ1YmoT:FI " mQPK#"    PK  C:U            /   org/bouncycastle/i18n/filter/TrustedInput.classmOMK@Mf65-E Tx4]Öt#?bͼa1n2OV持\0x2ER\͗ )RVE2D;Uو]5צQ2L.$O&?}, A,F	ۍ1^Hwyb.q!͘}aa=y[62B/{Adm:iڼ_'PK}#n   w  PK  C:U            1   org/bouncycastle/i18n/filter/UntrustedInput.classNJ@=&Xۘv.MBq%.Di:)a"D?nyro/ 0a%+TR3xЧ>]KU086e
~XYU|Q5*˳._R_*]7k-ݨvE߅3/{v<Xv3bOH>1mcRa>c7="z >=]gDt辋m8bO?
| PK2p     PK  C:U            4   org/bouncycastle/i18n/filter/UntrustedUrlInput.class;o>.F6̼;FtҼ⒜TLC<̜"мϼF=T5303032jd%%$'e&Xk0 ✟ʠ
 #1''lZ86U0  PKaRQ(      PK
    D:U               org/bouncycastle/iana/PK  C:U            )   org/bouncycastle/iana/AEADAlgorithm.class}mOPsAAP9O{(͹DeC⫦20M.ګ%{?Cm?66B]5s6k
eH%(6g(=CwM*uk>3j'(^"-ZTz}:ے<߻|2_g*-)JQMyrFk6mشKCE4^+;*ď?ԏ|Y8t8Zq;ZxW»q[_[εkk]u4Zus b"@Q)&(&)"SQ4Eb"AHQ))2Y"R8
c "v-c[@kqӻi2 .`f^Eguty=ɼgB3?E')cΣ%f2	2z1DG
4sg~a~2oߠs;oHЯ=zG@n}_ PKD{     PK
    D:U               org/bouncycastle/internal/PK
    D:U               org/bouncycastle/internal/asn1/PK
    D:U            #   org/bouncycastle/internal/asn1/bsi/PK  C:U            =   org/bouncycastle/internal/asn1/bsi/BSIObjectIdentifiers.classRPQ+ʾM*"TbHC	྽eFgtsZf3$ibI&N)TB
(ԪPBgjWB:F}NDBP$jI$#R# 7#ʏcqnqa	~fy۱jG\h{[xqh8ĵŨ2
Wf߶`=sko<TҴXb<Q^͇XBKX$jbk+Z.e	3gnjQ[yQNMgWOgT-ut/Oo-d7-+=iPwbVj;\!ng-ƶ
'^ضL@oi^
3lr<{Ӷe'ێg#_DfnFt-@
GC7wW~zctuD]:.z> !`a D@Hi*0\LSu4Np9`X %` .pXk: x<O )`0,dZ7_9j֎E-Gf!2d9(CfHfLfBfRfJfZUqaLMfT$#jBq;WzOf`OJ.X')jAknBBsPE^3h,PzR6F<fwǅJTսI}	yy
yyyvK+{E>xPKH  L  PK
    D:U            #   org/bouncycastle/internal/asn1/cms/PK  C:U            6   org/bouncycastle/internal/asn1/cms/CCMParameters.classT[Oa=K\RP(Z,)e,nD|GoD/>:[A fgΜI~ 	+)J8)k<g
f%Ԍ	H!Jz`B9IiPǶUt4KH-}\s+k$/eNwHf5޴/gN\lPM]+:y#X"3;ª7$\MY3v0P@!n;ئq0/c<-n&M&:uKš;3lK{d}lmݠ ]o_)%mR8P4p)pn:!┈"Έ8+✈"ZD\*@IQL=׬HT݄.F3u5򚕋y?JuF=e3{iSGKϢe4Aь:'!ȸOF#l52!h*CF}dcgA5A	0&F.aHB'%t-		݈KmTH(-Da>h"oi+GcDg
UxZP^VeK.%ud-b¤EUc%j_fHo#-c6j4ວ˸7w{~
|"fE!VkR?^,RU`;s܉jHs8Pe1n^x@#h_
V0{*xP]NȯDO E],E+Xؿ.DzPK    PK  C:U            =   org/bouncycastle/internal/asn1/cms/CMSObjectIdentifiers.classR@ƿpiM^#roE*"WxK@vÓ >ɌC9I?}ߞsvsv_~ BVFk2B2dh(IB螄h8	G;HhiRBEl%OIZƴLgQB !L;qҫ֩
}9L15fii	Z./}}	fʰ/K+_yFJRQꎢjtr|br,,p9*5Y\2Pbb1cҔ6S?NZظh47USBjN*R>gنbN)dl#a,WHEr'v1f[HRيKtC(H(_?R:Ö0r2ŹZ֎,on)Г^rDqPrA1Xw$oRF6.OHq
~\NBC%nnnn	Aa0NKZ0B;k<a'$K$aFxRIf	sy!NH		+UC#c_t l?rN7G?:iv)KhBB	'Gh~惘k>bk/<]<Şmo\xxbþg^P<t܃Wy]͕_p +Я+\Uվ}O6AjPKn,    PK  C:U            6   org/bouncycastle/internal/asn1/cms/GCMParameters.classT[Oa=Kr\RPr)X,)e,["#|7_|D/>:[AŒ&盝9sf&' Cx,L
)}k|ܯ9>$5|r
P3fZ=.@ ee;o
K@V,"qL,o=a)m97˹e'tވ>t"-7/M3yKѵ6ZO$F3Y16Rq+stCvִR:+Ƴott/
PjZZ%[ն
If:<j;$3R2msqFYDqAE".hīxS"WEuIU`3!]GsXojZ8Y
㪔jDNS	0S]%"8
Ae <2egQQF#T2B/#0 ` 
n0Imq	00!
%taaRB7n1aЃ^ܕH垄>Ne6hi?מfBZ~4cLtPkA\G,MjP
W{X*!Q
$I++$IJj	Ԑ=E4TĂ
ZԐqqoPd264+\*xlrkaֲk48s0˙V(1e)ό2Owp;Uw+TGǪxh=,W"f9A~fwe	1
w5Tu 1(sPK&    PK
    D:U            #   org/bouncycastle/internal/asn1/eac/PK  C:U            =   org/bouncycastle/internal/asn1/eac/EACObjectIdentifiers.class{S@oPByWy%MR  /ŐkmeƏel@={nf׷D2t[;2&_v:dꔩKnTP1&!MhufklxJ6lJ$/dc%j\tt20%Z5qVXYjJR7	nLjr$	JyXvI!^׺Ͱ.+Bj`7~="l4<W687R^=fOWfDmjļOި̼0ռԭasP̩G')cyK5KM-YZN>DŶSwwYfFe%={7yHW׬ǻT+>O} 0a`ƀq  L 0
 
A@B@==o9Z `	@XS
ρu`xl[@
x	lb>QZg.6Ts:"Wh~B
	
	U	:!tR!MzS/}%v+BK:Бoa5P^D~=@VP
4W`myXMڰ^n6s{f6Bhu,6`f'27~PKq  M  PK
    D:U            '   org/bouncycastle/internal/asn1/isismtt/PK  C:U            E   org/bouncycastle/internal/asn1/isismtt/ISISMTTObjectIdentifiers.classsEǟ.(
m)\ҦVJ@RQ@MW8,ˌ/7=8wshf>?n%oD@9tNg9tw8]tӻ4}Np2ǌNJPU0AX	ʌXȈA5ւeFG2
, ٦0`kZ]F*ht1BG;UVy-l<U<]i$ŚcT,sJ$M~_dvÅLK^(c˭n6ݓzhXF0nM_2:URFkѕb6Qۿ*wkMDoh~e.̠m̴z~[nmzt`.%L5#,16*'1FElIn=Id\|=Fq[D{F]B{ήR+u}D'$2pҌƨ0ZjV:ƾ@cKV}xlVhu>a4[to?[?KOT`5  J@
PE,upnOG8F)pg` 6-!9hcqZ'6Xc?4MaMa67x
.zue5^yZ:5tjCg?iWZ{293WNWPm7}v@|V;;hvY	{[Fo;5	gwaO:=Qg`Gv6,w{o܎Q$
PK!"#	.    PK
    D:U               org/bouncycastle/jcajce/PK  C:U            7   org/bouncycastle/jcajce/BCFKSLoadStoreParameter$1.classA
0_j5U{CXDE'M?RH\x %<o6{/ Kz2: kUmoF?4г4uժ쪽
]9(|,
	!Hfk{/=p8F`5]ٓ9FH#N1&FPK6      PK  C:U            =   org/bouncycastle/jcajce/BCFKSLoadStoreParameter$Builder.classXWW-(kH}6ljѴ*beYҰK74}i_}ϯzQ=dC d3ޙ;3w~3ww?؅_j
X1^֦.kln9
dw6i={ڙӬPwSȨ<!25+PT
onvVSdKm%3dMAIÌ1Ҕ?ٕ?iΟOvOOG6M9iJPJKg&)t&J4]@}$JY)+f<&^Nz<phhTUYKtRIzv>t2LU@-_Ps95
jEO7MyLTS#@'$Lf<0dt%I+3=n%ѮƐH7hݚ.PM`Ϩ"*j+},&(`=diȚ~TNh2	pA8Poclw}e+eyFJq8ʒZܮ6M2Nyx&f2R.`Ka$3!
<lk(&'ǭ[怛
94Ttے[.<"6,b"Dl]"jD'EyĹzJ{:»+HP)haZ/\I!R ԃ݁iênon)rwf 3=p &;WBQ)
2E{Ǉ|ZW s.68ml9Z+s!e<px9Li6y0g)R~pin>nZ3O_-t4-.⨩M
ϒ.*]PBS=gpEq_5"ϢqqWq1iQv}'y`)~.OCt[}sK<2R-4a1@ETX_CM	Y	/a	~$OND$<~	+pPB5#+qH£Jc#%Ѐ$42RLpA	Aa!azЅ1FtFFy$##ge<Eڋ=xŋE+^bkFo{I_S
gꊐ1L))J$ZfUU-QCE!FEF!46'0llN؜ 9bsBJ-6c`_m
_Ԏd6إu~
Ꝣ1;70w`wL;xgOn{/[_#u\gpMzAYN-:KH֗ul}ݘމp1UIZB\dfnv,OVN!@V؞=vuݽL]i}i?!ZNq9*<U.:uWYv+#^ceG,$G|_wk1t"G|#v1_q8_s^h
'=@kx<tk@ͻױx/񟉇CPKC9    PK  C:U            H   org/bouncycastle/jcajce/BCFKSLoadStoreParameter$CertChainValidator.classOjA=7]5!`XBҹ  uY603

9ORW\==3Qw@P;]yهBT9עFx_ɂHG=dB[p$Sx%tٽ}r&\r _
1ОX+.+{I:MhTZ[ͤPKO     PK  C:U            I   org/bouncycastle/jcajce/BCFKSLoadStoreParameter$EncryptionAlgorithm.classTOPT
C06-d0I#d\J][u$W21
Qs;#ً9;=sN~x4
jqztRyA/xav1MƋ9c#x<<w0X@'.ǁgu]u=땽B~a؋MF'b?F~WeȸA(pˏpѱbcBE4c4dW1⚊9攚>h]6Mb^(ǸwS8_:qNu[ץd{FyJv$Spӄ.M&L2ⶉyѡ`I3ŲVoPl!mGt:s-%xSz#GWN.@^~~Qӓ4(L(O^.c<@su*noN*2J+]@ddeNtje}OGIR
!;"{I;v)(a5t2?)C:k#<v`zPKxH3  h  PK  C:U            B   org/bouncycastle/jcajce/BCFKSLoadStoreParameter$MacAlgorithm.classTOP=o*!*nTen.3I̣٥k#񿒑hE[Hb>9 /DBSpA쵻6mɬ1
/i24&ck{3}S^/0r^}Q:qV}ǵ^w޼!?0rwynFwi0/:CÀ[>zf00XIbrƐb
)chf=nD`VHwPdNU$^}[s۬fWWnLv|T.n@M2f
e@mAwE:XNeҫglnLp^kZ
I("/
Yz"S`*QKPb\-ɥ]zA3H㞜OQIW֖NxL61K2 _9	VSFXVT'cj);V/PK<a  9  PK  C:U            H   org/bouncycastle/jcajce/BCFKSLoadStoreParameter$SignatureAlgorithm.classSn@=,gm	ta/n%*"1"	[r";ԕ(G!f&VIE_s\{篯? @UPTRV@@gwuFvaN-{R]yV\~n*Af8Sܩ"UȎkl&AUq[ڮӷ,Sz0ڣ{s\]3ٓr\.-D˱^뚥-n?l!~78yhFi<
u.</IovL\~(<mJ[6=F_Ea4k5KJguHK*T\R`\8*.Fn
%඀804܉AnٶJf 0"o;L
? jAL1Ĥ)aw$g9kǘ$ysfLVųtjE8Bgp@deQo8
7f6:C%!aI%D$Yd,*&IJ"IHd)iG5>Y3c5>4֤>VXSzػb6nboPKGX  R  PK  C:U            5   org/bouncycastle/jcajce/BCFKSLoadStoreParameter.classWkSF=Ê6M6/RlC+;%R8i,bDD$??'|00{tj.{!5i;v0ʓ:/g-^`<-bĄ,bQCߎR1]+H\+X\Wƥ¬|
A8F]C]Yso54Ho5b4<X^k3]h\
~m#6.bgjyaftUV.uMODKù馱#
a깁U
-7\nMjYX%9Xqym흩3Jƒ)7FMVN:SUI3)IYv@HTM1~UR],_Î4`z+Js:>q^u\:>5phW*]sf`7X3'%&QTxS<%\^\abHP\b;q"aNZ/=0)f/Q)YGvmƼ٤\R>8 yoߜ{ڵ~E+-cQb?$؊n$X
wY/@}^Ӆ=͡@yB=)Idk0|" J'qS\c#n01Ї[)L30fQf8eHc!;rib^X"])Iq?CAIE)~KR"#)~qݽ3G3ݴ(lqg6˟	l 5<]  9JDV޲2!RC<H"0M%=lJ|a
jzHnXhKhcEjO%Lz/0Y4Fx
O¼Pyd>Iy%2cTa~O,2qEh>%?0;,e(a0VO&'Or)TCynBWLPKq:  H  PK  C:U            1   org/bouncycastle/jcajce/BCFKSStoreParameter.classS]kQ=7_k|ZVӚl)>4 	4(O5lHw+C@nZR\=gfWxɐՏ-3o<SoB5UOI\2lMW
]	H+.{>9m	7`(ώ=r}v1 ]
&vO0Z<P?|Um!WUܸ6Bu5u.[޿2"L&a0p@@Љty¾>nunHvd*od_DޮV=ZBnP-JW^?|9MswecDL6YmjC9,GnNXrQ`}.[#U0اBP)iOR	|$z'3Tg}~4qwAܣiªOQSZ)4v"yYqu0,	oлuWD3q,6ۙ_PK}4    PK  C:U            2   org/bouncycastle/jcajce/BCLoadStoreParameter.classTmOP~.u/
_uʫ/ 'HPӥ,mN_a"Y"~e<7#9ys9۟|'1cdzroKFWLWz+_3cyrm_i[[.Ci1W{׸U7waj^Y^qlMG\fXhGP@	\l+[[[>nU;I_v+]{~MUW
?-sQ
3+uW=U=Pۧ:EqK8;N=$\QTRЫOA?Cf#hߴ-_moOMDq"p.a\(qrSX.9	4cZe9Mxw$rݵ^6ϛIq-\Ob7ADB;&$LJc9	y	Zb:䛑K]tw%Raw%v9Coajƻywkh l~siO`%1{p!}jcXj'GtZn݁.gR@PERj
,h#j#iG?xS=@x3B8D@ٝtWߤ0P?&$Ͱ@=)BJ4Ng`hFɮFPKk  t  PK  C:U            1   org/bouncycastle/jcajce/CompositePrivateKey.classU[WW&	NE^dAboV:d&L{}o%Ҭ]}&"$<쓽Ϸ 7a4!Fk`;B|smǰaވI;]c<?uf.N&4ցۉymQS][RgcQE#G-!G-gj^dElEiȖ&c/}ؽf"<2q3ks9SnFR.NN#\[Y:+æjYRvEi$bdfzg)#m~Y/OY3lK@o55+Me5sr@GZhD\N32߻iJzae'
a}^O:8Rp)TuҦt~(s^|"m'킥/kWǓ$ki](6%YK1ژ4rf5S?VjcQ7fd3 eüLjNC{v"S.1+|zF+gg<%␈"%⨈7E%Q"zD("z)DMV}_ӍOlD߾}Kh5LVx_ZvUs1^ZhA}6ǱZm3UpiNWt+58Y/zw!:5niLq2`c\Het 5؃2Z0%7pAFE&dc؇+8CR	|$$f%
	eqHI8&!7b$#-asqQM&5.sq\|HEL0rI@ _dN;3$D|MyY,uwh.d5TN"MG)k֫:/0('p~E(6hF@Ę@s48+vB?{7i
=x+'yPIqWl NoRk+cx%REใU|&\<*x+JI0sE,0R(Ik`K8EjmXAw.|J9*@iiA9$1"B#vJBr
XCcY7Z;ZV~ط=g`9ыa/PK3ͽ  	  PK  C:U            0   org/bouncycastle/jcajce/CompositePublicKey.classU[WW&	NEnTj @
"M
b
"V:La`233V?>ԷiB҇e>(y'go߾ϙ?mY|F]rhCv}9+ K
91\FI42zy6Xit/o5o4+l5FfZ:M\Y'i-
[d=-*o3Ҍ۰f:"\2Q3cS nZLF:WtVM12M%7r^Ҝqr!H/[.PB[OOY5lK@55+Me4s4rwN%]e;
ۈeSǶUI7oX10,uޭ=0|^[Myj֎_10e3YN19)u4yOhYbS.ձ4II龜N(UOi)&iJ׷-$=?@uнbYזuV|!x@]<D\;T5ճv@ΰ#"E.℈"񦈷D#"*KDEDHGtzg7Wvyrn|b,ڮ[;%nvZV=
d"=ʤ/-
odfnqZm{TK%ܚnP2_ݜKS8QmVdQ1&5q	VZ͸,2x2z.ǽOm)GqUF2^Z\L-FpI8>|$qS@I"-R΃I4	CX0]%|.2u\.\b(}BWJ?i$ZO !k;NHc!cd?V6C}gRVq.lpw*8ܮl>BS~z_paP=OOE @B/(\@ĈS@sԉ B}ʃ>J;֚_`<&u&))ÂB	D*Cjm{ X 'xgS<gOa*K"S?c{E7" yk֑Y2-0R
-
>$"FD(E_OSYε\TJSkzh,˘A&@kjBkBy ւk^
ǀ PKda  	  PK  C:U            /   org/bouncycastle/jcajce/ExternalPublicKey.classUwEMRhHAM H6VfnٍMm&h8<@ɝ{;??|0CTh(.a,LHm&Z{eIL=0sc11Kߘ[-aCJ[mqb"͒Yp
efPjvY˫mNJPtɋlܖn{:ufRt:s
jVxʊB2ͰZjO5UҦɋ̺k+:UL	<I5ʯ'ۅ9)}R˛Ugvk^Y5ƪւ]]Hn˟XT^˭0nƖՁN[ܣkݶ
QּHy-[BGλK6>'ezGÃ.9ڝk˛<AMYPj<w2.ɸ,ʸ"8˘/e\qMFHFܶ+a~ |PI%4L!UV
3Gӡ^.Oyi$ڠ/FiI}}`$C*tf~Ea?toGTȻ0z&xy_VPf}6	CK*sPU|;*㮊pO*.`BŴ g! Q A|/ ߪ߉㒊,Ig*PqdEAı`
y.
TXS'A6y`97 /2JaxB2>ӣאּ31
-)dR:x+U	SD4:ib+= ؟?*bv^%4Pj=RHu*mEr14>GDh`U[xp#B|
?Cb1~mCE)}jJՀԀ*s8A\XEV&0MFvVJ2?PK #  !	  PK  C:U            '   org/bouncycastle/jcajce/PBKDF1Key.classRmOA~G{" 
R^  $D	_Mm+&Ř aǄ03<_ c
C1?j\Pk\dM~kSk\)'3؉΅Ҕ-"TT>=cpy"NHG`G3N5u`N*blBy_0Lv9z<K]Ro6*,>=%*kŧ\VEs_n»F	f鿚kI_kcF]61lo1&ôYJNR:GԮbUu<tQAɅI,Q
X2`axb2=nM̂Jh~%2+X$N( l_>VVV80n<3݌}AX(艂ACkn4whf&7q1DP*tPK$k  $  PK  C:U            5   org/bouncycastle/jcajce/PBKDF1KeyWithParameters.classQN@=
Vv5FW[5! XG(֔rD𣌷
Yy{p-^2(zi29.ב'H
tKȪ>Z^ߕ*aWKUʙ>O3{nQ7k"`(y~˸%ؼ'ؼc.FO͍#uAzG_:]y@ңkU̫T,H1Mr5js3),55j!E5jP@aXK"$NwZޝ@4lwp(
ԕle{6WW!Acp(!2F4{PK7R^  ;  PK  C:U            '   org/bouncycastle/jcajce/PBKDF2Key.classN0?d7BROEBĦRp2
Yx5TyVpPU$R%|x?7 a&C_n1øƥc3<5|dtCd*PԆUyR3x4[YtjNN\
?Bc(Vә6{|44)EŐ>se<O/G))DG,#HbhTp}@QY0,E g&͢-y1bht<s0`,#}0ojt'ޤ)<Rp9Z<桍<麘XnZB !K^GcKޠd)Z$n'%VK]4JUV/PRz݉Jtzw_2ԋe&,cBX8PK]Fo    PK  C:U            5   org/bouncycastle/jcajce/PBKDF2KeyWithParameters.classQN@=
Vv5M4&jBpAP)BƅGo,& ;Q\cPrd-sR;#O=鶐5)|.ϵ+T®x3C|ȟg8.}aEPqKb;y_ѵy$]TO͍#;
A9@:=y@ҧkU,T,H1Tu9mu홁OKMZfԐDL2TD5(XK 0l$Vؤ;-NDp+PE6L8rpYEJԇhBe#+Ye+ǐ1y8QUސcp=iPKu^  ;  PK  C:U            &   org/bouncycastle/jcajce/PBKDFKey.class;o>vFĲDļt}F1P~rQeAI~pjrQjwj%#B~Q~R~i^rerbqIN~VrbVr~P	;#;;3##+  PK\n   r   PK  C:U            '   org/bouncycastle/jcajce/PKCS12Key.class}R]OA=RŖ~@ElJ1
JZcLiX&KkifLH )9so{ (6y*3$EGl-F0ϨUGϋJn1bfBk	T<oJ7>CQv.谦0cT_82dPZ"
Kov20@Nl$-)vAt,6T[Y	-:~)#Qaf ʋ}/$ۗbV(ܒZUeilCE.Gccc*ÔWtQ{߯h:\\"!)؊(搷v
3,Rn{F^iI䉜M!kw9GO"A&~9#
@p,Q1<?wŢ{K3`i1q	\'([,a[Wpk@eddV<'Y2^}O%>E{#5M? PK|  O  PK  C:U            5   org/bouncycastle/jcajce/PKCS12KeyWithParameters.classN@@_~D7P4ƥ1aCB:b	FɅ&2ީ,.{9Ӥ_ ֚Zm0īFhbծ];2Ie	3?v=W00*'	LOȦȓ::|@.E>o7C8k1CzC9V}GX98_m;A
N;N)ֆ:t,H#i D
$KbjlǖְI%-P,DUT}:z+es
	Jfqԣ iެ6gt^/R!e1YlPKi  -  PK  C:U            2   org/bouncycastle/jcajce/PKCS12StoreParameter.classSn@=K.ni$-I87/!P#5"uQ5(HD@(ĬI:R3g㟿 OFM')]S]ϕ/m.爞r}.Cyʮ}ưB;_HHWx۷ϸ>C
d^:>PG[wBߕ#눏RO촅݋.5O۱{yڸ["crȭcnu>"KijApGâގºEѩ{$QWl32=QެM*P:БFJG:pOGLABAEzw`SVlg,-(xȐl
L7+&.EHdAٌ"DpV%eYo$&h|z~х2Unbά_p"aɜ4cfcYcwְ6U/QdSW1tmFg)mQ7%8;)bV(3PK
H
    PK  C:U            *   org/bouncycastle/jcajce/PKIXCRLStore.classQ=O@A |ugeU*ZW
N9tqk ~m(ugl N@,jm$iA|QЫ܃3Յ*BVpbafqaOBW!vxM9,dWZ.y|U/u


&<[Als~ہUpv[yўtKpz~Ȃ[AN!7Q5ؕؗ,4 ~;oPK@     PK  C:U            4   org/bouncycastle/jcajce/PKIXCRLStoreSelector$1.classA
0_j5U{. x⢨(v6j	$Qj.<77`!C]
#m'&wu7JhHh%"qԧmԐIْqd=*v;wf֒B9 9~d9E,PK^S\      PK  C:U            :   org/bouncycastle/jcajce/PKIXCRLStoreSelector$Builder.classUYSP.K%h) ([6ER@.8OiSÄIRG:#ˌ?ܐB؇sr%ܛ;r+PѽRlXкm,-ٜ244:w1]iTJcҘMEzɗsn-֋oMܺMN`>7]<Yk5/pa2FEkhX.`-<a@{fjr^
HչTС>Est/5_,Y9];йX#SRbhmav2~g.4[s#W):%H%Om	zr.52
Yn/1^Q咻/Z=IJ\:Bbt+n3l^pm9xu,Pk画c\3u}QStd![.ETMd4@0ìsBP!Rqm#Д.ӷUZӦ80EC :tԒ?Ow{v$5OqJ	քXU	BT_FOcI?IDREp:a0O
C仌SdDwx'vMdoV)f3jA+ftYG#8*ڱUW˰*pj8UoTM<r,ǽPKo0  D  PK  C:U            @   org/bouncycastle/jcajce/PKIXCRLStoreSelector$SelectorClone.classT[OQU*E@"Kb!,ǲPvMO⋉/ԙR
4Їf|s;' &,K^
4{.*Y
mUמU:ȱB%g;PD#CN*jV:9ֱrKE/<\lmMegȹ

@ӁA1om%=t:{֟嶘A6[OЉbo<uq}2*V,-Z
c4;'ГLwGٵ|U^7y/;q?z%0|9] 0MmY
e3}zyr\5qx1g^%[H[Bud0+шhFܔh-8nKp]4]!{)}אdL
faH32	4=G}EZуly9o6 q05,H\Ix:W<{Lhs,Fxr*<ˉ,DXD
ʹJI*M?!/GǎƦLT͈cOd좌O`PK.;g    PK  C:U            2   org/bouncycastle/jcajce/PKIXCRLStoreSelector.classWSWKKXц
(jKPײa1l0З}g/>N/:ӿEM$Lwy{ι޻Ͽhƌ|g؜}
}@
ISخ隹G=tٌEU)!+juMtfG:Ӝδ3;ә]QXLeC
aU1#QJ8Sv%2>AV<?ӥauD5l$	#"[bH5Ib5#SrTCFIS
-U@ Mn9È[fQm8fODMe'}<V) ;I+jR%4Wk?K*՚ѹ8yFżZ-gr',!OפNE ?<FC[qP@7\i
UE5sʣP={.ATKBb7jq{neZQR(%=#ѐg8ӕ)E6̰
k+MvUVdKsiQMRАa6cq\L-ǼI@|1-<Y--5'gj۰#`ϮNM".b-"Q/%-AV"DlCD;E[D+usO.
Yɤ7rLӳy3'!Y+)'FDy3Sj=kSrf2uʔؒ49]i&gfh,/?IRRm7eY\ӿ{ZKM;W,:Htl\(wi5yk7Yy5Ym9ZK'e9@
Idc$b?+YFPAB-$ldX|	eIX	P%lr< a$A=pX
<(AbXŰI(xTj0̠q/t;"0ʠ11e;Ўwbҁ>wc/8Ѕ &1L1<><4	gex΁n<@s}Ͽ6d^U'R@UzoeP-^MY9+OG"u/!Tʵ3Jy_,Z1]h%/FW/A\erYc,N1p'^Yӏfq{}V~除6~
y$sEfW~Kqm*58ޙ[}!g\qLOþ:
,=f1CXCsq8^])iiSu8x*(*D+4¿
ҿIOD'T'jEAT e8TL\ڬ'Sa0l{(g):bIN*Ӊo\.Y.MYA-*
ٳ
6iݿ uΧqX+ȯ"#%nhqJԐ#IR2'Zr_V#Y>X3/}h5%M-iPK&/:    PK  C:U            7   org/bouncycastle/jcajce/PKIXCertRevocationChecker.classPJA\rB.,$`˞nR >wH)f;~"5ڼ	+jmKu3#ᬅқV,>qjS${Wh%;_[Z^UXtr}oeX7qx HYY.xXnMp9,MwP{]Ɩ/Zf{jNFa } _PKk     PK  C:U            A   org/bouncycastle/jcajce/PKIXCertRevocationCheckerParameters.classSnQ]˔RjmkTe(m-D
a8C`>h"6" g흜_T3FS0cP;ًOY*3-q(KXgPZrFM󔾩',4K5a6WtFFkU_ܤNatDMvثToZf4NUӨ\V/yn[cnpun7lKCD)27pfay+$~u~"5 ߜdSS)4iQH<`ue6
gxeW=3|ęr3?w*OuP nXyRbJ<p_BB	I	)	ZXb	k6-fe;-҃!*[_Tw#FF܍dzGX%|DYST9v2Fimv|_ ?z;?GQj_Gnҳ?$o=þЏct-ӛzt0JoO2ֻ4 PK?    PK  C:U            +   org/bouncycastle/jcajce/PKIXCertStore.classQ=O0u(;+H0ea@tE ][s).?p1X޳׷ 8=_TۚcF~	*ͬ$dG.,5ȔJ$s{u9Q}0%XiXՐhXӰ`:ϳ<
a[{;y;l *8;hڞpCʀB{OVnd
 7D
lKJJ;wPK     PK  C:U            5   org/bouncycastle/jcajce/PKIXCertStoreSelector$1.classA
0j.JAqQDqO5(x5CO͛PuW*CgX'ʇ^vC,K,TsHm[ k	ǫ.L5qc~ ˼)(PKw.      PK  C:U            ;   org/bouncycastle/jcajce/PKIXCertStoreSelector$Builder.classRKK@XV@BAO-=SP=nkI		$ĳ?JA33~|8CVbHt17s$:JS
v⣙aӶMMnMє@ J1soxz̏ȡL=\p3>|*~~ڿu
_m1cCIG    P,P/R-bꕤ/r:z1n
=[mш*bXUS@ޏ6Rа4r "
=^߲3J"a$EIk>(7i4J@@[$F>M%} Tbkc)e-PKQxjw  8  PK  C:U            A   org/bouncycastle/jcajce/PKIXCertStoreSelector$SelectorClone.classWTUǿЁ Hk&Auqpһ~TeٵkYRkKO?T{0b{}s
Ds<":ϛ\+]lEk/fڦCCX7ڍƤАҕlVҒͦ=[fzkbYoqMobHLjXF}q]Fc+MS[ḋ9yM/4!g(v)yJeS	Ox	XI3b̦NZ].S\
;*v8iL3\s	u֒3)]Sz)^603tm3eaΩ4vӗMQԯ12ݔ0QӉ&9a1tl
kr^K3фeɌn%=ZDQDLDsM;ϚVKh(idT-|bɂ HG:7M9Yۘ0tY2:lÆKɥPZPکn˱+@M2:T:T:T:TA:RS:$YT`
Ҝ*՜*Ҝ
Ҝ*\XMK"_¼lPM-[[5!6kCXBDCtKHR{EdƩpP4nf'3GjpڪiIO/2WGP$.x͙b[3a}pqL+Xk-gϺ,RкYIuqz7Exts\Kfn/q=eK?;Vt,E@5@@-	,g42babv6R
UQ&M-N[j6F-7b@3n؊:&P}_	=W2G͌zX@f2.q
}@A?㐀*qGaƣa (cq'.݌{22<Fq1xP1x<Le`qa1,c(88~Яn'MwHض_}5%
#=X?Kv>N{>}z*j$=iXnu
7i}Ǉl5w|a/>#||ul_97||]gپ/[>aؾ3o85_N"v\΁x^L'x-oqGZ`#fyb!-5e~;HXe
Zv'DmUL|jvQ^[W9jI? ?PK
L  
  PK  C:U            3   org/bouncycastle/jcajce/PKIXCertStoreSelector.classUmOP=ed264Rgg0Q2>F`/.}y99ٟ?XB;}ЛM2x7Պ *YV8H0H65CSre0Ei[M_R>(EiD|NjEd2'OB*ehGU۵jk؝9J,vy[r(USS64*%U=^j?ITgnh)>n1Įں!QD$>"`aj͕^g+`gߖ2|:K#h3!iF_1#mc2D-q|v"iE}17|C!+ɕ
//s;sN::hK'oA%xpCBo1'AM>HC̋	,bK"X)MRD1
/Bb;7%ji45*
e;S&|{敂ajN07I)}LR$KQgC܉ſ#G>0bgԏž!cpo;5jx6ڽs9>.|q{1킮r&9KfiHGm`!	.-WÌ+p=xcc`q19 IF! <]-gk
}~"&k2 PK    PK  C:U            =   org/bouncycastle/jcajce/PKIXExtendedBuilderParameters$1.class1
0FhU{ (J"bG4
1$Pb{{/ kLr%nkaZ~|H&Pxu(=inU+raoJRR慑δG
0Jc|	~F'EgqSX#yPKS֞      PK  C:U            C   org/bouncycastle/jcajce/PKIXExtendedBuilderParameters$Builder.classUQSWn VZ[e#$Q1HKj88V|\͆087}ΈLLr<wI`:>{;w=?'Bh1\Xr<G.30

m8Uˆ/<F9FrpWa&
{WFYZr3Y(m$dd^M.J2YݳFETp@hOW\{%XRh˽jqy[ؒZ
*]vT>'r#`gĒ.=,<_Q?)i4LmHM`kCQ8v4k[tW6+6߶Eȱ'G[u+\"p;d30{I78fRè1
4|ᲆ/5|aB
#Ŷ1d#'B{bxYTtl.EnpqmH9J͘*tl0?'JuץΦM`X4ϴ%0.XB}θ6gc>u~{ZKxvA｟ѹosuu:1ct`#}X\q3:UCH2܉,Eqw(5(XVǋO߻|BZyϻ<}>cۿ󝧼
$4Ї1$
iߏGM~V}X06<~yx`gx*s*IUUt"lc2fFYoObZô#(k&dOqusI:,^
;&pt2ڴSIt794<r+57XIS$~PKQ  m	  PK  C:U            ;   org/bouncycastle/jcajce/PKIXExtendedBuilderParameters.classTn@=N/n&\
H!IN҆R!Q*T	u,#x | r)Hmݝ3sfΌO U0{U6
Ac3\ALPacCxz
f˱=ۼ] <6$lo4LBoYQqDP}bP@7|'A\]&A/LK;E\ӱ	(;nGo9m׻\o?	noZmߺ/STs=f(cm~0Y\WTRqSłEiڧB2eRMRmc¶?1]-dsGpe/%Өy$tJZɎut.<ikҋ>N!i
7p_C4L!a鉆[Xՠ⩆Yd\rYa	1܁#Ex.\2tiK۷m-y#"-AmGJs&yt%J:YWg(r>SlSA>T]}&_Cw\to݉ wVBw"tG5	,vB2B# PKb  V  PK  C:U            6   org/bouncycastle/jcajce/PKIXExtendedParameters$1.classA
0_j5U{7.]MO5(z5COޟcR˛F^ZM*2,EV=ѐJjEv5Eaa`ǀaVYe\8~O:im-!P(!Ǐ<90H(/PKEJ      PK  C:U            <   org/bouncycastle/jcajce/PKIXExtendedParameters$Builder.classXcUa[zTi%mXD R(VZE&KI	n*x߂}
Jz((}+f7mVJ!{3ޛ??0٦c#<,RB\.i	u)$-UVV*ƚ]ImTcjm\TgYKIªnPcj\Pg`
k-Zw%96&"ҮĔ*])r%&GUFvBaJ52(D$2ZT2Co\RAM%kuDlo(*QCnlTmᄥ!uBe"ueJ_-HtVuvͅ)JhHPh_=uayE:JuNL}Qi?R	imC$bɥ$usFJF+H+tBb=]5Qq:ta$ĔjaԆW]lL~Nd&+A9hݺʪ\%U\mdq43ƫ06zoߨՌ$M*/ÚmR8Nj0^jH
ZDʴ\f;&f%S*E=.0KO@*f#F@y.P/`Cx= w)m}:H"3ϪȣcS_@>uIwYTT-9*?6/l|Yz'Sˏi&/R.ItGڠvd$m%fEv-jNfۘ"]-Z=ODN=lW۰h=ٮ˼p{;r5:[ttJ
neyEZVX9=TQxZ
Jƚtf\J'c24BPo;W~U]p4zW6|cR9/92["\u~ߏx~O͡Н˻e:M+"cD,cv!aaŕ"2,z*#Q< (\"Ć.(V "l\-b4zDvqpFgfrs^g Ã1<ã1<
<Fdx^tc%[W97Va,NnYh mц^ax5=3&[o33kX]
S~6* 
aIU?M
lGZY DaѬJc>Q\_Jgž>{'}-9>.3do̈́8iM V'i	8޴ϛ>xf7UA	[+_1CqĽE ){ "L0<~TV ՟/`&~'j.O6Kf,0hL䲴>|C[r3i}$Q3:?^nǍ_sBZ1c27<i,h-T@(ǯyܻϠ{d_^я-)!\pSqCp.Wj3&YlQ'¾a!n3g7gG)"N2LBwZK2XA]%KN6v+_XE5F挤y4s4 978M8G^\gqy4@s0k;3:3py؊ph˓PK  S  PK  C:U            4   org/bouncycastle/jcajce/PKIXExtendedParameters.classX_WFh\Vk@Dk@5Z]w7zޗV}K?dwf7ĿG(?.0pn hKeE֗yPX:fKsu0PhjR.聇'6lLc5mTO$MURRr(ece82a;a-rXk]cVVfO[`7BQa7ٍJa(i5ATNIT̓1HTm
:
9R5냍zTM8$U<B&It״KF	׊*4my,ܵ+@ hDV5$5lW/vy05M)d
bbhҳ^BKӠF尤&5*ˋ*-UVtSXIrj%嵱Je7!>橏Օj7!$˭1dY"K;bjR	-KVlYeZBw*G:El@6hRE-EDTk[y6\]['fo.qc&11]k'E9OlIIJQk7&OI;ʐ9?[1%5=";BbGH24vm%%*"Ô19bM~zz	ubJg4LK唠]FbŬsݎ֛mtEK̋e^\^xQE3{U$6<'WES<$<9yO4JPQ2J5	=U(2ESj8TKŹ.{,I#|{Uge"
So4wҽDm
|3E).~p&ڦ|6΂S?U2,z4˺?9G<lR^vVOG6dIulRNwQ<:#m93bܴgzD5gDsC2*̙.Qksu|UɎSgz#تL\,!o=KsAp%2&pzٸF,`9J\+`((-,*1F@		(B90LA.`9[@C 	Gp(a5npn0	;*p7=2p?2bxaG|X|hO0<32<MxMw|؀GK>E^ax5v3axmҧd!BdT?~#B(t5QxB.S4 u`=XZ66~#512GjdS3$0ٳmHvMMf	#u1R?%b!y~'.d
,⹃6<~! ?8BOr1y"~&_ǱoDxe1xHU1Ik'CÈtb{>d{؝ĵa{-ԵZ=rܷr7꡸CA1lha>c9z1R{0*$&jV547coI/4>	ɤsLzTqɕ"zĢ`=htI%@?>"^rX\[J"޳"*8nEcNER">JboMJ1#"o,h.\C}+}Т!OB-BXه-"~e6&z::l<muIAS+dZ6nፉPK+    PK  C:U            8   org/bouncycastle/jcajce/SecretKeyWithEncapsulation.classu]O@e"˂ȇ_mm$aLhb$Ib;k&?e<V{z<;sz;m1`w6//$үJ&8MCM%RX(MR{"xzY;S:RzlJަ١Վ;Nm]IH~WIZm@f#[JfJW}4ȾUЕ+Ր!/#&k(ֳLv~kᖅ)-f7w0n^vwiaKgQ4}q;㨠Q0a.9l41odAF<t0}#<lωolوٕE
>lYh+?cÌmRd;Z`j71Oz=d&1L.0g+Q͔	/2y::u'PKzѻ    PK
    D:U            #   org/bouncycastle/jcajce/interfaces/PK  C:U            :   org/bouncycastle/jcajce/interfaces/BCX509Certificate.class}Qx2+D((fvVj
%Dbfɹ }Tة1y'

ǖ&m߰jHj le6:K-ӖOBg>i6v+kPXIbh<qÏ<EV3IzttmUi9ﺣ/((yT{PKν     PK  C:U            1   org/bouncycastle/jcajce/interfaces/EdDSAKey.class;o>vFĲDļt}FAPqjriQfIwj%#v~Q~R~i^rerbqIN~VrbVr~f^IjQZbrjkK#P5;#;;3##+  PKs   x   PK  C:U            8   org/bouncycastle/jcajce/interfaces/EdDSAPrivateKey.class=
@gcWXzbAR0	6g%$r5t1<_ 
Rqd̭tkbJߨؙZ{uRUN
g,iKL=4qNћB"HCrusGcD0lE( 0iPKј     PK  C:U            7   org/bouncycastle/jcajce/interfaces/EdDSAPublicKey.class=
@iybb*Vuv!PnaޟB܎!օ̱/3UdƆ^]Q[>랰PkYXXbʬ<]-@aiA	L1PKl      PK  C:U            /   org/bouncycastle/jcajce/interfaces/XDHKey.class1@FDa5G0&#aCdw1٫Qx E$mxO~4%%pkp-*)O^ūŷ%u CUjAPKm7Yp   v   PK  C:U            6   org/bouncycastle/jcajce/interfaces/XDHPrivateKey.class;
@E1㯰t	A;[A3H&l(16r8pޟK*4in"aLktnLR'	᪅N'm*iܱ}.ڱq,^at8W&
ב_1"!縷@X_PKww     PK  C:U            5   org/bouncycastle/jcajce/interfaces/XDHPublicKey.classN@DgHt'6t"@D

Rfs99KɿFQj7ͬv> cNV~4f<>8]i?,W68J$,U{~ˋnuJ[Qmi
2+!,Wvxl7=f=!bnp2Jz$A/PK$wh      PK
    D:U               org/bouncycastle/jcajce/io/PK  C:U            2   org/bouncycastle/jcajce/io/CipherInputStream.class}T]Sg~6ٰIX&5V

B
B~l6v3%L荴WǴEԞ&t2y{{s>O +V	d*#pA9Zga[$ɰNM:ȕq6+$}ЦQ˶1	&]qeVqt%H!Qt+SnՂIF8C58b+9g%)̉%7sò%4[v썗yޠ4iIOYt3|\SߒYMnfѳZ*^K޺l5>a_w
k4ʮUWMtB6_M6Js-ݔ"[.VqZx7^㮥WmT*
+S̡_0
H?LdTJ5KGji*RebNL
PЧ_)-	s_ُ'jix#kDB:2	w'mXbjAEGTpm*Ю$C>Tq#*:Rb8㈨fHBaD\EG||paa
$TC{0|y03y000SUOprFhﲞnly
N}T*jN ,dWL"Ǆyΐ=L[ǲ_],j]w4)q/	A{w	g,<w-/鿸F{Bwi>],qo4x#B1{՚׽w#N
%{s!MwnQ(|l\i.ymQ=|(=KM`뤙^%3)u]VH`m*cL"",;ܯK*_[e&|;^09`N#X{=,cdB>sH'9D<&"}} 4&zz!(QĹ`.+w_,Q7sRlxi?01Q<մ2UBHP([#/(*32'<C-b)_mjiz>8I)PKEQ2M    PK  C:U            3   org/bouncycastle/jcajce/io/CipherOutputStream.class}SRP])x+*^kmJa|11)g	>̌u
g&qhjg}YxA	-9'A֒/s̰^xXcN
˱[<V-g1Q=S;5UY2kmHh2镊ir0'3pٝf>y^۵ꒄe}EZnvڲ}+J͟
JJ9)Nf%ѹmEug1D%"Yv{NAr}1=ݞmM)īY[nv!I[IU[.5X3o;TnYàR2/rЗ
#Ð#nͧ;P

V)C5m
qN]'zfF7!xFh#tjr*m#²i4ngb'&Ois43]-ǐSUITFZDTa8p~3cJF)nT!dγy paLT0
*5qCp]p
9\cȓnނU%uMAX<J!JhgmF!Qk	Kd&FOSML䯱OLe>ajHi8L;#T
)d 1Ei#T:=TrA9m~ĉ]hddI:f>|핔u-]hx[fO's`7(.h:򛸟O,`J!L>hFP;qE<aU	?+mjPK+    PK  C:U            ;   org/bouncycastle/jcajce/io/DigestUpdatingOutputStream.class}N@ƿJO^Z6MnUG1QL< >qTpؙof?^ dZbSOu\5ʽDQT}G4rn^cCKbs1
C##_L3EǏSpWaS׉5G3r3#R;45
3Lk!аn@3` #"C.5uQѱ56hGo$It͐T)tTH٢Jzyf#ыdj#
'Ի91$234)34>PKסuO  /  PK  C:U            0   org/bouncycastle/jcajce/io/MacOutputStream.classeN@B?*ߪ1qqфD
4ڦL7D1qP;M9|s|}|8ChFߖ^tiowJ9s\GS4(

CM3;˩e\o
[|̐Դ/<3:Kmzy煮5Dlshe!8VVȨ`_8e(iCGQCEL&RiP֐CECRv\xڬucs19
Jԕ)kwԚ7T_"2¼Z}co.e#:+%3ns)(3?G,~ PK>0%O    PK  C:U            8   org/bouncycastle/jcajce/io/MacUpdatingOutputStream.classmN@@iTA~E@XX414.4.H4,l\ա!%6e>bw
jDs̙oΝ7 h1$A1O'Kʼ^Gcؾ-׷zwCG"ĥ{<uasj7#Ə<>T:֘c®-\o;MCW84
2^%Б70HI,J:r(KH١9Y~-	H39{4+w^>&R#
2'T%Ԍb\YUd:'WOki|PK+F    PK  C:U            4   org/bouncycastle/jcajce/io/OutputStreamFactory.classJ@شVtWpP,7+KEt:	5)D[JP|(1h6ssyxyp\s`T:R'}-wU3:bE{[pEv=!g	jsfsAK/%|u=2%qSe2LKƕ'O27P00o0@ۼ<B,ѿ֘F&b{X]2'TÌryZioH˘aQ%&X5anuݡʑGD{وNxZx"rX^WTn#dqfS#?,RVPKҀ<I    PK  C:U            >   org/bouncycastle/jcajce/io/SignatureUpdatingOutputStream.classuN@$vC/pB%o (bA"r(Cy>k6H >T;&E6|33d1||H
LS)7R%f|2/mq! r_<UA2UMTK8gOXzI/PWn+Ca#:CQwO$<t۞h{R<?	Sl4@df^sX6CiOl@N<HuUYڱ	ȁ٘DFCǜn1^Z¢i,P֡be茦(fh)}n8HT3E̐ѦT@Usg([[GH׿If+o+}\czøGdzW?ohaȤHUjL8	'ue4 k	q="ψqs@\ĥ}?2{?PKV5    PK
    D:U            !   org/bouncycastle/jcajce/provider/PK
    D:U            ,   org/bouncycastle/jcajce/provider/asymmetric/PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$CompositeKeyInfoConverter.classV[sF^[48iN4]'Д8iR&ĚD%>LK.t&iB
$ <n`t~w>ݿ^(3#Ɇ}#kC+m'Sj0+Mת'j'z+٢e6;.asa8zӀ1hyǊy|V0JI
$ǣԢI{ǉ;vUpt L?3ȖMavǈe;oX,GOOLQ-&`mѰzsHA0PS͚ix~Qg/g|ײQpq]E4ċwMԖa7
%[2'lڱ78d*
Z7(Fz)j͗^mqeשZ9Z$H=S7әV!.(tO͕}#c)
yFHy7n^kf0\nES<{11q(ǻ8sLq8)g8rcXMM*TNYrNuZUDO#W

'A$;
\yNUI+ؠDN)-#Fb_쩠H+;^^p=z.szJ!q149ezpE<i AAH
Q45pSc+C
ḥa5"&͚4q
**qWEAR,>f]-sHK4UcC4<POT,('>>&C'hS(K۶|/' c0w׍8KtAU#R:гUԚD}Gљ2PT	?D3u|S3|>[Ǘ 1pMPdG,N(u|	%+N
mxsX!d~POb`q^:qMKRtƬ6HO656N66M'K]llݯ
PPK$0W  
  PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$KeyFactory.classT[OAzAEQ[P^PmZ4:n?_+/WR6Ҥ}盳gO_ \ F0O<e'tf02f$yy"UaDUP>ueO֪H1T#,Ì^IY\	Q'^&:ql>JJxa<\B;:nIQ$;aΪwjޛQ>$E'"6d=&[)/e@c4^_
	/ED] tuɮleVιvZ\"ܥ]1V.vj/_Jj]0{ikx !*Ο*"5OTM~8ha#8b`Q7pa4X}^IܣH:+Mf~1<bm
D	nx0reBwka}#as0L,$dbWMLZ01k&Ncn8&bAEpy1\BZ,ҥ(`ƴ˃@i~W!9^YEWbAIH>&k4#?	(^Oa-g>!lT3w8g1lGXw7pT[UGGzuFƐ4C|MJiMbGHbQl6#;CGs:N,'	PK+$    PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings.classTR@IKT(("
^
MAVDJ`IMRf.2PgmKkE 36? `E$Ce3mӟg~+;n9߰Kgֳ7W%Ri=/H$7f)+縦G[;Nڱwsk"
;frҬܖgգ^fkjivN]-Lo;%[/[<׵E5I%yB^.Rύ!Aj#yZ0=]]#ngn]aŤUyU^ՆfeIתZ1Q/ܩnjӴmWeSKi ICJW%%K&Ẅ	7$2Lܡ$>GV4gH5)&hϚps(hk'df%dkviH6x<(s9}Fsq
=W@:}Q
*QQ1ABLDC0-Q00bw0%`#l3Jƶ44rmTj^\!.ҮVFk>^~@oD/98B #mi!
|Ϛvv0^"#R}ׂ_"ST4ucePKԨ    PK  C:U            ;   org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE.classT]OA=KݖEJ mwB DJXSqufw		& niKQdf{ϽgίXEUM	d$AY5,6ŚB-lgKbz»ͭ쮄hѬL0R\>/[Wc3StӘ0Xf>8v#\7_3ˁƫt=_rCHn@0--?0a
xq`0_X\jp-*RʖiC=X	v=nsOcAiSOyz^Jv?:jæ2C8RPg\ӮPW#n ܒ1,#!cDmwdܕ1*!;kzrؕ	Cs-&d#wFz[à$ӮvFֈ&Z,%sn$
cJUS1T0bl}<Лq	/-J
(V6L&*;GTn޺	bZzplRHva?Һ0RLih9A+-W0Mw$/M
$%3{M?ϑC;I~|B#NFq"qig:+cPK+1|    PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/DH$Mappings.classXG}gƲZq YƊ+FY>#K${!!!|/{I'KrΛO{'l#l' $"&\Jp9
=2 	
"T a/!L$DQBp5!NH!0aa?ap
Zu	7$Ep^}	$<DxQc	O$<ExYs	/^$Dx
Uk	o$%aRnP#jrFw8tU9P4&{<$f%d4lmގNwb^\vuݮCqET"\RUGrI5&RrqI7vnpxX|^ݝmmngG\Km&}|.,LǤ=<bҭЃαs횼]ioiY..`mhXr_TP\`Mk
4 N(* '9vSrBft-;l9OZ2;k"ȿ&BQ;k"(&n]xU5Q(Du]]nr0huɸ;T*H+&
@dhWKR{phׯ͓^g4rF"H@@(X<:y9#Հ3_coz	]gC:hW^ZqO/~rxUDmՓU@5/:ZH[z,3CVA)uAuκ ӕѺ Zj][&Ԙ:([s2L0
/mk+c%W%gYe4IZU$iqUFAZVMbo3Vl*E금+[%'"@w(/u(ae~];Saa2a';XLo`+'.x˽aG$'tJa!64JHMWxmޱ]޳}>Cws,afyXNMs55JXje5)ٰ	|9PY]ih%,5'\jyL<wΑ'PxROiZslA7b́p܁>u#|5'Jv|/8o8SvT+Zk0
__OXN$`XGU@B7JsʊQr@'HR
LeX~Z6ŏcMQN2348':Kp&ls	TaIʜ9X@Y@tk^a4-b	],-9l@KG3氵cϚZ.h[-l$\N-`:y:mh	T:ZZfauhEA|fݣ~~H?yk矇IPKsJ    PK  C:U            4   org/bouncycastle/jcajce/provider/asymmetric/DH.classmoPw4'0ř%\XH2K6-dʇPC}q{~ޞ_OT*Uh*rAravhzutoV_~jw!ձ-(˝@޾"zKr4E*XwRv70;#n8ܵ7݁0%C."i;FgLX7'nc_zJ|thctKAIXz׋\slP:B|`
p(Φ:߄qBg1%FEDv-jOeK

r
*ƐoM!̵ZDE6K:;ʕZ[=Tf-
WpWy
ױ-Oc4VQXMuGӕ{n(+\1S:uB=Gx
w8X!A1Mkc<L*2w:_PG*Tl~`1~Es7x7<;qqњ61R PKP    PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings.classWWUjs눶RV&(He`C2CC[}}oTVu}?s\{3Rc8p޻Λzi+zN8Jh#I8N tG	!Bj±N H8p2p
A#A'% a=!J$qTI8p>.!\Jp9
W!\Kp=7n!ܪjjӗ1Z"f
OAC6sWԳ6ֺ _e/_-qE(5`#nDeR0'қ\ 12>"n6إڠnzL75+ndĬ̈)(}tQ\.͘Sν}EgT[[%
Abis`ZZj$i@Zml8CK4H0y1;Nw*RYY]4L縜td;;-?W^c5QVfu9yOX7}Xx4%?t
a-,cM
Z$6.o/.8tmhHEZ
<iD
vf+ޕ:McEteE6bEvdMdŶ1,i3͒{րAGX?dFa#M\1@X

 Ѧ1/Y2,0!K= O7GtK6Dsr
gV0߂Yd;rsDJijd
iÄ}H!jSIat_Bv>-Zo*xDmGx
xd'+`VDR/E'；ePdǌhLٟb>?5}n3c~;_	+ʃO*RcQyeNskz㳻,w0OtN%yFte{|Rp8-EVܾxpypwxpwypxpE+xQbs*&R7Ve2gZD$2ߚ&oS+)tG}cmk^>+_ڋQ<B!ęB%Bl!NCh<텅M^l@Rgy1罸cm.CxAxI-B,+Bl<J 	o
V)B#ĻBWDViijG=N!KgG	_??~p3~$.ZOo:CQzpj檇;h/5 TE5Pu"As܌]4]V:@]UIZU-Wx߳VI|`k{vHZ%kMI|dkvh-K[aI|jkY[gU;s(sQ\T.R Gq-xx$>z7[ P1|Ͷcj_Ҧ/w2o.(VMG~cEџ[<!<_QPKt|v    PK  C:U            5   org/bouncycastle/jcajce/provider/asymmetric/DSA.classOK@_Қj[oa׃A$*B,!!ݔЏICJW0a?>cP?>ZW5痻+|F{YYbRέ^j|aDUU"KL%[NWS 
".I=,
Gk5Pmt	LyeXsZSŅr8BC@p:"Bv˵ǓwkϽú}PKkc
B  ~  PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings.classUKSAN*@I&!1<GU*dY76
U9c<{ZeWly8COw_wON~@((nSܡK1Lq>O)QLt}QX^cyYZ^a`t$a3QL$$?b8AHi`Sf0d\wIhNoMM.sfj"lp{|UȲY^QCܬÚL5e-D<7SӅ)geU9a*UMY}66&U	.Cp
i=W'1fYFH)1e'Ω;U
[U"W*J#eYUWNJ˼%%^Ϋ[AXlp[jnYMVLI	0%`*~VFuTsfis	_2gxc6w ?]1Ezk_Z[n	cK9PM=WiuRٝwE⹈1GH)^PJ"c΃ Eos[/fb~H/d+$&,̲Tڗ'<jίIw 1x % ykxߍD$պ\m2
K3+ˎo݊WRtes5Qp޺QHTbb	 gV$^:<PKB    PK  C:U            :   org/bouncycastle/jcajce/provider/asymmetric/DSTU4145.classMK@w֛7zإO~\BAQMn
Y zwbP?>ZNO7WB/s0͔aQ&lZTZ.06W,"bƪd,g3eT؊Bg_
5z3ѽSM
-ap=eN@%4"VnThcWnFZ2ʅ1nb\﹩%Zuo	hc
Xw\PK@$    PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/EC$Mappings.class[w|TEמ3@@ ""AH
f
 ^B{U{{}}9sܽ{%<y̙rg]^c}Cd!'>Eϑ}Kd_!7ȾEL5 -!=? #?!3 +!; '!78B/}"! B9B?"l0a0@D%P!l0a"DaB 쀰#Nc!G3DjZ:I LF0aWivC;{"셰7B=L,M!D",Ba1#!EXC0CnB[nC;B{Ca
BBXa= l@x1@x)Ax9^@x%^Ax5@x-Ax=>@#>A3@+A;~@Ar@ΑBy}5vB`}wO$=
hHDՑD{2Y2৮T=mrmu]m)Փ뀍kC
z`U~fe[:;2n>̲b>;>c|D4v+#9\XgҤɹ*8e92mMu*R͝-TL-D˩"^f1]}8214SV4#ᆰi57O]Vpps6]ХXvP,R,/P,⎐3p4Q,N~h2?p.|N?pP,R,BiC;0۫5k_PJcXw~rh2V׷Hf
pCϋfW. ^}|؈r* DdF}LZfb4rHb4rHBg|<yi7m!VIZa;gI&36AS;f1"O8oVIA쾌84ՇgƖ܆4o^]&ۥ\

w(vTn||kxgNK1B!ǥIRBqQeRmLbGS3#WƋ-Dj4RQiQR|CUT:T̩olϮ<tO_sryܶ!
DU*YTG}c }^wPN)\7i])-<W#yӚyad̷y<"aZ>r38HFp&z"sfOƽfO҇ݮ!ozN";2$tj}F2.gx+4._I$;h:Zsh݊ҶtlI݈&N2Q*svqMg>J!^tFOtq
ڈd#OGۺ;dk֛M«TM"_]Dm_ހJ9T4׫P)؊h޶P]ⵙ)V5PcE~x[k}`I&Vzu*h"iU<5PjX%|
V)*f,_ꠏ젏A70cϠbH2RD܈hMG4^ɤڙ27Rr;<l{1y<g]8.|jw,RKV&cctè6bD:h<ǢcFuwkA:^iȮǨϛHw؞=䑧!d44ŐzT:UC8b
@_PTռ 9Zy`bZ<y`7uv{Nk1˒{C.EQn$c~*Xɸ<jxcri#7oտobM7=d9[C%,,ͥ|178Bi^A7~`#^5yI\#j5y	\#v580};k߳':K >kkqAmA:AR`I;PR{
K=بO I$IG+lYAtMy'R1z2r98CtT Ze9}9W.Y7ͼz8BЇRI#o{_
7n6]*Jv0T*
=r-4[ӌҨ+0ѻ@+➾g2E=+>ˁd^1t0Y'f 44fӨ*Fwߒi)$"G֠X&6WR`WO\ɮQ52A<[L -S IM@t^QƂSiNnf=G^:%dYTj{sK3-S+jl5t&Hgj#,7bƸ%&TXC>v1:d#W@*K~v|HfT2a[Ň4nFXg&475h&\TcYceh1s݉d{Ojʡ̹Pͮ.3KdP׫0hZ~oJ?}jlwWf5NCQyt6R!s?ed%F懲a 0a.B3<@88R_!7EG?!oG?o_䈼y?W PWe|2>.㢌W!e|2>oUƇ2M!YiN7;rlv*r2K!{0	f-'OD١]~$8ol{ӓp&3Tq_Œ/E3eSVmRSP_
$$Ea$R$$2$VXEpGXMHG81$%qI@D'8)$N%qIALg89$%qI\@B%$.%q+I\EjאV
>{oe
XΣ$T<F8	o˗V@9\8|.OXNbI]$IF弙H<D'cIGx'8弅gH$$ đ$"q4cHH$'8ĩ$N+I\TIALg8oWĵ$#~_O&7o$WkH@F`C]qyɭhL&T#Nӣ	f@$V̋h$,ȿ}Ư_Q +xi7+Xq׽(.Z?~[}Lv)

ԋs5#n`8Of
4[5G\<qŅLV#cuV;l|aZ
Vl|,e[V[\7ih0KܦTq&`wq{k5U\tq3U!`/q;5/ "֠UܣqoΰlqiyŢ_lgX@?!kXU<.6ER񅥸qWqWqWqWqWqWqW!BNiS)uJw:]N~t*󯮄&>=T,hpXa
ģ/hpxP:
hpxxb#9Pkk"[Ʋ?T
쏻dvwbeSkZpLzM*agCh	O[%IOYY\`sV)ᔖ
G7H
*`8Yn8M`8Sn8Qnq)lcw	,
uQ$
v-`Gq`8Cm`gq#`8GxI
Zk:%tJRS㔸]EZ[Zrk!^Ǌ75X-HGw48ZA/QcLtZ*Un4@f* V崁埍PǈJ>#Ѫq=7hxRj+oѪIwߪU;>oӪkR
ڙT
YVmO=!S%5+yL%`M%傲lzg+J.oERv]RY+aJ7%ueLvNR!tR!	QB<Jx&'D
+GJo?)ϺJv\ctӲy`),tfS'$^ᬗ<G\@w PK9p  HP  PK  C:U            4   org/bouncycastle/jcajce/provider/asymmetric/EC.classkkAi&$zI4b !ڈ@'qݰ]vg(/
 x6 8fy\8~	)u,0t,1}!\s6B$0:{niܨ?'󶵳{:UJn~dO."]pwpY.r^[z2nKP*tz|H8tt<%(=T_I3JRC~gܳ7Xr\%>Cn%C'ƂGʕ@f#/CGPҭ)`aMXǄuJXSj5P{gXX֐PPpYb{.aŰ>4r6;Yj&Pڬ/~֬S\m
\Z7p/XEiQfH7>W{nLmM?Q93D]#MǑ&R4)h_? #'dHASX8Pɨ#<
on"REv,>9KM#d PK֐DT    PK  C:U            A   org/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings.classWwU@Z"civ	MPP(i(,4LM3ufZ[U@}
wTWxGy|of2M&,s77~{w{?@;	l'^;	:vG`^0A'A`A~=$8DpA/AG	$'8N	`I0A@!!x@%ijPKNn[©?Eɤ>Q%]R5֭P[[P@44N4,uM3x
yb\WqW9\ *\4smCz@JKɵ6;,yNcr2-꣪f5m{m|nHgK4:{uUq!FT`Omn׌FF$Y5'a3B07<9!4WڭWsԭ;.EF1^1ϔƾ9jqdDJ'ĕd^1uM:>+}rChbŜDL	bF@FYPaˈj̺41<Ä4$B=:$N*r*!5PF)?DUd0<U۳tWS{ƮH^{gGe͂Q̈́AgDvCG*gsf$4]HuΖ/#fџ&IaOdT\q0}Iq'Je6*vb:!zB* 0	d	L0O]@GA;9eG{plgdWIDGCHI}O@d.a;是JIYc^^59\.FsBWփz0)`܃g<xWpȽ)#Agt>gpS!MQil*d.pdk.L0-p<EYM%[^kv4+RT:K[CPN3WxՋOp!r1E\$؊/u/\xˋwx/rs	b/_sM-pY.|̍(	ۓf/E$%j?{b=Wb)y-7n <LwT T|7GrKki-I\˧p
$7|40D}t=mTkkҼmM6	FWF/ld|wRhilMk+r>|tmZgi,WwM,[NCv4\3>jU&֨JVze?lb]aimm
:5o!Ҁ^6yrps^-y-/2ۢ7e2n?PKK    PK  C:U            8   org/bouncycastle/jcajce/provider/asymmetric/ECGOST.classN@bݙP¸iА5b;2IӦLIXL\ > 2|9/ 8bȞw6nw_7<v*v^{eݦV(&GBKxV?+o	F
=z%$z:4	<Kzz딬MM_/=tfeh/h(_0L&
6
l2!I2`Elc!IJB]K-dDBkB"1ra(qvޢfsiQv1[tVi!
PKN7  :  PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$ExternalKeyInfoConverter.classTOP=!2
"NE@!.1(]y,y}]#~2ޮc,h׾{~:a2}
G:za&PoӠaV]f	]Mɺհ֩-|xaZwuak˥2}SZ7t9I/d<c)cdXTWPM
+5^֩JZ$_
<}-QވfYymma֓ΡPyr"rH[vq[VZdCPëkB!-
^020l mঁ6+׆=yx5ʪTU0\ViBTK\/uv֨,O41	[/#Ic;i;TnvI{%)>{.Dѝ̸
IiNF
}c>q܋1GCÂ)<61E3ș%2Cj7lrŦ˒k!)0ܡ1ɠ)E)03_E,1&c1}0ΰYOI7𰍞'tW<'=X9<"yPK7<g  ;  PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$KeyFactory.classT[OQxnU *R(Z!BƧcmv͟/_D?8g)Ph6|3̙=?}`+@Ck<-xb8tQNxB I&兂T9k>WCX楒>Y+S"pdS̺ Jx9I$]ddTr%6Dxmǳ37BBS*o0!E	vF䨫1Q'GP(:Aڐn.0`4^^9oA^QAJ]AMɌz1؍cHNګn+u낯i|x	;|-"̿P.Bϧ9:cX-8He2U=穒C;Bo{1p1z7p@N8mCo<xp^ASH׹Mj|$1<7l(`bZltvP=r<`M{eHC-B,FY-1f-dW,-XHjq &L7mb7MǴ1qL\ĤS&Fq1\BZLѕ:G]pwQ`e݌s.IY]^
X5u%yOB1Yݤ-<X
eD;ZI? Isι
6?W[**w'R!ieu7e``՞O6vN6?agZ5=4~(zI/xPKbl&    PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings.classTRA=C݄% 
D	A..RrRyf7&e~.RQZ	@z2ݧޞ_0I,#(#Ne7,[dy)/N9ߴ[}fpt3Bq!u#DysA٬fm> m);mm	]aem|9-n~,qH^ɭ9_.f_|<c-s3E.⻎]2($Ύ,#`0Mj3]kVrj3S
3rp\JAVPmT­'-Zա]s᭓ڤј?55UmϘUǠ^Sw
ٳ+͔'_I0DY;3lkcɵτh;&Y!nm]e"~Lsdk]u-5>F8whĩ8Ppc
ѥ:Qஂ^̈́K*d700bM7!D7BL-3eg:ye	'er4rm>1QB`e.ѮVFk>
GU % bp!ax{lOcn8y>x.F<=b 0!.#PK,jXU  n  PK  C:U            :   org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL.classTNA=C-EJm+P1H,J`9ݎun;K|DM| xd̹wϹg><TDUJvԬa)WVam66+FFqy{D%EKBf!
CxT&sCec		z[9)]@<^{\]ߕk#͐/MKͽOAZX6
IKh5Z56edagVqo^d
1M4M;4C۸mmU{y!`!B

ӮTqMQP0&j$aW"h;rv)Hdltodx(%*bd1Y<{m{#PqL00TwQL`&I60N!Inn?u>jHU*DU< ]6B}E4CD4SS2h!<j$me &H8w[y21p">Ko'&w0{ Z%1 %BǠYϨ']ffqEDPKSh    PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings.classXSU>VNKz@	"@KːP#&5	`݊{{o-.ｹyI@>is{K
 T)S	tb % a)$4N'4Z!BJ8!D		+gg&C8p|	V.&\Bpr+	W&\Cpz
	&Cp~	&<Bxq'	O&<Cxa5a
y	k	/66^&BDxGm2c4r7fS:}f0ǖE
=fR#\Pi蛲_7LpvZwYX˫Oqesx_Փ9<*d|gj+Ҭɋ
d
Dg$sxf$sxf$S=ޚ1UU4tTVs-vN@m`0ZP<Ke<$ۘ,v}6I|@\2Dܦ4F:(kLIL)nVl`!
zj`cH*o4RNɢPHxPiFȈп=o-mC/c#\);Z-0NTN:12nuwj%z k8¯V"8ZlYB:qr,Hй8,oXlM~	/7Ѷ#1N#`Bx+PA5>Jt9iŻjSVC3@m
2iy_94qmRjLVZ5t:v#\
a^+;dx2:{TۗVUBZXU.*^{S;"/ءx҄,\F;t%RdSLjJ*R
IڔV6E,Q_Ydhj@ieӑ"7RU\z4T.o뙵KL#+`WRCÄ|][[P?nR>2odʤtd4sU<Ǖ٘4s/.{-=bḧ2lvupMrmq]s`
7Y
ϴ#ja庫Y]>C(XK_6<ͮ
 В0eϰ!;pNI%/bF#PUmb.b؉]	x˿.YF
>(I0+M<U)5>w-[VK
vUie9+g'QlFY

g3f(t4kPP%[X@!m
Gb7.6W8OQlB#O~s(Vl1B
_}|Wa̭l0BYBC4`
:MQh(Сx
a`9t"bG.:cAblB,Tʪ"b)Tl6^:B]-ԓBMTB$+TV.;ïk 
b;'~Qo#qgEVNĉeEr|y&>(PK'(Q    PK  C:U            6   org/bouncycastle/jcajce/provider/asymmetric/EdEC.classokPƟnKڥnnNH6p2\baΗɵޒބXؗR_ ~(u[A0{yr= OM&LX&1d*cRI0_a5Vy%|S?8<aȶdGqƂaFQk$z=ֱlzNRlsO$vm@z>WR,\bX9Wu+<PTyxDg
S
<@]w=aGqؗmz=Alf${s38u2eNIա6eT(X4d``ubcrUgaqD/ڴkoҸҽiRFgxm<aVQZ-<buC'*\cCD|1GyPP.*#u4#amZ)Pd6ΰ	2#ΰ(g_8C)(ޡPK.X  Y  PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings.classU[S@=`R"*7+\Bi+Yڥl'$$M`g|G9n4R:cvOvwm %Apm;w	'$"x@0L0B0J0A@!P	%FH4
IJ6ĒqmUK肚Yfmq1K+7N1ǏgdVZt9̊3Y1=XznQ]BQ]h[:쪄+nEgU^aK4'\ܭZi"oU
|ދIB{46xabYt`{ʹ
ʺmvsvtscJ2wx^D-1iϖ#jWC̌H7
RSo'~#Xk~EIJA%FX55x^/3\$Wjh~9Vi$RfWsvjs7^!g'Pmz5>]Y;UޚF
My	ގ~<cҏ)?xS	eӲpc"ѣ3)GFECU5+4
+evؚ{zp
"5alf9| p=1, a/`C"Y,0A[f^|	COT!a5/ƌx$}>WC|b[垯H<tI](!IEr:.e]:ecbIak1<PK  	  PK  C:U            9   org/bouncycastle/jcajce/provider/asymmetric/ElGamal.classJ1ooumy<`o/K(i]eX>%f+%0Mo _ 8&4/$5yz;{%2\E#*abeF
bTuTvUdJ'"<e|񩾫au 25

	F& EЊ"X's43FU*Kwq4>SOT	h_
ؒ=|PK- )    PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/GM$Mappings.classkWU߁lB0Ŷުh&\Zp)D
'N&L Vz]Z s&BfՅo`gga3?Џ_	
!B8Mb>B?a0H8C8Kxa0Lx0Bx(!N%	sI!A8O!'҄'	'	OIh(iX7W↮ʘ^Z,EQO,'.LS}:ٴ7򊥱`pn4O.j	Dj<:xZj*emyXox`/w֗<O%撳33I	a0V[niw-5{6v&Fq@Vםk?2
Bj.Ơh&T̜l\g1T3I-̏FN$)j
MYΪYM)YU!j
*ZVLUw9'fƺ5Z,SG/[޽\j\¹T6Su1rfNV|c團X9mzVKeEmXnh;jYV۲:ɬ"ۭ"mF#Bd25YֲDN3Yh(rdsHue 
Rb[j[*2&.+5ch"'!~nD[o]U#v!YkT^ЅLqdwc!w*D;a;&~	d%mx:e!;Ve^ay]6M\2Ht l /?y{ID,bL^go&m䐋ّyCPddh\,qѹ,sr!cXa/pYoF/ry\^*\^:7\r˛\

.osy{AظH7V̱
ij֘ڶN0mfFHK?٧>~s 	IV
2Yz;?c#zy&7jm[JRS>}-'%~kj$Q ~n?}I@`Zn?KX@>}(#^?#uYX`OvH`-~اXH~L`,,>a'9?3
+(4PKeh  
  PK  C:U            4   org/bouncycastle/jcajce/provider/asymmetric/GM.classoOPƟˀvVPs&#..A|yww]ۦ]/ jC6a>{O_~ xG&Ls&,W2Y|0[a5jɱ۝ݽcli,iٯ<IdrqkKT2AֱJ y{IHc__iB&N_&'Jגyniu!JyG1j7=JOt !({~[OݮSG
!93;vaʣeT
X0P0h`/$Fd"N&66ܚ$Id!XYQa9\}ZئBhR֞9$(.4SP]#MHlPևD
řS~11{	2C+O(SW<@dl6#;CśT{PK
:  Z  PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings.classU]sF=K 8j)B!6'&R\mpH1N\68|+Ȋ،#y$%?73-3o0J؉Π瞽{]ۿ_&i/(P8GqbK(&(.P\HQLQLS)L1Gq*Pj!H窖r	k9.n˶MtWLtJ6sy.3K0kg23R0ޛ03?G0SboT-f[6w\S#8t{ʩ(yTX~T:ѯ!Aui(K8{jkjWbRaJh>Vv`pMn	Xߗu˱0#{	'.ӫ̶rۺë%(:m8;Q7WMm`[\gƼ8
Mr^8RҿS@2q]k_oיggtí|Gh \e~b>"]zss.`~P;DWxaWUB_|lj5\_W\DybQ״'ڨŽ6ѻ*Nx9$M&0	,\ZݿLgәZvb: CYCLu+wHL;32V5v:=O*nKtD(TcE4pK%`YU;
r(JSJIs_5i$Ci%$WqoߣLp8T䟣`WǸZ|85x>2π@-p ^cgaciz4B1D4BC}G Mz<o
G
VUdDH%c4D/pC&4s?4Cj"lR	# PKc7|  k
  PK  C:U            6   org/bouncycastle/jcajce/provider/asymmetric/GOST.class?KA]E	j`#͡P"Ffw\&e%XP$b+70_ .OԦ]B\Dƙўp^sZ9ii#feH'-STp^Θ
#_EląhC^U
&ڄZ\LyeHsQZSƹr8BC@p*"
Bv˵Ǔwk˽źýPK_
v    PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/IES$Mappings.classR]KA=׮ZfV/B&(` 봍2
hUޙ91::4)h'Hԅ+{bñ=)qI6j[=.ll8܀Is=958Yldqs"ri2>VbRXྐྵ#Io"?JV.#M&µ}^E;ewC>
Cۦ 
i

JOA_;#6caM{*k~TqB48%5zM\6\I_O%dTbE@
)<Q>~2@p	QE \$}Y	wseSgp$PKb3#d    PK  C:U            5   org/bouncycastle/jcajce/provider/asymmetric/IES.class?KA%Iص"6GE1l7w^XV%N"!20a~|}|1~~1%n}Jjd\"f*/1˗NUfDU(|eʯSVk HF_D"r="pOQuo  Ox%5P(B/ʝ*[rcLe{	mb9fG\G<lм|Eܻ܇ PKt  ~  PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings.classSmOP~.z7
JQA[
ѹDC %YbҖήmG# Q?xY?{<so qcCq4C"axKz2f̺u]Vt;۳AaNyx"6I	ŭu;ڦ,TTlbHw$1\VAN",a*cas|HySe~~3k#+_LdI,	X\E dx'u(5N#MU0K"֌g34vs%یv,ۋ䑴42$Q+miԛ'cvLɶ.6.5QA3Ɛ^kdҟH[G~Pp[wSpaywk{M/]&rg2}3tr'FG6t՜|KxSHP1TL`I$cC)jlI
0Fk9ߢx49WM[SAs8ie-b[@W$ /i	,̧S<	6cOLn!-		ST',֪gl9% PK6j  ]  PK  C:U            5   org/bouncycastle/jcajce/provider/asymmetric/LMS.classOK@_Қj[oCAP
B.!!ЏICWy3c qJ_]bwy0~!R"&T+GU.Q%tX0U2U,b,uf
	Y?8pBMkW%JL3?SY0>>cķjQԄnTqsx*ʤC6α33Vϊv\'|мzwxq
PK8\R  w  PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings.classZ	x[y>4KB+;-߉؎ĶKā@UYVE2^
ME	ﻥ7m(t$-+yn!ٙggy	!J?G|W|
ב|7D(ǐ<[H;H	$C}$?@C$?Bc$?AS$?Cs$@K$Bk$A[$C{$@G$B$?#"#"y
ɿ)$O#g<@ AA(C(G@Dp  
Pa1,eFXajsE8| E"!#4 GhD؀ЄЌFhAhEhChG@D!  !EE؇p9D
9!""QbF#FH $&AH!2SGEAx^B!\b e/Gx7 UF& u7#܂z[nC
oDxQ7#oCx;;މ.w#܁>y/ |A/)o= K2[x͞x,fr"eSL4n
z;goh`G+
vxTusxFu"Y}Q3"vzZTe阋[m}[[G~#8Lgi4ٕLGQ&IV|7VkmnS(ix
S#%x3)MhO|uojj{@Η5roجw̦jFlYfbpf*mΉT[J--b6u},U*9wJYZvjCclil+e*թR*s,C֚[dQ,9dE-]bѨ"JvGgv#djF<Wa2ch"
jaZ6ʆT١NvN	R3MѾD4ajqU#`qjcҶ]-l8<]8V!XG4opWԪ25yD3NKQHb o ڀW:d{pRub3KA8W%4f&׺W'u/hMΜg3"lNȠ0TCVj]'F]/nn67ӽwr6
TEs`,L&<SدQf^0Dٓ7d&Lh*]&+<>n~΋L*66PVk2lg1EiEiuZT(I&&2zT8ZsC3Zu$vrȜn
1XE4J`CWGҭ#Wp{H]E8k1#u3RӒC#aw<p $&زWmxdCw'ScɩDd&NgCHy2<c43ّEY;G`2V'FhMlL&V?j{Ol8i>zEyΠkVA>?;D}$"wGy;o@=!갋]m &l
}o:qIänvqĥ %ﴳp>6Oz&4*אm\bP K$Q.,;př?ZK>rէBQxˬbZ fjaB0乶]3R4=TOl	i^έ˴[Ofy~9qr!mcDBl
 d|99Xj`HaSY(-jٞBj5>;C5Q^1'Eng.,+æpkcm̅u},+dm̅c]ᚌBr5{l F63'GooF,m!wd;YPYZR{Q!5TҒVIƜ_rT:H쳼)yɈPKmZZmYދG/Oތgn+;N=Vءh$&21g8Kg@0#
YM}Q,m_m-$..h%ed(Ȑ,Yڻ۽	X"M%q9v"uxtc6R|2Dd,1/&;ז+w1Ax,ku@<Eݧ2c`mpl+u8d2:`3Ɓg)I~Ra]l,&~Rq0[o:P> -%k+^5ҽȷW^#WY67VffTuPu'5zIFpf:>]:}x>:C>‏:cw]@6aR?h~!{ a0sfTWS-?6Yߌ/lPS%Bk7.=y:uFb$=71Y8%9ugG5$~xyc{/WB<xEPx.E/}\s.vrb!.ǹ\}\|Osq?a|<K;.,|]6]
~K\.?q.6O]p7~/]
E&k'|şx?;+/'|~oo\sqp,
q\uUT
pQƅo*UpR⢚.sYU(}\jxL࢒'..qHyor<
M$x8_yE	dY9Y'qs'xXi)+[. `+|OTW>A*H{w#O(=e^Lkvkaj,-7P\ZfEZl%Zj
@QZO(&5e5ZUΣר*DZn)r=MkhT
.-ZYuh	rݮ0P-Jڧif
[4bUt<zq{h}#c&LXkU&dǔTCtVnVì&,)cJ3!+/U+Lfasny:@N_H.,	g0+?"w
w
81>ɬFXVijޤGoѣзQzQ= ^wTgҷA!H?3t KGKGGG_G~H
wA^6H?li	eK9J3};dǕ.^aSYSX*:鑬r.PǕ6n1YHƂE
1D(,uovNӕL)*ŽǕvuU.}Ye~Ҭr{˲J#Y"weer苳ӗd{XF_-($FkDػO~FYx{72m* .Ӡ{S
RB*6z-~!D}=	AEhFT˴[LVD:گcq::*(}L.'t:|kS)Xy\B~i<N9{6!خBdMV4eUՔ4%ZaM*ԔUV!MYmLҽLS[!MOJQU[!sQ眣j90AғkP.ZsY(7xn%.tcxHr1s*KНO9!yќu`NWwJ:WPz%KSsG>uh1eQh(ɝk:<T/puR29X	NH[ƭM
@OC|~[g>388h-P8rK96/-7XVh~]hCAd{;ɞH{PK  (E  PK  C:U            5   org/bouncycastle/jcajce/provider/asymmetric/RSA.classkkAi&$zI4BP҈!Z?N6aQ^>(d{m@p?̜93_t:u:R!m{h4YI~jo!uX
nT MG{rEn۶r^gXq/$:UJXMր	;	3;v\J3K#1'}z[1+Vg7<dMD阽 #	s`-P#/ɣp(o۔7,BkX%C?2C
ccYC^CACQÊ]|gauvl^vgYgB6SQm]}Y6k{4na(e"n̐n}\3#}uȽ\~2X*4sgpI#M}(iS>qG)@^G~瓟@*HM?㯨P^qj
&"Ud")NZߡ"PK[rϔ    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings.classU[sF8bĝ-%-$M
8N'vBKl䍳A\IL3f؎z~:{Wo \SxO:0uq\	tqa$;al^2pխ'yd=[wUw<å]
=ዐ[ī*>NRE2dJ'S)=R~,̮k52^`8Aӝb=1h0a.bt&=jJД^MN֭[.bOX]k.a)͊kw׌v_!ʇ̵%Xpc{<BuyN.NM\#SW\{;bަgwQƆv2KԴb~hf=W<Q
CÛprY"{
	E]F˒6텞YRl>n3{Fn9ñ^eƟG\8h
hPG.jX%
>=Sz6G7MvDOsSwl~2V vAZ4oe9K+k9t5 *"@7L*)+Rgq'e8yq\-QPPKb3Qu|rE1kː*5zǧw(tu;H42Gs/gY~(Fh5of;3t#nf^Aa=~9·/PnJBtvۗؗKSC꧆O
ڧ9ڑ^cX3>#%q)w0MPKK{!n  
  PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus.classMK@WҚj[o! xPD?u]bBIB'?%N+E200S24TDt}>32<:ᏓLIpRT?)j-R+K?"$bNU%Ҕym|3b_>f9)[mW$EY:1.Z:C11:9 롋>C+(XX5^\&w}@aMxT5b+_
haX#C=[G~PK0l}    PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/X509$Mappings.classJAƿILvUתI`b`&"D H
v܌n݈y,J{C1
"Ŝs{}P)J6";
 [TCj7Y7P"fԉTHHُVMP|k(PZ~<Mh^ψFZ%WiIFg(ƞ@'dC]L@&Zyƨ=37A*a	Oi>sO}h9á
EvwSE 5(Q>Lª,[Lkvׂ"y4;g6
6TB	ܨgV>C@ı46љcl'_d`Ϊ[1/
f
[ 7Y4KoY'HIlhbFPK  d  PK  C:U            6   org/bouncycastle/jcajce/provider/asymmetric/X509.class@秔*$89nצ٦6%XN?|`:Ҫ\	?qrmHQ&Y8nTDDHV0nY&K&s_dEtl}T}x>j!* u4	*?HBZUʭ1wS->
.A<ppPPKw     PK
    D:U            /   org/bouncycastle/jcajce/provider/asymmetric/dh/PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/dh/AlgorithmParameterGeneratorSpi.classU[WU	BK5h2VzQ LJIR0L	>|յJ%kY}7}&¥T9{z:~pZ?bfʎCܴա{.CO6ϐU"H k^ $Of9/9pOx\zQa'\9Prd"EaЛ&2$#CYJrN{f8Kj,x?P8irĢCtWM-+eyQ
ɭ]k~fs+5_R.XdU4On[3%BslFW<L
{ElYN]+[  JZkl;<%vDA#zxpE5	S!"h1,bo8|V5lzEX<.;~Ą;Upx5镬YEO5ڷS+5fM/5ႆa
#.jᲆ4!aL{o13S{ZJ|Z"e.׭Yϵ})\xtZo̴jRiK)FǇSu,;FNGzVIn55[wa?Y8e7񶁳RЇ350w]ກx_M@Y
en$*PG:1*>0W
3
fu#%S`+D5uR)d);!ɝy!_+	Eu1UcW]Q-Ggz$\e3Mc
Dd7ZD<H;xGCFE2?	0W=
|<RKku|I>,(Ũj6UIxﵲHE|/b%xu|˥tt|$*%~_~g${wquu
GP&1	匢_:5Lj`]
8э?PK,  W  PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/dh/AlgorithmParametersSpi.classTmsU~Iِli	@yqiv -L_P
qMMi}C?M;cG=w[È{sι? UCp("^<\/&|oT7uw3Cd59u[9Ve|iueeגdUԗu6xF^5eY®#[KLsk2R8OٶeԬnH{frlXyV(]sʹ5jyٲ+Sj̬Aty%96/:l͢ahE&s̜n̝⼌TE
+uK5ڔ-%D
U
*-
"%e:jj"LW9!tTHЩ
_
|hU]WRRS+e
yRC5sʸm)36fr*YDtPgBu:z:4gQ>̮3.guʮr7#͢dQ7i%Rē>O0:TwG60]@C¶rV[ئLo,*9]6,VţPS/sSڦF=6:RXӜPjƔm*r̓kJv	TsWx	u-[
xMDLD"HqQΦ7#ҵߣSGܗ=}Cen9b8y[NJ5uk)g8<Re>)rRu	muf闛	pW9tCqp^K7$M	2RNF(Y	0'ݏ	21a[x?1QoN׸lD0>TKa$>Ȇm{9ЕN;NozcUipG]23A܀@?aiwVka>^8x)JП@>E0K}tQ:892x݉ѱL4TFn'(g |q
ԝ ?ym$3J+R(c3Pܚh&^룓pD!C6"RIÉR>Q_b''KdKhH<.Tkk;FD4yQR[DaTh
5Dz!
{<+"?=`SN?h]HJxr|}ooJȗŖiPxc˙2w>y)_[ԍۜѤD\	Wsx1I;@|rwӧ8ŉ1)c5*`(a\Įކȧp?N7PK>  
  PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/dh/BCDHPrivateKey.classX	xTo2K^	.L2	DC
[ھ̼LLތ3oBb[kmm]BheM%-v-(79o,	W|}s9ޗyCX)֕J	.).Bwu;\=ibZujp@A&ۮkX:j8~24#j$k~[4տk3mٮnj)%봁@Dz5g[DSMd|1
>#STjF@7k5ԈګZ$J*-15H%M@L@wLM"GBHM&is(f<SZBndO
/h1U{͠ՈӒɦ-lM;+ބ%5=z;ՠWM=4ŒH̞7IzhO3LD7RjC֭}Z	TpaF4|5rlko
U#mh{(flWd(Y҅ik0`S$"MɐRy4##"t#>iEǻ^RX,^~/26C^ݭeSv-AR*2!\II"ooF͠U
oSGO59v zUb;4+8|uԍAZϝ2z,[L[_UMwoܜ nm^5zF(-{{HUgebz5~(>uO#>7K)G&yoٴԃыB+Zh
|bʉyzo+m7fࠧe y;"ղ<~J=t@)oLd݀SZDW;)x-d0{)M6C\4Gn}$)1ӆgƌ}Fh1_M|s 5'~WIg_uMU]HBB%JZBF	k$pup&	%4KhAF	J$Uf	IhEB;[mNgEm=FU6<tWf8Ish*\w[ޛu
w%d_c-$ݣLwߘk&ffl)t̔r;mNXUsG[v.\,Ŗi#R??+c2wl'=."ry>S9zV&NJDҨska\8kxsRNW1M̩FUOU|o*_[uҰ+Fexd(;;ټ;nӫynZ	~Pw&}eDJwHGe/c,1'
#:w*R0VPT2,kL

H"e^d+PP
In@:xSNoP0oT0oRab7Aƛ[,\w(Pw*؁l]
=
.Lޫ(3|edY0UAG,G>q}
0>iϔ+E/E>pɸqc_r<0.CB?	~#`8 UaòdxT^|G>\F)A|a	~!Wcxg2B6?fa|aO0w2ndDe^yQE~{&{j{ɴk'N؏}Ƿ~Slt e>oe܊SeISeCxPSۢAP+QLԁIb
@=PuP ReX-R}P[i6BP;&3!Gq>$df9σbQ^dnkwҾfv\n=55.$QI@'\&-q{Tz$J+j=<eFRy\L;&JPwqIFW(YP~<%pXTUehAqKrΚpz,Ȱ.Kx0VJ/Xһ=.lNcX*Y3fҞ]d*M3EB,I7!;g+ǿ#ݧA}t	{%*W</b-]T8d$TX
K9x9w'Īt.r608gy
xvaL\ŔA9C0wqq0闕[jbQht-ƴ!Iy⡧&!6`Ц:)2Cww=YH*WB\rzgM\&mquF!9PgV|B\F{޷AkKqt=fHDX"
mDTBLe8ǿLw+RP; E#<&?[q"楆t>=h3>{xJ40Jĩ*ԙQ
fH'Ez+әLɨ̣޷'ZJJ[xk.Fz_FvkC:Β*R;+=➿0\GnvI辆w>^loކ%</R=WػL~%W#z(SE_6g:SjqbE*XAcS0$>$\JbH'?G7|Z}J
>hs.`7ö[o;c5yfkƖ}PK
    PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/dh/BCDHPublicKey.classX	x\Uo2˼.IKhI&ɤ4MM.)IZHi	䥓̛i]T4ƥjA:@qn,*`ydI~|~_;=s}GN b{	JK0+Jp@WM<[k&k^ev44G
O٣ZomWḨqvk^Cܦ膖$]
7#6P	^"B5&9"hU=mܩF"QR Mf4!Zo@@זP,hzi

z0]E6!F[[43M=:I`K(2o%ihF
5,vkhx֮m3xH|L`iֹB@Kcl}&dN&%5fM>5B{$nD&e ۨdNeԈļF,keJ8*1ѝtCz0 PZAhcFXcdގƬ45h3Da}iN_
4G1N4B?ASL8sMmgo3yz|.WzZeIRQJ`'J2IL(^^5j4
4wuHyT[ ,4pfBh6t>e`}vU<ZM3BΡ,ܲSS,;ugG6GW]:t5gUg{~	GB: mx#hߙN޺*C=xh9Kue.UrU?QARv3)zQ-me|Wԅ9ƒ#in
3VjQ,#u3>H#emA,?
V"4ںJZh^\t(E'Og-{UVKX#	JX+Q:	MKx$lQBMZ$J,aIh]%tH蔰lZbYIնߧH|EuO:dQD՞njS/(Sb}BseRY<+fjƦISpm9y՞g^l{vX.^*2;4'5mOk4KZNEM/CN4y-+s.%OV28k5Q[d}UFCϦQͬk͡1ղh,n8fim^*{rzo8'
T
k(ϼvO٪(?Ӝf=~7qf3L9թԳ|F-\5s<=K9>fo|׷7}ёXn+7(u
fHB
W2\ XAC9C5$נN]xxAȌ,[,aXpCoS0ogw(Xw)QUP)؉fX+X0
.ćacFʭ
j13qLd;TSfes?9W<;'8Dw91/2|n/x-e
C2T Wex
>,:o~+0$]CO2<%Cg4w{C?`|ab~#ec8jM8/7<pfj~$_.#K?1sOe_eqqG}ֿf&&#Egtw7e "ʴ]P V *$_ucTSHDc=2M[hv;JPHNָb1<~GPV>qrύb^8I`=JBD=C#X³8ABnzy6.cxaI84+,hy!8C{+0$QBwd;Y+G3˳<סIh\8$[Qpmzg>j;U8N$&m	[5`gz$]knt]KHs}EeiGa(4=uRJkeۓ+?O.>Q0<XC⌈ʸ`LiM/\p܍gV%ԍUaf,`g0!J9$@X+^?Ŗy(gGArrphd0\İtqQ6oLUIg5 RfVb8N;Ǚ8NsCsR>d!W+,%$?n	/cm)\+ငHK{>v͢7Aca8j&,̂$e1'iM^]zqM4S:Dg	Gw-=&D
%\hh驥COe+..NE7Ć3rYziݦpiW!a"VNF"gW%CDb"K"${>>./	
9Ewqgwm(pZN:zB0&]|:0\CGKӧJZ]Y^⢀&7ͮΉt{+ye_G߼to5<[5w\8F6[kvq>QTI]h/Jw@rQ8R:ObuꍂP`zΓu;ٷ}?$!Zl#`}!KhA*4ll9i"iT	[
>PK𨁹  m  PK  C:U            ;   org/bouncycastle/jcajce/provider/asymmetric/dh/DHUtil.classSRP]ZRCRAA/rԎ(Nd/?rܧ)2^9{O~,C,+1\eP[ow9>2nЧmZr!%Qm?+LP
gς+S`5]$^>a;'XWmN@BƑ?ܤsv@5Vzp}Flzֶ6[W=dBʐr}KϻUǬF%(qk^"\їsB+smE(\|.p_7*2es`}ߨDpH;焷'nF
n_ofkof̀!	K!ᦄ1	nHq3i#g@^wD[ļ|sG;YA?d` }
FRp'i0`P8(H@W02&XT(	1/.\2 CÜ$fi<q-p0	DSaBF>ƫnQ3G7zwN1wOXIXc9cqw&M0M`DTX0xsoo5}~QՖ~gDaS._#m򧉽P=ErX-`u
+PKFx    PK  C:U            @   org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$1.classTmOP~. |  51$ƻ+tM{!@L?4S0*M{sssz &q/nljRe+StC~IȚ(U=ά8aFչ̈@J:< fSJD9!FUB:K+ŜוcD^'xB9
_ǥcZ'Cg!߰E\_2UWH/R)`lA
fu,G1cGƁ"I?Drd'v'n7'7v|f.	7y7YҬԓnt]kھ*iVu7РiHk8_ÀA
G4pLq
'4$5Sb8]hK61SJ*x6WdvV[-	ٱ6L_O̷ǿS%k=3p
Y::@JV9K8`BL8:ᦎ.
pU0uY>jϏ(B}rÒR"Aѻȃ'	:oNK 	QzO=?[z䢓QyA.c0ۛ2>	Dyf
qy?BcPhbsӅ׭x.k8M7#q"TPK}GP~  q  PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$IES.classR]K1=kt֏U>
+OBae,IgiK(1YH(4{os`[C){秗$,]6?3:?LR&.uѵ9&Pfyq"Teds:_Bڔ2oIaɜ=1B7.dinjJغ.^ZkI["ͅ):ZI޺oZ׺Xc&"&6ʕ*?`,KVj`Æ>'nUyVw~
k]\C`	F0ټ11xc,xejr)9稶1dP¬94
øc>}$Vn>1{XoM[}aL<PKr<  D  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$IESwithAESCBC.classSn1=nKMM/ܯi$`QKCEBGu7.nv9|OQmDb՞;'`{*Vf F	4ba,FkӓLIR)26ѪqDu@P%8RԬsǍd,SnT׍Vmd~9Y#(\hzvZKǺt-G0Tq;Ȱ6ۓ'˾Q=PԦɅBAPQ/M{M47uzsSP)(9ybocW֊%/h
1Ǖb~T._yJnT7mY?.T9L84:nX X;VUq;%fVΒ ׎QqF-]Si^!g=`<F3B'K(g7wU^Ϣld(f(egx#CPKv  }  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$IESwithDESedeCBC.classSn0ee.ܯe`1(hHH8^$Uqx~QJ!(}o<%-̿Ի>OӢ{L!c>L龠<
tBY
Xzʔ{mHġFGq4#(ntܧ.n(b27w#-AW3ҎdQ֪AO]3}ӺMM#gpAir(RFQ$t*9
zWeOR&Wej0ᜇy|=<\ (߸j:QyŶFNJlsl(fJ*>o}\q/RyȴLq5v5LU9̀X,Z뚅nXM;>V-ᖏuq%jy	^'AߣgJ	.}ygp^!g,`<F;R7+ݯ(g7ĺ?ƺqoP232/dx8#^PK8    PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher.classY	xSו-ϛ
b1A 0` 5ِ-%EtOt7:Im62 43әv2g:[gths{d6W{{ι'^ɳW lr`kXznsŁ
:сMlvtg8opOTG'zF[7$<*`kxo>[aB31cUN9+i᩸;	%HoOw`>bz&C	=(~`o?zR']&ɨ{TwkOuwhCz/g@;\Y@46IPr@%ǉa4uXG6$݉T,' [@Xz	uI
;q՝Nl69z :xL_(W zwx,%'rQ O~=|!OP&Ƥ/+z	GCSUeWIaIu XY͒ufXO^eC`0ĵfJS(QH,H{M=DN@~f=XFá@>Qy%-z#okէK#h!	DYdZ$+kBO$cpb0	膐56Z~d=6Q=:ah7`)c)2Zb\xL#t:S'PCgO\jDȘl@qH氾pXc	=04$-+sRdhJY'Q=P8(hL&:yT&qoOhIc̹Fz Egi[PmENQex>-p*0d^Ϙ;H	p2u(hc>Tpf޳@|2Zͳkq%xY1;nM8و-<y<!Jq?'}{ח[n\,"z~O1gD*{)OPw% 7ZRvwBt6$1_w>EFb|rVI=g|)yGH`2O$z62zPf7I[KquG)V1KK	^ոM^
vy=n-k!ѸYACP|w'p"	ZUJ\րi[vbD%Sro[bw5. ey~glG"5%Ћd2{c]^brLCopܛ}Q
t7Kbv׫?C!roO*փu+RP}B7
BlnYAߞ#4b$o.ltJ1,@ހo@c>6+w>oK^zewW{%<Y6^<tIjyᮏx{*gm9Jѻ0n>q=ЖoR{")UhYHd4#lRa#c5cBWЦ^)_
Tp\_9`L
N)+PQUS𐂸7*x7+x*xG];S<
ޣ
ާ
>
>
>
>
>I/Ձy_;0೑J6K6kwXkR5LŸK'7FO䎍1u@MsVd߉t[@2yo_%(=Iq.9sB<F3r$^⻅()PxS0~RZCna<ˈKU\!Qډ"rjSi""hA;PǢsS߂9<-]^ZV_6_d{]V{a\cn#%/\G1__x<rKXKCsfϮtPi^o_:ź[>.hBubWYx';=D8|bI
ǰVglG3C
GRc
bzn۱\.{0B/0a/~Vjx>&
Ѭ7VkşiğkxЎpFQ{
}}'
Wikxqa[!/7yc
'v F`PƠ6vTU4jT|A,e`U<!֩Xb|YQ$3?'mCyQb#*.H)ψ&xkEQǠQůΠkNlyѡq*­⛢]ŋbJ;Z`ffaЩw*#.D='V0p=qg*<'TwŶ*,60h^!j3~k5?pj?vsm Upr1'2u9~\Q#9Rˑȑ΍?%uT@!C('
g=ȌxӴ)=O>yʧE/|iO-Uz,zrSo;=ψi1v5,-3 r_̝i{ϞÒkxx@Z9#] x
\z=wU<#EL-܍2e0$bvxh,,U37Y|i--ΈWtT֠mx´>ЈZ|eփɨ]oH#M2aUY<I8TӂM=;RQ~|nx/mdiہ)6؉}ru
TbjY=#,)d |7fgkxb_swM^e*٦p=d{*ޘ:73nҕǳl<Y9iKl(˒IɆgobIZ&*EmMm
u7f33LDֶ;4\4\2#FPOyXZ%ۉWL#SNw\ِwڧb(.*|?xUliqOQ
-+QpQW<`z-=B
':%'OX>E>6#_stE=-3s.%SX︆m8k˨_G~ź_>xSHh*l_;GǺ~xxZ§	9
x7E\RQ^MRÚBxO8gvVJgM"Iioi<Ļ\*crV3.O#QY
iFMUY_yhri[˦%f㻉/a%c*.-BțSiJ
.Ɇz/ F=okjN!9!VY*d_g\~@<U4>|9N#&:mfpfPjo3ÛgD\Wu4#zF$:-E
:\lǼ\ɡ)40LHƸl.ە8q183⍅]Y<OQw:\u.WŌ,^aK#tJlvQ9U`H5
C3':Grɴ89˖VX8ҘbX-4v8kfYjTpUV荥mT׾B/Z
ф0Jdk!k馻V2ƥʬHuV*%q,) g/h%~^Pߤ>PKX]
  %  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA1CKDF.classQN1}
rWQ)&x'C⍼&h?*$>Bx
Pfs{~yxPr99C~GiewF+g^Ǖ*/
	K_7ZR$I\mc."C"mЪ(t1]vy9ҵªX^7V5yEEت.7eܐ!MQ!."k?kZ[1`'z{<<zV'zeaWNm!:7x
uԻBFu8`] 0Ą!L0cS>F0Ð+!1GڱYn$+u0w	.f\c.>jPr|PK&s    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA1KDF.classQJA}1rHrixRjz

I9vHzBO0)Qb. 2zjt>>`5ptɐݓJ*x/mxVgp}MPb3TBN/"&kB.M!e+y#bIHfPN5Pd·1CGr-xW=$Ew:dyR5b+W`9:pY>2lI/DOPoyT4iFn=c&m*avaf\c!s6;QmEa
6<fɖ|ZZ
X(FwXXZT PKn    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA224CKDF.classRMO#1}YJaf]|
H7Rǐ1CJ2h~"(X.avb#*GPl
w5~W`~prce`kZ;7"Hyz.չVo.Tuz \^	}v_Zj5ʛrd):A޴e$~
ni$.환TYwFRQlkP	0 XlmmW17)V6Mn&:9{eBsCa5Uc	a.8fC|Ǽ@22ʰ	Kf(?2[xY?a>ns~Y(% PK>Ti{    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA224KDF.classRKK1k:8T/ROA-UQPzqfK6TGY|Ճ	Lff36Ƒa-0darvݗY;;*K*k=P6W~ȴ:@uHn98t1R	umql(:1l(2UܘGr-xW= Ew:dy/(j֕W#zr\eڍ/Sf.̬_lm^m8
iFj=bk&.sa]Lb!s6~seyQD61ebv[*+iYk{l|}!#VX`nkuA
PK/C?t    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA256CKDF.classRMO1}&i-JЖCbJ{	D)9TZyY=m^43fw?onzeRm@XZ'_yjDڑ4.ӑչV.T
z ֜\	-Oe3YMj'O"7}2	e4s=zХc*h_S6/;* ok{E#ͦi-)uzjd_Dv%4Y-rf6;͕#V!CqOB<N
<(7Ә/}g2&{%x3˗|E--X?5OPŏ9X2PK2~$    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA256KDF.classRKK1bk뫾_KEPKU<v\Slɦ-<U(1z0|L2yy}|<5Cn_*i&+W}ijJ5	CP&*?EdZ}wLEڤJJj~v`):\(6|Ji-^E*|3Hn'v>osZu$6Aauv1lIf/^4EOPَTm8
iFj=d0a5QL0b3.1ǐ=d?Й<n(kd1-R=a>X`bkuPK#u    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA384CKDF.classRN1}4B	Z8@9\| $J@p@x!F^)U >
1[h/(-͌=3of@+(	W7N;+Pi1}Uo5[v<=_	S\wIj}*Uzddk.{~v_Fj5ʛr}O@mµ7]4	e4;Zu4ɾK&&'Uz2Gk7'X &kՍQ#=O-VLMJvMd[ȼ4:IbgrqEªb.CDb!fYHcthFWeeXGKf(2[bmNal/w~ai!޾,Y(%L>PKYe}    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA384KDF.classRKK1bk뫾_K@+Z(xqMi%+<U(1z0|L2yy}|PrYLq!+4U47IwC9
o"2m⾎&"DR[%%5>]iiaBq[ns?6~Ji[#ۼ&L]67fHn'N>oZlt%ֿAaqvT֊$3+DOPo؎TPI6tT	#CUD20ĚHD0&]xv1)aMXqEQhݖE{ZGZ\0|1fJ%7PKxϩu    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA512CKDF.classRMO1}&i囶CbD)"q4aqH	ڟ)$~ ?bCmify3O v<@q.P7[㯛G[۵zC Ҏ+%2Yk6IOJQb͕ϕi7񕬥Vs1I-F-&7\MpK&uiN3Z6Fy  A cBٰ^XSw[=kmel74_<
Ϫ3_4Yh0]X3
1>|I|(Ҙ/XVYFV0b	+QaX؜#{,09K,CJc/PKbl|    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA512KDF.classRKK1~|IjK(xqMi%+<U(1Ke`3d
 0wRIs0U\>HsW2kP&W~ȴ:@In9(\iiaBq[n46
|i{#[$LY67f8E'aW6Hs6-}޸UZw$1.f~ve$3{ך+xKmG*8J6tT
#CUD1aS59̺0bs.&)
\q["(&m4YnKe=m#k-`iw w','fJ%PK?t    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithRFC2631KDF.classQN1

aҠ"fIL$1XatfF2v^4ăm2曙
,)tM9Pu~jW\E`z3ŻFJކ=!*̗x}:m=L<6QbHH1AxుXS㒲(£>uy;89]k糓&{ؔ!|	|bʔ.&3,,bB
	M(XB5t3q"("zqKvu\(̛'l̰>x[9 PK¶T  K  PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA1CKDF.classQN1=d`{b`Ә`Ā+ԡ),WM ?0M=׷ '#KWS4Zqn4	\3"} 8tHo	g
u26eb$w[D[bFFʺ%43&s9
4܄<lh*{BS'0ZrӶHߍtǒG? qwP 8˝y|Q%8ۯ2:d*]ی
uBfFa+2XMaͅ%]xX'QOxD0dq,bcVC`X)g׏؜ac/ETEPKnS  R  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA1KDF.classQ]KA=ꦖPԓ!b	AzYGtWfGcVOFA?͒!C3psÜ;/o .pF!RWҗʐow[zd]EBS`FG>)r:47=2D!oHBFXS#EFty<E4"_wǒ?ӟ,R,ic>pŉG^s:1|(|w[|\GJN41,V"lذQ,6G_yP!8BΰN`]s:4`\d=;Os򾩶X'PKŸS  W  PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA224CKDF.classQMO1}daE>x \n $&kKqn2vE/6I;{{~PAIDtM:J:Ayf4*jjd̈y=zL8/(yZPh3Pܲ32PVB(	4AyH'Bfb#/tMYh`H"j|7ҟH	\AAX-g1I&Q،Q)m;ʫ-	-gmbF"8\(XCE[f0Keh,E#j|	ظg_V؜/ܛ'̱=xF昞DPK 5U  X  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA224KDF.classQ]KA=fwC/bO`J/B^ݕ؟ՓQGEX9rϽoϯ *8L!ɐpkҗƐkr4[WдH1w#WzDUD#Ё
ѕ/#MWL7rěңPkCy芡K|"cJ?"{pg`XX`YHYH3827#US/N<#{gr)9Z~|hjd!gF:62bH6>1d82{r#fn+&ב)K	;slϱI>06 PKV  _  PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA256CKDF.classQMO1}daE>xpibC ZR.,OM(cW!l̼W I#I3izf֪7\f<>
ƊGf (ZPwh-Pܲ32PVB(	4AiK_F_>g}.H0ђnDTn3W8)Wlg6I{P}6atO;󄖓6l1V#Edjr.\\,!"5d-
k襲^,E=,j|	,ظe_V؜/ܛ'lL>xF昞DPKRouV  X  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA256KDF.classQ]KA=fwCˀd/`J/B^ݕ؟ՓQGEX9rϽoϯ pD!V(2$.'u!l?H=yl1EB"P焎􈸣K)}p+_Cin7Kn	pC/CD3'EǤtx;]E4&O&N`YHZH1enF'8P	=ӍVHəZ3BS#UlC&
Y66֐&C!Ñg  GX70scX1q׼Myf0WʳwO؞ckO򾉶HPK7V  _  PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA384CKDF.classQMO1}daE>x \z	C ZR\[0<a4]ыxMf{/3ޟ_TF Q,]ΤFkJld̈y=zL8/(yZPh#Pܲ32PVB(	4AyH6'Bbb#/!tMYFhi@;"7K	\AAX.g>I&^ٔQ)l;ʫ.	-mbFX"8\(XAEFKeh,Ej|	,ٸc_V؜/ܛ'lͰ9xF昞DPK0V  X  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA384KDF.classQ]KA=fC/e)f(AzYG]Y=~T4RH=̽,)|ǐԗfQA]?=v-HhgBp+"wU<!( %t"nt'W;PYh(-np<t%>VTIqţi%]uO(нd)XX,d-rwQ7FjG_du;S}xg~x:Rr*)&h<XZ)nF
6`H7>-f
_DE8&;o̘b^a?ckȻ&yOPKO  L  PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA512CKDF.classQMO1}daE>xpi4z`1x 1XK]%݂ٟ	?e^4ăm2v{
;i$	^ u&4\ MӬZAk}ڧX:2_1[bF\%43&(S9u4؈`"BSFá0ZrіߍtF? qv!y&)xab^&iǶ|rۆ-jd,XC΅%]dF]a
T֋ڀe[7k׊y{)֧|oӓ| PKV  X  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA512KDF.classQMO1}ta]Epi$r 1/$&2YJ]-Y0QnЋxM3tf?^ \04CXcXu\(iT+Vq	MC5T">qWrRB*FW5E92TKGnpc/#D39 EǤt`Ȼ7<E4@'g?`a͂e!c!pR,uhpZ̽QLp_^m	-àm	tB.	[6ll#o6Cl&0h"(16L59VL7#c
s̱E>06~PKtOIO  L  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA1CKDF.classQKK1bkWU_ z(R B1kj-ٴ?SE@x0<`#H$rAjG*iv	&.j\W7K'
˵`F@2*q\GPk!BjX(`瀞-N(P(	4AaB-K_¸͍v%79krA;:ɆДQ-6鉈v$ ?Aʁ``=?.E_91q2wd=F[LjR~q`w^畅7*6kCC1[Svƌs.0bRޱZ,E5Lh|e"e- S&HXxWb>>jVtQ}PK1 t    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA1KDF.classQIK1};vR
R cLӔv$ie~?%fp	%ޒ`1nG*R0~u}slvV޹T|IXJ}X.F2q5Q"X%_/Y"pWk8dNx]ZB2*&_MI㞪$6Y$7%-:	6~ð>zq2kQ6aeeSo(5Of~.#W!zª8`] 0ԚJE(}1cȝub#00aTN.;oyg>>b>>9+NNYryPKWn    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA224CKDF.classRKK1bkWU߯CPo-UQA)cmdce?%f&of&eV/rh0zz~q]rY<.ipa#!nL]CqiRMe'}kuðwM##NG(peXpttbWb_u)Rں,ql*g?Vwf8ʯwygX*tc-_1)}pRmB-pkOfǕwL5
AO^h*>0#A$CU}#C"UE7]6A
rdky\>`f?sIS, PKew    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA224KDF.classRKK1bkWU߯CzRTEE xMiwK+<U(1PY<do&>> CaWE1_^)ۨ[*C 5	KX&d"-R'sj6E;a0lge6ֆjĒ91ldZU!6anJє;::i.LnJzRb.G<<x<zVJgY7zj/L:2U:k-:̼UH*.jW+@}1Z( S>1cøNǜDn-a,cEvTN.
f7	C=<!~\=,:;1PKٿRs    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA256CKDF.classRKK1~jKEQ**(cLfK6Vgy(Q/)L`ff&_^^a9CvKNﴻ.쮬o%@Z%bXl/[#)bWS\ڤ".BT]	dOZ~0uSHeӑ(+\d!:]Eؕ؄aWpUTa(EY-yrC3 =d=x=xKFfa1WLJWES0!/SK&lqEeu9SMt#@Sk(>z1#>8CU}CCj"Uy7]6ASYaދ&\<`?sfISz PKqxw    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA256KDF.classRKK1~>m/_EPKUTD
ǘ۔v$?SE Ń	Lff3M,#[(^1wU՝iHMһa#!o#HalI\E@%?=[YY!EAb}JYyV5yYdlEHM~R4$;FZdV秔|Xm+|<y~|B,FaX-IG
g
)W]GQ}ٸ2iVQSjEO>X*}bG)C1ia\#cN"7æ01bn;*'i
ygq.f\?`.?rNYrxPKAs    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA384CKDF.classRKK1bkWU߯CEі16[?SEg}H`373`}2d
mma==ӮV9[(J8qŰِ_EF&RĮIE\V2Ⱦa;z͋T#CQV2uCuK:T+I	ίuxFm]U8i6ZjJK3`;zy<y3,VO1rᯘ>]8
aB^L5'3J;erjȠ'@/FRk4y` }a![>ϑ!
*"ɛ.FHi9<{eSO.0t9$})JoPKBa6w    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA384KDF.classRJ1=uo^ھjHA16-IgTQ(1PY|0̙3L^^lb9B!"eF/W77O@j=M|D
cĥN6"D-,w(a
)"-l
wKPʻ*$c+B:l°ܐ!uQ5\":?j[1\`y{<{3gY7zj/L:2U8kM:̼ƕI**.jW+@/za4R1c>L¤aL3s61dMsQ9Nk;-'^w1s]v1tʒPK-s    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA512CKDF.classRKK1~jKuRm
JAӸْY*
 8Ddfɗg F3tΐFm;+b!V	>"D6i*UWq_7;gTx!2jtd2
YvNxQ*v%!)6a\*oب+r'rVK^G*nzGYn=|q>dXҧU&LԒ	7d}\QY|DTS ЅJŰ^0>1ΐ)DEccMMP$gC,`ry='jaϜY>%7PK!jv    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA512KDF.classRKK1~>m/IR16-ITQ,>@e`3od`K1W])0z~yulzqZ0Ra،uoH&R$.uҶ1&jQd8FOvVVHiacmqX2G>RVޭUM^V![a_
I㎪$Y$)%_-Vۊk?CރÀaP<˺evVaґYCto(UQd}G6LZuUqTqTZz5q`&}c!w
)!ehێwZCYli=a𺋙'bE'}S PKw
s    PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi.classYxSGeV".A90)!@
)`lH<K϶@'	pʥ.$wUr	R		)N{In'IO26;ߝݝٷzgB|
+Lt+TZT+iVh+gVhB+|

綨t3zFq[n.wo\-k+zYˁl²SwFv6ivn2K~vˡ*))_JGHv#ʐ6T=k4bΞd"` a9g Q"}ްh
yͦH_ǚ6B8Qe)FCBM4g[,hq؂%fk[4$F9W55,^0?JY\tJ:Ubdx{zk%Zu=&{!Lj	좊i*
nRtI^%L|b8ڼHĒ3K-f/S,i<UֺarGu\49gO!wL[#UR2O$_oP!~u)jݔdxubIQ~w0D0t#2Mpq7NFsG}|"w";铓yOvOTNO[(V)AȮ7 7kńV_-d:IU$2i
lv1)$qazn#i$%[gh+G~0vUAܕ>"䴆T [ZuHHR>)N=5²B@zKD/Ҡ|viT->+:"rX(d1OWY~)Wߨƀq(N+$CUYUh02/i 8%]0j7{J(*hOO+d4(GrruZ;7,1Y$
wxz(\AO{p7.C:M1jA'mN]ѣ~ٞTz뻃рMON8(nC7s	&ڦڣAmQ.Cۊ>Q.MOW(}|rμOڂm2
29&ni[)]^K~?I+^w)=~*"YT^іOv2qɣ(N&Ws2q:˟]L
Ob=&=^lw2R0.&20.	777ٗ7wMғͽ[naY.',;u|ϟybd޾X׌cx}|-ӏnCne\͵k8J$WtyQ(2!B1\}g)2SGqe
G#8ml4-ך	~a~TI4j	G6"
4
tp'+`|"v	-`~B!WFp(&7Enp;).wGp<(G|T|\^Iu;!T4Yo$ZSYVFF_S|+7)<fekd7iL^zj.#nkoGg)[LknЖ@+^EvEg#鐜+wX4yCڳs$<[t4wQ<H&KdaӐ}rEAX-+k%3 h&Q
x~uu%Ez%9faǽXv*c96ԑ9_d;xܙ{GV=A5H	'Gp4ȢybZ<bky3>U3QԀ?^yǒ_&57|=?ÉƟ>vsv8F&b8v?Ť&b&cy̼
;la*ɿp[\R&_wagpvd|`vX`Mvh&vX;"nG]b1u6&Ёt:KvbʙT8T&&ӘLgRT&1ɤ6؏6xklc8&5L3i`r.56Fɳ8<:<Km#6xWElKds0­2˙kL0idd
3er>j}-d!EL(2(2m=YɄJ&!Xn2%ӗ-JO
՛QGDrX/:nU:ALХ4^rS)r!"Er*nԑ.MBXkaw?ޝ#L8$
	jjxU
N&S
MŢufI9DUuIQg.@nsS-RnmuEAWႇju9d]jqYBV,u>Nu0<1_O
L]">W{=̌xW9M^sáVA)<$mP`%J608K+1ThjVVah|X=!cؿ7:WEqqܹTpKCİ Amvv6&lU Y@cۥZS=ޠ
E"K84(!xjsHjEN{Y1p	8P<aҒc0%x~Z"ڤZ=+LVSIL5b!qDn¥T8^{a3XYE3͡S>>
!8Ekhm{k^˦&|:Y/8
C!5R7/gyx֒]>js 861Y"ٷQXW=s5AU_U7QS
c&KZ];sH%{&U*9T%&G`/G]¿	ܬbq1tI
77m?w>x xL||{ #)	|;7R\Uช\ûAM
ZV=)@`)\Ewy
jGmy1
!Z22ٓ\]OAq8]8
;>.yXu]	^ϫ1Tٯu'CRW"7߃Dq?c̰
>I}߮wFk1s߇oڷZ]G:/7c8S~4J*a}}.Zia'&?ꔕٞƋjUD߅:QF*¯:	NXE
	I8[Mxwg~p	O8tT!!1k	B{	J:N8$\H+E&\L³Kwgp)p9ρPKo
  ,  PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi.classWiWFl&kӴ&YHP@Z4NW!OI&Ftn?'圦7ݒro4Owgޛ8-8*☀,T܀4K7
E4/
o{N.5[Fq`v j"LoOԀn3#1(&e&U
vV nx	F.5k#( jR9[
NYg@a!|4 0GY7#Ɖx7q%"$pMu.Fl ꒪2~axYc	װLyc+C1աKXjl֓|@a6L}0iĢ|gۼ7Ӓ$,Kjֲ̈莵6|N%\K1LWT9F8Tj[{r=XSLU'*$a^vS	HuܲueJZJS71O(Z@OupbQspe^Hq	K@wuroORlr=JpS܁\}ʥ*Ϯ/hƔm-Q)<RنD=;h8kToCFSUUldx٥KEkfʝQD%nm"8$Ⰸ#"Et%⸈n'Dqrnndj퓕ww{ .`^\ȿM.H>cKV'<ƣ5嗅cZVm<)ļ}r5xbNS AjeyGxW?6bBBwTyfmPJuF3PŒV,IG=QlvQ:tGu#^^jX[!sQƝxPnLM؅){4c2b?=2v",cf>(c7xTKD-x\V<ɧOcC$b^½`N㊄3rsMJB͂98pqnܸarskF9(9n^0g6#EnG^()QvUmqJM#6	!%=v(ԑ?{ _9Iƫ]~_@;GhzM|+ oeNTSPQz7ٕWiJ*GONC)=	v<7Fzzr	b8di:'\+GUEYy_d#K]gγ#*_ʗǤ2/K"!HmgY#ǈi,=HWҒ9WD Vj[<7ӝS][	4^p73,^7dpT!׳xC-hE+mS/*>0̳}F@PK    PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/dh/KeyPairGeneratorSpi.classWwU}0R@(
i1TMiHZtHds2}7\mШQzLҦYszrw	@=~/GE9%l[F=dDf	eoWgmWON_Wy-$JG#fD0jVfj8yI[3L	K2;,I%AnIXN!+])ζYk8
*[Em q-ȝng4	b{H4L

V2⼟A_>
i	z|j&3cHX%xSMu
rTNn0j}!ލkP0JDYMLmNA$bdʌǸw3$,#iJ=u ]_'j=}DDֵTS|8L⦡{ 7'+C/7{xЈ[Fb`&#qYz~6
<ٙC02zfwwlgv΁$~f}dr`7umP瞘2&4{x!#ϭio̐)0ZHO:Ϝ6ARᬽ2]µ铓s9(bڜY@vhˊJ[jW^XZuԾ#QZ;eSPKVf/r:{8X]d	޵a5C5C
W0\ɰa-Unuuf0l`Zgp&ޮ%݈_΢F_o(
xK>x.-D{~D};[<OK2a͢i'-TeX.TM'!lWgY	W]G!T(XQW7Nc,6/Y2,@YtXh.![FwN'oeLeUX\eS$T!nST2yp.>áC͢1
@Vp)+Pq-SMKE[fh
ѧ`9J0TTAt
\.,CP%`,AHB2
Q+Y0#`1bf	^7〘
+X؃C'< ȃ<$
hS2ZV<-[2pXFXnxR7y[
 ˂".(K2Ų8"؅e2[񸌽xMxb>x~('~8kZl8o!t;xdE1h&@QIcT@{#Ւh$Q-X.RM+(>Rc逸1:j(VCo0 ԕB._r$0,qkY`A
%L8Z>Q||K\[çU$>?"N1V]zzGQ+~#+P?jm>FՒ<E
Ju*lbaT#P[7c9Nzuco%"'Q0]4]G\F?,
9>ׇTuǱ|"/QwJu|GAnI]%496c^Hh'P$=P\Ui^zI?Y;54Gog
mv3)
P~J)1bNV۴a_(WNY4e
RNq}uBc'ZPKb  E  PK
    D:U            0   org/bouncycastle/jcajce/provider/asymmetric/dsa/PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/dsa/AlgorithmParameterGeneratorSpi.classVmSG~VN,((
BK<!`I3&DͰ7,{9?%Li_pgT%U1VpT>lOO===3߿
`O8{q$#%1p_A,H+hxJҙDSsE?<oL8b0V"%?0(nH
{<`V6a,N*َgk-ZMtMm.f+b9XtiÐټ&
w!˭RpUUf̳͛Y(Wpt	(#e(9bܞ sVC=ԤT#2zT)06gY,.7`(|s:<Xu,.p	EC;Y"4R'f;!pvCNQ?5n6l_؊b:y,\+:p,3&e?[td$׼BԝgaVɭ帵	bzǩtĲ
(Ba,r
r_2΍
舐uj	Br`dl3Z
q\6F'S*Vѣ⸊^}*WqB**N8ⴂLco=՗"G7@r$Jlʛ{^`bټiOpdrfCۂp't:6?;H
Id\0߁TbǤ53]K#݌Rr)y
NuTכm}gtEq8UG'.e$G$5($q1+emI>$aj¼a|aDr$Z9Ӑ
c5r_/$IF i8,HW&Gxӓmqtiea{l'IiALLD4RQ *h֍}z :Dvܨ\Bގ}Zohu #g8{z<!.9l*Z"K%P`h+buG+ߢG+kU:U`+w2B
Wkq*}PWg<Bjb,Wr:%[Ev+<Z%(iᕺSNV1#O$:
/p}34{H"U`\S)ۋX2|y2)/
ث؏g
SrD5UFJrTLDQFa_PK7  
  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/dsa/AlgorithmParametersSpi.classUkSW~	nzGmiVQ*pѨ5ҪKrn boB~i̔K;=%36}Ϟs~
|@_ J { p0Cp^¨|(g-vEНqbLgGFIk*qaTzB,nIbϪR-SS>t\Ta;jD5ya8,R5sW]鐛S[⨛0m<6̧F@]2樔ݑSrZčðfEn8"<wZ3)mG5tFP`ʖ-ԅyWZ\1k$X2ӎEQS@T3`K2olнd',K[#O&<?mP\$
ь,1k
En .k+ZL7cɹj4B.4r|u-ͲT6T'mSNx!͛AhRo(,^Mކp+Y^qaȕ؜Z;k	kN3[lJZnsm;-M)YxÌV>Hήelc4&7oE:J+ݓVi[dޡՖ<VGkERl,gko]O%mμ8;S%'&ᴄ$s'RoQ1Tc\=}pjlWk'7xnm!!{$
|[>jUs}za B7'wKcԮovL}"ԾN#e[Q1*W )\deaF{]8y7dMaލnq$ȸ  A\mA2,1!2@ lZSL< 9AH/;|"ȧE۝nA_eh[bSn	=T
Azzv}
Yg
/jባ?7'*X~~Ow1 ua5QvWh3lu1U/z!/@lSXImjK/RQ
g*M2?F}0i!!!Q)DtR={@/YKdqۨۑ"QG7(*ͺ%zb_:_GCKs$:@k_̩
VYi69{TeWͦWni/0<.%\&a,XGࢧ<!={st~h3U
5}Rq\zMO3 PKУXC  
  PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPrivateKey.classW	w6<hȖam; #IH#ni钴I&)ٺYJ҄6!ݛ+t#==wf$ا:g[ww}ѼKox/j|}x
Z~;[T[<"zGݺ[{i/O-æ>ZZ}L1
I4Pi͈
S-UMSLj15kjĔ4scniI1QCi-BLڃY5ͤEi̴㚵/OdD5'&ຒ" >fH*4b)ڟ2*-UC{hS͙PύjǏcg߭"g 5GDe;J3jf()uZU<:-=eؐub4Y+dJf"eLF\MP5E܍4/LCO6]k+(LJ[Җg:1͌-PuIP!p6/f(E
<w'gT@X}B7&c+ENéS6̸2ADԌ5cTvId=}[GRH`T3,=fߓmKoW@{drMo1gVJI'/^k]eSu*)i35G5ܜI#
%[rwG-=!s%Y2QhAthŦ\v*.n&DAwE{7+:b@ъc&Eu18BAwy4G`8$[4S%Y8kn%~"DD.bED"vM")Kĝ"EG^w[LF7]k
TOruDybͥ*l#[J-12s~9D&9>/Wߚ7K
ykӶݐw>~#6UN	N$k"7;vpWEJ%V2Z:Ic*ж(N*E-FVĺ,R[mX5uZhCnrM[W+T!dmXeHhbq^Lɸ'eCB{q#7"%fYlaq+	i
d +~L˸ynFF#> c=>f|DOL-cq0OxT>1	xD!G<aa9ߒ0oK8'X<)g%,pϳ0cU	l1l1/;=w_ݳ, )}T,>[`$0,/s7e?H Yj䠚@p?'PC=6pJl[jK@ȿTShlw框gxu8?	 d[Jmx{K׺mk:yhD,fD"s&"j{J.ᧃ}2Ɔڶ<w{?
wspE*_8;N~_@-5Wy&܈ZWy>,`<xa7E\t;0Y=p[</]w*6ͫ{_̫V)>Ԛ1<VU\ /n'Do<Qv
kk͕W\]\u5b>g{/ub"Ff_]awr^),0ιj5y Ο'KŬ8WjmL*Yǐ OiM"N>]ō]ep]N׵v2%PH^
ga`k!kGo|ȁBp9Q
4Up~;mZEx~,$1^w"PK"  6  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey.classWw|'`p0e0PF,Y:3$N'KGҽtnKH֤{Bwݐ-yoO=KOX PLfp+rg7zVM_@gšzՌfl7u	w'"ZнKw"bK`o]KC a+׭H:$ChHڭ$#U	vAC@}w@չC	%W*hX;TVtW5T=ABգI%BʰUuP`
z\ע$DF]$#{Htlc!,Y4z$MS$	(!1W!AE!4a(Ѡj]PKY%9aQhٯD6S;VH9$gxhBnI]cb~D'Z%f$#w(}OǃjbQUέP44*ZFm"#J4k(	ֳ=d5JD԰^5jd99"mdwc"(҇}Z50_[zj0I	QJU[			=9)vVFg*|TzC
q5bdhiSdҘuQ̂A%aDTZVtE(KSe07Ͷ=VWeh\>Cv0&/5y86n0cI"yP1_m);dmTz/DkA0]ľ(;M3I,>RhOI^',+%=k'T]S") Ԋh1ݺ֫Zjތ	ˈY
hj>=ymp9QWD{EJjkDXZDQ&"6"b_Dz
"ʦ\VM "iMck!(6J"OS[d_bgEIz2ybԚby߲y٩ "9"'kgb:'TX$]NLaJךBBMD:
'7#Ӭ1Jf+4_O~ށo:*	8i85)Sbe[kr+땄tV6V$dEΕ-DsC.ӲK1{w{ڵӒ))1'8eTGF;qD+>De,KsT2؁2˨BB2vY }2㘌%fpepIe,e܅Wɨƫ522:/	&y9xIo[V;6v>%=%;O|I	|)	q		,Qg%|<.^Gf3:	ȂIxbOHPCa92xg|^BBLb:%p OK8'AGJюGfX):p@) }Yme
1;2_>"U0f%{RMHH1E(? t}1W*$Zg#m6Ujo
߼aj=_Kp?CC
[f-Y2}̋ JnRAom~Mbh>eSZ~a; Wh&X"E^m"ZB+l̖akƳTפ-ӛ~wIx~bvo
?G`=y|: wxm|@G."nAѹbBiN**aw)|Ģf|y?qS6,((8k6s ڹ76x]@gpNvsiƷ6b
^fnn:H)8VM[^9G.zAʸr{@{_j)KwC#*	PIVM)|%s͠ oeFRrMi:>ܴ6`iKV,)`N{Wl3ٗ)<w5fg`_ ƶHj386fI4s7FYEvm\y[AEKdz3ٟV<sk)l,4d^[X$`EG<mKqۆj[H˼	WP͔/=:x2S6RJS*O=PKqIϼ    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA.classRJ1=c~Q2U*j@2fB2)TrUQbuQ`'sn|}|8.A\y"(\%mԎ	*QbQ/J8)X[s%$nÿwx zבUD=ҷ\nBp-$ыɘqt:RǾ`=6ir!Ay'
45XpC3qv[yM߶ü),E+XFw"Ow\)̷=ZSC2,S;6(6MSz_ѶAjt?PK>K	G    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA224.classR]K0=jkNm/Q) 1atth2?˧?JL@N%ܜ@Jxᇾ$y,nY7Qܥ0	gR8JXҖt'!A}}ϸ:,ÀHjYBk57!8CqDLL}bSOk=t0P00gh00OPT.9Qe'}l֔SMTn9=FK6rXNa%U&6,XX566	
N	GnBݏ0)$0!53DwuvCG@1VG#l5BGkZfPKL    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA256.classR[K0=jk_l{	"NOa1
kGY>MQb:ER&p}/_N;r偠xᇾ$y,n^;9%Dq>F'I㤧"*v(bInI=밀"-fho܄Yڋ'1e2v}N=ƻs=҉@4^ru	˓8eƼnr&wW6򘳑|
),Z0b²,YJPp"O?r~I)$v1 zFC:JWlaZ:`}J/?-^20 PKժw
M    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA384.classR[K0=jk_l{	=(0:e>=4M&g4qGHs|9;:A}uI`X0%VvZ'Dq>F'I㤯"*N(bIn'Ӹ{5aLEZT
ЦR]3	r.GO'bd	zMv[{	퇁EYr.߽qe&nrwW6Xb
K),[0fª9XNPp"O?r~I)$1 zƸc:JWl`G:bs!J/?^20 PKUM    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA512.classR[K0=jk_l{	N}E2Q
cFG׎&|8tL9_	vA}uI`X0%fFP6}!O8*IOETPĒ6ܺ;
	j{5aLEZTІR]3	rGO'bd
zw[{	퇁)Eir.߽'q8fy=HL֯ӳm1g#RX`błe3X`cD&8RHbV3A̍pSg0tl
at8 k^~D[-ea~PKP}`xM    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_224.classRJ1=icǱm7Q2U*j@JbL|?38!{Ϸw udK;3w9A)jNP.}>8@T]_6i-m3=-h
.܈Y:'#Bdv$oQGxS5`#8(oҺn4?D-5aʞ;i\<w[Ȣ`!bX6ǚ	&b:A:u=ǤR&ag&m;#Xyf[#l1BGkf/PK*WR    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_256.classR[K0=j˼<xm/MQ) IbfG׎&|8Ĵ020//wϷw &Ȗ+w3w9AJn1A%;C0YĨ7Ye`
PMa'!AmuK_[c@it=v)nDpe˸'IEqtoey)r45h	v˕.8%+OQOg>f`&N?(`.tCǒ,0BW\$`VA$vTXAop!V(6jlPK$S    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_384.classRJ1=icǱm7ۅU*j@Jb&)ә2I,W~%fF
&prCι$o j!ȖwgsSnիA9;!<L*OPF}Pv|JڴvMnc*ТJh\6ݎq͍Nu0xrR&^OԑlֿP%20m00CW*ߤu)~i'~j:k1Ucbs~m!cXaD+&L,Œ	F4<&6	x=3	n!+6FȷG0:b}!/?-^4PK@LwS    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_512.classR[K0=j˼<xm/MDFLԧ'i];LiDNs|I>>a [\ߕEr*jk gBzdaԗ)܎Ca6톝I-emQ
<*%̦B^Rr.f?\&Qe2tֿ&hiҐנi&-WnҺn`<?D=5fʚ;n\<wȢh cXQK:f
A
N`\ˣBp~oYEQ3@SPb}B{!ֆX#T5NPKS    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa224.classJ@ƿmch!e"1@Y6)[1婢P H܁o߰0 z8$ሠq.3i.|3"A>i3bfre	0$Ts#'t(S5&W/x٘:SLLө0Jrhq%8	»*+}ASGWO|@|jCZh{EDf`´ڮfXXy2U@74^`ݷٳw|PKOV    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa256.classJ@ƿmch!eATXRE[q,aKݭTQ|(qz7oow %ဠq.si.|3"JC1yə6\cSP-\(Mq/I"vbdF2\3n
U
cU<D(t9	$f??w\.K..\ [d}K1Փ5uZĪ<8QZ2v5sǲŪClfyV{pڝly?͞ PKu    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa384.classJ@ƿmcheTĐ*
f	[ڤn<Cփ Apfa~||a	sIsAs%Mxr#r҇|3mƂrULMNL34a*vfd*f 88qA*Pb2FIN~~tc[ٹ\8.V\4\Gu TՓC5uZĺ<l8QZLkjqUب-X/zC~9]={{h}PK %    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa512.classJ@ƿmch!eQ @Y4)[1婢P H܁o߰0 NKPA\\\	fD|;=:&҇b3m2A*ǦZP^<EȌe*f$89rAǪxPr4FIN~~tC[ٹ\8.\4\Axu 
bǽ'
>j >+⡉U-=xX#p"veLkj枱eUبX;/xC~)6m={W;h}PK3	    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaRMD160.classOJ@=NEpѸ"4Pp'C&efY
 ?JDA:r
9`Jй4P{(s^D`\KSTfB&mtvqIeY$Ýd[IBD0Jr6v3E¡ؠ؋&_4H(|
\l8a
[<ZhP1 jܳ![5
ktmYa图oѳ:Ѓ	PK>    PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_224.classJBAƿMߢUf@݄.b{efc2
z*4;||h␐}B\^BKnetnMB!OfH7v,&̨a,aݨ-%Y5f]5^ra~#GBN@jM:H`W={/!#TÛu_{ 
EP>
((!I\og̍PZ1cx"{;B)R{
slϱ컺>@PKN    PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_256.class]KBAQ}wUхǛ0QBW9FgueQj]!A;0;cհKȟXBYhɭGwSB>O&H7v(&̨~,a%X5dm՗^ra~BNUOjM:I`=u={Ϗ!#TÛe7_y 
E0S>
((!Jz\okȍPZ0};{"3[C)R{
SOn:APK     PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_384.classJBAƿMߢUf(@(hwAh8؈+3tQPh-9pw|@l5*VPZr+V~ dTpcG	NlR։ZRjةU#Qi6)<|($dR3nXZSE|y
yޮmIhWbGm P,Q@G>vҗ&v~#n4Ҋq#esrNvPc{te_PK3B    PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_512.classMKBAߣMnѪhu3"@(hwAh8؈+3ctV+ЏFk!́s<w '%da?WВ[]5NG0}vLb
nP2ӱMQXjQ3KBm;jڪ/&:%dc<Ԍt4V+z/.{u!aCރG87[oZտQda7@ `V}PQDŇ5B$!֐#
`(9vEf\S@7nXbvwu6PKu     PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$noneDSA.classOMK@}nge/^"ԃ ^q-n݊Y
(q{$gxFлJ[6%{+<iVRXg㪪
'VJ˦Y5v9li,a]/Ya߻ɿw/Vw]bGڜ6igݫĳCPD!5p@ѽ*VXԺ:N';G0oA68ܢo;oPK    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$stdDSA.classJ@ƿmch!eHE-Pn%MVcy( >i=w`7 e.Ǖ`F7	AX>i	U952ͅtGBؙThs͸)TIps6NU((d"&\tcm۸p\hp	u`Փ#
MZƺ<l8"mn20K8ĪŪGl4yvpl}?͞:_PK'    PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.classX$k,is%DBW;	$n4בWbwebZ@or
Ĉ Sf:-9?͛7o
`3ۊ[kx]1)*^Kx|?aLhĔau
ZcFx)}FNdtHL'T<Np0v\"0
q3?*TͤaWipKYf2i	'
1Y3%2j]/U59I/v\-+mu0;mѝ;'fnoPБ&Hwee,f'RFr¤V`Q;2֚q.X	AhɳJf2:r"3m+(uOF'BRɴy<kl4f)#Aq:+9E(+P`cJF'Y3>m'ţmF3vt!m;7!ʉ[7f3N::dd&ULkQB77#d2jgrn&
ziD"\][
TG3VzƠԡHNo&l]I
?o+ڀFMmn-Mfۧ`gVI}-28M2%"S2L1%cHںQ&Dl3!cҘ	F
n٨`!+k&ؑncM.8lIHW!/˽bZ,ns5⋫u˚3)dX˰!aXϰ!ʰaf~-W1\Ͱme302130`AѪzA4xBstza.uKsk\wQkToM珊{y>zʂb1ldӥrxUR-*X5oP
vk,Ѱpnk/Vdʆd]
|0KѮ=W{T<.ۅrZ0P}[nV2(c(ȯ6ToQYbFU\ZTĄSqT'쬊qKmp+]cܫXE'~?
[E Gq3!~^& 4!  !D7wB^x4
!!HO!"z[|;H6mSwŏDJ>ݢ>PV
@Y(+v۪Kֶ³|l.R_(_(e%NP	U!Tq_tG(<8R 4)e$R&	GP.q/9*<g{N)<
ğq-eXkx&Pio$W)"BS=R-.}'}-X^tWr@S+/PU`ex;d#S*5I.UsPUȢE˻WoJeo8$b'ϊnQE|}9|89vi<7˱
Koʗ0e
L3)ygGδ9#)9Sz݋a5>@W,/#}s'hџx7O/bSR|M6BE$rM۝[J'<{Eݍ-uSse^D[԰T1EILYp;P';Ễq&I	#<F/$	'	'4? "8G)		?!4	?%L~F!6 PKl(  T  PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil.classV[WW\&cU5؊!#KK%@E@b-&0&q2Aڋ߬Ǿ@ZDʪm_?vg& a>}9k~ *=PJ|
J}
#2H@lZ?Giӣimi?fEԱXS\fhmj%G-fam*SSNo25{U,cQC'z)p
Da;7#{}4K6Ȭ_KjQbG-
B
3-BbYŐli 9jvWTKPxnS9]JHK5Si7@zB,"XsRy]f::ШR8aӤ6Q͌[:F̤(y{Z5yQЦ>DI#5ms4S=Hi9דa>sZajǒ<5mrcػ\C}ָJAFaطa>Spq̸
'jqGcgѢ^n)\Rq;ƝZc0/pr(pԵIq+6M7")]iT]|QEۈ2*L\,-Eꊫ]J;Hq+aVc	P'a'%<%az	%$4HKhp@BT	$4K8,i	G0	k_q;ImԅEj_T<;+n#gUk)2ֶ˞P=J
W|kyиM1#zcL-T:&u7kl(}R{"!W,j:swei9|A=#[-C&͝u3X
ຒmk\ᒂMW {y
<(Q

A(WP
ǀx0C
v
K݂ОWwQfP6
vಐb0Zn$V>x*VL
.We`8iqCF5A2CD2Y+,L	bV$b˥>}3(9@OƠWjX/RFn'O-#%h-
x̨pޒ9|-j3(+w䞓k2JV'(1<t"v/tȿ\]aHY6D 0p PJB`+zgPp3ZDoDiH)C6;i|p=PoTmǛy>Wǭ4nLQh vmhJIN"R?!99Bq9/<{\sPd@}F'ڃ*ikʝM8Jjtr,sa4>'9{hcPOogOJr0T:T0T6W?;PKpxW    PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi$1.classRMO1}	!a!h9$K+SR!
JH wq	_RQNҨ-x= ^cO`&"KRz+)yj'=MH?$-OXe&Dsn4
qVSs#'Zh5$rBnL,qtp9+eo|P%6b2dʦ_tKYѺ#}i6/vZ;E?wת3uNWei-XRK2
eEXP@UlN͓**(v]CR;:s>SD :<RLyOL*'6x=E;[l/W`<sK7l<g[D
	3 PK!ە    PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi.classX{-<y#BڴU-M!Z78
kyזWMnӴ޷C2qwL#|mgv={Nŏ~l:?vǏ/)0 
	FZ<0tKjM/~<*auxkn
'aLLݞ	a'uNkjF<5
jkhsHw(4#Zfh&q%\^Aw$.&XZ#R%a%=CJ%*T)	- A;rG~6Y\ڰPMuF5Ӓ\z#p˔q}IXjRBKkխ^:)~Kɭ)uVЁSq-m)buIHDeJu jLdfteLWbhFONh7PPsyLzRtvRkVd
:چڲϢ.U65u؊\\,|카FN"uDXd0wNn9nR]%<fǉ*^zDd<1sqղZDHop)6sz:nEJi0N$l{jW˕G2/^N]*9S>==G,\5tG[.k vԓz22Dn.%T4T%3WZ$mfirjH4
s{
HuƕJjNtK~n	ѕhpU-b8S .v-C*=8]c.Tr2εS4QRt[z7(.!)&] "%-C`{znQ`M/
	8 pP_fC*ۙ~顛>TMME՞D f⫆1vyIt,v\\UaN-zSJIO;To_;Y;[=5ĖN^,c?F/QZq6RHd[y·R%Wu~5hl2*^uD#MWw$~i?T{xܑz
VrTW} :zT6CQ$?8SEX*\ƫu
^)/ƴAV$3
^p
k,)4kL/ *Њ;ᔂnCAVA w1NAF%*oe^ƻdQw3|S2F_pJ|Pƫaw4}3|^	<gexڎ>!cex?Çdhxq24gdLs2tTg4_!hUim8p-dx~/cE1}*vzLژƧPd	HzzJ\ݑǯu|vSjz4y<cy/yl&U<]Z>SZIBl8t:FIuPqェ#G:ZiG"Ԃ/cl<w<[QрWr=sZٳYu2ɜ(x_z|/_jGg8ei<!M:*H'j/<ϡ?>ÂzDzSh	cz8&Z]nv-B:&4ǏYq}aU[>BGD=9,pf0CqTc7c!R1!_.YCzn,qN^7հK[f`^:Oli/ǟǓ1yôyjǉyÉκs9|[=sE%<~S<Ҭ+/*ӂO?*9f19QDyYiqcscP95o1ǽŐnk16K~
m4XZ		֊G?h-sҙQ/PKhn  T  PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyPairGeneratorSpi.classW_-bCB&2X@Ʊ`a9e%"!=+I[Mlm?I üwf{3?|m ^xaylrQbZBrpNj!	Ƒ4w6EOX0ORQ-r	Ր-cfpqdCj+Z#JJ9Vd;;̎EV\t1mTsfTLSq+*)Cz6u6hrL3iR[=Kjj4st^5mZ
3yQ0aQSY`5)k&sAH<YEuZ=&-MOpWRNad>ܻ$wT?%!o#L܉RY9++g94FJ(lZ1)vvF{[GfQ&$_-W{ͅ844%%gU#=Uc^STsBjeȄh֢iގ~{šx4%E4t6,\`L:g0~
k2̻Dh ] گWz9EST1~9]t}5>p84جNjb?/:D\SR1<.3ZT8뀽L9Q
g읜% lTIHC$RegY2bI+-IJˍ۹)zn#[=©XrS)2-iJf=.uwHRgۡn0<N=CKTIX)}^x)ut.!c<>!h㱟GVxyh<xtxAx>7\z8<8ڮG0\+Q]X)z3w4K%][3E0D}ެlhDcnޮ\0v{חxA{&!7B	[tAۍRKKVlu'+`3]h[߅5-=
Y.l7.mm6rW\݊ƞ⍼b}J?5K)VFbsqg9r[o<)qlQ>|V1|NcE`JD5T	>Lx3">{0+i=+D#!:%"!>F)b,bd^DfgyVQ|;T'eFs|1uFQMx^ -` 
ỌN2#?gWcF~"`1Q	c1|2SF~&`0Wk8'4Ƌ>l|~4i P	[rvDNbLAC`iGɱGʔ=R*rhUUXVJ3!_=}FҸ<X
,/o.a^x~."5 T%M;OG=[]DP`ޕo^bӛZCd.SXYku|.rf&`j8W1Cmvy@~kCMPHQ4qck91ޅns{hp
_ŕx9ӫ+'#U\ܪ,p*6^@_cL~
0l	\^_g0!Ѻ7wZ]x{YEW}YBd"B9\cZsvٜwӉ;k[n/B8nYS^ƛtޥ<1B
ep8iI&#iNSb8r;٘M0;4p}ȾG}DI .ƣQ*l1EeC9=d5dp5\ɠfK#PKvG  M  PK
    D:U            1   org/bouncycastle/jcajce/provider/asymmetric/dstu/PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/dstu/BCDSTU4145PrivateKey.classZ	|T?gK^^ (A6!LCE!dI@1'3q lJk[W7Z"-`Dhնjbk[[jޛ%3o	~_ {߽{ι{d^	 gE0"Ja4BNLU܈[>:ru<j.ڼ%n;XioX kWW5o>
aG޲:u!aknjY[ZhI/X {:}~wp3&nONwBJVlV$E#.s)(!<j޴EqX>vEW b6)IzS"*
ZrkH+69@LE~_W]OPk%IXʣdHnZ2۽)$)#kZ'G{B|3k1ĺKVmun'eFq;AOM&y˞siVuwAMXDU8HҖ{AT5Uz[sw*cIFUHtJ<ܴVAu6wquFfmO?>SMc[Bwɏ+䠬^bH	n6U3Uyy	uf9auLZ Y'$Ǔ;[䭲ڛ;E(j~{C֠_ɘ+5II<r Q($	IJ"Ano'ubhiNޒkk{d⧐Vz[S1El8՘(.FdDĩ>uqʁGoQygəY2[RAwYrݬܔTЕQv<ݷ8քtc@wfdknҏW2DWCN:h3$ʡ)0Eզ(mL}ExBI !uxbж'Y7,:9
Ftc,F]\*VP,unoI_2_}ũXnHRnozk-II
=du",V1lNЪapwRўmcH?<0q6kPC6Vԙus
k'Rn+K#NϑIvwJ߂ӆ"#,yi%U<U%q6_4(NџTK~
E4=ii#eQ(VR.`|ia+WUD2W5\%^̮}М:
N (Ox 7d6	%"@ l-n#@ ^|tp ~	UmlG
!>,G 	1>.|B;ۘZr-Ѩ袉iCSDvMcRJ:KzqB-)w9X"	3VыTRZS>1Z&cGp|c6 GI8q~"&?=rJWg7fUͫJM1TNHȧS5x2JU#u2>x̠N{S!TO9{Х
u0ių?rD䏚;;XwU956~A5*a}uFL?gLeV,s)Ec2U&+cq?C$Rme v1NƣNpDjP|e[39,kenۆ%5ke7d<D֢p'4FUpZ>R({VKa0$~EKQ?B#cKpI!pY΢dJl4}3]+eHY]^Y\,A߰uc$:0%yn-C$eF"7)%\K:hS6d_NCqCq`9b!aKD*S|1@ߖ1.oɜ vd˕2	%
!dxQO7%%$H w%f	j3,aX°$(c
m/A5|C!Hi%~ nSG̀Ka9C!$4	gX0,ea\UK	%_K`H^`
C*]+5^跼20 5G	v̅?I0,d0_%oIPŰF$`6{ޑ
xWFWp{%,C!\`\$@"L9f<[
$^ELđ$Fl	F.HIˏJ,}8 &1R QaCD)F/l"aba
u"<ea3dXq
E1\p{q	2v_ƍ"<k"<gx?C7CHð3,"<j'Oc:M63l0abheXpzD8FAC=Aa ba3]Lf1|@˰F33f2|N!!1%³bCOS"ƥw5guY~VEx{"ͅ.fh`X]&\6ETyדb__g	ٱ{T]NEAyK%(<|
N	X~FJ _Jjr'sT[JjKSm)]R[F(Q4r g`t1}:r7-M#+=ɽ]	iץHZ.MM"ɢL&lfi(TC& ߂2hKXLDxh)^Wպ)3-q e?Gqsv>1/.r&j(wV_cT(GK枅0KMqi/ף7n_cx5G˪
,2U7'C긇p\=̪Wʾ+Jsir@>P><Yկ5GPkmn67ɢxO!&U=< !VLA|Gt?*[Qi-^G+(S]F35tnSFP|rgd֘R3s	]{Т=4:	SX/,׆~ʧ}3k4/jg{a1_+c#>xZ^cx^1
Agt/?5}p4?'c85>2#TSc׈DO7?b*Pwלf=x%G+ǒ7ɵ9)U4ҧD8@8,^UYA O_Q}R3ԿHwv8PY'J: sP&+Uy|fβfϣ0lҊ263w優"Γ,|*X[Iz5-GzO&&i2.Fu
NB=N鰉;*>۞Gn9	㣖0).;x,1a;?d2Lth,{tWjE͗u0>_x(x)<[J4zar<IOShp1>lle	3$\E[\\wly
apFJ0tՈp%6D@3$_}Wlg-}z>=J
R;Qx@QES61J
&=CiK 7#`帢75mic|ޏq-"
Jb=M4c)(Pix>&^u1*Ls1NDlF[JrIƃ@CG⠍\/T[Mﶺ&*ϩ8s$D( H&=6+/S9`I^΢[bPEOSeEE`nν=AJ9ٵLhTKthQjw6i8Tj_QyC?	2Kk: VS`I 
e[YDr /^h&=p+_PK1  +3  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/dstu/BCDSTU4145PublicKey.classZ	`TN<dU2JBlk0y	8TK-UQ#h,Z^nv[L&L2Ik v=3I^y 1"1:EbD)*W伪Bfs6"0vsu+uU
[%F	ʺuU

UX9.%V%\VۦB6gXBBkЮY5jBw@wtV5GR7ǗF7-7Nw5mުyn5w%'`(,٬'
A+jt]m)}IJVO_CzG$L<̎蕮  wNm7OV4h	*:B@V=0Rֱ4'4Y3pKQ\t.w+-.w0UltLQ8roћ-w)K\ζvޡ'te+[=g6,qN_4nG2mt6Wsktp;8>q68}ٵv.0j̆_wc@z͖oDV+C1u
6ɔ쎂8h0UTza3t%
ndpݾ
˭Mյeκn=i5NqxLV%-N5._
k9I׫+6J"CISß0ΘSb:}!U<9Ø0Gt8b2NM(#0/DfWaJN!\7nW0o}eC
O({,iZzJXi%30>i<8}hUպ^R]Kd&+	Jޓ}s~<~2[` C֯{V,~Nj)>t0Nic}3@I-6*m׏hoSʓ]2۪~l[ݮno}mLR
+*דaEL8=sKX2VsJVuŠ\uxZָ
5vWtf)U+J@LV}~$XяxR)0*7ȎU^]^uƋv{j8Dfr+G:[\u2S><'~ZB=?l+*m=4p{O%ڳLW0VW*بI&W)|P\`f
((تZ^m
|

\    `
v(Pp|X
nRS.Q7+EG@7l/P:לɋӐ{vq'3^ҟq(%L.N[.S$Ÿe$K>WLtz[Yq1}Ue+<ڬ8`a09-\'&]f=9[FTrjLK
A)+S93%3o/
8h DQkot$#jܴ.]<xҧ+ia
/-,-_RbKUNc4Oy%qgҁɒSK%A?+:9L79+u2L=+\uC̲饙l|{ـ"󓜑AmR(6xqS刌E/Mϛ]1TEKg?=7mNoCuHkKISIfHţ"]-#N-](gg23i4::ŅWg`eї6iߐÈ78yo%̀i(u6m(wA2S9VꋆTe)3ʈ劌l$kJ`'J~SϚrx ;S}xo?/_hc4×4LǗ5L+LW4Lë4|U<jX%P% (P<
LXEk+@`2\!PUn5܍574\74(ěfJ-
X+);m
5]
j
xK?PiL?E?PjXiX/4܆58KxGRR^C"A6P'0p!$,
oe԰h]Y}OyDAY&R6Q ~*{r1m!pH!%0Z`ty F/`Pi*T%*UOKU<@8@\$p@@%+U<HsT<DE*EK*:\rQ@i'hd)SUeU$mQ((X#p@iW3J`fRF-ТYWqX?LZ8BW]D"BE
M\*0OV`_s!k\[hN $V<:zi@4M`BrM>*^F$UxV8-RN+6
\UciiL&
"HМ>W=
!W{|}gq_DߕO`$ oWF{$M-0ߚ2x鳸--m%cTRzv<B;(#ȗ%d#B%܍hS	cM~ތҗXEB$Q˸D0F_wye2orKl9
6+ʞ?j
r"z'B1{^~UFp a\	+)q,r^VS)[LW,ې=Ee6TR"Oc-'B'rKJl(}հ4R(DPՅꝖƔ:A|Rn4M61fI/cNƌ7e,l	h{ T	TNl6_x&v@S)~*FqQW!޶.bwT(}%.LdP}ң1t҂JK4Oj^hu.h9:ϾճiY,nY"`CF5	cHGN77a/";wCbHG}((#xŜ}&F;rɑGŖ}rctԡtDM_x^(׉J)|vE=ȷǨQЍcMc+`8%	Q|R8#l,>PqɦF8 9Y~4ǣkG=XBŨK(y<P1E:F}/CMl4QwH,BGFO)xfFؔ}-X{[7Iq1ahgyh&C
{ΠPALT=8<fܞA1_	'e'D0+%Lٌz[^,8u#(4=XWJv6h
m4-orErⲸJʆb$y.N\/:0O5uQ58~>L(s3Fߨni*7'ѷwc2OOX|((&Sj^1zb48;<ۍǛʣ@"5P9UvnA<8GG<zErx8г?k8CN̝qUD4GiRV:R9)L`.-<8"6}}Wit>34g7)O3V[P
e"SJpYD}'OM"&2d%9\UpV&Xȟ,I
k8b}b5ef?ùb
W#}	e.8(w}e%em!=v|
Y;gZ371_/U`x`޼|K)+r>"e_p
'q
PK1R|G  0  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/dstu/KeyFactorySpi.classWw&=xBe#REɐ)R ۡ&]132qw(,w
J[פ J=?O3=Vs|]f.!]]хc2dջ,V{-ua,_iވɉs$''$)1˙^sAXh
6٬F5lkE8^"笈t6-OBOi:erC'N͋I&2-qNX=1+AOD΋Հ;frR<ӮF[R
jJxJiLi8f$3Y^z5K&ݔ"〗pDhaZwΊ'}u]3eiqֱ	gI_5֒cWL"}mZRZ"d@U39p$鯸ȑU-iisừC!΢nWKTO H+_>p=̥@9*P9.go5+zsֲe?CIiv2V
B]6:=qbr~I^eժ'E[B,ӵFfpSܯU2ņorUGcv,!cP:İJC"33\kA>s3<$i
v(x;9Lkq
$M285KO	?p+5E3E4GƓ!k6RfKAT
n,jT-
֚<;h"2ȸKQw/#&M=2N8)2d1ʸO2z
Kxh3'}
qIV7GB۬W߭exF.kq36]<Z^Եj#C;G&ua6h>8Ymɋxr%cz/x3hHw9ԙfMjfimլpȌbiY#59\+lߔ6pc:_hT԰X=2m=V[1۞#ZН魔3?Ѭz*#!jLK֑Nc3-)\ng]ikvȶy孖"Ԟnu1hrkoxXuo~*)	[VܲQ<b*zЭN(*cFi̲^<|\!̱IT|Pq+>O*>¢O0tͫ[B؋}0yuEZNdxdUFGOQ]q9+ݘ3
F93
e
)R0/+8(x)HK,gxWY|G&*Y|XHcXeN|W ϳBb&"RL#~[tcߍq22$h=;
[> m,I젧v5\|5Lık@s4y]__ŏẄ"Ճ<6X6𗃑
hN;»>;Fwy5
}K3u~.B&
lB0$
$uVDg>:Ί20+:A?HE
N7:NC748$`1r; ѹ~qq=Jj1:Jv߯*RU%WXz=:? KcJOh5D842Cbv:t]\"t`x5_4ZT~^\<^ZTA?/'+&n1U;Ba)o=vxv?PKS    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/dstu/KeyPairGeneratorSpi.classX	x7#' %Z		MXkeyhWC)(Ѓҋ}w	Œ8=bMOzwMvfua9n}ff潷'~@$9ĉ3X':x=J*|6^'QYEBٕ[WIXkӼ)amVmݭQwfhQ
GFrtSdɆ`8[{Ⱥh(1E-o,:Mvu"Z[C&ihFP7H`ңF!p$Ԭ._kTʙ-5QFd6	ˈh"!=[J'^;CzeIɁ2 xPծhF"2Q}K&١f%INkTUOH5*.B!-h9E,=lHX:-7Y,ՍY-1=dܞR=3,-KmbT%ˢYZtF$k\1[2SUy3
ql3<m^xKrYB&6)vR
XTiH1b; ʤzbITxݦFGpT
i4=dQ|a:6pL7wWݮ@t$b=^=WfTH#Τqnҳ81SN5<LEu(T\m3U.-ٻ=K-Gm04O$iQ%Vd)N:.?fbAMEUӝz7eܸs,)bx홴[	*Α{yUs	gvg-IݨvJ>e;m˨jIidm.K'+n5 P%P-P#P+P'pGRz	4\.Q
F&+6	\%p5-^V6
lPё}!6f&@:f~&{4}yǂBl,Y"sOe*:>$|7\\2 W9:^4͕q*G=}EB!-F u$v&i5TT*T/9
>sA.7vY
ln-t~RW)..D]a2I~CeV2SSD泳%[^^bճt31Zh@BGt7ky~6-=9
"C>}q_N\G69'E?syi׫y|λzym ř
cXRܤ7+Xp*pY+bm
vn~T*B9xk*N1.nyZxJ{zTML-
}Lm#3bx7{#؎2v#2Çd\3|a\F/>!c'bxSYmqO2|Jƍ<32 çeh?g8$CÃ2A2|!ΐ` &d3|A><0pD%<,c>+#QEqTɖMler]mjd;GEePc#z9OO:Esv4Ǫ'M1<I1<'K0u6Dw?pX_]BⱣ8I쮍/sz+JaL"ܢR$N)/܃E`m$#0G᭙Y]3;޺8s\Mcxxi?('3{Fqٓ4C_.K <IR~4ۗ*%:r~yk2.J> 8o8w:qyco]?9)Nrw=1rw,%JWf%/~I\{K]dʘ!S~؂poz¿$E{\xLLۙ^x93ܱ8Ǘ(~=@lXOpqtߩ-CMJR]m zcGosqx64b7$m6:&^u
X:z]6U?$Ye
@F)?fD]Z8
X=d%Nb@.w
PK3    PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/dstu/SignatureSpi.classVwWVZiylT84id[GhT[Izu-#Kje mB<R0o9Ԏqp/PN JlɆ;s;ܹWwpG%#m	W^ Gڦyg-IL@j42'	vWxp2s^F=>;~3:"-svuYϦr<mh"̴;2`fC"6pEqLy;/@ebP{<krtV¾
a3J8mSB6_툔P	FU=eJ鎨
	٭)aRf6ݚ')آuihQQܢ3vnV<"+l
<f4TWCja:c>-A12PIwh=DPReH5P-{|Tr3z6Z49U+A}j4QQS#*FqלF6b<]3fVnTWAl,SɜO
Yhy'#z>.uO˛`gìF>>6<N	ID1gLYOw)Am|{m/=d:#5.]\|f]}in K|z;wxwOgg١{;eH̖mFJ4W0T0gs[vnL	XlӈN!?P}I梅s-{/8f&>40ACfg7="O@7`TF'W$58rGoU2TG^
:DVWpFA.
zU~+xB
zS𔂧W<Dx}@*#;	r06Rxp?yMv?t'*9e9o43Z"[`}\^w%:[idv8ZT:~tq_߶j[
7:7䡁*C{u\xޑԂIqNKoD/N
k;*j_W_ޡ{Ǡ*c*U_n*N 1XDXD!
RyAU1i^0T<V*0 n؏!b8x]<E!s!$!S,!%|"QbPd|U]×Cd>!BWX|<X܈+X`iaY6/'-V|ЯnэIק3ܠ|04>.)}4$CZ34k\+ xid;8$9]l/-#wfi._Yi#^GWs?x	'}R0߹JNd{
I7p2hVnkϒj/ީlO4( Iaq{Aۼ$voip  v_+kQ6.%qo|c*2Na$	J^mZ/}Opʵ-\ǡs͂4{
#*'ޱKQ^9D(]B){
@L)<Sl=cu
c
I!9]k+۔#(AF?(A'+/ t!)QM{˥.Th|bE:`t镙EcML'wU<!%g_0<)3׵)AVWf|̏br*dJ	X!Reh$1[$IBkxf򀴂o]Ƈ J=4IwJkadKbߖc
Yo'PKvF    PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/dstu/SignatureSpiLe.classRRA=À@P$>0͂*T!ɤI
̐2{~6.tPR?ąG(ԍ8ݷ=gNoB+d,ŷRVJ5C˼i"O*ϘAi1+ql'熝7B%9<xܝdvb%\^":3Slnuлuʹ[<ӶNwu5F.7ӫh3M1)h9{2*z\]kZ[ʬM3CF{~ypc;J]6ܡgbwa*S2Jqx;.R\&ApMBn	=z%IgW.kbbV,Y#c=
/MY&~N-(І눊e܄*#qa0!`RFwdaTaiבtͪ^]bA|0a1Uݴ2Z|FuAqbD=
~YP#zG3M8O2|?Qʂ
%)><L+	CD6W1i*ax{NIpL鯅)ST	O٪z{_&}t	&'Hg.!5<6q\Ly; 0E:b94	]Nm
Y	e
PK
B    PK
    D:U            /   org/bouncycastle/jcajce/provider/asymmetric/ec/PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/ec/AlgorithmParametersSpi.classXy\NXqD<0լF,F5dXM.3;iڦmڤmz!=lVmhڦwhI{3,F>{ĳ?ۍ%nTQ27Q*7%U@I]}Т-zPPҺCm,ۮ隹4ƢF\3z2jwX
{1%鍫a#kwf@whOc־`wH@}{"
+:
}D^`Y@}8Q:޾P]WꊙZuUQ#F|H1q6Y)ALVE8c^fg{[TYPQMW;TݎBiVVT:
Y1%wI%FtGU3u#P¦3szm)>ڞ1ԡ[,\ j\1j!ZVPOVC+S[t#**fEzU]%G72k%1	n1&ČzK)#_3Sauoqcg2T9*;5eoE.-,ǫrmߦEFb'Tf;4RFf6,AwmP=rpq9@A}DiYȬxHa%aT78vU7_ݾ7
*;\)cW@mAm[6g\ȬrHCө@ʱ#՟Nʸ;."_&IDodY7=Q[rǼ4'X$Q6;g	Y'dJSCPyg:9ZՂffۜ"]= bm"E.b"DD.bUm":Et#v^fC7`tyqs>J۶57;<ZvuL}}-;[̭=&nuL,fWR2Ydf_V+Ss9Yƺ"vL :  F8lu-+!<akPے%Ezڐfjt
\Kz'9e^Ts0:fwkr<V楀űD@w]8tߊIL,!BX;0݁owp` NYY5X
đ`?svV
ϱE[p4bN9;l<Yo3?{Qeq &cd,.:,Q	YM(Q2n`2hBBL2)F$ex1"cNh)~&ⴌXF-^/e2]r>[+Yd\{dkdlkel½L^xe
,&&xBՃx3x$!	n&G|ZB?>" <󰘄3cQ&p{\"pd2L2O2IK8IPpN">L>$!I	\`&3LR١A<"AÃL>O1 }ӷW}BJx2l}La-;*&#h@ -UԗWρԙK2*aWF!*9Kl"Z]uƝgN7\g
uuKqIāTU:''5Z&󨏷X+4&1@{~ɷ|7I+)".lJepK|d{p$McpZ%Y.\E&py_tP,&xDЇÑ`.ɋZ9W8TʜgWvn}d{/8Y/FѐOC-]M(64K)M{%
dgI7q~gf}ӁٹC|VH(ay,;JhJ|Axg(4^a(e/b~2d
_g>gLi< )H]jL{gP+⎧hUVVZnK(;Ki6}\_[z"Ji`c}%8î1ڱ.cf&~D͙B8O$^^i+~Ϛ],^J']ƳK&ڡOl:rV|[fO1\DVdnuIPK~ex  U  PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.classZ	xTo2K	YI%aFIq
ՂvCK"% .jm{mkZkkw͒d|~Ks9sC .z"/BIJ&nUUj(dv$Pw'M}Z`m{Ökmĸy@^K@\Nt\s([\;;cŪԍ=}T`PׂߧG
UC&8d>Kê6}Zpİïm
;'*G]XtLz԰جj*涑ZlPD4߭zI}ڠPcBюj.5}MTI^XpB	
޵
}w MZ?I.YVuɧӹC
}Ci6}qG7.U@96B#`?اQFr5nTH#R!U=G61mҍr̥>m1p?SM>&U͝JTC:%1f:)N(Vn
E{*0AF$mPDAbUNt7hhc(paj*)[1|=l$-2Pu'.O$͖&fc4EdNљq6nA3C'LwuZGh!g+p9BL;h0MOcQdߣTCzζz3^TqHMtC砯NOr&tszӆRXE
xx5Eʙ3l[<̢,ްtqrf0	׏ 0,M-KFIx'ouGs}: RI^nr
WßHץcdovm1|,a!%+UF9ɗfo݊\s~ʤ<]oБQË_ѫ!.G2$nhX7nX2Wb֥̔9ҦY#RkZo˝"2)%{gj{iw3/KCY NF/q/'!-ޭt[(	&ЌyȈK.OPq]tuOI(VBu%AF	n	K$EB6	:$\!aN	]H*avH)a+%\%j	HV*an	vYKU^-.;ZekdXߧ6]j%)IEfp0%e?/J%H~[R $yrY&O;3ULȭbb$fJy 1-&d\̏-an}Zܓh-Ne5Bªi^:gT#3vYiեT|9Uѧ̊FdM*UDl*"V:!^NuOLi-1<kVgk#>SiK\Q5&9+=،ᜳejVDiY3tJO1HHBc`i(|URbwEdWR2+/>l=Uz^W䕱N_%bFYFzيkznO(ѹ;'kdD~)g(։bs%O39B9kRx48iBhsK+çV(9=z3FY1ZX	sTp/؛f1Q,)(ǽ
*q^:ާ`
ޯ`>`>`
j(AF3j!)X0E
X^|DA U0+cL	'C=bKV0bXO)XO+X
3
z.gs
/<`6N*aXP+XS
P0
dŇi= ㌂Eb
xDAR|:=`]82<1Əes؇_0VF?~&^Se܄?Ro/ȸ!E2ބ8?0Bb(qbge܊oƋbۄ"%cxἌ,d2gg	D#z/N0a"C$o%eF߅ClQ(kp7v7^p#a/-5xMՔz(D깮U
t#0FBމw( D<\O+fڃ6fKc(fKId`fKDm%I! )Aq,o@gp׎Ae@x mHK9-v
ܳsý13!1K!XH"y\WTj:]mv[sH58<19oZgm*ynpDGEaZI
٨]]!ImM.QӾlIfykS6ID)锘n:锘: r;&CBM$n;U4^kV%i]≦!ek"b6ZXOGݠK}ۋoopDMLcGv({
 ӂ0
TN
[Î7I8PhZ-˺+~rNo"SoEs:jF]"U,AVmhZMCbsnH\AZ"ΨGp˽3S*"(m+YSFO&"佂np%)$4F\t
H	+%r~Y~lnwkI2xj!s(gۄ#"6UǨј"*6Kʳ<AveYYh;;'h6G]瀘vRc8O:SGd'sP䓗P&*_Z.*8ϥB4i3=f[Fw>$OOQYhؙ,81?e;(:1u/ӓZb@gPo/z Y4)X-6i"b[L,I.EL[c}xRf!2ɘw$:J[>UDxNE^9<ߞ\6[=$ՓVHP0nlhh=-?
b_d"hZJ,#b>5q𸥲/;,ǄC+jZ?-K*'6
Cbe+yrŉVqPxQ%ߋY`B	EF~Z'Ef0^BU$7󷐄O-vƓ95읈Z?PK7  &  PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.classYxS-Ϗe0aaCaLxY$!=YO2m,26	4m )Ic-!INҽz{OmɲLW@]gs9
Ƴ ,r1*crQ\l.*5pxGhnyBuT/\%0ذvUjjjesicMss|DY,+Ou_C Wյ<`@#`֩_0@hO#N}6}@5liG8ߣkjDhesd.jj?QSvk"(涒uZl2_4u<hih|m!&UW;ɜɓVia٩muͭi_	HuV;UvThUxTjm%;b(<p:2*Nakw4uhӮy-`[aٵddɻZ|AJ9vFMM;
Oǝ\h
Rڠޡ63t 5sw}ˋY{Q#)`E85[]
@>~QK¶NW_Lyf[ݧ|AWmc2564G(`&_kYn,@W y3#{fT١"}F'bg<Θ"}m֦X:kz®wOgة90QL\AcV9QVyʵ˯镴RÁվHlcjD8]iMqJMfc?aP9tKk]iRgA8-_oBLCI7ӣ$

n²i8o,D"AWS*hHCU&=+Qd}`_ /&{{su}p;X3K`596iռ]MnNpf_8J
d9,HIXq+1S2.FiפIF4H39$k}[׸.f$@8c>!u2&^5Ƅb[UdCht %Zzƍ[hRV"wDn$.j~*l`GHa#N'^T'}$V:	%JZ5$Kh(IBM6K"amZ$lCµpnJ%#+A*MBHK@
VPQ"Һ4WɀGK3`ĸ*q8I
Xi	>=qEu$y|Q,>PLȭ$1y3)&fD͉-
u|S%&DbHJ+(kTӂh*uwGYpyu2zs'8CdLRCY**;s*fp@*\^\>XWnRq΄.}X`>ቹl`1f"SuXNqmIUDno*ʤ0mm%'{9E"J6A_^yjCF^)ٖZfH}/Z6p&/(3×}POeuwNRgP3`
ÊKGߴiz;qKAbTEkf֌ehFvdҺܘ%gN%?2coW@ٌތtRFjЏ_|ќ|uOo׽ilX8>37ޯ`>`$>`C5raI4UacYD+ E^|X~|D|TA)N3
I51JQP\RQAtBxVBJz
y8`)JUs8٠O1|Zr|
{QA!^Ly%Se2|[Kwgy82?a)~oo,_d܈x;~#&C#!VpAmxY(NAQA 
d܅0q/1a{Y"W;*ÿM $E}"a$D,}@d1&x b4IS`0S{TiWʸ_W2?"rHb5'~O d|Q2N[
^g]f72G'0o#gO_Q)dx:FCN Y8@OD͜>FK	eDFKf:H>G"4$lj9gEgK8-sX-I+$EЋZ$K{DKݢ-K9CPMT6vCMxXǮᰛd)*;+6a#AQ=[&HT+~	ȺMI8&&	Hx\a^{$j'BZ&sM71a5:aM͹>W"'>	G t
?lòa{JT?Tf9LgƧji?Y5ꛖU%:ӒB'fx|bHѻ/Y^"hF+5gZ
K˰
csݢm̵l*őnmH:EbIS=YWEŊ.)-Z\ɱ*콸O({tm~=	n_h?|nsNba/mn:5KxG,?+rNaTEn/nl)u➖2GNʲi鵧0B8D7a̫}-3KpCn.R-M& $~
$.k˗ch$ޢ3//c*N
hJ0S3yRqHSeі,)=bCl3*mT$q],Y\G{>0^٫D=\g!f.ag#6%Dgs|~X<-|B
`zfXDhť"3R>SN?,MaV[jհèsꌟ<*
e}{ĵ=EJda ^uZ|Q2Mjyee+hY]S8vJXeCDŞQ6F
 9M<⹥Kϊ W٧f5G}i}uT:
|*{q
YMSgҶS~_iQjJ*V>9Ǉ,9GW	,|;PKy@
  '  PK  C:U            <   org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtils.classWWW
eQ+;Q[PY"F%Pa20	Bk[jvzN9z]$M?4}˻7?7 OẀFCOp54惯Q$*n7L/v/1HZĜ-[YSr b$]!{u>3ZnVTڐnjJ)N5DA6"*e$S"fG_Wqu4L?hE&zu30kjiNᓴ77hT'fAOL[7*0V1}=Hu2e\RjdﴦOEnȸKX2̐kBn#3m=ltQ]Y=#)5l)).D)QW<<HQ<w@@A!;m>u2#VHLmFSvXըK
wwm|g볃{pX}}-S)rimʍ}sHf&<-E˾=Co\S5]"S
9Kjʔn\&G@K^8 mjo>Ωyf+`Pkv<TnQ#$$֊Qg:5Y*\9Qhl$F
G1gcPϰaf-34042v0x`v2hllh<ި^Ejv~&_kfҚTj/+Ke4,/SlYڬL
K
l{ЎƎ42zсl)-,`[ONSR4}lK=xm,َ/hXRX
+WR62ّGTIp23>8lf
%gpIIgxɪ?%ozYy%2R?c2qr=y){'esOw7	[9)F(PZIXvP>	O/*0 ac8P|F>qR8%a
'0,a5NKR<+
Iqk؏E I1NE}0DB$̉IDDFEtଈxN*1
l=e^qN^%`Se}H_-QU,$Ցz2+vf4
4 \,'īݿCr](s{̒D5
C7~{L%OxYE
h,u᭦|>D9N@.	mXp@^w]G0뮨ŎuWuf&Jhveֳ[]B&M76
h-)wVWk1ڕ(*IhD;*"xh߇{:y|࿃Cy|w{_pa T<yw_Cۗ&y\nuq5y|ܷc1jDY}gTE"D>Jb!u9^[k+vr'd
vO%tuT-D?,`hfPK+n    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$ErasableOutputStream.classPJ@=cZjE Lq!]t5MuJI! *. ?J:瞹s?^ jwn	
#(3
}NQ2!(r7܉Cre֌-R/di?qZr6'8䔎$S)p:4BL9R';. F=NsI1"Rrŵ
ƚ
FE	EYUF
[;&v^46{\W86}Ud=0Y-b{9%_ȉ@%wVi_h~PK<C    PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2.classO=KA}Ys_`pAT"
,7$)ϲ
(Q\g<=x
Ǆd[l=:\r?;Ә2+&4U5u+viʥa]bt`f'8L+K|&
;
=`7,CBBa/.2Bsy)9ǡX1r)rm;[<vD6 ;z`ݑ`*u&PKau   q  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withBlake2b.classPMK1tk]k~ԳVIŃȂ=Ц%J?JLj/RbރǼpCz"(6#WJB
sCNՐf,f)S̤4Cwwˑr($״/[5ciWpEc=NQQC7و^&O7aF+>>6||'Ǽ~or*<Tl( vla@\Xk	j}[⾝Q8[_ܯ0G}9WnGPKOM    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withBlake2s.classPMK@55ib֏z
uxR`	SA1ntkݨgy
XMEJ.¼`1o?>
/y%b]ҧ%f9Tqdf	Lћ(x}u[:>CsEG]\pg,1NS	4P|3)"r9J&Һu{;2zʡZZ	n	h9N}Lt \@)Z}^>Qឞ`.`hv
/]?PK,h    PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withMD5.classJ1OvnEtѺ0 Qq3-"8	Ӕ63$Qr5`((ua''˹9	AZ*ioNcx#cgqg6eLAe`J³ae	.)\L2E&υՒ3ml"(/N\l:EI"8ݯ=UҐG
R|&A#HcN)Yd0oFDCܭUu4'qv^]{{|PKVkm    PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withRMD.classPMK@W?^Ezp/IiA1ntKݨgy
XM<\܅ycz p}zHкHo	h,C?G,cJ2%iLr*:>sv9p~Gc-)Պv4J(gγE2rcUӑhhhw]lZ26XVe66LtIа@/FW+/#QHCկ45'K'K[9sw5
PKAM    PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha1.classJ@o4ZVDmW*_eɔ6	3Qc
X|(q]%gu.#^b9t:,Ic@T3r|Uza,@F3͸`_/tXTIgG&Pn"	n_|h24tCoLQhP4)Z?9V46j t-PYhcB=f}	=&	}lqR淇q@D{ȱc6jh7PK*:    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha224.classJ@oژWu+V+AXBq2$S$D%*`It#%g̽`zHкLb9t,Ic@T3wr=oʎ`P(0tt[k{s.X<-"U3ԑI(HOWnuEEpJΰZil@
(Ķ@ѵƦN}Q$&P!JMSڳ,voQ˼|PKu}Y    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha256.classJ@/mLE+@Q*D].dH0<'эl3wsG֥""8UHg2t)SY4!שzxzvSv*PHn,	Η)D/":yѻ++/"7--4,4-U	~"^9r5BV
qlXhcFk
7>{)rg\t
8Z=i*w@{5ɱc#/e6o6:PK    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha384.classJ@/mLE+v!*D].dH0<'эl3ws!v#ARH^*Odu:㔩,IcTSot}z6);Ae($7,	Η)D/":yѻ++/"7--4,4-U	~"^9r5BV
qlXhcFk
7>{)rg\t
8Z=i*w@{5ɱc#/e6o6:PKlH}    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha512.classJ@/mLE+`э Q`W8)$D%*`It#%g̽;u)HbҧY:qT1
Du7>;ޔ
2|<-K%v)4Qs*(gn$KëH#/su
M-CUvfA
B6XAÍ^Jܙ5?6.1Vjth
.О,`Mrȱo[|7PKg    PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withWhirlpool.classPMK0WvkU"z`@<x"{ZPXf6%J Vҋy0y/̄;螠s.]0Csd`\iX Ca2"Tz )DD6_U-w,YB3ȴLpv=d	=I%Ë̢_MEC?Q=k)hRbAkzX'hy*+qoDh/)P
Cl5*im@FE}PKY-    PK  C:U            @   org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi.classX	xKy l"@R`Cڴki-/ȒZLZhMI4iӖ-XvpM\wڦiW+Y&6̛޼y[{܃ fz1ˋ^bԋm^l:/vxߋAફYXP˽fF~ZM:u\:vl۾5ԱWJNDdM#T?	2݊&:"'t&Jj7U4=r"WѸD)Y{]i"<)d,&gET9[q5%S hMnPr\@ߨddX=D2["Tڽ-J	E2z*JVMi̱+z;SQ5 ]+3rMN6$+5e/'{4W#m3MgLN[͌G%jnPx܎Hv%ca =Xy߹
ꇕHFSvy&{i%T	>9eDuNv0t50'
JLb^%;@uھQClڧD<QX.5gx[u7ޝ=Z'O,7iwU}~X=-(:ŃYH3[8'FC@}i&I,ϱ?'r
Z
 -uTkuTsh,hv:PJ'Fq`J
ͤuOi!o,LwY*~CYC!p$rh@r^,bd&i=2XXԈޡԴu0C:HJj1]tr͘Y"Li>B?({iFm-tg^EmUҏ)2c$4oVhr
O~ee"?M^W{)ѳU	+lE+W^1eV*U2V2yU{T-J&ܹbe[~"3
8=
FRwfZ6GeU#,.VjWL)2߭8jk)|`{eiV3oİ,..JOQZӣy"sCmaTB7ȴ|4+׺5%PJ5;ŝRU]T:k-F7;0IetYahbXp5K1\p-zfV6
6163lafɰz/cdð`b"QZ!à20wk~,oF+E[z;2U-ͼnɽ)mwF3f	]]W%̺=f ([RAxnyl}ƗUW #7_n((8|SI]	Ȅ	_XhQ1|%XCEDƇb-v&
[|!XU*rL/t>|Vh|9
ICamOucJ݆(~o, !z	~|PBPI
>	INf\B#'	NtL U,G$4ऄU+8O8%%58-j;IV2JC\)ar 'r2y|M|CANe7aNEq_pG8y=7"ތG9yo
?XOD܎q0'<E܁8Cޏ+]6-( U	R(j兕|ya9.:kjYUWPg
E_AW9lu9]N䛢8F<Di<Ngp
6Sbx9$C(`q`AAO8oĿta O'`!|r	\y)kl>nT/hxwGuyueS8Y%#|0h	٤2nd~ᴥ	>6Xk!X%d;0/9hO*en/PpHREz_KŨiY<e{D,r s`ggmWDm*Z[_cY?Ͱ7UeSsRojJɽ,an,~F@mcƕų1j,;Η9g-su?\K֒76>[cz<n?I\;#UH	<ˁFVek OzOg\23JK籍>Lfs,#iyJx$5aBxwP%ʹu0ۇ
4#f\y <0w^1@Gٷ^hZcw 7}I ߸tKL,2q?Y%ոD5|>ԋЕ&(=B'0t79Nڎans~/0jx+2*z9GVuKH=#~Ip?<5Lw!acb]9&0[)A)F}ۉS%$#.M{W/Gq(?PKh"
    PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/ec/GMSignatureSpi$sha256WithSM2.classKK1OvE+b T1)̐,W(1H	߹ܓϯ '!v{O}EpȈ$e,Pz)Y+w?=):^Dsia/J%v	4ɫf3`3z;@%SA/fgf'U5u
cY˩beŊAE.ZX#
x@),m1Rht
.-rȱoukl
PK`OH    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/GMSignatureSpi$sm3WithSM2.classJA%wf=5vENc"
:X%n*P^X?3K~6#׺Of]Z
WK[WpAm	_RTEϕEՒ+')ڪ҄\1|9 JN!\U6K5ec3Wx%S~{mBzDwď,CPKIf     PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/ec/GMSignatureSpi.classVWW
 #b
B Xqi]!DHd:3[}/~{NIrNis7yzzdJ@޽w ؇==XzPh>ˡ*<bCVFC94LS}D5#^0d}<>E&8
ʶM͞MyJUSݪr\'t+aqVqM)j30%Ѣ:jjČq˅,>R6 .1N{.mjeԦiSy6fWYNľ".ʀղ()'Ԙ<YPu&iYzT:qUQ
[SsڡnkSjq}MMZlq6,ù6XfǱAZSNJBLXcx)<B1قl14[z,&1Tşw䁸	]I*eTI1:5cB5Ty9I吆ӞRU{۲<r^U<L9(N*J֨%$JNQSS$UNtZ}tgPۭ	yl״=6Ֆ:í	ruTnkW{KO5]:RmG㙏CCBbߎ3ߚ/!?$mմsekQxl籃NM<<yţn=<㱗G}<8 9l_8L"lf:qBKNfar&@sJ@=;KԠ1P=*OC}Yq̻fKC9[fRlUãLv.T<IUXM Kqu	ʂ/qet~gYGkaw#{ciI*"V⬈C8'	<%5^f&#l&؂"3QQ[q.,UtQ0!0&bLL18ixN@LL3u⪀.6;D7Ћ>$&6+58Yg|M!C)ujΘlY*-WFlY2 g
L뢗LȽESP+ *XqJ7_l+*	Է^,"#i|9[-p(V4Z~{X3ޑ]l4>`Rs}47#$.\Y9ЍȸR;KaT=q7P>4{>ly|.x=X8И§GnZ1&O᣻892*)L}Rx#w ʤ_
U>FxJ>$ucnۨm	ܼU\pϛric.TG)/s0-4q
3fN;P3%ZO/vqI{܍bfU֜ےuP0YLE[+pn4 PK    PK  C:U            @   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$1.classQkAZj^>BHAi]..%o`+ >Ĺofv/ d(wAyrȰzY}XaYHiܼPn$T2Th>S\G`$Eưm(3mP$3K9rJx6v'X	b2<FLE;U""uvT23>,?bhc
s7*(M׮fCeS+'V`ɁTԫVfh]|v7w?4#і:<԰ACe5lM+b
7p!0H1JGe64$<L;1VZ4^5<@3#hTpNA2͵[gj}n^pWo}9v%<(^=d'PKWx  a  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIES.classmo0fl3thҖtb{5	/w
ڤIX
> 
aMa(ؿ?] Sf#;*JMq%N);Ke.CRcqhwN_%K*Jq^W	ʹ:W%~Pҍ4$$C9j;*!c{B|9ÛKXg4&j%9IX?;J0 `1@ȰlV]24W1/K-)i%iu.Ҟu=we#\0>Zf͛uo6B԰"½KbٛbwB]8;q9Wv!:HCa:ǰ6]I|uh|)184D	j'X<+p
<(5?q6tW}şPKQW@    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithAESCBC.classPJ@_4Z?ǂD
{ (

viIٍJSC_X
"|01;o/ NqĐw>CBE*db=}$Rd*<F*_`EڛxHJw|,5ٚ|"|5&dRn^zU2_V}
J,׽TȷγI^A,mQQA݆O]3YF44FP
ats+lB<Y2X<XnӧᐰA*lSTPKQ'  X  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithCipher.classn0_n]8ʡۀ,А!$IHi\/h*vz9\pQ{]%`xTD/l}7 ,^P>b`3>|̙}Ay<ꈲ b BM[fΔ۳)M^$xb(VUsq}ڝ]~ma๋^Oo!z؏ri٧Mw7Ō	9;HDLBǒSu0GR=,y<{@P*vm-o>(χv,V*;l06uSzf\Y迲Sݧ3rgD<bZFY5^K38brjkV[[#>(Xm9++([>Vq%%H5? 	kRBhU6ǢV/x`Ǡ'3
*dd	&XlLS	Mҭ&`4ШoF[APK杝    PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithDESedeCBC.classPMK@W4ZǂDx
vi&,O ¼`fxo^ߞ_ zʹ" 8NԘ&XSfiP.BrM/>`9@!]%+5Si1⊆z<SQh/诤WE6YY]#suoKgy=o F6hبi-o&hZߘIɕZsc?b~am3uP6>Z6\:5v:ӧ``ˈ갱krLCPK7+SI)  a  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA256.classQMK1}ӯuV<A)Zi[6e[TٟIGHA'3͐y{yp=B9ڥʔmB%߽:>=#r=bw<Ʀ	]lVZ7\\!Lj(5㦘NJ0)XOl,5֣NbB/8{xzyQ|,_hfU=(#Qº5l T|(	%ƷuL$HSȝҗol
'wgl:}|A}Ա,pPK  "  PK  C:U            W   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA256andAESCBC.class]K0Oԭm~oV0ā72faڑFe?˫?JL7a&儜
!6	-B<Pi&xpptL`Nu*S&;mPׅCZ(}Im5t./`h7$؋?(KQ硺r
dddnqږqIݰjq%R}_[wOB5n5 5
N10a a i00i E`Y7qh~ <m۲cwyQIJc Qɥ1H͚01gb
&X0"Avq>%0!Q z"TR\zuնn`kHi#	PKaMi    PK  C:U            Z   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA256andDESedeCBC.classkKAjbU WComlJwev*Y}2
h6Pf9{ށg}l| v,\NRLrGzt`דmzݺ_u8eSn[ܧJx#z--Kv[$(*ѡe:sd9׌ӞDKn+)*wmݮ:VCPDD
u>7Hb@ί6i}B$&fM$1g"ySX z,2?(3Zs].&2-XDGjQ3gX +m:)6Lc
wPK{Crj  '  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA384.classQMK1}ӯuV<=zihS%IY mOt23ayW mQ<".Ul
-yMhze&
M%X؜-JٵHco.3!Bj,5㦘ϥJ0)ؠ7Lb*5ֳ^bB8{xzyQ|_hfS=(#Q¶- T|,	5Ʒu
L$HSȝҗo
'wg:}v|A}Ա,pvPK٣  "  PK  C:U            W   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA384andAESCBC.class]KAϔj}PE^FMB8T2hVY^0=;l`BB]$J<#zIGL{ʣm
XG,iRc赸$8
?*ѡW}u0>A~fNqړޓhpIr%j6㲭PI`i""
,&َlwL@ ~W4<[O`$(&VMıf"uK Oo_\CtT0sѻD2C0`+~Ŷ^|뺢[.b:0=ľ PK
uj    PK  C:U            Z   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA384andDESedeCBC.class]K0mu]ߟE!BPM]4lѮiT8tSƦh'@cv {$	,&xdL	37R>LmR4D#zVqWzy+9uN9`w^	ԹT(c-som>KFqŕrF;mݮ8:eu>[74iYq9۾FPm!_'KR I0$1abDs&,̛(`  \Kh5t|7xMLjdSX2:]];XƲ><}8[*rpk} PKהuk  '  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA512.classQMK1}ӯuV<A)Zi[6e[TٟIGHA'3͐y{yp=B9ڥʔmB%߽:;>!r=bw<Ʀ	]lVZ7\\!Lj(5㦘NJ0)XOl,5֣NbB/8{xzyQ|,_hfU=(#Qº5l T|(	%ƷuL$HSȝҗol
'wgl:}|A}Ա,pPK/Qs  "  PK  C:U            W   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA512andAESCBC.class]K0Oԭm~oV(0ā72faڑFe?˫?JL7a&儜
6	-B<Pi&xp|pH`Nu*S&;mPׅCZ(}Im5t./`h7$؋?(KQ硺r
dddnqږqIݰjq%R}_[wOB5n5 5
N10a a i00i E`Y7qh~ <m۲cwyQIJc Qɥ1H͚01gb
&X0"Avq>%0!Q z"TR\zuնn`kHi#	PKe;HXi    PK  C:U            Z   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA512andDESedeCBC.classkKAjbU( WComlJwev*Y}2
h6Pf9{ށgl| v,\NRLrGzpo`דmzݺ_u8eSn[ܧJx#z--Kv[$(*ѡe:sd9׌ӞDKn+)*wmݮ:VCPDD
u>7Hb@ί6i}B$&fM$1g"ySX z,2?(3Zs].&2-XDGjQ3gX +m:)6Lc
wPKҎZj  '  PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher.classY	xSו-3
c8lЂq`@bȂ,=l,)Z {4]5mHh]L,CigL̾wd;s{-6ι{⯞`8D˝ɉN*'V;Q-N49qk9q'N8$>'PJ	o8([ө
¨gu$-bjҏ)Kq}=trkeo(⥮w?ԓz<z0MF}Y	޽g֭=;{'w7dL/bXL
7Ţw0dmi4Mz`XW2y1=J&e\D#>APl虆c򇉈?oGdip'v-dEQf4FEaߦ'c=4;IavCT2JN2F;d55GOVVd{`3@ N=IEM4':NZ 8;'IP]Śɶ~;y(?Nyܪ+}h!#fΐeF#+e-=ʺn0Y#ͦe0bS?9
EXd3HFL(SD3Ec@8Z=gx-Ar2)mB~3o	Ӿ$%$-|5G:NXR_11xjP$-DrzdbT$NVLL1*Nڒ
j-3CN/WC	=5Ԕwk:3r6d0b,44)jXw'j0/L82OLeA&ٙn{^E)k&Or#UL{)%))As[\5\޳48WIT=Txrl)>NVI> bUMoGWN#fYS:b!J	o){$ueRa:V~+,'Ȁ2Hh/D2g׃*UW Bf2Kpk
1:ЬQMPj.DkVh<Ѯ
w(-3&plAsbWI*F5Rg!=ٰZZf`M[1w9f`e~>OÑUI MpZx4?ЛbU&bhTC&p0NH3izYWU 1'(ھ}NDebѣ2gu-w͕(:2q726+IԜ{mȜs׮+IԜ{mȴx}Ce E%h!'+$?֙:4w;vk?RO9D=~S>f#/a>>WO)_9ăq*wqgS24nʘeE
ϙ絜ZP+C7mNW+[B]쉤&ًݻU&(픏a(mɨה3OW.8(qH^$x@Ⰴ_O"  #!$'$NJI<$VI]xĻ%x{%xģ%>$aH<&QI|\$%@imtOFTK
qhkD i9yi_O]E
6WuM\dw6~u[5;%u]nH!r.m$G-jr34{TG7M$.LmQaGv񀹾0G{2m4vyix{9y#
ހȴ
Mygyd,.t<+OD˳{:ʷwmYN._zȾx{
ϰ9o̳;oYn:'9>L'IzƥEa#{Kɚq<
HV/W拓)s`6/fJg#xTIug_/(وGgCVvʾ(Kd6Osd^4۰FC#V;
O5DN3'
[@Ýv0bxP×`hdWb
Ih:hhF/2bg

z}
i/?v⺆x.@@PWi&54
;	'\4le<
D6QI⅛|U%fBx,fP`	ZK,sᬸ*40hrhvᛢŅo18ͅg}Fl`p&heÅq[\­A!2hcw18wpMt{݅N^ovb?#~Sr32Kb?a.\O6~cŢr71cA-V7.V/R,֮mi7ss^s~<1jQ7is^x~ŕ}[}{O?pl?n?O ͻZE\
MfjT0R(LDjvsہb6F|cYȈW4"Q,|bD>_ϭCݞ?+7$wEnr'/=+z8晭H->a1D5QnĿ-_˧0*^$N	ڝg^w^XH26cXej$QZ|8o)'Vs">/'!xVH0*p>-:O"硎j9SD1sM܁_Hz 6ӻ?Efrh.2lj`)<gh-%iqTKB#cąԷʋ{.TԃP6oQ_1%pV3UNw=dp3W;6
^5[_bF
쳝V8*$`OMyKAhVy%mN⨶Ɇg5*cNWQC_Q^JT(wQ6ej=֚PƊ4A2J=*S$,W&*L%]JH}+[c.})-Ld?vIY{li,QNE)(zIQg%$yE4FMM1lH ƉK_*1e/mƫR#e{2ؐ8<=UVɭc<GbJg
eAwxmxxdD4)+qI|vU'Arm1{+5v*
L!	m/,$DP	-gU-=.jHZ_joʒXJ%U%]Z)^3wܱr@\76kpqPֲ!5=S%F$eEo!l5~ImZj
EBLj=S5s.2Ui4H)MP1F|@4QJ ΤqTᇽLTG͙8L)!ⰾCL˙<4j,P<{lV~qOJc!zX=]ivøZ/O.hu[,5uftZJ^~D*G{鬶TbiG#z	:DA|̌C(*PBJ|:VH|r.QJ0hwzTy
e$(H|,ؗm#K^e>kuxI|Q	RNr!A|qJ`սSm_ ;O]g/}O_"L?M	&J
%PKNÃ  *  PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher$1.classQo0nf6ƀ
Fi`V@B11CfV*8og>$4(<Er|ww>}>a!5On0OVscXz|a^*-bw ̙<c
C}$BHFÎIo&:EfQ:K2Ï'2)[	O&XEĜ;2ehaH"ɓLE䝪ˈw;o:ǡJygW'9~,aIlac*bbeqJk9,;NuBamJ0v/7]_H˥ 45lxypPPE",ao
XCM#$'6V̆DuikE0T )ɾDtK&4Z{imc	> ucb~#/}X£"
G@KzqPKA  m  PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher$KEM.classRJ1=kڱ/)V*v]	B1
uJg$0᯸QbFJ]='{3dkGwK@c32e)'Vm5r77,i3
i<qE]	b
c}!)SP
Ncw-w$W`꓁vt6s;N3%3;NӭIH	,(bD	&F (;ֵFL)rI;%[VGym'(bOPclL`NbT*omJPKߥO    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher$KEMwithSHA256.classQKK@4>.^T<$,z(#T}.66[%?˓֋y1|31vA'Tsk\t5KyYn&r]dFљz%"7׌14Q,/SaTpĽ>HhGIbqU5Aw	q,$aC.ְEITh\s󥛿>曈ܶmV_ݴm.زڰPK+hE  )  PK  C:U            A   org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher.classY|Օ_;MI4 B 	$H||I&3<XZnZ-ڦEl	4Pvn}W&3s=
?z;_v:ą&q!B܅I>/=U:g_'%GӾN:xV%wr{z,CSzp`b=	]gw+G=s*ihx23FML1Z'CFܐe7Kd4%#Q`	͆#!#j54Q#f	3vB6Șq30:DxưA#D RiU鏄S	̦Q<a憘}_=4}Č%L!:c`$?fEH,ޙٝR*`ҊaƷ9<dimu6jf3 Pef&3jXYD4<fW2zF>3a[4`x0G [=рk1u#	6KwƂG!3:	Ϭ&E`)YbJ.ujDW2vnwH!
ivS,8ƬmߚU37-{\[3TI~eeRP){J!!#'nEKWd8-0i5dldyPUA3;b<I!NB[),m>7	lO(d
$'hP_LA"v%	ʠŹERB3جx$5ORRN]1=#ځBhdǨ Y?=җevaxR64qǤ'/rٛV52h?6MP;Ys\1S`r7--C
Q	T>Sv80M6'3Lt3'r-SnjTLiI1j6DbT~Y1ŚR,r9pW(
$OV#^ztmk{hY#tvߪa"T(?}ʳf@W5Cw0PFp]1*?7[]tu?_ZϺ\︢{e?&s뮆o9W֍Vr÷zb#F0[nejXsڕa%\Ķl6ra.hy{[87[ȑ eiݵ'6Hḵ{[:}n}܋VN'%OAߖ
+onX-?$%/*ys۸,']WbXu7[OaEcok)6`M;ikL98|Đ3b/([ճ"f$72i(j{`8HP$f:1yWI[kOWje"y@2lĘbJ4JK#O]Jx	C⠄_" AA!!!#Kx@=J<$^I_K|PI<*aH|Tc'%>%i$xBIJ|%I4Zn齆G
ٻ]/ygsQ΂>%ƒvyϾor#8WrNS*6Xzvɟ4i*=yA:_JnL&D4|:t+7M^(WHQTz(hFދF,+'EMjKbe"yķa
cr︇-kjbh*˧zzbYT]U$З[;2)z,HĂ)y-:u.S*4g.u#+]<h>׈}Pŵ*RZUTjZŔ}^3g鏔w y`8Fޫn5KEt<V<FJ??kd抡#1y
\c~_G@1>:g:ǟ؃^&_`R*O3ٍjQ.&_d3u,CfX:6üstg,0Wj&h|:ĤqR^;7:<;&v{c+Qǝ';/Wo:6u,c!KǍoZщ7ut-^.D~(ʘ3q0q2L\L*hL*LLT3a2I9L2gHs§yѬLdq0*nuN7D
NL2&Ί
焗M&r&5|W2Yef{Yp^dҩXdbW'4[
|&5\5w1M^k4%1Ioth=qȤ42J[軬K=0e*= w_fDw c 31ztQ-%j)TK9T;w-ejǔTT-ej)TK٩ZJZ>k@_UbNjwG}i1&zh=&ĘeW6&n_[6&vZ|LlycbizmoTE#jZ)1ͯc|O
OħONZm\{ųD 撌66'_8e_o=vo8' [wFۓQNk)qtDV
s3c93j	?Q߁)qdL	c\/(!RN/ҿ[(>b*iWee'ZǸ:ܙGΉ
eX ^J/%jwxyjs:<Ρp'֔@h+EMG%g1xHR+ya䳘6(_\yZ}O8='<C]7FA7QQ]S=
*vVS֌؇MLm83]F? ohw\BkKfcڝ89r:.?}l8{}u˼/~4	DMDf\V7$NI¤Qi$]_	uz,pPU-ʳ:r|p+1-o}}/VuJMͳc
8W]T==Rus\G!T@Ν]QA3
 Ia.+!.tyXΉv`;4vN4:M'3݆vΣrjuֲ!%e6Z͢LtٓY
EZ^n;"R`+'2vKJ{SU8>&'p_yi NoEJR"vS"A#߇R"Zo>]W;ok?j.ă<,VO-wqyu>[qzݏ_NRv^pN<Uސ*RUvN|wy)	o%2?+l}^xT~ҋk_ebIV,Ws*r5t5r:
2.V4yV|&%kײK{s'G
ZH;V8б:٤ Su?nOU3+"**ϕguOz*ome|IN:*ۿ'xZx^i/:š^)ЫDė%.^QEeFBXSd%Ω15`P,ݷBUI)<~7_7D+TH
fJ̷yvYl>rДy=<GLwQS\tiTUaL EYnJY01Ϗ^
oP{PKC  0&  PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$1.classRMK[A=&gMںh!X
"DREw2e&_)(? ".1s6v5aO`lb,_=I`>QWc%=QfD۱JM'MjyFVO!%תI376]ʤBf$-}dDlhg#hl.g|@lP2Je	O+&y67=+Sԛ/ϸ&\`HeR]Ĉ	|P&m
Nz7oGG#P`s\E+ŎX::uN)\W :N'+j9+u6]d[kmbu;|uT#RWtYQE_ثr4PK̇    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA1KDFAndSharedInfo.classQJ+1s=
^MPtujUtW8)m$2媢Pb/ R]I>=?b?zk
J+0r宪Gr!gNM/k-3)k&k5I;~*Yz&#\j,63Gaک/p]$2i[pafQ'}Xm)X<UڱLkݚ{ka&ߞ*E[	tӕy3qe2-JuЋ0[1&CD!L138Ctㆰ,0aD^*
f:~@tvf:},xzGPK|^bC~    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA224KDFAndSharedInfo.classRn1=m&+R!I7vU)4jv*Ebcۉn|TT(GHR9o߿|p2Cʵ'I=xpn6ϻ=Hn-GIJ\
ĥ."5D3Ҏx'IGX%w{x)i2erw6U+R')&d5"Åg3rFINS+\1|??֣X,@)@`3@&nWw[1_b*OB)tzlVdB8,N+DB{Rj
<C<va=F?ؙNZ#.ۇQP;TKA4ƫ%jKl2ge? PKS    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA256KDFAndSharedInfo.classRN1=摁aB$Z%TE
R"!!u:&|VWAD(G)HPsw as
㥝¡Uq\;U㤺pV3DҐp40&?k-3)k&뺔uH;~G*Y}KH.5x{G#ư;wTTBՅ،%EKdYC(I3ʞSltÏs}Ul\	CS+
P
0 dR9Uް2{|t=B'Iy$lFjdTO8O+8"Lb>rQ1!",b9|bxq$Nv֒>xv>׀"`沏|c?9^̽aPKt    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA384KDFAndSharedInfo.classR[KAѬl[R<D_4"$SE/t̆IdO)QX$}9su|wc(v?1Vrǭ;V!$*iIa]4Х\$h@$n
d6&#\j,#ư77r[*!Bzlp'EOtd`@(Is~*`5ts-u4@1@`!@)@ȰU۽VCe۵aEOOO'SyOg3"©Tc~X
xaJ2CDX	B*Cuf7Ki?/%M|1}(/^*	]~	'ظũz3PKRl    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA512KDFAndSharedInfo.classRN1=nBi@iER2I %Hq(D	b
~@?G@
]ԖϹOq
GPPr'V7nՏ;6C$
	G$Kze&uCdcri[IV^Bp;ld铍6wԐ7UBֵ،/@$>6DpaшQ~+`uw%e 0`!@ȰS*c0U;B'LﳙkQT1?}0\[E9"VCDx%B:ֳ`(i;~PXKX|1}(/J^*2o]|)6o9[^̽OPKnn    PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DH.classAK0lu]ku:\vfLm0Ҧ%
 
";&//o &8〡;zJjЉm$71ʟl(4MQ\Ć(#]6x#J%O?X"E"&ՆeeT%9I@*
.EAO":.
{Er}gO ]tZ	|x8eo!ךL8v1-f0Wx;'ۯЪoxPK
    PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHC.classAK0qt=	6/i2p`1f&%~,O?JL
";!8Q 5.:Jjо1Å	4OZRUF\ں%IW|㜈Rɫ3."kVjIs$aNݟ|}t|j0KJLl[k{U+Q)oeGEv
 
%!ofiM6DYR4f1vzv\l4tPKf    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUC.classAK1_lkZ\Jc:.)]SAgAMI}a
Mj\qa͇\]љ,_4LDr9椚9`iqu+0A.^O
 /uV1IFRMOS+	ϯlhֽRZ!
&-tnwy5lUvv*Y[5@9j2
UKfuOGstNͻ
h5d> PK٩    PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA1CKDF.classQMO1}nR6,KiS>B9$\Jz6	T^"*qta4F^jz
*?:KP4c{3s=^UPh~Xh;+ß@wv<K\Ij}*UFd0E|hͱ~:*i>GXƩ*oRwɒS>u[NʶI(]6عS<jI]:1}rRehD-I}o퍍oc @%b0F`փe[mc^M@M*d홸9Bəɕ,]NG(A<)N<
a52C<ZlOg˂Ce5sX7S}:3
8Ct4EGx6Ǽd/XXPKe"Y    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA1KDF.classQKO1)Mʣ(Qn(H9g8J-SFPjV+fs6a69g;TZC~ڹV}z׬7o/
	K)11H̤H퀸4&\ĆhHcuweXI61)w?gғGnʪRfR%IƪG4%9Iޤwb~üV<?G2lOK	[}1| tۮWqOlX'ªD7\0׮xYRZŊ /}G|R!8n@)xEsQ9Yێ9̦NQ~	&Xpw:g)aPKc(    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA224CKDF.classRKK$1⫵0z	AQE 1f6LzHǑiDs0Ryxa
65~S`wteyuo{ee5/Wv?H;R^LkKiziuU$[>*qDM^0M|d͙?VoELƩ՜*oR%|1\zӐeP+Jsl..U]lmjf3Z[mÏ,{ A # ~ͺRbKuVl"\Mֻz;LδSag9y~EDq,ėBb&CcV` Nk?
e'>X7SEf'0zro|+feȺ`PK9B,    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA224KDF.classRKKA:>F1(8^EY7moeegiW&ӆ(enꮪ﫪G0$0P)0k{k/Gq.0}ov<=ZSȋ\̷Ijw}*U:d<d̚_VoeȄ,9SIX==eߟme+oڲf|]iji]LTYwFK]#p0@`$h0je㤬fv*]9imelS{g>9SޤBsai!"|11I~XhVYFV0b	L+֙Qߜ,ś'ːu2PK    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA256CKDF.classRKO1\(%KjXJ9І
"*qtaqH- (ly\ [gf뛋+ C?#)PT=ޭs)Ow&%ozbuU[$;>*qDm^n3Mo͡փU`qPƩ՜*oR$KN	c8%&ה\`IpS&qi4I6yg$-w),1_F-JFTtͺbePL1ٳ^Sul):d3М<^EA8Mb*D
3!bN`8N?-e3&[,X~3
+A?8ǻzxeȺ`-PK1
    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA256KDF.classRKKA:>F1V/
AYWEâ[,=_y
A<
UU}U!UkxG՚^Fڑ`DJε|vyǧR%M=fO0y
l!O]&9n)	ᮼiɪI(596~ԪIv\5
rReyM-I#ʟKwV_>` P aqYGl	Tފ)y]9n-eYlU{c>*9UޤBs}aiS!"|
1/!>s1LiZhRYFbVQY{0#feȺ`PKu    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA384CKDF.classRKO1kaYPVQ
$7T˿
q(liƞ
`+/mkT?{_m~a#$5uLoε|vy˧R%I}Ϭ2T{
|]8YMjOf7ol|Eiv_׵k-MTYlwFKb-#p>Wo 0`$@`T`qҭn>z-U[ɆrI6129?
;#/t!>0bBc	
iGYiPYFV1b	Lro(XmND=`:`	2d]`PKm'4    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA384KDF.classRMKA}FW5((u5((xV&,=<(Qb
P]UUUW_X UO5~G`zp|na&0/v<=Z6RչVo.Tz,55vː	Yrʧ.qG)	μiɪI(596yԪIv\5
rReyM-ICX_o#Xz +Ge=6%ZL1̋QSul):WdR+)Və&5vGûX1"§#
!FY?N-e+[,Xmqq贇^a.aY,z PKS\8b    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA512CKDF.classRKO1\(%KjX8І
"*qtaqH- (ly\ [gf뛋+ Tk
c(WwO?l}-ޭs)Ow&%ozbuU[$;>*qDm^n3Mo͡փU`qPƩ՜*oR$KN	c8%&ה\`IpS&qi4I6yg$-w),1_F-JFTtͺbePL1ٳ^Sul):d3М<^EA8Mb*D
3!bN`8N?-e3&[,X~3
+A?8ǻzxeȺ`-PKM9X    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA512KDF.classRKKAZ>&x0:jP(xl{˱ݞ0+O+
Q!59D醪_>W/kx7'՚aFڑlI]"[s2"]T#jYsk
5_eȄ,9SIθy{ʎ^me[oZj|Mi7jjvMTYnwFK%;F} A  V*e=7+Zy/]崩JMd+n)LWy;#/ &d!BD1O!F1bA[hRYF1b	Lrok(XnL'D=>as=|a2d]`PK1i     PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA1CKDF.classQJ1=WP}RZ qMm%+Y>U ?Jz	$3gLr_ c]Cn3o*~3KCR`؈M/-S)[#.Mڰ1!<cDga%c-]/-~@a(cƋ*Ėtؔa*EUo*dHzQǔ~
[n(|D|}KՓvy&r/LʟTES/ytٶ,qE2&B%3zȡ#@7HfF}я	1I0Cp|aM$	%XĐfsȜ*G-L=3-L0{Q3|҉WPK9_0 v    PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA1KDF.classRKK1b[~+=A[1Ú$Vgy(QbR<df73>>`=aLtɐWjNٛyKMRj3Tb6ƶKtmE:Y	᧋awPXHiacmKsX2'>[ڼB2.&-)ZxW=$ͅI:ZINSUb.GPp<9|bwv;c*I--7\9Q70,jUOXGuw.W`2զR1c3>Ǭ	3W&1=YYmc`yNsQ;N	cW},<!zR},Ĭ93eYPK̨t    PK  C:U            _   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA1KDFAndSharedInfo.classQN1=!Ô)P$UV <]$,s%vRgJG!<jQϹǧ 5`arxP8UZ3ҷfC^f!(jU22ºqi҉K
јYJ_h1i2%r쨑:_yS#R1YcSC)$35 ÅMcrFIN_PD1/w#
u  dثvz	~_lu#c$z15N%?3sEXBeͬwX!"|!aa3"ѹ{ndfx9>#9sl|2:3PK3    PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA224KDFAndSharedInfo.classRn1=%LЄW(-R!4KQXUJBvRԕ\&Od;X"j`-]__s7 -&F^i:rAlκ=Hn,*YhJaݔ4%\ĆhFɉJoMh1i2%ry:om<©)滛	)=D$>7RpaٌQgNq0WGz4CS)	P
P2UwS0 U|"Og\dR8N+DxL+g'!"<!9f'zשLdqǞ-淏+5ڨ5J^
v?{3OPK2
*    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA256CKDF.classRKO1kaPHˣ- Q8.P z8x#	ڟ)$~ ?
1[Cmiƞon 0C)0^973ޫTJH;RLkKQzfuU$>*qD-^,/dz?~,jf7ȒS>u+μiʊI(Ul7jhmvLTYjwFKrbkm#^?d p a:zhf]`)7TGɦqE6Yr0qroUvsEG_!LR!>9(Ba2GLiZ`TYF0b	LroK(XϬ5.f1zx]|cːu2{PK==    PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA256KDFAndSharedInfo.classRN1=nBZ(-4n@H!!M"!\28J<mRguG!<
T*h[>>}s{y
`_gQd(T6JJ+wpT7+wmVw
HWre*uҤ#p!i3'*Y}01bdK>ax1lΝɺ2<K#U6%9Iަoݑb2Gͫ^Li 0`.@ȰQU7-l[l鋱cx/hqu2j,Jt?fWf.2bCDX
B2Ca~ֵ,֓\2J^VO&x&X{/Cf^0wPKML    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA384CKDF.classRMO1}vU( n@GC⍼&,NA Q!8`K3̛73^^X>
nkXe'k^*P6FڑtoXO]"3s2$]T#j`GϷN2NlVyZοCXpMSVLB*\`UClcV3Z{?[k,| A  {ut̆b-L1SSoMeYl3`z*L,4Џ/NB|K|
10)0u 2ʰ1Kf*ČJI\!:b
#b9!e wPKn    PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA384KDFAndSharedInfo.classR]OA=#ЅeQ(e	֒	i,ӴP?˧H(l&hVIܹsjOJ+w°~QrmyW;4$[Iyze&u#dr1is'MalMoh	i2¥r96ZʩoCI|bҩpaQ=~8(5t<S}(,X	2/a/L>@UT	tr\{8b\
RcEXKXϵ\CiBa3c<gXl11'wj?HXK{xb~H^J^*2[7ξ2ge+wPK۴    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA512CKDF.classRKO1kaPHˣ- Q8.@ i
HH3,7Y=G!fCq-3|3
5cP|(0i[Ok;?JU+~k#$DVZeIRSG"eT;O6'2NlVyZ,9S'ҋܛ2_UpC&viIyg$-).6`C	 |Ыf6aACul*Wdq/W!g:Peg9W~EDq*SCb*&C|Ĵ@։ϞMea-T,gČJI\#:bGŗ.}c.X0rPKyx    PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA512KDFAndSharedInfo.classRN1=&i(E
)db:G'M|"Qjʢt}}}}oagEBAiNkaf!pILnD\t.bC4&x!'q-&MFX6RGӓa?wԈTLֵؔ/P$>1TpaQJ؛(sPyu
(X2ֺy=v°W}
PUC1|$t{>;~M>EFMSn"0V3Xa#^X&Ca_=\Y7GZŊ'g#y*(y
_cwX[ak77w^̼lcPKFbc    PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithRIPEMD160KDF.classQMO1}ta/TR5C,#c]vI[1<HG~%FdL__^B Qؽ&9e|֪ԛB]]ϝ (ң.Sϩ+á($kZ9U[
8ZWx\iE88}.fjj~ʿx=\N2.p0Z
rx=gg(W`o,L[`YHYHlq/}({lh혖W=å1-a5H`*lX Y,$kAd|wϔ
[3hMkTe<`s/G&oX {3AƸ+cX}*%~PKQg    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA1KDF.classQIK1bkoC=)BRBAǘΔ$Vgy(Qb<[-yoO/ VD!Wھb(HcZQ+{<+6u_jRa?!"HalI\KJD%_OY"pWl$dNvxwVuxUdl]HMR%Etd$oPb.`y(x<=x6JY#}LsȰYL.ڢ/xGD!o0sٸ*iVQSja(0&Sk*>F1#1<C!8+acEu\q
w3FXxFpX~:;fcPK.q    PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA224KDF.classRKK1~jKԓ">Tɂ1aMiwK+<U(1]<df&>>(cc9C@E2իJNٛIT*7k
@j=X*d"R'=sj.E׫#a|h!E\(d?}Y[:B2!&?m)ڒxO}uMtd$oRbz{<z3lwβ.~}_trx};"
y5H*.jW+0`:fR1cs>,I,25_sV;2ĔR9N,β'_+,zYww:͒PKeu    PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA256KDF.classRKK1~>m/Q/PP'5-ITQ,>@t`3d`k1){0S4ʵ;eo'ݽFHMһa'!o#HalI\CJH%˟.,ZHiacm+}X2ǟ>R֪6	pK$qO]$Y$'|*%==x=x6
ųKga&*DOBtME~&DqUҪ'
0 CLTLŌ s>0cJ|MלFn01bnTNK	},<!|R},pVN0PKǹv    PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA384KDF.classRKK1~>K@+PP'5-ITQ,>@t`3dA){0U-K;eo'bRc&aPuȯH&R".uұ1&jSdy\99Fҧa7RDZXm%a+wkUWTHքt؄)ES踫IsavVuJZltl<<kͳKga&*5EWBpME~&DqҪ+
Џ OTLƔ 3>F0cr|MלFn0V1bnTN.&/{{Bp{X,;;fa
PKv    PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA512KDF.classRKK1bkW~|Ij*dA㰦%I+<U(1]<df&>>%CPE1LWRNiig^1Ra؋uȯn$)m:ؘP)ZdŰE)"-l
wvKǰZ5!6a8nJє;:\&$yp<Ða>zq<R9`(I'M%7\SQx>l\	悩v0`5)#`(f|a!_oͰƐ]4]mewDY{UOBK'},yPKCqv    PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQV.classJ@5ih=	Z/{S`XR(x\Cؐl&X

>%n
"=2=p`+	C*ggce#EYĥi*"6D銯SQ*y]c)I0yd(,(I[j~ycPY"jSc>ǳMeEr}mm!l .Kbo&,m=̆Ŭ!\{'
a>[a:PKN    PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA1CKDF.classQJ1}qkm}_0z	E{c̔mƙ#YF ?JLW*y/O V1ۉ6Cǆn2ǧg^W|Wė,_7ZR$B\fc."CT%mH1l]w]a륅UvH66n(!6e.KQk&.Z%k$!_k?~уCC7|nك߲ΰɩrGeQ"tċn 7Ks\Pp̻^Zi03C>^C[!8N"̡evTNۢcdΏ/G
?
L40uQ3|ҎWPKMw    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA1KDF.classQKK1bu~jKPZ cL5-IZٟ婢GY_R=Lfof2O 6؇nL~wGE2d
g7^O%_jRa+!L0F\ac.BMTW}aRDZXm'ᇏaS^Ӫ/-		pU$qKUHsazV'|Xn(~C~iyFfXI7U&]?Q12:㊤UKXG%L  I_` &}a0qȭPƐ.殣rrY9Ȝ^e.ۘ~fۘic=gI锥/PKr    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA1KDFAndSharedInfo.classQMOA~Fj (UeTփiҤކvvJgq*	?EEkBHL~<
.-#ǰT0VaGL~[SVg!($&ɩ
K]ElFp(4c0udvNɺ2HcLT6%9IޤobJwGWѽv_5I  `%@Z>ɶʭ>:m_nf1FFMSL\(ceֳL(`#D!ydU1D
wY
k2cs,zu6C;^M5?7^^gQbPK    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA224CKDF.classROA**MԫE&&$<5{KY>@ek`7ߗ?Ա5lz*0owǓoƟ7jz|l	iG$:u^XkIOJQc*3qcxswVs6I-?$KN	Nc'&̷fl.ppժI\:4rReyO-I#O#ع 
lWZt'rwPɞlsI6ٛdp<;͹"b&VZ!!"<
'!82Jq!>,O0,/b	LvQ]WFظ<Ͽ_lY,PK%^X    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA224KDF.classRJ1=u]o~//OUQ)>tXSݒ~O?@`3ə33<=?Xb=ݹ9CߖfOo
G2O(7a#!#HalI\AĻ(RDZXvKfcXwmUTHƖt	5I㖪$Y$'ɏ(,T#X|<|˹qޚdXNRk%x]D!pcqt+V-aU1.WnthzʦbGq1	Øb)Ur0r,օ1dgMsQ99n9=e.ژ~fۘic=fI锥/PK`u    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA224KDFAndSharedInfo.classROS1p.L@/M4C26|0KHH|)]v3iD (c85~7g(TVWzFZ;m"iH80KM/ӑ%ĥɆ."6DҎr(^Lpǫfư?7r*-um!=6c8ܗ/M:V]2\l0 g$)e)vݾvzPDI,v*{gʻ?L>CU9닱1t\s6q-2j,Ju?槏Ok((YC,a-S`o]Di6a-Y{m,{v>mEev/]\ac	^}2ge?PK-
݊    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA256CKDF.classRMO1}.R~H.
Tj	L7YBRE#{͛o~ L
LTk_şu>>l4JEڑtgL]"gVZeKRSG#-&piS9Uޤ%|1yӕ
PJ36wh}LTYwFK?ŶF{ A  s+ѸxW}ST:jdWD$l{2q
rfp;&;͹"LQiSbxb&M}>Z`UYF	{%x3W|[eFzi,FNXaCů,CfPKGߐ    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA256KDF.classRJ1=u]o~//Q_A["R|鰦%,*
~%fJf33gf2yz:ss-)͐+({U>Y]8*~B$,!e|D
ckĥN6"Du,%Fɝ엸"pou7d?0vqVxQdlIH0lpJQ:n
i.LRJr
p?ǰ譙M_>$U*D(
7}G{"iVQSrDGl*F|яq1	B\!g#7BMCrt1ӓ+Yࢅ_afncNYPKylv    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA256KDFAndSharedInfo.classR[K#1jGU/՗/P[a_bz,*+GoRa899s 6c}S܎2KNNW7H,yre*uMҤmpi	d	/&MFX漏aҩ&/)pC$6IGpaVQGXm+`}VCC}
2,V{T6r_lpBǼvOƕɨp*>V>|0LD>0CD!aCYj
k2,|#,bĳo+y
Y˳[u1}]t1w̙2geCPKyV    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA384CKDF.classROA_灴" <샘`jj		Iplm,jle51n2;73; v>jT`*㏟N:{f'>j4JEڑtcxDVZeGR|SG'5ʌcxwwιS9Uޤ%|'1\zӓ
PJ36wjMTYwFKŶF~[^2@`>B0nجޅ)j]5Tl"[\Mv';ɸ93C\1aT.D%DG!$x3q!>,O0,XfoobƷ-fWb=oXϿy2d]b
PK    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA384KDF.classRJ1=
^j_^@PmHA1aMiwK+Y>U ?Jz	$gfd|`]hg:7UCvp|zvUy{e}Xb	R0:u$):ۘP(xG%?_BHk]Ē⮭
ؒ7a\"uP0IFV+ICJ>K,?CnQޚ`XNR*!xUD!/peq+V
aU1.Wtb0=eS1#^È~1Kr r,T1d0gMsQ99n9=ϲM?ML41u3tҁPK?v    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA384KDFAndSharedInfo.classR[K#1nGqծz/՗]} fJG]X&prr}ǧ [X`a!ro'(nl+4$u-ۉEre*u
Ҥ-p&i_dg{&#\b,6RG{ưޏwTULUؔap]$2I[pafQGIRs}E]^	CC}	2,֎׭la?L6CU8
c^x/Ǖɨp*>VADLD>(>0bS!>baCYjk2,#,aܳU̮=F:|_:oμ?3/yPKa    PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA512CKDF.classRMO1}.R~H.NTA!PAV8tx#I?SP#Vhġ4cϼy3 6fډ{cT㏟Ou5"Hy3	l._ss2%]T#zOeF	<w*jf7d):qte$Ҍ:dߥ&'Uzђ<O^2@`&l0Jv<nUc5(U6-.&cx\ΡBsxaT.D%D!1Xs8m'wUQxb	LVQ^Z+!F?/xy+5ːu2PKyb    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA512KDF.classRJ1=u]o~//A'E֪c:)nIbe?˧GYoR}0̙Lc>.\gKEn3d
'g7^v6V׎%P 5	KoFC~_G2q5Q"_wQr%.6[M,a]ܵU5^T![&?RT%񆎛Bd$?rC1`y<d<z=1,:zkfa)O:I;5*Ͷq_ޯHZ5UqTrT\:)F}c |bW
PƐ5]mG䬻-;FJ= hawna9'}Sn PKE7v    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA512KDFAndSharedInfo.classRN1=&	-UTVTH!!%
]T"!1epx"I5U"QU=<*(ϹO'(`!W1?*CKrNICѕa'11?M&ZRX7$.M:v	!v˾JolwbdK>~~1&N
ySd]KHMnR$IOF䌒$P7X1<~\Y  P dx[:WUea@L
OOǻsyf>IFMSn"a	2q&J!x"³+xbIjk?PXKrgk-+Dk@Vb(w<kk/Cf^*XPKu\    PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.classZ@G.̲,(
KƄDDŒgVuwAI{ .w\ݥr;=M.{o^߾]ϛ7o޼73o8˯XDO1ވ	FL4b9FL6҈xV_xP`).챴߭.Q~G0[^ݽCZrS0˲S(^UT]~K]>nwX㤼.Wq$U¢Ca	
E
­5Zٸ˘4V0neieuyQ1)X`Q@hb/AbqXx%jc^XE1慌~bmNϨ]U]B7_]Wx~HE%cx!q

g9$0*$ vG/^,^X$&1<UmQn/;P:UY|]W<mǣ&opU!Ǧ8m]NůVG,mé+yYۜnLխrO^gPׅmjwr&UaݹJjwԺٮT/f`6pmWanWrk˵]n:=<=#05"
ժϧ>5/!;T/C
YnrtzjY@x{}Wjf{yG*<S.ڮzCVNnu*>LpTO`O<+mp:v)V$&F$^0-Upڥk5>Ӱ^a7D/m㌒+ydz,/Y"[$$V<͚hz	Y;po ;mcG\vuZ.ew{mjjm~wTbLKvke뱱VjU|r%K	6o(>-j'Xfos
oں.m4QTJKqt)&Atћ;+&lXdbVҌ*);luw;xqdifQ_w816!cq.LNr$UF3D]ū\mn¶)Nz\q#M}:I]ZBmJY˚ĞPWNo]kS2FN)42xOoH/I~ǮƔԵR]5Uu<ɇ*~^WY
٫nLŕ2{u_Ij..	ZJJj)UڷS4&{NҒhɞprp)d?bŭdgNz1M$1;=^ANg@M:WNt~AΖI .)vjtzytR3ZjMi,/F٩h2:T_{CK&GzCd4Q	4q^#<Q	r	V_0snCI쮝OJ`@\"pe@M!C`SS%
@@n==\!pUZk^nY[n];[{_xX^>Gx\	'xZxF>//	</ȍ_8e_o'Y4Q>SypsD_8IaneRw"~q)EzZ0?+/gZIUi3ljBܹT	ա#V8g4;E^ZWk9@Krk7,6GǞx)y?'[n|
ޫ|XEBQacEZՖVcX֒bS|QfhUjї"ly񕺇HW4ûdV9;tzJ'@:wZg"x~XfKߘgck1w*D
T&l;؋*3KͰx3jh*M4%dF-N31Ռ6aF5V}.#Dh\36HfZu4Ifqq1qiFezq>ڳf9fx$f8I2O$%)d$%Y$I	/S	Ti+̄yo«X6ᠬ䰬8LJʄB&Ooޤ&|.2-j0{WI$i4=j2&2:Lt$ՒIRoBeI^e12GfZ#B5Y$.V`9Ue(w\rۗ?umW	+3C+;._>cll}ƛ[{O.fiQR"G33ɯvV<V)M.
yk{5@C50+=\8.KўⒽt/mzG(A.1N}ZJKu<cŗ,Iqz< UR
J ^mG6l 5' et%("Mp%(e%Cx}?v+еb m5#ߚ~<S2DY\[IznFɮ@oG{6@WEy3؍ۜ_ra ⇑.I~ꖘS5ގbfq|tc]{9AѲrjs*
x8SҀ\>}͢
	T.XX!΢^b=8nG1Eqv!g>Lᒩك8ؒ#Q[$B'i/m0q}E<)畬WƅvP6rRtS rp1*3$aBGC*{H: ]s5,l}b/m;ZVb]{ik $ǤXg?KCΐ
Cm4UlL2]+6J+6͖5Цo.GUi,Mh.Ok#LQs|0eP`3 E95①Xeu0Drݐb?& +>r߷O $(p\XGNj|IEzf{$P1Q L0S9tIcIy.vX- ;xfo4FL54M5%	1BϷq;o3;xf>+%??dG̟c<Ɵ03LƟ1sF/x6g1q6o0; ~.㟸|㟹0_\W.?7.1%d,ec1xq>g}2~2.dcˋO2V sg$./fLc<q`4p<t%PKb?J
  $1  PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC.classJ1ƿtnnSŻo-],Vl=q&%-cEPbvAd27}~ Q
՞TRɴGF~xp5	GCM@&OzxY9Kr&eIXHNw"3jr47pǄ_urip]V2?pP+RU`l蜩Ouڞ(aux#(z&P)Y'Jnؾ&y^69W
PK    PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECDH.classPMK@5mԏ*֢h5XZu
nIB~^ <{3U	fkBPH%37JW
AG}3Β44,cSSdHcɩVd=Sg$#?p/
nQaۨz{ŸY*j-
$UA{ME	uتtOO+e$K91
3;1X;nbyj/ue8_PK+-    PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECDHC.classNMKQ=7?ƱAm )FNYC|
O=Y	ZQ1h^_z p
\>"JE^'y|p_BdZT!<2K5q:$RId"1Q:+B{"+_!룃Ap׃0YEet0u'|ٔ
U66<yȡb;e%}3/R<ecdhd3-[v;3^>+ް:ȮgoPK>q=    PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECDSA.classNMKQ=QGmâ}B<vS$i_DߓQUE?Z-׹p>? \⸈<'BSi8np@ף6i=Q<l&LHZMex,2`R;tMن~p/Nr9(p]	W=U~~B+q?k\ld꠱h}!σJ	+}B7SIzZ[ʜGpMl:رj;*
/j{ˣ
PK    PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECGOST3410.classNMKQ=7?Fmâ}Bۼ>)E
)h=_Ó=Y	ZQ1p^_Pa9BZMU|E({^~zv=BkiB=QH6|"$f2d<JSJ0)ؽLZ\&L3EhoB?Y7rҚ qP \w5"~Q>%{uX 	_ppƆ,\N	EKRE21R4
ٙl/V
{]}WS^PK w    PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECGOST3410_2012.classN]KA=溶f{Ѓ1j)E-)h8-#:#?^hs=y{yP^Bq@K%S4Zۛ~!]nR-+rrԵ{=S<,ǂ8qAˡ)DTpz%TWJSE̸1s-XlpGn|JjB{挎hτV^mEAY	lp -i)e$c"6xTk1۾陣<y3˫jBPKc#  !  PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECMQV.classN]KA=ڇEA@dH4Nˈ*Ϫ~@?*]6!{~{9p
ƄԒJmj0t{׏p@\MHJ(:l]Sa(BFr*8IXdM'?D~)t2$ȐuQ&k,CCueX,j[3:g*#kU
EE>
zNv	
YH4lib
/Az=9PK"    PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.classY	xTod0AqX
d!B0a<&&o,H;PkJ]bB77Z	u颭]b}[֞^f0|{=ls',0an]
E("Fb6v^$Bap?hЃZgBg
F7:Rw[w4
4ѽaz[K'{-Y$kFUC=sޥ!}$_ҮlK7igG5uI.}7PCPh}PA-׍@ȲW>ݳY#4ëZfhP@	:D-vPHMª/H˼i<O8nL-&ӴKGϭ-0r-.f#R
fh,
^ɃCRmU4i:%eݶw!GǰD1=dm{5["ڵr;tkId8.ǈ7~1pWcdui~5ezPu~Ws[!kEC5)	LݼӼ>
P`&U$bn@
aץ;A&g-+Ȱ$SiL\Tt5NX.dAj
#+he3%b$*39U6᧴kփf<^SF)׵6<}5i.5h,uշ.5ÞcNe]ZsdI.C:'[Uf+fc_`af`g&<b*W<uu86M_Km\V29
]n[$ׄH{͒@n|f9KT8\m5'R`3=~
s Gq4SfOXӡ'Pz/~/
=Lh@&d8qk.:)3Ԡ2+̤ѽ"\,tڝo]u1l˲0_X=YBC/X&AI6;ns'fmBYT#OdN4r3NռdPKQe&QuCw(䷚fdnWأ%%$6I4K\-YbDDD5;$vJ蔸VbuK GF	UbGKB'%KIH~Uv橎ެ9&N\K85U叩15jнԥyMƶF5]Es
\FytFD ']"[Y% DtEȮ^ieeԡo:>O+2)|-t.[vfbѳ(9tGB`t|դB=}u$LGw/NQ_Du8zI0FIN:ڔ-349]96%bNnɦCv>'u&Îwg4$%rٔގ\bT	ʫr=SMɛg8Oe-=ϣ@m^fG]?vܲ46dK<ٖ-'S)vl=ɩf0)<uE
^-[,ЗmCNѷY8hp,
yֵ,pa8tUgry5<<S6'`ޭQ0U04\)
b0
S,4

V1c0
PTzk!:|TSpWPA^>`-𨂛	exg"`9
1p`i'>
Oi(XO3>
||<
K<2Ͼ_E_g
Tp)ųo>|;_w{6O[?VƸcp'
%c<6܍?:d=zhýQ`g	i6L@L+pBHe*m?q(bP`2)66dN?x)JmxlSm(e;J#xVƳS)kz5=ŚbME
wG-,;B.?,A0(hYR=ZI1?	w , '(7
h6(&X^k3k31(0	[iV<2Κq113*6>#aiQqStVZ0c3ARiI)x
&x]Rk/ vXrXfb1NZxDEeYkuabwVaD\`hU8$1e[\K1M!*Y"$IBRamБbaTtZK!q[9(g2Il)ߐ|0S7^·<?LvZGC 4ߺ("6aU0۽e!*VG!.*v8Q1^fMJ#b^T\T$BD#".NKMz,Cpb QYsZa\Q{Zt	DDMTt&3%,ڨh<)^/pAMƂ&V,oF,GϠj9;BXkr3UD%E_R5_q#0xϡ@?[>xk]HenN>[ڪ>$ĨqobzmD,ֹܱo&yI-&+_Wti"g0'<zF;Ӽ!R´?fCK3PUbm5V vXR`U8u՜7b0NqЮ*]I+"*D9 E|c~K(VX. OU>h4	zgSTy<Foo4,Y3(n$P~S#>͢x$ED Ư8vO8ױq].jvA|BҰOe<]hM(Tt|5=DogjiI[hE[ixobPKl  %  PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$EC.classX	|?l& !+"$Yք;1(=6a3a3FbZkmali{Hk/{ٙ&߼~fTx(s܉
'f9܉uN4:ĕN\T4xsM0q@es
۶ڼU`Z_@Ja~9.YJ@8iFw/Y
DE}J1ßӶ0K
z"DjМJ)zHr[@ѪC*y*!GvFhN"׋#M5>mwR6{a-~?%A
)glS%PPb͔ͱ.dzmi}+'Nb.hW%wLZ\LZ/.kqgiz\Q{mQ5=k7b"Ƅ6C-79רuC
1P5לήt>vhT%Y1V2s&8-䷋^r4mĻ@gR:gS]zpx<z"M6i\	]UFu8H,$`07ª/|VX
/K2ߺx/	Ŵ_vtj͡]iA5E
iq# e4Bv)G¯˧gu/ξj#yLZʌtTozvaZO0T}XOA{foџѷX~MmTw	*&tFM1\/D`I4'߹Ys؛>~rBR2ڙ;{j)ᚉ%kfjT)$zպU}u~ɪɲ<)&uŬAwMV<# ) tJmCeJt$;$R*	
VKX#B	IX+5.$a
6JhI%Z$\*Uf	m^+av	[%lpZFo͝=jX=
s[0Įhq-}EIOlȫ9Y7$'RdaVusMF FyuMTTgSr->;T*7Miyo^of'లm?AƂ<F"Aؑ;[VUʷ	YE13"\,ysLq{\X}jrչhF;^.	䗏0}/H_p4Yn:tLflKQ6ѭVuj͇ͮϹoJ2G9L;
Kq~#ϩ\!7䨖<nCޞuڢuJu0ɸJәcƟ)]8N/T^ڽ\rO}/Oka;tSnUAU1/߬U,8Ǚ
,.Elܨuxsps6Wfx90]LPP[a&nU;x3t]
pxWxxzܮ(a>)Ƈ=
CA%deۻWPO*؎O)XO+Qp6g>`.>ogeþbc?22$(ƛq.|!2H؁C2Bz vbk)#"a<xcf!#Q|QWw2b~'?o~2vqx'?eïq-~72w28onWJp+GT9글Ҭ7?v#yi >@OAPɁQ#զ9R#U9R#9R\(P!D
(9]&,CBn1ݥ82'âxϺ	eG',k`LўfCaB׸X=窆Ţ=#u)CCnomRTŌI,b~OZ6ǰPBF	;JLwa(xs^A_TXnvtICCⅽ0`6/CHvoN1yۉ׳eLI(1fz^oQO
WzgX}(8tueIII % ^H
$sjS
1̕0pUUP*!xsѻ-x
SwPT4>9')bGIQI
!(BOI(!%}4y
#$Loe+¿axX(bUR873'4U陉YǱ]._L)i%N]#QHWwrϧg!=9oHLg3+]$:iݽNs[EECT:FA[aqv^y
z_C!ᱛ"vtBk!UJjl/2ø
c1=
"zȺ( 3lśV&ćqǊUx[%*|ѪB%O㠧1$F	q5z3
҉upZpPCFQb&M-Π
T9S	:-SvdPTEX-v_PKXA]
  q  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECDH.classN1OPqm410DD}-uR-$<nL\ >L\6iRy@>WZyi4WfM3T]Ԍ
飙i<ǒ	IPZʣd"cE+ېZZۛ*搓ƿp:S[)ltׇ<,eO/'~JgΈ2J/F|eV7R	Įme$=(wr7Hx貢fO8x^W], 9lw9PKot-  ]  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECDHC.classN1OPqm410DD}-uRHx,ݘ|(c`ɽ=~9;*$˕ABi]X{n>_۽.A
vӲ>-VT҉!K5p5(Awr4GAc{T_8AcJsqu:\u4#|=ra@΄/9rӁږC
s<	R,KO)C;G*39wV$/8xdcy#
瑁PK-  _  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECDSA.classN1OPqm410DD}ZHx,ݘ|(c`ɽ=~9;*$˕AB*]X{n=ׇ^ d&	Q/yM|:7z)Pf3S;siZB	#msIr6u/]翠~pbt8:p:zgqNV5a3KN\t`=%2®$\`?EcAൕ	6a(B`"v'V%{&6Ί8|tl,>y<2p PK=e.  _  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECMQV.classPN1=5>Pqm410i(Ⱦ:)$|nL\~L0qa{9o 8"C,W3UtNP`Up9hu;#H7eMG3b)xM$>P#P.SJP)\
RˀG&Acs㕩щuz/8\9fOʧ,։2F0(|kg6=![C Hx-mMxG(Xtu$6ةd{bkH^5ds<䑆kPK[,  _  PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.classJ1ickUm!..qK+*(cJ6Sia˕3;NG8'$'_ qPΦWdP!8.<d8B`4&{R3^gIX$s3B:1"*F|#
tjRo0a0KJ/$KS])GEu
Gc}P{X&(vddwrB0!::ehܣ]
9{o>TA*cDl#J&PPKEc    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA.classR]K0=5?AaQm"n@PX02؟/?JLA7{9!oϯ NM.ZSuFk4jӮLrWqzDp
>)S&P4ˈSu$
_>QJx&:<R.S	*?]vDKFqǕrF]K>gv+j`@րa g Op|Wbi,ӳI}}/J-iYHX`>9-1	&,,2AڜjzQ#F]j`ީaՎKt.fG9o!PKkT    PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA224.classR]KA=}'==LoF l=n #̎z1
h
0f޹s=2oϯ %H-ԉ:%H7ui	,&sQ-G[ైqd(qҺ]s( 8ӄ:I=Z3)_F.s@w%uèJ
F9.W
$wAp!gv+Uo@@t׹+Da&u_UZX0b!A9&MXX11U/
O{n ;'c^cC-D\	/0oX_mmMc2PK/!X    PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA256.classR]KA=}'==LHbZ	!6ˈ(Y+${rϹ˼?8A<o$O/)AVwuJ`1]ŝr`?
z>37TmNwU@C\jW3&ڮ5고)|0SM+:s
dbnqڕhrIݰp%Hz;]Apgv#Uo@@x׹KXMn俥7,1k!b!5FY&LXX41%4/5_n 3'`FcC
ui}7<by/􆶦PKY    PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA384.classR]KA=}'==Lj%B8,#+cϪЏf@h=s/
-x. H_ST\vb;"~ =z|gnڜ2婢iծ8egLB_]kBgASAaDVCu2>A+;䒺aJ
F9.W$w=F4ފ)I4_.cickP77	3>6*߰Ǭ|dMX0aa4v|]naCȞ76:֥V_`ښGM? PKZ    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_224.classPJ1=mu߯ևH"młaiXRݒM~T ?JVE	ds&6Ùl0v(CJ;/V2a+k/a7R:!r?MubBŬ얼/{Ϛ
.ÀDhd%X\GK8npkZօb~mV3Y%$Tܭ%V{0jâe!e!Mȟa;H{3n@o}iUek1``k&qڰ1g	,Fܨ.N%4cܦ"&L|0i!sqTf8<#;zD䄿+PK8 3Y    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_256.classPJ1=V]ת~ŇV"eXV
>ɚRwK6YRQ(1["&0aΙ3/O HHU'+'Y-\	_勤yQ!.v;܏tS0:-H"Vv+O&:aeȺu:o\
eM(G+Lpu[	%	Ww^,X`YH[uKXތP+vCCgU$F$@R_c!gƸ
61IHaMJ`ƸM?DD),#k!s8g%3Lέcywb=omr_@PKl[    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_384.classP]KA=m(zz"H	6b]#V~T4kED3p\9wι/ J*>"E	wZ_ۡ#NK,@c
 y×!VeP#llcY>Up\~R፬
l
$gXJx-I()[baB҂eaB{Wl/ݸ0_ҾUaA`k21Lٰ1m4f	nX1nÏ"6ud:>dnLfS[Xx}=X@/hWzPK͝[    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_512.classPJ1=ۮ[(>eX"|5
%l*Qb*(RL9grμ>>2a02*B-FIaro;OU]`\:dBEy[*aeɚuڄ:\
odU(GkLpuK	)	w+^,YHZ,,	ӿ:'es=i
7UU`@_icIld0MHaUR`Ƹ
?DD|V1b!sqT+f8<'c1	7PK=Z    PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA512.classR]KA=}'==LI=VBH!22;Fz1
h
0f޹s=2oϯ EuJ՝rݮXLrWq||X$Go
US&]Px>!I諶+|M,h
#(hӊx\'( bvep'\R7w:\I(g4媞NWǙ݈F[10e i02&(^un.?9us0/oi
qZXH`.zͧAքMLc aMKe<$Ȍ	;}cCm]h-<a +X`}DPKY    PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA.classJ1ikTGPh"zK[ ެPRݒM>(
>%f 	dOR0z"eNcҿ(W	В{X7u܍DOĴ$11KT#:ar%~AFG!סT#*jvFXE5dbN0~MBoT(5IݖF+`5nZEޖv0`ԁ`Apx[@1kTŔCi&q\ua	rJWlr'L#O&&-.;ӏ+ڰM#^=`XWmtmNkȿPK~S    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA224.classR]KA=}'===l=N2;F(0f޹s{oϯ J#H-3K}Nn4JZ'pLR,զA1g
UFzVQ@p2
j{LySyIMPk٥5`\*&( w8pACIO(ʢZINCiLpCIPHp#LY.mP7*rĢ搵acņUX#HUOiLˢHDfspx6ѾKfG16~EPK2X    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA256.classR]KA=}'==Tb	ˆ4;Ȉ(YK{rϹs徽?8A"od 9AVuJp%exJp&
{s鶠\:lBEV7'=)p}4	
X=-۴""P	J?-Z\Ю
/eQZIN4{Jx]IP@p#L´BBxKXgMϛɏ}Wo8H`$b3ڰdY$fej)Y,hNÜƇ;5&5u_`6[md> PKڧ7Y    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA384.classR]KA=}'==̃	ˆ4;,#+cϪЏf-!j=ι
=d."=Fӽ4u+p/+q|z>,AtH#BE^w])p=IZ:Tp6;	EY4vVSi,nO>6S0caւe!m!CprDgMLΛɏ}Wo9HbAA
Kk99dmX`<Rfe)S(Yp171&7u6_`!;]d> PK|Y    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA512.classR[KA&m
EjC@V#!|zfevYbQh	AP3pἽ?8A"od 9AVuJp%extLp&
q붠\"X6bZu+^'Оfϔo8ՀqmZMuzg-.h;EYtVS@]%HT>6S0m!e!(^~.?ٶEIy/
	;q൘6l,plc+I7YZ`ʸm"640gC̝M횺l	/oX{j_-cmmd> PK޻Y    PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSARipeMD160.classPMK@}kkXMa?.9TH#q-m؟?JDEffgޛy~y|p
\!(@$f˹,OoA̕IS$L$m7/^#{ ؝Đx,m5U;xn)OP28Vx<<ѴbDmO"54hGFU&[WBw??nXȡdb
$937cEzlJRrIPlbV;᪊WPCayC,Pg)4M5֡PKɾK    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_224.classPJ1=Ӫk׭zCOPjł"$1jJ[җG٪H4sy~yxP2!/T>az⟖N¨В/HeEG4$2U-:f_{a7oxpXN%QamT!&7p]𺐬kHxi6J0)X"~K`KX8t0q0 C9]ZЗ݂Z0>*yHcC
a k"\taEӄrHW
rǱ	/*F-:9dolb͹{==b3]߾mtmNKȼPKɊD"\    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_256.classPJ1=ckVWP|h!"bA"$1jJ-Tg鋢Qb*(RM`&Ü39g_ lcO{*Tf0XZBZr#.a#uvC<6MɄLbUYT~ l
˩"
TX'bjpa"!7d-]@j4Z	&Kqo)B5)8d;G0_ =o-
ӻoF=<13Bօ	&]c.E$xЎ)5y˘0eYXE'y[-dsvpO0s;ݼltmNȼPK{In\    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_384.classPMK1}Sۮk	V9TAPR+l)udS?K/?%f"Uf2{	&	ahW2\WВKgMF<ꄢ+xlZ	mŪJje/P
\S
EAXb!cst
)$kJR3w//J0)X"~[j`IX8t0qq%laP|nAo}uUO<`C
!50.\L0bSt%
$vLXƄ/
r7ՋZ=fawyG/ڜ}PKT\    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_512.classPJ1=mu߯և'E(młeEIb6ԔvdS/G٪H4sy~yxB&{JW2T2aThɍ
ݭmfk"j#xl	iŪJrnA
)"
TX#zF5XIdl0ׅd-]@jN)VIiܴ[P{C%!4alOwje~߮*{c@0&ƤS.<LaUB;q,cȗea
mj͓{?=-fp^ѵ9/#
PKx8[    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSAShake128.classRJ1=qC T2,./#>LuLb%})X(1;R9'Ilb \-t&:tzO쉝#X=>q&<U^IHR {o&WE(iwN3!Hc36+jEm9]Jyz~ Cuמ+BdJDǩTEP8 %8Rwt6`17`lr=2Q7Z_qSUiz]/~ZЉA1th0a$>Ř	&7яImVWvI)$AۅcQ=ym#F@*@oquL7`H?g꘭cSuݽ,(4UԾ PKz  O  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSAShake256.classRJ1=quhPƂfD2fBmgd*tSQbRH-h&&yz~xuXj뜠?Uaph`tN"vVEy3Ua*BF:A'-/BISp:	Aq?Y7,
(KDwY*agW\zx)ZMDǩTEP8u%8Zdr00	r()O*|}~lwֻ+=Ce׏b-#i!>
&4L1)Ø6aaD3&F1*Ю2)$H|paLu#:]H.'	ZXh*(δ=[X{sYUh}PK(v  O  PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSAnone.classPJ@=֦S\u1uUJ̢ D
.dSII~n
 ?JTAg{;w_ `h	gBWRӛt$٘:O8ej)Duio$hYXr]`VPFƗ,	TJoE
x8rFia>R<!g%2BB	\۟_6.XvQ)`"VXsb'p8xI5ǒa[ᶩP1PoMa_O9c6&߿+v:&_PKFA    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA.classRJA}6f2CaIp<=MhgBOGg%QbO\P$`\o_RO[$L$؈T^D78u (Wh,P1-/N	䲀#CD4}|C,<eX%XoǪkЂX2n:4~/9Tt-}(WWB+ɩ4t]	&	
`	^LnBB`V7I`=cb:n7Jn~8WqЍ=uЅČ'f"LHcƆi1Y7SMA7`q,be`r]-d,,{,<"}ܸM7\ecm&VzPK0JB  a  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA224.classRQOA*G'
*V6)婄ViT^ΐq4wޖ؟/%4s
Ɣ&dofݹq@ґ=fX~F	fVgx?OIHqiFTbeR[A3yOB/"9Mt0XDl2	uc؟ZԾ*R\P.ŅFK$;4*hS,uN%ey.P`(W3	[ɦ`6W~ٔ5{=)W<,bCk,33"XwQ/]`bIh;1%#*e(bv
&(t'f7cD֥3TF'PKvaJP  i  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA256.classRN1=&&m)z%		}%Uh
jVHytVhyD>^@(TUxF>gf=w׷ PaUkuIq<i*8j0KLKJHqi}TwbeRA#;G_$'_Dr	iw)"	؊eð=5:MQ=*Rt}P.aђ+3=
[J65,8Xt8;(8p?:CZ!@,L6QzƬI?'V\;òy<0̬ffGx梈.<p],aaOBE3}SB?iRğ'=7Ull_
xmrGx=%^'D֥3TF;PK36^u  i  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA384.classR]kA=fj[[?jCRL"Mj->C
1?˾4URJs/sνܟ. Pbȗ+KuvpRoMO%
Ztdˡfط	Ou'V&MԃIfEHE$	Hq(LHf,PYoJ푐Tapxܕ+"z-<#>ރdCY^%e.a\ɼORy&lԟnل՟{=)WN=akrxl O\܅g.⩋GdXPLǔЏD8'
ah&v2򀭃x6wF/G:ǋvɺtfP
PK(ݗx  i  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA512.classRMO1}N(l-m8$`5	m҂r
ZnugKH ~b6@Bi$jKy\^] *CR=dѱgo1x(aU\gXOL'XHm4Mx۱2)o͠$!	G&DژD
CaB"b:n3ƱVG*_
Gx$tUhɕaF=?kJ65<s0qPpPt2l}mJu,F<V+0lGFI߫WqC0!Wy"cE	o]xx];)?	~L	HJJ˘!l~<\;Ňs;[2Y,
PK£g  i  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_224.classIK1q;VVOP2"x	52ΔL*c饢CB	ｼ<<<X2A{6wBе%C	[&J0-b,_'XTG9u (Wh,+P1-%574!Fﲀ# Og7`9/
j+e@K"bøP'%ZUѵ,_]	$ӤkJxUIpzEI.X:-tY,t[X	6~gHo&R6ג|-g4g(V}5jj禒?οd8w:0
ÉIhуI&laF?:^hc|,b  f5eaY#zNf0;hm$2PKP  u  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_256.classIK1q;V^L+eD$1jd)TKE3u:xy!{y/y~yxElcKRotyǅ#DÕ`ZxJ<YAUtDcYi-z!XMS2n.x5`:2P>
4}|B2,,7Z(";5_K.]K_(ՕJr*8MaW/
5ZjBB`wl,dsMɷb6M||s[n~n*Kϊs'Z
Z0gЍ]`FFmb͍|A&81Aχ<bfKΙ]{<Ωq똮cu޾sfM"- 
PK6  u  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_384.classJ1}׋V/VAP2(.7#W3FƙI>T| J\	srN`
	Aǖ&;Gn+vJ<YAUtDcYi-z!XMS2n.x5`:2P>
4}|B2,,7Z(";5_K.]K_(ՕJr*8MaW/
5ZjBB`wl,dsMɷb6M||s[n~n*Kϊs'Z
Z0gЍ]`FFmb͍|A&81Aχ<bfKΙ]{<Ωq똮cu޾sfM"- 
PK$  u  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_512.classN0zh`AB"%2UBR9."x 
E,*9`K3_ c5;!ؒ{Gq-p%n!F2=!q@PjXCbZr^klԻ^
O<B)߀Gͨ-ʲ&C`K.hEEvu%
Nz*U$?%B'-`Zhai!c&!\SFM$!\q֠*Jn8܉V;hÀ&f(1tcFm8уQ hs#_8{	,ELa0>$Ұsfe<`j3:}sj:똺dܼYHȼPKE  u  PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR.classP]KA=}'=/CTOF$j$n=N̎z1
h
H½ws|E>ԧzý*7*5+p/@M0yYru@C
ihpn~{̈]Zmsu"p[	EYzB+ɩ4@	/	Ѵ0e!m%8%|WO^7Կ}WUh9HbAA
q4r6l,pdcJ	6.CY1
s1=#֞a_!?ћ&-dPKn	R    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR224.classR]KA=}'=/fOF >!822;Fz1
h, T{Ͻ+"	\ y&	Rw]U+.˅B 
p鎠\
z:lBEgLp2iL\
xˠ5E_Ȗ:T/p6;EY4vVSH}%$p>0;0g!i&8%ln"kjega&M)ou?UXrq(ZIc6Vm8Xu|Z`ʸE""k!
ntOc^,1>!61kmPK$<V    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR256.classR]KA=}'=/FB4;Ȉ(Hf;s=2oϯ NK3H}NּRͭ8\	wY:*Cդa/}"~W4@VZfϔ_JZlӲlH_0C'( 8kqA*PENGh%91SJCku3,)i.ds2?6nvv?!\Ab XFKi"cƲ
+6JpC_S
L͢HDxMǼ
176[g3'l`kl>;H PKZd,W    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR384.classR]KA=}'=/A`	B #+cϪЏ2B{pϹ˼?(b 5	g2 U{[%pL\8-Cբa?"AO4@Vz	
fϔ_ՀZSZЊlH_0C5 (9ksA{*PEnWh%91WIc
s,)i?]"8&26^vfrtVSU %1	,4摱acՆ5X'H/̇aQ$"k&bF;u`3'lbCl?ѻƏ{H PK=[W    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR512.classR[KAFm
E'#Hzf]#V~T4A)s}|0oϯ NK3H}NּRͭ8\	wY*Cդa/}"~W4@VZ'fϔ_JZlӲlH_0C'( 8kqA*PENGh%91SJCku3,)i.ds2?6nvv?!\Ab XFKi"cƲ
+6JpC_S
L͢HDxMǼ
176[g3'l`kl>;H PKj0W    PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecPlainDSARP160.classPMK@}֦Y?n"^*BIs(j)<IȦb^
(qS-RE܅73;3ldDrNPh4ZӲ	h6l\8e0JB	Dve_ՏN+,~cImԜI@PsEvBO>A.4;r$rFVn2	8~R#kiӐנi(_u*A?!?ac"E:d@ǲ#+9+8s䒠eOQ73
"<t0~32XTh(jlAPKEMyH    PK  C:U            A   org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.classsVŏH9^BZBKI
'!1BG]IIq7-ݗPڙ~MNdF$-2d{޻zҽϿ6!>`.
bq\5^9i
VH#rTS4-t9CAK4%sҐj1S#Fd*`Uutv2kFgF
Osjʒڬۥ԰1,MNkh8Y0s¬4ղ2]H4/څL3C*غAѹnOǲkZS5*9=+͔jfgZJj[s<
՞5e+Aj4`2==R>i8rVVkR]`J7f23.>2n|׋rtwK-D̔kR
5
5r)ZF-e0rKE)RVr7T(Jv:R
QΉXxrnsc7ܡqnԃ88ڑ`*cyU7<3显QeTZ,5%Y/87i
	f-\*B`e\!pUV
X+p:\+AM`uIvN.MR[z
l.+Cփ'rSѯ`]{ig7q%}
<53[՚~loߨnXbs_6nq.lQEVE//8^kghn8Ǳq4TC#BKP#h0 9:(^EG1{cc؍{ŧYjΖ6>lpjY?[NdZ1Op	_R	_?41O_[DjAVGjuzVk7儯MքLǄL긦jHyjyjhZ|K}nϷ)yOTsQ!}y 빵rp]Ol%;W"]ᑟ*6
_h8s+Ƀ
]X>O~
y\;;?4=Ǻw@M]<6a_~WsWL*))xa 9D>OH@'_$o"_"ɗ+*y|%_'o7oc[-8!%G	(!y+y<N~BF~JN~FA~NI~A ϒw_*9I~Mj7dwI{4PK#0    PK
    D:U            3   org/bouncycastle/jcajce/provider/asymmetric/ecgost/PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/ecgost/BCECGOST3410PrivateKey.classZ	|Td&/y@ 8"(d0	[&083/H\[U+TE-jQd4ںt7kk7V-Jy͒M2Qs=sΛ3o?`+ǈr,rTJ
Kk	e26۲őXD?0"Ը"rݚekM̶n
UXԼvٳu:YWhr6A]hjXn9r%XE(ODMO$B]xGD"Z-:[x$3ܡYt+at1h֦
0SUYcjZfL\#X[$,)eڕhPivmxBUOzm1ňx<ݦrŏeȆN9_b1n
78\fv~t#[p47u`{G4Ѯ@OBbx6D{H7yVVj1-2!:'MU"XR¼\?,"Hk5j}!Q)kzVSUtt[&Fӵu0CISZFa<-څh'+5^-!ìy {_ݹe2qyHǒPDlpfYٴF&斝Y::RlάYpS()g]v_gd$wXH2gGVnshKMu[Z̨XGެ'osMzdc2P2g_錵ɞ#	FZ[(ڬU(*s7KEbm}ƫ537j#mGn'p'Y%>hI_] w%OL'ʊ1&QEaزxͷ
zT󅒱پe͍eSSe-Lc_#w r2D=lq7d9iUhOA3%L-8G#=Y8ա;q_Ns&w=2\ٻ̱!?LqE8yM01NfOb3	ΟЗM0Wv.gXxYsw8eIug 20"[by=xyrmk>>-!`W;S'"a
\%LV[Y$rpDu(op:n	8lNfɯ8J2aɐik`>N"40Ʌ5c=Cp/>f2|+fw"/h[ެ%j11a-rr[.x`x#p 
Z+ۙ-|BG3O+l8Ȓg2BEGθy5yeRKDB+r];*ٿ\J?[&#WZz_s:\*l*i#3]!7oHhɤr/O޽jUРQA
.PFA
)PE
.VТ\}
ޯ2+)ؠ U`6DlVpv1q
TPT+TEU
*Rpk\:6o}k׼vOLRbW\g.[
1A|&Tܪ;b@wXC,걄SVߋyRܠ[=
͒UrKWrkt8o7.'f0Oy&T
O}xZF|AqXtjY
,23M:۵s])הA#ʟ9<kL zYbpqeOO=6Ɯj%FZe@9l1n]^fwZ)R(pU,,sݦ٬ߟp܂6CA!^:<_v"+6D(Y5PEĐ+߽dJEFsDC0vXRV7P(Z<w.G.&M^j'bp}g;yEQŋ*Ðcf{vXΒ;'Nra>2n`K0k9vA

{}@Qi7VDť@ȷ/ӃFRҤd#']|Ch}i/6	([QU-*rsCٱotU1ca޻HXEEVK
:{
}Tb8_Qq
U8b8P*΀SEP<QbD󡨨rg	|D
-*&9SnT(滛-0W`Bs4|_P?RQXX&0?WXz7~"_JW2kLoT܀T2;KGgOBgl8SQ?TJ57	/soXץ8&,"TIO|
nRdL,Nlq?@nyTFUtB@+*FT	+0N
ǅO$.|&x]NqNgiw	!0C`$]-X=tYg\:Sr\x.<H.<D.|.ta'	0/~ͅGh.(pR.|
N8M`
6h'pn-tn=4[Ŷ"0[`_<F	>Z"	u!19B7]w@; R@rҽB++ĽB+ĽB|H?DF3,r^ZFk#dN|YhuwmxO!rdB% PO/G6a%-;xgY*4:?Rtd?uy{~!EKkaOk&Zz^%kr`I4
,4iR׆fOi^FC^!/c%JUJUp,ck9V\3FRtGoW6k_ڭi[kn?]O#,A@W<3EE<Xog|/c-28Juil^C4IwX^`r!CpKl#-4~Zy{xi8eo{sL*+677uCq%ΰ9ބ髷3
F_lv7<I&a<
yiڑ;0*/4}qĖ4_)KGKbrV`KS.ro=V
Oaܷ
U^OEN]=)q(KRǩ-=;Zǩsޤ/w8<n!UV)7؆vihGl؏%E=
s#
:$[s;(r
nvkM
3qP@0a&}zzDD:q+9
UpstnpvLN<vC8uPX8y
.rFRZ>$-8OP+4dGYӥUI.IJq(r{gzSnvn-*!==xn0RОÓm8Wƚ׃-n؃]-|SIm^~d'n(DhK72l4Y>ZjzxK9x{~Ľ`iŗ;!xxxzHg~NTeGydڈ*6h%6Pci pt?vzTpy8f޻
7	jGuL|`Mx#y葐b~#;!9l~LKo1I/cG[7Mx~GYq;pҌ	㜗{SSxG1m>Nczdk1^Yӣ3uɊ犦IYD!=·CzC*o]6\;4X㭜gpu&;E3
/Y Iѯ2b"kR.$)ef`Q,Roe|x;v+G)9FvR4hE6ZX<kagOco泬)u|ZiWv7J+a*K^*R$'hF!7l|`U~ĴB/wMr.Ӊcx/4ԸW"!bW{Ejo3VRc>w!aNb#f[%cs}J PK"9  Y1  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ecgost/BCECGOST3410PublicKey.classZ	xSו-0	زf	1[16%B~6Yr$p6
ք4KBmB,6N'̴NY:٧kebIig{9l#o; V`R&`@~YGv[YZ{Z:6fIuM<wi47	(uۛ[V^\@-jknlYZt,[|=-c@O(p;
/<uZjE氵O(y#sKKSno Sv5?hn9EG#]ϐ6Sv-J-ްWj!`:Z(6^<=PXFȔ9Z8
I12)ӷ*={hD5{
F`J:BpWL9Lʫ44k]ćƂbzݪEZWW<"QV\ϔ>OoIyAks=@AC~4-һ޷mׂZث0!SǈA0DAfLRnJ~zkl56hEhpGsKHZhDtRTLl',ꍒ3ҧR&jJa2vڷr?sbžձB-PJlo@^)x@?N?=uCnOsQV5r돶FPM[,`.DB`W)O x5^-M#*N%[FGb@$3)JZ'z8X맄pZR\d*rԊ(}><
w|>o$HpiE?1~\$˕a9gg,By-a?g3YSm9BX5~C};l_3sFۥ{6ǗJFjb	^f-(OdL;u][ccڕdLR\(+~q5|:'4r,&ێ1l}ރ>M;"LV
usk>.ں4R{DDGi.z
y7%]
MRsq:}O7^?-3[6X36M^C+-+uJ"dc&ަ,UǖBK.<(iG1iNlkƷbvaYPGZA%Y]%k%JNkm#_zt(svq39=tR˴n ,sSM
*u޾Yt$;۽
|-(H-qDDDDDĽ;%Z%$vIK#WC>$%|]DD	AC^DHO~DD"*/q=o
lqC5Uf}ڱ9Nbk,DJIW֐
&Hue
;9\R6v-rsv<3=$Qβ3ͥϳEޭ!R]`l%,U\ATz3,ϒɆt\\_"OYXm'Ѯ(<SwFL˲X5h2#¤2j].|eB[tTtn0s*ߗM⺱$=L߱;,
bRdJ"CdY)D4{ّU'>R6!r5짎Ԫ,z4ҶR&Mm4)]?utG-OZ=ei6jx?On5G'r򽙺t۬e	99Vì[8>[Hܚ9EܒDk9t=Y-z3jۭhxK	JQk)>>҈uTUٟCKo).ߙ\Lh=k|"GSUs񖊭1`H2UlgP
'l*1T32|*0!|M||]bC!UQ*;60|A|CB
:r[*V[*61T*3la~[|Wû}b~a3C9~W".5c*X?V1«g*U_/yW?_؈SQgTq*f?yboG?L3-xf!`"O	d0EbǄ]bO;<!l*SIp\y<%0ܮ3HӢ@b焢b$:
NEw1la(xQ,`ؠ%1a	F/rgFV*xM,d8+\jA!lR|NgfPϰnF&04+(SEQ<+t:
gγB4{.
Q@]k)f)ėa9
ExRLep{E{ݘKp%3o֨wۧ3!O
! p~ T
yϽ?,s8~Hz'ѳ5$b-qYthgeݗ7XuS&RHyg;]$ƇqxH[Se#)Qp?bMUj.&\ɳqqڐrڌgIAl"bM:u	ax#&.o-&W8TEBM8y7ш|soHJϦϓzJ^Vۜkx9mWZ8#bxxH!Ϻ*swu,pb8Clrڝ!ݤWf#&c׵{\IW)6]0|6]ɶJN`*3vZ2ɾ8Bumfʚ|V>=oj$)MYJ3Ϝa O5=b2i25	ZU-~KK+D=]Q	]S\ 'IP-rIEU<4)նa<9wɿj[q
N{lu8Ka^pڊKK]xP\z1xǴ1q=Y .A641v8q%OV],W8؅hr+)Sn:uNg!SU3Csz,(8a44KOCH"t#~70KY@m4Sv%B"<\ΟXjz4WL<Pqkp
t*$%:$tL皆Jg0tV=qqچ'nQzv|1r_Z舉ǌRԔq9oʯOгKxI60穚!be\t,~ߣJpfn`3@M¡q7x+zPkǙ*u%ҳ_\-߸:նfW-SҒIki~LA
hȣNPhDl7Gɢb,O밋^Lχ($jCML"3	=Dnh!xr2\o^4_G0Jw\4ȼU,%ѩ_]#$sj"y'>"Oŋ	&F"ӉQ4m|S޿
yM 79Fן!Vvsa?_qM*t
%
bbfE/c}no@Nv%2d҅|y
q+!ޫ8N?.:	}qDAW.8Gۦ Y'*hOćS,|'}T1Ɗ=uEQ* /xJPKm  ,  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyAgreementSpi$1.classRKK[A&&kh.Z"7LwAEwp3f&ܙ_UP xntss{w}`ƚ#@61$0PQ~(3a"X&g8+D|HIk̍M2d0-I'IF4 F`$M)o(
*XFYtTD>G4cڤ5'?S)qEPx\&m_
[L|oDC"P`s\E+ŎY<:u~Q蹮@th-eTyO__P [&#,K,[wmkK_90`WVO|b]Du|fʀiPK@K    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyAgreementSpi$ECVKO.classPN1=/Ttc,,DvHX`HX֡@d>$~e 1Mͽ {%0nۻ.A
:=ZH?6N}LHY8ri'%HDtRor?>3ň+t4rO~-3A$9yJ7i7JwNhZȠK\2ŕ3#BygqEV.\(`E%8AQJ	ӚkcVC6;A־rDpK/G8x]3-6 PKi!@  O  PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyAgreementSpi.classVwGȴ<6%1c0ɮ-P06bhF\{$#{+		̋[?#DiIӫ:ꫪ`惐XDcw.ZCfl˜Mq{g9BY;n%4m;=zZs԰L<ö$l𹐖p8Or9p7$)d^Q抶cm'mJM!rc#vH3cx7-=!7JَꄭdEKEf]3ym/i0y|/y۠,'E#$I1nGɭ<hέa<2#hG	w&~1fi(eK\ধLC_ʔ殫%hFUǌdY:!c&OP\%>jY	5bj.X[\<T6WVĚDsh/	ʗӆl9.Ӕ95jRAy-Tb
U"ӴTƥkEYy)K914+n'%/e)hYªAE8?wxZB$);ms:\\G=G='jy<H*ug.jHNi
l_NM%={9\ϝKy*o7RbN({?4,a_];s5سwRGhbJ֦]7qp]=KL߆)R,K~{n/r3Si0~:F@6#4Hع_GX:hqՠq5/-j-W)^̳*ؕtMj7=NgL]maN.na;C?fxA={z1<0O~k85T!B;*oq6e
]>`'5*OZ-m<^Gw|U4j[vϗE^<N-vSdȃG[Koު(vUCb)w|{N}"Ul/ ێX~%8/!lj`ԪR5U 9U-CQ.Zho㠶+8
d܉
8`?kZFn4)gl$*AS6$l%Rp/Pp# Y8+0AiAYCaZ^qxNyE`<
;2N2K2}YehxCWe KzvG8BfQ=O/k}fXKզLNL%xU'G	O$idPOB'4+h4;aco;q^0A{}CӘ	_u#Xi\O$?-kw]*!%:n`"1V.*-ƺ_u\Ug$L2<޼m{&9#͌6w52^«R	QQ&`dI 2%=FHs9a9;_Qtt Eh^^G@X8}iB;gp<1/Ħ }fwR6=hIR81F5HMRΨz\iCQGcs8Ck3x?0sqdh&ۛYvP4Z65^Qdx<]_ǗQ05EN>hq4cun
?E vdT(5dS-h?PKw
C    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyFactorySpi.classWw`QM_QҤ8:hCrPG%Ŕ*nBDC"m}mz7]mI9lG~	dXi;,[Ʈn1$""	g3̾U=gZNkV4BW0LyRd|ű쌀j*iنs-g,c,GLF7F,sMX^ӫ90=n"kDIԧtSUG5z_-喝zc{y[5) iџ˩z滒urRw*[MݲԜ'voN4Kph !@'ˎgxm+\|Փ#c1;q9ۺ:=Fv,5'm۷a)ى뚞qˤޔj&XJ͒CUO±
3%;յ 55e,Ѧjc(jzVUOAV8]?,Ky=x Pu|'ri=OAN*VuRfe,132kN|+<0elK
X\@̪U[˖맇SrVbB":8oxÌM]tFmC>)Y4E83hl"65
;媦S&NcoC@cHmd"v=y۩t
.I׏]Ln_39ܑ
CPvJS-k%
[۱Eă"xHD"PDqR"N8-="D<.bT@dzEIvO]ϲ{`$F/<ӪsM8]IWPmVoP7P3hm\	Z#'$%m8ƚfЀsf	:l7񠵚-,Ӵv&;1Bjr;+loH8Zj죛/0mT7X2Mj+֭iOD%4sdB35rǚ[e9$
:R)~hLKM
.;YYx~1яlZj9BŠ5AJkURu­MAd<l1/;e$I\f32d2,y^|@A|W!*^,rKqdͲ0؇MI
[x[62Ñ\߉p>*af(
	I|F9|^B^|Ny|g|I4>l-aIg56_g.ab]6g	6_ЅH"`3Hߣ1k>p"6ٕpTm/KZD^z
,ƫ. '<,B줧	wu\zz3o
oP	ybW6n7
UG{CؼBohC[1;ܷ!}_qWF_&n>Ru<}u7Q,u!D]qO|'|]޿xPnP1tmsg\<8d 酏ʩZTBt!Qįn!dhtcw	h;]Eq\vtPU
ш04"C2yKz;KZr`_ _=ա~So/Dnz+?lG\%](alwH(E֖	qpUY~W/j^sݡ(PK%  A  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyPairGeneratorSpi.classXx~X3bFP	!^2 l%q8keI||RR(-]N{nB8	{N'݃@;d[rFz{?=rC VKP^Jpm	֕;JSk.GMfn^/Piomٴ&tǹMvvz٢ZD5C2lA=
ț<-V\! Ƚ#Pn
P5T!cPXdP|)P;Ԉ:%$jA<صLTdR~O9>$TPwТݧI&w U,3ᰩI][(Yn"$[
JFВ#Z*ӎ>HS=%C֨@ħqE\_2or]AT;5'%`PAI7kրOjk~sgFt# pQ9,fYx
Sx%jMkRM[L-2%e9MriVML`qNY:]!nfH$pEN2R-kXD	jX0ԋ|9{b&i;<M(Or](pbدF͠VJwmerRau.GCH=}r\Z7epL:w7EH)=zO+S"`?JieO|vVfch@Ս٭*hcյ(TfJO-hj9;ӼUIv{ŧVQ̼Yf~߯:Vp{ܚ?fϔrr6Lz)QԃT5;P4~w;쭭!o
"єl0)Y9{Cr&kgRp\lNfr7YF'
MIԌЩmQ٧ɼq
N?gSihi%4HpIX.-aJj	k$pF	%\'a% F	M%x$lIf	-HJ*aV	%Y]ٚy.LNK[>hր5gec^B[ߐm|&'jj[3$]8M.BUMolTl[mkγ9k3U.2wHqe`P+Zf\3d&Q	Q!X!1
ҕ6ߒO,Kߚ7K.X57p$&{f+n6Ag_[A>CfekU싮UBDόN}9<
z}s:'MEycN5+
W<%re,os2i5U:oiUS<gKq\,LGìl-=\-|7e~ք8zVٹ/s_VƝ{kw)<u
T`Xq"x)%
PjDܮP*x^
+v
C%xKq.«5
.W1\ײ\׳7(oRP{f}Ex+P #;N.=exK>!3|aR.'g4 x@>Vf|Q-SٶcC\F/3<,C'3paB~|s222M:-'dex[ߑWu%2^2|CF"pA1Nwߕ1	
qBC&COW??>SخwlD0!fD)%Y-jVKZ#a1B,F;rNcxn9'H:*_W4G[)?]AںKX5c'pYP1Em㸩(_z
⩓&Z*S[$K(`GB\jo?*'ms5$D'<$jO{}ݮOO= gxvORrOdsFr3'juDHiՎbq?5&!F\@8~62Bi#nWBX#'y?~8{rs]HǸ7DT8~OY'?9IՐNa))x=`)t.rAssxKIFwUem#xzKOIՎ870O	Q>Yݮjs.
SJ<LsMI_Жɟ~ uuW~tV*?&0ڿO ܷX6
u
(j,Մ%uU	>69%6JVMഭF\<'gM҃!a	PK._	  8  PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/ecgost/SignatureSpi.classWk[~WZ1;(MˀYKع0qTC-c]VX,VEi=iMZަ-$&7nCJgvW'3sμ:gf8G3=QNL{9upjHCkII$Ee!J4y0
i	!94u^sg!#6]I	4:⼘۶V֋VYBܤb4Ila&OgӚsIț&w9#"5L yg{5[.	ՅT®F!A[}iRɒ'	m5En3媹sɒ,h<'! <LX9U!nE;R3嬹%'.w%t9Utmc%쩮vqge1[*a{zf?bwx鸚PN6yudQkEjlq9hV1KDD:uʻ=me5m.h#Gԩvԅ\R-A
 Yːphb˺j9ZWuG?;㺛q5f*?fK`ڜ)nxH'.[nQ6YnwtF IG=3p@EF
Q<goգ[ҺdK|u8plp<נ2ks:W-`M;P	QzpN]=!L>k(	$<5+	sՠgh:rWW-ѕ <jCʰ2YéZ*C-U9(	Q<!Jclgp!pC?paQc>O0`8$SO3<pJBwfm"&Tztdw`2%Fxb`!_|nojy^+-_v,7q%qpyJ<)-6][O}dyY56ڡ\*2l7hNIH71Q7qHr6ٛ-ݬoY=I~H
v@W0vp@AD E #`b!`b+8!+x
ż0Y
WGQR$mEAʂC_vg2 _aTc1wc$fx%b6oc$'^l/q_c䛂|' /	%A"WKq>'4_󿉫]a=jQͺM8%
B,!QUHDJit,'=4hzxnBxWɈPzd'zǧ#{]1b5-{W{	OowĭV1:.-w{k+3Zo&ųGp@M+c^8mNA͠ŧ(~M49Z[W19'皂*  N܃LS5޻^	*<uUc<ĉ
n+DrK3;ь^a\j;u'*ҼFU_
QGn!#HutזLDmp	\Σ$N>Z&Lhe_$в1ɾ[2ߥxܧp?v%v'X_Dۼ{-(A	Jml_;G#aʴ-IRn?**2rB^Ədf	;N"HCH\e<J^]'6\ߚ$(筃zTIlg'CxnpL`n`!Y ;`~[i<$kQqV`}L]nK`=tdoTaFPKxI^    PK
    D:U            5   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/BCECGOST3410_2012PrivateKey.classZ|T&7\   İPBHPl.a!ٍ7HE@S[F,XmmmK7sG~s93s̙33w| s\CK0K0ʧL<ċV<偵2.Zp$l,"ilXXzU_Z0fycӪ̞5b
BIiՒZ+έi|&A[PXbemSSR]@i%9v흄!AÈ@XQGZ,)lcFMGl#ݦv=4F4J=ܸ~b!k(u[G#'YH4㲼ՈCFu3
h</tn,p8w-Kxok\Ũ2Xz|wjx(Dzӏ
6sM;P5
5AK^m$m Y
g%icAsҍƍX-nQm)č`$yZ4"#fS9GW-1h"!C7ֶcr#ҏCnSc)-iiMh<l[;t<4mLӣsFbz&]YnwiZgҍ`XcTHn[ɲN.旝:-9F.o#"
73B:]fW;/\s`	o*w)%Gڭ!G#ozԺH{d [儞sF$s5i״(;XG9GvY$}rXP8s3n,{9κ_n	DEs8::u=WDkkrtqvJ2b,INTaaȶhſF#Kf/NOٟ/?}:zo0)Jxmuaj 3gV=4LuXԟM0Y˲h 4WF
ύӜoكD6D.%6cebS{4g­sggBTah05X̩y8/?"DQ\x^ISZyv"f dK,Ñ\}ݣ7Oz|+m
7t?Ɩ0Vc_I,]ᯮz:)grf3#vpG`8).$P Wd-|~RL}]^*+z:3L qVwdF9= !T8f,QmԘ3isNwdPvrVev9ă''!63Ikq}HL2d*8=ʽe\KD&vlϐSHi{J"_& EzY\s}nuޕnDdjx2nD{%!F4/12([jLrx!f57ݳVRAU
V+8_
.TFE
*+u
.VT^AHA]-
6*+ؤ`Vm
"

\  PС`KlUЩ2TpO)+|Fg\Ɇ]-Ω)uYLvJ]K:3\|bra<V,bE_Ud_d	V5~boܲݤU>weΒGrzɜdr{84.M|s΍/_[8ϊ^#Li	y	%0Aye<r_;L#dVt/9
xSf^`rry?OWU',1%n/ԵՅV:rZ;Ȼjw	VSқkuZcYY~t'_Ǜ26PA`@5~orPnT
8jpw),; !~EX;T@z%}IA9AFauՠyQ3
~9jiʩlբGf9sѬ.u	e :AHE=U,G	$kηNw70P%V|jee2{$o|S0怚-%<^­\JGH{ٴYpNX_@П
*ZnQȎ=K_wHqK{gVr6BB×0J0Okihǳs񼆱xAP@@M<&LXEy~hX Y@C:p-^p~dHTXÙ^0?)?0?0G`-p)xUC~0P_kXhXjiX

AN5?i
oj/BW
'-
	T	L?4?m
_f߲#
'
𮐼T/OG4 
sQ
#s\En"Fl
;4^j8d.ce4u;JR|&[4^`B)4V+p&	T'd_isT||sUN*J_UIN*0K`<**g\nX򫸏lVNxVS*
ߠ[T|U	\ I"s6>aبb+WhX!RIBC:K`>!!Y:{nBWB5*L\$H
IVHQHYS2O	\Q

	\*IϨxL1
U<N[Ut~ݢ_-u~OҙW8(g~PIB|P
SS1!X6R짵b-C?g~|6ͿLv.wmp0#@._Ac"WJ3[fl9>-CnǳTz,{'_ntk}ؚ$uݴOnm*w/}u:y*k#Ogݖei瑖puSI)]otR{߅HgQ.	O_25tC+meyu&^f]#M
ioG7fh[~t?#A?t(?^w^!ۧx=2V(A_IݦJ}bpf~Ú|3+V-kqb <!POARv{[lw_+=[ ~
|eO7<3?
oeJ8vHH/M&X{_fw8H[~Hwu)چWf[	ގan<ISG)z8Eh`[?Ŏn5Yg_y;IXJדMǪqKsM9r%iۢeoUq6y=}*Kl,+M6}]4Oћn0yʆsC2W;}^9k;]'iwhዶ>/c=npE-VlKs[閁m|^์sa6:cdMߴ8=x<<Ë/#)x("PL_=
s?q
=\QCn;ya`9HRW:-׬p{hdQzkjk5t^[Gv@)Bqt]{%eU]pMZ$ny?^RY1k|/A?O/cxx!H ]JRR|c$%]nwm8W	z'E91cMv<I]Q%I*e2Awʲ)<wnØ(t{sIIH9$-)zCay5~WO$饴x)fM}IAbj${pC8q?Z3-2 v8PtaTv\ify9l.?؄͸.hou>@j#(e\BGn,nmC
>`O7vӄ8E+xhb9~}g3g"f_#<0^LϷ 5'ETyF{m	Ǐ\ўW]塮odop4V\~->==՞aP)z}WF<SByRg3VHq9 uzʥBmKk3i~ةJ雦sR{77f4]QIb&eR"$	[FlS,3q,˷7ُd6+͚g[R=gMFvvNzWYWt6k{-AG+,3EG0%W:)OLќmLAL	]2k]I\
ibm%o6Dݡ_zV;Mv-og
 'p+_8͐a)a--k,+	RzPKQ  3  PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/BCECGOST3410_2012PublicKey.classZ	|TdfCB  B@d0$@'fA&d`2g&@VKVR-RQQh-He2`k_o_jKMy͒M2A/sϹsdGo]Lܰ#ǎIvf|¢Z
wX
T	XTжE
LnlTy
͵
k7765/]V|IY"lonߺf#Iٵx[ :<`~({ԩH'P'tHM}@1lV<
jXjSҔ6lS=mT/s;I!5>z}{U˦zuiI9_@ݬFh~'R#j(LX	m=?-ڎ@0V{d,5

Bttk[H$Fz#*nClhovUԙcF	ihHˡnuCqݨF<N-~V<P&\ϔ5ڮn2V{x.GO
IzNnm=(z#` 7C][Y7nPC͆I<:u{tCk'UIrVҚz
5֏1ԦHXԩT#[!N%
bM5iRhxb'W
NONK`m_[^q++W"rQKe\vm;kkxUVY=Jj=9k=m	tp!HhK=?IRPGO&⁚2EQ0

GTR`6Enu"j_m:z{(TzdP?,L#
Q\NT`F>wCV:oU'(sohj(E6AO\驌+l0#$|]X`Nf0aɴL#M;$
Ź@	15|Ü4<{[?HbsGs'o`0ϊptZYQjX)JǦS("`ZK,'q%)\D
Ql^MWG)"VUI%q+&"'j˷S+p-ߔtY׌JRýWkz6T:},ښ\b0<e<{q/7NSTk+q|ԛ`DMt⢱GvK0V{4R%IM>VW[ӻ=~*7Q=I$̔bxVC)qnTyvnz!͔H0]͡adGC\_4Szcu;ÚGNVx|	$Kh(a$l$Yv	;$씰KBH_§$앰O~		$%tHp@A	~	]%< !$!,!"G!	%@Ս,7VSW7~}@d%uD>
yO-"JF3N$9uiUrHԊQVXT7#gt~H1KFn̎'13bF$Y%|+*ˤhU%%E#w5Qڞ҈JY5Ecxwn2Q1)M"pDif]##jzL 
IW0Ӳt;[~lW|#Hcƫɪf
?^YRjQg~=DV<6Y>xer#f@[*0zgI5eǊQkDt<wϘ"{b3pfޠRӮ1c,-d,zK62zЎtSmĦψW3n!\ͭDe?xl3ʎ̱(F|_Jd&s:+Ac% Oˏe"+1_FGo޴ODs*1$zVm"v+uҭm-4422Jxcei͠؛3|x]x8+wK4տ_
>
 (،{j0xKASaUPİ^l
f2b(ͰQ
U`+X
{
*a8++X(X_S)X_W~SA	Cmc&'
wycW0(X̰?RpXBbUS3N<
W
yoVA%~ʽSp7x
_Lǿ2ǿܿ++(0,C)x?gpB0d1d3X86-$_e|Q0]Ɠb"i1KƗz;CTǅaÝw14ϰ@s"ObDI1EF(qJL5aӢa3=xA,b(d(Xfa(%eVYpd"\ѫb)j-2F.<K148/2lcΰC7DNe2%q
]d.BY~dhng KX,M1We&,V0ddXgrX.`ѿD/+^N|)tkPSƳx`#74,<N(>e
jrVZZKY`WC&,j]>Whve۽^n=
?CCR
fī-.DC1AWL1qv@-:R{,)8.uDś
zRLhi"Z³1qNrZˤy)"hШKIsD`T\{oS/*b%'sYC!'!#[9	$' mL^ϓ| %$iWiW*5*c8qθ9-QSlrZu$tv3=DܪiW%pgє?CG`єlN{#,5JKA'qY65ePf!yM6+7q5.M9YD3ϬAo)&ݟ2>]"ҟSR7"0z׸Wu]Cl#rSE50N)a>${"*
:摘xNVZcruOщw÷`5VrI쉊>H+l|[gdɗm;RȷB=$|GfXƏ9\ϒǑٞx$&>߬t8Qz씹_tv:4at$m-Ivg|ne
c,uOH8!y	n"G_`'G
qSh$^Xl,ge1.Gˡx[z6hH8#TZZS^DbɮT]
f/>ͷa2O]CT\\֝Gd~}i'OGE8&^
'˄|(&^>t?A5*/UJx)
/ֱ:Ӧ
DSi?\ ﮴a.'՟]: ~A73-xi'G~|Z8VR,KbtSbQpQQ:gX/i7UcneєA7{b^y86OyEp
2<[?HχD@i:e̙M&ۜliJsmJkv-6fߡ	Xm'6&ddDyY䍳ɣ5q[N_7`܉A1ܒb*.j\mߖpa;Q3`tk&.5g5=4/	D)~698
E(zN
j"҈(+8eUӿY
C|â!}T1$5OJEu;kk8Wo(P?}gm83,َp}JؕKKFo菕,2~kx~]@>?Q%]Cx]&s{1mt2*:,S&CHQޑs:yjDWW<<݇y4Y^cz{%]a
,7QJ!^|!&%PK](  .  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/ECGOST2012SignatureSpi256.classWWY&d#q"#@,&N4
[\`e`!Č:3VMۤڱ۴tIZ5[p?ͧ}4}8+!
K@ v$bXz:s&8c'ɵ%>I::if?/@ v7;60*ŞLhn3Oئrg=mi*h>Lؓ:UE
;j2ŢӬ9hɡٖљIQl
,mJVr$O°b*3f%((r<V$:Sfjw˙Ѽns9ôYZ@Sp\.ج7xaFHZ3NΊ7Yt`3U@C
d;lj4&,`QjZN_
03B0uڝ^CnيHiע7&KBp;ULrfptWe3jVYVɦxWpa[L͛]H$Y%)ӽkuJ"A*1޿J*	x7DԤ$XtJf&1nu*e	iJM
O1Nnkq家g_#OnXD&LTD_wmX+<~q-6FVa\[3k6-Vukm{}<88R6Tf7*S*KLcVK3*郑`jưDO:w%}}#yt]tpy7q,9;G,YBkN(*Z$`zI#̙bz"ZΥUc=tvn3HQzޕ}ֹH.a	$K)ᨄ%g%pBs>!y	n	=z%IƁu
0ml~V7Wq(4;V>_o~	
tg3M&gVS[} ~8b+
[\^-7̒A%/JǮMp/
,J+WbwN\\8+vYdwUic glfU+?f&
ʈNFd|
S2vcZc8I-eIH2> B\M,7##]0d4Öqy{1+_1Wd4\K2e|_q
i|q'_aa|?~F
ۜ|77y(~|v?~+as`'4/jpo`?ǜ|p=Nޢ>铸?/~
җAmVA%wV2-ϣ
/D	fcTg;#O!@3 ޴?5xaךnZ0;M+xytMizsohINȉHD2WP_be,Ч@v%uWpv^X5//xo):K(X6-
jLڷbK'>j'b?>E&%qpK
G$@mE	s~Bm<XxM#*kV
˸Sk_}Q=8\=x`w
!y! i|M}wBq`pNh'@u[:bH0yhY_o	C$}N;ѵk,DB}&]曃+JfGi۸^v+(j	i	!wnԪ\j5`DXxU0	1P|A!Ɲ<E )jQ1B2jE/S8,ae:mg؀G3tytM:sZNxgF=FthgJQ
=}\Yi'W3/[O3+ԧ.&nN
\ɱ PK  I  PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/ECGOST2012SignatureSpi512.classWwFy<6a6D%7	iE`bƣgylyF9(tMt_htqo1aiC7,[݄c{n_}.cG80G Ə򡗯qgx3{\[ⓤksbieNI*TW$ueyB%;icMS)F@	dzƞХ*n1FF,a]ȱNζvwtvwt,-3HkfXxAӕPIfbTfLK@}QP
xI.7Ih'&Ewu3cyrixŹ\ZYqo83MÌ	g;oDfV#vh(MX4?:_
03Btڝ^MnيHiע7KBp;ULbrfpt׸e3j'Xɦxwpa[L͛]H$9%)}uJ"A*1>J*Ӽ{)3I*nĄՂXv%KHfT+1r/5<1T;fMj&۟I~1>ilc"
*3QB6V
Y|j3Z	Dױoٽe7
knnߘU4W۶ptmc{^nӔ+n2iUVY"gsZTIS3ewt&z6+ȣϏp뼅üe9`]sRQJ쬨]ב9IO,FW?)\XնKl&gH1];看vIh&!!]BN	]I$<-	%𬄏IxN%</GB>	$ qp%'m-zWc[խU3G*GK.`'MbsÿW/¦_G|b:=ٌAٵCz^7'2m1V)b{6OM1$<nM{+iSi1KD4{Rʕ鑭X]vPe+׵24˳:A*+ YfUt*Y6D+ UnWʏy=E@2Q+#I4=B2pR*'9yOr20쐱|)8,ʈC2Z`8}QeMW'e|_ځ4^˜W8j#^O#8G8'߉,rr߈`%>Dp	?@&8OO"W0M8׫1r#N~VO|os]Nޠ>s׉~ˠ&e+̐;LdӖ F~8HUpfg!ps~iěǦ:kM_զU4p4hI7ȃHddyKC7`Ze,+=c~e^;mPHD.i+X6[V-
BewڷbH'>
' >E:eqtK
G$Bk%	s~B<xd]# |	WueO=J+z
Won<bC< U4;A88OkwC<R\3`직g}5<ѐ3tڡ$X\d!3ZZU%ozm=̪$%v	a#R2!ⁱZ	<-k`\>.zc9HY){HTHQjT.B|1ER}'m!`	xp
?2XI!)u4^jm;U,7cEөpӓ5{qDNfߴfooWOC]ĭyHMt
,
:Lɱ PK,P  B  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi$1.classRKkSA&ͣInm|,rSeV tn29L	w&W
?%B	e1|;_ő@&!KHyN(,w_\IOz};W쫦i0
,7z)ɱVcMrR&_L&2%pF2Ǉ$#
S#q4+o(-XA@bNl"rMff{%mҍZj5H+U݉%'(0mofg.umD*؉  B*x5TDsC)gV3'
#7RKK
F
e<"){G.mtoyu˟8,q[]!
otXQCP_fPKz    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi$ECVKO256.classP]KA=f_ZkȸՃZL밌l~@?*5%8w.{ϯ $HϺ ߨ=;\˖]/ʾt9T0ԑ$)s%cQ6w:2.WKL}Q a6t8H*\RR8;˦Mw&?Ɯ.lX72`H[q~\TbkȦҎj,/n:b{EEklFe"&Ml` Y E}<.k#W8BV7Fgi1RsdLo7C~am8h( 
PKMT  k  PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi$ECVKO512.classP]KA=f_ZkȸփVL밬L~@?*5%8w.w=4Y u	OE*eMP	&ՈS''ʧ
8s]l߮Z8sT.e~$ӷŀ9ttSod8sxKeٴ_#x5[:Rib+ޏZ,l	vpk$
xS<_aTj	EvL6]dpAQGLJ.qޥq_wHP8ϑ929rd%@k7PKN1T  k  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi.classVWW
_ Z[hBXPnF4n`#Lfҙ	J}{kǞSSK{N?Q{$$pwww_;99P N	!]BeNF8{G8B;n%4j;=xHsְL<ö$
񉐖p8Or9p7$*d^AI璺uJXz๋C;hIq
Tv<P&+瑴Jq(պfiSxgZ3$cCa2M"ĸp⪌Q2ac'w	s+aX{6y0o9%S#&	qt M?Qh*>AcF2e,}!e#Eb)b(ڸP#撂LQi&Ohf#]E
1ϡ$\;Օ6̸pŧ\OS&Ԩ5Nw2Pڒ"VOl?7f
@:eb6%&>.͊I	n|cp՘'юBE8?:0*vꈝ	&Wug"jHNqV[bٻcU;݉$wz"%jB&
({vI'rX\M9Ajy#U'lkmS"=m6<VHRWBͭ"?m훮6	їSnv6/ZGOd-6,$[+R%jX3|vJhBɩ^Js)mR/U7w={~LeaX˰a=CC=CAehaafngpÝw1Mw!w7	mXP(vR33$USW_ʂ4Kcn[߼~1EGg.EnkOڎQl*y%/f/{AC4VQ~vbs+ZESzei	P*Qq[vZ'KesY~w1\BX\DP` .
q[LA܄ =tQ"Z[CA-+c
n`%`+)7!u*0  22xLv<%cIxX'xQFO}xN~<+cˤ^q x /x/@x^;N`a
T %jn.Dnm0(2F+֥S

XB{*4
x=8 ``2_ƟiM=¼2x
oDIp;OysTb-LY</x)'q$o	LP8jRVVpu`
_NOSn%D~AT"aa7Do~()kbw./0>3~I?PxOr}CKpBx4x_ž-0Il,fp$$^>Oc }6O3H$)՜:g}a1bTyG(ۊ|,&W7RiZކe =FPtS..*H>>;	>oNd(0
j,YSSN.˞"G?WKQ
OPK/F  d  PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyFactorySpi.classW[,^ֱ-m80k!vd@vJܖ."/H^}9zާ{-q[C'=6m~uIB}̾7~3o*w+Z[d+㴌G$ysv4my挄PE	P祈-OKp~p">:"aL8_NuX3[v=6mQ
^0]?qṯl_B[~:6
"3egMtuszH]L'-(C0puK錞$lOT2ߕT?X8V=IØO	gŨ.a+tWO^xj	G%09xRAkf7'k)
TOO ڸص=JtrrUz"wf9Z|4v0Ӿ@MvB&uN]ND2Vrt%+id(Z^`f
M	߽J	ӝ
bb,%7'`aDQ.GVGhr*Sr\?b7M;X4tO}HijY7<}ܞu$uu{Fw}|q\in:c'-Na<#/؆s>gZuMİJ0f}a-EώO$
f,7H[tw\Ao%$6L_SwJ
vJPQ1PdsDDJZBq;4>uT[Qwr
G}2B2:et#C'#,~e8!8)!2qJBu@#v+@Slڨ<SKL6tқ!=5n&@(Tcڄ?Ղ^@ՆBs,Cv)˷L{jt㵬jjZHլ6ap5"3da.5~C:UmL#ֳ
u=spsMdBS]`3
?ZlE,cUUD"՛M2iGQȴR^̮<Q+ȆynT7Ԙ^u7ͽg"ժ{K^IITesN8*80UawBQq/T(ͺI)o%x}*1ޯb/tMPmQ6<Uq7*e UBWi4\yтxF\يwaX|ŇbV0+
xW P> /)xU0/*8O3,bI(>`U_c]O,;,`ϲxAA^R m,>نT9uf~luc_todZ!e|f;)ѳ+/@c-,]6	6K:0F$¾54Of,~|?Hx(P\mO,^_Ȟ``;1<wwUpbke܅j׈[ܗr~O}h
dno妫x5ـl0'"sGʜ{
-e?+]=YaA¿HAmN:o7{LN	NvS\I\h(k83l7gHR)ё<Ҳk87Iiwˤ
Uur5WeW3UzjD#/!)YdYmske{!'']=Ov7+X>E!\]*k\Ct2-+E
~hef6n].zZykp;8d%яh/Fh-A\E:BMRiPK-u    PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyPairGeneratorSpi.classX	tˬ^cl9Beaخe 	ky-WFZ98mz鑶}i,܂4$Mz7>VuXkff=8b%NrF'V;ωUnpTVnyn%޶
M:6
,Zumֆ\v5iVPeL[jPhMmW-]nb@ºOaԁ u2鍆nN߮YhF@7H4Q6ơu;W	=xjLyQhE"J
-bZ}7un<Ѐq]ɛ(YJ$KNZ2>HS=!E֬@ħqY\dҤZ]\>uPU#IqIs0ԠϤ5kB5ں49I3ú,]Ճ|ZoUӨ
Sx%h(-槙ZxB&dӜ7Y3łYgdȀY5#G"k)]B
o bmծDڈۂFZ/WW$m䘷E^
<]3yԈQh<;	mwqv=;WOȗ4=	瞆P?)uW©bf攴PZ5egmօUݘ6'Zݘ׊Kffoޤ骼V33Yarsۛ8i"ݤ4k0}~Ci҂PĬ[i>shD.t6^tlK:p+Q/6ibzړ^{&eݟhBFzcFT$y,gPJ9qB+d]Ѧ]tU;D6Έ쥡/ҨiؤSR#>HP+a$,\
	+%pz	k$$a%"V	
%x%^	M6JhIf	-sk&ʖɇZ5[z}CEdY2yEƷd_ÜʪΝ$Ma^e?i>TTn]UKֻ޹*8G]anӘu9A>֮ %l%hܭޣ[y/f0IV+*sZ`)%2s=A!kɂe[fˣf,]֬ܠɯt}S诪L#HZ"uWZ)Ъh懬U|D͌_Gy8{ut_;/s-YXپ,w/]懜mCV&M>+C,$pꃗ.O)ܕ+jN~}٥<
.~ڼ8vQsY? MTX]Q
aPATЎ
!K(N(RP	YA^`!VP)/Vp-u.\x+q.+T^*3\Wk\ײuoPP<z#۾I|V)
.w3E0>3|b0E㰌]'N؍dandl#fxXFN0G> g1Qp= !_㴌 0|2%/3|E|2Bx2s~1cˈp&%#	E9('b3o[SEJ|߷E= Q#fD)'Y=ꉃVOz#a!BS=
X./bGu<I<.3#6`	˒~vWf
k>O*7c[3c~(n,/g'ģ#䫌xꢅbq`=r fp d̤?1ouEaG0$EOgmL̢VJ?kxvOQrOR{*4b!Qܨ	71p;*4QQX_r]($鯩ꞣxz
8CL]d4Yhol=bFbBn%;kb53>GlSh?K%m?Q2=8~zGEaya?1|F1xTyYl8]%e I|g1%鵃nfX?OcWEGӸfbV@QÏhvfgBwT?Q3?R{xj]YIԜq+G-Ƨ8/Mriʞ؇12lGg'goZuP12-RJlhcDM#.D}(n ZڊB|?MNc!+OJ5sQ53rx7f<eUB}PKyUV_	  *  PK
    D:U            1   org/bouncycastle/jcajce/provider/asymmetric/edec/PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/edec/BCEdDSAPrivateKey.classW_ X`bIpmb!Qd"5]eVMڄ!i,Hܦv7ugV+i`A̛̼yfw?p
 h"	Uq鸄p1	5c䎴(H3Rr0
Q'tuuRn	hydol1u#19ePdi6ltFKJP4Ǳ#t["̀9mIhLi-tF#!چ#
H\vaxB8Ďh6'a-ӤqFf(uF8l_PϬ/L~S"!=:iG3u_d;Kql+ZGhj$&yaFB	r{6+60Y)ǰL	;
|vTs(u'׆3o]LjL/'-`Llo-r!ÜBf1]SVAqetL=ki'):Rtw|A0iIDH+׊ii3;vbB1m[B:|&UssH=֟[κ<[]u/wĿ5 Φ+Nz9q-bK8λǥ{C0eyJЌc$Wㄦ;-յY]Nk`z%u(e[tUlJm!7;ַH])]ڇij^ֲR~yĶRvL
t iΔ$;a[sO}ukZ؆<CFwq9N]*5$M2"22e|VF2qPFe-GaGdGe<&q2>"Z\BWG!jst5m,ozYj3<6IY}WΑ8Ҧ,tY&:T3sc7ڦR:Ph>H^zʁ6YD)(GƎʹJ
iYtW9tXz-SI!I/ U6$\TJcSwd*HZR UM*UDBE=dLv0yA-U>(RbTQ$.*pQEΩSTGJ^<ش0ɨ.1$˫_V)|EE'Z3x5&_g!|sL`P0(8o1Ӹ7
y&WOU&|?V00	MW
*
0IB;
:
}N,9%3+jzr׏9~qHK
n;	_D5e
` <ćt^4ֻ4iޢYhl,HuH:^z{#E:=i]ho1?<![Oܦ
8/Sm AjQUx\sXz'ᵫEn`\2Sh v?{GQ&2X$q	z(q"[`(T4"#@#OlU[׾87dg,䅫Y߮!؞
=Gw6%]?'~/z(Vtc>fV)9Lx|c8ζ9nb"2n,$9ϒ	O6z;a@aO2@'5|pOO<TJ_G1Hgr*D#z1zPSѡp sXYGE[T_AL|0E7 %^Q3U{&(Ҿ%VҌc蓘;QvK|PK  n  PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/edec/BCEdDSAPublicKey.classW_Wn 7,aT5V1F,rDPQmnl=hK~ڿv7!BZ>켙o޼߿M h~cxP@Ihmܡ=JCk(iBIYsF$yaRn
NI@uYl@?M~bZCf3'	]
eZ׸}<bɴPXQ$afkl@I'L:jx^KYNX4-ﳘPˌA`M.RͬGxȃnN0%I˘cQ2iZ
Ũ >nlPTmfLptciSlx\IouQJzGIZNs%xgʒnF2mwS(E:v2(1mM(>65\9DP(RLMS2тoդLƍOwӲ ~	9`4h?fT%e'XTI}-CgFyҘa:/febS-D79MJamN|}ƀ)ijeM&MEs*gUػӖ߼b,TeHeQ^f
(*m<M2GtY0EtխjKTTT۴_tA[{44)|ʐ6i&	f;-sΟbK9jt{i-A
FRMY
SG
]qjrRDԊX+",""N}"։X/^"D4(b"DlU6\~`+5t]Ӝ/`aӐPg+}X>P8s<MrxQn
OuI5yBYm]>s0	o#qSXwx[#S8\EDΛE~Eνj'5d
ʨ(c!'8	/c%'Qε'2p22B4Cц~ˡqq/rP2.cd,{` ݰчT9#I	q9yJprVB;l	.<#!K8$ĳzp8y'$rY/rY/qYE	GpW$<'OV}٩l5&sҴ4~+mE=ѡ$(	G[n⿧yCgyr	ҌWK:=8G~[q\Ȥ3(C)={8&2=Rw
W.`GR愯n8>WQ]EQ̿@8cR># J	EU{7ғ ƹ轀*@o\'K ̣-oܖ"Y\⽎x؋Y|p76ϜcrJԯ_ ?ໂ0_uZV{%1OiY:&jo'$RWG8?QtqI\O/4rK6c)Nxg{q\nq9p_q5|-h+#(+DEFnW|G33/|21s3buhxwh}vѧ#L
ay{"n%چcBjT$&MxGPKXq  Q  PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/edec/BCXDHPrivateKey.classW_fg
h*q٥$m"FEhPBK.;YtJڴKImÅjoJkϙ}ʏ=s{f?{&C
~4Gsy	cjxiSf$刑0'%Hb==F,cAE"Cz	C+a%^Lkq	fۖ1EJBn	vAc01mJhi-ZlxjN趄{2lg>(3FB<-l,m^"-ѤiF$6SqCwTg1	iv^B=/KRh=͘I	ӚZ)[K"3N A_wKlROfTO~2L7b$aYFL
9mAfdpx.a&$lssL$M%;N%f\KDZ*uʤxӉX	vcQ$	-+%4ŚȜ6{Lksl]Kqљz:&
:I3'IEJ"Z*=	ۘ6%ma>+9/bB-ѷ{pHԽ7R(Ҹ(V&i$z*җS[N_Bz{Zt<.UJiۈ%ㄦۦJ"b$uZ<~&5/8zŻ=#,PvQtgYZ[G,3),@'HtV',s6eh1:0gSױWbiw- 'h!#2:eDdqP!22qX񤌣2'_Tk7sHsW0Z?#MґhG !o岸'|9L.0.x9O)m*.s]IlPl$#J%2oƂp<޽.,uY
"]恊z'YRd<T#vpc{cu;j^{U릫=j=hyՅʨbQl.m9+[aSGg!ER(P US1&ۙ<
GPLAa:۠0T<*Wяy^&T쁩!$U*R)H؉&UF'|w?C.|sKL^fy&_W0/2=ge&W2(8/1LL~L~`_ec<2~7@
L+L@Ƿ0Ք{7{Li^KcCZ4*?IqHN`+ߧe>؜Nz&Ьd}46VPuP:^}"tt8?ozXZDua7A¿w'cR[v](IjR"3f
U8D&C7[a
=װ˫o_,Y
8ױw)E4r+nt9T}d~W]ר00^+QZ.5{sl-(6Ui9ė\@B}m2zx7h4jVwd8{&oor{yQB؋^
=ΘMU 	C?yv"v/-Ld
\gʜBԤ]&7Vt!!^SVt[v_(?SBn\^T	@MR6Fj)|CIşVץV5Ņivdo/9oM5BeK?X;né-$9'1jowߕ7l$ŢJPK|R6    PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/edec/BCXDHPublicKey.classW_,e֨l@@W!P	Iq,C,a廭i|ZuAciտOsffgs{t@;Fs[h	c[]jcR.;-aS,uu1ZS:Z=s)Ȅx<;K̇
pJ&}RC		noP6Ú-z/zͶnHgKZLj҃Bw$4S2q0u+-$
3c1!f#<KyBԌpԧf(FiM>˞d)3h.<Π,D2#5G\4qfS=n\m4ZHbҘuZՒL
")age2sgرF!Z,8̨jf&ٓeT0#+"UȐ|%wnqITdI[vzjZL_焞L>i[VQ<iLr"׋w"̓ɮ
,X/\Z1ip4E՛YAGur2hJ[(\A}R%snsqu	*{R>i]EҠ3'5]+NF9ۚ5¦<3d6t=-HO˦N1eUFoHv!vk#lkN[GMˉB2YCi-f"ee5
-;JDjqN
*:?9>6Υ"d'#.#!M7e엑q@Adet8,!Gd<,Ge爄׋Fw7gGC͕h_;z*W]k;f|*Q_3He/ncF[JV)t,v!ۘ1cVF3od1p5_Uqy[8^0SUH|%XUZ
j%UBWBZEv1a0A*X5v41FFET܅ibfxk
GqQ8*oagP8[q>_(3~a$~`+8gK
EZy\f#?aScLcƘ6δq<W^Q~`?dc?k.s{t5XΡWJڠ8h-wR
JxRPcҬxς&F''V%≏|buE\_L:heD>cm˻ӑη5~cgv/822EI̍%_jqAɌR<mHn	)OWEyw"Y/|5z7pskU5M]2m4PlkkB>ӢBrVHӟ	M~	gs%3pW#QO+weE|%-]-C	wŏuʱ݋ώR99x	%N3!j?2EL6!?gAv1uQna
yO"B1:j712	ho̱ޏM?'먆&^ꢫ}&3v/܌Hr C0k/R#i`'%; PKsb    PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/edec/EdECUtil.classTRA=	**Qn!!Y\	D@@(Z>
cjCMm&R*R{rA*U۳=}ٞg G~\`h=c^%Z&-RSM%Od6aێ
YJYB(ZBЦ,72QeKpN)˖R&\%ts)iK`k$ah`PKI
ǔfYHIδzF)=ƐYe96FZ6\N%Vȯ"9i]KE{[d,?Ag賝TSk=êEf;nJpQ0DNenr2uC9.-{AEf8O"mH=:t \]
[!eҔMs3ŘiV
pPeL7HQ1ޮ=2S>b~N3g9qtq\q
ЙGtlc?n^f"ΉDcG):4]_<x|w
q"h	׃AfA
5bLCF4͸g4`Bix&I
Þy& 1@tG}FY;m]	csEdD:fzIV諝FF./Zq
wT
oC ";\vX؉|2r;0÷/x{"fELPDP`
J;uwȯ܌#
OiI9B_,(VĢ/Zv)߼o^_A}}PKC(  Q  PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$1.classaO@Mj Lڍ2:b	ɢD1vt7˵i˒}?o5L|a|2>-hhh{^/ 1Cl0:vkl!Qς-m`y*42.C/ܗ	byn'82r(Eʕ0LrߊB}pkIN:6k炏΀})Ra4m#-]UmotK7~qLmMz:g¯8F88,6G
iXl_-jfxr=e\Qu0ȏa0ga7-Lbɇ-C6޶Jzn/Xw!l
ZlW+SY")stpޡlKcܪRH/0pb?ť<w(:A}84rƷ8Ʃn&v
GEPKX"  s  PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIES.classn1:|C&aujS%3ںJv#ۭix 
ar@R;3f_x-z#kj+CAw	ó$Sv\I$G.21DCJ8lwwj{ahEQ蔬=؝/؄R2eƊwӝܑݛeqC~YƜ8=mu|XcEbdS'#͇CrF+A}R-=:"q.FE3jԙLZ<˟Sldt:K;0rַݗq,.JWX
Gk1ns,Rpc79Vpat@ZK{CP2L~
[וT*P<Pkƨ
c1z
/p4xKu ?PK	ŵ    PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithAESCBC.classPKK@+mkǱ!^<6V(7K5M&*Y
(KUAA]f>f	13`XeNG:\iI.|%\#˔_x}oE$$s{Q"n\5KpC>DH>ɝ
A:Ne2^|xE^ecNghhdlb`u|4w
`9l0QŦ&,l1\Xj7
Tn|͎[XaĀv
-2abX
PK'  Z  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithCipher.classSn1=i,IZ5.iBdq{"&iHHHPh%ٍN~""|nnXyό3s? <E`R@RR"py$;ݭGOȧqcΔʣxCH4mwLI5[!EP}<K"avq3B↌+}84Έy|EGxޞSKжM1iJpAGQx(=QPHr*<̔zkRO2,9pwu:@PM;޴PڳܵJ5<MjSݗ3NtD$a1֦sMoҮ΁XZnᦋ<.
b
J..▋Uqq	w	233̃k
RBNvʆ
i_1X3"M	@V/}3T-xL{!~	
F	L{	'X/%
"PK9d    PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithDESedeCBC.classPMK@W4ֶZ?ICcobq[$l`_jbAD܅`fy{ypc|3`(]@%WP]Tq2\4JB.
d̯ݾIw@#";=7Ž[BHj$5t>V7{n#.>I%?x}&A+(((0mu._Ȃu6r`dPPƮ5
E`{A 3X׷G6YdͭI]Epp{kaDX8qlz`~ PKX/8+  c  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA256.classQJ1֮ݮUYKEVłBC.IcyR< >8Z/"RIf&3f׷ {(QOzSNe(qԽ:k234UJT]&Nur)G*)tLl13ZIꓒn!ӿS
g}{xXP	ocMH aG eJX򱈆8/dqb-Yzn|/ۨs	>OdkSV>bƲP53י7P{PK  $  PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA256andAESCBC.class]K0O\]s~+*B@'¬^9faڑF?˫?J̜Q"&儜V u$|	2LrWyqw
d^>*S&
(!-ʥwIm5O/`7h7$؎*SQ:s
dDpdnqږqI0jQ^:&͛WZd]CV4<M@4A>B6VO@ ~ӹU +0S&LLŴfLd1K?}.m
Cdu z&maX+`ijfsG,G۲51 ǰPKXmj     PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA256andDESedeCBC.class]KA߱rs[[R	j5$/q1ݕٱgue$QѨ	QlE43a̼>=:X:S"WI(^8? dxmuLvZʣܭ
4/
oM}ح-Z5.	A
Us)Ov̩3N[һ.wM`T߉B8:kUy]אV4&
&
D B8p3	A~ri?S釸1	&0g¼m5+.v}>COW=C6&t=L{0],v|Ĳ^]$VtLXEDFPKQl  )  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA384.classQJ@MbwV<4="Q1PnI*y,OGED
:330?o/ z@XڞPlu=	t23<UsTLέNQn/ce3S OT<Q$g&C22΋锬JҐ.=x?3k;.vPsk׿@^Y|T`2.\
lH(MɄI申p|*>bP
l2{[hPK!*_1  $  PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA384andAESCBC.class]K0Ovso`7\腨Nx`˚-ڵ#~W MQDL	9	<3]؅APBXLrWYigo
oan|NUHyh\-$vz;~nnrIP*:u
e`׌Ӷ%uNŕr3Z)W?oyR{Y
<
OS10j`@Ҁa`@|x
}x@ ~W4P 闬LU΄i1aaDsUKwGca:?Aƴ&=.XfWKm˺tki XE
PKQWk     PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA384andDESedeCBC.class]K0߸i]EB.܅88n(zY0];Ҩgy5qG@9p8Mx׷ 9о: ՓÝv(k*XH27THyPh\/b9Cv5^;%|Z5cP{7̽a6dx/<.:WR0h\T{NzWx~AC2}ڋ'7\Omd@ίϩ~ H-0d&LL	3&%H;kW	.ߍ"dB_M^ z㒮03`)eesM̏?aA&?ږuԭYbm8UdPKƄl  )  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA512.classQJ1֮ݮUYKEEUPЦK*X>%֋tL>6aT@Ju{m6MU$)rɩcyde\f
JFdn;'#[L&Vd|HF73ývY*<T=x;atf8yyQ/@A|,ǲ@%ċ)xXK6AOS6ԂuX}l2G
u
PK<+  $  PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA512andAESCBC.class]K0O\]s~+*BPƉ0ĂWY2vQj3@Ix9!='yy}z5U!H	_cU|^<#Y"ɨyHr]y[AM;؍-
.	JxTy\~37dep'j\R7Z-`8N<{敖B5YՇ5
OS140l e00b M_{S,9?%tnU2HJ.!LԤ	S&F1m"Y$m/s|KsÐٯba:7w[
XbڅY`\zuѶnb+H1"PKBj     PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA512andDESedeCBC.class]KA߱rs[[R	n*Z$mtLwev,Y]	~T4jB[s3<3/O N0Δb;/Nvv<Y7^e)(w>勼yӫh}f5<vkVKlDDaʓ/:sӖDKf+)wb/N*yZBF^W5븕!?
	aIt2GLgCGw~~ϔ,@!na3,aĬ)̙0o"q[
˥p|Г䰁iD t	lSr],'Wɇ5(VцQ!PK´l  )  PK  C:U            @   org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher.classY	xSו-A,%Y섀Ā`YzYR NtI-t	MӺM4A8ҙL:v4̾wd$Zl?t]v9{// ֊رev,cvΎz;hckhc1;vv|Î_%&PQw (]٥~KCmxR{K]]ܲ-&u&:I?;o[vux"!=GXݯI=u]{ttt&<>յXܼj#qXvi<(PF<,O$4?vLz+bh<Eb`(}]N뎆uoQ֘M{Ag "螘%0cC K}=l!K?HzNMB85Ea(Kև
X8M7av)j>eL3,K{<>S%GQξ̋z 	DO5\#D$DJ~Im@jt|SDv
қj<cx$5K١+Pp!3
V6*KFJuh3`*
zu)=lZjMJ&9'ADA=Y*`vnzl礧jjw0F9H@SiU,
O`Kd >ciDzc4	=`?>Y61Iƨj>hL'Ṡr'tOe8'5|2
M
,<+41/L8OL%<L/7=TB䉕'>p*n=ci\>mj3.Dh8[ITTkTN)<Gc
{T(W":ƌ	uE6$vE>]YToW``-
cȶRMBP<z(Pf%{}>VoO#YjQau>R3
4c"M.]Mu>U)W5&
{#@[ѦNy:lGnqv]?^:ndsǩrn
y\v۴<;bX7
9^97&-Q"MÃ9>)vdެ:5iQ
u9՛A{=jLp$tOߝ&Oj6T4:}b~:4/Yܲi=cezImJ8EAّtL,쥙Y3w̚,j'}o6lX;k'YpC/yY[8ɚBfƩ/{\z:dQ?Bv>阜CgWnnvE=.nq("ෛ,Ըת<KRwea0^ xCNh&,Es21ֈ6gˡ5SX(u^,=ľ0-޸KWƃJ[,6
U`T$
nrZD%Jx$%>	:&1 1(8.qB" 1$I%H<(wJKx$x$>(!%>,J|Lħ$>-J<"$>//JH<&%/K|EKxBt3JWioD;?WD>/yQn=rQI}"ힸ[?{c+
̫]ٝy$7G/8YXە-Ǽ֓[Z;w+?=3'&HHޖI2Y+X+se<ksW)MaݮZjgjoA9y
#qȴ94תޤRQIS]1<WN$w])*foʱ9oS'R7>ϛ8Z}Jc#{3-u[OdIM"߆ݑfP:&QΕ %*SPWJ6:`PyBY%3y6##5ƭbiXѰaa#]CI:_KN0e,Eo1؍j
=3xX$5N
HC`)h؊ְa5
n:YcB
}cR.aװJip(	MzQဘ2
E.pPհYT*,(τAj0"n,aԁ3hbƁgDϊV.0H0E$ŝ$9𜸋Ab#b{5ځbf3à^^;k![pb?[X]v;hYk+Ӂ3?^;w+ŭV0h`6I,wbm]Q[ņb@#ݸ er|Io=˟T`U\UT42NT0)y_Dz(|P 3@1iU;]a
?ei+L^a
ӶW
T~RV!L(`SݘD8~7&>}A+ S\^n qwy˵-|[rm˔@=AYq(!qf+!N-<qDy'49(z_˗c;E
	q|\ӑ\=;gql=ᜟA
&D`LSιJPn^GզdQ(!>wNKw܅7L#fd$Xk6>,$T vݳG£(G>!11xΑRԢϘz$
NH<D^Cu;քQ458%/	OO(_>.oKHWndcbw^#B9
`QB| !bu/Gu6kmp(@B>j&
8*,襁Ǖ`IPAN3jj|&d+9=!Va9;r
A2)s{EI̱) V@T\lX~=9H7&Nf2(Y3<
Kh6^GS2!hbYmЗP]dJ]#'eu$Γ`9T̒W)I\[Ydʦ
&B4~ FPYm9'SZX81uf\֋T]F*G\4^E)8(
^GzcyiYAN!Xx5%`I5\pW/\b8s:DJ	Ax$rQ|XV*r&T2nչhҩһ"(y+$οgy?+)o(R3PoH^#kIGVIB}J9:rKbܝJ%V	YИK#]&!|AQ-NMR|i]ٚLPXL׌fE|@̘
3:*>W?&>_ͭj8us]B	5#.Kr9!<>g6&>Yv5c|j}fX
*l#((lY'3x1R>zV11|I|RWWAz?>&Rv=f:L3yu?c'Ļ3$M	vV
q,OӑY#GģxL+}=3^N*%s7S]DrQU[tpP B!j7$^R5JXJoYl&rUթhe#+."DPⷓ
	ԏPʿr:'FO	?A~_$MEx_!mK)GiO,~PK<  \*  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519.classNj@}cR1bRZ<؛ !lH6

~Tj΃7oy 㪃GkBI]?{~7N/Ħ0Q\\jSB,Z	NY%7e.ԫ&}q&E6a0|NBLdu bB8R&$c
;LcGO5}r9h
qPKU   /  PK  C:U            \   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256CKDF.classQMO1}tepi$bb4*FoDZƵ]ҭY4QƮId&23GfH#;J+0{QTַiU˕A!+
	K/*2"m]rio׼jXZXjsHa(
RT@1pK$5aO5pŝY$&I~BqFW1WbxyaX)Oia&qZ8mmp]`{0}.IvYc"&0Gr>fH&9g3QD1a0{-91rg//0G=|\]Nid> PKI\  f  PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256KDF.classQMK1}ۮC, VJE1֔nɦY*
 E=i`o{L+eȔvr*TayGe[ղw83&a3Ew 	KM}
I[],1_|F\0 wJ}
U4qJr
J&QhZ}o߾A΁ Um[s
v/NB슡}޲C~e
ni=L̦0ł)̻(b![:d
'@1ĴٛUڰ͘{GXafѵ1gQ PKrQdT  Z  PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256CKDF.classQMO1}tuE= "&jF4ze\%݂ٟ	?eqR6I;{}{zqRخ1,\νj];=3d!aa?4{ZRDM\kC.C!m]B-KBtH64a
=Pٺ3 hI]UQ5JrjW[it%6[1qٰ>'0l$~Tsg--t)TȨǎ뮘d(3Ha&	>|DGZ$gv"(BSn
#..ךc.gs#X`rBOcPKMY`Z  d  PK  C:U            Z   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256KDF.classQMO1}tq/^pi bb0FĠnZ&k	n2vxMޤ3Mf?^  B!Q(0,+_mZ-=*йW&CZjj=~|I>q	G>iarECindT+Br#=I|"2ZIN]EQDMgbpqrȰ[(gm5]ưW{P/{b,x_ؙ|6[GZQߴ8ic%VcXs"b	iK+Z0e,j|	Yܲی٘)e+ܻglL>yۢkc,O"	PKC\\S  X  PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA384CKDF.classQM/CA=WǢRAS)®!,zyͼQy?˪BQb0ܛ{ɽ?(baiTp0{ˍeokbʐ~h~kK&qi
Qw^	t,-
9"MF0SU@
1pC$6aGpŭY$:I~JqZ[1Wbxy0°/7Qa%&?kM^sMԟGFu>w\u$;1A
I#cS>2fHW:9cOQD0a0{-:1ZzL.f..'4F> PKB2[  d  PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA512CKDF.classQN1=tp{4YJ 貖X|+&~eX)qaܛsr=oO/ A!˟3)>E\.){<iΐ/*kKqi
Q巭k^
t,-
9"MF0)
(u!6f8nKі{&.%k"O)|)Jlc<|cX2l$~Tr:MהvȨǎ뮘d(Ha:	3>|,հE<vDQuLjr)^kN<[c/,W\]NiPKZ  d  PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448.classNj@}Ӥƴ=h/CXћ ^!lH6|VO~T΃7oy;~ HqGH&-n^	.M>*隒EdXm}[!][UXgĊ۷2Wl^/}EpGMօ<JQJyM&F'_1ltfmWs{|r93PK6Axp   +  PK  C:U            Z   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512CKDF.classQN1=tps4LL4*Fwe-ױҩ,WM ?R67={^ߞ^ TA!U,3l+CR<WqXX[ҐŰ_wZRDM\kC.C!mmB-KBtH64A
wV
(u!6fnIђĻ&&.!k$ɏ)~*J#<ɠ>bX)IܨOZ'x[7\O:#z+bFØ"$L1,
Z$v"(]59\sE'\Ε#fc<rBOcPK]cZ  b  PK  C:U            Y   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512KDF.classQMO1}tapi$`A
܈FL%݂ٟ	?e=6yμ7z P^
IDpǰt|er2OZj42R040T`HK
M=I[]22^t#<
MSHˍ.f=)zPc%E
d$yP1tx3,9pTqbjvO;UH0*G#EfZ.\\,#"
d=5Ʒ")Vl5>,׾mls+&؜`凼kѵ1'PK^ml?R  V  PK  C:U            Y   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA256CKDF.classQMO1}du \
J0c-Z.V,OM(cWDd&23@)R%CPieWw^qZgJC84	l4q߆\G-Z:V霑&#lhSPdB:lp2Hё&6.#k&W[iC[ky0ͰQ,5
5a&Zlv@otp0GF
7\w$;,&1E
IX#c9Y,2ka9R(ۘu0wSpqս֝s9Wγ7/X~3V~k..'4
_PKAW  `  PK  C:U            Y   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA384CKDF.classQN1%GxwAHҸ R
 NBPg9_s@(G"
liWΌvwޟ_Ա^@!W^2L+C^{P.<mՃCIcxe*EbĥI6"2D=Җ߷oykXZXksBaSX*Ķtؔ#EGxdH^QS$?JW%v~ÔCCaR7<
_̋f#wxZQc<~nYv%Lb0G4|Ȑ69[ϴs$$q0wspqս6syVf/𯟰<+5}3zPKbEW  `  PK  C:U            Y   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512CKDF.classQMK1}յ~T*jYD1mdce?%f8I`3$cf+J3ʕ}=`(^j{޶O;q 
	K__	u|e*Eb#Ҥ}si:7<t,-9!MF0TG)[cRbB:lpܕ+M<P2\$iG(ɩCSiWJl^	ISJkP_6a2/VWy۵h5p4
l9eaއi,(`!riH$ۘq0wssqս֝syZd/𯞰<+5}3zPKOW  `  PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512KDF.classQMKBA=ֳ}h.Tu3(
bxy{2o4jeQ<Hfssz PA.$C"_cX9S2JYuZ*-$2@{12"4RG#p|:VWW9"بo*Br#9r_$>DHsF!$Iަi!;R8U|Y;5_x|/&H0*[Hci$-..֐q6CƷiDRm5>lܷCk,fYSLC>ѵ˓}PKKQ  T  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$XDH.classNJ@}cb҃wm/MK{Bn!ٔXgy<~8Ay~}U1!Oޣu}x!<7Poͻ3ѡXF7{W:tuͭFqFfnv8ĭ|<A0KתҮPaa"AJM΄lyC;ez(D8
LǕKT!PK_"|   )  PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi.classX{-dyMlH#Jmَ8#%@&k!-FmWwkwI4Nd`IϿuޮ$c{f<YϓOܨuc
nvc/w67v#ƈ&_H|M95'8|+ĭ}nTM5U%&xd-=$r[~!ChMJXa'Ts$kSm={zwJh(;ŅK(oSBܹq-v"\,\HPܖNag|%<ܻ[BZǸfI>%
2Y
+;A\7DCɨbI<$A=!BmX3i=<EsETFȯ.nPbFǓJ#\mwPǉ9$ܘ[MGE9MGuiP=)'Q_|$o@3o![B##ܠmTN#g3MT-\Tx}c<;>BMcTp%<+E((ѠI&}'B<nF95AHXY(NѰ$i*Я%
we8SIȡjKyjƔTcaʺU}TUzLabZB0<2RqS(S޸Z
uaCaѹ=b0D*Fgb+)"tn-VڲJbiy1fVi8*
)!3RA8@wyrߝKt/b/3hѥ$@[&V/ߡ2y*z:︬~=Xvpsoyځkk50eT,2z-z|Yp(Wi;}hոIOlz?=E@3n"&BǪ(n3;U
[G*'Qz=	=gX Hjc>
b^x\7LꐲT3leưW2`a'.bða0a!pa=0ex
ýex[rnжwW[1S︓';9R+ŊfG|Gyr̚[J>O=#ߖ%fMMܭ.^ζ޼`=jĆ?/LZ6J.#S)ƧHn5ȑBlJm+".X㌗@\i,Mh&YYi]ՠE1#眖0n._F> c>(ɸu2:Q/vxe2#b28>&c>.c3&etgd*h'ebi2}^/V8+#|I/A(y\'<k|]<	MC,$1'-RIxp oEAf=i7=89'HZiNǣW4[?_ӸU	Nڠ)pvy@%*4[΀x#D!oHh*M㷏C :*m-(._Leeim36䭞Ə.B?_ms5.a|u~r9X+ЕWw.sxNM(m4HhĆUE,Ns~Z~.ߑ>fpbe~?iaiRv;I˒n'$2NOY5<o*l.سs+rR?6EĐln7V{w*bh+>e#OG	xQ@T8&C&x+}ܚ3%5L<~}@n,A2ZlSC6lsqWaZy4KVƲuM/+ܑ(Q$')EQxĸ5ZhBϤae`aWz]d2	L2IO){jbUɨLeWy:+dʈBux]4~+P7W-W+FN|5IA|
I&"24qKEPK!>  M  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519.classNMK@}cb(Ń=<^KPVۺt7B~?J|>bB4n	gmt $/lvDXXWiTo*bQ;9;!}qܮjk7&wI=hVʽ4)6CA)!^ڜ	vJzcD89
5EۆbPK+   2  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448.classNMK@}cҦHz<^`饵PVۺtB~'?%nJ`{~}q1@L&-?F7sB{ܺRwZ%}S]ҷ7N++JƺvׄHK'\O+y`1za"AJ`B6ݢ޳
"
qnL'?NQ
PK+ǽ   .  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$EdDSA.classNJ@}MAz<^M)H[[ofݲ,O??<x3yo߯o !!tC>kaa|-ܻսVkY6Z5λK;o䊵|YƓuJֲ[?Y9!	ZV7(B,r58	"r! PK~   -  PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519.classNMK@}c֦Qă=<^D({+maC[vc!?˓7?pxp>!Oք޽ENn	3K^n
MͲҪ,wM^nx%J7η!<)zxY\E-u)2	ZZ# <vSn	~ PKp%   0  PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448.classNMK@}c֦=<^(xn!-IGI7?pxPrAH-adZܹw{Bײlj4˃wGS*=whkJ~s0)SFl&*l^ls$dHEߥe_*aCPg汻I\O\|]MiA'09PK   ,  PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$XDH.classNJA}㭹yZb-X$6))v vpq
g>J(q{̼a> \dE&5atgb޼I}Ǻ1\Q4l6Gg5l#cwRqcD8<fgtg|Wr($yP-8LJpLE3(Q@quJ*ұp)}S(~PKIxu   )  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi.classX	xT/I#AdeIPIB($@1y	7$vZjc)T@(3X쾯v-R9L&$${ܳsW<Zt`3l.s`xt΁mlw`$(&nxj=#hz?iiE[27dnod*Õf	Hj3+ժ%U,Ѩ(/Oӵ<rTGyUDW
R˱
ݼZr6cU&򩩽bxmcXлx{hlMhHV`rZAUYfc=q-P׮b`ntCmqmUkIb5㙭:aܽO`z5;t-!j(455ڥȸjھ1d37-kYo吶1WMzG /N(5S75+,?nIX:mIҭ!Hn9@d]v~33LDHphK=~Hɼ	R8#cjww3sJfAMVjWTm"AΡF3R5-Q;5kî=߬7iڸ751&%cś*Tm/:ɄuX
+oH%u#ijik-0m_Aon2Aa6?ohj$SdfraKkaVODwzACK:J4΄aΥ0'3nQζ)MxapyF -	ҪDv{BL%7z%W$g02=~5b41*+tӎ!at.;њ sfÄ1LSBM}?%ѹZijVghO675w2AJ+xCX&ϛ\1!!e9\ZpOzn-Q
4v43Eɓ#1TNx*|\vɶэ.h6+G2w-ֵABTq	%̍&ǯk^g0$kd7Ea4P80X>|Xۉh[M9H/Zɠ#+/B%ōk/RŠLX֐.,L{.Yu:^tjv5Rb-5
'%Yߘ~-l>r?}7J-3I٤~a3B>#NP۾S#޵=vIt7jSם	sg=佒ӝ\qvRz Aíe7Hlh,Ebčm>$n)q*K/.ItHtJ%HH0$!	SKbn$^'z7K^_$J׍D`ݙ_XNT~slFm;wwMFq\y,V+J4M`%,Z-WQ-?*GhwAR3Qe%ǔKw|M#64dK^,ẋ攬Kq)(KMh;
F.n8be_?:g܈`B]n>FfPiĜHd
I4C]]Yד0%N<Iif~N>VW)؈RQ`!;ͰO*
10ga5"a
pm
xJ*|Z;⌂*exFA3>	Up->,WP/(X/rKekY0|UA519o07,,
=3@20/~kdQ?a)~'nKg_w#]q=xwN'	GqމbkN܇0s2ëtk!u0VzĮɉ Ã,'>%2&;q%8@GN0Ӣ<p209&sY}⚋k܍r0xQ uJcuܪ
Jaha+7)ۢ6G)(9$Cfrҽl&U.r6ރ!vO{(j/HiWUҡAiF-fR_Ӌ2$ 8pϝ2a	ʗLNN[4@b2R΍{Zb]iq@X,+*EIm̨(ԠJm r}8웕K51o ʢ2ĕgKyx/؊ן)(;-b
˺eL,:;#2fe1)e,E \q4}DxifӋKJcb}EZZm:Q*eu5|&0CQ%J=$ >hN_Cs{QB)ŵ-p/pW4Dc 𹕘w$&Y>`y,9dDN|_DCAd鞨	ߋ\.J]C/ueW9R^l\B<DxG:*cjUQQ5ܓ!,I8HwbΎ+8.2*󌱉V6n
f+o}-	I1Ϯό׏S}WVCN\衁LZM[Z%`%>RtuL\g
}s.&VGnS*:y`d<d~QwY$)MᑨXf;O8%1-}4UÎdF<[TL+>L-I.g9x9dѬWRO̟G߉'KDd{fC4v
(\PPzRL""
/8-$(\Vͷښ&4c!C6k nO攃r4*E"M.`D;=- 
-wz848DqŚDbeDn7>.f'YLwUpgXe}qa%}tyǨʓT^ITQTPK:1H    PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed25519.class;o>^Ff
0F
OfYbbdjjh__\X\_P_ZX\ZRZY䞚ZX_\C
cTbg`eg`a`f`b`g9?%39'8(@&<!& Me;F
 AzX$PK&8   $  PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed448.classN1
@3&;{9b"j#e],+(">]egyO 	^ev%#|$2LdG)JpaӉr$$_Q)##rm6gŰǛ7S?DC%B>)1ċi'Ga-YPsײk
Pq;O;*PK0k"      PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$EdDSA.classN1
@K4;{9KDEF؟EN4'wQȳċwafY~<d-C,)Lc<%6{ӗLRH A?}U).lq:Qn䔒k*6BedDMrV|3b"SC̜vz֒ 5w-p[~aT PKgQ(      PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X25519.class;o>^Ff
0F
OfYbdDZ22'%W&'g%'f%e'W榖e&맦&{V$f%d22xSXx8wOIed*vI,.N-f0d ʂ #2In O	b``bHriI PKG`   "  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X448.class;o>^Ff
0F
OfYbGX02'%W&'g%'f%e'W榖e&맦&{V$f%d22xRXx8.uOIed*uI,.N-f0d ʂ #2In O	b``bHriI PK+Ӫ     PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$XDH.class;o>^Ff
0F
OfYbp`dp/JO/KLN,.IJNJN/(/LI-O,M-)LOMIMNH,rOK-J,/
.dd1*@330030q13p휟T霓X\Z`F d@0%o;F AX$PKWK     PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi.classWyx-{ep q#(p 8v4]K jeG;=Rhz!nAv6@z}}͇jȒl7>fx֋^b/nbx$xC+BYD\FЭMD{dڵKhY[$Hd](=ݶ{	3X4nV_V-SM-"a+Q`]GY\&v(ƒjD(jM-&5	5QLviNU7%T98K\g-_8nZ؊}z~f妰Mci	3	n)vYfD>	
i)s@V؂pV2͡~Cשj?-O&YjeXޘiuiᔩUz~^\Edi[岓j	7 _kfv% zZR͚5Sh iQ5eьۏ
ڦ+T݈RBіhEښ$NҁP6[\Ko鞑E%s+KX6&Iɦ3"Ҿ$9b~=27xjҊi5i
u^ PD3,}nWđ`@KL'x-9z8'4]~2M,h.ZrՓǆ<k88݄3Lu5vOk-<+Rǉ{h3[M[{U'O>V'˽@X=	3>5;]%hw
kG%p+iǸbP[ʟqe[;BOTY6Sn(S~,욒`h2wLM,~V&	{:َd߀yR>[J6ŭo~zf6Ff{NPT^.IJ%>^j+6e4
_]f0VNUArUnX#VEvuZ6
!I`m[[	l!)KC.{:^*WKn{1A kN|C56broo]AY+:
Z掔%&S'ʱHWP_ch2λjQx^^8ўI:MJr;Χc┓rͅeorlk\|:OB܁ľpnl-T^YIl)exx?&+܌7)4(17+X,fAxߢ`ުog
.xDA3ޭ%x^K>܄G'p 18>R 2P1(g|JFcpgeDDcɈI2яO0XkiqL%J0uCL$A 84x<)2DF1|Bq'40DWuTڧR/;zs*!.^0&Gh]jnEsV	ȴ3P	ށW_K|My+O<UD99dc:<hTc:y7
pao8
/3.$1\&pTNCxaOp/"k>MmwKg`Q{:ך2j_ƋG,As<UWFzOQ]2KX*ܦIр9B]G(SWK$y<>cMϒO	v;(ӒR;ߌbPVvG۬67uT̨it_D=K}#4h,N;ka%e[?FagrpZOw_?zyrv,sF^Y1(|mJf]4T-mf4}9Ǹ@{N,(x=4Fa~G(3AU3N"(~X ŏYa9_fV"OYrgM6ƋMGw{),V{iެ:c˃p(Ie}y>t
Or_'QW!Ǖ?\\y`-[Bw~2z?608Ko_DI;З=eOdwfecYxMːq?D&e&jµ_CxIug~=z?PK(  k  PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed25519.classjANW/-4͢hӈE ݁fo88d<RRPU|f;cGLƓ
jib3aYB~{ZbYjUj;W&g'?l8%ef
lg@0(Udl!eIa@ !ī:gBn-Ug)z*
	<鎾quOB?A1PKWjJ   +  PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed448.classj@i{hwer^BfFvcy*CI770?o )	t'{/tI4ɨYTJV6g]]nVV"ץr~Ԅ_E^>eYZR0jO`#BL`B5mVKavE^'~{O@4O
PKc   '  PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$EdDSA.class=j@Ge1Hv9	Ņ@f5+U ECEnyfy3p6y%{Fxm!>QXJ֭
ӉHuads5!1
1&,RRT")v, LΙaT9v [נkBGߘ! PK Ĥ   #  PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi.classVWWmP*>BF-Է-FA4.ͺ٠Sþ/m_J/пs7ـޙܹ_Џhv#nlv׍98}\CL
:߅>ρ'0H\U8ơ]'t8o``A'xtqԋJ2Y!j&8x%5)	uqV2$ÖjcwFMg4-ET.*'UJII/e|Q;hM>0
ń
,IW2BLJdLHeEofJ悓FF'Ij֓9f3헬#R:-&	ROenUt»glM
ΔiqN*FEJJ `Z\9jZBD
]VV2`t;KR=G5r,mLKuH6QDEN+avbu+CvW"e,tԀD5Rz28ʨl\LYHC*KPZ ;Lggi8FulzWX3=
#U+2mBUk㉪.t\KA	s2ujP,BPJHq
&Yp?VRGja.mm
Cl`vk0狑huV(ea4g") >x䱇^x<Σ 'xqAxqQx<)+aë_\lNMKq0(ne[V^g`;XٷVcf*"ݾ5_)$k%o0TRZ#eׁ2<j꼥gVL*`6
؄Mp؆zaxr!e\/
b	 ?$,Y0#`f,'p̓g WxɃq&N3(<dOg{p0RīLcИD		
to=O"
s!A1h@?!3#6.N)e':Xy*DD6=A}ns	0E$
#} z~/çpm"osl
K897}	wοٖz1	9*ў+кNݢm&Gz>>7Q~`ej<L;'L/;Y©"[Ah\OGK$7{Z*JgnNw=E"tnFGLxot6/kM[X6/8/a$X9l֧&7[$OtXWXޅoĳ1+w+$p(v:hOMk1= 3[Dr`3@K9-hPK	'  3  PK  C:U            <   org/bouncycastle/jcajce/provider/asymmetric/edec/Utils.classS[OA̺,*Ղ"\N*xW/òlbߌ?/&	Wx;R&͙|g93_~~Ї
B
jpX)J_ne!k[ѴIjX|!ϧBrZzP{vlϞcrI3Gx/ndlgP3t,7-HUo̬Ģq\5dKf|:"CgKVP,
>k;bFL*%ewű
°Bw
x7&=K}%-|9O'/9.Y%ifԞm"-,og)mO
9)wh{y㚠A.;R899qh8qG+G$)C]y?9b{ٽ%"[E^g8s8UhРhhi¨p4Ih!*UF2JH8^btKR@wa@E7M_iMk5tSY`NV֐@eV܏I.;4.!x
Ehn#H/l]
3(e?`]J
ԠWplj2hxdh
=Du"%uX1!)E\JE. MPn$k*~w7#Q3w(P + P"KoPK6'G    PK
    D:U            4   org/bouncycastle/jcajce/provider/asymmetric/elgamal/PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/elgamal/AlgorithmParameterGeneratorSpi.classU[WUN:ZHW-4`V{!3u:9L<3a?'kI⒵oR\HIJ!{s?&G_?4X*cr
,B!/R|Wu<9ZcUʁKnCRyQ[
6-{A=[БF8ʓkqvZ.NQI NӶ`(%ݲh vU~pn&f{mJBMht(oncΔ\_-jWlܩP70	ӗįz̓$ZHYBn
qPrpehfK͵Ψ!e(tQ6mi"-(Ƀ2k(~*.u-<'OY
74k8u
g5h8ႆ.i
/AaN'͢<gRV厴enBIacI])*dꕐhPsRnRbGJw:ջ#yV-;d<
*Ĕ)NZNb	0po)(-qdq[;J1u\@ǸZMu\âu@%r:2UbN'/yx@/_'ToUX!]GIIPY1U9HSF{*#.yf(]<v3OпWz1'2hrPfdOL='Xkϲ`b53UCAIDQ^fC8Io6>J(!^˙_]
bihᓕLX
Nd
)j){~.^JϦ~7.ϑԐ6b~8?PK    PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/elgamal/AlgorithmParametersSpi.classU[wF6q@% -Z %&V(&-"o,I{5999}j;+ˎSz}3?7 8P88q4/$$d$\`O0Ē,@r5+Y =[w({njV<^Wa[>-gezVUmp3`P^-PAyi1ݢ唚H.g܀86uaB'F;OǮ^4+TQpȐ0ǝ@Tp;%<	<NrCBw9L</9g3{n9i3Ԇ,ҒwpLP.Qg,zy0&
c-W/^XÐ%juNos=:cOIm{{U'ʼxpgSZv{sjl>5TnN{po	=϶\NmU1ckvy3Wר?IMn]|ɳ4țt^\J]ar⹛Yb1'V5l=KaoFkAk]Gwy.3>$pNt	_nSΩ#dV<_=ҋwo޽Pǚt!Yw^ODh2!VJw j*y'{[+M*f;bxSV^3Rp Q*8!M+88!'1`w_^:dFe!=W0/Ēe\x DAq
+B! Ģ2nK
rгNO|띢7ybٜrN UL2Nߩl>it_L4$2Ю.?cgR\Fe5wq杤v0T)R}KT"f"	?%༂QD<]Ͷa^}1K"vAhQ?aF(*.䮤.xkZWbcBFy<fZg2 
i_a00BCH7o|zx
Euxdig<6<81EX-(>OPo0JmXP]ם%c45Ɉ3.ݕ0)/̷"'N#!.AWA~F
?6۪1щF_ PKqL  5
  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/elgamal/BCElGamalPrivateKey.classW{UuH Q&t `P !L"ۙt&&3cO$"{z!.*t(gUd&W^կ꽪W>`]Zբ^Bu9j"͇$\̚=$ 2= Ł=-%mEu2
KacD/f}>?4fl	Keچ/l0<tidy#E=S
DaMrhmC2cƲܰ1,&;sָNNkigM0
[aV3w71oGuQI`p@!(E@1GuiDf.+a/$m:|h,t3z6E3zЗ%
*q7":QLǳta񄖲&vN3Il)uݨU(IՁ:3 Ҫֆ(dJ/CmGc&`yL8YºpAqF6GL7#6m<;ؾE,
qy*xLh=c)},ehy+w6,
xr-34#i]
L	}WT͌c}M > hVX@[	+u˰ԽR6(+EQbaz enn(7cMPXor>'c2nFƭ2nVFDF2d.cMFe!c2@U
yMDh
h4'{!!/TJY=P~_944E*:_2#+~oh,[7,;:5{vsjVsņMk#j+}C0EB>:͒
AFsZ2ܼsmu6xoR/-+/1ZU`̼75+XWa%өb+UT8T,GLd,PɵL6㰊Nܯb1P	~bDC*n1b1SIW3U9*b"abRnQ&l#L~`~QQLA7&<`'&<𴇧=8``K&S8Y9+؃Lf*H)&Vlx}xVN2yR 4_1yo$"Izpɓ^<Gh+3=0i#z~?V(>}_U9'8Ht)ߤ-n Ɔ)eS^ONU4)lio$KWfS:JzSW44Z>.]8. sO_xr(C@mPP++=oɔAvH
Y{~pm?{)Pp\cرS攃sI)(Uƃj%UgbSb׈Qu{F|B'
tg4v
88?wau	uq?O蓲;~!<-a,`L?3by{B@4vVxק6 LM,]UӘjװL%z96B*ve_ݓ]
Ozʗ:mTq]Q]_tѬh8ؿĝfS'θŸQJ3~]v	b廉E	42dVq$؋Ė
^즉NV![?+^BgpQ8O^J`-84#PK*(  q  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/elgamal/BCElGamalPublicKey.classWUn6.EQ@@F (Xzi6ݲMfSZD>@ŃT_:GM[y3yo޼+%V7zP@MviFή}.s:jԲE>M{&{uYo3SP 3U3'@NvDӮIIu4eS@=
tVӚ
W|TKmʹpgN|@$RsCH@Hl4҃Ɯm5;o4mkkLCk<X<Q]cLZR_n=>UѲuyH(M5R:L5ІdU&qSO+vi#?W:"ݐni[O門X<hx(AUsJ箽>6W^f#c[m|MJ)#m\Ss+j.^iY?HM8x7XƽC^cp`JYi e@_	08Ջ2S|eUm#Ta5uXӕ5E!kL#eкKQICʳKw W^RnyAu IhqkF׋hR*7QjkD$""YDTM"։PDX/b,I]VD.-A2o)71kYNTl)ܰ/5(+ŕDiW W˥l(
7ҩR7,	O5t.
k_Ұ^[6+CZrX_)u[gk#m冊:6g5%gbҚ(ڶhsNNMf,.07ݔ+bPJ\+Aय़Sݰ3mP9]cKɍWJ<26cCBq5je\$y23&q+X/c1qq
Le2^KqLo\UFxdbm&LX;Ci&Y	[a3p;LJ؎q	;ɘ<!&3yZB'O;yډcG%XcEbxN.<	q<Ǚ<+a7#v3bڃ'$Z1&%=쯗x8x=Ɠu_;2΃JSFzLUHufߎjJ-CGH	>BYDԒ&2"|'#'λ÷^_yoߦL)rC&#ȋ(`,qA `Qq]J땶Uђ;|Q	]MegxɆl|v	]=gකIloEn*]1>}?ݍkJ$
UҴFDBD\DLD7ష4
4V7TwG e\Sލ:'O['Į$b;Pa|8O&xo'>=;7S˞G=љE"-Q>PԫP㨗L,iߞZKW95.ur!˞f<qS_ǽךGVknuJ7N#湍H[#]o~ ,j99mD(&Dj^A5_/]B7WN(ۈފU\N~K>V?PK+jճ    PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/elgamal/CipherSpi$NoPadding.classOMK@}u*xhYo~RA(x\7Kܺ
QTPM^ē3fy1ۄh8'ʨ挐\^ʔJvohLn,TFz6^q=^_3!Y*cܷU%,Wt"L[^c%ƀp8ׅx4ub"]#]cIvA!{9xmLC/PKGJ     PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/elgamal/CipherSpi$PKCS1v1_5Padding.classOMK@WژjE
TPD)
=ɺYt7B~?JLb{0
||c	jgR䂀jGxʙM"AIDS
-`E	+BX4(()gS.hl\PfL$Fr*0R_ObIp/Ap2dAAAAAs.UiwÆMux.hT|d#f/` /um@p	gD}^W;
h|PK    PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/elgamal/CipherSpi.classXxTuGZ. ,HJ`yV%ۑ
 ,`v $ˉN;
i$+Z08uҐnK&I8uS{޽+$\}=?g9sffO X+IjlRЪ`-
nRp7(hSЮ`
)خ`7*ةKAVGA@^ܪ6WQ	W
J_8`2S1wgd{p$XNGGH/SCYjb*NxVj<93_1z,s]gDٖp4u%C[	%;5MuT6mشyw[Gg;A; ۷5SӳSg%/$ֹ[`7_{w6dɖeem͓U6aKOk
OfaY,knvqmuέܧ$#[eGF(zPdgnus\]Gm(2"Ο`<E)})
v_8եESCu`{(<-%p4
P2)H_4+CZB`i(SnKMѐ&0	Gضp-9Z=
wbF
BEөX=-˓-MN[C؂ƾx?́fݙF;h,m
&IV%v.M9>J
m9D"Pl P#<%ioT,Fh0b)hVl>(l
c_X=coRBLntB`gP0&128$l;7@\	xPEA_["GX:ڟ<p,JAAmܺhH[b0=ES6вhO:
h6aENH%P/jO#{c\ܑ`jGS kuvRiG}Vvc>=BmTan()dmA>zbthɦ4KDFÒ\/LRX8#yV55fq_(1O|~sKQ16<0SCTi/{u&L9cJ+ۗyܒ;/iT~\SQVMX9ln5*TuјJh)^~0ҡb?ܡt(K运V]`a4Frk
Ġ
Nh4L"/6=ͻh!TP}7ǇCI5h7MQ1ר-9:Bdj^?jfό fM0LՎ锴h(ɞwN%zv-dN7~+iL?g~!Rh	4_<;B
Oflk_ic\%}6߱2xŠRaz,IJnRN/EJنY6c46Զ B5Ul\4N+	Tf(>u1}>Xe̝cFa\OràJ!6ovJ*I?a`c#tԭfKfaa	[J~MTYI]::rquFZwoC4L͛0=@s;܉1?7Œ,z#Ѥ+I>XBYzMxĻ$-q{$+q$/J|H$H|B	%>#YII<,_8)%?ğJ<"J|Mģ%LId$ҸY몯I/rQ"]Wqvu'+}S3oƵ[
O7:H7}Ϫɏp?䓙*AfGeEdbOהf]igdC3yYgna窲MV4ifja=՚|ZȋWyʀB)tU\48Tw}gɣ5DĲ?dfkmAg{_oNfP;{r2o?{X;ݮ	]ۯLebR߱؎̼8W?Ek~_gqEśL0ـ2yMۅPqP8$cLƙǍ*"LbhVq[ТoFX(Vq(Q`bL֋RâLE*EEZQqPUEUv1OŨ
,PqpRb1UDE
M0:&r\+dr}9.r(n(ǿ	O9~)j1YŤbO|{O3&%|L63߁hs".3y޳L.LA^md
L:UlrৢӁ&{9ľBt9&kleɛ/n~j&zF&L9kEF옃DHx41Yd"~%[{k/[@*]qRYo)
NqjQV671m
[tE9h`_cF;Kތiq<;o~g]FDb/M~^̈h$'CD@K.>OK9ALhx@	C+vKyrJ@FܗCCgAFs8<a9EKZJ6͇/ML	s|z##8|ffD$*t/c"8S4<@=2(xJaE⩮i<#>u* T:'P8㦨4f#ͰEWD⛰YCQCQďQu̰R Oo{uRb<1v]5Ԓ4'}.뜣K6='^jIr)q1qi11xs'ivxKL%^|܀-ubo+^";ŀ}6J;` {vO,{*VxN;ڄU:΅vX	ɇv-焳(esr1_AeFuYvoYޤ3H=QzN`wF$G3^f3NϘL4n9\n-kh*ˈNQ=Ibs՘`ѱez4UVPǂXAٚ&*.ŨjIz
p^asIW9۱ݜXW>Rɓ/z]1_溱[_Q-חWYbD[+˿kyF8E-7aBK
6I\^tMTc_ؾFLҩ(ߗs̛w2fj,PuPu<E 4[{9|)#{%	ٙJ9bLj"aYa:+!ZrTinkΈSfc
U*Ζdp;nmhxꘗNB~L>1Y0%:e<U?=Ygz/*Kȅwv<[{yHN<l-+^/+쉇URYZ)*嚽Hqk([:S*'o`>Ax>Ӽl
7>\lsV|]ǇO^
>:aw%]zJp$~Sʡ:/_I?uIsԾLQ;PK9   $  PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/elgamal/ElGamalUtil.classT[S@PYR@A Z<nS4QfwZp;۳ iCkn4GX^"*C>3l2-Hm:dA
%P>I0vz5Oex]7+R,jIp6آ2;b7/GБE*PW,Sl!g#KKQ%fZ ̱X%˚PvK`&*`*or&d(%lypٖԝ&)+뎂sYf&Vȯ%B)іLWE"/[[	d`WQ.?ِ~SpKBN	]nK#[]	$H/;]SiGCMw9jW5uKS TBs$sm\P0ODg/JhO
u]V #EsC40& 	Ȅ0~AS~<0q?Bx1,̨" fy f^X1@DE0Mk}FojOT9ܡO?kD%u5VC	=F/DO07
'	o+V<yX).eУW)I\Dr2~ܶi&-#s>auaT^TK<u%nx*eSVS#?PK|    PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyFactorySpi.classWWWFq܂[k 2 BdŪu0I[N}9]~&{2fwW
U+b=U=ϢnM7~M
iSVU5Y	uC5gnui:2M%bMh`,H!
>-b
,Я@WZTW54f(&7l*[:\!e6)Dɕ44- *MPR\D	*hJ~fd0.IkN滜I
ULXfNYPdUz},dFYր垀[	P5wD
LZ3aP̨<-(uѫ焩<9D^.N^}F4d겪̘Q|,,ȮQ24~6ey^6F>dB%IB@IYh#ڼ+
<G4_ԧ $wM6M19ٱɺz^<]ȧwPτK]9̚d>-&]\a"b%)Y2G|&"O19dt
rYϴӛ<ݹۧ֔;fȳOA;GнR&J4و܃aS
T's@HmTL=yɈS]"Q+b"vQ/AW>"dE48 ⠈f-"&SN7gk;uÅ 7{Ӷ4=r uIq,7]7;uGziym`"6R՘UOUS]`VKQm,+%)usQBͥXlܮw,ǖwk]vF܊ں/wo'^|RY(Om엁JBy&قɜbmrJWDqob{-+w5+j	k0&AⰖCD	w`\a_rvU8~	p?pFfLJp,}>(6Ux(ES|ցIX?P%l\5F7ч8Dt'@hvpO8у8ǝœNcCpxΉ9<y'N'pK^YנޣOӿw1}0:ɿQA?"^um#	|"8x]ʚF=ކ1l#	|##kr$Y!bpRZUBzpm<jpʕYSe_[?S楔/R4q:!e8&]t\/x?^ļʌSgҩ*ӯӇ7kiKo#SiJH3bD%HSnβ-}UfrX
G˕-R;`&UШ4Qx8 Y	|#kŦKeN.doV7]=Vgr_lq,'V݄Y>)Lj&/RPKr  i  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyPairGeneratorSpi.classVWGD֥*Y-
Ő 
ZEH69,㲘~cǶGHۜ/~;!swwf;sgn@k܄@g+O鞒0y&2vyzR¤t|%X\DU	:w\fZnh2LKjp;yfsXIIepw(q|Gcy1S!s[IMFv4f1Da/ng-0-%X"M
sR0o<隶%ajJiim5I](t'tm-6z!J}	ڌRnՇS96s){"ʝSin)a8QacMiV/bpL$#ѳ>~9z+(3-y||dVpǪ:׹ts;+eUqCFUH8,{̐*OA4iJd%ݶ6U臽n:R	k#L؛)Z]]f/Mq=3uoٮ+.v׶J]$*q=2xJ>e<-M322e<+「d</CAUk@ǿDK_ma#%;%ƙehQ:M1 Q:	i#\npTe	-kD"5U:Giw`&V_.^2DTᬐ5s&dP?ҵu[.-P
1"r4Pq$JTN:WIJ;/kVil<WT(hRqH.4*`XE#*V

*6'`TVV]؉*9*΋VLxR@&킀)L
܌"%/	*f«

Ջ))8C#Q .~.TpcH(8y`HۂAg᧔^tGu~}%/8G;ECFj[?:OҎzR)HWO& 
%Kch/ lsevp#m_R%8?y$F`d76
 O0HsEM
GfO-bEkݔ?=$q4֕ñءe|E,>% Vyj,OK2>
QKp3t7覦La)Q@\gXM=DsKC)9D	{i?\jIAXG%r2>/q2 0a ֕9,nXZ0(77]PK4V  6
  PK
    D:U            1   org/bouncycastle/jcajce/provider/asymmetric/gost/PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/gost/AlgorithmParameterGeneratorSpi.classT[WF6%4&ri0P\
iڐ %n"o-dNzڞ=9[r6	ٝ?9GoCa{znl0,u?Te_\,:tý&$B!sea'eMKۮ#<!y4Ð-!1zA=[KxL~ 7]Y!tA.ԚfS=g vE-9(>?V{-ʪRG[/tKs$r*V~PE3oc/N豰/kׯxvAX-з#E%7%czj_Qqa}Ff|VYnAHk[]tXB2Ek⤨T!cf?[tgzD}5XqpOCBàhᚆ!
5pS-[oglV&1G
ھbvw
/pZr
GHi>4݁{3BՑ4OL 6wZ"=*J>2;i(n>U7'l~gM>#m 0I\Tb@`%>3Џ
7g {ʺB/uc^Gu`IǨ>#cxĢ:+%Z'O7:RxL_[?|ѹ/oݢQtbXfX$!i#]ǋ^!t̶PC?}Wxr
t 
70Ocuɷ<V_IuǓ18A:ӫ5l@sh9QZ:j^j7OְE_u|[N
^" @2=VC~3xAɇRSAo0a?LG8i~uPKa  
  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/gost/AlgorithmParametersSpi.classVSW-	nBPPt}(Z,K	|DZK\Lv߶~o8&N)K;?͋)Na8ɹw~qϽ? cփn|xpȃz=xM\unv)j5AQB.81k!3-T--+gFGC2ʢ\os,)^^5XJtGTj2Y2J&u'+tΒ nxRrsj^j{ZF^ӍbTs#j%cZJbYY<4MK(*|&##7s.U1kgD[]j-"TeeE[eM	Q{)/lZ15CN,6iJ \_ʯf<+Lf>YgV,2C1u)+F!gր SD3-EKR>އ
}Χ4%WvVRYW6#Ifӆ٫EK#ZݏڔRfx
:QL5"j:@
,5]5c%ᾝKSy5bӶdɪUOV&6* 3i[`>9n@֥|,'.sԍtxz,$QVLm4%fHS]SyAv/jmQqGfODk=Ozs_7\zRYO09o",d	mpZ7]nʭmy߃Gۮ9zN/.Bi/t
1$԰"Ί8'e8/₈WFetGk]- α	wVrhz[礏TÎ^/Ss̓Kʧi9߄ۗM.h-ay[V
\p)8HA	2%FL\E$\e	'qMQnHx	7%Bo<n{1\Lq1w`^M.\^r
q:xqi.r[\^D.
\izz^t
v-%ywAɭ(FuSD@?I/}Vn`	=qsm~	E!f>:])<lCѹɄo	`6.)PO|{9dfp5DGhE|YB}ޠ}AZ	EC">\T*6qy\M*A6"\£/;ч?}ka>'XǛB7ں$Ǫ:?(-\I%߮w
-CvC"۹{0џ=d-2Ng,ç(i"W]Iyы	\r"uu]".y'q'b4\pܽA{< D	O,bpEˑ+5-7x1g:7PKLIQ    PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.classX	xWZ5I%!8bsvUbbM6Z#K*ĽhkzCڄ)$=BKK[zߥHgV+imI}g\o̼y+=CX#Շ3|$["h	rmy^V~_EIlcf	zWY,Az9q7]ѷ	V,#P|tL3ޝ#CZ"jmֵA"!KBCΈXzXNhQS!#>)3	]E1,}ComTx=9[mT~Dq2:<*aM۵pyٙt	gQ
-#aݴl}H rg,%,NO1+͐ ֕qcT-T83--uzZ7d閙Pŏ.x<+GߢEUˤ];6UI?rCt3Ϸ_C;mDۣ"@soH .CMg/KX}kY3y	\b3Z,j%b.DѨ֢mF81,yyB}E%1?')1Ĩ$p=,=%&z(Ac{hd"Z`YvfZQ=vh;ť5q;H٧Ssevb-Z@=dgB5u3M}E]!3+`l(.²{6d;Ry
ic쁙s.ky#!m$h_{"Aˏ	;-JX?g;lZ+p\tSZgWrwIGǢr"TƐ]1C,aU
	^J5􍳜}%hdKWVJ^֞Gg
We'Tו9ԍBIZ,Kb(%Ҋ[zahZ}J{nZ8X{K	4	\$hX)J`. -
\&p:6
t
\)pPU۶JwI9_eH*U)ZS^+,7[}Wt;rM}>үm&f*-D7;ɨ˰^w!JH2P?(p
:SN R*r/do"..?{okh-zWsD>o(i؉or[X{sZQbf[ɦ/.tO;_{-x&[2K}glfpe_xKVb,ٳN݃V]`RjXP
u;_sxQl̽["UcFܤ{UǸ
?T((WQͰa)k*Tt*Zgf2,ax)ש8Wq&8a9C=
peU
nSqȴ71YŅx+3ަbޮ*zSyxͣ0WE-ާgÝ*

D!0ܥ` w3ܫz|>7
ndx>1O)ΰi;I{~!|K
YW'+¤a|Q`bx
Fb8pL.bVCGQ0++
앉`xt_	f$*1O3g+T@($?:/:󓌒TYZhW6ϝJ'JQ92U*h҇J ' =, I4;^HߐH߇AH6gI64CxG>=~.O;Xw44>'\J mqEYHIq
3=M)"J2g
n$~RVW_Kw4uu<<X#W*ɓO:;~.$#I,NҹIuO>*Җ)[M~	Z/KA-UӸaZN;䜩tRW%~CUrc|8j; ӛafJ}$ďwO:뙄Ok&
fmSgf̑)4<'UӈPG 3KeRen)&?Och)SC$uHOnfcB}t6@@<zP<9c$r86	@v:[DČp6uw}iv߉2ƣ+N`~X*oII8Koe'p~C%X2G$dlT[qa$:t%8ޭ{AN[GѦ[:G&lsڜ޲i¿bW?tMFn?KỏR4gYjdg|g9;TSJ/:HIK򢕶aI :Z'o
*$GC+^tu"^n}yۻǱnj~<R/Iqw<bȶ>_gì~<''v)'Ƕba^wʷg8$ݘ=elO&QB|'Oi1><zPK4
  E  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/gost/BCGOST3410PublicKey.classX֒`0$Ibd`
J|ap\,9ӛMwIpRLL8z6MҴAugvWڒl9;y3ߛjr+8j
z@f}oo3ḵn5;vt65l G7l&9ջ9D	*,^JY<	Pg?WF+#JLd]ɰ;eMRtE#"$@!eܭFnv+z 7Bzzѝ4cq+LmtXW@uo\2c	]6%#)=a)ľ3J<kRa}d	=eokʉQ@jZ%IMeu:yGQK#O{#\3spR5EבmfTE|-Q9hS
i4DhI)1&&K[ڰI,HE1e28kV#DJR)f(<q-'C!9Gm5uo&o-{OQissc֩gAc>t^Rr\+W9rߦlM|lG"D}#!G΍aEGHZSC>,@ u5*&I%㑩udSd9bgRƂcQIPS	1[4I.伴qUJBd8=ȭ^5TCtqsW-ͣҤi2!bC0ZB;<"EQ#bZ֊AOD"ID"KVD4.n!b][s52HeuMkkf۸!f}Kȕ5\?4Ll0+Q[G[fBSST]a;JkԐϠ԰jPcs٘go>+-9wZaޕ؈\CjUXAe˰Lx*equ{ef~*h
oʼg'jrwB
j4Ok^t	f+`8ǩzynѰ|_ qB=7Wռ8S«0 vD$SB)%d[Q"aRL\ZpT^D%,ƐJ$`r5LJV1Y6& j119&kQJIB,a	¼2yG%48Jчw0ymxю2t]L#nx|	XcA72SLθqf&Oы'|ɗx '|MxʍLkn	&d)&P0OaeQ&c82F?@_G{yKӂ~@&P_N_mp9姏b 2e4"2q.Sב4. j=)<_g$AZ?¯J1jAResf̦򈥲4V	+xgdodقIKC(F^FO{8r^j,vl),ITUpeIxSal9B *N
9EIt+)<}
#h7X+Ios
 +"(G_ ^ª)u&7PFB1˕E4<iKU96қQbn
(<8.yGjK;8+uJ7+칓<s tc<;kgTO@55cR$zu)\Mǭcw0V0R}v<
hJ8VZ7J
8
Z$PeBLgLi`1,(wVJX))fsIclzLBX3_\~~u&~3KR*'h[pօ^F_{7Nͤչq\<9aq?uvQXIVg#{KSWEZ(K>L8LƏӓ6UTkq!uCF`B1șե(_xMeG,Zc:),q6StӋkb]4ݬg;'douzɱVPK    PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/gost/GOSTUtil.classS]SP=ڦAmi1 AA%aiN_Kadrhxdݳ{_0QDFq#j۵Q5ZǺM^W\-_s3c%Yp +\PM2`ٖ+n6Hצa6wiIkmrZG&|1ĊtԶEnPQq6u
㦠KwxEnS9_N6^J\3zs4Zj;3S9rU
U\*pWӫ2eNk|p[mxmu:I/
g$8ǟi+Pwe49ٺǛ^+ _H+aX{4DrJlWBD{A~B+	|q=KV0I+I}DA!LSy!̼0d<0 #g2*&eR
[%d,~o&Dqӭpa|?b3J7"J&<9x'P8}uZ֌b
,_
	.; 
SA
:D:}Y&B}RͦJp'h_?PKsؠ^    PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/gost/KeyFactorySpi.classVWW'c .K 2(JP*
Faxā0g&hovw?$rN_7	YVww}/~
@?~cxD*aO0<4-7hsJB3LahӒ	6KAc1op;HZ*Mof087|6a]aO&
agX)7ؚ$ɕHkIaGD/QE4y4vh]n񝧢DeހHAt>\7qr}=׆iZ38Ff|̶uA[TR'Ny5,YPI!%K̵
3I9n3FIbF01G:qhE9fR<6M릈:kM=k=h\݉3ۙklKzi۪yN-Zڐ	sb{k{H-nY2A@,)m>骈][йJXR!D5`*6[Dǧb3bKrNOAȦi(lL]˦]6"!HFRh ^w`t5;jQ8([
֧fW)B{ꊪV KxPCpP£'$<)!$]BN	a	$tIfOn0
LۯsdBmjܗ41	/A
mJQ(gpeZ>tSV AԽjx(0x7Y	lp,深Qga/"pu Whݿ{T
ÑJWOzQl`َ1ov1ޜ3Ln@pK#WCo{_Rp !)x c
z1.>R	/~xZ~=8
S7-ༀ
"&z3
d\@y[pY+
Y16y}m\	pe#0dER08EǱ pC82N
XpS->dd.`N ьLFa yfHW/jKY.z{ųZjFQq']I`b]	]2j;rg'f-J@s/`ODW
|MoEda//|)Z
|H><"¿-ojU'qˉ'zt3D=;tFBm泓0Erxwu
@So^(RQw'*_ʗ{2K"ZHUU9=OЫudkv3xlś+P<Y9C닯a +-Y NRi~q@.$]Z#d#"PK$kV    PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/gost/KeyPairGeneratorSpi.classVkWF@PHI)i0D4$)F1
	MO=圖~lpRܙ;?0_Є>M4M/ėzbNb[lgQ3!yI>Hqm?Ҧ.b߷hcxqo9lIz<_4Y^tv2ثE/A@oL-mB
_(um[S]vk&iæF1:xm	8)t 15{wtL\+kL'wMFʣuyV-%j é1I3bN18sMK0]0
+vBY-EQ}i}Dk4Pr9&WeHtr
um]g*rL2[HZ#SY̔01+U
f?NRD|D2^ۯ^z*NDKG)Ki/qFK"zD,WY8'Ux]R}zתkBd"4qts*ܗ!YG_y)u4f,>SG&
]<p*x⳴JڷY.#+(%~7ˁs;3T!Zw@Y6A,3x6S;iFVdQFD
xc2pUFdc\F2Z0{2$\!sm!o8)'q#f<-pm.1f"2p.qpWyS(t.p5)	pO%F.)CBIUHNI-Jk [㞦ߛ2Z,8OFzh["oYp"X% 3HGRpNiR1.2J[P]J.GDc:DkFH3T)+ݠd÷`8ǅz,>Ŧ?>SBS߅Y6-w7bѺH./ H_?!?'h Bo3򱥈[|ZI!,;dOg)xkOpq~}$"d>.%r/~-
PKd.]    PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/gost/SignatureSpi.classVWVZv6Yc;M<jV z
6e5b(J#iM[<96/JJH ;s|w~ο ğ茢;^	dF	rn7#\kKfD'7̍d8Zᝌ<oٖw잛X2Vm+=cscB,!m/0-%r+Y²gļlµr6shcGf/Yes̛2cy7f(\%tnfc-zDvKbXVB, YU_.f
U3)8,qZvN0ezshcP35Y?HeP*=Ǽ"A
1lZ'%ca<TҪRy$vN[5Yѳ
<wVzlYmvv.yDS㼿&0,9W2Kkw=&DH55@%XimML3\{H+^7]mj|T8L/eg-Xq%h]V9vJK_
0c/."<hHr锋^A̩AЌz lϘ_>qrhpCEw/vbLW9g]Kd2V,s(eZȱL-Wp}aKFyȕg%vLh;\ZHlԃq5J}!J`DHת+0Q*n+e5ol	Qy;GRpuZ
*xRS
VpDARA)iG*S0ข
N*xF<
N)8};N20wpbAh
; 5HGK?Mo;B޾݅w߮JaLm8+\=e:kM8@--z.$O7n0} wCklnoJ
,Tp<LPAs5(EC3sM
.VƠY/ة*UOxT8d*"*^"6b
Bqg)n3TƼ0U|*:S1%uYVl}(8\8\11p_<Vx%Wǹ@)F:]c|)+&ߊ*]彏kqQ|/s8.b2s=β"=
Y}Ї]QlBE3>*Z.qH<$H;BHށu``:޼ר;Mݷoƻ2E&NIJn"O<sSRO6s	gMdfuq
{/lkޡneR"*?Ch-AXL[f!){1n`Ag~.ԆyZҷ@~|m!6>&JO&kCM\Ms:dPC@)}j2Vz6$z7x !שS}6;cw7ڨ}gk	9߆q̽(yj6|wZ>*6	Ԥ;=YCwODMr6+${d-LLheѲNur;:oDdN;}[wŨu)8H[O_֤@6]IA^,d$&	
.Ed;Sb6q~V~TWqZDOfHdY𺊹*^H
Wy:NH Nq&v!> + 1}XA6GPKv  /  PK
    D:U            0   org/bouncycastle/jcajce/provider/asymmetric/ies/PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/ies/AlgorithmParametersSpi.classWcgMvL&@6؀&$*
MB9J@h'a3avfM	ZU}Vm]ZzXf'{o{} ^"
>	`m /
`} V.c.w C~fYyá~<8Êm9Iۺlwt˲L+qsX3XWRZ6www	XBp"VLOOk:v0O)fa]=aZ3NШw5⍑pd|\(>aaVRqoP)ôl%R
ziQD:ǗPi	Ɛ6Һ.*,Z2HhKu8"ȋJ\	rE렀(MnK%0LKTlU@QLv;je)D8;Ԉjݢk'D;TKS4R(&yf@S1v#iԣ45]j;9YɃ{-L,ն)%k^+z\.QZYr:@2ԅvgF,֎*cJT3q54R]1Q7=1cX=їvvic.)P;uŶ)NzmAKvWZEeBף޴hIu~bVu5}X,w5h	opŶJm9
St)M@c)ͦkčpcJE+sMҎG.͸w-Uz
-JD&8%^Wmlr;LSW~aۿʐNи~*i]q|]LKK6Fѭ[O{[uwuh$0?X&
s.LNso4h24jVOR--T{lǑ۬k6JhQ~;w 9Srkz)hh۹+Kߥ$}}*","xE)b.;EZDLD"D{EO~R+tn*y.k}yCc#u
s|s)M|+'7+MwjfYy[Q
}X.uQD`lE͝6A#g]&RP-~Ȼ"^a3E[
ҢZj-*-5{[[.WJۮҴ$D!x	!Kdlb C؂e2nbp-jd0D^ưAZ3a[pBF#eINF^/c+C+q#O7x9,yoe[Foo؈w0]fx{+11i|@LJPxT|A3#,a(N1<,AgHH>/1<"%QpVq|Q	>#$8DA~_`j|Cg$ç>*h`nN/'}V;JXҙZJNu%;jɺ,.8:2F.BO@O{O
}7S8
s
GB4`eOkdÝSr3 54,nzgX3MY"_g<_ ='*	xw^mt=<Rs,lWig0=3ẍ#X/8wM3x4x-"
>˜|iz.e,@"#n*UjwZ.L ДoB(kWՑ`Ɍ35`UO+6%EoE=G>Ņ'r6oG#xtqkf͹(lŏ#Ӝ#A)z6V.UmoK(?iU>
7mRH⹶PU??e*Y0Nb+߇%yi6MNLmdaj,eSO_qu@5&/U\ĺiT`Y4uPЄz,Tp^OsⅠPgyK^DeaHGPl1$%Ԗ-oK([φF<X}ۤ|{4⍻9׈^#Vqgvk9i;3xxOf*fڣd}wj) PK    PK
    D:U            0   org/bouncycastle/jcajce/provider/asymmetric/rsa/PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi$OAEP.classW	{~זƎ'0E+Bi|ȉ_zV֖v--JҒtR\DI]z)YZ<mWͼ3߱^z[O/{qkދhbJ}"!1uF'57$)474]`0>'@Ύ$:-#jTuHjz*89M9ڪi	&3QrZK:`XX%u+\mϪJTiFȷe_NSgي1*Y}I77uv={ױ{4p-lVՓ)9TuЦ)MWOvW/bkJ#n`ŖC,:,[ )ڃ
pDK[RNP4[5u
Nybe˺BVuJwHNL؈ ?(j[٧Fd6UoY4>#sd js-zrE	h-Q;(/͈&+5CriYOEMS^Iue2gO.9=i7nRӲeQmЦz:ZFu)6
tR5t9K٫TJe
8Vӝ銥	L[(j6JmvvVuuSnNn섪	
3^(
<FdKp']KvbWTv ۨ}GmFt"XmZvI"SZuqL89M[Bp?`Q55e9XPuMM\cYY&QgMl-)Lb檀H=+<ZRK6$'s`JUS\ OG=m7RZVBpmE-m"q~".⸈"E1*⤈S"b")ⴈ1Vv~:&Ƶ곇ׅK)@|{3lzC{	j:vׯsiՙz'fB;L-Co˪S;of;V2A,_C6?;W=wI^'j汧,ݮn ĺM@.FbUT
׵A
'R:#!y>o&
-n5z`hC mX0І%	"-.ۑ!!%	K-%p-XЁV%$ta2|0<ꃄ|x/>ćge8q?>1|ݏMS$O3<E1O0<ǻe?ރ'9Wam1/1<
p,I<I~,6LPy5\tS;gĖ-+Krvw6?>NO$3u4Ok.<۲ed <V|<e<WJU$Y'(
W1)_ĹD'
QM9АǕ~D^2N
xB:
""E$sP 3ɔ3Eno?z<^[֜"߰C8U`>4:Y}ϑeVD_+nsɃ9O-*mlQPUH7yw*Fܴ>ROqyG:Nq|yy4+EHܥ$]_.<^,"(1ߗ49"xu"y}/9)>G0>x9x/8qN__IvIV/';N#NaԹtnq;cZ9z61 2,WGky4֜M ahwAPKQ"y    PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi$PSS.classW_.׮*"'JL aRe e쮈}ŽIS
mHZ>qgVBYr-y7o̼+7_np[$앰O­KM&ᴈc"MrsG^n>JP4-@
hYiR8"}DRO-*FQTT[5}O%4#EhF
[-'IPGjge4SM씏HѭɔٳtQ/5=m2*z"tjC2fǍ>:ޙP>hPiHhgLS5lG@j$5C=|(LљX*jtVC'PtW:pHjbj6 K~-ZBOQ!{idM48X%F
V8wh`|S^Rf)q(!6t$ܟ㨢CtT{6GT4]55U'D-Br2z֬2:q(PHa+zjV
5)JPK#gjR ##6ّ=2ӛ	z&OW,nL7mNol\ԛj
љ!fZ2ljmR)G4{)hQ>ܒV
laZa	L
$`+Fޑ2ira|)N~ՠbAK9#έ'h3W&SdtQy,;	GcKq+8z/ZaI%h4Drj*RU،jY0Wj0m5JR@^6xд
aEU7FQSW2UeP)sI@*<ZTkHBb3S(TG|IPMS7Cs}kj/*
-+_⹨_SʻDD#AoqT[ED1(⸈""N8%bHİw
mv~v*B~&f9kiRo*3􂔟Jr~rveUl\Vh΍2ww@
;y)Ӻ꨾B(Vi,UZY ̢JY){!O_<{vq[xñT@u V0$r{8>z뫚KCiq2d8Y2ǰ{pL_+34chnxda^F(C3twcA*ͪxL!X2a-2:𸌃8+,1)э{ǲ3|>Qq	|ȍC,8O2|;ucpcySxz|O2|aaōi77Pe0|bxnL=݈-	|3_rCݘ+>"胢It9lУ)*Gm%>?c|?W		G!%OA#;vSs9_5<-4e_C똞d5u?4z2"]ŏbHߑu(-<^|"˅:s͑zoM8_ކ,/õgWаr49'aj_.#bZU: 5t]soOPp\d]D[CוŅs^:ːڳyaӊ:x붨ǻ
jQz+&ur䄷1ܥREIVE{^<z^E<25BDpGdq%Ie3A_x
[3uLM䩿]39D"Kͯ4){{QS@!_zVPʺZXǙV,.,~Ï/eIZt/8zW0aII
*2#8#	)x*:]_:M=^~uw̽%	Z*nFn'B2)J)ypͰ֣vwwapwn|sM-PKi    PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi.classRn@=8qҦixJ**B`7qF{OذM+;(uyΝ{93|!Y2jGtCmm_evڝ.v-R*0<P"68R=,JD%шw1" TJ2#nz\:6$d-
$a?Lu?	;]56۞PƟGexp,"5qxlluθ	)w^K{lHy|`s#/BGc kaT|UzvNvys:.XQԱȰT<ta7j_J^֩y_;_xꛧĀVRy䰜DG%VrXC7r׃`MߐRKq=Oh+,#4滴[њnI\71CXlDYd~}Di
IYT<։!Pҫnh4wqI*Piɍ)fS\VW"JٿPK     PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateCrtKey.classW	x\U_L'!
m(B̴B[elMt̼L^:oޤ(.⾰Uei%*P&I[E(Pew<;l)~sϹ2G?|xj)JK,Ee)JAuMp4%ԤphDX(	TPT[EAga5)XѼs`wsƞ>%]}m_{enn?g}51YzMk@f}Ȕ]
NBiXa_6F$W-#42[5~j## cY}4W%,/Kh3zD7)vm	f4:3A=keȊzE?)es/r+h
_d$*N}k2z툚aVXDϾH"~ﲋIU^ۚz}sxN1ےEUxΉiNUR23 HWP:G[iCƴqkD	hDYH,a[
gdzVF(CZ$m
ixwv0	qWϙ%12=D(hG-F O׉OP^j
zK-ALxLXӤF=UpuQ3~-nt{c{qovԞvn]چS9^!L/O+Ԓ;7fFǍnҲa6
׌kޖܽŐAt Xw2B
֟g\}Ү|{7hf}1"\C(fjBW:t6Kb[%WĲεL|i׬릡mѱvt흻C:VߺZZ8_:UlPqFM*.Rqf-*ZUhWѡb#|'Qc5͹ru9'|zs}^TyF4m~
BtMcvj:F6_2r܍"$Oü0_IK/`swj!ݎd^uB{G7	zimE^xsWWm孯6w6F|7>,̦|:)R7O^4@̉<
;[7D5Fx5afN.n
NЋ1'bBp8q2qBD!r\
fx99dXPPbp3xV1fXPp	,'aL8q^ęKz'^78
3\2h-oexbbelx
vCq`;2cf[nept`7>pÍ>q>p:>p6D0488ИTc7
w80O1@ fr@gT"ĵnb[3+/֨e
j:*4.-6KWz*/ 	ux,N9Ib\BRIb'=|3='q%1;I$yn<0wW7IV`]I葄I葄I&K	,\Gp 1GI&y!$ƃI1ΣIa#2dZGeZdDa(Q\cGqR@WgGKȄMPOPQPfD8e%'u[3mI3(|efKO.>n&KI8EM.7gOz$O|)I yLd+*$ʦ<EvSǎg\De
UEwHe
V6'G`k?&y$?#9OH~J|{K)UpJɫIWUϦԮdJΫNWULK#RYSƗ9{qJzwHz".nm(.r߇7p}/vv1G4r=2G4x2GxƻM,7{D+u}%W#ZUj(*!Љ"9\b
ރlp6R~Y}>x&ϝa?rx^70)9?~R/|):g.wU48f[z*a(瞝oRsosW)Һr_.	PK    PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateKey.classW_.VZ/5Ɔة&Mu$vbױ@HXZ)1]ӻI-M^i~:oBG;f;fW_ppBvbNrɉf	ͭEd*Md3Ju{6p{;%8G['$]pDT`xމpWo(
JN`侣6	HEug5asڋDD"dm,4/to?/aLݚNc̰)Z*소(Yif$,ji)-럜aQKB;K8nS"4SK2fOgMZ`&u#̴ƙ(%a'-;x' )Kb޻q"1XdS.S]NIsFҌ(ˣSK']uNk YР&阰ӱ{Fz]	
t֊X&wg"fLhFLhL_"5Ռm3;5sfЙz<lX,η3,D)5̜Ң,㧣U3i]/

>4Ղ"|9Y7et\TX	2F?k)C?%@,+^<r?P\J96~xLc&D?mf3\M=733X!;У6 aKOH8,`^o۪<tч4 Ȋ봪{tmAIڙ.ފY((i0S#`~.BȔ-Sj,럢.Z׬|'_FeqHFd<,㰌GeqLc2:d>'d<.㤌-=t5?TE} roOA{@>P*Pcmf!QE;<c/ݞ^˳}*'oڀm_=ҕ-ȐM0-Y=HmU۽<O>&ZW+iIU2]93.-?ferUb܉lݲll:GL0rdh[[Ύn;[Ep.۾wUo~-T*UQq؍IpćTpSS*pPRq7'PT]̨x"O.x*ܜx8	#]H8~dT܋Y{Gs*N*ÇTጏpϹ0s	N䓜|pYޏO)
W9>ɗ9'P0K\V0o+8Ǘ~`_[P%NK\䊂x^S	nw{|_.qrI0eX#%lVŧ!biZz_>8? 'ӷp
@餹gXsMs<HG-"KHY'jIxĻ{"^E\`bt	\^_YO"z}x*>*	x|6&ց
mEl`lI;7qu	~X7H
_l&"<<ϲϭ
mI&
[hhȾZ``(Bk9:~7-4.o*M5aU0R(>6Íܨ7ׯE~KC^]
Ԙ(#{Cϣv罊:Ǽ6z9^_]Nਝ_=
_p:(i9hxv^8DMHЙ^Q\H@!Lh\L*#""9AD$^x
E%w2RImp^=ia#s#ݱېD@D :W0Hfѳ7{}Mx{5,5IؘÍ~?'-pB`ȁ:ۇlץL+'k556ӵ7𢸧PKW  i  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPublicKey.classW	WƀG%vEZNV"#1<)6M}I[/۸mC{={G# 9:G߼w߽߽4 ¿<P<`<]l A:IY#y'¿/i	}%?'s$fn;qTODg7n!pWM(qD$>VH4Hzl
6hF"eP2"Z:-8Zְ{?50,b+;Cf ,̄n&ݚ%-Q'A{fKIu3!l_X%jBM)T\Pt;'H>k)	Xu'f)+53&Q4̛zP9^wMnhҗlZ>C:_b6{XBz*>v)&Ҷ2%l-H{6Y;b[Bt^v*k-EC3CdR^֌qoW)
C$4JdiR\EU9;8Y
5뉰i8⌈ez!ȄhgJ%aBLZhDH@OCDDN,T,J=62!BZ<jtpVnmLdKd1#߻LּD1T$1(K-bhNxN@%1m8&Bi+5ǅE>Gm鱐B-:Z2uWc%9̛.oLʪ͈(SAWLJ.ڴ:
5]^t	(V-򠻇9.*͋fki`Zbsqڳkܿe˸O~!
28(~d< 2FGd<"㨌78&IF:Nb;?#{JHFV&KMoM({=6
wѿc]F̛K^R~v1MM|h(ta:<%oMGu?\U.kmIGDŝ(,KL*_t2{YlZ-KQwCexhgWkһ\21mmtڕQGJ2K~i_[WaL{)a*Ġ$TRQ]VG1b֩m^	$UtT)Vё'RZdTe3܋x:
O؉1܍S`xݸux,{w5ބTq{A1|X1O*>WGg1|*8ky`xs7<hpYpKR× +:Dq:͹-)>Y~[MKGl-vSKr;PtZ[R'dtї:wΓNO/}kV64$&$
zLv 8@}w)ps0(1$~6
e6"-O7lthmEu
lOlٔ|B]^g
7'tX
t΢/Lc	w?i,cE
MɊU5$*<^X"fZgv߿ުqoŸͮ+ q3|[][`[]܍*g.fh ihwv;R"ʛ>imn̓\Mp\ͨtUTU_B
x&pr
TV%R~c_\$gq&::fΠ2H#̰&/{u(Ȩ?Jvmm/΋]fn;Fm!Zŝ65SBlmE^wV^	nD;a个ĞO&0=Q.JtCTw붓?uN;+71PKOy(    PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$ISO9796d1Padding.classOMK@}ۯ1j~EhKA1P1.qkvП`ZzPzq|03[!AJ*^jGؔ6ef
4*t9?/[GYT҇Ӎe141UrahhHdؐd$LHsV߇<AAAAuJkxz(AE٧;	RZaɼC9ˀhh6gh-ǛYvPPKmٻ    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$NoPadding.classOMK@}u*xhQ
m uw[ݰ,O?JTE8o>c	v	Q0%ε\.6Ⱥ'#}]*&\SՖ)Sh<ƥ6Rɋep2|&}R9}3i,ՃrJsVGX#V<~
:16R##ts+k٥1%^y#	(xgۡC2 ;|C|[/?{;[fPKt     PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$OAEPPadding.classJ@mkI/ *nfFB86fb1Ce^8z p]B;Ls].ӫpxee+7t<VUNTZ
Wϥȥ5)˅ZrOt=Ie2t
qq0F~ (DNb2EBd&S	)Zꖿ;;~6_~=^C?j7PK}     PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$PKCS1v1_5Padding.classOJ@=WژjEpѺ+u!І.|,BW'C΄Xg
X(1Ņҍ¹9}r;!]
)+>8$咩@ș[#fLHn7B<?9HIk6>uEĵ	s
r*jM~bߊ݉H[6,4mhIPqU}\KɵpCm	y,KfYW+ԧ)vRlh2PKg    PK  C:U            \   org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$PKCS1v1_5Padding_PrivateOnly.classKAǿfSu;D!
A/6,3V'!??*5|{
@q %	C%KoS(VK!oNl	NWC!F32Ak1!?bFZME5M2XF''; =Z,>
~>hk1c~/AA<YnUof2a+!z*%6]ᢈ-ҍ\{o7
R8
b3=U9|(fؙa{ݗ%oյ5(	PK0  +  PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$PKCS1v1_5Padding_PublicOnly.classKAǿfK'u;D!
@/6,3V'!??*1|{
@
#ARH_Pƒ%7q)I+%SC[7^\'ˉv
9@2N#&"&xH<=/>Z~`wP;&2VN+ˎ7BŞ/knX+ V֬]8pǺ6	
҇}c!8aY$͕]9&i-g338)ؚbeZPPKqz0  )  PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.classZ	`בeBGea0
/@H
m@~²Hӛ޹6I۴)mChnn7v7$_/K> )Dޛ޼yo{'O9 X"Z	I,Al`%pJEtJ%A=Nm$.	vJpW]
Q$#^	I@_	%IpOJ0&W$dϿJoA?$OO BHDڢA6W3|[,}~vdrl{S;L-\8'[NKZefJ?F`=r_K[Ia{+E(CKlsu496m5
ֹi#1uuw#uu'y]a	[:o&E]m(!+\k'JK҆USWRrW7L/2ӌ+13ؖ"N7 ^in i0T@M(ҳeX+S[/4m`ơs}`k
hPm(˒&j)>)`߅ 
)2RJ` :Pqn"P(چ^6@)q	zڡaU&z)RT{;4aڦ=	lPڂ}Aڛh?rPh%[C0"kCDqu2/*OR4P.֠Tǎ&ARn@ VZ(a,PT*=a~*A4yR4X?*~y/'q$p0,Q4s5N1KDzcI5Y-fV7z\Xأh$FpfK6w*/ysibc88i_wa!g$[[7~У`LB,Lr$+nsx 64+J>4 ʒh$o-JQ߰`\0nm0Ou-'4%*;Eeܚ+R1~Qt%P07edV$5+Ld(w~w{HEX6%0}Rq؉Hd*2tQOT6WaM)={ \9]ݒkJ^)nLդڮ^zRmbRYE,Uz:nJ6%!Uay h6Z]WM6w܏|4x6O0ch0l_^e^ s u"ېrh	Bu0<PGsDJ;kvuk3"384cbݵi]m&}5,ZC>^GݤPp)>B۔M#~5L7fv1c9#u[߮Oߋ0t_G=&6oʙb.ꝋFHS<.>{G}tlPĽ]ugB>-7ܷ";T+3o\qt=`j'YPSGV?b5izW/E㎨.gQ1ze
*zwL&m69LKuǽţlUSSiX(Չ3
m>sՃtOWSv|͌roD]	z&ΡcQ|k7z~
bX{t%ѣȭGWuA,~m^ESqIY,0!g
)TȐM(l(j%<&]$(|%|U:~pDQQqxT'|R<&>#
|^q_E_pBI|Yi#*q\5_
pQ%mO	


]:HЕiL..p3.>zH33݄.WuLx1]j=R>׹I3#Ԕ؝zW#[eMei/5,MF=k SG#MEg-m4v:uݖ'5vLS;#`2<3
ėՊɕOB+14Ux]J`Oۚ2N~
u~a5-<wd8QZݵkK
)9XFӹ(
}}93_OGS83g<XOÐar.^\f}LڰM -*ad2ozo^c{< l?^k[x1 I+Y୸XojXChqunb{{l`[b6n[M8Nma5{ɶ<hDW
ܞy#aN&]Ldr+כYop柙\0	F&LBL0a(2K/s&3\k/A ;Ȅ&bB4>&&L3>3Z0l9xsmL2هf3$f,Ʒ3yKWo`nc^&^3͸jFC,ςw1Darp.;9ӪμGsEIgz&(?ƅsӿL/un6~ќ튺=CvЊ  7ղxk%B-?iGq?&	@u(~zm@ui],%xui$ֱV1@:lQ<vz#QIWU@=*k,4Řɢ^-ff	3kSY0vԌdwj/14IGe?2*Fcqfn$J-uy#xzHbpڬf^4KbtMDcwj!EO}gG;Ͻr(><NK f1p	*]E55kNY>z/kܗC3֚ k~Qʼ㲓뜑qq6}~7{.{/Bm5Ȗ,8%#	Z~p
vd
	xBc	t~!GQ8IM:3<5Lp&ύ|kz	}/3nOV3HlO<ݞY@zPr^Hx`*}!tNRzFstI4ʒ7H(?'xy
]}
ߧ;yř3A6萋ⲹFuSկu_mr)|Hو\$\G|C^`4rn#Aa0CatزTXC^dUTX!pY4L0%(@*-
JJ(%iЍC63KE0^#ڡne]^lzf^j?3ޔs8,S:5nsikCcS.{#xR2q
?0#Ǩ^y(>6΢S5q	JM*.A9[GǗIWA	IJZnʳMkY*y'F+
|ȠBt
ǰךc5Wy}
UU8ylzbzĔ/Yɚs
Ǡى1G Udm糆iyV	}	]C&EQ-3WQ;pRȡ lvE~b5r)9_jtm蝐CЎM9Zq?Sl5.]㚉Q8G=^G9 cR>eM<FiV5VȪ*H7kl4nQ.[D~J|uLmp'ӣKD޾BZmӚOp5?3q\>Wŏqǅxxخ,QG0j?ciFiڲ\3URʹs ;^w0fcj-%#Ԓ|(Lk5cm+׍Y6fE{o5"raǮgK$R4<̡'>}vnY	:ƥcX+e;zp^WZ6-Ӕ0o,7qdiD;-V,=+8yڿr!Pi7T.TҋPPKtD  K,  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$MD2.classQJ1=q|.Nڪ >q@p91TMG	ܛ{}~}|8Af;wO0|$zuoU@a]t\2OgEɽ)W8}.c(
S(/cMMH@|d/dɒ?
eBrMB*ARa^qE\`TivsE 	2[0l0b!k&ؽ?{;C^
%!{.P!'IMi*ݞVAL9 I`:,F1k1O	,B,9RӚklbXChrc硉Z7JMum&2 PKS Fx    PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$MD4.classQJ1=q|.Nڪ >q@p91TMG	ܛ{}~}|8Af;wO0|$zur`U@a]t\2OgEɽ)W8}.c(
S(/cMMH@|d/dɒ?
eBrMB*ARa^qE\`TivsE 	2[0l0b!k&ؽ?{;C^
%!{.P!'IMi*ݞVAL9 I`:,F1k1O	,B,9RӚklbXChrc硉Z7JMum&2 PK(8x    PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$MD5.classR]K#1=cgGw]oq+VLMf$]Gfjͽ='	r3B
ˆۛyx`xBkы.YĜZiz4=ٯU^ȥ+M@; L5RP.Y
=!;%ψHH_*B<iԍ鶈63j;,2NS!WFƍ*d` }?ɒmAyݻ\/E^oW_zPvUo^z2[k|oVF=dfC?dx&\ᛋa|u	.>;A%	Zsl;ZvF?X\
f0t~&fnb_`k׌&PKHUQ  9  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$RIPEMD128.classQN1=&ëPZ! d@PUJBQ_Ub9x0l)	6GzBa-]{s~G/OB
<n|;*W	RӴ+Y$Z	7
mYԲ͙iF\q&tT/3)D̵AhKFBƚ%-fBrTkAmfaqRD\{-P0tHD,CU<dQ]%2މ,v0)\qӾT6ߏR}H.sKXP|xX1WYt1%>^{a`Fv~SJI5XǼ{bh׬"`m'}`dY#k={_PK|  (  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$RIPEMD160.classQ]O0=Y$ M2lԖ>TlZ*$cԉl/'xJQhND^s}|ǟ_b`vs똠YHa?Z淃~bz%PP*5<F:uNVĥg+M@L
2H\MƁ0di$diT`ɭFP'BF<j#)J]iqekz@!.M_ _?}vx/y%'\j1Ԃ}Dqs+I~6Dvn)/ 
ܖY|_K>f@r<7/\<Ų/=a!G`Fv~KJI5xE{/bV"}#'C|2oXbjB|ggYPK
xT  (  PK  C:U            R   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$RIPEMD256.classQN1=5t/Z@RdRUJBNrqN'TʆMFQU=IUaS[>>~u B
8>?|O!U1m]z,&4ԲL
OQ]mhӢEͳV3ӈ4J)2S̤41FӉ0 KFBƚԂr}3b!*DȈGa:Ei8TSD\{-P0tHG"*d?yO]%2މ,v0`ݴpKnߏK]L&)QwKuXP`Tf}Q><<1gyV<xa	/=,1V	jidG7䪖Zs<"vvXl e,]lFؼ_[3j_PKLܔ  (  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA1.classRN1=%ʵ"0AQ!%ҨU];P^'x	*R?BxICCTU=xE!AnJEiYr"n;kJ'X5$kؔ"UT8՘K+~

0ݬ[Ed*21JXa
x`aEJwD݋UIPJ8ku.b]Iͳ3n`TE"#<'uC΃aCރ\
F;S~IC9U"'ba'-1_>[YeADLfT}㵏1/
oEn \Wn1-vߣw<3+ט[b䨅w-maZpwgFӏPK6  =  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA224.classRmK[1=Qwח6ݦS٠[6αᕁ$fknIR_OCk%y-vIT,n\fş2'csFcz6orfl"(3@4Wo'5m5ʟRhC@ \76B4*6n%,t^<!baHh=CҰ2e,¸MuܵYZ酌vj%ڰ>bEX'谇a9{.=DPwPzRQNR~VS~%(1_`9V&da*l& >F1c}cU}Е#ʭf>ЎKe5-Fn1vBZx-1DPK܅C  H  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA256.classRQK[1=k6us*BV!a8z-I:1%"b_/999ɿ˿ >` WX> ".	Jk?\f2/#s:TǴ6oqfl"(3H4Tﵺ	e׭MP<
V	ݲ!7X*a^X*'RE"4L膌_n{69sA:!#ݥZggjɩ6emj6$A$K{y{xLRSgB$8qQb>̃woa2HY=#c1iO0c/	+iDPUJJxVF\ķzeo7;<asmncWƌ&PK]:  H  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA384.classR_OS1=ee(I!L0&ۄ`x		O뭗Kv&{;$~ ?wcl_?] U\q`TҾsIf Z0+ʼNRzR̨͙UXzP
m-/RhC@ \6B4*6~5,A#br%*nw`ceeBXǸMuҷYW	.վVKNa=|(clK)	jOa<|]JzCؿg@^E%IyU6${PԭXm p%g(Hfq=#)<1>`C,V}Մ#
qY#tWs0qX
O:xR+=PEߍMPK1  H  PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_224.classR]K1=kqܪVJ!ݭoJawXT:"$1َ%}RUѩK)Mޛ{NnW 6B0\Z;&ےJڷniAPZ0+2:5,^:gi[g&2TIc~#<:8k
nPV~BӲ)T{ER	C?Z"U$ Hʄ0vqAYg	>չVKNa9>bEؒ{OGec<
|﫼IP)To%)Ts`6uӮc҇yp'.b&Hf{\@'>&1磈Y0c
#4rC40c2mC^s0
Oc'(tų.AhQ
PK
v/  P  PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_256.classR]K1=kq\W۾vWEKG$f1Yla_O˖
Q;*b7srs~	%K#oh]8Zȵ`V$dtdNX:iK6g&2TIcn=;nnPV~Bݴ)Twjay+{=r~
+DHD[~	ݔ0=6mjWq/2}}v&jr|(clK)	vNxQ1*!X/uT&)?扃dPZۮc>ܿw1` $30y8(⡏	P-Pu%a0{6[KEK̮|xv;xAhQPK  P  PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_384.classR]K1=Qj*
V
awXT:EIb&%}R*ةw&ps='7{%u,	7v`$ܩ]'(r-2:6,^:'iK6g&2TIc^=#,6uiS*O#bCvkay+{=r~+DHD[~	}/ca66mjWq/2}}~.jr|(clK)	vd=xF<<F	V?oM>rG5IYM6O$r_ԟv;]x@2(gޓ<1iELǌ	<#е#1nE\ywƎ.P<E;x-;3D7PKv  P  PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_512.classR]K1=kq\k/V)d)n.[:L3K/+
(1c]Ji7srs?/ "`i;;}O0~W	\fşĘ!ˣTt?m)DPfT*i,ݩ>7H(+ІvAn7mJi$UlZX^!b_J5*m`eeB?XŸMuUmXFBOՒSmXemi6%Q17zK]	wU X-uT&)QC`]|҃'.a<
0̛. cx⣈ sC4rCԕ0c&mvE9]>s%<Y/OsЂ;3An PKa  P  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA512.classR_K[1=Q]W69 V!cEqskknIA_NRQ`[0_~$$wW7 ְ@П_:$".	ׂY9a|%1=N7836UJKw+	e/)!5RxI][!X*a~X,%RE"j,ԭLWc1nS (ulrVtGFBK5NOՒSmXX1["II0C΃aNwnm*JIeA_/D=ug]{+odmeٻƄ
>F1E0PN#%RBf0k5z_+ι<pk]c䨉ML71{ͻ1GPK&01s  H  PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA512_224.classRmK[1=Q2ޜ⠊['eve]$17^S%I~?/
QcZ*-C<9'''ϯ?c`|@0)&̊pX:*	2:2:iSg&2TIcn-;nkPVH
pjؔ
HЯaq~˕DHD['+ M+Qmm[:gu.hC2=u~.j:PƊ٦aC|{=<00!'Xr[
RcB*bay Nc<Xɿ2daLe1#<x>``F-RBWfpLl7ns;`n;^7񪍗m޺5Y@PK^  X  PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA512_256.classR]OA=u|(Ѥ"!iFA0;,SffjHGg)ƶ1ƙνw9s^KÅ/RIIai
ׂY{*/CsºZcz6oqfl"(3H4Z$RhC@{ \6B4*6jX"baHh6C2Ҵ2[20nS"9sA:*#ݧZggjɩ6emj6$SèØ}.{?u~KP*wD(w;$)?ƉdTXհc><sa*Hfa=!cy<10cO	Fi")%t5aELln<`vcKgm,\t@h	PKЦ  X  PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$noneRSA.classPJ1=ikND]Eh.| 1i2$S`L[,=7srz p=b|!H/	JGI
%1LTPDܤj	h^1LBF>zig+"!]ՎyؙI,3N^E5
h0jYwd5ApC$9(:(9XpPvjc^<<s;nٴHK,`E.܌-b.v-%^
3
ٺ{Sܶʖ	*1'&p-ccjǢkc泋7PK]]?  k  PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.classX{,+	`[2
!iP6EjHi-]Z9&iMz7M/JzI4m>~v%Kl(g͛{o۝Yߧ/ ؀j}XZ6S!j{%xt1tq[a*Fֳe`!#(+
A-
+w:wڈb;Ѡg,E38C)-^JM5v\wn

tm!Eownv	ջzz[Z7iBn	Z[7`mi|,cDv"B{Kcd~Gp5l:D(^SURhltZYkê)aQܰk
hj*)vB5{4$(	cp'5]ݦZSV-v\	9(e2%u	

N[Uf-0-lٓNNOw'U]5iP
EM拠hЗT-)%CKObv$f#GF40&C9(͈D{մ4z[Rd4ѨPg.#'2E
T4Em#jb/)bɮJFڟL"mfFgMD%%(ME`)7ETOʲ9(&am頦S򇔸<\@׿e̰J3GZ4d%;>W2VJ(%B{_6EU~ͷD:SI&px8PuK8k`NT2$4h2"a;Sw-t\ܓUF8WH4F4nHs(|owr^
rDopT􂯠;>#*>UsRE+>*WX!_BSrxVٕڷ
b]?އ;+O7tN(	Y4:VYfIN :3Aw>Sͨt6,9&G"-#U`v;zv	A`@L`@`^}o/p@.$pAE@\ !@$X+>oo<cL"&W:K"8kDYX߰sƕJNNI/|_3}^ZLWϠAveۏ=~p&g	#m^??gJ-
Ζ3ﮔuye.v*K.+)'PQB?C)՞YܖV55;=0sEӊ歲şA\P|3י;<.шhe
!c!|2ss~a2c>wkd$q،x>*Cf!>&6|Ox=>#vрϱ262njǗq?W9뇎	?#q?ܜ&&pcqQ\fO^[~| r<Oq<܇q
nƸyo҇߭M58ӟr|Dudߌj_|ΏYJhrч4, 7\`\m)5Pn 	^nEQc^håF/؍RXenbFCOq]+>In(CޓX7
N{q|14ֺKxbY{m|
/LwHO7np	)g;DA>1KБ+J/JzUM.rEx8;VYY.!dyr$~˦uЊgvTgYo%<i'8
?_
&kz`
VMm1<C>ңưqˤv	/p0]o9m<gNR3L5\4';h6!wșM_cfsb}B)<+MhsW7@Im;`GC;|UXMowb|O:sR&+3 NBЄ<u{giKkNJu;I+WsTO: bͿ^rҿfm>+c`z'G
?sܳpcFp*ǬɕK+a4d.3"_9\{j?46ܡio=<ӫJ_H~x^`:BA¥o%#|p>L+	A	%p5_KnCx3{	J>5';PKr  X  PK  C:U            Z   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$MD5WithRSAEncryption.classN1OGuJԅ0LH4&;
v)&X0 >qą9
;JO?RS"<0}Lpީd)qtEHȐy21"m19Q:%8!`8z!4H-I@/20X\y#Ђt|R%y~zꓧNЫYx)vz!!oV(`E%.r-Rr݊$	A7 aٚfAsٞvP=a)֧|n}fFPK"گ=  6  PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$RIPEMD160WithRSAEncryption.classPMK1}ik
⥢
҅lئn%
Y
(1J/'x/7ϯ 8 (6[c""JY%[0$L/D@$Ey
.C!Ux^$dA!#28z7ٌ'Z0Oޝ'B'sͽX<zLÁ\%l8(7y,"^\Ou@RجAJ
Ul\ԇRrF11Riz%+8KlPoŚAoPKP,    PK  C:U            [   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA1WithRSAEncryption.classJ1Oh.\).n஢bA:Xq9fB:ML*c( >Fop?86AZ,)	4/J蝚H 1LQˁ<=يyؙu,#"z&<13J?#V"I:s:	h׿@f3$9U(``ZG	 U̽o~O؊oxu񐇗U.XqQBمUB[ǽ\ IxBPX,]Y޴lOXAv)6]g-> PKz\>  9  PK  C:U            ]   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA224WithRSAEncryption.classOKAƟQsu۲:˄x3
5#!\P:N:.cQCEEX:;3yxyB _gRIsNp-ulڧ\rD&BRN7^!hdYFR"6WP'SΦ\H8̈́ђS3:po]+fZ$/Ա4VPY(XXP`7Y\_Hma/M}gn򇞌&B#9y8jF	6ʨذEP^@){cT3pԷ*不C
4>}Kl|'PKb(?  ?  PK  C:U            ]   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA256WithRSAEncryption.classJ1Oh&"ꦢbA:r̄i43dRaUEĴ72nnn	;TZ`\H/{<>=#8T@d)rTrsPHyeh+D_{LG*%%1o8U$|1J0v;WXu аt|XIK-XmAЫɼo
#F  gV(bF	e6	
7tzIJb| fyۜP0P`
)6zl}fEPK@@  ?  PK  C:U            ]   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA384WithRSAEncryption.classJ1Oi߅+EM*J[+-.c&LS!
X*
>%N7psssN_?^ 4Q%CTҜ8\f{>9mڧLrD&BRv'^o!hdYfFR"6WP'&\H8NђS3wo]+ffZ$/ԑ4㔥PY(XXP`7Y\_H-A/M}gN򇮌BC9y8jF	6ʨذAP^N_)cT3pԷ2蠟}
4sl?}Kwl¼'PKE
@  ?  PK  C:U            ]   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA512WithRSAEncryption.classJ1Oh&*(mX3a:TrUQ|(1mō.s|'X>R)i4ώO"Їh"YʼD2:\Bf+~g!gY&ZJ<ӑJ	.G1Nc=	+%x̵ģ]Dq7p@=4,9VDBeAvŵ@ji2?3=E<Q;ȁ8ÙU6XQBنuB;͟;])j^},Yy6=L/|C~);&fwQPK{x@  ?  PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA512_224WithRSAEncryption.classOKAƟQsu<˔(Ԍ p:̎~NFAu;;<@[rO=R#"S>knj:^<z%iSPKOHўlB:y>=tb!sP:Q<q*rh׾'=V?_ƽztl`Hr|VWK35g][4id"eyL(dځՕDJpaw$YY^ON%d
(T+=|J7l&Լ;PKggF  K  PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA512_256WithRSAEncryption.classOKAƟIsu<˔dP3#:6;c2;:}>TZ!C;<׷ $H=̡BYWv`$Y̜H2:\zBvFn{!̲xO3`*.Wԉk%UC;-<v(7-@H71`l>_9~Z"sU/,́XHT&X2CބAɿ[)jNx'A57kɩtR#VcyՇOzd7{PK9dG  K  PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$WhirlpoolWithRSAEncryption.classPMO1}dO^R @$&&lmnb?$ .fO{̼ɛz pr3%*g,e1LU47\8Q*WE
.#!?y8#$,V"&].ՂQm:|4A1fΝÑ]%==T<xLE,[ob^"sL(dۀf#UK0,ΑIC-x~gк{\c5~ˏ6g
ZPK7*    PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi.classVkSF=8/^ny$&`0x%j
E<i
y1!ڙdLQޕmDas޽7'5 &61! ؞0guف 0g/43#sW[9d..SD!nٰlm7_
ޯ6'gYOTcɺQ\V.ЙeɳbkGoYb7kYS'_Gqs6G+G+FVZEeIٺ^Nw"D`zL9[sR8Rt-CWpzrJITP:B(	;Ԯ2GZgBiaHv̜Uqu&vrMɡuH)yyjrj"3*{/"Ue_eeGZْܶJpXåMݣ,^^W]M,,͏L_U\~=3y
OnJy|↔ǞT#ף.צX+؛{[O^V]M;Bk6dΑ׫Kih&]D\'">!SDnE<#Wg">P#}",^MMhM,{w1A2%YD=ݎTiFϚ4;,@2t4k٥J´Tv@qDh
Z9tQzPE>CnoG5	ӳxA=z?^~՗!bQC3jcD$$S}Z5z](c-
&1,aa|؈%6m̲oZۆCWA9]qF೵㢳-lMг%z6C{{煽zKv`I֔
+KcjK("Rd٥ԣe?`lk(9'~P<s}rrs[[C{y	MŨ6F,Y}rf&NNvuToQEDa^O m%H@zFYԕV6X\wZzGOxY8MxK5;`4Wi+!Ӧ&'	u§Sᗄ&4Eg6BPK7u  
  PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi.classXw|ƒ=ժ$C}`O>L 6⢀la!:|ڽ1!	'"	餐"BQHH'1-^Nwoy}Y<<%\3xN.$&"d١xvPҌ:1rAps½;qmyw%L;׷#H
ĭ2d"r#s7<M۳,3"cFІ
uޤu̫X>+Rfdi,nfXY@S\i(#I/ړ4l7(Vj.VbJ^G. =v
UT1E	,cArL#V
ZCݶv_kr`*"˒vo|5%,]#4'-Z<9j_RSUrF<E4XnZ1ےrw.k1ˉt:5ؔa%v,M[cAR; ͘HRB@50bFɽ3
>/iٱΔ4ͨ
G:X1ĮMQn)E4P5uw6sThBσI,zLK[%7sg![2/{۔m<q]bi>s<mMZ.JcO}vS<-)&?ZZd,2xp1\{coF=jZ8u#!G <S.HdC/Χ7xs"]VbLILn9YjIy2[q5fAtSA,$Z
lR.N,15#sn$p|JZH5"]ň,5@Zی$X,T?JtY}l7+ί-5FƬ*4sS?3>2K$qg.u_ZYsE씺BCsȡĻ^*}=!CzEvȅ>wYHII\,dK$6I\*qDWHlRbvOJj$z%-'GZ	`k7_]r%lb3gKcpe^rÒʆ|.Peu^
9v)ع)r[)ͧsŭ(Y/+us,H!^FPy~NbEJT^ef`T|}l/4P[Uts(n}v%R_$3tveg"c5.[ʬZL`SS?%/:W`\.Y%pi9m)*Ru,̜QaiY7fpsDuyР	tEW:stlM:suЄ8ױaC3CC+CzCnfx^bKu2,{+Y*j+g2kugh^&73E*U6Vww8ջ5>>a kl`3e
CxS2>
_ՠ3$çG!OixNhp5
Yk81|Aa2c8%
c0m
bf5܀kx6p?o0|GÍZviUn0>1I;>p''Gx5AG9aWу=FbyjOBpA3~`qKFTݡ\,>e5\oi15'02[cd4GrvHCSIcxW0ih+e
6(UXjM"5lQi4oHNwoF]4*\/NM(~i|}O?Gڂ~HGQKlCSA`n,-rܢ.Pe
͈iimˈœX{ Jct8jZpѵl'q`CGTutzDLզ]E.?UF2xtҏDUs<Xdeprr`u<Ff|1#<d+@O_8FBij
H1ٓ)sBn'd	e-	T,aCZO-5?k2xEhڴS[O	xY2s?8*g6kMi WQ$Shi&d_WbqQ%qRNbu0J$Ob錊Vd*RE;aP=8:?X:pnD1?EbKkFTOˢSY.xjgw?usO۔X[;*N?[РrK<2rC8O[_E.k+H=
IPc5ޞug78h
*)<>`%WPK#a	    PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyPairGeneratorSpi$PSS.classNMK1}ck\*xz$ԃTR{(zi\Sْb'Ń?%fћ'7o>;.$TdJ]jU	[MʹNAa3vW<\s+=S	^,Z2Qv/5a*\:8Μ?,F3ex.VdS&U%Fa+BQMlaP3EF&<<ȅse4
^F=LjrPK_U#p    PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyPairGeneratorSpi.classVWW[ 
ņ(Ѕnt<dL(u}hQ_G4$;}ׯ8(6:>'`c(A4,i)u"'H3qu*66!bZUV12t9ΡH$"E3Ɍ6M7]6
=P[r)
l2ٚΰRZ3l۳v5rK䝞c\dA6F^@{"*Ӌ6׬L>'LQʪe#cC3;yMi2ld˲xpKJҚ'Li<Kkc.:+F"	Ts9dyS`Bi!U#XUEK/L2OM?_;
/9)fvOY(^ePtTpJ)(WFaU	2^2{ޠ55β11+9F5b4"Ϊ@u4I݌߸pptmNgJfSVTlGS;'Vr`hr=a*HUOfEZ*){?hݠl(ÄU"m";7'@W"/ "C""B":Et#`X'* <V]K'YDX4D_KmGhC?n<bUd15+T[+Pg#N7jO]ۿfKd3ZO8E]w9#5?kuNr>QxM%\yQF!B5UhD3<P6+@2əkCzuճ-6m2mΪ^*~2kȺX#L؂Q 2ZqZƃ6s؊32`Lvl!bmhέ2v!%(x3UF;~8Lrx^j+0݊'#sp`f8d%I	}p%~r0%D0/a6G$PS(JFIBy~CӘOx>?|ߕ '-ڳqSsF6g_h8Ht-mBz\?jws+ZRk7{"]e$4j]e],[x&q6>k~]_µ4{ז/HU"R6avŦM\޻<y/0m(߻?Ya,'Bʴ?P'KH)9q	_u/;x,A,e'ijo1{~
ǭ,kWYZ%EZ2>˕e|tWvmsV+Mm7PKxs    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$NullPssDigest.classS[S@CK*^DZDE.^2S/<mӝlNũ/ 33 mSFw9n~`ZS&2u|@KI32Ie$GF:Qg

"rf>^FrU(Y"]e%]E.fKEwċ+s	nQh95klYgIҬ܈6TENizܢ_-K
GWuQ*³AXٚͭ;[,\mVrSt<Wq,
KRi%<dۄ/GR`:jyErrc:zuqR)}
7`0{"D9))|6ژ#%Dw	N3pQ%ġ8#HU0AJy	aI(ᒄpF&p-Fm8+{Rȸ.K,x@W_.#/qZ|&Y""-"[l+#Kh	1c~೏ISƄ䣠pN'YڣR<&cL͐@K%4Jڧ$%OVD7$=X";i5O}
ei5;bASsM{-2Cо_e#?(%_FR$ƻL7WЬg_Qܓ0#PK,x  +  PK  C:U            P   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$PSSwithRSA.classPJ@=ҥu3.U6P(*.%N̴rUP(qRD{>?^ !s`8-LĥJWpҙdm2J^m2JR%+V9$7VI$*-
%bgc?)7B4Cl13n7rFf0(Wq['ML&AAv!vqgt&Zf8¶¼66C'hݯakt{#o}?PKD3    PK  C:U            Q   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA1withRSA.classPMK@}kkchITh֊bh]ڭivJ~^

 )"w
3̼7o?^ b W	
G21u8n}6bT>T2I-o1"7
Hu}4yʙNAJ$"Phz{@iL:'VF#e:
%9Ue,*ǒ;w(9B¬`9*mq[D.Pթx+m9.f@216J,Q|{B~113USmjbriXckt͠crPKM3=  #  PK  C:U            \   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA1withRSAandSHAKE128.classQJ1=c}U(غE؅8Rq3a:Tg*(~Eͽ䜛{`+Ye1N0Z*!A;dm8='X[F=->5Θf]vzsfPPqQ^JBput+})3%ڰ'Œ^,	ZTHI>)sfmz-M]m+?VIM(_
geTP2,W
fhQnh
)̸<f]L`?|C)!3FN`
S.bUhM	XzDjGL\HagxA[ژ
-#
PKtŨ~m    PK  C:U            \   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA1withRSAandSHAKE256.classQJ1=c}U(XDET,(T\LN3C2UY

~%f| ssOb),F	K-drH+YN;{vèeҧ&6=4Dh"Ыx3rݏ
H%=*P*_
7J4эjҮKzZx$hSa-V&m88r\oU>իaįk2n]>aՐzVF*_*a٬*hl`8\aE.Q\|k~е#Ag'	KK*[:r,o> 9.0Df3P{-XtmL{PKMЁm    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA224withRSA.classR]KA=SS7Y?wk+QQ͢Ġ6AEqefg0UDHU(tΝ{ܹg_ <*ߴ!CtW6Npd]$r.*Pa +k'!Fpi$26A8Ҧ'ѫmxb;TP%Nd]v
pIq]σ!00_ig	y@$&<$4ޛ8mM'-e ߋU0&%7/a,(bG	>&1c
EjqX7FZ$S40Mbp<&4@(ciz%r˿d3¯(<PKLR)    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA224withRSAandSHAKE128.classP]kA=f6~վHB
y"J桸찙]f6,(B)Bg̽{ϝs~@|<QfX{/>i4>E7q)Srfu>.SᙰbreC*0Nm/ҙs)\(.<SLrS$D*0|52b"lz#ep)ZrD5Ա̪0d8"$=a+<K}J]kWgce[;X*\ךhLZUIN┲&i<`T`5R7jepN9U^h8.qR篖xƨjkl~?G[PK,ly    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA224withRSAandSHAKE256.classP]kA=f6~վHB	їy(q:;l&nfM%?˧?JPJ8ss_3|C;mt?O&Oi-D\
YϹ˔gax&\ِ
Stf\
'K;+k;6z+nLH3^HY.|J;:Ql
ulD>*4=H%1}OJσ!`RR׾$X
?&<$VUnҵ8l<I(al UDM#7Fn"Saox-,K܄D"%,1>(-xDPK?Cy    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA256withRSA.classR]KA=Sl?CkU!dZ}QZbP D|'f2Q|
*
VApΝ{ܹgﻟ vdS&Ծ6:ʐ;9>߫;0lvĵNɞiDI
+*U6iAO؆*ٗ¥4ʄ(ςAMKGotH_떲\~zX-u"ЈgUhg2l$ōNt=KJc4{$L"1^&EشտX餭^	Xd1y8i,"2(g0E%13xE_aucE9Jc*a-F	ߑQa(]_E]
v?+>ٌ=
PKQ    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA256withRSAandSHAKE128.classP]KA=SSwIFR(ȨRHi!<q67ƒS?%(t{9
c2R}ϰ^`O7o|>1K)w=aXʆT`8HmӉS)\(.4SLr4l$D*j0|kd$H*RGrca։bkc#UaaTo:~y==_EOT^t6T_?[ab*t$N)I;~%,Rj
TjVՎ1ʶr+<0M)^]:5*=`[6fxzkl0 z=PKjy
y    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA256withRSAandSHAKE256.classP]kA=Ӥdm[RP%RIB`BW86nfM%?˧?nB8ss_?~x%PhN>j#/ᐡDїE;ׂ;%Vg3R%0ʔ
p؈_&S#gR,V\Y%\HIڄ*<^T>32b,OmrCep	ZrD5БԪ dxC*I7{U{<<=g2u{nȫNGʶaY;wkwk,L1Q{Y!]'F~봊"
9PQ3Ulx:CdoX8CcSK܄۔E"
slݠrQgV{]cs5}zs(PKyVPw    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA384withRSA.classR]K#1=Ѯζ֏u?\}Dчť(TM4uҟS xPWaͽ{nInnJobl4!C/Uǰ;%{V}%ys"Tـ"kϤ؆O3/K#ť'i̕	QG6->0|#EG*RjɭY@F=D3a )tڦy<=<2,T#aB	3I*>;byQI[H8b>}Kqj䵻F&3xA99E,(὏i"}Zܢ)֍Q	c(URvm&LGN|t^(!dX
aO˄>ٌ
PKZAP    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA384withRSAandSHAKE128.classP]KA=D7YcS$2 $Ah0찙t3lRg)UzH8ss?n8
V*Xe(.Vi^B1ëYܥJQS)P؈_'3#s)\+.mf	W&F9~t{6
O~U><H16PY.\>VKn(:2"Y?vI%1}OjSkL]'s_ce;S8hLYVO׍>`wQCP>jCdm`X8Csc,K܄/({*E[Ԯxvk<bvy3$-P	PKٷ|y    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA384withRSAandSHAKE256.classPjA=nMkT,4dJ[Qhh+i8I7̦SGw
ABg̽{ϝs
1UUR5dX}1xYћc
E'/&Fp,.U` Lـ
dfd.bť,D(?XP_LHSPY.\>VKn(:2"Y{~٘'LGCCՃpټX4NuWceaYpc5&јH׉to
k(T>G
>`(wQc^vAat)eR<yhǷX5XcslmBނh՟PKʘ&vx    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_224withRSA.classR]KA=lWm"2MЏ@J+t2l&.3>GI"h
s^=wu@
E<(baf;F3/j;=1)9:q)}ҩre#0lߑvE^6_Ӂ#)\(.(SLrsT?Ii_%=)zR̦CQ7S%NVEf;^/$ww   atDGDcCyu߼'I*5tU"Nx_&]=Snf=,{xxxb+!~I#Ӕ(Hs1,	[X|m"'\'D'`{o1M0Q	dX[Z/t? z
~PK}    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_224withRSAandSHAKE128.classQJ1=c}c#
VAՅPQj,GH̄i43$S媠Qb8{n3-fїE?Aoq圠G*dZl	Q#xKˤMM,8=YS$B{@D-ۜ$vDT@*aW^!ut'})3%ڰt'Œ^,	ɰ
eRdqus\|O#~[q]L+?LԳ4*(wAdz'irG)0b c.u1A5aft-)-#g#`n	&0pY 22`ɇ϶i=S PK9t    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_224withRSAandSHAKE256.classQJ1=c꾼UH]^*J-EE_$f4uQb
D
	{=7&fˢrNп#Lv	aecTJ[
vǨeҦ&x	Ӭ)=[ Xt@omL
u;N"*T 0ԫR?xjip:ДvВSmX:ՓbIK/WdXJ_[22v8:9p	.U'ʸ.tSϊWCYU~U YV[9#Sq11yD S|RBWCf0lkݖ͖0eO,Bt0g۴Eמ)roPK&gs    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_256withRSA.classR]KA=񣩶C,Tm}Џ@JO2N2g)Ѐ??N(VApΝ{ܹg_ `EL0W׏&i?m2/퍭;kq.Sgu.S}aEWFaX!m?eNmOӞ})\(.m?SLr %ڴT(ῒxfsRR%N{VEfvO5/	Cm` @1@)@`aMhLU^m6o^ʳ6 EՒ8%ݽJhQ*(c>\<_RO[41r3tKR_6>'D'`<b2VaC0R`qg? z%PK ,X    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_256withRSAandSHAKE128.classQ]KA=SS7YcU틥 7BDل@C}bg2QgPYmA{/sϝs.x_8Xu`P*ok}@ˮ5L3jiLHm`3!g4,Ic*T(0#4_*oZue 4e&Zr
˧2T,k'?/v
v8(:(9p	~UOFNG1jȤ#tL^
oiTXU0Y7LjQXS9L2f\LBPhārK)3Fn3>|-Ed#=gcB*Jan}3'ZBPKQ^z    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_256withRSAandSHAKE256.classQJ1=c}շn[A"6qDэLN3C2UY

~%f|HA0{/朼>>l}YK;Rd V6V׷?£p5LĂ;a5E"gkMR͙IBAnID
zP*__-
\XGw2nZr
Kz2P,iiŒKk^&u@/Y9.E񸛾0Uׅ.rjYjT@=KrOJD67j<2Ma8sǨA2ȷ)%t5dC0
,`ȶm-Nl9s+O_v0)LL>|M[t PK q    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_384withRSA.classR]KA=SS7Yƨ~#2>JTEL'ffv(Y>GIR*:ν{3s}'=.qS	mtbǰ;%VC2%O:VUlD{ҎNvjc=9<(ǿDD꼛D*Iѓg6ep>Zr؈|`UiɰFb\K((0,ړabC6t<JRyYWك?8azOǇ"I&m'e0aCb2Cb%B	fڡ)QcP|m"'|AGNsg#<c(a]ϯ~$zW(PKVI    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_384withRSAandSHAKE128.classQJ1=c}շD*HԺ*J-E∢0MfdZg*(~"N䞛s`Yd1H_\ ܕJ&{YRZ/lǇ[;K
f2PNO=iО-lD:QKg&	'*JzUB|W48kpAc/4eӴ3TNdX%?S7VLL_8r\I/}	a2]>iՐzF^t0lVo$V/Ƞ?\aE.Q T#~@Ր#|o7ۚ.be8cl,=!
G62]Lv16kѵgJ4PKg[es    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_384withRSAandSHAKE256.classQJ1hu۵]DV7R`qEٰMfd|*(~"&rd&/ 60E_9AT2%z퍏`ms`5LĂ;a5E"gMR͙IBAnID
zP*__-
\XGw2nZr
Kz2P,iiŒk+^&u@/Y9.E񸛾0Uׅ.rjYjT@=KrOJD67j<2Ma8sǨA2ȷ)%t5dC0
cȶm-Nl	9sO_v0)LL>|M[t PKas    PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_512withRSA.classR]KA=Sh4Vj?}2j'KR*]Tɰ]f6>w3p;ý3 ë"Ƌ`1L|F
_6ї77I/G58)ٳ:s)}فre#0ޑvE76Rgd_
'K+k'ɝDj"ntH3閲\~4:U#2?n$@1d0TB9>&јxGy_;I*O:k+|Ġw(NWK┼v:i~TBc*=<13xxBiJ
c'9専9&*qL|<3ǕG64<\`i翯_tzB_PKC    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_512withRSAandSHAKE128.classQJ1hu۵]D*HPQk, ("1l~O?@ CΜɢxNл-Lvay}ysu#<:X]";FM-5Nf
Jz5oqfPP[qQ^y?{`WK:4ѝ̴vjҩKZx$'|*
I>)KAA΁KpQ<=a?mE5K0V2PҨԩjyt0>cE?
JW2c!f1`[E'l'/{Be^6>&-L{PKI+s    PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_512withRSAandSHAKE256.classQJ1=c}շD*H|o*j-E∢0Mfd\ ?J`'^r9yy}|,z%..nK%wX^_\]6Q#xSˤEM,8=YC$B{@DM[$VDT@*aW^!Rut'})3%ڰt'Œ^,	0
eRdqus\;+O#~[qML+?LԳ4*(u+AdZ'ixG)0#.vяAUa;Yt-	- g#`f	6ƞwY .2ic϶I=S) PKvs    PK  C:U            W   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_224withRSA.classR]KA=SlׯVmCR(S}(1`Ⓦa3fvXh?%
`U(tΝ{ܹg/ x]t3Sja6:g(}a;J[e+!w<O<VUlHNwe20r(bťYQ	뇱680+Iѓ6ep>ZrD5ԑ0a!=.H:=xJ|OV*0D{_+&y'[C]eZ 쁎E(!ۿKlV
a1rK>3sX1U+C4QcX6@bp<7c̝6yIFa#]'BPK
K    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_224withRSAandSHAKE128.classQJA=SS7Y5FjKQ0d4(C}n2ef|
(һ
"8309^`xY$Dq0?1~{mkYo67e
m4Lp|]$?Ca@ʆD06'ȑ.Ov)W&F95l&D*0|~җ/lz#epհZrDQ5ԱЪ0?L.O|}QֹCCŃ~]$m<mb&<$c˵87/60QtUS`+J4]c$9|kJ.M(ZAn+cq^bi1^ܤtBPK.q    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_224withRSAandSHAKE256.classQ]KA=Skԯ/ KРP(찙]f6,Q]@8309u
`e10V0L|F;AQk4e
۟ąNɁLI~Gʕ
`ژ#R<Q\a\XqKT0ғ'lz#ep>հZrDQ5Ա0Sa\λEaG<e>÷K[O5TuUymk#ZdL|y.J┢nhS?	PXf}LPj l;)ǰ~^Srm'\h+WNGiU_s#,\>-tBoQPK8k    PK  C:U            W   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_256withRSA.classR]KA=SlWk[PFCm-d:6nfէ@(P8ws瞙_jE0L3M xU~WgęNɁِTI'+*S6iax#k#JXqiipe"mGac7֦:&JzRMtGY.ܰO=:w
udD6*L52TI8YPP{xȰTkO揅xHD&ɵVk7qnMviwt/rG	yuV~9TrX`,âGxLtq16cr[Ja
T/F	_Qz1{RyPacdGx:0³^[L	WPPK'F    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_256withRSAandSHAKE128.classQkKA=M֭XP?T0d4h)D,1 ݢ
2efc꧀B@x/b)t==wνnrSeL3Lg{|!ZۍZcmLvÛ)9:q)OTX1P![e:4r$ťeyʕQ[63HKїg6֑\рjX-u؈|hUiOF.y}QsvI*:)<5|xdL|y(J┢hS?Pds >Pj l;)ǰ~5f)X6>h+c,b[e	641}Чz=PKL    PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_256withRSAandSHAKE256.classQmKA~VE``"mKDA0d[.^݋%?(\Ղ.<;3<ͯ+ _XD16:b½Ǎu2d3ąNɁLI~ʕ
))1?OFpy,O26oas'&R=xf)˅Ւ['Vf8}&RIHwD=x*|S
{$YWQvhLx*򐮙)yCv~^0c
/}1*CFmD8û1CatpUT.tFx}NUriW#yW@[E7PKTE    PK  C:U            S   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512withRSA.classRQKA^<iPJ}`@ĒflK~O T\!UA.|;3;}x,LuavO~a}?wwd[ݓΰ;%VC%yVs,Tـ"?Yb_ȡ.v1W&F9N69D+Iѓ'6ep>iX-u"S
thD:*H42lNMCÜüCښ	HLXFzANZO"t(Iͭrɠ}V|PWeq4FF$SDbp<9c#c]~Vfcauq?7^ޖtf4PKbϨ    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512withRSAandSHAKE128.classPJA=SSwFkmTZ0dT,)j%mffv(>*(B8ss眫 ㍏>j'mt~w|wŹNɱLI
îbreC*06?ӱ)\(.$SLrk<ITԾ0=J1g6=ב\ɈvX-u؈|lUiT{DT{<y'I*Z:(8}eo01čyYf
FNWA	(`9VTV1ʶr;<0MM)n]ҟ%UV}KSMnl0 z
PKx    PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512withRSAandSHAKE256.classPJA=SS7YӪ}*-eT_"$-i}g20Q]k 3p˽9W >MOXfX|m|3)ޯ0sc	w=aHeT`MlO)\+.$Lr{hڄ*lV<J169ס\ɈvX-u"ȈllUj_T:	y(z(y~V5q"Z:([>²zXDc<]#yNg_FK9c/|*V1ʶbr[;<0Mm(~|2+'Vy֎SlLOoNPKx    PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHAKE128WithRSAPSS.classJ1izFQuBEEEqeL4urUPbH$;yd	2-AD*1v=0jhMo2"ڷH.(>$\$BR	Cy(UGt.+g-=z\XG#4efط3TNeX2%?	;_lɤkhL;9p	Zo~ÈdYՐojD6BmL2ʜ]w1l-XuaImIRl"{c(=amժkc
ZC
PK0)c  p  PK  C:U            X   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHAKE256WithRSAPSS.classJ1OluڱjJlDDTԶ,T\4LS!X
| JE
	˽nr^ߞ_ a34AXj̝J%3wYtـQ#x_xHM$8YOB{@pj>}Ň8aT(_*ahӫTڢ]jrF:ȶДaВSmX2Փbq_/vy'}=v0`΁ CpW&?UN-~^
g1/OL*ڬӛ6V)$Ȣ,]Xr1<ARBf0.`9ے,bZ]ٞEpGX#{_ B
#>}[umL@ȾPKYh2pc  p  PK  C:U            M   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$nonePSS.classPMK1}i]֪WoK<x(mz(.CM&K[؟SAxOGޔ!TZW)pEF\*/'=SOLқ
pd.\ϭY,Z,Jr$IfZ$Wp&EhF"0<tdk:Rx.;UE]N3Vx1޴X
!I)wZe9rv/`jc1wkYj<X
PKj    PK  C:U            E   org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi.classYi`,؈\"\F6s_2؁ .CkyR9@M64$=M6۴iJZYMCۙ7of4Oe Lp`8Á)Lu`T:0ˁy=|́;	Rnr'Ca]jE_aELj
U+^(]HW^SaqjI`{ϷIZTmP$5IP[W3ohf_
C	joX]=wqqU>b
ZMpEݪFlԨAtfT5Cen؞Of4"5s_5_
ݦMN]onjP;n7!#Uz@3c5@(BjORȭ&PMAtXٽGo1i[5"'9f34#Zw3;1ö3
ȡzZ`0R۴Ļ03z_riȗX[ZcjȇhuIEhTjm^'u)%5]q@K+\::
YO24e{0K3M5 5|j0@ƕ["kt-H/(jՂaz@Bq\UnZS'ts⧛>r"1{}7Z8(gzA-k"X;m\Qyhs̈MYR0UӃb3R}1,Vlcos3'ݦاLܴ6I6"}zs;"u2biӕ:eHLoZb֧ab;3LM3)zEN˼Sϔe1mgj2/%3R7'	xbïѠUM[;z㞽
'E;`NvpnP=yV#
yk̎v;k![n,}"Me\2ݸ]|WFsQv$DSkI,*#۽~u_󆭍JM1k<MgǂMv~$۶<~UsڋCTsOF`G^b00B/QȠ[-^H=
2
A~&v1-EXNF~6<ycas "\<uZ87i8FĖ7r1pyf||8+C-9qrY)g']{F$ӢD.ll#cdgרh(B\qmzޯ<AuBWnX.cAw{̌bԍ &]8"]iڪQ.Su"Ӻx:DG5Q1폗¶+'hW6Ue[&'DAF&-^wUJSK2`rI989ȱ>-[9qlıcn8T=~f"ipr{98G#q!Gr8q縈bK8.希#s\q%UWs\q-usq#M7sq+msq'Ô~K]-^q S(]UékܛiWFs'2i>Bc*sɨduzdEC,2_ǈ
+ͭ^H~g'T4.<&
|>QY{ ]Nݛ/s;s.B|mTla\Y,ܶ~-mk3ɇEY%}n_G[̧>w 3\ُ)%c@w
Yo;
}NI;aO<O4ܦ(Wp?+X
Q_)V0QpwUp S0Wp
ƟbUBKBce<Ѣ9F"YBFB_,x񦂳Ok+؀*wx{Xr,a,eِb(,D\B8P(T2!	b#xMua6͉G$t'e*,'Cl'xRxZ?No3py6ى'׉n6։#\qBLb!;ɿ1Bbs8*9+<'~v
6z~f3օsh~5m/[TMSfI\l
y_)U6]bdfW%Y쵣1kU46YWm1eYy_\J}~}նr)%Wy_\J9rXJ+)錶(Θ=Rcrܳ(W+ͷUmjx'H'[7YLQ<
`(\" %R~x%Rx%RޗH	_"q%RFNK6Qk

>Mn82v0Q-E!4Em?,j,= ǚnJyȱAB)e	t3;*Oa'[d+=U̪(tVXܷ]lHY;Vkk'[챞u3-LdKͩyBB!QOsrtA=pȸ6VgO4x7tS
=vZ"Zb,fNVGOu$j9Pc`1<Aҋ7aXb-2ߴ̯5g%}O'0A[؃.aY+ٹ!JMp{뇤 #-9PA1XSzJcO-eĈc|ڀ
?}EzToW7|!%xrӷq~/Dt>[uZ+Ob8
8-!A!>OK<rtsj>Zh7ƍ^%wyALM=xzWIk詋mfb1\<vvӫxN&P˾<plaے|QܢXXHad(σ%Ъ#R1pILU&NLmϬO,VN`Uھii;'mwZ ٌ8Hxڴ(wQ6xm|A+5'qw+]n5NbeO\FIf<W
2cD0^RS,h>"vnPΦYn;P0\޶(rF$gkr
f6
[ٸ
et&,I!1^OSNFQc!G2~BA*ń%s~2/~'	 "ᕄ_"5«	Lx
W%*u_#7~Foױ[Ծۄ7Nxwo%.m#wNdQ.M{Jx/G PKlz	
  +  PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/rsa/RSAUtil.classV[WU$	Aҋ*h[2A$Ҋ@IP09'tfɫ?ҵª,?P-{>
-KRL/j32	WK3Q͂tvrLlcP疳Lwp
g֘spc4+%4K[clbdOZ39lr=ozf-n8_}ŋ:r;3̉[Nd++\L6k]q ڵzI5[bL3gRU][O褚N&꺪FS	U%RҙlV6:ZQSrQ*-4)a1հk^SRsZtf+Z"#W^Xkț	󫺭$ȐQ1APnp'p`{coZVgJ2<,*FZd%?1I	(szEȮ;m1i
!AJSouXaQҨT)qQFwe\ee\qEUI;M
잋J:2_
RB'^z]8Eޤ'lTR$Ը؆S-6>*|4/^ۖ"qDkBI\D3 "hG7k-.C@3% ?&hm70)஀{~| E 1 П2!,0ŌY[я9	P<HB+u@Hq3vPM_C/G_- I&@"i"9'O=-^zw(cy>$<sS|Go4IgՆxitr7l5+FX't$lC߬y M*@%
pl
!fCk/*y
Ms.YӛQkӌhB-hŝj=ݢDz`4)CFv9^u9vlW_}MU<=/Lzn5lW*˅ PKI  \
  PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$RIPEMD128WithRSAEncryption.classPMK1}ik[=(_POk6lS%I,O ]ٓ	3dARHah|$3WS	'|][ow IK_HnV;^/\L;aF*|W%Uڥkf#AGA[=tus O0ޤMfjBјfmTF$K(PAzvC徔\uWk	4>L;w}%6(XZ`|brܠ7PK9Y.    PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$RIPEMD160WithRSAEncryption.classPMK1}ikEدCAAZ5i%I,O ]ٓ	sdAJHa	h|%[0WS	'|}۸w A=M/$aqDnH&̝0N#
+lƍ*˳P5sŇ xo ǞL|P::9p'To&YA35Z[h!vD4Ya
1E넞P/%W՚kt8F,7!g_@ti
v}-߷X7
PK톷.    PK  C:U            \   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA1WithRSAEncryption.classN1OG]Ҹ 6`M\1	r4CqL:dF2vиQ~}{~p-|> ()	4w/MH.H2/!L(<}	ߛu,-Bz&sH?#t<Z	FUћ+n,}b/CzhXzr6En~5EЯ{F+!WAANV-(aF6V
7\JU7'_Eʂ
sFT@nXbKZ56{fDPKĻ?  ;  PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA224WithRSAEncryption.classN1OG+`SE6chIš3y,WM| 8qcos@%l#X>JskpZ(>}Ǌ'&$2!ʗJĴ6[T:Aueld@//bsŸ	uBpK<lt$=)H-91ӓcWn$	}p{' ٸ2Tr,,[ʕEdsAf}gVǶB7*=Y8jFk6
(ڰNk^΍RB"&(-`>VR4H2K+X}lL-IS.
_PK-)e@  A  PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA256WithRSAEncryption.classN1OG+`S1b4q$˱4Cqh'b2
C0ną9%L!ȝ	)94w'{JA$S(ʥ/$hۭ7!{ךvi>̕ǌ1/yiՓqM(тQy{z
_zf
؝	OhZr:PB¼`\M#A4!bMU:@dLEy,(h2Azɯ;7Rr(A)	XH| ɚ䴅lRVߐceoFd7QPKYA  A  PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA384WithRSAEncryption.classN1OG+`S
,4# FWLf(IchPC\xޞܯ (d˕TҜ8\f{ݬ	BӇpxYlAN"R|DLnH	3TYFR"6WP'CΆ\HO8ђS3?W̌p#Is;i)MGƕdaقEpP."C54?C?e4Q9Ȁ8V6XQ@цu\;_wn81AiAҕ\Z6ߐ`coNtwQPKT$A  A  PK  C:U            ^   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA512WithRSAEncryption.classN1OG+`Sga0F@&q9f(I[L\a4|( ƍ6=_?>_D)W3!9'puvHp*>cbipTr5f d۳A526"\ȳ*&%2o8T$\QOǣ7J0G{G5W3cHNABӖqE(-d-,ZYʕ49TSKz%WJil#mX%ȶ~΍\Ok	J)LRI,o&d
(V_kl<Kl'ԼPKhA  A  PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA512_224WithRSAEncryption.classN1OQJTchIP3v8t&b2
C40~}}{zPAT5N{MV'KodCqThr
Cڵ-OH;i22£>UDpC<`q(^8\Q;C`T6߭Z)nOl_ݏ:r:𥁔9iV|>A-y->Wr/HI&ՂMd7a@jN3)j{v61{'A╘TD*|\4çt-fOȾPKN1H  M  PK  C:U            b   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA512_256WithRSAEncryption.classJAƿQsu_xUtLZaDjEAW
V6;c2;X]=@uEg̙37߼= AX 56jMK+C"f㔩(>i4=!O:i=.ʹ">@a4p*v#\i@\o{1ѱ,|i e`@ڀAQ,O i7mz>kUԵ 5Ld0o"	yTw⟷ΤaC/\XlWbSrG,>#s5Kҕ8>6"PKVTH  M  PK  C:U            a   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$WhirlpoolWithRSAEncryption.classPMO1}dO^R
^$vD"?e쮆ٓm^;3of>? \l	WB
{M@ZH0؈S*kd*t+f<ۋx0"7$3V"&ϹՂQm|p>Pv(Omqd"y̷PCCÆ2y7
:B/R/)םָH
5xPI-R_nC;)G11Riz%+xKlPqoÚAoPK+    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi.classVkSF=8/5B)I^M@8ӦB^@H$3v52sTw%h=+x\bjk"3|V؞ RRDU癀fgU`βlɇa1E.֘KS]nLӰ	j̛ai1A{"ϲfL7i睢瑝Eaw#Yd=+0Q
ZI_ٺZ^EPq6Sr䥔~$kjWpOsJC(iS{ک괩]Ya.WCs0ct%ȶ1IcH6e-m<N&0ɴ#5,ITiKU$˖yUG<bַ/+q%<87<2:{yݫ[+S
P_zpU<6U
H"w:__S-4-@[DcIBϒ-w[Gn.'ED6TD\D"D|&[DE|!⾈"zE	\-kJDB{k#sKON^;^꺿<MHZ֠a J
Ϭj1cA0-3šy\r%95lg*?]ff4C9V|hpEkgv RIL^O^y3b[GǐDЌ!:TC?w&?6^pbHGo0oVʇ(A7Y#C?3-}t邕2ɶh?兀wҵTmL[1Bt=y#lw4*W<㡇^ݭWKOQD轥ȲK.ԡy`ts0yl!zZ#~f`;wSQq"Q7ߋj!!lޝ&K.',BɎj
ZGp(a!	d[x(1,zDUݢ׸ӎ_7aޯx=z1?nK_կYNg6E3Hc
Pi\wO < $~ENOM§?>#&tPK`i  
  PK
    D:U            1   org/bouncycastle/jcajce/provider/asymmetric/util/PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/util/BaseAgreementSpi.classX	x>I;tmd+m`IRc"DFI+b&th,@]
j+.o=}χΙ&i{W/\!<L4Jx̓NJy8gPC9sx<p&xXY<%Ym=1)`RqS,"%b!I30v+d*z,Y]El='CyÑTZrH-&5TY7UUKz2rʆZ]1+`Pe
BU
/15y=][_YsuμIgݛye8awM-7&[[[3JnLʁG0h$*	pDut7khq( nlvb$"=&h|خUKbuU5'}^0y
JbA/1	 ^LCev:PZ۴*|biշ(jMD}dv15~̋OBT"CP1DC@@9Z	7HKD)CR"QUIm*u$+G'[%Fbw[Lx%i7+_&NIm#_
1# 'V(;5ko=mٯv?S֡B,XZM
/[1ڪ͠Шi	`Y5az!է|et~A	I}Jw@> )ѯ3SmJ@u_g;+J%I,
IO+N _26V^J#M4,^p%//Q*h:hr8Pw܊BnWQtڥ9
pr/mhjc +GCb0夵:C;b2gvO֙1"oNSbR@伱
0broDcր3
rBNDH0fmSi{㾎DcAWh$Ķ &qBUTop)9vo2Ī)3byrʞR;E]4uq}N(bų0;&ʇ=)N|)*a+{8p!_}悒K\Ʋk.]ni*ҋՑvG®D4Ho]uipFrTt-s{+ߤK\
o1W<bآ8&u-_VMdBjFDZKKpSj,M62wji70籚uSQv}oU9F'I.ܑJt:"ԓJ׋s96!ZW.
J4J
ǴST6=kN(@)GRT58`X11w}4-VX|FqٮH*ńxg>3Px}(Y*%?
neEm&6spwsprps [8C<#<c<nIiprc=i193^~̃3ǳsԑ.;KϘ/%p4j#SdIf:%:ZmhxE/n1w)h,M˯<q-Ӿq+KҌJJG'P(K>-ܒɯ{'|Yfcvd+.c)jP10ݲKdy!xYddH+Đ?ܥy 	cTQdk^3)~l0
?`\	΅_`B 	!"XJPGPO&444,'8@$h#	$v AL HE"t\J!l !r+$U	&Z'Fm+._p0
"V4\LpLf`%DSx~/@-A\D0H0 `5Y	f_臿 ko, `[?\ `?B+c&L`b|,Vl`	.	L#( ($("N0`&I'Bp*,Jf	N| (#('C0g9y6-6ty	$X@dYg,Z ;`^a	*;`A^cYuhC0Yzo!XMp&η@G
?fuV8J*jV!)!
?aK	εgl~.Ά`5%CVO;su'֚II=į<>0uӨJ C/~vwߢiTg9O3U"Eg'`Y%0zțc`}lݹ=菲5Z(
ѝ¤^{~Ȳȗ>>΀x8^{/v`s&q
(TF[57߮ZKk=Խpgoe`
23`?{xO"2fE(BC9[ kZ\`~gZ0g+Xclןۇ/
9<Ȟv&?v|d(.DόϩvsWwCnj)g{3z pZ뇃s9x]`+ZUZNAt؝#>vK(9vNr&ٜy=AT[[رL/{p\cmƳ'
 kt38a`Q^B)f1-l7dK?{ʖP:Ϟ1@QXJP:G(؉i;JԣZ]hcpN}[ O#}K|Y:ɌTdYJ>?s

-Yl 0_e+(DHa~v!8Pgj懊!8<Tst(/fRma5MCp9Wd,}OSR{pEy`/VdQYّ
CqL]N1ͦ|~Vab{vB&U룽uvY/вT aB!GSE)»vPhEd`a_d(jM72]ˍ/瀇SPyq[f2o`zg֎sDkl[ښ{ {cYlć'Fѐ v,"LfG6&>ōWw
Ǡh
+k
uu*>f_n_c`dbз
MV:П./:^> f&=.*vsқIςvص26ED4A#2aیĝF"u&#HEĉ:6AGC	:Ö#hAl:Ö#'7
F&#qj#FH	:Nͤ#.fbmRJj[%${bք9	wS97R?PKI?Em  !  PK  C:U            Y   org/bouncycastle/jcajce/provider/asymmetric/util/BaseAlgorithmParameterGeneratorSpi.class[KAcnee]z(Ԃy	z0DBXzAW]VETCEG.dÙ3`#	Cb]ÐZ	vF]lׅmeg[G~h/7Qa%.(˿(_iat\qD)UǸϰ:=Wςȗ])B)ޒ%Ｑ\6e]#z|OCOJUTo=(Jf-$,X,$-,ڿ[Z3ܡFX²QLۈLȦ`c6fӘCW0LhF}cX1KȜ!5z#8f91
rX-%h+PK`rg0v    PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi$1.classRMo1}IӤ
m聢dUQEB*6v
?
dh~
5ln,}JH	M\@zMUaT]h*qV\ՕV!$ZM5һKsh9*Ȕ'x@5'&_	8>lƚ㺄}UF2c
9R`#Y(|x*34n
bF:rx3_`o~O#Iw4`~<h\òydu+|8qZB@Okz*wy?boM%vҗN_ona
Y3V_D[x^PK"ך    PK  C:U            Y   org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi$ErasableOutputStream.classPN@=CJ-"\(l&&.
%.\ qj()m33%_ibԸ(Q;g<sX^>A~W/D$􀠔I:#p7ؙCs13/dMTlI0N4
)r"4JLLe%R4"3DGpzefZ(kM**. .r&v4r`Bxj{E\CW83u
?6^JZ_i] z^pBkct	PKg@    PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.classW,	y1F
زA%C	"0DDG"֖wjeM^IzwG:-'3}7i'm:Z˒OhfwfޛyorD#%`eEfG 	-qôb>oZ6$a^hcΔC<,c<!J9N]V);=c)V\.9Y+)cLCE!~KXx̝Ky*䲦ۧFi$A3oQ=i鼦$,Rc9UKSlmOŠb)Ydj}jVI2wh2
b
mO7+ޜsjSV_.`?thvhdw*Hk!Z=FN}cW2;BX;]TrgAV34Wic(HDNWOVheI
i9KX2Cr>EH4,&sMuzm4hӣirVv8*GS"/%Hrp&ƙ1:l)yU~4ZNSĪab@j
m <ؗUϳ|`;kqqƝMV)o^ejU1̀Sd|E*ӲJ?+UV zIjØ\VtoWZZYJkAl?M0ZRӒJؔ̏*
g,Is4O꼳7TrGvUWf]9ê2jɼqi^QJɢh_~mn$!][J
^SͫPT_jLl})fL9񧗟mVWkm^nW^3g4t[ K.{z
/p@JAC

O~2
x#ӎԴt<f6RBcc3[J	j2GNkA	mݾe)]ZkN7J9VcUMK*J\7>{҇7k>c2Z(7YF	~9RhXT1狓5w3lͻә\g:݆t,inбoi۫sr-jXW>-	gU&@GJ*<"2z.˰HVkT[<d-c#MLQ&Ɉq>q> N|1xB-;I<i&a$FQ|7|ɷkQ.E10~ebQL,fW?Y+0(&(p!3)Q3Q<fo87,|3ކ0y~sokOA7wSku䐒?vU4}(SKB<Er8Չx ;:ěICuOƿԋ=w$&|B<5kNg19	3XKzOL$~?40DZG]-_)OׁZ4:>Oǘ HeQՊuTt]x,۰OuK]s"&_pA/yz<#
npf
'iՓyeLuѿK5Aw{)|gkL~χIRn7cXp^\9}ߎϗ Oʬ/g5kL1<M7X<\XtZH#D;i{@2ݘ.|
G6x2~e\&&k]>)ؙ`$^Ie=+B1_Cp{ygF(e+@%zb!/[ݗ zB+k'IA'2s4gp~RspuQ%Xjc~<GӀZ2.{*:nZT"{@'
^Ŀi9d)Fmd8hm /S%z$	9L{X_(
^>|+`]UHYiQ^PK60    PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi.classU]WF&RI!m4!1A4RuJqGdy
+>q'Ť~Gt֖
Cs2;{gh?.UWqAEC*n@Mc,ЛHn0Dɭ4C_b+-b}%1K'T(2ra:E^zܫp3.?rӱ/>ؗlu׮b٫m2
($?Vp
`5-Riuܲ3zYx!Lނq3,ނٖ0
%u2e6j^2gJG/Z_ێ Ckwma1M]*rayq~]1\=atua,jF.9VlPN=Ǻ 7a)]I]x_>:鸖^p¬痸nxbZ옞/xja~	m6^qMrSM%=mx<TЉ8]_QVc

Fq)*Tb54IsgM5?i^iN$W3V4l?>*|=;&ץkّ>z3!8:dgZ׿%D8#}	H'E1 -/W(lq? RLH1 GqQ`!w"6>0
:5LaQU)>≆;65
R,iPJR=4|u)4R|F=Kfw:zraюа.B.GҢiFo|[ M@<~N^󩿠bz<'}so 3Lu,">Cr(T+T*P0y
?fH^.y Ph'Aޟb"F|_!.Bw{1
R;{G#1SznPK%/    PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/util/DESUtil.classRNQ]i -^@-ȀEAZRH$KRafSʴ @_|LD4IƠ{
M{֞g1a<C^2x&O%M׬4/UKܓS9SSVйatLrYTPTBaf" R'W"PoAЦ)y^*332x.5yP7TzA[-6,$=曜J泚e 7ty[UR%nCҳPʹZS
Ⲷ%M/]F
5ٔ_dr
,ű*U򦦨^_W-C{=Ih֜sCbn\.CW\p%{%HsA*{%Ӥf/~dl=7\תQ$B͸+
!|p➈&ZF<[60@7@
ˆxDMA<B^Y%:(x4UZ)2!FaTծdqQlE2{#&te'vp'NĻl"}~;?qz~~a~xO]qfk?cjcGHd _0}x>:սPKutڔ  {  PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/util/DHUtil.classTkOA=Sm
e}[Pʣ4b$V$~nuK6mC
@WN/R69wf{g?}
 .tvAbhan-3xUŘ|zWm^R,Yb*U74qnmTè
nRm;_a$;l׸͖m}6}YשW-QESr()Y=M**[z`CY5y+'I)*/kjWB_k)I{ɩ\P˪RFWjfWǵ¢-aUɨ\Λݾ)+M]^,񎌄~	nJ%aP%ܑ00jn
-"p h;ѵ]Tumox2+
MV?UDLRDsZ%kM?n._XLqFh0+O
Lх(f]<P#'|wbOǜ<v'Xͥ9	WߓuL	iObS
'BpTY9~W;'xqL[i:g2'Vk'V[=;)alwqo!NGoYt?XC8zlQh&˶(;'JXjoPK2  Y  PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/util/DSABase.classUmSF~dQ 8}	&żnLP&C1Fo5L)|o4ݕq6|ٽ{v۽o a8Q	d*m	dj7*VOr7ZBtA2<]l˻/!~TYf)yQ.
XxX^lD.a7bM	6-[<ކnөow&v8eE	 `al9EMs[~MMe7s%
^'*S..jgSM-ҬydE&7GIMugĹwÉ	ЂLȊ0-k] cI.WF+^IzŞQgFExYp+]COHto1ܚemqػ4d7 W35N:nȢ'ʵCj2Ԫg8<W	H^YyN0pAePd\qCƸ22nxGƻ2ޓ>ըp/@lWH# p2U8oV}9{:zoc|^ܩ a*0ŒY&aiW݉A?y)g]{vy߷.Q~
ynHm+\VGDAQW=cWp
\/bjb-)*>,Xge>y_xG?Y_p\aGѯylMw6ܢuU0]O-6H:F8  +A)vғ'LgN'
 J(FKͱ:>އdq~O^QTi&:W>4&
a[lA	f"uEsLd)%F1}J=%!s2Ґdi%39 !]h!ënfɜ3 Vz~<ɆgL~dLg|zIfҿNBl5BgU?GvgP:Ai@1bdl
$PK    PK  C:U            A   org/bouncycastle/jcajce/provider/asymmetric/util/DSAEncoder.classmj@&-:IeI@!CGOpw|	ͫuJ/'!߿ ox$hWJbOV{z,io@;_>hՇF֪w{SgV7w4X+>M$-eZ}ߪɹ6H%~Nx^\"'y*H>%!1F	a1%/IqPK=    /  PK  C:U            K   org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util$CustomCurves.classU[SFd"	+i 1TBM]hl!@/-"KfB_+ڙN^vK3Sz;+ 11Lggo9{ꏿ
v W$OX3A\_Puo
$D
5	gMAhq	1PLIbk֨ݖN3L<)!!t:\33,fCs#\mVe'cƦنSV7ɏg9e	U[wUr@?m``p#.!zemխ;if;CڣEkA^wU˾|?BUF%];joz[5jAX}46L<w"nJ!<ll^]$)!_y0j7Oe׳xJI^>/jVF/NuA
Y:J뜒Q;eg̓e񆌷d-qI{2.1@
[<A.$/){AbԻozgyF'I#@dx(ҭ.x+vS}%\cˣ&7y@y)f˧1yr'^s+K*`LE"*. MT
tH
¸8&TG*.⦊>V
-
&Ut`J|"FA >U>hWfts
>
}n(
#`A]J	1-`&,K:>yQgymv,p|Hw!xyG#HZԁF1DD1HЬD- ~AH~|q{_{$<ulHRf_fRv_݈va<Fw7FۃŽ'<BE)˙mJ6ֶQ!Ba5r&\z[D*#+#W7F˩=<Pv#E)#9QSf#O>b/Jw/X"FEa80,/PKҍ7  e  PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util.classX|?[烰e0aW
Yt6GNƆ@4@4m:t#m:Җ-4M;MWJww-2i߽zOX!n+nwxrO9Ў½͛
y^-&567^ncM˂MVt	(ګFxWMM45ĚhN5Lok!]ԚvDTfasNPʳU
5UYU]Ba (muyl%a4-_ӵphlh) ^wRwyRp8Oo{m]oR7^#0&
{I4h1]ZQ/,&_`nR{*Opn/Ko@פl싄CjHG՘d-VͦjHz
3xui;ӽ!j.`E">^{8
5o@`A҂@2x04z3AnҶ}OLmU˨v)<$meOR"?lSNVܡi7'$-a-2Y9rHb)K..w x:ehcgyLQ!Wz!]s1c/~Wjl}(͹9hdXVi3>\-ssB2SԒP8Jywg8
C~7T7Zh]jպ5vۂjDhDGa:涎+^uA_X?_k$=)85kV-˗tih1:ئz>wOu!z5+$3CذrZ`җW_ӂurҵѭڭy1S3jpI~5c;d\aD[`$U
,dUQJŨL\ģ/Ckt4LetVaGRn+'dѯjиrYfu,ºY?fT.E~;ȏOWC1J/K1lF
E~J51jx[4f:9 =U/n	HhIB&	%lU6	Z$KVv	:%쐰S.	%x$\'a% F	7IYWBU)ꑰW&eZͣ9:2m=3ZIQ%8*˼"'Ef. 0ʳ߇D65IǬѽHkʱ;.E9v$9ڣZ>z
kk2Qf/ƫx"M^M 1Oys:j${Q4$1FWj̉=]YJ!;	+w%e;ϚlFg'>)Dsoΰ%&=6f̬		H~0kX&& vl`/ٝ|ӑk+Iۦ2/HrS)	5%&2iTY$owUře?TKsv?#3(ڼt>A焾 /l&YWO 0^.W奦+^Q2nEyd
AB*`XʰRl@:zu+`C)LG}BV0oTo\03V0fXdA}jEU"M<<`.ޮjC5xx'fw(
5xDAC5ޫ`#ާ`9ޯ`>`1esedix\T|DU(\U8`&`a<R>
*Ii,}ϕ.|NF?_ŗ~%Cmq2zy3wb1OD>|G?e
*㐰˸_f#d& xD egGX<Ë$%2Q8Gy㨘%vQ`c(b0a;%2^0'eJ(2c/0@⏉2qqL|N0	;t'،W㬌W0@̐q2Sdqwde^)Us8oR܉3/x-~V,!ߙ.aVqBtO'u^--ވc(e
o2W"T	COb1
a3SV
5褡6!՜1a;%` N-!jEb&Ex/\8˃b}#4gZ#BL%˓JaKc:ؘUel%tUTCq+a'JqA	b#/<&N	%My$`,L?[geJ|i;h\Y,*#㨧FM@dJwBZYK%3VH%F,zh=C4/|\8S"!갧ǡ6!i=ZKb3בyO:z?L%]V4R
gP>^ObXL%;[YfW%Ċ2(v6W}pWww0ti!nF
Czs5
mDB"d{
3CR&AV^,RZ[&7t
yx9G|s*Yx,oŻ䭧B^i,e[D#g?!Zh{[iXkFJjŕQֻ%ԴVA| ^Oi5C'!O\73d".OZ0,r86z0Gw*HԜq$D?AWe.**.zgBx0uqUW\`H,8<O>S 9Zm~F
&DREz +K+IJfRMJ<Vnsyl @Es5jڽ)NYIPa',5:E	^&6l9;b^EUm1c:A9n2DjzsJev#g)#3*!lxM\@bCh[2ârjNZAOPSd[dva$m8QѰ!48D8AWA\*i	(PKY7  #  PK  C:U            ?   org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil$1.classSnA=],RQuhbbLL6Ade.Dު&>eKi(⟺{f=3w')$V=C93+!MpO~ Z~t7^퉑l>͙'{9S2d()>St*Prp3r\en]{kw'RxOT|U`P;C;vSY~D5CΎ[-큒2V.XeR^wm~VQ]UiUHbIو޶Α;lS<,w,Sk9iJa%\5GDL0BL[q76.̐hݨEt|O|yJOul
y'oEUxH`X"okbqu#&S}Vψjs\Gq[T,	jCAaq @	k	'>pDv4_ PK/    PK  C:U            =   org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.classY	|י?[!ǁBlH8!j|l!,̀4RFӖ^镴%
I4I)ndQ9ve{tv>m	IfFy{	7_IL8Q':r'<Nj'nrbǜ8.S6O	e)<tu,T<w*}ʍ[Zm=ÝZ̎jZ15-;YTkk[Z\US;i=wZd3Z,#	OP{⊖T<ӓJXmV=ql$Ha5٣hɣ+BAmmңɄ:2ĭW	xH@Uର1cڸaF6Q:;PLmm=٫=Y}1Uy8WBxԈ2˯UHQD*Eڬ=6Vo1%*IE.5|άUȀCpXM1-72jʡXLS,
nTw`ٕǈ*>M!#ŢAU+xQCh|W񮠀iZ(VYJZ)dYt3r[_{XԜGaÙύ%~fiF4HNDNҧH_+zg!9V8afF&Ow݀%惴GޘtG($ٓT-ZWEAݕDac?F'BJ7]`UP#h	5)4@rҵԙ᜻FYbpQ:ВTD^aJ(qG($]1-GX9] #j"X2AUM9Tm>TEV$W0w!JFQ4|/{qJH.u"T^J%:HRGȖ[SN$i1AM`@bz 7c)-4
&Lh}'ʱo%Fb~{oh\9[p^[Q-Kp&^[dH'c~%J%h
PI<n<y]~mUǘ\q6m] [ԎB?R)QՐ]P/pU[Rsfե{wD<5]0+g劇oⅳ`t޳Nepr	lgôz(/"YOqQ^<=	OYOɉQO(aC+5>ȹL]SgO{2-1#o`,w-綯@Kַ_[Τ%%a$pH{$p#n	KJHJ$$%< A0&=NHJxK8)>(C>,#Q	q]=Szr*t.nTSŲwTFakMt* +*
rB@SN6'ޢi<щhU:FSHNRj;%Zf]lg<'7x5vdsJw#dlڮy%]n#{mv^F2_F>MxCJ<ɶfyMz*Y`+㚡yDD>21d5OۻB螇ʻ@O)}h;,[>4/s6̷ÀݡbUgh_f5_WoN`cvA-=]G
m+/xUP6f{NTal_zigO7sw;\19eL9M3jsε	~慕Cjўj'(z\
d04Q 8p7N,qZ\#cKv-/т&*)S2-bxo+2U3t2cx2e܁_q3#N]"؊K<ѯ؈_a3]~C;~M6}+[-#+'c/~_FG?q~(V=~39_/e_83p
o.|c7a1.fi;-wXoyq'Mх/.<-\0u'مg\
}Ή.|U2yD?'1lpb%*/sBrb
.y4i<͓y̽̸xI40,bXGօ_F2,sebԅIbśn|?rcᬨap	un|pٍ/&7nz7^UxфXX' [@^	d0t~LuB|	kb-;rx_q|[<^RPcͤ*u`+zSư~_
H_a1t0c-䌰VuAkG^pkLa4aLL:B8`,/X`uAK5|PCIHO`53"SP1jqj(Hy|(¹!$%IfM-E-AMY춂.Toif	?3	?J:wM`+u⎾os49.aqJ`[MSME*g79&Ž i훘k)vjJ<_
[tIxR³?A}hN4T*#x_ǋ^]z!<#_R6ӯI4>1ݤ>,iDӂٹ(>N?@h)j'ŞW}Y8fLlˊya)]AL]FZ~Qy=9ee	jwWD§/cqS+ )<t[97Q!n%0Gh/]d\I326Җ<GDIq_XxH?;Yv瓹Ꟙ]XqVYrϚVd7c\HxA7S!_[(t$hDeD\FaeJ:-[ݜ79qԈv4?IfNoVzE9Դ黷PHWHMdL'|fgˊ;y+>%Oxxh\4ҍj.d%3blKiʈ{Л>sؗ+pHLskKۢܿwI=E't^7~h7뫤
/'m\^ub?LNSˊ2
>fʈji;7VSTCZ9L08x!#v,yq[ίO-0J.*{z2Z)I9gvO_w:!/d8u'kgRV|xR|$#J祬qQ
7IK갛ќ۴p

;hVtSj~-l	bYhnX477l|'YuorQ:2+EzUܣ+a\9QPK(  u&  PK  C:U            V   org/bouncycastle/jcajce/provider/asymmetric/util/ExtendedInvalidKeySpecException.classuPN@K<M JMkh
ʜ-	DQHΌV	#]xZ	t#r_jdA̍d7vRdiʜI}GrVWZ.!kkYnMHTEِˍ3\ِ:N3e#OjЌ%h6]	'`ct@ׇ@>8hӐpƓ6OU\'̛;7_DO4-b\PK%٪
    PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/util/GOST3410Util.classTRA=-à
.a5 
TOͤa25PS}IJry,og $A(s MAh
Kc+Cŝ2d'#jl`.E
Lٖ1t&#<E[RxoH
9f63+}kͪ)3(Wfog7SI	Z,[{l'9S	+2g.8;<e'hpv^Lg+gL	rL1U[Q9%Qٵ4YE޲%LKV{&)ڳ-3+T%0v([n	L,VQkUTɸ:"1!cAgPpV9
5\ЮᢆK:4tjኆgÑgk>Vu3/÷|gZ`RxD&*Mz2ܪT+W&NвNWb(et)\JX}{7W/1h0Є2pMA t(hUЦ4
V
aLG*[1`VG&tbNGWpL*xЄ0f&DP=ЁtdѽnIn_:L	:} VEAVj'.Ni)xGF t^1|AayqSw3ӷVrvEwy,Fxc񴀥/lqC"]Q1K2"bOF^GJQF;l>PK_"    PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/util/IESUtil.classR]OQ=Rvɧl[JJRb
HÂ6>leۭ-I|5Uo2ٲKmf9glǯ_," "(bTĘ+"B)Ab6\|1렑UOH0*cR$=L._\/<[mQiF!TQ1->=WkaB2^"o6E[Jk]UOTPyTRl
0̛VE.ԦmpY
۔_<jr{+}ꪦV5.7,DeٮQ-[7r@!T.7i G3	W\p]
7&SgbRl
|-
A~$ #:DsADp;qqw4~cBa8gi5F[ՎwƾZ280Cy7'D(L;H|
|K'7`%caiɝOx@ΰIyhE]v;D+BkS!P=0
P)Ax?*`jlr
PK,u,    PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/util/KeyUtil.classSkoA=R.ZV-괉IQ4Bm>-.dHWEM( 4G~{ιf_ < D`<xK|.E5^f"XnɾǛ`/Yk9r	WF,(D+fӤib5] <<}E^݆c,.lFͺI{]h3Uتӟ{'[OAT,b1Z&/1O2U&<nц67W*{rLä)
i
\<;;/Ir*QH8SrB
F!{ضˮn9q
i ~5/ɤ,601bSg4,蚎0n`QQEL/cI[ӘMs3´sf@IaYV Ҕf'O$;[0%7@ZSsaFF{9Mf
}u:'>:)^OFG}\yN;CD~:AwsHģrH~|\(PK0r!    PK  C:U            T   org/bouncycastle/jcajce/provider/asymmetric/util/PKCS12BagAttributeCarrierImpl.classV[WU	C-鍶X@JIlx&0ę	zן^|kPe-ru~'\	HC9g	>7 N@:r@ۿ4)]Ɔ7q$K1Фh5öLF'X`k&mS[،-TE*	Ӻe+Y3LMOƪbE
w[S6f'l6alNgyJҶf<S麲+*.6N%ˊm#˴[K)ck`XϤ%Z$+aRti+k2]ne'YPPpb>
\>Up8ݪh;\⚪,6
IR)FWL͇aJ1Mu:N
^C5f抢2j˻dTjzr:bUw񦴍bꡩ,H(CD.8%[GigDq^D".D#m@ȡ;ο=ՄHurky)Tw5i+b9FKB
sL-?
V|ޚ@WkJ)R뭚)xJ*(r^42zA*nBр:_eś284фI-|sm>{[;촌+ъ	Q;0'!$\}	A,JqPp]w9aIkP%CsKtM<kʈH*ГyV^E:1e㉢QEG_il"?//g!E3÷]0LdJC M6Zs@;*-h 8'-um4?w\x'Rꤑ{%֨Gь)0@ު(xMoOA7Ш;?V~'c4AtZFO(1
/}%)<,C|cbs_<2Ws1x&R1B\~6<>xp>v"m齋Ll }\[sAE:/v^]r
pIDNPK}.  
  PK  C:U            O   org/bouncycastle/jcajce/provider/asymmetric/util/PrimeCertaintyCalculator.class=1O0۴iK*bֲXH%,@T1$Ta`aaBbN> c0\eJPJ=Rk\#]'a.mV*"kZvv(QJ*[u]WUY-Ek+_!CBLSI+#|C{ʌ	&>gi#-~`~ <yq	_
qyڼ!+0=PK.5*   (  PK
    D:U            1   org/bouncycastle/jcajce/provider/asymmetric/x509/PK  C:U            `   org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory$ExCertificateException.classQN0=+mƀD"T	
&JqKW *1|):9׾?_ p@;K?Ai,ʞP_y<b3FcWʅT?)џs1Q~ |YAGŋX(s:??XϹf\ErA)Gy

X=z,6DOk;}Fjٝ
HLNF<r 	X5QF-=
g4#nPH7`q,b"Dg\]WƦ^5ul:K;߀TjZ+/PuK45Q[h.:憎vDEPKctM  o  PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory.classX	xTo2M^^HHH$!3R!@iK>&d`23L nv_UjtoDɀiE"n̼Yh{ggM-vLʎvj%>Vǋ2Ƕ6k@(_+0m9woy[C@MW]=uJwGP̈́ޞ)Rv iTȜh!ط/ӂ-*0ïE@?qM?j7yP$}KMY֤<#)B[C#YDC܍b͸7ӴCj'^IƄH
LTՐeZmb1_36oߩq::ab탑e"gwÔ9;='
ءE>_(2
H\kFՑos_ᐕTCouj,pVD@^߉iT	kȣGnA
8^\QsDˊvϢ)U4_ɡx SQjT_*D5HC?P15foyh;jzO
fTyDѸFmU(l#~5j5Zi\Q|F%)|Sa#MoyŘȳsoQd6g<|e+xj]'֩qÔz,lF#~u_D=Ԩ9*̂?rNpY5e\N+pE7Jk,DwGֿ28$
);ͻnkG1[g!*q4b!v%Z=gڻ/ΑtQ_P켰WĤDYTq{cZU^<^:3ƌXΖ-a,a$/a$\(aU."a5.Vk$\"]z	JLO	%tH$Sf	]^+[B-./<j#%Ҏ^ľ;]Mђ1 aWAagkU,GsGbCmmLǒ쇜,9rin$9ݤI
l+L#m:s\$cG=Ț;qvEx`s.,iT3ŝ/\9$ɢolbP8꣰ͅHHD&ivm1ob
R-hTBf>NӑX9EC>X5e^]2t$r]4zD`!5?	˸&'ؑ_vfDb2ٍ@W9N'gj޹Ue[6
svs}xk.f
jjf=
@c]n+Xeh̻Upǳ+X[6\sqPLۯ`)R
RVQp>ʳ
cŽc
f㠂3l'YQg>yQVu?`9ބʱGGE3<RqLF?1؉_ax14ė/d=10J
ȸ_b1SqӮcڛS1Y[odr?`ï~[1dxi2n`n2G?q.fU-
WY8-G7G~ɩ9P|XTW6-@GdSOsi}G{}Ƥ&}NЪ99[zbGٳN QEkLT5	hJi@֔hlx5wL,) Bnv=21JmU:&f~,է1aۏN5&S%q|/p]!."$V(0;LP_GϟZ阘y/y%V51Q:k6ءDbJ%6sKd8n2t$tX LtO	fX"t]^	L	LWz3ꤠe0|iRru9⹓A)RaO$ғpG};8d5%	єݴ5?Ybh죨s61f>dd5C:j%OtS {/_hgD d{nB=J}<Nʄ8gsc{Zʹ1awƄD,)toox]<íxQPPQqvA1h- $MrG+39؜1q ŽwIT5ؖCO4kBtJ藰w.2ðAHr=_vvѼdrRt%hdt2.,uidwhUew]:X0>NARVK8{@N9<r:y"#4~LA3߭FCM{eFmsk5Rgxg(
6yTtI^fćZF6#Ocbz"-}{3ڰ;]5s[y4y+VǍ	m\Mtf4Y.>9wM<5ݩN-3:ԄH9J@gŶz1/>//R}OQb!h PK!]
  $  PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/x509/ExtCRLException.classuPN0=MG(t@al`@RԭkGi\9NI
$P%>BCsΕ'+	ܱ̤%p8+rAЊ~ӄ/4BO'%+#UFptLxYnRA.J\MY^-hiy}yC'ٵL[)b3bdd(?pb/58@A
~.	ZYĵO"6,۩kv;7l5o	{PKWR  }  PK  C:U            A   org/bouncycastle/jcajce/provider/asymmetric/x509/KeyFactory.classVY[G=bmqK62j4
 "[2h@5=S=v,f<KꞁYCvս:w_~p?hح%
{5Ӑp]wZ]Zvנ--fo$O3#WHn|2+Xϊ:w5B٬)Bm)ƅY^Cg>þ:(FfTs)}dat|#-!'zv àv1}Dc7m\/c{h=!ᴛ63jU_x}!̈pgCo1%esL8L'lokF["خ$mⲰ
U2lf8TNJx'C/Q'&)bUvF{%&|F7fZQmÕ2mW|ŧޕQ,txg<S8OW;"R_lI/63qKMlt:"#d RHz"e#//&+_V	2>&*HQx{VmK̅U舁e\D"빫6Eg2ÊlR22ZfJJMIW9Nq8qG<G7GEKq\BTx$EA"6UV^CQ6PK
z둭!T"v*tT=:oy	9#QklġE1ͺY2@뵰vw6^2[b0po8)m4pSJLxEv(1k8N{:%>S5:>1%L%HĢ0VCS+MF XqQX1J{)4}>	lK2efw'1F'_+*oiNOױShAEShv-t_xo<S=j>&񰣵
  oO)iڔ	][@VE4ͩ7I'qP888
|rgT\(O6<?3xs:1_)){:NtO7H
:z:
PK	m>HwWKӉ49] )r;<apJPK?j  =  PK  C:U            @   org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil$1.class1
0 Ej5U{((tp(x4
%M$^x(1
|`1A3uNE#'[ܵw^Intu)-o[m-cܱs_|^+
BQfʸZWWSLZK{P99F#
1N& PKx
Y      PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil$Boundaries.classSn@=ۤn
4CpE4@	^^Gn/HH |b66~J9s ֱbZENT2Lbv!?Z?fP>~
X
H/};n+Z}ayQqc=Q*]ðpjH7;Nۇ6bOX=la`%ţ]A*:zzzI+k͉
9<tEĠE1w8{9QPPpV`<9sj\}S4|JFN_7'&#:4iTduqQztaIy,4W4cEk(IT4^?l3p}6=E"BLgghFǂEmd(C(nL
`3n~/U@.SXJ,_apsB)#JrB1=gֆX=:vY9ΏtPK+    PK  C:U            >   org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil.classUsUvn7FPZBAi)R
S.iUnN-nn/:Sgao0/>70H&-	3LLowG #@SR𮂽
)(xcܗq-N0fΎi4s4°8Y'GU;id-p;IJN3WQKIF˝]c73ܤLn$}tŸn薣O4yƳ3^r#{I/{N/P %h`ւ)n/y{Fjɦy2236II`x;"bȍe,CGnny`\ԋiMIl;e*/zIi#{.LR\7\W?kҡ2X1:-ѪJ91h74Tgeqp<Xe\tG9L9#bLX8B'+.UiGFfohVeqP2>`8=?9F7cb%xO{9*nzE|nC%|~}@PbXŖ+xukw+2QNtqr=*t)Qq7qd4Q
a(څE.!ڠjFL`׈a
q
oᄆ|(8z` UD1gU`\E>&8'D\E֏Y^]UJUbJi!.ZzQnmgGS
P3̫FfXHqD(s$
@l&я&&m
h=ՙ_1 rOHB@"j~Ham`ϸ#ħJ0GRdVQ/>JqyBS>5BW0.>COjt_zAre-\HϊiP	i?OF_{!q#h%r|:R[>	CX}SQ*rbn#]=^mU|
B;1Rz6$+caYf
D
R߄wc'eX%GtM~k3K"@!B!X0@X<D!bo+Ѩ{ 8$4tT!H+}<j,(we%9" PqD:PKI  	  PK  C:U            C   org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.classW	|&osd7aA!HTQI]6fwQJ=kL+xԶ^j[J:}^$W~af̛yo?ē VU6La
Nf0ˆ6̱a
lpٰ		X*tEU;y
)ܱs@(_#Pr9ذ.|xPsEὁN-
]$t \K|-
}qB?)K67]԰vs#EtA%^!W;s	,2
ZdaV4m\Щ86_[[hmW	ȶ=gҕVI{E"Z5~_hIzG]du"~WmL@YFb0fq
DE}vE%SASW(ըzZҢ)zJ@ц<
q@)MXBn[lY[4"hݚ?NZiҞg#ʺ}1h!֕iz);ڢ@8An-Ѣ@(bq@3t4á8;k[/,'4KI<Q:3&$✟0۷
viQݷfg}qmm4)oJsrsmLssMlr%A_˛chJK*HֺD &钘O>ok=n3lYzOo6s1&ɱ]Vd59F#ܭCD<isYnC8$X1ap!9d&gՊ|FVs1zno/sYC	yt]ޝz닅{8iҾ&Enŵ.8>{^nZjc 3{ő=bśBQ{qMEccfM_
i~nMߒGcgP&M۲G3zh6}zm=W;_0;mz]O@1ݟlL#W
D0^d\IX8E|2c{<i::sktP`3%"rF7B>)ZN^\$HG|$$.hP"M$6J4KHJ\".YR-[%ItHl!qx%(SG@u'd$IS>VI{Fe(WO=YQ˦eeFuUƈ|q4~EeS!W>ҾQ&L7Q;7ׄQ
}t7'#O`VzZH۟I_uBkܦwRHr,ekU9oK'k\1%.x(GL[Ӂ{tXVjG팣j3<V֏DzA!
1y	gchaxOϏ/6z %yf&(ڢL|X"&
I->b&@L+dSUfRiL`rQ&SцN&N&q/c*I^)nL>b9>~0لϩXϫ8||A|/0	c@<<b	Sх&H<,
N<dɓ
"x^(N0yNA?R>DA/K{yڋ?2>^+*&WU5&bkku&?UE
C,8(8X
n7|/)?Sp~VVG
KL~Lo
b{o3yŎk4qa;q&g/ҎxCxS
V&}=-f>T;)Af00[ؤB#XHS~Ϡ(ŞePpBXXkVCV{ʭiq]q8)lI1s6˚~aC0JUR[R^bHCS^q!-6$'uZ\IQ)W2Jv\:K@J6mGQ:堨)VݲKHzӪ[>g:˜l!K,ˌ{[ӖNΤጣ뽆{uN EZ?

BNz
ŧ1KzTMĝarISp[Nt("+sjПTA	CI"H	cxNW%%>7A	[V;Jx0Z:n>ICáz7'Ey].%JɕQ頢]:͠X$phDX'g3˒ghgpRwRjahBvH=ѝxBG984C?j?rCHǤ$y7Xۚ+.!QM'ybȊnNxRR[䯇ڞzg>Ò|k%X2b:S<⟂h&ob%BP|(AAT`@/+(=Rl.q'fLT
T?}GO`_RYh@X\$q]~&$DwǄ!
Mn
/iP,cӫ4\8󒢬*-)Qs<:nx)l1-ZeLü
.fCwS!~n%ӫ[3HuVN+2b0=(?2 q*%ıfww8Ig@YЏ2;tV-ǫxk(Af9N	CT/]FQVΔ8$qpIP!Fsq
U'4JD%r1~ּ&xf.<e|0"~jzw5@Kn&,|	&
)'"~^֛^*=~jεo}˱oRfnwylt;JfvܔGHPK-3    PK  C:U            G   org/bouncycastle/jcajce/provider/asymmetric/x509/SignatureCreator.classmAJAEǘ6*K(BU
sNYtz==!s59[U/&$)&Q.J5ToyU
'U#F:z
EyeCqǲI.x/1lݫ_yVܱiR%T)Yh%tu-):zo#Ʊ@]䔷_LgiFyRC|}h PK%a   /  PK  C:U            I   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLEntryObject.classWi`TW,3//YBIm2t i+TH44	HXcNfYhmw뾀Kkₚ"LB@]@uߪ"mݫ})9o,!ǹs=}GNX&::P4;P@5t`/CPP{feYz<E̤ޖHx^܌{F~N*['yڐn$z$Ag^-Wih3Vnyv4=;ii ?H(y@ePLMٺ?z=")H ߰="Hu,ar:=ǵp֯ ZOb1=B%'[JI!=)- szdxLfϹgCZ:!i+ЬbY@y2s,PVKdl#<FI-3N4)bv7zhQ'SiLL'^S;%kpt؜go[Kj:;q58["T,'qV8Bn!ߒ<5EyٳP?ѧmC.ݲܰpܶpX]IP<OԮ]쥚pd$`s[6d,6xFq
TT2FRTy-5ey^yZ*j1Xl
bƲp(Bލi$=JWZ5R'͐Rgz('.5]Ks,(kRI̝{oq̆}z*,$<b>71p'R;)y5SE|b43&]Kp'FQ$N
,*"77wq3n!6e/u,:09WX;LnLa+*w=Y0/(4.HF3(:z/X'qDz[%%:$:%6Hl"Ubm%vHLKBNFco|oA2[2ٓ:QLL=2ʉ]參\xgxAKffkCf#-Wvˈ)?dtaMګGm}<k?	Abvٶ"kWиr/kx7Cb}k~[V̈3oreeD98%`.'J)/&f*/+^~
lSBNUk
zm^֒e'qmvjObW]M
q5b>ިbxyxpx17fXJLZxQ&nT؄Xd1ަb#^&nOܧx*V0iTĤV{T4*}**ndTA:C*ǇTfU |Ƀ*L>$S<w9q aY&g}8&aRQ&'<GL~ Qވ'
bރe2 O>|G~|U *xL?Tp'/?WcLqw_(x-<u>_*߃L{L~^|M[~יe
&d|q|ɉR$q#ye>X_cDk	kɕZl3D'{ `LӎfFcԤ0n|Bp{78xaC&V6+@!QC܌JV,v7-\3(Af=xQOT%) JhP{v1=sC,썃MiaδplUv䃘UٗE| ͹vqx $_Ji؂Ƙ1ăK(9L=lĝ	ϕdV㢵cx,[:T7/Ҹ<J̤Ϩ8벏NRah%iLN3hA{lL[涝33in{Z%t&b'D>4H&d=˘%q7y\"r$L3\dk3.`ߚ۷p0ȓ5>%Մ̳}f#
x4?9p?JKS!?ᷧ_WݹV2JK+Q?96\`3M6?y^y8$|Z!(ǹ!go7}vߣ8@Ɓw5P΂hz~حG;#y*{	(%]*bL>RҢt}n_³K89F1j
#@i&TjƛAbz2WLP3˴+sH(4RL#ߵ˖35c#M\"ϱd8Y.7-g}.gXDa4c=cƘƥn¿KKG4.,ۑaQlufϨ̽Jr<50+A.G~LFQ+`XssQ`7* bU|p^-5żf*6aU"ꌞ-{
PK՚j
  '  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl$1.classS]oA=C-lk[֪nM4!T0ⲻٝ%_դƏ?xwS-`d&=3;?~~)r-Cjr,u/I!/|ɕZUK)U	wE+C>8<S0.zC)C)NR&Ʊ
Ša.Tο';ҟ_M9lieKc(PHûP1x0-a>{~Y܌Nҹ[mȳ)/>aeG	Rj`=c['R4
2t
9
K=:Cm_ֈYn_g[⥜ԣki^ǭK<ǬW3#[:p[GLG:q
[ic;
`2b7!t4\CGn@M:R
>CPzqߴyH
s]Ň-M`X+"# C*5Q&S}B?"XdT' jsԾY3b9,:ǄS`Eb
ViQnԍqPK#     PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl$2.classS]OA=֮,[ъK.1` и(qu:S
}G6*&s?f=sΏ_x
|uCq[iev\HndB 4Me.r/:^RV* Qf佊FaLiw(dߨX3N$PerpwFn^+h1<5wY<z=i%gO	9ޓi~İ3My	tTZ٤VyTIUt40pBтeᲅYyp!U|Hr}٨鮜:a ap0,8ȁ9
Xʸ;6\ܵ1g(46MEtɾ4`ij-FTR:.>[ފ$5JL@У̍-:}Hyn~cԾ	GȀ5Yi+3	V:<X		]UU
{,PKNo  &  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl$3.classTQOA֞W[Q

h[<@HHӇƂzzk
W|ek@@%737ݏ_C.aHm+_%ײ\~(f\k~/	.lqu^4;Rhh(*=tF_)! Viˈ/`Z2<Ǜ;m7]}1<Ҟt:wtz'U
]C%'Β+>ak%SyUu{$t<Df|UL3,s9"QITQv~v
.
oozJ<íqbzgO_c:P?:aB,\mܱblN#{Y2Ųx[XaHVp/Hƞ`n+"I0\|׼I,S,0ƒ 򤊾ѻ@-P )X^;B?"~/E"ħԕ'c\31:F>%:d`9S%F(IGD̍V/PK2  {  PK  C:U            B   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl.classZ	|of2r'	CE(pT\vٍ$*V-	-xjTgVE$ffw'5?{~k&y=LIp#m0mp
`
ؠ.mPaJLA
αl,l 3ˏ/|`𾜕j$<tN}4ڮF9qխ1g{S87}9M7Q09-`Kyep
|m
lm
+Y]Cs@l\㍪e
<A%]u15ἂwFڂlk_Վk!l}j4X`jR&V)@4mt.ib	fLS:s6x:ۣdf\tli޶65D7jMķGctbKP,JL,WĜj΀vκF>}~UDklFjش% 6]qu/IB1(1VyiC~V&6xv`$oomt Ba
voXF"%2pCDnT1Ҋ0hC$ZS#/ikQi_¤C^zdR7nk JF:b	bՑjt@3ůJJ"1?}HgSl&h cʹhRumzh)Lɖ&VuKh}6oPE՗HoEuK8Wh0á,;.^IŪcAU%I?ҟ5v-	GIմKH1%LެMF90#}AUxcaf!DN
&g%?%7CI>ڣhR %Go
1uռ	͹3|$;TuVDH\o<$5`z^j%A>^t"I1.0yI'#sM@6gg^LdC	.hmuhdyH j
"~f&='
j7lP#q{=H#C6%PKIx|Z-`u$4PS}.%1$%Z$}
T3A?st˩|l	ԇbjikQ
)JLL+njmLIpR&% `W.8`pfʤW*&1$qP[@д&#38[+1shB0/XQ^.'%эM\)Z}M,"hޚ2N2}UZ&빮9yCu
-!-HPXo`Rnīpj=|>o4Tдi5X'ebr\.9]eS'X8ZmJcZ]".D,B:6$|ک:jxJ%W#SJͮJFySPFꝘ[2Qi&3MK=Esyxk{LrF,!}	N4bR\#O`ϻɧV%),C8QFh.0V%kB-pZ=eF@O~^-m+NWU0^S?yT)4<ƯZ%gdf멐"j,
͝[*|#	G0gҨ6eQs#Ӷ[+4NX8ZuZ?!&&
-Vw\'{/~(G~,'~*g~.	.pE:&v;;! `;p%[^Gp}O//* u
}W:>yą>>UA#2uskаri4>??&U܆>g-D3kn0wM
i>e9lKVPJZG3)_S<!QkSS$]^33
tM!Rik]gw$<а~NY$&:)ԱO)!sHud&V6 Ar(;@
2 ;\J3Fk9UWV64|y`=Meu%B#􄐬s3h^xfN:9SzΔϲe̪fOvԝSd&ژ4e^aŀv;Y*2Ԯ}Jϡ>!?T-uXBAtg*,K+KbuxP%R9ő/'8=Ŵ^fLos0՝aJSUcC=~ayV_C2yVeBOu|2kr<T8{*uzUhmSL5[NVUKp4a
f0g8+ga3q@oeT`.C)ΰ_d+af20Qsa=nB73,đ
LQ
1<İG+̰F(02A&oa(Cr+Ҕ@(p1CA2~p+C[
;cSXU
\ei;/Gz@PA,.Y
ĳ٠sXlWGeHU sٴyl<>OpX@
(pkh̽׻BHyب?pRV2&+Xn%߭bXЬ@#ỵ3\@5^L-@@aCF æTp=ϰ!(eo2\#ÿr⻧Zax.sp
uca{p?}2G^`/~"Qcx2|[WXU&^ǿ&ew2;dxe/~Gdxp-d}#;e0#>{d8y	?~fdxXe8w0<*C/~p3f(~p&1b|LF+~ʘ[v3CF?ц e,ćd:V+c1znd8?qvXq0Y!x'C*c1^F;~IơBxW[cJ!a;kW3l/DG~C`
W߆0ԇѨGM1o"orN'** Xɐ,+%QJURzh_ %/Utu˽*aW|C|N+`1r)\q}y;ݻٸTWDUtaa;K'Xv.OXy'P;#f]בy֛`n<&ǥ*@}%AcE\X
mPwTk*=q&\b]+iPIt#Z.r5,EH|K`!dKqX
a-0jg{PsmT]ND(S c@E> 2)I i3$#*r{pPKKZ@!1883F"ȣ`Y>ch1t
eN㡃hh'EI.T_EwߝA1(@Z*1ڌ2ig<Jԯ'N;Ȥ̈K05wGm4亥mp{?ҜFFvK8[Lϛ%JD^a*K^i!8,%".
F{l[SP O['GFO+!^tsj9z,RTQQx {]I.|o_'psnɛ֗;,qiXWYo*M![k3u@ZN;#;dOM-wu>zCxM;t]J$yΡ'wKEID&]e(َ/&|C+ *Џ-TkrˉޅKOBɸ^0/
-Cw#za!(x>%N`%̢8ȈJt&l/\ r?zb:mu AX2IG)t$Xb`얖Vx[:X.|c5Bať(GN{:GOm+)pV3\ MdZ=GȪdrnaZj3i$K
q~Xuqix4KZȭsI3=nJKv5pj9j)&\&;nCpöB]MY\$8)4(~Дt
 ܆>Xo#Y-nCa]EXaԲuz)|,lvpZzK뱺V1iL؞
zn|J{0k[:3.UMKSi;{otCIeOO˅̏
SE&zM&g65wW#+id\O)\4OTa&۹!UڡP;!qk.60K!oF0p(Lg96"@s}hn!.;9Kfv	q)/HhB'؁${.JQ$6%2Ҧc	M:DF=ev)N:8nWy::o|RXuJM"t|hn1Sm[cۮĐ{Jc7v*yD]csۑ4h]^߰hꬻ_qps\sa~4&ay'ӚwR4]?	{;*6te}g5~&+{[kVtaz
҅r]oNFw yo/E+34*cH1r׹|
G]g3VB
.fW@AU)S{`cƌ[C=0JATCon\ugE{8nWt_ޗCFOf~x-z,	z~fkUNKBV#	Y)YlW՚k۠Dd\BP6[rƥ8}d2O*ydٻ^:.+NOғ0NOx?)Mj	pM<6mݕ|Š~o0hM󍗓.ǎd~KiQiHM>zz'JA= PKDc  e5  PK  C:U            F   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLInternal.classR]kSA=jTebynƛ{7}V?JMAD
>3gf眙]/ 5vgO-c{$PQNF:Ԕ:XjDnXD(eͥ$~2zUb&d%fLT|:%-y(_a4xt(*PP	P9<cڞ@̙Xh	)e?KUn1`qhhhr;+]FQw'tB,s! Y4ayqع@})J_p9![
/˨ylf\>f*mGX[kQ}E1.ym
,'PKB!  
  PK  C:U            U   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLObject$X509CRLException.classPMK@}ڦM~x҃4փK 
*u]bBMZ<QiO.켷3ouG/d9F YJ/^P.dL國IA7.Ӏ/8①>g>t"Ù7h1XzN
ʣ?	38J_?#	jG,p`$:*o*($hX
Mkm!iטmȠhBIY<Il9P-ݼ
!"H JXF]
*SWx)%j+X
;аس?5SMY!Q_P}JˍI0 PKkvP  Q  PK  C:U            D   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLObject.classW_Y! 14B6Zkɲ(.I%haa2b}gFkͣڢ>?ӟئ3Y6KBisνy;ͷ ܍Pmģ'|zRAUΡHN8`;wPAsxt<Vۙ4ȾVvS:mZ)N:i֘fȣጬMڎ@Q*|F*e9#
fHYi.
jMIj3t,&==5&8T<uH.12F6jy]hIKWLQ;g8&Q7#J;Fz,5FZρoʢ1tcx47U2m{cx>}`p:Pr|5ˮ54ۍ9#v2^<lMqcpP+	
6.
Z	F2vbDJV10N>n'k`*lZi/LܑLǜ2
KXau^ȚZ~ysւrFؽ8Ѵ=a{$!w:}Öf_,k(:U]k?eV7q
IE#{8mW!"!Fl"l7
qc;QQR"7X8=qm[%icJ-ݫ./I^2wPT4ة""]E]**vأbTܭUqO>UPqޒ~Փ9Sl_y[CѠzd:  ~ʽumuRmgRʛԼ6/nIϝ4q7kinkjmmץ([ܝHp93׷C-[&RlCDd]ezTOͿп~~.?Y"q]#xd7dT59)޿8_ˌ)qul;|
:6!1
'u4aHG𰎛Q:DPu܌|ZǇrXH->+*H:n8Kv<5mqN؄-GHRPR:"-+īE 2B&<.䴐)!y!_(Ѕ/i?GC!?Ѝg4m
5|SCHh8/9AX1Џ/
	F|_4sBSj[J%@bc;Z{yH
>W~0	bYQJRE>yO-_(QJ[y,#?a.9\˯B~LF#pVoO3-<U3x86z3hiY#G({	{+_@+Y֫t\Ǝ(ߜEux{/DM'݀jP1а}qvOn`+g1j~UxQ|ZF
l25ORy5a%zBKJ\h_i%.`Y@ .2BhWC@cER4tK"}PyғfVJVD۱Av@O	
fYEWT2a%"JUtK: uwB7XAXKP]&%_ɲeh.VّѼ(*G˭=w
~3qEZH	?󓖩^iW7E!^][f7>rYAWVz++#y/v_O<9R9lOӉ*c6g&dny&f2SPʨQȏp?PK<!    PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl$1.classSn@=I6B"
BB)IA
Bn6[guU<|blmTKk99s; aaVǐy22`(@r#DdȻtth;׮{((_3N׃a3B)@#1\TSwu~\x>ҙL
ep>H(>~rR܎w~{ze`ԁ':<dꋄ"<gO=!EƌTX&0:[X,,[ZY[-^<GٕZὉWv>b߭Sv[iٸ6pF
FWmQq,q#2簂9N͐nCR4#Ȑ;!Zm7\|[>$n
JݺT[#T&3FϸbǨn+pk~e.z@8oQ &UN~q/bIPK  
  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl$2.classS]OA=֮ŭhEĂE}0
4%)!&>Mvv6_a"(Fb} &sܙ3޽sϯ <Cϐ}/<a$mH@ښ-ׂ|r),h)ooF_7 ":gUwM4P-ioF}-6~G~﷊a+Q?|p50{4V(Au{!ÛIPm[u*X*B[i%YL3OAatAi'	=._n*-MZCi2ǫ?*YQ(WcQp1.\̹H.2O`a
NN03dQ:"b
#m;j1vxִ84,wxo7CERp
|>I KУM-}Hz1׎T'$=n!!&GXUN|4"W`y$K<:#ba_PKG  F  PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl$3.classS[kA&]nhKXD#*Dd
>.R1=9;|3mxj
}PFr+;*܎dX
mr-+!ׁ;2lXQvGADn:rdU&c'2ߍZLm(!&'p(Q?|Wq3gDS;<`*itJW t4FLsqp<Ci~5<v&n9m·z<8.XptШJ/3gpq\d\,㲋JU\MF+G7q!׌zaS=iQ!sc4͐Ǳ$wcxGy7(
. S,&D ą^h&.YdgI1nyQ>{$d(!IH'k'	5Y"@*6S"JV)6PK'  1  PK  C:U            J   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl.classZ	|џyz8J9˖8\>b#I	4U#"KFCMR(GpC@(J=iOz|ʖ~{of޼6~'❜K0	v'uqNNXNXeNXN8	'8	Nhpj'qB68%'o9?H y0^=Riv	Aw77Kӧ]mz9L]1=
C*;BXoDwdns-ϱۤGs;^}s6J<]&Jz]yIyd>56K	QJMrEҕˎ'@d:vCM9
-j[W(<r~?u!jmFz:B(u[{- v`[o]6&1; BIaD5
:)(b֣P8I>K==wx$'!N8DNs `;]poa-*8I=1.tx_Dl=4G7yۚC~,L.sÛA$t E#~^ou#p
u&!QI9.KܽQon8ȆH/F"^3K̄V̒?kLzԺQ]jOJOf@,XTjv/~ӭ6m-1[4emtViwmEqBz],;rH*|$o2rJhWX<	P^!
obbvM
m=E/
S$k&{=[PU(Xmgь:3̡Vkc[BXe|4"OMz(3LF^ǻvzw{5$hWQfi{+r*'ZmXlyn+؏lYq%_F/d|lu59M1%h
uɼfHZƦj	!mepX۽fA[Ya6Q68;#1?* i@h{`[ V)AHN
sz-Ek$H0G'
kٜ'mr	vsŁtRiG-zwz᪺N
Jko7Hջ|zOL7)AM'􆺪l³`P) cM()jƟ#Iƴ9ݴE]ޕ$XU#gZ䍡!Θ65H~TQ_Yd)m2ReZ\	蘆䦤-3plVʶsd"Oz,<Jd$ai;^
>za07MJ++S´AUD;&0Z##)&I7ҬMp5J`B.1$A
ە4KὋcՈ$aq@RS兔sN}zXMI75Qс̅,vm:ý|nGu~"F$_J2de7ջ-J3la`֖M4q$_eFCKj[PNd,R+RHlYmN693e12ZL(c,c̠Umnfvr.v,Blơͳ33
)eX8Xw j&3O.-B7-:[.xl5>ك\@R֎5JtEh/_de;P(ʪ7@agA锄aťUb>U(󞦇(s
eʪ佡4l8zӫ</$L#^VՏ*@5-LNfc&ȌnD><PϷw.
<{h8h524鍔ҥXmU{iZ!k:ɩqN:%0fg+>H}ѩ8Ȕ_%z5'%foO!4'b}l[0nƟTM609joj~m\o"!!7{7w(t{p/
(t6.OѴ_:W֝7M΀w[P
ȏy;K`tEV)p+%PAxHxD/+W(UU`)_S	+W`@A(C
<
<AU9xU(+U{
|_(C~
X(o+SQg
\_(K~Uw
^?(GUo
]wT_
[нimBy؏S$>;y*!)5XV,<RlTBѢf{ttn|l&iݳW5ɋKm32N7ETy}4c-MIeu7i}z>*n{jB-u&s_NjDZNM{RF&RiezRX
FL\4ƣnC	)D=^0iGABÕwAm*fdT~z)mhA'矟udTfKJwHހY~w4˒Jexm
dl

kf4ń_5cؚuBΐU6k.{H7XKFf됴4}ҕtB/SN?te攙CñI:MOsP|L+1yܪ
lf1'j-VK#єul<gldE#t]yGcVTGSo*XH'c7cjJ1wR|ǜ>J=Ve\Z6d;TZԱUZcUMoձEnʗ>5K?}LY1'cReȣ<MmcZsEeyf˾ٲyC*
>358Ҡ4ayo2bx=(;6[48<G>(FnaCȭLjhV(@`)jPK
?anEЫM6Nipåfíjkp74%vjpv1lghp!%_`،;4؁A
>pvkC=z<
ǈ0\Q
q'p-C5AwipNc<ۅiEj/ kp5C5~ǻB++5U\zZ
bjЌhp~NxG:
5؆7ȍlM_`i_Ԡ	oЁ5=|k`.aW>nݯĭԠ58`->aƗ	xIgd|6pc3|	qA!&
WexϫX?RQ_3Fq-gDϴ"|[Ek3@`DNdD#$|Qb)_UCMe(d00a.||18D[X`x
+|+Q)T¿aAaKuT8U\/1G a+xTBW**ObO*"P*ßD"!AeP00QeU
3JW*װk> x*dk񈊧bw~g1]1?ba1TlTlUlU\/
20SQbp؎?`M7oU܄*y[,eZ)eNApԇb_5SF$c^ߎfo73!II\>)'!TMYJոPZKABe"X/֕Ue%ⴲbmYI~1^n β'q{)q^^΄uؓh)1rV6:yqEEv{yf^A.O\œ.X8;p"USK\lf!rwq[]&[]u9 +bjQ%Mo{MSPSLCⶸ *_t`{MZd71\MC>jpDA9^1LF4$po\13ϻ63ͻ'2/N!K$tMz0TlìZeh8Fͤ\T$Ag~1.v&)4%	e{.4Ƹ=.nr[sg͠VB"cm.=L&!h z˟)rnV%QxnXPQ(/v9&eݠ8JYY!0rlR\|JPz3&Tz#ҠeQԷiۉ$F
 >Ϡ|P\<Q6,O
3*Y\Laq@PҰW>25u@؝@guXh;RCp)Lts6*XhV
9l!Xȏnnn~\|Ort.qFMqRyBs38%S1fj}ȣ_˻6"hɊ4ȷTߥ; TP{Gy	9ܒܸg7;G<`ae
+J'}NS?irX ,/i0QZP53E MP.h-d4g\;Z%rf\=/B;
|Ѥ|_sM	-Z*qqPDzZ
NJ֩NGU/[PFnqGkUGݐ?|v蹎;r<
282iKy@V31(^$@{EY'kdr
ӆE˵iPqE..6тuq9
J<.2)9e IQPkPLRe0I3(ՠ짇P	Ox!-O}gqx2+C8K>e+;Jq	Yřqr\cwO	oPܒе`vm*$fWK,0EMJYxK&!u&)R'XRlRKJaC/4<5Ե	oB$;c4><@d#N?t0b'\̺!BV:Y*f͟?60@$d\3<? &լYt/B͞)s=[:7k ,ᮭ7k?̥T9J3TKm44X
̒30gAFb1_4ow=`Fnx,Z3
Tk1'.>͔ܜ꼜jX}!TQ?@68i;^9(nq8ŋ5%ďЍ,!,N+Q9Fn(59G5
_h5% 
 +pJd@xc݆{Sto#/GyJª:uږyHAt0FBD/gU^GY*\bbKy1X5zk6Zgyˑ3)X"g{UN4'"Qx_8gb=:~'S̀Lzp]5M^*OTːbo0-OSP:}*9gB3/&@EOL'Ҡ=Ph[2Z)
GX.0LSgܩ>CFoZ ȅ9 ,CK!,&S˷rlWM.M^i/G4 :n/Vh
j>8憩RZ=385]BX.oYܜ;7 Ӊu!pq".ڥcolHA$^c$GPJ<"Q ts|?HȁWj:(wR+KU 8?N]FgܮѮߘ1 \F+࠸>.K0.2|o"$~>(../b>#>Og?8kP'gBvjV//Meo9XQGנ
I^G>){Nw_84<Wc!
4F SADN)޻r׼KM~<ڬPM+ǒyْ,7cUf6ONY% =O5=V>kEtj
|pȀzz[l6"[g_PK  B  PK  C:U            N   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateInternal.classS]kA=XVIb˴P>Ud\&.>Wh)To濫Q(8;s{w~vCai4wfPxvOr>*)#6CYJ:J\ϟ3%V	:%oN~(~џ%6{ȉJ169e&rVK~h1EpI(6Y8e(Q.°}ndt̷ؒjSũSEf/ʻuDe71Bo.ʎkvoZ[s
0|0WF
TPA4]Mӟ쌡!җb/VK~^W!$>h6.p6,V+,`N~19d{u(ys~B)nhʼMG6Ǩ|PK(@    PK  C:U            m   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject$X509CertificateEncodingException.classPN1uq@(SP$0Ds

h>]|@!Q|w@<DC;ho/ $(;}ʱTҞ9AP
?(ٔQ#DK;\hKC̊P7bleNSA:Q|Ι1g1tө
MFj`^)bn		~[CCŃG<Ͽ0޲A"ڝ_F |bCwL)Ä#AB eZ`LOhtwQL!qX>~׳G}԰PK`
Ye0    PK  C:U            L   org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.classXy|TnfyK!ĀD@3AY$,N5Fl#y0	3onv]P-ЅJbAf}_ĢE0df2	_x9;瞻<}c .{PxJ=Az0ՃiLpTZm78gml
sWol0uͮ[0v^J}	,#V@5q@䱅t+]]ZM@12%ӵ@qeH܈)zĈxZUZGJSڡiD*ՔOFUC*aRhŕvG'mMJ9>euJL4헫Z7bhUڎ.=UE#)#ld۪=BCݲt[M`H!"k`=E",Peq`k[J*bΆnCr\f4(zk Ҍ׀{I^6mѶ\an0H\F֪Ɯs5DTvlZ,
Zys欋UR~SԨdpVAi딶g*4FqKv]5դD#eM
U4~+rn&Z7kU:Ry:x20W~7kD}xxl*ݬlSz4zeP{J=[<Ի$N^u5RGzcbb}G,]i
kqMMP)
pSțBS̾RFWh,*tZEBvgZܱcȄ0:;h̓ْܒӢ`k4QU%n뛛j)MP*eˊ(R4ynHjjv):|S&]YLf6-,0d1t>2uIlVͪE锡I<bfYsm]e_';hqŠIVwA
k̪WmWZSchzFo-fJ:	,bD&E#aڛ%`1epN]<d(ϼSݙr:hƾU-0ABVJX%a5(IZ	$^µKN	KAB%lp7Hx7IY"UJBNuVF8i:F51܎]3\n+2ј+kTeYoI^M:t$0޵Uʶiv/'dԁ=lTNu]KGuVg4DSx)Afp%w%m|Kՙ?^r4[7"nMR
*EO_!Mr;`qfS_&ۆ&keEy,KQn`dwYq$1HcȅYސw@$(b{_crnN3)
16PXd,GLFfLq	%=2{e[dO
_$|@ŸGƕh`X%eQ(cC=d8~|E>$cC	>"^qOQA1q6 >!c1>)Ç}2_F-Xp9>%uY:|VF2|NF
	1=Ș/0Gcz31ax(_b8p	'b8e/bqgxbC7Û5/nW/n~wg^b'O~[y6|ۋ]<۝~gn|io1<%d5o~G?1Ӌ}/ގ?xN<S[?f+֏o2:bJ<6QZo#TwB@ 8͒,)iR۔T6p%OKe}y"H࠲Lw}SI!H]-ńC8)@!pn.rWH^qBgU<-G'3(
Q+J{E5z8,I~ޑO
_":L#"tJLfnrx;E2>sRLzJP>x8 ODﰸ8d
5ZB%N4N'7%p%fYIkevR*R&)NŖK0yȽWSq`g
=m=I<$=)|O|Os=s)VRk;4(GFLʕ=cs=,t$D&L,҈/hq
Ju-NMZ*S6S\ρUnз,G4Nwʩ%, 2{%}דGwt}!΃'g/n?=(E1NR䃨sd@PO~TYo|هҚ{rd&Jҵ"~̐gܤ( vtij;3܋RC8siȒoKP;wcFɁca|e`7/<r4gS9B8YHgQ:%C&i&4|@D?pDv<HnT[|3<BtBT;D--c4%;ON/QX:¦氨n<-4t;KiLuCzDBa8)W袛.pwYZ)-PbmFWBW9̗dVr{!bNʡO}b\O(ׂnJ<6p7
VJ2!E4 Ddؚry)e8W"(lcŞy;˜S 2΅.|w fV5ebOxx[ny N]ng+\N:tJ7K˩6x,c[89%D eD~!7y9i/x_f*EZn/tKĬtpK$!Vegڎض`۽( GSO'e	XVm^$:'Q5_|{\xPK`.d    PK  C:U            H   org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.classW	xǲYiFش[h0&n#ZZ5hWnWz&-MJ
ZCz6}IOꄼٕdY^Av7͎{I ;*XdR;ٱ܎vej;j쨵81;v3,˓'6od(?ʿ|־=Q°`{lGTYki`Xj5h'QQk޸eKco޼c4u5QF`M\NÊ$4=n zgZ!b742w&i
a!yDiJ(P1_o"6D3#dS5
S$NF"d:2Ph]F&	ܒ#dt@U3H4#*hخ*e̱H(-[	v(D	MHTʿ.GCi.EA)!ݯ6z3ƕ3;
ǲ##Q
2#ʹp:b5ܗu106w7$USBxLSuŜfV;$SJ23@+
Q29yXl4f#rtgf`TPOP11TO&b#
3)HnPJB(#rD
Rr9yƺcdhr%>K#it{LFͫE+.9N0=gXp2Nk"Ġ?BGE}`wr[Ue0,@X3ބ:\SWsY;vqm+t:miUU-"PiVG|=}?|ڂ*2lN`օݲir[@ɷ"Y<R|t0eB
^dz/"RC<fUU1N۩ұO(>Fs:Oׂs Sj9j"/'X˫R=F~3']eph3ޑ3m
W
pv
x]:t	#Wp}8 &HD@PT3޻5s71QsPGQl6;_	-d~UVukAUY~#$(cy&Vk
6uZ_~7^Gq:REiӿEp4GBGT~Ajmnk=GTUf͛$f~\sK~VfZdz1믒w|39±궖\z[DִY߮ٗJ:6seN~	j6`ުVfk,f},,,~)4KooPHpp=?Ux%pJhb	І*	
xMpr8wpkq	CN
Ќ%=J7>	<ȇI؈KXHh%xa	>8G8|ǸSi	q%"Ňgxu$O9*\pxā`ҁ<ΉH"4|Zrx×8|WE$3#2/r9_8qߋnŏEKopewpSw"9@Q|FZoD=	r7qk^;#-]>m"]񲿭Wa(r^1,m4g}2jzZDF%i?;q2-^B\\:?S*>&GAzs	wIOI1B|>	VcR<y8)#+S}Y&^N1uK1GciƺQ	'~OX-B	M]-XEXj%R1zڎ8M6bF+_))pg-JM1'&͹IA_KEY-*.4,\[YлP5LSrئJMJyC;orOe
[y?M౭L?ٳ3%T~	}w8K&r9[wtZ\P6>JBNV,+>uN^yV6m1P-֧P"L^D~*HoL;S<)<MqXq&]i.h
hy.|(>rˋ{=YQ =΢UTNϾ{.

qk$gݓp䨭'Q6?gDaVՔEeu qǁ\plgrFq>=<ixPK7F	  p  PK
    D:U            (   org/bouncycastle/jcajce/provider/config/PK  C:U            B   org/bouncycastle/jcajce/provider/config/ConfigurableProvider.classTNA[-P(&ɺ-4mi1ivnm7PۥqsΜn % j]o\f5T
r*ɱQ2
v.ѲuTƩ[9[ZoWE*i'"[N:Sq?L@,XrmX5
2?'OB]E>ǢYhJZX
o!~N0q$P"o}<9s:]_0IlF6Qݧۜ)zh|m3we
.uMfb98<WlᆌcS5 jp{at\F8^`zrLH`X	_/nYK`_7g-:
(\썋/!nDz-lT%`$7b6^]i\wrug?uheH@U9|G>s
6sD3p7bwϤ:df}- 70>E\K!;!Ävqo£n'PK*%[    PK  C:U            B   org/bouncycastle/jcajce/provider/config/PKCS12StoreParameter.class]KAk]45..N
B!uݑYßՕPGE&i]40p|}p2AЮ$ZcsN26I.A5plR}o
.%mƤdxc,3Z0;s
ov	Γ=lאР*]mnxrɞ߿Rːro>W.Fė-_)Na9_6A.D0J'H_;"s	rA#b M*+<bVoDyY0>	&+bkIWߠ5(kVՊ`oΩLGJS*PK%Pe    PK  C:U            C   org/bouncycastle/jcajce/provider/config/ProviderConfiguration.classmN0E6?yJģR`2F$r~ pB@ԛs}u5 é혈\qTRuXYgÖcMf^b&lA8B|UhE&@g)(5f|R&+17*eJ䵊HʳJ䢟n==y	S^2UFFt~;nzJg,Bnw&4;wy#ۿ$`=Á! 8݅NpЩNwవ~PK    PK  C:U            M   org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission.classUSU-IK@kI4~ԪmB4^6aa
mu>XptǹnKp~9瞽? ++H*xQAJ༂RY	kI8rYo΄Ἢ*tP/uu\X0ҋ/֪53S%rVҮK%	2.Jn,I;uccW,WJEX+<4ՍSj!?S/-TJ4*%:\gqiUsMX[ܦ#`-z:
]<3kmfMpf3^fZ`qc)nkf51nk&?0<&wyd$Nk.\xk *G
7Mr
D;$J#yXzI'R6FuvnٺV֦n'~Wuu/%o9.0kZܪiiԮ<uږ7
xXuabj!%_vqp,IS94L:fɼI0yh7[vl7Rڤ\Ӓ0}Q	fRFZFFFV+2^}+==Kt|:לK+0<6+>=e:H1W7^z%>#WHP`G#8Hgp% 'iEE1x*CEY0&$0)QyTØFEEaS`DͲrxaFkS~if80	M1PMC8ዄ|_&D +#OLp!~·&Aq1ZeA蔫AtfXI&"Ş&uvKg{,izlzR=J'𸴇r`"v1ƕ]|p2=q#BX!BYsD\h21}LL0g	3)ĉ	Mϗ;>J~MM b2GHʘņb/J/ckpVPG|8Uw;]h]ԩg~ZW0w!'q-aD:%=ko
48]%=u #]!ADѴcz}mPKu K    PK
    D:U            (   org/bouncycastle/jcajce/provider/digest/PK  C:U            =   org/bouncycastle/jcajce/provider/digest/BCMessageDigest.class]OAiKl
HAE~!)\bWvXfwJğHH?863<3?XJ&	Vek2Ve\]v}M5TxH@d:.p="0r=Nb|Diȵ#,beФB
L<j~=Sp/jr3OQ@fr{"hsGYh
ߌn7{yR;bN[8c'o{SYQM~;~s(0;CdbW.4I#2=$ʶ'aLø&ƿZ!*ڛ"+EךּY-
10)d5p
\e:fa2s:ʘ1<.22eԔ._ߔ'aSP:
^НÌTO=DF5t\\I"%d	nVkǰ1>AxϘDzv	z	33b4@R2#}AAR>6t
'$!)@RjUToFW,4^>!qt(|EH7NKͳIl\o M^7 PKG  _  PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b160.classRkA6?zzML2FKl
ł>4 wY¥q{)OP*HYh-30;uY!XxDAzȐCIr)Cc EsN8VI*{ǟ|V	/,UF:
%Q*>ͮQ(d{3+#~/y'uJE_^1ӊh],,,jz>617?PHXvEA+ƪZ@k6X7ꑍ6d]mgDL:Zj<L%0,ѯfIy*dw?y1|9̼&%;Cc{rwZNP7Twa=#1I:6aQC7PKEF    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b256.classRKA69s=cV[L(`>b ,q{ܞA+-ɳ8kRV.||3;3{s{y
`U!d?3Ly
%9~Oꄡx\}Ui83OFB_aP*:
sO$܋ϣDqvq"/b=$b52AHj-z9Ȱ;,rloV:~'yw8o{}j6x>arAXF-PĢ<lwF-1؏]h.m~سfpZa(f k U)4	#/PPBGa~fC蒝"Ԇx?B]7/G=k$uH6ȶ	*rwPKhʍ    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b384.classRkAVM^/MhӇRҖ>A0C!\q{^$Oj AH?*t
mCoofgf|D!3dܶO~'@=/uPeU,T'W!C0
(yW:	$Q(>ͮn Ne7+'Q~O3"mHE_f3><QM,O,d-2ltuď%w3Qw =v
50`rAX%gQ^j#Fb]hmgPƭ@h-56)SKRiF^L%a
2%a=D0.)Jm	
!ԮP 7k_HLRdlel PK3א    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b512.classRKK#A:ьdw}0F٠*qΤ	azv	 Qb
>P`eaȭ1{
%9Z~[ꄡ]y\Pɯ(Rq"[_D3,*n:	3O$܋ϢD~vq,̓AOt<ɣXuD_;Z|`3?(p{BƂeaBւmaaV'0L1lvg+{TQH1 !Lkʨ,
ìQ63j~>GMh5SCXLy0ѯJIy"d%r
)Pa=D0.)R(4kzŵ{2Iꐬm0Ed PK    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Blake2b$Mappings.classTR@ٖ A.\CKAlhEI!e%ΔQg| RI)Ϸ{_𚢗E@qbbbb*578Lt郚,'fCVr~!d-B|"IЌl,tfPf.3%ն%M]5vfX\1M_nWl1QC>/gWϫ׹VxCK®St>;TS!UsO-TgCgn]yWvBBV#I4$Sd';ZP7"ZXGYC%L-%*;E5}OW-,DREVz+1\N*V#IW<)`L/-1}%YK?ot.ud9Lp0́
P<+l`xٝY9Yx|,xsvX9s9L7LML|=Ox7cxsc.2X!pxFڅLI,Qcz,1$saŅ50\JО*1T-l h}6XF./V֎l;xml9)tC	6QΠ/؉`2p	5l1Ȍf>4`v52Z3F&i|0;=/E_<}SC3u^15"PK\U  R  PK  C:U            5   org/bouncycastle/jcajce/provider/digest/Blake2b.classOK0qƪ&x]6w ޼m(%-M7cy<25<	yoZᜡuuйOLR=0RP2S&/AÊAe,|nP*2
UjY"t)$ֶz~pqpr\Ǔt\}*Ėp8:z3kE{Q=#=YՖlS(hЩ'?NiG\##PKf&d  ^  PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s128.classRKA6Q9[5<\b,V`A |\p=n/R'PMԅoofwfn.l̐v+Fc;~'_F@m#uPsvx\E*Nd{'W!0
('wxKB:	$(Q|]@ɺzDד<չߖwRkёLf";!n?[`Y`!c0Pl0̸C[]w}j&T9f(r0ic5As67jFF-2h6M?gjs2nBkFr`JIydyc_0d}|AY3onc
X$&CR"&cEdPK`4q=    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s160.classRMK#A}cfƏ9iqFBԃ xL0qGOPP
%V
UW]U7w QbH]5?un/P$GoH0D@
^1W*?"'u(U0&L2;Nɽ,Jog|#GrIov/鉦'y.oTv֢!1d:`ǂeBƂmC_O0V_۴WkJϸgϨfBKGL"9ƀ4R0h!3cF?/~3د娨:M~3CWԘL90V$@J2\<[ka0"@X{sPBƯQxfM6a("PK!    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s224.classRKA6ќQZXpC(W>.=n3J%BEYl0
̯?E!6Nfܖ0} R$G7I1b x$g'J3=d*fXz&:ey8BgA:L25?ObHjve:!Hj-zɟWdLF}k`0gh֞FMǝ{}j&Mo3`9zYDlڨUe%-4En62#آLe0V$@J2rJgam+{`]sk6QiB+(
՝[!&&`5PKNޤ    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s256.classRJ+A=c115z}e1F! FBw!\pٙ4a0=Lĵ%Vu
iw?CogdT(QR'Ŧ8<aW_DY;d*dz&jeYVqI{B'^|%kcYֻb⛞hzG:2N@j-lWd%ꚅ^>Wm?qa]_)=^p	DrЍAitaXFdǨ,ƌøQ/i9*NS_LmsPƕ@h-5(SU)4	#/P0WE(T30dJ-Gd+mag<I,m1Yd PKY.    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Blake2s$Mappings.classTR@=@%D|ւh+JH&!I3>8SF|IZZJGsv{{r7?| 7D+#cW	\'cCxƔ?jq'_jx<h-,rE'w9b.sNϥMCv
Ⱥj|zc-^-X-Vl9QSv>ϫuoשּׂrdUש؆ar+kmkOwԠfimV,ɒ)[5e0|zRtm3j6Kʡ|Rd55Ivo8TU*kS55ͦR-"M:+G*䒩m>?'	2T_zIJ]_]V|xDyL1cD1V$ryY49ɞD5s	mLLML|-Ox7(`cp!\pK$Xm$c
acz<Đa`qVTei4:6@FX{t{W+G׮|;xt5-~G	6I(0.zx*KNQhf3_L0{홹H3k|0=/`]!O ,UQ|M#tMPKhPW  R  PK  C:U            5   org/bouncycastle/jcajce/provider/digest/Blake2s.classOK0qƪ&x]e!<7YJjIK
X~ ?*zK Oy{|~ ☡uvйַL͕̕K43fEi1sE+_FfZeȲ*61Llj|-rlbpqe<^A]_
ՈaҺs8Gst9k`}|ѼhV/մ'Eb{L5ɕ?QeQ?Uw7l.68@ 7{->G<B
PK`  ^  PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/Blake3$Blake3_256.classRKK@Uccloo{UŃՃP d.%5dC6+ Q>Pfav}|<CҞ:dhw4{o049*^U!_gyPujOa(XT]ƞ>OYfdTu4p/\b_8ntidWΦOk/5\ᄑ<*"z9]7쟙/VG7x~i@@@XF\c趧J3/ׄݓoT$q,4B	MVV=)dk">MdЯ $}+k'DTRBa2eN?*A$arTf
wHec
0"@PdKӚPF:o|aM$&aCPKN    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/Blake3$Mappings.classSOP=}UN[Cݢ" O}ή]B%&#je݇Q{;?~Q)TD:C$A.XcxLWl3_-wsS<Lydub0LY=[zV{àp :׳MVK8HIs``L&Ec
~5;isg:C6ǰzVwִ|]!xYo=	KxDVyCZs,bպ͞8^^ƐvcabR;d}")};Srv
pUI	$LKΠnZbX>naLjH/RI\RxCÙ3w+4,wgJ}+yWpGAw2)fN&I R$mA]9:\Б<1h	(B1	 |Ho2Zcl|:H'(ƺXd{%uXncJjSgNv&	5gs&iE%$~PKpxIC    PK  C:U            4   org/bouncycastle/jcajce/provider/digest/Blake3.classJA7ɺ798O<5LfeevY>@>^
UP_} 1$4Ο	#26:7>OmM(TWo߬	u:&˪X+CsWÀ-/oف)KӠTh):1
GykQ$Lj8+~H*D/ړ
詄zF PKh+'   \  PK  C:U            @   org/bouncycastle/jcajce/provider/digest/DSTU7564$Digest256.classPQlK"˾H+=%XV$ϟ/ -	Z ī$EB#Wb|*Hv#6+Cz+"1vETOlw?בБ!?5
\I0?d15}6RRGbF@8!}|yf@GI5PK^   `  PK  C:U            @   org/bouncycastle/jcajce/provider/digest/DSTU7564$Digest384.class;o>Ff
0F
OfYb`__\X\_P_ZZ\jnjf`E0ٞL0.;;+;3'S)HjcdK-rI,.N-fPd jF d<@%ذ{#T
?q03uri>N PKAq   `  PK  C:U            @   org/bouncycastle/jcajce/provider/digest/DSTU7564$Digest512.class;o>Ff
0F
OfYb`__\X\_P_ZZ\jnjf`E0ЈL0.;;+;3'S)HjcdK-rI,.N-fPd jF d<@%İ{#T
?q03uri>N PK寽   `  PK  C:U            E   org/bouncycastle/jcajce/provider/digest/DSTU7564$DigestDSTU7564.classRJA}1c$9dG0` D=ɤ	azG&QP꽪~zG!>Ȝ3oٮl3Yp9*vˀ!U3n(*בN.=O_Yl2?̲CQV_5ҵ)aKcd+|!,fqEݮp4v\Jʻտ2)vKIu4k4hkJ?=dH3nkRoT5QX0AXUR0bH1(Ɣ6}c͠
^2D\EǔK,RJ
unTEM41*
fM̵+<{Ma*wZ"	wd:/PKL͐0    PK  C:U            A   org/bouncycastle/jcajce/provider/digest/DSTU7564$HashMac256.classPJ1=qƦGk՝S7cQqa]XЕZp3LJ\ ?J̈ "poO/ :! LFNT)Ä́y!J$9r.,;w{+.~HOd3*j"rk9O;m%ܩq+"XQPvRAkTDGE!0J}T*[E+y]`m
lPK3
    PK  C:U            A   org/bouncycastle/jcajce/provider/digest/DSTU7564$HashMac384.classJ1Oihsb&*.R.c&Ԕ)I*WrUP|(1#"?oO/ :  U\c0c~[rYJa]4<˫^s!$DT|j{(=V}Q";gnI2˔3Z)?Vy"XQPEPIP2VEa+3HbzG-D+M<ќcӺPKO!    PK  C:U            A   org/bouncycastle/jcajce/provider/digest/DSTU7564$HashMac512.classPJ1=MGk՝S7Qiº+2fBMGIRa>UAČ"pνpM 	xTQXڝąbR
Rť)g]]{GK!	HRL3S<D色E0e\{?wpHm,ShNTX!El赃8BZC+X"`Fy0*T*۾B+mZ=~J7<2MPK^8    PK  C:U            F   org/bouncycastle/jcajce/provider/digest/DSTU7564$KeyGenerator256.classPJA}eɦYԣCI!"4OрvҌ=LfBw'0)QbG*xU^-oO/ Z!MH#BXFҜ*gi;f|v"/6`J&f>u%	M?ȁOr,K_hþfN۲:c%t2fFǵXUqqu8zA眅<vE~?Q	)-a<6
(LHXJ2ݐk-4hK#VbV;6kT%<#@e'ybƢ-PK    PK  C:U            F   org/bouncycastle/jcajce/provider/digest/DSTU7564$KeyGenerator384.classPJA}eɦYԣCDD3)Ndf/y
(~
^UWsHRƀ=4Ǆթ{ֿ9omH.^qm<&bɹ&RG`r(J_hþfN۲8c%t2&FõXTqqu8:ވO9x賾
v7RXryPBv eZhB=DF֭Ś6Pm֨JPI^Xhq
wPK>o    PK  C:U            F   org/bouncycastle/jcajce/provider/digest/DSTU7564$KeyGenerator512.classP]KA=GCЃ
1ZFdO4Ⱥ+3?'Џ(zssx}{zVt>$H>=jFz"pM((WԗDr!"1t	EG2Яm]:LQә!2-VUd8Z挆,
vEA:4RKXsQ%׋,B݃-iĺX66***
E(PKY~    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings.classUmSF~^t6JIܤi+[(HP1$`RKC:#3N>7ŝqL@T&{'l#lOä_g]W ÇW2|pc3|% W_3uѐL/Sɦ15>/<T\R
KE^J?O<,*<R9qJ?欒ἆ޹T޹;ugrL5M%4żx
1f\;ͭ{t<l)nxxD#s%͝r
³5$w:_hHAX:챪SUu֩;<*1QY#u~DSn瘹kMO!]Y%[n}/W<Ń$Lxf;ٍU[x{
Z/Z<O]R46n<4f}<fΛHT;窥1f,,G
1㶎IS:꘦᭝m,5t}G
+v*L9:=+?LrGFl-7C)xw~d|"k1	7%nIǢ	b0JsQ	k%l$0$OIbS$%6=
v4t6=*ƪGzO}Za?Xy
uў%<$2=#/!^ *t*Z1TFP]M1R슑tG^:K}GFS8q9k)/K`8.!q:!Yů5X*~vF.ç	]U5<Sr	HPK<    PK  C:U            6   org/bouncycastle/jcajce/provider/digest/DSTU7564.classJ@Ӥuw.Dk[WT"˅wt)%)IX^	^ >xJ:2ds>>[Yg>l?b譋ga4]3+ui[3*ΓmL
iMQ7tg*]jդۻbV+sX.ŭ<qD΅x%L<ZYVOB/eL;<tBJ4]8bqG7Hrh:G#ÑȦSS*jiÕ?+zzz16I!Vl[mEIz(9gN}
Hb2H>B q8H'qH%.ǈ+q*qF$CPKws    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider.classSOP(/	*tuhLl	ǻRv:OMoGo݆FwNڟ~S()f(f)().R\XLd$M,-#WLȕKnsy#XKxZ%XAM0cw&
a!vR 5yʶLEGiArAFy0#unbI5vTن繦m<o]m5ԪӴ#5<54])ڡ鲪߆3u
O}]o=3iC*$q-I,'q`>@Q7׼BT2`T~GgLL_>uT5Z{ҹ'neLBq2ȸ?rq?)܁2[si_c<&\FH@	Oa1lOtB x +'؊K%z M wntY,BuFZ#tHI#,b=t^8XT+wPZ҅D~PKH21    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/GOST3411$Digest.classRJ@=1ժVoP+K>(>XEc,%%dC6+ }^ffw9}y}|P
Cn!n0`{pjݺLkfY*DqA
a̪zTeC5*|a[2i f4O΋BaP ׮.+s)17ICGYiנiԐР3d+?j͐έU>tZs[WrQՀ?%0j@?j\t)LHbRØRn!V%q<,{\bHm&9F?!ylwPS!Bz}M̷+tM= ~f-ň;DLkb
#"PKx    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/GOST3411$Digest2012_256.classRJ@=ؘzkkևz{P"BERRB6d_)(ُgUTD]s^ ,!Й͝0t;n0tٮ8%jNː!Ӱ-ӵYR["<:}sas?t0fU]*Yg}i[2ti~(Vui/.
BX).l~g6lasĹS[	sϥ\+Ͱ_J%nZCn

Q
:C[5lqmU:^lg/Kt 3Љ5Tn(u0ܸ8FcD4/ƞZRrUHfi5FG촉&fS
Rfũ|ӏH:GĚ++E!n/u	!PKn
    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/GOST3411$Digest2012_512.classR]/A=CY]*ڇV⁐(IPxvl,_&$ُwT	";s{|<== (!Н3;n0خ8%Nː!Ӵ-ӵYV["B^߹:cj.UYAì3Ͼ-ܴK?f4wG˥BᴸT(oߙMjqyV*s)0h3liuУWOCT0_mC2|\amNg[@tcH͆KFFǘrӓ?A<]KJ.jqP>iIQ405`!B*T8oaʢBo0Xӷ\ze"'[N1#PKƴ    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/GOST3411$HashMac.classJ1OzKg:^mEՅXPP\X
E2fB22Iy,W| J̌NwN8z ADP;BO_F=GP$+K&d#zCbN*	ZEw\bFd8z\z_;Ӫ :hg\I(ST(5
J۾-*,bʄA	$LmԱd²
+^J:/܄{>WJ*0\٥\ʹ̓)Ako3|ӨmΆ
XPKʾ	    PK  C:U            F   org/bouncycastle/jcajce/provider/digest/GOST3411$HashMac2012_256.classPN1WXVQDी1b"&NK`l	D2v={Mkf:6	ADyʜA=COצ'F㳶Hm4߯U*jRmU/>5n (qwdVml~\۲ɺ}L%ߗ&P
sUS$()
JS
5p,+j).b !, X&H$q<OZjpcS\-$	MiNn2F~՗}âck:2PKJRX&    PK  C:U            F   org/bouncycastle/jcajce/provider/digest/GOST3411$HashMac2012_512.classPJ@=W4ZvZtQL+.+XAq]q:Ԕ<J&Y ?J3ps9s6	҉;)Qc0y̙\Ayw-MZ􁠞1.iqgِ:
g/͏[v;L>)鷄=OD8r\zΤP

J4uVȯ)f)QE1Ia!EeT
X2`b:ļ}]&"j禸n[(P۟@NP&XIPK2o(4T(\	PKU>'    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/GOST3411$KeyGenerator.classJ@ڴ1҅f,vWmXqQ)!NI03-\| JAuΝ|oϯ :دPj4S*{]\IݦZ}J-lZC6K"&m?J
':HjX˿k9ZoTZB>*=a*U5^c8s|D4A9PR\vrE;Ha48G蒍t[u3__	T=lZ PKB    PK  C:U            K   org/bouncycastle/jcajce/provider/digest/GOST3411$KeyGenerator2012_256.classPMK@}k?Ҵ#=^_z6H-V<T
dM!M婠G[,(3f{+
d1ADB8^ft4D!~3#N}tB=1{}st"	ȡBәLb%+M/+9\_j4[c_}T:r-OZD_`Y(Ð-XБQAw0/6VY"ldd͗azS+OG %#Z1iʹ ^&.%vp>ɻV` PK"    PK  C:U            K   org/bouncycastle/jcajce/provider/digest/GOST3411$KeyGenerator2012_512.classP]KA=j=ړ&=BO16.3?'ЏF
{{s@E愠p""O	*f|:A+}LS_'G.x:Lǒ<4RLSp%G+ݶ;.ٯ>*Ϲ§-BgoZY[(X,	ь-
YбQEAo8/zIYdְemx͗az!S+OGe#Z1itjFt
էOAԲ:JPK!    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/GOST3411$Mappings.classVRFvNhH:
	8&]$aɑ)Jgi; -[u`?gηߞ=߿`
?\'AM7	"x Mp```8B0I!%"&!xGC;NfLKd:@++PUm!R~M]<7Jc^}*p9+C,Qt
|̩U4ys3'rU:qhY1!7nuJsMS<Cqw24m|Z`\U[wc ėM;<+{7Mty핕B.`Z\Z}" vXD5۲ydNB1lZ& ZQ>uJuw3/Qw0fgJ<VR8)\7>UcJ;
=Je%_|)aweTTU]QTZ5Ri[;]uW5t]C||m9KMڮc**v>4@o:Mwf7<?C'W`<-Cc^$]`zK\￈EK"EX5ZE
\q=Sc
Ӝٳy{=H_l`
g[!Oxsꭄ7y0ޑ %ǧ|&aK	lG7j2uIl@f=n$<
7__-}U{_z8b"3"ϼ.3~Ǟz*K<	x⧅ЍslsL6sgu3u.ɒx=xj$G(y.`G#fL$Ћ
Btℐf!ǰ<!QPWDkr*zC/*B!(]wD1jkQPYH׽O!
Ƴp$g6m$PKd  
  PK  C:U            K   org/bouncycastle/jcajce/provider/digest/GOST3411$PBEWithMacKeyFactory.classOOKAMZ˴J$`à8;m13: }hCA?UV{BP9Jc3a'	ri>WLД󅌅LtIo%0ns]1l&έ̨.U|}T|(eF39J̨DWx
nPVKwCIV먣AP h1c!H_A\zXqum;	7	A/X{nZwpjPK}	     PK  C:U            6   org/bouncycastle/jcajce/provider/digest/GOST3411.classYK@XuZ[[ZU!.ZD_d1$%,(bۗ&/r.9 _<qй:iHK8Se)TUҔdUNQ*UT,祥uMڎrry}N&6JbGaIej5zHe[I6=W8PVok`s!ȶZ:-u.DLW;(us,Tj9. G#	
dh?4OõA
(RH&aQض$[P6'rE4z7cS?,AhDq#G%ƉcqD .#	PK0'    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Haraka$Digest256.classRJ1=uUV/P|

UtelVѿRP

g?J^@)j`fsL2CxC@RUkJp_U^4U|z*eeڕa쩀aL}UTeu7б/݄H\յw+jaީ|x$U\+ɰ?bKzeۂeB҂͐-jŐ-^\I/~ڣڼ%$0A'nȸLiHaĸq}5n!QT\5s2*Bk1G@YHit#EF?!u^d3w0^iP9갃TҥecTSXm%M1~d|PK39y    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Haraka$Digest512.classRJ1=uUV/A((>Xc
eY6_)(%NZ/5039s&}y}|PCgn錡{xU )QR5q%/*/O*>CŲ0T0
&>U*Wؗ܍nXVuD$.޻F5W0RW^EFT[<Z`da%DZmc!ifȖ]EbJ_tRIפrQ̀
Qmޒhpf7d\&4m0bܸ>7Ɛ(
M.y[sΚ9}ԘB},N$4Y:"䟐:c;L/4uAq*_tҲA1@L,6Ysd	ަF?HPKKo    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/Haraka$Mappings.classSmOP~.{iWHA1E30/vvi;?e<}[/9<O߾
n(ʐdLP%\`Pʏ[Qc`rtω3[3+"-oZ0>?zɠrj8ћC^OxC׎d?$oˏr6:.Cay8︖Z~`~3ߙ<\atM5#JTdJ{Yۭd,#t!Co6yr{PޥeĴ9%hK0+aA}AM2.wgg̣6rTqU(UL㊊bYVJX5q]1܈AW$.a!-C >"^L$25y9I2cI9\OfU}«cT?2@Mc#59S2%Q:՜MV`#*'
%@PKl    PK  C:U            4   org/bouncycastle/jcajce/provider/digest/Haraka.classJAl.`.b-~{{Ǡ6307лr޵ׄasB?JkZI
=y1pinB=w
:wOL\ppƓZ'cŊ{n狨(t
=a
4@δ-!]z0]yoôm$G* 	OrKѢo|]ؖ1
E뢑( PKz"     PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Keccak$Digest224.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`A0Ȅ,;;+;3'3)Hv kr=RsS8A$'d10ph	2<H
8x:94' PK   V  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Keccak$Digest256.classPU~$X bS޾noմ[e% Je&3'3_&s\o F3hޚ!u^R.qpUJ7{2ឿ*+)ct'зёQQ!W=cǞd0nXY'dbRR
W0J-rFpA٩Qm̀
&iPK+   V  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Keccak$Digest288.class
@EP.E@"QI$?J(q|iue0qΠ%CѝDDqMIT|#|&()T_H!-Нchd@w`ÂMI(
'ǱL]T$R{W\ `Njf&THPK{   V  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Keccak$Digest384.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`A0,;;+;3'3)Hv kr=RsS8A$'d10ph	26lgU$r@@ PK
?   V  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Keccak$Digest512.class
@E&'`-\AH6
~`Q(lue0~ʠ%CΝ?ŘDqMIUQ*JZHKCȔQ(UR0
h^n3BDDބ@V=%dn8yJI&,(Wu5QX3NjfLI˰PKln   V  PK  C:U            A   org/bouncycastle/jcajce/provider/digest/Keccak$DigestKeccak.classRKK1յk[_w xP<X=U1MCٺl*xG>I2}3<>XA!Qڙ?b^w}7`%nCꈡgp*Ƶ Pa$B|O0^(ʢ
NMBpyE)'])?jZo
	Bue9=5oW_qBqbBBaScC4_}A)1ϕ~-I!:RĠ9
M"\Hcب1l#Fҗ:.۰5v|_k-5f(VdOE^:B1t|`3EJmX2/_#t7_|a͒$K2Gg~Q	gPK    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/Keccak$HashMac224.classPJ@=cjǌQUwV]DJADqa][q2<J&Y /'5Ax/;9ùo :!{/F8N!D2B2i=tR<]6V=Rޝ'8#)FRq?JJҚЏvCpVgaė|Z1EbNA)۪lϋV80Wr+6VKX3ƞ"`?38(RI7Z+C-f44`)A9sl|)PK]K9     PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/Keccak$HashMac256.classPJ@=cjc;.Q\X-Vru<J&Y ?J,	p\8~|8?Լn1W*R5aS<D&NDҘ/uٝoArY_!(_/һ&`OPlp-FƬ
w_;eqj15f
X,`2Eb+ؗgE2i\kтkEfAݼ7kXͱcTlf/PK
s    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/Keccak$HashMac288.classPJ@=cjcV]DD.Zԭ8jje&Y ?J,	p\8~|8<Լ~1AWGdLp	ӄPT[)m*ząf{.qFdcTwiMp?~'ICpVgQ$S6I]s-FƼ
wW;EqV5˘s,B`A5snK3ۏc!ZjjQĴ5ævQ7/y8Lc=FRmb[p PKCD    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/Keccak$HashMac384.classPJ@=cjc;..Zԭ8jje&\,~8Y{ܹp|{Լ^1AdLp	҄@T)n*ząf;.~qd#<TwiMp?^GiO΢H*l!ZYu9]*wn,cj(.,Xe
V;/	n/\kтkEfAݼ?o9rML؀PKw]/     PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/Keccak$HashMac512.classPJ@=ƌQUwV]DEQ\X-Vruj%
,W~%Nj^8w.ss?>`^K N1G"\d"Fi|5:V
oArY_C!(_/һ&8`OPl]s-Fƌ
,wW;Eqj15j,H`I1esNK3ۋ"th5Ԣik-ma^@kڟ7kȱc5k0Ht1u8_PK608	    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator224.classPJA1ӘG$Bn`'!q4n< /'!An~? Ⰰ,Cٚ0Tlzu=N%XR:]؄jqO:b&y&L_dTd,HJ_0|NV+ɗVE|(mxy{<LD/&dj	EPA!'Sbb#aڷ{po9wB:Be@`u=x/Òe(~ PKE6    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator256.classPJA6ӘG$$zE4l<	dX'nv$)QD<=P
ՏW %d1!be{M.}ډ}E*dBs0_dz%cM4y*TH6RMfJcY 6}wIg3ilaUM9yaM!u]qnk\A[kPv	Y?HBe;qc!Ծ݃Cm	9l 9vVYEuXrpPKc6    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator288.classPJA6ӘGAC!	&hxɰN솙I`?S@ĉxzPoϯ ΰ_@iƄ7}?~pډ}E*dBs0_dz%cM4y*TH6RMfJcY 7}wIg3ilaUM9yaM!u]qnk\A[kPv	Y?HBe;qc!Ծ݃#m	9l 9vt
;+ԟȻK.PK?    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator384.classP=KA}c>.D--$[BC4\Y΍	\_
(QF,7o>ޟ_t_@iƄW}?~pr!dTpc#ɄN6aKRRshTlH&*Ʋ@
5m\Wfj%ª
*r< 9%gCv;ָP-*~20vL?HC}(;ȹrpr.vV?}w\,;CPK    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator512.classPJAk4&у!AS$,aIx':qf&,O?'!An~?8^9l=f(XCΎO:}e*qӹMJ(&-l~RL%NjBOTH5n\Wfd|aUЦCaMRH!u]qn{\E5(a*9?Cu;	c0Կ݃Tm̹rt>.&kd
+4;.VPKO}    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/Keccak$Mappings.classTRPD
xE*DʭJK)KA4`I4>O3>x@qgwooiD(.S\Jq:
(M[1>A
EbbbbC Vl&#.cte$uc8
J4Gsby J6Cݲ(QleFެɆhMuerY^uX
MI%USTE	峙L:oWVnը6yEY
r,*A,c ?d6KٙU^,%E7Tsc큙B:rmY+1$]{*;L) n1eS)B$uϲi2A
EXw4iOfI6%qSmCUY2JzI^`L/ړ
'e˒$~ h-M̶@Mݙ}8Lrxa 2xA>?w:6MXpo(Q9y9YwOI8xF?X"yPq!8i<	#EK,Yióf`1wio²u%bg)AUiLaV{	{`N 3h`x'kX}&G:`
6z^#^4^g+8ޝb/;%u'{_BK-9Evz@(ҽ߰R[&ͱÿC/PK  P  PK  C:U            4   org/bouncycastle/jcajce/provider/digest/Keccak.classNP-EhA<Je"
&jMgg0i'm%|L|(Fmz5{ڤ_wV@
S+_f4)3u?L\*gy?<ξyrhA	GyvL)ı>U,Wv9rFkt3r~F[a)z!ygG]鸶욭4f+ώZc6?fМ0u嵰
T&*P@o1(I`J0-
D0'ಠ%"*5F|ĪA3
aqk??=ݲ݃TO)uQB!h4M肠Yw
.L	nQG)/ZπXmm^5y\'!y|C> 7ȇd|DnY=K>%gdD.;s-L/=r|/PKѱ  t  PK  C:U            8   org/bouncycastle/jcajce/provider/digest/MD2$Digest.classRKK@VccUZ}"xP<X=Uq,!%dC6W
JAAzGPD
ͷ症' [(1ʕs]?=a'{B%mvCn]F^9"J|2LV@U*2얼k$_GՕ}|P?xm;;ewEFB)wfLRc100l`Āa`@ƀPhoC\i~NʿQD6F}k,1iaB
Sz5]>fLd1݂qi7ϐnHW<u"n\)P*,=IQ^t-EQej+=5alXYE4qimRad^PKh}y    PK  C:U            9   org/bouncycastle/jcajce/provider/digest/MD2$HashMac.classKK1OJg:>kE.*P\.*حē2)I*r5`3cq#'7|{pjHиQDOSE*dBsPM烢%蔱3. 8L
:yQ+ܗɐ⏫?L:I`"vǍtUEAA	e3_:*CT@rYeG><lEP'$?8qcA-凸^h.ፗh3lghgy]N}wPKgA    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/MD2$KeyGenerator.classJ1ƿڴg=z"؞ǘ
k6$iaoCxxP'M}2oϯ [GjjJ+wF@ pNnRvO(.Lp9U 2|>&DTZ>'>XtՖtF	6u*c=n'(jN c>,:eޥnwۣ,d#@ "y"Nړqƭ}wo=u$99O_km| PK#    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/MD2$Mappings.classTR@=KIK h+B0PddџKԐtXLuo2
㟻{r',ʐe$d$e\-G-)h\gJ\!}Gݶ+cm抶\Y>7ED4CY߾|AAg;=t\*K8Vc0$tٲ]OfSk|v5;V3 g9®e"bǠoOms?}gJ~}m}f"`N`mY#BKKE]hUݳ[iDiFaF-xE\:U&$R0	%I!ᦄjy,nM5H}XVKoH	+'NWF"w&TO9E8o2x:FtS5d	1}Ȇa\UL$pZi䒸$10̄QKq'!C{5)oMPOZ P
b')t꥕1v/@gFU?00[sQ!
/b6Rj;xRCRjG=9U;ζEgX0KTӯ=@1IkJHPKDgt  V  PK  C:U            1   org/bouncycastle/jcajce/provider/digest/MD2.classMK@߱iQ[?ϊ?K*yn6!-gy<ıXcv`Y睙]}}|к|!tn3;BdƚZ&sPP6ϳhO.TʹK/̵ʵU].2R㼌C°Atn@ʽJMk̦N ht@W ꡇ>!$-79ݍN!6b+}~
оz3:@C]1oPK&-Z     PK  C:U            8   org/bouncycastle/jcajce/provider/digest/MD4$Digest.classRMK@}ؘj~U~<(AM!W
JAA<Y*(ffwy}y}x
ratda	d((P	CůгT&(q"ܣkGD/CoT"cnvt@N܉i+p/
rxv+qdORfLRcԓ00b`Ԁa`@ڀPlo=.LlY%(FyD!0Ø֫v3id1k"9LL`^<C.]=A͏y*8E\RBaLlHVi'9FѪ>"sb+!FzC],?#ۨitgdXGvZ#Kwl&,&QD
PKy    PK  C:U            9   org/bouncycastle/jcajce/provider/digest/MD4$HashMac.classKK1OJ;ӢVYXp]T[˘	5e%IY,Qbf,nds{¹o 8"+{KO=%XJ&t	Lkd4-A0l<3|.$[ERs_gcn?2iI`KBvǍtUEAA	N{e3_:)C|T@reC[Zc6LI@q,0H.ڎqU)t߽Qw9_5]9Ͱau:vzPKXqGb    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/MD4$KeyGenerator.classJ1ƿmV=z<KBE+h=	1,ۤ$iaoCxxP'M}2oϯ دJPiS;#GK݈J(aӆMFL3
A)NDNY9g9tj\Tf:9_L3ә3+? P 跆93Z0[RYo0{q
֖"vMT
ӁdR0k!"]ۼ ĝ&nx59GPKg1    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/MD4$Mappings.classTR@=KIK h+BZmJQaȌ?d	!$ę2C94峌{f7~	 +2eH ,SZV]eZ812蘒ۖc3bs3X\ɶ禈rTY3X|WKnDzVCJ|ZM8CBwMi6Eʷi]\cje>1xcX!!
چ{:[hwG֖o6B֦%<,Tu^ՅV]HVnJXkfn4"?f^nթ
K&єrFI0(aH
	7%fPWZ`_9Y/3zK)Js	ɴ2"aHdUVNs9ΛLA/(]Tp
w bLAaWp	܃@$b*aLaaxD*x҉x^v
zpʒC[9?ԓa(BI
ziev`(h3qjg8}LBe(|\fJm'pO(RJh$ǲjֶ4:f#2#
@BxӇB)&iMCB?PKPGs  V  PK  C:U            1   org/bouncycastle/jcajce/provider/digest/MD4.classMK@߱iQ[?ϊ?C	޼o7K6!Y 8-Vwygf?>8"tΟ	lsK8S	\͕,,7!\u&g|Skk#2L1Et@ʿ$JmkmDUu=!#l`H&ejc;9Ǎ'xBcl2<Flű˯*} C{źϺaa=DPK]     PK  C:U            8   org/bouncycastle/jcajce/provider/digest/MD5$Digest.classRMK@}[kccZ`@[BՃ xܦKH	ِJA	(g8k[Eξ7o3/O 60P1dv_m*fXKn<p>:E(+G'/0JEFݒspv0v[7lGa$/z${~$3ke?k]	2CLbrv&ʕg[NZj7Ϩo#4F-,`LƵȢI9Li7k"ifu֣b@Du+%JT%ҳ!wcX1V	n?/BH*R	Qh4zg,cv*;LBkb#("PKMDx    PK  C:U            9   org/bouncycastle/jcajce/provider/digest/MD5$HashMac.classKK1OJg:>kE.Pq]T[˘	5e:STj?%fF1Nn'nqbeo	zdTpc#ɄN6aHc

.EK)cg\6qAp
>uBWƹ/?!7WNt6V+VE&)5:Ew"}gwuTN9S䲖˺&6|x`OBI@q,u?HZqU)t׽Qw>]/gΰn9݃PK9g7m    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/MD5$KeyGenerator.classJ1ƿڴg=zEAv-'1fÚ.IZ؛䩠Pb*,	|a~_+#Q%#کʝE<<&ody%4冠S-J$,\bU<Hǂdg*%*ֱI'jd"QMX[	S4z8˸N٭w(D+`3:qHӾdqk>B]ۼnjD&nh59ĚGPKQ@X    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/MD5$Mappings.classTkS@=@"Rh@W+ʫBG?.RӤ>9?gʨ3 nR
_{ͽ'; &Q IKHH$KBeR? %]"
[Hzbkm˱if@ͬf[ϖFLTsW7dbYvE@7;.	J>'T1uٲL
mW~LvjT6<1v,۠|glߙP-i/7Tukˢ[I+&|NժZ5L-#6]Un>GFWȜBh%slJ)p#E\1(⺈"n%bHzg6SX8$KMURe.`q_TcFǧ5Ui3ui2L[=1k:!2pPø^Lȸqd1G	$8Hq.<S`ψ\tË!bϩA؞u;U`k?aюfoH=>fkXP5CRZYHi#%&cY2c	Q}a@\k>c	!b_PK\"  E  PK  C:U            1   org/bouncycastle/jcajce/provider/digest/MD5.classMK@߱iQ[?ϊ?ڂ҂o޷%&MnY(q,Vwygf?> 8"_f=ŽV	\͕,M47.:rfB+#srmdU,1L8/ɈpՠtJ	M^c	7Mk̦N ht@W ꡇ>!]$-79ݵ!6b+]~
VоxC-}m!oPKrb     PK  C:U            >   org/bouncycastle/jcajce/provider/digest/RIPEMD128$Digest.classMK@ߵؘj~[jm=,xP?P<RRB6dcJA)(g8k Lgf3/ \ߍO
)TĐkm{%HFgA H4*W"Wo2Q.&K8<D+~Z=76w-n9l
t(+ٓaL!a	&Co{.dPq%^33N,1na Bzn2L$1ݜQh7/Ɇ5?Y1XUaɳ
+TeD=ތafhb鍐RbOHֵx'$a~Z!;BJkb
c"
PK l    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/RIPEMD128$HashMac.classIK1 _3׺ݴz	AE`+`A<=LSf)Ti?%fƢ,ۇK/+1{fHױ/P4덥5{^~A*r\hrA>MUR-	9swW'A c	6=]s-LQR((~WU&H@2,eXQǊ
6T+	wgRu}hat frn.f4FsG)S4Sl,ۆY[>PK<a    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/RIPEMD128$KeyGenerator.classAK0߸nS;A&U0PS$٠7?%faÃ}!}|8^eR5&
)L~=:	wË+.b&SL1ʰ6)*r@O\p$4WLD\H\p5LQ"S#Rg/pPq8:ÄMuɸ;}C	ktbE @Z2H\ ]bYݱ}

oxתk
־ PKO    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings.classTOP=evTğ&@YdH>J.mdDM ~(:`0"{99䵿~	`K$	1	q	$Jq[X2

vLГxpw\{kih,#SLeCry);=Kץb-E:9	JPl)EYm`cFۣj1P<RpZ]6ksZhq
u۩ځ<*sn-ʶ(z]_ҹ;&w6hq:&>ؔɶ-	X7SCN8e^/$7F\;"D)bD-w(-	\Z4>jsK3WɩPd]V=ens=.LFɸ1=q)`B AqS1<C8#(a:3AxG"%D@gcK6=!$%$		PP,ЭNή#o?#:0w:^*:r*ttRSK6i%zB#aPD`C"S:^|Eq:QDPKC'  ~  PK  C:U            7   org/bouncycastle/jcajce/provider/digest/RIPEMD128.classOK0uV{V<a첉)YjKIKSX~ ?:	IB_9'B*I5"wfqc)UnJf~]yYbB+WeFZȢIdJ%q|>\`Hv'
E}VPi¨*Nh
@[ꠃ.o_U)L-_?Δsګ<bݟFQܷy[΀zx<`27
s7PK  	  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/RIPEMD160$Digest.classKK@ؘj>yaDŃCUQ<RRB6dSJA)(g?8ۇRl&fvޟ^ lc?q0xnt0xU"}cs<?2DAJ!Mf=eXeYc	A$yq5G 7nEKB)*_Ϟ{f4`27`2,{mgluV	G2{z01YЏqJi7G&nK3򲢯@w9+"{RBatG-ME+usM,C?LoZQ6d1̾"#fsw-j,F0*MIbPK3    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/RIPEMD160$HashMac.classIK1 _3׺ݴzQD`+`A<=LSf)Ti?%fƢ,ۇK/+1{fHױ/P4덥5{^~A*r\hrA>MUR-	9swW'A c	6=]s-LQR((~WU&H@2,eXQǊ
6T+	wgRu}hat frn.f4FsG)S4Sl,ۆY[>PKKp)    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/RIPEMD160$KeyGenerator.classJ1EolTKX7E-Be	cifHઠQb
.Z\	B};cUQ&(5[cʩףnp{9x7+f2ETLir"7
D*'!KBNsDD̵Ky{WC~Ʉ%B:5"}A9L،єɘ[߷m=M.\ԱMP%i5!ZǺ  >>xwzذhPK-`%    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings.classTkSP=ᕤ˷hBRPP_/饄	)>g?qHiݳgwM__ +	6	$K)KB^	WEF; )dfڂ|[fn33sow3텻GB3`ChR7
pLV6q3s"i8,e#0M&j*3
"-չ[ٿu'VaSimt>r좎VkڜswmӮmto=k	9DsYsmf;v-}_gkr9VT3ŴT|9u7kl&).7k:]v:ɓ5[:ҹcjI+%*ug*1gJwXy|N|VN0MWF:Ĳm\HreE+➈~EK/*&`xi	\@g
jk=rď,7mNxԙ"{K[=x*\Vpc
<s
ng(
cB&eDLF `Sy$|Qzf=4Jʢ7p}7_iO]
6bP£J;Z@ǰ*}C8@*)b^6"\	-<BKRRp(թ
jgcYDK8|+a5P
jU`/XDz<hWiL@V[H}Fh5ZhEoPK}g  $  PK  C:U            C   org/bouncycastle/jcajce/provider/digest/RIPEMD160$PBEWithHmac.classJAƿQ`Go%/Q .$H8dg|^+!衢Y
¢́fW g(+ARB](h99e|":c.nkkAi#ݞ?4M8z#	);Aş~9bL	6=oMMdL&&Lͦ?{H:J6\׭@l%ضÎ<v-8(dZш8n{RrI`+%ZgjC}*;xD~DnQkϑW[PK{(  
  PK  C:U            M   org/bouncycastle/jcajce/provider/digest/RIPEMD160$PBEWithHmacKeyFactory.classOJ1ݶVkEO ^*Vٸff%I+6'C


|3
`2
^5"(K% p=?vLtM9364,l&#i$ca,9f˅_Dcf:'dDX-9ZR3\'5	12ӡS
"'0[)t&ta*jN	ZН#`,Âewm6JW,6=ciN;YqT> PKS#    PK  C:U            7   org/bouncycastle/jcajce/provider/digest/RIPEMD160.classJ1O%vVwB&VDT)N3a:8SfB˕Ŀ7	KBNNO?^ c!ϐp|'17zҾeEWo۾UP
B['_bOWIWi1cPXXuznzrpXSiL7ΒK2tb%?O~AWoGŽڏ׷ RQ1G#Ñ9#Q01t=4}Qdi
WymOob&R_Ui:2/(?ؠY,h
"1E,7K-2q'PK!8    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/RIPEMD256$Digest.classKK@ؘj}!âŃՃЪ(t)	!Q[)(g[5037׷g kX`贗wKv@U&T°;WƋӑL.HƉ\"J<2}9pxE^$܍oDfuOO6Q,?PW,h+%?{2lYl3eۀa@ڀɐ/&0l/u\o>6$B
:,tbPN#j7acڍ3@k9+0E\Ue:Q18c2uL1s0RjM렘+1liY|A&oY^yZGwPKj[    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/RIPEMD256$HashMac.classIK1 _3׺ݴz	xZ c&)d*4`3cуb_{
1ڥzԈ=FP$ؗLdGFRǚnݣn~A*r\hpApK3|,$s۳)ON@l{>Z'EBQQPmQL8(dXȰh%m8X!t"WN?\kBA,\7mTh`
gShX{7
m67`}PK]    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/RIPEMD256$KeyGenerator.classAK0߸nS;Ae2tU(<6Ԍ.-I64P<lxPx/yw UQ&(5[#ʙ7Ë>^x+f2ETBir"7
D*|Glql&bh,
]sz ]L&(ѩ)3͗G88pTMLuɤnk䡄lp墎mr7R58gkmVwkvoph|ûV][=lXPKw    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings.classTOP=evTğ&c,2$@hKiCXb2&~ ?v0w߽{_0e	%+@L,|Rby{%	Jo];Hj=
ki|#[F&o˔1tō76W^?5eD渦/|e
uikU~l2;`lC-XHYewMXi95jk|̳-UW)ۦlNk~Qo%pYce90_
LcFOpwjCMn|&Q"48׉$	1 bPmC"'@YhyNnֳe,T+?^HLN4O"s)wa/sqf2zD}B[Hxc2¸84A
tL'㙀(m{ԿCNH:yKI0H,B9I[/cXG1hFmtZi?c5T
5UFKi0O-%Zoyh[=_CSu@Lkx'B(LBD?PKV  ~  PK  C:U            7   org/bouncycastle/jcajce/provider/digest/RIPEMD256.classOK0uV{V<0QQ]6!E=KCm)ii`˓_<6<IK|~ 8qpDh]%6n5MTLXOR+B?/c9_iTTY4L)$6pt|zF8rϡ҄A}BU'h	`	A]7#߾R9[~)#y2?87ͣ7^lKd256oPK  	  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/RIPEMD320$Digest.classKK@k[cc֪=qXŃՃP(t))!RP

%ڪ5037ݗׇ' %,3rsmwI_Pօ
yY:Y3d#ȕ>7]
aWew[ENxD+~zpih8v<[aC]_Ϟfvz
$
Jm3[|kPՆptz9Ϩ]eYcBjD$3¸vS&0$C,k
|L<g`˞PX*,]'n6IEE3-B?LoZP-0tՅ;L?#=7"Y~%ZD7PKҏp    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/RIPEMD320$HashMac.classIK1 _3׺ݴz(l,ǘ	u,%
<
XX ^xyx}p-r{v^|E"5b4:%*sԱfA_\Ҍ&*z\?~;ӫ ƞϮIQPT)j`}[TE{;*j$J 2,ڨcɆeV*ȕC:>Zj0l3K9iU3X))^MC۬

XPKǦ    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/RIPEMD320$KeyGenerator.classJ1OlTKQtQ(3aLN$-c*( >jސ(A\dt	7Ë>^xWHEЖ*OrEEĴI9TI?s
GJDEµKy{WC{d>|yAAٌєe	},鄃oy(am!.\lcȘ%i5!ZǺ  >}ß
ZumaPKX    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings.classSmOA~BZDQhH7_i44Rm01?-wqq]1,5)Q?8+Ph1|}ٙgfw*ːd22FdJ -Sn#WpcePm˱bǙ
禈+"Qj/*]
dg{cݬ]P71:,	i5#ofs6}Rp
<17-z6@~`.[DѢZSآ։1<qݴ~IfГ>Ȩo$LJ"aJU	11LdRf"[|7s/20{eu.}T%)PT0[
fi*(ROI \h%1nSXMˮAY8Ywt#,}Z,y16:;M۝G1@뛼:3UFC.D`,[X
>1V$x7<$RPK6β)    PK  C:U            7   org/bouncycastle/jcajce/provider/digest/RIPEMD320.classMK0uV|=+KAEvDŃ,
},O?J|NKB~3OUbj@XS*/	TM̔$5"e,'3\jj#2&)eUqpNOhA**MwY? TE	xMh@t%x<2*ߛ뇙r8B{],ӈ8:z<zC{+M*\cnPK$  	  PK  C:U            9   org/bouncycastle/jcajce/provider/digest/SHA1$Digest.classRMK@}ؘjj+,A

U1M!+ =ٶ*(ffwy}y}|<Cqapxae (zubBnܷ:S_b^;"=0L|5dT5y87b_p'	cɻ??[?)m}7F"~D(e;sL-ǰx+b`![mLqٙZC8:/FC?fz5]&4&M0ݬLk7ÐHWLu"RB!GUF@Yz:1e͐hla;Rt>HW]\0Wrd	ڤ(HPK޺Nz    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/SHA1$HashMac.classKK1OJg:>kEA(Pt%]L)(Tj?%fF1Nn'`=zub^=aO<&
%:	D԰	zUpąa='S!L'/*z\<9f(VSknS4(-
Jpؿ
XA5eM-RJ!.Xs`݅
(	$	Ʊԣ#
zX8VmGv@w3^=αcuZuݱPKI{    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/SHA1$KeyGenerator.classJ1ƿݮ럭z xh^"{z*<ݰf&%I6C)zxP'M}2oϯ :8Q%4[څ^^<^^s5J轚ˤL.gVX^OyәVrMSqc'룮~r:Vέ(h	5ClhdF%pw[ld'@ #*nCȸ`pc
⎳9w6

/ir-? PKޙy    PK  C:U            ;   org/bouncycastle/jcajce/provider/digest/SHA1$Mappings.classUksF="$ZH
BqЗS@116y+HEF2OMMg̴<d@rǞ[&a8p]g
U1>b:$CAŌ5wuD;Rr5X䖂ӹy@"Q*5fVHZR;2Y3Kݐf,莂D5=hz.oɳ!@12]zQpk)V(zV[4+݋tI<$d౾ƣj$d_y;rѸmS5AHTp>CT/ŷo+X:ۡ;"Z⛤Mn%\;V\{Ur	/q1*oSH3
]ߙv=[BX}ko%>7撹VT)YqpH4+^ssm4+!3}!-,alqJ&FbSpvwxqf[~8E2
dQDm\*T񕊲izW&z{j6J$,f?1\|~DzNIi%Ys/uɲ?ꭆ<h5
JqK˸;RR,j(bI430MxAhdqfqx"S)e1'*Sz+MV?}q\-U_(iC=.}Ssxį@&f(޳WX!~6؞*9,rOS]O;KC1؁#vSi]K(>xJ?fM1cIsN n$å>Otd~
{nY8#/PK~fj    PK  C:U            G   org/bouncycastle/jcajce/provider/digest/SHA1$PBEWithMacKeyFactory.classOJ1ݶ֊7OVPVjX`4;YYIʾIPb8ü8DC*GJ+wм:9}Pn2ryԲºx*E*ߛ|b2<V	Y=0}χ]s!Ϩ	rS0bA(ɗNeD$
o!è3MJLG^GErtSLf;k zu4J<&Dk2LXKaw}`c_;
ho1Km<x<y&jPKv    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/SHA1$SHA1Mac.classJ1tN.jPpZt%]L()ә<>%f &ϯ C++{M0H$XI&t	Tk	zUƏ\rfτdP2&G?QrgIsiliUnNѠhR((qj/:\S@rXƆ>l4FI(	8zqc!<|kwMW
d$vnRsq܇
PK-    PK  C:U            2   org/bouncycastle/jcajce/provider/digest/SHA1.class]K0OGYu.TA9?&2PSJ[:Jߎ4<o '';6J;ٕt,0fhxr$/W=R0v0|TdZxJzJ(GѱpTE5C/TǅddMtwg&_KRuV4ne
Gs8,:Ǵ):lʽ}?ehJQ
|b-`D^4hW@e/Y-q MqN\ nPKH0    PK  C:U            ;   org/bouncycastle/jcajce/provider/digest/SHA224$Digest.classRJ@=[ƴVCm`Q|PBՇc.%%dC6+ }Ykffw9}z,C_~!xN]qJԝ!Ci,ӵYVG'"^B^?:c|Y5aąg_ٖ]n
[]Ri}Mki[M~ ZNo<s|̥\++Ȱ?B+!!AЯ!AgX]H~џZ*FUY]c !0}Vr#	1#1&u0C,j콆ﳕƑZRrEe	ƫ1nEym@}L]
E(ژ ])*tS$ۘTH% uibPK~}    PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA224$HashMac.class[K0Ov뼽Ї)b`}PI0;zM&cTpCi-H8~焓Ϸw C?%qLS<D*ҁd"Ig:f?J+^
Ûb"U!\bOd$~=e4.WKgUR'`s+iuEEA	wUž矶WMP8䲔˲6VlXX`1=I@
8Q$Q
=t/bvM3in@hk@{a=C7ko1PKM    PK  C:U            A   org/bouncycastle/jcajce/provider/digest/SHA224$KeyGenerator.classJ1ƿmg=*b[Bc
kfI>S$b

0/C@uT	*v!si/	vNGnG߈ZBs4AGݫE76,eae &|N#FZ-e,4e"e_3mm\X-#2cCn'<<x$K2'l\yO~{棂QPS†X͎sG7Fwuw顫Nn@i oϠw++4?#e;m| PK r    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA224$Mappings.classTmSQ~V]pM4Ͳ(U 
R\+,Ⱛ%>f38L?tQҩ/={s{ιw_~ FJBYB^	$\0  ѳgi	<QffLYEfWDiyЭYP3p^gf MexE. `P*O{󋛱h4ߙ\_\ZiگPԭ쎀%OcUDlwi.`l뙽"'l^=6ôMJ"ee;gFFIuO*Ff~Oϧ9MoP̨[=C;ИiLcR5tRVkV,
Ky<3efɕHEJ)%ba_BJj/d5&`qS9l]!p^<g.ӑ\W*Tf,ⶈawDqOĈ e0V[5JL6Γ}V*aoorfdV6Ui~MM>.0dsVF?&daR-zpIML0iІG2aFU<vcxꂊ'n>l
a7Oż
NcN@{E
n0qnGl0I_
v(SoA5	Nѯ{s!JXQb__PU%)>B	/T*m'4|~2z8KH	X,!^)[BqW .aj$tӪPK[    PK  C:U            4   org/bouncycastle/jcajce/provider/digest/SHA224.classJ1FkMwPJՅ"H+R\L3a2X>%^\N9%7_ %4KluE8S*/	T͔̔K45"e"s|jj#2ؔ2|_Ci=fQjzc'J.j[>iOTQXx@)m0
z`ǆyٜ{mtQ7^a Uou"6b\g6]oPK    PK  C:U            ;   org/bouncycastle/jcajce/provider/digest/SHA256$Digest.classRJ@=[[ccU{kV1(^AP KI	ِbJA)(~8z/ٝ=gff "S(2n9n3lWxueȐoZZ^,cV}_!_1|Y5,aĹglK.7Vf`gem}Uki[M~ .:^ynKi5s̮ ^
>
q
:COv9BџZ*+FUY]c !0=VRq$1#1&t`\4C,jo
g+CAٵY2 "1.MrQG⬍6f>.BH*"Km<"YYP
&hcWV,J~yZDPKcT~    PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA256$HashMac.class[K0Ov뼽Ї)b@t>(·
${i|*8Ĵ_	s;l?KXS<D*NɄJI<,uك{u|:)&^r{/f"DH6UIUf\44e|fkqR)M%Un~N5eB
B.6Xaaن0$)FTÀk-5z._ZfF܀h(jn4jctPKZ8T    PK  C:U            A   org/bouncycastle/jcajce/provider/digest/SHA256$KeyGenerator.classJ1ƿmg=H"{z*<ݰl7K<| JLAA7eȼ?Ⰾ*A՞.e.wv~AߊFBs4AG=y176,ead(:||Vh,0}
g8Yw۔Zlne܈Oxy<=4є/8xsi8a{⣂PPRlcDsGF7FwUw龫n@i~`'|cˡPK :d    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA256$Mappings.classURA=#Udwx%D0ѠÆ]xĪXjYd J_zzO>; .c/8s8qIS.2h{vQz>7î\/
2tGs#ӶW:b=Op*َf
՜R1,g牢3]*N^z: /-W[RyT:MM=7%j|Wl(hd43CjBtQP.iȰUzCH_dD/S`[e]\v%^X$._:ayw.7,	hJ#둼Nqx.$Ų[4ˎb	/ISx΀؞oNdSs3+[oK^[K۔,Xb[~cS#f0+J2W1kyzfpk®37P
Y:2ҕf~9XC>
4kk050͇`0^d~bYOcIZi tB}c̭߈LU{M:q6slAd5q7uĐѣ~qC:.)sue"ø0^HEp#WU&e"bW&בa؞*r3{Cbao_j3O驋VFޏxBV-!l{+h
LO@2^DS'ݍ8Ck%p#Ƕ
}Ʈ`G`Fb84*
~@3ZщPK:.    PK  C:U            I   org/bouncycastle/jcajce/provider/digest/SHA256$PBEWithMacKeyFactory.classOKK@ִM[͓RQ/K
޶1nH6V<	(qŃt|>ZUvgP9RZc郲wT`;8dLg\B&c)bIdᡊ(0ay^;s!Ϩ
i3SE%/ҔQϭJ	H*>>*>|a{KG.YLҎCV*2δu`(
c3lPs`.=,MT4w~	mZw`kPKL8    PK  C:U            4   org/bouncycastle/jcajce/provider/digest/SHA256.classJ@MQ[םBp@l](KEtB2r%|(xAp̼Ce{瞡vdb3x׺ԱddPdaUΰd&O*yEdHdlF:#h^-':fK
|PR=ij2%&x&RQp88Ghxk`U?iW?c{W1
GZMnu&<*9YSmZp:/XzJgHBl׈-:OPKy#  b  PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA3$Digest224.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`Fr0Ȅ &;;+;3')Hs!02x9$3(2p  #2I O	b`dx{#T
?q03uri>N PKS   L  PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA3$Digest256.classO;
P5j>/^@PmD-c$e%Xx %nDVwafYzC5+BH(;?a'QNl])Qx=	H|%~g/?ԑ֑ё!eOLCO̯'BA QJ*`p,)^hTE`ʄr緧XyNOPKs2   L  PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA3$Digest384.classO
a=`~߼@[RbZُ/4JVx(#Ŗ{sܺAk4tcPv~<"h-V>pٸR{2*ٸCbO_3###kCCʂ	$_O`σ@FTXRĭ橊+htA+3#I 	PK}@   L  PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA3$Digest512.classO;
PD1~߈ ZZC"H^<`<A[݅Yvfa
@%\1h
'8dЎ
_G;yLvo=w	cFȄ/{}҃NaG0:4Y*&,zbo}""\)D
bmPHF)Vhg@G&qPK#   L  PK  C:U            E   org/bouncycastle/jcajce/provider/digest/SHA3$DigestParallelHash.classR[KA&d&&Q{1FD$"|T0/ O7,;*ORPF42|ߙ3s; 0e#5rӛ^)2y}bڀrAiԞOPFm"=0OUVew$p]b_8ntUWc1W8a$OyVkW(cM`|^gxmt߭H0dd
^0,w&]v0k;i;WzDkQ{MXBB	)7\ygQ^jƤ+^3ZG+_=t`@D-+%R<%&IE
w..C,|8k [nt|9kr/V$E\FICPK8]    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/SHA3$DigestParallelHash128_256.class;o>Ff
0FV
OOfYbȠ__\X\_P_ZZ\h`Or0; (1''5#8B,LXXx8XSR+(Fϼ"bENq `3po*BL@m@@ PK^Y     PK  C:U            L   org/bouncycastle/jcajce/provider/digest/SHA3$DigestParallelHash256_512.class;o>Ff
0FV
OOfYbȠ__\X\_P_ZZ\h`Or0; (1''5#8BLM
XXx8XSR+(Fϼ"bENq `3po*BL@m@@ PK     PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA3$DigestSHA3.classRKAKR[L}(ʂ [=nϨ
hV-jafggofvfޟ_l+n\13؞9.TPhX7,+\F a$[[+}7U(JIu^M߾-y]IލQ/pöA(o\G=?	dn#Ii`a:].CQwv狿Q``#&K`Sh#\iL$1՜If#TC3ϥ׀CEX,EJ(YGt
hO^^hatItalrjYKXh#:I$yMӘPK큖    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/SHA3$DigestSHAKE.classRkK0=qӺZ7s&TPPPé]FGiJSW
@Ao6_@
䞛sMrt{`qxi[صnE>@ŭr1dkvݶ<ۯZu$ a+{"Whv٣,yV8c6HX:>})]sí uS8RU\0miTCMC]CLKis>wTxMZ3W$NcPyieH!@?2:VfL؈2'
BMpaɒ(>-%T)0ҧ ,Fp7wxM\A
DDE3 51T)kL< 
-<8i
Yu~agPK҃K    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/SHA3$DigestShake128_256.class;o>Ff
0FV
OOfYbȠ__\X\_P_ZZ\h`Ar0ved'GkFbvE;;+;3#s~J*#7MBx<RsS8 #2I Of`dhddH
103si>N PK*\   d  PK  C:U            E   org/bouncycastle/jcajce/provider/digest/SHA3$DigestShake256_512.class;o>Ff
0FV
OOfYbȠ__\X\_P_ZZ\h`Ar0ved'GkFbvY;;+;3#s~J*#7MBx<RsS8 #2I Of`dddbH
103si>N PKo   d  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/SHA3$DigestTupleHash.classR[KA&lfKMZ/IJƂ}Piegل_,3&XPD;p.s93gn\]ìjUOue~'{

tP	Cχ
xs:M&G(q"_~x"J|2,<N@U29U׋GQ"Iu@ruΰxnˡ7
xOL[ROW&i c0@րi5zkNȻB;}pyiԣw$Y[AB+h,X2òV&Vzːn.
~pe~ЊjWJ(lP9ooΐ0EdhصȝYiwc^LwF
tO-XݮkBxbL&ER!$6PK    PK  C:U            I   org/bouncycastle/jcajce/provider/digest/SHA3$DigestTupleHash128_256.class;o>Ff
0FV
OOfYbȠ__\X\_P_ZZ\h`Cr0; '#8FFf,l<L\\,)6a73//9'8Ah0!3ln-AAFP;/P;'c PK*q   t  PK  C:U            I   org/bouncycastle/jcajce/provider/digest/SHA3$DigestTupleHash256_512.class;o>Ff
0FV
OOfYbȠ__\X\_P_ZZ\h`Cr0; '#8FfF,l<L\\,)6a73//9'8Ah0!3ln-AFA&P;/P;'c PK   t  PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA3$HashMac224.classOMQ=`>e+)ٰRϛ#hP~
D{sth.ҍYB١Fk
<I[)R}}OEJ|1wS7s!;dMMdLd]H9SW&;Ҩ`RxKS)R*qA	+`"OI PK݀   P  PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA3$HashMac256.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`Nrd#S3Frt,l<L\\@o8秤22p!3//9'8AL y"L@ #vP5@R(	8PKl   P  PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA3$HashMac384.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`NrdcFrt,l<L\\@o8秤22p!3//9'8AL y"L@ cvP5@R(	8PK_k   P  PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA3$HashMac512.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`NrdSC#Frt,l<L\\@o8秤22p!3//9'8AL y"L@ vP5@R(	8PK   P  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/SHA3$HashMacSHA3.classKK@Ԛ4nZta

uq2)MRfR!?U?%NnD8΅ϯ g8 w'J2&%jDY3t:l&4#SMӻMЮ#5
'8Ō9sA*yPKҘ?qe1z΢HJr:K2-̴u6,6Q*"eV5eL
RZ!.p`Ӆ-~
GB'Lkцgskt@731<̱c'GmuMPKFࠤ    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/SHA3$KMac128.classOK@ߚճX𐊰X
b=	n%MVͯ䩠Cқ8o.	=&E\LkV'1_dT2ٌÆ^Lp
>uY&Xvw;#?8\3l&V-JY*EF}8R >lb$Y&urc!BɕE\{+m Uw%v_tif:PPKM8    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/SHA3$KMac256.classMK1߸m]׏VbVV=(BKI(
%e?J
<T(1[zgya@^ԝ4`\\NXT2˹-Xƅaq?&8	xV,QSi,\_\i3eI`R6F:3ENѠo9;	a0 &E"	aKi8tPqUJ[n:@u@
C˭%v}YmCPK<2S?     PK  C:U            B   org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator224.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`CrJԼԢĒ"##F[XXx8rOIedtI,.N-fdǰZ 4E `a`8lgU$r|@@ PKzp   d  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator256.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`CrJԼԢĒ"#S3F[XXx8rOIedtI,.N-fdǰZ 4E `a`83poB@9v>NN 	 PK#Z9   d  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator384.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`CrJԼԢĒ"cF[XXx8rOIedtI,.N-fdǰZ 4E `a`83poB@9v>NN 	 PKj:w   d  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator512.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\h`CrJԼԢĒ"SC#F[XXx8rOIedtI,.N-fdǰZ 4E `a`83poB@9v>NN 	 PKXou   d  PK  C:U            C   org/bouncycastle/jcajce/provider/digest/SHA3$KeyGeneratorSHA3.classRN1"r Ao8O$$ewX^0m`ivҷW ($K=@-KB7u Һ7YU̶'HلQ4ƺArTcgp9S۳hSs˧7,!jڎ5E?<?_t4A{A_oŃ(

"

6RRg5AVĹ/'}}k |*T$U-!%(bؕ'a?p ~FsmfM.w	9#0A/0/V5W#vLpplf{ZzOFEM`| PK\z
i    PK  C:U            ;   org/bouncycastle/jcajce/provider/digest/SHA3$Mappings.classV[U=S(C[j-e'eh5 FB77!Lj[}jS
7P/g޽%{o ]I"tvn' IM%ECK##	A0L!"F	A0(8>"<L	!L0O)7#F"U`t=Lw{m#u2=13.dN$#ƅ&CFN"ysܬeH[19MzH*grБg-٥PT{FԈX\\*eءCEQo2fr̢gE|'چDBvmߨ"Ǫ">;JE|C"!"Tဿ?W֕D
nn[fƷ)o-*U7Ggu";t"<E;n{R5qEE`1vc|oͩr;@uqEz8̎A,n&fX3}}.5bŎ#*Y#VŢfd.n(pE>V5fx|jFeѼq]WLgW\ML|yKY˾?VNimuG#>KO~k`2nF#L+l#މ\4Ih7j&ޑءi#Ѥ9iqH2ҧCw67YV=Ao_fe2Wag2ZVYAZ=>)Oh#
;Oi_>H)8&_
ř=<!ya2m*N]eWW_ހq<"TrxCCCy'9<aUD񢊧9Le^WUL5&Ϊ8n<78-osxû>8|"^3O8|V3\Uç>WPR"1PgTg2f0ȬM쩰%\8de:iv\K-si4A/bZLțeL"or1KlgPb,cͳO%2IRqt-?~dNkfIVT
ٹvuU:IBis
9jPڒ·UIPښwtqłLUW+ݬTnIDޠgVk;3dA$.%Z1	-ZG^za%{.PK?_.    PK  C:U            2   org/bouncycastle/jcajce/provider/digest/SHA3.classNQeӂTT@tPjEP	9:iN!eGaS&=$df=k}~@,
o[h2YulGnVJFŴ?ȥR-9ΦT6B1E{/n\0:
cfcc
UT[Xj2X$%l r4Tq<nL.}}YW7PM| A'ȫi4òtM3SH鵟˳;VV5ڐ4I=2yJeEU=W7tsgҴT!*2+h
tS%8+8'	=ࢠWpIpY'"\\\XA`Bk"-|{ɺ&4:תS35\oLMP0|O0o穎Z\WsRmPMgj=TS쮭M(,My[m#_1MD?nQ4 n C&Ȼy\$%r\&G>Jd|H mr|D$u2Bn+2J&c9A!'m2N%'{)"?"PK`At  "
  PK  C:U            ;   org/bouncycastle/jcajce/provider/digest/SHA384$Digest.classRJ@=1^UV1E*(T}(>RRB6d_)(%ζ^j`fvgϙ٧G %,0t-wm>ֹr
2=˯eut,y0̓>'UʒfMm^0;եY=Y(j7las3ŅgV12iנiՐР3d+?d0/T>sRkp[QhV~F}Ea@nՐr	1#Qu0\!V[CJyX,)UIHmːh<kbRt.S&[HWxMLab͚#l:4EPKTx}    PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA384$HashMac.class[K0Ov뼽Ї)b*(·
${i|*8Ĵ_	s;Gօ%a)E"\'dB$f?::>A
̽3|"$*h\N44e|fkqR)M%Un~N5eB
B.6Xaaن0$)FTÀk-5z._ZfF܀h(jn4jctPKh;\w    PK  C:U            A   org/bouncycastle/jcajce/provider/digest/SHA384$KeyGenerator.classJ1ƿmV=z<==+b[Bc̆56[7_SA,	|a~_+.TZ	AB*i/	m/zg]FB	l	:N}1W\P˙-h,gBç?:B&BDX5,d}կnSNjʜߟPy{h[-͙JعT
GԞ`c%;>|A5.6;Tsf08Fຫ 8}Wa݀$!y|DD>p`ˡPKE    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA384$Mappings.classT[S@HExoUʭRVEOΒ%Ntx73e}G9mF_Ξ|owv?~~0'TУ3
UpNy\1$AZzPkifH8Z[O+%CY':Ã/){Ұ-$tO֝qs#ik	q$8L>'Jj9و7SV|ڇ&P,[چS)(@D]R%+cJEU,s".p/67kXb a==m\"<佲f6-4;rA_-n:Ɩ\:s1ݱ\OϤunx);e%w6%-%[7^*[Ԉ^'z٪s鿖k7}ayN #V+f,#$㖌2de-6FLbyR`;xk ܊у&cmoZ)CTF,~j*.`\
SqSUqUsT\CaGLLc:;
 A"DOfV 
,yaE5[}7ŦTH(#|2}Urj5LэZwWD^`q*j
_İ֭k^=I;Fm$+PF1q 84om;k`K`
4)$UM`3_
PK=    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/SHA384$OldSHA384.classKK1OJg:>kbYXZ	%e%I,W(1SG72	9.v#A\\%jĞig&$,#f˓^z݇ǿ1\Je TghٛZ,Q!򵰯(ST(5
Jpо-k)j%L2YvQǊ.<TI 8ZML}4,-bwiE՞p0zf߲ڰ
PKd    PK  C:U            4   org/bouncycastle/jcajce/provider/digest/SHA384.classJ1ϵ?Q[u'.ªE
Vt!O3aar%|(Zrw/M?^ tK>Kg7ƚ\iNhjdl(GpOVOrEbdUt&AWqK8)'ؿuӒrC	%G>+,lQ|WU@]@4<PX%Ti`~Fgo-''9i="6e[ܵgP`԰Ģ
xXfn2Wfl3w}PKjT  L  PK  C:U            ;   org/bouncycastle/jcajce/provider/digest/SHA512$Digest.classRJ@=[[cczKP[1T,>(VACA1M!EJA)(H(q
^P3;{Μ><<@/rпxN]qJԝ!Ci]Zky
NDX}~pes?tǐj.UYAìϾ-ܴk?f4~Oki[M~ .:z<s|̥WfW?B+!_a@C\ΰX'-J?&U:FS]c 0}Urcq$1#	taR4C,jo
g+#AٵKTe'DcX]E#y3-B}L]
E([k#Y)(tm$ZtZ"wl:$+PKq~    PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA512$DigestT.classR[KAƬM.]LPeAՃ,;

 zGEg
P
s̜̙G kgJg}۶k;#\N]2`Xhn(cT.<O\Yl2$>̪CY_7µ)atKrw6ٰҮqK4G\Jߘev6GXjЧAЯ!AgȖfŐ-?^
~EQ%KFǨƔKĸrF5Ӻ7e+%~1fD"mcUC4O@}1uT\ɷ0x[k!st͚%wl:q!+PKq    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/SHA512$DigestT224.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\hjh`F0/<FF&,l<L\\@8秤22Bh`dK-rI,.N-fPdjF d<@%`;F~ )``g| PK   N  PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/SHA512$DigestT256.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\hjh`F0/<Ff,l<L\\@8秤22Bh`dK-rI,.N-fPdjF d<@%Ȱ{#T
?q03ri>N PKVx   N  PK  C:U            <   org/bouncycastle/jcajce/provider/digest/SHA512$HashMac.classJ0Oi^N]"Bt\TЕ 2at>>%"&ps;cl`?G)"\'d"N'I<5::9<)&^p{/f,XH6ɸ.	Ngq~.^:Ө I&g\K㤨S4(-
Jݿ*<jʄA
$\m`¢
KAIS
C|c|kiMs{3XV^K|ݨmΎ5X_PKv    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/SHA512$HashMacT224.classQJ1=cQUwV]TACEP.ZЕ"tPSڙB?Հ?KL ¹p	
@AJZ\^DQ(ƂۗLFXG,Ú\	Ɇ:zVSԛ&7O )6@ZYgWH00GS
,V6˙:fXH`%
2<4$(PF#
79Un7mn@eڞ.#Jk/b!uG	(~PK-x%    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/SHA512$HashMacT256.classQMK@51iUoV=DAUPRГ"n$ew+gy
XME`>e~|8&=vaKDS2yʙAL:ݰ'V>j5d$OG+1Np%
YgL=?*"eHz͔0j%66ls;pmMgSC`a&]8XrbZIWT~q,dk
uxbʚ`L(PtV2fX{-]=TPK#    PK  C:U            A   org/bouncycastle/jcajce/provider/digest/SHA512$KeyGenerator.classJ1ƿۮV=z<==l
1,͒},OSPxP'M}2oϯ q@N	2ɰqzF܊FB34AO>yKΌ,,^O~)g)j!ci,a,p>W)g3atneF̈Ox{<4<4	qf,OĹ$;
PEe%>|.A-Rp厌2f08Bຫ 8=Wb݀VMZ_Dw`ӡPKx    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/SHA512$KeyGeneratorT224.classPN1=ԥ	0*B3X2LI[H\h~79693
d	AT$T=<{:m"z'IL@s#/\]'\1#4`ӀӹKrECqmg	7|wNg3n6r~s4eKFcDtlUI~nkRF[kvQDEU/CNP&Lk	jJV~Ćuذ}l
R+V?|w,6,PK*    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/SHA512$KeyGeneratorT256.classPNA=WKdQKp"
[+L!.HH4(DunrsoO/ Z!MHcBLFҜ7w'Ml
}ڄ*yr ԵHD$7" O}>x)'B6v]ꠓL%}02d=ŦAЫ
|Yȣ*
:oЩKHak
Q.Bڋ'PD\k	E+X?a,V [nJ.*+_]PK    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/SHA512$Mappings.classVVUI2f,Fd
U!&B 6XqI3-Zo$.u-|df	;{rs2?`?10\acx-kqA!paamq	I0CamRiK،Y4lG@CKcc㭻I,QRNH>ty-[Nw
˨N& ػ)}</[LjbtL@O|>*e:Ny|RL*j'rmEÝ2! vPP8<
mbh3^Nj4ҝ4T;eNj:DB3\*ퟸӳ٥LIG:{fdWi6KEɑ ݟ#ܪVUIu:tf:Mgh⒚.j[[iUk,nh8&6Um!%x1LsJEJOVqz۬nTkEemij;CQmkTLQ9Yݰs4j)[4[ϥRRʚZeV1iBI{z#>4]o\wSG}x	])JgeNXĂEy' cH
>YTaatD?T%o/sx-^Ù#LwdXKKut81D'|Op$m%$|5	ssf\}nf..4nt	w`HF`rSQ*a,c3T0r*j|N$)k_Ʒ/ CWBE>24#iUs|3Рfao
~ʃrOFկKEy$9B=8u|M$?(8_M$5i;l{|څ`@Y~Cg(a'[CA:x𸎧.Y:7N	f{כ,|_?
ӺPK
U  
  PK  C:U            >   org/bouncycastle/jcajce/provider/digest/SHA512$OldSHA512.classKK1OJgZSVĠ(
uQAq!]L()(Tj?%fF1ss;'yx}p
rHP;W/"=dO$&%:Pذ#h^_HlgI3M֓?&	k%$V>FWR)*U%M5Ys[Ŕ
H%L2wQǂ.X""O4oPύhX2[LWm=)A+/9fյau'PK    PK  C:U            4   org/bouncycastle/jcajce/provider/digest/SHA512.classYK@Rb"
VD|P|CM)IIП?%޶Z[4;'_ 66NM[UVrg;|zYZE>_R'_,jH++dȒc\O]dN H(pLNf
|'
`twnZ>oi]Cr"	>"(!F4B?a0HH4@0E]Pśy0֚(jF$Gn,neYmNt-߈h2$1nk`l+wɷ[<aEˈbg2'kI:sfn2g!,s9a3w?PK UC}    PK  C:U            8   org/bouncycastle/jcajce/provider/digest/SM3$Digest.classRMK@}[kccZ`@ xܦKH	ِJA	(g8k[Eξ7o3/O 0P1dv_m*fXKn<p>:q"e#ؓoT"#nɋv}a;uK[]̓7lGa$/z${~,3ke?k]	2CLbrv&ʕg[N[j7Ϩo#4F-,`LƵȢI9Li7k"ifu֣b@Du+%JT%ҳ!wcX1V	n?/BH*R	Qh4zg,cv*;LBkb#("PK%_4x    PK  C:U            9   org/bouncycastle/jcajce/provider/digest/SM3$HashMac.classKK1OJg:>kE.Bqa]T+A2fBMGIRa~ )b.wO89#AJ%^R=aO<F	lB50ߖ-Agsap/f*TH6
^'Cn?.2YK`s"vÍtUEAA	"}g,vur	P)duMl#AmDAčWR{:}7^9αcu;rPKG    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/SM3$KeyGenerator.classJ1ƿڴg=zhT(xaͲMJ<| JLŃŃ:o2ːy{~aUJ=!]H%%]Ax'N6{s	,1i٣08Ox63z!SaX*3atd}կV[Ns+?AQuA5Ke?'!*XN GPu*Nʓq}wo#lu$"xApDD>bˣPKi!    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/SM3$Mappings.classTRP]@"7J/P( *q9N2Mw?gʨ3~ӤZF_gW^sr~@:$%HP$\' 18oܲHef&3+.WBDHiE4S^0.t`V,-ܕ	_tS4ŉ	=MroVf<i+SM\:s*%+Tvw涡U8s{(vJL{gHZdf̢̦]1L}n(95RVy4fE2ˌzI]ʭofgܴmWH(@/hquR7HQuS3^l73-S]8Q^Vfr
`&khJ_F.f#⮈{"Pz$ZD
C2Wp9PrcafM&KW0ٙRňt2ȁqqe`BF?~0QL3OH9,n͔YBK!Fpi"*zhhma3QUBǨ"~#b%E b+V|*Emȣ+D<DE{"kq&}nN!^Tu{px _W9 QoPK(Z  p  PK  C:U            1   org/bouncycastle/jcajce/provider/digest/SM3.classMK@߱iQ[?ϊ?K	7MȦ,O 8+x;3_K #Zg/εu!DfqgT]T~Jʥi].*bB+_FfZeȲ*61Llj|-!A*%@ʿJMk*KR/:B+F CLǮwsFOrd.h_c[p	D!>6ku7PK     PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$DigestSkein1024.classRJ@=S1V^
EREC CI
IEJA)(H(N.w9̝G XfS^܉}ۮF895eĐk~*#4@\:<\3|UDX;W-#[NxDV9wV_
n8
Bqx*J\JߔUv1k

}4
t
󕟮o1d̕+WQT
3뛷$^A@#*(7@
c	1#qt&Q5]ӥqK<,y\bʥ0H+F
d1C$qL0
bh&劙ͷ0FRP-m$[tảZ" QSLcH PK    PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$DigestSkein256.classRJ@=VcclRjE"`PA|LӡLDѿRP

%i]pCgιwf<>XC¬J;vomxCiٖg
Etx"x}A
aͮyT$Us2A$Nuipyití gn/2kǥUWeNv[GCR!WÐY?AϛI|~f}$1Ѕq$0!冓Hc$Ft0܄Nؘr1ʢNK}36l`T|eϖKR4s(@N_C80T+h_1M3[lajI)> 
&Km<YYrbCPK    PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$DigestSkein512.classRJ@=VcclGժBqauQi:Ԑ	(W
JAA\QP3;3wnb!aV
G]f7]ߍp<snˈ!ߴl˳UV[":<
F{ r0f<RaêS߹plyr VOＴZn:vV3]R
\ݏa_|M;_[^ЭAУ!Aːtӎva,T䎂ߤj>K?yJ8bTِrI1D#:RUnB'lLqeQɥ>ޙAd0*ògK%fZ}bdP KQ/!uarWPѾb+fՒR}@L.۪yi
<:13PKi     PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$Digest_1024_1024.classOM@}-@DqąU"[r8~6NI޼7y<ow CTV{`IɍF?o}o~D:拝a|s{!*`sa <4
P:V3sD4{ZZ4RtIՑ!؝+
LF=u PK   g  PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$Digest_1024_384.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Kz06402!S<Ho	;;+;3K)vfdK-rI,.N-fPd @&y<& CKa;F~ )``g| PK#6k   e  PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$Digest_1024_512.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Kz06402!S<Ho;;+;3K)vfdK-rI,.N-fPd @&y<& CKa;F~ )``g| PKF   e  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_128.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Cz0625#S{<Pk;;+;3C)|6edK-rI,.N-fPdF d<@%а{#T
?q03ri>N PK:G   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_160.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Cz0625#S{<Pk;;+;3C)|6edK-rI,.N-fPdF d<@%Ȱ`;F~ )``g| PKY   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_224.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Cz0625#S{<Pk	;;+;3C)|6edK-rI,.N-fPdF d<@%`;F~ )``g| PK$   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_256.class
@ƿj[ࠂ:.΂(r^|,'Ĵ	y<ow CNwŐ,TH%)C?C?No}o~D
NH0i=ϚkB07Q0Qt` W=4~_r?Ygg{OkтM|jԡUի3\Qw
Y0Q!֦~PKȧ   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_128.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Cz0654"S{<Pk;;+;3C)|6edK-rI,.N-fPdF d<@%а{#T
?q03ri>N PK8=   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_160.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Cz0654"S{<Pk;;+;3C)|6edK-rI,.N-fPdF d<@%Ȱ`;F~ )``g| PK#   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_224.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Cz0654"S{<Pk	;;+;3C)|6edK-rI,.N-fPdF d<@%`;F~ )``g| PK^   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_256.class@ƿUOlNYTE-r8x %F2d
 ^2d[WɏɄk*8NvoEC:ይa~s^8253w` S=4B~_r?Yg;_kрM+Cuթ2\P<wʤ5Y0Q"֦~PKv   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_384.class;o>Ff
0F
OfYbȠ__\X\_P_ZZ\`Cz0654"S{<Pk	;;+;3C)|6edK-rI,.N-fPdF d<@%ذ{#T
?q03ri>N PKY   a  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_512.class
@ƿkնZ|A9EgUj{ȩ\WIp|(1-.iB$$?BUY24RdЋ
_GG_'{
?I"NH0i5˚+BӰPpa(FF`/y,;WJӽh!>5FnfR׀A`wk(];:lX(P PKim   a  PK  C:U            N   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_1024_1024.classJ1業nP]EvU(*1
c4S0媠Pb(^r˅眼?h 4AVd/\G!UA#ǜ
u<A[%4&h~O9rA:Zʉt"a,]!K0Yp8W+fjʐvf2<9N?eKFC:tY*hv}TB
[	cv	~4?R)apKMq<+v;FxAnO_}ǂۋU? PK3Y4k&    PK  C:U            M   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_1024_384.classPKKBA&W-Z-T"0t%dǔZ	~T4J!q|3<?^ ԱA QҗRI{EPjnvzrV_	}4S<PP㩍/Bߊ%F<lh.GBӑtՅ/qzrj_L<%3+CdFkyHyH{<d
hUʠ6C[9M 8aBG2criĹtXr!R%R$O-@0޼]d?PK*    PK  C:U            M   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_1024_512.classPKKBAGW-Z-TI]+Ah%8Ʈsefj%Q(-9͜wxxyq)d2"عJkRwpTEY7CP<PP㹍/B߉#F<lh)'BӉtӅ/ywvzf̛_L<	%+CfFlkyH{y)[22СRA)ZQI$ְC{9O 8aBO2crmĹtXr)%RLV(>ܛwx'PK}S'    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_128.classPJ1=T7.mP퀶خ
W%NØ:IZ䪠QbZ\D{$r7 !MTs! p۽+ȅ7NNG3ZzMLS_%'nyr%WD<4VL#pm	W唗
d2F	Nii*  q#hUc6c4d2}[%fK4RX[zylP&AڋF`MJis^ȴ(VbF+wsl>w,['PKӽd(    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_160.classPJ1=T7.mDEv@[lWaLf$-

~%EADNr/xxypJu@=Rݻ\Y~8"E*Tϴ	9Uz"~'7\rLc}NcĈ+:׆.\1N9\NyN&nԈR29V;f3FC&ڷU2hvD:(!F%lh	~ޤԑ6Lkq-\n-mnL\<"7ybEPK˿&)    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_224.classPJ1=T7.mJuS퀶خ
W%aLfJ\ /BQ˹>^ߟ^ 4C U	gRI{NwAHUo&A-!'	u21
^\%4&#O8pAg:^ȱt,Ca,]7!gkÑrW!Ljʈ_<d<d=xrJoFLtT~VuXB
+, J&HXI\.1EW2):,Zx{Fv%OÂ{w PKN	~(    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_256.classPMK1}/?*x xh% "m=
JLÚ.IZ؟婠GiPQ3̛$/o N_@ S	RI{IwIH<9;_:A#!}g	uؘ2yNB	l	&\Ds9e(!7w
G-~2t*άh.!!P hz6g4b*ץVhՇd*ml/t3F8s.;D Q%>+,?\,;EPKt	z$    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_128.classP]KA=}CЃ
2(B) $:lč¾z
h^83r/o NC UB
sA{W~Y;7jA5V!g2HMi/\KAyqTs1⊎Dȵ&{,Xo8SWS^*Ʉ%:3"-AUٜшɐm/ѬHac	yʣm8ϛ;i5PK#֭Œ?Ww,=,[PKCu(    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_160.classPJ1=T7.mĊv@[lWaLf$-

~%EADNr/xxypJu@=Rݻ\i8;"E*Tϴ	9Uz"~'7\rLc}NcĈ+:׆.\1N9\NyN&nԈR29V;f3FC&ڷU2hvD:(!F%lh	~ޤԑ6Lkq-\n-mnL\<"7ybEPK鮤)    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_224.classPJ1=T7.mK]UD;-BUiS,W?KĴD{$r M&HUCTҞe0xROOFIPuH	gFrlL9F$B	l	&\Йr,4PKM?pU$өZr:2mfW)YAқS!*_U
6c	A<?oR*"f08B8w.:D V&>ޞ]bg	ޢ]? PK=l(    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_256.classPMKBA=gmZ-T!6FJIWJqx=(J(QZսpfs??^  4A\l^H%%]'!UqZX!)pfl$(4GDr+ƚ<lx.GBӑtՄ_vC7p5կB&LՒәm1#֥<d<lz<d	Z
iUʠ6GyC 8ybG\1c1
piĹStXr2	^_`w0ނ=>PK+k3&    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_384.classPJ1=T7.mP퀶خ
W%NØ:IZ䪠QbZ\D{$r7 
&HU칐\ޕBO'g
ZzMLS_%'nyr%WD<4VL#pm	W唗
d2F	Nii*  q#hUc6c4d2}[%fK4RX[zylP&AڋF`MJis^ȴ(VbF%Oͱ5EޱXo6PKE(    PK  C:U            L   org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_512.classPMK1}ˏ
^<B	=UD-BSiXSْY

 5üoLydڐ w!~T	C<W<HPi gB߉V(5Ayل:Bc
czͿ'>Gnz˫_L2
%s+#fFlJyzy<	ބ-
u'ZaiVUDEC	 8%r bc\gNaeGȺ+O%v.	PKw$    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_1024_1024.classJ1Oq3wgQ*EhAWЕ4L>3mwZ$|7={?? TP$ȕ	z=K(1-c9¦]ť҄7uKqBPv/$MGTgWTfj=q&~&ly:=9ApDJ.V9
"OQYN6pngʙ:I2,eXf2,b&ME2JPce]a(!p!t>Xczpo!ևxm;2,`7PK	3D|%    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_1024_384.classMK@5iƨ߽YT=	BOe.ukl*_Gxgy/ V Wm6ӚQjAe:K&xRG=JMJ{f.N<={Bag)/~Ok_\yt<(T"g\K)ry
JHWozt.5RYIeAEJF`׃$(o6}_>ZjT4Ik[; 5/|4*(	6l~̆v:X6
PKP|*    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_1024_512.classJAƿqWݶ{T`ELEEvPWALc쬁BBCEHt|g|7"U>{!Ȗ[T:Ek8Dp%dzRǚ=I<*υf'..<BQ9/IS:ו*͟ =}GJqki6E"GA)ˏ6=jT6Sr E	FؕMVȨ1ZK<31ittϧpS8킍B	v&XuM8PKDh(    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_128.classKK1O#8Z;
"|,J*1
53S&S; i+s9p
A"(
T|CpF1\=D4!kԱfRwㆠE\hxh
Me48\mpbjgz2`X-8P)
E
J1OgśLn;2q\*KlXXalc+zؖ 2R
!ƺa=P*#f	Lڦ:X&_PK`^)(    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_160.classJ@Ϙcc,*DEFEuр2N:IJ&6'mw%3p\p
?]KkJ*!8{
d"㐵UGXWqCP͢}.4k<pAp4t
Q2ZO	6~1{ZIy=}GJAzki(ry'qM_?MS80R*%E,۰Q\=lKL{\kQcsnnԼvsbLP{k	?C[FmS,`_PKԂ)    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_224.classJ@Ϙcb,*DEJՅ?]	BWe6)Tc
X|
Dݕ sr@
e;~&{fZ*P-iuK8
Xp%xWc͞^

A%pY'xOH67hn=s&kjFp2`X8P(
JLp=dśJn?2qaa)Tl;pPr
\=%Aq!\kQksԼNkU"(;f=.VPKbC)    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_256.classJ1KlޝEQxYxYXЕ t%1ԹTc*X|(1vW1O|'?_ P'(%\֑No	_A$R4P\&~s_wI
zS:<:֣'sLOTWzLp/~%L׾rz~f*MTNe(%2X$sƛn>eM-⠀LV22TPcXA:7EJ0F4X>[Dlu jo@hҮ3#l~̚v2,a_PKO#    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_128.classKK1OG΢¨HhQ|,t%]	mj;SНU?%fJ87{.'?_ P$HGY^OjZ*%8tDP7qW28bjI*Ux?iJ 8c:wd}@ԙ_A</W%şfX+;nuPd)rb`Xo*Ŕ54R&RpǚdQ 	
sAzJ]rcA	CMOtvpc^
GasЮUVAPK6m(    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_160.classJ1;ޝEQX.:+A4s)з\, >i+EL?9Y z^Z*T-QK@pxK"Rm͞^

AepY+xWH֋7ՒzLp/~uiWOՋ? d+8P(
J@>̋7|ʘFTS)Y(błV	r%	J3Al/e\R!fǺi}Pʇ#X
'C
>thۨeElPKR)    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_224.classJ@4mhYTE84)Tc*X|
Dݕ sr@ezDPZi-^P%7'Qe0#uH& R'=JMJBLOlGoʗzLp/9?uj:şz$V
[qS(b`zo2lʘą\*Xssu|#%Ai!
C7Ԩ5|zTMwj^@x=r=clχv:X_PK4pf)    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_256.classKK1O3ݝEQ`.:+A4yTrUGRͅsT3AU[8鲗x:
$ɰƬR=IO":B#sLO𞐬#ԙ_AW]?k?0e(
8P(%
JD=,7bʘALV3)۰fÆkcFܑ E2i\kQcs6!y1V%ac>fCFmS,c/PK|VK&    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_384.classKK1OGk}wgQaT$J̄6u:S&S;?J̴ݕAL\||~Bu	&pQ@ױ/8djKk*Up?iit\1]B~)OF33Ϳu~r:\9#% V>ZE@A)vxWS 6$HB+,-,a W=IPbA ϵU؆O17;M탚P9jQl3(FXac6m2"PPK%1%)    PK  C:U            C   org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_512.classJ1O:mZP	uт+iLI<>%fJss'||~8C<jfW:
Qd:%2=ťIqۺllݸ ΣBZxxJѕLL'¾wON &|V9<EHA)vkƛ|ʙ:$\&˙|00JGmEP$h2VYT8>[mou7r8k9b-ziӶSrElPKx $    PK  C:U            <   org/bouncycastle/jcajce/provider/digest/Skein$Mappings.class{UI4$FˢU
5

"T+(N!&)+no+
h+~2g2SCy眹睹9 B?a Zzu		766n$DpVm0H$l#C4a!C	r<@!"Ap7½{ <Hx0a/£ <ExYs}	/^$Dx
UkPCCT--RIL[Jjoi/I-mvcM\i(RX:JM=z|{1rz!=݅bnPmeWܘ˅ݘՁsc.+;y2ƅ)_M=z~V4<I%.IT&ZeWlRuJjS6l7R5e njmԠE_TuөLL8ݕNvSzZUwukV	U$R4x%0anb4>b\uM愅se;oN{qbE<WQJ\E}2˕*|W$Ϊ0nD!!!}!a!E!)!
![![![s(oDB|\m5GP4YHa}Ihg3[Sɑ4
bV?ԣi=v|^lKe+FR鄑Й%ّL|w\Ft(ōp.3%B#'ic4,zQ}{Tm僆/
5{]?}?>#q,Y*o$l֋n
w.._9U6W/Zzu;u94'Ywbg >"p$7pT~ě0':19÷!	߈ل>ތv!'9"5,~ȥWzkWM\kÀ
ݏ&q^x6#85^1c-E2Ρ^!1:0'0 l`pYU^`R.6(~	]]&lSyքn8%L&")քU]0՚&iք5]p5K	uJnMXLzkrf9%L&\{sq2<`N=XO%SX)ފeWN#7j׿kai/o^)f%4;ZJ
x6֚"ԖJjǴZ}]o@]>⻣8U:ψ1 ЇQ/PKF    PK  C:U            R   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_1024_1024.classKK1Oc1.mJwBPpUbi$ia~?%Ew8ܓh(4AZd/2xR57AyZ>sΌ:٘r(HnX4&\Йr,4PKףzҟg|shsO;Ljʈvf2<9N7aF#B:p]*lw#ڰvV- J'HX)#)}ױnȸO%ǂEC?PKy'    PK  C:U            Q   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_1024_384.classJ1U]./]BJU4LI|%W xI;	?7 M&HCT^TB*'gMIЈuH	gFrlL9{+[f67	tM2u%k,:Z:ZzISatneD̈M/YA֛S!,:U
S@	 RG9e1c!8Pt٫Cu"^@Q!e{KPK}&*    PK  C:U            Q   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_1024_512.classj1xxE.]PaHYQWЕ1Lcǌ$QJhЇ*҅P%$\?^ qC ]	2zRo^eEЈuH	gFr,lLx/;f67t㕜
M2m%[-:ٴ:ٶzIsatieD̈]/Y{<9nm0c+F#B:rY*_G>.!qP@	 
RO9e1c!8PtٛCu"^@Q!^_hرbOPK^τ'    PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_128.classJ1tz;].,*BEj*\1u)ɴ0;_UAĴ(^N
1vd>A\*\xG!߽
ɩ8#:T3DrNr H%&GPh:0	]"p.E_L:DKNhj  qP hU;#6c4b*=fm4k22X[`EI
 (U3FJ6yqղb++ܻ9ۖEK;p?PK*     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_160.classJ1tz;]."YH]
JLØ:͔dZ\| JL%$\?^ b,AZϥ{Rݫ?9kǍ#zCzOO93I$($i 'BߊZ(Ykxو:LC
e!2Zt`;,;̤HtȈVrV3b3F#BڳY*l;F/#֋pQD 
r[Ye1c!i8dk]-+}^B<<½ckKmYdPK>Z*     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_224.classJ1TBp@n*TU4LI<S$bZ\/	|'
<jm@y.~QH qz4Mz#zO936tjз"JhfM|9sA:ˑt$#a,]"dE_L:%3+cfF[yyy133ѾRQ6ZAl,UDEC
 (wS13Fß1J.yyձ~Gȹ+
w.?}.QPK})     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_256.classJ1tz;].B	vRmW0N3%IX

>%%!_΁$/o N_B Wo	RI{ITu:9;_f#O936tf٣w"JhfM&p6tcXFX5"8c#7(W3NjʘvV
<%N7aFc":pU*jw{vcXE+lc*	a2ծr0fCpp+^-suAFWK,<w8PK!M&     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_128.classMKA/몽խAA)(L㰍23
{+u
 }hB?
	dA\\xG!cwhd3m"AJ&>u+kLo1gc.T%s9d(B7c|v:\uzN'atfdDLu+9yA9CڷYqtVmPFKlb2	A2NlAĴpM^bu!rx

n/eƒOPK`V)     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_160.classJ1tz;].+"YH]
JLØ:͔dZ\| JL%$\?^ `,AZϥ{Rݫ?m#zCzOO93I$($i 'BߊZ(Ykxو:LC
e!2Zt`;,;̤HtȈVrV3b3F#BڳY*l;F/#֋pQD 
r[Ye1c!i8dk]-+}^B<<½ckKmYdPKMb*     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_224.classJ1TBp`hg!vU(*1
c4S0媠>KI?}<h ,AZlK%R08;mF'3SΌ:ڄr HDc\ЩNr$4HKWn?YzѡtW3N&jʘVr6=xjwLETtVmPFKlQvedd$ǎpK^sur
O_=Ǣ%}>PKxU)     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_256.classJ1et!hCX7BvU(*1
c4S0媠PbZ\/	|'d	2 .~IH u3F#O936tjw"JhfM|9sA:ˑt$#a,]"xE_L:%3+caF[yy{<:he}6Al,YB[%TM
 (cf0?
#]wcs/oTO;_]ǒe=?PKz'     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_384.classJ1et!hCP+BPpUbifHJ

>%EAw./o - KsdrAT^N&A#$4N"A[^%4K"M}9sAcHh:0	]"pE_L:DKNij  qP h׺c6c4d*}Vm
2X[`"6J` G#AP(Cf0{?
m{e/mTK^QckKmYl'PKd$)     PK  C:U            P   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_512.classJ16y;].B	]UD;BUiSy,W3EA/s7 g8("G7F$OB:hOCЌuH	gFrmL9N$7B	l	ZSΦ\йr"4PK׍n?YsfӱrW3fjʈvV
<En?eKF#B:tU*NcTE[e]F; jO9e1c!8q8F\k.;BE߬?WW]9]qGPK%     PK  C:U            F   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_1024_1024.classOMK@}knGgQPH*=$<ɺY|ݭ婠G"fޛ7 lxIoD$iֹ* 8=TRԂK&t=+0Q%Dl'I25~I.Yt?,.
ilfUήnOP((nrۋ{E@X'U&	,i;Fq-W>\̱17;v-t>PKi    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_1024_384.classOJ@=k((`$|*f)[s)[!oO?7^3pf93
 :^MmRsJ]5-y͙6\SтqMo,'؛9sA'zP4#͗_EÃdxtFINFia-|><->f|ۇ{p@ X&pU&´,Lk	3F|bd
x/hF."8O PKCN    PK  C:U            E   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_1024_512.classOMK@}$MGgQPHٶT<(
ГPTRn,O?Jq*"x+!v;&$k\\jJE+δ媚kz dq8
oٌ:WL
m$,{? 8AWy..Zp}x>>|-;QC k pGe*¤(eLk	3ZQ|bd]x:G/hE.\bݱm? PK*%!    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_128.classOJ1=q:M;Vע0$ЕPpUb&y$f/*(~QD}p}>>8uG~U\n'즘T2˙-XƅaWR\M
fS,Qi쇄`/עqh9Y&VͭJ97MQu
J]vG!<,Uh`%2V	j"aRSn4Wb2{Ƕ6=qݮ-zdw.hb7PKKw    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_160.classOJ@=cQZRAօ҅]t%\q2ɤLઠQF^89^qT~&BOM1WLP˙-hθWBK	M3]Thʉ0CB0k?>N`<VKNVf&[o:iwRQVB,c6,RA%J	=̘1_mTʈsۮڄ2uj/@qu4 PK.    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_224.classOJ1=q:M;Vע0$0T](]Հ3Σ$0媠~QD}p}<><`c?J:6T`SvS.
Q	nl&ܖ,°[K.fτds]ީTj4CB0k$>:silaUιnE§hRP?a0@kVN$zqc!|;v]
e@n|Ybc'0p1@hPKq    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_256.classOJ@=4Mյ((Յ҅]t%\8<TguUP(qcx/^^c1sU(;$zy!*$ْ\v}/Uqo*TH6JfHc?Z
Nj#9Ty.Vͭ7Mh;o:YJ
QBb$DIQH=ʸ1:߯.Zȩ]mw;xB늄%6,>=!D
PKT՟-     PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_128.classOJ1=tvEAa*HhQ.j@WBUPRQT䪠QbF^89^QWqre{bRpcSɄ.`]J_rAp7|&$N%RDM_&G?8!8s)LZ[Xsn@Q)`;A=CxUhb5
"aRRn4Wb2{ǎ?yݩK>]Z@
PKN    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_160.classOJ@=4Mյ((
J(*d(SI
UAĉ"ps!	7"$bL*i;Лbxə\3[МqCnTM9rAg4a쇄`/עQ`?'8s)\X-9[sfl=踧Q
M,X
A}X Jz1c!h[;v\e@w	N5X]:]ZoPK0    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_224.classOJ@=4Mյ((
-..*+ઌLͣL|?Kĉ"ps	 N؛aWq.siFGb3mRA*^	_1Np7l]^&BD΄6ѿ_~4te(Ȕ^0-u`?A=M8Uhb"ABSW 2byǎѼleEF-PKx)    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_256.classOMK@}4M6ճ((,-VJГPTf)[QvB?%n("x3cl;&QWq.iRMm('dq	N*ᄣOf\*e*KTh!!Z4p^0Jr02cC݃#F=hgq 
MX>*SAj%ZMh{UMC;9|B&!$Bݱꣅ- PK
    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_384.classOMK@}4M6ճ((,jEAz
ʺY4)SA7~\gf@'	nUmL}N&gdB"gS.*䂰7|"$N%RD)>$_FGÓOSNJyRv΍\
a3A=8UhbVAHBgԃ#
JlTA6wv@g	밆X]XmZoPK$V    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_512.classOJ@=i6FmkQPH*
J(q2yrUP(qcx^^aŃ	3U(;"znE!*$ے\vu'Uqo&LH6JfJc?Zwk'9Ty.V-97Mho:`C(D!VFhT(giWbuC-{Ǟ?}kKt>}!:@
PKRMn     PK  C:U            3   org/bouncycastle/jcajce/provider/digest/Skein.class{U.`E(n$1j( QQfn]a;6{vvvoK~w{޼f[h?ϛ¤T:_l!68!'=_7&dtr4Cn|0&p63wԀnpSize1l=Uǽ)aaq^{n?RcU ezmZ:ȟ{KN=z잻F]/vUvUuU$N7f|&[@&TLFTx+42"	!UvFЈiDTTiRJ!'ZZPP2wMՙ"*p:__ku=p*=:GmJNeŘ*j~ה*ecb^]ܘoLdTS4XaWY%TDZ
QȾ߼Z^$"L,AȢ
ͨ%tseG0^0A0Q0I ɂnZ:-	S{%[````_L,l~s$8Xp``Ap0ႸQ$,4Z#m#G		
+,,t
+k1&td]vY]#գc);)+\Hرz`P/Bu3*=@^@V^Sڤ+cB12R(mR٨/qԋoqБбT&
vh]f:\`>y>{WS]3+Ϻ^ʛU6*Ԕ6`.m`|mfOTR\R!-yaĂsPOU,{j,KƊ=A77nwz
ذwn
ۀq
Xt5!!#%אǓ''kɇȓȇɓGu)ciSY3d/y</}d|'_&]\Ur|\ON |""#&;dBYr+#'FCr%?%/"?#/&?'/! /%$/#"7_ߐW+oɫȫkkȟɟ__ɛț[?[?ȿɿQPK]w    PK  C:U            :   org/bouncycastle/jcajce/provider/digest/Tiger$Digest.classRKK@ccwժ=ăA` T=(4]JJȆlZRP

%5037ff_`!Z(^1;0mWxueȐoZmt-aVљ/Z/׏ol_`Vͥ*e4̚hyvǶdr:~(~ui^RRMjv<)j!s̞ο1
q
	
:C:=LXlym,FUsD1ô(f*\&fu$1ܢI+\%qy<\bL|Hgk[ 9F(=!yrwPS!BzR+/HU
]]dTbĝ ۠N1)xPK2n,z    PK  C:U            ;   org/bouncycastle/jcajce/provider/digest/Tiger$HashMac.classKK1OJg:>kE"(.E݉ē2)I*r5`3F1ssr{nqbe	N=b,F	NmB5誾-N=°c!T'*zip&84sI'ilfUnnJQS4((a,"ec3uH
H.+hb͇u6j$'@pR#n4w+nnusx9ޖSՖxPKmF    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Tiger$KeyGenerator.classOK@ڴ1IգC[xjEAj^<7I<ĳJu07+Qecکʔ=ch\\ppy]r 35C'1gYTFTHyGWp$\MKcGj6t*VY05C5L\Td1#Wk=T-.]lbI{
3"T#
QwHw:: d>^//|H]6m|PK4    PK  C:U            <   org/bouncycastle/jcajce/provider/digest/Tiger$Mappings.classTR@B @+Z 
XJ)2xKS&	8!| A) >	ZGs|/w c(ʈhh)C-G])>kx{%n0_ya_ɿ K9nPx!HƌQl˟bfEWIx7E
|x8_#r~oEO-
l.h	lt\bA۠DH=
YܣS떹
"ߢō}rmSUGͽǑߵlsfǪ#kkΎm+B=[z1})Xo[%L]˦7
oήEzX
sm/ʫT>RaP}DJD4;5$ܔpKm	w$IǠ-uapٕѳRRyw"%H#GʡC#. Zgp.Tt!UtRe*bDSc<~<
<!lSxV$91E]oWD&p-B
9ug[Ra#h"!|CLcT蟓&6ղZ٠a*riM:]|FVF,= T1'#_PK(  )  PK  C:U            B   org/bouncycastle/jcajce/provider/digest/Tiger$PBEWithHashMac.classPMKBA==_}\h	Z(--p9tDߓ1gu?*n",˙7 (kA%#iЧx9gڌj>51
@hzT'kڽcgو:UX	ZW7LW.d"Ό6*dd8m² =)v(zc׃=>JN
?":cPAғGlVxd*vgK%8Jx_e9^xPKdfp     PK  C:U            H   org/bouncycastle/jcajce/provider/digest/Tiger$PBEWithMacKeyFactory.classMKBAWR]1 %I0ڍsO\hܟ*hQB88DCjOJ=;bh\O?yb2,[hKa]J<"LTy:7<.39O䌒|Tʽ̄!"dƉX

qwBXǓ,!FiG{ZC*1YDd,o`g5_7cA[Z{c
T>PK[~    PK  C:U            =   org/bouncycastle/jcajce/provider/digest/Tiger$TigerHmac.classKK1OJg:>kE".E݉ē2,W(13-nd87{ϯ 8 k({Cp	{I76LlfS4ְ'W]F\bOd3Pҙ_IIűZ	6*bHF:EIѢ`WşUS!j 
6}"hPI"0HC$BG]+uuh=]/ͱvPK?I[    PK  C:U            3   org/bouncycastle/jcajce/provider/digest/Tiger.classJ@ij\ 
hTBt=iBLJy,WA#8̼= h`!{Plٞ3:>מdUGpgUİ#WGIGi1
=Ёؖ#qCLOA6YWÞTlfhd{V&n05dL*3e{8"(qeIXSgw@<uo^x+PS/Jm.u#5-T(`\S-',<~^X	i-@Ls*qF׉s
PKyߡB    PK  C:U            >   org/bouncycastle/jcajce/provider/digest/Whirlpool$Digest.classMK@ߵؘj~APP<X=U1M!+ =~((E
f>3}{~Cq0n0xu"|nܳ:/O2:	Fvt rϐ&U2;V'_^Hm pBtk"|"Onɰo&mg`!S]faQY!~Cm
V
'a☴0f!)Jk7@
3&n8洛geM_dsVֱJ	,Ue:Q1<cW-, 0RjU7DqJJIXl#K*K'vl&&APKJX~    PK  C:U            ?   org/bouncycastle/jcajce/provider/digest/Whirlpool$HashMac.classKK1 '}g}ݴAD`=TЫc̆6eYT؟i?%fkу,b_L8A{ ]X+͈=Y,R$&MfI,{+%ZG7Ncʅe{.N~i&Od*fNpoр⽳?6N3JSVz'EBQQP]Q|Pɱc5@kXACI@nX~ĭ4.҂99^]M4>PKXo    PK  C:U            D   org/bouncycastle/jcajce/provider/digest/Whirlpool$KeyGenerator.classAKAQsu[+e)R!6,23
:	~T4BC
P!(;j_d+:
û8$nxq3+UL2ir"7"s
%+1D̵ӹPi.eJ0l_tXpDDFt4qPsP'ÄMY^}Cp/g7,Lkq
N7E6u{i
q/Ȫk]?PKOଡ    PK  C:U            @   org/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings.classTkOP~E`(^Mac[aCw(]JBUb2& .6/yO9O X!˸&_Ơ;RtЅ1,ww
\c苾%C >RiXL5p]ȹxf3ȯyYX}:Tx6u1]
tL*ȫUaiLmCsօw}Ռ]fJcXam]ݲ,Pg
VR5\[͕Lq"4/Wgl!TLEMU7VmR3Mv|_uԆ^'{"asp̪mWHfҊ6=I~ЪKpS-	nK_Tza*Yti-yQ^jOtBIa[sCg;5"vNWX3_ex>W
M
)1C!0$<lQ?E/o3tg2T%gHZ7c40TOTȦ)3y_z0&N;Oǘ?\
#S7,t%7ݘLD]daADrsE^}\201H PK(s    PK  C:U            7   org/bouncycastle/jcajce/provider/digest/Whirlpool.classJ1FkMV\Pp"TPNi&L30},W
.'$|sZ'Oεu5Tr|Fׄ29/N/
uadU,+?dj3j<UQz_.;7
esNDi¨UeA ht@W Nꡇ>!𷯪oN_?.T&<bݟFQܷy5X΀x<B`27-s7PK4S  	  PK
    D:U            &   org/bouncycastle/jcajce/provider/drbg/PK  C:U            2   org/bouncycastle/jcajce/provider/drbg/DRBG$1.classN1C)!.mUrhYT*ʂh$V !;c
;'HVtEJ} 4-u/_6	q0,oB~]ISN\JI9Ss+/IϝVu؁Q>i\ϭ;V~qbN/^dv[PWɮuR{Hx3xcQyR[ChXt\_ A f+Qj಼'`dۍMdb'I[v4B'&tx|"XQ"gMճ>3'لwHhדk&j|?v+"80y$GrDPWxyY*x*Wk-q+23͗b!x_APK)U  5  PK  C:U            2   org/bouncycastle/jcajce/provider/drbg/DRBG$2.classR[OA-ŖRE/-`K	"!$%4On]g鴱W|Ac>z`79g9?~})s\g#X-
pU©]B"okgMW3+	m'T5BtHSi]B1!sۊE0y~/UExٳ~cOBm%;6rjnP56IEBÒaP7-{R]M5ݨlа0x~ð'C+?Hs\992YʕWZxZaXa(_]
/$3<@ZP~wtJ\/;:rV$FG
	M#14&q7<(vÐ2
̶i	wV6S4J5'=z!c.aݣEW"o,#;	?mN*.*9}E> }J'g̐y+O<G~qhnďQ<J=,%=79,Mq6aPKaG'    PK  C:U            2   org/bouncycastle/jcajce/provider/drbg/DRBG$3.classTOA}!@ѫSBJIvWf
heD/iu͛7 x8a)d.ahW~0R=ţ6BjFHnn+i1=m0J
((#wFj}"yW[
x2Lf>و|RպiȷQ(EQ5~'k\P㪦3,iUT-xҭ^mkҸ5Sܧ{O1,;yq6Y4.Z0n!maa琊^E\Wa*/I4ӿzF#LiMglxXT(۱~v5UȮE+:@誃I\s`Fhc
mLㆍ,⦍Yl@Iz_ؖZ;JIq%馌V".wxR%I5w8EFqpw>"~XlDŅt"͒_1u8Nw$_0#;dO!W2MwA_>1,$e<&4a<XPKP_U    PK  C:U            2   org/bouncycastle/jcajce/provider/drbg/DRBG$4.classkOAH)7/\*"."PDŐH(deW(I(ƒBҦg>{;gv/_b#t
7R/SCsz
Cے9r!wJ%+h+2tG'_r'P\z-VI]>,ӵZA@i{{uuuyrR:pm_R8^iE.++Us[8Ge;w}XsM/4㋒Y+]@ܴE,},勫\lN7EYaY?ASl"7jkѾ
-6&?G;mUi04thSCBC
}gs]ܿ4Lz㗋5ʿ/꩞#?0L]T{\_Pvl\^sk8E5ІV3ЎnǸ*ĐQȄ$&;0u`Z CQx¬Nc0вl>M"t!mY].LS!0	e^<kC>L1o2GƋ)~ݓ91wd)@CQ hS<87tQh`;+TkVFŵfN$ҌU-4@YcMY&p$$b PKou  T  PK  C:U            A   org/bouncycastle/jcajce/provider/drbg/DRBG$CoreSecureRandom.classPJ@}ƮU[BēF!f[6iI (qSzPQq`̼7Yꜰ॒3U~k<K%-LDN{q2CcS)ʪP<"OWyb_/Ccm
&ǰrBĹUptG8D?6}c&Qw!εʆ(KU mG^躬
{ÑwQ!{yǡbaPK    PK  C:U            8   org/bouncycastle/jcajce/provider/drbg/DRBG$Default.classKO@#HTC&&xăv$%ؒn1|$h<P-1w]lb9a0\,e9\'KVq`(u퐯EtaY,enX$٭:.˾lF#r+`I
aT[aJJpmp)-ϯW^ӵZA͚%j
߻ulMۿg#W	,MFh04k0FX8=B6Q00i C00th4̤0YBhud0cKg*{PRĊ:QWuxJzXw;Ձ#mT?bG$ocC$C_EZ'd
eu5OH}PK    PK  C:U            >   org/bouncycastle/jcajce/provider/drbg/DRBG$EntropyDaemon.classS[SPNK94)\-PT䁋S`t-MԔ\P(8>೿qO[d  =owO~
ZCDy۵#Bv580,4-3FaЗF"b?bۆnE_=D~d{.C\&tAeG
bƑ6K%ֲxKTi#iTMm["Э\ї1L<>0{lr(isv4ALH*tG40}ϑP89T.[:(A/%%W;_2kK$oDSit-P*"	M4=H)บF+BAIit#uin(˷cEK<nQǉ+%C0SvG9(]u)|m3R)	LaӅy۟0~b죸yS]}0msw?)~=jojP1_I2H0IJ4D;@?9.N>ֵf.R]=6OF1cu/PKO\q    PK  C:U            F   org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource$1.classT]K@=SFcv/׏J.Xe(
O'CLΔIW
 xS}`@&w{	ۻ ~batȐ_Ul.cWBwL-~½mԪ6JtHztډچP[*19F=OB_򋢖-!xv6Cҿ	'~g#pW3RQ|rn;y!l#|;n+5^l/UJ>iV_/l,Y2ZՁ	9tr0'|_ڧn)8vdr}³uhR#2fs[ {b1E?\ES|#]d	zf1{E0O }-tQ|MH:PKb    PK  C:U            l   org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource$SignallingEntropySource$EntropyGatherer.classUNAm[zr=mEA^[$$ibRbu)\ޕ`|
_D2~U!xovvvfvfb!m0drs
tCZMpA)P'4YとrY["\w:&e~Zk
'd.5O0lǗN[)!C~uGl=%CϺU%H弯voK txwݺPv]
3O:5֏"]Jw2nCrseVg
)caJGe{]FUn*xR0
$XN8c i eଁ!g7ǰ|ӽ"";Jw1~ËY(ՏoL'Prq)LXYDyD5ja \Gfc䆉dM"o"
&.cZJ`9z:W=hwZR
 ÅI6R@C:( O$B#zfiQ|av-J=_C!CŲNpXp:w!Gy3Kx 4ґc4O|sqPKJ    PK  C:U            \   org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource$SignallingEntropySource.classVSU-$,6R*d!,PPlj-)E^e7nw}Eg	tx(#;q=ܽ~}`@"qEPbڧD8!eam
mUMc=800O< 
npITu}Au
aV+0<.o
hs*[-r9+R+Fr<Q1Kq>F|f7X9L74ϰyZd_U7TTr4JC0ͶT놦dܶMRNl;Vl슥mjLќͲg+e_Мco:sGV5uUccNLΏO	=qw`yo7zwz,-@w(ZiVP	[)+Q'(ki[VCj%q+&]Vu6TT\pyvD&uo*K5oxK"fNݟiSXu(ߜDwq>f(D'H̼<N󏙒&NrAXˉ3LoLwA!__
7ks?Bm5ņR9x ͔&%!&4Kw%$8\{.aT%\M	-hE@BN(JHrV%tosX70aCG80CfbH>9 >a12a6FϠO ׌gХxqػׁ,L2zyux͵<U[
(>^L夷[/O>ju=m	 9S5"LtV3yпBybSKm|QCe9UŒl=фEU<x'U3+DMN6|]XPӇ?#/Ԡ@/fSAJ=JQS0Iz\Jjˏߧ-"I=k;8g520$("ǫĶ.ɏ#%Ek"D~/ΞZS8><F[2LRW!xSKnu#4ncPKf0T    PK  C:U            D   org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource.classVsUm[鲵)o@4 `!I+
PfnM%__3~ǈ8YGi&߹so~_	t*hM"<frL
[:Oyd39y5ת tDHKg
}Z)z5
r4ӲDgr']mPzj-TQIt&ĵ􅭠۪pIYcqd@!~`h8/YIWYY./*FnF8ve0NΤQM@
Ys4-JºU(XP:qziو<*قi',dW\s<l#1,^
=ÖeQ9xh()ؽxŴcd̴W{q:
	ӵ=Jӑr\YK7'Ij0&rg_po!ST<J`'#gfk4Qe*G{bqM몂]/CQ"܋j`VW_"pZvΔYykp\warc5Qۆpͺ.T<q=*U'U<"OEZE}*8tYts$=0\ʥUS#[Roezoj8h۹x-=?M0nu;U6p&zMX0ML}(33fH{v{k*.tl#:6K!1[Pб
tlGhաMAGSUitz<:y]:6bG/2\bbp/k84`k8
i8Y
g 5h+2Q,m{6_<~}
?AbH/ɘY7 =cP)qOQ{D)(u1Nڟh#z3ZNL.y\Iߘ^>Gu	OL	g	
M?nx!1OOA~L~w6(Kt)bg""p.y??
vRx!mi!^.0~IPOnQ,d7lA4_u7p!3vWhUe?[Cۦh$[2q%'@7Dw:};=Ui|% PKK
'R  R  PK  C:U            I   org/bouncycastle/jcajce/provider/drbg/DRBG$IncrementalEntropySource.classj@sheu3>첫Ly5>@tn

p| ^H/v5!-9l\yeFƕ=Ks9[ӆ	^7_wb,G쏇Eu~#d筳_삩T*
	#̶αdi[n aנasLr$PK.   0  PK  C:U            S   org/bouncycastle/jcajce/provider/drbg/DRBG$IncrementalEntropySourceProvider$1.classTKSPBӦ-ARA(1*(RǅnM@I0Iq?֍8#8?una@ets?x `w$RL`9~:+!^N{arbl˿.A"ZXg=/9428xd6*fl\LbuYt6(k|<OyO\-<o+ܳ<3.rk<-{>ߐ,y,_6bWwh3j6f>$[0rN6&"7Lfrcu<w++ئ7H3+V%ek{5\JXaU_$NbddQ%(H(8UAv(&1-gH-o2cc9UDS<mȌh)=e) X-1,b*:EQԩVрf(*pIE=R*NAW?>\f@+qtq\`=#aeS4.f,U֓[}flPD_7d}f/G,WR&!REZMrOrEPh&d|޿IcL{Lh3-Z;GiVh-%ph\E4X psp_oS"/(ИŘ>z>UbТ{
C	Y1J"UEm!'C1NmBE˟bƅ@H*4,~HEefTXQ;)30<_PK46G    PK  C:U            Q   org/bouncycastle/jcajce/provider/drbg/DRBG$IncrementalEntropySourceProvider.classSOOSAm<(O(EO}0Db1bILݷi^)&M ~(lb?~C0"ә慔ʹ;3LULόh9%Ԟf`:,KeHuJEA!<zV*EM0[maoUIR.s^hʌ:5""3TGtJl050TËzS҃UӠM0ٔɄy$cǸ9@a	yTPa5ysʡJHKRJ|9%NZ`]L.8ٸZRgC{c
t/Q=,WƘ%ti<{|\j9rPK64!  -  PK  C:U            9   org/bouncycastle/jcajce/provider/drbg/DRBG$Mappings.classRkOA=Cݮ*PpmF,-Z
úv	?/#wXLf{3ۧ/ ⁉i3&*&,}GCZ*OoJnpf=aanW<Q;BQgǰpzR4u1(0{7$U1)3TdÀHj n:W	zZJf)RQD'2=VHI?-'Nv^g[gaĽp8T4iƯ6,>%
B޻R?ƴ]u''O
ÿ0'Yˆ	Fm`㦍eaK)`n[*b܎}*iG"MkZe,XS`%uRdX}p7- h5kϘ{pjG%4kɩߒ
B"D;PKBZ  Y  PK  C:U            ;   org/bouncycastle/jcajce/provider/drbg/DRBG$NonceAndIV.classJ@icgzR znR7DoT|(qiY2;?o JHg|pQEQӻI/#v[a zXrD\fv	X<ۨ؈8$J?>97au§tKLG:k~P+
Qpj\l7Tapė[RVgF@@,as;y/B?F-t,ЋR`&1Ô&0ab3$u'-wXP'\וTJ5_BNRמx$A=.5fן&ҝ6a(71&V}k,=b6>E 	PKJ    PK  C:U            Q   org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider$1.classSOAB TVBH/ۻMz5{{W$q@ffvfg_buyL!K_3:V}nCɰz.;v3D-͵@ v]j3uI{|	7V>wJxE.	J+T=tyaw]uSa=>gh?J%
{0V=22
)2\,y;Vd+K/<D9σj#\3`gpA:W/5el8m05։kVC=S/}i$}Zt{W¼/қ(উI̚`DLL$"DTpwq7PF5)ˑ>fQA'e-~P4j3Q$"q#6JPQ!2c(OHS4ݙM6YJ=1,kuK,ds|Hd}B/(-S,~#@M"Y΂0Po9AtN(`0fP#	
"Y3;wJOPKxwI    PK  C:U            Q   org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider$2.classTkOA=C+uV+]TGXMc
i;n3%4G4(㝥QPBM{g̹s?~~`0La2۹BaкxNG{ɩx<KвcHpAe}n:YD-t|lԫR(c莢.*EEH1q7/OF*a,
ªK'<07cYeYBWUW-a֤B,W̧[~U,	a;үfc"Ëq3t~+fbN"[]'HSG/")OI^*yj
;;^]lhhאpUCC.
I
ݤ4aYſ4[JWLv3Sd2}46W<gԧWɪiYi
9XV5\q]Ah:Gt*ӇICS:0ݎQ2w1F1lxuߦ.{T"K	 CG)J5+=˅!E`dR IQH,F#f7Ő1}ecK!!c~@cM^'xLDc'XX="Q0LS[iNeAM]1ccGK@;:ayAPE_PK6%    PK  C:U            Q   org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider$3.classTmOP~u:Ae͡| VAP]{mG2_LLD/rX$h4Mzν<}9=G &1y	\ި5D˯	uOb1>xN8+A"xDXe FGOS̼;U#2	@r,!+َ:WdG-s]+2>:,EWٞ,gU-3]oY:6Kevqg
lʡD5nQU<*.2f3J(~øԩp	Ԇg\	ӊV3vogz]͖0( ]A

)4
@n񤡫!w6=gdNS b$\3DF2FPqM* *TUAǋ*ZUьM9!I`$^hIa8$9mjaۂg~@p-sk9-i=[2wQz( "QtTJVTZb$pPi'dt6qgc&5RF*c-Ģi\D:"ڈAךcj_!ROтG^b#bC
+tl _-ѳ!`^d3 i)2 R^O7&:8$edW1MnʺZx3.z؇[mPK< >    PK  C:U            O   org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider.classTmkP~V.ƹnu݋ULMuCتHp`4$-?AA8?svdHs9'?~Ph#)zO:cvA6LAnX<[lbyݱ)4xȐpڜait4mZs-dn!Q}3AM]7۾v~܊熾8
]kApZ><V}^ǶI=GjFD ڳܫ~s[~Vn=VX6[5QՅ!:}		$K.aB¤)	Lj&m<((U-/_r?/-"jÛ(eZSp1tzkîڞ;dvӉ&,i,+S-1V ᮘǐAATXqL{2QKϐxu7Ew]W#x@yap)+&B4zæzcu/(}'xF+HH KbxׇSC >+~ YKBD`&2$mϐm
<qv2X@EOv`"PKip:h  w  PK  C:U            0   org/bouncycastle/jcajce/provider/drbg/DRBG.classW	x%{:e  8	Ŕ'(ĵFЖ,wՊi&i;i6mӃ-V&M\M\Ϥ$tf:%4|ޛ7oxԇ>,a]>a}xap]݁;;{ϼZB9ru;{ZA!}Ie7ڨiHj&i-H}p5ugdO
%Uc$-,[Vq-^jJ"(.%VkJJPM3v5(3z2IM茛AHXH0n54#Z>=YN;DRs'I\5~qKA
r>]+'kiL
r0&63=36'z"aZ>=hҨ\4O]Ȼu#/6-(hfQ njV4Ԥ~j릑;5'=+yF4! J("4D87Fj&Mf٤\B<O/?6^7lͲ2)h*j,ZKZCh+ryZDᤢBe64V~3JYci[ʟK4y:u+жH>ĴFic
΍3ySIαt(
):P
oJrHy9NDg6a#mNeXEM=ZpjQ)7e2}*ޅj6rޮGSIϰ1cq5MHkڕESf,<A"yB!Z7:J)3sz)~p8Qtjire퍫{Z(4!ơʭUթwW:5=Usi~fIezvFk*L7
[z$AؠinҌWiK1GWWm@Meve+`$!մ2m,uB+sϞJYw/Zi-:œ^fN`է5;;si\ᵮM'5-V-SL5*(e1[s6Ο)wzE%l/\	I$!,|	%D$H"	^+aKx7JxU°Mn	#H%pQ	S_;-e`bmpGg؆سa/ǟQMt?gwAYv_Mtnhwyec}yOI _/8$ó:^/o\鹤yW83r|ٶ)[y%#rLL96_\Fzʦ}gapCS>U V|sMUc6|HA/NQp&>|Dj4+x50EA}:W
2`D1GpN\[Qga?{Oq&?`TЍL~1pHJpX&5),ф<qv|wFƕed\/2
G<I?`;{2މx7~/z	`KO4ۗ<k[~~2nf0mv|[;kwG2eߐ<2>?ȸo
x7'>33cֲ-P%lЧs5{!ipk]NQ/6-e[SCpBDv$vyD-<{<=Cx{M(}W<],2?Ec.o~<b|`?<WB?'͔!\KN;xF
׾ 49NK./+N~ᬨtE;Ѵ~1O +ǵ[pSkGOI&CxE`RDKWvLؤh _+(ܚE,pkyh;.A[BZe
spV80.{(S])N
8p{,+&E*]qSqUpgD./>
)+qgy
btYD
˩u*F&)sqB^g;'Bn#/$'ǝ쑹ʹK kb,?bvg(fM֖1qL攘PuMΥ$
]砖?,\[=~׌DR]r/ɩf>WG,?:yis(nW5hs5R<xIօ+
)/^K DKny+j۲swؗ7>͎#9|W(7R
|OKm1ՁcIT Q.1j]Ĩs23xFs{v
wĤh&r
%I@Cx;reJn{HD.[\|oshxC5rhOGh#|Eu4vKT{Cx	PK{C	    PK
    D:U            *   org/bouncycastle/jcajce/provider/keystore/PK  C:U            ;   org/bouncycastle/jcajce/provider/keystore/BC$Mappings.classTN@=C OBR[JhIK `>V ʢ"-U
ʦr;cGc'R>E?Uu8$HssϹgo "m%
](R<"Hkzu˭@;f}3'gOF<VV&T+'c~׳.#Ȗ&xW'XeFC6	Ҷ}NWȭNzL`&	|\Q[<=٣zi[Mi$Zcke{(8Ip46)jL%>΢X!>n$!#ؽ>
7Sgu:sҍn]m
n_ԍk1Ft9*x`M
y
զճtݔs}.L &pOV"l+x2
䱝3,	߈.[cp `r^t4ZvKƧ	ڔ3qUђDڹؽa+>GJJQS3?_!WTՅ8ST5x3lK/x1K@VBi7HPKu"    PK  C:U            2   org/bouncycastle/jcajce/provider/keystore/BC.classOK1nVz&xPbO(4,.IIB?'%E20{|~ 8.yx4%t.
]`o&τA)WB>+Scs+)+(bskLYVX&$/x^UJ?ys!"n~6 	Z)B?5yTT0'M+r} aM$Aaj wCp_Mdz/V#tPK{AO   u  PK  C:U            >   org/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings.class]o0_v<+iR׭Rِ"7qtiR%,\Qq
	-_s,;?~~`o()R\Nq&-(S<xHA1E W,#X9#3Bi7G&5l6	ff։Ҩ,f
WIvsЍO+3%A:F'QIg%A39&=}K%O| 4@SJ,gfvm*Lvg`ٝַO$O<ER򆾛ɶ#q^gD\߉ch8tJIỌxt;lV{\pO7URR=)a;0x*7[=ReDI'M[j{́	j|V㙨ya^|8Ŷ
 >a_2crlEyVjjȖʳ+ZQV4ՎjaQPK
    PK  C:U            5   org/bouncycastle/jcajce/provider/keystore/BCFKS.class?KA]E	jka!D,<@۬]	cY	~ ?
ɔкt殼y|	\/NC+gIYR.\Ka]X.E.[r͔as4%en{E+WG?{Xd:!Z3~aꠍ.3EƥNh7h2q!UVq
PGS
wkO[4O߰
l;PK}  ~  PK  C:U            ?   org/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings.classSmOP~.z7/i1&륻;i;,?GކL1Js<=9olmi;e
bb>9yBvL0+"(𞓆17_GE0c
Ah9C0%ޖ3ds
e?ZH:E7N׍9ƞyv$vYfcxt&[Y
U҉DE}
|r6&dJi벴55\eg[a'>?8kUg:~/6Eqmn7HzOcJᡆG4,J֪̿mv,Ȣ;R;q)<*AcgIT%y/ɧD/X<xfL ƘAZ@ y4ah<
F14*.mI%<A_PKmx    PK  C:U            6   org/bouncycastle/jcajce/provider/keystore/PKCS12.classOK@_Қj[o!kJ/x	
EbxݦKH6!-cy<P*<70_ F8$Ofu{f|{7~!R":OTEe646S~4R~QdJ6%'CpˈFT1p_QEc!~_ڒ<@%4|0Jmg2[썵VeIc!mc#xeGۻ\wha!}=PKҾ]    PK
    D:U            -   org/bouncycastle/jcajce/provider/keystore/bc/PK  C:U            T   org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$BCKeyStoreException.classN1OFԅMq%Fþf,NZ)༕&>e,DV.{nO	3='(r6MA96c6c4|jVqJNPO8Km"蘳1tbL"Kr?$?|؋LDм^N0_kFng@jw֌;lGA 
*aaRBGK"Ł</(rNlp]yW+jO#X]/>ZAe_PK;h,     PK  C:U            R   org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$BouncyCastleStore.classVsUnrHPibER)>nnlJ/|88tƿ	sII%;w=gܛo6@ t z'<<&@럌q3_d[?'1 Q
\1º8żkd	;yM5υ53Q֏2Gb;2i03pl+^0i[a{:<W]ŋX5I<34ǳvUp57A>UrTX>`Z|$Vִe/M";df+cy2PliE7:6OE4FƊnChM=^ԍK4ztzޜfeUrVV:U0"VMqT2rk0jS9]Tuwm5ng'jkEvksE7Vr	ʿv]ܜQOY'Ҋ:yk+YOBW|gY]
_*.M_>ڊw3c8*יꔮHMxs[ކ;y08Z^`y
[*(}-)ㆱpS 3\z	|cKԴ	x0ex!̰AMbxaVm*ãcxaT{y# lr"ۗlr{o]݀8_6je]"2T6toզ;[eřXjܭw3мdo'4[6)(1(MbKw_#c'R2q?V# c-^!}8].{9,CA<'pOxj0y/pxQF^⣓AA0A,A8b8-ay	0#!xU!rX	ar9,as=a+gJ8R;FvMD,ÉB)Wkq~v2
XӬ
#b_^ ?Ņ?!^bzKoN1$.7$^(^FGtwQS"7[/Bgn_E۪B2H@FU$|8VTG^Wt
&dERkԆwo'o.V6(?&oap
þX+oaJX0gxs@!g#E6F
H/+D|\wbgWK2juN?q
WD-"5[ۊȥ:uF8Vā
*kUI4hZa\eWe|
#X
+㳥heKdys}?PK\N4^  
  PK  C:U            D   org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std.classN;
@Mbbbl`6X*X!(XVPx߃xX`(Ng;ovʺl6חZ*͉dJ<}-2Hm!WrfΥ@y5E /@/'>⴮lNdy9g1Fň+oĀ1b:1PK     PK  C:U            K   org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry.classVs-vbȆ$@"@N(|^o]Z&Pm'ڇtKL	x3+f!8@cswνg_<MWe$Ɔs}XB(6\0.+eGَ#ƌZ΃Glp3y[~̳+eX!d%H了ֵh1Ne<ۯLSY"q4|kDjUܽ{foF6NC2V-*w%w)^u,vvHI0H˶l1I
'f,oI+$vSozQ9_=˘p*xo_FvM@U6IӪK'_.sˊh9~mj:eGB͜-OksiXup&]:͝ʇ2gL-JfC`YrrPɔ+ڕi˓7gZ4JK{űN(M:Pn3|sݝpkY7_R31cZj+Tu;ې^˾'IKZzVjLeL*BŖ0ݝw1cot5yV.P:$BNEBwGnoYjq9 /0 M`n)pM7	=
&p7)$Αpk~!us(H/"ͱejk?}nSl[MWJٮNrbz^P	RݲFk:9Wʖ2>ʱӣh$p
[w9g@v$:_ᜥ̺Ctvs/}EH{9 pҐFxP~p55lFA]8D4$
&wCְ
T
I&{0!&3yL԰Oi؈5lfc4,29૸&QLN09"gT<ˤ 9aRS*JO3y/+NW+~h9Ǳl٨V'A_7F ە/Ll_?B4o	׀@?Kh𙀄"D|8&~_&4<^ǋ<ĥyo0Ca!"!PG=A&gb9&Mӑći!?^|biy.7۴+z|o0oM]Kiud6t4pΉ|wtu_Q)"ޥOL.Br'AIt-g	 `.
& #m
5@\"ނb.3+G[yl /BNlwކxpRtn,鿉W/`׏$555C
ƻpB
=I=ğӂr=5Kii<#>Kec)UTyzToQFrt-ਮ};dGy)jK8n⭏ӡƊ&~1]2N4O|OK
RS%FÆlHAG~IAO"Ejw=iV_ᩯPv@%ݕw'?'.#n]g[j	'=|PKA    PK  C:U            I   org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Version1.classP]KA=c>6Y7MZ5>B3J!J})%L.3+RZhlgQ'gܹ{νs^
v*(WPe(v?ORI~0-)1iP$#B{S	58C+,~(2QtF\EHSg43koYkw4ӈx|FcM|h@0T2O~=$m܊n=1?IJJ2*|FۡRM>=Xb<}x󽗌!+Ec8XgQm
O;?
7]4ب@_}%^bl;asJymˡbPKMQq  !  PK  C:U            @   org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi.classY|?'%@»
ᡈAѶ5Q!BR:776sn>u*8h*>t؜MV?~II~{{͏޿0 f*B[afYa<VkӭpYaα¹VC+A(vEcIW\
:>r_J Un4r%7ʶ:n-Ԧ;~Vu"SHUz]^K
}-e,_<FpÕH+ٵUݥ
.rΐڕǢP\
&YdN
]`$jWj(VZfMujZ[G(Aec^7Zxٳ9LҢ6%wuwQ? GjG<
upDm0jq\_ 7mh@T[NvVFISK<Q:<CeGls8ѩ,M3o~S0v%/h]O_moh[Z4Ҟ

((|2ahlG۴<9 Dۜ>lW	15os3iDc0F5l	nzj	񤧞 9
&`(&Ν;4KKR͡6PBh"&[ڸ껰;!R
Cd.r
wuh6&)4iv:RFPǖUhQFOhbRGH8h2&]haRқT}$Sі\d]MN^}'-D4G-]*tao6'tS,IFjӫ2VKҼaȌB}YEW9#is8BӡFxf|*Rԥj<]m_5m8bkh't(';Q,PV8Dhi6,_deH#S}q(D2k{S$4aQ6miNsG璤:$_:-j3[Kn.pǃѮd Iq'RlT0SnNXcR,t6RjR\*"hǠxrDsNHl u##9yMaUgn@Waf&1uƠdF.xl{,3ȕg3`\k(gr2bV&smT"װ`D
*gbF^eKo^]jHaLq'1-8# Ir\w2h1DEq0d&:]J<KebuR6QK45';]4Åi
FԵrQpŅru$&&;zHDbP+oѶVNmUw&G!C%G~M\3
'\]ZcϦXw4+L$#'tm
%-	tB>,ڌa32Bd+O&Ʒ%Ҭv8?>aRbvhBU	5Lx7o#O#0I=s5ܯt*tevi{J>mA

G
n	.z88<BPFm'OQ>B1^LÒ.GC)iOgnPOqu+C!uVFLił)9HG3-9;1!uR6I!7\_)[T53O~J\'q;>Eer!OA\۲趥9Tj2u=K	37Je+˴߯<ʥ"E;FcEDWL#i@1 Ab(#
pu2˰TdXKd)>-e2|Fʰ[y.2|Q/p_+2|Uu!7eRopߖ;2|W=2\-d7p=2,ÏeE[eM2.OdawSp@>e8(!҆' |hJ"!
NebXjtyeCgb2>7KLbPL,mح,T'=&ׄL=ieѩlN:WV{FE
ӜZ?_&W+L=ү##
Aȏ\Z3;v)W~)[lQ]ΝibS9=yr36WH%}?ᙹ8Wv}n)g';W֟D~Ne2JBXQϱ@f.ϑÖb|>KqI:<#O	=GdN5m$׼Sf!%\1;<uCg%\W[ 2
`d&LoJdM,"b$䙱0?dKڬ4뜜eb䇏@CC7sYWC$	9(vGXɷ|^,A#^scթ&?Gв8{.;fa KcXf.vb8sn {+;`8;<vxa*8+03 C;LCT0wV$;<ta!Lk"iB$}?`x0-Q2<0I"_>~+NCc80lFr.*;4c5kv9va9eg58q<	<*aUx+=
x:1gXJ}vsϰa5C
͸c
<
<3ǰ!pO'.`2:.dT'
<(4v+1\i3|CXyZU"^bx|ulehcؤ>U1\[]ƫx).nQ~J
kx/S`#Q+	U 05cCKW0|*-m`ΰ3e70G
Jo)8;*X_.gq#]ϐ,D;~a"Y㳢TkOdF
v4#g@2ں:բ}S*7BkCLA3<EP
l	h*/B02@X5Yy#4m#|74fƕ뗃04O,}Y$.+h\R[u	TiFf̪{~:;7U
`!Q&5@ULBJR Q;XC@ո5>ōd+c=h}'KdC1e04J$@UH_
ZBj[6VUC&^i ku㏽f4ჽL{)}<%J`x.uk*4HdIFB/gHU7[wC&Bj%T}=PXSЇz`
CI5d(!W|n׬+88ȤQck&`ꖳi^Is\.ᡫ.QgNs?>wiQ?*MEREG1";~|7= PYJ&"A+*n	hH
AsA<˝{9Nf+.~l v}xpH|s%)8~:>Bȭj(` ET0YTXex	sF
ǼP[.ת3İ9mNYI!emԞ@iۭoCma?é/%-UtƵ3Ђ3t~X'[Ӈkq.Qk(a	ʫ?> RmL5igNB*Ɨf9>}CiN;8d{zz\44݋5_ՇG{}MֹbozKFn@w75sȴa53XCH9}ptLtkx%'_+QIԾ`S*`0od7Exn<gvjw$\ 4<\2oކ-<0Yl^7iz^x6˷
E,"x:fUdU,fH%axͶOPu'ѱtgo[1i KtS{ĔVU}hv\/<$xaQՈwRj km۰F*g:%q<ZZFՈL1ߘkF'Xǘe^ ZZ8ȥ?>.]]l KqAD~EMxo_M1ekqUԻ5SօMGN.XhuXkEn+1W˓鯎:OȊ㔄 9Ye-K9e݃=pfv*5NE{e':(b-638n(U׺q"6q5}N_h`ӫmC2<ˇ~j.BgC&T%'S%tIJn~Jy^V7ae>B.;z`iIBB]Ç~iP)bf$Ů鯊eh^i|i6kߐOrJ	9$/qSGxl|;bvWS..:(wH{`C2bg[aF'JLt)Q,B@@u|?>ӏZnZsxTs
 *M6AoڥD?ioaOzXl :> ZݜyUN{[ȒEE$QD{a}2^gsA\
eVdkJ6{\08QN_ |3S)E%jdw<Әlr=$n\2ZZ*컩/)fqMEHZqAe,[iEuri{jN-=",T5:6Rв[S
*p&z(p~pK 
R0ƿ	7>r"Ż8(
N,*|]:yǰ2\އT{3%&:Ԍ4PjmԒTPKBRL  1  PK
    D:U            0   org/bouncycastle/jcajce/provider/keystore/bcfks/PK  C:U            H   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$1.classR]kA=ĮMfikDa|SD["!PзL);`
?JVڷ̽9gaܟ Mbuwϵ6*ʑ۷)u:&	yC@4VS%e?xȎSF`3Ԧ%d鬾KeNL<	q1ɓNRyD3IGNnǯz{4eXDl[;G5a ,,	Ժwu"f{7/zQ0D+!`5D"
!XQEp#eDY2ne6Pĉuɏ@ 5ҝD91r(DQpf;bיǧ
r~xGb3%p?U΂sox`bMCS)>d<j9PK"5  >  PK  C:U            J   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$Def.classUmsU~.Mn "PK*Dڤ@J
UtMlw3M23 92L{sϹ&k 
d8R^ԒX
%-kDvZV
Պ
K*ǶB%03'a\i	Lt@Y{(leFWdC)EĔM뾵^ɞG\sq6Y~@=2߬lj:oW`26ФH<'fx_c+%+l_mڻKnͧ~Z(?P*.XM1Q󃚹7=ж=ڳYg[Ku[ˆl_UT@)[ǅikjmr*00f`I20m༁8?>V!
~qBhGىu-fx7یDhz.{Dŭx}:F>b썭Alh]oXS_I
,6߉5R'nJZ>1!_a<NwlI%F $pJIbN" 
a%:{ܐ8gaJ%qI%D>e9E;_2e2C̰pCJL S{q ȹDȊ穠Zh>2>P7 |A)z0Z
/qH"`毷	&E
~5'Qzg07ꫤHj:mu}Q}oؒzO^%ѡ~H?Ny߀B)=w4_j;N]_wj͐Q6Y6-
#봋vjgә~W-UC7Gtt)OO[WdIpW(iB_ʞPK  	  PK  C:U            P   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$DefCompat.classMK1ߴۮMLV~
Bi:-i%gy*Xl	y
%ճ'
a$R%XGS5 'i}9^nnVƊ_=
s,,CĪ
DlU82Q;⺉$-)Z)I{{(xXPdv~:m6bTpC2ʦ|epǪ z&6}C
J3I7ag-tϽNQtpt>ߛawLg؞ae:p껻z	PK-&  <  PK  C:U            P   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$DefShared.classUmSU~n	,ʻ@!	[jj-V[|\e70oC)3:G9y#X{瞷{?`	{}\)§	+xju	"hl]U
՚
*=ǶB%03'n\q	L@Y{?ٲo(:/KIB#M)6}k=e7J|V֑e:YZVUNW`*֔]$O<'2W
Cjm pY3׭x[i!>eG*v\e?fgʻ~P1wgV-ty`[2|kcｬ+rrX[UW޷EŞ2~z&Enn[zܪ
00i`
5p{nƫrHc~X.u&Iv2a]˫8^p&9Q}k^ϻ9nt!rt2i*zӦ;)ﭤUYQnm}gH+ì5szƙmwlA%F!$pNrcK`AW%$0,2K5aJy|"aS!|&$FpC"f%C6Wwf˰̰PdXeXcpCaa#,H]u|&ҭO%SAѵjѿ1gx糀+ 3}"|Aiz?}/
<}Ͳe^D{0WUhH!>"1K+~(RWR$b?7d?=ӬI5s<Q'_h`WICMt̗L$_9.w3Dj>zczӰ&gץUrj4:~X?nt>~
l6~GMnffvttjtu&OwS?GR&ncX2vPK>K  S
  PK  C:U            V   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$DefSharedCompat.classJ@ϴic/	"Յ"ڊ؟Nnk4	I!`I"\8sp_^c!_;~d(^zC50	d*E}C)x#Jc*=ż.NR'{s"Ὲ[;OBǑ#\gAH|ݒ%EZG"i/PLI&)_
nX2Yͤbº26l1K/{4TqL1P20SnE'3)fv)6]K&PKn+  H  PK  C:U            [   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$ExtKeyStoreException.classQN1=0*(.\hҍ;1LFٗRdDceD\>9}x}pƉ9%(r6ӂ
JlΨ|Ii_I-g
0<LH1gc.T%s9ND":ME?6

U!S=Fc(j(R9*e6AmL]ƱP݈i-4αW"Yz,UYh:o=d<fX,O>u]ePK2}.    PK  C:U            X   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$SharedKeyStoreSpi.classV[WW&'rQuC*XMk@Ez&00ę$>ǾjתɇvI%]Z콿}9쳓?7 '}O#vBGKhn$y:&VV]c;D<7Rt$:k&"޾		U	3e<2	LOXn̒T1tX:gc!c\5\Fjñ
7IuOe}3qݴP`ſ軒Жd#N:7[ztq9KzK'Ij2m[%JN61&3LgZ#h^J1[')%1S$:8/ꚥ)mȲXJzTfټo`iwM;˘VOYme%|!{Q̤rS[ODզƝDƘR:V]f8t2MKԽ1=-alcY<	펛fmd
t>
O0OcJR2hSg+Dʘn6-iI.,t<zڌqmbFHaiSpo"g;;ldVZ4^S	r+u/+*1?	-?wr$Diq~hz+[5B*BmQ/㰌#28&$-2"22Ze8.]	OxFId<+93ZaKΎn~ӱ.j.Sڝ-&y
b)ͣ[Q?rh˦DRo)hp!l}dr&fV0.Vl?<>[QQp
vᢂhRЈ=Vp خ`/&¤NAjpI(.+hN)8
vbZSxQxIiZqbqat#)%F0F1 v70Ɛ'&H*`
bWcs\$S=>ir(C6
Ը{e׍yzb@c`#DD@R 	ZIFU q7DÑ
ޏԨ`1ZWq_xV.eA2^[ҽI<W	^#Cl@ƸLd<E}D$( 5NU{$d/}UuG_)@ޏASLdc$ںo#BT(}Dlo>,;7wY ?3|6VM*L*p" iM𙶻)oqsaⷡ/>?qx}dG!(c{}Ե*>]tfj!&nԄ5*޻M6U?@5E+"FԛVѼ"/PKP    PK  C:U            J   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$Std.classUksU~MNw[I*DMv{HM23 nvsiN-=sN߿	`BSs#ʫZvBv0eUWZP`m{"KuH	I-gR".(;r}Ǔ3e%쉐4R$LLi÷w:٫}XpPgEسlώjpӱ5TN3pC"%򼞘v`hzmO~#tv5='^@v]q*;m9Fue9F;*0_Ð+6BsŹ^M6\
1Wh;ǅiFn\{QU&
L6.hmͨ/mY|W.vftJغLb\V:\Vb]ȷ=V> oF)SAlh[]MX?I
,ܶ߉=$nZZ91!a<r+mYoTbBb$8$K !FΡ,A7iܒ8Sgy|(1$rX䷥1mO>c(1a.V,2*}*9WbBy*v
ޣP7 |Az?0Z7.H"`7ZXOˋ|-[_}ԗHM۠
>>8m[_3tk)OG*opֻ?Jy:_jZN]_v{͐ӻA)D:I7[x.%ie9fZ~PM@Vmӥߥ<]?mO_wJɒ
R0|ڷ)e;{PK=!  	  PK  C:U            P   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$StdCompat.classJ@ikӤzp6"]N'Ӓ6&a2)\, >8)"uaQsy{yp=b|凾&4g
r62t$DERm-27sc_CWyN3EYz,V~8O&38kq XHw@#J
gBy2_/@gƌ&WT{(䲜ˊ
V-XXPE͂Aɉ<A`7PH'`I"k8}3:OlMQNQl<R;Z-]PKY8  r  PK  C:U            P   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$StdShared.classUWV~58*E>p9PnnR!IRߴ?jg_2<=}>{ӿ-%
esܴ];%0,ݪe6熦]`4JGr
#vWEmQ0JG&ۜ/(޲oH:/KAG&EĔMYie/weO-ǹlNeMj|<4
3J[kY
LE@Zusj"uEwM<ڎ4s݊^n-;U{ncחw(}sǑJctUcǫ֑e#}ܷQC"}<
bc}+֝rrx!2=ӗ4qN
VmX)[%I&}
&4Lji
3f5𑆏fa9~P.I<&qv2aӭnp.{-
4Qkkn?B?9(7R![6E3~o'vO*pMN&qCʩ	5srW6N']|:F!tጎsC^ ta%H*{:񹎳B/u+`IHkn0|P`-n3,30V0ePbXgH#oREB/tE:zu_t SuG0OI3s"|Iit!_xe#<ҽ|h+
:
do3Ӽ7-q2]")M5N-EA.6\hI5ڙT'1
l*i(˽ߖu䋪nuHMO::YgץuhHa5AJ7٤<*futT/<@T-)C8KӚeT(<]%y}PK)  N
  PK  C:U            V   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$StdSharedCompat.classOK@߶ic?xD{6  I<,PPEq,y{ypb|ơ`LTQ,3)HJa@)&Q{ayS^6e~!-}BQ%O0[L@&rg2Cޭn(JI9(:(9XrPf8it~dɳ ITh2zP e9.pPj8&EBk/*UP{4۝`c
;'X`yNmYumۨ~ PK/(  C  PK  C:U            F   org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi.class\	|\U?7o&/{v{֦;fi6IC
eLi13颂 ₲Q@ @@E}GqA@@s7[T>~ssr};G `c3Xh"Ās8׀2Vڀr*4ʀ55`
5΀p[
Ȁvn2fma0m^iyyk^3Û@/EmQAjro+?(DD5GӪP)"PIYo$QS
򨐉􂼝@iǁ1<Ѕ#͝{[0$1V4:|gVW50B,-:Zle۱1ak=Xz
'[J"5Ek64mhy<m~@.O ϓ{ J3XZAosفmZ;ظgj]q,"m{rV&&5{uYF8`bt]AoKY^
-K$k@ΏiU+@]H|Eޖئkcڪi;Iڻy:vx[!6ى+Tｼ/0{W%ܢJOГz[qD!;lwY0h;Q;ZڢĀV&v"gZp>rIF32]=j(Z)Qhʽiч(Dt
y:5۬X][USC,HV#MԊMk+V7V1^aZjwW칣hUPUV5TUb^Vc
54[դ\h-C=2ϵ,]2Pƨkh\]WdT5VTشb]UkM%C)5zn=NKcg7ST}CU[n{U]Ŧu|ƪƪQ
E*6U5bmMe/ʍd8
UU8v"@tY
YE%HSn[mlEfCMUQcp6#
kp;9.tydJ9jv{zJQ8!.$9EVo-|yK=;K7؍$#܏<c:<9buXIہ2axު˻=Xf$[iF9U]3IxBk0;a?6ǏA
z	vZ
 jWnd
d(q,t}	 'G
v::z4#
׵ˋTYp"HEj@ӃK'~ϰ*"ՂJ>:#9kIoمWv;l\h	xoHmtIm^&<,ގV_.ʍ W3YZm5"
ENTlIXWAB"R>f\nD8XU!URE5p
Q[YẸ
OqKIAN+K∉I^
$S4YU	<WDO<*
ip<V;ۺz;~IJFA;܋>4rNh	EuљS(G1(iGfqZ+U6ly[gj?l!53K %ѥ6\# JvZQ*D++Vzwzۂ
SıS9*R: fK(B\fU:^|CDFj|UĶ9Q
tXJ˟&L|GW7K.eH6[;Qmd+ȍʂ^+@JZg4C%l,RU傌S9)4pRjK0QS)RAXqέEm#
@*[S܈:wR91b;h[6R$lmm^TlfՆNIJ=-aINj#3m҆H&i(Z$gbfDO)'GYfnXG>䄊W_S!%tф+JмtvPYruɥmT*_Na:
K6#}~O.2%Ty0޼Vpޢj'O3B[YTa0<ўrDKXmIxY2+h9bQKd[FKL\rbT1l&=ۻ4n߻pN8ᙥUm9:ݿNam>H$[m-(
v_O=آT'ٚ)ouZ{DɜPuƪЍN;.T22dq2V9әj*[۳M#j+6QE8jy7!BLM]VixFt MVm
V6f2 ɊQ.b\YWe9t+fUDOOLk;1EC/nu
ͻec2'as%j+c"TEäh3f1El.v'zc.3(ʺwI.2,3m<I;=@iejD'dQlz\J3Z%I63֬nlRG;k+c߬#V@)X	tŕ5[)k´HlhFy_*54KO> V/IBܨRKmÀX&ܬ" ;>*3",ӣބԮXtd[өwHI˿I7$ۉq](C*D
r!YHUSN*k5+uꆺ`H@%ő3jTʦ{F68&SVT棘v_#`TU¤WrcgnƪI陛eOH2BE7@mѐ46jxcM f%'3e=xJ7T7@&@si-B&I#D$;|`i]uCJ6U'hd;Ic>4+X5A$Aӡ9H횣xI$qIMa]'Y}E&>$QI̒$Yx }]3 ?:^s,|4x{}l򶢨?~V\Z+c"Z`JN4xb)C'#o
k]lc߳
*pcVZo)p")gu)a]k8l	˰a;<mJ&q/=-m|-f'+S+%k3It/$v&/aDk*y?)߯Mܹ'PZތFũI'9Z2Tzw2XAl? f
<~z'P1o̲j0Ħgl |p>
3/gz\o\"n5=뛽{mU2DG'ɫ@I+RA%PT >]7f0Aު>߰yݛHN&N$}#쌉	;\b.\
O Lѹ#%[F>yC"<twH˹7bJ<z7y;yo/>
O) f;є}S%En ؇j x(
Xa\`*
`@h0р4pp
 ^a@o|Ҁ
6Va=*>"p	6EMl`yl`-
6O|
+HbJ/X`[("D-<[.
l`JՂV!X`Ul`l`V:6
V/X`M	v`
]CfZ
SVv	l`{k]:r
-^	_}XQJpM>.U]-'Fk`	)ӂ}F
9n}AIE/
v`_˂6"}U	v5.3p$Oƺ̚{H,ʨLĒ$3% BIȭK"q
EUx
T7l&C>+|WdSMBѲb,PjJx~,8Xi
(>nD0Fl9FG&$x5Vo&%VAm&5aNa%UFŹhrk5bȭRD-IʑDmYMɯzsmhI愚
TN<Ni		i)UOPݥlP:D'nĵWRiq/#Q~X?*BƼO̲sªv뻨m{6ȊhLG978gAʒ)c }(Ȣ(Ji-UÊ6:)W"$* &@68egnE6\l޵Cs(70}0;r Gng\^d+sږZ%d^˗QkVX}LcDg\=FUg)>Y%t'X>6-DW"?-l)(9P%v>'2	$	rdHu6$* Ƕ
{ے3,x[Y2Ō&4w^%t;GTDؿ?!F>
<0'/q?m[Y?Z\
F, 4[09vg<["[g쐚.?F~vv)D>z2VC.DS2j|?nS>ߙz[5I*l;T1,i}Ʊ~Evg(S$sDlՠ³nl{/>MBR9&>:ͣcѥcrHю]2&U(9>	1kB?}ٖ<FƾXc>6tqj^܇|1=rXc{g,,Aو'
	vR
|reN(m>V[ZF*'5NΨmĈ)hqnR'?Ka:Ye'zA\-%KR#Ȟ擽i&=N;ѠL}&v!ۄ[mBy.".8o7K_&+&x`#N H!EJ`ddddCp/o304$2}M8M&t	]	Aۄa	% xM$&e,##xf41<Kko `.Go\F>!A(0 I	b>M)(MxJM	L0?j_&<4I15~	<Ư6'?%#K['58#IJ]gSBz\!_@2	1Y
&<̿`Fo2~	-&I&[MϿD}ل&̿b&8̈́O;L=/4L
2uo}~ɾ18{Ǆ?7){(	?c-6^~A;	J*k"X&3(Ą'G	&&6?lwL⏙n&6?bIwiş"x|τcϘy&̟3QCdM92Kn"	_10	7w&<_ E?D$ԟ	BW	F0_%x7:e0$'LEDo)}d3F~Dr4N^9Rm/:Z*A:A8)fq\LH&5 WkiY	f$MOPUZdNޠ-pFmo,&XB`9N~FЀp@'pI"($(&(!OPJpC:	ؿ
.bǵ=.o"y?Z\m#A&h'<F𸋽]@JpNhk6I|J6{_39tEhwq54l!U.$br"M{Ot.s.x:]|m%0G	p)T1*jW4i?t.>Sqڧ\|v.>W|Qm>uux!
/|/"~JSE~%Zn7|r4A/%.B_X@mPmw-_$_sEKk]|1['߸3<@-h{	<OO_%sHp3]|%@.⫨UZ7^$<ʵo+Pb>Kp#ȹ*/hpڥ.NwjڇMK\FvZm9=.^G7j z^{/Զ 5<B(!Bt[v+5Jً4A3_%%		@GD2oMoҾ◢-ڕ.ު5\LwiSim
T
	Z%7OV$$		|TI6{O<EpAv+-^_CүX8m!Ɉ	HN]sC)<_~G߅g'qk?N􋥴yOQB\?p~yp"#w@6L"o~eN~>1$
zYO-6~ p~pr)M~>+os昍EHGا)<	NM1pX
` Gw0Y&+ЫxnӀCHrva!}na!a!>8p@*|TYFKJ~}~}m2S0sE!ZG֏A[E9܎~}~,0{;_o/r~vLPf!Dk˜#c[21ĝMC][Y~}eekn>zQ5iO?F20{[ׯ,&Be96]3q`)!>
~}Wo>ܨ8ƓNԳ^-p7Îq-ŧ:0NA%`a"^b,H;.a8Ie	((D)(聡(|Ē;Q>wFBm1\lb(,/V{^z$<̡-KMq;܎ܔBh@3"0Lό\$ Nwq}lvJ>d[h'4U$iB"R]!a`a
:̡GÎj??БZ֛=uPߚYsq`5% {2X࿰ߌMtR*q0^ۯPtP&lxè𚣐l4MR/p :n<ʄ[Bp;\!8l-~;
q֔5;Z|a2<}OQw;'Q)c*~̅;BcapL6f)K4C&$v_Ѳ!iW4)Ѳ(/6b9;t;Bw[phe\!^Q}Sh\؀~]=\/CviX+6)Gqd?%}+uŚXH`БZNF{
8`ON6o..a1!"wZiSIU9xd8Ϧчꢦ	uG5tZ;h'2h=e[YC81Y1+K(v7$3ĶԞ),Ş}̑Svg<GV쀖rqq_I0LWH&E^
++dZSc)hS-03ssd1{4<Hj bp)Xvnfi*Niu`(oV
QԦSHPW/NG	]	NqX:9'#{O!v{ 5-eeLՋN3<F4
h'_EME%G"~h	GT?|s`8ՐF,MeS#Uv
)0^2	&z Kuv`6)En@_
0Zs\H6Ur+f"☈!v#A),s(A >!86sS$\+)/%O-{ۣ][R"niv+6IjKb_lZꛭ%H/z?8߇ҏYSgF	~/RlM{
 PqZ-AXѱq7$jo)]F:㛈aG.~Қ!TX4pb'[<iְr8<,ޏDoi7IbZ{w[8Wlu%!tFI(.P $^{P&pyiS=ozĭ=U*C'}<֋ЈRRzk}f;2c"Q٭uu6*taFVZ,+IJ!d

OUc
1{ Ϟ+z.
*S}K|iXy傽rB<(_2N⹔H՗>m\!lw^
WoL/X3'W;IlF(
OA3Wӊ';yCurLuS	:.;ʧ1M!j<c[t;mxȫ_ۙ+K'xM0+dJZהrh!52Ľ_?_r(%`Jq6IK
F' d`{

_q֟0#4P
8Uv+H=sa\U&fF~߯otS<vw_Z4a0x5v2㧩OL6pX	XŹJh\coJXn೥XM'tiq1#r]QX=	íc1;CGj۝u
)B/dVw>XU]zU`D
&XY'ة3x^͟AU^Th.9Z$r=
:D]!\5HG7qӐHza-r5JW^ c>=^tuZ!0Uo9BD}q"=0Ni'ejd(',]2x	B<lz@ĲWU]>2g;60%r3/.]ȗntk݀Mԟ.VQFgwa2;O(ݯ2Mrr؟ˮJ+Aޝ8Hl&7Vfn=p3R[j	GxQn9/9J,|r0ej0U2A4<wrjj	?fڈ'|	CUS,r=yz>iFXM})WZFjS7uy@:C-Vb:V2XsUF,<O01;SaB\ u@URl!)_kI7k[N#՚Yp̰iFH\/X!M\F崌c谤OytmrJc_Dg3fMxbGUEy}}ᠫ4|tp<e.y㠇/\QC0|J7}/`"Yeg30Lkb7iw"ٖl
eLc)||I9Oh!Y޽5-Z[kX °-5Ptu9NI7,H
VE'dH6uͦ!1׏i'8+1T)!:|(YmVsO2J;Oq
Hა&?`.m!m]/"RE"pEJzIèRqxcXwzX)=8pe)zc]qHL#w2F߉UelĩE!c#n{b P x-0TVڈ_PFU]|H$(ŶqT(QO<><4
mV}P)lK(y|q:U٭A=4Lw;WHٓ+~31 -P؆%Z%KNxyy(i2O4XW%+{#,57Bwfۅ)''A&uQE<Ttm'nadD5`p(jlpPTCtg+F_TIWblh!?CS|"xRHԯw
ь]Ŕ]-e*B~}nL(3z fRφC7럢8|0?)ߖ$s5C~aZ8<neI3aItȎRZrժ2J%4~1~Αe>L<
 f.4<W`NQb	(M-K"  ^*o]'?nBv{A!y;Î)]4&ѤDXVweagVH>ŽA'!';2mi3NvpUљ1|x~?_lӀ;Mk9YÐh
|EѨ<"i99WQ$%oVCq
Z^~ٺ`z`Ox/.Tpz$7T$PHǅK޳H3B	V,5]M*NYj^pH51k򸨩7,uu1Luz@=M[Z;i/"4e@|˕8{W"2A1MDC|?ߣ&: #ur|YH1>߷\;2X f8qZuZG^Ukȗӭ3-ŦErlkQe%boGT_'F6Wޯ,GRg{hm}6>+ӧa?5ReGgѧ/t->eOOeӲeקۖ}O[eԧs[>-t->m89m٬s[ڲlf:Qn'c8LLǎĔqIj}(F29aGIo:fܼ"pms>/g>>/'|;>Ky>aKٌϥ?PK;/    PK
    D:U            1   org/bouncycastle/jcajce/provider/keystore/pkcs12/PK  C:U            J   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$1.classM
0D'Zm	.BO?$%^ͅPb#80o~<`k1
UK^ڔ<w%G)l%*FkL#mkdQҘ}mUOccʰ>*j[LMRdVXK6`L;z9K0PKJ*      PK  C:U            Y   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$BCPKCS12KeyStore.classR]KA=ךuZmUkƤm-d3{ef"KB@t6ss8ý~5ͭ2fa'SR6	He_
͏kIcJ<4?@i)*1)~Imm2E]r+TR;,n\2OLx-r#Ӌ>k'ҥSbXC~άw%>}?`XT7;p0l=ގZU`}^գftqMi/WJknx3F
-`w1.fa,bz
HkXgYbvtq՞x3,b>,v_7]=kdPKuD  ^  PK  C:U            ]   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$BCPKCS12KeyStore3DES.classQ]KA=nƶV[!X~hR
ɶ/TX$[.3!}	4U
>$}ܹs8s??Mna飌p+K@x
Oom?IfH_%)PESʐ6Lp"T9lϲ~*_}ݛ}/do`dka_ȄRZ"h	jPbJ{t.͵ߨJ)Fd
]zuAA#Kr24wLvm5fȧU&m!l.R-1iϊ(bՅu%Xs\J8&E֤e;77Uc#+#ý=#a=E_xPK]  @  PK  C:U            O   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId.classSMo@}ΗS i@[Rp& $8DmE Y'vEg~ \(T\Q@j%.-fg<xv/_AEA(5Qګ+H{ȩ&녂s
Ѿm[HYV(>}u]BHKĸ^rOư#9seO}a
0e
ƥWeoVV֏Em޷}#|6c}lYd[VuhZ5r4ONRl?h_
e|/bEY*r*Ω8k)X4v^8
~5S
;`vöE)=g5Pu\%$tAR9udqe\kXհ5
K(jhN{LRӋ7=O
K)h:[;|]Ub-MP~ JI+Ppu$L 7ϸiZC>8Lgeb?@*d
5?bdpy7ZH&w!XP؉q5Y\{B͒}ltTFPKMG&    PK  C:U            Z   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefPKCS12KeyStore.classRN1=ʒeV.P>@dRT"ڪxBwݕ ?H~TUo%c7}l2Ln1LP2}śY;)My~-
zF_-Sjե"m#)-)Zx16ԣ)WzD1u$or9U	"*6'}^U{$őCJry+#:;*OStCJqaÔ'=x'}._*Cc{4~PIKnH>j?C8;gf0TX
X(bK>fS2TŮ芠DC[\Z1=|vyw.^coak]wq}wkBPK  e  PK  C:U            ^   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefPKCS12KeyStore3DES.classQ]K1=kq
>qշ:\+$U3C/
̲k>,&r˟ v0~0e2lF"R&)A~vkuQbխ"m{(u)xG46Ԗ)mJl)/
b^DfUr_o_:"mY4b{$őC3KY.+$ڹqzZe19W7~aÐa#<͓_	OKP]6|R
lwOE(b ,
(`ڇ>1 a?^&	 Ɛ
5́6~vMx.71~§gםja?;/}9\@/PKBժ  G  PK  C:U            a   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider.classTrT]Ce
	Jh$N.1ĹPW"y$9Cxmza0죤Lt^{}| ЈbT@$%`JSJa.hZn>S|^2ܰ+) Zޮ땻e]d~RK%*bKv Uv[?1-ngBe4Yͺ|-[8"^̾gŦl2l=$)H.ɨ[ݡwC
V'+nLg2:e%׶\![hf_qarp;yh~`3M]׵&sk⽯N6v=W-Mn2ŎzE
(C$)jCzL_\-|fQ}CXƮT:<u뱰
;kY0mK_df;Й<
W='#fMh,tx#-o1%E+= E\1MUY(`zzSQT9^L&h=,U7HĐa_ȯ폫D$0֩89g98a9q"2.ceĐEAGX!ǐ'1qç>aK9b7bȠ(a+,*pB[4|~	T8
-Mw\qlyqLsmiy~D:h:3\>73$'#lc{"
zϻ㵞=7͞zoWT1<DW Hy!BQK?'v16' Bf(bCPK3We  (  PK  C:U            ]   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable.classT[OQl)R/ K+ RjbCQ\6[!_|D$ۜm
Kf:3g.ߙݯ?>|0_2Ut)CpY7taUӸmfgBηVCnJ]5ʣ6K7ujp:goJt״ʺ4M:WjZӸҰm}[sL,)Wln,CivAyװ2t"SF(Z|+}Y2_rK II'A/PɃ<C"7[R4WL΂ؗd*SMG{Nzz8Z#e8.8:E^NŔ0eC F 2⪌"q7a28&ZR@J@Z@Ft{	SjsV-潾r0hmsjkjp
[԰]K5%7I:#9l#{:%mzN$W2kH03-В?~(	חiД̔ܬw#
c~d'F;b$E!qN?DTܑ	Q'*MݬM vq*|%			Qd\BxE?VdNQ}@>ډ C2@W^^$?u9/FT'/PKY    PK  C:U            H   org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.classռ	|T8~}/sg^'۰!I-hC20g&,Z[׶ڸLAPmֶںk7mι͚X_홻{{9?
 s)n;LYvX`F;\l%vXeV;\fvd/+vn";s$;bgS;fglU6;}ξ :^Ot7y.eӻ<Aϖ.Oa@)$j	1Pg\Zo4Oue_ZO6n*4P]
a
Bd`?GR߸AvC㊕MV6bj.-bo
Wƅ2dܲ,nlE:/_ѴZdmUذq%miS+V6-kn7Z+]q0]]^*+{¾%q8Zfv!":W/j{w\hanp׵z:}j׶` 	.-vwN/wIbҺ
V5Di,[E8Zꖬ\ҴEcki[Ҹ@LLYɋB.wдЀpi	
pZΜ{8
't+<[=5!o[wQCjc1q@fC߶
wzk<!m?47WyC<3^MNM퍝-8'?Hێr_txQ.lb{B&dP	[®pT]Plۃ
ݸn)vƍ(<؅FŞ 'ij\+Qmtuw⪗o.pN6"um@aR~:;-^=@8eOE4%mo0+Em(Wx+=4X-"JMNdcu6ZfUB3-ffų+Y,^
$1VG+pIQI;<a]BRmd{KW]9^Su(UƵ٤R, {X)$Xud)^Sh,vf6@ٚmy	b`kȤk }1pH.SHzzԐYm
%Pʋv!դMKmYYlْċ5,?7T*o
*DI-.&wҺr
V\6oŌnovIj.R4nKkISmAeUk2mt}!C=6=ؗc|~%$\^nnLeH2jngu	;?'J%vɰ.dI-qҊMv)JMo&;vHGi,[N\#
Mm2Va]ʦFuM7oq	 'gRr:[HI-mUkB$"޴m7KzBlkBnopA9ASسk#!74Tl[)SE3Lٰbd`IVV,bqLz_rZfzY[KeeˣO\=CvK\ٲ!jFk\,1<C(Y޽&h-ΰ^{`|h JGrLYH@Zή1~lvv6_y}7f0`X0vnS*E4E/iKB | FƍV@mEk79Dd<	Eu[1q/PS-$ŭ_zv$uE-lW^ei[ӒH62ډ?֚+[;=[omvx:ݤCZt1&11r\@V8e07@	c?j%Mݾv2Dh41am7$g&Mf
ɤC蘏'[uHuH1bYJ֙p"TdM/&GNX`Zr_smSL	DHmM(d<26_Czb0uP%$;ɝŠcl&u%S(TXV09
ZL*MP-[0sD:k̈ohs0ce"Oh0$I{㭦W{i!52DVyPOIjL
dA'aŒ)w9)ߔ!QY>1KJtPd@#LlX5T,X)if3Vn<7ˠO[u'׏:ufR`ۊU	$]Xٺ%MFILɛu
݃ti˔Y]q8--M^+Qfa
j'Ou4.\MD:ါ#)mIܝMftU	\@WT	7Wru 13fuq`
Gx׷!ʔw@u-ͳ.a#N3FgdMj*2㙁Bb>Q{`9xlўmtLD6qEG2ŧF	"5+,?7ݦ
j.Zֲr9朝~_f)T㐙|j5I3jQ	wy	Aejpn\	j<1WzPB>(dÉ"gزIs>,M)ʫ!ٌbibpC6nL-'Mn7$r te4$\]ŽdI9iXxCdp6ql~h2؊Iw!/x?FSAH`48h+Z6ohÇ'΀;B0cysz+<WykeCܚ2HI%Y	ˊtk!e 犧w"Sg1h9
d?zւMrfzi1uk/Ț{XON֚dhj	iy#,llZ.S̡ᖙh
38䧾6mEMP
o'AGsM'~i$\/{dO\st}<+}7EC#	b~
jy14QIM&O8v"[1fPHzN˦`<e2Zc`+e(L{GQC^:XE9wtuǦbrG'zkz(A	txMrC_SCcMy."<!H3HIg4	1\o]cboE]YJmPd,C.cby/UeoDT-bcs'_)#p
@&ajpεC_G;ogRR	X.O^gWU&uoxS[w'!%#
8&CpR1&LL,K0`B0`4#X`	/X`U	V-Lj;SY,6WZ-<l`v`
V'X`
-Q]$"Xł-l`͂-l`BV
JՂl`R.c].z>.G
	.WuI0`WYN, X`W
,$XXn%icP$6[≐͚͋|UvAЭ[83F,^1
7$1G܏
=}'>o=ӝH2#!$bψYJE炙1(Ke=,M,"6<}9p\^0J7I%fF6Zޔ}h+O۾.|l/%[CDۑLqvzWL;$} 䔯eǣ%)MddfLRkF5^!Ό<ω\RľƔ0dp;:>HQ߰pt~R_Lozy&to~Jح8buDނŝ9"5`8Ӝ50v۬Q0Z31M蕬3_QW;iXUdI󾷲|42dqIu3ÏrC
?ĺvF2ʤc(4F=0fZ 0jWg)W(aj)hope4tqrNw/kӱtěuTg)К:KjZ &]4-](qzSe-}t*NcrN<x(U}
WdHn(_Z?)=ae>Ke-i>QKY%Ql?͏6l(xv<23'%7lnd࣍;1C6X	i輏EA}ySMiCKͱd.]2JS3/#"
:-8mƞ8[b?)r:G}g H|¶SĮA T3>Q-G'?=jF-tQIUψZψG
hGJfH||CФ6H`G&r2X6)B$m{eL=ۛy9GHl܎.Tڮ:8t(d^4j2i̋#(gtd]25ԕ6viO;gSy$G]w:f:̱/jH85i5#h#tkd#sd7'_::V>SgW3u8>[g%`?K	''
~EG	l'U>A[7X>WռVgl<s\~Su-iSu."ga/	D  u]z	MG<F)?'(8A+t6 JPE1S6f@1n,qg|u=^^ oa%_Coԡ	u ؗ4_T/zy `_밆/|{R}7
\C+txaޢ:!谓PX%_Oyu:Ax#R2ZeTuX98xto zm:P^nu.|!t_Coaީw!~'[xaR)Ã</x7Zߪovm~> KOO?Õj5>ZY}_Gc?Óz?O/ME_:l757갂CMa7鰙G]ңn!p+N#}*I.?$Kn}~A.Zn":&psG?`?uC8Lpp _9x~xcxO<A)?#4_x	<O7~K=O#p\c?.ev k:	#~_{!?8	#p/jIӈ/?4,
}Vh쯕
{@)$0xLo_" KFL"0@%B~IY 15G*"P:4gScR8Wju2ScoLP{S%p+5qRE w2@ޣyNRML$/7u[) PM {ߧJ
~@%Э#|DjRN,l1e9C\4N;_G@ǩ㸲P*I* RL`1%@=Oh	 ,$Is\(%U|
R>q2l	\CKJY>qYkoi<[i&puRc4KȹL#p>Bťq\C/8@\y %@Rg8@e>N@;+|	|EKx4B."OBp J`UVXC`'+e?Pk \*%eFe'iEdײO~kʼl^G}/dre2?.yCOn>W hLACix;3.Z.;?֛~oP> K1-aO楞D&q<V
t0`!b.w}'/Le]2ƖSb+Ko)%6N߄zSBX_Pzл Jcpن_nR,w20<~ Oi ?O^,Nje}*%O([1^lS~W%^_]Wى=ʍ{x~"hSQW~E^嶊OW:Ab
F~(}Fp=
D
p=OM`.kuȇ*72W/[:s[Un6Z0Oy1	űl@I#QLh~|	~ҊziDWseR>*TV)(j=>W[4
AN+*Q`~,?φ.nHAʀ|
E\f`Iŏ{#'VSΠ
+
b5o!}. ۏG?BĻ)\:y(b2GVE+s#*#Շ!&!j/r)Q*ʅ)`b-kh6
X>}=`>*<ӧn(ZcFǛ|oUC=r+П;:1BFVS9T=M=adukW1ddeKLI`C^ȥjUJsf"?8'@6,*YZ+]řw74uDyiQfqf&VA`Bcr:８)'o'd]TBZ+ͨW*y(ߎ((Ϻmmnaazn#r+ѧn5EKz?d@}5;a
BÒD5\$[34mdBbC_G
͝v;H5Z_{PTyȪF6daD??B"VjGoCufU;&<\z_7](jWᵘ;	ȗIX!|I.x'&b+"[(##	~vR-[fO{}>e?y`E&n,*x55W.H37
mx=~>s=gsY|,e\#PnpTu-zl$/2N0\u(PGaKTEkR}Zy݉L?Z[GXyj%&6kgv
5@Z,inub||ɾ*!n[
y iο/M|gqVV`wq9TjY'QKɟQQjlXү^
W[
[DWAp~zE@ԝ^ZT
np#{ðWpz {fQFD9ڃLTWAr}	&|cFGa-!Lcԍb
ѳO=>)|J7T᱄0_Z
4YLn%
D5
??<Ib[$6;q46ZHd;I2l
.1=¿KuuOHv\B~R9XӱoUWsg
UqR]OyKs$hTڶŴSefӒ$1HYcTNQ]ECm2ڞQ-H+Pt7A/,lցE<.<RL
%ZKy~P-e6:'Vn:#Y2M
)%-ר@!ȴz6i9(ѧMmjS3Q>:﬈ZSj {VC0C>]T^/L5*V#;(Sf?j@`rDSDQrܔ^>uA&Ji
߰? g2kyPSR`,n*(<z*ʮITy(4*~)cLAa_盓 E8{=Z٧ngkUzZ}C9ռ3oݭG>r?枧}gZDd0+VֺCJU4(C&zG3^SQA3"(4<i'NN8Bźs*(}ow#Ot<#W.z6k-Ya05:,j0s&Lvfn	U=΂qꗢI3d㴠{;_d(<&Px\i91Jm3pz̙ƞ\bG;Owxj9WFADhr=j
waQQ	Lrj5.bn'sʢC3Q(((i {m,.cFYDe%FQml*:{| /w3>6`1~m؈rb'JI:!1vzGKzڱn'(C[F!;RV_S%9Qb~U"kj\Vw%%10W=WR@Bh({(Wc|{r}29-TLTwn:UJwQ瑖gOZ7K˅$
;n/~Q-@TNI)f-o{d)tk*U8'_o*QL*$mO0&'?DۈH@xK%Ƶ=];J*42$2kkzY%H	e[jtE#
ǒJr,*~UMʶHV]".L5BˬX	/,Nq'\<g$e\z?TO}qf;)|awfS.mEw1DԲ=J/c'%z ghc?j&<r=n|/9t
y e3urLD6|6>e臣QhDmv /aH#
F4>BTUFaTǳ<%WtYv_w9U[7٘SXMꝐOSE&di^ahNizydoq{#^ܹ,]XeqNG,4^?Ye#Q[-̗׀i'9=.iӹqNf}
5e҉EVa,K61"bX.Z1v֫)=WLA߰1x~l`/10ݐ?`k2x8
pApb^6
;o	vD$̖w0X#e
&q6@7"*?+ۂc
pɃw.(%Eo1~p#;Rj$3uP6ʱTD~L<OR?fI41]4(=Eۂuڄ6}ta1(Dqހ8Le'`TQس'D/{ݬ֐tmZ0:brO\2=XJuEfpfOwBۧ<X!_2}YU+$|b\Dy݂%B/~l	"v	F0>=
٭tPy*	g$\糧1 Ȯ<K^ڊ劈}
TR.5P'{ P0\!l4/sҭF{5>#~e1DnMq+x	Ԫ`
a2dI
=RIk\;{Eeb{.~O9ca0_UTBY7pYZg66nQaѧvFE>t[n~tkݣ|}QjddZB\mMEcb(6ЧBv{D1=⠬-1!UM74Q<b+oI+}:,y		)gʜ㬅><_X	
#5z~`[l<í+clv?j)
5r1a0P4Pzl'KVRÌZraPA\va|NESiSoMY;Q0ͦ}pѧQ i֎1rId)?v	\< %2$c5iVv
I	tgNߧ^DT=9C⫈/K'~OZK[H]ۥ[*6C+Rfn=j?Y,ɡŐ
j/m gǹs"F.@Bb6@@eQȉ@ad?>7QXwt_eS/Az(2-4toH
PkHy;asX:/4uDIsWlLlUiHߎFX:/4t5'7s:$u1Bg
GX>2Wz	gQdhĹ`>uB~QA>^yєo03ߢNQDKkcyƶyPDyu<d-"D(GwR-p[ԓ-9&IupnjdW-nZwrgw~#xB(1qWKjVGLxG$W%$<8G/tY%"s)_n⋭7FnnSW`Qfݥro$FÃptQon**`e)_*2sYYoﶬogc{lӯxB(7A	D{n҇Ch>
#x.l!^>#w+-}`q@)֝C
`t吆{Nԉ)ɘ::z35A?2=Q㑂>f=7%
1z%玂 l,X7:=92Bm?icuS V"?SZ*KCKX1	(+xA@6!$U9*YUN }ԏG0\V è<NCGre,ΰ熝ުsc5sa8ҝ}C瀍
Ux-UdЙjMN	*)htA|<No"/ipDObrSD]Kb1q5"a_]QWy92ܣ|'p^k= {RS=7U܌_ ,OhCsOl g#~QYshak˂][p]iNQSr}e#Bg|qO&՛Or%Srz_Tm'N8]S`18oFKoeǞ@UG7sibS7xS9 ߢ]IYx$ϥ15Sa`^LOrZ:fOI>`sP }|ޅCuo/=[FPKOEp/  ~  PK
    D:U            /   org/bouncycastle/jcajce/provider/keystore/util/PK  C:U            H   org/bouncycastle/jcajce/provider/keystore/util/AdaptingKeyStoreSpi.classVkSf~"H%\zY@Zm(ԕU(J[X͢~_:SN鴟:9,Iϛd_ƏPNz8e	$oJhJpe|jtr292*>mdL;BB03)9	ۊea<tDd+FMYRnB81gK;ľ@]bкs9SVcN(n2~@[K*"hQY	
̈́cͬř7k^UJ7Īky54rqY6е-ka9٤iݴKy-QKu]؜jIsB;R4ݜ495ˑ#[vxg0#mV[>?X_*sxtnQY22uZބ5fda1gܰXUrwWlѯ[KF]ҜEj/m[+ÖQgZ
uAtڎL]sԒ;^scCx'yȪCeaf*xL'g;=ʹ؎A&e#r]F'd<));d씱K2-GFb)?Y̨4 t*tFH{2"T
7YuۃU	ZSxur:?R;9w-GYXѵ8#_p=H\ՙ789WQ2p$lmX_
hPy7<MwgUkƑqP{0a7N*h&uQG}̲`H6+@BAFD1!ɰ
BPl{FA#
bLs
༂V+hÄ&OxiP1AprG02k3\axAcaes"Cad8W(B&髑f3N?zrfSZ6OꇈߪIN"弟Imcs}yEIjT7' [m57Ǔ!E
e
]=q.>W}?{GNبMvw&~
zn]RpS|'m䓣lڻy18ySH[C=~i|TpP>+Qht:b`}|~56g0ߠO4aRͦf5OJF\"^ϒZH޺ס gJXwJP%
+"d7֪!ũl@"ĵ?CVWiXV@I?T\Ar
T4THˤwH-la7C{$[-rDhnH@aC	~PKS,f  
  PK  C:U            Y   org/bouncycastle/jcajce/provider/keystore/util/JKSKeyStoreSpi$BCJKSTrustedCertEntry.classPMK@}hGC?A+xnֲ1$e)gy(?Jmo"xy3o<fވy2eBjCGF2I4xe8N\O8/3Q0䉈!T3K_dU\K^a8Uhp]D<02ha1r!E][zVv:͒:<ԱC
6]g:*6c:weRiT	lȷ֞ѫab9sl.EE;PKb,    PK  C:U            V   org/bouncycastle/jcajce/provider/keystore/util/JKSKeyStoreSpi$ErasableByteStream.classQ=O0}WڐR(-U2H Eb.J	Ie;򳐐@ ~	6,9z6n,W.84WKY`J%d,(b/Z0nfR"Uj|xbL%id&|e J%p.6<5ao'Df~^W!ݿ'7U"XjY(BÂma˂㠆:J*(7®&lM'sZD!R#8#i)(ЫCB>:\p0h^)aC9hSna}PKx-    PK  C:U            C   org/bouncycastle/jcajce/provider/keystore/util/JKSKeyStoreSpi.classX	`UdNiҦ4p6mXdvwٝ-oE-
*(BPPBm"(xx4ddB
7/B\<=\y0߃qGYÀx_/oㅫ~Ʋܤ%%t0gE%kbV༶ͽLkX&hs2
hИdT2g-Ƕ"iʮ>lM
ј	wiGWOg+^wiWuC|76Plݯ[s[h\LGxLwaa"	TJK٫P$.5WI&Ldt5vji-|yV%X"Y#eU򅮵z5B!<ҙ#*]&LKZ+[ϛVvkOuZ\3
$U5&nl$ء-5AH dbO5brDg:*Š\vbUhTƮrz9<fCM8HtT&
ThWi~>S\cZxDE3Z<$ABu-CܴTVe;,9!rɀ3&NT|1(!L7G|Z<JuA%i:g%iK,BAPtl	_RBl!o8x\PNr`ӘzuN<G7ZO2 *["z%&OYjQvE!PFr7P}D0fH6ӇZVR,'q.5M1yQ9zS1Sild5>%KvŢE[ZwQ"E(5\S.RK_afr:XcAT̠nşv䲺,RSE*˨ie+aTDr	nOKSǥ>҂dze[2EԌZ"顔Ndq4uGDkikˎsgbOYkaY4nʢ}MumKg
K=Mk#GmH&ŚW2磋h%pfQӲL#ꦈjL|S,'A{:uMĲ,eX"LS$e=|tu'EWPa]A8ZFl=!ۑໄgInwӓ~ԓq~6	`4ZLO!#ũMIdj.ɦ̗F9b<5(a%tK"G.+OE.pIz	[%A%I¥,AMBDBT&a	bHyBBRBJ2t	Y	$\A=sj_MA|C,=PNCN'~5ӭQkkɀ9:mnṋ%}&ؕHhgO:OdI3O	2k^X="v{IMϷZ^ r(G0N)m<W];UE~zJ]R͘,p`a2>	WLԴ"
mL)Mh7"/'M*5Ce}VlˉW'7)Fg9m
Y
DV
X>nf>oYjG{klӟM*,ͳGwk	RFh2s2:yQ*#meԢLZQ.jT0R[P%|e4q5L%p*2!ƍȸ
e!_eK2eЁ2]j1.xDy8"cх/Xe,2USu&}OF=/c
2ދeG^܃1	dkgWG}| ^Z]z{Y% >|H|73an>ƸE	wWe`dP,;`a 0,$/|$)Q?igR܉2w)?%>g<_n(\(ڭ*o}AYH$<vSeXr)<(,L+s^&AZS:Ӽp
qn)$10*5Q(oh|HT< Cpo"v7}(m|!awt5Z\NT\;
wBr
弟UV]q	_|!Mhx
?߰v-!1W	QBm0Ѫ߲hQEyף<4cqMG4/j:I 1.\;Bs`:	>JF	U--OZ~cT2&ܮYw
p/xc&<fqo"^]kpՈhj<rH$TRp?-!@KoV(htI(Qqxq`tP#
 G ۮriwCnK5sZ	=oʜ14uNVhDaClD4-XvtH%4^R{D42<A/ȞB.uH|ۇJƵ2Jቧ
!7%{Hݍ-:{gpM+nZ_bI3'4\C%I£JbMXAq0Σt>̡twWusR^js҈XHǚ?"lD<*r,9rg-qFŊnù!ף%܊a9HbyD##mk^w3Ca(V[y9yFżqSϹ4Pe":ѹ8V
<D]zIPJ%>ٚ@Rah3"Z.17T|TJ刨ýJS<<*U)jDjL,:Yژ)FY*1ܯ+Q7<~u(m$jxԌ+.ꭥ J"["sEZn{^i}O<Z0{jgT$_½FTfKHBCG(j^r307
3'.c1xIvsPQx'(=vl\O<a㎑ԀߑVU<xh<$6:pkS-KƩl4>˱J'VNOXKq7\\]66-XQj!vj'3~AqBp#G}w͓T7]EL]K64SIѬ05uQC9tw7+n!	Ä(QmyT)qpP"J5jP1v̝8&TO*|A-4_D1Y{D=辰ƏFSPKny
  '  PK  C:U            B   org/bouncycastle/jcajce/provider/keystore/util/ParameterUtil.classTrEƖ5jCN)&EdƫfwkJT~QFTQ@n%mg랾f xoD00H~J$wW+cfDK¶y/Aܗ[v,-	,<O:%0tlbet,ׄSQB0me"ʒ!.J)n r-&PM0,m:4pNSjlIr-¾ᗫ6PK=Q!-|j%TSSfշq[
SHUC+J]_'a;U:	;s
|CjoNpݞgO2kwJ\?]f7~:ݻI/{n1k4Lq`JXe㞬UTŌj`FX;{Unk@8s8&9.p\4pd7HM2ÅI[I|1Tݩ;JaÌr/tNjj(tb7?D4#]lv~젤_%S}}}(lI#tDPdV0(򞎳x_9|C5,)ŲXn*-(r]ü"iHS
i|hU
(>bOy!Bn;9Ǒ~sd$AElг09O:{]x۪:۔:-wVFXM8}W	`>P1CHbH:X?Q6	lq4[xGx)t
lX[ӡ:vhcs:gR!uZ>F_rTr(YG̿ đ=0ſqp*7۲6&
8u4}x?PK8v  `  PK
    D:U            +   org/bouncycastle/jcajce/provider/symmetric/PK  C:U            6   org/bouncycastle/jcajce/provider/symmetric/AES$1.classA
0_*=FtB\x4Ԇ4$z5COޟ3B^
#m#.&67r%C4$Z{׷5y[%aa`#1òʸLjZG#CP0E#<mjȿPK
-      PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/AES$AESCCMMAC$CCMMac.classTmsF~8m4!@% N(;:
Eqd#)ćv3d~tWRzۻ?zLCK#`X7*| %J<7J^TYDkd+rV+(̯	E-M-Ev|evh{nܛQkʰ4=Z%
"Xۿ5šn]a:mǑMNKA@P;B<ܖy<2CviHvVUpKA榷Z{BG=sY"5]qwc7v{KkUoSHQQAve`ѬD냰-AH:Y/,o[bےfvm*Zcq'#TpF[9vgi (K{!qC`ėnH^ԏ;u	UL⢊)TL@e3*>T1Ke
u#o[e`hz&|sCq2	=pXL
\>Ni8;2Hib#`TYph"OY0{N~޽Y<Y䱔E!Y<b5mEEE2XTozRe:cz3Vq]b1^D{Ml:3!=hKGzx4fH
430B0b5}]Իx|.O~6aҀQM:ȳ7?atIkQ8Ocz_)$:xk=sȜ?y,$	9FN'Ih<¥;?!T;>$!z仨U4;!'KXʱŞ
EHE6~ VDO
PKQa    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/AES$AESCCMMAC.classJ@ƿicISѓBՃk(5xI<")iRvS!婠PD3.|׷ =B$J/`0˻t\6p!j#m>DJ2F/ȷm%TYj&9:W?Z)OT/?Ü
YcC-8A:2I	Zmۊ ʇn3[aiO&.
<NVPK  2  PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/AES$AESCMAC.classMK0[֮η<t;ANclӒtB??JLx_yx|}|	A?nA?s,yhH04KPsax8\s<\pRəq,2-yYjs{0  qɈB#luEEA	|c(ᯁL_)vVVP)UbE;.G@oԻWJ 
=tW.bwm#:EF@w3]=-_[W?tݱ<PK#{}    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/AES$AESGMAC.class]KAϨ99jߟVF4QEHWA6:ZHYj/=<e||A֩=oT[Z{)b"<=E!AOz9k	iڞ 8Me®r
?Ϯ&87tRs3eH^Bp9V]w	0#gDQ,P)("ܧ:t!f=%d@YNd%U6XgXɟs,]H1ҠEtގAmTN`)
[1vbl}v[e,

_PKئq7  j  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamGen.classS[OQ-,]V)
Z-PcBq]nΞ6&&c]TLgf3/ \ãNttBcHds/ڳ/Kr<GݣpqP3a=|D5Stm_:M&@X׾:lE3Cà%WbPqxgAHI9Ps"Mnr*ªK_cH:12opmάX"D0܉.=ĮHjj_IJ.Ŕwj+6eڸif|31ƞ2<JM%K\մx\EMEȆcpAN$Ʋŗ-ao8U!ͰYnұo0Jcxzr]9YhCƣЩ[CZC^
4ip\àClnv+$)ܟmF/ ܾ||Cqɿ)/-O չN₁v$#i?:\ܬ#81)0!\1:N㺎3ѿ.%gqM'
a2tٛ_ouL<?RQz;ǃ|Ts
EXy=d|Itamqz	:,3NBGnK^tkl#&@ƽOUL{*ύcdql
wWq^X5>BiF3T_zaf0RFvPDPK    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamGenCCM.classSmOA~KAж(SCPCB\z5wWȯh&&c=^Hd?<_J#7±V>TjtpX/,0,9Q\*9/rBqm]5wyQ͖}ltb.mGN0ԩDݖ+/N^Zz> y[GsȕHEZNN䎔<a; ]n̛+{(=g8t}Tߘ;WyJɪX2P7on;ei[´%`rONV3˙X|fuvpMoH`׶L
t 5$W}`&'j縿KCOAЦ!]CN
4tkw86Ke̝ZU&eb]y;.O3
!-hE.ih0p)fMƘ><я:`ꈪ 6cj	<c-[Nu:4oFZRRyjb>gx
.=L
zi_&$#Y F3FQ" aI8FŇa ~zҁtq53?В8fs_0,'"6G[*+XsGU}=s
Am
}`hgHI.PK+(  M  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamGenGCM.classSmOA~˫mˁ(oJ+!5§vE~DD|47*E"aggyffwf$Q_P,ŷRHÜ-m`˩U5'ꕊEE69/./_7Oќ1rKK2gK|̹ aЏ]i*dEXYs!l<9siEܺ^]VoV_<ogU9(u\fC{~r*m$}{~^PM	*x&5b9cUX,ήږI]aan䣆3o$Dqi)45hhЦ]
jb^32+P~#s{ڪ&{~]?}b`+^w{x`@C@"5С6
un:BуG:zXGLQuǨu`Lm:'uar)]FHKj\*=OMlcևU^|˷bR,B`^Ik&H&*x9 шaHnT0$0?	VB-@:b|_I|O4%пYWL)pV6#
˘+GDл9ZƓ
G>Q>Lc%nAH
_#RDhPKJ  M  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/AES$AlgParams.classJ@EkҦX
.Zƅtp!T܏'$32W\~pہ7{0?_ 0"$ap2[,OSɵQvY;mr¥uxkm2R"Eī^)'3!݀Y?H'+OX쀮k]a:]T]Cdz_FR\}&Aq@J^yujA>;J\w}$[p+czDbEc_PKUV     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamsCCM.classUkSU~6Y[
*JhTn6JesHnvBT?3֯tF#3V߳@ i%sy{y˞ atFWo/bH@(џ4%i.l5m00f,[wT[-2ٹ⚡:Nܴܸ4`OXZ\@Kk5CH-4̂nIfL3|QX	hVεu  \[Im?ĜˬK
sy&P-BVbV7W55F4j9"kuD$X^Twr3]T]٣r|E-n)̚JnQOjfA	xuKfVF|U3[@w0mZ8ICutfY5*vgɚ%
,ʇܞ2,M52
<ԲʒjjSt.MPTV\T7qdESW4lSڊ^$e[\39
d֫n(ia5vy
f_Cp->qs^]@zWG،/{NeE)⼈"qQĀAKSvlf;?uhIK;&DLuD=9zMj009?TVS?lZEԣ_#
>tҿQ
p;q$f9f?Wu*J%2ㆌ8áAq
2!shq8d18#-,Ťa|(#^|$uLt7yQ;X.>ps၄+w$\,yw9|AgspçsÒs9q}ߺ7)9kFѱ-ڣi4.cdӞE
hhmNnyׄnL:v)cOm$k7hV/8Յԟ+x/acu~WvpyaP`F
naswBc!P]99M+$8򈧜	TbhBi~?1~bA}_UPܬ@W!Gd&KBXВ d(ĭ OT#TgHnR3Lj3+[!-<ڬn1UKIDs[gXU<D(kDPKW  
  PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamsGCM.classUkSU~ ,˥
ZJ%$B
͆V.CMwџ~3Ik#<|Fkma
m}"E	pI@}y\@C|yiM{79yVevf3-7f3ʙcJRff13l)SD/J-aʸntMV5wJ;
pC1, 9KS9cτ"G֊㪦ƈ&fT-CYq;I4K}w՝eUrDwiEU-%=X-
I
)#Ө]G"nd-߻qA-RTo*izfdS쭂kn{KSA3O윲bmږ:ݤKS51-(4
0Y5)*ꔶlI)TFhmT >z
e\uXexxٸK755vDi[]OܼuW/qt,i=2c@Ƹ}UgYoqQ[""".1(Bpy֎lO2I;BuS	vgR_rrsm]Uw5>ʭ~^َFBIfb@N+1d9+R5U2qSYeЂ Ae2.o`Le-qbJ0>EZF>:eL蛼,,JxH9,q/*m]	0!a=_pP%r=)9|aEyhb[}[w3%M1̸>QPKF0Z
]8сIR):Z{(n%Ao~_q!k?!_.,OwWqeqP,aFb3wBы1|Q餕pɷ@ySNC?ГT#1Ey6!zO;?Aq_ߩَ[B83dE#XЏ d(	 OT#dgH6xA
{xq?b_$S}uSDxp
,aJ"ۺuOK:F_PK  
  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/AES$CBC.classPJ@=WLnĝEP2N:5ɄT_rQ$(H΅seιO W8&hzs#Rߚ4B_)},y)SEKөHAWq91LS/%{	EE3i䫘pEu$<WU].ܭ!"AҜZ:,j%uuKԡ?r `6v8:A+4'$piUGZszXƞN6;_/`K8ȠcM4a PKF2  
  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/AES$CCM.classJ1O78jnҝL.

u7$%
X, >.
E8^r$~}|l
jBƖa@RzLLE&9e:r9{ʛubpMp>aфq:M&KjW.
ܮRnd?TT86U}.aW,;#	z2o
|@
.dǃGP	-J:#c	|{Z,bwi
[j3q>7qP9#>6QPKx!    PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/AES$CFB.classQ]K0=:ߟCà(L&{]63v7O AeL\BN%&8A֮e(a>$W^qj	%N=EPa["WZJ	ݨ:T$BxDId!8ΰ~r
S?wXx'Eb"OA)f)
}33Su=C;㱐1`l`a%+X%ȹV=r/E=DL[:j#XzC<k)|nkdz/aY>PKI:    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/AES$ECB$1.classQJ1=+m[c` tv(iɐW*(~
sz 0A$]H%K{ͱ(h4R1%[MFzGy
"+4*J*|$8Mxp2r,ө(+z`}S X6+dʆρ&H(5
JQhP4	zzĹHT=Mk:*D	k	(ECί6kעm;XuI;%:/NQc"2-l}7PK;24  -  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/AES$ECB.classMMK@nWxzh=(U
-xǸ]tk-ПP_Cs7w
SBۛ7&7-a.{/vJ}i9SLipL~5%OjNү\*ĖdzgV'f@C`O) CwAoR"A}jB4s,^{#S+58mh+PK[     PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/AES$GCM.classJ0̭xۉ#tjAW0˚	cH:BUbDs$|~ 8A=t.D,K]xDNS2Y2YBy<1W*%ױQ2֤o&3)T&b%UyL
VB0Xp\5piiemc0B8wu}.Yџ{dRz)LlZea
-O	8l}Z.w=]3{25)kt&oPKk?    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/AES$KeyFactory.classMJAvc6Y'!"!F`Bve3+3~'G9xJ7TuAUv"DоF GwἶK%XJŋW:g+\XZfnmd^WF:XY71ccĄQoZʕ4B@Ӽd'95a"N)5s&c؎+;Bn	36VM;gGDo}LwPK%
4     PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen.classOK0Ɵι9NnsDtE`1vtiIA?xCi xq9<{$shhpNPݲ4/dWvF0OrYĩ'$$O\.YK?p4:XpI|<Z_lg8\Gpo~]E0![31әr	NpnZ)Z)&LtLX3FWM׉r8KSaoRp6U)] c{)	3+̇PPK}$    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen128.class;o>Ff
0F
OfYbȠ__\X\_P_Z_\ZR`JJ<FY3330030q1p0pᜟ㙗Z䜓X\Z2NnEN`Bf000YZ
7BI!;P/'g PK]a#   J  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen192.class;o>Ff
0F
OfYbȠ__\X\_P_Z_\ZR`JJ<FZ3330030q1p0pᜟ㙗Z䜓X\Z2NnEN`Bf000YZ3poB@9v>^N 	 PKOW   J  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen256.class;o>Ff
0F
OfYbȠ__\X\_P_Z_\ZR`JJ<F3330030q1p0pᜟ㙗Z䜓X\Z2NnEN`Bf000YZ7BI!;P/'g PK~   J  PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/AES$Mappings.classYw`SU?9
a""MӴ*چR*RwMP%I
{ŽPAn}~ݼ^s;ȚY
 c?Fp;wEp7=Gp?r$x`J	V<B(c&xI&xY'xEL
N'@>	>$cM	>!`g|A%W_|C-w@#O?B+oA'_o	v%F؝EHńn{!K%܆ᶄ	#ܞp ;$܉p΄	w!ܕG¡ I8p4a)0@XNXA8p,8	VN HXE$=	"&!N&%B8poi	g$E@lU63fTE4!iWEbI A֔5A풖6]4iSBd{|)%-w7|82}5΋&pr>0cXRMYXctNei4N0-kq.b\a\<Y#Ѽ혅
aY:l٘m,5-
TuzfO	V⡎8vܘʔ͗vm 
>40t@i,PZQ:j81NUh,н*EֆM
bCĦ(nEMIF⢸H<$V)Kʚ۳uBTVn`]QEF[eaoū~TjGgN^?GhF-^cF3o{VTCUTz
37_9I皁B
(ЁS2MbmμO:X#=^|lkRN'րa2!9.,uC42ӖW,ڙdo+6(/Ġ(JbVQ~ܱ6Fe[;oJ_msFXX-<
F蛒qRV2qPVQ
H8I&ϥBMˣ c܏jTmEVȦY]E6w2/s5Rm9{^l5'V;wK$FV wACfmZ{]UǵjmWf<5W^oZ\]R4	%{vg5>X*iΞx득SӴriW3ŵT3-ҚI}9I-4F1Ǔ.:(pEI[{%CjX[W=cC5ig	5:jR1ws
tU0-(Zb6̮R&[b:V:lwsʱ6nhg
wc9%w($@Yġyҋ-b26w&#	L\'ADN
E!ZĢl7u4GB@y6ùr[\Tep[CSCF)G[;nd%3
Q4+ڢG0ڟC0.K?CF^}|MZU)Ylʲ1!+Y.K_Bj%1M6xdC,`.KߘJ@*CCPl%Ăi:ZmkVs{g,4J$"P"W7j^	ɎĒQVeE2kX4ϬocaRe2Y-GQ?5EҘ8Kx4׎3;[OdZ[ee&eʔlOM.ZEϨ@IIL5ZvQ.<څǸX]xObzO7=%Æ[yw&m~1V=캀!
ffaFTͩ,}ݏ/g&dNJ[_2&ZE`^b@&19!L00Ϥ&Q&Ƥ"&1&L:$$$ɤb&Kd)#wM639I#^9x+\}*ڃsk\
LndrRuL1mLngr;n&0}LgLdLV2y*&0ycL/Z7Ol\)&2y΍nXOދL^rㅸ0y]-|3k"ŒsCmB3v/,\] ]a O)B> !PS"F~#}mJ~xY
s5t.zHox+
d~
)1ޑin\[!L+[ah
7wQ1#r]L+pE՘;ڴV;p
zj̮Jd;+߮~-;*Ucz*IvߺO7Uܝw79xI6{Oc2x7\)]贑>2
Kao4c3Uv4c1zx;Z)`BY[ݾ[=.ӆ=۰7RH>.!q;W.aYo4
[p꣏l쫀稠WUm,)WgN	Au|i&3;|9:4#>wHn8_v/ph{?v]TBDӨE?POQV|	Ce	ҴpZJ <CwPUpG<E**υk܁\%kΒ>
IYa'$zDKtD$}ָ}7;qHIJtDHtDOPOiƉvIv*[Zos
n_:NoR]fUoQA^YoT
.D\1_] хrG%zDI4b7ĸ#1nʴɒ^\$)%7^r 9}pM _v_q_u_s_GTWNQ
[Y
~J} X'?d>c {/
`PKS5  3  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/AES$OFB.classQJ1=ikc㣾bP)S*嘦5u:SН`dTJ&\rNnrl;e|n+ R-vB美wyfS(?VdA(8[2]Vo	%(vQ쿮>uU$B1tD$Y'3%߽ԋe<_PLQd)(4EX[o-~ҚHXP<Xv0LPZhb֜AL%i2aN}׬|}X`5!/_-g14rPKOnt:    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithAESCBC.classJ@_jխ.gӝE1 Tӡ2
y,W>%Nt8|{|}|Pu1n^%]&<"YD2n4\[66N'RL(?|9l79<E$/fƚքLFؘBBBBÂEp݇moĮQP)M9uFPI"TZMgh<dne=:E8w=^9._/~d1ePKHu    PK  C:U            U   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithMD5And128BitAESCBCOpenSSL.classO]KA=ӚfT
FA`)HAo8,̎¾z
zD/ὗ{T
1xڐ!vΝvח-3nkuzꃙ2ag8J섏3,XYfөrVKN`rE	scNV+ut|~$LxH(3iiVx"%]oZ}6,Z	%rA2V1HS2P$/cV(oдu@p\ޫ˛KT'PKծ_(    PK  C:U            U   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithMD5And192BitAESCBCOpenSSL.classOMK@5ikwAC+ԥERBZ!Pv
lK% ^}y?^^+@#TҜt<\]*j:ݰtp&TR=txYfAcb.L	M|:FKN-`oÏ`	Ź	ZK7](p	zA&LMhhYj:2դ~xcM?{)toQU`
 AA²Ld=
+6oi%6!3֟7mZ[(PKb*    PK  C:U            U   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithMD5And256BitAESCBCOpenSSL.classO]KA=Ӛf{Pу6(ًd,6N6:+oh <so NP pj1A\*i.o;i/۾Z4~/lݠ1CTO$](sDИ:RFB,̈́ђSK&F8ۄc!XAqadBd(J}Ms..\~m%	SSZvNL54GXp32A
ݹXU8ب*A!H#AP(%t, e+b[vCvwKHx^msֲ]APK,<u)    PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA1AESCBC128.class]KAjetDhHEP"$t8غ+3k]+!Џf<Ϝ;gz pBR22
>{
'rOG`\MQDЗЬl7)J;
{F:ٕP_!\
_dO(qi>hоkMi/	k2O[HZHYH[XlWZkLT;$@16blbFE)׬PhPi-48Bޘ sssd3lϰNZ,P~q#
PK
0  3  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA1AESCBC192.class]KAjetDhHM	]6:~T4+]%xx9s;jnPS8	{:j:B&ffH	UQ3Jq?Ϯ"7䂍U"{B1=D$NQF]nJӾ~yN]I$}xZ,}BBBBƂETW
dZe) cF[6r((DHfB+r}Ok	忦XpT'Ș8<#ם#۝a{tbqk6wpoPKsF.  3  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA1AESCBC256.classP]KA=ׯuW++ BC(EH!qбuWfՓGE҃PBgs{?? \`Tۄ܍e|KFǞq'q WQ1d(47ZyI-az/}lWp(b%yBV='[3+
c0bapiY9RyX:9kԦj(FAgJ(6P(/Pkk`DIwLw[Slg3ƠT5蘷`p7PK\A-  3  PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256AESCBC128.class]KAkt>,"4!]mtlݕ5ԕGE҅PBg;sz p=d&\@F7PS8{:j2B&f
S20c;gGB7T"B1=E$!pW3>F\N+3lO))4ET*Z_]ŃO4Qm cBr(Z(Dr`	
 =&(778Y9w3:3d;SlN%Slʆ}PKc?3  7  PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256AESCBC192.class]KAkt>,"4! ]mtlݕ5gu%$DhVJ3̙}g9_o ΰGTk膠{
pOG`\MFQDГЬyJP[]tlCQ_(_\
_dW('á/j}Quר_SevwƑiP:E"EPPJ~YxI& 1b[bBER,AB91+19!c2`x\glg)ҴbqW2{poPK#Ӫ1  7  PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256AESCBC256.classP]KA=je_@T/E.	=6:z w39s?>? \!]r:C-4=N9^JH3ǡPAO*
.(C}vvI؎rq__R	_uWMG#-*z'}qиjLbۋRiG#U/n'mR%H`B[
([(a!bJ P(RCq"ْ`tRܧ)rĀ9
9vfr*Q.ϰZ(|PK;h-  7  PK  C:U            P   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256And128BitAESBC.classOMK@}k?"(xh!	-V

޶ݐnd-_$x-xޛz p"A/`=H3
陧vܗ녭Z~@p	ss2ssAu4g3aWyR=XlndB-[(F}Ms%eA1قф	
-JM_,Smꅷq,DB$>5Gu^C
ubF>PJ aY&24b57 hbqb
?[6lmTPKE&    PK  C:U            P   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256And192BitAESBC.classOJ@=cik}ĭ
.Z-*HEHBբBd҉L%WqGSp'
=9ϯw Gp+(AL*i	voޝ49>T>xAS=txYfAcb.N2ft*Zr?OXK͌LU\ϸIu!71305eIw˂eM}37H(#EsTG5P'(i$e"#+jؼnTl[KϯX{Yްfk.n
PK{&    PK  C:U            P   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256And256BitAESBC.classOJ@=cڦ"(h:E@wX'LK~%N(\8^8>>? D4[cʹT\{iK{zr ߏa8S:&4,>l!ci^fhɩ\f8pas#SjEkaE1`dpQvQq-MȺԴ7Cs;I7X(#нEk܀:h,RB)sP%
k7m hR<aGens
QPK&'?$    PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHAAnd128BitAESBC.classOMK@}kӦ(Z.)VE@oZ7l<	(qx0޼Ϸw 'hVZ1AL*i	o4ѥ*4~?A	BLO$+^pTЄy1	%GpKpMs#SjWEkaD1`dpQvQqZ-MȲԴ7#rQ?n&few?7Pzu40Aca\,qiz	k6oiUͣBĳWl|lZmԾ PKsd'    PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHAAnd192BitAESBC.classOMK@}kӦ#(Z./RjmYt#m!7'xG[Cg7o
1*R5"J%Mл!;;'G4~/jABLO8)^pTЄy1
%VGp`pM3#SjWEka.EgdpQvQqÄMȪԤ;crա~tչ'A,RFk@	u p,RB)slPE%X\-B֞,q/PKJl!'    PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHAAnd256BitAESBC.classOMK@}kӦ#(Z.RjmYt#m!7'?%nAP73޼Ϸw pJֈr&4AN*>:9
{Q;vfzBLܤ&%\'e,4͋T-9:?_XKlR*\s%>&Ӆ&lhԄFV&8b|Bw6ZJXf h:LY`.,a⺝vPl+^,q/PKkjf'    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/AES$Poly1305.classJ@mSAu(*..AӡNdL*\, >8)BEg?0s> \`4nd,[
KC&1x`P0$ULCzϽYJpTF7ly`KzɢHZjWtNRn`c)juheuCǾLބ.ָ_ZgxRȪk.\XAWN>ap Ͼ[鶭P:Osrlw6zXB/PKAS3    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/AES$Poly1305KeyGen.classJ1Otcu.].ZAv)v!
.cƔdHy,WS".'?ޛ;	
f|)]*ONozJGYsfXP4S4,S9 +rِj5G#iOՀ7+Lƴ͌XAAفBntlh̒,DNq2}z1[QL=yAP@Awcf0`Uk-bZ]	$ x4y˪gmPK t
    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/AES$RFC3211Wrap.class_KAoujc*=8lT!b T`z }h
Ώýo qH=ҕE"h$rHI̦,TY)4K("^w;{w_p8Me"\R5y&3QGK5I&"7h '.--,-,Xwjvo\xm@lٴQƖ
\	
A2WsqeJqEP]ZuT/К(QQϰ3îΰk_zPK(B!    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/AES$RFC5649Wrap.classKK1Oδ>k'BS
>(ءJArLCM;Tr5`P"{||{Ao<.i>}ǒMXӈS&IS.BrM:YKp:89m=0e0_D+'O`6|9>IZ"Ps"yAAAAɁCvnG1~cVlU@XYPƚ (qz#%WAj5AenGbyniE)n[?+Fw~PK1    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/AES$Wrap.classJ1ƿtk㮫VxzhAoB]z	1j6Y婠PbR7~	'I0ehÅuslWF5J$\SVkC^'NVpǿPrHTξ9jUDzhjURJO-tB#hsptzHEn8hEgȰ.,|C(6b8CL1XFa:E: ? Z`÷_Q,8FPK_     PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/AES$WrapPad.class=KAŬwߍ"p-&#`!uo.{FePĽpXd`f%	`8%~L(팿K#k)/|ɕi<>YQ=| s)Rʖo:WzPjЄ̀~0 \z][TCgzU!b2l16Hh8M5!M`<<lV#N"sQZBu(d@z	
a$8BPKlEPL     PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/AES.classWeƟ)@@uA
BhHZ"HXa2`HdE|tУ	K37ϓygNϿg=hW):3%9fd}ÑH(Om8bm'Ƹ[I;2kE<sZ
xJ5s`4ɤ
SI5ճ%щ֪g-q=j2gCi$sl\VWURM˺f*hC93O٥QP[ݚ1Q]3t_;m\J[Ԭ˚^Mtß][YyEA3AG@CIp!u+'
9PW&vU^3JwO;Pm?Ez
Td_!"z6$;94g@pеt(VPpܡ0Hų]GU4u'bc	3o5SLC=v=)wsNy';*wRb;]P^0f>NWSVWl{a٤k9VT8f$nuN;
]J]^i_h[L
		\#Vp]pM.Q-c[G>A`@p\0(F'B1AXpJ0.Pp`fPzarVpydή2Ι׍HWyȇ+p~&gT-pӸPxZl6}
qCi-`}-Ǭc|MZ"V[Al$4-ނ.ĳVԗ,/-/ۄ/iiv2n:Cha1,-*pm;㶝lURSS l>[f=#1D*qWX@F{
<hf.qk\uPլls
_fzs,<9G@IHΓ/Qe.nU,YKC֑Hy/YOGAOI>@E>HM>DC>LKdHGjdGȏ81D~B&Oe3Qs2I~A_)+2M~MfooI<@fH̑?OL&PKS  U  PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/ARC4$Base.classJ@ƿmbĴ;y<4%7CB]d7n<CAof13 
D|FпPZ	An=W	60JKf?ޥK!YcͳK\[[%U-k¢-W{o%K<IKQ;}/C|^
,EA}V\y(Tkiˊ;'NS$doa:A:`0~}Xcc<
`H PKy#     PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/ARC4$KeyGen.class=KA5,4h`*Y=.%p*Gc!ؘYxggfw>>_pBMʻxз.vad%EQfKWΟUՍ2ʉ:ǜJJsgz/\NK~|Kl3jpQꌏD~CCӃ0NR<&Dd84D
;k
c/@}zlg!rƙ(
UВ7,N&:I;TA7 wX7+Im#_PK}    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings.classURV=Mtm&(@4M	Ӑ.86W*+əR:C&L ^X60ڻ{vܻ{? i3|9
/deH21bgpAaPRKi_3cXf
÷"%rk#0(Vne=k	>L1k5}63z<*{&iWJ4[Χn֪+Y\CJḊ ^rօm?aĺ\fkp\7)ӵeW1?{4<9szѨ'JJYTJ*t7}_YR{蘳bxEP
o0PNrM$VWRa+W
/4HȠjRZe57v^GFS-ͮyKs]KsLkVBөfu,C\;^7UmWg4VB
4ߘUR]rZ2J] pwcj-#F$&3C۞iќnU'3!d^s"r""XHĺ y7 [)OɹaY4#%_`AG9Y|eik	T$-.6,JK/xɗ?ư_cxx(:8x5\U5H^24h@qҕL/GZt"Eҡ}z_:nODq˓-^<-$aC+yY:,QZ|5|]GE=DO4
\;wv]2#vG.0g==-{Th$h:9/JthQ?.>fsێ2@Kz͛[C4y@dO0PK?~  	  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd128Bit.classPMK@}ۤ#AЈ(=b1&K%ٔݭSAŃ:o{||K`A/	Zc=ygJ沙21)z+J@iy6LRTӒ42>dMm<z2"Q\\1eyIL,>0r`;h;n;<MpM|.CT&2S) ,lpthGopض<|.6PK2l,"    PK  C:U            S   org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd128BitKeyFactory.classQMKQ=C+[Zh/E`:$VҀAޤod)̮TE?M%{ν
L\ꄠk^u5ү5rja4p*Y¼X8bY{^q/gsĭQL@@I΄#'1W`|Ak;<iyLQB,7UbD5Y'>G)i~w@
[:A
GGRW En*}Y0E9 O`:	추<rF^sҿbaFn`IMݕ+'̔ǃ-s:XFPK{NE  `  PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd40Bit.classPMK@}ۯ5֫C#z"&`XxݒlVTPm 7oaf?8!h)Ao$07AfZJְLST˙\$o(.X`֪z9WT7eɍFG8O'wQ$*v!K#
gOYzΕ4
Z kws†TJURdZsM0^g[:}۝k_|y^;+j-?PKf#
    PK  C:U            R   org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd40BitKeyFactory.classQ]KA=Yً/Ah.I`8;l:+?^h^s=re@>Jsbuq+{l*vrڒƩTpDLHe#hC_p^0"K3:
DHx2:6VD.Wخی 	fZsKq:Xb!e!m!8^OӽA.|6gtԈF5Va똨ldi#,r簁mx(%Bg̢Hk

+L52fGB2̗/ygjt("	PKтH  ]  PK  C:U            5   org/bouncycastle/jcajce/provider/symmetric/ARC4.classKK1O#mڇocB EDТ(::C)3ca~+?%^MQ@r.
Cbk!}h'<b(/EG궸jE{vd (ҵ^i)_QB߱E2MSa?BEJ3
st;`J{'|=uW3Ui1c3v./2đHr8#ÑqL1CsɯI&-Eȟk|#@QyeGG>QV~*b^WqpR;ϘD8I,fqX$V%*L\#ב PKjG  `  PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParamGen.classS[OAE\rYPD(4Ԑðv6#&&b<)ه9{|9ߜ9 &U"Uz2UӎJj!B>I%2IGϽ2V'c<?ڎ+sG*֓\cr}]KPHS "QB-	6I 
w3^$;!ym.lY"`8])ɉS0U2ˏIJbRngL91ڰiR^yO}4S3}eqŖJ'ms+Vʊ#|hBK+v|%iMKy_Q5XmO]O%1(oxt*6KCz

54ihТMu
n0t-S-œHצxn
{p{'/R_Z^^eW
tඁJD%j5X	ܸ:$\Ðנ:pWG7}_:0&&t=1 D=hд)`>}?և%7rS:iMHL`s#mwѻT3Ba,yQ

?_0zfb21hbx4<hXE6'׉QS(c"wеC1<-̡/PK.    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParams.classN0EkҦP@bhY RT1Db@؍kGl7R
&$>B8k-=?w﹖> c:FLf'Ji	I~_EXM.[K3dfZpk*+!٫5ZJܺidp֥.$N7pfEhciu	F	cl~[񖳚}2CvGH/RBki5wN:svg p0t
}x{o1D7r4^@ dQ4/PKMӴ     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParamsCCM.classUkSU~ ,-
KiBE{@S	JesH6qwI?3֯tF#3V߳@ A0s^' ]aƛ"EJ=|CQuQ.5muSw1Ors<⚡:Nܴܸ4+kXv\@)嚡i
hohafV7$sM0|QX	hւkfV@mQX9	Y7;.)PlIZat\QӴ-PisTNDPL݌Eugdaf`²s{@3;TέU-%=;[ٓU^-Gٕ5QG"nd-ǻqA-RTn
izf	dS쭼kn;
KSjYe0-Mu\)Ij(c(ZQh.JiƔmtJ[qrl|zDp]T"|
eTuXyPO{}Ym{ͮgns@HǆnZO7qD_YF"D\񆈄k"zEP\gC4݉LXL1e0i%ʥm('7+NZeW}Ya@)ye;*J2Q
ŬęUt`
UO*}"8;2.",&DdIF'd94A(ޕqx
#2sh¨2(2:W1%aF_e	oaIH
|!nzܗp8,rxSD>0m<9<	"8,r?ncGv:=Sr4cカjj~Q]1%8D5dӞEZihKyW6L:v)ZPFk=|+q/'m\IRE<󗭖ͥ}XE6*X-Ѯ'X{-gP8XTWEʹD8	{<)?ЙV1Ee6!zO
XPphEvbp7U'x!*yd}J	ZEC;ACjc|RFm4A{xq?b_줢s\z;
XҽÔD5t\O7hm|?PK4<  
  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParamsGCM.classUkSU~ ,˥
ZJ%$VL&*esH6B'Gg_Ff~G9gw@6sy{yKowa4ƹ0#WĀP7{WWƸִMݽ#oZ>ͩc.Li81rc6Ӭ?e1=gk&ǧ)33#YdMa$|QhւkfV@rmUs'P;"@.4;.YL(X$ri0L
|o:jjhiZ(9s'"f(n3038a9=ѝ#ZjAUtKIϦ4wu5{RC5JX24*EǱ<fnmR")"`n,9Y27R4{;ZE.T#uA-;Zk0E7T
EuAE9
EiC2uM]טNi+vmrO
ҢJO7Uo+2QS0i/,kѻZ|l=z{s47L[F2Ɲk:ˈx]D"qMD~Sl;;ujI/G턲OR6UuWe~1ÀHPnevUn_%eNw*
r/Ŭ:kB{VU#qC"2^$
2b shqʸdQ94aLeIx_Fi@ƫqcF򊄷$m|$>ᡄ%,p*O$pw0crês9'qUgJN&b#ƴ_TW
F	SD@@
/´j~Es
%<E&H_?jh]N[BBn-%XSn	{<\:=dBz"x=rr
EGAr"r@VN$<&>C!O9( D@WZh<Rv~	?h	'~VDn,f+
9/$e1َѠAP4t#{AF<hO(d 4h	SMFg/=@6vKX7{G)klV>^u%" PKɲǺ  
  PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/ARIA$CBC.classPJ@=WLnI)BwW.
]P&2
K ?J)عp9	
MtnI $gjJdupT13TH11`9&j
I^B1技X<cU*&\Q])ϕ`u
wHhk2=tEv]5G. Vƾ];8 hn$%Wak5c{&;GD@3^8,q[_ŉAxhPKzO  
  PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/ARIA$CCM.classN0!!@+ n P:DRقkTvbD%B8!P[:^|)vFkF@M>,TY)<K)O"z7,s:sNU_8R}t.71ᒪ<y&+!ܐ({݀Zd"POMM4L4M&\~]gw(лBOAgRn!{6,lطQ'H.(T+ѧ"zJm

xkGFY8j`PKF"    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/ARIA$CFB.classQJ1=ikcӱZOPpB)JgP(r!t9N:u:S0;UG Mɹ7 #Vws?:6Q$>^*d2#n;!E"BԦECxٸJ9A}Tu7<	>ѓ4
ɌǗ3pUK)rsy
J1OQ Tnyf_ih'c<2 
,302`aa9GwjN*%Pҧf=3)_ư*F,y6R^(|PKC];    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/ARIA$ECB$1.classQJ1=k::EPԕ"CEq!aqIZ_骠Qb\ސ97ޏw g8"ȷK!Aط9`'M#Q:*H%[HS-gFQ.c!ao0%NX0NgZ1Ϩ^Nd9醎?\.AonDJbOMxv-PPy({xG9*T# (jlVH*-d|D	<Hkq5&v[P쬰uت^_7(\9\@
-
,S6؇\|PK{c6  1  PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/ARIA$ECB.classMMK@֮xzh,	BCc.5͖TTG9̛7K	noDhޘ, {/vJ}i9QDi9sÌ~1%O>bS\m*dzgV'f@C`G) C7(B
(D{8 4;քh%Y8E5V1y/K.q[
ˮ+JPKƢ     PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/ARIA$GCM.classJ@-&kDpQKa@)JtB2N:5ɄTc
X|(q]T$afz pz䑠u)b^ֿ'J5Or:
9e*KRIy<1{z2'U\%{EOY0e&J1WTgQS%Xْ㲇%\ThS
M-N箪E1jg(krQ)d
668rmo0@kqל]+uThhwpFsأ;9v~}.VQ
PKC    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/ARIA$GMAC.classQJ1ZZ <(BH)؋5
5u[`A=4!/df||{A~@PVn
^%hzi f3/гIrU 
ow[iMP"=ax	LN8vCɓ}$|5x,#D悊Ȧy3&(P,Q)(2E^J+Ul5O)ٔzf5r 	%&C;VmٵN7v}iPC&ؙKNAmTss8v~1bT_T+XA/PK/.H7  g  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyFactory.classPJAqc<$^'#5",r̶,Y<	 ?JQS?? \8B!k0<c୩]iIa]C_LV%n咜Q:tSw'kMpyTo!9b7D?DȐ
fX]t5VxV<5IzVdy {	'Ӷ$4ך̴֒eH68C?|xS?3	cozL<ǈpPK6_I@     PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen.classJ@4mj?Е"f6MEl`W
c:Ąt&i!*PQY;s|}0ƙfM۫J*a~7%pЧd-gYs"3wK'#E>L6Ke:rGE=f:c:cZmCG`f#a4f"%7'&h03aDjn'ǍYLN"NJRz(qe*B&h)9}2|X_b(5USt PKp$    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen128.class;o>Ff
0F
OfYbȠ__\X\_P_Z_\ZR`FJ<FK4Y3330030q1p0p}✟㙗Z䜓X\Z6NnEN`Bf000YZ
7BI!;P/'g PK   M  PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen192.class;o>Ff
0F
OfYbȠ__\X\_P_Z_\ZR`FJ<FK4Z3330030q1p0p}✟㙗Z䜓X\Z6NnEN`Bf000YZ3poB@9v>^N 	 PKu   M  PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen256.class;o>Ff
0F
OfYbȠ__\X\_P_Z_\ZR`FJ<FK43330030q1p0p}✟㙗Z䜓X\Z6NnEN`Bf000YZ7BI!;P/'g PK   M  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings.classV_G}+HES<[֨(Jj!
ЊeŐInmw}߷bEo}?,1+fͼwgv]{,?3,`XȰJKb`da)52xjjcca9
z>ndaC3j573p+m3emxD	|rTnUCiVy[75UT{]>\x8%F,蕕/6%|"r[I._8U6B	~j//+kztezrgJ%R	yNF_ӗU>2	y)J=AMqZ|}^5FyFjT˕0ƕJm ݫE֫{9TJ).o0
_IUjnd1QiVC
Zҫ;>JmRK-0,CHXC 1Xh)^Gb_h#M&k[-aO/@Nke*F6HD
-CZ#=P
F|d~l*-)-b@UL Mall茈๤ܔ4(`"b< 
1
=`LCiP@H4<"4
䍲;(noP;n j@Uf-᎐ҥȱxPu˱P;jƺ-m󫡸֪駿rД6EnSTw$ިqWwb#U_Rගj/)]<zi"yCڔ
|	Ix8Q8Aa1~jW[!aΊ̕45ʇ)l3jW53xkHbpZɽSa2)S&C(S;g.::<z<FF HN"D 	:	$"n{%~jxY'hxE/9`~lǓxU^'xM&x]'C>&S>'Kfln&l#&[;Ww|gl+SAa?]u!~0f:טgmῩ^>?9[go}h+K,<>lZ?t|~vЃ{{JvYԋ?r䀑H)$xL0zL0zL0zpH9#3CFr2Mf	MdOY轢cX',>QnY'->ҬeghE ^֍qINə4D=}Bvms1#9&SO0Wtnsxn^ GEaψY-OYZ?ag~,wYct6RQd%0x	L6^S\$I9yzc2)>3t
|I\qyI>}l&H6(:gyT$],MX$gPi¨Ԅ_?&c ;p>sG;o7ÍPKaS    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/ARIA$OFB.classQJ1=X'(hk!S
BrLӚ:)Н`dTJ&\rNnr;̙
T|n+0m~1^=!wԲxރIjU #^W/NP$M#5u=><t2J$it$?Տ]/?^JPP9,Ax=S[u=C;q0baB
CVF.8 {Q$##oN f$m
a^y1+b!6XO˗w 3{H!	PKOޕ;    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/ARIA$Poly1305.classJ@-Mz۩EEAࢠ ..tSLI<'AB;psԽg֍EzK~avzvrAЕjL_4ftrTx,biiл+s*8
sS`8M|#΢JҟjgNS~C,4,4-,Xw_5_?+W&Ql5BV
Yu`ću hrd+?pkqRMɀNwg8=ɱc1b	uؿPKx    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/ARIA$Poly1305KeyGen.classPMK@}c?Ҵi5U x$؃(<lMY

 E-;fvy~~} ~EBQe]B^&I
ٳAp%*d"gRi܉vJ`q@h$x,2WwCzc,JXk:Bo
b>,i*
;ɋPnA[WaQmBѓ#Ap0k-4Q3!`P27%~cgkjroPK{p    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/ARIA$RFC3211Wrap.classJ@/mRm-(QwBtC&a&X
| JD8s/ýo qFP;cʍE'FrFeR$4N"Ù7{?νtǿ̙?g2zS.JH,ގF*Az}3J*۾߶07ˎzݚuu@2dD
54Mq@Pr[C.W+kcIaioVDB-=QQQpQpԿ/PK
\!    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/ARIA$Wrap.classJAdc]VHX8M:%Er\0| JY"¹?~!g[mt=fBTk%}]Pu%,!/&ɓ`Rzsr7NeH9غ֥"ZhJ#rq%w3E9gp-y;C(6bDL1XN'a@:  h_i,8CPK Ŝ`     PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/ARIA$WrapPad.classJ@ƿmjĨU/^Z/ xA<T<nI7a7X

>%nBn3|||C0-zcmt9aR*%]P*\YjCNL'+5-Y)R$
锬pzMժnv$FԙIG5,G1[#"Fq$OI&#;qƼwπy-۹!qPKh     PK  C:U            5   org/bouncycastle/jcajce/provider/symmetric/ARIA.classrPX"Pm=-beBӐa` a7xPB;dfIvk?G[JO?ިs<?55ȟHt4)(X64vt2̉q{ډ6M60iic9w-W󦣑5qV;n46j^pQӲڞJd7St=j.(m-?ӡdB[A4򡭠$jִaǝ*(FLdKr6-ºmc<=/BF>zR'(tO9nl&5jqF:FW++U`]pSpKp[pGpWpOp_@PHX$KPx}&5bK/6t->mٶC,:&~duչ*U.qQE+')rd}qg<k[ퟨ|?{[xNV;r|OnK6#_+2N&|C&H%dly#Y UE2I-D~"!G~PK6-    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Blowfish$AlgParams.classN0mҦ@вx	*HH vԑc#;Mշ	N(+XX|{pQ!!O	SeuN\*|nP\jqgn++uN826gfU]+2^d=YS˙̭Rxw~g.T~-/ռl3D%ЋEvǓל)s:`z= $NwN8q6j@oiw{KkEr0V$OgPKlD    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Blowfish$CBC.classJ1Oz3Z/U3"B2BcԹLy,W>%fNr3]o@к̯
1Og	/xH0,OH2Q '81D()\LOr$E\I??\FX1EIѢk{%lh8Yʖ
m6ml`f8$*BF9-1Vq]4/`sα׾`uXPKi׌    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Blowfish$CMAC.classQJ1=+8>kPPP;V2MNdgQb&pn.9>?^ `.TKFԻ{=MD.bɄL3U"-A'T	&\X 8>F?4擉̌?	ibVR)MX ۪\Jt$y9ɽj(j %,êk>^n@@$&Ң[vt/}8ߟh(Mv;`uxPKqS    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Blowfish$ECB.classJ1ƿiūa<(
 x.x\ӱM&KZ<| J."x	|_+S1{؉3-+;_*'JiaMg8d>$Jk՘p|N*2:l>xrU!QxB>dpqt98C67|0%Ful2t23;&spZNphw
O}A#CWPKQ     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/Blowfish$KeyGen.class=KA5#QK"IVL',zr{n"
 !:0ü?8á:Aۛ4e!^A_ީE+Ό*,gB_JB34sY-ZʩTZrbdʜ̈W{hxhz<qw%9+Rz"ƿ7PZC	a Fs&93F
cmĥvtvCx|Ap
OՖPK     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings.classTiOQ=kY*"KuԥY*-|"P4)ʈ	DI(㝮6Aw߻9o rqc4]sP+R,3
n7Ѫ[	}d1My5ib
])S[k<ޮ4[q,a<H}Lf['#ZEiEmm|66D%k}ΕRI3s~2|fTZr={4YzjKIUA9V$C1l(e<>8nȹ-;/eVUͨT˪-hiƺZ
RP5d[:Juݒܐd
mQcX\-m]
P&IfIڕG7
hUG0/`!<uT3$hxK<Ms9c6}"z e5n
b^*D`ECǨXt=n	~D2%
 ^m O2޸!Nѣ&{B (  < ;?w}g9B9"_ΰq[ASlD҃@g8A׬狀Yv47:6ncsO Q"
?PK*    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/Blowfish.class]K0߸Ygu&La+""CϺصHd?+?J<^7<9<'p=ۉu\\S'w	NDTH< 4HHBJM>;2U84}᪂MGidfΫ.*e*]ZyJ3t}9:.hpxMycXXg5	bV&HN[8FERGxKئ.$m£jeC\!։qPKtQ"    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/CAST5$AlgParamGen.classS[OQ-lYV[QR. JH=nsWMy47rHg:379|	`/bAc$jM9).gH/xqT,zR\|6o{Qoxq[Brx(Cj%Wg\_qAKeH9PMFr*IݜW`:!um>߰D1p(XrSǒ}a9bV');ɸewrЪjÞ%+E>
̔O*UQ5Z*/d,;JrI_Y^	iueE)4P4]Kɛ)/GP'qiihФYCV
m:4\pU5O{-18wYnOTG0p ?o)S;w4q*/)<q"S=l:nE$8ڃM2PzcTG==7}q:pboi/GOZ?|;Fƥ-H)aZ^P~*"`N:S5edk[hjt#dmlar'ĤC#Q/'/Jv)#6_Г07dmm&D6WF6pv?QN͈9UlAd7ηvah43g2YPK1=    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/CAST5$AlgParams.classVkSV=&	J&@8)Ը@H҇o\Ivo_a3_:+3S`fݝ=GϿ1|>|q[Ę O$v o$(;kMSLxC1"i	4CS&,0jJAXX	7&>֠wTL>uG5aN.އ_1M*Uf/骑c9F(M	m8[F65=O=SJ[0Iꖭ* UWҬdf-xץU8P*rz}JfT-(z^>n
U-D2U-YNwN~rzN!w.Qy)fd.F?|HPҙm㆙VUŲLV,=!sYzUa
559YJj1:mT@er4*ZU-RxsW7{+W m /*x*|ܺ;#抓kY[s4&{J""FE|(⎈۹i|k>LHt}(D3)/-z(:SM3zlZ^
cMw9/Bkr@2GPT'i/靗0>	ㆄw_ y z$r$a}	aN$C	#H1EnRLI 2VF 	xM:
=|
7yWbYKnMHc|2(&u`V'JiK+0,_ّ  ɾ oR\?	foȼ÷WO㸯?nB)CqH<A=)ec5(٬9<5l'9D]#A1ُK)<xHx/;ԑ=>E"韭|RO/Av|._87#AWCNZml=.ۘP,N:GCR
m[;*u96H9lgk5sذtF[?pEsNN1
y:do"'G+?OHh}gPKb8J    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/CAST5$CBC.classPJ@=WLZU
㢮\).tS$̤B>UG ;as?? pHPAR22$QcbPg\iPe,4ew!8]&R JPgNJ^H(TdJ>U-GUlLF4XBBB˂eae]]'56Kr`
4Y#ۏcXj-4poy

i^@xg8=,[`}Sk80buPK"    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/CAST5$ECB.classO=KA}\rߍ`qb-b(ޒBSf/FePĽBy{0{t0f+E#1;fe%sV7Tir\\ޝpG=L/yVU9y䷑ar«g0IlNCl0N!Ful2tɵdE;GuЭwG;l@r[KlvaUPKKc     PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/CAST5$KeyGen.class?K1Ɵ^w=\AphAq)vcܑJN?JLi'o	M	jq-7^r7~$:\3csAJ[D/B?^(-4sY-uSf3atնٺ$ʜh}4	QLt(ON"԰BD''TDCIΌ-z-g[Nue@k8X"~ۘn9=BPK"ǎF
    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings.classT[sPR
9h-b뵊(Ubo8>!aBЙ,uQT
v9 3ba3fe00p} DF)Je[39:59#.+g8	Eg?p`)MHyŴ+5%֝J3h6q5[q,[KrLDB\WVxU?iVWӅI*y1^=(Z˵7w٭G+b'9+ժfipRsU<Ku[4gp.+'d(fI
F'1qSpl,eQt,$ZuS=u̸TkGబN~SotH=UM։NY*I)b*^N+4G[W%o$ץDhX&]/tq̱Z1#cttGaa4ӅA|4:/K:ڛpL7s\RWmS!`IgX 1<swD/H !İWɄ9%]xdHAșĚ/Aw&prGk@vFssxhBbw>cr2
|x[a\,Ё
v3AȌnBa;ll}!	 ?PK]  ,  PK  C:U            6   org/bouncycastle/jcajce/provider/symmetric/CAST5.class]K0߸Yߟw^Lo2e[MKSY^	^Q8˚@$||cb
ݑK;br*E$/ơr$8y^IGJ=%,	SıʳaPUFd|4uЯ,W~VnTQyVټihp48,9ZmXXehi?u7(Zk4Fѩ5Vs
@Ĕ&Er4^sacXX$i6:
bX#.e6qPK3#    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/CAST6$AlgParams.classJ@Ek&X
.Z7B\XJpQp!!NHfdf_JpQ$vo{0?_ 00J;Bӹ
*KpFpMZ囜[W	V{5+aԵu1]YU<rkK^;Yyim{ᄱ1d<y(yYU5M}^	B:WJ
3@-#?N/>0|!HVF։	,x9PKC>    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/CAST6$ECB$1.classQMK1}׶umuG[=DvAP6
۬ۤlbJO?JLA<	̼7	3/o :!ȷw!9a?YsCDӈ ̦TӁzl"mRNY6E䚆g7ݾ%Ib3g17`_Bβp?AшRB1PPP%k/Տ>r U G@PЎޗ,UZR,L#.VdwdsسiѺC@qg,vuE@'ajmQ`35"}'PK͛@8  5  PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/CAST6$ECB.classMAKA}n[]CiCPquGfI0q:o@'j;!ԯtc.}fɕL\*>L*]On5jc+iMڗQ2)72pӹ+2N"T@[B8CBM"DYH݂T
>U'§5h~|--
WPKDIT     PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/CAST6$GMAC.classQKK1Z߯`A> 
>.R{R4nIB m=2Gf̗Ϸw '"V*PAѬpLK.\H {0a*'l[۬xvUIj_B_T[jnW3z R>{FL9)<(Ti9ĻHZNcq:寮YHs	'P
%Y,ۏvsRg4doǍqVG(Fpb1c(~6-20,
_PKy9  j  PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/CAST6$KeyGen.classOK0Ɵu]S. 0]2m2PS$٠@3'o	
M	jq#^r?y
җbxř\W-h"WE 9,ゖXʙTZrzWbSnraeN̈|4|>8cKFsR:qJtj[~ !"ԓb&r$gaqqxm:2 ILyⷭi?PKZŏ    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings.classTO`~^R*26 u"33F?uv
fem`n]{ۯ'? ,bCqcccc*85	d-oT0m-2$vƒxrlИo{"~u>.V'ȭ
3^x~OfԮ0L[y:%WD;nV*-(~ˇ"xMh}-cVi㧞bnyvJgx~Y]fe[BޑM!zn]GBaʷ-=)Z%4G:}6mx=H+aR=	b;j!9˝M\d{CJvW4"gzDv
} Ջ	<R0
U(xס+970&H᱌),Hb!LX Agox%meۥSn
F Y1IFH3cd?ۘ
ៈIZM|G12_RǚG߰CZ;P0Vy'k=ձޝ0+!%hq=Xs` ֱ+/IʤSD?PK
Ic  d  PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/CAST6$Poly1305.classJ@-Mz۩u1o"BP8$fR!*`I,zs	Uoq!b^4e	g9Y2%<k_=<\2:
܀iqEuE<U 8ֲ=w:wvffna$۲vB^}pu^,s5
R\!l,8p`K5_Jݛ8\S-S6P7/7hXαubU?PK--    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/CAST6$Poly1305KeyGen.classPJ@=ciXMեE+ȴZT|4)v!T
.tSLI,W?BD\;s9~~} 8^EB9$(_XWeٱ;x<'*rYtq,I%
yKtjJlp(9#&*e7k8LS.<o%e
AC:08WyNs袀l:Qsb'p{aӚ<p/c|k%s:a?ͱ=$tL܅
PK)    PK  C:U            6   org/bouncycastle/jcajce/provider/symmetric/CAST6.classJ1K:~,\*Q EXPܧ00͔0JpPUirrr>>԰ϐ9<zb_ڍ/)vb(t?T'RR;);f#[FgKVbCB%CV񔡑Vre?br?KSIKiʶ\Dh'5Z;~9Gs8",Gc\XXg0$k=PZ/Hj'
B&}7FN}b6
p4	q%.w+]*1G\#PKY9    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/Camellia$AlgParamGen.classS[OQ-l\-***(ЊPCBq]6gO|D#&&c]T؇337휙??phI@c+жL:2$r$\TP)}D15ھts.	,z.%U
l	ɕ{M+Y\=v=KPHx'ۜ};'qB͋ 6)""~!D5^=ۜ]D9p~v)$`fsTlTRr0&U
5(F5MK7꥙-C*[S꛾UY5\d
BVKv%dk`Y|fYU(JTM:S6D	#CE9hl8%-2j6
NiЩKi
g4pg=`JB$x6]woí؅m4whH<z߯TTywI%q@3b7n	dĐ$Ǩqc:.ᶎ_
7tẎ˸&y  DAq</૮(Btf;Em1>ъ4E7ѻTVE8F1%/NvKb.ߠg>G&3lSÛ[E&..lnQ
,e@G8^jC1<
 PKv    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Camellia$AlgParams.classJ1Ek?@E&i\qDt+G[
<޻ܐϷw =ax.qkyXO.w[K%{0+]*xUdM#2kI",A][^;M2ƈcu%Y>z[cz=R\ka3ŝhZ0ܻaBb"n䝍ܟs'R (TPK    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Camellia$CBC.classKK1O3n3"fBQ嘆:L\
X R9|$8>A+ZrL}6KE!"ǒ	]LtRi*=2 FU<aGROD4MuFR3S$̵O\:9UȅS(
JBw:^.H%lpEZ맩<mݍZ{mO@xw83,]b/_ĞUVhPKD̔    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Camellia$ECB$1.classQMK1}׶umuG[QQ< (z<ifMTP4NfIyxypb{OP9Z.ŗ'"'XKٔQtBo.u`lBf,Wr;
H-2PJ	~	RR.ؚKh$r+d	UtIe vKE/Ᏹ(T	:YH+b3p3l4W&:+2aM'rr;-Kth#?3Ta֓g|	
Dv(rVQD=PKŵ8  A  PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Camellia$ECB.classMMK1]ׯz*z	 T (xTӠMIBB?JLvox3o~~ .pDhCBƔDy'r¹MK5S2TVcĻ3ҞYQŅ,F.7Hu뾫
3ie,eйu]ɛ--6#ie34@KRM=BK&de2p$^8:F3n@vy9>WNN&؎$VPK[Q/     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Camellia$GMAC.classQJ1۵oUH1"E`_>4{)Vg`lt4!23dN^ߞ_ ` _߻#(^Pŗf#8tGP7/УA1vU(
x }_IMP\lqApɉ:ֲ~$<5IMp/$Quff2J|=Чc7&(PLQ)(4E^J-yl5P)j\@RKa>ŒY,{R{>7FP v&a]P{ccv9	%>}6-:v`yPK;tYk9  s  PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyFactory.classMJAvca|/C[$W`B6̲I`?˓<i7TuC=>>\8AsBZǄ$+k-	]E6UEdX<fKµ{غps{'olKCZH+~c7F7FLgHQKEhC:3aXi'v4a/C7%zSct!6i~ |	+_~4)!PKI $     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen.classJ@4mjJpv3]YiN(!NȍɴrP|(q*
nYsἾ= 8ÑMׯGBB]XKxF0dHe+Ti \e7)Le,
8e.iQ&	WRk?\'W0/MM&,;؊ј!ծ4w04ѨŨeۆ
;6e{ق8~=^̊M
5E} u}o5LM- qaUW|Zm=lwPKtp%    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen128.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZR`E.J<F[5Y3330030q1p0p}土㙗Z䜓X\Z$FNnEN`Bf000YZ
7BI!;P/'g PK],   Y  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen192.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZR`E.J<F[5Z3330030q1p0p}土㙗Z䜓X\Z$FNnEN`Bf000YZ3poB@9v>^N 	 PK   Y  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen256.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZR`E.J<F[53330030q1p0p}土㙗Z䜓X\Z$FNnEN`Bf000YZ7BI!;P/'g PK]   Y  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings.classUrT}ܪ	
.ͥj)
	G8!4IM6	Ȋ#H,';"̤Sx{,˖l4ß=~gw? W^eIko0\gaecgp!Őfd0pMo102N9b2cs-薀xӬK*s
?ʜŕ}6jDHTnNd6k[SM'd:Zw2;{GF	`iX{O@d\z'2VHmpwTKQgZbwuJnn1M(bF.`RE_]_sU$<%4'V;z^ћ?`V.7B
̅eU?؀;˺Ulk(V+4QH3iC[ڶF9
Nw	%gg(_g(wzʦjeT+[VqjT&l(oUKij5uYX)r]yemvIłnƎQَ߯4].;A7YiF6\0ybzG4:{K;U9{Y<smo|Q,EJ0Uz@KCpc|3Tp)|pdKfSߜ#̝yKdgY
ݘOv*gmEG".bυ"DDw[\\D91<E.\ư8P!.b/NE9MXU@_qѢo^iJYo+o^ҩZ?uN>AKSqpGŸtg3*A4΅9G"ȑr$/9B#x=	x8B|!tp|1=#Ԡ!
MR#␂戆8^:8uHc~O௜_oqi({hזMg@O{&Pb#|+'q:7pOPKE  
  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Camellia$Poly1305.classPMK@}ۯ41~֯

ՃT`AP$nu
)`7EAzx3ü7;3lTۇLdvEм*?휜k3z3)ALSe",X,zZČ[:q6₦Fȁ0q,2#?T3hYqǸCݾwgOiInTr +XA-&IVX!t҈7]ˀA_U`7}abTPK*    PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/Camellia$Poly1305KeyGen.classPOK0}qvuکGM(S<LDփw؅6%X
~ ?
%ὗ35P%tcDqE)YNΏCr)#P:jEeL!9t<JfyKL"DZĄkj4~oz ?L!AA݁a3uF	1*Y{pǄ"zխ`c\<"j	afdpCZhZb[b۞Q; 8js_Mp?PKb"    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/Camellia$RFC3211Wrap.classKK1OCۂB0֝RBJ1
5u:3$S?Հ?J)	׷ '(6[}ʹd!8Ոӈ8i((W$F2l"PEM\߿U,b?1gc.hG9d"R%w?t:LS."Gehdlb"h6WM
c>\mc
 
6j<lxhH dZM.
\1к(P?Qdʰ]eyv:u~PKR%  (  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Camellia$Wrap.classJ1ƿtk㮫VxzhԃP顋scL,VTP|(1)E<|0/o .pĐG3ޕ60YveToJʵuc6E!+*K-7;Rɥ"Q;o7pj2L]B׏8.Ga0ƣYXy1RzO>l#lc$W5BMCPK,r     PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/Camellia.class]OPGκM^|wQDTJ; 5B!/PN.]|+L
	˳69U
7(6ׯ^[Me?s#e*qұߑ*Bmw}OP'vz:KTOaX[ag_%#ϣ
ÄL"l:V~''̓});nk4;66L=Q'5ԯ=~U5\a
T	)Q$5m	I)i;w%IܗxP-*bQvcnPԿENPjmWo*U(sdv#C\2b>KteǘcJ`	|J'gI|A/I#] U5Y&ߐM-F.PK7    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/ChaCha$AlgParams.classJ1EL;V-~M Aqaa&$_JpQbfڅۆx{o7	xBH%-a.WG3BRgT9LVx	ft-0*[g[{N^Y%ޭtN!''9+c:;ŀ{=L\R¤%VXQ6jO{G+E{轅Y+8PKVL]    PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/ChaCha$AlgParamsCC1305.classJ1ߴ:Z|  iY)B\((4L3$L}+]	.| Jv!s5m4кFh.^.6_F7'126>N0.vaU"}+%2Kxsvg	*
Dl"	=g<J'E,2Et9/IThy1K)riRY6D=7C#3Eccr8EN
Tٹ;qo4DŽ-}
,aPKVM    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/ChaCha$Base.classJ1tצm՛7C[ ECPЦ&K
X

} J3z_1A4N7J+Kpn쌽	[W0gJK9./d5j*-suYJoؒW;3g܅ew;K
`OJ^檚KKQ{mIH#)()⟳LCZK9p$GB6zD
(hjHPK%     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/ChaCha$Base7539.classJ1ƿtk]ZMEE71MM$<| J̖xhf&)^DкVZ#c'̵w>LتI=QZ:My󳓋e2|&$+yQciBzĊ&\9Nm	n׀^FT9"hRlP
]

Z6P	lFkff$j-msPXԝGn@g@.
.oPK\o     PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/ChaCha$BaseCC20P1305.classN1Juԣ'	ă'v.&XH4|(cW8ibBgL296P/	NybzBD6%r=Ys\t sͅd/j*
E(	6fGūLX*f%?x*ICQ((ju7'!* q4Ǒ.qV=Ws8y_bkK4^׭N}l	PKNT    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/ChaCha$KeyGen.classMK1؏n׏z xh{	BE{boBc܆mfIK

 8
	0||iuZ7eh^B*⹠&OzY$U"%OLU:cUΥ՝,N?,Y"yiJͤZ,3*?;3ۡ;Kr>V~Caԝdb%x.?U!j~ B2c= gkoYMaēv;C* wX7k|Im_PKB+    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/ChaCha$KeyGen7539.classPJ@=ciHեE *"-"B	c:$L,W?oνιw 8nP͡ʔe¹}uqu̟e06<easb.,e&f8CN"D:_ܔZEj0ZsV5B*#a448Z$+STY<OAo꣆
zp>C=ggSa4tUp6Q7Q
e'hP>qFM>$ȷ	~PK^    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings.classUSX<r[U.҂,e]K  T^K	N؟ IWh)Lܓ}s~ wq99.q\qM4-QcG#11qc'yx*o;é拮g'3S}YIXupDԢ{(m{#/ag蟩9tx2G츦S=Xnt'Ldv'H-$feKwm):؆:C]:ij`Wz^vἰAV(EK\";܄a7/^3Tj$ORvpM)e/ӭ.ua9}KCX{ab'{Y.k%<Ϊvyv״Je8nYpvmcoIMxvVixZqQ_]ؖ_(I77M*'L[ȶ!
U\IZR,05
-ýI=
E)#w}ҚHNX.(W*KcԹRLzJ>.5?27;s&kO61Ρ|XT1%)\Us+*1<j<c/XzuDZ鳪NVzq?Å zȧw#?@z!F/hr3>x?=d?l`4y.
G(GA%& jL;b
TݫI$OP:I4hg'ENHDc`]v "{:
nn`Z{}/;X"@m}PKVuV  '  PK  C:U            7   org/bouncycastle/jcajce/provider/symmetric/ChaCha.classN@˴)x%cd~(ڦLI[Ix,W&.| xFWԙ|3sl1$vv5G99C=axBm˕VPh["<ip-ite`NGFc潠p6fMNP4˕Rp
Jx£j"4Ḱ3\Tҁݮ#Hq98ơsd89Ye?MKZ}4<IoSDJ)CId~~HC`\[0F{$ZqX$.')
qN!ngPKO<L  e  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DES$AlgParamGen.classS]OQ=,||Y肢( JM
Ƅ6wo|DG1.Ng朙s'q<.!|PXKnq5C,KŢ'g'K^JlQXw:^<m
ɕ)4C%Wg\_qAKeH9PKM&r*IݜW`:!:/s3]\ذD1y]))cɾ0U1d2;jhUCIa
ӒLhf'P
(AMO[Z*/s
Yv,!UX%̢NNHӯt,3ɋCtq/.@.)'o/Ƿ鯓444ihТUe
m5\СC'=Ж\<,Ipm
_ITG0p ?o![;78o7v8Kiy~V|m"QWMhD%p=э;:zpWG/cLGFuN:`24؛蜗u#ߘUċۼT(Etk!&s#	շq}fS;!f.1byd4~_0zfb"61lex4ա-<G4/ogudpgB
c4#؊n]o4thf2YPK    PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/DES$CBC.classPJ@=W>n.;E%;euj^̤B>UG ;ν9羾?>\ᔠzc΍Ld~kTsHxCGqUdyD2a4Cu8G)
d"}9,S雜
t"WW].7m Z2b~ʜZ:,[nuuKԑ7v `=
]
}sBg$BQ1#5t=)qX{_+81Hw&PKF  	  PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/DES$CBCMAC.classJ@-MSEڅQ\(]v%]PII<O|se>? အZW*V5C/cdBipOT,
<!iv
?D*}zSNN^XjnLfZ2j9	.V3q?4JPадв`1x}U,GxT-IVbĺ66tbFi]KD1Ѯ-GC4)Q;o?}CgPK    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/DES$CMAC.classJ1gӂifB؅`WeLCMTr5`Lu']4??>\vZ*U
A#F]m&YRQnX2a,LJEHY&\X
 8L
2Xf$QjMpZؗ+Tr>
HѠhR((A>,۪kEʺ 5J6+aۇح,cgcpD1VZtwk=p1.ڽ9ިD^?Щ PK    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/DES$DES64.classPN0<MӤOJ
CD0!СLH:*.i)R)x 
TP};w?_ <y+bӗd*8e2Ox.by	Ue
˧'Xp8Me.f\R/<x	.nv2Q?T\DDÄaii<6^TsCwR^	6Z8ac!A#Hf:Uck1A*zhkVԃ'{5]5-pԹ/p\c+8hx
PKy    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/DES$DES64with7816d4.classQOKA}i
:hA40$<Ex	A]Y?V'!ЇfUB=4üy377_ 8$KʠNP.{F.sK`	+]uݜQ(⊙
xٔÞo-NP2-ۖnWVzQ_Es"m35DKލ?éz0
}q
ERnެ0hR~V'%">] HRX7``@:dk H?4+Luo:RBY=6=*jMatHu&_Mdg	v`oPKYM    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DES$DES9797Alg3.classJ1LNY(vQP\.cԙIIBUC.?w_ αG	JW*Q5A]=q"&4L(L&Je^gn,bc.,f&
 8G
FF4NXFrG$h,<NUZJ'E@Q(QPZnјH=Ks-`12;H&+(c͇ulzMiVZ"plvn;oEgSTzwPK     PK  C:U            J   org/bouncycastle/jcajce/provider/symmetric/DES$DES9797Alg3with7816d4.classQ]KA=}ۇDhA$A~<E6;c~@?*U ;9wz PA,_x H\
GW׷;pؐ29e\K8\Fݜ'Qܾ$m*Jڶn
FPb{i
ǚ(st?=!818|Eܧr,l1P&_EН^OP 6WjikXԐРiX"D\)єܯF~Þy꧱ J:XӡcCG*̖Nl!pnRrd*Dͅ	*rc16H5Bv*PW14vPK/R    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/DES$DESCFB8.classPMK@}ۯmYn*xh{p/!'A1n5Mn*gy
XI`a{3	#CR:b&f$Y,34RBl&B#++Ep\ƝҊDz}(e8JLMM&*5ZsNѥgKgZEr8
ܕA9:CV]4 Z6	Zeq(*ܦ>T` fv.KEPKZ     PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/DES$DESPBEKeyFactory.classV_WE-$Y"Q*jB-R# mn]bwo=9J<G?NHc=gܙ{޹3wf_ ߌf	@p!z$xihb$K$$HN&̼5y!:YćHxOB0gZ687eI:1L~\iڷd1#mp%3لrۑR;wMF)-KMF>e|OB+Z^Sۆ[PN-E[
vsaN\^Y!|v!ZXYV+XV9&52SʹegEkY>3Ve,jjT	"YZ9訣c7N)KP_]]N	몲XѵSG}c[K'g[y#m)m"|	3k.nn\]&Cu FV$m92^?&Yb}UNӴWT-2>Ys.0\dbC7Ç1|>Q,ff23t&bOI%W&t%ۤVuIv).+XM#ʮh	kۼR|Z7pp⥛d8rD$IK{	d`+oXՓ-W*қGSpL_NAAVংV|	9F!xxq[OcDp11bxǇ>L	2 >$!炌2!Ȥ Iŗd\~|!WUJ0Tm՗\~,!P&ر,akI-7-fK]uA䂸bwz2L}w(ZC~߻!l@|DPZG/~
GddKc:3
{:OS|f04O:SO!i-nLU.&:^߅y
c`+لtzabX="Fk| tzhf\jsMS0]p /CߴWv1tRso'A\÷tqPKIQ\  :
  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/DES$ECB.classOMK@}nū!xSs	q;ԭn
Y

 	x|~} 8C?I'K
3ؙx4K-Y:_gJ7}Q?޹,Dm͋Y,[%z5BK*\Od9Cΐ$w}+sNbZ#aLdtnb{u~`@|
;+FaFPK;      PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/DES$KeyFactory.classS[OANYrTRdErŤ}cemv%dOA=-m5af}sfη>Z碈EE}sP2r!|ȬiE3kl,e
`hRh.ܦؓ]Ι\t/3pqkZN˶dehrA7yf;\q=̋}[鋖<ߞC|ӱ'k%#*Jz
ܣ
Wd.kõ
{WR;|&L/a-ohpܜmdϷ7DސzuͬtuG9awR"qKg-/OY+aG+GG7GG/%UIu3ʝjN{ջ8rC^Ljz]gOɭ4})݀|5ڐ<1բ%NbĘ2jn
4aZ0nkZnik{0IE>\ll@$S;}_LM'qR15.@t,XoL ^9ގx)}b5++Ct#~E_ƣx7޾^ã!zYU"(֤v$h[xJaxL8F9F8p$8SɌR=
&ѓGzLiK1D
T1kUPK]    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DES$KeyGenerator.classSNA[EYZU-hjHz.wݕXķD𡌳mAR"u!a6VcQ*^"j\2q-!<ؕEN0wO@h0%̺/O)[})r]`*R5VJqt8BYKI+t|;(NQCpN˰|\S)GFUQ-BX\+{XGz=AqĎ#y)TQ<RP9֛-]ǳ"!zʾndAC`ࢁat'|(.0̬>loeOу;aW1"jΟ1i4MR4-6k<R,ڰ`etZݸj
,"i}f~B7&Fp(nkqL#cbjqg.(3>UDIB,/E$!/"Ӄ U,WZöb!b&Hљ*,
@*' ?D*q:ԻX$/cX7E
&$&a/PKt&  *  PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/DES$Mappings.classW_WBTJW끊 {pLM+{IVƄ&AKb}߭v7>~yμy36KXCXK$tBS	a©݄M	g$E=!J		-'l#$IB?<B&d	."\Lp)2+W"\Mp-:7n"Lpvw!Kx܅gx*ސҶu	+-.V\i>'T5((3̖uˢ
"V4hP
/<@eا-Тr>خE2Ԡbi)

us֥
m+(,O^9ږvUo/cNQբ
lX̉\OcZeo2q53z*w Yc\<oG"੫V`Ѣ1xvނxvby/BO7%tj/G|fǏ* 4-tubjjB`W&s)[Q#d,/g`lfF϶YXTzT4K1rRk)pvs5<_zr,rhc7LRS̕ʙYչi`6ȭ
1ʤdUju[+c19-"E2WUFx?g)lOYa_84dBh}[{pgs:crr{=hsIh47<ƒ뉨H29;u(3A]avi5_\Kq-*p&KQq^oOr hL\EO%ǘMnE:;Ž펿;bS=OK'|pWݺ>=LNvG9g/&vpYYb̗=Ϭ/`5@!sJq{.>MP]K(/_\S{tşrsɛrlLN9A\xąG]x']xʅ]xօ^9p
=3}j"(0ѬfQ0rE0kL3´<3?a9KFGwbu!^\CB$}xӃxKǻ%%؍PJ
>uU|,gB|!ėn'n|0>.k\?q"7
Z|מ`η
s806aX[/2ƳΧa'[Sgq^OxÄF1;hgMi/~aY}5jqYZ֨2()
H`J28^eHgK-mL+hzK;AKcK;QMhǩ6;i'ɮ.uN6Om4L#V.j5hiFըdomAT60~bHxaDi_N%28E~ʎߪ;ZTp 4Z$i,U2JܦsVe7VkQVZo-0~gfXΎ/Jw/9М~kth%{Oo	D]=w@]7K7?`5APKU    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD2.class]KAߣ殫}eP!
D7QTP8~ZHY	Bss}9sszPL	Xs<:	j2Jb&fckVa3J /
"?䂍T*{B1=	C(ɳ)GnI&f	8s}-k!o`aBтE;g̎mީ ʰáu%TTA(x昄J;_k	8DH wLw)J)n[yz[Slv

PPK%    PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD2KeyFactory.classQMO@}k,Z?.L<1o
$T&x1Kb+lI[1Yz1GW`ُ̼	5$BG<uZɍ/L8Ep,PimZW}Q"r\R<y6hF<
\Nk/'l&#?	d(qϾSfT"BUtQ.K(4M21,/EnZҊ=)PBF:	w9<0,H~]"#qȥ`I|@7 #/%ͨW?ς7p+ؐe久PKNL  [  PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD5.class]KA㚫}eP!M]DQBA^nc!3kj!Џf%H!ρg΁9_ ΰOjp%#\x	udLD}	͚֬$4iøgA_<9E8#rUbz"QgS֓Lsq"Z}׆e#ocFM;g̎mީ ʰaAJ:`1	v	B]qfA&s3S'SS)6SlYVZLc5t[6CPKO%    PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD5KeyFactory.classQMO@}k-&W=a(PIH0b튭%mgă?e\Q.fg?2fޛϷw N F=#TONxQ;aҮջG?}Q 
YN^]æ-d9\бM[4F#%쩭mx J%7weJ֪Z:uu:zTſR&Ю*/En
=IаD
f
21˳9·,Hn]"paIz n@f?K^iY6˯Xo*UV:Ks/PK*L  [  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithSHA1.class]KAߣ殫}eP!
AW}&$t8غ+3k?~@?*.xx_Μ	|!d(kB=R}MBp_ǁ`\%8b"Phvl7g%H;zF鹞DՓP?!\dO(HJl
b9ѓ|pwFY<e\_Z[(XXP`jE.k6'mw*ȁ2fXs`cA	Ul
&
CZhBynYlY܌;;FTv7f|z[Slv

PPK2'     PK  C:U            J   org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithSHA1KeyFactory.classQMO@-(Ń0ƕF@	&^Ү
[VL^L<Qƕ`boo?fvS&(b q
7:'vkg7z.%&z"8OmFCNY(Jth6p.B9g3t
шGkJ<n2;򃘠$K}ujY35jHh4$	:ZWf	&PK
2-Şu(H!
#
YN`9da6}d$O9ȼ%O{H=̑WTE5*F
/ms\RZF;H}PKlZaM  _  PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/DES$RFC3211.classJ1Oj-(.Fc+JcjtfHBUCIWR	{ϯ 8$7[}ҵd&hjĞig<i(W$F2t˖{럟yޣ
_3Ubz6TIn.L4!Zد2y"OQ(R((AyjNnx$kȁXٰ2j.&(lڋ"0Zh
*g17Ժy5P4P?Y<X̱3n͙c-V
PK* &!    PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/DES.class[SPױM/JQ.*{@M[@}!SiNq|(Ejd/d쬳 yV/W\s=7XY5nͪB3r<ǷjYGѶ؁RoO=~vml#qߵZ}_aEO0Wi7,xG9]PT(Ǒ}vRpGX.ޜBm|q0fZRUgò́~2.k\׆VRQSkzL>pvkYslmǮ`?*XW(ە~Cp
Y0sLF )AL$IE% %\\
҂k[ۂ;I\.hDӼfQS"qYwN@mwxԿ=;SpHfϞĉiL3/22ܣCǛ]4{w3+`b
_G/liܧ!Y"Qr\!r|J"ur 	Y!J.&i5%Y'oYȓdA7PKQK~,0    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/DESede$AlgParamGen.classS[OQ-lY#r\E
hj 
5$pv9{_&
F<qvS$҇3vΜ_ 0g1Ġ1DՉT`kQO(<a]~Pl_qB	)+֓qBѸ-\!r<wj=aI8"iWܵk;x9aSiD-Ԓ}nRp7Nj%nk[(":+EW9yq"&fWӘ[9'[	yD96eZ\PtXj]Re%IUr:%_I.+ߴY^
i<ue,M94P6]Kə)!G_Q#ÁiihШIC
5\СC=К\<^Ipm
%*;8_Ŀ^;w4q&/)<y2.R=jT#Qmav&#i
bэ;:zpWuc\GtN:`2ԝڛ~zh㍴K[0<%^x7rjStҙ",#[̧EFP	!wjS{!f.1b9dgccϘ	=O`21lfx4<ƣh\E6GׅQӌb3"z7f0(#ۏE_PKn    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/DESede$CBC.classPJ@=WLZU+E%;euj	3rQ$tQ΅30}|~ 1As	:"I5Or:9erIy:)~#>DFFlc^=sEpC>cq)*".Je!˵='$k湈jҭ`۴+j#oRv;lt8u=V %4*CFy1Ѩа>&z8IݻȠcnhPKg    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/DESede$CBCMAC.classQJ@=W4>kXA..tSII|?' Yt.{ϝO #{Ok!EvCp1}N,Y)Sy%˱\ӻ#<#8!4?Jk !#8'p8MU&F\Q1ϔ`VKkLm@ptfPu
M-=TYcA5T65VJXuƚ\l$^J(Ԛkch!&js1>t{3];a PKej    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/DESede$CMAC.classKK1+n\uӂ*BD`{4}lX,PbR{=4!fݓg֍JT~KwY%&#Ʌ.<2D~#ٟg*< 'BLj$57E\+NptWKNs^hAѤhQPnj^@eR_UE|@;`Űmw-?$A#
:{Zm{6;DF@t6h)2}PK_    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DESede$DESede64.classKK1OGGեA(
VD:vQЕPrLCMIJ2\
XL-(HM໹pMN>? pHo4k!ErCp>d3$$Qˑл##8[%Cfh	:b/<s21ǌӉVb558lyڞr"\<MDD;
Jf~U?!۽;Vkv_A$FM.|x`,ғ 
u0[܂5Q'v27ةަM4X-}PK6!    PK  C:U            J   org/bouncycastle/jcajce/provider/symmetric/DESede$DESede64with7816d4.classQ]KA=ePЃE4P/6;غ+;kIHY}pνw8g3?_ J8$Ξҕ
w؋7t[*phxL
ꍖEcZ\FW̬5㯦toqb``ٶt;5[b.=Nizq&m35EK>otʥwtgTfH,%q
ER׊j
єFV?>2B@
lH	
/#t]ᛎP8AVKEMqOWPG	R1ru3s݁FC,2GPKP    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/DESede$DESedeCFB8.class]K0OյN/A^NJvY03ۦ$ПU?%sx޼pNޜ||~A;~&hD"SFENPgLi&)OF"gY<G"}1dcbyL	6E[sW+%LD57Pадв`xCU܅TKFRbĪ6Xwb2ĽO(Ԛkc"ff6>tOS6tl}廆ؿPK    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/DESede$ECB.classOMK@}nū!a($ x
v[ݰ<(qzCg<=	d4f_)uy2;Ofe-K֕7Tir6	-c8#b&ITּ	YUrdXsܾvoU)QZ,Gc<qXq"lb&K|5٬,##4צXN{6 >q%vVQA5PK     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/DESede$KeyFactory.classT[oV1%	l(MgmlsaQʉc>O"<UObYfΙ7sp
5`hJ9#**HK?)HKgdgv<G%a~\\QXQm}Aensml)^xs;Byh zAɚ	p&6\۔2e^ӚsY*8Ѳ-~֣Ppr-Ǧ;#"+V6.a	~dA09] SKD?Amb5LouDI?hZgG6˭MmjF8L(q\d*uwZ,R;a4	5UR1ⴊ3**Ϋ uc1JT\}WK?Kszx*4MsrMnj&7O'}Մщ!^3=x-Ik6$5'_LCGqT8%1n"&\,'R%\q	tⶎ˘1)ܐMYTuqG.w
eΗwX!&Iջe.Z'N%
&	Iu@+eŘ4N*b)Coa c>^Wr	]s|Ž\&9ZKkL)?D*NKJ4MddaOJRJ\tq>)%qSC;TU|}Ot_qi
;-/]uR*oydVe{>ʕ},&M-
`dXEPKjI  !  PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/DESede$KeyGenerator.classTmOP~
J
6vZQ
NfHOZ;Fq(#?n~89>?}`-hBZ|+%yڲ-b)-A].\dV0W.uYpe	9
>{:li:kAR󥩢V~%1;RVɳ=mٲs:wᖋ{EnjdQZ?YNkN6?o{rTLrUeg[.;/Ob˱_1^]OYQ^,op:{VWޥ"eG9sɢsHP򭂞b_}lq+XqI2zdʸ*OFLuSNۜ0$z:Fxb,7k"ǰv#-(}2+zTbB;s3Z65?@J;="/1*.E5!¸BM!Tt ("v$Tщ[*FwP0ix`R0
FXA
FH'/w2i:/0e}f,k]#6 ! &$Lݒ̐E!;%u!+XJb3$&*x50Vg)kf>`T#xNpx&*̑9QAb&LF"bp#I,|FrδR%LX!uPKq)    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/DESede$KeyGenerator3.classPMK1}nV=z<^JWboǸ
kmvIY

%fBxL^f
T	*~)̯HLE#TX`.<ePB<ՆDq#8Ce:ˉөȵz5ǫio6p2a}nQ)(E|YUFV`ߏ2{zխ{`.<T\(n0mpeAlZm{;DV&>><.$YtٴPK˝    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DESede$Mappings.classWy|[G^X#GMZjcRd9q\Y#2qR,(rIHr}Sw!.8r_-rPwcVi8y3߷;;;;Z Їn <#	"M0s8!A0	G	I1Bp!d	9cyBP$,NNKX$<xO$<p#ɄJxgIxلKxn""	/!2	 *̈́W^Cx-u@x#M7Bx+mn!N»	!~	K[	sS<t2jfFCsGh(%>AuX_wp8f&̽}.TX>[>1Q84$c/fĈ14lP
[;C4v $x^Fh.筥Vi15
b3y#s!v쏧STz
-me'Ld6ϳ(,ysN..l{^ﾾ^?o^)|F|NLOEaNΛS?8w
R1 ;TRcf^Y&/Ojf*UohBXFֺ\Հcͯa99{` _nGC	MSY*ݭ5h9ڭn6sK;aĽms2~}O4.g}$vP4hpx829\
aQ?8
ά
+ffWk')}gWP{0V+:<w)/ݩ锝-fӦ
8Ue۹ZqNRJ
Ry4n9Rkumʍ2.oTvjJc]!oT"+WXCo0#ifOh04faѱP[*Tx$rKGӦY)rv׹׀H$dasF.gfx6s4\țlLRHVfYZޤYcFj=5D,+*7'
_$}Q(+X1$R鄸E]|;]F6qc>nzsC|󩸆𹃽T9pיU3
/:;987oƋ)J΄x'b+7f{!]ngs5s:&
88dQ_%2ܜYiɽ=*p@P1k>G]p.|څp,A
׌;L06_y(ҹi`g4k8A՝3ZրWHk;
|y:S$kH<x|ՃqsB1Y|̓A|ÃM>o	ma_/?rn|wǭ
!~./Zq]/BL_?ܡm|v)2E2UP&_ ܅Xш8f\klcm;_
,Y&yc,rO2nX$4wu냷#g%ܷ?b<6[v	VofusJoVU&ܮmm`[뒶ni{.Z&[n-6(]:=%NaA{!%̕RBxKҶSvH*iUhv#lsYƟإ+a3>:݊3_/m;:CTgFژ
s)}U:C6ZORKm@Q:+hNG;2̍JlSms,mCmbm%RLjJO+,ҶU2.Z=] ~&nk ~x;οXnƿPKfmD    PK  C:U            L   org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES2Key.classJ16j;ABP)JgXt!*]ЦN2
\, >).
^'Iyx}pt%ȝ	)s
AM$SHQ.BrM/[ּC>R=b<!7yC8TO!hģP9{
:ͦ
	.h:߷`j`;Mm-!`%<lPQB d0<tOk	?u=)	bVjMS gvSld3<ST_\[Em>PK.2  <  PK  C:U            S   org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES2KeyFactory.class]/AѲ]"!^`T"J%n]5.w7~%NC*A$=7ϼXd
IDaг)/`ȝn{ѕ_ٵWdhm[ˁZpaԐ\țNO,K'*REޥ'uȰwHJFFs8b!O=D)HW2uܓ矘JmLm3͚ήT)wfCRaX6c02`2,Ͷdb]c+NPun-U_DL1WI42чl/1̐oRR[
>w ɵJ1zM#E7 ;eOIv'zWu~1t0PKW h    PK  C:U            L   org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES3Key.classKK1OvZ J!3V,
.LhSILY
ĵ?Jnn8'ɽ/ NCջ3!EtNPODyapt</$e}ޚWG7bq@GW\}7dz>4G#i"ZڳE4\77g7<&XI$x!_Vi2mn	)+	Vmf*W%)
0!A1%AJ͹i=Л!ߛb}lr~k6h'PKw0  <  PK  C:U            S   org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES3KeyFactory.class]/AѲ]"!^`4"J%n]5.?qGӐJId&393o/ V1B!Q0{ʋ6rۻ^terwv/Zr*'vD5$*>҉ʮTwI2,j;7upR0N6;k&dqO8Qcbg
ҕGi'RSL&+UʝiِTX%
0-şX
!TdK:Q(SUE&L!ۋ~3$$mVCϝf1Hr`s^H
g#F!f0Ukei$L PKg    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/DESede$RFC3211.classJ1Oj-("Q7tѱBB1
5u:3$SaUCIm&pn.{> \ᘠ	*2i<V#@`\eI3Md$4?:?yy*H3SL`X(LJ<zc$O&nS^/W(%2E1nZO[m@blΰ-+.츨ᢎ]Q$ZM@B!V4]egKTGK8o8|QԚ#TPKrZ    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/DESede$Wrap.class=KAŬwߍ"YQRx섈޲gY(qH'w>pcd00nV~p^ۙxZ6t"!mc|-Hϔ&'Ə4'[qae9$ԔpbA*6fq%hpU%nK^[(J#rlqލ!{=EgȰ-G~5٢*#)0z$!OV_BL#PKI#W     PK  C:U            7   org/bouncycastle/jcajce/provider/symmetric/DESede.classmoPt8͇Zl:PcKr%PH3|
L|CSbBG?~EQ N Vp=7.QZ$"e$z{/}}ن:TFSyuAC;A
h8hݚnҁ:NyO״ؚb|b3ؑ!7B.+^
ޯ\e
aؕR>݃,VQ
%J
X&:׫w*wK}bѫYT'S	4fM1k뽭V4C-}_u$D\"!HIH8'1+1'8/1/qA%W$p"'6؟m#j^xIG-rK@]%+͏-:1MhBF#Z'q"	 #M2C"m2K!Wɻd\${dO:Dn3r,ME>&'s$~PKyp
    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen.classS[OQlYz(J)ȢhY5TI=.nsWM}47㜕X$>9s曙ofg~	0&`$K.09-Z6y0$&O\:rӏTX)D!uS˥'\PBIdj-U6\ɕ
KY6G
ĎwC}GI狙>@̟$jN!w)yT~!(QY^JxYRVxEԪ#ʚC|W^Ib슌쩚]_5܋U^
к;.{G9WmG*Cji3C/VU/vD^Ȫp^^$Cu+_q]A+iecxuS"7Cv[P%2j@1
0p):t8pz=e8<Q]z>Krq~h:oyҿ٣vEGcW\KX.X83Ј>Yhadg.[hŀfM}\5qM0b7M׷f&.I[&bh3A@nͿi&<:w^S((E4btoDIo ْT5Q\[/QN,Fd~0#"п'-N2yяYc_`fcb
cZ[ǽLcr݋}Ȯc5Zm"xy7psxXQR$b}n7XȐHPKΑ    PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen128.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZRjnfd`O.ǜĢ\<F'
M04`g`ag`eg`a`f`b`bdFU)<yyE9ũ@ `a`83poB@9v^N 	 PKqR   m  PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen256.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZRjnfd`O.ǜĢ\<F'
M025cg`ag`eg`a`f`b`bdFU)<yyE9ũ@ `a`83poB@9v^N 	 PK\   m  PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen512.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZRjnfd`O.ǜĢ\<F'
M054bg`ag`eg`a`f`b`bdFU)<yyE9ũ@ `a`83poB@9v^N 	 PKB_   m  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParams.classJ@mҦj\n؅? E~L8!4зҕIV\=;||cЅO{BL*Y^zWhu_T*1׳HIك^dp[e	BfWE!;a?IPyz
/,9+Gk#Ǣ06@'@Kn2^qsϝF@T/!fsk>jg}Ztv\'ۇ4mDkyk-{znDr\
~PK4xhv    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CBC128.classQJ@=ckcb|wB*`-**
.
|@q:ԩɤ̤Bv?'A ^8^8z{yPGUo	^3!ErJ,I)Si/)!W7E^lDqc=W{?]t=?6WTQ%w+6L!Dh>2I%)ϻ8kwTLd0`|koK6:\Cˌ/jMLTpZCح2X`)O?Ek]LcPK<	&  )  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CBC256.classQJ@=kbcb{TąZ+($P1nvkTgTQ&8B`x{kt&b$CĂ,TY)4K(;"^7j&؟&'mM%z=i*'撪a3)w+vtQA&"ꇊOm0kd0GyӖwL9,9AV1}X\QW؆iFEIg@eo5*:Z?4::PKOS$  )  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CBC512.classQJ@=x>

*($P1n5Mn*|*X(qT
RPg_^4P%05P>v١I?f,A%sE/onˢ&ؙ$%mMK.T&O%U^gRVPm{u?*>64]MZzLvߵ;rw`cY,}cn3P)Wr#ڍt΀NkU)a!dSVa PK(%  )  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CCM128.classJ@11^RqEEEi.]PII|%W>%Nꅊt39sy}{~P
nn-
c`;MzuCcNu)BhzPrQ@;jh]{s%/-iGF%UvRZun,Zz¸랏z;J[mPZKe:Yڰ19W_}!^+Vh[@t>>zz	,$X|$::DwPKw1  0  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CCM256.classJ@11^Rq:kM(tC&e&X
| JBg?s9
sK`4dOD$SX]܋X*	9eMbʣիÒWrI@'nj_V={%/miWƏ%UN'RZGuiDpVm01m"k41CÎz*՟ROeE6r6氤/78(&mK;35m!O@0jX`eէOb]YaPK<h0  0  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CCM512.classJ@iccbKե"
:XҦ]uӡNM0
},W>%Nꅊt39sy}{~P*Aݼ%0zr'")N$[.ꆬ|2ً%BhX
sq@'jj]V=x"`64ѣhrIU?
]zHpV|Gm01a"g41I[?T?!YdRIeֆ9661/780|mK;;e#O@ak 1gB},=}+ZmL PKp0  0  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CFB128.classR]K0=qsݺ: Щ6B7ue3kG	{/4pGi1QrpNn'/O X&2A\/!q]lxNkwlFmi5ڵj8}k
[̭sjwP<jAWtvva[
іx	wMn"jM nܡ/VW0 @QT"cTF~GLw+ha(!P1"	TbZ~yMVr]&L}cI;᢬(2V{P+=h+Yw1\3Q2&_ʘzPK;J    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CFB256.classRJ@iX;>*.ZAE!QclkjM*|*X(qR*.;ٳ' %,$5ARD!uxNxD:0+]NBZnLu 6zrqyW.N`sےn7`\РlP8?TkuqLpq;t\jXhI
R
i]?8OAdDwشnE
	E0A>q*&Ud1BÔQL>)!*ǅZA 'i"r'b\EZfzjMl5Ols]Û|I*c#X@PKcdH    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CFB512.classR]KA=Y
QkEfU8ں+kIH٥OĨfssVzBaHٮlzAo˺S&F^cwݾ`{
>=+΢`k$<7ݿ3@o28mޮqAnaVPֻ"ĝvaˣ$(H*P	tbX?Q#
?p
5∅0B.	*Td0Bô1>)!ʮ˅X}"+i"r#\EJfFjML5Cs0%oeYbWPKJ)H    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CTR128.classQ]KA=YP9hRQփS6_IHY1{{^^L1Qؑ91/o{l2i>-k5.xrZ\csx\ӫ^6w֯		~UϭӖ*TvM}"8jMdN nK߆0!Aא 0͋{RC'2P-+D0Di:t$1qL+?Ԧ	qa\b)EQ7EUm!2`e҃^C]u1ߵK
uSoPKyr2C  o  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CTR256.classQ]KA=YPdfQփSY6;غ+3kIHY1{{^^L3of9
#`3u6hCz̢
Ԯ՘`n[wLc3}&ӫA!?Usr AeVKef^Pֹ{VɑF5$4hRy1t_b/A=1D0AV)iL0lmiL؞#%XEFѢCԍqQU[HXA`f	b~>]RzPKDB  o  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CTR512.classQ]KA=YP9hVQփS㶎zhVDj9^8{瞗קg yD
A(!~xNpB;ݵ-٢|V\Z{iqA;ͽqή7&%h5E0W?
մ9kqdp^GPĝqYђ118HP$	r^Љ/a
=QDB!Aô4a6eb4^<.LגK!h!Fm$TnUKU30||]PS1q,"PKLB  o  PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB$1.classQJA}mf65D1'f'LIz
(~XTӯ_իn>>_4H*3bfЖ!Cѱw-m#Q{o7b" t%dz\j[iۻA	a9BUO<224PU/3ЎBGS
ҿH0,H2G`3eC%<VhBףFZ^})þcuZA lH"7FJZ'y@rw̌!<7Jxb9Ja0*$LLĤȾ PKFI  P  PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB.classMJANb]WxrHj0API7;af#< ?J,I5]tU7vVG\^^%1lƹˁJȚwg+d8j%/ǇBwT;Y2< \,:q8ΌzK蕭@M`E. ׭ۅ[N۽Ќ!CaPKL	MM9vC3J^7 B4[s_s{zW+JPK|n     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB128.classJ@51icVy<\EEE!71n5
䩠P⦨Agg`>׷ 8QOFʼc!EqBިd%KMqtr9zvqytg=`4^yb	Amvx}@pxRƩq]"[}>}x>|(:oQ\%a,`>0Qs'%I
6PUAl:3mn3jM<Lјbctj`=@+PKF7ε    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB256.classJ@51icVy<\m
ԂǸ]t7BSAMQă|03oO/ :"p֐y'B`_1U3J"2/r,$7=`	4ANyb	A"qjx)vke .~spTI +XLȾ\.HupTcUBۆk+M`V@PKě    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB512.classJ@mbhz$xH=XBbojc.ukvS!婠P⦨Agg`>׷ ]8Q{@Fʼ!EqJުd%KMqtr9z~yu}x=`14ALxb	AmxCpxZƩq}";}>|x>|(oq{A0@Kl}\ؗ$Kƪ 6lV@sV
34gXy]X*PK    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB_128.classJ@5icVy<\l

Ԃ'ۥnMwn*+y*( >)R3309 p~i!E~JީdKLrtr9z~yu}t=A0fɘqi(\SSL&<ׂ-X?^	@Os(1<J{Evϵò /~;m8X*%QŪjh-Rr1`\Ħ3׆
｢z֟F7}԰'PK    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB_256.classJ@5hz$xH=Pk=T{(xS$n5-TP|(qSAgg`>7 mxQs@G*RP3<bk&H*aI-zc.'9b2|tAu!8=eԊ81a(|U
%ߎtVJ	T`
?va_)a,VX졜+p.|WWTos|v8PjPK/    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB_512.classJ@mbZIzpz($P<I.uk	TP|(qSAgg`>7 ]l8AkHҪR cv/xlD0,OPcaW7'nt~ O`NHhfTZ%K׏»6Y.FI#=MRPT)(A\v7pP)PÚUF.J	%1`\ĦЦv
h쿢v۬`_[V=DPK "    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GCM128.classJ@1^RqEEEi"E]y.PII|%W>%Nꅊt399缾= (b eoZ2	v [t}3WELaP\]AN5
Mm??s.^qIfnqA4*tx$Epj])F£eWOH71` Q]aG`*UKNdD&LLLaNѠ^W{Vt<W)
KےCM
45doasxa>e&;PK*1  0  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GCM256.classJ@11Et
*J)e.ukTcyPH/tفcvf^ߞ_ Fqn	N#
c`7mz3OE>Lƽ(<h+Z9(KaN3-m??s/~\ѻ`ü'G⒪?M]_&8܏O#650i g00E8[?TWj?!L2ʜ,-`Aՠ^W{v#t}O)[C
(l`50y	,?}Z-mLc;PKB5m/  0  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GCM512.classJ@mkcc<CKŋ(b
*J)e]4)*`M=P^.̼= (a modz')N ۴}1WLF0o+Z=<(jÜ`{
Z~q\U=8w%/iO%UQC)w-Pnp?|@$m_z;N[oPV,Jd&Y9̙071y2Gze_Yu\,mK7=Ԃ֑/5 ȧc!bObE),#PK$0  0  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC.classQJ@=ckӦTqE
F)E]PS$dR;UG("h:Ü{/seΝ׷ e$CrXAz6`lN?rc9\˫~,	6=	z^o`7y25eqefq>^žDpi\ZS0 @QVQEo&T<)*UCc!B
aZE3*4̫aV$p)XG^ކȝpEV;H(nFɓm8KQ8ӧvU*cH"PK,J    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC128.classR]KA=j}cՐJF[O}8ں+;k['!Џffss.s"6bA\ar,Z9Mۂq]&ίonKGEXlE	:&Z79~$me+
 <~m.Xsw:,>Aj8*j:88HP$	t*jossT<)WVOFcL
`FY
),hHcN0T:2"]s)DFEԎ=$TvH5H5x`q0Y`KPS1I!	PK:NM    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC256.classR]KA=YE[Tj`H~@?*fss.s"	b=Aܨ!qjvpFpm]>?nvd7wRx9	v]KvUkX(D2UO{>Aí{vKL]6\^qnOJ?%"N1MIa\GMmJ|.)hʯUԓa*!kа!e
:5bI S #
t,)2.vl:DRe@`ts]%beq:˗vKb3DPK2K    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC512.classR]KA=YE[TCj`H쬁?'!Џffss.s"6	=A¨avlZ;|-wޠL8-]ޕN˰&؎t-.UnqHˬW:.2ޣ
?mn`=}cr
߳Bvs(OPVPQ$(&(&)(E"E`Q8!MտzRq	 
sXԠc^40U:6B9̎%BFEԎ}$UFH7FXb%LX}n(T`
H}PK`JL    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen.classJ@gIcj?Г!eAF`oՂ5]bBMZcy
( >i/ۅ̷>47!N9g~gO`£<rsYȩ+$'\\G\,G?ei"?傦l3k?\03?CVQWT4(`FCyt,]7pF`ЛRRʺ-6t4)˶)'0Hz쐥)OeKT@$Y ͒LI(D5 -M
t>ְ;PK	oE)    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen128.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZRjnfd`E.J<F[5Y3330030q1p0p}土㙗Z䜓X\Z$FNnEN`Bf000YZ
7BI!;P/'g PKx   Y  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen256.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZRjnfd`E.J<F[53330030q1p0p}土㙗Z䜓X\Z$FNnEN`Bf000YZ7BI!;P/'g PK+vX   Y  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen512.class;o>Ff
0F
OfYb`__\X\_P_Z_\ZRjnfd`E.J<F[53330030q1p0p}土㙗Z䜓X\Z$FNnEN`Bf000YZL7BI!;P/'g PKה\   Y  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings.classVg`Se=F(D*ZRmC-QRҤ){j!{ODI/)Ow=~-gb C5"#IO800PND T&T	5Ʉ)c#O8p"$4PKa:0$4f"&)(#fN%FM8pLY	%G8pBE	.%\FpJU=h98T_GqFh
0
4ęf
|ߴi1#3UDrG;QJQJQkVKWD*"S%	ʋLȡȡg1[̜mEf`;">*IeOM܁}943
O@(hm])!`#:DCnluË=VW4G4wrcz%H4h#fDbQ=j߉kj8}ӰI,k+#Ҭi	Sdە-ش掦d(<sNj'uLm{$NrcuzxgS(at|$ɴEeUV?FC&#\!;	OַD
uͱj]̘ې`K0K0kzEU``dP{1#1]Sߨ!SOLc'yeK&LS2!0Ո8YoƋ=IⲊ}z?7#TǢp}IK0TWx@$Z鬒zs,dpzRaEmp,8=Ƀ'j::%!7_S42+(cۧO
`W{Frro/As.ث(bk=x҃<xڃg<<!o%N!һOW .,(WZ9i2Se71twaF5xы؋nb[nc;b{cbx92<FȋO0<p-^:k٘7dxmw00|0|_0|0|]6R~>t7,Ohԉׇw|X5oCr.rg"=4-S<uO0O00S˖Ls΁yw<ӊm.tІk7;v.eQJiIA);<CeԼhgPY.eqI<e4&!yAֻfY+kQo}U}Uղu&뻫IzgU_'빪lU_%9>R׀`9m4[;PMoUޡ_<&oDѶ ~-2clsxT*!ͽDLcDCl_6վyc<6=7oJŲ4#zo0}Q-wK
._RK.RK5.sK.׹եJ\RKM׷Z'
WֆF#ą(<PKH	rZ    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$OFB128.classRJ@=ckӦZo]*EEE!U ]ɴIBw?'Q|P*spa}~y|P"AL]rkkk63ᔉv3ѪVxd7o nvO/.
&X'hxיYg6wg[\Ph@?T+uCpq+j>hq

I)]?ʽЈ﨑in
10B6Q*U1BÄaLʹ(ICrQrL_2."w,9YQ$e,vVIW`:d]>/Q1!, 
PKAM    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$OFB256.classRkK0=qsݲ7~T9AESa cٵ#,?
QbZc&{ܐs_ D3qāpEpHZݶ-?p8exlU\x]Q4o$nMgW\$	6	^EOooU9kJ^Td~G+VUNV fZ>h
q
4
I
)8Ј﨑i[?p{
5:ba4LciS蘤2@/.E}1y%,cXEԎE8*ʀ.h]t9CLLGû|A!UqCXDPK* K    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$OFB512.classRJ@mkӦZw}HU\ZBBA1n55M&Y>,~RQw9̞e<<>(a 	z%۵CuOvY~pDxhj\pp<vW[\lbsnܧW;ITl4=KOool0N[»-.i6y lъ`UzP$85Ly!I4
O~hDwȴ~B8b!aL	0bSr.\/헰p^V)+k=4y2\]D8t=$2f1E_PKrL    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap.classJ@ƿ5icVyzH,Ԣ҃CZCݒnn*WꩠPn/Ag?̏a
@{^2ڹT3ts=LJ̈]eI"/onN{Wh"҉ ^YHsSMTj)yPmtVʌ_t ?zZ_vC
gakNul^@)ICv!g̺Җh|ۋ!EPKX)    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap128.classOK0Ɵغl:<	;t^uLa:X03$Л_@1My@{^ЅڙTĹ|xSSfq]e΄H%=;?ДS.X'9j6'jG);Opt"G)|u%hGWB~gÚ0@6ecpI#]8;^o-÷/y}4~YYw6h`/PKWD    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap256.classOK0Ɵغl:<	;t^ud7ufaftiI:@a`JL"4@G^ЅڥTĹ|xSSfq]e΄H%G7?ДS.XW9j6'jy`z^ʌ]F8:ŋ>6EvH!t3
aI ;سL]A8TJ$Kn	b֖͎<@E@sj`cPK-m    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap512.classOK0ƟujuNyv릇VocҒtB?%&cx
Ϗ;	;&sd9$s=eB񊧦*ʜ	5Jvys{wvuZ\N~@3θ`ΟDhf\Zo`cE)3vDOBSu
JЉ!Ѓ80@[6mpI#]C8;^om/uC%ZK켬V4PKD    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/DSTU7624.classRAEEHE@cƘD},tD.TO9'꠮uҁ3S|9FYo|:B)*<ȧR^ٔMb0Ǩ_)eRDWg七~T@.=ꕼw|B[!NtEyHAIލ`omvvvZ{8j1ŰcNY;9$\[Foˤ60{
÷qwX<lsl<whyUkUMU5mV#\P~p0q|0u|0>|+3iMMH }~
Z5jϫi}^Ms҂%2AH\B X)hllllllll4	
-VA!aQAXpLր%p#[V6.nJ7ЂO&NLJFIGFfDB&A邯tV׻iuT)]VVQV镾v%JzUp6Kn+-Zp'}ٿS	T4)}2rX>IhB;p5.՚7`m^UTB4E4>=A.zf)z=Mg (-P Ohez>g,=Gs4N	Mz:Jҋ8}I$}C/ѷ2}G*@я:Do&PK)    PK  C:U            F   org/bouncycastle/jcajce/provider/symmetric/GOST28147$AlgParamGen.classS[OA-n.(x
XWŻR(XQӸn;mO#˓,*Q7ٙs7gΜ 8DzIh*=K:ROJh_v\w\G$\!7.^|~h!"XR<>
) pm*5)S"MA)Ȱ[IªbeJI:!>4.7+ܵ¢%j\C?3uW:Uy"tґMsb{$<nNVLmSn5+e)qoOk5-Ȋ0-Y9n%7K3vskBP[Ă,a|ᔅo*w,sS*KXzaKby -~OAMlJc#Df#u=pIדɠ^yeg2
4hհ_
4pDQ
4'?5}Ϧ+\=v\ٮ?XΦ~j'S
S]J9jsb>YqtAPf`7L%S`@7@j+:qS n8SJ::Rёmp:઎-M4UƸEZt@MugIrAgOW=
nEk)EHz3˘tǗ0fo10.]D8DQړȽLr-< Kt|wtw?H0:ғl(1vz![!_gbr	J{H'+͓IǖKtM``L˸1HbR_;]o04*?#2g? PKyj:    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/GOST28147$AlgParams.classVkWG~B,(jV\Q\ i --.!.nv{_~՞<Z733Ｗyy'?Ї_[Z!ᔄ%gh'BB%e2a3i`;w89Z{ɕl/p.X1]ebuuZW
c4\ӄanӞnK+\[ڒɅz"
zM@aTVAVx1vsоLi*]ޘyN©<ö8yi!y&F4K$w]@SCfӺ=72Z,fQSF~qv=#"=؋ͰMFVTVck:3cfSs)ԉMI4yA3Na-ЦRP̪aÐw\%où]tVol|\~iEyۣkO8v
lE|Ii)KWtLjիsS>?b(-'^}wW
XrlNyX6+{UƢ^};VtmE*Y
Qu+ERv}𛘝"7F2<r͉v7=:XBLq	'$pZB	g%IeHMJl#d`<19H)ٚuf[B95Bf/"LaD{v+Q"F}i{Zfjt?Қl>d݃KuH1UA'"
	8*]mG	hè񑘍+xYVA|`?>Up"bZg2.bAq	_5_
d0f|.c,
	EL$+aN
7xKM}/)Y,&9OoMjY(MbCUgTG`wiuF{ߑG!]uVB up?JLtZ58caxdT
dp*	r
o~+QV&
UZG)cѶz(j]4I>Cw'F
1\!t)!C'X
<IE
Ch=Hgt'4"u.ID\K%q4dE>']E'EpdNuTJ97pq>ZGe4#"[ #5j;h5G~&RZW!~4PKt!  
  PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/GOST28147$BaseAlgParams.classVWV3舨XqTap"HeTԖL!vS|~Ş:rN_s7$89~ ~T~Gy8¡ybCE;;}]ti)T˓C)M*b&Ҋ
;d*JHCC.I%Jg,LqL	SL|Q7ruJ56B,*iP|ЏMiM(͡.I-UO%UstNP"6x>e9wqÜl&,c,+FH鴢'9lP+K.+N)*W!>2ɣR8t.3f8Tz;/x)jrװ}v6gӶ1d]N	7ZԵN%	$$uPjD=3UCPp5IOE5ɲz@oW4%%i]fjjR zPu@aK^-6jIH,EF-hVB7O$,\L٪4<=Eak,i=nIi;aLEǌ)]%֔dQ֚AgdINWYGJ+ɥM#ku-k&:C++<(IVn	YRizf'ɽycc,dLcϾhzJyrF`%Tnwr#L^}s{qqᱛM<yyDxc?<x!<8ʡoC5M}؛Vr^Cm)>{kهT-$(ck51ؘ!{G}{Zpp?^mNkUfw!V敬",@l]^B}Ϊ
s'K\"@1(#Q)1"v0bzqFY8#b"pVDΉ؂]a"㢈$b+g @^ddL@'&]s	9=eq$4)#*#:##WϜ
̋qF,VӠnUKo}s&q]PcU+tJck0\Ύp:m%>G^pn!HHzٗ#A.O\oG֝$yL	O8ۦp$}/sd	FFne^Z&]-WSj6|^%tr	B}x'Z
#UP^+Σ%/Oji)6[hpĪP~GgGW}]A>6^;AHgܠx/w
/xfW_$%3	
?"	2te_=:\<_ΖV
+s{amE~G`ÑdܸB_~OieAb}v)D77 |x@A*ε&!/6-"sex>zbQl-GsP7jy;G<5rά/">s:BEZPKa  @
  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/GOST28147$CBC.class]K0쫶VSo^l""2PY]2Nj"8Ir6	fr&Hm!UzHTE&9e:$r9z}{wiOeX
Ċ=b5A}ĢtճpMM:DA?A^i"bD/AAAŁ`ѸYVvu;kQ d=
.<lzXA)$RrƑ1ܠfA,k:vsgة^P{zv"OPKKn    PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/GOST28147$CryptoProWrap.classPMK@}ԮBE-((=4RCݒTTPMAg
y{~CZ'Jbp`DܛL]#HO&'z֦idPMe:$rk՘plFUR]^u8`ȼP*iGc^J=b4*XGfh&f_f/>ךlΑBϮlԸmVX{mz|

PKpu    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/GOST28147$ECB.classJ1ƿiūa%(*v)"5
5u,I*cy*T|(1
A3L$oW 1QoL>JoGiB{Pu`ܔLT²ۓq|:/Čg3.Xal9g$	.YY?xEFѦQtۛ18D0@ֱIJBx0iY+,PMC|4j>£tZbӷ59@׻PK"P     PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/GOST28147$GCFB.classQ]K0=:CHT&*-:`fg׎|*8t
SM9˹o/ *"HA SLP}c^2jq]G=pAy.Y\9%)U?*T&8D\09vy$<g\?OGL[oMSd(f(b"G`S+DʿP'gP:R 	XРaIC$ǲ&ARroکn"`{o9Nc5ZE/ݦBM!PK7";  c  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/GOST28147$GostWrap.classJ1tjƭE&
jRRqPSɐ<C"t!.w.|}a 3;ffE%dV7LұAv|oyyd?!YiͳI\5JoX 8?3
v\ORDMA{5RJ{hԲ"M`QrJki;'H8n.p7Ї9x-_PKԼ    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/GOST28147$KeyGen.classJ@4ms1Z\BE]bErLf$-\| J
7,?9p?^ pbB;3r{\59ޟ_v{}\!TС?qy˳dp4bϹIXT.letoUCI0hOb4dGy-;3e

ٵ`nƞUC18RaȒ'M
NYCqJ ECjoᨈk /b WX99RKM;8	PKTG+    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/GOST28147$Mac.class;o>aFf
0F6̼; 71A3(]?)4/29$'U?$_?71X?8CmVrbVr~AQ~YfJj~qennjIQf2B'#9T6$3G)8AA/j5xA/7#s~J*#g^^jsNbqqj1"H	L
y@n6B	I. 	T	 PK?&     PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings.classUksF=KZBրCHд	8:&q
y	
З+EE
3MT:L~@TW˖-´_^9{c[ hr\q799nqÑ1qccCc>rhUf?r%9Uyj-Zia$W.ӚɕBR8$s0c+eڦat%rnSejmaRx%	j38&DP2[/o>gJݟ0EÜS@B3mB Eȭj]O+{jL/fpy 7H4Vw+/ICk4|h_kݠ8cƑ+(!Cx[(ØA}N-35F½xjN899[-XS{fj4ݝ]5mcȴex踆ZwlXڞ%Tm/z:j~Wi3Mj1᦮5u&aj)][a=>>tM]s^XESK=䙖8a9a$<XW*&@orFz[
%LJ1?(:]?+wʃ;>s&YL+BN/LCl(f79|"6e<͗ؖo͠]<wT^d=߼!;o>%AoL􆃗 yg0MJO᪟yCS*d
uVFS߀f9ZU.Wޠv2L??Y2yrǋʇD|O=1ИLRAo$%.&Avdi0sVSZCiBiD%A Ǖˁ^"ǧO7d+'w:|@6KkW`"/PKIs  L  PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/GOST28147.classUSJ=MKQh"{yK)I'	TQg ~(ǻ)B#igٳ{{o?0OEJE*8 6<L:e6,Nm
bzA'X53CfJUJE_Ϗ.+HTuW(Hr7466`ȪEǳ[Fvݍ,7*Y3i3sMNF˼)W
*}`Zu*L}=󼩠?tkFMˮ{
ێ[Vu07=;A~Mv2mm9WoKݝ]|n׸kK &_5F;jռ5Ỗ˕j@܋6oԃ]vR/D
Ph$h%Wh9ɵwRKE$6Wxmp4.21\bpaa*5)8T9Kݛ/_yid^`j?ޥީPiv=7-b~G:zΙΩ"9	I8.ᄄ`)hߘP#	%		=N$1r0Qw,qݩwONٶp<AۇV>D
J ARVG>ۦg#hƠAbՏxPq["һ`_y|gx>	/c[IZiS6UIT5oSҽj)PPPP(N(jz)NKeR	+Mzv"8Ko<I$sib.qq
PKV0N  	  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$CBC.classJ168^nEnb/`QA P
u#cjt$Sav3$?^ Kw]R[">թzH}4	Y|2p BMUo5G&A}5)n{K̐CXFO%Uhc)K	E?"

rsIjwwGo;ծH*Y0nB
6
6!^+`j:LwtJm7ٛbs|Sl|!^m,#PK't+  /  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$CTR.class]KAQsr̾"Bb#
!JmmlݕBB?JP"5üsy8s?^ Cɪp\qCpʮ2mn09Q:.yfG.	JF\(
G,#F%UD)Ǭ@Ϣͥ
}K&T;r<m,"A1G)\jfJ4/#M1H,iа!e
zd-b afuҴ-Q"jƺ<݃:V!/_RM, 'PKUD  s  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$ECB.classPMK@}֦Q^
R/k@($JRaw+gTPM7oW }T>RS∠ޫd9KM9e:Ϭ\N䆞_]]3IKfL'1ᚚ|>V} ԃr߳?V4JRc=paC݃Gsh`:6	joRr1`ERⶋPuq
gߎCYM PKcw@     PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$GCFB.class[KAYv@%A`/2zZHYJĠf9s~9o/ "k:Av Q5u=OٝweÙ%cz7uǳwAiZ4w۶}V.~l$(L^3b$PŌe:`:ٱ8	nrAa[I	~|?>Q<Eb"IA)f)Rv1d%PəTnjH$d(XRƢ5,nn5pL>v"rF!_yPi!<Fk!VY<X"7*`q> PKﷃI  v  PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$GCFB8.class[KA4ji#tl0إD(mmmݕ5ػRW	~T4+B΁?^ Mob'e5w{{`鞮9d{}זA8k)?Fq,7:~yu]*wţ葠0٭@I=W&"Uuu&dc.7ɠ{uE\Ôa߲SD(1
J'.fV
(H dJH`Q	I,I2AD!˒jX㪩9sp醸?D9DR,c5c%ų1%T{)l"	PK<wR    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$KeyGen.classJ@4mj?Е"-ZA4,\ɘ5%M$-\| J47,Ν{
M;-wK;;A3,|'vXy:"G7<s<ut.;悆l#:t!s_Q6UU*J*=s0eKF=OPI~HGTT65hhбܽ9ncy,y("K$
'&Iݕ2"I	勨 Ҭ+5'UUQPK"05    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mac.classPJ@=WLiEt3!

"B8کy1
,W~%N,{90@;UHuz1n$),eJ|NL$<+zy{w;EQ$h)Oq̛2NcTA)ODt)js]сgW.SdMQa9&V-XXuf0=BA]ha
062l~ӷ5Z*/PKK)  	  PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings.classTkSP=@nK	 /_hHEX*&M:i?KQg/-Ì~sg&?~}`}F3<`ex!	CLČV!tD:ag	bt8tPl -6UH#)OYVSB<?7?3;5;= O5ˇ{=ʭ
^AM]E%LgmMcu5|n4tAxnf} I+H5rٰºc0U a}kEEJEgsMVp$8U[?ѵgʑRvcBZ	EW,c	H\^9)+Mk*ML3\KQLK9q95%DE("E̊ .B[oNrߊc曛=~TvE8I;@s	X
#, "|օ%h
V6X%Dg
1J,/F"=
gxB"Ym?'7,;C2ؐCdN6C%l<<8'ɓmÓ)ȑaVpp\@) ,b32
d#	b?PK    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$OFB.class]KAQsr4 Bb#
!&uuWfRW	~T4+A93yx}P.A4kīr&'ƽ7tmIa-F3akg?	Ҽhvˤqٸ)ŻQ|HPGv(t2lg3c 'f~I	E&9>cd?jQ,P)("E oΧKH*\SG$P24jHbEZijzu9Lb).vd˃*ˏIl9TSw
K"	PKvF  t  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015.classJAƿtԬ˲n63r)Av]n3f`ᜏ
c+CfXW}m?
~G?	I9SVOkuL%=nɱW))6tU9ԚET~+.jaŠv XU<qSYQF&}84G4Gc#11ϱs,r,e`{4ͺUIz{R4Դ6BN1ڱ@t' qɃCJ8q8C\'&$qx@"Dj;#.1PK@K    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Grain128$Base.classJ1ƿt]ZM`ϡ	1
5e7YTTP|(1[E3}30?f1	^L>UZ3}c̵wLغI=UZ:veeOp	>U<e)U%ڻ.,<:`
ve{i)"bM0]wdgh4"Kb 8+$X6ZڼI]$a	 
<.fl<~NnM'XE;PK
     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/Grain128$KeyGen.classJAEo<2>&҅"ɦ#"Ef'\fa3tw\ ?JAZW gQ'uT^Cͤ:>9':\3csAJ[DB߈j(9,ゖXȩTZrz1๕90#_:-͙J魣T~wl"6A=) )Lrf0kh9*K;m 
qMb< [bgӼ4ttPK.C    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings.classSmOP~.{Ie"ZcBL4b.D4D/ܥk#R5`H/9=o9''QQTUa((3=z%zM2{2sb}s,fe<L1O/?0v?ez&;tD1hn~~7Ψ}mJ-~x0,-X^WQ;GQ7t{.O@8-\tDR3p#&~Ñagjzkqx餓Yk:iNM2p6nWM
L+`<wE5yry>ղX'+OZȍK"'К+c@j`+nfpJa	u2xc,nc!߈<"c?g*Yw(HˑNk$#YX?g`z
wG&!YXxT0Aɡjv\p9F@3}EwP'PKy    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/Grain128.classN0ƿ#iݖ -013 U`P@
!QDvbBbx(/;}>[}~ 1!9;&tλ0~ZlkUVzQxXunMnYWܸ%ଞrBNLdM9{´
hUTHRBWAe
!-K)ٽfo۽u}E|$ހ_?<A@]ѡ(
PK     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Grainv1$AlgParams.classJ@EkҦ(h; E$BP܏'$323
JpQ$fo17;p!!͟	T]FwKUv,T.xҏH.ً^lqJ`oFr%ޝ.:)nxe	;k'K֞FתNa!0$9+׮荰}BpWJ	,9ӡ{:9ҶY~툽PK
	9=    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Grainv1$Base.classJ1tצ͛-HPHPPSv%IX

>%f :13/o NGc_;efE-d֕7Lұ[˕^߬F?3!YeBMe.K?(5waܫ5ؽ(b
6߿`f
,E-87PwN: 	&HJw´(t@w
DYb۹4
5A=$PK     PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Grainv1$KeyGen.classJ1ƿ?iUo^m/A"{ǘ56$>C)f3;KP'3бJ$)_jQ	n]&0UrY;Y\1B䥚KlXHg`?6k	n`Nelĭ}3EIA)Z4%g	{N?0B԰ mOP$';[+):޶^~:Aw@4
^^_;^PK/    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings.classRmOP~.{iW*HQP:c
|b"E/t[&#jGO1#!=<9_m
MŌYf
;[7#LaGA)}0j^/աLyf?[BF{AgaN<w*
;[jA3H~jaas2-bm|VQ_<mwdҵv`wmž6ojɰQ5haՆ/Caۤg[*TxC#oevȪq8^M
n)XR`
=Y̽c*ɬ'=IdIZ0cuIG:nqyjXK
aNJZ
c|-]=?EfdȦ$o4#Y;g:v飒Æ1E,Sc`zdAGB3ֿ|F9It
^ PKwql  
  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/Grainv1.classOK0q]jͿw^Dt!"zeiIB?'%S^m^ȓ:'XS]3SYKIYUp^D̊UʴHL+j3N&uS'K7Y$=eVz0jaf-UAp]sb#6CoϠ;kd{Mj*C,CQ"eRR7>ݳW_~~ $
H;M>qxPKtH     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/HC128$AlgParams.classJ0EvS~7Qq1R.}섚&d
W\~Y{
p!!LK"oӓ~w#
ģ~pFpMB˜[W	V{5sa]ֵu1u몸זppbYim{ᄱCdzW򆳊}"A6Ez.I0iŭhZ;~|}`BY+rPKW    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/HC128$Base.classJ@mbX޼	zX"b,x
R$X=| Jܴgz p}V4\δ.Lr%z>;=-?S!YeW5ٺ(3J@u[n5S9kGg$/2UHCPm~OC(AI0+Ǿ$Crn8DMM NiN.3qy}7PKWg     PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/HC128$KeyGen.classOK0Ɵu]S.Q&"A	15kJ
z+y(Pbv
<?\ఉ:A4e!
w_N鳚\P*EQ݉Bhf&8c8˸Vs9j:VKN_nJn@ά_G`elhΊ>:HwjZv ;!"5Ѱp$gbq-qxm:2 IO-NCw PKANQ
    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/HC128$Mappings.classRmOP~.{iWHT:ch@͢Ztv$Yj2& ts${^-lːed(2.ʘqI"Ry+bȕvy$+}!|^~ -)CTn|WXKsc1j#ڠyg(y-|`G	 GohLsc©]q=[ tà[]G'ś0apR1a$~FcX?<hеt'ZRzMfcNz)#r6pE$\#&0rW-9}'ɬ9	+5U㎊pWe+7PV=iD!k6ݏ!OG,0,%ʐMInk4#[=':R郊'0>Æ6ExAEˏ3cxL  MaCPI*PKZ    PK  C:U            6   org/bouncycastle/jcajce/provider/symmetric/HC128.classJ08fUgŅ3(^APѕL&6-Ic\ >xFpȗC|~ 86Cgo!0ԗLNȥM8Ӫf8,]*UεȔ̔+fMQ%nἭ{O3'{hp|Uel9:G#`U;dB|gvI.t'̓1,d%R&:u=xC;DҀF\&nW[PK     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/HC256$AlgParams.classJ0EvS~7YR.}섚&d
W\~Y{
p!!LK"oӓ~w#
ģ~pFpMB˜[W	V{5sa]ֵu1u몸זppbYim{ᄱCdzW򆳊}"A6Ez.I0iŭhZ;~|}`BY+rPKUc    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/HC256$Base.classJ1t]͓"zQ	1
5e7$婠Pb ?3noBмRZiafXhQ	n]&0U
&Lii]z>]
gsB/j*
UKgXMn
Sg$SU>KCP[M~OC$AI0-$cI3n8FMuvtw@D}skkm}PKxy     PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/HC256$KeyGen.classOK0Ɵu]S.z&<,Ԕ.)i64PČ xqyx~y|}㸉:Aӝ4n{H..zڤE8+m.(7Ua5Md*̣Ym32.haBNe5	k$E%	 VtJ_G`glhTJhIvV"^DOA4RΙ,Efqqxm:2 ILy%ⷍi#?PKb<=    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/HC256$Mappings.classRkO`~^viWHT:c"rb"E_ҥk#R5[7#!=o? lbG, CqYƌ+Ү4x[C# ^3d{nyOX tVZ"^[鶏E8|jn"q0ro=?dnۣ^m]&!3M~
az<"gwq^l2ԃ1ou-Ş0oZhK)`a'iaۢC2ҥkI5Kik;gq0\5	KXp?Ü^>Ͻ_PVΓ$zN$WT⮊KV1{*n&B}W"VBY2D&⡂;Чqt?O?AC)H#+C6M$IYҌtn~JiFS+Z;?j)=*Z~<fǃ`uh(hRk_P".B6
PKE8    PK  C:U            6   org/bouncycastle/jcajce/provider/symmetric/HC256.classJ0F8fUg݋uGEAPѕL&6-Ic\ >xGp\%97_ f/5%C?S)riS8δKqbUs-2%3Eʩh'|SvFhtpVٽ'dFk5ik^7726dUzG98G/""2D~$Y]K5]Iz`1-FINt{A,4 -&oPKt(     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/IDEA$AlgParamGen.classS]OA=C[U("-Z
(*~@M
.nwiC(1ho"ƻ+_Hd{νgw x@KC,3Мym}sCx~n~!䧂JK%ޖsKB	Y(+Ɨ*nl	ɕ{M/s=\=f=KPHx'9 PDc(Dj' +%D5^=ۜ_D9paw)$`fsTl<&)*wb#^mTsݴd|3>j]_Z=r5%K|W<f@b:U@I.bY|fYU(JTM:T:2tH2]ó+qDcwȨY5thԐХጆn
4h8л^O1-@$x6m4`p~HwhP<磟QTy(EIJzh\5ЌX

B7cNc@+FZƨ^q	7uᖎ/qq:nV77YHZ{94Fޣ)uyn_׮iJ~1P'9:2ML q:p7cd-&61#F8F1%/Nv#-ɟг_3&CoxIG#[Xă
{-\Z;c廈QS)cp/л
C1̅Ȧq3hPK"    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/IDEA$AlgParams.classT[WWg2"Vm67hj@b	bp&3̐bgXt}>I<H޳?~6vTbP%C*R

n2R-Tzg/3/lf)1WXa4-%sE <aì6BEXIO|`{b/IyE'ͭd	LRrkV@l=ey<w_֊]"k {dqyf%mG,`ѱ=ǠS&5pl"LM[0}Hp	'af¦=vaxWavj&̖S4խ2C:L: jOs
fRk:U|q	yaX^A{Zؐ-+c,%apߙ1ʶOTt@`۷%V=~L]1?'bt	Z> K<Y]AKJ(vP𡂏+PpK'
>eMau>a$^<(+c<ьuˋpqw>,d`vIxxDX!M:vyבС#
4WѯcT˘:ᶎ1{:>qkHc^CsXԐYi0JKfAG񀞡ٻ@){H9t

&-	4ȁJi*O)"eNKhT.?Lc0,!,&,Ї1
/1rL`'x|ì̗oRWba
apmK}Rh7	7ĳ	wBݖL'X=<En;q߽m|9",⻑1	dA=ʟX>jR:#	A2]di@Be#pw#E:ťG9)=CW~-3yu>Ez;wofkc=mt,SEmySB?PK-    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/IDEA$CBC.classPJ@=ט>n."̢]\ӡN̤ͣB>UG ;ν9羾?>\ᜠzc΍Le~klG:XLBq0cM$)
E(>ќPٛ
t$"Wm[*.P-s3?bmRECA)v\iӦk7v `6lA+0G$p4*#F1֨d}M+ؓI'_AxhPKY    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/IDEA$CFB8Mac.classKK1OJg:>kf#((3V(VrLCMTj?%fAfNn;9#AJ2&$jƞEs,<&♌fͨ	upp;Y9\T%r*yLI^81U*E&CZ'EEѦPP׽OQA4@JY+eF6,lpE@3c0Zhgr!ڦ%I;o?Qۜ=PKRA!    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/IDEA$ECB.classO=KA}lrߍ`qIvJ;X,7^vݍp?*G{ 71K0tь ,efe-K֕7Birbz-gKY,%ʚ5'+\ZJ9-Q7[^"-ϙr8v8!I{Wj4k 0^]323Sfe96BwZ<
xFaFPKwj     PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/IDEA$KeyGen.classMK@ߵiGF`oB]bB	m!7?%Nwv}fv9;h24C{^24kanb/(m4Uas&ų2SZasS)RxaU2WbI$_lI 6Dk8:4+3c@G
f>Ȯ{||H3DY\8El`t'Qu݀`c^>qFc>$(wI~PK    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/IDEA$Mac.classPMK@}ۯ?MA"CABv[lM,O 	ɡ3fyoO 8"hO֖gHycA.\Qd*ߏFuN0l"'Q+Ez:'s6fZɩI"r-ybEYj"1
VqFM7zI3N-
6+bۃ%DjjT(fS[ުV&K{%=}
PK    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings.classUrDhڈ	-iNBcH(؊ӘL]z6ƑQdttptSN:gݕ{ as|qMO8>p|q4]q#1119}_r,r|!)ڍpC0{Sa8c1VJ
a+eĠdd'΄ZZ*?j+"db6zBKm9at)vt?W-m\z/]/0V6sgD̄EiG( QM/A&Ǩ
}
`28
m9=H󉄓#QjIa,r6(Q$O`5:H+ӘzۣY̑,mM+gjtO|+$ITQ%nKpYx^~vc۪KRfٵߤ1oB
[xt'Vjk9ҁe׃k
}uSx-u9y}L}NS~.ڵK})n%IsHnĎ-q;^gٵL=zz6IZ	=-[?c=oER`(XVPV`UA.2]bm3~1;59Cl?sJ93 _V|[H]mBS
m%T|^xxOS,5:^F/ưMiU#w
@҅ݻT+ 'd-h aj0#8Go5W#s_haZ{x2x.pZ0}{c=$`$^d|d'h"8<`A%TKw%6H{Oz!qd{gx)<A ];ΟslMӸkPK3  v  PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/IDEA$PBEWithSHAAndIDEA.classPMK@}ۯ4i֪W<EKoĀP1nvk	`Cx3ވv#o	t.YBǜ2UdyJ5n	v42T8eoȦ\-3iwqEu$<W{*.Eו_=zsS/|coeU5A
uoD	d8t`堉A7"hʏC&ho4bexiSj2_/Q/p@{AĆSؿPKP!    PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/IDEA$PBEWithSHAAndIDEAKeyGen.classOMK@}kӦUSAx<,o1m
m7kݐnd_$x-&:of}0_ NѬ!(cʙTҜ/<EW>SqxO^@@3=lxYnRA.2l&.U5G6~쯒E1 XindJS$:7.\]T\(aFS4*5D\utn'&2Q
}m
YG
'bA:HY`p-.aⶽP┝&^wlrw,YPK#    PK  C:U            5   org/bouncycastle/jcajce/provider/symmetric/IDEA.classYK@e[ת/A(Bk-"}CLhӒBO xM]A_ɜ9slmz4JղVz&t%Bi
P=J}k=]^S*.,]*5Q^%=ԕQYeȩM&ѪHaja+`7T
NPթ7YtL۠<ՠZ|mz7'j7P?rpG#Hqrqs92)%0y䷮qaݐmKGk
ו=w3'%#Cd
2ٸۂ$0FE1N\"NC,q8Iib8C\#׉s</PKA)l    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/Noekeon$AlgParamGen.classTmOA~HQR/4Ԑ庞]m/&Zho2ƹEH><3~+)<-!]fhMf6븎cx%jI%ɇ%ۓzS~%/%d"kO&=!<7Yٷ$m
ɕmвe豤J󮯸k	2	v\tk5RlsΒRVU%2C	Qwm%*߻KUW9eq(4A4G3Ø[%myrmsӴd<ӧڡ"3bSeJP~ӓU]nq_ľk.!k%%a;\2L6y[|fEz5(˔M:ypWs'w" @U9%3}\ƽfm2,:4$4tjpNy
=.03]mP 
Mݩ`"F5_l7ѓf>qyvTǱ]6Ћ+Z	`1p5PSN#mcǤq7uI\1	0M4i7.uA}?ŭ^yJbS<i͒AlMo)\CKh>GI}+	qHGct/X(|AOGLXDKƷ12{
}6V5p{wvQ>dpjDo,EL #WШff$qPK    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Noekeon$AlgParams.classJ@iҦj<^ěE! "(t]M}+=	| Jv;/;?_ 1"$#a0WZ՗ѭ6(cֹ`ktN836Ofu&]](2Yd,^iԒpbDDo\r-UJ66V&k. BaH8n
HQJ]$a,Z]9v8FljAw:9F$Og#rPKtѵ    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Noekeon$ECB$1.classQMK1}Wں֏P""( u<nӰvݴ?%AAuB73M[҅T\ڰt!؈YȒPEnSFyD0'F3"Dn	z.$8ŏys&ɁHY6I%.joO<"VNLX7|P_"ER)*UVhq!R*<@ =I3J)Ie">VdwesسmѦC@pg,vue@'ajko35#}'PK\2l8  =  PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Noekeon$ECB.classMJANb]WxrHH@QEPNd3f6B>S@VCEWu}||8	KmtyMN{vnB,XU>V,gξ;)N+`y뇺U	Ft^B細j+;@[@n{z\[.
Њ1cla	ɝ1"=
Q~Ph
H??-		
PKV|     PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Noekeon$GMAC.classQJ1Z*JP`)(ݔVcyZPb*&d/o ΰC</U+Bu0#ؗ\DA*kٗ:,~	Û-Oert:6VעN{	~Vq3
GJ|zWiXisQ(f(bDPee"mn6՚O('ٔ:g5r ),2CkVj۵m=cA
{bgn['z8F=ck'XO`#A[mٽ9QPK~8  p  PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Noekeon$KeyGen.classMK@ߵiG" E(x\!nLwf[Ϳ䩠G[*"x33;3Pgu{T^2xH+6)sT(mN<1Ua5eH憪kRdՆ9KD/^)^VY#|sdjvne·7{hxhz<q&BQ*7	QJ	b)1#q.ʒJ5cm̥vt뀨a/Dmwvz PK`f
    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings.classTRP洄[QNB*j+Zj(qgH%NpXLu| q-2ٳg|g WC#
Qk9&8&9nHfC	(-,`Zb
}N" Dl0/<uӰw+SvZB¡hDnaӫt&hq=Ejjf-tMhziLvZ~XVmQ8v(7KhډUPVɍY\ǰ
ǆCv
}le]+PuPjѱOrQk%do\cXgx|D#s]⃰Ab
PězI] z=a:w,$$ܗ@BX}~\1zL7s"}	Ƽ՜wfx]<;i}$ՍX11SX1[Xq+2ncU "x< qO<
BZ?~ I;O-g,-h!xc7(w	 i>҉4Fdt͞"	R
?zQ1?c
D!vv}-lD5dg[xQkjsci eg_ޘKA:@PKĭ    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Noekeon$Poly1305.classJ@-Mz۩Php!ӡN̄Tc
X|(qR.$p|}|6A}LиR7'e'JKФLgI(!ӔࠌCf?n!4M&cjFt7F^"99;h8p4	_v#FH^+-GmgTȲ+<zXA-P}VNJ(4"=nluZGx	^VU>PPK4i0    PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/Noekeon$Poly1305KeyGen.classPJA6˘D=z<$O<DDBi֍0	gy
(~8#	!P3TUwSl&!{0$Tui~aI$Xkc\upG9g12zW-'\1H=d<d=xrV;)"T*hv}K;=Ytk6z%6(P!}&:1ۑ-vQt!avqPݯQ)?MPK(/l    PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/Noekeon.classN0I[J˾*DUPP'njE	Y$TcqBPImɟ?|{p=#CjyVT#Fo0Π}'3l#<S{҈N:gĆ#Gj!lCj[]ha2
,C=Eul@MI8.%L V*Nƃlh[׳<3L>z,P8TG1Q)`
,Vc=V4,]P<CI)lQAF(Mʃ9zσ-ZP0KP1G SbH&.wqPK<4DH  Z  PK  C:U            F   org/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings.classRn@=ۤR;ZHmhi	^#ǎlR>RG!ƉJ^ΌggϏ_x"BS0Wlj0f^%/6qZGo
miG290j+gv`0]*ۏ$Tt[}8fX܃;2b~`l'[tl{QxQ
Sz$}<t8m~F36,/xBߐW]&X,(Tpl.Ua*޷^5kt$ͬܐ9=VcTlP0kXJA(hXCұPԱy1C:tMQhtHDW'c3ld'F§H-_=®9
+.	CLF09T]]5437ē؞dh=h PK҉a    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$PBKDF.classT[sTNDĤB:m ;Fov.\Iۉ|pʒP <L33<sa8N=ٳ9{o=z
j*NxIŨTUdҙR$L]JZ}(]-FۖcwN]n[Ԓh=a2kppfc#ErØp##|0}2ǆ9[}ѺKZStFnWY}]AS1ven>!p~rN(ٶs;כ
Mr[Nд#O ̦o-#q'F#̈́?4Ln^5\یT
*MT׍m2yb?ICktrq0DpcSZ#h5[qwgT?⛡e^I%KKbʤD)VHDLYKyb8C=Q@
n
XQh"u
(8I\P0
oҨ3S"oS:Nzg"]fE(Z}(Q__&yQ`B偓30Rʢҙ-buMi)^	A1aӸ.!7xGG7unK]
xOCy)x_e
Rܓ(ŜK(iɈXp
Wቢ[ZAtKMj&R
S!7pooW
#0@N'Xaxw).A3`|fXmcWb%cRtjCin6cs <w2l%9=[YJ/\o=\dէƧc|ct(&SѩL#S155it+x87PK*    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF.classAJAEL:&i$A(;ba3t˕x(2٧
~U~\cHh_:λ0L9ۚpSL/wo7ĺ`[[U(nAjupV*h:y$<Ir>}_4Rh+$
>	qdB=qabdbl^Ha'ҏñ詘zePK皱   m  PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$AlgParams.classU[WUN$`[5T SJ `Z(H(0a&L}gXKYKrCfs{䯿T_ELu
*aH$sdL$2]<vӚ6Lgm!Π:S[kw/	#o˦+vQ&LOy|-laqlԈ*:4+=a3{v_9)]=d;n^*	{ᚰ-
gG*ZW\aiZlrJ6(Oc;eE;մMn1fzsA
{릣V
Q Nh2kdʦ#\wYپ(Ju2P{(GG-69sγ2nG%ߩGNm1mbE}3йgO};0us{Kshwt@Y"6B$i@7-==qdB.6^ցKyϨSqo)x[A\w$u %˭EE_2l &[h k]qpTJ AOf.O>p
wET j-MhRף!r7!<a47q(ƐiRX"'(c>	iPbQOnY)VbIgQLc!qtH٥@:-g
t_
m	4-1zI'NJ[W_$4tdgX_/0^A/TRfOiE -IIn
$v@%l_*8(TuPĻxB~2"cꏈcOSZUE}Ϫ:a3D
׆PvI~?Ae$B=AxOu%Uda[N+oB؁-#&X<:a(5Pl0VuU~ڜ uvIfO}DPKܣ/    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings.classTOP=F _((l
!|ďLזYH(D伷sϽ9 &WDDDI
x.4WBɷbR-WzRyŲkYoH':Ȭƨf'A$xR1!]XuMhTk9EE52yߵbjن2̗ݢR(W@<6sbJ)
5P2u0ڵ%C-k%T*nyߢJÕ洂m¥kJ.moIQzo\NV
;2cdjZ=K/O=T쬼?ы~1)	pAlgaf(SXI>T%m/M1mpYedVpY-fs[x,amw8 a qI	0rpc3ǓF)C,2te^8[&Cy%pўLf ֞#_A˴:#<r
i;2!L!C<!E!SEk9T=5|rUck PKʄ*    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1.classMJA_Qo P7LTgifz1c\x %VTAW_ &:g/FXs(i	:zQz6panBrKt\Wm3:eKtMg O4QU)S쁆P'$>tmĴ	0$eo'wWp$XD PK   l  PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$AlgParams.classUmSF~.HvIh 	MR8@1:MȇȒ+4)3̴v)Ndz{{<;ׯxdʈȸ,㮄>`3dŷR=P{iex36^cWl.#QTzUs"-q=oˆQώ
ˣZt5r~-hpY-={MԆoY;S<
ҁW+gĭaE-s2PVoǱgGwzzsJXhVۚIdj&d65LÝ;\oha	ujjVA]#B[9lʆwՔQX/s7\/S+K-Sg=8I?ْ-yN
D00m]36޶M+z&W5ךTEVHu@٫jc|Zg<tmOjɱV1`R6.gjJsVSo))_6۸|[:_BT[F%ܑ1Y:g}ФKcH櫱Vtf.!z:S
7#9Eg}xW="SpΤ5ϕt+'o1|B
aWqQM!A>x,vxOi{`
 :Cxt*xƄx.Ĳ0a1@Ƃ/X
ӿZSBVT01gx)J!rݥ7!,ue=M_Jڶ1BL_ї@R=I 'Qħ['8ΐvxglDXå:&ruLjE.Tb*^
M^iv:%RA; =DCv'*@]`}s' 5D(~:H«o븟	#atS?	ȟ"@uLƪ_ՠLhv8J"[@L?Nd"Ę_Qj.SgǭAOqPځ]C?ER!>>BPKfӾb  	  PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$BasePBKDF2.classVWW
L4(Ր.TAImm0yag&HYh^m_zjb9._s'=e!bY~}̽yM ;5t`<&q6w``߫#*
$>-kj$Sl] rI=qZw
sZ<a-wʊL]HAyOQc|L2516&4W3PLgl(SF8G0PH41^KԄJ
E>@fq+h:$3c"ATֈ_N{pu\Rdzӄ<-5YÚ0)[f<n83E-C'b2%E[!ׅT3TbR5DN
hbV"
(IFՅRf
hOq(eMI+ii/z?9PSpYSs*ʫj/iNCwB!иl'i43,n]]<n""O(̟/&KqFbZPs	+nMV{reлlU?5'+V 3;k?@ܤrR-lBQ;rePPJZdT-uyv)@v*,E
gC5.-w!Me'!"6,Eģ"*UGWODm""Et.bn Xxf]L_jWZg{w5eaBn^ФSm1b{!6-k.j.\Dh0m|,ݭE0smjt~g_4KMtI1PѲMYѠ.Sbj83%?Mq	
$PA	qDF+0$aKx
pHhD=xˎrPcjAƓ)	MOKXg7#AU ƫq1̉n$؋I'A`pHsxN	@0aD}8ANwCʉ0^v0^tb /9
<Vw)gAy)u,Qb4Z2I`XQo@3y9L
LF

dQ¯hVOJz:<F[FZs{
d:yll<G,$IA&.	27lEgpپE5kx54ϢgdFxΖ{\;hva*Op˨EH]eoA¾ۈz2Y|i㊝UvPu_t5`*	mU9Ŧ׳/k⊾uvcx|C.|qH~?]w)l--btJ=De?rnco+?O_ϛܕbs@kDs.|M:rr󗨦*?PKa    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings.classUrF=K6*i4-8Dq ͗
B*bddٕ<VLڙ> ):]I`{#
 넯S(ap0CI%-B@MCX$|M$,%|GH҄aBV	
ɔYΫZm0MkKydoXa'[XM`nv 7܎W̺lX<;ӛۘ]dN?b%4,ùpj32
cf7(.kYUsjG?M<W)]He6m]B|>b*dr9zm3Lg7裥25ծ+>axzoS9򡘞ˇ88ӻ:IZ*u|Zuj֞Qn:C;0<kv:FbVYɘjv&cV94̒n3ܪeeִMm8
+_h
%)lVtɕt1K@IES+ھUC%jT5|A)JPwO?.cJM4LNZ[!C!!Cx mz
s~*hPNݩhP9qLdoGm%O6y$l`G#7|UvݠzOQ1lc
PqËa4~0eu_5oW3?n|5׼82<y5u08fsak^z[f<fZ|'_<į<!V~[)whg۫X_OE'Y]F"xR /)"s	"HxIF3"(S,k@m}# PKym  N
  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2with8BIT.classMMK@50V
]zYE!Q!衠n!nZ$_т^̃y_%>:0;c4ȹ⯶鱲'Z-0]Ǯ7d©uCQ<+lz	^SGJx؉!afeZ8C?ʮz"ܣ4#OS`׳O+B.aL|PKW     PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withGOST3411.classNMK@51_F9YzYU*j	
*%nH7+Y=	(qo}fރy@$K;B*0nnZ~Q|i*AKJ.賮r*45L4Zr:ʮ׶Ml'3b0(^e4?ݮm}W9S[*zyޙp!DLSAJ	=1$+m[vN@tawjYL.D=PKO     PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA224.classNJ@5Ĩ1=Z/!7E1bC]t#$x(qc߃`fz #
xw.0.o25{hX
nFZZHdڅIr>QvVF%Ћ'WYSlS((Q+6q>]`N1A$A\j-ͰJK?cܫ"=l9w!|7iJaW8L.D=PKi!     PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA256.classNJ@}kb7Qk@<Z/zQS+=
7ٍ~'GS ;{o@I t'smtsA(1k[\Re+d빞*+b6SչÕrQ*Z%J<oz'-pй/\JBg,Nbx؊"f~b3cT9OK
]	_Emd!F{PK
(s     PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA384.classNMK@}kbaԘA(Vz(z_KLH7+Y 8E3f>? H|N7a蜗l/hew7'ic
<k¶T4rL|
WulGj0\+^q|{uzz1t+1c颟I[!DA3UQ2ZX,Ct/Q; ܥm.M@x0?߰	C!PK     PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_224.classNMK@5I֨5=Z/17E1+PU7ٍ,O?Jܢ[߃`fz !	xsjO0o/R1%{hnZJJHdH|:Q
˥lAέ\&\C/}ݜݧi`=@'@@׻뒍SEA!&Dąjn#¿(Úmw@v6_U]E:A
PK6\     PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_256.classNMK@}kbѨ5=Z/zQS
^e.qC)X$x)Zuޛb.ArwyeUg#RغP<"OrǪv>Ғ|~"Z&ܬC/~^>t={hxv	^!9MvQ"n+(5FUBX,C/Q;X#ܢm.M@x3|믪E.Mx7PKS:q     PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_384.classNMK@}kbaԚ(~=
ʚ.qC)ҟIGS x7ｙϯ 	b.ZJ挆Azwy}ĐԦ繰M%y2|jK|2Q9WK*TXLY)^T4=Z<})fWB|HN]dYwF C_%Ci-MJ?},biۅKoGo|U	cE PKZz|     PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_512.classNMK@}kba5=Z/ԯBWYKܐnJ6V<	(qof7؇;#Ʃ6>a]^wzeȹ.ϥȥӪ鱪O&ji;_Ŷ	7+%ЋGǇ]<}.fd|HNigF C_C~!U!{XŨnѶ& <jjƤc0$F
PK0S     PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA512.classNMK@}kbaԘRObjŠBuĄt#ҟS?%Nтx7ｙϯ =$>\3.]4W4Ӈۻ.C69_KaJRR*bY1QtSH>Lk&TXNlCoE<9?z1K1:#":vB¿zLkeVY	c^vEO!\4a~,Uń	#|PKxO     PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSM3.classMMK@500=Z/ڛT(z_Kܐnd7Vz<Q+Zk߃y03imtsIb]ߞ2k[ȥ/(϶^虲-sX-8Įg©MCUip`7@+@pؿ/BJO(d<Lx؋!aGL1$1ʎ*r8:FaK|R@|yC{C#PKmQ     PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withUTF8.classMMK@gjaĻ =B]bBݴҟIGhA}f̼ϯ }$Z)jpB6̨(,϶m[Lz\'vJW
Z
?R4OS>>|As)*irq)
{"	hB<4F۬iG!
YspP_.c®:oPK$     PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2.classVm[V")lNtáLKvQed!
%MkW)'?imϹs9/ϝ[ I- & 8tCgN5Bj5WHuEMp^/oކnqne|<&zD
iNW?D|_&U]E)FE^ݪjMe5yQv&DsfEjuOU,ɊeekڍِN`6ʚaۺfZ+uyagx[+>?TRTUj2fW/klm\2K~3g	M*TΔ X-L)mcS7*t3s:JL$`,-sf:.n%օ<NQvB'VНL|n]Խ9ԅvd:ͳ8K)W=Y+Vq'4F@E&vZK[fd.1\f[+Wcan0ܤgTyLWI/Dr`$ɝ۟,^% 9̆ˁqr98qs0< 0na.(DAN_DİʡWk"XaCQ8CRc2XÏwqN{p<ahfX吟I^$ye&<"n}_
%VZZ%2FjtZ[P_QR=?,9}ltZA
?ϻ7{x?
5#o2w&%݂"n-<Bnv~4IpNOO?%K\#G\'N?77'OME3.q9ďPKtV    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$AlgParams.classUmSF~.Hvh&-4%LjbB7!F K$0ڙz_:ݓejth=nv۽;ׯWF2zeDe\qG>bg|\go7RB1OIzA^m6VRъN_
c^f.igs9JM71bse|aZwVϖ5B٭J3\V<Җn9
UfV!T㳎UȺEBJuQizD5ϰ9loUGHj&Ȇkf;}>T3+;ڞYNyI0\fU
`yb?
T0a2
jeJEulG:pmڣYsKQuRpôuL7sbM^53ָ*ʵE:q{TD{ҮҌK-wxGvt{ϠrnH)8F#]ߟa
Q5qA3L5t7Py.%1Qp]q?IpKm	C>0"aad%~Dm8x0oV<9mӋGT';Es}xHR=
.$OϙԥcxJwYɶ풂1DH.!\kPBD)1TA
w1` s
≂x$ǊØpV	X%a|a<eYk39G3G/锌eqǯ/'14}wI+i& 1=o&?P9Ձ&F֕x 
3$]1/b:j2zUh6}Dmw-H$	ڙvHmO!'g~©,BHHɨ#Bɨn!DbUư]75uEkܕtRS("HD|R*6հ^f{V	h]*[qd??GL1=c<akKH1'hhGsߏP{BoPK=d<jp  F	  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings.classRmOP~.*RyWpH7
6M`K{]vHYj2& t+#q$$9>9/=~	`\GYaE+h%AoxQ+F,+QaLt}<y? )%|ȥtd3^Z $0G"x3)09T0bh$*gI7.<f-O<;*9%x$"omL11M</nfaį;lXϒ40[}%fM=VbUmn
L,[Ċ<215sXa=ENbħ;X	IZ~"=R^T)}Medk}T#e܇Kl~FU|V	<Cپ(`إ|ƕ6Iv؁PK    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12.classJ@ƿQ[@^G-ADާ%lH6a7X>%30||aJ蝜>λnNf]/ò#̚Pep*Kå
ڭlqS׶&/mlǋ9p	W[m/BO0PKH}g[m*uFb0$eL˯@ꡈ1IK PKst   l  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/Poly1305$KeyGen.classJ1\:^҅uHg!.2aa:0媠PbJ-ą.]T	*~䉹"pdVvNΥ飜LLPH\(ftͪJA\BY2r2F%~ϻuLpxjvPsPw8p	aff,齥7()ZkTM|&Fr,AnQƴڮ
k[Vuqؙ#|2ZmnX݃	PK^3'    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Poly1305$Mac.classJAƿIb69BbJ"YdmR| J`3`%NwHh;&:*_ܴХV!fFj_NA>_zkVcmĻ/C&zWP'˻BNd_ä@C`C) GcMw$MVMl72(d*pj[q֖!;Z,;&\PKV&     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings.classSn@=\|4JK)4JUE$Db98Y
 >
1NRx93;33'G(PT̪0K9ؓCJ9AmؾxSb#SJH$oZ;{o@v8^KvE2p4;>zn?D6G"py]{að[_-:Qy1C_3CmjzoJy;㹦NfJ:iLM'Ov֮
*XPpM"wEuryjU['-imennСǪ)\ƚ9Ѱ:n%ScY:]o3t芌tt@kTdFDFZtb$ܦ<IFq(
ng=1C^5?tpT4gx
<9EUh#!6r»C\FPK[    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/Poly1305.classJAmU[M^F"H҃Oae;쬅},Ob_`ȟ@߯o 8"$goyWl,aх~lk8Twokb]έ-
K7JfrV_ZPO<'ܶOڑe|:
]Rmc=BgLHjZ9678X	.CF^|ba$	v:,MDwE1PK>)     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/RC2$AlgParamGen.classTmsF~qr%vQ^
@
SC'0|8䫪`KH:M'fI/ݓ@b
D3ڽ}vޞ^	(0gNf-=00{=LGF#TZVӳ5/T~S(QZJC_B/O7iOR	4&Cnar=<*+%N{*%2<d	vQnSyT:CҏQEK85x%W6w@us,vF&Nc1%j~Ss=d#۸vCNDtJ
ePC7m-*Ϲ6Hd7T-ߕѼH+{"]J_ʉu6٭LPbt7~)HxmRB?oÑ1ıccn=_rcaDm'dPUsl﮹Wŏ6ћn?|?ʧ?賸\JmkL؏~ycN؎i_1c',ⴅ8c!jZ8S;p,dqaۆK*.{I.4@Ś"skWp̉O~MR%ėdcyH>+r1$
ߐ`B?os1a[f+}W}8HZ8VO#KCRsyN¥ǘ12
2.802.>U\8+CwQ&_1gSkpZ~?^cqSKpd8^"q^6&i
PKN5  r  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/RC2$AlgParams.classtU20BS@0 jB1&3af{kG] ؂+(Vtelsyy޼rw{Ddo9: }RA~쓬C>.)]XܒUSK/1x,ˌC?><P2;
7F3ܦh8*S=mX*Z_IX8KGYܴk8oHb%uK&:g|t#FOdea,N&:uZ83O&<'M4ѩD$YIkra^rn&K4`)q̢`q*X՚NL­>ր1/b-֪Xڍ5Xd"	'"HO|j~!;L`bL(oFXzܙCou*b-xpK"5yE$ڔm
[{wMx|IEU&6DS>)hZULܺ)S칃5lmzH_>"jm$'Z:o>ϓOzǓp|TCE]9iәx"NNcWӲHo6Olyi$4hJ%[bTE}S1;]sU)'mUtt]HEۍd3?kv,'cqixN{꺫5/{/~)K_P^~'=Jf0βT.y,)Vv2-Q;/{/7wxo?rX̖3O:u,Ʉ-yueP	@WPF0Π]sP2
қa']m2@&dZPɌ</1d0;_FA2Jh/ÁBe/c |aXA12/dnLv*y9x[>B[&GfeX"X

Uyr!O;e:	"
d@Rwc
gZ|Vad0z;])dlmY4T$ُkZΦNmxG:JSX GW!K![R^NsW(+d(i|r [%zi\6;syt Zײ=*ks˒M&+]ͶT"o6+$D'Ub52U2m6Y6S]d׵V/E__^qdeLg"ySͧ++va,헲L:aलAvĝ9MқK&
yne-^/M-7Iwz*0 %NJ
~Jm̫2rw6[C#js|:T0eVt#2Dyl2 t/.F~O{"?B6׀zb#o =ub/<좓{(ҡ }b@?#o~\aȕ@.A,AF P!F*t:qπaF~2r8ȯ#O{#2+|1y	A	qXefZ#N9Lĩq_#5qsF> fO
3	Eu_\yF0r.2r-0_S9@\=j #'g!bP#[EFz4bӀV!ΈQ#
4yXcFleZ7rШcԙMF>
HpĴČf# -FrFZ78B#ģ<4.pMZ
Mku8#k#58ȧzqSu4]FxgYZGmd3yɿ<ȳyz$q.%.`ڏ5źX`D&.aLy\F!ԝ0
j=F'5ry!VkgbB\ yt>qF<J]7kXgv#yMBށ ۴Xĝ:wyܠz q7{7yW{H~#hxP++Y:x#ԕģ:xL 	!0#N ɧuWM|t <^EsD%_:x+F%kXt~u2v|S뉷x[';wUpufD~
$?!'x'AZA|B~EWX5k#-)n=֋AKuL?#j5\6ǳm+ǚ%^?SE\V-k'V[1sN{spOW\1g|N+|S(%ʠxWݬ
bMl8IeQZĥR{`>Z	H}L0݋W
IY3zzNQN>7kO%x^~9V)usd)*T}jYeNJa,7YxDI]c7^v޻˦xv6R{YtXl,շcEL9vGNĕU6}>&m`.J(ͥO˜5ht5N]jir[Όͧ\(˜>lLDN~oS~:UzGY
WTvf8c~\?і?'{'Si?kmE|gq7bϦssi|LU(.q/yV9^b%\~V`gO;ڌ{KLϦҫX
\{-h\E[Rcly֥l5ߵV4O;-SNN;ʹ猺Yf-,k?ύX!y:u
$+	
GlebK xc`J	$`W'|OZ	wW</ݿh]Jp`+Atb@Vx
:{+!Dbm{Wz\hS
)'@[L}lE*ڪj
hKrWJ|i7\yNXB"{W{?(x;?!sE,~"7OB2NPK4  /  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/RC2$CBC.classPJ@=W>n.;E%EBq:ԩɤ̤B>UG ;ν9羾?>\ᔠ#΍T2iFA9[(^`\<cBM=E:$XMezaH_&CxMNfHSkɫ.gwLX2?sEv]2u<4@*ح`EbbȞ*%t><[=bQh/AK%%zￂzhPKn[  	  PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/RC2$CBCMAC.classJ1δ^mօQ\(\vBrLCMTr5`3E]4/'9|~ 8C{dh\dĎS2UBEZ(Y"t<2vACEIDH>k
J&fpd3kT|9H%|D"95:G3te9Rz$mTJXĚ>ؠ?&!}(tN;Er1ڕ9w趏:E@xo0CsP`@ۏ|"nPK2u    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/RC2$CFB8MAC.classMK0Ɵ-kW_M"*(-
xvYmSNTpC`Kyo_ NCP	Z2A_1{Rӄ<4Y$y)&La<$8!7,H@BBa	,Uf&ci:lu@pqɈG:EIѢ}Ք(wW-C
Rempm]w$BQh0GC͹ehghxo[XnPKѝC     PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/RC2$ECB.classOJA}lr,,\v-)+{R ?J;,yyf>> \☡S6	r"3Ժx+j \]VVkC^</W=#'|\RjbgE[V.D{
^.q8v8!IW*5G`/.z1d{OhMН:A70 >q
FQ(~PK^o     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/RC2$KeyGenerator.classMK1؏mc=A=)<4YII<(q*,^03CG-4jޘy.[U((]zз.vnd%/ťf婞=)1RR=Qj:UӒOO6N]o@K]  AV6à;BBed88B
[+
b/꩝(ߡ!gZ	"ꮂ!c4axˏ4au PK8E	    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/RC2$Mappings.classW_WbT؊(6*&$bI 
KŐI^}[Þ{&/	yy3ٗK 
z	;;	}~np=a n !Hp3­am0BB& hQAB0Fb8vB$CÄ;;	w&Cpp~	&<Bx8	O[	2]JˤJ`>vj0߾S`jBI~o:fHd		Y{'n{.W;<yq1<`dër	ze"֒繸;VهJ\BEӺ=*R$4vVF')I&ñ2UMp;:Z.Wk{th~$8K<zwsh-cbNҽ2\Ys<exb橶LhPui*y/ft<yh.`l8nyY^t/!`B==8}$vyy&,g!b%/dOb~2VX3C#!f~dVXy:xe1ضV\]
x=hM300Z&rMfERn(IVw.7c{z2%y,f\gl3U37,)A*L{}iX
*j4Ekʲ~֧а	,apT98#J4E$g-TBZ$ۺ%;GbDPI"SIF]`dȨLhJۯY2TF3XTgzNae$
ɉ16	-k<{K19qfj\wte:Üj
Y{)
.̵(Q*>'^E^e^5vە[gsW]g苚i*SnM-p[FE.#b(>1|h\\[\>>.'6<OY5\|).&8W\|]܊wqƊ.YqS>rq)BlmQz2mF$#oiLgcOeO=֟ zc<,;I\o~=?*,7D"f#K.+nI|'_s*b$`i|miUQfh͆F0C[5-NWWvy]+{D*^	O`./r6\rsN2S[jj#O6W_\a`Yy~VU^njNa"5Qrh,1:S7ņO^sz)|3V<n PKm*  N  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithMD2KeyFactory.classAKAӚjVAhRn	`%q5؏UCM!ʋ=1| ~IOح.ΊLv"hKq,:z!m5\ջB*AHpO늀p(Tq:,&SLQqbTc\~S+ScbD܄i"ApМIŽ,DP5luu{+-Bȷ-$fz))"Ms R0zya}i`I׬~ o@z?C^	l_<kJVPKe#G  D  PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithMD5AndRC2.classJ@ijU]B+ѕ%tC;5Tc
X|(qR\`7g\>? b!EzIPOT>'#,i)SaP.{BrM4%hI(?𣄽b|tWqT	W!Zp7Dڿ=݅"~L6,EK6J6lZn3|I[&*
 9spEkڒ 
=1Q1<9)%{G;86,˻o?mCPK5'  *  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithMD5KeyFactory.classAKAӚթCA#:n	$tqvtVvGc?V]}>T4(/of`Ϸw GL F`+]uJnUϟ\pqv̤smAvgBYGVn_u=URB3:눀` Tr:a'SLQq|rTcڂB]1W&UĢ	D`9ۓJ׎A-ؘ>=e4ᶮбĊINa;K)P
f9mXZD]s,yA6fru]S
$ PKVmH  D  PK  C:U            F   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHA1AndRC2.classJAƿQsJeP"
EwE.BBQ`xcu%$ =T4+]"3}g/ W8"Vk]"%j@_Éd	upT!r $ɻlK*8zn7ODCΗ#
E+JzG"}%wk"¯-d-,lX[ՇUS/خӝ6'혨uKȀLƶJ<SRGJךk8A8 d73Mg(f{SL͕e{?Ӂcr_PKH*  ,  PK  C:U            J   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHA1KeyFactory.classAKA֪mutЈ&$JI]b'Mgev4c%CEDy=x3}|8VqX&X:O	2܋JsDp##BH<^u|u+=B3:T
Eh0ZyNz'5cLlƸTD́iO
\	v21Ω:-,Y,$]ſjƌQ<ۺBF6bXK"t
+ĝ+캔B9} 7#6 &cX0uü07 %/ct9]~sԔ9m,c/PKuI  H  PK  C:U            R   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd128BitKeyFactory.classQJ1=S+.E7N3%+K\~_7	<8&fRpKRICP8Jsj7*Ҝ~'Xt6&ŪH<5?8j7զPF^Jc?6gm.hWG=NG-9: ٧ߚ3n"'12/\,nCV6I.\)?"*mc4dEkBJ0Wm-zHcCid`9Ǐ*%8v!yx^vCvNRy'p});30i PK8V  g  PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd128BitRC2.class]KAku>,"4!"(
wmtl1ԕGE҅PB省=3|~ 8ARmd.抠}ƒMXM)S(=!~9/	j˴èk{aĞ}1sEpK>`q:RыrEd8F	B\px5?4{Z?^؈z_wtrvqT*F_]ċOڲQm cE.r((Db	
-)@k	ύ-bOb{;BVSlS%Slʖy]PKR2  7  PK  C:U            Q   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd40BitKeyFactory.classQKKBA&WVj/Z-4pgDzImb'ӹrhjdx|
@1	B\ z,'fQ{TH}8 ]FO8t_P>6{	kAzCˎi0%F>`ؽ[ڭIqg}j\}%3l#}k2`Y7^f)T3gK]AuK0LZ6XJ	$XB xA`הgA :;
\3m
H3H8M`iȳ9m,bOPK벴P  b  PK  C:U            J   org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd40BitRC2.class]KAku
֐&»p7!(0AYVWBB?JB	ys̜}Wm.抠}ǒMXM)S)=!ys^Ԗiq*?𣘽b|tWpȍ,yf5ѽ|xhnfz6c#"ꇚ/AAAA΁Cyw&_]${OڲQmI`E.
((a ؽZRrD\T(ZWĞԜ{;FV[Slg3ebǴk\CPKl6.  4  PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/RC2$Wrap.classJ1O:qV4.\\T\RSIH<CIq'.z/ܯO 8d1CZ݌Ng0U245	[XAf
P?znW#Lə"}"95^2\1ԢѵZiB#rlpL#5%*Q(Э$~]Ce6a8FM)XJt,v@yoE96qPK1)     PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/RC2.classoOP`*R66V\$K.[td_o+_PC#:thZz>~+<J
Csbec,+$s۵==dCiݺa[b۫ճtoF
6:^ȩٞZ9)̖}c(#
Ҡ
jr1MzHE]
Nq,R_8N	vJn-h9
9}QʞىnџUde﷫.HV'nA6b
1 !($,H
R	AZL

	'pj70~l6@~a]yțvm8{7o9Ŧ3g5ԿW5s2
Yd/2󜥂'`d3O?_(p	LQ8,y"gy\&]rG*y,ȧCr#yr\ M1E>!PK?{  :  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/RC5$AlgParamGen.classS]OA=C.|BQRhj 
5$0lumf
Ej&&cZDa޹{Ν?|01tĠ1DɭL`;8ּ_)=D!T='\PBJ<db={=Q>M+sӔbm[Ӗ\Cs}]KPH㊇ ~(GȱZm"uVEuC	Q};"wmsy@
_W9%[p4A6GֳfLέSh<4
kgL3Wmj.C*SSꛞmZ5(䅬:ׅJrɐnaX|fYzU JTM:`8 WS439a44tiУWC~
Ni8ʿ;=ПXuyڴ=l
^ psS_ZQ'6%K@I'2p☊ciC<u#_WtbFꄻc&CgD^~nh֍KS-rFD^q*/?EA9(QEf!ȶX|4 #d=l?lc$:
?ɋ]}b{,\Mq'Vǽթ=nN6pۯнulהҸB=bX|f3
C`h32c% PKr    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/RC5$AlgParams.classJ@EkҦX
.ZFA\\1d"3@JW?_bn;0{C`2}"./aƓ26~VpZB<Kr|"\W[7zpR.6NZY9Rd
ӵ2WED"	B6RKz[!zsEH2cMKr8BlWԂ|qϕO>0z!HZ։8x,ǿPK[:     PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/RC5$CBC32.classJ@ƿmI?Um=)*	
<zۥnM
y,O>%nJ)|3?_ 8%ސ~+b\$rB_yr,<㉈ul.7gXk?𣄽"}|)4ɻsIU>L
V!og8{]-lLD_	D݄IO6]ݔ'xC;%vm4gBˆ}cM-$pqeJqZUYYXwF4F

}'M6_PK'#    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/RC5$CFB8Mac32.classPJ@=W4>k@XP\$(q!tC&e&Y ?J).0g9ps1TgƵUzp!IDhHrIpU,

.pVDj*c(D8OtRs2JNG#nr	4UC#Ikjfnab𼇲;Si3Q\T
X)`Akl;p`/ɀǱA#
"fQ2Q>αG%tmnPKؗo    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/RC5$ECB32.classOK1_mWV@[OO
4m$SAA<tO CDYoLнVZsc,E|)u
zt_Ap=LHVY&2W[%`p:Opdyd^U,-EDѦPt	8Ei;mn&!{g[z,')p#
}>.w4	3 PK     PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/RC5$ECB64.classOK1_mWV\^
=<<idIRa?%fKxy_ rD`LпVZsc,hD|%M
zt_ 㞉r&$yUiks-Hox1	n7^U(,*#^(=>As5耴"M`$dKﴖWsqpEBwVcDaҳ%v{[&aPKQ{     PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/RC5$KeyGen32.classOJA}mY2.A`""sRxl;ä{/y
(~qWUޫW 'Q'ucTpMrJ&zxř-sARD\J(aX
rY-ˉ0Vө(l5׺#Rt}σO026g4g*Npq֖"FDOA4TZa	G#.tnCu@k/Z ~&o;]m9APKw
    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/RC5$KeyGen64.classOMK@}k?G{iPiRIqMn婠GTx3ͼyxyǡ:Cӝ24/S+jyW?K06<<JORF*-4r,|U:r>V1	NU7P.m0[
Maԙdb%x.TIx߇i*aG]zT$C0VČra4#8FU0J@ئ
ꀰf!+5>OPKٰ
    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/RC5$Mac32.classJ@ϴMӦTp+8V\(.\q!tCdL*\, >8	.\Egpν	`wDоnΤgHXBE2<k\UAp^Ci~$k Ba94UML:c)I'fhHpmkieòѶax}]?ٮKMg#q )VbAtbȩY{$\Q5V	Uy:e~@DwDgR`@|1opPKy    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/RC5$Mappings.classSkS@=kٖ 4<(>V*R"/XAQ?40!)3,uFoҴ5_㗻w9gw}^s\1q*05[9Rw8rp9F989qd8d<df:a(+KsU`33KmǫHzt4Ӱw\$K6oj5}n+/g+-<©fl6ctWw_  L?
聽gbkԯR+=M0[TkD̮KTKR+*ޚm35GgʺEg.*US&[1R0KÐg,XSzrűtRL`?WIWd@oRyYs
SnhsHS0+`N#Ya(؟=/OoV'IWnx9kŒ.bg&,b+1,b5Xcky8Xl0t(vގnNT{ }y#ٗKh;{NifZ/Xx{P8)BO؉`\Ri!ZofD
0B`@)
!0.
^_v!D}.Ǎ@LJ`#

5_Ӻ$vPK[ç    PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/RC5.classJ@ئԪ~Wm]ԪEDAE(]CHHB˕?i]	K99'**r!we{vtPtDO,H3b8Ko7ERwLR~n@ԛe:AƵE :c()F8=Ihk
aҴF}Dy"Qp4e6jRLZÆvm
92Y#9T#1Q,`,)2;;aPjC~[R2%y20\7uPCc)D|1JDަ7@9|[D&X:47Mq8O!.w=qL< ~ PK֋p^    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/RC6$AlgParamGen.classSOA}K֪P쁢((J+PC	1~XyxmU#F?7晴s??}0{)t1$#O:Jxe{FRZnε}W\PBVa^2Tvs"CǳC%WbVPqxo.;T!IB-06SVC%:C҉QGWx.ls~A$RSN]
0樖~VR2Sujж۔j㚫%[͐iV{ːĪ*/mC-j96U!%%a;\2+_HԄ4VI2{>acxt rC9YhoKƭҐpXCF
Y
G5Ыᄆ>
'c믒Ϧ߂k ?ІWo/)<'EAJKSp@'ђ4p<Z\ܼ¨4FQG?.8+:pU`Ä!8IptнgneFY~74Fţ)(<*n^sE_,Ik#d:It:p/d
.g:fƘrc$:	#\dd2S0ykYvGqk
oy3˗p}7|Qa2fШgw#edqsHPK    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/RC6$AlgParams.classJ@EkҦX
.ZFD\\1d"3@JW?_bn;0{C`2}"./aƓ26~VpZB<Kr|"\W[7zpR.6NZY9Rd
ӵ2WED"	B6RKz[!zsEH2cMKr8BlWԂ|qϕO>0z!HZ։8x,ǿPK     PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/RC6$CBC.classPJ@=טQ*.D(
\\(tC&a&\,~8	.
Rs{s%	~0 ܨD6!'R=fO,LK&t)X%ҰG~u_g˸td^ⅫYj?&BLj$53t*sDՅb5I
YbFF.IѢhSt((?,sAv]2<4@*ج`˅m..6C^?Iqd48gG5jm9ΰn.J*,{XGPKU  
  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/RC6$CFB.classQJ1=ӱZOPpj1(FQAʅ嘦5u:SН`dTJ&\rNnrldʕ;ܹdraB#8UǽyP0$f^J40揾>EPQKFB[*qN0JՇ#6\dC(H6dzhYi7c<ůOZڣ?S -,,8p䠀E.a (.bT&ԇp*X+yVS2蘽YdPK/s:    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/RC6$ECB$1.classQJ1=k::EօA)nŅriiRпUA4Eo䜛p#ARHaq]N%ʒyBDnq樮)dsbj2<$8X1NZňkj	Zl=C}JaY~s,c$*   uN*q R:BDX\ӚreLoAx-%q
t&77ĭ]=KbW-/hxE{.@}"4"j!PK4  -  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/RC6$ECB.classMJAĬwcc+H,\`EPymؽ,G#`}`xÛy
`CB?W0u7*%Z"K2g9T;n&_f\:壺 aP0[&i9ͭ~SfN%%}68A$F;#0!+
v*ϼgcDiT|a/O+a;PQPK     PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/RC6$GMAC.classQJ1ZV .R{ nwd+<-X|(1[=&d/o NC7*PAվv	pLK.(C.
ͤ$eq0a&'ZnxvU$5z_x}!yՕ` cD{)ϧP
cgCQ(RPYA~WٻTk>gS8ȁb
Ke18XaǪb:8A {H*6iV@`rg.I`3Fj"{sȣPK$c7  d  PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/RC6$KeyGen.classMK1؏n׏z xh{0"=H'ǘumvI,O?JZ;w2>3||quZ7eh^:uTǗ$XhYIa]4U
2wUZ
pǜIIKS,ә2Vr&`;l3fnҜUbu'X
t2Oao >C=.f!krƹVYZ)d[C<i4D?pBc>$
(IPKɫ.
    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/RC6$Mappings.classT]OA=CKw+ߊRZa(T!i 18lǲdm?KMJGQOm;3̽;w Ρq\1111qc㺂uK
CYkF~+k1(YK!n|:[dh$1glp!im&(8AePݶR])ɠyif+Vέo䍣&N.
c~Kg\cj;㎉rYzE`GtHV[Cbő0]Lĩg'vE0dd]E%to}[?r,aZJbו0JZ8мt c_Ґ;GN{wT<=PpO
Ϳ۴BO&6/ҹpM%z3z7gzTbW?᱆1bFãSmiy
0GOTLaAEY%gu\E
!L&jEkmãϩ1ҒgRDvFie&4lh=I;V25RzvJ7΀ɔv&7_
/{8t$7q}Xn~MV5!PK	b  X  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/RC6$OFB.classQ]K0=:ߟæâ/B@|XlfvHZao%(1)ʘKM}x}p-lzG?uxsGmGI}O}ő$qjEȕ}\6NۍZ`D힌DK[]K,Gv^L`Jb؎wR((b@P\-?ihЎx,d@(g`Xd(b,	rUC.S+젤O zfRQ
T3`{oҫ`XI˗wS#{	3Ȣ	PKc$N;    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/RC6$Poly1305.classJ0̭ZmBǅQ-S\
Bē1c۔#\|(1YH!9?_ ΰMPk솠qsL	ufd(aSxq;M	ؘqCgGg#.hջMM"Ӓ5ϾsɈ;h8h:h9p	j^[(W5V">j ,ŊFӿKÈ#{kSݴ6:x	~NUFPK
    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/RC6$Poly1305KeyGen.classJ1˴ӱ:U.x[TE:)v!
qɐy,WS"..9')v*(AR\x2ɏOg9T}4CMiH+ftNvJpCfJNĐ+ш%BSj5`,
؈v=;(9(;pT~&&,裥Ҩ7@d/\-f
Xɺ*.<l9vн:i5A};Cgذy6m%{	Q}bs
׼eյ{6PK],    PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/RC6.classN@d X&(1@»lHIiI&},L|(jeי;o +gcu/(5JFKr2,UR!C%nW-iv]GLwmL2'!=m,S3NKYhpңgSF(BTE:TT XQW4{1!vwޣ G#1ȑr89F8F98VRM3@qmHHϰK&~,Mz}<\:Q/z)Eo@
$VaF&ƈ38qO#&"qA\$DL>PK6q    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Rijndael$AlgParams.classJ1m@E&R\q&2$@JW3c{wB>>c:BDҟ7j/Хz+uI82dfUΝWU9rid!,s$?U^skGR	?]ºqaw6xÙdߟ;IGocl_GSBi-Bq>Zg{zvvBtkyk-܉,
9PKA
}    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Rijndael$ECB$1.classQMK1}Wں֏(( (6YIMWz*(QbD`'dx3$̼8Aӽ'K%ͅ
AX$,
Un6u
Ds
Ƴh&T,ٝLTb_	l驌Dh$L&d	UtIe vbdz揁EvE(ST((EFQ'tۏg
 uÃOP
tdg+\ZKDahZݗi]bϦE960ե喣Wxs-KhǶE4"j!gPKK9  A  PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Rijndael$ECB.classMJ1]WUDARaAx(x٠YlIB?SAt)xn79	`Lh_iQ7YJ8+.gVΥQO]s帟O&rZG]\(C ի&{5J
RSʷLO_ch1l1_+`ZR#nZY+Brgr+cDi|a/O/Xa;PQPKtd     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/Rijndael$KeyGen.class=KA5㢖EfL\sޱ	ϲ
(?JAFwf}aޟ^ GRI{A\LRg\(^sfl!(ueKAkQ_	%4&8a9˹.2z>VKNVAl\^XY13Z<>7ْт:Je?gZv ;!"42D9gR0cq߰8FA\:iMGh]
{+ď}> PKv
    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings.classRmoP~`tչ:9Qѕ!>@L2B01]{JJKJYR5Ȓ眞9_]EU2IŠdJ]ouJyAʼcrt	_2$#c	[bը9xUNX԰xOFezȠr7%?og1$M@3[F M~
{Qvyȯ{އ{]ǵDP83y't4yF;OJ1Fyď\Q/-Z1,.ʼ9M{iy7t\t/ᆄ	7%J͠^QaY^.Z!
}'_9KkK
T@Z$4<TqHcCdCf$+}wK/]Z"$h)3M#IiFz~>edFaq̑>i?x͑7lǐT0>d!uL(5$5ȟzNR!HPKp    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/Rijndael.classJ0F8f:Vw/.M-""pICIiӒԁ>+CM '7	{ãpji.IFKQHYU0\&fիU)ȕ̕&N,u&EȞg8/F8bV[iAֵ8!pD1Vb.HT3wj{Me"NJbEa/n@㷿m: &iֈ=:qAEPKb     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/SCRYPT$BasePBKDF2.classUmSU~B7.BTԐ@$@Q벹
6MlOS?M;82S?q,IfsϽ_? $N'l#KHWWABGz5/*WEEҫ`;<0PpPL߬ڒVbiSZ(:uem5Yj.:/2$̍KMD>)y)r:C	}̩pf͐XAyWX]kOH&Q$gA,p]9Ŭm3?1C:{ǣ E"$HH/nuSMKŴJʜp<QHFsq,BdY5
=:qq3}ͭ9V2f89K_$X!g~ axIשׂЪPn\`tZv0nN)dn{27,AJ\[niyEmf3s%r[󳔶#RV7iQM07&QvFƪ^H=7!3m54;Wgjg	H`3qRj*dh2e\!xCƛ22ed$.܌7%,ZR"zv?"v_z'9u(&DFk1߇/ޑκvt_>3<A(Nx7UǤ^xUYtBV1~8*NBUq	SBwKE8#`6x7+(psn+qO/91qB
}()L=,
#`Y&
nZٽSAڋihz+0Hݠ6QѸz$E;L>jb==>)/x!E2ML|?cbqd_ѹ
ħ?b#4Hfkn#WX[X-[	K_f	agX[(85=[Xw'xR9>m&F'dLAu-^z|+kpPKY$    PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings.classSOP=mU`(
N ,$sqpaL>f]ڎdKLF2$?޾w﹧'7MȈȈʘ00/n2D#-6=L/)>3L
h5w&\z)wtR<fP5Zǥ	5"uaاf
"CFb_"V4niv,hIwMaZp6N֛gyt~@\_0훧p,3Rյ.xuLb<-Q1m :y3rO%[67|^_I}ci	1	$H-a!o.p?tT>Hc&iFx7X IP6rPVwcH]i=L
TL
*&N *x=Qp
4HF1D +F#C88Ԃm-
,"=oF$$p)2l~ڥ7{QKB0r9xcg?"TlFWt9v=Pb6FoF). WPPKkB79    PK  C:U            F   org/bouncycastle/jcajce/provider/symmetric/SCRYPT$ScryptWithUTF8.classOK@ߚ1V
]zYEBC1q.qC)ICSPcgxϯ gHnokKq<a8lΟ#)\]*^HQHZ꙲5󹪭
Sj}<Y~}lhX
^
_z"[i5SeR8C}bŮQ{ ݡmfF',xOf4T ҈|7PK6      PK  C:U            7   org/bouncycastle/jcajce/provider/symmetric/SCRYPT.classJ@5mɛA,"EXlU<nKnBv-<	| JEPf`o
1;FXO:\J16T+pfOVJ:?"U2UZE43]W.Fq|00+{v|xpR~%1U7UQɰp8
a,Dk/kq6х9M盿saP?xAgKuB2VI'PK8QG$     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/SEED$AlgParamGen.classS[OQ-,,-岠(*P@Sh!!ć.ӆ"_5Q0bD˝"}83w'	<FU54H|p2dմ:)Crً|ޓJdbYۓz{%	%d:/;O9fWHeN$C%W8r}]KK +EHZm
'%-+x9愨M^fe|ĺRp}9dߖŤ":rhY㐳lÚ[%Ky>Lϴ[*YRꛞ
Z%*+BBX_+Eߴ^iUe<#!ez:WW.('k&/x8ݠJP^CF
M5hhp]C]CK|pd D/[0pl$(wh?|狷)<y*.c=j
T"QaN
!a`х:qOG
bч171g&:eh͡i7R.M\~0uiŭK<odDxҙ$$#YE-FP!w`j/̅8F1x,KZLCÏL_1hCۘN4Ul.ֆvd?ayk#xG{ß(_'F1N=bXM3VC>z00#ُ[E_PK    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/SEED$AlgParams.classN0EkҦPJвxaAJݤVpv#`Bb(:{k&C`:{"nnNVi<j$T!x+g*L=ʷ9yjt#0k9kS{wU
-!݃8Y6ҽ]pQ!t:/yYU>u @ 8"^z-I0[+,:~:|_~`BLY+rPK#     PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/SEED$CBC.classPJ@=WLnI)BwBbwB8dRfR!;UG ;ν9羾?>\ᔠ#΍"5iLMS`N*yF
5}	i61TS0H23W}tW1"My\nw@EBXI-,-t,X<aݦ+CRn{l;puVhH*Lb\[=bQcdhpK%x+q81bM?PKV  
  PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/SEED$CMAC.classJ0̭x逋:l\(S 2fMKX
 >Vw$9'NAZ*tmH0L>KLu)j.01:&4	ㆆ	?fقM΄Hk5+'\l˘vD]=
 xhk5ًW{gͨl-J+b׃=[د\OgH^)Ø#ouZlvpo;-/qP?&p PKVW    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/SEED$ECB$1.classQJ1=k::EPԕ,EA\N08MJ2-tUP(1
.qQo䜛p;;ʹ"(؜`+1baʙzJ'tf-XlS\Q.!Qt9L@SөVs1⚚ds-hߞkf S)1we:Q{W~8Q cA>RFoHL!Ո0hZamb׮E;/XuI%ZNQ%4`ߢ2
l}PK^
.)5  1  PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/SEED$ECB.classMJ@֮Qkxzh,*
1n5͖Tgy*(~
qox3o> Ƅ.tyei|2B-UʜTeSrn͛n9qiizM8U=HN	EsgܨD_
pӿ2#4@kB
=B+1&DE63A~xu߀
+t7WTPKb(     PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/SEED$GMAC.classQJ1ZZ <(]KIz\PS%
},O| J̮C2Bf̗Ϸw M'K芠^Pc8	Tx&%z:B.
M;	jY't=Ap	֮v[~(]5~7uRs3dHBМSq|$R>oyFD"X(wY)H}M),_ϬA$VXc`Xg(c26/ց
]3FP vRܳcP[]c;nվEf
GPKd(P7  g  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/SEED$KeyFactory.classPJAvc6'!2<	$B0a!lf$IQB
UP-4Q;'4o~@hdɘ *jmT%BBxFlW+V+qT5ayu)㌕e=c?F3FLvfHQJYe/C:(XigͶߝ EvɨʙОvTJm2.OQ{vf
ܺ:#z8`8A'HPKC     PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/SEED$KeyGen.classMK1؏n׏z xh{ETD)V(xiXl7%_TP)Ab'Ng&ϯ 8mPfk↡>&ɬrYJLqieax>^ʊXǜJJŗ֬\YBVK^ڑ2 
pk=4<4=xZ$k3'|JTƓ}Лao+|qHk\1㜜q&S\8Gl`t'Pu݀a^?npAc>&
(IOPKm    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/SEED$Mappings.classUsD}		-L$m
	Gu/C (ȑ%#)	Xw
3| >Þeٖ1dguo޻C6;79q=9RpXXqcCXXCGs<$M)yժ͐lXJ]WSNFnV]fӝHm
M^D"wʃGu\0t˴M	ClC,e,SȖO͎pja%\$fpf{CKlR0tOwkX'ܠ(>ѵ'gtJA]n7nm>gznQ$Tj7GhzOh3Pxw]VvnYwc|teߥ#fhN"W0RyI<r#5Y5첢ZG6ۉ|״gU-;nY9rlko+ʩiV;+o:ZkPjsnRU%^Q[Ў,#{*ݰkJ +2R;$z^:nN \jOƱǗq^yWmV6S]ҧdex+GD̠Zړ_d迨3hg	k	KXfw%|JxgUJX3&!=|~Lb/)
	s$$!qy.~FJuJ<H9^/ޠ 8zE˴5uK)2/+LFEYۇ/qz	[!Ӏ
([/q@ y. (
bJQx7S~hcDKZbF9<yoCِ0zG_ܔ(ESǂԁp	Z?!1	?nLsl|o09'n PK  d	  PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/SEED$Poly1305.classJ@-Mz۩PEEAqј Bq:iLI<'AB;psԻ/$䂠'Ոi24䔩,I%H\g߿˜
ܔ,3N%Ő+('ZpTh0
M-6AP5_?l䍫bըq6H!+:el4<94u+/pkqRMɀNog0=ɱc1b	uؿPK,
    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/SEED$Poly1305KeyGen.classPMK@}c?ҦGVxi,RA(<lMY

 E-;fvy~~} a	yB7A]BQFYlٳ^qFy*KR|S4[IDvz%?'X<t6TRq٘p,
"ZOm`hP"Ð9x쳑Q~g0C yjݭWj6ʨۨbwD0݈k-4Q1!`܎P06!/yߠmrPK    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/SEED$Wrap.classJAdc]VHX8M:%\'8a3L},C3X^8q_ &8eHFZi.ĳYkm Px(G[5e73?RVKIU
׮V䭒0ْs-WEPYϱ1`{4"
٫,G,^<C}~aNkE]9G.l#suz3$
68|BM?PK      PK  C:U            5   org/bouncycastle/jcajce/provider/symmetric/SEED.classYK@ik}_Һ7>OPRҤ$?%^[@0ss}x}Y3N
Ψ.4V>'DWl/3%)֕1۩d.]T˺Dӱ[ƣr7s]'!sVlpԭe

2
bmd{Fae7ʿg;>A`aelVB^³nmM8G#ǑHsd889F8FSKbY?Ũf?*Եe)G3*Kx;?jȝ^*<ѳ&H&k)b8MgYb8G&qH`E\&n#	PKzE  m  PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/SM4$AlgParamGen.classS]OA=CۮbAT,
?Rj!!ća;촡WMy47EP(ه{s;w~
БƐsvL:1L=a=|D5;ھtԛ.yM(!+}̎eݬ-<!r|H)жXb8mIءe/Tܳg;x o$[Y&qr*ªK1ǽ_cH:1k7r6X"0ٝ{ʩq09i\ٍ){
:VhKnqӒ@fH4ˍ]eH{bEJP}ӗ=iPb:
ᜰPI.-e/[pBaFդc=9acx~r]9Yhm!I[!ḆN
'4d4tiУᔆ0ݹ̟믐Ϧ퓹o-[%ŕS_ZAzq@;ђ4p2Z\ܜ(8i1>\я:pCǹ/:qEy鄻c&Ñ]swCn=ia4G+[ogy/rQKE:i-w,#^XÃ1 #8CY}2l
1f:1d.yI:;f
1z3}x䍬bi[u.*Cu/\^ŭ5}O΢#G1f4g_iۄQFPK8-    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/SM4$AlgParams.classJ@EkҦX
.ZΦA(c:	Ɍ̤~%.v`{;C`2}"5_'#ermԣ]Npn].dLTd)l	*Lpb;'nj]a:]T]CdzWFR\}2AvGR^yujA>;J\gw}$y#czDbEc_PKIU     PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/SM4$CMAC.classJ1gӂBBpV嘆:0jCIu']4??>pDOkdyCЊۈ	{gW<1e*UQLT°xp	z,Eq	1SL`Xhf,ܵ&XwfL01HѢhSt((A>,j5ŋWκl 
'N|xcv+%t&m#{6?ثZ`Mx?PK eA    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/SM4$ECB$1.classQJ1=+m[c` tЅ`Q4L3N2I+] ?JLA\\NNι	~~} ሠ>TQDX4^,UF<a#=W|cc3xŸ́J={	hS\Yr,rfөkfjosS 62cLH&"P)*JQtW : $(Ez(i#U2vR"ap3ٸ&n;P>]apU=ny)P}GB+
8pB::mQsPKaT4  -  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/SM4$ECB.classMMK@nWxzh=()
	B
PnMe7z*(Qk(x<f~~qLhcBay&s^]j2_ZNU6UZΝ0_ftFɧpY/ЫZFlQ\&In{jo	v0qk#4@B}B+MFE]gkS|݀x:A7 :BeoPK     PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/SM4$GMAC.classQJ1ZV <(]Iz\PS%
},O| JV	|!3C;&AR*"(kFāBqeS4kLKZw۞/39Q׺]DU'	Nɇ:zQ]2J/!8Mp|(VoF<9"(wYEHMSi6忎YH
K),P5E/vsRo4boAMqǞAmT&(w&pb	l%v-2W<J_PKFQu6  d  PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/SM4$KeyGen.class=KA5,nT\!Xf9M:U@'B1||ᴁ*Cݙ2ԯRk*'=naX,,.W\r
'eTy29"/LJgp[ʙT݀8Ks>V~Cagb%x.t'Dd04D{ @Cj\C8sa-s4ɶ	FxUg
-
GkD/?cҀrPK>    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/SM4$Mappings.classTkSP=Bs"
GBPA`KE(vdя!%LH:iRgʨ3 &}@hGewwϞsO x11111qc&-$9c
AlU>Y-dT^9f0eԂ\tZj~naHbOiC4t&ay;[X`묨6Q5+Fl,3Z||OPJ@Zs|85BmΤZb%keۡ	IXS,.+UI̮v9{dZ%eH;nYslkU2];
:&(YF1^j+K#*Kw]N_=2&$L	H
x>/*=Ab[:ؾrFN&:ܙ+gTv|T%M*%GX0㛻x*Aƒ{Xp7C
DbUߤ}&Ɉx~9N6\ڴ,A[[B
RT
0!!M0ξ؀術'(Nul{ԑXd!?@)Fπ0i])u;	}%$El(q-h ԡ~E%bHg
APK2    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/SM4$Poly1305.classJ@mSAu(V\(.\A2N:m	3rP]H|>Ay!hXw'fWGUMc`\gIG2=ऌn7h.B3EH=r
ǋ霦2d~)juhۏeB'Lބ)xXZgxVȺ.\lXAWCN!apϾ[뮭P:rrl6zXA/PKg%    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/SM4$Poly1305KeyGen.classJ1Otcu.].ZAXqQ,XA(\iL!IX

>%bE\4N~8߽7@{	
怠|2O/-Kb,'"#MiHs3Ri y~x%8C"68͔&CcnTџRe	n'&IiiܳAؔє-%v8${j9[9Q\6=yEPAwu)ӚkwpaX>JGu}a{׼cճ{.oPKw    PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/SM4.classJ@iZ[kuamQDi:4)I,\	.| J<v&o0ߜ||a!Đ03bHjF75ͨȴ];TEKjP:#3Ԏ.KjsfWzz2L]}l	m'zM0)՘0V\VÜ1{FZ7Ïo1;spq9&9
SER`YLc!7r 4]ɐui}I\2Z
fhQ'EUh_`wP0KqI'&$q".w2q&w|PKWS  ~  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Salsa20$AlgParams.classN0EkҦ)@вUlTHbĀTnR+8rldW0Ub(2
~z\5&C`:{&R0Zq,csœYUV076g/fm]+2^dYS˵mRxwƺ bN7T,=m^6CTºQ!t:{(x͙:g_I7	åYBj-Rq9gS=PO'!DI'ur0V$Og#rPKϐ    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Salsa20$Base.classJ1tצ͛-Hoǘ,I*cy*( >
x3̼8AL	ڗJ+Epb=	[W0JK&p|tz	FBʚ'5,JC7܅uK
`o%/sU=JKQ[maC4CY;Yqnfdct8BLMQ~ns?hjzH>PK@r]     PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Salsa20$KeyGen.classMK1؏tV=z<DJ/R[1aͲMJ-Ϳ䩠G)xgއ@
T	*Δ~*n.	Ʀ,(wE.0,Q'iey'0ǜ		֬LZ\V	jwbvvY
oQ)(E`g|Yu&`4i
6"A$A4ޙ9,Mjnx~C˷kk	/PKx
    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings.classRmOP~.{iW*HQP:cDd,b,.1^K]ڎd?KMF2ncc?{~.d2222e\pAU]R}
)F^!?0u<'zɐu':iE$pY79ı<(WG*qENGxCO
bZQ+?=ۨ<$O3
:%Ʊ̞F-S?u(0jNP2=i1&wCU[x,{Wfw#5&0&+Gpz	7%J%aM:V{Aez=ggd6ʳ8xI,sU,၊kW*B#78,6E^Xl≂qdͷCqp>."kq3dSGDNm.#7-$1G~`/(T#7<KpQ:&2d4(zNR!PK/
  
  PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/Salsa20.classJ1FiQ[BA"h""
43dd,c\ >x:Kr>n>>`Wup$%6.z)Hedcu?Iդx̨TS*]1K)_繩\#eKY@r/p@"o6V༁{GeK$DGBJt#,A,#ĺ@oϠ2kgb"CKp"grmr>W^~l +,YU6sPKܜ     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Serpent$AlgParams.classJ@iҦj<^ěE!Ax_!nH6ew[[IP&sap!!Ξ	FK6k,cֹT/Q:'\&/FgLZW(2Yd,֦ުawUޝ.0+Gide	{Jn=]^6a!0$NgJQJ$ ^1!If(lqTԀ<Ӊ{:9[+'{9PKjJ    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Serpent$CBC.classPJ@=WLnTD(
	.
Bq:ԩ$̤Bv?'A ;Ü3MtajBәdtsT)r"$􁫌e$3S+?)L/bE\	[ruI=
Y.bD/kemcFy]]U{'C
6+r`cہ
BJw %Wai5{m2w:3-kǁA.ф
PK߫    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Serpent$CFB.classJ@ikǦZWPpjePčPp']0I|%W>%NR*vv_^c![2<:,@]Гnu'~Zi`{=)q4ɶ')7Be2ݠi}_$B<zMR"w+:drn	D9)<(0T*c?y?uJ<&2`%RNdހEE,0d`9[ׂKI(;(դ13n#`{o1G1jO
ϟMKAPK5=    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Serpent$ECB$1.classQMK1}׶umuG[A""( (
qmmdB

 A<	̼7	3/o CPt	*B
sa~س>`-M#ӛAM(ӁH6cQnRNeFQ.c!yNθ4}',JVS1-طdyQ}!AtbDJ{bF\~Q<=T<xj{_3GuJ6*2f\i<.VdweYpسiѺC@yg,vuE@'(`mQ`3
}'PK
8  =  PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Serpent$ECB.classMMK@֮^
=^EDPPݚTTPm(x`xÛy{`8"t/eYJ8Y>ٙQs`9QD,}cvϧSV]ɦ"6붳GYªL/:k]A5~e9@KJb،-B'c&$ưˊ{8@KPVͻA6 9D;+_/p/x#W*jPK'     PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Serpent$KeyGen.classMK@ߵiGR*"A
tݰ<ĳ?JRwf}a>>_ \ᴅ:Cۛ14)HY6)KT(mN<1Ua5eD枪;RdՆ9KD/^9^VY#a;t]p2#Q=4<4=xZ$+sR>uJ?0B԰ >8dzNX9gҽ{mgsx7: wXWk=PK-/    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings.classU[sTu7hu6ݦ$qcnAGƑ,Z.20<ȗΘ/=_+)0exYgxË/11iY.1.m	5Y-uW߭KSSK),/qN՛f3cܱa5T˗%;AZ0ݚi{l&bjdjL-
	w)`ѨZݐZl/ΒZή/gz[km暴q(evLW N*3]szDp~=rTHӹ"O\*zx&\Ou/&CQ'15{bDub.M-;Kn%LV7z\LF;HD3d8Un&M/Go{Vujԁ๖]^jXs[ֶm4
UMMql7LV4ڶh$,%TbZu,Z5iviV̷9	.kZwhfGtP8}3<<oHX"	`$\Xd!'cӃT~#|_cyq@dY
pUg/
((Hp
yW9^ay nDx(x
F9|Cq&O88JLa~؉ 2ç"v9BykpO'jPVl{[_eݢ_35{z:EV";>KݢGF#dٍ~t`_>!y\$%@N"'D2"'C
~8C _D~4{Cχȇi
؁co(I;6(AM J`o[JwOSyLGPK,}  U
  PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Serpent$OFB.class]KAQsr,.n!"֣x_JH٥#gwaw+#l1˕[+LחÞߓN߱#Q MjC
I1쏣I]IyC* ]$)Cu7qCfGI.EuNb8ܴ<|c/r=ӲCq_GsLs嫱<QZك?:)Xb)2/ (ǂ%Y,3djF]JR5C
QBAƍJtCgUpۻC E<
6J?z7
=04rPKX>    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Serpent$Poly1305.classJ@-Mz۩Php!(eud&̤BUCt!Y30	gƵ"!h>(;=?$8Vz@_X&8e:KRE
}:2e|2Cg}qCVo55YT73i6j8톆?AAAÁInߗ)6
DuXn9j;[GB=Xa"j۵wRrD1`ALuf;:Mrrxŷz*PK<    PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/Serpent$Poly1305KeyGen.classPMK1}c?_nգC+Hx) 
6[ɒY

 2搐ddoG˓ЉptȞTitXB!ViÖ/_	g』fHhfDX梣
<6Y:Ci|YeN%v߷tEUvsXA[.j	]5JO:f7CC}qȅqXw\u	(>Q!:,\v7PKqb@    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/Serpent$SerpentGMAC.class]KAQsrԾ? !¢B%$ȫ r][g5guGEb ^8üg<	
3AS^T'8tC%F5/У0
T]OIß')A5fgLбMxaOj?x_}!y7#57@F/:f!`y>oF(9<X$F&Ya:j'E:mM	DYId5M"AsAA)5FfPEٲ!f&Z11X{}v;1cO2(aPKA<  ~  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Serpent$TAlgParams.classJ@mӦ(h;@^dRf>%Nbq߻sp ;=7J+wG׆ioG3yY-Q:#\V&/FTZWS,֦Պ۲dNł͚#/IYZƩB$+k`ƆC'c.k)
3]t"̫Dk6BZ˶Yp&TԐ+y]|`N5	GG^#==PKx0    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Serpent$TECB$1.classMK1ԶOmk8z(
ADХAQiئn%YWz*(QtAuBy3d	vڝ*0	CmL:䷃:46L.$v'K*-k[zip`,$&X%TtuQgTωx72WHڻ%!!!PPdowڏ'+ȀPB2Y=-"od22CʕQt-~=pi&݌Vz9XMu3E;ʏslD[tfQ%6y
TQT(oPK >  @  PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Serpent$TECB.classOMK@ԦU(E!AP (qЭnM,O?Jܔ8}03> `#B\iU]}Of\*XLd>,JkԘp+g[M,%.xg*D;N#_3U
hX!\oeݭ$gQ16̌h6+rk䫵m#~"z\`snvZPKAi     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/Serpent$TKeyGen.classPMK@}k?IG=^ē Z
SMlY

%n73|}~iuZ7ch$:|)7T03lUdaSʔDd'MF0\!/\(ɜ(咬II[Eӟw;W6IP{iGsBHĩt<Ao
}x8esbF1TE\h;^e̹k34\q
-ءb	oPK8'    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/Serpent$TSerpentGMAC.class_KAϨ9jZABE1AEKHOI66.3ki!Їf̽;p=l -nNe/@!L0&TW*aXKPs?n	i|5'8IeMlͺ7WB{qBˎ}iٓСP즃֤h4\Y3GQQ)(<A6ԨWQ>Fґ6h=%d@YLd)e8pUX#ȹ6Ю#mW*N73֊AmTGp#+cl؊ccڱؿvQPKrl@    PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/Serpent.classN@)!'	i
h@@VA)(X-*RE;S<VPU1-_ V007PCGwM]Onu0
zE-}@MeR7{<t<Ӊ3NkM7=盉;&u{i4uۉg%=nX_Moτ
,}aӲIټm~{sDa߶{
Gng޴1uȹ%AYP	`X0"/x x(x$x,TO0PΕ_pSP&v$o4K7C%u|)3I/Ŵ7|V9\}1F
cP89@>#9HN)=,/H
/I|E.d!Yr|MPK%3ߤ  >  PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/Shacal2$AlgParamGen.classTmOA~Sy 
"_Rh!!u=w޶ȯ(1dsTH><3~+i<G]=4Xrx6eݜ9j/%/%%d k_&[TplI+#;CF˒+Q	d@qdxД!jB- 695VQU<C܉PmۼM{xCբ80fIL+qUCrV\Nr,oTT3S:QdOtY	o67g-(W.F"+dɱD*l'PK*mo[,H4rI2+w5~A*BD.9i25O稓Q4khЬEC6
:5\Х2Cҿ+>О^Yٴݑ
'b~Vc*_yǓ٣>}31/.Γ,kq@-b7.nj\Ĉ6`:z17u\-_:0*u1D^y#Q,<Uz/+( 
Xȓ4i-$G81II}lf11"`.iq͉/K=	1j#K>Gpޢye}c(^1I57""#WzШfBf$q
PKV    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Shacal2$AlgParams.classJ@EkҦj\n;KA~Ltd"3@JW?'1}yaL	tL,nI<j~۱йZ;#uNW&g/Ng[+2^daݗuA՝%T,=]e!06 BaH8
^snpcBpUm!Ify3!DI'tr0V$Og#rPK7    PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Shacal2$CBC.classPJ@=WLn(E(
	.
Bq:SLI|?'A ;Ü3
MtnE*;C $jB<etsTt"R4bQ)*}"Fmb^BM"X4cfJ1WTIs%o%Mg0k繈iiԯ=wvSt]4@*خ`ǁ]G
*	ArƑ\y1Ѩg)&z8Q]o?#]l	PK$    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Shacal2$CMAC.classJ1gӂ "P;JihS!
X, >Y4Cs?? \=UF4εg=OD.bɄL3U"-{pݲ$T3.,\1SBW5|6Qo<M?+9TJQEEA)j~K҉4W'ը 5R6Kaۇ-#ggp$D1VZtMpoX]`/~wwu}PK-),    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Shacal2$ECB$1.classQMK1}׶umuG[x҃(4
۬iRv+=(1
x2yof?^ c jΥم
aHd11 ܦ:&L5sfJP'BGRލgw!A?,N3Ct>,[Jp}?a \A:ͤ=ec('#~Q<=<x*_3G5U
+J]ld"	KSbu+̹Kٶh!x3fpT
aƓcc}5ص(֑G>PK9  =  PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Shacal2$ECB.classMMK1]ׯU,"ЂA(xi$[?S?%K:77?/ hވмѹ.nRBߺWb\JTT|+r6SӒ?MOmWv	wB
Rc[;MFt*\F	j
%1bٱ"$<W.3{q(\70:A=l@ry>VVF
(TPKf     PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Shacal2$KeyGen.classMK@ߵhHգC[E*bs<%MH7er/y*(QzxgއNmjy褼ea0/9_jYIQT2A){en̩T|aU2U|JH̈́mخeہ]IGPoад`YF0+3c8݉6 *od(TA޲8Gl`ēi:C:ﵙw8OkI]-8PK'    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings.classTmOP~.ݨT&
ʔ|C7QI~t׭KWHYjQ?x:!~9<y{M#ssph9F9r\q&-3jdW'ץÐ|63V`g*y-Xv/X2CؾgfK"'|כyU2J<TOZM&d7q&Ĺp<dX<[t0tkF>%W.R&dJz]::'IP۞8-nآARzv|r]C{GhLgJQV	hWnc7I;2Τehdf)_$::ݖ
)VU0`ASm-;sKvg9-1UCsULIxBRb`,@7
(uá|LVmPbA1Nɾ:'X44a!>:sw8g,W1iQ0SKQ?*QEd싀j^iӶґ/HjCXP2PK}:he    PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/Shacal2.classJ@4mz_.`E-6t:ĄdXc\ >,88j5nڥݷG(]}'R8vi2ɨL$QݑENcWGf];J?<"<"%
ottQ@;Q'rpQhp499fc_bl#м6FǶ/Dnuڤ"Șoj.=_آ[XyqX".%bL&w`}PK>U~2    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/SipHash$KeyGen.classMK1؏c=^TD-V(xiff$-Ϳ䩠G)xgއNT:)AZinD	zISԢܺL2a,V\YI-
w!cNOdWj&
b!Ql]l.ؐ[fER4qWe\'l)F`Н`o#8␠3IwVZ-smħ罶t&|\h|5/PK
    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/SipHash$Mac24.classMK1鶍C%P

{QhOB1
YT؟婠菒E wfy`0@u{SBN:ƾg,d%V7<.{%`)RҚ7=W*ϕZJ7KzuuSe
&;{MS@8L&HpD\ҧPv	#4vqBvy60'lNI1pxPKè(     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/SipHash$Mac48.classJ@5M7͋B)XP<؋=	v-I6n<7EAz33` N	4˚ھQrm^ً^ܺ\2aiVpaٓ}#*Lf뢐(1w7
	v.{)Z!Ep ^#I1qHК$Hfsk[s4Tg#?"нX!zh?55FPK|}L     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings.classS]oQ=VѵXhV
"Q!VC$1xtɲKWШ?e`)"$23;s=s,8Ns9qsD8slp\$}_Z2Y/2be{T)xvl!:1]wk;ZZ.ʩL*MFd
"Ia}!h2V}yȢ^'Y1ܣE[uf[FщעEQ)zB5PKt6Vi0Pzhw-kjSMMWێ3%Ԓ$M2K~֌vYtNnoKn)z2iܵǷp]m	Q	7Y~;3Cdjr-92.gd\CJƭU	 A^1d&;4H"B%N;$W,Z4t>?$C1|"=:K_M	A"?¿#?#7@^Y!3xCRYSB^f`lJЋVh&'FFE`r' 	PKLE:    PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/SipHash.classN0FK -;b *C ]
R'Jy,&$Bܢ-J|Ǆ+{cn	T-̔K45"2|t2#SRmdQK;3|njb{WNM}ga}RzV1ẕZ%^#]!ЋD`!zpΔLyo<a3{["@C7 iXg-b0PKpyI+     PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/SipHash128$KeyGen.classMK@ߵiGEQZD{+<%ݐnSAC:0||qUJ3! ➙5A7	}	uY؜Ʋ	 ;f6W?)g)RNυՒ%qgVftؾCC݃A0hRd4c*cG7$D;k
c/@}jOA8Tga7,Ntuwr	jnDx~
˷ij/PK0    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/SipHash128$Mac24.classMK1鶍
m/ҢP`/
z
cڔ͒,O?JL"4@pj?y!+)*Ṑ?FYAΤIKkXY<Wj
`Ͻp*C$~g`Qh		+Bz[3r4#Q*wv(L@y{\`{on/dz
#PKtQ     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/SipHash128$Mac48.classJ@ƿ5M7?7/
EP`/$<E$ٰX

>%n:yxy0.AaeMmR#mؽ^ܺ\2aiVpa٭}<9p*Lf뢐(;bS9VzER)(~z۝;OXk$a#:6	Z=IVLrnptO{}t_^DwukkvPKw     PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings.classSmOP~.zW*hA|Eŭ2C7I-Y\b㥫k[#5Q?xa_9=9y?~~ Y98989.I ^0{)l.rx
/iUaZeVfnxwLR-jf:.&#q+3,AGOU2gG{Q3&u	5:CTwfMEGhڶ%Z-zi7MnxEkhNֻhb_74s:&A2]˨5S[f N]nY'>~%tھiiv$`KXpCBL*
IR|6WZ||x&@O@
/"n+PqV5
eh
NIX]qd=)dgSTlzGdBCR73,dE(&F[u<#?<@#Ї^E&,$&wR*|uLa)uZ	0,2l8a4F=D]g%?"+OBcDPKB    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/SipHash128.classJ1FؙQ[B݄
-t"Bpa0ɴ0JpPL_`L r>%?_ b3_cM9er-E&m"V%m1WVUJ2"U2UZ._vW˥.Qҿ
#I#QWw2OR
1>mjhq!Gst"C`/4C`vLz=v {lS1&aQ >|^?8H:&-"PK     PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Skipjack$AlgParams.classJ@mҦj\nf;@~qdRfU]	.| J
nus3;s	xH]*5a0[e(ԙ9tF8Lƞk+$υdKSj.
범-OMsKKr`i(\Ic#"D.5gE KN$$Ln8FlNԀӁ{×d+m`DV$OgPKt    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Skipjack$ECB.classJ1iU^
AK71fw,I*cTP|(1A3d>W g'&)ARi寂d)s`ZԂ;_J&l]yä+-+TsQLZOpυd5Oj&-sb!U%8uxrURdZQdzGAѧIrߘ4F8 [6M, ZڬIC4#!:wn5v>F!GPKӤ     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/Skipjack$KeyGen.class=KA5SϨ`BDDrSYν\M~U@7DPQgxfW 8Q'uST^,3BX*^qfl.(UiQ[Q%4&8a8˸.Vr&45b!~:.&2Cf=4<4=x|ag9S)8J?tjn {!"ԓb&r$g>eqmtӶNp${ApFӧijPK
    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Skipjack$Mac.classPJ0=WlSEua
.-.]	,c&雤#\(1-"pr9'{_^b.TKKo 8=LT2L(s&ʤaw*".⫖bH0, EQ6!<:RcTZ0ڼ8JXNEb@A)|fެf<o7_jXq`Յ5KX'.׻2Ä#
[,Evhw431QcSmѵEt| PKAy    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Skipjack$MacCFB8.classKK1OJgZSEua

3(.cj̐LY
(N)"HM$Ηs?^ b>|`]dǉd\IEZ(Y"t7v~hҁTëY0ʉ:D
C>i{'`@i.tfju@gǙD &Qr88C}(﷜b{2Y(TȲ:V|xXC%Lz4MkF9< _L7En@h
;E;	6^-R6OPK9`>    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings.classTmOP~.nT|ADe[Hb㥻6]G@2nVF_9;soϏ_ bC1q(m;8L2$yRد1E7tBǖ0x"C,39Ӷ+Xaɵ!JۖeX/z3o.d Z[pʰ]yI_n?՞|+o0\*W?2F}LUgQ<|*u_Ҳ*2xG}SUq t[8ݰE9||˩]>C+[wCS[USTM{{`EoЍV%cRc2vO-S޳0hg]sfz`=ۜ_#
2
L3hWDwL^g6gkKÝtf̙Km.ƠW8L<O`IEY,e(rIa:ht~S9FbdȦ$Я~Ҍt	
_5M	Mqt2%~"|EÈaZKFXQE(=ڵFi]oX9l$1Vat"$Y_PKKg  
  PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/Skipjack.class]K0߸Y;/ԛ(:WTDDA>Biצ,/(XxΓ{N~~ 8Cmg&(.(br,E$/VabU*"͒q0ԙ8E(4
Pùj2e&F_}Fym,VΝY*	CNs9.GcX3Xbpy[fh3/y֙x^՜L>fbԔ^[_(VCu<N\ npPK.!    PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.classRmoP=
ܱ2'N|ۜ/mp79	Y$YdJŒҒRf ?LEM(--(ܷs<>`/(Q,R)nP,QܤP,SܢXMq.ATɝb]˽5~`hEC[[LeVTUNwv	#(DJ^u+ljXLsC{je·&8DTT1y5є?f;n_wt]ggVT*o;*okֹ.Bj:+soͦ&j츿8tt`2cyWJ`=	<J舒_%AV	a}`	aIBRVNp1Sױ 	6eÖ'smwz<תirs?I! ?۸ĳo~}|8e'M_`K4qŀGphܘފ4Gg{_{j4\*rS??
d_+l;0}(@ɀ7+M|/PK{\    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/TEA$AlgParams.classJ@EkҦX
.Zƅtp!X܏'$32W\~pہ7{0?_ 0"$ap\NSɵQKX;mr¥uxkm2R"Eī^)'3!݀Y?H'+OX쀮k]a:]T]Cdz_FR\}&Aq@J^yujA>;J\w}$[p+czDbEc_PKX*"     PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/TEA$ECB.classOMK@}nū!xSr<JcukvB~?%nA<t޼Ǽ3_o qO	Ri寂,!5v&RFW$mjo}qStw.˹$Q[dkV6p^฻zҫJd29WYǐ3$\=#lE6 7y|5ټ*##۶X^{Ac
?Q5PK4e     PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/TEA$KeyGen.classMK1؏n׏z xh{0{v)<mXl7%I{/y*(Qz	I2Tڝ1C\]Py}&z^$e"%OL9sj$ͭ,od!p01ggF/DnT:ݽpp7w*azy{<4Q&HQE~gl .C5rƹVZZ1d[C<i#Da%>i@Iz PKT{    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/TEA$Mappings.classRmoP~`tmu:Qѕ!ԗ>@LXfq̏w+)-i~?e<,Q㇞sysN_¶YF^"㼌EK.3(yȻC2ws1x&|^~ 7,	CJB7>쎒E,¨դ;4$B+~zϠr۞T!?o3:PG/<bqcm:]點-BF:AţFK08r)0̴?D;jL]9t-c4%^Ш7~z'$8O-ᢄK$\a~_LaE/n{zrlYOY=#rV*qS9,X-WᶊG
`z"6qW

t;O'8:AKOOE Y#-z-f70
]A)md1GzcQ6Gb{03S`vd2	 IC>zBIt#PKSx    PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/TEA.classOK0q]ΪA=&DeAgY()mZ:$xkȓ7Ϗ7_ ΰ9<za55aɹxfZ'KŴ|Q׹Ңr̴)
];dpN8t--{jp{Uel9.G9zQ>0D$L3wj{Mr2#EQ-=~a}ID5bN!nw PKf+     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings.classSNQ=DFZ-- ZmhXe{lw|5Cܶff;3gޟ #E1qI+SW9%0j7Pƽ pw2zojm3ћJq@4uӰwJދkfN]ixw6;g<>x,Y+2fvH`hJ!ݶ#pkU*ڡUVV3LfcX
,	!m;enXzS)Ut nd;Su0f*0O?{FijRqkɲNG.ᖄH+a!R]Oa"DTR.D+gZ:?3%c2.㒌X12װ,:VBB	02I(%Ar޲]AKc93*K(
PLɦcl}<
KsHA9WXH~pr?!?a?8؞#r"e"GXdWCaQbPK:    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS10.classROPtE@u6#fPaRbBx4]۴e&&3?xZ%}8wso Ul	s3;įpJ@IQ^2BJEv͠	~+<ԞT(be)5##%B'NxDl<gߜKĎ1ls.$K%DGm~y2"]RA菜
y*Ir&kٴ{UIbBGB~01eCNj5`hpS-]Z￩+O6zml3<;M{;m5P²"Vpˀ2*c:pG:Xg(}&}R"V,CS[+jVE@X2c<A(cR
oD/t/1}N8~
3*F2<o*X%-&(PKuP!\    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS11.classROPtE@u6#fPaRbBx4]۴e&&3?xZ%}8wso Ul	s3;įpJ@IQt^2BJEv͠	~+<ԞT(be)5##%B'NxDl<gߜKĎ1ls.$K%DGm~y2"]RA菜
y*Ir&kٴ{UIbBGB~01eCNj5`hpS-]Z￩+O6zml3<;M{;m5P²"Vpˀ2*c:pG:Xg(}&}R"V,CS[+jVE@X2c<A(cR
oD/t/1}N8~
3*F2<o*X%-&(PKC8    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12.classTN@R(rquQA.,7KKLa\ݴ[`BxCtM+F3͜o/ FC>^f9Xj;XC˲smkwEE)("΅7<4Ġq%Cp&%Hy)<PVIQ;Dmː8d`@Z8XÐTGJ-ǖ+V^qQli	'YCkWz_ߗg	ss52O{>R#KI`<ۋ\Wb0T)N{.dmz/yh轢yn0IU
4jMC
l*qAmtEo%CG-j'vJRDw
>ϲ
g0 uiOmˇ9mhF+7Т}p@ʺg 
F$0Ġ.<э:z0o\MKCJŰ[ǜK]D⏱ЭKl\YMcSlC冴;MPcvEV=";CDyL3xDЄ4-J#~G-н~C2'xL	еN05,ƒX1::uPHf?"wue̞bn2BO>&x$=t<zV*^$ PKe,    PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12withSHA256.class_KA?뚵ee=I=Xҟ#%|a]]?VOBBͪ>;{>> 8!V:~$$\
	C]aݬU/7S?pؓ쉉*H&(Yu
[6j|ȅb{._3}BQݮ2\J5.ͯ!I~` a i02&Z\PrZ}>l=TWr:
Ya-\$&Ll6!^`zT܏QƺGkk+"+ bfg)S.=FP@Z[YGPK	";  C  PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12withSHA384.class_KAuڲ,A
@0'#qmEweg3X=		}>TtWfp/Cowʕ7|g5é8D
d:J/f󎡸j|(;!ʿfR=p=UJ5ͯa@@Ҁa e pXj:sC-ʵRjX!ϩ(,İI.
&6Md`b!{<4BkKs?FE'k]HROl6C;ٝb{;K`&$>
_PKH:  C  PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12withSHA512.class_KA?뚵ee=I=XJуFd>N㰭l'!ЇfU
j=o pA?җEWq/^iϝmp.{}1\ED8EyTb#WPu5/$ɐp(L4_BwRYaE8jcwYGnm%ѐb)ĲaĦlyl'	֍˰1JIEH-/-5?_[k]i]fug0SlOQbu	i5>J_PK:  C  PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLSKeyMaterialFactory.classOMK@}ƨ8,oP[*ŨfҍnY 8o3{pC&
+YXjCMҪ$]493Zdx"ptE>@Ψzth\+0iL-vk=㳬RK%keK̖
_6)}Uô ̛!	1"QS@2ܨVޓ?}V]F0G{}1s;8PK'a\q     PK  C:U            7   org/bouncycastle/jcajce/provider/symmetric/TLSKDF.classUVUdr&PeZ?*-7PHlEP8LАę7M].o3@ĵJ!{}|gv xw&݋
x&#j|q\#FF4hS#W_SݚZ.k
Zm[x^W___.uyͮT	+eL_ڱ]A04X?L9e^UAfT\&{9hl"O:#xX>k|J\Hr}qsuM3\:]غSVpR]DvkUBlv!tir{Q ;ԤS?mҽ|[tMyuJ:vj>R01]ZuO&wcG(;f=/RE_81,\?V-*y:W4fhȥܡdSQ?z;GM̯|ilT!p,9W^cxE.7.1gfH002$tĻ:68iTao0lpEu7*,уtIw12ե(r6f3
nl4s(L)h1p
!8^B@
@4/c[x߀)nQLx:>0p3:1tcQGt\Ƃ踂%)>17ⶎq|cwb5+ENy)>>Q72p'J՗?Zs>zNuwPڶC=hQ$:*y$]Z$Hob+.jw/1oa50_qI2(pFTK	tČ@jXȌ-0#yKk)Q遌X
[zZY1Bi4CtXb1'[/
6H&ߡaa(5>ʳ
g/.?!酞-Dm[V;Λ_'9YZH21#!+j	⾍Jw,Fzb-4U3Z4ױL7 J\|ǴK2
 GI v
+u䕁[w LMҥ7jBGrm*$
h&({%HPKS  	  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/Threefish$AlgParams_1024.classJ@mҦ(xhY*ūlH6Vz< >Ń7??3;}dz;JVEIOOfCRT(o+-U0+uʕױ0UN<Ee-YYw^ɍТ0BWHYU2Qm#J-h"m<<x{u&js}<-lH)a.!4ui[wm7ʬv^1|i
.6xg1{n[}> PK$    PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/Threefish$AlgParams_256.classJ@ƿ鿴Z|  R(ūlH6Vz< >Ń7]}~|bEO3UqNcl|xt|86`)0JGin"/u
-RI(œK`#*ةCGm"nw,T*%FqVpzx<t	;u"K)R#SM46>,_0f3KlJ]2>t۶fZBoqsD5$"W={_PKH
    PK  C:U            H   org/bouncycastle/jcajce/provider/symmetric/Threefish$AlgParams_512.classJ@ƿ鿴Z|  ROC`*k:&즁>%nbMf}o u"4Ǔ;BLiU0?*
XGJ<-aH<KBiE$ddR-2vP.cۿHidf=?,t	QE9\:<]xrRTH|G
lO5LRi-[RW̮ݶ&>xІ[ks
9UPKLEf*    PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/Threefish$CMAC_1024.classPJ@=cc;+.Q)P
6(؝]I<L*\,~8)ds{s
@{5򻥳/e*6Ԑ=d<y,W8ϘH2FJGAJ\r/Έ#.Xer E\I݀aл
OOZ(0e:fb
b¦KSf'S ǑP)xa\8XwbΏ {4*CFaqdM4gp38)6ؚbKk52p>PKtm'    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Threefish$CMAC_256.classPJ@=cc;+.6(؝]II&̤B>UG"t!]\8z >A%8~$v+JէrE:9erIy)a8zp7 h,R$4D3dѐq)*z\Q]$	ϕ`q.bڊ47;,;8AphV,(ـ`=aV({~;M
Hkрo#*35!l)nF0(zXA7PKm&    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Threefish$CMAC_512.classPJ@=֤QUwV\D7RqlpQ;8I̤B?UG"t!Y\8z A?z Y"5jH$eS,攩8CrM#UHBiAgtpE4Ix[4 0g'O2NFƒ
ˆmNwe[vb^1(._N5
CVXs`݅l90iUZs<C,1V`hgp
rlʱ5aM8PKbu=i&    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Threefish$ECB_1024.classMK@5IcVy<^V%7 G)xB~?%nPA<<03/o b18QoF&Υ%/ߗs%j .t=JNj,~ki &"3]>in*-
fvOӘO2CIQTr\Z<(oYoZ#a 6e#
^8PtZdƐƘug][õ9zu@g]APK+%    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Threefish$ECB_256.classJ@ƿhz$xH,HbQHQ
$nfk	TP|(qSD33=F3x́Ҫ<g|e%[f$2JW!S6L&3I0ϩ4J~`89>9e(U&R>VEJXhrp0oYoZ-l{bO'vHk2qXKjc+jˀ3Z]%:Kl?~:]PKѰ    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Threefish$ECB_512.classJ@ƿmbZIzYdQHQ
$nfkvS!婠P⦈
Ag?f@^ԛѸ͡T<'`ح^*^Ԗ`TEP3eWNlnsι`r*b!J#L0v4J)e)sVĹ,2a(|
&%Ɯ&!<4j	`O±R$yj8D=Wq.:h]wX mPK2r    PK  C:U            F   org/bouncycastle/jcajce/provider/symmetric/Threefish$KeyGen_1024.classPMK@}k?4G [E=H7IlH<(qKE
^x35JzR_24"MLtrvz2t2=<&OK],"}C5Ei9"g:[1inr$pzzͿ*=ahsyUC5BD~kU;G	[+خE;~6&Zf?Ɛa6n<]nXlAɂ2^/DE޳XѳPKMV    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/Threefish$KeyGen_256.classPMKQ=7?FGj"hB<mcT8Bx7}2VBA?=+*hSܯ症' m씐'!x"jW|sDhz,nyd4i"YWɄgi	i D5b-L6qU >N#}:S4}wELBPFcqiUѸ氊VPsQƺ*6y?1ڏ,1l)CRWFmu[`3k#<|yˢkc6ʯPK    PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/Threefish$KeyGen_512.classPMK@}ۯiу-ȢSE9H7ItL6IMY

 UQ:ofz~yxvr;aD'PI2Rt/tU)dR"OC9ETSR\Jsd{o޶<Cy.c>njfPgvƑX$Ft'(e5*^:%gI3_`MC]3nzljUnѸ^bc	i6ipWPK
    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings.class}OAƟ@T^|jmHE1hz%c	DM ~(t$ٻ_~[0e00p!aaa800axbNBG(a泪?MMFx"3cz*"R2	&\dMø%в~Rj%W\	l޸fKh׌!ʭhNag;](غknWhx݊Q*vC?Qܛc_By ۓQsE@.Sߚ]K-.mQ\^򫥒n娷Z5[
ՋҞzʦjeTe	u6|b9ݖ/yyXCM-;.iꞦ%x`DvIꎩgkLB}mhre[(Cצ>W8)z)1/^{\B0}H1z9ᑋ܉p~DȍrecZb a<)^:`)Ya~$#tuXY?RHA	J1G(dOHcHA0<dӉ4nѪfcl~	^X2Ќ&?{ }/X=`
GwoU="l` "	a E
.&v#k"@t `־b34i^@PK:q    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/Threefish.classYO@ψr}W\*}ro1u6PH$,L|ylۤ_9gϯ yB[#6')K6VvI-ZhkNI+^leHQQeHPZݩ5'hnZU
4Գt?JN:>fsy.&Yި_&z\oG9o_|˽|oTJ A,4 u.0@!D	1 !NH!B"a,	${U$z=5F:ԯמmאXƺ)YpKpN7` ]~ZH`E+bg1'Isɜff3m,s9c35s"
PK  H  PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/Twofish$AlgParams.classN0EkҦ)@вXBlTHbĀDnR:JldA+ >
}=p!!	T]FW,$crR?8#UN&gOzmƭ++2^d]˕0nJxwƺ |w%o,YZ{ZU!06 BaH8
^sVr]%aB!IfQrk)gS=POG[C>N>`BoHkGPKB}    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Twofish$ECB$1.classQMK1}׶umuG[A""( (z6۬ۤlJ

 A<	̼7	3/o Eoo	JB
sfnر>`%&M#ӫ^M,=5l"mRNY6E<{]',JLMDgTOCn2G6	c#RI{h/CCC`վkf?ZȁT
A!T};zWTi!KnOKɳ0ۨ[ݕg]bϺE֞17ե冣Ww34#
!E԰<*!gPK9  =  PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/Twofish$ECB.classMJ@֮Qkxzh,HA (x qڭiJ?SAP7)	noHh^WIL8Y>y*EDW3NtgOƏ	gC`pY!:/L&8%1v

 \wo+ujE!Blؑ&D7y]kC|]xj%:@7 :DfoMv\QPKݬ     PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Twofish$GMAC.classQJ1Z*JP`)6u[`lUtM$2_?^ ` [ݻ#ȟ@Ez%8u߇@g"_r(2h@~>(ӹ4~ 8H-Xw5?w&8C
+$IfH+E;_'Q"gESPiAzWĳTk>S8Ȁ$0|E08XbŲn:8A {H
J67ljO@ybs.֌c=Z˷j"{	3Ȣ	PKٚd9  p  PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/Twofish$KeyGen.classMK1؏n׏V=z<KtRM)xif&KVgy*(QbJE/vޙa|}pNwBPJ+Y?I;#iGP̺\Pnib&̭(o9m32.haRNυ3ӟ
Z-؅92+~  v[23;Ot0$F;kٍb/B}j )Lrfhz:O{m5^>pB|5PKl<    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings.classTR@B-K,"Z!\A؆ބBџ!
%Lh4uOj;(ßgx<m  A88rp<x#cL,?5YVc
&3QA镤^bfcm˥vP5ǲ+`2+3s
^
`4J)a*jjdѲ9$,OQj~{3Υ4T'֮QcQ=ݾ"H	TO*paeה,fGpNlݹ`FB

}MfT)@:^P/fv⑭SݢliH*j(+Z0xa9Q*Ǝ.;QIhj1uy_S5]>cBjYuRwL=[1^0lCsubR:רoIQG'NcU0%@0-`F7]4P9Z	Vnm"[aՆKNnpC*)^xaX+#kx#"Xa	oG̏D]"Ǣ]Bn*}dU-K,ϯ>SR"}C. <
iO+kysDn	,|:û/Hb] qoz0!4;;NI5愮fs|Boz޶Nњ K*C$HI"u	rPKR    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/Twofish$PBEWithSHA.class[KA/ B:.BBAax;2~@?*"!ޙw;clRJ=	JكD|q=Ǌ-#a݋zS,Z=e#4AYffXKSp6iƫ˸s{uI?eȼdd8rzSduFDYrò<J.X!}TBEBa`0wV`$ȞnlYv75GXa-ߖJ#~6.XBPK>h(  +  PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/Twofish$PBEWithSHAKeyFactory.classO=KA}k.$Ə"dE0*Dm=.{Iοd%XQm2of73o NAL*i	:i'U~$c:f
ppAt6өZr\.:t'<p-.69Aʔ:Hp-쯋['lhԘFNƭ̨&mG7a"BY9B{.
Xf :L1Pq .Xs}]G;xE/ %yaՊ#nPKDH`$    PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Twofish$Poly1305.classJ@-Mz۩hp!(8۩I&̤JUCt!Y306	#AR""h0;>=:'8O(ftrT/bÛ|zp=I	(`N,2N%_E+(oA{vtQ*B	4Bn~	%{E2]t5
RB!l,9p`+5_Zݛ8\S-SɶP7/u0hXͱoubU?PK*    PK  C:U            G   org/bouncycastle/jcajce/provider/symmetric/Twofish$Poly1305KeyGen.classPMK1}c?km=ZA'*݃{Ǹ۔fIY

 )2fL.	;G'g/Y\=q>7I(8Q,<QڰV7WC_XL:DK^]ܞp8!ks#gwsw8(ڍO8y{V߷x2j\d6bT_Nd^ȍPY^([
cno;
שFxGqŒe[(~PK4	)     PK  C:U            8   org/bouncycastle/jcajce/provider/symmetric/Twofish.classN@e QAqzSqM .!hz(#2A&X|f9
|wfh)-,PB%SwSh	EFU.ץ0VU)vtUQWҴ̖Vbt,MUnͮ1/%3z$,Ѱ<=<W-H؃[ͦfTv)לyЗO=	1-[ݻ$!0Gc#111b ,8=ş3+!za¶%}
P7Horc}*0J%tzio?oXa@L}q8A\&NWSU41I!5?PKi    PK  C:U            :   org/bouncycastle/jcajce/provider/symmetric/VMPC$Base.classJ@mbX޼	^қ"C <ۥnI6aw+<| JDx3|| r]+bFFp
ɄijW1WJKۻly-ZHVY-a)KG0ّ/m*X;#yI"أ'
]GyH+1(1	¬Z̵&+7A|:=4y55>RD_PKu     PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/VMPC$KeyGen.classMK@ߵiGHsbAx\%nHew[Ϳ䩠GSAbgxz p ah_R+frw3^i

SS-Z<Ks+YJ#69OEJ0zfp[ŖY=zpT߯y0\/Dl4A >13NJrƅVZr]m!G	ZtaExy4%=
PKG    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/VMPC$Mac.classJAIb69OX*HlPXx`r,6n{,CsG:3|?|||);lq4a|qJZX}NJϟVKmʻ70^,MV&Վq{f:Bޫ`)񿷘MP#i҇2>+T&Ͷ	z'm0zr'	CPKHa:     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings.classSmoP~xuPuMAF,C4Y]6mYg	QS([%sNy==?lGC8Ǒ8.r,p,r,+ɐm_2(rJ\SBq˴9C9ZT)
1+{Vai6Xn)i"ZvEz"p&̤`O޾xTng=bוv!e8GB=P薰;zϰ|yxV[z5N6K]Ct
shEQ'oVc,>?V[.)[lYLK?ԉL8{+ຂ
n)X{4UBp?Ӫ/̞<	SXBAWqEC˸*i܁F0<*ZӦQwlH:+tH)+a3bSG§%&֎kQ#k>1!ÓJ2Jdl*R
c#@JKU4UR PK  @  PK  C:U            5   org/bouncycastle/jcajce/provider/symmetric/VMPC.classJ1FiөŅ	".ą2dfd,c\ >x&\7_ &8_z˩6\*<'Sgj^:TntnHU\yjoM_RIK^n=Q@N`V\zު* It%zR/'؂`@7LF!P޴߄
,.)t/1zp)"$,#0ǈ PKi     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Base.classJ@mbX޼	C=JQPxۥnI6aw+z*( >"xy}{zp]K	ڧRI;$8,ݗsku]ْ	5J&W' f<q*]>ʉE!%8upʜ5j(|56A{ߡQ/id#E"&qgH)<3F#pCMnnNnN/q:;PK
%J     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$KeyGen.classJ@؟4iIեE[Yԕf!BqB)䪠P
q!Qg8r?^ ᰅ:C*U%M*
Pdy"yheLdq#SiD
9EJ4zX,dnTˌ*IpxD&omaibuX43h8a/pQV)l8pP\2㔜~"LfTym%C#4x
~
/>CMz PKfA    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings.classSmOP~.{i7@ETJWF	"	Ztu$Yj2& t+ dszx
EŴ
MC]ɠ{#Y:bP^!_OYhiUUQD^s޾=fЄ4|7Mva(as{QBh6g"pnarG^n<ߑC=\~onK޲E˖gR&qfcNLmI6O5t<8s^raWq8_y
WTc7K7lƆ9^yܒDVno+5
@C9<p7X0V{xR2&`
cBH
$$iFEV%0J$22#s#H6ϱQAS$ke=Q xe={9sTTEsa _Q}AX$^PK{:    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3.classJ1ƿۦɳA R{KmvI>'C㟾ea>? \X :;_tF`Vvz\djq3,_iuA*7:7*_n슼
zMF-Ov,p݂:Ӂ&m5m๮* IL1@{lqZ$ΑO^߶{oK	.9t.ްa	":`Y	oPK."     PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/XSalsa20$AlgParams.classJ1EL;;V-~MDU).\qa̐I$t%(13Vp{>BB0zgR0s^CsŭWVpblRgJ	Vd{a[$A\[^:e%KkO+ǲ.B/BOO^s	t60&!z83AHR)pGlNԀӎ{×d-o`DϭH"_/PK]    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/XSalsa20$Base.classJ1t]Z"mF"PPSvK
X
| JVA<̼-_ b ts 8*̔s-*$*]*--UO	JS<4Vy.Q%:/:w*c56rF<U4EHF$un~{;t64@jوAĈI~[2Z4JD~⳱m#=-j-95amDPK#     PK  C:U            @   org/bouncycastle/jcajce/provider/symmetric/XSalsa20$KeyGen.classMK1؏Um/ɊH 
Eq,dI,O?JLEwf}aޟ_GN	B
{EMXa)AO>L[pꪴ&|W7\rͬ<eyiR̸Ϲ"_+.Al\^XQ!3<>3ْтɌN%h5le;Dv	ꉚqh$3)1ܸoXl .#4\Ľ6	^ܯBiwrzPK 
9
    PK  C:U            B   org/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings.classRmoP~xisu8s+CֹMbE4DkWRZҖ%,5aQ?x
lY?<Ϗ_ q Cȸ.cI
	w|յ<!?`oEz#\1]sX:?pΰZD"[jYaX9Lx"?O7>z}bPe]4%?vg1dLؽ ff=@rm\KO3
>9%Ʊ̾FmS?u(A1?vEcc؛[;1V!:[GCs`ny/r\.ʑ?_-	nKXpA2Ê^]r|7lYOY"sA*P5,⑊Xhx&dæ{((؀X<U "Ȑ]zEHSf>a-#+A6!ܧeҌtj_a
㰅$HZ'6> ϴ|^E-=LLA6!P/et&

sRI*sPK@    PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/XSalsa20.classJ1FiQ[BĪ*h""
M0LfH<+CjBN.z pm@gؤ4%858.\ŋյ&_eFRmTi21N:M)tt(pڽr{&y#pD5&ebc/ђ$	)э bn5n/;a`0-ɵ]{{,g-b1oPKE    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/XTEA$AlgParams.classJ1EL;?@E&7t1B8
1L"I:пҕ؅^{nK	dH(-!yZ.fyXJyViI`JlֺJe!ث5Z	ܦEpM!\H*y-abyhcu		CdzW򆳊k>u!Bo8 ^f%Y;':`t:޿3#ʇ[9['R (TPK     PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/XTEA$ECB.classO=KA}lrߍ`qIvJ;,%hyn{nYV?J;,yyf>> ㈡Kg)عx4+-kY8_JwurǼByQ3%ydc80quAjU)QZ,Gc'e.FD.C/3{|5٬,#4ۦXNA1xXcoa(~PK     PK  C:U            <   org/bouncycastle/jcajce/provider/symmetric/XTEA$KeyGen.classMK1؏n׏z xh{ETD{Sc,M{/y*(Qz	I)[3Ժ	C\.W&)YIQLqi<ųQFYrS)Rxa*j6Sj6$N.7 Ng|(J<-aw0	#$&!jZv ;B|!gT%mym!Ct~Exyy4&=
PK;    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings.classRmoP~`nnNʐ՗L &08
Qc]{JJKJYR5Ba"K㇞sy{sz~`2di2d\pAW]2$-ǐ:dHUbc	bP2djNP+;%c_񮾻dPeMw:³Ҧ}v^ -·Gpg5w}8s\K?}wCW-Latȡcab$~Fc0.,4uhXCcb^'4-ᚄe	+V%`^MaQ/rt#lYOY:'sV#*2*pOHh*ú[((XH<TpzQ]G)3G In+K8Ɠ/0u8l!9͢6ka|Ei}Zj:
&Q:!45io(I=#AsOPK`n    PK  C:U            5   org/bouncycastle/jcajce/provider/symmetric/XTEA.classOK0q]ΪA=xͲPRڴ$uЏICÁ&'oxo?>bsx^k+*'5 s)riS0ʹDR1-_juEd\973oB(43\4y(,<èumۊM=G98G#GߏiZ\z5\N[&d.FQF{t1|kئsb6a!w]D?PKL&     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Zuc$AlgParams.classJ0EvS~fBP\\wjJHt%(=7c`6$._0D\`kMN8.϶1*.(2YdJ:r¯J;B88.;d	7MKL[뗪Pr>(BaL8oJQJ/]$06vÅ]*Bܢ+#tn
@w\bd-`JoHLwrPKl`=     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Zuc$KeyGen128.classOMK@}k?Ҥ#Um.BE9H7`ov	nr/y*(QVE/v{3oޟ_a*ASLnAWޫB3csA.V8?}-+!fVi?䌳:jN̈́)}4viN̈v=<=x(cFs&zT2G`c|lMPTCqΌh:*KaM-;KDO]M{? PK]l    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Zuc$KeyGen256.classOMK@}k?Ҥ#Um.H"؛Xu
&nY

 U73̛W =7P%;cT^frtsЇ|xə\i,GoDy-9,:_ȩԔZr:sG_>]![3]5u=Jقь:Jw!*Xf [BlT|*¡r8cC|C4sĥ[\D^/DMutPKeq    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings.classTkOA=C;mCU
خ`
b/fٮeɲl$,5?emi˝{9s3O S111qm;8b9qp9F989s$8	sX,UG=*{~[Fab{O{ަG:ɔL1xF3
p3H$O)1L߯Ng\uҁ4	[VwTnⵦ}vޝO4J;{|
C-tlQ8:E1tǪbVQəjnq*.U;)*vN4욺r R=BNRM=_|rDr;Խ]I^٫mmd47i])	f$Jgn-S8>zQ:VnxֶjsqW$2z	r2&"E,jxg^a=g%k=ntuq,?0F^|:6E=2Z;ΐ0G;hMG; _~v27GEM #"K;Pl0* }5WuM`UFNU5BSl|z]aZяPK2!    PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/Zuc$Zuc128.classPJ@}ƮQ={<*.A1xx
zۥnI6aw#/y*(~i=3fcfltAB*i/	K=aex3csn*[2&R	j~<<OGSM`.XhfVK*	N-\-ufĝ"+Y=	Mѥ(V(z-:O(D a ^RaI#qq/v;ZegvAg؈/3lc>VPK,m     PK  C:U            ;   org/bouncycastle/jcajce/provider/symmetric/Zuc$Zuc256.classPJ@}ƮQ=y xhU\(E!M(-n%لݍTQ xy_ 'hcΕT^zʞJfq]`BM=U|0-'?Og\Rr"43u%oǫu7k*+3v`HX/BS)<
iG.?i`+ E 6g@(%t|\݋#qZbM\D'st"9v~ȑU؃
PKy$     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac128.classO=KA}Y<K P,L%hn,6	
 8'b#a{w g%$лW#䣫+hba<:Y*CO;	'3fȹwvjMYnerC.6b;:B^`X,tVz1b0A ϐa!7UeP!@HRfAom	O@~q/?mƌ{U PK u6     PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac256.classPMK@}kbhz zpAŃ=Zۺ]dK-!7?%Ίxa{;cl1D`:aG`ZR8_*.m;WB:~ȣ[!RL3kDYڪRjd	(hc8[@x]k	t$;b0a)@+X
D1䣺VvX
cH.3#O6bw}<ћc出AQΐbPKt     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac256_32.classPMK@}kb֏
"ZmTkA/nْdn"gy*(QD<3̛x|}p dZƥMqpbݓxe*%}j\,ȤTTg%JfUU	)h{Fk¤ZzMzcwܛQC[hӓ&vik7IS{C&ȃoܥ!U@
ͻNw:/?=rPKh\     PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac256_64.classPMK@}kbXɓHRCEĞ
z-E"[lM,O
 8+|||q)CN|j\BW>'S֋\H*ٻ	p8b._XgrW*^0ZOpBAh0\C]:7)G#lFhD#;M`C[hӓfIQ(;΄sQ{CÓ1w;DH>{CsaL9Fh}PK     PK  C:U            4   org/bouncycastle/jcajce/provider/symmetric/Zuc.classN@PE6" İ0nP&MiI[Hx,W&.| x벵kΜ7 Rrn:fp@p:m˒Fpzch?n2܁ٖ]x?
z<piw'~|Fs\'UiL)z=PjLF6&HMa$Ϸ,tR]p89
pY	ccJXXcP#4pےAv5lfH˨n2%eTv5RG5RJht䑣P_Mz	֟>آ=2
%ny<q@%.%qO\!WEPK,_    PK
    D:U            0   org/bouncycastle/jcajce/provider/symmetric/util/PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.classUweI;i:(
JQvZZAhbl@@e:Ӧ83-
(kT7p}8ǔ*(9I{g$@	B~~uL aDx)M[a ֶ#1_YZ<++16/=Vi3-(C4Ouv%59f>+Vp
'f_?zvn5^f,tFhԇ}dḶU0Y+g ;,mfHlBf:Ȅݕ8|̥Slb}#[i͆=a.	װ5״rqk,')8#(HMl LJR5J=Zn,:k}<E391vsj4e-552j"52Z6jcB7̧ށaC'6j5n16r֨ݞYViN]Ȼj樐AM75c}'o"U8:1݂ChMRGBMeFВt-Y-y1gf}נeoeg^5bʃex@{5</ ^ޝ
3<umX7ԼmiV(4n)ipݶhj
96E&pжrm7l^Qg˦7Q W\P PIX/	/J e	[$lMBw MMJQ}{{;=uݩ=r&nMte&]>n2y"7=h[m
E};P)+z	>~zd,\]^a؅2)q,}2TA+12NZ XЁ0[e,GDb4x&̒1a10ɇe,Bv~03A0A'"xz0`38CbDIXûN)c
̆DGvk>@s?A/MG$MΓ4_O.r]l{NqOCxh-wtJ#z[x_[RE%X9JGEU"N*"(Ѻ"N+)|RyOSqpoz9"&$>:e%ak8$i@-8$EIH+Jnʊ2e%㳐.Y}Ww	
E}
_ܠ;o^	QH#4{6ݬ9<J9YV.:^UrDQp
rinZ
J=>,bm$7s|wkΉAW@4.eYYSZp
R)Zi$qN	\ϕ2,A0o#g6+dװ?4$,B͢Fז5da6|at	Fm
l
8 PK2  +  PK  C:U            U   org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameterGenerator.classRakA}69hjcmM"!"hM	m1 q,)_)
 8{	`m{޼ffw~<f
"PZr#_a#pH2Mc~Tj(U)"!x(5~ bDZ_RIM;Èaw~tF7'(Db9xӨ+_DdX22ΰA:P!:Dq>aSB߸-hɀa)5N\,XvQtQrṸΰ^lc663z޺Hs:(6ˮ5mzEC̃2n]Q
6(c;$];O[LWhdespf)Ka6;@?C;ϰ=A_u0ϰOP%%TȖ/}ţ>e]
Zyk$O5UoPKP#  ^  PK  C:U            M   org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.classuQn0=^Ӧvt`*+ӘƘ		\
.]bplHppt?D|?~~V(Q"(5%&Aqg6M,ʆV14	<m9Pivx2)	NΨ4ua#&Զm*TLܣIhh\VhEP;!Y
βTa%c튗xiݳ4DՀJ=c԰%;I8L!J1S=]Ff8~*XY!	|>.D0wiǙm5^o5wƴ{N_OyV
1WLc1@
Kfp5@W jR	Ҏފc֑?H.5v1n|.wSfPi+w0-P>=ol	y\;Q{^:#Ɲ4nLz^UcPK@  !  PK  C:U            \   org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$AEADGenericBlockCipher.classV[WW&r`QD%x-EM
`Ho1Nf>/]$WW}&$tYXs.{{ﳿ}L~_Fc8S
Xt|a<՛RF)
L.R@xٰLF	z9X	
C
's3<3ǳ]ܢ9.f~IЂe-L;3jg:v5+u\[MPDUSgIB/zc;#\kʹAl_pOTbU|-ng/-:Ҕe,nW:4Q
D6bfqY^hs
zEx`,^EQ_4ܵ&'W*CeHԷx&C+ M3AͶx6/:EX3xĖ1nWu{<-쬷Tl=t^ᖙ){39QW)Me/"wP	/zEDU<
aT9k9_7I#=ItyBޗ@"
)~L<?cO;cha8p=g8p!0@MnQK>Mq$nʗi`~]dtR[]DwQo>Fzw*X*FKFU/̸F=w`tńV\ӡCGDGN9CA4c?&uAuqCG>qhMqMÌni9B0>p	iH྆+Hq|ٌk(q0+99ܑ]9|"{rTAG:AЇr5JVlDȮmop%pN7IpHD+B)@ْH3h 
/sie @/j(ӌv SyKs-XߏX|HjI#1?Y~bw	0ʨzT^Y>%a[kPA	
֥"bݏ&rg)=Pip(*zt][AZ++U~Ғ.V`{0HO\:m4.J_4KP*60X'6)L]L#~U~0.	!d٨'߁oWI+2<x,]
.u.HK<xUNbټFǠh`c8ЖQg|AyC-hm2Nt OH1@=L&RnS^¼ ^b{'`
M϶ڌ`8F$j#1ycGoPKd-
    PK  C:U            \   org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedFPEBlockCipher.classUkSF=F$WCF&Ei6)IIm0)-4<R,bȒFZߔLcf{T&we 3bݽ]܁ٍKݸ ,r+;
n^日1nMJ#**"uXb^A&[ԭ@w\5s}Kuz-Yiyi]f;^	]gW_"g]**I|m_A-ĺi锸oYNy!^	މMhL̰S6m˵*XxirOX)к DQ;&1U=d{6nk7Vue+:(u|i'\#JkT: #l˔Kk3_6ܚc,6o,2VS=n_)[d&7<}aQٍZ·L&,xvͣغ >y:Aďxt>$XT<بoYUF6y*mn0..f海OSCrPtVݨ*FU\U1b\ńOT*T)7T|F-Ar_i@CJ pV>S?/'ιh	!u6li>
Y5!a@!$5|)z5LC0o%d^|׃Knm
?HSâ)x$R=rI,{L=RǂZjଫ-;\Yȶ|y:E~
!F_*d%hчYugS
涏5ٙXȂHG9c7l`~ ,/ѬHW9
EnTƟb#%70bX{ae<:ƞ5=}(b'"}$>no(x9HcuD<͜@WHY:v#EC#xxr46h$'1
H&"$/hwrGloPKm    PK  C:U            `   org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher.classmSFca#@(!$C̓4mZ&N iqEȒF)G^3=-3m?T{03tbvw?p"-[˾dQ^ټMI-bd:Z}˱KA\?%rpFeȰӒr-amWYj3iMzpi锸oW-\EZB&D=1msY)S\
HrZ]1pLwA'UN3}&lZUA_BWϱ+([qMv7GNw*_sF/-swZ"݉;{̶J
|p3ęz[DpQ@4NK	]\|wϢЃjC2JhT耷y(Gq='u~>266!Ҳ$*Qϼƭ%㼌a#2.1e˸$cBeWdfG[ݓ0e{2rLRh'$M4Lpz)A9Ѧ1ޠAdltMBCc)t)~(BAR5*sB|*VwsO1ihXJ#+4x$Ăx,D/0"]iz:p4P;\Y.SjYa۶9T
x%>#.TϦGW4>yL 1s}k6t>F/43uh%9ktwĦ~C~|S C7hxiH4o93W${uc(#jxK	o
Xo$11)ZAvD
GubwSf!!ըĂ`Ua堭,34]c|I41&8цI
knְQۨ)m6	LbGL[oMd?PKXz    PK  C:U            X   org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$GenericBlockCipher.classRMo0eM-]
m"B"n=M(RխX\g8픆ƁBL.
{~ %<e ŃA'h8xArQFhPU~4*}QB|{Օ2*&hgjmoG<Sja0S6-34«0غ`{jr)J]KgU0ɑHuyn$/p^ܽ/8@I{*TbXTѫCWezdXz#O$ghhD%:Ub]n1`l~|9rsa:`pp昆1.g$_Wkr/u2	KѺf~L˱!qOu6_CghurV=np\-\iux@M𦪕.}b;t{?PK.1  n  PK  C:U            E   org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.class:`Envl6	!R0'.f,lv&!(lyy^@(WzUDߛe_̛f^oޔKo| Y
5(נBJ
j5ئv
`Wip
vjp
5jРOF
4h`
Z4jҠU4k AthGN
jp7hO5I5Eܪmܮܩ5KhA
֠K4!HHI,Gp;+
6G
H?\+⋆^/lCABVO$k@twC<jɟW6w X]UMdWUc6Q3zF$wTO{Ʈ*@2oGWeFgaYe͞k[}^tNWFZ:fZB
q+44
k)Jn_'ڒRҭ|뺝U;*+62\ǖT.\vmզ<FZR,aQL&u5H8ǉLqeUuJȯ-,ֺ^	g`Q-#RoĎf^H[U[]tqQiL1Xl$F,-Y\(ihْeKJbCYU\-m(KFp^A^dybnTD5TWoܴyfecA5)6)6fG,@h5qECLE	MsS7/B7R=(Clr9{
S}Q\`B4f\LK>OC'jk\^+ZX2d`fom]fOSDq+<K4ݹ7?!-,5:UL[+bKZo.*A7BE-Vo$%}@Ȼ۴C
b'ʫȜR))c!s>jIRW?q7ͧԪGrbκrYR
nKelTbz}Ȭ
4wS }< O8존Rmuc#ŔZifp9b3zOWl}isfO!"?NQԐ`1)q=Q_\ê`$	z䋐!FS^kkɳdClWKvօ0.6Tmm&KMbm|C6PDɮejXlmm )eekjwODǒQ1a:#d4y[x"@ jHMę0E"!iXztF7o3)eA<FMU۠s"=Wڂ\hlǫSRGg
9oT4ѼFBz^P\5)9<O%:4TpcSKתz=ma_
uE٭;ck褸V٬FU,ʢT
-=2}M7줭i'o&tPdOT7R*&8%vȔ@Ra&vz<4!5o][!](,ݘ]ԋ`SD#{VxF|*5yeᦶ_04Rmܓ16kb?mv5ET8d'kHlBPy?h"rg$k1Ctj-WEF# hgql$Ղd'o菚$pIml2$m
նyc:%OJFLyɓ|4IL3|Fz&Dp)b	
IB1%Vg&!g7>	+vF2bhIz$=NXL:&	ȇF(ҥ)Hv[YAmcqg-\A2!OǶxvݢU%VF2]
i'|˷G_Bjs7wz>"JcODHs	8l{;tx
=`IqY]LUU kDZGj =Zn/Ω3jbt5$a#$x@T~J_?BT^h l}_? ||)^[eť〶6m?⩨wƐT\Պy&jtO<z+ڑW]>׏P)1ڪm#R:E!H[jFj?S]8:'D!
j
:	t tGWd8D԰(F3`mЊk7Tpɀ١.zUIh%bBI}0qiۀ锖<04T|s0>.rJ߽-$LGѱ튵JCSqqU/yCp5qR.x(=EbZuI=_95»<ZѢIbbNw<Uodp;c0+~9N8}&*F, n_lHV!)zyL_醠6Q4k#A_S;nJ$HStWn)]ZhI
UM>ϻ
˷N׏HŨMI?_h~FHBg0l9A_7Sv݉ޗ*SWHk
EzN;(nz3þ?u[Sk'UaD#MR͊tZ'	H<#3c:h9Vc `~
>75ojNZ
HKJKJW%\/$R¯$Zo$V$^$Ik,/*oQhh!&QJ$fJK̒8Jhc$fK+)qK$H/qĉs%N8Yb)J&%qgJ%q9J̗8O[bBEK,@bR%.xH\*qWHLJ$Fb
k%Һ!estRip!	kֆ|p1}v
W< ^ړ'QEz<$-inGl+GζnB|r§;s%5'*xG/Ҏo`K'x^eZ:0{Vr"La٦k)hTѕS1H|M&<(+cҮa!󆇪pUuW1^0rgGefHґ0|4pR_9
,?wd!lNHwUp~SyIXQ{xsR)|tq{ۂ~CU!9vhXN09?P*/za~UZ=XfyU#XpC85Z|Ȅa=:&[9{fŞ
TSf.N~"<SD<]kx|(tZ?.T@PU)C^3]k$:5;Cڈl<Y<fvw ns!' Gx8 <q{~Q<9/8E|9/3x|| ^`#n*\mT9%3cpY|!x0238W0
x6D`8S%|e6W|dx9؊_w& 760? 58?;KO~~Y[7?2xXg
ct/^w8o:u|E@3qG``a`e@2d23b`02p2gzҎ^QƠ܎
kc(ٱIڱ?b
1`A%*;3x;vKLe0\`vl3c
Ac{"R;sA'X),*x4FLf ߎ׋5vAeЎ7vEl~ո{b[!>ep/18Dgbw] <Dn;x֎·؎Cbh{,O2fX`3:;e|\`+420Yq
Q`_`_@#Zx\\gŎ/\sY}bPƁ*vXlǓ׉Ve^A(r;uPy1A10X`j\/"FϤ~icP;"R2h/8"t 
C?O$j-|' 0&A vfZVTK[ji_Q-m2Gk)3~mL}?q25j.i4!f v7ٶOc}Ź\S[謭9jsem\U{Lucm9&n1ᦔ
w7h]A1yX7Tw[jL9&"isd0zZ]jax`	"n嫡T%~o(m(qDR:P{;Aݐv$n:aq2Yѿ
&
"%xD@#+'C0)m]T(vpi;	ӝ6?5,jk^[F!;s=%[E\_Wq_{%漣=R:{5Yσ"<p,GǒITBAuA5o>Y0n
,cH	yfQ8Nfk͇
%逝DO>a(Dz#a78fҾsx\n^t7x{<n2q>ΰW{ġnxrC6ב:v:Stz|m'*meNX"CP]#> )
nnL
3+*s728}G=a6N6#~VTlt0n'2 nk{^n:vs$cupsEx攻%%q3G|&~_h
e^jQ<Zׇw1)T.*~I4#$NԵ{4ݯ骤l-ƫ9ig>gp4,.tNիʼPd&}W|ܹG<=#SOO|ub?]~z<:}o
әan`U)~0K~fg|js^+9uD?]o>uCb33x[L1WT!g3AYLQKqB|M^28
s	/*Q~(y|$ܫ3a~!O}xAe}Jcg͉Bmⶑwsǭ|]FZuL\68k2{BQW3t{/
5GLO+WMڕI?bL:I3<.yf0g޼y~ҥKM\>Ľb$!	>eX}.Vc;ꜗ#n,tNU.|0N$!:)tVG3Xf:%ƒi-32T:MNboy#Υ	b}r
&Mg
M%&{L$)t.L}D13mdbő c/W'M;~)oδXt|/I`Zv%19 0>d%NXF!ً5&O*:\n:S@g
gt(:gq$`'	tӸg,,9Wq:4VtVn3V,ɵƽe<ap`>K1Uu7c8Mgit)HE8#^cgPsnX+Aqe4B1OKf橇m
qq	tΒ9wC	s3T;74:&nofOu>4yK̚MnyGhK'Yގպk`,1?[uKGs^R]YqϢ-`B8C_|g!ݖOΫ|g@-!o
p9	J.̍<3փЮ=Q}X]l􊟲q6\Qt_Q|=`؞Ɨպ=rM)zT.R-Wx[g)#O]p'kNAX9_GDsuׇL^sr>P<fOO!eXe(0YևO%y{,˙E;kuVE맒1RI]j!{WJxqHqx1E!qkJװOŭ/_/ψU4o,P;E	>:;j#fG,
|A(I$/\h
=퇞~I<IK}G8D*N*iyAt	a+|&Rx49r4ib+FŪxX'[tr@Ř\k*^ АkEtɴɶGJhqreaL5|VrؽrߧUUaOd+~<c3-b%oj'F?͖9[s3NXYh[^ğ>l5C=wRxpr8ӧWRdw9qWz
xUe6~D$A`G\`)xQ
b}p+܁^V[
|({",GPu#``2/qE7e٣/}@`Ľa0U.B&$z%L Rf<d&L&ħ]%`Kc$Is~82{fgO0Ea"akyʻ uʨP#a
KX*X}OiØ0dd=FTKlLVgGa<t^4jE@=3
xӱy5Z-Flp|+BBRE~#w4~WS07B8OA-DD]X082.%~o=*y?%=nA>I	evGu=yDFςm^m*%'cOQyU0`4Q%Mcwg`\/򦜰L~@{X-Q=2zʶ|颟_
wG
+q~tRt,-nX@4Wt2bkA%yѸkʼ/B]64
g.pЅt|kh|yQ〱adV#&J;ð77rgŶ9t;y&TϰJKD<q Cj;&f-(%ɯaejbYc@ Ɉsm!t҆pMx5'C?է
^q)
Tq<Si#]cbnsfçt%Ɠcx(7#z2.rnv%ӽrN>
䟣to'ݯgelGI͆7a:hi={;)MgBP3rl&B)V6,hA%[U5^<̩x&XX]?1
7
U`sޙ;9zVhl-bKe
->BZqxq拢S_h'XJge:9jgP{ڙ>O\_,ǱR PKiEK  R  PK  C:U            F   org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.classTiSP=V1.*ni +n( c3}`t_uRGfm-RP'3m眻ǧ ؃n{ĐsOݗ]ߍ20!V쉒cQ'
^;9x=Q-i[dmዐǂ =;ϋ(qiQv%_JpƖ
7=;yLTdh7_٢p2EUWg<'")Xm)|ea&H0eatqTI")v/21߮<=Ѥͺ"lf07'CA+-q8[1~SF#6_Y(B3Y]H˛r|(*ة`P.QO~d}i/
wN*{􍻲OOFBh?V 1
aIF j1oZM.5q{OI_n|ACCm#
ئa4CP44ѥ)
;p\.uira٤8ҜfJҜSEøbDQWŴC Uc0_e6(CT[A_!y^~ȟyGHF)Le)d\4NaVFF:nfyRõ5̾
'ѕ"EaxiqKYHpR艆䵋2>`v
irU5RX:aO6I
b5pb7Ԙjx5,MF'6f=H<VW'KμpSKt
:kPK$[>    PK  C:U            =   org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.classW{|W4M_Еi(PXӶt4퐲as5цI&tL{i}L$c:ֹ	s~<Zc{{9sy'Za
mpڰĆ6,܆la
U6\hVifuW	*:^efWfnYfqm[+^H=z_. dǼ-,*65:#UCu FA-EX٣9ZV`馋ZVe*7]a͗ԥ"Z"mCtjr7{7vlXY<jkYI嶮nu>[.%[\Pa-K=C }j093_9;Zd;0zCj@ OچԸob~!ҌcY((p]5ijo:Q9 -5JÜ>CEN
(
4]5y,i7۷kFkHjgi84^j՘?l	
iAkwÂH̌Z4^3%T7+ 'h'ED`E7v,QpX1G}_P	hFB4ͯ{ޡT=5I$#i,͒^ܳ5I}(94Zgj!:a77}Tig',$	{'2G?ɲ(gB]265Qft2B='8xW/2jyڍ-1HN_`$i2OR4vէE|$wb*'KQJRw1
;Qgp(@J#s=s!7GUF3,r&k 4s{(lKW(X@K"',JSN6S3G_QOSkӆ+§SJ<gagfJ5,S{z׀N4AyBO
çyԳst*[;4':<HG>"5{Mը3	4v֫fjMA"rc45jT5.h0
Ѹ2j5FS`4FbzބC``:oH]CSbMo,%EK%.-q6wH\.]O_/Cb@" 1(I%"QĐNh?kX~A,V)B|,D6^FtH\*Oʬr}AR>MVrzMQ'Y5εulޟg|9S5>LRۚ
ԝ!"+$e=cYykjdͨl)2E)ɟ~_Kz+\eRete8nSj]1 {983L.ɀԯ;Nl[g~5*bx*|\A>
1422Up
C+
ԣH
60\yl1_A5pe%
bDA>RVf0Qn<Ľ*s
Z+f<Cx)3$TbT8`57R
a8Gs/0|K_f8f{_ر?}7Wv܈1W;n/a+vνC;Whx7h~|v{8{"ßlAN{97;>q/e'v<;o;pSޏ2Ł܉2|ׁY3|?b"1in	gѫFüfO ,`A	 gRd{a|Br-r2«U^r돂lt(iL,Ժ7*cB$ē<+l#o7wgGѸv
n:3몏`_%) gT<Sl>;8rq.6cb@W!0*r,z+^V=D
	c+if<ʣp24+PF vg|g6]9K6MXy=+(Ie.)MesFi1f$}A`7vvvB\'0bc)baQ9!
8Qp6	QtޒvQQ#\}X O'|
T	Ȭ919x5GOG5FЌѩ>`trŖ(cXİpT(爸7{6*RU8;㮄|078nR<@7JK˫p#h{C	Rq*&Cs`rhd
P͘5ar AJFVmzUS gџ'm=ľʓ(bmiYYS|[$nNb!9\rô_twEarg)VҊV7SU6+ 	.,FJ^S)*+Ys'K9c4T$LmeD9Mx%;*!=ek9cGt߮$}Krq㰴Wec<1DCRB*:r3֑S/t{$n[Lխ4vȹbxصu:qXPK'Vˁ
    PK  C:U            J   org/bouncycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory.classUmWE~&ŔmBjP@ `R_&!]Xv+96h'Gy
%˝{ܗ;&D@7\!H>d'[Yvi{_Xf1~_Vei0.n;~َղ3t(7.ҚؓLu6岴i3(ieiKW2/
WDu@
۳J",od;\JҟJkO؞VqX
(){YEKC;b_薰K%<±f!˾z]/H?iFΪ*Jұŕ=iT6U}"iG:T};knvwX[-\C%$g)H؇vi2¥!7], c˟V6V:nI/8ۨ-bǐzuMjU5
⛖a8-<.2D|'<1p\x2Gc=9p$9R4>ǐεD=צZ)J7M|0;3sGJlG>hժOhF[[=lU1LnQ5&ӧ%^L#Jm(9f^4ߦ77sW~4㖆jAD0
2㶆	%z!QO5$𙆷0an|e%>"J䣘j:֣%V2)|EkQL+1xЃqO#ٛ*)8@XA)EJ:]$D~HMF*_
ԡ1,@oѩ+?!+D7lӛ|p%!1lשh I^Rg:uZN޺kr8:)5<|zAQHob]d
_φIq}s3}#'Ǩ;tArRLuwArzr߽8 6Ue9č<jxXKkVQL3?PKԯX    PK  C:U            F   org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.classX	\SCOh*h Q-ւME[GxB4$it}K{b-]6$hi=v޺ҩx1|c ked\!c2d̓Q.BGF*2|2X$cJhU62w$t':BI9DDW{n-%CH䎩"lDٜ
|sکsG_'q]'BաH(y@uh<lkwǵ;:Bq-VVi]Tߦ%^EWՓ
q5!Frc Zj
%6"ԖPg:ԸJk;u7k$OeXi
Gک@L&ȼMPDMq89Ţ=ڢѬ=iq&uH"FѴZDR`i
EC5L~7hɺp4-'~
|9	&Sk;A(Y?m	Ӛ\C,!B#j5`RoDZޞ$Ǒ[D9l$2Z	f[k[q[툐<יvhV`%r<%uj&qOvĵQ^EZkPJȡr4kI[)5|a5SPgVmjzm	Z$)XWR'OB홋*[SupL}%ބ]>3;>(?ҩC-#I3l-f^Vl
R/:
tLF$qCiYbNL30j(4:C]*BU|]ǖ-#f;1k$
Sc_0È&nKH](IPЮn2\n*+QZ$oC}gqG#[N\hL
dXH@cDo(87GdQI&;CA-^k
%L!8VI5]3g4j*'Mm7NQ~3״"FԃntlAukP[]YHiXZfG;CtL'#
)te+.N1rDl/U Nל
ԹV4묨~ʧEԝ@"DO%֬et
+P'REAxRODGs8e|;x11e`fEij$l	MnY[%Mm.v	f	A	-4	[$JICB\BBBRBN	wJ.K]!%L02\F
ï)0
ETs>a<uL5RSTa4[Vq@ayE6Ǌ]mܟ}a|cYIoI6O5FhF\>}̻8s^z=& HCe6Q.	":R]~Y3!)yKSWZ'ʖɇ%ӏ!YRbmW6c	m</c)h٬y
Lᮌmؗ%^
«`Ca!S^|J
P>|Z(X0
>t71^u+0L`%*Ȱ>lB2,@JzUpW
{q$}A|Q8zVЎ02Wuo0|[f;ks{#_0g{3
;YNOx{;P:~''`O&ك9:0Ёۏ2W30_<6?0ׁO ^exm~KyD^Hmk-Wbfg 3Z-ۥFK馷1%RjR[ +mqQK"ؐCm[bCLr"j%9iL$6jWy|">ޔh:l΢@Y9ON/zD/d85Usڋ3kQb#sX[Z6sXSMJUi!J1G)G"crۀ嘑,֮A_zMXhı{sN5oCnDJx6iGRo/%a7'MӖ5`)C5^g>,W~'oN	$o</Yыl^?idT㞦ʔLt\̓mart)顽rs%ܛWE/gP#BzqNrƱ	)!~<dXgK6]ʁ o+L=^ݏGMyDg΀ةCVb%--
eL*O{7 ѕGbV$'ڽ*O`oSu$e?}ݘp=(nrO`_J59}DL6;C,!rDzpNRlSpzNJP+ϭfm0 %Ҫ{0$1eP
?z0;:N`O=h:26	&rHTS^T}Ͷ/'=EݨǞ!(%HشBV$}?
^kf}4SR;\+.*)esIiM #M?@lGU9t.a9{̍ɔ
TSyN@Z!Y8*(߰l0L]v*c6eD.$	O	JxD%,RX;\;Z̝wuTyz۩Zvѕen#NJQk:E{O1;wD,l1#391NwhUR<)TQVqzdnrN2	<B}4g1?;F	;EH!dCXRw+]O.kQĎM.A㼮
DWJowYt$㦀"[ZB޿'tceG	0
Mxi2eݘwgJT
=* ~eEK4`Md7oܢlvKb -,0U PKaaHT    PK  C:U            Y   org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher$ErasableOutputStream.classPN@=CJ-"\ 6\PRffJҿĨqQi&w$y7 g8!b7ݱe~\B
Yؚ$3Lq 09^o/؊QQ/BJ^':NHKΖH$JB?-|NcĔKk)|hPϴ,K:fn6	Zkym2Jشڨ(b+*cA

X{vo.4PWa0`JqSSWC,cs(q*(qp9fiG'4YF:FױZPK@    PK  C:U            d   org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher$InvalidKeyOrParametersException.classQJ1=kUKRpюB6*]8(

J	i)LIfW
8uQq&>=׷ hqYbA9il<2N@-X('"=bH#Q(rfP)gS.\G9t6&3J/	'=ՙ>gYkBE%iOT@/':aPl#qa:_*+ݡ.jT^
݁RB!3F?vAJ86?d˼,XQ2J԰H,-V-VP6wPKFf;  "  PK  C:U            D   org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.classX{`u][ҕeOmbR6l H,²Hiwm֕uki
H sX2qm ͺwuf$}zY2fy{ιӛvv41ێF;ڱ̎vc;VI;~F") f;9)G=NEWT6)xDҴh;>޳6m]/iݘCM,{pj`J~}Dz4	G{I _t(	0E!nŁ]`8'ݼ='Tݭz==ld:
z%zKbs٘G*7Ho,N
-QW0ba
fp(#?sBʔ/*30f
#(H,B	=wdȹ(PcCX5Th2HL=;cXSX~f6}t50r[SBƮ'O.r8a8G9=x9(kt*AAD,q%WE)Rfv#abzT.d\rGi}A]\2^#p3xEId2K{$O
(%!ӆ{hҧGzph~z?Yb	@W2N$e7z;"tV]Cz<EHD
F)b^`4(DTBypM.$N"%brnR
R e`M1+JIm,B!/YYbJusKr/-Dl(SWD?H-(F!_ULRQ@21MA+bQ"|x{&ӹ7b`"
t."iLavHXZDhFDOc:6u镣1b54)KJi`Ǻ;!8hq)%C늢v د@U.>i^8T6TugQB`44
&SLFzdAV'bӞ'G>s"=^7!MŤ
y*
u'sVxwVڻ2.5wţ-%,'C!779<@<p;
GL	mkV99	ߝeI`Iw]JͷWQ9
؏hZv&?+Wy*V*vZeRZ&{B=!R"
iK˸ȗvP(II/sj
Kb*ݪg>Nrwz/d5@̇W0zt%FUr;i>|X
d4cpK=\E6$H<"qTQ$I<.q\"(- }aDL".DB{%'%> AI|X#HOJ|\OI4}+J7f3j윦Rw_$yJ%F
MN>R[W'_}ӪoY"D߶Er]C1H2$pyրiB=ݹ?Eɘ<ɖwF6nJ.{bj)4ŅOަ;6Xȝ0òUdɖOO5_-EZ.1o/62;2橅O̹O۩VÖloKXQb]Цz^3B`poä8uHdW6<0Gćr1iD:t
'[9+Kz;+sXw{_掓DCX3~N4i8UZw4|{}

n=2xA0kf42j؀E0E;jb9?bo3f|Was
/WϾx5?hX`I.@~/LC
7
m
O
_Uf?~-&zᬨcPlebPˠEzs42XqN8Ϣγ^`pQdʁK|IF^ٗÁWrIҬ-/\fP-l51ǁq1A_W{M,tky
w3hq*T20bohuNHvĿ)-:A
'E3bP<ԗsQ=X<L*
FZSH7kKE1ǟ3ǟ5G*5RXEF*,5R1F'Au!>H#^`'#x_:ZtY<Qck<bTldf8ȈQe@Y_:PIV \<MdD%ߌ4Qjۈ9Y0\Qym՛8U~L1)6OL9
;3Rcˊقy*"l➦;x|&MEæ}5޴xQ\iLN9-N5 eģijl%-2	!ZYR1RWʛhxξEyV
NrP^"ŷMbN--v;bGF	1'b1c&2+#P,c OCv¾r
AGUfk3㲵:&msX첥EuT#ӖspjEiFtYIP4^Eu<GGq\FCQ]iRm%f_'::oЃq^3Dbgo"-g;_uŁI
]%k,ϒ=m/Pt>aRQ:@~*6Y\J5BuzQYTEAG3k)+@ΪKo }d;L.+wmNBlċ/KH|x71r:/skΝhQU;esM.M/ʑ75;u0&|7;tiq6|V.-Fbm
dc5 VobW2	XT@H|zF@_7eKT8_K"yBrd
Ι~si#9K+!jb0Mïb?ge2%}ϔITcyi4[g:6E#{)fcuYF8<{2ቲ,O*`FhfQ	:NoƳ pˎ<>Opڙ')f$)j|3UΛau$pc	wJm簭M*tiGrʕ.˕YsVF<2U,
5&v$̀4ȋmlpjQpx|3`d Q*/4"ZT ",;se;̕ۍ;EBIEGy}JZ*L#8BT?8@t
XF(S.h9oKҳ4n\>!i%ɵ}z46xm&9}Z
P!^.ŬqFؒ8EZl;ZϢes#, ۀyXر8Ίl'jrZhmkh.K"'amjj`Zt.CDVԵ	&)MTnWԸǝ'e3y|
i]@Nk58dEh1r.*Ӹ4G1(Rq_EX407X[%RZͣ̽Aχ oQz"oQPKc<  %  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/util/BlockCipherProvider.classe10$- kH_pSqq"k<G!DV>_BVKRX93T9*C
C>y!ƱPh/FRLC>U;Xhd
wqR9\APK(ߋ      PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil$1.class]kAߓLnLL?4
"HERPHUz?㤓0;	Ϳ(^Q♴h}s=g'xHXho T܄r	ʼ[Y998Qz	9}h3Th5&LӷL}Pg9Udv~s\M,@ɁȻɴOp7*cϪyϊ߹u?Zi7Uo
#{vbWۗow/\1?i_ r(,z-ܨ[54pPwYA+PO.#$\ԏTǇrN.45;fk]Vk#uvb
Vcvc:_wNt\UVXW@/Jǻ26Gc>o, PK$    PK  C:U            ?   org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil.classR]kA=f&5ڪM[JPjdvX&nw$_ZQ|7zw-}{܏sg {#k
DtB0CeHӖJ*]1~$q;sunSӏ'Ymbt`J'})U6MlES)"4MC)R)+EW*tx|VGgڍ3cpsVRךo#[.T7#e3WsQ s1w,(bATPs[qA+SM(zVX%yE[;Bm+щFu!#	o!SJDzs~CEwswN_Pوzfa\-&aK(|G2U0Q![͉gPKz  5  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil$1.classkkAib7Y͚ꥶMS(*J-"T~tn̆IhU/ Gg7B[°gÙ `UY{+001{,0C*^EA[sK1gSe):4zjdL,Zd{_%髽i'Z&n,_dStTO73˽lhXܥ${Z4ɁFIDV~M$'}Xd{T6O=xj|y2;ư)<v:k;'xsV\y>e9y
6zrN»3"@sf0`
"@W\:^G>fqGխ,"ނm,j{="DemqMB °8U+L9qA,va#ʻB	7>v3+?0wJ]>Un]MJaɴUjj PK?  	  PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil$2.classTmOA~EST_QJ7_5$F#c-׻foПQ"h4~GgX
!쳳3ۇ ̌[t
yȐ(.2M}ar/گJ#uХBuI*lD$$T7|a/o
Y3*
heRk)C@t4QaKQ4V
P.9d|-)ݬ,s=B}E!yMG
U*k%xݨ?5)^Gf(N;LA~0!-xvہ)8H1\(-otÙis֫zpD@g}Ⱦ/3VI=9V|qі^x^8>iGZlW<o.]%}=tyH"aUF<n%Fƒ1ȺHcyLRTYE*,;wU|Jq,cLQ4H,8g%A#kzA'dǷ1tvs`?zp#1)bOH`v]~ۊ6Obw[nI.i[6]PK`Z    PK  C:U            C   org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil$3.classSmOA~EA,j!MJ$1~0v-[{޶D!h2ΝnvyyvfO_,!C8UN&Co\Nh!S]fV;
dsCXTN٘!a[6-)aj0u#U0vѲq,C=j(
]Ȫ7!a|]0Jv|)P0˒k6uܕ"vUY#B.b3e3k+fKCTe)&[-yS5^|I:Ó𞘧6qEKG[bY~<x{d\9\ӕ)_
Lpqw;)"J2;OP9mңq?W%bWx`zID6@/nf0[}m#Q@%Luk%F6s#UP6FٕPı1K
	
3:]}鏘)`=<Ib2Z?c>`&}}zp6υ.
v?Md>$i	Omr?PK-  &  PK  C:U            A   org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil.classVWW
&hj\Z
jmm

l#m80N&j7jws V?C73d1ný{wGA?͏]~<ãGpCO;_}kf?ϡ
ôCiTL&4-yNU+VXtqhFƶFhZt5"RT6Fr;3PłiHr渥RiۢۖUNphC\x]A]	FT{dS&ZfjGr!0e0:&PTF(#r6~ڌc2x-SVi9
rNtHI^PyEMtrh*H
Cm+FxVqYj,XUÆ(n[jzRXNRI26QeT%kiQXضL]gK
kɈ2i?S(bQmB[D+l/Prn+zєX ].*nIuzPNJIEغ*4"M]fQ-C%9cH
a'2Ȭ"*DӨRfa-M6I+}E~}L>j2cg;CMwZhY40v<vãGG7{y㱟s<qax9vӛ)v	#es^p{m b{w@s޽枔vtyG P@m
w.	quJw,y!+y}딲ʞ
ʺЙH|8ZN]@y0UisB]ȃȃ<\هG9@w}֦9.IьE<H^q
"qFӘ/0ҀWyUĳxM"ZqNV("6#ɴ"#%  p> tF1Da䢀!-K!`N`A@9c댼-ߛL;L₀Ӡ_L+j9PZܖ#rzB>sBeVY^ 8?Ү8Gc X
<^rTE<xL]gwp|1-:ujV?ӺO @;+@K]7ڻT	G#O4X*A=hk%D,*\M\Xj@4Q}?Fl(Q{	_6gVh)?*A2,Wq,K>$+L$}t <$F{৊zyΩ*b`2>ܽyTb1\zݴIV'pNk>ZR [	
KN[+8uq7j'OXL[姉pPKQ田  
  PK  C:U            K   org/bouncycastle/jcajce/provider/symmetric/util/IvAlgorithmParameters.classU[SV
JH[mP\Himp[nBЛ##K,OOyi
3)3$}tcN=o?Y '_ACxD9#ѝN]d;oNNqJT[f8VF7zRuVErC,hj~,鶖	;VQꊡB#0Y֝fTR݈?07fĞe[n-JE5,SЯYԖ4'iR)eȡTٲ6$*B1='*mBa&NRR k9ҋGnua0YZuYZn5%JlQS5"xg.6ؔY;ʜA62B^ʪ])8Qn5,U1.xoZvV޵JZQchR4d'm;n4KeQɍ3dK`9Uɩ\N<%i\rtCN(E|J)Unsv'܂RYI-O߬v?<n1q<+sY~?Gkn\9r͵=+[mDsôgSMz!2n@]ޤV|=7:1"zq">f*E01Lm3"BGEdQ s2ilsx6Oe fb%Xq_1A,lLl2Cc6mz`+rQU4G m=V=	L%'mNX
{G`??MpXB?t0{itǤ*^`ӱP'ՠU9 ݱ
rܡY?Œ|>
~E1iSrxt|bwo<i'?
*~ώT>p-LǴHNt/0&fW$g+Koݕ*vcZozxqlG *qucIװ;r}[75{1hyQxY13Jsќ%{SM/;PKEY    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/util/PBE$Util.classW{xg}m7 6IKKhiF/H#M&KRPe^]uvn^smY'lMy=M1s~{{.95xZَv,c+w{Mk~wyg4);NF/7m&SŶ16asr+jkli>=dB#nՇ((m䯮i$q#oJI׹nOwU+ٟHčTk$sb!-Ĵi=[7voU	,c)p
=)d۴P%qfs$_SS;]R~dSM-se3Q)FHnY7"zN
B֝HXO(wjĂN5*&ƛbH<w9Ӳv}HZQCJu_`hJڇdaե`EO` ba7Á#ߧR-Gz`uJ0G)#+Xkz߈<@ 	mwM&69	CTidKtFP3uݓ¾@NmrhTŹ2w{hC@23њ"nUUuc D<Isf6)#!s%=vVWg\4znk^}2oN_#}lL1	=V7"s`~Mߤg]J	Nz]y7NfR}Nkg=
b6T$Ӷ5ӞprO0=	#>	'9GHP76=`|MHVOI=3g6Ut.$P1ψr!Lj(1\H0/Y":-&GWjuun QM"($,"U`]^w	lh	젓u>GS=.ܭ~(Ju|TgȴQK;?jX1Gr#4p9nîj'9.wUqcsw.N}~1fXUCaטzuUӐ)E{S75ON";`sPΰPDNÉ
5UP؉'D1
xC	C.NI'*rV;qVtb1:1,a(cXʰm\ogXCN8؃Ue؇x7>N|8f0<EwcXEd1qPffS*z	(N0|_ax$)2|Qb#e8}*,H>WDbZ|#;{}D{+DƩbs@&qUkÓO
*[vVaؗS8T$CjE#!Z1pc|#yIM`oǢ1<q~$RZ˞ E=@DDȶ|X1<7}#_Y8%.KEi%
/OKaH
K#e=(U*Jq$KvI'kO%W'In^&esRh1Kj1Kj=q5t=DDG0D!z	R<Bv̝e/
cfk.iڥJv,,U^\^J]\ӝN&95ͱ7%%%ı1+p\t8@37YXY/@^ā(@GǢ1|fl8~Sowhv͡QaxjOZP/+l:B^F1^jE(5Maih8~8E,ϑhj6Ű:@"z-a&nB2;}GV_:3o_MD?,U뭚EVQU2?0J5|N6")Lm҉ڲ
T&Qf&AP+']u*e.t~)?}͚/'fz*RIUʌ(Uk6y3tt)7ٷUײ>D!oeB;T+kMq)lTEfI/ryߛ}B&%C[ehfl9ҳg5_o/k6s0R;
nF.,]SWȁ@ٚHYV`Yx+Xdaf)809XΥ!,4t5T~pJ"uEGqzߣc~RYi(	d ̲D0@zK#?_PKn"P	  ~  PK  C:U            9   org/bouncycastle/jcajce/provider/symmetric/util/PBE.classN@XhYT]GnQ"@J1m!ռ|(9@Ko9霙/ gjL6fʍ:dR4푁\{(ji,(rnKq[IArTI/+lqQ8)aq<A*FTgh}[Ϋmd;lc`gmmNz3:sZy-׮K
kbnS 	2A!aB%q´K
,+b/vmmYz&sٶMhkxg	ccR)`pFGQ_G|]|	|}Fw
>'I߼a߼oޠoސoȟy5᜞	SPKx  G  PK  C:U            I   org/bouncycastle/jcajce/provider/symmetric/util/PBESecretKeyFactory.classT[OAKE.R/]r(PPM$ӰB6샏_5j$d?2!379{wٞ? T3"2QdKZ<gfb 3(<MUA73d̬p\&aeMKL	Kia؂ż0K¦p<GQ6׹c6ݢP+ku0D5CL
Xp'*+6Af$"y;/,hp͉.|zίaNqm\3'v1ܮ;'Inyhz+GMUaH\1ĪPpBA
RpZ1q+be͹ccTeaɌ\s6"$Y/~pƼGԞv"
a%dO#f"Ӈ
\apUF?O*.DgUSQ+^Y	W\TJ1tHʭytJIpU.[BO
"kAzmZM3t.0BԤEc"Gж6rce俎9TJJ`<[Z2}pvא:co10|%ĵPu	Z_°RJz%b%%oi'gbop.muN{Fii
5co1Mc}۩h:DP.ɸFD1!lo
mۨW>1*SɶGL"PKvŬ
    PK  C:U            >   org/bouncycastle/jcajce/provider/symmetric/util/SpecUtil.classOJA=7]o#vyb!F&AGc5;qf7N6
OX"
̜ùs
fmZw}T	#̄RݎV6;2mmt8ZT
OMytǸ/uiieK})Ҫ'6f9/"{"N8^
¦pzJFӢdKi	SH"Jt뉸m
ˆmcFP-Կvy2*רBןUE, r$j&vT'
ٓQ'@a6H-!0QVlM3KtFP|ya%r%fqe-u˷''X19]b$Yb	~i4PKlm  l  PK
    D:U            &   org/bouncycastle/jcajce/provider/util/PK  C:U            =   org/bouncycastle/jcajce/provider/util/AlgorithmProvider.classO
0Okߠ.YEWA'4Ƙc9	>%Ug 0BP6pSgNIB'gO[ŉ0Nf~FDDHvtұkFY#jy᳀-Cxlf2شQ5Av+ȓVj"wQ/PK0y     PK  C:U            G   org/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider.classVrD6@&P(Q-:
)mM;0\pȊq gxHa.x8k˶&CB&:|Y;/ .cJ2Ș1#㬌s2^1+れ"daS2WMtrmjM1/w4G7\ùgXp))CG]M#;({nͦ] 8vA!ϑ>=/ƠhƐ(Ôxu]F,g֡.heOD$pjj[jXMٰvl7DuͶ@;`(NSݵ~kmZZQ+ۻ-Cwk
r=S$F[
M궵g6uݶa75:af}cjivHmD%]b ٥'re796
Zaq+|*BkSGϦ-t%?e,h|]:T8&)&/EX1$<yN8xOƯ/t"TBNJg!IʯE"Qǻ
.0ᆂE		Sf];Y\Ama>.}q
wfjWPCLW!~2`1G6M+5U|{5xDGK?SܟYx8!&o^:A #РkkUVc]M,=R1n&:L~ d?|@& a>wc09|7TfdńV] M#˱¡r,
~}/y®a'lѺ<NX>NXyqfal K'IoE/Eŉ^~	|Hc՛
ޮ
I{RnU{uK:7̞gIћ=1̘rPK'&,    PK  C:U            F   org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter.classuPJ@**'iAH1Ђ_p9p1w~%=c-2;'kls'+ƥl%iKRq5g=[IS,/Y;
mcTSdjg[ʎ+biԼkZv]I}쟛wiv?0Ut@iysyK/M֝~jm~HSD@0Q0fPKҢ   z  PK  C:U            =   org/bouncycastle/jcajce/provider/util/BadBlockException.classuOK@߶M?ZAz[*=x (o7KܸdvSo<P&xaޛy?9̥xKAN}㌭ؚr)Sܰ$yz械Rڤt˜o8[Z%hY-^DZZ*v4%xG
Xһ{B,nqWќ`8!h4@;A a>Z3CpXj8Msutg5xO_PKR}e  u  PK  C:U            9   org/bouncycastle/jcajce/provider/util/DigestFactory.classVgxU=dg7KvT,tMB h('C${`0("
(w{y߇sνͼnϺw _*QqTb#T(CTǪ8NPTTTQb*W@o7f4Ec]2NAaӤW+q鱺Q.yu5
.JY֍"$IQ	ouwOp^d{Ll!3άQ{瀞HO%(ӆ53GkT$~_εs^ 8-dl=l8'n1tLf!^HPD~"39l&f<{~b;+*>"ki6>PNLS֪/cz%j*Y=6I̟w'|Ϯ,HPSf*n5&Kz&nL:6ij̚L#I3MowB%)sq~V񌎶x&6aBS%O/Ȧ3;=KgS%
jָH	#w~~ff^!б:o֊A+LGLKK'<SyTTFz1B¹!BSC!aNpa)(33crrFLQA9
VTJ	T~4u]P|{ay
,wՒESsC3$<0q0a>pbD3b8aC=9
0Lep0\EaD\E5C
C-H:Q'1f81cNe8
Dюk7C3<(Re1<ÓO1<Fτ71pí1pÝw1pý1@lIC/D/22+2,gXo0t2dVEp*FdX]Ks4!0)k=]on70gUO/qf7qM7ݘpynluci)BA T9Eݪ5p%I+a_[{"uZ@ҟ*Io{$%ݒIOW?.HפwJһ$-齒>IԩtQIXA҈ܶS[
(:RJ|͗)R'[<3x{R˥N:F~_!u:Ho:INϯ:J.?L|	
r|	0׻x;m,l~);Tq7`+Fj|
EmG݂Wl`+ؾn$}
҅
0WOn>-{RV-ӀHE۴bV*|Z(.hV"A-#4TԫSUPZTPmNDPoK]ZK@A-l2AZ$e6k
W~
ʹ;tU*s9ݙrn3'Ok}s92E_ʹߜ|9]d\tN^{UHV΍WGҥ:;;}|@ʿm}GߥR~m 
h}GD#!7yq@_PK˻ҟ  2  PK  C:U            9   org/bouncycastle/jcajce/provider/util/SecretKeyUtil.classS]OA=ۖE("diQ((+L1>v[mݒ?EL@41<o2;-73=̝_ 0e$q!0mXm3MǁFr.I,w	C%9CйOLT'd*OWv
,S&#mԐ^&Vfm]t;˳vʭspOd%״EyhQ\9lU0ŬΗlcqeV[W*n)/MUVTmAαXg8g(/Zˈǒ3B1mfxuI*{KeS_ݔ&!,]e	W$tJ*K5	ZSUMbL]$єCG,EDT}z):YetྌFDd4$LF|2n"*CBLFe `X@\@"0*`,{PPCp!cH !ψVsucfMO[}KO1p0>C<A0p9AB]{HpO1-N~M_Ow9/Hwn8CuC5أ	3T3O<YWePKX=  7  PK
    D:U               org/bouncycastle/jcajce/spec/PK  C:U            4   org/bouncycastle/jcajce/spec/AEADParameterSpec.classePJ@=6ڇh#KZ"Et5DXɅZqQ*ssυyx}
t1z0Vk7;&c`4Ү	ǡ-8nHT<"<Ŀ^ULKu&7W*t+)\w#~)N͐=FYxJ#xGxP7pۈ"ޏʢEF
9yld1CLӘeBy]*fH?KTS/Ou*N2	Mg>@$0K +N	K֞<2O_8XKdFۆI2e'oO3V2>PKԂr  >  PK  C:U            A   org/bouncycastle/jcajce/spec/CompositeAlgorithmSpec$Builder.classT]OA=C _ *V)mu<Hx tԭfw6/0$wH{̹ٙO kX(C$:o7lVђ]qj!ƅA`E~p0Ν]9ɀaܰw]O;bGf١昔HðZ]5V]ǑWr瓐ue{.Dw^*bkyhwS`+Vk)xiU
iu)mV[ɭKROu'uSJ7pISPCQ6]RV
4qi
<U⬒H/.fAosx,%V*=I_^ư^)]嗽9W>(1 #n6fsHis',ǐ"3X&Mg⻮+m>ct0gEʙeRhg&ԑ]#d	gN?ٮ
cȭ)f3ߐ ސc-ø}]`İb-h1V`3S~`v$C#4=91B-2L[g4lε?$}UDPK,at    PK  C:U            9   org/bouncycastle/jcajce/spec/CompositeAlgorithmSpec.classSn@=.&ƴMCe,O)'$"EBqLDylH" >
qQREp./ av3H{"f`0jFc`Ac-P	D_	H㟸(p:=N)g<tݱ?՜2t=Hae0$UGTin'"sQVJb\lTYי"'΢~ܕwB5P6`l2pdMAdu4Q#ڋby֙^P,^n=cg=ަ==AHiZ<YXԦ
Kka^
64Q*j&➉UlksVܥi"BPؠ
7.I3tKNx<#lGS?B>y|8_7)QK\+Q_*9'iwޡ7*
PK>J    PK  C:U            8   org/bouncycastle/jcajce/spec/DHDomainParameterSpec.classTkoQ=,PVmyha(ZkkLjLHLJ7)amgA)& qfwA9g33%ۧ/ r8bkڨnuZ]7vG@=h#v,z,"*i{]ͨ65HMިAh^V~КtuD]Q_4_7eck;?Q/ZYǼpƴ8#,_/խj0^X-KʹX|XSR#*ұ
%2;h}nd.7>gch_{qCaSpȐ107I'd<^)1spaaR^ec3(	$CKQpA/vsWG> J,;7A<=<OMhxYI:u5Uk=lqnA ث$)Α悭	I<ej1т-
4#हGE[iny%
z$XQRY%"ӯab+k`:OO'әwvZ"V:m'!nSA,MJPK+/`    PK  C:U            ;   org/bouncycastle/jcajce/spec/DHExtendedPrivateKeySpec.classQJ@=Shk*BSѕŅZTt!ݏ%&IHpQ$)<.ܯO f^Kb\ni$!Dd$Ivrbo($]S2&Nl1=-|~!NKtth:t73V}!^\?fY[]9V"L9,XHZK(({gC+Pf(JTϰbKM;+<haS;j+@&ceB.eR|A)PK*H%  A  PK  C:U            :   org/bouncycastle/jcajce/spec/DHExtendedPublicKeySpec.classQKKQN3M5ڄD&܍E%aљa
z@~@?*3&*]|{.C:f0\Rr`%EDb8bŽpš
($.REz3<yE"w/c)Fj@/E_7=QC;LdMLs/:b(Wk)'{+r)gѪah'_p[8X UKIbذ
$mԿ;
zl^B]F:vC a:^Q7QzR9Jl	PKP"  ?  PK  C:U            3   org/bouncycastle/jcajce/spec/DHUParameterSpec.classTkOQ=Rj+PQmkU<|Dv)f%_i"b4я&(un	ٙsw xޅ.2*õjaI7ugCFnͰL0-r"+lnr~:ŐMrBi2N)^"-
]+%2hl jo;S<g0a
nb{yaK73[:A	O$^p#eg
Ya:5std譑GBsH`N1A;\F3(҈sBKEaޒgͻKiegi`jEC$4~r&XF"eۼg[r\evtȺ`Bb(

(T0`X EKJ656ެĮcSät$pLxY&/-VT7\W7
RXRzN0ҋ1(^xpǋEPkpy|
{уPexx Cif`<!,H!1Owܚu@oϽiC``NewrVbxԜEpM~Q=Oaɏx5ꐑ=Ų;Œ?ŊS$?R13t.n
LMW꘨t~h,N֤JXPzg/7hh%ZjjlrU)^D*>[
\oWp_*pImPK    PK  C:U            8   org/bouncycastle/jcajce/spec/DSTU4145ParameterSpec.classT[S@=iBH  J"
^haF2*,a))iRxM//</9۳~4rf|ACjh17d@CHUͶ{\C*r_)q[0=efVUUDU1({2O
T·YŭՏ;,-V[,*ܮG֬2Mm2\rQ2싼W<ft^ʪ0kneu-JgL50mQ+I*j=L@Mf[%W2LՊmURE
IudjDAY!Xo\3tE%
i
b.fr:BČ_ܱN~<Ij8$N!S|D48x˳gwO3YhE7C3С 
ᚁnc@CpS6aX#1
&t 	: b\UuRs+ٻK6]b	SyS٤,U=(Fa\HDq01r4hܡ1y{>2#<GumEbkDzs̠9fX
SM~Bkt%?oؙY0A_yf/hPKnC  x  PK  C:U            5   org/bouncycastle/jcajce/spec/EdDSAParameterSpec.classSmOP=w0բ08(70h2C11Z;K;ёHQm}Issܗ,
! cK$VMe%=]Մ3'6 Rip0("SN1W<),t_3Lqⶡ-K*FcW^&jTXx*4U\6ƻ
҅ːleꂖ`zj&4`Evp:[!!帆4lm_u*P̴kuj|iB%TA[RxUJJ-1ְ]9mzu"q+q	C%D$H0&a!ѽ/y_&ɣ#'1&O;zd3ߋ?Cu3 qUW 㚂A*C
!$#C:i$eL`A%ɸy22&p2&CqVÏ+^?ⵧ|d9MfSCu4 wr#EOPKN:X %aߐH	/&NfOm!&1}H_izT0ivZL}EZ_PKR|  S  PK  C:U            3   org/bouncycastle/jcajce/spec/FPEParameterSpec.classn@ɉ1mJKqC)`;)	'j뮌kWw$BH< ]T_3;;'`([v/י3T,`KլJ4%(8ѱT0C9?
>048:IUD~Ombgy2#>?n#=O2Y) 	MOn~L{<ǂڿ2C'N|0vC2OddZ{"{:}yn&	3Ḑ(&pIütg#
\g
t``\3@IIUf@]e+
,㺒U%7t,kJnTz0*Upe=2"ShZͣB,Pwny3ԧ L"*g0ߘcǸ\)52ptF8o?GUb,M}*9*'Q%PK~n    PK  C:U            9   org/bouncycastle/jcajce/spec/GOST28147ParameterSpec.classUWT<
FeCq8&, [K؊-BQSs<Mʷ҃[O{s{7%!![Q\rQģI$34&Yjf E'4ӰRNTL 	բ[+
YunZTU+TD)ʹ-.:'0/HΫ[<NuF[F8c{Hqnqʭ8L1YdвGz=ZK|mpn1$;4[677mU1UKWu̸zy[߰-'
gB5,6-fg[ q~E)Sl-0C{-̪ah;~me=1Օ5liM|+g
(Z$ǵvɗĆgwxص=Wʣqʹaa[aqOY(,c:09
}99UЏgSkԷS[ڴVB>7-ᦄ	$|(WG$K-Aa4w}s;)ԶE;ɹ#"Wt֋3oP{:[O1uByzVR/3wԯuV+d|eq
Y	nOMEUdbܜ.LĬ+xs2>ƃL!#R>ŗ-yŘ	02AF41jL(|}|Պq|M2eerM:|U}I]3=Q."h>oXBu#6-"<MbB'XO
~z$}'ЏĭUqGJG=wVjzD9*Y[p'/.2S\%HNiˁlBvD}QA!jQڨ Wy].1S3bt|Y4{F7Oϥ-`dyfyvj.GEPHT4* c"w?xI8{o8S7śB/lPKC  	  PK  C:U            =   org/bouncycastle/jcajce/spec/GOST28147WrapParameterSpec.classUkSF=d#$MBJ»4WbJh
Y,4m7u:+P9^J  ~K.h!H>ИHf94%Vmfx!a\1tS&hv6Lf|qT#{sh`IeV8rU*RTI)
Ykd4zh]T\o`8<R9U۳)
,9h&O:)Eŀl"ΦRԤaldRVMoj[QmOLIk
<G75lE7Js\u=!\U8W\[UYm(̡V<ݐfdwcN9|K4ar4iͪJU]P%5$XQKa}]WOu=,Ɏ'=9$$
KJ%9LCgA_ˎlߓ;Ŵ]UglCh[ʼŃy.ytGGGG^fO5Clx2=?,8ejXڎUЗXlC*	YևоNݶzaP+DHXD`pgZ3/enN5L+	"-G"a61,2x	BXbs,p+1<a0aM|1R<cE_cXe#]UkZdefMPA5}XXFim$4Jb3z*}@6IH`/`?&nI!ۙJIiHiMr`G}=DX0V=75
*4m,P!!,GV`%31b$3ht
6Roln>WvoށAy.ү:U?F"Zxr{W,Zᄧ#'Rƛ/hPK$Ƣ    PK  C:U            8   org/bouncycastle/jcajce/spec/GOST3410ParameterSpec.classTRP]ᖶQK
EłXAP:!=Ԓt__
e|(}ҖJv>{}9 	lCp䝀X|"XНE}ylg[ԃ,sYղF)
3z^@b۔o#T$z&YjyخtmU!C^Zi;;ӉX,7ȥx5s29G0
c{xoy)/JI5
Jf4+XQq]6*T4eT0im9ʒ[i=bhUMSTۈ)̲e*L:l3]:P>U-zYm;W-GiW5Y5[,ޚA7E1$ⶈawD7[nZ$lrz#o0IiڪnGW/u.ꘆeo	"Iqrq.tJ	 !"YB/>=1
ŏc&9 Ff8<,9])3Oެjߪ]uH>FG'Gm6vWS4хZsp_?\7^
V<+3'X'X'NPE><)Α:+hvuE薿aA<}͓^~	Ws6hpzDuxq$fGn74^	
PKj    PK  C:U            ;   org/bouncycastle/jcajce/spec/HybridValueParameterSpec.classS]OA=Cۖ-QP?i"~h&`4)!Ie%SC40?xgRD`Ν;{νg;yc!n2󅭲
jOoUڷl\aQD+,!"5RX>VQI[ue*|GHwji{avp"lwt[7_9s"/,+mϥ]ƛjSXԳnjlu4KNݣsHےcZK
_۱Iwnaޒ
32˫`XYZնx a6-޴Dvշki?Qy;`U*Waj0!aD%
.k*CqCX:feɯv^֗əuN9uHHᦎaґ@~鸨 ^ЧCI\GABRt
9Q0n(0S9:ϼ49k5]S׈1L*F>	ݳFGty'|BƌC<0ۈ>>},|zPd$Z6`SDz,("J&$~ic.\Yň`2WLc=Tx0l{f/PK.~    PK  C:U            6   org/bouncycastle/jcajce/spec/IESKEMParameterSpec.classe=OAOAB,Ҙ( h4Z@+9nbD3<f j&-j}O6hʡxY@2:R_J=fpJ<]W~(S]]+fR$ ЍR~GwCޓZW$3쫰ުA GڗnW𮐓fqgod==C>ߛ׶0oa¢%dl1kETY,cń,
XRE	uu'CJE$ȃҭ8Э$1%z9HO
fa{M<B-Rf3+6|6yLHQ~PK+Xr  '  PK  C:U            1   org/bouncycastle/jcajce/spec/KEMExtractSpec.classuRJ@=cjRHJ\AO8ԘT_)X ?J1Uܛ9[yx}5e_0ZvgUˮz'eEaHFԕ8Ax	M)kI$k=&fXn\I9rT˨[&dtX9kŅNw_)ތrY
0
a;\+?vf{P"Sj3о0a kb&F1iD2lRR!
X~]I΃Ά-KҾ:R0Z3TWiS3JVZXt6[XzD0,53IV0Vۊ,)J K)OPKy    PK  C:U            2   org/bouncycastle/jcajce/spec/KEMGenerateSpec.classuQN@=C
VP-niL1.@%!a?ZZ&&~e1,9z p:ִ3/9Cٕ#Şzd0M'c(;]nK(bBpV!=Sq`?]ЎbFPLOT _p_yPZ2J0::r:X}{{Pl
*Mk7a]yȀaLK*[ѽ!0L;f꤮>C:5hQ/o8[3PZS_Q{^7PK6    PK  C:U            3   org/bouncycastle/jcajce/spec/KEMParameterSpec.classmKO@K
VTx%o5njy]L3yDB2 af73Cъm!}8a`
.m>9Aѵ=9xOy""ԷmkhusG013։=pC<ʐ t^0cGbȭc>n_\-IPUld/GņT>Jy
o]
Y$5dӠ !6
PҮ̐<8)@wClХ$q;dkyl&f{\@_(ϙ3)f}Oa
ETdS/t:ӕ8oPK7ZtG    PK  C:U            5   org/bouncycastle/jcajce/spec/KTSParameterSpec$1.class	1D'U^%v DDamoH[`%3<_ T,V:	|hUoN?4dYMFWjsC:x-?
qXZc5A~t ˜!D^3UPKj'\      PK  C:U            ;   org/bouncycastle/jcajce/spec/KTSParameterSpec$Builder.classUkOQ=/-]KDڊZyhRb$|0vKv_ŴW8ВM:sw93go? cf^IFV2LÝf`i4u6܍Eu[g_5rYZ2ȾʮC
u46TߩJN5וV2m'%ܖ1>i3iÈe+֮ktEųb,3KnƚDNًĕJ5qMJsMMt5en)J\PA2ļ1b"s])	VIxr7t;mYt;"CT*F,B899$+!fV6-g;0P:K=OHdggAZ&J{ʴx:msA[J؋,#)M-yrvԬKRa#F-5g>V.*]IzpuQ/%\	ܕ	$$4'VadaQF,#DfL :q?<f2^Li#m<`׵6MNTДqUmkAYDOC=ZdZ&'%O}
A]OAbE<?	D^x"
x,gQE<- %DW9(%\ ;)b7@ִD)h%>\(Hʟev` u
8Dhh|!z<.,O<fg'Ap{dPPKU
    PK  C:U            3   org/bouncycastle/jcajce/spec/KTSParameterSpec.classTOP(NƘt*(1
"Ƅ԰/<2:J:}0b}8s~~S=p&_aWzWmAB"1,s
	Â0F?!\()هC·K87(몥
u
!<niێNgZ5bCqӶ{զ7
t]vD"Cy2FmZu2xmߴ-;3ZuWoL%\0'!!aABR
Du4ܚc!Wx	]{vQX.lXZ۾yhr(L" }I'2*ҭKUO7{21-&$/dı,#,0a(Ha5JQCAm.nfݶt	m5!$I&OꁧȇD_%ZQzA*Eb]uQT]J
w"]A|A9O(Q/_~9K,V.(
2d<C<qqH\:
"(ΰL%44tPK,#_    PK  C:U            3   org/bouncycastle/jcajce/spec/MQVParameterSpec.classTkO`~^QVӱ
km"	l>u֥Hב_i2Mzޞ\I~=1DUaV=?M{0#崚a_xSvKx!1v*mT{G#@zɫql^c2aC\$.0.fp6yi٬J[QR[)ʦ2hڢ֠Y'׏Tf(ܪQiuV2۞Íe-NN	~ǳunvԺ}w0/aA¢%;ާe=UۤIxHOu>C&]A҄paNR2b
$d! )BL,"
Ǫ=#"4 S(c:	޷>sQ%G=w
3427i9
|zC/?WKȞ2a3EvIHɄy=to#ħ^,?Fy<m6{
SȅE:1/!,cu
чM7Zb 'CxuZ^_PK>A    PK  C:U            8   org/bouncycastle/jcajce/spec/OpenSSHPrivateKeySpec.classm[/AӪm]NKbވ!5Y$i:fk;l敄HHxps9sf?_,`<88b1C璫\L`ޛe0kR&Ct~P!Hю*[WyJ4Rk!kd(K\ݴ5)u%3y-6s~XeDSU"䷺A^r-r
u+5Qnj9![#]22f0w~Wu@E|?M!%`?bc^5v˞$ɲٴA4(eG报'&{-[A$dNécd~ B}+XCwPK0qv    PK  C:U            7   org/bouncycastle/jcajce/spec/OpenSSHPublicKeySpec.classSSUd.a-DCk5jEI1NśKXzٍ78}?᣾*jcG|qsؖ63ݝ=_s=ܳ!Yܱ0lᤅr&-&C2_!ߨhn_]-lTH\pja`'kMT+	rr6˒rUE~Иg[o7ELIAÐ6kŜ`UKތJ[(mP7h+:daq{f.}7wWsu֯M_H/'C:"ʩ-t@sO\R4\]W4#70'"]-/n	hWIeFXIQv+޽Y~iIL慘e3R?-p3!-	ofnnJ遧c#-dߪ:ζHa#cqlʝx&ΚȘȚxNU?c]oW`8/Խg[Ni^[/TLqe#8aÆɠ
i70m36㒍1 .&撚ǵ4
d1"dA(JSx&}{6oL%UХ躈`$H)zb k̃4oFN.fQGvӭLw~|IR#|/XrX^1f 6fhxj~8K'zb 7s+]}|SN uu&.x1?H3Sctz8H:G>)}H0D_>Oco(Ԓ@f8j-՟QPK-    PK  C:U            0   org/bouncycastle/jcajce/spec/PBKDF2KeySpec.classSmoP=W^JYucsmE?,[L F˅bM(㽥j`p><soo
C'> n*viX X<*Kxu5Iy
C0o_4pˁER=~Qgl35v+56lrJֲRLUʕ4	WRIǨWm33:sl&[巴ٵ>AC=~M[+m8w:	%\0/a w0gY/=6ykOQL$qԚ[]mt[|M53{H4Xn-
XR5$DRÊ`i*
nȸXĭ8-Adxn",0O)Σ<.d7rdr`%s#g?B@$z J(Dxc~q:͹XH>wϱv	PK/    PK  C:U            4   org/bouncycastle/jcajce/spec/RawEncodedKeySpec.classUOj@=7Z[Aw>ٸFW
p5CHIƖ~xn{<_ zx/@xiZ~`I(ڎ[ZB#?RZf"i%FFlΔЍ@Qj))}ws'ԛi޾&s&W)WBa)4PbztSy10z	cP~UFbtktE\PK_5      PK  C:U            8   org/bouncycastle/jcajce/spec/RepeatedSecretKeySpec.classmMK@I?bZ}ÂxS(z,1!MBW
'Pۃ]؝}wf/ Gj?%=<؜Fy9is.L9U^Υ!t$E*H+,T,L.Jmp叙Z*0bQh%t `jcǆc%o6_0mx::m@vsBp]aI7oQ^C1s;pr+Eh`oH7^V;+ۢ?OnPK#    PK  C:U            3   org/bouncycastle/jcajce/spec/SM2ParameterSpec.classeQJ1=YRתOmE7E x >iXSlM(G냠dfΜ9L>>_b1JR=b諜o%a&	YF
'M 40nl#m|W
cB6k:A0CCmvoj[_QePd'Ҷm%):RQ'a9|vJ@y-)ZRTVo3D7y 0C{zȵi9<2pȢ/&QdE01Mc4B
yy '(,wcD!?^:]C0S{;
/(#fjKO@Ҍ!/jp8FRlv2U"]PK"y    PK  C:U            0   org/bouncycastle/jcajce/spec/ScryptKeySpec.classuRn@=&q.)}@y:;D@)R7YMt#{rHX | 80s|9ܻ_ x+^8gz^^7a;gMgAJV/Yw}#y6CE($^QbވXSFXˎ*}±y˰GUV:8&¿\MQ|P5PD=(Iݼ(9TIixQ4e*Eb'RLdNXyfc&^^\]NdZ;vDŪ-;Pw%.*u-n[cᮅ{
qx@+ѩ`G6~
3˹YN[9;4#D_w3o3r*U?>Fq"bW}*kX)Bly߀BTRז|.7PKא
  3  PK  C:U            7   org/bouncycastle/jcajce/spec/SkeinParameterSpec$1.classA
0D'ZMP(Sc"IĀ'<_ VT,N[:	(:M1YVFѬ╵jܻpJ%@b(08m}]tG9kK1rdvQv3k*PKx]ܗ      PK  C:U            =   org/bouncycastle/jcajce/spec/SkeinParameterSpec$Builder.classVSW-ylڈբh|`lQ1ג\²f7h~t:ӯ:)3:ӿI՞I !-v
3{o3(A<σ& G-/p;
pSu:!i0g19gUc>wS2XFri&GeՔ3dEgdMΚ[@%O3,3brO`wwp8z~r۵涨hYVp
Uja\Ο:"$4{zzN3=I鬪5&#[P,lgs]G,ed<<,*Ոd2Jn"k֤aʂ=61|-Җj+`m薑
dR[evV&-be28Cts,Awٶ"Ebэ#CtԓBZcBҬj39;tպ5)mPy=rƩ%Td\B1-E\E4KD&癪Tz7+F}VVYp&\H5iߔQs
X:Ψ<T㆞a9RĕiMM,cu2
ѵ|ȘdRv"vxXD"dDv{DODHD.G+:/`k01Z5tdh	W.P%`qDM {I^8ؕ
+=o{Y"pݛvۃeuOy͆uCz|)5lп1Sm16#5/dT~Od,AB7$Hp
`\B&$9y\Q.xBBzpQ6\ָ,Wx랒|^#Eʋ`\h\<	{q,9.L.,/N!!0İU/7lNcA"ŵ>W SF^RLY攦&/E#}4iahxh@{*/PC+l/	HNήCv{D2>0^Gnbm>\u-:}~mgAu1nIh:h]yr&Zﰹw[Էz)Y,yЭn87oS/))abѹn]SPT0
Z9Wp<pyZP/v;
)[Kx).?tr	/Rs	/<
)k%Mo,<^k"=VsE7֫%.@] >1%1wWHU骢ZG4kU[*Z_9@-DK9狈 󡩉y_}EOF\PK  
  PK  C:U            5   org/bouncycastle/jcajce/spec/SkeinParameterSpec.classT[OQ--╊ۢ.RJ	CY\vIwk¿Djb|GJH|3͜s/ PaćÀ!Rٮ``&C].TJT5Nl2aÊ(VYXdJ%;g0DCb7*-UKU![XقYVR\ع+bzd*,t:o9+ݚ=bR5-2=ע!R˼ηD >!1i46Vjexn-UZUK4Mu;IJeGhck?Q3N*9pcolMԪp#RߴDb声#2'd3'&';l=[jn
D9~u;gF{Wl_ĝ(ц}RDФJ1"EZ
N+U0ࢂK
\VpEU\"C#a8G֏UGLpQ N$19ixp5iWCO$3
x>x.*ҘU}V9ȟ=C쟙&obnActz/|\$wA ~&$-C!pI!<ETߦ́tl4	ҁd &"")ӌQcz(7ɩ=0
OafZ?sabM
 ݽ{Xb~}PO8O	te\к2vaD2F0FgD#8]G /n9!ySgXl{*>hPKs9  #  PK  C:U            5   org/bouncycastle/jcajce/spec/TLSKeyMaterialSpec.classmR[oAt-zvMcB	5]B4<4vly?xf٪d;;d? `aVFvՇp7
0/5:;^-9::N!&RIl{桐3d"p*rYĖ}('+.cp46{;NmEtpex$Mi7^ǃP ^ezySilB\aNl>ł߳ztw+/LLC5[gm:gNtepCên1ze#e5tQVMi$t,#CG*
S2yC+cжwBo{2ܝ
lRo,O$Ny|
%ₒyRrTO#ܥ'5i&Ej|i4hќcۨ0J3<cGp'\%۟cJTn|XbgnsK;t7PK   ,  PK  C:U            9   org/bouncycastle/jcajce/spec/UserKeyingMaterialSpec.classmJ@-mګ[wm*dKZ"
E7]M!&"ϤM
;gf	G^OFdʒReh,3ws\
/%2s/fhQvRo_X.}ۺRϬH$tԊP0!Ip5
_G'-WpWEꁋ$v<k<QvzҮaMa]ÆMh*QPYZ*la[lWG;4"S-@?/!Oe9R9_>@-s=s7tLۿNo2ҲAK/#PKvNR    PK  C:U            3   org/bouncycastle/jcajce/spec/XDHParameterSpec.classSmOP~`tE0p(8Pt/`n
9IA4!`L̥ή#jt$wz clsysy??~ȢB_R1DroٴMo\.л.P̫Uaa
+oܪ1a;(dCxcj?_|Y}jqPK%n\+lo&d"4T\6F;u҅ːlfj`zj*4`Ewrtz-̐r\Cq궶g	Z(odZK:3_~dS5}96l̔+hzCOsۮ6=<Mܥ		C%D%HeP;w%0$z4y sD[S6߰8톟ڇƔ*o5q7A\q7d#oaL"".c7po# N5&~\1>;Ta=S#t"@ŷs
EKPMNZa
,~Rw>EZ	!&(	^	ŝ8!Ʒ4nB=B/F0)~`0A7>PKl'by  M  PK
    D:U               org/bouncycastle/jcajce/util/PK  C:U            ;   org/bouncycastle/jcajce/util/AlgorithmParametersUtils.classKsA#K6Kļ|cf	+U`堂IIKN2ⲛZTD>~ ?eٳ{ ,9i1$Lʐ4j9]CBnĐg2!
)CCt)*az[]	ZE@`XSnzo'
=.սfG8t<I=CW؝LcxkR¶3pxOz=dKJQz鉩Qu{JQ/8/]|I22aA!aQÒêY?!CoBQ!آlVm*挱o.i,X֑$b7#ʻi`p[*:pOMj:6!5+jNjQө.nH|u#N85∩VYlE0
w(@m]/ůخè_֑
yO7kXFɕHI5fpZ%oxΑ!
>!	2 PKҌ#	    PK  C:U            6   org/bouncycastle/jcajce/util/AnnotatedPrivateKey.classUmSW~n,b"R+-T+
jMPA񭵽laqٵɆ~JLG:=gw!(̜{Ϲyy޹ߛw F!8!ds7]$Е=0,Ùg=F͒NjuʲlG:m	$ O-GV㖾AD_MiRX鎀JvʬuYY#&vL|JP`^șkiuY2U+^^5wC
]kRōҝ.Mpafl$W2Պ |N}b<c)uS`ĮJv64pLUM|=z5X\ydu}^νMpjðjؖ[1؋NB}Mkͮr0b8ñpR ]n8QotWnHD'ey')o =º:+s,{>lgho#XXPdF[˃::΅6.*}Nр!`DT[Rr*zWqQ(*KEEI6Vb3&*.8&Q`L)\Rq? 	6?%plf39¦ķfIlnET[HYfEGjH=~TUDndi;bDhMZڧY017^  S))S?;KTiQ|{/1?M>I+Z.+0ӧhLMFOJ>_x~3r%|>,,x(Cuc5Tm<.z-ܟ.o`e55~G(WTH+؞Oţ
-2
_>bԟřdFȸ/\7nd<
U6G
66<PK&    PK  C:U            1   org/bouncycastle/jcajce/util/BCJcaJceHelper.class}]KAu͏LMԂb	+qEe]JB)!6g;9pf>_ `/A\%X95sFj_۽6Av%NL:sR'=۠-=4pӢzYsa]ѿտ9^#h߯RQU*)ʕfsw-5hӱͮQ[
FZC
+XsQ$U*$6T#{mAo:_
kY%YOp22ɮTDi2E'?8yEng]J2FBBA<*e|^:ۏPK7e    PK  C:U            6   org/bouncycastle/jcajce/util/DefaultJcaJceHelper.classk[G+ȴ#UE@!Yl
%VӾO_C$lv3gݙ3g 񛁶Ě[c
Ze
gIኼ{_:~5ߌ_MKO
?{dҒ4}Qj#H޴-',

tBv1ng@8#E.8K
YʸRC|WPB
IagpUǒԮL\)Ig?(rU8B>q_RO8±kKl3'%-z@T/{Vrp?*:emU;ݱde֩QIxgPÔj@mjǞ
?.R%+#D!X/hĢkjmp~(`$\X.MeQ܎i_0wk k.-rW$VisW<INN&4J17
%*[sܲĖ%͒o)J9| sE5Ğ0pIS00|0pyCFF.3\a0^owiŖw#%xkH;l5Yee~<ؤkAb\nElxN4H<6hS:T^ߟ7 ҙBˊ_A[RǨqei1`t,*̲2+$y̪2)e)X5e(Tgʬ+\WǇฎ/9>ก
aqL"qlrF
Sr܅1-|1=9B~p,R-4۱A+ct+;Z^?k{%+}
zsm'x6,Ā_`;c@WY<#X}HFuB݄y5>;x~?ƀ"ubouE
sZ#o]'$QOڅoPKA*0  
  PK  C:U            G   org/bouncycastle/jcajce/util/ECKeyUtil$ECPublicKeyWithCompression.classVisT=jTUt'ZӦ.jRZӅui6HtU*KFK\vʾ%e@foPn=stӹW{ߕ <Fh`u|/);.'DZ'3`4q9ZN@#il<#
Y\8L2'twC*PL;")cY҆@&
@z~x<&546CS4[~&V`S}@8i0t3C)Su(چ3-=bTCcҤ}lLd_Rқ0LT\/,R7|KJZASAgmV̸tk'Cf]X7u`zBy;8nuO5lJK{MŞ#ePIV1y
>?<L\]zn7ZÞ%IӘ4^, ΑoeĶ@9JG\%1]㕥S_2u2Y9+ة1p&Vp8aَS|yE벘)^XacVHOCxDQ;b	%&[`@@\CS`/ٿի`SIӛKg!vW{B/|(BIИ&&B;V,YŬ&V dږ{=c]
@qϥ.\ƗLͷnV[OѪJ;)αso?
JrG[m58! a+C4gP°!S6ⴆh؄g4l~
T0oP!54Y
iXkXkЇ*E]SэQB0qU!*Ą\a$C^E^\b̐exIQ\gTc81*NGvyL*VkǑ^6|=M
c^0w,bn(N!(a%;	?vν?#SXEB|<<

 (!տJx}+i8FfYOlv	]DzwMsݰj7~gY|^%|8Y+%|hk$2OKd%3Ox޸r9
t-ȏ}wMե{	4ܥZ
{G)pDP9o4f]R@)Aur:KuE<K><EWPK[+    PK  C:U            ,   org/bouncycastle/jcajce/util/ECKeyUtil.classJ0xjk {dN܅(FekJMIB0_L`kxrEh!aC,p}}R<<l.a%ORyr.g))ӹ&+Q7p{\TiŲJjN*~󰳮l7,IQ q~R2a	1\&-07ןFXzi=,׽n;,?a!PKz>    PK  C:U            /   org/bouncycastle/jcajce/util/JcaJceHelper.class[S@O 	 ByT.U  <8(xAЎesL&͖_?tRK&gϞ \"Sx{T)0*P %S`'`{R*	Ebf7m)vCp|8BZnJTS%bD3	D`@\"&t|O'b	cIMq&[EKX5_Y8ELrev嬌Rn6(;]plł4~ͱv|5^Jrjƥ7Jiwm5ypY<͕眅9N2GsvU6ܱaʆiflaΆ6ܳIE%iIAq-x_""72 `'jQֲa'V{}MzOZJ<.'tQF^s{h7A#۽'Q߯ոѧA9Īx_\IH4HC8<<RaB6[fC%Cv
6}/k`І Oך/H"ݓaC`	xja`nn0l1Xմ6PKɟ    PK  C:U            .   org/bouncycastle/jcajce/util/JcaJceUtils.classT]WUC 3NGk[ŪMBeH	6@H$)բar	t?
 W_ior<w<{f
F*SpIe)ંk
^WP,)a0Hme/X).O&%(wLh(nl25woM-*Z0-LLu#e=	쀻ɋk4g.Ţ;ȴ9Kі0Re<kU:mвm:V!$rUaqZGޮ
徭.
pfɚr Z7~*:r-lטI~cf˵x['6/r:jT覯;nUvZ6
יnxvR?&wll0[;s-Ytŭ}*y.m7t}gE	}wmy\_ϕ=R&{8{=ӋK)艳:n2;\3i>QڪV5*ϣϣ7n;q1q	2&e2d$edL˘1+ogK%ZvWbgJC#7R(!.fNeWL=^}޷8㏎SZM
㸧}| C	X'|*`wp5+Bj5
o"m`C@E%JZC[|o"Xķ #;x$ -QϱMrF0,k4Ǒ(fy^hE]:E1 ځ6QZ%ZyoPisk1<Y{
-8BSC?9(D\@^PdryЭ}_vkgh/q )F'#<~2Cdl!A<*y=2s!	Bn "$@\ Q F H؁`8$JpE/PKGNun  L  PK  C:U            5   org/bouncycastle/jcajce/util/MessageDigestUtils.classV	{W=c'7&6By	IB[M)
)KSyliFhFqR,	]{¾-u!&5to/)=gr3wߛx@7+Qr+x&
	lZCC`@BSK[G`[	l!6(hlm^ؙ-؎RдJb{{]=[)`H:՝HM
3}IJ-';Bbz;(]gggwquɺռUWY+ŶeVM$eIdDU:9IzL/P-mӯ-E[es4rCvPr4K%
5*4g]7m)8/G[ȧrCf#v OQs
ZaȭNHZis=΍z\N\NGeԼT}\j
[xP%Cu&-sJb<bBʛrR?y4k|u~˶WpBkO.Co*]0޸\y/XbSbDn9o'{,kz~2LIDE*Gm7<ĥÕkgJ[*FdڞEcPD5K;cDtF*=JEl)^"X~c{1Jg?מ2FR?Fi2)K|*X~Bee=[tfݲX05'Vu+Zg$h,Uhkeds8_U\U^*ỵ#L:1\HSJA׫8]*ATx
SŘ
Kō**U*&?Xwzv\i
KWEs%;vQc)^:vvmX^uѺ	rƦ[
vtTQ]/-gV4&3
rd+h
Eܲ2^53eǐbx  0~w2`H3d2PfűƱ:Gad+>.8&i
7>>j0p3e64|Q|Afx_b2W5k>78q8h>< b831L<N?jQ<pጂU}n~}3;IG9;Sa~&7 ƟtKu;ސ$V%$79ksu~_}{
85gƉSQ4NOO3S?P.IS-I4iZ+U|7=5*TT]V4ӆGg1E#q:QiRo<5TWԯ!]ԳR鱐z^oxHOB7zSHVWCwuSOE
!!zA_Rgu=^ׅK~aH\(~_RJM,Nu33ۼy~5Qfs`>_g^e:
Q|l.0_3Ku̙kPKFO(    PK  C:U            4   org/bouncycastle/jcajce/util/NamedJcaJceHelper.classyWUƟ@ilP(ݐ.ւmJE0MILݺ=zdHf{!9'o.CϿ
~g)˶܋!t7\>ˍ'
Hr;ᦜUL&}8wEÍeD-8d$hڞR&B<e)äT.qQ{;ax-
'x2Z){qö2RWyn4p6M%ηawbw1}a晌+~FVӳ+Y0h*Yܜ
7+fq
ۤwM+ƪ';_[^&MГʈ27<X: 3cD'Lu:Ŀ#-m '|e."Y3^\	Vh`\ʒ<̘tv9C
۲U5kܚn:۰#0*k 64r:NǈF-;[ Um=)'/3i\ϺVB5Y_ቴX]hPN{E33`8p0{:2c8p$C7CC/CC?)a4Y\#C+&~I6>WIPs5UȐr
eTHp:A3H_,i-$evA[M[=JuO{vs=Ho{J
\AC`ߐDƜjV\Sj-Qk-5(o~f5UP㦲K)'Y?}
\5]ZfT*ZkLJE*q6BFq¨C(V",`pKq,VDH!%BZDpD4b!d5},pk#a/j4\.
ah&)aoh75-
Wv;SQ~M%қ:S-bk^]+g;
G?a8eczÝ?/y'zD=F0IpV+	(1xR#뱨ߓ;p]/w)72(eD2\ô;2JGtH>DD?*TMe-XRȪ߅Gg2)e8óJZ/zQ~+v	_&hC
 ~pPK#c=    PK  C:U            6   org/bouncycastle/jcajce/util/PrivateKeyAnnotator.class]KAks#+2aN @FXgCve$Q̶d,9s9=g7 #\ʌ3Q!XSTHwM԰)oe
SǶe9Ch>9nh87{&2&mv4\֕՛2"d%H{i;F%u5D54h4	$PRAcDGRu4vMČ_1?gzNRfgRe.(LFt,Ǌ6t$#5e	"N.Q+oW2Dl>@,93Yy=;D..`k|?s'PK6|    PK  C:U            7   org/bouncycastle/jcajce/util/ProviderJcaJceHelper.classSFǿ

Mhh  H94
.nIBآ2Ž3ڙvGuֲxF־v߾7ֿEACohYAU2݆u&b)tɰnIp{[֝3(8Pq	NzLD9i:e=aF<
FۦA?'u\9-LETv܌SNd1S7ef
\s<79Or`qYp{q0ޝ[t\X
mo3"
3#k%͉݊1Kwb=1XGk]t-[1mqe4A(?aL'mj,etPff5;?:nSdw|-mvUvx=,e#{o"Y#^\'!Q,%1j28	䩉#nxrjs6kK;)mJe)ru|,J|
	Ѩi<:*Q*
옶ZF3Nkjp-	mg
>iMٰZ3)ifwf`8p0`f8p$)!>~3g4Ay9Uӹ
}@ıiC57i[2<[\M 
&˗C5Rw `
o+ əZ$
5IlUZl&$ފX.B:[jVxPOu!WnVPsqG##x}60maXebP6#N@{Yک޶szPNN<׍n9.l?F8xe=HB~B~
׮mN`0߂]PZЎy^]aapan&.̪0/&)%LJ0/6csȨ8G^Rq* *^V0^Q1WU\k**ucbo*&)b(hKEBirMw`ŪVhdvվ?^_ć^$yse~ݿyg1i3%aZT n }?܈ ?O{?mx6 ãG~XEvI9$'Qy< W2<?#߃ s?܄~tvq
"{p+ 7X
?ᇀPK7    PK
    D:U               org/bouncycastle/jce/PK  C:U            4   org/bouncycastle/jce/ECGOST3410NamedCurveTable.classTmOP~.c\(EA
L@$l.d!|*ݵKtw~?ůIjR69ss|
`dj=1t9#2wj,zkW$'_e8^7F\%Vz\7rJa1p*	Qf3L5=(Mw1kCKT{pZtUi?]YGY0̪1KFVL[G3`+8HF!VژL6aXtamr	gH
sץ9NE&Ti`u4J+W9z98q\gH$Ѭ@2s'-Yߡt\Smbk/+k
[Ol>R_Q/Uz3![/zѷ;Ԧmʺwut)ណ1#:xp5#
HjĸRJnaLRi+D&=i_1+a&BP50̑Z@<}̧Ѕn]6FBߐ86a`f#:VXn~gdI^ yNubBI5O|$&G-Nٛ{òLC PKжl  3  PK  C:U            8   org/bouncycastle/jce/ECKeyUtil$UnexpectedException.class}QKO@)ZxЖCM`})ZR*+M|$($b$vgv~|8.C$:eg
֐q/2.s[bD2~4${Iz$$7ŤAWHJzUrH::4%:uuY@fJ*[ߪch/53Q2&+0e5h晔"ce"-yI[`dIMZMZ:Pu/hbm?zly|FQs`=
&VPK)0    PK  C:U            $   org/bouncycastle/jce/ECKeyUtil.classXy\CMZKQ@phTQXrFDcaX,q{Mݦ.JzMnhmߛYvǽXWw~]: mW
T	XZ[wcj;w䲛tCoP
tnтhƨ iר1YvMwpt$]Q,eR5+U)1X>Y5dS-٘eNvmݲ!,Z5gb# 9i;PZa[dd/v1knt le4v	Q[1T͝86WMGuY,GyHjb+|N3ja[sɖf
jr}y"9K;Af\qBR|4HĴlm9n:OZMCXX1B>l BJ
&5Lh-`Mf*h[SGL;]D55F]jLצ˗`LOͳ+q4ƚLTNшw24#xt{ӮlL+1cW|Jh;t
R.
QIXELRX&u[\i/ZmҝE+{JʑSj1f
ؚ_4×f뿯B08bs]nlb~⒦nP792jIIU_þN 5v/IyLcT@>F)-6T<TP2.Rڥgdn]nsA<c}V2_qfg%횈+lӽO"6^&EԊQ/b"h,E
".F;DKD67-f{D.
=6{r-Y'U_ەZJYTq_
rLK%Ԫ%lHdX7n$Y[[ ?%Tٖg/uܧYCAr吷oE4,t	I~c>y'Cq*[1_L^dxgJnK;DV9߱?V9P,-skġ:+^oh\yk,D'Y\{1v_ˢ[:z-wB	`5ڟD/%=oASvQkkԳ-In}+v柭;"qx
dX*e260\ǰ2bLJb3LXS21GXƵgX	ո,aeeBLƕqnq5NB\F%$c9,xx*/<ktg0LYܻK><[F'aV(Wx~%F	x B	\xû%=cHHcx ^&aa/pod_-x!:0a8+^zKfaoex1K6J81L3`8'VK!	#H2HP*	khwV2
w{
P?H5=Ya{/D?A[QO*.|W9C";VQ+l}s;DsYއ2ކ~}C80GW/I[7%IxE~S?Rhc;9?fކ|F,C$sW65&iQ||]~Z,Of's1'I>g9M@ŭ&Rf8mf1L9FfJ;t
~-~3&3
s3u!q@p(\XcuoKq'Œ^,q	qCD/wYF|0;+.{ )Hq_AS2_n̹+eq$K|bI!au_p/?TL|QF*UG PK-p#  /  PK  C:U            ,   org/bouncycastle/jce/ECNamedCurveTable.classT]OA=SZED"
"]>UKZmWR.nw/|!jRlA]Rdܹ̝3Nϯ L!ВJo0DS-Zٮ--!FY0Zy]F}Q^֧:6U>-a2p
(1GX[pe~i{.e8#mSoC-}۫iT#tKBom_Hޛ9\
/$܍:4taZUzDj"Ld(J<>WfW8W98qt3tjO*]ʆ|gmJa	!y
դyA
 1H(5{+6&qcxh䰷_ys(ׇ\͋ؼ~neZ4h(6ЮLZ1㞆(5p_㸁TId⸉ʌ)3-QfTq*Ja9D(
Q	;qRt:e19 NGcMNaa+%ǧ`o334h<1C!уtifX#pE'dKm(LPK\ʁ    PK  C:U            &   org/bouncycastle/jce/ECPointUtil.classSOP.JQ_(7@쀭SDd&DQCx*uvvvK?M_!s;Pbm{ν9o al/j|&˦m+̔2ePǮrrLgsYI1tɘ7<90f~%o3[U[
CoQꚥms
Z|(pyܨ_Ӽ27tA1rNG-,UΰmϩF=ZЋʮS5tV*q5
?,$S8hYZQƂJG[$	$K"᪄kK!aa@o	RSf!k%P^a\M7TMY5KO}{/8^<'6||u]U[bu"ϪGA0\BHQ.P0we\]ф[1I	ܓ1 MaˈbFFd`_n3ms7m=nm}DM
L$LӬ,#>_Bqi}ru<{D0#f![G*:<Mv|@ D{2N&Biu:W|&%t^GXpu	!ہ?PK	Z   7  PK  C:U            3   org/bouncycastle/jce/MultiCertStoreParameters.classuQMKA~f67R3
\Ax5
miԡ :Q;F|3̼8!C,a=u\
B1eH2Cv,T^/нr&΃åh"\pBO͸Ϳ8s/{c>
"ߝTI'WTF}~tiJoyh<ɻt/ʭv	uGOWd B	0i䱧CBUUd78&dO2)(Q<DAٴ;KʱAtr^aw9j+b,ܥ|&:]{%\LPK<hLX  [  PK  C:U            5   org/bouncycastle/jce/PKCS10CertificationRequest.classY	|[џyVs(\(#ߎNHb;NveQbKFsP(-G[(KhKK[Bi.Bw)G!fޥ'Y2߯ݝ'?s' N-G@.'rWRU/~{	_@H
@>0"8*u^/:x(n&op[*6oVop;]!%#'nAxDVR
/Gp,+jwFMem庺ʚjº,Y6.Al¡F
!5Ьv34!i޳%_z$CW=Px;Ը5zimzzWTAHsL5Z[L};*jkRklȓMlΞަΖVzۮj 8uWǖZ͑bZ;[zvuR:kv,m[i֎-5-2)0mTlTODYlkXDgڦDiT\k+.'Co
a;&eWqM[̶	'ymmkobw#F*IOTc},[gce
,z."2xX+ŧgU_S{""m,eHR|X)},pp
VQ5WS ?8b4C&QcM+ʙ?2
DhJЅwxd`(=Nq(LLr'w:5QIO"ג0]©&64MH
X2t;S3d6xJ
QHVlYwm8FнTE#CGjS4'jXj6s@Q*C 9!jZ]cm&y$jnñ?0:X?@]̒3L
+9
Q}<`3Chd5RlX[Po)E4懂ƭ
i$:ioiz:a$QfB4'AkIbZr8LaeR5Gy_TES:T٤KRҶAu?RqҼRH8RmũΞx)j	
jX뉩ʒUVطyE6-?{6r!`(HlәC[i0Ngg$J`D=VW4tΕ%]R3GmD_J-|lK(2ugѺ8[*ZH<4XtYܿwQjZZ܏Wq)j@h?HTٚlwʴ u;" 5K#сphUXF>幵#qTOukdzquؗ[gVoڂtBB<hCxMoIn.Z\8R<hә	)uRGhE d:q8Wuf1n	ն'AUvჁXUwswh9֢Yul2a#}s:^. jtRe՞9d%s$f%AeshNÔ6@@YS}&&5[lbbRGy~Az5y(p$ݫzZOB@)U>wdau(}4	ъxr{#Wѧl"^>i%~g/_oc_ {{abJ@~DRJӞ)scze|Q<QI'#"QGp.Z"/yA2|Som#weߗ2Pc~"Oe?2J_~+d/2Uw!?exN//o#2"Y^e
"}g$ӮIO!e9ş.ʭ4shLZ-ɮ:]D&KSOE}MY3ߐꆔ_*'7sFGp9MA,O4&.dϕk;YJm
tJt'?KVM{k/ѪĔ"{:E+'sk #p{jsjzrl4Yv&2MHTg?j/l׳%5E3&)Y>3' kYD^ZNe$@-Xld	)s)SE9Sv9kLyNlZ/`]ܻ'lEfW,uf[ge)M+rdlBw7mrN#}ۏSQޙ+SHw11w{Mi+_sU?	Y	*pv*{g	PbꏸK{K2|1|8'gxI3<4p×W@2`p2
Bbn%
[|Qp6*xhE'	=*.dXd~ܭaH '0Fڃ{^F)5\
|Rp:^85
<~vـyTC@}1<z!e8x* y!ưO`Dc8pUq)p̎(R#,;GuL^u
:zfpÍFnqF<M>3xdx=fýNl1<-x7Ç>	O1<i8q+~1g$N܁dxû^0|Љ;VV1|!y\vRe.Ǉb9/\O2/.\ɶl
k13b8%/3<ky:<#?qZVYt:ua>4÷]؈Q1hfvڌuaVm3|.܎gxEQ"i1?c'ҁ?.
| s%?cnQje%o;ý E(W+n~iFKڙDQJՀ$jcko%$7*]6<*0vT=
@0 4㸶̚˒RD8.s i\LV/cxM~ؓW6&]5*u>
\	+K3HZ<5t_YysJ'8ЇeUDә75Q2}yTg5PЛ
&c3h1)Z6S9ԓ?-)McP[K
4	iGNJĆFg`86yQQFf^Y(Ը6*Ln;s	iGHpfjҞGǡ!!yx"ːаk({4-*颊~1i;%Hz[=1rcTQiAjz<OPhUkǡ̓?&ktz="-p']I8,nt8.%WRZ/>3)UJ;?D V>8M7CiVn;e\&c2n\cyqAaEJ³ Xx3)8d?ami3yoΐxIckxAΤDYeg`Ǒ.MJ[ƤTq)1/!ҍ=I!0Ϸ=y:ǱϽuT*bzhZAMXn
Z{ܤwe=nY[ֻ:ze.cۺd
->ڐu:ܰ=;hc2CKo;qŃُ?mZ|Tչ
V76qt
u'%_GlS#!emwl<O9Q<y˓g{|QioM"8Ʊ*8CpS>%E.p=htTiq}8Oγ:I l%s5qj:cfxuWr^G+hTZW|{s|$O-T 
בZnLZYQ~R:#PVeaoF]
7Ҥf˰,̃UPN Õ8F(kd\z/q`*o/b#NA#jwHNZjZ]0)m=tӣPtSߘOsx§.VYh.C>Dݚ4Y'xdyd9k2kyd6HHNKdS`2_&mUU/v}ʎ$%q\M4Ǣ<UbQsǱKu-
6a{d&f̞ Y2AJ8l$U	)Ϥ+lt}B76z}BMF7%$aқlt":]iltlN-L1i^
Mz&&}^yFg1ARM&/ۤ/NLzEB*2i*&]f6	iI;mE	|lta76آZr4$
wh`½ɤwE?.{r϶K8Gn#^ny.rbwEpZ۽΢g7Z4VR>EwE钄p/Yn#3)cNJ!	tFϰn=FNxFh_/uZ,;v'tݥYcR'wwsgeYW+/u;;:Ufxm|HCPKU  3  PK  C:U            %   org/bouncycastle/jce/PKCS12Util.classVi[W~(1"iŠ$M05ԔDcK6#:F{ni[\hR>ss?w NqD@m/3KO\B9Cv}g8po(/FđIUJJ:![jdLCQMkS''uP֤ 6nhЬa3eixPo"i4K5M9#`e\UGUT-R\zqԬi[RD\&*@U-U
b8,juWɰ%A
L+GzHs?g>ْhV,JQiĭ),j5"'qݔ<#{5*j;.I.^ǦTZ"Z&eR^.ĸj
XokekA:zm^$-keQ!٧̀XIe>ToO(M쨨Ȧ<R
vÌ{(JFSVB)
uN&4dwVELmZJ,P:A~fisJ[>aP>j+f[
RdbVʄCz&6je)EFN]Z%iC;q241dʰaa?C2b8p#`ͫ覢
W47xKyXI;fl*&eh/䱄J}55Mm0XWu^^nDnM.T%V*2:VGfI{tc
VWL=FUR	-*[T%M'xv8%.>lbC-tdOt׬HAVLy<!RǤ@TjHǴK-ABT. ^Z4H"9prpI؂a	>"J#6	n$l6sXQ	͸CB	wq%l=|&KX1	H؉q	rń$i8s"z0+8΋sxJD "`pHqxË"D -,`FDIω8D19<Y!>sxBD[0G8<<NQ8''=_NkZrnHN8CGzbZC@cC{]	.2fhpiclVZp`%iPg},çwCs><bU17.,:* {fS
w<Nܒ1}Mybeʣ'?kxUx#W#L9,3KT8CK1zCA0xˢ쉼d!Y#'۳0|<N:@3)1>WeEt,wiBz-fһ:PK<  %
  PK  C:U            (   org/bouncycastle/jce/PrincipalUtil.classTRA=m`Y&E.
*h,Ӳ,KN(WVeٳ$@"HR9}Nd~F=Cو3	Wymۍ}+ИvH˵A:_س2-;-X3S	ǗI¶$	X)<symv\0ܴScg}!sM$fm,(j-%tIEO
	eXM/9
d10c	:]!>Fʣ<uB)gm+W]B
C؎Y;)2@gZ/=R989qpr\hhbh7"8O*g:Yu_#F<ıǨQ	Ij4)
̕6vrf!sjts%*!-{˱4T&)v|92`:4ThT܈ꨃ^jDtbLqejƤz@C27p16ya@yx̌A<0G&-'h 0%-kko8T1D:SZ2EԎakh }TˋѱC<?F/1q/x/x?CnR&u`8E+y>o9'ǋy PKWo    PK  C:U            '   org/bouncycastle/jce/X509KeyUsage.classu]O0_@	lckmnv1&Pm&YqP zO	IQsF:>v|/Psӿ_ĺn6ul-i嚉ɡJ~Kp۴lX[f_,Ud(]Sz*JDO1U'YKKR*IIfn$;B1jskqHE4f/udLuU"~#)ل'Iz2S9 G±qNq#J?,
>9x7TBi瘥HZTp#1+ݗLJP8P@t%w
qC9xĞÓF9jK
>kKD:c{p|{wPK	ox    PK  C:U            8   org/bouncycastle/jce/X509LDAPCertStoreParameters$1.class1
0Fh5U{TQXpqMO(x5Ā'<_ f1dKžjHܺZTfCI4F8v,rR:y@3L'f_Lp'rޓF"xtNt5_PKst      PK  C:U            >   org/bouncycastle/jce/X509LDAPCertStoreParameters$Builder.class	| ;IAeC"I&I`!"Pv2
n٥bO{iO{ZZ֞Zjϡ).9zϧϾ7,=bo{o߼7_ FxUkd/$<n2E2tpwpom21(HP\S{n
GÉ%2t4jV	#n4;Sr͈'XSzڭD<ܓĠt'{=]j:޲^^kY
yZViZ<.Xӱt,XӱcAOǂ= Xӱc!oc!OBkLo47<جFKz_?k2bl}cΰ6BL5w[Ei94!'H/TMLu)?M
n]a`"<չ.sTײ$j4ڻ$ٓGzgaz=LϿMԳSfi7
)ң?%?L5B-*kzc{HBd爈MVitD"Fi%Wĭ J05}l^mpN aĜPlV7Nu
yR53=59TA([A<UTESQi11
ζSL29N
!dQ'Oc#ROB},%j]3#0{gw.n6olwq
Aam`xzXۈHWre`{i$,3:
?=60٘23KYT@GM/w5Ub]ޟdFv:.M-F
@.d~"U1)̵cV$Aݪ`lgQ0;2
8sY0a(*h<br3S`XIζ^l=4[R27Ӯ7Z	&$ޫ2F>x>\Q:3߅J0o?5=媉79_ q^7`"|&܂Ҋ҆Ҏ26Q:Qt܉e1(܇EGE1PQPVDPVDQLQ@ơ|ioZx[(FwQ}gQ~e=Q~c
(?A)(Q~sP^D/Q~kߠFل;ߣT
k$?^1ݷm^uDhiwX
.z"T'
pا"Yܗr_>۸O}>[G>=½]}9^Op_^K/㾀{;Io~V aO@V
y:H嬴}7n-xndπ1W\R,8*T-8*{UeU؂ͪ```\eU)=yGO;IU)รCr^V1p􈣇=>|Gw9MU.wocl"}_b FM>{`|8-u|O]C4p>@]#4pK{]	女. 
tU4>K\S4p>M\Q8.I8.
wO|NGi|.C4p>LG\4pc.>i`$i`h`h_8 ϪcvƆGfgmxydvI"̎`0aS6
]1;b\flhdv̆00bf{ll
̶mfRFxjWaMh1ac.3dO#E@ƗD<x\2>(H{E|3od2,xo "B[E'" 3"JD\IgE\EE|#q5q
q-X%S"N'D\GƗE<x&q8HD""n$-"n"="n&]"EDB~/
Hײ@J˩PK7n    PK  C:U            6   org/bouncycastle/jce/X509LDAPCertStoreParameters.class	|ſ-Kķ$Dd;N9	ze-/!IД4=B-CIK7V3B~nxOQB/y4"44BX*hy4MTuuthDK]t2:0v#;H7jrT}kKsfsf!;\õ;\-vN[g
qc`!BΖ9r,X1c`;v,X1pӵ5cⱦsY9z-5ԝ_
AA*FCd4{+&ES1*mo*5'ǭv/Zs֜
ՋI'ov=IFӉzrT_,-4Qh@K=F15lωHĜf9k#}!=s]TܑX"?N$z3Xg건ur|n-3ijǶ]Owezlh61ʱ7g˵kEYe	uP^N`l|ۯ=ocEdaVʡs5r+buX@<4dsStzd|z3eO-بnV	퍧Z<gAmX
3=ڬ6gn6>9<Yh|܋ZNk.ffîg['U)Z [nҗـI9fí6'iApկkкD_OFƑkdo\P&wL_
?vh`Lon2
=S?wo_wIJd|Z֓	(tmV6x.oEIp9OMv'4&
̉ɵIlٱ>6o;sϊ]-@b$RуW,ɺ6BRIwWxy]onfVʶmDfɺ]߫CI<=CoT7~.T7~C5
W7(~zqh=w9wqN=w[0^
[@qrWu/8Ɨ3&-T:\n']u/'߳O?V 6 `)XVnXv7 [[ۀw ww;aKE~
һӵtлރ&G^?~`*P@%PT5@-PL. 3,`60h@,-`1 >|Q!`?1''O>|x0Q 89	y/_[׀h=
>< }M;w~ c'O?~k7o xx	g/_o?_`:o</J*Ok˵d/ONoE'b]&N+vK]%u%RR..URoz[&&7H%F^/.+H]-uԥRۤvJz\&!D+;AqAqUА!t!jk
Ⴎ3DbCB5,C:m444`IhAG͆.4Dt!*ACC[Q	m5Th~h!|vCLv%NCA 2C
Q]ig&*N@WteNA
:1DͣwftO&smCM]xi{?4=E{7f{P窂liݰlkaX[i_-b[daYX/[i`Kgi=i=i=io=iG56OTm`ؖv
l
ӆaٖmiaj"X?[?,>>Ӿ;Ӿ [ʶԴ-1!:u= [zzLm`vؒi5	{vÞa{ƴm؞2<clG#טS
`9L?z\ڻZn\~xQeSsf=cQ1\Bryܼ2/7 w¦`y`z\es2ˮЮV$vuخNI:jڮ®Үڕ߮|v5ŮJĮ<v嶫b"{']Svu[ʜ{<pJިNy*]8y
oӴmSY<4F^iO^W\>mܘms2>bŗ*VܧYe|܊7*VI_O[e|ƊY+\XXeůPV|2.⫔ۊVEVJeW)cZ[kϊ)+֔ߊqG+TSXWeV|2.ʸqGqPVS5VWƵVPu^C*~O	>D{:(fTQ1gFŅ}hUM2Tl`q_\$6d?.哿PK
  ^!  PK  C:U            (   org/bouncycastle/jce/X509Principal.classmWW+Z!
&Xb%ʃKܓ.ɍG}x9~(3
!Dݹsg67k35
Ժ~#1`ؘc3vykdZh%!<d!#դBJ֊Uж2̯.EE:b0Z^̻(YlT/Ov@#hI,:"gAV4Ww-Qm{j®W|LN۩X.y<_&-/9[X&⟺lo%LՒ=mդ+LeMyRʔ\;Л3VafiQ7ܶE8Fmnn[*و9&}Ύ#4~b*tGU☊*UVqRňa#9'thx}h.\jIk2}pwOcخC83Dh}=~"Z_YqzΒStQp8ͮiG,OǏ鈡e@iL蒎ø#%:~d!2#e,U~1krSYsrWY
Ir[k_41<[,9`]9{98fX~Gw&lE*lKm5GҲ^*OW8Qp.kΚR! k4
껥$;8Wl"?xLxăPghcPU^Ѹʆτw,fX~&~z$)FOӾO?.ԕnT*C*?Go:Q:s#jWY\Óo k0T~0z88A\jP]>TEd0Tx;[obկu,AzɁ PKc    PK
    D:U               org/bouncycastle/jce/exception/PK  C:U            @   org/bouncycastle/jce/exception/ExtCertPathBuilderException.classJ@ixi֭6)ƕBt:)!tR۷RP
.| J<UZu\?3o/ qP<
@1RP>Zg,OL@ϹT+GiUҝIu8b84s)&:T|,W f6Q0a(24z+"( T.[߄kV{^Xf\eo!j(aY1xpDc2E.s'EvMVmg=A+e;PyX+ R;PKR&  1  PK  C:U            B   org/bouncycastle/jce/exception/ExtCertPathValidatorException.classN1OaOYrwCMXhؗC&3f(oąC i_^!O1Rg!*{/;S|<Kiޣt)d(|o,tRh/aQ8JJKI[0,2ArM_.Dʡ~p#/p搡hⰷ81;^ѹhH!_C!N(aa?NNmH@jQhWM@nqpxFv/avݩk (nJbLջDPK%&z4  X  PK  C:U            D   org/bouncycastle/jce/exception/ExtCertificateEncodingException.classP;O0 -ufkR$/lE]llkFB\CN8[~}{~pC6M|)R12咏/ĭ॒U݊KU8PWZ
R#\,]Ju5[d|f+#WR.W|!W_.F/Vh4dwb1ą+q4e_Vi4
F{gh$vpLH@T=v)hмCg7=<M0OQ ~FﾦPK    PK  C:U            1   org/bouncycastle/jce/exception/ExtException.class;o>vFTFĲDļt}FtҼ⒜TTԊԂ<}׊WA\CaRHFQ~ybRN5#+00202 PK]Mj{      PK  C:U            3   org/bouncycastle/jce/exception/ExtIOException.classOK1߬ݦVm-ҳV[KA<(1)Fo ~(q*b`{7||8FP?P7WwJZ'.&+mnu9aT2Z-|f\i~9Y
}?].PL婼)ܽefb\(D!"M4ӂ.6v\/'lsyv2|E79|A	C,G?P aciPKD&     PK
    D:U                org/bouncycastle/jce/interfaces/PK  C:U            0   org/bouncycastle/jce/interfaces/BCKeyStore.class%
0E[ XpO㳴Tȯ9~HLg8PA~hmb"a|ˍIF8FQM	$y!̃ĳWwW 	a:A軘"h
d LQfPKE      PK  C:U            +   org/bouncycastle/jce/interfaces/ECKey.class;o>vFԒĢԒԢbFĲDļt}FtҼ⒜TT<b}WgJv&vfF]
MRJl, b PK
ʂ      PK  C:U            4   org/bouncycastle/jce/interfaces/ECPointEncoder.class;o>vFĲDļt}FtҼ⒜TT̼Ԣb}W| 5/9?%8,_X 0<(3/Z3Y@L PKH%       PK  C:U            2   org/bouncycastle/jce/interfaces/ECPrivateKey.classO;
@1맱;;?(6slPbHci7}/ kL'LS]ktnbaQʻջZ9ICrRTi.C&a7mîӭ~
=B0hs7Ý[	#a՞@_PKK      PK  C:U            1   org/bouncycastle/jce/interfaces/ECPublicKey.class=Pgy4v^@6vJ͊&\x(#RXM&}<_?Vw"LR{<C8´*L\:iC2樨siV.SNE9ɝg+Zvw_g3
|]XCda !@	oPKf      PK  C:U            0   org/bouncycastle/jce/interfaces/ElGamalKey.classm=
1Bj;[EAA<sqDqf<nov0EK%q.A'3\z{]]quJ}*"xd#^Wk	ҥPSΌrm
Ma2mQ%6I|OqЉ	/PK={      PK  C:U            7   org/bouncycastle/jce/interfaces/ElGamalPrivateKey.classAXPHt:!	gZ^M<8JdyI-u©0	uG(vl'.e)99윚'c#4<(
BV{=좈Zq**JA( PKdcΨ      PK  C:U            6   org/bouncycastle/jce/interfaces/ElGamalPublicKey.class@߷b[fs\[^E5?%m//u KrGB/WH5߇0X7.myqRIHP&[Uƙ<̊TR(KK/J$O14|&?ꝉpg>Jjeg Z`1	NPK      PK  C:U            1   org/bouncycastle/jce/interfaces/GOST3410Key.class;o>vFԒĢԒԢbFĲDļt}FtҼ⒜TT<b}wcCJv&vfF#
Mb/fcd`e`a FFF6 PK`_      PK  C:U            4   org/bouncycastle/jce/interfaces/GOST3410Params.classmAjAE1&A7vBܹF	0=M060W"P2"Z__/	z
q)f3s}vр^RsS32+JQ`\{#ztUR6JSY6y}w):\w8Zay֙;7aKs2I6y'm4PKO
   @  PK  C:U            8   org/bouncycastle/jce/interfaces/GOST3410PrivateKey.class
0/?GAq\D*1Cqq{/ F&we"qr*IUָF5jU%KH	;7|YGE^MpIc.F}W!@b!+|PKl}      PK  C:U            7   org/bouncycastle/jce/interfaces/GOST3410PublicKey.class=
@5FD!6&6!W J)fy |Bdr#8e*YW6q<Vq=ׄEa*׵VXe;Wt^_'l~hܕMbvM԰]!@6
_PKɔʧ      PK  C:U            ,   org/bouncycastle/jce/interfaces/IESKey.classe1
@Dǘhh((x
B@f<	6b5{O ;ijMh¼Pry
֎ua]\ftUJfi*47xH Vw?<iB A(&DH=8 PKWϤ      PK  C:U            3   org/bouncycastle/jce/interfaces/MQVPrivateKey.classuMjA_e1 @қ첍(F=eeaGe<TH#JM=xGQmB?7od+Vw)	;PDsig$UXͣD*.q;hWd\]**aQ&sb?5KfկFx}%<=m
{{W="TOZ~PKjq   0  PK  C:U            2   org/bouncycastle/jce/interfaces/MQVPublicKey.classu@ZJH	A$66ۭ<XdL& 0C,_YdgH:by"i(A5*X:2ؕA-O3 +SU)YEXDa}uMa4	sJ>6\<{ V}xPK<И      PK  C:U            ?   org/bouncycastle/jce/interfaces/PKCS12BagAttributeCarrier.classJ@Q{P4%EzjKҢBv6؝j >K v.3u2|$mV+Mf
7mHrlDΪڙ %°NدpЯI&ehOINsA<ߛjz͞Vn濌\GsӒUOP'Qz
zhӤ
m:}?EPKp$_     PK
    D:U               org/bouncycastle/jce/netscape/PK  C:U            7   org/bouncycastle/jce/netscape/NetscapeCertRequest.classW|W-9npfeI2C[q@vBT8iҜr|rt'7.J[(R$PKiMY̲gʆ

we[R?߽;xG \!UUCj̮
*}
aKvJv^wJڠu6bؾR%:80%_5#l40iфaiElځ7%FAKOMF_n0-ZR4%K$ukjڶ[ٓi4rK05QbNp:9wԢMf*c-=}Zj!ק.jic7IRTݦ0"z̠h
,dJ!9Ydŏ۵Tҍ!5oV8Ho$,SԐq"ZIu8l؊Ņ[RV}KoiwU#*8]<vDxK2r0cr#;5{E6Ԣ)Jp(2Ypx"nRV"IZ>ԕ.бdbH'7JښԇΝ@e)~жFob`[.x Gܧcw]޹Ʈ귛^BC"$RFt8V\*Ze˨=qmƩ4oe[ee
4_QZy宅Q0P\
$ӘyRB>.4TF ̰/!a$2hxEA-<iI\)<֖^nIs܈nNPp/fF`@91)FzĄXi%W{~Ð3<7M/
4
	X%Z`k	\)pz&f
\-p-m6	Hv8К%uD[]El+Kj̯پ7s5l,_C1Ǳ;ԸfNs
XO6L|71Q!kۛW4&I,c1֚Y늋b͍JG9syYU90}]%͗i5<))^5k2rĂ5e\U֗iүl˫ݝK-KUSlkd|d=T\b@eo5SbaXKpx
xT)PP0
.cXİe5zn
fU
/`Xư(*X\ީ`:C
^`.ޠx5K	w({+xNwOA^2#2v3|2nef؃#2n!{y/у/2|M~|dxaK_>~6g}q10)H0a}i0!00ddX/2<$c3|UM8Lf×k62}gLXjS5U T	gRC+RG+}*sP!Un)u^Fw;<;i<u=̂/q9IeG%dpH 1y)K}X2;z8i8ec'⿣8GaQTڻdg$4xMA?Fq8m+n>o4o<4Ώ N4\+OH89l}=8ǩG%]Q!pPP<´^6w$݊w9yuTpSHSkyLdau2mȲHuy28pKYCt~V;AOڎ&jPq^	
vQ(ݛ^-:S{Ix)e'mnuȵNTqqKqw3W|aQӮxgqӮbIW?u>o!dw~diSiiCN%vej(TRmͱ5XHiIz
]3WyTq_QW1(j_./JǕ|Vo
bgz7w21>?ݵ^:Zy,OcdON&V$
~9ѤY"_!urO>$UHH7ݡF͵.rN]|#mG<<LXC_J۵]lI9;^$Y g&9~ΕLf9?htϱ3???[l;.Ɲ&PKV
  #  PK
    D:U               org/bouncycastle/jce/provider/PK  C:U            6   org/bouncycastle/jce/provider/AnnotatedException.class}N0EG4<^k`W*vnX!UdWS_ĂExwεG~{ypC$>eݤ2Idx~dhBOy*˘szUIU*W:^&jыޙJs-	;m<GƥNhx0p8%Rt<aeζ&,Yh`ߢP@ Ф02{jrP4$B[tgtsKAt\EnɁ'Ԝ'tr6> PKr~    PK  C:U            :   org/bouncycastle/jce/provider/BouncyCastleProvider$1.classQMO@Hq0< ăD,i[HWh4(kn^ff> qH(;cBJi^l_iI#3{Cq2"%向btPep#Rky$kI#̈́xx93ș
$:9ɜo,SŁ-,lX([q%>:cl;(VPŎ
uv	AHBN(6J2Z&7F
u3KB]Fkq!v
;/aɕVh|EϹ}>K̂E՜/PKe=  (  PK  C:U            I   org/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService.classOAǿԓNDkmQ ii
&>.ǖ;?Fb\;{3xw3j=0kt]~v31B䣀A O:thrkȽR^D,_?5#gc[v$,m鏅TJ˧%#nOH[D숴c#zP]ᕆ,C%]pXw( _6ws~lH+U6^b@
Hû4([Q4YQ㍺	iyc3%1saJ
}
$bv4n8G
GooǍH
J1Ncx2xc3Ʃk|XP
ci-Xvd8PKR  K  PK  C:U            8   org/bouncycastle/jce/provider/BouncyCastleProvider.class:	Xo>aecc6c BG|`%X@FHX6s'ѤNvup
vhmҦm&mgz&NZwfw@p曝73o̼1ƪFkNAEv`wAv`}BO
)>-g;*`_싂+ؗ`_`	6"q쫂
`=(C=,#}]G`1%ط{B])9^G?짂B_
+~-`U!؛%ؿ;#	2d
-@``'`0_@
(HbZC@+(tP'  `~AB0$`X~I	ŁP8vwűp?"J )iV^ĭ&^-eZCI{CnXVyb?bj XY=`򵻝Nw[ݛlpls8
.`G(QT#1oVbעZg}N!~p
}JjqmN%^?	EÁn5R<\Y
:^_\s6z>1Rn[[кSP&yg
\y[{uU+V١
0V4y47XCg8T@kfNun<0>-q&WK[k\WhRXn訌\`z8Z6uRJ34ljikĤֹ\^Xd2kHˋ'꼾Օ5f}u]_(w.gCׇ]>W{Ãf\4$
ʀDFfuz`07*+1yZYUQI37Жڈ4tU5XQٍJDǠf\yVZ	Ϗ㉵f7~ҏJz2<^*
VkZjJI!VTW`52	2&8޺}llq4-<X'hwViPi\uJ
Vn*HKZ{`o[Q1^g{Gz܎kohUOa$rUh
h`Nh24\o[ma(H
Ҵ9	^Ù*d'y`TJ^5y֧ ܋-[
ETR+ۯ0ܫ	
+yzj}}U{]/ЫFЮoXdhnC=}Hp0
l5=Zj\NW]v:|.q9޷|YLRSZ^D/I;pX:nga@'EWNẄ)(6t$
{؜'cSܥ%:cmg2؃J׎j"j'wio8#caS{`
*(*Y_FK**pݍ/0pC]C1
&;vCh+O*P(+2bjq Jȯ{SΔ	OzZ"C~H`8T{U4|A`0'_=X
FQh:Š&s{ՐA]MPs"O
'ss	<@`3ׂPB'MJ>^iriȬnڧD%$[|aS	vEh'E c@D
Zf Ǹ9D F	
VQ)GTU0ONJjauGZv$-KpxU'IbA#!%DHk^<-cYGa(,ոVD"tBT1P,S8mF7/Ԅh/v:L҅iF+PtZFfqN0$ Sb%2'VRDg+PTqWpI!u#v4X^!89%p
6Vׯ-]
oW`4+t`鴂 V6piDk#~5
J\1鰌ɠv[;GSکܰlАyĨ>1rxa?v1u5gנD	,MuT˔<I9ݜEsSA)ҜgWJ"@t\I&&.=	tH\%]kHWM/NԚ4&_|Ez0u1
j53U0L]\\ ŗv*(htFՑջvW*oKww+R.9Q:R@ov74JQ;]Ө>ytk04vݝfYC3Rbӌ.I'~F]
|4w=^(v~aw:%N`7Q|u(퀳1`4D$ftgSL.ygTR	yjJJ΀]2{+fz\za4^<%)L~ktǾr|LoQvOwnÌtv<7NGK0#KL*੼7q̂9pis/F2qLjD]v9F݌lD!l^YU~lT[[fdn]މuv촛}-z:;B^,wv HJFxQ}ƝOw{bPCxDТ)?ITgܖ̌)$AgnKG-?S!ѣs }ɛC}D
1`_q'``?7V`	',_`S JDZ	I^	%pKM&	<4K"Am\&AGJp\%HpIp7Jp7KpV	nv	)]|H#܍wτ-[0>'|z@Ng
8(ݘL09/,>ū=-[3篚̥yH74|>3#Z*Hy'T*}li)TfGY4ژ$iLtraԦQݡaǽkvJ?4ԥ/i|ӧe];MRn s5ͅ'n(%0ZLeid{Q4W2e4^H)z`}ڶqiHsٕoin/YMH\0wZ73$tU4ݔgTizL,_?_[/?b
?aƮX.[ٝpE`^&:7ce3+rB-@0{|g	%9'/Xbenc7Za'On<
o#gZgYa#/"`l+AdKXnBϵ۹<+'PXaKV+|Vۈ7
|+"/|!"+勬P[c%V_JrˬPɋp>?
;V_NJr':~@bNu\	4/&s|c;K	XC`-rv*	TXG6M9'Vj	4p[IFk<C9!^!W-<4Sa5oY\kZ%G @ D`>QC-
|^#^3a!W#wIؿN
	="o%pY.&'0?<H` y0YR	v(!-wJCHw(j2ǫ<oLyU<=E6/>	s6i4/M=qӓN"[a<qi%!}1~<4@z?GiJ//khgZՔsGcJG??>Z3t82HJf/#8rCy}#A䐆k5d1RyQ~rg]~ߣ#:KZG.߯#;n*yNy|@GHY&Hґ0!#Ry䈎uPґq|smJ8Wg<#ґ%>ɓ7Bi #ٌ	r
ۡ*[q5
J,#Wg3J(0jz&e]l|6}9(biYQI}`h(ٜ5oa">uʇF
IcӚއ%ǖ᷆+Y&rY;,|$x!iVyKS7=ac2d
͖v۲vyX:ʿtog:~v9=A1f/?,3!<I>U4
DQ8S}{@)ԻSPJבN6GN5zBL>4o"z_
qRԭWS!N>D1#z8GtSH=SFF:`Q:[:ZEViyh̲9sLʴB,VhbLa"3N&^hLDl(M*Y2j@+cwQjT#L<235=,Mȸpefh2Mk8<mV_OvnwRZtJ3qdh{ia߯G4%tR_KFDX<Y-ޫEP⁩,f*`۫q<M.lIty3	^N-*^lL{ћ:8ɟxf<Jk5SS5e=\OL9Cv?eI]`GX7"4,5"7geiQ\*dM,5XM-sHR汌J	^7۩YܕxR4܂+\DPpK+/;uԚjO}ܱgZTj3Y
F#lc	>){e2t9Ύ%{cHbC<5|1:c"IM%
RMYr`D3eW;Ji2h瓯e+حԊe\!w=o5\-b:o˽v:ί³oGۑ%_Ȗ[\=ίǷx_W>/!; 	UӰ,97̖+5TŹB.se9Η&_oyyZd)+WU4<yϑMs/o2KM&;Ly
L2r)Pv"ٓߦzXn1L%r_*2kr/+&~ė6K
_!
fIϭҷ2g|>JhlR&)RZ-YeZ6Rl-4u(fh'И
N5<l0lu2hɢ
"6xl2jGu(6&eQm
ʱ
MY<AIw(6Riʢ
`rg5F<5_i,~$3^FqxW"PKtm)  8  PK  C:U            E   org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration.classW[g
,a2@X±I+McSkew.GX@ilq!tvCGkmԫM[Ba4H>>~"Fy{{gv}Z	|nO»%%HPpTtT3a?(`QwQ'4с`l<F#C}xH';F`#(		;!A!#'#P/.71Sa}R͙jcz6Ys3v&ѵ@u[D!o3:a-fum3I;oR	62iՌ6<BAatҞ)];3[)#%];LzVl9()KWWע;\H%#]+4ڡ?SMRL궀hI-43A<XFROHIltРNQZ⺖{OMIݢzbP0t25M=A+Ki;r%K+401k/ڼM̶t5<)m,ݜR@m;Yw/ŃEGo=b;J90%,Yq^5;էlYk<S@smtnSfUHmҶU:@J&26Yq׭YCӳCzږJ}-O+~
ӥvm]l5uZ3VfHV@ΥH24СmkJaH]:ɜ:e_8n=LJ5%m?^ƨ`.	q	tPTfV!eV!!`a8˥S1iYGn8("qH")qXGE"zDDEDDqRDxf]t>;9VvdOxHFºX.P9_o7o"Q.\!RۋܔRZJr22hG쿘~}߽r[v̀v~ҘXl̶%Z]пn.t
溟*muٚZ"֭p;F!`/
3P]3ebF<&DV`wVЇ0 2Y]S=
3'S
N	CxRx>]qa|x3,_`9g|E0%c_1x/!}18y2N2xQƣLo	\{2&m.0$ei|>&C h:MSf7۪vN0ԍ3)(Y釔j.׻:+X9qk
csS	KPh?*i۹5Kx9HqZj	K|\Kp	Ǖ,"ܷ~zÉ됻t<ĮP<⷇=>
t^Yx.dΖ<v8uCݫy;],5yw`@.nr
d(
dÝ]Kxiܥ\]";J%~\+n` {nQY	IYH
\P_u"FNX 7d6 \AɩUXUb,/ll"AzrNt>ZtsNYQ_cٟC;߽˸q!Y+4z^mݍom?j]ōkǺW!`+DHK?oJ'>|"$|"~8뺎5Zoy_B DG\g	[^Z/ѧ5>\F*~hHto
獬
2]S]Jԫ.U%pKn@AOPKǓQ    PK  C:U            N   org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithMD5AndDES.classPJ@=LGB"J4`EA*]dhcә0B?UGBт>8ro/ MN@?y8B{Y8򄹡pŜen7
;b%"q:f!dn*S1zRLo{|#eBS,Q}K'kT8}5K0
Ph`@k_}29~22aVᖚ91
X5XϟBC&PK-Z    PK  C:U            O   org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES.classPJ@=ĤQRPHw#.B˚ml:&Qg
X(q\(Z{\)%ؽ,GHyVpqh^n	:˸3K^ʣd*N~"f?%1'k?&
/:^pUbZCձC#e:~5L4@*X4c@Z hn@̐1*t4>*YDf9Bw@s>,aTTkuKl=v%Vg PKnC    PK  C:U            R   org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHAAndDES2Key.classPMK@}ۦ6Fm	"ś"61`ՃPXMw&
<,Q&Egcv?^ clӀA[ȱu/z8	4J8,.>[LgWdvPxS'&Lt")I˖b~_tP<]L.ޝkR)4
E4v_7jOEk`JU5c`4GqΤG̃,CTUQAyj[j'PK4Jo"    PK  C:U            R   org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHAAndDES3Key.classPMK@}ۦ6Fm	"MA(TzҦa,O%nBJQt,=f1fOP=
xY{7YLDXb1A؎
oјIcV$S3iRLro[۽q蚥e
BQ%0EjU(䰔bYG
+:X%q?Q#038f1v+ *KniU;33AFfEkqayT	PK    PK  C:U            P   org/bouncycastle/jce/provider/BrokenJCEBlockCipher$OldPBEWithSHAAndDES3Key.classPMK@mcƨMIPoĀBcMv۸6Q QxP`f#lF@?aM!ΝxA4N 8Ci]RvB"{F"x,QIp>KB*W	&_{7QJ}xI3e:m_͋OoԶFB	,LTlS!ڜSE$	֜A+.pM]{lOQOasruYէOպBSgPK}    PK  C:U            P   org/bouncycastle/jce/provider/BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish.classPMK@mc?T*M"((kݰJo%O )=(`{031NK2β3C!x$YLPNL{,Y:f'A "=ߋE8Y2}R7ETc;~Ch2eVG4tǹ(xPoԶFB,L԰lW!ڜS4)vIfETWf}jv0z9Vsغfxɱ:m(4,6QPK	    PK  C:U            8   org/bouncycastle/jce/provider/BrokenJCEBlockCipher.classX	|Ǖ46 nY
)66@I>l,	izM٫NvK)1
H'@Zڦ{{w{{4}>ɲ,iv̛7]`VbXm
Vxhb>+ZΊ&+6YيXVĀĠi3宁xt|@.у&wݑn30B;ır'amZ7?[fV ؒP<P]S2ub1'"x/J8ARf֮[ߴyޝd|i
6pS~hXNYKJ*ēݻZd'oJ&xԄRP8
бL*p(JcCP8$UWWkt"q*
]RW_k֬UUW_()d(WT%EFgd"Ңf	G}Jl$vD㡘,%+sc>ީ-Dd39eH˳:Zݗ3jӹ%Vh5AE ,Ay~Ł8{|T%/6gQN
b$vvWRؗj<gX,&MMj_^2DNp<?B;or)bsj(VtHNzi0wXo;(J#jP	.
r_7@<bCV#WAp%>QZv8|ktܠfi<A鋅⽾X(M6紝&ƹXL
ŚSsyN;j_)Q)-*Y-XHxp(*+NC|srDL >E#f--b
M87(p_*1LqDD8+=%=%;fLU%|n6Ήb64k+ƹwN
%Մ%1.by[ \>hxnPv|l2f_KA]j,-xKXCXba:B^WΨ-CBx8J+S3$CKly";FOx(J1%xvg©5@wdJL@BBC}SB&a%ݥFj*t'SԐ~vTh#u[S-kGȄ
{wIOOiqSJnJjF|;=Ctrʽ+
Kz:BIЉKw/=OT4P1_K+횞&ֵ'ֶ	uVhLlo1.Ew5jtQ5۠EuN]=aT^F8@Y&P;	e^PZ)T!Si$ǔ]!zAQ?_|3TF=o
4jgJѝ&%Js5j\$_&~z3TX~謑X/#8*8&H(%z%$'$NJ$%	)DZBcG$>*$'$>))'%>-$>+9xZ%~Fg%~NsB_jSnJqۋ-uڋk[
(_ $|ߥW,*eQ+s'Ú%'Axºd&4jB~&^\mg}xKxDJ4{VJRY0-xRxJfS8iv'V5^_ޖjWnpJstcmuOluEj%9krDƟ$tPJtUwS0R(M3i֙t&8:;<Y&`GЎGv<?`A&2Y;bL@]L1a8LX<[Ԏ_2;vO؃?c?瘜ǟҎ
+;8g?0G&ŎeرiGm>ь[voMf61y.DLʘlx^0"b
_6^D99L,bRe9Ɲ2&67I
5L|6(2!L,L%䢘gC{\^fryƸ
P),LW%$+*pUT0d>J&+d5܆YL_lνd7j!6|ɛbL]ކ8/fafRMS8|(=V߾ӛX{ U.j+'YA5>JvI
XJ)E|Rl;Z:uZKOkPj>k#K&>
4ꀙffOV<z`ɱ cvT{,Ec(6yLFOE#.<cZO}V(,amлY<$TIs
BC| w@@#ĖMF$F-SD%f&r+@6ZlQk2"l_'hTFu+:ts_˵~/#Z2mzǌKrA>9cxǛgŶ<;Js764eVK%;Yъ6Ӱ"XI|dD0jHpPL<y?*C++"(ψ-^D7[΢Kz_[Rnf`N9P:LԜœc!й阛=WSynƷc%ӷSfh1j$FȂތk
Oy6}Ncֱ{2/mv^ɛo7wm,=,_D|JKmWQǌ:<aｆo5MXo_%!;6_͋bˈXp1|ǫ87Kkp͞	kpfD(+%yav J*T-c18)Gױ\WUb	V5GhuK渴duiY|q`RkE/8g:x5|j
X/Tc:k93Rmba`5/P47q4k9njsF$F42c0!QЭkxۜMsoc5JD[XM(aUZ}YIG[ksbcoYi!s6_9Ŝd\#({"F^^s!K2#Yk&9;O~O۰IdD][0/dv>@v]L5dHc#pM-Oz&*huWŊKaP[i#G6#N4/`D#_T[m9v<j06.Y ncD/3Dg礘XEU7"eM&V];l3NɣM,1	y*+{a*+mB˫-eN%2J]um`A_.goTAR5&.'N2tr=痚2gn^y*[)kF|:{hÜ]W=2^62!rIGq1]th]
qU1mw]t|=TM`3kC+>ZC**7+zG\z8/LVɈZgDptu6K?;p9ŀwksWOU
xfa%䘭<Z?1<~	Ym̭F!1f7ⱊٷQ#["qK˺
ίOROg|E6wK=j?CwYPKo;Ko  $  PK  C:U            <   org/bouncycastle/jce/provider/BrokenKDF2BytesGenerator.classUoEƿvi4qqS
bJ
IZ&5MR&dz׌q +' ^@!V)\ }Cp{V{ N}1qDkͼ6yozN7mVgN\\\JUnKQNmx2e	WH<pxurk[)y)KK0t.%ojrmK+{Kx+7jŊ}i]-KQ fHL-Msw\qŝsҪWTUe{.C>im}S?BFM
C֓VnݫFה#r%٨*/_߷#g+[H{km6G[/yOvr嶘3%Jo.Kp̴r^SƆܵ
wHʰ5-FkCNZ&ehL}F
<o1IG
` eCjٷ3ǐHt襤Zsz|϶eؿxzF&Gt՜Sa}1bB(^c8!HNa zf^ì9
Qdq>I$i\/^
oikXаHςW+&xQU^cT`9ݒݺoG|^A) b&}h0S ٗc+ {cG0k۸m,_'
N2#Bh- B>ؑ^<vWW1gCx>飻GS@ɨ|>aF;М5B3fLD:Lυ]\
A |.Z~΁PȿB,G.A\OGp"1r6>?F}j{O4_]˥'b 7?5ڋЅBsPKK}ʪ  r  PK  C:U            2   org/bouncycastle/jce/provider/BrokenPBE$Util.classU]SW~d]KhM@ 6J 5
jۺ$twA3m/
	NNCG Qa:̜wswrύ7JD,N&$8#	us2]9-g PJB<癰K:M"Ooi <[%
:Fzp[|XMލvU-No#*C(5&zngF'Cq噜搖.dxF6ISPsm0aShRDqt%QX^ղd>ϳj_qEaSBIU0S3<mL=e%D-y=g.D9clvska.v+fVT7rص*/ÕXgcSTbZ5<_6+NsںaD7S0Ġm܋ɱMoJ݌]
װZ}LޙjoL(F|MoZ.P%Cc&Τyrǌ9Rsؼҭux
^%&% !5}4nfKF0UD"]jymV+vh\EWa;2(
ACa?g0C!pEB 2vC*(IIL`dS}l:4t m`|m3)ړaKWXo"Nd|[pqzڇg}E҇:[|$N2qY1!:0&WdtcTqI	!
1)#.x=B
чk2NqRlOᢌ~|,#21.'2p٦KԨap5=;թ<;~9!lISh2jdx
[lz!?^|r9o	h1ZnZubSG;ǝ+IK/	HzPU?8NN`4^}8I
/h ZVpbbeL/#?ls&꫗ZI:
ɶyl[jujC
F!<_-boo,Hٶ@ml[ 5붏Vƽ
~AaNn4|A5!7?E}a}j>n~8{=n*(nţBL	΀l\^OJGTzT'/^[/^Hu7U<G	xzEVz^bh{7.uvSa淔LktYi2ť0)ti*wWwyT+4Ph+4zhz^ ]$EI!R$[H+7PKFTfN  N  PK  C:U            -   org/bouncycastle/jce/provider/BrokenPBE.classJ@mjV/cĺI[ơ4II҂;%dfν5Ni8"x%5Q9sx2
KB7a6J,l&B΋ISUչY,6W]qYi'&ϞepsX!+++	AaZYkMG2UU=><(pphwϼh.V+k廭=[GPK6     PK  C:U            >   org/bouncycastle/jce/provider/CertPathValidatorUtilities.class\|T?gnf{#! CP_!	H&tIX	UDZ[*~!jFEBG>־*wwf.;sf̙󚹋/|i .삩.8\pNr.Nq.8qA`]f,qRs]|t. h
(\\Ges:Gp.Oϴ)3L5iS"NimCN1ꆖ-״ ^<Qeu-u
Fs5k5457V5r{Mus14.,	
%p#JZx5^\cH86;b`$^
ĩde4-GC+:UMG$HdE-iKcJ"kCq0R,V
+Ch0F+qgε+h$%N2h59u~c鱼OY_@2斆%sX.~ik@Xc,XSLhL:sekxh%	:ZCf$*PߢںyZVE T@46Fs«	aׅ"Dbe֍Yp]bjMC
~RmbdiSF#$P-^UDY65ͯkjf!!97jg#Xl]SB". oH^oo^nKaianRZذ>Din^ʩL|ۘFJZA[Q{`7u7ߗ4U#G5Tץ;
^bn3npJm*5Z6hHZW$[Cԝ/4>HzbL\̺!MԤrg0-Ҟ4{oӊP;ȊڒVޗtZ,j~ΔSg(koݬKtĔnY qMK,![\P_Z7)*wFK:W\JΜl93`;Se<$ijiGOLѹ\&v7G;cpj6@-έL9ˢe/T««fS3kګiP]ղ說4O@,
'TѪj19gyp0ho Hz&2#j6
΄dT!
*=+WCj5iAձ#a8I'pfp@)+@,j&*[X)nm\:"ϧ5Պ|%dR،ONc1E+uH%HnmG|	5+Ϙ(Xb\ZDHV[톝ۂ M'L=# 85\0d4<)rZyVUX.IpMruvs;e$$ls6ăh3bR*#8'nk1&vԳ=JDg{n_zz-)ժdaN \L H؉SfPegc%c,L;	_I$()N+f}7G֐W$8T>2:1=[l46ɦI23	K"-+j"TUjMdR0fFvMua@c}:4wehhUkr:iP<c_mod=`֠	1zZJ
oKV3cTK(jxU'%ֳY4Dh,h =;h8r+sLf dhcf	˼FX=`YTY!f,jq$F.hʕU4DxJΫk*iOY&ܻؖCw{0hhb&`s`UCк!P¢2&46tPTZa=gUAQ讪I&h%
fҠC̔[R[J齞0հ&Ғ54&ږbx|y #V\<Z"?!s	Ee 'CE
B1yP-E -
բuh4T{bMlp\mS5#RP*@u;:yrEvDKԪtR{L\hd)[F5>UI66hOPɱp΢<j~u՜*8\պUKT5IƂ%r&2tBk06N{h-NHƯ,cU^jd+YUx|<We#%MiSrӑ2$g,Yxr31XGR4!ʖLTYJ$o
@0JIy0VUT[sx1J("a<qrUWU*a&Pv՜IRWI_8zSL0@Gڻtq}JF|ԪALk-/1ba<0T:fN3	sJ0Xf-e)ENP9 ",LJHNeiHa͠& ,+&Kt9DC۵V%edG٩TInI","kL>؈,5[ƓfFCjoAcƹ5g0ˤ?!Fus1fR1!7De/T͢IqrB˽6АDAnIlD3z(N{VM̓,f'[?'qҶ[
Y*MqnvnRG&!em%SR1,jrSGgrں)Cg*^-h
,h
w0S>`Uҋ
"{y;e)4#No9XKlKh2=bFEQ駓FkL؛ Z4q䉔'g&'~ⴓ&cK!:[#tT9E,=
'Sih\fk=i^*՚S 78qIil/e놴|mQGbu|; _;p9'M4#ZtP|u[4pQG3.	!J+U5JsN^<F!
x3/xm[unFg9Mu'q΃cW@VLq,NeńqgQqLE1[w5#6Ԍeމc-ZnePGMb Y6rgu
.;IZ֑ȠX]H"5o3g,慆C좕dԫ(d=G94 p2习~4]_vA̅]؅K]څ.\+	_B~-7>JH$^ $"&!%#	JL	K8(a@Қ%
DD<RKbDDD]bGJ%qD'H<\xGK<F8Q$K,8Ybr+%NX%q$NxgH)$'K%'qS$*4K<Cb9k$J8W<%%.x&YQG.L;5RMEovg "/iqPVOcJ'[2FRZQ0契#z0z;.1[<[ G}0!1du<t69ꜵg>vps/
*2HirU:&@O'
CBlێČjIrT4ه2tȔ]{Ytg01H:cμi+٬ֶĕ㛎atZ
KU1we&ohҡr%oh!Srjrs;i'5qBӲcntBi|Jdzlo.Ԗ%'MT;t2I
: m{rDv}n!Jlb]=؇Yl.-϶
Օ*`9l-5ͫ,;3A~J 6|գ'
q՚	TYu)ɹ_"[>Mlk=mF4N"ipǒ؞*`Fd+$yf?CAOfA_D,6RZ={=-fP$VB{]z=y[atM5!r!h)r ~*3oxF:u#Y}9 v_e3?-~N9d wh0qH>e0rpv`9
%cGp>ILΓWXKzmG*9)>dpiwC[zzƂ'gk!Dy>oZFdo
y>sef}R2)e..'d?*V!M o,u,I_X?r;6sś$ߡ7eX\6[{ęeo,pbgiQq3mJ	ҡbn+6jgYoiC_%_3|bјa|!3r6^_fj)CZ}ZBmf/bNOˤ"KIU/Ȟzha(/+4WVǺwK:uZs`C;0T1Lg0a.|b8a,סc.?谆!a2|27b%2aXPİIu~}?bx Wr8Fr8Vfx
'3Sw:<̰ /d8&xC갊 gXP0؄֡
C'̥k:t1t3<c\årpCmObx9W	0q9[/2<mTx:\s@^˄C]"O:&\:<	0 unbu&n:pÍ
1Jb_:"CbEOtR.1N;W1^k:'ґ:[(Vm&q-_О!1a@6>'hd֋2.:\$*txVT1(&Gb:'NbtGvq
é:"N300x!.!1ktXA4qC%:*l||PY)(1\İaW.f*.a7.ea#c||WV2bXba
C;Z0CQX>':WB7nfV7n*xčW.7^ï׈/7~[1|k37~O&bov /0;w>w:137%ngxE7uw;bxnǻG23<ɰa9إMp<ރb@7n׸a6Fɍ[pNcMscx@sq[4/	<7>}vS'nͯY.h.7=,=ۍω	n|^|Ht^[߹q=7 dҋ#m$~m_hn|Up.=g؍?p9m2?rU2a{K}!АA21a(fep8Ñn57\;JܤW0|!3g3_K-à3}07ZЍnxʃ׉.^/nb=2<mb'Ï<}3Gĵ70je~#GQnxTlc|Zl?<?=+La@.5`T$~\=Onܺf|B8*لze>1sk>s1g'j, }Y&%1J3-1z$G	9F?,۩)P7<W۱WW*+>YUx
]0Ƿ[
Gz;+{mgewEρ^6([
wjͻ>mC7M_c ğJ|SH(U * ,4y- k<kIWKR\Huj9nZ*_3<֠UK/ߛKa[!*7%<.jnFlfXΤ9{-{Tk4i\Lc^ݫ]tq<s^ށ2O5z}Ns1^^ُ[
'x;'vWvlag)lt`2%#QWK]7K[cH|$ǱHzWa?A`(+'6ж7hەƍIA+8E9m+	6.z.-G;Oܫ]ѧQOu{C?>@xϡt;++|y޼]_Oh_^+wipF'v
u	 L<J%OVhaˁSE1 xiQO=VlYNkH8 #$nn;^3F/K"Ur12R_0.p4hZG'-bus"gxr'zuw=+N?^C=^iV"1vAr 7N[K9BvovO~|p|ND2Ss-TG`?>L^4Yݏ譶dp{u>`]^ծ,ZhswjgFz˩XҷZs*'ڀW̍GBM%>.<*s57|ӅΦA_~k`D(v?}7)/vܴAJ1OxOw6u8<RڜD&7<򏦑VG嗶xb#v*iv$'x?xh4FmL[c4u;wi`[{ϗ^eulڥ]дM.ߏﵘO/WI۩Nn7ϛ߫V>~\YveWiۓVDJFqs>=/yU:υ\W[&xM.!WiL^];4dp -\M, ?ScD.{,qN0ܣks kbV<2s t[ĊDImF\_>[Ilp1,yC6}E^;^NH~O{1LJfW̤}j3=^GI(ݡji؏OϧZ7$%N
V})r/ƾ|mKj<xm_Gdn0srLd	3ň8Me*BRhU|38r<DNJdt8OMB@=yH3gɣ,n-ĹrDK<fKrSK6;Τ˦r'L[Xb9f*+Ku'-	K[6;|:Tw
Qt
u
LyA` $l~i#̕4e{)RS+L&6N;uL0C;%=#J6
dJ0,=(:|2\z0oqLbNkR
ܺX?I!,s|b29e IPŊҭJ7ć
0Ʀfn	eIF$T,fIڍ?F\0Dfy'O7WȒ泹m
gJ(J>L3eVN
TjŊ<»a?f-<Oۿ,<| DRIkq<<#JWcTl^FlJ&fKlg|m'o~{y(r:ʻNk[g]ڿvjgto^W^ oQ`#*<>}ѽn2|r/C'Of0_ɺo<a}N$vr(c$rL;|I|A_ ]%>voxJ#nAH'Ē7s6Pwmgi/:Җp6?Xx I;#Vy'L4_nۥBE'66]py>>Qw&MSiz)s*IGWn5y:UW<Ls&(](
)1
sCZ(5*{vŔyԋ&)~gF;=٫]x8v]x>|H`n+v14fЧ-0_bJ\Ľm*^Ͽ6ڰqiQCB>ߘ)iӾyí0XnÊU,wXrIXWipJ o^JZ)0/2< c$ީ1*| Fpkx2H;V.VNJkxiq+RFJC#ID=I$Pijq!ٽy!}.2RZ/(-jtyw~vIoۼ.J]*vgz/*(~HT{tx	agC=UND^Kg^Q<[@{x##RF>RyLxQţ|w
w)Y 3yB-⊷O[hh27 ܐȚURW'ĥiqIg~RU]:
tC1#PKjz>l7zD(qLPC9ʻ/^A)xߞJuf'_j]@ݓH_Ny`×Q_ox<rEF1$!{OAdDVr0\1[Lr:jjTڕʲ\@Vu*f IcL(7v^s٧ euV{M9+]4(pGYd3^'|D"u}ukM%Kđl}ZK\+fhp'#ng\6h3{|z
sjѦ#N;s|}e>gL0[ZkA/6uC$|r1uzWBb͵|Ү9n'= C}?iQ7RZq|ȇmv7ث~_t<\WV:v$tSK!6FrAFRǄFŗߏ]-<|x}:\;sGcӏRiܼJ3C)I']D2s-[%^-pp*O%p)cڪ?6gZfXo"c8ۈTRb^17Tio8ڼ0mɷ*Db|?8]ѧ}WЭ~rm^-N獖ʝ#Z7KzuP`|ꎾд"4UM%.(H^Ǚvl+6u
8ILvtr-eK5ZnGd/lZd */LȲr2ŉwݸkp;3zm*7%P>;O"\GA8}
F`E|ۻeю.|Dl\g},exrj3zTazV
h'=Z*ڣU)=Z*zrUݣ=U8G
z0G;VN&I<O-Z~Q_mjqᆦ"\"W^2B=/¯]5=U_P-\vr7u~PKxz'  f  PK  C:U            .   org/bouncycastle/jce/provider/CertStatus.classeQMO@}[(~K=M8ޗ!%5Bă?eVMÛy;L?_ pΐ1:m1B\yMS0{pܷGwQ^tD %<5c.]q)֒{sk4]G2~0s^ʥD`%;VTrGf+KhyhxtVfЍeHul
{P5q!:#8)BG~_ןEku}/ܓ6_.H
Y4
3b
s	^# TcBSqTOji6hz
n5R5?zۖq-H3/BlJۛr{VPK2b  R  PK  C:U            :   org/bouncycastle/jce/provider/CertStoreCollectionSpi.classTYSA67

xA
YȢxðⲛl(U4TJ*
I8foˏ IJt3,ý@[LҖ"^X)ׄ;2Hh,O
)ئ)tװ-	lgsWB
#a,ɭvkzU	1ԥa&{|KFYpQkFrLٴ>'H6?ChK8Tِ_J ʈdk8
W""L*˯
R*Fɺ
;_޲vmRwõsg$-?߶bvtqME,5VbUD$sٌa.a/!YBEF(VUH57sB1(;v2ba/C#C>-$m
#@fךZ[#9M}gjek}/P@DiXDd~j3 j*v`Uկ
㄂ 
d(8
jѫ >pJA+N{O:`;0`daDy/ݐю2:qU20Q\	ЍbM!hD5b'g}	xzOO@BNR
Di7݅ި;'/ѶeZX-58-9/Ǩn>y'"!#A2ӨX/h5.&W?#ҝ}	 ၄`sPyLpoEPP\A4?߽nbm-Pzù'\;\;GPKYWS    PK  C:U            :   org/bouncycastle/jce/provider/CrlCache$LocalCRLStore.classT[OAf)&WzۊbXXMٺȟ_+&*&7˙a93{||̙ >g-)6eWr
R>]Xd#r9`քoE-+WxUB6
NUKizZaQLK[q]1dWӦ"c3ԫuԔUpKɎ!`WM:n^rJgZA_}B䅲135s]+-(gNfdjOjylY
L_&:R@r8TvN^>~A:_]%	:9iNHDOe菜VC^9G0җy_lC扆^@eIFUьIM`*ZƌDTtIф6Tp\hCZg0pU\	n1\
a.p!L`.aQsmiKh?v9ڳ_My7LD X
$cqZI3A
̓\}8+㖂$?`Wr!)9iy#
{%kseЛSC@|(PƊBZuV.o*x}rpd]?11:yzG*Qc:KmdYAPK>    PK  C:U            ,   org/bouncycastle/jce/provider/CrlCache.classWG-iN8(%	kK4M"*Gb%aZwUjhr%U+!1Wr'7Ò,'ٟ73y+=g 8-~G؏v?~ <%N7|E9,S9;=38246*@HhѦZ}ė3HdB49UdeƐZ6)L5Hj=5ϩiTs6bgȌ"zZD$QYqLNee MjpS#dXDQ	:nX~BPKav2g402YgıTyVHAuˤa9GH5Ks6-\'UJ7Uq4c*䘱ETs!MK1YF&Dx5\sZZ"Y~[*ѾyG,y[Б9E薣M.TthbNZ.j/tyNFOauRTCpZCu'36$cÉeR.wiJҜ(/(%̡kU*;*G㦮Z7nd{ڑ'tBkh5p@T<owq7s|棃PvB,3ZroD7k%qk8'rMw0CސRC0thfzBy1脙5yE](Fߝ'#:ՠ⭈{ˁ#IR]*^=]my'FYX3aê.-L[=xIU^3la`!eJW1 d8pC5^:^>3cH0ΐnJ'Y~	׹=ɛIUanO7ZԔ[Q6kl*mUZU2N @qc
І-jr{9ZmV],r{
Jv݀X̫]Q_R_h$kGZ
n#xk(\U.
]^㤍w_Cq(lۮ>oZUWۿ a2Z J^4JHB0E$%Vh#
Y	{pN-_qI8y|@	x+_M+v>{7N	[..ͱH؁J
JC>	/%܍H؅%pf|L>$q1gXK\|YD
qS"N<\|Rě)_q/.8ψ	|VOrq["|AO7|#07BF#X#4|3z#t|^q3Mo&m#	YZ,}_.۶4Y3"Sxf)@f6ӯ?7BIu]/qBD3Τv0vDK3xs*R1Os
Rг˫aKX밌_	e</`]|k6 [bAKAE.|]K^y?^b7_mTЗ2~[A"o:CEl_@>F|(K?(~2OWapgSPrNB:ļAon+w<?x{cCo(9n%|'W)+v`$Օ~H.F7
%Zze8͠2B0V߇huIU;g
e軃]ȘAϢ[<h.YaӼIr⧗Kx*_pJ3
A/PK4:
X     PK  C:U            *   org/bouncycastle/jce/provider/DHUtil.classTmOP~.o2P6^lC)(!(,HIҕK-.)$|Gm
2d1sNyy9_XZ'::0i:RmGnOma핣QǵJ^e9p[F51]oiyyKwC.E6
d|%aKmS{`8r-QvI[
6äk[vDAl
^7[f*XcnxRf

GQ6xmNKyFNi
iPv)데
z)WpEU
)`a DVm&+5C],3M34d.ҵg4Z,R1lTUC`0QYf<}ZVB;$AD!	$\ЃIS10fT .ᖄ*FqGUD1ߍf%uc9&v9Z
8x;\c!ȫLp2
~]tD~G~ٍOR3'|2	FGϸ8X-V𠂇Oo`;bXwȍIShF|iIdM3hj撯.PKZ    PK  C:U            3   org/bouncycastle/jce/provider/ExtCRLException.classuN0i':06䅭%	Pw׵ȮoRC!nC2ܟswp?>ܠjC EU*V|۞/JRiR9ϳx-kkVFn(}B*tvI}&O>YFi)`8&Gh`h! 1C3srB ;ե8n@A^$zC:P@n{PK   j  PK  C:U            3   org/bouncycastle/jce/provider/JCEDHPrivateKey.classWy\kaY|FN#86J"[ba:"łRV+mHz&mMmz9 I&nGz?@~?yy͛]=ǟ p=]XWޖ-uSaMIw\@E-#4?x'
tZc4zTCtWPդċjҤ	-gLQ* 9]x̱zV]V͚%3I4ۧGS1RFR%h|3F"gLEdֱP%ͭgo污M*BEՒbXIdo#$4L^PlW&
jR Oav`t\RT6
U![fR&=I(LvcEw,RW]F</"5.elY4=ޝ1>MR9AT<Qc:me8DLt	ؾgB!v-p,8ISF<0JNGPJF
[W:FX<9LZur;)=C@
D$SedUS{ݹS5Y;v
7T4[˲G]"_9ui3Cg/خxTԨ6)$
-ȚZJŽDd:!šZ\eq]HOҺoep,MPQ5fTCSôe'd)myfʾ:7+co6jG3ҳj-Qo
kSUn^Kĵ"[WDV{D&b"/zD ⠈C"Etqzcȭ7t
'Vkh2tC՞6Y_
mҝFVJ(c%TgiҝYov7vSSx5S0.RUCٵxCik?;^wڒoyM׉WFjeۻ"ϥrR3I^C
\snF{0Ytĵ6lŸǭf՟Y/
@,_mka+C_m
몜r#ܖ-U>z7hY"k0-"5~tʸ	2#*1v@р32B72ԡFF/je>+2 )fhfPH˸L&؄IqV6L3%2f/gGƕx^)f>aË:(x-p#x3[$CopoЏ%607I8pH\xXJ8H	'wb8ã"x>	~3|Jm Çpc9Ny1	wp
ǭ6wd4,#'e+6~ѷ溰D')!'t
%݉j4E!7R-Yc*'KRYJdt5*i4x7;"ya]$w0}9Ifxg3Aˬs:x'SdJNZ
f+qB6?᧳1h귧~Q ۓ7hOc\>`,TKi-g5×*rM%z;g-:Ydm"P×<_<$oWaC"NT6U
$ZуV~^$I>%9ů=L8HryTn(\nHV,C_:~xaJ©<NFH-y c(y|3}H`yn":GjoN(8y!Rj.[]A5n8Im,>ɏb8|BlDcH;wN,a~џ}['&$e[JNڳYo
@oIĤ9Ep8?PKW    PK  C:U            2   org/bouncycastle/jce/provider/JCEDHPublicKey.classW	tcKi<B(XA
	4	ۉІ<4RF#}I}'mBڦmɉЍi}_6%ے0ܿ?> H<˃n#\;	fk5
poۺ$J*QQU9NH2Ru()`YtGPu4)5bIRѸ3Q z[F1ǒf'X</&vdT`03:F*y
c'B]-6=ړdeaF1jF6f8&hG>ĵ%id"fPi7N{-=5hp2d0ԿpDMZRА驌9h*k\>_֟1>KWX+}IZ-@	jLwYiEdpYaizlgFGy?-	xp<}81Sf2HKcJDM휀+Ҕ1,A9y'iĂ鈒6jPI뛃}"
8e4&+OVX_C
DN)JzI!`%\FN&M/%_lUWC-gc/V۶Hm"LD`HNit؆	fL-$Ԗzyz{vKeHZ-!>$dEZ54%>BQ)
u)Y<fҮ2<F锺GfD#!Zw!L=oZs"6h$" YDVm""6,JEVWZ6"Cs\[;{[j]zq}szd%5޲b|]H(>-FwF//]L7o!ݙe<}"6VtY{pZ
NdōҴ2Ho;2TꆊFVW"*G;`h	ԦhDlV",eݗ;)-̗/ޘ b,`S%<-̶l-Upʹat,+?XlӦҰn;*T4V?xI%fT-4'%m)%5꧰KQ]x"P/y鐱!*cT+aL2efXp-N/jd\؍	]dA\FFLX$R2g jSAPC2acZ.<_ex!kHF^R623Wʸbx5k^x^ugx^]Џ;%n'NHofx+=00.$0
㨄~nG%>Ȑf0p)\|ḄCf$XlV{+>!A͏2|8u'},v%ǟ4D7ҺASLSRC\7L黰
?諼
!z(>RRQ[Gibz-prl9ol`Cax$?/ns47k6ؚXz^ʋvX*yg/r,~g7yf^YMF]na-/B#'ć/`d1,Exeuy$ВŷIlu
g;Qh/GjOY,[?1Z d௷爿h%yZv7sJW_h 89^zP_U"FEQAD9H"F~7k|?j[MJtVw9+zճ*/#c	ᡳ^'fq L8p+v<Or,FX<÷gm~jN+ENnVGA\	-3B]^K;==ps^7Ӫ\mw83Zw,|7]C}F|]!{#gpcQ<\{G㎹4snv}},3{.PK	S~    PK  C:U            3   org/bouncycastle/jce/provider/JCEECPrivateKey.classZ	x׵-{`bdَXC0!`ClAf1i%! nӦMItIR6mSCSi
]{}o־GJϙ-G_{=s=;/W +CY0e[eX PUk(vֵg--gZP@A`ӻm]m^bֺK#PVS[=;:}k׭^%Pu7{=kǷ:eѵk& h"^\
 1Pu=Qр%Q8tXxv!x/I/Ij~s0K
B͚,`bvBQcuV4<2kѨJR49mldW7,
4WWz,/euUi!a5H0!JdZh/4)ԴCiQX7bR³tt7V0e3@TM"$63E.5J6c/^ʮx/˰*sMUӁi>6g4ː=j0NWc.[׬Zn+Qt$7qXzdAmjރ>=E:zd1TCnOPża:x/CwU0Drn6%'2Ϙ8n	tmW!ZBQ[=CX6/F9Gl^L)5&WW0}-
i
耻1=Xh]m$RuάO~#Y65l\>Jq3QzƃA&yt(#Ѱcl3Gniﷅn{XQѸ_Gk%n_j;u{3ݖc	C7O]:Ө9$6mvMf"Ǚǒ4+AC&Gn;b6eڱ~Z3宛"wЯknʲd qG~w\I
lx
wƒ\WɬjV)yZTct75Xxr4_D
d䵍ӱܟ[Z1ܝ@c~<
OMonet33Լ*NS+fE؞M20ă4No*HHzwT-ZᠦRl<JٱV%QH>f]S:̅؎PB#Q-3P9B9NK[aͅ%\&F	mnSB	^	$,aH+a	%"u^/
nF	^	~	}4	$pPm%$%D$@n.)nWi9]ݞ:
ys(_*5OBr*!Ұٞqf|uُ8<9jR0ٖ>:E}NS#yS97aԊ璜|9s0d>4
-6ZW\aW ?gJ˝yg7qMS,߂T#ꜷʻ2ǭ58mzXrɵʔz5{2vrJkS`'cmd䮰d6.[g%vɡO!ߐW6m{dbI
@o̻g.nUy^V
M78aAwg`c弐.q7ؕ<銳u6bF*
$):
9?I~-?KDinK&{mf9c[6fVb6-wnoפXP!W|U>CBT_'t/8P򹭠ÑBr=J.m?eYi.趑AwD/=nb|\xNA->0N)h
1
.'iN+02TBV
v0ah`+ÝvQ6$7ƽq𢂫w0J_VbU(ǧfX˰:-oYMU:|NJ|^8`3F\P3T_dڗ*|i_QWlx7

w
{f``1
|W
~_
{?T0P)X3D
,/Y߿ؿ߸Я(x?~_'^-ᢌw,Bbq2
\>Qpw 0
a	Õm2-1,(񰸜aGD5Vu2bh`Ecb!R'are|@,cEW3`Xdhd&(tT,`a
ZVOu211;|ǘ=%3\#bu;nd]Ƈzf2f>-j61l1"J3,bgp3l,^|l((9Fl	VuBqR̮b"X%0C*~Umj+xA)8e R0ZJFKh)-
j iJ1zWu=cgľ?Y[!-E{^7>ͽ=im
jshqCBD
8'7	1m4;œMW⃴\ZME%xQ,aD½N\f|2cQLm}~3y_Ԇ&NK'bCJ>n1{ψi念?	p8.`36Ԕ$g7=5LxM14|WNd\c)k؋*J^|J³:@w,KK[A`A)SY1DJM*o֦Yg~SJ|Eֽ<1qCH|ftE%U_GmZaq649j籞0û9COyCwn'=Fa6jm$U&cGS&{a̧73!",c=g1kM/yҡT"frE,В~X2FJ\E)\mMW&'9dNC{<sǇ{gq<!hx'Mю	4{G030I/1qw11!nOў	<`Q7&gfsq1`%DxL:)Zo'Xs%IRAUFztE0	<3ɨ.:w11&nY
E	?SlQ6΄g%<{T̻ȿj^*9ScKt(Q8`K$fWIF|ݚ^aM1}\"Nqg\;
*\,M4Z21y
eKEqV`(=Ymٝ>4 Vziz_=ݜNMg>gN OB<TC/ceJ$HMx"s]($M|Et:#yhY7-MM^U#GQR|,F:(N'B;Lh\BV:Zqiʪ)@,WjFPw>yIk;wok'pe7;)!Ҳ{5󪪄OB5}SO{KZRqwpTΜ
\
%9>fY?ӟWiҳ$k<ivF7Ot]>% XZONMZ_BbXv-PK|μ  @*  PK  C:U            2   org/bouncycastle/jce/provider/JCEECPublicKey.classZ\[H8pAM[[P-m*-UWBSCI26ijl>JZN7nss/:{ s9|;O Q%%(Q8&|%P[6nGr+u<OǍcVjk-?yz-5k]Wip`w.;[Pk[k-Y,lks:su
mm
I/^) H}k+pAoxK7ith~>w;z۴D5
n[^Ps5sN1zGs<<m+jshM1]. 9\!ceAJ7Tp5ts6Kuv
@ I0GTIfuYBB.6$NR1_nQwvh3hC{þ>\c~vY1'iݼUsM=owh`M "iz^k]K7G4l.[3)$7qG71,NCy4ҸPkᐱ斠G, 1ӒB79M_蜱ŭv%C:Kf6sP\Yaŋ+́%V.@BlWh\M^&WMsdy._>Jڰ:7p[]\@ucKen'
l}=0cZzIev\3@$ɞ i..ۭIDE	"C͘!FgHC&MYVQmv5ZSׇCN_59NB
$KPa(& *KEyinsOdi=.LvUo&7ܮPاUB%um%p3#T^{h'^v	0e5cSSnXh+ΏQV̭`:~X/ɘSŸM89ZetUw30Npްrdc2Q&E5QLiDAs//lQ;d=u҆tdM36Ol'O`vmukմۼta}D{^	Z~.'} VsJjIYvU}'ى1̩N@<R3͙F
LIviJb>[QptafN,x\f5Sr	L;@f:ysL<	5^ii|ffZ?#q9'룚y
իdk<KzS4E½E~DȬb$_ɅMT@,m\ӴtR|)KG'Bz,R
Qby%6HtHl8_%>&I"	f	&)%E+Ub	D_" #qDP"$A{%I\*qD%.'%>%qħ%K\)q;$>#YQ49ɋ
"[ԔUNsӐ/QJC%G"Θ(b*)$̛(a\`ќ)6:w<ArSW41IriQ&O9q78:A|l?n%Qͦԓ)W]`pܴik_"[HdYԻRk^<<3Kq3@*2Ivy&	B
إi
HWt1	-ȗ՝Y]j68(-TՖ䍪T|nx3'֏Or%+
*Ym4Fʘٞ"6jdvReE2!;)5NpL漷24gf,j|Ube7L97d-zUʭR>ZtlޔdkOUc|a
bgXzۜ>-~?{g:exIե4f_良v:LHnkR5&oeuunBPRo˳=*"˚:fV@
},׹[l嶖4N4[pJl~%!NԣƫM{IVUT1UqOheXp4gT<~b)
UPUE;8KpM_fDPq-~zTE9UQ8p?gTT*N*NgX%xQZTшWUXʯYk*b(oxⷬu;=OA5xC#wtoXT`XP?XUT/*NdXXPp&xEM|]C2Kp,滛?U*>èCCU¢AHǉ|""=L`(#J
-1 wclxH,qlRf0G	'*dVpX&1Ob1I
n-b["qv*+22PVp8aE;X>Ѩ_+8K]J=b3Wb
VSl&.nx2W 8a%C;F 3|b*dAdAdވhe@0hA6DaCSDYpC39.`U0#l[0K.W(c`X@$6pS<OE1g`PS{VNbQ_5KH[徸գ! nB.xVpDRv&Evxzx.CAqaCbǠU*n^=(~ $ߦÒN7;I監$8.@B .O!AOx]T<Sk,܍~ԒP_|aoF[;oBqQB&,A(\7K<,N3!smHK&|l4z
,lnYm!njjbrF)Yc#{%CtSNLvJE+MU.hc=GXM{*8:6=^DJ&BZގJnT|';!q@<^l.	
O'#@rȁ$aJMrXRQ!Bkb9"WFĽd]'#b.<C#8Vb&OҏaQ?$>w`o<[^lv,JTzjڹSTvW}&=Z/*jMFįkmK;u"OaHp
5r2bxuHcA4T9iwckgZQ#`X:OF5?)v=b}TZ۬%&>/IgJcA뭵rwu䐸!skڤ&X={&5(6o
!o+
J3<{1&--T[8d=bDA=rBixM)N:J/q;P}H@?`pɆ	gʁYqT$I10II;/tpctС<
3'R\;s+b<%L[lkw'QMS?0¡]3{9"MTܹ_|jHQ;GĮstTǫoDOi1n4;wD
&_D2$Z19.ҔD¯S.jH<oaAgz@Y)ybǗRgmK/iqCb!-<f~!g2sEĊ!5/eΚwB(wҾnУh/yctO>Q{%a~0çnv0fɥCn=@جRڗݘY9z,R+D+wtl<Rw,^vRU]cobqߚL'cSL*įCĐZhX1\-%ۺcm2a-	fuv0nGse1(_XP8.EEq}b2'>΄Ɉr_s#yD!)[ݞط`֨/IXZyo5l ߅RH#LM"0U,Γ_?u	_yy_z5Z>;N趨zY"3*!CG;zؔwYx*I/"JNfKs	vvPK9  /  PK  C:U            8   org/bouncycastle/jce/provider/JCEElGamalPrivateKey.classWWWŁa,HZ2@UD "0Т(u2afVj7lHOLBHfOsN[ww߻ݼ؎TL@~H@d%{n vՈ @op.i>0tPAPBj 43gj	X7ӫM'H4
FQ>Z t,&TbFD5wwo	S䀀ܨLH1kqCj8iӜ g	Uck*M=Pׂx<i\o)j4j"f9HA@5E[>t!BM<=St6ԠP۝yIm#&KŌ2Bjk6+O^gLLTʮ,?n51
bAL0'Ԏ6%9vMqĭ)ٽHkƻ
ǃxPSFlBrx:BhC*IS+DpZ[6{ܒ{ĉفPMh[uM-Y{|]Fd͏M:a
Rrf.bUB3t5<Dz,bRK˘Su*Ǎ"Fĝ"֊X'b:DlIfw"#^WD"hhTlsEDDyZOk1mu܊j!=}EWz
gģGC_.<Zj3fuEP]}nmlynZs6/--ϫ:ֈt(u+[yU;-Pbls;*o\(^vsϼA9[b]);;F0kE>pNOv;1 C=2q
(E؁2cXF5U,jY>ᤌ< c%Nhfq;TX18$c)NsO
O
2Vp9"Z#K
CB;a	`HxJB;x؁I	`1y	>Xc/Hc,pxFB7wY		~<'4Y<+W	E-sx1
rg Ŭ}q.e	^~?PBg|7DJvJBPl9
	K"4Zc*^΢gx__HJ1j#YD<7\p
w{﷭}gV_ֳ蒀^t^l½6asa
?eR9|mV7F>Cd$=/v_	|'~tRx;û5^.5sm
E7LtY.)C	Zzrᒭ\,(+-wX1qYWqN9)0Og9Ms_exj<EJ*`7X58PzOŁ\Z]Df6Ytrv%dԆ=$wM@-Skr\"u)pTLD
2ZgcV˔[j
\ƐI#PKVY'    PK  C:U            7   org/bouncycastle/jce/provider/JCEElGamalPublicKey.classVYWW.[CF\#jtԠÀ4($ 	4ccbOK6;{̾$'I|sDD0dUUWU?w B9*q7Cqv$X{׭vSbJ742TiiMu)FIj*լsq5"6#)MCN&̘b+c)OYJ\՜au|RL%YrxSgi#RV63H>.ksiErxwVՒ3T{Cx2mXn_.J[Y-4xT6Tj0AGt]
CRTh:ŭ,P1ð>H]h8niQdǏge՜KZ	YcsRQsj1{R8.$p1	3*OsMVR&sdiѣ?&nq-fh(
s蓺YSy
lc1IU)l<L4zD3M]ӖnȤ`f?O9/r24RMwsc9v)5]eR)~UJ3up1.1C< +fT.`Kn{Ojp@@P@:2l֎2Z%xc>|eWp`9\@v4o	ISSpZБҨlhkavEaٕe+<@
R&jaS>͑
"u""5W5#f?[$cm]ɶ`b|cZ.``ӰMJp!-oxMuՎZrXj~9re)Bqyp%P3P"Aư&<#pVF>lV>aTf		>\ҋ7U]H TSAq.VDaJq"oqE	$`.<%э4Ep\rqOm\01WcT%t+0aֻ=%y{L؆F{0={My==eP$<eM\
- <N/3̙3_λzf_\c.xY0oΥշ|Es)G\c+b2x[kBQg3}˟t;]9~a8CJi@R~g m޻7d9S-ㆢi["n,RI 	N\d(_X	בˎ
-lX@/xz_q(ޚǻ8ϯ[Cߨgk<1}ۮx/Jl#.2H#7٭}f%o);?Y+	C:Bwׅ24g\iHPKZl  B  PK  C:U            7   org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.classWwƒ<ʖJ$ֱX.ڒJ2	d4F^,b_>I	VeHByyj/?}5z^p B2U: i\K֔$?PO9cD:
rq˰Lb|c-'ӣ	h4!˓y|ESsDంʦ潝
nٖUA Ql'>+v&Wu4Fe];2ɤi)XYz"EoYDwqQ)I؆3fR\G.㎂dfݍ
{N4
#vmA[@m_o;1c_ N,:_e,&DM?Oh=
3Y^	ݎk1ϵxgz|t\-i#gƙnt4Үhn)NWF|T4bD*IX3{͢New:ǍkN6f=%LMOZwϮt"`Ci{rҸvN-ӥWRPMWͥ"m+
Dܡ=-D;axCLaSIC4L-:֘3SZFH*h/1tѸ]='Y[1b@E%F_E9#V&.H>AU<)pK2Yp#jܔN77V{mt-=1LHH7UХe67Eŭ*6جvSUUܡCE.*蕫-uW(X{aa2cMSo4[x{$ߐu/^ra)7|ep_GSF	_ɒ/
TT¿;1lRy;Li˥Ura=XK͟[KGMmZ!lapCa;^>p
})^B=:pv0a-C#72|!̰AcΰwbM0L8%C.wS؍Vn|cH3L3<aS"3<h00d8pQcA[Af*A1|,wb/|!Gf >ǃ1f8p,÷3	
 AC0e80KbWWM#>a=^W&ƾ>=9w^H*OM?eRzDRn.)Z=l:_Fu_dp28ggNuO WKzZ;vQOȰ/epYEyy'dx]ß	יִaof/dbOgϬ`-nM5Bs~{Z%-jOeOde?ٟٟ/\^WTHVU?/i
at{G{g^=#-x;ަKޠ&9&q%ɚJOfZI9\|<k^_|"k^[TLo4HN}r$`9'G*G$om9ʹW1*Z_P	bܣxEɉ~En(?;E(E):>(HѿO%,R3K~j?xX;/W{EFL9ZvUtjk\V}:oЊOU@/KtOQ@/7J~-c PK2k  K  PK  C:U            4   org/bouncycastle/jce/provider/JCERSAPrivateKey.classV[WUB[i/;EkJB$6L043
ޭ>krɤ\j|Ξ}93˯ M3f⮝v]|FK	h:uD4&@DNDx)6=)Eu+Z[ѯմ-@NN$ZFa5!1wt;+f.Dh6fj٤QLYƲBVeJ.k# @Y+:El2Γx2yQJA,˪bddlEs5tf't͉p,]ٻ7w69δjhZ,7!E)N1wֵ<pU1hZP5V(|8htm+$A3L)+VJUM٫Ħ'鴀V$)m;ICxmɞ~^Ŕ(UZ9Y%Zj')*ƒ.iFRh-CSVH"&=Hy7kjK$XEnr.Qe&Kj*(^m2,%#`WTqYM:thoX?}":Eq@AD<.Ⰸ#"8&	A]"BvժAc#,;JSՈ$y 8V+`%`-"ڃ]c)
V2J7t{U}R@n~cf>[* ޡoW2QVRv0|Z`fJD9عz.`vʐ0'q^F3ъget'C_F72z1ʽecRn6{`Jv$dlE
x/p/4^`sl.e	'I8xUB?^a1$"fQ"-ؐ#S0ӆg
Dk,` )6UifMQMgY}-Л5ڕq57;NE#8%}5$N+Y
u*iJ/h>BX	:޻O(݄lP2.[}2sox70=H>rsylco13=nnÄnܾ
%NA{Qtus7prx.B|r5RnzIӚQ;
ߡѷ}FZx׾vE\ɯ9b4xe@5׼y$Z>]ǥә0H-b
\t6=HfaG,#Ny{X@?(J_z7O[;r(|8&jwL]*oJPKar  U
  PK  C:U            3   org/bouncycastle/jce/provider/JCERSAPublicKey.classVYWG
f $.8̠-0 &Q4[CCO1'򚟔Vw#[Iӷ[uo? mR'М0<ek3<|*W	CR|bt>ݞC,~n݋pq47tch"	
O#Zps:\n(YN475kMp
|˼9e1lp
4le
,yqUSB'~ViՙҺ9dJ)Rk{ٜ)UYuNUtK_x-ሯ5T
T#g2ͳԼ
Gư{UUtm,zSSf(iW/MW;\(wNz{Jո:%zS:Dn"Z]*e	3Mu\+cv*{p2^edėS:-("9Oդ<+U"셊k)"eA?13W*5Or\(5suC!רe8A]_4"TPڍ!!p[W1]+po;2tO㮄IHI8,ሄ^pLBZB	%PEUiCPÝKjr#DkzhjI$>|
f]q9LH3IoG<z[/>i55۟ umR)ZN\VL0Z+}[f)?]BTՠoux	e.y CFRNhàLW/ ce</B2Z0*ׄeÍ\ě
xЏq!n&qZv
1D!& .T=t!$rI$0)A.a6Isp!|nC7Sܪ}cqUقZa#J=4Qiz)g~oe-k&}%ؙlwgQy1R_B _2JPB=YA!ǟ>ǅLG"
8;n1C8CDމhX'_|3	gdgA-6	֏(seży{ho_10W;e|>YFx[GO
J;dD
f V1'YT!r"]{ FTw#tᏥ}Iĵ#:,αpq~|	|QȶĪhFUu]^]PKxRD  }  PK  C:U            4   org/bouncycastle/jce/provider/JDKDSAPrivateKey.classVwUN/E5m
(Оu
e) 4&af
HS_ޙtR1}{׿w(~+CYP!W!%Mlcf[Zj boGs:eͪa!@jWB@;T 9YHЭSiؤFJIZy3I4ZX@9
vƍ"Ϩ֥&3-5Ҝɽ*Q
u@4t1pO
9>eRI0f_3y@hklzRU:	JBW"iuY=I+GVFXDi}&ciY `=Eѧ4@"|iS%igCNFL>U2#`XIQ:a^Q !r`KFD顝BiE5E5cƮ1!Sbqk+Z{\=A@+fxM/xJXq%aro<\q!?)	#~Rk94@hC)IK*|CoȽY5
$=|(huc<ioK=S˝	=]R_'*NQT0X[XKE,\
+EZOD~"ֈX+BNz.nSv`¹/;I||@n|:C̳}g9$Xh/_f71.6mu>ڻتvZcP`ӪIW8'?5'r Уn(H]*뼌&Rdؤ
eWmyމցb);{m4fk2u6>0o-p{d:Q2ae,D2=dlY<d@Y8"c,f2qqL\<%UaH4h땱cYDY$l)a+,	ۑqI	x]BNd1ⴄV<J؉,gW$s,^mLmx1`d78`,Y,ϧY@#Nd1T&fq9nu/T)@AeV8(w~#$C"ԓV{JtRP	yFPL=`ZުE{?

8?Ou,vE)8ǽZ?Z7`mNCEs7ߧcT2gN"*)l>Mf7u?˝5kR(]W}Mߗw+!'U®-u)\q\nz8Z>E]LeqZ9<p)K`;G&E[w-[p|;/F]\gA!Z
~St_݅^2o/si5UW}.(-꿇P1)s	i|Nkkͭ斫YhaW#\AIUWAB;N:پ+N
og3jK4Ȼ.)CO̦86&_҇EUхrϲ!) yfvN7aGNpldan:K_&=5`I*"-u~i
$s]tٯRPK5;v    PK  C:U            3   org/bouncycastle/jce/provider/JDKDSAPublicKey.classWk{~ײY{IDl	$PbL F*mIt-兵{\K4M/i酶	6!i##/yEmIzs;33G3fhmfnƽV*~3BθCG4;'`n={iOJ#qCOk3c}~!M'!e5ײibRy-E,ɂjXfۓS$ZgSFZșSMq 
eٔ2hA5)Ls֖9J0Oi85#G~"ֳӪCzv"lFo5noEs`0vRV=ćOܡZmj*m΅]!9BCfZ@MWؾw7-}f0e
P<u#`<̾Ąf
X(ӓ>=ZٮKK>3N|sBMiBSQ,jPjY-IQsfF,fReZmJ_rp[y3wWPCeZ]~zX)h<MI't6B(uɂS{54z=^C#SL)yH!ex*,;ҔӚxaɗ`{do%
@6K3u%#tj휫LWST
3Mk?} $C"6%"""*b"D< AEI;E<$G.:(jWĭ
|P&!	'j'|QoXTĚpgb@o/2*fj8f5Kl~m5>j&}ݪ4]8L.RS
1 '[]H㈩O>a<PY#y9QuWU"OxZ-V%,GhZů|e9_uZ^쉺ٮVe~rߔ)[sT#qXOYF-2v	{YkƸ=.I1$-c-40!N&w3&Add|2)bȸIS2zq;r,}RF;,LXxvG[p3L>'a?,_pJ$!1C"2yF JL^`"3u&ߐL^a=	ì1ì10!SI<U&f}	#aG(#Qg[N y&/0y10yX?%[:5qOQSP!FJ:GUٙSil'fXA`SW	?q*wb`濢_\Ņ7=eu| i!*TLOswnEq?,l{f"#WfFt0#4&HFE%ݮhq.".PtR[\~TT,KEj	ADcH"vR^L/mk"7
ΑߝxKw532)@{ಳOwT6µ<k4cpaHV#~[l{C.W f1q^dΟE@	T.;^ØuRʹjAC]^]4ytT{9KMm,c%$q
7v"kk+b]O}ctyz)v0a?.nV.%]f5#!qMKH٨sfYG"Ioٙ/I6=9O|		?C{;Qn˅Cy={gq.RG3\8}}j#PK/O  <  PK  C:U            ;   org/bouncycastle/jce/provider/JDKPKCS12StoreParameter.classoPǿtoen؃B2"q+7Hhe<d=s=~{׷ )ÒaE1C8_RƇZh/=S\áU[I2l%rs^.+:%W9swÓ+Pzjd7f<n
.Zr࣐1Xb\Ȯ}";r@s=pi7ZZ{o ]\Ҩ8<jBi$M@<Yi׆V4V5i~螰/f}Ӽ&^2E;xtUěG:6ֱ:#n~8lÃ,60
QD-[]Gq]\!xPB\kc]J	KH/,ULv8KczG3 eŠ
/SylMqRcpg cE$'LZQy_=4m_'	fndmz*YF	OG'"PK\et    PK  C:U            5   org/bouncycastle/jce/provider/MultiCertStoreSpi.classTRG=#`X
%[  	9D,^vUe>_TEJ<RY!a{zOw홿7 Pm񑇁!2f9A/<Ndm+\N[:%ˑw?904-STGtjzSڋ#KN
\Zu_Y'ͪL-U˗  CX-$Mhrg9e%GOEUWigE5Vri<'<,)S}uwDht0t{GpÀp,@T}6=Of
5ߴNMheVGݴO7HXKvWJܪc2dtsW,:L3rr
2&ba͞cn41v1qP_eE߭Q>c9Npr> iZv 
wLޙgq#@|U]O֓*PP}kGkgsRգ~poюuattM%z8:>%彬]#k:zq]GFJcq,>p0a)0O5$%v!	%¸]H]I(՛[1{xF`Kcr!imk?]^5IDrXÙ--l:x@:>@D%)H+H&!Q8~/L!:1]kVNb̮㫛ua0>ETgL8o*)1p=NlD
G#>"zJӷH4?
1D^,HMpiW81̑z#:p?g
PKi@{    PK  C:U            -   org/bouncycastle/jce/provider/OcspCache.classX	X\/C3I^ILfh hQe38 DhƵk>nikmڽv߫ffa~_×{=s=^|!t W'J|'4'NrdGEe[lȮ^Ϗ&eWtcNz~:oȩ44FPsϠ!o<Ξuz;Z7u4t4u7
:Z[7w
Rg^kCG[y؈>#\ޫS.P1bf|X}Iev<nI9t{M#L냃F%?tq1ս4
{}CaTná0+CD=!bo`(B;K`ͦy6Sĭoc$Zo[c&5'`lfs7#E&k1"dbj뎝\Grn95j@4HwLYv[Ъc48AaĦ:P$D(fH\B.ѣ-Q9M١GTa0dEG~v8 PSqk~&J[&_dzaX`Ep~q-	57h
9%Hz.l#F!as{SrYnFcKa	f;!
q7bw/NӽUkxJ/(gM2)mz8b$LﲻL
FR$Lʣ^<)ؠG[$Rj&$.cPϽ#43`Hp{]Ǧiw-D3r/0FxUsq4@X1Vupֲc퓜9|p|8NiT*gKzq3VϐOLxO,_2iNL-0&&lng}Ǆ=,=B7O3]2lwz
wۅM8<ڍPm70}0 j`l}x7z^cs2ջL\|5D23%zhF%Ɣ"tD RAjɗvN
sƊ<N!f+$[oCFb"|	n-70C4wɤt'g{ԉP5'},4C1|ɗ)T,zI,8ObDDzF%. $QBfMmIKtHtJl*MK[bH\*#q.C+0$z%$%;%vI$$({-晧Wߛ<A]sEYۜJKyLXjT,TT6)AgAEڎ&B0,Fqe:.˧JO+N>iSOOPQjVU//E8uL_$Θ,HXZ*c*؎L]9#j԰TWd"2Ӝ2i4XyjxisG}4\2-1
̛ZpV<&'etqY Ugʤ)<)rJ"ML~צ49$eَOY+m-2Q2ڑqlUJ.%g)!nhR2u648m|:pm'1lx:lcyUәfa9PLeϼ"^)?_bJnj㘐aV&<ץ3TO\UqVarU,gX0PE)"OE%T31b!&ûPbĳ*T3X<ߨSQ*W0q︊a:|Bŕx^RGT2OXO8aU
Sq6r*x/XU,TT*<
+v*k_WPQo2|a.O=~>C!~w\<3"Og
[
oZF{oc
ux@hRp=~'?3g'(
n
nK_,TTp/t']6E"G>I@		
k"W"O}pY{qa"KCT|B<"<&T
e

(x"s
?p~G7p;^cx#wЏ􆐏?V?~Sh:o":O ,s!nj%Wtn?C#'7AQ~ω8;ḨUj'X0p{=RGIK-(rb<4%-q٘hDr-9&ES,ÓQ]gDR->&z=UZ%KlُZ~y
XZ(WVqD'Ip*{uќOD=Vzrqs8gZiӵ\Za9*ֿ0Ċ㡮*1*.F-ۣĻGu5nMq-a1()<$,,j?V!8+5*Z-$~Z|28vqۥ厊%^ƄTy`viZf2iEŞ}X{zlKXX\z8JhOϣ,1nXbX+
-R+D5RW}%T+q)sheŭ1{js-sHTZb~ȭb1O\S9cbr݃M%sDLÅqXl=qFtAco3*Ί!!%8""i}O!Na"ٔRG^
≬Wy:UG?^r;$._~'%nxvJOIx?=&qwĭo _ss`
oJctSLMw«HBﯣe3*qPQzk$C͟U-}Y-ՄW=)Ko?U4ѡ6kØh|V,f9PK "    PK  C:U            @   org/bouncycastle/jce/provider/OldPKCS12ParametersGenerator.classUSg~6]U1-௚cD4*(j
A*DʒlCpI
-3/ЃӃk;S'^z^;=;Jo7H*L|~/U q[/#Ai*َGt::Ǆt4AbBLsi
łCQv8p
oez{(dMթ>7&XQ2t%k978eɕ.!7;FaܠAƌm}pA{a~1o8fda2s]pP*J"e?4/	S/i4k+F$kXɡy4؅bR0sM)vˎ1@'f(zv1HdE)%k
؉07Y%a9?<*@#yr#*ѫ++{K7+Jum	.-`jԶ$[zqɦIʺINɻ0
\Ѩ{Hx]B7$*MA	$pCﶛCS$:ⴐYl;MYl`O8tD;{>>+Vҵ9#t1>h*018=
d]
 (P!*h(F
cЀRBky3`pWH N"`X 
b(s 8AhR
خTXv3:zvF@v]C"IWpe:w8
D8Kh(Xl!kl|XXYC3[U$&Wqrr|A#г"!<+0GV$hG$ZA|<^r{~=Nia:)pwLOB*撢*~UbO=/׉:%q}y=E'ǭQU>6E^A;.cKYx>PcK"1& [b-,|ү5[4Q3UslO~_3*Yox1oż%OJݘ~Ub$ݘR]L$JkOpK%I2!PjWfWCLa:5?cBH*BwhmCn[R_ydYՀ$-¶%$7Ĭ& ~c~#,f5\Q˔߄ )@5?8AS{R|O i=ҴsY8)<hiְo͝f\=äFټZVͬqD
סM+Қp=KXŹI!F3^)PKNxi  q
  PK  C:U            +   org/bouncycastle/jce/provider/PEMUtil.classTsUnd ŖXKjA!ڦ %Tmr1tg|M;xGQ4P~g?`e}2T^eeg->Ǧ3WfA3S'5P%wNs0
|dY6%S½bv*7y*r6aϲfaHVt-򂽋*,3<O1Mx*,镒U[bf>Xm=͂0i*N'ZY[iAu3]eػnfNÏ]73rjZ7HF:oF_]xMȧ4$0sIWҝXzͮ/|d>:	#KxY¨1	G$sϟw`(܏>eŪ7/fzl/ /a2i{S}[D˝ݤ^RyR*|V1,/ $'YN	ﴊITqgTLଊW90-ࢀ0*(2
bUǌ+U\Bp	,(pYBW:ޡ5qJPzyzC_p(\4MG_X_;vnE>xl#­4q7J4w
rݜ'͹{r׾đ
9
.YzfOy	_ó3奍D+&no?	|7ۤ&Dx CBMKRѪ}
:b~q|GL$J~ȷ7GL~)5QBcMGs"-/~B6u~A[n4MtIxL$!4.alPKM̭     PK  C:U            >   org/bouncycastle/jce/provider/PKIXAttrCertPathBuilderSpi.classY{`TW0ɹɓ@/@<0iI
66	@Vo&N:sBݗusa]]4jҖN)
h]]W>p{<3@||9<ҹg loUpW)AZ7+xf(hUЦ]!lRY-
(ت`(خĻ$>  Hl(ŃYּǡ{z"]Sqie];uˊC54Fm2#m8s禕35cVpRjWn0KFGl}ĠɈmcyVf&#-K9GQR%֝8ǁXcm;n$f}i籈1阍
O*d,n4>:j
߰u`ōD0[- VlXT$yB#٘er)}psmȈSbBnE)e5z\0l#N$N)Yҭ"lm%H4?ȸΑڣ-L7IsҌs,$RT:#Q3<b_P⅍(12%Hz<2d eM
wtVm\*;6ւq:9:{X?F$7㡁iEI=A]Lp%
ҀMW69iX$Tl^[7nX$u  
5MQ*3-˵UaܗԣĮ4sMY=RPjˈjBFXgNE	rTG]zbP u&ro9Ofs
iIxԉ.Rò
+AգI
F⯷}<sXUu]li'K%8?&o4Z>&:#7O!*e9FMu 9t5V89r؈r׵6'wZYg1FfbĤMA4	&yEj-:lni3$X^ÍXˆ,'G6$IeIZ9aȯ.R[chۭrNX kW
eA޺Ȫ5V{D2J	[Ztp\\.."=yJK!ar9Au_"z{VBD+.͎HLf4{BvǢQ\]}4H>,״v2y~,CǨC-ﳜmB#t#FG5Bz6QϨaqk)о@pD?12vAn&6]Tω"ȹeen\"
FHÞkW4XTy;C|c*Ge* 7.`#P;mT쌹a>7-pי~gJfJ/Kko).'F^l_jBqc"vj D9@A|/c;ޅ4L?%vH=$1&1.aJ8"$bI%IK8.[%~EW%~M%&vwHSMJoKJO' znC<)<y!6狻5+zE1>~~/oJɮ{F㼽XQ;8ugh?29/><7Siyw)--G̺<&#^[$M$|MWXBA]=/S9}W@-Ŕ87;CV6"9x~,\Ei`I?c7.$ۛ&X_75*e4΢(xv-ԇY/À"/GXR'},_-d"ۼ`>sx"-pIu ^/y{NW]W1t|:*^/*p?`Aoj:^QQܤ.<7a|UE'n&f_Sq7LN0Y?Uя?SbdW*U܋ߨߪߩxL*Mof&[*v*wTUqgSbWz@ŭH ~$~£Vqɿڿ؉gQiW%~~<_	)~<ļSL>71Yg
Lh!T(gIi&OgDDs&/'3fdDD=U~Lc1YǬ(cRͤI&+xZʏy=#L0y5~̉EQǳYQ˄^H/*|?#"T&*<eb0L扰ܓ,wygxzQXKI@f~)ScYFw@`#Gki>
@N#	~LзeZl}pDO(eE9j]D}=:-xhxkRbs]d7IM▹Y<F}lfqniON`͟
k><%FSHJAO#~d|MI}J"Nb,Ne"l`ʈo*1n*/xs7OWjiNv6\M)q/yKa9H
Vg1Áe۪5`jjcx*grOĮ84ajZ5Z@tϊ7C4'f׹wVk#G7qvj/ ԢI8Y<ڮULSߚ_׵mP8S&ZYΓ˞i,OSxX<}44]/I!q(WX5OG_bNb""CyE$5aP<PU !xVFS<5E$.e$.K	XCSuWPA󸹄\+*b1j
>yve
Pja֕ӄ^ƳӻD##8ʌShMagŎpyrlWL&МcmLV==\5z
s`N*I5VUQ|5jɭL:EtTψIPl{Bĝ)q;>++YUY&]Ԛ~'AwF{nn?
La-]UyMn3UMM2y]J*Ҫ횏DN_Xhc3S$O>wѓc>}ǋx	Y<NW4jmtQHOr|
BUJ|CTZ&:6  ǻӣG^u\q=T?
K
r@+h'yT/x)<Z;GiCZg}Flaا.	h.o[f]Fo
g;0754ݎ!jN|->Z%gĽx%.rV_x2;NzGQshPK^
  "  PK  C:U            @   org/bouncycastle/jce/provider/PKIXAttrCertPathValidatorSpi.classWiWW~F"juѺG)k" vL.0&43Pm}],?ؾw!0)<{}3/Ïx<z {PAC.	̧G5˪}daZf꜈Y%-8x\Bn4=thqm<nG->Kjnc%vltb[E"mL-	k##܌?Q#JW'V:,a-jD4OdI*&ێyvO<I5£6G
c3
#("
ڶSD։׹eiMbR#4#Vә+ǆ}ruQ-Q
{GGx\Bau[|ښlj(ic?Es#!SpkH!r+(tpN,ɢƛ1zNy\#)i~uӹP_tۗ1$lqXxܱ+QۈgrpPCҘZ
s*c~R,;C6sǧq:G}_T-Mqfod75dxl mvH́E3.O҄kkgeӬnt	&QD.q*?=P]!D"rUlnRT&չI;ݤ"uSxx3İa+6%eU~5u;dy뢽I`IikkJZ3wWqawSŻe[@;ųzSHZW#@h͘$Ss\PM#}3:	Uf4g$X\Tp+:n\PF!ػ4eMh>k%볷61bK5q
Fֻ2$}qnZHy--*-CߝJWQe<ͼ0홟<ݽ7PiM8<PlFѧ:W++ wS
6AFܣ`4M+
u((W
nT'܈Vp+L#2f'11. qH	hЉdtᤀ8=gdqOxRS</#
e0<#?6 }C_'7}!)-\|lM?Ѧ nr7>VОO-=m@퀢I^6P$g5"	.G*.!wUtN`4M^*N^kA/OߦNo'@&gvKE4*.$<YsnzTo'N\o
d@I`"K66F23HKୀʗ&PBp%CXAPGi."U:ST6JX?'Z|(PCZrq{W**§DVsP$"Spf
9e95c^n:R?N'!2BmίBG.:Z(Lk7PK"  c  PK  C:U            /   org/bouncycastle/jce/provider/PKIXCRLUtil.classV]WW&dmjɤTkh+%5 L2fX`/}]<Z_Ե}uUsD<Ȃ3wܽw `:Ñ^\bbl*MkݵRɹeK+!~hVhN20U,l.F.&/P:eF>O)>cٵʔY`R^te+;#˶iD2h
ӆk,Beƺέ	;^@Ӓ6pbոgEʭZ&Uxenmn
]pɺ
WHVljf86\_MRZĶlj+
6,w+z(L-}4VMK=5@D=MYH6pK_/;UK%%"GO3GNƂ}888Nsx{g98p2? i"C{#7h	($v^&	9
̺el`ԅpgːo3nNnlNʍ	wވ}s<F[VC^H*2.81~|.GUD8K
㊊ >R⪂A| OE D1)
b
.$2
> Z 	L0 F1M	'OJi9ͺ6mϊ# O'40hMO&2m~d1:ߐHq7%iR4_#N-t|O\ao_>4Tֵ61-F0<C85^)YCXDXLpGWbnAͧ|ׁCq:D0^WHx10d%sp_R I_PK'IRikG69&w-Ĉbt#Z3xTb~^EgQ&E3[AcC_O</ic<P Bx%IgDtThx5=fH`%bPK<  m  PK  C:U            :   org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.classXy`}!oFtA%G-hJdwH73nL[z_^U{]b`mڻ>R{3=M/?05b|/xqxq5^"(
VP`Vhy:x1BFz0DpnĂm'5+լS	-,FV7`!͑I`LcAޥưV2b[`5	2R{,#j\BO_?}}Fmk6IE̠,ƃ;V]ynNfF]4&
4MI%
xIjZB`ovDՈjAs'UmuizW\+0QTXPY%auJ2`jO̣\ƵΊ\RjI
smR-JqZ+C;.[/U8AHB3uCkv4CM$*0e\9ssSVƻy4eKӊP7P567ITDjkPDIBDJ|9dh-1W|:Gm}Ll[&9IO&4>7v3GZI+Ova6HImnzL\VɈDSHeji	z}	
ѢWRuۭD-jA=ޯG	.nگ6U1אL(yrr%i$^-yRّj;[pl-`c\xIlp6溰nnkбhv2N]vlю>}z]1\cHԦD#-;2mO!:ъ/fVaI4dB76Y:Jo9jČǵ{bH*Gk5Rù
E::UD\kTmcUcSG۪]mKL38X¥ŅHف@$+jdef{4s[L+fSyLؗ\^ҲƼؠF)O4Vg?ew	Ι^eRnW	5ӫ}.)Բ^ų&):=Vz~~ۓO~5]H q-(*IM]-[%I\*]beK\!z7HQB蒈J$4Ji-zXGj$<C &S[P=D_L/;[{,*#S5˾jtv8cJ	'u%/63ơ-).'@doYKJUD, G$aKhj9AEFV0gWP&r/xl14E=>|G2yf)[~.oKE=4P?J]>CWE}\\>M8Z6jM[ubOƣi9ؚrr6ԝX7ex8ޢ:.p9B(x5NUoSЌ+X9
v1TcPBjT);w*8a
ޥlW1cVpޣU~!A|@ATP)Xɰ|Xj|DKq姏)XP+8w]
B[A4KI)M}
|NA->_7r܊!z0×}0%L<|c}H0*܇|_ap5se_/0<=v1o3|?&f&O2|ˇq?a[ރ݂a)/}ta?|ϱ75H3<
\H22<8݀QJ/MeQi1͊Q_O	5z%
ޭJ9JPŽ<Q;Z
M!ѮVOue%jKmx֕8@	ˈȦκGQYwJZxڈ!lpY,%%aO3"j0O8wِ2piNJ	lwae)
T
49~ڮE_(4~WU~ͫ`g6%)>?$pYAoa0"NC&%yx=<YUX=sjsa/`:y4|U>&5ys~SƟz.B@,%nHBRJRx	5/bQ(_wQa!4$!YI=&a:|qWjl,+V Q+
u#:x8PK==}TSQx3Xla(tEyt8Ϧżp0(*O=TGI2wŜ!tRE(VQfQ.Ϊ@yZ(eYՇ1e.wWud?4z`۬B
Ⱥ^H.غױN]גStL%yP̬L{PDC*gkqs6Xڀ3<0*²6 s,X9rT
;h@jnCbZ%^O>)nqVE2{|fN1}Nd)/ʓx^99;ӑg~jw\lT(gf&nRW PK8n
    PK  C:U            <   org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi_8.classXi`Tn;d耀aB04D!DB>&d&&jH7M7۪,Z!
tֶնjE-y%3$@}ܳs=N|,!&x0ك*xpS={0̓jN`%W
F@fnx-\1_\=[
X
lc4ho#ųz,ccn$j OD}Fi,QݴHIp<%=jTo'vb>kՎm3F$b37@$fW9PuS-.X0cקki$-J-vifio<).j,(kZ⦩ojY#*-36TNsDGPV)
ѨdHG\kL"*6ZD&(l67e"[_:0Oqfj1 3aWT`ЂAq"WigRwykMv\ʘQ5:4Ma8fzfjJuCjdG9q4ha5aY!<3hDDQ+I36#AڊSwpF9^&iv	'P~djxꑝ
'bm'zGaAtƉ01@nNlvXN-RR7Wuu[ЧFxZ;OttR9+c͈QZ{4g/nW{a%UiJFUMKS7$bޥe,^lj vűS$YKC#Nή\g(
Oj]5soD<{|n}lҝ?
[:jR-LFaek\dwv|X`f-԰3GCݹ:ij8jgsilՈ"Mk	iЗ&RE1LFGV葝մZj76/\u;mjb,W;hKÝRö=nhr;ұl}|S5|柈|e''M`]$e'ZPIՎfczQD[6y36ٌ#|lDvF	MhD{\G8W*]QZR%Ws!|iXqKPbDEKX',^EbDFMJl"&qox;$Tv	Mb)%KеV6evď?gVbfwe:"WR5h$KW|ҳӈ_ÏIRU=2ܑ:'g5Nrj`~řV>gT#Exjgxߵ8⮱s2eHABBY|<H<D[ASj$XtC],:A,/9YNѥrRz/<y럕׌ژ5O[cCmlEY)Һb<U\syS-5#%u?wNT^k&aKr刭)#:Ƙ\Hg0fqܨ=+ݩUIgMmb#F`6ޯ
aC%&) 
*Qr|HK(Rܭ2*ѫ`	>`>`%>ʴ+{
B)ܫ`SP,dXİV}
gt3Y/׃
jExXL|I< 
H2_RPR<0e/WO{a;^8mza1ǁyW_e!ÏOyq#.|gxW^~_3ы[-2<ϼ
?`%ßÚ^_{٫{w/mgxNƋ~2WaqnQf:a w	9[(LQ;iF%mUԛ7D)B
듾*li,ʥKB,WhN`aJG M4VSx#8R/E]p}S)-^N\q %C<4ҋp[[()QLb3MIqvX,*y:#xORL7 v%EUJBE"I	9Il$rx+)!L}(Mjٖ+IV$Oϝ$j
=<)&Ey"$E-9L\g1L
d{63$Bbo/Ŀ)~^&%+yr>{,D(t;!%KEW18ݯ38H)fWRqJ\9v(<H2{o]mXP@/%KSYp*)Fy~/L}6P P@O`GŔ8+T҇!9 $%Ҥ3zF!Ja*Em(Da_#>I;/(`HaP-M"r/k?$)
Cb=vhwI~yH/.L몧_TR1ͦqaK/:y7Ϋ*|e⠿ ^b2Bv ljӻen܏h|A\+Eb)u𔸝ƧŭQT*Rl
vU"$~e{$
R)H$$uzgxo[|ܷ0TQ.|<HM'?4T&5P۷ʩ?q*&an
Eέ<	PK  o  PK  C:U            <   org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.classY	|S-d-eNcm  hY1$%aH24mzgnCM		 i
$Ii~G$̓Òeٙٙǳ:
[#
Qf<#*Xl#Qer#ߒ0Y@PZNw[P|O#fZڵ׮Y][/0k^)d`!GݚoqA.߀4_S{hF{ӱױl(u4w:7;Φm;g{79JcԠ>;`iMM͝,ljw[ν,s]-iԽþIҔlvUv4h=t{{ Lp8wk5/Y0Jl	D~!$Qmalh=VGgtt5nkr{͝MNΦl}4W0U-֩{FYЍǧtԠ>83q<sV7wRxdUK.ӍjS4CP&i>VnO];@9P9-ri<
4o۫T=0Ka@`W@no]&"dVu6Jj@8Ɓ!ohFJh&[g/RǣC9&6cù)I~[qY.O'FJP~Ji%#s$nX>=`fG:ܽm~a*#dl.whlHZZ+a)呉IFz"D$~N&}Jm	O$,Ѵ%Ig\)<wc;i~p<"Qh?>j4s)SYgP	J܁v/>S@W@ۤyj F4_
rãz{5@AZ8=W(Q37>@)|HK,vP6#5@99XƶC,qRDri^=!$hbD{MٺI8ĕ59떦hfN9c̐v-0D 1ix4׬_MK\tiũT'lU}\)q3DK6up
@Уթ:{G*='ڡ<ʣkH5k}]ڂ8@V,6FL=RXrtPLCrpfoqݛ*KhXŸb2AJFGJL&McKҶF4Z61y523YՓ .Hl]d6$LM[z~jAX1l\jqjݚKp=-VlXz]x8j`|q&N(r_WkQQ=쩤-T&JC[&L#\:TTRs*%ԚJڡBtDO6:7%wWH)B{KQ fo$Ơ/rh&xVX}H;BυI#yO}zEX٭As:ш$zz[$p$_^	KP%#A_B>	$pHWOB$%H8,ሄ%(nA	pKJ[$|\'$|R§$|扗5z!hH56wi9#lrNBO7d51ӓأTQe%y#wLjpdqE2EHjiZr4t1r9F6qYS8iv*Yy>AE=nYE,1'
DIDm`;gH-8k3rIՕ
OtT$z
	zo˻Zm`BvrS=2L!'Nßv-is7Lِaxvvj@ڮJWgл/'NMk(4Ou;w?~	
{wz2y]UjZ'ۓ{SQ4X2MAϸ&DrSdO \=U~$d׆1⦿j퓳N<
E?}
GS>t4-SlQ=3Ly4g;@81Ŏ~;oWʇ
R{Ztｯ<|=XLZ.ȘP2gXPP`eXȰa)*?E202N.0t3f؊f.ek2V2V3p%^aghdp?lRF~%Æ_hb%2|q;>/2|+aw2w2Q`?؃3l?hp_elÿɨÿX0!>{_Z7Gz-?2˸oʸ
o8?:.12x[c2Z5%cHd˸Kd\!rd|F"!ɸSe!re|WrCQEÜ\,d|B"b3C	C)a	&< VPϰ˄*NN	IԄPMk&\W0l3a%N1F`	g
-&<-5Gn9nyQ`edXPǰa;C3C	D#::3Y96"v(V3\c}=}&
&^`~"vieh`x:6
p%UW3lbx?^4nC&"EyX,OyU4N<<#vHYD^ӐwUx@\eB.
:5aq8F+MzXR=gI_="
Y̞'Re¬O6B(߰1TP[bPrBŐH5C!l%sP@BkDi c#y.ݣxyVH|\7 Gά{#Y2jB6b/4pA{h'Q5,>vfHlV*DzqACψi"пţ\%|T)H
Oŉ!TL<B{tEfнrX|nȳ#K~X|K(FȺ;n)Cc(>o+P
Y#Y5LJrh*٫
=f+b&gCnvCrقb"ݡJI%DS'JuWmeJ9*eaVB6eJnX$|	%9xlTp{F(x6}0[Q"ʜM/ZrQ_dsEM6ݶ3I1zr%AR'CCc λd/uW?.Űmf	a+J]YUK^O,y-y1 `nPko[xkV*$-
e64	8mBKf)P.
VF[8o-9[sWCӆ"(ʄĭ0kH'E哪Ұx.(,~D|[4Rn
%ӱ3ѳhXp^X<0/zJo)66b=9O##5JMn́xp7ěG#!yoes	sޖ*( F69Eoz5K1/zs~PqB8;t+q;^w"xEq+W9@
/DBZT3FKYyR|7~u+=raGI)Ԉ":ȚUVeڀR]
/^	:q~d?ڷ%0\"	1$</Q	iNOK`B,KX@ct.̨`|ζэdjfs-93|	9BwO1cG$<IlHe(=8wk j._؎&ᬄ3
k5Ψ*ξ,	/]BTL]LW;գp5Y_YГzqC%q?MrMŴc4%I.dįHuO]w<-OcX,EY<3"~!5g8NkˊQ\6Tg+T'69N*s~:&[߫@~Y2FL$<]n)_/믩mzܿ PKw=  -  PK  C:U            >   org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi_8.classY	|џeV^|f
66M"8E^lIJw4GӦnڴ
rp$4
$J~I	Jaei~᯷f̛7ov̹%w#aafaPaJ#3F D*^ZYСf
"n短L˩ZVUjimU
Un;x)B{Ntt~owV)
Touz=V/hݡZI۝
[mvGKݱ`oo޺h$rqC[sojwll(n;`UhՍM,hYj7!-*%se:;or6"؛.oQ|no1nu^#%EV2(VůQ?`Á$5aV+{@۩=j}QiMȽƶ{csv6aw.LA~uu:5׷+.5hu"R%<S=Jm
jr
>8=q՝rVk6SxfIK.Ќ
J` R&lkڥU{nOu;\I9tvR+==Y;zwu<R)To۫Um^_ĴR͊ݩqOQU<DY@
jߦEsy;Ng2YA1Acaj#vWj<p~[SG+R3KyQh(ABKѳM otvPPKݭxZ9,#j	=5Sj~
BF,%r4LDKOqZTQGw{]^LکZ^)♱F~"kD6cmG4w= Ym	f:/HX9KaVJnþyۧŶvp$4rM}0Fi3XSQ6Yc4Sn	
݁x
7z݁Mu	*H~%9n(
8]C8S[/5a8>rfrX($գga^]/z},ǍP=g4{&g|
+ǜt0iSY$F|XÚTf0\fE҉.m߯qCFN^AN	t;4G,s:=q&Vt0Az*iU<>>/s|tM\J QwIٲDE>Vsm
\bGe55HkE%27@#,L6.IRvXdaSPTx疥o^*ёK;?uxtר
5i
))^9
]z.zaV;4Dj-3Adyz6*p0n9}9E9yL¢e#7d]9t"v^t˪5
Kk׌F#!ns۩b[#<K=~GlG_a=Һ%:ZTCGQT҆TRS*9ԒJڨB{mJxoH^ؘ:=hn դ}W~ 4בci	=+z{=E`;DoLыiBdV}ֱ>gYoO4"	OIOk
X]kP!KNTv
%@ nv	` ^|p ~/@ 	An&>$ fnc|\OI>%|Zp ilI&'{e*{bN,]T0a͈:"[S%&YM$(?'w}xIbLjLʛt+{<4?e$h猫-yt^ ]zq1ʨkØۜ//wLô@wNZ].OpSDgW:jYRK&=
d;98r
4ĿD?]cH2Ȥl$|e8+^X^t6v^yH!׭#|n&\p+l|0Sp.m&*
y%dS	5_SImp񳇴o)[PumLzMM|CG5dbK7v4!#|#"7PɌQ*OTώ5
?@mGSr|]9nz~NpDE+Cg)As 	NE	+ǶRuRdkN^lF-'-A,@JP0a&C)Ca$hKpH0Pf	P(f-W2lepz(bf/$xR*0|r
1|~#Fwe^~2|ޒ_b2W`.zX"AU$Xg?$)$2_	k$X`M56b߄< 9	aFDL	 70K	EA4ȣ	Z$ݘ+w1OauH[q;}RApj6<s%,f
4a:eVYExm""<TE<
"10֊8D81\!PPp9Õ"ecOF]\qU"wcl9FSXa1CJ[> ileΠ0`p1^E6;x82'fa3)KZ"
^"]""Pa
Zu<{ C/>>>(Q7qCu<pC%%6qx5Ad-ƾ[׫?c3v7+=0Rx	  \/hdCS Z 5j="s -YI AB01GƊ
t|ӈIZG!qO>ZJ,
iMctǢ7D{M[lB<0Z`>\I:pc!?my!"A?3=8;	&f5Pm0Fo[0;c۔0	6<*hfQ	[}2H*C0>9 l"bUtEV<ݱxddݶZ!=M!%GBafM!l:OC,`i?wRdQxv38 &C20 -~ȢGlmbfɒe	8jˬ˷y'<K~J800<IO|sEzᕎ(SQs%lr^f\`^lQ-Edз!;p قB"
h$(B5QT-6YO@,m,.[1]rvx̄B[0a6%mGV"q[	ON&3I$_Mm3,Yu3iy#2GS#a$ľ-:EtWF%b˕
Өba uerH%6HVN$+'TXd$-e4Mʹ7%n%ByV0Y
%גu/*D*
`%P.բ;a vi)[La!+#USzD9?_VBܳuSyd	,bb0>3|mgȯڬy#[>~>(xGÛÏćo?~,2ԎU$gU	+r)g|\w,&>Oa|s6K_<+h%ͦw_db]a2ܡ9^Ǝseq⎗/;^w,xY<p|x}2j*4ea|Ԩ=REaj)ExM#/=HM1Ȣp&㖌3G2Nd<
+27gvܬYVӕ7̇]j86rNGxI 4Di0=.YI` Ҭ OZdgL\(HPL>ݱ<BeB^6Ϻ iԤ@GF%	
˸E-#^DiHٮp9	pRxLZ*lr1Z){E-5b4$߆"ΧIz1A8ƳPN͠{zi)v0P	\q؄G!#K Li^4g:̹8|"aՠdmLA:rTfTzO?>~/AY(\^6p@,5P{&N

rQA΢E;c+H'PK  /  PK  C:U            ?   org/bouncycastle/jce/provider/PKIXNameConstraintValidator.classT[S@=@BxA%mR(7B26)`dF#3^^Qߦi,e9{;}}0%	5spMBMdSX*5gR<KMo%4-KhrfVmAi9?!8$43r63t2(s9w6gu2ͭ]dUD(_kbL2#NnEBig:Y1
klъ&&n1ze3)fߵ3!ablHpKڮegRܺ\;SL^LVHKeh&㚌v&;cTBoZ7BDP+l5XIP1q^\rjjD[X
-:GoSR~ffu2߳d@\tW:SIA-j4
Rp];
|ѯ+w4WЀzщ]xG FP@H@X!a#
x$`TKIEcfv{mڹ2>:B}:aF=8k-DB8/8]lwz7yL@z>s:gGbvQG8)
J{=O)z7c'JGQ,#ЈW4^\uQ51WKg,,+ZVkI禣k/9Ҭ@Y(R(t1UUhHya/PKu  h  PK  C:U            H   org/bouncycastle/jce/provider/PKIXNameConstraintValidatorException.classuJ@Ϙ&OV5QQDPi2)qLUJA\ >xgQÜ9;sC!WZ?dhҥ_rs,WB.f84#3}.|K>f
iՙSg.*3>kknŨCg.q4%hEXA3CQV)$	h5Hy	Ndk@2tyRN'~CWW ?yB	PK*A    PK  C:U            2   org/bouncycastle/jce/provider/PKIXPolicyNode.classU[wU&dd6BJ
ihR,uL)ig&
/K_xLjrZ./_]"=L4"}9' n/<^H^ ~:Cݣ"Cy29$@@&%%4(a_N$%蚩%4ERjΜТ.Ԥ&i-UUM~af#67$5wB!YfXy%hN=GruS
EJiưӧk+fV畂K+ةy5iZfV@{X~fFG:&R,fx6E:Y񼩥cGu]YJhZWI/P:}o:˙+KX
Dll:$a|RlA6c'G/ʓomPݣ}Y#rHꑊvxlE]aY$<"Q	$-!,!"!*GBDI+X=E'FKV7rmI(GD 7zՖq^~{+{^
\">ȕ:e5d#5E,?7'zO|NѼ!{*dlfOY ؎QO+CFNdt1<2vऌ-Hxc0&dlŤqgey]hFS^`x%^00ȣA1d}OO2q!Ͱax͏cfH1W*,ü#<<=aeӤ$/)3tZ^*wY@b7Md!-KYl='y-KZ
P>I@%l4pBxwzXD>tz0ۤ"?tP(DV#nTALv݅Lm)sZm8-;/WwTphX	?aÁr7|I\tb~ũpa^'m}U'vɶ~~o6޵9Uq:|%l܄%w!	7针d08cH	GY
khb4QGC/؅_Ao\%Ikq&avɀh^&uO6 _	VWn$=dYQZ_U|!`,|h@]*>'a'}KGR|j
G(mPC^sǝ]jqI;7b]廿Ū;ṃ	ǺF+$I</PKd-  
  PK  C:U            2   org/bouncycastle/jce/provider/PrincipalUtils.classVkSF=JdIC)"uiKS	WKUeFZg38L~͏%ȝ㳯sν{w5^	 MzpFO:A6C9y*o
`+ܻٮeC\_Q@a='3%W]:2Dg@Ji[ۘmx<p7m>7
t[*Lw-#`,~ϭg=0ּ/\Y>A"cogˬg.mێRšH2JkY/n;l8{m7lWpoӴo'򙌐qc+?7gz(lyRtJc֘³KTDf%SЫ
>PpIA~
>TpEGWg!LI=.7xw lb,	s7#MmppF1i"1/o3
3lzvsqNs*Rx.bV;rXcYVŞsZL0
hp	
HihGZ&[B&4$1K9|"S		bFz𙜻!>W1*$\mKTbA¢qܒ0'a^7HV]	$U\I!/?E K^/ΚYr8E䧋~knP'X= |.t
O_Ï!ILHE[@M}~اV3o08al`M65D6c/MW0jiWrb*4e{00QaPC~jۨ$'4C8
)AD{8YVE}_Ś{|H,Ѱ],`K,>ggjYiYaѲb%PK?  _  PK  C:U            <   org/bouncycastle/jce/provider/ProvCrlRevocationChecker.classVmSW~.JZZ	/V5YLw3NFtNQ?C;=w7!$t(s=9gx
*2ci1tK}ӴL6C^S^rO8{31aZe{1R.ێ'RO.eWd'N p]^ m?:C?ŴEޤkdALC}d;2l%_2ECIE,JR&G.$3IGR9ɷVVA{:EE~%F}+_4{3gÇ-צfԅA,iA~m튥JB.4Y[6钋Lz:~Ņ'Tm{4ݵq UH9b~ZURYr|8y+xG9*xOyQ+ࢂa1j~³2'',|A@L|,Sϡ%a|=54tiÀb$~:v
րK(̘G;\F5Mv٘].FC&{Q˥=4_>r=޶=I)6~,=koj|G*z0h*0"]eVT'*N
3*0+qU(#]I>c0Fq_0R@JyIҒ,H(RIIEx@_m]޿2⊬x\˫r0##`Cb\!9eIλp(]{XI&/{
nUzBRV;:OG@8-ULB|cT
z_ :Wd{xF:nVd}yZt`n\$L.!
_'R*`{UZ~ari|_#ٲNT[ڛ%
" ࣿp@PK&1  7	  PK  C:U            =   org/bouncycastle/jce/provider/ProvOcspRevocationChecker.class[	`T>I"E
IhYL +jR*Ԫmm+:IA}}ofJw;{{ιw= ,W`hЪA5H
tjХA5T
|jY-l

ޠ5k]`@`{4i`D5xh.
u
K544,pkءa4A^.2\Ջ/_ǏvƟ/_|P1?YL-^R#7.mZz򆥍

˗.C8#k\boSnǚ`0%/s[7onmlkok#]imݛzim=uz-olkjhlkZrs{ݐdghl%Jl	t	!FiB띭RwY+"CU0>hWmD!f̯X04@
FP8oFf$U±P?BC,jV;A[0#p/3{7u6l`k7v4wյ.߆Fr~ǖZJ<I%(kENSlӓijZ,ŕmKT8i-S-oqSΓoq[,Yv^06'KOmh&ٜ,}6_+B-6yzZ٢-KW4lhoR\&/G귓FhlЬGC]}s `Ff4	łjR3#?4djvհGЎ՚"\blGw"ч"a\%igȍ#"n#V
vB&XGáN3K>/,@8#80xH$n5S!iJ6#R3[VM)}?GHI3U*?G.JT>";ufyCd^_r_#Ls-uԘdLlS-4I&.2xb=DS.GjEŊ3dFRɀI+	<(O;4$$W&sثw!?!rH̤%pR}?F>^fS-yj4*c!I{։nxbmc~rMQ-Ɩ;IrHF$;oN[ַ1(`&Jn^&lbC4/2ef7%äQ.$!LM=:Q3Sc4@݁&nG\^#!c1urOsd~JڑXt#s~K:x#CETHr=2%T%A^V3#A`<*99eVbA4B!uwSn0?16="K v"߰t[RDr9y}ٲa#58L_Uv^@vhbIځEW
. V-BR@nn!UϊwC25Xt5m[NtosH"'ch6hW,:q}\218з'2'f{HohwpTз
23hZǙJorr46YOHR90uʅO<z\Fc&ȷWs
Fqj/7YnHf뭴bg
_*ap^~Ib.^}0\9
Ϛ~IOpzwZm{32Y놃2KȌP7IF4l5\v_$Ϧ35]ap 4j@&2␛.爫_A.Wx*
-Gs'mN9G3Ui}MBñ`]SN4 {Y!:O5
1&8ɑ0R8ϕp<{Ϊ`(EǱ(H*5wІd|sn}hu5&B)YY./e>~+	_sZM~k!^X@ˌ	VpŮdR>M\
ٽ3
u
;-=mdbP,L'F sr7F,ogѨ!wv_o&Kr7a_ǉ]:Uq)(|R&QVq9=4MRMP2a̢iUlil!kk½URG^7h`iw݁hKZ|9		UQ-7G	^[8iO'<"<ϸT46Bޣy@[BI<Q8CB
@=X]Z:#5٘bNLqp)HP8jdMEYUeU87K<Hi+ZG|AKoknѲ1宀WҾ(uҔE5IqĳZE
*{ʝi%&59Zfd)Taf{7zohv<M+dv"keV-[0oh*49YZLO4W!?&ANc- gB$C=U[U#?ͨ׳jψ3Eyb%KUrZw=ƝYFqDUmtb֦:Xy5/|a'XC$e]mM3jF-Nbse
^W0RHܵgHu{-ߠsڝZ^yV \|
jpl2
ip}\AP!"*DU
T_*<*[TxQTxYWTxUTx]BEEEE*Xbn+T<CJ8Cř*zTlxsUbg8_ųU\Bx*.VFZXRUlPQ&\*T\Sq^WFU\*^bTlQU6׫x#PV#G%y~su yy$j"de@Lq${~c;>+\ҧԮ}qG楋gs3Z5I\1>'+_f&ȷ~]p>R_ifNo^Y߼iW0LW*RϢz2LH;!6!fEu&unTW*<imtdw>:߾I8d.$&*:!AgܒS\U_,y^ŅHDv9ts[TPiZfu!AKu\0.4Km,,}`;8AMDؾ(?1q(pixBS!9C
6j~l+8g؂q@=b!uVHVhϑRssrM3U&bt03ɖZgNZD9ԝf~ɔ;)ܻ3g9swfRΪ(۔$j*] PIш:kɪbiε{R?euU y~ylt&uh*hv3Ǥ
(k&>yL/l[i+LXC{dRq$Tu3#oN2N$ǑڶZ'r'qxy^k'6L4.<nƚl?MKVq82I'	^yھمDDйxegH|&b̉ݸ9$ ~Lnp&5ꉖ)2p*>k4Sp[p+m3v;b0|?dÏ~S1do~;FKz|b4g5~
xҀ)s|
x[ߚɀ2
x#e`s
p7*׀\_0:{/W	p+f×I~ŀW
 p~dho1o'6K wO|-bC>?2cc?53
x+l/
xeISkލ1O34o
΀`{|s'?0ŀO_
xfwix3
x'ۀO
:ĳ5//4`X.ȀEjp
ApDeS2Lc(gp3T0Pit~a%}br]bgp07*(2`T/{%Nae	K\pa	'E3ú|8\|Dǰ"
%AZbm	>.QQDC#C2%QQP˰a)C}	~Lb2fXp~	g3,`XЭU
#bQqX\dŰGǽua#:umG}:^#Fa:^r׊>☎7a!^0\p5:ĝ[M\mM:."x0v3vc:->[t|GU{y{ { axH0ܬqq#.eJx;:>,Bd8Ø2a\1p?:~8a60:,>`S> >ݥG3:>zBh721.62c:Guy~Z|^'z?ã1|(ç>pt20\p`xF\	1R|\7mf),|~x`8l)*QwRO0<QWKXKXp2_c
TqS,hv@v G:}%JnNJ%Q''bIS.g E6fwSkFK5Ok<%{n|,YOg|tzq׌)W?%^SGŗG d)D6xjꎵ.}ʎ[݋FD
K#qrkI`mh[m7'L׉f%rxcgqe_y])o+*.0xE<wqEO+)"ŕ~UX2[,[2p
NX)=gn
3u?Q35ķF<q}뒸UUj=.KKƔn$WnR`kea{lC*+Jͣ+"<zJm\NP[)WނՏoĕyL^_9G럮Wn@8$JS:G@'G++ʪzrwW?&W:ZW)Kze1͚e\{4AqV[)+^e)S<F\YrJ\Y4\<SJ{\i+s¯vY3-̉+3;ou0SWqw/Yydz=ڨ2-BF~8,;'ﮇ~_>\-Ǖ^p#@K#fΔr<saW'loh
NJ[k%_ˇm??'Ƿ'i·zhT#0ByN]OI`vxfMPqSFoQq^6zAϐ`GT<,yfWTśqՋP:3*ޮC*:LRa(L
*Of1e"|gk X⵭*F_"鈓v|Fp1SږqQgݳ.eUCVWj?v)o6o8qZ0"S}-z.OSE`Y˲^rkV*"\aOȥz%h+fӳJ)WWjEJݘ28M6uט=E|S"LV0<qƕ[5ExVOEqe*%=]6<C+?M:O	w>e_uHkm(5IPlY\r\^@B|ix17(n7sa\$EĕvI8꺅
ׯK:P8MrDz
3VHa69EDiy Wښ^\OI7㈤)AL58Wk_*^Ool|e$3x=q28+Fv~u^v=7{<ng$\\2h	I)dL	\xz5cƤ9bf2ĕ4mdbN#G5ɑh
[\M$0T|<Sf||:gbD=/XUwf/IE;69#dV=-j6Ig-}ێ@tzfVWfժm`-\cesƔˏv8p>_m\hyamvΑ_LIfb.|VA<=K94.:J!>ԩ2RA-6),{z\4yibC6{[r/>ֲKQMGyjKxq*e֨;9*Cwt羗x<訝V/?AuόYvgT6xV縮W=ZB_=:Ll{8`n$9&@SR}L )tvڽ:~ΎrqF"Is(W8:BJ"1K$)&QORuJܪ|133ݳsԗܪArP?r9ߺ9߹+ܳg:߸ԟSԟnw㠾>A}CIi[UU.\p(y8_T`Aw;_UࠃuqN[o
 V,:PKX  J  PK  C:U            9   org/bouncycastle/jce/provider/ProvRevocationChecker.classW|m|'[|Y16m@(F $Mz@Hl I+I[ mZ:H%!m{6MӤNY:FR{}҃w?N[	-Z%!S:	%lY
Hxz$l]BX	7J)!"az%I0 aP%D%%Pݼ&bᐅ4cho~Z=@Aw] mVSzZ7l,ѳ7}=Éh868'b}a5 hq ڂ@-صno$3eQ0
LIT0jApd2X׷
XH;zz{v1;oO<hxG8E{cE#u~0oskP45=:)D6`gY܆j%n[))S;<Ku)WK++z1~ǆ(xR֋(Wlb<[gV<OLM+xN5w:hKiZGͥBj9TP@,qhS(
wMe-hb+	2ɊX!rrU)Z;gF^qbMRe5Ef0kT3)2i&gԁg8s2
Ux6əZ2|F~`h0ݝ
?1_ɤS
cZ*kԓxO~EUY)T9)
JL=Jj4qA`Mjp] n'Q0HX&Kk~yS+)&#;VbT&9<S*H*f&W]wGDFUئS|jPe.]n^~@''zFhS1֧d)%4G}F5Ņd$գ%όcb)ͧ逯'PSHRKX˚l.YwL/tw
%".N~wnH,я"{}!ՠRb..[]r0tREK.ֺ8v1__aN-VRy<OMQ}ថgT5}]}ΘГZG1ʥ\+Y8@quOЕrv@]fZΎ&*9:|RZGhp8Vs2#5}j`@ĳD<[sD<W"n</"//2/
*:6}oMtNy3d~C՚t[/oiRaHܬmɵ\]|4ӔRң|6)zY,ov+X:]X0Tn^(Z/_iSD:DHՆ~a.qY,_J-|o~+JU+$IhVik83\2W)	{b5C^l=^t3ldxb2<	g0(T$pC!Ðex&C`0&0-2p;pދ4&Ƈx>.x1^cG^C/t.yqG>iN2|΃w{)<8/2|Ƀï~[އ3b6w]2W53|Ã?dÏ~|wgpIwݝ[_ÿpӬ?bx_xSw4Iw6is6Fi-J)-|Knz8XBC[ ?  V>q=֕l]Җ
5 ](<;0F-²s-qH뤰朰Oi?',=&|vnO5k!{hEMsq˽B3]ҵ`O*~61֞,bֺ?A#Ԟe)`G^x^Xntm"]5v܄sTUe19I'Qmٜ#e]dYwRoyay	Ԝ!QKjx)7֐ɷcP;)4Eev;۝ym8]b]aW
#'d\GD0v9#}hgIko ώDUS NcqȤaYaE9"L
+@5eY8$/p0eY*1<&zyyZ%pl#w&y͕:,;<`F[ 79By]'_`Efe3W7Ub3UXkpDj;ty͐9L:k8X픪M2C,;X<7m+_#'p\Xu PKR0X	  L  PK  C:U            <   org/bouncycastle/jce/provider/RFC3280CertPathUtilities.class|	|T22d2"a$!0HIЈC2HHb&aQc]ֽV6Vnvob7Uwνͼ,I)w}{g>sˏm:Z5:סI:\C[tD:\:\6:ta;uإCTua:\CL>uxH:K:ܠûux:)nv.>ý:ܧuv@)(:xl:oI-u->u^iGw$VW'׾ՑHs^iXtgWkgi{/#,`(퍄c]R.^`q;]ѾY
Oms۶7ַ1Xy
-ڶ]жquC5
-k;:}psҞp߮]ݑhgX_߷7wtw@i#E#%/C:b#ntރtF|}z$x:"}aVa]mkc
ͭZj72XPEۑDWEbN.jGCoQNNc*kKQrGiwWއc1\C1D/oh!nj؀Φl∢wvJKN%@31M;~Ҟn\WeњjiT4맹vtz:Ls@|**B:Y$R8V76mԸE&C_77Ցxa3ѮppgÞ%բ:1Gdup#YCFz;X71өɔ&NXTi_dfa£m/9%!=ݝhd:;97]oxG2gmc#I!haֶFuB*w6>A.)tA.(eC%)BWKqi;f@~NXݰ~S6
6_:!``.5 R1N$
Z:gGo*A!b1h^HfN:XF/!ڷ	"pNwQ"4,p-Ѯ#Ѱco$C:2xt#{
.թ,w`ȀF81
va.PoWK_S_oDPñhŉNB1QiC' 
H6+Rދo$e5ִ4mhDʀa*Tؼq6g1usc<6Ʈ]8g@5oh#D:#Ͳ3ܾ;V*u}r}&gE½([> 2Xxg^z%\9RiLe$T݄QFD2k%jBĢɑQQqn|QbXigHƞ'$7iӘkb)+թQjx&dOI/]VG[k/l)_&;	*6\Ԑ].ljc8im.
'nӊKՍ!0R`Dƒ;Y) Iy6cV1Oo/Fvtw#doeײ{r\tp"{"S܌sI݅vFt=SQS2p߳jUܞmY\"bCWgJ-l/ϙgAAEindqD5~ RGmt0~r6o!bZ~4O+#+Dd0usݺz}754njҰ:m@_Dcto$g9E,Qev=Bi~ uNUg+(G|	rDZɤ%P~-?!ʱH+7QhLI0#oe;Ƅ3ܵ5k
V/zΪ5oݽ;ok?uF±EU]eu3TY^y9G\#eV
ZekN1CG`bFXى6P3ZQNo!cG-x0QƎΨo=FӝL`5D:.z02c'"R>%1I󰿹vVPD$h 1	@,aÎ
&,OM/ڶxh6jC|'py#EqФ'M:6M
7)d4z]>7э3z1?R;B[~;n'' .(Tvqj5+G,C
5ϰш]o',W9
A~R/5
zkXl[<1,?f?w+>z,62и:&y]mI֚2݃
2g`&_$6Sj[Yޑ{U(z-.Q#Rk1ŅFpW;%b6rVBALl
hBI2A?i
	U^:
U&ʘRqJmO#b
x<oI~vnS*%N>ҕt"Vmu郒9'VjZ4{kZ$>k۽7As26lSxgsM=M)ǲ j]&\?Ѓ.4X k}LTItow$qtE:E
|kmǞȾ44
[)tp樬&
]sDkI_q-6fp;ϋR	!hkhLkhaO9Jɵ[dARpH5ҹCXELܦXDXCW:9qDtJ-\cOqE/j4LUF%
R+RGdocggdgwg?ɟD`R2-_0:쪪N#&1YI*L㘜DV9Z9f)%D'Q9v;YXߊMչOml1hNAg6g	-R1Bu/3V_!$+}OZSR@2I
L[W:`
N
kñ]"`(ט0kw#K=:Hv9#'}z>bi;:a*^I)%mV(Fm[YdmtFQcnLKE2N9֢t3gf>Զ6/9K<	k]ӳ&89C14cHC)*uvV41dGȏ')gYꆖ|sJIAmWK}*P|e9b}𽮾s\Ӌss`[G+V縝KV"gSYt)>(90Y^j+rʏUL=|u{DFDaQN4	?.O蕣%ӹHhrڀ3g4.9wNX3əgcab졒iX"mV&n#k#=4yp#U;Y!ʕ0r
T]~6	>YbKjFu[΄1~:l۲5b`'Ǡ:ĚB҈HOҌ's0I?;[/^c2s<6cԏ޽2TrJdbJyA~}ɺC3eOo'+ÖJiMﺐ(v]:Ccӧ]uQz
FF$ڷ7KȧJk"k}ꔷ5)oMykLy[PnF㵮>j^"ԎhꈆWdSǈ+V>_YT|w[kuTȏI}(ǒM<ǜDIK$Φp:%O2jLr&X4kyb=TImZnRoW'N;"iMpOm5)oOeSSeGGڵ={BXe
 uh"6I:\vuҡG:zޢux7>n:|PQ>'t:|FtqOl:ξ:|V5x@k
+<X*4VB-XklXƖjlƖk,;Ockl.*jNc[؅[Fmfm%TcmLc[5vƮؕۦ4vkCcNXTcWkl:5Gc]XƮXbXjlkƮu^co[56Ccػ_9n@V`}nԲ\e:$"zy:ze\Hr,kҟK?-O%X̄nQz
GI
MzI#:4"^4#3t$T4/geEt̬h3X3y-E܌an3&nYNZ#aA%7Wd/-Q õFI2NTGiL]Z1u7^҉LZ]q0DUHnXQᾎ(+31nIjꂜ}rK#1Wv?''Q$f-lIVkRN:DZ*K\(SB<RqiYrVV}?jd&t⧪l<ЈW بqU^dT)dr(ckplǦZ{ȥzg!ɔJGrQ\7ķS3g̑H9KP6Z=
8wl.9-
eSjf4z#s1Xq'+"qp94e6FS`(52Ϟ3ƖˎZ֓~m4/
eҙ;>58=/+$r(qغDxLW8EtPbG9k!f|Ϟ#+KUq*,v&cj2&v&yJ%G3nY[׎5-gUgBf٫LH%F2Xq/8j4jri=[SstmA1f>
јWƓH^c_et c{|j-򒱞Xǜ$vdvG!c 0܋_ٝF{뭿Fl%wog,7BaΠ0DDt+cњ
bn)2ƞ3	g
}AT1SM":?{vʳθRӫD7>dA:1dܛ>K3I_6zX_[9IlRg61+t;sYw86K.39F03Ngigc7`_m@3h#~K#n!po01+%'	|+!0E$p	Ѐ_r''`D/X+6v"8`AL%0@)fE`#pJU</"px5X3
ৼр#|!]?D?EsӇ|=&~
87h/a_
8ql&o0j	~\<[
W;`s*~M7~K<lv
0U1X!xvvQ+j0Wi042λ	ǀ?k#55>A?0L l
oI~`*q&x_O-Jf#@ G;VI.~e~w{xHB``7x? L6/#e~LG}#q I6KV=?eNw^~1ai^Wc|`'p+|<7/`i/6qz?)e~ϿbQO0/lC?"<	x/oJ<XƿJkN`SAi&o6g	|w	|*[{Yy+^/yk^JK\a'=2Æ<p }P(%fp.n~
ΆL+l<pZ(xx
(Wxx@6/Q	\I27(T{d{vSE~rOaӈiJ;OBL JW{L	#v@YH`ϡ(	PrUV%kNx2Li$kJ
<RyW)&&_4E&:E%P@`.2{b@`#n=D҃yK6_L%%p	[	@F%>_G%(=<ć=|Z(@d	T@w{JveJ?;A7=hV/xrV\ue^@F(@9^^xl&"W" "+RbeOR^^L"Lj%|Q'o_ܠuwOWG1yjD%P
ث I`ˤF<oZ~z~z6[KszYF|2:l/)8`'2)gkUp?<?"P ]cGAu᠚< !8_V4Ts*6'W"{^Q;!ƕz>2r+5ZP3ݏ
Lj].9?!pqD"?+oBSAtS{;$8d`EbM(4/~5]|J>8rZΪԸǕWX>=B*I$~'ךg_CP@a 橏9ěB!VbGLQjnjrZ[`Xh;=FbUĪZ(C639Q 	_݇!_0::h=eMbψ"Opr')Jq	"ٔ?݇T$!dCv\Yt4_UW|gb}Ulhg3p?{,^y+߂L}+}TثF0?K@wvk|;Z	t
j<q0N\ɗI4S01o0$hlz|
Dއ7bpN>]5+w_
"͓V`2fF4O~jJFWr
vpԸ7q+_Bz]U
NJQK5nsiyDUhˣAjo$ڻyNdZq/ZŐ͆22Ç|-S0EE{$_NC-M{7K)RkSA4?YJZMWU}fǕW`qGխԤ،W>z}
|u|A +R:d.׺H/3m5{<:jQ99v។c:o
`uP;[[oqI7H㼪oa\-/8ѪSJ=4#OC/F^;"3/P9vw|ZPqLkKn10!ފ6Z+ Ʌ
f~\:Qh+)3B~x3LWAgq!L\vT-P3ʱcUd"'_fbr=X@\
LIz[|3}qAa
8Gg!RS,0,8B(~Hy
y)fc~q݋C)|h]fiX#=4?C,wLE
aσ<MB\8ʮDHNymB[	h:i#8x59X~]/^l(_DKO4'IX56|V!ͮ_nb	@j848Mp6\Թ?O=S<>7>&>͕O
)=ibjv~ Ttms)CWKsE	?Z
Gx8z2sՐjUB|+`_e䫈d,W
]<|
ԇ0<aGH4D/@N/v(v e
Ը*STk0.Trh
lb$17ry*NL![{tIhmC҅!i)^1+h1a|QxO-|J
]a(DBNd2cr'>BQf5Q}3|M @`Đ͟_oYL=c8_^":()n_̱q!&}5~G&He|̨ܓ.QJ2FgGEP (&մz!GA@pJ/3qw;;ܤhfI\y=u|+?plJEfY(}3}6{lj#NZJsA:g|OZ;_L-^[HFB/B
_XItj dŏf=#m
FB"'` BIA!p74)i3M<&
	48yf	Q82!btALTJoAu^(0 W
d?0<LCSmq^4KlmVICf0Beb\]KB1'=pΤB%.bR`m		APW;j"+5`,Efq0hiJʢ05+	j5) Ï_3pi ls1~3G'x:w´a8#7;^%d22|iC)dFW1Y4D镽^'NC rAptr"F1(IpAm&CQ©\IPOɆCΖH+1Ǒl	p.ߛRe=Ŋ11M	׌!2T2$\&S
:..  o4EH3T<Ap'	iYNg	ST[_Q/ҁ/ `zfX"Y0`G"I09mJSW%Gny+EwX%Hgd񇋚RP0=EIh<62TFu3I.[LSbMtHefŭ|w
3w%3ZdƏLo3$;ȋ5:ŐԂXl
u5uaxSs]HPe(fޠ#K!Rc
Јը++|O:EיOU1?UI@D@]lXd*=bz`%U6xUfSjxDznXP'jAT6]_b,HXσzXcgn|7=x~慄<gs2|'($m</aT۪{	l,ߐ't}TS|ְP	.C:t	(ժBtF9hr*].reZOFɏ[970GPhfjIԩKCԓ0,{1,{bV9KoiXIDGڒ)Z>Ed@ða|Y)+UrT?V$z\!N]QYDbln
f[!?A![6I.
J`]݇VcVaI.țN&]`AQ+@Wϛ`a"r3`1yjf5b2 &!OC?s	%Բ2fr*AmOC-DJI*$̓E(Bm33ZUie
ьgו!--B3b:}YM0PiQj2H7`j0oҁ`VT/	*5EAɋ)1E)PA\?X~n393$ߛ,r)4"
%")5P["a#f
a
H	50HQ J|'a^=Iv
(9͉ⱓDNNܑ*%'>m:FJ\s(%Tv;nBπo/ՄPi{A<(&1oAl-W.O"x4gЏOv}U߷3c=6rfTmS	~TMQ(avҝa}QKs0k
weo`> kQ*hL<o܊=W9QqhΛ2%7POZz5"g1eny1ve>%!hyeYg]X*d)0L2uePy\)WS@7lT`?5uItk"a\y,A\	Z"KIyE8,yC;*=r
.Cc,~ؿN8.HDOȰDthHէH3MFp`|2F~%B5MFd6CkU,`?p
z%
Wk	U?655zHCȾTȻ9uɓce]܏#K1TB_\
[.>8\Pi`]z^5+K|?pe?X+_O9Ry7cF<
M@)ÿ[}vYuU4E+Lt{KBfc!3uD&TQdo3e>f|PDzaQ2zmj7K0|)ho5)Y[q܏$:Pf`Pm(AۨO#tlH#nHrPmEإc{MCAu\~'efz.'_هJuQ~DY{PouYd\<QE,=CԚדCӱ`aq5D'-ǞDG=&RnY2>L^#TH^,ROyμJG%W\pS&xSw&nLZ0)u.Ȋ{0ޗZD$1dz5j)N<Vv.6)y5(1cgHzϙzWa
	:L7t~3	_IPMP\:U[X͗dp>զF<_`JlH_Iﷆ!lJ{r|&ܳڔ|n5T9uT	Ǝ*'>CE"s@z,8<!ͼl??(v:v-`?T+߶Ґ e~_W	.?m<zG	-wb	ixLoN68n7 ГVA;@#8w=,&cF5z6TbTNC~	R|G/I˨FR+"IJ
ct/W&tN,N2;wZu}~$u y`gIK$RSeD@ UqJ(]6EgWd.:~T,˦5gԴ~4JEU͔o߱BVEUV͔?OOaC	!n@FmQPsmP(yUvҥxJ**)|81pf+[&νs^]&4j9J7obߴ1%.?ط6KF[%:Bi4`U FV- ~YӲJ9k{-PMly
j	߯`bWGO	[UT+p)tL8qe0O?P=
mqj"87pOBWa&i̦:)@,^teG?J8Ģ6[z
A뙄 OJUpW'V6kw;O<nGZDZJy83֑~S\1&qr9;:<00| &lEfDݲ>_'av.2]Ͱ+ (N9
ɩU,x22DH9M2i5IEK+	4ʬR9@x@yQBD5PZȵcq+%<_ޛ~Z9S	lGm6*B _	~!6[`Z!\|xvY[,VABIJKd9t5$!Y8/zJ5'ىح<՘)~?O^⠦vx[a
2G&UIIQ_ãy¨K^7]((6=e"<'Y j0l
l@!*X*Re
$ S00$f٧E^!U(OA}'4/'cW?+NPS͈lȺNl4qwITTE莼KZIѲ :a#-x|XrhDh'Ϩ+Gƽ#aCqâqSh|AѸI#q({M	?6W`lm6=~Ǯ_>/ZV>/S߂p(/P@_b^MPK~f63  =  PK  C:U            <   org/bouncycastle/jce/provider/RFC3281CertPathUtilities.class:	xTWdN^^Bx)K°Iehh'G2e2g&Z.j]k]Z-$-Quvі-s{eLr{v9 `,v@8K+p:uXW9ț쀫n\6#,vKUF(Yșl5{;C'|֠iGm6vu!jDBoq0aP(8E>'rn8
Eh4F@,FFbkÞСT
d&<~_Ek6bd?tzCý~׹8oIsJa}9#0YNt;s%KEәE	D|_DCF_q8ӳ/B"0i3d+-+Z:HɁ}H*S#2i5Qt7voػ}mwK\pb`p_'9Y)l̳\n~z}~f~٦Sg4
i˾Pp0-9x}Rc֝{v6:3|,I$;䦸n4WǗa#ROF8ZJѰrO)BI SAr$dsUvXWJ|ۯq_i{dY.4\a&<dxiLGJɧNeޔBr<c.:7,_j%.3:~Ox[z/n꼺[V&LnO߈$zм
Q:[t)
_	eN3,t	.2t0/=mד6=.6пa6ȝDXf㞶`lz	5\tmcrpng"
"OSLH0d_ѬSV0By"Z0

>36n:&/"2+PYv}/R,$(69gDnOR$M},gR]^S\i^x3傖dƎQWҼy[HP$1/ՖGJJ<΍yJ
ljY,&s!?ټb5176%m2Ygz3LqA({Zl	QL:a4uKgh3mtqx^m\c&ܛD<JkwvϐI4qU6U錧Mtau!1<Xռ2{=ubIAw;$-Kt?&gh!jtPL=	w7KAB|aĆ/:8.Z'm	N4E!NT2}Fփ^cc2V'V~7)9&!'sXpɌo:K|KS; Q`p'DJ%,#5S$!.ʄ=<KaX=)A.pQD$ϱ7nj$Uj4~9PRАZK[ٯu}IsPXDtI"AM ='Zd4hEEaYₒ)jGX5DEbb/	t&ÒĂD>|0W<K'%j '\:ZRrA
n29UլjV?{:.sK	a ]jےùm3[6wcCX-l8Q{={F=Һh三 &*IBRjZ9-'z;Y
E$dG~^V1FKv쳹nz0U$5IҤ c4XGC
j<I1,gN,閤R^2fdBjU27x2uSӻ+>t%%	; 1ə;K2";Ap/'s-,}iyҊKҗZ׼,uJӖ٦)-)3wl+=B +p꣩ԚO(xq'?
fҊY Rl3"E	ƺ^G2lp7][U];S%N>~w	#^p	_|DO
O<(਀

0&/E_N	
ߤ(Y~ ԋ̚m_\Uʿǅ[L#f_;1FzMwq\̋q\lr.hRJ.o2%UK=V[b]Y3y<dXn2qiqF"֨Zkm׸sTw_4E$jH)h6>D<OLMæ-H9LLQ@qxdLy!SICy2~V	I+
q_>^ʛThp9{uzu^ydR2ڌ'T0=w'7O>FLvgys]쉗I$o
id2|7g?ζ4\bc?ӽ)J15r01kpfW	L1'..nBӥY{zǛk&gV޴+=ɌR~}Ha<b5B0+%_2kAzpNV\fwKO?e<
M˛3,
E#${Sk#ԧ`%=7f2%RQLzK)O2>tXjz̋'ƿ;ucwi&˧xǝyc-`fS0=sq@OQjbICp>|hLp\(
qkl`ˡC\.=>pjczK5D{[@d7"
4\ːei!Fd;uXAkjX+^Qh:lTN\\W1Kqo*
gJ\5 .:\`vxo&
ج!l`'nb(j
px
6
7M>ܮOZbЭq]O:
zL__nܫ4؏O{Wb
!"0Xa/gg0SxP?*oQi>of	T|
O3Oe0i&;R9Txߧr_m*71=*e&x4728aq*Pю(^xURg+ W1x53x?|@řaapgUEa5FFkN2xXEdZUq~F<c`q'||C[s\|%UqCE'~Y7|g1CPfpodp3[ڥap>s"܅->'usI+k	%.~j?Mp N)4E~Xz-){ *h4H[jG~
l {emGGǔ
Z)ecxfsqVO\>OYd+إSV+n?,A3G'Y[Wۢ⑉?cr#0oN=(>J(|wAP
 w<I]E*7}]R y/,]%gR3p"e<<dKߴ: Jw]T6ǔ
<\.A8#0`U+Jt(8%q9t.ޠǔcR:.zƙ=uU;)T]hN'$xZ/*mQeKǹ4*,ZD')KJuJYPr`uYU^}QWJeyR/*@=Yp+]ziUZA/UX.G&N@b%.-lvL+@3$&YjGS0*
z^:ύoQ,GYF%X|%T*9tM=%;*2݇z)mT =Iw-fͤ)עJ%:yke4*M׵,
Ea;j8
<ByrJtxo;htP=MN
/?/J!X%&dAQ6X/B2
i#`D%B OP)xiP"p6Ciܤ2/@	(%Rwn+S}l}wL/
Vlh0sUX˹g_R~B1]^ĉ9=ɖ'Vf,Y<YN(Ũ˨V@dFvzv1'B\¿wY[.Nt[r^GRY^4U&JWHZVŧ+.9?şRQan#;LGYhqΝU;<JIbvKݤzG@~I+bir"RCY gcqьôVHVl7t/nNEK6!ş'V
]I	<+:z5|MZU[ҝ*,4
IQ4V5|a*.RsZ{3|YlUvFan/2*2.ON yߢ8腣x6/Dh1օ,svŇ8rغ]^%p8ΧUwy~:)u5N
\.5E3E[J^(QE݅.8v9X"]ʳ")31dQ(mU&\6.vEUTMm'N8Ek8@j
%4E8߅g~8Ga|.;\%?L8#1w%g<^YVNSO@sI~I7D{d_K<RRIx<MR-muGQUZ{nԝwrw0oTbK{Pm]cWqj
]%zJRƟV:).]eԗ)s?)EG>2qR/CvhLqg)]説*4e4Tᚩ+Ɣ$)_AQ(2f&S[)W1b:Ny4,>*bnU^UF&tU22Q^z Ax+n y~fPgMPVnR۱EX/y=GNe&(}M3ةרKjOe(~m9Q(>"78\)_Df)롈3w&V?PKoΣ   >  PK  C:U            /   org/bouncycastle/jce/provider/ReasonsMask.classkPǿi4s:ꢠ! mj$"7|ك?WPRn*XB'븢 ?JV
hn|!.F<tx;GG%]'N=p^vN9v`ѝc%&{|[v/!k]~m(G5Ս7C=w8l	=ㄒZ<VQRQV1Űr]kDO#Y:g
՞e5Pff
B3Z@焜1\)R "[w}-۞mN_QtF@J7EՄ  ̕,' 0HLOɔ`MepE%RԘ0ͯXVL"+9S֙g,O9dJus/G<j`
t Q+<U9Q=gF2hOr³֐OD$eF#||PK2  7  PK  C:U            I   org/bouncycastle/jce/provider/RecoverableCertPathValidatorException.classuOjA}^<:&6vJ#BT׽\9ve\/~\:73@@}`ݕ*ܐ޲;LC+d;ѴYq.nkN/H45drBڕjQ}1Zj{l.ْJ>?lϟ>J!R^QzF@L;ݗOJ3PK9v#     PK  C:U            <   org/bouncycastle/jce/provider/WrappedRevocationChecker.classOAǿ_
Z5\L/%ĤD	޶۱Z+QٳCspٹ|gv srp&P\8pcmUW?dp9-J=9Q_ƝCG㯲ԕ:RdlT&I,2?}yiLNL'j%WV2}zJM4LtY9&690%n%Y2>}}>|6]x:N\kwwb3ib\0OSo^&!l +	P#7=h$m`z)@`m%+Ms<{O~{5f<6	̅6bvG<`¸PKD    PK  C:U            6   org/bouncycastle/jce/provider/X509AttrCertParser.classVi[W~$ReUh 
!D&I\:$CILp}߱ZM<Oj3$9޳ޛ? <8-n]0hSnfX1]*1E尬';u>wkwG!wȱsTUi~M	ȱl~%M(EOhCUD֜)JHd+

⊅aUKjR,$199(b9Rd ΡqLJޗU9%Ry[u΄䄦cօب9ҔݡY$kUj:N0O%qUcumH<
II-*ۥdtc[g$SC<Yм8O
uזQ_'#rxx(i?_rѪ-~%&Íd{BO*aY<HK wdK6|
Ijqy3*#)M.8-o0dx'bcuwY|~rX$4U0qE:*@Tfs *'Y-Ij]NJd^sI)%ƣGFOX)x4x3<6c+6<xLO5Y'p:քشQPZ4'x
hGuąpY+^7׻G:N[(Q/
Bʄ)$kƋgTҧApW1LElEȳNz],E*8l-֤m,ET=D{\JiE<
UElDԡLL,I?
$`QXx&|"Q& [8$b
DMEQ+",^Ǚ8!.H˱pc2#!'g"DLhzciN(LL01īL&-3{p"+<9&^g
{x@?
f'n_J&ƽR"N!Q禭
d1uM5t98F94[Ov*[Wmm\n<]o$,86G5mi||:Mi|v}SЇ7fL6=v3e/2&)0g	O3qpdG8?]\ٌ)2>-\| lƗF '4އk
ME_[b5ͦ&J*ٻ\.
&_
R'.}ԚƷ޶Xe"	_dcZyi{5 fVGkꨕtUy4Qs: 4Y-ƲpӍW0c3"_.0홁7HտOڟa6
ؠec:WPkYb41ϒOp2ixv3kK{<@U[oӖ#e}f)G3Z(Ũ# 32.7PK3    PK  C:U            6   org/bouncycastle/jce/provider/X509CRLEntryObject.classWi`F<z
0`sȒAJF4ظm(&$^YRkhӤ--ޅ^iچu(&n҃iJ;}$%8V%Ǜy]z X+Q<7QFn,tc
nh*$
ӈhQKOnbzW*֓&z[ԇ$1ⱍ$/Sz#%uhgL1Xa-֛$Pˢ-Co.lgP 1üJ&c̲[izZvvǓ]t,?̨R5KW_FI-ګ
h60@hTp:JlHI#6HxM	דxIE$!{juc̶=?]I$V@Y'9@U2+PYKMiɉ]"<RYn{F;x0CS7i>[dJOaöNKAObY۴޸OO<w=ZViOQ}H
Ĺ>J'̰bO穭Z1R909Hu%t'#umԧjZȈ6wDi)rZl0T]nMLcH/V兹t;՞޽]T?S`DXhIRz$Mqʆ:vSq# >j-D4Xz":gXׯJ^kisj>c5b$إQ#FLh=NF@#Oqcxo]KeEiXW,6w6$l6Ҙͻ*g,[őpsqNoR5l([u-A
VP%n0FX9*jnPsHQ2\vlWIVπD2>lP)Nl,%[9V:ǁlkr,JbDFNJ\#qD&$%z$z%6Kl^b
7JK)bHTe/$vID$$dTrEG5[3[,\ҝouÉ]·\+-̝2Qok7A"oNd8b1:*ɪɨZJvdlsV"l$]QmŬZf<guOЖ6༖Dj[[ʈ҉<AMHbZ,G[b[6GApQk+.`MǿcNȹq/Kӟall?-IjSۻNXKT4M*4*.[T\0a+Qbv&Ԫu**6+UlaXwx>ޥb[L~WE+ާbޯ|@eL8"#*v|ƇT\x>
nWcw08OXO2SŋpgVgxYn=xC|C8sLFܥ`N+2}
842	*H ~&'E&'|YɳaܭxHF=up|_+1䔂W
nW
a *`8o+x-~W
&a&?RzQ_cr?o2yɷ	)}#@
'LT 1&_ϔ3L]1ʶJ^eEhmQ|_ 'n4spY#5RjX
zVQD;h?x< Nⱻ?~6j'5y``qۘXX
56z-X@FvϠ*xJ,8<
g1Ƌf
gQ'wP^Ӫ
GWh[FƅageZyXsֺ.2.]b4J:JlƬ!~E-`^4\t!!q3I@#Ṝl3ף̺hC-p?/2B?t$;F=Rgpx+s5qm~<#zZϠkfۚ29OA	liZ}p|ᤫ?%:pFɄy$n%K.q<E	^2CXpQ;k˦bZYy5H8/ApwcpB
t΍N`	rʓފ֖icýӾ1I2
D,å^\`3G6?zU#I<JGZA9]޻ξ`NǂaOPrC1SYOa)ΤzU2bhnf1^B,*-2K.))
Td0?s8:#9Z^e숞Q.8] zqB#,NcX:3xZJ޲,&qd99}lok^OOX)CfF&r#>9A 
VdgԹ<s>wO,gQ\ÈXAX0jKSU{!}a ;/fʃ?qz\zog\VzǭNtzJ0$=hnlJx

\Os	,A{hYPKT
    PK  C:U            1   org/bouncycastle/jce/provider/X509CRLObject.classY|Tџ@Xb@"aw  *y(BI@m{I6qHj־kkjkP6XP[ImVbj[JD͜{5|?3gΜ9sNܻ HgX-0Z`fY6̶-@-`XdZg[,@\U?y6o{=qi?leS\HLQ:AO4ֲ)ۣZE(nm{yk:{LJRmE;Dj2Ķi/]NzS
M
M<)ZPr	P|?菞GMJ'ٚ״>ӨyCA:I4biW	uL-ڶia~-5/)ڶjӛ=AZ$bj3ATCֹb#rWtZCgii%nj}Q2-y|`
j[hؿ)ƴ!0d鮎.E[\k\Mk;]Wr;R$i#)uHldL/?sR9eSb:8~T"Kl"GiAxaO7O<^Jq'ͻc0݆iAoȧ#m-n)i|Z !\AB4g։BP}޾0MzBsy'ip(lP@J7HLZ߭E.p

J:*W	"Y^ǧHr"Sҧֱ#ERd3
]$`$	ziGYJ}6ܴ3.\M<]i[^DߜwP<w]jQcjOD)q1y8u(BiT%MѶjho
z'*9-';@§X3

JjrL0P?dУH29Lsy]4:-9%Fzk#Z8>F~Qz<tߘLPXk
h&fj6ȹ*8nOD ):1#	A?2dC
6ɰ
bb 1nʟ7YQm[<<
PkU2W&f`wClMjhݞ@G'1=ű&{Ӊ)b"qL˞jm̷Q5.?[*%۞&ޛn-#7Ffop%ZNgC1oOb\mVi|U|inCg$4Y8ݼ0HdqwRPsL`97P|FgnmM͹YLⶶʷSmJe]Ф@cKə8"K1"&C~
BDZ'\԰ýMn.adϦ f^~.W/4B|?ڴ1VY1ȞI%nY[˕ =Zڐ/Y{vZaD?[cx6<es1lJ^)D='DQ3Y\HabqHo[M~>ܜq[@i^Hl$zVa56jzS֒S^hdMq8="ZoqwB9n.ExGrP=iXm?:I"uh(+EXDN+9P$Q{2,2|Q/p_+2\#WeVp_2|Som#we}~ 
2Pn6~$2!Ïew0(Oe?22%ïd%npȰWC2˰O{e>zڲ+eζW.HTGӕg<=c1r'ZxAz=POIU67uK["}2IꩵD*:HlQIaM(!Cŉ'*eltZ!2~`2LV,9 gbT7vvB|f(f2-.$4gEC
x˪HvBiUp{q`f"ǧ*W)\y-WFS]KA+纙:'`2:s%u.>OstCWg-(%c&
4{t:sۤV>KhO[mVzyɅNref[z3>^~¹m)9Fʝ{^hB}3q(Z:HVy	dk^	9b>3UU@s
g1` TXp1Χ
\184.y*"f,NW=[0_2<*\T	QEI:HaÃN4x41X )cpb
1TTKU؎*iTh*l`0lrna
ІV72Ʃ*\tTIAR<EV8]VᩬL^;K?g5p1 8ɜ"Ym2,`38XSXB+6\g0,a3w*saùKMle".K}lbh.Q<|V00\ح#b1<<
<21S
?Tw]
g3`dO0	1h
<nU-
<A)gI
x^aƯ(7ecY#eaWyūxG)p	Gyˣx
í
W+OcH+3xW0|Z3|QR:ew(oJ7~q-Ox%1|Cwp5×NQů)(poSV.cb1\a1lc4Õa,Í
|+p7+!~^1l,p
'Ked&R+^`I%ʤFi??>$drhx"ϼǻɵ̆Qx AE?:R-C^i(	%)@i	LDXd߃wpis*0#,qI 4m#^ucH 4 J_Ea/1L
<"-؟_';@sE؇){^cwŸ{q/Aa7$'}Zxt/3;RkK{AigFP:9q|(''J$p%T2A:^LP7JC%d&6T=.xE;{p>.'"HX
!6+e$Ay
WHv#	0xǥvAptθ$5M{.HYmKE38vL	<OZ@
ۅL	'[/,ާ"?
FV҈/njx!-2Wl̓,w.tug]\84&jSw iO4̇ i&qyӼ)mg&/㋫bmwnB.5~!R
ŀgCzIÈZ6O0>nw8$n!T;U3=[$4n4!MfN=&nNlʏ_r]ɇNBBuOM6'-x%o2$?n+xZ>;ڜ2E.OĆi"Dlҋ9*G.k47)	ץ
`_n8x%!|.k8 e<UeV9mH29
*Ã01{Z)*IAx3]2~#?oGHFxXWxhvTSNR`/D:.Rhq\2܃c8RYXl"
UwFƫIS.# X3U@Is4R4R]P/;&M (.>$jK$r=ϥ_8LVHZ^<}4RILRRHsLCX_L8}4LS&31M7'
Uޅ_wr%tE}
s"Gc0>Ǚ$NEKʸc u۰4a- ^갚3}fFjFgfJ*jgJ܃#xW]QyŰ4wGg*Muon+|\*M+u+MLMc;S;AQbO4zZXĵ3jUQ\-xDKWewU[U"D±8o-xd f;Fj82MlFq`<ÑxZ'ѓkH)3\KK:+I&,I˼Q뷪tR4*LV5E.q3 ҙs>tSܝ@{_j,;B	(] 5'_u`8HafST/vN )}Z#TzaJfͪi̐yEQE!9,C),'Ǻӆli<CnztOD^OFs"K,iH*g2.(8R88aia|'opr,ԜjUa1?ռ]5;JS+Óa%yn5Qਨ*Wd-46*q'M;I.cl=P漙PN4Vfd9iT5^F8uRBoQrܳ&4?eLO8JD-APKЇ&  :.  PK  C:U            1   org/bouncycastle/jce/provider/X509CRLParser.classV[WWàxAjZ5@Dc60@^j/jZ}V[jm|oO} ɢ}>ٗo9VܨDrw\	plS٥Ӱ,.}]{2j-eYilKW	Qtuv3xc1J$-C΂LUI[55
%
ꄪqeOjdDLf㯚9m|BlL5J&gu
XMIj5IE-[o(| r6bײɀ$rVW1∩P*[Nm[Qe82IMM1]Qf
S8Ω#n	h*QOtR JxsA5#3ܵ&ƴҿ_hJȈzGբU־CQ+ȟںB$-&C@KiQrNnq~J2ytX>39aFe/Mbw(̤7T*?nf+,=Z[t9Q"~2~W8KRi)JDD5"֊X'NDX/bFM"M"6"-YGDV_j'Ji|	e!<r`N\n-F{siY+^?_𬲇| |XБZ<tƂ2
ۘp%)u
vcIJ1o]S<I+~J؍E-9a"=.4B3~ʐq@6x
2$ц2O3!\ƓLlKƣ`QA5L<Cఌ8"c5212VE:K2qLtUP^/~hLDa"*a;L	$cLĘ	KBNI؅Q	^bB)&^ö=l8#yGW%äDLL+sg	z|=jJG![ƂjbMbrJ2.D:;Jci՞qS~ Gd賨ix-|lMûhK#
ts|ye4y7"]>O0o/v_fpyd8(+?a	$ٜQ5[x+Hg4>
{f{O\'4>ʅZpEhz+UN&.u3Y/B{͗څ,,fOqG-\H+XITmg)_l47-CfW֗ޔWUTrbs)FJ'֛]
eE
5W1q"75wT`0.54	@"=cכnʏAh\;ɯAE}}jb9D,A['+w3e-Zu({@S ;iGGԓٯi+PK,    PK  C:U            6   org/bouncycastle/jce/provider/X509CertPairParser.classTSUnD[iiY6m-X)jj!l.q!ƻ,O3T>`@&3ffϽlz nk1H>eH9ι#]*1qjR
/,R;ʮ'r9Rք|WaBsȖk[o-67Wexͭ,>sD5t}蘆[u;YAZYءXezЭXR{y7!cmNZPа}Y69vVeތ5_Xiijw\A|[7fgг[wZgp%txVUnIH	VC
hRl<SPuf:c#d,#x~5)Ɩp
H:O>%l:~881q0Ǜ#;40dtt1?^4ڭiF戍_P 1@qru_U+i]V#j4ڛ9aYFwTdXc{n+7$t\Q:Ri1x鸌[q[uoiqW(kY%>TiCV
i0
&>(l^O5daRAqƱ@;KjGkB!%褒ijН!
~%T$fI F`
|c&'p7uLq8(Kzz)*SSnY+fʘ?#W8o`63|E2	vDqf
}Nc9HX͛q/*X^"v0D3.4?b8Ɖ0c)LѣQqy:17
.u ?xwfha$^
Dw
pdHkRPK?JÇ    PK  C:U            2   org/bouncycastle/jce/provider/X509CertParser.classVi[W~ðEjZ50P. C %Vd!Ů.EkWj5<'h93 )xϽg{ιw [S1&5OIq{(4C]-=ݮ+ᰀЈ1#`2L5bBNzTsW4Jy3#J4),nU7-lQJ%
%RYW2\vPUZܹod`@հ7gWo\HMZ<]ȍ*3[1絒
xt%Uڻf9CT3k="
1ӥʘOKR9
+I&0HuC%i7?>UJ2tfmБgmVR.>79@SVG7ޫD"jxFҖŉP}__2%-SÝܶ][p0:z|TjrY-K˘a*`f[Ź#g8nJ6,!$vb2hYҴsTIwQҼ´W7ƏA2'vq
Q%b"ֈQ#V"֊X/ND'E<%b"6h(I@o[F-}]:iblZXs}њ]ioYhE}l%|zg9 4<(x4Jp';,Jlcvڰfh3֛b_7Յ\_l3c2<YsCLޞm/i[Kظ|em}KؾqZn2߰\C2KtːpXF3
d< P`#%QGQᘌp}˨<:8)dп.s1"v &aN31D%AЎ3`Py.JpCcaxUB'O;yz gIxI"DK/K81	>E7w<̯hUVYi_ҀJ(KեQKmZi	d!?l=+!%G\şs)I()ߔ>ԜGhk.L7sx8S8l<d'ĕ)6ŗnAXpXFuD!tMǨ{qv>&9곝}>(猍7PR`&ӵJ+$[sSՔ~ȿESГ2p
F<C۸WPIto{biHW$]ٟX%D}WQl<@R
Xl-"a*VXηVo'LߥSpFnJ
6v#vcۋiW!VU( %hO8ޙ,k^7=Iw0~(kj
p?MsW/b4%+"vӌ>(\j3P:oRWu\gPK_7?  
  PK  C:U            9   org/bouncycastle/jce/provider/X509CertificateObject.classZ	xT?f7< 		aI"(lH2A0ę	u/nj--.I0V[[m]j7/BϹ͛%3C{{{9玼sG ,FFF0
s0
0

VXd
+8BαJ+XaV[\+oZ+4Za6[2+\n+
:0ٞ?vo{=婓]pjpSFZ]O/ۺ]FFϹt<Qsm{ݩ#O(fN{}=[]-MN0vwizQ_nۨxwz4j/rIHF,6o1.P"[KW-]YdyB{el?r.{Ufj[][[ܭmj]VZG<]@<\koirջ}r-
.kosiL4v
<em$.ZWmKCAv*Fv4i;^HMbs$(SZ.j'7k\4Ґ/ܴݳSּ}tׇ;>-+=ZVOHkӍPDBPȯHͭ[O~	yHНu{}$'0b^si ؽRJ7bKG5m]KހJ;F4/̻nCnp_oo_wh]r)'wwx6ͻt7qyȎ6	]dA}`ykP0d
t!jaItU}E7V{vGP+vi
nDӣѪZ骥oh:_"QS]HCٍ)Ԭ7cZ\
4(|OƎS_1Įnm#%2L"-l
`8bn#.Ҩ[OKlܓIlh9>\d4WC5ɤ]|$^V4 6$/Jɭ` h3ºzN`L@];nF4nzϝqI"Kd?ICMn'Eg-dLXtȟfM:J&C:&vnEa"=A4QeWl#]SȎwF{d7t:#qM%Hvxbc
I\щ|6O<[eE `(F9f|nKfUc4QF`Bc`\>#XZVSt.d]-ZoDS=8ݭuy#ZGa8R&:;rGӗȑ)u.W u-R"0^ L
ȄD ln3?q~:M<:>)SZƨ)	՞a$A,.@uvwpD.<͌8g8eݐ0ai	;ƾzRH0'
+ߊ>[eGb>(A^]bi:2+q%B]@Q 		AzF<}tcvQ̫N	|ffP|	rJ'jݽcAJ74Qf
Pe9;Av87xw{=HV	T׶P,\<[\1YpzxMC)kv6>#TdCG%`,?ҙ9fjZWŔ=Z9JLnryǓv8=[?n&H#(˶;Wf3LAOWBp@]'6$#yZ+M
ԟ|VPȿL8^rƂ,I-ÉKSedӬ{8׭+UWVEYR+Yxe9űժ{L3vP{u/Xubwvs,SHB]Iuz詚yʃiɑz9/-VdD~l9vi}R("|Y)1VU~YbG͈WRcfa#XE1=Nw,r\	!^B/	gpC'"lS?`'ws!IVH)QHi@C$Y=zsL8
 'o"hl$NP3](T`+AgxVC
DT`H
<+U(pTc
P
WEK
(]
+c~O()s~/V7
V){V/
U)w?V?
	N*_N)*0%PlJ}lBp6=F%I)Cb<:y6IF5IE	2
'u|4Nf7nPGI[d}xtSw&
O֤{S\tѨfy8P*qd*HVx`qҼM&x$քG(1uXD	v	1/$1"dɌBG;kF"ןuUeKe/OkY3ngqF׋Mlfbb6ٴK	M[E|ǘ'/)/I^7ϙJ.riҊtQxAh*s@J:]99cKcϢNp<z):^ܓeb$c:>ծ*O2f9Y'MM&蘢;k֚-
cmg$uʞև(:SI3Y&ESg_8m{XTٹ-gZ/4}N*CsK!,f4f&eRZg߄ZC'@
o+Tcgh`p:&f7%E`xhe(Z[U*lD
P§bx+paVa
,V1X A ,U*O2|A5p&rBv8[6vЊ]*v6a(d0ÛhӒ]>6У­PGz0ث½U*܎!aاB/Ta/-ZKO0F N=x
f8yݛT؆7?bQ1v1p
-*Ͱ?B?Op~쇷Ϩa+~Vm*|]~N>g}*|p%ޭbޣWт0˗dxaG
c3<$Á|ůc=a8B>،3|X>^fxYCQA!e0<
o2a	6,_0Pww'6?dV~wb30ӆSyt*NſYvNp:l8M fp#	\egp> _Bn3,b`p08yJj1a
wa9oa~op%V
Ն5w3Ub<C
W󺫙y
@L
P6<_TڰN8l ,6lV^pjõ,e-eXnËD͆5j6h&!
J&1LfPf#>([ bKneXbb
/fdaPj
6lebnsl /2:Ûo1Wd?e8Pe1a
7Olj6\U
;_eY.Ygqx CQΰ[	_o{Z#fOod0rb;
@_
KC~)/O_ O M$!oW1(-C]Q\<(<+CSCCf5ceQ2(VܕQqCHuTZ
ka~?ZM9+rK}?,xV4:KsˊFn^{>P,`iۓ#oi^:S9H/
Rpax(~N[Fh@(xM u
NŐS,RRwByx
y4&' |I{f``
P@CYLHT| 92?;
W3#)]"*^ϝa\dg:뎊R1erO00<0%r
I.[4jP7bՅw7Ad@RT|t`|m0M31a:ts1ƛ#bd31ƨni'uOmG"(cyqyy͇R5:5HoPl2PjhxYAǽ~P\k¸DI#'Ur} *n-Kt+-KmťCb[8s|})*{QTtrusg8K3X,!2'bk<8`D?Zrh6Q?*Ķpϵd7Boq?B`s~r	p&04b+neԃd]6<NÌ[9+,J2ƂRb-)qB6xr9j:i#]
͌P)t=@XgQl_d}.gؑqqY!<xEEDJ_a\75S:J˫k,2WQ.0RY9șR"2ː= S,ES
`=\l&J@&h+<W$!驈P-)Wt![%t樸{Yj"Vυ*I=11qSҶ$C[fp]576f_{{m`QkO+7A%5B cXe8P[F|LppNm:WECY
\R-']MZ@Eӝøc8б?Hn*I2iJYN]j,+bo&E=Pk,cPn4?%S暥$FY{Cڼhhs,_JlvZ<iNOƨd;<_6_Z|y7d1nܼP6yy7]y-7/>	8*}.rdSN.M0]pXN@	y=nǐa*~f*zdHs.W	y^"\e&>r?MVϧWURU60
Gţ!`?pt@G5JhpvJa,dIrx#0/9d.QFzx$HuW	qws7眜լQhsƲۮ\-끿L;$	LB·OQbȥ<~ȿkpɝ Y42v,@r?K';p4Ɉ6f:,~1JQL(x0MiH|Q<.*.[_(oDeŢS딗EqU:H
㔎ʜ!A1PXg?%aX&POџ2^yKfc)9	N8O3Q\16pXT%]UOǙKʙJ&QC"x\<A{ZP2߻&;Ȳ77f~x$gT6tHcx#dsL9sq.s4.H35ݣxލ]qϪ2Ƈz!!v>3\#QkDSDxUGn`K26
w	&N@IKE8Fl4^sj{H|]/~QAYLC"NF2CO)2P 4h
c^8gK-n7baU:I*_YK%AI,nq
xX2,1,8el`1O665"gQ<l^C0n;"t4q;i9v8)
?Fv9c~GAL ĜS@}v6q&i>bF:gc7N ۫'ZEob<-VDEp}ؑ:f!J<([8#)>V_"ˀQ7UFŭ*xM/z:A3r.^%|EquQC1.1<1BCM:vm~(#9XgcYaNʒ7Wd9,`Mul'ǐU
c|ރ_Jzb.a0>`<
fI%#jdDg)T13Nx+O;BPKtT  @  PK  C:U            8   org/bouncycastle/jce/provider/X509LDAPCertStoreSpi.classXy`Tչdf@	k6@1 &!M"P\LmjkVhk{ebL,-El߾E}`}ْ?9;w˓o=vJ1&Z|d,Lr+d\-I*X-#$c2q6q@ƭ2%61,㸌%|Gw@w1b>,pi(Yk7-vpׄpnK$QKfCjjtXEQZZ#ѶjHBjJ6Цu-]m'őD0d`mcsg@׌d$iFt~+k.ʮM]]m{ulj6,_j@UwksWݭ-ۺ[{nommj۲ckέ$uSx'cghQ	[o5SnS'Iվ>:<as,Ɲ!-NYM75=ƺ5UhD5KHNzIJEb$j&@+dq/SZCTDd<N~qҍw!?ƎIUhh\N3c,;Myڡ6dFh2ָ_k:q 2_fC"[IVMZhA5~40
,8<Aa+0m"m1?L	]ځt¶a_0>aBOFC,)0]3
pQDnG}Mؔz3L#m[kރx`PAۊ4y.j/al6öCfAz`hz%qeiq
씣cؑp\`56e3_.xJ,q˖u5R)L1UO-bi@5::֘6MÞQDi:8dRQS-AWI^Ռ[iٜ\>P4rQ8ts?1;w@O2#wJi
-ԣF5iv8 ;VǇ&^S[ZŇ-10|%o~Ŵ~5֬'ٰ9LY-sHHڐ8r:'11JpP5ḩ32F0?Ƣt'h<0ؙrs*	_%A*N٥\Ǣb&Zvf\`KfɃ=5 %.(Ɣwʢrh㺕EmIXeiYfֈ՗3)7%K$SO\^*dKCA;IVsc"Ca)S/b[\}j˺]MOǭEw~
<Du88{bn{=F:x"W}B&j1-y%gqa>qu0/j/SrObѬX$[QpIN^kzA-sKpޤw[ jA&"<yiWa4ۢQڡNS~46z|sSe!fR'<Iˌdr3і8Hרʗl&,Y	KxK;$|P$|XG$|T$)>!.	)		9		_p#J/K{$|U½&>	_M	ߒm>V]iьmo "WLw]>{f*+DɟzL7aA"yH`vZ	w =Ǒ5N$-`<fAQn',\vX5gX9*L~X
̓2H|gx'E
e+3f.VOy	1/I=9b/agB1P(&1:Eg??/7)rVb1.k	qѵMN,yaBx9Guǅ~44헳bS*l:xIqi%Ks~/Ä)X?(X=Q7HJ,Vf&CMQg،
VA
uܫWXJ
Z
`ɰa7w2hb	[tQ?13k/*)ax`~g{FYA[FO?[mxCA;T0WSЋ
nf؏b@@A
EVAeBacP`PSzIŏJ/NJ+0\6V1fyc1a%C;CgxxV\œ?zɰË:f/~eogX/Z^?
ۼh%$2\ŰƋ&/^"ڼx{'f{񚸞^0,dXİa	C
RZ:z r^u`bfΰrXL@9~%|4k1a~#f0T1Њ߉rC.->zV$3$?3Mmա@59 7J8
ĴڵV{VG_4~{x:!8Q"Fں=yG4=cqψH) KI؈:Y[w
{,!#
1N[HHE
)Svcx67A+%޷7'bOJG}voo.w:9{"x3DP@]GCJhM*U:־JFU{QFljK*b!L_h(rD?X2XZʫ,e}%)H0zSJYEBeL:(qŒ)3\eQΤP|QTU#▓g,Y#⾐ν%aܾJH<~8MSߐΌ/8
c%Ҩ6ë=~iD|,%|T|2TGŷ]8ɽϣ22axCepCڕ֎ey7%Py<%n=_>*gIsʇO
:aK}EߓVXrxվ'GTfQ/ىi?_[Ix
87$&fQFL\8O	:J(Cxpe& ;q
Tʨ6䦌<tӨ9|^ju?!I MJ75%>أR"1oe,3%Fچ<l3<xz@
'3XoϠ/dgq)%Mpڌ	N󻏑'f{JUXJ	Dso@/N71Nm
N4R[t۝/u=!Wm]}[7ϭ<,'#1Hܜ+i_t$~fQ]uȵ}9\n[ᱢB){ae>V戣zlN8)6g۩=.gW:t̻lC4CͨxjȪsDH\J#kK\[ONզ&;)vuSR⸬p6w<豫rF~*uR~K	#T8
KUʉ"&JgDqQP9^gf(k?r.KZvڮhy4IڒݪeKmyQ6Mr՝,i*_ءthK*}x/҆*yE_b|(}t綜TΞ^,iomç^vAʅP9(77pA!ůćGw!ibTcv?h*4
ꔴ^?~,W~x9:.ׄ\WNa+CS',r*SO=sD#E꩷i;b	2udTZpzKQfEvhEKC&t	9F	/S
̣
NqzT燘)*%=:7'd
7,OzH>nPK>S  #  PK  C:U            5   org/bouncycastle/jce/provider/X509SignatureUtil.classW{U--}e+ZDPhh+Dڴv%jnmMO[T}?MҐ&_;3of޼yye CDLq"q)"8RDi"!K+gPꟽa
9+.գe:-MӚF1cVIhcZʸHK*nE9Am-56em6lp˒֦z
u	d76-uIU] 2z-H|%uDha%Q
=lk]MgS7xI^K<g$-@N %H'@b̈asa ٢ao}fo1K -Ov4KO[EoНhdF\'b&3P͈9Ʉl+CUn:ԀU7in24O_v3$60G3ԔpQ͊(QN
.`RhyҌ؆mU	=}uVТj	&Yעfx,SPr'ʹ"+93U
%?%}ajDD%-}NP4۪Ujm0;JN-5vUq2a9F}=fZ*m);^[N,).E}&~^ac˴%T;-l37+m#ޫJFI\&Ubc. ǈN"I$8͖y.Knek,V-._ޣJ<=duOW;&ӗ0F_i\s&UZNtb3I
8ӔY
ñc8! ÉZZBm'1t002jTR?zN-3å\P~7Iy=Shh6YDUGO3wy䀳]Q)(:-v#y7sQtۂnja7F5n祝F@ Ͳ7at_/;a?{a~ȼoB#\z<
2fLpz9aphఒ:9P-c"Q
K1Al#ci&\G<M/Șeq7XƩʨe2ppZ\%c.p-8\Cwpn![8a|7s݇~Nw77Hn#A#
!H0pg9JȕMQIxRBఓs,+!'8$$n	8$``z4}7ҧ>}g?U:۪;y'Ի1˼|D?*I~#?.ڍwv8WcJz/
`ou
_ކ>qkMU@
ߦØڃ{^UަG
pӊ)JUMŁ)|vgɐ.h2D%5P)?()(%&C/uT(ٷgRL?	v;0z?CIZ/[x/[,R>NnߤO᫝ne!|7bU >N Vz/(9W2=F"32L3L1odF̛F$3\PVv7`
g)PKz    PK  C:U            ?   org/bouncycastle/jce/provider/X509StoreAttrCertCollection.classk@Ɵݲvk6AGEEd1!"'fGL͒rW8W(ˤn@ṻ˯_x{9aiD}JPI%P[\Dζ6Pjq,	8|{1OBo,!e8z~^(L۝.qRztWz2ݏv<~֕m!O5<(F?}K'zS")JFIhaBmBaul1TdDڮf(2cN40`_hn*[ K`VLbV9
%ܶQ-3XЯEܱQM|;ݥ,xFuHf4h5m0~'3GQiayǘi@+_thͬHd'a4%"~2PK_C  m  PK  C:U            :   org/bouncycastle/jce/provider/X509StoreCRLCollection.class}kPƟkeV60AȠcbDmv鲤c~?]/so&Ͻy~52d; 
s='("?+!7ދnm!ٌPx2#:9:;!|g,>_$~@D'i84m;aXiM`O$G\^M|X_3LG|GD<BD
suJ{n0!cW&A03`n2gXiW
]m
?KJ=m"3'*mߙK
ō}XȠb-VjƂ&qDLqkD	Mq!ی&P`e֌&jTmqY2(}D	xvN`:]OHf1wFrX$'] PK   h  PK  C:U            ;   org/bouncycastle/jce/provider/X509StoreCertCollection.classk@Ɵݲvk6AJE"2PӸfGLrz_p+8˯Qˤn@ṻ˯_x{9aiDJ0EFx)&;gur2C2E#as$
{"/UK5B#I!}~+T@G7P|43\=J8e~/b*JBS
l-8`7F%#vMm"s'i;Fs싔+U>Psp	\M5M՜Lㆍn(㖍,EܱQM|[}̓wbVOf:rF3z6
hQ?uO[ȓXiD#J(m7<cl7rw/X:4fVB2P0)%"~2PK  i  PK  C:U            ?   org/bouncycastle/jce/provider/X509StoreCertPairCollection.classSmO@~zԢ  y9

bHb	#RֺXڦ#OWHw$|Gg{!_ffgy/_,AyrPR1̯<﹒Qh<B$wC['MͯR%"e/CTM7"e0)MU@xzSHh(Õ=~S	xJff}<JՓCO
&UU슄a%J|g';*Ξ'8$՝Ks+^"erZdKoUiB%,6>{]֍%C^E\1c@7K*CafQzКcίrUп;5fϛߒ:4|WhQznyܰЉvq5m:q˂[GcpB7&p&1mb3&1MA;&FPfDEbhD]Ž<~w1bM(G1 L^|GG@K6k}11]|_[
}1xwP^Q>XWK80@z@Wʥ>fPK'QJ  ;  PK  C:U            :   org/bouncycastle/jce/provider/X509StoreLDAPAttrCerts.classTRA "\# WhcRVݭRŧPK*>e&!A+%h`hj9жɭ>/0L-Ku|CHᗌrIka9%S3xmxp
])ZX2å.JK3tL&S3R+VbՎb̋[tZ"T4ճ.lOKSLl^RLeEn'byC8r)<;ñݠ<%uʖ]PMYZv"T /z^Ptbb-;k-Mx4;y9=̩^ԓLa!ݗ`"PQ$UP{ڬgEkB\^n]Jg1ujȥҭYChpT1
}Nh8ᔆӴtXDc%woޫhbfӀsv ㍊sU_)5sA*[Co,"ԡ!:ZѬc:(ъqmPZBGS::0n f0b.GЏJ\Rjʌ*Üהčv
Cs-_!Knpoق`hR"
&%NFgK|K Td:GMt΍@-Fanu=M-u2XB[|ma\%(8O	\$>;d1H)HmgdyLWw{3)soPKC
  9  PK  C:U            5   org/bouncycastle/jce/provider/X509StoreLDAPCRLs.classT]WG~a)BVmD *UƐ
H{3l0vٝpeorN?nz
 ygwy?fg}ǟ .A/'>``(OBq})pnbJG%j"R LCX	%j92?LTk6*GWU!uAhgMF3Vjպٺ^,
߉*96,'*6IW}==B祫A N%u&ݚNA[A<"
ɹ"4i"+t#k&ñ=PʭlїVn&1܋/p$i{ȟjfկ{GڕGܟlg.͐Hr"nĉmb1[`I+$]=@ԾQvS^\9719s8qS891LGvRx85wxts&S#:-KLqoح]1T[ϰL[8n8dCX1㜅8>70k\0`c^ť^Lrgp%Q\c_18ƍ\f7nLΘyc|Ӈ$1t
K@CAV{Ӕt^l.	bv'oVF/O|s]ΥA9Ʒ1ZXy6QmbѬ&-+roĶp7,$42ik4?Q֧~n bqJ40<;uXjqR~-p WHs$M)h&PK8h    PK  C:U            :   org/bouncycastle/jce/provider/X509StoreLDAPCertPairs.classSRA=M0"@$	K@AA

UT|ILB? K*W?$Ȓܾ}s|0UBpb2mS0T/Iͯ1,QKӱCY!vrmCIn"lHqRN6+4C3-\C0R!y	Js4t	ѧJIj[
nL,aq@]g%nLnGr~YU9C(%]L+/9iZC|CH,ȽRkb}q3
'gIKĶ
{56<~Rqӹ1d]gפr|9(LBAϵ+푠z*SRB5P]W3Ȭ-
KPz

5\ФYCV
mnjEL^$@s)I^^-QR람f:}͡3D,U\Q@	
o}+VE\CCXG":*Q:n+S~Pޠ b:j1RU 0*@GAt]e0d
0Pp<n	jSoyvoXDT]ȧ.ҭNFgEs1TJ2:' cOˎ08:#ď[}8'Lɭ0i*
!}h0u@tR`#3rV
Q PK    PK  C:U            6   org/bouncycastle/jce/provider/X509StoreLDAPCerts.classUmSU~7ڦZېHx
)4Pl^KX
'0Ȍ?+I@u&ss9O~E|#pǤ7<@RP?{IAܝجItn[f(m"\a;E!t\nj"d-($_Xp#!lV43p-	GA@Mw;(u%1b#IaqW%m9.r6IOIi -[=nSr&TZ&VDQ#%L5ʹ~IYa+Zd]<np3O!23i"Í;[;쬂eQڵu33Ӎ[ɹOZIٚ2?ZNFMeL/n筜kq
_DV_@Ȍ,9MԮҙ䒵UR|=R r9[RHDvQ0/$sI YUp}ջBԬ R]'ܵrJ,޴2w3<</2bhg8
9a]ԞRЙ鑼5ܑ*߿˔
mJV{|ˋ|dΕr5jS`8U{A\|N6s)`_ϸfU]Ka.UVU|D
'^JzL>gkQрaA>~ԩ8zgpIE#^Wц7T$1*NH#Be1&*SB&U[*!EIЃa:.Ǎ 1#Ẅ;i/_NHpS­ tJ@5ޖp>i	%CoZ׏^ɦ˵S<;
v~>
jdM="fhThl G1Q\!y
CP BZjXncQ
A2F04FVxJ#xb+x cbj<>ȏdm܌E:7RbB|l'h'#5شW)k$R4ӱhVl	yd7ǽ
`]ɨ6AdkK#y89XY+z*nw
uF(|O?C_<~߈0֚]u_PK3G  	  PK
    D:U               org/bouncycastle/jce/spec/PK  C:U            )   org/bouncycastle/jce/spec/ECKeySpec.classAK@Ĵ1jxIRt//œvBBM$
W
gx0>? `3
{Nlot[B\Gdc	ղY6TF]rw+J8\ee:[`Ua. ~A!arZ[n)(IW⏓t!F4Bؖ n<I|Mqvdړ
7+g')#eƢ$:^?PKhs     PK  C:U            <   org/bouncycastle/jce/spec/ECNamedCurveGenParameterSpec.classmPMK0}[Vwom="^Ax͆M%M_)(?JVAD7e^f7 GaX)47;crbB,/fV(NllVW"v|N	=r\YgUcJڕR}9/<kR]*g_2q67a7Nj2
1Fl [ֱMf\ -eRxmM)#CC]3"d	COPKf&   e  PK  C:U            9   org/bouncycastle/jce/spec/ECNamedCurveParameterSpec.class͓KAǿc#L~lDMC6:(	AuVt6QBL{1ӛa{31|~ 8C`<gvĥc8z
{}e3ڿg>=+]Cbd2ja0	7hm8KP*W:)7&<qGu{=;hF!Og}Z.XbrEПc骃^הnTBPo (L6
l)*.?e=j3˜-.AJUȐ1\r#cQ=xC5ە%}^s9/r-!bB:[cl
-JPK7S  l  PK  C:U            0   org/bouncycastle/jce/spec/ECNamedCurveSpec.classV]sV="C(ĖMCK	qp	KoYHr?Δif>G1압IZNP޳g?^FC@*] +bJ)%NRgmڦGb8&s|dEYՃǊcھ4Zvb0L*3|0D{2Bк<#:K2VűZS7uKDyNaQ2bcoCԵk9V}VcˁcF55Oq.`>Xv3*p\Y٠MǭiN6Z6}`Zu6*s5k)kZ7-Jv	ij+'O0&Z5x=b2	`z5Ҋ|Xث~]>gg:v-8Y[T)4{dW,;3#ᜄޕpABR%	.KxO	W%\0&}g[tj]ILQJw͐1[0BgSi~}_Ğ}	)^:w&
o`gVrA_d
UNch+%>⛩9/\NT#[7jͽy?YEL+8AqBA
>@ƠTu.bLA7(\-ØQmCB;%wEQ8ȘW2Rx(#%*`Q&.ʘĂQ.0/|\ǸE))<uީ{䂯z㱾j1\i%VqŦ)"8Hz\ZztuyҌ-qRv2)fvG慆O!ȩmbx%uvݖ'vAY2wc9+f_660D&wV!9 -cȅIƈ"'y^
mNcRwyR?/*'	#}p6V}ϕg$\8#5p7BaAw,wo PKcQ  ,  PK  C:U            /   org/bouncycastle/jce/spec/ECParameterSpec.classTKOQn;eax) E*)0Њ<Ba!q1k[)	.ܰVd޶Y3~wn2ח 20(!c72ʦy'x1	ᯊvMp'V9SuV*	Ji}HRw.$c}<l+mg;(c;I+JfyC8N9Vǭt"GU2ewx~iH3v:|]p:Rw\"[+^ԲKei	 UtoPѩK%=*zU\a]hadfM5ox2
bAP.ᢉ\m*]B_mTw5~>u7jCv,a ӡÏ1>\
B:E!	&EDᦆ~pwDnpWàx}wTMm;v}Ksd%%,L6e&2ˬQ
USpSOxhK3x\¼9Q¬}B	0p=) #
~<wʵ+|^{ W]es0]|xցgkpk]8R35؋*A{͆#ifbNCUh'PwPܧRgb+ܾ,Ir i1ӔB1S*,9&PKL%n    PK  C:U            0   org/bouncycastle/jce/spec/ECPrivateKeySpec.classNPZ ukܔBvRF&&eRK%	oCǆ̙$C,CMmDMec/1Ŝcu3(Bx7J[.*.Ti6΃U0>xH=cNHWk|j\588	B:JTI4.q"ՙefyG(ex;UXjƦPKZ     PK  C:U            /   org/bouncycastle/jce/spec/ECPublicKeySpec.classIO@mQq#q;@1
AIM0C`X	~!$<zCϺDA'L~^fĺ!PA)B=Bts>ZY:յd;pyl)RUVGb?*}Tvm}MgN	!$,)VoBnxgSPG
:#:"C&Y
51f&+!?kHdWeQX`VA\JE8&l(r-1lAI*cE9Dtx ḃ^&T5r+PKoF    PK  C:U            7   org/bouncycastle/jce/spec/ElGamalGenParameterSpec.class]OMK@}ƤQS/,GH驅:
$[&/"x/{op3h<⃀?Ɣ
Vܢ6-	$zVҪ2UN	;!fMZNlV1z*V9L\Uu&Wզ[gI#v
eT	1"cB8 '|]Hdf >kSk={Z=î;NPKnI   7  PK  C:U            .   org/bouncycastle/jce/spec/ElGamalKeySpec.classP=K@}.^SKbvp:\"ɞ 8Vna{z pmJL	ӼaՍЏZͬ`c	}ehr۩NMf2ѭ-Y8奞:p]C#UlqNq(^VLCX`Wm㉭^˽%Վ`a"z;<_D~oPK1L     PK  C:U            4   org/bouncycastle/jce/spec/ElGamalParameterSpec.classuJ@Mh[[]ٸS)`A~iB~J2V
C+8{?_ q@0]oBh]i$	
)hmcB7/<q@
"XZb.vLOds%'	gY.4[2#OZ,[CUՌ݄>UBpzḘO7q`bAԆn)=6ngcMlQ.eS֡*t'+o(bO;ionFm_PK>a    PK  C:U            5   org/bouncycastle/jce/spec/ElGamalPrivateKeySpec.classPJQ=ǮI4jkY[hPD)AluX7Cn!+`Q$+%X3g<`>? K"u'Z"61wSbL(3~؜gsv)kze	;QGG=Mɠpv_p>-. ^@h6#hæӟ*N	--E;[:+/JXK	Ph?/PK$Ύ     PK  C:U            4   org/bouncycastle/jce/spec/ElGamalPublicKeySpec.classPMKa~ƏR][ft("$Ax|}5UPhTay>` h(,$0zfcVSjF]7:-	g[wI_..*Thh.pZ9?s|8>~{yb^MyUƑJ+L%	
AGZoFPېk	P
z]PKf(     PK  C:U            6   org/bouncycastle/jce/spec/GOST28147ParameterSpec.class;o>FVh'0Fv 
ade12'%W&'g%'f%&Y$%榖«AT'+,Q?'1/]?(3/q, 0030&"8@7,)\.Eɉ%)@9`a` 	i& ͦo#X0b4v~te@Wŉ0ATe` PK'	     PK  C:U            5   org/bouncycastle/jce/spec/GOST3410ParameterSpec.classV[SF_@!mI[ebBJ0pm[bJkBK-Itk}%S Sfzy3INӳ
Lv\sή͟>	G.0if3djsl$U{61Юis`k^!/6мjs+y-XgYeel˱nDEp*Y1!'r2t-	8b#fǑ.UVM	aOob}㜋1gǡkmȨWs7Wլ5nO~V"yF+95mWψ#[UP25ڠ$OԸ^YJnH*e!KCIR3!M餑ɻA2̬bl魴byUV,=&&gbEƉjw7vfLC>ji_".yb9Y;Ӗ=ˍ9<\;~2@OU\Z5JZ*Lx5xT][{|, $	.OZN_A*S̇kIa0H8qcWa^򏳎bcZ6A:{Hu9
r)Խ߳
^ӣdYj}}n1Qցɰ:4 ">p}":qG%ԉ#B"C??р-9\@\D#V^hư (t0a$ta*0Dã x́71 z0al 28<4@Qzy^|AߘoƤק¼Wqlè[DL&8@H*К5{MEt}7HA!=(SAz@Rl_*7aCcKRtϤ]X|MLhrw>1o`CwDOz)MiݒEi(Eėķ^q 3\&sh]GɥVFO	vJ6j;UV7j%u碿#G扺o6tJ6x:-~=D{YÇxH#)=RIg\lfe1rD]_lFs)(VRY<d\ڃvb)hNr;G<`ׁPK,{    PK  C:U            6   org/bouncycastle/jce/spec/GOST3410PrivateKeySpec.class]KPGK[o݄bFAuQaH\5i(
>@*zΦ];=l_ jd+-:☁IF 92F`(#Ơ-㒏DjϳvoZc.7:z͛~9#S֧DYŜ$Cˣ)SǾpwȐ+WRwpj!yX*#+c-r	z[TIa
ȧ6eg"Xܠ6cĂu}g;E=L|T,Mg2D&oPzX.t<TgZ	@PK0E  \  PK  C:U            A   org/bouncycastle/jce/spec/GOST3410PublicKeyParameterSetSpec.classQOA]nR~-d!p0C2ٶ.mi$\/ăѫ17r1$}{of~}`+F.!ެm)=v@ȝ!t0U^T04BR!|ɐЩ3.kn=oJC	j/}ޕm{oJͭr;LHѩY
MB66Edw\_΍W'?a⑍
`6Lؘl<VaOcjH8c^
v^\1}M(oͦ$\(@0@] 
0j1XHbF<~Bv$O3rd</IG{ .spU*XƲjKQZGIՅ,7u07^Xp^_:Uj&I:j앫ݲW}= PKb^    PK  C:U            5   org/bouncycastle/jce/spec/GOST3410PublicKeySpec.class]KPGK[o%݄yWED!DWsĦ
A}>TMZW
w{3ؾ?>4Pe13K'!Z!C2d{Ƴcf'Ll0D>Y;8gc/xay}skM}`CZO<s*R*%Omq%FZ/uW6;iXK!22Ƞ@_lp/IP?яɋjS&/e
:m>A,X׷}TN>zQQ||T,MgrD&oPyD.t2RgZPPKʜڶD  [  PK  C:U            )   org/bouncycastle/jce/spec/IEKeySpec.classu[KQg-xI Ԃ}^@_zZmEwe]UACEv}933~|8~ >O`Ws4VuEeGly2(,jCjlc9bjfѶ6Ԏf]-8iST_u3Z6G\;P
E_HpT8mV)/=jMzXXQgqW C/4cBYݱ
Stf^1yZX]P(x!@zb2!İKs!O$ıAV& Rd)!)bt4Ft<Fn+g}\c?]q'0aJ&L PKrL    PK  C:U            0   org/bouncycastle/jce/spec/IESParameterSpec.classmR]O`~ޭ[=qϹuӪ|!\,x.L)oFqk#@zޮk|os Xg  Ma68ANm"[EE+Xl_c`ԗQNktLaHV됻/yj}1dZǆo96Xva%DP%+(LQců$w]ǲ-rFcCov]MUx>o2f۵o4E]5nh:Mo~
;m옆7~d^vJmj&=:7 m_eedddL˘qCmu+}p#R1+TcH bq%U#D*]]<Q(|>
a~1Zoy9R3C1ۈXZ)#͆<mIV:2sȓiR6¢X9x(2$M	QZ.˒b$kxZix#R1}Rx~gq%/rIR_eXRZ&v.tœ`?,#'6	 i$&Mi5==PQS\x1R,|	S/IwSk3!E:,/PK/    PK  C:U            5   org/bouncycastle/jce/spec/RepeatedSecretKeySpec.class}=
@hF vbhu3Ąu<`<Icoޛ0Ẹ42BS&a#s8&>;$,b%c┳[Y|V͚#/Fnby"i(|4zo:ܵAhxI-	ފsͪ>{5Ur*԰ղ[3݀.PKU     PK
    D:U               org/bouncycastle/math/PK  C:U            $   org/bouncycastle/math/Primes$1.class}A
0߯TD\7.DƐ?D Jw`f3`)]IsKlCJn07[(FŁc{2WlީMטď"8@fPKyY      PK  C:U            +   org/bouncycastle/math/Primes$MROutput.classR]OA=Ӯݶ.P"VLM&&$"Mױ,)/L$M|5G[b$ws_ 6CҮr!\#h4ƝQ2R#!i/[-BM+C~z{v{O8a;G+=.w+bX\zݗAhola(ٗ)<ƕMLLf(=mBMO3{g2QIDsx.`!B%I0%-pBA,d0Yq-KڒJ\Wbhh֦牰Q֕Kɝ[<xEX"}@kTY:4J{d߰~tjF|Ǩ&Cj8)kEV>jmk_#p\tj_v×)z^=|+g	ӊL3PH<f4):0NpCg%4u6a؜|sPrM*f_PKGaa    PK  C:U            +   org/bouncycastle/math/Primes$STOutput.class}QMO@}`V
($78&$`x,M[LO4x^Py~}|8)Jbc+7M#gH%[sA	]擩M;3FR}oz돦<2䌡{ΘtbίMgc	
JHHXHXgȴA2n![,r!XL?^)DLA
6 8T
@
Ey<1T9,E?IQD;4pLbpTmC:AQMp'(A,	Yuv&zh(8BZtEIxvFV8
OdS%,VpSPKAՆ    PK  C:U            "   org/bouncycastle/math/Primes.classX|S?_MMrm\Tik5h) Ebkk*:M/4)I
t>`7|{8KM::^ΩtG}Rsww+}t? J8{9}s~y_⦕﹘2M2wrk*fa3DE)BP%"0OEX$bA<۟Ɇp2I'a%^8	]JFͫԇ+c8u+YׄW2(0$S'`v϶jp*V{fkY5dT2hIx9Nx4Ɛ?%WQ٨
D+/d`hl1GEcx!O]i$)sb},%7FAQ{󲦦5+-hi[]NhZ6na.nhu\എT*ܫ$TdG٤t(	LW5iW
ZRe`mW1p)̙7o^cSq~ק&i8lkG77֣/DuR}JZHci H6jݩZR	%SZө.+P3Y4P7+V7gJ,{2n5aĨ,O\͞ќ̠ R[6hTD\dg$d	JQ+yYrWI$Vb4Sy:-iZo_	4eTB?%c̞$usq2˥Sߔ.Q6*	}mc"ƕĲtWMfW`QM15N=Y=FÛhV|yAK%js:=/jϦd_KtS6H/6hFLq3uqF@m;1f`z$a5	S۟j}	t+6S2لZKeS3S398Bs[KwXz]N+O|#c3ӣÓyηi:,-.`f1FgSΠbqrTb-8S^f1-Fx,b-fŔXLΌNT:P\$|N5t
N =h\i:Z}il9.&l[cM)d-&[5#tL:WT4M]ߋV7P%F}\TM2(OD)G'MɲS;e8eqeN9߄hJ':D.41ǻqMnzLjEOyѧq/zj'm~
iIp)|0KFUM!HTCXf(N`-&	>'JJ%Xt@iH`|GSA/AO~	ZDaH7$oJp:|KAvߑ`!|Wv-A<(A<$2n		:x \p#wM<KCQO!x/H3_ra?$?'xW xu_U>	~BGOx
#OS,7zV}II|.O(=:A̿<ڊoV:)Ǘa47%ɃP͠+0

TN:S0ԜN0~1#{o귮Άpp@}]i:{Ϗ;B~
D`us7Z3Bt N&1 ikhZ	U,E#[tO {wwgwxsAAb2?:d>.*Nxd{U9eg0s.2CwSvC)5Ìչe> /;1qQIvy7
8vBZ6JC|2eC#AhOPF#qcX$!瘴{nCѬ` 73_p@}S(gMndy.ot<&2k|xTz\H>=s>fxfȼ,3\#=[Fs5*Weƒ/oyjf?YNrn
Ex
^]#<ʇŃmSל!=5`NM탛:ߋ*W$!ă:BYh;86^	^0{q޷N9O5!dnF2+ ")B}"ohataTiUFXZTha0ZnFgڍvnjsc;
mV
͏^oh-cv!\
A -Fz-R7қMqŭŝŽŐigiiiigqxҴxڴxɰ8G1 Zov<b
HW|uZ][L㨷BruQ! yqR'i
xf_8A0<vfIna|Gl'\E:;#R-۹sT9cC';H|`eW֭QaU~vBqce칏EǇFk	)u<0;+h&F>'*D!uF"6Dax7SgR;6pEpXOE=2n0:t6aS>@w3RcT݇F(iq}WYӳel,I!eTVz:mN-3pnб[sh$<Z-:;WK@`R`j^ ?KmK
_f7cK9bnI	^Ce~mɅ0rEx[qXίQpltou]H*j#lGXwݦza|Tx$tGH]8XUTC#X{wLy	'^ t/Klm$t;FBGB:>W 2tC&K;̫nR?lʐH1MHݺ_LܮRNt4 ;9Wk'K[;~-_hpekEW!Aٗ[
|W	e{Q:͡,DlÚ}rʔ2tF׳]y	xgqg0p _aͣ Yj>W(=ou Ng2*1Ynr+AAѰO?PKX;    PK
    D:U               org/bouncycastle/math/ec/PK  C:U            4   org/bouncycastle/math/ec/AbstractECLookupTable.class}JAlv[+%I4v Bh!g!n\wd3|+m,| JWpp[7fB|TT?6^RWsu/!+Y	o1ӵݪ2F/}iխu/}?LR|&D|]-$#%K&Dwe`i(fC'F
7o?|PKz?   6  PK  C:U            3   org/bouncycastle/math/ec/AbstractECMultiplier.classSn@=8qpMh<Ẓ<P) 38:vO*Sa6lbM[D%%;{_r1d@uVĐs{%P~o_P&0LNoS-Kw>w|x֮p)?<pvI(uPr'i&WX
{
{HXIF+R=qԲo56|/Iи#x'n9Jj'A&^șMM̘8o₉YriaR㜎%.<5	Niyla!e#
Wmdqƴmp%sakX0.㖅,i`4ϾV7DUs`BAL>EF1]Uty+1V׋j1"Ga-ƽAF1ԍgd
1B:3H%#yM
CxMiG;HPKz9    PK  C:U            +   org/bouncycastle/math/ec/ECAlgorithms.classZ`Sy{un	, ļIM8gum+J2F:)K˺:CB⾶.5Idv[junm׽{e`bM?^'_) Xt	^'	l-;'GRKJ-Vla7N;҇cDi(Hx㬑N.ZhJ
MFS&ݔ4r7=ly{aPEbzE=b-t0{vemtѾX.4L.m	#ߞ4RF:2[!Wk5Hg6[]Ƚ.#=d%XD72qyih_,"{cI?1bă&dmg\zU)7<4b+䚐 bDRؔ
fR%FD:9sl/od|O{c'LUݖ@sLߊiz!x&
&r)sP)1$9ѮLXo8?g]{.ؐyҠ0wOInѥ'h%qDj(u;To`,f}vR,޸38_j2Fɉd@%1{.8.a#%JYЛNCւ&cbCZC&O>rKuŲD,lXz#4bفar#}P^hzML<Ocw+M}x뤰}TlMfRt~ 2Gn"FHdL6O<flNVl"?B4ۚItٚʱ	,Ҽ7'C2XUaLc,*wI'Y;/W7(RL4pM{fr 6<O.[*e5ͯ(1;ɎĔ,ψ>?[< qveGәzmsoƎuv'[y)Ǝrdw:ɀ7ǌl&Д,fs~teUg~#k.fDR\b =L$7+C@ƨZ#f̜y#ߒ
rU+s$KHBh
q55j9q8sXa1sx7;9}sxC7z8<'8<'9ˡCSC|ōֲƈJY|6@eZ1ʬbՌb_xĊ`_Zj+A,\-y31(֎+ZVWTc-=[*e\^7;q
7SMdkZlm
~M9ώ252[1oɜ+Z@d^+ekY%
:ߜ@lǁ2op|?$ 0XAl%_樹;to3~.s$T5aqP	kx2S[e;%kP
B8Th!H
wS-DFd;@VaփKD:U&Eq%Vi#c*UXgTX	s*gU9*!"Y"k
!"*
QUø
I6§TLd|ZgUx~U.5
K
a"IK*1Ls'	vEN./p7=DE$c(`J+8/"[
׈&/#"B_x?3>'D&rU"׈#FMQ3"Io$ODM?x~Gை|OD~W9;"$oD~@?OӳA䯉 CN)LDTg|w
.|oW<NOf=Ⱦ5?cuFvk2;*>R`b?c8V_dKAvxZ	bU@ӳ8*=y}y>:>vgMi
;xVY%#Ħ֦$2Ե^SS@Oσx_wtIk*_Zm	C$kqgp#/ɈK`vhH4nk]uwt9o3cPKuxf铬'Y=
NM

L`pG9aNr
W?Ow` bnux.<VA`!qqO\\%mh=n[+Q]*]NY@UozBM_xE4Y4,	`@v
6oLӖmB8tU(
OL[]q4IV[4|'7QTSt1I(jK$ݮIkK4 xᛣR!xˡ ͋k84,_㡈`ס;8_/ї_S5qaMuWATol+{MNe+lgam6cIz@#=$"qWSP,((d
zYpho
HM8uea5ITi
o4l^
#pD7:I9nGƅM!HtPAͺh:vKшSd;5̞;fl3{\NF}bl$$[!D]te*M=芦5oX؃r<y}K5>/\]AU#[E:*:Q3LtD'~Q:lMK1q9# QN9'٦S}ٯ9lkD	hN>~Bt(̥Y+1]u;䰊}GYDKAG<Ds.kEsivoc7nmTkd#5[ԩ=Oѽz^;n/a]RU`ԙ3&=? נmU '4򊥑M<@(:BDh $'ԄUsp?hN̵fs}BoJwpqBN&\5'Ӝ{X_WOsU`j'3@%P?R4)[
;0OP,F`JO^DKl+Z1p5W`<!	Uͅ{[S5AU8QGSǠYCkaFjENGּ!
?cBs\g,h&6,xheC/
ZWuy
zæXCW3^vI^NJhr'zމ	#*E+Exk'>rkb_"TZYCa
&T.Gfu>AZdZя 3ʪpq|g7sJ8D{ymަI|-2h-OQj`A%os1y|*@S4>ʙH}LY_	\bЏ~zГh;5NB[E!t[s'DQxXH~
rxލ(
}ׅѓuOZ.C|N7G豯#Xyc!&ⴅeMn<_,0^]M	a&P,cPTtPMΥg-iM\b<xuv^S8Wl5VN's^.&sMj)KmKdn]B,[68
 %d8~F*s/ٶ i6OYY2f- Us`F`kۊgm#!j7#.YFIFhg9PllIDPɺ*b,1ce+Q$"i~k:*Mʨo9^@@ݨ9)rIq.s*Gq5NKjAu+P_bXˬ0nb2&T /湶F[wŊ
RX,;XjD5%=.jI!e=1rj\ OW.*,LG6fMd(iA{\SaYZcRAg^,8v`tµZ>laMjzGm;}K?^i0xzLŚ-&&lI!
57J/|Zwjuo1Ajfw^/"Xyv1)3Z1C]D`P[Ry5Xbr],~e\ZaRA<up;Ov PK(  )  PK  C:U            *   org/bouncycastle/math/ec/ECConstants.classmN@Ĩ~AUh"16!	R˸1.| xfg_ϙiUR}dȝq7߸Iާf)S@ߤXbD^P28wՍ3~ua| c1>"Bϯd y"Cd1TS(ؘc([Ξa`S!`)
9"<VS@	Z,,F)N檷'iMҜ6BON_8QAǁy-,iwecPKQ2    PK  C:U            (   org/bouncycastle/math/ec/ECCurve$1.classSOAA=( Q(Vjb45@H&(K[9L{`$D?/Q Q/H8{W7~+abk=iW0\5nsQ7`dpxm{i1or^]jo5i<X,ˉB.m9<ǋJ;S5ʬbeǎ[3fr\l^ϳF1ǳ{%hdT&ɕ*A:΂t'_(u09zNM1#vUP*QRPK;(Cv6*]M9
6jj\2k&22wk<*}:#ӣ6* "hV!'_E.MvR:*D]A4Z	=B)1HI{^Mʚv`&z-Q*CՔcd&!hFzR($ʚxB(Y𹞈޻޲>uQIF?zy9E{WW@U~E藊	O%\IȄui!ԶJXMDʣ!RX/_O:,sPo[g҆L7zo[.-"L%3:/p'B>8u,t^Qt1.яۧq`̓P0"?i
R.vp`;rCܝqt$+H"n PKɊ    PK  C:U            2   org/bouncycastle/math/ec/ECCurve$AbstractF2m.classWw~R(I0`:vW(tsZ֐%$dRl )a[mgAXKneu2ҍD9uYϡٽC38?zu{{sJ
a\, 8	r"K5m?(@SeO:o;I<ӱ'zԝ$7[NҧtI'҇bv	tr
0g$3.iL"3}Аw
7yiû]pJKhZx\0J9ehi8]-ݕ^ĢwC_L[w{	WH3=h7=(	PI(gi(nzd_I+L&0쵌aG+zp0"Q1ϒ{hz#\wp;X]Lg-(V[,R1UoY)7vȓMkrIV:*Wr
٥PK9iMSrbz)<nW#qlm}=;E;ʮ1'j؃먯dk]jՀc]W'k*
jwD@Xa<]MkV?%,egXSƓe꾙]<Thgas{D CFLFBFxH^d<,c2ukwYmI]|itۚ訵yige9
cs";p	R{ɲ#=]Vn:<k(j0Lܵ2IԎ%ti)LjUK$zFtz3ִ;\Om]5^<
{qەYuOgAr.*gC<u*$DTl>ŰyvHT4bTgGc8Љ*IV|AF|I|Y6*bL{e؄b1C&),x
>3
za3f>}/(0L2<u=1Xf7-3
2*Y0<(^T÷1.8Vfmp{,z6z>f
	zqg&F*b؉/=kG009J<U\΂?
W:Q>ZH$7*FEoFܨeDMǟg(%^FȟDCh7$[[9KWHU)dFݱd'aFLVp@%fIї}җ[TpXeRs3/gt4?K+""=wq9&D>䗁#/7t7>[
i-˵n@Ο*ny.8':h-KqҚ&[{H*ۀQFh
c;&dĐ搋?rS$\[*]~CDZ72&1M.@aɛ`Z5Ф%UU WWEM/b?dYAFo(	)E!M7&*)FGo?J`94FhDYfig.`7DgipJ|%PҢl*GSɷ.>ꭗ3􎶈Z~31MH"hhih_C׌,^T-F0Q*?YG*JAe8K3/k2k#VM#u@_^q5F}"3KU[ 1:3fѐLc,.GL]~hF
n.?
~4ygc8"ٝ{:D
?~wQ8&j8qIϿ/|А.b#|PK  e  PK  C:U            1   org/bouncycastle/math/ec/ECCurve$AbstractFp.classUSU.dIX
jPk!BM%EVl.˶M{gCqR}xn0	
I۳|{ι{~0
aq!rvmq!s.Uʶ+rq߷.3nd[,qdK2ÈqC[[,m+
nqa`/p
EvSpm2oe.~.UƓL<>:5Ya{Ɩq[3YU[QouR-QblSg]
0VL\um2nf٪Eԓ(
X0L>\J$ew[Ua;@A,FZ9D|r%TiS1	y[sbXňQgT<YgK]6daX_lךM1KFJ>"_#bڥ,3e>N]2/:}nV=[lgVǳ2שcv]?gZTt+8igs*hQi8EwV]脆4JGøiPh
%岆>a hPSN2⊆!	^BU	op&pM&q#Fќ%	ޕp+%,J.-	y	7cHxI;x"+r+-:s:WaUpe2	Q&/a&S;p:cp)PSlTa1PosaY.!Dn`'S|X7֌2Wj(>V1Dݦn^A?f礏v2-S5?`"d(Rm̄3.dpx(~|2NNI㣇ʓPcZE˳]rFTLDӍƢhө!Qג;ȧSJ*FU4v[p2oM%PKl  	  PK  C:U            -   org/bouncycastle/math/ec/ECCurve$Config.classOPǿu"D72p@
ea	qJwŮ]%'0H4DQa@kv=/ I¸P+A%^c͛?e`ya96U-n8[$pCv);ne#fb2}7;rڼ4K^aEM}K,.iy%*P_xkd6z
y[*RZYL2$;U6tϷV
BQX+$sWf6i+l{>ȻOѝY:%"U+!BRUApIJ%tJ.!*b+sTEPS '$tЫ,6_].͉
RҗQ}Ւk%+JWUrPQW[XFH-hG@F/b!a"t611(bHGC68!1G!܄m,GNzI,!JoK.V%y@4*}{?G4E[ӧfjcVM00ƃ5L1tcC1md%_;
3@F9ny	Ae Kv1}?=<\̈&dVT
0)t
Zϲ0(*-<~!.HHT2	}?Ia	zUPK\    PK  C:U            ,   org/bouncycastle/math/ec/ECCurve$F2m$1.classSOYn;)uTV-
ȊPZEk1&e
Ì0˾샛X1j&+{LWv{ι|O C<;b5FjBf>q4)
OZe`BA7M3Iӳx`'z"ͺ5*v&_-=Qp}r(V0x@c舌[c8zM[^\As;(Jk:A2߃d܇ہe&NnXRٶV-hȈ,=g6*'Ag_:3;kՙyO
m9Twa
:PpP!i]
+8Ri0l{H1zXè1C4	XdiiہjYf\xZ;9n\z~}lB6VEEGT#:T BFLą%HaD^vL*A ƅLgR9!.S
C80Φpy.џr1mo8sVPwh`
Ǳ}ߢ9;pseG墛irgmiJ ԔM)bHF(jGuKM\ֺ&.iGhE'-K{[NQz)|%~kj</r:<wrci؃?&d:)pOϥd_NKޕx/>Zxdmr}!/=@YȬ".$2(qXbQ@L47g+\r%:Q휎 I#tjXKZ*w5nӕŗ(÷G707B(t^(uK/S1̒hJVd|F2bPK̓ILn  3  PK  C:U            *   org/bouncycastle/math/ec/ECCurve$F2m.classVSW-yl"%jZaEVj
>"U\V.M6(ֶVѶڇvP?ؙtS{fAZCN;ݙν{~7`3qa [.l,@~u[UM5	X޲?ݽV7ZI	VuXҢQ9iĕWmʹFQ%mظ^pFŌaRF㺦R1E+QCOpDu=1HE^]hB
%$GyH^y N甭ʐ]SGBvr}I%z1Gvf(1fxcѮ*4*iXt4`FKnLʭ%ӇB9giĚ;n5[iAM&TMQ帀U1>.kp<xK"Q4TT5T]PavDC#9%P3j
(-I#A1_;/ݤ-VK~+@4W8
E2sBUs:u-֒HTYiN^9GݍΤRdzE25:'*F-34>fS5cr<ԨIud
T3(pmt֝""(V:D<&^F
"ElY",ItP
I&yO>珈sg2H4_!1lĚR{˺@ANL_/ufH[]a>i7U
$d^S:w_2W@0/V4?,E;X41Vp[L/-B_Eo~|4O#p_]lߐ^PEAb2T`Ӌ%SRx6/jab
N/AQ7^/EV`?;JsG1nedPb*qq71v<A`'=Dy!p%=hI}gpa܃]xact`eѶ(kIC֌}@ϭhB5MIr2$c]r=fDQ
jj~Tsd%%KR)HV"4F3 Y&UVlvAuO*b$˧~9g!lf|ԲOIY#UfpATyg`B*]\+"+\$cduܙ+-*fv?f~ow޷Cxd3<4SE4O4O4-O4m,>mIG6%l[S~6&7',lw7L?JjX+IwSdm)woϬAXLJ˖e!AK}jłWQF-f)l,tg~q2o93ؙ&nfm`g=Gݰ/s8(b+E˟;ԬVp=UU?,
J"mtp O䗦5CZ

.
DMgɁ;XiUV?W=1^>KC;]XLEVe˰cNI5||c[~$>iwI|}cM"+.SLwBkDkwd:SF@KѹEDl^xZ`G[W2_Jhv[(nsO;.IPK4*&>    PK  C:U            )   org/bouncycastle/math/ec/ECCurve$Fp.classW[=6&I%Ƶ 9nꦱȐ‑mC ƖfwI׸6u؉&隶iIJ{Ӱ8,-:o{]^~ ܍1MAěxhs#IDxvuVp5-'zP;pdOOμ͝Xd\e{c	[-/bDЎDB)3ci^ylv2a`zY#Ӽф':Mwday{&Atpݦ;wZ:M4eæmXoT&]ꅬ}kRѳe$8M=MGCkq˖Kqm!-t`1ک^۴<Zq}ffQMK2$Ԅ9ūEe*=
RдOPhvPFRNӬMG5ݚHlSJV՘x)AsQbK2L@_ckY;OhZ"KHteFF˶;Gn=Ӷ($ðX.xf6lniMdSҚ'-u#J!bi|̷zH~H7=;p*vzAL(ݙ{v")ጛT0}Ft=G#.8hj1~#JS0+=#nf֎2]2BZų}"ݱ%RTn)^iJjQ,RSM΃4FJWKݢ@`[sͻ+FwGۢHjS={yP/2t"(tO%"#5+θM2ZeH).eE=2*^{d6d];dKh.umJ:ZY+-tNz|1.3|n=9_4
%ŗhjicYcmAZdby%M5 i"Dk[͔|޽ʁ_ޑkyEujLUeEcMG[dZӠbl"k_S(=q4BpaA9a{*puc֧uvԩC*pCaޣb34[ЍT0*QN*dqUh6#* ~xL^;L9"ʰYېSq3l-ȫĘ;h<)	3
cx?f Ç>G>1|cW d×

R8
(gWG2<(` +3

*</֠c<X[v$84;/ZoC0zA,If5巽ڔ'hCSBOZA_hV4:yiNIQ1TK!i@4*xK$'W9AFjhO,iZ{%U<@L'$j~{5w@~[ܔ 1vr88j@},sLóP880?3$fFi<@}yOb-34.bR10q!&O{W'l/~=% ,fI*պN
L"(EcZVZVKB9Pz-2[' 2I"S$aO)\.)@?
<)tе^ʋPD?Fي*`AU[oyrxgPJsW%)U!^dϜ3Yř_\^nUC0q_ʿPjD|-˾I[W}R,~51qz#</'ϫ3qy#S<Scy䅫K)6g=oU"Om$ qp`ssq&\3o)TQc9?wTx<wOPKB  E  PK  C:U            &   org/bouncycastle/math/ec/ECCurve.classX	\Ǖ>i>`ǎA-c|NkJDu8!Hknu㐴Nl)stvս۽{c|. w[{̧̛
 Ed.Cu2dh-G6e&C23I[xy*381iP<GbdnGbt:rk8$KG`,ǜHJ'Nid3m#F-GpELVG=@rәTPgv|7'r_$Ifx'{}#juqؿw`dxA޷0P;Nz} ;\}uPp_onuExV6QnfP18ÀF|P<$S/gLsjv<g!;'Hh3&SS<C附Lj%Eb$0+9VPUV'" +\qv>>(q'&;㸚P0jTFhx Mw2ؼ" ̓(d`BŇ3l(>3(0[hJ=r@Ke^H*i^=P|"Jh|"2N`YAC(ួA0ІG3Q7]ٯM0Ef-A
1}.>]OXCe5$e(t<1aiޝFq	rHħ"XJqv2fSZ/yzRCs^\.hԛ;YSD͹^HXꮫ@BI9/Q6G#kitk(ˁHzz\K'|)-LE0t{D <м('@eCx]hSG(u)H1=Mj95;[W1"Hr$akhGVa3pT#;|Ѩ6&&Ӥx,͐7xn"P5R{⮾t$^4>{CSz"!NSh>tfJLc=AL5u
:*{O{
7:ODRSpFnZ
|'UAT3Cx*RLyu*J^4`벐CG
Sٵ,^o0RP,ۢDw/;::X8}`*⊵q	^s>1(}Ƶ`C
z:E)dvn_!mUZ2NEHӲ% JP%*Yf20"DLD$"f""Ý8lpIS"(i1qi8<1#>!9|0TU*Q[6-+aam#ExfecMZ\w3yuhqiFZzMR1z>kgUWi
Mu/7ҡͮ]-

¶VGle|}!OSEsE1ц,o]xQ#ve(V<"<r>e׹^JP*)ږR9@_.Rx.6"ja#6;F_۲tl,B|eC1)e_f*BtȦyXr
YPh%c0ʨd8{JZYrn+@eiZeLl=TFԕ*reι¾ʯZey#ߗVu@C\_)p?(+"xIe%nW`^V`|EP!"'l5
@Fa-)+$
~4*n(
W	AF7_Q`q"'<DD_W~Uk
$+(*pw7+0@H
|ES_*VSDWVx"D䟉%oVh0f7$_Dn<g\ ?"oA3$l
;l0"ED8H5"DYGD%@Id#M6xYlpϳ
%6&$"b'hˬWhf5Y	/
aW3WI%˒-
T0:_,%`2I?V0]*mDOo=;-}§Q@IQ QX ʛ
Eyss(7g@PJ58&&8`]`aX(~j_L&@XY;JvnK.aab.:ܦl]eD\nU,F0Jf17
q8zg7az#X!wŀ}M_AW3V(q]Nip{2쁑=U@rNcB*	93,4xq=ύfeذJ>xCpLSp(ъ7B_g~.
Ww^+k]5OQg̈́GmgKs .f0
Ush@
W砲ǌ\5ڟ3NvWϫ"j.XHoyn:pAV$=+ifϢ8|'?ؒrKX0e̅}Y0n'%@4BT3~݋<Yl̂JW%cO=vV@Wj 
Ta;l4PwN+\C`~k_煢[F 'ڏ1Aqs	ٝa>1Dcv Y {>$U$aq-c`lO!PpٰoДa8׮/0 1"׌bY^XL-;ӳ!uXj -&T;xTVSU-~3Oln
?elBt':yp"Vm82Q1[s.j
C/?9<7}曠`3 ߅WN7<WLdS؝9\(ޚUTd-Y9ƇQ	F§*kZ9+Yx^CuǍڍbQAX?-0Cl11mY5;
ywڐ3!}'|x$e58$}ft챸fՒa$)YIH
sT~UhaApՂ1{CsFu0
6S<rg]UmA֥iQo[c2Vk[EH./ RT0|*<=f/ggyo䐦S/=fS7%c?1eUΰ#tXI8j6z!=mp
H
wWVG%f!9CBE9갣:0n\~ɻ~dAΦ9n,e-==mp05JF2l3*z湀@q4*+ҝ>VQc% 0 yMênx
j

M5iLMxX]=f/ZI<-__Xk7bǏccƋmЍM;݅a77:@J+3Ј}}z__oDwaI<O+gk3P
f؞F,`Z8+tr%nsg._gcOA5xaE\l<pl9KcņZ	qt*5g%ABv@ש/ɚ`@ۅѝg`P2t6PgxxݯoI]BE!k/|a"`PK3/  %  PK  C:U            9   org/bouncycastle/math/ec/ECFieldElement$AbstractF2m.classOAǿζWҖA)P-ȁM	DiYVN\G.F{ՋlR}3yyoa(ɒw}&tYmiWm]OJi8mXZda[>uH{k7M9'[2Yv\U
w6`ܱ	RS7U͗LW1i|yŠUQYL7<LN5_떶&טZ~ugY5y[l7ˮl[+G9U3/R Ȏ6wg?FA@&7=G(TfrMEi;tA A.HC@D"F"#èRƤ\2!%0a1N銭S,uyxlwMNGGA$Yfϑ}'RH/  -+tн~rOq,p]/y]P(({gg/#<pn|?c'/1
CP~ J@ a"/x7VOC9m!_ؑX{Sq	L8F.Fi8(*I]:}*z*wPS+z![
mjgͅB"8'aa4PKPH)  |  PK  C:U            8   org/bouncycastle/math/ec/ECFieldElement$AbstractFp.class;o>Ff
0F6̼;FtҼ⒜TĒd}WgԜלԼF#"U8&%&3030010r1232p!$XSRx<RsSY؀JA$'f10jmgU
$4H'' PKI<      PK  C:U            1   org/bouncycastle/math/ec/ECFieldElement$F2m.classV[WW&$aPAhU -ZVhS	VmC20	~'ڵ/<kj\vLQl|e콿sf- q5 =qO	)ԒQzlڣ1tO !G}yBfOx4PgxL?gkپ3k	Fu{@3ryDj9Ss:lZ4峃V1/0@COmn RP9MjBSdqSi2rBtf(qr-PB6,u4H>Dh4LQZV2uh
l1CV{CYrMm-BdTk]=֥eNym2Ff[ejv2^*ݺ,{`zMSDE*z˱Q
8DdJ6:Kj(M.Q+Iq8GgdkݧۥsTBKL:ы~z_
2:etxBݥOx7m}:vU#uxi9z,NKö9)N؉hA[yehBmhskryFka:l>*DtmԜ|(\B
P`fP4ç`C~ *heaFF
pP<`7W<VŠqXVA)h+qTA;s`Fq,$3`xd8F^00P`d0i0p!ÐetyF?TQ*K
X'e}\c2LUҨHjf<NyTMR"¨onb/+X?Kos[::zzHcZ
ͱkG1%B܀(c*tc	ݡe$dʟ2UOKVS%oM1xsΉK;to[u9g9;n2"2V#4\c鶺8JwH&:h¿@$g:qz.Vᐻfڃ]beZ)_e^wӡ}K5>?ceD'`,X#^fI!»=ۑ:܎#E_#RDE'	\G}$XRHVf	їnjo&~~@ZCJ(u$L:Xk^	p//vmqzoٶZŨ?Py'F܅/{Iv	$r	mX4t,zGZH)rzJKU`UJm{[)heGK<ΐn|]?u{y^RUp\h\C[`:qZxe15S?_-Kwz2!p+Ts5cGY(-opܽx:\/$!ە4̢Ԭ#4uWWR&9'9ť&A]rě܈KGu@~yS;1|-wPKWC1  ]  PK  C:U            0   org/bouncycastle/math/ec/ECFieldElement$Fp.classWwg&;3;46`܂IJM"dwlf,7Պ*jI[(i,9VG>̻\4{v幼_?{ +A@9uluG]ƿò-g'5Ǒ G>l|H0DfĸmriQF:OgdȉQ3qt֡~flȚOZg$2y#zt2f~qɜ5sNP3G8FތʲϘ`\Vnj
'3FgڰSfy/Lm3{%q41czmLْc;;C;uHu|Co,CBM!`g_&?FF2Ҡ1h>a/\Ù>3jߟq'5>ΔQg3ȏJӇ~La0viOfl3TH&o'ΣNc&:{9ǰtf'm6*Z%fZ!b޴BB^40ܨuZ&>+5JY);sn
sXYOשZo*RuWq2ŝ#'Dx\v6[m"|rN{cKZvj1;ľtiSi,6Z:t[WZb%:VAطh]YA9{H10^)Jw 
pDZY0AAh%XO'W@A6+`/
4CG*`@/*yT`
)[B{aXOt V	)|% 0F0I`\^8-AHX'	Nd	AY^"e8i#8'Cq#	J5	NM	E|OpO;Jmٽi#3"wĩ1>`
P:'0@0k{qZs
puǆSaW ף	_9L",7#:=S5Iۚ~.ipY݅+opT{-$/hYFn~Fgd_#W">{&FP?8e_*)XÌ"vĂYn.I`9f+| 7#gIJ}:SELh8,2[aH窥TH}3#(%5,	!BQU WE2(L>1s5TUNVls^TiӰJ"u*i5"lsFSQi.2:R;)Fw#B)<buTX-
uQ7="ֺCsΒDV{xPrdl'p͒ ?{;X3?M89]E-Uᷳ%/_4ch:KATb0B'JsWJ0a^h۝P%
 z:oI8_j&Wc9TXͰt3Lg`ʍ?55@[V+b'#Mʾ.̵wEM)wBjuޑkJg&_Z^|ُ!' ;`b@x}i(¹娥/r6n,ok
Gb~U	i๪MX6a
wcnn}
cE=, @ 7|YEa)ÁPs[K=JigHyD W"-5ފlV5	H\A2|JċlZZqA}f?-Je.rſĊA^r
E|)E##8C,+庛=ttf,*:(;-waXsu֝dYGcMB{^ZS+Hn)K63Iw{3-ciA)rM(>֙O!bmU\ c|ϵMv$&ow}|u#-xJ߈]6z7Fe,UPrYw
k+c0
cyD_E;ȍ0?Czo[>u5z.V$,R\R -ދ
0Ylӵ 3_ oF3ģ&³{aLY(݇X1l%zl9^.=C3D! PKI~n    PK  C:U            -   org/bouncycastle/math/ec/ECFieldElement.classUMsE}kvO$8q,)L,a	p`%Mm&fݑ)SōBq ErwrK=c˥|youLO?|c!]hqۂ]WRTQu.\Ŧzfa܋5J{-Gg!Ur	_'iI>+6piYи5ف&I.vY$-XIxEo+N	mjz~gf+|'LtU.ZF6ZqkXsakaK^,ŕr9-!GZ	X	|Or-WꋯEIг$jTѢvP]c2~"Xg{c--n2n,8Ųit:mʰe)#.|&v0ugupمqfa0tWVl%5ɱ
SJ߿|+۷Uc1?pa(UĀ,]wq.R )Fi\
J
i|`UM*_H|r]"ʁǌ>Mտz;[^-`,*[G-]$LL֜Uf>ex)~)UkSl jZ0C6hF1Q\ԡR?ñN<֪{*0]
d|%k\Fkz^#um(VAw
MpN.A<L/xl?ڛȮЙT֩\5tfv's1lEݮLTQmTSt$SFVL[ݍPьf#|
wj	ϓmj/!xءL<ԿPKV7    PK  C:U            ,   org/bouncycastle/math/ec/ECLookupTable.class};@EdMhXhL&|.(#`m-y/ KL	^'k/0pmVi^!,l̶+:]!u:hΌ<JOeV8@?'@@GqOPK3      PK  C:U            +   org/bouncycastle/math/ec/ECMultiplier.class;o>vFĲDļt}FҜ̂JFtҼ⒜TĒd}Wg_"vFvfF
<3J}E2=JRS5	kdcd`e`a FF&6 PK@      PK  C:U            (   org/bouncycastle/math/ec/ECPoint$1.class]OQCK˂+V)maA4&
&$VH4$rw=ЅenI^?-&&FLM8-FssϏ,@,?qC;Ғ!5MO-i5&3i;SהwJ.Զܓ#-sP [fk־%Q릲g$Hȟ+ZUmT#P:WiĢ%+'lf|FީV:k%n9I'gՕA-Wz54a/rlQ`*]PveO#n#+CH1Kҡ1zCaFƑe\gL&1I(&api ǸɸŘbWӼZVEupu_v!]lUG!K7
Rbi36u7	R=,Kupx`a9Ls:귤Q)~qdwJz?x};1tH&
0-$ݨ@f0AFڊ*T/ѓeb4b1DYPKxQ`  =  PK  C:U            2   org/bouncycastle/math/ec/ECPoint$AbstractF2m.classVwULwfgw2iKTRj>ZȆMh IPd;	S6af6}  Vxsgh[;3yԸݜc5'sw~ 	< !#pTB!۱GOu	'zDXL/YtUhwVU&-o+f(acL:i>^_Ri(vֳ䑪	q۱[\I	))|y,eWVs!g=ߚ`jh\:pkbKjsΒC77je	w2֒LJքYIUי5eGeSV²MD0;Ƿ&,)1Y)TlK[.V^!>O:ew,hFeM'7vbBގ1w)),	ɹZ~-e`Y-qg7n[pj1ƥȩ{d
S5~`$:	Yv4mEde=ZۂŪ&CZ4߫	[|B7	ŉdx[݅텅-AճᜧN;TTGUUqOا]z6bjY{c񫳊>軶35nsmosMőul7ؗinYKiY,me-ӕ71d;Cu'Kbhtהp%tMAAmz>RPHnIJ	yɹxsKxP<:t3h)|Zǃ9:`mnGLpCAgtqֱhD6341lgcq:vc@	!AYXѣ:1I<awaIM>$[CxZC;Je/1|UQaeN3a8EhDACE	I_`FV1abxcfxy#z/G8/gїb#}3̱%M7
.nT:].	
۩850E\xZxn#Ox7ٗ~Ws2ˇ&es>oF*ޘA%DsICiM,6sb6IC3#`F˼nCVHS[F"˄X۹C\eUѰ8M
!99x0r(IVBrb'94m#[E;	I_>"|Ec*pߠ^Ek`qZ1~E*
mIg*.J+ɽoT:;3EEz?*~TF_L,
fAkU|?'K|Jlx)YyPẍr/DrSxg9@vy2w;`qTInK<G|Jjs;8ׯ0hi<B|iNbȜ4Zτs'P4_k+n0DᛢeQ9P0*#1#1(Ĥ%練.?M̒Gb)(Tܥ'kx_ccKΊSO%Oğ.@LBkȾ0Ϸh*%Sy&iy?.QWW:^/??&x_(;y4:CZ4M4Ά	%{Wpl! },YܟD1rC/u
9j<n)"'BC6{s8/fsNac!-&T2|go
J^:u^+.I
iGPKh9    PK  C:U            1   org/bouncycastle/math/ec/ECPoint$AbstractFp.classTwEnɲ*$m"$ИB&nܙ տB/>q8Ǔ}"1}2ofro|%|\-mU/5ݥ0ja7h6\}YlˢlEOͪ/2eҺͦ@эK_w]_	-o尳rQǂJDR)/6<I<V1\-wmS`Sܥ<=[ݠUl&MACv4
Z'Z H(3dŕfG,pcQfnԕ܆^L+W{jǓ*ΥJE.Qr)խt#Z*mv:ae38jF
*CV8feS&6qB찣'Cg wr<⎔k|]G^*6PøgǕ%Fvd̾8Զ?H}3Ԩ_}TGpr6L\q
6`8	x	62ƐBֆ46,#+ļI$
L~y6Ew,dpo,JW-{>`ẅpab%2]Q	kA *%ղp4ΐpIP-7T~n1Ǌ4)-f8696\*]za>CEcEu`q>^OJ|+Y|s*\<w$9~t=, qd:Iar<VJpR7ZC1t!LOٚ{q=R\sj]<e/p_&=WD{Ag1F_`oDQZwzс!Eۼ#yW?7PK&c    PK  C:U            *   org/bouncycastle/math/ec/ECPoint$F2m.classWS[?tIHM$vH⸶1i
q_'.MӦiG|(3?N4t_:۽wSݳgϞ=9{~O_.5mixJ#l>nqcW(u&󙋙titڹ=nNa9Fgǜy2sLN:sSF#ٱ޼cE19Q=^ټ}P((ƯD.Љl$c^,96Rܼ!%r7?
]T/ϗre=]elIț->ȥc=
:O=XɜrxntX8,+>_(sRUUȗt)iֳ`Iǲp)3jPM/-"QUV
:v9u=l&o0j</MNL=-S	m%76j.f1YZj5MDq9<U4I;3S#xKr:l~e6XKU)奒,Pf;?R'Z6(b{UW̻a6U[汘e/C1MI;I_"ä ՘$ f5	VW :}ͤ82OM@   [ I@
DGL QI>:jR$GXǤv:Z0)zOS'}h7}'@{8%) # co^i@`P𺃀 ҀQ YƷ W |*r .UEH*Zav+.l!ә3%V#~ǭu~ڒ;ۤ~lM#A#
Cw]<̡;uimK~~u~=/Y5xej8r͟a<O
?Xf?9M3`_R @o O|;w'<³@Wf:Z,]0/uQ.mѠ}Ei/^^us/%µQ?m+҂z}[)]c­
QPǋޥ'i`Vk{_`jmycn3~^AғY,mXr5J/KX22u-

ƅ_}<sy^ȱkV@h
0
:EoD DP%Cjc,qϏ5	rg`<
X=?H&@h<)&LbuLav7o3<2eED+b()
"i+&b܌m^
]qq&fGFSY3^DTηIB4}CBޡ]֠T5ZWn}x`(L0uY-Nxx\uJ]6Xvaa#׈|)7ş9׻Vi5"tMhB4JDaLW&2bE4
n@-!ǽk
?Њe

<q̝ZuNs y,;Vf6ٳҺ1WhpvE;t/3_foנNWS	hkl`-y?%jS5x+Ti$K\<דZt̳ Eo
םvHΨy>Lܐzߥ3,u9:e6(Gn)QOVVUM}ImPRTPe#WU|
EX)YO0*#)}U{o#J%wJr$)
Y{₠\6i*%snl Sz9b2cEf"ވ<UqF9 !__ ߔ"|*()HI		BHP		7[zKi̐
	|.Su LUP8ҏR9",Twu]#BMQ8ٿW^ZuKRΐ.r.cO.:w)\eA7rnH|C5>!7x|757AUeGy]O(q3u_Lc}kʕp'vS Νd@ܹJ<Q*U/ spLI'OunVJuJt\ë8NXD]0$Tq=1
hUUbE@pVA?ܘZ5Tܿ"tDGɳj\?.rfW?Ed"<V~3pj?
'Or:WX=,^Ɉ+&c>}O:~uRLX~~oQ/PK5h:	    PK  C:U            )   org/bouncycastle/math/ec/ECPoint$Fp.classXs[k_^]=,KOL8z4
cSA-E,=/hNZ"
ĵ))0Lgs?Ag{lűCZw9{=?[#46
ݍLPtw4St5ht;r\4@]=$/F7l\ɻ2ޜɻcn
d50r~0Zٯl&3L8vs#9w!oحdi;FmچաTf+L-kqs+("'}X-iAs};"Cu+5H>],9ӊ
rGjV^,W}
	MdSysn	O`=KoRQgf63}<)4Z%κ*bAk.n
CY7,v^|c|%w Ow
ղJv
B)T3+In\eP؞bD>T2Q]Re<4O:sW%Y͍Q\S<ERlr(E/J=*.\9_W-Kw#;setL@;tYSe\kz3Ӏ.60 i@ʀ4@RA2<տ8~\rm,ڴܶeuvG%W[{r/mĪu}C]Kr۵jYweYWeC+.$jVTɧWo+b_W_F1E*zNdڰ`݆5Dc5D:@
^iͰˆa
mǆ(oCHH;uD6U5
7ȗZA,xȆ 0
D6ȭD,x4}4zĆ&I1"豏 c]`;aݒ<aAd9bA/!2Jq"O))yȷ|w]"Xp/T<Ky&))9@ CD6|<CY"yƾC.Rk
n;)}`}bg6p-Ny?hMCEA D2S﫚VVq uI}jRF (u(wY3~ޝ)(h?@[>	aޚgSYxsLmhT$fo8xS
S)^)$oL_NLÏOOr~x1ֽkLsٯkM
}N8>a
Lᛁq	V˯{ñ5<Oxi_XB~\&_d-zy[-VmQ7C,IM:a ^z!)Kaao-<5>#4mi4t8Ӏי:i7HLNq"$FhpBEdN:m"3!ͲFA`rE<[<f1hT_yUDD+`.:3®[i@M"jxQiz;i(FHIԄEhz踻ǉdnmnmvC\ĥ1q[hl'_sZh8`-N1br_]#$7cB1 mNp1		d`T:aj``P'T^g9!Y>i}R-4}π>vУ;9\/gp {iI!V9#Q˚&}Aay`7-AUzUuj}ť/f-sU/ y,2{Ynׄ Z4]u3Iq\jBE$.7L0xghx7q<HǱAPΠ1bLxK6`;ՋsP~d	2>M##U3%G@gJP8e~tcLЄiD
L
A}lfMi	i/AViqISy	g7ie1;;?_/aȵph	"UiǮAI:sd?
z;A#xrUzI83&jiGvܑؓlZr`BdZd!i2<Rd@b)ʅV9@ؑUг]fh=ᙝ`&M7
ɹ]uY&.y64bEZoѴw^7dZԬ.m
%4V=M
*0/fG5j>-ЧS[bc1MXq_s[IsUy
ӦМd)*$[n>NNW]{Bsr=05cHx]he$qMjdaw	 ǹѽLyQ\zGIDC_<ZCT-w#S;p=9FdpC5ɹ,'^2l	l}"FO ^QAj:u'.~xͺ;W_*;]D^i릿3ں!phOڱx[G
7r(s)N%pX?	ixa~5H=1om(?}@
zw04G:Xユq  [}1_IxQgvcr};1Mq4;3\$mT
=\&ީ<P`	2,FB}/JJPO]l `~幌|Zmiڢc~+K$aĔW>IC^4ӼلsJUm1dSgbX5g-hiu<tŇjQu~Fp2Pư.e
;n.h[qay7iv|Jqbh44+¿Lxyu|C\E$b0H
_0/5n;zڹ;DLRFCǂ&S!6jf>̋
9(Rrw<[4=MMin"h2_w:.ͣ9qo&a_R
CF[b.0!| sp5^_T!ۿ$T)%4T%s21Xq3R4Bl(m[u
ww"g7"@3t'D_duJ0z7E!]GkH8炆<JgUF;O:&?PK=A
  G  PK  C:U            &   org/bouncycastle/math/ec/ECPoint.classX\[r
4M郐bVG[-EP(JWt%\hlHbh9u𱹁׶iiZunsn9r{b)lw;># *VaԎ
;;Z'FODA5,޺v7+ y.^/`f^	EpLRRC[~O<᤮?	bpTMiIٽ1xYo8$Pj{WᆮV%}w
}hhGHM"ZÐҠZ[Z5
ijIj<EP	uG(!PlD)j!CC[b!J#PB#.TuFGOHhf54@u_]9FțDlh}x=EnPK5B\onas{fO!P*FP<%X41%ݙH4{
2թR%4'uFC~a5ҫ&s8
#aWڐBUS!hf=b폑9Lz0k֝:plQmj8¶ک%!)#MF+H-(mN5%Er8جu	Ij@Q
Hsbpy׺=SUhr$J&%6]ɮT"\?<0qΑdޥ?l!cE~)G4)7Gȩ>'tsN'i.0؅;XC^hpHK^
JV,sP#D8esiX4R)}xajo[.-jRd"KW
N*a矹x< 
i]钓YL	-D	*={A
^y Q̵Q8ƼafceB?aܓЈZ4uf9\)9֒>R5NOqvLE$͔uJN`f y%"{rO(Yڒд!).cIxImDw;2Lhl[t#G\1O2Ze8Gƹ2el-葱Qƛdlq22ze\LeWas))8_JBuU+g
(u7{EL7rͪ(P"dC}BKy{r)˟_q	iV^ߖu0G^C~&N.᪝=˽y#e$A4kDkNϳ9|pr6ژWkgcg:_'2f̙(6Hd.y_߭љ]#=ne֢F"}jhk>#LQ~VPP;.q2T)~&8,`Pd8aCC=QV7(*p*ޯY&Kq1bXp> p
ŸUACFtbL+X(w(X;x=
\5C
.gX=
1`Pp)>[pp^O1|3N$)a<!'F6dC'|މk'2|s-0'd
3wb'a8(Wu910<e
o2|;eO~_1wNV<M_ə{H2?@iFDKDM&!_DC[;UK59Dk8 !VPk[Q@Cqt>[@_.\>&|iat߫]@m1NΠ%3a3+A>+uX(8dLޏ?=:kE|a9;%s|tT|@X_x
cqSO|؇?/yKڇ>*
@³iKQXzS>IQ8$ެ#
#ݲ~)"[M>IE)QjJXy	FrdrrƆ:
cNbEfsbA̥ϝ1a	E3"eEr|.3j3ÔF3U۠ICwC"ݍYYNn1A1=51LV7Q, cbe>J99؇r8as2_",ǟ?kI[oƥ&q߉JjUaYcZN%tbfw-'aȧ`yy$`I~}7e_8OҴ(IsK'Xq+6Gad
lZ-^>}9y}~2v3@Xsn!%`+53\j*Z?r~@Xg1/02cN;07RclFsV\Ba׌,90ΧQ[an'#vL:AzKbU!,#qnZ(kH-saXcQoAZ8&wWFA&.'LM'5-8^SZ̙VYP,Vd*<Y320Le(^b_X-&t.c}$u+g+lcWȣXVaB*1TXPȄY>&G4
(lFAGc]s>F}E/K=M΀˙iilRc'y؝ˣjnWӀR(d\M`;:*	!v}l;.9FOdstK}'+-j&ס4){]j39w4^-f%zݛJJ\KBpkrbΗn%/jPzƛk8OWleJ0#kě/?.2ܶ֓=pg]ȃcOK46I"XGQ'cDBo;A1Lk$qFn2WzI`?EQu7I.B$FT7m$݅.i"EM]OŬ1:u!W6X?*$1Np?SL/Io<3Tn6{>db|Qy8FBaqsv',G+ʈRc'1ǯte}8{O#p9&X's~,y/S!N6s(TɁkbۯPKh  
  PK  C:U            )   org/bouncycastle/math/ec/ECPointMap.class;o>vFĲDļt}FFtҼ⒜TĒd}W̼vFvfF7
B5	+acd`e`a FF&6 PK:n      PK  C:U            7   org/bouncycastle/math/ec/FixedPointCombMultiplier.classT[oE==z}I Y\czavn'5Jzw,ZqĿ
U+J{@j b	K{>}3;͜oߞOHj ~<q`Z] DmApmq	@N4ݐwYav{NؾuM	mb$pEF.2(ܼkmjsQr޷ 2nԂj[ɬ{vӗIpr1sUoRyׅ-;Ʀ-6Juf^n]OxbKͰ8ێ>stSZ?9sPf?<oqiFeYG̎P|3#ai͖ꝈQ<{]Eb$x
7)oQ"`5
AV,OR!.Rr̫
]rdCHBwЁ3"eA/4@1f @ø9IHaEi
X2Qp%qkംq^$,&.x8)|:fpIAYOhЕ/U{T.%ޑلDT4m2!r>׊ŴGH?'|z9Q+UȢLckeԷ>n,膥3}q52ƭ4KO7neҮeq!b&۱r,rѶJ,!̯XC9O}|XN&Tvq+?˓4$^FP%{4V(f(sy!_ PK1V    PK  C:U            4   org/bouncycastle/math/ec/FixedPointPreCompInfo.classKO@*`E jb74n&$$0.0`:Ʌ& N-	g:|gnp?_(ȗNMtubMwj3DhѰYwn-ۆ/-^B{	:^}T3l꼦_~%L˹tKVC0bؤhTE|΋c'YVwr2is.MnvpBEEAQX |,#%˶,;Q$K(Ia~Aw( qW)T>PݧVwd56@F`{uϝ ׎ak')G)c+؜g!vI|kS'hx PKb}  I  PK  C:U            /   org/bouncycastle/math/ec/FixedPointUtil$1.classU]SU~ٰ9|lK
	4mQRjf%$WvƋvmǎz?;{6n3Μ}}y?v_`֗wXVL׊7}0㖗ywd}iϱkdf-15kŶV'XZf3V6=;c2g.3^7Fm/sů譕ގeRLM3阥\myL7\q3M" 9o:åWB[vG͗m
n=[Zr.6p+R$
"0^o1'oZTmf'*)斖H2($ފXn佲)z52~boNUeeh.C)2d}A}f5m z*`HD$=P}qlQ_5U
H Y;\#w5T#9j$1
=>
E^88&!
9@CsKHrȸ̡
G34FT -;=
pC>\C!&5D5Q!	1Dpݑqi,Y[+`V\xTǬT
9Df;p(΂M"\f')~F3hBxCp3SQdWk@V@-4&~AtZgDw J{3i$V:ûГ^]Z
䤛uIZ	}!fNJ+KmȺ"THU)lORINVNjU|b(!as!׸N.jjTtu+#is=
EbBЪ͉;<Rw]̍ZӅeW񩡊CirKU?iH^EuBFt_ld{ǰX@_ߣ7f
#Js::*>me8ݿ[W#Wj׺k^.rH=ߜxwD?pV+PKKx     PK  C:U            -   org/bouncycastle/math/ec/FixedPointUtil.classTOP.c"0(S&`ڠY2ݥKtwDx_0蓉15J"Mzν|;=?~}&n'10/#0|]qA=Y5kV,{s}CrEfq0]I9k{4h^DRSRoj!Cz3K;m*6-buʾDSo͖xҪ+uvEB	O1D/1͐T-Qc
N)H+WQp!Sۙ]YCy
!'y"튼d=b\wȱByփ(?9Qaze/{I:*D
4	jp^C
tV.8+*&1b
9iUL#b45%L_l^[~e᙭oQ.Hۚ\7-cg`b/l|"zޠqO
I\˔2@~J?b
%^C)-˟O.?CT+H?Ԥ{
LQGⴜ\&r+E=>cyD.DTFEYQ
PKV  -  PK  C:U            ,   org/bouncycastle/math/ec/GLVMultiplier.classUrE=+g&q.+d΂	7d!옲	eEF^OUΥ|gSxe'3sՓ?2>ƐtqFl2]TW_wzѶߒ
[Aލ^'F-8u[m$F+CqpBvŚ=N1Y]{]îP>Jc]ZF&ڼ[ܔZ
eyܗQw=֗+|T,k7<OܫFnϧ(&ZS\}">]~20<%;հ+̅koDF8vu"zm%5t"^znQ}W~ n {/&B6o엕4[%A@?O,8'N1f8ÐcxUaJɠRbﱯHg3I@GG2]<KŃ%淓#Hy}36ZIh@
߶?$y?itn80[PA(ڛ0e0k,㒅xKc(6o8L;&&h"PLL}mL\@4"Zآ(-WX )LhMh&{V
J;1go7vQ{T*E4{K*H=)FBxcGZ
o+Dym8ws?4VtivnXIe\&3_X6k\P.{Wċ{hVbz;IDS,.0L'PKt*    PK  C:U            (   org/bouncycastle/math/ec/LongArray.class|{|=s&	̞I0(*K4(DPAXI,B`cK[kZxjԪ+T-Zk[WUֶ֪J|Ysv@K~?>gZ{^k|ӻ8OOq8 @80a-E֢Z[~k\;Es\;Es|;G|;Gѯsq  Fh#"EhMMMMs={	%p(+\sE?\sE?U"/B"/Fb/Fb0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)
0)!~#|Da>"GDK0#|DaOÞ=
{4iӰaOÞ=
{4iӰ'
 @6B-B[mmmml$$$!!		IHHBB$$$!'C7!yO!x9jM4)#3͜$,&l8jФI$tФ&򿙑ka
I;pB9+%١t(+g^K2'3哶_2Afl˭2{">w8ʋg/ENa9/1c1x'2gLq|Kc	i}vҶNF6ū#OЄ#q1̉ gN^dn	-bO1}NE6.Y2{zxuc|4ua;97ĎM;9Dn;6hIRrzmo+oo6/n_nJfEW	;&/=l͟`_">hk[J,:'v,²m?e|qhshӱh	N0Z;o9O_fg3?K
/h_}|o?qa;6r ʶ%#{$_G͍{7dw0gFgSg/V{kO߾ϗ8Ke>Ki_LN}έ?}x,h;{A㒹Nn_1a/ѾC^{ >0e6bmozI<?i:U|iى'/lK;y4I7͟;2=Y
N>c<{9p>Emھd)|LYcv8k\+ߡaxN!>?mٜHN%pΛ{a:'tТK;fhwELNtZ1A|6%vف(ąfo>;?}2}fRʮ(͚$lIsxqXdX:e'se',-f@}ixocюg/Ya3Vtv,>@YЉ5c':HP(,PHE("X`%V"X
H$"P$BC(rE!9"PBC(rE!9"PBC(rE!9"PBC(rE!9"P丨o\7
m
m
m
mkжmkжmhD['8.F_E"_W+BPE"_W+BPE"_W+BPE"<Da~#op7Fa~#o07Fa~#o07Fa~#o07Fa~#̯F4?iO#~ӈF4?iO#~ӈF4?iO#~ӈF4?iO#~ӈF4?iO#~ӈF4?iO#~ӈF4?iO#~ӈF4?iO#~ӈ_+ ~ }Q>
G(@ }Q>
G[Q>
G(@ }Q>
G(@M_ׄ5a|M_ׄ5a|M_ׄ5a|M_ׄ5a|M_ׄ5a|M_ׄ5a|M_ׄ5a|M_ׄ18kŃ@)kkcZ;NmNdO)>ڱx";Ȏ'x";Ȏ ك5A)>ۧPSkZ;NSkZ;Nq`
Th@6P
Th@6P
Th@6P
Th@@)9 {>ۧ`lkکvjZkکvj;Ȏ'x";Ȏ'x";Ȏ'x";Ȏ'xl|l(?揲l(?揲l(?揲l(?揲l(?揲l(?揲l(?揲l(?*'; {>ۧ`lkکvjZkکvj;Ȏ'x";Ȏ'x";Ȏ'x";Ȏ'xl|B'	m|B'	m|B'	m|B'	m|B'	m|B'	m|B'	m|B'c׮?]\vqǵk׮?]\vqǵk׮?]\vqǵk׮?]\vqǵk׮?]\vqǵk׮?]\vqǵk׮?]\vqǵk׮?]\vq-?ןك5)>ۧ`X;NSkZ;NSkDv<OdDv<OdDv<OdDv<Odc6>Oh6>Oh6>Oh6>Oh6>Oh6>Oh6>Oh6>eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6eGQ6clC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![?dlC![g䜗r9w99(QIJsT|s+GsT9څx9;?0OJܜV|3=AMn5Op|ֶn|:E烿XW;k/z:mw$Ƈl)mObc;8/gs/8˓fpq~w~wܚw@O;isGy߹3|)|
fpm y0pyOO'Ζ<ep9ڹ]~wuy4y;板8Cy<
pӮߜ_i<
u~w^uGQ87[l>t;[ :O id0;OÂw0?_`Ay;891XX|$,XX
 ,ZLn.
VG7- _/
mFpGW Jr
j53 kg:g&[<. |p! .\
p9
  ? \
p-pz
6r)~~<#i@|y-
SWLw(hJw~Ho|9υ_|ǮM`2{|g}|ݦྺ{~|KV"a*Jאyg
?s>]3d˕NrҺ=^A`+cC備p_=Ns7azȃN;_\Lko}/;=e^I3MMeנz#;%^jP5QnV.hR_F!ũՐ+4UinoZ
ڵ"¡iHtn(ӲvRWK4+4id#^CYZݷ_̽|}^/_ȮDW}3)vz;qJO\0frmmN)mus~Vjl}rn/<Qs0L՗^p{7Clp!%YKCW3Qۜ<b1<hx1'|la!IQn7ӑbYEM2j(cth'uWz'[umC;6'!ʽ^=#:!Z78{lݪ(X^9xjv97)|2*7+
Vno ܀\)+89U`޸.'jUG(,^=G!j#UK-W_U;gnsbƋ6%a
Y++oRǴUR4Eu'1{AW
ܶU('k\C.]47oպBM;j*Uw-93Q6=:ò.IKRS2LK{ȖNw6|v3R\R?%NيRvۖ<ѻVUn
~'rcVr9ǩ/40TrwJw%Z:E8ZN5RO)P֠JFq fyeJsGa͊
f^ԪQ~goM=C*sO</3[=cEG<VrQ,L=v	(Z\Q+*r4
VI䞯}I89z0gaIb4H6w⻃ܗ6o
^ب0-c62;ft{xaqS4/aQa`kWgndB!Tm޺3
i9xwT"e#8f[_;yZǝ
9V<#o;`O6<3!|߄p(ysyNB;ӊQvtS7MIE'saլw-5ճ]ե^T)omU)RT_c.vO}/ufYW8mǑCO9yH!
68|VA&	6swbn {x  v-*ڮ?hXhq',r,3jzƟۉ]{ׂ9vR<]?{AUG`:~]<98y 'SжJ$3},~'~!)F.TP.T.GYYdSzCq*.VjfW;5Tݕ+X3X 8U-ixIŵcjl顒ͼW=#,~7kEgӨb#PL	e~ݻx}=^ζlnpɐu!sXv!:ns{j-ţYP]4T2)*JQ&U6.(6WYmgLKmq,{JGӲr\5̫Tث,O{%
S(68*ion,kj[^A7R:]Ve97-77{ؒr#z7~
I\LjRVFOURnHJԩQGW17SpNvu_psѝG][3=k@\k!wO\(rgN>;Za
Q%٥ip~knޏ쉺Xʔ/>Ne(;W|(H{GǕ<G78Xn3C!fr%L4TTuZ&j)DD%Z,lA)O+Y
]t&<+Qڐ\Td|WwaSR s­xC9U[aכNLR!ʣWZ6SNɥyiꧽmvGiנ2PҲS
2R30='O|,`	?Ri33EUl4c
2>[(&DjTCOk7n>H>lG^58Ӵo}gըJmVWTK+V7Ԥ5;GU3|UǝUVD5i[yg_JU7Hbv'-
W=)k
<Ӷp6i/,]'sLvNYseⶕóii4tE>ocRw]w}NP;}/evDya^+EYdJWd'\ɳ|廝ȩ/MW2m
di
!ŇyY9üa[n^mPx]@Uφr[qCyY}QMbKo)-El*Tj{H1"wLT
Òzc,́$UUT*[<RȨ9_o)f_w^~xXx!ԋ2vwkM'F6c
5iIT9P'f6N[3bXuok(A2Wjw]^*ilr<eW;1I߳zons4'N
Qp+[d{H	]1ݧ8Q1&zs QT=&`+_ik7|o*Y0O.>܃ulwO硢3*^͓XƗW;ͬzԉr𜿼WJ6FWS+ͪOYaE5a~~({B3Ox=ݛ9dOs'=~J!
9CWh6{]v!SW8\g/xUṝcr{!sW;4s|"ϑycZ5x-aup]3y9xgTPWLb:9*˜2ުX[:x_i6pCj%Umm9Û}4tu?&ɿճmh
!2}$_08<SHɣ1ӾV#WdĩIT(Vva'ؾaga؅G1'.+2'.[s<J{K,#>AuUN՝
:EonwNƧ!Y[{2kiM1߃GnٮEm3]-rj񟺠#k$8 `YYYdW_;-*gKů}7k_9xQxVY=WqSchff5_tc cj27OVTg3Ț"->o?(:GNͷX|=stϞ =^_k[M7އ-n+>wg]=w8ŉ5KݫaT*;xϫA|`<W<V<
(m=[Tޮ=jǷ*nL<,NnFL[4j)trx*$3ý@~D1!E5}5Rgb*N[;p~nfū%WXh1aߕNd"KwEM=
}Ѫ.XAQ0>9:9=6oo
{J[ȩKG^:UUG.M]V0#GUCyeIZ>@SYmxiqSF
_WY,G#hS7iO{m
iЩl,N
1?YkEY
1S﫝4nTJtO{`4ˁY<TЫ{ZOP{ϴt6g/[KY49k!?
fMs(Ch{lREQa<Wf?kEg|zj68kQ:e
nX{ͬ鱣g;*K3?iEUYS q#=VvGoGj'dw. m3)WcSugpϏ:8g+
Ty_38̠
}ʹ-͐*3&瞒VϛѪԌV?75ghFkQ\2Q$jd,3EQ3cy4W;Έ <S]D&hbr/এ&	*5S?MpU	5Y&x	vZ ~eU㖢ݴZZZߞZ oVW
jôZ_VooH>ڇ}
ڇQڇkFk>>>>}+uM:t5,e2mhCLD-37Ie&k)Zfp-7U5k
xZZ(hUk;Fk55}Ik;Nk;^k
Nhm_6w67W
N
-Nj:St
Kt
Ku
:e2SNoNoN4Wu
+u
t
u
ig.83tkuAܩ,]]R:](oxtal]h[хwtAyQwu@7Fn׍"(/֍nFnFnWF/=^@W=^_ǋ.=^_ǋx/ǋx/oxQO	V=Aߦ' &=Ao =z 	^=AߧOu_7fn?A,CYR7unfk,1,zROSzZOiY=M?4&4&_4n-U"_-u"[E[[EQunng"_t.t7=]]OGzXO[tO=]o'zTOzw
::kI?
QToSymЩo'2uJKLQv(]&*.]\[w#\k}x߅/w[w}c\Wc\OǸJǸZǸFǸq.:u@2E|g=s{Abqp\X1Craq/qo8b+֌{18a}q߸!8*˸_\ɸ܏qt\x@\8&?gx`\XG06#}e70NG1xH?hƉ1c'2.*j1g<28=>q($0cɌ3)Ƈ3~)x\x|<qV|H9tƶxc{|ьsVy1㙌'2~98ƓƳų'0a\1.;sO1~%ϸ<>qEe_Of\/d\/b\/f<=>emBwE]׏PWW(Fiװ6pkC;
M
64>]!x7(#aĻCE'T(D\ICx(C\5{Aޢ%2©VN-|URJZphahZNY.ZX'Zhᛢo-|[ph;sE+Z@=.-\,ZX/ZDph2墅+DW-l-@phµ.uE7~(ZQphfh!!K	A1%43+!fvBP		A6snprNLҙ3/!g~BPI	A>_NYtrBP E	ACNI*Zd4!#!iYBPҩ	AJ_IZZĴ"!鴄 &=LZ:!HXS$t6
^933sg%tk	zBK7	]VBEo't1փ%s|^BOrw|ABWU ~B? _>k$4%t=n _W&t#noHf6I	
J6u	>;7$t'	mߘfM	|sBw	%oMhߞ};)΄oJg	= qB?ߕЃ$_$0ބ~/G?Mz?'"߀J)/zpBπгGz넞?-^?K'z~~*WO'{3	
~6%: ~!7MM	~)?_Nm>w&~=H/7 fBЇ?&7	~'&1?'
>Ч&
0AudʍuH\Q*ǉ냷&n gz\G&LRpw~yZ_*/U_Z/ RHVPBS^	[.Yʞ$!=&!>iB|*B'!>}BS~	JOuB(jB?!@$6!BkB(vKP0)AL#6	aK[퐄MOm}BoJ	aܑ	a'!l&]!!l¾_BxO;脰1	avq	a=0!쿅EۘsAJw|JRN\$.CE;)qQx''.J)E;5qQ6'.iE{dmI\dEvH\EG%.ꢣQk2:&qQL=euɾ}׭}";T]wpwzwݽdu}!;R]ww}euduGɾ'hwduȾ뎕}'{|,SI] wdu}=D]yZȓĝ${n?eqU6=50nsskθG4mifwč0XRTfYLyTn6^=q1E=IwSl܅Lq3.aJTaSw9S_TiܕLʸkƸL5]ָg3
09L\݌{>@^q/dø1iL{)`^Tg+wP^4̸2
7uLƽi/ȴqofa܍L#{+>ƽi_`L{~ƽinam0Lc X>4θ1h܇
}Ѹ25q$x>40l1LE}iq_a:̸2M6LS}iqfj6;Lӌ}H~bL3Qtq1Sc04tӗ0gxq6Fgm^L'/bcxxL'/\cgjtjl]o ۃi1-2^b
e:xÙo/a}TfZn1L+74j&ϴx36ޡLoR3~k7|5^3L4^, xGncw,;Mx'6^;|恿co<-oo	ugSo9;
|V/6jz_bK	x__nu+M;|o0޹|ƻ |._k][x7w% xWo2޵wGƻx7o1[|nnwNdwx6{ '{x5{|xO0S{ ~x/i* ?jm{?i1ৌ!i>?k猷
>`Q.E%F6\ި^W_7ʀ`T
4-4?mj2jW;F
kQu
QF h> QahGFl8V
fx'FԨCFAkOQ?))0
Q?FATbOFATfOy*7
^FA("FASbO(R0
>FA(*Q?USQ?S(jiQ?jO@(0
=iQ?
6
:bOCiQ?
7
z(6
FA4(1
}(F~FAQ?6
iQ?5
qFAtQ?(蟚 oO`:(5
FA4(3
FA4(7
FAlOӌ:(ZiQ?0
hj5
cLCt:?o|fƇC4?vCtk|Ƈ$CeC?l|EƇi:?-1>OKSZf|N5>O_1>Oˍ
CtZi|VƇt_Ek/?N2kuo_-6c|w/?/?_E3Bo|E_l|z/1R/3r0J2E?0j1Z//_E7_E?2E_E_Ew_E/l|//_{/_E?3n|/E_+1?j|c?n|?i|o//g//ߚ@	D/@	D3o&f&7L L 	Do@'1]3&o_L @	D3&L &m&b&w`Rmf|Kz^KR-5 (1 Je<
@@_@%
P
}ஂ	]p=	"8Tppz!8Rp}G	'h'x`!BT/8A`C(8I0ɂS*,8M#[<JhVcg
+%%8[9m'
'8_$/.<Yp"ł.\*!LT.\!xWW
\-x:pڌ̨32ZF_h]F}+3vFd輌]20gtQFg>K242<+222ڐ2:k26nݘMݜя2ژ-ݚmݞݙѦ6g'mތݟ2z g`F行~*G2uFfXFgDFOf錞ٌ^K2z%gjFezF荌譌)w2z72sFg>}2{F裌>hkFh[FdiFLg PK?aW;  x  PK  C:U            .   org/bouncycastle/math/ec/PreCompCallback.class;o>vFĲDļt}FtҼ⒜TĒdTĜlFdHiI*;#;#!yi֚)ccd`e`a FFf6 PKΓb*}      PK  C:U            *   org/bouncycastle/math/ec/PreCompInfo.class;o>VFĲDļt}FtҼ⒜TĒdTϼ|vFv&6Ff(  PK0U   X   PK  C:U            4   org/bouncycastle/math/ec/ScaleXNegateYPointMap.classJ@ϴ1cU;Mq)ʪ .S&I1[)
.| J{s.3 [F|ơ9fZƁ8oa;
D?_F+Is#/:$	eFRTҨoA)gBBBق<
tTlsQn5E,;(9QQ:jdCi)IBB&/ʽԽAX1[3	6>PKQ  H  PK  C:U            -   org/bouncycastle/math/ec/ScaleXPointMap.classJ1ƿqUUoۭ7KiOAzMPdbWRx|(qv-xr$oIf>>bl]2T#'S*7gÉ)fInr:}4F*Fn<{!LhWB+k?deqp9*U:-֋uKsY3'TWM!c+>J`><<,c]@`C`	uN22إ OV2hДBJt.+a#E
X1l> PK`ݕ  :  PK  C:U            4   org/bouncycastle/math/ec/ScaleYNegateXPointMap.classJ@ϴ1cU;Mq)ʪ .S&I1[)
.| J{s.3 [F|ơ9fZƁ8oa;
D?_F+Is#/:$	eFRTҨoA)gBBBق<
tTlsQn5E,;(9QQ:jdCi)IBB&/ʽԽAX1[3	6>PK"*:  H  PK  C:U            -   org/bouncycastle/math/ec/ScaleYPointMap.classJ1ƿqUUoۭ7KiOA1MCݒ͊]J?ٵɵ&&|{pmruP=\0&NIX
'FDa'arVJ-$r3_i~QpT98C봠Z/2vԵ&6.=b8h
g/"P^75E(Pu
%:`>Y=ˠAS
*[tkйD^hg)`m3kO^#PK  :  PK  C:U            /   org/bouncycastle/math/ec/SimpleBigDecimal.classVSg-IM\(h@@EEK -(Z,f
J/Z{NgP_u4̔N/Ǿ;M ~{\3JWZ	֨',n
W]@ufhz!
}:8ڣ%ԸV`f<Wj0Wt5z抚jFPif*Z<ɪ92F
PuDB%1QțÜ+٬jzLKF
;N_</;<o<*9T	mJKp:YPt3Nfț'DoNRIa(z')CWdGTդ%i0,oA@<iplBLfN36Tz
*`9Ҋv&\FLtԲ4
j$ێL.1)鸒7uΥ;{{3^MRuEZIHrO'`3LSVqm|y5)˓}q>1ugdd'גF!M̜RIfGQ+bm"xJDV0V[bC8zmiUnѣ+ؗZ[XJrj9mZzmT
sX]] m!KLwnhyVҶwŀзVYWFkdY6-c=;C?D^I28"ie8ƶ26Gnv`؈>9x^De	uxQF#.u8ad}8>iQs>)0pay0\bPeGu_eH0Ii^S	fT)eLW${\Odު i]ϓg#h 1>MpX;PS7f=cIQ,ߠfY~	b2/	k!<.",LdgqAӒc7-ꠉ܆'tLZĂ	ik;[7³N=M.'YFbNnr S :NV*J/vyo/?
Pl?"r6'h2}ҢR#UC9	Yn,Kl>0;BLw]%U^>K|+h[WnLPZX2.#H<<wJCeVqaXI	KQ[Q
RE^NWfQZtna;}dݷ>qXoTF=qD}dFĠoE<O2'O;).Ofg5[ՉN)%x_s$}mF2~R㗊(?pp4@BNuIs846]ހ^(bLgW/}vxBk_U砈g{Q%<;SGC$8wg¿<X"]uCpfmpc'gsy\g5֯q/PKax  	
  PK  C:U            0   org/bouncycastle/math/ec/SimpleLookupTable.classn@i;1.m\.Imp
),E
0qXQ<	6,*Q/رXTds.s̙1XP{aPoQ V;"J%d[c
؟V$NX$eX{Ix<s}v 'mAg?nȣ=@Dggڗ:
vxpԞwL'~?ÐY;$s*2q٦T0,il  mfCjgm0^/;#:e`̘4\.XBCG
tJKןHq`5N,)QT
e[[//RL8
Sy1x7sU~aIk
Z
8כ>7W0W5GmQױ\ԗQ"?cqׂ9sԉ-hl  PKL  =  PK  C:U            #   org/bouncycastle/math/ec/Tnaf.classX{|S}>+Y_R"\HlY`-Z1)696t1JeH׀l郾m6 YVVJZ6[߯={ӭM-{~^rb돖s~w\駟 n	VIpwJJ	^1h?ksIӹl>k` lw;wwyhp{Ȯ}3#0c{Ua<GX{o_G"62ܻ369Slڰ|,_bSR);3Q&g{sFv1#Ká JFaN-s,nc}pw8=^ΧgFʙ[
%h=eV1r椙{*M6639qJRnqkbxw5͖P
}3èCX4f҅gf~:FILؗ.LNEsG\	U1aZ5l&".)ݝY3Ie4!÷{/4JޢُG9Ai!P\8N;rAX{u]bf'V(nP6rӸ-nɖEUmɜ	#[&OS3BL{0"Rjd(RN 3&3昑ĜX`{adL"8wNм>QXBҪ[m[u%׭Qjwg0<P%sJuIi\PDjZ7ca/K|OH܈60a
϶l_:겧S9-z BE:FadYC>33v/*i9X m¾NR6-2&BXKBC*M۷D߲6L6=L~{$hoCJ̒sbj}(2sȋy#T;BA!,B"\]m"la"#«D-"a/&zYVmFd=emTyֵwJk福}uFp@Z{Z=-=Ce4\gnxhߐkQZݹֵ'$=a3m~H]oiqemyo![5fӲk^2VV;Ǘ%HQ:^S?7/:lbݨ+]v.+=+nK5Xc
#5|H̼fA_V:h:KDǮcz~nFW꤂<qÍN+PƬs+M}oT,]
 @A~E&A3j`
:'"
'	-ID~	$ YׂOvxfU8^GV`Q[M
F%7+p+P@(	oUNgC.x'mp7K+p~vyDQM6	~K %O{	#GS4qg
U,I/ߓ 0!9f	OA2>Bp^yx[>8%'>IpO3%	/		%*g%"|pD5?':8<Ep_$wK|_!&	_Շ[Y2~ں-Py؟3J%v)H~Ș1s&z@08v[
B KG8nÈ{̀^dr)w,xAΏ
9?0Ҹ
h<Pև=UP*"ϧ6!vw]]`"jT#`eS6qWGQX=A	jhMHG2jpH8kZvn(qPZHDϖΑux;PN5z=KE*9[+qRbX:Iܰ.j-.EjMӏDgFdpLL~AuUbTWɀ7Ԥp֞ a1#`r@5!D~)BR:I+4XM+~dHƩ2@'ћ4^
VQI]de([@uhv3|Be4O Iʏ%ʩBD*0?*i}pIT> ]
1)OQMQluځaH=>>u09Ox;gˆM9*%9{FyoR&Ei]@FAG&;&y;BhfL1}¼ة'Gh~+:W^q1ຎGT!)A&&&l5ö˚f#jG.XynTZ{5Wg4߂_JuXCEjs3)3[(]#K?+c
[u͍6w=}3NN:gn*,x
x9ܼXxp;^"K%%%%5-a;sDNA3r8LQst40J縤
OBE2Ot46dL)]u^5m_#ޮ(q)ӂY" 4_QuV`Wxl2op~[vn5-`[`pw<ҶVp0N2	o#Ii^?q>RkE޵1e:YvgY,ɵ
cL<IQR/zPC)MgwQvy!<*9zDRZXE`"XI؎NWx{ZI-^XkEB+9ʑ~mw5N2ϝSڰ9[zB-nuwz}"Toօ2#ATKr=)M,k8-}e|*ߪXi4z'Ozv
5Jjk#m(0%z,Lޑ7h$$~TNjXKBYv.5qmf%|n°i60b!h9|@̲
ը}ג#MZZ(>ǆqЌy|e.Cqg蓢*
]*j`0 Ʊ`4Zh\y*8\ޚUslE?	Z9oF+ѫ
<9)|Fע@G	K	IOQEq,OEƒ*al%o@zГZjw4?
LPRgg`ra~-t5Y
M#\26=xiRC@܏Wzlt>ok<< XRzy_.ChaL`V5y	g;
A*\.R0M]ػd_됦\f͎a"z}2C%.o<&^垄2CNIQRE09iS ¾'?P>ISأ0<٩	;? ߳;?ɗ0E6r`lFy	ȵi"$\WTI l/Q/7n,32yGFy[\=_Wʒ_~^{H8_u!¬dA9](?PK0ט  "  PK  C:U            2   org/bouncycastle/math/ec/ValidityPrecompInfo.classuQN@}+HE
Ĥo`b"B4,ejO^L4& ?8--r̛پfg?_ ǐ88lxǐ:[1荛Y5kUF\eݏna#Q}reK=O/V{3i".Bu-܈\7V_XNӂ}v:ֳ=5W=CXF|xt:_Y3 ɭ|Uc.97NM=]ÂEnk;fu!*>16l)OqGѰC2)
`XAE5wfLAmZs6C_2gT+k>\f+oz	ܤY>l$QdOK})^XvdۣPK)_    PK  C:U            0   org/bouncycastle/math/ec/WNafL2RMultiplier.classUmoT~n&:m.̌ӗ0B:K۰Epb7HqvB|@	$BWФ,~ 2-vb5
V?GΟOx
F^a̕9bd0vha6E3AXW_;٭vt'kJ2	ՖDaHTÙ뻡Škעmw
{!^wb;2$-;*E_'pGU۞#S}WmyI%}׾g_ϯے'^%?rnȠ7ۍmTynVpsڎoa@Y<Vy֊GbT00w"eW^#́l"p?6ǳ[#vDID^mU%y5h888$/r08^82YT~Yɕ`\˧Ҟ欙jgi]7Og
%TBtkԿ0I~9	?P
F5ġhHנaAC
Ҹa\y5$W$*^bo7UbYE$HxO*L\pU»*rxK;VUml1ٵOj4.FdP!Y,fQ$-tPb}efA1nbҔc|lq(;Z!aYP_^	I]oi"9RB⚕ڏc¸H>%]TK\莕iE芳5Arǚ"|eeq1|D&K
	JBl%;?aTC7A#M&ψp8.r0c~MQXc|AHq$п~
PKY2^    PK  C:U            .   org/bouncycastle/math/ec/WNafPreCompInfo.classSn@=%)(I@4TRĢR)Z	V.ņ=[6YDĂpǏGċsν9ן?l1CX,8x+ÓؖnSF]sؕ[[C}*bɚ*?k4Mݰ0Um!ԡ94Fvf7	JCaiurN~qtUs(r6c"+hkP1:&8pOiS|[g}[}[|[3|[S։nEG<İ:ϗ+yJbyPؚ8ǸA
p2XM
rű{De
	
M(V7ϕiT_2]İE׈pE's^$i'.;E:Cdgؔ	d)4AUblpsp8\r!K7[OHJ<
ɏia72\#}B8+ ʉcoM:[zscҟW/z4HxHۼ#(X{V}#t+_z^OO>F0/@<JAO_{ PKp݂J  o  PK  C:U            )   org/bouncycastle/math/ec/WNafUtil$1.classOPǿM
	D
fA4<,I"JO]w.k/-&F_:4s_)zM9ἀ>6NS.Yl
hu4Mզ4@ЩȺ@k{-|~IoYZ^x\ݒ6fݨ;ʶЕƶn6ZLutbmeom+}:@DMnvhJ-8^h}3iyT2ʤv-7g
@SRУWAZ 7es4+0_Nwĸ~p,	x1mvqThP 4e$ѡ	
!pEC7W521<F1a cu3
	Fqa0&邘~ջٮ8^}E~Cdt IHtjYUWbEt7D$4@_Z|T 7?sҼ&E=7P'!I"0PpSo  +%vK<k%ߏly3NGWڏ^"#ٳ C1gb%&HooPKZQ  [  PK  C:U            )   org/bouncycastle/math/ec/WNafUtil$2.class{Uǿ7;;I&vLZ4k˒-ML MPt;L;;L"򢀼
B&E$cURϙ4fyd?;{9gܿ~% B#N	(lwڮ$z^7͹ųEb3}Vo0?nW@3Eׄ,RI8cOvˤc	X-%Uivd
{l.3#ѫl,RS:h[Ni~k$VW%Oք<I<~.ZnnG#õ5վUO_pq
7O}M^82}*.cӦ=%+sN`:45Zewjt"nN٫L^
T :Q&'.?UΛ3mOtJY1]zKC}]=٪U$s_4jg_WmmV&?ZI5OΙU.`jYvŢ,.*[UzOڼ)*
5UA*HwVEJEOVCNYTTUqjz$l:}hm;*|6&+I	Ի_FwvWS'`=մݑm+lFao({)RַD;.$?6Bk'WW~7c\đN][

VM`]RY5_ɏ=>~J|ĝHJ=pX"
!qc#SZ$!&aq73a،#:Jl½23>0"q##$`\vF;hD&%0%ϐx@_S8o0L4a?\ l
wᤆ<1ʌ'p7fq
8Ψ2|4,!wc<a%Řa،Qab|0یGP7OiڙJOӝp
f<v\ת6Ѝa؜CgzӜrZzRΣ
.
 z;Ђ8[r[Lnݶsrѻ?AZmN4#MC3x:{Ϭ+>3^:3z;3

?%R
qa14_qa$
#)z/x&M4&m#A|PotZF'E+.H	=H,"'.
2e7Q^=#ǞآHfRZF;2	5#U"'
I4h\4iO4.q)ϭx{!~'kq-ӯ-?=K!~Ԇxh
s]oμѡ!^;BneR@65h>	Ҕ!ޘ4ٕG$88TmǠcO4E2^185y/@xz\OH]jq*>֐W赥!_d/Ee(.ci`˸Q>OE~=p{OE-l9\{؜QT:UodN,I1j7KdZ-Ѭ(<iPv%PK!bU    PK  C:U            )   org/bouncycastle/math/ec/WNafUtil$3.classU]sU~N7f[ZZ,65XhPMild݂'z0p36u?+P}&R4dy=s> 2>1<oBsmyla֒ӬΖm|mW7
ݫM#[q,ۻ0dLWYvAU\7VLi6L[i:
ǳ;Gr^ŹgjҸssL҉4z2vdUmv5}|4<*l6G䉣j,sEPVg9^/Ɲ^RAp'g{_N4
U%˫T!{vy{{^nς-ۨoÛo~<]DHİ"^qRDDĨSSG8JM8,Z<S,~^X?|Ndǣy~fOxz_k/P}^Qo_{j{L`AP2
$0
cP0A9CH)8AƴAxMFF`F7%1"dLbNF2bxC%s0]qxCeAL
1rNE:KW~m6suuMGw!9!I02- %S|S] ԛ?r2RblW;FliomCNCr,|]ۛ
$R Ww)1S-\/]|
6ubw#bjNQxM
ՠ*IGbqDaaVH|151"i{noaOe5K¬UGUz<Bx_?)Sja]
>
	g [ۇFS\VDt_З=Sk<A1
Ȱdط&6[8	lcb=ABBX`JQ$P{%H;-a?5%d;/pPK    PK  C:U            '   org/bouncycastle/math/ec/WNafUtil.classXwgF3`0`yي,٘%USlԲ,cci,dɕ`(uHJ}!%IM[B.eiPZ>c~9x=u{o~pɐd2p~j{Hު4N5)+mf`ݯ
rغL*a
:FfM*Sc
59#4kzv
aˊf/
b{8	/dK]P=4j{zH&SH3;-ڢݡÑЉhCiK#mE[S
\=JZ`:"#p;4G-JNJ&esɆH&~6n	!l0
-TGKoݹs1HRF.ggR3c4chfCY<H%Grf7$L3gXfsvh؈[ƧݩL"{VΨ^lٺ53<{9iZ#&aA֔Nt9,tU0f*vCIl=Lh/T'S<ǌ
74N
iP:m&\rdX-qsJe3ʜQ`hsHI3n-u[uNUS*Xf2FMe2`IG!3%MbӲ]V*M]EY.jpΌG,
xӝ0PSF U 㣅pS/YfjJHr)OG&RB$|NBP%(aHhE	%jYIRgm[,4Nt*<ZFb~Pλ]ZI3R +&m|ioe+>ZDd;
`)w.1aBЉ2Tl!_Xs@j}+@eﰽ40"N<ˣ˸o\N_)bt|q;~EF:oOljy{DXJ:Tl`d#Ul[6FȗYEn<*U*20RLzT4-xUE+#~*_E*6c@&$U:TI6:b2*v"	nC<###
qQA3rAAe|WQf#g9#o1MFtbo06#?VwZ<#o0&#_g[|2rIA78~ לMЅif1꣆2֜6y3ONJrk߯&rAw	z@\	DxY~h쥿Y
GdC":Izү]H&$~nADF	HuڨiUSo
WB_&~.<IGv݃R	OP&h3;;+mjqx>F{~g]޽&qm*s 	~WA$e]h,ty\MqH%^w]tq[FuBDJeӏ2鮛PH4߶ߙ
:b2Z)(rA]=ȭb9Co!Vb- pW ntY؁EA޴P	*^@3
Ak߶}]u8\݄.8Cnحd!]Bb.:]"@)"ޠ<1v#]"HG(P
`PlW 	6p9	{Z:XWE3q@CݿWg{WOhnL>K}4Te/AqlU])']Xt"i)Yzt̒`80*oi{L2	dr6W()NU=UKH4l!9#OrV=
YHv1}Mx&v:&.V^GO;^
}w)zQ;1zj[!:/\tfl6Ɗia	
ivB>( ^s}u~7{L	geJ]t>J3v)j=;UcbigZ,LXj+cy߁>'{6aҪyRgW.^*vе0_N管kܱu"]PA&d
iL[WMmn:0
6:ٔ0X`1YSN4Ǣ@V*:zU;5AY)+Dv4nn5&9|U0Lx_ B_q&+$:{Z,VWx?̟-gVa[]AGSYݜaٳ"V:Zş-sLep,5;3phkfrRr&Gl5O$&h\k#1i
F$&qsx(erxJa)ng3VxPK!K	  5  PK  C:U            2   org/bouncycastle/math/ec/WTauNafMultiplier$1.classT]OA=ŖEb,6&>`Ll	EeZwg)	?	WnCin3gfι읙O /!Y1Lv0C+n cȟSn\v։Üws϶oKaXi}i<T0=Ma]ߑ$D)Bp[m=X[OKc挱m9"d?rW>t-;>F}%h9}=
i
i

Y
3t
kq^hD^>Dcg$~F%n	)FrcBQ<:@GLG:RX1c9jgQJPʢ"0s%RMMnSڮ:?bзAa(BEr)~w#' d@	-fsFόKW(A0£!"J@
Ff\Pj|\6	kS0	hf~~wpT/PK
<XS    PK  C:U            0   org/bouncycastle/math/ec/WTauNafMultiplier.classV_sUm&ۭ,Z
X%MZBV)6J-alfMZQ?8Ã/}U*#K0M
eڤM9s~7<#
Z}}mzN"רnqSEyݴJVQM[C9oZ5)[.inzgg򤺐(^0t(@JEKcy
Tlj2`NtwSx1CiEj&CGWbP;t2ԒSFf5kĢ"I$Z뚑oҶqswbIv xEBU8WujPl0nZV5Ɗ2?_FZ+Xzm5Dlܴ,oWgڻb>7;ccC̗tKlL\&H1PM
E7`dyV4v_kjA[p"yMm[?^X`'^LyiA-Z|欖)E-Me>6K-e=^%-oF[(Zp 21H{^g2c6C/;2`1	xiYɾR~+MlZrQ|}t{}x3uuo'Yf
򂚼lgלGb|g]Uyn]Up
vDsη}H/F/>i(rdWO"RuzӝE첁׼tO{|DK$I'Z%t!)UL"*a> &!q	. #.-N^	MHhGB&HB g%cڃ1"⼈qcD{PEc\䪈0E')N2,j\qYN8MIxysDGfRMFVjH=mTjaFMQc6ƈߥ]}$N*>~NTM]"񋁿0zqtKXg1F'*a⨠rrVzKvVqvN٥e!˰?xdV/9'
H?C{ 
\;e[ag8RkfTwdh#~|ո^KRVv81Y,>j߄
ZCLf+
UD=^f<nEYkxȄ<'^vs8$80]MHB[C+hEp
>-{W!=UrNt321'?	ztS#Ovr	av'lXPKU&  D  PK  C:U            1   org/bouncycastle/math/ec/WTauNafPreCompInfo.classMK1WvqR
MdQ( )]fn*?%f*P	a&3d&_ CHBxo/ϻTyH\zmPK'P<>ϯCizeJ-	͵^&?=XoCicXajԬ-Rذ eQR'	vK)#2Ğm"I%̭2yCšW/LqFi8C)D،UlPKҳ2  d  PK  C:U            *   org/bouncycastle/math/ec/ZTauElement.class;o>!Ff
0F6̼;FĲDļt}FtҼ⒜TĒdRל<2R .cg`fg`adV错WZdȠ]f+'`b`d`<\,)
@vA,A 
tPH
y@63 OKg+F0  PK     PK
    D:U                org/bouncycastle/math/ec/custom/PK
    D:U            $   org/bouncycastle/math/ec/custom/djb/PK  C:U            6   org/bouncycastle/math/ec/custom/djb/Curve25519$1.classOPǿwkQ*ۺ!@IYA}Dh$-"!s=O_ `!^?)BʕdݝN)W
1}'%cN{fLZrmV0)XYf	ap22:ߙת)ZEkcTCWlx.kc5Wa
3#+(fq4V]/jfI	T&I56
iz{DF4	h3L^h!AIhJQҽIy
]fRk9K?ĝ!砜WjIhAHudܔ# A$)$#ABwqn+
v]JE@UxE7-\Y2UdQ͙m6Õ9Gӗ4_:t:m%	F".!@ =KvB x.2].=-ٍGPh?6]`fyKƬG7bs#
fY1)JH˜,,͙߹HxxzK`omq-Dr;ĨwhBL@+DcAh1*@`l4.#bMIx."(/;Q|?Mъ!NSq{/$%3oY&Gx0L=Gw$DZ EPK<  5  PK  C:U            4   org/bouncycastle/math/ec/custom/djb/Curve25519.classWWW$LGE\BkhiAjahdbֶjk]l?!73X%w{y?W l2;;s*#:s*"Tnk Jc'5?o}[(
Ԇm~__
a_[]
<XxiZ_iM/lh4}+qqJxY)|ަ@8

r([Mu
{f	:q]!pc:gHM+Ҵ$1,yBp\Nh-d%U:#NQTrk2QJL''eJSRGDIS&i%ubܨEiL#rIOC	200,KՒq+Fxk|4hL^QYƏeԌ(#L`iVflwŇI`XYE4QR6f2U=RJiIR2<a4kSRtJS=Ç<zPۀ
/܆9ph~Qw2ѥ)"z%)O6CIkGVضL<1:Gi'EeXPhTohjRK{3QN4f'DZ!g,j<(㱍G
/Zu<yxy4hģ".^ooqzӸ.{BTF=P+-r\oaw&Ӗtη'*n1
W֬MUvڿĩ-bHwyK1F9ĸ+ZµC6҂+f"Lf	LɬrޥKKL89D`lDVP}0X0(Gu
P*O	X	،|V3pG_@ X߀8(	n<#JF`܁.a`2`pAA @3Ph$i;/8щ$NtU'E/9iqDk^w"cueYb

ay.(z^EENb*%khyT#q\I.
GjL|,2U(艹 Iov1ɩ\A6L83荹9nfpMnͪ;iY9|;fmspo߫VlӦbyϣ+6O Nek/fW,WzO^1]D[ R
ϰV@$ṿ'V5W+0bR֐^ѰLW4fJIJ`b&Uf86M˘`4$O*/~v6,|/_Ϊu%f{>
=7V?oN뽟{.}12,>zGr&	cG$	'3;!QmYsz_0H2<8˻vrg?3{e_uwg]g8e-i/Yx1Sqg%߃sPK۴   x  PK  C:U            9   org/bouncycastle/math/ec/custom/djb/Curve25519Field.classUiw{F~e4$%ۂ q$T[Y k&yQbC6)K7ڒ4u>t9p'Z_sgF8{|J"_H$HOJ&>PLwEIWRU.rFrNGz	vu
Wl<44L.kg1$>t'qpf$
E3W~$sO0@Q6L@=)Blr4	g`a:_0n,Y397S	Vve8δ2l<U/Odc-Z]t,S`v@9(qH{1Z8meኊVT:#LX1l3~baKԜ:N:hY>Gpx_.oU4X|sgs]%W^{lköL:VQBdgV3F!ˆ2Ldp34ࣇV-ܪ`O|?m {34NݡRrČ9R
~"1bYj
<bVG/.eO9,T".{_(1K̗($ӘN6TIooٌ%ʶ֑k8.\Q[TiJ#*4*=>tҩztbFN贛t#UAHc*`":=İ!N
:GNI}EgQI]0<pIjiZtz!NMa$÷]!i?aLfɌ#`K302p9B'=K0l/0"Yy.0|"%51|?B&&fd.:7r%8)Qc!gy#OBt|@wPtU˿q|ƵOާݯ0˷-/tJ~w4o@?o+,X>@k)k~Lo{֯oNj 
]hx~wS7VOF0^?<LONg@G=;oSa:<W7Bezl`&)xj+	ÈKIXv_e]<MjEF.GʅNHbbE()	GGLSӱ@~?~@sÝл_1},kدGF_Nͨ-H7[5%}:s@qYheZ`Kb
7k+yHrǉN<nT>P`2(áz3:(,(i>QVƐծQXԆ.ѺşVخHs$dz?i45aF;6E ,C(G\%3zDP]'
n*emMW"'
we.KwHʇii9lUVے	u:0}h?ˆ-l
7wApϯѱKm5EKᷮ.ԘR]-8@{ܭ A$$FZFM)΀|
-)&ܚ s6j,K7Đ{6dZ~X_!O}l26ZC7ͻ6h5|]JAdVK*lN=fJR2tqqTMf]Dm#
:F	N_.-}PKG  
  PK  C:U            @   org/bouncycastle/math/ec/custom/djb/Curve25519FieldElement.classT]we~cbR%MR#BmS(7n$e)E(_xp%7xBxTxzę6rzlzyy~ _%s16kbb+n뷛⾺߃>>t#r )zL~6:^̕Yq4k3,6G#X}]Y(
*=ekRoظmaޞv2P(1N3=rb~BE"d-]5&QRj,kfI@qm-ZnæIq}ƴXOFau<Fkn\V%MSif+;'lX=/_6mc<M
'PrL\Ȟj%glɰ9%2wgJe=6--b>1:I<ѪٲJiv{mLt[v-B9Ot-Q-*<Q)KsHA[/qgŹ%DZ&5PS5m9^Z^j	/$c[dlS@cdHe3i0b[F!7ZyfOF^A]tBXlnb;(%^8b,
V`VU-*2lch`XWІ6ta5hPchgdXFX`#v&)Xa/c/ч3A>Wp(  y2rc'Lbo1͠1d !+ 0wJ/tJ%&vֲ'Z} B⑶IR⊒l;'YC23_/PN =p>?FcӸ-J__UjF52dNlōD
ǎNחsֹ+VZ@#ߠ4˷\FbKUFM4>n@nBoUAMhډ?`eԻ1]lE]\.N='gjk.!B
IG">Зam[#y
8^x9KM6.ū2빪W뵖{GqmޛΧͧǟJ?;W^Or'S{:$.]'z9\G[BkIMȠJ1ɣJ^3wTOJ[e&*RQ=IȪF2OCRQ_U?[IeRl%O@(l&5R*Vت$kUqdu\/r;WY#ܮHc#J`ǀ˭IŢ_#݊=Dux[|᜻wٖf3ٜSλ~|afL}x%.uIzŰJKTRioؓJao*ta)u?v$HPKY    PK  C:U            9   org/bouncycastle/math/ec/custom/djb/Curve25519Point.classVsWZiٹVZp[YQI	NR》IjGeiTAy%!7Wu#{f:ιlCa=sϽϿ|
0>T@/M+ŧYo4%nј.9GI;/
ebiT^.Պ٫LZkjΦ&Bn`q
&ˑ3K@<l2ULgKJ]eFhL]2gW3UEzZAJh?3Y*s5OZEr v[N7.o+m?|"y+vYh]jR,"M4oIѾ(@La?dwvvgLN/WLz撂jUtstlиF_j>tu3g3ѱ#򲝫e)~=JLuڲ5nul5B[9QIw_RP#[
踻U4G45kHhHjH)wy dg]NSal=/ޯgpOx{aS^Onφyc0N8pA(&`D/G}<Jfb~#iQ0t0y/0<ʰbD? Ca?|لC8c1|D_5эi	e8q3pO127p
CpadCa!kВf`ВO1V.21J^`(3ThSg:3fx:YQ5E<YT*]s:~6si>\)'iC1GJO$S#x#8ʣk/=BN6B!	N.(~A_n`.M>C!tDb껴j'bx.LbKL莡Yld=wI_	~>/
g^&j\29cGђ~o[&~oL6ƑP4>5+,4&[^Dd?H#
c^k~v^G*[8&Ve/{4hLڈb^mhaѷFF#"i(D$VIO:صi#GcauAyO죇4ѣ:3~O-!BPP9S7 t96HJj_}lޢcl%7-)ș[PkB~gւGTq`:ȷ4%7V!ᤆ5LBñ֗nm9bmvH;zb;ȿ}!?th'<\an$dMp-RO
޴.624tuyfk@#	7i%P
`AgCOvk&J8;|nP8@C-O|Ȝ 	쵁8pj5:52z}n
f73̈́y<nn'ݲg)))g*Qj{G緅A>Ecʧh]N-k&6}^K}laF/DǛwS5#κl!{-/w -k/sʎ?>+E^es5,uB޼D.W2.\:7iEM)']b𔠫A0(uhy~r !I)V8i`Ounכ7L"趘܎Kv]wl)]~guoQ
/^'/PK(    PK
    D:U            #   org/bouncycastle/math/ec/custom/gm/PK  C:U            9   org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve$1.classOPǿwk1*auHu!&fRn%kȃCË?@ IO[$Bes9_}`^)w9NӀ7^UG&=v$fT*Ea):YE-kE6i˫+OEnpƨ,&w4M%*V6(ѧ;e
3F$/5U*˚*?^4Z_ۥ-PWM˨ʥ\,g^&fxp/tهwi]Y
H
\!I5EZt=> A@P@Z!&|1=sܔ+;$AK<^iBxwnѼNLD|"nBm<<"=N"qGD D4 ^ow}t@
qKh.@bBYcމ빚fV*hVXbVij&õŕ=N}SM%H'Ex9lk,tkrfǣM~EV1R6prҷ1ÛR{#foc(%)!BB2{92/Oo	-.œ61朅;$0NF?F~yB*>|F
/$	?A'g)9DYIiG^aZ2]O{6Av1(ݑ~<$/@~PKg}  ?  PK  C:U            7   org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve.classVkWG~$lE.
(!\Q*beYB4bV[~i?C
ᔶ[QԾAI霜gfyyf&3o |5v1 q8ƪX1pmKяz:"hW m@W{h W+
x`(_K$`-JR{B6{FDW(o8ZF}-o z"WZr9ācGuCesolFccq5wHH0^5pYEČݓ6%w$MʩHJöjRgq"(Ir&@yae4JB R9MO$i%UMJ,-eQ#J҄^U=:,Yf83z|,cr\K'%ꖍ`2S49!S!!ksƔqJF<22Cfמ\WEC1lcuCBDEp؜f(JChFK)WCHMt'&KL[7
Fo^P8SJ3~Q#&PZ2->,3Ӣ2Nr0fAc_6E0:5Ԕ2L*tMQi1)Y汞G<vphϣG;Jaxcޕ+L_sSp$:4]gJY:{aWӗl;D4g94'M3]cCN ōc4V4YHU\7t#-*hę<Vq	Ȕ_p5@2x6\^TX*3hf`PCTb 6*6QZv%C64pTNȠ
h	H% QN18 `@-AL8qցcg~@/fsз"%/;040M5Df]B)LFOi\}q4BweE-ZuB9ho]'Uu	KuHXw
Nn<s-qb\
Y+,fGsx=g0mEm];\9z3؈!3n34O7;.fOZCUZZ+EUtUc;߲3&	J˓6޾jhjX0%jbԤ'`WS3u4fjH\+ՂI1/s<&kur-8i/Rח'l8v,mŖ6=M]Zm;nMKx_/֭<`=s?c\y||mI:!<zx8z!HqĈ&=kj^'L+vn𲕃rvv
7M\}C6
BY@ZnD񭵄^PK+I  #  PK  C:U            7   org/bouncycastle/math/ec/custom/gm/SM2P256V1Field.classVsW?]k:qr>gXqD@rPCƍq׵R*8
IZRPB>P%/<P`@0<o<Psv40;s] O[VKyy	+scs+s4H;V-^DO[!(Pٞc}̣ڞ.P9`P.UJ.y$><>B>AS\QDVf\"2 
C0W\Q`a)\vbXIV'B#.֪395_sDY8(U
71R~!+7y+k%,q;FneΑ+Qvu^`\rݲsR,b"FF9o$+-ŔpYXŹlN]jm-ZmT
[^
gBШՍF#G8]rX]OSr\H	1[*gx2&Rcx<JZ(`z'<wD^VVfJhbW@5<,Xqct{Pt5N]iQjD4حAZC 4Έs\Q8vn	v@Ą 0	/@@5a`/h&$'%8 	#3$Q0L@	)0M&"~N 3!Gp m	'	v<&cK
8k%_/|+_%'X%(
x		.	6*U+5 rZVV.yAs.y~eUc!x$1"0#;q*x
汭!|KkKbXȠ{J7Ԯa(ʹq60
4.O5|IIFd"2W1vid6hͥXI1d泾+,THSSS_X"n  MᙐeG҃}w)JCأ6ɊrmC={'J4vG
D2UЉr
$Wa<)H0?l'oOމH[Vn+7oO+E6rWA,"@pHЪvքSC،?X-~j|&elw` ukgU]3KG<>q<)TQ|_ӿki9%3	?B;ƨGɀh%(Mjzt|bt%yҟ@
Lcnlb3Un3
i>_쳱Ȓ³,yv2,ƳeZ}<;d
YLٸل5hYJX6i%q#
k7L˳ɔl%$K**FJQ7J84T8cF#+Jn#V[׻Y;ޑ{,Dg.vvws;vSE?cKo#ͧT8ϥdd"\2jy8SvPvR]TXJ]@v-Pϴ UGS3NWf.8x:U	oS7uܭtSw
^)o+tx{:FC^Q<:cI:vy_JPgh }kKy?C/N}iƠ1>_1>呻lF#SJ0>zhV<VfGg
Cz64jcM:O=%E瓦ȟMyj::7H~Y'*U|k00}-4#K-*e>:
*m#DCE
z	ȴ_nz
PK$  V  PK  C:U            >   org/bouncycastle/math/ec/custom/gm/SM2P256V1FieldElement.classT[WWL2I5" crizQHBmކd	L KMZv$bJg>|{}>/8D[]Y/8)@vM*N
I^fHb,UY|L"+U9C7u78k.
:6}KGths<FLΰfsji%",Mu \)9sH<雴9iseհiV84V
3LZVM4
ΨL}9OvEv~vfQDjPB*kZA5BBNu)%Ug&:`l8HL2.YtlsZL˥3ntoyv,5
8Ql;bPL5c\RFU~Rvt#oY"˚9mg\J.Eٔ(.OYh6߂je&ZWIUW
=yduyB	$$$%<+!%ሄ%<'}xʟ~tqO_r)nhתfiOO
yrk%
?^[z;)M^VbG7M޼[./P 8p~OAb)qaQhf,$V0$N06;gahK2ve0"eq!Yp5Ia00͐c3\f(00ar:`xM4bx;!\^(էNΚfeն5-c:ΎӆFPP@H9
wsG [|O[?tewŷb
%aMi&	 2Ug˱\f#x#PEF[z5uFM3||$~Io~?"}(|s| YcZjO	;E\-x#D >wS~FxАL$VAm.zVհkU=M⛱ZjSJzVb"ibS]o<Չ
76/6ҏ,e1u"L;H0.t4OVp-HVi1WD(bǥD摀g,DREd%jYXRiI	YbDdb:H m<.)tH	F)!+4U¼tV!%kz5H5&t3Y5qwS(wC½z@;$
[!OÙOB9X'T-Ǿ_\]}|˘p
||{]Zm>meyb{C\?	E8?T{7~31/PKs$    PK  C:U            7   org/bouncycastle/math/ec/custom/gm/SM2P256V1Point.classV[wUd2ɥZMbZ4Jr)&6KM&^P~yjdٟ3{&kI>g9ߜɟ;]Qc,מKuQg#ꠘc;qNDZ)s
xRy21^33銝=29+[h?@YJFdO(Ylm1pʦZ2e-;R쾉\:_*#nO~g\Tq<Mɫ
c{t}ܵ\ei7Wy*ǭ2)T4#R3ّW&l^c9sN6T1%~+־]Ng
vܔVR!1YHv
u>C֢`mYsohӍǔ'7_2fl5C+w]$Tn><?gWQy.3RC"ʖ5+XD'sAPJ1h^h05ܥn
[5ܣ^
4kSpZO=lm_]K_*ig{?AߚD'L_7ϸv1<VIg?nMB1ư!:k" S4[7gaCw0ɰ!M4DA0la؈GL4c;B8S>tq'2؃b4,	)$
E`(q1ggx!mмO211hC,Ë'
4ǃa8l!<4Qgc9tzb*ӕ
*azLOU/d5Axy+- /]u.g1j/wT#}<f%UquGt&3gs8IFl6ç.?s2Iq
uU<]ljq^a˿JLnw(A^B)>n"OɈH/Xc۷h9e}~9UPi"l~f6rF$G4.՚ͅ6M8OeD7"PD١Y9سT$64<Y̙d9
fA-w.|ۭGu6\FϨQ!&.[%9iȖQwFߔ&FCVflsŰYX:lcAu
!6y|>+/~:
kհO
=н%^nǾVv95$C+h[#"ߊ_Z	 )|,AʗcR]ҦG] *Wy}SwMeaQꅖ8BgTb@x㴤-LcqF)Knz=B(r"Y1_MU:+ DBB2_.	1E%rKijr"rU"2~T:;s,+
uh:?j! ו:ԯH/+AvFjk''NIx$RCR?pA^l
	h>89F؊4*_(;j.LVl/\WN6IifTPKY$P  H  PK
    D:U            $   org/bouncycastle/math/ec/custom/sec/PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP128R1Curve$1.class[OAvX"P"mKԤ	!1]iök[<@&_4Dh0Q$Q<[4Ŧ3̜sf~g fp9_fB5LE>IʊF0LRX28NFV
TGF'&C3Zj|]5۔2fY+qXӫe"&JYHJaVdfnjz)a*TZ٤S*{XT|VSKuVĜlR	b$5i)kAM-4gZ'>6vkt˟c!JOl,8rzݢR'CCsn|.G>ș+D8n@1	H.D$4my&Ih-	^ܑ !، 
zэ=^"
C^\͖M7Y,y)W.&j0\Y2eecVvC?Mgd	ҶIn0N^?\vD  9;X?ڂf{TyěZq/i&G7KmΝioa/vo;q=DIIq|_=]iW$m$;ؾ0eD8!Gqtџt2vFjHRߨ^5\'"#tutj[nZ1	lF>`tߖօ	1Lv PK  ?  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP128R1Curve.classViWW~$LǍM@.Ȧ,JiaB4VC?n==3*Ι}{?W Mލnqc-&fQN_P
}.
X2F/H锒2o]imini-mѦp1D#FD'}GOKsgc}8V6sXPZÝh?2|<Ρ^o8<{x8400&SK?ԫjQIԍ,"hJNF$TS&9xEIu⦎m$eJ'V9ѦdRPRDP5XRUmTd JU	Ҹ^U=<,ɸ2Ӧ¨,rR5׌iDW*S9)!)f^9~5c;!C#Y̈́t%)`XYC膨:u.%S(՝#I;V8]ۂ6,K2NteZfvMTח
?Z??"ˈӁ~ &mP2F*65=_>KrMTF	EVˤV\LN4~LSb:#(屁G-<vGfy<zihZYrdg%Q3EjדpomHF͢h[a*wX?j_ΤELnjsM6yCVv_~[Ǭ<;)8sH:t"-91hdqȔ_pIy N<ZFNS(1bPǠA9T2(F ?6)@KGc
؎Qv0j`5AIz 3H1844	
Ճ>1"I:i/q֋cgE/fҷ"%/{1 AƋ#i
s-(;&SYE]:n>ښJrIJ`hm&UM	KR
ą9_@qs|'Ezox=-h9Y{,^f
`u/'1ی]TPYGVja;9%tXc߲IIeG~xضdZ,6Ӎg}9|vݎFlR]Vz֑^H6uR)ؤs"xfqorּ'mErwmw9v:v|UTʟlhwWwo8*\|@y8WUE)+Qpk#e]vAmYEn3HO	Y}unZCK&]FrcbAzgMy`Whp
sH؍(qzhoPKZj    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP128R1Field.classVs>Zi%e0"&5Қ-&I]l[g0뀃k_Z&HKZiӄ&iMg/Lf$3N&?'3}L[`I+
d:=9sϹgD$ZjHu\ @r
S0
@VYE-C%ٿ0QF(06Hژ;+n02+e"H#<o1>8y@	Xg@J,<kBlC汻OjP*Z铵xyi%%.ҲS9	D
r~­8s[OESuب1ܣW^]v<*e߯^xU,
FN0k*j)ܰ.9bs/㫾[hZ[/V^qԱB~n1_l
Y|ɲ[A
~P9Gj? CX\ڇK/W3N46[j4nQD	P;(^_.U{eh@gN
J(AE5ħ'Th~vŠI|&)IB?
mW1r

(O!VUh?688!7N{|-QzL>nJ:}$PAia'):b0pTNytC/$uNBNi!iN_e2}SaOQ:-f=O2b8Pakt|f{"C2dX
CYCpNl=9*GVxq`5휙u+.@V3ho%ZaTuåƾhF[b?zѷ_a1i}L/)2H-;פGߠ9yti;}@uR` *EAU6ќD\ڤ֩>8h>άyWz"XvFgJ%Jhդ7$[bٜI%P 8g +K-]AiMl,(v_ݵA;c<[)A? ˁvaqO=uZ}_K7[.JJ%#sx)IE}Q&e4hu>o|2hY-uaarzTTq<CɠTrѥhJ~)*a+N/BG@3CW>7o[߈ΤQu7aZJ72fI0$YH-9TK$R#I9mmaf4Ug(mfML;C:ZԜ1i]+RȾ'[2%)l'Mjʁڲm
{~w>EdٞhvgSrƂ܋cԛ4:$&;O&7&6
RE-ko{#$2[xܞ^tE'6NE^wH8
G>;Zp	ߐ'nnOsf_H6w𝼺(K8j1chAܫw5}8~*h<>:?o,DF\5\'ڧZsXbfA[dg&)6<&Q92!aɇwJ?Nyʧڼ(KdvC`</a^<>Y)+Ɲ¼
'Cq=/bU]_SIPKa  W
  PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP128R1FieldElement.classT[WUL2I
@jZ
[{MRzZ4L;̄B+^Z⓾er\ֽ'CX8kw9~~|Ɩ0:8&!{xQ	r{Tx~X1X>F
fb$xR]>V0
pOc$H$<1$
;|qo!̢&3I5n*$*I"lDPP)!6
.ƴQ$}C{]+^\Q6kJ^˦C
'tg"WaÚ&;Ba]p C3*lhU}ZϘUMSt.Urf
b5*vT݉h,ȔSKJ*t5EL2}9/>Sw	63^p'3*TR8$БoԈ2_.HfǶYj՗v2g1JVLޙ>:6STm:AB+>neyW$r=ͪQu(ƮTت*TЭ  y/(ث`%t:ιk^*Zz%t-y|k-
?k^ZvLR0<oq*SE;^RAVa?C*R!b*;dU!lRх'T<ːb8ZTlE$a6b;^Q
gUpNE#aa808W.10p-E/f
E+%	3JNǢ87dxA0(qUBt ;5oYΙy\p>9
&$kJc$w3
"@ Xt'
ߣrUH[`&5/V4=
*"ﻋ<K4;Q-qI, 걒
D
vS8#n=k1n-14~4m5[ȁF>A4bGY.}F5-->CWϩOS4n=!GCw 7ZKnp鷭<f\F?M]Ir#Vs+v4ҾNzd1JaZ7+:.JsgW,ѥ7O=DiuĂes38GT0]t*]g崢ɤ4slPZUslHFHdaN"Z
k0M´N8-zYxlThQZO2޹NNPvtʥ)? olQp\z4{:?pJ)2~gZJzMN&APO=pﬤrݒq7vxٻw/)ՏST6?ME?V|/=r_PKi_  y  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP128R1Point.classV[wUd2ɥZJ+ТP[r\JɔFҤ$n*"Eyjdٟ3{&kI>g9ߜɟ;-Qu8גNVg#l8qNDÚ).U<Alxox}PΧϦS%;gv+ӗrޜ5nTZ*d{
`Vʶ(gl%]./c٩q=:[G{
bfadȍ)̏rg)3yal--fK<}t*Rr& 9bD*Lf kF.n}Vb'/dyH.v߄{]o/9`7u8IMӚ*NO{Y~DQ24-16w.JcQĞ]"Fd9UdF<"t`-k0;nkr]2Ŕ3#T+i05f
jxL
-Z5_J'eٕiK$%:l"W\|̼Ӵ0M)vtlED#Mk"2QP&1E3~q610kVa:240uzxaC}<3BRG7cxa/>ۑ5
tb?00Ɛ38CN0eb80+2 C?a0f0pa؅AC02ZLV'*P	+ľ`j$gZuO?Z(JVT(m¹Ut8*jrC4>ߧ3|JRZ|DGVb|4	o|*>dĦb񟩎i\"x_:NMD<Æl`S{q-,N*`0BB$:
qNa&"B#ODfqA/"I"<bmߜInT5Bv`VY
QV+6Z'jDXވCo&eZgڦaOQDXEz^=g6
Ԉv94߉(6=qDp&
A5qǽ$9YMejG4r'711J72K.fd\VυMƁDMZ4ʔ ;GXCN
5t-Bö/	6:-4*qn1;e)-j@ǒ:PIuE68U{cmrׅܽ_k*pWQ-D=%Lץ]a
X ިOO_rDD5<KU4([THpKKyݠDn)^t\_W3y\DIDᛏJǹ{'|E!vX,T6սPX*z	njY,
r2b UPr~6tG
,{8Dϗj赦kѝ&S^E9i/QQUMAQIG7o./$e`:NXN
6Ai&UPKtf6N  I  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP160K1Curve$1.class[OAv˲bA@QPW.U.11MM,ە6lȃabxELD&~ ?EųHSl:s9g7/??~0iw(%.^ZYCtR210tYQV0dJUMq2RTSuFkɫ[^mhQެOk/mQGZgI2ZbUUl(f1*Y3ksaAn^URTVݠS([yPRBVS˪uVĜlR	bK$5i!kAM4gZ' 	h!N:1~~e6sCptR^nrs!9t>Ԑ#"W
ptb
7.x$\ x$my/%$H AmuC"zыa4чkӇ 轸(n*kYRRQM6`7ee}Vv Cgd	ҶIn7p#G"G2rw~5'>7p-_҆^뇸3KmΝiob+qh/<S<Jy=3]9;Ó6`|FOG@	?#b	<A-2Q"_PԦ8'<FvctE8BDPzv
ЊO{<|ed1c{.LPa<PKR  ?  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160K1Curve.classVkSW~$lV\PZC@HIB\5e	Ѱ{oV{[k;7)m3/(	ęN3\}sΞ??x
ԋ9āDV榅Ȏx3Gil%gjCr*aXPs[p<.v]G}drz9x]

iYU%(1
)r(p,)as^!-m8_e0(/fQ2MUY}BdmDMM'dMӇ)>Yte]Lؕ$*	iDҴS#POsYVY:kctJTM%!V^Y_BMQaʒO7xi&7}_qRl
uyjaJipؐf԰.<d:)ekߵ#hˢ9kXȠjBZB}=D}-Vv>h)ti2#4æ΄MW8M\amC]ꅝnTqM7
kU:)ThV~BdrvE"ϣG  <#ģG3yx"zV^_uqKVlIMVSJ<PXXՁylFFdu:,N&w1M!?_4R }rҵ
܎]/Sq˫g!3q
4'[el"Sv"燜w9%ol&@"XZFk!؍2+pH@)Uj3hcP0xO@%nV+fX
H؅'v!)q%xZF<j'Љ>ffp)cTPb`ҏ81xO^ ^ ^b]bpOhXtY?z1AG;JW1v3JTUEf$P-"aJn>HnT3EV@;fCmbT%L$to`2q3dm|4`]ѢIw7of4^6sA4^nݠ,㎛

ALkC<cETVɲUZvX}V{kޢ
Q#ؕ,rͼȬ厕'm}!qsCwa_^sCYCqA%OC#s$;*M\81V9xp)g^A|<zF{\mŮ6
*-jm;oMWx_+1`mg_+e
yD8z!L;zJ_6gT"Ź]j[8wўݽd7Mw}I^UJ+!-b1|Q~ PKݡQ    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160K1Point.classVYWSW.GUKkHTHMζvvO}че\ˮ>Yj>*Z];}={O
<֓
֑81h=@c!h%#r;r$;FGKa-ɤ2>Ad`0͗rdZɤ=RMeI+gwShtCyr*XI"#)Tpte'S
-gl,NrͰHHL8fe3']2#9>S<i(Hd)Kڙ,1bO:=1sָ|ߖ5DDi-څdRq_vT"Vjsہvw1:!@A-{gc?wR>
Va{Eq"3fڟ(.%(FQLZDg3A@D:}*.U*6xLEU<bVWF>i	.Ni[8 h쪎W^sk&ryݴ0MizLj;4D3jTahVx|&3E5	(ÓUM<ģbD=zM&xDLlchgD?,s:<tE.L؍1]8̐fN#0ia$(C!:Cx{0pa$+2fPG؇!cG^dxej7a&r9ЛMJCvPrj(9蘺)xK?T/=D۶_љuypC@ƚV"sxYIU8/xkltgHFW)9\%xP:`ah{x	XiOj3,i&n,xd
uuV*gP/|QW	?%xPi&Z$L;k,d]քjfP]
/uװ[uBcf{4hMrD-Yb[9zQ+D.S!Z!xBsHms(RDXG۰}Y{64<i`݇A|/!wzHg
y|"$āH&40g=˵ΊɎ|*W3)Tyob<&ɘ,ejMx3Tbh1**TRTt.}@ӑoIYg#xo&Wbק] ;SUt~-C)QVsoW_8s?`_%/	:&tg_uR\b{CYJra ~廦DgU
%2@w:L.(_1(՟/]4;Y∊0݂	nxE4:lDL{seEGgaYPսܶEIrUzN@x
-pA~kr7
6+#Ǎ,n	}RQѐאe|<Ptg'7?x PKy&Y   
  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP160R1Curve$1.classmOPwkQ*u6Ôe&Kx
3$_PլD^5Lo|	&"D?i;{Ϲs{??|0io8w%.Y^CtZ10QQU4CTjMS,uZ
m0O*:[QZmhQlLkU(oQOwZ\gI1$ZrըWgbZ(V)UST+k3ԺiInASҙb:[mPŋBi=(kz1k>kkfrNJe4PUI۳
pE@'cbS?2=	N|tR^nrs!ϻt>|.G|Wp^sJW	$t'*	2KqЊDܒ !Ԃ 
AXD/.!\LD"!BQrYjV(2HjUeu45RRYŕN}XM%H'Ex]G3:toh|Fvǣ;$_7m~Aɮ,9ofxIłb+fYb4&Oɜ,$d9^}7X {sX|L@7@c1Hc
i@ 5/.q
j_Ic9Bit[^AZ1}m!Fclϑփ	9qL'A'_PK  ?  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160R1Curve.classViWW~$LGTBkh îa`EZ#8CL& voj}ߴ~pC89/ 	4's{_kX橉xS3aE$BOdu;<VПս
K
ankl	{@KSccSO
M`K) [­
AMMဿsL	 gU<~-f!rX.}!P
p/4t2ʡAo09:$ThoX˨,1"Bb8$GBIe\Q;sk	Iܒ,+t5D$pBQԸ>FF9IM*JHzYR#$61M)E҉RiVDISҨңig3G$L4e (6DTBfhJL#"+@P32ɧZGLxB41L,KHbⱲ:\uI墙2ծD)kk۵%h9ֵq_QE6?A
2RЖsh)h)i'c	%'>Ee{3T8G<%#8bpxvfdpQLLh)=mlЄJ!:GM<jy汇G=<ḥG+N&y*ӰyRR>vxG`'Y.
Owۣ-ݲQ mM&Ery%T{r&mlbrSmʃBY=In1,Sqv3=uEZtcЌS9.\5);w576@<"XYF[^S(G3bPǠA9T2(F^Dl]@՜\[N$㄀<8)APS&1]!B7	ged0@eЋQcn1 `ʍ.w#<&9/q/уi4Vg@>e7bq0&JZtqX}g"ĤN+Y%ldMl']tIQĤZ%J7Յ IUARYD6[jA!ՀS۸4wy9nગ6g=|8׳:/[}7^ޙk^^lA[J1ytfM x*7h;

}ݘ.k1k,˟qTvǉgZK,+O{xEb`3ܸg7w`آl"`Wm4bI\;E=/<g,+.fq2_&O.*c[s/㫮c2tcy޻xV(+W%yP[UG7D}G7:	'6Jɳeom>fR
fط<띴u-̅bڅͺdͷ\16^U[k!-biPK8w"    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160R1Field.classVsUmvlviK>h+myHJEJ*jmtɆRD@

* >?ha33~pFGn-=w=ܛ| Vs ߕJ7č,/JĶ=>r[_H_;I#9bqvO!G5Gn
P]^6*lGȥr-<i^v:ˤt%3i+mwS] F?Utȁ-mrb:e SHб`!adJ`<9r]rL0ST"""3'P2gzL>6IU72hKȺ^3G^!#1xbt$zSLri{*saymg-V*mXYrN)'$O>"eQtacvmقJy0񸙌'y;;rW߽sִ!?Mm3&aP$-O(Kt&>`$Ir^TW觳W3UHWXBO7g'4rAg?Q0r/o0WuW
E,nؓ),UХ2X"c{dlQF^tm۝.p=Ymeˣ	K4432܎

Q5Cְa-
!!Ur]M:p;Qa;C75tBװXVViЁְa;C4˰j،Bè!$U<JqI)gTq#013`0L0XYO0bc8pIO1c8G˦lMY+ox˦72?L'dԣ
pVB\"gnE4z;Ini}Ǭ4җy44WDW/!BH4VsE\8JF͗\gN(ĵ$&ZYf[CLצDxwϢ* 7Ϣٙ^ī7{hP7+ZU""ZHFhm]ZJVHob`(O@d!Z:3Ǵ$"vHΡJdeF\hc
IBxV<	
rV:5d]F"'N˥
ұ]
RJo>JEHtb[痫+^{;"eE|*|o\]f"R-\<JKEKȥ+AǱ:sӬ]S#\LJ[ַ/~22vfU.䙋_fDL!~<_HU4Q:xODReOFtoSP\Q
ujaY-zatjQ1N5)GAr*\
O%he*^Xa+e\/ܰjղ<G4tEoM[{=UFEn'խZ绹Ojqq15EEguә>)pzpӌ`Z~Ǽ.sRw<+ M-o{sl;636r3R&{?=Y#oG9~IʯI'.`R5RbX
$+hiȁW8[5"Ґi(İttu!Vtl5qXH"i`PKF    PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP160R1FieldElement.classU[WWL20ֈ!	Z%ހjZmHat2	6h?@ҧ{V//Z#]{Cf>g}.?؏ϣE[G%]y8&ANt)ȏ571Ia(#kh2m;N$1(A:+aQ8s{La%4q!H4Bx
M/TS#F*$(8HERÞc<H&1M_bjX.uRDI84S^I!,|W3:i

¦'11PF;/3F2R&oYdXNZ <bKhEeÛ,&ZZ9eR<\Tlp=K,B?go	.a:z'\1
ZNU:Yv3CG=$zuc6qน
5KvLߝ}t꧲@nufO|P*KwEp]W:g*:i
,v^8+V]AnO+(أ`}
>Ж|ptNO\_Dג	>vi<l_>'c1K뉕g1XuںbYq%HbpZ]Z(fQP5$vŚؠhx!p1l԰q
)C-xA6a+Nii
Y!aa830pIE/^Qч7	CCaR)踊0*k3~b %Ky-ea3
NS#Ƅ%9J
hQS QCBy̤~Ck./!-*wQ%vG[B9`Cz	thRSA,ѨqdKeU;8WgHi#Eî\ؽpCdP_BkFSe1rw"(6PKT`R9	ڀۨ?x/ѐ{ȍb
vF^WWXZ"?E^Hj=^^^݁z1N^˫:rSkg˟]K]$'KI{6TB8y/fP:]4a-]o]֝
r<FIM=eRYE;uDH6+=VLjG2c)kz,j|l4byf]Kw俰Y1>~ck=
zq|zo*\Wn#n>u2= QfπMqK~\(65o=[:>*ȧK~,PK)q    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160R1Point.classV[wUdKZM

Zj(J˥[Li$MJ2w<Rb]pĽLzJY˵${oϿ|B<PiJ'*H4SLa鸛~8Z;ⓖZ)2
*x|dHKK%VlOZcfw_̦渙Pit[cyJ*IˤmTpbi%Sc
B'Mgt43ȐR'32QfZbpl=S\xLY"],M@he&͞tz0/k̓F6N}[ָb'gesH*$S־	dJE+?Z$sLul;&Q&ti^2~t)EXf:27cQ<]JQ,"Xc̌Dp[mD1,H
4<aG5<a&

6`H% OU唱i+4%m_YkJ4j"\|̼Ӵ0T)z:	v"`FaTdhVn~xm!xa
k"a#:<m}11|Y1<ϰဎ]؍~::qdecc!c31`fxW:{NSdaH1^c80@s<A#:12KZ7Hrf7,P	+ԁ`r$kZuK?Z(&*]Z_ahF-t:3:7mj9P!%:O>TwĦVQMbL431+3^?uqgpq
u]lj1,γq}_C@hx#	NF#	7kF<,4Dx$B$,^NYBVNU%Tnaī՜Q>U<pmls5JD<.S
;f
ve^+jD-M{uوדS%٩[N|'ȷ75$s0.DD疆eɩc:.=q=;ѷ%
4U,
q)R.	7{%,!:83RL?뻃q4tk԰KC׊/4t,|IӶoAsM4OYoYoz>		媣~GhS?
.y "W{
m5#4*BgT_xx㴸+aqqAx)Jn^p_ʐ)Me
ǽ]a	C%{8ǅ嚄et컷×XT1!Ghe@F;8+e !uUM-˥AOF.j;g3+Hp$NJCb~^k
	i>94N#Ex%,JJoN:yBR	Vuj_!)͔PK_O  I  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP160R2Curve$1.classmOPwkQ*u6Ôe&Kx
3$_PլD^5Lo|	&"D?i;{Ϲs{??|0io8w%.Y^CtZ10QQU4CTjMS,uZ
m0O*:[QZmhQlLkU(oQOwZ\gI1$ZrըWgbZ(V)UST+k3ԺiInASҙH^۠*{PbN*}֔bQ	b$5i!]4g' h!N:1~ve.{y΃0ݢR'Cwo|\zw '<M'6pIOUd\#^$/7$%ABAmу^]B>DE\C>YH\U
\]լQdժVij&å볊+hx K%NN	
lgtxh>>R-GwHnh76]?ĝYjs𲓾ns@VhL'(9YXIȾ?s:É;<9o)$n3B.ƾcǨҀA7j_K
\96 ";_O#ts!.4db#
 cC؞#st=$ON PK&TUB  ?  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160R2Curve.classV[WW$LT.
(!!Mm`FZq
3L@ժ7C7Uڮշ33AIjVw9s揿~۱ƎR;r:`uGY?Ρ25e(YmzȯHK{TRIjh=f-H#lmm&n
DZZLH_A ācwCy,:7
5"@xxC=kw88wx$488M"V{OM'<jVf%1dϤMxdErj,'eE#/Y)JԑJd%9GZ$	rJ)UCLrI(ijT5=FK"SE(5F'$JrLTtv8"gg1YR䘖NJ4,Od"hrB(BBbsFqPJCf<22qshO.+NӢ6ⱶ.\!Uhe8lG3djx.0ҤddUiЦ+RlFS'=dffK/CG-_X@SDK3Q#&PZ27~,3Ӣ2Nr(3:Ac6E0UԔ2M*tbMYi1)YxTȣ.yxx4hǣGvJa;Ny}
U6)QIxyV]rկV7f(l6&
S˸\y71iO6t
@D9:]In5Syճ]uGZvcЌ3y-\5);7w5R76@2x`P)`=	(cPˠA*	aP
܈	lE18<8,Iet☀\8.A	P'2#@/dIfb0@a:ЏqNtcA=8D1xI3^t ^p9YDA։+i5DWQv
їTTQt(%f22}4Q:/G(t]RVT31W

vu!@cRUgԖ%FPL=&.]"nsawZfYx>9c2E9w;^s
@`3f
ʍŵ/7>Q[GWʭ,U}ޢ
GgYkr3?N<[nzy[LmP	Ʊx<>n&e#)>z54^Hc&ĵR+]"xd7ӱorν
'MEv>ai-~
+͝jo
Kx_/1Xw_ā6/IYX;^!>$ğt8taLj/[
IE*|+`O㮳^p01fIzߦx.XMv*n
3|cuPKUu    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160R2Field.classUms~V+{Wb`b
FA06;8ZZl"
p$omIS7-4Li23$sv+CL:{s{] oO
<(Щ&~Cڻ봂hZ.J''Wԧ=S̓|Nx
>O< !!s7';p#H
Pޟ+;A2 2yO@YQ"'d4j4!fS%PEwlPM{nΝx>O"\:+ۖk' זPa~qyS]FYn
NDN"+Teb.Zg9Ztz*vZ.KIS/-ERZmłcN`9S%NjFlvP2]ӥr>܊堟nBqA/c[Ṯ/CK]QT̕Nn)gUKfr2v.VҢ$!O<ϩvGvSٺa?T?f1$V?LnrI9(eF|}!,κåKP&qoo\yjik_α>lxYN(N-[u?BB歮y'ohk5p\'WIo6vȻ[!J`
@/b>#pqXg
dNb`TZ
`+)=h3Lah7:'<(Ɲ&H8(eSIvgp6Y,ŹY|%aA PXpJW*pQ8>ysxFsW$ek_x7h)XT\qO[Ū']uaʚ+lēLhfNin<w(Gpݷ߾f?l*WUڔ^zc1rݑLkx}&Z_665l6yoN_5DElWH6E*!;d=i3&|f/etwi߭;UM#\UՓ~xpSr,WkO7N4!:
dyu:ېF.0Cà2i	j{R^={+ؘY^?jll%Ͼ,O>7VS19]Ww鯢5->^ڟ-O	#/d{,WW|Wƒ5b7[rc#ן}u0L}z^|m,_V
ro6I;<f>L_K)UᗪuVoo&
Of$LEui˷lxrb򆅵x2(.)Wk 7="~)եO}QoL?
#\:JN)Y0٤N:TkԚcS`8@Ci6o<8yqM'^?80&mHq2 ux2xV&fiI;-i<Q3xU~"k&Id;0#]o/H7[ڬ>׽gw3j۝L||)2>̟^0L&*TTo {DϘ@L^45M7~m—~Qkuq7PK`  )  PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP160R2FieldElement.classU[WWL20`D@jEkk$Z%"
)Դ-0:AK/Z{о}$KjH1謬oϷg}N_Ɨ2h- x1bkLD~x&xb<g'_Y[f?yD}m*w,6
(~4xh4I
oH$5Bx6h	47Ez\cLcIP4=,xd4gI7342f*Zr,m(
$!di(OTC=K~C~aPF{zb&oYFQzbd^\̲-'to*:T<sښx6bf\,c(ds~$s_9zȩPqr)㒺Z}ZfHA(ϴ2!?m 9cQ\hWJSĥpҲ2Dv+~4z}|W^}*խI[dYw%tIHJHKxVBF	%@->XOhK>jsWw[kk7]\K|#ty|i5Quh
z+j&ە#M7V	+hŋ
T
1fhAXX
# LVE4+x!pIlQq1`'^Vgt✂,G0H=0c8W.10p5^Cf&
SVF^gxMC?ފa WV?cmprݼaO/\=OAQR@ՏH5%;D"J.aV}_I =-%LԪxg_q4<$$*~p"$sij'gYZCVVIN[cz+5FWM3BU|(~
Ibh09Pt/%`ZV&.On&%3+imŀI9kh#G"U;M-x	}*昮"]DیZ]5tേy̧븦6:!Z3ҟ_S{.b$nA8yFqC4
ZzyӪHUX*Fpp*fIeeA
gQ%6JiJfUfLdlT([IeeA15Qcl%5mTcijcVQxQQ%VT%`	Ʃ`_1:M1޾-\hUJӍn\ĿMIЍf!9pZig>JwaqQNw/%vawտXP?^[kS FO9?k${)OPKF    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP160R2Point.classV[wUdKڞ( J

Zj(J˥[LHdBE"ދ<Rb]pĽLzJY˵${oϿrB2PiN'Z*HPLa鸛~8Z;ⓖZ)2
*x|am$_ʥΦE+kM$63׻/cf}YsY{d:M<%K̤eR6XTKT8M1Oڴq1|!42DLF̳0'[3C9>S<aHD)KZ,1e'˚=9sLUéoWldSbl)Zd7Th'ڊdm[bt>;x	{ZwAT佗L3]Jb{mc{;8LXEbOfK#rHx43&T3d۟-QL9C?R@ŹCF
hؤQ
iجYC=R	D<ӳyUv9eluڊ͉D|֚MȾ5f"s?/34m9j`;UxhbaC*Z2*ۀh6k 86|
<0z6Z5P^zOCS>]HЍgp@.dtF?ØNd0F:`؃C'^bxUNbg8ӔFRiN2L0O`ሎ'ac/2LңVͧ0Y&E>TJ;y 99ɚVtҏ
U.Fc[Ư?pn BÛ6GE5:b(V@'tH;bS+If1EFt&D:HmڸJ3l8ˆv6k>~! YQ#ב5t
#y"<O}aIy\}l{l/TNz*7װ[jΨS*ŶZQ%BfE|3;ڋ:kj5u:lɩq-W'hitQ_9|""ąsKCl1˾G4r't'01J72K.fd\T.KMrƁxU peF_y}w0n
viZ񅆎/	6v-4*vn6;U)-k-@ǒ>:!\qb m1%rà1x[9{^]SYFDJ虸 8-n8.=(
Cx qGl^z Wܮy|!)p82)klAGSAq/per"4{v=^9qa&a~o>"EULEZx`2P}Qo+zJ wH]+hwSriЄڎ9̊39I*XB@ך¯EgvO&N{Nd"]FEE%7Gy|'<~ӂty!)$+vźl5]P|d~ϯjfZPK7O  I  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP192K1Curve$1.class[O@,,
*H%&f$JnK">@?Ep3̜sf~_}A%ZNҀWfP.e!ɀ	vW&VUGgh󝼪i>jYK+Oyu~p*C?R'Eݙ.S`xe3VRVu1=oMCOWTֵy۩S]ڊXMMfzg+U*|QWaRe#eX(zEwڪW* AR&VUM"Da
"hD9Ϯ,OSzR=XS^,uPK's=烜BSr\8
_@1	$\(AM	<jt=NB
:$ᖄHU
%6.D툅pQz/LͰ첹8;%kA*^m6ÕiGՖT_:t:a	.!@ =KvD ٦X|Xұ2]-
GH;"~mXC1j񲗾)lp̉Зg)JȜ,ΥdDx.,MoMNyK$wqۃ "DПO43Fz.
FFB/hJ#wAHG4Eh<M8)Mp=H6BKf?i|9&Gm{0@=Gw$AB@ċ7PK  D  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP192K1Curve.classVkSW~\6E.
(!JQ@Ht5lqY
Z3P?xCv:oGRݍbH:i&ss_ q$p%VHuAiu+J&]VcE[cͱHӶXk[Kkk綖h{{7R D4ryPg,&F*ҰCCn2y}XԡnzVSٴ2jx\ªFbi53ͨfupؔ|@O,N Ȋfmcc#u
i+j)kJFH֘TIEK7H1E׍O'I!Pe(N%"+cjBU~2;qHΐqc엧lUGԄej5tJ,51Zv^6|zuЌG#N@n36;hЇx#WDLK,|4GQj;M %c6/qMvm^dMKTMx[
TT/;ma]E͐½ELdt&jlofxz)冬Jʽ᭺'!F
˴7hZ6-f'LV%g=+yx(Qϣ[yy4h	-<Ht
,]Tn*8Z*ăuUܗ`DopmH֠3΢}arw8`ޤLnM]#CN`a;KNT@{YL}%\?t#-:hƩ<q.Ȕ_λ76 N<\Fk ؉Rq@
+T3cʠEfDlFJQ/"" b="v0;"b1$E<@14g0\n2+i'da0@c#AJ@LSb8-`/e@S^؏igk1 r^d^0IG7BW幇v3J4ՈddT-<a9D^T1EVn36Ik3H]*W%D$TzBqnѓq,>rP:OH[Y=Bfp6tuSN07yHY|pfpel5?ڶ
{sng[TN5jq[z)mZZy[W\mPAj07'gU7G!'{,o yTIZz]ҖY|g]J7_&.0ϓb*Ք|c?>OW5~m=P~C&T*sz߿,pyKj|-QtxtqB'!nbl3nT({oL+\ms?[*,X98+w)@6f\Ǜ7p$=lx)q/31D񍷘΢PK|h    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP192K1Field.classUse?dtn-TMBcRlh
6Y@d#]Pu| ь⓾/>8Joۀcfn%">/{!!Kݩ$ڇ%R%R!4'nu@_E($$ǨڕVa96']91a+	vFp8gJg8yFOF;ZYwiP"-{pAtv~a>LBoV@L1LoғfzgRBסt4lS3fkB~/;oY	ʤۍMJCȺqd. /a#3Dj|bqT4ӥB֞NdaX3šIÒ(vle5sOrP&i7۲f/vv_nA͉)eNT2}ӶYhu0ϗt("ĔaO&t"]*)N\-Y3M6*(?o7I?*7%^dRpKvʧfF~AGHF+Nfwۛ,Tb{>	UG؎K0R`*dG
BjNtF>M,~2Q;ZTZj*mPvzUSi#j&fC$<?o]oq/98].i@4jbXpэha4T(paRF+IӨfq֨j4CBFa5BumeS=+/6mmP51_M@b04LaROi.0Y={rCa~Cv3L0L1dxQg8p0Gxfzc*چewcߐ13kEH9b]ꮍx$v@^rվb!8`_3!T|{};+x4xw?tf@$_a>ؖ{lCb.]|o1¸^ńm#ezs?@7G/镫=Haչz/2ǜcWFM"`̕Kw*-Ӈz
X]h$AKT<6"*w(NQ-az|<E@LVNMS=x88z)ZYYrQO
ƎG|_C<_aI$uyMktG@/өت2}
}ynq\'nR^kܛeiNΡ[sWoAH]i}ƿgrLeٟ.^R
f<7ؙ/!$EE2ۋ]3KQ;AUBz(<l|P-3uu& :.V-ZZt<V:WV1#bDH
20=r=Ĕ7E-StREnK=Liг~`V7*V0^}K'd	g{S{VFtR|#?M*Ԩߗ
Q}/i]cW"'@C ¢a3ULqD

)~{ǙNO/PKǣ|  <  PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP192K1FieldElement.classTiWg~L2I0X,[]".BMEBmnC2f&t ~jn©tM=NH#pҜ>s]_WAD _/e'Ѿ)r٩ASٚ䁩l$&.2F!Us{dpc! \:.8~܁a]3n' `j4hf!+gUK/ giC9Jym̱C>ߤї6WV
bz!k:ZAh9:DGբsLA՞ɔ8O7)P(ίnݞ,hUu^MYHe
C+ƀU(5Zi^2t̤V,
G5)I}%.bNCiPƭp8
*{mRsfA픊)hA*{֏Qա ;H
XHga`٩fH}
t,T%m<A@|[(;"Py(k=瑱{uW(KB$$p@A	t'tFGWs]Go pP/|3O
^Jt~6o47x;?4b<6,n<сe(e2fh_3B2!,#ʰ,eEnx!pa؆816"c؎2zpAFC`a<S8.30p- ePry+#LIx	o26Pc1kYԬڶF7eQsΫ괡Q#2TD6d;!zG	QH$b˘C_%JQ&&|˘-_?F&h^n,9wly\KeU4htLO0Wp{SHqkUqico@[ǏN?y%ރ)|mM{ivoPr9Z6	>;?yȐIGL$jn\v{IQ#n
X_#?$Oo$RvsԓDlĦQ#o˟TX/qU.%y+~}ܺ쁻8Zc>GILƓϴ(
+bmE~E+~l+t@GJ}DTZREbd&*R$KL*J RJDT`:"JDTPY	Gڕf6+Ҝ9ҡ+W<Gln&-Zn"SGf	j7Ŀ.XE`lp<FmtOX<-Rd[Ԅ{W<"QA⽵erSbk!IZm}bϖK%_dпPK-{0    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP192K1Point.classVSU-ylvնЖAcE,lJ[oE_p:~ssw˖gd=9=߿`?~PjlUnl*6FǢMXFH☜xu9JѤdVe{;uDAo;Ngx,g̖5b[z{f*ћ2ʹuB%hƚΐx֌Y&)mEs&L+RP2iZɴy'&kF4=hzü@iV0cyd<z2fINydnR|6 3)bDb8#cI";8'=<
fL	ߋ=7x>ge[r$֎c2oN;lͶ~,:y|dD>N}禒əI+G|,ˌ\~\Ձ55I5dSy)KPt1P[C*T<{T4hRR{!+nD}ܞ-i67Fdxoֶn~mm"MN@9`۠Op uP3`(E2f셛c/ST3fxxa'CCD C
`P'
TcݞbxZC'1:bJ!2L Cdd8#ôb8000	AS:6cg3$^eH1#f8q</0HMc}ud3h:mf{R\[I`~fc)?}X{*ᦇp%+?:3Q=^6Ǎ
:Ph,%>]TaS(:@	/qB(ű+ctxƈ,xH8ς6հkX-㫈/#~! E^,G\G:R"<^C0"B(][Ok$J1'X>vY,G^vU.<T\!T3+أNk#pmewA@+E(˸LaiTyB	!5/"@WJQE۰}Y5{6"54)5<fZ|+j!7ZPc
tޏby${zYrSKr^#ّwhߔJRu̒Y'sUo}F\n(R,KlAU_|mLDEUtn@E
tl'+hmD
6BpG_(cNdw%8̹]w*ws|T^'
Ց}|9?`O%h+	qWh2>\b:U\r_zr7M&C4dtΞUic|ɀT-tոRxn_{e#,pJ&0Jåme7er9F.
]C(BdaSrshVŵp>-TQ٠6Zn"l7@6q+^
eGC^2\E<҆qAHNc|PK5   
  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP192R1Curve$1.classNARnX#&)I˲҆etnLD&>>Ϣ]$B3̜sf~g a+=Ee9\
#e>d`4"M
ǉg2
Cs
kzɘўc\]}-SvrѴ~8!.Ly/c
Y+K]渦hnI5tтV4-ڮ;cSlZYų*-b4VܝhR	$5iqӰHsEDE4&QDcfHS??	N]JtRBhbC[:KQ<"WWIh :D	2nJPqj!$DpGx-b^A+u%#hG"A^jM)[K[e90\q5}y\C'Jp4d	ҷIoNmJ"h߅H"C;x?ڂZ{Txa	/i+6q/ۘ&	(QaIY||Z^lN^|-7djw|a,"bLDD3c?0H#URXT(CbMI?&(ɛ)hA )~q{7&%w9&0H=Gw$!"@̏7PKꙷA  D  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP192R1Curve.classViWW~$L,
(օ,D $$dQֈahdbV[C?n==3HzNOsrϽ>޹Ͽ
@ ?رƎR;`q5t<j"pC+6b6P*cguoK#6ol;C~F#H$ZB}J*Im/M۬x9~`W$Fix(51ap?B*_?Fccqw{sC၁.21QCjz3fiV3ZJLڄG<p4)F#)yRVIŉ$əL륎y$ʸ6AF)*r8I>I%MMӂHԩYRSJˢFZ	9.ɽz:;uHI03¨,r\K'%jPr<hL^qY'5Ԍ)clȧZ
x4ld6fӞ\WEC>lce}ªDEp؜f(J}HFK)W]sRlFS'=eff
!Xsh*C85br %%SYa{38C<-*$rrox˦4F:RZFߠIC|64+?-9;kd*y4c'/?fxhF>l)o(ͩ2
[2Deγ20|]
ªq=>[LMfdYa*wE+o&&7iiDSGİ$]0ɍcFt* z2ӀkH+nq&8K˸ WMdN/]~?-M(4A412ƠZX'
(MfCp
؆Cv40(qD;A)L2Pa]ba0D7:sw؏,sN1 r?^bH3:q t%|Xtq(Yzab")1SDthMl!tIYQĤZ-*QB'IUARYJ6;jB1Հ0܋O9n_ᒛ]	keh/ur+:09w;^su@`#J/'1{TQY'VۡUXZ+EtYc;cYkf~x´d,&
ݍc}y|~͌+FLzR=z56^wI&ĵR)r)'qd5ñoҒyNA	/vWuWqcn޴تby;,b]WcזEΣGBQmYi0Hϖ2؝=2;ݡ+c.3!,$(mnWKXd7
-S&.^7_fiŷVNPK~4Y    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP192R1Field.classVQwծvW^;Lm!!bWX1ipL u]pt--,i(RڤmZRӔ>49NO}/[O_~ZKԲ;wg曹w>}"2HL^HJ^HN,\aaf7<iɓUSi?@Ȏ6\M^g m=;C	&bN!@`#,sEǺ_paY)ziN](Bȕ0
2co~ɿf+\ SiخGN>t6]\)ΊSEҪ]:I-m1CJrvʩ"q>ggJvy%[>a1=9zgN˅jvYRuKrh+z	F
:B5EOo@Y9XٹNNMJfR/v
2kq|V85jnlcGN	{:h}>
|L#![,eXI5 fV~yO@Vݗ*EhճDQW|vV_y}H; Qg*fnu4EhyG_G,(4F(+B
Mbu^ݽeo	YG#7NiN	^tz":"I'!CTi$d2<p!ENätab:Iuzu"ut!EuaGТN1:N'N1,i4GtFôİPf8˰	:<}50ypaaѫ-
UPg8pAYU
8U5.v.ڬ}v^.94PYOq="t@- p91_k!lO=(j!!a{$qĴ
zwjԝ.6@s]-PȧD$Cy0τ{L?cT)C٥ti.oЛ0"lG
"L S㓆lZ
z@Z~VpC^8<#%mB ŢF%Sxv	Mb.Sܡ.$&=5}wh[V'Q S:dgzN$iqR<0Qנ6y="tyPrmrP*($A w\F~~̴4{P7?Z,{e]aµ֞QS7߻G=ؑW <QosFfOt%-Z!7ЯoF:hgp4:9W?זȭwx4tj4_LC
D4bE=θq#6tN}#yI`%Ak*;23qL0x6&)xD)Djcm4jl뙰^lsq,c44W	g+y6~C$m
640柀c=dp+,j,;AA!Vmg-1y3D*$'=&PeE[]m._<m}@YI\3ʧ=Cߠ[i_o8Cn^oy~]KF:|po[cܬد' ~5R͋ûnO
m9Y]-H3׋\?i2n,~lн3o;&GT?3-4[M0*up+pՠBU4mHK~Oo<*JO
A!#QI.:%EPcT0W12;lm`E/6=l%KTjKPKǌJ  o  PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP192R1FieldElement.classT{Um.4,Ij ml%Zʥmm9M)-X/ }|I_7O>o/>7ylBi/933g?8B+ެ]N-bm0>SlfIfB,UYDTՆNjnN?:	GnVHK4.sp`DF^yϚΨ0Z8ZbDC%/R^;9z>1G;1WV
κdCz!k: ,3B{Z
qmC3=)q@nΓ/nm=%,heu^MYHg
CTc*t41%SBK*L1Pl8HLr+YtT6EMCT݄θK8NX̮夕mTL$6wwgkkWcCv<D);,uY ,;}Z,Pl`4ͦ'`Q=0Fն968wPm"QޅؼjEz>vdZPF^	}2_e<%{UOH芏>x:gs6fnS-QXFgm_?4d\=_7ya@N<`
2b",CXAa760YQp`Rva(H2ey;8 
\;2gz"E1*CAc3\b(00a
:ƳdxUC1a.K7~Տ5MaeնMqGծQg'Ԝ!J
Q$vA~L1+O=_`c[L}OF+%`~C|	FT^,ѪpDzK2XAe%:q:iH0+1ƸQc3zlW^Kȁ//2cuz 16{W3>F7;<sV\qjT3|FWdhIU}d&S+x=^ۺk`V!x-5{{y^b*kj[]k5כOI_l?]D 3u7 Lˍ&,I7b\J*ڗ"\Is5#C$h5Z-
EOܺMѓ֟l7C3_X~2(N{W9Bv[L|``92w/s{Φ}$hC$ﭿ]Dd˝H[xt+lST+pC6ڟ:H~hPKT  8  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP192R1Point.classV[wUd2ɥZJ+ТP[r\JɔFҤ$n*"E[Q|_ZK.9>IoB)k;{}͙o؂xZZ)P[Z
|-da~6V9,o/[QDti99⾮l>kRPĆG
|l:UsVxk=}Y+YVI2JF`
(Yhl{ƦZ)2J)ݣټuP(fF܈"=θ (y2Wk ot gKǬ"/hB;;#Fbdf_:.od2ַa+|B)Qwb*mM(';].مVSgM>hlB}P1u}S&ڏ)ibXv>4'kQ:YNQ*"cE̎[DڧAmL1HUJL
5<YãӰACV
1{0h}eYv%e|yڒm-Dk?kEN/ȹb"s?/34m=lb3L5x&[4DLT3cb#T |LLDqMa&B0L<0ZvUc=&
aj<m&`BOó:эg˰vd
@?q`121$0ΐ7G13
ë)=pؠ)3021`g9vaᐁ'A#/2L£V)d0UɥJ%>TJ;/51YVtӏ
U.mgƯp>p.ct3:7Z5P!%6O>TwġVQMO4Xgc>k?Ej*ϰ%,>*y:ic?,JLЦP44:὎B",|DSY\H⢘c7g9euz9UP"~frF$G.Պͅ։uDeD7"PID١YiST*Q'V4<^WϙD95zE-w.|Ml!	!BPM\84q/IN=sVpٷ-	Í-uoR̒(saz;<q ĂjBM3bJ_#[C|aܗz[8D2E5VJHc:PIuE68U{cmrׅܽ_k*pWQ-D=%Lץ]a
X ިOO_rDDŗ@}zE|U鬀
${i;/İa-q܋q&U;|Q8/"$®"ԕF;8*K QPv7,MQ91*xV9	?ZrJ#R=@5[jbSNA9i"ȉ4RcҨÛ7ωLVlXVE'{~P4PKiO  K  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP224K1Curve$1.classTOPݭۅQq(Ea(CۜC>bb,a!1@*[VvyhxA0!_iK,7s=ιG YL3x#ѢCHt6Ruc[jNRdVbiWԊVRk3|@Yպ#_լRu
J!i4VYWi\Sj(U.sb4-&$4~&7=}P80qUM/tu=lsERVS=kuj-Yv#q<G/1s:t'GǁHm\,Ehs;@yh۱1} .Be>xDtkK\!"܉Flr&# l. b\B~yLB]
Z_լQfij&Ùk:9c6B8t8$YWpax !܃K!G
Rr{co!>2w!9% ^;,9oN|㾃͜ߛd$$H|9)m'~|zm	b>n: ZCB12
}}Fz9;JW%<|8pux0ATJ` r,PK~<  s  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP224K1Curve.classVkSW~$lV\PZC@C(/B5`˲h[kC
aJLK{vj"Ls.s9g㯟~ЊppDrpDV
}P7vDVzܿ`O8%nh
͡`{[G;m)SjMNvE!H`KKp("Ãqw{{"Бp@~E,~PLӓ-31J`B2)%=I+jtqؒ|PK,NdYd)?!=FRFLQ8崦*>P~6&ɆvMPHQjJXǕ44Tv4&ceMQEFdjDw*)TȋT3x,/1eɧZ,x,ld7vӝZW$K>\ce}1$pؘf0J}h$cdti~׶-9)r6chUl6;e¡AKV$h4br|%kEe{S)g`]K6ܪޚ;{i2x-ըd''5Ș4ydf姤tV#gg)+rxȣ6yx4hVOR$mu:
|@ZsssM,iIMV]
Cݔ!WX5yl&Fdu:,N&wqM1?4хR !1,J+Lr+v3KܛWBf7iA3NgqWL٩+/)|c3q.e](
2X͠A6U8$`-GP!`+TH@	dbp؈8
hS:<฀MxN0c=1 $S&4bP$cAQbeȧ~<08륱"E/yA֋~L-Qa(q%R&[hUܐSuH)MaRe@;fMmdT%Lo/79|>K~}6>~%uhᄳsx{d9k^7oP1M%ܸ &5."*hڪL;̾
UU9oQ%]רa{l8glzd
ʓ6޺jh؄*R, hgdSRyPbD%6tR)ؤmsb1-Yp\[hހa|<y<^WƏvmŎ6]-mbUU<zw~_5-iY;$ȣB{QmYi3HO3nk0l`Ek&7Ks+	~n͛8{6
LmWCZ("顳hPKޤ
    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP224K1Field.classU]pU>MIضT$mJ(ZBM6n  EE_T,"T8G^|wg|s|wnwϽ{ι7oxФ|糲맆DrvD``DJkWHf[,
.h/T0*eYX	q@"A,{LfQZ8+
G9JI7ۂW"W:wa<. /aa5 +YO$PT0c,}F;I$@dd3nƓ0mKdң.2[Pu=$8tGxhJ7=C{84*Rֈ2Ik,cn&ңFfFtS@*iY)cHf_>KA	Iع;I*Δ5
eJO!iQlc:g1JԘG93>׳%:[#Q#Vz66ٲzSHe2(R}m:"Yv}xBh߇dTB7ʫF"!ֈ\eG{!=	/&E9=} lC!mʰrAB2:w޴Xh!P2nSDgZPBjTU
=PBV3$n{yi⻤RըTŰa1*ɭr򨴕!*RART%JchJ+IU!b0PJS*m*u1i!땩a**Wi-CTnzgt?"ˏAC~3$F{12i2Y?
!pas3exO}H'i3k馵KOxBuA5y'^"T%{H/ q̫o/5NeQJX	`0zB?Щ?]noAэ1
GtEz-\yd5%Pqf*AՒt8t} c&D~Ȅ"Z1PTuN^wǩD으7oP#-Ўq5VSB<Rv1kP.mQK
}85ʐ\>zJӷwO!_hєpUޚ\50E2;(NAspl,Ti%*Uk>&t?_>zҝЖ'MrK N>ѶP.O֡6/O;nr4ۚE//nvξ>29}A!wȣjgdbnʽ#as4G$FE"rX֔<},Tũ/-G t#}<=1׌2lt߉Cy8tMH_m-c:wjp
|`uT

&gRdF0ct%8](>ob+EI΋&9%MU^ -,LN1U.eY qGv>hμ>+".LIǱ`?3g,[gwd^
,Eyr})Wrў~v/§0k%6ڕPsCM>jJMTb&;d;)]l؜,PK9|Tx  D  PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP224K1FieldElement.classVSe?nͦpiVJjH@o)bMz	uIaM
ｉ^;/>iZXg|M_XY6S`h&;}sI~>a/U^=xөW??}laa7D-<da)?:A?]C1RO	ͫ.˛g֤e5
ΎtYuN_??? 5j%[SeVIDgU҈fٴ9~2Su0*&
̥В&)mBK!_cK/(z:f2Z:5մj`OZ5;4бS2"6Q%?ڙ8D8&C3?L(a]ɦQ]Wӊn5kvM&1SeD
/)6Oa,HMN%aj2iͰKW);MTnnɛ4V
Jf.Σ[zB;<hauKpbb LM2Xt`{Iܿ2<tN<^wpkpjJfn0anBjkc9nPx6󰃇<Dx@uRgU{W'>r\M5VuϦK6Kz)~u<-ZlU\?ˍɬzпjJj%$ q	6[A+	!	$h +$x*%*		Zj	6Z		vp@0 A=%#.0ω
{y/$	L4'tA`` bҔ=0B#Hd	&DQ @peOfѩ+π$O*cʈpR ,.]m0*?V*ІzgބW>O:L݄л	8/o`+31b2b<nܒ{ffJ;0ر4<D[U*hck*R&!5L[^Nqh_P4س񑂝gs_ ,eݔN5;q ۊr[\ 
6-h7 &4o܂X"4oAd[FXQspEݫAW5]BTE		mYqUgKWն\gJO(/G{=pD4/#pZ\p:jFcq"\!!sA9^v)=r,);Xg#ieWy"1iA"".YV.b](vYE
"3-"nYĺ1X!"n,+Z"VxdRb=NmGIۍv9YAw
AK]\E2mTeBUxVqo_x|n&#Į[k]/+:E*+*.^<NϿu` E-}Zo#|^S^;18\<9	'x_Y<!c7d8~D%m~PKT)    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP224K1Point.classVSW-ylvp[BDE
m -h
!d#jkԾk/~: SN?g=Wq3e=9=߿`~PjjQnj)6FcͧXŚI⨜xu9JѤdVd{;SuDA	o=MeąD<o֩5j&Z{{Sf:ٓ6̌uB'h֚ʒDΌ[&)mE$
s&M+TP6aZ]㩌y;%j4ݶXfü@iV4cyx<z*jIOdxT~QB6 RibbW291{3|߮-)DEi[xVvWvSy@[۾c{d0
:h
oC睶(iXuDșBg{ۨ.qє'Fl!cF0&̙Pj$ǚIM
(Waة!*V]*T4+عŐ@7>nOcӦ
N[ba2Dm7kKf6ud2܏[ͧaOeP'؏z(1Qb.fDeP
<ȰG
T@A0`Ójc1=ݞbxZC'bct`с~$0pFGi)0paaa%^itڭ!0Ɛ`H1ʐf G0pRx9^`x&gLu< O&a
|cI҆#-گF5< :3{7*pC+|Dߏ鼤*ZDG~b|0Od>s$Ñ(\'/|Ƴ4FDaCysF\o	_E%|3.P:22!x
J3\[OkAIeKk,{Wd,ϡr7n*D+Q5lĲ(sUB%\0B!9xB}H-SբJT6l_#xVÞh-M*D-OjXt4ߊZzHMXt"B8pĞ^ԑ\WHv;7%ҫ}=aKl|E[va6pA!D">t5vS(SqXE*:7|}C|2ٓeڂ6na:}!R#nQò؏;EGI}ܮ N9>*qUx>Yc>ΜN'aF58
Z@K@'uqz4TNKO4ppљS*|l/귅W
cryD_NU!eڹDL;'t}E[ka%p^Qo_N4r-*Zn翅J6
Z9AUؑFȕ:7nՋVپqhKVBZw>.(si?PKʝ!  
  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP224R1Curve$1.classNAvX"P"Re-Ӕ	_Cbe҆et\xAx
7^&"D@gD.!`әsf93~3Fr(ϕa`jT&}N$fYt:Ma)9Eh33m4VW+:Y5lFo4NE͞nPb@w=gV1$bj\5bٺZVJJSS,vv3U6S3:3._0^l墮-kι][SSM$]ԤњGu ivN9BM89Zc?0CٕIpJKKy2ݢC^n|.G|Wp^sJ'^\(&	%qSzOP.	
%!;$DAu !с>Ki.D'A@>LբU55bahXf1\ui\C7N(d	ҵImn m"E*޿t|wp~5/>FZ
.c`ڄ?/bMtXl
PF>0ma4I	pd\Moqи%&b=p@4h?#؟heyB*>	X9$vKI	i6|Hi~Z2	Owl>}@nׇA#"/HD~PK.e  D  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP224R1Curve.classViWW~$L#EBkhBVm,JԊXqL& voi?CpJs_j;3AH霜.s7O{;Qj#,ΆG9X
CqVs(vƇB8XݾWJ%C
<~jbP	>/B~5QO-E}aoYe(}ѕ9pl}vCE">X/:|<^o$9<Q5HR{R&ܲ䎆cI95Mɓurؙ|PM,N%Id=u#IGVƵ	2J)UL;!ci(IUӣ:5K#eQ#JQ	҄U=:,Xj?aTQ95Kd(9W4y\&/¸J$uԌ+c,ȧZx,ld6ͦ=į<-N}؈<rU%-͐q5J}p$I]kMA+RlFS'&dH33^/C{ზ_CSDK3>Q#&PZ2{|Y򴨌ʍm|7"0LvjJMk=A
lFiV~ZLe1rvBE<xlc7=<<<<yxyxyxhF<,7_4lpq7;xgPlX)gw-Bn(l6&rq;.ZObrӘm*J9:In7\Iʫg!3;pЭƠg5f"Sv:9Z'6@"X]F[Q&)T	؀C1hbΠjT` 6*@M6AG<i8&`'h` 8j"Q2$0H1d0PKЋ1D0 `Ɓ.s g< Y/8p ;ЃY4Vc@>%fu JZ>9ʮ!zIENSb&#g}B3q4\w%eE
jD(7Յ IUARYJ6[jF1Հ8w]tq<>e5#rw^ur:_79\p9^u
@`Mk_D<>38<d졲?*zrMo_-pϸVZTnǈgX+L+O;xId1	UnJ;8ϮID
:]&i$UV*{_y'L36.q4_"O%T+'l?;:lbK_]ž-U)o~xRc*^Wyx/6/iY$G70G!'76Jg/_MiE2|[ޕ-S-9;wɘɎuKٺex.ZA&^mJ¥+!bbZBSPK}    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP224R1Field.classVs?]J뵼v@V1)n :׸_kiD`@[Hi~&I/I:KKg	qgw2鴶ssϹwO|wS{O
$.$ffx0SQWZr)TOé)&P.&JwIyJ_j͝b-@f|X.:y3'Ph 򚛾_yH
 =[
`;_Aݛ_gl+56Wm˱ႝ;]MWfʎbWgŁjNcP,ad[\𢟱[U^yXS5;_	VPYvZm~*]*:Nɞ.Vy`_`zYϕ)*ošFEgjݱkT+J_[5xȬYjgSY8?RKӁ/Z2'Y$D=<a_1;RfʟE&UTOE<ky#iiʅT&;|;kխ*O8՗y\_>ReH*(SlMk
B1o	

(Sa2
}QzA1Ƒ][w7V/uW>)hvjǐ`%Ag(425bEF0Hh"M3RTj:4z4^f8B1^.3He`fM=0<KMWtN1,4G_S+tFŰİPf8ǰ	:<}b4
*CQW5pJ'	$+cVZm:7o-lB|sMNq(*Z@rm쾌qx;d
L+?ѷ(WHOfA'Ҷ.ޣtAoou^+o
>AQ2 
1'L=w2UJr~A}<\͕
z}!Cx.8Bޥ+٠7&c5XGcƊ	hhQb[@,?_0DHʁh$7=8,]K]M[hnO芙h'QWS:`)Eݍfp`|38ЕRW>~#$Gt_z}_*胗~R)$AY_yA?;f}wX-wnasOǵw{ȝG (iݜ!=QdHESԕz}Ϳ^ҰB@4{#>ż?[D>MQ¿ptwCWokYCQ5_
l'F]ĸdf,[1C5GG{=/oF-4=yUK:jSʵa_pRn[-A3Ҙ\neWi뾇z]n3P+Yp^S 7HGVϣ	xU']g<v)M1{IAI{Cn?pm };۠}~frؼ)&o&P%|f5)yH$}Lۻǰ}GNPJ[3!ܛ[qCt0qo-Q>OARp{ܙ6i-vK	Vl?6?u[mn.<D^	/aćEg|pTgU juhЭ`Z)P5)&íI檅i*[݈'Dd_"SD7Q
!Э=]H]ܢ$xPnQc!]cn5*[:DKxxd*wg]0QU+^ӿPKG{    PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP224R1FieldElement.classUsZibF؄%8IZ8JRnWD2vHmi7Cڸ
`1;?69gw%\v]=wg 2qJ@(ޝ)GQZ3Gx2qGC53x+y$Rm$!@w66f|y}M>h0knUGxR@`?)MY8Y*s$FOLJdrR'('t*Sm4])9(̬k[K9kzyf^pY\<b3%̛6ME

	^z\2ZTםe6JGhڤ/Nr6y1mq9}ROR>)̼^8l+E2	*y&+ך(p%R*XR2
qfcG`L.g9񉵔㖋igWjDٱ_Hsk߹>9k҇m[~عY^	so\Hgba;[g;d&XRs"  :1Ҥ7$[^zkOg=#ae
BN/XγesŪJ+Q	%pPg%9	I8,ሀ}+uM{ri
iw/[V/l]i}ok5|k<j:/
&߬{ѥ$|Yb8Π"!H,
Gct=P
<p
(ȠUجAN00$S[exm
>vaޞQ0$a*f<8lx9,
EyDq(i_e7g&÷0Fɼ0]1R_TgD1	
i3Jx./K?ߕLdGt7f]x_
&i7QIHhjSol ! ~m-26j7-<-Ih5>^A|5V4-&	͞p`{YhTv@cX[D=+F#[=1ީ3`tĘ,$qbhOM>lf50<0ZF(TLS`SzX;1t !wP}هWӐa6$ck'>OLזПXk˝]Z
TZw5^O&VQݷfVo,Ě+=k__N|
4L#KEU/9捛Q
~v}	aLb
o_TfnߪHEWU$~B~"HxRf>CD G)Zmyo&ǡywTI[ommnLFkIt!w-Z}(w܉4y@VC:Zkjb-^ҒWgB?֧BZ܄)(݁r$񻤊I5BHSiX0
TҪ*j\H$̒@+j8iEg48`}>0C$+K_Rۥ^yF^l/cO0D9bAab}(QQRF&t%r6*%^Wli~L6kd9G)hDU').)KA{vkx$H:j9Gf_DL˫F8q~F?Xd>"w͍v]sP0txl1&~.^^}1PKS28    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP224R1Point.classV[wUd2ɥZJ+ТP[r\JɔFҤ$n*"E[Q|_ZK.9>IoB)k;{}͙o؂xZZ)P[Z
|-da~6V9,o/[QDti99⾮l>kRPĆG
|l:UsVxk=}Y+YVI2JF`
(Yhl{ƦZ)2J)ݣټuP(fF܈"=θ (y2Wk ot gKǬ"/hB;;#Fbdf_:.od2ַa+|B)Qwb*mM(';].مVcM>hlB}P1u}S&ڏ)itQˎڇ&d1J'˩"3J@{hYq^t3ϕ))\IaG44kxTc6hhЪ!`rT=4,ˮ/O[% h}-g(e9WLce敟MliOۤ`+&hbXAj6xLl5)u3<ΰ!DfXΰ
{LԡDA0cXMԣB)axVG:{؎g8n,Q1vb(1a^ax!eм4~4C54.22$^`8pEXxԪ=f2=TćJp^i'&S#9֪?~@UEXm·e.`PgQQ^
7=Ħ	>S8Ԫ#:IxSi&#6LuLbqtHmB%6deG]%OZ3slguW 4&Q'QH5t
3y"2"@}IY\}ll?VOv#*7װCZhP8ŶZ:Q#¢n(FD|3(;:6
{j_%*9h F4Sϱ(_N4EoQ75$30!DT疆8%ɩgj.V;=q=aѷ%UYr1%bz._VobǐG4$XPmBբi_LI1@_q5tk԰]Cג/4l@occBr[6ChZ&(ߢ_J	 )|,AW1)Ѧ~@] *Wy}MwMeaQ*8BgTb@x㴄+Lcq^)KnMY|)	9OWdWQ
QL⺗BAvRǽ踾Jg\÷sN"*.B"J-2H]Ym48#{"T
KhwbqЄm%{<XX)e!}} TF/6_4M*I#ex9(jJN:y|xy!)kvh5=Pt2	J3 PK=JP  K  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP256K1Curve$1.classmOPwkQa{Cbb,fHt-D^=4DhgDE@"\v9soק/ 1e
xyb?d`4s"eue2
UM56)jY+*ϵq\<Qt
{ibWьv8!,jvN-cYʐ2f/TŲu-崦-XvUQ|,Pkm.-r:7}ܛUWE]C*hz)k˚sVbS	b+$5i]f4g;' 	hp]@&:1~ve>wһBtRLhb[:%KQ8"WIhF@
¸%OBICB=nKqW:DtGD+dm;]JvDD>9DŵU1'4lah՜Xf1\)ڊ4xҡi?rZ;`x@^'|6;荵 K E{8?ڂzTUZ
d08AmҟY>oa&G6Rc=g
n?(!|*x1<珦7&yK$w1Bg&  ПO43Fz
FB2_>$vK)⏑	ixbqR.=l]d ѿݑ$ioPK#b  D  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP256K1Curve.classVkSW~$lXW\PZC@TKCHt5lqY
Z3P?xCv:oGRݍbH:i&ss_{?p%p$VH@'$VP)џ;LZK[í<vѮH-knjj́cDvCy"9вm`8z	Uw{Hoo_Ѿ^E,@\7R!=)SlZ54&[!U	E#f1U:8lK>m'sdEQM:HW5JF%kj$kL$Ȋ0ŧSbEQ5!q]??$eȸ1ɓⰪj2
5Xg:%iRɋR-;D_BMIaC>:phƣ' t~	yBv4G<V+k%kam>#S(u!2H8\]A[(YB&U675Nɿ0"fȓ"&QV:R57
3W=MrCֆ1eNVٝ͐ApN̎e4yHLJr&xe<*xxy4h䱉f!M<y£V$NǽHa+󌬥B`kNJ<PPXՁ}ylO:Fd
:,A&wM!?4ҵR !1k&^HܓWBf
,{7iA3N'pDD^ro8q
2XQNX"1XΠA=68(b%GP.b#DTH ZxY/b5""!b#"S"<8&bfJЅ%0 2hġ2H	``R@ų|y1@c-DƋ^AV@/&薚(F49n&z\Il*&,Y9-;Ҕ( j(jP
m]&imK2D1Հu9t'7ϧq1Hx=Yc-qzoO㵠@i
5e!uTP(̍Rr\:s,jՏҶ+^\Uu:rǖ^!7z#V@%TMɆ|vՍQ.e%ɞKlyI$%U^*Ei_ـ
9䩄cQBVi+ٰ?{!~ox}ųl}gyۿa_2X[GWhY$ģ
ϸQYeq3HOsl_=R?VYL~>97:޼s_'a]˴Lpu9U!o%tPKA    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP256K1Field.classUsT_Yv$+J
MB
c1i9rMp)ubmQ
}_)J>p̀~o|c0L!IVB0e~o]?">+SKg$#m{$
F&$R"}}}mT!X=
udqCxN,	q\"Pd	5&ر9y$=iao3ZeXTzl8ݸU'H%
߀o;> oaI&a7 /LaL&Gr0C-	,OM[Vz JAd8X'R=Xs3>۱<L90
NٽP2v
@ƙe
VQ}A35>+Ub`3łuis3F*FM[lq6;1}0V	qh..t_e,:Y$Uő[ۚ2Ra::VA
Tb2WS)\33RTfvߞٴS<@|D&-zH?LN&6SqWJpW޵BrjUuٽhB}@(f+$L&9ٕTHNVEwC%'?*Zk^
(ԫ*
^Ih~tjktjfheh YuZC!:BI)Na3pAi'MTS:]ǰatudjtT&utghlRNA(t#:Wt_ddHit'5CYi4Ajtebǰ!0`3`!P`p5,iCf8Q:7K.٨ڒi;{l]Fp<0bNf-`!zUzUH}9@#[.ѯ^M~ZPkzs_{`%z
=pVƿ'JtvV/2D 
\&)>Ș0	&\7j0b|Dss6Q89~D/_UGyz0^j3hDot5"㘗qǖ*1&@X[%:D@sz4ϣtQODTe:zG]5XWerL|:pJa8/-)YnV
,4DۏvHi><r!6ԏQ
J 
S߶Fo
3+ЙgˁJϲ޳ԗnCf1
m*"kϜZTʭ9T[vU^_!QV[u 1PK!Н7O@"RhnV{T1?sz/~pn\*`DbJMe-.(3!򅱮[5G5pZ^6)*c2ct\5TDgE{3 -aZ&錘c|I2
(T㽻Bp]qm/јv?vo^Wy=ݴ⢺T ^}z{dx_l
Dk֌APP/r#PڋX(04VG1X1}IO.FV9 leQee`
yvPcJi44A+1owX2U0o PKksM  
  PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP256K1FieldElement.classU[wUL27l!m"5B*4ҁIRf&EEEĻO,Yۃ&$ҲY]foO?؅/Bh	-'%b'u)ˌ53d8Hf"l,Sѱ_bU|f-`TJGz/-鄄Ȉ=s;LÚPD
U6nF!NSmI
eAg\	ꄑ-N#mf38aN3.Зq[{.\9&OpL'"jƢ}&ug	}fa
#
æ6ӧrɌe9sQp3Yc5	-BjBS,+P(/r[%ǋBv6;eTl2/*L[gs-kYw`AAْInA*ۗaݥ 	\Jڶ>KMܼ(c1sRstشrn;qt]sPiwEt3ӺU2کeN-ˮPZq22CN%cz@Bkl96~Ⱥ:9rK垕omr>	yZ-dE͵~%(4cYq%hlէU֪hEFzUleЌ
UldhF!.GPhP!bv}hTQ	}7bT<c*6ㄊx&4e8xi㌂2L0gr&9CB_T01^bxAgd<qG@wBYh+O)Ǡ{0CԨ>nYZmm21?8h	?aHtw-h̗h6.M~銗Ώp%	KH˴//:,Ѩr2bfeUE5Dz9S8e\+)VjN&Vd7k	.É,[^-8)=|VXq6{NYtu1j
?C<GWi.;H^մFm5(xEj&y{$D]Yp-*EupԽ]+n^_}T{Rު\zb i݄Bt*!3OВJa)BIƀjzU#*؜H-9H0Sh0	AD&G뵐lNSa-mN\0hhq^Sz .؜TTaW)@pASZ07P
ܐhZ-"8"hjKTM%j$a#oO\k,
4runtveJ}O{K25oHD7gTnqï{o]M#"EDCe|trCh=I˿5w{$f[}>W~PKD|    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP256K1Point.classVSSW=eil*V*QHMłT[HL^Dؕ~_qN~L&="tY~,{y{?G[g[D\->oUa!o'fRqY~9<F╒ZeKsLgf
^.<q,Nd`flh@Ȥ3Ƭ5PTBə3#9
	 %7)d1la&3

wj*5NrTe̶xgNq(2ii,㶬'҅Y^>]7c\%7ɜYcZ>Ȏ-o6wl`C4S"wN|"i)#;Y,ha#9Թ{L->)Oy[l?EzT1IyjH,p3PD}`
c$=keΧ9WC"ٔx¯A*R]*T(ع@'NOkۖRִMA;a~Dh;k[d=6tuԢ#:1tRG3-1Pa7:C)`dWt<exa|:Ч#'u3FM=UxW{!!<E2cd8a?qaZC')ej81q	^bx!ђC'hI+gf(800ef8<ti_ξ\=LP?L?dgs#ɌA{CC_(X$Nz5ؽׯzўٌz
haq4wC1p=cJx|$
â:T~TE"Ke̓^
G~<qi5Ә1$y\$\`ME5Xƫ,yVMLcg2
V-N!nW+PIA:y&ٲ 4	,v7Nన	s>1KZݬ9okxx"(zrD=+dvAVhvc=KG	CV|LZ+DhoRԐ
^,uy^.^ǡ1Qc^4rn1e#Y!f5Q k<r᳭oI~h̒l/Ywx68{!c-qQ4|$G«y=[ȣZE*m@j5v|MZ༅?вEHes
?>DRⲎr^:4P1	3q>Tv9ͅW;
=W6W4Л
X(Ԙ&TIјP˱/%pq;_I3Nau!ѭhU9II~(6o%-X3<R>p4-t*XNUe)MDoRûU[>Tɒc7-]yF4v.ϖ6]~GM}vN>85&	&Ӟ뷓뷙^Yad\
oDER/gi~7<uxw(׆-r@xh<@??8PK74  &  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP256R1Curve$1.classmOPwkQ*auH6<,#YS|A*[V{hx}"i;pٽ{ιw_ _~S43*%IUM-+N)Uu='jE}N}Ouɠ`1Kͪ	aYJ02:ϙWIZ2*MlCOUҵ%ˮ]ښeEffku*zQaJe%(;wmUHM6 vDRF1
IxsR Y@41&~Q=+sޭEKQ<iBzo Ἶ NPLBnBm	<|w<NBqG{$DFwmPD#tI":qQds0ReyRfAW*z5k[lU[T=Eч/!@ ]KvX|}=b{HΏe7> nE+0H|IjS!7}!>LB@"$<KRB:ąd(rkdN.OoѷmNyKcpׅuM@@	h?#؟haC?<]%H
"_;hJ%w$A'H΄K,E+|Gh:Kq8)M{'%>i|&G0L=Gw#䉴@؍7PKr8  D  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP256R1Curve.classViWW~$LEBkhik2I0ȢDahdbV[C?n==3H$=<wy{??8Ή"'`s<*V{C;6b`TA1[A_i	"Po	BbnD5DHSK)#'jB\ViJB`8imBmbPlR4M~)V)NmPxD<7XodxCŽp$<}xH)Rca-3֓wBǽ썈ф$	E;8J>%'qpI5?
Ӧ'nE('5U3)䕵QIֵmiXY!"D2$+qiTִ3pE_6sFYQz*!Sh4Mc1UW")x<}1um,Sɡf@Vw:KҔdj܇x"i]R4hLuzNrع=iUIڄ7M͸"ifۜG52¡-֟CKUDKI^I'&+(=**Tڻ_9G,eyJRG	%f6$2
f"RzHЄJ!>oѿjryc7/<xx4hJt?,Ѽ:wU
nyRRǼ<c\]-JwW-f(L6&ryԸ.HbrS6t@Dҵs܌=f3N9ٙU\fs֡>iٍA3NggqL٩kɇ+˒מLqr2
؂bP.`=	(aP͠A
bP
<B8lE>k9x.;pX8ƞЎc2p㸀ZxV@
N@.@c 43&`aL2H3v\9ϻ|..tcy}3 r/^b}H1ȸpSt%-E8.rk^R1UURbRJzuI>#Gu']RvT21U2r]]RT5$,Ed#a	iS8鹉sxϳY\P7<`/9sAnX96<ޝk,^lƀ巌bc~Ç
[TQ]'VnaگٮƼyetYc'X߲383'}"PXr7׭cآl$`W]=u4b*H\;ՂE5/y',z+6./eD
>Q]wjw _W_޺vg=Q?/s?c<Օ9||}I*%<x"_t8t`Ȋjd_
>nrwpܹKLNKٺeeMubMv6o
vQ|k/i PKD
  *  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP256R1Field.classVsW?]iW|:kן{e[MD@l7k.kic+TZ%qR0J t4<3uxᡴ5ܽ0g{=X /[
gg,X'af BZAn/	"0M
'>o7;s)zPF)Kl!_{cX͈P^g",yaꪇ:tr'X#
.EaaxyŠL욛}͖r*rLe{O\('3E]uȿꡉp/f^Hy"^\Mϯ\t.*nZ{3$y1WZ2
nƋ
4Wp</.0(Wh8gMTP(T~EwS{՛܊KJZndy#׹vl)5jcMNe~%
{~c&G1/xe,d,Jn_8rX=_Rȣ)/]X*/sJuՕ27D[8ʜ!Egޕ|UmG	ft!ði>tu2O
 oʇt2,耤]3Zp4!J`i-H<C0M0 !nALAC`Y$fsl$ <AnOZp` XpY0
_64|ń3p
EK&M8_'+YKp`` o|D
ABT	\5KH,p'KŊǋY^k_Z+k\ЎOp9hNN_q1.3>Bf|+	n^l8k㠂^'5X7ǺAGށ?dtT&_~C#RT$
^@"J3&^'A4xB5<]1K{X8Y 3T
;ډd~0ԃupF`SBK߅<(y"9;RDJuXy05]tZQf:kڎ40d!G'N<x$ɸiuDdo=r'WvCy{C˱k
c4EcS,R\mV9tAg1'߲MZZ:MK!o_K+Xؕc+IWЌz;l^Y@ŎgYgA52?GW{ooN";DIPo2zgu/V+A;uq1ZwXܗ2L) EaM5JrXB	[,L1mp6۰MiMN۲<m'l3Inq3L݇;WL_J6>.t0vDI>[Bh$HFd-Fv7	c%`dbA,6I"҄p_NM\Ǐ\_1 >޾kL-8O$'omP2%*-Td>8ˣ.z'$Eb;4T#c\Mjp.vasׄ1qqLG4lxyHH14倸zC\Cw_'oP/NwJ/'W:*z/(^s.Oq?}bt4o^	6]!V~1lɏw؃@~XI` z/8&?=='z	N>Pu'2]CaF}a
=HDgpNc'Q?*}dϹfx9
(>1uizd]XCE-È%N$Bl "hD	w\PKW    PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP256R1FieldElement.classU[wUt0@[DH rSҊUd:9I;3)-"*>k|җ>fZ^^|_?\ޓi(sηٗO˯ Ch)	X{SHcTˌvj06#1ɰ'Y͔yD:uT^]Yn+G|v];z$H'${k3+
hYk	Y<3>aqB~BP-4	e!=JPB/dŠk:MkƔ%N,jC瞵n#\6m>	/Z^,iל
9[k8#&ﶜӦYT4EN3\1/,7=	(X=R^sS	勦kL3d"Ur{Υ
EK55EYMtal]2v9nrJzqCbuڅԀ撂Qal["nY|[X|l'uTLS#g3$ש֡+`S>0@vc^{P.VE"sӭSYTw4gv*X CAJNV=
Jh[%4_ccm/n*wmbZ<|t4? KYnR'&ș^WbVL^YOb&dTlb>UlbCBu*VgxXCUqUDFvZVE"*^W؂*dxT/130FFx:CA0e13y0?F/F^fx0`,8
GC.?jƲcj#/W~_L6:~j(9dd8M(ㄟl  9;
?$Ep}`ėa55

uo,K4l;^.qL, D94P'8%\K13W7
;ȁJ<AD:J̢?ފ}Z|",o6ϩyZ0bT )?|Fwi(᭻HwyQZm~ٚH*u'wIDJ֣Z5.wėPݱlToTGu`YزT wGMK!9Nzd0*x)*'=jTVxM˄H!F$REi-}3NOϳDT.MXivNG!OK5
NDhs~)7^og },Ы~ 7wL"y[o$1_:-*+B}uD\Eװ\/f~;@cy\PK;\    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP256R1Point.classVSU-d
I@n-$T,*JڢFK_Z,
	&3~~ę0vtSk=j)q$={?(tvWvvM:S
,R]d3qB*Ng^NѱRrX2h]BPP'K=J!s*.yg6mXC9+ݛfMgpOў+LJaI"TJ/͗tfFAhڲrPXZ],Cκ y<V]x|ܕ\o|ǭ陭iB;7'F*fcE`Metmd6vvcJzɲ]Jg9dg*e8S&q콷_z7{O>ѳ?}䉞GV2l#KuQMG21W%f+2ATLɲr{x0_!r.nСv
whئSCY	t"nttnȮLlL[紻3 ц;ڔ:rnyomewӮ&uFĽ}7D;Mԙh`;2xM1E3~a&B0Lp+C] `C&xD3`°{M0lbC/C0tƣ:>ǳqa@rvP4c&dx4äAd8A[`0d,a8jAfe8S>j[:TR0SUʧen*Qz=7KO-J tQn[җDe%e4K_`PQii'Bcƕ>e|(
?Q!(1>7XIO.|8?ؽ2IX">=,j	^bɿC`_&M CЖn_(G\2,|<DaP&"V-LH匨gWuCaePyh:E}IxlDv5ƁGCA5DD4BeF'sK,ҽh۱`=&B8jLVy	JؼYӣ:/`_-YlmH)&Fbj%rՙ#$ok}]o"ژ%nq&ڰ:_3qhMsu-U/EYm/
I
kؽ
/Ѫ\.GGP/OoRYrpկ0sL꺠S#{LLs='iל0\>~A疄A!5r54
tД펨'JM]>YXF,::]%%^
>zyҦU/qG!֪W4E%H®3U E
NDTLD˹"$nFF^~	16.c
VU5Gp^
(uC]E<4U{'`^3lٗD \ɴcq#+l|uKo~jc9y.c	59@I_C4PKiac    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP384R1Curve$1.classNQtZ"P"=cLLSNHv /LD&>>"⚙HSlڵ֬o?43Yv䂅95]dYu"\U$Ca赃$LѴҊJ6+UiQڬ'UȗѥZcv$UbZu5*KY
UKF)+Qd#knhq¼"/ZuR'&.5Ŭ+=[6s]FL:@W
bFyL v3\S@pd6sڇ4jU*4:}E
=rAy M76pK
")CD+fĉh6"a4wM3Fn"lr7rA.Gq-[UM/WVg\T3p%oHڬdKAZVI'H'Uxs
|g(doPtF>|ۭC_/_EڰxY9Ӝ3{],zy6Wl]δ<.R4F
	/c^׫i#.w׽S.ޞ2e;F\|L@7BcGIx	AJFxtK|Nm"	/?2ɏ$pH&b	IGK&I iGbR{LD1IYPK#  J  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP384R1Curve.classVYwFۑc
!H˒/#0PBZ@QHҽZ{}(l!9sQ_JH2%&朞|ogDX#\ִ{9<TRg?=}TIkxVݢz|[ʡH$N%r8"q9)r{GKp2CN)&d1
P]SHHXSLLd8!vHLFd)S"U'chRx8LuD{+xBd)KHG]\"1d$#K;"btW`"Jg84MʩĞ]I2U	QR0sZp\1ǂTV
9m\֖%0ShU
:8eM5Ȩ]I2@5F4a)Tc%(튤cZFzHqb2#"۸K9f k1e|V梑1ޕM6aT3ue'ij{M6f'9V&[><ceK$C/n8*Gej{%1T0djúyiy׎9)j`U3joA-J}YKY[̡Hc>kl.,168yE69ٕ;c[zogo1GmĄ7Vvfu:SYI%WGqiWhౌG
<6h##C zt[+ӈ͝Sbo;)hf}ts`:WXM2[-ڱQ <kM1O)LM/h+M[y]ڬVJmW&{^gb.*skY=+?+HXqJ8 MdN'/Kb3q~ĩ (Q
x
c:3dЈ]3XX Wca5-iegl>O2cVЂ0Pk cdfpA8Q^0!	|؊>}D>e%zpI-2 r^a30}؁If??s8{5DϨky)
zfLE=ҫGVhbbRm9Q
vu!AmRbT."	K=jp4 5:ƻ,ur:r)
fxe`%뽁i|tbpxʊ16RYEe㊟-[eշ}uj_歪ϸnZTiǉg[8VqCdq
pYnjnwm_\r_!d^mIۤaHqS)8
xa-vlɼ9TCZa3ovm+CMZ{kxi7{OO7&4>tK娺Izyt8zC"ft"[E
0
k|۶~2HKRZ/g칼Xp+kב[q\io6b]k]8s	<aV𝻆PK*	5    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP384R1Field.classV[WޣHA.dF	G)i%Uk,jSLo4Br68K^d/}hܵZ,_/}ȊC>s4B@i;{os? 8I '] [H&3ê0"ռ*^}0<K:1%=I:
+\k#}'rBNaP[.7?qBemYTDu22
	˳Ky z\4%1܅2f6ݹ5'wϕ|Jj.AJy})ΪS ԬkJ9"=G-T:vhVٕNq^UurJL_&ùduS.%	:-:J]Z(cpT_n71PY幆Kmwvu+rUHZɥs[^wK.8_p8ewط8?lhcjgc$J-v"@9#:Z򌓣յ5lViZ}fWyEjm
GТy!܊Mi|[#o'gРO~
k0|K1
^&3q78?3}78z߀] 0&A69P<p#H!x4AȀYS6
0,0Mp'`JH%CEuAUyaG?&	O	lA!FJFP	^2\xǕo;S.U]^5/Je1W ` 1c4ͼe}wЏo[ Aop39f4(bûSC0>.f?z6N%/$؀/ YEĒ,b5.69o?(oxR/	h@/sn~9هR~)?l<!xUh͢R dtߪ:m@YLٗ%ip;rSxnIKQ}혣],>mOI/vU@w'j|"0vX9<2Ә
yBc?  =OrWwWɳ;cx
$};#B1ZNVx><FQ\cI/Ӹqv|B냣f=(-ELG<Bg|a9%3k>k]Cq_(C	E)=Z;nKkS9]!ƌ:<kLX0Uu	3dna; Lb0d3<mXiY]T7ӰLd!3JE6cGc nC}ĶS95YuިRfcRb`c8%JQ%q[R[)GIؘ.1iQ2P+5PNhlWP֌Mivd!ظfQͨ#2c]$I3]xĄ1Bm-ܡs5ɷ'mT|?b;&RVl{&%'	IK8XB,Mfuڬvk-RxUBx
OaIQt{]яg{Ԏfڿz54!<4dxX끴`~ţ73ӓjQP:x$qdxrߛ׻^*]`7y+%}gK.!{ş[%w_?fB4ݞ䁭 ];X|
4nl
6{
VڎjE(eS=T}Sq:/7K5nQ 0s}Id9ğƾ.`1a \
{c
=HNN!08Zs ICk;JT+eˣys5/1<xKvY7PK:$4-  l  PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP384R1FieldElement.classU[WWL2!xx![ U5-J␌atH`f`Eiޮh_Ծ`oUM]{DVJWXٳg_ Aĳ|і%1.v (i![7]VXγݯ`{4sµ{ƅ-~e鬄
CzcG3t3+wӲdOu|p|Ι ;S,}@kԬ)d!22ƌ%>M_tQ3mZU2r鼣tfre@%C?MK>-yݢv_fsi9rI=f)(%ҤLf,1eQ<IycV.5^(3svLݕToȰ9CkdK8}S&m0ɬPUܹҮ5߱lfӲ9<W߲SY:<勓d{tvq\u|	NaiI$
2<EFbj^q{
*)+xJAJRpX	
+-G%=,۝U=/qJ.	8˗.f#ѕgYu2ٶ7wYek&=vlUTlbW
[AQԪhax!S*+֫8
*"بI$QFU$28*v_q؎*vl-z0b'aЁ^fc(Ѕ1ΐa2r%S!
z8
ë1\`ȇ-@ZPy65֩9Z65:jHhɒiv~S8@"WX}̒ 'G|Kx'LG|	QQУБV{Qd
;VKxSs6T>@<!$x
%
1]­]sipZ<N3|%| 
Eo+?jеX-{Ip|u5ɽOwr7suʉ5b#Ĩ>9
*CCg4ʁ#8x*tBW,/m%֦{ZTѥ<WHs-[E|ެުZ@jqaطB;y"ޠ6'iדbO#2W#rRY#rFBTaGH@
W *Յwx䈿L
//)ĝ(O#
-R*]e_(WSME+"p6Y'鬩{.L@Jm'?CA'iJZq7s~߽o?jz^ *-$,z*DŃ۽AUߦ>^ĕ`_񠱋rDPK0  ~  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP384R1Point.classVWU-ylv!	-ڐPRE>_!,%lﷶJ =~NkwZxI73w~3wܻ_~ItKd3xxM!OLRWq%Tw㍄%=n|1<'L(OL\잙3czpn5;9I	%JF9\:6ϐON67!|vNMR<Y?2hdHI4Y0n++|pWNe3S-N~@>%+kwٲY?H)ϔԿQ68l?\fz*ڹ&Ѱ&tٳ=^Oyj;slv_ީr-3RDݙ.Ms6)G
UE劎{tܫctܯc.I
d'Pw>ٜX]KZ&i7]
mYJtvD7\|̼s븅YhZt@h:`hBnxZ
Bwðbi!p'=w!h
,0dA0lbZc=d	'04&10eb1L2^2Fana80pagxy30<mҔ9<Ëa<0pqY:4XPi+S,BR$4Jofgf'
6- ϟ ],i-җFxgh]īaId*Ǵ>E|>/?E삟Z
g|ΐO~:<GW0;<M2%YV|cOU=YyLJ"B_{}Xx-wtDYD^JGN
s	QI l n5͡y+l^-?ahL s[T y[%Up-J3"bKxW٭䍊ViWsh#Ujj1Pj1&Uq#q5U(-lBqA:压.QF>#fUE|$Z&.TޓRPUgV;%v呒"K"(,mR
X2Dws]5-;_?NnIE|1/2^EDǠ]:vX󃎾5uf~
ufqJ\'6*qӯVolj5Ag,+6J=s+陿O?ŏnū6_D@	>12-AV,x"TZU:?@:䚡%%BB/[^|&ږ7H>FЈpo^B$L.+
DaV+qE%D75qdTSTK&
Z8w_JE&,k\G\
`}t7F4aޢVM[;1xHOלaL=
H啛k׸~zpK[^F4[?KJECқϯ
߼㼜-UWAH)ͷ^oPK<a    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecP521R1Curve$1.class]O`֮0vH"c,3Y[yA*[("^>/@8("\sNO_ c!{ryW{hl7V5MT*EaYU+S}ʲVן=R
69l:WyuVtgE!+cE*+ʲnj/4v]YSkʃe۩йںXkM悮͍
_'0ve(}Mwڊ̨92=nR_\q)@ 	hp]@a`HW沧)FVw*\,u<?yDgc5=ANἪsNx/1A"xD#Z:th-a!Q+hE,6"&_"v@?35òʴ"7M5Tm+N~EJP\B4Az8){O7Յ 8M}PH0ώx?@yW
_Ekڰs)riO3\0^.e>έL(dAb8!O9YXJʡ۳|RdĽ#7vF<	<1eZ';£ o0sRė.^2!'xReOy>Y!M}rэIGig?8@	҇{^#b0-"
PK@  P  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP521R1Curve.classV[{]cIY$vb;m.n#it$Ռf/I)x<3F9	P Ph)\ri<p@#^}fF4b:u.{Yg/>'4Ʀ006sDK.OsQ1EҔ#T)kSny9ȈR&RV̫"DMJJXH|&PBX%3$)1伜K51!b&+J))#JNR9YfJB.dYD.ɥZ>*&TZU-b:+g)-`aw
1)YKjR6+4EI鼖KHL1AdISJ:WPe99QT>NHOS8ՊUq;W8*Վs^VcxB<SдҸztC׽EU+<8z21qH
Q6qNՌ/|4⪢UZ5L9a_K18K7^J9tMWQӚshTmT%fس5J@ök3xiL!NƼYgQ>X<OWɸ3/93aϘeV1ef/ȕs&yL]W8D͒5$%Aj84ÊߜM~9}I4X#D<VK[NV4O;Q
uFJjopO[MK1u^שZ6
/x.oϡq{o7J5nZ,1kE:Qtk^ͫ|3v5dx_o,.5fgŢPTwL_ҫ
sb]]<Fx^q	"$4,<0z#>ƟFz}ӰQyU0[sdZotxG[noa7F4jtY40yP&7#íp;w)h{{uө8Գ&rҊ溠/pDRKrލû%o<8FwQ-gЃ1dpĠ'd;PA[<]'X!񰀟0ⴀa[sCxtFTu(LgPeb`wa#(bAb%/#D~#x `<
D~jaϏB')v
3dYfMIeG7Ώr}. Tۉ^tr]](PTu$,[FZI55<b70>eǨYn:^YƳNnMoocUce<!Fp7&}+xpcKe>pm}n;oG/]؏lE5g<vʓ:^(Y|BYŴOdM^#HI3>RIp~G|VN(1oo~<uQyvg>4i`(d>~=F&{cc.0\[;{?_7dlp Ws':$	<P8zA&PqgvLU96r`1H78܊7a5;o
S6v?	˾]L3?`]Ó]܇~ n<
萺WPKC;kh    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP521R1Field.classVkse~6tl(7IBB6mhV(B)BQ&6nJ)+V#~Dg40 v)ysn/3=L9*!IPXn'IB/k-K7%=3W 9@$ڳN3TWtCɱ,{Q.AB']
+JrI$fO%SȽ oiJ0ܽOB`,@kY,a޶
9JUk
SVUbΞ52m*T-!A.Zf]:QLgK9۱&YgCS)QFT7|dΒRU%N9kfʦ=ɏ_
bfՒ39uܴiJlj#S-!Z.9N%P(}^(wwg+ '*8kIZĶ89ǪIT'3㕺]+5bLT*d
S8=ǻ2q$~j^P9̤;¤ʙap2zR]{V^®гQ*M8+lLZ*3bNqcTZ}:Ur."x*ҢN<IO)/!
Qݘ|foq	
!a=$
#5t#a4dxkx
Pya+5$i8̰-2h``$41d6cḆ`'U<QG1ZbpfUqEg229&8C`1L0̨FLQUԮC昶3j묟ph̙slQ>C5)I>r%cZ
	~D/B[m!H )#{)]:o0'XǷ[ؤPmϱ:AJɵ'[§
)&yD'!e<}q"DaqRB\룈!(GtGTգ
n|C
#0w $(8{	}B~)Z8Bl%HdK+WXKŻzۋǂ൅X_RE/%Ocm"gj}sK
\餞\^MQ<[!V{
UoMR6|nVvtfJ~R9QC?|7<J '-m#.ng^^j;7`OB
rwZ}N&Z)<ϼw`3MGD\캓A7lЍ=Cyqt>.V|jȧ|d\j*dQ1TfƲgY64:$^lttۼs]Z}	=/^~p~uzڄ՞Ie~ԇT{A_PKUdW+bDڈr{R!g}Aǌ7p-68uEnAĜ
>j<cDi=zW=-tjK+LΊΚ.̠102b)PKf@    PK  C:U            ?   org/bouncycastle/math/ec/custom/sec/SecP521R1FieldElement.classU[wU&t0r\4I
E@nml%ږK+Zm29I:3)-^@3⓾o4K⃿Ʌ=J}2;{}?}206qTB0֗%bikex{lTPF7p
ϊUVgU{Fn}
錄	޿w!̜ #l!<e	OpGwg֋f"t[h.ԜЋ91چ|Θ3r4%f˚Zbag,WMpdxk9a\̤0hXs#6B%b8Mi)SifrAX.JQ$tzΤ	ʦkg7hSbtqMQ	=526Gw]Yǵ5)H/;nrlС.guy]NkfjжNꤘ9F*$,7šTLjSr+5pTƖHowN3ˢFB]v{
)+W𴂔=
UDss*{Qn+Lgw-7?=$ac-ΣKo==L6˝lVyX)تɫTt=Ubǰ!V*b5*CeZϢMFS$C C7*2ǋ*%1bUt+Ҙ`.Fp/3cx<C!A4,ΐc3oD<^cxM3a.A>zjƲ65t	N~iL+MjYSP5ҔJRAɒ4nD>E}#H _L܃&GȺcS%OTO(~G|	_F(H+T
zC~MYcǣ|9j"x:G4p8V$
n.+sn8>`_C\*@=3t"FW
]?d|:H'9w>SjYFiiWI4
޽Tr	k7⌯7Ӎz
Xh\BךJN^nk]u;+
cvv<FN4W!':m';P=mwy^qˉO[iJ[+Jt3H_V iPpOट̡Zqo#}"yzXށ|tad犯mE;w78Wj[kSrT'K(R~ASPK
~R   u  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecP521R1Point.classVs[]JW˶,PBȒ!HL|lVm,
@?-Z-1<adϼiz-'3~ߞsv쮿Wiir9
Tn6
AVrAj:ez?E1
FJf^CXRrqҳ'jR8_ݲ3wG%\<^v{/5ᱪ8]%gwʠШ=G2Pt|aQCoژ+;jQpOԪKS65N\j竍/U'Zek	R˄"5WIdj
c}M?V5_p9FS.5niL} gskq.mggS2?E9ptF]hH)0yh#e2}ЛӾ=_9`͡pFo-/G\*@]
199i5wP%tiI֑R*P)dAm>wT{~l7n4p
jaMU?r #23*Ct'rCԮ}%ݪoeGGj%wJ7?K_Ĝv{?#qc66⸇{mz	!lc41!|626fA6eGm$CC?~!Lí`fecx8b8pᴅ;0oN<P`(2pgsÒ,*UwqsO0<iQIZSb5"e
0L1L3<@f?9DH7TD9_S<=2Gk

>@0^￀=!u8::qGdkh&ޠ_5IxGw;DGGY?iRk'Go~*%ja4:ɬNYVFY52&~Z0̚8Kaa4H"n٨}ƄA	s!IrEV
x"av)t]^v sgz%Ktl[JQѽW(uDXYEJ5Xn#*?I-I)z[au9+DBNF-2{=L#>FYߐ
}mcyL"r	IL^͎9S.!!DX?d)~H9Bfм50n;]=d@vŸCJѯ؃m⚯7t5j|٩ԑIw1ϼwLNюFo;B9*(a()UbeJ[\֖Pº.adC@C2 ﬑=E~~YŤܺzep6Y~2̀weY&FExL0\DnnrkQȒE=Ghˑ6?
$ %06򖠛ѫ
ZD+&^S8`:#yum;ػ|=DۚBAO`+0n/!̎Yoǋ_lo|' Pk+sfO/QosmǑ$8?yB\G~:3x~|.>BO"?O
mf'B2Kn.PK"Z  v  PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT113Field.class}UWWJ&C2$~0:F(X@ZR@C 6$5F]t㦋veNiWt?eiKأ
{߻ݏϏ?a 784Cjf?434EDL{F$x/r\¹|1_`ّq&:VWjml	V}l͕mj n ˾eWFDʥͩtjeW'aֲe+'ͭlPoxg.l׬2҄|]hKfu2
Vqݘ.uPu/Rn3W9ڿ韥IJ-RyX)ՊzΪTiU7;gjjiӨ \st]{uϠۺ	6gɉ]wK+,Q6UExu@;#ÞV[ՊZw	<	2x`vJxϱ+"BR#"-akn|샃o\AF2'qXp Dށ$b$""2"qA'$&`UH̑'!I,Hp'1-J0	H\&q,biuTTbUClZ+]f .``õFюvC%ut[=?P? ΰXԱN&is|Gz=kM0t#DH^>@)dt
%jG=:lht!X.zR5a{GG:݄YMo7ѯlGTSYj#"|ȣ!7E8	0K,
g_A'8w|Kr?a[(7p
aÚWo] ):WNw}7e}.ح4|JQ*y̧:qU(a{&3&`R͠ʩA%ZGq8&


*в.O"[UʩZ	UrTI	թ*;~5Eh	k}mc2A9oP)nv2xe<$W0&ܦTPO`D^XI4GfPg|TDl=_;~}!Q:11'>9Eݾo@I/ۓ_Ah|} O߹oGxڏw$LQ2PyE;06)|L_3DtZL	+9Nb\fq<j(..Njȉ"9d%1mѸ֍u.ACv1djTۄ SN#4nE'K@kxr\_bQԿj\2-WhvHDMvP][q'""&11dJZLTć)+'"Hݞ9e(hFV"YU)=|\zIbUv -TA*S%*}WÆs&؟hӫX^XPK1  d
  PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT113FieldElement.classWWW
Y&Fk\ZVCFEmE
$HڊvH0:VmovQzN/?"ps~wnwNP@ Ol6g-9"ɾ>X+ysFĠwT]YҰikU--y4~#BTk@3Jl)v
XUT{f,^괚&WT^L5F.{P閒QQ,;ڠUʖ9Zhy͑ $֐8Ll9򛐵CN	MYh9ѝ>yTM,іv99|Zg}ddg&L#ۤlM$+dNj®ڕNWtJz2r|!lׯShݖ32\^Oͦ>M)URn}=	X!sKטiQ,{+=ew,NM+M.w{TP'
lbPx%oZ0YAP;yL5 9ų7iJ
2۷T[XxGbqs氨-;K#`wb)uP#&YQ)_
3t3ӲWiteMM7EZ$ED;E<,b"xD@Ct(;&GÖ꙽tgu.bH$_z~ǖ+IbD>]1nܞ_{=$W^0|(a!x/(!	qX% $	
aC'>2Gz!S6	8gG,SpRBN1Bt< fCHb,#PN3a:CaadgC~/2I	a&P%Yb{פ>]WnM6MaKNIʓ#򘦠'o
sIk"=	UTnߨkHշs\v-aUэUQڮ}k2H:VgYP*aˬB6+^pI@g\(9[qe<^b(*3I./_^\ `O=8k7ϛ00V;OmkrssQjFjN޻-7Ω&Ԁ}י/w:
N?vWIR[mSVbAuvZ(bw"ވ/(?"
"D"L"\ߥy|RKq.*/w*N::["=.D*@}
U{ݪ}\5/]dSue݉i{b7@WZUIݲloTP)uNXW|m{2ؾeoW,/s#o^{`c56ښmcM4cU<s|mzҫ }k)@ykICNүA\PKN+  I  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT113R1Curve$1.classOPǿwk1d:dn011&#Jwee5kȋa/???E,s=ߞϏ1r8 Dcbt~ܞFKuQǎTMI&~UgU"ϫOa,>UuPRbfi[%tu
CQYRղLSMKʊj)MjX,VMXQLr\M^
I.P9ʮVŋ")UueJR}C$U,ԤКGt^&alϲ)AP'^U	
2qq+ǲ'Eh.V-y.>:Opsn>VwUg>@
)9Νx~ϡFd4Au"<2j=A2jqCF dȈ N{m] @+zHp
1df4ɭQ`s2du4p)oJڢ>,`&c"y@ E*ޅE2wt=nvQ}=e
kא18Iϔ7#x3bIÐB(7^
/n??V(!Btϟ5qxu~MxgaĹpH0>	a&XI`Nl$1
@ M,#^J86xco9DiHejh/61	o}?``փ;4
=&/@~PK+  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT113R1Curve.classV[WW&&	F\!xk0)Ki0hj۟A]]oG}g2R$Ys콿}.㯟~> ;Ԛ8xBY,}L\ʎ?4֟?vDSxgTL'.+#%ݢLţ.@JHRCǓѮD""AT }EIL;dRt:A!s:vxH5'XHl<ds9;K{L8<<K*X?ؠQL%]YTd*YٚJD3Z
ꬪ[G9j|l+NE5ʂ$P
J(ƔXFW1$%sJQ-U5'Oq47*OhƲrD^q&UŘTsVQShqhhYRUZ^V-;v0O17bNwZ*ړX条O{_3f]!9ZtcV.r'
m¦h%ao523iIOVHg9\gͫvjеR2-c6bR7*l>x#1'DZbrR[#X<a*"eь9htùER\(StL.6x4(8	<<xxts6FXvMhڶPyA֧#$G[z84[׊)l
J[BUKJKU7GrZPH6ʱӛLA
qq'ӳU+V\RunC|UrT%oGF795D|FP14،!flA0N	/fkbrB8-&yc"d?pޏ,L0PL2PL1 AU  q) q1#aC>pu(dTސdI|(,y؉q/0jL:s͡zd8x)wnx0-iؓles.JEzB#seKX7\_pn	wC:(Bݷl~7ntw,SvǮl]znou]
a?s7mK̎bWЗo[^vb6!mDcZ1:+if'oUm6LQܕ@Vˢ}DOEG_ۃs&qv;םs'F;oȟ5w&oc|rŤ﯒|ɻn?*Nc##B?rG̟q
R]j\%QBL}%xG\d%zOgPKӶ  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT113R1Point.classVms>ZR(o.8P$$n-lxw@
-o-K/L4_aN<{Wa3Ԗ{sssշ7(?xFSn
B/ͷvUTTvp*3ӳӨ4
%vZBZǻcv[gMzk7sYu<U'80圞nvrQr<L=vkym9	tbq\R	b7Hu&oןdo]?c8^7;=gٞ^ީlrV퀗譶״e$w
3L]dm&2;r<N5^Z͊I49ȉȇyHֱ=@F
;r
?82[C
)osﲯO5[{4W4_k[s޸TTaJjl|u800lvdWK6@Z]@"6vzJ+mI/;566$Ӥ=bF4ATH5i?)& :dR7)0C4` ygܤ=a]qAIq0t8=e>zڤHϚ:S4EGӀ 3=Dcg s_ xk=LEq	I)27M+ f , Eqi2-͢NqsM7lw/
啓?R,HDTNo'-(p><uzGڨ'"B1M-+]z]CSo2235螞yU2]j~Jz%AƦ,U]jI_-0)I4GĽfq=xc?G^b샅RZi}Fz}mP6(xl\X3v(߈ru~
K-${|mF]x[_bKoYI
҅jBRy*mR"	+l
Λ02`MZ
iROkFHJ^ː8?qEA~Ěur0
"/
;b {3"#Q	%aۥ(G"PeE.neĹrIB^6l uAđCcEMF|bT*1=y/:8
tFzoa25rGnX$oRPe-VnQ-n,=`ՓTq币-H8nTp
?g
EQ8?;[ġx>)ik"P$$k|¸RT'!B^F=(R4Pl*
~q`JI0C%v_p@	0)Q^Tڤ
3JL،Rυ哑pR
Td0b
5.<ҸdٻdגɶUJx؏M,*[Y"zZʒȧckVNHDB@J'ɼmgio	P6z-#-bxG(|Y9@oNw:EI=ImZr
cٿfOSû0pFWZ8[Y/pY[1w>}d|+I"RPKgy    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT113R2Curve$1.classOPǿwk12~NAƠ@L̂ 2Bb]Bȋa/???Es=ߞϏ$1
G2θ #bxqҞuQǎTMZO%\7jyU)X<WuPgBbi[%tu2CQ^QJI{sZykʽe*53iE$7˵Db~	M2pʹtF%/^ԕ`wYY]WfT+10BrXIM
zK$Y=%H$KhpUB#L]e!FoʉI(;VSQU:ۥһgdg>@SrTXU(&	>͐dq]xmOGZܐ-2jB=ܶ Z
 k
}FzDI
PZV1șRӺjdTmuZuC'mJo]M%H'ED	:@1ڻD4%ڷxt`zzǣ{(G˴~M׮!cxoJĠAx5AXXxP&}ĥM?{{uS6Er=v1*!$3bf`;ǬEA7kGsm*qI!"Ǟ;N#sGG^caж1H~Ўwh50J^69PK>.v  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT113R2Curve.classV[WW&&	F!Z5af& V{'}C}P+*mW[Q_jLDҵ:s%ӯ "څf6q:&5</ޗ|ى}Ych,O%ɾto<JESd0Mt,K'cp/$2=t&E2 \}dEXqqB8nu8H\:9
'Lv$=y>aci*LHeʅVQEIԍ(l@dF\UuOkiŉ<$ɺAi`RQSd</S"6#JV4<M	Ib4aTECNҬgaMT4qsU9&.8ӲM9H4<SJ	U
 BA6$rULì:ø[$4
Ymjgsӹd5Bk.:nEҦq<(xYQ"9\*Er
fRSuCT
þzfUFeҍ2	8`jзT
Щ%
\<̱jIF}Y}Y\F(eYWꕹ9lQTùEݐXȣ3tL6jrx0  0<<xq1FYv]h_yQTv±Ή6`zqaWinfIifHUj5Y5vz3X8h QdzbiŅ:)p6d|/H_Rvd|@ϦQ^xG;1*6
㴀-p2p1phG>*Ƙ,'3:l9g	o .$)i2ȠA@c0T2({0Ag`x0KO$]6YUɢ2ۛr(]:%Vş%^p]8AcF
[IG~N94Q{/{v2`(e\u?
y6>]քU·,*[¢'%\{p|zѸ彅"d]+qiA7x6jwԵzz9\BP:w8|Zl)[*{e|pۊyn$ثlM<6z2E8,AfYmBqzMerԛ-^P,NttO)_x\:p$NN;g?7uڣM(ʷ]{[ᣮ6}almzOn4٘5<W09G%
Cvydy9=	'^VP^3\]\$j[|Y_YBkw$F">s鬚PK  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT113R2Point.classVms>ZR(o.8P$$n-lxw@
-o-K/L4_aN<{Wa3Ԗ{sssշ7(?xFSn
B/ͷvUTTvp*3ӳӨ4
%vZBZǻcv[gMzk7sYu<U'80圞nvrQr<L=vkym9	tbq\R	b7Hu&oןdo]?c8^7;=gٞ^ީlrV퀗譶״e$w
3L]dm&2;r<N5^Z͊I49ȉȇyHֱ=@F
;r
?82[C
)osﲯO5[{4W4_k[s޸TTaJjl|u800lvdWK6@Z]@"6vzJ+mI/;566$Ӥ=bF4ATH5i?)& :dR7)0C4` ygܤ=a]qAIq0t8=e>zڤHϚ:S4EGӀ 3=Dcg s_ xk=LEq	I)27M+ f , Eqi2-͢NqsM7lw/
啓?R,HDTNo'-(p><uzGڨ'"B1M-+]z]CSo2235螞yU2]j~Jz%AƦ,U]jI_-0)I4GĽfq=xc?G^b샅RZi}Fz}mP6(xl\X3v(߈ru~
K-${|mF]x[_bKoYI
҅jBRy*mR"	+l
Λ02`MZ
iROkFHJ^ː8?qEA~Ěur0
"/
;b {3"#Q	%aۥ(G"PeE.neĹrIB^6l uAđCcEMF|bT*1=y/:8
tFzoa25rGnX$oRPe-VnQ-n,=`ՓTq币-H8nTp
?g
EQ8?;[ġx>)ik"P$$k|¸RT'!B^F=(R4Pl*
~q`JI0C%v_p@	0)Q^Tڤ
3JL،Rυ哑pR
Td0b
5.<ҸdٻdגɶUJx؏M,*[Y"zZʒȧckVNHDB@J'ɼmgio	P6z-#-bxG(|Y9@oNw:EI=ImZr
cٿfOSû0pFWZ8[Y/pY[1w>}d|+I"RPKH    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT131Field.classVoI.UD>edײ9QeÎFnW%ѦHl(#t@C^{@kVR&ryx3{˿$+Ew#$M-_!`[R0. `!d4fC/.rL }`ZVW[ݵD3t2+W`ee#ढd7ZXWjrc=iZYZWߘژt5BjLD(l\n-[J3BAjMHnFcg+,ZZC)*}yJlއf=xNͫo9Ze˫i!nڨ#22{pWgsrrjgkm;Sk5v=;[J
՜SSkЬU'XW-{ZPfec`fmuJdEj X&-{|d
>J>`5^t/VJS**T*L-_I+թTA&EF)H2hdr:i#7h20U&L&A13tM1E+1zmZe&eLL>b F>;Lh>`[Tbm&8qҍʝѨﵼzWgMZ~z
uEWh"t nf<2SpC>ZƯa6)pM4VZQǎ:RA$ǖɖ2PoĹp察XP,űF:zYJrp61mXdnBbh>C GepV
su#Uh}I;eQ^GT-@gpj4o2T'MdQ0v?T[Qi hX UH6E_njyZ=yTSFHIQ"|SGLe|ٲ`'>UꛞM_9elG*{5mr%l˝jh
7&$3n̵]W):]Wc"4vk<fkZW|kE(J5hV]am	CtPR4{+xH8k,J}s%v(CvKֈ5O~t,ۤQ}n v:\9lf\َ͙S>+vl[zAb]ZD58B?9QϡAgyoC'6w7l6N.sUy9B_?NO 0(p,
jz&bǿCw}hJ`܄7a~{K-qVt,gʕB)ͳ S=ݼ"E济|{,M4E|KU9<Sn]9n*ytuܙnץ@ Jg%BM[fe-33zƌVfP"1ehwH";Θ*BBEiL0<þX8͘bp X*3:ھ뎊]_uĈC;1%TxvvAQeGmy1))P񅶸 r](lG}X˒#ءilpŐEQ2_GTl 'HjdQ6@a珇]@|W2]Q1w1ȯc*V8E1XS	:pxpfRmg<̛|TY4bFݘVMcC2Y0fpegcd?O0NOcBcϓ_?;4#afJr		,\]g)rL(KeK"~&7DGm6W5~ķwxhnd_;ES4_ZRtoi=BPKK  g  PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT131FieldElement.classVWgL2IՐ#bRBEYDbC2I3hEbm}bN=K1 p9{}w`; j87mQ{ Dtr S,yԖDIvw%Zțs4"-ߣfUsږ@TC-]<(x^9E?Qis%uE6ɞR'eZ+yY3<sv5ݝ5SbZRTGCͶfrK׃*Gq]1)j.K.'ۘltɆi/q^~5;&yT
ђVq\sD/*<)'49Ntk6=PΩ2^\k29(0k:M{PmPs:[j6os|kZɮ?KMvsNO'Frlr:IiJ1LtvX΃e27&ɴn>S{d0sAYyG܂/|R&d/ioESJTD4~]vj:cgod(*wo1fiQsA{/wFȏX`fjGP2sTQLLLOZ^і55U?h&-"x\;E<!bV"=w䴒4wCQi,1MGw-Y}t$Y,fg
?nyQe-~}(l}ynH HTB7j%<A*$p AIh
	1M$\*THȰa7^}O2J	u!Pg%q	OcϞ`L!hI	8 a*0$Cŋ!!a4C!003yI!r?0FC 2f0΅03yԅOԝ*z&B])'C򈦠?"D禓@z^UmY\rpcxhO~,7+Q(1 R|l߫ɳľ\ςr۵Y,VxԒdOϸP]qat(EeF
3+!xg܂|(Ϟe{^6cV9Ƈ`׭uIζF^; HoS*O5ؗVGzSX	)7Hanc߲$>Vr"%oe~*^[}q[7ي(@X¤~EKZ@8XI8XJ-.066e5E۾%vI^cKgChw	MH>l)gUo
o*rNbI<of_V_sek,<{Iݸdoϯ1q&8{ycޙlu㻹ϱ/ze13q'7ބOygx ;[}k# }!l?R뙢;>=Vd5PKeU  k  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT131R1Curve$1.class[OAU)iK˶\\bbLJ Hn!b50!L ~I""69g3엟??˹͏11g*KE.	j-+Jzk61xnV|F{MstV[48C2%7%n)Q22*ϙfyI]4+%Y.\W-ZvY_
ZW,\Q-rg>M/r#?j\r:W鸾E.+kkf{HP$IU͈D8S,FF:WeYO;Yk(uyRCALzpޜsBs'_s(F
B@OA'(MA5n(*n;Cg͈тxat9Cw !F޾2Z
*&]0JT嬡Y.ؚ<yҡh!k"@>޵tuj<T|=zZף{[˴~M׮"ka`IFgĐ!1B״@( m7
<V)!BAzr*gMZ8Z_7iC$g+H"2WFd4џ4
l߉<b]!HdX8%΄P*G<Ev	ԝDGTf8<
ӎOhyԵ^&]m}QHb mFPKDK  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT131R1Curve.classV[WW\&	J0IH6	I	 XH[Ff& Vk[m	m_PԊJյԗ}&*t΂>s+Mg,<ϲgcb?;d?K+$R]Q'T4h'
GDfzP8N#H;ˌb	QLvh;#ؓɄ3T;֕9&TM5OP8JsؖKFŰ8"'2Pz\t&qzpt<5<<K~A8K(KYP9T`:Qd*yÁƧtղ$>IhlI0AkJTW(YdS/rpɺ^d}n1K.*$yFISʠ_,͍J8O*94<UgtV3iӊi%Szf)"MnCvS{<V:*GhУƀ>QP+jUMUҼThmT.ڶ*lt0%48fVfy&m	,,y5K
m'j9"کFj&ֺ:dq42)j!hl_`rNQӋamU=[4LJK2<E䲃n&寎G<!#avwd}u9i6d'Q>>o_/5ZmW*)n:\uωmcXoN'њ+<.TIBܰ!cFƷ##"x>A14	hĐ3؁a-Y@ lW@+|uG1d9~`
؇<1xˋ$/pދ,L0L2PL1!f}HC5|@ IK^LaS>p4*Hл)gJœRhQYZp``<ӘxQCm#it	nJ7\2` eZµ 
yVC|w%\5wlY]Y@N<%\4pz{Ҩ|Ȗ _;]}mQsSFۜWߺ&z谟z幌fn۞жb+w,;mxbfHG'1mh'V-Jmh
ǵb7:G%ЃU2muUѽ]ѽb
/cG\pcO3>tyC};Z\<%s?}@kkY-.=b'GG4xQf
GVaj]eXB%wL
~%*yG\kg%Vi3
PK>Ʀ  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT131R1Point.classVms>ZR(o.8P$$n-lxw@
-o-K/L4_aN<{Wa3Ԗ{sssշ7(?xFSn
B/ͷvUTTvp*3ӳӨ4
%vZBZǻcv[gMzk7sYu<U'80圞nvrQr<L=vkym9	tbq\R	b7Hu&oןdo]?c8^7;=gٞ^ީlrV퀗譶״e$w
3L]dm&2;r<N5^Z͊I4ȇyHֱ=@F
;r
?82[C
)osﲯO5[{4W4_k[s޸TTaJjl|u800lvdWK6@Z]@"6vzJ+mI/;566$Ӥ=bF4ATH5i?)& :dR7)0C4` ygܤ=a]qAIq0t8=e>zڤHϚ:S4EGӀ 3=Dcg s_ xk=LEq	I)27M+ f , Eqi2-͢NqsM7lw/
啓?R,HDTNo'-(p><uzGڨ'"B1M-+]z]CSo2235螞yU2]j~Jz%AƦ,U]jI_-0)I4GĽfq=xc?G^b샅RZi}Fz}mP6(xl\X3v(߈ru~
K-${|mF]x[_bKoYI
҅jBRy*mR"	+l
Λ02`MZ
iROkFHJ^ː8?qEA~Ěur0
"/
;b {3"#Q	%aۥ(G"PeE.neĹrIB^6l uAđCcEMF|bT*1=y/:8
tFzoa25rGnX$oRPe-VnQ-n,=`ՓTq币-H8nTp
?g
EQ8?;[ġx>)ik"P$$k|¸RT'!B^F=(R4Pl*
~q`JI0C%v_p@	0)Q^Tڤ
3JL،Rυ哑pR
Td0b
5.<ҸdٻdגɶUJx؏M,*[Y"zZʒȧckVNHDB@J'ɼmgio	P6z-#-bxG(|Y9@oNw:EI=ImZr
cٿfOSû0pFWZ8[Y/pY[1w>}d|+I"RPK{K    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT131R2Curve$1.classNAG)RZd[
B)`R@H^,#mX@D5.0! &>"]D$B;̜sf~ߓg 1xg5>; #T*]F7
v,J1204nN7
|JG-ki>orJ?8aKe6.ȋܙ*Sdze36ogn;&זuqC7o;epswjb;ֲf;ōtO~&_.I*'s+U:.sXee}Mםt7$5)1Hs{ʐeTɨQ#㪌ZB8 Cù"QzVSΓ:y59N<PLA$Dp]
]OPBJP-
bhF;v0фDQtCW0!N@}ed],-q`-0(Rsnf4ҘKVڢ>,* K%NswkE D҉h~GGgW{'C:_MkvYs}cB0+FM<BU>)
EB&zcR!/':IsG! ml%n{Ud43
gGwb#9XI߬Q y=aTFD;Dh@ 5''ndcuǵI{|@ﶧm 4
 /L4{PKF  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT131R2Curve.classV[WW\&	JАɐ %hi00	V[{oBۗ>"vuvJ$];>{\_?
 =@`=mqpӬiO"xoo_GD*NuPO'3hד_(#h_"כX,45.Db2қ
¡>9&TM5OP8IrؖIHh,<O#ɉs;K	qttTuAܰ^'&/ʒad9SRJYE3r8PZV'ɲbm-	&I tMKyiI6")JHcQ"(3JFVubin\,e嘴`-ARd}JɘEU>PiT
i%Qzi"M݆6Bŧdy.tV,GhУƐ>YP+jUMUҼThmT.ڶ*lffV3+3<aTx
ּv
z5K
fm'k9S>-TZvjd_#iOLT4/Fp@L(EӰ6,BBIcrA7ۅWǣvxytãGitk8m刦m/HZ>N?ڞKphWvFm\tT7GrZP6ʱA
q7p'VhKT!nؐ1_uw#UIyۑ@N
<F{ 4bDn[, S+>{񺀣c ?NhggCrB {I2)
iy`և$T^`G40(0K>``0>ON.w*vO)E B)OJEiu]؆p]8NcNF
#~?%(Fp<x/lqk	4Ld[t>KR:߱eueM8חp9^]qRHM"[޳tv7Xt-S[G?XfKOOosvܶ_Y~~2rm{Bf"y` ۱w^ě≽#cmZ6:+yU+p*}l@VM̶ՙ:WE:wEns4x*pV"RZ3돸1#7xǞf| wMI?xJz
2>Z]{N248G?i*!+
2ʰYۅJJT̏zK­#gN/WPK_6n  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT131R2Point.classVms>ZR(o.8P$$n-lxw@
-o-K/L4_aN<{Wa3Ԗ{sssշ7(?xFSn
B/ͷvUTTvp*3ӳӨ4
%vZBZǻcv[gMzk7sYu<U'80圞nvrQr<L=vkym9	tbq\R	b7Hu&oןdo]?c8^7;=gٞ^ީlrV퀗譶״e$w
3L]dm&2;r<N5^Z͊I4䉩ȇyHֱ=@F
;r
?82[C
)osﲯO5[{4W4_k[s޸TTaJjl|u800lvdWK6@Z]@"6vzJ+mI/;566$Ӥ=bF4ATH5i?)& :dR7)0C4` ygܤ=a]qAIq0t8=e>zڤHϚ:S4EGӀ 3=Dcg s_ xk=LEq	I)27M+ f , Eqi2-͢NqsM7lw/
啓?R,HDTNo'-(p><uzGڨ'"B1M-+]z]CSo2235螞yU2]j~Jz%AƦ,U]jI_-0)I4GĽfq=xc?G^b샅RZi}Fz}mP6(xl\X3v(߈ru~
K-${|mF]x[_bKoYI
҅jBRy*mR"	+l
Λ02`MZ
iROkFHJ^ː8?qEA~Ěur0
"/
;b {3"#Q	%aۥ(G"PeE.neĹrIB^6l uAđCcEMF|bT*1=y/:8
tFzoa25rGnX$oRPe-VnQ-n,=`ՓTq币-H8nTp
?g
EQ8?;[ġx>)ik"P$$k|¸RT'!B^F=(R4Pl*
~q`JI0C%v_p@	0)Q^Tڤ
3JL،Rυ哑pR
Td0b
5.<ҸdٻdגɶUJx؏M,*[Y"zZʒȧckVNHDB@J'ɼmgio	P6z-#-bxG(|Y9@oNw:EI=ImZr
cٿfOSû0pFWZ8[Y/pY[1w>}d|+I"RPK8F    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT163Field.class}VsW?[*k+xIVpH6#%GjQCxf(0C=C1sw%3Z9|޻HDY3;1RfyXcPg-N4ލq1	Yu0ؔ(ƕJuݼwW"C҅KL/jﮬ>@N*CdZRm]J#Da`_[Z??6ۛf4bdY6_XmDJmVowvJSd~[m!pľ
0toNۮ=MVػ4ww~m]VMz)3z
k<zT~y~{͹zc}T߯UZY
׬{*9M{.נQ
gxV[yk_E
>eS)7C2._ب>O#Ƥ2aGPrp$*|GuNy
:9:cYx[]q+!ũL	IRbI@N1H$)Ғ%#Id&)GVNR"I09ä4%4,1Z4mћd[Ln;LV|&?`.{L3Eߦ2}~d-3Ya.cAnQ^ӯ5}њ'K [ȁ(wib7@W(2Ta^5/4Jh!
ƋBun\T
(Ԃ:*P03\~aQ+h1茌:F[Amn0vku;-;0Rx)#H8	G?j6\c>.RH՞24Tp\/S<"Dǈ5Ob/(ؿi'{?FOO)zs3zC/ [EtHb	I>y.fD?S3wB?9<N!$|cQö2\p`lvk;S}5R=ѧ*mwuK:|A:zXy,`<@xK
M$D:)T4asmIz9C(b;KY
ΒvB;mBlfH3Cl
2!
1㥜HuDJU
ZRhtג a)0+dՇ;S
.b*FC
g2+M|ɓ+DPC@m1xjn.o9PG;ʳ̢so.K[\/j!azxxjhuHZ'\@mȖ{;bO?[פP
nC_p_O xS^翔1=łb-T7
ɧgrC&
aQ
گ1hݞfNȶifNj=PjGUwO~b3y|y:G`'ZOGhi:t@8=g
" , b{kC2	3ci=3$t1UP;XvoX"ob$ci dx};8ضfH(2X2ufL0YQZr㍉*x"吤Mfle)yvvVL1UWo^^LqpZ(ԤgE㕄#,y`(mX+E#JJyI<j]`=dDƜLO .BdDl99?v%zHW!{]q1u*z9\0|RaL[Qm0
{[I9U|3o[fs!kq'\j<jC
?wypL(dMF:&jcH+ˌÕ+3Tfv),P}(|8Q|3-GB\svJ8Td3e(]*)4_^AF 4PKe'  0  PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT163FieldElement.classVWWL2IՐ#`RP[F'	Llf_`O[̩t;C
߽߻ۻƋ?P@HsY8i>/rM<fK2${{`hVUBe<HURTp<"Ox$1Wis%uE6;<XUTgL^S괚"LYke*/kUz.sPMfM%1VA9,sp-lNnIxPC2+5eSe)	Y${0e]9˯f$a%ZU5F=G{NrBD)iYEI*)#
fڬՎڙJWtPycHϥIڮs]B֜NlӔbX%׭)+dn3LjiAl,%ɼa2	ԅn5.~R&eu7MɆQ%:u]
P< S<~T'CUQsKōw$7iڂ
{4F~j.}'bU8b+%ϝ,Ng|qZJ#޸HDEhC"v%=h#c߄HsalzOgcC/v:,nc떲;߱(
gHG"+&ߍ+w{O߸AG5$aO}%e8 %4#$!ư$$63le`˰a?:TIj	xR<-(Sa
A'NJhũ l}0cClg4C!00`0y!r?py·)40Q,xԛ*z&BO])'ȓ#򘦠D禓Dz5"NAп $[x9cx*IXGmߣ>~}MXF!:g^K=$%-S,(jˬ5B+r<osI@g\(9]qa<2u&B@~s {Ʊ=_i{ވfxk+VVF$Ecg[#~/
ԝC${C&Tuט+wAjt9m+I$/x<>q.cxg`{mb+buB~-`or"`I&a7 wi;6cU-TD۾evy7I^gwKq!t2HvAj[ޱJە\SX Nخ\zWK8^xDR7/[>~2ngrs]Y0.`{UNЍw"oZ{`]c"F1ǰmE4Ţ7bb*|9 Vylz8oq#7cR4_\rb}es5PKc  M  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT163K1Curve$1.class[OA)-"&EP2҆mty1QM &~ ?$gw3sΙOϏbfqAD&܄3}Qω5]ՙH$zk6O
2znZ<=ᓦ\y:-NPjs5Jsf2CY^RJIkmpy.kIuzŲ͢jL25pŌ!?GdR^_ԙdwYY[UivrZьNHǳ{ʐeʨQ/㒌B<?CɕQ(+VʋPQ%u4?YKGNȞ|)88s>b
!)h +
DTx T㪂 +PY6t9
g Z"gR eDC6/fJaZ"-x9mh-9[ӗ4O:t-a: Yt-qRDtk`I^|6zmCn#A;8?:/>A6¯Ud]Osϟ)1oAHk^
KT 60	(=9gM?\]_i]$g3Ajes"$h?#hyZ$H?%P*<Ev}GCTf88
ӎOh}Գb\m}Q(yAڠ͍PK(%  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT163K1Curve.classV[WW\&	#FI@ U!$%-FP/>"vuv$b1tJ폿~@'rMy9}qV8}鋧YK
Pgh
uDCHh;vh4uB(b$c'
ǦrؑF&]GÓ}X|,:y9q@4w~db22>~nT5!r 5fSZ^%Q72r0+AY
F#1ELG3rVV^*jDQd]o`c:ʑ|n^@$--J4-7MIbW'f)'Y9!M24pWA9 |2QdSWМL78ӲM	#HԬKl2W
y
fd/,Zj4cup*;%XRLZMRVam*K4OU*bCUq^,+Y`ek#jVnoJ7rXGMs[9\cbz}KyвA	YbIO:9x~Pkڹ,Pc$o(EӃuz~nN|bQ7d?/fxvuLN
_
/<<yqGGGG#<:y#O[Ueia;}3:d;W94j=]ÎV_EͬʰWsh+zo_u;qW*bm&khN*TLԦ41_qiw3Y	yK@N<F+`FbD	8q1dЍY9/`BL⒀dэ3 &bBbb	43U&DxĜ1zȊ!,9x݃!L#B=B-Wv$r.u]!JF>"B
>gWzMPr;$Q8
lwN˯[Ň+x`K},
BNڷs*\b'swͫɎHX3Փ7l&xpq*w`L=tamm4Q؍{Eϛᥒ!mKK
۽3ɶU,߱C Qv֚촵;AYFN`⣢/{qBm|q7j
,,uhk0Gڊ}%_mt6oIy)JleKyXqSjq:fqغ.o/it\o8s&G!>^vXzyG!49VqN)ͨyDx8ѣ'IOh
_G{QOi3W6{S?]+/̭RCݴyoPK&:    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT163K1Point.classW[sTT˖e+N[zJۤ
P(6M д[Irk)q)/`}!0;?~#iՑݤCMgg=7
RAd`IԨS\}-_*[_jz.9v2Zk?CKJ4umR<[L8
qRz0Pн`>1R7*9!G%aYF굳
;;TYer$<qIAW-ᴥTuzɐN8-uQ9IQkKU9[wyk+Ke$]{i5\&CTG[)xMOgeIМ7?6\S0|GkCvyf_-Y
Wm?2QS#*P.CvӰS}5< ?q:oI;ne%C9%	Btn,tMiq`?!8leMoEXGҁMx"yk󮾦G殄_BB0
D׀axnAP1lgxOII!͐a2<̐>=x]	7ti`Ƞ~`Y9<c2b80@%P(0pa
xG&2cx8p{E^fdba8pMjuW1vcjyM
k~-,NZggiC!ψB? >X(n
U((FiLPoಔQSNPh{f&ާx9UB
fuk`nd߽D_#Z\.UǝȰ
)1Q*-J !JUVcKqvO\w|O'M8q^H
2Y0
m'uere7Ma`<[Ncv$tq71Li1rx.T3!43ӯ!'uDRY(]"jru1%NJ)"O^%=)9-M"c.vF^%GfVd9'
Q}M,2WӜEK*+oH
Fc3<,3]o71of2HvB9w楮X"/Cvyȑ!u3-fjg&T&(FDf>i
M<(,04XوU쒄㜸X
ڳ5*-Uwq֨fC>*.$)'jsfccEV=hcF\PIǙhj%NV>{q93Z	TY&Pu<~	Ttb8TuAIE\ZY!U'!}O]_EN&v
ZLH1s;W,÷Y÷Zl:5 UAy_CRDvjB jA'Hp	Ic2ŀ{0sj92B@yԀM'(,VIB|Rk:ծ],TPRmZXzgDmq&<ƃF\O"-Obu5\XIwUHjpo6<AW\;o`67)=Ŷݭ4^tTobWħPKu,  z  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT163R1Curve$1.class[OAU)iK˶\\bbLJ Hn!b50!L ~I""69g3엟??˹͏11g*KE.	j-+Jzk61xnV|F{MstV[48C2%7%n)Q22*ϙfyI]4+%Y.\W-ZvY_
ZW,\Q-rg>/r#?j\r:W鸾E.+kkf{HP$IU͈D8S,FF:WeYO;Yk(uyRCALzpޜsBs'_s(F
B@OA'(MA5n(*n;Cg͈тxat9Cw !F޾2Z
*&]0JT嬡Y.ؚ<yҡh!k"@>޵tuj<T|=zZף{[˴~M׮"ka`IFgĐ!1B״@( m7
<V)!BAzr*gMZ8Z_7iC$g+H"2WFd4џ4
l߉<b]!HdX8%΄P*G<Ev	ԝDGTf8<
ӎOhyԵ^&]m}QHb mFPK>{  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT163R1Curve.classV[WW\&	JАC͵,Ak- aL@JkOA]]oG}g2AI,眽/߹叿~@_yP{Β-yӟc
nn4:^h_X?՝]d4ODO+O2pO;
St*"L<Me{X"[`L6X$E±d:˄#t'Nd<'*iJXAC;H(=Kd<ݏipn`d,544&Sh%0:SqJhE98#AY
fRYE.Nd򌬚'8
>)9DI
㤐*JLHڤ(%i>AIB4aˢ)DiZ΋])͎El`	Y&伩+
NLRʩ<%{aJ6"5_OÜ:ɸ[4mniSP{<"]H3{QVx_/*5#j3XtYEXV͔`eF;iKNg3orͫǶנgCT2Lm&hP7/Kl><\]jImZc٥mP.E3Ms	HTAYeR7U:FivVM<J{8`2-?'K$.:M<v8#ȣGGG7c<<zxx=s`F!G4m(SAvթt7ʫſ]mY[KJ.:Q\)9Tj?r:qPCCMUb|*o:MsU#KYo79_Ԑi
NI@#e(0$hYbÄW@+|e'0ty~6\p e5/R%/rcb		&d&&!LKИGi&t00}΀^Og.w[*yvOz(L)JWΈE(:@8|ήy1B}'F?$?7@#s7eXA!q˸&doKVQ֭Qi븲n	&~p5^qRN#v&ʑ WXmAwxq:jw5[vz5[D/R<N*Vڶ6[̳weNYjCvQᬷ$F^A)'
:*u+6sE?3ouJYefUb{nնͶ9Vϯc+gp6$VԎ]?w9nGo[ũ}qO>
0hq5Ei{Bs?}}@kk^]={2G?j"I<5$Y+sz>?`Zs/lDk~Ar;mk}PKOݮ  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT163R1Point.classVms>ZRhy1X%165؊4oHkgA/*!iShm~!_:|!_02C@/cγwvsϞsϞ{wѣ/b(xm<=VQhZ9jj4JUZefzutZĮיXQ(^xxLԝ^pIxQwu8Gư⶜W߮Y40=Pvn-/
0'nS,εVK
<;a_F3lM{Lkf,k;-[Ϊvý؀N[~`_>4l¤}&cGgׂ٩BSi^AYY<Ԗ&=rb2kul7Lq<֐pBʛkS~ݣѽݧPau-ùYo\*0ltp?6>кGYlvii|!L<B;;Vn`W{8H]ǵR3s[R_ч!G!&4zԤ	IE@Tb <C&%1R 0HFY@&eqL IS&=@OCzƤatD):
<1!
pƠ
=%``	"%ˀW 5a,N NN4Il#<X TӀek [EnV7Z-Ǜnؾp:ɿ'X/g+'	:99YʑDɉb|'-(p><uz[ڨ#B1M-+]#߹Nקּ
ddZgj=59+ld|K*?^MYP`2Z^Iɘ&Шe$n
Yq;y}ĳ?-bM?H}'kƅ%9c8MBLW\g,L\UoZj9tX@<&E6:6oţ=&c]	!]!4+ׯR^II!%2֐[	!(֤f!aDŰzW{.]c9ȋ3|kߥ5 /?HrTBIdXv<JA/Qcq 3?TYO֥7588\;ɱ`@ȋ
cu`Sd2.8rȱtQQȰ)2وO_Re9&'_E!=y!Yo-:LFS=Wn(Q]
Mz@
-jpAō%Gz
s9n`ye{mn4=Nx(U>\ì::\LW88("gg8'|UVÝbOW52DRh˨gQW\E/.L)aÐfKH;!&Ӓ1%Qy;ʋ\^yAwF	Qٰ|2R?NrA#jFaփƥ|̹-K6Kv-lK?\Ģb%w,|Z:6fᔉD(${KغV:|1mL
hcx8+QK"wKrWȜ30,$}kOSS4*f%P~;8ѝk4<5;ht:_ڼsyg:7hH?p8]o
PK3    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT163R2Curve$1.classNAG)RZd[
B)`R@H^,#mX@D5.0! &>"]D$B;̜sf~ߓg 1xg5>; #T*]F7
v,J1204nN7
|JG-ki>orJ?8aKe6.ȋܙ*Sdze36ogn;&זuqC7o;epswjb;ֲf;ōt~&_.I*'s+U:.sXee}Mםt7$5)1Hs{ʐeTɨQ#㪌ZB8 Cù"QzVSΓ:y59N<PLA$Dp]
]OPBJP-
bhF;v0фDQtCW0!N@}ed],-q`-0(Rsnf4ҘKVڢ>,* K%NswkE D҉h~GGgW{'C:_MkvYs}cB0+FM<BU>)
EB&zcR!/':IsG! ml%n{Ud43
gGwb#9XI߬Q y=aTFD;Dh@ 5''ndcuǵI{|@ﶧm 4
 /L4{PKB  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT163R2Curve.classV[WW\&	J\ЪaH4`	Zcjq
343kk￡>"vuv$jHVWgw.{}䏿~@_y󠖃ߙ98)}lOeXώH(
bC@oGÉp7Ich'M3h/2I&bD,$#h'*psQñdg"2O&Scif)q||bD5
 ;zAWd0sJpA2烊LIU$rʂG8|VW--NdY1J&iB"K
%"볒ly.Y3/E9d*$+iiVIi:G	irAQd}FIyUal^_RR)d^SL+Jkifw+Fv[IZtA,Fh3УxU>SUyUT)ǡ$)z<*Y`mG6E]3LI3
{+~JG|0Dz2k^ٷ]ئ*r0Aݴ"mH+'"vueIyi98&4R)j.hl_)BM<F{8b
_re|5@n_
&<xqGGGGG(^}<bv>kaxG7ݔ#Z_t ;ܑ6Hfq-a7hbVIDWe${NqV
g|3sܿ;^JJ]dqBJ%K=K[7K[ߎr4
؅zh
t3h;4` ?ɀg^/`\ βWp^x2^1Eoxq\f 1f 3ap b·h>2,ENA!7}i\w)ΡHgw8DHisa(nץMIzF*-#"]"9qjIF~F#nnN`Lx>>\õ NdM|{8@3Ғ5,k(ܱ'Z1amИ[NfmKC8Lm
d-0e4|qm8KI9ݲ-Smi1
$3]x^;.*;{/k-"GJJZV:Ky9[ю%q'/mqKTX,sdʲmPv<Cȗ{p$^jyϵ.GǷ╮=-Ƞs=6Wnp;{OS@{k7n5)<s['7xdU.Vz >kP͝`8`jw l-!b:tNoPKyV  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT163R2Point.classV[sTTˑe+ŗpo	4
P@i@ IK )WVRQ[-7(~}!0;?w?"iՑݤ&a`[ٳڳgv_<DRaU0ʄ[_<.9Wj?3hGGlRXUҒbL;hi~ƎKge$n0ւUWе`c͎n3rTUaĭ.-ϳ]gnƮ<f'ziSNuz-uQ6a{KK^лT<QYNR'IZ(DwzX/&#E<NLv&ϧ">b*[ҒAi4#'BWsXRNĆ%|ھq?o8Ȃ
P̷]4ܫ>
kx@N
d'*+Jwn%vl!J7Uڋݦ4?Ć:*[15ӿi᭨kVn`S{<V<M#sGBo@@0
D0d@#Q9Plg0C3ЁC'CC/C! CCaǓ0
!
rh21u]xZGGt0Qcq0"l{1ó1dfc8
o1Q)'^`ax857d|ay	)/17'w18V}R<Z}4}8;Y\)XI+?:=(4T\p|xY
e8K.K1<K
=?c2{,
b(Z&լ(M'Ikx*<Q.=)zmELU
$R`bq(0*vhK?e2ȹ$	Hcd1Bc`"fN8K_CSC|R܍
k)#rJ<Oa$Nrˤ'b`8W&ysSZ2B`0˞#9z{7oF=v9SEhDm.T3.43ѯ!#̭'!Q0;ELfdf8II$HP<.zg[tdDtx9+tc|dES%
Esހs#zb΂!
T9
$Z0{Cb2{?3uG\%yi"LdD531DVfY/uWdG)TO`\DoV)/Să
2עk8C~
-$n/W$5rb66,h֨{WD
/߻F
=u5M%NSaud=q(qr8Sv6L*uA̈	*3S+p3.ƙ̡`ͭ]j]G\x
U_`%OVJ1׺YsPcԨ#̢,0*22\7qOѠ$YtTHQ)(jiҾՑd/5f
"tYZ
#4X!#Bǀ:wduR0hQCR65]Y͞l'%yr}'8d7H5/5k"ztSn<i*z屬6%+m~tI
R}w랜sR˯|wR0+OxOD[".lW6}2;}3UPKtq'    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT193Field.classVoj\EڴbrlGڥ,ؑ]'j(6ZS+E*@#"@E_zhA&hkhEAZ%S8E)q͛[#SM"yjzC"ej2ԩ;Kɸ%0.de)16b #vgڥrܸ,䕳,_hí-` ׈@YGZ\Ǣz6"Vc[ٹRDuo:xN~X^%dw*j{a!r0q]bc(UX:1],w:hèFyvT:aP	;R턕
y)kkU$Cܸ *t9P]j;A,J속AT
JnfTZ}+娂=zzn5W!6pa!VsPzuE5be(WEOdJoGzXEqK2ەHJG
{UӰNt:ӔN:y:O-.+EAcSТ!,:BeqdjsY#âYX'Ӣ1eq$YM8b]72+u+,VY>b,6Lz5M+,^e~J]UaVJo{Jd :FYI]a-vؠe_a+gt1zyH8]=9堽VP<%TO
|5_vb$
XCtO|53`<ϝ5Fi0Yy1q5+}$LM&廁y
NWpVcd(&saĳk@(:T^\>_[6{#~Xx&QҢѠN4LU?>[ԡ+z)@ߚZ|ð~c36V/[,<6$I%X|)r>"'R,uZHw%(ѧh"UTЫ"wh:E)Z̗j\ik҂e7PZ*% 
 Vyd"& f`) *yim2v@%0D&KxfG$`k޸ɶƨ|_uBۨK".
0;|UFi*z0h2vg8F
ǅɦؕbR<P4q0?ML9L ueKO)'(Ɓ:q4݇wEs ^Fe2T_WsnPpnszĤ3:yʤms
ʉ;#liPfZnFG݌s9go[n<rF8=TZLo!SS:Jy)WPalsУi3vၕd2%5U|/*܂91Ps9(K%TXjPPcK
i[l~ut.B"Nrv/B9"i@ΑBiq E
xjшc"Nʩ||fUE&C9)ef
ǣ;WԑX5Xء=!Ko?HfB8JKb_A8W`?ɴ6ߐD ;YćzNSĘ)Nbeb+[VlYMw-9&

Wcc/ʩ&b\5㻰WHopePEM'p"y?ɚfmbJPKQT[  R
  PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT193FieldElement.classVSW-d Ok|TVC,HڊvI$AU[~Cmc:L:/?95 0awνw랽vzsCAtExabD Dly̑dHvw%Zțs4"lثe5k?j ݭ]q<&5@x$UkUԝ(imJK[T':WtS@Ũ?eQ
Q-;Z2,p#[JnI	"qT0TSZ岔ߘJ)fbZ2H˱вSaGʹ˒li窙ê#zQὍ)%+L[Ռ8ENȵ6i\ƒMTj{:=^!wO#ΧhKvY
mQ[rF&9gSRTêdgݾN].}ĴM=垲eOΝ]z+~ᓆr6ٯX-;v
Xw%oiz0s4CvZ&Dsg!`Ҕd(*n1f?aQsW!g/wF̏ͥRMfGLrRQ[Χ=*HBBBV	%쐰S.	OH-.{oVS~j%Aв=.?]i#>f13k[k.s&v?}(l򃸽|%͇!$*iXQJe<IjC^HF#2B2P.c63AZ!Pge2p3㤌f
a /у0%%^#ap0ΐe1L0L2Cl܏2gxa<C!0`0Lq$s^l&wgѡ+SW>h)3}Đ2h }ѹ5^oЪ>Lnߨ('j;9^K|.be!2	u
!۷<$e+K,(JˬU6+qDp8$S0+.È-Ƹ21ʌfK+W!?CxQVu=ur<ǐX0|eQ;
EEHtsQj:N>YaTsiut>U[L; N1\$$/D,pcygxm'%(R_#b	q$liEPr"PI&/:wyc-\۾%n>DuKh}dlg_nբ[
4E|`p*nR$Ap\8ׯ?v˽tUo^Uq}$R7-YK}dzgزdwۻ$Ǽ^n~7%
\+W\[tl(wx&L.(aڽFw3Hf/@yʫi;K_oܽBPKʕ  L  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT193R1Curve$1.classNAv۲jAW-E>bbLJ H]BD5.0! &>"]D$B;̜sf~ߓg e9ggbq10nO}rѺ(cGqlOR~UgZ\7j>>R}:.霡
NŲpٝͨk2fӝ2̫,ղLSMKJI

ה{KUQ5k,qhU2JI,C}\ϏmTΤ*4Cۿ*2Z*IjRhUu^&alϲ)AP+NU	2qq$+ǲEX.~VZ)/F]D}t.};=#w6"7g܉WhOF#$a\!## 	2hQ2%CF{ Qtm{ Z".{	R 5C5Wʚn$
FAΕ˼U&åYKV&UW:aB6!@ K&(}GGf:'C:_MkvIzN&!j]5fadXTX֤ţ
?{{uCol%ݻl;#UI2	Mgwb#9XK$ɃoֈTՙtm*qQ!"Ǟ;N"4sGw^1	-vg$=C4
&/HD~PK\Z  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT193R1Curve.classV[WU$LZhK/h	$I"
 iCf&PjZC[KuuɄR))q-`s}\_? hpCpc#mѳ=Kcz_z,&X<hO4GX4{cI1""x8$XTRLH<(ZFD*S^[R,%$)"ɞx\Ȳ(=hDb
>9KH4wKq)>sp$홤<*ƺGq)J%g8zM$Sҙqyxx$A~A8KuQU3fs&id^
q*sp*F;C	byɥFzK$sn)&+ꌖQA]TU&d,Q`IM'Y̩:UgtԦ5r/LkUD&wh.L1)6D{c7mOm)9KwnՏ'gy"b<ʼRhmV.*hz0ip_MhTڥ	,,Ûyv"%gM3ʶC5XvڍZc٥mP}QY)fu*%3h/FOB(EӰ6O@{8hW%mxd.:-<v8##C#̣G/(v>iax7#2++ ;cqmj=Y®v_լj(QU*ՆY9wzoXFԐow2=yՔ\qJI7U#K7Kɛߎpj0
؋&'"C0r6
㴀Fq3^a `@y}AL022Ɉ#^qY/y2tF%F^01%/N^OL;-G,'BPЊr^1-SQ/RGOSt؎&p]8IkN
$#|~F˨[Sñw+9n7pOxֹ{O}|f6Q-a߂%\7/a8)Q;|»W.mK>Qhܵ{Kj)[[Ko]=t8H-:[gj-m%g
x޳xVI8wBy􆭴rq(JGQCxjsqzEi[mqettVdX>*\*gpޖ$P<4g\3?5s9z|+[_s_w6Wk||ɸ_k^mn=d'GOD&7Av
FVcZ]7QB-wT~%jy\cWm#HS
PKM>`}    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT193R1Point.classVms>ZRXY^VM@i,%]%$mJ[J~!_:|aQf0;y;4S[zg}ιg=W_D$Ys
%s[nOOTgxeVη;ڕ
ҴVuF}4V,/uf`<r:%u'k :k+^y]kΪ):11-tշk#
L+aݼ9[KnIslB&Nٗ{ѴG6y\$.i?F_N-`˖jDop<6 حW 3Gw-]dy?Z0;Th;k?h7+>'NMF>TCZ2RؑTq7)0THy}W}~Aa
oؗlzR}hPY)eC{=`;HKsĳٱo^\-x/ivu\>3w%|rLbI=i=eRP"դt   FI	zڤҀQ@c
I:bqAIq0t=8=g>zޤGH?2^:S4EӀ3=FT ?^,~
x*
zfSӀ3e/ ~X Tek [EnV7Z-Ǜnؾp:Ϳ'\/.=+'	:99,HDTIoFY8q
X&Fڨ#l.wo҇롩7֙tOyu2]j~Bz%AƦ,U]jI_-bSlhTᏲ{
7,{8~ޛ>.X+i
RcG(Aiڠ,QqaI	N`ӯ;י26We[Z9Iz~[h	biX~e%E7|XeJkRRH$̲5$V:ohʀ5i)YHq>a~d@#a(y1,C`~!k>r"ץU/<QyQ`ޑo@IJ(.]D)e<8py,8 `*kOuM+{!5#Nr,"@gXXd`"r,kT,2lLl6TY~)'iHOޢ5zL[|єF?JTt"yEor(\Пmqc\X^^;M;&J0뾉<S,Jj"OH+ =l")p'Xƕj%:y,2E!tbWQ= SJr0$/t?CNx	dLtT^*&eo}Qffb|1,φlH kPq)y|%%|MLxSJ~lbQѻVD>-_pD"JR=I%l]m+>KC}`H]6j1Fki
oo;Z^x%F]d+dh~s`T侵'JMom֒[(`?5{_ޝK4ʂ|	Ub/mފ3d4$K䏸y.PKJt    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT193R2Curve$1.classOPǿwk1d
*66:``2|tWPV(ML|D񴝈DpY9{?{O RcFYgg"х	10aƊuQǎTMٙL&ZOZ]7jSIXY{:.霡
Œp}U7*2rMJNC̫e^,k%홦ΕU*(\S-VYլ_
Y67<pWMZyK]eeuCV4a$5):/0g IJP/᪄B8(CnI(+VKw"EGIy'pT9%ǹϯ9&H2B.CGF
']F-n5hC=ܶ Z	 豇 \C>#O}eY,-Oq`l]5Mn2\Y2ҡh7	X⤈<7px m/ֶ%C2w=nvQ}=J2-_ӱkgڛi1oaHWC>oKJHQi=93'-nۣ[K$g'O#0:G'Ih?#h!yj($YRA,Tx+\bC')ifxP
iM-Q[
Ӓ}g=@w=QI` -DPKy|  F  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT193R2Curve.classV[WU$LZhK/hsOH/j2HB%6E0@ڐ	zֻRD]|bg2TJJ\,}>׏ +'ʘIs{2l=ѓK3֟?6b<K`,NEb(d7MDX:HChBbF@$HF	B
KR<FP:IDm"*zX Ob8$h<?<żp!c{VGHp<NgYqSR:qfpt\IawlP+M&rQYTd(Y٘Oy0)Yhpi-ojq2(w
Ę RЊX.ͫTMɊ88M+MRA6
sحTPEYQ:isDV#0*ڤ5Jy[Jl2?)Ji0毒}-3)"Ŧ@B㩊-E:'V29k̯qm7R>Zټ\vQ+AYMQ+\4tkUyJgbB7Jz:8&{^;Ճ؆*JY7YNӬm`#ApFzcYmP}I^
F0ppJ|j˒S)ssZ͓/.JBYcrF7YG<cI;cW;O%xA.NI,NߵQ^'K5驙Rr][xꞒCc0N
3u9ĝLO^-5W,y\QRM'iE|fR# :2x:E		hŐ=ed't0
8-F[~"8F/+3i9c1F^wAB.8#(L222ȴI\dd
	y7^Ȝݤ2Hɍ~\vc :#)Kir簥Hew8DjI,Ⱥһ%kʥSrhQذk'iMΠdhu4To+~kiٖw9/-{iٷeu,jɭai*%,z+ޖ%,1;4joYx
2eܸmj8Jc|oM9=e~v\imhiVe00];vLZA_{߶{Y*;	'n6t"ްvQ.vK2>qZZV.=\Mx%nU=\sղْZVC>_C[Ʊ}c槦c[}dvBy{u8v}o}:jSw!;<2<KD'^lqg`d6.UuR]~.rHlwQg;V_F;BB
]t\oPKU    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT193R2Point.classVms>Z䶼c$DMI
$nnxw@-}_/3LGi ~/gJ3 lLm=9=\}}_cBgJ<)N+4\[mwZK5Ni*N2=5:ti:q^bx(u<&N`Ap/u֤v2
SH]q#

cX^v[v۫o,EU(Tys|mPK)g[%L/xiT-VH6\&]=&\q
~Z-gxj{M^fyl@r-?[=nkLvaR!#gkdS5uݬ,tj=zb2vl7¶Lq<֐pBkktFwktFjtF+T{ž`pn}:L)E폍QBZ	cfGƿ;+q8c/$ocq|ܖ~ί	ېېLbI=f¤"DI{I1i@ AKR 0HFY@ W&eIwY&ŉ?	Г&=HOAI?:Nt0x0m48xpƠ
=x0
`[/~8k#4X  ,~gz`9<
X ,^,T9j9T}I=}~>p^^yC
}RT'JNK?Iq"3Σ^?Ht(-3%eKoݵTLL
''E<*.5?xiĒߠʏWb*.5ؤB0)A4Gfq=xc?>_K]j	i5RcG(NiZ,aqaI1N`o;ט"k<6WekZ9IZ\x[_bKoXI
ԅjBRy*mR"	+l
Λ02`MZ
iROkFHJ^ː8w¸ e߬ur0
"/
;boV{3"#Q	%aۥ(G">PeZ^
\p9r$ǂ!/rXt6ՁU@VLQF !ұFE"æf#>1*K1=yr
_e70MjH_DuI7h,7A)"J+&7.iq*8r\&iz$^7Q|YmtBpp`QET+q0LZaI;	*0T+)kd`Q(

[_\R !9}ݗ!:vC(L0%cJ2U6(/xR76ad~&dF":Xì{Ks[l7{Z171ٖaJ)E~+KDB[Ytl~
)(QHI$ut,
M!cvۘ<AqW6Eokxav9+g`YIQΞ@(6hT[KnGP~;8k4<5;hty:_ڼsy{:iHqx?PK%{ߝ    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT233Field.classVKo>#΋h(cӊ"ʎbiXLVkGvVhؑQL"erB aP@
x.Zt
}CuEFZ;wF$E8;=_/_,=(61yC"yb"ۋx#oIb\``!RtVB"#%4
bX(bK,ϝ B^r XֳX9_-bk}wfvv2=DVsPUxN^PZydwvKW*;A&`p*~V-ձt~0G*BޭB~)(oRa;(]bu+y^>
3궿Q/`V*;A_Ze^ȯ͜=VP^yj1
C`Ŵ +3粈AAC0suEqB9Z~yV%+ RK hh@q^hR#W#ODD|F;%0'?4$SI)3eRLzTNnM#$zM:bIS,ΰ"Ӥ4,^]yz2,~:5ﰸ&w
L,BI?f W*fߕJyk7>(KZQ* QOITyv>SJaIĸ?qv(NdF#b'317{1]dFHuUS\]#7_|Oclյ-ڠZׂI<{0{\xUZxh&MGƽMz2 S x
}az+>F=Awǈ1^`!z#_3:e)AAi^M]HzE]8j{=BK޿ҥWt	.3,2]P:2[S)W@[çeǶ^@&]"ٵOp|1x)ڸ,xQ'̑0Gԩv4%
!9d/Ǚ騭ʙ\P9+)g;c͜@
z3p̙Xm1
9<ÑSpdM!瘂)0B0\s^,p!9`u.EGE:.p3zןO;rs2(|қH@i#!'{
Gs JHThtM`T x	V>Gr/zNʺV.$bف@*gJ$^Տ!(;8X5xZZl5jd5֯RG\6~Xii/D3OC>bx]h~E(m"C,j1]x">9%9Zßiuz#<xpcĚ⽌xAy%0~V
_ٹ8Uh>Vnlt̞rY
p4{5kPON}5[z#BՀN5vwO?j#i{כ`
G-**l>&M־]pKɐRb~J!M3r)?
M3*4=&O$@țxuַ%4-;kvE=pdkI]Ǖvvw-OOZə):-g^UV#e'-eX1d%R>ϣh8B!CөWIn;'w4G8nQڿAQc3
Uur?ƕu~D5&T6~x=11Pq/v6k&(\-i1akp`=KZm}R8eZx9q(8MʋEyeYw]I$]1CIPKai  '  PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT233FieldElement.classVkSg~lI\5^ZP!EmE
$HڊvI$AU[{ثL~ოi1Sgz	m39{޳o_~AT-m,Q==lQGY"͖ kE#oшn`լ(DW˘ y@M
viP|J J5WfQ
2TRwvNY
I-MlQD^M#Fn쀖ZjF5(bFh}ʘZOCVrK2)uPM5k)R~>2h()6]i9 -G;rW@NE5.KfFE6R&d3n]W3ndcs*#ڤ1MV6Ottz0GCVR~#ΧhKvY
mQ[rF&1gS)OWaTn_rvZ>lZ&˞rOmSyʍ%LRN{=TIC9S4=n4`P< ќY4*ʝ[.n̽#GsXU˝0vs;T:Y\T.yVqr)IEϫ4GrF-$YBvJ%aG$<*.{gRS~j%в=.?]i#>f13k[k.s&`t{q{nnK!}HTƓ
=x 佐Fe6ceԡ\&-m{1<ư2jRVC%1>;ĔBЎ2dx>Lq/0(ab:$8ia!ːcg`0,<Ù0a8"Kx
)4Ca`
4zIbwMfUCWLS|RR2h I_tH3iH6nk('rsw~g
a%Ce%Bo{5yH;VgYP.6YmV"pjI`'/[qe<1b5%B@
j?{х=_x^Aa\vvF&EcX~uԝ$~M\cMCΩT}7/wxAbtIIlI/"q_MͳelC53>DkQ͎"y[0"F`DV(P$	6'	dsq}gKi:VBY̵[8knIT,.v$sd;sݪ\l9(=SuJ%ŉ~z iRߜ_'uMt'7>\Ɩ%5?%̧o{Zvsm
Kbf3?~߿}GMvykDz7oD'Z)//v$}%EBPKe)  L  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT233K1Curve$1.classmOPwk2*2!P &fdBH+[Vvyc5ox`Hx""\{ν{ߓ~32#Ѭ;18w|1of`s"AM׹e$f Cf4=g'|4WOgE3T{i3_jCmpAZL~[P9sZ,-f?56Zu΢e4uЩzٲ͂j;پyn,sTKeʥU:nECJښ:}iIjRhU3/0g; IP'^%	
2q~8+2EH6Z)}.>:Kpȳ^ޏTVf>@	9ΜxvϠF4AR"|
w<Aո 
Ў.gA D+bAzqQd%cE0|qy9sA14Å[W&5O:t-a: Yt-qRDtk`I^'|6zv@%vA]zT{u0\Cxt*&Zx^K믆MCc!!$//֤
=!"9[xbmaĽp@0	LB3@1H#@ MʉC^ꎻx]o';@I}DIejãh?61	zv8=|ණh5&/HPK6>|  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT233K1Curve.classViWg~,QAu5	hKT*$aH[	&343ڕ?hb<9ҟ/LtNr>}}׏ W.9ؼ)ϙ"7
ޛu;0Xȡ*_h/>GX<Ń{81)q*sc|,a[*N
㉱GX|Td|LTuI-?
$9јR +rv&sjpW|ZSL'r$zE!e5U2"iQ2<i
HBڤ,rD䔘G4Ja~B%eTΈ1Je>d9#.npfdISF^ِk2P
y
fe/\#LyEUv[e%XBL[MfǭtV1>WT-YMDzdUxhns]
VYiS:97m_r~B,<\,tCtd=ap⥷AZx@U^\Fw_' Cd-fZ͕SK!S1[3ۮr:P<yl <<ãG<meҶpPVVm&ϊl\uv7M*}ު^Y%aU7h<2O-Iwd_54M@`5к,.V	
;a cFƗ.#<x6Z GMN&aL@3
"`?Ƅ	^@+\qZQx^d<4M28Knai&$&f01I\f"A1hL{ǜ1 =HBg`W<=8l*αs 	U󑬨2=6Q2*lhf90@m"]*H"oIHWć+`~ON[7Wo1Үિѹ;	ۑ&k"dUxpq:*[v~oM=]vfee45W؉sOZ֟7JS,-e6)ln*N;XmX({M:G,PykR@nP[,_{QV{i`I`eG;2r͖֘,+)ʺ}Utmhn)n*'9O[i|xsW3꺏w~ũ{X:z}w{*i{ކ=p$ĉF-82sKY[{E)h~Jy\cEYh[MPK
k>  (  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT233K1Point.classV[wUL2dzͥoT(MB(-Vr؂dZ&LAO/CuڵtOh{ϙ-KBe|g=O 
"={+v\?BۓC
z/Vk}yxhy~X>748Pٮخ"J%@xҵDkJo/1\sJiU+۳vMA۬q\{rZsBJiZ+5;5Ye^w㸡z]o+i;^?	[Su 㝷kU2\/Ε2=KSyTZ/$ڳOGtZXe&M:Xu=r}Od7~+;UuX$ cӞ_pEA}ŋ_yDڈyWy!
J8mԿ9sʂ
wKvӰC𤆧4< ;zٺfI?*f䒄lڻ{JU暋ݣ43dĎsVbjg[Q;T`S1^oHMP)`y()|L7@@.0Y1<g `00t0t2;28hxaCDA0Darz#8#uQc	1p\130p
I)7J`/313d8pu	=*k'&^gpCm],[gӀo9KƬ+tStӗR_J@7/,ƏP"KYҚ`	.ᦔQPhE|@B EKս3Q1}6E\B2}qz\P1K"&*ㅅ@WDV]C>
_`Ls$ -dhh%>/!-4
,t-#ExQ9IJ ?wR[ -W] c8jZfsZd^ȑл
cgj"qB5B362"\8II$E"fk`fiD+IʧFLh.3,~N"fZ3Λr#+2"K(%1!:\yAJ\ OKKoyW	Xfg'3u7ٻ9reD$Ȉ4uofangY崑#USd')TLt0KQgiة!/K,04Ӱ\QR]t
vIB]Vancj!dq.*ԕPbwrx$ۈǃ=U8F3Qz*}̘3ch
S`np&	-Wƥ2:C}'+C/䃪3,ŘԸ*
Z,t6nH+qaeo(+AR_AF.Rv1w$.᠆2ReHLRfhL6@i>ɉ
Z6"ZS*\Tk2		9ILAI18`] 7>4t]qlGAMdz87}Z
@G
)6;Eד+cTW13[M>tQo<ڸ+'5(u	{)MtDC7/"}.ltY6}-{>
PKRI    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT233R1Curve$1.classOPǿwkmTd
*6lbb "#$(j"/&1&"D  IOۉHzϹs~{/??~79Ώ3q{+]F;T5fW"`keZ<bhs݌x^}'ctV]9C6%֝ͨi[%t!:sj(/+F=TҹZkʽE*uZŴU$7ϵd~KYrd3JyK]keeu]R4a$5)]:/0g IP/A	2qqQ8+"Qzw$=+y.>:OHsn>I;XΛ3pNq+|d4'~tȨuAܔ!+vt-{	 "^{R UDC1/gKn$
+x9MKyKV&UW:taل Yt,qRDt`M^'<6zw1k߅E"wt=nvQ}=j6qï>'oZ9[x/W>oK[HC
%$BBȿ4&-nïS$g;Czau"OB;BF?,}'6uD y
bK\=qۦ"x칃$B<h8p(LP=
ӎwI#C;ܡQyAڠ݉PK p  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT233R1Curve.classV[SW-I$,
*ZC@lBHUI4`	Z#,D.n@gh҇V)m3}7GKl6E"L;;srF
#e/qpRl})ڗ71?6h'ODpXzRObݽb(117LBɞxo/8g`/ND=bw0'p(.Fa){8\V˚){±<FGvҸ&HbRCcj<<?<>)ŉU51?1gSzAS0sj`^6HHɬNyU3q8TV8WV0)+"LA**%3by.EӔ/,G#(yU6UIVԴ<¸<#ź"sL^qUEVf>вn&ǲ)TgU2/̪D:B5Li3vVgB(cgT^f;aǓ5SBx>Y9ǡ骼(KdT.2Քt0e48/'VhD3OEOo}=RD)>0hV
6.V9STԗlQ7l.jl_i:BM<Ypz0Uj(
](~U<y4qQA!"0nQt5~NQl-eHm<'kvc1j=nv_٨bHQUJ*Y1vzNX[ՠ8G}۸E+'KʤT*ܶ bYv#+Aq*eu(`2bЌv3N>-`/<^>cWjqAx2&<ĤI)
4Ջcp	^$0@󒁜Df,xq) ^Uzןz?]jKvOy)'Jvmڔkgr!B5>g<њBs'+

ģ~F9ToC#s>Z
o?'Ɍ{OE\iUE*M U,WQk=9N`D1uʬ;^+&q*[~o->`yqZi٭j
)n=8KI)ݶ-Smn31˞u$3kx^."{.kBtvQ!]Z('-td
8T7J_d*G)Зʦ߬,nhys2}hnkmk~#Z|۷xs_3Ew_j~[7&Mo8񷵺pFSq	~8!ĉz7vaYbu66kP˝?#q߃A-Ov_6ҎçNRPKtH_  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT233R1Point.classV[sTTˑe+ŗ@546RMC$-M\][IEm)ޠ[B_xHvud7I:wٳǿW K=tǧF2OKNbkZZё1۪G+VrôX.㎥ ZZl&sv8[=f/;`t-XX#[/̅8iqulי+2li/A3pTtv*wK]u)Rŷ+.$OTuTIұ>-^-VKDx~=ݽikHDO{~Xǆ
Vnu#r*8prhCjuW[*i=oy1ۗ!0YPrK]p4ܯىҝ[F9@|BJB{}m*snS}ObߴVԎU+7=oHƦV_Rpy#!ѷw Fw "2ခ=x C,v0<ЅG
tࠁːbH3<ǐcqNq<n 
Ӏ  ሁSOO㨎f80tL20^1<,s'N1:Ûqba8	f^fx5}x8egxaa8K/35
:]n;U=ϢV9MNg+|FT*}@._wPB,2Jc%z2HBgSxo@TCEˤ=1#JI}
r("C*l)08UX~AAd;4쥟WS\1|0Z|G'
%ٯסFk)FdIҵQF9%uF0
}'ue1L+)b-j!0eiŅ	̛7;H"
\4c6|PאqֈDBX("j&3u2F$D$(f3-W2KD\]
J̴H7p~!7"#vhnpx6P1{DTY=r*^$VFaOv<[Xfo8c2萫5"MDHZ[c]ff9"@l:+?n"%
^읋
|J8t걛xPCAZt
Gahدa\SM*YNZw;r\{רI~*N'%.VNg*p0~pz&jf3b
;
|B㌋qf4s('Xs+b@b1^CXɓr.tԘ!5(!0M#4A$݄c'd1RlG5ZGokGou$ًkjMD]EV
*Vu7@HƠP1Nĝ&YyԐԀM
)(nWz'%[|)Iu\_I>.
AKͽrƚe?^6ݪTx*Oe1=^y,cJ]Tݺ'gke7߂ʓ2S+֥HձM_ĂqTPKӀ    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT239Field.classVKs>\.$Le"wAHS^LrBZGbI(Ċ FSIU|pJY˩\rHYq|=
=_~33mH$]H9uL^Mihg`2IĮCX;Z^H@TeD]7gX5\ZZ.#L`Cj"=1DzGay)?X<!}ZY;<SEQU"ӽ.V"FWK*ka&`p*f^ЉpXLWoUV*7j>RX^fJh9,]jɵ܋59bv*Ne\*R *͍Ze- '<jTK5|pL(||9m>|x1FKT#ȸqm$qc^ZݻHm%+ M'5N:
tDu)'%h1v-;ї>$SES$[*&͢WȰh-!"z,b!,HeQQG&MӌIY\9,~},>`q5I%MH7MzfYbdBe	QP)orjXdXx.\_",&BԅEMINV)qX]_ d~{Nu Y㤑v,'{rAc!xJ+TO
|iH\_9_gdxFsGPc4$ŀ]h|l,<܂C-<L'&NG|V$} <E_\8BgOy `(h'wimw=tR1R1#ܑ5ʣIT_ԣs:ﯵ!f_b4}+]*?qc.}4\=O?ʍct9>V%ԇḿd95?bLmu<$lAAV\W0Qlˬ`s}pQ0\(7
k1rm~
j-xz؂=lYZ%x<a	uMMo
Mb)XkYa TAp^bunX~@ڜ7FnXی&d%>}h]Z刢)(?elURt|)Df'B&~4} ؈("ӧԯsuytԠOSo>Ǚt
G{OܓH(#bQ(F*jUfaꉵVo,줤gO2bpp|KOI>B;9=*!|nu0%bE"'%&l \p	lr&6JQ99Y{1A7?5KO4ҏsI"ΡzSɗbhq&ߠ
?{Oǧ}^{byskP`uWwX cMpnc H^g5G_wBՁԓ}21Oi)zk:gPV#UT񉺫9ƞE2UGZ[(ٽSKj{?p61`P3d9ɻtM	rJ ƚMr4#ͥq[A(Kv߅Ki[vh{{d?
ٓEەr7v+w-OZ)X>mW
kb&p}v:)Mxu.=MO/I?P}hjC!B:_#PlMßn iџh4>|NuP^-mdT+`~5Stz{Dr|GZ\i8ŧפ<sԤkA5B((COcO'>r/XPK   ~  PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT239FieldElement.classVkSg~lI\5^ZVCڊ,H
,auI`w`~ًtfjgZԙ^CL9"0a9}{
w GG=<qXn>+>&[u$%==lV0<[+jzBtPknMS*8GI#<Qf5FXVԮiW6-Z))jȎ=KMEL_WKYZziyh#[FnI&Ԑ8Nf,ҲoLG%[1-gXgi)հȣfeIsaކSʔוL:ޣjZ;tnvM'ՉBz4Xc
9&ծڑJ
eWtJh9`dS$m׹zɮ/C-vsHGLr&Ij!wuUN@2;FLds])uQv2gZIuG5.|PuN,Mw2C33Tj'39*@4'y|&MArjH*lywpgh܈\N,մhVad+[:*UK;U\a|qJsj#kѬѸ@$$Hh]	;%}wF)5i7>\b-SFwvX˦[ؚlάwl1Q
̙$v,s/ޗC'Q'cD{ ${ʈ2l
!h@2cxa
dc-qj<-cэc|v)1'dl |
^`PL	q*):8C!00`2X93Ar?pE)40h{ܓɨFJO]堥$O'!eDWDѹ5^gѪTEnߨᕫ$r
{sDW-a5*C$o{5yH;YP.6YmVԓdO/8Ǘ#xȈPTf1^\IgX5S.
z9S[][T0M7);{H$8@O-Ǯ;KkS}<`zYRt[ĵoYN''}3&A1.:^۽1G8y|$[|!(ۜH(PIS_8O]JkcU-TD\۾%ny7	^tKp%t		2Iv~jѭZB<޳K9J\[T ;[׊^ZK0,R)~2Ů,ugؼdʃ]N9bbn^7%^sw%lk1vQ|5Mux_gݨ+wN?雊BUY+دWX8r~tPKw  M  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT239K1Curve$1.classNAv۲bAWQPARU#&BH^lGڰ0oDh >$gw+"t眙so{_~~`h,B48 Fo"_[exHP4ndjCU-'|0VמΫ:gqFh1ԺFyAZ\~}SpgVec=TҹRP5iT͚Lușښi$wkw\NmsTO鸡u3tn(Tk`8ErX<IM
z΋$Y=%HB$K$P2ΐ~vdH*;EGդE<vhEzLe
D8o*B1h$#+2Dxd=A2jpUFe
]phA4VăHq1,ɢf2íe3"/u4paRՕE}XM%H'EDulCg=(=$xGGf9C)ki7 `d{ޔMa'}b䅐
oyS_`"PB2,KJ?kꖟ=%Drv}vq*$1	gM;wb#9Y$Ƀoֈse^N86xco9BiCHejtlvG=m>`xփQj^
ڜ~PK6o  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT239K1Curve.classV[wULBK$-	Ћ@&4")Lv IK`/> ,.?/>I)BBZ.g%{s>}./ :n6/n&=3{a7d
75k:}]X4cHp(|#s85 eU11G&'%Сt8OD%84>§Ʀ#'HTOiWeIԍȊ|@HL3ьUþ'4DQd]oh`ʑ|nQ@$--J4-7KIrw'f)'y9!1M_g24qGA8$|QdSSL78	#HԭI2W
yMd/\&ԍi2yEѠC?Di&>^K+|IR}T(eZAѧre1á(蕃,0Z爦ꆨ:
X?K5<9JG,P~m+*gޘR^7l@fBX5?IA'+]¡T9q)0!n{PJ& sz`XDY/,h9C7+MQ˺!SE1'Ӵ.r:P<jyl <<:xyxɣG7ǞV}uKDӶ{gDu.v:K
rhJ}޲^Y%m\Wɡ+oE[n!I^4M@a9
;Y\*R1QvpӊŲ+K7Kț/]8xl4BЇZ[0.`#mlÄFjP'`?&Tƈ^@\ZpB@/^ac')/1RGRFqލaL32È,#2#iF<8d=@ 
bCz<
F3bx0
Տ]]_ٹOoʹHFu[(]{h]6499O}][IF z0uimF~[Ň+}|~~%[do`_ֹ;	ۑV'j5'WmSa8,ī7ޔ5r~viڭ'#`3ZLN޲~K@k8l[V 𪥲eoP[;!HuK,n,_{Z{ibA\cEG[ˆ+3sf,JKgڊ}ed8gn*n~1Suu
|˷xmW>jr;=,ښ
F}b:}5ē&*n^{3Rx8GOuQ
Rz1+rnCI])pv5On7PK!K  ,  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT239K1Point.classV[WUd2pͅފXZ(
Xt$`fKw}qb_.]K o
(=gMe|g=O [g^t\?LfnrW}vcKvvU*㮭 Z\]5V}x	S"NlZrF]ߞk
lpvqjVș9*qiVj9Uwz)8$,qYAźp[Wvj&.xAp1;cתdX2=KEDZZ,$sOGtZXe
M:\u=r}OdOo4WvH~"݃3_HEA=ŋ_yD<F`Ѫؔo{FN3,@D_J+]5<Iٱc¨8lVA.Ih6t]eJ=AIlYَɞ-oGHS2-x"6C=g恤%_@@2
Dp~=x^^Pt1dx

$ɐbH3f`@;xaCy:`4P7^d%ᰎ^ֱGc
80
(o1L1L3Npaa8	o2Ig%QW^cxaaaMho>*_ƨڵy6
Ska~Zf6}?(4T⽹|.G
%(	-\2*8"	֎߰Z]>_
D~uhTz5F03N^G"!_U;A~S2HDe(0*vj(GY)r\Dn28CSo@l(nGdk)#IQži%|4Mf`=5N	]Zhc=SEq<LLfȈs]$%q2
fZUD$)f=J0.W2MD|:y8̴H/ß`\43FVdD4PDKt-ceCtg; DWɗ`)vxwfw$H0i>Ru,'Y?;v"i#GfȚ)N!R2PTGa:"RnF)oEn
yYb5a}
Ə"n;WGNrr4vkTçC
/Mo_M]	%vO}(O-;'F<,Q(0D驠3cތ1r>(LڂuꚚ֫''\z4>fLlcFZR
4h5.ٸ!ąpI}C<HYA0vZFH!!-Og0C;f$|LINhב`|(טR0Z0\SIHLb5
J rC3H#5`8N2\oh"sԶ֛P4 :w@
-wV0LѴ<)wrF\OSU<"S_5f޳ԛ|袤<xqWNkRQ|R`w|n^
E\첎
Zd1|4}KUPKgucd    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT283Field.classWS4f"*tj{]D /qA쎬nʗ=J}C.K%[C1U$*8rn9_?1AGnH;2t7Cht4!ۗFފvIt)қ :Pr#;rgF}!ss;/,.B9z0_XY8RZb
!٥kűjikHOQzejTZx[>GB+kZXU]JbJE2&3ZNEydvfaAg*l*=.<+x7].
kU5bi\YEv-<.K4όZr[)TyWܨVV
kɱKeз{<!Rn2cG1MQ+cX{m)ϊS:#2C,6@5\ƣ͇%swO:h0U_1|HO	?UIYLrL6C<0#QKƶeΨr/mP&A1zŦ,z)T$6OMGȲ=JtR6
mS7ڴAaqEm:eO	Ӎ$$ͱ]YX<`Ȣ!%X,x+ttnxk],Ǣ,buZ'+jF{d6_xP. "aEOS^8x>)XBXh+Z5-%HR:z=NBNs^i#=Wgd8L\l-
Y#a82#`"+aɾZނv ry.̻/rM.\OG;v5 p] {'Gq2mzmzb*,4jDb3Mkۦj]-_HZE&
X cJf?nYXr6
 k&4ka֞φE=q=o7j 'N6mn(6}6py73kZF*HcjbWƧxkkXWoa=$voӼ|5@o$`OBYQwIiH~B	'B?1	',4_ZC?
1V~i~ilf+	DV^C/M&ϸ~	dƂWFJ5/-}Vs	W,c&9]㰚
q FoEk័L#޴XmdhbKꢿ7s_zlc5ߖ,.
-k|H3<d"< djڏ5ًZ=f6L7M߃!v1uٶOqyE#bPrU\S7E	c)hqDbܼoTY
om؝l_й8\)U8Tq;"No@vq0&Y2ui
˄88P)8XB2SmMQh.ۅt.;5SףQ~62qޱ34:h]" n]Z"И (P`w 
Z:5vkӺѭǽn
ߦ(C0Cj1rdn#T5	Sa+p6Zc؎Jש+][) Y:TVidJmZi	
n٥0e/@!=d_H@!I!!(`B) .̺
o	t0Ƀ0ia
B)AAy8
|7K7/`whXyrX#<@ch[max|@g/!ϡ"\-?!'ځ&qɼSP (iy0/]'d`0ۋ5rEȹ&+]^fΔ7ҕ7 nY^^~A.e\%Kr)J,UW	><NJ>uU76pFDt@˜u@([V7')̗luCc|
 kK+m@:.g?Z&24&?ֳU3=oF(C)sX
g?hM8{3M)i17(09Oi4cd!\gF.ʡ;PKf	    PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT283FieldElement.classVWW
d8 5-X!`RBE!P[VdC3[EbmP>sZs|Qm̌<{w{w^~
o) Em<b1b8nG?[q$$l	V0![+vkYKGjjygKi%ϧI
ʪtzHzl@)CU,u6	-MvQx^MeFn]tg-5#Z2-sVG6;ܒPA:fKe)E4{Q.Ŵe#9+e'T"i"U3F֟V&d3n]W3fds2"WۤQIW6O	(wնtz09Iݭ^-7\:*wO/
d)EnP.MM>]-US}	hY&sCېiQ,=e,NM+70I;K;WкODR!{ݒ-C[h3ef4`nSdThLbe-V6ޡTLҜ9wrrgiD|+,մ50+%ϥ*L0I31Y7yF[ѵtpΨ[%4IhMK!a'$
ܝCCՔhCa2lf<oj>#>f1?>kq[k.slH}&ߏw@| @2Q-!2v3T/c5$^XFVȈ3l,
2VLM0exa
VʨA	
<+c-x	vBALу!Tx1$a!à32drcɐg`80&#/1gxB1 T4p.AdΣ.~lV5:t4UzJ,%uWTt<INZ=8JxVIPB1vFu|^C)KB(G+},> ,GDBDBw|&I}fq9ʅna"gYq# é&ɞ_pqWFl151bU%B@
b{s{y8WY][T0M7);Hr'8hm|\ΩzjT}jo1=^DRt8[7/''}76c a}Ut%(Ryh_#b	H "
e#dSrx8fKizVCI̵]>tUN$|vpA+-u"Y|`pjrV(zw7;Պ7r/*LD%}{~y7ѝl4p`{7-F^wȽ'γys0ʮ8<_M}<v~q:/nWw *엊>o.CsNOҷb&֡PK*?  n  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT283K1Curve$1.classmOPwkR*2Tm0Y0/(լDޘ(~
cx^`"B4((s9_~~` cH4sB$:? F'ih,W9e܈D" E;<5i	Y}~p*P_+/HܙɭSb*|gN/2Zem*gn;&ո^n8鿎:(َlrg17'ͥqKwʻtJ
#ﲢӝ>7ds$5)&/0 IP#V%	u2y~Q8+GEH&zZZ)/B]D}tԑg.9?#s:"7̉gWGHE$a\Q!"AThSQ*\WtХ	͈)hA;*+(}aZv<ŝĠf
^Lms+S/i&]B,Az8)"z50׎ u$c;b=;HvϮ<UW&~5])zSB0%M<-/WC`J&aF	=
=!("9[x.Rèw`BZF3bc;yA7ke^{.x=o8@q}DIej]ttlGݻwm>`p64
=!O
Z~PKP$  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT283K1Curve.classVWW
Y&	#Fօ,`	5D0Lh2C3]mmCVSڞoH =s{{_Dn6_[ҤMzݗd%cN_r5ܾɡ$X{0Jlŏ`wWww85Ht'G"]x0h넔STx\j|,aW*M%ɱԥ'D߹LqOhl`Z+Ң$FNEc6 Kx,ȹxN˪PE3bjq"(IA)rX)Iˈ88$M+PB6ph
h1QSbFѴŹ	q:GrF,Q+s9E&;u%Yq0#Kڌ2
DݺLA+٤jY6Aʆ^JNkT3Ez!-I%'>ZK.J[ݴu)v܊>M:yP􉂢jyEq"΋%F V9!a%MFʑ9j۪CbqL̬`RQ7|@fJj~:p3C.'eTq!0&a#ש
%Uz`PFY/iC7W҂O-Lu\Qnfc@ϣGyxyxytaȳV&m*ƺDvJs
f{&946l	;|[}6J&+#_[5f[eO@qUo)O&}UEN-t)VRZsŅ
) _J_Re|SE(xlè=3c1.6FЂ36vV"#(9Yki\vcSL3"12ÈHp1(ġ12AzHoItFqՃSö+<;
TUˉ.`[bi e`C3C /W^8`I2Ի'	n{e_Pqh	7~#.)$SiN>][KXIpu.a^zn,oZ`z5588JxLY)ێwlwWݚz{q~Ylysix3
;%{ǒR-i|Wp:ݾ[wUKe.ZBR#Ek'.XJGq9`ibqfY죉%q%mFU,;*nl^,<P6%MOf?8lQ-7-}
p0okr48[N}o-+H-MeܾZf<p\<yaOh
[YQ?`(mQ~č{V_ۥ6V?>iPKqBz  8  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT283K1Point.classV[wUL2dzWԊI(Eij[
"4ɤfEx'ȋy\e-]+Zs&i˂кd&g>6{?ogHI	=Fީ[R<lV,R]=18҉]]E:bJk+kJo/1,8%Nתgfm>?XJ9!G%΀4-\<N;eVg$r؝8(0hwں\nJuڞ@oOtE/.xvJ+eߙ+ӳT<UNժO=ctDwUvj{
v7>\٩"tOy~*C}}/{~y.>F{ުؔo{FN3,@G5<q
5<IّK^aTO6+ $wT2\Ї $}lxvZbT|[k롞Spuy )|L0@7@fhóbx@`ha`dH1bv<o=	6ti`ȡ.ᨎ^ֱcù
80
0o2g`x8(IS2L&Ћd8ë1000pEuW1vmlyMZƭ'd/O/
$*
xO._+?AQB,e1Jk%zRFEχ2Bko?,*}?ϖQ_](Z"լH/FFIHq[DKyuq1gB]_fY.
(|1Eε8D#vk#ȏd48wԛP#?6#Vҵ1F$uF(DbI]nODq>ƈU3B`0˞'R>Xhc=SE`E>LLfȈs]$%q2
fZUD$)f=J0.W2MD|:y8ʹH/c73FVdD4PDsعYޗȋW;LȰ.wev;˘6S7͒/&"DF{oKm|5Cdet;͊("k8H\BeSHu=~Oi
5k07~q]!=Pp~;@p[ئ>ug\+|Fs7}5u%=~j!a?6`qr@e6OCL
j83f3ک(gn-\	mzrBիGqPjfK1f$%5-JV+J\aY
GW?ăo̝$	+he(bL}&)R3c&^Kr 4ĉI
Fr)sS*5u$&\Ӡ{0ޫ 7>4t8R6# n&2w9Mmmy
}I#|rjMӝ"}.9*:X#25\g=Kɇ.J̓wyzMjp6Jo^
vS2c.KH]ֱC_A,~c| PK}ϡ    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT283R1Curve$1.classmOPwkRd<+C1x, "/(j7&_M &~ ?$-"!s=Ϗ`!%r8 hQ񦑡Be`"aqtA6Kpy>pS>jK+Oy3	Pt.IcpAZTa#_P83F.-J|fkq}p:7{[2Lw8q}+k/Sܜ_°ŗGuJixQe%cM7.7$5)jXqIs{J$D%THpUB^e!Eoq(E%J_+iEGI<tLpޜsBs'_s(5Tp]2=OP!IE9nPpKx
UA4H*h@7t(H)}iN8ݼE^ZpҔkKcF i:Q K%Ns5#lUmzGGdW'C:_MkvYk}c3B8#M<
/hH8#dyݩXtLszuˉ?k|
d}maпp@0	LB-@H#eA7k՚=*qN'"ǛN""tʓHGa
c'?jEgSd۾!ܡQh y
mGPK  @  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT283R1Curve.classV[WW$L/ZC@s	$d$`	ZZFCf& {m7}C}P+*mW[Q_jLPZ]9g}?W Q|׍:_g^e1r/;bo| Kl≠NdOQQJ#RZLH}=h,LJbX%BDLx$	ER=I1,Ř闑H2t2P<
FbO:#}H
*y}p,Lz4&DIe&.8=>bՌpř^*(Kly50'U	dҒ2yuN-9*|N,)NE5`0HI"(yKQiY1")
HQ{*jZVf՜<<
e戼h L>̢вaϥlTgTR/̨DN[uY6΄1lϖ鲇r^u=8O5s,hhQ+srU^)z+i`cGlapX9ݛtYK9GXl(S4ͩ
kçs$dvm١m}Q^f$L}jeyhVhܒaT
~AΗi:&t{պPjx4h(c<<<B<<"<<b<<j5NعXvѶ]\	X99ȯv9U*).}۹6{o{9+NS(sط;^jBO\qJHo-|,T/n/!oYr
6O=hЋf;0(A7VA#v
aH@=xn{$q^2r0/u6c0	$i\fp``)2E3^d0Ǡ%y/L3YŠ 4/*O4]+vOly0Tzs\;+4]JTv8)/4wD<PK3ಿnU_Cvqx7~C ຟXƜC|-M)Vo	ڲc
Jw7ǉ6f[5fֽc%!a$XCc,^ŧ'w:o;n[,5- _ΒuRLmT`JrLg
X*>clpuV")ް'-ttT8T7*N_f7Gї᯲u;a|PaEyl{hu\rkq^_	otZkZ&}5VqzUqI~UBnI*s!A__7`jw$lH#Ϝ:7PK0  
  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT283R1Point.classVYsE6ZyZ>t$}ı81!cl0&éHkgiҮ
P<RG1;+N)RHozz{{z{͟~_)>)۱ghztjTn}a._EUJybU-e@xԱDKK4v-X:˄}.'9_wqǷkvu簂4
#nuny:s3vUƘ-%wy4;QNJuήOtn^;m]2\]bޥʒwJ>I:Bѧ%֫Ŋ}6Qq/:vbr6y>smHϯKPUߊ<߭zDN[PZՖu@$6,[eEFTI|eOýp4<!ىsEέD}]>!%[HMb)>'VLoZx+jڪ/U$Oc~m~'\|dH_vchxn70j v;0`0:zzRi2x@7aCO43(ȡmx#xg܅guqH>3fax.&^bcgxEs^fx810pqSı2'G&2d8*7'w18V}R<Z}4}8?Y\)XxVtz(.P9Qib|C
%(q
\2*b8K
=?cߜ2{,
b(Z&լQ (O;W5pkDy\zjSڊPITa9P%aUа~*_eLsIb>Dh%rfN8O@SA\o)FdIҵ!F9%uFP2iX&λ)b-j!0eiŅ	̛7;H"
\2c6|@WqֈDBX("j&3u2F$D$(f3-W2KD|:1q>2")7%
Esހs#zb΂!
T9
$Z0{Cb2{?Y3u
WG\%yi"LdD531DVfY/uWdG)TO`\DoV)ѩna
k5asO	s7ҫ)	u
X
Z5*-UO"qY޺
f'Q:{XXOX9]s\;Áh&55A̈	*3S+p3.ƙ̡`ͭ]j]C\x
U_`%OVJ1׺YsPcԨ#̢,0*22\7qOѠ$$'+&8!f;RR4>v[;}#^$_Sk&TU$D4/ʵTGe-hPBޯýjG26/u"<5`̣ljHAqЛ=):aOJ:Oqvnj^j3,aEVmSx*ӈUcYmKl
ﶭ%)Hݭ{rI
.Vv-I<)=žyn]ڊt_tlhTOPKH1;    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT409Field.classWs|IXEB ͬ< 6#0NXbcV^
)8pɇ$UTTrRI|9;D]@_ї/D4OSL\O:=ss,P\ś3Kz=ZoHǺ
H0Y_^P\?lnv.()+sg=!@	ׁ2WuD fE0Sg60`ɮ?g:-0:=[[67F"mݵvPÃs[ۍ˭֑!Y"a,6:ۍ=D-jڃݠ
?fa
{ssF-c<FFи֑շ;&#޹_V8ݩV{ÿmjNQ=^k;֖Z6ۛpMG>ݨqwV<y#zI5C<;Qr!?*Vq:aIһ͝{w6~pIc jAcИA'
63lЬAh|z\ee26
Sʦ"
qRXTmZ ͦI2l6!FelzlQ֦L19g2Ǥ@909Jo[t~d"K'LerO\g1y
&7-L?f¤j[[]%&L2YC%.֑Vs4;׃.˸WN/!$!~#sG7T4#C*Q򔋶N
*ղꪾ2i{:sk难g2'tW`_0 ~F!y<b-*J"%{%(`JP8H6p"@DiW=q|UczW㘪^O7 r9)|O``$O`pc臑<<s͑ԧnEm^h+hU1eW4o&tO$@)?2N?kZ+]wlngoe}/	v(UHEU.(BN
ۀTTqJ
3Ʌ9Ih{`z-qY#}|F> 7RPET;UXpVrB+팊{Ɂ+vA.WrpF>3"%M@i@hF@SҐ#@=Ҥ\a2P4!MGTF'CԢA҈AI'ϭ`^pt4c)
N.O'p
a]^GuB/N_;~Wo3']KK~N'Eh=놥1L}R'dQTy	J@@khh~
${"$=&Y(],
CDB,P ePRgQH1\%L#DI&G=@ؤWʌAuBbW]պ'ߐ('Lc`ƢhOՏ/'_QJXS \D/qgjܙ<+ǐ̬ayGdɞ*<$;芬_wc<_0u4:8͒fe]ʑ&HVLBdѮ3,JR4uFa)঻Θbl)-ps]HK1u>.ޔ:WQJ"5q!'y_so?5녮+NwqcX"k0dIX$b)qto?	v*J@&dRN	ϙU&x<~kԄ	,]HQ-~Q)tQ':^Vp2k:zdYW

=Fcw,cw2-wĀlb9u,2qȥtY728lrYYdBgRT$L	BDj0e=TZz6b4@1LLF6j-rENĉH"dGMs@E ^$a-ycO}Hb
=[/C=H;Fda}}ha$Vc;f	:AC fc&
_ac#&&qVyLCq#	R0E%3:눅D!wBN~YucIE!/ZɎS/76O%S)Gz289qPUMr<SvU)=jxBN=M"/PK0K  m  PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT409FieldElement.classViWg~L2IՐQ.TP"TꐌatH`f`kv7]_`i1K?_w23~ps{
o ZQ>hc6 FM:>#&L&dhCV
ԲN[FjjunM8OI <Ufٌ5LRXVq-MvQX^M-ZjF5(FFl}ʈZOd*QC5լXZ.K
+ACIaVLYi9ܙZv\5,v!-\5j^Txoe\IJ6H꺚Q#])u&(pH^Q}R@vӃ	_njټyȥ)ڮq%,(9#峩էŰj*iKW9;\1dZ&˾bOSyʍ$LRg=zr.ѧ~A{k6-MOt2I30Tj7ey*P4xV&MAr3P*nќwrrhD|K,մhVqe+W:JKKUlafb~\j=k9~Jh,aV	OJ"amKhP7Ψ)k?Àeh̎Ytgߒ.}AG"ѹ-|l|6~|V68\FM~Ŀ?De$Q+2v2T/c9$^XF#Ȉ3,2BZ;v13<ŰKeԡRCXc2q>{)/0`N؄S!C	c?&C*^FaDAga2F!0pa2L^b20tP430qX铓٬jtiڕXJl2:*y#Btn:i
W(
Z2M;x=jx:I\w/&a%Ce%Bo{9yH;VU,(]XAf=(${
~ƥM9|.c(*3jK/\$7GYnԍmjvK5>jahnR4v5J\E ?Oh|\ΩT}/?v:ѭ^qG؈S^_Dě1N0ɃMt%(Rey_#b	q$l2jEPr*PI.:W4>s)-^*{(~I^KʧK9H}unbHNW*D'McK[Ifu'A"už='N^og}o{gv]ߛM܋w#Y{̳zlX[kkX:;LC<v~q*'	W  +gZJo.CsoMZ/CPKVNZ  n  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT409K1Curve$1.classmOPwk1*a<+ e:pǘe$C@re%kAxcb|"iDsz9' )37O3J(̌Yt30ܶ[$CX/qCf43>fY+SڜU4
鱶v -p'_\Đ1δVbJꜵbuv.iNA`vJd3wfb;֒jT*90R|K%DÞJiK]e%mMМTp
EZՌV$9=%H*%\P%P.2Đ~ve6sR$JoSr{"꣋*Cr.F|
D8WɨAHF-$1ܐ!" Ad,7eDp[24͝S{P"h@<FtSw>kzj
.)Xr4y)chm+yG5_:a	F.!@ =Kq  lus=$}GG+=;W&~x]FC8`ZŘ|Ll|)G_p,JOUHƄXxV	x5uf7
bC$m<ѵG1]F8 &&hV`At$2@amcT*CdMIx.8x.xOS!p$#OoӃdi˞hxҹMC#m{0@@хA"AoPK<&  E  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT409K1Curve.classV[WW\&	#F!	.UaHZbaaf& Vk/om_PԊJյԗ}&j"Z]sgo+hJX%sp	X;go`r0A?VOwbh$11Ec.?!;n%9*gTM5#G
\qؑ֩x<1:P7NGIU19!89ggCzNe03Jh^2BqU2ʼUI|,+c:䌮)b.P dSrpɺd}a3¡^*<$2st+JZeU!;Uyiir04LͪtVWg̲¬bZ%իd	-X]&5jmvNʑX霘nG]U!}:WiϪ>J՗E)OF\d%xu0%48-s<Hcߴaf)y7Jm X21.Fv9CUV󓞴1r%Rry(BUVZ
Jf$aSfBq
(Wh3=kJS5ZeT(o)cimWt]N~yy800Vm<yDxtaV&m2HqlQh@~͆f{&9Ux͍^[Y%ͥa%TΡT-\<7'Wb|X`7]@vT"B6ঁŒ3KKț_or4
 ~[0"`L&MA		7:x4#xD%	x)Vd5/ yqLL00fbևļ"TbЙX!9Y|c"Co0	Ӈ!\aT|vt!pRxe>AdŌd
=$MI<""]c+pZ6î	IG$ZSpS
Hq_'U\`*q!n<+
7	u"='xkj%
,N؉=Y59&a XpوTVPYKWc鲣mmen}zW~*I޶}[[Ck8j^;v {p"G[i1B=nj['
:
ńf
:@*[],8X2#jrr};PBWBs\rt|
^iS_lyp>uC||ͳws?}
Tε9zI~3H2sz[_E9wh2~9yG\k[*h_S
PK  U  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT409K1Point.classV[wUL2dzPbZVriŶ:Mel2)i勼P].	-u9eIh]lg}w~a| ҽJA:1ڞ=p6;]]pWފ_굋\:U+@GR4vmBmX%&ED֙Z=kǵ'Zi#g2WeZٞTq*̖D3UYWzm]Nۉ
FTH'o]]b7eתdP2=K3LZZ($ڳOGtZXe]M:Pu=r}Od~+;SuX$?Ӟ_ࡊC/.x~9fxwyؔo{~F+N3,@y<
5<1
kxBwEK^aT{rKڿjn*]Wk.v|Cq;Yَ-oG`S2-x"6C=íg恤%_@@2
DpЀC=P
dɰ)66óCCC'C!$C}q#{x@C p
<c:rxIg80@c( Cg``dxIQg10@/.0\Lݓ0(8.xt}U!׵kel-ckanĚ6?(4T=|6G
%(	m\2*8&	֎_q`RYƇ6>[
D~uhT{~5L0=B@"K"_U;JC*e̒Hha)P5aUPS\+	Hd1Bkٹ>Zܢ#e8qބP܎
ZI
RY4
}'u%r%|0f`=5N	0I{,cьܧLLfȈs]$%q2
fZUD$)f=J0.W2MD|:y8i^?ʸ`fȍȈ,i*Nss/#8% vI|	Va]b*1cn{7GN-Qr"l7+6rjv"%s
N7&#"5v7L9=~Oj8
4<`n(a)Bz{%W+w@cF]ݱM5|9dqԕPbGB~m*qrl
}L
j833ک(n-\	mzrBիGqPjK1f$%5-JV+J\aY
ǐW?ăl̝$	+he0bҲ>o)Z5d%9cOrDֿCƔ9ׂ)䚺LBBffiPR=DA:iwzzk7FM߶<jhcaN.y*:X#25|{z]7	zMjp6Jo^
v#2ݣ.KH]ֱC_A,~c|PK"4Ow    PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT409R1Curve$1.classmOPwk1*a<+ e:pn<, FH+[(-YDޘ(~LD&~  ~IO[$Be{ιw=_ Ha!tyAP:fGDev}
͢QFD4]ݚL&zkO|7מ1ZZ]
P'0TOSтȝ|qCWP;3Z*-֪?519y)i3̹X˪MnөdH_.I*z5:.uuuBsR>)IjRhM3Z
n0 IJpCBjB: C"Qz({PQ]&u@ߥ3r3j ٺ NPLF
B2j!Ɉe #f-#2d	mtϝ#A4ӝ#HDp!ZׇMݰ좹8Ν Lffw4}i\CmQO`4d	ҳIwG^V;woڅE2pt
?>껣pm⇷ed}diLB0-ƼmcbKa!ڼ:
ñpTF*?U)#b9&dZT;^76MD;ŠwpB:3Z HcƨTG.]0qN%(](CUg)IRSGN6Җ=s] G<fEh&/PK  E  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT409R1Curve.classV[WW$LD/ZC@Lnmu2hDlq({mk}k҇VUۮշ3PDҵ:swn㯟~W~h	u<9P5|(G7ri	F$Q+ҟͦl:)9X2NDLF3Dd*RHI_Nb*R$	%O,xɴ*%YI)XBh4ڗLgK*Q%Kj_LĔL4Iɒ(&R\_3t"ac>R☬ٱsy*S3j=!<:hV"\Y_5.͞z$E4-3FawMfѱ4AM
RI0Nd
e2oP!9YM2AB"a^14P4}kƠi^K4.;8nNyRi2Y1gũ\6r/LSDx70Wd-PlVr[K\tVf_\(ZRѾJHX6gZCEm^RxV>ڮl*fٲmqQˬhLqˮ4a׼vlw
smD,
m'KuRcO営Jrfbv=e2gKeŊ1)fg͊m9X=_lJs$+}~
<6hc/}<"<x<$Q1q	I0vqcۮM/i;ݣiݫz]Y;KJ.zjPw=WsrX} TgbuʫqPGC5R2z%kL\!cfw-Rڷ##:2x>E 6XAz㸀ZQ@'4ˀg/`H@
'5/#/`f"ΰ^h 2PF :4t a Lrd2`6#0M 1\wӫΡy>p+R,ˠw9okZha'PbQkiLP˨v=h4F빯[x<Kx' B"x>\ĕ0+kq9܆4eEv/:0FmXT.,[~'fj;=`{smh
;VpJzud<@-,[nzq5sKD<2:uP.^jh>^c'NV\|Ỹ&Uun,'R2O.v\<gWO쪡ۆM4$=	^_{x7wa{:}FI{Jz)wpʪnACb0[؄HrVVCX;BkXq[hK(HSo
PKe  1  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT409R1Point.classVmwU~ld+UJP@@X(j[VhAԐlJd (/?T'G:wZ#$ܹsgΝn+JAiOڎ?Mc#
ΌsS\*z~VipdxԶ*告U	ZR,I1R--/Qb<EL\ݭߚ
-hnva׭rfCJ
4ՅyNVc r̙}\V`DRSo8m*i:^?qۻ.j{:lUwpuzj+[^,$XE[+Duu<ۉWvܵY$O"}C<^,
xiGU޿
ի9,^mX
Hb]Gm_8_K`dAʛP̷\4ܧ~
hxPCVx(ݹh $kIV2^Ї $6Qٌ
oFh[r㥶ilدo]	77~?p14>3
0B1aã]8`
$N^CaCC!v2q@A0DAmSL=m<##:b(0óq02L1/0`be8pU$1/1L3bx%=8Z0100p$)Q_w.ƘXJ,jSDqaxb!Z顸@D
x{+R(4YB7qUʨP(sI(4@M|*|hT~Di<A\G</rMk+TڀM"&&K/	3`SV*cK8J#4C+hDĹ54w-݈,#I"<(ȋFA.DZ|"onXZfscdq~)GBo-hhjH͘
ԅjƅf&2udD5$$12
fɌB̬')$	ELt.3/~N~L̴H7piM3CndEFdIh*60mb /zH\UN/I"Þlx(6pLU!WkE8浵ƺxurD`tVD9~KY35DJ5/=pKcCCAZtG`hثa\S-
NZ*w&'wwRCOo^MS	vg(TX=,,YO'J\9T`4pz&jf3b
;
|B㌋qf4s('Xs+b@b71^CXɓr.tԘ!5(.0-l#4A$݄'d1RlGuZw#Yڷ;E5&lA_GBD.k\AuQւ+q:ܛxv$ccP(xP'SN
<jHj+ٓC:O$gɠ^9cͲVD/nv*<2XA<Vn]Tۺ'gke7߂2ޓ+֥HձE_F̆/qLPKi㬫    PK  C:U            6   org/bouncycastle/math/ec/custom/sec/SecT571Field.classX]pS>EZ%0Hj@@81ÝR dȖ#7'$mC۴)4/~hIfS;}kyK;{$9{da"Kg~{ٽ{}=(;@yr,ѓcc;%v.:}c;Ge{":D([ČJ$=:gG[Ƥ` y W,*È~@2!J߻UO92qChFzT(]lcF,l]̕HMz+糕<$m_NLvȹri`l%>_[>lD9Q\q|X)qMWJ3s8>7ܐtمl2aO%}:{!b1>[<ZsBijz9t>WY:8_ L$>qљan^i>X*wϖfs|wgi7ssҌ;|nbof|k]\r1'v8#Ӿ79i/p=qbZ!C0{q*_;XKIV知DӜC(cUfΝ+۵j?|١Q OGk7,hDHK3⣡pڼkR	Ӧ&
H21`
x ̥{`I^|;wց{R]Cpk
!d6h~P6͆GAa'6dmxl6y "6tCԆI"
]Dv 
=0/Cނp΂SDfyH<
D#r"y%"K"g@i"lA&2CdPi
Kcá|%;[9-.{8xvn"{~?[6AsC'ߏQVL]xT6=m2``H&T­z5%'u	[GXax@I10u1-Iv#qQ5p
#%(&Gw\Ĵc8(AL2&jJ:a@kyi)A6RkU=,I^
QB̬;@yHlQDL F' X+TfGP?xG`=(u6L
u8o})/;zɑ7jJJ/mh
8ߏ0|:n?qjKë]*3	W
J[:fS5;,*Bڥml[ˁi1p\Lj3UBQp0(T1v6||
<ҳUՠ{'\ǽFk1V/hO*p03jL}R5e#;	:|8њC*:|6Vv#t;Š@jVp0_ݸ[ml$#IfԾ*Z"i]KU1ݸj.lpjq]ftfdOKLJdNXx5{{(wGHa3nb׌RŪ-
,aNqeY_q1q*8XJ:<(jWiaS_0\6
U%4-IԚrNL2׷7H2[dƖ_jMw#7yhWDf3{]|E ȢS1ʏh;86R6|`oBzSp;F^jt		+9s#&dvetn¥b-":"ˌhto)Lω:\XiQ:[%^zqQ&Z7ܠf[%[,n1vbsk"ԂMLZ ;	E,/<jpkUG<׎
$\\R,A;HՔ⦰qyq4|.t8:שO~g?lӅ~8g?#i&~_&STjS,(Wq25|S@M.pu$dVy1.Hpl
529 dz9CpdGjC 	!V !Ȗ
- 큷!ڔ 	;6ZmJ5L{DQze}w)yO0eaN7J:%cS=<q9mtfc4Q3 Q?>Uk5Õ/|c>.aWcd?#?zq),6&ΰ{I0 1|H\u#~Xc.6%b𶐱1Ho,)͸7c[U0޸(gtoo'|~Y]z,nǢ/v+	GoCxik{HwG_}C>r-]F>/߲$8SmZISJ+|%q/aJ'<M77ǽIM&NxKqo 6_PKS~N
    PK  C:U            =   org/bouncycastle/math/ec/custom/sec/SecT571FieldElement.classVSW-d OkP[TCFAڊ,Hjj$KX] ت}_1vLK?t7=g?8ιyݳ7ﯿ؉|8OA
ExQbx xlyđdH%Zț4"lأe4q
:)@V#Zz4UO	(x>%EjPFcկfJbw
XSPg-^Rڌ"Nku:覀q#;_Kf,51ZvAeR-ZkgiG:r%9 auPM5c)P~>>b(I6=i9 -'W@̨E5.KfF6Rfd҉^]Wӊis{6N"WۤIŚHW6	(wTj$KCրəCF6Kv=2ڢlftb,$TªDwݾn]X%s̴M=՞ۗe'sL.{=TIC9T]ml4=i`P< ќY4
ʝ[,l,#9HsXU˞0scvs;TگYl/yVarYٺEϩu4ƳF-$Y	;%쒰[BG%<&&gRV	"ðeht"zhH$.gw߱)*gM{DWMVĿ~߇De<* `(_dg8 d4",#ΰkd,223a8C-dTcm	r<#c#уc|v)1'ddCx>>̄q/0(ac.q*):$C!00`2X93ar?pE΅4)40ah,xܛɨFJO]鰥$O(S#ʘD禓VOz9^ |(!W:~\E)+J:~@mc<>}KXA!:^O2sKe:bqa88j)raĖc\vOzEeF3|Хː!潂(ǞqdiWo87aauݢQnI9(Gr#ug<޿cMΩzjT}*7/wyA*btmIIlI/"q_M7h53>EkQ͎"E{0"F`FV(P$	6'	eqq}oSu̹kۻb7]'p¡W9ݒ:= $;נ[Vb͑@%J%ۭT*׭NMp/l]WUfԆK}sqx5ѝ\/,^s[W`{V-F޼7'n[е{63/
vm;L}<v~q>'ӕ;oHf-^Z*GnoOy~CtPK  M  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT571K1Curve$1.classoOPƟ6t(Tԡeltӱ@2$|A)WXZvyc=oL/0!Y4Q<m' esz9ӓ~n0708̎Ud`p#QM׹m'2CXqC5C~ǲOkghSVtOƂȝruCW0dynOtv.iNEzkvj8n;֒j[p!;V¨Krzm(e{YM[Q'5g'9J&5#apq=ǽIBLB	% ;gaH[whqHޯ{"VR+C^Ҕ?Ԝy_zrغ-(&!'!Ɉ]OYm8'#2d$"E;]tKQtA(z0NCQ
8cnXv\NZ`KkECmn3);hBCmE`,d	ҳIp> =D6ٻ	5D&o~vQ}7Qӵ#dm&hLB0/ƽ(ŞgBB(ñKR22q!S;COOb0{eMXyL(F;$?#8)(|#:t1@a7mO,R+
dMIy.8.x_RB`R| IM8$C[f?6EvGɋ^ PK  E  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT571K1Curve.classVWWm^UJV%/	OkejjoZOi{zN?ڹ
bHz=̽wΝrmIA/pyS}lMGYHяow+_ lOp0}]hw ]p=&:`w+Pg,D`$ 3GWcQFGvH`00їLFꟌɾ3CcqY8Ƈ´R-EI,"9yVVT>*'rp$kZ3O4 Լ+e
DRvIUS-C,rLf䴘TJqnL%a\ΊŜ>Le.dgkIrZ\0 Lɒ:%"QwkFT^aZ֍5\CT>P]$70yɃT:ćKsif7cvʪ
9EF+(XAɫP{YKNosLk5*n{Jsߤ(ɎY6Y
6sPܘXk3PY*j:ר%VO{QKÍj2q HÁu*E]<+f֊ssjA׌JSTEM)o+ʣYmWt9(}6;xx8?v<<B<:yyD8zVeҶnm!L4mxNOOG94xZ6l	;ě6J&Z+-6oK5fKeO@s-Rt1L6«F	r`'B*'jnZ1_qhw3Y	y? 
zzv3Ncd+8Q52` &ЍWi/aLˌༀaqF^s'qɅ~L02Ɉ#2#YF8ˌ̺F*#sn$1&+y70Rp#7ƈ 1z*<uAbt!pR~e>AR\DMa%ҕae`E#A /gA/	vM0| DsMA- n;=e[@q˸>~pso։m.%,jqK8pt;ab[̹2>khp8BB~ΐeG;;FaRKXaή$h3
qaXRʾ)#Pڮ̴.]3h&G[c F=QzT'omS2>.L/v(4$j-hY?Z_*e˜eU6SfF\0M׌}槚5찆:[Һlp>Ļ[uGF[7z{
R_S}]{#,	'~9zQ'5 %xp~(綟XYH9O4vU\/PKg:    PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT571K1Point.classVs[G-JW_qicٸ	
mGKR	섗"8je)(@_q-/@iG CfïvR14շgϞݳ3=XP߹_Γ5;Oy+E`]p$W<gA
u:9R(N*өR9gNgztpei;_~P2<5E;Uhe91dr*}B\6#ԡ|ٞSvylޞH
Zͤ怆V)ET)TE<?Y^`J*WRX#՟PtΟ-9dK'bAvN88=+gĬ*f2	hntX̤EivZ%y{J(>T.{I,O/SrIܿɅޘh!KfcT\Lû5<p[L\-xNN}=M6s.{dϺ+5.\68mYPnS3"7+ ]*Ȗ}/pJ	
TұSGn=:>W:vi<:rut޻Iv㾣sC*ebcvw>8'f9*w2x禍vxCZw
ش_\o_FDiKDȄaxO"lLl'C#4DD{3~Gg^	}qDMb8a!<jBaD'ЂQҏh&G0q%|G𘁇1n c883aP&a ''	%<A(...~L,)Bp4!@p&d64ap&$ $| q!d	Or<@!#<Ms(KR1v1KJ1y=9:;:eqBDjOEӕYp$E~BP%\um|hgM,4)ФU/%n1ո<Fv*B
^{[Y͍Iw[>1peg!]~:VݕĹ61pG!zԮvWh^zok5FԯAV"l)]N?$ۀwK,
˷EZ/F9 9&W|=lq/ePbBLNb@JAOW=Jem!L0UCV2^"*ZOVYDpP UsҊ\U{h!Ch^vU2&&vjjQ*Z2VդT++G-Re]tejW|]K)ڢ"[BbxP\&>TahV1aa[X*%`mU[Y=ZOJ_DG_!$>4v8.XqPŜ68aZ ͱ~S5
NELsNU2~\:
$u\uCCGĞK*&U۱%,R] -F_t$ߔ1cM{Mp\eVW'MLP)I!>ndywǹ5]ws)Y'?(9ٵ>ItKtn~c~SRi0C,>]c~iUWT\T4ʩ̓k:	yҕ9'DtɤOH{s#̲1f abYfU	 L)H08TwugAacH9pٹaj
4J1,?ǚFOT/m^br.7jr_|NЋW%-;dD^W knBnf0'EH{qxY.Fe$a-+|_E7&ǹ^Zn%(t#x4yk0'S#ڠZ8hۻYzѲ~9#hW쮇JM<Ceml[<.1L>eR|xܨ1+3$>w@PJAyG^PKܦ,  t  PK  C:U            :   org/bouncycastle/math/ec/custom/sec/SecT571R1Curve$1.classmOPwkmTYA)c
Ǧ@LqJҒ@䍉 11DhgDEP"\v9{ߓ~3FJOgfATfH,;weHTun۝T!Wlw^E)ŕ)mU~U6j鑶v -pX^Đ1D|gZ0[uZ1gf;W4r]7g;MwF;@_kI-r}j0+sc~K%@t~Je.^ԙfwYE[Sk`.Kr82IM
jFM$	1	5j%I'3$魟^9S$JR
=g{")C^r&Fl?p69!ǹϯ9рFH2*CD@FAd.
dDqCN7ݩ;f(Q E+zݩ?JdWC5O}y
.)Yr4y%ohmKEG'5_:ta	b.!@ =Kq@ D҉xGGk<=W&~x!k!7I~0+bKB1.cr`6"[$'*eB<<6|w-o냯BHΛDombػp@8!	mLB@Nt$2@a7mk,RK.]0qV%(](hB u')KRSGMɶҖOhyܻ[MC=C@ч!A/PKn  E  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT571R1Curve.classV[wƒ<<1Nb'q.YH3Fs9
	8u㱭D8qiGgյ?K>	
Vvug_Ϝ_@FC(1\g9e2=l;Q)N,13Z뿝lZuIDC*4]*ʢ(d#%#敢lj!ZP7ha(V
%Wd.+Z^|leC9E.bIQrRZj)UIduNd1+ϋ.\X3B:W,|ArʚVTQ̋^h9Qjt!Sb$z!geVZz'9TN'Y0
jKcSĤFm{F'8t͌rHΌ9ԜZ-jvjRUjl׽kS8Cܴ,u4MфUs궺X)SY0-ipXӘ-ge=pjئgdW{q.Ls5ZN|gyrרZ4]h8˥bً6mORB{hX/0r7NA+m͵a0ꖝX=ժPuպ\5kϛkf{aSug=#Ԛ}ʐ2z
"ݐ9<=o;y[kKݠk\`|ѐة moR㦗OeիRveM=o_r/6wueix_C:rel~ͬtZ.Acxxy<$Y9y2"}cWpt&;8uo(v6K4;3Lo`%Jد
21^ߒ;mZKtY3vZYvtDbu)&ڤ"Xhw'%块##9D`Fg/!L8iA}/
 If3
8GPpSl%	,`1pV1z?b0+2b``"%U\CE8,<\^L5IR.3X48ƱB߹*vΰہAPkaօfQ:AF/8] xÌ.j0v&]O4:n]#Ѿ&~$mL׷
"ymNtx}?O$)mgɾ
s:S,g?Mi<MmglHnW?ݝx`m8_7LI\,ӆccwQ[7ƏD${GR*P,aj@M1LZX"/p%!Mqo 
}mG۬Z%d/dOl
dxK 1j_=[,}s,w <3rx?'Fo㍿~t;׺clfܧ.NM'F6[z]Q<J}&A!?p/JܿrI&Q[s!7qrW٨Y\ti^R'CUc@{ePKH*[  (  PK  C:U            8   org/bouncycastle/math/ec/custom/sec/SecT571R1Point.classW	W[$==		pn"Jz'
`H1]ue+kmts]t	!qb⺂Miߐ`oIM8<}sΝ;wf2ύ!o[ZHzlFcuh0-$t&Ԑ!)E#pF+9sCێwyШFUvl0<&%bHOuZޞIf	+[|U%R)^;W<5U>4r'VhڡWg9S,JYDt95'xh[yVt:ړS+9qSϜd*ҹl|4.7j!/ٓ9LJ)+emwWlړ.,srta'2de+IVʬy+Шβ+k	\~"Igzԓl	=_[\"uP'ž=xGT,0iER1ff&٧3É;=s.
W,oޕRSIx\ᩩDaeoB;]T,ICސv얮V/)SNЩSuڦv>vFHN(cCS҆<Ij@nsgٵnmYs9kݢ4ҿA	uD7h˺7oMj5X]*/+1a M4jL2q<L`+!@U<J9M8LMI6S=OI -V@´" p/`3`>5h#X&tccAy _>|M P%O|	eW9w= & Y@0	x
 Eഇ
?H, e 9yӀg _<xRCC48xs1cgV'(,޾~8=9MX|
#3Lzr=ڱ@x?["LNc$cdö&иJqD3/E5-*+AX4Cl(S0z{!%)tJ1z":-fEqZjn:o
ګT_աh.0;fQ}8@שu] \J>MDUvV>Z~D<sw6(џ)u?og TiW%PE{ x ^)\%<M6K^B_c>FXg>>ju5D;V8fE@X-&:UաE"&X5NS#ܺyocy5ۘzQ.g8kM% !D:`T.>ԁ?/!,ћ,G/J
􁨇s0e`+<lEM0UclɃ{Ha/XD4HK">[>Y̔(UuҸ2WN7jâIWWVl[$7^-Fo`rQpߠVϟ&Gt0Wݕ1DӫxakV%A8nri^;DRAtvQ.B(5}4ƭ\)
GV7-v*g Lܠ@v&^Nd)'(dat3[e,cF8%\qd9  N*wGx&𰰷+NĊ<S2WSG!4[iFeBڨ2e'}UpFЙ2ޤl^4ooU豫yYp}7wcLSb^oPW}ݬrɪ,WU-U*_:z9C&fcuˈUp.V2ՠUgr)c$kq~R=]\ Wg:^2CMahȲa4sŋ;x=/*;y/ЛvS	9dw__ 	peO)dkwrS*S],fFɭAKFVEnûD
/\-ʷ7wm7;y;(C>+D&{/)L_\:V*CFB/3ޗZ_}PK#H  A  PK
    D:U               org/bouncycastle/math/ec/endo/PK  C:U            2   org/bouncycastle/math/ec/endo/ECEndomorphism.classu0E $$]I7n(@5 ?w9INxbALXʝ6 :º/
-2?zU`0%;浒ھdybpbpS)sg|DkC!0#ldp"s`PK|N      PK  C:U            3   org/bouncycastle/math/ec/endo/EndoPreCompInfo.classN@@F	`t4qqӰ0Ȋ})#NCoąCPht:?ߙ_ αTKs+Cxmʁu!a=dI|_B|zx:6IwPo~ Za7K6U.DHXёb8Y^7ŦQs8Jr˕].lI<4#g X
Ylvv4SH1JMoIkt"ޣ;v_.
8xb&kGo(N&x9xaPK|=!@    PK  C:U            .   org/bouncycastle/math/ec/endo/EndoUtil$1.classTmOP~Qʘ/ _aeo.3!$AM]w
]O_@?ܹ(ӱ&=ɽ.C0>cr,,rs+|)0unɭWbPd(y~ݵ!LKQ覱cMn Xdknm|aosdEz6RDzgR9cv0R'B9q0Nby2?-:`,͠+ܤ>'TP9c1^	PY,C0J9ɓA
X|#(q(G*Pũf\MH4C6y{z5z6x%ЄgCI0_gq^\P SEqIE.pE)İ FUta3	O&%̤0Bt}
R͋{uLhrreᕌmxhn4H?0r69Qt@v$_Dz}$RN[Fj-h]I~%	kHl5J!vJ	ș>| k=>YIf5i 75in#K2obhUN|n^!B/%|L%F	!a WDBۃ?PK,5    PK  C:U            ,   org/bouncycastle/math/ec/endo/EndoUtil.class[sF(
p)n6_	ĪĎCh6]Y,{53|~f+aځs?ӳL;w97p^X*]sG*(t}WVnru^aCFC^h+0l]	^PpvyY@WiV7xhn,劂$ˬj%B;#0TVF3+4s=f9Nn~mZv?b+NC:Í'܎6CY+oN+ZVeƹ
k0HY\P
EE,T+	Sz;y*:+,`-.x@ot~sfFtŶ4eB-nحV肇:xO:t\qQǇ:.鸬`vDΪsGuS(S(<-ԺnR8kmdoZt$-Fqltq;e~F"M~vW0zdZ>8My	
1WH`	%Hx_c\3qMg&pDR	
&>Ҹi*2muo%Je7wp"e [	Kk7
fFW46Kca	]wYeq>FttS.TO!6iIyo)rhnNQv+KϽ^EjjvF*)ü&
|dpF
XRx0yQ3S%y1Ï'v3GaOup!=V+tZF;=&92wC#Y)fئꅧN3~Цo+oUtu"Y'PK'@=    PK  C:U            3   org/bouncycastle/math/ec/endo/GLVEndomorphism.class}
0WtPP)E┦!miFWs|(1tr;wxXcBJ:ӸV'*qVcV)K5ʻm7"\IlxK盢l
aߧog<;|[
J+Y\~#QC0PK\{>      PK  C:U            8   org/bouncycastle/math/ec/endo/GLVTypeAEndomorphism.classT]OA=(@?YD5&TBREѧa;.ٯlH1QƻKb⮰=;go?1CP܍ѧkg-axuŎm0dہ<-W
SAraܶg%	E߶6euxn[%s~uz@aL};tcw-tˎ.QGa%v)^	K~Xf) ܖ7ȼPMn6wC~:kſ9ߤՋ"ɧ6c~b
T
4WdL*bXl&H8Fb!RPlF?-BBR[
[84 pԖ)}Z=
n1qߍ].}Y+!sAU0[`Fq;\i]
#XАq 4*f"YT\CY
,HoDk	,tב"('"4]]jϕNRZٽrSG1ߧ)qVjsN5M!Te'Y82 PK   %  PK  C:U            6   org/bouncycastle/math/ec/endo/GLVTypeAParameters.classRN@PP/zU44&4}i7&&~e|[1\{&_ NːiY]Ej38bC0ԽH`j_<wtySq?E#J>Kȋ}Uj'LȲ4ϣPwҌT{HI_&W"]9 ]e-<#j9S5stk"5(X+ĆM
"Jآ=}3i%u5-N+`dNC=
ض&ۇ4	Ћ>
*ZŨf7_1nYT_?PKC    PK  C:U            8   org/bouncycastle/math/ec/endo/GLVTypeBEndomorphism.class[OQ-,,k)Z/(л6H=m-	MM ~(Ҧkهsv~3g' !/S13ٖ0\s{bmߵkf#EG#dMH0Ct+H]2ctyn)!?ŝPa;{'IK6]]z^?C.	F#I\AfOC%n^ߜxwxIfB
tS)op1+

f15cR棹F()/4ï!P9wSX%l`rTiFđa9az>F]yTwcx+D8kh֊#Dp75㖆$IVKpWV4:,fMUdPTk(\`
X!tב o'E>EGvv:#I~x)*X|_*ه~S x8iY* ǣ7<<P	4%Ӄp")PK2  !  PK  C:U            6   org/bouncycastle/math/ec/endo/GLVTypeBParameters.classN@O*"ntGf\h\h\4~NjIiIMx+M$&.| xb؀fq9s;|}|8Cma++`0:*rIWIwQE*#Z_<8wn_zHIMbo쉑$ȥe'=)*܀apYL/Μt=tlZmk~{>s2CLRF
X	&6uҥ^F׉/q@':IY<<A6nt^;v	Mx+"2֧uQ/ohL\gQc~m PKAF    PK  C:U            9   org/bouncycastle/math/ec/endo/ScalarSplitParameters.classkOAߡRj&vA["b
D&dvi
4`$og6$?99gvo ^?1sJnTˬ?VT8ɱiiaXS1'
m9*D)Rrs]mدpU۪1iYq;h;(9^Rv@ddL*M%c()c5*ܴU^ud|H0^vM7|C79M6oմLjꉪmg*}jnceb(bJMphvm]ա[5	Yr;!}ȧqn1'iZk+xb!)wgŻlﮔmա+/*oD)!
	L
6Da RH0C,01 fHIE{7}0PhWQt!"("FjkIGo8:(]4@1VptQDT|/Lcj3{gȇ)%	Ny?Qm"8S%\3l$îJD)[Xn5)%V9)%VRei$:7p2R;^ўvc;pO{c{+{>Vm7PKw    PK
    D:U            !   org/bouncycastle/math/ec/rfc7748/PK  C:U            /   org/bouncycastle/math/ec/rfc7748/X25519$F.class;o>>Ff
0F6̼;FF7FtҼ⒜TĒddss#SSCKFM"U M!R[fjN
;;+;#'#s~J*#g^^jsNbqqj1PJX3po*\@ PKEƮ­     PK  C:U            4   org/bouncycastle/math/ec/rfc7748/X25519$Friend.classJ@c/jSN(غpbib(.t:֖@ˢPi{;g,'	j`U0
G؞]\:'[*>G)yUJ؎GzR2I-ez'jlv鬜#
L6_P
uYpdBf*hy?N
Cw$:,^*asZ´
	/L8L329`o
x:<Wa PKC    PK  C:U            -   org/bouncycastle/math/ec/rfc7748/X25519.classT]Wg~]ɲMTmi
I GDAl UeY1@iӻ^z7޴9==EBBozh}g杙wޙ_[YqAR {.	=9xni/gy
њ=IgI@ki[׈Ky#^u%U论C/d-u^BN'NPp!9z(Wen6wqBni<&''RrӴ<kkp	^ܢ	m[e,ǧ&amPw(b2k ūcdb95X.Ϲ
Z.XcWyΆ amYOϮ޴L`UYfkp֊tTCǺg7}>I)ߣ+b.eC#O
yCn*~ۺyˡap =VпL?o'\ؤõy?[KE/ū~&fm{BhW{UqVnHrD\8$KF>2ep4>Wq6I+)NO$#hV!B*!8$ZT|VqhSFA*N0f8}lB1WΫ8
V09g"%S090,1,3|UksXU	fLbr:WE
ǿdɡF9fk6<ǡu7[3FiѠRfYn	:#0F yI>C/oP	VOX{
D>B.]5qH_ YzI|B9
:tY>$:;PPbGj\~Ed 'Ռz9GuXKQn]ke\Ǖ?SJlk6+}QAgfAs4	Sq"H WOhN$W(g[A.~بVZROޜ[UzԚu2ns1Lq'*%ze^RlBbOKGvoPC#إ
ߓ>Z/h_PS7tra]XFYfYځ6)Ӯ+z
	a*	dT&-:y{Bfz+No
zGa&>V&`8W`^#X.3	v*koe:PLuܗ2X{,]=N&a';%m[QHZZ
7w4jȌzjIDC1.=	4eu\.htgqm%z]'I'rOo&Rw6sV8+n.^(u] " PK^  c	  PK  C:U            2   org/bouncycastle/math/ec/rfc7748/X25519Field.classY]pqnq;B$; HH#DS"E ")B(BV۱ U=JJ89rʩ)3Sazz非]_0NXVߞƾqhZnKH
5M#]O0ح3ekM:7Mdb:6unE
9M%+y6ߔcx6[{:iX}r:݌wƪu~/T+=>046	#&ڕᓒH:
zpᵯL]Z83>}MO
hTEدԦ޽W]1{VWV},gvvuF]JMSVPaUB<W]T)LxӬ-Er(I/aVTy3*e+!s~fme#ABu;ٵK/.υssKk+0=ח{X0X]DQZiK+o^4pP\|}\>yjᑑӯ+,Cn]~lDtڼZz6t@GXG1w4f.[lb,^w vq"˸ly.{e]v	a.|Mʺ\v\wyVpˮyuӈnC$8sE]f=.;l5"oz6#RsX}6;D扼CD,Y"L.wY%FD##"Y'MͲD#ne//U֮WQ7TaX4φX%kaX+'O-@[b:4~6	Fg~,w/I!'u|m9K0P,T§ZhH%񯌃=锅	@{k@'Y~F=1"аj:ɏހFY:7Y	3>5 ,&;cDZޓ	oL9ѧuk'ّQd;ҟ1]h<TUI}%}`"0&s`T,,2C
< vI^r`)佮G|6xkש7}`q'%$^&Or}Ir[h	sA;z2B|N`n[ܔђy]@χQa`q#ln@-n<	N=yN#Ԏ-і5l&< ,{BsQS	1S	$01?%QA뚫Q$?5=&2q8qpEfN!3i&q^*p@TF>tŉqXOE0ۑ`yNם]Iތ5L=9.3$=bO]EYOBzLb?mXEk=YpQ
r%mZ*%LK55׷ev ɩ1A͆AՇh}N*<K<Q9ADc
ZEdX*2u}CA x$Af x:ֲF>l%ْ++oPh#o! w<O	{n$h[Pm#{Z1;<{?TJWI{.v|}D[88TCDlԃptȾ:}ulSDK}1u<-$>391]FS<U*ȍp'.wS|;KRԉ({_+>mI<{zl'8Spd`4:mgę	4z[fgmok(]ߎmKʿcuq}"OL&6Ʊg;s(JMIL~"=ѡ֪u/F^h=|s<2nn,0<3(L12̖ޔ#~JV}rZ?uZ=r[Έ-!8	6	;6J]Kޒpr{I#,"(Si.eH\G
Tt$I&QAlSJVlZHVBA$dq&B qIB}>9ja_F{_(6I卶*|}Ѥ#"K.ʭzrڊDrڋD;f"QQDdК@V>b#?$RTY L:d2N#I*۱iȹCt䤖Rq0(
p$B\" {E/t{yz{ٯdm)AyP(耠]iBB:P-!PF;h{dCH$X#iNGljDT$P&@8 Nt/FA}eDAV
qH!GDZGZӕIVqХ]-Fkgt9wxݚSWP^\.*np/5$/H86&8΋ ;E	7%`i1.A	w1ㄻ$.AxVjr(B:*F
ty]CGd>@:UjMAS−ޤӢgWPs!*MP]j5
?$^jRh7
="&^E&ʦ4s~PtQyTϵPVϟI jaKzGt>zAnJ[r]8z>hzh4ng!nva>eP?b#ƷL']Qp} _v_7|c}ߗT3}MLb$j[
1 ۄM̖o%}FIBm?I̖o9~P-K7M)b맼o.)%fO}\¶W+	ˇV~.5i2u>Usw6˺Qh@ zPI)TiV[	^dk6Eּfs^dk0f8pA<IW Z
clŔ1KlyCYO;inr4LlʢMo6tdu n>xdϠ_NRj:g
()*$S=tZP8Ja0}1;:k "%:j#k;&p8P&@$Č
OW5Y1ج'!U]h%V΋"DV~!ϭD۲<&UytTyL<~vco؎Lvk܎Wx5ގ/I!Pq.˲])gDgM2TK$ =W]Q5\pwpV"q-\ԛ:īஂ).#nWl)Rix8%MCbLdk6|PHd_ܔCs7TDqjib',U"ο4C3EEYPeM=_
y&T
ofޚ@*`TE~D~,Y4^qo~64?2b}/͟$r|Gf]c *YmvwӇ03YOQuuՠ%Mٔ`h2crPKE     PK  C:U            -   org/bouncycastle/math/ec/rfc7748/X448$F.classM
Pg/Ar6. thk*XCESt g`>z? b%ثB@	aVG.:fiӖJ$U&CA$wAܔ?dR2w`:z >\֪˴iT	\~2x&`Upw PKF     PK  C:U            2   org/bouncycastle/math/ec/rfc7748/X448$Friend.classJ@c/jSNЊ8YZ
Rr:kKL!oeQP|($ֽ3_@MBٺ"]qvDv``Kt6|'x(E$8Ld$ӇX=)f2ZVAG\A/_4xhj0`	fk2\%+6,lN$8I4)vd2	yS	Ky5*{3_`y.{_=dr/Ŝo
7x:<a PK    PK  C:U            +   org/bouncycastle/math/ec/rfc7748/X448.classT]se~6&M	DYJE4Iچ,$@KmMI6&)NqnьNzN>Zсl99y{w_ $H")_/@ E<"=l,fXIfhLfXeVV;cލגdvL63wbȑ}`ꓔ4#I
.K)skَZ0aVv|xx<%l8VX\U2(u+XVɲT\٠LǢZ۬7*d[f9OOP68C.v	XNaU"blĂ.@[3֍DѰW5ˤ,L5l8Fb5krfEm=g6]vJF?QvVmnF^%̄sK'n&Nq*y5=eSOHb96b"8mW)2T*vCQj4T1j4lyJV:e	ZVa}22b22e| cDƨc>32~Ҝ0ywB*N3=[q*ށG*RPTU	!UP.zUb A>
2#.GpY8>VpY1 k>ac 2`&"
p[EMnl]aͥfmESEV
ތQ7Kc9:`	:mx@gH_Y/.(ĩ$);?/NMR<mo KO!A|rZ;3
bw#mAhs`%]׵C̟2R;.S>ɸ8ٯ ;M,EqqiH5PH=K\_T/NR')
" #&.Q:;cӭDmO:H8צ	y'dqvM{-7QpD˃h`!W{AJ,NX|z4Rhu4*|Gk yGL}	&
=,"k^+J9ftAe_S)ի+O'SEW^&Dɧ 2=,|Dt/m'23c*Sx"J{e2v`7<Jivt3am(|$mBpToU"W!zFE<F'bwVeX#uJ]Yh2>Wm;Z0D6MMKFO҉4HH
iLm̰Kv'xHv'-(
xPK
LnL  8	  PK  C:U            0   org/bouncycastle/math/ec/rfc7748/X448Field.classZ[lGvc=3G5ٜS3zeYvh[۲lZG\=heK5Cq01?F $QEG|sǒ&G֭UU}n_5cl}Ƈvw%]ŧ1mjZSk5N?FhBIBi5F
%*t}괸,ڰo-zymV#)Z[l/Ѵжi7.ne0>(p9sbc蜤N
YDVإK]bͳNno5E?-g7++ho6`HJeaa	)=R-EuT]JTqTExh@J7eh&cc&敊0?	^
f^Is}'26FcͭmLa/_ͭנ7iYosK/_]w7g/;/6g~^.}~iix
+W@Vqyپ?,ȝ
L|K)b^Cql[`9&7,[l,Vf3bH,iE VXbI<r{{u[ <$fXHTIL1b~
Qad{-dϲS$;$~DEO:K$I4H4IY/ H'qE$.J+$Qw;/SN~xHsms(b1z])6F:1p4@uս`K	Wբm^ڭx[bm]߲7Cd95CXQY5&.1"xj1 /++ҏvyc5׾n{b]ɴrk
)'X\,{/}Ŵxtκ2`1/==//{Zy˫QhY^\1<}ӳaHx6,IN+)N+iN+g[JƳ3JֳJγs]ۅk|OenpzWtIa@K$0%CXjnrC\DK
)a@K0%CkE׊7E-]6in0%CVM=;ϻ<		Wuh{BВ!3dXx|
5O/<k5zKp'MH' <	)OCidg!<کJHjn锚3\z
@Mz
|fŐ-iwm8tj	sta/;N)ﰫ78Mn15򆗊\{yr햆5>k@iq&?ԟEf.1Ӷ_a+Lネն's>װKJ$"R¸	nެN ݔN]&E#_2U^/_?Y/	!0RϨ'kr.ldJcC9PSRZR*KG- F^>^!q>EVxyNGDެOdM#RQ]u7װ@.}װYdѳa١)QGϺ]k86ܚ22V!UynJI^ߦj9*OEtS^{`6wkH lo^v
*~{ǁ_iwBJ!17=ZVh6<H4WA)RzRB'5ĻN_a1W{
ƻF]@:Kg=}2BI"F&Q(Iy%3(Iy''EMSL
W=^[whߵ:1Ƞ`PN{R)@aWg|\
N[;^΋haLp5nȭ2
\V
t^|coyZg9?S2[M9Nlq_c	sx|9z<p
xChaTm`&0i$22J<+%xVZ,K,p.[pnzʷ6Nω8:vj?Odv%y'/ɓ9ma.:Eav"N?BP/rqyR^rƑ"Ng<;rZ)ny\-g,j/g޳\\zZu=۫&Y5^պ{bhk4KVJ>,܍cj2DQPX$y'hG~\1sg]fiO3|{|yȧ}yħy^f+cJzeL)[LIpu^d{丧^x/+>z9/+3{2C,wH2zeG04;Ԛ-O-R =5<sN1/`/Pk!j->LmGZ|/pjkfn1ej'[|ډvk)y*p֚գQ+CGN-pirsL\;k(
D_ 8
~U OR0(9(Aأ@R +F"S'Jd8M H
Ya^ 9pd3hǿ9M X!aPzp$
PKB@P㯮{$C
aňB@ФP1	AAz(K(fs
y`qg#pE4s+!@\BAIP=GPK(B@pB!2
K퀴L&A1$VP(((`\A0vL6A1+SP+(9g3p.΅*9ĈSB`(tu
hLb@B*(W)  (,2	
 P+>IPNPI( y+pv@P xù8WAp8 !!0@Wg&1($MP
AB!r
  >H$CPH(R(`BA0 S`T&A}b^B! 
v	ہ`v#"!HJ
SA`(tuhL0~D  *2
K탴L0~BS
I`\A0L0~>t>D||861"HAJBT$P,$ES yL*
=
!İBbD!!r×{FQV@* 
_"ϝ/(Q_:7T1cb8?Ԋn;Ծ/C1^YKP,|T+|_dJd*Q k? i	~He_LUH,?ݱvկ
HFtonWG.p#ApjrjڭJә'zГ}"7䉇=OfKuj3On͸¦¨S+I׀Fa64kR+l	״{
5)t$sM")7	sJSsMٛn)7M0[-Ee\7
?k	mmS^ӫ:__)Zډ_)GQnUMr.^nxh$f'm6,]]	晶agb߲)}}<|,@{
U4tLQ;$DCJiQ;XvȈ!+jlQ;t+=E^Aqs&$QDM9-H,nCx^ÈaTVcrÄ&0#|/G!}>Y3|\h0Ag8=Sz%lKT
 DՀmZ<MHNtqctqT9֬vi9LagjM\qWvs(0~^}_ i,O=-r)SsN)T&8uCB8'ך_Lo*M*uYgYf
OoWV iI嫧͓D}o;
fDɶyEr(N;g#(&FDQE"J/K
aPmY?#hvl;,p	>u%T>/D>_ |C
,+^\B{BpnJgWA2$M`Kz<0@앴x 2!(1vq,Fq\%Ĉ(CaPqZ2շ(7\I)Kn+k*%AG
+ہ.xxK-"כ>zD'm֕l{P,yCFR-HDxGc
DLE;' qXMX	H8*
n龭)UTbcczGOs8ϝOIqDVt[}ftl~W9\W8:_& A`>x_2	>L} 3>x
d|0dk胫i݊oDozuYxԍ
QDf7C\NF]WhDs
_4O$˸EuW=,ˮ04"'Ϙ]hϘ=:mЗL14ޠ9
IZj6Р
I`$U؉EB%CZ%mOR9҆Yn6ܨnFyCFe1h)4d3$hP|NЊ9Ӽg-f5(xAQHͧ|BFK'`-<>e>G-Fd%Z2|
ZQɍR%7F8UrTMR%7%*iQyE%W܌ʢܜE%ѵv,q5{ܓe57i]HKboN1F;瞧~lئ'IHIX$2]_/PK*{`  2*  PK
    D:U            !   org/bouncycastle/math/ec/rfc8032/PK  C:U            0   org/bouncycastle/math/ec/rfc8032/Ed25519$1.class1
0F_"#88Kltpϐ(x5Ā?
Fw05?]K{3!Z
Wwg]3^TY;<e C0-]L}Tar0Fu{-S.a?z`qj PKbƒ      PK  C:U            8   org/bouncycastle/math/ec/rfc8032/Ed25519$Algorithm.classJ1_8н&v .r}ƙ)ӌ̤E˕)K	99_99?_ qJϧ]f3wOh<KJ	Pk%se4[âLXYUr#ʥhY>˫Hn=IQf.]ֹ/htiB#.Љ[9eT+pb)\U0B_>sc;#1#9yox1PKЖ   t  PK  C:U            0   org/bouncycastle/math/ec/rfc8032/Ed25519$F.class=
@7]FXX_^@lcj &ǲ,<`-{ S4	noC.$ʗ4;]zNK<G!Ǚvlۣ8$tp217
%Z'WJ*aHSu[jPP~ACOD
e7PK:   
  PK  C:U            9   org/bouncycastle/math/ec/rfc8032/Ed25519$PointAccum.classN@ϔB-
ڲI4C4!1Weoh\ >NK3ߙNO&C0[Q|h2/zNϿd`7Jp"\mtߚX|`9]~g0FnGcGL-ۂVםj^9c(k-Uc*ksG=ǿb<g)ŋ
UEBERb}ntHI,J,I%"`:PXĺĆD^bSC
9liXy4Fzql1<P$cXyc3MТJhWhw?PzC1PBe5LLVg22'SYD! ]>OPKdxW  z  PK  C:U            :   org/bouncycastle/math/ec/rfc8032/Ed25519$PointAffine.classQMO@}S>
|
Bј	x*e&m5<?8<Nf^fϯ 		1 $m>`,vP$+fTz1	ʛ{nϤw;!=ö1,u2,M	|Ǿ܄i"c"k2#jy'
)y iY`U5T-nqZg#naoF?Pgf?`+@gp1V5߰|5%0K.3)&o/yccIeVX䮖7PK6  %  PK  C:U            <   org/bouncycastle/math/ec/rfc8032/Ed25519$PointExtended.classKO@[Z^_h
YA1	p*l[y0~ ?qpٝٙ~|~8CĨtFf_App|6t7V`^'ǚX4.,[gGu޲F휡:oh`t;wq [4"Md
M7nѡ##%%-%#%#%%HY&e]C
ylhMZo;#ϐ7ǋQ1/=cfF=B#<F,UQ~)ؙbU@"X
1F1mI(9/PKXJ.P  c  PK  C:U            ;   org/bouncycastle/math/ec/rfc8032/Ed25519$PointPrecomp.classKO1]1
Jx!ȉ#KvW˃xӅGleL/ g8dXC*=4W}\3[-Oځdm)>;b*l?J>{Oo:ZrP^TzT-,n}'hzR1{20ĦcOqLԡHH0t,1pn/K-&b&I)3
֔YWf@y9lnl8COߖQ$i-B*@ԜfH&UY$<F,߱Sf؞R3yNcnS`_BiPgp@̆_PKr)J  N  PK  C:U            <   org/bouncycastle/math/ec/rfc8032/Ed25519$PointPrecompZ.classN@bx(BbFPFhBb"+0\-iʅѸ|(v˙Ϝ93?_ 
^1]twɞlam'LA6oO96
>0&wã2j+CqVk3dfsZ^=Qq!<:CE  @U0O^hh0@X"eUʚ$2*XW)sTݹV,T
!dɛgO ڔ	T.E1bl7lN5ۯr45EÔ/D4C4- ;HaG~PK̇0Y  m  PK  C:U            8   org/bouncycastle/math/ec/rfc8032/Ed25519$PointTemp.classQMO@}S>JkE/
DB4!1уi)+B5m5gy0 qϸ}/3fvvꄔnOȞLI|JsDPXJS(Lcq9*/&A8<3%2wQmJsWď4M&r&,%p/1p  !raa+VmPQƚnF<K*d`u:
5o	l|6{sZ
/XgS+2.aVŕ("
_:sPK)5  #  PK  C:U            .   org/bouncycastle/math/ec/rfc8032/Ed25519.classZ|Օw|LB@	"	8<	" J-y`imݺۇX[]ƶV-Qۺ]׶nw[Z">sLZʜ{ν{ιeqt+޺	ƿ?Sau.[a+ѡG/*6c)-_P/n<߫K_)<AS~
Y([u7(U٨?fѱ@T߸_q|EqXq<xg+[QEIRUU(;UՏ+Jˎ[e{^E
r#'O>kl|ǔTþa/pͬ
Μe3[멨:
"eU[k꩷U'0"P)Le&]n !([k$$X"F*e6kxmnsc1ڽ,LWYdW15_nvUg-=E-PD-R/S&Uzjr!mg{5íeٳjkAZ][6H&=_ojϴxuut.-DٴC0qM
MԎ[ڸrӚuusƗe̱b	T" 6篢RU([ӈ6մ4a\m\fS͒Mj]ٰcukWQ+"W/iZ]9vEӚ%
vMs]]
)aŒ75k7kj%5[%v]]sV`S%͗*7o(Nnm/ӵth Yegʹsg_!7]Y.r%zVliٖJVt'U$*;_\UYQ.N[3Xc0Ӟl_pkm}$%nƞ$}݈DnP+Dbg[o&X}m`srڶ%ۮL>Q#Ftet$%EVH
1?)hM"K;&@A®mmZ͉-]IjDkRqvT{$R9'V!(
tj]CqvIDȓ(ɳй1h%Q	y[=~u5(V&a`nrhKWglMJC:wa+;{{c=|jڃVBHwv@Ӂ$b΁`+ٝt 2ؐEHDT^tUDEWgkE}WkI!bі%gujY=&gz4uu	%:[J
j90Dg^+`H
wh"$.Edz 7:tDo ݉.1J/-g}vPFޫC0PѴbٕvﷆ͛3N*>`i;#8+遳$&*?p%][{m3KlKچ0Ĝ]XlNx؜Ѧ?qmE=-dx5$^I.C]KhZr!E{iۨcU+l)ʦV^=s,Γ}Y.嫏IwjJZ/?ԓ~:#εdP[7 C]pG0C$ [Q'r>ַЉ7Sߞ{_~	:
]h`[g<qmOM'FlJn@z?
P.K a`h9!T|Ǳ= ɵgo@ː9xVD`'}$VtNٽc6*DwA]FtJ}
\6JC@5@S
'ֻp=K@))xJ !EHU}Ue7lCe*~U3~V7*ʞTS*{ZeS3*gUU'[[/V,K BgLϹ-7f=
|َB5X9vǊ})/b<v4<82[`]pa@\.C/"n8_v9\Xv~aY}.bpًU"*z{.xz.`n!Ńćn%Ù1ci${/
:.路0@	VvHUo^7?d=G.p5\>waC4=SV^,5v
W5 ACvOx[ \%!#C@'K @>o_Fe5.	fq3@cjHcl%pTc)VDcj4vدR}imLcA2}l~Vk!m=V}m;G16if}%4v	DۢG	<4}NC&5vuh6UcʶiG~	¾:5]_]pa.;M^;|ƾǛ`oapsØC<aqc^0fp.x@hj/r(	nj^/}'0@`k\K`a|7OC::"\?N`Au9Ky
"WBRws|<6K}|/" e_!U7O&_'
7&	AB~!	<B<J?<F~B'3 K"$_~M	-'	<o|Gwo;	&]w8D#p({	GA'W}ieXAe>}|?BਏBWn$5μYZ	#P30!nYIv%5ܗ6}{f=PmWN6)p|Eldd/ v,ǵݘvm]گGhC >(wYǳޝED]
zO=,z2>KvA/e񙠿EO,z"ύk8ofG(?-X8[T.(N}G{9dWu}qgb:mQLicz[=zF
u6Tuۨ3ԟL:D|9Rl|7
hbajh?	?\MNu0rgZʜRC[%)kGV׀_+ɲQu4(D8"oѝ۰Y·C2LEa+#䅕LaMH
!jQUG1sf
+u庺qVޜ=G7)sft,,QC!ɏa++$T:Q4CQhԡDt)W `s/j9p^vg.1YjAEzCU,gQQxs׍umL˨d>Ik-dn%2\ 3#ņks8dmGasw=P)VI8XY^:ȉ;)|72rKu{tuwE*}M:X(J"R.U٨T:6\[X$SC"Rs n93A1O|,wYkzZ:*eRti-@4)p("NS8=Z}6-ì bBNHUJ1tb'ڮoMЂE	轎Nﰥ	'yk2LiST^4a<t47Ueqx.% WK@)**,LK?LEvo[9v?N14L;MF
I.DATeH/lX]lV|5^9w[}tt8,Ƚ107YxRrcv&m+qAI!}r^=Ew9{쵈]DCyvՑS\î+Y1wdXInLhUĜ#'rd14sbM+1EǵF<K::|p¼b?玘%cnlo8w{Cc}%]nf68SS,Nhp6<=VXQTi+m6rY/Fc˯
ϔRk¦
/fIļL(4/H7
91AbۜJimXfAӍ뮥>L_ e7v#s[byA
+gz3a5}aiVL1MbӉT&GS2@a<Oc'HΥaF4LFpb(Z 5|(K%7:Y>^9^!YouL5Gx]?hkb:>"ɘ	(DQjL=yD2quog#|).ux wQ.ffg)g90w6YO\Ӭ{J
|d~<p]gac0ϿcP:>04/NajˢJ
$a'786Aؔe#Qq|vđp~-0B]G<q0--yGK )b.WY*EYiYW킰؃XK0uy-.16ɘSꜜEkq>4hz	x"Ng3q7qt=YE~lS'{!d9*mkkfU8}_CרGCsjS-PyXkMjQdoIj'ڙEnVCUrea虸0TZ	⥸Mym:%暶췅iD}7%WxvwS$8E$ҝՖ@a?;Υ[F11NKqjJ{}R$i9A'ns<^cD%n_R PPe;"ByV8`B6¨Dl;	bcܷ(M6Z9MFA%iVӴ툒6Eh^fZ+zl""3.swHLY?0Bpm?>3U1'\\6 ]0.!?~04s@irsZ~8.]ⱽpwwx㝳t'c{4P:Jb"NXq"ް{\;K"K0݊X.r@gzQ"wp6$4kVJ#"٢^%2s"+wYq: `%UDdyEUɤ^z %ƨ|XMRz[I|Πqn1Y܌a'#:D;>g^.ňKW=M[Hj4A>8ˀ7[*< (q1ޤݻ0$Wp}|ÃEvJ;-^ž-էmԱ@K2(K7}_q$[_ݖ)87q>i	z?cNkvQ9.DadF|8Si51
zU8*bG
"
]qeștV}D3>9>E{	#,4Hvӝ訤|fidBܭ{	z, >kh񚗱r|͋rXnm[h8k
wPLrFR8`ʻlԇfS)xG,].nɵU+xQVʾ}gaI.eZV aa<;CwE͋#2JpM>ȟīYpNl*e[JٖzRcJEeADd(QIBi +a,q}""!qM D7.!a0n[\A|AMEJجnf$Ae8_ ajt:12*_ }-s1rv16#%HQ)T0c$S1}~Ca2_2|I0;V
K*OkNd׼n-TQfo+Y%꫅WiyJL?Qh1#HI`kNd׼nIAzjB~K,Z(|KA
':x3BC#CݸYJeR#hq*b_g~U"cѢ?Ê(=BȰ4+Bu$s nxMAA|p(J>+a̱Q;*DU=7Go.6}1"	~HcI?]+Vu jºj7suiփ6oXju#fV[NX/JIt[~Xn3	a=n3PXn+sJt۔0mjX
N/S:
Bg5
'ZtBITfa@CSEOCY0pS 9U
"S 9U
2sH @FH60E)mBaIa0PX" D
"%R,HfdI !XbF%I(lp)G)7!)!)d HfH
ʅ+&A(	*$A*dR4 iJA$ӔrCB).I\9A
" 9A
" /DȩDC!C
)$R61(/WԠ5C7
3P[Ba)̔Ah|9/N)!5%$%C%".AùF^QRxA)jq@Ԡ5sFeA{A{A{i&cxYw~Ҝ4ꪤ(9z1"DH 
"s?	cδ?q{`^P,>A*ZD
Lo庇Nq7NSKcjPLɩrXMMt:5I)C?^I=91W>׉x8>GǢ́
*3NDAMuɒa%",HK"$"-KtʋG7+Pe0ѐωkT%ٶ>0cw-Ucxu·^+3\w|h_$sE\,.hv6;>vHFÕ泘223N+׈ٶOK
9G;7>D[t%J_pv3y
(9[>i}|kA"t=}RW87Cc^&zq֘^>V:
Ü3lv[,uc=a=Iu2Vd).UŤ\\vU4Yfm}`olHoÊawj4 LN!K_\G©8Uw{][qЙx#.sn2BMቘgQ
/)XEl#3͠V%٦8XFwQGC#
WqUޔᕆG_yS,|e8L<Ϡ>ph9cBRD{8D"'׺qD_5OKtږᲃw5!:6f+ӭAL{'F|$9%kΘJ#
zve3FRgmk9_nͣuh4Gq>s	ٶ,uRSxF[bzJ揓_"Y}V,a_WC#*^h~5J\Db8*duT<SPq\ǨF3_ğTWu:QW`+Ba=}R6p\~X#gyddusuWe$dw痿WP}0D$Xϒد91((zSsSlnq[[z]s7xݭT%>Я jz/`@_!.$
<!6	BDpi">ň%?ğ 8t4sO'BW4]5}8:FoꭈsO.Kgw^ .r=yz`\B1{y&1k\*
3g,1O#|bBdV,ł9*`<'s1`̓ts1''`.̦`#|>z!'~2qGRՎ3y-f2jG?vleՎm</GՎQ.!q_;ڙPK'!  L  PK  C:U            .   org/bouncycastle/math/ec/rfc8032/Ed448$1.classM
0W"#q^p!!Mcj	4Qj.<^7yw.VS)Kk^)|0_Eh?r)0C0 *+*!L֪~osGbM@FPK$      PK  C:U            6   org/bouncycastle/math/ec/rfc8032/Ed448$Algorithm.classN@ӦGK-tGX@:u^$UzrW$	N*FdgO )N	wW2*M@sp^rmt :KU+*#7*hY?F:M'<rWt54zB`?h;!!$>(2skMU{q7c@8n91ɨGoS'aC PK2DH   J  PK  C:U            .   org/bouncycastle/math/ec/rfc8032/Ed448$F.class
@o_n"F	z.DW[LAcu
: =TEha~G5gE,my*Y$uK~LW;~7ƙS')_J0[0,Z Ge*	Ϊ(dI].RTaՎ
0+:/ThC{PKm     PK  C:U            8   org/bouncycastle/math/ec/rfc8032/Ed448$PointAffine.classQMK@}~M/UW"iAVkEPԋm)5$YDGՃ073ow?>t$֐vZwB@WcJƊP')ҟL1 b<Q<WAB"w=:	5}a437a(O[C626:@60XkJ[bΏ<
sE*"B%{C
6gXk~+6~aETʨf<]
&UQFZaZs?PK4    PK  C:U            <   org/bouncycastle/math/ec/rfc8032/Ed448$PointProjective.classQN@=SZ()$f|CqC4!1WCۤD+Fw*+W{ܙs>Cnvːp=7d`ZRD4S'X:CF|?ya4QD\:<wG'jjdăTw]/N*|FCבӑaX`8oj=oMȘ(PT!f"-E,ªUV;]ϓAg"P?ۢJIP0bJVN#\oc7ư:.kʄajvmZUMT!nJt	{<PKۂB  @  PK  C:U            ,   org/bouncycastle/math/ec/rfc8032/Ed448.class[|Tՙ?gIn%	$LrgJBȳ$!A-n}}iZ-k]nMU֮}h
kUܙ![5o?p16׳D>^+xSʣmS]

ۨW͟HaگG_Qx*(OMV<?U\yਢ뗊4EM^}NW-3+^Q|7i5$hoh{o=GJpa2%׳PuLqɓJ^mJIIt7)S?'9Δ8S+6!ibm$mSCuT̠ _.+mtY:囚3FXtSdDYlD%b CJcd͕.ۓƫB[!4q^[蜪g6(6'(4t)!h(!82'q.6.PMiPvS&nx8wxyaͻChYfm;Iղ5n^uYeG R[IsˤJ&2\̓ILJT#Z%h5tRyuUuJIM5%|-v
y\'?[֬Zu3qg6n&ft+״zZ%jj_*.xNZi%4rڦ՗Jtv,7/޶QTX߼eNG4lZnI%^^{k˺WKV7u_(J;vL)&noOdPxΝOoж>e<,1V$Wn54ܗ52]=9k@o]F겮8>k4躒֫GUi$̮dkO <[T
vwuu
'n*@yy;W'vA 2sNBvES?,C!0}Ʉs$65ܔrG>
HmԴa,D@&[=7ШΕl9]*wS~FIu}~Ǵd=#d 'Iш]HP3ʑ}Bܞ3p\G&\S#ޝ})ed6S}DEa?1!Z{V'F]}}	ޡ O2B9ʮ]]}]+7GPuwwbpw`gL(>Lmp-zO t0lj34IgU;&Cdv0u]1mc*Oypb@rgW_ﵤW0
&LJ1ӻ=14<TپiER!p6\nJ9cUnֲdoE79+?υϳhSoVB5m֋eWLv]SpBpo_e8AZXt4+B!eI,QJ+%U7(ݤEea0/'Js{U'4ϬIz23ҝCY5G
]CThk5<˪${rmUg#CrѻBpMs/Cb=
!,բu]464&%QF{4wtqhlڮp/"|9 s8ٵ)
t`^
$$ 	ԃ,I+G+_(?TQ=x_R57KwS?S>z8qxsJ(MI%O(?eU00.  `(
Ȃdɐ'!o$͸Jnأؿh]cOj~i)=kBcҸZyjOgy"WgшވSt?(93+&fy^Z~NչKɋwuq	_ϧ}-Qܩ%%~]EtG=݀/Q<ڢ-.s_xM؈&??KE_P~T'mgQ9ziǽֿC<,ȅO;xm&me7J 7i@_Nu~6bξ.٭JgYΎd5:O6Wg_bt ٿ:}YξtvYξn{@-ٟb}-&=Țuv-תJ}Jgcu[/:}@getY֮@ 
0[o3l 1jlbtv@
>>jDYgtq{S{9{noA~ͷv}ًEٯU:;tvߩyNp:;	
oHU>k.k@vd?K oG|!/\ _?_@# $ȧ@n	fO| 
/r'ȗ@
rȽ y !c A0# |1>@7<#y ?	v~ d rȗA _9 w|
  '@&?2m3	RoAcA+g@>KTE]mT9-C]x+'-}]CCx	M^wu_kP%tIil/eӀI>\{؎!z#cg|KH3?~	'{?
Ht!W]r>#.$yKI%O"yK%|K6H%HsAw$$\]va."yn'MdYO#FI>pFGϐ?Ⓗ$Ka<ie[Ho~.a')$}?}NdOiQx4Vc/F`U,5-xcZg#ySj5S;"qScLM1_,^\=dg~7kIL.VAQa1g{j!*dlzX©mHNLa/DVjkPmr"J-T-56QBh,%ccWp+˃dY'cⳅ(ES{*HŐ"-a-%qwߑ	G6ￅy{;+m%c
#7z|Ss@fEl.:8fQ0[&]M>-S0e6afy]W
oV?+rR(^2S"tN9)tBivAM>K_Xhr.yÿݝSԱ߱K66hvlԞ
)S[[@!JAfŊLj;֌ziLs)+$Kt*r,r&vQ?A}VRھZ/+0znT%M~r3M`
9x}acBR؉1a_Mz'˓L1
M/DegB'SgYUwMm˵axrjpRG*sR!B=brF<:i:eVQ,MO-*nB+J"-xJ
[K-*wc-}(F94I:mOҦp.n |apڍQ/feXt#Z5Nsrة.tapL?#_n_GF#tvJou٥EĜP8Pb	8B1hQE퉣
mgor´`qoZeVZ
T}bb,PkUǎ
+[>4t馒	Goa^d)gOOB8ߦSzߪرEJjzG)Vn9ب*2}Qt֪ki3zjUJc/nѾX7q
um;Y@_S]2Cƌ}>Nݴ!S-R=zvQn
LK<9`iVO3Ŋ9E#)wئǎNWؖF$UNNj.z&ҭ$St8
咉?ՐGu Ţ11tu0+˷ykg8z?qWA+W+H&*Mƕt+dhJ
>VdHG.
0iu"gr) DoBz&*q2V@t?2^@z"y
LzgZ<Gh;XjcP!9!V)7+
.gXwZU\V.:=Od|jA"(aʷʘ#̻ed-b	4˧EhHO$J[b3"q9}c
<SVi	UڬCBȨM +ۦXX)+*r(BTejJ#MvhR7-uTNN12KGR١Q_왴̤%Ԯn Ei;`{bp:IDy-P̸v`, (Gf+hsy.ShFEK-/>8ه#%#qFm``%i[)|!+n	d)`0	8A'r<t59kA_ǰ" '窳Պxw4=/CpRw$Z|Т*9eEV L"1Y@H7_Fh	>/7}-lkiU5De?'9fiQFјPCع;
B`㣄
l:VlbXŲwVi!1b,\Etzcy{/+J)!K@h;3~/)/Tf\~T2&osf d̹>yaKI#TSk:Û
(cⲜ ~+='60O6OVEc-,]JM虓a.8c*VeL\'^	Pϭ|Eځ:Ĥ$<lgzETRQt	Kq1$ᗼq\)eewdP{{?SD5UyGA{]dXo@Ac4|@Ǥt'pݚǹ[3}tkog/8xz@^f<S`<@戽3l9y+~<W.#bc[7"~ͷ9&nw.JhM]Vc_ɧ?oSkf#fx8㦯N;BơÖfLcJah||
:s 7wQ%k5iUt^A
j&x(Je*Sep_f80ya\"9~goK?z$wiC,:ѹǘN#1>rQXpˢ
4xFS7pR$v:&N*QYI?i/.Qg77\)o=E=Jl BFSUqdh^
=b1B>AR5t	UjuS7C4}KOf)p#:'i
mS8znPخF3`i#P<P:]]Ũ?!LljP`NN]Y!=9trN(4pٛEp+F{ACs>>6Sc d9b{y_bkl,,ixzy~^ diV@;
-:+7Y+4A(S.ėag:\켊bSg3pJuQ-	ï}x2_r[v6tF6B٬:#+/df&/6,W^mfmؕ76J3ym؆ɳlc+62yE1ϕ7FXX+řٶ+e
۸ԕUm|Wi*۸ܕWc2ylc+6fmc+6z3ymc+omBS$4O+-$42l5#e`-T؊H|b89#`[YYh^UGd̈,H3tDb	%@K$.H ]," nA,vPBi]@,vPBi7iԋP*ZP)4JmH mH mH mH mH mH mHkDzi. ]@KvQ/E"D(-HSN"N"N"N"N"N"N"͎@] I'by. I'b[TP*ZPHF"F"F"F"F"F"F"PW$JR
P*4QqTh⑪HP*4|x
*\*\*\*ߌH`7 *]@TJvQ)RDJi(nAĥ]@ĥ]@ĥ]@ĥ]@ĥ]@ĥ]@ĥ"2Ȕ-4
leBCДB>Q\JjTW?ըFV$ 
D
i. *]@THvQ!NhhjQ&LD2ie. ʤ]@I&
"JEdhJfMThJ^Dy?:[WgKl\-puoR	 l3J (VP*TZ@
Ri j>1ځNKu&Z$i
ZR&&ቛ[{OlOlO
f%WLzL,kBChJ&@8!ThB#4
M5:Oh(<
nP*44&	
B3)4
IC|P*4ShRZBCX4R)8Bǅ;	''>	7p7p7"{ǅ{;!{'{p½wBN	;!{'{ppo-3{>d%&%_1b	1
	X
тB!sH*[}tKou0U67NW!jMHs_jt|90|_
:J͜x_yP٫lMxih
?/^o}o;\e+1jAՌܘlEZAU[Ď+Msut3!MLݵtp'^9טp5؏jް>Imۧ>`
>3@Th	1Wܗ?;LU&HJuH3mH.>N$7ٜDIF %^^J_wg5::3~SdY̷:><7us~xIgؾh!~z}1X>.^ S.L)?"ŸU:eS^ɼ|cJo2cmEcI|~KT]dܧQ>F{x*G~wzsX	>wY)]ۗE|SU>2w (n~%ހb9EN23 4:d^$TM,/uDy*fP^7CVjG)/[)^ 3d[͝47e7GvC&M z)GӲlVV**nsklP
~R\6K
8*B]NB?41-b,ߪp=e[cU0~J5[C
º[w0دXc2>D"-t>o:Gtq	;'v~%)6]bkRdi&rbxV<YCoK>cOeg(nvߩr=͎3;϶ߑ]"w*F{Gjvtz>S3z::܎N'f8=STK>O*6Q!@ !$ǳpY
s2l2Va-\ssZ
C`΀ 	s0̅a/\ ,'d86aty3  ~    & 
0S 
    J O=ȗ#{
u_,ײ{ZB`g@q՞F_PK8!  I  PK
    D:U               org/bouncycastle/math/ec/tools/PK  C:U            :   org/bouncycastle/math/ec/tools/DiscoverEndomorphisms.classX	|TչNf7m eA,"KIBd2a	Mrufn		Vh+ նֶ[c[Z#@׷o>k__6}Y gw>p ְxX
<ȃe<ryX7VP-<Vna3[ypx[<|0(r8gprGO0:orJ)VJGNDdǡH	*޼KszE4\D[uKk
G&z{uYbIv/B;-X71Yֆ`$	s(]q_FJ<,=k.YRDJ15
)IRHA\C__r,gp	d8f
T~V_syk6oD[[ܪ1
2XP"r۱/!Mm,-w5"'S;cƔ1G$s6}{hPb-`g0F{#E"E3RD"q9*!NI
PV{ImXD==J\*R(GjW
%ê)f,a_UXN~)ޘq(5#]omR4(`R/ڮdJNRʥ/A	.Wbz<P8ݲb4kДwDmRB
J4kl;:%Nԣ]3a+ЃAލ2rțzST_M	iP0)v.ǬnVRV^Gh
4WNl5,>)h	TԧJNJ^COu+9
2}š`0Ԁep6@iD`$b4^
~MEڞ7d}G:EY{4rpsL5suu'q\*Η`khؾaD~}ǃzWeG1r6x{jrK8 ikiqIƬ`3Ho8cpcڃ-GW3S'VFޛ)1B`bRHV 6)3Z
X".}Ufa ThbZ|\#A$hşSwtbCjꚁu5
a-ۃ\ u
=2U)TЗPh9/FE76E*fKBנjPKP윮J$<]7$Q%ْ4A;k.Ek4J-@BE[+s{8`y.%fsgJָ+U%Z?S0EGIȔH8(ak2aijَ>EpK]xuaۦJ܍ى#g#}`75^	SNuTi 2J[5xUIWxI>s>Y{8Qb(r8	T8 rY>9x/p(_K<9
!_B9.W[>J亲yStќS/Ăw 埡K/4PK
_ޓ4i.}ZwO)VBpJE".dZZ5jR/Hy"ut|1[8&=I]A~e+5|ZQ8gcbU((V%wY]hIf
<-rs+soC6_O*2D<92(+G3cS04
r̴L񺝅ٺoF2w>
{Aݖ,)~_
PK6uuX	&p`
p@l?No1-<I	L&G s/8MpR-W<o`# @q C{B?c'x!'N?|?&%= &$>MpM<&G'	t !. mZ?h%8E#'	<L qiP(F30^0/FPD`l
1nJHh%VNPaQf!Zv*56H]&RV\`f+A	A9A%`BE7%v/z
	6|`3A
hu(a%w56fNr\f+V4
'pxVlsV4M6Fj	n!XGPGPO@`+6w	Z	v	v"M`/>(WOPZY1PbJ-6
4]~@
mjˀ&o@|aS{{E<܈cXp
Tbe=/ +Ca0=%w;/
@sAm=s_1x#>b#>W}`<ømvg1t;6^g*$qOhCDqPY,
sQm#C'BV9@a_0ʺ/9{.
FXá":SK>Ƣscev{ŝ?'YsS89xMcٌGp)u'WϳxWlhncOαcK+.o7e6ǭkY{֚s>Мm\XmTm
7&,Ir?:S좏IsN;ˉˬ8!^2x"'+~å&~u^'N%Y'u:쥣L6z-HpZ$I"96YkMa{HԝJ7I-ofQIX\A%b&䅴AƦd,mA^4h^QY5Ne>5S'r֢5fh
k1jha1Qmv#e7F@d?wۋj}*ByٮORvX}S)
+S/kf~'J-h:̢ZdI5kANK=96Q|)!J30*ZD+
{4NKbdo}ˋebǥ6Q* 'k.QJ}d["{J_,|I9e:RQOS[p,ž5yR\
jVbeEeh(,qh'l6D-*HYҭV-C`gY~'.<(c5$w(֊DU svI.BRVIZ<~^(pLYɿfhU2mN3mKZ[|XJDjB52lLs5ɧ '@ ˔yxjѹ%81N>YѠF~1L~jќb#*6h|U:+]${3	s䄗bϰjT"I`p_Ùf
^33^GݍAJ\hdɊ=.2f-^Xⵈ'!)#-\ˣ4R،G;&`i7¦7ʏ<򑍮c
'̤E*ZQN&<je4)t
&[]'a%1bXA-y]bex⹌hwk>i'Ѷ!B%b(2ϓЁ9HجkߙYtjOESedj'XF/-N#o3p'F!*g"sxʼhxJʉ9[>ZƘi3-flq6rA'I=Ь_ak4@7IዕsU*4XgݘlG=j6S}.3<B7q*.,c%h}X.Kcz
<.gB6tyz		<$*t8=+v9u2wdq]Wzkcix7JPyC`C"'˸Q(6둀o_cpbF5ȼhσAfL1-WP%]h߃Hqy\yL;%Z
NG?%!?5BWf"\(87}Kn1Zġ n%FIf20񎓂qS(S9"#bhHp[-<w${^5-J:o'nDg=P{փکe^(Pɝͤ>B,ox܇Ƹv\^>	C4`K_dQP]˹/.IwKVNwWWFPI`T(QLȍ.LՐp>B0cSTz0G7*'rZxh5ޓdE-,S$nEvd˕+M£)	||8s-9Row0iآPK:T   (  PK  C:U            5   org/bouncycastle/math/ec/tools/F2mSqrtOptimizer.classUWW
&Ln5mҠ ֶC8B}~j!@9S{N=7ٴ{޽w}Ώj?~HiN2^	Y*sxI&GYlpD7LБ*Թa[A21,
c̡#'9sȶ̔K^٨&2MfEY̠'>Iٹn{ňcgtY9jӌw1V\
[9}b&0D&I?'+L<?bۜ2n϶̬bֹMVtͰ53"OjVZ5M.'^bI鐰n)uu%7șa%/fJ䡜w9V{Gㆩu9/f$QŝJy	,`d$tdn: >3o vڰrikmwixIY|bW,z+(>]G~g͹Δ\P9l\@FXLێG3.ÛMPzD%@[mt5BZ=Hst*+

5[V1EERϸ3rܞ- R9Q%<960RO2e&vwȸS]2h^26h&#,]FDf"Aej/v7J<^ܣ.!_(í)tjqYl5-=jSS'Ex&ԝ!b,Ͷ)6fGD|ģX˻-/fY,D3CK$<	sDuY
-~UTX*܃*6	P㈊#!N"`qLN*Rр*z<U4QkxLE-tuVt!YtVG^0gCF~S
a	pD"3
+81O+ŸCb{Hlyq<'\PЏx # bH
9p)5/yOz-tt7t ~CzJB6~5؈3Qj^ƁI;O'N<<h9*p<<%O	ŗ~þ$>kZ'cKwW5WM⣋hNc^zDPk<'\AD%[µ]3GF욘dV9L1+5KFPC^J%kĪRj;xDٶ&f\7
xi{T/{5TLū%HװCF_eQ[)|&V
xUmPK;$̠A  \
  PK  C:U            3   org/bouncycastle/math/ec/tools/TraceOptimizer.classVCW
&,-M4XMlPJ,uy4 	advf;;K!VVԨEkZD(W]?sfG!~s9<ﹳ/ n?(Cc~\-A
Iww8oYNjoI;J[ĎNlS5Bm[vH7C&PB59Cut$=ۓq~LK6t*%FЈZ<wiLڈnjɐ5٤<YGO4
蚑̒5IgK	LF3sbkHX&53dGl+ݮ8fŔFrn5ct=F">J a=2aTvYahit#ӭj=1zmt-sH-7vPY'1i-ճ|cQWQԨnE]}i	]hah)hS9c<e
]ٺJϡBШXX˼#Z9EfJ5s|D(M.+:ѕ첳Z"g51Pͤ^;FͶՉBj.MryA\fe;Z;^5ytch1R-O~5g$IJ;DTtʙu-f=}ю_~uؠ6^TоX/Fago
5OǊjh,ue*u֤k3Rw4MzuWq:*0,euNe/ӖUvn#stf.ߠnFYwFKT[cKZ	G:tʱ9h4
 Q`^7$p@--

Y-mm|1EBU|O/?W9j8I)_Pb__|3\^*|xmA~{
^xu÷#/Oi̢+sleknIW_BW-`OщKM,=Ja}+GW~qNo_+kӁؚ$+moҕT
*sٚ
blĈJlP6W!m;gh(SЅQo`C
(؄
e`Sioem{Y`+"`+cޘ:ܧ`;\	8vܯg+RPAnv ށH2Ad2܁ed)i8ã_`x\A;3ԧ>Yw2cߐq7,w+2TIL
#e*)S'`$>2C*>2ƗN&f%RNGԌa~%(MC=&j3VK7U*꫟x#̢	xPJy98w3aa/9`*+2?IBp}ݍI"Dpc7}վYt
N<g<f+K+<$G%z
;P/@1sJUQϣg7gekUA/Lky}/uZWs{<fO	+y`
HK~r"%QL!iS[oJSyiiz~-10XsO໫zGx$vE<Νyi
T{<
CMbO_		V`wϺNYW 	*0$*$_]ġ5I-z-[R~y[3YP{pbU+y)<QSnNc) 4B@$))FBRBbs_(4gP*`T\mq ,y$;CPKI8    PK
    D:U               org/bouncycastle/math/field/PK  C:U            0   org/bouncycastle/math/field/ExtensionField.class1@E"*VILL,<W 88L&~<	d'017d"c,UW*:d%^`Q7Feu{[_hV7OKZg=D(1	,df|	. Lx>PK2
      PK  C:U            -   org/bouncycastle/math/field/FiniteField.class1@D&yN
	gX	,	&^x(#8͛L} iV֖ҽ6{rt'i
9ª5OvUewwiV	7WD	fM/Al<[1!A)AD0FI PKnP!      PK  C:U            .   org/bouncycastle/math/field/FiniteFields.classTSW.Id
-(*u6D%mHKhuta|pnrusٽaD_@3Ȍ}?&8ܝ={=?{vy
)D<t}5rWPFZNi.N!Z!{T32Yq}ctR[L2P6]Y[*hHGTR5Wʷ
ḁ4Wڡw?;bs=PBcQ@:P徿EPH*!UzY(O1^[ZH*Gl}]*MI0\|7x+|_xܟfjXtźH];ljpV\^Miቐ!^4H$/V
uB"QKRBY]9;jdA*7jҹY;Oh_=NYpg-YOtnK}ҡ0nbll[HjfЏ0v)ac;L+
4N
4Fk2O#Bbԫ)\7;YLٸIŴ˘1lc7UA}gNx"e|`C!S8J IF2Q_IJk\]r!Y-&~E=w)ƅBfN1ƌx.<Gy+|a7w(	߂$l Jx?Vnd&	LL6^a菶l?̧@Cw1nn`XIFԘ+k+Ӿ_+mPK    PK  C:U            /   org/bouncycastle/math/field/GF2Polynomial.class}JPikUzM+Dp
AQP\4=1$*>.ŅևVD3͜I`9m+vL֊nQ$(dڦ,!$Qǰų'!Ư)cB.'zr"M0HV%-fbTm
Ϙ_OLn͍=ǪΙ)	ki+Ꞃ.
z$sۿZԎT$SEHEvC!8C
7B_};-1jHCB/YJL!0I!Dc0zqI kaaRǨ4:RAͺ"T$0lp(!sHQxEfGq%1"PK1Ԡ    PK  C:U            A   org/bouncycastle/math/field/GenericPolynomialExtensionField.class_OPƟ6:"C7еc(f	Da+vngFnfFoLdb眞O9dHJRFV]ߕwh"^b	PMHt[u}Qk
~
|<-=,=^iW7\3U_)=_r~~T3AfWl9%=a7!^TbĞ|(|z	ӽ
Ox?~$-]ϮRDڝiK$6V2
44k8PZ:fO$-Kda(Ea={/?Y|\hiMGc:qV#BV$tBBG
tc| E\PbL0B)30%,F1Ő>ɝg*z_ iQmN`^1Mw;G1R$h2?i2;(2Ghd4fmX!֤ #Uj6ʻPᘘR=.1T(NO◻eZJv(E*ѱʖ
@rҒLtB
tPZ4慠}T@9PD5Cl.W^GPK=Yg    PK  C:U            ,   org/bouncycastle/math/field/Polynomial.class1 F?*xN,A';Q6Ws H}y ;T929gTҞL bxݽ#b(f2T*gHg?ɒUkO"[o'^Y@Y2 0drPKXB      PK  C:U            :   org/bouncycastle/math/field/PolynomialExtensionField.class;0h`c3L TyH4 z5aB,͖y(1&LN[g[vI*ddAujythm%oL'|_Ų A(',a^PK,      PK  C:U            ,   org/bouncycastle/math/field/PrimeField.class}QKO@&v`4)!6|A@šH@TjCo8iH<r폪:y7uN(D*%(SQy"~ :ۉeEPl=>8~,@X)
L	i'IpLrJ9d|t[mS#'Z`[Zn;{~#,w;
ȁ2^̡EU,٨2O=̭𜥩s'YްB7`wxz7h_A/!,#k/ʝpɜwY`]lN{Q6&t5[oY(Y<H,
TܜjZPK<  u  PK
    D:U               org/bouncycastle/math/raw/PK  C:U            $   org/bouncycastle/math/raw/Bits.classUN@gU$5cz+^x1=	.44iֶԃ'>e*s|}}|uK3trຎb~nh/3:#p1YD	ރgG^2)
#&.`xsQ;ؽyK2dsDv%A	WPW	 m.";Yaꏥ}}U%`+OYX
;?r%UʵyRR]6M,^~mPKE  r  PK  C:U            *   org/bouncycastle/math/raw/Interleave.classS]OA=i.]AqZHÆF*@yWEkK`ńO?Gٝ]J3{__aNuZKC6lc[W
EP:(~
%K((N
2/zyDŻ! PIbee`TLd3b稟iEg^~Zs^b%r?wXٌS]m^Vә}W>m2^8t
[VlU&C05_UlZΣԲ,uuYasAeZW<(j(JP
p9
fa)\@^?.*ď
5Q.&,5_/ɈX}	Mth.PLC(ur+)	X>}bXXg*D>XO&Ykl8_#
LBf)aM8My1¤z#2F;۟5hEm8CfL3:!'
*m~3IPD޲K"EQIchb9vra%g!eLG=½UuwNM(t6El*N-L]&.
*@dz/pd?Oaڏ)y{ޣ{h:E$o[>4F	 ZT&|.UsIɹA./#D{YtAPuy?wnsRqFtM.ERRQш+
.J=:PZX'z(i+ppTh_<3K͠}?GcoT@#A[7PKL Y  1  PK  C:U            #   org/bouncycastle/math/raw/Mod.classW]p>V+i-
$[8%'n
IO4Fj,'&6tɄz:K
Ӈg3}C;}LxnQsw%$fs={_"~n1R^!uhτ'҆&xc
F9b9$9I.p9`N}S%9­Tc+љtmOĆ]CF5ML4֚A0ؘo
֖V!{+zϲlzg)Ԫ/yAׄrQZ56dW9o~^NjתY~Bvf'͉5:Ky!w,=]kMzKŹBe6^b w!BQ_
/xgY1=@ޚգKڙV}Prs}k(l
ʧ_U[DO빎hU{ksuKmЙ&pfԚhG8w,?4GEG|g7F\[hX{y<n]Pj 6ô3>}訬b0y{u+k4`>2iIw
4n}ZMdpVypm4n%ݦQ2l*19;ȴɥMwR̦!&_#˦ila2F	2M_M{"Ǧ" mzzm:@¦o-1lTzڢG	&L0=)&aSL<crIILXtN2yw|Io$`m\#/8mG-:.W}q;s;=[nGQ婟re9S0/P_w~0`T0;\hm
I#PGF7{3i]zCޮAUR2л"H+7U텻C}zoƟv,h+#@ѥ6hw5930ֽAMI$$碪Vڈ
:'a5g4SA
յ1&U7%R"FwJ.
Zpm\4gD.A0,^{e%5K<l"mТdLV8+"%V`6],Ki9&
+
Qk -g> Ÿ.gT/tg`F];"lXnT\' Gu@)_B?iKշWt-XHX;֩.@9n/bLFtA+z^('NngK2trӕT{\oɐA!^%
z#ZkW8T6}mJ_]oYt99ݩ(x
ſ2{w{twdp# 4ŀ;ahsS]]}oQOQ裿򊮬?)Ӗ}
Z{dHmIx "5%vl-Qu<7FTre
Z&q|Agg%t\.o+K}~e|:,*s#WW
W18b|5NQa	cFE=`Eq99Z]}D$b+E
HlTф^__o;|l.8wIt{>} c[ፊb<b0<7hvn#+&rƊ>/)Yr9k8gG+z1X}Nr7^#~<~HU g~75q!B_%~ x@!%b"!eߍ	C$%g LaxҲk}Ih}a%EFX
s(9γ)P5W, PTV.2E]"]OP'k}dƘ:Ik%"RKկ=#Dϒ=H ʯߛd{Tɷ !)ZɀZ4ɛH-rͼV_QTu"Πp}@̀DgtFXn|J*PjsY[P`EďrTd]4q]təW SJ:[ PUI1>w.JU6ޱ}UKMQ=Iu^%׽.:jv_g\ye>^ۿ߼21Rݏ50f}SZ:X.I22D??COU~I
kTvi#T/amu><o ,%(j%,%7Z4Jnl$hqq6zp85$a"5bą*պ0WE|Hh M_
2O$ ŧͪHHl̦WXCFmkt>c`j28:C8n@N?6*E@x^%oCj>s4S<(EIa#E\b2QcׅD<d*lg<$4Ԁ:",40`
:H.$D 
\#⑸OPBP#PKq>

    PK  C:U            '   org/bouncycastle/math/raw/Mont256.class}SMoILό$,KV
RkVlplA#eG$aaw?pQf]U_߾8GX\M./`ƺh[Y*(ympo)Zrr
L16wڗ.(ݏ^߮ono7xgKZݟ,v[a%v}'N:q}cO.^	k672Q
㇁gpA\9fNf-,U6%q?ҿ[VM`ypq>^60RV%\,"0] mӫ3L9zKgNI-sͪqYFhsdkY	ͼDA#_v(/nTHSJOEXT4ˍ~*YVKxFUZ-X7WsMVb~hl--;UBP2 ''?A>x<1 Y(xW'#M#dI8A[fGpU
gWy1W|e-_q"$++QQr1esB:JËZ)0Eʹ8fɞr:)&7;C"⸣Afai>4F:մϠ
a+`gOt{<0t:mm98?4J
lkm.m
Y4{+=A"un!uKRV16ʡHK=<%qPK#g  !  PK  C:U            #   org/bouncycastle/math/raw/Nat.classZ}tuy3e3nl96+	ck0XB¶6,C҂>6+(O[hڦm).iiBG
I{'MۜЏSڜSa{ݕo} Jǧz[{/yyX}O>n,ZxU^`U	7y-9ܨ:*
~Z_Wf[`/XTpz$yMAH>CmtlQâq;Ƞ	&\n7(
QkG$Ǟ|tU^"+5':Ԍjy_2ۼҤe9{R2oO=hHVۧA`/}TffGFE,7m^PCS,z
cTc}}S#נl]᱁XnZ\B~,_؛-i9'lxb1dcxjDv:GUTe8c3p.#aKe#qG\8GdHn>>=5ћ,F8+摠>Jz~@$d`H>;\alޙħhk>NvFۧGg'r]s'
)$\~iùBE3܄+yD0g?494FS}bv5MiIC.*xX.;O>rbjzLa<'ؘΞޟXl!?} ;ҟ/:9Eoۂ0oߓ+ƽ'/-RȈ_UpIo:W!Kl^ۍ@gD+-o3DUCE~^Ⱥka#@%gmlǂaF,Yp܂)Nh
=Z*UC,/2GShTέ}5E0Di*@-p (
f!	*aOCCTRqԌS.
spCbK
KQ_
SkaxT<CųT\"_u*HoP</P%*~KT|ߦw]*.S0"&厩ԮS3g	PeOϱV<FVV&,ǧOx%RvH!>o3LO.K:fgW'RfXc˚לɰST6v\l%ahL}(' S	}HkT3|T]`pqς_H,0!h
%MsJ%7xk }z*R\4h 2
6`;Gښ)	lhE½)׭XʨVK )yOIyw]=}l7z*uLnJRS:P(Vw73vV2r^Uc[ٌ%;\-l;j߉;`?S>Jԫj
%ؕ/ѬhS(Vp;5OH&DB\5$ӕ]NފW3M1>\KEbg!ߩW:
d`ٱ:GNo%+qǿ3?(,.h<܍4^=m8jbGk1Jz6wAe3HRZI~:3g\5iUmC}ZQKoh%qĲ^!'1M0CeLS}Zf30w{3Egȇhf"^&a%S{X.4b{Isyҫ[x;=KzD{«fzJwzKc㵊\]YzO;[Jevk[3V\CXh4A
a9S^z
JoSh#RD?E*9m	=c
p7KM
!&xqH&]+sid;/p*/޾.U`G״ЇvC!ȴ\P}iyBof	,,	b·VIu|6^K)=v C|ϑꝗW>-_qp2<jH5 l^
n c)8<1weDpv
գ5z'Q\@ע@D@F|(#LXOG("nqèQiSR
nxj 0B	:E跱&}(ANu]2~4|BRqկBBhA`|M6=	$Ӆ{UX5!=F8F}J_T20UX5ZB	)#NdS}QNd(HN&"p
ZikֽPxl3R)߸,"WUmiaHJ\k5+QfhfLqcZ>O`{wI+~6'a%i^x
NT EVps2ޕ@dGi>x<֢&.N8)G:<(QSUf$5W}YUr
i;6oY->{^mb,ojgsq-^#j͜Z]R
e)Hp-UEI> lЅɗ.@_ ^k^=z|[
~דξ8l^2\ˑEveˬIg1G%bNNbg]ۇMj;\?'!f	=4gл-4`;x6OK=s8dUh(9mkuz%QXuzAOGHK~hp4*
rEKbY7	=$C?7Աj=;[;r;/C&lUf~2)ҭ)RY#(&q	.GX2*hZT:$I]/AANK<|vj>s^<ű{7pF[}κ2;:	;uN`݈Nя&ݝ2y6bܙ>@dLZ<lvyAhĻ<lw@f"*Ǣy} zjXg=<2S¦@3Zv>YUGb#E[^^]ݴpKk1)Z7ܷrXu6-cþϵb͓\K^a˦@gj<$~Ε]04Iqč‚Ӎ)QĪ!w4jNck*hܟ=|uj)(Lp\3$_!	!>:P D8
+)Bz:n
mx0a \q֜0m]g8Ǒ ۟oED5_*A ^y_bon6WLY1FfuM1zG@zcdCWfI͙7>5?mJB@ߠ%8-v#%21YaP/m'	ATD5M][iJf{fj_<NoܾvYrVϾkK^M.L{3e%5S&Ӑdc#yDZLMtHf%oas$C(MM]`z|{5l?pbik*9X'R:$*s"N6mHhSM2Ə)\!2.U Yv7.QS%s\y >5+	ny[>]bJ8cdsJwIjn+Nm{58%ߒߨ<jVZ=܍[
X}n]a+ݝQ+<y
]j~6ᓞl	AlS>VIo않Q냻i=<|wԑ)ѣlqX)ş8"!%wyG]1͹[T<ؚJfga-~?75P;=Ic=IsIlh[nR_Y6o,[F]̓]ODqTz{W	\;n0͵;ŭHvs˵ty*7026Kѹ_]+SWr]b%1hTr"g
y_9N^FT >~Ț;8q~1ҡdW3ډPBszA<\kvƦ/GsCʝND͔
ň.5/lP|XMXK5%4Di,AyaD^_*FcɈ.[ޗJKsK䖉@i	3cGK\	ZxQq?Y+?Bp+x Zr9kHh@Y9]3Ж9,:G?tL29gި?sgro\uLv̟Ο9TLY3`Lp23D2&8M?R3^ʹty'ʟȓ)v5{grb\0kX3&2fgrb\b'ȟg\EL:&(?3|%TLp23ew̟9Twʟ)^CgJTτ5ȬʤT'\AN*	.L*YN*YV&I%88nH,	)lgW$s8zh8TT$F^=R+/H!~Fk?IN<@
q;ߘf״tm?m? WxbH_?j4ty,kXPKpLo  B4  PK  C:U            &   org/bouncycastle/math/raw/Nat128.classY[l>;x&N6:/ء4MºĨ:0	}*UQ%-O}iCվUTԧJE	9s__濜w[GX& 9c?'s*lxS`:<>>=>NLXUyx|zS
H
֌۠6
Ԩ-h-
OAR Xa_W
>Ιa_]9n$^j.ݫ;FN8QȉV'	;?]c]E)[lXDX2˽Z{L}\{#3xNEV,5PTh' ՉfGXo쑥ţc͹V1GڌpW2h5QZrTI(V"m6-;+gR%\>XZ$.^k?U,[s\}atinh{bq\DT;Dc5|%hzbk.dF=¤ѕԎ]F	,o5s	Uwoh;,-zy4W9Қyf^h8V/՟<PW|	cYi7*'1G6QܜkrM'eٽYt[NMo/<]8IT(p_S`X1V&&`}
t`3/5_N LLa'tp'=^Hp0nIAnH
HuL`\
p,18J=LgR0+)hqz,izHh)YHr͓Cm
6y; cluP::3ؓ2T )B(PvR*&G^ǟ/^+'kCI2Ae>TIP%*TYPe*{s¬gֻ¬7;U:Wgh,._GqDG㈎A%Sc$Ct${ԀY0WhydIž!gxu[%,	9cd!Fe<F)(EeQ1aFϕ2l]f3}b5#|@Ggx3Ett;耎~g99}0VJbJV0+j%_;
Cn)C\p_H-DT`H&fHkeV&}A6$4ʤgS|`G(U(RoU2T`|+P"%}W.\)
yjmctY.}nӔETiy{ 'z#<ֵqv3OAt%3TZ!ؑDJʫet;2l2
3(^ې]g?ۗ_y|V4߇_J#,\I&>^s;4==lS=kGr<?Y4D!z´50٩s}계گI ܅T!zp%ADi}AQċ{J"X
s@[ 02lO$=nB4"BYu\e&{n.8H6_nU6%Sz(bOQEITt)RE{xΓ"<H9va@sž']KH莨o3irr
eaж*+R$Md]aa[#W3s%75"<k1똻ڒgڊ?ښfXi+3ԬrJB8MĻY[R[rPUfzLYKCͲT:oZ:JINLhv0q)%F\rKra[4?~;tmO@ťc+K^-Xovm]nhaɈidD%6f,'.H)$HK$Pxf,kRBq:g]rVCs<y(us>c1T14'cuO	/c-Ï]bwҴ^~=n'n屔~.%3"hff4(G<#aPqRⳤy30o2_;	Z(>m=X^?Y5Lf:j.mK<r"rhxqXDEbe^Nd^/kq gԚ`5lhj:dV_giO5[.K͝&l=QRQJ^42|Hi8EF(/n|Tw()2J
FV7#(թxWc.01аfKŒ,!ě)+ A3ě1n)-8_J7n9~?88ĚĿgK&t;ԫ#Wc?C?RXWS' Y*[jRo;b+<)bs^:+?AȭGrkjӊ<hw5<!5/3v^^XeHw :>|q,PX1rTL5kMM_Mj&j{/u="%0;rU5ԪV45ug,mziM05S6Nioe$ UE}c7M; +/جRȖBK٩Z٪w2H܃:PUJT	S>]3c๪u;^jYa"[RCINb,x7,#ʽ%eppTbpepB
ϓn<Pn9e݆%c[ve$G^5kQUZ2"ٓ,Hl(N(	>evho	\MaҤ̑ZKmxGWo	0ӇL'$iey Rzcc?T:OO9=Go$$jy` dK^j4M
U
P0Crd{Ň3UUNH"YnxvO;e۽D&	aP6hdkG)q#Gyez2\`~5JC^'4tY̲`nM]烆=o[ow;)<Y*(:70IZZuXw.+o]V)vY0#>\v?}7:~potᆡI-5ԨF
5j-d5-Q9I'J#r\X
4iDN#$iM0bÌ,a;b⦷?*d
%V:q^淰fcpڿ@2(
|'a9WkI!mʸ\[P(WƆ.3Tb2
_yE὎i~S_K$}L֊%kPKG	˅
  |"  PK  C:U            &   org/bouncycastle/math/raw/Nat160.classYMp~N[V	wb!`D:`ki--ȒV@ Q*-\E%P|S'PpJ%SRr	*EqIQPzz"w}^ p<zKR;gc0gfteU96E(F!U	y
jWi(XI0~H~Fq5DGIiҀpvįu~RWP*wl9]8aʼ([B{A':xv(xv궑Vt69yŷC!'WOMugyϷSDO,Nb+Y^F\1#5Ym.awVWPik4kfq=Z\_;^NmvQ'i eu]V)ujmݓ䍜{hyeN7	9a]N(=Y]'זfmvۮ^+wBϥܸIdYu5(Bd
W;KkZk}Z];*~/	[vRDk8`0e-nepL*}|f^>M3u&Qoz}YУ,|T,#`fF(faYiIC=MzM^c>=A.|:)wj'b.`։Ŷ:Mr[}n:%RRȍ`2s` 995VMMTe5UOm6ǬѧJPՀIPKP$TS7K~[*^JׯMQ6{fX-¢L&2YKn6GLԀdMLdԐ%4][ƵP^jQkM4@5T@j>P 8@(зK`6+ڬc%Q֊~n6Xr$
V~A3^ZDˠzzC,{PrmTfMllt̺fav5/.הSM6aPZ&pu,W$uܧKfN<adWцnAZU[B}:5mXOA%V2(
ۥ[qQNaY9jeVh}[>T4.Aa;%E"n
'B~ːy58Ex@ΊlUnVWa}ʹjcAgAcpPCgB
r1|C>}~x6*Ƌ5^4aHeJ_{2|%zBi^(G5Q4a[}$b2hwCq`O+CPnc
V!Ӆdٺ*@*@)zpt'AYM+*BGW&aTf@5/d]Q_E햢"A&Ѐ!]]y0 [--Ntr)/uZN999VLtknStfA
sh?L'_sR5֩۹MG	y'jj&PPZ%P&(JO2bQmFx?Cз '_?\}>DPm7}:(#Xt;`vc!ahBGZE
[dx$5AJ{$-Az$=A{$&Q!:Ԇe[74t0mSy	u5=/5Gi$_v&pkC%pَkP'pk]8i-vlX vP.YZt_a:msYL2~9jcNa-ьǑfXA9B3EQtVУd+(*DP@rZ^6
o;%B.w ~?/K
jbN	l;%%DV.%1\"K2cD~d~p.,^rs<V0ep~osW>ƾ #)%&19tRA/+~l2qF[
m<&4a`ux\jKr.BKqiQ.?-WKqQ.,U~b1.BdEu\ѫľ&=ǸYམ4ьwxq4LZ$Z(ZOY͢:݆{xwotG7Cquo3#7[WwG>jKA6^N0lECQpmDߠi,'Si>$1rס!5q8FP88yzQ>
}WYT^RN?JIXҎ\kRKQM?SU뽾7C++{R#ҕ{B^
9PkPlxqyum>wL5t0tìƆ+98چenYkgnϪO
M</litNi?먵O#,nO7tۗcۡ4{,CL=c4mf&dhI{P-owP$'1Z\L^hƳ B,(ۚSIwb)sfI/eA("[iĲC995KV9A,OAAAAQH)ܪR,TbU,ǶPA1238Z	EwbYP'鑃8eJLnE|M*1G1:V8X#
^z#1'<
odq۠lϻuwa_zV!"uNdijȜ7/ՂaEjcto6LZBl5&y@tl+VhɄiH4-M*.ZTp(3e`)ׇ"/ʬ,#Շ-&qFNɭzYgq%A&(bv;9&^LvDi9$WiRyQhIm]BnL
D#!q@[IGT\BR.!!
|;?L !CsdEz"ܿ'_zڥܶ'o[%ze;@_iҤIt8}]hUzš/TC=(B}y}ݖyAkw[E;|mv8ze^<۽ݖym_%>-֑7,>#jܞq33ƵCgyWI/yn$9GwAZcn=Hvl.#@=d>E,
:nL]kb(DV
CXU+{pU3ᔸxu8Z{
ۋ.cp@rEo<$USfUş?,%PK
  #  PK  C:U            &   org/bouncycastle/math/raw/Nat192.classZ]lu>Ý]\%ޥ8wRLJB,"jEu(Ҧlڎ2	>0P8FP4+Q%/E/}H@u,ܟ]KZJ;|sϝ;s?gױ 3{2s,ea+KL5"S*ՠ62t-ii9ژ]	$@BِUP?_ yAP\y.޼@
.B^;.ԅ%2NcoXI<Njἵ4YY2]ݵ5ץmu*<]6z;<ZlgV	S~*;.sDԵN}2*{xygR}yk['inY
-N"mZwP8嘫-,-^r&z;ۄyfwk}ays\Y߽{~Fn\zJwUȡR&J,5v$pUc$۷$OMl/\Z}i{uzt_\x#g5KAvͅ3կc__|̫+TyaC{	ݎW//Q}lZ~5X12zςOYif-Xqc@>9fSD\[̭<#y8A勐10p?t(dp
Jy<xyxp9a;]\e.WE\*|./fW鲋||{
Rx|{dFkSv/miǱF`汎԰4{aB6~,M73߮7[v2i*RuICR
I5BRMI5CR-IBRmICPn)5)^Nwæ4wwsIlnsw7V]l}4:
Ԕo[zHMveԔo[fHMveԔo[v@L)i%e `Fs<sQPn7Ō3 P$Fh$f 4c@3	ZI Ў4h_g'3̓%Ӊ#0<_ГFrPs~1Lj6/XC ;> 0<˴f{Z̚NK̂Nh,N˸P֝ s'pqrpr{Ir0-NIFI3^Q3!!-ÔaҁjBp "w3\O$JnS?F?G%1a9>7qۦgj=&|u(M4U3ojG0CP,8j
f}UK027GVg!hq6aFhŘA,f}U_xy%#͟«oC2Ï!\|]x郛'3'#8Ҫ#Nm^v?Z?	A/[x|6RFП@kgc*OPN
<)g#? sDƸ29gܝz$|$Lmd?l@)7AvtþiGUolOx#?CfˠoX=Xsv[渇HqUUU3<ˡ_%eP1dA'y\8
Pt<Gɥ
Gic2ۏagE!35_p6-Kd?hԬB2>>I}fE<H_EodI6|C,|K"|G/_f%Vw\pI/ђ^^fn=mn#n3ٝVHWBjM$0Us^)rvy%.Pm(=eQF
ʌ*G(+R8ʎhc]PCgr%jG<nW|3܉vχ[}+ȯ<DUƯRI")RV)HfTT$+ErɎ|vūP,74|*j&eDL#pʨ(%~gŜ8=8#l83+8+sq)`~8*P"6`FreeL </GRͤ)z:GlQX</[qT:,)vP\ ύ+vd9/;{KI3IGC'{@]T*#Td*y8'q\*<J	\*<J	\*<J	\*<J	\*<J\y2B/Gg\t_b_yi(M82#/\;֘ʨzqyG,oZBU,RjB8JO㣂 )Q>+(#1ʈ
©GD(3>*Q>j4J⣂(FieGG!R7)K{/,9!m1Y6x3REݏڈ8Hڌ4ڊ8Jڎ?2Lo
k,?oJ,qUkcs}tl-509o uȻ&&Gw`kR/ci|sks;.lEu1(ƈ7E7DBzϹ101Zt~:
 &?9晸;0rOsDڙ6lyr{Vbmͳez>"-U2ǱzJZ̴Mm}P9־s9N]cywՃ;WQ>?<E,VeEUڦz*KqҠVK,g,wꕶL~VgF\
*Nl$"ׂi#Rlԋjs饋;7WhªXUn튬BHͤl!o\K;|S;Xz=Z2!c!kJ1N1NC5R
H)+T&JJsB\VO
ToɖH`uNܬ$48a58LUV%eRI,SJM
eǤ2JYKv
6dMhwT)uIvlE"9|La(8rKݚ׊q1w?/#:v;mkv?{lw1}E\#0"U'+$Ƙ?L19Vx)+{]&.|EG<h;{NFk8d
3+ lN3siqHT˵Ui[Qi+pϷJ!in"NTrHפBx@g/#B0#UP
VU鏤@qS*PҸvVJ;͘ЎI-͵ER&"pLojRmR&٤XUN:f8	sf%Բ!)B
\II;Ȭq	nmuAH[lRJ"l}7$\j0,"k3wuO'ֽz/}PϧӽXz/},Oҧѽz/rL<l,a=\LK.{>TP=	MD* LBӇ
j%cGD~OP
w>AAoxT<>AFoxdT􆇈>AJr~!Q?X jrDMN2`ɹ,E>X8;Ln9yH}ē՞ P$Fh$f 4c@3	ZI Ў!F?:oON]_3݄c}.=ޅoǓ˂?Ҏg9ɻmJ(zY_X#t˨on˼&_'cLgğ?;#OPKU  4+  PK  C:U            &   org/bouncycastle/math/raw/Nat224.classZ]l\u˽ǻ˽ˬvפc;{VKڊMEƶ"RrE]QסHZ&rNB_}q#T}Pq}h_
S}ia=g~eE-3s7gΜ9ssBd{RZF֩KP[kkNY5[kVeaf
sH0@leE,`*ϲѺ"ˊ 3P/#R.6beE;tOkDi/jd*>Њ+W ՝;#cZfƵZ\9fy-x!WMruwj=6QWC@6no@n p
foCj7.o
ۛk[[`kewsz=<ss#xc 7/l@#5F>^[N
W%}՝+\d娈n#o!gEN0EoK3;˗w7n\} 7Gc=don-eMp«×k ̼nn]̛{]leN%2J<W$ͥH"s-ҳoU<k4rv(?ʶFs\)5_$'cE>Y+SDǜU$_ v<JELjEEr'/x\%||
+yr<@֡\#پ1DnYze}q@/4E$P#/z	7RThD~f$i?qεsKS#/VGj77w?6.zc!F5b)f5c%V̵b-v̵c+E	n,ݨϔY{lC;Itn`'tȭSV C+P]P
5#@MjEPKZ*ԎUk*Ai܉QN=7uVWx=uz9B?NG;!H7W>r}x/.qit_"'QRgQr+\V	Ձ+=fJǈ(1cn&Jt+;授+ >{A>[.{:8"VX@2Hi`I(i`Ii`I
VLa#C.06҄T?N[}fJHYdt^AW+4)
ZaiW0
#M輂VijFl&^UԊl߂w">qi;#~G0[cwl?}8QFb&
G 3;fOfsf(fLff%5}0XJ&p,rI>tݙ{dgz{%qΫwxw=-y=ހE>%3ZDvɴكWSL6K{0vx_X@>%9	!2.	OBۤfH>"sgwo͟o~`Ls/G^>#E}!K,
2秿OiwPodvOs:1]`FBmJJ^%oK-V~t%=}?@:/Ҵ"7lQpt͞
"gx&k3%Z;%Zd'h4t_t6vhJ{z=6Dw>%VⲞd=!dM$ØdKB,UL\}K.#: 5`WbO
~

Rul1F6Ur-\bd[%3uYeW*`>նWh®WI,
UVUQEUAwQze!HAFTQVeeP%DiA#UtSm"?hwc͐Cr :|.|ON@xxxq%/ǫ&!x!)RƼ&kЙvXdV^(YfU,+r%ΰ$2
j^
s߃TS֡ʶ]@<Ce+|l;<aWm',ʡ*OLUCuIHiAel\V{qՒ>^t[IHoE\o}}֛H,ƛPXQ7zc7Fui7fn7Vut7vy7d!b3b
/'= ,FsF#>gNC_(wqaR<N|";mb֡ua2Ӷ.Lۺ
.3mb*̴i2Ӷ.Nۺ	dԍ#
@(<0 -9Kd|$)
#ߚBZd?$tPӈ\ĪBZ@-]kE5jyXժtkJ-3]+r	Vk"e)tȵ=VֲZvV<	Z=VsUݔ0Sz~5/v|䬈qқT8L ]znt#I7c[1Jn'nBШӤ$</r:C5l8 g 8 R } ч _
7:ā"5OGe:硉@iE	FY@[iE	FYTUt9W`g%H?NX$ <'Y`BH]xVeT現ORt-=~[e'<?x
}C{>b:a9NeN>˜%|=s'/Lϓ{J4Nw ̊ǝ8N
ɡ52i˧UwgwuYWIYhs=4VRǌٮgHHOʸ;yy6{a%׃EgPQ΁s9I۷s-o[=ӳ?f3<ÒC ˃wzN ľAzVG,g,w{&h]yԒrypWD181T1e-FvKL,\tWe.CԨ˛3{1j mi6նy[v"#LɎ+;F`&JmAc
ZD\RPb+UC)m*ңviCmP~g;#tj0H6qdyd&h3Uer\Y*ʪJ)ۢ4$#}輪H_<,yƘEXd]dEPs{)8P{wcJѐj.pB=(3"SʳX^H)`f1g<ybB%	d	<$5
'5
!Tu!UUvańy]qwyP8
!byĒDZf1?1apY2JV&78~s9ys8h3oZg&v "VRL+g<TE(
knKgVyK($ ᠮQ1%x.e>=E#4g7
T:)B$v!d6UE]VvVF;׎
-̴LIN'(󛠚#Uc=`S!cAЩɴfqQZ6֓R&ZLD()+R,]&Eй u^d?`%Xmb(Ⱥ3I'YwܬyREޟY"ǼLmr#%rFֶd0ZQ0ڜQT@+/6|+JH&1??mIDu-;HA^=
~Qomx__ěQ׊Ďv?}!nCG
2W2dn	uK(\?bP] sg?A~mD:S0ڛy`[S^hg'ςю&OP=NHF^t`@'<;TGY|l\TrUGhU
!WG|\rO'Fw{(r\Nx
~
4"*Ќf
h@+Z)h
ttzd/ׄimu?]Ftz=Rh\1n#o!Skz#z|1Dr"}m88Gƅ6Ml;u3gφ~7PK(StT
  1  PK  C:U            &   org/bouncycastle/math/raw/Nat256.classZ}lu}qI#utw!6ʉ,Eb$)ҢN;kI?(#(Ъ@Gc1
@-_QYԵ;71 -۝y͛߼yv򧄐of_{dqpu߀f5WQ'Dh,.e,!I+XQ)
O9EV6'FaBnZHvL{Vs@A#-	?E@
K8#nXd3d`u	/x9謭.m.P{ݏw.^^]AB޻uq@;¶`e^@͋o2$u/] U(WTueױ7'N`.hˮcWzw"Jީ-=l l\g2V6n;SҽvB)V@Sou7:zgcq{wE^w:ʅstz76clH+7w>"Ȋ^cU\SbCq9`@ଂ(	Ơ>T9>a.v6|>γ_ȿB%D';prRˠ̸]߼~Ww׮_ +`=xۊ2yfM`Bv$
4I$I`I̐jccisaho	d~ZXw'x9/l|hr?b`.c$W GI@H
-Z S9F刏Kd/*^-#F\&=\xH<X#[k0!G6:)~xS6|ȧ,j䛀;2wpMZ ggLbٹWn{N\r/W\-j!W\=!\#!\3!\+Z!בn'ܑڝz'v`0U0wj4ǳy,u:Q\={7WjꁨꪨZ:!G$08!GE(0|dxOyi{ޟ߶zr{>ݾw'ws׾wW~~~ϝ_"rϳVBVX6\G!HlXl_'cb+[RMŖr}Dl_l!7[fMŖrSb"#Q*(`Zx::֨FL05XSS5E05XSS#5E05XS:1]g՘l`9
݀o۞F=TwF hjT3:o
RyCm:jiatR1=8	X{F
`	k\1 í,DbC$XiWZ&앖+x$.U"W	QsDOԲgsM0fe6|.v|*||Aw%>%WIDW@W@?2l2-J'%B,qXCiX~, ؎`k{y}06>4Z/q>H9ޞCn.&>+_;s'o$LTzdR\ YGȘcE\6;Dؽ3-T#I6S c_ 30P۬ͷjoU@fyZX8j)C#)Y;.y;W9dU+M坁̭k8D!#BdCttN'tvd~s<\~*C,96;b^=>Dv_g^8:x{:s9t$'@)j@wmApQ%Dt#&"NGd,obr{P
0:sAsg.,XTa_
Ww
xO7jOtd&#c0\ט#8C9.F4fH2"׵HڿV~(9io~זCmd
d 	x	({WB L\ӳmI<]<S<[Wy`
%oFsuo#xRȚJ6YW6#*9ȦJ.2IhZk#LR핛eJmw$(*-2(Z\JKH(ǥ􄔍RF\HHQʌK	"JYq)+!5Rҥs):^;	|tfH"(?x>}9vLppγ͙]^!Ryp9}7xeۣҫ(+ O͕(2%YZ,=*H`$Lɲar/Q&m;zF!:Si*U"?*1
FQ(ʋ"*/P\
)r">*L9]{TS٣ҺdTJ[@١.d7[	2ZW<.׍.{n(qRɕqREq5RIƸqZq*¸:J)+j)W<a1G7;.o!|r w gH13l3g8]l
!"Ɠ!*BD[V\"DTEP!*B"U"D%BDUE."2D(Q!""IiUЭ"1Z
x
^3^s8iA;8'mG̟۞9&#E-<5
+3O
rOlW+&.wdtoxk5ԥPZVV#]:Lo,	rt[YJ++*\<hQ1:
pUYj*L'dx
y2`N5r@B!]ҍnDfH7t+[QQ49Uiy2(";n/ST_w A@93$	>c$1iO h(tsO7O0h6_=]Xͤ:5(~UcY	 Y5!G6"F\HJi3.m&N`Q34*y==e|JE<Nc7k}zw4͂E
FC^
P.>XM>R]>߇1ibƸPZÈg}jųl~$iԽğw@#W Wy͗w<}D&mf▏CG5Mc>ɒǈ@~4bhAF+	;VƵwwAy/`I	76L27]g؂8vӵv]=Z;kÃ
Zp^
'т"(`F]/W<x MC~(RǱ̖
xy5/,rs%oLFWՔ
ZA+QZsU{7,?uD: lJ3P|;ʇ-a߆7Zf^z6bիxc r$1ƨ1^+ʡ2UPD*y:$:1#jD5Cכl9Tc"uZcZ	F1i1fiZ*Xn$:ڢΐ  Vߦ`,fSYhYƘ38
(#3|cF
lfDO"= J*˺l9E1ic4ZNI0ڌ1GیMcKN&ëKM>i	ɇ3+B
Agަsp:#*ys*y*fJcBn9stydJvi=*[ɰU#~ɁjXNn7H$@t+t1u q$,7!j,{0ȋm1ݲ 
Ul|λ6shl
|9ER9uQE4Ü
uɰZ	B	iMO x @êR7Њ t2ð0f:fJ$dV8bgx4[Bt`L(MHEE-P9DWUt@g'#rx 4*X"0YgDĜO`eSJ ;ˆS6'#,OMIQqg&g8C@R99bQ)Bi?U9:D-Dbg
<VWsR9-㛑|\
l<MM^=3v1c3	!(
Q`	||-<LSc~L'Oa&<$i~lP#~@駝#ٓ~W?:GR'gL8렫8l8888Ъ8<d<ڏE=z[&o)S}It/	?~ʴt[?oeO2(O OzjQߖj0mj0y\՘a

D2rUӅdM*[f	DRHy58uNyI.pJ>@P	j1A]4A#&hf hMU

:aNs'ѻvw A
x  <޳䉼Z6wlMRɪ7q)tVkK~%<6W$ُiN@(7&*NښʿLye+kf+M
~:`Ł?IPKCr  C;  PK  C:U            &   org/bouncycastle/math/raw/Nat320.classQKOV=w3ɣ14c:啔GCb1QE
qjl2IaO&bUbE	Q@龿#JTZν=?o<1.AuZz^k/+UT^ePQKes^E_1Ye'pM$Ct4ۡ;X
VsANSlq7^ki<ږoU}ǵn{	ŝya@fC+돝Fp%ڲM~H[g݌y`mFt4vv+Aގ&o3H;|f7~bZޣݤ
Ԗ-(QG#k}%~Z^YJ_?s@zrX R9d!P,C?|aTMLc,_hkMAQuߑ(ģL*Rd2襯#xݔɪ!*B*!7U^L'AؐfJkVmlH&&L!L%ƌk]3DbVKqeb*+_4(>%,Y<"K% a.t}Ogpzⱚx0<"[#<<4_J?5Dt(,oROyE~
cGYH=J:5sdz2Iь,dtz6K4X\G9XBvA?N'
+)?l҆3qplN<SpO_PKg:m    PK  C:U            &   org/bouncycastle/math/raw/Nat384.classRn@==Ip[(Ԑ@KY8`Ѝ6"@HTB,HpOA<gx(ʽHl9w_}`+F) K孺@ToeTJa"*
([#[+GaM כ	n{R!;dL2Ύs_ivAEp(]޶t?vC~?5OBf稴ˁ44C!
+۰!l ccac0mئl!krl˳<Gy1pZ0p:
C1TiRzmpI[I\1 JZˤFbO1q![H(WTq,ϱaZj0"ٞŪ3J1ɲazd(b&E-r(yi̫3Yt-7K;8#noלq(­-pygP
WdL!7râV@hs^JfWӨ<gE<Ar
ntKZ,Pw&'rw8g莞PK
BI    PK  C:U            &   org/bouncycastle/math/raw/Nat448.classTsU6&6
&H5
Fk-JEZBMB@QxOǙ /F}l6M$|߽ܳ093b8%3ۆ|ьmmx]Wd6cwmpv/XhGL~䛷>ʜ'oQ\;U=ZB$?`3P
S,.$$;ʋ~٭ 9VkO|j/Pv.MkӹPR66ȸxelk^ɮnɭKxj WzηNTK9RqKNe^jnUv{5&~-צs]$Ujr\sբг18&!o6+ҵz)^kVw
Nïm]C҇7>::_Ii^%nP4ކ+i?ᕪM&N)3?4o
xK}QrJHf쑅:3I	}l︎$": 8E!#N/Au|:q	Nqg`i2q_0,2,1\`parӰi>O׊K>9河^qaʘ tH\!aVd%_>
bHc_>G-ٔsKb*jF(LA5fʼ\JBMk搼[ʦbJTbj4bZ1(hlAwx0Nt`>FǓɒT>TJ徿U~p76	_@zG0CI1G/+o?)N\y_[ O#X)Lc|}nDzIJx	Uf+w"xVНۇTN>s(-I>vHs#7
ʯ	jt4hAkie[LCX6!)L2-ܵq%5?rgBeT)DԘ lAEѤԒQ(= H$,7[HtWkkF7j꣝"VlO8%mX^mS#还
hJB9h5h0d+t2ȝAiAWd5$AU\ݔ';L TgɞM*j[LO1yEB~}PKq  \  PK  C:U            &   org/bouncycastle/math/raw/Nat512.classRn@=S3NpjH ,I0B)mBE􁪑:Y68,x<aQ{m#<֙s2sﵿ~<RyC@ʛ
hl6eTdKa"*
(#gº_oNg/0﫺vJ!Ct:1!o(;{ξ~>Z6yaOvVx~փtXSTمBffˡ45Q3
g)Lڰ!lc)1HN´"6ecȲ-Dys(`
.b25%2CcҤ;TP?/uוSDGc@pH0+pcBPNű<Ǫ:NZ5%sB aDXتBՙ$dY0d2d(b&Eݦ#<0 % 0dq-0aq\a짺Uw|QM.Z.aϠ.$ǘF7o9"Gl-`EXBCR2/F=9d.X1d{or˦+]b39[q;zPK~yI    PK  C:U            &   org/bouncycastle/math/raw/Nat576.classRMoX=/xvHS381"DJg $75.eO`!$6,`C Ϙ }ۀXɹs}/R*\H
Z*ij\BZL+L5ue{t}C^@n/܈NM2Į._Juo nfjaznK߾&o~ۊ$v	=Z^z]($^ѥn#f؝Nj0Q](5k'g/Gq;N|bzN!^o*@o^i2ѷr98~˱cȰT+/jZYI. ong=~<H( GJdZ1/Y0KBE[,~įY#t:b7g(U|`)2ϓ5P(b/UTK%,PtBnqB2n	2+KPgkMhd8#ukXn/MԄiĴqb<a1#aBʢY BY՚N	MY* Ф<M
Er+>hWД2O6?OIfMNZ
|iMB)5&3x>
{8%N-*sEa>J%K}eؓgM8FGfLOKoo.ݤ:;,]wYön﷝=vS]Ad̖AS?hQ<&.1f<@XVW8k_U+38!V
PKP{q7  V  PK
    D:U               org/bouncycastle/pqc/PK
    D:U               org/bouncycastle/pqc/asn1/PK  C:U            .   org/bouncycastle/pqc/asn1/CMCEPrivateKey.classUmWU~6$l."h#l%l
%-
۴bA۲YÆ
VI9B8K?XgvH	R	y33sϿ÷ADԄF'F>@UkY2a !N_JS7Y7
&ǌ5@\ZPIjfI&u&]H	t{uiw-.-7 jiݝO=l#Yli]RGObM; R卬%ް\تQFMJETs8*dt[%	Rl45ozT[;cM>CfsګstU縭
psEΛҗ3IcrU)h8K˚ˋO&sƊjΆt`blÌrZR]{Hy%@_X,OdX!KsZ6e?ٶwDo%^Dv"^q^%Bs0~̖bZG˝ppȨBI
W
~Ƙz,"sXTh;ᣪyGΓ3R)gչ/Ŏ`cbYr(z#`xU %OMƫ8!CBSM2d'52B8PZQF#z]KxC98'g(Û7e-uo1cbp	I$ex!)
;^;~!p_Ug$.}kp&M~V	uio)
ƊhA9Rd'<I Iˆ 7"H'BB?1G\G
QRDAiB#ldSwGJ,L%pi%T,2JH܂y9OiAS:mW/TwNmF~_SQOX(+w(lcū0(Jb*ܒV"rK&F4*F7˲{N-!KT) 7=w{1+2f	㹊t	"#Sx7*4b/bsOwlcgXo("eX_,(Wr5]f\+xjma_cWg#E<ߞ @k\Go+rV1<A.g٦pO/_PK
;  
  PK  C:U            -   org/bouncycastle/pqc/asn1/CMCEPublicKey.class[OQ.\@E[dEb} 54<mfB{JG[D[b/>sv+bZ_fΜ3sΜ??&CP2=
սM/6Vml! vFDYqal-
DӜ!$"[FiMnݺcFW,ݨ9z:r9n(V]U_a"
yv3syny]=Ͼ+WRO*sph\f;}]n֋9튞Vc0wy(;G+J&ẄF$ܔ0J
[\H	'PP`AQRx/gJG^1?T*gKuVS}Za7M)LXЧ`1{+qG1M]ƄXBB2ncI2"X1{2)eDqʌ[:v8A	=/u%!QkOH~ <Z0DfgM<=&VNqF0L/!j$!0!祌1^ha.F Vxd!ekҾa=6	R-7Xë&Ku0PK2-_  &  PK  C:U            .   org/bouncycastle/pqc/asn1/GMSSPrivateKey.class[pWWҮeV_'׎q%[&qnRQl5~$-PJBy?>ӏ@? P0L:e͹wʯN0^{sY(|[>׋8|SIqNз27dB&+A	#0CScOnB7tvqScK3ˋ7WSٹt(z:u2407Ώ^I/d3W3i&~c:4IMVgC3ˡscUz`oR4Jj{ч,J<USNKc+SWH@gגхlz&4Dja&-Aiz.=! ;ΞIgffWeTTWR+%ė!b.PvtvY'TfA̦ɕ,w;B'	%#ts	|7#bjfz4yݾ&wR҂Xq^#I4#8dM'ltzhj2Y)m
H೭.JRV*>^kw/^D򇉵k6˰Rf>;3GevAPTe
x(WBJ
PRYZhS@~
t(Щ@P]
tKR/&vQ

wq38٫aj	s0m۩댱콏FGw=zv]E?"={[K$ٻl_Jfm[I@y
]K@=P%J<P(8<PÖF4S8
IFx-*<cKa0 e
I,[0aU7f!2Oa`ˌF`-nr- L%톳[Rl̖+nc1F[p1ySl9ΘΥ?^0(:_OXr"#y7AyyueA
՝ύҝ:{AZybq:ߺ
ԉ8*<;sNCE]"k*Q\D-SSq2FT%eC)u#T=)ka0s S`+RF3VA*h97SF*-G'oT2n3L7Z*h?oXNF&܃uۄtL
ZONʯ@?+R
%nelLe52;ݙ{s% X};ބ3dZ=?:::BUUCh9KЃ_1`u ]uM%@+o@]` y/
xZ9g#葻	9*k5(oRcb5(Cjdvr&IjXmXYV GeQ*8#kom+:Z-*Q(WYkQCa神X'zYk 
IF҈AW-iz΢2P`Ll@ 	I e4#+k-O3"Jq2y	%
pV=#)n!8AHi
-[X\	6ë&sM8eQn:`1(E)JQ%S/*XTQ7Gu6r13XE(mF31׌. ]*{zA
B+XA
Bݹ ۂPZ Ԣ NAB?$s]E ZdRޘaCZmI[|H[f\kAcj1[&k>⣥haBI;%>L;Vn!H*,
1|+o(aL	]'' ²[fZp\Ϣ</n&@uNZ. kAѪ%QYߑOn4--sA$J;81`&rH|L@P !Y"]ԣMq2|0ߑns'09-wZ,纹!N\W!3k<fc߷4ra-+lZae"
I7|<b#шÊf*KjL6_L+lUA<_#%_K"|Evʗnx>jWԚ5_mpAW%|E|E-Z)_1#5_1kb|vW>_|ĈEIz77%.ʾdTb$FoQ$&=1!5	IpJzH=mwf>z`,JP':+r~#}$qtO1};^>N>AO&!NoGoB;.{bV^қ4[T4_,ҶĜuє-7ؠ>c5nf!:hmho?g\?_ﶟ~M[^7ZhMD$l"F~;6/3,}?rX7o}X,<<4cD~Lü=e?*)3qfFkο}.f&Z$! {kHBGA@ 0 kIUx^vG*Ą|=_&źlntm	G;.{bV"ZEx7	5{sIGNI
 dmS
9ur_ؖ9-/ MdnQ&n
nӦݐH2BCtV06fH	#+s[@CG7uh2"
HG^OO/NGgg8 .{'DЙ5HHňwQn'|tQ5(G_ĿmQCF5
g}Be0!BlYmο}OD֠^1]Ha&0ĪmnI߀(od
7ݩ
?T0
^?IxPKRd  *  PK  C:U            -   org/bouncycastle/pqc/asn1/GMSSPublicKey.classTmwU~nteKR!}]!VQP$I*fsY\vO_HcQ&}Ѷܙ3ϝ;_+ːIBq36]|r|x {1RSɀ뇁8Q4=oT*RJAJ{=)0pTߗU׫g2P߹08G*T皞_uLXfa3p7]|uL6_\ܰ}JU;[^hN>[!uv4(כ2[uDDۓ>]ޝbqG0z٤J=i#~nlZ`XJ{)o(ITmzNëNixMÈh8u
ohxS[/|Y
Py0ʋ;j{+Ci&}"򥗎Eb0mbw9f!,@yŕU$ܷΔ}%w=^ở301\46$308[	A4i\b7k5p3tǱ>/>40+W>JFᚎq17$
{:.pl0,01paQGy>IͰB?ro^/j&-`>ddQt&Ȣ!WE|Fnď`DNpbXͲc-<Xxd9~"%
0?T[9L#]:KJ6z"Rq1s@';K6l˩%
+duFd3Qފ8O;wtav0I`uUL]PKyU  M  PK  C:U            6   org/bouncycastle/pqc/asn1/McElieceCCA2PrivateKey.classVRV]"JkhhҤ傌!-	{S^dG@gj;Stҗ>k#&>hu^g}.o FP&=\D3S<^8cܴMwBD6Ahg,Ϛ9~J1gri8_ 	rܝ	X
gmru4w
X']ft[Ͳ?
wW>6mwYG|3"eK:ŜƉ]'SC^Jlk$PAss8s$mBIܢi$nK#N}Z
R'KgI+Mw7r5wL+Z2f-|zz2Z48hq登[YY9]d\"tCWy12t蘧[
,A*,kIBӆks7d@Mʸ%_mɸ#㮌LvLB$6ЙRD^wp/,2	fb<DC&tΡGulh=sG)̿@$;fSƚY%̴4.'//+L//jk*z!x_tPtP0:$hSуv
@H@X;
3T\Řx|х80'`^
"x,`UAIK
4q/E`E
`_)бP)CX@	1JѰ
)}o;N۔ˌ%Vx*)P~,hob4j,³j`K!'0EX o(]i7JJX+!ʰKzeX%dގ~<I*Y v-O(^29w]=7VƶX#qb97:}٪ަ_7/)~zmN8N9i4QkX}yU2LbnVԘWB/SAz$U`Wȝ*"7*Bm
/ۚ͋n&pŢdL*>	6qSѩ@T=Usd+=NCt  PKvN'  
  PK  C:U            5   org/bouncycastle/pqc/asn1/McElieceCCA2PublicKey.classUrVQ"DSPJ@$$p
uL9BT>aCz46gzӋ>T{$'8~gwu}`OᦂanI$5'e߬EYD `bk
r+Aʢ$*Xظ׊/+2"N
.1aCI?,]ʕBfN*nj8igѢMJY(nuB=NK9qm
.wȂ4<ãG[?զt}H5ޚ{c▝	rϷ̗ڟ|A+n63S;ws|OLˈ{ݳxn~Y/VxojQhr,_۾_sUQqVW*ΩZyT|⢂㵔VpӐ.K`p6K~"jWDyXƻƛ4
3:Uq4dv (Tۜ9*q/kf,;uvTcvhl89g+AKo% CU_@ч:zuЇqMG?ƥjK%	$ܖ0$k5|'m2$p
cX``Qجw$dr.`+͔֤\@CzD$uFM'MPDUǺu pµQ8@:8j3FѩH
2O*5ΘJF4G֢T$?p{9t~}S-KK4ZB˩F
_XaPw>W!-23
:~
}siF5\+00؀Y _ǣ}e?*m+z= /PK<f  =  PK  C:U            2   org/bouncycastle/pqc/asn1/McEliecePrivateKey.classVmSU~a)bdC
RBLy)6\Ӆѯ~3&q̌Sx!03gs={nQ
']\T
g&<fe&ض)PHĂfMƴ)-r&=l*i+f3e
ɑDHD~{[,D#lCR!f<3=Yߔ3Nu33v۲mzv(=9BlVmbױdTڱxj>V)-H;
N&mGf%iJVp	G)vVu)'ܬ/z4XSJ'QS)
P0#g$H]%8<jaezADsyqМ?& =G8f{4v>g
+He)r|ԋR*@u}*nPMT|ⶊP(m`,mH?ɻ
IvnΪ=Yy:5nz9Eýul4{HPg(HhvS싨%l{`:`3~qEJ&/	(أ/j
UC/Cm:4NKAЊ&
]hC+Z}

eS
ov0aa!9C23_c qAD${xó 0@
7{
KzO˛ި)G[sb?bGI鿄&yMRK\K|_L%:_eWX{X`{ZJ.bEQK,bM	`{Z]g%N<b?Mء'*_!x~B.aVBg24ͻeEKxH	pG.
8ZCWZC3zZw+
ޢWe/X_~Ru_7B`0MtC_u}U/5ULRSU ~2 [+czc'UCʔZQ @꿚Tae#orftͣKGzUPKM,  F  PK  C:U            1   org/bouncycastle/pqc/asn1/McEliecePublicKey.classTNA=-+*⿂V]QTbJh
	jLŲx wiMxC-%Ho|g73~0z4CHJ晌l[m&$ԂRU\4`45iw%`p!FX^ch	o= 3-qgCE2D/nֶ=G|2!QwIKiAƜC4JKlˉw¯>I?Z
TgVʱ%7m͉mlGmrخ%Dٙ{YNnhiڼ,ddڞ)\PpQ%\QpU5t0eNXAO٧(/cQ'G8؇dA?._swfJOO/
LԱ?#z
݂?GmA6q
hЊA
`ZФAE6	-Ik8])DehH%Ԡn+"'ᾄa]x(a\E7HU#z1&Ø~L6b $Iwk^=zrfKyH"BZ@3
w^T
5
"D_èѱѹQ
bIUKJ!L10'Śx2fdz,WPo
$<vH|M;ܟ>۵TjD&;5
j*+xU-̖ڏ>_
24RErl J;TY2#=Dvh"l|\;lǷ#Uj~PK//	    PK  C:U            4   org/bouncycastle/pqc/asn1/PQCObjectIdentifiers.class_SWVK"jպ@!(8 Qq.z"	B mwk{Nijkjkv#>'
hy{=ɽ	1 ˉNsubW81ȉN\'7ic`u<(N㐇LYKM~I{9{B6xXˌ(4,
4#lY?nF!=	9d26/h7mɌ4u%́ʦp0^\1Nvj~3nU7ݥp$&H*7H`CL$n3|=F`և<HtYw'dՖNujw#n#h~u+2{=uC2zd'bp$P'
Ե[kj*պ.S2o͔^=Il6f)}F0[mB6
4[O[_]]WI=פfS⺁͎O-U3(/~[mlo]sm-{LvXߖ*.1#
%͝]l6#(2!c82L IDqiCBRDb2$%"2rRAJ2, U,$5,",#ˉ\59za֒"a#-$N$IZIi'l"l#"ɞ^X
Fr#7Iԓ YKHI#YGH3('	$dH6dJdIvD[ȭ6r;I"wgc%!{h'{^0d>˰֬)b(3GMeN:Gs:s:'9Qg:g,9IL:g뜫\gY:,YR:kt9_g΅:	2hm䳍jmEbhm4UK[/X}ޣX&yI8kGXRQ٪|eoU~2G-[2,S[2ś,S[衶x[=U}@՗Z:Kڡj)ćI|$'K|,pĻJ|*q'$N<%qRI|&Os'%xZ_
</qFE/K|#ķI|%/IxEqNH,pR
N$~8/}8${-?PK/    PK  C:U            &   org/bouncycastle/pqc/asn1/ParSet.classU]Se~6eCچMB
VP6-_HEZ6KX4`u^8uzMgLqjg'xhmaȜ9=9o_/<pK!-YW9rnjˇ
MtŬEl'fZ)*1jhEY}ЗY7+c&k I/ih87#*f~_2t'xiOݦ4JUc䮦"jZkZ,*7F^U;U*V^ִtHgK%2buŰ꘶%dsʦUQtbzޮZ=]8%#Ut&7;bvA/yj&|X1?ہw]c޵zGpZ9g]{ U,3vT̗N,PR
;l"*4;6w6Y6W-# _h!S[2b2dqFYW[{V;ٽx[#˅	ߠB#A&pAF|qfj?anvM4)8Be0$!Ѩ}WA3DqIkxX\!'p}E0a$p3$Ȳ0RKa<\cQi]QSab"LXLLj7M_Vy"D~ExR<U_ru#uN@"y)#H:>Chb_u|m$f'-:6Ƚ[#0RC?̇WSxj6?& ]+"E`<F.!g'<c@LRr?-U3o?@pk2cL)ʫ.͙`8!HMGdD ?Rk?ט8ixiux,i/a>1tsjkL	7s_$TGw?ѼYu&օZSfy^㤹;#-,?1[(""fv!<OH?ǃbD>pb=~Ğo7>O|=C3}Vį9 FE9;D$w;)a3*]5!Ny9n PK¦w  	  PK  C:U            1   org/bouncycastle/pqc/asn1/RainbowPrivateKey.classWS[]\I+!ঽN V	,ʩcXF`Jh)]"5פ8K6[7w/~	˄'yC֙3?O}WBř;|9= '0iK:iNI,C9T%/;y")^D
"|8-/2>vHFHf"B`RPL<)]-g){܊O^ǭ\~&/Lڥx9W(^gr3V$Sdr˄a]Q:ɤK/,s3
µ]Jm!FYvD'~d]|!GI+zʲIU&&o8ey#dH$kMIVNs>o[6y$P*ʳ
d6)w*m[*vƓفb4V`X5f汝1
vRBqLqYUK4ދrpOmA
E^(sgsA?_' ]}d
/)Cv;@G(؅iӕnYC*>*:Ut8ℊUtxBœ*")}%x$n%
螀	*?lp8)owdW\!ڏӶ,.+YgHşd.s\q,.Zq#y'0Em
{y*Oj؇f
3yIp)p4ahx
&i¥ <a?T
4$:KA&!&
LL5+L\,A
1LLLgc2$d4\b z1|m{X iXL^b Ρ@f L^d2 JL&\aRf2fr4-3QZ1z_M>3F=9 긯$qkN!QGџv8zCP'.Es-g6B^*󘍹Ih~NשV/^iioIv֥Y$AW7k1'Q]Iw1<BCeɚIꡤN'jzj^7jzk=7b
*)8D[34)LМ1hYWw	m̠rP
"WLM;.ᚻ
;OL?UU+6
B!AEpb(4(]l1k*6
z U4)H֘5_QosvkQC 
з!q]KY࿣o/W oT׮]h^R"Ԣ~	}IR9t	wFR*
Oq><+ط>hj{) YB&Ǖ6*$ktCEf4[iK-UC7i:M~C@Aހf0>I@k#dnяZFf(7]nn!cx&<|^}"*GN[Q+ǶE\Aٶ͚*|ucު>[X¯+/9ggZt0Z2|ߏ1_YD?G=Z87$d"$X-o}oG
t8k(  	X|Wv"haV5c=ǁ_)`z6AݨEy7TWݺ7LT~1b	L*vgg+64bԹ\,]r NLK[/V[5$7F5DՐ*Ej
!jiMNܟ8yܬ~lJ
91c
H\_^>=
h<ʁ5##-~4kׅ_DI<)Vy	VsRkHSjPK|  u  PK  C:U            0   org/bouncycastle/pqc/asn1/RainbowPublicKey.classUkSg~,,D6xX+Q@$JR.W.&~n_/@geiB3Z{λ@s.s{ٳ)x,	 z=PM_#]gQdYÒiExm`]c쭹bٖ{UB[>驔F1nTVw-CBp
=g%4xeV
^2@6/KK9ƨiݻӦ;VƢ@QNIrz2cvm{t[k9	~ҧlrl*Ӳ)=7G}E8t8mcsn9lx >~v6̘Sڡ*:wlL9;ǫQ.J,eڮ`q
d2fiJN΋TΤ7r'ʩ7xe'Gd2n3a#:λV9kur%(K޳UШN'RХ[
N+(pj.*!T!z QA׾=Q݁JU;]W`V w@})0zO_NEV͵}F0~S/3k8FhRqUC P(|)*PϠhG2
*paaa0|)g1~aaʏ0n0dHqK?aaڏe>V~\~Jpa!p!'EmCՍcmdtRՠG@ZOAȖMPAH֑FBYAF5_

9OpP&kWT45$\<VB5vڴ1'3XCg8?|EaG)l@*^`ʾf~$<"B+Z*fw^^∧uF`##жNm`zBSwZsT&rym.$ i19"OP=CdU{-DMkWR2k$gQ	Ǉǵt<1	s1ޣr3f6-2Z`]ܯ[Klr_1rԳ$5蕚*0hI%-\HU98bKnb"rԸ.{q+@oK8~U.g< ED#@ͿhSЧD3	Zb}PKC}  l
  PK  C:U            /   org/bouncycastle/pqc/asn1/SABERPrivateKey.classU[WUN20^@jږVS6-H*00d*}_]KˬL"ԕd眜W q
Hړ!58% )sXufͤ]˱IA=U2Fz.GN]pLMֆ;[OWMM-5ݒB㆐!23ݤuL2b*8>@98EݠW=fN>m3bi:nan^Hʎk%6czə%33)(Uۜ:Eܴy8C9B.dܢ]6N^kMzkզt:يmeS٢/q	jٵXXwK*)+_)qش\k=_vQ;K37S?HHxW ޓpE$K*	$\Ц;]PB:}|'ݵˀ'aFӪ8{ɋ9*f?;qۍ߲ik9ޖz6)GיkH&W)@VE
3AQ-tP10so>,R,!4G,19cxb^8Ȱʈ1!fX,Ș,eĬ[F(_ɸg$/ϡ7}s7Fo_pxŞQ5MM -&ȚEƀU
+V1='*XMǊ6em pI^%!.$D`=Kä;
tC?17吨3ڗZ)M&<!Eʩi!~ \CyfY-*HJhCD/R1~agI.'/!^٫[u%TAܫޑfV`LGr?T` GMW*l0%߬V6ZE-O˸+tk#*Yv=wJ/PKR  	  PK  C:U            .   org/bouncycastle/pqc/asn1/SABERPublicKey.classSmOP~6(+ŉ@C7-q*adf)⿘0_2v(-3ss~`YaȉCn?< V-rB<K%V&1M6횫ۆ{o{](tk74C©բS#CSkvJMߤb!1tyjeθyP7L_nK%_>.dŊe2.@UQժ~Dwj}\pUk!ঀ[nSsy3ab'w^msh^ǩɹ=PW+]VGuQ>kͰ[i[$D!HE?+q+,ADD$>Ms@Y.(PH)C.D#.Ec^TD$T`םʡ^UQ*N4@~4gE=M#ҿ:y)M<SXV掱Jh H)VO"ë󑀂6ä>AzR;}3AZC@maJ.xS5O0QH6'ҲW~ 	wOZS5n~$bPK&]$ }  m  PK  C:U            3   org/bouncycastle/pqc/asn1/SPHINCS256KeyParams.classTmOP~.
CyQ:Yxw!@8BBWLnm/<=/ fЪ"sڗ-V諑3t˞a?ষ1tSrax}6OMnNnڦ7|0/pcI0CY7V,8-e7Hn/Y'ewe׳tpRsDV;U<넎?z'pl9	d	]	n0Ll_i TPDQL,Dyo>J@1D+A&հ,MKd}@͐~rQցqbE.Ltyed6+dظ5ɄMwZA/`´(h]0a\	at"GL*L\F?b$do	c1-cu'OQw3w/]1SzZHUȋ|Q}SB~PbA?YZA971Qao=}|_!~ؠ͊~Ѿ!WD+wiXb*`X!ZhCPh>!U#F^c5媘ي.yYSkūxRPKM=    PK  C:U            -   org/bouncycastle/pqc/asn1/XMSSKeyParams.classTmSQ~V\"E0_*DE+JJ	ǉr5UXCh&ŉt.a3	)3<9s9޽?}
 %.9q]@nC OYKL/nZzh5*jh^ml1JQGZ^dݛ
O7u2F~,枡jj*Z1bTe,chfA(uJjf
q[siW:3q6`zr6*Ͳnmng̰:/.`gWsDoVrpU-~mi38}V!'"zE"`lJ
ljU?Id9nyb6\D~&Eun-h-əmN92gyEE|yyKW%(Fkl%.l( }iΗ식Ѓ.	1$nI HD%1Q%t#A qGÔ0aڋA^pߋ,NOܢYʗT݊ƯF(8H/}FZmKuK\dJ
:aV	!a%HAvE\HE:1<efM@idSV!XU~_G0I
P%g|~Zw2+KG{zfp\FxZ]א\o>=\O@>Râ
PK!1  |  PK  C:U            /   org/bouncycastle/pqc/asn1/XMSSMTKeyParams.classU]SP=@VRR `X*cFC{-BuRFf}帛Bޝ={ޛo#*7qC˷2LÚ qDO&%4,Զ%3gfB8~,9'fkG$0[
`D|vI0
=} ҥL6ㄞ"@8ztLdVZlz&+27bZ"%])2%.c^pMLT&kXۻ0-~IzcxM4ֲƮab]|H322eȸ#㮌{UPHV(T.M=}ժ(-*5*jVǄ/io6z s3Z8f{p*=]OPQCtxMTPPBA
7}DE=4bf0(hÄ62<eR΁3L+3]xP$}3IzŚ▞tUn[%KA7H1nm
E,`Fk/ u҆
~jRj8_{SsOf
%7ݶ\m
DIT"ۥ_U'UCknQhW@2:7lǥp=кY\OxǏ4K~g=gH/PKHYa    PK  C:U            0   org/bouncycastle/pqc/asn1/XMSSMTPrivateKey.classVkSg~\6(-zAQ	RBޖd
j/~{L!NK?t?ck]b2ssgs]7].`4G
+h&&؅_*0wlYy4fc ~
Gmr:-՟.$tYWTNSɮ(z[9"/1s#tYMY<Vw#ZRxiUeS	E"ݚF,J*gSUFL:3 7-{|!rȅgYU7Bcr_GPNV3h.d\$))>RuCg2/(#E9!;AM\È0si?)jF㠖e*s-iPVTS)甐\P"}jJK9)ܨ+89fZǑY5CYZ!`$:^̺si˼#\SRz7<2D+1!rQB|^uWL=oP5BP	wr
e(EAUu9sTiqԜcv<|t5#bIDVA{ED<)bD<-b@ǃI7@0SWEdU)]5yt[`<'RNqqC1'(RQΕrTNdouG,O9բrk}GJp|u/{<uzQ3`'38=A`\lG-n
X˫@܃9.nGy^">/22+2nG΍.2n!Š00d7N0$2n#00)3\v4.1E7`؍(47eq,uBKӗKSqyq+q[J:a-K}4!A,b
WuF@T{mcҶ9KrWF"5:Ŕ4Rh,&zk{,8iFm*KB/I;6tm;VZ
Z.x^k?Kx
h[h`e1f
:%7kFƧxߪ;討\Ȕ#Aʸyع~Hߴe6mwyb!mxX`~,\n~nr.I {8	wu{`.Ȣo\3֧o}ߎZIS[_Iz 6+bIZUl95dLdY!gy=ݸ6VswUzYuIƕ
%S-K2+dLV09'FD%/T{[Ե,-.y1֚ōrd=>pTS.Dhf'HDg%|nIR$Ô<8wlYs2PKn>3  B
  PK  C:U            /   org/bouncycastle/pqc/asn1/XMSSMTPublicKey.classT[SPN[H(KMVkU,Z
S	)O_3J;Te۳'~{v'߾$gDF4ʦ?ds/2Fv
ZWm.>nr<W
lʠӵZޝ٧

@{V @ΓYǶRRB+Ĭ͘Nf1j8j:Z.ݠʒWs^ݵ-82g\|{Zޜ9:sKn 8ΜCkPrn+uP:~K/`\^\N"GoN'x\o?{\拏^~krlQUAm
+ء`]
v+#П=ި<oWp|33u]DV=.j'aPf*V 5jmo9ZZYZ;I9ٶ:}?WY_h=kU>4"	v5hPհG4lQv1א0	=qጊ\R1#*<Q!SqB᪊RPa"mUo9ULل9?@	tbT0A>l7w$yĈ70+EHhҢ[Dez6;+'s
RMTD?Dej[ٮ?oBm?Ƙ]^AR>H/_ۄ^1V0XZKРH8VJ;)Rؔ2k1+l;`&Tz*,6w,rT
#QPKo$    PK  C:U            .   org/bouncycastle/pqc/asn1/XMSSPrivateKey.classVWw6(-uxHlPj%YC$&{o˛탾<O9>J{`R=sfvv Љ|^ O-n orxۨB=_N+qy6!Pǖ꺲Z:%@ xtZo,m&,RN*kd2ճjI5RKWcWՔm	g/e)΃\6PU(?
)պ2й8fV(>#J.ύgebE%E*%SL$˩%mdfŊ)uʲuLNUz*iеdf	aZ2|.-I7RVrƩ	F&2lJ1QL`;1p02SGh>Aҫs㚥fTHsAػAKO.`$FMY*3AU8%CSR"1hd3Zl.m,mbj	
:t՚ZE	M$KR|YZIiQE&B.CDXO8(9`G_ul^"|`]jyyQfA,yr>Dת~fTc`k]`[jNGliyjUN*s4C6p0C'
`QP@ $m`8L O 6"yl EAy.1$F.3GW«~c)ärg
Caʏn0GY\Y?诉&Hj&ahx1|47xٶӵ\{ص\^7z/ȻdO%+{`[`fmr>Z0#ه\ .p	ȞEY\V(Vn,=A7Fs׶K&%\QXT}komm!0k? ]9!Gxvmu(#9,VGfTqCD>;s󄷅?6lz9m|w
|\f.?N37iw%n~xDDiYO\ 1쾻N@v3bH'_\B,)ӠJl^_.EM H^dYVַr46-+rz}w+2'Wd*[WdT06W0;i-+Yk}@ߠ}	'Zsnxn8q{؟-
XuR7&)dG	8ޤ
I0(z.>L2?PKY?  
  PK  C:U            -   org/bouncycastle/pqc/asn1/XMSSPublicKey.classT[SPN[H(K&U+޵
"U±FciSWRxy&|{owOƣ$>%OٔlneG0NYC͙[JMUZ`V˻;\ZA!b
dPHy>VYJWȟ<b%)өSxss9[͕GVMW/Xr6=W@jnګּeG̚;+]˛19Ex@ܒȪ$NzmNԊu(_9mJ+WuѡI׋+(h̾"ޣr9zr^`?z`;4um4	?Kwq9JpnzN5E{QMv
v(ة`
(ث`@ofp[Z±
L4
YіX~<3!Myheim$gdP^.ZBW߲P5`BLC7z`SOY
qT&c8	
)1d8gΪe8pU .0\dVq?yGpẊAFTdpM%
hGT90}J
:p'd;A2$	#Fl](GC;%"r0ӳE][j#&/Rv	vCc
tzK/>Jx
o"i|`|GwzXD²XEƱv4>H¦mcDŸ|net5p{%:VX{mh6d(G
PK"    PK
    D:U               org/bouncycastle/pqc/crypto/PK  C:U            8   org/bouncycastle/pqc/crypto/DigestingMessageSigner.classU]WW7	LH")J5hJmj
Rb0&83a}C]JUs&C@Xh9ܽϝ;y$N$1D&|9K]HkS8ד[l/{sP2c8Pו7o)Gr9#+qg`jʗUa3|zd-O${I;ؐzT`Tg,'-IXԆHܤΣK@# 5ZqGVM EDM#!@#ߊ9Z/XU|&3S~DEck*,)k5XIiեɖ͎G@ N#?6풪:lEgtSZo\{Ӷ&K=/Mu)؝kY-ڨ\>R|b!S!l$ݽf5<UF40ႆ5|c
o@(86>?
Mu&[M#Ϗ\ʭ8Ͻͷ/8!qE:>@Mt#$t^=ƍ8u>|/|f"nPdcJ&1Ii\u6at4.c-6}nTm(51ACO_+ cM5z>/Ȯ*K8.
mmD
%ȯ۸k-/0/PI}vCw0Nr+J&8YBwd6~Y*4g^!44Da$#e?*nP\Ɉ]>DJr\ e_lc)ߺEm)MseJ{P#iRgG>хKNSF#af|elE2bdqla8~}]PK֥    PK  C:U            B   org/bouncycastle/pqc/crypto/DigestingStateAwareMessageSigner.classKK1O:c㣵[wT3!G̿RPD ݨ(BN.;\
`@B9giH5GRܘe[erY@b~:	@fNC"'L)XI6![*7|/,U5s0u?RI#UELK)5sS50sF9Ea+~vaqQA[<Xn%A2lm>AkoTh涎Y6zh9ag]k98X!{PKm$    PK  C:U            .   org/bouncycastle/pqc/crypto/ExchangePair.classQ]KP~SLJ˂
vD$FW	7^A's[g[U]Qѻ&tz>^832(z{C^ҢcvxŐIx`&"G#ǶnEPaʥ^'n:ܝBݓsE[<ai=ٚY-Z+(+%9UQTQRp~^.|.BOf"BokJ6Ӡ!!-ԓSB%TG׹4.2%"je6uGPxǾq@8W$A%eʭRfs/K@)\_2PK#N  @  PK  C:U            7   org/bouncycastle/pqc/crypto/ExchangePairGenerator.classu1PDwZQYM
f_x(#DSLf ֐ e{B+Wa0XLŴg6ȌJ}֜&0I`Èr-)5tik{	ЉMcg# A! ă}PK      PK  C:U            >   org/bouncycastle/pqc/crypto/ExhaustedPrivateKeyException.classEN
0 jqǐAP\At
1
5ڦb?Ip(1:7q| ƈ	GvfT1ҕR"e*̊克J	&&OޔWV	8yYC++m.ϮկQ#7R"_D/smx@0и~xPK9a      PK  C:U            2   org/bouncycastle/pqc/crypto/MessageEncryptor.classuN1ϕq1 !61܍0肸U7cЎm%j,x A!ݜ{Z!޸ dƚHL\JR>LSt>Tɷ'tnR+;;Wy1+/`YBϨ~/-\@.xߠGՌ#p{"!Om486%%/PK
._   *  PK  C:U            /   org/bouncycastle/pqc/crypto/MessageSigner.classeͮAlΎ-!]::Gkgiy5Dq6UJ}9`BcBM+eB
5]PB@f&Fi&Vo7"X'yĢнm&'h(惘|ǲ$#bEMZ
DB5AU=PK搴      PK  C:U            9   org/bouncycastle/pqc/crypto/StateAwareMessageSigner.class}=
@hg!L6be<djC+؈`5}o<;o尳%̕QVGfhOHjkTV+jv(9imZm96K>\Y^GOOnrҵe):ݽ5b!F(<H!0^PK1      PK
    D:U            !   org/bouncycastle/pqc/crypto/bike/PK  C:U            1   org/bouncycastle/pqc/crypto/bike/BIKEEngine.classWk|?ٝ$$$*(av <ĶddanPKZ[Vm6bEe aOZZk/Vܙ}XRds==w: -n@jXNbA[ H '-[:hslIږK
hK|iI4C[ҵhZmi[HҞ6jBg֝\"LIPjjǪNs8@k?ݱyPFa(
p#cP	3^"1ivYW(MXp|,16'bd|34J\

)m]8t9Jc%ȯlƬ)ֈ
[]wD+(@c"mr1㒭In
#yM1ck̉uML3\T32uc4
f2^tW@ƌ=8XF6Q,
)clt B;CQ'ED6+H1f9<'ZIsMF=cp evDF:5!,.5>#D~Q
Y⊙T7nAc<9:G&CtlNN$MtN.=5]ﯝ1l7[;kb#-tVYK
u]DKΩ89t+f]<:a4E=4e>^ČL*iuʓfx76Ń4;͵b
Dtth7:=4Sq֕NbD<>D 5kJ&`,lFش$oyYb-NoQecOS^&/?y}F__r7/R`)\
t(RP`kQW>)p mkgε`nV^m	s1tvYYE-Xa,'
|d~T$y)-	cs=g5}
.i02"DVYOdD!r)Lh0 {4h2
 Q6h`|jpD[-i\
R~h&VeDA^`1OB"`&k0K`>h`>4ik)٫\\p]DD&HDn"E"7/WT**1p
;" r
IN"_#u"}DyCDCdw<L{*D&r/ovR]pD%}"<N	v7<܇+/thx{O(1h
pC;Je/w|7{y5_hp$p!fdFcrFS8bR
ݑx0QG4\8Qxh(\<|vnr@1cGaf4fՀ`NqkVU\p'2Y{y1(!*W?oJ69(Erė^rK/8@FYpK9Q؁.³si1sD%1mL$0)OjPl2s/-SdQ8du9|Ɗ#\q3r/3v8N&Lq"#G虓FE .沔
 0"PϞr3U"ȭ[*P"5ټ35/1di*PkOaXI*zUjk@
WЙjs"iOĳq%J޺ BlsBV
l8rJ9I.oT"MROhTOEaXNJ 0	V=hk_*Y]4BZVj.@hX%uYE)?XCaeWX)`#G
;Os >/)Jeʛx4[9S;?TFx&PihJ
U*6Tۅc"W5."yt;:#@5-BMA!. o!]egР@Jm?MǺ[k|t\K#?,9g3q>mwFP%=~bԮSr$o5rYijx>?Ĝ̕_ \FZ$#
:Ҡ_9&a̍^p FpQ.H>9K\xjl¶u _䵺=VvI'rίK>u)60)ao+]`ocedj6Dj@ݺi൯coy0GLRs"Ƣ
<xҤ8Rl׼==2͋{V]a_|x͔|ܾ
pVl>
Qʄ@-\WC{^15>.]U$OPui4u
{(r7bJDheǳGT/UZ+)\R󕾷P|϶}%]ەG݅_`l#<P<QC7mR^omu3Ap8<sڕ)譅AjjImn-|WE`ZP(3W(|
b۱(Ne;Wwo$(fҁ؝ҥ7A&+`݅XR>C7qvz< z9>]j{<)
y>y~lŭ48p
30+	b'SMC+ο(IK:] p:\$UKTpQ
ߡmh.{31e
MVwG@5m
w4X2ɑ81Ww> kI|ઑ":YUf_+KYg/jZtXٜ?k
\:L7zX
`oPK  "  PK  C:U            7   org/bouncycastle/pqc/crypto/bike/BIKEKEMExtractor.classT[S@=1UmBPJm!,%P|	0>MM|ow9ٝ @5t;tf( ^)EJ/{<89>c3+nܥel0Z^cjS̆aJ7ؚԙn3G@9evcXfΆbT/wEVtG[ֶvlQYg6V[7>`n45O\2ZлjjRKLd-
솺j혺kmTv[fka,SΨZC媱bZ><^.Z^<a"'/G
%:
]
8FSmmqMDJu7D)▀9.oZ@>T89MUO[Paez2!၌H DtɸW8$D\F722%aqx(6&$!Dk	w1%TrJ$<GwQ)YkOtGIaiҺQ*͆|Пǳlf<WRCOf=Lz|_N=I:L{X䎿0Fyx(}BTL>e!N .`4OD*ytyxћhKL0h8>PKэ    PK  C:U            7   org/bouncycastle/pqc/crypto/bike/BIKEKEMGenerator.classTmOP~:բ^|c/`E@qCt3Y 1hrŮIU 5(-3(6=9>=??0\V^oQX&U	`fvpYBJx,ϵ̐Ş0&yFS~ a\ƉQm඄l5iUV# g&7[,d<H6!,l]aѦb;;p(aV(aM]+ ta=;&8$;1(fT+Άg{bֺ2=i}7EU[tڎT>U	cMs3ճ~''1,㬌d8/'`Va$9s'͋7=iC>׫⨰
|JoJuiEYYE\0 Ia !>kPqCNc*1@^%RqwT(̴03̩DW1*fVB(8FZ"}btcgplQS4}+?a#CrYXÃ=,=M_R:%G._i].ba=/t_"(*>?/PK]yZd    PK  C:U            B   org/bouncycastle/pqc/crypto/bike/BIKEKeyGenerationParameters.classMK@GbkՓޚ(,HiEm:U7BB7 ʰ<e^^u1!;FLɒ6>3-ռG)2J>/DzS#yC;Ң|}T}Q23t)XOhpԊ!(0b# CA3=&݇TlTraӽm
}wGlK+
1 PKꓥ     PK  C:U            ;   org/bouncycastle/pqc/crypto/bike/BIKEKeyPairGenerator.classRPƿSbT~A)-ZTDD0
(iM[茁qw@;J9;gfnN
-*
SCα$Gdc=f8Ʋ,J fMcxkHSFeK )oh4=LrKƽ%=[&(6Fɋ	ޑω4/o
=kQzQ4$$SӹmMPJtbN](/юeZl}/~mr[V?7溊'G֫ؿu٩|km=va?뿩ZoRAɆyBCFSpHGSp\	'RpZxFiX֟#6HOiOhN'guCih]Q0}wh_nRn6$'!?,~S(y^_)hm}RCA
aF0qq4(ah@@^\Ј.Fv*^c\g$Ё>F?cqqqd20T\@JE&T㡊FUXG*..>c1Sщ'*tO|p07/@.SP}{|þmmȷaRi*1G [ūOA*Kw]+H>cn+Xp-F]<Fjq1U]h&u͍>eEMzuzd)r'6>̨gAOɆ#+0נOHpv"^儲H8i#Jo PK1V
6  ]  PK  C:U            8   org/bouncycastle/pqc/crypto/bike/BIKEKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF#}0I٩NޮzAeg`ag`ed0!	֌d2Ո"Yf'#';/0DSR"@fJUYL`67 ālf ͭ%_Kg+Ff."A Y0m K3  PK
kw     PK  C:U            5   org/bouncycastle/pqc/crypto/bike/BIKEParameters.class_O`Ɵڍ
":P䏣AÌ;Qpv8f^y奟FIw&^t-9osެ۟?~Z#)*YFDFT11q@(q.BdWM@Y,@˶<_Zn +Ԇ-YDj[g,ZϭsBe+Ụ's)Mʖۯ7Zwrorz9gQe&h=jQWB۳ʆ^v*0OrUSrO`Ttudf9R?S#hF!J*ᚄb+ZՒYZ9L9[x*ӖkO9~tu"pq.,=,,},"h`͸A%BEb YFXFYLedb2F?fH~RmݴM:9N;zq׻\u<'wt2(Ut
J,!% ڠE-n#uHkjFJSlijƼJ64U1"TjTX
T4
rAޤ}G/vq3ViU.{Q
;%˾8ay{/x"|Zn>A8fAQQւ
7<t`UWor`ƁPDLr	8QPKp    PK  C:U            ?   org/bouncycastle/pqc/crypto/bike/BIKEPrivateKeyParameters.classRN@=JuS41$\U)lK14H\~N,69ι|~ 8@._/	%7i8g|<e22ua&-Mj&PrYxoVG#"Zܷڰ>еfjAWu{u,a3tU)WؠZ9	8j4կ޾cs$=>9	箧m	?2:52DɐrqpX#dXNWxAǏ,i1U?|܍"7t9eJ`獰0D)e崒A/D}Ψԓ''92QΌdz)c9Cr9͹PKW v    PK  C:U            >   org/bouncycastle/pqc/crypto/bike/BIKEPublicKeyParameters.classAK@&mӤѪzЋ4
"(zR1!JAQ<Q☢̾}
6j^o04q0q3k$K%3l"'(+RQp;*s(<*ZBаXB~TXҷC,M6Ñw;'л7pPsQDۆ-9X*|Aa-
QA2
H}s]O< Ԡ#:dPK.R    PK  C:U            :   org/bouncycastle/pqc/crypto/bike/BIKERandomGenerator.classR]O`~޵ct06>qbU&b	t]e[Gz
7\ȕ~[h眜=9yxb+	-PBpfh0
;9K6sQ k˚j.z3V69kjuS/,~V.5|뜗Ս^f\Tͼ]5.]g͜+bR̿V
UYjj5MUʵmowZ5
Q^6k6jtjEhPݦ- $a$(L%2CkH֮hGDЁvp"^^$DDt G1?zv`ā;qCa[9%6
gA-٢A<Q>$7=lNn:El># SퟟD(PBj-|Le<٘TGČ'c,c>?
:7I<%6${qoқ{H~pR<w
{Hf-"A_qNFc΁{oڂ
_c[?4䃈>%l0r{Rujx^sin~8o>RW<mPK_  P  PK  C:U            ,   org/bouncycastle/pqc/crypto/bike/Utils.classQMOQ=:3u(SԘ:-Fl:mRh;	MSbM6lƐ .\p)δHLs=Z &0 #pAIT7"H'jbX)Z.{'ժQɏ׉jz#gV5,Z366
p£ўR`XrX)1%e}UJ!v+lu(3\6kXּ_5rz*\,WkT-3-VD5lDkf6S K8%+Ǡ̞|5(^և{pC=P`̼?o鹕9ֳ%0HR)p"} 4NznZ%uW)Lr[*\Sx<Bto\$a{\?\	!!!LZkޠ34~v5zl
HaD[YPAkҔ0"Cc3Z'/)<		Z{_}uě"(QO|
@܇oHd22zށx(Hk
WWPL8#-5"M1*R&Hk'ŦtHq#I6]sƧǮC>1}=1-H
:=1!x~J}	@V4]Ggv9M
Gs@sgK$졫h;`RVPK+/    PK
    D:U            !   org/bouncycastle/pqc/crypto/cmce/PK  C:U            ,   org/bouncycastle/pqc/crypto/cmce/BENES.classkAg{w5)EJsXm *)XR1a$jԧD|)"9{4	W'^ H$itl<dxg<S
iji| `\vqNy}Y><uul_Z+uesYr]V_/'V+nEszfnGjJZ_\.DUTkE+e[a0SaLx;`OD7ca
+Я0(!];H .epg!	W	GEٺ>T来"$1>Gŏ~u\`Fy )cƍL\{
4Uc(*>rR.9; &9hHdA4E3>B
dJSCd´}R-إ۲XKF`PPc47)˔{Kl<
	|Ja7^K"`ՃM~	L`kqpnsCu=y;_@*0s_ֹ<($1[7CdM>T,&vujTʸbhۇB+܅.1Sjz>_ 2	Q\xnP|Wx
nz2
[%lGW+m#)&v1BPKC  x  PK  C:U            .   org/bouncycastle/pqc/crypto/cmce/BENES12.classT]oE=Y;n㔌[^H?(vi:%
Qc#Q!"A"Ŏ&6R@yoFO !!ժ-s_EBrg7vCu8Y 2fee9eXdYd,2.{ŕXϘ[(fnnm6戼j&D$yڍu!QB(Tug˩Sf|*ZƷr1^ePݴ+BQvEXۮ6*vcgn,P^xͷebQ9@VZ5n:[Za^ԝT3=%0(8!pJ &0 aSp\A,aB$0N0,0$ yY$B.*<
R
3T6cFRa`B}t0}n:ftܺoSuikiC7\"xJR$Ϸ1	ikߙQ1&O[~[:?P>/:ת2,5.(VRC}S?1RgGPHfLj[=ɘ)1f~~>Gt!m/E4`t=l^,
,?f.hi!FbAK.uQwqSX0JE"i	r>ڌ6zX:[~2?	?.L_<=?RSWow1E B7X9G9Յ8b=iŃ%AA|)ܻ*l*
#ft-ͥ76HoDn4%'|eQmKhs^/u2	IfuҒGjSmӺpʫ6ÔڲrɲzEo,{ޤW
Yn4GZ`{80vC88:Qu*wL@%"=HHPKtO    PK  C:U            .   org/bouncycastle/pqc/crypto/cmce/BENES13.classU[oUr4ޤЖR$lB( Gp)qUabc	"g*o\>JHXT!s_$38$j̬ `AKy/NfJ'gpf#<Kpva$o,OoWD_K(KSۙu!fV(>-K+_Jg7Ғ_m)_Ȯ3\,n+\\n񽜛+m+7nwS37fh'[XJ>oReONVJٍrP7q$q1AԄ)L0a0]bSLġqyQK0q#x}$gP_-J6\v%,qA|40!tJ_?O|o$ZߡJt5^4e*aMp7᩶>Ue%K1l}[gc\>[t[Ӷ,sT`ool	m-O6
B8+dAmsbT)TSa[
* XVg*V
o>K[ڿOCگbVC$D8X"4٨f3Őf-{Dw:?銨Y4~	lN5Qː,qJbQ<,Zi{چ2m:	pL'Z#ikuxۚ8@'DdVZ0vazHd6҃lZ%:v1nڏ^hAGt70	0Rp:`v;W9H	ƻ^;{'4wP0fhT-##Ά&iP
IN9ٚ2';<2"`pVw[S2<Hu"!:E#8LGXݺYz1Ho{Ү03@oʼ%BGμtц[;OV}
D%;"z e70965ɣ٢ˇS;!PK?&  g  PK  C:U            1   org/bouncycastle/pqc/crypto/cmce/CMCEEngine.class{tTǕ}kuKR#-d$Բq|EB cќFșh&̌w$Iql'ǙH[UuyAUu[޺{򭿿 {\@TO"Pk7tZ5SinE7-Dմ,oQ@ii"Eeo9߳A xcg 8 A P!a@@D+P%Z*Ah˖=-͘p|+?`	yO˞-^[˖-R8[G"CæPeOŅW!=}kvmnؽsr?yCNl]ZT@!yE
xu#EF!jٝgni&
H=͔l=T)f[OOۑ#H/ۙEud#C8}=ގNOve2'Uۻ:z"{ug{qAl㏴u*Pٷ3N}GfHړm8֗m}"bs#}`C#-GԵ
id;%=Ll?di:=u;N@AҾ=;}B:3P`!dĦHvF EDO?x+*=m
h{4%*E>v nZeyU/YH]Y4Z'ZB]h^:P#YweVħVu7:uP'jDEJTtۇ~`:1[kc /(pmOڳu6m)T37ĕsGmInܴsG'x~pEb	a.*z__AKmP8}pމtumzh/,7TQs3 `ow7KG:3ԎNLT;cbovL*tA.p9ȉg{XcZ7`h7 c@<i@oa:j܇nFŸ=<l|}}XxsC~񚇧ǚgֆPoC%wS@*J)IQD=K6JjJ{l a/
AԂ߆? %
AІVmHSrB6l
PjcQlxNgC0>Q|ԇcC3,ia*m1"NC
GچbNRN62 eXnJpaHp6<co63a>E%J.Sr	J^)4%W)JQ%Lg(J>kkE×,̂?/[qJs|P|Aɷ(y(!%S%oR#J~L[RsJަ%)ߔJR
Ji_k|R}J^ aH(_`6ve0Zڟֽm,TcbD(9"EɼA+d(U2OɼIw]2rk^F9z3yE#<CAQ\\
~a
욱Wnny1"Q3qHc2	LGj.=uqDS
|]exAV CEH>[9f,+g%EW^xL+.vIř܊#)%m\CFfZ+śyGbK;*.bQKpJMj@Cd𗻩tEI\R4,npJT[uc'$bR ~|bd@Y0qKHE1r/zl&0`\Q)e۰eGw)I~
0e%t5UHqܦ]
V5Yc֥Eq }5E3H>2>
.UXpu/)|j%%!U$}IiQ5e2SPBGgg3	eaS0L8z]Q?[O-w/ap\0<ajzcu18fǜPjڄ>@>?O)`PkZ9ĵHp|\M2j=e45`4 
2to&w
pدAxD8s;guE^)w-[(EdB'kuYt]#W1 e.E&]Iw.RuDB<NP ZO$:#8kˮrWs=-(NO(Sэsb.M968vp6ܣL܀`߂&n\]56MBPKCo??E+ŞPd-R}IS#v:eŘ	1	7\G39j5UA'|Ơ
曘)2O(
( R@BVmAA`
}%B)CMᑋ +)4⎍{}TI '!zD%()j*(Q\a㉤S}w
&'℧I$&rA)v|8d넲r";Zj>z?(<Ǡ5hJR{ln*yN+gs`ҧR'.˸iK+":*Debp0NjJg	7Ǡ$tu簎[}}L)?s]~Dtc:Z~+q#$ӟn{pa%R
2s`-K'	$gUG⽍<89K%,aΰΤ\T&H MB f	3;Hҭq,,ZhRmj8WS6fj'XC,xh;*bYZx>)`;T4:ǅ445f2C?|4Ҕ%,A@#)|"ϫĒu#8MZf
De=g!J
4&901&_Eg꼰/Z
:lgvt1l!;բyoJdD2so-
D7qң(Qy?+O~b||x-[O(ߠ㛕K䝸Tq.P8IQءl!tLrgYGZ	ȵWr8(f-7Jߊa)#YV♎]Yؙ	q͈[>	&դ\ea3V82P[9R-▷Y5j
|eBԁFxjCt/J@` ,,3x	VVYlR%ܷ&(L,PXRV,کT 4E,HQћÇNIe4YhfY$pb.خtic焜|n
a=*0lmi>Q_vi*/6jk'WI71\2׸7)޻]͌B,O0ڢ[A\pu9hpȌXP8[]GQ~|"KEAXf޵ШbgP]l԰M>VwSlu	QHc6e]$vaJۅ@D5p`PvW%q:S^Q8q|EYu{E]XpQ4d]z`![ufV:eKq<`	ْP*misX|I#ZJNB|wp(LGLYP) Bi?FyFA&EyؾNBʫeBHE>ͅc/|`&'&T:'EN  Ӄ,
ژ(q̘c=v
8:Zհ̘&c:6PC5kL2-Ać0\p6EcإB7|d<V9{X(E8eT>N F
YA3r416B6C1744-tb=* "5rA싓ڂ*H$kcE"-bN.FSO{Y'0i~+Tr?mp'lwUMB,<~h羍ҟSf{<{i9 w
|/}fƓLo"q;eXv'(+fXx5DXacNM8]opp`
Gb~IYw5:ppm5͋#?F86*tͧ1҃1=ksEA]NAQt.2\aRcXÊ^gCQjR]SL;hkB!@'z-PJv;jսuyTW7r,-3Y'JVjqvp,$FF+F%{c1x(ӍӍC0󏢔zKO4]+r"ד8	A	ixK4K~"B4a4a7DCL?F@1;E%TDâȩN_!J<H{81KM#Uy9b{x( x??@Qo}$KrƧ3W
8/Yǜ̂ȗQ27Gbx
峊Q<NGUfB]0UӅMt4
S&l]rP6GdkZsӬtNGUfD>~!E<'1_)6WJ
OKUbtY;ZtC1mhcOl30i4 FC Xu*Ob[X1tz}]_?e-\"/AP1"a_2Ru|MeߚJg^FY1Z
6Ob5{%J7lSfGxt,fab2kydy817sʯA3]u|r	G^z2:4ßDzJj#twJbBῴÙC %qf≃7$YR.ғ3CL,Xm#'{P1)cm#)ReG;b|a\\bd?M8zSP&6pNˌ%8h| -2	B?B>x0)S#y'BO1Ao|+66jXWmuTOVMvԎ8Ĵ#I6hi<&{<<vFvj4:ū_ujĺyk9rV^L1RѨ͢--("ĝ1d͢yvR-!V?=:C5nM{/{QF?RP&(|)UsyIf5DKY$b]h#i{J_5wg,%ŘQ.AuXb9cc`+c;-Ad<c<<7='uUp[^oI?OXO8uwa_( bR /UDMQ{!p"Ipy"^<{Y?-̛xoOѶL|1
fPۦm)S$ꡰOAIGdǈ;׆Rdb|Zܶ%?]VZJfP$i"	\ncvqmT-<F8eR&c-e(kx5O?K]m$|18M*˭K.w~0 >\.8g#qڼF)65J~)/1Kb?j e^r,W)gUNGS'K?MC+4Rz'9܂|V
_5Tnsq`؉ "Ӑ48̣׆
qw%uu{"nSpf&!7a&4V(T˅ܗv޽݂Wym^#kާ&whp,&H_ $43K/MKu,D+dR#rq'ﾃE]W;(E	MAx	V>YJvܱ?]g/."rgsouȥ>w	1'yM+qI1xzw鉻h<
~przK`cYY5h5
4pfmAV"UÁx.T0*"4t?(^_%bR#1%ƌH ;BqZ$"ՙ,,kiqc(q
IR8s2f}x&t0J1GcuY#3mQ<-nst{Iw^r#q4ߓxMij1X`)ҋuQqYWee⪌lGơhQUFZD 
9O\L+F"KI&bfxOw] <Mk\{|	U)F	o廑t<2'"Y(5A/MA\]]Y!
Vټ@qeS>#Ƶ|QyĠC	aY;s?,@r12?q>6jvлFB[	IPQ2jeVk(yP9okRW]xN0cxH֖&X{%Ƿh<OƴL}R,Q^iMwP?.K2==zqPLMe>˜nw|D%^42itچmbzY01叹[b4I!Ooӫ%;pn|ހ1dU
>l
Q̼I K3-lle
9j[Fܲ>~$qW^<"kx-#>ac
Q
=@oFZoK!mŤ1$>\Na=;)gs@+XL	=#KF]v_~Fۿq|Ԅ*(K0<?RP2Eߗ[Ak*M^dR%eR>erfH]#hee-ލi8yf
8No>~fM9##iNhghkRf&P%v%߈bkc%}s˽>KWt
"C;}1@ƊksUV=0rnhC/^bZzVi5Kn~hp"UGE`J].(瘸e\2(Ç'=θ<ⵊZz3dIY;zu$֑Di3Iv׎)$d:дW%SȏYȚzUdԈn]DS{[ǡbD=@&ŝ I+H^CG=8Pmc(DT{XN4uQĕl?ǪC>٦`4H"`OIԳ+uOSMy[aqksGM!Ӯtml}6[oB[m}5Fۥ`N PKgOd  kC  PK  C:U            7   org/bouncycastle/pqc/crypto/cmce/CMCEKEMExtractor.classTOP=Z) (௭cV` DeL%cjȥ\Gakk[Md$jMvD4;w.@KS_Jk⩵`"d)uL|3-ӟз
c>_ubpbZ\BWr_Blqw"+{"vD<ӶJ(TxUSd[d'4ksYMIIZAhDB6czY67ȧkLФV
{2*
~oMÎmJG5Fz\(1]*OTGT)V}2.1 㒌-ͬ\4$SMFUK,mu@G*:qME/8I* )@FnH BAU
pSyT'	(
d0.`R!ʄiW1`9#`J]zy
+>3vYeUNaJ-amizڄo;h_F	FЫG^Ӿ }!9oWG;DmAXii0bK?cJ/rJxJywf/ui0\?FIK F`w=LpރW#YBYO0aُ PK(ڟ    PK  C:U            7   org/bouncycastle/pqc/crypto/cmce/CMCEKEMGenerator.classO@ǿ
( oncV*4qs1/1Lѵ_Dg(sy;,2t|3brH8#0UKg[0r,3T;<Ħ3#ڊ\UhzU*GvOqAhul
gZo-ӵdmAe+Y?~
M;hԅoW퀋ǭ!}Ifs3/7Qja-׋}iGWNC#f[9mGVw@༂
(Tparm!
LgWkSi~yjfO)wj:HaO(wSQDUPq0l(<IvlϞM&5(`zK9tK+5bJ+fT㺊Q\bVJ9:R*qC	t+2U
}2/] dq=^@Mf*]#DbfM\wnҙ&n5q0} )B62-`)ǚ0,'{\	=R@j~+&^	=ePKkn˞T    PK  C:U            B   org/bouncycastle/pqc/crypto/cmce/CMCEKeyGenerationParameters.classMK@Gbkګ'5QXDo-^X(n1q,?Jܔ(*;;<yy}zp7LUj:3caDFLK=Wĥ)s)Ǥj~!NLOΒoq/GGao+݇a][sڒ_T΅lpM?F M`h#hC)ax>j˥mnuW@>.+-)? [PKe[bu     PK  C:U            ;   org/bouncycastle/pqc/crypto/cmce/CMCEKeyPairGenerator.classUSa~̴,3R>H,!52r|N*gfi?i@fgowgO [!=zfJ@Gزj491f,첪Zaa哦1`)E-d$,LJ}S?,ĸV>	WUc'(fZ'õnt5^dW4oc{,	JҌ)Cjj:gffS2&Hk!=.ɘ+$i)Fv4*?Hk%P$4S䅢k(ܶ*+_Q^JW֦62"EqS-"n#K]v`ꙬXq3jJ֯
Fbs\r)&b^LV>jȫ"R4+e*fRy7d\SF&2$2q27mx"Oe40܄~pq	RB/$<+	0i	}(.!$	S^KbV
%w%-w۳lm{lK}uQ<C6?9@̾#A6B_a?|籖FoN9̟zrx[JJ3n7ٕrf.4FȬ4.n!c6cxK|pw*`UImnwGXRzPKax  Q  PK  C:U            8   org/bouncycastle/pqc/crypto/cmce/CMCEKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF#}0ɹɩξήzAeg`ag`ed0!	֌d2Ո"Yf'#';/0DSR"@fJUYL`67 ālf ͭ%_Kg+Ff."A Y0m K3  PKa     PK  C:U            5   org/bouncycastle/pqc/crypto/cmce/CMCEParameters.classT]Se=K6&.tCj[PR"
JA|)X
eYBHBRwyf?y}δ\<+ߟ#
oiw5!aXFCYDlv#6mܢRJu]4rZ*syHHX S͟.)3Yo,#^uUTlrc:O.o:GاNulg|"IO(8.lS2NiKͤhf2ݒIRiK5t&˴IzJ;#MGS4_iKR{/eRckJkZCjK"kJ(0Q䓛Z>Wpv앒snyǩX*JUsQngss󍷓||\*!ߌ6t(r;ГԪΊ{XaA0>Y8}~^-,F>r[NK<l*kq7n2BLG:&n0L1L3L`N|*u0padaΐbc8N2|paaaaas/Vd9u
oe.}q?JS\iYg{Vy,8Y*T0!?($Oć k%$_<"yLrJp/`oJ|^:z\i?"Ј`Q0:̸ZcCulp3Kx(>QZ'24F?PMZ~"7:[
4כ{~jХp̼JEl 辭<C_\ S\00+F$#BAf$]F2Ow;W=lW1X/1~>ç(	QNQ8;1vG=uԆSNs7S B-ڰ*
uexpfSM8ک!g "n@Xu?UPK̺    PK  C:U            ?   org/bouncycastle/pqc/crypto/cmce/CMCEPrivateKeyParameters.class}OPƟuJwu bf),B0b0?Rn: ~MtCPsۮ[4眧{~J<!69M')\mT-X,KkfɁf0WZH\ѨfZ\f2+U:c:	ԡhډF)ͺ3l"QU#Z:EZ19!
/5Kaսڝ<j;{s
	84L+VuۨpHVQ=4Ukul[͚mzE7Nvh޻L/Sc?^ކ]*RF,C7uj݃0*`L	hJ|a_Gw(6?&XV^zK(K{xjj/R./c!ɈAD@Ć021'*c		7(l'!	3HD	fJW=K2KJ4S5B(&bk1S'xH
K_|~<Lva"H/Oo]p!7S0*XfӞv4&H39*d#;r#Y
L&ZXmv̅dIu?h'hNF2"I}h܃dEb,"FJ(BWB?
?]H5fD!
PKp  &  PK  C:U            >   org/bouncycastle/pqc/crypto/cmce/CMCEPublicKeyParameters.classJ@4mqF! *"Е
]uaWt(4IdR>%6n*s^8Eo3~G\_1fUIx/;r&72e85_ƞDq`}gwu"g,cMΗ-?huENJm-\@***4:Ùq|c85Mz+(r`%8kXEMGC'Uױ
ߦLq@/~>#I)	CU#S@|B
@.Q2_h+{rM<
PK3&)    PK  C:U            )   org/bouncycastle/pqc/crypto/cmce/GF.class-NPϥTȏX@7wRLƭ)@RW75ܘHL\ >:9g|p:j1𖙈նԖkt32ykܺb`&58A`$y+\dn't9aؕ!ñE_zr-E8ql.ֳr*]jѰ[@[hQQr(a/*<tTCJt-JēD+Ya3Pw<P3>o46@;ޑQ	_'Z!-6:/^~4_R,bSd944vPK4r()    PK  C:U            +   org/bouncycastle/pqc/crypto/cmce/GF12.classROA}ӝiV-vJOM =&=e)P)m)cV1Ƴ7Kr{ơw 0h裯Shw)|4DAe Vb4כOdqaiVbkO:AH2z	mL";3κm{amԼv腝v[a[\`qw9iH001%$S4,iby&UByZ1d* \
Ji*ZP)_}:_pS;O>sPmn<yQh^
KZ,*6BSaΓZWj#ڍar>rH
L0$7G0F:K-],\/WuK+W
+Q^r|)yfDTc14ŔkNg\/s}4̩)Wtk͏Q9|! }WʣH
Ba'$sRf4/PK"]  6  PK  C:U            +   org/bouncycastle/pqc/crypto/cmce/GF13.classT;lP/~sC
ML$*h(B? JU?u?VD\*3H!fFؘ>T]smZ~ y/^G@8L3Ϝz	kg	ё[#Es9	g$w"h
,Qwprv/{3c]KS3?g4Cѩ@'Q`!7 i*PD-L!AeP`E_
`n)@'^GU 
?Xd-  u=}:tg&:1n(,X͂87A\E!n
\EOM
{3EN_q886=D6$|<ۊD9U#z7^)7Qirj1gsc8f,rgShp(0(C<[4&cvtMl6>_J^mr}1|"+hB)H]`ꮿ"(M-}tF:Tu\5[)<҃}*BOzzqGv"͞~Goi&g;&1NA8z87WÉِTN*{V:3oAf[pXJ圁<\/Va@K5~c~&Z{ZW3ׁ6Zw)g˟fuxYRxE	PJ=BSbmK|L@j8[׈g*q5*p@Vm@)
\|%gk[6oz=ɼGi6Iͣz6')p>k^C),PKƔc    PK  C:U            ,   org/bouncycastle/pqc/crypto/cmce/Utils.classmQn@='}P dcvQ	"$lXPqCV4Hb[XWe
Ă@wb[#ͽ9s<~:jY	S
0dgb٨5Z#	 I E|59:#qϠ^xٵ:Acz-Z#1̝]ld]yðzFN2A?
eq='>M)"1(㒊Y*4*
PT1Cr
yXf]aP-2;
&բ/E@QpԠ2X^ 0,KrU/	eMr^r8>-s7ɒ,qJ/BDMoYɾSԵ))j).T&ZIBRoù}#ɵis_b"44ן4^(>|>i!_[EPx
Y(p^Pty4>֥~cPK2"  Y  PK
    D:U            %   org/bouncycastle/pqc/crypto/crystals/PK
    D:U            /   org/bouncycastle/pqc/crypto/crystals/dilithium/PK  C:U            D   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumEngine.classX|S?_&Mr6
-PhH.m$MbJN{|N*u:fn:7=M9;r~}s<`9m i
[a+b`])N%"!jTKvvw;4(s9<˪pdv+z*UOE~h&_K:}eM8NEєdP֑bTH=pKWIʩÑpj8iRv]^ktqS`d$4Ele+m$SHCVEFq@pRw=;Ϻc驌Myƚ<N)sy]yi-ccֽû#FqRppXByO{$܇$}qێa7Q1OĢC>ݵO7A	UY ROޕ'
Y
@"
I[p8H!I^}0
SX4Y
-4a^0$"cI4q0Ax GCRTJR&jo Ryi^+
3=g)Lv-2,5ZOUb;ʮ`9%Fsb>pS8 sk
ɛ9QsܣS
IMͫևdʠk^ѢxTjGlK,p|t<KoϨo*
DT]pi@coS,1
RÛuϥRWSmOGS02g4ÑԇF4OI)N`6#aFbh97L?.jKG@2r6x$6ڠg˂ڌF1ѡpseMw"&3t
Z3ZY5aS?fG.&)ҩpqjzzVzP4LnMr?x3pR*H	^k)FGV5>Je,BJ4o
ĒPKŒB L4Eapxo[ڋ9;B#Jb
SJʓAgrRњLI%Aw.V|0NJ#mlvтCT5!x\tR&|tA,Ot8Xn9xo` !$r00a.`05'W4tO5֩O3mqrEVjoT-ښqSmhw鞰[_3m/ZS<">kCy,_])nG/^s/^;:oܙsvuw1>K1V=:Rwq)bpv~|Kgg~ٯCf6BAx\;3_ggy
<T!G#O`!"s			,#8@p|QJwgy+]U`a- A Mm<\ ր{:Å 
y*xx;xyfnw]nZs}UE	.'xpuK4<D>! Y> GI<C~0{6
"x_#xQ<F
o<NM|?$mpoov$<i/7ÿpo@'g'?%xv`7A		~K"/	~Ek	B ;?I+'^#Wcj1xEL?;#x5;I18Li#/\s/[X%:Q)	$-,uiK #'"a܆Jz<2R"X?%'P> _\A
Q^n?h?Qk
p_XUZ*]*]y*]9*tJUiJkT:[T]l0C܋;܉2R}YG5(jh澢ffV[yKQsf)j5EEV|qQsf,j4sWQM3w55soQS3o*j.̛-ycQY3,j̗狘+l/j\3LE?ʪpe3l"3IsTM_]<H2f/,ΰrГaSa6e/f.i0
g/fk9NvDN,{1^V*^(^_5fOq5Սp4pf:y8dlQ697t'ؖaUD0JQgO	CՀ#چQ,e҆+qn6FC,
13edQGAsH"V1 2I9&(y^q'5m[0wN@	x6sOՋlAL \Hn-6RLg[[	#V$nM]t˲u&~.&\'7fTcXjdvP(ZY#ZіeE(lZmYM'+eJg/Gϲ21V꠽Dquc$:4A9A<.ciK[ \?`4#)H,ӂ",O]|S"oȋX7j1v9e2~FιtN9Ε\y'v▵үRtNуD+QCiL5Zp~( ts84fakAb/RTe5@l[u҅yEt#ZUnӳX۵ULtukqdY']@s*rbzrrrr"IԚtk{Q`Ω%؎,kgeY(]+˺(
T
e٦2>Fh<:K[ F[[)VI*vʣh/
0uk+. qteiX:#z/xTa/zl@8n^Jvk?=F<Kv.3M[=\XWi5뙿A4Jvg_+BR+1X䢳ʍήI^'^w:9 Pl-Srßeb%wЦVXw$IUP*97&+mV)ʆ"ryAuhvR(].8R{$O_{huc*5WQz!m^2ю GZ|F~gRv,傒tD SI$O+jW0e\
jƕ,H9uu)l.D;HPKS]
  %  PK  C:U            U   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyGenerationParameters.classOK0ƟOfWGOz["cfmj
V
P=/y?9$o/ 0$e.`.9,VhC@+UTP*z*cͬTwQ.cYjh"SieB+hLuZ:&MoFRK[Z'*D3Q/2<Y.Vza@9Tx	6)ZNXw& a>3'@ô6Ѝ7m| PKM 	  G  PK  C:U            N   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyPairGenerator.classUOP
[CPsb Cф,!)lh;WI,n+2ɽ|;9=? LaY@{"E@<9f3^@+0k=r޲Wʺ\2Ӈt-g%[WmS/(3`ymm{2ɮ9n^vʶY1
/XVJ-z"\b]
\]-ǽ$A0Q7^xQ𴰆rc(ZTzdR5YLⲃFgѭD+oyMtvHp]B	$ܐ/ᦀՠ3=,̯hƪrFrC-D3H^g WnJtjD~(XV.u\6>7y[W|MnnLD7s+q^Qp
bm
:q_A\CxĭSRT'"'U &d⹌de>3#x!cS20Ical06$ޚ68&K4UC  y,  S>c̤'c-Ӻ:"OzsN1v]*O1t5JQG,N191b[PY_]JWpXkPK,܎  v  PK  C:U            K   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyParameters.classQNA}#p'pXX]LJCbDcݹlp;]+M$&~ EPP7)f|{p!;SzD$rXin&>Me)R%)b%kU~	W|ţxKR+:A2߰1F7'pF		G<EЀ_2++3kryb/>
4DFb/h?PKoY   	  PK  C:U            H   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumParameters.classSn@m.vi(m:ŐV@jHu8vW "Qg.)Plyhϱ7 UPd1'Cq!_1
NƐlDkҳǐn;]'xzeىX5m7bat+tvҭMka<ձM6D٣j`];p^\kh~еayà̮odlWǍvGGq;O6[%\pAݚ
<[ߎiſ>g5C˷Cȼ)zK\DZ"(X2T9)Hr2npAPs(qa40X4;tT6
$;jw8qN'Ls cO:VHŉsu4BU_G|Bx(G@KK1ED,1#NP2Rd^ayWe?&L".=bл/T<zJȡPzPK  g  PK  C:U            R   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPrivateKeyParameters.classRkOP~.6D8/xn/F?,I>ծbי_iJL=tDly޾OKs~1zàK)C;a
׉@</	ܰE)2
FGaƢ_V+5NE=NQ]g<k83}Ǉܞ(ѲDΑ{ѐy ]OQQE:ўa@lƑyT,01?tǽN34}
s(jLHDL4(iPP2b&-wܫPFP'uMMUj-T搼bK	/KWPDsRE[@hI<ʂya6y`Knp EE)6Har]Iiy*N3hZc#t)ǅLG3帘#OКK3S)YU~-@kY6}Ӷlll:ŃbPK    PK  C:U            Q   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPublicKeyParameters.classR[KA=zo+3YK[tDzM][ǇWEC?}^I;9g.|o oO¹D	#8X
)
q˱
	\Mӯ}UT(ܩuSQm:$pPr܆vtmq#,Ck?p^[82unuiiv[]^Ew!p1O{g/0-uuW>! "`*irr+N>_cɫv|MEa32DP"1bA8X#%eX:r"7B	iH9[T|DXar02ֿ1#"賲CVsVA(
+2BDn~˒*H9=h PKIj  b  PK  C:U            D   org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumSigner.classT[OAk" APؖr/ B(B)d[ƲPں%O$P춂D3s73gO JWHp#"HFsG5Tך-գft*8!)23iYRt:iɮ%{ɰ]H斍ffW귍=CO餾ߖ	;+3t"0l'%:=r~f:[%D)3*mH[yDcl}LէJVprNWdlܣirEjdi$J}=*W>k+Cmd3P?ؔ$pi1+ɬp8!=io?ZMA:
\RШಂ+nS2L'ؐ^,ע`|e'-x	2if^:NV~wPT`p:B*[5UTChO-TA zTG13<C	
!# 1@0pD$@JNlsNȮDC|҃][vA\IVkp-*Ћk#op:
FGKuxwhb_þv聫E.)I{DbDySMẓM{4Sd:j%q'ExY^Y;zYwPKv~    PK  C:U            8   org/bouncycastle/pqc/crypto/crystals/dilithium/Ntt.classw|OD;Ij$Q%jET$iD#!CE-UfݡtMU*bUZ[QEsߟ̓s9Tdhs1Wۜ{$2YP;Bv NL6wN>MA[Hdiu~4 'sisW19=%&gisofmƜ$_'g6O%|ɢHrm6tG.:䁛6E&<64.CF SF<Zk$y6c, {xi<}'ά^Ȫk<3VgoҴy;~μ(,%94\4|Пn$j?}Cey  ,-*qB\ȕWszlm^iM {ie.MIOY8l%ysQ]m96oIߊ[<>adGZkqɹ,"cȴdPm<.|h=Fvp:rҏr'ilӕhV)]Z
 CIQVڷ&V+
$p3F=6^߳'"[+i🣕ZD_ʣ2U8/wV'ЪaZጿVnyħtNǶx[ɫSCZU,}ۑ|}/뼏\}Z* &VZDj&&33ȉYZUUFy=e.Nʹ

祂kU="zU>Ks%^f6ׯV{;$s-VuuM!hŻwL&iȌ>ZĝӪ#N=ZƼKFu sj\[&\즃9Ȧw5
I28pkdL	8lkNNEX# kyfj.yT4AHjRX_H'_d(A^o(]7,u;w0nFȄԔh,(#&q=>-9P)i#feLe(!#CSy,5hHR#C2r'%f'$7)+>PM3Cg%$gf&3,+]58%{hhW9?<q^vVJjh댌LWF+gzVU]vݰ
pxVezC7v7*>t7`TIOMȊOxKRT5~/lr%nYS-/5Z%cpʪz^:ïzף櫗tt+F<6FXUc-?i	0?ea/@:.@WXa+5ܨ撐52f#**(Gy1d*Ɠ>t
7cU8SL&-.i'aDL2UGl/#ӵt̶#a:zO?&~?\(<͹oH92StY}EC._>ҌQSy*7Ψ1'(gmt_ޒ}s&\(g/yEM/ym=VkW+kE#W
ٮX;s:+ӆjT
;;^eъz-<
G=qza7PNVB4(+CO*4 _@3UpV$Z
hhuBk"im:IBQe>.ȥ
"6B;iѦ0ሤLUA[`!m4(4B(}ehks@۠6mn4gi;lϣm~6ю0h'$]Pv'u!v^=큃'QBCi,о^[2Kci/;?	tx&a}i2n(KSNa`
}Ui*~C!0qt8*xf9X:+rtE]:|=5W,f8-y%owI%&yHށ]/$_K&W>%dI&cd
JbdJ>$7%3%4lԔAC*d2%*Y Hbd&Kd	J72HK
ϒ_1K>2ɧ(g#YO%k&K%_P%*IBk|HCoz,l@d#zH6a[;lF_(ق0xQHad;Jvd'K~DC.</	m$D))CJc vKu!|+'%I(ޖg8,s$'Zr$#9:3 
%g1QR$0XrK.`"^\h+
h/k-B$&FJD-#d.%>ސ<@/Cܒ<6J~!{%mu}iTz/PKɌ	  d  PK  C:U            <   org/bouncycastle/pqc/crypto/crystals/dilithium/Packing.classVoSe;YWбAv1-pp
M]uۙ$rKtxCBohL4јxib0`}sڮLuD}>s(6^PC'yddUVH{Þ~<Z}-,)d)U(x9g2ikO|hKVzA`{U18˦%¡5]j\:U-Jh2u%=v4:L2sz)0뻜|7Q1dY+-X9|&6UX̧J䂕KǊb),^dn!6rn|&6IIgRG5Ix$rb'TR
X:5l&cmtHE[lr^GXm뮷u6-[
yV4ܴJIx%vH$%vJtHtJ-p&+
75T~Sx
lvjN}BNh<4C>[>kn==ᅟa+6'L'<hi(^t1lAh^{>H/0~hb;byЍ=8$C? )g^9200pUQyǸGb~d
ИEgT. (IP]ю@ƅ[AνyTZ#eN3*}$L,cWlo+N81K;O*?F? 9B/ZQL=DFK~MEQrM|N5\)#eK<@S8rF~?GH%<j@IK1%nZF0F鰣4[FA'UNpơYrZ3;8^ƬC@jmaCYЭC/_
ZJ\ҭ#bJ.Ku4YzI^IGTȿy¶W)dglnU35즴'M1D)'2^g3JP|AB2US?1Uʾ9V5`d_dI+og"N\BQUtFkX(52%]$L%beS'?poڨ
h`'ZKK&H"
=R
F+hkײW[i(jl~Iþ`hnb?ީ	go?`v)_7Uwk2#n2uǏ5SJn@Sn:s5oj~ANUsV99E]zƸn4juQיYY5lXiu +-Ѡj`u "CPKFwl  F  PK  C:U            9   org/bouncycastle/pqc/crypto/crystals/dilithium/Poly.class9kxugsgf#{${
BFXd[6(`쀈,?
ɮwbiWhW`	)inӦMJM`Y]H_iB	ii4	4i#=>ffWG}>;ysϽ~/< ¹heA U8"tB!T,ƂwY i",XAhak75n_%~駻Ul?4`CLd~@RV.}ؾK/.+@=E 2_ȗ4lM9Rp\\l,m)\{ny[g5PuΖbaW@ܟlAe|kfp09p
>KێSѤq\n]q`gr9
[o78<٢sgIYb!/狅͹(sb	U"95pV7R):ZP~[LurTV8ooAp|ĥ®G -KeܪѲcj۪US٘Ѡ)$߉+"&ӻjݍ3͖/;_\X\[,=2®W#r~]'j0gnl(Z5s;k:ޖ6;<͍dquC22];#h6S*ѡr#ʥ
59A4{JJ@Ëk!ҥhyJ"M]T+z#GKW1K,Z("lBWqPnئmzc8䧴֦V^7T^
ޒ o⡕|A G'K[z-xN:.w{ܝ8٥\t9ܾ.n'/;crU/.uuV#^nFv3%?~V(v-)ą#bqk12˔]"8ufcK@ՙnB	p	&5ׄ>֙p	M`F
n깴=+.Ԅި<gakOmCrtt*xbO㈂ZkؾT$e%[.^DT/JFTA߻.AX&ĢEC>xqӽ_9rQAwQcr6,V ptذ~Ά!ynMn&-VX 696 j
\2p
;Ɇep
C

#zha7\eC}6?e{jz$a)|؆Ea//ېذ~~Նka8#qI1G
F`|:,/r8A`2?G	x>A?A8Mw#8o8NI8E	!?"%_Y&<C)O0A$nn)PƳcmfhcfǀ-hx")8o#E.FJ4Zho"vIx)Ѡ	x>x?9gB"9{^L4 9/>_K95p?4Jiu6$&Jin?.0@j4mxR1${(>5搔h#43?%`uE_sOQO[+h^/&c#h2CQc3"Ų̈̀1	ң:pW0R,qɌH΍Cڱ(-eiTO[Q='SѧL8dOhP#'6UpsNm!qȇ8܍~㰱-j4MQ3:֞$G\|.ьE	<ʎ{D&)%m|J_xabx<"V^j}} J!}B`F$|9l :&XH(OI0qD.:VނvĮ@/205=HXd~ : _X4kD[A7e!rA1R(Õ3j9a~jVs)#dYQ-F1]9
lXɆlX2HeMǡ͠x.nj

x*UkoC6ܻqSNN:/ލ;Yņ'E'_hxډA1n
4JMXMQ߽Ju~H&E&t>&+8TNCA#/ѤOP<UqkgmEeЍ11D,:%iuzmڬz5yDsMLɈF	#g
$|=MwzG,P𯽉X[M%cmzZo$OaK	jn:mH8|4iCiJ#>Cc7MkL"z/$X':`vSI Q	$$̴Oe82M>9dSXT£HKC\i"oИpƫ
^\wƄOBШd 	JHX$Ca.7i$l+{u3=ogkU|m͎50}IIV±5&J&]ûd摍 flzd+H<Se8Uve(3P};qq2?8[O!ԉmvcu:/Dhi*[/gz|e]`ykLi\:@Y{tdU%Ա&ۣVgLF
ʍ17Q5x.u` r#e޶pL";|d 9fكR9zP0 
0ͥWve6hc8VF-|%Y"3EfUdC*fRdxVj3g44H;ErRvb;Cfx^rX[IγL}¯@@?s5}C&S9*>۫WdNzYnQM(0Eab((b)(xz(/3'؎;r>񼓘HSm~NRB3Ca<cRʛT耔(bc2Vp]8ǜ
:f]ĥ1PQj=0IwLvҢѩ"iNaRn@Ugjvh(UXYBj8ʵIGdT:x]<MQj%qH 9ǣ[duGWQ=&WsLu LZqj=+`\/s
.fH^FSLnr%Cx.z/XU*T5{<SN'\uw!|4zQF݇O[UWP ]Nĕdn-ԺeB/h;*ٰ:ac߁K=@afq3,BP/fB\[~A 7S6GrXÂ#r=t>`5A@k-

os|<-atf`#o)gRK`S0S;B0˼kڸĻ6kۓot{1_vnCt;jL޳(ik4٨EF3l6_M4O15}K'?D
:rp
E	&3վ?:߹wPv4xکvv
D %NC[48	\a5Yɐ2d_|Kx88&3Ɠ搃	4z`ct/
DSۼ0vPJo2A]<~ucW%21e}y29@=Ɓ?&<0%ms2Ծ.ٹM͍5Y\9?uśҐ86tk
4m
ޅ;!킕Ñ^;ϛ	w+|TZZ+k=4~F@"`{뗣?[]u6Κgz~ii]o36jܧ=-cNOC6}Zkc
p_13wkS8uc
oHBT4D"t&
1$N&B=Rf$yɞUAmggÁ3ᠿ<>qj*j_.rVyWu݄rVͅEh(PIZpt#^t7%t#Fw#oN~/|P}
l=	ғl5EgaA>bμEcI6FHdCHrjx֟h!
PK  +  PK  C:U            =   org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecK.classV[WWL#**C@S/ERIE!`$	ն^{7{⃮UBW彿O}}h{rY,kYX99_' q
ōn̍R7K%!K}<jI(CDE͆i-GRFBOVwk	-zHI-鶢zhx\7#DB[qR)V"&aI2#mXՈbq+KDaXGus0IenѺmNKs]VT#iZ'm+2#)	aVeNjZ0Sa=ޓ6Q0A	E)#|*'miz6z[)3<֒vTGpb<n[<$m-f̆&ҵ.	2Emch8eJZܢ@ƌIbz˳RޒY_)Հ%Q#St1ԁE	=
S
J[2N}~;qܶ5]5O4_l\IMwa"sGAG(XVAu
Kyo&n98qsvבSw;VDҶ]{
la#kgl[ʇv~Cb嚹J3W
-Hqx/il7re+ʿ1VRUuIC*UT3<0`XðaCxT"ۡhF'RQOjt JFm CqDţ8ҏ)O3<pVXA[L8){13"caa`80e1#I!00,srdϾ{$+ǦJ?GuiLpڝj'*gB4~M8
ᢱ#0u8KI8x>D$κxr	4]G{o>(.ߺq$|CX[X=p*֋^AI~^wV[顊-Wn r܎B}5A$4vPȅ4dWKU&@U_ye,8 q~E>PVќUmt5Wf**w'$"kMkpn^[Ef"p|N]pyi\#HC֑M#rɟ3JbM+'G99[C?;5:k_fx))HN5Ll;gڱʡisiBþ0ot
fJ>Tsf^
+s7)aa#:WQʙDh 3'n
['H[DV>9|_>P6-ߛ$ΉJg:z2]R^)EʇD*G.2sKk+Eb%J S2o!Z\e.=IUPK  )  PK  C:U            =   org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecL.classU]Sg~6Y R!A-DMEDDTP+f	nlAnU:;SL?hgڋ8u(fys}7? zEBB$v&  t	e$@gx沀x&Ԑ2/a]
 *kfu)/d䢶P-uAfk-"@Rf~Y풦R,jFV@:L @VruM8u{V/8Z3rQTT[aSY!y`L<͵13KMiyn,	s4l-sʢ+F.5jE[7
"zOQq	h[*,K%KMeC]VR5ZEdS|)+k8DE-ES7kzIcurfAHRd-$C˶V\e*Xzp?Cy_ƲЩʛ<x[NQ
EMWB\>			%pPi/oq9X
7H5b.C3Ir͵sp9kzS|Hias-mZ/'dH2a{ahz,2G#hqCNs؈vogd<e<Fe0րS8peac:4^
cAeȅq0\
c1L2\fbx
o2\eP3aJ0wGv>aOq[Qǔ2E+[OE`K::ǳ9v+SQ ٳ5*dg[^[{z"~*
Q|62mN&J@qoN-A%pR fq-T
goFgH#l?=k^DIę;zn9KcD1v^IFCK+xw%HuVSB.B'
xDLhsu$b|l[E>_d!F q/yl^Y=v	"&8Q%
qt˼:PuKZ{ʴnQK+1P;hxo8핸g}<:ҽ[}<.eXKAipY뵴oi[at~N_Ύ|H4}B4Bj@,o:{w7}0L3}</0]5鮖"umEp;^+Xu֋ٯQmAAoSɛIkkHg\	!r^}{=:j9DʽPK;*>8  ;  PK  C:U            B   org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecMatrix.classTwULLi))Z,	4SZ@[
Vk9Lg8d힅{qaϱs?½4
Y|{w{W 簪BQ8b@!I)" gGM\ɮ̲=@y*;^o̂ּňCZ]a8%JeUwhamUk>twjNJ|OkA;.ܲXf-<Q474*[#/ZM۪׬~cvmlUmf[U}\*绨绮r炆zumKa9Xwk4`;U`UP[c
2
+8ंSS+.8-o
;\v-<i\&]H'oe_TAN5=;,[?}u~ComC1Ї^Yc:F,'8wtI&.bS3F`,p!4cP\`>We\wZzZPr>2<<I0d{ X.
y62|nŜ-ؖp-G00/_JsCdSa.tW1|I8)CV0`L XiB"Kt񈑎Ĵ鉱ޕ]JH"Eh10d[ؙ{8֔8AFj@H>&M#O+N<fI!(ycy}	R'-",;->S#;z}u^V`<(ȉqsw#4D$%ֶ/Z<~ PK7-s    PK  C:U            ;   org/bouncycastle/pqc/crypto/crystals/dilithium/Reduce.class=NAaD/YL
5,;&xiLx+Ixs9? c9`XA֪"$ݐgL\jϿ{K;}
Tj ɭc&NTإ5؄y#:gV(=9l2ccTIrya`1a/`Q%M-l@+H-1
lUXfZD^
8k9:w
κiӆ[r=(-?g kMSԝSPK/    PK  C:U            =   org/bouncycastle/pqc/crypto/crystals/dilithium/Rounding.classRMOA~l
t	1T$x]ۅv[x/`h¥Qw?軥ZƝ3;3_Np	sO
IPW	..]!UHߧ7Uv
n{մL'״JVk3׍]o-A
f:U]?1H#-WӬJme8޶ncLxyYmmWZN5s^ñ]h9ZU1-2t։V!ذͅn-!1M
kpv=U:s./0!H ǹ T$H,bTox;mfе'~$"̝;7}sDN	kNH(3RxW/f^֑g"$=]LUe$wUidٸ̺R#-In&tGJ7e>+PW|B.A<9M^->p4#'WcN-v-f+WP$#}?_jcsR>PwxE	\6"O
(SE'^ #]Tݢg)3L"w%>)s:{1D"
ZqoPKâ    PK  C:U            K   org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$AesSymmetric.classR@ƿ)!hDT%vc*2Mɦ-xg: >YBtPss !Jo0t,+UJ,TTқ4)I V݀2Em.ffI8nmWkήrEri5?xplZV0kS0ىx;Db9ge;5۷+|o⁤k6*6`Ϣ.^;(r"qĻYjT(:k:BJzͼ
|Bi|nW+as__P?XDSqCMqT`z/M[fH:F\fvFCg<z!
눁I%MDG1ai1ރ1<0F&'@JCSaB#.-ͤ$2ԯUT"ZU˶\8F C<)^:"R&f&f1u&fxӟ!.y$&NbKJH"kavE=<)I\8\)F<vp~ele#7,51kb!L+GAd&;CRdH4"^C0<'5]F7PKըr    PK  C:U            M   org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$ShakeSymmetric.classSOP.֭dSSP: jL601>u>'}DD
-Ny4=wΗsnozR+r-'FzM1Zkc\?B`/H2AxPDBx{]7?y4NQwanKPi˗~Ԯ7z61<ҕơ{pJ\pjfJȐmNP8oH4FĪLmabXyzȰi] z&7Sa̄	R&h& m2J9
bA
7TX4PuvM`:wZF?U,HWnj0CFO&4bj5y|~<p!*ؔ:mp҄J{VRg'v-U;cզXb\^92INVl/6UD3B"'Fh&F>n
*c*(jPK b    PK  C:U            >   org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric.classQN1=5Q|d3aaLWeh``0-&W.?2ޢ!Lʤ=ܛGxlԟ?*A׶ge(37
͇XXC=kaqaNgi5IilV#{
Bn;7T*=oڎoM%$Cvգ`k9"V޼Nݐ݀a i e 4R(aGC%"v2:@Py"8\J}o.	#(xR}q|#`o8hTkԖb@F/g&CE	HboPK]pkQ  u  PK
    D:U            +   org/bouncycastle/pqc/crypto/crystals/kyber/PK  C:U            4   org/bouncycastle/pqc/crypto/crystals/kyber/CBD.classRMkA~&ݦ!MVHp-ɡZj"HDQǥl64m؍ɶ4xЂ? C/*<x'y0&
E;ü~>߾X]'ٍRe1N["m-ٳ;^٫B9fñ;;׶=hNxV۶-wz5S.=$vFuevm_X=go
dʮYq`	#@0sT[LRLO.ȹr=$B!D@!㪊Hq1"$Xv6gZ;OYkٸ2Do0 ک}%li1яvbBAm|XWz)3AQK%
>-"{eMuS]FP%'
N
}4ԧOs_ؘRrrHCiNo>ԩB|	
gjPN=4a_X@0
SzߥP܇{B||WosI`M4?*Mæo4PKϕ<    PK  C:U            <   org/bouncycastle/pqc/crypto/crystals/kyber/KyberEngine.classWwZFc#X֖쪡)&MmU,uXFBQ-M-MW6%	@4i [_??μƲs 8]޻ވ >|.aO(]9#T,󹂡%CBhP.j./h	s<CǎM=n&X,MGZ,6*;4i[4NjVK5>PVy#7Q6n˚L痴Q!]pi!NLk(hF-GC`nut{Pp{%L=''pStxrryMnVJh7ù[sLV,jIAuԨ9-!|}NߦVZ~$CKjAKZ ,vYU5$M
j9˗%ߕ~q4ԩsСGU=Q?%i
*)i.ΔkЦ,%vXMSn;=zT5hLI0ӼiROm
mճ[Dc~
tc6M-gM{ig{ӸZ⍙ՈƜ0Td.8/jf	j%t<e+KQ#!aIPDcR3T)ԙ79n=I-A]qZKOMҙ$?}8=ZVUB(GhV,'[ֲ
Ɣݣz
B'	hdhT"jXopt*jJ=cz.:~^׊9&izO5,f)Lt~
""UkFSJk>nYg}[BT=m%32feqHa1'11/>h3$쟹j}w3vJ4kph=xqhخC]oes~7vȺbM\of}+Dm]A>v3ǰ~A'ᔂO(*Gc^GS>|[aBQ Юت`/
>ǖ4kgsl~$Y/3|O1|`&÷2|~,~?,x#8)~d4O1ʏ,~c,9<a	d.Io^ۤU0fJd+1>9h|)↚XUGՅ{އ_{. q=tfTda';؁
vrpɭCz'7)wGȠBOWN!rOIhLW:HJ$=WqctI<WUp@"!y6_MmM6jJ_釛+6%~)}ѦiJ_kJ_鉦6=ٔjӣMlEKQ 6ur1{+x)܁\	uHcK\
aOSdm`OXldﻅ[X_G}UwJTQ]ogia>@D+Z%Wdy
}ٺ^,U<[)?VpcdYfި`m<@~KƲD<00?8'v5褣#"^?M|X'7qu
ظB}:D\{]UnUƛ%٠G(zBɛx3>z,txޑtWEvqz잣|$	QnsmZOiAk[B4#UhoF4O9Tqg֊_v2*eWa;G&rJ#a>a^x-2\vL^%GZΛ93Fޛ+p(ՠۚ4dACnyĞ|fSзZkZަL$CkghK~ڇ] e-;ԍ _Rݢ[ݒof
ϑ;|PKX\%  z  PK  C:U            <   org/bouncycastle/pqc/crypto/crystals/kyber/KyberIndCpa.classVTWػ7$)\UV&kl[HjIFH.E!h$&XKUT|۪XKCv*VqC33g33gΞh%](м-wI$3hObTaT*4o;=AC(w2Iv>;c7Qȥ&Nrg^:Lit3d"_Hm]ɶdn2[p@D:߶69-vSPbh۱ّch I'c#esv>,>dv۹f$
n̈-Ѭ!ASu呝#Ό2!hsXdN1͏vFDPۓ/8R&>]X.Tޮ>֍:we'3ԝMVKye%ZPX9ǯCU4>N%B,p*AIcc6;am2ȏ>1gqWoܑ؝hKs6`?U8=>wj>/"5z)z"|_xx!n[{eɝݩ쨝lOpl!@q}N*SxKvm2nk#Θcu+\ͼW\O`!Hٙz}:':ԅE\9{h<yս9%r2X6pyDy3SXV.8=o\Op /cg+qc{T&nRiJwtJTZRJ*%ѪZZȹj1v6x\V6,]YFXmuf==$uf[_XuՍYѬ}07\wmN\SRipu_칎#^:Ȏg-/wj/cwTv[ `-^:@4h
Fz ZQ,3f@m o Ry^@`='Š%7 TnOA)dEASK&z
4uAC!۠{hؠw҈AwӨA (eP0Ȥm1P&Dd 9@P v& !z=ӻ:Vxa | Y7u _|pۀ:Ӈ  |I  <xp%uN|q' <8"ી|'|Aw3Ox}io"919s8D:աzxTr-^A]'ZA6d$!Ռ07FA"EzT-E:
zHπ)1t"$]'{qGBakN<)߸7k\rF%:׸Y-zEՒh\2EEKn\b8ٳ#YV}KW"VgZLD,JSiYל!z1?Zټla^D%kuMZ@RJ B17a6M)6TJܐiqxiR-z$s}4)`t~F3!?Apç_(az?3+bi|v,>,$lRR䠛Ef]
 ؊;rլ̬fY'T7/Ŗ`+*2ڼl[ZEdql՗Wn8S5J'&@X#?E?hfr9{ܜ	_2q=^2m]=sF^D8:ÿX=^:k!Ɲ@aq8g\F(zBՒKAhXӏx؅e[͸}-翵b~4Pm/hb%c(뫼[~DͿ5*OV5*p}p%M_Xt`f<`Jt05y X6%= h_"n29Mq1T;D)3dc_DS15T0ԆLe`}
oS^eRbaS:6!@L=<>,wzJ9%}_slAJnxD4گ*E\FNruUzӜu`%bWkf6%c/r5>SÅh(f)˷~EM?x`O
cGxS}RS2S'ImQcd)E~ˑbӏT=OOJ(*)*%ܑ%Z8>q)oQU3Z_H"b)|~"/ŒLC/`|𛎠PK{D
	    PK  C:U            B   org/bouncycastle/pqc/crypto/crystals/kyber/KyberKEMExtractor.classT]OA=b|v[\$[jBJ#ˤ,mw@&R("5fw=3O kXgH83C<((%It=WnQ"	1Yܑp!d9:/#|z)"dRsx'<iq.#l\H(o)0)*"]I3LSnװ׏Chor@i*ʪ49Cv\K3[OWXOPVh7쪊+X[{)a\Ô50fw`x70:S$T4*%*a&x:
SKk	}Lb@@)cH
M<4``)xcx`-cy<S!O
,QmtR
i,S|M[xnϰbSJ\Y/׬Bk]:C+&VVE*<.VxQ+|M:=t
ۅ%F/PKӁ]C    PK  C:U            B   org/bouncycastle/pqc/crypto/crystals/kyber/KyberKEMGenerator.classSkP=MY9)~h"
E)M1]ԗD(U.}s_ O!k0hVɠ[r{O3^WBڱh=.Cq3p@0̑gK/b!#SIHbbmہw;=Ж/D+CNNQ>J|kH??<R(C
>8$-QlO;B򖲓C
l5wgO53x4ˉ_Ğz4E3d"㜎9u\1㢎"$ҋSEHalW?O*o^~#YgǏUgQڧr#d%\33GƄ
5J&t\7q7򸂛
X15pqKpe+
P}]P=hn3P"E3+կ>C=4X4>G+DqguCUZKZvikFDPKw "  /  PK  C:U            M   org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyGenerationParameters.classJ1ƿϮz*⭥EڃTSjYT[UP>%f(H	|37y{yp6KZs2B%RK5Smes#2R¤2N~]EGNIaqE}T}z:o̺Gэ\SR4L.ф߉qmI:v044P;3±xnESv]Uw0>q~^|(
}#uPKK  '  PK  C:U            F   org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyPairGenerator.classUkOQ=mWE/\-"DӊDrSr%JiIQƹ)57{wfΙ3_ 0z	^ K-,KPJnr	#$7κ/˜
+kZL ux{[{v^GԠb3C]VV{g?3$D<ee
frb9OUi$'ƛr;Dl(fVk 
FE[sEHK
۸Nm%vth;s1?4iJiaqwd21$cXƈk2Fe\qCxʝ"3Jtq`AIXJu!._9pwf|b]jrn+qt\YjKpƂZj	Z/%,&=TxѣU(x*H+0!a}Ĭ0܂`/Sx"LDJf^)Ƣ<sct$	CGK~RGkyU,n"i]`4
֎*X>FMmճ?R^ڷ`=CUB=̮{#aOW['y/#Fs1O/uT5RWH㾦֦58 PK  7  PK  C:U            C   org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyParameters.classQ=OA}ǝRYX]Lъh,;
ܹ0PQď{3d}}p͙N*mיIN&Ε6^dĭqT6|2̍xtp_]3GGлoOX0n1(ZuheS|5
z2c#>ߠ_z
CHUPKmCP     PK  C:U            @   org/bouncycastle/pqc/crypto/crystals/kyber/KyberParameters.classT]O`~^ǻYn|Qc+b(&$&pc4a[L?.K$1^-(7Ҥssv_߾(D^bPbXĨĘ@o@,@ľ@Ʊgz@[tv p޶u?6p`̆9ځ]!58ll~n,wnZvVTvfFnwRe,Bfw"QbS4}Ǭ5zna6ͺ:
LAh5Sیg+oK˧+ǁ9vDr;m7)&Pݹ\*,.:RW݊~Tq;ZӐa4pKC513023\d0`%a,}aaa!xYr3o6$NdiM%kg*<xCs|hŴɘi#$z$yI1L+F1ƒ1hc3JQN,+'~p	8T]`$n4>eRs\oR|AU	ɔ@	JHpIB	Hx.hQPK$2<  t  PK  C:U            J   org/bouncycastle/pqc/crypto/crystals/kyber/KyberPrivateKeyParameters.classRn@=ع%
\M'(E@j;8
$.| 8&yghΜk?lកֶv*EjDrj*ZA%t/#_`#Mq"/yyE24#{~F38S)>i-"o&@pxD#89p82?xd40Jpe?qzdwHI.<k8
Bq	 &*TѬ/ޟ^]ɮ1wM,bbaC0`d2fB:e5u+,
bW7nu>uYt,@bylqE:JE6ʴ)wܒcPіȆ*t>?A"j*p\qj304h+6E<ݩ^r?δ(-T&#7s,eU3
Y(PK]/    PK  C:U            I   org/bouncycastle/pqc/crypto/crystals/kyber/KyberPublicKeyParameters.classRN0}nQ}RX"$BT!KšG!ơH23O?ޚ a2=y4&7+nEm34Ks%C\a+
Y58>2LYWx%YbDNE"d@jDn<ڜ9Ö痭WwE rUt)۩YAQ֑rjTү1u>]eJ]Ukʆ3Bw
=)dv?mASKeǼG/}:tqF#`T1!4 &taNtN3TCVKj}I0O`y	3r
,>@?t[9S+&0a|{(4RzB3tWf&=mC׎\ԁOPK4D8?  v  PK  C:U            4   org/bouncycastle/pqc/crypto/crystals/kyber/Ntt.class}lWǟ\6[`0XF-RݮkˠPzoenlYŤ
Mp#fD
1KL3&:haDzšm{>y9}>WwНY
YAN}G&fnFfzx#J;6scc|it BeWa`<_3rs|b\RRpЎ
ܡ\z$WJw/?(W
1tO
&oqmO+VÎ!VƆb~"+WF
чhQF$},ຫog-`GqpXhn6h]<误~\:%?yȈɌ"
Ɏh9اݪ%Ҁj>@hY@6,Gl)
+f*-ԜIMA?DDNKtǧ(Df.&5ۭm)0{vs1ZZU]R}'iUR5%T_hu%DӒt&o2{6NOTO>>-mh{ȝ*Z_C4Y0yU5Ӥ_5ꍍfDgl:N[
>E&})k2pKJ\9xy&_MهX[Li.WMS,y+4j ֠|]32&jjMQL1Ehf7%]
*LJڈ&[UcmRxS^cݗ0Ա
CU|Anw6axe5/ۭy3\;ᲱPLGYg6 !y bU`{]lV9\ lMlx\6
Hs+[8xX{@
jR^Pd_rXlg%Xe6Vs`9owg8ҽF 4q04M`{ +M23jNwpNځ5h[XUV`-|-:Vuz
l|hc-灍]Tmbf6-lmfo!-}揰;hb=l tt|`;:o ;]t;-}]l
pK~<Ώ,:c{/ zc@_zxI!6:=Bck5c[i
	b	`{a&lr<J2
*(I`=]OR{Pf8ľG:g	 u	xg"NqvtEewwP}^hh-Z?ϯe#b_T>++9>CO}b}J싖}~Y+y>g"O}w>ԯľ+b_M}ϴ}m"}YDp~M|c|"wR3{D>*YG|G|_]}Fs#?5L_p^{EW?._K/̈~vg_ݢ D?MϹ$wixN^<9g%zD?O-E{Zsw~qd+OYb}f}:]*b_8(eb}>zJs7}Kľ)/|OsV}kb*9}9(E>-/ؾ}TYSbg}bs5PK=  p  PK  C:U            5   org/bouncycastle/pqc/crypto/crystals/kyber/Poly.classV[pW{X+cKHbK(
pIqdim	dV[c I^{ᥝ&x;ӷ>t:LЇBٳ'/9?/G
5h`` bGgcHΐ!މO8	g9KKG6p§{	f³%B@@G;;r@ޑDprl̠yf*V
fy #V~Ϛ,r;+fΚm]Ϡ0)NАd,s|RŢYJ%23SiCḰ-@;
5ifP/
i0	Д

|bj 9kax$cޫ\}Jxɚd	|<&La24Jk~41hfmm̘Yg^V.wv)]ܱ4R.
gm8:Sc46YCS;7iO"
7h0;5>nw_A9Y˿[%@4/cVi":fM3TΛt4])
e;/G(3ڵ']XkR][נfdtVn}q7N[61UbtaۥX,Ʊ	JKc^-{\ww(rͶ64UUxT*PK=*Ua
=*<~v~BXj-gyEvkǃ\
}`skҦbjkW'臔w]y7N0q-%1:Ztx"Ahӡȓ0C^iPtyV"Aq"	C!갋N $t<:n"aNYHR:l1kc`'2A$K^8E/Y/lB׼^<I""z|Ȝ!R"R&b9K0ED(Y]v*}z UNM13咍b6nS|4WW=-t	pa.p%^o/4~s.a~.Ex=vU	Tnk=~w`ոGGXE"hL5܃B /}}?#Z.w~J$:JRդ@bvlڗG%AQ{L8xGhÀq#xV	R0$N8-7pHX3UWEv'qwADpo58%dIdM>?qc#"y
Ӄ@\~nұS'ǳpMv6xO-m;[Z$vXs5b݈?dhY?A)sI_7f3iZe1c)N]&ȱRgɈhuJ,b,(.:H__9H׫!H{XA,
,RL  yz1+A)1Q
"P2r0+fa 47wڤwkU
UBREÃQ)c	5*2[4l_=]@}`=+x6a$$b2:4g
-VgiWrwu&
Ve,Gp26Y$+ZYJ8 9S'\cLV
eg.9jA{
:{Z!1CRc
J܋#m5DYZ%؅ll[ˀԜHY߀zgO章}>A aFF%c#֝:K`\ūw)8~=p=}ni騳@p0MVp°W	$2p[S9.O|`p;&VLaڍ-5UgW4]}S\[[`ڥDơZfxf[nf=`ʌ4=9|kW&'9!TNJ7 | 	6xxY8E@tER9?Oލcowt

^7?n#6
ބ_̪yqy#BOC.U qVUB'>Uek<dwQ	8nhnaĿc	:5cNni_ooK"r')_PKm  /  PK  C:U            8   org/bouncycastle/pqc/crypto/crystals/kyber/PolyVec.classV]p[GֺʉTRI⿂I֘dR"Ktچ.(g>0CK^3$1
3/dh9+]JKأwݳ<om-L<=1)'!nb=jwlQ{z[XLh:er Cfbr>4i%U*Y%*rVNɾCᐜz1@_Tuc!Cˉbb޲"Y&4%^&R5;[雝R8BʥxXL,%[g%k|!ks\~*?D+\*cgDvbaefֿ4{%)AGrs
zgySeβeh\Z1W	~;&#;GEkhB.&-`襙k4_݅,̼U7;8a3YNxmS\t&K.%%;kE7dq`)ىl)*gG%Q'I](VֳorQ:L6:;R^gr뙒5LҬm`r7bzɶyv-aۨsFVRIJQaRھQt;5|e=*oZItqLS:u8W	Qg*g)ӻI`wCp[w#t!]9Jhf} x񇥪$<~qls~Dߏ,8/Yh~|YG'gX89~׏g#f?b"~<1?a܏ .\/{1	WY|Ťa|Ň5_H2>a,5_cuq	3,R,fYY\is> :S|܄H^O&f ~-M:R2e{R ?P/
jÛl .n`>;;bd*N6[%h1xt}tH:E^ɧX]jl>^"'N2IΞ;ޓSdeB3!9Q	2(e|sUPxrã(&F~'clFłRS
=2+cqFҜ
wQĿ)u9ߥ#Ts3/[o1-"lZ\PHm'T<\"{Tuqq^EXWުʅMKnO+6Q&Zi#ReaU.
F!YWhn4ꓬC2&dU]f6űhkziI5q	ȴQ%6ss/wqai{!ZHu*yc6D=;a->d*1^A{vѻ=oxNMȏ=ԆkB16<6d [<i,M5TWqW]Lqv5ؒ*կҦPUCOJڔE@XYUhG^Y=/JMY:5\tRuq]szu\h׺4q;³7bNw19j7021HmzVբ2rj^rϙ"grE9QYӨ[Y֤]<Ʒo-E`oB[ym͘ao`jElBs
2T Gs)N4|f.gPi\q5j_.3j8⡃8;xS3a 9ǤpP-cU#	pCG$#\o|}/95o#P#Ȫ4isC(Jc5[OTX<΀XInJy9*qLlucsJ;xoK=|>VX89{.6Q-R;R%~_U0 #SU=m7-|Aq>Q PK%    PK  C:U            7   org/bouncycastle/pqc/crypto/crystals/kyber/Reduce.class=PMK@iiMEDZ/A/FA<y-xv,mjVH{Oǻ~{3p
=ֹ2ePr(PUǱPwzT #->yԷoܡF2R}9qɸory'*ɳ8+Dpb?&|^r)cJEUM}%}6t]!*0>r¢OB
M6Hw56pLw,]9Vp(v8&Ms`~6
FónRR,f/{@$^}y >PKN'U>    PK  C:U            G   org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$AesSymmetric.classU
wT~BҥˢdJբ8]kː؀N昊iz׆uM<9<7X9P>yޏ{ߛ_G `K$(iKvQ*]]pѕGC4CW	،_0nvVUg	1_߹o7kU[c< U۴ĭۼu_{lf
6շ[ݑ057cLo\yfUAՐ/ӣYsJzϫl
-Eoپ۬}W oAݢ[xMzU4nps]a>}בP?Ƈ|$^
 	|:a{-n~jOB{~p>cpgOTQWqVg***>W񅊔sfVߧ_(dVH0QHs4:n|fϤDfGxLzW3'[oX"X5u|:tHFq
`Lǔ01:BT<$eVI,q0	sU4nk0pMCV03!XL4⦆9,k$+	sK7X@EaSJVf9Hr2eN:%GqQ}D(!Ė;1scX%%x wl"Gl`	Qv9(
4rr~V`d'IfN٣	蒒kqENg(=*"1Wl}T1KYyu]2TM]1]$71KE[K=vJK<}oAɯ,1V%ԋwi8Tvt!GC?9یZ#֜,4ϱHHC/PKT[    PK  C:U            I   org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$ShakeSymmetric.classmOPuT'uP'lj\$ňBnccmg85a9p??z 3Kx`|/q/@^a.=s
FYa4Վf:T6^ԚjȲӶ[mȪjUUNa@*
YQiz=C0+Jh7ZvCW4Ӳ
\m)ŗ[g ]~O[GZ?e
KwJICYXu}en4ʈUU]$3JaVYu*Ѡ"aҭe%:GGm]Vb"A\:}]gX?S)蚽^`Q,q\n`H_0pKD,d.\D0>L(fS7
ղtaEQ|>&ĎzvY?F&y۔n&O?1vO~18QY7zx
Q+TY ;{]<4ţ7}~9}:So!sbM|R;Vcԛ*ry"ۯw^ԛW4MS>9:GeIv2o'&M+1@]l?(_BPKQȫ     PK  C:U            :   org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric.classQN@=,L\ nXʪ+$nXi(PZc+ąGo'dιs~}h!߼{bКNzo9Q/܏q2|.ъ	VÑNP`ЎFK=.@Xgyq:OdiMSWV/D=6e!4[i|>k*yLk_aǕQ2AM4v'X
&[0uQ1q	JܜTFA^'E
(Z1%k.t+<((,gq:rpEF,GXj}U@]e0\#r.┰PKP  Q  PK
    D:U            #   org/bouncycastle/pqc/crypto/falcon/PK  C:U            =   org/bouncycastle/pqc/crypto/falcon/ComplexNumberWrapper.classPNAw)`Kc	hBBCBEP@i֕]gY
>2/7{8x-tj?|@\o)-4Zi[Ȭ3U+OJ(2Q&CDo&4nᤵq*.J^o繻>j!@5\8a	y׸c%ylE1~Tu6sۣٻ1yPK   u  PK  C:U            2   org/bouncycastle/pqc/crypto/falcon/FPREngine.classMuyS)!Tq0$&Ir(y$T*$$
c*SB<̠׬~}uO׳}޿ZkNۗo~e(Z呸sk*M7b
{HF~iq['N=yRYsĚ\W~j6yӀqht#.ϷHܿKnαv3.wz>3w։^CԿːnB}nzBܞ2hpJjDnunqx=ܫˠDh!Cnn}C ?dXrkYws.~LBh2>yzX]ۃ
Q]^y;<!{ҿ ԯ/ղ!}`5=~#nxt{[~$lmSL:O҃7:#9[^]	.iC96}iQ{o;}cA鯶flnC>m<߸驁[q/~O:pߨT]qñJW>VsW/>_[WD?>ۭNx5~~闻8Z`bX#Ϩ˴-V\\xL8)MjdͮTq5N}8yz}5qGSN}I#s.5(NT#j|ihvwnQ|5<)E5贷85~(z#"Zj|ݣՕ<oƆo'E_VcMj^Wbi{,WwQIo[G潲_F+-:,^3<w`5U\3՘k۱bjL}78aAQc\KZ}Fj*/_xʬRWUc_?z~վ4UmD'?)gO	e]YC5?U^?FkTE=WS_Ԩ7fqkA_|_?qӳ_¿b],W?e]kQyȶ^-7ϴl5.tR6m{M86cרq OsOS-؞)H~l4*25VP!j|/Tc񲓙LRԩ':i:;#_k>;=θԘ❥/\w[оsvxz=}֧'-P)c;8Iڐ><<o5xmOqoVk9:CF'WQerӻJ>Fr/Wܚ{S#>UF-R#k߭q_VSBFR{`3Ǌ?q?nCC5v\=kzg޳qX;ڙL=ܽ\mg^+1?^y+t`՘w}M/6{WG3	Ky|-2h˯TCç-UUC+Ѹ6h?s#^֞rQ|{DC/;	xuZuڅ<{-)j]^y\=O]pwgn88Wo?;;5=sN.jLkUnj0.</LzBjGD&}9EOvs^SaU]&ij5/uZ;ZUA㲋Ɏj62VJPG
u,[سnQ4Y[oW_4ui5&m~Y}tǔjy̾ڢ^ssJ^|76+9='Ưqh5$زitլE;?Bo9-BgR;XrT4O{tLΧ
ho:}Ͳϩsvk:Ft;GQ?[shg|5&&
h^鑝sBǍӃU:+!|r͟[~KhԨ`ncHezN;_SW~v˃jkrʒ78<̧cӣvaG/CuH9pt?wy:Jʫǿ6{-{U)wHm:;66S-d,*jT}P,﨑gxO^N^n7;?~ NoV؛ߩ]%wPcͨE\4惥띜[m~HW{eޗ)mij]y輹ԩN~9\zI\ɪ
_hd:+5&j2X|'e'wԖ'ƻ!d~j]uXq|%Kxb4m~_o:#R	SwVcPfnjt\V]d}c;'Ѩä}t5b]	^|f{C܉?Mjd6m%_35vb۽F6?Yz'kK[@^wqђ~yn5Zm2^;"oJpi_١tu]}4xvi=w0Q].oe8sK!ĪO~P)q/Vß]ld:|_C7k{l>ޏ}oFusGc}Wwvuqc4Gc5rlHr쭦3gKqZ]_ӻ8"Ǻ>ֻ؎>_)WԸkdMFQZI}uD:Vhpv2kYuN&cϘSuظ%XrJu͘U!ZJxCY/2K=R܌zp׷~Q|y'Q\v˨QGUxG3Ge<+"m_J/+]:#я>lV'5}jpM/>PHN)Whݗ\UYW:\-5|FGp7>#2aK	jO>lipOHrdكh;<2\}qG6#)mk<ҏ2HˢKRΩmg+wZt$|[VWWڤ#oybd5>uMKoOR|>.Q.?q>*][>._J?pf67=u#=_Wᇎ*>C+;>^qu&[u9xu=TlOR#VK%>>x~{O.vý:D}^ځz}XK>srr_ȁ:kW;y*];>>.5`FM:,1rKTȖCyԐ-n-j{nҏ-~mr[gm<S#Sx">בu^sz%L7]cJ_W/ߪ1<uܪqt&+rksÛ|p5?4_7uPka7kWj⚩:}nrޟ߻wu޻Kh?Pי{Ql'|,6RScㇵK'
Rӫn%tM^7fOllKtiߛGF1kqV5Z?@*dSGy>_fN\vO~k2rB'锽QKkw\uq{;v$UuץMSW?~ʘyjWw-SD[ݮ>[F
GF?F2Bꝿ9;HsS5
s<5O^:n\MSK/mǮ:]$;޹xoM<w)츷ѹ*(?/ۏt~xKۖ>EQYnV|P^_]n1dĶkD.$~Xշy}?</_(&qtԶǛ5uV;w^]^h!x3m{ab_Psw'x_w\ϷcVQluڭoK-O}VUܯ\հwʛJu^'goywnI>V[W&6iURSu	hD6~	N߬
{Ӫ#_ҕæO/H1>m6'DY1
_Mzhs
q~K[?{=_Vf_~~~jfY>u"O.N^?0%夕W}b[?󍗶Z5zcAW_ϮGk/++|<}~賬yTBkjgN}Cgi	/qcsj+nv6O{^g)]/]Jj[C4U6_4\˽OFt{y-],9`e{i5I/uѽۓ}4nmTkLq;shsW݆{i9&|luӻ^۴7jֶfpq~/]iSҲ[ݹ:#/mr*}>}|ܢ:f_N2/WBwzFPrۛ}eQ_ҿ?>xhK驳753IS/Iո);OJw(PX_iwKeن=|27wV
\.ٸBc#zz5~r׷?G#vq<wW?seP[b]?'w>B1a
(~;K
{:thSC5
na6	a#6aCOXۘ	ۡe
۪
۳ۼ7		W
:^<;;p(B8 #NXz#pZqL6a550	=0(CpV8
a,Cp0_8'4!8SprN7	H8%	')%d;qYO8
gF\)=pιYX8/gj-ͅp:Ar%zCIEmG"&:J~3
XEp&\	jśp9'\	|EpY(\(
Ťpy)\p
Ep*\
ŭp+\ Ep,\HŶp-\Ep/\ſ D!DBBO"D!1G>BH`h$.	JTBbĄh&5!	NxBb(G!N
SBbT*Y!
WB(b(-k!n\BHbh/}!7[M6pcA |nG7([MᶆpC!n7L[(M6pE#ܜn7p[:Mᶏp#H5$,n	7[LM'6pcJU%'nꥻΩ],ᾖpK%
	w̄{h]5>pM'ܝ	w{z]>ᾟp'P7(-
w{]G>pgRW)ܽg
w8{]PᾨpTw*M
w\{]Y>pV+
w{]bᾱp'Y,m?w{]k>pg[-wȅ{]tᾺp].܍w{]}>p_faASfya&Bf+aFCf=yafD+fOaEsfayaFfsaGfy"aHKf&aJfy+a&Kf/aFL#f̈́y4afMkf߄8aNfy=aOfAaPCfyFaQf'JaSf9yOa&TfKSaFUcf]yXafVfo\aWfyaaX;feaYfyjaZfna\fɅysa&][fۅwaF^fy|af_f'g
'
g'g'g!#%'(g*,.'1g357':g<>@'CgEGI'LgNPR'UgWY['^g`bd'ggikm'pgrtv'yg{}'g爄'g瑄'g的'gs{Mҷ_>o~t;Y"\-g_=k~.!qie5ϘEob=ݹ{
w"1n5&4EjGCGCuqiڷ6cgU=OcEu[\cqWyCC^P⼡BKaR)_J/	KRT_*//5XPrR鿸zoE򆢱s>_V//e濬_/&e||l[[;alGGorvƅ&=zƅ-onwޯ>r;^w)(>%xύ^5^^^^		x\{a~EP(R+Yue엪c-2ۊXF9r=x.eeۙSgМ~F)3r~s9fxݕD9^|Cy9IxG9~+b'-{ERڌG*rP(UYc,B
"U-g_)WC^(ilɍHEB
z&nz2^bbG֋.+ud=_[4ӵ`k/=<7vJ=_1aflt1ob\YWZ̿9WԸV7g΂BkH40[knѦ~BhNɬ9WS|^1koxv.]R芩ʯ/wn
뚒ZɗFYRUV.ri7W忔wu]qT-o/ިzxystbnP-~~iX~/^/*[yl>.Ӥ[oo5nnnnn%_&\rwӊ*ncƎ6ZLN9:>ZLuoN'8=sX$8u</W=x-e_,6+bo؄,6+Mbxe7^YlڍW\ٙ?VyYppYaYxY7^Vqy2Q3W([^f
BA}iW(WxEY>7FY|V*x.K0ʛ̕6rs0!Q
M\+ߵ`+kxoc*U*^xF\5(^3w[piF^ks-wzFY<̽+?50ʆmu'FyOP8]+xMiP;f7?׉Fy_$PJgD\+l(1е	>C}qm@x^;l(^
HP:enQʣW.:xO=|b]{p/({+iWpK2ʧ̓mOpk̓ol7=|TbCLj!nQ>cZpv
q#9s7}7FeШ@wtpnMVbp	
ܩp_
.S2vÝ|z'xJ >\p_]w;-02v><+δYp
[`o_/cX@\Ӎp	Vnp/cXaQO{؅V(W8~/cX'x9ܥ.7r+4/"ςeJ+^><pEp]mk/e>ܵziVΊO7nx
[kpO93vgC͊ư~;z'e?F۶zǊƿ϶gt+o;/cYaُ}4mp3dQDpʹvp;eG26ˊzƎge9+~=oſI䂝5O;yegK2m'+v/cq\(|ظpփ†=zCb(]X@QbPQel+4zn@n\ J8R/<p-nz,
dV4elN@x2V@m ."
VH.(u+\`*c+[1@ET72V1@ŁVY/p56dZWb2\Yȵ%\+cX1u!\+2V .v\ lqM(\P,K2dYH=@Yƶb,8,2hh+NΊj1wkъ,
d[.Жp<tzb  Cp{&Z1 $\Pn\`.cˢ@〺kŀ]Lq]elxg&vbŀipA}{;̊,
.З#;.;ҊGYh)2T+~^X{U_ƎoULxmo T+~6iՁ;݊ߴm_δYͶ9V<vyw3ηw U]`C;ЊAuE]bş|Ip[vYag
/cWZ*;y}ng+/cW[;i$iVd
e(܍V"U[ˢ\Պ\Y/۬//]V"U{ˢ\mn_ {Ȋ\lna_.\Ճi_%Me_B
{Ί)/	y+6/c/Z1Eee+Z2#ES	GK26j_pcpV+phV"elq+(+^e_Ɩb_tp+
2Yw=\/cY1;a/2Y2]#\Ǌg_mVE!e_Ɗbbnb_vv/ra/c[X1E2Aa/2Kb)ngpXh_Vzb2pXtˇ5elY8\/cZ1(\/26يsrXSikaVeQߞpa_leؑVEv)<S0)a/cY1E;@0;يV=0ӭˢlu_δbo\/2v
h[1\/6_.b/rT2v9@Y/K	Kr+~ˑؕVeQp]m_vg/26͊A/2/$ъm62vYw)\/cZ1/2v=r .+r2vY_Ʀ[1-/2
9+rp"q26ӊ,
U=YV%\Y/lx<ly+E&eE+(/cl_"_^3HȈ#qS/w"+vEF\sU/cV3'<y8R"̷2Ǜ)hGA"iE-n%L㏔4=eld:]e/cXqY#Lq4"R+A&RɌ*/c+[fpT1YjV\f[ӊk<Rی/6"uD"wY#el=+o&]fI3r%#_Ɗ1YG#_4b/	/V/c[X1EʊA/2q0&ΊXFl9_vb/b2.Vb;:AHȏd_el_+rp^/cAO/I+"_P[aVeQ_bVFؑV,GɵH/>ˢ
;ؔY/͐㣑V&L]ӭˢ퉀;ӊرY/s
Q<ߊd2vYy/cZ1z]b_NO__,b/6Q#_/cWZ1E[2vi^/cӬs7wIrme+(/v#_nb//2vre_$A"_e+(/-/cӭ{ȊH6E\ՃqX:a_YVeQ_d"_fYqLEsVE21%q rފZFh_e,e,׌2/&kfDKelԊtf<VEF^/cX1~t/w-VECrhŭ?eQ_2	V;_el+69Tb/
)ˢc/cY1[/21l:_6/;uLŌ[ϊ,
N@iz+vL9_,N&VDq2Yk`VV4zmk#pH;pY19elG+(/s.V-vX:VB/cˢX:_b/p^/celb_d/2vY^Ve_Ǝb/g/A/YT+/Vˢ*/c'X11zl_ tH69_љj_l8_et+(/6/cgZ18Y/s*:_/VF
VeQ_!;_.b/R;_e+rzbb[Yn_d/v\/cWZ1E2vٝ4+gs{F+bkrme+(/2vq^/cY18;gytȘ8_b/"n_.CV4/?8_ɰb/Ui_E26ˊ;_e9+b[r ;b/2g/c/Z1Eql_"{͈]/ "+!_FKwc_<z-` /8b(p[1h1P_bYel1_el+]/`k=[ي,
y21_elM+b#%]/w+"q\/cY1Eq2<uXb/\/jn+bsb!,
uVVtY/m_Rmg_ъ,
C.^/cX1?Tt kh_26Ɋ,
y21_elt`Ib_l_,\]/cY1EAm.#
Xzi_$]/A_6T+"-g_EF2vY/_p>St(sn_žeL+b^/cX1x.[C|+"-Y2ˢJ_.b/\/2v9=˭LƑeJ+(/~tڊl_el.s
wu\Ŋ,
eV+"Y/۬I.m/]VE"7Ǌ,
9_Ʀ[1-/2\uH͸VZ_$n\/c3ˢӹ_fY1H_e9+rrIwHܸ_^b/2Ve,׌g?L;"=\elԊcxcy͗3߂el+7+h}"zEM-n%LJ`7N625+gzh{dJfTlŷͫbF3jV\^
3z_ִZf0jb#ūcu$af
zV\L^]fm`
ͤmfIXb/&kL&V"bU,
Ոel++bQY/mŘLvV"bъ,
զelg+bY/]Ŷe_h_,=/VIVeQ_Єel_+j</26ي)zHRy_b/=/cGX1;ҊeŘeSIb/ !;Ί,
 	Vx_ed+b3br(j_lx__Nb/b2vY/s.-ˮ1ߊd8_.b/b72vY/K	Kˮ܊D8_Ʈb/b2vٝ4+b1Th_l{_b_neV+</2v>x_n$B=VeQ_d[</cӭ{ȊH6y_d</VEr
elY4,+FI=z=g_$=/KVEr
eE+(/cl_d</cfQ/]/Q/w4b_<(Y(Q+(/Q/cX1I([FF8-l_eSQ/c[1E1GMb/([Ɗ(;_Vb/D8U2Y~jVt^/ckZ1(?
Nq(
2Y_6b/2Q/2V<q:+
eSib_ِma_i(8
e_ƶb/Q/Q/vVZF(h_i(<
e_vb/Q/84
eHb/2
e26Ɋ,
y?
el_+b*Y/VE6<
E)V!(aVeQ__Ǝb/-GؑVF*/wV!(}qVeQ_;ΊY/aYT+~ˊn_i(3xY/s<(o_"
KwY戂Њ
)]b_NO_dr+G4Q/_+ˢNVOK1nQ/2/~h_H*
-VeQ_+
eV+"^/cY1(,⇊]Vŏ_&_b/vQ/cӭ{ȊȆG(.Ê@hUcL+(/tQ/c_ޢWQ/cY1Q/yGwފ|_^b/2VX/c ^;}?w2
 h`C413A8bWN2`]ʲo/PKE<    PK  C:U            4   org/bouncycastle/pqc/crypto/falcon/FalconCodec.classUKU5]zUHCg֌V?0.!h{zap%
K
bCHF6&Cƍ1q[]է؝nz~e x
6 H-5fe8unܴ92#=M=sT
`3Bzc|"&fbOk3LԛpTHL<ޑl1~X㝙zHsz<{^>6lզ덙.5Aѩ'3YHGXXZ[B@  ɦ&}y(A?<XSay#Zj5TA$#Ƽh4"*K\GvedcHSZd-emi+ؕ0pB:!pe!C!PBA!b'8ixFGZ0y@˴v	mܹN^[~BKU5`}P
\B<[=X>
i/ʎ>NEqDe1E* iQNT-tJ
65ЊFX#%fj? 4)/;
ߧSےxIQ
Yɤ
/FC/kD9nEtu-}}R'-`G@YpkυZ	f<ӻJgh
MNOo
).q6+ᨒ:IKB?Jg }}ZJ
AƀQU
%ʸĒJu<eO/<
-TUv	nBz˄Toیw؊`%TDgUUXfW:SHS.E** uR
aXDzm找~9~C"ȭ$D:]|=fTE2o)JZz%}uJUЃ+^%
%qO!ut?OB*]Hś.C$XH?'B(D='*J=uyiizJiT6eugE]|dGwe+tpT? &\._,iQwFњ}iWզVY,
v*f|ONU]ē2V;]h"6%\=B 	15qj( ÐAEi#u,	i#dM(ns|X)tGMBI",CǀK]G`ph!As-;`	[
5ňS"e
PK4VU    PK  C:U            5   org/bouncycastle/pqc/crypto/falcon/FalconCommon.classToTEM{{;vg?(E &J֤d
B-JԆ7|"<싉A
&>c|Ehdv3sߙ̜6 }AK|ȵw5l?0Z;az[_jmMA2X}'''&'x#	[clEs<Ąb&83ULWfթBA>]/Tgϗriajq&$*-Uj5HheȦ:5;M/stْsOU,ҕ3i\)=.,,W+B>N+ecï%~248|6^8Ӥ}ןuхN\	t؅Dg+E:d5_8w<?"j^rI0$~L(!{C0-4G϶+aќեǍ;֨9256hzCcUXK)SյKz%p_Qo:Խ1ɯd
Z~y+$6L҇q&L6B%4yhhc4-lٜ)^8Y"	SIrBp&Ï49Ɏrq=
+ENqit.͠C>SR*X[,ؓ7yK/_
bX(ĤktUCt[:ҿcAv
!;hxG*,jazJWFne-%B3ԃN47:7#eiZc&*>a(REI)d:~SZQJA,,?$84Sn#0tSp4eRJz1-*eԯ#Nu82qi:ai\GBհS5<X3/[bZ1ZT1uפKȭosB3ApcJ
'4`1h{?k߃zH<Αo
z'z6wjPxwk )L)"c7 P
$hܠN.KlMi06]]gf-+GX9
UԣÎ?ǀ4/^}ztCo!' gPKiѽ@tm'KҔF
=NMbeuQ~kfzL.j&QKX}>qo@ݔޢcJ85>_&mfz&}#|3C$o|;$=ZPKAI  9  PK  C:U            :   org/bouncycastle/pqc/crypto/falcon/FalconConversions.classMRkP>irv[]kV)b:72qCBs՗	]Yр?6Pu/LRGޛ}󝏓; 	dPŮ"I@zyY X3Ef'D	R8(lvHn,Aa7rtu֎L(Y	msQwz=ǽ(t]/<`:am(|:߮3w@@\58Aր	 p
4B!
y8^&{jᶏGt5Vׇ&gj=( Y8d$(I
"Em/ʦ򠱨Tg4%5 ( p],\9yP=$Dʉ*H~W)&@CqKQ"_#9R #ثȓPxK?
s$y.
g_`"LH>J<ޣH$[%Ţ:Ģբy48-js@1,&W9o#Ť/l:ކ%mx
ɉ*HM' 6'4[,)\󟸉s0f_&y45̼PKW(W    PK  C:U            2   org/bouncycastle/pqc/crypto/falcon/FalconFFT.classo[W9Iol:LQ%
˚fYݦʚر&sb/qxx@mB(
x@^< $<QsνIo8'ww/w~ 8
NV b<NƮ(M̼<:*iOإ+qŮ@Dmu![ݙ+5lݹz/Vj+1>M]>:(L\V$\[/U+r<(irX+%^JeA]cmݕtZS@]>w-b4Kl}Tk(p ތԖrzmXWPA0uJ"ldoS ^ޙGbt vQj$,In>-/ޞ)7j{̧I>4V+($|wRǵk7*yK8ƫBh^W5^]
L

jpL>
x@&A7̉f|:vԮthPIIc%Jwota[/o?|*Q3]2ɶ 
9zGd	 Mlx8n]$	0*dAFQ8
#|W+&WM\4*qH`%"{/(B*>_Fje|=؅FqK"8.7_tQkb}k}Z#8}>	]Y5܃CP·	tT#u'D?Gomܬy0Q
ÃP^sԼN۴mp4舒D÷5\Λ\>:|Y*|MZ{~`r09.M<+DB3D<%8r^34(!nv[1-H_p 8pX|%hRV%A?=8wsra5s:S74#`:B3r2s,fb\g:Ϊ||7IERY9,	c6|d)]/tgĝ6,|iZK:)Z߆<8C
>%ɆFi+[Q欭cF.TFN뇼ɫ߃H#C3|I􂽋B!hY-<*OX
1-ҟS~O9h0
ph&
͗Fcww1Xd3ΦΦ&>-c'ESb-yilƘ1rzSmm8-<|8o(X,	O(u;S`vwͿ	OEy]ӔνS6t4`bMrY.45tmt7^҅,'tP.L݄>vya=uEyyǤ@~QXfT<y
<&c8VaLۄ7Qm׽Iq ZT hevEksnǖyhUM[mеqA4k-ЬⷝgtG}7кND&7}`Q(	)y3.7ro!1n$N3pNr
G ᳡S(=NR?yj#X__H~8cn5tr&3	jӵ1D%1%%&Ilw!&4f_S𲴼9E7jBP.bބ]I7NKԤ89h"%ݎQ 2'd.qvoJTǜct0?"Yzv8(F+ƣ:,Vӎ8GI`
ƯqEX=k,[]:p+o=:/Z0F<};Ђ1LOXcE4F^dv8}+h*nQ1/Rg>rvkx̫vbnxg}ۭitb(pMH,[8ɂgWoY<q;$vH!Cݾ-l^0M'YN!,I$-/{yp8_At
^;{%$tȭ
e	4k3e/4KAW,y_׋rRTݘ
yڰ=xƱx%rR
%ag|*S'I楽3XRIEe-xS
Ջ. yqjA,t@//Dqׂ=L^^ܨo5OY/b$j`jVx~Do*Q[=azdw PK#	    PK  C:U            2   org/bouncycastle/pqc/crypto/falcon/FalconFPR.class-
@EQY(iCB,, ?J9}/ 4ov`н2ɓj6TԂg"6L#Y1UP]sHqge'IEӕDׄBaq`G?aB0jq@6&׈@ߟPKVP      PK  C:U            5   org/bouncycastle/pqc/crypto/falcon/FalconKeyGen.class͝	|Tϝ;L&$s&J@X Z
%D	*P-]jk+m쮭K}m骢ϝ%l}|=ιsGR3oA$:
	l=aY
Ζ0(=⋊Oٗٗ؀t1`xpU)oVP~/{IK[/"ǭ׆/l6˷jUّ8B/L|teSP *O/*W,]9U>?L]H	\෮[kd^5_?p}is5]?r#yu2kqZr9'ϙsϟ}i0,?m)
\r
t0Z&_2g%\b=kM^uɋW_5r=\1ts?Q#H1oyϲesW/;ի{/^j=LW,Xs͒akzQ+{äW._vkE^q U1v"z}V\ky:41I򁷮>uԊt^J.Z],CxW$#?Us]U5˫1+\\]37ׁ%=k׬:eڌӦ<5X7еzŒ+Ҟ[7g1칦gK&w.oy-GC[o*t][RaA.
UdURMIlU]Ο?
}PN(Ig"L+AQIYoo50xm~E
J[rz\_q
;֋QZV.[ߵo1\7P]䨉3ڊ% =NӍ=}̓;}&&:D9k`Ir+HFyg|iDQfVE/'xO]p$P2%t
ʀ5?Q0@z,Q18̦0,eU
]jZJ*M0]j;0¶2|ޮ5{lPZ1]"׬\vM8|YfX:0j*nc*^3Xy5KVYO
W찢@roQ߆kٕrx%&x}JX+`j	ºf
1oR34`+wlIUdE>{E- (	lղ~L=OV-Zۿ1ݣd{[b)S\^|OtsgkK	^xfZl>TJ>~z=5}l鿆k տxR/T=w׏jsBjU˙B[~5<j)!O=\Ǆ"{e;B:O~ptp_?vQhGz<w{_	ͼŦm]hhaWB'#jrDMi5=΋#ʈ*EZQ+#jUD]QPڻwlZfGc	dv̛فqEɇ0RLm=kpj둥eFE톻㈓-y6T6S˔2SQJgR9D84Etʿl9H} |#]GXVbG-:!ui#ofbZGy_of'x5!YCg=.SttQSjTC>QH:'9ΩtB4:9YtΦ3QMKA_I:Jj
%եt[2I+,ӥIOrK^:*TRzJ&;TURmN:T*ZM餺U$TmR_ej	LRmQuIU'-*TItnT
I5_5&USRݮՒTICgT7IuTUcjT'?'ՙ/Iժ;:\CgkRU-v'չIugRmTJꕤ^M՞^TZOZ:ycޤ:UH8ISCNSGNΈNNNNNNNj:tbNK'SqNs\¹0̡s,M' ʯs.N:s\L:ҹt,8jIgtKg茧Jg6:LNg2)tљNgtЙI:K8:9ΉtNs2SJ-tNs:3Ig6G|:̧squΎz*=+,[y=:gEH9
Iaˡ3U)/bLzs>H9sNI !PjTLs:oz"u,Z0ahy¨!"%Ipc:@ĵC$K$z"Z獄uQ]"ս"ND
7
%zhY;DvwC.1Vq:@bvVo.	:@CiշI:@k]b7T i]bVG ѡ]b
1:@qvp'h8QI^:@Toj;pk8Cęޙpg qvK9:@S\y:@bvZ=\j[
wkDĥZ\!Kt{p{tXbv^ntB;K qvK,r VhX]b7:@FĀVkuF;[K]jNuبbv̨ݷ@ܢV
Kn۵#|v۽Ỵ#|v?t@xvծ&o,qoю}_[u@?]m^/CkGxvwj"y֎
}: ܩ>
ᇵ#ҮAo>~T;iWqG~BԎS> ᧵#vܥ>]c Y~N;ǵ+|BO)?]^юW+7Վ~s: vҮD;: ?~Wz@zˈDjGg: vЮyCZю]JN׎ KҎ;oU;¿iWwS;iWw_Վpv|]{#,htT2_ծ0"+
)tVBigHhb+
=o4BpP\!$w'	BtP]a
!B(++
^
BP`!$,V|:,BH!Bj,M#B,$&!Bp.!B(W,88}BPh!$]$4ZBgzgi!ZB%Bj--b!%B-Ȼn!B({-xnoBPp!$v.¥t\!BɅr!\5fs!]EB?GBӅu!T]@@ׅv!]i!Bp& BȻ.!BȻpw:yBޅw!$]yBޅ7yGw!]yB?LBޅw!]xwyBޅw!7$]yBޅz.!BHȻ.w!]yB޿OBޅw!]' BȻ.&!BȻ.|̻!BȻO.!§yBޅw!F.!¯zw!]yB޿IBޅw!]m!BȻI.!z+Ȼ.!"!BȻ.|k& BȻ.MBޅw!]w9yBޅw!$]yBޅN  BȻ.?EBޅw!]!BȻ򾗄!B;Pܵ 	yBޅw!]yF	Ȼ.!_ !BȻ.Q]yBޅHȻ..!B/IȻ.Gz!BȻ~3	yBޅwawyBޅw!;$]yBޅS]yBޅIȻ.gzWw!]yB!BȻ$/F@ޅw!]y'	yBޅwl.!BHȻ.zȻ.!!!BȻ.'+!BHȻ.,yBޅw!}	yBޅwRo!yBޅw!G$]yBޅcȻ.!%!BȻ.\'㗄!B+$]yBޅtB꾍BpwuB݅Pw!K$]uB݅7y."B.#vkH.B^Pw!]uBo%B.|лB$]uB݅yGPw!]uBwPw!]u>%>AB݅Pw!$]uB݅O{U]uB݅PH.C@݅Pw!]uB$.B'H.-'~9EB݅Pw!H..wPw!]u]F@݅Pw!]u	uB݅Pw_	.OPw!]u]OMB݅Pw!u.iw.	uB݅P$]uB݅QT.BI.=ouB݅Pw!~.zo1LB݅Pw!.^-uB݅Pw!}$]uB݅<.BwI.x	.!B.!.Pw!]u	uB݅PwI^Bn.3	._'B.Pw!]uB?FB݅Pw!]xwQ,BH..B$]uB݅KK.?!B.\K@݅Pw!]uBpw-NB݅Pw!}	uB݅Pwf]Ȼ.! !BȻ.A@ޅw!]y
	yBޅwMx.!B	yBޅwm.!BoIȻ.Ȼ.!$!BȻ.|л!BȻ.!.!B$]yBޅyo% BȻ.!BȻi!BȻ^.!¯z]yBޅow!]y~ۛL@ޅw!]y	yBޅw]yBޅ?w!]y>w!]yB!!BȻ.|" BȻ.!BȻ/މ]yBޅϓw!]ym" BȻ.HȻ.rޚH,t[s?.w.w.ssFsz K/HɴzJǁTZ}NG/v:>ԤէڴN&>djKȦ]]59/D|\_(Թ0Hsaԃㅽ܈O돆;59/H_(LHù<fH/^z&W Vv7w#$!yԢd4g_EĈ-D	QiB{Y]r=_u]ε
wr6KxߵYo.纇8߉E(OZ
GRPAS*pBScr(kB~|]7464"nwco1j_<2d\PCޥe8ǥ<4*5NC.oA|?74&E1A)(?ih<x^󣟉q\ãF8Lj\\njɄ2DĚL\/+p>@[kvB	[ظ۹<M
M(!x]./ջ%DS	9-q	k_ٸCULĄg>3?<r
3f8ߔUq[s~aנ0钦Po>bBלh6sc7-(;z۱FCo R\
UUDџRb>iB9٪n|5Pm%j0	/SIJ7hK9D0v;;I/nЮ
YO\vAq
obyxݦs	ғ̙rU92Uj0|ԬTEԋc]%QPڣN152*Bv*	&hw>M$v;M,!tٚ*\Ř0q=_hRMKh{3ɝ66S^6m9SkҴݝYssnbn5pk

V90H;*l5IX4\ҩ"a{U
܂j}kRTeymQF7bda6
"	(	wCZps50FuPFPhc'hwLeum&Ӟ?gL}<\Zs02p34vL
xb
4XLw{0٘Bj3)L}Z3	S7^6*dVi:^~#YWyY,_:|
q"vy_z0b%	6RDLsMA
!)٩ԍuΘ3g[O`3=*;ezRW`;Ņ1k$VɝDda1&Ίk>\Ș5FbbX;#(i-		e[U_(;͇PN52v	RLx[OGDB3(3Zk7L\T*+h[nuHo|Dn-I$ŸߝT)9⎇}*w.5vr?5َ|"`o׌"=U9_W9agJtA1{(+q[vø zPёؙ`|T:v3ZsqAc[-+];>!&<5E&be	^g^x1`Wf\FML?٩~n>2w	ll؝SlOMT$w;;}IS%jiD<`rӞܥL5ҁ&O'v8E%adûs}X`5j8m,惍ge3¯aSPS.Z\~Z+P(*FW'rWfdW&3svUڂ.Gƪ`wWP}V-v 
|:֡)}rL'c̶Lde=ꞎ:%$ӑ5HI q+FGu&K*yT1Kl흙jDLڌe=b~<ge^n6g)|Ɯ IFF[x?lG'G]_e%I<ovAo/bbnn\I;!}(r_TPѯ:9!7cOh;t3Xobm_
їؾd)2g콪ҽ:W6tмPn_isz~[&o2,er&õ'S1Q$J(u6Jڡ#JCE.P1Ri$VmwrhDXNce"6(ׯ܂:YTM*s1t\^5vM	<<bbG &\"_
[jnc1\krYZ1goBEIA'vXtw3pSV|l`ow-[<n>G7hbX2O+2I*E_ߤ-ӀNiĿv{QI}sm
#5 JزY6"	Ԑ3Y6e}ΌmʙbHˍbM6eӖi4uLL4eZuVY&Qm݌ɦLh&mO}TiH0L؛rf
vS_GSfLf1q	2Sb4+3S-1f' (3
F!cgڶxߦv\bǿ[sf丵	e6Ӹ#ZDe|Jɐ֎6ghr4t'1=fbpcyW`Tcu_9`8ɡ!-4zU5gܒ|@匀G`:.ȳf^mgƲ*^P~yaQ8kaԦ7R=jiA]:$\dqBZyurlE[5p{&-+OL
ƽExJI|l*TzxInWj|2g</=.'S3H\CD&jd
WFB?^:u>윌yzGփ4.JLDTaEze
/56..JE8|B)2)%?)}/(%UhI!' m|C-BBSSM`#JoUw
ǡCM7p]+R#κGj{tM

.v5~Y)Y2]/b2b"zpqA	LǴYɁ۶bY)DE#|VP.s6ʹ'*Wq1_|yOOzm}qĒ|}PT~x0Y$GrT|{9q=^Stq{QUŉT+.S]馺} )dZKdi:gJGSc {UF$|լɧQZي=9X
ֲA稰ԳF0gES`<yߪm#_F#q:rڍA٧WfL=[q텟v6F٬F9|ν\61K1c?6Sn4NՂ۵IcY9c 2	
*X͔dюinLpCAQ>KzD*|92f[2M
hQC#3u1]#}ެǿL6dAQ^
W2)&4'Ci7R eX*|<Zuq1PzI2zj9$qaIA(r&w\~̋>=m;'ӷ}&-M~﯇?G{HSxQ5s>/ack"f;^w]>C	M&S7׶RG8n"Nl55>	ƹ6Vh#ȃyjfc
X>u1ذCA(QQga!B.¯6z8EO$73:\o²i[V*M\J>XaGˣ| zEs|DYY:(`J?*.`pg3-t6=O:Cl<KᲧ锶yreyD'ƣ࿠:VF0lZQQ<|6(<o&vqb}ܔEL|=~Zֈ]UlL*d"KqgZΓZ4Әy4k3ɏsb<;bC,=mR,q*-H
5
4O0q[Hb|xf@9I 
㗒R7pg}m],ߩgJ='7y8o{[?۷Hdk9t}x6NCv5qP8&ŧGf+mPߍbZS'W0;*`?g&EVQUYٜVRl#:Uu[xb6WSUU6GQY{\C
o/2nG~aq8S!4{P5
}SUZ缬'9p7!3-;Dt6D<5(ϙvyفLKpkvrƻ1}m\<>e<4սޡ"!tMuDSQVv>)o-Tb
4Vq8d#T.wfÏA7Cb@Qx߉X);]TȆvL;l큞{n.  8}C:1	>!v"=!y䫧8p߃1j;wT_#GRK+>;o"]*a-PF;xO	cA['1lnc;<\8V3,U2Q&**>bH[_3BL7)gDՇ0I)L<K5c3T1YzWG-Su|ΌTmM+j߰L@`&?'r;ߎMߌٖT&G@dO<0f72DL2&<'
Ś
)ߢWMSYڲGi [1̰@#)bԆYd6E[XNOAh
5SVNOƴwJ{b,=S3kƘء7mMuIڲll]¹/TkP,lxf0L;`g;#҃A' 8;uI[A ART Ht;+Ni+ޛH	˳nw0Gab¦hL2HM-@%
,9-ϒf`ΐ^ixgЛ}MI¬F.e4YLҋ?^c\۪.Y/沍^Âx{曱
`x]|~an@L7V\nCnycEKPnjiG
^=\6<)5#\>,%[QW}->Ke\R
fkN6XY4xIŧMfZw(wbvI3H^]AF̕XԲl/۾y(6JfmovmSfײ'
ki8r:EOq.+F;P!u3<|pai;j300*Q^K}*<TxHѿ5Ta7?zW/-jx?hhrs|i[4l*#4=RFRzN5]!LTZ'xTP_U+3^,mo+}l5ӕ`*8ثɶ,7;#(577]PW>|M;3fQ(o+#]D%Kg\2$Nv^WeF1m|?Yk8xWU..uLAsE
*owJ jtyEej|S2 kn/_qRo`NG
ڞ#xKI	a<HV'yT-'}EzHTe<9̙<(F #c\q8n,\ݱN=g<P+2cd6>jxX1QQX髙g+ʳ~Rf(,uM;6^sBZ_]7 cqr>Qlm6S=T &Y]b
y	]e@Hs5Z{B>e\PDVgm0	X`Hq`EG"QA-hqg
hn޷-lif6E,.5}R׬}sI[boRs~5p_~rίmE6mVpka4*$Z[9̷ *bzZ֙j鍘	N<W=ƓűRٌ5[hfhJ'cIUU8_{.9̭"Vu&cQE6wKY3C֕'}T--Mɜ/A9)P?qz7rFbQ'RȭŘG{;09F,Fq`='\U>:؀+#KGD/`;svj~Y}s+tCnjJ#a4UN=Z"J`(Fy
Ry@_mSMx8t0^5jj;dԊRʗs_rI7qa'H{TAP#7%$oAsj~hed뻗msn_V#;ȯTL'q7veC>V\	,HTdξqG
.e?_KS(?Ҭ)Ld*sf}+S()~"{v;eՕ7 YR,*$2UDcv8DXD|~oqzE"uYE5~X?Û}?[7-7}؆U;Y*%96a1<qˡPb+3~,FmW=2QY=rS;ڨi}^>W
BƯ	^s~e?Z;5w~@E>MW<+`>f)ݩ#%rX{8Ԣc->$+TQ٪/AU>m#+.gVG@AGC2g~,ΊZהCm?1@eH~ h(:*oĭ*[f?md+!Oϼp}sŽJ/V2ybWhѲ5Xzŭf!D;+FYʀ>욊kq*a:p$1iWv)i~6ՠ4W9*>_5tMP=z+D]G2C'; Ǝ?D
ޮVYDUx~1+v
mC~5r>X_[5cA$~~|H+
=ph/߷ۯ!~E%]YAK4q̎P2&%J":[/UV[syS	2{Jw8U|74tHa:e:ϗbFjG!XY~M52T3nx~Yj	x}j)N}!gr~r~-zY{dOV*8,Tk;Ⱦ#i[A{AF69t~UcQ_i}<:G)¾BG6l#6AαENHh:7Ư[mmlz@
c\ܸvU=T`MC'.U"k***S//oqY0f*Qǚ\ oL' GU&98:M;Uq 7
<K7tb~䛆TLSNv0g|0?"W,|_릳~4nK7ՇqB{ $fueɢE=o~ceE1ci )2n(~&[2..x;גvG^yJګ,E|mVϊ
&7fHt]]j.2׿eX櫼FfRIU폗v{M9,.~fMjw䵵
zڗriS%!S |ыP(RPG?z?/=$,QMo%/a&eaIZUPmW.hY(,e*(HLC[PKG/8  O  PK  C:U            F   org/bouncycastle/pqc/crypto/falcon/FalconKeyGenerationParameters.classOK0nvz
(&2qQ=fqT٠JA<PbZQdy.y}{~*X3nTZirf̮LBN$Ȭf8JnSDv+>k>ZUeehvV~Yz9˥򜫑N!a/(S4hb) Ղ
BP$6]sEX+\LXvwU먻VD'$ۏULUcPKSZh@     PK  C:U            ?   org/bouncycastle/pqc/crypto/falcon/FalconKeyPairGenerator.classU]SI=M&08YvW ~D
FCdeA78,}UX=+
7I输Ͽ wP"Yp+/'gَm赼zwsoUԫ1(Gx/nlerV%ױDQ8eg	_x5NwAcӨNٸPXR*n!rYQGFW6uǪ[fͯYqV_mM[}*͹hkk:;ìXcLk+	E鶵<pwV8޾ʳBJJTkM5]18z9~g8`jZlnɅh(CAuO
{퐏0SĮ:.}-ٷgf
R^^q-C<ڽ|88䂆5HGBa$5@JCLC"i4jPa9	%d:qF$\pQ%	%\Qqc*08r*N`B)K4FUA^ 9ߴVg꼹\>ICM'ˀiq!Sk#fn|1h[: yjohL7{Mnqj1A
26ps
Rɸc
^"ͽ`<j<AN=B޸>%":ϥ'G+J)'{MPaXwXq[]ܧ[TԻhh]tPlhwJ.PYegI3H&la.ƠtKk>b_/PK<R    PK  C:U            <   org/bouncycastle/pqc/crypto/falcon/FalconKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF3}0i9yn`
YB6,@}6a5#&:-5ҩaTE;0@,2 @83kle U$4
`i PK;     PK  C:U            3   org/bouncycastle/pqc/crypto/falcon/FalconNIST.classV{WҮV+[YbӈFr
vCP\di%dIkb>$= ҃i8/>3{6~jV;o
CxDFT~q@Ad<-c\}{OM
*њH0'Ԑ bpEKb-={سۑ쇍&HZ'D3zM9$b~H'KyBJMLR#I#N<34>9ZO\w\5oR[rF<ǈ<6>6<2:BlmzTR!rZJvh:Ke4ҵzR$Վf;^8@FͬJ
EJ_0l[՚Au'-=iga\Spj,:Z?m&;7jRL_,QJd/Hʥ[TH=ܱDlQ1GrF,U`3JTЪEl̙ƬjKf#dƠGE)rم9HbS/6ܒ܆+Ƃ90
{Z/Ʀ\#3Fv1[+d˹j%vZm$Ŷ0;G޷icIqпiDrr+Iכ?]/E7a<qK@:yT!OK9k*&=uRꆹl
^Ae6ka&(ukUik&ݬfӥ'(j*\ )zH׳K#>%!.aP>-3F$p\				pR(%3`
?5d72Jl87DaS}`Pb-Қ}'&6PYs2|]iiW=en&2#أ)&c(8*vBU1LTUC$B*&ѩb/T1`SءRq39Ԍ8q\P1UL`֏0EIIE&u&sL.1y^ 9,(w|_T(0*1:|K969o+0
wLEy`&_R`4ېt6.SdQ]mT`kȽ]#Sio'J'N2k>Ə"8,H"^,Jw"E\xBpu&$3x'ĶH_XH"^y=!
{BM!ⵜXmZ'zBe쳍D<ά}G.(< Q;cݶAt8]9uVZ9~SUnŕedU<H_K+Kx[WtWG҃O%QuY$+Ku3	2W&=^'\yr㷬g~6juJuyo>Z@S3wN6
_
u<0{k \	q7K-bFtQUOYֹ~vDWhdʣ'S^#;M8 Y(#٥{)B?46$ڦ﬊4hzśg)Ob2M|2r6-1o:<n|Zݠ~:ХupN+[gR]m8&8
	%ĶFq_\4D6FG.#\h.c1<|痖W+(6= M]CVgGySCc@p@t_bhDFv?`6ѺIò
{;l2nׂ-"%$ȑ=BKѝj
p
I>gmޗ..UAnu{4=Kxmo-]uʀҿByQ ˲QPaj&>r;sD-7/ʫp#8ii>[?z[{})6z_PK_@:    PK  C:U            9   org/bouncycastle/pqc/crypto/falcon/FalconParameters.classSoP:C&h?Əa'hBdfɞH)nu>(!qG2ǓM}޶?~~`(bQQ,0򅆏]a~w0R7.\εa]r.fV0,4ljàNzWj_ھX#Vΰ(#GɅ67n-~Z.'L>`H^=sӻt}a1mǢBڴOq-㌄yjC<Gz}nqwȰ}tS<ԧ.K
R
+XSp!wM}¬q+Xo4
q,#Ǫ܊#q$$(HI؈!;J'ᾄMiT#RZst։0_Fȑ"@LK3tIkڦl!	{2IHbfR1;3_1Ri\0zI>"3@f4N!?r@.S$9GP2OP4pPK+    PK  C:U            C   org/bouncycastle/pqc/crypto/falcon/FalconPrivateKeyParameters.classRKK@ikc|Vm}QE=X11*?Jvhbvwf6U^<gHP9xNJ11=uZ^%s=_ڗL#\p~lG)|7*d_y=q.tmvMD7,3K(l֍C5h9VNb $߷km<R:
Æ~bEC	
)!I4tK0.`B@NE*F0)`..Z+PATEd F	i.9[4g/BX<cdYl\=͈E0Aȿ`KRfdtb6Q1ӦȷPK"	A  '  PK  C:U            B   org/bouncycastle/pqc/crypto/falcon/FalconPublicKeyParameters.classAK0_mݺM=[W\DP8
o( ~(<exH/Kz pmJjᨿ8bpNU&:UDN%H	<M$ZE"u/q0AYe2A>Nb+'8ƈ"P37?s)}p+'V|4cޅS#ISsC*[t!lE+:6_~ʐGkvJԣg	z,	|PKy    PK  C:U            2   org/bouncycastle/pqc/crypto/falcon/FalconRNG.classTOSWޗs[.x@R͕RQE@"
mWi7_}ݒ}]6}ز,X&߰oL{ιnr<</]ЅJgU'_ʨ7CZߡ@
HzFK
`a }.vFbFxb`u1]nBhfţ
2.$.?')r*/0VNߚ/O݊w)T175-*h,NIOUp.\vPf3LGw|*S*ED r

s3􍌰yIlɫ+WMneS唳PbB9_Ů9sH\ɔfsYrk{eD_|tT|r+IZU@vCRES\C/R|b"&ې}v0:7**8~JٽEC[;RمzQAvb M豰
BXBB#j,e`q
';]A?N
[p8.IAN	rZ32>&ȉ nv,-:3=l`Sr$T\@F<<mN%zT'|@ TxdzV%GK8Q0W$tA@	<A
..a'P^?`O
Y5ET޳jٌ-jǒ\{R={ɍ{q3#K*qLy(t';{Hb]l@@;=<TvqYu=Ia"˘)"
g8pRH4AIj`\m%Ƶ%17hqAMmk_kE;WG޳S+3nyd{	Cv4ʸɭɈfr?uy<\mxj*:<Q,]vs5n[mc=jCT2*0۸yYSmJTT\ҫ	\LNܛE %0KI5)klTsQn٢=ߪ0<E#)d_<ԔGE>D܋ heДuS7gp"
]}Ƽx@Dwa cqKbt\o`9Vf봿Xdl飑q$Q^
LG??O334*GeǠ4ԛ4lMM$/~j[[#E("EnCZ$m|yX
eywY#G뷢}Mܟ~/MSMу4Of
= *@
 ^9PAN=?TC?.
Q'j+唯h"ξsn@{(пPKJP8p  	  PK  C:U            3   org/bouncycastle/pqc/crypto/falcon/FalconSign.class{q֒:,ZI `BBB($ٖ'd$%@i(G)-^iZi%W(@E?CҦ3]7X~_y͛7oͱ?_8
 ;ӧpt̿^g+X%Wg@+6!\z5[*нeM.?ݗۑO#[c\`z?^6.e	|>=џ@\V\0<MLL3g|&/3>$;gpYk$D2ˏGoCI`[xr8QGB"=:62k+	d0َ1T"LۚTKpv'=V  |!
&oA$pKrz:cDbaAQ~8[MY"raaGq;\HEid`[zg{$^߷-_ %&
̨f
gx43Ne23@
yQՈo\wg,<ϡL~Yq\ߨ21HZy3;x
h&?<Hր9MlI}8BfdВ[[&vO3Xj;D{rkm+hwa{np0w%6=H\,ڱBd1ĔWN
.RC*tХp
*ʋgԯ~3'r{L71V 3X5Mz:[1uTF7sWu[ȹuW^htv<\U]RZ+]L[Tl2Ё_7U32sV8;g=<^}l5k{hf]zW*Í{1m`?z4/fYYy$~nϦ*w۴=\>G:Sv?נ	>5
#	4 (5C6k
Tph"2XN`AܨA;lѠ>G@ nZYCRzHiCZVs	\}\.'p%jB`E0bK| 56
]h \
Y
4ØB;	pF@@
	mX
{`
|ƃr"0	|Hx|>Es!(|$%_Av	"pOx	|W	|n{|ÃUeD1ݿ}mzlSo$܈8ô#> [
vt3Gxu <Pn	錎?/dqȭ6L,>[ e6SLW
8w+H-dNGjQbRn3;szswőX-L-+szX}JBdiZgMׂIDy&w@9:	+]+P ƴ3\/7|i)Os<eԓSc$|{a~U]e|W$Mn,M8.eB-q'yS̍]Cw.tcsޏaJxs.B/"Ѻg!|Q	6#~0:hsW9i7ĬS^U9=<D+ݯŽp\\{Pj@S	<3R[}{Te鿔uA?(/rׇ#neA\1d_cC2Uj
,?SB`řj6K 7X=wR^O!,e(_c k43]so"5"&
<	$GL0p
6<hù115XР3hq 	8G(gR&PKF#ދibg1u.mi<-/&*oE]/S(B]Ӄ
GIHS$zYX:+WRY2rx-݇ȓjncs28Cv 7wpت?D?f>,yfC44`MH%> MPDLR|N2RkJm}LiD/a#vC3C/Seqhُ%M"/גS
	8?FH
ݨ֛T~tzPt\.2('G }:Qn5IuvԔdu:tPL̈́i!ĉH+!k[KPm&s?ptzY~.?)-%lb!6VLX/c	Aqa=.V,G+b\[X͢NMZHtl-'$nlM	&d&G4Y#
m1Y š<E^*Xsa6FxջR9DMrrsΉ6I$|*rBNʸ45)5q1aAC9{xjxb\[zIJ/%NDq	;FZA)#{Tp8MYmm*^YMfeͰueʲުH(*"T*	o^n%j6ްot7b+X_ՔE%jZ,NeyP&p\Ǝ1^&ҿrM0#/s>?EϏ|	
N<5~!Q
 -=
>Dk[<x:p)N/Yz={K>ʷNMkXВ9,zOruI%o'#~oVIL`vMu:F $Q%&Q4:eh@`vjAyNxҺâP$,bNt?QdjB1fMOR44Љzk˃~|x/\pEt	ڷ"Ua;'qA}}QV6+[v	{#0t+WTg&"e8^l,.N:2t=^#tz.M1T
w/% ^xRӌ:/;cYPOhRa
THJQaB#G0r.,T@`IXv
BΝ;za(Wޑ. p>TAAq!W0bz /dT~,O؜׶5}Z(R&$b쓨}!HGq413&(wTqEG͉tZuӂm1u_6Qk`F3-,l
^S)!JVl%!H˭VJ'z$5Jĺ],rJwYiƧ+/Kؿ-k[8'Gn&isxhnfd	Dr뛬xIhVY)qĞGX[0ڭ*Q|rkc<lm2sÆɢQqs-m\
Tej( ðQF<SuS3h5K`̗q\
[n5㸉yC|~߫M׫kfu?յ^_}]q\z-?ԗ7O@^?)p*'a5ydw`f8Xh0w4wG7zFT_<=%7%PKQP  H.  PK  C:U            5   org/bouncycastle/pqc/crypto/falcon/FalconSigner.classTwTeI.do"2Z ҥsm▥,Pd;/|#W%Pař>Ͻ7pD-k&$@Ҳs\Ȥ"`(LɈ؉g=ߋϑP-JUI%K@ƪXRD 0hrfK!'l5`-\_h4;Ao2bg*x+dDpY\jshF2.S$ʁKfwMjvhb1#*Eۯ^ez$u޶FesqE4bkl[r(n0ݕQLD۞âE=C"xVU/֖}!ӍgQd:12uq1YWQ?~Z=xTm6^aكom4<_xwYFY]o==M2dqLqoxGƄwe'}$3krrX"~e1"Lh2>uJ\yM>[	J9/9M3>.3bCTcR>Qq8d00DrAZ(do`Z8Nxr8b
pǘpV
RAQpY!^.)9+0p`
sUVnjl;7fh0Lhw0@?ꆮIwdHrp&NvA;Go#G6NOA	+WCXPX&}uߴrU}QU=s]Nĩ$=km^5B⟸0~%7q7c<<#wϝ?D#&T;OHn:z]fHT;J$RiR!ߩ`d.$dHӆ!+2><?PK  %  PK  C:U            9   org/bouncycastle/pqc/crypto/falcon/FalconSmallPrime.class-NMk@}Өiblm'-x\ҋ BuMCdƘYB?tv
oo:{'tI8yL[%E&^TՄ26:*yu*ʽ:R+Sw)+~6Z-<P."K=K7!BZKI1$=`Sr+!	;oQxܠ?6? PKD     PK  C:U            =   org/bouncycastle/pqc/crypto/falcon/FalconSmallPrimeList.classڅ[Vp־ ;LL@DPlGgvƱk;c}|:>]kݞw(U*hTʧpX݁u^m [=@*6t9N4+ς?㧵2·9O6{|_nWeM:
X9
~~译呂&R폌V@K ӌ@4Wk2dVYKl7|"GV?u r^>vJB4{ !_ȷzzJFB(})7 G넂A3w3+x?ۈSPlu(1:s[XB>(}z(sEP)I({2Wkm5~?h
z'{P1w*ތʻ[A?Uo%oBջQNTmaETy<>)}QҬSj.mu&1Tu:/CP?k{\OU9=ARŽ0o/
ʏƝ6D4̋hg'4}n*͊ Bb@s
C_*僰˭"hzfW7	[}Fxµ_i/.+xR/ѱ|TNtq3:7l-UAmEfDNy8"Wy_"z݆)Z4Y[dGf;Qci4z9=G\c3AϜvwP$ʼH\w}xE1QUOO[ӷHX}k=u']3'H2}ʧ[aO0o^[_>Їgyl׍7y?)̛$of*oQq6OCx37ۜ3.ul09\>{-xe	t
+zE:^!7|ܛ3|t6ofoO{˕3q﹔|{{[{ї7	Qmg||ig|3qÿqo<߸-߹܌<$߹[?(W
ޕާc6hR'Lym׸WRLPdQ"zJH
JЧWP׈^=',>"..${|t%7"(.gLP>ʣ$QqV,<7{chT.
<fJk͉x~<PP։PŞQ{G\2G!_|*TV¬6Uu?*>0L7`q#Pb =1
wj@YǺ^,
<Ê|
๦4x;1^W\
5c3x-|^[+׵:PqHxnT~~TDBϧN»O>(_5KCNGHu6RǮ*CԻCsvQj4i?@# ͖-㟑FWHn2;i6x"FYvu=s^yi.E72|rOq>1>Cϳ=jM?|NOC!]N+n
_խ
ҝn<DOfF7CXj6;^|\,++~3_J7rmwHتHMbaa
{RW?	loK(0^g3)(rPXc%JVtpFЅǑ!&2F û?FbŤ?]رtd(쉌R!ة-dBp;WxL3"SȔ2
MjLKUAsфm\px2G83/xb{d~U+dY,p6KiGxsd4s%ZKdz>@!떬EuMȺd+䘃l+KA#/ ?"eDE&"wKO(i5r?	s ~[c <x2rס=\ E'/ֆU)NQ'~v5>_OZ\|Lˉ\!WÏkeNN7c	rrU/WoDd><^Asࠅ<_"GiDb7B䝱57؃|w!߫#<ِ'o5O7\J@/ǡ@H3

;JG[۠`(jlnBQf 
ML:BBBs@,Q\PK(<$~+~ `~)"tk&ދ	}H^n{m_"|ty3_Ml׹H鵿HDٔzE}^d@і׊YPtmQtGRUŲn{bef?BYQlڗ(6A^f"^~́񻛠~_Q|{(~j	?s 5-
͇_4 MVs h}N{Ƣ^Yi;DT}J9:%VOD>6F_>#sRpFә#|p
sd{MQؽY(,J%ZKmG1(Uu

^R2vG&tcQzxJxJ?{B7cPِvʼwe4˂ŎGϠv?P(sz
erMvAQ^ݟ>Ρ!6[Yc&k~,ڰr/
łgBQ}HTn
	!k°;QaR0{y;T1{>*n;V_Qb
8`T>*>?-ɇJGOΆJmJRMP|BԹsfJ[C۔'?$UJʋ*QgڠJ^2l:T2m=mu
U߈Pֿ[Qu}:f`T]UX'/wG5<'UXΜj,Cu{sT/|l'/?vt"j5BFQ;a!jfu5#
;Qpj2j
t6Sur>Ժ'
[o>#zvq=]~q`ju&i:OD-YQ7}[Sw;v;.ZuWGˢ^35Pox7|&lPڂv\??=4h|
DGC5Y0M-Da˴hy8mNQh8yH;h4_FWBqqqqˀho>4V54޵7O.nFWn	}&MIJC$rQ34Y0u,&_FqhrJ4mMSNGӿA@3	͂-GGٜl}hKs4w4{Sj4BJ6EH!c!I\ç"df{ !nF٩rnjNnq!/ƣy|ޓh~T
AhZwMڥDzN<=HBg?zaa-EXa!l{\Cآ>hm
>WEТυТx\Z~-jn	-,
25hY$ZlƾG]1{򿠅hrʵ$	ZVuF?6Uh5eD*!9;ulߕhm=61mMgfhcv~myYhۧ>ڮzm7Sm?[^j !iXQ}ND6wD	C?_?[U_*D4.`/6w,U[ShaސW:@оGhq߅wB5:XtF$:xàa7谡itu?+:<^~ꀎycG867:Щ[贾stzl=χٷNG"?s͋yй^j6:<T :O/07kTJ!"w4q<"fE?WDĭ%?."ͅݗ GWD=?|D./GB3,Q#*ODYh! c`tɺORjtu=ti]\.Gǡ6jDyX ѕUOD^ыGD_U#zìhD[1]ޛgkCZk!tmS]lwAk>Èވ	Sc
P1-Jm@̺wUzv1g[-۝k3at!6iy t;*{R>snt_25#^!j7b[.#v@)F?)xޫz;O;
=RO޵Gfs#۴ѴEzj3jzň"_Z!Cຫ7ux/q8ZqgdG|]}gNFR6L1z6	=Dʿz[RR_^cwA~ב*ׅ~߂"!H~bGByH8	4͊y_!g
$fE"Hn)EixϿˋO)H?>-b_GR|_$
ICͿ ´_ z?N8~<E_CLwO@7T:	}~>NπH+s\lh-$WMy<|h!jHu}
}T:~A2c/%=1; ;;suF%ѧ-^Q̳fY,_ǀΗĀ罏a`1{8a=%\Ơ jM{A5Ġ`͕0Tw\Tǿࣷ`IHI}l(REʌ,QHX )lǐ0$fh"Q	,
C!ǣa]0式v
 (15)CPβB9h+0.[ΏZr&גcQ5֚kUk.
[m8vjŷ匪-֖p¹v\@;έqy:p\eGnxGёmY[gN ;EpEpEp#Er"-H[$-sH>.wVuaڢyGWp1\^7.wEurcܣ\@>7{}⹔xnn/nU/.ۋы3G7I%pyo{x`$ۛ{އãև;̕'q<L<~}}~<~7\rr ~  @1gBq8⽃)g
7KR>x(2v(P;ƥ:6ܠw|$_ߑ\HHH.t$7w9ͽͧFs31\X.~,c,߱U㸶qܪ\x;υNO&pExt'OfLB'8Oi2_)ܪ))ȩ<8Sܣi܂i\4>d:[0[:*gpE3fsgrE\l|3fsmpsp/p#!s<+lcw.wc<y|<y\|>ni!e!+_ȥ,xHs^[%/Kyrp/ .㒗`mYmY*Ww%`%WXþռc5O[ͣ]ǭzqu|QͰd=k#{7q6qxnޱmK۷glqCvr;ܝ\N]\.]|n.e7ױͭùôw}|=͵{y8 A7H>m9ERp:s[_GGʣc\1qmx q'3'\	qr:ENs񧹥g3܌3|Fgxr=!繢|\nE\E"w/%%\e2wϸu\pW[W|GrkqwRnqo[6m.6y`os)wx~XRq<x||ƿ\\CSU*TJR>J)Gyx|^
U8W k#eoʫUd{w@g~V^b9
U4v;iǺ~{~~rh7Ӻ~{~E\}BnSAvK.xc/qkWHWv6ۣҹ]Hv.;L'g׶!炧v'L =G6]?;2]n#4Y\K
du}{@ ]pk.wv&.m]pne傛;@nܰy\pݞekT@>\'n*Pmo@A\B.hd(vN \kم]pNm(sv'Pg
v_b.8cOc]n(Sv)KNڶ]H 'qv5.8ngr1]Wڹm(#vF{@Y\pN(v=P]VJ.gw	TvvO@'#`vOvٕ~5\.gt{"Pv@mlqV]Fvfz.lbMd{@l[`=Ğ+R.Xgc`^$k@3]B\fWhH@V؝^a.Xn'Z/+Ԓ QX^R/I
k-BXn>ebH#Y,\̟evb9I#kX{VXvQX6BYwJ*VbŲGXXf2])W"J,#Y	Oźe ," -FdU#yW1@Xr&.&KUyuϤ
Ŋ'$UX:i	bqb>M*XXZUH)!d%{?A̛ڤv%"'K"brsbb E0~_1C9"NUtPp3Rc4P;Y_H1H)0c:X+a)JB*rLLkC>ױ0ALjHM$!CȺD8fp[h7z#"
|EE_|A:R>'FH
%UDgd"68I)5d'N|LxKȊ%i#t>!/a=Ig
> k
Y
O8KقZIV%!k
&l 2-R#	s
&xܤ]YCɊ28O:aY^#ՕlpUuB+:kpAV1Y
.Hj
C@(Ep
'&	:d6Yҡdog^>W&TA+OGjU'r
<A=
#8"	%:YG<Bj17&!QdMI7 C6 :센
#=& |0]p/)煳=5Nݤ&~7Kpdm1[p'i#t
BI&76RK}JK[I7r>YDE=$,EÂZnzΧ2Qu<&	<.,'W5s'WgCR
\Ip^t^5IW0xFp9<+a>	.#L8$8r/Aړp?Kr/
.!+,be,Ln"tE}*rnA(aJBhV.)YH2xKWR?Hۂs	;Hu2xGpB+)oBFgAHU%1@p&ig}
 ]
N'+"Oyvv|$8MǂSH9>_O'MjK>H@	N "gǓv.'/Ina6/Ǒr&
Kʙ(|-8RtZMN7;d]&+#rO>'y7QЙ% '<d`yp6E0,g-ɪ@o.HjκYa ˙uO?THU&4h	:\gh>|
ɤ^Ԃ}ȚE0/@)؛T~B;^IJc0`"RL US"+i{A.i:EjG0,M2NYγ0`zXs+>6xqF
v#kY
	ƐjNjA[Й$kAtad7Ad2Q0,`&Ag}ۏt̂[ř[QeLC8e0`'B6RMfH:t;~IHe0`{҅2O)؎a_0)d%ؖPis!1^:ӀFN+؊)3Q[H3t,΋̗TAPRm`sҍzc`̈́G6#+Y
6%,
RE1XT1#lDXHVO,OxC0K!UBY'HGt&KeI7XRdm5XJ6Y҂rI8@hn`
RcrI5#`yjVOIRWVBY+	V&YQYLU+d0XUy:˙	'],Vˑ'e&`YR?L,Cڛ4,Mj7ڂ:FW2XG$ig1kd56XO8o!լ/Dj	
/i>B
rk`QROHj,X,,3%VM	H]3T07L0xRBR6,HOpw3T iR`HcdgPRMϼdM&A5=ڒՠ䚞	T,WH;o%tC$Ѧ^sBf	$Ap>&RPnzf'y:ty!"kA7=;aYfi$B:,{^N̤?%t^	J陑mr@I陁>rzYlPRNO00ʠĜ~f$tjK	K,A6%kAI:=ׅD{	
JCCpߟvz%k3,i!6JNԄHw5(y3Ew&RPxz"t'epJOOFyzzCjJ	IwzzϤ"ؤoo==):Ӄ1u?q|jgyrI򩝧aA>7Q0J%٧J"}VdDI?
eV=JOedIS$8m3WbPOu;$EHePO33b%vz%ԯI#}/I_嬵S;E4FO
GJ#'i ~FZuנ)Y	[Od0(~LJS?":Y/x
d!5ޠ_̺gk^ڹg֠)A0遒S%u,*?dJOUY+?-BI&vB
Jo.CIJ:tYkM^$WI;/\+?Fʤ[JO}Tg
S_"+Yc
J/C$JO,-@p&
J{'>G*=S%,](?%ԧH%>E2Y&(Pꓤo	a%΢!iZO}3t
%GI!%GH#ä	)4[I{&#Y&PjgJA?~fS#Ղ,LUO7Y2}I5(CVyRfU$Ի@]oag%Ap>4vJՄg%FMJO,g'K&gd9SeMڐ6So$L܋?@?zRQ̿(?:~&KגՋtA?IJz5,JOD)^IVYL?
RΪǽS;SZJ"u(^F!%<iw%A$<JOaB6(vΛֽS/&^Kd?BR[r%2$I9##GjiTSO;ig^H#$'ϒ_	&W깤ƒr69 6=S;v?\YrS$K*֠ SO'L!3+?4 R5z*)ggN%B*3A?dRLza4!Ѡz"Yr$H9r%I5"m$2{-G*TdI;S!KhPO=+RJGLJkS$Uz%#H9twd9kXwP Fp'%CI"eu@IrHJSH
$eS%Lʹ_C? R3	9)w)@#i,]OݟtRՙڹ %K,?u2ig5d%CV<Y_,?uoB	-?uid:13UKO@:YJ{M	E-?uOR7&-\'
6z PK9_b-  EI  PK  C:U            3   org/bouncycastle/pqc/crypto/falcon/FalconVrfy.class|EmwٙYٝ Y5@!ww;][&sCttWWj
}ݎ,dg"1=\=gGۭ9b#Rwdlv~q1jÃCL2kU6:nn6Ƴ-\bi{nMOnӧ/ؓݧN5y39~d׉lޙ=aꔉ8}Yc͚#)3NLj;O1˶=צSm	Lhovc&#G4ɾoO&Nؙ:uzҔ=.˯`g/:{f;;kfO=fN^>}K`7홳mOfMcVΌ;OqR=s3vM3gM\}3}ڎ5$7F~7:k:;8vq7r_|1yt{j5.=T"{LRЩ^Yj.uN"ꀇiN64s:1ǋ:-:<tN+<N]<pt"QDr
<J<*<jgz<laMama]a}FʵOZ[kO5jټrn<~㭖A-g?8A:,mu_5{0{mv>1qV+:~{欖,t`;٤ڢΦ$lVA;ã9jMώGﲣFABQ4j!rYa:9Bbg!	t~m!	4@>h!0YȠp,J[!~z+}</ЈδPG[hB-nЊq`>ОmH GRF f-tW=ȯhljmZ>D|kPCqP;Rpo4z(e{²(na8[@Dˡi:
hVD[J_eae
g[X5ՐWWG"^ÚqBku.RkXXk, ,09`1ΰ	*m6G@R[B-l-Bgh谰
:V0[Qn`fZݜ1p?o[v;x]Y`a"j$w0Y];X	-uSx.HPf"H
znPоP
{ A@a3.BtوkaO^`aJwYls5-싦z?bZ8 O,$x0OAem(D<]GcN<BEģxWE&P&x'cD"'A)ĹF<=!t'@C<Yhx6bOAyS⹨xWk&#^B+"#C/FjKP%R/C=&\6JtĈW#k9x-N"^Ѧ7 7x#oBîě"y܂kі&.@ѭ6dGoGhډx'"w!$ލJ>5/#%<>jᤚyȬI|=ǁGO n?|Sh=~RQ؟|Qi|	2_AFｊ|ZS@'7VBsF|n.%}I>@Ij!ܱďбc8'ȽOMQgn@_4%BWf_#vAF-;;^$~\#B*@T#7tA}&uſi!]do$zQ^AkC8܀1ǈ64LaxguM"M!qqxhۙD>BW%Es辉An͢x'1xb=Z8~yGnmDS"	b	wMSf%趢>
ۑL쀙JDaOb]FFt{AV'"%9UQX};Ea(E\
m
ؗA>HG1n@e3rH~J\W@pC»WF\ϭYU]G\
YWG
H@\ׂG7
C箃:s]4}>tV'nzyC%X<qctI}-!r9qs9%_G"MuBvBMOAhhdW$n!nv!w$P~ 8U;e#w#NFeG^&!wgJbEN+|Gm%i׸&0HognݙhugBlt1{q/tH ｑQ{ G= 6O<՗ P0ë{!ڹģF?{cdr=xtHO@X8'L+ܓѨ_E~=45*uJ[BՈ:1<J^#*} Uхh ^NW׆b>"^ {)$ː]]WW߯BLzt5נi{-&CF߽!M47oD&T'oFVx%蔟]$㍻s[zs:oV4;Ѩw!$mUxZ_{'h8@
A=!<>oEzjҋ<@$jShK|WeϢ9wyx/1C|	y22__E(3o D|eo!+}{E{d꾏q~#o)Zgh>Gu꧍ܯP]}o!I/9~O~@eOHK?#,d"-7H,M]ouU]F[s=x.'=)5χ~99/B/"HSL=iW^	g/8K <K#͔B?
/F꿗'fe/ ^	UΛGkz3dJozM~x͈.JlE#
0Km^'^^
-n(-+|!
C;+ajzзq)1o򖆟q[{p|O@T_9uc魀"㚷"x+b蠾xv魚VC陷:B%5Q=h+x6ABb\ͬv9ytf:o&nz#o#hhm â-Bs6GZ-Qd䍄GB;
igzmo.#ںvhG?Job8ǢDwCF4݉g:OF~G
x;aida}{ЗUL!B/MC@Þr<)=[ﳖf,e~&%ޞhdk6oRd
/RRPaGw %#FuLnCQld?w%zQJFB<!XwCVp<28ND$NFgs):U&cȹ ᝅ*w6;C!-yi.Df"Yy]lo%J/Eɘw4Qwa]~(N'^ڵhb]m@ur7Mhs7s-dQGiBf6Oݎ9;w'BBA{"ދ>5_e_Dp+C1N2AslQI-mZ<"k$	%>峞B94b2g`4
%9W>
,^b*W&L|-roIZ&*[蔶,wgJҟ%>|H"YqNc$Od>Eeie}B
u/
mߢjȗ#?Ir!_=+*r*~(i\_Z'"
+o!rE 猋 a<RƠ!J_ksw0AjLÉajˍ
6&
0U71bH3	8mƆ~ZtQM
ITd`5Y.&G4)pi4D1տ"SSBaJoblgkZP2rMvD5sLgɔQ
t!PcO3=(L/:$*\
\A1175ta0#7KY;#.
Ì,<3>,tf88f !uF~:<z$+"WBFnVFHϭܬĬÕ :24'r9djFʬ]ӈ롇hGь@!*f#"n23-	fS4o6GIj@kF q+4P(S}֨{۠zq4|Rm!KƠfhv@NҌEt8ѩ̕'3	mtf2ǎI-wBRr)l.(0]3Ynf:jowz=Pd73 efG6f6:T̞1X5sP/u\)2 +atfԤ& Tg#`aA9A015(9^}Hi~B\p41(s;EH02' mND$$͔dEnۜ4Rm,4FI{XQs/=81Ѹ.@N_n}"y(&};hdFm.C+W(21W #9_"ݽ
tjҷkФrסA\}ҳ\nBNz3r|Y1[܆h܁:;QxB	s7¬t=hEa܇~5P`cD!=,_nQ0yxD[''9<WF]?ĳ(01ϡ<48cÿE"b^Bǆ4h\JܼNٱ
2o"Ǽ6yŻpP& qYŇ(ɏQҨ?A
ʻ}v/giB?Sp57|;t`1#-)zGB'K3 u?+;ߐwy[ y%rFw/;"[)ɻ ޽N{9xԉw[(޽0]{OxŻG;Ż6B{Z=SĻw_"=9F{pKWĻN
wϬ+޽x-Ļ~;W{{k?wى;J9﹭EǾ^?F{~"ޱ"+F{j=UO{$ޓĻ,'=xοĻgc#Ż7$=xŻgƋwQ{K[w'޽Z$H'`dL{Q{ٍEs{Dm-=hLD)ڽ4v+voJ{,ڽhC[voK{wZ{{Euv%=th`R{ab;7qĺXJXX	bbb^XȗbCu="ֽXw_I{{L{f?ĺw"ֽn&ֽw=ߊuOo%ֽtXbSǈun"<@{*AA9P}ÒQ4%]s$\7p_$sJt*αhepC?W'ȹ3upN@'Ĕ9	~2Z:XE.q"%48L
.Ն^6E;gƊ9uAHsR628#$T鲝ѯ_qrQ'EBRt0Ut.CB98W^H׫~5::kЫq_ٜ.z
hT{7"E͹		3č߂nֽ|4?`s VTկP	{;ZYy9w P܉<S_.܍VM=c%܋z}e :Z;j!ĵwa4jAe]
c㈑s@H~	9O)43ȋd1VsHI=/ /db+2D+nUĘ9"_G7Ty/-:o[{6A5λH.!OH9<~6VȒTql-2V#ZgsHϾMWh<AVz-*wӼ|Р?"'gtjO/\q[9i-L?7zX9&NAǵ_C|sO!$؏qT1)480ʜ^78:ŹF$8>ith`#j[cjOKCL,E%\4	UQ{yQ%MoFLTM*X[Q`ⶡqsb;LNE`*v!+M,H
r5YNW}lҺ¢fQ/]P?Ie8$E/< "|TaEĩJ_
"FWEH ]\]rD6
r]:!(y}@3}""7Dnl+&)"6C}9
R-P/buKtf]ݭ&ihs2rw[-O%.bv,8[ǣ;>m6?	NF6bzhnw
!.(Xھ;Ъ
(ӐesFmE@{F{,tKѮ	W셼9I)J-Alq_rЯGFu @8`4s{2t5hCL~8Z4#Py$>GN:). $<	q_<UT4ImNDZ#NB;w
\4HihOG3x&SBϳtz\et_=aew/DxbI/F˵_`C?ṗQ#.OJ ʆBfjE^nmWU!,Zzt&ݛҶQv[P:
jRچeV^
nGh;P}rwAthv{PߋF.oKV~ \TpDYVD>nmzqihs/+z	4K6`9>gvgQᢑҢGzL}%mx		mzQԯ}ek:2,/][ts1}y[߆_$d"-uy9}}tIQ!G~V '	m?FsB@%.~kd~-bߡ̋=:,zGѠO qFvUf9_nPl䗳uڭ'rRwmobEL(1y(zDs/6؏N&l^ y>AԋZ_@MTs/(:dċ b%NGD\&/IhNL	AjeHo{S^Eu҈zW@f -	"Qڂ:ѷ(ކnQhx0z	WFD׍zz[}̘
{{%TEZfX8kȈ Q?F<zc~s8> ݁ǗGƽEvK22"VA7*:{!#ouh(s&ꘐ{kh\kj譃[%>4nEnv%l(P{#Os6A9e{sk-q% q$%G!qlfm{ۡm1Hk<;oG@&ڤ8	1Qmn;!yMz
Bհܕjs~T;nכvLGJr,0=P\fELduY1>aڷ'b.Zb<i~AZ57m}  @ݶ_{-}"#
9mҚ#lH<
"B;cw4Dx:ycQ'oqLq<WO@Z(3xx''N);sѨ?I!.m(ZDFwDH;1\$e!ǜ;YId"]ٝb ҂K
zE__#)_ޕ6.BW?lU_z!%mYwM7")v7#3ٵ_^bYYnEw
҆ۑ;6;,w# ݋P]d.Хy{%vF),GsKV8BO]%O"'5{
U4ytE)zE?߿:b_{^F$o:_GMٲ_^MJBHd~m7xa]t?!ｏVj·~cTeu~3s0^~:m!7HJEM.CI=2XJx?ڊFZrEy_QR~C6 vi!Τݒ"tcp)Ex#lBlK#%f/᧾%F#CEAeq1}M<\$b7LҦD[sL
Z/ Eգ\4Y=e*"E<+	!渦9Q'-ְZQVaP4 X
Exv!ɽ_}"lSAUY/
߇#Pad*u)=$eQ3iug )~9
m5+&:zE._	"vVF
Ϊ04 zruD0n6X-tFf-ԋ^
RuQ}h~Ya~_$nha(4#˵T	B6Eתf׮,o@mDZ
*fE[nl$Fo̶ۡQ,Izc*R6$ӌG&a1yffb'hGHe6ȯɝ^FnZU
C_b"hlNCX17#(e-`ɛh6['2Yf/킘7\>h+/B2?m~%ŉ>!9%FZs8\r3GYhu41p",N8nF|sXr˜ўS)2MƩ2tԴID,D5j5ecCU_JzZy˹6ʗh~¥
ںs9$+PvDQUr\> oEM}Lz4
sQoAGDZ Z1g]\42!ގhޝ;-|U,-ō߃.^Y?P6o+vӞޡjOHk#|/)G@>˖瓈koSHF(MJϢU{xCy^@EUe$wl^E5Q=	o kDU2mdRh#ʼ>
5 "9~W.#T#%WD[KGV9`@Kde_UocFdC+AhѼز_lҮPdUN]Z|_U 
ikpZDI;XBvJVfZʣ;[VpF/t?-NsIV)b[L67qz>d=쓓V-ciUKY|Bx{I/
Ib`+\%hŝmE;;;JY߸drU<1,o?رi{+gZ|V@5"*GV8|ϞWgJ6ldCp%&F*Ffxdc-^ƉJ6d%T *3dӼd3J{MN`hXa%,o 
d}󜓳~>A32l(Q7| 
gH6[F
ֹ}``g㺶c(;jCwv;갈{]Nـo@EӨt!u]o'cuFDuRákٳgǖ|8>!;9a31vlh330gK;f;x6s6ݎ0S$51;I;ШMvSa+ieφ8IH1\ό4f[{iOOѶWq8bHjM'2(EN
:e]qtpn"'rs^mkm+PayNv§
4%x&{i6'hqmhsZ=>lu;yV0kXcab
=}%nq/#fRwXlll	
!e*bCBEw~b3aq:|`١-QAM҇&zjHdlS[_Duo'f6l9{`38c7#6HYl3da-}`3%
lola,aP;3OdM^mkpWes꬙ǳq	ؗGPC}7aMP3',Jiq?G@tp/qP(٧qKXr\$u0iDb@Ƀ/r"dH֑jxῤ<ܩ[d2h-MQ0M'[K0g2AcJ!k}I㲑!};%I+B6< t@XOhݶ4Qĩ:qogP[RwG[s&_"d>arH٤՚A3Erhڇg{HR%]1tr|$R!N&Cd,޲	\p&4{%7whfrlT;ATN_>;A\<}%7vcՂM[4 PK
b-  &N  PK  C:U            1   org/bouncycastle/pqc/crypto/falcon/SHAKE256.classXo?㝯ޝ6qPlDP M"YIvSeRQ$7*TU"OB+U(//7TU֔=swǨ/9{9 ]
ew+Α|{{ނgp

h_u˫+n\ޭM]pc}cqq~%қ[
cA%yn~Ћzo^S{is\|xn%Y^]gO*47Ks5A
`Q䵟#V7H50oug;qQ^0ʦQ>2Fy
z
BM=Pn@
6XeC<
M,|+@M\3K汊W{s-_]]1,PdX%Fq ty x?㳅K4[v:!؝uCz!LwgNug(6PC8"RQCxE%&j_AQa
a`z/hE(^@%l3pqR
=)=1|{I	k()Gym8ݶvRM1z?FďC^UW[F_*Pj|b]@.ۉ.Swq38CUu"Z:~Q8@~n~qέNƔ)Z7~5ɩ,$ӱϭVvqlSYvunc$WΒJr5٩,do.1\WݓTE`FqkNmɥZ<FvK6WTT]j^ZR]BM)jNyu#lEZQ6hEDmij<qκШPM6qIT=aU2QmZS!u(a+bp¢&ШfBT3	O2*BeU6qytB%UY$4.$,l⢫*JXċ',|2b<D	ClQ	!6)?aqMVxIGťƍF,2Ezw̶z7xZM{+<ŦvAh)G(w 1gE1B$fKΩoE>:7ؤR.~O(\FQdPB3Fu
{
w!	
O(A	;	S6cC14C
?MozB{3MId464<w<K79'UU-ήjG1j:8EyVBpj!"I'?xݘ[dtonn-v#}ŋzw9-ddU2aE!/*,^](ψ<vkSܗ9[9~v*ˮ.ʊrHrry5٩,d|NhXo,vR؄L#PqeF>s\JAE2̉ݔ.stTJP
c5CBc̆LŇ9F39as2V)_QV[(+QoMH||#\1Ԑ0Dk#vp\~ǆ9dFN9Qnrʑ/z<$0'F+ϰQe''Jθh0낕\L9q0ǉg`!F\'.4(tJ*`[tJ</Y앣zXl3*#hL~@KNS}:rHQ8|! +ct)h1a*a*Bc(nƤ-㶖]k3+KCU- !5Ơr/?-^B߬<Neb!,'̉~	i+r4XKб0Q7b9XNX+c1@lڳt1t'.]C3SpcˁR1x	Ma/g܂q<X j/
(X}p{ϲ,S/ *n> (u;#Xᨶ;vG?|[_J	(nG!t l&]#QlNߜ6zNw{k{}R0wܧOJ/I_6Or`ɏ+GJ7oJ?<7Gv6Ex;aW"ڔ;:FȽn?ۑsϱhvdƑ0l=/[ۿϤ9!,ePKꀤU	  
  PK  C:U            3   org/bouncycastle/pqc/crypto/falcon/SamplerCtx.classPJP=5iŅXԻqWqSQ t%RܘF ?Jsf9g	up/:  tgMPž<M˩yByz2yR$3YrTݸ
}|sE8^EI@	~ h4Zpz]A%;p``kjV-`݆66l8o!l~z(70aEslОtr,ɵ3ɱGPK     PK  C:U            1   org/bouncycastle/pqc/crypto/falcon/SamplerZ.class[lUY{M>qo%msw6-MI4:8Nqm*RpQP!$Pp%
EPA}A\$xRfI^x~3̙3g60շ^ Q1~a_d1xQĞ"C]޻g_.W1Lpw3V0\"û~{ݞiz@xO=h0!mv<-/NuN&%}ɔO&IkUb\B$pFёh42l̇X"ҜwϩPbRh/hc}dX<$	Fhp81zcx
/A!Sh:&GBPj*NxP"=t3t}ⰄeӑP|3$zPz2"t`jP4M5:1~6h\v;X
v)ح`V	
i, j"4UuU2#vVMBZHPh/	,yC:pDGHh8 ]:fEVThQ58c@	M⤎fmx\GUtG	*IT)
8
B:8 ~*9.&{}06T%\n*f.̶571\s؇};
2]>syjDC+H1O5?>U}~'/]|o8BT*/!DKA,:q{MnJ^A\9tKo(Xn5|%qȶ%猸A;z&1K-X)& m|q24!ֈZ: u'hz@_!xmYM3|ZhLj4˖YTS֙*&)I2%~UjʦodivUe76gieh
+TDY3 'N'=@~$_GLu`,YK^)?A"][l)&]FT3W\.㤣)ORvczVhtx3e*M!TAJ8Yl?$ۇmuTm	ܫmՕArr,h:DyvQG3H*#cnuBSjؤKMuB-DEm]l.5:o=jȎ/ihS;Tr EZPK^Bc    PK
    D:U            "   org/bouncycastle/pqc/crypto/frodo/PK  C:U            3   org/bouncycastle/pqc/crypto/frodo/FrodoEngine.classWitьF#[^R6H8n	V4%\C%[rD%;	,m	%m$,	8vBe+KK[9==s??hX{߼)u{~["@>/t6Fn$&/ݶeaRvm$u
[6PH`CV%@[["V7E3}LdNxB),d:k@ل嶎DRrQ&E28AW&cZ5EӻQSrx*ޕcx_GbL,NBrw<J,5)4:B#KP;۔Mprjٗ܇Zm>jL%&2ǳd&60&qk:\G:֔w%sMaX;\p-#$F}؞rs0!1=g2{q8v~n?mpcXj{AiڴY>mnu3-m̑^n	o-)(Ӝgǘuڳ\ۭd.oIǒt[&k=;XAOl'Õ\_4dX(ؓ#OJw/Fg}owSg?5͢\L z{o-2LV[һi=2Es?k`.j@Qݽ3څBeL;Ma ^K	Sll/a4O[c]15(!9 /@@y
PI/)e
\
_`7zvzøퟟqkp$_vgfms41,	k]u#j"i!Z"눴z"l&V"W7aKfB ;Aat	 p	uXF䫠p1xXa!xu& tX>C_'r5Tp#Tjvjtn[$ȭDn#r;!"w9@N"EdD!r/|ȷ|${$
c5>CD!c"?!S"GQ"%s
x %0b.nb˻)\{4Oz8y#Lq{08yxA=>eD\3CPwzsމzH@]<+0~-&[8_*Z1M_jq5o|=se//*=ʑ0vbvwÜ>aw>/@Aapt?%8Lp,	8Spg99q$d)es$>'I|ϐǃs[QXszP?ACEd֌3x>hJ04q84]p$[|	a_|D°Bn;NlC!$S`I0@
HCÒ0^(x%	N] +yrv#;lȷ)q"!
ebH1CŦlP"[G'
:;OnPp	:Fe*evkr+!ِm)?a"30Hs;a4ÛV6xɽ<.r!P]bm
(dŐfhFS1T43ܑԌ[`dN+$"6y&z-;7?"T
˨WѦ}n\fgjng>̶8g\83(Jt:ķxC\mUoDG~ajz5W<O>g("=
O
1CCnpHCx.\;ІFBFŐV##8
C =B]!7\˘&!y, 9<
!Q4n,,v1(yEUZݘ/Q5@1/eV_r 
ĳT狜S[FS:
S$R$"崝O@}χtTDS:hNQ?k7iB95uJA.t͡p5!MWAI3t91	mj#hzDuz^oуnkxd쐑Ii0hI;0Km͖Y6LM»bډI&.Bn/r)7Р境8RUtJ*S7*jH$F\r"bT"qJ\HOC}"W/8o-8-<8T~ԅXE|5ZQXpY T+)⩾g2bGC=B{G2
Ga**HJ9Q-v!FB:5RHVYi1ԁCa!`)>M\|#宝+JJp[*,{=[Vop]ErG*$zGDuim:FaEC`!
Tf16@WF>7N4,
%xiC Ʃ1&(ۏ
1}n*x˗:<\]/Y#wCHC27>FJ3"c)d*[<4d,Fu$=zmkM)=kPCSyXO#tkp=.#R2LJ-LaZ)(41	g}hV鳁 6,'@x䳑喪ɪ
XiYbMe^jYm֬0kY!E;R+Eltt5
+*(GPVPsbT,T<Q%<y\:>O&>yO.>i0q>0
ħAx"e!1Tg۠BxOvzWyV|O|n!fOv1	AQ
):t75w`,NbBSc8D!HZ;icvaqַ*
Z!{ <x7@4yK FaIaQ9A
?[GVت
 :!3Y&%xJ͈3mfȇAO<*@\|BA,
Oȅ<0E/'@q\L%Prr+Y	,aCɧb]>1уEț`H'G/.?-2JXHً-$7(v7o4:n61t15T0T5Ҽֻ46/E{؋og;Etv/MeD@sy>ܲ5!_s<*@3*D
Q5BTͪ
ƌP=*X&j^
Cq?kPQkְPRQkCUjjC-jjjCy-ߚ`jC=1&V	I^ĿJ,v|<zsZ@B5L+-s<g|M,ͅBנ0<Xy4kwPK{
  !  PK  C:U            9   org/bouncycastle/pqc/crypto/frodo/FrodoKEMExtractor.classTOPuue(~ٵ2S Ɍ/<]Ga&2cQs"[𡘛{nܛ:dʋ(Q0W6()P"垺+Q½qlGp`Ŋk܏wMϱ{^[ltTH(e.<uۂ~,aHtZ&vS0mV:mP3}mmGjA<ءr	=[vf-gOz#osvrK=-6YJ{l*.RQT1⒊
S]FZƈ=kzf;oFjC7.PpN22LYb`pw{20CU2TdjT4\
70>Q\A #i9ܦVC<4+j<:D^Lb|+!&eYK37@{~]fUSDiFOL2 ?EPKc^,    PK  C:U            9   org/bouncycastle/pqc/crypto/frodo/FrodoKEMGenerator.classO@ǿ76jQ@@(BY'BFL jј0]wέ׫qUH_GXq6s__XÈgq3])2hfX)
s]:%/yQdM7)'{ΐWw=)~l%!tmeQ'[j^zTmpG~^K9+[U?c-G[*sGpa_0PO~ͷ+.ov䇤Xk6oGmZ=%rPz4b`h8ጆ	
4eXAȝHb{5U`X4OWf{*
u_9y;@UZvşBiwEނi,R&#*EcX4ĥ$㊎,8\SԑBZ+1D7ef0KF9FqȮR6Kyr&ُPi{5%%'s\ocq7'rx*A'd;bE*cCwIPK5;P  O  PK  C:U            D   org/bouncycastle/pqc/crypto/frodo/FrodoKeyGenerationParameters.classMK@GbkՓޚ(A=UzKff+_UP )Q,;sW 4KЙFNٲ)BҳLJ2en836Ҧ:N~N8_^^5aOᗣO
oIm).#%z?Ƅ^zze4Z BA:ƱN;s{"Ԫ)j.]mnuw0u|FX2\wA|PKＥ     PK  C:U            =   org/bouncycastle/pqc/crypto/frodo/FrodoKeyPairGenerator.classUkSa~uKWnV
fLe4*Яʙt>λ,H%ay<aW ٸ;zfgj~ob)4!ZvY-h'
ћLqЊGZZZFH~PY?Rh;Jj)*ƶ$%V$U$@v4w]-i-sP$4Y)OI*I=A팜1[iHFNnH%%3K3j~kNfep6TCK{SIZ2+<:y\qG<nɡ+joQZS-=va8IkEbZ1w:@2gLU%U%?-YͤTCs~)%2w]\?"0"xhf AD#("h,</MG0x,6
ƬpO1Ѓi"&bf0`J3$tHZ?ZkʶǺK}P<Cv;
X8@̹%E6,'c)yIhky*o=g%Q#TRۈq@X=G
x{)`񓝊CG~(sT.E:~PK*y  f  PK  C:U            :   org/bouncycastle/pqc/crypto/frodo/FrodoKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF}0iE)n Y:6,>D0f
MkDO3)@v``3,&0H
 y@63֒o#X3T fҬZ[6 PKo     PK  C:U            R   org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Aes128MatrixGenerator.classTWUƶVE-6?Zcj%%-h"aHLgPKw]t֞)=uƭKOx߄rrą{?^ 
pxȠ3j\nRIK%TiL@M
#k/)|nخ~hGF""N\͖5[dfCMۮt]sfۛ8n:Ԧ%1C,8[/TZA(1w0tĔ[MUODF>9ϯV
jYf@巚W(m
_JgM3ڍ]v]kb3H+IuAab2NGAhKI2	vsz{50-q+|3q9^u"p `?2oZkz,V(֩cQ՛hC"*[8[)~8x}"vB:3qreȜNw/pAWnvܻ rȦ;VPXxSt	oOa6|GseO):ށC	o}葠1):΁x	WYh:.cDΎ0pUGt\ȣ(3	5\BM	%	2Аracy|aS
@	IMz5&z%Ӥc<0g>kmlV`BK*$ExA$K{&{{1yď\"0-޹dy⮄RT
Uڟ`])ƍx[PϱQU򊺏?UgS\~*End	4S1}|G[-vފ'vRIyרE,G#1q
^*{K'65e*3N0?fb.椔W/r.en39C;HE>*<6|#vB=I, /PKӡ]ȝ  q  PK  C:U            T   org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Shake128MatrixGenerator.classRNAlˢEX"*JĊՐ 61)A
7,ۅn%;Dn51 >oxa9ORqw;|ߙ9gG &pAW
jrbX~eRm;9\:BGl<ɓS9.Kx
Rļ.C|w^1NWsLoIT)ǐ&=k2B3Zs6 's[Cز~)}QƼٞ훡pZ77ɎَۡӾo^~fZԕ-W ;$j]vFM9qrHq\у`":҈HBq1:1.z1Kw!fEnWxTkMuڀjH,%s͵iA@>0y.;"J/G2}~B9!|
웑(Q?/&-/Z9Fp~2OMG0X4ංђRb+K=cjJ`&n4vS[RrL5ӑ&	4pdU}hfYҗ~$RrdeB;PK#
[    PK  C:U            <   org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator.classN1υQD.\ Fcc$IYaU:c &.| xg\*M	.!lrMK<]z].Nz#od_	Ց|b,u #фco?eL}ᇳIlChF\&RZ26!z*:8<]}O? Mm66J6Vs$bXZ"X'<ꘁ"8XF]=F2<!ᤞRU~f۝c;G-[@>=$l8ZalU~ PK=R""    PK  C:U            7   org/bouncycastle/pqc/crypto/frodo/FrodoParameters.classU]Se~|즅>!؆@[A4B)mjJk]%YLҎ8Sx{g񢥍̈7^8^xx9n
0̸<9yw;~ U$@Av
:tIpzܡ8'r|4";H?-&$4wJRΌbϯc}{//Д6Ҍ~ldtҼ\]fQ7R\1#s!R_PѸ3fi&z)g 3(Y,VULҪ*QCT!,YQ,HV"ٵ0oHV24ރl,屙Iq!>ڇj%R(My`٣3s.aqZ2B2zdexC	݇q!	vn5UbwNTu<Sk(nӪ/&95VhLh*188~AvN.&C[#o3213L0L2L1\bfgxaƇW|K0y	-
)43E޲N<BiFν|Lp[ Nns8(8mL-:pigG4)Apg7]\+F*+ FTjq=AoPRc!\tL5b`~GNFڟN|
87kGNTkW/L_
o6~W@wRwkSIݫOVMꊶURW^+J5h"V;IAxz{o}9{?IxMg{f,ܺa/I?[/ۍ+ƀhujgm6`l_p@BjRoMi*Mm!53Un⦐JꪮRSJm;B<*o_p'XUj.V_.h21, PKY0  ~	  PK  C:U            A   org/bouncycastle/pqc/crypto/frodo/FrodoPrivateKeyParameters.classQJ@mҦ'^UKA"Xыzf-ۭRP>%~
,vwfw}x}&4]J0~8C`eT2CiNS"1ԉt|y.sC~ƩE82٭BQZHb'q/4R:sھ~&NaNn6s9:9pyCgQ*ϰ\{XK5ԱêEP'T*vڣ/=!Ca?A@Dm1UllgHa*1
PKɔP    PK  C:U            @   org/bouncycastle/pqc/crypto/frodo/FrodoPublicKeyParameters.classQMK@m}F!"XыzZ1!J/<Qkl̾7Nf(98	 9e(L)BI{(H0p"q?ĕLZJG"(	O4Nw@y_w2zp4-Omc'AiT3й72O:tx]9,0,fnZUZ9i39	og(Ohaԥ\Q*L볲괼Mؠ{Xs3PKpb'    PK
    D:U                org/bouncycastle/pqc/crypto/hqc/PK  C:U            :   org/bouncycastle/pqc/crypto/hqc/FastFourierTransform.classMoUp6k{SiJ7~n_@
"J$UErcgS% !@!H6%̼]INv{f?ixWt4rlD4"]!^B$e1c"ȭt&))p|#@VfGݮT[+
dKQ}xx|UPJnԫ
8	Rk,wHv1HƖf]@·V:߮,FívoWohRK|n
{bOyr2ج^Ds+SFDc+QKMԜnggZKՕ*l>V+Qkp=whٕ˕fuYhG_d>57jM/6fP#Z41 m0`(JW==Dx@q =B@T\;Á^9Y8fa(p<a	'	"pچ'P1ɗ[5XT~p0^i1|?:
}g&/'R.k>
5V\u`3$49c5#p8ۀ7$Xm	Cbq.agH3h	$؀$^](	[65ɺj*"%sRfÌHl*l5Ev* juYu<6"M  wJ<;=EjJ+I ۂI+g1ŏ)RpB&UKnR*C+0$
ѵO7=Ѓ.膰zBC|SQR <DMxF`5].MЕM01:4,B6|QjDL`>}=ww:AR˦戀NMVĪLVY"4c7e(Eqد=_Y'gJ=V&Y2-G=kVV}xD=Kۈ]U%RI)FRؽh}O'pmqBkE
B k\nN)ڒЖ0%\6ZW1iV!lxzO"L!4Vo¢]vTTXʝQ
[-o+	g
*s 38X}9gqd2n)cĠHqpdM#O
sؓ_y)xZp4:vՐ/=|<ANsl9<&/`_9
.!-89LAC2
	ɬM9]Nh
8vV_%80	$Ƕm'N1 7:unĳgPf?q]un<	c	QQ=a@f	r{R13>Nh^*<V|w,7>b'g.݂[n<	)f<SAM$a򌼌8~kBuRoaǏ^.g BވNbXjh^]|<qsacݯu
`ZAPmJLC2՝&&wZYo6 ۀCI^:2?PK>f]5Z    PK  C:U            2   org/bouncycastle/pqc/crypto/hqc/GFCalculator.classw|eO!!& RA%BHbKU6v"6@l(R7]]QYnE|-!3ɽs<yr&"M$ujAmIBAΤX8mT?N'ť+
DM*+-;0?!'&`W򢬱eJUJ
&^_>mb,l7$RI^<NZTceK+J:u;8]i},$JD()(R$ q)RCHCJu%1$IdlKR oYA4ny"I<x@0[[vd.H|xh<.=F33ޙ%}dw@dtFvFGQQdghi;#*ӒzZx+*O=꩏mK*sVMMHɭI99I$'W9D@6DVמd!k|4H4mT i&=DfuMLv MTC+3CSZP;"dc-@
y^lf\[ [`dK@+lmLښ SL~ڛt0Y di3dGdr;'Jdd=
U[#PY&z%:#{
dzkg&st4\Mykp|f!U&Zdl2iBF^S9&&|\bpz`G7ydp@09	|	4eBG!4Y\"G|1
<վ|[5dZG\5Ś]d.`FTe&o MfjcdAVȘ/$d9T템M~ 3
\o2ADV&47d
yN n1d	yM!Myx:y!Զ]:)r!%?M#<u1O#ăZN<d|= %E>j\c&'lI$2\b
3&+ȥzOs&1|M.3\g+t|A;t,er
NV"i)r2Q/'6z.|Q/igZ@l
WܦvM%^Lbv'vDU/L>%_"K7q]z124=& ?$wʒz	N6#>#?ZR_@k,:r&^&L~&79B39AXZ8uڎ8#ø8jr<?L?n#WF N~"Ոz0oBUzW=1LF
RIKP#8#oFkJ
C&T:Ըt/H0V%x HC>א6Jwud)kLrү}6Ꭶ~UaA
y-xe[$5HpNO+ZhEA	l$Hevb:ʤA=|`A)BQ6G}8'\Ղ7Sr/oo=Gq?AAnv9*=#
"<=ʵC
<HMdc0g*>gW+yÃFqqؠqJj
l,x<XfZ042ޥN AO5&ueݢ9Jt
'4->) 7>tF3Лۍѣap$?`ŭ:%XDf3Êk4=u饃O)h~뵈Bet		ЃFgrt=du
&/Yh$l=.AW^ȰAWcנO%ޑ]gɾ4ҳ. }/|5Ȇ+@iAX;݂0Db-K -_!ƍl
g؞x
5/G%akwlg#4~dęaˈ7
+LSwBy7À|#L2mºדF53vDp$E/sbw7
Q.8H2`~~ۡx&t0CQ8#F7uW[gEƈ_c,Dr>ߩ\^HAeVPKŝ)	  @  PK  C:U            /   org/bouncycastle/pqc/crypto/hqc/HQCEngine.classXyx['==]MPnYuRp;ϘP8bȒ#IBJOz@/z@KlARE[pG
$Ћ˝you8v?ή|OrvKUu1VUoj&RB`dlUU=2(+p8Lf&oj&[,gXnMfiކm9y{~	o75|sSQ{?B"WFYήXoe}תnldV{@s_+:a21KнL)yДD,8ClY.-mLU7zqh]vzhC)%Mm+OF1w8n'N&4MwS0e"z;]D<NqkCz$<2J$dci̤!=c:Ș:Ș:k,utTߕN#ѱ=BءO$h^7Zg|02֭4֨C[qHs4VԗhH;3ՓAB#z]Tz֞Dxa/:^qO=6㸨p4Ġ`YD"9-B"ٓzf-^1B,Ӂ[2HT4A
;p|+RSPgz'Ri}p41FSX::hx;I7ǒ7ėPH&㑉H8c#F%G]wp4>yz$޶s4167ڛ
݀tT9D,1%f禣1ƆyF11\(6&k,]cG;2ì4w4u1X<g8Ro,zT6,nI}h<0ӭ4co$F7&vhu)&saf8ը+:ۉS'H4IP/R	$xK/AXA	"IKUa	07O|˱\ଣ5_4@k8\a`gMc`8qFۈ1̷3ҼWX7@<*hGdz:tct8dN"8T*j HPK`#f\@0@`v$X@+_aS`	(p.X8
M>%`W bT	d	5R`rP8
D@xh@)	
(X

4W,FXH"VbΆJ΁+XP$>H!N+p:|DeQ6ǜp1\EqO|SW\Ci|s'_$	BpW	| &"6
2삛ee,;?$&%	 %pI}ex/W2\
&w	G}Ld	~Dcg?a7v9DG;	DdxFp;>8VXwo:tLq PB)\	eAQЕ	t]nE͂b٠A!Cf=YPMZ#艂$h
zU2hv>7A*uE6|UxTgnM=#j<-3jS
k*j<rHSxA[gU[\9W2pXSmxRS<NUݱ+2(pÆB`ߧ-6CdzPv{pNFxq\݋Xѣqe-Ko3T nG;~?)xmvǖp&+s;r$^H#]ˍKN)x]*w L|2e1'r9⮢h\ׄp7ZUE.gkU4ze/M7I6a^yYYQejpu:K.(Q!=-@XhNvfaA((
24wCC!$oCUȦ{!M[;-qw$(z [P0@׸cC.L+AǮY1"{9GqoARʥ
7hRw-F~ؽ4,w3eeb1
4V;+<_ėbhG)xYD˩q#(NPHCJɧ|<X^15'	QoPJLOq(">
3z܅#R7R#ef?cRJ& _>;֐!g٢knK
h군
m<5jҷ'9L
`a! 9HHUH:.5ORF#GJ!r6,TaAʆCPCXdMCFsTf)5(Ǻ*jeN9rQ^R^*J^\>zWN;9YJw>Y&y@H2;~W`q]6T"H2 YbAYEl#>.?Cz0s6j6ͤ{EZ*]*%G[)ZNnf1W!H[)D4-㹨f=CMB(X`~WbZ+1,!jAnUmuX.$վ>฼g
O]@`:p񊧹nWt$P$rxPׁ'muf,!Ic懙K}]Qnбk\!y;szkKSu^Quu'YUR[B3i4jaN,yvcU
$p;?DlE'/ߗ& wk'&aR:rE9L[dq$,oD۪ւbBϬ#QvlZ_U,9wC. 1k1_&W"h]ipfUhÙBdfZZKma4PK5    PK  C:U            5   org/bouncycastle/pqc/crypto/hqc/HQCKEMExtractor.classTkOA=CKEA
ڧK[)ȣjK11|e;unc?xg?,{sIf,3/va(ua

7P(AZ4LYb8[֛YT.q])f02?8;Ea(s'o
R9eө-SFZZ6W/EYD||;pmc_so2Q^:h|$_Y3jn3iZխ=pB첺k5LkuUnK77/oo"1UUV(|,ݟꁻsIx{ܯ<l8FU]mY0.ႄ.I,aRغ#[`HyaDpDMGz'M&Lං`
pNgS0A)AX"
#@q	WqIweݗqs2n U{21Y9ĉ"k_ʀV?%Qrx2WdZX>hxZ`M+(
Қ&o_L0x,oAi7?wzfԍhugte+_PKTe  7  PK  C:U            5   org/bouncycastle/pqc/crypto/hqc/HQCKEMGenerator.classTR@=)m
Q
j(_j[+TTNk	&5M>/3
:}(ǻ)u9wﹽ{/`YBW,^`,m兌Z,!F$&=>m~f8kZ;/۰-CwEU"UI/q;Q2	wVɴ(7H<EZjme~YaC,tSǺW*].2KKwFԍ
W qm©B
Y\Nŧmmu方f8^յ3bt#!~U}m4D,4u\Xm>Nl7fgfYkaVR-K:f=9=9.0.1\&7)#a8}t&coULuߚyb-GUWr5B㧎|'4`q=
8#_@gѥ<
LWЇ(FpSL˸YqG
h&L	HŌ1ܒÜ.;*P)	Lx	GHhGHw?0:xXE
5hhґI'd>jH
A	ybZVe+6`WC,?
7PK0˖  6  PK  C:U            >   org/bouncycastle/pqc/crypto/hqc/HQCKeccakRandomGenerator.classWSBGHɊZ q;%n=1,ΚOL'Nδ/iӺIڙ}kKߚ8qg%3>U~sY/_S"zn-<GF)=r~n+ܒ m}m9ZzXm΢tG(
Ԗ+7-mm,)/9ڨWeojӬ\۸լ4W
e/m5J91>Y|url*JW9?'BYZm>Wk4/]l-Ն^/CO&D	vmcc=P/n7^ڪmaRjY`zQ]ժHܥzzV}qՉ*
4XA߁XzuhҬ
ARyb+s^T6Vזk~S{8hҕ2b6V%dm^l65sesy^o!OtZhwkfP]uFF_0UL6njfwmX!ڔkжlw
OWxx;b7EwvWv]w+F`G`n#(#G>QGhX!s@=Gq룤	G(G(GhTB/y>JIHKx>
d 貄U	W$&.᪄FGAZP %.aCBS7tp$kUor+g+K
EU時rPXX';uCNԃD̉ޣs}=z+#cwGzd":PtwomVC幈hRVݣ[w){ZZP@<ӡ #7<'?H#ܡ`R]P8гG۟g&	ɩ@Vr`vs{tMDZ*#=r3l4$G}sjZVV7!Æ@A("`Z!7Di%gZICL+m~4Dش25lib֨!b7nZCi֘!ք8OCwPC8w"kv8*#'qt)pYk{YwxQ'kKͥ7yֱܔtEǚiiJ,J7X'WnڱNe3!⸤82+yIyLsα0WIaNHJa.H*`:/)III4¦$9XX(%9+)cưSEJyP J	IaxM+,X1`36^h#6 cr^؀'a'fmiyN
a|	IۀLDaF9#Fm@sI0	oaz\
xXl@&!q`9 R60LBy 
rBm@f#k`x9kuV\ے;^2-WFk])a$
%Fܡq]*Q-y
.Ԓsu"UF9&t]-i
aJ-yn9DK"l	[:6#˺pu-y&<:Nhn/t%OZX&h6]7f&Zh-y'8BK"W*d~M7Iә5߆'S6T6lx9P6|[6*'@<O@?GցA{9$0i`?ÌAa`GFy<Pyx'?&<RG5U__\$?ø|?Jw|3{fk|{vH]gtStmS^tQQE/׵ŉЊGZoiD>N=:`mw&ζeb~|w;w?k.#ɌK
(ziO iH=ٚCua*$T61:%N\i%!!;PKf=EUW3VuU~P]񾹋@'^؞͛?9{KE"jQKju4Sѹnڻ!sCa][^7_W*G[AӐ;uy|A? ]7CEvQdXؗ˧v^:n0yyB_g\>G;9CW%%bpb?@UξotJw.M׋j)/c~Hc6ʢSO_Lh-?<FA(
?x)şic8t^"hgpӑPAryqvP> xvO/ġ`yQE\J7FE\Igˋ+/
l@N1zk] n1@1*pC}$b$7T427(֎)N-nPK%t	  I  PK  C:U            @   org/bouncycastle/pqc/crypto/hqc/HQCKeyGenerationParameters.classMK@Gbkګ'5QXOVb?5jVȿ(qR*
Xw>w
`o?թ;hɝ)&ر2S-3CdKN 䓺fyt}T}f_|O`;QJLm
yY
Pzd&h(Ӎ=vIh |Mxh	fD[*V9׸ZG-~3`Μ#PK     PK  C:U            9   org/bouncycastle/pqc/crypto/hqc/HQCKeyPairGenerator.classUiSP=MQnqŵ5*X@DAY%-iPɿ3Έx/MiETpλ缻5w (	tVqJ >I/^-r^d'IPqrS Õk;L[܄9H^C3:i9l-[
i=R1Dc,HW:a54$}]s&%Skf[`y4iku,%r+/d=xK6wJ:J/:y}d(N[s,s*IgmWPt6Hֲ_ҢYwш3ϴm=m\nGX7Ԏsi`a}
+8
(8[188*	n~d?Ol|~	"7덷4ꁟ)RԿJR{-r4oL&m)
"1.S'ѫa.j 4lcΰanCC'vh؊(XppM[CU$@Ec*Rx"qgP	$T302<Vq*z0IbN	*9,xqOLYeqΣ9)A,x7Y?$^%S˘2W-cC=<mDo<L7"óFËF49G٨2<LՊ	c"H=
q
fEƢ*<Ns=Y_΄VpV	 b*O~*.	Pz~Wܷ(_ҩ3T.޲VN_nzPKDh=  K  PK  C:U            6   org/bouncycastle/pqc/crypto/hqc/HQCKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF}0@G3Ul#XX}0ߚPCd=Q$a`ca`b`d`b`gs~J*"P@i* 	@83kle U$4
`i PKZ      PK  C:U            3   org/bouncycastle/pqc/crypto/hqc/HQCParameters.classMLTWσy;8~8ϙ~ؤI?E۴v&ƶmXv6nڴvяIw=7h, {Ϲ߹/|ObI~P$#R:laa4a^锝ҠOL@1
hZ2ks1:ܹ%$4HX2LzMX}*v"e[xh<!7
Ot^.!4<ձA57#dqY:&y9ɏQz@#@h+P:f'BVplB;=6&B3y;V(]˄RVv<ӠKt>t@e>|\*=aqԥ#ɬ5̤gTU%K,/U\6e'z5h]vZNiGuеk>YW Te3KK;Ke[`LMA
𱔳-ee?a,#,,c,X",,Y&X&Y`Aєv@fb cbvX,=oA3wXUq[r}ծ\r}ݮw^:5\k=4_|;Q+i4Q$M(gesRffNǁ3Qix8agḾ93*F'M܁i;5@_%F5t冿b;`}RF^bނS7pmT>`D>\0|6^W0<-ë
Ogƥp.=`R^E=OZT&!ϗ$YJnʠMKUcԓ7܌5_Yu~p2w`g4P*K]h+q/Hƻh1F#QF%ތDK1z܌DuD3^!qL/d>I+|M
J/!&H8@ZWH1Ej-+|@V6i-$pVid
5"\ILo@Qtv7ӥlXfIF3f1sJaE*~T2[*sbc*c
Mq˜[%f%c
Yq͜^fPy9q~@ڨ\脄ExӟJt=a)n_0~RbO1?$n*s~	-ܤ|!E%S㜄1a
{Qa|C%u"kpl7ɧ'ݠ%٤zYWLI[U7cM>z:piXgLad[mGd!>PPKы!  
  PK  C:U            =   org/bouncycastle/pqc/crypto/hqc/HQCPrivateKeyParameters.classJ@$i@7(ЂEEtQ7]U5:V
VTpa]wgιw8o/ XgZP)DIqUqH/q"Ҟ1Thhjy*sTe:LD.Lǒn*_HUx#T?CH0g#QQ04Y}ߧ:u⟾Z,.L,QD9(<lѵKGz"D56M:`ɦ5zJ<}*(PK4{    PK  C:U            <   org/bouncycastle/pqc/crypto/hqc/HQCPublicKeyParameters.classKK@ѴqV[wi"X(-®P1iȿR?JmCw3w	-j%ߞx)2Q@2#"!'M'.ep#gȄ;N|Dq%sKxq!c׍{xp4G;'&űQY
T-j>4áu\Ǳ  СpX`5uhVi"vГ'I"XEMR*U[{Ú4isGprnb}VPK&    PK  C:U            9   org/bouncycastle/pqc/crypto/hqc/ReedMuller$Codeword.classN0M ށXKXUd'B< z_;ҽG? qF]\>7in	ゐm4kqjrbewFJMErmX^b+K7m_+x0fbb"D/Ebz$qHB.n^ʺ5&wN+x¯Iq<Jqg쭛"	yhPK׼a   I  PK  C:U            0   org/bouncycastle/pqc/crypto/hqc/ReedMuller.classTQLU=Û73:؅݊Z,.B-V[l?v؝vi,44
~?6!&ML4&ݴcF??MLPRMyws 99]G_t:`:uu@Jv']dRxt!	ddHIMfƷM&%ևJsQ*<>Wv.+hʌfRA"3U\ϖKP-zr\eiZbUM޵r%V*R<DdsrɣeJ
`6@zqVA[Rz
.̕g<򂂶7Rԝ)OK%Tp`+dH^ϔ)C-7^q+[ZP%/%/W}̕^Zzr)x
mt׮sչ"z"oq"<c?ǳǋ/qx㰂:򀍈tHnO$E6F p0l`xmD0hÀvъ&ЋcbqafLQ+fDQa^:<μdU&G7n;?=ˠO_ۄZSk_	F~S#v&囄U$$f}40BP!\*}ǡJB-KӺEuz^pf:J4KHhU:ZBLZ5˦zE(7Zєzΐ+J5QsE%^a^aQ@R0C&9"t+0u]'%
?ÎU$,.5hjhݱ%{ުEE(^pXQ"ZѩH6_N'
0jĠFסmIyݧ!ʆ=*R#1ASP%?G[vV]oQ44/TZGEpc!:j^ਅ;`׉&AVeLyB=$Fj>bh_oSMw33~ۤ痡ƐTQa*.|!M6V5Gw⭴w⸣	N	?:@
I5a8ͲUx#+!wGUy5g"[
1\tr^Cjg06C
>D4MS[+=}o=]ӊw_PqJ-%$s:eP8/Pϱ$
'-͗5Z%Ƃp!\d#fˬ͠cB>%o$,RՐY-0Yrmxcn-xb	AċNH8.tҭ(
1l3R!LZ*H_2~8PK/ii  	  PK  C:U            1   org/bouncycastle/pqc/crypto/hqc/ReedSolomon.classy|]wybIʾWnKv֒HWfKn,؉=vpH $%
LKaPK˒CNB u R--[-e)Lps=$)uey~<g?I[<-my^~\\W6XE]4gE/cQEsMv?|X̿$vс&OqӁ9{uWhW9M˜p"cu7\uC<?>'rnqGuoѩ%d'1Krȉu*8rG?=?	'˯8|7N>vO\=߷gd<
-'k.8>ؕ+ßr ^}GO>A/?}cWvg.'oeoQ!;~e9:S}O\}]~^w]}[n8y*=]/f;|~|#<~W_gtncG'>龵-w"^2FZ"^{xoW6oa3<r<{^ikW*^9qvKyqoW¸WE^{
^Qܫbq+{zW
yio^e쵗w7\dȔLˬżo^&eQK'_~.8|uGݧIy^Ԏ)jJ;d_=;`/{S}ͳ<m[#?
>.KDsU:NylISz7VRGRGίnO?rӑ-x**׫.rT]L~x}}O?n?n:ݿ?ws߯n.Zc[P*Q=]jGry9/zwnޯXv?d~s:~'s]T]yA**}|Z*^\]lHdSb_[KR.vKE?-ugUoso/7;V~Kdݽ^[*yՉT\}';G[Ry= KO/kG^`?퉮z-T~AUzT{T]ݖ[L埗*?b|G1b?ྕ?ݞw̿7lOƥoam=b0J9E_A'>;Վ--r\/.9]構:tcՅ- ;Tlq?v{:NyO(Jא*#Urq#Sa?w$rq=bo(5{-ͻߒޖںOÿ%RR1G?^>Mt4XiRT.Mkv˗Rm9wwf*H*Y~;|:T;XGSڮtN1{Ҕ٧?!9GO弼yxMynw卻g<:Fi29( |_7ۮB3{/;41ýSud-]wd
!~y!4}m{#ҵDlFo&9b&qqw|2;d^Zt<t<4(OF>1[E[1rܕ#N|QEؠ#V7&nMo7uv(HcϿP^>P:rg=rt;%۶շJ[vwnsSz;J~?CcOoGs9~:WlͲr0>9T?x"g=M{Wb"u n~^^W^W[%߄>w?Oyvfc xNOK׳%㱍-Hf l&H!Mg6GݗHb{&kQ{%/IK<'$Q^&Zļ{M$/nZx{-Kzq_7T"RTꄽ$6Q^=u{{ݑ>'w/
V3^Mz4&kS{mNzoq_Z5q{mKz_u_ړGݗ+kggeW{,8|ä(4"vQw!Pc.*9b+>x䳖SRH<iC'
:堳:ՆN{D|It:IOR9j$7x;@fC'=#xb$5tއϳ)O14ƍBPB69"ecǊ98R#j{'<Kcb#ÇCHtSUb$Z]<%|}4~ 1BШ!~ρR @8
}MU"p$*T
aED|HiA"~[667mMrdNi*)$#;ڤ)#&^+NRFAvP([9=B/fU黂nSć`:i<jGHRKT)
*BKmgJ}GiI`HWҭi H]t'LZ 
	AAt"k9at7
dPkG R "m(~"4M|8T`U{"HS@(!S$XbI1%Pc&R$`Rt(e QSN~ 2Gig
APPJDҷ
aE!҈@%$wF_E[([<7%b=ۥA	+@z۝2aQ%"T'.3kBqwPiCGRTT%V,&H(&%Ĥ$Ba./"jHAm7摤7w1&y
'DaM(&-)aGp
UI*hDR$)E!B$%	p0U0@iYd2BԂC_AiT5
 ҰdƹA#$ooV7Z
ϋHOW}*JA
JIqcR3Lz@Z"ӂ):ctBtfeT!!u7tZN>pjR:Zt2fԑm'!w'vzTlBk+|oCr
D
.4|N"K1NF(\؊?QSPbxGeKH[Qm"LBZ(2RNԤ$_Dp*qLj  CP<2.!/ps ф'4-ھV
ow(;Q]N޳v& j%.׸t
g J@zt
.HC"]BB集lq +=`s)1J8UTI׈"FLv(W4;%oТ8oN\.~N
#	N]SqMSQi1ӵI0QĝN+':Rw;Է'RҔ+R`SAZIT/ґ¦V_4r;D١@'l 
sYNPk 5(~PMDi782Nɔ`7ʁs+<Gب*<Cˈ9KHĔ@@>RT..=)>!Iag\^ }%ISb*AP+PjVؙwC2LUG
K.5M&(\$aŢO|JH6\)5'Jeҧbw'һҟ	@ TH8;G$`dUyJ įm
$>cli1|c#6)G{ģх
 tm P Y@%
䷔,LT.gH.ZXZKհTRYjKճTK̇>- cK5if-RZYCKu.[*k^̣F060{xTFz _Ao%썴AoFFO+Lt+`T	Fˢ)J-<ou(D3as$
DW} 4Ju)ޙAD
΃@P"
z~!0(#,&)@S dr	#17~QYA5!M!-X`-CԳ@
-MZZ@hZ:Y`Wi0j6EG)XAvHt0zTcy*.=.-LIMY"W˥/)"q :"~.~	Biq苙F5P[̠Cv
)~&GڈO<6܇B/!ނ}0F1hN=$> Y).*m7dhF}`t0.AȲjzV:["h) Y5l	ai"B_ud
v6g6~}xt
 =B=cj4(~ AE8jLRq3&	Z$ptКrIpdB݊JDJui5\QLF"[4 цx2PZ`w6hxoYZnG{GB5Ш] GIX;
)VhőL<IUS&pipбPJr|F+>9A$}I(}ZAi	mHO*~vҍ?? GJW"HiH0}"ӟãaEۧ-sF탙3Z$)t9D^)"-(%kU+Ajj:kk{L:O }&Gt#ҤoV(Ao/mʴ#ѫ`mn|
cu.2n5"T}YU>adQ`S>ĕ!(mx!ᓔ";e
r8/TeV0VXƴӤutPd
0hsZM*욕h[Q6~;RA)umRo2U6B'
=~AuZP!>CajRROgNE
MM LEB)bn2LYuDim
 E)	#pQ٤`oF:Z=g[bҡ$ʃf[ rB5|F5
"t*B c*͋%qD7P9*UIѝ]!T
*bZvQ#ש4L%
 ?7*yn4-`۪"l:jj_
#SB[#fQG:]+7$A"O\gk}9()8r,%PlU*!TNFZ_g}U8}Z8=9= No"pJ(PG}mV7𷧉'H GjMjjT%ںԓBs3mȜ%@E6\(
O%U%UV~UGt
7^Հ%#w	 8@
G 4
N)t:6j}KOkN`:{JRfEpbP\L*k
79E&*-,¦O}]Q@ l^F3zmg%.3ވB=m|sX[驶.82NNVCc]mD[ 	&VI
b4Ez;%j^Zmfh|Q(}.]*.NQZ!1אi785ӎ9#A?nb;U趈
6uoPŀ*Ȅ>N!2qc@]Pwq0i0ǀiW#Jwer6{GrHˤ|جR,UR,UjY.g{$#
=Bs78chϏl$vKջ o7tr^H6Χ냧i3J>؜>y.]ͮ[YًGv>>Ը_ݖ\lve`svgWޝo;J'>_6ӇOjo4+W!mF֣줗<%dJҖLg يnLGUR/y  MP@:~czaRمFv=b{DO׏uΗށƟ5e=^o{[fC&6'~66W
f{}Y0_04B49B"#D"i AzԵ:+*g|7w	ոO 67愽%N
bD6^l	V88=pْ-?Vig62/2ж](h7AzAgӇ`3J(oP(?炲T10A}L+[iS6^h
¶ݲ	a&,Lk+O;*159\ |7öTK{-}L}Dc`c`/<f雩K<mR>-wa:{6~,~;,^e[GjCoIID{DenqG+e}`~dn44ofOfBeg,B

le^xD ~?-gj4ާ
D6~4<(_ʯ=8wT,~
479ۆ
ӿ.c8M SL>-?qq뷀q&T93%
ip`s0&kRnNR^sh~#bg?KUBysF

.|B -в?3(#l#8"j]@@l+A63/2ʯ4(PB٠Y)tҺFևysg!Afκ1ݰGYS/
? 䓚؜̼4%H/!mz֭G9[+w_FG
5dld>H_~@R=,R~}DL~
&sM ~to3xOXqL\#൓W8X]B=[32lwNB+82*̱Z!k%unаՋ
(~8I`& }}{.n9xW=-NYL7^
OkQ;r *
O
Jq@]	AӒR|\2v*iRJ-\8m{[$K1w&)q@DLvSL4r7ݨe*^/,<iyİƓ76ǓxFbAQCDɰD~e/QUcxݸ<-'E}~1&Og0CfxqyrEIF2e,9.^ɜ-mzcs_; {ݫ<hDU(қqlB
3)	Ge?DG;LcC:>OwmA sI,
[Adʘ/P|!>oM5Ѻ5Zl|cs,ΗC!ۊAղCڄa}{0U94B2ŏTq	,c>eUMLgTR	Ω(;U].(QYTy!M[@YVBUuA>X^Ňְu
olϛYz5F:s$k#;Wn 
5@!۵I%
'L1y-Pc
E|3#\"ve~+8]Vas0LWkJ
]Fell^9k8BC8{^qD0
188)	qJ0N00 ƃ8qQ0fq	qE0fc_qU0ΜD}l^p.y??ò=^|uT:k'I|ss?V9}9ges 7/[-sdIֶ,O[Ͳؘ_nMccz~=,~젂cHa%{Ă8mQb>8"9w2E4Sifag`vdApP<F(,Rkf⏱lcE\5bU_PXO:Tu*!E=^ucGۍB17T(e+lHg0Yq|NuAy]_@Uem8Jse'W
fc꛳~'
}0h/7Bca@'e}P)"tF@Y|N@vP~?/_[Pd.
-f+LݷaġO)ؼ]SxcC8,ƽ88q'>_0N	i`Y8' A``\43qI0.\Swn;jͫR&=})|81i{ez#$?1<b\䝐OT>;.̪7;'> T>3/O[-hd`~,G^ϑErV^n)\<k66˜kHCX0+O:pqDcvLbs`~SD4<؞ɎHnbkbAâAh?ي:K *QX#^w2en&D͐څQd/-tLu߸,oB2WNaӪfDY!s:Cz dk^}BeQ/˪AWt.~u>(	ml^w/3
iA6iӱ4@ѽ*F408@>1c?R:mA7fsx$BsjmR,3daKŲvjYB3F"k]<ruՉgD-5Xjh,5FKKMԾ|cKMԴR,5AR,2ZjYj,^-ƖZR5\k.8$C$èv͇̉ˊG1㲒	tqSƵ0')J9sV;w@8(G(H6p4se+~2t*sU
_ǝ?ŤIImA-0,'_FX`ƴ`I-nh)-0f,̱|g[ X`Y@Vз-Bٍe@*sC*]UǅcjHGQ1	8V3\r-7a
?.Π$s<1JwE1#[R
LBU!*JFJ(W +KW!0Q4+PTN6l3يdVɂȽ3g\"t)VH鳄dbVo*H-
+3g
g KUqH0`rG(0xc0N
`rqg,0	FnL00.`\Y`ٗ
kqȕWn+A	n?CcH9a	yΤ,ڐNAi3YzN.L$HE<,Md(˲%Yio_拫5	麣ol^~v/K7EbtXm`pLۈ>b)87!Mrv0jtRb9<3WQ@.R#g%KeY$t/4|έѶn'ؼ?{ȆNazJ׊F&ƌo<X5/	)yZMlclҫ22iX EL|	_&=[QHd1e
5Ru\sC
d
L̛Ca$9[~.'aq"36#pe
-fYwN\+pEeFvD|/+XNdgWq5\{(½669;J0X;Cq1`q0Nc0SqZ0 ,0	pzVQ`\1#qWcV0>f0
57W ڝ C]
*4j8L9D$Hd:7&nM $TǰHd=Π+d
stĄ(d"i]-˜[iYyN{\2a[cs%bc{r 3A|xdmۨ>ԄLqR6pfSHlums
UL<-@EZ[֗+Yį,)XCהE{;2g-0yc'#c`ŸfBlM0OUI(<gQ9ȹ92y9[UI38Y.A6"U`.VR"E7$w'Gܝ3(?Y2}D0'PI)ribl}S`L<Q a]T)F&3EV
mkS}W}W66wC
h+ie1-5&Xj9C-5fXjT09ʴ2"KeXjIK-kʲo_ԪZRd66&r7PV2gP	2dbD?a`W7O2suH(UH{gCd$E:%ز`+vfѣ@*ֹ&]7gf979[7!23$%
+Yی?0fTI$4ÁӐN䱴b$}V17~LĜI/$/h3rYeW`sB&t.?Wkjg'^aiոs;w:ҿ8艩,FMʘJTd-D[2\KJ1PA]TI9]P_Ւ)׉8Y4c?ҡiM,ZJHەuH;:U=CeA7 ^$*̣A +Uh	%!lXAA9
Ơ8?NN6Ms2cFgTRJΡ?V,C#gJKҤe+tV)dy(5EED'G.$ȍHSYP,JJH`5UQ]R,P*YJTk-PX@Se,PX Ġob1haV-Цڵ@dM@fa,Z`PiaThQcq-0&Y Z`4UZ`Y 2h,XkZ`-2?6(T	3
0,TowH[É%qdD=^,9cc:!Y^p
4i"OX`UIVGeފLjF:]܈6)_iV֢koS9t2KwF7{HzF#f}Z?V7LhL	`c8.'q29c`i88y`\1K,W1+sDqm2Oq(܍ }F1M eQ|b8W?.,2dϟ@KreY.]MaYJidZ]#SL$ù2z:
rpcI(d؂jvCۉUw$3t=2^6E48a<#YǈyG#Y'Ovkx3(Œ0df2,%2Ʒ"@O@|~Os+ɝ
n?kfs(q8U&@p*%.SԔ.*TUjJbkc4hI1ȲލQi
L"*4.bvPtse-0׫
ѓW8!aݐġlƔ	#!z`G]3ifU7i1+qjrQg.2ْLD9s6OFq_H́Ťhبh!EE~mD%pUQ1{VsxW2ۍ?G-r-
BJ*KkZaP'n$QȎAT:dZ&ӬE*WiHf%O'4t5Ż&z{س^)LS{ЯHGEg	ِ>Leދ;*S4.'s:Є)5MeVer#</EfF6.s^nHJBN*vhV[y42o1>=#ȐmH!KD>E
И8QJ#
tK%e@9.WWʽ0j|Ղ\7.3
ںR8VtYixm.l?\tDNly!r?LLc*Ca!-F$1qMH'@S43(3pٍwA^gK2iƊR,hVq5YQ$
|=F:;B;
,E$f14㤞%vLYWyB)S~
JqQ-A֒)5M=uDۍpıQ[$jڴ@V6Bv(!픿e&a]Ju2=^~/ڼO	w?	8,y2`Q`c0Nc8a0N`Y`FL0$
0fcx`\kq:M[`]_<_A~>{8-AA0>jLQ,Zǥ% I7EebM,%ѮP∪5oQCYl()[hd-$6Mu14)mh6vɉp:]Ze4:}!iQloP0$;H8QfG15ơńI?!YɬfY?si0Svd-fqg	A\4,7l犱H""Ԉfcך]Nm"gXD	l^%ldx_G3gu|	NeDOd1VݕBbQkZaYSeqch#Db$ěqU+&˭;NE0UD_B ^,G	47 Qa>axO2|T56K#&d|xix[E i7`L {Z2%tڬ(*+	n`rW D2UZ*d'bN SE}<FY+.!se+`0d
倕t])HRդ5 _ZN02bգ
dQ#DL'ZZmRvӁ~v2ܖJ.͢[<9^4,78AqdF99AqCL>SNy\whd!wGGE iV:8),[LЂE"\jIⲤfEaVUbbךϸ1u"ϐY2]h:"-Ex,f1,AV2Nv3@[.ΩVH+AJiE$FYKWgΐCá!`$ZA`P:&0vN锱cepF{ٽ20@43 THE \E!Q	Θ
qEфl@nbG`QF:KeNnR#[:yeYԊEnr^fYESְuUrG$z=Dw5,u׏%47]1>e11ǚJpp
uhK^d\jB+XRKUT5KհT-Kձ?^RZ4ԡTjR-,RmZ:X2bnR,m>-կZjYjHK
?YR#,5Rc,5RZj4ԡԴR,5RHKͳK-TXjVTﲥVԚZOXsN(VtƙęOÙz8cjQ$ƤҺS0QF1PSF"^NғTxmGzs5
ZMDi+)3ҧp(j#،߶ 
6̯W:#tK{Hr
OV4-UQ!
`21hTfR&"49RY;'EKf\XD28u\AE\X],
і[wuP"JOeƟ?q5I"1uq8PB[%RYiҧr"EaVAR)
]U
Znxhޕfuqs96*UhR L;߁;pCYN'NޑĞ=|pڮcCᴪ9 鐂a]GS18sR:>+
O]3r9dYDtAI"D(	\Rǭ0YI9f*aFMnS)Ynq'q\EbӰR,261(]Lu'2JkdS5!/%X9`Hx*НJ%UjʙQ@urXa82"70n\kRL\Pomڈvy2N");-
wAGeU/6MG`zv<-D$R7L`$d(uԘjq9Є"jRMu_zLzYV:K8̉LJEn/UĮ`2Y~+тnU[SnZ<>ӡ}CqtGƠ~1?&1[̇TB-7T2	Y9 ZUrjU5FNpe
P$S@6	qi<DhJۨ	v97YfՅt@=T	(eF@FN+$ZȲu/+Sq9zp!I+갘Bi3
YRܦflbߢxIXWY;W}]4hdlΟ"4]h|iutl!A?Aֈ-V,:e#VC?!r
JiPd
Yւiޟ,S!RO܀v;WH5-FHF֮ 9TLY%fSzNHD:
ۏiD`EqH0cx2qG`8)sXy 
A0
9`͖0.cF0.`\,0L`\5`̚bƞx؛ R| sB|!"'͊!]q]2{;O]፽
]jޮZ]yv0ˑi&n-z5ݡ;?Kfowv۽vvN{{b0ff1χ/$oaoOӼ=۳z{No3d<o/Eɇ+2o*S)Uʍ*%P{4,%ͅ"jD,
],ՉB%T5?7a^"N|4^cV-CD= ^Zڀen2V4szeIw]Rݡ#7=fإWe
3>J~QW
cy1VfDn3jLUe,K`rÌ5|%32Y
9@
oIsPn=2eY,inΩ
,ZڈuK
v"PϜF-Y#JcV@W@ %dv')}Ri@ˇE _*hVʐ@K
(UT'Gfh&CR<R9iLuBJ<Ԓfc;Z$'	.Bi(d)D eB"W9-UݞwU>FԄיEE@j1ȪỶM,͙sbbgsȚ+TY6(?V _7Zf-^D%*'GqτO>'
}C2ϴYa9Ln
eHc-
񳒏<ײR8dD\n~8ĭYE4MBYM	gX˟8dTЮnUT=ʈZ*c&Uϵكh;LF~,GTHK$%CD(3
Ym> 3bS,HrpJ,j[nUߚ
uHUq4Jtz0|%XH80DGH@E K.[3gpfrV(wZZbZRf=^a=UNc{D;ƪ,yZ iV'div]a~<ggYJq138"GqL0ϲpz`qN07&KBq1|`\Y`9
k5s	sPA)eIZ,B{J΃3gLmXJ_X*RŪW"w,-ᩑԪc8.ˊ7ff
І(lI-+YS6̍:fu=s,*cFՏTibXͅpn\qǮ>ar,:
aJ<Ri,OɴQ, n=ϲ4Y6^a
B㚅6kJD]* LuF!CF98CAc	c),ǵO%|pr=J,)	wvT)
eiԠ͵Ml47:f̪I8!S5fE&>򣢏lܩ]eiNӅv=A,K%}JqqQƜAoH>w"s<R$l<9A̝fs<3/ǀd'YBer3K@#F!_yFy~~mO|X2Ge W`[!&QB9|}֔i@NcU,Ul@ZИiVN7˹
Fv	lV"̃GYZP\{}܃,U[L!clXuՇrù1&:ΐNWX*BB!;?ŒdNnb3b1ȢgRpAcydV u~1xgcTxdFqnw!o)!AyG|Pvr!ܣvcbQP
mb# elQ9ۙ9
eeW*kPZUu*èP
QHq.[?~P:L 2ЫvFٝ nRwCDG+qgn՘UHNtݜ	GV%x%cRq4!aþIx+Tu J-.deFm8aYJ僳jp6/!`.Kۗ:pP.&]d&b+Ѣqk"_'^uLx:GwZ'Q[ ׺bJ}ҖW)eKy6e[dhjgcC;tש">Y36P'ss[v*X X_nL-_sQ:^nvK/I$gp4?V,T{e͎0`~9Pg.ǳtۥ:S@[!4Y+)mpGa͸3MQzD4Cp֨3I<dIn$?'Hz2vqfu]H:bYdEHfcIy݇&c^ܒs!E
<Ie.4#*!.{bE6ᔑ֞S=pEz޼1.5]K2.^4`\ZF%GseI;^!pde$N-As9&>62GdS.l9%ps|	N84KvJb鯣M2'P.6Ȉ\Hk&ZN3mm
ړ;S
6.0~WQKR0"rQFyUpNn9'mN;69;}]Nb}d9}Dy'qYFQĿ9Q9[W6U<f+j
NPIIr)9i]Jf*eU]Ԙu[#;Kue;sQFUM@3NĽkíڥyNmvw{$dbX_9g&P`sCal|c1V۲{&'ݯS4
?qڡA~YfdK2e%p;غj
%/QtlbN\"k䥲CJzc9B	K2JU&_Mu
ҵVɪr\}QZnIN7))W(*&^ RywΦ$6Ҏ}}C }xk#rK)[2,_h.O&s}`&rv9ߊ|(ƷvI;|{l,rBwGe_M^23}KdY"}ͷ>} #
ևiəy_2>{[}cxo3O(?EkW-;4{#ywǯdX^޲oPwo~:$2>߲opyW-m<o ,s)m&9[2y'9
E%fMY[g@|yڷIߏ>o?&7-"g/VT`G}ɷߕbŻU?G9{3rqr~ʽ{͋8PK>ZXK    PK  C:U            +   org/bouncycastle/pqc/crypto/hqc/Utils.classoUgoq&dMB[{Ͷup
MR7MDJKzckԔ6Tr^H=Q!?#RA(տv<y>o޼ 0Xf6Z`8\0%8dhq6ⶶ8JPKǭjc?ΖXr.Ɲ*Rtq1K9s:U~1Y1e7&se8_^<Lˎ?(VF'],i*W6gvCw+Jqؒ&}}^%59A2²1t=6*e3{|4ٷ
\`/:vI,BNQ0Votj4<n@-TQB,bxW)[F^gYR(̹q]~(s&ִ_
p\Zpj/qay\^x8/^<p.x Q3gbzdĕLVSK,y^b.``ܲ|pw+@;HfǴ:Ɍ+_)X
UW;@?fF1``m0ۘH~A;NQ/HbR?D^W2$d<~YHFdGQ*j:_/	/*Ԛ<is94@em8
bDDdn1ōϵ쫊Ge}/"
(b(_虦H^\u,$n$>/9w@ >(Fŀ)9x59jLp3٨[vk2G2W
/V=4R$1%$tQ8ϰ,kuuT-($n JLAם27YCS4U1tom6ߦ/Ȧ|J/Z|ۄcL*k2LDPq Otp&|)9	>]&F.ZrjӚF	dbWK&K*ǠHqH-><6n͍'s!! XG:swXSɼUv]^p5	{0}斜~Ӻ?>Cn̬ۇKAqa)VY.dwml4Xk?ΰ^߄ӚuexY窡+$9.
Ut՚t.¬*q^vSN!SV6fݤݍ!N`:dӢx@X	:tp";Ϻq찈KIlV֎u"x4P[qt82PKJ}  	  PK
    D:U                org/bouncycastle/pqc/crypto/lms/PK  C:U            .   org/bouncycastle/pqc/crypto/lms/Composer.classTsZU.<!)%P$%M|!З$FC?*yG]u֥n%{
gܸн8s{DX{y|9O~|`@VB )?Q
~tfehè&C3eh6Òְ*ڴS-ZfAMB bӨ.̃|e}덆V/{Gjjbupi՚mk{E՝Kz2*CĺW,ӛͪe}S>,a2ACݶ33(iT[CK
Xffs9ݰ\(Ux
K1,'#(c\FHFXQ
SB)zlTdNVJ)A/+Rʍ0!Aa$DU
,Yg~ݼ//j^9s?"U^ Cc
.?p41xB<b]<>WXb
.^a>\_"r^5ZmamiZO+2yfgF]EG&{-og{yrHGA"4`<|Ew1:S:r@5~Ǝt..P8@ |1D)!b>xӝR!ɰၓghku~m|swm\OO"=AHO1؟ed̎
Uti'X?yf,uˁ@ҁNpsRRh\V)a}zDjL_L)=+Y6"oISVwCRDP}ui~o!&qI&>).fg	apZ?-O#]w=GDx|}py'Qy9\uGu̗iyG&c!&3Lر#(, +aGɈwHuɘg\) PKG  P	  PK  C:U            0   org/bouncycastle/pqc/crypto/lms/DigestUtil.classV[Sg~]`MC$M5-b5V*,ˊ.KU{\NL7ot~,Q.=?~-48%ഀQq7$8x#Ѭ9"YvYSu՚0i|qeq:93ۦfI#ju9Lժ.Y͆BR"XdCVj#vBv[]T#_ʡbt8Lk^g5MJbڬ)-9[lVCի&4U48ٚjܼ'թ}ujdTP+%9f4dZL=_,N-
n,эƺjZ|X:AS"7-#.a
Si+Ӡ`10_]vGUߑ]f[z@3Vo`7"UR%$=s0HƔisa]D2y\(ISNz.Df;ɼ s$9XH?~){m"#o5R)W\4{ˮu'r*LGEߐ8h'2v	sH
Xq"28E\d6sD3%F-8ODcED1X1s_0(2(1
Z 7032Y
O06y<
C| >w
=#EK/$5aJq>XWa:)D9/`?gq>[^a}[Ȭ3I$љD%Z_{0%-$Z!jhh[]܃%`rB]
+TbQOMɞ!1pO~@?FM
:D:,jzNQL6_HHc9!^vܽF)FH~?0Kܡ*TceƎEs^Z>.iI!oWιPK'߂  	  PK  C:U            B   org/bouncycastle/pqc/crypto/lms/HSS$PlaceholderLMSPrivateKey.classQJA=Sڶ
PZ>)=$A DO:l[~VOBAQ(C0˽s̹? Nc V-	l(l7m6'ePn}..'l칞>7azM/	Ww~e%PMu:kNM.	phN  @Q'Ȕܪ[ǥrcsUΖbֆB%׶fHKJ	y-
+HÖ
)&ۯsμC}IsEh8> a2feUWn>c#dހ)vsNx!EFHMR	1;֑CPK9`    PK  C:U            )   org/bouncycastle/pqc/crypto/lms/HSS.classX	tcHDqP KDj n`F.!ak@lh4%ݒMHtqB`Ih&Ҧ[}_ɒǜS#{gx o2$L,FF 4>в,vBkF?4
;3mEil=[ fՍ\o 6.޺7]\kܺ.G#4R)Ff_hG:
4N̞X(fft(o"
6胛5SmݴVX9#i<FfgM<<{q&$'IdTwannZgQYVS>@jQ0\tEd(3vh:Wӕtn,4F\HÏ\hA,o[,OwnאxU>
Q0ꪊ{Qli
&Tֺ<UxN]SSEbaEPK۫Z/v FDi{~IەL}Z2jeu%M;v1BM#E;ljUHubޞާHҾ:ZKeMEyG/玟d8K*7jR>m~\BvmlwWNVzZ9D")=nӺÃDC@놀e1<)D&VcUKɛ
IHz R)bYQY[eznj_gxPV_;i6NbQ8Cfn;?{a'VraȻf30\a9CaJ:gaj5k^p#:."z/?tn,W_/c+'	/yΤҘ&۪U~_ӃYfb7򇊥99@^EDMG&S]ظ x5vWׯeVLBTKoz[g 6-ϷSHn攋AK=S,#
(s͸bl.)*fr#-5ÙDEE9,p+֪xz*JLSLW3T
u*
dU,^7q>Pq%Up؄* *p&W!ܩb	F.]|7 ݭo㽷x-{U;T\|mxH86|P)C
>|$%O*؅qx?pQn|JA8|Q'GaS'8< rOsZV`qG0{jAz#]ǮUIͲ;}FdZC}Dcc?Qo&awj0ov(HH^lQd"0낧$~5NaKj|JT.Gp_>e~y^2{/OXǁa&:v)1SU7)Wsq껍,9R͡ÐgcK4]|اO̑c/W2˰uG$a.g)茡-M'N47,}*<Lh>;l˙㨂HٴQ-[Uyv1:=a92yH>LC`v@z_CHQ_EÙa=WwݼNаW_sF2Rv6?7Lե n}g'1JN2q;<՚"2àɠǴۧ*czs-;O'q'>?Qơ\3n[
(9kbSoW<gÌb<D8VVo傝(WCy0|DXm@ʽ_/kn>ÏbwO#.k1i].7@̣5)oao#C<Oܟ
<_S,b>bF+ƛs1Be[^'m>J}/aa{¾v/5U/e_AyT}?Jc}7LՇ&WɅo<) jN|BG0;ހH@Ʃ3
;JbC
Kf+`psX/aItK#PPK    PK  C:U            @   org/bouncycastle/pqc/crypto/lms/HSSKeyGenerationParameters.classR]kA=MIL4֏u[7|(FQ`Biqw⻏>((R@-~ps~y.p=@&Õ(A*oDK^xG:rd8
y(.CK%ձPa(B,R}3ɕ>b?
w_y
"Ű<-JƁ;n\
"2[rچDZAKBYW-"֭@y2M][=D̳~~a
wC
MDDDDDQ%/(bfUJ:vssBYzh{onQBK9Q"Nr	U)%9hH?Zq5o>T[gd"bɮѮOgKm	{ړ('T]g{8SdX0L4L3Qca\'[2yL&a~kb7M'PK'z    PK  C:U            9   org/bouncycastle/pqc/crypto/lms/HSSKeyPairGenerator.classSK`}-JfWӇ=AP =a4
Q=GEgj,7w9u0ۆi8;nr9 ;f(dSe3DZMSKYPESJDA[US픸zű]^.sGQ9Cz,.Vu^**5ŰEM]2ȘaGa>XYaԼ*B$GBX,W"a;y+i%[ak=іa[ZLT*=o٘ޯt4<#
`
Bw	AL1)LˈbV d0Cߞu'@tU{bsV%0c1N1th؅Ē׈c1IK;,\6xPKY	  _  PK  C:U            =   org/bouncycastle/pqc/crypto/lms/HSSPrivateKeyParameters.classYxSǕǺ2 ,Ǆ`C
PCiV%GyihIHH	y&Բ¶v7vWwnwY{νWdE6߷߂̙s̜s朑o`8mrI,`+WgZ4pR6ok
7uLSʶpc/Zm.ARHğ<WR'HY/;:!l[#іp`_*}He[{-N$҄+.I,ZB6vI=L?~FG}H>Շbq2H;:CmAn@AG4huQ+u:u^VHHqړ)EQ.099FqO3	LJZ> mHQ1w;Q=_#N"
/"zܒjcRV}*:
W B3תdd>"%8lczski!Dv!RyR@+7豘E7%cQrn[(`7F"qcK)GT92p|kmt+'[ukR7XV
Rb8#2YɁUQ.0-9LIԭ_7waPZu#Q[
aj][o[ml8Ia5K(X!=@>LS
O15|h&>
7F#{;$3j4,kTsTqξ
yph]]F
v.J؈eZ3bύX{VFk|>%YpeJUH&S7<Ty<"g)1t,lE%f3cz(.Yȍ0hŸk>fsSrVLIzQhC3F1wiʲf%R<7U5$6ܫ[0GLm %plXcFMlX㚧5
LBpGӢPm3R\ rjљGܺQݱתr{gxW8'M&[c1wN]p{$bUf,hvrI%:%}=s;,P0_$nN{B֡0*(&qKzu%%6HlI4IlxPb'$%Hl_bD@"(KhhI<$KM]",xX"*AKt+="9#-yiw"چЬ▲e5GR6>AMR65j>'飩5%]#-j>GTzc$*ܓic"(c+Wm.HK@g-sVe,؈71
M6.2.gg!>aa6=7؛@u.Bxăf\RC[+|6߸6v1o=9"#_F.ː2=OANYj3R
}ɟLߓ>w4s2{tν3iaڵpn6/n+9auة>C,x
ߜvOm͉MX~Șe]6+VQ*qe8+h0tsPVvԀ"56j&fNh<Fl-0˼c3?=uٽǎc
FYܞ'>b
c5ua4<ΰokX*j0|ޜP"H
w0ǰa1a!bsEg4܉
3PK=
w;㲆
\0a.]
=_װ1>O9/4|a>аjXjď4xiba>Lgf/4<Pbk
o5܍0a)~)~3?i
i޿k(jK<"gq1|pa@@qqg!Ts6'D.wxބ8%fx{/
veU$>xE8-VxUܫuQPe`FEXk>6ica\202bhPX̰ZY✘MD7D=:kTT%WqA0Lf0nT|KLU+PkU	_8J\t3(d5g0a6ÝKMПJ?ďG8HL	PK47CSRK7ot{N<E;䈳4Z	.(}K^)=~+|
m(<U+6xlb'!9bMqK
RGu:Ho!KRب-5xŁ^
N!SD[Om;8=]8Fgbs
|d[%l?j(f*w 4j8lUyμӘ⒴1
m>'nN(ArԉlsKř'MQ?gpV<L?}>\=ZM]%=хB8/^"ƞ$/EB$_	D6|d
u郔2WG WFiHD?|rg9DO<HϷ?):)WKmK?`|K?gHj24345hMo'F;3M.Wl+foLyQpZ[.%!3_g~di\JWP
f6wMmv)͸U9[LUtjKao_h&m+;.
$].k=:I##HXs=.{(
vYǛ6U\ZT\q)B5rFk*3HC\&qLi;*J)nxrᒌn`ApKǒx=iiLTSlIX;߫EplS|[O6OV8YA
K+hHI̋J<pWbMjWq6sy^;eqh6tiB\?M	e
zPX	*t<Ķ2#[S*OX·ԣ3OR_n
4Sc`i˝)sWnBtyug;g5݃?UM%E5=V;5k<]-iV;\	%xk<ޅ9Dp9%!f8/)Uvb+יTo;݄ ]*a8_>Bu2yWA8*piteO4*шЕO?^$[ɋZ[>~RL[7\S	VUʷŋ]Ҭcl;Ob#ϔ;R,6:k"[% 	,$s[KE'p\:IN{"WK&ҫn3G#W
Rw	~Qiz$?mM$yyY;?zY{)
JrM=VxC>,*9_l[1ץplfN?!FJ Mr
CArKٌ?=T(mlI5(ew۲\k
gr9諊ud_]9G,r?\9=]N^N4ؘl樑FC#(grpҢ4y{NsCSDaQHDN

&˙^)v05{1ƄfcB<\oV˂Z	u5AYW^݃?6SMFa.2ApU#%kWQz#;iC4q]^<ۓiaS+نb'
cJ-h٩"o`n~|M"@'	UM ?̡a
OsrD\\(?s8lU Qi,*wRL4SvW_1JvO*zYS+W\Kބx<TSE>y(/Nt)9|EiH1܋?N^o]	/>	qɷmmi_[筷Ol7_U8zI#PKPԡ  i+  PK  C:U            <   org/bouncycastle/pqc/crypto/lms/HSSPublicKeyParameters.classWi{U~a(eJEMӆ ,M0PCNB2EEaZ?_I4")Ӽ.{{Ͻs{W ,NLtBB6mdWNsvX5̘ZD%hg0zi3R{#H;aŽFWñwlN+ɍHfmOǌ	4VMBK	3nȋfzM9"F<KxW"*5Lꦞ,VMK?dnRAgT"#HCxS'`,͌czA	YP"YJiQRS0PYB$TZO!HW;ycqiJ&H[a+k]M7kv̔u"zBݹQC3ހaQhJF]iVߡaM{5_fQo$33?dcT,UWƓeR޶ZR-=IaX(u	"xe;؞'ޓO3;+ABi+fpfkb$;#
x+?t|x.H/^LMN6
z0fu&P+0O`C<",
,xT`b%KIXQ̕8
t3pG9+S\s4Wp\YM;KH(/\OŞErqƤ-c17wh2	/,j#	
E$}]ltט	_XR>>Ğ**#JۚGqWD^eWQ3l1Nq庯(BFtwpc:<*jV08!0cpA0lSOx ULA*'v]*VixFE#U1YNѡAΰGD:ULCLj>`CLM8
xQA3R
%6yd8û
2+*4p
&[+#xCqP$^`x
x\ms>.iZ~3$lB	qIE#L"9ƉAߩ74JIVK/ KlkdGNh飶3I{ Bhi9]ӃRpA44X7󡺿!lkjzasIy 7uac[?>,8/s2YLn$fD@@--@=H\\4	I[y?sL")t/Xoo}it82w98^ʪ=E:Giob;#:mڛb<dQ.$ʁj%$ƊNwݍUCҹm||6dl|clDLJqsQymVVxl|F"'"w,a7ȕ2|g"ԗ	eT.K%A
<(H|s$VB2fl\1rK=\CYa۸ *ʲJ1O>4G[fC.oFMLRYK"E'\GXKPKHwd  v  PK  C:U            2   org/bouncycastle/pqc/crypto/lms/HSSSignature.classVSW-I\X
VCFQJ>\6DMnT'8:	S~3?3ֿuTz&*@sνss_=%jp<գf ,
X8KDC+?16j{B}}шHSȍ0JF5!8z̬+	C3Tb86
iaD55 Q"
j#
a*zeqpL&hXrɬBQ=i!#1M~8*4Pf]2ILʨ9!Th64/ոgnf5EF+Ihi
>S1E,Uf.?kEHVL,ɑD29I3<,?WR@ U.҄ *ߝE>h_ߢ:_EOQhxBI(&U6c6KXj-3ć4-+uXl,Yh2EOm4̄"jQ+Qu"El]"v)%A[G՞W+:U<AbjYh5뤒JWfmk8-`k0.%n20,匼dڮ$7>WpMW~|]Ԋ=gOr V&քLw|WcO^zz}䃪HyxîڛemANx2v?$U1aQDS2qTFiq=26!$czel3LQ>89;R?KLN3CЄIhZ0" VdXBKm09D$^Ё3LL2ȳ$! by	K80}d^kFE>R'<`9k:laHM匠	NⅤ
F(x;5`tnWY-@?GtN4$7pIg}:q` n;F9JoJ4)|Bχi|w.ܜgZI9U7EMi`(N#q!K!oB0lujmZ<RZ<kl996ƛB
oS[izhi$:6+Aݿ(fsde*Ddp9,`c~zRu2'5aLXpӋ'򨓓Yu%Q955V=^v{>E	m
=aPBKu83^&Qk܀kMӯY}F%Ϣ>R~h	mb*D2.y
 ojƍSkTW3Ι܀Xq351jP0|'h*#f3^F8)\pP,Zx+퍭O#Vɤp }wr>@TD7B?PKf    PK  C:U            /   org/bouncycastle/pqc/crypto/lms/HSSSigner.classT[OQl;
J
T%)1c]XvKO$R$?8gP)!dfΜ3o Fm?0T1Ofϐ s\3edhͭCs[\0Җ h 
bV,|4FlVKdh5Ȩ:]#c1x^Sj4yZ3.D4G%wNP箄Vz!g)03NZMfr׵kr~݌ZHD]keեDauاy~]s=r'0VIf.iH%qKŚ%J%:a;9m"CwҒ&`
fLVt>w7$4Ih"UBv	7$tHpa2~N3LT[\JmC^qYC[\EaN	HU<D-?=ӱp%;4솮Mx.*G?|
QЀn!RPU
d<RЃucDQALŔw*&qOя'2Bb^(tzzWppUSVIdFͤ隁#D >*.NSZ5ήhC}D@?W<تFle/<^}^9A	6𼥪*`߽Zԥ`7TNG( veXZJym PK}n    PK  C:U            7   org/bouncycastle/pqc/crypto/lms/LMOtsParameters$1.classn@%nK@S v$UV*aQj.+w>\< :5BJWwzh@o*~af7Uc}H%LYHWıԺl6OęP	,F4i	ϋ奊cM&[|`rju{F8F5aNE{sPm~o3o38g"+e遲f8fO4/(vL]xJ/aM>t!öc$D\pǊge-0wCjxX"YYʪy<u'.\,9Cu??{6,שJc/TJZj4襆|>2$a/?
P?X>7`c6,1lRA@Z%6
AK͖'fPK>8H  A  PK  C:U            5   org/bouncycastle/pqc/crypto/lms/LMOtsParameters.classU]sT=7-QT@>Jb*;MJ !Pl
j;%!%|LFU*IN;3<vek2X3>{wѕ`
LfsFɭt@bĦ
:-j5fQ
;	g8/#[]l,zlny'm*0ɴ]ֽ('Y?Vo
cKw,n`7lO@9U<ktMG߱u"x5[;Y~غEm^1{͇MjQ@Ji_kI;hc_7w6@q̌"5G]&=۷cN>ro=)ڀA龎;ӛ$JǖӱO&0@.H9	$țW)Fۋ_x-sn]tf9tp͍7zqZc-;vWC2fW.I\q"to1\b00!cE^ݐ4|
e`x}M->b1C)k$,iroGy
9|JԪ.\?1}x׵c+LcCk&p|s<Eh/m&<1O45iA,QhBRߒXdH*}EJk8]좢ĺĻ0D6'u+ЯWE
W@\
;?iy$}'Ցt%Gw#zj$mDiw	^H0<Euw|'7VJM/ 0,_sƔLL)ERO)?=&J&'%*DL$$5c㰤dryRգsO3T
alPKfLi  e  PK  C:U            5   org/bouncycastle/pqc/crypto/lms/LMOtsPrivateKey.classUiS`~-'jRc/-/'m_;qJIpG[3Ru'wۈWB;}v{Mǧ &$[1[PBL)01Yъ3OZuk$bR#Ӟg7$(9/%DEXfW2Srs*@9F"CdY˂vw%%b9UV=1[wl/mfUPz.W4UR*jIQʋQ+Aݨ-FS`le[,Fq~ddmшPPnOxqyS	K/hȾn	ͺg5s<fǈW~dqHFBa	65%6cg;4+
g!;)ګ⻚Ԭ(fCt
]4N
m9ڶ3fq3vᦻd6yw-zzXj|J&6mWUt	x*BV!c}G臤]*v[1TgPW#*8^qZNS"x/`8pᢂ5.1L2*MgpôaL1\azEP	I0e7(uբZza>&'zX_-=S]ü~l
Y=[{?}RVyd,D,C&rq{2N|"1t3T"]ǝwa2^E4Kw~Q.Eb7]lMˣ/g_jc/u_um{!'PKY  |  PK  C:U            4   org/bouncycastle/pqc/crypto/lms/LMOtsPublicKey.classV_W=	QKnI4X+!)!hѶaaJ7KW/-vڅJ⯶_w&$PBY}wy{}3?7~7P\016皃>vAMIf$(գv&E_ASQdi{'Jh0+z̨+ZMKDuQE8*b$b2YN)ͶETA$RJC4&)L$RwXa͖ͤГUdrjk4+F*Z{ҥjBj1ϲHXGlu,9Pјח+E@Vr +rgnhy*ƍhLo͏=|45hHKՍqAcA-԰ۓizǧ[g_g"vRiEʈj^3A:g,Rz'$
Mƻp'nļZW`6qt?Nl;"
jע&	zdͭ) xuv%2貼PDΩzj&2ǚ]視&{GF/QcJzրN8"tES5Fki LJDq5"\""<"֊X'+5"jEAFD<(&8îëj
?:Z||gp߼'g:
DI5P[=UDȟMۺ&Jgk!a]HgmNqkikůwL&/`?
mO񤃾V-t,$?\sG|hIA'DsBժErWZP!ozF9lF[P*e2$/c)d,gXb`1a(Q0"D˸OMC82␌8,c61Gئ(Gjtp*^!#)c2{Jc3tK3|H1<?NJhKv`8CݬƋ0+<&b8:xOB3Iޔho1/=	{G
ëI؇%g}IHj(J|F!ڣVبFt0
=ʔtnLfI["I.r
3{]!s-YWm}W?\N9B/p;Bp~Chƾ~ؗGhfݓF־ݝMVU6r ,
cIv{68_(l
a\3
X>nU[4ߏ4AGHۆ!]i|Ɨ%r )$NהF{/"tE"vAD$d vZm4e'/C8[JI>sǬyYIgfUʺO1Ɉ}v Ul6"U%؋txLl]<d;P~Ǵ[H9Y>F+Y8[T%B9W洇FE$Xkr|zmwLKGrQi^<E;UT?QkC7i|˜i|lGZWN\z-3>afUHSAfܞab3g6Dwm*PKdB\  %  PK  C:U            4   org/bouncycastle/pqc/crypto/lms/LMOtsSignature.classU[WWNHr8 V)P{I  "T@6m [ad&N&jw|o}%U\}񡿩=!@[ g_߹~J"ܜpRn>? `',IhZ ؛I1(ؠ,Ӧ'ثkeMYMdM;gP1dQиL
XZ,

,ݞ5RV,(Y:eprö3Q$d.8njiA'pvE -qBq1jy=kuӶѺ1g55+O~'!uzECw˳{&*R̪<s}U1r6^+]vR;o]˹^SȺv⃥
Mu~Zw1NYwh[z[jibD&*I@%YX&,b-%h]oۃ9Z	ESOK4J4I<#qDY$xAED@{r
'9=|wwg9ѧb碇^cѥ~7Yy$PpbW6&c챝,kkZwxI7DlC׮eϦ2fV=**hchiO C=CC!
*-"PjT Ψh;U*xE^$TkH؃Q0V>ex
G{
:18fta-aFA7.2\RpUЃi}^3L0cSh4.sPzG.2~iDN&
IT٤Zדm&&'YYHt	v$Le	/J愢(Zp'Ew,E\^Wh
%VCle[V7,ko_@HcjG(]F.]7#T-{ڹ*J\T{j󵢈#E\/eQ<=)aS#*)>. $^z@C't,?o=^]㲆 ܁'v6Ln枧+HNG?#M,TQs׈k?!Pq;J{13ߧ$o%)&%7ttۏU/j6p:i#/M7Ms"^.S֋9ͭQޱZo\'z_)W*3AKs PK3  	  PK  C:U            )   org/bouncycastle/pqc/crypto/lms/LMS.classVWwL2aRM׆ F\b\*,jP!̄vZkkj{NCԇKSz@>!-].ߧ lonVY<ʁV6rpdocq.2c	l!3k=h˝݇V\CSwddRG9
jC*hU+:)ՔbaC̶#Ԕ94yŐS1l"'$jXܺKnP߆sf	A%8[>H-!OdU6TEuAů+_u5
Xz@-C5ij	zej`QLiXcZӣ,.>NFx&acݠkywሢG:Q3үu$R1_"GU$54Lg#3$}UԿ87bnA
!_q*afO"7)P64X9wuSV+2HF+5RW
Wfj:t]0SlmknfۨlPMi嘞!P*.lIO@6"NVl[~|lDޅiW^
m&kң:Cr*Gi4SZVaW^0o>n7xCvho[0o?Gz[N	)l.}9la/ykKm@1o^omMot֭Q upփϋfgdz%Sgbvol~iGަ]RQO4;Ӟ|@KnmxêzFgk5gl`$xP$>T2(C=%Ϡ8%gP$<u@'SP!	ᰄIXn	qTQ	q\Ze蕰'$<%'%T@aQ{Nhd09MMDgVa0  `p"I"ڠ3H2x"dfOF3^1q O1 C+A#N18ˀ?D>Ji2
SG=M{1=M6!SPJR[y"Jj	$p^$UN~rIo\Pʮ{ᆋd~ʗ7v{{&3W˹`kxOIUpzq|"+!ո]\V/:s,'#tT;2f\ͅGeqSpE$~	|>	eV5ɏ8D$ga5,쬩>ԞB/
RKÉR;_;j2YKY	*謞hd@?{c)ụBO##L@w.eFt\OsJ*2/&#N23::cYQՑ9<Wоy
[n@P]A2|,&O<$mZsMbFnJ PK@    PK  C:U            0   org/bouncycastle/pqc/crypto/lms/LMSContext.classURQ=7hDTpAm2Qo(	 Ѹ<LѐęUXe=K*ysӷL~e<ɜkiQ(95û1u5cu۬δ
;[ZY+mt۩Rdm4znŢYBsmظEU2Y1l9WÙVX$0Y_4ӶByE
Fwb\%z[yN2k$DFOWZ%(+&uoG@c#p6ol*ZmP(nou vު4lyѷtl6<:[T0#m8upKKǔW{ssϜ@je)aٔ3&{5uXfBۗh{LW3u?OṺZ}o*0ԝA\u#:Kj>QɧqJ804HIL$$$9.xHF:\gsM6fs N.66Y6lW#[/H%R:ד,דxד`SC|["O*'t1Ts-HsxyMf3W|k!
8cL!W0SD 	}%G/u'i"?>'L.nQϘ7
2FHI7|ދ=FqGx)ޏK=A^0#'NW2t|~?ϡcYc~!ja; ӉtC?|bh@a҃	*ҋ[UALPKTT    PK  C:U            ;   org/bouncycastle/pqc/crypto/lms/LMSContextBasedSigner.classAXONT׸Yfj
ĮD$|@fÖ<Ogqf<_@\&ڐ?Y~ʑf=%&1Z3ɔ͎UdVMv2ᨤ׃dwm`*ЍC^O>^rH
!%ԁ\4Z(PK'߫   )  PK  C:U            =   org/bouncycastle/pqc/crypto/lms/LMSContextBasedVerifier.class1@DgE;)&vb,L,Z/..+Yx eVKf~<,0eJf6	LH*h:46ܴj]T])VPyۏeͧ=5}lx&O<<?Qw!zyGУPKHN      PK  C:U            2   org/bouncycastle/pqc/crypto/lms/LMSException.classN0?7i҆
X46b+SQnnBPC
},H< 0	}Cc43XL^OKeE$C/Փ7Xiĳǐ&+OV|z=0lhy"3w.WbFoy9y{hlB%8!=>yn#%6M_e8x$۵<yKߖ?)on0t ?	JmѝZ}h/G8|PKSr	    PK  C:U            @   org/bouncycastle/pqc/crypto/lms/LMSKeyGenerationParameters.classJ@-mLm,.IʊR"CR'!o(.| Jłx	?|ż= AeϏ|O,i*)"O]=NdPB&a2i,=z8KT (DHd")?oRz:?09W~(0lZ#ذWDT*ég,al'm;'	NB,`Pb
5,iDt6uAkگUAk~ڭhVvоfP=ڷ2PKϱ*  |  PK  C:U            9   org/bouncycastle/pqc/crypto/lms/LMSKeyPairGenerator.classmOPmtE8EaV&[11,v}?&:k?Pdm{~{ï~ )C xov隽0:7ݪR_0vyVUL5ѧ"i]ԛJ<CWciU
R*u]u,vL5G{Ե9.fC]e7ݶmϬnB05uCkr$6Vo|
mlY2!Ê>W3leA{Ycoj1Kڎ"@0%`Z@T.
$`X>{
DyACrШX{1٩Tlk`
+ xWi wI=jotNmpFI!>|Dl9	(! &<&$X0[¸-!;uLBHDpIsHydJ{N"ap,9zK59v:i3x	pó$S?19$&5
1Df3r=<.GTGT|Hgb-X'V?PK*N  L  PK  C:U            6   org/bouncycastle/pqc/crypto/lms/LMSKeyParameters.classe1KAߞ筞QbglB;TRH"6!ݞ,+
	͛o_O HzOW<s[x!O)+&4{sS7:ZW	9?Uc7Lct)::Ukˠ.CS5jE'K\b~ق",!hs$*IHVȱɩ9 :@? A>fn5;WHyOa]PK   =  PK  C:U            3   org/bouncycastle/pqc/crypto/lms/LMSParameters.classNMK@51mZ[ExZP}BEG/=y3{x}p]v0	C;jx݌E&⊏ ݩx<ITO6Y'}}Hٝl>S)/T2u4tl0y*gẻcrrhۜ&6M0M`[,Vb9JU50P!GFq_,0p?x4[G3	PKe    PK  C:U            F   org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters$CacheKey.classQ;OA;<8Qh,0X!h,u#ybggCc10s6<27|yXjFA/6C3w.#BH6*!rxqkx!wO
C_s}="`3]b$
ihxsVy }~)S37\$C9Zt°WlKL"X:f5AK)t]7..|pĻ:$ٰyz$E
-b`/>! D8Ʉ< V~Dn<
ִZ-
7XDw0{XGIˤg-q2uX
"ka4 PKn#j  \  PK  C:U            =   org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters.classX	X\u/Ih10%+hd,,HA8	f W,n,nݴrvE!utI֍k[j7 #i>{ιo;ԣl A<x܃S(f>"Ml{"Vq.6Yp4vsuQ(ƌhT(J^#6ɍ[l!12b(HNQ2%4rqɔ'0NIa#VX6bx*0b$f@iIZ8><b#1Qd.
1)s HF@t8ID3RfIX*aS'q{ՠ3$ljR$Tӓ
+Φ$[Fvh"aRŜ4Hm/]"S}p|m.M-6`)XdʈSQL.3sDJ:T~{/,N2ưIޤM9?Ot1mFFn@6j{ޓi%psSŚ!s`xϐjFba5=BD.J?jZaMu16HVVW#)FDl6-lԈ
6Eݓ	f,!Jq/(VSϚ2"Y`&ҖX+C,Yf͎"цcDl~i?}Th:"G^X21@a]<1OI5#)ۗ
00MYP{-VZj0 x=Rۜ^z9Op}.myP99b$IqwK|4#ۅ;`w hMH]PY4sZTn6](ko>B:p9{."$1oNEkI.D,0l#Y.d|D冕h3r?5c!
&/ި+QԐ<n&LSSVv֦d*!ۭ4&u+L
$LmFrRɀ5$J
Uhhp4kЩ᠆5<ᐆ4OC#z5<pTCCC
c(ywc'~GKI]lӒϵ3BZ{R%did$[we7VԶ縭wKw%y>Z2
+m_|;wv/&wfE/%+ΝN(mF2aOWV[m cacmQnʇV>2*4o6θ<YqwcRjo_KTJ`e&9RW}paK>6f-v淓9w1'sz]M:A{!G9c]u8|X̶)We\:%eڄa}z
`_IV	qPW/9e<_w7\2$)q]yf|77-/gF=|cE1rXWV8:EnQ|Bc~R{i)Q:	)p@>@9Jtl/I`r,ӱuQ*VHobZֱkdu3::6s:v⼎gtTgu܁q?ctu sL؍t܍]xU.L?fŪ/؃KBwY|IY+BwEG#~Iz,|UG3k:bb~]7.%#'^
?O?ˋ33/JIScw/Ɵ
Wċ#swU˼"(%VQF~Cm+A
4+xMPn/sS1	%?U?yq'*XSď6z3Jׯ		/&^֕2- i+tn	`aJj(V$Zv;L3ʨ` /r|YgYsqk\ YǶ3(uGP5	M@04I6sͨG&UE=ʃ"k:TeY|gZ1*uS<^,G 

utQc~A(}Y8Y)9GL[i1(VфBQ]M$OX,o,SVs	O'?N'7òY<ٳ`Z/Čz_\⋞fW56\"2s0i3X?'zf4a{J5:L2=u>eb'T_ʊ|i.:;U,NS{h)Vխu|UtW|ga9̨>NlECSvˊ͗x&aJECGSji86ͱ) N
s,O\uhtsi
cc-/>gmY<I?oZ2Qw%$(2y4f<Q|T#;ѹV/Eڀ\RZ$%v|a)4&'ux{{v4
.Xu_S5jQSV*sE]g<>Nrso\"ȧM*Q02#QgtGӎ1hlb-)=!alMMl
iUwOc<h*:YG+s4QJu48u]h;EtTH3f4WetY呈\
:J>:]hv\T,UTg=#>cٟ^Y^,{dWXx;rR(|C	A-<yyrۜ*ֳ?'GeU=;!O!Z7
|ӀFڗܗV
Qxl(EU/u^D	ϣdTMNjo>+PcM
ǸU>R$Y鑜.j2
Y'GdNk/Cg^H-~Vrm&^Mc֡]T[Ԝf"JMڐm}CT򜙽D+-QW푕gڽ^.WQ=n!
+}#>D]5얎OET=*#W.hPbHI0!sN>o^WY/Z퐘i <=Yygxk	YWmϣ<!k&~	i_ʔĚ!ٔHSʰ\[J^H\詄sRٹj4p^	033=_&oWyebRsCK$A`Ψ;va*]=*%jZp/K2miD^3W:+N{G]T
e%)ZRb3Էx)5yA+~	+ PK*  "  PK  C:U            <   org/bouncycastle/pqc/crypto/lms/LMSPublicKeyParameters.classWf*-GS8u$ksSq'K$w
0n(qmqk
Ѭ}ߌ`PG)|><+?v#uQ<?=i
{N09γp \Zaz"
|ޢQtHih++DrY3FDK;peRG9-UUtbeŲv`(Nv(ꦡy&*f:UӰp%VjirAp(hf4եufI9bDjhMhW0qWW)vǛK)ifٞ^ֳj|5ZQcj;]gAi
5a)7/2uu=:H
>QRE35@,e,m+NΡ\Y_8"ښ$}YU+;Eh6^ru(Һ*TJ4n\s(
OiSebE0}YH\ШeީDRRuT97q*͊Z|ZMX1SzN
zMESϦ.`aޠ5h艫 '`g -[9YœE y4_DFd ÆT(ߒӽ̢{XH[YLgkRɛsb'-15;wێ1V].iamn
r-ԜFB%GuZxtc>7m<di'zr1C7ae6ۡGpI
).b-"&b"q]"v#b}"xW1 bPu"ؚY9fQf}<]]E
^l]<OE^.\^8IA/rOJ3?Wc=@<˫#HXvWmtb llh[iTk[-`D(ܢLK҆f}+Kk?@Y^Ԫ[X}
ZdEwkzݙYqo
Xvm;1*U(x1B2z}fhEXz0Bd(Zd2: xC+Nɸw]F7J2^CF.e܈2:ax)l^ U*2^32x^/yx],}#Ûd܄7؀xUx+Z`x'9	7rxÇ>"apJ8OH G%^3|N>>)	J
3|Ek	ŗ%(xa|IXi1L0|aRfxQ	p%gx
Bȫwdc-@QMRj(Y&)<'z1HNB+4?Mc*ZdB&D RqDO@qni窘ٻaY<uc{!ftMV;b]FsPɾpWh`gǱS!y;L3kY*$*撓#qWdLc
_HqrGG>?KBJT*1iCøh3pKp?"/8"BL&hA˔џqd@
7bf~1J8;0I7t,,(^(qZA|&cHp9~64{) Ow%GܞrH:
?ON6d
uxjQ
DGMP5PTnr*{Tҍ|""A'մ}n8}N&E.m߸a4.pڄ>9N6L{
wўY<y}|}MU]vAorBʅzsOP[/'sMt#P[[`"ר0q.e7UOJG39ܖsˑί|&$ u=;}~
#PK@!@    PK  C:U            2   org/bouncycastle/pqc/crypto/lms/LMSSignature.classV_Suvx "dfchjD.#WC4B<Әvfݵ{ZYS9g~׿`N@ob YE{a 4XoJ4ؗk&Mj\ڠ2j%Z$
U5J(˼9Z"$s~AH5Z4%NK>=Hr:F#qCуlHtHH SUC	(YEb]h8EHdC1ŵrV#fʲ)S~=0:
؜*HR;|jG܅M!_Ԑ5BAU7nW;&\P3.t
"+}u0LjBHB&JTOt(	ƒQ#{sT틛ྻAu
á6
XfafΌqen
jU{Ȣc#pZWm	MKf~zP`D'
K(!q"C"vxPSDjn5"v	X]dQf3c
|ӗobgU`~[:K[uB&go=JJJOI}#JnjUj<UZԮ e}ݻ"ݷ엛UU/k]9]5O78=yiꖱ2@_n<*cdlaa|dd2p 1(Ab21؏Nkr<%=2Cx$=Se8Š0I& .a	`HhsQ!	y{q^ЌZp!pysZU+01,Q0*
A~!)"F^܋T:
%x]vK
ER+LJ!ZHzToiy;)w0⪙¨6 ӊHd#< ~oᛤw=Zkg63~&k?`-^fueR;5y[xYz5ei|gu|AqaogE{)鞬sded0ud0oHqriQHW
4޺M	p	)3'Q(CD UDH߅
"|i2#XԔ=0ˬ7i#zӴgzs4sU߄6AY`/Rfo?QMow}n_cmF	FRz!M0j)o4Ks
YaࣉC`'(.TpfiGcPQ>`űe06[,o/Ӊ/?[[>:NHZ	B-Y#OzHp\@>RԊJ
x)|Ǔ/Ԋ iTotLf[dhV|/pÖ PKD6    PK  C:U            5   org/bouncycastle/pqc/crypto/lms/LMSSignedPubKey.classT[OQNuK)E[lDD%`x]6eqgH5>07unK,493s͜g xV2\e,C4o->CX
2]q\B̝ndzs)9_6
Rd,׊e<2v*uVMݜH-Y40+:|KRq4<ũS+uCw=*;fTmWU&ZX\9"Wm3Bmh-ϡgٚ?6hSXxj1KDI"Dt3L4p+GRB)ߊQ
_t	M[0FY=UTHk'e\fUFdG8!eH\0 
Wd*#k11ȅ"*C."˅ňKpbXBoS|01JGOC|Ӎgz1gb zp!trz\IG/&KQDtB[jvcjn-f`4#Qcmx:ol¬7{
giF$"/}nr
]H9OQ\o]$!bb;tuK3_g	=%B!Cf\y|Gj3@nB|zI#
Q}*J6vqPhR1TKV=%PPKW+    PK  C:U            /   org/bouncycastle/pqc/crypto/lms/LMSSigner.classT[OQN)li;
B۶rZixnuaٮ-?_H!(㜥Jw3s|3gq,0U%D6MF$H\'՜a	ms+ i#g1tT/5p`Kr"a\+[)^(h9Z6CצF^M,׹yfԄif]
Se~l:AҮcXx0a䝜-kNWudy8~]P4dVCI/ҪhNab4:3W3K6JbnEK˘<Y..6\f&6jvc)LBv	:%tI#ᒄ^	}va.kIR(Zӌ)뵱*q
-wЅi@5JRxQyZ@&vJI'qQdтH`LUF3f(' 0DSA\xGdR n`V n 34Zh[)~%hpG/EC'2#'=G4Axctw!VVȭx_Fc?ps=,z/<XD4PX]&~x9u!$VCbe,w/hՠ=$x!vjdF:SPK    PK  C:U            7   org/bouncycastle/pqc/crypto/lms/LMSigParameters$1.classn@%nr>)NhRTHDrT$$@D[wrǂx(l&^?&^0NRx&Jcu+C8<*=ed"&[}1bXN@Ew@pܚ2yTY,$}y\L)G}zw'B3t|աJG.:Xp9L~ќD&p,c=.Y Htcӟ/1g46Ei5VV\+\ Uup7X-+ܱr=WE]|b{!KoT:UI_a~^&!e7aF'U#s7<>Gp'|G#
Mz'UlT`Â5<#S6\s]2XPK2ʹ    PK  C:U            5   org/bouncycastle/pqc/crypto/lms/LMSigParameters.classTkO`~^+uu6ne\&Rb'R2JJ7׎	*?xnM5s<99~0q!o.2t/F,ں[$̢9@) kfrf}d6~dFY+UOʔR iv=97<ԏuٮQ4*;4thGU]Rz!d9Lr oEε v&ig&I;b*EuT'yq-C;ڦvF`خoRjSHc^WNnIcL~5(D
̗+U*x9|nmǺU5rBn0"`!6Tu{[DJ1]|.Rځ4>$LG5hNfc6v|'#S6S21.1LH¡8rޔ?T?bΏ0f8r390	hRR=x VKz?eͶʪ;0݀DES%
*=_u;Y7߁(BSCm&+RKEh5I1\]]l+s,α#bEw-&y@W+V>垖RC[
Yr'œ<JrY97B۩0*Etz\vʸxWȜAҭ+RzQQQ57'jA_bb36Ƹ=2FW_PKJ]    PK  C:U            ,   org/bouncycastle/pqc/crypto/lms/LM_OTS.classVy|ZiHL!Q9lm2wYK$%GZR)IJ4{6%m#LHI+mz&i^iz};+L-̛v{野J+8D,\-@laEȓhR9[m֗gYOק2)sMz:ۣ7X:n_ٳ4Y&cMVl0΅k{n\$Fz:ڻt®坑(9D
S;60~󀞦z.Ʋtty75CLg _,g覱/fLc)@6#jKg29T0UR7S̒LGڝPJy<&[[
;R(=N:($;iδ
:h4@`
=Tzө2c6VN.{z=4mѷ-i=hY޻ňgtZʮɚ1r՞~mz:?ktl M:+Bxa6hRc
ٖR%19V2-mFP1W)bExTrqU{X2[h6s ø-s
1߾՘WueB/ߣgyw
t幪*ts(JՁ(c/c[UJV
z&P
Dne!md͆>݌%r
s=ٜٝ]Jg)rʛ9̿8ٵ`nSzWLe0At	3$\'!,^)aEKh.a$(!"ae:$tJ^5qN=fZ~T&o̼ѮyvHܠnN9ȹg+%j.^X^JFβyG?OӢ|"s#uDW guGqNT#:,R}ڗl{
due9*u	8*9]Q㕚|1/y vGPY]c7{yeĪ-`:V񒟘.M&^T>D(2zhԱI+*W~>n6&sfI`j43ea>5

fBTp)C!0ZT!
!)x
Vã`6dj\KȦF(Xm
qzlg[45M
fayMAA.g+Sp%(h
^;\+ w)oPЊ7\*o	0|TGd.0|3ǣ2a?;fx'w3<p2cxd$^Q)dldl2Aa>edp?!O0|RFcx?Ç>%q3>P^cb}".KK,Λz\HꍚIکwiGIܔ:LS$`
~L*I\!d_30B^GZ!)gފBK4( <Lr"$3>wz]3knWE13rx5_uP];cۊ1x*$>NGȥfIVRa_%y~q5jF%		@?]+M(Y?Cm1$UꛎǇs!CpR d0զQ_v7S5Cs?(y*<(^#Cv]Sh|57]s;
yE:B!$5&TAB
$a^vRLS5&94>$Gq5{gHThuaVm)셗JaWd
cSC98R8	pte<Լ*qo6ܥpiShtk0IF/®k cgСTg)xFbԜot*0-aq7ZVZtI;͔
r= R`5n2^Ӥa.$D}~MIuD/0U,V0l8pjYyqHG}!u:;fqZަeOf(JR{Ş!.جIGɄKΗ}KE"EٜIeY")"1Ej\P`ƴRCi*SJs| ǰed~Hy
_H-^EShP绚$2eWd\'~|[ŤZoT)͓a9䴚)7'CRILCu63e<<S=eΰH{
aX&A7E5N'jm<.-g[^Quq3~T
s_U5ͶIr&I:durh:EcyhS>ke~EMؑ'^IOR{򏲭Ә-!auM'ᔐ},!UV&M;|RddPK$$F
  
  PK  C:U            .   org/bouncycastle/pqc/crypto/lms/LmsUtils.class_OPƟunaTsVfD%LMWgvg%~	7@/MPƷ[q\>ms~v`$fZ1om7U{h.vma3Cwmגi	!Klmk;bX9p2^gϳ])gGIsrcePta 4(u=YꈒK	90y a'=mls`LGuhoMm+2}k*r**fx4b۵biaI"OB9	]y=x5<I3F,tXg0%,Se1nPSr
K4q7,;x6m[r}^#P2GbxI.OHT$p3zC`T,?}>&ڑg\JQ2殠UF!qjRHSU}ĭَ^D;
og	151GT|!V*dPKy\)  I  PK  C:U            0   org/bouncycastle/pqc/crypto/lms/SeedDerive.classR]O`~
6FRVPZ`~`a21fXK7B'k/ qitC %99s޷?;0$x"Ⲁ@<aG96Lkw\c:5kXD@=>.5H颡kCsRM]s.7kt0ŹyQ.U~Eӷm{jT-=3MMW͹Y»Vv% ,zy(ZѦ,TN)
;Fm'yN]dBΆ8j$KfΦdٶlTɦjvEтzAH7#;1TK7Y?,\q!":!/ZDt (*Bّ6AAfPF£0Sa1p>CR/w%Z05H0Lk	!eu8ג>>^׆!8<E]1fe)y<V!'jd>M/^&Z4VF{ץFF5w}Kw_N7^)'T0]SN3?~2xdD<:GΧSwOJ9?Vw,BX[[,$+1U(G#<^}BD^%7E PK͋    PK
    D:U            $   org/bouncycastle/pqc/crypto/newhope/PK  C:U            2   org/bouncycastle/pqc/crypto/newhope/ChaCha20.classQAO0}pLE!Oh<@<,	lns,/HGہzh{ڗ
1	JMP4r(14 &k$yjVpJ8du^`K5=6BC!U
/tGv߲LhFP'wuO^sF~
Ltf@t=ǠO X3/"%bA$"-BfFyVZkRUK*mIb<e,!Y^eJ`"OXsGQ
cc}l `H"vݐdX (5 ם eE#ZFL'PKQd  ^  PK  C:U            9   org/bouncycastle/pqc/crypto/newhope/ErrorCorrection.classSOoE3޸6e6nKǱwCSԚHM!%z	xY6YU/z	A'$.|>@hxkD~̛? u
+UQ 
,x m,n
|赝5Y@CSΖN<YU$|tvmgM
%:
v	{8nNG'Qu?"zAܽuFd<w:y;^'9^?2#o=p\[&& Y$		z0[Iz0t}(xY% ࢀJy <E x	D^#
,p	pMo)(Q7Ma[Ӷ]`a#Ù5
	j^~H	Z,|4|JVu.9GN뙑+%qW$/,8l2HWMZ:qɤoU@A84|v22ԭ}b9jE-W"P:Sq)zPǖqٌVKhlNmd

7tBVN
%\a:De/Ҍ),i:30iB~㖮JsOЎpzwr;9ڴ@Fhg>Cu,b
ɣlX,e?˕ƈ+,x#.u(vK`
BK85}Jn1;x99j4$sP(ύ(P)zh~e0gBON.Tթ/MZd!2췏772vMT?NisgDQ{Qψ8c.~JM6)x?1ǌ<>u<h@H PK$GĖ    PK  C:U            5   org/bouncycastle/pqc/crypto/newhope/NHAgreement.classKK@֘UZqՅ7YMCI+""QMi覺gfwý_ v0ټaP3FѸ6<+8dpfH	nY(RV0DCC7ns_RЕeth
^l{wB~\ݑדIO+jPy}^k}uӶ6+O(2(@BU7yIդ
e`H `Xpp33{dyno5"a1
#0 !UcNfHb!I,RܒDI$$Eh{1)V@,#ж*<OfsR2eE)Γc<6t϶V+/X?!|PKpU9my    PK  C:U            A   org/bouncycastle/pqc/crypto/newhope/NHExchangePairGenerator.classmkPk6FMgvN4uoS*8M/mFěԙo0!CvQR>rν?}l9ϐZ
<ߋ0//$ŋn]i5HN!ϝ>7CV N;n('|:L8pMIYC
Oc|qBnC?n}}%&| b!#L8ڦA<WN0 )q):

]
θpҋgOm1YgXOh5-kgP9Od@5P?ū9]7p9``LMq]*X,
(7uvKU,3dUM0̏%OYi\Jd ]OPeb3#6k?P~mvKecmTq+NP>dG1Y*PKs    PK  C:U            <   org/bouncycastle/pqc/crypto/newhope/NHKeyPairGenerator.classSkOP~n*"tgLHB+'崃_i8G߳ɖa==<_ XŐ4sipWUͼt=7z0^v$ފlA
B1LgUW=|1Q,_֬رè.,GA[øt-78k2tw!f\+&!CgWgy}hĲtucDrZw|* ;Qqq7889&w:iJ7}Ոn%37l[?~OOI暱94 В2;L2dypKI⮁jH
j@m,Ē)<1G:fcuc#%NaR5I=ӽFlOPBoyh	Z/XCҸ߃lTW|bl'.+71UicRhlPK?PΞ  ?  PK  C:U            E   org/bouncycastle/pqc/crypto/newhope/NHOtherInfoGenerator$PartyU.classUmwG~V!pIFĸėM
1Qh(hH߆e.E_s1r@8<sg>e`	qp:ۑƊ	ctSV$H/hmLӸ&$)&!Vq8qӓ,u,?rggL<1C.gMКsq7rLwS{9GoĤ^2t<\۶̚V9^K{T5kG&_kt˔ZNE-YuSkhjN,56j59U2AZqe; F
z~#"z	ɡug3UղqYιE
G<YQs	Yh{VZ8J-DwT/8/れe\񉌈K2>mk.JIXXT_O'ך8[kPXJJ\˵{
 gf٪Be1I-na@n/ޥ|B6Pu{?h13hXz>9jUduPsͤvbYMzZ˖}/f:8a^縩 pK,
TK!-*8%¸2* cY8n*J0 U<8kȄqYPzsb:5aD%fOɚT5.m<Nf?c%S12 //Q4 	4#HF|B$pR7 #̑`$xk{8OH<rM<kćkۿG !oۍi+Mt[g[[ћ1$m#\ٛQ;8p!M|+})9d:f!>BPKѼ  	  PK  C:U            E   org/bouncycastle/pqc/crypto/newhope/NHOtherInfoGenerator$PartyV.classTR@=@	/(BEԶ)AUj6]hHj.`ŷ-̨}(o[ZqXi'sn|`[G6-De0gX7^2b&rҜ
3[~'MGl1仂[sCwuNs+GKjNx)?cCQdi:}MPH9VzekL%MS丙*vE3l!b;9-c^ԹBӝb53LG^^8$xD%F[ƗQGQ-B[XRIM5I+i.>cmBKնvkIkq7*ѽmxe-KA
zRЫം3&p;Wr w3LwUIu:ҞcXx1>j7ɘ
GcA&e=U?%<Ǌo uz"^VÅzFu|5jfΦ7Yay+Hl$U@Նwt0u\EUðM**
a8Z0B\W
CIp#~L1i	3fĄA0%vpKB\R;%;+oE^2
:-knW/<Sx ^ёѱ.~(2r9&zG)'H34
{tD\p]*JX.a9}=$VX(H0v5yiNY"$IӰ|ERdPK=r?  -  PK  C:U            >   org/bouncycastle/pqc/crypto/newhope/NHOtherInfoGenerator.classTkSL~VJccTTj[д**oUPZ(RoÒ%Zl}BgQgSZɞW 1?c|F۶c˻%-K~4LRP2XnYs|K0DH*XRH6[_3-j[DWq
M5sKԤ:rbK2hʭW1ܺc5,˪0L*cˢlpes#QsZq=[..k[xb={y270,QYv՜ZmF3uZVmLjE5xUPomJXwD[3SW#<.]5Sjt{-P#nBǗRsv;{)Ku_5Ӱ_
5Яᰆ#j8a@q|aթAfQm\`(0{_ۨ['֥X|7'M37>ҍ][3x-&^k:ScjN⎢ߪTfX1vs]H)8>8a!0ˀ`zeTTz)zp3QpC-g0cig1SpW=:I9`BGܡyQ	4s=݉*}AO/ܞ C[z;kOBUˋ Ѓ~UT3O'%zVp?hihr+JV#ԧyTh\'dx4s*MV_fˤN%`4tUukdk5%OaOk>@KڏZدs1	()p0Fk	PKUA    PK  C:U            @   org/bouncycastle/pqc/crypto/newhope/NHPrivateKeyParameters.classePMK0~RnN7ċrы0 2(xp,MMIxĤCv|y y> a
7&}O"gUd!ЉL3cfN^sVLPRKZ2򊎫:υV)zBEp+_Or"_)uѱR6A|]v0z~N n]Btb[^avvco Me27hЊ_7&_PKL  x  PK  C:U            ?   org/bouncycastle/pqc/crypto/newhope/NHPublicKeyParameters.classePOK0}uݜn*o[=AM ;ypYhHx_:<%p=h<Z2bˢ[gqs*7JT&4rq)`8Qz̢*I$tsEZIQ4:e54R3诛ɧK~sEsՂ`[8EE^F  . ŖMl/Խ!]shоKjCGy;mZܰf@;|ŀBuPK[
  w  PK  C:U            @   org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor$1.classM
0_j5U{B܊?	ZBRj.<7?y-RhiJq(jRan])
{3UM*\+=*ېدO-Ggyod8hebʞc-|>F)~$)Y ,H}PKf      PK  C:U            L   org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor$PartyUBuilder.classUmwE~&I-mTD[Ͷ*R4@MK%6ٌv7nC9Gx&*|/3w& da}\07y9ȚW]ߍ{r!0$RʏTm^MxU8)PZk)r;sU~_	+_mU6
d*ސaGhVXRs*+x(Iۓ~.zKOjn"nW*Hvj#Sq`C)->/o_!VzP2j@]g,_=
^gs.ѯ5G\B-e*fn8*8핣RnSҺ:/jƮgP?=ڒh<vsNjxCÛpJNkxGû&J81/<9avLQ"_̉?RN3t]fCݑ~-N"h9s_R;MI!_/}.Wgn4w詧%~y</N (P#GKZ(2}
$pހ RƑf+c`l}₁ch8
#.^g1!bUXqSY|,f4nXa
t):΁?SjE(RtisǇMw~X)jtZ%k%M s$UH^:bܶ֬J]rm,:k֭~6qO}\'8ISukW|A19EZ*\prgGJ?c3qV&Ԫp9]*3|\#OHUsJѮYc3k4PKw    PK  C:U            L   org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor$PartyVBuilder.classTmOA~JEQPގC<QTP-/{W?D2^Bڤ癙W cXkPo3$̡4CVnRiut}7b`\{R|
:np#蝳5DeD$2K9qxDZnq)+%mH%e
(FnSÈKDf v.(Na	ڱY.F}Pw%CP_
^YPi. п"2d?6+)"#P_+oaf_y=]=CRzL%%6;hNWYnጆ6
g5k8Cy
4tRL<P8%Fe;4Nb8gf"I/VwTĄ99R^jp=i~aRaOx'o4n n$r|J)F]J\i :-7ЪD	Р!%,1&JRⶎnLDJ5W⁎^Q➎>L8mlox
Z@Ϋe^|s $Ю'N뮪&'!HwZ{*1m`GܨB:'
ӌj8Ik'a~ލ=,bae";zwx҄Uɘ$hGFCѧN$ΐLf:@B*Ak/PK-E    PK  C:U            >   org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor.classS]OP~:8P: *2DukA$&%,7;`Yg۩5J?K//ct`Ӽy~`cJ6Ȑk.sKzNA+lGRmCBxџrKGt+G.f?-.Zׄ1WJNձTˑoW?uКq=N.?q~#J#,[	D4#s01L<gQNzE76QfQ%r=k"jȠ@UE;4RrG+Ƒ8q#{/#goE,xnQakh&
I
*4tYָ#niҜ48ӆc8+Mn_o
&=;	5.S<'O0tRDB*Ô=\!?o?~;νa(F.$a~AZLŬe1%`[8Jo9D}>}FsPw
s)*j Gzᰑ~jesV$~ +
ē
N's07p~=ނ1HgI#?JW- PKmS~X  a  PK  C:U            -   org/bouncycastle/pqc/crypto/newhope/NTT.classye뺯Q:2&`LX@RX.$4A1# 
-fEE;eI@;cNTcem&NW{zgϹss^;L)N))m*ʄ9L8\1WNtnm/uL_l岡9Mg/dk-Z>Ss)}QCC9u.P軺oK&_芁~=lʡ%+Vg+.?gp˗/X9&W/hp}kL^uUW

N^9pU/7/I#/X=ўnO1#Sg:bdTS42Hǥѝ+ЙO'j53pܡ+/[嗝.NlN'jO\j\
̺umiMI:ґK-Nib>&Ztͩ{c4fIc&uO=wCۆ:ٙ.wreڹ5e}^VzZZzںڢoMOj:}㌮
yjnjXx}>*/Xtg:{m÷nhmnq8wٙ?هqCi
sqf<|X9Ȝ9G9\=:k\14gazZX?
.Ĉh!Kǎ^tavJ]M]ɉaGwAG4YGusD438"i8*8:u<3"cc#mhqQ躐yB4bLiFY"<9qJd(Hh#ӣ	usb4bRdqFH{шGE)u
шD"ΌF#z"E*YшGO"G: 33#'FjIш#ss#mO,E̮G#Y<- n0qQdqq1N`>=qId17i;<#Y<3_2D#Y\E<;~xN4Q:XYG#mhŒ(bi\"2Xi/F,UuhbM1i'F\Y\Eϋ,E Axa4EQOT拣i/l_n`/ƾ<}E+^}Ud(5>/_}]d(vS=U!(M+}Kd(vs],nƾ-}{H?ƾ+1Rnlž' }d-^Dc?~(poˏDc?~,Q7EcolobMxd{[ۣwDb?/S;#OGHhg#Eg_l/Gcl/j4kף=oFߊbٓ߉~7^.wGc a{?l'{#۟F?#Ed(v}U4בoll-{{@#M>G|c4a%m'lYKemG=[YKh-ZbkAo-גܭZk]	k	+i%u [
lI%
DRa;^"%Ė[RMI-1NdK-IYdK-UjA-aْ?IlvVhK-~іH[*mgק
:m	ԖT%i%֖Z9uז`[mI%ͶDRm;^!%ܖr[kI-.'
m	MpK-KRrKʿ/i%斚U[n)%wHnv]}떰[nI}[n	nɻ%\wK-yyݒwK޿(ɻ%MႼ[nɻ%ݒwKz [n/$yݒw'Ȼ%[I-yn[nɻ%ߕݒwK#Ȼ%[qI-yWnɻ%MwK-yQ[nɻ%ﯓݒwKz [n$yݒw>JwK-y[nɻ[W
nɻ%^wK-yI[nɻ%ݒwKz [n$yݒw{ݒwK-ySwK-y뵂[nɻ%Hnɻ%Iސ,ɻ%XwK-yI[nɻ%ݒwKm'nɻ%[wK-yk [nO$yݒw; [n$yݒw;>]wK-y[nɻR-Ȼ%[~$[nիyݒwK(ɻ%Yu [n+%yݒw;/Ȼ%[eI-yΩyݒwK? ɻ%u`ݒwK%ɻ%ۅA-yݒ$yݒw.ݒwK-y[wK-yY[nɻ%Knɻ%v]]/ֳInɻ%$yݒw{]&u׷[n$uRw'[I-un	nORwK-u뀸RwK.-KPwK-u͒[n^![I-uSuRwKoRwKκVCRwK-u[nw#uRwK_+BA-uRJnvO}[nG$uRwwRwK'}u[n;%uRw>GPwK-uI-u3uRwK?%ۃhI-u[.KҗB݋[RI-uvsuRwK?'Z&[I-uݎ~2Kn?RwKz[n[nP
nKRwK-uScuRwKoRwKFE$uR?KnvV=BPwK-uՒ[n]&[I-uΩgnHRwK-u땂w[I-u.cuRwK.ۥRA-uRHnvU}[n'$uRw>_'蒺[n?$uRw{]տnɻ%BwK-ySyݒwK޿$ɻ%MtA-yݒm[nɻ\nɻ%RwK-y[[nɻ%oݒwKLA-yݒInɻ%vG} [nm[nɻYݒwK-y$[nwգyݒwK_/ɻ%bA-yݒKnɻ%vO,Ȼ%[1I-y[nɻ%ݒwK:NwK-yFI-yݒwK-y$[n'
nɻ%ZwK-yyݒwKއ%yݒ[R!PKVW
  ~"  PK  C:U            1   org/bouncycastle/pqc/crypto/newhope/NewHope.classU]Se~GvY0nkRBEHK
XaItX2?xh8s64a9xg7O _@ddtM8R`#ld
 ld]r3\la6N!ѭ'<,BޛvU?#`0{c5_Kfa3/@ ]F|v;Qʛx1-Ra.M-ߤC[
mby,&ebg,̽^u1dی皾ݠ(bvWm,k_t
Z}.Ck+S]
͆o8vī͌^KInRjا~(!z])7Vïٙ׬nRݷ~#c.d.`_ǾsL\o<Yu]yV;d<O[u"OIlX462]v
,n0sĩO^Gra@d0B
.)xGK#=izꂛzt!zV:bt #Dt| YG.0To@&Я<t0"ut10k1nhuç>Aa],V`XӐg+3%so9U;aђU/Y53K W #$9s]C_?"*C=44_M,0|@e̅&]qlQ;íq)Ԕ4$J
)҂n]#!2nL1ĴPoQChnʈ҆eAuavKC4$ԑ$
tPMB
JK4ah$(Mm'Sa;HC?n1@}ZS khtýGϮ}Yxc4ڞi)ݢ|teǓkĆ[SJ ,mT͠42J`R䅉8ߛRCbdgH=X#*DqdrbkD'I@{'Zi2t$IMJ;,EJ%u2Кĉ4NYلyg"&R[gGVV)/8glj1!aۋPKR  R  PK  C:U            0   org/bouncycastle/pqc/crypto/newhope/Params.classMN@oRA9rT.끣@hŐp2K vXL< >qJBMf} M	\nn	pp7yO<Q?-\IH=BŖ5LLRX6Q"}ESkV&Ub(3WyO8ExE\nм(B34:R۱L
5ࢍ?%*g;%7^-[r)y]/]֦j/bPKs!   a  PK  C:U            .   org/bouncycastle/pqc/crypto/newhope/Poly.classUsU6ݻ.t]hiOڤJ
&*ImL1 t:3>;}dqD^|sw}Q{(} ?9޽M~~C 'ڒ%<08#!8LHMSO# ߭Ϧ9RZ"$G@HjauX)z#WS3W''2h<}EB؏?7N&S/MrC]ɹBv2ϓ{0V)sP@+zuyFN+uZth斓˞Dp<PME>żr5'ϗ,o-;e	ziuShPŭsbfGBlέWܒWrbrsc₳-];/~oϨ8/U'6ϱ?Ogy*N;ީrUByB=OdxK\Sb+e9ܼďsQ<W<LBW9a"ë"Q!{m}AKP8R
 3
7D1^C>2`42Nb3܌psV{8ܼ	\Rܼ%o⼎S8ͨ#AjxW#sLn՞ BG%J
="'P)pPAlbQ;hÙuY'c!F@zDhn_iL_Xeoq$jal&Q;C%j+>TC0vN+&:"Vb]5k3	fiXrcbf窩%k1bi!u4Bʊ*]~O].~{#M61Cnmf_@_|(G&}ک`HOP	>l"#'K{%lBLNhfjg1Ky5`w{bJEME,G%@)4ֿu#Gznx?I=l#Cg\ ma#Y	^	5K_IC6JQ>li،bB7ۚՖLZHF WBXW×$5n4TB2?ǲ[9i4,9ѩRVC+_Q+G0Aj 7Nh{AZ+a{CQ9.2]L_!\ "p%~*1/m+b1k+[?f{]>ɿJa ^QLiVt PK:
  R  PK  C:U            1   org/bouncycastle/pqc/crypto/newhope/Precomp.classUxcWֵ%[Xee[eY`Ka0C
'$UafffffffffT9<?2QkXc" *)Ami[m;,Db܊/"
S_~V[ʿ^ej׽Ҫˬˬz{pUHf
wڰՆl\q-7COnFwfڮ6~6ivZsvazsMv|M+mɴ[h[#HK-ڏh.#H~GȴGHb7$RIx+Dz_v-alE"͑k#6^wϺFOut|>ejN%䔩1Lm%yהmd_25#lJۮ}CvZ𐠸$u!M!!x~!KG.ҟynwCEz鴯1t~w0@V0z"=H	F	^PvctLI'+Lث*-,5rySgyР&fYa6z~0;<A]lNz~0iafy	m}"31[\a7`fs!vׅ7/BEi=,'gW^҄%O.EUwqiKXE=X
.aEҝV=ae
=JC=Ia
-+{X-hM"v4[fmROxX֥ѳ5l@Yx؈+\^azؔԎ6
0[m!$91lB070mEۑ=v#Δm;v[5w#awzOyؓ}o/FO7MDk}0܏}jx HɆ`f3<N(
"ix
$}QMO1$5<V8ڜgxH'?dz4<O%inx:y
Ϡ9nx&u"٤4<~2y
ϧhox!O/WË|fx	NK3\Fm.0賆WR^*zT3݆28:g4mx+
oMN0`m[VV41vN3ƆwRZ.&wG1>gx?
`rO7|(<LziGi5|C
gq1|O2S1|Rz5|s5|1/09t/Q{eF7|s`X&ʷײަeMwH>ҡmznӳD0`	Ïp7~L`O9?%}䎆}_RX+~͈z>6JR8;z=GZdןPT܆
elOhN5=IU5<6%a@~ÐlQ}
Z2AmWYi	-vZ˃M3C$sěiưYZʆa'w
tZh0Gy͈%{i9ΰxa?p%
3dt!]0ٷ6#
6T7,2sc2#oSV9jQئL6
'j
2ZmnYcJ6>pvFm39Rs0'E;7YYuƮ3AKp7=`҂'X[dڽ"d7\ᆋpq.U+GNV]`,ewck(_h"XN
Vv4\tpUeTw1B֜;X4S)kpmgu)k]6 /UÍ4FbÍIj	zMlFoΐ~-Öt[
GgV4,I[ݶtÃd
ǂ;؎+QY
vᎤ;$쫥.tiveD޺iw=R$%܋%`oVj}hp_F1}ٟK[-	AtLCy5P*VtAFy$GQMc-Ep,}Ϙ%FNlI88KJR#8bKI^:g-89Ғ3<|ڟT\_]"VS:ĵR7%
&~7қ*F26k[	%_ǈx=c
4n$|p哛%V*mdn'|q	kU;3֊w=nFV0uH4cR˼ՊR
)
"i?xG(ʭ!xq:d'h(잤Z)z̧Wx6ĂgPQxSW~6=3|QYM^]*FT)l%]Mڶ(*MP/xLTZyb#ƶ5
?p᧴}?#k8F_Ҕ{|Ő4!ṳvmwt9}׶@zGxg*#%bJOÂPzOѶה#zwo;QF1=w&=we9Qz_N7F{UԻgL;rCz_+;WԻHQo\NԻA޽#=ޅ/EsKz?ZF{t?Q棢޹SEzWn_{r{Qԗ޹qQD{}+E{Dzǈz^nOԻuwawtEQDIQE{(znLz6Mcq`~ޙ9Dz^]ԻbQ/ޓzuz$XEԻpw3QD#'zNvYQ:[Q2ޣzw*]:U{puQE;#zW"YDݎ޽zW.)=m;1fF̻w1Vb}ψy'bީmļ3;yO&=w
bbļ1bރ3ż{\U̻O1ċbbޙżż'/ns[To_b1܏^k<[;rၴĨSϼ3Bء-Gp1#[IQtZwGϼKJ!nq<'<>Óh{+Nw
-J2i4Ov2IYf1gK
ϥm<*瓱|/^DN*.%$>D.%*u1	upúϕeϫjzŭ!kS菉=Uq@v^=MXwZ' 0纕mo'wL뺓}8=4W5Ps?3
[v<Da{}c{Z{d5'H~g$
z{wYܻU'.vs^k=?`<5~d"QM{h^UUr:xZ6|ks<somfE(Kq(=;"?#RW{gtv๷N>l4s8焊/n_2xN#o蕟Ϥ3ow/$s
n+(FAθ Ͻu?鲺m*<г_!	!-*QFo<.nSFA/NdEN2$Ř4Q['y۝> 
$-yK6y'CI/hWψ'zU'*f>Ƞ9gUqabj
kCSz杰s4ϼ;3&Ljqd
ZD8ty=.2AN
&)k4(M<nS7+1ⳑS7o
0pNs~pnRХ^F-h=y]`[\{Bq_.Dsﴞsjj=`ܻdwUc	ڼ%s.E^\siŝa=ip9Ք.OZy&ŉV$kIsﴚI$e⎾G
W#fquHS(=4pMS־ECuuȋ#zmsﺞ{}Hd%GϽ4ŉ6aX'22!YqnABĭxVӻr,Nr"oGCAȈHC$d'Zeǝ$/vE~;m=+~˒IiM]qK
{l`?id bV<w<<dxMP-9y=>e#)(ző&ci%}=bxvwuq͓Ad&N%iEs~:tu&I9<NΡOv<P{+.h苿N/i	\i%t)\Jz#OcΗQ:.}v^EYw5QS/<Ҷ\K\G.Qv^ϨFߖگǹpچ[n)ogDʪwf}wU
!acZa[Vyv@=r)0[Q}3)e'铗<ETiЧ,ï>GJޡt/!|YtB\*ie(*_(AL&-:ynMRQQwi#l>	}?dBQVV'$u)i|ƠΧ?gL_0h%S+_Sz!*|Kò{6#Z/?+:wR׉ĕw'-ކSUUzzzzzOWUJ!h؁rp}va1VTV/aC|a=oi-L27ӴYv$̐fǰA%namBO-n,==~/E۷󰟴TD+tge'#na7Gh2IİDs8MkXoqvVYUa9:)BOeucavc0U蹺;;dnO׭
YMyhb8/jT!3LP1	p!ƭ3bi:\pQ[܄Ӧ,AN$cKQ"\>p,
xˤ$[~+ኄÕLeUKJm	SiS
ikN!ŀpmO"
סD,e]>=r/?܈;tX/nBM۔1p3v3³4-!+VtY
oC="ԭL.ݎA$w;=w.?މ!+#vîtnepL{R"nO7
;z
=?KCۏakoI[
 iBBx )SAԭle"<(IkK(zӢ8HZ	"){
VcX߹oe3<
ֆ'4Dѡ/˯N(?<odwgPLe2=g39k{%'{/;Pse+Te0*^Lyx	)ѥ!5V`1JdTzk^Kt:Dn fԔf}7L\,ѣt;v ;I
"oT:N=>ҥ*`P Y}!1>3>¸Qr@eqe'h*m=ISDOT8<Cp,JOyG_$x7/WؼB^ߺ5FUV^ڒ
t7<71?|!+;DwIk
#t>Y(˝>͎.?}W!sRzp+VjR詿L޷*|ǘ{r?RgPWnߨ~.{Aݟ(MEʨ0jۺ]ȘQHnZ|1R"cgpۙ#C0%鲸p):˥6uLq:HNO
Z|.9J/S˰QOOʯ gIb8H7D/V\6kæC"icsnԛȰDӆ+̤'7NUX.q&	Mnu&IsK7-oVzHmn9IZ(:=ܼ$]jHm
܂9"enfԲ[U(n1V,,ܒMtKѭYNKnц2aU^n9jV5$w+0dڭHGnpU-}sXoLP1vkаskR42)wҚ[=:u[t1bݥ[Hu܆m6mD҆Ɛ	onc'zMi6#nNEKnKRVŜVkv[iL'
g0f],v$;Xt;DagO0iJʃۍUI;M;w{dbWý*_߇}o_ZqTϰYw ctZWbX?R~Fʪ;>#~IJwCvH㎦nCNv?N:q$ӧp;	;p'2h;r2]^)tSN#g];{ucLZgcĝME?璷.ŝGʗ;֭!b2ƒ%ɩߗ1w9-+^IUTW3ne]CL~˿r5+zn*_~vp7SPz1cVnq;V.j}wbTe{HKpRU9AIq0!?{!Cv{fMG)\<F\8I;tOR#b˿uiJgH)<KZ}!dw^]"ͻh_4|>ū^cػ{Q;qoi&ò[߷	]"6ucH{ڴ}d~D1m'r?ls&r_׶~I]av<.}ØU{7VuhX꾧ê(|"mB@UW;+sR.FZn;v׺Om\t b{uYݣ_tvt㥻͔>ytz;ΑS^=Y{ttVKwϿ*ݽeX{>*}xttݻA{&^ތJwo)=ut+t1OHw/o&=t瞒E{uIw{V{t3ϥGy]{u3WHw|F{^^xI{KKw'[z{֐>G%O"}$}2&ykCO~yM{fq	v	ޛkIx/&&=5]{^'֑rQ{	K$>-ὶfS{}	[JxHx͐֟%%-"ὶ,ދ+Ix/$% u	}%%=ޛ%%"}:	C$+}x
	$~^(IxOl/}	-W}%K܇?CޏEjd*>%ȁ4щDhm`5T|-Ua5L|8e	GGzgx]#G3!cx,eajxOaiZ9YBNR婌yN!tbE Iٴz琗z.>>d%^$y}0G.Wv	;΋\JLtI1k#W2hHBѯkIXX3b
q
 M9o-quV!r%
NTeȝ#wQ4qK'-I:4 ڷ0^XR#TG$ctj@q2z5'IJ:~KEf\0Ɂg^Qy'D^ I	eG^]t(^ɇ7k`M*0xtʞP=%)	=k3)*D>dĎ"1.;̈5:O)I|FMI_F/%LN|M\~
9kt#3}{Hk{5B8E~K?>LMv+1o5 ;Q˟D594'u8]cT-qyԦiJo#&٠@I.a'	oq4A\f 4
S*Yu	9bRCkRzMĤPuV?DU0Y&2ց#%H_*hc{eԬ@a25::uo~MTNҰAQj_b65#v6$ΰ`&IX0U
8MTר{'%jOA TtHJd\}qXSh
1%juI-܃(kqm2J][^
vzy<4\V;
V /qxE&RDS+sB^*WcRbH̞O_>&R󦒑riCUvYp=FRϸԬ
hȍ6݈~]gR7CP)
woƀ`s&%nA*$c=hd+O[Ӯm8tz41vے7lǰo{
jGz;;֠.])J,ލ;){P4I&|3ܛ}hH$ߗHi$ > :3°CԐa4NJ"Ms1.x8W IkHdSJ|*/)jϠ?;8$"aV8!s)+#*|_/ %Br^DBbŴijK*M\FF&s9PqseN2v\̀}
k]OQy=|7S4ȨߛHءgp3oWֿ	Y6biU[4([說ݼгoiѯs?ey+$Ͼ#8Yӳo=ciWQ')i)
zΧ);g)HId<ψƵ/S%ei+4*@:Q]ޤ?x6%w|"5|V=FyOAY&5!)#x|\'FPLyɷ>UsRjA/TGfP
}KI;&
~`H;?2	&eMʸ|7~q-ğh`k,1 **d9BGrzBN
p	I1b&ZIK
h.I&NER;Yk$i+a$4}Nke$2zɀ,e	]4HYvm~/U+~4b''b'{@m>&,0"!~;,R2)ūD61au
	-Ji)3u'(K$'&U)$5+9)"c%'	sMF8'ùP<7}g0LO50-\'Y	;
dĂ0\karRpaBJۢtI[i5+=dTK1$Ati2t-K2r)_s+0"ukMw2UYW^WE^:LY%2` \'aomu>.C2zt='#ހA	+Au#9ѣ 	77e%,G[뷤KBKފQk}0N0b-]Q_=9Ȁֳz;S\Bd+%	ѧm۝	mT{R!ro4G	p@v9rگ)kdbx
tT['ItPxM(!Լ̱n+<	Odr}艿NjNx
M穤F[AY:d%|Řl,[ùQV؞O aB26^Ġb^Re>q^NUk.J|7մ*}]CZ׻nu[g^Ouc΍D5pU;XofD57s+
	%v4(pJ7w2lQxeJD?xnxoFY>JӰ%|5hd&+1mt{uǩ>AV}Q<Ő짙Ԙ34O?K9ϓ@Ez4n=
UXU&U^#؆od4&)·6c;ߥ_x@U!wQT4t?(|JC]*~QpIQPpLJߒѦ|G'cRqko?oZj&bk9$mR៌)"+ B܂I~IKpԭq-4_uQ$}]+uɘmHn3)XY$"#*Mj +!C]tI$nS*.KNzFc#r$wS0/u=$t^j|,πdzyƤ|\_z?JLruy(LэbƮBJW(FnWMr9.Y -IdY錛%'7yɌ3iO\vsSӴ<4%/KSrhJ'K.[}܂JY@2¤$.BɊ[-Nd%@K2h-Ťgi$g-CFR=KArrtjaz4"NS+Q"VOZ'YVM]FZ\d)kk0.9|M%CZQrks]preҭGAY|P<!	MlDşF^ 9sz$SnJo3j3Z`LoIRA-Vs[3)lCk:cgP^mKҒێ+n{:$@sG;1lLB]OvnNL:4'^8{VCf_r##9sP=$J<dNa,ۻÉZ`T4vGe-h$CXP9AKx[OD9>k8Q雧Nq3h4,b9fԚOwk~ܹ$G{'-3VEӰ^]BEs)
jr1aAS)WPC~w%Q*r2ddk|[ix-UuSn Ƞ~7mLqoe@S1NIf^
EXnzWtЮnm})=ϸr2Ja0
P(#
hQ>NZz6Oh{r4IBgAnq=4-^bXya~IMJJ	QW{7$)u-3;ti]4º鑷~􇔕->a}LNF\ZSĬ%t_Ҫ)j"7etZ7]wcsSSE'⻟)BRWtߨiHwPISCQ
\??PKF!o/  P_  PK  C:U            0   org/bouncycastle/pqc/crypto/newhope/Reduce.classMN=OAC;?0@`CE1BBrlvX0$?߰2<ߙ+͛yo7kT, -Xq`l'O ߚa`]jMл!Cw'OPD43B~?ʀ\+까6M|W*bif/D\ɗ^HޓU _FA	yXE8IrGl%qƀ3`X~H3H:)'Թ0W@t|oq2-߽bV[mS>r"MT=F녱l۵kԀ?PKf"4    PK
    D:U            !   org/bouncycastle/pqc/crypto/ntru/PK  C:U            7   org/bouncycastle/pqc/crypto/ntru/NTRUKEMExtractor.classUmWE~6dfm1Uh%$Ӣ
H%XUHUd,h/{
=oxGx<;U'jN̝;s&?>()';F}W&GI.R.0FeX+ͥ\˶ׯ@tF.6*[
VũMrQPܚI2b9i_{.<yUn좨zy^pNu=R墷NsoOU7KTМZYl){	ףj'(\v-1QSEsYjz%ab+q]Qd+X_};Q}*:$H=?8308=l(dn58I
N}FP	3Y[8Qgh;E9ຼFZ*_Y<#Oi=Qs2D\Q!wJupt
ɠ32
CC;e+2\exN|_H9g	f7_gArh/I4PSMwhA\[utHx0qKǋPt$ᚄ7%$hHJUDut&q	Y'ޏ:$bx1dp;Fs4taT!	I0!aR#ڴnHkXMK;z0.aJǭ{ܙ+%
F3*k%\eIojuX0J?CȏBH\#~Mbv4baUjʲ'^JhJD1#lTD\`e5CcqC3a#_du|QpK]L,gfSO;|LzR66A⨟8ečh"e*EcY݈?ƚoa'ԧpsp&&}n0dm6j&]掀Qˀt{h[]ʹwJt@/;B~AV@?)PKY  
  PK  C:U            7   org/bouncycastle/pqc/crypto/ntru/NTRUKEMGenerator.classU{WU-l ZZ"b[6">mX.[Iǿ~ Ǚ(PsN~3w}|=[l]"q+<N,J%Quk
؞mϏ)]Vs,"Yn:U%Mvk[~XZVSaTrʽX5 Tгn=*5Vץ205盦PbĊdM*ϺI4GByAXVUL3fF!٣
GCt{lh8>1pgjrZq&r>+cW=%ԁSQKVͯ:n4{jU}8F=r~,9߻xnTے^.<-,IϐɍFǶö́p1ĉIf9FfáE/dBn\ sn_M5+e't/%)⬊TS8eTUU⒊UM*p4B4߻GK3mG{v2#Q::=
I<h#[b:15#-JxG\#hſpYȣSsPbxa]
m1hhC@)0
t!.Y1!Џ/bRAM[=(f!,
X>,
CX0E5\W1k09F×F#hY9yO5\]{(A(}V
Va[qIa )8ۉHQYo}j&3;01ˬ̎1U1Lai`m7zL̴bBLMu]vQӺK3O<թwN[X7.6PE#[Kzޡ4g	ـkv,{on=w0w][o?PK    PK  C:U            B   org/bouncycastle/pqc/crypto/ntru/NTRUKeyGenerationParameters.classAK0߬[fW'z[Do^<8dL=f⒙B"xĴ(DQ!{K^^S}P1#K&c5b+YH+s1jHkAz~r6:P`	6Kq#xF27-ih$DzGaC<Qga<a)C a>=!lwİVnTsaٝU7swlyXIQC}S1@#Gt[=
PK7P     PK  C:U            ;   org/bouncycastle/pqc/crypto/ntru/NTRUKeyPairGenerator.classUR@=kib(
PAQ[k&l|ۇr`Eۙߞ]6_6?}3
ю"N(FsׯijPA-lp?mBAK{iSYq'6܌U,(|kf.cNjӸ8Mynq9eO
bH}S9OQp)
Gdig>gfa	c g)Ka[CJ	T\9G%ϧ/;gUc؃$kH7p(=PZ.5r}5ӳFڵXQI'jjV|pSrY4w)T\}+^antja\E[f֝72EaN]0eǰAg8pPAkTП#}4tj$ov`76'ZWTy~wS5m ZI卺K)ܕ:;r7Mt5LÒ<W(W1TuLh8#✆vtkhCP4J8$ᘄf4i؆kW.i؊%5'g#㪄0K8n8'qK)nDJ]qG!,$\p]

932?Q4џi, )cBV;hTh
xG.ۊ@lb%L."]2\(Q?<B-RDKt.s2^.ZM%O[8Y@t&hˤɅMr&aLb-te*i>oPKt4  Y  PK  C:U            8   org/bouncycastle/pqc/crypto/ntru/NTRUKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF#}0y%E~!AzAeg`ag`ed0!	֌d2Ո"Yf'#';/0DSRY"@fd(" d@[Kz;V`
\PE@Hjma f  PKC     PK  C:U            0   org/bouncycastle/pqc/crypto/ntru/NTRUOWCPA.classVmsW~VZi%ym˖r&%cYő9v&q'ki-)7i/%δ2C:2|c>13|w8gweGmf={<{sO:Cx[$zΎ8;ʳHna(dogr;fahDPКH뉋G2n+e"3ucPĜ3Z.K']+l%_hYJF@Q=g[vId93AORY_$ER29Y(O=ErJYETd>KTZ#b"b&G9=5yG&F$wLݿI-&:W&̭Fv<dѷ-cQ+-rp}v-hudgu-b{HTd##xKsrRx|6r4ƩzysW)CgÔiF\R(.jQ/-F_ɩ|=QJwyJVR[ߠxJ,WXnm*EW5et_34 R|@S𠂏(xH
>`
QC
>px{ƮLA9Is.%Vtw^%c=;]rL5-xt[@w$ܯbo6Slz/Vb<fGUѤ"3*ńARp!f0<C0çTI!f*>( nmP*Z0gU:ZqN񴊏1b`3*TLx3*>p3^gbx}EƇ#^.3|އ'pP8|8
ó>^`ȐeXd1U/0,3<py>Dڇq|aAcgH0$tN8O
/>ioFV;אFo!t˽wb<1Zo$LZn:zH{Ӗƀlo
,W1O
ĚExcFBTX+1U4*~$U|'g)WDsxzfug؞_*OnxPu<"wmr2j[dz
wmwsi8ʹUpr|][BDMZh*%ZEK?~262ɸ-q
|7AgxcJ-0Oe^;ayo[XpGU0B5$I	O;H^5|Do麈6.ҋ+W(*n
osKxs@ڲ|6$
iDR2UV<7O 5|FJ[' M}X}+V
Cn"X;M!ިJkK-Ek¤_^Vc2~	2~ڀꐓ7Fs>
ͳ^t]St&s6kLҡP&7l" :D;)*GT-;ESNi?Hv~cBb
g
F_l-Dk>lGt
*+C]m=~[?_WW.uyzu-v.:C]v=mBTMܜ}+k4Sȸ7krn:P,I(9}|7(g(Lh\L_s+}.O.3_i-A|:8YOoAfE"@4PK!9  V  PK  C:U            5   org/bouncycastle/pqc/crypto/ntru/NTRUParameters.classS]s@=[I!ZK?Z
 -Xkm3<iM>heFf(ǻR;Atν{7?}PYQ1*C ~&AkDjXqb1)-kuVWo'N=6Z۰cPGm=m:^>[ՋD\>'
j1Dz^9KTmhS욆-tѶ[Nr1h[o2qb́i>/::}]1otFEW8Qi]oy"HpU5	BݖdLxK䩍UdKu*uB
n)mQ1*븣`!29ܛA989d8qX)X2nΑEi
T/blUC*obSr?"cJ3d3g(~3;)2d?
iWTAdH@T'9/HzʟTDUT6HP>VTa*~PKA9/    PK  C:U            ?   org/bouncycastle/pqc/crypto/ntru/NTRUPrivateKeyParameters.classJPmm.B@TEJ"څ]R17BJ?\ >8mCͽgfǁϯ XaPVPz8C_2FQ'yBEG<e؊K=w(w4J8Wd½咋!TOovH?ppSqN((0v"}ZIaǺ7ꚘjB3`BA
L4Rsf1O8b:&6"I)T]jBV7^`oaG`QNflP$C(z,NPKF*    PK  C:U            >   org/bouncycastle/pqc/crypto/ntru/NTRUPublicKeyParameters.classKK@4mѶ޸KARvaWt(4"J.(a9sǁ;_ ΐuj:Ci8}H2]#wdi$02e؍UkI$Rt(J:"
_=0M[~Dw@&
&,6Ás9[dwM֚sr`9d8,̣lbZ%Z[GJCA@5r
ew
Ϩ>#z&H	U
=Li<IPKہ`)    PK  C:U            3   org/bouncycastle/pqc/crypto/ntru/NTRUSampling.classUsSUwkVRHi/1_MJB[)D)Mւ5yWlɠ?t8Ԗp8]:ѝr!H}0θp2s޹{|諻 ^B
jx9Ca8xBTxbHx4W}
W-Q*jB1Szrp1k"L*2EY2ReR,_*:9캨\Q'RN+ڱ\^-'3jITW'
M]T3
9-q\V*t.>_vsਠXNL
JF55QIdʕ^L\ٴ/i4ĺzJ!DE^gLe>Ut?5wnI)+yUW˳ƪYe6VVmPJmHг5C
1u<ԓZ,77fGH*]&FefeZ	$M>V6?A;mAGOEtZ/.<®AzONn<]g5t&Uu42Kb }h5Ͱ
Pc2 ؎26-c3{e °xYnт;q2ExG	f_B$D(^(3)f^g洄.lP~Ѝc0D*N+r7)+KJiTTZM8ePP߃^j:j )HK}q\O%}7/u2޽e=Z]9s]㱮s˔d_|km%MQu08}jS^r<50?,I*UdAw_tEtĖ0[Q57w3{,v˙BoƱ3r=Ho-a/e뻃5\DgzwR'"w) 8㞌ZQ0oys歸`m6 Z@䐙7#i*$"ce6;u:fG
>;$ZHH ,d3X"[d#o4[V|td3,^R?4AA[D[@Uce(hĜ`E~qE"c*z@;YzFBB#x!x]~{v~3	R.}{K'	"~gwDͫO/h; ,͠iZ#u	;'mB7h?~Z2ۢm&ӖRY&D̀hiG}R! @nFi!?&k|yؓ!>7vPK$  a  PK  C:U            9   org/bouncycastle/pqc/crypto/ntru/OWCPADecryptResult.classNn@	ƀPJģr"Tq #csFg@H)(h`|lYqDfB%Zb)bE9he4ۋM'Plb-N_J8T$&EO>99eeGGu<45ЄWB˅6?[Wv\.k/OYe;rb|f7<oWA7PK@X      PK  C:U            3   org/bouncycastle/pqc/crypto/ntru/OWCPAKeyPair.classn@g11ҦIO5LUR:'tȲɏ!Qx({ٕf~? x$;!diz꽚ҸQ(dy#,*{yՔUZԟJ(֮~lv7$M^.D/An{/(B$F'WxΉ)`]0/g?PKDAI      PK  C:U            5   org/bouncycastle/pqc/crypto/ntru/PolynomialPair.classAK@4mmZc*{fUM1%ָ,@8"y3}Y|}	5IT_Hr\\	?RdH]8#vNLDETEEgX<G"*VRLUV*Oe6iTiö&o¹O+{55́M#
PFt7!;]>n1NyO
wG>oukzwPK9    PK
    D:U            &   org/bouncycastle/pqc/crypto/ntruprime/PK  C:U            B   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKEMExtractor.classWWǿ	L$Dd	`mJ*(*] lN&tֶ?6?393{}o?=	rd$aoddqBB}dq|$$H+u\Ilo`1IGVm'Ma6,@A&,5ҎD:%xxub<tӘY34nz9/)WܚAfAϭPƦe)+iLÒлfS|gz&tgAbͰ&T~XIfL'lS^(2fܚ.8HB:H
%H5jZ/gЕ9XMoROH7GC7a&x	+-gҩFylE'In&_wM*֪]N"J'ӯN1zЮtxW:+R|\CrẮo2zqP%EJeK+]}p4oET9M傕VGOÔs4{
7S;9,tֈ^X<37Oٚy-R;沕ΐwB_]^[|J8XżisoTrV$4
+dL

h
*8 i(xVA\q	ggǎD㑑GvDOCTSq*!d1Fc'O2#<*z!c0S*13ڡ488	48UshR!Ь-*"qT<s
%?gQ#yF̸¸xqqx2<)
cXg7#13pژrƠ$_;@?e[HFѱa
H۠P;3{>^'c^XX=B|3#k |FDT,TYVx!$ּ|m7iY@"+"@vw9(lѼZ֠+2G`P6Ҵ:hvShmI\7YhjBnɾx
>wNYtne*-Kt	QW	ݢ[t
>zDMT
Wmm>ʮ>G h
pm/Z*H^"uɢ_&-HQEzq@s=Bݦ,Ajsw
ҍ
E	^OlH׆*vvÜݰ?vr.#""91"S+_x,<xNbH		#NvZ͙^NIh{zItCׁ[پMPK`T;x  
  PK  C:U            B   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKEMGenerator.classUmWU~6, @;5XZJ*%\`1nw7_IzNms?ȏgvZ9'<3̽so6	Hj:ংhjz{AA,Jbd;Yج۹Kl[nXe˿IɦՂT)1{
dY/*E2kkvZKY̖vRNrv }{t9ٲS=	C?\sfBܚ8?L,I_^H?PEZݞ]jЙ+==`ʽ[2hvsR,zF/T}ImTJYvyYVs3FfʩuU [>4#.Ҭwd?G媞/K
zJo9E`ԒwijLܪɂ+;ٮTBCY݊Z%_XY['syiInX\٥=ӄ*UeI#w68rɡc 4smnpN|g]3vCrvT])*fT̪ⲊJp
<Y_UV\^9=ڌq351Sot粯Qbz#zyZ3{"89i1 E`c`dbx-:10Ѝ(Zu$bGPu"H@ы#WxqCc`A5|
cm;wcaak
`:C!ϰK-5a轳Ho"B#蟩N|J~[ͼķ3χ9--h@sw\_ݻf&Ji%<ȴ2*3VDHsXCH(8s<z
wOqvq):)JF5%:
)/(ݢ[ĹhB$""qZjB3zE%'f>K^R$E=	~/5T*	ĀNTAgPd,^~$vH	QCIOD-iaQ5Qݴ1"y7bDѺ|LDXhf7zQsF_0]ycBLq:)&#tj{ݱ`SSb%
PK+Gcz    PK  C:U            M   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyGenerationParameters.classMK1l?uVY+œ ZlOqjf ((uvEDĂ6d2!קg X`nƚRWu$hI-f(-_539#Bݒ@nդ꺎mtC8QYzR	^Z*Q.OU\Oܶurd+i㯤/1G#98*m2,+?4]XZ+0l"N{]<1L010iߐP5-CYKbԷ㱞,l	:0E*+]}l\kMNϾ>Eߖ5'p z$PK@m  :  PK  C:U            F   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyPairGenerator.classUSWVe}i&4
imFIbV|G
k],_32Q,;{y|ܳg׋ faI'2Mܖ'${K
Ӛ4U,+f!b>;2yMׇMHm8ANBHQ="Yt%\5YǪNԭx:	JQxm)FneݲAXvLuŁ\(<fUܬ*TY:/mGfkiPYKuO6ZnT{)Kܑ%zsl]^vhPM3=iQC Օ*kzd/,ϬPug:6ws]jq}n
Y"i$rYxiJI3b
]>Zyj6e\mfs$E;ov\x¥_Ť`|n&7?i,oƲyO!z̡J{G\(ʸ*㚌2nȸ)}PG222w;X=fdhX➍t^Ŝlu.܁B~)<%C-g]m
]%ULoCRû1*F1bCGHdWV1i(*CTeUKo,0|p?O)Ɩ;2|%4
f̐WfXaXeaaaC;8+)-|J$ӱc
I3߰K<w~Ƕ0TEB
b#㽎i8h)G6vIM4p#s7bW0Adr	Ka-
;?N(4E0{Z@c?BOdZ(4Qt*U8
ʛ!mHS7`O06՚
j/Vx9]MFj!PK,  4	  PK  C:U            C   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF[}0y%EE~!A>A@&vlXXl|H5a5#&e8hDQbf'#';/0SR"adʀH
 y@63֒o#X3T fҬZ[6 PK3ʄ     PK  C:U            @   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeParameters.class[odǟc'MR?Y525qiiCvЬM(Xm4Iw`> i *@B$ C@	q6
? MI0,IT:os4[5:S0
UnjͅN)rIyUd#1jw5S_L VV9yFq.~WA[]z]k6xrm3᪶?q\ej3vWԵvfy^1Ӱ0zNdZӚ:if']+K5I堢ͺ-vt|ZS7>mU82jzfiV(xݙ=he{Nqfծ0#%vd#|c-O-h4jkfC{*5j2|'0ap0FH0N@HDx&Ð0ÄB0,r˄+kY3g	'	7	/ ^>߬|,`NAqZ#&M8:hkvf+?[hQqG/8zєu4mkU[y+ʵj:h-XWEU	XPRтHJЂ5U	Yk-*V>WqufB~:vvǎyˮ];i/i\]v3kxkk˞->i]KY$$`I~I1X/dIޑP<Bv}_CxsxN#?C.(l}GC!_6?,,{O.?FI߶}#DZr	C Qn`kv7L;yD-
?;t!>dc}y#s(#vzÿPK\8    PK  C:U            J   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePrivateKeyParameters.classSn@='qj\PR$KyPA( } /$vl*@R!NT,5/433s4ˮ3d-Uc[ژ<]Q_?A̐zQȩϠ|0c̢M9_,5_}.RZb()m_<ŒS2ObQNR\}mM<(mo#ACs"
DϽWokM==aū.?a6#yOStf@GHI%t8Ͱbٍ2s([Jpƿzcr>E&
ș(pFyС0qDLqy籨pYʰupb2Y,b%5)	̃jp=Z݇F
`;Y<8+N9S%
uO̤!#,81;QI9NLuTScSna;/CUhi`oxMVNjZI=PUiw<PKE    PK  C:U            I   org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePublicKeyParameters.classSn@=;u⺐Kh(_$ZH*"JqUbA_%B(G!fD_J03gfϙ?? ^9MY7KQ#	r4i{6CFNØ!3,=BjGo|7.
}'t<ሡ(ܷ<nFv0Ī3( ώ'Y E|*{v댢>\
a~7~Bj3yΥɧ'WYGey}.J|x>
yDsPpUAAAQAI5mh1"|!45REdί^瘻VT8pKniAҐaw5dq_yƚ07TEOTCrU05GezO8E%щ|JJdH+deVwfcZ&PތND|:FB{H	ELH/ʅe=-=+oR
TZBGd'Y	HY6PKL=#  ^  PK  C:U            B   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKEMExtractor.class[WUL2$\ TZZ
(	-^L2d^j/ࣟt-Y.>_wuY}<pKgF>oJdFק%D3Ӿ#!ED	-vx 
htY֎
v_nD/Z%˻$!5\w{Uݦ8uk]؛s\cJNbvvX^K;suL5=	;7cΖ$%#l˕{SZ0K;nD"dEUzº-]vm p_jzL"{yC]GND3kgڰ>QO<
-rެi}3]}_]Rig%tgm;/?IIk9;Mèzųͬʞ}jjk:Ǣfdse*YFaumŖi[7cONi<&cU2d.ok^T*ێ[\])8Mʞn=2e񦌷d-㼌G?&%\ʌ>Uk|7Xfك>?AEוw0H*^fd1FB*8axя68Y b*3W:]kPUtx1N"
$UY)\c
\
`Ke2EWXf0VP0[w댏0>e|`MWQ`q4O7rAߴMjUI;OE
܅94C2+CG'tQ~GؽD&"D{xw"~B:<D,ДM<t*RǗ<R"BX.څ
UQcCt(Fx):EG:Vl*!UΔ`겟u.$ET{Dm#cBWD\J sA}"}a__ND<j+E\P',DT*HnZi<.D	ĠHyo9$"0	חa*NMsfUqF9	v%c/QпCʘqY/3|r-ωCpND<PK{ra  `	  PK  C:U            B   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKEMGenerator.classTmSU~l,o@.Tk[_hj+j@PZ"o)@d1 Dgͨx.Cgss=ׯ T!*%A\M̃S)6r6Bn3B',Ryfr-
eY?
Od]zf W!ܗ{,+Ӫ5t@,P Ft^(VMtN+|lK''`3k2яdi5dru*tQ+.]jҏaH߷lw2`,8ԏљg( ]k:pl(IM[z'#*i,YV#p4agSpI(lxvMN͵ye=^~iqL=2߲ySZW8nrAcrIjJSϾ;yxUk*↊UMJؗVӳ+{߭/輁mdL/?
.(~ao(D石?Lf^[xGGI)i+:t"#08s:Ƒ1U@RR:rt\ŀ,:1M!E
3Xp0>p1|30<`xȰPp%
oc5ll#[]Cz>Zؘ?t^'ݼ[sq\?1 |4Oj1)^1!ueD_dC!z@0Ƨ*B'Y,ŠC!QԐmdT0,P'1"=wDbb4&ұlcSALZc"	gpLdbDx쎷#b"=)&9s朥Y1XHd;8^-
eY<%b$U
wŴ<ŗ?PK    PK  C:U            M   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyGenerationParameters.classRMO1}]`Wp&{p *"Oem*B2^5h<QjY5H6m3ｙL`jvlQ"H0Nsqy5i'\>5!'pyh=XfX|	(x߶_gm	#60q*l	3,]Y߬Tnwa4꧵9ViJdiUaXF6Wg	N%1UgsLk"Cdq,0teMAc5hð%aCi,ʕ}Vp
p	+IG~@. =P}|9(CCFCRS.=ҷPKSj  8  PK  C:U            F   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyPairGenerator.classUVW$dYA[k/	
ڀT@)(a8LLXQv
}ARVhC>9+ϗ?03ϬN5Ik>]ERAd!bIrJȭ]br,C0LژX0Mг>ፂayg71u^pV,fŊa>5je/<a=e8O9ʖwWyga!F+3*0P_-l͇nT[aВe+h3^u߫Wtz1V-Ϸl~H3nۆnӬ-n
@Ufݳ^J<S۾UNrcOtܺc6L\7FwZRgSV̽y8atx.N	>1`$Uz~ia D8qqN)^+&wROYѭ>:1Mt+Yߎeѷl?]'>yF̉jp+%.KxOJPG>t329\=/>0:-#cJ$ySSOil#xCoN99?7D)òK*qC;`*	8/ - WЩ1}EB%H*zTqx_АSq*.ApKICR*y:\üapGz\Ǣ/1#`V=	(XPTcBoՒAu2D51M
hevć^\1y`>G<ox1tc,taֳa?ǱfK4\L@<T~ŚbZ<ϯ^["%җxޗs&Ѯ%$cboHYPoʁIwatdOJKU<Ro)];xOtJ\֭Mz0ҢNQui=Z݄\Mzw,IHbIbPK]  	  PK  C:U            C   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF[}0y%EE~!A &vlXXl|H5a5#&e8hDQbf'#';/0SR"adʀH
 y@63֒o#X3T fҬZ[6 PKI1     PK  C:U            @   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeParameters.classOQϥiS[R^JG半<E
(NʐҖ逩+W4#.4:!jbܙЅQFƅ\nq{͙{ng~ za^-
*Ц@i%P2cd
0zҺ5m|`$1mүѢ -nfdy,䶲)=e܆ed$De
F.-ӗֵm-Ѳ꺞̙*P
VF'bǌn&4,7x2򦱡go,LYAm~u617)i*WVv'@x9Gva@fGhF6}	=T괼bK~j?4	MppT?DZ6B;p18C݄B/O .|p.	α\JO5A-;i'BۥvHJm.6J=.5"I1
RVCwq1Tw`V=iÔhðdèv0]6a
cjce506L<ᔬ\WIx*hPE{dV/욊HVK6VJ=;Olem7vc(:>C#;0~"~CA]t|#?5qcCqdRyy'#3"F3{>
ԉua^dнD歷\*t9Jk  PKf"  .  PK  C:U            J   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePrivateKeyParameters.classSn`~^
j7?g)
:?(~.*0RHz
^Ř]e<$s>󼇗 pK@
5VhTZi;m",kzXn/HYױ[i]ɂ2ѓ3܉EKgvm;oS3MˆMzoCNX	zMc8V`}cayAw
=ݵ/_-qH׸}и©5I^˕qLƄ2N8)P
QdQ-
^Č-t~a[bmDVXUAJQ$C
1UČ4gq.2\bpE)*BQ44j3(skPeޕDRC8q.d4s7)@
pUO>_1υ<aP0(tzɐ&qF)TG*J1HE9PG*"H7 o&~d꼳T:hAfFRQXƿڌ;K7PKm4    PK  C:U            I   org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePublicKeyParameters.classKK@4mhmЍ
q"]U:J MdȿRP xH*bsΜw>? `6;p䇾>a(dUIQ(%Cq`>S4#H0JB
/ցJ:VTonz^ȴ)o"T1CwdWΟDo+奱	C۽\߼!p'ٷQFF	VXF݂5+h4ZҵM?DTmtZ+[ox|dˍ3ǙPΏ\dPKB(  (  PK  C:U            1   org/bouncycastle/pqc/crypto/ntruprime/Utils.classYkp[qދKy))Yq(,aYMY " @B4m3T&}DUnjǴ&JtMigNi6'L"KBw9 %PLgs=wwϞ?Z_Oc/J2H4ZykTrCZcJǎ
:>	ԎAQuj=i0HS^6n>:Vf7>"2<ualIgc|`c+q1PU:XsL2ؘ^sbeeiul켢mIg	\jyu<o$Hn|JChNfI#ccL\f*K'2bv0Jd9	`s䊻OO$2C9>Os\jI{$dnO:K4;˧4{r<MQ;kE{ؽѝCGbż`C2=rxO>7m|y.b*+7ć\DBhz0oJO;qn0{l
'{.eT:\׈#ܘcњL,\EѨ
jWQ;/AH,5@Ř]3cšx
IRC
y1ˑP5&ӕ<ˎbSKК.0'3ˣ!"Ac3L";3أLA{r/sY
ǡ#eSBpkeS{d".Nh`sbc	榱L1=I$H87IWO֞,*ڸrў㑩D{xXߙO>uĖLڅb'w{=bOl\ΎvSj7Bn
ܹ#yܱ$x"+췧]$pY1õ䏟qP1AOpy0k(܀ik
#L"
[)Ѽ
=hqTW'SؑC9wmb</^>ؕ>u`8әDfnMs<Q[3D?6!!Gt8:pBߒ8P|:;M׌t %?v
?]::UAYsUBCz!TߛkLtn@
wSs @[O`$zрaj"3`V(4#j`f=n@
6л'i45pf
/x4|yB^By=?>O+^x^oYjHP,5K͗25GS!5_揩:5ߠ9jO:R-̮G`y`b|(8ȖFy뼟hw"&c`k>]wBY
>d<G&!g(T_:?^@8Zw-[;$
͹d\W%]fI¢րT3"IG¹](A%~ kީu/$]غayh#o4!ӈh/pJRn9L)ydC~EH*1EM,g^m]ץ!fzP_fv&Z'"f!C׈ILp!3Պvґk{·d0٦Y_LGneNzְi,HJt? Zy _	3^,Ilg1Pה[A8C	6]b	ump}ʵ1zн
;C:{CP;X2UMJF5S3U)M<>ڦ+rLT,S=

N6"D	

:ʛJ0L΃7/~^Հj<!ԬZE<*h+p/g51⼾q"RfT騲P{KX(PIэP]I&QK99A0xA23dæݾ3EJ@rmFy~4$;!Π0aW'#p(YstМ0g]>7axQ~ ᝊp\MKN%!qb}_*wUk0PVL҂EB^D|C)--O;FC<?3rQf#.d_kLFsR"b~]tY6=T!W1aH\CfQN
hZ"N\åWY=\Oo 
$!TcoʬgJSI[&xx	Px/'}pd	8u׆PׯsdAC	P6X/ @a@$hˊ,>c%hXsv:8V$Xڑ!4Viڃ_YV\IRsOj,Leh74uӍgATsQ]7Ԇ)'i02!I
,5dۉb%yKWw9PzYRSeeOq_hqƽȜw'ֽ@t0k~O`XuhƇ-LSG؀HhXC>y:ml-B-%fhƗM`{0C'T<tXxWm`A]eWzQyO͘4]瘃Nz)U̢mQ}
%7puH迻~
13AyXyZz-V]Yn:dZYbC~pb--\piB["*Q<<3E2V'?7<4*k&>!QC3袒a W0Fދu;6:7]c..\'pjXEx"XKaK
:eާIFhhIO]v>]~%
`'ZeznlElG58أw\YnʑeyynƪnV<\vn/*[D
LB7oIb1qC˅6|çP4]<&{JoD7q3jE1{Q=*zQ^իB|4KkT+U]ƕE,[|Άapt	` }\%w-]N,|9KoQRB@v 1:yxq/cNQ>Զ$v96N:]5g[sSÒQ۝/[
˟&ejI>w@B:5TH79H6bP2e˅عuz|힇>K#x@LS]B1im\t7D`i	gp@Jag,ws02-@!hF{h%,I"y>'m~w'pV,`JR9#5+ŵ\ >djeH"7]zt4`{>4*ϝ ߖ1aK鴴ggz"/ ;( ]|/i
p0DYO%  
]Д=|c\KKZj>XO-OƖq 3L.\wnIaSq*#@g?ްJ݃Z/45t^r֢g̍gs< 4u~sI(TDO]@nav
kDY}e_RZE5H|"~\Ç-(bռGKH~pӭ݈psNFGpM=|i~Twb@?rVbZ̻.@^D k雛^D8MrDvD	dM])>OHח͗5f[v}80xNxw^f~,*3*^E[<1#ʬfgYXVFğWh!c5GRC2%)W!D$"a+2;3{3Jto9w8q>Ɏ kDB,IQ^
P0ϲ %Q#2U倮$ITRq"x},C̊`Up_d h]77InRZٱMgޢ}mOnrgŝ|,4m}rb8ThV=&`^8tLiΩ/G12+lTMx7lUO)Ԁk./@Aj]6aMJ/&w[F2j[Ķ6\ⳂMIVJ3=7>6Yo=^I,?9CϮsP	Nk.U4B3_PK=x  V#  PK
    D:U            #   org/bouncycastle/pqc/crypto/picnic/PK  C:U            2   org/bouncycastle/pqc/crypto/picnic/KMatrices.classmAO@ߖBVQ(@cҋG/QMp*K5bY4<hbc2/lof7m\$zˠv}z;N|EB$.>D/4z%AϽ\Oiw?{{ѵn0(F |ݙ{<ZLEhO}>XkP1PD@Yʖ4y(%lcGJMʮ=Ui=ɩרP:uLHj1F F*SmXط1ôZ1Yu5F
п۩$|I(RbIqͬ03č!^_PKTkJ    PK  C:U            =   org/bouncycastle/pqc/crypto/picnic/KMatricesWithPointer.classQN@=ëE>L[M7ic\U:X(Gw*!{{f2	
$wyNBs'"ꔁѸ
USǃh`Pq"
T,T3Ժk@4+ܗq׻Ox0RsǓPHp53:G~#Tov5wI%<Nۄ	DQÂ<R&PrV4jXӰa޸)B4He04,*;TOQ{oSlR(ޱ_Q}N9a@}Ai:^JB2gPK҈q*7    PK  C:U            7   org/bouncycastle/pqc/crypto/picnic/LowmcConstants.class	xcڵM0$k 
v82Pf[F8m"mI64=Ho0qCJݦWz
=һO8Fc[d>;vgvmY sBpUfp8CEm*LUTTPѦ"CN**b**vUܮb}*8⠊w)QSYSL)eb(<huP$
KX747lb`CYlډ0䖣@tEKpø]4%<ߗeY,3^f0`V2efL/3Uf0̂
Mh66ØqR92|NmXD,n%n<y[SvmPhչZP-YvLm_/Wd+evGՍ۸wi8F۴巆E&vMo8m춭D^eǻuih8Fh)b&!e+dp,Sj
GZCl5lcwZi*.۬g_\˹֗k?s?Z\+f3x)İgi2Tiė#o s?Ķ#hk،n89#1oHlOghF<D:7ĺ|\KyPwL71o<C5}sn_GmEbeJ<ޫX^6~gV};xjx	]֛SrOZQ:wߨZb&Iн'ٟy}%vcwOcg|o8SUmǪiTnjЦYX͐'-
*جM
(YV(x(ح`n)x1f,b(	x-/vIMm0EWVŇ}VS\rV0udNEپZ Mw@ӎ2Od'sI9t9}=Ce	/ЅAhZ
&a;!Dh%X6BAI:	QB'"NKGO8@8HhMyń%
FBF
J*BF\P4܁5T
0Mû	jHNCհNqrMOF'5Sng0#|	_"|	IBAW	ӄ>&|poE6;G>G	?$cO?%<F_~Iׄ~[87?wNݍ_nEw?q.	8JG7¿ݸݸ#O7Os_0h
=ٌoj{o&&	5m/agIB9MZSڝv_*li}Ү6"I]iWI)6$mˤ~iJ6&HkI(IZڸ%AiwH&mQ.vnG?]ͯ;ͮ?	~tp;eNcؼΪs]
Y%r?*i\Ru\x'ZpND^?ʠ(8nG{y|M'Z& |gpxiVt,eSä^6\ǡ⪗M9ǳ=+<o,Vpxnz)e3wo|Vs}e}/'MPw "uI;69R(M9w|t"fL<!A(BaCp
E5m5-K3
J2eɇC$+7j\ql +Ƶ+5>5"kjt,NA¬c39._+FRv?!YW]{c:|pu)^vݚ38ʏ4?Igp5^V>=z^K^ah`gpϖޫ҃N8!'"Tzu^6V1~ݞ)bbUEEnF~',)CRB3<-Ur=
C/ѝ"C{L3B=_ψᏬՃb.IR{Fh)?'WXP&zgUW
}_SMq9%?kc<zjlNUD+N.
D6,g9!ZB42%\2I9QꊐL[߹KbUЦIyi)?'WS(U^3䲡WaW!8^0"Ϥbl_ƧKB*!E!0$tԩ)L9h?3wVPK ]	  x  PK  C:U            ,   org/bouncycastle/pqc/crypto/picnic/Msg.classN12pwqe`XtND"	VLJ3Dbxh|||;cҵ6:a`wL0~QeRL<>&әCqT|1
F"ɴOȥi6W<~\&8xђӐqv&F(&Q*C}OegA
`lbbb&-vh605hM:#^InxNQr-g~
d'_V8}PKTP    PK  C:U            5   org/bouncycastle/pqc/crypto/picnic/PicnicEngine.class|	`յ2K2Y>` 
3 ǊQSP"`KdHF@׺j-}Ֆ,-Jj>Zg۾@sν7L}ʜssr_> Su?#%/>w-tS
'u,[v{ZL;=A
B_ AA=½A8Ṡ8/(k0fހ	
)XS
Tj=թMu0RkV\!ı
kjT60);!gP~b7RFD#\c9a^Pƨ7ZFRhe4KH5Fh(%
TBzzM^?W&Н9fMM}NlWazAVqEKJlw&YN(ג׃
م-p^jjC^RFeroM,nsl3U[ͽ閪M;{=+2ݘJ@Y'ڙNWe:3-HLgBUDaV[au4
pTrK._./qI%T{{5]ҕH6M؉@]WGGWK[:jI3Xto闤28ޮtW*5[ؚLwSqw75v$9ӜtuV]ioڌU6juvV{pH;6!u'lKΞfDL[z6@:[p+'*;ӛlڝNޒWڷ=Ӭ
ť컬n&-JVyJf7SL7JMŘى{e-ucllieu-bot|i6aUYl\66֯_"8aX1euK:q2W,XL/]ҸJW-[Q]kYNgOX%Qs_uewd/m\56WbeOFV^N@heqMynW׻91wֿj(o{E/iXl%8]%d5_SeJ\՝}mwb;If%EJu.
K[l4lNl<{ޮ9[3͝9zZp6+sڊ͈*㓯ܝ|5XYg"Dp
!jiYҞ^BkxjD9ں5BYݙևZN@\dřޞ.TwwjgsVܬzg[i[
ԅ&\U׹*ԗiW@zLZ܃Py:e6!ʡ@Aؖnh_'It]YjE};h	Q6;M*1޻eeWWo#J\[@Me:1Z@Ӱye^Dꌕd[S}_x7@9KmM5F]4';7ӒR,Ƭ0r&	dZ=82Lg{f .w}U*Ayu>KjiPGU36]j\t/.\ &O%]k[an]V9Y8՛f8N-
7{UiWkkR]tRV9eezzp oi&/Ou%
wJ^4@on"2(Ke24rm/Ϋne:[;pHfg*92vyUL/
%-D2=쬑vS8ӳQW#ϩkOͩGT־tg魤ipe+|!D
BkwG6	
f_Ξt*JI7sN#E0z3sP´"9tbp#*FMlRKwМz"H6FL2ش.{q
f%WӛS65?#]խ0SS<4wfξUQ4gVra!+37'9x#8#/͐;cvS.dەJ3E/X	s&)ٜ!۴s'R83&g3+8X-q"sT'T_hgNҖdMfY7䈒$b\M5W᭩nX0jnҋ#G6MzF#e4)ih䲥7*wN"N-Էv>޺Q	ϥiFd$0TTUؗAk	If0WB~X=~UH)bDFKل&Ko(DF;@OPӆ^Z,N`&չIR[I)0.,%M+ˠrF&6lK7۹U"
+RĀ]RtNu*r
]WwVyZӂuv|Yڂ=pKJL&f;ylB]\յL&[)Jm6"נ-E",$&OC -YׂZ1>n',g|҂ւ-ްwނ?X¶D%,Ql%J-QfrK8bf%[bJogV9ޫ=,?ĜWW"fK
)vfϥY+N#٥ool1K̪NO c+[FK8<A\{2>q4;D/b('7xFƹgyt>gV}hM\}#@Y"Xi8!Za;qb~I$}'⩪Hly`ϞDwWfyU%'S'"؆WG|6yן<yuw	-¤+l?"㤦S+*vTw{Nd.<tЦE^n6YoC\gC'.& G	|0	XB*	ALB,&POr">OIN5D jsE`.XIl_!@l-6N%8݆[,3mewIN-0ۆ@̆
3$lסچPc0ǆ8$5̵ߡֆa
0߆Xg0I[o[Rε)X@#4\@	\du3a-N'p
\lSa-NKl"\j÷26\ \na)u|
r
( @ 6}x8+ʆG`-baXk\a:zw
 
FMX)lmZl6|6q-.C [m6|cv[T;l(aHEwŽ6<#2q-6<+
-.>9_{mxA o\*>fN		'mo
7_ţH<f[S-mx܆T8`l %$	|+!8E|$_$p0Q_"e<Ei_!FA)ĵ^ !q.	|bxx~H൐%J[<OॐM-^
='!OSaѩ',aU6fK|mEX􊿇Evaq]X zX	":,qEBc#Ѐ `($PD@@	Re	8J`N"p2S&#'PMgK<	Mbu.&%.%pz%p9XNk	\A`6	|FMaq-N./	(o9_&PA p&Y!(,n%"43T-Z@a1 HJ`f( %pD.~@	:to֤ޮLw{^؛j޲,uUjS{Ƕ0*D
\B?	X0`^M9p/toS/LߑG._JLKwқ0}/F(%+drpa9TPTXdp
?*Thp->SᰒC©JL`
tW',N?Y4MnGo슍hҶbJZ!wuc#p&Alq,pH+=CZ/i%	i]HT
iW!cP<4I2G9Qʢ&# 3s,zvBH1iy3,P
o0H:F؇:F;盶^0ky}R;柴)D׺C{݈ҙ ھa#C_wvC4K-cr͎EicCZ:V*Ax+7SczΜ˙gLdg.0gfp}y*e[ι85̕_8\g4(vv8r/FxHUjҶK̷oۄ~WSÒKFWC׍2]%}hBm#JB.ۇya(W!m 2I9a-2RPav޼yέ|?XVPY5Xe`܄>%e7XuL8ƈd	hHXq=~xTqBq8CXYFF> ÏD
.0b@Ԍh#kq۟
/Tz48;р0>yH\bPc$[M#ڏb*jEĵTwu#vAa@f6-IQ?cp9]9@Vzۂ VNd3C_`j-"fAHGkAAK?aF8[!FOEnXOFh9$^-%bѠZʯ;8Ob:]-Xf'K$Am.LNIsdΔTJpMiF[ԎsJ\$FF^sJ.;H-YߠYZlTinX)+EKznYcD{^hi@Dח
.RA,Q,eFhNF40\VUՆB`xx2{uP¼wd7va~nmý~=:Q&G=BN!hah;*dhBB(nCsU
YD#kXth#z9
%QKO]%A~mکэ\2{!0(f#qܠ}1b*T:A_X{Cu-ۺ+d'|yPncb0lQh(8zG/`IT}?llP]fkP|#ނ,2({VP*
oJCYDuУ[mbP;;1"&
qҨ5
԰M̥
d9}H  U#2}).6-U3\1[A18A ڗFA;-Cگ5QsT&0@E H D 'mǖF~xCO:~Xb:Ml-Y<[w
Dl@q҆L[nR8C1zԥf!/E"1RnF@5zmV(7)X;e3el~גXL_zly#sBe܎FM]8됝Y*PpߨhXgpY`Uq&a5	fW?%)čF7j&iƩkЈunU*qTX1RkUU.X3QH6Kq|^񤞴1IqM$	3`,b0Bh8)3Q_<#S&-,gd&P)`եI+@Cnc9IBS[c5%b(M8[h&'K5%
{UU0d	Id	A	l$
Օj9GA)` 1{!vQY[֝S{\6A	RY932Zp%$Gՠ4Iި>Uj/
g}fHC\*P-Rq}6F&E1
nWd_Xi>JĀL?B'r$Q(DJ8vJ,N:ɤ<3VeEӅ~2Kc`
p%r>FџiiewyB<(i [2u&/eICbϺ[6BaYaςM^@f7,"O߆o nՇc"!ZE=Y˩z̭h셳NKuHBxXaGo$#*h	۝HMUB[;pi{\R6=LEtX@1jhI8C=Y-0j;%ja*W24;
%<
.?R)hS:&߄$hO
b^E#:L/Vi <Hsm&Y'˜2jp%2En[>Smk˼SwG
Og'7'Z7}^'@#'<&y!!rZc-iKӀ3WZ]+k%щ:Fq"<)kTS6m"Ɔ[:z6uXMi]Na&W~L}NqtF}EsY- f
#KH<rE_;Z<K#-ˍɛw]XnXbѰhUg!Z̩+)K9bS{1x >׳-s,ъq~44/yE1yJX(gL"5G`2
8a$-!䩉PvmIh)EUx@\A1ih@$aܟ72VObDB:==Nрڑ!m!f ˮx9N)xsHoDd|9 @zH@Ɩ*r6Vo,iգ`cJ@*yW '(Pc>fBO&f/$7}B8N*8"'b<rbq#ոYָj
N\ʛER2Y넇XYP\={e+2^=[趨ԳwKgŲe;jc;I<=~w{:NG8Ym(ڹsӲߧ
JonfAlR~_D=Qw˸[;TJ;lNZYhd_XAXe$>4A!{-;2~
@?A!I_žIs1MU4Vh_"{?Iq+q8
 v`OqEei|lr_9*ȳ/;gg	U;Va,,u*PR^X<

h?$~W'%&SaĂò\:ըJމw͟ͽ~4}ް9*he@V(|qZe`|[%xoq,+7z9,wd'EUtaMwXrX{s
rCR+jZ&[Kueٲ9!vbBĜoӸOOo.):18[|#0ﱗ<
ħ<nVNAQqŇ'UWIw_p۳dյ:G,JJJ3(M
_O氬3qEo(61Y'iu~̗aVJHfg%otIiiJ@<o$LPII>;<ӫ{CCF"һUi[/qhv88fBDBH+/xO=^'ŇEF=آ\ܘ!
Ґ{ldXZmtl0;MpCFb4(jmh1JIKEcպQ;P?Dcd	%+Y1GhHtEGE:I|d693Ͽܶ͜Mlz-P~\r+,.~`?2WFF_?[H{1t\bzz%[`J9~Sŗ9~F([@C^冯ܐ冿r)7
^R-3'n*zN%}ejy뻏8;֨*2)Qw|Ȯ/y_bGhhX{GCt^WZcI-(O>!H7a( 1{fׂ%t[]$/Pה9Hmk
jfΞ횠kʊo·P4O5-D
l';;J'M-qXqtpPǞ88:MVŠ2q}ڌP[e5\,yz*pq̉p.0%9!>]Nm_$S&)=ZюY7tGG?;W̊<3-o/,4o<+TvQ7ʮ`>*P-KE_Ɨ܍g;{&W;ZtF</{0|5.Ʉcزh1H/_䢟lLcg=Sy<>N*{l2:;À3C:8qokP:`E0pZ"̣G<LortCG7"mp[(ecUjnv5r:3Q2_
SiJfr*̩:!mcR!(Ux¹ʊ>
f\i4+dR]ѷ
 sܧazCKTRQvdod9Xa)'[}:W ]Bnq<;>7}AOɣڜ|yXˈЗsOե-zԤrS޼C<|>#ɡ쒳9kr"OhAlyozB+yUp#wJw"hһ犯>鳱Ѧ>C^TnW1zZ8>4@!>Z(xE.yg]Ee<8^Hqb# Z@E H _)\p 8JM
J[I0fJTh'p<@2͹MQ5(Om@6(sM%1+Z@>8V]5{ygO4Ių"39=N[jCc^ FW̠'-0`tzޅ=Z=iN qL1ut3:FW~wrŚrSػcxo1Sf#`7[M#^5]
YE:k?WaEKǍ.2t,hD&مJ4ytYQ]hbPSMz	U!GQ@k~<Oǭ+ͷ
|ȓ~O~yi+Oktǒ}:aC8tr|zkCډ^ZgyZm\Q	uu:8
Ҹ2REXM꽲:8
D66!qWHAt,JW4/1KR]v,q46EB:;jS"3-tM܆S[Q#OaGU'[mP^N`
 ￎ}m%e?̎)B!c^D)~_qЏI~1|Zϻhw7c,-ڿS@^ Gr\t4F(_rtBŢN9.tlR"@9h9IcցݑCm.nⳀFhio*yW;)t67qSC͘i7F݋6>KkG5}PONs<"a9e|Й]*;(ulztr5
ܣ{\
7}P׫]Cq3cu߅l0gZ-np(RWX#.I@lq׻g{|;ކ !GrK+G#pq(ku_K!rNXg&ӜlO)\O{-A!H4H+i?e?9F+gXeM`VБ{U(U+\QhE|{{ASzECU,soM
l0kWZ>#d^06ʟ<u_b	:-8>+GCY5iĳPT,qZO
fkЭ+"6~fGjȠvL$L]Ywm輠Qv4)kg9ǳ`\W$ԣ )_b/*f4TM
*$@6Pl.
(
)LSfTN}EXhG謸ܝ^	v>G~FpU=Ix~' .HXQVQĭ{Sl1Nx?TcP\80S5^4-3=2QqruTӞ䌓T.AbL{.OgҿGhy-9'!!q"Q~9n'u::Q]'1juG|l)yE1`3<߀)F8
ƣa:s
YP}|GYI%H*Ç0!rȲό+smz1`YmL@#.Ir"Fv|EUkr8g|e׉Ew"t!fzP9~"lar[ʞ:Xv6b+>	
)U΋WR1L[)&aC4$͚xedh(8}i`Ѣ7NUJ3gUқ#,^Y0kMm@:Euj磂GU7)ݖ?&UA~'9M8m(̥SԗpT;a#Ȅh01bWסkuv-)ե*QWQ㨉'HP&ia$	$Cqb =7k1t]wBl"icgH;*0I20U؏>";Ep,S;ؠ1NtL}pq78ßWp%nO1LAT0i%2*%d(	B<ICU˱eBk'-"NS;}Mtd'ёΎPlr W{POO[rT͜)<7p
j*40˱7<Q[J?St2	nM#ʱGuxR, :=3s?.bp_Yjh-*8Yl5=m
1(SYqi|m&٣j )?)O,e]{8."6xb}8%W}x
@g`Owr-A4+B#P='G^<N3Qp7ǟ씚Ks??R#I(;ez#}	1 ǿzvQat="-mt-5Pr{)j[»YG> 3BfL&QMb}	_TӽO[֩\Qͯ)xvu꜖. 73wfBJdyap3.@BxfXۏML	8a6PF3(P<8098r0w%~7jVKs`џ<fwڮA8]d[fiQ8F!@y^OhAQ\O7@B>1_U=K$KCһjw&wrXפ7KINkOچ|1b2zE
Z+2Ra~%eK1_)
PE@jA=dMfە)JoE+E|9a1"ϊy2q@(
&EiҡfhoJ`ПSF
*]
fFNҮR!J7noomf0GT0?pBu-;%H<x"dzw%q:]:_7dno;mXMtU>$R'-c8\;LNnp*A{y$X,jfgT:)c6">H \y%xqSj~Q!K'K]\'ի\L?PK)y(2  Qu  PK  C:U            F   org/bouncycastle/pqc/crypto/picnic/PicnicKeyGenerationParameters.classJ1Eoպr(dB.J1(0o.| JL@)!~?l`p_iZcrańق;fe)EᮉK[S*IN8A7ʕJA"B-Bao헩ǰ_ɩU@gB̤w?Ia04bawBgk-]:j I<b%~@ VbFvm5PKd0   
  PK  C:U            ?   org/bouncycastle/pqc/crypto/picnic/PicnicKeyPairGenerator.classTOP:u" Ӫ4jJĐ~ ̋ЎdUȖ1e<p>l9s(D_xrCAp]R0dru<oo`Ʌ<0]׼<syn3}t^3y\&
]ִw{YgnN=4M;oc];NɶʖYtQkX-V3qlgѦøc7/ph5Pn2<XJǈEI׈Sc+.v
4õBT*T\Tѯb@ŠK*T`$瑩ȬnXV༂9AH}Vf+.F~oSKRT%YZkS*6
flMi9a
WqKLAѡI^ADtJGLx/Ɛ"h㱆xa0xa)
71a&0M8FXᣗڠOvB	YI+*>C>
.^=% c
1hǘmDpf
~
VrZ<
"pzO&1S	&6eLLqJT U?yPKgh  ]  PK  C:U            <   org/bouncycastle/pqc/crypto/picnic/PicnicKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF3}py`
YB8
Cd`INK(tj01p0010r2p0p13C9?%A(xF* "@63֒o#X3T fҬZ[6 PK.     PK  C:U            9   org/bouncycastle/pqc/crypto/picnic/PicnicParameters.classmOP=ED6AV,
DQQĄYRY:? D?<EJ}Y fRbP(Qh7˯2*w|/d Vru7Z	^
h4^SXZP6w\'jluk
={ͨa-{wnYᮀuכxx_OB7l&5S@>3oD|?5
ONE;]j+ЫOE

~^PyfO3^@Ĵ"b3F18c1ɘbbc\͡q1ø*&6.c1%B>ˍ7.-LqNOgr4$'Jr0b$KrRe7F%em|tdEv!+X|ǕC)(XG|p-~s*؈[JZtw>>Ud+J:J+:<QӔ<UJ)э\0emF\Vn=T5)FUel-PKQN    PK  C:U            C   org/bouncycastle/pqc/crypto/picnic/PicnicPrivateKeyParameters.classJ@$iӦj[uwif#+]dՅ]PbS!oUAQ\ >xB).sgǅ3_ aqRe.TIJo,u*12=4'&<\"7ϕHQnd:~F	`Sl/~?5*Z={rẨ3].;8ݿG:|lxha
}nW0~RiTi%mSo:;^~JJga
/hiV:PKɽl    PK  C:U            B   org/bouncycastle/pqc/crypto/picnic/PicnicPublicKeyParameters.class1O0i@-0$/	(b!S:UE
Np!
$B\Sҥb;}:	jA<dhRKk1E)ͤQ")ig|J"TQpd<OJv+(4RkQ1IW0IʯKzv_ȁe8_1#j>|h塅
lS%EYIYmlRݥiMGoyEW)KʁPK}`7    PK  C:U            5   org/bouncycastle/pqc/crypto/picnic/PicnicSigner.classTYSA60,' Q@4>db,
UHYTgڳ*e2t_{
<SDS\RF/&JI_4"/&}|Gj0F,]1V9bp%34y䞰'-x+k+h^AKiqI
o6brFֲiw[|d;
9FE(U9Ulo1?ky^NLMun丝5fVqKO*ݬmd
g4sPYpu,ӶLcW;ͨ~k?ZHb&g1=EP®×ΪC3Ptbmµ^vji3g1g`|lX?d8k y~06}r&\}h5'kOpW*"븄>'hF@Qu#0hс&mtMѯM0pKA
kbZCCRJq[	
qLiH`D;%%q)&5\]P]t_=:;sY䙜9*
 =9]<i<%:H+CpGA'ݯ$IwvGko&70ŏ
1Gа͝A`+P\<V)V|<1/V㐚Uث&RavCP!Fz3e<$+xobq(P5Qs
7|mo1Wo
PK|;M  m  PK  C:U            8   org/bouncycastle/pqc/crypto/picnic/Signature$Proof.classn@ƿu8I&
$i4-\@!
D@9pK%Y{S+g$*$T <0c"#xvwfd=<XhT^x2xZAی'9*p4IvG5{Qhbt 
RJ\RAQ݁8GJ_U`(hbi ;T}tl#:CcGWqNEo2RLEֹKMJGZ}m@)C-#usQt,W}vʦ<,b302rx(1ʌFQ@փ9\d\b\f\a\c
VqK`4Gm[C$pf6bs9~){CuڸJX~3-Qp̴i\L!Կa1;'ccwc[269F.H7Or~c5fAMyK PKؿ  0  PK  C:U            2   org/bouncycastle/pqc/crypto/picnic/Signature.classRNA=mB+S(¶lb
&M$6IWa\ewj{M x 2ɞs9ů h1X^k!Z=P5"ax.NHɁE:Nt'Par5Q$U ;#pW
PRXKr]J٦ҟ"?7*dxvC2<~O>0YB"H(ٸaõQqa՛RpAޅ[(\3jY̗Qw
s0x6tnMWi7Yf^pde[FMb~>J+|B6q爟#}>vtf{;?hG/GX^5ڇX8yÍߨZ9Ɠ~ycGXCefc2 k,NQPKB     PK  C:U            :   org/bouncycastle/pqc/crypto/picnic/Signature2$Proof2.classJ+1ٺϧvl/}aAAƫ8CfL*ַ,Ck*^j 'd%y~yxMlr,FF.9iױ*PپiH6=W2hJ*4 N4n6Uк0ltht俉Q_8ґ[ߊ_>LR9v_J>tPp9r0LYNCQ#Ae#	`L3~('7c1˘+`tᵸAՍQI)Ӕ_(V/(r^>Gv7:KO8WŞү#M4ϐn}EvWb5vV?\:@Z$6PKC    PK  C:U            3   org/bouncycastle/pqc/crypto/picnic/Signature2.classR[o0܎)-v aVHTZEsSpBN*

	
~ ?
qN="؟'M<vƚ
TPF,/;xhbw.h&Y>6ufX`^-tQ:ҏ
#rG$h#~>5U2#'i~b5ֆj3tMhe>I_q|@m%\d;ࢃK.E(L,pUM%Wj8p7<T \\-w\\]6=XnQ:D2'Ѧg.J^F`;hKt?)M§+/{߰[':V#O3jգXɗb]C?PK,_    PK  C:U            -   org/bouncycastle/pqc/crypto/picnic/Tape.classU]se~6MJ`#"i@ZHJՕFXnvK
4
W8Noz-nB&ys{>=O TERwBg-ȳU&(Lt	=d-F#Lwǚk	۱A1=O!ӝk6)<zf81oyVC@Q-ӭx9?YirvnQ6^&b93Ö3t]񬺀n%`{^vʶۜqVg&;:=gXYUl
*Cnj>YmVhoαiVGCEH?62cn}&;M2֮Yުynfmf3Ƹͮ6"9:
p<FL-FDЁ6</xv?&-dOsiy×yFfmu(GCSs[mX6; 3~b]g;wD4ۗ%
w6vλI<RW[>/(H)UVQЧ_+Ԭ#qGRį&}CҩG+D<l^NzF/3`8p(C5M
{!hx	D4<QC$d
/Bp1
СY^
Cvjxx[35<w4t㬆pQ`80.1Pdc(8q(8xeb
iS%>`Tqez;<z#FdLW,:I
Z-_eod][\MgQKgnÎeiqo^F?C~"N
i
KۨT>)JNsx4qLq9.- ܞq).Eg٩<I.B,,%K
0	i$++<@p	{v%܂\{:έiF7-W8^Ӯ'h(LфPV14V0q+m|۸>Ǿŏcm\RQ'9V
rêRZ	Y6KؗwLwKMغjSRz7bK~7:Ї*n"t@S܏,zp&ӹGL,"IR/KnT@"B:LQ
S䔻xk`LO'BH_"ħ6~=<DTa//PK{  	  PK  C:U            -   org/bouncycastle/pqc/crypto/picnic/Tree.classWkp>c;7DL#ةĉQ'y6^Kki"	imb( ap}v:әvڿLϚ{ݫsϹYm`iz[-qNW[%`4eqpR~!쎓@%o<	nm8K՜SGXPQq$9oY0.GGFeflFYhrcVv`F4ERouخu闠=={Ǐ.E&5)
V^p<c%M<k
x"vx@4Q0̱L.!DD~64FmXY<ȓ4l}$ͼZwJEvvtfe.2)+ks*ڨ'F6)g#V&ZT2fMUSk#hÍeodhBK̂gqt;AnqsyBCQ5MIL0gM#BS7oi(b6戽;FpzJ>$Mrv@ײٓMZFYEoUP{1fgl}w(KIf^&/		rѨmeڱ0IRR=ȋlu/8eRùlb<aїDa<o0Wh%J+V"k%G`cN'Xy FWBW,EAqiD|h_ڪ"U8i(s+#pyݘYF+'TؠF6YU
*Ua
*P
U8^-%~LPJ'	46V՚]Q7_)74p'H1@ +m+Y{HjpנH;DlMN6ky
n4脂apkp<WDv>
!'r';4"hYXA)uDQ[a; -PF5h5Nz!_"	/0' <Da"2* O 
_O^x)jED#"%="'C"	Io S>D clXhdFf6t03&ƛ ~XGGn|փ!)o#PM1{|&ƻ|18.P8[y^>ˏe^HCBrAp¨FjekYx5zh5;D:O
Hh!Ã?ɒ|dɓdrO,e`fe9tZih u^O0iz|42ecanY@ֈ47OL
L饿LfǿGKp
I,K)W1
"{T;JμpnhY{lsg8D2=^ٖ9_FьKHZCXF5g5hMcM{;'Aq|f";<yln#抽XrcrLY|]ހW"w~c~ݏp^}M<)/,M|O"~|$9K7yx
_B @p_Jw5t/fF9XRrmt_Tn[t.U&Is6r;݃vܥ3i	׀zlp-;-(
T-`|]T;L?n|A+tF\]sFUwd(A{PsGbIhX^ׄ۴
vI3W
CaJzBoޞ#ļ9pRtB7^gC5OLxь'x&ܕ GЈ>M?JPK!)kPNvQǍMB0ȆIEnux^>g,Y)!5^܇Q"ΩWi@e 7QYŶ|[]o"Cj#A񞡌-׀h(_Cu%4(M	A۞5}jZ	(QVhbx.c)x`xeȦ+i}GwW0*t /x,
Qe7	Bw\!VRpZJXAOUxaI-gJ="󀥽[Zj-
qx"60
z#P`
G9|a
C(X|͑ojO_cJX1M[CeX%mZ	xg 'h\6𳠰[U>/,:8dplvs;x9%LZdE`W"4<Ϲ/o\ &Tt|o{uߖIn*UvkWR-}28ĝ@^>3sp-"~E5:1(}51d.覚t&ww&StE4rw)s	 ]]}_r@VEЛE\2LsA,~q۹W2&:;]8{,埆JG+KBWj>ʿ^ߑ-Ĉ^RFŎ!ʊ(,(.FBO#NqT}*8>"GgutOuEW*D]~|~uVY)Nrpgl&ٳ+5'?oN{;밧)+r8O}NaƪZ[b(]nWk;IE#bU23Ahy*˨dfmui
Le{|Kng-)gafξ8PK;8ƌn  f  PK  C:U            .   org/bouncycastle/pqc/crypto/picnic/Utils.classuRMo@?:e4PvJ %@Pj r@|HXEME(#^z鉊?5k;I/M䙷o罙]o>Wb$ 6 p%H5Tj^u3Nm7lx!l:;֣^;Gmml
H@
w#Pvg?pXN
;Vsϱ^ry!1[
f/f>`2W4Phi5Ȃ\KUX::^N%ygvw](f/z?h>B R+@9H%a~pآ/n"IRTLT7ATUpJ:5ᾌL$R)Q"©X)CQNbB	YZh)R:Xc:Z56mI
Ĥ-bʺX7F٬?OiJQTH8Q.? Vg|RrBSѭƘE%ܭb&;2Ƈ^%QgQ-`V89)\f`
+&:ʐ*z٨qx4-E|RjN'W?62h^O̫"|UIbN<H?U6&6C>HlnazҔ۬^nPKq<[  b  PK  C:U            -   org/bouncycastle/pqc/crypto/picnic/View.classNB1rPKBE74.0.LL4!a㪔K=|+!>enIf;O 
2d6CX.5CA2/9qzPQpXݦqT
z#M}$@ڞr"D'J(9v-G%hHFK%?t~f(E<v4|  aCz)jm<r,ppXKXX-5uel2.Uʴ,]j?*OsZ8-(gHدa{N룭Yaym55PKЍ4{'    PK  C:U            3   org/bouncycastle/pqc/crypto/picnic/lowmc.propertiesD9-I\u3B1Dh-4@PhAcqB͌ssۿ>qWV/o߿7_n'o|q_{忘~}3_;`_??p}BlX㟜c[j]ÿƿ//JًۻD^׏r[oV~u)b'Lξ*տb;^3ߵlAH`:wF?>ľ=}۟o;bVRB+_6Mѿݾ4ؑuگ˾Z;b{a5ڧM-{}WǨoGNRΆo?</Z緿K:clg>Ǿ:Ϳ3Ğ?6|n_bu+ێbpǿ[f"L;=ڟ[FѶ9!E5_^;g/Hճ]Kv-[۩ovآCU_-sO{X([SIߝf[$n;Tvk8`vtc𝵫?F/~
_NVmЯrBٱ,:6ᯕS_}^n؆&l!	hG˖Ζo;ocv>78vjs봂f{M;<vڪo6_vQ~
xa-en1o{<[="v͐>^m#sElJt9\<YZ&M?M\7>Ewan.ivyڝCk2ֿX5s!vߡ~Ziy3W{ƙѰmэ=.v6v]cObtN.{[.sGZڟb&p=^9͒؛XW|;vZllڱO/mMkӰѵճcfb/nn>Č
{Nh[}cfFƮ-j;eg{lfsvø7᪚71]9~b18Mj[A?7Pvn;.ؚ\:_Mi_dK)(8;hcw-VM`Ro=agw٦ۭl?^&'<tfo7[;C+M0V'<ZȌ1?hkbvell5QFMtakWoAof
;S[+s<~>7Vccw<[`뎣a3/`_mB;v[;3W7.E׾7:a_;v{mAGSasj Osa`cuhݱ9o/b#(-[[{H7X]mwtm!8e;TP^Ds}>߶^ĂA8dގcf7;ff'6y̞<>܈A[ *ٿ-av`kپ_$!g̅-Makf|SaUe/`F;Nq9+|3o}n>_y[Oo )u3@c'쏹ysI.	G?q=Mll>pfETlLmۥV;]a[O0y`$(~)^NiMѯ4Mpl7<[ml].̈Yaow81~
l_CqGGfGi|MU_[[{w*<>ճߵwCm2|ALs9a9Y;~f@+Yn8
_
f2zf^؂ۖWיAxjcn{1<#;.ev)nLC693ȧ^Lm}LBm-%,$N5 ٕ_lnfV?/ёB=$!-;1
+*5a^>GuUُw
>?wm_"BH<"
nIg-d5[dLmݻxXɭv;f9}ƾ3m:[Үşx(
d	vͰخuRf3{5e[W'|H?K@Fol ]5CkgVc<lѺG;?,~Vh|
uE ٶ_raɎE)]Y
=8a&vÛٱHPޑ
Ĩ4sx<yPm1lm=[_DZ	0v{wlG+O,KDdY'\vǭ9Dc1iڵO<<?<tߌ>\[Ck/zgoYɜ)Tv̲54[-КضҼu}t?v_؅RTlM"&YoBϣ\,$|{)ˤr\O)D¥t3vllF-!fp
x.?20x.Y{Ln% JѭX 	ŕ'p%x|F{Y;~sQOR|7ojo2slh3'v	NXa?Tsb#A[lwh܈U1,r@ղRsf~-y$m/;.{zDjo);5߾×Tjo4PU'rZ6y]/sm&PۻJr8<mCy/G7:| C&Kr-p	<e~x^ؗ>@`-5:`Si|@g.`tOntݜEkA^A3f;fTM%ǝa\bJk_ő:<[F;AfSpm!l]LhJ;JǦxhQݮ:IxYe*[q둧-R0=mY]v<m췘G+[_W#BKpj_&~෿|]Pxz J/߻g4[y}Uyh-8<ڝ{ckb1߅%2tG:!8.UrLyf6-d`ՓEn7=<۵	ھMRDٴ5頾/wPI~ז Ƹ W!)o6~%7T:Ӌ4wvS>tv1xH"ՙlΘLo'rXP, +%W=z

;vnb
hxE͝cxJ`GU#sȀ	)mEGf7؞`+wO'Mɷ9Ts`n""Pba&ŔX4DvSLg/ǁ26w`Ne=-
~s jW-xTnO^6/A^-DWěnĲ-o]'Tђ~;^|?[}ymm7'~sܙ#':Q Ժ?f'JWSԁ3CJ̗#"
Y[@VN6:~^*\/>'ǈ't(əoh[ĄcxtRfL ηup4ocEd-94#d=Z$쯯	*O9Z~A@KȎ7F(32 Ώ4؄Ԁbj72؅a|Y4;f.O{!Y#jr/
W)r#}uk8`KbPܙEKҶ>Vp
?ل:'?D j
Q
34x{<- y
:?/=sovxL5*5	XRON+IlYNTxIM1 ͪi	)R`d RW8zj#"|0Fоs _T̲m:UIm
<Ghڄpq;|~ 5)tkwyͪ
E&_ȡXR{>>c[Y*٩kԼ%	mWo<<j;K#BM3_4;HxjF$&;`xiiwc{jo7,EX݃MߢJ^P|vP8'*4^bέeGӟvַ/6_@cf<LfUe u~޾y-J"f8|	L} ^v
Xta=ft6/lnFzP}p	&oA8+ok,-ęF `
݁+oD8vjϞOx㛑ܤ'~+n
l0Hɀ1mXJ*۟He݅
Kf`(\^׋"j/4ڞu:ͧO~/U-_nWI=Ac\ơo 4A/%@nTds=3#O\ |A& Ny\/Mv	"->b{BYIWx]rѩAACvFtw_
aI3;ǜ>c:v"I6j!P$H˾#Enn"fpL8Ē	%6&jDD옃0 ZU" *7xDY~Yf)Sw7Tc=6֩$}#AAp<}n:BfG|@L5y"<;e٠5VQxJvxi>'=[#ZbbJ8ρesU]0"*JWXxz[+p$񹞢qSlBwh^OɾCǺWQ)mGΕrb;5Os6hNA)c @4Kl\?^dz-,B.~66z.g8b L"-h8@kQ+|NywP`Ûe__ C`64</@Y&I+TCq0Yc
"6S168qȔ0/1vy$nSm+ k4?s21x
Խ>Krh90*-'tAt FIzlXTp+T(y̐C3LP"._[vn``t,
 4
	+??3>&jUe }~9n8ؚL?n3BFn?CbIppqRJ+ ׃:J1U& 9oz#fށt#ղk/zRfq]teEbazȶru' AR&HID1޺]׿?=CeM|{$0vbd_ԏt$шX3Nn5OdeG
<gǯ^ߵcҮgp;}gC]bW#"e>'kGa"Fp<=+uĻ)T"21^*JM_IwD]	1/21ɋI|lsTB Q)I0s/v(' YD*\JOGf
PjGV9Z1|:GP
'0GHSnJ4p;,V_˔ꞡD݉0[(8>Ĵ'W8btANtȉ#-iGbF#<Tls$V;l
) S!/W UlCsLLn/jnb ڮ=P6c+)@Ə/vSGg:{
jjxp9op|/G8N{֣Ri
[p%$JKJF>(w<LKбI]ތ]Ni{`~r6lL|vd'޿Q2d2\bnr1;B
2k;/X,B_Wag=R,]xGք9nUe!i$.}O/	#F(^	HGdQR@IYI	匒'R5i\t9IZ^Thd %c[/2f9"&jm#(fbXb#)0攎#*p
#mp- 90~Bpb7zj#s'_ج,@]6NYbJ1: pA7aQ9
׶]|e^x@q""kB7#pp
*s6ix)*/wPv@m0Z-K T7ޞ>k"/n0mLrGIRӨx#tD}\*E8e9<^_Wʇ &Ur?s:KzCI7S%LaHڸy۪s0>H}MZZg淋oFo26C)M:
+D~@2sU	FCq=p55#D-`ax@M@C]wuX	\ٿxP[ fk>(٦]ߏuS`y^,;쉉F9-q	<UEc]^xh酔0+wm7,@f/h~G+ N2n-2
/2b@eƎH ew
O[Zpo~@`*9`fb974rCRv'O+6si7i} L\`c'AAGAQ[o"b2"<||CˤmD2>{:ϊ&͗QV
^r :('
=ER6:Z:19Rtvn=hK7x{ўө:EPb*3}Nq;A2K7TT1cx`;5z0c4@mlIl+e=st4w۸@8yI7촜uIQbo8hQ$:⁣;F|5(=l<Jꕌ8fB!({8QS]em?Ӻ
3`ئ066n'=a/ )n^+=yQ) ̾m#B.Z.9Li`SPCjf[wsAߥW2\fH{:Hw)")d[MX?7̫	%H:e]OV\`T}6=&U(6:gJn<a({y?$"ة^NB[wDOH]CC\)t5g:!Lz|On.Ҵn=@.aC9$8x ҰN7H`!sƦedq 0mR(>̓\^w" E(Uɘ>xʦZHq	uڴ[3
>p؞W).4}>xcӢOuUݎ#,RUt:;M*V(XLOSɍxAARN8,]gTCl0	_L봍*ˡ?vcKʎJZ^w1
,ݦQHhݮy%//׬mTKEv򃐾B70LI}alNCf
X"<Ґbf׻R13y&}*#*m)&)°{Ha{EH~IRTh2ٮwRSטȤTtHSrL{@$*]u{,YmȢE= oꃕ((/?mwT*(mZ0# Y0Lz
tfTvs>ʯnuVI4BC卑)(W
ʓK3Ts:gg5MR"9DxYNNwd`H @djsK-<8uuhhPJyNJ4ȼ$ir:~B	%]No\$aM2#KXT7#3=kt<SsdT)@,ђ%PN댖M)2iܤH&C4;6 	 |Qh#K)H@F}x;5C'PtC$#qMNf1mw
wb/Cv)mx'pqk29Tz9ƯbN60zzoi%vDJυG&<. %$fmQ>bY[2T}S,}%Md.G,RvTq,("j|BDȀl5ϏhxNN.-|6/$~+/<	oc{GChAq^Eo`|w-XImVtUE<I
H)8EWN괃}Thzr[n]xYe>c~@{>黁o?W-x"T	ʑ@;DƆGz<QR1sWy:s=#H v%h!%nHU
5 1s-v(K\q`AZ
{Ņ
DNh\sQ~9zOMxPrJK˱|8?/
vp6 Z1"r31F0Mz 	`!oB
n{=2J hw'K*#ɛ[*AHTz]ip+X86=ϋﴼUQMIjת!20O!m;D.|uͪfs$ʭtun d:D=(Ѩ}pa$BByH7
_S	-!G*M/lXf
+ywH۝A }M򝆱za1.	8$W}zճt?ѕYc:h^.{%tw&jm"lJ ˋh>Z#)N^ Կ?(1tūl68)OXp8*e&i֢6	w?y(nc	jC]ݒzU5h]"U* bHP8 $`<sScǷmpβLAUA%g+)GnJw
z=:͆sNBhHlGtV@"K6M4P(Ao,1UiqHɞTցT:p;dN?B&Gձ)T*}KQ+]EWAT@?D{;(fHЕ 
e$սsPܨŗυr++Q*J+͐JgZ"e#H
c+>vlo
{] mmv9!0/d=GEMXSx}፼8 t`TpKMׂ^nN_7|=ꪥC AT6	oT/_#1H+r1~vA\!"dByO⽝ng%
ℇGkkϥ⨴7 mN̑Ǜ?[a^B׼eECYCQL_R)WR˔Y]`<X855%(sUBc*(CCLrI{ҴBf\9θ<o\vpu'@h>5G]LJ	"B},uQc-+;5(+Rț4FQIB:#8$SrE !:]E{ϧCmp3]s'xՅdLU!h꾔z`J-bSgr)]L*)^Q!pW|~Կ6䮃fWj/oCp:R0ܓoqE\#:ƕ sKlޠ
U}]Y:t?ڊmz&Irg
co]Képqof䦰^2~oSx*LƸ_s2r
p!\ " 9^JsFpU[t2..v`X?4VHûc$N!oTFz＄yj
GI2Z8eBM^}C3C
}ҕb'B	FڇZd:h
3eJfZ6]%ҎvGSgET,~V%OT87jT}8xAZphb$Z#>pp(|Zu\ha8M˷$QnKz_i.
q*/u
QR"<K^Fus_DJMIP_L:0ΘT_*p8e>OݷqTZŇ{ȳ~qjtm/%:g67)m>fwVw$; >J
 #}tU~wC$002`b]0
gLSw^]9B38?@Qlj0FЃC)fH֍	R~*Wuмȩ]`
ˡ E.e\OӁs߁/`bOpzKv**:b<pzrkK Kr#WZf) >Kx%R"	)Ԥ2yHmM&*OtBJ.z~?M5Z@hR8e^Lx]Ӏ
 
vQ.EPwyDi_bC1is:փUxا+3+`@"z@*"]7X{{ՉӸT/P`. =oY#14,t=>}*Ru^"wQvlG@jRlq<.sAUJ͉Χr4$vϼCd6KNePC
JrRURȆ6U
bG;5y;(Lؑۋ:ߑ4]+YkBU*&^rF_DVlBNZ	6CƠyAngڀ/Iavr
 M\Q) CXM8ܬxdB;kޤ^~a[;|sլ*d'[4EMڥpYmet$v/|
ǓG>谘|Zal%J1Gş=}Ho(iˑ{ewve^u0Z/ojǳ88z{J]'UWj?$ډܜC;C-#trϸM=n,k@̹t6n8* gBSI!Ɲ1ŗ ='-ld1X#)x-Lȱн\VGBӍ&BSoѕAyaH4C{AD逨 1w:!LjTWxvHE$CX47Ai6n5LDLP_C47 6\,J{(N{fYy&Z25J@Ȫb.<a	>FľumD7X\M
I˹(Fx ITs	BF#΅?nYq7-5	'Rl*}-j#(0'+Zh9Ԭ6Q2uUQzxk4S(xcQ&J%!wiX-UO/D}4BjF!>Kʨ.Jv낛)%&}
)(č\
WpҦ']i<7NMjo ^)ԟ{=vs\p;wCqB@V'W+F	[6][)Q*'	u$#<sJž綻yBz-$mHzOTq$Db+1N]i gH &%g&&w&B|CD6dRٜ7{ɦ!;<& #q28K_*% )i-@}=9+zOOz*W;+RyagvQCF`,͆(?x߅ޢؐb}$׭"5!m	^2@"0W"Y"otwGDS]mP-R4anWvGE̗OGvQḒLdx0黌P=yw4
dDel'q6H`9$}r~20ύ;'\bۮ+mw;uH~*8WlJ~l]P͜R;
6DQ3E=Jb(M-~zu|LvT	RVXjUm`r}9~@gck6c!KX֧CXpTgGw}Hzd%鑶9pC;0?Wʷ5@7}[r|A
W{!B,5e~WfBV?3_qZw
I#) :;	oA 1wI#j:<G\M@~jh8E(P 3F܀>pdk^j.Z\r!j\%e\Ld$b~nA;4R7⟮HHJ8yv(XNM9:|Zm@ɳB(j2ךa;]fApU*#_!&qJZPp
tB< pyn_X2_@:*Ϻe.fƬ@
W1_̙	Ȟ8&*N{Y0+
yRߜDG>H8]ۚT:@ .<%Q@P+ō_J(?W/Af'dlL;{(%& 0DX'2+>lm(%lE)~y!֨qt# 4R'%^i)vyMZ!ŃpPS*z/ ZH
{+pK*̾Jp:( ݈vD:"8I;(h_sRtRSJwLG4C|H(IXM(q:~xJ]~ԑV:eh?U6Lg%|6c|Fj/5:
?%2Mw' '|$~s'mF|=7 _T4/3Ji^.vg> d4g
	'T*y
_^1dƑز !FPzՐ'G< A*0KP/:W'=UZzx"d9 tMG)]brTw
9W2iHn>u(#G+FjzlGqÍ?ȇwg&]wfiRCv-u
f8͠ "DM;$!FrX:M"`ߺLqunEmgJ.';uՀ;ow;*)A񓌣3&$>
_byb,5jrOP@]5jZq`eT.`FyEAI dڭ<$Ds-sþ*T؊}֚)O͉	wHᅿz/=d]7@/'e;W	cpDD!u;X֟dPhEИS$#n_LZS	8 m~Q&!O!wh6P星z)B?QLY`"jӄiw.ϣ/ih@-R\k*km|/+|T[/.u2_ќAQYwYdihnAf(7@Xhx\2*5-*[X re/~jqw#QWpDס*N.Pw\rF&Zh4w?P	{\:tD)+n:G}=rD7(-B
䌃ay *Jd\zDGnIŁOҐ; ɷ<&+	ʃx >mB>2Ox)	`Sj=ۀ<<DKoɵg"qZ6gWAQ^I1Ϩ05;Jc={_
xNs?eP5L|6Pa
^$-]D:ӝ`Q f~$i^W~C<\J"y~=@=+2u K'~/*NRuה`|O"aZa ]/K	]\U^F;]]5n&y"Zupx5^-DH4	p$%)_'4Mi0E0MEEeA:ϗ/ʷ1pihĎJ*uB*u"~D )zP}!!^"d붑&FST=}HJ犭a$I#*fY!
4▂I}l0!ZJ3?W'?tp#"$+N;H>ԓ.^!T<W<|q$)!oѻ0?
!\:*{E>p7psCDdh
x5G&14JFyd4wJe@&5@hFA"M4ZbY>L*хcgƾRLƟo4+"ܝj4t+RҐ YOrtlp H0l#|HVGMKcT߫FARl ̏fXmUBf waK&]$ Mj@}ڵę;^]tUR;ؠwI69?D'uō)=+JA c;IWAr-ͳuCDYi]C+XB5%%51Uok'kPr0¥8>IoH ah3IZE)yL]RnOa{FT7R^7Zj(Jpus3_ĽGv gepS'ɬ^d0jÁ9.5&\ݼ"䓡?e<J084yy6}S~)#kŞ	79'4=x=7KI
qJmRDD[ojd@bG
fh<z%d{M^(bU$:r<BMEE+^ 1-m4/oNbcxJQ"L7wkA~YIat~6祱@H#15ts%*32a	CVu^;
lS(gJx}F/#+%i$_$&\rQ|o#ej
\yCjCs0ҕE wو
*=E&H-N vH
@RɁp,4z\Η|dQotMvP,[tGZ0oϷʟLг.R8ԅœo+WEE+/9q(u큄pSss$VqMːE׀yfӳ_JP:HW5K׹OdRʙEshK~1W$iҢdYA:ECLLsfܴ"PQ)LBb1;ױ,7nl]t~u
O
BMveVm;=z<C	!~W4zCtu`
1	R[r'<=@ǫUh`)]1󃒽$HR(A_k{"ͦ02l+-fDLAZy,)<*d$@h"$JwzWͬ|5H܁A&{T@n.8[pD
07kj6n*5,[E.IS=L
'߈7`x0*cVs$Js!0>%
A%Џ4mt`ꤡ-Tvi Xu
awʑ *ej-oԒ$ݹYwp1zJxbxm	;mG-m$D#8EswV7h@$
?ѕ	هZz}	/03JʀVA2HB>xn`3.<Y~4PJau^@Rls	ImwPJI}a8n	8&`] ܊LJ$G_Ce\$KUU{Ub!9Em4"mfaAMsAo4\00o(r_.hsxȈmw4aT KB[OXWYʒP"#	TYԚ<G<9+vY
ЈsM%gSͯ4m*##!yuեnvI	+;ؠ4آ_G,~K~%05Į.U|!<>ާ2qo?Ltyǚd4ukg'}7AC2~ƙ|%(!\MDaH b%}4*?&3/oeKՓ/^@e(e@ޱgbd>H8qBELJB6fnW^56z`@0I>}JFJ=l:YdgTVgZ3ڤbiEޒ R 74d(r[$(QBsŕl9w\|70nۀ	x1;׎]?&Ԩ59olJe2ɪCr#*+PXF (RHm<\h?0DY|ԓ>u
xyzbl267	
AiOt^4AbqķFFſi3cqL~zP<[r@%?D "c=gT`Sm}+CSv|>Ff2Z|y'8}ʧ&p+ɀHDbDrAx5NDnz@2"BB dcpfVRJK*y%y#s>urat;H
-Xa[*
rSpiA0)\EOhaޚI"ŕ @XP,X xx0DOGJQ;.LH]4dM:ƽ]G?x|b$"No5v0mK'v<
G{i>EDPw1g#W87{j/$hzal	GK]0sOj:96 I1GɈЁysH>S=@KcG)g
[N
HbY`Y2Gʮ7`HE|R$:*z\UE[	2JA0-
|JE#pEh6Hȱ\$'}qU!_ 5^a
Unw	>F/+yUeH.x!VR5;OɳKs
ڇVI(CLz\F7ƻOHڕѥMdu G
0O,l唱#6>_*;ko	WWMt"k!z*MwՀ0Y)><D@!
t3yꁎ;q*H@w9:a&CtpOa"fJ_Wt1
/LaidEu PP^H4>I:i\.BzSJ?8A=_G&;`KeDݵF9(,SϺCT
D40hF*UR$`ljTRU>_=`bq@_JN3Ith
o/KYp*rfq^줥"a+1UQ]^nU?*`!`:c}"w8V%\E5.zstjUfISzڔƆܷLzMw/]4RJ|ZEJy 8`Y7MB[G9	{%_ "KJSRɏhz7؍i(;P!e.F7KnQ1C .DDEz2FU:'>U
|,I r5 D
OeIӇnInxUNt
\$t]6rE>9?'1PVogS{o{[R(njQs'ЃJ׮{8ȣڠsU:%~.CFZys7H! K3Qh`"KD nbчz\#߬gTëdv8h|@ x22dZ>y/TN:"mv.a9Ќ-UW4Nh\D]FvO
iyyƤrLjlFE
QT)7mL+~-Mĵ_Y}e
{e󦋤%SPΕϨ6ZWtVd@*<0EL{3Cg? "Dhd֋&5q#"җ|& Dg;]c[bz q[GR}yޮψiZ8M!@O/S崛AhұF
ݲND)|ƌ>1~})MQ۪BЇ1`3Q eRB>EBwM {wШ4yhvg&ćA(qߋ6̠xwV%ڠF R 10oCEFe{Aªٽh{^_TE|ڏβOʅK(IU$K"s}0*a*+8GDپWTy/()YHRSz&`nTW2-sT>NκH-;lb~NS 8x3!
Cb}:-NW;;awZhՊRݮt\q={mrT/&2o2Ѡ5xK2o>;ʯ)/ʤۋÌrtHA2kt@6~)d
	!@IVu25䡅N&}7`xQx
L[	/EcEQH1;.}і7Nd=`G,Ԇxȇ!##/{J7AJ>	_⟛2bW3!PstI[*n@>;q/"IC՞CD|
촄H#
_詛ޥs;+AB{hJytGBQ9$h
#('#.&x&Ps4L &%&iu62
YBݙhDw߰0h+vw*`G8pZt?w}Ui4 7"+flEQ:)_2d[2%G:5Iტ3h4A	C&7iؓ/k.H{뭛tw Crƛ/1˂NU3w]-d/E|_d%h|c!d T!2xNk4`˂)P"ӏwd0K7] 
O2Z s&>;OiϼO7nwno>ΌP$;oҋkc2LeN9~P$/2CX X	x*2fI#2C)ӡ.j:/YjZ-K3u;܂_=*2J%E<]V'DEgzW'2oz4qQP+θ% ?V8VUmywΨ]N/ၔl5fAekH4Wc+6@uXjNCM5!r;ʥTw8Eq%18
qv$C.e;X0!Dm$2ek
fPӅ[*V*U'ܜB `ERkه&`AE9+vAƨ+٥Ϳ5R@i E3J6/#LI
%iNt6c{0 _qd/GQ볯2xePEZoIͫ 9Gd@ry+:{P$kP lL{S(NwU
/Q;L-fbn;qJ)+;2 lW !,~/opۧׯi!	|D,Fn.p#Fhif`˨{|#50r+=%y2au(
-Ǳ.ZKɺȿ}uWrƼ4
ڦ4qC`kS0#x.ƠFv\s\A|u~",vZzu;DU`ކ%ʋP%se(%2Э6Gr(y^~QFqxGK+S>'&~(.|*s
n:6)z{\R@Md"ްxQ"H|qa"WCvT%@Alٚد[YJꕡ-ㆲU$ !*S?ex#F2*uK> ʷ.2J_˼JWgS_ʿ;@Mq$1_zA^#|Օ!KzT`I}=fU; . 
Wo4i[.Af>?Bj?mf"P͆vRaIb^YS
$PIP:yD]ae^} t@InPj46<̼~nFdJTe%?yG \}Ё=z[glu۵.W+TwF`2e&?\i4Df	_l˂(HW4>ۣIjx`%ޗhieAN!ʋ;%'>Dzvm>B5ߗq<sP註r[fEDÓD ,WEP]onw&QV(	0\ihZE.I̶NB9"cD⽌ۇsi|ux
Sd=?wNCQ޾-	N}NHpz1g?<Ծ;{ ۾hyݟRgٚC/-"ĬJl1i^Cl0)sp$"_e.Ѣi']"h(W" z"P;\xݮƗ&\+}	\%瞸kҗ{hьK	wSEjM(}Z8xDwpLS%2@	%g0I
~(*6R`Wy)T4qB5.й#+C}ZtX۵Or4zF2?:l as2r(j&5tN1ŏɧ
۽6aO)T=i8&G;a817͚Iptei
!YRfHh1:iu:(9/ikCX's牍td0	ڵ8lhw{jwwC~ 4t@4|AL>l,*;$Fo.ç87i]v4/?B;;+S*v"}pﻇJwoXT@]ffĲAE3_
$#4/=5Rӄ;k]/4}AHHJpBɼ^odkt!ihc+x/꩛KoIwQ<p3f`N~w=0;=JLW9v),HE"A4g8\?msi2sb:|$\{U+Āy]4r`qs8%HjGTݤYG-剚o (*䡁6
=!<70>tJj{ (`e=bYAԕ?p Jkդ8$?E7Jx;j|0J9{գ~93Z

t͗Of4MK$Vpʝڄ뜀D(/;<pgj&:;ߕ;@Q|9?WPR/!R}#t='^Gɡ裯ЖM&r=lPQLLۼm܆*-q>t %,<[h$~O1l՗cF~la$iR|y>n3ԃIUT^>;(JYĿ~9xѤL!]n;GP7K"S`Cegc<1yvaKiV9Xl0v^2?wJ ';5Ү"\AERl)FEbB)fn1q- Z,=$yL)g:ʝjˋ2WT2cڙciv l%R~
>;Nq4Gi 7I3 Q:.Z'zm@վMFʈ&0;=)wB勨ݢ;RA*[%Ktqx蠄[jjiRCC*uJ-0~U{fCQ
_%]ap?JnkKT(t7$ג>Q~ıp /h^EF>&{(hvOTOFC26\-	hBn*=w_p*Vs?@_Tށ+1sgծ\WC!s(} xG\QFj3A4F
ELT̫I!x%.DFMxfBףQCڿS
Lry^d 
qr{We-D^Hx`##ۮy Dv#:EHTz :'ҹ@SmwJξWsShL!Ywp]FH;`;Kȅ@;/6do-O5A:KйiE?MR3@7!0pc+\`SƙJu9.M> 66ĕyگc)+,L@|ێJC
}Y+#qH̺n],RIx (|<j%No;WBNtmWy~@ :wBiKqb?9]x˕"z4za{-,*T*	P*>wf۬uY*R>./Oʥ@sQ5VAL{t!ī9y4	Vk$Ig]\ǡ(BtHP;^rO:tm:ϕܐ ,44d;`g1)M;gY߸~/a36{ȇy\-[Fa T+-wYZ`O&:̘
.H}*R{pV[$B%7x@{ǞjNxz
wom )فhHm0FZWq?CcaP\X6Bs!p$"kR:zDI$9}9bI4w3@z.028)5'ś>"b02rq#Y s;k77vK4Ia&Mt
lt[.o?WX
^>4p\MamAZV*
K'Q='`::aXB`
xVC{'kf#_晙;loVWtd{H$VC@8`[ <±L kx;>P^/F!\lHI17Ƿj*]z
HJB-ͽ>rKѹ7[%I0W@bVs\u>,{=2摫$VtA#1Y`1汒amcϤ$Jb<EkJ)ችHulczn5-1euzW05XFX@Ղ V536BfdQxJ^]|xq+Gr
 ~Ry
sa\ܣa+i#)ĘX8.	d_e~LRnVdp  ؛_&{=@`05˰6u	?m}fg23ffW5)QT>%MrnT^Da-\e$3C(ף!Mw$
 )lyt5+Kp=M+ծl}DC2^*%g{9N57, -zC΢
ʔIM<%&֌2[
U:5QYzـ+a1dumo-wzL$A:@赞GGsY^L*c
lo8ˏ&RxEBo3vB:[E=$ߕ>tyO|>If.7>}KbQ3{8B9`21ul@E=YRj`9(֌6㌜#B
rx4<-H#JeUz00`2T!Xr7bM /fehVбN3IH|c)_#E4O]Y?9ض.Yt;aBt_p >=`yO#ά>DF9'b{R DC'J
FbDme-+G@|H.#KჁx3MNO=ֵ
q"K7)l=
i$/qF Y,
0:櫉"9^KsZ=R4z [(0jWLQȗ5SWٵNY ¼n!ԓI9e^{'i&US,7ӽNvM	H8C|@?B壗jp6wo*m/5kl/Od4
.ٳlڙIfd"K	`ӿS.C?4nF	j:w#GŌґEVryP--q AUn@ذ_N^4'NAh7Z\lA"kI=E_מ_eķ[AƨV*"W}4-IgX{ve΁|2Z1/퐨yan_H봞.OjŚ>,lt]^B6*A]>_"6cC)
FZged1/k?Bl8{]ȳcz>'χ7RmD)t#}(7ZL&KTZ:O)scM릳
{&>A,PfTL.؛B4RNT֘*FݔYwy\;B.0TeEp
9Ⰽғ%dxrcRE+䵺)Womؕ/BaG"r<s;y O
~vǱ]:RV-A(]mg[_}s$~XtK90
O]VYMa<oRU+%fw7$t?-t芟s6ԓW,r[00a~)}ؤdovQLjs5ex 25)~3pU,UXe7|6	cqWCx}8afw Vi@_b*1Dzy݂5&$(ڃHv
jܡk=<̑!2ZA(V5KfסPxRaATix
وRx*:M/d4ݢ_ػdC~qH
k1xZd_v*~IlL(48e;ZLDrP/2M
caTnqWƢٮHG;S_M'páIRQW)+S8(-x08័kHD.kY޺f+0Zu	`A V3Vpƹ^Hec;
q8YB	_DǷEE_miԝ+$8	p2(om)
Wf+f5bHؐټmڈ!vk(MmrayX8gXSk\$A;rm˚D/ƾ%@{LXHc&Hy4ߓFa
ᡒW*wC=0g}vA
"W#a\0k( +`Q]V|@Dr|4CђԤ-Ⱥ~%+w3&Ay"5i!$8x:.e/GnPs%{.rwKZ?˥ S*_ea8t'1bFWt^.<,t,	
&Ceku˩gS8](e
gqDtc[f:#aĿvf $}@&dx[W]һ*Df4g$^88GF߲M0g`?G&V
 r$SIUv"hW\}~'CF0-_GX	
_'Bb3L=O2+p"m,ћ-q;#(jd~fڏG aWن򥜰4ZO-ַђ+x+-%Ia1!tM3
M5
%={ᅶ< @_7H ƛlˑ?nKhu1%jly2+KmsG8^gfr02CLZ>DY'$<+i̤5H,S%c)7
w[͵i^<%!:V/֖%*&:8JK SbCBd.;iȗdfXS7V$_ 7{a<l;- ݣjmz< Sk񢵰,#_R#,e"|RUc\#41
9h߇q=a6#4KK
уEz.IfF}pjiYzEzI^֖Y2/N{V8R{|Yݨ/M[[-(
AțW#Uqmт!I2Xn~Ū]x>*2H#ZZ
mwm[HG.'da`m=1mbR)puH~ц&(ZI_=U|TI9856ȦX{@tlȜ2JEaqw{'<][bPH4ޙqrֆm%?4գ>foOw	k*){oBШmS`wpjCt,IGwuf5	#F'_[U2CfcR#

Y.yZ(\6W$-$.
aR=_
HF%Jʠ0Pk#NeAX,˸(k[Yo@+t~M_,[:AlvȊTo]G)TKǻhbjxF
O`F-:NA.''(փu6'x|77w_;
޳m)jK!%w
{TĂ52'yD,zÄ4'uIi͠jgt:
v{O|I|$od}P D˃W<:v崮lnH9)eє[̒bgnKQ__kfp
JvfM&rq<M5_12<{Ǡ&+L$!%
x`d̲o38~UKYJ
ACtbȆ6}Kv@1",[5+ѵʍ+
\ȍyc&Mפg/eS{L7rh|s&qX~2*v +qѐfE(id]y=YPEfq*|Lb)@P48#{#"i0ڲQ0Ak}t x`d扰l +lRq.62UuL\ɗ92n87=SL[ј_ٝ$,5Pyԭdm_m遊K2=I
M6#&ɷ\dD(K{z1?'UHvyY&'ʘ:j`ۇ¢A:w3*vYo؃9y_p#=MeE-.ẑ""H,鯻֠Vsl	IIi6r4_iIcYZ7i6L*z rRF[Y*!J
HE q(jq\MnqQǛ5<VղmD!`?al	fT5aVߞ_RdV|ȣz
*J=a$T U{3C@UC蔲w-Сa^C\3(^Cv'M
K,iR{t8d	&00&̥EwM υa^XI DZ2*MeZvGPq([21NTL5tƞi/D"nnmw4P ސtu8:sذb>2+$'BA*ÂKpȲVfIpNi>3*4UI}ZD^Rk8%h@T3\T
ӣYy[6;67)1*F~U\!ȗDKKǞ)K""2wkӿ~^E :h|Ck>
rYIҨ
-ƛ#
2sX%KQTʑȌ7;LH#sϡpKjP;nvK׻wiQ\\whKƗZ+cV#aGl"M\Ŏ`s;L`Ü:{jlgbRv!:=S
8?7浟 Q,2GG\h -E-Z%)i#L1ߘP0DPx4B;Оk=!YLr88\$iOBE{6oӁNv#ZW3Kbq"<.H7?i8_vQ]l]j:ӜR7g^0EJ!}' d*8RHh3BwtT;!Y` t:b_7aT˓+3>:On\2m͐V)Ǯ^p|֕WwQz(qAS8g-c71cfI].c]0Ռ00V^ETbW+xf&Q>
¼j`q6R
9=F1]ĭ)=:^}a98NCY72R.:c6>d 2YyypH^&!2VsT]~2MbED9j 1X`2]1q
yarg7sovh҅m(ZxD Qґ^ξ㠣>-Z\)Y>VQL6Oi|]@Eo脳D8̐/2>13g5Q1OԣGcҀq
#S
u"6͛޸5QN6Sdyis%OV SieQa
@mDĵVXJ,
l/6(Q>hlX{7.W wv&\?8J!\qB!+	T/LM~XU58-ex;p)o}7t`!3|,{ϴw<_د`sْ'ȇ(z??US%6ֆrlbxU2v88,eQe99O}}p{x/!4):ՈHў1`a}QdPxAdQ%[$ERZ{K һٛvm+nL-tbdP<!dXZ``=%%8A/fK~ofO}gSn\iEY'pwDx-2IiB_ŗ'cAՇu0X>i+Z\i_yl/;+8-8!7hB1z[gGe!=R`eU-T$DiL#Q&XFSm=لzգL U=vűP`MXՂWOh[jq
mE-e-MSCP /|ۺ-7B9CƟ%XwIap~vGgSlE7COt|C<Tdi:[Ssp[wf0{&4*QŽjBߏdl9:x(m<MK^dTgrg-V1zS9rNq.˖-Mj
,EH	/54OKkx%4iO wxDeR!hC,#fzK	|"Z<:L9|iV4JUZMP55t+Ώiw9kk/CEqP8=3e: tNЧ>26nOV4%1K0?/<ƷcfD,̮b{XqR#ʄ$J_'g:9cU16M?J(+rw;koqr=#g,tbAPRPr "kY3kn|B\{	Tg~]EEuNLKj@Xz2FxA~
>IO%<3".Tx/
TΛ\Yo:wF=5@D!.YMT9K2MoKXecVYucB8=	؜qn|?)ԯuͪ~HWթ9c\ق3¤c~
vk02lTW8$"AչR`y^7	W 2Sha0r~ɱǌlaIxh'jW`"̬/Ҕ}r%z.H!`d*-a{$rQ)Jo $5:X̅5&Rzr|fD/`}NN!ڜ|]sGavy'eY5gc_M7r@
H$	8T
&kE[1بl> AiGld]K~$,`'J&ᘅ0JDm=J\
ÆxE+lNTQI dU@B> 4qxx]e~PZԸDX0Z!6 jW2{PRiXOpꃁz4h:Ɗ61Pf~=ϩ)A˵Rt	g ׆dWR,I+SM4eUkQh="Fmk+S$>-SUdhK:ng/He1+bTo/x\Gδa.LӴ ̼KmoD%f'q
ɉ폇ݡTJ3?Jܑ-%F
jZR	
L7~aYP׵u:6g =S^L~VsX]/JN5},_Kc%A%xD"M/%3;S~j}γZ* fߤz*vR!'%1EJZ)cqUul#vlTd:xGĞ}ՆxWr,#auf7``BA3%Ex8#|RBlyx.'ȴAeʶo{ WUh++p䚬2XX1ҦNQ
$:o(NV9Fӯ*f.3".vEkbsdꨇ=&*Oa8͊JؐOn\" 2mїwƗeraXn?"%RLQZ4>
2ljJe(h
=yLqV }-;#RtOYtJVG<{3'E*8`PyAQQ8:,&"&K PGPfHSndmГN⽅=,1F0uܢ/,;[It@Mܲ0Ņ|E1Oqi0WSr
:QTrS8Ƒ2^$'a*KC@,y[;SZU
a|BŶhWl,\JpiySh\<ԐNv:2xHt3qx\]
:r Fa"5l%d5Bϙ4
#HX;!|dYKEH9	(sdyyQ`,s  .ҋREZii.krp؄; *K@-)VDd80p[%3=Dp`#iVӼqAQ~b<XO!|`z_i":K@L2pћym̉>;*';7Kۄ\CmI[m
	(	6"aZvv /PVo%G5n<R~}tx{D]d]~;5yTJY`: ql_
 */D:OJLkFdZeJx9I>عq٤x;LH87fw':s_vS&co2tn0'B30й[Ѓbx J_,z_",G!t2?rc"Gֶp옄l2Cرp	.#M*\R60x%LLMWrTDϊ`#r];P:
9QBtD~ؚ's"`D&l@ӈ<$G^|M0#t|qb%\8,:EuHcb@QPesP'GɁ<wDCaq0>%=$nIF]gV&v#ws.92d[(ϜYpǠ t
RWgtb\#]Ў63_0*'/OdAd>	z8$SmWȼ?'W\LP,&5l=o!KO$Xc9.,T% d_i*408ke._ƕb1U~@5#u>շJ%_u櫜o[L#{
Lcv0hQizk،Ԕ0B5nX9w@я,э^D_/wh/sػA9Qa*^V6+7Do3:J<r#xO,$0L:üH\{q'$=.˸trD%:tɄᰕ^WRaw Dw=F7
#ȿqq)"[mȆ,6f뤬طri
cQ ۹n4ڝpVɿdN
7'fFA.,~>B<f2Ig`OXa/jDHh(:gO9DUzBr`+{&G9ٻUb-w2	*mN~kPRyJǳ}'	_F9dSM[F~iEJsDGoLqmUWg-L//ر&B>:'b$d*{,sj91 ߱4/TBC8+ȍ
FOT<Ygih79͎,¬9;ɠ OөȊEi͡aTՙ=t<3X&
Ӵh=¿3|3;KE'h\Å9ז=C	VRaߥ$)/dY@.&ɿq>oadL:M>?u(4/)⨗PIN% uI$HsLM3gAɴ:a/}isf8N	_N2̌6ꊵzh@-r:<zm>sT<;qDQSBZ8#f$oR
]@\jd=	=EUӡ1ÓcS>G]7qHZcp%$L3mh+x8xDo3(|_QXاB4H468aV3 ;0`nX
qoߊE.n[DlzGexw'TspC_:vmi˰+!< ~I̷ۚ@Ukx,e`GOn$3x4Ûs>;&01@G32+4X&
FQZ_\:LkGkf蝡n֙0EdV,jF1LzXu|Ƒwl/Ub3X{v&_>_l7ęW@'1HLR*%Pe0e(t<jKH$;~Rs3e4Z K3&gN4d&q_0nU028:EHs0oRkif
od[GO7Մ.a
C	GrbshTF1*ԓK*3?G n)M&oR{' `{.fYa(CbnꕠEeqlnaKث8-	\iiI/Wp,;e/K`wɲcI
ki(zh%l!{9Co.gFA#llAㅗUB;ĉ++u͖8YiY]9l۱=TFIh+/wJ NbxJ:u7Z06#&,FuZ3|'DHXsln5ǯy܇hc4I}dҧ;qFXo:FP.]
뾺N8Άc[,g1mipZU)hp_>8J{<f.>+c25c
oFmCx$eyqQS}8fc38Fap
3 *XP7, { n0Ȋ-љ{qK_^b8C 6Ry!I&4a7A[\ے12`OXsPQ*c1uX+kR-q>c>XpnsXQYRڊr($[HOʔ/f-<#+ӌ!'cx`KtNP32%KWءZv
AKJ\.@@-04iΫ!Wb&S@"C@rR* \"Z8l/O[G?rWNIp.lLɎmv$0(i!&$Т҈\sEu}YǋJ]g¿I"?QH |qh*/09Q_Jcy2+Luq^DS'mhT249ZS?G%dJIJ,
n܉b.ؑ$`8wX*۹Of{vRᰢB9v+pVc
y>N؝/4Jco"[f3gꉪ:ޠ^tl"Kp=)s2僳L|L<n]IFIqpknFa+`*9ٻq;v>ޙ3<O4RZnUB=|mV-tw" AS.edv=oG[ \:e'RӪQU4)4Yb>R:$[>;?19ҌMQqbag7	nJlV0$_-L)LDeI1/@0ȗm8$vE!3(.8>?7'%ŸO${~ч
Q)z@ٿBo^X8P<KP){%kf$GFAbP<%Nga~&6DxTWqy@Zږ_Q&l[*{8=U&}`a#4\L5;+k1lybr0rE螏H`(He M*JExbl/˦gDX3tܖuGƥ?e2tartɒqz8"v~۲{RhiqAmY/|yQlhWcñB7')Ia1{O/còO׉jb^	]ϿߧŴԦ$ˣUҐ˱2UbބQ䗍2+l:Mql>836Я]Bftnī)JpԈu 7+bUPA^0/wXhp"kW5I`YHw
A#)G jy7XH-H<In9 i":蠗+"f l"8%YX:D6s7c ̣ +\@aU:S@)F_:#kE`[G,1ml/2+8#6*
M
z}jcv\awCfMcC=wY0j^D .ռ5mPV\H0L>rmaؼL~p̄>nG.gav<ԥ z^^HӐ SFPLZQԍPá?tDK]n@PM}=+&9>ċsvlƀjQq|W6q[)#0I+!Q)mapDMxз;++S4wCpD-POflRgŁuf8 
6k6F
H*_'bAlHKWSiqZm+I}Q43TXF
=a)	?@]BHeTHļhW˺3DB?9uFz(j8	\
1 4"X͂8jo,5.
B#kᮿ4}?|M

	JmCD~Q=u&y>00̤L?8|G1y!;	El8~,(-+nd⃹ά.qM<=7i
p?jg7ƕyyY<}d~'C֘D!ë*u֙V}hl'kuB9|մZG9:uB%gJ
xۡDFME J0  5zbX4p!)okhIz2HC@E2@vgAa~e
gpqi٠<rl;;؃U **~X.8]PK.{e0PZ+V2f2k3ـ1(}̉ۑHxx.r2fw-+K\r2gte8vu`p
&wtSN&Tݙ*7PIr!cTzxcI}Di(μ2/|#V`Jx%h)=^t1h6gZÄo%Ws[',
x]K}Dx
+ZL!}@1]Xj&W|uѷoؿtSfV`ݿdz~ȡ|F,F9Ѥ++p`ch!f[x,p&Q!OUpb6}^eјa}G-݈t_p?>2ӏUځks%;#-i ƭj*!W[9U5 ;JRO,ug&xVBJpfmcWqM7Ygi}TT|R"G+
͗n`wA0-{?v	&K#*C
l
xf~c <che+N{mAdjCfe@tƤ?kEљ7:"^ޅ2v\z]`Bb"ahHğ)(4F$9U∎<@cQ{*tXaSMCfq/҅DWYt2;6P83~B>Wk-<l`wRtŝ<'/e
B:#i3XQ7W42X
h3lEeveQ!#È~r9SdQO4&+
w&<Q[l$j7}BzZf }߫|!b %&E"(֖z@5e
&(42c<(Wdg Y|X|
V:Ly\ZS`/*(M "Qv\E6aX1Yȕ7PeW/""Ԧ_yXMVYE#&NF6t [d	W?ױIV`EFp}1}
8Fz@w9G˕〜[yl Rfy07M\B28L"/erظ,dd^/)40o=-,p+:Xa^p#dDFi/cbq7n4`o)_EY説Ʌ
e0Nh\\Dd%S,.@(w; hM͒%;pu]1+ըヷvyXi
bHWZ G NY$2@&daXj1XGY$#'acMC-F	V>1OԠQ]M!A
Lڇ'Humb^PRFtfL߁	E!3d`c|Je&KpyFAŒf:t*yl&}'
+soLuµ.}9כ`5۴T=ځqےUxӃwh'VAPg@4
WB1h?WpLGK.R.|n.I ,DFfv<4sB)'$ ڲ@DBA|(|?hZOO'ߖa}Ϻ|!V2'ǌBWBď~o53-/yM2Sr.lEH3L0fȪm<6n[BD1|x'TPaQfZr:[mǍD@qd$3YJ !:8Ą*dyx^MAR=z"!%/TT9*sϓ߫NVTqfq"
5[Q!_`)	8Yƶ̚GctiD1F)S-h]V	cPV
^h\*σ3_=T:R2Fɺ˟΀Tx}M$ѧ6z-S/"; E^4L`I.4ʾD(%˥~-o]aZg(H:Ȏ9Ǘ7(S 
׉qT`)0zQSY4%f(F>eћʯ[l烢L+*^
eRR=޷<I7s,*-vPqTJrvl%L-q])̼VbRϪt`F5O/Gĵc,ՓÊac4sJ
H@ui|vH5t_y9Eɡ5~smd	PQW>bD: 3XP|geFʚ~O$5WJ4Bě
Ac8= U@*`Iut*U
P_S$qh6V;S*JPYP¼+fXzʟCmY%>L?CR0<_$[8&Y	XytyU(3Gl"):N6|s.$oi1~	#b㔍W/^Yqm8ꊪCȦWbH7a?;ڒsk)|с񶤨#(mv2@~a$MU	3WkEH)G+H_(dve)/âB;
c33='$йFICdʟX
斯Z 61\C,-Q'JVnCGMb*	#ILT0NaG<j{)W@!WQY(cMu;S;^,C
n֠ۣy00s4"dL
l	B`p;m bz{ghب5m63:M36cwfsϚBpdx%HjhQ߯ŦTtj"Đ'r˜t
ARE8 H5<gjtyfk
)ÚŒXc5AF1[+*/_v,d5pSE٣m Aq-ud'GAmHe4u֍<C1Y0ym
s4"I]iu'&,jY:e#UD-t鑇rx,
,X;YE)f∔OSY:wQ
s`(]i:㬅y	Z"՛07X0F-)%bb:yfG]Fz*%6L*Q	f).kqosjn^߿?whfaehaUծ"Bl '
}L.؈41$3uct&J\ǯga~Ec6fقMBE//HUwH]{/ERVÕ;"R_/?(.#qZ/inʛk
j/Bgӈv6O٥[A} fy0W`J~AV:5W=׎rF]rE
W?٪ttݡ؜Np[b5(&uVի7ϳ4Kۦ
,|R^I͈K;$7<dБ^oΆPh޸nF6yB~3FGx0׮-Q:<-X6yTKEɣ2Dlt܇KVl	;5my2c;ϭkbGm6@T`]ʅ[vkq9.6Q]4 !qP'tVK}Pvy1iOغ=J׶p4[jeJ*ϱB5z,9DSVvIQBޱLf6PԷO5~^Eh&M2 ]qoj>S]<2*@t\%4gUtRj~UXR|97yUN$cE5*hM4UhPZ҈t
J61 M9i[QT$	DA썙5i]iwW)~"w[!5J=UO}Z)kd}[(o5zzeX{"пG0$jJOQ6\T{b=]MD&<0uSMds"KB0ue{Ye
#YD$bQDNɳAާѬrxouEu[#w
zQ$g4D+q%(QgyN
;E(hQ),!ȇ:b1ODnЍunYŌ!؀Ќfꦀ/kQȘn٫jPHx.cc*^TJ	ɐDhpBjJWdQPTJ^3u9Lp:l2-ౣn
S
[VM3Q\|P{h`ԄC`rx`Y\Cs06JC2S11V%P!jDuG哂V\ШDϓr99GI#Ӟx	)E`]d\F02vaڜ0V,\Kow*=12$LsפúklCˤZ񎳾&q,(4,iwHzV 8xGOٖ.<
j40TZWw3ye44ZBmzb*۳ј.vHnx̌|"/4 L~10Ǡp2rWf/yR _yEvh^c
 Gfgq+mp_e;J܍!;"yNHmK fGn%ey7^Lw93ڹŗ.ĺB
ot(z!>=*ptflzdҧtezT)'J@n1^d0%_8خh-x|G|#/ukihsi{9*Xx6rABeQ9#HtiJV;Ӄ$fhd4<DP³;ݚ\)}dpͮ]	^>%
H)df\o)T>FX5WJP/% s:@dcva(p,S;i
!`lZbs3#|飭.Ksɱ:r<h
A^u^M Q44(͕PHi-"4쬐,2/VܬOVѕք# ,xby*ZxFA4Kd<L25(ҙK	87rBwt /qՇ1*)@X`Q7fS閱1{FR;*昢jQXʦ#hhoeݥ:&OͺdтqzPEZxB%ROXQ'2ɍ|lUXۡ']4J¦qkVgl_Z+ꔋGUEM),(tNIVMAh&PMc_c_?oNY&j{XX{
^m
P@CTjarO`{|ji0kc+dVY):0YM!jEj mP\^#-*=`Fxs/y}XӞK	vMBAy
`P^HPyӉ'VQWT	
ˈEܴf<r`v!MҪOEBuT0z3(D-sS-D,A/֎/ 9Χpf}ٕ2(
n0yRRV"4AHEa0J1ɤHV(jě1NL6m-0p=5ܜmm60 w`TQL0"}F$/Dn.TW\v͢:\btj
)|=+PQP\x=sdbts W%3Ŵ2"	`awkʜ` rGAEUF+
_x,,0y0vWd	(ag[wrL;׹	UYk^YSbP(UeOY?p+a-C
`&*q,ёIhx9%5Zθ
5;hi2(i^Q,"i:B|"Q(>ubg>?:<la7A
gMb99A!=w6G!+oYڦ˼;AT
/o旕(^˦˶
K{b wMLΙ\DX̵*	2vkZ{"䮬7ąp<6ΐuw_(Acg9s,(3򰌼j#4jGRAJJ9s ge,+Т<6	ptaeՃXB};XƸ=@4SyFX,g:(,Ɏ#W+ gCL+]4SF
=&BaqiױcyP2kLF(b[0q0J?gVxz版bxcTB:?ؚUܒZE#sY_@o!~<S!N5GeA-I30l3UAK_Ei}^sZP?~KU7
+H>70w"DBGȠ"u:C6_ezgjܾSLTy觎@wM`JsZ|ey}H+1[tA5cLɢ8hz=x_6^m5qAD5S\FK-rp*U)r%g	I&%AwnTn4E8>Z`'h$ɵ9bs%BCww3
ErZzsT?mLozY{͉}vk!Ż$T_$S<i6Z-{8%Pu6bNИ],WtG -zcIm*.,ً6Q d։vH+M?)^\FVyTeהJٽxK7LCV@ON5H.#0D7
9H[Ŷq(J&GÍM1Z{jr3 M!0	dR7-K)=o# =*\b5XV%"b5ԍd &OENnZlzxV4i6v)At/TۂFn"MH}H'*A5:<_
.&,*IT69:h!Nf,8Ό5K6+Ll5o$H%?"1n\o
13ZȌҗڲ<*zAya)lB\DW*⫊r\NJ,{x槚8@IȪ7fuyj!+Htii]{fj+ZQ\sov!!`2)7DdBX^':ɡi%7CqDflzJCz$a8ĞH@y91"\_͉	!FѲ*3w6"@g0!PHҊNL}
N[,o%{әfrOR_;N,S80n+_r%AߋB|ctlF6IQ#s`\0`/j !=ĮaU.hl4q3$!E<Y3%_Yq4LӘ9`;5UN4\`|	Lbp9s3e#:7Y{
NskP&;}PIaO.aeLW|̮#e҃+euܳx?5g'\ɛ/ ҵ*E)EqJ%$1Ț1Cu'Vo-ދTs qYEZSJZr	FkCamK'г2`&#hsH)!q|)^X%`_
R(]6΅2(7\ ' xosLZ3#u)#w!m ʓv;wٴi*<Nׇ^LベMĥ˛MH.=+V2[TGcvtڒHE'Zv<a8'bii<=#S/0M8o˛U63*} &v1Gj'w,AS0A=7>9mz<!j1TC&I
6s|*\2lѩNڕ b3&-pm|9uun˙wAfk(W7ff/6[HYT`oWwoq(jA+΀oW³#}V˰U4b)v;
,5
Y6Ĵ@$V/ PT[C^֮Sm:܂∮&̈Z
x5
C!*( WoY-_6mA'VT4ۢD<v&ǲb7#8uDhЊ ˄Tf<$cnYQA_!<XVKĊMyI,u],СbPJ|deܱ!`TCKK6;ndτ0ܳֱ~lUNMu佲ny/3,RĂRs?=r&4S0=TG.աS~9'Cj#ph=DN6]و}%bYWR<޵
Сs3e"B!Ncg4Dx2l==Q=3_8|?Y\t=B9Sx>'ߢZ@tIp)KtSZx{.4xb}T
7E#HrLl;=p:-C+w^Kx<ɧT!4 U)d*MgLŉ{ՂWlvǬ&`ka`PH2D
NHڳɾP}Kl4(|HEq;f^01ZǠޔ4$J^"B7T97.z
Dce1+ {s;WsDldi	OY߻`Nΐ,h3H'g$"L`W~\2K?	²$^kXF&ƮH[-l!|
=&{ϫ]O_W!c@+/`AjSJR5"T`͌H#[*gx麔^c\Nzt
JeX'}'C_+Psn*CLO¡\o
̙
ARj`Yo:%{ł^!y	"&O7%Q:B X^;+Q{;o`%lTlOʥT!AmW|gt6Sh4uZRK.4LDlD}OUB5%m;JxSʘWK
՘K+24T㘥jȲk-<Et!#gcօk|<S̶GRFOg1d0_-z  '+%`Aq ǭ-73%8*TV!Fx <orAhab:HE\hu,f!c=*"n.
{iԘ!!Ak=#6{rBR%*w!TI!2LBLk=&+ȣ '3ԙZdE(E-B@!%4=חW{eN6R,9j}[>k)|4XOS"`ӥjU'&
iL6Ç7q,G8u|coTPFVlBM%jAiЅe[dp</Bpm1XdPͻX:x(	ŞMwp,M
&nooA՝QYf/5-gE+2=9qJDA) X&ڠyi&.,"uAK%xz(JETJ1O[$[BqL6=dM_sbZ_[sVA̜%9FΌz2WrfjFbV
N=o<VD)RqZ$s&0|D`Jt(vd&JD%F
NC|vgXqz:wq;WdH5WTA_|C؈,rcѱ`^(?Yh㦜DZ'k>(Z!p-ën1=q22W`z
 .Ya -BX.RsJ!N5,"eZE{69eR|3`& 2_N{'VE?	SLB0ʕڙ
 EQ)1&<#3	"GU+#N"BYE:[,I²qh'aPմ pR_,IzXfs0;, %Dm<'@-k-bxעn9	vMeaj9/-	WRJ_<f{[MEQIM}w)^d3k7{8}Ah&k*e2O|yמ+7(?
~*@kRF85SbxH	j&I۪Vǈ*4y2m.4J%;;
4x{Ko'Vc;V71@]NAR*a|z-A$JH6j9j@<1xR걤Aȭ^R^:&8dH2²4xIX#K49dRϟamL\6Y9amlaxdH弌GXZY6<فbl];*
~U#_	AW l8<.(J;ixpax
%_ ~ 'zA/(~<*gc1h0skP~pZfXƿy$5)wPz
C!xe3|~$(
oO
DZHE!9Y~eŖ%5,d`Ҵk\'n$2_t!x1a{plƐ2zM<?
ieȯ;ByȄ~
2991k9<L$&Bq>K)Qx_oЕ\)ƏLQ&z-ָ|@{umӫH8**(^`v܎1PvLmNPb9xPwa5>`z0%Qа>@4@S4S`$z82)х^֯nA!Qtm[xVa$e	c1{<xH|♬H5oE#YiUe(Ksmm?jd'MHe즋D3ȈXmpIh?=׌/&HZgPsJIv41J
$f6A3aB`6[J[cGJ{4.Ae_f]ORFma g!=|_hm:^T`6F'
t..84k!7ySTtM&Oebq)
=b N0S(JVf?a yuӹ0gieީXx lۉZmdV*^mâ~bJLc7, i8BmVK_u>06N:kd;Y%GPyIq*2%Ofz-#,C-6oĪaV<#(;PccxVN3rmA;'bQ1W~%"6|izWv2HDTT
Qy`Zi:Pf[üSoD?jc"hRXH13UT_#gd9H=ifLh4HLekʐ&[WuX^g1RCVpYU(DyYq"n.=:I)'tM_y5<NPT硚4-jJtAǈr/PM<e1Ç(lm/.4{(;2aj
HzOoEOp;Ul5hqG$dy`D "?B@-G1h*YѴ2\E*UVJ4IID]iOSx*9q;Kt@Fς2mkʷJ7 Uwo`i3tgVC.5P
Dm84&<"p,rƃeL*ÜN-7qVt_$Jk&R$e2$)TYiG:>#ɕ;	J?;Rt+!Lo6&Z*,˃gP1*Rɕ*Np<J)C[Κ'P9tpgsta}k,,aWQP{7NM#ݢvH$囌}`e̟}M'	;p'
ɷhf[(|]OmD9UQ6,z/r䕛P0hhG9)97Noc$K,Jdu%Uϑ<^$5;+3$F/Ĥ#3-6".t'y'.ʎ"2-~ݫX}N\w:8r⣃oG*&+բޘxB<aVnT@[J6R,z 9T$%B-1W|/׼ʮCF[#̀^VD5>5Z6*TA]+՚|npHKd"d*-`aKqSF'jU
3bvEljAD]LJ	-"\,7Q62q
]M\/6Bi?ٰD|rWԼ[P"%&;mC=Oڷĸ53*(<ytndKtα(iÒNÑS S6=pƮ8^G>uɅ6Qw\rL6Ǌ+>LΚT5M!D@,ﶤ# x}ҸN~u'=-`ّ*5".ðCp%϶aA
BwWC*v3N'=ޜyr%4A3kv
,< Дc@(y
k	$U<pxݠx4ty*مOTEtv.W~IP:fB9!	inkfP﨔]&<~`.15jܒ_""`j7 k_^C8iK 	epY`	|X^FI(h#~̼k7]Y9ƌ~PUyL1g".Pcgb;9A8Nu!jϠ(;(9Yx"fAD(߄B:]D0yplV^:+ޚj,YuwpO"pl| 
J%:uSGG|2cEg3Y4%MNH6l!vL၁EWf|<z'.~'zwEH< 3C%t'>$c&Jp	Dm`\V5]z=EA%`U//ۿon;NtoԃS8{A'ڔ^Wm?1!A{WA !\LVWV^]
v."32Kc8 ?7pΙȊ
tv؍];isRIDh6zdl's9W8G
_!ev1)Ro[KJ$b!׀IZ
1|je7ZL#oƖ$ciY ~ʰX>пIQ+dǰΫ:k{l{K	L<<
mܱ؊rs1PA<n9
u5#eamdZXRF<+'O= ypԅBP;Ѝ5:+eT%dhlH'(_/^6DHq6Мnx%8dv[3`b\aV} 4d*v2
4P(iX&ԍL|BbZM ɐԌx0[HW"a hҜk5F7)6&	~e2YlXH-5_~h5V븰
Edɉ?Og$o<TG4	Zz􀌉MK݌%{;-sGݥTiڎfWZ0Ҭb;)N+RJ/+6j'rk30qq~2/j쏌`L:\oA 4vs&IRd
ΠrȌqEKٗ
b~1/ߵ:2"r
&߳a%w }(t7H(9~k|&@$LB70J@gxߕӰ+:wԻЫ'Fw,z"\ѭ2_Z~CJ05Sض`UV$dо^n-P
peN1(䆔:Dʅe러F	ڳ` *5\83I4tHG\?ឹaD@qƠ[dx
sd-;0>s6/Sr)R(iS(`
:ҳM
o61AGE&6|5\+
(ߛ.WKb?Qs&į|H}a.R&mQ-@2ޫgSw,g	bX	t
hH~%<"8IǠ:pt
"mկ<"SeAk%vi(XV =ތ.LAf2b{a|p3J^o'2)1H5wbUl=ٙe #aiNbG{ԡ
>?=qp01_Z,Mkz;ai,g,HFn	5*oݵrذ=2w}*&;")ral+Dń,3m]3a٪8FsҺeD꒯mñjǡp|_EEbVatik;" Ncj, RV1֎^mp}1il,~D`j0@Y<*o`Cr-x$gCmqxx6b1`+^9\v e&sq0}܁'$0G\l,2W"OP-=MKX)Jfi(N^L1-Q`"zVzA{"1θ+;sd|pMfFj[ϗ_
>M5\>'׈;BA;Y@,ɫZ*
.]q4:~lVrG'>p-J}-S%5Ң-M(wJU_E`cYEw9).,þ3|6Hl}d",44S&mk;}Z!=R	|mD*X
%a
pi2r&8@=cƘ(òlLGz;OtF\T
GgyZz%gd^Xu*(hTڴ"Abcsܤ]
"|b=&_bAռZ@
@%q|dIqn_D

lpaJ1b07oJcS4ēJa
yP+uaPs_I{jݥlyLY3;,#D9ۏ\Cm<6(֦5!ok$
:+˼5R9Dk>F)qdQO@{,e+sO:b5e$lP.wË DT&yOe10*xT+_mj1Px暙DRpLZ"~>+*ǵF6k&)[
*1HYf#D|&N0oڱ{
TFY9n}t
W^	'3~ɼ	Zz	=3}w&E.HիX?,r4q:̹s.6
B_PMly/oKf`d|P&E**i
aȭUAb!pP6|-2
Y1j%ͣe͍K'2v	eg 3O#Q`OJRf'ݷy$25IJI "9)<xB1/âsmvj
94NCܲ|f\#pFH2i=x]k9me.(\8R
DfyCv%ݳDaeʪ1uݼO{4߳`SI	Zd	eMD]GW^$웷`YpkĖ&)3.VE+ߙ'K"@VC՝RX,
;˗2s7ŝŕy a3zG%F
|mwoJT%2*zr[>:ܒڃB?ݘZƑq3W&`@*d]z<(h`$b8I
^&Ŷ= hYsh1,M-ΜSEOzeA`V<ckCS{&GOPM:,P2ͨC$m`@S	k5b8dp: &`#<{,@	: Xŉ72X\9/&s7b|H:FQ$cZ	޺yF4uo&]yGg@Y58N=KՂ3/nl9H"W)I`$Df~ZJ ڢL^asֿcS;W4&*R<rI)\Ro0(;͂'~0/r|b|1yLNll^tƚI*zQ;<t Y yMo$yZ~N!4xNfnӏq\v`B8?Eڠn콓r/@dh^kQ
ɸ3(ALMnbk~X2b8z_ I+VpcĚ=+Δ1sD f)F" V$ &b@^j̮ 
2x_TQ,uX;="SAG)I	na(*yS'\kHL6&9H&<S.@s.-թL]DQNnsX oq1t$2.i!@RݚQ&:n%)ZaX^:J5..~k8g Y"*b˿JLie3e?^4h~__6kA'}($|=°=]#\8|1]lpΌXP44	++IrwuI#U@)%H_6;e",:!r?RQ1TLuN;T眿401,7.C:zz<kJف	/GR3k>eo-)*/H%{̥]UfY3uajZjL0fD+ͱL3~V@X`nF16q?J}qȐčZg-Sr%xnʘ:0;όT
p3Z.Y-˪E=eqSxDo-QksEVYb:7Ap*~M"-PdT{gbJ(zI)^"Q;P8uP2%&SPUגTޕq#.<6-ʆ߬VƆRR!4~VzI"4cz7zWޯkZ
b[?b+-
Me
m׌	oЋSY :bvLfW/x3OfUWڌ/&kgP$G|SL&4[2JΨeܤZ.[am<*H F/x3֋\ĽijM:;T#G{(`h+4}1HE̀ptU8pOץI\,FZrcD*9CX9CzI5c;/d膏]	
vB墼ҮF38]~`ʃTͶi%lrTcOg-{Tu"7wd0dshD9gZ"@cIɔ6oz)S\
|FzȲV¹+E֨eyB#^v>],zKĕ=E0hdEPCYhh:4i2ҿA
cXR#~uǫ	m⾡Nl=$&7ñJM̺uZ,]:ngsW|upnGBP2A>TfԁlzjxAB>@{Γ<zDO.74oYg)<eKt^{$.L;Vlg$s=Ŀ4,":IG9$]\yPkC'loQ!֎yE Mp60HYB9<LӡW&2`,x'2~r݋mmׄ}ggUw`[+:RO3X&4K)h۴lA%܂p)>)#6GE&:!Oඊa<I>B$Br&Gj;"R*q]zu8g:}Mc2M)$K'
g^?8<*v,#&k%{ƨD
ܶw'_a.4AMZ6#a9Bf|{"oDXn3nr;Y3u+oB7}^^
E6Z?L]bi
Po 3<|4jrGqb/~5LbLɰw!rVjEAyՒjA(fm=7_td1чHuq/mA_/#P!2霟Wdp4۽fFX!"5eɖ4^"rqL	mۂ:O}BaDR\݀r8="OIhI[dlM:8 |q62*a),/J+7eW1WTz3kh1%sF&^f
U37yʠ	<<eL.y*"c.کԂu*<U( <ҪUB,,<f^E)p˲o-u EvO :k"a ,k"DfdDx l/{myxқE!٪L̰VXhEDy°|T-[sffۑh?RÎcRGcAi +P
xavYVLKhޫ/ʓ2b<珆,c"\Uf	^DL AIIwWXb7lO$r×-<s5_Jv
34.GnAa4 #
풢zo\6 \͝qzJ亂 ~ *G[II/8^d'dnUpP,{u:p)(Mqfe!.z+(Չ%ɫy5{g~n;2DW|.6*PuRKuzvRA6b,l{KmjmϚw8T"d5L]yCo$[ N=y7SX,VN&
QL^d7Uķ`2|KcOR\lakpdځXw&V6wӥO`4V4&OК2Z"}&ioع',:0s?r$.>Q-kA'E8t!OΪE+ymZ]t&R*Rs#ǁj}	r4Q-xR̿XKoum覦ja-+3.l*ȥI2 <O"wT	TԌϏl_40wRvL?դtSzVh"Bc3`TmQj;*ghL3%(׊|uVlb}hLc<k2؏M	`9.̠r&CֿiUN9A<c2UIm]BRV&z<vFLylfzk. 5#CÉ2)&c M7P6<ѿ'V*:EI"mAhŀK;˔X{ھ=H7&
JVHۿnђeBg:zx}.x.q34$}FPSinV]vI5lʢbT'is*+#G/Pd0Ka.Mwf%Y>hd Hz&lA4C2F
~d\)(< u9mqу!R̽##?,4\	2i.ղÛÐ*1nKBPbZƽ,+d*]J%ghI|slL[24VZ6iqK"ngxVچ+TO-H#~"'AX8[CΝe /&3 .PŉJ1
!$8Y_.@61a&V'	NT7^vv-bs5+`}s
'3h<y{N&t|WLb9Sp+C@;i*;Bpu-2SWB5v;SQvңb{0?gqg~^\^+^L(diݓ]׉VDw1Q
xpRQv\n+ {Vѐ@D*[H8$Oܠ) +sN
M0;{!l/g>h="AIk2Е	%=
=.#~nF{YSDgo*nn\(YdL&tDf[x)[YktZYVZ72"/6}6l.fwHL&A2Qm6=K3"|x5Kb|A6/gSSu)~iYX+ďr,do\%2"W,SR4ޔYB̴ߣUK̨T4-OkBPǅ˿o)9/WozVA:{:XTe	Cp&hƲI1@`!Xg
QDUFbE%?V)MBV;<Jq(3xC=HuY)b.W'
Y!
1&QBGςMˈ~'KI/l:4	@E~߂u70\X缳|()K#v)ɧ=Gtjް_Sy"T7챌_@]R4xD+f4l=UFͫ?:ɼkiF});	pUX(<Lo2
1+B0C-6_VF'AbTUmk;qXbexδH3rd^AwmX`
L77	S<t/
;P@p&"k
$y뭏7JlC_q2r}/Z ěV)aq렰Oa_	/ߐ7=um0Iyg
ɭi66R[^D?pO'qd*?>ho!-8!0pI^0ˤoR&emR.L=nW6̮ly>{W
;eae6
Ό@q8,	aXẂO =G 
2)g&HPLi([C*PPvm%j^PZ'1ʊU;\ާESū("AzShi]FuvFp7~|""2c꺄2avr_ɽ6J!Oځ{^nce'ؤda2EmO0~e/N쟷ficH@.IO2.F+:)E_d`l&n/whjy%,ʺCnhyqɼXr5rnfuk&@̅_H6*$(w@8XzYPF7X W\1e`	O\MeQ7Y-ƀ{HQ:tم$g!-Q8	z<D$uO26]2P
ln;Q
.0U_(
s{qmJHtl%VreIK2H_nNH|s}I5bRTJ-FOi^v^>R/9 |T>[;['ɨ=/>uH̽Ji=q,oF}5Ub8'ʋPdIaDPgW8iv8`xD94#FV$!f
ۡśT	bEֿKu=9(iG#dLd=h8c% iIyҍҖxU)#1mD6ƌ$O-V5yh0WNB/YhJKlph<gWSx6pOGPx*R-Ƥ}{s{(tO<DƵ1Vl8pLya=p"(QN)gY<*JgK8<q
<"vGa62:PeհCw:e"މ ?ln0l~b٧l/ETad~#e	@Ђa!T-7ψy&gc`G[O~`h==wpWcaTUmRVvj
m"	=ADB=,ƥ+?H|ƀGThyNŔVm$X']7LܶmyH2N䠈03V	ˀR0;
52
c.:
q]F)۟Z0ʴ.X'"q1yR^zeeAŭ(ɳ*Y[*.1zi'AZlH('H(?,*`.z+ӮǑ7ELDs_!)m^ń}0z;AkԞ60F3[2.Rݴ%Wk<$B/z'DR3vf4+4_:X9~њA6[jt+iwD&;r6	v)~x?#x|h1K^E` J6V^= &E"-T&QY xE
m/Z1U*s
5Q
&iNӓ3x|t?ne7v+S\1]1&4+>L  cAEWPO)Sy03p%+`یA'St13weLx.,K:pLi[4]\L]+4\<N	AS4'p<t%AiU\
V9nX%@Ujaˬ!2O9-H)"OM; s0P>8($ɗךTIH
9ϲAh9Tm]}kږ!}Expyb҆3?J`ЧDS~Gum"^^"&XPsc!3w5bAM0.ZݝHn0#4ui"2 O7i3L&?Qn3_^Aԙ:j#5y:
85:_yt(+I./т#YWC`%k䊍'"2L\7aeFaFVdޏL:;e\S50l<'}.٢_eb`8$^~[*4,;ݱkkp:p<g@1)tlLyЋye;|S@VQ)d.QXl6[߆B
qT|ֵT [/dÎX
:
w~X<U *<MzH

Mf@W%Z7@>an1A	ޠTߝyveXÖưF&['v\c5N")Y+߬+18ηP7.y5oxg. ?3D'ͦL=JeRJ1R.eotB`d8Mc+Aw0mɚdfu-Wr7s9j
Ps8[M0L:o
8YU#IҲ-cC<JIy, WIm.%..cwJh*Ju=:]ޒt4?Tuֈx,l&-;ZȲBTA:Ӎ۠LURUoL&l-׉mf5HYoާy\6k	=sݪ07:
bԃs`+YQl;_nL+j"木5`U<}"N@6d2cxeL
giyofg6``o-aӾ2`DȝH2:]:̃'3OR4s4-,=hvKwՍg;n	RА!\
f~ּBj(r:v6;kb\˝dRvXDtd	hTuY'ͻ|fm&Cp](Z]uS JH92]j/Puk1QrYEwS) ϘtoۈPGMUly6ˣ[!i_	|zYz%=cX!dQ =Z`P &}q(`U/[\rl+!쭘0++T

9b-
E=l"9P?[4Y"U΍߯~lc|Ld
$1tS~ ]{8ެKYUowu3]@3?+R_HGo~kͩ4y3.uT.=Z*߱vcz-	-p&_GQ}otz#yND<mP^:)/Q+"$UğATƐAKJW.cZd嫑]hA:/C)WVb'%"EN㙻**~`Fq*ifX_ArXX*É1õxTANQBgҐ
>g-E:FHOmT*ce5|[T͗[BpwdPm3.CG]`bYxJТ{gH&,	<aOI@W2X2,Fb(ף%jLJ EJW{>X`OFR`S偕`Kq\EZddX
;R%7Yft8uvL5@|bދ@1c,hd&gi{wPv۸DsIИF{1H
<*!`Ѣ*!|Q!>8&<jg^%091ar~z;!y.֎>qTAKOH5@@o}mOR
q;T$65X'
t5 t@'!#}oٖb
.@e:%'1
eO}kS>b1Զ
v,5#d9^.P5u.
AiŊac Wla,73h5㑼t[ju<tQ޸vxKI ='5#3Vd8p"3jAz4čaR!3֑ey&cz
J2GLG&M#1|VSgtICNو~{	P_P54$/)lan4}O$La	k"^!	_}F|RASʷ%;ߥ8VlS,Q1D޶Fhaǚ&ۍ&mTw>9;z#t90fyB_qE=Wd4r{@Xu[Av@%#@kTK:O_=DWXkSMxlŒ
CD?v\l@דU*w[ZEs5{W`UrrUOyQ;J=!97٘1>!O+_b<Q]BMzoHʳdR
j6Sj9àC;ϙ?[u+<56e~kLMRP7i@6Tɣh גU
8IZ~(pvلmϬK*Ly.QyRObH8'{4^;/fRroiJ[sl=9!#[0hCQkL^t7cD/X^xYTɚU~h$FZ#["#fP bp$׬'H|,:Cy#A3X8mƴ?ݧ>aNֱGk4\SR.+ҳ;5iX+9^Ѝ`
L
32wWh,עW'+2
~FIm<!]i ?ŘrX[d!h7=F7dԟ3bq6>]Y΢tŤ*dy
(q/dgʕ#aVKrsOlo`+qGxdJ=Cx> Ul쇤0utJuH*(4.ޗD((PNf\X3b4d$HE~-$Ă2"Mije
KZ!SrfŅibcH:;úQ,md&
,hNbďn3YepL&^ו"M^?WW%;	h9Yg1ɓz"C\r{6HP+䊀,8F374fj1̨4̬WwzLGa6DlۯeyXUz>0DW\ٷVBhH6oղw7ҎA&o3":*BpnM=:^l.ec,@Ӆ oq7aYS(UC_HRf
M;N~ki:*[N#I^nHe\8
Ftr(Dak%T"uSv~HP_b/ݩ6vc^1CSwWN8pn
/V%]-gh
@J70)!8G7,qM{vMp)82?$;'#'@a`;l{#

L=%Rm=Tkױ4yX ¹jXfwBF}rntXӓbo9FyQv9s7EGi"(=գt
E\Ef,XgzSAulT%)\Ğs*GQ
>6\
"29k*z2C^dϒ&cgTgO
TU:͘],ϓ.)YP]\-r"(@SNlUc]gn恛;x:1-K
onS*	!soW%*(2 EșRty$۰GۤēXi?'=1mlY8vd+,~Pg"_|R_%:w=0֛QS^K7J'ry
aCB(j';b̷.i0
b$hqp(9NF0dhK}w>Z(1ʴ\ߟ#x,"j*;t᣽4r2b0Yo}d
H<f|Jc05eez-
HWd"y.>;q3	PG6s5笼3ca0nB9E|Oi>¬,n~,dc[?D<F;0>&6]hޞF;Vysh
tæ\¶6J0vZEG,
ھHgK<$yD+{8tȧ^'
XzԨF2ei3[N),arV[ʕ5JNLzo$֧Yq7
u"hh6d
RqEE2^{ n
JśSlIA1R!f"{R)9DAV[zxXt:MO𑙏r0y*V3?1Gy7Pu<1HdhE|kLabf8H7=3I19eFOZ,њFԨ܁L
2Đ|awwP.G6u;ֵц2#B<äǛMIc<җVt)0eiuҴ/-p]K-8d^uیJpX@7?sB,P:LZ3Yh1	դq@$&DE[`4JĎrq
RPӅ-qω]<bI]<)	&ɟ3fؐ#F>$ʡa@;/ܧo	4{7xsRn{f K"gJ	p\1O#6'Q1LnSgj'P9xdC{;WA6C04oZ;ǤʚG1Al4Z?'20 OfoЙs^sdU-*,RmdMߏО3lCs"c,c8b bc:h+VqԿta ЄfbaҒ-Mf:r0m
`EOR
Q
G5l	gdt)SP &GB-EԅDQ"0NcRʦQy}C"TyXX7x:10*'^G;QE9'x.mM5ocm
j -~je;c
͋!pS:"\Y	%!9m|3AU
րbs!vgli&/Bħf[\i
$ tOa櫊)
˂{U
36NB1dΝXjʱ7 C`te^d5FΩ5svibj",lNwE\,:C-?R)yI	AWa8g>[vokm0E0tɅ%RbN <Ёj+T{4cSw_-pz֣J5N`DvZ3ъ<3D[t\LqiRTZTEtp;l5Y(a\KqcܱxdsJO`G٠ 0Gzx2dpi1nfV8ͳϼY@:?~RXlrSHZ~*\Svvަ'/)1"yف)`E#x~EEV<츫$q6Dh+EEGl[5jfyE:&Hă\Lt:c~T&`uZWd&grgfYIlF;Ķp"ˡX	AV<3DN*|GH|9[*7o#%JyLhNW?`&uN
)"0sV"0[2ktZ2?
=6'+MņYX'HƤFe-TΖd5scni64绁
g)ZLe:ǀ~W-|&1N|#
XTኮ栦~	x_PJ_eeoHőLԙ/ω!)}fo'1^"*;,JaR>oNC)-sZM m·C
%ab>3<
A@]9ezk3st W'z\'$h$"hir1ce;C/W,܀,YLhĒ/W86=Qa8?tSEp[oNح88b;Y\)I.>> i>X,OV/D.aܨ6ib!Ϛ'G  b*@!^d7O

"gjCDJaxtr4U5LeeĬe~z|+r-̊fQf6N[,T,7:zT|3V*#,8ZTX;pX=,mafuDw2ԶQ|CWSR|jJ6MlF;=O.9E;n8i:^-g4-|&K'@C\"2<q%<"gl6	KYʠ3זwp9]vo2<˖uS`)^07BDO,>DIXDF6iH| 3ΘNŒBfB~-ܳ,F$߀Sힼh*HSYi0UH:j'Ybs4`>9%v1pW'(*%,ry3+׹]Kґ&Dc
z"iZAY9Z,	6ֵY[Zx֭iBnlG"ٵ'B\"LXυZq?8GR|%PXxHJ{fMAGiKjF q6.(% .yxmȡΔ:7q^Hd5 By
c;0+yڌНkkI?d59؜:wC\auհM},dS`JStTY9_xP6S"J@	͠!Հ*8Þ@MD9i&VgucS4CY~
'E0s5ޙc@@pO(Fg2*sBfE5R^~eR[ğ:#zċ O_@oBq/<O<qhTCs9X]+D	52k71A,>T*g|{ 8('x)8ͳ&OIv3yJ`dV6oWd3owC1j!UsU l[R& {o1ħP2AI=#/{ޜXb@W1u4H8p߭al^M.ǁ-"E8(y:H(6.iKﶥ.=sF3a$$+EfGAHt
ސDkyHb2',/s`̬\yL,d1oTbBfpmIMь=&$PAֵ4U:v$wd/N\ұ\_cvPdAYV)q>8k_8./\vTg`*)	JCQMD3ᧁ3C@mKKR!(,xɶVT;EU|~#֝vRS᩸hDMtQBv'6Q' a8!ԋXZIkčqp\;{?"Nf?,١W`ee23kSfOiMܗ-qfފN#$~ˎoラ*ݥx* 0wbG:@|x^df@Fޤ;kF
A)o
!Z'	SĀV93IG'Frbf̷FTzf2=&Ω<Lx37SxH&*Y[]9$nzClgَ]K\vZҢ;]HǮP͗8 xiN6һ\*#-F/[<jH
3$PۀcwZ,n|:Z0lK[v:<-ѻb7Ԥ>bN,*8H
940ZI\Ƽ$,sx<+H(B+ .w,9b8
{+JC{ Bz]Fo(|ܞqN|GB@cMcJw^uюc3̳zxVvX!F[V:XPX%'apFb,FQאv:hCToZɞ1NtO-Z`8@,P!.eDzmȘ0jl۞	4Ϊd@52P5MT
^[Q6OU+D@,N2k5	aGo@U3&g&Q
Ct8VbM)@o.xȤ=>+Ui	n`U/i+~hr/q,F^
"3^t)#Ytu(<I}4:p^nC2}G m
ޛM4>/h`#ó󔚁bLZ+X:bYEIr;m#<Īi0
y_0l6#+8Xi)9v#i^N%H$H]&|TW1KJU[4AUrdГ2bL;9:6Õy_YP ?'ĤMO$%F{,mL'gb	ܒe9<k
|1
6u|LG#d eisjSU]಑uBс(wPb&Z3äWɘj@tL*ZH>6k38Q+DBE<7o1!6
wQ*]]=$% cr$ z%'Ig]FRWeF=ctab&
͉z@ruH
;sΌlrpPC&VoLv#_cˮ8d+#n(ScQjU!1*u/EVɈO1O@a/xR$-NHZuG؜ݬߖ:t|un箝FB(D}dv(vjx.{x!Vx&BK1l, Uhchekx&K2I.jÜ$Ci.}7t*~D g#ʨBxYHIQbnaǗT\Ӳaj,k*iOav#yz7Gщw`nBlwJU_hɡSCA~MV3BO<G5s2ʆ<-Ĺ=W_ؓtbJ&&Ӯ*dBACGGsV3ML&.&'"{zYkVԬ3!YTًdn^R~Hֹ
3[ дe;?|o^
I!)/Ԫky[ֳ[#yj|˔V#B[p*;n#})'|$.Mlx))ીYqeeȼ+XU2J_hŹrBv+2zT'tX}WM:h|׎e1DpUeY%@׉)X+,8LG*$@U/?QEZ\iJqNQgSGb
+:x,Vk79tvS6zYJNwV)"\<qd='2At4ʂIl
($(x@qˮv@\^bO0^E
_@je/båST,–ܞc.,5]a5_g3tm8u
S١	B sSP=Ya
WL3)EX}[Yo̽;|Z#KHѼmO1R4&!ex^*D3h
c,p
U2y6ߣ?ED"OE9Q+JmJ[Fx}o-ɧBz2نW$.wĤ[p2K'j0.ky6;UK F*I?+&Җ3BB;}7+!*U5G8PU6Ėr=0%P;ɐs(Vz1*\ͦ!k4+z;a}PyTGg/Zdj@>/C-k"Πxm`rSXL60*wn7qǣ8J^FU0쮝Tk	ҒeHO6V]QbU@,Rvo2^C
 bf>?
+1W*}`^D弒r%Ȑ|GjaERչ1h!<b kTt$_\[ WL&KnhhyB.Mw}[&YI*X'=ב<MToB牖[Q^
yEUYAx؎1卾4s	_7I;4z.ODJ{tXHM9Ee$>n-gg%9z=KYӇh$=5vvTY}+?~
u1qi2ߔIG 3t[bxHձ>g3eZˀ!ǤUl>P]t_M#=?	}I.aɩ$3>ρA<q(r2 fHߙ4B yS:ߩB|YQ9r0#>ى9qi`$^y5g.J$C&a-=g0#N!5N c6Rή˱6тK7(	/ƞ*Clv$XU-|~{䙽2-oCFx:`f ew	©	8e_oP]|B96u"	z%>
ie٤4Jc0Z_b{eAna(F"%Q~w`B6q[&bp%\.[{YP.(C	Д/"-BP T5sri[vp8+ډhB=LoT7-Nr pmݽ.ЮXdfcj'k7#&GǗ}VC!?+KclvM6I[1ZIyhi,tFd6aFIT+[<Rl$1mc ->58c{ώ+CRބH3oS#LJ= Ar£_aB9z½#(IւFʞt?%h?}( r	k-Ll29,.L0|":/7 :s,t8$=B,d'hLlJkS:Ffx2ThJ~Y,뺧#U*ntd`[,I <g5(&Xh
~)YlKxH6TLLdΎ Я%߷h>m|C-L)hKWSNvz	6յM.>a_-pp[\FG wc+:8l<3hF	2*VX`́9Q(&K]3w'	ny=ą }ЗZstTVT~[O&D^EÄ(	ϿU3Uz5˂V̅{)t۱J;U;͢|
}溟ͤJ^fH4
uC{,{fhO(>	'E3|ߋ%+y4.#,T 
;Dx/"3Mq`@pxVkpeox 8<x3fh$a7KD~ߔ6(R9Pn)m&5$&cy
#LTl{>lIwY;C	Yς
'[*
C',MSkJM/{D#Gg|)uĭѼi]X]b:(i!2[u0<	
]R2\4ʿ=xžpw,N3Rv-f0Iю+R4S+,xA9nTexc0%褝q~6.}&y6leဌ0CDW|$E\jB3(՚%բuYG&l꘬7>SLSnMTK®S%$aie6Sm.
t#Hn\8;L1SK"PG9)}/ecxb8
<%#P$rAnR8heˈ@BYФ`Qz3ϰB4D;9.hOe;y~{XʆR|KZq3EDV}opVЙ--ݛCI9ȿ_"6z|(:]J~wYA.XMzJ?p{[U gm` x7HaѪfռq:R5ciGBKꇬ/*MK0tUY'LbyJ0֔&,c=Y5RH
W,8.]LoD`EvjWݱL
o)[X
1FbTib\Nƣޏ"b;Ѷ$V46cd)ok#
]	`9\K#\Dp8M+,O5b8'H
$I^PyϹmd-
6"E%eAw=oW$%z:eL,k<d7vy'hrD".\厇tj:>-D7snU]y0bOJ rX`VOH	< 0L3z$c6ųx**B~jhhoPZHV;7L߾HS
*ILdh`L",19 r
'1".c`~2$qh 7HFX*N%׶4LsZ7࣓#˙q19{:fՁ?pySq; ~YKC=i6vf"
W<dOٔ,D
!_)T2o%t %2(_OB#y
c (n_Iafĝ!ؒȁ0Е')_[Ejfmڬ'9#t5tNK<5
=]PbT$©Qx0jrKQ5	텹/]jW"j¸lM;sۺ$vzȝG*ϰ@ɒVD
О
Q$l.[v0ϩpCY؋r	zNE##}7Ҋg3p_yh$װ3@xa};a=\.oc"=֬  OaO8*^YiS$?uG.A'5DsTM\`ڑ<Ftrz*/~9k+f1ۜ6]+^Fа7NwY)g)Z֑VWKi7B7R\~CcDIy(tG4;*
SeNVqWoLv4UM/QB]~Vd'r2LG~v'Hbf(F4׹)ΝdӨA־YPe/|k:jcE4[ot/˴(|~L0QEz656
8H
lj[dJg|D0.;NqoL]JD܌%Ԧid]P/&.H;ikn[dv %Wf&YvV,R7¤r[gv+1]%,/BV7[x`m  T>|HZM2֩FF37\8#07DkDRe\;Ꙃgs?v
&?q9-j8K1	1貗bX*sÙ#;(񹡽J*KTn#98ܗ.YNi e	N(H䃿  jIhGJbT=<o75Q\)8EL)lwϢpŘ 4e,o|w"ŀg[b8jjF迫08j8uK#S22Ɍr]&)+\etHqGBX^;/
ш@
tPb:pEYi<jǚ>s&ҖujY80(Xs1DNˊ/Oҡz
|Jlȷak,a+? LB?!5[Tov[eyWF<
 n@H[6
xlT xAzLK)F*U[,Yz7H#O~BP10ނ>οmI(zH<F$FwA=oz9}Gz,!v:fG*~*h&Ha˹&ZrD_() IM~gR
,+	
&gr|mY@w8VWTХ`!#Հl2?s`ʗAg(1A:W=P2p &qz2<6[dVr`]eecgZ+YNC0%]q.ꔽ
˧v+{s fnS6Y3EF=8^%:ze~UB8ʹ᧭߬SF
[9!g_0Jz~L^VoH6Ζ`|7Ho[-cF<m15lE.c$*:Ymxgo7JD!?rwQG$hl|LT&1֣1)M&0)G)B**nQ[64Hʔ8Ӵּ} dP<,x&;)AV蠑XW<A;FʔOڼv5Pp gG:FI2:,El&a|-Dj`ZX7
؃qʘ%	²3P*G~Yr=>>fi&Ze nf#!b#ՈtY`ʈq
>IuDvlŒ7*-+DPf2Hje-i<SI=%^ÆFMڤ&VaY҅c^L!'Ϭ% *A?Miå2Qujg}<z૾3t.Ⱥͨ6ۙCGMW&WO^*:Is~u!JMI|S9=fAd;lۥsSS0/fװ5%Ҹ2v8o#2a}!7mU/cE(JbeԚ=Lsށ%se
eg[Eb]7CC3.a-\<mfqGfk7YMU{ʆAXo!OyӴWU_l
qYc=BD3Yϡv,.d̬3|SAf;|5V%]^lF֪8°`7}LEpUW/Ik;bJNvw+/B~051CIObJwK?q72o$R+eJZ&yJO	Qaz
E\ą4(c-['tb!'d}} g:LڱsT6i@D64)bf8Ń^qYMn0/ʮ\V`ɲ F-	.)u93jFفΑ8d(Y%
 Ɇ'-Ba:$ih;o8]M:8+=_@XG?
` xRjk:W6CqUF[/-ⰙcMv)՟
0b(Q\i:]cC!M|$(J.H?ha,HBP1y{hZ,m^	xnذБ
SR1۬UJ6eez&B"ޒJ6io<pk+5w=xl6+&bf(rWQ!$6"yA&U[AwQl!6n37\܃ȣxAK}
S)Ċ|ٿH>	 6rQ9V>4lA EpS($82;<֤ea"z1L_?s"cFQhXI(q-S缶2xj!7ț$PWTZ{ts(-DY6vB4ص\D+{t3s8V	IbSgN#0fg^ꙡ9Y7ZEBŃ<80ѾnMU?c5c=r]+]v4͌vI%q;0[8;,s'R;Mg p%'|wh040hjbN(0+IrB;mq5(>KX;>˰)͌}H9`t+rQ

v-/ɁYwony(ze=5s/E#N*3\"n-5u9A1ooqo2OnTƦ{QjeO*7x!O0`GbA#=Q3$M@U<j@vufJ;*	_R	Mrب&!aS6eTQm	[5ӽ+ߢefуE>XJ9$Ʊ.i!nxa5-F'N;R]II@KPovzVjmAE?hp!ınuld )
"c5P%ryV`P,j~a.K3ɳ>7HE5+ |F2ͼPVx3qp~c=z$} np`JP|/vF/QA$vepd]F4uhއ3?Ԣ(<>	?x'Uܣh'
T/>:r.O
^`t9X~$|Sop|/%n|ŇΫ0mrlv!qbi=fّ!׽J[=2/ Yuu@0J ׻:#SYVixk7~f&hɞ9boGB)n^`ʗwfc7tԕ2kSzBdDSzƀa86gB?EgPlMavx5W$ᛈD
e;ڊP͏|,Z(힦Ls2_S("޼$L>:(29zfb=]%6"E{
8sNNʦ2|I*PU
J/JIX+AțZwBgfB
O[Kqћ5C,Gu\_v`4XЉaGRaoj%5cȬS%`@n%P
sgAh/fD֠KE<s,C"3	,OE4L
%98YcIZWm3ܦ$HX	z/xe^u"ݖqh,tX
m)X Jes*Z*|,}/#f	֠gEE=*v/t(ܿ,D-ّ(#ޜiۢ^ɿ|eF8jV#9O#1+m kS<`fy#!ǒ/2U`8'͖ /&N-X6IgÈ"S_!5jL|LJDO7P&lܿm!lk\W.n@ė166Qm_~BPzOn..: 3	f̪{QxgIA'xpue ՙs3EnK-i'2zb٫#1?tRr*E3uΗepf_v4ʵ8Odh~Y>^(Ʋ T|`݈7UlK\0i?ɀI	`NL&l~GBbvh,2=CO3_iBORb1w	/

X
p(Q'ÍFQ#NTݟc9fWdr'mZ:Vv@Yi,|GEޑB`1.jN|jeomIxߨf"CcxR,Zm](_h6AY=G *XQC^\#^Ɇұ@IH|7ع[lOs*6s#^xMHtlĬ+)
bKLw#F!Фbn_nv蜣@RL"`*.^},FT\TY@z
!VnȽ"-F

Hd70pe{Ӑ,jcVydh^Dx<6;Bʔܘk	GbCÄ0b4҃Sސßwc:	LW
Z,%A؈Rt6Ύey/eXB'[܋8Q.Zl])N*J.8b
f1!V%pAtoߡ
Eq_+׺EGy#ym-mf,_MnDʛ̣ KYLsY{'0:_ٯgQLm\
KM:VQ%vROqp/{fV.}[BPES	j=l)|O*'K@]8ff&f29۾h4.?Ue|,0[D(#Ed(g l
ˣwŝ=̙߽V˵Q谓}6Σuɂ`C<}4î9L[E޲D/?8
/ZLaQT6^+_#,S;mc%h2V@
[bͻ%w<yӟ-ʳF@JTuK5ْ3
}NZcCUK8fup܉1m$y; (yl-^חV]pVn~{n1͐F);Q˙o32;@TvR5F0tƗ4(9G85Ύq_s$m(TҪ *x ,t^j>X@b訝.JdZJ3I{!&o?jBRa?~) 6
& Ś+.rs9Jԉp77U'm;C{}T&@|S,z|:(d3TurMz1!G}MiZ47JA2Y_l/S;GH]1YA\wlLn[dI7p+KL]a*ХLIB1[QLVa9͋$R/4,|87, ƑPʗ.,
]4઒7K$݀XkIcVgІQȬ$;\A ȽĚwlwLaZd!v!JM5oQٍpAKx9_MB|N)~pt>ӴR7J4`KtE7IM$"!j(tFYXrMyxUA.j<Eۜfl4!r[N&B
wd$
3f^eXY2-V:n/>w@]B<OQ*_:@lԁuޛ@nK8x+<ɲQۂb5$<p,3FPMX(f;^E`t1D3V=XLdhyG06yl+)ޱIQo;g#qkN`s:eR:2BTvwvDW-tؑuʤ@zMj+s7ݏmڀ2,&6D+'*C@g+4_6G kFEv,&pRCj- P"D9JlԽXKD~$]sӸpuC xS Q\a	2Cw_?bʨۜ)ZB	_s2YMGc@yoGXBI?tRQDOr Hq_<ˣuGep+o/GuP*On^)q6os_
 2u?7C͔tIɘU"e%Ug(z:oUh"Xm۵mgz1|0+9踯g~\`}o\Ƕ9Mf|Ew cA#n3 5\-Meukۄ2'Nƈ )8F[cUf)Eb0o9+3,WKkYb -pQ)b̄ºX	X&gj7kua}#!BP
fМ%]7qT&D訥#meG%yvD\YZkQ:/o.:it{1̝^xl[]U+S^}!bӃM#Mu87W(GH<7(ڌɢ̮ۋ@.MA7HP:j'3ꫬQ޿\ri"#U<.++V5X&Sc]0V0ν
7QNDэs0_ؖƍIaXYE$(*2[fʵP5tߌxc$q]D,c	с\-̫t[*;MIm3$J=2QQ;10GÛ&)VȘ"O+=t^Uer`96	)5bwic!9=e #K\Kczl`K74T׀	Kň)e68)hO7:$/ԣ/3eגr-SHJhZ&Y?`PQE%9Ͽɼ0PEƭ7PnZtiY8hndm^ZP;22.'XQGLń(ʉWOƘbûB0=T8^CX7˸`W|N2eՀ㰅T!ѝe,kRnp3MD:vPNyxyWJ1wߑ~&$jCHCRnf̟Lr2%V<@T>.#,"dcڷ&gGJ/v6jけl Ӊ,9b`Ru4X6N-|L)2W
>&mQw܉DnYd$t6-gt _# m6_CUʛo%:!`ڪzW;r%55i7'," \ɳS? g2g
Te!˗VAW/_"HKѴ\++*R|a.ǻ_Q^Mx+J	Gigd'jhT`>71sm%60
[6`*y"U I! BFɱ*0whxcퟴpdh\Hw3EƀӛmlMF*sQ)'aXuR;)`)x0 D QF *b)l p%.\$<dOu\:l2'
i(U
8³!lfmFr~MZӲ{dxaD`. }&ґ 	;e3ڒ<eDva?oU<mc,g4EjA:6C>q
|1C8h}!o`I?.C@=]"KEXdHK&),K`f-#kl4~jD= E:@#9n8eBvcFg;EЙw9扵lBZ
OyZ!ڊǴvA/\oh9X;(IfzV#7֋IS)o0cX*)b=%PQ]W!L!7>N_$	Va$9|irR.e,Cm"|!HSH. `L	Saua0mʎk.5lH]dEY*O]x*пCb{0v)'
f?U)N׆J-DEgb ѷ/`άځ0glGeΊEߦr&~g).a
U;|gK
C#Wst]ƴ-sPBf5TzVi2C3L6\E*9NA3(.^.1T6d;F^3 p"${:RyNM7ަ`SfV6s[ N)krkWE/+ed	!wmg!)vg^I7
M9;U( Gma7qJD?[uB٤Kz=vZ\*O;$7okNOAsert2.U]'וz1Y쯋<4ghpB J%@= ?-'UAV
m" @i68N1FzkQϹz1  +Y2{p}	OWX'[J7WpH6y[UUZp|$)q{4rav''}0Yˬ'S.Ieۘ^&:xkW*_ƀJ%+Ÿ|hv1*h -r&/S(&
3
sݟ˦X0=ᐛRs]J{	(%t읜Μ *PKG'PNURIX y|2MG(fЧ-^_ҥ_JH]XPiJ|=xvW6'2}e(vDbX05ю<ryd/K-I؄EKŰ=Q$ZTsl®YhfQbW/f|)TCnw)0?G!+7gcWuSS4UnKg5оa\Ԏ{e?ehʴT7f,#V
J,ߢx(|Dt#Z|{pAQ[urhq*B#o-~ȁ+zKxB+O,<#RM)aZkJŻw㘫ksM{h(19[7ƸS2LEPvflQT.1R( Ҹ o6XJF1+tX=TaAXS:J{Dz@S:qKj@in
ͽ"?҄ zaR}YHZ\Gmm?2V6;b0Ck1{\.md"1
AA._e䙘~9=^7~r/r~K+%7$QÅ`8Tc˱#+[LX[DxjqS"36hxx=38e:i'jL(ۍr%3:>*mڗtgXm.%[5,Bo$Q|dj^
L=`x(_K=N[W"[0'.!ǰf<xQJXQmZ%B-|Ħ.h">2ܘhH21
ZF|lfwRSHSM+!IWoÂ1.H
wn`r2l}=9R7D@<^"&Ǌv!DCBԽ K8MTz(l;dLk(&:6ʲ$&yY܌gS'4JT|#\?MJeW˞IecL,LiGe[o:a\-ݕ		S6mQ;t)0lQYi(DxAQzMe_k#%vohRT`KiZ<Zd]v"f0,'6*	C;̤ȹa6nfSY r`kb%)KTv#?
ۤ<5t~@oQP OB<>H(.J*W4?4Ttl$)7CyYYll͊˱&ҷXEDPѡՙ&iJ3Ľ_s^]ٗdV	/9),V/0~!G]첋OIۃS~RvJm5ԎO(TS%Nmz!Jk	И;xm\ltJ2\%8`t͊ym=K^41k`EE=;1KЩd8
:b;}[>U[('F+D|WNUbp$R_]N.D4U'W)l#U
N KJo`(mrp1m؉[bQaZUNXdN&
\SGa6 +~q W9)cᙚz^(nH!
<pi1W]q֙$0tT$(CIa"	]({qKipSdT߇:F2/oЍPS@~g#`5=sN=xFFFqCihV3{J!	|Z,bz.=,X>}}SCHb,Ni6ىnRD8	ӷoqʋ
E]=
Ru.}$@^>0A}N[ZJ4F9c2,+r6y+3&2~
`!UvVL$VhᬜO,\)Gd6[3o ^<&orye d'E`Q a\'iq*-;~;vt-\.a^AQ<(rT_lG{l{
zM0lXdz؞ ogћ7Fs$tf/0c$rNm-<<Y
K7ڈ'h.&ZVxMӷ3bmuG2v5oY]+a2(n{2^LَRL혂#U$W3Jdu"r
FJ΁$5x%)>7$0DNl1D}S&0Ky5!#h^lF'ID{q*8l3|h֎l\iXeZvP;6,t49gՎemNUFsjl/eX'wiU^A.mašMSm[0VJ	L=iˆD5a^DKW겳M@2'J
uH
`)~aYMZF/NYE؟h%ez\q<m[5XLhZK`XG@++05D/Fɹud3,:1ko\?UJĉAmS0Ռ3jqLeZLE7Y|4okѥFu*l=9w1ܓ̦~B,k08+lm (jdlgHi5֔ASeK
J?=VĨsZL56GOW "
oC~E)r@S'w`qja/q|5TR[Nyc(_OPdWWK@J}Yu%
P'OPWm`$}LL9d!$Tj.)Y	Qި\BL,[Hkܒf_*-w*[`|?FQn6$Qy+˽=ENi!ŴuIި29|H"B@'5gsP%șO-4O)@JCYy'܎XX9$.U yb
{'Fm[2L8
wYRuA1)bPꃘ?n
ՙhTefnŦ [Ә'WOB|1HD]h$SL-{خ:cj4V
ӊ0[H[@DB;oYG*8}Qބ>shT$>C2bXEKgExQ9v3e쨖 x
,w|a[dVɇm	,\
`l`qp̓
D3})Zdmsu2Y&
+:aѲ/aV!9[I,An7&Əh;͋ǜ54i@E=)nd5AG}[6YM~1NC"V¸m4ydƗ!s-.< }L-.ܩ(q]g΃d=X^Ua2m, 	n4[Y UpIXAf%aǊd\or]_`a]hHJ/
5@N1I(.DMEvDn+Q(Ƴ,vPc2y
_VdR)dN|6Vҋ;8;Đ>/'JKu K0-A:(y$'ӭmE,Eł*L5oD#E'<2aП~^*ۋp2/q9;Oi\ʳ&Qs.&NrY6Ơ=N,BfkWvn4aY%6ւ94?VTo̶meI0|adT~AEd=h( <ļ%!V7bnV&֩HL䀛aAyEF_VLҥueezWoɶ%YV4F6I.nƌ"l,G{[6"
$/!g0	ԋgsy81c,y+IuC/ts{ڲx#k־#/$ꊎ&.<W{F%E)
grGƳ RLlYa`"ީt-7}1jD7V,̱45,S#AJFN>$;u5Ej*{B [)M|tEץ`VKݴ
鐣L*^9G#f7YV65~aPYTm`fBϟTk[=DRjE-C#ِ+Gtp\b@(}}.H
yU"0"A'Udm4k>ESeLPJgFtԫ
BTn2x$·7	J}-t\%HOEȐsuB7Y`^Dj`q#V
DڴxU!pRis/%hD/
BAJ_Yg܅ʳ8JqQ)1"jHs`s&I)}Cd|OOG46ɀ^yu頏&:IHclumԔH8YQn
hO"`Qy/]	*P3VEI`1y3Vkn,3 :h髶Փt&eCW*g(}LwciW[Onr=I]+mD)]aOč%Uk:|]Ng`;DtϕHz%\åyHl
,%O$RT'Wl%b6XB;F<RApϩD
VےCc2Bd?kFiL=s
_Rnawj(~9T%̼h+//eNi'B5hۦ(<L'~BiF޸ӣ3뒢+3S\
v0p8nlsWasnaS8.7:4zgCNt=YiiRY51pL5_MSv nǏҘUo0H*
sfE	/HVtNa3:-e&]R[TY3J1@^,43#c%Q-P5Z:dW!DB$TT'.Mx+¶)QcЉpoGh?CDħFxWxBW43Oh m
9TnY`2`zOi:t#cXOсjʀb9qӢ3a䦥8EEI~y)&k	GdT!|E׎I =p2ù^p^=l~Ms+P3MT#oʱ_(Ǖ|*-,̎kq3%8R>;G<7t[P|00|3UT6M-"='֭0(d2ܱ>UZCT5/)hX#nK.֯Acsh*o"{5i]Qje_#tz$dffPM+&2 j4э5FJm\~
NK)Ċ-Gf`yDFmV38B=9i0e/
*{(:iX%7Hю2U,2UTSʄj
T%:8Nlלb\k|]t6eKwm=((mf{Utљ |[ݗdC"Ln$zDD0͙&>V6bp8ǻт#	y̆+0lVXy&bm`U\L`uQpsq:GvLKN}WH. w\뛇ժW5[!l`)ݱdfb(wS %՘F߁yHO8o(FCI6]P$iS3H =u]6o<g
/h&"qJy7tV0fǺ;1d&l={W
ۑr9BVK/!h39fDK+u4mF4qIg$Y^0rКJ`E,QAx_ꨚ-59C	Sy@`ǥstY ӨpM8o,˜ye|QV
'U`zT/{$2{j8D=X-Ty#b:}N+J7ci@!\Q᠈7Kg?de"Li14%Q ~gr0nm܎h5cz&Bke7lb2ڵ_JSwG⣭;'TȦn1]Ts.'(+q t4ԦaoBIX5^xPJ\1E6(rNppI^(*ӹMGDp=OoD,Dc
 [^$JdfJף[[ؒc%iCyXyB}Msc#SڷR!Rn.k#
3JX/
k> z> 9Dؘ)hFK죯pDS<X>3KYdΟ=8~aL@"^E<n37k}2D|to
TW%/ie18㲉G!J`z<i{SMԽɰ^=FKa۟h,qm4;Oh܆zݶǬrWlDr),F$:4MDc,8E' ́4pO'̠RܶaE%-˂0dVz3TSSLrq-Q!CUs?~DQ l;N&2`9fylļJT J
$(6BFS#ˢѱ$OÄ0,'~4;
@f2JLg7813&`u*ʘ3"hj%<{j^ǄM;1ʝ!RS'/pRATXD|IG	*22B^'Fy6"ܳDhWm,	{PW'kɛYUQnEcK%^M>/bX_L5PXwݤbd<eOK|hne/
x:qЇIENpJ@xSRˣe6Fh04MzqOG9<lwam;|QHYG13&͗Uȼ+/9Biq50O`T/:R6& u?Í\ǖcK=$#ѱ^L.@UUl5 XmH>2l\o0M_78ɪXjYi9+bH(xഃ!=l6hµ?'^utD.¯<ZfqkW6Fɕ[(iEbѐ
gkX&nt2ۜAr^14ilnx,m)3lǁ&C8H`|PN}(&j3i![8!Q(Rے`bh|`OW?,6
h2Q]tm۱<߂Am Tv(ÆZ6vKQJ~v&k푹bb!,[bNGY0(:Z`꼌ߠa|vf/&ht5SrZu^J'?CkA\vFRH'ni HJ}aT:>'{>1P>Hh-G\uLɧ\9̏tR8Ҧר˨põXl
sa`_R2%]@iPW,F.lArYA^Cg<?Rxc5(.͒$Yk":l=1c\LFy	l76Пپ@ꎉi1Z_2lꖗF
G&GTH`$YyL>sAXf+.
o\3::YE4raxP0`ML^ {$IKiC4|B.;j ]4KSp^3JrIm%+bPPcZ[98u;g0XugL\	b dcByPVCa> \<W$ΝY<}0Cfp*xsT|kENYmGCv>M͑f-
s1$smM&"Fx+4\|:l+l=6qXRx>1: =g㴏%FyN %&)jTNTWm ?O
a0بxę32O! 7N	O`(Z!l㭖50.$w6_.(Gʊ^2Щ[?6h:N}%#!~<Yȫ_w>>vf3b2C(1;i(h8
԰ e9<Q
5c40[
J'_gXS`)ӱQԺ
	qUtl]8E2oehNqLz(y,?%
AOD	L@@4*$2h@-+UeB,bLƻzҭ˫pj
KLI5;D9M>ŀbRH6y>kU0ʣcnEe^^q;Wb5B%ZU?	8]Tw[P`\vX}~uƁΦE5YC<_(&ガ5яg}Dd0~NszF940Y+"-8#>:^-PWq,.XJugۻţg7
*+ωg0)cmP(Y`!pC*<<~SUg>3mPt3H+H\tcJVS{x  7MhDvYL)p^볝lqI.@Jj&fnzb)ʃ+F
kHuTp
V>4 saBU?Qng-aw$O5$Q,pO6z9JbacS⥽$!д	
0?ъ\2hmaSr4gG=lY:GQx7c5װ6Gx[U\#
SbLX;x5KǾpmoqsS+?9Geȋ"䟢_[ӜwW\0,̧Nc-X$
FjqWMNoنM+N \o?VvC̘yqP[N\?bDyk#O%3Yl1N#2)طHhꖊMÖ.K(5G 7m'!6
o55uVeR9qܦKyl-5,R!˘12DC캆IC'a:?8gqܚdaV*"䫻L78/)Pu)xe-7T+*o܏((bMp`<Wd-+6˖LqELہx=0E>tC50BK[ᛋSE@"yޙ#讂\l:sr EHW.F7(Dn99v
|Z,.6[MUzȥD̟<K#:.Ĉ˕PSzztEDt#	:
>\}:Sn5œ^&ҊNjx?xwZ
>@t*4eOIh39v7s\wɑ׮4
F %(YU}?vT޸q݌܏HH9>H(m8cQVb_)zpm7]AAQBISE"4,x*Z5Z@XY=C0TLd,e,L<xW#eWsmHFc ԿfofE R+bvl=e>iMrv0S,yP^:oAx (S=H3ݐ(4ut:N#'E$*L)AݖA[-$ڨA|R%Ѳ-gѕ(wpxv WN;5js-,m-֜	,4-%I{9D46;:%=SW@<4M-m7s6C3ޣf	YC- `>G~vF{ds?a92m37,B.'BA,e.3u$_LOA,|J?tc/l[а*Y;e,!pNO48|R<)$)y+2cDÖO@5dϸz3&X)7D :wr	|zGb?h{H`^خz&ϴ 
 %W0DeQ"ivba]xammZ(ʔC_׍QP3.\2Hc yXV25X愹ߔ4AP6gO
ձ3v2@h*+wzs%' RKql}?+`,Lԣ( ̛GMX9L4\/7n̎"*;qJSndΚ@vO@:~e 2zUƺ$7@uBS$=<C`#ޜ?2>v-:_;>;`%.]Q/GiPvg
2EeE=4s^mHouuذxQ|f)iK4D}0K&q)>=8gP(n[_:uH*=L)7+IhՄDKI;Obդ*Rtɼ5Tgk	`qCCRJ {f<μ})57Y`{F%1z U9N]uJ*=;6U&0r3}ҕT2:5
U7zuM7(:N{gw+޴(YiCR{~ړ!{>y2P2oa;Vea,>l>̔7vB*q>N !·.;]ZCyD\T9/-B2t^gYgU@?OMY'I~W0nkxX_p5擕Q҄@(u^oЖg2l΢sPwRw
,a[7K+<ibGv>#@Sѱe`OFggB
^D#/fQIDi7fkʃأpTx\Q0#j2(c)bl}̝+0M1c7V-ᒻ6mۓ3k]Ë+r&çڨ.:YpsL|vgRQe
Jx#E	<]iyrbW]25@EGHU,TWZV{Cfkۙ7$QjrЫtk>鎶b4m8sn|xw|g@Kv2{)cVwwCuPU6KpGub&Hs؄
$_=漣lb5Zh{`ٞT.V]SOQI@骐a= $6N #poVd񦎤V +'!>0BY,qFgZ{o2pL%](QCHC-*>45B=Ao('#P@K] oXCv/%(Tn/qqdw&D\MYhiCaqQ捴F#C$%EB(YXi$@Πl]suceXf/t %B 2!MG͎GZMש{fSZ#?b}yԁe=tzEy,V`hBt߲Ői04X$w#<'3%6&Sj)k+ƈLxe^XYn.`;/H|0ف&sÙQYLdyYL4"uF+ZLaP:WOd1DʱxNs)Wq&II/mAiI
Ǹs[W;Fɟ0Z.fV-:
U*&p(
r ܀ug -d(.6ݳA?+oN<n:y
oW5>.T&ܺ(Z4O7
a%(R^$PV9L-
K~kBT8AևaʔnfMx6[̽L/BoQHc4àXCnrm33>?IPgC	Aqœ,cs?$[vF廤0&K͵)(6	QzɬOS+̲C\!A_t@NA.SkY$aDӳ-@
av2izg&_\fKM=S"FnZ.ٵiWKI0lzv4#d,{)uC
8Z(؂xXIZh^26qq.of,mm m oJd6ld(YƗ}hyÂhULTddCH2)H%t_
3}7W5Uuo&0^QEa)*̊@Lv7z(XI=8?S58UZtϛpA1)&}ú9`謁Iw6
O0k\Z+B?撚4;Pk$صmpw"z	fy6<a@Of(*΂Ih';v2IM	!k2y<Sı8 LWbؗa`4,r@.<*SؖgAKcit?a[/6}K<IH7(L
yCT;$ٺ	N1`aҫj%dKkSZ,74HBYs$ҩV~.:lPݒXaYT6:e&Hbκ)"m_^ꗃ.Hmm~<8<qur7@	OwJv2PП7O
Q
W1U6
rG\Tj.K;oG隸:Drغf0Ԛ8Blo%2,R4C$Rs8B	ɨxU)0Pi8dx8|<%8va 7ԛ#elJTPHF
I졓@:#l\Ց5x2"*lSgtǜQ	=X"[%6ދd (!" 5PF<zGԺ*.\hQWT|؍[/A/r
h#&DE&bPl6Pee߈b #q3uLp[aa20mhe$Cy򌴣O0=*HDE}fAgv	QB\K"AK<킲W8u&!acl5ba+qXYyc䡂M6/|<@]Ů5?ђ=,gޠeҁIXF#f7̚o*a1:oNDKTn&MDv4eYY2;zsb,}h9T= Ysq&QǷfZ,2 Ofv	ƴ0Φal(*&.Fpq!̺:^'R潸Rj:jq&K~C֚c1 =QFWw+&yd
Q)T&tKJ	T3^ZaP"ꠎ'yAšOCgNz&XB[)-Q8|*xanԨ0W!H-s:5@څ04BoPB ۩RTbYbw`=.U.<\@Ph3Mփop+Q)Z
L+쌏~kTMVQ-9kNI1H㓷@\}e\˔聓33ָr&fyLl8@
נFř/3=|Dl5M/mw~
={F4lKK(2n,kܣBn:̓|q"ӎ$SGi#vp{hg6ƮǙET{pvP;1+xXUa23j̱v( DWlSb\h3'&Ң@'Z/@uQ-0
I-Ό1^Ip_U1
n|[Æ;0|v=>817=tzoDeW@yZ!ew෺Z_Tgir$Ǉby}
@!ā#^(BM0O)i3L
E-J+@`Uu@kP)vqFß9^#4\ 0P:쉃,x9.YW&rff>
c%xqv@d$&۲]-ŦZʌq3]8IT=Ӑ˗3K)Ȥku-2@t{)Imf1/'#ϐ	EϲqF%\<ҵ"TOV/tQmj7GtUPO+׭J.LJ<EMqLt<XfTÂ86:W?Ob飊	
dc&TEnI_$eWJû &m'#H7=II'l@i#hGb<Uqğ0#E !oB7Wi9p%4ۃab$5$Ln.l*	XExpG)Xyvԕh4в6GPL>Z릃xnd'H,UtB
YC8bL&3y
(1uP}!U!|/.T4F
G?
sLds+I춮Ԛ?ejc1vRZ]?"4,{CixzL{v*u?vP4dҎ9L@dvW4)DmK3?YeJEr<?3bU3zXY%{>:O&lG_<P-r{c'tGC!fú3aQ&SV1h"A&\d.6-J=_P޻et8ퟃ!^~I~a`&NvAzGoHDi1]$c\	Ғݡv~&_w$Jk'93ʓd[;\HeAc ܭƇ#w|y,Mö:u8ՃV)=V K<Xb㻄m|&trYO}Q(`@L)uB"2BVڒfrK!36%upkގW)`DīCo[IǾyK!1Ce7 Ƌ0k59)w,E?W]C@iŖX͸*P!3\`T2(b*X\8J΂{+)LEBEftMJaqD&ڛi;'A}i4AlEϋ%CS4A+Skx1ɌsƾIӓHB>OM`D
$#@$ОQOLg]ivEMPb&xr*]nq5zÍ6tsR]#gK躳Vf ydkRK"yr!Qn6"^t^-[כ"a̀*űe`S|>R飢Qa
퓡X=Bzas*j9(i*R+y@Ёogpj|73KQբQItjIWe|
ӌ)ܑ pgb ̔"%䘩z?n=zNiUQ0#hz1 p0 ,y+E
xAy&{Ltaϵ
C,4C,2xHJZJjCA琬mk7Mqb֗"P1V;}<,I3ϱ8ō){$9Sqff@^4qXYI'6/=<c	c'{
zЯFd=<8FGUFt@EX~1qil&xlR]EgZmCu#D"f?*JR)WHсPg.F8Pl΢l3r~<J
b0(cpL5ZZփN2/Zar]Gcզ3gc>$6)r5[F-QǓ-ABT9ElP׸,mX81sԔ@JcʀXǠʹ6
CQմ2dyHM1X/s	VNk'd}R	2utsY	ei0o':*;C%6#&Ѿb[PGpq,#B3tҔ:K+aU͋b0=֚Q.īa (Hk#Ȍ8g΢yKiQ}8[wPX6l2	I0ݻh,m>A,ere%"d>!it:	$QۇT-Te:`x3sŘa!d ;Ab)
{!
ϒut$¡3DPG*\qҶ\My	]|8ܰ$2KWZhN69(TSJ~E<3kWr,ugQ6·$
	[D7f
<5QKЦ-㘊dsJ]z?,0r/rg@r9#Tx

dELjgBy:r	0(mVGWIT4'Eʧ 3ch&E6σJs)Qaa9z]%Hr=^`)V'9&u~HV+H4;4e&V8!-)`,SFEWØ.7ʨONC߻wVx!(O
/@^'/ ?˒"̱T{2Vq=gtUAcv=4tS}U(&9e<EKD9#1[N&FJ<luU4Yʺsrm`aZ8
hZg9%6|_qzC d-qi@J$T1*/lyw٭dyKÓ
]*9mI	"0DZfW+ L%̮B7S|{uP%
G61&)B~_Ⲿf8P-Y:d@9?,~EEzGɏJ,a PFŌ4S!m2C-MU{h/S[+'mL 	jv4Y'jBԉ|z=(OW(Fph2s+LW+x3<Z!&_*zmd~0zy5ٝz 3SV&8UE3TυUS*4-l;8ޯGM ^+-3y.HS4SJđD+%2Y|F+YYA=2ï͞j;On݇"-p4s䚎Kٗ+s;oU#Ȍ	u sT:!mL|^?i69^yJP#Żއ#J)KKy]^[i2.N˸ܘD6FmyMOƹ(Q+L^/CX)ȑ[c_Sʻtl`ibL=&iwTg&F&pdy*
{9K(r)4FXxqQQpJ0؈4ÞUSp>vGgi6<sť+~6no=Gvd8=s~'C\'*6:đPNW|Rr#2LȀ"VW$%=<+&ʴQ=pؕzhĢdlg#ta.Yf7XqBձeCCw|緜y}"dRryiB|&n0kcsI)oq4EEJ1Vj@pHJ]l%YשC&֡xb6rl8J`J1+ICfl<
MIj~HptpЭȳR{P<7v".^1mOfQK
echK=@pLG(,yo0DZD9tlҺ-&7,ڜZmcX0) iD~CL9ݸăEZf'Z7قuz FѸ>	Ryd_?.I.dAwP4.g{vsB)	hL|`t!Lbsr[M$J!V,zHhlt<dA;33]cѪU~CjӔ,ebL&2an(.:Ô0{PH%"LJPTq_"VQ GpT϶v DZ01
r5f8UU^	dq)j
Lf1>+(%P&aee{cP<zU,=H嬛g8Q6^m
3ZER;R*^$r>1$TZ['ؽ!bK+W[-m;g(u\6Ҁƶrfs4Y&EszpJC+4?KPX4WVM:
U4$8zc-21pd1v !,9jNiE0
h(82mRR`.##Eɑ:\Lǥ>
lB78hÖS5GH9tl]3s3>N\*0E#`d򒱑K;AbWk&
GfmiQEtq
({rQerޜNad8W>q"gZ"_7RͽVwMŀ%TK҇EjP0VWQɡ-:$`YJkRiｃ81jpG>q8;CBJX`}J9Hص!qFt^\mRfsw;`" 4]1f~2m,})`?&N̓I
o?dK
Ղ4T~#Sn]hAqOLψb*nzia5$&{ 2klΗɨR$GV^7VPi2)۴+3}-lr:xtn(&K&JG`f(_qu,*ɨ]ɃLպ^HO܁q))iN  fH(jLd~uXv˦Rh)=Oc
 fyoRO3')T
QV֊5ll#\8%BBmK|v,(^0UD(#YՈIE!ol't889l[ts)kvs͉LPҲ$PP=9:8{EwnCQzo@8CÑ5qd(8Lid,xE?GU{4nȣόȡ"7q5AmfAo(
Nys\Vx6;`!*D(B꣙fVv)*:aJbۂ)6Mk nk;|ui(c#UTRyrgaш6>G%J_,'-	"Vb,??6&^A`;1Dj4bɠP Y~/\Po  {{؂Aw+E/e*ÌpeeV	uˋ7Qj )+K`ϱY;඄+P[WPN*xցi~M	%ڴZڤ峚a#ac3m83`~

dem-_?_#QHM_	etO;=iC.ъp*&.}iJl}8)zQ,?ΒR?|~0Hܨ+^^{"B=˙򴒦A^B,J0BJѤ@Kqg3ףJ4VIGlō[tcULwq8S(+qq6@Y]"ʕX(=mC?l6F0L`&F!@+T@p-*~gcY$KNh@} =_?{f+]tW_>;nRq>xNb=?{ -*lUIɺ+!-+Ux6-4yf;]H@upf)Ią˘GJrLL"ʂp~}>02IjWQVF.߿7w߄eɍKsVRcGiUsyv|5
eEu
[x޲MYO` 2`9߿WJ,yJ??u [*KUl@t?&a|xI_]φz}wA*28L$b 02)b_Y /S'Jb Oc)ƶd輿~/`:JnJA9-0SH?
f.~6ML'M'ءwXZNqݧlK_ᨳ*JL=,k{
oI>cb#<\Zy+q
*0a<*,i.2:㳨a౷I<6Ku5?I#MFe	7l-"QG"BAJ:|~8+Gd^Y n
':R".WwYG;@<d cٞM6Qҡ?t9AuKY ^ɟ[v;HG|4`%.}ٓ|!2Z1oeZL&v=tjĄy]
i̎<oۡ8ބ3E]FZQ=xbHpG=2h ?#p#aC:QeAbH Ё|9&&r0"9,i>~ݿˊ<clr)HwMw0IZ#TKI0 ]3L"Ftڕ67LLG/W./x}~|V7a]];'ĈZly~?H>F2.
}}VhW;WIAj9a9?^@;uԱ
KCn\	Ot2irc4D4L׿9e51LLq6dy
"2+CR:7΋)W^A8f۶d?l `dnFzMi U;PɆ|B%b$Z]`3ʮѦ,_Gb 9g96+4})B4bDkŔ=*Y;w6I\
X'#Eq~=O)l\pXlWy13~E\YF
zTMZ#qY7;jDL1t'=C\	ZLkY +]x(?֦~G'Cfh.U7l>GPw3߱lCh*{8N>;|u'
^+׿+Hı惍(LZN^Ϫ,#,@PIn-j2,*+u^d_\{gF򟐥\1wa80
6yYL&`q%r୹Jd鉾_5p
TQVWP=B?;XhgG*~\)"e￷MC!*"&Z}^ȷ6gc/s̜4NeYuHC#[-h$xѩE 0a+2(Z^Cd,Ԣ->65-X<s
<>EW66Pg'9Ҕn(6$N*DW$1jqW6qF.αxQ_;	:*ʦX׿m$=It۸P$1u(nGǝa,!o/ￗm*<ܵY,-j2r߯9fHE~`h]TH#꯸Q%˙(p)bP*	WڠXIT$y?4X]	s[[ŭ
kyou(+C^ 7ii{%%)K>M2֣~(6r[e(a*hMg]fژ.<_1.6WƏsFR*Bl H=_*X|}`
ĉ:L)?Q(F9fP68Om#VfȍR~9ȍ"p?kNOu5#|/]r|9x-. "hx=aL@8P0M2G^FÌiX4]Q	ZFo=	%@I_BYR"W7DIzsEDj(z#<#
:AuVGc)SV"h#IA06}>fѭ1YhW1e_D[KZBF%͐lIN@J!v}6XJBX;(ItَQ+dk-B`SnUo~L5?e50tg-RVvywFXOjT@V6{DchdݰS7'yL[+j4Vd׹qk#[*Gy2H碪>Ue[6
<g]ֻKa"a`/vX9rBN[Yh2(N-ߡ2RU!sv?3Py\z*)=P {z uun\O>*b#6tb1pΠMW(:tlڥ-恿
RfCD7R<3@)16I5'M]ʯv0N3}+e
+-ehBL`zr쭰(c	ckB(?loܙY*Nw׺e>^L`	ڳ
BSDVb?;ev>PwSiSN\G^IHk+Z,csLrU>sHTN~:o!Z,(KsS*pU]JAF5,~
	H."0[??+3c·Qf:.CYq\8	1岳 *Ց5ŀU$=;'Z=zlIKm$o?#
ZhJ/pp>dfnhKdӶW[Jލ(!^Q{;߶&;vWVezd8nTB¯Tl}|
N@1KA4!|Z49HNڤLڠ{}TIZd*}l4nwɕq/|	p%.~8&6/{
͂wDSn`6ڽH_{4sya_e:DYŔi߀!2u~f(1.^KOex5CL=1BV\O|)C`Ռ_\:+Qjޠ#xܐ/MirQׄ\ws)r8Av
DZ_{pr<

jy~/pѣvM yn\u6|v"09DF6-CT
d1ĸr Brs< >rW?nX8$aO9n'wg7e?Ƨg7S@*hsugmCyAЬa
g{*5q)kP\3aNxkN:[D3y|&2￷&#v	y :>{;O_V˟-|0X8`,o~i8]">&vW̖?b'M2	+T6 Jmiqnx>U#Kxx^Euޕk2i9	J5cU N*\L6kxJ'NhL I+J?v{Աi~!40k*ИezA`FH)^EuQӴv.rjrj~~v|rʔ(!I:SxWG87b{W=MH'&`]xi<N?B~XgwyQDwB$^"s5U~&;ڼ`@CWx d|EOtڜR(U4^R8*[Tw>HÈ:.HI7">C@ZKg{ܱoqXyh7nCm:&(;QD(v5ORGwGXo5DjhyZӶ'N
d2s/~+A6J%P5| xuGh0P\pN 1kx!%	c/\^G@vcwA݁ǮcF&rIzc;n=0Igӷ^n{[I\ډkxc7c1Wt*U).Oiw/y) .KQ_ofvHW~֫l*, ^
C!Q|WW}&o9$
ʚֶwp{&\Q2Ef-zzskKgtWEQ3
z"1&,ifvXե
@dj6%.Nbڙq}\^	ͷҢ&)++I
ߩVۛr|cɻWob"'YXei&9ZىR{P"!}n/]}ڳ7MC͐Zk[x 9nʉ@Fr]{ELeep.^Mbh|ρ_	%4ChަG{=譑4WvoO,fwaqtYӦKLCsu!rR \Ps4,DqcfDv_kO?עR$:_U #]g<{+!n1s;F!h7yדE19)%WSoDQPHQ-=U3|qfc1?"<ֆZyWgfx!k1"}4goBMT /L(&ǔ#	bs,krgYMmѲ_yF˰Kĺl+M?χ`%U
?OZ#.\'D1pZJS I?#YLwh!W޸wY z}Nn:ӪQ*CWqhsEO9]~}>y3>q1Eȧ^_*N`9i=Q^&*sE0E,L4 D)4_:9mJaje<Ax^^҄v/c
]	V0MG@mCl8|Gg'"Ko-SCU)%U:ƞmiW_6q'KU|++ՠ{7d׽?F^lo,"[g̠2A)3 JKgpCu4bۜ6Ƨ`]LYFh
i_
3!Sɟ8@}=F/Z1CH.-G8/	-^[ 8O#|i`miFjtڤ|?ot>72()R>XEy6,q6'GJ0۔e_[ygTc&BE`-5_r{Wi7eJ	j(%_$
qTJ[z( ѻj~5OK|}S:%KX5t^H~G%q,hK	u/ad.UU"O{ipמ.rn"
uІ,x{#=	d?b{
*.X=0%h	{XeTƱC%^Z$b*iTp\F
xs|*5X;m,-JXXO=_rBHpGepP~=σ~cb]	K9KCfFqvla=C|e`y'T./ϋE3>!2iBv&=k2\q-ü.ȼDX_\:K6U}ϱ(!E&ɖf5R7TS1z,;ZZ>亏\GhnjC5+KI$\{!y:A\Mf
SHIݠok
/]\"bNG8Ala8
]5z_`ƉS8l&Nh)6%EE+Kx;n1!emɘ&(9wSm*C˹iy00
IEqO$SCq@oSYkO)Ҷ`u"m8_/>A5%j6me>|y(ʭgZޱE'$AߜW*!ؘ|	)݄i}̿

#^K{G5?[z<;D^cXY$nn0QJylE=/︌ذ@f귪YkOWR
*w2@ཫ޲U}sC!U%	zG>D.ޠ7y8M6ڭ֣|*i_==ih~kKQ\/ަE& ;ԃA+aDFuas	-D.<D獨JR}AF_E/o&U V-8pU8=iKu8\ngMX6em27s2nQpauUiگN ,^ugO=0>	*,^lt;	Æ,;=XOWb<}m"&XLqg6ME%@X
ZU_=y~דN#KHGnU}VZ%8uaec̾IqgCH:򏄦C>s`%[
tSXK\0z$ysn.T:0YJU(׻>u[lPYEZk	E dqM~DuX0/~Й>v32SbĴ2'~ѐ<	S8H9:ͷG=rU<{oGfYPl[qX<_4um۵-4NE3g_6wyU,R2_3GӃ1<@JG)j`|߃\;|bG7X>hWG&=`謿~vޟȫZ
4=WgVT4M8Q
5P>_FAj::'iX"gDҫ$*ҍIR%:4o/?,³j:ݬM5DM
8>&YY~Udk9'ﳎ+W#kg {eoU"IP^:X2"
.^W	W[S^ػq=;B>)_>}MUw9E ,+xGu sGѣL1|ׄ7{&l<l[bu[Бsb7t{[kG>0U{fG[E1yH*f/
.Weo*ܡ$y+n d<ʔ65f&S?2IE\9ZA%M~&85vA4gxJgS:HJDE$
%]7vE;#@:g#7k
bA#:=(fpF~}G#t;,
J
ݿP'ZXL	Ěx#~&[6np ja)
\˿nq&)J5xJ9_=Gؒ1ؾZοo*₵H8+ǴQŰ9(b
R!N?[4tU1;VPl,qߟsTo,?V[7gƛ̣2Ȓ{ˍ|	0d+[=9s;3\4{%W̔!yUT+8KV8C3<đsc`?(nMmJ__-if1b?'

L*ѼQ[aY"C>+OԿ^8gJ/s혟v]}'/>ZT:<ݬsd<&T~CT2Pmp:p`
|"|z+EҧU^P*yfɏ"+/D6Lz6>x u#f:6LǼ40Zfn:4uuJv,_G6=7s7YQ}Ne6:ho1c;YXhcTDN3wd(?\1J̙%>\KlPL7C0- g"W[-|ݽuG=%SMFU=hhݰ7
ytwyw[x=&Ӎ0xz7|_r?cL+DVG!S2՗wS=V晛H%n}}Gdt<h}bh,H/o<&	-ߐ<1wn-zԷg3"7^m-h6!َxE?f:rv{sllgX)\vGݢD_3VOAUb`#ZHԣ@Q*`HW_V7JfcP'\"#9{G1Oc#$jlj(
IunG6t(<Ǖ{8?S=Ƣ+Tyg6S, |w^~XHk?+\c
-a@.%:o=ä$"EL2ܬTFɠn[ }#k3g2X$=ύ
ٗMfW<F,t/Lb|w0	1갷_N!wv}V&"{c*	n:,G(S0<
[:ߌu-ek%Aø)o_L0Z~O a ;*$~nw[{EZ9xXh՝J'U}Gx@]hTw5ƪ0(uӇ^0Ri<]#4l0PR]K>VH'G0:r_|n
B`}a-ĥPWIL;Ʃ=j}>_~,f(^x,Ffu`8}N<G	ICކEtw/J^DEؤkZR%Ԃ}w7l(~F2
 xud	
K9Io~(JVl[g?x?~thuXqg\80t&g̗Q)>@mgUK/z7<wAm-?W [%4z@݀/SV~C&_rF^MaqRz,wbS]dpQnXA<J~lRx,8C#+:[b,dXHԥ9A8R+:c=ExWwsE<LWm1&d?Y-Z'jMu0o5!'5P+fFWMf$HvoIs>?+t
El9`UՓ_ZSxV/M>KAo󞫊\b;äȥ7Q}]-"HM2:BwO7QtmBOdޅoTAYƝR׽X=q!one j./ c(%~[Wa%sa)Ʒ
*ސA&BoZh19y`v5By4|Nu\'@2FG2Yx _!; l+bv{&sk9vpS@"oIJo%Ue
tY%tX+Tq)`"uFs^If؄"r
}=b
(SGVN1s:3X>4xw26W?r_g,DAKa`7pG9^Mt|a9 #1
z%&I`ÖO{ׄqƩm.ߩ2DW瓓E53b((C#95$U;>݃zBnd`|:>"℈Bh27Br<vJl,>goOb9s-`Q&Vmğ$֙k"6}qnʙjdt_VeJƁӚ08@߼_
Hwaؽ 13W4	" lWܗ{%gVЫ.+QbQ8T!,;Ґ@%Cl xn8̊xҶamN^~mgx:(c
USJ_}*WHSka}d(GߠXχ.~b>~I[BF(	֨J|asqwʟ﷌KqR?d/U6ʉX_p;g*,man#lph)c xMXj>[
vGGZWNDO!}w5SiL/:@Ō
$%TP,<p-/z4!oءC51*[&/Sǽ2"[HnRW`0lȜ>otVf:;j6ƾ뜌]i>9C{^bd+{:^ǢV%q_ޖpK(J+͖ȁJЀ_.(}MKc4@g!ͩSAOͩ
3OBe{d?
ȁ
])ڒWFX&?؛~_eLWٱ(n?kJibnϠ_*fm*#v8HL޾HSMn*ڎȾ0lvz=	;ɰ:ʥx%bV{6>E=n^9/L4C4 Aޔŷ#/G4AzA;6)wS<c	BVÆ<'9}cK[-?J{8HᅥE0fxOL<'EE7a2%SׁҘ0P;G^$Nߋbr9L0mwږB< ;i7F]rT>؛Or.@7ǻGZ&[=o(^ybhH#K cZ`
x+~miټ!׺k΢X$e
:$FI!G{;0]·REԠa"}X9BTn^.i&սdA(wؾ? yaKU^hj&03ޔ;t)q7f5{ַ
'4xK(zffסDXCucƸl#Klh*X#U98~~VMkoJ]F*lGGᤴ;oop`oo kML>JZ&eY;1O!+_V:5;męF(沝?5I`wMGHz	vfxoW9S\nzx98b$ΡzQ:)fbTf@Tz
~,Ecrl1~ƛ7Ai7$AXB8*ݐ- Cs틘=Iu <ʫy++^m`900j*mo? 
x=D++'=Ձy"F	Cv_tۓXYE+m{c&IP8oEc0s'RZ/EHϿ!q;Rw~`[r62m?,.1L*|ޛUx):Z~y$?b*O?rI{] 6$5;|r>:7Ƽ/w>BgJf{Џvṕm\:D.'.ɺp-_c*azx2)FhsYY#N!xS,z({
Ѝh 80q<~oTȠv|ko	sO?eՠs|$>lWN'wk3/Ad^
"9ה_f@pq& 5+ keEG//Wz;?cUB!t6cj!`to"l;ҰvӍqxx{~8P7GOp$ꙗ&vx֙TRReBY݁#7IvPE|![vdnn#"2e7;g6ɽvUx?>^JDcRwtG2`<tdK:dlUkڈfFr]?nƈ.'MCsVM[__ jDaMO3)Ufؙ=eEsAZoݱda.ܲ6`"FIÌJAحzƚtzxNjNw*.LҟnCEKMTU^:_$kLCPf`YOjz}tɪ 7k[<%E*Ee\Fy	Ymȷ_1?χccrp0
܎tF+h!h36~^>--+Cb<iĎE\
g݃<K	*7c4zM;G?X[ƹ^߉,#0
l;twq:*g[ r54A?9%VŧiKeP
b,v;߉E=$?As1x@g3Ң|<RC7#ߕeХ_)#q>r?i$ JV8Dn|Ջ&$s>:3	u\Uzby,.Id&FdW+̳$Ϋ_Hl&z&R!o}К4({)[=忈l%Ņ5hTD~SHZW 
1oHۇ5UOl@SJɡ(EX_}$vx(Q/AK
`ిD%UYObPxOdozG:0pL4U.)o3a\	#<"~,rAO`+)O϶tL|WjA](g<s[ 7[9eVmOs-R@+}g#pu̚;k!7=W!7;hǼڈظ>FUw	+^+^и57
|B}%:ܥD<p'v/Υ #,*\yCYtҾMg OQ<:*x5ɴł~
`"=뼍X*㍿54x.}1ޗM8ҍ"jaȒ6Adfn@
XR~Kv@>88wݢw^iUI,ͻ<8l3Ux7Mi Oh<7/tj|	!ugW4Z ~( +ԟxAx/g/<`OH,;%
9!<֛LFy$4S
qa@PV	L<zinUf9"@D$z$p=Q_Q]uff>Dr?>c' GWzJ|*6- y!Fف:ۻ1>2YeW#QDp<@\I{΂{gP&Vӡ水oCBC$Xޛl9--M"5Dcy#^ϤrsM'FXu\ćnr
\INg ><٢q}-pB9jN ]lh]&cM;_|L6Hbd4rE" $InѾ@U8Sn4o'5"KoM6	Q5l>p.w!B'NU1f9pGE5ilۭ$;l44ERs:? MyIS,17ރ4E^^Z`Ӟ{nr¿<=͍HR>'X+R0Z\+	W-Uh6ܕ(3|u( S)NW̝Q;M1JWy?Weq&=`޶->Y^㚩ӵȦۍ%\C**i@;sL$bqa٨Ca4	a"u'Ra.Uʖ{4m
8x=I'2>.u3!Ppe4S056H98A#3s~Dmᎍi]j+sDmvIb!"_*Ujk*jFt!`#HP妝ǭ:5dp	rrq\_;@EU,"G,qqБ	Q*c|/^3B!hi^,jlyӰ4Yx
iby,/9NTr\8$HF0|AE fm:J'5*%Gyv\
e^	xcH~XyEWsتrw
D	<2jw6pkuy3vs8z3m~hr;1s	X(ն4i|bXU@CcFM_@Gx)A>71-S]eQ`	ͻg16,pj(e<LZAzH8P{0bq|i|Lh+'18Mj:;fJi69ǃ3SRЛnp>LTt̥Aa!VWz{x;CuLEdMklEBbQ!&r"%&s튗bA9	KQQyɌb[%Yp$J6j0%#Tw+8rm	B)I0ի3zD
jD"źL3+(nCo&XVw4dL%]sOrrkmtlJ4sL֭ه42<rL
jsR:l&('MCA78w91SPae6(.(Ix&".<c}xs7IB`L=x?oؓ(Nb,uNؖz˷򈂢emo>5JE*LY
dh[@[~%.Jy@"E	U]2bQ;Di32`TLBUh>O ڏL;)̆:d#Q
ϪG7Tc8EnZH>"3uRX11]z.T[xY߸W
<~ S]ATsv8!BxٗFd-]_JGs蘭ɫWRD`cҞ1bwD
~~wTp|l&:"]_ C&$Q]n9uHs#?<LGAYD`
c?&߀XPc۩s`U)\E3m~hz<!3(?-!NQ/mD""5F?_n|3oQl=gcJz(ܧya֡:C2-8wPG[ƹrQ=7Nf7z39Kq,ZMj/D0[lE
̘-3P$ŊEȧ_8*&nϭ.<{x.cRk߁M=F:R#X(>Y!}D iE
w'_'h/	y"!z|&8.JWr\ۿ-N$8Z#-NG &c4D3l=P3<οx}V˪khpsyV~j&)9T3=c/W*qN#n#ڼ}7}2ä`GkUbL&G&qIwjEu+vN7	/oDI5˩"+k׻Y]0ph<k>)drjw1(d2Vy
NJÂ @%bfXgC#(96QgfYMce;12M۴ؗmF}
ؙfxAT4vʜbmһq UZJzt6)	Fyn*g#
~@'k(~>g:;.8}9RYwyt^?3̷n|
n;-:k*w-w?(nJOQ&E!{k{n?AJx3*T(xk)}e*s.2k8˝BԵ2Ӈ;KV4
DfFzyZ1%)2Io](W^s(*.Ԝeǹ"zcQ<?ĐP%:V/)lF UҁL*a	r|-Ӄvl V0;
+CN<JD醏7ڙIaÚL鹘劜Tl6`.lr@VZD݀vK3*ʇ~:&Aagkux
eњGׇC9[~+Ӗ\>؁\s_GEx3\F [8iMB{c_?3ہ`l#osW
Fs"֕+>QFp{-ԏ<!DG]_˴ks&}'#c	tf,1{¬17h
muT1?ru`i'ਃcU]#SIa9꠾JՓ#2ȥu)Bu1Øŋ(:6w׻/Eq
Wng3naRԓLpSe4C5he,aŖ('D
uKn=aJ0/dD/0-tQ	_3:P-{v髤l=Z)-bQ`hO殟K׵pbhi՛:QW=z43ӓ6JsUʢ6JNFD"ǧ)a$g
]5VǜSZ,o}'MW%[S?T[&nDtZj4BTlމ.}'B)y6Љvru(Q
OdHtpp^;
o[?"xȜ]<T3Vp PdNle6eSDӍEQrBڷCwg01VfFTYnAݶ4tw=MK*Ya(x55a!MKĩΤk%dfi4J,㐯KYW;;QTW:O;gCK,,
`@Z-]J櫟5?Zxf5l~`ITLY+mȁF}y[d(ݛ^2![yl A͌BD=f;g\(<!
̨%&t0AePdق]cMc?P;m i/SG7(yE'2_F=T}!mֻ,xNd1bBƸ}b'- t[DXWjNvMߢ܃etHV S#]Lm׃tg]c6RS^Odwt6^4&NJLբF*swNln
}@"rbyo=#5]By,ȼb,@
ߛ"Pit߅1$Q\lCMGɴ^ Cu ,J#֦ɡ'tԫKhN㺯w< A
Kj!ٛ\gNa`S0e^-ڻ+OzS;9	n6,įv
A鰥DCind3fU:S@\j Yas,tԴ
AŸ<&o1LV7iwf7 !@Ǿf:AUhJ)-sbF`=*Eҏd~j9x5
{!NSzIԤ
/sRhr?2UԖ+lRE}n4Śm+#2".EoL=,sHMŵ:nrwfY6N3
/;R
ZĒ(h'X>x$'mu
Ys\]o$J}\e*"BVh'N^P749\1^P&͍]k|o4i!=P
23>"o~mEAzTܲgxCڤm[E\/}2+K]@dE=z8K/ -H3YT571z |N},壸.k&[	̺^h64ؐ?.P(G/uh̟_ZSyo￣ˤn	L6}-2Weс'6OfhҴʝP5\HK`>)S< Yd9F,f[^;ҝ',1"D /hDXw,7km3^`_!D:30aS~"e?EPyɽw	gհe ,:?#3z|RΛxu6ѹSO⣬Ҩ:n\]g&N$Ug5M۵v$TakjP H9柞0?$ko#HJS۶diwHٜO_Y#XL`$RQ*\̐/mmdZ@.tunŲOVUH9eQzENkol	4pT}~k^s%Bch9`UĻȹ0"	X*oN n n)у
[,&>PgSV = $~_\ !h鉅CʸQVtჭH&kpS24P*,jlK~X"[k응| &5g4Fce#G7O@ܬu'vFaxYBH5pЉ<oƛ=f6!AmyZȲijaBDIe׳hL٤l2`4͕|T:+ܕcwie(CEuF53VV^ @T<ۉI[_dԤIެ}%$\AHa-I'	xsid_Zpz\ܹS8%sF|!]K9m{]מ0Ы{{
[V)G
/ed &#X48' YZ'6,A3I<"ŭm9:@=࣋[XciT1r#i |\Wm
+95:UZCy0.F\ug
F":PV-Fs{6\4Z&Rbg
KbKJѠ,.IF-5ƙH~=.53R[EY^5rAUDFpfJ}z?W$o`n,#av[IcXtb"fgl{|^hҐd<js`d΄3%c?_^Mu%UsiMmk瓤p&wf7qDF7kLDp͵M7xfu~vM `FC6!/:	+7g,J#FR$VƼ|Ѓ9ߣFJG1ъO2UVw&Wiyz-:ƤiKvIyXȓQqi{̻_XJNL*+¥ymVr_Ѐ;I'Od].Vd&fl3rQjW4Q,4x.&zBFa8q .f>'!9J3?>mTCᩇ_wjd
e8WHA OQ+p+C/L$	YKͳ|`Ayx=`5z!6,,p?1WI&UMe}b2w遹ew  jpPrh_wh[͞x94Xs5Ǉ]B`/u;[v2/&-gYG,VT5qWNrLB+	E߄HV-YjɬxQfkְUr,kn'Q@"V@Yb5RYChBx|$Xr??ƶ1ë""+yjE\:şɻN59&dúyC&kL
`^SWduL̓\P;җN	:jWQ'>cC(JC?"'xRV1{CzS=hHԛsh|{&Gs1E?97N.6u}Ixߡ[IM(R8|poEb/0}zʹ9"Q%Cpg#r"ofs;rLVg%j>	)cFhc}`~mz&H52 }Oa?Zٛwe4}7EKΙ<j1)zt	%@Q(%S%-"(qvn85I3Ûg6ko?R]k|BGTihv<وz6"ӭȎmt\|)Ѥ;[)G1eĕW#L;qRf?wJI.
;#Tiz-;
Jw+2@xg+L{X7)GںEZrEkeYoao_c/оhSۿUzW^7~I®jao2O+4}Uiʦ#ؚ
[(Grq
D8Ԅ0uOf1<5ArQA"rp+Rm5(kƻdO~hHw9ֺ顀b ~5|/զ}V`B]%mȨP&~lFq%mQ	:`hWDww?Il@*$%`rHz%7;C H)6wYiO/C*d*$JF'|hI 5XiRݵFHq̎2*A%<#:6ǻ
5ifg+Q&3CZtzȴ9CZ
uJrުCWWwIA6Ꝍ{5smCQ . w&a/kh>U&n;(=~,+A{?w+~ڕf4F
}oMP^y1|ߩbۓ{rb?^<i|%Cwb4{}
/f\>ˮ3|h~Z~Eɾ+y@%?X#y3׹0%(5c|;<EfF&"M}Γ#,i\\
wtQls~쾷ƈҳ.~+}QJa5e, T\ȣ39yy+ch<[F-L|_SSxM"4wڧ@
$MߤW4eb_wZ3	ĥ*<xd1,E_Ng6UVꔭ{,oe
Fz!i{$!W.G~l6z},	_j"UV`;Z@&Ɍ[-?~ݵp(z]n;#;KHj+EWsԄky!)X)HV6ljw='Oi9TQ<x=\[=T*O4̣7[S7m]PҔs>HP/®HIr i97LU}'keϥ#޼QsaAw(]
{/9jy)4n un-y$S
ێTK+<Mѡ+lPG1-vQWGe o^Q޾zU:V}x2RHRĮI]^sPA:%%k3"0OTD9WL(3^,<W
tp@"OeL	ߨN%{tΎT
|0CXj"&F؞u۳&sw[>da1јn_;Ny9@#
v[7`ᘭ0`*?8(
}c_SD	T
ղ'bgD&B%6AdeIQm^ϕguIvj=ӡ:7̭p>"[\mpThz&eF߲vLV}Nvƭ'2ayډ+zm!ӣ;*¼R~:Bem}O"G)=؏e(/*'JPD)'s"|hҐmjJ̑krt`UƯ7M;/M`^*9qcݡˣ-:
eGjILХL&yr21fqx֬F~3֭H"J {EA9~ċ_;"XV*D
&˫&JyǷ{/py'LLBOtț%agtݕ_:R6E<QX. 8ќցkJr^l.F5Tч)':%F8?4ڨ5OXDgl$9at2d/SsW`Wl^#
*x>󓌒UTd4		|`7l&UikO陔IX8#bXY$2וu*eþހL4TWWH(x )uj:j\cwm+O!$UIR1ء
eae9	.۬-T5),..wϑ2ߥ F=(;;Һ2nyߙQߡ(Xˬ܇s2{T^|k3I&|Pwj=-K$aȠzȁ=7+\dMsF!ӨǲՍk_
)MuY3<kpnz9::].0^>BFApEB*(@nWB|r11t$3{j]	7Q(<աOaWDYL̓"q{(Tꖇ[\!OʦEXt:۫1[׃Jk6TG*2Pc>c.DƧmm&)OlSkOvmC@&"VbD egy]`^61W}B=M"YVxU
gc8ͶlsbX:5b&z:yuYg (Xͼ]>ǉ=#JZvK\ȃ2V}Pj,dO8ӈu뚬c={RcEwNQ;+ | 9bT4&S#c[c)Jg& X{(Ë(	+ nTT(q>0̗@TYLgn}@ h4$چNN0vpp?@p5D4yб·xDn]Y H.#S/G;&l*~1x_4.- D~[d<[ceTvA(rdLKZ%m'w`(R7!z1vQtj+%Mz:WMjѽ~8r?3{Z0᫾iΩZG.LTOZeޗX
Zxikq~9#}eem]Uk64hmǭ<8fWWJa ݭٮ.|ZUBD)ӺUledjCWvN"mlxC?hٞ7ѵkav}2YHws֯j9L+NQqus'xؕdfĚUõ=sxseΣmjO
{֭]w
}tޅ­:ؽrФM
Gu%5LCCJa{adzVtSaiKm#ʟlү/`=O=~7h ?V\U;3v93tdD_3ĞIf #H!y"{aUk: 嚐:q$MlN34_u,ПǢ*t(IC~o`cl2<9	
&kLfm@>3y%<Q"T_Z?5Q؁\yOaDSgL	pe><H1E.(Dw
m#!WYt}R2G9=׉@#'٥[BjF}"Q3y;4ϗ:6T,&E}:}9~t
jlD/ԡM11Q$ӌ<n3_r\gL\.YL|o_rϧWx[;y1vY{_]:5sU'p[S{7ԉ4T~28yDe=a`=7+`=\fth(Ѓ[|CwWykV$ C`b?ñ.BDLo84dr5,Û;
Q=hg󜤶DF#S>C254xrgwƊg<ڀK#TZ.j/ "!A%yR:ӱl.33A'*e~7 ($ /jIgfW~8
Ŏ٤&oJU9XGO̓L")|iIeߗE5	VD6_㉫CF@Y3dLN
C:5Jh_&R9dtJWMHD7QZ;#G 5uGN*kpn7	e9L4H7v`@2L_V%I3ڙ/eB>Zc).XebьKA˜*G&[%V7,'\
悝F1Z*HGh'98!x)
$~	5f>d 8oʂXs"-+&Qr`D`ϖAlAlBbpz@ d
*dǅ[E Θ	ȡo7	Dh{4b^.FE;&6Vx|*+5<,׳qp3YH8,k.o./g6"6llHMwR csjȟf.kvٯWCa=
?xFyw0JZ*.2] :y
y(E:X hvƾ&fʾ||d%r+/T`P6L`u	[LT4=bYDcϳƶ*wv-\Nٕ}'l3! g|\<"fLks4(h0,dXX1A<I3lK Mqa9%ˡywGxcZfhYsЈw!^S7a:cK ֎i%_C ``h-t\U
dC'&XKzgJ6+}UG^;oe9)6S<XdY/LL\Cף\(^H4t'nΛA̤] 善
|Hxf\d6̓ETiL /xTSNTjgn9XZB2FsL멵E?=/Ͻ$=d:R_́abU]{5oT>ryW(|<ɂ@S
u
-(WP悌pN.ge5Ij8N饣re^"6& F`=W6P!q-Ds:Ag
n߂d9<[>3r y} Lpi6
{ϺX0!H3)}9D']+%GN62d,q25P<b˨(FxD,y\R'Fp&][SfM[wPWaVD
vV%Q҆{DU5ȣXux_U7 i\pfVj)dl.b:gΜGY[(1a<eIԱIOTa%4'C"rB/PUJ,>ƪQ $HP ^?ۄE|2H
N-W-T|٫,DwՄj$C<G@2D;th+ݷ/kH)2mUmrbT@X߇g.(iaX}&	dTwPȷ
vL2dDqh1a)*,Y&s^YsG#xz
&">quXaQ˰5i4_Cx&0+pۨzjZWX"+-Oʲ eotE{mIVȶZP{Rn0XF+,M"f\V4:'QWi?t	apT ם)o$3NDDڃ )'PVD8JApu܃ug"T-g17v}	Ib}
3(P33o&]YDYPBWCyM2@

LQ5tӟ,͉>A䉑:*=][ ͮf82F$L.ol,ߝŊc̼DBs9jw2kOIA[AL2QhCZ@}?B_yPdGc$PJNr_|ڷkK"ydO&?%;R둩,:_[,t e_JP\
)Ϫxz+TםAV@;H[͑HH*/,qml/"!݈XwX<9	yFsUy)Y*SF-CNVtIA?sLN1\G_]jJ?xxl^dGla@:̇LڌSF \o҉19NM"8S&l</xB"Ԋ>r|7KRvfxkgS.7HkDY)a]'vlZmjڲJpizG3Rs22
sL)7[mdSBYy
x*TnŃm:i=WRu9[
$gPqWc#Npt-:s*8	ҭ๒"Ӂ-t(PN8da+,7 (2E"t0k؇}XCu _EXgT%AjTJ;Y:Uab6w3_}Bv7
Lx7V9пČf7*of`S`|~	iYiB^;`3n+
qM8NA^vI du
g:>5ht`ߑeZGh}5 TVx8L$_	],<BO1(pD4҆?n~Y:ث4sڲ6TJXG~ڨTw܆.LK
`U]\P?fV:AvzŨCJm,g2U^auUs^;asl֔ZB	DrTl7L]4dC"E)]xb#x[Ik4^[F"ˋ!!ԵXD|*9D{3Oߣߨ, zo]᪛h/S9d5Y7*ZwMn*њx%+!	4t_ Z,qj'*R<ҁ6DKu2ˇ'mFΨ°@ɍ[-sL^ K SFJGC|	dΘ]BSIgFs;,KA"F 0&=!:=O8LdwFN`_"n3v	CW@,PJ-S7EcnPSA-׀Э s+ɂ aX_
jI餽OyT@R]f}IlK5vc4@VǁFgFg<B967 gxl*,WR35;}Ya_	+ey~.שi_q	%<y6c9-&~i{d1n(9|2iwg&F5x36][D209e^`;/ "%DNcڝ
:;09\z0e=`KM$n&^-R$S
>#(
z:*O _[ [dID#lsoī+:."ͧJNug"T1)[߯fS"5O4mÌkvH8_et}W65ڧ	H,Lk{R)K&/m|ڕ'qn;u&r("{ ez ~(V&e.) 뉇$F+4Yx߁?7cDt7`# |>`p!S8m<ĸ8J!
U̣d5/z(_Hu
Ar+S֫%@K/f H3;< 7XlYk&ިj7:\yTlaa9q ^w2TQGgmb0^^Nr
xgxxW|@M&J
CxQQ}>ɀ4zxLdf~XG=f
z@z$oZu0o{bD%2譶E{C2%=(7^m]Arr)7[zL!3P^։4!Ti"m5hCA`75avW慕L^1.
f5~+ 0\nbU}>
%(SFIc]RT퐊]MwƼɾPAц{԰=v"#?塩$8N_cCtY0 s/Q/ÃBD{2e(V9tNbBF
q$Gnހki[8p%nD
t:d"*F`5
ᄙШ"lP;"PH먡TJªWdOPнM6U
`Bj($6VqV>]pFet
7MWOEn7-IP:7?e$s	<ϜW~>saJPv6U`j3iʈf[Y>_/G2{x,:Yls,H,ʃ	;N[!JRv4Ѻ?W8RM:?M#-s_KQT{,ZiHA.f(z!!EA0I(St t&*5,`s2lx*LZ)+;4BwGY.H8yฤ]̯®+Jn0tm |Xyך!F rTWAR0
ëu:
ṃ28XמtUV!FىQ">_?qh
؝-5;gaՔd&rhB`M~?GD0=x^2,bZ
@~a̓aOy%p_ʈ26ۤoVB3}T4̈=:it
`.5retu+M; IUVS.&|vcDvm@y>?GM|Y"{}ѠjTN3PCXQ\HMŢY^<pwVW:=m{GԧְoI-Z5PaŶfW;,	]OP2;܆8 gQ-cH3ḩeikuw,CNPOt9d
Y,>LVFz Y9(M&UӭpJ4ŉRuQ%M{!$tQ#jk&
Ʊ(,-
Ll
ڷ	iZ3Uàlv4WWᒸ:3l8fTa)Vg*7u<Fe`IV1Wj
4Xh2/#
`h.ݍp!sK|A`	[GO6ęw'w'L;\T?tE\HӦ^
Ώ~8πC>Z5uVM#,vimOpu'3"u<HR6(FY_
ӱ@ܵU!l6Uϫf(&˚-УEwA~i{Wx
1iHμ{c S>&|Idu+X~K W-0"ef|g'CJ|IYj|a?/陹w6S]dJ'ag.FT-/:>%G/? U^9+:s>vF޵CE(}-Hv|/_*o0y:]m5!vjd'L"(9"C%t&(>&97pÁ
jMQ["e}gԃ̺rS%o樰n+BNTU4G;Jͮ(h<C-PwKsE*{9+2SY& tTtϯ*jɦw2QH#TMK|^s$򉒂.8CC\WL[Aj&|a&>iCExEetTI bk>	*fp+7
!﹙x\#J35 Juğ2ehFM79Zͅ'# .܀ImdF5u 3e߾YzlvDF<JiZ݂+[U˃F=OIM͈LWa"80}NqCtlwx.=PctWHu%UvTH <$>n=)4Y8TUvf-Y_X=26LܿW,[.u[%~eOKjj#\
lގQ#--hFEq%E͢St:Pdbz2?_>;xVWQm$u30eQS%Q֥ftZ4u]8~Þ/dsT:Ҡ'3.2\J'4{dskg쐋l<cDꄈ[_ħ(Gfi40zݲW^V01V[f*c6[j_!VQo=12])/h0OIX!klP/C(*8En:l
ßUY[9!q8!KQdݏ`<ٸzpuKTvU2@<&NKם+z;txÏ
fG+~bE3]u]g͘ˤfTxr͡a_L9[~pycE
"
eko{ҽ,})I <7(^Ҕvr샱%~Z,Į%a(KO">`Ӱ>](<ʊGϕ6	i?&l~=W7VH9B3M%53ʻoZ0-pF֕6Z*:6GF	҉$h躏RxGFX(S	hhڼ,d0ɉ(c
$X5kw`VHtX*PW_lnXΒ5FfiG^U4(6YCROwJTk	dڽ"bZ%̋e3"Rg⽣`8Bdlrɋ5P%*7U~=r٩(k5fO.86KO}J/ѳxvםҔGfhe5f.$gu@̖9T̼Q[,/0ksa0F=$bj3Z	4A
O6QAV8U61,CgnBf2RH-TlGС)3zCbNơs<hG>Pgq$&Ul(h_g(§BJ5$ñ}θ2{Vh+4zs`>kd-[^+Frpx_	dSE@+a6|~Cz
8׍Xp	
l0[=\,J1x~S0!/Rwǟ*pGyX,Α&Up٫VA
+Jnw0AWRGZƵ@V|-h4B|4
FiKÜ7@!kf1~6
&GhwfzqO̅[(hlаG6A`B?b?!*D2Ewϋ%4ux QP?d6522exS$Y[]fh@F` K[^w7H]p*;s}S"4w>΢X\=cKej`ПUG~σGi-߻(rC
?*yqH0[b \e}<l/Ԭeo>zۛ~V3.V[QZF}xb.̳Y,<~mYE9O	?ګͳ%b&oeF~uPzQeA2{0czx##?˚kYQ;:wv׻颞>\1cSkZct kʧ85U_lA!;%	OfPxMKT"	cȨlQg5ybmwa[򇽆j^\ Tb6vsrɱ+;r򰤻fAEyԸ?@bDeA=:֢!b*
H(YVbyUKf{sҦu9jp3b2]CG^E\mXpQ`prnx)N
A>ɰ:Ѯ^cTyQ~̢%5ŷ?+'_o^ɨ`젔zD"CtQf6~CқH&Rnk1lTyw[=<Z;wTnՎF(i9szbqfٗ9¸NLtgF5Mk$<&9wsWA~ÄKsuhjƃDIvUpl!7>ڋ!Fvi=KT҉b0Cjż#~gm|dYuE?G ]ePbk;$ݠnv6|wɿ#^F8783sW?Fc5Ķ[8HCZޠNyi$%byuU=3 )読dW6ȸ	0muƆl\ĚUP98FߟY35 ̀BPC~>B3?L.;[Z,cȧ
:~_U9VCG=)tG?Jѐ(Fб&8.Έ~&Kf_ʷD5V>IBͥL;ܔHu1p8ۄt13ѣL21q >58& ~9 n<$
ĈkŲb&]`u#rKK:Af,7(_<
ˇNu''4.:$0l2Mc鶹rr̟%uˌN,"\X	9^#aK5rp4-U	: b/U\h<~ 2ZQ#tvF	Ulfx2q-hy~;QoD5G̏!d@*X5MtOI8jCOgt2lgM gִzKz\#9~!Mc|P\Їw#lutMfP7W2,%#qgLFur2xc98S0, ~C=h A씃H^=h3/x ;GtP}+Ç_*	V QIlYlW.c	u[y[5s7͈'͹#NtʃyiuÏ}xV	a`|3?Bg_L'b%޵aU+fmiS$(05%'(.[x
^iLyXukۃ W% 2S6}hsۮGwgvDĪX*U3AIKjOwD"*n@X9
{%8^ 7O!1.}\sizS,);َIwRl-<jc%Y[E{_7F~y{G&ϋ[ [KD0v0վ#sjXF%`;vzu}kzvU]Ԗs)?u:L[x+
V8==Tx_nz"
5jD1CV}i{2C){aI$ :fɉ4%G8D&$_t5@69KѷA 	`t	I^_rD<}ܜJc"cQ%R8:Uš|Z
||":*9";QXzלPϝ~+	m[OfM
Zx(vbRտP_weng(1DO\z8јOā2CPŃRVLigq<	v"(w0-HzY{<lsU6wp{
`Qa\Pq^^LI|;-E
;ĖaNgab4=(kAhf0NLųq=Yc6;J_ﾂ5:޴vK}1ċi&ʗ,Ї{dWWi}.%- RO`!Ik^"#Nhz;|‭ 7bm#2'>7Ko7϶1-1٠EbLi*rŃ&*U?7ӥ?C4=a{:.f+q5s`[ZA/6ZB[wh&n0:majX<R,H2?=Ơ82hJtZbyʅbyՋt>v3e4 G"#*e
Y?Y?Ţ#¶s(IG̥{Ȇjt$}3]M܆0\VHqJjH(?3a^5<
Eaojfb%[\o]r~ЊgGnQAMڹo=a;P;**$v
%40
7mذ4}4h<;RL&T]w;d|u^l*3XNJ=.)h;}]JZ#6RNGSyx6.ݓ2:wԠD~l䗹dJ^=VIc7N7E퍝+ۋِ:A*$
rUod
S:2$mgRGiUT8'(
 Hm--V"WS
?z,_QP"/f
CxÏ9b><TP+'sfAk)˱o%@F?,5K&H/ƬS
=GbGXe{gQV[#tpuָTzֳ2AvH6d*VSJ|ԅ6}4{%
g6NT=lW7b^;PտiMezd~pg*E5%VG4!HhwsxfkZAs7PЬ*?{ָsc ҇c l7vCfM-+IsLG=$U%fWFV.1Qsq&_7Rmo9Ѩ4b$"/ax`M8yԴh̫JHvX׹ޚ~Ht4b9ag"o=Xݚy9=&/]EL
^T!L<ؕؕ>B.RMEvǙ}\bSkxF߃AwBz@'lKDnX_7BoA4 MP$2ڏluDLpb߇EɜB$%%9LhC$kBj	w{TSef
cjCTp@%pՂxҩ|W3F"bꑼzl@})g(UN:X&SLU2d&ѷJÕ|~͉f1YV6|4ȭ2	pbތi΂68C^T2ɮR2Ղ[upKf;f"VX	q&?d0%i!ؽ8 -=t{c:y8DPuepzTG(?9י27ߥYiζ	_2Ybņ<aN 8dCuՓb HtycT8%M72h \]$WgXYn=5J,5pk,`Aht{D:ϒ;Sɣc31jƾ5,I>"IjH9Us,)dD1pQ)i4Zú}S!ߓ!#Oʌw^ Z<Ѽ
F"	Ub9__)a0EBhI63ZY%\*~_/E]@Efs_wk|H
ynWH2<44
v)D+lኼX9ɆѳpA;ܜү*7҈ ϠF'49CS> `"VLCL*W}{&ւ#R!Mňp#%3+W,h-\	+KLoiU
wjPKKd]%pCҞ$Uj.&*cئK_ay$1|}4P,y1
ٛ=*O8v3jGpY$e75ڸ}$;Cm؏,V<wѧ!ᘕT]kFi+ۗ&f'MzBs˸Clqx* Eu)2L j=bŨSpx`݅Jk#F}t\%uvݳ'H#	Yڠtd{iw?iR5g[MUjB_AU)HYvRէ[cg~p04z~b(*y퀌.H6&aC$hv5ʖ"C5PlN0Ȩt,J$HX|R<W	$8# QKnՅ~g!s"ܨ}c+^{&a0ޕ;})~m
cC*f
UP{r襓my4DlW꾵.SGBˡ3]j\yӓ`Ђ8>H @ĺ|}- v:Lփȋ-Bi9:T*Iؑ]@K6d Qi Sk̰:3:Y|[,4>pzgtw6UQFOhpU-[bh5Ж%>VWssWRcY-|^?'NrBgYʥ,.vwt\!t$.ky	h'Xug	ivA)xpӈ LrhM=c7VB/\j\tZr\uVYeoAUL	RU(]g,ь
ϲ&u8ďt̯\ ċMr:f;,0d?"مh " 2d%r؈ML	f:ndc ?ч۳EMlg\TP_#fMkꈣ.^	|/@GXBvm&A6VvgK&1ȄjxGЉ`Ewsh:{}i<|VV!`N9hG^V{ez}S)I]UdgH>jrЀJv#.0*{ zUp˕mܾxcc u&-
yRp!~X\B sme!{;bJ'^wc@{9
KG{p pLVOϿ_]䑭iIhE+h'"+&D{|nMuM1/dT{rv%B6[^Y*-*Q.ƫ3dl\{[V{,&k!Q_(&SjfrmԃO>%=Q-o]`Շ!81>ݑxvQ
3bKxh7AeBG27eQ{)hbUۘNWV0VO: k]x}%q`t,E_IR3{2Ia#R+ͯjκw3.+o@g|W,򵹪d}g5pd	J.mgȠ33ĩA}a
$_ ..Iqآu#QGؿesqh2|۔mc`jd]LE~kI?̥YfDK-q%C~nɚ	_x[|_6S#ǻ`V+|DF.=SUjz߆*[J>qZAph{E%MЫNJlrSQJSJ>

J@[USyfm>_,[je~L}0x=a2sw&477Yy߬ ^T}k
CQUΡPi;A	k3
]_ާe9H*n!pɞV?9qude\f}B+PKfNvYŐH
2֋ZG0FfPHQP#.c|x#GKU
s*qrFKБGyqlhgH$`{$,[G+6B'!E1:ĪrNy%pbJ.a.֘7^'3Ƨ0NcJ4&Qŷ	N >:Fyhng.RQe
01hrxM'Ag1ۏdޣq,lna^J@]VvA肂yz5DPã+D:;1"flÏ+Q.zu=pIF2SIljjGp/spӂY# Xuߚy! _³ wj@&_:/>Hس;z2JE8@E|V(Qt"Rò8?0e,
&61| <X-^G >iArycHoGj5ފ 81J*tlu[Z6#Y'9>3>EpՎU4ȸg/<j_݂J/"~sѣL<΄5"`?oFo%vz2{I7M)c2?S<&>z)ϿؔU8RTz [Ӷ$P["U`Y"MǢ7OWhW8tڸwޞOB0g7&dW)h#C
$\v5<]ߒMդQ21?^mh#S4"KJ0ʓU%o&&gSq 7]#/dFyQeOpAF=5$h,rT5$5#-ɼzrkDC@  "V/,b5&C֯MHw((&\f$gy^A|ք!>{9gR9ҿ1Q  8e`죋0<ģRK@C~mt!kR܉6h/@h}ܧ <R8$GFZͿW7a@ZoFד
oe*
uPLz٧"E6ueHH!3Y	UR["$(\q<Aa|YԘTtns3J=G<cjb^V~əMOb8q)
dLٓO[)<w&|p-Z]QL0,|s.bMin@!6Ob":P1ƀ8<yO/UA 
#ty՚>
uѾL_7*63bK]ԕۛU
ؤn,ԠD9!VFŗGESvo~2og̖@38<GsG^:X?z⧖cTd[xrZUs|?+|z|,s
X4V|`m*p4XhMwWjzy& H.:Kq\1θy+U$hӪp)-> "ಐJX"su&\eV]ԌĖ23EUwHF#ŵp(	|b)LURq/lj
U'{^le #]G)g^ efB<ޑ뙵McL%WDW%4}t#`w* ɞX 4(hhHr|Qԉ؁79"K޲ \lؓ=qYOLcP	r*;2V/C~>jN& @vxGi-n:yNA *
yR~1s $Ӹ2k
YKqD'^d.v(^pqbDB`y;ՑNPQA#{w$gn^?rvTVGE4kS@!X'g=H"Ӧ숊&HK+F{!u$G}v)&&9`AE !=MSk(VE>RfqTCqlB	uPGwv4Z40jy*PBن=xR%HRBUTn^,Avdf\WG@WF2%=́(W!
/Bx5CkIdLT7+(%v1'erwU&
p#Tv]6ȅ/L+l}tΒJKz3/=Z`bݢ|!Lkl%5U'iUB`A7~8?6*Iύo8
RpdˎlޑIJ'gS+FmX~/ms.5{lxX6,)Bؗ뾿g5Y1e `9D'0/'`4
_9xQ.obLqGT~Dn'Y}v i2!Se=#[BO,#q:C5ƹ6M׎w\XymL
V6%N*eby<{
ʞ7./m<C^`RC75%F9L!)SOZ|;v/8{}3ZPu!0g,zgܧ"$'HՋQ@t%Ĝ #>*7)r-ɨ9qEpRX, XRCΣc;YT23נZ#]pDOȎf]LHI͠Kg^t>dԧڪ`lBp^6PsY
9˓eS]<=-DB?Iu5vWx4X=/񕹎#gBԁ~UquQ-νН}p ~,ISh z¿L8Bc8E/d֚(?Ÿ.^l3Oh-*k2&LݚǠ{FpbH&^zTd-̈@+dUHh34+	
j( v`S.pU/DխS62/D2ŋ^aNadPqx˽PwmM-4C\KzΨŔuUgpCxA#"SIX3Xa)TYwY͗̍Jŋ\BNȻoyձӈUa}:xI`-ְhzP-Az["sbӴ@o)Օ}M?2f
g0¿/r"ql"1RFO 9#;@/:Zr.3@Mt<6UM'%j3-݁ubYKUD,=̨ɂq%L//oʇFA$Q>5Y¤2IًD&#*4.<zLjs{$V><B*H@V^	NRS(cP6Y$}	$
]4GTtH 	߲Et$ԏ@r,Bk=E^af܊9et_,0]"&	$qg.dICjݠ-P؃	p^L؜5*`\<YOU\(%bW~yˈHOzʍF+<F^`}Moq4ٍxy6%fH
h31yy{Jdΐ	9L2sɪDԪbcX+	-
P`[DQmF@7hjI=0fnK3i̬*qV:;yƼ$w1XmO.(vTlH#\NK28)^",d78VGwSTod=)CwE	+N{D_5^0/H_,s0)->>13&3GAǇ)BumM`}AE*t Da`ی"ÊS^0cStxLú`WpLԇ`Arn
++/\_9|&HL&iR7A*^/
C]5M	pFO*eeA|Gpv#v&Z4Z;p&;k mW!%RBN@'ng+!JgltgAd@\Jcs(qK䦣Ya{ȾybWE!m=}4_t5[J$-1*"^a{l4{Z4	i	uHjxH=KzzxNhhodJJTn	}{{}8Q.3	|cY2*V9k!@n#s0⪒Q{,F/T
'ؘ qZ<zVZ$X| #sG>6G鷑BN.yCQW2Ee?Ŭ8/;pf	
wy@CPcf@>oµVlew.2X,CݸK!?)26nLkA`7Fi&DWyןFa@a8x2k3
5)Q &A7Iƌ"|q=1sb|K#%/ʇ#el(fbΩpKQTCe3AtjlpL+_@6zގ !.*uwl{2@@ԀdPB8y;p"YIYԊH,AyJQiJfUo
o<wG^~O{	mIzhaD4قqE/eţ֛H; P/O3)EU!
'J62U4
i@Z@XwI%h W(:T$h
<L
\vt
Fq=HP*ܧP-I7-}$d?3jY _)mHC|y~5=HyQ+DOuC,ޝ%G$exw9 M@K<@{N@L;%&5w)3y3LMw%nNW0"ڕDV9U/-n1#i>d1y5i%
+Y3D;T#T
MYP\}JwRކ_L#} 8?|VޝΙT78x/RI@,sI@Rӝ鋶ZI=)<&:*m܏cyPÐmW$N_(î!&+abV&a^<MAHNmM)7Wgunv(rk;T/̀bjszmF<Ym
X$
[%pdDar  ViwdB+)u{#YlؠJNԨf:U3>P9T&2pqzPyFPԪlB𠖏:ڔ*!ϢE$(Yֶerw[}\ QXU,w.
Qb{*Ϫ;VPqALbւTАο5vwt;uc.DL4:u7]$jR'W$.0K9px%س2Ks#n3@h>}}P8$oS`6Sy:tEP|sEQg(Dw40*_T	%&q g-.5Q35U#
vFͲ0~!b<3^^^
A:y>ȝ6
65뭉yNt-aẨ:Cq;ɗc8^2Qr#H7; x	g#!%~;Jc}&zOCBl 6=|
Paa*<߄\yAYYĺU?!fv2
I믛3,i!B0Bq73Șk$IA	d$3!9"*)ޫyˢ2kR
b9ՊKJNAʊ84{
4AG5	8ȇuޙ:ݛ	ɥ*ls(_͂#\ֹYyB*{$vIMPGSEo{JEuB L$Q]a)įGmQ.>.9;'J=ȎhJ@y6,ԛ#<k}<*"8l XD~Ds	,i?MDOHD.zM.QS4-ib>BI[;6ش ج{ś@^4Kpv('S1~ݜpPm u'3W&U%XKa.'A`
~]2ʋ
hG7}@&Uó񺷝wZӒU$02́]{U	 JɼK^U
2\C;Q<|XN4O9x~:A|)4	U%+Ԇ!4vrW-h^c[zReQq0ϼy80IhwHw|rkU4UkcO/EK9.3W`a?,Aeۊ/	vҒ漆*0"f*Arѣ&r**/:@"[`dǿko;:`"@!
_uٲ I_I< mtƼwR;#F<Jd
j<$]WNaՓHY=jD95{
&x1O|A]_WSA0tS<h+HTjv6A?VMq}49V]4`B*!(M?.[CUbj!˚۴C(0td(w\81T@<cuP% O~Jt0s=`#JPe:%?r0'
LXǲSuBңjo0PJvKh<e|*\皎ש gze#0毀<Pѝll)[Ib-97ܴL&Qglza!겄
a.~^(W{,]N*/ d3sAШdVd)K^J*̈́x&TiAzTG	tY;Sŀ \slC	=G6Fֲ1k[	"HSFn096M.ve{Ąu8Cmw83+bD
j	i=H`k&})-̧qRO2DvFMzQlOvw\sm 'FK2 EyFWeP_d!=
T"ubqO!
^}Є<
vIR:>,N}<
s}%K9"/2CъdQP|ALm]r8+k,LJ4u j}֙CpAgPZ'rKH?u|.L
W?),/U.]͵q =dz`ΰcYxZ/ (UZ8h*0XMtӬ\̇26չ!'~L4%qMrL%ϰ=1M˚$e=ȢdqߟaP_Yǎf)r
5=F$efޖc&HzOKew*Y47nU,/֡2mH%k}QK<n,;/RS=A˥ovCWl]%se@9iWY	:iz(z<>oL){rAt_&=^3.zȹ<xrrȖbKofjT!f\EQ}y\e\"f)ԼHa
ЭߣXgU=R3af6iԛqƲsJk%,\po-0Lx	2Tp݁_ƙ.;^EZ	R~b݅'"+fCFd]ԽyҕH	2qhO`쾟ͣ+j=AᘂHcoRL #Nf04S>#pj}dŹ9G
2iZ`t|H̃pp\OfX V$C06!o$`!ݵνq@N>l<	ѻZ=%mȨ2DC,I?/
Y~٨Py'`Ejd_ǁ}"~
#|FHr%G%=5eTA9D.8
Sq=|ZY\,p"MF@V<kUW e9cɩcz`Re`G~[ %Yy1ߗוv0?.힧f@t*"tkRTS\χi)K
"Q"Ƣos\khmEVh;,"lϤBkfmBX$Z
WÔmgBFU ΋_nIDJTY?	Q'%r.Rz^X2+iX9aoNp5CT"P EXw>ŤIL{[ntm74؁
6Ø鄋|PX#Ofzb0'j1e_HR_!倝x
bUz|0/Kw6"x8/c(7y |^~7Ds{6`X9>grgz6eY<!Èn3DL~Ne92.;1
*DBN{JTJ҉mV͸*<9 |KzF9b2v9*KN@O$"rwWI/
F/nb0ހm%Q048y+@'Hd v-=UIYhX~.]hdgκoAY4؝|X%S0l0ey.L9ɓ=h[ͬɗs^SxRe8øu݊
2,^.J~Ob#7fK*ݠ?fa^,6_ՌVN,t@SKd`h.ZRL
ԪW seަwH^T3jKCg۸h`NAH{[9@yÒ&W֪͞YП^L?|$BRL	KId5.^sNѴguL̀bRAz})F8<L!6r&aRQXCx,"eG%ȦLkp
~2T^1Gx9Cݪ+ܕm:pyMLDlMqbpd]ry=+q$/`D"PKӔr=mUQ"&r9V _=d o	(XMr@I5pOL
vJtqDP\))0e(gӎKM4
ilIK	0A1]1J^dn#b9ǚ'bH~/ ڳTq<UjCsSEd+[S9T,VX'nГ-PhBF˃9TItϴ΍@=
t1.	Qj=E.c/m8
T1M$U wX#"g[흠$e/>{2ӰNk+Gu##Җҕ)Sɦ́9rPwQNSE5!oT
]f2sxlK q 3%v\p>+=f	ŭLNوf|e'aA7&OrdD
9c+Xc)^XWgf c@i+۾fʂ9QJ&%*.V'j4CJu6+$!PW .[a뙸~.\pztX,9z<l旊>^<-Xl
(IjQ #V?YooPrB뛯b]Hc'*2O0=
ɢ +"vl]iHZn7OSxi 8h2Op'ݪ	2;4Xc<|ҹl%Ë\:KUʧsS:
/VR<fZlsS5~0''T?.Mްh{{z)15/0%Luz`^ӥ~ɳ7q
-\N4P߃PUJ Z)ь,VREJIb0Up)1P.ٽ?4SӛI0'[(}	E<H(+Vu0&<!t

yV'yU9pmxa0U2&ɞ`)~2<}e[n`s7?5bw	DT&Id尕c1Jɮ	pWQO:P$autc׺2@puI!Q$XOMZ}-yhlN\2b5
f3C-=!F2'Z1/ 3D"hj
?Q[|%{G߱VyE]ep$b֏%0A.a1TgCΓ|1zrT^_FȯPR.9*_\3bmӤ8))@];p%Z
 K4S @p9jOQOmDf)keRhjU4lw*EbȢ\DIS"FgvަL@Gf*9كO5&lc 3Th_S NmH.2-qYr`xD&ۚpG$"" \CtC!a@1YXv8֣U
TmJf' nϻGXҀ^v}`,tbP4nN҇"Xu;4QpVHU/i[!
R40R`oʅz6?['lWp]h+ۆorUQ"mXh_B@*8Vt,bXH$*err',YՑ'A2{Us]XcuV{x**#U~ǰ^,>l"<⮙ 9M0Ed
#qprQ\5;@.+]-s	M<^."ExO^[<TIm؃OðNIwhẨ#^8q,j>
stm-c}O.µҀ&EBdS 䜄mZitmLT9M1H*\$$Jݵ:yq7^8"( "q`hA:ƗH|MP100fs>ƜRۨ(Z_%,'IA ם6/YQ4TeQ*ѓDJ!Vy3RGR=0Z؜rmEC:FxU;'B&r_A^_UPY>O1+`;~0ᮑp\M+NA
|3QUHP~H&n˱+ IqԝZ]1>x좛`.BGK^Ʈ3	lM3Ax`F	u3aև -J݊`a9"fEK9\++Z*yFOkqq#!rƅ)j2*G25K鬒!F
4x%cδ:(dܸ1端t"X0ZǴ5T|*_zɽVv2@ڎXRwA
Åut$eSLٹ#tPϫ$aJC|&
x(@ťa.' 4#g߉O,;@F,9דmԸB4Hp9E&rv`drԷzG^ijhJ;%vg}5+ֲBuKkIi1E8plS$vؓXc7T+nbZ-yNxPA34&r-.,ˈr'Sk	ެW6y6KfOLN.AgsfxV?!ZCHv&d;LGMQ>KjGή?S'`Z)IHj2"V@wʍ5;.aE&I8jk$;֫ܳL~XٸǶH=O0ӟH,e<5ΎJI>h WT:2,r-5Ap|_1".o\,.ZG+Ev^&
EPǺ%{.<-	m%s+{S]*\	yᘺZ/M}U	,Y
H,6LO[_wEo/84q-=賵jQ|ixĂ
XW0'ި&l06lr"Ydb	 5Ahi>9z5LY
>JzD'<Uv gJ*HΑp2L|G Ϗ͎Ԡմ\j٨
=l׶@>ePޜUhr7*iXf\B#O|&b\Ep^56
Xt2+Ĭ-{
Jv!TDJ8'ak#u{ၪSXuVDա	Xi`j]p[i"T"m Im((\C懹qlSb`XM$.N
sd:&i L$xD{\s.ۮR: hXDT!n(sBS1QTd:s,uU',mBJ; ~_sY&l8_ :-2qص?8^Bчd=V
Tgϳ̺2M 39>oS6ooڧ8uJQN D ,ZP_Sp 2A!K+uRIdVJ(j Q\}r#2h<2Jڽinñ>,DW]!/-
.[Jľ0nÒUaTܷhɔ,w.
P*D%+./p-%%6-]Ȱ69PB`p;xUSm1\z(2V%|z5VB`D\NR뭄&Y\<Sr坑J6UznCU4JXjCXS¥^A	e4L(y**GJ֛05')1}UBzWn&r;XE8A6Bc OMqtE^g9ĥF$V,B1d655Jǒ(3{t) /tB~vX
Ɏo@s$6K}BYMn""_@֩YF2
B\qy@]!K5X<ұǮy*ч*
=a^,J胀k+ݛڦ:<BuHmjٕX~pY	h~XUFeu'R=ͬyf;#;XaUI ؓ0ڃRzr\O R-~E\AEm԰l̳W$ϯKg5"vd+s.NʱyNNbw0dfa,cAV48
ZѴ_~KiS*b[xB6r&'H"-x- *ՀN>yQ".x^)U9_?f
QE{F[	
\qXb?{<y2'CƲt_`HGXSja	h/_=.N@|t\BӊE_A;ݐw(tnl:&2%o8aU~mVK9TFgFKGSZbjuXc_((4
䌖}^:.]o!fTkV4y
C:|n#)Z;C]C`Xk!2;nzV<
@I{'nP>sDpTTs޴J<-q˄hT~i%s;ܐ2wFfg`C!l
s8^,ilCC+}9{)"
[i5ɼ%~v_Sfu
]!V.p=J<:/S<ePNi*P3k<SS	pO8$|MχWa3ow*|L%Ԡ,JٴtU+Fy}wl|=Hˡ_kFn'PHho2't:(ݻ@U(|UބS7hRU%((;P<WZ쬊̲n n./r>}&}]YIU	/mٯՋx:~7C"(}Br;[GpQ6,'PbBvdθ8Ť\IY:B
̀yiFݸwawz٤Q5X2G.	.e/	A ץ6K
|;Օ#~3;\I8396}P|)'np(u+ C)\<y!Qǯ`MބG rO`몡EE&<CqzoҝA\=̫'!t(06IS$D&3lrL59r_$UָǚVJ)6M |J|"`! drB>ż/\Y3}0L~Qݢ&	'l§ޅdfư4eIQ#Ial=[h!4/JuAFUKR} 3Ds}7%oW	(/9?Fg$	W/q	\u9: ?ҐYz(DaPRqx`E:^ N$K^@5)Uؕ(r9ßd k@ؖ'wLHy"0=o/뚸:6
OM4kE߮B:~6TpMǳGxM6r+ ֡@꣺dh8Eϡ蘈뫁<nz4!MZ~qׇE\ZL ЈZș8jttL21e[fٛ/s |CPgDYW&bDQQlV%`|XWߟF1UN▟`Unamblx),MuzBq	v+cfD7jFևٞgI,RKH:;jaBEw'̣D}`Ӧ7VھڬiLoH(jm_B"7pRmƘڬQ}	Qф%W/#@:{ +ORā;X>/]roJM/d6񌓧=+ _+_p +?'##cS	Wnx|ㄬ"{>I8KULWOO#`Vک],z.$7\j5o (`Jx0淚ќ*6\zTٚg !>J5[S&&z"(Ze&Oz1,r{Rt'A3ۆ}mC"Yk0e<?Qvţu9US5+za}bu1
̛q`
wee^5PJ-yr!
_Tyvv=bxqL9+tp*u:-A}%,j^	,E~BiT{jI V1%K51ZdIG&٧/bԤȍ"RwӛjyuWc
q0Khו˴č <o`ePcJU-=W y7I4,f(
fGHXMMljY{u-%j}|3l;6*Xr H`H6cBTβ WqHdυɭR$W2yNbv;`3}L-T)[!2 IPKH7aPa#B:ۢ#XPa}f֨xq;9: xz$Fr*"Yq3
<r#
J~beZa)S5 -Z7*ѐ#
Or9ќLB|[Vݸ͈t(RB
op
T]'v-4z\НCa/2{˵;. 4d@RAwtNwb-`[<p
 evc=
`,|c,.2JH X],DEĦPfv0as8+?VvbέmsR pDKT3Hxn<[y3M(,DOܦ:6<6$;G}ˬ/O7⍋Y^*@ǝMc6[Arh"gl#}dVa@hw9G):QKI`$v*J==k.[M污R]fKަ;LzCT+ KI\ύ%&ytrt]͙C`S̯秽HO;ҭ3×52Wξ;x		ެjG»Ix` [{fk:#Ce\FG+ RDnyr|$"A<e<Jw`Un!$2ZUdVtL5rli!گ_I&z訂'5T*ArݹG6ǢC1_U}dZ!ߪ:Glg/;<51V8ON	Ýҡm6*+733(a2|
msRXx}
j u4ԜMDuMdDUBS7nj`:|m2ݴ# +`ם%j 0Yƴ*JĪx"яi!Avv%VI9B%2(*z	|:j7BL+aݬ]]a+_vX$$NG^;7WsVtLteT\=~I<r(ҬQwoHY	|wtUK_Ŕ`o Tp4yF?S y@tz>'M#<cB/f!_DU!>C&,S?⍘(3(GkHu ̱mjOȰ3xw3UU& lX'F@iAU{@.ob* pwxpTƌhj)ܕm!LVEq-t]ސT/m!7rXVq
¢Zg+ߑ?vrmLn7G^	vk7.nd aMp]Lw݂FDw@0Q|'XF<TNcu~fA??f
;ڞ&8zA.T3e"jL?Jt
'	 v2@Az>`20,25zd(1ճy{ dS$6٬zs$,wnb1$vrG'NSU U(EyyqX~,
z?<_;(C4myԵɢQwRI"7cg	*F+1-fy#Q* $^ɤn^PN	5i:Usfy͉ǩA%<Q	fI gا뽳eFy<au[_6nfw8+#wwf!$.P`HZly?Zy3G>alW`}(eGbSI-cwrU؃GE>ZqYbd_
@Zt'=2x
# s6\)ir
M&U,
}	b!̾;{=xPaᱎ/3	Șms#A7ZDTGPnc6ƈUSjZ\U58g0sCA-Cri(^fEbFŌ>cYhnbU~M3%.A-{by*1Dpݩ.1~oCaQG݀SIuPe2H
Mu[Xe~gOafA3Z0
%Ph
Pro; K҃lvLq]&D/{+|4{VEK٨ˉ#	vvmjۭtX(a!Dh	{K2qZB2t٭\	rGbUT,x\	oh#	|s~#z@&\F 0,Z_-d%39~YA#3kGQ5W8>	I/bB7MѓVzB%HnJD~M0@>hl̛/[ͺzYmOZsXS]*tNza%$кdg\{YUj&%fpb}V5cg
%~OZZ237
92/Hk
RjKO!f7P@AfW"Mh@G[N,+r\L@8 dH$a*Afu9'1dJE_jс#Tɔ!n"kQEމN2Zr!嶞0n2d<f>p\@ .0pXI
⃸	^
֯ŭ耵yܔ%7il"Ɇ|] $+'aE9lMX1iK(Ip`&KqV;&C`w ;QLLRM
Ltcm*Ο@zRah@&wp	C khfK(Tn 0b{ gl\(GEA;TU ~{ZD>$PQ^!o#.#*T&)~v:
w(#aR J#CiTvJl6I$޴{c|>UA=:HLFI䧙)\6NVFRVY3/nW7%0;Ll&oF5҄80^.K6/ 8Orgy6>A퍲wE0J$٣[QdRO񁸜jspuB3xGG\ y=Eəl0H׌-D7pWnƎ9F keY|zϧ̩0Uřusn\^!P}.IQ̘3>Z@N_ f/xF~T3TT-Wvb2"M0c^# ߈,jȒZ8X>a[Nҕ'b
rT!#!{U>$i29bbAxy@\=r
x;7|oL9Һ
msņ|9dၧb#R|œ.Jt\6;{sAlD,LߺLbnM-~g
5buvmZ[*Ci^h
x#tQ0KUe'.4AJ7yFj16tj&r a..HZ< /R߲@f~-JKBpzk q)'|*j6Q泀e44 v,q?PH"mhë>Mc7~޸
}#%+r~'t/zʓFG
)=E*曗8p%]T`DM ().FxB:ˮY7Ž~b#V𐮅[P2\}1Zafg	M(/cuDi/y畈(8N|e9c	$8#	6ʓ -ucʫLsxL.MWpKa2wTŕdeCK(?[)OlQ)d
^#AsUbF㣇(ыxņ#h\scT,B$
+t2M<<LN%#htTwjEb5a>zĕ,NJ܎PTD:WɓHNڕ'OB`GfT /n֮Ū'b]ҿ}^1R-6Q&+@K1v3W/n(W
喔U"Dr&X0j&SGj%!WdHG"0/]V#;.w9=9|kBʿ~=ڿKBP]5t{?&N(&PP!ə~-׺_[KFF}MڬF_e;E!x80]Wj"'p]TU7ӁPֵ~~p]
HY,IQs~L_!.
F-H9YW:j1
"es'ԒkXk-1tG)pktVUGF7Oios/}UV=KbV_g
<T	%߉O^x:QEHp#%R68uVi^6Q7`-P?[H[gxُŘP1lqF.
g+ӻ@mPV馎gw&M^PJӍ7jPP'"@*>f^A:T3CiW( ukkX WVnQl_ѺՄOFj=Jsb8>"GjcrkRS\1Lcp=:os*"EpbA٣r<Q"|I<:-JΥ`a2r~rQU7pR9)yajSČن4NbU0ݏvnt8S0!YP@uVTh04dzqfؕTVzB?)a,Mzd O'MEzHC
ӓgdeæmV2( xQYay#sSqjȪ'b)NOϲн!jwFQrƧclt&0r2;n5rk=Bd$,FĦWaKcׄ\K(m.$T8&rc&RuT`{GvDVt*J5G.bgTfC0 .t\sA|%B>@XmKijǯp	 ܌EX4'9"sBV?aIyI1fYϪ!ռv\i#nB4qD˳F̇AE@Bo5vN!y:9ؽc`EM[GK. <osPFcm0iu>}5҈) MÍ֍8'F*I q;dc*Gu=@ HևĮ:FT18/3@nbɣ{UEW 744.FZ/jA
{ećǅ!^-!zRp96I]\d_Rbeg΍<2s5ςlԍֶ	y1)#BRAa]8+e_*a8qǖy&0`%Fok7|?(g}qF'Q{@hw}(B3dyOK<تxahAĒf
iZJe-рH_ =s*T5N핍.^Z&ڷJ1.6VneQ2v!ےD!
["ξ!`Yƍc6H>7FDtV]x@'2
]*:Й\fmyeD);GJrEoޚ<P39nLXd$YD'+b!Scivo
qnTѵb5]%`^tΪ&KAWL<	e]U*@!ĊT2X^@׏B&&.=AkYQ 9.-s>|-JhEPəyuFKDl/SLS'{D՘	vwZ<֭Z: 4s./V9p
pC_p^`irw
ֹR
-ͤ)Ўѱ-#,Aũ²n"g$eU"?X옅|g/]f<{X1/IcE3Vd2OGs\@Yoyyib$+HRk^n]ɗ*`=y	.-G˿hR&8KƜgUQ9>_%hK
=&
E95V19LeBj<Z|DnM}ϪR3ʪnЫIꞥk*n*/uH4+E݀C6_5U&{rzlC(eS},oT"D%T1?3me$v;e8T?Ll,4 H:*L,j44pXiQ%t8ō0=<8L%~wu^)%sNf)a3Ք9ŀm@G^44*Fg!2ϥ0)?2pevJERIDIi	ce9B;=37vz%$1Upn 3?BN*+JhigNHBWJs"1c^.WW߬
lbysp(its(xUN7pe^ZOX`T^Ĝovp^r9 K6İ<ynq Zrk_23IF0K?E
7-,VfGt9Zb|YxStE˷\0)pFLXVjʣD\"$DegȽR.R@fP&;>Qc4P/Ҩ~ 7ͤ}Aa=S~cBpЭJ&dLw%$-Xf"sn FgвvҘӆ睤D@;	g[(C<2/@э8ʹnٔP"LLyA}^#^,,zW
*j)`DLX,9"g+(#,4<Idͼ_SX٫% U*V2sϼiLvg3AMTFuT'V4{z4#|	+3ql*mdT/=N
ٓ	u4ozO3K`)KP#ο
$톈ݑ$RXSO0aˌjx2';AIw#OQ>.PN(4- l24epC:]{wㄦ*U?U<(oj;wxQHLY+m`lc`݀L |H'({|j5il
GB+uH_gVmQkwRQ/# 4HWd )[@a~&@ipެ`4ڎU3m[GBܨt
\iuPW|ܱ6$bĆTK4dcAe j:+j	vtzz",&f!瓝j{8'<Do-̳k:B^,
KG)h=xb ,._>?[Za海0DnҊckm2~MJ:1G="R+(P)	R{z1[`*@L!RX"<SQ/ү5#-o#58t|mi9Fϊ 9Y*+W6"Uqr7 ]F墀:Y=`t
)oȫTJ -?s~ڰLL]ٰjO 0!GA͊83NĴ7]ۃt.@WG$Yiٛ<4`I啻Mj:ѡۻ`52)5`E,/qv"%c8"FW3VKOlNjX/ +p6N\Z}!-didK`Wo5y&Ll
]i\==N~["vDP ݌^С	s߰^E)
;7咋'??Rб,C􊛨c2"-璑[9C\+ҠJTՔQCfhV4h0NJ,'.{Kkⵑ~$iDRmXw]wɴx.'
dܨ4gV3s:#,"4EbzT.ܰVu1#eR8?!g#P\#[89TRGXb'PA~V'HX#z+pjP-XUMqIW)0J.dz>~k&A
z"j`a
"tɣء;3|Xt.Tװ-dB^=4Ъ2qU:ꩦ ̘дȒDN@i
DɝOp2q?a@bI&]drZ
w
#anӢxT0J9ɏWD[TSBm[e0$}xĺlJ72elV5_k5*>zj&L8n^k^,J!43I ׹[Y׿P*Ͽ-cVG0>L^t!'ؖ~3z*-B$ȑ{)ĳ`[0kb8^.XE@39"2yMM@Yx aѵ/<D FǴ=`d˵wXFV&x۔Tj$Nvʳ*>p^27m/[djԄ
ήBKuх՘x̐TP	鹒ǓTÅnDĎ8 ` }k?mGпܛ*ziL|iՆ(WXQ2{A:i`To8N"Ae@Q)|T`! ]	2%3/Osex#%97er;'l6wmD1{TA4l)Ѩˌ =&Pp$18Xw,	ZVdn)v6]tƶRw^UlnDx+/OrbQd#q X!nee87
mێϩr:#'|`"ҳS
|2dɍBP|TGУdTed̫p-ff&>:)c/kYA`@Fn'3{egVfjTH<MK<q䭲5YE1>|YHZ`j !VBE?
lܙn?aC>bpxw
qr0
TjJ/K?3A7Q"v<iڠXR=ԎU1xX{D 8ʞe7n?WcpE,0]{eH.1iIemB.5K2BݵD!c_4EӂjqҥGMVKpzJ9.N獘SrIDWƜo))rp"/D\7qXWȨʉf[*Hܥ40țk5'-5wsJpPxnX@V4˪jNFMpj%܌TreCSMx͊P>X[;)>oRS9_[7o=F*ѷY2^~QSIubN(
BUED6rd7C?jJ\%tGSyͨ[HȏЦqbL`φQs/œ/_w &(!D01X*ءb8L>.)oN[)cQO6DNC, {TmxRx˚r9i'ƓRWqfzsrQ`p}wJ3WSVfxnQVnAzۄO>_~tkq>t]2';*iHxÌO_:
zcOĨRƢS!ooSDk<Vt
r՟
o(ɯ,(0Svahh0B/2#QP!;i	uŅq(x&751Utϭp9D#*l~y@~0X0'4OM:։;Dj`
>o;Kl
[~*UݖNyR)'j.M;>Ls$YLjz3sjA"j_{/E*tO)Ép*c_~fsȐ>=&(B-\Jr\IfHJE؝Gcdܗ?A0DX͇xJȽ__e
˖q#fz~F(bos.'1q'a~/xN;)Omƾ7M*l\{bp41
/T`[8;
SU=A7ZřC(|a>
Ix2c<DEEqrfi|:-<
Qc),VF
X&:i)}a젧r{|E:.S8Ud bl,K:ƴAR6E::GK<2cϟtJ$Nqr5;:"SE`e=2xO3rBUڳHcĀWG6@l~Ϩ`(.ͮd`
t. :BT[ )w)JjUWΡh^\"]94Ѱ	j\߇pHTpy۠i6@nBS@"Yn;$őW%s;㊠ԹA,.z4Y;Kb`ХU+ $sǬ
pgvxT	~`D}"cթ$7Z=F2PB\V(.
؊`+vIe4g3B
O:-("<J
"7^;UH@Tij:Ze?RFe1@3ՏQEҲ՟f8du7bٍ0#tw	K{G\E9jV?w0Є8A_JʈsL`ֵ鞸 F@15kMSSruxe,!_mgsl*/F\%=064U`?h[ i[2l VPy6¤?cHN,
<6EbqW3-A0Y$l/^ Մ*amR9?}s/|Ae-c6ŚQ
S~^FK1|f4EғT8=vQQaXb(2O$B"<	/aknU1|(EUzC/:b/c7[`g:
ϝkc[|n^9~Z}aAR|mdƗH̽@k7+f.*/pݩ=

v%Y:Ub꟮cnp~@ZsKZh}JBf>u9:LfwvL}8+RPeFE/>C>;*PfYx`3E=>͠8ɐ8Z;i
Zdab9WWOH&|[,_z3	K_{H
AfX'7Oۉ%c(/vL-67 |F&Dn@ ?D\2j&z.HEr=Ԭ?B>OdZlx7e=MnV W*Nf~,*_  =745vd 9yȢ=
'c+TXM/
 X`1hS;uRG<
BL<BEa.]i%Ī$s\R
aռ8O
x=҃|JxRUGt*Ő> Cg)Vh&Y"U_D29MW#u$Z7?LcEQANrYؗ7-- Lq.O5_u0GC5FdD޾y28!G>29֫ԃ	uޒX" (<c[ـ艘6hJaN/)}WW[b}Ɉ C8]3:@ל,E۞f3~F{XgtZJw :OσL]t,,_If6'Q4CYjЯġfuTVM53Fqe0D\9")@Jǁ)E׬o>c'<x܆"J	KBA'@<=*7!,%t֪(a+A٤~UWۍA)./^-˦Vq::CptQ$a&3.! th~[%WBLZd؜eS[i&=[W*F
bIetS@f.qH% DA̼n@
DR2yRұ*LάJh/v@_$FrN*i}ե19LON;y·$Ќz`?UM Ы	x2#hPAk׉A@B8Z=:^f}o
b&-YXNiV<n&PNh("9VBA@		_Z钚}3{lʎv^24&+2p
qW_/&{$,o 22@LLNQd\>Dbq*M(l*/R`rڻ(2lBa"+Օ=8nymR6Lq0a
t@RTgo-K$>h̠2Uұr
Zb&o4%U@JpmKL"˳nd˻dípV!}r*~'3f.,t	)aɷZgGCR?VIdŀ:qOGRNNnnnKbȮT{8"Mr7?XO40lvU/)^}l{?
+TicL@@N"{BwT,8NM*tD~H`#jpBI\Ĵ,GZ!o/A9ՏSAᆲG=GX"uLy~~dkWv$l~Lw_
n瀝TuqBGz@ Əy@:nq,S*5(~V5@\@-U;bSL3Xo/l6]Bf%iiyK
L %dYO ,(>q8ƽVUiH-jcS 9绶q3	daV8QϺeXy,ȸ.AbI*X0Y.**̱p%|:w(b*-}o"Iu{"FHcz~07^҅ XkȨݯj>0G:򳽟̊MH#,lg+C~B9 s&úAn@6(bcI\ZMQUPto14pTʱ{V[ރ]"
N>[ǠE
r(<	SH-cb:hu]r1fދO9R)rH
LMr_qaIFo\5N/Cu%jA<T<"!@(<De&Cl l/^.բK<)b5Lb
i=9VL Oi%;G ܌kpjw/ɉE=ᨙaw.=h+c1SUM;}*:@-"@:?Z*v864N9AިCon7FəcFV,{\
/xÑװDBh2ӓS*8)߈r2ȶ-W\5z'aZS=fΫzLt
'ix'$bBjM@3eoȜ.} +GB3Yz ?/xlkbkFk&'t<F ̊U6wO!X֌8v(,~%̇?M$T({Ufdjl'"ubQ\7'	d"Fֻ0\u4p;U ,~D93$`/?Q)Ⴛ*B3"a!z©qu1@flkzM՞ƂYX
%yTUV%z}g$go2CeF|[X4uL2@.bgn2jo~𿽴M`^AȔ@H|Qҿu~6->uɊ;EeYI]٥$G{m̈́MYQQrۤbvTKKd0	*HBѶ65<
u//S4Fٔ,~YX"}2pzu	=xA
#⬗O!޳KN&6)WMT/v*ˎjp
RQW1$S̍xP]6N>U:ޤa~R-OvfLȭZ	EǻI6>:1
QdZd s
ۤ7-^.$S {gbcZx7aQ8JUrVPU-#*ye_ac~'R`pguAMX. 6ޝ5ʯ	6(!+lu?Iz:E	<8z*-ULOE!q!):㘦4qW-CxV뿸( I8USqӉ=H,UA< 'YS+Id$SڛpcQsWM Wef -tҀ|yST1KZ+L^Oc,q&a/^YѸ:	H2Y1KGwԈR-x6= >Cn}6X>X;B1Xt,бȢaCwD^98wG睛E[mr7	)zJnxaA[;TبVk;eHRaP>yZʤsD\`uh}rjfa-hX
7zHNJmsgu*$y4 ԐA3)+;5>Vʱ<5aXh!1&bkX[@ W1J@R/œ`Z3847x2Ǻ
L+&'0%	ft7Ot-q$L"#{kPt)Xޭa\xo60ZndXQGy	r٨_/P?nSgh,J@$YzbT+GsTr'j(9C#|T#],3fs2!Nέc	%Yy8>3eI*Xϸe`
2;F 5K̅:Fը
U#L)2jǉHv=2lh
])xea_ <EW6>
Wd'b&/p0o+~+l}L}Сb$M2ႼU4}pQFaM
:ݿ$S/7gmAQn̙hћTEVV|S/IwfpJ5+%kqP/k;L1la:K^Mᑘbq>&75tSj͹D"SAA<ә'rF4=LUr*38e\] >"@3|!0_Lc~옉:2ET?)-\	rkn/*JQzkx@_}F~<DA$WNgDW^)oiPV
,L8LRxsgpfkr=iӇea~`9٨Q!FoԎWk)"	ۀ7w~f+P-td!"+ug3 kT+YłJiH9$`(cUApYpw0ďk2*T&2Hu)6mpLet׎5E*x1`&;^GZ (x3oVI)sAݡY}'CJͿP2uQ0}eZ0 R#rVw?^d@@mZu`pDt;JHP,N7PmvBRq.I
KU<ȈLzF<󨌦+GF?)6Ym66&Д(tZƁ{Tx#-or;zGL#-!Rۺ!){YE;RG:ulQp5B]%T#4CaDlm%Nצ*]5r]<b ǑY	D=,QHڊQ}2	 ^.ª22-U,UD2dn2c<+J
0,DN^ڕ/> 
ЛFQ EHSjz3)Ѩ.1QR`_)%:GvhE.Ǧ".7DJE`eTr
8B?.Ow<"W&ZV9o5zħTnfBD]BLRb;VYyr*,G_s"Pen.Ȅ7kwgtɼJO?N3'm^YUR:
KR߃^~n߷yVU6i$?hqy*fpjͯ3h22)LXЌŰyb+qGw"۰{jMЙX{R#xrIh#AxD  ]P-xfU
m[!`kcqUĹ-iވ濰Dhm1oWz:Qf!	FSA
"G\
fOYdrౣzͥr>	O%3lN';l6ԗbY/]JfX+XW:n=LA#|Bw/ /1.✵dy(އTW'K-p.+fS86Pxc6{f,uMōMST]+.>Y1AYtnܯ;VP um6>JBR
bq
Lxhi7Hą47"#4	0%|4NbUzn
!XEnMV맯T5zmܶ@TC㜇k+/˓ځa{\x$kԡ6aČ{*۸κR_DQkxg	$)':`bh]r0|~P-VOqdR10#+}5ӡY_|st,
0/DVq#խN5"^zhrdjKL1/[+p:6NUY#|wUlGfm%i2-a̋g(UǡSsk5#pFP;T·/0,;]ƓFAIX}*\=ɬk̈́
`h]jdzj}*NI4Ge].l>7lT@TSf"41$mr-++mjCR-`XJx]o!A*t!E$JAӟ3a(u5>{53vOJvҏVH8W_ 94$0ǃV'JPxVa#bi
CNȊJ-F64C_3N	t/lsX;RdU| "#s<m9Ǆ
;қqhdZw)X.mV,ӳ蜬`
`&zmfUo|t0n}1sv>Ǥ	'F<T%h,Xq.U37qS#Cpg
ģ2K
hJ6'`v0;isXlԗ4
Z?W!dK.D7{F0x2q
yq7vK-nzr0TMxa
M|P
ge FčA$~2;y
T%
`_ݒp{,J}tYt;B#5i`I,䚚q[f*.SwtEtQpR?g7}Is)?vѽl"ߝz	}eK5Ln1U!D׳N)0#*XEvf~"'bZ$>!:dzTg3<3ldx2B@dld{AbnK<0?M4#OީD-PL. r-a0n'J#\򼒗$#H:Bp}d٭潭l\,Ѳga .~pq[Z<EMUM耯=ғ2Bl#L,0`* C7 >X=ssR_Mmx:҇XB)8TLm
M<U)dRWg˂vql9Rr'`*{Ⲧq#`Kh >q$ddǗ]1>+P$bQI VMXpx̺r1GVEawC3 m TYc"Ɉu}=|	O*#݋$`4N1`W2S'&7E~$[>h%h (drIX J6o(~'xqe R`;dT
\PBvKKsa*k	|Ái<*%@w#;H@m&^)C2Ȇl$$mȋ#?T	qC A%T1&/AG_f`|ESӊsLQfD=W
;a\^l Qq;:no"t-N-W,o_Émy^z')<[~
qMHd]^6§ \k"7*6m˹MOiQ[	LvzA*
#vQPG)jTw	YtX<9@ k3%~V?]r|)jIG2
שj_0,OD X%y,io(K!.S?Vع!ђdڲN.uByj5{>DpRgG("DJ.p+Y[?Ӊ9E\W4q&|p<( hZ
uw/h XN:RG4E%"C*sa᠉&PÔTr7[ԪⰆDB;j踐I	 HR:RMZm#{~;#QxgZ\mݏ8^Ջ$<3y60vcGpdб*ISr2'%Aj8-Ǳd'3T@mKg$)A6NlFt)
R$DE<QYt7~t_ ۉK$09Фtr"
ԻheuŜKHƉܱ9zJVy7ozܓ_x/2ى_n]L#[20<꤁*<<_jvf-ݐ2O^}M;~m#/'!#j<&GB`i|n1<
|%Mi*^	kJW01E:vxW	hH4bꅨ;	\!Z[ r2:A$6h#'Ev^fZ*qNQX/I:fKWVs%K?ȡ=
Б;5.`'颯-B;
3ɘ=HN֌JvS%1fSĢw kd ,ϸw*ME;.ճ0U
しYݥ6RL{iJ9URt(L
?IJ-p
8IJ:%sXm
ဣUI*܇Ҩ;]04Dh´;9C:o`x.'NC,L2z%Y\BϚ,h똳Q^	l8$yc0]%ߗ@To 1HW^!oNȦ9\Tl0crXxwg>mܐZ'dMY\DV_ҟ:(wۗz߈P 
9KݡÎDLrKT	޳j-/!cj{hja @&a~**mև\vC
GX$20d\{ 2D%tp05
aAC	Ԃ$\
E}\mp!+x˲ B	&RI,Tp^7C:<w3&yaq$@΃?}4@r{8R"Hፘ׺<<}&Jt!?bMxKlK@{A7dV&ECugݩRA++՜V<2_6QP;ڗ&6%o.^wWC=DSy7`Uu3d\3"kqH@.JT167e!_,ۉ'L&pLKn`v!oǜy0
O`iӴLi.j7mXNjɨعћɓbkYя4vQ6l|:㽈6\r 
G7B4HLGeͬ![f;fnݤf~>6 K	b[̋jQE^D5E1n~ !}~<*ޤP"-AF)qjڤ)o!0dJ`RyƧE:dU
znC	'E̯Ը)0a`]R3E#!/6("g:c #!G8ZɃr#L
(EP|~ؾ>DU'B1;w<mo(=MX	lokKI䓃/1Wup>*W l̥H̅ᘝjF<H	x9vxjPʍë<nHUz-e,*<8&C;0&j^GBl^V5Pdbp*+32;ُ	d|1"R=eMx2
kbZZ7lg
-&S\4#q/;rG)]0J'

i1t3
LUiXŘE;"e	*r֘4VlU4UmƟ8N'i`ںGE~x: i	QS%#$_cfY Mz0/,`J-o,x(}+hiҸ>t>U"-^21
)R[Fv.⏲F.D3qG ZT6 x$[Λ#%ɒ4Hea9Ζ
ގE# ҮFjC=r`Ku"$6Q5BDx%536G`r%Rs;OVZ@:H°x,k72ZFp,ݩ^O
@~b#ql{GP0I{9>/Re8JcR(.薒縁:w.gNdC>\DPPdm4;*-S?8_A-Ya۶!ңõT-΋#-{
ˀ}b`.z#<vH#Uv|zODRL:bUCQZG<1M_TOPNTDsĽHU)ْ8B~NG.ȜED!,(IzU IA.`Uv	Ģgg/7^
4ṬHusv QbݖbCOgB>pbSO6eqlYX93@Ll6A6MLqI.yb뾘,ގglQ,ےe#T6xd@ؠŶky l
α6ʷV&rʂ@5:	fUSw'܁&p"ԎGM*qSEKP(ړ q2Wz&(/1
&~)= {j?5+l^qVrH', G39Yjō&n-:vIΗ1UBŎ]0JNieu	nTaM@9*9]yp6äڽME%>Q4yDوv˲>Te9ޛV
V)qq6Kbc
r:(z.#,ODANe}t`^EE>0-ѽrhOўp[BfQ2]<~i0(D"CĮhK­&g&L3 @#8a,:%Sڡ`5oh8QAY-xOPvٰԐ*9x
YxPhWZܳK'Bol7wl{#:X:+ -cH߈CwV.6ĮA&}GNlnKz
B-]|;,pTBMjF|7\"Y7~q̅l0
QAܵ)r6,P:GU.?RCn0jՙHUfUF;رO*G_-)YGbm.|en)#BtQ,%AbaI-PFH[rUw`P\XGk֞(Q6=1K`t6|U:([:"	=pSo.KAۥ9֫WB"?UI5%4WZRT"$NR#=:KJd bsm7UURpoꈵڬ2|E?E;n1AI3Aسq'LEғŗ5}u_V}nm<4(餢~SI|yHG
kJ@F$?79 ң)T./IUMuP{7[SؼQ|Ƞ^|l\.z_22I{CW;:(Ja%EcEߨ(C{<HCѝi2~&
6!`/<W2'~$rd6@G"G{ګЭAkj/cm4s(o1&F
&@RY<2ׅ "Jz;xQ#<-(.8=ADFt/J
JFI`'wI6<̙>@:Tw2iߗT.Q=TyQe
Fl6@Z@Sv$+}b\j:YT`@'hѨAlf6&Iu(n7+ j@[$5ԘI:*5P<K2qe/sk@+sL)Ig \n(;>HB'oS^Ss[\p*jqZG5-FӠVz\FҩJ?v$OB**~j7oBqD+Gr,nuވgB-0A`;	6GQY=:vzh/05x&`;VTdNR2|l#ś(C*M$ZVJXj=F9Q;s}Gnfqd ,<	1gaEG0GS<f۝D TLͭ)90'BԘ-k@CkZjKd(O_(KP1/efhqDbPpVO	'tzĆY3yK*5eY]Շȫps|&fCqEi(ۢ;㦳,H(O؊wʲI6,*7+oenl(B|U2GePdѽLiNz@>׎AP}H$I.!w;'2|AOa1R׺k{1/A[H[uǄH6k7;xGUzƞ[ 3vCB|?~G䠮4&D+ֿ?*g@蛕q4́*@r&\ZOW&7M{\l&l.+qӨ.OVTA#. 8K,D$m£$44mP
~crVF' M
	?9nD?*74#y[nX!"w`T#Afů {fM\fNGLKpcʔ&2NaRdhJD0ufʥoU&0k(`zs3*tw6Z_Hd|TN4*,Ǿ;.hG4sM[K nx?=f Ze69ʤ&X	E6D&ͧh%$6L(NdH|v< c|pN(Y!of
^iC78+VD5qkZzTF(xyR*NfF(mK&[*6fwڀ4I%lCv<dd9%:PH<6Mt>fG%IU$<mWm9c>(
IK~xcovbpD֖*:Ph
׆&-88b뫈N̼_AZk-fVj:mG@hX#6[sR?1+0m88C:NXSIBkY`&X">>[媟bct \,~ݒbJŚ:;
<xJ"@	aُ Ş)UE˸']G+>o$qHE[{힏t&@vҰ9'w
_/ O
h	oɼD+|	 2GCknlR>s>oOT&9LD*Qb5w49^d9B@΍-H+עSpTgFZ/f$l#^0>f@Sc3wnS=7
ե0?S6.zMO#Cw9Է//ZR孯c%p7ϴ
zPF׎l{z&^ER>СF\Ȅ_\A1),X>ә\
MUިn8
X-QlPr@Vڝ.х	cwEbE"D-eKe˖@TBէ~(3DH?YEKzP
rdg1N@gG]-Q]hҍBI'._'a2jtNScJ8̢xS]*~"w)AZ2\r]D1Bj<r_6^%f6NpDa&˲+F>H#$Gu'5)g~ZjG6U"KH(5Xugj26&D4WNƏ6ZL\Ճȴ)3@L%qsVoUљrgIj[L1{u6
ZW)]g<<2XPVb+ >%)o_U0	&7ӯ:h!8v.]GuO4:h7cTk3RTbvVI(q1eWd!먬K59?g\+,sh:@Ǒ'
xŋPfX-?瀐
 uMh>5mRrFU.غY'3cslT2p*5(	)Kl-^qX4wxhLK61.H=Xp܍X7;_Ae][J6V'eed2^X	?"X~
Iw\7aDnz
s5Ţ~E%(ŕ7;=H[LE"2]y $$ѭ}h^
qf se>ꅖ1)Ê20l"3<"_2(Xdޭ!DӖ`g`NS$f84xa rd42Ln;AaLʍ&vx+񌠾OE7> p[:5tt\큘
nxI_ZJ0D&{5
),֞#{KWj%\y|ga8
tI?(5R#u~99<T}9JOУ	|+IaIy>٬XJ=\Xj#bxHωiD#zLlaBB<E?Tsr pUl1S83eBb/:ԟt:IRY
Lj]].B՝,jY2l8
"1b+Qa߹gMXk0@6jH8p{VU=\t:E#"2I`#ɜqn_g
}Y[Ʌ3TƿYD	aTJjG~?wPxzʣnGr,EN`p{"Ჵx~AJ.Ԃ&phӂ6t]Ddn
a2:kNsAtJ\L ̗"BvSِPd\}$R: 	pӎ	՘HݟkOM=!&è
uya#KlWO`дX72S_V	z9j1R4H_˓ǢpfgPyS{vaiW?
@IXkfWojسA_uMge@-b`P\xI_N!tkVתyoI wPF7	*_f7'%v onD;w]Jv[{`6e#@؎3Gd;wđEWrar=#(ũJS<GQ\NLKm`>OMWy
e7uZz⼷:a
C\;fٸ=D] I756ͅmT$OT@S7!^0E;@nn;tg;n3a1\0'kWa4iGDEf@*^:ل//mtVb	׫6|DԘZS鎺G` `J:yٶZ'x&XV6?
/ld(;Xvh)֞YQOƏ s"/nPbh\iDFtyq/:,US S*&Â<-+N;;R5¡O
.7*X=ARgbݥƽR9d滆h$J15O137YYjFᔮdฃP0g@-5<s+lM?? *"%)pCVaT|6N2<1Iyݶ,SItC&[H`;«)4Le5`FN</'K"@'*;f Y/:Z]L
 }1P,x"ϑyc2ЖoHoq&
u-ވ0E1tF	\C&iETK9pzo^1Hq7o/4.x9n"Rer(ӚORFTKQfCt EmK>`ى#ز;p$YˑH-8_Sn3s#2k`RHעR</$B$0=5QrYXn33YaaPjW~la@}s[EWȖ	)Uf243ꢥ$SL>%H{w^5	啕Z
f]5(HD=03L iD
$dle_nX
VTDU7Q=-wO 	mZ_+d//~2ǆ-X61qKұ: CqQ1Y(D+6[|u[#a`[S4ɟ 塼/ȑxCkdے)t`2"iJOH,ܧQJ	`,qqx,,zA\55D!¾=yWG2 v}|ĆL?f2ʞQTY 8,ډoѦh#]NQkҔͪ)q#?g@J:|l@w`=G%ٻT: EE6P*\})#)0	NV1Xه~t5(u"-{R7	;Ԟ`f1ՊXB3Q3Kci2}4 :spŁ#-zZl_݇E`<
y)2zPc6D[:h Cf}V7>;hoGcT@Q3mei4&-0|3lJ&
$q=i'#RmkV Ś:{s4lA?bN	 V
Q`~P*Ւil9ǧ0{+kru}[ZU[x963

dKD&&
^1?#=sG#$;T 9)@w}ɟ
¼ 6Ewe 
VBtԪVz?ͷ5:s<W+PF@kGK'UfUT-QIĚl\
w^r1O~ǿ\ˋD/	!SN<]?ec%>ςdfn	-O2Lۯ7dW?UEh;I&\L]5wkT.Rzڱ-!@Y:q]ھJ⥓V,J:^ljRU_fy\OCIZ6[&j
(6
H*QfEH]<bPxWd~9H	j/iS<)M6E2płn|g͈q|3;lG]JEkYՄ<QKg XOU)&٭>N3XEi
V&23N~Rݭfn
qIP0 Qr^JN41H	KƷBȻP|*TÂ4"v`VI1d2zMPLːfz=<lv,p$ؿv`Q+ zh1$iƃXYaRB:?zy&7Q2[1~miGѠ`t:͞uvT7C/>A?S|J_fZ.N\0yQ.=|7,WMD	Ld+T\lB&h,(gU݉?5#7b*bM7t+D/"tLz
+^I4ՔoVtclX/yWR6#^U)A*j|5#ӗVt8lʥvs+nIO$b A;u!Qa1o\2lcF]G0͸wtԉC_ NeNpΆmgzQUSCPP۵BLCRƾ7ϖ:0
˄$Fi)QE9qH'KAm F}aGce#":lTUe|4PlAۘߖG<_*)gP8Лt8Y"{Ľeoje%"-`6;0#Ub2Te'Mg6۰\_$Is([(9}qQ-tbU4ޏGTINL
ސY \ů\XԖhoBѬ^
UUdF`FB|9w7ј
f6U{$jofRH%nWDzg͕#FLo'^lV%n%Z&(Tn.7Y%//ؑPa].*uDN9P"U)HhzCf\Zx~Y:Y'jɯJaؠh'mg-9|I K_ᢝy逞WX+yVa0)
Ge\[X̡]TO)AKԂ6U,o
[ 0iVFō3!(	ћ2LV֕>	<ƙE:V뮳MK2XªVPF&Sg$
$+a_>HLyTSɓ]b}`TVա1
] ^?bpK+sB$Ҡc>`Dtoi:"M}1F\n퐸
Ќ	ct8H[#Y9Xr=:ʠGxf껣(|2jbd"&yNQ\&OB.RTuq
N+K6D'1Z&)|Mm4{Z^OnKWFf(9 ҡ{P:=ai9M\I{? |c80ʡXA֫jiIBPqkӁx`5t!+RGK;^ɹ'qE!ߠG+O7@i7+qbD< #A3<o<:ux*I62Z7/RGe4p_%G )<x
,ؘA@HVcypލh) QynR%nޤK->9?+k!`f呗\v|^ˌQ!hd5=ug>Zm/Gw(ζTPJteD2p:`YfGBv1pB&_p|5&l@dD5"NjtAH &>XE
73j8Ë>NlG+e&4 /F+(c;vLwӲ$8D5\¢).8B Qc5&㯷P&1t+	Kt IaVS4f(/lh
p*϶(~U(/(*KKrɝbi+ulS\0ŗf()wЫ%T/DTdXS

MN>mX*ܠxU2DDa_Q
f M'+{5
.O(6cJ5>xnA)
"3[ƕ_Uٔr
kA6Jl;<wΞ_R'L6 )վLJӞ%	(ŚT4C޷^Dp-+4MĽԃAvbD>vo~75%ǓL.*D ;/.@yQ\bA?i>!@g8!\i&lR9%Mi0@-(z+oWlev8]sT6@I7Y./*tI4{KӃ=ת 38YB7XdI<ShPs_ ;rNr!b{FFδaZ^Nw7y[[:"Ζ8mKxb&,rkz'qc AȸL&`|=(UoEh7ԭZI?,pBJ3R
WT3 +$к*/
w,)0B7L-gMfݍU}v`$r0j{|0Fθ~z,m+iձ mؾR3@JF<s(M}^,DsOjz֣Px#=Qv&lveS{\V̢Ha ،Csz:N@IC~.gxB
E)qhe$m} ]yv5on1_}"EZ兆9Pj,~Oj 3gfu:lʁ:DTxwqRo,Pdi^ϤKqPzN0E}D*(^.l.hAbڃ4k#pdz7PjD9DLKUQ_3_,'ejF̊g3!jp]Uï-(wUC,TqRux5^a7F'[TRTuhKaP.
JDJh *IZu˥<58|b:cxn;Ia]yh{QQ^6Äe^:P,xd V+TrǣDS4ST'~>0"Y_y;r%eda8F {@q~y'нd^S_Л|QXz1fJ/]G!R?*k!J?ekXW]p |ŲSXQI"~ce-XnC!.৘_Q>~e \RHsDg	ӟ#zݵh̰n@q-s7Jr%P g,cVPTGh	st~_E	,ulٓ^:.%a(k,D6VW$pV^,=;p;I]&Вȡs;ӎjR+bd؋Tgǰ"T`"+"<gG<!oER̠8+dE96DA1ɠ'(L,z_iZʀREw(F<`&]cW?D2D p]aBFu(YIZ
<;,}X+EӃD+p_\A$HY;>ß8v7\FN="($JoKPmkkf_˿Ym P\Ȁ5jhlp62ڗO |K{6шaΞ:4WgŐ)o\@EbWc4 .<t|pb@\M9#1G7q-)>"J\V7J̀U-t1׭Ƕ	]t$Mk~D"pQ.c 쒧e!{OԇxǊ6w<ۭ\T2)6{	
6C
*B+ϔ.[X1y,l"+(\1üInAU8C
Cb=5_[F@jmȇ7d|'W<+DU̲I
{"աMڛDm B%^[ [hR)C*AnR4 A'T+oI$i痯PMVe0VޫctM?ꢢ/L^3X-SZ͚P,%Зrzݧ[S~zQO(z7CE7;*%8O}Л-{##JR,R!Wh(++Dɂt7rt	|ҳzR]M"	9K<4 yI[?_$3K#btjJ909;Uy4Սy7+C:qeyOL\O).g[m
VZy}mٳ("<Fvl
{߹F9s 	

V⟸c.h-czG${t- G*J@;Cұ2 ;|lġ~w-:
*BC¼e	Aq1*D_Yۊ-^}W#,acSo=R3*rxEXA0dBP*EN"htVFF׏0 MSUYHMۡk2Χ`;L{: O,Ը;7gw};匈"o1a_ŉ8C=fƶެӎS,+
÷ymv{ExC8qNw͟#1+6=zfxiD@Y=|MW6mna|f;;I#>Xяǀ$X"2KEL
̲ggT4ϊiU.a IJī%ZU{ Fe$ۙDfAAb0|j\' 0f)(1T^l;( *5vd 8y6Kl8*Nb޻	&qa1ڡlI1)T\F!L5Tƈ{kF\.)|Lݝ) ͉qR\H2.ZHͅ_9b6[Ԥ,.[xߺ(u`:6e}~.C/*DGF-~񎈕x30Cbx%.fB93V|a\WVADU4ف/܌02YM P]H
ң=NTxfeN>~˚vX~
;T&=?q72݌vڡUp'AniM-yCe&J#`S\C@79jm8ޔȰ݉v4+?b&+F%\Pc'xKkcܶƔl\#Ȝ|bIx[Lfz_>~0!|ot/ {GF!s^v=GB	b<A6Kas#6eNOzHe
.x>$,g=-)*THv{ve($Z&J>,x
H.
"'I> u%˶4=>xT: Jp4ιfrn1Mxa8
#:+ukp`%ve49a뿳WLI~YueU7(Q;<ڮ}5yfB[
J$j-~M	w3=Ny85J2'SvN@emh/^\ɤ*R7
}|ڃcik*^'zrĶ5(H
=LTm|?$?d㔸	"ps9.`<ٜg{:i,3)yEt"d$(/qwd- a.|n`,j;/(
X?>
!ڲ1܋t(yd{PҶ".ikv]~-ʼmˑׅp 
qSc;"r)<O=F*/b<#-'#"ңb^Ll~p ʼI)/4?ƚ]'Y;$+}UV\[tz&튔1o*u aż-}X;v	`H=i\Mĵ>A6r>eN09֑
΢5L2z[]7'o`}6É9ISu:2P*j!:4.~>%1>AaW&[D3нr8 /ʍ4;b)E
9iKӿ	%PAq^VIwnnVV2@ׂ3)lp3+"|&2iGKPdcf&Çt՚L8_eHP
J01 TY1[)KGOTlf˗+% MwV@"4U&@90w\S0bIC
Q&,<z,b"(bBP[Û5TXXLT_Af`+*dNI^br]M9}T̳,s@& ̡:@G
fWX \<.~Vk޿ PNm!|`1"bY-;י̺4GZ8fqiZzF.HŀTmջ2K1FCVAР9A4Ppi@uf|)
ň%S&L3gtxv%,_D/ܔY DOxm!6p
5yVl˔i3!X#:"{2h <Lѥl/ήSmNBJ0C
&KA-1קYi
efz< Ha0R4H\M:-
b*3kN nxl&
GGS 44MIj2g[R\N¨-i27Ȳ$S\a_h*'rnLNPS'ٶVl ih[9!&R,_OI5o)^,cTJ/5AF-"餂-yf&G%UŸOAl/<UE9o&9EaG^̏ړf5ZYpiLK85jCѴ׌D49NJo
D @Ռub0z 	yhët,o˗xgDT[,sK7҅y 0Kb2}g5QOQSxN<&!8b@%9d4HNچ0	l"ȶ#HPNE|3K5Ζ`sW:FB`0a;(װr$L:IF!<([m#YYN:Pa	<odj|eG1UdzO'Ɔ:}~ u]2bQ{hsY8GP"]0ߒa|Qz\͍ؑ`oڒgtDiTE-1^4}oOt7aR@S%n*B\¡n
U')u9RAZ'k`HCW؆#dUl+@arE[c9&uϹEv+ M1q#jlG5X7GKtwKb6v_my@aڇJ(;d'nV͉~>][Xh+n"㼨8LYb]#LLsGe&i%	o+8rDs<%ğZ+f@4SPovaML<z7S!Ļ[YZ6ˠ\y}	kolhmB˅Ya HX9\m 7S40;0V*JA`S8M2~]}p˕>KJ>!j*-gq6</GX[*!ml\6dk\:_rP!ZVRj%i8lY-s(FEɛ5x\s;^Y:r*MBդmR	Id9v@w$oW1sO0@QJbS .!̨%~Mȧل~	2qY-j_lR.LWlҕl4ϵqDq	+<-0`uSFPH,mZ
'aFCD>}Y*5,!(÷D	.;Σ
+!~|Z܅?Nj4+^$FՈ8f@<
q45Lm(
q5MtMVt"[?x2@,])a"&*kWk"zIӜVZYje#OvE&ئGF_ak]>DEI |;D,S8ݥZ[9tGT3Ne𕦩[+;8O?Ph/ӌbV1^q!΁ [,6\bKϼ5 ]w$ f1C ʁ)I|Uw6DepZ1#<AݴûtҍĜ-؉SĿJ_4Ok7RZġaU}<&f4W`GZrC9 ^Y&ӟ\B%"t!xsK{F>g0sY8PNʼISaĐgCfLļyrӣڣl#q_;,e/ж5}kj_ȯ4#?3'4
-fX[T<&'8:D!z
4o̣8ɨ©-LY7E	P=MT7V?B܅$m0mfdd-rx"4+yn5FG-W*~Sn
['5JSZ--03Qe<1!6ylJSPl\7牡QL{nC<K7@ȷzI2*RiGR2o/c.1\S;/7k6ΎPX,n٦_<e(<x-Ťx?#Q'[:OaYY+vqlPcpM;3I)=V)i+"~H;&qwUg)C'E?h	 !!8nQhRmA'jTE*X
`?&F	ER<^^e7&cKua)/=עGj>3T'0yH\I0֝uF/=e`E02%F0d9 8Vz!w,&&,?ERd(|ِ.\oD}(qsIŭێX-	T
trǐړ!TZDu8^ C`jJƏDwM@ԁgVzq.˼H<HRЖzɍ53µFAeUbE׫#x-8XBL2̦b=t\bj7Jg;O|kdXqeC8XOS<^y즽3GZӘdЕĈOPEӚ
NЅh3J1/E!paJ(e@ek-PjENau9m23r-4bDH'rBDDӡc%n#o+
"r~ǫ zAKVe0l=NR#uEeNm-0&LM# actk-_DfB8Tkg!pϢ^so[_)exb,!#*Ý8*Wނs^^
<~]ɇՌPPVImUs(je_ŻkOU<LlH9~=xxPnpwavp@scx)fw
HzNβ^Jcgy2e"U' Rtl
}(2uvpu	ITC[߆v`&''dL
pɽD!}tK4N	r
H	i17*}$V,ϵ:ěCU>leias<YiP@fUMKnX )zI*0ߜՋycfTfQ]ՁBfrD𜴛u[V9n퀡ŧ!A
gYz/
=B5	ӶS6
ғlfn!	q_LFcqy"
,?^t5X'y@/c}Mr;Hר02}c)q:b7 ) 7uE'LatnZoDLE~PX6eOհqT˝ȴ1AKg9y7Ê|GE<ts4rH
R"K9)>5`$W7+e")iԫ[oEDnlsh!z5x`p:вmx@vZgC
u#	j3
b QNy} %))4q%f`NQH i3o?@
v}Z.}%֌7QV-YHg&3Ah?(2E7T(KqUa֛1dKJ1|'1_u(j&bV;C2[t%pֈ~VO.
}Bz(ǎ#մ@F29&BD]DY"ЃB8_0
&-@B-2:#},o"C.wA\Jx%1*nLߨr'hւ_
f;cSx2?nO)zГhhZ2wD<
n|@7cH*W|ԍUh%.Y$
 SCh	 pE8
c%B:YL[s{,U̕yFk
@"Uʖl1
.
\7|ZxkƸ10S	
vA"QDZr<p1u̡eSCs]%:
{G`4UHT=eڂumbXwqPQ9EsɒA5$IHҜO2)H3 Wb4%Yxg
;L{Qƛɮ1CPe<9Z<,M$-JRǔ;	NWЎ!I(qW:yk3db 	n6*N8>hO"UAGq(6"1fሄP(w=!kIXvDgj4Bc'dhlGon LӌR*$;(jja
x,ç([	|Q$=@d{хj)TZvd+[t{t_h'xiׅf]PO=Zwswӌc5㍮.OqkOEgZQt\ M^d
T]1It7Z@?jM,4{ETPz*_42y))\^9Lampο)*:q4FUs ߲הSp׾GU%T).h 0x`Kb)foG_NW' h7bgk͆՞u'%R*Mp^Hv`iz5M@\TP/
9Yj.jhDȠn@R "!g
<*HZq?9T1ϝZikT@y`ШH%9J 0*рAǳ@QD8q^7WZAX!*|0#sV
i<,16@( |J]p7/b9	'jcG	7O
b1njy^;PF۞QcezD0pTrg]]mK?5*4
Zĸl'1%k*N	DTq m%n@=1<_Kr/n"ce.*O":-v f	0Ȥke1Ɇ
^\5PPWxcGj4,x2ݤK.<*n[P3qCOReÔs
~^J/HpP2%t,Ug'f/s^+A~A!㲈o<y=]GRVWF?%FMDy+1QnÊ%1xc!otrR\x*WfB{$]h7R;}I:92aO#HRi"CߌL'ށQD-L۲86kMd̘bvy>1R
c8WKo0i*
JۧV3?fu䓝@x灆g%XM|F(cjI{)Dnʲ,y}xF^VJřf
_/W:;k+)3Yo$'sk@f&Z&S{kGSȲܠqUJy27bwzI#۱e2]T)ǘ	E]ZItviNl+Jryo=vv]n	6&!zp$<Mn*KaYą1y6Ĥ.vNX8傩<;?	w|,&W?:'8	z{3y9-bFJ>^6=:!Aט^C}i~΢O	,&Mh`:חRO
H<P\.1J@3MJ*ePEB0%anS([KB|IB
a2c&ypa*sWe!ʥ#˩٪5lh]k{d1.v~'T߃5V+'AsJјBdh<9tq\y0g6Azxx#؛P_{l<.=ڪd*Y\[G%We!eK\Wb1x09{:%2҅,<N##THd*Mgc;\A~eFfG26g8C%svj	nNr%js}H) t`l(}Rw#Ԇ̙"j}DYavƓov3ī
CDF\HRj9yU`wK)/ýXm% "&LeՙeXѳB9j:}`;!ql'> ^#m˼فp)-{
ΐunjQd:k6T[O)q;^F4~;߷dgh jnUЃ*S$];C)YLdM5vv?j;
(׵;SZЧyc4]YTe0 'Ap볠Ǟ~"/dʗD+2Փ^ROTV5uc0~O9e|Bl7+Eedrq?v0Pi/N,)3g5dQX}&,vEXr1[*Q0f3/
?_M1Ts~3[zƷFic(p^&	;4	q Y4٣2l:
W_Te!/-(1(cਲ -fTI͘{օFp}6˂7=̒Yt5ybG]dn5_Rk2?qfl]7+"*EO OYg>*}##'+"5{	<hY	@Ǟ>fE٤]TyBCo6ad,*K.IQ<(+x9X3
G8_4i9,<R]sBN]*._
j7%fi>!Ax4rTb8ǀ*$
|2Zo*aAڤA5[wU|vIbVG*(Qɱ`h=?r!sCD6
;[_X H\qbZO,̛iQF.ŔRES"aEO A(&ntPEÌavQQU2[\h _sO1o,r"1Sl(6kP6썾/*,DgeD]F+\΅m_~0U?zw9{MDq.*)Nsk:ZPJ#c	UL3ȗw,߬{B!c!ool~ƪ7u3' >]FFg`HJJ3B߮NJ̨'SMҥ,z+wĎ*J瘸ܥ(
;aIXz
3g6VlE'f(6GV6[g(V9ª4H>.'$f=<>Y]O+`=]ɕGа]wqg6˸`W-lB= "wBﱼ(JĊ{1m^mTjdj%y%P<Ĥ(b}/1|NWrik)ѣvLu,нs.	eHH ߠ|Z]v/bcXk7:LUm`,*A&
 zفY=(9QĄXTavhq(붖aR0앮bd7MSSyEf
d؊N;o\\o>DM\G~K+<^$V:h<(g1YL
fwHQQkp%}]/hAI
H7Dw$# +U8iJ1J4~Aa<Ve{bYh&
Ugw~:K稷pe^.2!ܨ*}{)$roKw4oP)<@
9ۻ][UӌE3fqJK6˦,P'^ӭ?3xN?;UeY `j1IQ-8SPw$Z+ݹgH@:f:4̛&ZL滪¼ysbdkhHk шCz$08ֻj=BgR æ2uw6q"$(
*k3C͕Vد-$mO,Yx(;o91gz9*WyBAxf
{6b6*".nb% mrxkQ)tmScH0vL
ye'E`;M|嘄bf6~CkKJe}d@UHXKvkIU}2tou<8mf쟰ViC{]Jmߙėtf$2i|:@%xJv_'?U<@%u0pև;(b~JC8y~h(^J#9XI\ƤRDlLM6Жp.)Sdxv|S3X-f*Gv'lLҰls7[!氏2
KzTXEt$Q](hp(VoOw4ngZZdnE7't^[S㇩˦׈ޫv)vG_.akgu	4Hk8.o[T1c}<iw㫔RW-?Zq<jE%,AgߤQ|w|1#*0+aj覒h\6@Xm$3$I<~;lyݷ@1 jj
8پ܄|P&=22$?%*kSO7̶hނCɮVy	!y6_:F.^=Yc-OP(#ljIL::cX	PVcr}z iņ
=u{&"Nty7v']	ۜi0ܰQua0D3h&POQ,yN]p
Wfߝ4o26YV)v5E6	XW:m[.ʧY9MvURO ŕ,8--XEnUQNnҤHo52Muݩ_2i\9d
`.ڵ#1jH'̬g9ogN<Lơ|zUf"~1k)D㰱2(loJSɏ
#  2D]
senDwZvI&+8JדUp09F
@#P:^Cb|wЕ=TgԼZt !뗸$ӷ`߉tQM
ƹ`Lb2('f$IIln9Z(Qf1md3a$)X63me;Ք]K!ov8!rBx7yxĒ|n,}!ތ<C< .J,9(*?=i9
 n4fTei	/yɔ䞋c|30^Vd:&M4IFE)`z:=٤iAɓd#m8B<pnݼ
p}049M]@1?1`0rŝ$,D!g@ɰtlFgp>v[-V.Fc'|zɽ|pjZ=D7qEGj
	0 P%<CHQ6Ӑxfq]#G{`>\hjj`*<uw`gADըb	:֒0s3=l9۷Ecr">QE`c6^d	%f}!De'כl𗾤 1Te翪)b"Hd딠)vÊNhl|0_^z`prR@(\O xM<GMeDUb|:2-אyl8Ys8,ZH,2˃#2ybȖ3u]vlY&QŊ%
pxQLiA&v^+Z_Y*ਮ7ʹ
Uu&6-Sntzu_NsS:*#[β~r@F#9+#z/c%eC-N r;=/IrkTQzf,PK>v#'cqo0[1WS$q;
VB,ݡtIIMQ5G-^%:F0$(Y8M+gPDuݨ^:U}/Й=V:#ʟ
ȳL|"]Kތ	N^I1~x^7dY-ׂi{.kiCl"ht=}1kGnGHM(>k
HPhA.Ol3Y,1OBٿk攐|YL*
=z4"@ߴc:/
/9̋Ù-G5A(0g+7A><E
}#v|v@o#Η,s^}e|ߒ44.,8"$]^sJIX./;Q9v׌AyTS}r]|:N#2×9L"	wCl:]@qOqǉ$#}ES*AL84fῼr5|k2CbdaD45!jK5"NJ>3f\)`
xS7&hŻB҅%G~]v?
$#1ԫA	kIq蹞v1@'x_GDh|hòoQ2)H!ue#/v_y?_!iU>ONL:!IV+^*
:CȌSVHE\(z'(2lѐ{,$e=D]c`8*7xuD-"*Iem2 .&5"+
V;=[IP{*14prF ?P mڋX9#sgJ	7ɨROڲEb-@ؚ-*-\.{Q6ZXKuJ"
oW_6Yi7C./.UwbHRRJ|q.Ç22 <ф#mX,a5)2LY]$=!L7i}W2|]Nd	Z.`AwJTÙ,iPvLp״
&˫,2Dg@mkJN税.5iL/C;	NHsq3jX]IӸ{5[L@!n
yUdu7hZ1'pu8t\D0d'ag@\z&wrbTf9Fe-Y(*фWv1gJp" ]yZm<ۤ?D&Ԗv>ɀq> mY<9.Awm$ S>$}hDRoM؄Q==,닧R@9<7Y|z{)gEy&j`Ɯb'U䮥G
bbOh4J^)k38XVpk8%1Tb6c̮rqQ|@+:7tadƢcQ6ϓtƄ-\vZQ#$.Vn
%? 5jBފ?

hS"iw*ܐsg@%Uq9 c1<!P=}mPɽFe{mk^Vkz1¾O,x	|h*%|
M5GJ]¯H[MYZmJf	h)	ei9hd~ѱSKb2Y$W
|TZnᑌ9m'50'}|pLΪ]o|#Ԋs2,&`>RHg)-\
SΠItw['j#ıS5lѥZ(s܏Du1m`yh'L5-POeOdntSfQh	Fd5!}|-C%7JOY66\.U0eGY.­̝j2 rL;62łr^ٜi
t/'vЗBd]\/<Lnb<$ru=?PRTDX^I<-mS\#Ns^n	}E$JqM]GEAt{;;;ZhZ\`R)<Ka|sPO\9DKaX9b[b>[CxXCd0H N0TP67VȌ9*L5nA4,E78py\lB%_Err4rxC0yqM5b]
<ɖ5Qod:N8/1A-uXVM,	ܛ,"3,_dא}[(RQyȡLF
i|YKcA\q$	AFmcSr7;%FI~_$\3:UgS\
Wo]Ѩ_\Rb,.5.`n,2d%<a23ht<-@uop\N Q&gsyy9,y*T7B7g}P-{.{+,Nac,%%&ژ5:}K-.rgIwZt)Ì*RH B&?e@y8i%݈){_#9 -ià۳-tK\	@s+P%P/	X{=gRfce){wvxHf`~Yi',ˢL*"&_v3{%D^+^ws!29lS^bUG2j+c*"N}rx(=|rTv&rEafB%a_?c7}E9<zOdm4#6u3R4δ.ZrgAbtan
nE[(&?R	cjPTAq8TkR|>؞,gAa5%P/Øzw3x*U
ƍ J4ϑTCցnEKd`Y4|G{0SL&a,j')_[*1"jHsM[
ӔWbiwi(3&i,MVJrg(ޛQd)W|S[	*P+z)uӒz&#GHEDo\@.G0UdRz5v&=BPn|C^:h<BY1X =00Փo:SQ6t654q2i 9Ln[/9$IwRGDQJGrp&Uk]wnE*ّ$^Pz[>cq`#7x(IPqJ0lhQLa*N	(igXS5}t='Fy
-3&}aCG5`dX(DbcB	\ȳ|?JgY!!lt_@-xЀm*CJE?S6	P9M=PQhNͦ|N4&pzL?"`%GmrOU'Gъq& *fx[*Cc[Ie3ADq
a4_7ªT5Q^7U1) {.C̥WX
Њ=@:K68䦝<WR`3uSAf`l
,&6mZR<,)wbĪƏt[̑!KoB'0A?3ޫO\L&=|M:gčriK'F Q~G\1"7gVuN6ީZ(7坉:'¡o,0vX'4K1BCY`9oy=0A:hYSr"meR&/-q_^t$"c.M$/;ZI"vD{S쭖h
<W!?ۼ_\y"Ӗ%"qzpЗj;K
p
c2D
3%DegXO?-%1(AǝXafZ[Yy8/)LhnEa(~I@3w|7b-mYcEyyW1)~-,gCTyC%8evEV6>%Ldn֣fSP3hUkD
Z扡bRpKFf9;-´'Өn׬cCG1y>/e(OK_a&눦2&(IdhUTWS'3CkU"pnL)`c }tUAg8!n	}ZWG .xf'K(nw$};QDoHSDTv#==SPѽZR e "F,|rCvXe#ӓ& &X4k͗Š`=cZҺe.f%e߇0Sy~}2;-_3:_]4i;2tVX6s6Dv	e`JJ#lw
9dU:*Ӷ GGѵ<gGgĐlv,LW;TކWZt:U:sMB-ggy_Z-ٟ6Ĝdt_Yhim6G7.KI2HuCNhalKQ5'8VE0" Tqҹe:&`4(G5N"z}ȡx=AqBoR8ݻgb^`u3{˱Z`A
qS.紜v~@1rx`8("3֥Gj~*#(	Jk{%%Xr bC}1(Yzrʛ)crLy{avރ'۵_JSwG4L;&c/ܗ͇DF^[e#OqV[ yqx&ĖwDj˼ϙnQVZd4-ʿ q eXL6FUZ_yz#
&z 6ZQۻ&<ArD6q.qHz('|kF;+?Z.P\OWOnlY*\1uں-is$HJcDnMQ8Q<ƞTK=hb6L\$&>ƭu1qzT#>ejp'OfYɅ9|sjᐬ7ӊ:ѠsvnD3/VEm{l\f:rHb&ev#x/
o!"}P	~#jggS8bMu<RFÎcLD\ǰQ8cdQ1:5hO˄B0/EW%80ol32iGW7aYw"SI_ًh&i5a}8Top`aR:G~2-TeL72	Ǩy+l䜗l2kp#uY#&n-nւtq3
~2;3)oz`q6l%jcؒq
F7>5ב
1o{B-\.<w5P8$tslFEEXHyE'N?XVb:H :q^/pH`.ˋ#4>#)?K$-9bil
jNݱeL:
Cd,tKHIr(?, H8_F`&sMjrz(TA/߈F%`
݈" 4M=4e+{Bc\QCen!DLuڊJß2ڰW0#	Im+
!j#ƛ
0c"
9[: ̓wA劘
۵p"`reSdWP"xgΰѳx=G|:ԛz۩y^M+f~leڋQɻ`[L3J2;d䎪A\:j؍~Xq&.5%`CNYexG3w;0Wl3_ճSFag^y;&T²OoĜksHBO3z2ߋ,8CH\=r5_;}Rht r؝j5|@0h{UOj3w7i-%<-On%
q(n#}?!iAM1<liHzh>#خ+p
kѼ4ᣐxC/93aBr0_;]-|ThF#[4Cv}*yQ)L
EF>j<T.P!
di~H<qYQ3fFOŶjDÙ/(/e$^Ѵ/dG:51,Q3#pHQntP`&&Qm:bM0δ22nN7M K*ǭfZi(|wcz7`)_qWNh2>shA>=.P6KV
|mYxdK;A]
(\ˎ1E$Ft>2<tB-ۑ*ll]z{.722iȀJ9#eY sw­J=)(s)KտTMGj#68d`WEWUd[ulO˭MT=ΪpMg&dBt4ϟZ{B:V|43F={1&CVjyF!Xj׀O`鶽\E[ a|L
c3F2MI<ЩC
9qdtxN6q
5 쵈USχsL75`P5F.R8D!T)
:MPز:oK!c=}wyE1E'RVr_nG̵.EP\BWb B<Ř*U雘QQ!Vo'0!J)s,+&M>`P`(N"	̐#*k7A'K=5bAn@>Dɍ:z
z1
ވ΃*sH`e]`wABP,i
J,б.ET&S!=8޸FgO<3mQ隫q)/nO^>c&ًɢȏɷâ'[AֲɆ=7FJnKό6X"Yvˍ¦W=T/GFJYRd!ª(!Sl\N<G
'3[&w, !^#@J-፝jdQy
Wj.qy'"{/1SkE& u<<Aw:#H.j%7ɁkM
fwpml
H\|ܛ&q-&IK$yTb@VuUanSBJ3HؔꦥcqnHSՏkXl9#0萐-=|86182RmXt!59wYoZ'IP?̩+&g(;Ȋ:P;"ç=)b¹_ym `<|'(nz:Eф =-E1ufIȒT"z]n"X$e5,HW>u8_V<&.]#
 ܡ*9ƕ$!)'c؆o%R;c?<WiH/c҅(;%	v0MP}}ᝌT?+Q׷[Q=Yg/8%8smƭk5WɮEfq򤙀pzͤhR2f,<Ɵ"1Wǘ\?X6/E)!	BVu@{K"`<~ɳ8[:E#ENr B޹MrzW!0W2#ֈhh$;=5̍0k^>'`(!tJ/w_ȺC;0bSTީ%y..L]nȍ1_bUYŏF\N^KBmYʋ
bǣ'ʣf6:	1'LC#
(*U"D(y:~1UPDE4u25;w8[3Wr5d zB=yyAǽb0,>եO];`al*K,M>)O6Fq🢘ؔNEѰ%hNfK^=H4@3G@+n@e!Lob\&NX1x׉~QhȺafQae=-GcgǅucC2QP.yPHE"@c2VDly6ˆ+F㊫*Ayi	qn$
g,Щ_S&#Z2iMx/HA8`-Xe("
'LZORk00_lT9.(K +`f(D; #u&n`H0}n}ȃ7w r* )#BB;!zaviսlz	YOhKz	rVKj9{s0`h<LƫѰ\$K^Nrt&į,&	:³[85iF[m]9Zg.q]D/?04rR
wMSWnXC/
W.ҷ+#S,$ )Q:@A l
crLJBѰidL]pDݣv}8ͣQ0->*!iw`z;"K(aW
G27-ᎥrMg~R	Dxù3E)'U&&oQ|RmKy	BBCHsHSiC!$ƌ%vgۍqɶdNܣivôòxf_-!OȥrQ>Pe3{^NQC^MǺ$oDg8'&K`F5Y-Մ]0PР.P%
vlC[|i@b_+#tZa EgJN_scu_:&ХV6G9EO9YpEI%p$S	U;Re!`e^4z$2@oxR`C-xW,Ϳի%,跂:'7p5O|7nCn@yr"|GB^\2{@vtEGGg^	?*-`2d&"RF氍5ݜ`:ˎBųh2ľܭ ]D'捣FI+;޿#Ŷ؀A&*T^Pfoc8r`V`{$|r2e+NN?lwp9
'^H1W4hՐK6yāL@u!@"-cZ`Um37&B]dA"F8
9KuU]/LE]hSt`GuYI14x
{NDLue#
>^]<tRBQ^d!gU(mW@'Ѵ1_ՁSag
nSCČ|	QGmq{]B4KyIʊp^tte"wFkXԎh0pWW%Z`L$.>8Wby;7֦b
' &H	n"
+Bb̦p5wYzcbYIbrf^L&d2cWH@5K̲$yP1/8+
72PB+RA,;b'w/8@=λBe	Ȩy+r!8e Pf&F܎%2Rtrv@:-U _68
H5a<J4_	;hyw0eH+WU0 +a R[)_HXrpLEԖѱ_{|f&#H>)+}K_\NU܉oOEIx6e0MR<@ee3ckMzGQd'm2
X/Ig	TBOWE8<nMkƖf4{h/J#6l
}2&I$[:>rTYzȓB.H4l5lRSP5N9ݏz)H
YL
ho5t2z
~ ǔKAt
|Ǵ/j;K_Degh؁dS^o4 :2x!44??ѥa

냋٪~"OX7L޾HiOq$[fbeqi(7kGVWU;luخ<gt<{brl`t,G &OoܩL
V.&k`vKlVNϪ.2LЄ<?n`
=̓%eW40V)حZ>E
a|K0!J[2_ݢ7*ߎ㪆\ʋO颉FeD>NbJ貣O'2@K|/1I+Jo|'<bV̽.L
ىs"c6	kŖeZlMۢy:n䨑"+K#X|)k*jh,#}=עLƼ	Wy(s/&JN+\FMheoLLZqL#'S&sxÅd/Nd]"Kñ@9>0
~:uфuPu_PnΞ5 !U:nQ:EE?dEwS&K&<Jf/9q;\Z$E$R172uWoe {[]yineZ"hݜBvjSCΓ
yg7}4B7`]TpsL+[/eʏL^4vL*hP>)Lڈc+tdVȚen6S>k:||Z.-%A{F61b1Jxg
-p5lr盂$rg%VcvR``
MuS(""i{*|b!JbBFGT
DGJyaPK:1l9!mrLo4:9&YېsbIŷEڮf$s%-lT 9^d'wS4<
+C<ߟ9XwʳI>Mx>Ԇ:˰GX7SxPdYK*N7C˺Lh+l}c2hZs`w<>rd AbymB,F·f׬k"'
zFJ0iy`LhG
i:\SXg.x6{񄠿R#_ؕC^[dx
>
׃Q{	'osaQ5õ5,uəsx y%ΐ7Ny4WfR]L`m%:uF4i<QE(qC3 .&벛ym{FJWCm~I>ܼeZ[@έm)hȃr0~⮃1t˄W"n=o +,[ۗU	X[7?wJ;$eiIaΞ1rAƶS;e ÏҴ}|ԉh0%5j*.tOj!"~@
'391+b|PH	1&'͍g8uAYL?%C@>SkWm*\F_g :dIy1;j(1ǵ)0&ľRfYiP<!Ym^d<>ْ,`tld`8mX@$e)H)|˙
M$|8
ZRt0,8QHV38qvTo_yv3M;Z+@
gN<H	}sRDK1dJaTH!vM缋-(ЫmO'!#&YF6IE$xKźЬ+`ɷtWBA[9&Ӱ;r|'A.h_B44k=.=ZdXlΖxW|[,Pko؍d>3Ep}zﯞeyQo 10u>,6zCsfwׄmy5RcFE6jk4좃nR+~uDڗ3͓:mto:+WmXREcsNM^4$2&l|ڊVa,D@
+μ洡q-,U50<~/f!M"[E5!$ HA`,%bN]E;<	8恲q%toJ-V5áܢ9 duLtx
f<3U6և}S"LhƓ<91i@KZ<Yu6g"~!%r5@6HĨ'W)x>^qĚxJ$9DxxB)r:LKL96Cލ{9*hJ,YZҚ/>-ɣ.( t4.܀FVaxEb6
ېȡUFL hF~Nx
:h˗pF$\EX
DT[)4/gY$naξ&)ɔJ4s	5|M!r*He\"ΑXAHB!¼	b2 
~o}[/{A,	IY=-ZA}5[80hk-@Jzg')ӢɇPh
0_gFЌ,\ 	U.6GGy5g֙N\N*Є
+)4:NR`c!,'[%,PqPTrMǉ5C5,L%< w\9$FTb6Ge<أ,fY8&
m>XfMY[mz˩񼘛^1
`3C#_Hk Q>5Za+m[K@$uJxR&<]\y7|	6``t_gsS.c;f0
΍ZҠIL^Iq6ԏ]2tr63WWp"e24+ά>C1TΓMEQp| /<I*;>0Hyw'*mqOoګ

dGޙd{_%4
R9<s	b\tA'9ZҌ"fjT=w4Rݬ5YPؚܶsLD:G,cn
n(kXBbV3)N2WV1$+2|5ޣ;avR2M?v
<|@'x{N
[ZA;|1 |MC{^ؠgȰdEԢ `\ЉÄYҗ ͣ{@	\asT-vd{tgd]"YENVG&6;`3>41E
R
0%}v`%bYl	0;m0TJ)g(wsl\7fqf6n1QaGxM:h,gĥ)""%[[H4;!8-8	;P<SFZG%gL%PgtUVV<PиE!9'f;~[ @+
|6>_.FߥrYl	VV^FF
O@	>nr
ʟצ!~i,`>JlF[/SPz2?_6KrG]V{Y9)̡&MCdߜn2-A|2	vQyCFE%nۡy_]^˼VH}+e`j+L^.q
~)d<I+gcsL0EBsؙ%f~TXL)j-ZZȀKqFU]a=&..[	Q_1YW<3\mF1cp7㾾=S\~xLC5H4x1"3$2qٲ\..i#RkΑ!Iށ2I&!Ά#zz?sMyhP%3J}o&]c0	x 0#*p^Dl
Gu3+*B8ē<	1,jdk9[=9"hE\\;4[6MdX,?"k&XDXRqwYFUb>Kt^Jg1xE=Έ_ѐto͇اћxݱ7@+tf]A߾)r5
$:y,wl0,,vuS,mXt%12"זɆLJ{ʃ~3V˂x2㣡=FQY
,|)b6q8Ҿ[nr><$tPV}Ԁ4y<y;r<o7*&3t <jgy)dȘ9 hl=ɼaDh&	n=LC)lYN7!B콉hM4NrTbHۈbEMW">ұ@wkuQ=cձ怪<2U+d B
aro|9U%$Rr{~#n.D)RX+6/ϲ[oKlsdEJCی%C87ub,v~uޥ*"G.dRbCb`Feh^ŦLŔͤ;ƽ<\kkGG6OL$D2gg2	8PVc0ТGnAHY-B\K><p7	2{a
U%14]JySTț߫Ph0nWDx&N*[=¢2`N!ŉ@<0W!ȳX=$pGƖ7S\lG$g;\so≘$mj]	Q윊ϓ#H(J.FD|P5z+SU_ptȋv6__嘽yBuVe侙ޑ=7gzU>DOj{*;;wy[j\uzOHPxvrR4-
t:@hȌ0A ԙ)]ƪ` 4Og'Y4أ?ʌa'=yt,Bէh˞ر-/9#Z
Dٖ|8Vc{s_i BΆ{Jwd:EA` Ԣc-*=fڙ, K%Tnz13Oۤ{r'=K3wQz{8 VAiyp:g%j'~OM"
oƓIHa;tUy@0)&5EӱJ<1Hԇp{fy~F䛦Vwa[XS4)YW(!mKs/f	1xy&%	oAf4
eivr'fv_҃ei& %8 u#k4H$Jx%ot:&C|1Y~DŇd1nL;Z9ɪ~Ga 2_p7GtFvHC9Ш<oY', ZL3;UhےT2-X~rHnLӇx.V9Mdqn6#oKeUdGnr\6HD^X'R4CqҖgS'4*QE9b8("
5sg2=)!\4'iM|Id<Aj6'DM8k@+ǏT9vK
S NAis^;D9ROЂxLbPAIa%%TgmTG@#(3ͣcaSD]pFr_sncGHV	P_xTE 1WXO_ެV.G+ 6=UaUI
7N';epbe4,@Ad浰@J?z^AZR҇1i˯Ru±;Ze*m"$iZIL`c4~MvJ.;bAюpi\"1޸cwAOc|Riido +UuZƆV]xz@dCyUج
D))v`̖n+S>c5E^I5
nk2ȟ)/`m&oc&P[&(JH"+!@y HgDR=vHpN	&ϼjsᡜlH9(qPi[0Odw0`&EnJK˯ǻn-doˈC+E߻XY:4%xAٸX[C0}]bh6r.:.YhT!b#
kVM֋5]YF
6io3?sǝl39;%5tkLb좬 #}}8tYb5@FffMFyac~i7In=GpT32X 
:/GwH+Pn.\sorNfaU	Dʶ5qPdH]`¡QJ
V@$\[xZ{>q`Ep|5MR6MZa|!}͗F'YʸGЉL^v~#;WK|)RA9|ɲ`Ozhk'IcDfbo\L|?YQ/j0tР}zv6R<hi=rlTN"Cd	{afl%b}X5g!?K1W-pUٶr"riD/UKd^h٤0EK_KK*zƼ1Wf=v9 {j`1Lc	xt
eM69^TX<ֿɈ	@`8ɺXx\A4L)fg╠WSoYî0L4#M.{HdTjMayG6	Ar+5.-VG aH7 2?~M{XJN?CG\.Q4hl:<Ċq_rP̐bUbBߋ~){+@:ԊnpBS{22jCMV\&q
/b̸m8klL=;Ű#K{g&7C?pB::\lO_L*RzHP)
?cbO=rfܱj#0}3|w/IV6! ,ǞK Gc%.Lȅk(|[,³wJicѫnB*9QdBؗVʗ/N1ߴ@vD23
;|UDE?pd-Q})}XF8̚=:&*hwE>I):Ri['3]nX$
Z¸sp0SPAۼ h1rtsX:4)#ހxfk˔X.DqLHP61
Ū,C@Y
0Vֱ0@$\6cOcJZDT8;$Jz}\JW ++pd 7w&p 9-ϞlOOθPVGVÿ^;3bQ:-#HHD+Ld㠊Z^:1dh}-b_d|5eY`18$%\Gח[duͲU	sfÍP
CA"&PNツ2-I+8m_lm+HYl)l"?)w$^G
0^|=9O.|L
O
v3ܤ:w/Zgq,?%y#5]'mC'Ca0**nXX@ Ttvc&g `dBE5&ܰ<`ʘ`/ꔅ&1?L/<y1cYܷ͋씈qSom	̸hpn^bS3>3Ϣ~Gڧթ(-P*hTd udב{7F>6'@7AHדiwmXLxeT[K`)X5r彻ǈ_M`7|[:41 G~'j7fזR\]|\FN֐tѴa#lU@h%2jW"8Biۻy~IywyYLxsqE*M{\9l!9pnEa>?+{b1Hk
ޒ>S|07ݞ,,D\A}Xf</4BF@1j6k!ߊp3gYHT(v-1+"8!Tޚ64<YJ pp[s`#7˭[i8 G0d" u-E*\뙍>]Gf-[bdG\Ɽ>dӀOZ<EK
b4{4I@C{ $c}95-3xi|-ua؝Zn/n1x%1Q6s)4S:&~5L,JPBJ嫙4R%94d}o]Emt2ٜ<{q	LAa͙|n3؀xAP+XDt=nu^R^)F!IdBKZ.F*G"σ3l#iHrUkP \F"kbhXH>w9p"2'xeZ>0s)z(XȖbڶPKnV5~Em4l>Ғj@;F`#$du㯩߼W̙E?l
	O1!I=oq$	,;Y9!űٹbq)>>[Gﳉx)Z6e]8=^_(6@,`bO
XT\T}JR2hZ8b&2ߦvH8y+-Pކ']^	ߏ!\@4E}~a6;ChH0c!LըÃT:
\}dzENũ&~|LVJ8!
%3@#Xܩ*4:3؁-lmDa[sjm8^-F]8ɚ
f݆$[T2b=Ϩ&Q8Ir5G!W=VY:}R`)RB1D˗',Nui ۷1>m	L#+]
aF;ava=[qcƒf*H^᜸ݓetfz^i
#g5ѹC5Cqt}%Ό:Pb
l DC\(bg,%Lו94!QDʹq	4ǎ|O$Rj6,  1Xnt^pcnețI? Y<TlVF-[vt@EKΨte@&
M<HKSJDAMˊ^+vR9Ʊ=sd
^ϞINE	pvC#:Sh~IZμ33:$Fώl`uƶAA`C_dy-_Jpǋ`G*Ä<^8!qxOWKlHB 8D/l6.Ѷ73i5[-ۃd:,qxjdsynݮ+.01|RWXq̨d4xG8ݙ
uu\,2O6{Yʧ'%p:LRZ9\>|@HI]J
`uWȮ"J4MnnSl6фƬDs
H1IL	/̹ס@t;0qFrr`]n
ͬ,-8y7Gw7-c!zup $J;Ot0sLlSUSϋnt*T跭f`2#,R=FCȂ#:^;|ȘsYJV\-_sLFI#Scȫ(lH@%VR6ϝFRc".׵ѻPy5hҋG $-0VKse5LɟI͒QE1p]uK|#tQ3Vъ.)$
9,d4~eåuɊ])_FU+YUQ1O5أQ1rsWwXg	ܫ%N؋*^
ٔ%!Io̯Э
~TfODA.瑠zZֈrz_JEw˫
u5UW[YYacFX-g!!˸3@DESQw(ֹӑ%O4@ek>z.D^FSABCSq
L)Y):Àj2X8
yF1>ty]X>UJeQV݇/Pwqh̚})@aYU&E
RViDAFt/i 4ՏkѾRˤ^L	y
$e,C%Ѭ+`S:/~d:H
<~
?Dy1L6 *2=|}A@(Տru%YI 6lU<gJ{7-»Za8x<=j&g޼xGrKoyaoaAú\R5@)^cdB^Rax>vE֩s6?XWa! -'$ٿ<ΥD4&qa	rW"URk@d*nZ9$
s)ědJQO;^[xoG3p֩mʧϓ0X1v#cD
&{E:wV!esgfIV^ʺs	p^T୤lD)IuӉ7{8*ͭJeeP|I8+IH6lWCQ3SdN.qGEbvf7N麞4 $LYP]ʕ0Y_>TDkt&.R	X((]GS z1PeW{0-F9ǲ/!bL
f ~
9/ PGH8Z,ðIS=|>̦f=@49
^Ӊ|3"k
/4
tV1gZC!"FuG$?ciy`C3+""
?}&d</8;VhaLHzt$Гw$)aq,g*Mm(.C栊@·7z?դ.(kw1dTphy>+f$^F8b3 oDSaLeGn0TnqZ}Xįk̬
qh]eDSHzYP̱VZi4nsYcT~{PuκIPodn01g6_T{bW֪6"*{N	8yrfX)Dz;V|SIdxͳ!gI1h0n:ªp(.ΨO{}DgT2gjKL5N\nqL,)$
I,ܛ3sP Q۸W?MSCYZ2`}.nRW|;W7~ӤwہMX&(TN'E2DrcB]ۈp̟
FSsWq-tAfJuR^IL(0yW>	ySK G4I
CmfFk=<QPQ"5rF$r2JAyU 5WU8@'0峣QMQeRʰxzGa.ц%r``']X!	OBos#/91p,[
&h@]QeƄUEGhՏ, D*]n->7	<q,3Ɖuńl<?BN!%SIF9Xm;y%RiSrc,qNɣ-kpf(12-I :PNkQ'31 TM2#$]CPZRaغEGՕd	gQbHF9qaio/Nx2@1(A!&# fTiUrI~^3SLlz~3l9ؕXpB^ZbO5]6
mÞWƖ3\)p{lqrGo0WBBHg)-i:@dA{02H׺V5ҹ&,3Y1SEK	R7cD
Y:F
fY	1g2>$8+ejX;å7r".1l|:)(SK6I޴`g3!5 =ᨠJ"5c1ae71'1S[ĖU[|Gd;.A0+TByZZE8}ٰok:m$L/;Krv괮*HCt'݈TlGy&Ns.z<+a 8ڻvAGȐiAZe1:*S_\,gqYgNգYr^%~쁭2vEM㳕\)}Fan4^#"W
Tɫu{"J(|2
9浠6R rؑhv[ZH%/~[R&#A~:vgyiOhUdƿ'BG'#}bN	4 ZkWtsgjyūΠS➕J$m!50F2TVt͏ ȓS(RDLg{3#ou-)m
)DAd­W ~w`s*YM
tJ.3P~"IEl,AʁjBFxVjOXYÏtrvSd8v:˕mŜX(6 uir$@9XIv2zNA 4̕/"9"-^HS*KBNVZo,>WNyMl PXp,Jʥ<!Z
Fdq:0nC^)Ue«M%9YU:Ƈ\a
-&]2 68ttG
<?1RlVHh4	KAf-g1	bZTD #uҎc1ORO-po
,@Σx\L2=1*$h P):y7Ꝅ.bݣ|zT~Zxh<@	 l(CA|D85np՘SY$ғ|dXryt Lx&R߯(Ѵo̧r'n:x	*" ?p
A2GZ)LW%/LQ튥~PDЋPo bBBf.2*i'`h49x/(9VXi1=8\BB`1|4\Z0R?vO?]ieđ@Iebzq{J tj}> !f%ӌtx^Nb^ꮑM|f^vM(9\{
mL?وŒ4Xx7i0N;d׼EIsTL[-9mЖJex4q;iz"y0m
nj1ITt4$oQ}MAuY)¯^^,X˲>b6kOn_Y8&Xܯ}ÜlAzd{{m/_e34'̱|*2z+6r;j0~L ?O)j@yM6tܤ
T_R-wmfޟQ`Rh-ÖKb;aZd.WTSh0Ƭzҧd!pg+jX$
m	N
kU0\Ck=F>0ޑŲKywz1֖F&L
$UeJ.AӒ#ZB\ק_e-ћ`zJV`za**NQZ*v+ռ!cK@v#N#t|
L`>"}Zo
sň!d ugC_,>3a4pg=2ce={5KTuf5Q<kFmJLۦ-R#dB}|*lS D:W*WrAhN~WI<Z?ʆJx0ݔd%NZG-=ETd7?Ig^`0K
Vv, ;&0fq˷nFޢ)0iXtT-*&ݛICn"C2 r	ApBXjIRǄ
RJd{<V̚]7;PKx|F]F`ڐ<>T%ŷ-CֵP:T[̖]h,TLJZ
eђs={63(KzXiv5}.aQiVFEdd$(XáHĉA~ПK$tf=ɭy6 
}]fՆF@L,v& |-	2FYMPl̪17vs84$"5)V"}%[}%A SxNŔWpCk0E]`o[i-lf~\~!7@ )oS&%&'N&r0KOX'&d%rRbg0$P	R*}8/_Gw#2v@_)o2qiύ5|ŋ	*SW`{Ex;dP;p3Zi
HE*8ShJVyF"!u֬zҰcp?26hw{l_*Xdc#P0=D9ލd-Uk"v<pÌD>,ZN13Jhv}UPh5Ўy{d5!X~DLvcFuLTvκțdp@q-S"4RlafAH)A@UpR	D*1dvt^988@ԥ7 kVDUΠl[D)mX,Ϝ- Nz]2 uכF^Vd%;I$<h^oTPt+C wXBi#/6'>saC՛=gS fvF~w+pDx^d>܊\{w6$d]%A0zZ+:G7A#)|uمcF17ni-ڛX
4X,@S\}MQ	uٛ !P*#H*N%Q{"UmRmr\J&Z.eda3@m,-Go}a£Olk/v++ĂiÌqi$x8)ڈ2ڰ
t'3I׺v4xN%8(+
ʱ{M
T2qFE$<ߎjJۛ NJjvVuK3svI[1{LOZE.2\QM0ǒ"r4p/9҇weIWNģ[,-fdgY|o<M9773$:J_J+aeX$e>H0*P凲o6r"Tluq=¤`[U]t`Ja2ĥ$p	&QВ H[G`)~=
UN`!`^BWZ4N˼}ܘ?`*h5kL*SiR<b}pYH/ˡi](.4ȻފzVMNn+$lo[D^m`Pp/kba|
af/lf(7;0X@PrXɒn㷱#Rk4
B	u7``ёuу,Aս	U+~`8B'PM6<m?YS\ƕ>0E	+J^r4VH8דi~0z9@%8mZ$;5I!>U3DD}+7=V3cu<dzf-h^U)Lh
Ue5l(C:jtow#
U3kmp5~aZkL_FnbS_}55wIo.-*"	
ޓCETi:ɿ}ΉreK-g\[g#4bTEȎki,vف\Hl361wTh6ŰRj,Wl+^x9(@*ǚCGS; Չ6|BT^mf͂x8[+JX`/e,K5Kr KdBe7sEE+ƅ q3-ދX4GԤNƟLRIƃUU'fXYB{Ju;@*y؃##+M$3MD݋jqV 	aE\Pc@%YBiU9mz4ǭ!Ak˱<MdxoM)oBleK>SU?ԀPgǝ۰"L-3i׋x\0#ˎ
2.##P l41D!搃.zK,v+h˵+
i&IʮuXu@
q2iܹ:0ivv9ؙ/-v	8Jtyqta:֠!)G?o4Oo<$jCH^l;O?gzCivdec݊|(kϿP	ķbl5~ƭ&/]VgRH,u-P/[-V> {t+%BfӤ׻6m<t%ңۘW{ S`5m֩E
bUx&׶oNN+1Ue<o#Ycd*د
qE]|hG12
t?ZtmJPp4]5zT͋~E	:yH"/+9\|caPNk*v uq$E
vLZnxebw6k+e	j\ORsH}yu6zRc@)cʩ;xIlb2lKxD>[Ef=EiH'{,[ZQRC>M ^:wBJ3Et9XC6L2.u5H@Q)*GU#_Gg&w7S7f蹏&b'LΐA*TNa輍sHqȃL-pYe9xǕZJS do;݈O/&(4HhP}ϴc>46ΔF.X6QI{Vjrj?X7.v"t6? Ic:H#(ژ6̖)QV$#4*M<
XTr72ŔCӒE]es6ıတ&9,7|GH!|FH<E.lUthEgOAq)r7HaL0dgE#pgAZ@[誊eD-Rs0@cmvEڊpFU$r_	Y. `3K0Kbc>-U`6ɰIy	#5t6pK3SȺ~
-1Lq[0/Hp_+ PԞB3>hDuB}=ɚ\R61ȫdQ>mVc~G%@o:捧=mZGe$`BYWpHø*Q`Gmi1)FbQ|+3x6錪ӸfBҶ4/B8XdY
y%(QYk+*;Y$dWMp5zK.frR44o"J_>7HnXux=gၘ-"P1E[	d}ȲCuUN|φVD%yVH%$>zV[3ueݻoAD=*K}*WM챥qS*US#6lUl+-`&^w՚m02>p#K#?v/c86ܔ^RD~$PJؼ	k.S>Phi&z%4*	IpT;/hѧtFE*("Nſxa5^'#Hœl13o[8`;dl[B1)W@'	)G麊uNLzԤIԑ5\4JBI R]JwE-_-YۻR7oOy8ˡDnBMо6̳s~72b!fRr&nf`{ȇ>JD[zJEw&<^'@F*t۞f}4q%kJo}p4l_Guy%GNXZ߳Sg0WXWCNa/OK-q8Sёe&QPcK:\Vth%;A%QF_/XVB/!"̞T	
ʍ^KPFOeuȐ? &0iF`Sh!ዑ±8( (O ':Dۢ^F)OY
PV˰au6lϞ^e.{퀹:=fM@&}ܠWveQKz%6ՈI
Lv	r
8d}0@PFibY\=E
[g}ԧ
HT1wlÁT+yT&hOGz$Pj"eN׌}<"XC<аD̀FTިa5ѡ"cuL#;"HTɌH˦:P<@O<o[$.T?V42"-Mǎ1k=x.{M;Q|sKARŬ kP/J\uHc /҃<Pl`T<+&3L
%'~Lӿ3:'QX%t^&aE|b:w_B*e+~Sϼ_E,R<ŔTAO;<дJ<9J	MbyC<)Q*ʤ.KC"!n$ǞVO;
Яyx^wtxi8!oo	M.'||Mˆ^aE|<rgN,*,E6%Ef* P	L1coۊX7BtJqWIiijoԭE&be*z@KqI`~9yxaF+p$%"#X<lj[	J':3gJfHG=Wj<o6뤌)Oi<{
OqKF,
u]kynNc.I:[XuQ1%BI4Tdy}M_cºkhZ0QCHrDtWOtm_ώ8+r!Jpbk	_#f;z洎q`wB"j3Ȓt;Xquid?1V
m>hL')"D4|h=x
#-ÉDkэ1Qtp|	:\	U;nyz)NCSnZ z@49X;wm~{W;4Պl.zH{Q{;G
R&HYv1| 6`+	 }dB=蕃qqȟ3y6#8`*U-V#L6	,ghN;=;1 QX!?@#+\FwJon`BXRGڽ{+`r\P+^\ۑx{NI &ff!ms{j$XBZL.\;
Hax2*?:FgtEO1uxw`^N.>ք8--&م27pd
磡zLLh]4GdZ il5iQQ*#|܂k
e BkСFOMh+CVP':vm<cZmk;I!T,(_		H=uaұ҃o8*,mmH=6ߔ!hL/ENԋ2D@OF;Œ&|%&sKb$=*Mk(G9ёjW6+H*	+|Ƴ!x).:79?$UlfSd 4!T:2b؈lJ~YR1mᘩfҍP3l%ϑ"4QIyE3˨hoMf5+N6sVxZQ0Zw H 4	CGO/<<|e8FXa[bn06vRA0I9IWdb]"
acD<NY<ya\\Bzыem+D%ri
ڪT_Sin+o3]$(S-|8vu*-*X<'yشI/
H8|Pmi<"4|х=na!Rm=Aq<	؁DfkMcX"A?ǪYDDZA\	XV78=VKX_W
*8 Lzh^S!]"O3z>9UPM`#.`P(D	k@VICqL`I@!xꈚ$Ve)YMls-v(Dm
K+F%>ބo 4=ж3x0A}5ldSMS6&65_3[79Dn`/L5tcHg(Ϗx/jfE!yf*CC=lB/㋌zA/8yH}..>*sÎUHRl2ĤcL$(z%4B&UZyIτi	}lF?GСJ\[+UQt~S`'CȃiQJ~_%}%Y&E 0/ނlWAQ0J4.>q;xޢ/+P<p*5kH&NV(|rmT*ˣXpK6!o"<@R _zβ3PlnO9#R#r9X쉲hRwqӰeUeJ:.{}aVƱ^JqҺv=-t[18H
~w,Jxx^ #Ißg/0(6OS}@*+HLuz*7lKTP-|%π*dDұ##I,Ʌpb &J1zɉ=n]d=c\@äh9x/B0[6Y-|.#xpGrBLUȩ'B R>zØT੷@ޚZ/<y(okjMӵ5VPN_xF=R6J-C32`΍\"IWE:zF:,WWD0xV7$Ws
O[lQl)o]"ݴGF/Cf:@^eZLR>w6!TRW4ōIb! DG̛5Սҩц5ОgMb	h.0Oecr=g-@B激 "0ڵn-!!lk@/X;b v;z&0 ,Ar&*LZ]2 T
Wo9*2B|ԍK7f/tuAMKI(  5XQA]ƽMF,#}dai6zLQN
DVǣ<fJ1^"zrYى
C&3Zo)[W#/zɭim\$d)qc0hY
/jGmhc99R1
%:iZ4w|R(GIeE;yqp]&7ʥxEMnKi:aQWBw,svԼp'`-U*
AKF3#uDԑa8	P#Q3č/&뀈V_

k\ˡ;~)RX3`HIzfhdG" ҈r=T Y<؅Hj5=Ug^!ܲ f_!pHIC,ɮyۆuLИ821O c]66$XVu6u 4*մ=`"/4:w2yzcKu`mk|bQE#"H}bRZLJWSR&BSV	5'W3n>}vУ$T@qd{g+^?v(yåp/uxNҥ.Zai4 D>p,Qr/#02Wkcb,,j&&3>\g

 .'i?ad~Ô$Xpbk%a΋B 1s0[&1y	0IOԫ6`
 =MʂΈ'DC|T: <H*]^@*r.t,>,c*'כm6W`tDeS:Z!6y#AɈQ"zM,"ZFF˸_'Y=!bQ?+☬T:>rТrp8V6ME	< rLLcLDvkAڏSщQ<UXw7hL좃L]*$hBqMfRmT
ŸUHulj&wj̰riF"
On`9|=V~>`ej8&~]$>ڻwP,^K*D*L<xu=bYMH7ŮFyFޱ
X(٠N޻[V6\댋TwxCWttm`d Z_BN!Tj
rV/g0Mm$NEr@URIéXCqM@F1
{taYӤ#a
!KŔvqH'K̫gש5VؖL6P65c`|S~At !لvNPɗ]/ϱHfw)Rߙ'4JgE= [/`ǟ<HzZ)9:OB/N 	4t5b6 .%#ʵyo%k¿&Rx=U1>-8q{M\I,le2_\T`]%ڙTK&	n_ĥKi=K⛅9|؇WQiv~*>3J0MIuhBce@8VkXfc\unC]EJV2^#9u#BLB17=jI%g6M6Tg(FoD6S}6(6-c&:dfdRl @\x_D
GY)C,QٿljO4eQ1()E[>#r?h
U2IHB*ZXxӞLE
G ,74&ێX׽?xI;@汴ףQh1@^8
f{haLbs&[^Á*S쬻,>c-ƚުv&@u?aqߗ] aS}sr
uRUV,c}Ѹ}Q9]	?+d5nt$.^7q0&)QMI$5*KAy	J}F%yRԒn͕ߜ1J_7qh؂vPweuVxl^Y]hM}[ZJvA*A$ nKd@M,vKiʡ V6eF[d:8ayMrTk
QY50 &EY(4/G?yEy(}$<,Bleg݅xY:tײ4vN&Nse7y*Orp$Z Kd71LvjT	Tr"p	EőU~]D+q:9װ eKr8VSR
.4.{itΆxx*^KIx"hڑQ #Fd2&%NIsi&R
w?_z)	]@8\+4 dzD! b밙nWz'^6־i"HS6 B60ya|ʙllwTZT
QD(|*K_'~6	v-ǶRkaT`E0~%њ>e|.-J15H/

Ճ*rHI6A:9`\17X"CmMs\,Xe-bUh;$ʊ}&X[r8N0&{A+oq;sj@QM
xEGTE х䩙u}sT?76AIelJi(7dM>HiSlws$b^Of4+o7 |˛`9 ٣x~NkCE^	\zF`"Ǌb_sD6D4$E>1aRaj@{	V@&eg+HJ
<pr9/"xffFR'x7e%D(9.(vAC_At%BhBS`܃}den\
߄dPrLh% 0<̊l>,ve^H66GX&i~KK MJATRd\פ	:	YsA=I'm!biH^3Ӛ4,H?kta4{OV<SzIh'q^@H -wiB7!l 1,bh$T2ߒj7-j k_(L	
((iaj|[Ŀlo~kxN42f$=k$jDx31d֢#ʃQAi{֩zUP
R}ZV	Oy
Oj+$̂^@l*`>.\
U{;WH;eЙ#^唧: |L Xՠּiw\[pV%24	x<i\z1G>qӹņSn<f&w臚(as^keD;&hY'F
;-5$sNJdJ^;^U-g"M2;zp̃nYb()Qy! a/r``f:˖x`,а^%:?6~!g'MeX϶j_) 5avɲApvˬ&)fsBBQ$Ί+5{!:1G#, n&/|ޛ谯fao1U!.^׆5lQmbil\SĆfUy۸W1*G\	):`nM6W`f	^W]w63zlJa;S35PG`y{xLnރ*O,aKw$N*'IV2|!X,[^psKN"H1Gufx'|#(>5Z3r'TAYU'#G9ܰ50I^.%LBV^
<t֪CIb)\<B7+vÄU mgE%$LULLg}(lӚ*YuJԤ$q!^EeQ>-`K$	!؝/QN\챢lxZw"7]U"uJX)ſQl~/R$g3RʸZ:CTz@=q9=Xd-Bwe2bDnBhfeȦ;EGQ]YLM	Vb{f+HZdB$֫$FwdD$Q(ɟQ+A:&*`jQID	| LPσ+5K%QP	$Q.d:}Dnay|`y/	pkA}yVӟ zzH_[7JBE(	خua8D ]I]B"\E;@g^n?-[1Hz)%
VN[@;ێvqm0.s5@d~i$ί=5zxi!*6-Ki$[a"~dxK/#7sxa\<`&F~Tǵ;,(gqXN$q<
ᣐ(^`y9#M͘fOl#A#
aw\Og/gv]|e6U?ޥB?g|D(ѱrǸn:èr'ؾpaBA d	9:M]ЭX'}H &ĪGC]R&rkqT}5IMֺxAۦy/ -%W8&ǽbV9bU䌦}5tEzb1
KClPa|fM!)8|ת82rډY6 :a{sMDίK!5޸N
Es dcc>o*QEZEI^S-@cuʼbR[md
UQ :nGPR,~T&(xub. Qه=<aMk=.JXQ*KE
omXyK<u}YqIy N.P;̵<b,'p*zRp]StBm
H=>4ޗp+$I뺄x(?ePR5~_5[`9&F$Sk$AG)pELIihOnt>(KGʻzKH4'姊ʼ*=fܬ,N|d2q:S=9#t#5 l؋cԹj&̮oPsZP=fX4GfQMxT"1CNE>RYtGyNPb" =u9$JuXk\|Fy ], Z[tǑ5D{MToEˀ֋IdT:uy`%߬*ޛy'a^|ByDfc(c),8l	Z\uiI3PNeȤhXǔ/edfٳ&>jU+J77O5VTTdH4-S,d2ZTPyI{$<n|zȎy:a*J	3/ޑK`Cpӫjfl!ZW̫#Ĭ8ҕԍpR
U1!qk
~!ll*&ȫ-k~v"L&P頊
R"b
"P</q+Q:L6*
K$޳FNCgx3j uUe_bFAidi.ߌʽ&rc. ׇ6w̓Ar@7l/o`Ve*ylAC4y^A{RrS{k-x4x)LLP9ϻXe1ADC8x,TbOz,x7kZVC0a]!)g@2kUaۤ*IQ`CRyEp"Un?`ԪDv3X
.H(D۠
-D"ZO
癨=SreOe61$\6K*peZ$\Ɇ⳶4L3an}j~DZr&ҩMc..[f-IAt&X&}p'$RSdLv_X}~i+Z&T0 vH31œ>{"G7Cz:C2;pDA-sn
HX̜F@ sOT`ZIs'9/٠k%	8kiƬ]e!LAZ=#ă
zfIjȶ|=WM@/`׏u&zcsl/OZp2i +y'15ؔ~И9[4b
"Gğ[)LiJBñs$i¯: ;T~$g*PLG|BkR_
	6)b>I2iT4DvtV^MfiT \S	4qO܎Hɦ?݁܁M+:	$"COBj1Tg,؝ik]hGP=	ӷ>L}SwJhH,e&iRvbs#(pthiMٌq:PɊOC+0`+&Epêtæ(Hs|d|j ~S:H9H,׼ѳp[ܤyy
\RY3BXk捻i/ ;0].ܢ\a0Gc`Z +mzq
`IY#kdil+QU#pp	q/cX+<\Xc8$cvRB}vD5rK #9T-AfKT09nr 
}1Sbs<ei|IٸI	ղ
2
CY3,/ @N/2
,y!àM5^"F:d59ҬXKJEbVrdܪHJ(t>T^@SٍtV_vD&Fȼyi/qDeo'~iHUaJ*VWP祝K
fhaa~ͭBQ:Æ?<K:Tؾ5;Ot;[wdp$؊ +m5_钘 /z2sU:8\lB j`>3Ml
E̬WX!uf UiF`;'m\7 b,B"1PpLJ=s#tץV	a$%%9v3[WZPUUݑirbg!Ѳ#6qP*qÂ78[TIp]
Ah@$oe2<E	uPV^/ .-%foydqBӐ߄ڳQ>q<}:/P- sx7OB+Dκ:<FJYUzI;;/I^aYt+#Jۭ8/UL~Ev
X/oS_&ˢ%~-Ǎ{f;.2_qgćcƪOxޱ,~1,;şx	jQ5BͦBF4(!dil	vC!9+T|	@Cw]`JٍVqZzloLA#h/vEBV㱥<!pM*A;)VѪe8Enݖ-O}KQk6Q~Sj9/NU}?2c^zEj7dT "e.|O.h$+*SA{5WeR^u}Nss+!AP7փvg@3Q'nwfO|ؤ<a9kXO@.5مj=5ďxgOsNͬ
_0?fRJ6@lT'f4ˍ	\Vwrz
Rף+}Rl*wYEE0dRjlrdSDv~eJFW%IQbD:_'/RZXP_39{$G\5\rtl{Ds@}u~^Y^4!<&mrVXE	_@rV8׳G5=װ.;Ϫ4m)ShMV=uEᜟVns.
,Y``l^ɐ%g'ٷJBdloNۼ` `"S}̜&nu[τM|>Cc$MD-2icT+GPRTp刼VZm/LѬY=kp%Tl- y"K80N_~9.{hpăejwk, IЌ+Q>̥Z1}fn7{z)k:\:;"&euޝzǁ0a.\vE꒺߆jt'%AAcV
kӜy4hƤO"/8=YRhRl%4N0O0O:F΢5L\7SL\bv9(*
=,fvܗz	8/G)𒇙BZ&~7acG4q9QV}C8J!~4ə4p4#MD.,Y R3nPR5Nt.gQvThE7,*K:o
gcl	SR'WрGMqH8<LUh?>;OfDEl;F>hݖ 畗zȎs;b=iM̠㢚#froTyY¿n͂R?X(<y0< Z)RlSN#y<⎂h$9*v;دy\2aJLׁ
ʔ9l,Aj/Rqw7Hg):hVu0bw5S;b#JȮfXbJt̘Y&_
b'D5V么<pJR^6]4^w`M)4:#x7xw"MFE@plBT<ӷU4pn/ʠWxci{2ut]W{(%:pF'6xCJȬx۷By;Bկ9ԚrުpKtG X4u\;l`\ cH-~~fM햚*"\4H,L܎]:T4*	( |\|2)s&#yVb~WFPKnkt*l2r_*m}f<͆\
P9]}1NiT<gQZY_X4Q5/ҊCv+jR8FdLiW=/"x"^)̭wm."kw 	~8IBɟ!pj;.ՁoUCxH%;DfŖ id(ʛ5Mޔw>,͖xD)vQ
i}@W]FUʨp"āI$W!X»]VX/^LF@e 	,,Y?3\6za(֙_) PJkZI6b u.䆙_.r
;yǴm#f(zH^z$4zˉ

Jf,g?Д-Ξ1#"Ȅ %:3BMy2Wjc$6GA1	j9=kP\VDVtr
o
&
~8^
v%8si<Ecu*جwtC "AꈶW
D%.o~]œ?jwF17(8-n57riK{X6P<)(Z"F9׿HCV^Mw$WxEwLnCAGm>s:y/1Z|Qz-1_LI!{$$.M3Ba7r@^?r2 C+
.2k4V=m1W{ FQ+dX1͠a?z=+I;2
wJ?wg/2at!PGdy$	;ԉ(j7B; \`2*^-Ebtv'*3|nfyG1Ay/M(u,:G\/4 ]>SN9M3Ct{*SHl;;nDW=5>!r$d(KlyhMA"0EgU;D.jWiȴ~ӝ:Hir7u=V:xѲ:r:E?+oYZNm֮&}uD a@r^J݄5Dt-x`һP@
αtqA=K,;Oe5Ja^l3fD&68_(/
k/aQen6(qdHC1v9 Yģd+:^,MT<+-\Cn!>NbI`Ix7[:vpOa;jlhт 2jsϮ15A>ݦY}Rm9.f% <{-<	iA$a%4:e:pf}`po6:t]ljꜚ]K2
n4#q`/jݘsy+*Jޓn:k~QƑ guAD XTk&孛s;ނ& ,fܠUtҷcي.MHu*(G/c7
&5<\,%J>4%ߜ,(c%t-Ӥ#LgQ;^D38e >?_4鈀m
Jr̺DД|:DƄb򽀝$CEZtr/pk
$I,V0M1T.mIY

W޺4Ed}˿<HP@'A(F.غ\3Lpn_V:ዕe=8FKu\-7Y0l(M~-={Yfym(EEE,BҚN.Z<(,4/z6,U1`:ݳJmH[䡿۴1O*0
X%6a&[ad]n;<!EN8 UGVxny
(7!.%T/,fHU:ߋeRM$?¢-st:3·ֿ
tT
__uuAY?v36Q[-G
2dG8iM
,A5H>)GFYHg|wQChSefrN z*;*Q<eSq֥ҹz2DOwUtOt)hbFDuZEC:<H"j,jlQkVG(ʯA*$ˁFoYnw&bRр[>Ɯ_~`oET7tk>>j*/&lfn@Lo&,3l_-(QM5C춙#lOB+Dg"zA{~G. :r~ʶ`
Îb\O"t ڶx*IN%}3,RK@VЀ6%OQQBW5Lڝ^+aQvT@^i%cCĊ~%6ި.8TOx%Dv{&]8",@iv+cGX87RryS$au<Č<^ri]<agNO ,F~@L.Ae+9om 4
S⢂ '-m
BXYK;-I*zu? ݙb,_R'E8qTIU'032JtH預hWte<뱇GME,$#:)
4G:6ټv߫k N% 4*>H$kOV{'%ShCFי/b{zdNْUWcѓGk_\|	j!?P@jVzZ<{=::6F
xUxx
ȀCW!,2Nwk
SۉLNvvR
%JV۝2¤Ibx6OEt6/calS};e+T~b{#"z%4rIĎmHxXU*}rڬ
+AsqLZ	7^@Q_t"R]vTД+9ʩ#<+,r
'|Lz3eA~*.#ZP@ö{xOԶ*uE/-]Y}W 7By2;˖E:بJyʸ㽐h +V+$A;]CJ]1-6)fz:b<5J 46P-^xĻLz	U%[s)9&{bC(Ve0\%S
S3Ay'n>wZvOl5Y6}5䃚gum0eb"Z1{Ԕz̻;@#֑4'bc[j@Y x&MksM_6y>̍Ve@$%_Hۀf>{%^&DphFhFSPϷW'i<l%+}91Vʉd]bS=jn*r&mձFZt
Amy2wL *$q4a}`E$	HD6<;
nEsx:pΛ-7B[|N|`bRڂY\FIR ~ɴ@+E~N l1[P(7{:ߍ_eSϑuTXH/){AZVe8`cCTUG9n(2<W&ƍ˻3om<%6XQqXrtvLsĮV{kBl+L}Ԡ 7R\6"4҃G>~CU[CzG
wsVNY/хhk('256ԙfNVe7*S2
(f`^Ƽ_ y2#%
È{-~CVCj2Yx.VGN`8z(j|Bxo2LS62J)7$ИMTT}?|Ff';OcHD-z}T!UCwd͹kK$HM$E=;[)ڡ +r>kQ?z
l*%q{s>8,	*"<ǯ >tΪwZ`V
1s,RZ7r=WDy/䢌(.m:rD+-Q*LЉüضsHz[]*QGRZ*WRz Ai"dOYHf5eVGD:+%qL.˥%xZ r0Dpd0fe
-ۧ*W%&L79lRw \{ 沍hk5Њh^4=hGP\FQ-g3)\Ǿ6IsgMxS#WJQ5l
AeƗӣ/^uTlNVp@(X{)Ec}L\ђ3j/x7lW`t tMG1%}NE(^*?DVBGY%bAXzF^|)7BDvͫ]#)Q"`zjr[MS2GS)\=W[ V6Dΐ]aõ2Z/9śVeލ'? ʮ<(fKHOD Md2ղ:P01aJ9f5aٔ7dj WqO 0{X)6c
6EN1.|R.ɢ1 GJ6։$:oGOz \yBg65u3[ti
}^ZY4A}
")}9F%ϣ^crDk}Dp[alurI	0]4nȃilsX@t`Sǌ&̹UzYb=$ƹ*-	Bz	@2DZ8+Pg[$xqdi CÊ<eJX Oq]my_Xۖ-bCP?gY՘V>n2({[ zܲ]3F| Od8̘ZQuFD 5^"XьbsmphWym +6RU]$F&[4VV-bE'' S]|GmpE"d4L/$+!q+Zfr`q=2D
]st
3YWE.=o[_W6@&St(7L>qu0$b+Nq4xWWn9rx4(u?:ai3ƺʋ2%&vHmD5DOABiBaa
ȃ֓\8@0&I$mgw5$(:l~И;Et,r6DUD+
@7o_XmBaĐjj_zJL,&PH=ɟ4Q5hg'5/EPuLhLE++,<_N`4rƽ)]ا[iB
m]
ۄv(UOʛޞ»Is`ikR{
Z=[_Z6ΖԲI*7~^죇z??ysE4e JRi.0r$ͬvI^Л	ɄVhrdG#bpՉ\H 2V1 uX(Rz3`;[#kDxsW5=GĜ_-R}xXD3F%9MT
fPw1<ۚ:k8RQD+y"
m+Xx́T4P,^DJjE^k)!D>19
QmG	z.KdaN)P5EK-Pr_r\ᛘ'-õ7YpAݖqQ4%zqk߁r؃R.GRN+l(I:!ޞ۳rهqgf*A)9?Ӷ7m$Or3ZrH2<9	hUQ.7$
WTOUoVajBtEtz>o[$%sc]iGՙ+FoY[\Cگʛ]f`	=ATnA\fߐV7tbWN#Q )VYТ
|TNK&P Hgi0ZJXW7-a]6wIqzy&-9$ 3ͧs%a.#E6!Gфo}/ZiQ],evHOO֩RhZ	uYGgR_"EEgZOa-hU%,pw5n(:lͲ^#/x	ך_@e,s+WI	2%9?!zDT3E>CW` tzz=6jKJ
0r2,^<g^ZUiBS)+0K ra0VlTP;3ڱBVUDUlMx<y\saqШex+k$,
6}G6
p[ĳȹc^JZ">+ԩ])I@Zlplf_Ϡxod֓V 
*!?ۤE\}f҈AN [ӄskۻ G_aI.;$ $iWf	?c2Lb̀MRbJ_\u+	DsJqUxPh̣||/S|7nN}ZÆS|)T)F *Ae0T=1IoN8_ulhފAoMm;ePv<czU{9jEabBP'UVǰBRQ_<r
"K|RPFQVbOcj*::mW-6!
=oj<*NnFN4PܜrrUTC*UtD:`
~!/%/`#!r<I}5t LKcn2K"E!*8O +D&.Ȃ MHڐf	#jg
jdņ 45U AP6
I
&_PT"\ă,> F)qcC,u(<=#3'f6Tɾ$ps␺=oك{Slz,tLY#¬xm
CGK
$jN"E;bO2df<=i8@az*gN#ұF把.˪&$k`"C@Y(
TySR~
˚`f(G4T
LR>dg -KA5|uJӭmD<e,ܓ/;F?N.3;FUԭXyaqk훉'\um><
o˅H#]BGsM?HXm=p1*ֹ@r-ICFxf/lM
"8QO&ƃ-l3%z7!-s2a[t5pIAlվP퉦8"VA3.II(&& <ZĴYDdC*$;-j"?J=iuVhNӛHă:
l#H*SNESFR\9/31򩸭ߴְ*
 2"5F0/֡fi8Ql7haTcL:8`CD^"ƃu<&E[I,DV7Kf7pDX H9W]4WV~&EX
&~$eSKG3Ŵ8p:Ɍqx{qw @#\:tS?iC.ācdZ 8$3GVL:d+&EDlS7kI5GP(h19e/ҩtq3gTc'PE0X@\
LSj{_rab<=>}0Y/֔hu8Ba >;Va<0р!}N^_d̨T)pbXnb辅Q֭4.{A5|Hz$EtDőr4mT`YZ&yK#mT,~1V0"B	8.Z/N{ȼznh4җ0ŞD_ 3CyKxR
udg̘aG-yF4d4dN1H>ȑyR QZ4]]vi{pBɶJʬ$t^(g*X*jRi.am:40qkbG(½Dߞ-n
nc?Ѫv*c'*".(o7+tP,&Kf|Pxef35s	U+3@[WT$M"0.<h{?
	`U3=l۵p-3d@W-h'f"N|]ak_LRju
q7pfYxY wVNR*E e4n.sD/#6){V:ֳ#;QIyFvRRާ bOUzp2TaؘN΁4e;Nh'iQX
&q^yx:5Ɏ-koJSy^c5Fu^gD2qb0E'[8~Gǲdh<&*[pǕg(P4^TEa*<0S$X$3W Ԃ`O&ƖhT| `"?<B. 95ZFՠDг3&Ʊ <~fvv&U󥋿:{Q?bU8R[V !RKTc;"Q 1g0G2[X!kC+\/%; e)Ԛ1,T F
1 rm8iȭ
<NLv[|&)#sӴ~`epf͌Rժht/dG{:kFU	:B[<D-%u\PL{s3:g2J38Tiem
P;%Zfx2eb|X#ry쒭3[)qJQ{]03B֬ۀ	^)sx8y<B)SɛY6z̋t R6),Ņ=@60f$~4M-0)sz	4  /;4!~JPaT^*Ϊ\3[&.;r/<ܦ\󺁈.b5ϡjޢHW$z+"rk`_Kmn[#C3=:w9ْ^.>ngB ͤZeS
{dΌn)I} 87y"?qH!.$!^/{PǞ 
̢=10({DO8GXJfoU(9qk^h ^U`_P
:w Ap<;ףP
A>Urli'f 5)ʔM`Tp\M樽ZX8`qe~$t&׶XWleXf\h6)AhpW8k2Qmd\oP)!i9ˌFia[<QR
x,*n"H**\y/|ԅ䐌eGK	4X"C8ɬ~24G"'E1Ӽo^ '
3ЁPWàjԷyz%{ΌKNBkxiP|muH+U't(P`.@$N(G[#$&?Iq^oWfPp\u=j4&3ze \fBswF^7hacoZ?1H[:YM<LIsxH"`9=~jVUc<yr":ا4(δT9KRHkV|LꜝII`tɊltg"_|*K_D'Dj7U2!3EQ e7#Њe*ݡL R({`QDq"+-CalXx+}S|duQG«=Hs}D
-oYE/ef9
+48'BM,r
P';&Z*ɖAQƉzIPp;fq<c/K>pz6
pr;6%.t%	x\@#7ص]V82&4ۘ(w΁8.^
fáZ2΂C匀B@MU3
th~oӲ2n&z\d?
Ɔ
ެFvz6ǞKj[0A7

˯p'& DbS#ŞS=.pMDLcH:vBuE&6-C{<=*zk=Rku*
A^uQ_"hǲn/k
@VS[6
%Xa[Tz
15Op	+#hWxu;ȠLGZYu`X+1	o?mmiTXkrG
ڋYZ %=-D[ni'b6hd~*1UJ@<?;+7Dk2ZU,u^Q_#@e7P=MVU	H,>ob{+DkIdy%s]rG-׹oy!-|p22m- QW= Ehǂ&@uey=spM24Kk5z7ɝޱcyixPB5j3Za&F#YVW hd=iK<{쬉~ÝR4
fgYQr>_9Y=@u+	F:}KA,G0h*Hh:q<PDMAWŋx"[[4qf*lBҝdAIjd~+UA z՟U\1u3zYC#yuA{YQpidfS(w+ JV HVĴ=cZ+P	UDbfq(DYկ4@B?l.w'%6va߃ĊPU2::ߞX.H{tv	*7L0Q*cM7$+LD1U7n\S_&%!{{'!3
cuhv;X#3y[m^Dqaa'_X%a,w:PVr5Goto*њAO7H4eOf^$#/ TGNrMU[6nz})HٛaŃY^)I3N3Wfr3U1$eQ^Uv.&/B50H,AJƨ$5Dd<,*j.Fm>#đ(b̺I>2>BHf5A@ӆVa
ΥS
2dtEʘv,:n"zl<`b݅r^5s67WEUeaڽM'R{hÙ[uGS"{!gt޾$H&s/{v
BXB ]ީl)9<l&/GnfʝY;MLCʫ S@99#
%CezPDT\N>HA)Ģ/4є~q	!3wPGbi֊Bj`!7گ6ٕj{=T@,}ú2hw&C'!.BC$m!lnҴo!$B\w̲T[Y
n9Zē9h#D)"#hX	*EV-Ŋu8>`&0a*zWkRj4~q"n[7M -	+T:ы( Mp;: AWl 5x'^4/[b닜U b,^0Xȅd_8^#
%vmě6jE{kO$R$yO"*5 y6&U!Dȩa: 
B`Ľ5F'YAEbU)\$Iüsbo,3n
z)VAxk
Gdc,Fv磂/`I^#G͢/S35il=dgN^S Νb/
Ao锸LvJ#7`kp		u&:]na/zS1HE ]sfg{+Γ+^{V)h0}5ؒ2(R~HhCf⪨|1('DJ.Lٰ@;ȣ>񤋵3zM0
t:cUP%@4>dwۢ9! 
Hdp+P ϤIdYU=;~-X>(ݶGUę(I΢1GHH!yY
JyU߽t2u0![f5@6/{i!G>觨2髵&ZS߀x!I묻Ad}}_pQ#l9XW-C@%To'Ut 0c8Oy"aR:TU/)D ِ梉/S\c傘Uu^_Tx՝CFueRo<a	`Zd_U-tP+7UgVzɣ8ζ@NH"Uԋ/1-8u\`Ì!z~[d's;\W׿wegLdy]V0;!Y6XDm6sGŋ,dˣfS;DJIdQw*Z~
@dF$UmwB1H`Njeֈm5R~T!ذ')wC02_oSR,y`
fgH`}%}idzj0
L0Dkg]]c~#66
s`B(t[]!N2YuXtYq4|5{1uf9HT'jw3RUVKlPn}Myt&PWZ%0d;hE4od9"tNu
|K|
d >Fy ˌow,\J[
\I[T1"t7o`iT:tbWZXTD. )	|kCcX9XGwa	h'	/n)DE$:TAUh25!D9H6{eܤ^:j_G%rhUS1Eog}J1u`ۺW%HG1LetW@DCH> 5fС_*-`P!?FZ|b)*dɥE9z];%TRf2G=2}ޤk
nUMv_{0^)iXǳZ|,EP%P/i+V!~?(R1(I/x/w\wZ|7d\*rihjX~&
	/`sX/.)Iץ0Wv7CH
8}>R@
sCp%	4|}z=T(o!y&lu^@ѦH>Ip,UD]~ J^@d󠲃;[ @{<PzeMc&$"FLh[.
{*DU]>q rV[6m<2mE ![7
ykY*+THAHEP۹*J_Xb*\p1|n*U	գ9։Ս٨-\th`ePd@AK2\L%,E҂BaC%M0X\ơz|?MDx!i}Wl2Ub6/vlZ$OeM fz$ůل+[N2Pg)%JA~7̹W8hI._0M>qһ@/Ops9Ќ1Ŭ/uZ/Ƃs9_^|Y$<F[8ֲڦ584 &L'5;bHu JQp)&	q4
iĎ:8`=]^$\/7q+QyL0\{=V-cFEؓ3qdhf9*1A$G߁nkPp%Z
.;V751yUB\v*V]5I6bqX9e6Bd8v̬ ܁Ǭ`	S
G;RiB%3zq\+66H.s
iSirD+(#t8@EPO9vzXзPZABP}^r(*#:sՅ
(LDJ3lE\P=CLm24E'm@\Q]{l)Ԛ'얤aڨDxմ͏`&+4LN.Tn`	|Pl;Ҽ1!q=<N""w(F0ÊJd8{D΅?ësQO޺*y#8Knl2&N
/REL&BBv>.?NUkDB},dF1)KhO`p [qZ
^GMAaD	&%xG40,ЎP.AFT:/%UEɑX:ߩC9+^|6
[-d*8-gz}|Ӣa?86_{A՘i8ܬd*UFZ9IY`ArdX
bj<r4ܝ
õr,
`@h~Y^hJdxD/"aҿȀUWѐLDbcVF	Hǰ=$TFm}QG.jC\I,Ѱ|^xYݝ^Uǩ;?Cݙ.fQ	OL񪋺yI f{>̾%߇-±5Ŵ	RS)Fgގ(
(YZ<z0)j$%/y"В&PXf
ԃr2N7-a'}mb-q#JDUe+] ŃlHʽ#lBN$
Udߦ.zyx:&3"͊N"G3H)ŋE  v6뤚[5;`Nދ} TFК^?̦4$ju=CiŀvQLD
[oV
IDx*?,:oڿ@^ᛨH#n	!_L|[1hlLZ)ΈqVm#~
҄Ow mOB)gZbv1c=8	n]&+\v

dYw2yRnb	2QAJ
<$+ȝ`L"^+_a]f%>'|CX$M7s{Ȏ
=ÿ7MzҿJhq}M =4m·H+xvnS2ыOvf-*)-0b$<DGf9<?mRn۹ģZYQ<N0w̿IF`l.jyx W|&wd9dQY*FHo$êPId	r[Zy^CRQ&E2#Kq{RFPgU
Vɛ;^	E r{Gd=@[	KJ̐F2v048l3AC={'CJ:oiV-: YY7jb]F]vАg[ٓ/H[3`Wã䈋ΪK'攫nWC#lbQDZ
2y%2-y^rkSbx2k%@?/%b6n!'V\1g0;,c=첓soU(݌},zzÛ+;?uM
~sI%b
ײ&ZL%e~ж;A{Ojc@dVv6AV9=zm4W>hU_|u$zO6BC{<p]0ҎI]$Y%I:l𢉷Md=Txt8A"C&J/|KPRǫ2Ar
udEOQC@pD)gC5"vQVOħQy8 vCvg7~[Ef3N9#H*&
 ~9z~#6uu2r=z|aD;x*+R,U8؋6{4Uz{_dzg;
ibbT944G>)z8~M|t`+)%ZZ1]<1k~8|d6O{HAۦ|D;Xܤ9?" ;0ݢYk
:>>A|Rs0$K|m^9<'Y[ݧ6<Ù/	\=p,-|L56?DN}8.>
D{L&Bb[hwR3in:0`{騏, Uh-ir`UH!QP֟N \ry1с.wEWXGhrHg	gmlq%h9Z_p%Q|&82oo@T ,kj,)=(cq^\Ձ*+ac<5⌘6^T::L+	QAU@w&B2g~lglOuP TXV&\5f&PU]e$v"tRS8{ؒSdsDcDghql
ƾIɤQ|(]:i"va WsۡWݤcZDqF(y=xJÙ|015D
R5'9$1,~3ìYonօ\\n[`ldR5-7eY>_(\0:	y]~O\	S2&Bt G<T~шJp\@ c/y'j'dW2 ~RgP±;Q WyHx<Fޭ[j/dW>8mLRiy:)*r[r*OGw>Y%07BD*`ꩊP㤓^Hǅ6ҷaIJW4DgNuB[C&|7P4Ftb9Th
Xdf.5]^g,IQ:@`XֆaS3!zyR6ud_
"ݪ~hckDi93zCf64d=q_sb-&bP&6b,RCF91lR$&
% 1Q)<Џa
zGXyؠ{`ZMޙX_G0< #Iq7Vz2|Lx@9\M'if``u`[!ʣ8ޑM&VR+Ɓ
>=>=-r2KMLM 0<s2d2fxj3/,n'x2)~**̈́p4V*02axM$	~a؇hmovUe:՘~IYU8rUXٮd^_ѩ6lZB\+]4~	Sc83-2e'[CbA$F2_Bol7X!5.Hu	
Bz(% EpePfl@{~LҚ;:N@J62 X]yH"'*M\.#u[aˌ BBǎyω}Nsxj=x
Q
eD,ғ P(yljYVU&xd<̙IO!W
\ -Gz	Xvg>8?\HՅ_hKŹN"|
MtIHݱhgxO:+
t"lO|ÿħd$ZTU}f8=yQq@S(+nAҖsg8:2S݈ϝRs_ˮCkb:/B/N]I&g:6KަV 'q੉bPd캖FeaaPWq
y[YLnZ JR
>*>Q27
-p{G}a~~OP<
;

@ЂPmx{4l8RO?a 1YNΐ8`#
{oE5Ԏ
Qjڈ.ͥ<]X8*ZW:":g5\$!}p9OG 
UC@?7p-mJVt/oXH2|{՗qu!բPVJX╌-̝l=}^<-x;UVꐇj
hyAܭǑy{
anTzWZeWݬl#Tck[b3VPj)E!jỰLgEϯB¾r̐ޑ'#]<B\?Ap
R+(vW75[=&~2-WhFFHaobߊ%k*@	8Relܾbz3=tGЦ-^Ui$A
Wq -줓/+l^b{),U8d6Kp|	¥SL>Dq.pأj0`iD@xTM5@119o`U{6JA%	'Ancotb6$<@v
y$ܲ&EQ8a3˩OB;6dhck<v4Z
Ȯl*,ys
;*[SMsJE< rö`+	N瑷ca)C9J!ΘL`jD9#z(	J$7|iI9DfJEєKKSNՁLB^u*J,]h#J*Py/
p=JܪC\W
<޽yވ)C4l<g`J\dтe>cP.
n@ڰM.UFILGW(&l`Hx2AA+tE=FG3tmw$[O&Yxl"YCh2>N#NOZbz ]HV`!dBW뇮CW,'ȗCbRxJ㩑%tDiȔ X*sa&Вb<A?3!BO(aսb]*"	ߞx	:S8*xU*nk̨}`5dֵme^Xlw|ٛ X :ޅJ޲?<Z.
J{H}jx[_;6s_F 
z 8*`KP۴v,Y"mJȟQ+TW;Nnt%J1iqx*"K]v1Ib?+h'!bxo6dfhfN%VʊޒT^Z}_<j!*SKN"'#|:W$ wLfQ	󑚌վ#څl1=IxPL\g ʰy$I(OMTGEc=oJ WKy }qmYW>Y,R*Ց?Yas͜ 6]<8v,V'!Ⱥňl޺nKuǊjs6IڷG/j22bOS6z3i|C,eqF,h b#+h:+<!	ìVsE1;>Cd~\X'6q$>(9c	-/& N%Q,2C<
%ڨ	@U9J@.⻀pX$x=.;N&b3(z=CkJSIc	K\ˡ膳&s
8LXډ,~kĠXv@2@n3|@
WL>#JI ҥ ,l}&"x[ի{`<~æC8-dl~[\%W^*TBu, M[)|}r%A&=ޚVΥeOMƞxLԩt49VWx#\
|+ܭl!ӊ#M %%ٵd
aYLB>2) ꭣj3ãGTr_PA]Jh#كj`H_ʲ­ɸ4pf'6?TݣX،^QɢpqRnΛ{m .΍$1X.6>)X`+Q7Q
92;àTaJVCD&h|FBy.VqG C3cw/A.K^VrU`|*c}K4 ΄P"ɴs`5|cNdVh6x.|b{taYwJTn
Q6>U⮂&}XCʦȺ&J
k UXsf+Hr~8LޥYK8%n1@feK<M;`]n")2[f4&,ChU<q$9čZ4
y|>"FB^$M7?ۀp)Ų77A)5Z`tER|w(gc!+(ZHC|,YEGڰ!qhl)M+[ 
KY0;a29+	EtnJlg1$"aŋSBVFƧV)!7"=5kE cV9Ieo%HV9/@&\kSl1K`pɽQc 𼝇?RtjdA9,eӉĔU!*Xo4ح4lႻ)L|mݨxG	%V3xev,3'~}[r;7RUǁmVʀm3N!{d%@U#P CM0$
"V{z8@ !"aEieرCLJktq9j F޹MP) PIՐN2;XmcyhE{F,2mw×+9jɡ,jߓYͧPPE·n)>jK>=O;Nx?Cgl
pVmNԆ/IɆEX
g,V5NRaZ,	퓪d7ӪUI|YX3(VK۸iśK0♒"NBT'oSoc_N`Y3~`!)Qۇ{lO䜟
dMݍpf-1]#(2~&K<)pV5DH"6	IH]	<r!̐$;}caS`xsrqK͑PEhaw .9+B	1;L*C';=&
[IdOn&5(%Ex2כ1;+]ޒ:q@^lL>y,3NsU };^ *$:=?o+6&^R67N~IU{-;E
wB͞~_ɇ;ECbR
. pZD)Hx'Jkh(3|Bߦ>[E5OT-8krvU:ibK,TK%_ݙ5v{܃bP@_gFC_ԕ	SU6dphvyTߐL<ʇ-0iߕ0PI?JF4]>+P*o2&%T9O3] U&UeolraXuH3}UE*66QɢRLJcpc
[JcRp`nkZ!bQ]G2pWm2S	ar[j  @	/9U|&+H7%HL?ǎ=TAE!*aev	:> oa*<
ȷUBQ!^ڙk9%:JZp&8wn
oz܈}ddn^8@.ܦ-%
nd!b.NLDgRy>tNXe"%$.bur5% gC53#gT Hc<In	%jߡ~WRVfX]'d*1~vTkd|h0w$.x?	:0E`QFw`L烝0'*	
5e/6i"kK=*}fvbs:K
Vxվ-q,`fXy(VT˵*$nMهjOL׫uM@eMZα|)Na^	W%X}jKX##' wq~FH4Z↼7ū8^b3!KU㪇;Xb`15K-JƕHnlwjcqV7rbDvS2N
гf?S:P32ލMjpٙDy/׫%^*2iQTz]x 'Bd2ھx4\KbW~BdMĭ`<(z-a	hXp 8D(xCA#oMBu^gU 冒"A@#u?)P1T9tJ7}`G38dg|xB.}*Ίc&JB$eO^"d@tdz`r1byR
^:/╮	Q MKͼ{Zy(e	32*2:9R*m.Ͱq,2(ʞG'|t0xiN"F
^/bM3ޢ#4WR:U< OO"b@,|3eٷYM1^YA6T˺JsYĤ7W26籭mCUg`~adȢ՛wiB)ɣCMV93*lU,l
yEOދw߁&86 v8g:	(XGF40k\6z,k zɦ9y={5B9xQT]@ܬqڭhА㯂8B_K vbdD|2 ~&(ӰJE|ntp]om+
Id&wkN:VjWaځE
5 *3MI
ޓPw|\-t~z5k\ ӕwbZC'?&\IY?H`U^h{z܉ځ*v
PVODG.j}rR;.<ͿM>{AN\qȍLW9Gxv	VT+|X2q" ҘdOqXH i!:ͨW~ФmEQ*Vl GET,s{b0}jK4^LK7
0}cM:hT3T؇QҤv;htnUeT9u9qm
Z"-SgfggcP"ڊa#Jy&lh\E
ղ#~!["cAh	Ck|3~t|V̱?AD#L_rD:(o˳:Ӛ2-Rp./NB*V$1
ʃ}ys;
cssK6e`#Jb 5_yJ@.[vg$ $ pࣵ.{h'F9B|tVDDT(N38^CD4dg5Lb_! Kj_8WG`36ڪo#^GrvHAZs"̋86Z9!j=p,do!h]N7U!Iz3Ц)AgJ}mJh0.ُΖ-J,0޷M؂cs{gLDfňQX:vrsspzhJyZQ*|u6AHEZh}"'%HޣW0q@yKPJd=͜Ǆw}5|qZETq߼/%_;E#D8pj@7{9u;%H؋OA`%e0#kתSuDM/aWcZFZܤDoӸVhЭ}%"N y=[{=t}u$26̨PْǛ_t_t27+
DFI9QfFELU'ʾymwEٕJT̞߾Ϧ˾sEkF,C6{arC9.Ah^]8
&O!Y,mو$4XBz]Yl`^X+̯UE-v8FdsY ->kuX>9{X-ܛФ^QlEgB[tn27gʇ7M:J?H&4i286>}E"I/`u&l R7mjEr"z[Tb7fEpYX.||f24FӃ%z ƌl
[9H;ǛuJ=e&
;UJeq@)+3@ID:N0	JlrFT>/u11]jrjZfK5,}WWLXM%â`gn騡'/X71k-5rOJ rV:ftPlC,yvh!QLJQ
A\竰ހd5-lxb9JM[/Q\͠iϳZE>Ur!
T/$Rll9/y鍃"XjP*2L!!
N+nVt8Zspԓ)CصisŔpIU%,)pn0G8H@m:up*_5
'7" @o2Zg=roda1(VpleMVad<ʊMFZG$Q 6 B-ꩻMh{,6, tuWuo@6Ո]8[p$LdhN9߆؉"BP$QXh0Ώ A>WY?p''h"o	AqeFn;I0^	z	_i朼R)*t0Ya ډtI9<k(B܃I(eDN}_%&:.(TcX/SG!H
Ym!HVϜ":ܪ #]1A:w;ui}4>RK8_|nVB#)'j%MD Bx] crjmı:/ =X;|SP@Ur40<֮'N*E:c%Q%ON39=F!wQ71Yb-ƒKqV|IRcejzݤLxB=Z!4P
XUeųGDW2!Ph5{7@(,J}NFMJ[.fH
gcC2MHNhɀ;FˉR^
%<Fyƿ@/uii<
?O `?24E蓼1(δ
y1|Pwp~؟a!QtD=v$q&$b
݁S
SLQ:$*tSR-qe}~[BΗjnu]I J.1<2|"r46+qBuM
aj7ru8IzgKbX˗JaӲKO.Y0yON6v]#O΋X_+7I%w@`)r;pTrJJJ,GWpɂK39v.CFn"\JTf6Tl
oN}*F>كmg@L(/}֯(}"	ވlGKKֵU9U[T42aw×Sii}$	8L~HKTW #l)/IOi.2dg{d9(1<3I:Qlz)¾J3HJ͘|b~JZygGSa8tz9/BH:ցl*.@^V(:*>=FACF-yOb{_*5|nϜT9>Ꚍ2~L(rt/<AQvhpdhZxCr9woB~5BNx'D -X3+єb*ybXJ5 K"s"|/@PQoR*U>1; 1U򱈶78<
%x<
YT 4;XyaIF+*$E6VW\]yˠL=ߠ}^l?|`O|4`o=F+=Ҕ;:A0nMZ}^s v<$QSH&:rhO^ġ[(&"%a&aͭ
 $Ӡ(u$klO줂@/\ދݱx_.JRv E@jj&`LJ`ݡKL{qj\^᧣/R=&A
?Cugz;.bNO$lBdGڥº1z䖭yWK҅w#uj7a W;R!{2;"<Ȋ$|bHȨLI8:WʏF{@Hrī8"|`{RpRXT0ȼ8e
hΰC%^_<) 3g$ʍ4N2ly4b]Ug{48	ԃ@a?Mx)͝;F\r.xrBI}st(niiz'[޼uu'2<8⺾P2dQ$[nC	{m^Hw>|#LfBXZ';jTz!֊-%BڕwM=kWv0.5teeрLۙӯ8?拹U	}JkadR@%E3yIwxwyīSa 	Wl;vO2L ŒCM_tgO	,%TUvG=p`K$Tݻ4Noeo HǳDԭIJ%Up$\'
5Py5޼	<&Ayş:ɚ ׳bGͩD2	!P$Er%Q
иꕣ~EK]UMߘڴr9Y]M1[qGЫPqQA~f(2P2"hۜ^zpt{ |>zAg
T̶uLhOȠRYԀb_nĜݪ:}wEW
)!瞮Ჿh
FRO%o-3w]޲ķMio~t	*Ty-*al`}xBYS'$+S/϶" %EC>1*3Dy0lyE' 	JOm@\؜[Oږ-C@}o[gژ
`+m%S2.ަ.ТIu\ލM桌	k& y()HvX`=/b5W^
O6М6YZPHژ:eE):^C66{֏a/{Xk&2B%|6Sd) OKѢO4vi h_*"(RrZ-yPUE$ʏrߴ̆OAn= GuByE|,-4a<"CqFK&42zafS5t9xJ쌦3^^dZ["ٳ%bKuq"%%(˒
5kkyY0d64B
p&yFb%N&oZ;dil,YlF"Y㠭Y̾~Y"biLXIiجکʯ:\*Z|m=ηdU 	?jvlN">޻B[)^SCH{6$K6iA%M"UH}uƨ8(K*4NdEeʄ!|Y,֡s͋T}bԙ
.#J٬[EBV*"&~gAsUjI6@٨	0B!B,@,kUe`UyX;!K}p/lI?lܞqM ѐW 砵#J7	ޖNX >=1> _guS fw~l
H\<`(˼@96Muh?**ʹszw?VM,P{,vRr"&~7ưDwȄ#ee86NVauk1~WX4@瓛a;ݛ"Xr?xx*`Q09!=AYJ8ֺٟGlFuz&6~Qbu+OQY%ۚsBF,+34Ɖ{B
{z37$+CG_S,.ClT|.E\im,Ih	M_5U0a/PQH>OdH3ȜrL<;eX.ZW_$wD.QPcs
yZFNzOtgZ7>CjVd`!ZSMe
P;;0d&xOMwg^>\Υx#*7We$8U-g2h67w*卻'p%vo]2;gbػ<@mUZ@{ArFGAJMHnI
"IRWi
hdW>?}KeF(4n$xApF}WX	]X`W.sw<&	ry'Z!EΘ,+ 5-;7`x@LF4H-.&\&3݃.AX
i:0D8NDRc.D,?rV*Qi=ħQux AaӹDeΓ~oN"C/8^> 2JA{ж<*')l$'[z4k=@
l2Z1J"L%-
YCJY
v\G֮ Cjj/>)TH3X
 <;ͮ~( DF[8Tg)nˡQBLʏR"JLǺ p8wuTYK%7FG5'h|}Z d'OVF>!G6kt93WselJݤymLbe
(h-ѭoCq[opH6!m<pyY7MtLdCLIuFAǍT<63s=Iēsm:T+>\*Cdl+-
ծ-<VQQ06b,dJ:1^ "}_U(HI*jϚ.R5`8sU
LGCF׍۝Ē~ܼh,Kpcw) #뉛2@B8/H1D؛P4
mUm} |āJ(Y<Wc8WJrq3څ_m}8b
|$;|NzFo鯹2	
"P/b	+j@Gh+'eSrg+܃05: .P__%_TT%-1Zuc-yH͓|h+ayK$:%q#H;0 ʀ.@Cck$Ѧ2g$]ʙ2ԣ`iVaDQZt'n<ՙ6V2Ra:,^F>Laz>6w-wHDdI\ڋ IsF: -Dq)4Zf+U=$A#TAgcV^ Tg|P+ZQR'/a`];^4g[+":+Z}Y @ù(){,8x@@2hZz9+ٕKkgP;h5DTY
W&	}#xpE	vܹ0/H]1E!F#TĊMh|/h56rԛyEw VW8Uk4qfy,$	n/ &^/).%qS"Ͻ&&lip*)FInx`oNSMzKX/z#lZ=_K:Spc9*'hfu@Ӳqx -Y wbx
	6	=< *MB]8QˇVBsgmEƔ_ z}%8:'$*&</xs6~N5Q6%+;x,P3eك7Ƴ~Rz^FgX.cqK*va0{cRzgyH6'ХbB{Ѧɮi3o:8K-26+MӳkF
tYXe?GmTZ8T.DGj6i\']tOB*OXŔ{[;N'[F諞>#&CT0=V9s]ޙL!(v[\vR4( ďJb"eCE#[Hd
j]6cg!j#`)]P椲-mRc̩@ڪK+2MCdD2R,"IY`FSLNxGJ%(.ȑ?RK5/vy+7c~~evb:ƮJ'u^
Dm_adlWC􄮿xX^ +C^*ATȠwULr6s^	PcvƳ)YPuM>jER'*!T_U7Dy;mL:hr#Ⱥi"qߵI:-oe#pgt HAQAdH-{EZUxӱNWقl22N$䠴 B^	l+&,\JAG$xjw8|<NY菎= s|IzE[F3!+Zxq6)9?91
BmyF4A
PBePvKj+5.v
G&L㘚qlEDJ&b V
PN9:<eOqH稙Ab	ZY
Ҏ'
B^KYYP;lq֪@o:f60`6jVx
2GQUay~6ȫdkDh kl(	"}:
(vzX&Cܶrf)<5 {,Lfq5G0mx5\teI^rbxUPD`5Xo7D&,(ty׼w\%b-qCh/աfi~Z<dX	,*l۲'LYGMD5N@ҊYr XƫLmu2oer'˼j&ޣn43I`_J09 c=0_CMˏlHƋ[(@`n~ɫrgH";VN]*4
/uݗUKxmܟ2Iiki
-J+6>bɳT$oBhVofm$X;lkOV1D)h)>oց˳1/>LR;*7IKknv@	)kVII*@Nu"
/&2j䄵V\Ff|.
*4fmO̭zXus=[] _]Z(*OhVSZ,Dk
(sE6PUY9̷3Xl}~~_4ԁp+~:t)Nڂ<UFZaZVV3,>-ngD8[M/x85ʨJ[rǣq,Uu{XNCx0:ބ̻PPHwIS-1a.z,'1U.i\pdM1 ϕG	!VV6M	#lFN2,m,cp Hsy:O+T_ѵ
:g;uhTxwZ8h HޗRcM4j
*D{ٱ ʁ7<zsa&ȭ(ǒVA463'
{;6$^?tx7oqGÊA5'l52U&BdվRr
f|dC`ψ뺕]n(НX̺#"^=QYMx>8{J-&H<v~Aq:'9B"< ^.=Rd]S,,Il"{5&pVM*xS'KF
]iL({S\>v#Kh&ӻ,4Ob@?&SO̧8*H^- LL{w².Am=XոQU$%O>s@L\hu'#?(j	yM<l䋉bcYa^%ki]*9h'EL`6{: sC7;͜';+T7]!a#Ͷ

B	qh@K)@#PhXYUpH}KxCD<X[F)QaPvtRV6VA2I6YӶYP$=!+bK&(J):O)rmga]qgdKڌ+ʁSZ9dqD^&)ce}96f
*,-_OD	)W*e#l1%! 8:I>]"/)쮀ȵ>%}6on!p21e/)ⳉ	AR=Pd0֟Tl·gOU(nx#i!VaGrDnu'%^/%;Aَi]#Vm"LD5^d̋t4=%92h"4t|~emF)qA/Ŕ%~R*e,Bv>Z^jB8;>1nAQH/0cَgSxp.mr6mPweJo%{%G7⎖Qb+"nP
[+s07slJjx63ڼ
Dҗ7WB;p .dzQ#ʄE|{iͶlYVy
fsh9l3z%_/	$߾ ˷HS29Ѭn-L˧D 9S ^=/8DuTm^,SSQɠL
cܣP}C?3vC;k} Њפ)
H
=~NȔyS	"a^S1#3_,LIKCFZ#PD,+bJ~0iD]&h{e%Q:('`d9.PuZn}Ju%=^ᙍ50ti ?Ǥ+s 4\%kEuٓ7 J|`kTq\;Tlʋ"iIyS!CxI>!գГB'oҋ ]w.6gb/R#"mϝ Zjc8!/TSYZ0Ȥ0$x\HOr2,mh4pib>2aA՜2XHͫ;YSRJ)k^Z섖xs-	agG6C0c=$mr)Qr&369F%|[2?v*_"+/⺌Uս
g<ӯ6.^HEH%mٱ;V[VQNE	.ڠ&dKQ(.F5{uۂtSzJ&k~X<̝jSYDM"P40|FjRh.4,3@2c-4Rf;Y?'"'04kD&&ȿd.qb|.ZIcJBj/A90i2<N`tDH]o]#tWj2qE=i1A"Y.9L]I_`  zH6QtTր-hA?beFr9U	Ԕ@F>ogfHkOxC$؎aS쁬tAda7.k@PH5.ba_֥o=8 EQ)U-wf+)"Ou\9.^C78UȞ7Id+g?|(z%jWgVvF;3ʪD6f@Z۴nĆ8Y'v0jfƎ~,w!.;7f'4 Rpy
fq
Exqg[cV#U%|@1n
A?uzX^԰	ޓ)v*"f%dRNW;u3B$E!,3\T^R*bƷ߸+_Cf0%Hɀwd^uDM7Kau46^Ɗ-8"WxNY_h(T!ʪ_~};qd 'gW1d9kg]0/Rbm#]h=g)ǥ˫}kGٛY.[\DƤlUzb{@S'9w
$̓#$.Q}/{V%MTr=]U`y}H_ɖb*'AaTV",k hR,Ve$?g4y2AC3yM&T$%	u
/J*ACيuwV3G`MXQ5h9LAS;/U;/.R)ᐔᴎfIV#}b1
4Yo= gy87BQ8h
sp+Ѡ2#KdbdQ+ED&,eb*2F9U5I_L-c3nK!Zƚ1H
dzy6ɫAVŉޕZzR.&;s\y|T{1ޤcNx=XM/H6#޼½p,Q'٪ng\[,4riج  % N[}͈HF(P=Z	7-/HtFӊ/;U= O5,Ų-A:1u%[9N<S^ .w^Γ9 @
t@IrB=@	_2xU-Eg*>!Bhx@NQ̧_!q:B\@LV︉$djUܐUwy;MƏ3pKt\G9^?eF5B̩\l$0b`"@0ڰƁrv֭*q\HtY+wI/!AV"%'8ntxJ%VyӲ#q(-/ހ<ZtV);cq}j{RKfR]s[t[ZOLt\aya	\ҧEX')M 7(NB#eM<@{i0n"'L	WStA.> SMW#F[Q[nfEēV7Z`Xz-726$|V& /ZRN`0H#NT~*'_ ~z^J[>bLpI2q1E/۪xu<F6TҚaFyx{fsN9Y+B}y=*#27؃8	*1HBiU/VPyDv`#R}H3Y8fJ5SZV+4MQ'ùc jZi ~Œ鋔Q_MSW
EBE1*=RX_'
ɸY^`
vw#DiUj63RCPFσ&=?(Hj|&Au6M9yl3UAj F5FJR$YUAn
\f8k()Q1ndd0Cci$.^9ru$}Oj)62~nVd%Q2Hj%8݌	}Z	$u|#]\dKk⠄WāXJaP3NrEAFʩ	:stdQR;1xpI
bh*1Ս 3fGtqh;KKyOZeh ąl
>ZslsTL#LXܯ) &l&]Ppۖ>,-=!:jRr;+m WY4-
D>:5e Җx柶	8X)+{HQz
t<7Qm3M٧|>,$+]JƆI9י߿ϝ܁mc]$5.DVE8TޏO.Kd'p{x!oӼދBG ?9t+'Y(+%d&svg(]rŻC$Pّ՘{s7H[stޘSg$ɍl-a>1ItIzUdfzG?dPzT$JNd=z~膭IDrBX:-!48 ,~S.YMtI<4Q@l1l-cO#3C,bВ%1eiK;TӬ_|%w?sF-%]7;X{ }'}
@R	&6qR2J#ND#b)}=^?#-ڏL&fZ;C)cLqdzQL.Tam)τI;ң8fAxڵw,B:kDI͈߁1^Ѐ̓Flփ0Ճ4t0j,tڋp"b)\~FQ!(,쾘Z3jE7"J_TTQ|R5EePIwd"E2jF{ܤ	%}#nIE'<@!r:8Ё6ңotaؐ;aP#[ro)6;~\n(guͤVc/4h8차^/};_\Qxp=(U&,OM.g (l$,>G\9☀2caNpEpv>FA ES(C߱@cUePahq*,p j	(93)</Vt"V;]̊
@׫P%m&BkPe<Jl=EcduýVt9u
yWMCuO|cHX{WeHNT%OHocE@d7vy)C
f:[/&ĬjEҟYL>u/%.H~Z'Ԉ%7ˁ̱HE83.JkTXVvDx?)ܩ{*&QNҦ_b0S_VirCI	i<! ,4cg6%5<ʄI^6 $_0Rq٢+Éns5K<H9twi|# FΩ0%`ٹBD݄,]s kj0$FNiVa#opwJ=83%mB+D6	FbVGavP̈́3p~DVFT)<D$>טC'ޫ@sSǅk 8f'N'f/LG2ʵjס%ōnG:
XZBNF
 =c6D^M-3QZ/ȁs z,R{ڊQ=I_Qإ)'.Q&Gn@cdqt%>:K55'*u%K!l
ygFUNNa17LKC틑I,JcaӳDבaP*;E0yj@7CR^$ѱJPƧp@#'V9Yꔲ%sVU}*r>_m|)X^
Z7653Li#s\kXHjܒC6@-v{ RCƞ\XYBDʺZ]Yo"5=MYH~?6i<<\(m+^@G+D[KEZ(?{lξݱ1Uؖ+"Td.֊a"'GѪ۽:m8]Aie PU>3G6HhS^.G(ĕ(*gҧLMvspՐBMƉ[PKC!@i:K=ȕݰޢb{)%
3EpFY1T@
4x/hե}El'YG4M~M,A
wY]!=ϋsu̜9*mYMgefKVeha.l
FK"Ɉ(N.yF``Б<z!s⿆z>زQeWsޛ*PH}B;&3anj֋f+K|*cT:*<5ȁލ^сhBXڸ߇3w.ٝK=C	zMv12CV**"XB#WfR\'k~jԌ0ukґg(5<Nփ*` a_#ɋ3ɶMu
4GEZ;4RFE$^ꇮ,Җ2Rv1%|
H!Ǭqeo楠0E;c6Od8L[P%A	)jl͚E^x|:(`eBV8^1wDϟ'OU3`5ǗJ+͹d y.}ŠGP``lLAM
dʽ	S)Q;t3 U
5QvICS8]ODw͜>XMWE%"m;F_~0U\喗X(¯1o *7WaLJWU# t+h{Rd,JC(뫻+]ν(3&NH"%U
UO:o3xH(!-H9ٕ.wZN`ur/b~e1Sy+3:ڤ.>subndovEjI"|>dO4zht^2Q-
@,*8,kѻW	&cn{:Uzy3E]=^^aR^0wp|J{$	0HF%z.$p-j.1
/4qdb~Kb
|2#:#Ddoj?Ѯm ])[} (R\%b4`õ<؜V`:O|Fk6LCo'*Ls.V^"^b	lMlwVWrY|;#CL$g tӤ㓶U

ggݾ&_а,XonoM]<zP:uqz}tM)kw((*0t~p%9dCvFqnkǞġx߃D ' 9f7ViAneo<55y4\R@@f|
U|'gcH}
LZQS4z:$tqT#êaDw+"Re&"nB7d)M/H=$;KARޜj0-ZxAI;E-coSyoAK"ˑ<X,T+YJnL=
^j]Vf"F-3g:QW~CE'~Ɣ
.7ڳH:fM?I#?G8-`2
_ʞ˜#A[S(
)́}	U)B{He j<s94"EC5H3kVW)
y
9*MU91{S3YưxY&!	Ɠ5:FE)]@M	֯T24"#Yo#4>+Kݻ`Ōژ&qӒjWl_?p]cē#dX|O^aV^kZZ
\U,UB/+1*qAM&nfRzT
$ 	ӛdBN|At~/4ixլhK3o{s໵	LG^.mja݇ ȤH>uC:b*>(T'`yn
Կ8H=FVKo/lK٥+n΀V6{a蝪K#YJLJl'j%Je242h$:(\.yYR%Lhq_uuI4d/b"2U>#r&9ejm"et\v6)PȞ,nf4etGy<CH	.\=HeN$Q'FDF+l8itEqпLmIڭ&CR.}:IV{UVɗӵ?YtdEOFǻHRR16RIV,"mF uE߻]giLUv6*ahr7e-YK\),cbkX֚Pҋ0y&-&
.IEpSD~q\XTC?:U959yP9)sL[ɋ#a mp&J%?2r_3GD4ڸ{ #"h
Xvα^԰6U]ɅOFDL562#k,&%
\&7im2MEfŸ֗OEDEpRe$^U3~lg=wL.R]a^P0c)l_Y}5þ
Ж.ʜwm
?nx
vA`o1'XTfh#0$e1.rb7cE*KԘ8s,hS6td[Fsu"g'/z*N3XdYőeer[cɺt1?B'W^e*E·(7Q??rq@2(gd©yFPW 84EylŬ[Tj
CD8"[nK5&A9a/ζýj+`xV@cRv&3X\*I:ʖHjj^DEǏL͎j߿bQH~38eeTIzZhVjg(0xH~}>u^	9A/s끇 x}(tGvJ;ϝE鮛8h7=+M} B9Sy9Gʦ.Ӄ[~[,5t!i˜sXKȣ<2v8pJ?fH\y u+APy0.et(X?l7P+BfYfЭ"qlPNIU V˒HuL8*.)Be+$wh<OW8'm
; q,k,ܰAs56NZv{k	LPH@>NӪaJ7lT:\\nfoj&
SR|46I9Q G,@͛+<i'8b8zK~WӗiȦג5d*+2H*iC]lؔe!2B#>yauDAĲm '*p!ck,0rh~ߡю)mP
`|jU$4̍n32؀buLϤ`}	U<QUpK^DB<ZƛAoen?hýe.ۭkF{>ʎg.ػ/-{+&(8Vg]kK;;-erȅ.@tEq6Uo7iOQzrH_UAn1lgBE+ygOyA*
h&Y=dwA1X袬@FUC1?:KUkk'[3	Lc=\Wv>;خ,; _G;ݕތԬ(6.~׉:"Y
1hhQA.ʄܓyB9#vp7ZV-QZ7
A"/2m@40ll f#XfRR;En5v=+!\	9S%yf<(b+>ބ+eS"mweo37zU8ԍGf ZL

[$F"=@]0c4`>3+<Ų.hvmv[`A@{`>U7T]cTЧѝ_g0"<Uŋǂ[B)%5Bݿ\
ny2_@ꩩYY@<EjRR"QySxi^"]"=J[*ijܛGal>7Zf]MFDPFR"R-T[Sدu9s
UHŜOa7Iebm3
%B^@m۟h()0UQ6|],JIy#@!EKԯ֡h/m1N~Py{Fŋmp9H$<p7p@U?&\qhUP72QN
ޘUd*Sibhʼ;2,s\=)Fg-K,te5L^>@@޶:ʾFiJ%2<n2B\dJy7r	m^PϹ:#Q.7Ϡݍܷzp\$獈t, 4tC`9dGjͮ3+obgt&̸=9r|BTHDrN*gd_慣@]-={bLJct:G;lBҘ+r0Ź]/]7C{DM<$ ͮ.HDcX\T-ee$&%lőI
UT#t8ИV@ þtL2Cw%[qf 銕Ĩ)]3~⤴%<AN`yW6&m0U<4uPM"c@`Br

L'E#a+'Ayݏ նL0p`#"1'Veou3=^wt)$UI~Y73ˣ	x4;|Qgb,jpȸ/HM|8i6߯\_&e``#+H1ϴOt/{jh|ߦBʺ  D_4l}s{yoߗbߌpOhAXFQ8bUSzkt:	^ ]i,7 Ȟ@M@)V[~V,ř^uo$>3avd'g)Ҝ\Ѐ2Piz;Z~(I"bïh6T>`dh>[2z\/DpA{.酂ԫ+YGav3b՚+>
-e,C\'
j\cslWVRWM-SbF
[E>4|2C!;LE^鉴{đ2>-Wdv'.0cq浠iwJRáBqLX327@P}fhׇ^URS:E=PIpM9"&3`V:_.m9X<̐-/S=gC ;%6IC <;r5
I hpB=tZy^0&!y"c!jRWi	&Bw׏PHdJغ% x.±lR+pPvNfQW<]84d11ר "@%H
#A
9fgo
]R+kZx:Rb9ćnb'3G!v/ɈǞG~Ny xT܏9b\&yhZiou3hB/Ѝހ
>,(@UWfBFA񞛏{Q-Wc:X#k:Ee2J@ҺK;u<;v#-wЙ͖8*`+
>-S$aB{z| LdHnR#\ٕd"=H"3u4`TʮffId&A[l9eҏ>Hp pU;xhEtCF8Fi5Kd@Œ8&Wx$ˍ#VtBf 
{xq^\W2rpp]u`aJb
Ȉ|铂f2z.^P+γ5
226U*0X ,AR9@!3
81َ-bJ
d'V޽	?ɸ"cpu,|
-f@09D	Jdę>DTX35BfoyƷo/FR@ǝ$4æo1 Fx%/]v?MfV|F}1	ad%X@	x*mox8u4,mHs*	jselr1Wt̊޽$p:<'ҊqlD^L
^{:TOo	,
}%n.V%-w8|@q`xFQh?lƜyс,'s_n$Pd6j=F,/ i
@.(x"iEfzVxDI,i,0;L\{5~sbQ*1W,<X<e_s20{=*kKgẇOlW'-q&z::7}Umc Z\dҋl8^)UnK<ڤ FdAq^Nr,5:su]
p,L
oQ	DB
WXE4unܦYn5bFJ,J[*"N`sD\:_ʞjxǷ,"LWMSNMx&dAhO}X*|'aOr "qKMC_DwT%PX	U]P:.8_
4@>[ frכcpvf9cx3
ǃ% )I%,Y6!IQkd  ҫv'OӦ|Cl%ZScPMj _}QC00:mC>bsECQ` AۆA)ܕQf8+|1)XC`_xNiʯ#^bN_ݹV%C\몼tEʗO5gn,JLN3DlXS`T:p ' 5tQ+Ȕ6~fE_loqc֡	49J8arVymb<c̜M:Sݦ.U#>" {	`dMI	yv &@Vu 7sf"^˦NMZF=4*i	Q{2Eā^r
(Sܟ&9_E`=]A]HjWt*ʓדGH?6bߪ2NT@=b%Tӫ7h
굀2xv
%"Bjt6%Fb(LG5nb$`mOZ=$(;-R27oj0܌#ycS/ڦd
|n+U)ST<NSToԁGt6͜K@rbo\T>֞>Z-P#ENBrūF/3):lJ\|]s=gӊ+	\m ;*U25DĒ3]K3okϖ$OC:^@ec5KHn	@mSK-DX`5.8ℌ|SkU1 ըǸ~܂jzcW911y+z]&L0;7Elb?W0|Ot &UsTM˦@C8AoKڼnE|EK<K\seJZ4ryӮk%YxԲnp?;FbZZU>CHkg UqHÄys"<_}FKv:殬LinJ"p&|j\M^1h˴ oD2K)b0uhU^j|X[wCyTHT.MyvYDWد,V
,pᖕy*c^W\xHr|x_`r[|AߔJaCp݈y.rШOl1ԩ'uQZ{5`pћ2M
,Y6I;91S;L̓q#Ep8OepOs24_y|8Oo0#Jq?V=:ukWj<FTb;RhFzH͜1ۖMk;Dڡ_5Ŧ9@tovXP?ql7+:*܋ɛR^Ts,uź'ɓQRx	 _d_SwC8[˻ӇV`C`fȜ:
Rg>wa(a`s!&zC_),_hV,Gt!0uS,خ
*gq ظ;GFvJ"dLE-_Zk^W*5Dz1h|xDTI n7D!4rbeJڑk%5^#Xi

9ǂ>E]Ƥ£~xi	e
Hmx& JdNݹw@VB W%**0@ m<^48[WCs10Tba/B~J23֣>AeS-teZC l|IBb3cPWwBA=\IfF#~M$3J62"cR<;ZTt>_9	Ŋ6EV$䬠P(`eRm5Y68Tj4{MǹdyOIj<g.JBY#AӅRJ<2ڿȌR&$BR4s>UKdZQyU`L}A
EA8" ZQ2!`
lv rk%Xr{Ay~CH=ncip:[Hn(vĩSj
 e%+G|+8n ZX!5Jf9'oܳ8YQJZ+B+\ج5h4J"HJZTȟ)གྷQh`ꙅ
M:B*%ZQl^󁨵[..U= ╪6wTDy`RQ$FĢBP\Y,EhܘVsnX>	l+ߴ4~<ۅ|QBZd(IRFzX,6\enxc{M}uxl.//p^QO2M!.g-59MT:Ÿ̧О9Nb`R
Yz<b֭l@eQ܌7jrhtza$uJEys눱uL2r#vr.|?0u2"qp4*N9-K&ʫ/)I P^6D;
%xT§990h,.ZW\7@ND5Nhq!)k	SﻵZJAF>W){_2bY܈P%Qp<VVQ\H@,a#Ķn M65ڰV\ƍKgKKZwܡL+E/=Q,Q*j%qY5o>hSwԭ'ZR	%fyHm&)YS9:֚ W<,
RV@ۨWMk#9ElaE.T:EԢO*FE8FiÝ;.XdO
=2ȃSJAو֤x-; PtEu
q1*rQ:YJE4 ̪2W
 
+:h
t
Z#rW[dtxG\sðܬ
AԶEiנUMBشm}1C\T2m(d (ĸ>,5X!MUG.()ȗãɣ L*qfA^	ON&7UJH!˱قyi"E'Dj0D]J
	
%_j`x<)	VmVB
wZm%r}LmR.J2QGK=
J״d:6ˋI]Y;Xz|tUaZ=3KT'+drƗlغ1K- O?.#% | Ș;~0(^ t5MQ/R")1Yru$ʇy̘6guQgnRaJ[_+#{&6Y#XN8
l]<rň>2s	;R܁:H>9_2#a-"@MsT+<H< 
?A;"Dp;3GC5(BP	F~sTYwx'̔Xz,:[L/Kf]11q~PМn	Dj.7=\Ӊ0BLLK۬(Z׳#I+tߙuku-jJH9٭NU]dIRm+9D,U+֥u` MRC{?RՈE|%q&h&u-_;cʛ6ƦwsDyPmwrv ȏpǹa~3R6K:BryHW@w[#?U(].Y[6<Pa.978DUd$kTt0P̀_.z:ER2:'A]6ŪwJFRHt/F/Cd|RF-c-l.)(J@'A6%k=G-1^xtUI5^lQ3SΦ<|Sշ M~ǂ*ַ〭R:ApqwF@-{(W0UC
:6[-؞rȳtIXvxfz5#V܆!Jc,o73B;?Pe_CzY05j>>ֆLK;=XpDZ%d?y><myY_Lz~	zЛU_28&s<`yf7SbܚJo4Go)Wf.s$%Ȓ]7JqVdYE+?RoxYT.y')յ12 *'B$gmKIձ-
\:zl8/HDdBiKuKW;1HIw۲%j+d:Wx.%7TC> )Ax)i+dDoCK*
Ac`Oej*KKz.9n[2fR	-CKBmpWT">is?+\X0'nO#OeJQ@҆,yR-^dQzʵ̦Z=Dj#?CpD1‎9lG=]>FDuRAe&jj״ţx/~|$LPKݦOQFZb{uHH#B,۰,3`I;IIn]U#ṟ-P?\2QyD6aӫrVA'qh鄃U`e{-۟*3`aS.Yo	IChP2Mij?;iPv=m2o&)%IQλP$yT< e E`'j^
d!Xak	9Ђm#5#(''n" IUJc&LTz0dh,2g-\X72`QA}肎q9#잗ct*IQ
WfP^~0 JWrLJ&hi3cƩ' $KdUk	ݎZ#wv$ae1~fƁ;!obǕ{L&wmΜ*;:Fb-9;W;lHֿn
	%qr Mf0;t9`%;"*Tz&r84*	zA f%Lrs
sJ5Ykt_mTgDk(zȉ^l׭PKcYCA	۟L_њ>n]{_RS2jЬa߆^duIz+)cMB=i5D=aM
>PYT&*.Ee#2ɺQ3[ySG @texf"N5k
9ZUEBc˼3{ƫuSEuU# zok
*`;ԂV͐!)ڱƈy0;Mpm[Dc"s\g]p7D&
e;{z`t2"Gܩ@ʁ
F:1
gW
iRT>+zZpxy"or[M!Powy*}b{cCemt,.Z5LEA%G3ѡHnzקdB8=Z`ohejS7Zyx6:x^澁ϑx>߄[՜dM
ooUT$ ov%-%)
K`K"уp 3qa*ǉ\EI,͆dx,TUv`
XÁ^9jD'Fg\f`e+%;TLh!'	p͑-5LYh5gZ_R;0E,ί<((=WF*򪌞+HIY| .YKB@~m*oŕeP{*L0Y""1X(: (=<JD?pv9Olƃ/kR@e$@
.C[$UIS'vÛ}GK>7r[
tOOJ'
JzGS[R^Ϯh4@'c[I aҎ9
T8]'mGĢҷHcxO2"ACjOr5qEkK0W/+
7Ojn$Iֹ31.P*
DV'qJ@LN8\DpG}_ZDEM(*9xt\"~CՉGUQ}ᔾ<lX9x̆+ch%FKQ!Pɣ=ibE"MlUڗ
G0%݂DDiKB|."/%>؈*>1'!x>C
^|ZEv`x3!sփfyسtj_?k(岺H,K&nb*L^ً* C_Lށ |*} Nܬܢ)7;Û%v>ql6ۊyąv-z8IphBZ51>
VĠ:kT>8{;?Z1I6!tÖkŀ8-mP+J74Mx٧Ȳƭw Tרlr_ޣ#3+}@lvzK爷rΠ0T8տxbEif!'B2G
v5ː2e
G6Ĭ:*ܛ	yD >G_F:[t1ЌKoPYľ5Z6/pQ7mCׄR40h&rdMlFѠcR.tyIVï-\k\Ob=ξz-gjMh$퀢W&Vhz[*U8F\FJjDQQ&EDAju(W{g W/&sթQ!4x"A:֘R$ۼ>XnYxGP:j2bboI˺UY 3V
ٰ7DhmSdehz{=ۤ,V < =&ĊO_)l$OÅ@*1"w^! /H@Fӵ[1hV8^hyb`". p9;|eRt8dpG^y{2?OP-kB",
9<qfn枍a\ig=hkEJ"ATEl&9<'@b63I<Ĥ_?%ZoҟFll+R
`0Vaj)yWɿ00jFԈUyPZ4!,*[qmQF9*	2l	
E7QA$*uNa?0Řpc-8?Ȅm,6lA<b"OPHcb q	b4d0V=Ndc%QQv2|7#1'L㈟
M$p4u$'W8n)M3&KF$>H\52zKX<)֗wA8Uyk5QE2  VB VCtwBD֊JfT۴Wl,N.KDup,Ŝ^pk7},Cݰޙ,.y&`c`A0*/EMJyP&"fxwH_^\d>Vy-Z*dmo42ESp$J;Tm`D8Racm
#/,!fe!<tfJf&1*S7-$^^4>
1?U$x\xzVKL8w8Ն(H<:>	u`2`:e2$6U#lB
CPV dr^ۤXr#~&Ԛy瞤W/
l
t`6bKZ&*vg6ܩi
ѵ:Ud
fkf0s[o	WYX	/C^C/pM)_Dż69
5{ƭ2dpp>?t$o*īu9 ?R-X+1DOvBwg-Җؘs*CT)CW9~w4wwWpL@v
pdUZ;3JgƮY
\U^O"^|rnMSq_8>`IH_#c%j콀tAjIE>*#QB
BN&B3PUj΢Jd61<bdR(T+邝5ůыYy58۰8 V_ECp*d
KoXbi%Kr)\C9
U$	0쥷%"%*]__d9|&Fp56ZW&l<qY~MZ+4Do]2UK*ғc,˲;V;Y(r;k`pR1ѱ-"aC
K?fGY]=E/t0WFަ8;L"
j3+O7u6H$!AdR`D `^FY3-ZUDTKEW>0Uc~:͡E+~?N<=MPyA	+:qR:%JA,Q/VődH	\K!s+?X2PBAܞ$VcI)aS&!5'csn)&C@E 2MPS5zTQ&mC6?_x㭣1k݄Uy9#լ1Y莳.)ѮUAޟ"`uQ$<b%hxUkϰփa#_O
]%7ݸKpը~')"I
b/ e1v2GXb3*(cr$u"O3/JJ8 :JoG~	tlߗ=,ڀMsOT] EnPSKVG (R-ˁ0^yoU&!!MW
:!' 8$ӿ%,/?%	PĹjso޺?3OeǻYssR؞Wlj1Ͱ2DDN*Wk4gkY3'Pv1W%OP!;P_v7x݄/-΄~:nNA8i	3I90l_-X7w4j$)hƣ=INsgTD:$Ru;nbGw\SH$.G!ҝ= lHaUsE5i*>sFMg,5WAقUSMWmw\a[eQL<6Gr7!2ö*]S})WcD55Y}8qǽOwy!^}dOƀt;3YL)(gsF.
p[liT+YLKQoay~r`to"LʜhN)B
#XP.6\ΓH4۪媷D*E^ ]0
r5X"yڋmb'A+,[)1=Ƨ{qr<oA7GT$v
/	|tbRH34.

 `E OY~Z>X.)g:$jz˼ƳcmK^=8N80H\G*`eD{<y|21JXcTs4n!%@B
hݸށ.H+xr*3fhr
G[Wc
-}o(/[JԎ#EtDB]gA[$}b0Ֆ]?$$7$0ν9&~@2vd
T|9kHj`mau'Yh[W^gMv
n˗^+6:dM_yb7/2DV.>Kb3
	Ek
^j.ɛed1X0ƒ׉ ̚}0wo&zbFαcб*V邅mp%h57|9Q^*0]'1m"B2#Q-\dl
Qɹ.|}V/̒mƔffS3Iqh^=%e[W1w=\cm?"gsE?0`YD%Lq-EgC1o5`,SGD0\`G3mfxFzT{L0HCڧUc~`[>5zJ,#g[l&o>)J 2x7F,-ӑ62RʨXkio"'W L`u_FNT(ّj/gJgz,8gqxlt_yenzMw
`%#B
Uflbw
kmZSfH͊̚f OygI\[L	;SĞ0V$.uȔmx=WtƑVS8V5cx-lviCj+M*$I6tqo.\U[SCYatEj4vRq+X8sŽǪB72uk{J0&2D4JmJA{KS9N
M,Wp=*T@9:߾8=(pipMaQ:.ֆR(#ʩȍ"K&$SLS๼"I7Eu6Y .8T=W	]Bx}EiT4d`_*툔HCѭ 2wX.Ckƴ
9;bK.2sn5'Y`*Et;#d蠗
ͨOW,B{6jTG3nNFIHP	
Edgu(o[3 D&r:ej~2m⹔|('ֈ\pt3Xs☁HlR wY3dDfzϔsc؞l*L$V\~L<l@A=n0\l*DEK'c&F_p#`gSS۳-!@P=%UU,eVބW_ꝽLTo}hm:=Y@ŌeL'W{h^H.-I tpQy7
X{xDEK$xåݣA3R
W	MĿXKzA$(ͧ.!&*՚[R%	j&x!V*_k7Ie|iZ$q:N+10Dԍ{#pjDHA:b|MY+3XEtM.D~2ֱ;B<6@"~B`9ʌEe3{`Wٛtkt+>#r}lb@+WJx0eu{TK͐QyBLH~ňNV&>4J6jwTHVƶ9yT(3]L.6e]Bf15pWk/]:HA;:Ǒg
lncH-`SfVU
pe3p!1=MU-budV4,3/(	UMXV8jݔF3` y6J|V%DGۓa@C!Z
9 @R'²s4fkAcё]Vڑ,DONv#@4Xa4j|0!?u6u£D~x*0rTeê2Xa };{uŗB;H[H_(.b >_T-dKOjCn˒]OsW),+!U{P)dq7w؝;`*
IiFjpnfF+%</lƊn4
Vzj<:E{:7B!^p?L4<B`'@[`1Xtp~~W v`ƷV $_dҮۘlESF9'azMyI	bK
DO5xkZ1h]0Rnt
v+ժN/0ՉfQZ 
ԸPmP	$-OOV#涌Ƴ]d<."Ni;DD]Dw;kͧ.
#_L@k1^4xYGwZ_^e[8}zoǂWC
"n,aTwWP!z\*?ΦNct'.rUj6>U$]H̐aWh<mŃ@drlze,Sv2|s ްhǆky$9QE)X<HO[.XZJ]1hp е .I&FI钚q.ce ((0sT %-Dfz/;*aOAC<
,zNx[b6a:<$rT
~9ǗN7bhvC**"(rUn|Ł$DGWdzڪ7h#ݧNTIP9.G$p0>P5B#Hq3%jƁxl'NliP7pmoEqE ]J]s\*Kd
yAxv5y	#&s *9Y8ucYa
$'2bgvQ8Jgy*恌2!\鞀kٸѨp:+W3Bw:;#kY&x$obB1>)RM^B=Ѩg]_'y]G*SyxSTd%aSʬ`(A;)~0/^@Y4A	JmT!2!iҵc6vFzme|H/jmW6uNΫE>3;ޢ@8w`2k)F6b<fup!W².JK8q?:,m1AY/gPțjN{Ei\4Gx7m(=? ,Rt/7P s	av@9nN]PvfZ2`/ON6~DT3/?o3e=tQ Uh4k
Z!`dHYcm&Jf6p^x+R@
Dnjh]N^^D
+jli%ó7xnj0|ЕRg7߫!qY'ypf/G*OFkYvU씥FmeQ빃'" Y8iqvl4Exs]I(ż8{a:j&>
mV]e-B#ß

$/O3qmOi9EdHGrp\ʝ_Izq/:2{QJ\~&- Zᣉ; {@
x\Kc!*Vax.-=a@=?LJ2??/W|:(Jh$DRUp(MdS2.=Q֣>:WF$dǔ[H
JVʦxUȡp)7<;v&l<gs<^²镈h<
B
μ/N%ʩl{;33n 4X:"}H)^/6Oa:&MUԃDÛWAzLTA$m_8<PBL,YΰNau]bj:{]Xc̻&W~ZtLJfyj$пJvĤg#,(Wv{`/@v&9O35TpFTyep"2rG5Э F#Tܸ9NqebOP0Ys+V&z>v=wt,%␦ܟ3^!jWT
ޏ4er9i5q(d)SXQ/ل I}aαDJЩ=(sJ#d>m@ЭmIaZ[ɏ *W0ˇ(љq*s~B,멨%ǕanQp6ؖ Ix=3~z.[=
-wtT4TD
Cq{B06,;e L3Y Sȏ3< uhMo3>^+xZ"ˠ.(
zq7MևaTuPp9aYYf h(@X\$TpBF
2"T_{"]7ZC|h~
q.{e8z?qWޙK$"|F~@r6
̊Ilx^Rt:/8+dPE;ի(\$^phcJC#5+ C<YbQ4LTk{uɼO*yi4qū&"ٱ`]7ؤ&Ҝ$k]C7 i\[ +צ) UmӚV[.N0SIq%y``d+h<W࢕߉R3~gؠO
Cb6[G|Wȫ2¤gT)0śPEZT̗+'566'@ỻ2=vwHG5O 85 F,7232ԛ[+(G;XPVqGVYOֲ逩GmE(p/j-[yZs_](=zy/#ǣ9E==	0`OP`=Q,;)9"%NM</+8jUޥ(j g.u
LjR[Ќ[pFTT4'؋4]
*+d!haO+Sk[:	(نʤBzH({B"raH\5fqez=c M?B{Vء[UGa|T#JiJVF4AiC,re	2i& A3Q2.G; vc(S֭#<4\]胶lv:[ ucTlw%ꆯ	̎*cv4\!ppX=yS3h N0m>]EWbv>
4 J[W,bN-f.[#;
SFNWF2fpEKm .
a0Qx>ڼ@6K\9m>vU#/Ѻoσ(=/<I9m!{kz% Us2{/6/B yE[Me`]sԢQø?+ӄf?8bQPq&sR^$8 +G	qtnrc
S͔ZU%`Ipݞ%roQ۰YX?
Fq0<~5igf۠ʢz'S+KKX!^4#s:ta0p|=:U<#F뉃K)]
:RX-N3Y׳&}J@yy.c@(E`,ZtP{\֣m2Z
m6x8V6\SNCCBG^f Z2߉9&\( m$/8
#v3 (L)[)o0nFg"ʶe~@"6v$	E.[şP9-1
<{oT0G=]TZ̅@ Ngb,|?S4]G؅"6
G#;gmW2Ckf
UzioAɑ! ^L7*L
uQŨPRhT( Ʌ18`$#Eg?D^E2]muB: ZڃH,hJ8=2ۺ	3F!b1+0Pnɩ),=}Eek N)/[YfYst]-[b#,Et[q̰瞈}^,VΊl5`Ŝn, Ru|PMfzRTŽiJhBRH*4:l@4Vgf!4wdȤpx6@@I֏$d98Hun	r7I$\cc˟)nW0b֐4i!0+~^Eq}hT
um:qKMA>!J_2/0)ؠ
('@='Tt)ICń9ؕDx	{	5l7]vuPy0C\tqBCv+5>y$Afn)Ѳ_jHs 1qTG}zħ,/t&Ӎ0~wl`=*Ύ!P`#rbvm0<2k0(־cQ9(I;K٨bX>^
u'Y* |7صێIYԲPʾM1ĄceI OZD"r¼ȶGL*	4v3OǺP9
&	=s$BafG P	XhUF*ItY?_ EBAC, +EaiWڲ!ѸgQИ"شLQ9:wOم
n[U
cfKĞąVQˌ#"CtmG5̎"O>+~`5.`PWK&NxgG5:Sv!!5⛊ ZU5g3-ځ\[jhu}փtoDPY9 ]z?|$!s\q:"pQU\i$Gm0C-s)+pl3Ԃdi_0C,K,!,Y_YBH1<1 AS.rdkc0|Ν6!g$%:ãN%QoIxZ:+lKS%WFoʊy4ӹ=+Y_
  RrZ$uƤ)GavdSDaQ*ӈ-&+)}`ZCʓ/U <i5ps"Ytl7Rp.
5A| qNzhaj1IZ~n:i"=,B}|ףa_Ǡ13-xHԀ9u;M $SCY.lR-~3)*1 Jԅ/En3
<2@-!nsߨH	Yֆ/4PRy+у{ ={'%)iECp(fed&rB:i<+/fV#,A+LSsGt:A5[Q"@([*`G}Omzfnʡ䅿%,p܅T <
죕h%2-9+.-]	-qiE5,W7q{Eg[:\
Rm$.yrqUoW͹:3zEv:WY<ec[8{YO,opl7cvE\3	qƆ?(Q.Q5
YeЇ
HR16c7WxFnNT#kI0zp.R{4䠗ezXa/Mm`RT89Z
yMdO~k
;Qb0G9qӨH+<3HN<>|}TYb7aE"`ˬK0%zBdw|&<Px142U$z<F]& mSS#UCNCA7V	gH詋YA"Ϣ l,1d@XgaMͯ,K.f2dmfqI*g֦=أS	wbևvl50˻U|m42:vxVzEt'Xl߂X	>8
RtīBh7p=Ł,sw̚*%JD\׷$UHbYo.BbIjۍ^$ `-^a@)e+Li`+2aY6R'Dm٘rd r>[paD,Acn7*~ex12ڞ'wiXS<;Noa HB$YFY;d"xtVǐ7s)h?.,:Â;<͟p:cc1ۓ'ϞGB7"4?KhxUKd6m$FC PH}ko|Mѥ~F$?ݢ=^o#:3è'rR{(,8=uAyK~b#|p>"Ӄ|e f-f@Bu΄j_HA	[_,Uc]":eeZ4х*9h{#!-t/3+ΣHM"gwN$19ebh3ZtI'XÂDC*9\i`H.p
Żzx:{Q\:֯m
u0CM@ؑ'[D]Y(2DZAd?; vM"'SCYh({CuU-zB5tuOD Z /o/$mMYQޥZFT&0;;VF~Hzo u39Q
sp3` Y,2U1%k +$rj%T,qG {	G}h=T[b<lHbWLuj\,{{e7%"'^i}XWFˮO{ǘ^~S%B	Wv4m=X߼H3ZALM7gA+(rԫ#@^vRќao*yOJ>_X$8SixK"hhǟMW[j.We|9m<3x`
e*b;K?b6q''nQFPKh
R2z&@a%o	V*߫ʥ'Y:vv-7"[[@4ehbњMK2E;nʚ/ʕc\_à"kxG.Fe'Z:S>t 8%
_5ۍg#X
iJ뇣d=(#]xjWU0v/qOA,Ѡ-1-;Uqe֌sby|LN#_wwֱ8l]|ydXRE8ôLc*c7\fq#V"H8#NSI:NO^9@x/"r#**7j"7g-sYw
95˗%t#Nvr#c ^ygBDDb{
kJm$~j?bD~g`<?j%u797]`Z$3YxEA(X@QnlQT.P]7"7ȍ>rR"16N5mb#JِAX{4Hv
cL BI4K=|R\`&UN^qk%l|'ڕ$ca%#qU5@IYVvYqcK&B-eP|/i21B_(&ww+Hb!e|ls@o(Y`kTɡ#=(~G};;Tj<z'cnZfDk<1̂G848Յ@dSʁzĐ]5FQT[ESlߚm-kZ
'_U#	2 [s/SJN"d~`e{+G0%5Ta
P\sOj760H"#X;I,t:W<\gջLZY$Pr1յ8S^n}Xm\FWd3mϿo?6Jሱ"-:wa15рўm6ԹE7[e;7YXm7 )_\6w!dfi?M=+qno֥ <)^'#Nt
2/ke5˃&[{lLcJ>jCՙ&7ѯO>M!2'GvC1e<J* 
MͰ׼SB"dcN(-c_:y_͆ i$l	
f'q1r
v5ZiXl@``~\|M==9{[a4{dkAcGj'ypZ%w+A2f'4A93mb؝XXRu0hyqAITEfQj28Rm`'-c>RQ&Ү?fmW+\2lY0";x̙eH*cC#9\Y)r=у{3b_<!gN'0(v*~ (=׎#g';.a,ެI)DwYOZ/T
Qw#Ŏ-GyB4bmnڂ1?Jd2xp+v̿+RMIO{σw-W~2"{FB*NC͍H3>\CT01zY6M5rd|9wG2ޮzprgY6'K%L.&6q ЩJ̡oYGmf0_sٖfb7_I>k:kk4%rbXF!Y&ReN}Y&l\P9lUPtn&N'sBEEV= P`oOk?l{P\O6w[ F>%{^|{XW`_:/!v?]>_ ýT{EKM]E$tץ+ѫ*:rOG6Oe`ޢ# P"Pb?4ꤼ7T;S$_272^Sk*;v3Sԙer6-o '6~m_s4"O|O,cFj߬S:VAF09H*!\I醜:CI'aj
^ǒ9[#WcM0r\_1/|Jfb	8N%>kH"6B7%jjCpPFvIyvO|tҥ?
s#;rЭo."m6斾HWe)Ƞ}	,ˣe|J<vVхKZQxm#Ư%up+|B}*yGF\wb)Ou_>^zJK1Lv,OM/KQǌV_~' .xǽY,Z@Rl<z<s+gQSGt3
zf!0Hz4@F$Ȯ<Z#A8c=p]rcXvy62rUBݦuBhӲ_Jť<R0;z#m1K+se;]{S~t)ܥ1]CKrCf =B t$т͞DJR9j"$<gPzlg&u7<uBKE0&;YEF`	ż4||AcYы$W;F6;ǒU`DEhJS
N
P]=4y&_9)`:v?*+xCf|P}5gK<XMհ5X%i=QnTpoA(/cѸ/&/ESqk(T%`Pu6vkXLы~\/)P%atkΓۨTڮ4;x̔2L#KCACo!M.PެT8[Y78k$t&KU٫J~)VSlx9DNrq3:$q%FQ.[3TܫCz
4(=2Q'bINWX^E5ثD }t@V'`'
N	Wk(0J|ť| ;Muq:<*$$vF3eAp`YM&AD WPUT%o
l`>8ճonB*5Jf;^mt3PyM.qߑp0O&}ЫasL;H)$G롚]$^\O`Nh/%WHF-[,f]yAqai)f䷅+]T2)TqǾoąhEAu)Vwr.|܎Tes~ nɦ}&;q{ڀW~7wadx-:udd#H\j8!}u]!|}TD]t:R؊Q*+}_﫜}kV?zL۽\H׵)ZJY330;tΦ4}*d^Y5TLVأg`.
qh1$dP2GϐYNaT\AY$~R/^
IQk8 s_YH42J7a3E\6c zj0dG43. c18(BKos2#z	D[\x4A&ph!eBmeX 6C>5%9*# JqXW<|Yxnwe3'~x0ЁK4<ZP'lz1I\"M$rۀ+#- )\7wLCP47&4QFr+-.]y1'd
{6<d_E3c!p0v700
/{y't/5z!te?~^&;vt<lE/o/1wZXkN2[W0 -xٞ:(z7uS2qca\WM9h+F&IBx;&˼.ymh_}XjיJJ")$R 7ϕ4 /Q
W&Lܤ/W2$sx.NCjUF$f$eU #C$/`F!L$v5Ӱv<?,KPSR(p<~#"\ \GE 찚?3G<4@r*ovo@9홙8FZ%-bϊ]ΦWn_+ఱY2q G=<2(I87w"|`tz< |Ȝ㹘m
&VPNQ40
w`۳*%y^l"Fr0ytl}PlJw-XM68uPW#K.>.a\
1}΄#5Fˁ	K"Iĕ%[}2㳓ay
)DxxP,"<VBxkMH8:7"#C*ƥdE `@{-imݿ,OeÍ,\Ppo'!zXte}rm O>2fj6{%!g	}scPP
ŒfaѤ&>#ifH[=-^Z`8ᥔ5| vxԓ*J -LݟOsl
~3Ok\FpF@̽,&0Qq"!B3i'ww_<E5m~gj4מQ/G zr:5?lTVG׃R`a}J~Xu$qIf0N3⺶dAE&qtFa؇֘l,tAD(" j=6Zޣ㔃a|q\^k]-Zۣo8f93*\+2g``s.E`VA*O-qmYhHv3rz
ԥ[r][êT9=xCxLk]qFy~q,WH5+.I^lG.IvuʆN)#`\?T<.MMxnItrt),|3
\gFQ1 ]oA}e ,df
E0KRrߣVǸ/*>9f,SgDݙ6BfYEdttto_ ֈrя8įC!AML(tX<LƺRbS뮐xb,3/8E%VnVӗ	FP❐MD}ޏ|2ȼ5>z:=$	a!h-3;>!3 kG+$]֛O	AkZI&/{{ATaX0<xeIkhH>$
-eDi0f 3\TmxiĬ8ڷ-GGn&ZJ0Ox5l/^􏓿
X058ĞɐJxmB̦>Pf>m9O3Tcvcw7;ή
(%g(=,wp
F]@O,Bgg2D7̈Z>	'TcJbx"7~u`3K5a`.Mt0GEαMgv|
ˎ;M
4R	ALi^yU=MDh!K4RmUg,Sj{L+c
Gi	U"( 
@!Z
-fWu9CT8&JQ!q`XT'т*YY#^w4p5 Stbjj3snM|i\~1.NK%mgBr\ՋC\Xc~
*)@2y*§!%?d	46-]eHlK7d#@*J,("
(G=;505Κ'ԷI'S
^1:pMdUNYaOkw8u=ENiv2%iP*-δ 
HtPi4$tR2 4:UrϢb>h<JR8p~WZTJ-`#0)<qp'v:u[A
:U%Ay)즈UYuleHA@|7]%{B<gB:QAJ~F>t.+i^0?Ȩ_1N
EUh`;sM~<?<M+L 6dq]
c1.mKb훵T	ȚvV4Ɯ@T
#Y`QsOb(Qy3OlO\hE
D:]ᰖbySw<z5X5rI!5Y]'SH93	5<|XYAX=&Q` sq	>£Lq/UkTV,GRg$wVl5OUM~y "35} Sʉ'# ŌƯb
`ɨ08|AD\ʜ+~(v~ՁY rĔx#ahİʚ¢y[4ڮdj3$cKLB8l¶obd4EDRXJJɴ>5T;K$Cnd4	r=v	ќe	
voIh(:gF~|C>/<Ԥr$cg0
FpD*75
E_qV7g$zcK%3ˠ^r5T
Naԙ˸+/	WHt	*q9bk
pIA4F'w5@߱VRyd_^:q?nFYФd[ꨁk9"8zjS|GeZpExc4g2[D)P1)V	L~B{^m! Hlܲ̏RDE#	m@^[h.,{8ʋrЋ@<9Ę0Fe <a^m9Ur"k?
&b	@/}^-R<UO_R8$=\UxY!1 8TJk8ޅ=*[W$Pmr,=萋 1h#빊x[n&*"=ȓP^.4꫘$̊XBmUt)_D2
1]h^|}n=ؖ1>7'dWeDV_dmZСmν_1bxTtNzSkY$$#?xbNͣePj$(W|9aYR&[eEr4:	)FC{+Se >7+B2]B|~

'w o0A Y4;Y-
,ak70D18~H:Xiէ◖-kד3ģxukGx?Թf,!DhDtMr9Z@ugJ ?S`*N|,)ʝ9hyw+n0e>s0\iz7ᡔTVXCxPJ򼘙gش[Õ}Y$
)``5P'&t3xuڟPz92ek`.a eD*5)EOUL 3،syYj\@:Њ83і

φҖ8	p0)4Y61QH+SE/*@[>_VQZwm#if2EiSbT׈h\po;VÕ&t*A/2(d+C/`m!D!:!a`:P?nH"Rlf%M83W3{רۻ\U1[	
}ڞ4ubtVCJy7-+lԂPYf3%L9f1PȮ~}ڍĤ5g'W'+GsU~K:w	2+ҥl\7d2=TK+d7
f:n28~AHgZ	8*V.<8mAyBKĺ$0@1M|~!BQ[ٲ̓<kY+p%u].+9iD^hW|iN=꾫<$IHCbkl/jE`h$=c'J5$9Z p\fP}P
v9e=\8H
jum۽"PoDm,[FgÆx%~`)-(u{`zkP\		4rh"Ǥ4qdDа>*c/ͤځ&Ic/g=.0ȩڦig'u_]	thƶBҌX1Dl6>l	͇Ekt.V,@^hK@(f^^ГjYlK<Ehݗx)$3'ق/nW9K ƟRQLU^޺%!ng4!^i=g
)
r{G1ތ
{HG Z3 h}e~ۛ@<՗#((\3Z2
h?=l`Q:lP	:<W;8oD
dF;:7]	X-fk*uN7it%u.OwàfAԝƿI5
GxT@ l=o)\3Q
a4΃I-WaP	̈́6)""f5H6Պ,5pPCzUA Em/[6TuĠ>Z,LU䕷pgk'~i/wL~$j+2"WX2L&[DA'Qm|{W,36ٌhr$!pfzS
Owcq
y6B+I$Y	5{YC?%jtrJ)0}C7b*e{Sf=*\rCcpKȨa1'raόCλ1QV0vMM#Euz+Kut3"HˤPD3Vp[c^{0~0naK9wvDji菄e0o(ib
me3|hpG6hY3.S(.p/?/CL
!q)H>[dif-pF35hFʫ$d4#:u&촪@n2>tZӼu_Æt!JXpnEKϙUSڼKFoF(ce/$e凅,ױQvO<n7*I*39;`^%Hw
~:# +b@Vw,D&MߖVcfP<]* J>W~I_޻S0loȦ$zAԿ×2wug[ǙўRT$dP{$^fc@3HAfYTjh1q ᒷHY$hY\6yV,
T

W%U2<]tVw-t8K<z_fXJbq4z'|+\2B	C ;eȄP4;;7pdAzg0QO=FH~{Cf
h%plp}LLn
17k+ƾ@)o@&t51jB9ƥ d*Wiby/;tmƼC
Yk4"2~U_ǌv'օ~ܯS>B^β1aT"2_ (X BFwv7ANx1hw :1?8'Jf>5lL7\lK9T <x5K͓D±4ZB6h-#ad .Vx劎"Us}|R!X>Z Y*iժr]'#Q.@.)ݖOxPlx|:GeY0iMn\R> QA6?<[TFlYW,uܲpl>'Z>۸S^e]Ol?zh3{Nڐ<TwV"zCi碋85BdsB(3*BS&)08y>v('~+	
HkTtИb̰\$>Y $ig;Pk8ؠ@E: k
M$H	vXf]v7H=^{mMcZTLIS6EhYB 2,
'J Z8N6sYsLRNcX'P0`JwY!FRW ,,3:D˔LC+%#FF%)"H
 2 $ɛFCiJͼUh28I۵__<y^!M|r\
uEwDԢ߼1$u`SmL",E޾%be
,j{6tIw,h?6n 7ѦYn=C
ejd<oޚWVN[an\鄊PEE#s̋p
c;TT4
X}:I-Mi
q]B 2MCټ:UVTI$
p.;%]];ǔFg\),+D{Cg_)ͧOh7"'C=!gޓF[t8db\LKph0Xq;ޖ)[Ҁ4af?$:"=ڏZ7fk.1azܠ@	}}ZR0F!)6-bnH4e1
zth tP{걧*:JFsQJqZp@WpF08R"Fis:ѝ0-f/v |faSؤ"iH4A%l@4irP+}-
fr-ٛ='
Պ*Dݓ{ݮL$

Bh߿r3[mp3S˾; NnZQā)31Mc3Di-RC8Y"T6\2cUƢ֟`9(jUYS5t,mT?ـ[+uܛ/j-0
A <7:=R\XIusB/I+*vXLW@2矄haxa.jσӬ9=ch:ٔ~m
&d6|e+'%teluQùpa
꺂7Q(]~v2GT#1I6C弝.q+eo~d&s]<;</g;r.u-<T$жd	EXk;-eSk{bL'BA4!y4un.7I?gQlm |D]a&uDLCdr1.)O7JWhh,p m$S?NJtA?jyf;JH4
:<ΦΤJxeLZ2^xmz }QȋߓDXRgkY^Ƅ32n3aLMUKvSwI2÷%TtSZVI]DDnz@8syVq)_d*x&:,|[)kao
/)%[Vd2I_WS5~gVM>Z4[\ګѻIX4zf<Zp"N75o\څ)QxMX"dKvY:
j!.G!\V`މ8Z#tV,%yݖ~n%dҁox0" |:"j!6EBH%C%2tQ2v2Eb%Xǐ;\rFl$~mE88E	^d8|0O0icxR5"
QMP2ѩ];mWe	*'ٖMF`M8VwX4]OlG*2T{<*rAO:6x!9
z&*WBޫd 3M(O1W]r>.Nmh=ҌЮ J$}޸	k窭Lh7Je!qv{8.Sqj]1䔼"2F(HP`'ZvL#J](w7=[ĖqH;]Pi蘂ĨÜ9,,^i%qCX*
4@g"e>8V_5]uNV=( 2H+/7HpT/(Q`i؁4k8\q`$==cVm?]f
<nԙ'Dg`zQa9Cb;$pjIѤqa'SyCo 1՗{PETw#%@q"{D9'H-q(T/ۜUQvnńOĪUY%c;\> >6a\f<hEbP^;^)<S<#,Zg/זx߷ՉUQNиAJQc"#,4"wdo:a&uO_Z\~$+]8bbC(^3dέ!N'u,0kX*a t`/FvNrtVzUZ0`ώuF	g ;ǙTq>~SrѤc m/l7zȅar~>fodmNK,D֪ ?q&9 .&ɛr5[~j:1>jDض?8%Nc[$QIAȚ)k6\KR= *LQ0V-99ev#Lb7רBv8&{"ab`TFro'.;K~vey+obNb]g6y4yiӽQM40[ZQ6bH(/݄P!ػPy<msIY6%8di?x5$0F	Ssa,h
|ˉLBC7u#G>A#̴M9P
`VB5.I<+Ch D4]6SF~mP\U)HIĪg[҆mhh'^-1OY79j"mw_X"sfLBH׀㉭5bT$pNHdq@;O`W	it\W)C^[5ېDenk[;-o8sHV׉#c@V7]gli!lCzv_T·9EbW+$k%K>ˉIhA22QTЭ7".0ÆmEɐvOű>٪7rT#q0nID/UHIB
&.RzUT9{jkJ]e0N[o ;?aC:h#h-\ֆP/wp8vmU(Kr!f).Y+sdJeZ&&:hNCJ{895V![,}[Ÿ['33Q[eԚlp_24+Xa=0F
wew UNj
-u/Wav($+4ȔXp5-7AS^
N1ǥ{L莊LR%}\d%K6#gb<$gz,uȋ^\.4ՀyCML)L
U&8%; vbc6lyIOp̦6N": >`^:6)=rIXgdj
0>ĺW<,3s^Tnj2D^;Ý9+#S,M`J(_&iKl"cu틴>Sy( [5%p|A
wrWVZ.Iy82dCn>m42_;>hiPV>=[Xx*BVq]3X&Iҩ
Kk9aee1:o12IeȼD/ckSMJ_, 啗Y'
R;UDwi9ك650-emQHYUnE	FQ6e`"ś(|ƒUhQ;B	MGAPo9@1#&
fzٞzNbP&崻iK^i8K'l;ۄarC02EɄ</43xY:Y0	f&YNƓT.؀7TT<MtP@iеnlI*1v}$'T`׈R}$ʉPWQUYCdH
u}= X/ExiDkVȥ3<S29|RhZb|u}rϛ:e{hDuMF3WFa-)QU nu
O`ZQ
~K-UCã>ߵT>qcVFEɐU
n%*5WUX=M")a'2`K-OiU,;LYhs])%4$[\hı"a0f^,
mcobt-&^ɧZp6n>u(z _K)''BFd.66԰c
0T@&C@	F4Oke'JLt<:;6g6"+@ވqlyԳWjhH2)*
|STʾ)4s@WuT4Gw8M(2 `-V	KPj ܞ&:Ztu~`ǂ>IޢNa㚱1SzΰM_IҾو7+葷'#pev^GF8Zg]Xbe?*lvo
8-Sy{`T^X=CN;<FvQIjO1ʔ \^H}i
X:S9Ib|G"?|2ahv+,JMXxD1@ZɼwZdZa!MCfR0d`b#2!e&-jyTiPE
rIU&3]Ğ˯$L1Xi
"KjUpSind^(TUX	 |L\ItD.oKy`
`Z8J+p#U->/]U'2!^nI()M>Tr`9!w&PC?/̅m8{M#e,`#pI&>h'Z:#ȷ*LG:(דP;o7xV&ƇB/7s`W;y<<7&9R2T
<:>
}"2[(94ad\ZP	26eUyA(x>yloҬ0h^UV1NqUN <DgWH{$ǫL&[z*F,>.Ş8Dn2f)d6,<ȄzLĐh
o<	ʦ(B-03,Z9.5sL|:[~|zSJi1vS`M1/Wj(piwOuqzPȂQj7CԎ0.s$уMW=rv"r4/hqaXq,Ѭey*ѝjj~M)~;4+3tY;XZ= ei8
ьSL ~3jGn6l~ЬM/%v-SFPOR9W!&AG r]g;
<+"<BgBL
38\@̆Żpx3[	.t+k}
Y+n$D<X.ܬP1^>ÆWE%}>h+)B/r&xc%[N o_x/SDg&P>V-uců_%IsD\bޅGRy5髾7*
,z~Eq׭caRht7`'
/=&UQiTAh )8Lhi۵4)/ΠZLlFVѶBA'gS!t1]J,P9bv+Ck冭rV6
6H88!'4.{0Winą2Ч2O_p)*GUE30g+||vƃKp&r5(.`=iteD0
nolCw<鹆f-@e'׸RJ%Sbh2stc!Vq*#uΨ
'8t.3U[06'Gܝͽ
{4L)P9encDX\+V%@H/OhF#b&ƫAnل:Ì4@431la(Uj1(rn{W}vr-4
Tn:/kLr
2	c6 '_MǡkдtE'!aaz
ҬpWNXAۢ^sHzeZ2ʾp3/B
g7
Pamf3ɂ.%l~3e_.R
jRO3@GĲtY&c$@uJS',-8sOy8BKΈEe<(!r^<05lA8MiȤ`]Qeظ(vYKz$1}C~
E4]M)7|?iѹa'
u.\іelh8k-r-
E /Y"s#Q]=tATAdo5ҦcY(,%aâedADd7uBX7Lm\{akSP!D;y3D,x^xsl`&%Bry:(-{-`T2SVIK2X>̰N|I)0.NHbvq1U:K֝KGt&۾E.#-
Km4ޣ{j
֗pmD1RE<Jq[vB,/{neX PDJRߓ0^AX:S̼.
+H
 rT*${21;[KPpO3da=8P_{RvRL_Qu
viYZ
U|];Ner""5LV5N
.nľ V$2Ay+1Ɖj7<4d;W zbL*zSK;掱IbM/Qyc[v3? 6vZFwTlʇ/`}nylG]6m.WHx@U8SMyZKӖ⌀iXIWkHRtl
:CC	z,NwN,^P^8_E,[T	e]Ϝ9!W je9!.Fu&ц*D6p#U,,
MJfdL3°Tي;C

E~dXiTP
rvmБ'ў-!֙d12TJ5k΂:cD:wkF#BőO2(4|7>MT>D'ڗvg'w3}jgTDj|Y}[`aY_Zh`܊ IXFV
`Z9"ƱLRńE-8S
Do/{4SH	
ugǽ1EMk%:c3c`>t<%E?!=#Qf@"(7DYy06QϓgQq4YJUkyw5ɓPDnT(r!ܴg9M2[6EQF%qC_bm~eo>dGbzO^3sNp;"FbR̐Ee H/l|F"R(U.^ȨK1X_U<GL.x8 T溯F[)ʽxi".Z-+NyV3o$
]coF'h,^\߇MC[*,C8R/]Α	EhKNJR|G|ށ{`1
xK(
isF)dnpyu%üd:'32Qzxtlڱaځ2RA*%E=)wɴ
",x3h23x#Cv>o)QJ:M2PaQkPX6Nu Tnj_貏Ldxd<`[XWe'k/
[4nIh~7Pf,$P/s6D0B\H6ۆJlY3{DQ_caҊ,ɰ*.?@Q	ӯze,l2ed ?3G}MȄLހ"Uv3wgfX!|3MF3Rl$ѦH`<o\TEw6rA_E.
v6F}(26(>ÓX'Q"+XR]OĴGh\N̍* H3x6C%Ց ҙe
T2a:!e:g[KhDxp*eFs%	BP28m{&b riЮ3yw,n{sFwђf;/OqX}Nvkwdesk+NH.}'CadL1@5[ɓr!ѱ/SFA'8
|AS%?4MapiYfʪL5Cj;V7bHL'&q6iPdߡtԣ.h)@i(dv.0j6g"RkY+aO[E{qӲsc
`:p22\nH,/`J 5!pyɢiU[zK?yKK=٢n0J'`^RƭmnpDGoѰ9 M97M@7A
߬NÍ,KI骐#" a.CL+á@"i)ｒbp\|± nl+/B_$s	C<l A6/_wxlJ;bj}siD$(^!9;V|耗.f⛽^^$؜<('$B^r7UX$y%>N)ϑg@wfS(BxLi
J.P`=
	/Co/	Yy	}Y|ep~TB;pkGzQo⻢\:ђ/Zc滛@P~p{O6GN]qEQ~8pOjp9s&Ȃz.KW	f&5#ۙGms\`	<.&/;!`.C49*s$gUD,OY5	?5+]Fr8
J)$8r#o@~sxUpV櫙|n
8J\X.\N:@[ȡ1)T+IUVZتɜ)<J7Sg#Il-q>9Ii<W#F**L_QO
/k%\\Wm2ax?l	Qê@(
ѰYo/Wc?j%/%%\B=&z`ԃl\i!K@LN<l=Pv_U%M^dDD{5gE`$2gBEXUHrHSA4sCfLuZu`I2i&w\lF[F_n&CKՅwB/#4zuiu/LJC6畹ʦ2E>G06m~!O}e$mpf:ƕ쬡l;Xg9Z/5ND{˜:HD
;]7m=|&LRh_FI c\"S\_Kl%v77i<)*XK с_5DKP+ϭ'sHfPYRe$y*KA,sv?uGd#ҋQePD䩒8f4AYJvD{TJUهȅNRz=k$y!{'1`JxN	"X+55#z@i':UbQK<ҖDyK8ARP*>d`t|#l~wZj})cy%u$N1CV4(|0Kro|^()CSp˄Y
6&_e =O)ZVFǖRPۛ{$sv(,q8J%U4߾x$;{>RIKa\RTT=c"3kBgnbHXqॿ?#9va0#Avvb5=V-]N~"SQ+jgˈ\7VEXE7AȒ14h鍥z9ȱ<Uo^ :ޗg@Ds'p~G0a*g@ w{v
O?AcQq*7Has36%a5LC	23l	b;a*ʌWɄGzws>X~5'C{BN!r;%\n`FA~Ŵh2x`|zW{%ЩI1MvuZUe5ISępaHUDIz$ӮrՅx0S3̴t]wH;VK('JyG]~dyM)$QH8FΙ2kH`A3%AiHA!wh=A!3d,i9މ7ԃ&{in|L֜*B%DsxG/sir.Uh}.{%G1/ IRD=p(+4/~T`L|ХlOϏqSp6%oT;r!uw&wdQpqf٢!t¶%耇J'= [Z)ڡi:-*L1-V*ؖ|d.f<^eXo.-K.ܣo3s*Ըz8W
ۂXv88ҞJqW2Tbr-MtDAi*"#/e|8K/&$"0Jv~*^Hauh)MfHhEc:3.%M1Segs\
+8/	h0@*.҂7]$DG`u-|.Kt 
)
Yc|"ɀ]*OY,莲,[1>,1xs(>p,OT%p*	޿bPe%͌
ި+!lk/ܗj=Bq_ĶDg/J_<HϴmB5`zh&P PQHl2e [;G\	i#[4\2MSUaI/HBg
R3=REĭDg[^|щC<8Ni_v4Tf\BŤ>
9Л:_xg``Nܞ[#<Y*)!rzTIݬfxҺF9=j/LSt7Ght0y] $ե!7ѫyN}.2hy1洄`x_ r2 ΐ-ʡ	OMg"ӪTd]n|![w9{mL'3ZDh! D)!q9@(H]	>*/V/% L
ABB2)mj2 [?Ӡ𝿳sn1khac`9K'V7w@<kJ|%[Qu ťy^B%{vtb"^3reo|:7I}A<ÕqKX\p6nq4U]Q37Qx>:F]15pX( 3ܥrWG[PL0esmQbѬgj㝙4%da34<$M5GA;yM2GQ\KXH\*0Ԡm#ၸ+OeLDCw0W aJB}łzp_^5M-=S:`+SFחIW.dw4 ))w,p،A0>Hb\o8!ܮ"P*|o0qgאmHwc}͍%rdKT=QP;ٚx
s`\FàE]@@vt{2@;zR B8GK8DG9>៊ۊ/}Z|.9 uU]aTJE= O!ADyz<UrMB%{0delr7r.ϟ钘dK"d)UC|^TF`g)^S,zg1Ur'o(/,)4(T[
T'XUuVr/ӄ@hqP@3&5O;G--f93)P-E>2gFVQeЊR5`"&&b"њ@eg
O-#+ZvM(BҶM\̳Edg"Cr(83#RW{'ྈ$ř]OZsiX%yIle7,bpΰ.Ld_e҉&(RMqR	wgA~_?`$OmNZ+7S-5Iv텽6jdH;$\̄ڪ`mqRt#j=h7!Rt^&0f*}Es;!%S0E ZrG=\(4/PEĴ,HS+̼^"E)sP	m1IH	*/ՄU&9	;*?8.?.ǑT3,]/Ud<%9`9<Ezd1FmDTID$p*
_T5[q8@M:J`7`J"gL 9Cl2%F̧[gЅ m˖cZO ۇ9ɻ\Sg}fH"=<Bw]I^Eٻd<9>͔:؋,>!3,y(-G@@`P(b[РjZ)6e;7Sx}Σ0
AhϷNEeU^5*O(0 Y0x議-/!pB\$!+L˺S3<J%yFȐcwR#+\XQF&
8Ţb3˂9/H{p~D+{UQ6+c_VU)T^K)ȕءg3saUZ(yusod},ۍ8A)cȢ&CT
}IM~E#Sxbr  #F` !3238ࠋ@f+{[=%hEdM.ēP,{U[~Xf-7dPFa4)E@#!	@ʮ~A+ˮӦE\"MfHLd2Zx;/{siSjJ=2QޏZnraKRbr5%	Tr!](nS\j֦мk@"J<S}Zltd!::+_cW,	_"F8?x8fFUea?f9c4@*84&p˓e
P4?`
"aGʨ*F2@<~{h"OF"!:3x˨ij:CdT>:;R(x
zGCuYSmF(L+^zj
<:s$BuS®TFpz!79LXHуs34F{F6
ue{4wrlT;E{2G@JHR*MALw`2_N#WOUec~]]0p'*G$Ȓ8,fhȯBw0n}1?,B^q,hA>i3l
u)J+к%jRp$δᵀ3ZY"߂<^!FHu	p4Mt:Q(G΍n]/G椛'm zUgWi5B Xɷu~,5_Dd%(
,H~Yib7bF&ȗĉ m=LjY´Ƈw{/qǙqh*:' X1.kDj1
ӈ^]:P5.RاPYH,,"~[Sq7ucR-4uwDv!%L`gS1`
d/]՚56]V 2ȧ=Yn
H=*${Kՙ
n}8phiu,>ʑXe	N$8|KקEo}-T[M-{qu=lA s:'sraz
abɟKq`JO/(HC%
[Y2skf
B- }ѳ9ٵ2O6I~u,I] Da?ʮdD*E	u/w՚	ipu75yjVw m8ez+72P-da%*2 [Wɩ!DJ%fD;rp%u`)슏:$2SQo_iGB}~$%4T|!w wj2z{% ZBBwѩ #a/>?Tcl&0r͢rOqhդ
ʦcI[No:8wc[g .JQ_sM*0n0SMalt&)Z> [[龪@Y1`"<t^͠?@?dDR fK;Yh|T-ttLu":ˉʮNSNi$½&t(# ?KDv#PeYǱJ;)J
Qh.Nr]4cƃ$2=GjRE+rEp/vA:3vd	=91R_/B܍0r<ac]|6R4%[m6Q3	`X:l,&+xlgb!v8(1a>'px2
=孬*AfZy;"Y|.
וaՖ6hKJ,a뀒=ksfK64٪0_<*/Tԇ6P=$
HT
3XjX玐Aь<},%[RULw_e]L;a*%hƶ.wXEH ޴VL$!MJ\z "XrX'4 '(͈Uv9rC.'qO#HQr<gF=5Wt˽_xB;b$b!3hrB+)#+q40FL8*/(E7laٺ!4;~='c
_&6^dhKO̝aAi"f0.R 
ʐw?YzlV
@R#Fcab5oʌ_d.lZ"Ua_l'x%튀r"i	lG?\#Tz;1(ْBA?̗);Xic[JjW@66wv%~7K#t@E>V]zjhl#JoD]3ECE&
ƫ==5 u|?fa|+ 8@&1UDeBrtCl/
xxB Ua~iSX$B
'_}Uхf,7$poդ5½6n1G)VZ	p{KQ7E'k!dFt
&_KۻHbͪĆ*
fQk0[y]39cU' ZYa|.HR7ih;ck= u|T^^ƀ?""l5YRV5|1_ȏ}1@x# M@Λ`(ˢq
&m	:TXԼ+qEV.?$:2ƲʊU&]ZC+tm 9޻x0ުݱS>	g;4 |YtͣQeXY̰	 `pPvBNZ`=.
fRG6Vlx$D`pzm=&A|sjZ(\%1Ukڳbpb+z +pQϸIܘoR`Ԗ<ظq[uĹ 4s58!b>daݷA;+Ѹ`uca+;"@WWܑ;"Чf6\&H8LЍc-Rz($t^/dKQH!UPAHʗn1:#Ct<H:xl6o{w' ߒ71R&.GMD`$FUUh ݄*ӗ"9"jۡC#jMLnxq]`mzT,Jq
ZѱanEsJ%})Ad0/21&`$WR±#o*Z3⴩faXduWE8Έ5)RrĄ
41g.Yy}zeG~:gh7a&PH"UJqK!(|b)\c%zB[cwb$@Vhl& xOB{ơyN5`(ſM~AuHB1С o͢ . b ڇeT]T̡'%*20/4WL(L;[?4Fd}}pA(qktLq6
Ǻ3Q <
{1x1+dUAMtLGɔe]$iYeI+
%?Uތ;dfŪ8:llO$u%2!3=ꚖoYyb^ LJZ'QV*Ot0K4V#Y^ZLEAd\t>Wp
$!-[^2:v)q/Q6.7ӂg
5<f
+2ȫy./U-.VʏervI/e(YDCJj?/'ʗ}.}]*ƨ5Q֖4nb
(Ș;2.0_l3X*n4Hw^i`N1.޵4*`5 >*u1ODma>9ə'w_ljSiB^%<,~F VycXi$tީ"8Ş̂ɽk^'a͚Ԥf@."2䩞1i2D5	ԟب-ӡ0 (S4r^^%r~J/VuV9FhI^<jJZD	k2zR@pEEe(SJ/
Wpk".ob)~mHQIih2Hc=i|#QBWZB)ɜyS9
%CCP
	T`VMp|ASwxs:`WOT~! *uÍ	M-MUSy6=O!qXQo*[UiJ'Z9N3%-uY4 y<:% ΖX65,Of)3d ZC}\^\pSf_h;3JU0^LP(`[8XrM~i%8v|p r)+S AOXDah}60
=bZȖ.o ocyH5|,r2TFV-䋼S]638KY̙)PHrjT;y.Ǎ" Rm;9#ȉVl
DWuP}
(M^(̰<3˫o2:̩6o
FtV(B뇩㘾P  TPG\43i`%Ql

Feeu@TO@M,9SOl.-dI	W?udA!pdα)䓪%)βFZ''ctI"(cT!IシR@ܼE)8K,%sY5f]cH?lgyZpH	YL"V4 ^$5.y&˦ٹ(/;FP*1~0 w`$oC.b0ɩSdfUpOpn1e";"OUP<RC{5eL;2i+%CItr=Iʓu0IP/ -2e~I]iIPOfKxH{n:M8C_@A"'gZֆ&t@@/+bz6	5iHJ=VҀ*^Ze]^]ެ,45!'?nόd^Eg̖[ OʂX=״7XWj=F\٩tewFDjJ@1$xPuBk"Vvpvel>XT(S6? nͣ6©
N0hڹ]9
Tվ;3;/2ŵ
D~t%(@L?W'lJE#KXRDF$i #H	HdN(l -)皬~?/ŃW'ғ=S-n'V{
b2
Vv6+F+nqn}t\*,ʮ.1*Mej +L[=	yGi	`Q}~۱xo3}ѱ'Ae-:3Z#4%~(n;]Sv*/_Г	iJSPC)kr)	Ȃ1';a$p:or)HL5vaG{.:1H'x7ؐ]Bf"ַca5aZKCW*=M9zX<TNUN2M@9Qa~g,%Fk|&>Pj+9<E)Fĝ$F8teB (LLrC4Č*W^)V;.]qdK:K3?̈:*^>Ś1شTVmM(E{ʂj*}*wSm6%GgYdwjzi@:f#0
 2,7DPPVH WB/VD
r^^z+47TdGqd!#[|z2`z)Xu)!R\:dN_Ȅf%= u8s˨32Z^w_D딒
[9
7rc}NgV~s^}]B:eVAOO)jsd
l6Y%=lxF杼	mcNpU<|(<z&."#LਪQ^JH8fZc4ݾ؏<y Jho2W?zE~ީ5A]xاX #Nq\QzIn.8>gR&	En]&.ˆ6

ݔW@	]qR ,.΁N*5@	.&\۔zDyV	3UQNlz\,|
TyKhyxifnz^9#*xƴUюynHV|9
_#VL6%@ ҆A$leP6;6( <e֓Łv6$%I!v?"	Ό	܅aޚ;꘿<Z>#JM'QS>1]B^.
|٠Ks|eHfs2ReG!}?-*'<tSr8Mx5
|wFЈKh9ufޔ8:T
84Rlt֨0$_M`4}>CB$a,37jV(;#0$KȨ:y3ϫb檢Iq+Sjއw1oz_ϣߖjC* p y]=")(Xgu-	
2*,O=yɕ
GL˼.pBTrˉqDjefY1;W9WMUm/~	]kUMs_PGIv<Z/2vTp/jZiQHZhcY$KЙ8Dcz)'.Jƭگ}ŞvXv+yo:
UDv-`A5o`H 1g&˒'k[bBx@ ✬xfW){a81o"K݄mR-#j=2(;/p{[Q{]_.%q	.XܥԵm	YQSRk՗ڈ8+D	<a.[,m+vܤC29 mHV-,Lk4Dݒ$ /]
-!9r$TJ3f>,8d6Yg,I\ٝaldS[?Ys/4~OTH"@Ʌ$[
H6zA\L]EcbuqjVJkU5cF6:-L[V3',V3,αA!&@8e>bⰼE޵c Ͳԩ$2_BFKhDjh,K%\@alpG'uԾ)CA X*koĄiH	K`zhNxI:p'D)$lYE0Y[F7s2¹̺=Q6 'F%+
ʯ`ޘD. n;U&Br@>ɶ+V<vk4
xP*_\ uf?(W#iu΀'=?Wpǚm^"/q)F{{c"*,!0-+1vE?Tr%
56`q^$FLPv!6297yl`o~zr0%E
ޝ*QNV++ӚV+|,4RȵL˖܎#kI]J?~@"U\L2k[-]6n0*DNa3%/EqOm9ǙƣdHcF /F5u^(IEN%H6\":*/`T}g`Zz'ŰrycM8/ 9*c'#}$8%"X+%_d?<N2X"H)B&_Q/%"LL)%[dQR«F\{JS$3O=Uz3ڤ8-ʢɀ	kBHM*0*o6)%Ed&9&@Sr!1R1%CuBL=xٸ G,Ƣ|'o@Ȝd Wvu+x/29(*w3Wcʈ.+4my
VX縌@lDLvpAidʳ=UofE(A"``-HU<_Z2(ĢvEx3|w@1q?cͪX7ϐ8[It0$ޡk:|`Ԗ9I@?ކ|iVA"1{qYWXSYV>
*+.}_	TU߈0
M
J$x9'Z-oL8
k {&8ѻI_T``TݹPuo BR@я+yjQlRv]L/R!iPu(3quqk$Dig@tkDd
&2hrq i	ͰjP9s/<WYAˋAȡjqp:A8
!\OjҲk؁7L^ Аe`}mSmH 2*2̪ XmtgcWA2	Q
HBqCmK%z|Xv1	fr8[cgQ 2/E.>'F>-
W}+wv"!6FıݼA	QV*'At
aҙj0UFEtV#iK ѱ.N'V	`,ze@<vix	Ro+R*&
Eā
qb5K<mCaU]oE&m&p+_/4w-Ênʕ0\wNJ(~qCH9H|_*3*ҟ	9D(j(9t.8m;F3:uXZ^5U@젔>.|S'?y8Uewx,x#pχ|XH!"Ig:kn%,kGlZ3k<CN72LU5fmI:jF52C2Iz*
qqT4Vq&QVY6Y*ZVtHWml(KVeo&.yx_t9(p^ԛCT"j]&UlD֜Kز
~Qy#Y*s$N
.M[\S(eWWBWETJ"YoD
4^;.'
mIӕ~utbg.CsiXpۨ
s%˶Qn.;Ul]̷$4pJ"|YHlK$OT?װ2E`G1JAM^Rsf+IP|\g^Ie]<<0o vpV8<\9!W0mr"6Ν>YJ/-B3jݭ5-ӡb/كEp e\ׂ1m,<|aHze	,4RV0F8*O,F(:'8d1h Y'!,$DKD_dZdE-
pn*Tyy*Y*Gp	A[R'pc ՘ҥ^f9,eq)\,Ab8&lZXl
<۳"Wk\x8΂ܨDӂf΍rbT1w	fbyrkK%}cY(+v=+SHg[-!#`Z=X];6Xu{:V0O=,ʘ0|T|kvZ"a8ib?aZs,5Kc
'GK
oh⩛b%1\Fq9oV,WcHRn.͢P]Bq/rUP*[/h"tyԘr" 1rq2:~~=RW *'+Ȼbo[DK nkx,2zU9ޒX**wKRv}E+;GK+$	B6)pTf1E8~z߀>p]O
Q%Hf8RěJJ%:HkM_%4It3Dz	_ k^L*?ѝՅ"UV"+BrDis֊s!T@	(V9@:!?++K>`kRpt*4##h3z21Qod
"su0e%-6󄾯Z.4pά!ً(ͦ)L|^Jտ*ln:Z<Qz-.Y*҇i"3L`LwjRNdI%vxď,n"XY^ =Y‡ق_ڛ"@GAHqY:R[a`̏JO>p) 
>h#'BT"8tqD|XYvz6Nv*QU"nJn>kzH~L0:Xn)ez?bXiJ$*=!\|A!)fP=x7o `Bh6`Xr *Rv,AWH+yD6lѩЙBU[y$h5BҖ+s2go)a?|fX_? 'j[w0/ۅ-:FH`I]FfD.ژ:mI䘺ŤP*z[PJ
p	1
h/WwS^}!̓- ~<6Q,>4C|3e_ɜ):K>Ҭm{#GyR%JEIAHUq)(їzX-ɠAox6'n,}r΢c=B+N0Y@mv#
	?8H{	
^YvE`BQL)E> Iᣓuft/TtSg%IKZfa$xn	vaP{zHXUH2$=wzX`AJȤ;|D_SzۅD|I09A3g
i+Bos_CU8Dnq^i(ΪaBA`P/mf"5:1˱̖Y.u\jvxL,]D&(E'WޝΝ(J*CA36SP`CT`SY0E?fk݀ q_`2߱ɌWhi$D-rKLؒryg'RB\SڶNKwPF~9EyXtFȪaSp`:y&E`˳=O2y9U*%Eq3fN}jNϭW9R2+S;VܼCm/]J"LXЖ{G_ÁA|E85)NMXdzA]	X?U&RJF*!PE'LL]\:rt _bYmְ^9OF,˨
BS12}# [؅{02S\K` _RiPEWj˜RAfq@2g2SrIJ[ x{-eu;s+UY"¤TwT.1UCr8Eǲ JL&_$AL)rp=)iWXрGBfC.ZY,RzZڱ Q+iTw( Sk=XHՊY8T %ZU 6_EyH:f-S"fēk`榀Q:PSO;L \`Z~8ɖl	HV$z%f3W4ޡJ܍
=hjQWRɉsنw;J%EPa9YL#]mW>\Tlޒ|zݬ@<8Xpp(V$Ta#}JE2GfkߐLZ[q0[/B9f}x@MO	ʑ'sD(q)6]nӵcTP$X)dSK1M_Z$o*=:<6ۄ}NTve$Ukdw j3${}`_ZlsKe[fWe/UVUz9<6(gd#VB>xlL5*[:]FRrw]sA5HFB-ACr.1! cf'[M1 G+*е'~ y˚I+Mh HDj@GUHKPBAZ-P?QVwveUawOX`;0?2i_9B#Bxl,\NZw*n7 HQ
4û
3^ⴝ:![3RŰ3ڋt%:gI|:i%֙hkGh
3ZJi`|5V_07V8s'ȠXr3Yt*s S{_尫30|8E	dMDTU.~?(VJ!zh`X0 wUI~QxecD *%|5Yy<ViFv_UW8u5Lꘋ7ƒen;5oDIKr`"k3ʇ޴HJWS%UKޔ5%d|ęđ0
%>]9*5}S;:ү.mJ%&GKJX\
YG0Ďf}r0n<Qf0>|&'g7YMp=c!I:R@.P%͕"|ܹbVypiӱNػ*cy'۳HBou#1F턾h)IGWu2w
rCM$u<^dl]Xa#U*6A60/Ih|q,E6c<ؼ;tv{$V@=i6҈,bW~j*f\B5`CO7T߼)`	j#WA'i7j6wg
Ug*jF꟮e9468X|!
oTnہ6ZO@Yd 0Z$q/E̙`L@3%<]UPDzAu6IKOML V-#lm#ma׈1|kWy3
QxITՎ姱l*B%61Cz$Dr-`q:
m,?g]D40QOVkVP ϩXLڢtÃ/y,a"j>{00Y/ bV]	'l$Bc(N{%9?-"0OPBT	(?KA(XnՎcC0`_GkT91>X*QJzGx,d>XX=[`eG@hDmNufn8RaD\({PE u:'kG&Q6|^Vрc({;y`T\!(dְ#`Sva߂)sD0'zb-h^G}`:Q
uay4.dbƬ[q~H}[q0q榢H	<KdұEPXVpr?2"E~w,0gwfwA
"&P^Eŋ:Tjhf
Ql	RXdV݁(Bbh'`ԴE%.^SVuҡ
S
#^e'`^:0NWD:y+ԾJܨO(58@UVOG:<ߺjr%t<-lu;ςpRmuٙ)zw"<mHM.S%%&p}TX.rٜ<UMN ѨpHqi_Q9s^
.80ռ tPѝi,j?X?h!re*耿.]ZctTpKpbb2
mv{+9][{ȝRK5`7NKBz<^B8ja3R<#Zk#N)Wd͕<Db	{y5
d);8byk%V`ϝ'Ky<WPq3g8G)+Xb
&"Jq%䬋GoYB,3&\dH c5{W}nA\I_ǯ$qo'{
%)#(	6;eN&,8{!ZUΨPkNpDiQ}|ЅhbN4#YGeNV
j@m[^?`P5A`[Г29@s2<qP&/"8=B.lk`PƃJ-H,נg2n&=	fMm;ip
 /&`u- %z׿NLxWoleKDsXh7ڿ,HDQlņƢv(PX\EZtVǀ]ү{&vJm--'
#MRj\ֳ:'h06GM}#U?2{Ą
הuXwٰ<^k"D :޼2C"@ݨf=<Mj6AP/<-:e<~C[n*јa@'OeqHR[
"v3$Țw6ߴŅ\+((_* 疮:L37{3J_3$=h|~ʽpב1iRW˽	봊
EFNΫ#q J}*f
zF,rOGG"M9Y@+O"7
rabr)*
"7MLN'+=P/-Z>eu?Yj(dcXlBCy9v$(F@fEg2NFM>*SE
ʂd5u.~єj3TR2@ %S}PڤI9hI(Tؑc
mx~A"k3
:J9hRWL}8NQ"  _d%":f3%Zey6؋,R4=RIVܡ6qtxlHjA$`
<|Aa9V*˱ul2_21ih/s-ʫ6ӂ.`0&9b+pUM#iʡQ~#VIϔn

?Un /߀VAX qZ	?5<.} Ō0^|%ExRaޒvS&#6EIns柨DDHl[Pf$ν.:3$dP\y+pX'2dq$wҁ84`rp4zB
UΜJuhK&a7t)nvG[hPvoI#Gͬ"Aimg'=n#BQ6o
vob	;wvzL4'~j|R43aw:
б?a<I:t4P6w	Htq+q139OLҠR֙o݃ejeF3
pf%K/ڗPKB05\ټWkj bw!70=p|eԬGhR}z S}j!0tMrpDz],3	!0faras&7S+ʴj]R5&"/:Ah|Dg q4 iT_5Qei5P6[$o/*^&f+2y>W9+DSݘTa.߫K4h&\)O}Ϥ=Y#S#䖃Rj kx
%i!qyHq}:Bg 9d1<8A<yVnBC^Q.TZ؀]mѴZSFvxk*˽R"*Nn7]؜TE>`x0#9av!+x
f9-X8Qvl[ᗳP(Y+$t7H[	kL3˻|Ux5SB$mRD2H)zza
1g^6֧ 0A$v>:C^}Ai E#Es)CFCy3ް./Jpn":T־)Y$zTj4NM
#Rg%KJl1,&Qӵ· é=9Q3x:<r΅!ʰ	1IqZy	bQ-q.>Az:)E7Y'B'(_J#*K!!9duKzv"6 U#_%je<VDVVN8f\U0]Coj|VȟLԳ@S(W#k( = VNS!De%+?
Ҫb'b=G:i
Դ`O<CVc-/Y.RahR06D+[	}j}ݚΰmroeO2qJR4.h%{Ԥ	Q<NYR"g"%Pbţh
~̵>e*6Go݆dmR4LU;E@\
Ptj .MXl/ۆ~{K(n4VP
q obrv&,	DI/yQs682[W|Pg:".ɺ/(UΣ7DE?9$-sH.{ʳG$`5ۆ8Y2ue)G66bd8[`]T+dOBWÊوȍHJ"|\$`Rtg\ۢ*o_Z"V̽od:mT\`ZZzɥnIQCGV[
0l

`z`j^) P7;Tx'"M, [4>1qv6edp!*O_Lk%/ж,f\ T%#㈜`ңeV<~Hb$-lUFX7ByNJ3]bdPݠ}9S%JI*EH(if́3͘ <݄oUGe/sAq=6e̮8Z<'!mL;yz`Mgy^E6H5>r,=oA997/@eQY3\}
~FrM3(<n5nc  QnLbay(14dHW4eǘ )PlgUnӝ۹R
Qd1G-,W6CW<xL߶EN
<z$r]+ZZ)2Ge7",x[77'd~+7"*̣jg7n+qfCdep)(3BZKϱրKs]f΅npA;pļ Q'CI\%(uT_0ɶ=f4AJD
uȡnl !pML_Q[LMpK½4zH5rM"I;͚^U@=Ⱦ̟2D鉦E#IFI5gsn6T(
dO	2I;Hw"<}hnCsp||"+ڐ^ޱaG"r̉jdq|A)/@[ED̳$;$yc!XsnyqUQ
aMAuS*=݉䜟a`rA?wC	rՊ/v
)+wx0C){*^I>:a"v08
 .e9[ef^1vA_3EuZ#GLH
+%pإ86KvN}a
rb
Χ\f;q2dU0w_ͺ"
mӻzzv)9đ.q,Wa܎`ʑnL7=OKAA<*gh {
	?xWGJpHnB|18	rA4, {dG2j5/TwW?Ľ:nxw,~MKI5E(S\zn(*BIl
W2	
9^sL<B1r`ZhлȾnQg	_xիNpA,|Ÿ7b2өSm"
F3S/j*UƱ9;/OJvɖ.Q}at0%7NΈ82oF!	4/9HlO毥JT̈́Կx[2Y$;%kl'b!`<"0HJ*Xw)XmΦ8YJ7~Wh)q:z"&L2Xs1Wr\6i	TCzÐy6؀$ʾ@$ FGT|]dkOE5ȟdAXMIFizM6_3rq=tPj{yNE,KaPE	Êjp G溂(ˑ=iJ(<d#y'daA8u	3XK}Mr evjbPd9"$B'
	#=-#N?RPiqMU]ڂJ{
F > $YFZE_$Iux"n@(?&>|3Ea;t'ؑ5 `Aùv'F\{>Ǔ8TiÛj.Z[D{!Œy*R x%\r'\LLkdK0,-n	H%4T!-(J6t/ RЉcw_loivk4|@
v($NE]ᚮ(( c?غޚk,F䪌S)2aU:Ge0YhoTDG,TyE+__@ye"*O TtM,	QZeᱴܾ)9L		 gXbPrDі?

<Hyv	ꤎ
s*Y`;΅`lrs)Ol4TсzHsH,
1ǡ4焫
Tؼōh	eP($ V:Ui	d㉝P+ I^Eowpmb#ua[G
"&&1MF$`9*g!glD`x0G})#VVlpfVrh)/$LՑl
Yc>&꣇F,_fԔl;qlo#q@t*lZ5Y*oyW)#%NԤ=Xa5XpBRDHs~z<ACP	`1 w)ta:c	|"X&P]VE7*rě2fƨ5*3
m.rܧ	]".wCע%6,9At&aq%@EK(BED_ҕA{Wty# )q'<𹀨5 "R03ˑ$G蕸/\r>Q(`0ʌp7#uy"}`NVK]cȏW.Lv)GU/;;'2*Nzf%#Lv&Ob~4g_*0XFUZTUz/f*i
{0\4̈f]JM.T!(e4`y
1O2870Y`eh:H9 ;D/{/; z*כ+]ûLi
<GDQ 5iP79Cf@ sx5a91} "Os=OoZ C劇;L-i<ok
>Ev
`a	/(23IZFlgW/ĝ(&FYꎠ%,QP7	Cw;TNlsюm9i-b@24MΈpt$7PVj!_c:Kg!K_V$Ww酘Duil|RvH,`zvm9=⊃G&|^k)l2SV̛]o
]Xe4,`.%M=
%oJҡܛdE Ga1=6)ݯÒh#gQkP+0EB5^$6khpfη),EmZAyR3Ɯ1׌qILY/q5Yה+m8̩"g2zp.͔~LiPNLKb=JL.&q!quIKf1~ cՉI$C?GBpY.˝m@5=V>6yB:XUz*
Yo
1Ĩ@iL7؝C)rL.mZ&LUH	b*N6=ˑ0\zLk4e`ݜ @:8\:t![HVq-$yn5ڤ7h6Akvh:w |Ĥr*x++Z-4#'ˑXeNᥨ6-X(Ll.Kr*w)"(bʣ>heMfѽJ		!#D|5̶ˏe.sX
cYNԄ\qkh_͛qDVC)+{1kzQeCrW#=xdO2_
 VC;J܌0V˲<l'#G;-ڎO4ʹ=	lhX!^
C7--_C}+F><p2"9,r;md@]55#\[jҡ񎒃(ⴕ8ɮ>1ل0
6{vP`(BAvYtP/Iq6zJPH۹ߘiį=3/Sb5Cg;\
BWmIzc\-RJ
bN!p-d@[!VQKdpOљ8sF) 93&V1|_xԼZF.THq2s,D7}bDlgPiN\wL(.Ի@j΢/[	6VvO[oq%[l5پLfx5w.A֣U$
iqcr݁!׃lǸlA@jxu7y7
q)QrG1Y=]*D1hZD_(rƄ!3 Ђ~P]et&?K=x[ëDevF9L阛_u7
d6Gȋ΄(dBjZgAȳBM6=.bY9/7-/D! <x߄ɼFo*oقPQ+6кd$Z%KH3<woKHx<Ì{gbK'M4HD`36w@퓐8ih5cug~MԂ7)5#)s[5cYT ; Yzb]6OP0\ȉp@;dNꇸ,j!D
'`-YfZmeq$t-DL0YFg.u_ȷ.2"[
9✶9< CRZp$UREp7D&W|6cB"YE<;&Rg"<vBe?Fɿ`%d#T[fgr=Le/HW1
GdE$91R"RՒi<Q?*	
EJrb)NaS
K3khCvŎzr46 ̾cq+j'v_Koc$nbf9QehřN^y'vt1F#B\|=̎*ErV*;N!' Xש68KN"eaF9
Űf5]a]YLk<-N+tOmXr(]n!-^}Rk<*:'zM,#<4Ygf3eY8Vl
 %u;d`D<Jd;
2?B=M; (vqӷ8{c_OObn4BZ
k!tW. 
9[_Qm(1|xqq&sjdXW;cT5ArlNמe|>za&ѡnU7ʩ>;3Y²2%B"g@KvE?)
frI (byO
w 2x OX)Ñ%4oYJ~䚮2H,]0MW5X2
hQB~zh4~.G7ƔSv#),+̽'fj2`FC/(@d>NY4=06Ş&EׄCX,
d&Tf)HΎA8,8h֬
T>ί c/p>O*
y5^%ȟZJA^p%	Kr=ZC)qݟ4S@a"-N6Nc60GU"䃭T_@zUx&(<QD8Q\t,9Ex2v|Ye6)J	 gP]FgX1].QE2߻^IۄLFtZ?5ӽfJx/-X	|BemJ-$JĠcvҌgL: 5֨gQ%a h0Sg<	/E1]ٷY,
x3zMJe~Pؤ3	&;Hy^*Dfɘ!țr'D>>fT +Q/Do
ñѳtüCl,C%ދ"
}	cpq[l3zނs]^$,&[uNPIc,+m1H6	
Ev2.4g LPE1uL"#=ը+1QReivwѺn#[	FCf9ZײY`܉-zh.~!Aթ=VL4y:J`O!wW*K9'hxe=\Zft_z@@<#P'1FjraZ
	ŀ+.ʚlBR1a
v@*Jiz2~+ !75sY_̚,eZ)ʤ	Wl+p.ȋypuf^Uf񰄚ZtKml3o\XXs*nGc#EXЧ=:ƺ	"n:YTzvVWJ(C6<Ac7/]|Q_~drЩd}',[U&f&H3l.,$})7ՌȆ:h㶗/8~ے1e6}1ڮ!r:;gb`QO8fk	Ţg$#'M604(t)fDb[|]3:)0X<
=W#o:ѐXbF/Dp
RaPLPu̋Tk@rgQqa vTPt&\XIǒg$\sooQ/'0)
Je$2
|(dZ`t9u6*1SҪ6CQ|	J6a$,S]1H+[bynL7+NZBe iY$'V9ʽBjT$4/qqz_G{P{eVrҭn~%URmuSt/ˆ}{\r$p^fR9VҊrQkMZpZլhZ9Qro+Ҍl5[m$)oFnU'>P#	tŻUoLCsER@-1#fԕ[!
vmH1(ߖ|aV8#o	(Lhzv	0|1U@p{7E*աBk:l_
>ET,#UbY+SeZKiBKJ-$4ivF;$a-lT>{
AƇ&fT$	;Il¾+nBW'a0b[2/c`$E_8s`D]aLNb5G &W|
$
e&rʶ`5foV*<>4`wiXFUA}(2s^6_[܏L!*!!?Dߕ]p 	8j'w8`(((2:Jm8V|h˵]à
vd2xv3UXx'wMIx%ڐau0Qf(pl1I<5|{s1|cX!W
tb0%ӈO:B5faTMNL;B]JFIaëVzk!ќhSp7d@*8vp݋Tt`)yrjU1bt8^G|X9uA??cWc-BR
\ȁJs@KM9z(ϗ%dmT$w2K4[Xb(RM]Q.5hT
bCdO^c:dyd+ϩCl,GfbTQló\ =YgߨpvgIz~vvpTPu&.ZO~Ѿ=l"c߈"GxkAƍ+];6$2 nD=w5R6g*``">sҢP%v )g}xsrL;CFA~sd9ڟH2lbـ2T;24i<j8@2?:TsoM +[U+#l4lGJnо#%`4':b	,ʭ`],fkuΐ-p6~_a.4K^[+@u[!]VIfo١_Q&

e^`p5]^*ݧ&H,nR?*1+Mގ\:_=)*Z<^ARP1EzO؍1Xxtal3=J<PX^)@|^):lsjp}xw~``8ũwFg!"vLD0FL3hZaP<r$sg+4zYnV'Gi+챦@*jЧ&˫]3lu_s&0nMF|BZ⩗'n2Xh#kRfvG"ĸ7YlΗlPg^X-OVh$a3%>+}^X"
iY

~a`1,V#|LI
=Ssk,[`쇻^5Yo&Gc1R2i-)gs0]\[\G[ԗOfQW.h:1[aQ6!+7 %â<%{h:̢e[,	%ʜ0mUYC;S4HO"S82SE2'x3maE
0<hSa)U
rk/Ll| g2 >ӽ&1:ЫD41Jf#PkE.yeٟTr)}crMJ-6U\ zag@
F
wX7FRJ2έZуgp%Y04>If։LBTb<
;Q=]lB9,x̉.	ug3ղg`k`B5粔nf+9`gI#3Nw0(#S/&&
Hv%4
@gt%QNdsf|Pd/yXTF]=eum@L^=1Ӧ
 N%0F+U+/;#Q^IETR/9{|-sqD_u\U^FUlys.ےQ2vK6CWeSyv&Ѓ>sr0
]AW?\`4 ʏ&}o%,r)	Յ4[nw;%Fd{|
H{.3Ǽ{9jlqK
ilWaPuyc	)V_z<H$6iԟW&7Z}ih z3$DlS2iA96PE3fࢠxJ%)tnR,Dj}rFf8j'D*PK"iΩƙ.gBY5,ԙ	kǈ]Y(s٨^q䠸poB)@<ȑ鋧e*hM8I;4>luD9kˈ.̣l[DiSjqnUu"mR,'fIe1k@լ-e_=Ƀ:+r1E%d+hM!GZE H!}+[tq%*Ffм8%Gde9^>aAQR	9ޅb=eXf%3n}](rsQW]bmyd6"re]1ȋeF:2ϟbS-TmkWt;9n,ޮYXmcuЧx 9DͲ/E?}TFZ?.$$`Ґ!'f胅ݥp	I U+3P'.I$P,p{Oz{ 'THť=Qd匯'-=R8gT1
<؋Λ_*/{̋y>|Oד#?6SRnZ^9/dl;cU`N&ΥvPz/lhS2x )<$?)hR
q`R!L;\E< 
!o٢(:,p9ygCH|oᏊuLz
@JE$/RN.nz]|ÁwS$9=B4h^`y黆Sr/P&Rbs	#ZWqA1tXVA+Xn)̝POvC}9=ּm9s|,$oMܬµUSf]tr9^ߦ[?

q~L(]Jt
0;I=ܵwGDf,tf:}@ay42>Ө?|p,lR{dsdK=C@|h3z`b1CG%-]$>DkЉOa3hGSW%:OD#)m ATdjYU'ƪD{y"
#1f█x2]xmSkHk2uP(N$-DJжmYZ["L3BL+6[x.K]f7Y!%qoב˖Adurj
ᚁ+X#$R>鋷h7__ZܭI2\Q@%LbCG=aHFr
~Xa:GJmZY>&&gNL\yr-F5$_ZͬumLU]cPr22zqE:.Z@^-?ᓬap^^Yfc;LqȄx+EW`y,H:^
9&^0Mwoa0N$<\SiMK~2$xiiɇ2}IaO=TdЁ&hWkR9t%#ؾN6zLt2LH*ЃPJ@H_YJ`q^+}Ptp
/)
a:Xó{J\8A@r?ZL({ӧ]WSIRw{]OYjgU'-KV>TF!=DH.{Ϣ@^|TL
o&$E5'9B['%8}DpL.gPq4\Oz, T#Of#\Lߘ4x[^5,.لi{!U#ׂ)M/@&uY.[A,a0k
@ 8ۢ!pL
3GKs<uScP2sWh9S
XFFQGHÊRO@'d$-[6'pRH;ڕSIݦ|B82%ߑtm@Xlu=/F~uCRi&.ی_fRYu fI<z2c	ȖLnZ8*`lT8(JeͥM\\mj'Uc*OգWvr)&ܿ4unfNN5%,O9}@;}(ɠP`zar[[Lhjay,/D91H+[]{CAPj6(6US' 9$Zؖ}3	Gkhi''`Wxg2^˄Б;!s`zu1`QpD	:5؉T(`ye^++ܢ~@T${w,<эcPd#&h# {#H^' Փltp+dw-k6Ԅ";	e~KpgmDTa(^a M_Au``a;`L}Su@Q`+N	{vZQlB"_T#AC5}-Tn7fxQ1P߉*pq+HfiFL7`3K1@$NCcTg)SNyE.E rصm;T*, IM>0ipʜ$#-/o8
teTsǒ&20fVyzB<;(\8t|=4oM
[
֙]vXyDC/Iu	" lFYɢLh/bŌF36~f7ZH)2mYAUj-7Q?y6C˝#pz5Ⱥ3JRX¿_az|*멯+La|Ѩւv^a紿ج57g%n`А҉=CcTRJbߑdW:ԺvBHWHas/cʻSiR	iCY;IG~
@B ۦWڬulՀ^'R94ͽ{D)-r̺{Xxb9VWYX/e
QF>_=g$F< Q,h. 
C2oeǀ-!=,/ʰ6hp~Pm5[5/+	hڟ&)DN^]|6ة0܂eYrc"F鱨^־,`,N|i7!E.`ShXT&`qt╽gb!6[8j|VêpA,(ȃbN$MswToe	X{?4hB.݀
{}]:ʏmK331S<<,{uL<9-/	cTu##/FKlDDΔph 1B߾vTc/ ȨA3Q!Kc9I?	H<G4-=K1Dbyz6!:l)|C0)2

a5(ڊX?L*#k.,4HcpxR*ཧ,
ydx ;H(I&M%o$e`z/a`V%m1n 5)2XBq6gߍ+JKC/=s,-jztK;`}p`0Y_ykR+Qay\	'-6zB=rn~JRcq4gsXUk-18p1RHovV*og1^("B
uF1[Do$ߏQE]isՏ0YUneljdy3`\+G9
ա]3$}U2HȔɩɒ)7.`F=JviF-h<(֝8
Z+X3l'F6qWu1`|ju"05VhrT٤`ixBNR:G":X9+úz(R$a.1Il
rHe!;s&MbSꊋWBFOXtv"#JdxZW
CtXW(<}e@VMSoe|Qne22R<]K=Fi֋#K%e=
9,oCE[H$7ڦg<HJe.ԩ]p2wSfڶ%J	
%}0W`a0De 㮘-,r"&%"4&^,62*/}G!rHv}^%qxX/8yw"EcԬ"a dV"C]~1DX]_WOdu6k561GdURku"=f?s0jk 2Z2Џ@iyr#MBg|*KZ6ہr>O9j,}{:3
<8(_ӥ{t?Tw9b
Ö)&F
˵6fdlȋӨ+`>4uvάd<ltCDP [#P!fL.+'Ygу)BH
"`o0#OU>'?a[:	?6a}7BfEh<d?m<E'sQTqV>7x9_.XQ1u ) EgG9Xn乮,
òIY!E}"dY5須Bx99{ /HA+I,e*=>=f:Zh~R]QR7R:p@Hpn7Dd ''2@
	a0;TAR=,CL/7PmG 9ʫ"~$Zx!V[tR{2Zǈ^&$*eNnǝNwA#Lݴ}ڈ@ҬI@
Ee]DkG#YehlA&CI
~2^1?׸	[``bN9Yd-^DI5 ;v
P`Ɋ.Ti
TƬ0#[i͔*<\\!?ulTꠟo=&*37;e@Sβ}q0OlsjNzEn{ˑvBs0cѾ"<TlF23dd},w9P+ENq
rGPw$,VǺ 7Ff|%L8lw6Ye"x?_GRd=|3팠'aX
(p*,S+=jC4B+^%pj/ɐ."c.;dcml&^xĸ:doGᲃ;41B%/^؄	$tp[O;Q☯z ~-Ph[ZQL<]=޽	6=8
сavpBYnM*b>{r9`YM6%zҡx1A7|ɳ0E~KE>-\00
¦@NI'~#Mn;:9:1o65فy<f$YFl'wOz\휖+)3mظ;)=x 
K
ʳ^DU5wwg0O6F@S]4ٖukf
1`lBr'L@!,RdqlnKPRhUNsgź(%Z5h*
j
BJvxg)̺NSU[Gt8oF)8(Z=!KtRC.}<u(4 UFL%oI]
n%84G-:{
mK܄ NTޢ4"~W͕'+?E^,{Coll*B'x2~e,ߓ2-9hЁDHut;Վv%U1jBJLRЅSq[,^epY'˙L,Lcey>C
A	[x
k?)Sy`jmI׹#^tkzF梢($2RFm#8)?{'²A*:R=7cex)J,&l˕ Y~V%o@҆N`A-UaFv>W7)@lѓIȀcOcV%-~#>SB9=*Lڋ%RIx\!Z<,ZWXJ
1DyeueЂhy ?ToLG5{&e
F{1kBД*u2`
eVp//,+B JJpq\A84hU [!u8T=ʡ;|Gwǒ]Ӡz&I1P+@-n"VPK>ag$1לi@^!Q3"_KA?/|m[ؖ`
J&&v@ɞ))ˡsՒ#^$DXG.þj[^YLTզb0a7=cd8{\2<|(pg#v7մ56C#xiP!ªZbݽ?^7
D'dc/ ?4G!yB6.rKlQ
Ep.w6>
Ptxܷ}(@!F-plMDb0
G؜BSy.ZI
MŴdG"~M6t!-y%25&slOiT0?J86`ibtOG)hK8~J
6羬6)%)Eꛤ
ԆLy:gfUh#eǩzsbkNwHnMV#}>*{U4Kd[ɒmPf I2CԖ,␭6MB򴸃mD^mL1jЕZzKGɜV'XO^NXS_FrlIw=&dyǂ&N ƒSF(N4eO OB8˅Pþ>r?FX]FkvQWFal!5%EWW}&l}4d
$='<?Q!rb46H`禄fo|ݟ|D|T{/2AeĽeҲQ_EѸf%%m! bSE$5ȎZg*g΢vɮېx5%k8hqJ&[ϭɢ?'=Ǭf%tl*2S)Z?P{,|	J+8^6-,uvk]/CJ>t -""34	k^1#kY_SWEM .nNQq2w!ƺXrp]с*R3h溥Lϴ.MР.G\Kf!-!9q  ;C87BE{R;T1bQ=;̓W:!h%&o&㦁ʬ|znZDX
L :?  TZFvqA4ǠarW^Kf Q2Ib˰-
V9⻧tJIr0͞7W~j+ŞzCH-~^FwIԍN'n\
c$CҠULgP4 ) " ğ
E#ߡz0\6] $@&ntT=e*&sï C~HJjةy&N7D!Bﳅ
g*;`QlOҡtHD;SN:N<32<Sア>S;#yOkK|,O
Ʒ.ǀ0 ]0a#S%GI/J-_W4Eү۫h|D拨L*ZDG0ȕ+  R5bnsȓ,0[Դuh6b7RA=C'aNx\"Xk"EK,zsT_=YИ^6v7k GB4lTN[@Br{.U-
2M
C55B*6y?zԌQd.^ګ{}cؕs<>=Sw.-U6S${MOF=k40+Rr'hS}5gCLYmř+'erIqqf>N_q "pci!YWM MOh4x%&rv d 'qﺧ݋{5PTj]ވ>3c½k1 jxUV07[~9e<
M]>-/E>MxYoaG.^=+j?0U2[q_+-4SP܊xm=h36Ȳ"cE \`fW
6`{67<*zIژ-ɉZKCV^d6cW\0Gؠ{cvYڲ+f0d4qsN
	;jvaWR4f3r訽K4TKt}࢙bYq gED܄"JP3OQDځMn
V w052*ˢtcdGH@3+_WhLfgxKm(72ib-aTV0ℇq{=2{Fwe#N:"d)|핋:[M2Wou4 > L.C8&݇HuW7z(O֔ -)F'ƒd"vkgDTAq\擐s;ΐ-{@K.:tPW(.~J	Ti_7M>I#X:ɒF]#Ħ-X[peb+=[ɻ!0R_%kϘ7@<. ?fjS!q %5w#J<"ia< [3sQ1~xG$.DHb19L}Qf0.?0G5_lKNB
g{]ݰY]DߚaԪtSۈɟfETFsSþpHp#QC"Xeo^zlgN"..\IUYWr1"}t5rQ8A{8ܿ:?Dnq4#\an8$o-t9_ 6S0<ޜbpm
~	(m۫Y
hQ:e<X(7@QT?bͨX_1dF_.פV
2\L޾Iʆ%M9C_9b,*ޥ1Ϭ'~YQ+O8а?y$N;5^XF}xX!*Mw6Ĥ\.{J+(kj fͲ{=bGXOFceUk67fو'̎_頕|,̱%K1mF9#io|=Fk鯝A`"P-sK6As$MtcqMJ
SW=WyV=
;UY
x TtYAf36BQ
	9KRadc#%\%1;aoZyohDTsF^M5[ђ*v$)й7l&x0Hu
$I5кt(Uؗ xXp^M"OoBdJ dstkijg91#?mły~އ8
9
EV@?F`ĜXjlQX;IW0͙,ɫ`<݃Wh<Gy0M'-XHBVN,6Ϟ1|nSFYM,&G/J0ђ=z/%!tJ2"OR9Wd_R=|ܬlzA@{s+$HrO])ͳ3SG8S'	MF<glD+r !6FRhSN	hQb+H=b;Vu=m`ٗx2Y;d,4b Q)zޱٯx.>(9SI|
ْ>NL]Ӹ)OfO\BKq\?6Is١61 \fEYCK0}eUY*!p|
2I:ƈ~4W(nc
P8
x!񍅑(Y
Qb/WuQ
+Ez;o	^; MR7[_rozfJ9tAcD^&n;5ge6M9;Ӄ6M6`{44.3,z?eМFmۛζSj'~,O
>Co.Eaƾȼ(	*c? ئ	α-u	y8s3sML9	d{ϣK(:	,m.P20L P.
NLUhl1$b(J3"1<=mڳ1/{F{wb's͏-9J@w%p(J6GI0 x,a?t3c|*ViyMfEm=7ÃG2"mG,ܰlT=IB 0j*PX4&LVMfe
,4#6dvQM)crqx`V0IS|M@ƭtu)}Qɞh zY<k{Z9˄cX(sO&Daز-jAIe7PIwhB#R
deF0O0GOgG;3L0!nL5b4>aF`<}n	
6>$
Ă[ GdP=f'D{*FXy#o
(PLQюNb,晩H:
jۜT5y&Nj\&Ɖ[N)_tk:)w脗1R !+guN=Xk3LE[fh#g~QŢaӞMan;N	#G6(,3WdCnՒecpBp,=L2%$⮏SJVqf9{PߊJi_tг\zAJf2T!\ yэū}Krh)&uk.SnLH]ۋI1կI700{6NT+6e"ֻ.)lӤ<m5bA4޻J^6Y ^5MM$_;q0UTQ8 Gl;"
7u |[SRYUGאi
OoDІX]ʸKwUvtt,
V{
3⌇ߨj%e<"fg┰dI7_PI2hEfR,cuyU8p)iyp[WÏa(sX;*eLw>A]U6\)+#Mɞu'/+L)=@G8RX9'uF ^W!G4h5#]9SVהs'od?ķ]Xg@*x/5ߺ2)x3>'O_E(mOwD[DW)[ۢc4ówCE;Xue/BStE`Dqd $P^eW
m;B:vR^JۓPMleZHWAd;`
UL/Zh۲ATǩ\dSɋ -EPc>zdn7xG'}36G FTI=s4z7W]J8*>㾱7Z'	2p <Mź!G=ΰwֶȞ{pb3WGlk>l^v(fTȊD!Dnt\=ƦBvČ$Ӫ%b
NB63%n_X^08T{qm㈉X4XαF|ʦz[k<wo#WR/J
/"l^-H.c y;[˝(o|jhj0݈W	&J&Fh,&QbJ
MئqL?Rz%%8C-8mxb䖊'"F!d*ϭ90!+xr?Qd&Hko?9RdIkeL|G0`y,8'gͬgZP6ZU2bB-x!NJߏqPHf0oA0w|XRQgBwGrPa1vҋg#5\܈C
L6-qXL?y2s='#LeEOЈ<Q1-2݄&_ht˜l~(
 C,\
'Y>KvN_n
+o
̃yh6٪d ԡW3c%K3{dcU*jAʄĆy^P):Ez)`Z1OwGra.A->O1F>N\Kg0^iluxus4$i|zʜUWڎM,],*bE7ҧtVEn;fShxHe6U\!	
y |+$D@lDhI&P(!Q	˂M70]Ehw0F j
80\gXx8O$؉ݮc7!:{qu"
#Yx=AhDy/C,m q*¯V.F(;F7!*6{lup<5󤐫(uᆇĸ1
eR˻S4I+~]{Oy@
x:".[(	Aq)0(
M&#:ןʷ>|,%YHcSYmD^TA:~Z컍 ~چb1d]I&KKKRO/E|phUrľ mf}ڛs'<
z
\NcRž
Tm
e
l5n
P8)T,}<ЍdAsо='6Rrc[(	.<$coFEº>׺ <
3Ec/'2`GwG)j
R3*ɫ{4cW7A6#
Y,xs`A'LC9o3SfS#QХkbL/7'rJY G
U\c!
!6RIP"DPCyӁkPieg#}jnmty[;˘&pkŻf*z
]¡U]шU@ 6Ղ#`U{pAd%, N8uv7b<MrD&)*Vo&>Dw!뒩D	$L 8
lv4p^$'L{9,*h]n_T)u0pS!Xl*CKCpumAy	蘵kTLɠcJ%(\2n9Xo$Un:V-wE:v6{X.Tǉ*qiؗ"MFUffV)FaQ7IP]{8s\p[[F[j[StڃAuԐQDRS/oR	HJV4vzqjY r6.֥jnS4LUF .Mf呰~iv!W`8wj*nYJ[0j@12B(
:Λީӆ#:B'q6OEx/[WMр	GNynOK	<J݄oÇv*8,D,ce)!'	Xxސ6C!cb H{Ԭ2,jԪ[:Z@l22A v/PϿQhMW :W:R`p.r+@'5Z˴ǿQR݂JN~ęT T3Beg8Jn=al_¶{+ʞUw]b~2.ji49R'q[t	9fXxuUUKIܰfXLxx cx/&ɩD֪M-k#VsuZd:w#ioSU5˯r&HNT8naz?&G⽇d][f/^-<W!*Hw/s+gkH@Bk'lbL½xL&k7kؘ`&Mi`nV힟p #E}aJ+i3UW,G@Iw8C´Pxb~%1%4UFw	v%q2ݏ/E1%q;X2)	]mSԡ&r#RlR<T	i_Qf}x~@o6m%TBߊʎ
QP^(M+Qa`>]ϛ;6!ȘۏňQ]s8}/SZ=SZD/WT7o@&Zob˖[i{ <*!)a!7lc&ar6=3bD~<1ȁ-Nt+^
kjDԲ#mv(DFE(Tr*0.̢(M9wD2ѥ,V7辶0:,nxIIrVarEDj썛`E#ڪ}k)ⓟ3s <ۉ4`FqC6PP{5mykj{xHD">`Y5fP/LyeB2cT.t sO2y#0-é٢7~0Te.ni9)ta.?]t\Xdb\cYOfQ D8P_ok1)lO9qxH^HA	a"{GYV7
y`[ᚩ97J1bkTzbj%#yLBPщԍ/e1mbj\TW[C?S<'B6iMNpDVVuOA(EH?@QE6_Bl';A9WIƠ/5Lw_~魵:!ۛ!6 IX,Z9yAGAtMj:cDO¡.zSFI edO-bf
ob3deRVD@ہ-k?#gWUvAo>?)*+
"
buhBn3VJաn(y [R7c%C
T`3g%	BuuKԗLWt7ڡ[9@PG!-|+. -$s:UeAEQ&	qp?Rb8
NM3 ~enub=5NÁ7B3!ڸdKRhU@j;MdvC1楀}/$N!2e D(gX&fyb	~$dꦤ2lg/J!4-Fmټ45D\XG!D߉兘*4z
J\oW7*章?h'@vXe^3տ*
toTZJS7
dӣN$
xOTPe:和YhBB0YĄhveuN-!x`;c9sfƪk"\1yY-$
gsϞ/}b$ؗ~p`0&3OJY@xߓOF3yb!1hF$&AojlqM"Wx&@%XQI&YXLl>8K!JUwS,&@} 6$ޢ[t$Y`dF%tub{4J)EOLpR2Js&AZn;ѪieOz@=3AlC6>EJvTuEtٔLqTDlfJe}]<fRD
c
Bya+͗$jDFyv9
l:.〠+Ä.0x!FI*Ƕ6 Z 	ߘqd1p/.
7f͎]zsVRhvjE'e7s'ߡ <HɚM~BA);K!+`O+>"u	ƣ/K@$ܲFd?YS-h$@~9A='`0j*muhzhrda7&|$Tos<IF ؘTŷe֙X6GjvvAe<R:993*v%>+1+x+Qt}<'c*jTdaTId
KLO#Fu9j 2n-jx
p%ADåblwaOwSH([
.w1I!mJ[9WKLKtE2$'~ɯـ,|JQ//kd8zr2x)%}l:aW~3HY'a(Jx]$e)UX؜F>X|,h0 ^6:͛c׊$-:.3R^aX8
+!gXVo%1Qh[B7daw(;E]1Xg	g`KT#Cl++	븒34`ÌzZ!-;f_iR龫a<pD0@xth|?P'b|<fƏ<9
 oS407	m@z,Ʀno'P٦$[ٵm]S|fU:Xf\YN'A'~
5nyYI1&3*S1vޝ9d5hPϾu0l
J"}3._~I|:we
wdaqaWqz1JiN0
Od&@B#r$ɕ y%'Y`*3EU2)҅FGcQ)酭ش&XjT·F@a+otwm)ɩZ D{CHJ<
[eByks"f-h	d(ӸMf
nS
%-dɉӛlA%6ACw!{
cfR%gRJ.>7)U|nW cbg:FU7zmP(xoh '&eb2sۜI1YVP~E_O""Dcoy'? LpIX8*PF*+K@d#jh*7fz'Tjk3
=َA
@둚,گȇfۋl7YfP4qaQ'>=}Ⱥh1a<OH#X^(C6"x}\m&Zz!F J,(Ӏ
BjePBIʇ8(#qUr\V
o~?Zx' HX.[^[ĜI1d5CDѯ`bw0%/eNێ>Hm Gdӗpz`ӻU)n#cA[LnI爫W2D'CJJ͔~P8օ^eEU*"nkJLa'SqЎi^uIA,M#BQ*LI̥w" #hL8!L$SB9	3L0v(
s)3uVUz"/xO3@ߏWl"@J׀N.>3( (1|%(e&y|f~789~piپ@
VW}_|V5 
fA&[~9񺨆9ֱdmw{i?h6hm+4W)fpʎg6:*Z5ܝBݭ[u)1@dաK&ie*lSOdqSwhY<0ͼr<Ospq,2	Aؓ<R&Y4xQ,PPV;	'5)y8ȣ: {YY	sdKf~8Rr,%g@NyJxVRf\Y#jϣ`t-ABeh|јKd+AK3)Ʃ(ַZCDqll3MK2>CTŀ6SXFhWRq-!i7];180"M=Z/SPu4~W^G~1tM] M8e9Qwh=,HOd"Ȱ&A2LGm(`E3w_K\QON|t/[ܣ2," in$1D#젊
-	b :\Z7D!ᒰ1Eu<xG3o]B!rdh-ew$WL'7
*
ށ,(@m~I|TK	Ycnf_e"B98F3ub
f|1׼GĮhX*jFQ MtވPVI:|/Y/G9gI θuN)"X""ϡz4m_ҊHKM3(z~	* PYˮx<_G}D]	_cj,ۑeڹ.=iwL9TXlE:_ŜeuhFUΒ6m)}H^'4a슙f`޵8 tQS،*Vь	A/Y_aRD
D2x;2u=	%բ^HŢu&]}LCQo Bґ
T3WU>rp)z#ΩK4}tM/Pn3Nuږ&7YbE;_h27R&ޘ2mI̙y(^]Ϲs
Ka= 	m[AA(n}P+4{@@z$Ǔ缌M)MKIdEծ݀l%8Te$nl1EɆK[7YF!Ex{	%x>r@
Hy[ʕ}W npg2FsM`JOmo
=EaKg7%"irdh7"%_pB=hĴDuʼK9*Q
;Ҏ4,PY6Өe4>ۦ5ecbvVwh2HŻrkKRPKvCa(J8އgFqBuotFTcnhe0~e|b)7+MAd5rdv=-܋EZuN-$C@e@qax)<-@X&
<"Naӳ"wSD	7&|piHP>
3
Qu6i
*xdJfub7eE+f
*ٹpN9YwNY0׬7 B'b)\nbmQjxޤ imXA;ÏRCBS0ZR DM@%1Xs&UvG5ݩf'~@X=Й2.R?F&(.d|:+Ǜp!O]]b:Ӓf17he"oy27O@?d$Cʎ&ka#0A\2]9փD)`guY,zv.c 6S4~)a
n
k{sOE@gDn::?U0} 
d$HPK)^ÎL6LX-ҠL,w

PVy&˲M
y	'z>q*+sGwXAߩuU(ARC8"OҀR{WԤK\&-P裗_1m07<
:+	if@>KHkW(`Ў88:gɿҾ!QzUt& A5Ӕ+-]eie*d_qd6#?d/(D_!j/VWqk6[r-_HhKOԚ XjR*	R\Jx1f,=Ofu,d23o{UFR/b}S>ZWA y9jڱ
bX+p#Q)?
lDT,r}䠄(f1XA*D_r؈&ٓbjidn:x_@f+֙Z8* ҆úЇzvvմo$-%	Z"
Op^n	/s	ϡ
_x$1dZ&ŁAo:xbPDm/n>R
=ZXˑL_>D[Koe#n"ebsQC:fmF	ezs9h^a-zX:m!D9	oJVZ-T	 ;`bܟ%:I@MoFMtuųmۨ_١C[rL
+U
L\)KS&3
L;S&߻4fa{2R'4rYۦl/.JSl>լ+6;MS`	SE5的`}1cE^XUf&(R^(Wuy^>?%c5=fѾ-`>yZ K?!˄E|+rn4Q`9ީUlz$&Sǂa*AӼ| ټIMN2iS0*7%B'$+R3	a`wNSU43Ei7c
6\4A7
*rx2;*yiX8&ҨV	x7.LJ7#TOTZ@PmrU
BU`堓r흈Φ|d@f6NQ6p8CD{Uz(/A-l)P-lʢŽ]lc!pO9^EĖ-8k 
fq/F7V
(7,,MlU5háfE,!}[Q:(2cDUkmR$u}jmI2X,:We;*e!oEVEzŠO=Y]VLDMc@p1R(e?I=C#;+\Pk(.(+L3.Id?90Ir	(z
*rfK?`.8r;dbPfDKfn!Ϗʣeh`Ek)*eYVN2Cis9}WI<t&bA$ja8ֹ2,l"*ɐN%7|̓%ޯ$M`2xպQ9
BuP+7SϨAu	@w48փbJh߇̱IZ}&
\Ͳc{Cؔ5EwG(m\4ft&lp8NdnTjW{w:|wb02m~6sBܻOи4nx'(H3C!Pot-g3@>R(]*ӞM6*&.wƺ{-^b;R.M8`8h=ٶO5fk
D0YRDjuX;j
B<FfWi.!nΘxms:݆d,nК5 Ϭ'mQy';?W"_ӊGg-ZLQ8JqqL0G@u!	$653;:dOb$
x<5YWj\1%ǟOR19t&+>VCl=}CDTQz$6m|Ek>K_,i~Z"

fFw]£8'p2ȇcY]Ȭ0F"\L!zdpI3홰FszcLd8Y81㎟IۆlX`(?<;S7fhaәf6'r2uoDk9Qn6IxpMƢsg:.a8s^Dao j;nz9=gµ߹#P5˴%a:&ֺ;@lJNR'tlyf$G J`wѝH%.&?BPQ]0*"Dp%HCժ9Akq.5vc)EG;ԷSnULDupFN3l-w}^6yڛiILR48L,?_l\3a,EZCt$7gP^daN=p|w.KUcVl_%3
iD&݁!kGdđHȻČ3@~?*b=`wX*U2*裗(ơ]ro0u+jȼάJѾ=.jj<VOUTئ$
ux8o|}[h_0/6 'RN|bd*nn!ӔqVR̒q!=lXwC]aǗ0 sF{(slh]"	whlO}Pat? g%`P%UQGf,vMH>hsu&WVy1`=۞B<]Hm'!Xͯض"-RC2<\|
:c:h_I`241ͮ94MWN:ykS_-6.ddp=!theX:]	{$f0P%t/yC+ہ߸:˂$1$0:2|nՊ% Dk'6+fD	ݐ1,6n(O`U[	&nTpW+ʦf@uta!LG?Sg"{ǰ>$a]0TDT4Ri`_f
eE'gP9g>=! t+H9&Ϋ_f/70qJ]kb0W%VU[,
s]%3nW'۟`0֮Eևk?ؤ>( [\I/LZ(&۱jhO8$@yj!{	EF8IeNK[]±.Mמ􈣬Ѡ1:zqbV!TUAHuO7 TbWhNdDT)sʳx!Prv,"b͕sDߚkɨ`:L-$g{*TBhF8jcYtk&@JZϖ)7Qchc3;_Lm6ܑNinƔftU-wA{^MǢoGH3A_~gaDB&Ղ!	 HǶM#)*u"6s0'<Jݍy4ď8k
x2T)ML6DUQğDy&f(&Wp
9TJi\BZzod1-ǭa|.RE"|{1{~7Sef~K j/ I"1niPiAw6׊z
WF`n+`Xb~äW;h]B%<=Ks ֭K6Ve,*՗Tňo1/Dsȡ&? -rUZщڬdGy괗x2&Zr8d)IQK:F45Rշi:7)Xְi$W?mA(xuZ)_4LjuX#H
vgw,ᆐ9lʙ)Oˀ"y:f812N	.7q^\3cu_s8
҉YS#*ROV5b/!\CG4@/GUܝ4?l.6h	'WAdlS5`=c.KI+nJns_¼i^=
 z-L_'׳M><WOEF,ݬ?fXck'"jNaTvL|qx\|E7g\I-o[eg$l<s'ѸG*S(
_"9
Be5`id0TAV
 htnRypa:s%C;tt"-l9LX/@&V?4l>X!-+攋8**k[ҌrLfLzϰ6-x`C,WTHG
ق3gy<Z/nUKct=agʺH$&did5~hjҿkqE~ƙ=Ί}4dCviزtRXtjw/aܶp=eIAm՞dSLLK(RnE
;x+N~bb9Uk-!4U"ÇX!%gad!2hV7:dKsڴYί"r7L؉{t8x^BYv_JV*Ƨpw0Ȏ%SsFBs*I#7)cXY;}0Bʳ)Q29|H66AN$J/ii^;`RA@\{y +hcΣ(j"ѫ
D6ȘHskh43MU@ [eOV6&ƸpuVOeI
',(+Ҹ
zW h);H	"_Q'YkCx[}Yǲ]8moPڊ:+ɢ֑%|TnA'R 0\T\vz+	f'j
Klj)߹+M/l$Pȼ(A/`2L=e\['m= ƷPMzqج(o@i-iQ)8A
̿G
VY8ӖoX_R
ƲKO16.D6ab;kz䔛[,Bd

,Di+R#>"!8ޅ),	O
i<9x|Co;l]FN9?gIHq6ܘNcઌY@#Ѯwee)+}Bۅ#DwnnQU<l=&]@'Rg	3F!Bx"\/ydcn7q42Sw`#<QN_Vk:8yMu
~-8DRTYPAŻqk#7%i8:e-j̑A%)$J+r0?4DI1	+Բu $? .+o##rldGyebMt
A`D]zkW֗ah6H:pb֬ΉreEI
@GrɉIKa˘Bt/W*:0ƪP/$̢N4hꨊYtFzB:S6HoZP3|(EHEzLp'CW-_dl(5`ZUErP`cn޿sUd	+Xߓy2(HZ-D/YR$Ϗ2b-H_Iݜ)$:tbqظ>6:%[]${5Ed]!b(uoFhZ"qo!dUb;E`cx5$k
oA`IRyµVkqɜ 5\{G݌i_YtTd"vdE/xЭh`;Ij&׊6(r5^DFq"gylFExrgzTۈ"2mY
S96,z~FN^4!XE
6+ԓBǊۤwxSxԊdŲDWg˔ym7)ϛnX=̓sPKi0pLR1^S5[n-JLf-pbIdp?3ƄSX\"RXèv+К>RuJ;Dl*$hj-:Y2z<YXNǜ!93mR~Q+'\3qQ7B;/⡰cr,QfSn-
ISU5'MLMx4
|h`a590GWL=TS mَAu"f1J#\Q	2%mD9+ xJ{H)(M%J-1P%y>\tll
V2dIhC4Ixiu-+*(݅gt
:WR`6I<i˸^C/Tʚ}%.ua!PB'L(">HXr W3[hQX,px0JHrpH(dl, xElHCЮ,ttYt9Uii]D	NVWcL-^/
wr-˾qқ@lδ1
XG8e;@=JGJeU@JFJq+GGAHJQED:r3'Ө*"ysCCw>._yH|7¯ n2j5%tgAfjK).fI` R`C@<R]A	IVTLAs-2(3y,eLJOjF9Ln+r#zj`&uáxXeָ,SӪX?E&6V~v(	uOOŔޘ+fxW906IgAgS	SIpbڈVhVKXp}s$WN㾆/wcV1	@H3_ByUҊrb[QUh]m+ma769f VN<f{f|)Z&*)ȩեOCWk45Ď$8уO,QPM̖ऩke
,抏]E;WcL
`m4
v!B"{yמw̮f>℄,0oDF;8^3n[x99d*CPmE*sV"u6ȣ	P7iR1TaZp[y@܇NN`Ӱf:KErLʅ|tCEy}tMT ; YdmQN6`_0c8meh;#AL!9g	bb3W3%匕>6+aVd%eEv]m\
/X34QbemI-
<&U>)Y]'	Q5@I/SdeRO1ƻIWVft\Xx/8'߹o!e ;eX6Оfe&h s|AGpD14ZFTzFjn[q:W
١U	/y/P*4VD3/dH]Y	{_@G.f)mzg􌧻uKP`e=;Ԕ w׋9@VW0ǅcq\p3XT)8]Wi<Jՠ4Y	~oy?Nˤ0Sa!jYR+뤍c}WpS4U2"S}
1zwRuw24h#@1oXh'uxF_ovm	DCN{z#?sˮ'ĕAb4,I؁c0B0cRSi&r	A\4fI'W՜S|
J
CR;31fv0 zަشݠIZ'̥4[Un$:RK;(p13hLB㈐eyۻ}_N|j=\̽STQ!ieY;X4dn+|G@3Jhޅ,g-Tg(Xuˡi/De<%9mR*1m%6 ӌP@Ja !'e,f[T4v%JHT$h5=w9ihNêDo&Kب87߼.M	KXD=$P7r]LID"rX
l~Yƻ8I7'VLť[n|iA?#2QDJwX[hbUۢtWCK
x_/̥)Bu璕0ǌ>_zs1	fe4.W7	IwzݱiJ#%v12lf=63`7Q=5v5=	b'<Ė=k6buW~İeķ8e`d
Ƶhޗ(EBXIPE`hh6B7΁?pRE;><?O6dt@kÐV^ba
控dlP)F+s+K*xn5;UQꠋ-&6Jhx#uUЯpjQ`	XM2ɻP0ӞkP$l:wR3GQ5fnf:7IQs=\`"Q0U èPbY0ǅެY(՘]rͲI)8!,'C` Uةp(J+N-k)'"0E\ &0B4r@a%nIZLJ{TJ5A"#Yj$r˼*m#[&ei5f	U|B|9:uMAB5u~)©T^W5YFRN<!$joC-4jsҐf]Zù0CQߓl)y}%3m^:M%T[
%RQDlPdvG٧J3ҝY&STs,P.-6C+6{(ӒtzsR v,5&RpA>"EMjp"PBN!V6,%cjԨӝE4'3("+<<@h4wT&Ua>q*VI)ط=:ӏ׍4Ѫ-RU{tQ<z93Rs084Á}-! 6_LoFO<̖cviiЈY!m`6H jAPфԝ8݁@s2q*v<'!X+gVE|;1g\ G FP$a^Ԇav|KФWH]|qK(2S)hǓ{ڢ$bw}߆|_!KD
dl.P?+m?074O j_[F;w>,  `AÎI?3d|"mP|r-t.{Y>6r˱=G
8^##J?%%r*RfX`⓻/g.AgILh#WDS>"XBLD9g̞UN@oqR,L\!gj'p_ʝT,Pl"5ti(	I`9E]LoOVcP49g{~2Bٙ'-dj֝k\h-;vK9Ih*SKRJ3i\&c]xu&kǤlKLb57zEQhapv8qWN=h+
6ѱ,N7zKϳ_ea;'m7Pb0_B+Sw]ɕX'o<ie@t!2X:*?͵ZƎYѫ[fܠ', 2Y|y_ɍb/V`%	"гW~}&8YK:VaAЋ[R-:&=qZڏqW_%whc'8`Skx$Mٿx)Q_
|Q)
fZ}V[ch	jQ\C52hC/H`~GJY)\]@xz `rkcmPJ~wD$1=^1eWv
G+)3of,x
 e T@Ǟ֦ݦb\ZpBW?{5Ѽ$fYBY#>,P3&+2طfI$V@3ВAt @4hCk.)'LsS6>iG'v$bd!5axte
&ޛ yܿlQ4A2vq
[g+S;/5CmVEHte7.<1c6P8`Lyr+!>ԺV
4,Y|A@%#G,Qx((_nH?`2uf IN=؆鍙(OԢ	
8@[gY	)/(o(!ݜlC"SPTg#i
DYSېc窋LQxȗ}<A(`yS8 6oQYD
Rߧ'Z%,
N6h
\XNȟx&k+c
]h$\[h
Zq'?I9+Xd$B:&>}xه݃ʨQ<WIiWj:2FŚ4WdWO^U쇁U2OI"j9^Pq:&NEzEPOW
frE\+^ںq-uS fTz$&,H)u&Db'(#bRRyE&]pyGJbқLZ(/<c"+VKhx`̸AJ9s҄SeEA1]F+U۳֒IJ Kڴlov	CoѭGx)]( 6>Ɏ"@˟w,>gXk:d71k,oޗ$$Dʈ^[N`ϥ~BjZxɱvq !6@"_olc/#+i%;A^Ȇ}e)'ȝH(n(l2/,O"Lz2gmh[dZ5˼. Z9:ij{=³LP^
K|&D@=jBWNؠY ut˯٨B\U?Lp~@ZnD&e;@ep?+4͗$aYn̺CA]j+oUh>IB}ns	D< 8شp(an3'-Oț;Y7tJQ"+n7Pgu5$di{Wei6q׻ivr8l*9B޸rD`a4`j@7flO
'R
P8eWZx(}u8J*ƫ1( ev
$9~*f2%S:!V52[<P4 )ۘ";)LZ%;QOx>{g3fM$	.V/㣊Y)848C3YIHؕT_,6 P-Ri +.@j9ֻxڠc<84-9G{|bĐ!ռ\o
`_?o0htn;@HԘFXv:³m,S5syFv`1l\%Jk܍!JxN+ 5!b,-~XJ4FYXd@K{X6|=Wءˈ=ӛG\_LfHp{VW31:q'T5Vt"N%Lŀuʜ`a^P?ZKrެǆ v/=u[
c R^\풘.dG,ڄTޢW[rԕDpke)b~Mn.GWuҟ̈́?3?Ə}*#QĚC?7D-=q`@q{-Ovfb <9u"L0JDj:E58FX3h?؄KW%^Ri6v=Ud*e3<Svrmj+ЖdS/!۔h	k: P~Z4ooFB@6~D;1Tw6}yv\YڌD~;ԕocI^Nqe/bN3fw+mTLO1vT	SۮᾓW_MS|R`JQ
d<1b*qeE_LH&j쫨w :8;f2(t15	PCάǗC{6XJ>l!xK,O3ҋvŴ u`=#3K9JZdGP{+b\'9l~9"(:X-!KR
} ҵ׽jKaܸ!2YF1*Xj61v F ٸ. geF
EEqjuؕ|A:oPfF}*= 
2)?>HR:4Mdt0.oR2u&+vt4 P	,?g^ڹCoo.(O־PfHQg3r~=N>kȓd~5ByuJG(c~3#;LGl	b,(9eJ)VnޤC"2)abc)!E~eV߉j0.<~M^=[B7c^3c0lg99>9Zo/ 7;r7*$AI@c6Ƅ*JY|S_7eY,KJZ84	L7iߡBAHAʽ17εDxwG5G㽱I+ q
"J<$u[XfB;"6:%m*kE2Ym+	H\|7:<$7˘`Nrt- f#l*#[LW3ThmbqlWI("eLi,+ɜHONDxf_Q+އͷX/khl	 cåd[HcXO+qi0V۩{hSRE*V+DR-KL)FYƮTzR=Gʂ۳Gc2WetP6hǋ@Oxd(ꄌf#g@.utKĤl]
)\\.%%R>z[CiD{MP1T./)?U6l*H.Hn@m,}8Ÿg-ڢ1&̉K0iCL_IjC^y\s9b"O5I}ӲGJ9$
`@&ѹw:uTx?fcɊǲxrD<PTD*}B^(NԶQFt/<	;Gqt0w,ժXTJ?i)}&Mg">A ~
46B^$j_61ax_h3-SRQ[N_Aełds9&﹩%֚O0 ݕmV7ZZn(͌4\Ad-+e}QeSC!v*,v8[=B&&2e2ui4ͥY+O(p]y[qw2'\Lrp$H NQPDI(fr&g.
's#@$qL,o9\	R!)$Ӟs)Q4|S54K-@"@RT}ʓ	w
GVɑԳЄDl::<Gv@L
Gle⳧k|O:/`ooLa'G*Q8(RrO'33f=h["ӿ]vacf4q;\-&GT8J) ]ԝi>A/c$'#Y#+N!	e
F9=95[m3vGfL-)lbMq7oaYHb:يZ_XB)󜜁-yS޽-g=U^aEe6O_,oHbor $u.-Osi%w
`{װ2^@2U(r
UJ\ZX::ȁS$qwh9;&]\$A,U"Ѷ;
MѤb~x+7w=B)C&;
EEA]	* T#Q{@\4u	hhW'L;$GFҎeKLD8^,Qȓ]	͖lP2}%O
-3`oV'(0DO^RD/Dƙ(#23a3=M=:t˽p9%xr'Ii5wٙ0BX
 : Qr9EjruQut^3?4:1
pc6I+Px30'<xUݱ~rKOMp<Au#ѯb+DXCx̍y?®hN}[p
7X9plV$B`YC[2*f1rQRbƓ[Xkna
FE2.Db`x?PvvcYC!7B)Taxx7Z-A"D;E~q;GHG-*1FbԔ1yydbLma^&ͭ/@
A,yc*ܦFq2BJ9)痕g
\W"3ItQ0jJ6Dq	C peg{kWbhy$Jjpd<4/DڼHD6g˸
/p"/>Yw\aYDڤR@^Ϩ,6f#G~֞7
6)&Z'!DĭyFOzA09y59(ĺb
GygBQvJ(MZ6XVqF2_]FD|Q!W%\/3z%#~ٸI'IwXGgBW| Bh{`^F
'{v6
" adJm:D>쳦dɔECSlh䵎鯳H:۸^`W1 z\QoZ2L`
x)uq*B/ԇ
bm&g,&;gQQf>,BrR+0([.vAȕEYEO x2]c[Tqmgųm|U&1AlU)л5<Ƹ/u?L/oԅɴYўo%.&؇StJFX"*wf< SxDTSoH_If7v&@b.e΢	%uzߜiG&SihB
LyuZ<eI++bÜ$F26~z%uwE?8FnI>ad[@EVՓg,Q&-^$L մ[)
gLjG WUd:uG@$J	jc5Sm(^˝!Igј_n(M={#[Xdj_&7#aR^[D`.(V-=/Hx^%0V`wB\e%Rhku̘$ѕ-:Q3Eo0("gHVlKW!],oCx%8@=zHuO	{o*ŀֵJS
6!<u!saϨڠ,x`Mp0۔@A!p'2,P]^)mTPs>q:#CWqge)ɑr:+N ]Vh$:ʐc9k:oA1'Stt*㶝WI,7nf	RJa~g4{xxz~α0Oi'QJ_r%yV]]6DᙔTO=z$Gh}Ct41Oኼ7wȎҝٵe"Ҫ "leX
8źf:2Gkexr[Pz+5 X_u-߬x
R_eS'"fs@JxR55,2";Ӣĩ(JB ?1@N/fE3v01xД~`3sF޿^Sяk!]Ұ1#a)rq!N9<hV^GID.rԚFs00d7T`?EM꼉%!_oƗ`JȐ-aXhDg7fm<^"AI(URqc¤TV[ֵ{~Vnx9!:H<pkP{VAQZiV#1FbͼAA%EE9 YF5ɢ8sG!kP+`6#,ӄyv.I܀-aB˩)Bt0y'`]to3M"PMȏu&fF7.$#EouX緸LkEv_
~Ź8jIs:fM6J+;&3P+V+	e&#dcu@bwruQVI:c\9,b}um1gڀy<` LBad\R%٣XhyMUŕ ஥#fb7d`Tp`LeJ'ԩ^`MM6h
RV	߬rEuFNrE+Tha. H1*##og*Wիt"t1\jegcRib\B%c$H
mT^Kb~`ayb;7^keԖvS#ЉbP96SV/;OIdbis-x:'13`\TEÇ둰Zj{VY)k@p %.

$)%vPӛuKϑrlAެ_#`):SUU1Xze(.s2JSJ݅PԈ&#c0키gA*ǁ\\vYӡ8Tڶ(
G -ʶ	3{hQ9@@fݪ!EHpM 2gxb,Ϟl/udua&:e;"Pr#fQC:El/V̓"Î3.\x|0uўXNx]Fʑqt3$:mgr1L	ˀxwyg:pc|.vdIVejCN&ᚐ$^m_:h9H.T>GAy-?BSvx[n}QƼ9&#uXKԍ#eɒEhHS#֏$4vE h!kb`ES7	ߡ~"i
Ӯ-3Ia=#T/c11K:.o
$LWR`=rF@wS3]
4ŮeJ)X&\rNEIM6/Jaku58̈́pN4kX+`N
{4`unҐ<XL$vaBC;<wg顷x/vMgz)ndd-T
D0aa]!{s'~6"BhK//"S*ϒT󫈞[2VzmJ		ud{6]LV^IT;3n(@|k.f|MiybFd@'#wTbI[=8p>B(<benOE!Plf7䂓^cZlir
Ȅb3YLHv3o`""ŤgDT#uaTW[t#9MB̄H~`&Zq͟3&C,qH2JJ!Jkcd^b2OP9Bւ_OTMn6vZAy7sn@˱24,"Š+&Qlk;RuzئmKTQ&AǍ	E_7TH~P6|Mg6F'rU	1e#Tb
7S0xN-,}̵ޔgB[;
'6\h`'"1]K8gÞVUdbi=5=PN%*(g(~,A]yq!Ӣ!&ՍFL鎆Z:.+IA)F+1m&/[#4إ"7
}d #,R[2Hw~?_Dq7zy4l%S3(USY=+2f+V&léLIG nAN)/8<$>i2rRoi=~v6l$ȼ?>f|>|%ERVGXY3^rU/  =o<I2^+q05zIIiK+;-'0 xڴ9PܧG$7냧nS?~%GGLSYbh-	* ފj%E3n@A:ռ!pM
Vp6,4A_FQ#d 
B)'j&Ͳxܡdہ
IXe1JZdC־VVB5 ?NiĶ:&̰@ɠ:ʢo%z3>2
®do0sm}&zގ{Q]JP724xk=Y- )PJPFQeh3#2l@6*s 4b@eXh&~AgS3C("2h"`S&Y`&;&"N`_SڑAGʫyD#MN@񵇩fҖպ@1l(֙1fad+T߽/9#Zܼop6O㧺̵2N,QȉzsG6/滜6|{Vʪ΍v>bj@T!Q8^<cÌS;9$mMPQ2휊1F*7b3\^Y0гJ$M[aw	Φ }	t3ħԫCF|̆RD!XvX//)c|,tӠe"<>FVҒt[ l馃{	Ӌ$"5eAWa:Wr1ݭJ5QMFX"*=` LV -g8Yח=Spm|BF+%hrՌJ ^{'*dTx 2Jp)%thSk [yUpR'dV25>//"W4@Z>R4j㬘q_uof@.#RMYIF+]R
&bP]?[kx1sLMzQ9.BL@, 2v@TdOɺS+)B*2bQ#hBZ>h^~4tyenfu\Gloԕl F2-x-76=1T+jyY
sqgEUi--*ۂWP-z ,Ir1t%:JPDIe,J$b)k`>ʪ/܇ V'6MVLZwhׯa5xd_~ҍiC.[&)'.ڜ߳U	vTƀjFNXL0]WDjwcy3Lf
lL(0:0ㅓ"(m+V-ȃ8ʶ;N@kQ&\]ev	-3$taÞ<]JG>(ȊC9x3)~[viWrdMnT{N+lx<EQ_Az @@1u-ed'xtMl.zLb5m`)5McpX9`)PYedBelUt=l&b¦pN^&ac	%kP
g=^AQ՞$({Sq`G^<[A*gy:?BN;+L!s@ 8mG	W77 VmR䩪`;hQ=z=a#(+2'32R*kd(0Ǒj1}<8a7җc!y<-gd!m}hpXXr5Y NB[j1&wly 7:G&Wd]h2B2uEUuٌCiN-
prv2N)!e<7o}[֋|)o2n	D<Ml+Xfy7f*Kcw6ɓ
['GhͼȗN
+	\/@mЂA	$+G
f@'(?,GYW|r:(j`*3EU$CF`sw.S +pgo󣥌)KG_8H#9=CYN	
\#|U>+ޢii{,aa'V	D'"\!03?02m8vwOŁm!ntV-%)R˱dfD?p+t+_E#Z䥜 .Yh.tm؉TgKZH8hLZ>\UTms'eMJ7SLI~OKfX-q@4q
h;)܈ul#VsvtkEb`h6W	7ƕ@DqE׷}ȶU.R0N6ؒ2ک8ׅS9FC):-iZ2		A N=((ӤdTAs6*4gr
/g@x>:҆{Z-e~*:v/2+[h,vPNIN̾
eؔSc:	TRӖ!~]=&3#iq8Q&掓VA9.#ڃہy"Y9fJ{zJ$O23 #1hT<-]}lmlw4k㵺UMLdX
Zkx&*DspCJ)5&2E292dq7ⵗB|sZfŞFaI
Fy#=HbCR,1Z(`q4
aD.xR<&5*SqA`ySOFVfV
ͨP߅h8=ess"B@
9MoJgкgѼ9\,RX	훜e
$ل&x[3gXnif'2M]7KFQWeL=!,uЯJ?W8-/'Hrז(96J;SH02LTk-nDEodCAtBTՍ^32bws5/d<[kgR@0)ʇcRD_YJ0[_6y 7۹&_쇅yUu1
ɷ֓Sn	l&%aWQ>x|Pt.zD%H(hV#	l_D԰``ɼ/DlN0a6l$7,DܤDGV@BMv
pd5Mن$iK|nN綠vxRE\(m	xUfcɨZ,<OZ'G]-rܴP,_*'(t[,lR?.M'-x)`
ݣQJl@\8cK806,ZBrM~_bGy 2U])ep8pф<X}sFwVP$d.пX"7-1V3ǚW#>.S%]d㮅pm¹W$AQ	"PL}ѴQ=oY4p{L|ȑѤ%ёDؤk9[UE;	(HL'A%2+NtxZb'H辐\Ha$T@Y60Oތm-
(:z/HA/tR*d̟(-3̑>wLj"˧nM::80,=:B<2RdX<;Y,r"PqFC;Z/X`m 10W;Q&.K"NVIϔ0]lƍ,C&P. ^[C/)!A2W.%oW	_I)89TuMI\wO3fsW;8TʼlH%	C6hh`N"nnkE]~ِ7&ŰpTMtL-DQ;x>@fa)չDEF5P W$#*Mqs:zmKRфu[3m}.PPb֣oSm ̬L*BUީܜ Ey\9e%-s%~BH1!VFsg9楗Ba
 ]&Rы9M]k?8?)t%#5je L?uYL&ajMCxެg=q v隇ҲmEzSmTEXvގ%/ozيgIGtO2Ay.ö7#*uf%!w"|Gkv[m|:;
h	l 3+5YKJ3hmW'
")K;z/
D#^cgͤ'樎)߆= 0R9{9RV4I(c@Z{K
^䢅ތ
|x3;q)z̶*LfV}1! oхޖ77OW	~mC)3G 8JmR6;s[_m灨o!NZ2,O	a[1Xes|Չ[xqqK0'K.cahH)F (2KkΨPXzh z5%}JIH¡ՙQ혽*Yb")#(3xɉZxyԇS+$&$_(̑mÂ'=p +p;_"au* E[VJRqhV{[8*x$5`=@;_̙3OVΨzg%@oV\ )?;snUzz!hEɜ,yBcX.:-*."M
il2~OX0=O[>ksoZ?,,x'wX24{k{˳`& 1#ghXDbVF1E/G,z^H[f%RfxuV蠢 :YEETuJÙ1gdG
*i"gdU"8F.+Q^jXEו ^5greA\8sOO14kE!&?	bYp{z&=0N5g$uqe^N칈#˧@Idm	8~x@=c7uɛ;ԥ^bIfe~;EM		R.FTAo2
L0&
cr%ƽP}{r}2e[a$`8"6lScEr!UFb
}K|;ڹq<DKS١94uv<ENEХ<gaGugVepR]R+o[*p%InL:r/PCu@TMdՅ;i$y)AeA}>Lcg1-=]y&ށI+/GH)*ꍹ\ڹ`|g'iE$##1BY2VVIEpV
KWs
T2$dnIs6tS:Ԏ0C|ZvpY_&2QWH|?:du8Q
)h¿v.0`ѐ	$g6)&fGUuc`MPYx
ΧC[ri;H
Hp6[).)~$N#ѹ$5lh}`a|E~3ww?[΅di}͙&eںfv~qT*W(A`mlMizd	LE'4-~h
rӫ6J5emr9$ t7	f&Os}2h2z*6yHIČ<=piR`ۥ$
; XZkWEWVA]i~	B𜬲:)+jsq2a4$y/<y"C'+[h2-BQ(%j~WUCp9:(̪^"1Z*y<rm
pKʇHCJ6<Zg\l2cHLJ C7Tg_\LFo;,	γ]ǒ&8s1x&!iDٍ&	>_0X4#fÆzRMMǈUeضxpF RWWOLB	'CvkhyǒPYv93Ϲc'Xי\Nxf}MynC׬g>X82EOj
١!-BA-.<	Q"Ak%Ϙ=@^]%|]=sr2Rw'>v-pI9͓9^8C-Juꋷj'Ei4QKXy0=B9楘(CPfZlkC<1q:5goM&wQ#π }{[P4TIr&~۔e 8@x64SFB" m!O1B],?D)K"aSqPyI	&j<e7m ]|]mFF[[/SGbx ^Tyΰ~3RJxsT$R49y17x@Nr`\jzmL
H4EIB0Kt;	yMAh`s/u4oxHq*@>C:Unl^(d-".ao˒n~WeXFPv;*[V߇v}>)A>-%\e|(Ӕk(V<Ln8GʦX詢4V+FV"4GIWt<ҬȕzgϱtO4sWz`&E
zb]/UZjgJj_:v#a^n,	V=uY.2Z<$Kj^mYʶni~}{Mݺ\9N<Q
R
̧J
<Y.Z*(yz?(̢.&9E\dݡ4HXeLx+MY&y+cY
`I"jgi+E+ZžفWSuţ(- n$'D[YAj	N0s|G$NT@rF|NƐ6ƉۀB#-#͕2cR^<tBqLmdGp7@BbhZvJ eX·;n&J'WD-/42<T)>KY]k=>ld{aI!AuHӥ
_),5Ы|Z~0(Jc$2GZzo&Y:^m-xyᐅkmEw	O!V߆OiB)X-z ]
6=[!Mt<0XeITefM
@Z ΪX`GkIF܉tϜp.ȯJȣ+<ē<Ac>mXq
.R]XbG$XggC{=~'-Lxڮh୯"i^5`;2U9ny$>84;ո?d@x8
@.L6_HΙO;9%};V4]ŷU5<GE/KZ(V3VfRl(Uf+c5$dɻջy[e| έ])ڇH.)??sj+:B"SG
qŴ! ¾;aaEr;Rm*Q868 P\_ȼBrzR؈#S/m
R1LZyqbr"?~ExeV&B[wŋZbƯŴ/p'3m*ĦItrMN1*6ǶKQʊKrN7ogKH YP7$J	{Q4~Li!a:LơV	e&|C9HOٶt\	xh7A=$;wMь3~vT#Qpvsc|)KN *2.Ȓ,1-NaҟNV(pՎ7LRo*ɑsz Re/ӐQ%Iu3Mns!׃/ԤI8_&mOR#c
}4`f>׮\ze>7-gnCO9ђ%^B"YpCStAwEJkEx(N4"$p$،YtDz
T\p^GfDtL=!H@:πa< Op/Q¹!aFёgobjNd3F6kUL,q
g0&K_=<\-[D -?GR,D틤PS9P[7lt
Ob`0Jcos2	;쬮T*.kQʣ.zlc<QZ˘y%&;]
IOT
?>
D2pT1TI1!]xL*l;}NfPv#Id;mI!-GnP':T\(EДEvA̼9pJc+]<@n@.蕌{HJT>%<C7<a%gcy
9in	Bld!wt<
c,db}ɟ."0<\ɀ6Kp}eWA
\7e)E3[2[gMW43l̦`8547pTU0U[=n	L?RAtlNTRꗓrtNDsa	2OKɷ9
F5F7a"K#,M2~㤻I^h{XoAy[x{CSylt^&JxhXd#3R-z&
FPCEGm֖Sv@-x<^9JюOA`%> g£h%FRL)P+8bV0>-pFݓXJ,]Әl`gAؽNZɨ!(Å
FknƧ7}S&<9={!3>f TKeDg92-ݱ\O2ZWEe3vP
G)WަSs.C	S2"	8<=V*?] D'/4Qdy(%2x|GiL2ewQ/3vll2ET@1TdxgR4'Ƨ.Rڎ
(\9ͪdLaEb9/$m\
8;2wz;a=YnFjJ5rfʁ3gD".Brw8kS]=ohcHxߌ.QU(:1?|+OF}ðkGG.}X6SpUp6
AYb/
/
Y5mׯ'*vk\w  //;hz3@Qs]8RmH.ƻ#mx?`.؍SfsFؗe\#݌9v%$7Wɟe)4ԃe)	N N^UH]W fa'צ>
[[=r?, 
Z38!]fb~<m`>Me
E0;dQ1o
]hREÙ4F'ُcW
Vc[PwvߎEp9yd	^èPhӄ8w{%	,lPyud@͑'f]$F"HY}[oD P3۫MPFm~tD3ՃY+O$=̆OQbT&uT& %dw	Ƕ3c]F{ xXʮd}&)Gღ,@2;⺎=^H<Cq#ϱAN6pp#~	4xx浜bUzd$0&L@sPĂc)^XCI(Y8ԭ
ͦI2	WpVNZV#Qe2\JQ4-knHiƎ)IC"[VX؎)^2Z*iw' LKȤ03o2ҿ\XtZ0 0{}aRpw#<.`	{fOs"$yzӈHfR*yS7	3W9
*;5@]P8A%մl~x}ExD;+
%G%B1W\V,7c
9q
9!<þbnx|k

^
0!I~Q0Z"Y!ht.{$f{b@j\tOt\__Y1RX&FB{HrNJ{h蘒@
g"8̉0]&KqF鹈-RAݕUfYs=Pa1%5:kRk[։I(g99M32x J+N.E{O~XϦ EBgx#Gt`2r"W0%Ei_ˠqc>P8#~kH&jU;Q
"Ea!3뢚ӻbiRl]vpL%\/ğkl=]!
O>D^d!
vlҙϴԭs%mn H0aXb{e{Y`9T^!͐/v% 3g}L;SP_}.Z#
$.Vp2 &)]STMD$v`@M>}QCuH&Q%%8æ:X»:\fOv3C(RnD;SqY0@ExR2b$S"Q7%!
/+&{'uq 3ai	eG&qCoDɠim lX43F\6l1U{`
މ07P< 	käb|"hҳLzDՙLk)YJX,nbWfp|YREZNcwvqGy8Uz͊/,]]p F*5-=z6J.ʢQvަV]>
pilKxѡ-l
0NbĔۄ<eB{3Nih_(45/XDQPvm-zl+jL1LxaE;u;pU8ɐz4V<q^~.e@a+`u-&<NCzT\rm_|FaOx/x
3tjͼGiеjWmCN0c'{JewG"#UT?[=-1&[)JjCO~]i7^-9
_+v/㲎Y
&TX@b5ЁlhlYO8l̖1{|iX8ut8E y0҄uR{ǀ~ԱiZzC &K=w@g(	fא-jxd=[HKczS=H·kiG:l=E(6mh+yAuYoA.7op:	l) y^a-xT4lGlqD-yk[wG~q˞ȃ Ffq==%k0#1¤=9\3O\1x]Ol$rk@0VfN 1+,!kcX9'*d1Xvm#-S/fYg*ƫD
FÖUؔ='7x<rFu\z[q	W%t
KCZYS@xf7مlTtog$%>Aj3&S|_ƑGpuja-e*_˻)&S%P]
Ø!46/fS]ZL(VE9)B%Pw7f£8a?&;iL4'7Qc9[n2
OLG7X偪2IZ;/r!Ts&! LpɈxAz:BY K*yZJSܖ6ng'"Ea*[HL
SMfyz?եjزz/mp)XUnO9y,ғPQF%FXY ;!:]Ct׏+ZwO1 .o])

T׈	}rEl/rܼ3{'w#817p-^t$;L?0JX#
{	*yvpLCh+q\(R-)a.V֔S0
ə$fmFiZ<$8̷;bю`1j.`eAQ,T+*n|ԃj:*_	9~x$8ܬLN۪a[@B)'j -kusaqinfE>ӧQibd{SD]Əe4
q{b3fy! &RW|
Y^'?CBbҔI
%t{Ѭ
q CGB%{2G©W9GwW(1Wm/3T ՝dՆhI5r1I>O'qvKC$
B+dAE;}C,M>6z1Y@ui|/=XeZ$OYeҍ$mjZWyk0CLk@W=c"S0`ŉ7;?gm!it(MWh,p(Uk<,%q,!hAk&0ӧdoʌM(7q,ƭ4;/6	hZ%a
ی./oP%c
9Nx;ߣcѻyNF~
kGٖ BqxoA%Z.+۴iRyvpʒF|75h<ϫwW%&u2/ٞSa9yg;2tbX'q/0*[dCHBoG&<6nhR+FDPuоsfstnX($tF{FwN
zL6YJ`7/BGzJjq'ր8Z8[Mdyb1Ezsk\MTa*qOs9nrg
gB1Ynnĳn.oEѮB~")	WcUp
/}c!6BQYLߍl't-Xc6YT`PfwxbMkmE6x,/?mdL@PvJU
t1ɪvg#zI7guIv>]a\7Xg{~;@*nlQTgj5.s]dͼ-
x7F*gpVqh8_@o{>ƺ_^]TQ+nSt=0Lf^N$
v-tŒq@x2 I$]v6a~RUZ	B֋<CGl`
f,lJE9%s}G.K
ac0=gwR6TlpӗOSםżZ
1!Xd[dj'Zeɒ%6DFcǼ1)P"@&='t_Մn&,dX6 <Er^ʼ]F
D׈/hLLom͐Ý4Jrq:;rVkC|X@QrOR-*ꋀc7p.68ٳzDƧaNůsTJ%YccE^PS_WpMeDRZmoL6Tѐ16Cϼ,{2O\!, oLh<y:cÀ(uLF^U@G)osrz.p-Xa~o{k{4˼#.w\ +ϑ(.&NMZM<k[!PCk:^F˄.Mr[Jdp)o@Zp"+y+#4"]FI	"Jn/wcxj*!j~?r۩YT5@N8A	_lNrṳ|6
,s0XQjq$_2z _da&
ah1%Þ5n-i\Z&cBஂ($.V;@Tą/\A-@gyFy_-9r1ese1|EU8ίX'ԅ=/^z!2N3`L)5$%oWZ$bqD?c#%UTZas% Ovc|Ԩ+X̤a{?=WS*ĕ.y\)n;i"M&tRF(|uZ&AU
yk7qǒtr1<[ya4&FnL	KҚ-bΨ;@.\Qͤj|dwF+'܆YͯxsŮL}psr/l~[nl{Ӯ^Nl(TQbG.䌞x%C[Hp+ƷP%8<ɤul^e
޼FYKp̅԰(@NQc+i:us]@=O+(N/0|m2r~NI⁉ʧhEƟJFQjk8`U2R\o	whL;}__ *
9t"FZՄg	ޔPn-	ؓU.)E3
(pO
pB:O :w+ ۅ)be]ufkRB(Vh*$2ڴFw/9RTX&/ΠNsTcg]meP٬mQxEPq5LGB $ʉ_pAKJռD~riT}Ve,p8vXݑ0X#9F8o/ ajHw
TiQ/9s G	2FCAT_gUf03=LD6m_y9N<r9a  ê?7I/K^>%bȸX/])Rѡg\B6O
v	Y4ϾA@AV#g[QEᇳ`HL.
L˚z8.(eLA[3 U҅\4[붊uB.Y@Yc	z'7md|±O6"]u?jb&hR!$h4O8 lv.
اBk<ˢ1pbVzsV͍x&mٛW|5v}+tv{c":2InD{ ۋ1)_͈HX>Um,Q:WoS5fuOcZ8¸mS#9{2WZڰw˧{`9a$/>v{S"SS?\58ƥ_xb
í@b-JD>
'rxcc|x^
6zPoCOʬaju%9RWI^x|T~g/Mvg8qzdcC<')ZY\"v}`Aٮ~p-H#P3鋟]ҩ*^-)X@fA7 o@Ծx=
$.zWXvM}dڧ/Cˀ	MP9a7~ZQi;Pd2ELq6 .`äx#D64)p\Kr^ߑ`5buZ<v-w˲l%l1F(#1	]&ܢ!<`^̔<& J\lx5'- x ʜ,0КI7^oHbyͨ+ט4<RfJ}?ɔ6w{mdϊ5'*-1*Kr	mI080^#^D(5썉n:27xwFޫt+B\`_jaАkl|gc޲
AP@'JLvTIy*_if*#
PrjOͱL m~_QY֧A|DbBQ\lX6"(',y.޻$sEBng6$cְ,L

RIyct<fd+Q5=j(Fto!MV~1/DM4-fz#߬%CEk;n-\#Hqˏa>N#ط+/z;U+q$څiU(³Jo4As;W`u`^&'/{	
7Qi_ğ	ؒ	ionJ3e,	HF>Y.ZhZ"w7F9hM[dcCM]z:1Z _9
9=t{*zR d9웣oE]UQ6wl/93ZLQXmf#9<dß\.Q+t2M13n U,AA)'DM$d꛽c+^$Fr+1+DAxe[{+XS-}j:0Ynpmo}VMoi3-49:ɢ3;hI\!ID|0ףD˚{}W(f)e\̫|0j2A~lr{KP"))i(;ءp`Tk!T$DЛU#/
p6'<=g>"a:޷[?@tI$H-7ƺI>Ym۫2A*?n,\͗̫	#C1f1Z{t6{X~E
*όv6\X
-۬-1#JƉe1)fn`*PU|eꊹYB_d~*:]ˤvR$H&fFK0G:vW|cbg\>7wHMq WB0 wrn2`G>#"[F=бez2zpNXu@fjZ̀EEv8FTĜ"9fu}S(auygI(g'oƉihT}Go,,g#%+]]HihJ$3sAdz'4FKLc9Lz~E1_'#xƁj


G&r83yɅYYw,xT}\gxvZeCK&{"̆~Y_qcޟmUW(vqRnx}s5awB]KpE*tucc_ a,	rnm7L	Z tZq Jzb٦6U$Oج`d˞1Sa*DNu˫TX`zT2Nɣ8R]/ٕ(}1L6$Hh;jH|6-TK)mWʢfMinHnƙCxed|809#Yk+ HZ+"-PD6zz.A{=aUJBϫ<wuHiND,ș2Z5tdyY!Y2³	P}٪bYD!&ܥWxt8	`E6['
Md=@|V~$Zڕ1|qWzƳmk#(
p{Zn,ϫHs"YF9A>"ܺ#pلZF`趔TqTzK,'j.cY1tU~WN0ԍN_<I垚(WO(^[GjZ?GE5p{{37P+:U0_Y+'$-,p311˅Si6_V#m0ej]2Lon10*W,a-|>p)#j31FF(|B ڐCV:ŒqS
o>r RtvndTYZ;2RT7 ݱS9*3?"n^6ߠ/&
-aل3&dѸ2!q}`+[ J,Ч |RCW~,Fkv?:lg5zbY3`}/@e-xv)=v"z&s H piLA?埉;'eR:lai<W_E' ʦLsW%;wm*#FZt7bH(	O4#ODڤcY 1]s>VINĨnY8M}zk&/aw9ؚz܊.p5\CdD܂6:ZơTk
IW|twʹM7Ow
2Vz+!H^NjkA۩sXO)5.CNj6i.bX
tu-Hy6a1ov%Dc9'7t@fR?Gy	hZ3!]+l 
6OQ@٘XIh
PZW(6?a!|YtMQY[3Q4`T٦@#.;0veUf߁QtJOS9zD{IS,UQ@&Ͱ	R"5PMzi33I>/RlD/WLYKϾ>6p o&Z^|r^[m``pDK`X[_%{Ѓٚx^)D*-iSFʲ.8onICSEAz?FTPb₻H1DѸAa2u^ρ~UQE6 ]:*er;4FЏkm &h]FW8a\ }kNks^6<@6*Zh.җJzZ9;4|V셢nPL<VHa~qT
&Wȡ"s-P
N\zyq~c3-/-xn5ܪLN_vU8At]tXp2\(.'Pa+iruSE'cUOy!M]h9HfhXbY`#)~Ȼ!&NVKcO_?l3YNdtdƼѾ.+VNYDWtӃH+*J@r[unUL6HB{;a8 `bm4EsR:qzҥB(099':+ײdpw$
i&[tnv"a,+W6w%C$呐>#U%mΎ'OUg2b zm~[9ʢ[
vA|W R,E֮6D2Pp彊w&	LOuƈ;9<KWu[G=	@j_nZ#m_M&94A[$ÑۡbvcR6h}әK\DGe`3ծ$,U@QH6X<6Y4Rfj`Jht?E Q9<ҥTVfZ.1 M5X:h^kX
ɐ3,f cW\6Dyyk6*FFucmQ>3/)>pic_)trH!DՔS,f+8
z+:Fv[H@~ζ$N1«4E mʁ<P0!8k,eicdejfb[h"zMw<806JOA>ǂGkZXIEӻoe4S)Qy:)&H^A{H=s1X!%kcK5mzsnO,<M#lKe mph\G,fԳx'$cVȏ_i&NJ>*KlmE]TvzbwYvFxwQ1 "& Ypc+OyDpd@8/cR!0;ӌ?Dً|ZR7uL;lMwg4r.#f}GʸdP(NccGA{:a0Ja1	[G㸚ቺ!QBKX4XMf"$NcC6h"">
S)_PQ4bq*% q"O
5M	.AyLqJ9}ܻan)G:<=yp,b_Fj
Y$wEj2 8p_6Zc&Seb:G1{M5E'ؤKۀ	5Kǉ`ݿse,S
Ҧ̈;;IQNn|#3D[0Aq2/Ffz/4?$rN6VS;
h("bw2_sV7~9.a)yTaGbHg@x,eJZuLvٕx%%CX;썎871*0;\y4xֲ^i0EEC	h?OZzӔ]BnԀс:QV`Y
m*Oͩ2ȧ5Xz`#TI.cM\&-L3YfJĂ%of6MjDy
!q LۃkDRHҶq\R%Z]H&6yrE.y*<rvr.c(ad1
)kJ0VM2]LBn>	qq.}7-˹{ygWKy*%3QAdAh~U=Z
877D_4öfP8,@7ʋ]dʉ%s; wR
t_2UZxT}]%ܓj h`lDo%ԧ{ogBO/BTѰd N|mt5Loq
zUծY#EϾ9
N(<S[ wAH`߫ P~ihДz?ԉCu=d۳N1
j)cOڭi8	;JӱlB%Yqe3XA6¯hJL`> 6z_/1fQ8]%?@Yr``A2SO@p<[#д,*2M䓍!8Dv_]V[TDY{1o6-?EN(N
]gVd:MUvxNcmRkY="9u;}L2} aH1L3w n86>°4shYYR+[sJ{]9E]gۿI_Fy2Ih!
W?lj):)"MMT
ْ3cm#6D^$	
jvX2&±>`[$#41Ǚ.z2V3ڑ QF`%FXOH#or_HF˝GCdD-MejDSٝ=RH5;J4J5n#6͚x '6Y;j̗qFӭtًBrYc4:8Gl Aq!-<f c*@fPP;0`$^nb9ER(fK
~_W7`eG)5rL"ZGRT48$D*3k,SwpcG}g(~um"7]ƌrElv9d{n~m]zĎH&[1*Tnc&dVG|,j a5:(#H@{O/:h<5Wc֡<!g3w3,!٭+h_n%SE>=14{<`_
a/ScHY!o=8ӛ#@
B cQd}d]5UL5j{ac 74eÛR9ZLH\UB_|V{>Jy!Ӥ(K˗><
F	L`/dGr|Å5oz8
7=raP3zIArɟ6#REr~b l^*5+L)n9ڋ:wc%hp1QddYfu"DMeZ<3ͶbREhťȸֆAnٺ3m99_EAOxwl;₍_wDԚ
Mx"	L>P!\f;xKf<\[W
W,c"Il< DE6;[|h l4'r鐻ZYʳ 8c讨ôiY;2rJK^,Byێۣh *!Uʌ'J9JRV	L2J./hU_3Qd֣1्t@A
ᩖի ?,0%_[Lx҂ひu2+hJ@K"1bġvbQz&/bTOd._X#6h?uTƇj+[`f>ơÀGN61}ewaǠH呲hQsWpbe;TWl5,R{΃H?9WD/dln>z+lK
+B|ѳvha(da,|%zX_gcɜ$JM0hn?>K^4JcˠBn	kH~G{
5Q\`̀KfP|߫z?'dcյE_,%Uw0
A̓K0<DAMWP]rL9<O<{Twp65,/<t
	ɢۤj괰A
:TЃP~6/Qg(8ɔg6U\=5շA@Ab	ctJ+Cհo5/	D6ҩncNNL3 _nhʷ֛ˈ
܊1Spы߯!|Uh&Xzݘ.>mFD
wEb#$.KdʝA|3wI/
Vl(=xF,m㉽o&	_bcʴ{ZyybtBK7a~_v`Y8`/.dIl䕖H)2. dᙾd($>?67"3>;CDӥ)},d','K4zbige=4DeMyʎW=Q'2wT&T)ħV1v`3:'yPl㚖򽳌2(d-oE54bJ"EM$]]qvoɿ'b8aA|Y0"?ʭu
roFd%,쐚!$G>#M=@dt%9W =:\)m*#}^"tӯr0<<<]/:!zL_'$AGSGq QSX[q0avg]kQ/;?Obݮ<:֗ C0~($ጇK(ߢp(.I܃^0"7]M٩I詉HD1wmmap,dqqELg35
h Bő/0DV2JZYT !HVWC./e#	JG3`n	ԟGh@F~`F`a}Yz.Q$cj#w؊l4pJ[
hl^Zȩ@kPFuQ[nD	XiHT\n!t]g)'aq '^&ej2탗PGmIndTJ&>RкhLl7ֈX9ļlse!}D+@EB)*bs4Es߸,_h!޲Zzc\~^ee,KfMUҼKfP_9#ঌB8|+( T,^}0a9AA?r^eH5.,^ rw\\>+6Lݺ$\$DLCr~/أP*6ĔwTJB}D ׹Nf,6ue0^³)`+euEZ+uyg[a6<ދc|y)OUV㚉0i֒`$*23X@sҫ(|Aq0C˳YTl84gX"-+ZA9F;MYbv=E\w)b0<y[(]R>m'l/⫼pH"]٦MazbD!F
DFDr8Jמ:Bv4#ɼ[we[cH*"3=	+RܣT<"$wXhcp1jX65^ZVưA-ZOz)
`dެFTy@2ٓ:8E@:0Gk6a8ɁEǊ(Y#ґ)	Csd[råm6qr=&N;G	*{Ć6^9&8c#ӌ٧43khn#nrybH",qh\֍ 8
/wnbUW<.h^E`%j<D输
YIa92csh"wQe^	v1-D1)\	_J"$7(a<DձeRYznʀC- Nr%s9( &|ʤG-8V:-7\#pj"< H@1sŎ:Y3p"ڰ`ԋ-\[ԦP~='@0(Y7	OY_Wצr=I)3(@I1<zf_/F%U5󩌔A:Wą><z歏[|M*\iReߙ1ϼL+1F <-t<Lhv9qr.ꡄ
/閎ic"v,Y&OZjؐvpɵszU\'.agα-(*b,0劧*ߔH-#\4TZ-h 5Nn}Λ6\2ߺ*o	@% ?| b=NF7Ec	gd-+VOf "v&2#P8yfp^i<S9ZI:t|jq^)3mxOrh&E#{%\~2}te-zW>/gg~-zXVnWI2(An a̂XVM|4Sz#~VvWGdƉygLpbBoL5i\ vjp`MU`YFiZ2P3{FD3ᄣx_SC%@R$ڍMYw*	\TXI-},ldZǋqn
NNT'ӄ,?,GIW|r|QAZʌ }1{/_`xpZ\Chĕ'pxp!ٜQV<GX`ZCmW_2/m|Z545*rd:+Pwʕk2;'sL"]^,90`ܬ8
%jcEɥ
Mmz4cQ̒fʫ~b!&4 \:dwToWv<uݐKȱ^tA 9JFOlr|S"4i	/Y}ݒ^
=8RC H?ޣã&U"d٬MU}(OTўlchZuNd䫍etyBB="Ȇ5 HuʔaU[P%So3eO4⯦m:'i[D㑡G :PB(1 ġGL		p5avQPU+ZQ6v%NrE/bzʑ4Y'V͸i';F~b@)X+dqe§2Jl5P%~l1}-Bϭr['yj"~ZʰAPA؃=O<c]4ШxEPΎaBg:!4xM7:zY+gJF<2QeUqouYa81~63S0R/ER-:D48ˈ|18a,'Y?X> 呂LQx6~öH9*"F%6)] a^/y [la	l|6𛎒Y9/&8v*{ٍ_ &% HbaNa,lf:M9r.?J80>K]7(&1j̤.*gJI*F&[O-I)r,
`Eki`9D3z"^T/[jBօ<NNngQg_lPKhS< IH3@8i>#Q´JkMD"j{}Daay轄+*(GSebIoFmb:Nß}ȗ^{&ia26ثIh{[BMƻPld2a_Vá6BG欸ݺtMEdϤ`1GExeymD:6#΄SZv`)|!?m ֕lu(L/J^d|4$L~
8Fr_V)mRU6>C0\NfV	Q+m%_$">^"0l,tJ|-~;c,x"қL*sJuzLnc}3rcLto׭=&`lg'ڧlLҼLq+s0+lD>boXw8s78xu#ԭYND`4\]Oז9~3p~	"&	>͒} YqrDK!?ў^Th<@*Oiݙz3|wrF@Ro{N#~RfܯIVoJ7ӵl5p1_R=9eK(?f`ҡu:0
%|f|ך==WPߘGa`.ܴmi(thcqڲYʳ\jh -4)EbSpV/Q
8)!q$P^R7^Ԃz_ڊNY|I2ll@d/W!LΓR5`Pp50d9*eVVʘhcBӚ-/̩WyfęS4⦜5
;LB3bX}HY6!<O,iYlukqwD,&2:l
(aR˜{l	S
qŸaGK V%	W-$hӡkUi䯳xͦM	&|n'+{%n-\Ccq?HX@["%b.Ke6B?3J0t^'ei@) CV`YKr
$oS-OAReGrB]HW2GE,XZ`<%k{pd#j8nV-6מ9|Vɝ+Gex("0IJI1_T
!X_nN
9UbZ~GQ~Zd24& CfwS-jA=1: ՌjUQ`|Pc%m6jl
jON\0Tc
([RUEdv-
y!3d$qJ>İhṔe͑p8,Q=T":<MCc`҉č=$@9S1kL,#FdKo|ݙ[c[;CuDv[$JeNˤ`1e4NOzU'x[o}J}-"~AV`V9@_B0j(س!H\M3ͥU.^a,+[?eŋL'O-
탡c/C,^\s	:H~\H/gި-r%
KIY~9gwt
K޺<PC'X5|eJ-ʣD\R1r{+ETpM{o0Ĵ3"=*-cONS(30fyb- v}\Դ!7q$:wyt7~%i6d}[A[	Wc "?vUsl0&1FF;	<kbs]ɬ$}{;4Yh|1)2PJ
خؓ3ҖMA+9%E"U!tl@\G3Ø+|yva1;%x#kE]cF)ؾ96#YF"8!/|qt5k.4xb"5M(枾LX.zv^6
Tƙ(>]۰$CԅLF\kOГ'Ԅ6!1|h9/9Ʒ.17$e%fՓ5LAMBuibr3eޣ%j`q<=Z;Q%á$EPVq[PMu]%Q*YN8(M/GX&,=2:mIOoeL1Npyox%$m݁ې;Cqk+U,PlrM0i;W]ʹ/JUN71/:U
o-tA?xP$l$pg ův:O1*`;yJ#^SeDlOB͜UGz$E(;Yٖ
R%)gQA!vy0ߙAa-xKynIo&Ԯ3.#f0@u8xSrbR~:gcUk`,wm U	/U@'rD"A})ZLRMv.|yI9Z&h4Q;atV!-NhwI#hRev7[X#%*VZ!B[zj5qgr3p)a
 &%ǂ7Ux%{"tӛӗ9B'/s!{ KnHƪO&XMo$<P%r0N>@mJ!4R17y"')WdڎMlVe4K 
"Tg~)k$*AB}E<ÌU٘c,:v)lHV(}dmZŋy6A*˹ш
w^Fq+GXc1E;hŤΡj( n!t_\߽e3xXDK40VY[L_mۅ^)8ZU#Eg*# )+H#2-q}v,w!K 稲"
Hޅ(7#GO00%`Rj$uYwNɃ#L4{_E)WBw5` d$df_C#Frm 
*!9~(`1u-/LqWhxs ro7vU῟wR'CUqqxAni`Ky8X#卋/О{T
K.K+Ƒ:o+ؔ!!p.ę]6Y`ؓ.$L$9L+1%҄'^|~q]}DgAuXժ`PqLo]+kk԰G7P<uFYM`&f.^H\#!H/)Kfa{0o;	@V-ñnsTnޠq%s@7hhe<2wpXAױ`1w<ށMQȲLugC[XU'qO_bؙHT$;ȢY|ekHMccBttwAIbh,A];iE})Z,k^-8:".C+_=S'SѥU0\z]I*"HpOAzx'
át
}Q'청uX[_ LhC!=x/i={"Cvf8 "IEc&izP 83sϪ뵄4}L3	v1DF
(Q!b{m"_~Y65 #lDtWJa""OxBUQG,hzϟj<·)]	@7:Rdz5t[fcp>iNq)Fk,3B8,I|
:0		*c3ST
p ٨̟3VI.c>8X(ؚ:1 H[^`H6zUd6!PqlOF4=@U2B#7:ޘyBrinE j0xWu.J6b^lAxE7E{Qxأ
Y9qj"	G)+}ml(m1@EWq\|p6z17Luv
鸀<MGeSncY%}P혆R-d	*;db;>MSpH*aS-ڶRݣ"hJLX)5"W3-dUwyƙc=0Fo}[r7穋.PJ9gEkQJwv7Kl,<*(Gw*$,DZAE$!kC8J;
Ot(ؑ>pROUZ/OhdqڕQ y|=1	#;ڶ[لw;q93'J>* KsRh3AJcAn|Q7.\ǋeskhK~e%S{d9"Q$\ϼ^|aƖȵTRa]t86Gԧl"4,Ѝ`b㐳b<ǀQDi3zGZ eOw_fJۀSk	z
'edN&ia?Wr3R%_g82,"|[,	ѫ4M({4LK>uEu`و!=F3H_J"Hc\.YQߊ|⸛Ur^AtO2J rȶKX_^5dBRGYrDf->bf5q:8.Ph#VI6mJ*y,@ {:>YPYk`t+ed-aLap1PL~8MH\M7uqDWp{OOIyzʿb4N0ב1k19ǩڐ\A*
walPȡ{QY}ɛ!\6q$j0~A萂w&txg~)rS3nqVM~H~K6h@#܃z
ʜ|)`KH)uLwћ8E/&\L?ۀ o
QuDpl2MzZ1ZF{I&f>2(̓C	g#+h6+'im<4=i){`47ܨ1}uzH6KΦ4 (69 =ôTAUҵF"pfjuz60M+V.JyquIتkژAtv(O,Lu6a֔"f>@\:KMKeݸWӴی*CSKe7܉@)5ab	\KT~
n
 *pkzTnaѢYl	XV>R
E/X3vņ88Sy98_La?'i%At}.JD,Q̽lŎѷ̪mwbK,6$(t`ǘ358XV}5hFuPW{1o׷/˖8HUua/೛{/SO)ῢSFli1]dօœ2de5iߧ)t>;Wsh: _DC kiHy>7-|\tS|]h
W.~,1+:538"ycv:N
e[14ev)K5:Bީf>>9#WRcx20AG
Z&x&rmuXND67fǗ@eUƌLar5ر9hK֫G%i]X̶(\سTڨxP~& b,h$͜B>fTadt늏OյxV(ҟ`lQeh|GL	?j<OeZ2Љ'bEx+ArLk5QE7 o8r0俌XH2?%*Z睝.@~I<GE鷠CQv)̚&M%QE%X(j7CbP,~yi
=d:܀:)iۨz
=(jO !OVME|eliR`KmFdjsҙTL9f.U. 'ZhNtY9F832`f}Kpf:MAZ7[ZmZ尊ktqY_">ihF6W簭,ʣ*ñp_b"ESmN ǜA;O#1Gh)bτ:Xݾ;s15݊T噫䑅\LELGHpvnTFo+TSΖO?B(]tci:im2&>W<W8tºv%-[})sVh;PqD5g[m]a \/J>f^1Y3Ht][Y&FySt,B_I2#Uw|'896&È;o8NHRM$jGʴ_;Iz̗@MTRRЃ`7Ҭ،zHQL' ;y+MD#EOIq%I
 kf֬7ɷ^v$e`S@^gFPϧAۗ]B!@86^XyA
<8)T2*>FY|WpD7=#X"rF^S!O VqWѹh8vUlԉO(G!3x
إM̤	1U:K/k McQ	!@(N+v+c,)gZL^qC]nʥiDp.5F42Hp~mq&<0{ްL9@Of%s3+~G^$n#G+SVC	H&;)\|+2 Ќn2hcg"/8cxP/vLT;ZNᣋb/śPPW	Ov zzple7nAcP}K:ر0.X'6M@A!ayVRhlE&9
ABJJ\	
z$>/|*ϾJM_pa"RAF R̘|.FA[T
jc-;g8q+wC@4_-}SޭH"!eFh ,AvDk<3>	,q)^DiM۱h/6BiHK02LR2fE"Y8h*p84w֤/	=f |=D%pA:Xd	EY-Y=,j˕rBE,༊YUabe e`ғcc(Z4(B@;(4bW.p2SYrMXb1#<_Gh.^jvL? )PdH&J-J`kec&/4YԦavu;ÿ=/d#)}~$X}%űMevi4[<.Zk$u3lq
X]H,rk+kK&e/a,`hBWoJ|PmCJg,.E`DƸ`jDm%,Ÿ&Wv
*O5|R9PIԤI*^ŻS_]dSÔlvatXW4	kvyE7ug᳦
B9q)ej^xF--gFff"d$#+N0IZF2iͮ/hk4I
aBn$9eTy02j$ח?a5T;	#,UE6Gd,{^.<Sary>^7j00@TC=ߗGD՛::=tli&Lfs<6kϤ(#٠DRV6.T]R`^y"{~qJ8֗5Wvq'D˺?<!AVHUEɄA<Ȝ#9)e|o`)ˑC/]ؔ%ཞrdCCG.[%Cuu$ݯQYU9k 1*Ay~k}2 b)?x**E
]aWVڇT-cdk˰Mu6n.0]cp:Gx0*_.&1^`7tMUh</6rAmk!KcȥMި=7w1NW
ۨdd98Yd]XCd'&LNa/N:etqD!¹ܚ/e|חGܞDi͡X2@)6r§ACP7TY(Vh3-34"#͆oe|q&w\vK**/bra٫D[
HlZHcYLr|M!mC櫗[U_%\E.{+7U+u}L=8QvT^Rm|r1fkr3ԋMsFAmjAKA fF!Cusr[\8{tJ9J Y 5_0dԮmT託cU)@1pEb\AH2BzJh1}[4y':qomR͐AD8c+|ńLXlE+!zWTY<]\IJtЁdRy;vVpA!_G9ʔ:>۷[9_@coD:"0EPM9^MDR{sp:&Gg^t8͒Z뀗Iݡɺl}
J^&lK+sam*4U7( K^g% ΊRPш&DfjXj<DM
Zs2D% 36-1Blq(8.#D}oL\$4FvFm!O1ڿNYn1%5̪WMNA|;ZLK4j8zilGwA6͆g+zC2ulLlAtܤ?Gm?㿲\
SQGdP-T}"+`M&4fV5%яQ. ma>Ǒy5ZYM/@Ћ!;q/"XY&$aGŸʥ}B1[?^ŝouxmksuF0Hg#ȬI^
ָ}uQt	"Ob3\P522q$"Eor{)Ce7uUI$AUIa#4`k} N?F+i:H/ұ/9'Y V+6U
tc+zñý'q'UBq6
'۳Lk=Ô2N+t0'FxhBO˂.,(
Rcx"V{3gЂF`%w+`Bn hUxkxKPA
q]J|JR"h:CQz *.0cJDsmlV&fN3Û0
5IRdU8~iD<B96 %팶:ی+Tw%$],Wwxxmeg|XgM TH 
y xӣe"ZoݪmZ@+6}&9`'1#o %<X9״H:Y2ʩfhh'2PmX]# nffzpڡTjb
e}3\J*qpj>>NYN	59ɘL,U:;''R$;6quBG(
I#HTd6S@WVx7֯auK9x&
@%uɃ"&ژi$̯
f	vS~ dy/X<-td40M
ZܯrIH[:!VMʱ#>o,/-%P!JC̊$B㯰}F~%Js٦-n_L-\P"/
JtReﲠs[)64,5u%N@ixNU]NsaYq?tѱ!jUE9,A\l#31=Amzv'N5YSи#Tpi#sIEP7sb=@Gp~TDAXlvTirfeʬFN7Iq(
a|1tK~Qu{BhqJDΚ'eIGR^lAⱚ!/Hp5Eؙ&{x]A	_8ycM_̺3Ce,.Uo<jPA^|o$OpX^J7ZL.|Co*1Ȣ N5`EAWJBɚ 
l*p{7JbAi D࿔>x;(W(,<T5Ĺ5huSe~28*E	0Xu`*tX[r5AIeYaΛE1ApWTcy6d*}e#t51=K*#y弰dr5.8r mv&!n0'hFZwƖ{TL/EB@|cmt_$#`vqG!F "_Jn){?f8*Wj:apD2|:
<Kx<Ȭ>:\q1ߑ̑uRȋL2yq!\Dkz)6QwMp_J]Gł<wr[Li6lDq|1W[eMiTw#yij7>K&$;̇;&k\'E`č2s|e6Gq22
~c1ۧ6gؙ}ʣ>AN9DPUYXl."3R&v_H^32
`9EO-2£{]mz-Z4]ʗ`D"G>|G)<lRE,	2B
Q1[E:	<q,c^4'h*sG@o}x("JLZ|g_T&+䤡LQ97$"uUÿQʑ`i2 虌dTG(#Z	WojiCwJe]at`6FS
襠fyrUO""
^cToGwo
UUxZ UgċwQm^L+jfJl$suq4lK.֞:-CС/cac1X	ho
Zc~&DU:LQ\!
.XCPŧFm/?ә:n.:<{{=1eLĎRr1K:ճ]*yt'=i/Qp9E)STe;PEovydXcu,0{#g
IAGF\sW,

jy紎GtJa~Ku%qϲǄ喒.A:,#bpm:bidU҆h;4X	ƌ/m׀Qө{ZRC`pe>ZOò eO%)Zx$&@`d [CPfx^<USb0dg\4Bfr!.Y/NcH6Yl=2ۮ[qv;s΍<p<b£%<;ǪYDb*81?H̐ !U&a}D\~*?0k:r:?I?+Rj,M]fzq%_Ge=H.xvdg$X@bb+t
s_zX;
WV8/%kV?GnMNe'0yb8t݁Cp(]jy?#QjdI|-ɵLjXx*giFXsA:pnXgCVS˺MiP#ܨ,W{1zlpX 6G[SL.|hI1]J`QzdGC#A@Bxťaнyx"kNgAC7y996dc#>%Kw}A!OTQm?0$}M܀2+	AFATo?.Lt_pol$E]F
ctTǎwm|?2+HmuBDڌ\t!L`q!jdMe!vD1Ąc5}/^jdtzk+'2m[H)	3/&3T<@DҖa=BGY/9b0P]>_0ʓ,B@bEx*
*h̟=f9(T"6v]
x+HMNO}_ .R3S6M͜fV/TK(f)mjDǼ%+VzO)صdcN;"V'm%k/9BWa?
^$p=1q2)PogV[-Zo%{X 1(,ddCWח'S30mUPEJiȗ+ֈpCXޡjjP
3ڿ/`\3] DV]2Nhhú3&٭0F<Z'a2_^|	08R=
ɘ\}-8JP
XOEfdH'RB$#"yGGf߬D^T^kL~遟ݛ ݔ'a`+LDJ5b5ȋI րD@zf;LZԶCfAu
-[_5:뎐x9ٲ##u˒mpbߖbRv54quXeJNLǔ)L ~Xka-Xl㯐L@4tϦ\wѨSA^ 0:Uђ0r<Ǎ-˱
'ܑz ZʏIB:%n{buzTЋN-hE"3ؒ׎Y$s0̗wn"s2҇02VCdPgb;\Niᡗk͋ctstQTe!UQR'
Ĳqn:wDG삉mzoa𰚿h[
*٬[L^hͼrd DaPt_oxJϖ-
~
Ç:u
:_CX+E)EnZiƽa4
k7c#}!͊3MkYKgVUxLY|@p2&y_̀Lαy⮸D[\U@*p߿)s7Ofo7Eɋ@(HadsP{+^rKC(t&:4R}Sw"ޜ-c2GG5_9nC"OTi(c~*/q xll_@	|5kٔIc6 sDyqi8:mRMhh;׌
)JXrrNv2`᪓wdNX
;[ 6wnCz3qNM3ԭTA`?ٺ^VRݙ	ǲH<3.L`FJ
`cghIh2Nl^m6qrJf	e`˕ԪBibk,%>jdQ:YsTuCcb<׿bgA*r19	E=QbVOBsVFYJ0)?`H,$L
OE5PڈP/_}$I3ƿx\M^hF䄭Ѭߊ<ہ'1R8fgY0+j[g#F+"pa;B1p-/1[JZVtSލm:ȵ8<˲ƻH^M{.]$qx2Xlsnl/fLz{Ca<ΧLdi9:UzTP4ӷFs۠~"w/6dʟѷDfuaє~ϳ|,UOIi/mo!.ibgintIUs Qd;4h?a\+7Ph I>ѱfof~t
Zğd9m&0ՐY
)ȷZPL;K%[5JVuR
KhQRl\05ĹϱD{.ɡ><;+x,=LC%82^Ȍ4xFd]_aU\S?:l>w2[Z.[URiM8
]>͛X
	MӪM0zf[DdāJe=3vd)RVf.]Z'^`ZE-@0{KI&n|9j䋜̣^w&%D[t(Gp9Y(h,RzM晎vvd&{~EQ
RB8nzƱlhM+1|<Bʊ\O>QGљejf1+
j:97"o]#.l|Qþ83*8hW⓱cmǨT94]ٳA}_1OדFSeZ3[gX%fj +.Wds݋&zZTDO^fjŜDQOuЯh=[2wײ~Ah1+nFG񓧢TAO| 85Ue}sF3$lZ.|s9NHlD.ִ缽l_t&1A
DPnԹ}ضk=d]L<̤HMtr/<tzO=DjPLA8L)SAE
"`2
A7+&A-1=P}ׯ ) Ak70 Xq
@hMJa1E拮xVdy`#m6̗58;]=dRZmE3{"ƛ>Lx*!<MA,؇/DJs\i^8/AoMʡ¾]`

AxL\cdQ0Z.tD=W$ಙ
ddnۿ/i9SSn')/f΃jV$ANnQq&.fCPs `̬G zWb0QӒ~B(¾qb7Y zHԔ;J=ap*mB3/?HCxay.upE5Gyp{Y)(oxmZev/a6=ؘbH茁,{ږ\a?+RM1"!$]GDtt(B	' P,y`i؎//PvSY}Ef4&UJTEax_E'a
[I,vy"} 6(;	
7[e?P-^HvhGUR:F#܈
rfGlz-H뼐|$IgbWS/=Z +T-z~%z[.;<D3ov(Z蛂VI4GrQbVn	49H7'?)q J,ht>L o0HҥC@.(R6A>9 EE``Vbd9M$
OOFv!xT`יƯ1 z6[7F
Š@.Z0ɠ=x)6cTaccw}Ԛ/" "FU*b3ǌV3F$3a=RXm2쁻D
EiT/},b7JÕ N^]m3{t2H23h 77L3KNjj)JFOnc]ԔGy[O| V95֑|g{->+>RjxnR6#/˼VKL*'h+	[P`I,PQ}e,+ZkEދЍ.aZ6X{Xoׂ|v&3hu&8'PDV
ϵS,2)(T@+aesPLbUP Ef*1,`S
Fꖭue||㕻jtLK Vã72
g2,M\QB]=($#%BfXI!/(+	kdõT2cuGfI]z~?s.wϠRv'\<ԱF$|>9KpbLrh5w4ouqh?6N"4ԇE|lF3 Z+3JJk<H%'H)^8(W К<ޛB{dIzZhB(z Pбv9ނOوÅ;ʼXyDgx$78<Îf`@eJ<]a
TccF|KVEB<; 9B')s[-C]k		k
GYM
'+ɉMlڐq?
E|x<IuXz'
a%MJ
СL<OG,BOv^PkL|[ z2"AޥZ03
ڸڏ,k%tw(xOtN΋p+"{)T:PNoce9ڱ|A
f<)
4wXcLLg"W-]]=E<)˯qL;Ql;:ђ+$kCS,3`
x*N] dClز**|ٔ)kHerGH.FZ.l9='fQF.~I a0غ1K1Bv	HY4
[#Wic?>(?EiP0};^RpAYaB,e2z(:C%zrqPr	<~gGnZͨرd SЧ{gg^uo)&6M֢s	[V*d@2=QiNdÎqyYIDӛHbdS7yx`3bJ2]ܳXy;o˄nuq6DPU PSyyL`B`vaX
G vcU05Mpb˗P{ō(K).d-Ü2!kIy[6EjO;>yOZ$
AeU84na{JXfD\sِt(JO]SP.Vi'3z@񜪡Z
U8(ЖfڕɳPҳǄ$Ȉ*zv5"x1PugaSpVHx
˂j<:< T3P,,6룂`	ZaH{R*	Wz⚿,^
pL	!ׂ^9tc0ޛH|Fi1Źֆ(3j*MA{('R9$ݼ`UuƂI7!!2|O팙8M3GYX8lb_@#P)Vz
s[ȇ3.D,XYzgs+X[oD;ȬD{Ue*3gZ
gvTw2
x.E>pYtc~R>=텍I[	&2kl6)VLDzD!XTlA7%3UP=lFw"7uk.m鶸6e,o|wg^,!7:23<
QrrtH㞣t*!81#be]gU<\	@PdP&rvd7'۹LDh1]!pZDiGC&/&S,ЍhYk|+zM&KdzGqץ?([QFP3NH$:;E H˾/&՜NW'CTK/`rꎻ`Q;{!2cShSۆ-B|./F\L/~/A"
`,+/kC|нzIPY^`qLoSyVIsHXJa\fMsس?ap!J{5x8/3TFr@w>`'QOf۪8zAFui67]cFHJw+	BI99zAPА`:6<P" ;/\C<GۖfkP1f#Q~,ɰS'\[+$IX92	ֆ
Oĕfgˉy %rg/qއ]sh{#aŲfԢ%7aў6sF6bE8֑	_g_I;sٻѹM2@)FHAtVx
'dw`Sdǻ|9_bV"oK6(!dqkN rUoE`gElҧ$6KTbW
\?8ްj.Q
szt͡ŁlU߬|Il" V7X#܊l2a-,$5,L3AB
``|H+#&(Mx̰=zKwVD.nR<x#zţ@jo+b~TQi+d%`~vuS"~kb&A;eZj<;M',(҈*~0(!6kQWr
&Tra "#*29%fi3u527Fa.\9)>#Yw-2ACt[ar5NW>ofbNJTtWZ=gY026Uұ!zCr&Gdہ@'Dqe>,(ؔJCnȶ&($xA@@c/];C)ӼcWl3$s>ϵg"
ݔw/ܿ#BuL	!
-f72(Jum8LQݖfhR:sbЩнtIC,b\KxT!L
d&S)n#uf)D%c),\2ЈBM/q9h~C(bDLՁk*}%Umib/8c%ы?lDrkpjւ:1Or@OOO%GW`0fy_&:#hU׀q`%(kf(Z6}6HcJJoЉb#GcT-ƥ8{
A8B}(~<g[?A@ۅyo
in+Փ@QVH)Zǆ|o5اdcpB%ڞ<_ Kۭ# }5 X⍤9OmX(Ho4:>z9[)r
 'hGKҭU;Xvd*
ɐCٜV^	&3RT
L=xmCDscq\jYc%}X1aqQG]y<AFfSvdz6qF*NhE#3sx.F"ݛnA'TN!/)JoPbkP 4t"WN[jzMTXL&Sސq$Pz!
߹P7N0R{E/uB#e/.	@NVY=>0S)J/tcp-Y1XMW9(Imn"z(i\۞[r$TFwdEEPFjfjF.V'0_dIvX-ڜkIL
pZ7A&$e =2v!;[Ġ*SO\8a╷z3^D>
)/B
Ai`:ջ ۑiR|dů)d4Nw12H`LN;)ڂ}f EܪM| EQP66Ň;C,,ɩIZ-POx848Ր8tM,b59K𦃌þHKe$cшj *{"үC]JtrA8$hnBןi-=soq)irƗ%"dN8T
OMTp 8)!*4%m=s6C\T0*0u)O0;KmW<GGm4G&ZC̚p;Lh!ØrtSvP	[4VqXf#{grmq҃o<yֹh=TޢoL:h><1[ԮSRyғVZ|όiG-"A@˫uk1@-269(=;^]&S~Fc
h"!^9e.E5j"3~;\O1p{[hZ.;R03UǁiUI(6	(icv@eKN?p+vSH/hɬiФ<X?&%Ϟq)|d99ZU\b^+RUrDB=B,\ۖf#5Y]Iv\:6ݒHZVB|x@\I6	P3[MI^y2^_UHSZ-V:XI2@7j "mrLDEo%T_./-jD!k[PB&~`asOLˑs◜#~-uz6!rz1<a`h<'iDt!-(tYUxJ0gO<D !V2O&-PK yM §>^74Fޛ_0/!%:7˾W1F5eZfeU3W[-Ǧ߼=0:݈7*wBMK?`plގ)Q6sڳ$nۤCJ+2_;9@:d.}kT.YB0{n_U_h"ꅋPSk|MNj
xCΖ7$n`trE7^ҍ0cPƍoG`!^nZq(EK_#D}W])!<X#~0̂x+vsB7<q
8,bnچ"{{g:W;pqbʄ
vX!FbpT8:"R|z-ˎL0%W_変Xbud]HUOO1	pOoeim4.
	tsV16s/;0w?!UEZ?1:>+4o}lA',X<wl#e5<&#Xf#yU	!Rs'Kg*d12;,`x`e`p]2M
`![x7,'N	Xz3Cpfu:K:EMr%p@5`
g棜BtQ0"/|37j( ݭDC>hwc2@厛l,Fdڞ#w>SWz_m2K
o6Q4<aR&hdУ"ϷnR'RJiEBl-X,3.?vNUӏ1v0&M5!nB~<&%Zh꙳IXg	I};ȤrplDSw0}$xtc;
"DZhk<5CIPLijWebYDu?X8ޗð.wc7M*Sl{A]4.V@?Ꮜ][%(TAԾ [-/%s
7O$Y(6>CL
)pN*"#
{
rC7рNʪ/
8N)%nPo;r0{${*яii:Wr<uT:U'<{lp*Dn#,7;鯦yqr猬<|kY2BW?k"^TvDf?)F VEj}i
FHq2Cm?&~sJ xpwS
>WA1QlB>Zlzy3Zڲ|"dS֖ހv5]УS,?s}2Qx>rC)?Y©w xmT= K#KrŅL?(PgC97f_$pRХόF7U({Xf3kАdD#om
@i
K_څ
'eEx4@Ȱ胝P |-w$jX(;ݫHM;AʐЍCT6Ն}xpOTD?* ë Jr@Vj},"`\0-`e>5fa Β`J-t֡,Q$*2A/5XE'2hj=fHՐ[:dE
/DbDo¤=TN6/tKq8a)@QSq'B6ZzҪb{dz\ݔJYI+XG৥uNhឍ|l\?jO\I7Q(
zYv?+Wcr$ɑ$z%'O"hg2#H]DPtubDf+_+Syᑻ ~`-V(NᦩPK<J0Kd|
zM|2`.)xXTgb8moJ\clvsEfWXD)ʭ"mUy_҇31/tdI 8ӞLZFzLwPӓ8Y
G{f'< GTnK=zr!*9(Px*쥓R龽V<B˛QDO`C}YX
iȐ(`BA*hX"v޵#8:#=x&d?؃:%n_`L7ռ:3T2\2 ýsa5Ad?2plrA*^eZ$M'KХ(d2Jw"vC9p0.UpuhEF@:_|5NբғiC1٘Z}L
fTظ__Wo&Z;R0;-R;͈x	R)*eܶi\taZgPs%Q+xE줰܏1]8<yd]|eIa)DuFSdHuA&eZc\ҫ/b^+{26.|<Muڠ\BfD(k 3d\?f *{LG݆~JuMf ~k(*)gaZm()P]"	rV/߅.9ܳw·/˖̿,i#فIːN75VsQ2=H\N^!>wZ&M*@͡|R:F{rH<ufi!sAMh1J#dRU^妖zݺS"ءxG

!*#/R'@R[rIh#(,TQpFړe4@QM\BlbeUlr;b3$+MW=T^>f ,;Tԣг~^L9yE&pT0H_A:Cw;]r ftCTCVP7y?DIUFDWc90رd{P0WID(I*	
YZޫ
|y83@h&.R} 
{c7,{5][&nF7wLړ7wi<fYPAcVk:P 
ȭ+E26ms-p0ޟ҅wXO#lFeAl*TRq=*[/N
jc\d%)/0,Szx+f&?XdV&χ42bⱰKd:
 	8nU7JI4oyś?:e_(Hj,
i=l6gYwz%jMkLU&Ux&Eib!V:&]l=Q!9kK}Ǧ\]9Dh.o¤tH
+
objehJk:uYAu$x Gq0وރ#P)nAPtܸW@WЮxZN,/VRv-"iU:qk9[5B% Gj3),FZ+4ZaY
ęb~0`DΖEE}`rd2ՃdQasM`}y8nsqLtwej
zFR	9#Sy[7f|MQ|#7";
nSj|#+ΜY䓆+j=]-=WD(Ƽ
6t-##},ߧ<lH3{8DvM"ItPQUdoHMޑ1}7e`&9GXb(*5/D2m;\x@!ǥЉbnV=uȎT={* .1-eƷ>Nu*{[$"]&gu|\9{+^((DsRj
trYy8E`U0:i-6rɵ5^KAPvD_1[P)jޅ%*N.CH[9UuoA&WkJ%Jt QٞW3[^e
=AKzjq`tv 0Y_bboX6\¢Lp[SP+`=#dɍwⶹ>Zc7,If߯2
!I}b@@7Yaڀ|NW@l,V]#A9JOEHWBo5R ;o\[K2PӡOi
fFb1HsZTSUEe#P։ ,8'jD1@ Ae#IB.p{9O!}zFj7 8BEC6=@1'f<ȩd v&dI]MW;{4p/\a'&9=,
)bw4Rad	Xʩ7R*eIFTl8Za~ Bt6u݅L&_r5R\̰hFD;ًj^[{yr㤻Y|
,)ϧW4fh'"Ϥ(*~Em	meO,fQ6%"7[@/XW>k2hj2(ج
g{enH=
N)\a{;Yd=qmK@ȁu4SKt*
bS<GgZJ8W;Z=ʓ~2G,8
C6QUn0KVԆ\LT1Jdfy@7{~)3IU8(i#q*F>,w@
r*< =U̿<S``ͭyltKζ@3ôF4
gDi_j]5Ei8!ӿDAPYvr߬w^
Pg˰hSg8?;4g~hղ
Wa@(dO
!8>T'H/h|n`],i99f-&m2=	m[/3&bc(Vo<%CBHl4l݇yP^8:̪J>lD8<T'[d0hTJ9#JYAVU.`
݁t
`C$/PL}'-pr$!ZǱ85
Y
z
[xԿm~.G1\>=#/(I/;VVZu@ZqO2&a+OO}, 4z e568
^)r8k&&_<l$qT<BV]R4۰Ch*OGe)|& ךf/5|UjU8"Ttq>\
 qFVZˋ.e
Yv"Lcf-q5<{$O([C@6L|@$v"3܉Zi,/uf 6c Owy0T1נ|ۛ:^tzO3\q*у2[`t<G8ēO @+5nА/,:s	43ͩSӖB:UMZ){6kty
P\	CAd[%/F!(Rz#6s ƍ̣a
ӘwŭY>!FyUD葇ex(T+Σ*0Ym;"ȹF(}JQ
`1=*Pw1|s)	<`L9mCoqagYB̸Rcmh&'ղoGJ\~ȫX6̟Sweb}IQʛwTV/vT.	MN|Ax<d~W?[{uNW8Tx#2	s83ۄ'NG؊źFƁi'{z#e+X޼H{mɩz7|b8?Ovїׇ3 ݋%;6g -Ƞ- T.6R/uB1VpX</o
<CDɔ:D%v`gi)@/;@#K|wKǈ^g OOre5	̚j/f44_Ǝ>c+7^7ǎz='Gef50i'TRMbSЫwE
+Lm?B"&N@rB.:;r9>fd:NEq jauML1Cn\U	[mQS)ӡ)]4ZeπHmv:zi=z0Z;iCDa 9ٷ^L@(!y,I!֡KKLԅo y%Ycfٵ2m#77˻_q[&B v{<H

z^Pz-s5<3n!y-AfZx4> >{a3Jߞbe8CC0c!kԫ:c!2S<Y^#d_o@t̓MNUiFa'7PHT"+t Z5S5sV̕scuU$9
} l*3)6BlqnN$8I$xcFgnq.+!ƎTy
]׆Q`6Q?O14ub`5Dfx 
B*P\KNZo`i7.`u:p'$e3+Jb~|{plF̛:IKl+AA'UaEҠ0H5GiѴNf.XpmX
n`͉[E^5
),/'}Ã	շw
ZP8c봜"ɒaeA5seنVd
v{",C5E
pfy-RٱQMtظ%'
CC1v1Q dN¾x),<sď`p;OK5{¿9 p PN;ٲeI= v~o8Ӷ5bsaȊ
Q$WdY7$y~ĸPx*oC%$8Ũ!>cj;Dbt>n7j3}q@K(_# (NV\|bENDޓg[қA*>(Gq6LV`F|;'g808;scgUG3d9;E[&c
!sВ#VREF*h?$#(U=oJ3qḓYG&I4iO԰%Ymc{83X 8
Gjj˴+m+blc4B5(X'&N1p|"iVdPCv62,<k9YdHΗ*\>xKSp^_`#n)>BV|/wG1K)<EE1chHL,BS,::;NMgd)_sS1'$hT`rEM̔"/ҹ+isp]eSFW(-U"@g3ņe!`X>!X^1S IF/O)Ǎ6Pmbr [Er
.,S.i3AN=~J#'ү$
Ŧn5δ/[xSQ7
vn꾄/)G4BBOX:<3E|:bթe9:.;Re:7廝TIa9DUdB}ڱi7 o]`hv
LOgCϾͰ3цN[da'W$:2@P{ Xт7MANh?0%_ΖUӻ.p3*s-nUm]C`*I&҇yc+ƥ=5U"/=RLxaȿ)IןBSٙWxCqrGvyZa{;fn،QY#E9m8lt[ukoA _V[nKI /MYBٴ4[']2eֻe۷~Do4XrPad8װF5`W~gGbcM:Ȋ9&;=r끂@\]mGuE>AY%G5oP<(Ez6D.E~G!c`Q~ͭfw?RU#8yb(:eekگoOh	*Jj"0#:
xgV;UA:_&,
MQfxHYB@#HһrGz{0ħFx34%/'2L?d1V-O#-R3G:B-]Bz6!w)	M%G`4cxo#I1)RfcFtJ8Dh
Q<;/1z>ǈ;&)+As6w&{Tv)UUA!fnPCWM
b
𛇌Ka*vAW&Ĉr`D8`$wG%nE¶r; -~ʠ[
{XR%4!n&q<ΰ|BPPCNL΋OYKЋ˴"z`;*Tkek)rmqxnMdjJQ\B6EȔO6A4b>*?{5t	{NpH5($<,Hî#qyي7VhL23"	LfMbT<l#%iG22%gN@e߁O{|aP5ܦN`&־¸y$glx`[<JDq}yGj%qF߹,^<,ȍ$gC@R-Gߛm]Q	En!,)!&"JcZo;ċƩy"ﻀs# 	s4YS'νj0Q-u[fYV-ê {1~52Y}]:AK#&+w
DVeEG$Y[NS*52݈*Qexo8"-7_`/2$_@;I_9SOer(NK Kdi/n6{URFx;G;x]BW^l{"NۏUԳ ySʎ~U;UggQunA酀b.=dy1uam]4<wɧ|+8I8F^	WA/I_эd2lE&iPRpVG{*X #֭=g2RæF$E&0diEl7GVU[E& G @9O)T:΀4=яߎe*DF>weD/G[E{3s
!c@iPL\BI+O#l絨*[:L4-וQzLbjKq~8fY'W\.	ro

IޥcR"D~6A-2?i~{A1}vA.jgۛ4f-@@ClCH8B
n<iRɻx>38$ $Nt7A+Y4-yEN"y_[6JT
oG3u&dGfZ)14K"-bFqeD^fjP*Pj<:
|aU|'L}3MXK7~/mJ@;P~80`@iV**K9r}axNI͛!gVP%C`if YmN]-U.
Yw+ MfԝG;LLZ6;pehf̎pe4r3ʔ4+6[Hf:o 7Pz^a݆iSWs$<2oڮ(㡨&#ݬ#n߆q;t4Y$݄۳55@[nZIX	YA PCDon36&֥Wxܤ9zK Y@.ALOS~s98H+w/i%7-*AZ9|>H#v|2j$i\ޕD< 샲&+*nd/FSAcJC4ѓFwm{eR]84<gHQyVjYyٵE
O-,Kwo&
}A٨N쓑%Ee0&/Äi*p+/vLPĂx zN(sԌVaklqQ{đlxE$x
I2Kd>fAJ^q,4XȐ6b@/^xpfʞXm`F%3,BqQ{co-XiK.0EJ'|z3=
&F2"B<6aZheS(ϔd0W/\|NnsW˿h^Ydd7`TAdƯ=49?|IBQ$ʂ)32Rk`wagQ~4<NEZkSzfd
p\B,}K(tyWx#),*(STX6KI-	ק*#QvyLom\|PDYX6=s=ZؼefM0>ɉGJԞ
,&\Qq ltk+\peb 6gi/'ZFlvyF쉯ZCA
n-go~oi"\t/Ȯ`J<dBo˻2PwxJɵd\m?gU)D'14dLqOz>6jEXnOMLxU}YI,ԑ._]PiAFB}`z&A%aA90)#ayI7̃9ڮ9{6E6ή,zUzͱA~Fs=;.üz-  ǜvmlrs=ڱ7EtD) #xo+Dڡh
PV[LnKHe'EP^9N[%G /-s0w'B<O$\qXHHy,1Rڷu̳e.Vd֯D;x3w@/vb<,\dODB\&N9<ҥ*VVlF=m4Fx#ƦݍHb+gxa7FZ
VQ7*> egSN
#YzF8,RMXOFy3+75]*x$w0/.]SBJ}cKySA.NQ}k@c(!/vFη,[uKgTů6Y"#7T~if]QAԊY`hϛTqؼI@W4QE2hv/\n$=u|s(4~ 3	:su]#'	+6D֔Wfb~ӕݰp$MuǻY}Vޯ VśմMxYw(`LP0y"AFH!]ikЋd=!chbۀuڛۄ"h'..2iR_d%
y%67Ci<GVS;cd+yu,ө#i9(vggL	b׹͌zaE}/(2a[FЊ+h(5ZA]U)t"SD>va\kpl'jQ5uxO=
J@Kcٳ^.#
qYH݂iMѦK)UP'LCMAy
J%3@q+E\-hLOB;p2,,#9v
Bk)GRg@ȟ[0s`uۢ\v*!ߙVAWiA9'`|L[|7Z \|jtjEɹExUywlPhD8He*ɳ,jXN޴pX
:U-$5MՉG6dWOѷo<NC/+EUex[3gWx2؜01psV'vA+A  _ɪt
"
}"
{vR$O؀1aZ3c3{:ߤsvh^yWdZLVK\b"3/=3sK hqWb.[F/R3L	/7~HDϞY-7ڶٍUDQ,9,	C˸gU2
ȎmcwbAWy7*7(mC&]A6
ZT(hWR5X!K,,|5
8LJW#OϜ8Ar^=rwn=X#JZ`V<X?F.=<CQ,DD^yBeQD}*-.<H5bOvek+ReX+)aDH@[F"tpK4b)79XdD0%DXT;imz7͢7P]\CdPǀwah*+/cu"7_Ԕ]73V兽RvW#TڅpiqsQ<NbH2h
|lCnfq~#\&O.^1fv.-~zuƌWl.@IUpۼn2Z:â&DqH#IMH'm/'ѥ/3rQ<=.32_l胈xsvC&ze_s(۞adݧQ0J_$/9sa.X%
كF\dآlK\ΐKU%E(=&tYGDY>k6%Aa)d	XFb٬0ewT!;٠!a0.o٘VB:149Q&ޢ[Eyӈ
.LtenY^@3'"OWI,ʗt	5XD&ia_tL:
us3PY&M`i {"b;)?ޖSQ@
*Dq5o|Mw7uœ)25X9KV|(,KyA4Fq
hTu7j&cKV=Zbi!KEB!vVg9ti:~Zk.]&Rrl=^LtgLf]y<45X"rghii_Ixl&7ve:cg/i	4iiJHshAig=sp:=xx4ȳxN%y.o=WѷH-m]L}7yH*(t9;=+=٬D&KI)@;=rV51e|BKx4~}J7tV(؄KkQ!-e6
ٔ^vx^r]5^߲ULY?]g\	ڏld	(H3#b="1	Sx6=*h&@D,)V{/)-vP@;f-@	e8=ynef|7;KI`dHݩ|O= l)[:rs
Ey8^G},M2/K]wU?A2QJCuĺCU"XUk h5G`![&QUrWTSⱠN%2c.$k| w'gYQ;FHA'^$N,Pzc&i+(	؜o=NQ,H) MSʶC8x)"ODԚ8F+xd]rk#3l%<:Bo˾`(H̖C!sq#R&ޖgϳY΂`
0{'Dl8S(]]3썐ڨij n,1vX\%a0v\F}⩉.1Ρ*+NC'9C.Öպ,pʁ;Ot}]dN8&&Cިf(1w7_,,El1Q\7@vxV)\6
(r/⠼ 6KhF4Z!Ra_/vٻ|v	y<HdX^Ez:hkҳ
x;2JVSBHP
Mf#`'إ=]bA%\ݶ(eS`ege6|L)`gOf@xIn%k#h즵uzJ@{I}1b䬼L#5y2fAuG7˝bSy 3嬌rEQ ު0]doUJ\&Sa߉Ĺ>B -P~rMcQy`Bd>G8ʉyqJcH|X yK e)a8(M9*cICA86e(o#0g[d}ebvTJzI3<"(<W-\PET^nkv,+l9Ϫ=Qc]9-70r\bL¾IKUt~NRFu0wH	#~,Ke!~5 ^LR!:{N+%@N(T<3-c],+g|37.kԸ`!y6>H$g2b&UPy@5PN^pr0"(!ڽ[U|]?v
 J3MjU}Bweۘp1usX`jW&jB%5EH[Sk!
sLZ8(lW057c.BC: +J_<l1<Aa\IA*ݠ#)|vϭ#s݀r+p,+Lt.TJOp,!NٖszYdJĔq6QVܒ`VJ{ YE1d_68TpI>1Iew>RʠV?kR)h!Fǰ	@!}Tz7PLa$U`TA=,(Mo9.|YH9"0>%-}'>*r5y<0)V8cv6^FMa@KyhT
^~7l>R\ĚE.5HQꡝoḚydW*qm6y78PVEaoԧb' aK|gk$ƅ -|d0ZҢ0^x-A)OtʉXY-+lr2sDiI#ZRo8	YlRCh2׋	AUCPŠ
@'*_نvg*ЍU[G*kgrƯŢŠTGzG(A3vx6/b"_pdةZQe
A˼Fk9z`9EZj%KFӲ$>,Dс*:,'
!
8 ,:'c˶Cs*ꌤ<C%jti̗nʴmF!F#fA{$$ZL7d!j3ۗW:KE
[*mtJgԺ=	d*E&~$>r82bKR&
c}Ou(<2s&	g#B(YƐ'RuҾ&?mҢa8R)iE㯎F.{3w8-IF[5},sp_H9EOgDRHx
}twtxr樬;#ۼ1Ywb6/.{t^rV[`g˅m=>qd;&
~o[RG 5JGI<̡![Fp4xӄpљxCEc6Y,6QZ5RxrPM4t S]GX#bM?4Xu9~n1aȐ5Řor۫,9'?FpaOGe(lC@=y(27kSan[)f`\sen֜K\4k Pte(Q6!)K'\{(H?Y>
kX"
(`LyXA̎ir+Y.!aѬpc)VT\6Bb uf7	UVG0f<yp.d]K">3C$3IR:
	 a,:B	:v
Lq`m.Esh+G^-hJ	CQOq('fϋ
#W;f;֠n{I$
j'5WW'y
Y.:Y9Aթ.<0,/~Ma0Kh069lq5h[sS$T.M'ޢKP_&7
Tܞ:.E)bT5"#!;Ǿ%L N[PL܂BxEMi A[+k(ȀU¦prj0yPcm>9ԡ٧Sf\!'\ XsYHVFEvm_. GS(<85=%;hi3A;*;;Ų1y	_+0 X1TipIeLR>+aVZp-g3j]Y	"[9Qy;qGe^s"jhG<Wcq_
čƯ{6f!>p,7"N/z鲘ʹ
$GqGA]\-D'/D>:,a dP3L,0dZ{VIvupPz)U&/f!pҰ2|003>l<HӏmԵLO]J_q\z"ߝߖծI
ti^kU2&y7.9i,/Udb*g2BN@G=&؃nۀzV/£&hBn,qil<<:#l-"hl
@Ag}v>:jp~vND)}JUZY?Obʳf$;)q
!S(Iޔ{Sx])
<lĪ.HG!ГW@Fd6q$?D'49TW "<[V(уHgT@ʷ˖3W;!̇XwQ'
>
fߑ|EN<m0L
}ta;]7SRcٗ/'a&fs;pD{G yhBs.b'U'F'Ql@7֭LWGbwlJJǡGG5`h7wU,	=QVg
&^sD݋gH7QC
dC
>ّdBߤYA&zp/V2PgHgv8ei:"*w`aRyLTN銻0S鸸*hׄR^iz9+{x NXq2KQkϽ-/<4;jGYPOiB S&rs+6)IkNLO٣E6KUJe;;$"N[Q6`n{F&ӀEՈ'{E g|J;h`&<h_x,	zDeDA-a#zǲnycd	;r7M(Νn(
ưLj0$mʡ"[0MFL귈26RƋ=7$؃gߌ߻1Q\|#YRDD'b6j{yiNP5>
7iGo>nSkL]/Z d,9Sx>gO::4ؚu>A*5q\
Sfi=ă^|QӰ4ՏL
nt(WESf!2i%2ӰI(Z°Jp/aW"=GV؈uSKGFnɗa!x3־mSVM54ފV#ƋRPP@_DiB}F, WYjsM!?'4W'X'^ڌR~EDI|P:8ډMPv*E	}wUiVF1=R/&HԱk&d<
/k4_-)dXtdC*GMb0uXWGldj9Ƿub
uQ@e1Y?jg2A<f!QF`fQY3
ٷ'o<l'jGj)QV	5۞0R.y`o?n*~%|urWuaNuUA}Is`98
t1(\ґ*/xs"D;"(^:
Dt[nwIcy
Zgn
XdSpmJiǤvX|
#~K8,+
[6ypـ;mȽpT6m4[D̵xD*nOofU%ItHz55o;ni`KD?lk(wˠaXݤS1osx< 4qU: qԴ҄2.9ݼVyW.zҰߢ{
F Rޟ|v/Hn"NսE~Dp^GLND_ ̈ٌD\U^\fT˕?G,P0Me7ybMHmI"W{UKnZMdxdT)ŕ"RC9
eN7dEN	2d*("mV9 MPK?4>XAs	Cx5A[%8V2C
-3Yt7.x"OhFo^BY;ƾ8p.
¦=夽{8h
rFsqY+g^
3gs@Hރ"7_ʑD[4,KLg2PgGÙLo#͆䐳	mJqMXlQm.:DR!MU$p.{IL3<LȂSnQ@f}bC
J(^=B/э=2	GDrCBFl	IGvu`yZ0 "9Qd|Ia"?+)rQľUqA?9)7!)2'WDc5]LEAb/ w維+e'_PAլ_aJ2"EMn8
{]bc3i`a29>Lfr7zN
vj}SWQ!u*6Fm[Q(e =ȁXy)شHބ"wҗނcws4Lm)MxPt,V
79W
),qbPc+9!<*}^qTT>!<P//(?1nYοqV*)WG ;Qc2481ȫj̿9dTq'݊k/q#z3LFj
xO3i iIM )Ȟ"gwk<$z_^rRϖ};HB\\USD	pZx$+~S<{܂QH1FFD$j$D,3g%|bcoN;ǩM7Fdl22Z+pD3d,ŭq	i{If~xio%0\K>KL
琛kOl_h/ƀ?vؐx
jxMpTcO=2ETc JVf [`Ⰺ&[sئJv҈;X#z۩V-K`b1>'$,C[i^&ksm2xaǉ@`tcΌ`gy%ҢuD9#!q^fM~9Jy J!Q떭~l!F	L蠏1'Qn=iK2GH2{wUTڡi=8
6cq05RI6h4$
_v>
L3.Pu<MqCIh4Z
`NtݜDoܣ>9(OaA|Y[,
K/Ax[#^waVFF̧&r1BdL,:5cʩlhn2k+m%Ay&3ۡ#QYh؜,WbPkc|>ꆢ̮`YB Ƙq+f+;[`+YTnze9(,EUJD>Gђ;:[~׀˶,$	2ӑQd[
{x
3A=(** KMVa
6pA~ 
tپ%ڄN0n[zL4m\7.b!9CݷBi&E&y	k,~.cp\&q5r&Y 9bs'`	WѼH(ҸP!tPul
/FkوyY`&"H#߁l;3Q$C談9 A=T#(T7O
14xd#{Rܤ̲Pa[?B=oLꆌex\4x
QSvv-ɨct<PʳkqU,8]E+Y{|lLy3>ɼmee=W(O"#%t1(TX|G*0iS+g)߉[V7P=kr_SoN9P-<NK./]\1)=W}*Vr|yFKJ:#.R`GVEOK@XFƭ ߖQHS|^RSO+2Zn&j'
åy!*(01`ETNa/P*rTʃ=UY|&?rjvqL~Ŏ`T6YB۰Kݮjq+eɈu+  N6ʉF `⪲{OI@άN8U":qM\@U	
vbӀgkX&[']<aN⢯j[	rdwGhuXx<{BM9!L ^
=$&^L\gVW//ѽ'!תdx'F/Tg8PcG~@Udf%Y{2Rg<@3 _[Mѓx%3]O3v,eגW
p:{=ؚNĢ
zR4Z\1;6pW<9Ԓ\(q4U޻BNp$I,<RI<)̾2MMz	j3d-jX+ 	`	ݹcl"$oz(;["'?H/3u}DJr<5(ѮdԞ3M-7Yfզ5DXWv(i%b?@6GUMn,N{'aC WaWyF|]!Fcl`Or,X%W
En"`BnmZ((ӥ(ͼNz6
*7c%)a&EY,苐ǕZJ
XoX1oR,RzfBւ94;|xd8qy]-O2#ܸk3;%Rc`\~U~!=ɒO"+
G䚨l~M~{Zήh&/!4	N?ò|%xZLfܰ3xLxa {:e0EЖ~3II@r&E/[y*YJdyiEWgkBal̣<T	YTԁISB8#+x h=]Ef8*r~_>k[ؓ~)Ax`,-YxhBP`Bڦf;$EfLQE^B!ӡ3pK~Ocɉh:x
0sfldY^M 2Z#;<$-5S/`BΔ	)/9sT_PFH6H-"Cw͜]`teȌ]T+:+˞pڧolv!Sh<s).gM\D'IyLATdvF 9ƕvF
j7zϰ<ų1r5BFXa:U؁ r>a#lÏ"Zڀ`؍ZfMɱk&b~2Dތr㤱
rC"&NϓH[
X2}߅[dۋDԍեZ<.,aMFl6nLu4GR^%YZġp7w-+{į0k#N+v@nvшl>
/զ'fAА
tk?}`s8?C$sAvΐM393,X2c  ^QӅg@QPXjFQdc͑HdK-$)Qx
oi vSьuvNfd3oƟ94NP]	t/bU~ j4zw0I΢qXx6WfM/.`Vk:F#)+#l hRLYw'xϛ-,I?Tݿ_Vsyv:]GwIYp$%("DBuTe`՜`OVD _FR][!ni+pY$8_辿&B^,Y̙{h0_[`ؒWV^LÂ!(1,1heD3@LDQ{CucqN]!q5l֣2.mLWyx
I󸢩fHNtj[#qI+B݊>ڕ{P޶<
`و$7F]7=O]#O%C;Pdf"DhaRR9phqrZm3@#]jV][/7z"E]s*7F	-,˨-	'_{')tzȆ+qź,
3	/",x DzF$6א9˴mcYqjD BcCG|
aF }b$HgF km @$2":0mђvʨIDq8iqb*usޡsm3ENȞREe>J.PXϙ&:
l2سw0euQ墑lpnTo?+YⓇzf
q,gʃvP=J|N`U8SfMYqXW *HPr&3@(o+]P/gZH(*tc<J{Xans$Y+'`<
N@Mk6A
Te,~q/**EѲf?NUwj^*SbqȾ^prOQhQ@0d^@A1{K!,8b1yf?q=2Y_|'1P6(; U6, =gp'~&š	^J\t4.T=`fIb%$TdyX߻
t k&7l]'TIǕx5\g4Xc>k8
"BȐG(3]_v1ݜ,.vR'l.씐-nDyMbn|8/A"T%c 2ﾍq
%(=*(
s1{:XLc3
FtL O_jSynj"wGV>IV_Ћ6O4
!<Nx.&T&j3dj`JzSOҡo]S>(332C1r[k~\88Çj"\#(hPGr<y{176KX{Rhނݯ,hI
`Vt
?@!%f*գI>OȦplrr~-ݐKӋ\'	-2.xك
))w*QtT~Eʻ?`)QJ˄-1y	sj :U#xGwᾸX>)mQ{=(am|t<e}*Xp+.ˈp<"9qib-XD8`®T``+EkSyL
אKɕL_7#w\胐e+*J/ZKjZy}e@B;(EUJWPUޗh"P$+?Pw{iצoԣXCh*Ŭ<3$Tfs,ô<^hK{Pe7#BBȟ3_wYU
;lwKӞIahA=vuUbA򹂻6h0fͳ|@Sh<s3]9,O 2FNСɔgY.bIIG&JWL*x8^fi;׊%YOC@/'<8Kƫ֎ݐ(V\
`s:`[eU^I|÷z fiTLefa/.5z\ayP&v8^ɷ[x1Lh6a "mzE@FQѷ
Dlh;F8io/lG}2cJu"cۋϏ@-EN$G)ҳ$.Xf3Ad?.\6,̈́ҾU8NKEUU!SJ Edk*<T-V_SbT/Rzy=Eln27)򕲧U3}Pup+`Ț%ac
Sk}<,voUVfE/HܭHF˻48UN+st
&z`3Bb2:r.8:
%ebCt/~/xWVAB!j^n7f;>Ӷla$bZ/{f5@͋Gc[]l{IɊzaVD09]JFоcYL[nA;x%Y#qh	w
Q7^>)aZCh
3c0Y8&6x'0Xfİu뻤,ėg֯^ z0-oPO</%`w'jRp6NS_lw
jeGіUA:҅<
t|cÖa.'X^pc](-wZt:NCΫ!
3.<8F {*.x=}u9
¹h?ɉpsu>(?ڕ4HR2\!FBL0Szi+{WDI,uDZ}3ۑ( +؍*@R2#ocv0&ˬTL@_g.uM.P>. (˱{IR;AԱUw``FصK
v6W~(F|C2Bt!HrUtA2Q""fEDYӘW,~+
D|
0{"AhA/Q̒AװHp]]@,V5QXyաv# U]o]SkR	1YkPH!,@ֵwsU"d-=


6tNAEO=Bd76M#>XSx۳p5\ɋ9hlͤh}('J6'~d9[,ɅB;#h9јLIo6B;B-6jȡXxIY1*ɍE$(}YxxoeTڡkJ7 QwT		4{n3,p4Q /5&	~♙X3majGwn46{5B	ڢnQKXGXqz*/^."Zcȹa-LcKvR,>΋NWp؉Wuv?EmLP
$낖kݐo9|Zm+V\tCA"e	AlYۊZRB1$A\&D/r ׉&Vitz뎁b Y~3.߿X
MQ+mL ;;,PEU
Jԧ]L7t4&<ByD0:QoS΃wasԨcS(,;`qH*\̂{l(e1~+{mSczyPH0 Hz[Lys!bнYjF@
 ;\yJS}i ƿYitΠil܉	CFkmT)"C}Rd= fPp'y,NzC$F;Yى4V5NBė_1(ʖ:	+ג,+sau/HnhDm&\Kvs>gP[NL~Ir<IR_ZXRfh,3AR`o"nJ}&f
(".lBm)}pp=j8Kys\;y+_J%]h#tvW"[ܫ.eA[_&Xª҉Nq12ҙtB/<:MC#w!>)5Z'do~,[)X≮ګqd"H#d0!:>Q6	TxtM2k>h3zZB2o6ʿzd~v-px
i	[*sы.%6<I!UD^TCfe+c3$)ԋ gx=Bxܝ|I3(#x1cGarsW* !W^۔TWy4X&f"M\WK-`&Ťh39t5AAL,mKͲ6
!NseGVlfl%)/ԥP9r'ȋk391</l1ЗMI٬ ƁAWlO3:S3rqI6G8jH(lA	6˄V$RQxQ\LJ# z@vjТꗌKXY/9TR+\"l%T(Fn@9w>g$Dj=zaob&Ӝڮ^]+G fk+JհEd9#I1,JCڙk#%P_fCt-2=<՛pQ)bn
^*iM8R_vؖ5p(TyrOEz9LdIx:Y5;_f#V%3{qN"-gMPj)KYLeN;Xu[-l&bx#*'kιpOlhQ]<cGZ5V*t{Q'$-nĨpYaLnXrx_9D$3D
7)R&*dJ$Y
dHݒXL)ӕGN`{A,<@DL$'hp9.Z.d7C̫3q17:Y3Ptf2ъCTA.<}ੌint	ϯ<<RMfvaMSET"/ p	Cv:l]HpIV:?-犕|qQdV\mf7
J囸6W4,:>NĄ;@tdtt
R	?a=7Y((VI$¿ƙ2[
ۉ*
g0,z4<˴h("Ea)"܌áu`(/Φ̐Bĸ rf2#]\1ʤER?
IV\˨HY\jU)z5%ݳ)hGb+@w̽e
VY?>i7'Tc'QV^B8t"`}ـ(	 F@ uCN7q~k'(Hί7t&u
̅w9rMO׸a36C%B;UTGa3|,9[5p^i7A^/Su4}aџ		aA=)WAvɜp?rTcFNp5F'Z(O7. Ĉ^Y`TpSe:vj*n|GbX+a{+gyJ	7D1I:qC3qV{C(A7=q;6vR/CXXjx_lȠ/]ZK`|Pl8m7oa<'EfVXW̳5lU.BUΦ	_ÇFDv>C/\\Bg#lS3`h];9Q6t\i\$r	hThZ.]Atdܫ9zcOT8!|v0%(6PŇm۫:*W
3Siey?E]tzdFJ{LNd̭Prp)؝pGKj#y@C	i)k\G9HkeՂ!I9O0D(zZ?%, PwX;\K+\z@~r_S\KXU$e\QҭJA4ЦuH3UJLւ-/G'{:My7g)R91m&[a4T}+j"QD(<wBi_9nb=@:8iULn.kvdAc%S5)lziRU̮ >rqP2x{OXkHɧ	RIfUamnΖ"_皟7`OCUis2CW6M;tzQ6xΣi[NE*^tn-BZ0h:1"Ð{oجw6Du#n˛şD])6Q1dgقk
+HB	n%o$ULVj!pV(Ol┙Etfr1k6
rϥ!6eٰ)ʳ
7zI)>P;. E1G\`q<310
qZ1pUJI׎w5@ݗ3!Mg
6
*xؼj5}Dd?~vԃex3K̀t7da`WVI%±d76,ds$%D{3`\Žvh} W-r5_Lf@C׈$yF+1IXfG0Yfo<4aYRFu!4w
㪖xh;E	ZrM\ܦ'l]!b2DlzB/\b8cfwxLnڛS4bҟQ;2
f5wG2lfQAx:DTԤwh-'g}YcN8# 'ʿnp=b ؞ZR*
3,wUpe\Ў'k:a$YLZl\UR"Y!w6`L^JHT=Z/d {9gTt	EgK]/X:,McK0(눱7/#T'`thfQySs'3
q8UXDnYFAŕܞˡ.xuC.0wU/cP.Lna81;Zte1,_l,gq^oB@p^HhŨ#j;wTdu-CȍXgpw -,2?d*ĸ@/QDV\sZ^wM!$[8e'Gb^ 
\+#[
m>y ܫAT{CG׹ ϟzP,8;!pۨG
Mm"`G'Rn^!،cZQ݁8/uԑo
(62{WA!AXLSprdzlȒ]A&lj.]XăQa%`(IQrxN9`Q}ػ<9(ܥH`~yRQh~%(Bq6w}fr ^qQ@Q$4ptJlPlAfrCej!bOdO $UBpɲ>F@y3K[勩2nDhE<mԊLJkA9
@㝢u"S\6PO*InYcD^i+k,zBu.#ۻ+Z%)
jk,B-8b7fgQLKqNl	zV(oxr	RxX&'<dbsW,Y0V^#+-&PRc"~e !wn~0Ju\lp.Hǝ<;t%jmqFēd}lqc*hh2~nΓдHtW2&ɷg&~? .7~ũndvIu.0\OFb&"?&Y[]wlEZhTI<m8Dy<3gTQu4
X	&t \8J[q5Nm V/;68}W6d̩H[d5IxU18J~.&Vo_UbxŨ"g <pMe<7rDkIRh)9L9YvގVvCeR9[,2-|NDs׈TQKd Xna+
Q^K+kl><q
<K.
ׂ)@^M'|aD 	JV"ya#5NʛroE+8j
^ ϋ-h*Dr򤳆po	{͋Bwmooҷ%96ȵX5MGEGFH˰vS=7s7^ƙ [+.&I]b)V U8h:w%|꠨ɐ[d3XZ	bT65yL/bl(" DD-Lރ:"`j;dhfk1y"	
+?AfP9I<:%VęeVwItFȌFz"źmnp,LSR=EpcB/(И}wIy؉"
/y2URh2>ի`M9cY%ݠ4ҕ¯VLJ9o#ɕ򤽪L3jI5?'>W(wOV7+ E=mv/
I!g2#L45\ʛ;E_/*]Oɥl.WIXprێy<y:D
0BFTIINoNw
{P8蹔@DR41;QVwaP9{YDYE5
!q	$:/rSqtFf[<O4!| tT>oosO[4O2		@C<ܛI(iPd5q!Vj׾Bʞ%:8{-/='\])]8J MTB\U'c 3

ٙ-9@4g? ՆTLGӮpiW%-p.+j˜3tꖾ}FϚ㟭CIQ^n`Գv(i;	Ƌ+=ܱwagc
 _IfG6ڧv4[g:$;=C3U3PtxV'2\ ũ{3 qժKX2GL!r!
^?|	d2Px*#{/9/"	+ͪGiK%LΖ6 ƛO톆D.K0(K¦U}iߺ7	`#9{3Ӗw7y~$s,˓M*P)rۭ1LB~"'yIqB :'
>m/ ^\4Y n_TXDXW!o~rp:t	ZHUݠv3107˚XaB3-_͆B3's4T|qPT؃dK;g7o}}kw1|H
i>6	z?[i'e|B&1X6+F܈^NUnaG_f[zZ-yƔhpm]`I0zw^DKD]їB/._iNkѺt(jO"}`6_Ϡ'
5WP.#g~@uUOV-xKɜ
@b#D#37.^}IKВuvI\QMl"$\Qg|X-Qmb>;1Xֺ_Hᵚ,Pwv=,tYY<=WQ,ubOb #?VcF|0tZ-Uqcx1nыTQfno7m7%ZK$2=ցe&9[BޯĽl6?h>ڀqn,ٝ(R	r*̒.5m3(2$$feOߎY+;דsfWX/ 4ZM cpNX-;FV7{Tt9_m4
Y"Ǧ[gZ̊@
|\reo	[.I[½Zt
}~X(DKԐ>3phDiC9067\7,=k2̭%EfuP5S
߮DaL`E sLVzc9k%Ada3@/2p&fb>[p˜̦E2&*&L\"] ZU;3B*=$]r'"_J҃qKV}-1ۦ~xL?i#Wpjw3)N]7+ԑPPwH-[n8r3.*BHd#xOYWRy2ry=f{G+ 5&<'AyU"	L~1Sfk_y@Me hD,ߵ)v8kV)nIvd9/ZMd)XCFʛc᲻U3znge q8STzϤ<D6mT]ֳvr6_{y_"7-o߇Yf6uVį_8IlgI[5suqHz<;g96vLN6̓pT\=X_,#Qxfp 2
-LSsT.!$de-5 #&&=ȳ(!H{ q~"AF1U*Z/<.vo	}Z,6m̵Aj_<4&p,3ڡΔE8pV1t쎠Ĥ(Mvzd1__9s~-3TgclB!O$F: ]LjW5
y X<>B
4l<2~f3'
r$S#;]UtmeZik#GJao}!".GȳvpVT?E(5w*G2=jnGBȰQI|/)uZ676G?6=CyT쇁g^ղzR1}%VQ,%?J]"*_Jh
RKX>E+f1F0),iOۑIڙf|ξhN	Ү]KquO:Ϙ5KH.#yF6yFY
^FLWŊXmD*+T6cʫlbIȚ*WV
e
wɸ'Y~uA&ϯA^\.;SPpkO tu7QLC˗;jʣD>q,)([E~Q- RF!.f#ʱ˘:9(q78cyMMYTuC="z{ԛD+.gD1zt^hRAy%Do:̒3rɀEwCH|Ԓh.sř:	gXS5T;VMؤ[ɐ=ق`}
i*>bf[ G?,R>a536C}8%?˃=5#qU|y\5'=
KqC;Y%GSr0P|֜~oHz&VZp5cp<N+`/{ayh'@S7#38Sj"Ǒ%TnapS'-`L	b!lb#?d$-óhN@6wmCWK.Hewlg
(D!g1~idMR[05r`&B4@ 6?p.>
d$-fpp0
@Y!B&ߙ7nZQ ,'䠁$.ESqNoM<d ~sdm
	47a>l/Rr\evf#mSbqbvvh/ov3c/bߚ
a֙F34E>1mCe` ՝f^H)|	|ks4=K'paJ/ /#ǲ42mޢZg	Ex}F:ʭB.ul!&ۜÉH{>(}謆/UjtAfo߅6p9݄H0q(2B
W&CTmфrkMN;\"#RKg
&US2K,N])R*cA=Cxa7$Ius8Ãv{$JgsQvu%5~fD`Q\nφ3"
r&l#P)3UvXaDh=.!\2`mG)dz}ZA	<jL J$a -ye\o0Xx*q4X^fY2LvzM4(0ReX:Ʉg}cdKطQ1&Ґw6z&KS3ak.z	G&X͉.-X\!zjt6,8@bK%pI
8[xW`o^6H#Gxe%ck'^6^0 7T%csOM洯E5ZZGa^Y _4O {(
}vzt1g,smαJ0yG4_*`_^67~
Qy\)Dd=*49@tX*]T"ȏ7]G:&w<ݖ7
W,5>|\m2O .Z$E+vg)v;d]Yk
	MK&ʧImHB!DA ^s;m_&AdNQJ2fBm:?+J^C,|%MDk{q{sOۊpZc;eN*{Kg=q0
eY`
`gۚ=w'4,(6XF(\sDx#EO]8:)O1j/b~'J eWHJ)|<f&If s%"	t S؅K$,VzS,Aq~8ֽ@lm6chl"Ùν0=@A];!dGX+R]L*a=*\شK }hkE0N:^S.
D5:v#Hzzur
'53$_@ÙXT;ʙG2
V⩯'jjڥdwy!78"Ѻx%nj-)Kg̋N5,*d.NˆP`d`UXdC҆WZQ+B,P0QOB<qiF"WbHh%'`۹Fc?Q<JWj\1~w@
:t'΍LE?@Ƙd
4&:K *h;@K4]0lBT. (sB &3{q>4/PO*	
,AFB}r#R*mc̻3d<X64û8L2J(V8 K-QD
\A"^Qx\0׳ꙀiaӣuY6ĴP;dNOfb,g\нτ1۞A𠼃*iץ :1Qw\S,7[TNGY
;d$y,3>\Aj3Ʉ|&%NQ E(U 0Gя{,7{I 2U`#!<Z:3.ˎ~l`m2f蹕"s"UM1d[x.&#T,yVl/=4|'9CwRv(~,-rҺc=JbbF~rmâA<HBtJvx*sC+jSF!) /ାזJU76fH`qi|QgMVQ/L6ު*D]~4*H=紨sћ7m:Sf4f]):$G\MYL=w- |,D<Pm&#;`)l
+z@v"-ƑJfa8%@'B#".*?DD&2o#nC83FvEbe&GOˤa4J1)Q*nTHਉy &.5=NEcIzrmCBx&5S6F ˩
Zx:V\8ꆟv[EF[#jd(u^	e8"'0kB7,d{Lz,ڎ=F5f mr PxoGMd8xb1z9>pܢ/&N[N?x$&{Kk5a~rex87KZ}Xn6[e}4^ئeNM%&R-	:\D_8U;&NRTlk/#L%:Ƞ|zƂ$([ b9KY?cCԙ-xZŀu<(N<]2Z,'z>q<n"\D>4OF{E~VbbbEbY詽b.ZŦRVX(d-Vqh_l(ÓlzgwB y'sjc*wq9c]1.X֋Do !,KTѬ|j<2K䁨0as6j~DՎ'|Af;dugA+Tai3O>6t+zUxtD.{@Ȣ-"{nC'"re?2 
ٍCX"vs
lp
_(m7YgAIʴ-Jc3!LmL-4gWB,IAlw(q#hj"1lIYKxp"f2U^cĄy
#V5Oz ّ%_X='3
F%ݼ^OH&!%Pi,4:{Auqp.~lUJ̛s,tqxFZRm|̡՘By8&rEeY3he>59b0~C:'AJt[py`NrfY;t66*A9#\oE
Hw擎{tm}jM7W]ߠw_$G8P[d%F4d?E=p%* AtYq
꺤 2Cua޻݄?Ы6G1(Pmi`u:	;ç~+?.YǛxpJ;F;4.
*#2Δutc\$yEg"I&96*C
R:*mSn1DmhWD03ZGYqiX^JP8}o
db[4,IBF7htP9gܕEUd!QBb:w<o1-R=>\!c
#},	ﶛkͬEe
Gphn&">TLE$Ag9fK`!0;?SĖyCיL2!dӒ1e4ʈcEi =Z3x35BL() HH2M	&5:x$eTh-U}ht	*OwԄY׌.XVoդh-|I`q%Y\V^]UEB!nQNU^dh̠L0wwS>V":0["0`<mwEOP?(0ʪ̥&s{p8fSV+K֮+14nfe3_\CĹ$Nk>dmHMj_fܖRf87m~ 0:pC8B諂I吕Ϛ@
/ƥ3:5q SB(INoV<h'wh)]@mwqp@f
2>rbiIdp mY
/ݚ>D PSlㄏPb
yJcS@ ?cf**L8CzX2\`8<Ini	kH,7%dGs1Gu93xZ	aWC{H	&D\HHF_͋wA7)xN32ےT*خ$"1^>w`ܪ6+<C8rOF9D
TҢL"܅X)#{b$2c$`2<X$:t-Ewc%{LZd/IT`hYWDnbuWn4ۀ-KbqC$ӎo3|\v\,p4ceakՔAcf~w
4iBj<"q%XV3x.J{*S8a	N{ښ͔Q_*09u1Wkl]s=o@aTBe@cQ(l[#\Зg&!J_6PMp[*diIp573	Ŝp-0wSdXg[
%&Qq]|SOy՚3gC\!!+/K
V6Я=Ȱ&*Oڑ,
FqZ=V(d#;W߬IYc'iгoA1i9U"W״aB`c1U~uXkcP~J(קאWYD7|*앲KX1s6'f(3KVhrX=_0	q<v}bWYj͋0qkg!Hr}Lu qHɶ cj/4,)sHD
V4Ђ,2lZ,Z3ʱb<`a	 b̻0=,k`OQZvRkh0.E9ymܴN## c!n2v	)ˬEFNHmlHsp	ی-,<<4-`oe&!,P)`#C@.JHZؚ6$$S6cm<RfD޳&Thr,H+:/Fv*f\=c0s4qP&de%yvە\萝xT^ڳȳp?DɇV8u܈
ۊD!G%.TCyqw<g&/MeY[h8p
@?ψu_ڔ65RcZds&3h4>H	?!AAhG䶺niGp5h4
*x0_`df@[i0\2Ff)fBì^$A+Ho`
nХX@`|o!plaY
*#%l%D0u!H/	9Lac<!W@o̟#@[T;F\hiBfgtD]qRD;}Si83 <FO)b{(sdgMufqd0#-nv7G9 Qmky,R0JjN+Jv1CG0}@+nt|OA_BXRn<r^6h;lX
'yƍk2Ղ]`)^{"aN#{RA{[&}ٌ7RtyO{kU2uH&ךh_?ꄬQv6U2h+FB6YG^SȣXcT<ɟd>:"ZDK.6
6,-r4P:z7	.
s[]6 Pe2O_5ԐsyP/d%JX,)`rFv!ŀXc>j0-cݢ`^늖^ZqE[̺UA%Ҏo0[JN#+CI86_Gb,@P>/EZĖ뤬
-n0cƻ@[Epg&13S1QRKBNsb*|MA~_>"'Z$VRq+7q{6f*/VG_WD٣I{U1c@?[uAr.i$xupeym
HV9Ri=e%)X44AGzLpI2GLGq*2Ņ8ŽXmFk.Ü+~WaV8'?\ytZ
ZyfU@}ibZ'֒Ee9H/e, 'ٰ'o淛)ȍ&<y_x	fvVG@%pEW.F~O=ѕ'"ED<
B^tac$5[R(dn`BWrDjܙ`|4AFuyD*`y] mzfMG3 >Y)eOVNl&jGeJS'tV5]>/=t6pDxBt7|EᐜҰL%Y{Ar{0ʭᇑ=;wѰ
Vz%d1q.8*gWtSkx 
	kz~`7@V0
#O#
W@ϛ;x;Js"4f1E`8,_/ѶGgAEƗ{@w	JfB1KaQpS0B4J 9{Sp"#)k 5H7Qxv'Ϥ44þ6MJdo`I|tXG[M:=[Q5]5=m`l+!Q7>cɉ9? Rh5K0a<	]<4F|0)?A???I#I9lv~P@B25\"S+!ԃ|?f=	dznܵoӰYA j샞(' vZ;jRO1~zzajޞeL;eY9	rdI
ˋc1fuQziX^\Jc
&C"9S^PAE/r;,F.{Tod[$$~>,f0*.F#zP|25De7V.al+~^j׽ZJCRHEaQ'JSal0wdC%rҳ4\B@XF)*]QbC+6Y((,eBSi^+nFi1`{Zm;C#6w&{J\2Bms.
Q߃>(Uqkl_>J (OStKީHXQ;Dxep6W܂RTݙ@0M{LTGS1?[#{G{.\=6p-) ujEBB]VI)zT6x tTz)tL˄FB9J8]=Ksed?zUӋ@=.0>ݐ[vKZ nbr $N4C/GƁ+4!Vy|^7qaE	K2[&%e2&m%Мu*FEr!ڬ/W8Q	@V
4Jni撣}b}h(DO (C{.
e:pū'@R%<]K=@p0	FJPxr^YC2O_L<xXP%N'ZK/j	zaѤHĸ)`b'-^f7	CfQXb#vӌě8tDaN^2
*B'~Ί<K2=eL.̼>+CeP+kϋpH5\J.,=}Rhĝ	3eZGͅbý3{r;^Gq4Hc>;os6|86lPt#.ˮ&"@ˬB1)Q>	$>d
0Ƕ?>,fD.\&快ŋBíK"q2)/W#@4zAwSI"1]
ow}_)͉*cǟj(<uuRf*ms$9x\W"7	EORd.?&6<95oT AnMXf:ʄ l<q2^7E;7*ȴGȯUq^o
C"KG-6.T[ArK>N6cz~`U`c?<[Fz
gEzMfL݈fp
?a7q').xמ;6f'ש
f9i{ENE250cXKy\SxN	IȻ=gׂ#唔	Xi}tW^7XG V7ynX׍D+Z]Q9PCOt&c 	#ݣ\L+E)zb@=YT
s4sm=?.ߩ#?;I޹
-1cRwDza
ғЕ/CX_+S9M{Ag9h@<'f6xjP6ЂSJ839Ӧ&:nzp,F-$_Enw2'lvm$
6LX"?|
6C;AVKT14-EUʀ-qxfATշIx?܆c٣.C; ɽPb+u(hXq⫭ևɧ,e<.Gu[*e&XOf=\XݴxyE7lmr7uy§d:WR:q-"'cV'>sk0\V5\Ơ
̾6'e}BhXninW˪IaQvd%Ei~d|N
B&m@=ЂmIWʒt}2yvR
^0:$Kŉ0an(Κb&`M
~z2/l(carVsQMZ݁/M<x#ƠM,6XE4P((
h\F:aLT
ˢѼk=|$B]'ff֨,*~-ntҍ%ɒ(©ɋ|y/h'`	<i*ڪ^pGљ4ˑfr8.@%q!Zm6JTH:* -aA5W˘
HΠ(bg-\`r6'2!@XH"MoHx?[y|c7_tљ9tZlB`'E31(=Ґfgr{3cF&*z-``8HDO6pR)hsZE1 D3t+۴S7>:^ึ`w$
:2
52a (ޢS8u\FaupBnq'`Ц2HV=vC@  	ID.\D̢Da3}铸u U^5tܛV!tCo*K
iElS=K'+r)`. ZxL`,5qS\bN`8P0{ ׏-"٧V@tY:9GK3a2{`q2`-ZĚEW0oz3LkB.hD$_^9?>Χ*b*c&D=$FRa	Ӆwd""J>PCLkbƌ63D}9TI2j6|zaʶ 	ƏI2^,z:+@(0SdT4H2O29$gU\m0c;$Kycs^Yl'&CrBHᰗH!23oBռuL&Q{«!	]e:ѽLtW-]cfL<˻xhC0T&R;N<KY:I"sav,;%D=O2J
yZ<A"S6R"@A0ˊ6af
A05TxŹ0h^@9`Ι5f"{*tA̳yˮ~$lgupY)#>ƺ>Q#E&Ml}In]$d~_+]I $F6n#4bA"֑фHx`"Ae_NbAH!/:1u|eșpx^Ձ{R1v&CPrh5!Y$Ծ tv82_-!Ȱ{!iA4aA_
ο
)cɜ!A͍)׻ ͼnf$3G}2$9D"(LC.{,XX/#iV]ֹ/lUeG6fj5勺S̯b]3[RNt②}rإ^
Pm79^6*):qbZ.\3jQe]ņ}8
-_\6|{6Ve3VAe]./qI-J]Q^w*.#o⛺d,y[4AVA	\&`Z,*:!밢Z[tzB`[fGpr)ݐ1LCafJ8CˠqmQJY:7
;kAVbz7mzWoտZ\ d#L4YA_z{̨$O:0ױM(d]%
ycRS,ISlF1gg'
)g3҉Ǌ%޼bj<IG{agM1
80;rJ>3tI2,eSE刲5Vîd>_ˬ^.kwO"EQ!(oӞr)z`1[B+͂I*. V"&}\?DYxWWF7)	<[6	iEv}msרZl
L[5hgO,A-rB]T4X9w62_1z+fi/HD 3b&?%4uV6 :C&NV)x%?vAb+J<8kIouadȪR}U
66[Si+e%[rDiqS31",Vg.N^*ȡ"G,l}`dm

HeЁ:<Jd卺Q%< XI^HJ5V6f묟=1uh|2ճMh2]d<誅
J'vp3!ˍWƆv
(ǞO{J9>frMLE7pm*1Iv
 m*pXO<S~O
1	$	ѠqVc:p&YF<%Iߝ:G>8eIV4
^qk0:"6;HRBN$OC#4ѨtφлS9#mL\Jc)1FvЛٻzөbdpccS?|H|H={iPa?iZ7X\~f)͞
g0Gوu
h}>JzAzzW5[y/<'Kܽ'J,cJ`54E'̱.g<1	pSLdpd2 Iɟ;'!fCc>#ɮD;*CDDW˙L슡's6GEmrh:"o\ZɶϙZt*Zw͙9&"K:N|kBƂx <n<!*aksyP,MF.Iv_SS"KPf4Jp60Uɺpd6QNg^-Xc{@	ָ.n4;$qؾRv^r͘3h(Nim$xc(,c=b^3]jη:
.b@ׯ%T=JЭZQc$<
瓷'[MDJbz/i+4`y!11[Sˀ$ &~	HH	c.._8:_Q|QxLW9IC;4RH$X0'K(uanf&I@׸2ʊȊNx2X[z"1۴5tQ;61nx d&}QѝiȵSƆZ24'JM99qT@>ii/f i_ĻX*cC;̛;S*'a~R¦+V<;tw9Fxl%Q1(&DhtTXaq]ø>5c"*EѮ*C:W W^o1+ۇ|;oJc:\!O }HYɬX?%/VtW(z
^ćws&/^78xER%umr6	
Ҫ<fAxnsCtAF]ÁI(~tGZCSwHQb!
4.v+r
nGUqfi~\Rb
eݠjX#f'&TV9ڰx	$":
ZD,B&ABvJ@NpC^XA).E5NWN5'((B+}
RP̈́՜lT܇w9M#q&KHRIN\X&{i*Zr*eQ 3	l6loYdz=P^e#&mւT,EΤzɾ;u \=2<-UXZ
Y
ą
R=سRKs#(\kvo5zS57g^'ҽ
HTh8J6ct-IJ10*4WBk	XH<|ĊtjGErè"%)./Ad6؇(TkMե@mj&B1GUWnHoL'C|N@=W(C7=Ibia IhkAx/-
)<((,Y]lqx<B^A
YPJɏM4lv0Z"*Af1QsNO=`TgP鿝=]fc@ckRa1A;$ZQ  3p Ë`(p8qdzoow
V|'	 kCwd}7큄q	-Tat^#0db+p)y`W;Ĭ12EYȖαqA1:7i/~[2m[8+ߥ0 .B k<^lkq? 9XUu`0# fhkKZw~*73i&ȁ*"8lJ`,مӃT(;N,fI0.D
L:SE&oĨǩa̓-yMP\*%un: ش{ś@(r-6xq/{zMY8U&6G ]M
4c}*ZȽP*D5ޙru	+֪I](2QYPv]~
>P'{6<i-'|fAg5Ԧt	2Y9Lwi?
R2Ad%`UIE;QxAVVm4O9x~0䣎5%9)9hj'rA{N`Nd;*p!v_4`J \.D<''S+9ΦߢbP+L$*Ԗ
HCmћ",I3>p0X(M"+
2dvu,*1E1	ׂ:Gn##p
Ƨ=;5 9}RgH
0xp{'_=2r܈`<:OPT'6\Γ&DgsEVDI,uDZ}3ۑ8  p@	Zҏݨ /36fP%^k>tNSۻaM'Fȣ
N*Ϣ0~y
ҲC3qX1&15nDeͪk1LHLH*л%pkI$)t< b_ͨoM"Wr*e<%4}%PX.Zg*^y"vuP%L~JP3s=`%ʻ5jlkL
I
P8!v
9vN}*q?{} De]-[,[B]D%};
5e8ܬW6|VU6aCpHZrov*o(AAKd_u}fH%S<uoR2LS,)*lST	$RrV,AR^NaBqQ`4ad㻳'maYXVԆ$ttΏ$#QFҺDs2.Zrb^nHgu]\Wʤ;` Ąv8ğHDƙY_(NCё8~ͤo3Pa>u􌃗zYXdgԤ-7Ssͥt]bұ(R Ey8%zv*YHs"ubq#Clu_4!klS`:*;1aƯ+B7%"EE	G+*8hoFjve{<	,H4;
QRpsk%w̈́[p
$|Zʫ̪1lRupp4k0ɞ;:5o\O
+IU:8A^DAF~	6XO?)CF3X_#Ϟ)ln{\$G8H#J?^d}\Gl_,\c=^
7+-ݘ,b6++؁<~JPq5GhZ$ef1(#$H{!x(}GRӚƭXW,/֡2mÖPIBY|Dx\Zџ-Y/Vн&%OLjˠKrS3*%Agڳ%6T͛e`L	yrAtJ]Ľ+QՈ0'\9c^X99dKpd
躓q@ʆe4$ja`b2f.u@x
.P#yr*By+ ej1_
3,[m)(tY)vOZPoGJm<czxP'V~#G3tٔ i=%Xn<QO#_usof 5QNdl8*i(:vOn5׽)Ty:&/},x0D7TZCxq\^-ڱT
T_jұգ%muqkW#ÄZS`l#^I@CT/:nH v*hP,;ZwMޥq˶mȨ2Yl-{C5&}(-
FF4rlTQysW1A籥ƋhI24KCʞ#ئ$p (`2
qpA!tk4#ΐ.Qt=o>v(+&T,^gPboeӵ-bh@qPf1+"z
v8y i()gߗy;~Zݟ3HAt@EUxT*'GihA=''1Fu,apiZ0xJ9oT4⪒T֚Yi&WRh,
IVaJ3!PKO#ly$	rD"%*ެ_qB|p5P*$DJ}4C[
,4otnW'+1g+"ڡ lf'Nؗ.BQ̏%e?U١'j~kEOjHL;a).IIj!i7 G&ˇ(/JgX^LA7|3I7gc+GMaX][VP'gB@4YljA]	dt-͌.\V!q(PF:*C	g*d{G'iy|6br:L"0lt\\H+DQm,q'cJ(.LyNdU|=Ԑ_~3V&r/ƛ\yn+t@ҿ#5v<K-Q/#fSeI:Y8)Kɔ4Yd.4x_$g]|oAD4>I	)Vע;{z%<y\p#i/d:37ｦppøÏuMF4iD0ڇe1WAC/
c
xQnjJ TnIE#E	AZQpNzpgirwilbSy8@*cpM8Vw=?&>!,)&U_yRƅk&K_ȤCV
a/_f3C2+0Hn3f鶑FelC)(7`B=:xVS[pٔe,֑O<\6kwZ/+mte:33DlMqbp.Ųryu˛eIHbtAoWH_m Rŏne!7B4-XrE$4g ߌ#2~W^䍀i3iǥ9]6'g0[:e:o	c{!d9Z?aI^CAF⑽ОH2R=-|$hT!
m?-$`ֹ1`@b*Q.b<-pfUheHi"!@l)%IuJ+wDl-N]Oޝ'D/(A
y	]dZΆ ]	 F)sm9(KxEC=NJDFtS
x됑rvFB4am2Y푫+t	oU	*'%kn59X5ȿX7*PrnnkuR1a8EQ1XWgNx5"2ظU&4RV)90oX-n="+{-,CJլ"k/tJSffZz	62יMNWczl`=/	lX==l旊>^y
]'YıP6VjF\F~}c5
]; Z/֕ASى0YG⧲0I%{F{-W
$ml A&k^nP9VI=K4oΚr,1Ge.
AfR5L.kтn*ZyEU\Z[2ƹ?Tc2(]
Mްh}'{፺DD`\lS$=fOkeG-ufՅHaqGW M'S߃μJ`ՀEh6DIB"ÐP,6{8;LEN񥄱y<٠'Hض-6c̃bxsc7~.!*$Ҳj׆gwXʹLS
&5g5ހNV
v	RPI2-6Fv;Yü`(yzŸ)Td尕cQJɮ	p ihZDǾq%.'jFH1l<5"
~-O6uQ&sA+T0dkaU
f~j	INScF"VM:Ov|1Xq"`އv,<~f!|
:+r!sPy-r

WXy%'_e&AkFdTM@a8}M>A~o4PZ	+t-J3d&8ۜwRߘOm[M?RHԀ4lw
EȢѤ)Fa#3;oSБ)
083%=j
lc`f(h_R 
N+y:Q"Ngo-	
2x6F~
$Yd8%UGI{kn|Yl_(7W'F8(˛EmƬ47^2
40`{Nu)^<GnW`u`#P 0^%]TzZ
?pP1UU̝2`K@2=y:
T@Im0H'$2,&"P,X2#ODd%4"sYF]hhEE
O-* XY(l"{⮙Lr<fɪ12mFZQpQ\0ǚX..!8si<)x\ɮ]b-Ñ[
GAt>h Uoຨ#^8-q,B5j9q6p=odk1>'Zi&EB˦s|wxkCBmG9/#;G>)E qXQ갇PaA:ǃ]C;G$&T3fsc$-B/mPK[u!:tEaۼȶ/7׎Ʒ40=I4cfQ"^$1\[~H{fWE	WeN_Uǆz1.n;~JM%L*pj3T [i Sz,p
8ۂ6X6	G Tc݀I&-<<S!Zj)L<8/<5Dl?ֿo} m*u+]z@% fE#(#
V'E<_[Ok3JGBqUm&դThƫQp,YV -qr_">̀;K<i8N8MoD(%t"`i y} 㣗kn,st/qi)9XwDiHi3D,;BA	*O,R3):-@FY	懹=쿜sO-6Q0z&NK+DY	n9 )ow`d8Ӌ
FxP)_<9аb:C0(HƶNx\0HN)1je{h'YʞD*]v{[5^
{u3DfD$h /f]F*,wR}[t8橯t1e\i"65f:2q}6n֡7iPqmHq-!n$;2Fo<aN[&(~Q}~ßaZb%GyRAUTt+b@wʍ5;.a"ڸs'в`+:U^BmH=O$rh2HNgAwp%Q^p$KA,@*JFC#kq-ިir0Ï^L}dqYuhIц"(Oc\=ro
nEVM{
G"I*)ߧQE2(.#mxLO[83h1o)ֲD
k5!`;;F4a aékBtf B5A+>M4惙'^NU)QB5ЫEeQt&?9!0THe^9N恉Oȃ	#VڜKS_U\-5ZBSmv~!r3Yʛ
.b.h㪙<W֑ԧ|&rrtu.Ep^%6jP	0+Y[81tQ+ƶp
HZ'PZdL1gG.ߘª (@/BsUbṕF,BE\-h&
xWD45$j~K͂"c>3pJl2$#=:XG#aS*-x1KYZ3"0֏@FҦgձU<N07Y%@J;uwsi&l8_4CmyڟCF/2"	rTgϳL2M 31RsZ?N-[>4S':x("E1X RA!K+lRIdV`L5N`Q|YJlnv`4%@
4fn Y"]e<ƥ[
.[J6}0n#Ѕ%+QuFoqiÔ4wʼ.(RPn^|P`ұLޅm%$
S(^աTF[vGKcS~+Cn>MMZŏ5Zwwv+z-!IJR`~syg$M)zޣ[ 4b֗&taX:( kJ+SFRtM&D؇<#%UMfi*}M|wUDF4Õ`o,:!.M]&0"`ʊ!)[#Zt,2߽w^K!Mx)CSp';#A<~_zsʪ
B¶N_7Z>4&mpd$pwgхTU-;, T/DJ\
{Ľh胀kݛҦ:{v^+ 	Ŭ/V]IP#xcuH@"߾P]w"aكX
}ybV%c9<\Zj{|i\{,DRD2)bW2k\dqMK<{eL?[mCSd\0߮ѿ)71ܿr_D&c,Ye|Fa^$_٢V4%RwҔ-<!}s9$%dpsW&*!}Z
c69 nPu`~)FB8tinfjuq~cyVOƲ)t_`HGXRj	h/_A.L >b|Fi"젝nH;+*:7	AL;[lXRtf|q(H|ɨrbU/:٭$k\Dx^B菎裰ItpG'g4ej\ެfTKV$y
!Acn#5面!ZHlXkWy7Mv=ՈGc^ȉޔC$["8"]*oZb82PO d_h:%bg7$yNHEƮj<49ۮ'7ò04itCC-~9{Ɛ쭂4d^dIצTYx+`2Ći-T,TOtB}T3DщgLM0>eTГ؃C&5=._eyS1-+xd@(%e	PbϦHH2:,2}e4o
|&Η߃买ڪfpt;@!Q7KdVt:X ]XU|18	8~o$# 0K&=v@Qn@\iYeaֺq;ZE.ߧJR^QfT/2=Z5AvğGVH`gVH.*߆3,;|2g?bR$,x:

̀yMڴp}l;L;=|G6BT֡$-`9%9|pZAmױ%S!h?fԠ	`պro6<oLU.B%E(DI;;D(u+
5H>H&re#o#B_.	_# 9kOL0:2uզCEA=v[t'jp) g6` e c`0IADi>Mܼf`l2|?HrXUXJ" ߲O BA)Է*bLʗd>L~Qd(@I2xb3eXd ce(]ZQE`Dnء6?[dZZh]#ӪKR|c 23 a`J66<;KmQ)}.51 v.\o~!/(D`PRpx`E:^H>%KD/@5+)qoßjd΁e[Btә#m&@ou~5_>~lkm(x V<?55g8XV$/$sym
)z<}WUo#	b
P%ۯЍTMc9=>q}18 MO8W_B?W"kDjLSxgjttL2-wd3c`xc{QսP1"(6+ed%WaI|hWߟF1T'qO(X[X'A(a
K{FSݶm=v	v+6P362L>L?3b!Ud5YfwGS8L^W(`}wf%i`j6:i}c͚
~4Ƙ]R[
F)VKI)cjlDJ{&D	K^F;:{VRaw|^]nqoJM/dl= __pL3+/B/269)sH;r1l	YE7}8KU/+'A6$D,vjCvpӞ+XԼ
4
t9^%f$x$^A4]lɳ_F,>J5[S=_b8JQk\1f=\ {9=E	Om}mC"ik	Re1oDۙ,ŮGyNY5Uj'VS)[,lJRˎ~y
r!
_&<=Ǟsh<8:s*e:5A~!,J^=O(vZ!0Ne~I@R6b(-#ixIM(2D@P:Wfq5a@-Ю˴č <ůePbJ˞+ۼRhfa̀ X7=BFtQ)c#z<WRy[-3ێN'*
|o͘YVDx4xA\HnK!^MeԽ9-Uf[ߙ{`#f[שSc~20z7"o$+à`#ZtEG-UC aeZʹQU][m3 9$Dr*"YcY/f4exxGB	~0ʤ~'R &OՀඨmDl(DCjkVx<d҄a0oˢЌH6@(MVg-A5a2Mמu\2
AJf([yG^X\RLlN4@̐jz籜q9/3$l몥K+i:]`f'1L&lgc5Nҹmn<pD
J>Y̳?`!z(js4ۤېt*
<l\m.ƿ~H9oT(w_lS/l#ydTD0q ^9G	%ڐM/i׋-R7	gq_dVuդ
e\lt[uw\urP<2f))>bˑNF՜9dv0a~=?EzDL8ɕqpgـw&!U-VnR 6JO-t5m~ϑYePsKW RH"ԹDEd	$Zc[Nmnς`$y!Zq-*R+:5rl4ׯI<W":ՓMt*U\wnͱ(}(<LK^3$[ZOU|'3y f|{Slth+`ʢfj&r]P<`fXzG@Ec5y:T^ob&uӎMdDU`T4^0VnZVϑ{fם%jHF
ycZ{%^Uy{"яiY/?EAzv%ZI8BtؕV~ALj>s5+!&˅nڮ.0ɫ	~H$8y*3X1҃ʨ\=~I<r(ҴQwoH,|wtEK_Ŕ`oM*ecA<)"M<cD:d=cB_6I@cyChx#&
McR
^Xqғ%2k_	[-<r(mT?šU
Hz:]}89BYcF4w@[.)UךHr#e7 "kῇ=\[lsgֻoG^	vk7.nd0̵*7좺[ 5";f)@6L7	gC5wb\ isls)T5ROyv(dVӔeVINGp- Q,
){24eBkkJ60%C1VsAbo	"fAY4ظiV3#k!M²Lt긟
 Pel^CQޣ!8%/F/WS!ڶC`pe-yX4N*ɸ+rC8zHvki9z'<.[^ɤmݼX9%ԤlI@3۷/SCSB`yQը`6cf[剻(:&궲33%f!4Lf.<ܕܙ!qYjC`8U]gz`؞3/{v|ڷ߱@QO5'o˦s(yT8SkA
ݠ@
X(*Hw#3ʊWP
3޶)J}ʡlT5n,ܗU4wg׳g/| <i[87q{2SrJHM)vm*)l¶{v6æ≇ ֬CkAȥ^fMS[bF1,4MX_LyhޘwgX
;%9fM8fr9QÀpz4[PU*À0DW8;N_V6wv/liF'*bϒq($E[S\KG6AI;&긮Vrx~D헽c>=fꢥlDzLdvvu$[Ãɰa!DhUe%8-!1:V.X{9#@?`S6?79+d Ʊb(EjHTpw1~YFf:Kx^ŀB7NVrB$YV7]U$"8ayOѻ̪CxB@jGcerLu9a
ꅕIAC랓m?C\N'#fE+YJbf9*7SIY	Bq"~OM+k&k9HD64b8/
8PhKO!f7  3i&WFT4C+r\L<G8 dH]da*X[Afu9'QdBE_6iqG)BkQAމN2ZR,嶞l:'P'Ǿ"	Q].
-I!R|\E`nEL|\M+]\rf!l¢MRpc/Ⱝ/7[s&bm$'-QGI6πcf G\";c32mgJMr*LdcmEΟ =0{ Z;#Y`.x9
l0ٻ6&^m)MF?<z FYlo8=_&QzH ~{ZD>7I6Bi*2(C.#
*HU	?;݆U;)0!J#Cc(v֔Ym
BHID@|>2%^q{tl1$Qfp;Yf
:ܟΐ}q𔾺L.لae4y0V3&Q?bzOmu9<=ͅ}QoTQFm.No07)x<mL23oKfFwoDK9ŇT3߷?6(._hf8+$Og{oo8BiqAtziN07Z6f8OFg)s*:_*eq&g}ݜ÷..E_ji0όi.PIEz4bb&bshŏr3p/;7EK7QFľ)|KQ=,,@gAe[?8
z<5tQY=~WU#E /SI~B29bb0 {y@\=rd$v"o.3 Hi+V0EHO0*>+ѝtX=rp炀l &Ƭ.X#h|:EiWr޵e7Z=YOL1A
X]~[z8JQڢ#!e[_[u~P]n[Slką8
Ubțl4`p2FK'f" 	^uXD=d`{O{E-˖5~в33ydCiI(NoiS$.U*ZF=|fY2

;Eb,qD<W}Ln^yF*\/Mh)YqݞpFV+OB@JǘmpY!eGLQ**lK8	zIתzPeK&c().h %ӐnHkGi㯊{YWSGB=|!]_(\{)w YAB73p.غCQ͗""J%NnV'|e:c;#N9mHlV'1궔Q)J2U{dri*~ep
Tz/D,w	g+FL}(CAd
PY#
yV=m=^ D/U6䝜@3F5"91VޜeD,B7i09ѡSxK٪>ӊń%s*ħxd՟T	%I	ҹbLK#+O",! p
`k
5߮|kX{?<xHxj1/Tb9V`-mOl7u*B",oX/|f$s5W3:PCf_!@}PtY
v\wa5
Bʿ~=ڿKږBP]%t{?&R +0 $9׸Z[0:
g(Akf5P~z-Pt^DNtQ$ͫToFOq>̾*pmZX6++~%l*3:MfnQEY΂M'Q(7@
v'ԒkXk6X[ǔ9,+8_((77Oh@kޟ^D8xD.CewPW+P%f(N|jSTlH<	N08R	ǩmR0M
UcƏ(6;RqXl T/w\рB.*k$A~MB(+>灉ojtɫjPP'"\w)}ͼLH4ԡ)J;WZIQ >luwJ+~%GBDv`izNp|>ҭDo1P~fFMqŔ3]CדLljN,]5{TB5p7"/_üe[w.C_Ζ
~>Es
'ӜkU"f6tNKpp/t5t[uÙjTlg,ੀh0Tdzq3"UKx:\'Ʋ Ml葁)ĥHdѼHo4@{0==yOmZ_*|`A %@Mvf\ j;p@&eԐUOJES;=q>BV(6EpW
r@ӱmt&0rR;n5-rеB̕QYbk7g^E-i[ms&|(!jxkSuRStqL)(숬PTd5G.ȢgDfP! .t\sA|%B>@X"6%45Wxs	FK hN=9E6,?ءIy$v`Kֳhb1W_-s?0t#!;!5/[g<ޱfEI[%q <oF޶e{&¤QͮFN	hRnlI/81*NJ iA_lV1Q\fA!Eo:"Hdx8y:!+UEiL%,_J7Q=Ê+74$.JZ/A
{eC{$
kzRUvllK|.^lz){&@{عEfY6Y^L"DPxgN
Z~K" /qA3b5/dX!hۙ5ҁ@8@/d"|/8"@haaq2NyOͬ<U@X<yްiAĒAZ4w)eKA͠/,l{Ȱn+g8UW67zNk־VcpEIEC9%i
6+pc2t"22c

e8<fSi'ZFԈAWLa.}љ\fmyeD);)GJr7oMR_dyWV3r♰PH@')|1z %q?B;nTZ\%|:_ga	5ʝ-9OiBٻp4wyWq>P R]XJf%QfJK-E'ZfL謋jK1EO)_C	mJYD;w@r&l^h4؞bPğNtUb&Ӱ]Y!צh^n1NNc0;2WYGP0'IH=kܯW&Xdu
uG\6-ͤ)ѱNT^ooϿ_G?$ﰆ%̡R@]#w,"BEˆ/7'^Vxad0
<m#^`7l /x!`	EoY%7˪G>fpJ8q,^ly/\)`=>!t7ݬ6S 'lE1(3ƑhK5J7߁S7
RygA)8X
GuzREHd,`t9B'kX4MhWRodJpol-P-@)MDc('KTV؆3+X'҂au44FmM\>,Wčױl'p4lw Ƒ<T=`Q"5ʳݏ7~$yх$>ViOa7+1\SH!ewS+F4 !]R!+[Ö5HR?mލY{sdS*.}NKeX^pc|8
]a)Nˉq=L~]kgtŲ0
*TTW<Cs8;WH:%Kh (/l鼂c>lzhqm62!v:(aKr>YjGQe2J@lh/n͌dndiC&QÍWڻlu4f^Kz o=4	K΄IL;sYF$qH+lX[?)W@L^Ez?$6,`5k9oٚ(+Rl8`bZ1FXa3c	]4p7nўQ&%LktY)<- @؝cc+TWB{ƲԨ1|}Cpk#WcV:\Eo pbPKw[iftD v4
]#HLiB<T۔->2 Gމ(-
RmA$;%Ĩmpb&l⤔"#
t#'cjAmDU:ıgwk*Ȭ#7bRh87ІLs-ιXp4$pP;Rgd825p3ܩH'eIOV׃D	#Xs<&c|o_btr6ngm"L=E1	x5W,Yp<]i*%8WE_q7*HJGN'^c?ӗ_[B<
Qcaϡ}-A''g@.pl%GX?(T6LPwZT^(bCT7̐y{9sFiӑuz
ObVM$oUW$;sC$֊tʸP)1&ڛ2*hTm#Af*N̟M5<Ne5aJWnBF\1S=9tBR,1cE!فVo_~-`;`uO1_Y;}iӄQKGeXdns^BjOм))r;w7UԘ̥lٚ-cGu[a^޸.9|^-qŷv8L.J}+G!7k:2"w^MF
ETy\aw|#ỏlݧMl2.\VkA{Ouxc#bP<SyqN6vfjUD?^THsqEB\;k!P|֓B|yf֑Ț6)$}'*MOm~$H
*AH'JO"#H 7ħXgDҤx;&M5oF'jdW(#OOa7{]~cNدğAE"e|uտoJGHOp/6*{n;eNVM1V|/|`Bj
<֠aANc
l6]]S%M vwB%b&~/lFĎAPG6Eާ]
֠lf.+Xl,U2S.-נF\L|tr!#ΥJfm_̙YV%bfHXmj)K3dD_PgIs=ݱjr64=agxk@KvK6	 br(1^r3t3렄PdQ?-rXYs]ÓW!4u6K>Rpɉ$guʛ}h%@ϲF*@mvj>v*>m Kvމ:f5L'7fM[l߲0ޱOKUH}fτblAv	&[~Uc+WFyOp[t[D[=@bِ&rJ*^I<iR4mMQ(
ɻZ><@Acx|hd0ؑT6M[㬑fpPL-ۤ#=
Le!Az3C|8>frfqA4HpDF-$2g|3@۹v=Ň,U,_4LR	80Nuu<t|LNuy#KC:	B94ͦ&?xiŀUDeΠc3B;X
pUy_tX.*N:c=y+z2Y%ZA&*>& ܃EċT!CQ4^\}$+;V[Ҁ9@nӓy)TE!j>hfր;is~F)p'H&[D*Oi)a6;A
7 KڭlmЀt.W_~E{@\-nzn#;{tJsiR)E0dǍ#rnOf%%=Z:pi=ŧS25a5-	s87Ct3W/G܋?b"=7h<nV1PF70<L|}.7c_8KLc"@i8jϟY*_*J: gzӕq-n*1͔Yhd!8/
/wF_kRǲ-E
_C$m#1Le517iNEd"emEb̙}xDvjKG®]M1APug2c}6<6-ݓ]
  ,&n$CjJ%DlhگjMVΜ	
|#9T̳\M:'jÄ"&/yO&G8Ԛۛ1a?igZǔa2\E$f 8AP_N	Ss6ŎNLWJht:{)41rH=,dF]&މZhCH1敛}zsOz傣:r^Bsdc"0dI"{WkV|).fc}}?-O
hhӦ7h<'E`?,HFR
jП3-HC0gVEV	.C!鿽<!?܉~W )6VIԃR0u+S%t;8z!z,+%0dMo.|egy"أяlFsGۙ|E?5}VxN}LAY_dc=
x3~ǾQI!$Sd5x%gl6P׎b&uzo~eQ,2nueIsq:ڳP{!i^n;tjtЦo
x;k`ɾ
_</rm/'luApCb	u|o\N̍`L1
-\PWƘWu0;n6l^w̧,e$
dP9$<ʃRJe^z`]G$Ś~,Gs11;> LJ<Vnqׂfߒtlkt {+ޤs59n&~7o :17+BӒq;y;s77Iv	VN{$7bt<)D ;_k;><wgؘHPk!J x#{[u uʗbYžr@ZN[2@.c,IHCnn=eA~Q9N4lʅ.nlf%-m#(X!} xv0بx5
<bm-n+r:m]q4`
CNefdY)D`һC7]
(yd<N:R!vmk@[F9#Ρ1Y0)âgԈ}wTUv
6/CG#(&iX`Y)	
xRڶY$sC#WRF*4sGy ש+䥿h~'#Ebx(Uv~B#6>lao(h!\!#ƧjPF2`<lvd	Q,Va6(RSL_W#MgPM-ܡ@Ұ5:/ߖP&`(zEBscvMD^oV7T]WapWJS*uMe0JՄxQ`V>ŵ5`).DFixSo[Ƭ[Wk GX1	VEk!&}a\Tk+HKvlY;n<ȤO1rI2'Sld0Ef/ClP&9|6|⑨_c,/.<s"3x%Wfr A:	oz{e	{mpD#*ӱY`V*Q2EkuR;
M2=:N֎ڑP"]ݙ芧I.~w
8-kima;Ń<S&*,1&V.IJ?x)M!`jW`%;M&22Rۊ 6g"oF-FxP (󦉞
H~Ӏ :oģF;6Cf*8%Uш38`ܔ"}h́0-ܐsLD-.C@E
|6W$@+ iEaEcH}[lEeW2SN>ڏt
/Q=4h+Ƚ,<f 7:<hYK*t
ʡU(#uƏ_繒
u]Xnfz.+
[k`[c5y1j `ȵ,Jߋczyy*,K؎>ޘ#	3fq.@(7WL؅-.Nuek2{Zt1`ɩdl6q;1ZZj"da99!2_*j P q$g٫C#O}30h͉H?(K[*Bmp*
-
NN4sqK"7$5it/G԰hk;mu{̿:X1ktVgNgn5KsʚG\O'[]$*+\vXfPBu/5a'AXx7LF :M{@Q"*Z-&P0M؝E@)Xr(i#PrfdWZfM78wu,DWAd({0JǗh
*~e1ȡ,0eDa
W
P16e$o薗ӱ>fo	_`R)Wig{#7M1o?iAf,$bPř]h6 ]zv#@ӫpaZ6[
QM.GmƠ7itG~6Z`p]fvNɮDۀ#UR1Zbf6Ds'+h./qڔٺG6gҦrÎI_<&#9& <[v@O%OKv{!3,FFz6nrm:< jp
 TPѦN+ʯ$L]&䊏(22r4DdSƩbm9@-l	*Z
mt-=khKy5_-_H0}kaA*ɻ
J^)JaIPJ`ކ`Ģiƕ{;'%7J
`;բ:1WGQt	aR$l`DNT
ÐBI0P^]&9?မԍ[ץ0Y:7jMsTD7bWQȓJ\MA_樇7ǃTWL>-
j$g1ATԥQ̵wȒcկ*KMGE2Gb6?){ SIH\XH\[<1`Ή}5|ainۘX:rC/S,It`HL
px/C zPV|e~8y6N"&=l<QPĖ,Kxo0\6RzN$+9:0n1"<<'?!3 i{*dZ~r`5R(jhʴ0I4_oE`C_XQgi8
f0cvXDUq+D(lòQk<a;pɫB:"ދSoI=76L-ː
v/NvlǐbX+kʥMV5` i̩f<zR1}5f
LN*F >K܇c@7؋IPc02ʞ\d sX96&q@CWG[hDC
i)8|@ 2f	>ue4` 9t
75Q<>:R4<3q4X|$O[8	3]5 <a ǬYaTZXAVN0Adی"73E+$,Bq:+Uy[
pXjQQcXeD~tG%4UPN"((vTv0zҍ=ĔIC	$m./-w.(h˳E[Ҋ0Փ;
ˣ~OcmJ_kg'rC$vԏLz7;uaKY,"]
} /(5ذlNec'Kan',s$^rǀhcxmCJbgt74iޑ+Thl0rTklfIc٘!YJl;tCy!S^r~H<ވBS{5ݗ#Aw.dx%@̛pEEm6[7v<%1P;`VuD9e{./sd54rŊyYF0,g&|o,@{{O3UQg
k=LmoH3ƖS2A2w͘ȽGhQۢlِ###?D~i0xXyeX0SQ8X
TSWC2o$fXý	cq%/FU`	3nftJǣX܊*1J_
c+jG";1iy{@Ey{C]2_4x	o%hz֪$$;*(|kv;+lS&Ma%'y_èdj!&=(]4=ʳ/*ByؔO0(k"r%2NZA̒(m;70\8C4ѐmZxmV
f&/	+Q,uNO}^AN0[NՔґp)5h!y1[x~m@PHx@f
	G7dLhYVueW9]|!G4J{(PwV݅8g"7 (t^]Ģ$oN,3ɵ-ɊhQ.4l(S칾l )̈{.̖ISʹ@	- B1ùP03=*~h4|qYʫVb!Uը3{㒍iaz!5:y0?;<'<}~cs6Ya[
eU;[v^ڮibiZTkğ\%0reL(KXH!3!~|BZPD)qP:̶${1eX:5[_-W;}hFqP+1(a4m6]71^e@AeMgtSU>$QR	_ĄFLA+,/u$4\N	^6y
z+Q3ՙf;V?kmF>-+C4PF5ꮣN@gfPpvh'|2N~D{s|y
pX]6nzwY]7v'KH)Cƒt9?y
`Q<C]2[ʼjb&{D%
9>dE=iy*#d9	"Q"Il-ˈ2Bm'w}u_946w3`xqlcW<He=ŝV,=tv%^|,| +9M6A*_D8l-m*&5E5%(J* &sxe|6OaQ?aE6Dx׎/`|p+![xjֵsGxsA,O_!Y0휹BH)Tgpj&IeYiqBX-1?B#7D> ={(ĎVuv^VIǒZJplS<ScK$b6CM5e$"&QPe֌ؠ ^9D-q	!~߈GhzXN^]\8Qɹ>!ai+;g@^Zw	c$]OG8@:z;C2ԉ
BtDMi\)ޚ[\e8Ԋ7[=(6@Q3+"!
@b ԇ'
'/poiaԚ5u,#hSq_FBْ&*2vD\*j)x7SXtWFcOfdp0l!bj `|Bp@3rgkih:x'
VWӔNS%֟LO";=.C^8L㐌)_U1jX~rrܚg`!VF9ư=Y{1w%
XPV@82DeRCtQގ2تhBpf.S87FXdG3^r
38"!ϨvIW|,@Ҟ`	tŻ0&fll>QTwv<rIgqH86OvyN[Ĳ<y&?2f
@P8DbK
K}%ևSv :F^frIxU1 41D80Ky帶whFUM5	*Ɉ!+Sz=Ze!qϦ,;_+]VG*2aַb^LHw|ԥ.6㓭.A4LĜ0d"0~1pfQkc &Ls} .Z	wYB=-"?zəmF	'Xt|
*:'`+rwek3lJDBG~˰e:`{jZ\yXׂE:8.'yfx<:e;p,
c3Ѥmv!Rġ8*!7¾5MƁje%%eؠ<5Fd[fYΦp DL*li,#*ԣFAazmlށ )*͙?Ts.JgoZRRdA8nvǬy$NK%pbc1
ig(F.ZTe'~-soOk(BZ쎄/O
Cѭ/r}
?;)Qs6Tkq]yʖ;@..hhD&ܼFL%jn$2W4BE>G+tCs.	^KpyIt^| \BQHW:,K"TnHE5ںM|UbMZBKIo=Ptb-h~j"
=~ɏHY6"smA	ڔC#^mШ/50DLT1Lf,KV瀗J"[pw	.7o,aNaM*Ǐ)_v)d0+UQ-.b1RQ
(yi0<	\ӲivhPG8>VX4 lT+v·<x˷M|ūxr?
('KNƏCRɴȯ:Ec|=8\Ybfse"-!r^tm	l1Ttah$]>y,zF=IKR-rZ710# K.ÙMan+&=\ _	Hz^.(!d{xOuRiq"مr/Qc$T
ւbs e8c[|1_"H Nw[Єjǁh`X晑OUXX$%^ֵ- wZh,<ol$^*Ǹ7k^^,SQ?J4ӹ$V[pQ]-P
Ŏ@M|Pf
juΎNsYߖsCqHAlqNp.[Vc,j-pRGҠdXWI9#RE#zP4Q)Dee8S>u(."?꟪;]3?L(􆉁[Qy!<*9ꍆ$2VK~bΔֱEVn]NePc@YtrQ )FV#ğ/L	M)q2#msꊩYm\|.[uNzBzK+$!df֪-Hպ.F"|2(\IiJ;qs^ob߶
+9Y؏R54zG&lZ1,]nr;Li rV.&ӭIt@HlS6e*\R` *ΌK?f
	_ld]<Hm"©	l.oD:˶<f	3C!\HG-kuTa<"O~rd+ V̐8AhPL3jLtP{@W~>rDָdt##jITJEq!cX/;=
ʻ4Yeиoy;3p.2oD/E-,D3`2qzctЧ12Y&CM^f?#S~\ʛt(5\Xd)8c2CF3{͈E{rr\QjCbyx3cHjl$	EIQ_ᡶU`Bxq} ^v_ZaEB
YJ~?ynr

;<AWΙt
x$8Mo/Oڨ60r'DOBjIYX]w!ZJ(#Br2Hm/BWQ:`2ڈ$qTEd/v%t7IE<l[+c-Hn>;jHrLv@Mr"Rp9{QtݰgD4F2QFxbM-,F0Hơ;$sga~aCE5rˍ.[,V^ζbFk^kRQ6*`;}Ƚ[D+ƭPai 9.NQJnQN1cbSDj͞g	0,vO衛AUv.T6l9;s*#鎡2
cD.Ѵ\iˎ#G!q7\4Y06~tȼG~Pg&VC_:闧ŀ,M;qaQOJ$V}=Ig3UTI5a/s)bDc)')SlvBm6`ы9dqQMAoClYߔiaqq
R.9HpUҔ5ScDɨA;PMݹrv4}`lO-Rl7Uo@+uTS!rNUn4
^e6Q3D@/`taT"N݊"IOO%]j׼ڧ̜;sD4ɫ	r7:`@rqjwCb! ;k^)
L-G `ܑOOt+0 yv{VK.9^NW\QN2ikwzzz\F$s@C0>T"vz-T)rJbUwJ2"BPUA0t=̖jQe?MvM$)1v;a׊"ٜMlfj:aHG62ǔNYFul6˴Z.pjpF~y[ԝSh*+qb~.L:y6
Ap3׃qU;Dez's2]3m-3V'Z@甖
G|7v:p,pt1v#R|IYI{@ؤ߂MlBr>F4o K#PoE
XSJU<̈T&N6pؾ+e`ɌҎݍF!@gseHgd2m"3$TbZ̗^LnI_\$(,K/T&\o PCe5@(=@-H9:oV.Vʝ,2'd 5R0kO1&4'ီpv8`]PQ~|ZlGҫ1Ȭʷ#lop¿J2Ѐ+*8j.5(kY2\`Oݘ\"lζU@:w	V9:÷& \-b{Pthm(9H&ģV1^-̴79K(OGe?̶@ǁ9XeER6ۚr꺫䡽046ecڷm%>ޫ5Yj5yTP/%+\pE3ۖjZ^0-6IZԓ༉姱c^-';Lu,B$;`u1}
T6FA%|F@{Pe`ֻkmRkٚYEJQndU߾"	[Uyp) ɢJ
31Q܊lՈ,6Qθѓ+D|5Tq4Qk7zi**X; yږP|WbST3kǚ
2!YXZ%M`9H.?hp@yY-(rFm^$<	K`g૥u,3T:?Q nؚFT01rJ\TP(#sver^I499:Щ\i£\(&NJݢ=W8?lF=5a	ԪJجáE
y[FF_lm{I	@*z
]dZ8Wp)5FђtXS>)%ex04Kfy2˱Lav｛lC>RE?F>C>DXiCe+ L#ņB`O܈{=E|e~aq ZM<0^<AuȖ#^]wDB$l=T栯(+poFGiMXR_8tPFz*G-0I!RJ:5h+\z.!Nm\ZFbTBJQf<R(yGΈZʓqRJ܄ds')KG_5z Sz1:	fD&8h@)[EdObxY;0F,Z"'1l!qPtR
Z|׽.,VW~-}/ʶ)T<YHNƒ!,̢x8}zMܬ0ZꆮMNpR%9@Rz4o@'\":To)hS$Rg~_k a#>a԰`%l<x&("Ղ2rMPaMfS(<)O7cOwte2?L1Qh@p_
իk[Qam1hk oBܓ=i ,
Y*,4H+3QSJ zlh|Jadl	W[϶o,D-D
³+,RuXUݛyBZUBf/T5OgUj~v!Җ1ʛn,1# `vQ.>	3J	&LS! eYz۴(+M7r&p:cë̽HN2MГÍn>ЈTK<~ʌV']xdsI|nk4kB#y*Sw2ӻYjt4/y
kD=XFBdv\g\v,},UlJ99/V0!شoHXIs(f,skL;8Nv2tXh@a[`q+8䈝w<bu8h~gRmѯ$.-tl)lOv%۲ͼ)S
Q7ͰZ3
{%۽_:)Q]/*r8K@g'A(]P`´D<U^vK8,%sY$`"<U^f k-~e*6N7#|1RM1	R%tG/NŃHS6.hh* ~a
,<Y`7#qNR8j9;i1N̶VX#,I%_yŶeST2o3",a;/ԑ]I(ro0m7ǭQt8ix6.ǈ\G9,Z.Gj1)yxQZO{ T"s^͉|UD需5Zȏ$By8Xt<hZzyҗe"2R7"'rQbb޷~q>,Sٌ)th?dI]XOС UHT	}W19_ިM/.h-G:o	8a[p*%V8*x|@][޾ړq
-* #y`y`&gV͛♞b39#h]X޹
i8j#{TQj/@KxNzB<wԥi>y&)r28o#vs4N`] 4ڲ=b)p|7!{J͈C/i2f-KPHʾkx(*RUbd--(
Jp4{A0^Fa9'2u]ږXh
Jfʉ"L̕zDSiW՘*wH66:u%5?"YJYWi~0>ܓA
\uSAQJFPy7*zzaAL{;QY؋~0x<f &QѰJ(s/bh6NM7@@#qx#ȸxS.J29Ň<vɵu#x|kjNԁdZTg_9tTdi&r㙬j
U);
tgʐ}s<DeZ2MW5E*&:ùQ~Z,+{$]➷gfC\l(5ˣ3,\Mn<gJYфvOטjjMJH۬ʶLhM0Xg(
fV$cpIϸ~Km6Fz#	A)*@lפ}=WI(EpEc&Rhl29Ѵ{Rc,(lJv(ľOS{dJUd`\'#rΌaʁ,(61G	<Ұ\ND]'9$j18yoH(4:Y{ƨjl@<*8/z3s=᎙BIa"CmfAlǁw,m4v0erDܒu{QArwPc-7rJưVG&b348_|ŔP<ORэtڨ@CysĘP]*h$.&X-?Mͪր&d\{
}Aǵ?acfoTjgpfؽɚcI)PA?m L8E@?ɇ27ˤN|w|c_@Ϊ w"g;ZLQ/i1]6,,~Mѓ]q]"HpfvtHqA
U@TsԮ oUZN0+v'3!1X"םiy拐4 /MPP<pg=5gz>ג=A'*EJ`I ,ZtnqroLZkMla!7+}<z!D'ƶ6e_p/;+C۷L
sVSa n[t(
GGy[,#q~z ttJkCēڌm:_-]NejTӰ)08
=N߷qTM9P?*a"4)hsiYX??fH45{=H$|+	GA/S-c. 6ϛ۔ _ы/
J`>y{/=As3}^_P:v(̈́
ttx貪58aw`
VA[4R4r$r]/>6Mkqom&GX58ˣҳE1`x^,
F//O2^!A+[<٥y"`9۱)2U&~$=/GGsd9Nе¡2W!Pa{dr`]ʞB>(yN!$#i10yQqM.lW*JŮ
GJ?˒"W󳊓a7UXf%NB&&BY﬘$x︳7J!u>^Q
`i@+ ]U=M?|/.J|K/dp4]~a띸#dW
`7Fʲ.+Θ&6{*?'h|#e:cir6UUdnu$ !Y&^Av`l6N^@d[YlE\#zi:W91qTCG:ބQQǝf@O'Tcd@P!@&z"ٜ6Ȑ-OWlykӗ%"$]8eڦlb՞TF4 L
kb@pke̊-+8T\=aJ^Sƴapdx2?ylcČfspv&l	ycg,aaY&>_ I9Y7Lo$%U;Q1v|o϶-YOHYozengt4~%˨zi#/ZHLbί8
30v۴;Lmo3C%cQ_Qpzib2%4e(x2NH$#nE֥Idsw`θ`O-]GGeE1BrQ4SL/X1$UfB/W6&8NMqYpq@HEQOF.K?F`-},&I`QmůsjXAvɋMcHހV6[D9țKh5[gw
	pREl	!Y\e)?S!yKǁ:Y8Y)'oS:I>-c˗0dvj,'^.|PhbUePc#mg?*r>t Օ0G2:ʓšPP1|x'=3ϫ6Ivs{Z7L RcWv#>3܁qzC\1hP,r26b8(Ras (WɃi/^1;?0O4[ئ
嘓 8HU1K$JRe`N:L0
2DBB}aMn˒
XeE,nLҜbۯ.VCˆ8.eerVg1"(.v1'q<w%Y%׋ٜ;q95} .]Ϭl*

Ofs,2கg2TlyhC,h!Ydព<ռZ?7b8a;pw+ "||xoNv)Pfz͸$7`83|{{Bd2s#dcbKIPmo
xƷXd_`w &ʓ#>>Q!xWޗz,t?!Έ_o;-ƔecS>tJ,|=rs'T\f6S8~6܍wi#{*OəP]&XDGfж4Mv"۱W&xEژZZk
4eLZqe	xR#	+CFI/-酯)p4vc32;l\PxD98.M&Kgo-ӂ4Xǖ<
Od[Yi`q11̈́j[bjЮN9^
/v
 ls| 91x!㴼ŋo|=y&POC1i˩I<Uïh@^*AnDW|)ƦAK8**|[R%VA1;Xi%(:`!ayʷHW8Ij~dڙ[JFSvoY&-X8Bw$%@E8!. Gg/\ʶ~!mdy"ȵ[Ԗᚑa 
(-;UE9fe0r,:[T/[}燔mĳ~lKD;{=E,˷Rw0RxJ&.
C!Ӥ $+eR=xl?OU śv)3E)8R1	B0貓PPKyQV,-=
:b#wL.(;2I{B \
V}vs5?S EJt$YPgxY1/Z<Ă27;<=LsF]XQi'ia< {=g(dDd|9Uu[+a\^̭c	s U^HV )S$6\o֌ߘXEzՄMD8EΡu7SfRMM*lW\T¯mêesm
>r5H[&TU/o#,IO;˚Ժ~S?B*=+/`:_?<HC$
IKl,,LKvd0i]ְMAр\YTTwϿl.DD|b68b54te@dI
*w33Zr&@͍0ǒM:ȉT'~cTUA%<
Z-3cixfe#LDmut<БeY9',-J(xY4
ǅ(U%ܢ%Ƚ(Z7n_,.Z;?a9LgP6CQbdϒYe-P`yjPM%K 6xu*xÓS6l9h܎+) <W`[pVLV\Q۫D)@y
/LS	Z߱xLHh[R#23i dx]9~K9{.fQlXvaI,{>Xg
 c
o	;e6]
Fzf'Qd=N+]
1NIIJN-ye@U*rDWd_>GIs1O2.'ޙ_$Vd!*<8KDPC}c}
2:ky<KϨM, izKkN[(:w(z)P5Au{n:/+:<K$~!kq9#z?37:@~#>\"*6^k>{+m7d~"81i/YOﶰƁa"t)b'h: b]s
)"ba)k?-FX^EwensF,*1<i$&Kfը	sg5!H>v#A]m3M +
~`	Ay(\Ʌa@)[ȍt2&ֈ'hĨyU
#spZnqL=:"}y+;Ŵ{	b=Kಒ}Kظ\]5ng*hc'rϐ_mHQV{<i`8S\5MŸ:DXqPt:'pDn!R
Gfhe9#ք5\-,'Μ9Te@
;9;
:3JbtQ;Ղ>mdkXJlŊ-֔g"2xNٛJE)(7TiQd>II<ڊ`fJs
xPT	owϤ+3Lf\MʾM
y0J<9O)Ӈ(Em{(vyc}=CBPlvG.ɔdo41T[Υ Zq*J%sBkœm˙UW@B,ɋoiQzs==K
7R#}c4\2
*gOBUN[;Äqp&_3Dmއ7~-FAZ0μ+;ZD	K(UllMVl8*~0,&q,[^h
ř+w7Xx=WQ"NSB톔,Z%6D6r4
ϘGD^
țHttadݼbR}g3exv \|1Nvpl7`1KшjG6/0u."6Cx9VwQ8N*^K65:kCdpf^MZ`J+tF1{@I;&ݘ0p*0>
O)mB~l<ȎDpe
s)x[´$TyaD~v։{WZD"nLWh%Ƙ0x8/[d霣\6̜⑎kdȪvW$HX<kNQN<4
HqiL+"a)N^rX6-z7XhSE~Ui$P~x^s^RU>".wHHߌn&bn+E80Q^
*?=+d3rRX>aaӶ_ f%.cyK
.Z?>\%HpPORɄ5I,~Ùb OĚ[/?'oRM}RPDO~͗$FU4_>;ZB(6(+A"tlD)e䎃tiZmn0ؑUGbfFQ4OϫBa6YFV'/*hs*4Yadb^˛ekEdoT!8ryϢߜ	$`J52X
#*y>˲H2Ag-vLCsUyg;+ ۼgS~DyT}A&	^"{r,,pr0_=Y3B:`|J#yk s"YIq~zSF
#9وA`6fb5a3G(ڀxP`:,M@D,(Q'!ZJ
[
?Fb W6v䄼t5]!,;/kO8)
# V*~c$ƞFbq{-~!{qd],Qzb9i+>s*czeH8$AdYWdR*V#FUg2yu	9,WVI^?#-Ih=
B*MVBد)]¤<Oz72ia%lN]tO-SyyD=MՐݯ
shuRuKmrQ %hIhva}y
dsQn$F:P9wA{ѡ^R玊,7  pK-vBD8.Y+P7?)DˠjzN(k|r-3<sXΧe&\a'Oao<RN`-G%!릋̕YmT0hܑGQMf-§v	֌ MwOǿӿOm$
:&W
nXn&Ǹ:Eqc0a|t[a\*շ@\'H]6LG;%S]cA-L#366X0VlD^wlus7@M~E&ӄdkg$Җwѥ֯f/?[$\V(O͛+?*g*f#
%K3u{$N?
m	$|Ab?%Vn NK />
'W!!
 
|Aꮥ/k[m|ToK{/xJ(Of;HNdfLч@2Xd;nRHuXYBC%griQ-w>!(ZhMVs}AJ4PnEhmXeB9Z1^k/a|g[Ȩl](AvɉfA3on,6fRHxP˩Wƒ}BAHO^6v|&Elӫ䘏&BJ˛LQB&ciJm9[pGM@97>-U
]D".焙W/c`kdcu|N[Xl	t<ۗ݁^ƾT&Jvso2Rћd/jJKx#.ޓxqܵcT p#Ha}JA71[h+0t(K;$qf1Qj#L,6r(v
;x"e"{Td4_!Nn_sPb//9@Y7YM#JzG2a=IOWj&2/Dgu|cA%}bM	@5}o76^F='aJVF^,EI Â<0oxMɦZ`LQoQ/KfO DxU>SG(btU`C7	h{αpHt-}
hE$U17mWb5
a؄b;XzT̉s{3wME\:nMoWpDˍ J@g?}HNϳ S=cE<96]==EE'Ƀ<QtY}JȜ^>2livt0y-˨5G; T[,3Y|0 x1vjbtx4=i:=ưԴa8je؄A[TH
V\+4${!̟Q 'r3\Tbmn\բ҇m2[)d4bol
k9Õxm>_q,zR}E;ƦP8fHGөblIE!^y:x.fK qXqWYf{v1}kk"}#W|<cZ}VfC.	U68y#lY<hm 'p.CZ{-eb;h0s	edit %N)RZTF\ڷ^.ſIg`nL
^""GوFpaXk#ggLJx~<8QӝcYaF
RLdqw\Z(&`JV+_DsӚ'aJK`,0G>	ݔA&:IdAE0oay3z%<8EO/kP0U|`%ʆƲ]ԕJ+C5M3Y`<?2}dgx>/"ky+[1<4*(jpE:uC0,nV`"hyf`,fGVZViWFmLZUe9 x(+§R%QrcEݍV/(Sj}
[8{P8ךG>Lj1x=`Ј
@~|3=LR41޸ڍ&O0;ܽB$+:+m;'tSo%5Gގ`+=d'U'[H=zv^vq!΍Ne	r*7cc3h+G"e@o*XXF7W/ÚY1U7&W4 nQD<`?ҵ6"kˑV
vLcA&k^f|HԑNsA& 2a=l@9*+.klTfsuPr8AJ&;PiЦl}$rre1)w1u˨t;Ffd/Pw:肶ݨ"WeVvDY."
a;Vva_?d0S.*
ꌘk
OަlDUAޭ1b[8*M
pb28-\ĭ:LFL&o4mgу B^2`#mC37.+;b+pMN߯ϓY4պEB'3L ᝔~3VS?ЊqC3ӂ7mEN|igupm1mHZIyr9rX#9m8B'i)h|DO=\ӑ+`2Til_.#u0UumT1*n>Zڷnp<9,73cJsfxf13ڹ6
[T_ߥxgJ7n3RI=^6$j.EdytL?d/{/
ALv]OAY!VOQl: c\u* b/qh4*~Ϣ^w0^KȌ4.ߋnÔ:cj
PNnʴʑ(SհKmXK}&䴁}X->/V90CIUrLJ{(	b{!W32@B|eǺj%:̻3<T6Bd5b{ዒq9eo|0b57
'=̙\Em3*oILB<"d
/f^p^0̮x%KG<TVA?_Ӎ#)x6uFلlvDcaĊ=&pz\%)no9Q <A-DW gsR)5;]ڇ@AY<1W|V_OfQb'&AgEKk_OQۈQd꺥F6[,B#6eZISJTȡ(stăp

rpe^d[+^܃h}+NXPH{rAIQiֆt0܇Qy(X.
uA(&0ɧ}k㹽uϔ`a.`[wQej&ĀL"cEVx%pSK* 4EY%ii#*<L3Y&!ZI
lϚj^ڱb3v1 "7$V!yTM+fD[.؆A5#l<{ƊUl>]fpW|
K=1C4P	J(@'<gև)Q$MY]l+wٳ8՞Zx&w}_
Ϊǚ*[;	'2X\|mY\o0|"#nėdHKKNl`,-V:w[!:k8TY
x޶L=7{]R	AETdlI0{B4M+"z)!~Wet.l
z	a&>{X7z/"`PL3ƕaYy-E7>e&"5gN"2IdDzp}(|aE)+BGq+7P*ZgxnMm%PEj4kfJA$F^%aZ*0"a"+]$^miSM}xfQye}<>z!%0^,Do| WS\+^`,9SpYÇ&{H2SLH9\ZFzQ9t
Jl2Sʅul̑jq7Ɔqfjsh'gEr^u<MuCMk.mdLpm#dŘ=ҡHYpyJ>2j+<ul/1Dh(4pl=[㤫=8sg#)ri+L&2'FOWɧf\tQ젾69Zb2-0D_ވxOFPkfZpC}mX_\I1U8
DFa_Zrt2lRA?h<g뻻K[݄CF7dvUx?A֤BWr*}˜Sd$dIET"3°۝䑏~L3ɕkiN%یzZ<
Ohi6KG&/|
A9[nk`18.+@[6@ځ¬3UxSz\H$6
<]/؁W8!%K^(2EF (s(<h;.N%EbiXiVMj'S 7v"QPh▮&
q~{/tL0Tx*s<Q<
>:3mqJaʱXޅal#"09#rf!l?.TwR9x>yy\^h#C;AbUh6d#N2඼`;fކ	%.beD͉WTPi=ōl:|TL0hL*a 0E7.[00񼦢;{(2&}Qj<,mha45Pض R=/4q`-4Ed/Bu_uP4
/Õ,$1/+bTӋgB6`|0D[f,IC%qHq@]Ouj# LD*s%*,o^>^	M-
LGKd'j` Orh#^FF4,4Qhl"c,+3Oq&
bk&#;K)<A2ud:Ka!\DXmW{0qQ{tm&Oy@Ӭ${7}RNV4Z87 ͔2wPUW+t_Rh۷в[OR'9WYbA7e	 wl<3l673 UØɖ ]fhs(zI퍻I'<3, kPM
2-Wּ'	գaF<MgtYg8r;m%T&Deax!
,2#urEX޸"TS&Շ@ѧEYWgwKA+h@颃eV'n+^PqloSk|Гr-Pq.iG(<^ݺFǞjy瘈k-6 ȴkmgҲ`
Ѳ2lTaP~dȒ-)ѮuVmmeOWU^R(z/:\(YU,RͽC2t2rÔl'MMr\ {4fJJTˋp%9zSV|Ҙ4YRf7nX@H{q2rѯEb
 j*K<Ghk%MElȥkm
[y2ߠ䬋+J昂EX
hwnTU~c=I|NEײSy@J'|P_n'Rm>>lT
޸vpu|XUDɝ̇i'J(!	ޛQF
'+C?ȰW2xDQ~ڷl8aed^fcOD*Z;׍Q1{2	bFKLxG6Tiye;12 Ls "I)&c]"tF`qQӑ/f-d GQޅ!eR,<&#;aٗ5nDO
6#3HcO &f75\&\'uvxFU^o@WA?^} V
*iqg
8JCs{ '[,&`ޒVf\ƙ1`DØ=+##PU/p=DvxaV8*3\JDMSӑFܣo]>M<_NIP6z߿DOr3.@0pnGY6(RJp5Sg?%'%vcVoވfj\38߬ >J޼~1/5bګx;2Œ.xQobO-5 *nRi?<ۖu[%qffEfNdctP",ȃU3ۡJ"_ʚ̣/@ap
me[r=ނKR eq|g||.l`9d
뛺?{֫PQDP%L7:a2D˓<rR%~)0.`!̃kQ6T:kY>stXYHCҨqmOu#ɴ?[e395G8֜ENqopZ	C^B@ 
KES&pLم籘)i\f&1Zd*#(c2"Q3<m2ߗ̲-zS>Q}͆o~B.3zv]8ű`&;4$Id"n1Gksޮk`Φ`HR"`Ai b(z4xLx!'Hq	Il>18ZKƎtsK*fz2I[{< 4BD`z(bu	#"KkxB-OkLi	DY)2Z !22؜l@
`F;ux&HFPhQ*[A<<#[J! 
.NM6HQ SyjdKJT\afêfA1С5d3hԇ5D$jALݝ5_DN_(9M8ܥͨ=Bq~m#N{g[Ȅ7@*Ip8
bB\@	@?Y2	ҵ?oIBBgUxnM6OޥKE:ܖ0H^1֍XX&U`(d7#doI_ g`+l3.#<6Cgt#$	*m2	ҙ
"cDhl`ø>O'yG}h1zF*;Z=~o,[9!2S^ƂfRy6~FAu%^ژse.mum!u$݋ng5,c ?0U&s]#DOݹ̊y)V£"Ȝ09\[GÉB#z2GYIl%;44.m9#/>؏@eX1	94DY'Ig+&37FIbwKl%t.}.,	IyxDm
` OY^ԏB:3&YV;-P2YA`P U,{Z8S1ܭoA~XBʁTqWW඾6>$*NO͋yVQ@έ-f
ֲ5TP87C 9/_+2]YemZή9 b綀=6TLW|ъ:+AҞ3RV#3H)A+(OCǭɹÅE8=j#mT9O 
Ձ5oLC;!#]/@m	{BZ8L=̾y>sCțB{ ;b Rx㳜nGs<lY%ހ8|
P8,
M	V@M:fsZ$A /6gRz%~,a56M^z-f5hcZt&Lp1;XxpWp%G7Ch)4i Vc2L{2Xgb.{X9r#M+GnJ-&Zd0y<}q`4li	AÕZLkBlaݽ\-斮[fg;-5Bn3$h/ԑG¡]Duu ]$@/xQY&I4tTt_'}XL|cg1M-kQ`'Lu:BPr(g]pQZLh>'ʁ?ve~Yhu=5F隆	BLʰ 0*e~\eC1l8EyӷVwa*`@xRf;ެ	Deu]Ⱥ:!>"1ǅySe`ؖb0YLWKM:=1WYELqZe|W9:CH)rr*x!UWVhkW+C}R+Cl
Du7YV)~h[L
Z'9+ŶoO4`{SxJ׺0j6u	bd~gvT¦VFںTђ"aD޲o{-F*򁶗]y%a9J,&o=ZcO/SgkY>Chc@@H4 !1{/'	!dFw90[	 
,_V]XD(Hd9ʛn+d;F
[`Iq4ޅɫo
xNJ0)C`l'qX@K#@lV1.DPQ4(S''Ug@0ff$ShôK=BLN^Vb#^/jpDEp^癹b^F0X%Q"xC%.f7L42L6ֶ.Va.¹`&hC-)7xiv	ICL*cDp
{L8P: TR1nvo>I^uqGT'r8	McC|ͱ'66Qu)Yjj3'-v02D1ge:MS|=)	?>YUPσ<B8.Z*3r@y& SE&)
!h{LK-scǰmڕE:$$g$=OGЕ<;­:P(`	je%&LԼŷc @ɼm3pϾ,z44񳩩Q2t? )/Z@{K=
\|1]AQ#9v5-1a_
;Aq8Hɼ,IRhuׅy2㴿Ⰽ$?Xz!	xeda䩬h03Sֲ Tt"ZZPbj} TtQ34YcP1WC,A {
*`Wc-)
qǼƅ41t)q]xg/jdTdA;fv0'
+ۖ]
=	ݯ , 6aᜑ';߿\
O#s̾#6მSԭhDsA]`enYt	MC1޷
i'}znfFm]/)/RX6l_kA{soJ֛ߢK|bN@t{dkt=:6L1v择E+.S] OiZSeb0ȡ[l#SI#yȺ;4Rh7&,}; (wpin\Ipl)QqozÅ#+V0`U82 DO<qLpVsMt7Pe[Y+(rɅox[j[yL>bX)'F
J QY6VFUtFi
߳'s4-ZKy@__9jS7N
W[=(s$//7FY.C]}}T[)A+l*;d~zhw=6(OWiv0ǌ3of<;{[GBdBMq 'B2{$2f5Ӽw Q{$3*|dii-5wԺ/j;6QѢ]:q
2tR˛+R In&oiv2tW!<6:{%?M
GE2gHL)D4'}6a:MD:adM
#vƃFw4*:]ϥ`
'[L9S;zOE"zfh?fH?||l!fPJ-g7q8Bmz8D@NEב5=TJXVihJ'=26nQI;3ދ8v;,I% {6{s Oiy,Ħ,<ʧvdWzcX1ހ34	ۼ|DMTPU9kev1MK/^ih\?U+/W+]mر6dr/'cK \`!_:xR"QF$h드o׳|TpH`ol,WbyԖa0w$AvpԳ(5?,bKդoC&c9hA9p]V'Y$F Rhq6pD'VƝ][qjݨ'	vq('Қ$骙b3;*D$r͠<Rz.DI3}m鑣+Ÿ)p:@<]6댔Z0<`JDKDăLt!2UENRg)(ַyO. %1BEC&V!A8\
T8ࢴ5qtLm|#0.Շ8#ڑJo4zbYȖ͔v.rȒMu{+ZydlD0U+|(ԙKYH=Ƀ;+ 1xqe{*13DX6k
lgybPNlgvTRi.ȠWOzu^uYyCfԼdx:$Jd$B>Cl0{:u|Hc`,ڋEک6
PtJ $e+!@Vf5ޤC^(  0$
j5!Ο@FExe{*k!v.K(nfg\qkepI 鉰0 t	Ӝ5ś1~-2cЊ'8}-!lёW;ySZ>@rn uIl]'-ޖiA9Sr~hJ|8F? HGi,]a^zJStZ.IZк6M<Ɓml(4;2N0XOBpt*@wt j"q@༞DJ/:yR
8Du%pD=LkmEyUN7Q dؤaG2Q$hb%@7jMNAk=<O94{DN
#^!֍Y.!6Vk!G9
!1RyZtmHGa5຀FiԆGԤ\bfVQѷCۺIUϬPUB/-j(ɽtsꔬ]h3rDqv-k3Ь%!A)XY6ya/M=.\NB8IvvmH^2iX
L"02@%8è<ł}U.VŃBtS{cb
+:N7f9[Њi1kwc9rƃ_8hu:xU'b,#fP]b.Au]ʋYG.Ql*dJ7ˌKTc0֦Ɡ`{C~Tp<guۈFK2La&%O
 &XD.đrx,:w,2q{)s~̒Qoe=͆z[Oa}>k65丁NXvxR_/L#zJI)@`L*a{ҀkLq!$hMWE98Dyvt,gKaW_!M6L7شl2hRBgK4
ޣJ
J#ʇ%kp	܈.fs;>]|R8#T``
eq-h ա
	up`7>zk,Kx>[FVNٙ{sf,ߎm1$,~!_ayTpmR9SbB+N T=]X

2I憪 pBYk6'Ӹ&.ޟVB f^d] 6mdih7:Ng$qAlD֓a#r,
`&Ψn#}W-vm	نO#0pt%a5䌔R;DB=8YkT
+-a>&olXqLW1*JUf.6R"SzbKhܠ9]ߑ$R9&zH]TV*JRQMNqC7^pC5JW!lbL.`9VdW򅼍P$Īр86ȜYn NuSYN=){3xOKM6T/" %dxW3uy2] lmvluS>C_LD25y6Jt-KDY򺶼Bgi.HT	pRvJ߿lslrp}Ӓ^rn|Ob-hG7@wn#d:>7E=y(3e"	'|kls2ېќ64Ajotfxn3
ɬaKif
MDJ4
pޓ/*lx*Vp/'n0-qe =R#M4]^۲ILp݋FUZp`Aᕔ1bF7(2/V[9
]Jfd:,Y+Gѡ^~Bh-sg.PARKP*vw@{`S'P-`0FIUvJȾ|:H_῁[SLЍn(Dd!oMCnf rQҚo,#&vMLlZ&:.)PtcE"*KIcZR0<nɱK$T10ߝ$QZF4殁\H|+%,fIp"_;*F!r]+x6bYBـ8l
Gq[3h8:qa)G ^$$]6VO&bI'
F艅4Qr'#kLI6)2#˼]$hhXd`2pڙG&Sx:GQ:0_wTB-LDufzZ'bxbΰ/p1
*CN&Αsѓ5X}sϱԈN:3^/{y&p$(0K_,(Fs2$^<7t!Du҄gR ok[	=x戢v],aѽ|?uy)3ϗ6{s{<RV@?WLq[xD%ktmE UFmvrA<h1Iפּ~0"q,j#K:;,7-j6{RFXvt2AΠRk)p໷hmF
jTqdwiIUVEPvb~2Be12#t
OCxeLHD~
,5~kG.cqz<H*g=yqVq1gb~B19 M:quIP;RpK[K휁JQve!= qDUUpbgT,b%.b0	j:-@fd[1Re<vpڅxQkּzEj	b2I5hJ$So͑)ͮǧBʉ[;)*2aPLh{oq&rFT /G]:Lʝ~sܘLO;I&)~!;b#ˆPg)ͲEfXU	sF{KF&$Wq*,)	C[EGDa*G"6{,4;$CkJF# ·@-ڊÁ	Eu%J1*(}*94"66}ݢԥYPL@A;~ v`[Ҁn(zNa2"&lcLz`cCW,`$lZ惀^tI
 izyS>tsy&KeںJL3f;{j1
Tol-izQNJ|5J²ޯrfvhgc(~28tn0$uR[۝qDomXD5iiV)CB 	]g5\0+0ؘa*ƹ/uaV1/f@B6FeoFt_)AcȨrKHfv3K4a Kb$CuZ[mFm0,f b"3 :H_SH4K@-ލ	V4akĄ@Ӛ5 {.P%T	>`+UOQ7V](3]#:L=̰:'\3pC`}3䲝TY	8uUbzWi4; **&)Ec^`NyǲzcSؒVa{v8W8Br;4 41xYFpN
NתwMd4EDd``I&% ,(Tbj,oгјpo8KgQswvYFFML̉Y)F0GPd*bz|ٰX {;Ea1=Wh& R/!@n?FZ=KWVw-d>B;IM5'U,=0Rx+h:
3`5`U~x xO3{$sՙ<d.w:H(=, LI[(b8z40):`5ɨԉo,oUA#o` %T$c%n̽VcV&NVL^ME$2iSVEr'B|YA{4ߔ
H"+w"inI3=Ά{PTA,Mx,Zm?qZqy^Hy)#5$p/AIh *\!(3clfU,! +%,R9O|}#aK%	@@WűaX%v`/~bB 
Q_t}ң(>gc$Y</]hiB6IKzyF^1q(ݴlČS4[,c@O0$8ʃF
Ҕ,	7;+
,dD*S^РGЪbNVڏ}N'Ki-gsbp@MiQּJܙB-pc#9q
?4eU%py1i83*09@Nya D`C<Xo.ot0OT:$]тTNZtVSMYEFHD`F#[f lO;a;8W^	_!ZmXH3iDƤ<x?H*3,BPJa,PE=$T=Eby^?.dIou{2	K SY6@Vy2?wx.LK4mqI/Jܶe|}|`&9L驃]n\ƫ=[Z|Ԏ-;CEQw0$5UvbyvLĂhw`gE/5Q@Y(H^[EL5v۠E;B3 rHP4RM]M#@kN*]^ 0k&tSXڍ=ϥƑUhR*djǘe.H5muR{)&V`~HOwNY{c@	#0P8'{:VJ 6}bbDӋ)	AmrNEۏ
>wSvs@`>*ŀ,/hpֆh/i2N玮}e(K=C$П?j" \cvJa(C!C0\DݷǱ0Ǆ} ڝM\؉Ox$:G
WFI	!/ K Aghoڿ|	\@nPcWم
&JݲrXUC 2innzBZ~QGH<®>0K.)Gr	̈ofYDy@eѐ?9|Fb v8$zk;غι:LA#4SB% kZ*C- F
vSh%
ēh.5UTFFL,\IZ$7YX1;}X^jތ"\r$)42	jP9FvxgLO|ʠ d`pLxl$ip1[
+[G4*7U-+G4z]Yy:
,l͙x]OU$6د6"Bօ)0]0:݋$(OGbiiFҝC(^DxI=` 3QRfh
l$[`B=w-<4SJ	(-UHzg?.~ɍy+6h\EŘYThKfS/Ta,ғeGԴe:MMuh[)ZLCV:1)]n(nx{G{:t)/
*sGJJ2$(g3kvA^
OP/ٙp >w.{_~REyTyKNr(2m7*
EԄKWri
Vg6\$<@\"{oqlN4	B?ln)jSSg/zMӲG2ȃ?|^xݱ`zSuI68 ϮeI둙%6 X*y2ߵg,AXx&Ra@3,ùNg.V5YlL}^L3I7Z;!1J4n
ȐY^gFI?)hrǚ*f"̉.E.r\]Q4T9 L|`
84FѴʢ:\=Xarsw<hFǢؾeބmTOS1r\U0t&+!eԞvtcgvb*GE}ʁTيy굍F{;H
V$ҹozTlC+hq/xL7EI7UEOVfJZh}4п0ɗtj;.R |Lߜ̸0h3Hy8؅>k梠[(BJ'nTF=
XNA] y2e2#q:C#z~SrkdD<9kHFVKBp$`I$tlcRDQ
Wd=䒅M3/J|:j3N
v%}4ӽ6n"u9j"Դ 	Ƕu^
e ]Pي\r"t(Q
jbHD0Pf>Xy;=6Zz-).l_Wjl;*39_цyoʔoQo[Tm򶾭DƤ"44+Oɱ\(u^F54"%P\x:4ʑq'X;XZX6R.!Seh-3i2̪hT/E/IiYe){"˗x9J9LŏZL,=.-˃0]`C0Mݶ*4( d3e?OC~!o0U[1"lh4/f&燯	h0~D.)ESQӅi@(o(ap<>Z+oK}|/لքq?%[6 {W
u^*le'JGW`jbA &p/sTDNjׁ@CN䠴	zBi#Pw+n:bXerF&~/֋R	$WL<Yüڐ&.`nEogyɭ%*^KޓD2^<F4
QE	L_˦a)߃Dz@97QY2Dr`$
d8pf$BE1-;R!g8NtalqQf.kHBaK3ѕ4faEƴѾXc֍_+T2,eA憭"i}H4Q.ӀjwRx^WyуC9Є>!ۖ:,+hx]*)xTzEtpa]<A$a(ײiV~J2p#4nNb0xúҎeNx*tTpWO(y
!:܋ExoplvEjH*%s
zЉ_/Ц4SUg~xr4 UʰN~Ε-Mc^w_7 sJ`H4#_
Q}nw7oF7Cyo%t4*&áܝ9YFF*Z5deSVT+ertwC2p7h,
[ ȴuخo4QعUc	BWQP3L7!_.m{x.ey@XTn BcsN /é /*"n^`wF@]˯d2, {4݅GS`ַ) %
ɘ*AR%7Ѯ]b?U	ʹAi/Xe&+kg!\%κA6X: [9B23ʚ/D! "JpN*,+hCaȐ1#n*$.|3s!W2Hgfaf1{'au 9ߌf↙LکـbK
n
/KEcVaL,|Բ~`pR~?\
xxF
2bЙ*hum[nݘOtژ*Rd[_D.kp/J:l[,>RP0fD
 +,4ñt :ee!$$<-L|h/3RL?tZcdcZO9$_6PwLI!ac.Wdu
bDy7'# IDz֋Q;@]02v3ЅDNPQ'
%tRs[IIyQG@0^+Tcaw!W
2sn
r8pTL$"uUQ%oIV2z27łd|ZaU^$0RmrOztp-TbQ˟Tfٔ_7g$R?U9;Pwo_QRE9ad1<cЋ9KGTf!AtQunE,U*VJ3\V0l@Z^Y "&1ӫFS/؝"j6*˄.Dʚ_L=q|R(9;%\/6JN7Oiwp
o&isE
fRR!B2skeeJZZ9'`{[кx:_*f\XĘe~ڄ@+?2]`G<ie8:9.Mh-A.˗̱KXsI0/J=Ŕdsfm;
ye$|a=2b
Ih{EB]8-uF2al<FDGr-+;FrfӀMmq!x/RD_یgÁ[n7a+>2 z/!+ΘʅOHưڝļTy]ژ{'-Yϱ~`#+{H^Ő9~<*g3[pk\VJZ8"W/
##JY	FUə+ubWrP5
LʍsFTIX4z|S/SD;0,En=
&ˆ(@<;ilLؚ짒R5Te7/?Dje+`؍vN#j'<:څƮPY
^P+3IWrYO4).[LQ&z-cO\ڔN2 9Q酇v
t8heKiuٯcB[8-=/
/z!Qb
f .
'SQ`<²FsfXH,["J5gMUd\f-6
<TGIWK%@	taaYd@M;R~ZSfחQv95X;p\xs1cYJerDIA*"6͍|!	 u}M>99#T=6/vI<WqKyd6dtS( !7`Ʈ`f-O+^|m(dBe*>+?׋(FH*"g{Qg߸D`JZ?-+QdIaTpec1BYZ5OnfzES](UduǑ&A[`{E]>JBM2Tq
U`=i|jpxbe~K(m+cEKӶ
mPy+W2^SwB:06t\QDtYdϵ,wmoF%&B](Τf=\yk/Z79w4Eq& ~R(LDB3qjcY=OSDdr]A\EÿY:~ZL0?a}>LI4+N,fAU)pI]_0 .oY5ʻi<0OOբ*tЫ#(@:N@(Ov6A|멐5 b<+`E2D֔X؂M`q J([y@汵{[aΆBf4NBa#yl~D#!X1K8%$HS "r|b@`ڐi7@-,PJl2sV2Cr|!aS@3KEdfdƅ(I׍MTX6gZg*Uy\Xm|Dz+3҅Us}L4-Z #@w1  QTnӆBiPLKn]
T ,Iji_dCe+HfU'ÉDg%iR%<kWx#a+RwZJx\5Ι@EBd(%@v@gO<"Qd2R\$lCdk
*V].-,bLPϑK9J5?OHOlHPR\JU>L#
Wmy,
*[DLN ]@G2K	cbK63b%*]?1C!0]r-'OTK<XU"
wkda$2
1d32tksa;\AHF(_^	pJ&; ѕeP[jŇ'6m#
J6"-yK!RuH	VE51(IYiv%.:&Yv$I٬ǥ!r]HvL>}JjʉS<M*ChBHK<j盁%F鹊ZFߒ$Hd7P/M,Ǣu,3B5Ptpr!zjD/-dG|(c
"9E!,U϶&qub +	}\#bfBdh
@ر]	~Pah%^^
@gSG-WB-'/c.o*_d8QI"yt/y^.BMhUi	"y[lOk&ՅauBN9
H;Bl4Ve1B	kmB¡ӛIèߍи08|$^0ý"ɠi"oE'	B_ʝ:2W))ZAKE{2wt
a	^57*[]OH$o4VCŦ:Ks^i_7
λKpɉ2
p?`l7簣
;/<ɃXk:FlHwJVaڼ)5aru3Z44Xzb#e5Q4UyɷYL7Aph
XASx_ь)ۑYRt	Ȣ1LNʙ
63|2- Fv`AaɯQXT(5h&NFm<|1)bBIdR0?{UdB^^kxx}C3l}9_ɛ Fh-JS4iC9ϑq$s}daN/]3Xb>K8A<QQ06&M`@!|XNZriJ䓯Fr2t8F,bm{ƪ;EA{4\lNqC *Xx_B9G@Ixw>9("LԲH[Yxfqom,7ٟY)&;_V6pW.׶`z΃PMưĢ2gt  +[!Fx,]_\W7U87&N^~VuCXRg"ˎؾ5ֲ̙2hwxEgH>9yԙ(4xMO
	ʱ|q4nn 8L+z
`cS+altE"B{Ҹ&Vd^/bѿfzUmP:S/9eXdνx6cspՆf9/?-*jTstc_vTvCSJ㮚czTk}(u4C1p@	{~plYT^iqhUM)5NZ.;*uTb9dS0qkf:֘x̅S,b)</dͧtݍ꒨(GmE $0Y@/@P>N@<KE;fy2߈C
s\z %FHܡ1OUƍGeʢfΛHL+/UA	LɎ@4H@'[):CFҬTQL;x kIaZ@m-|q`E"p( ^y~$f'զHeDcLW<s*FG+ u4{W\j!2h-w6#9Wbo"
|iUj/-<I^31KYGTB(=IbkV+\O`#GY@x3+ɾ+)J=B8;
.3J-5%+§[P=$π=Sl%!],.yo%]|b;+.S8DFX5ZloiV7ҰgT0O4!H+޲*BqKeVW?P0C:׶u.)&D(ؠfɏytaGJlRt#flJ[NFrb
5ºORf
,-MJ!M!ViO\93-ձԤ+shȗ IӨn3`̈ʴɯ|6((Ӟ"vhxn,m3yUqG5P_xV
c},$}a;K
wn0	H"s(3HVl%$a.F芻-xKW)a:4IC`x]Z:cm1TYRQ'k_PmV,^412}PeMaD㭼DR	fCs%)w[sᱸ/
ٱPԇQ$0|)sȭDSDvZwZC,ē3M 31<Y']0cEXќO܊4sSKո5 %.kpVN`aQp.?+7	Wt=!]BV ,mѨDpB6Am`^)_{j8Luvl7hVӶfE*h-fpIɂ퀧S|S(WBEUEw쟞j(QqA=i[ +)%Xi*s$S.bY%+T2
n(.:fSŽeX
z Jɽo5_C{oVG:W!$rW@Xy{+PH/Hh:|bɢ`o7
W	rY^[G~3M5)|!XRBoW RV rKU%~#ZwLraӡ_5}\ˆ{bb^\>2pUo?j}/5z8/?a門 w,ϊF*\vH(FrP?VF[Ƿl膈Юfj)0S|mbYTB&.5Ng|JPLe2wGl2ɥ36x{u"rG̗i5X"w!:YgH6ȍ2)?I)ą(UNcx+x*ݖH2B;.>%{&
it1Z{A D":|r~G5Zv d+>#ޫi%Nj2Z3_-oEuғ+W-o9sX.Ii5o$£KWi4`ulh
%aKyjRx+7luɮP?O%<X\-UݷdƼճp` rtyl2TI,|sC)A26m@fu8`'[~Q&dD?J5c~f9+	&;`8\4
@;&ڒ-)(D~[G{٨F
[`9:;7Qz5ά6bD\oH8 88{
b[
MfmUSDiNr*Ic҃&
⊛ƱtS+s$М6#A,/vw\R 3<vՈ
ⴿ`-Ŵ)\B9-@9Х$ ?˜l+#CZKćNv`NL7f1:u$mIJ]J fS !>bmEAA#ԅuT
Fվ֯q+jP
Ur6F9[m~2K0Ooy̀Gxcf?Z ,A2߂3WV 3|S+s%Đ"MpwdVfȨ*HO'ݴ t;uШ+-}l[~&(88@UkD!˙3mJPN&
jÈa ?$;gЌ1PԺS%貓xM3~XMô\!=`'Cɯ)8BA8X^p"5\n5kҩP
MYM=:ԃ7͆0rz/;
It!܊2*)ɄDcLtLư0F	yQbehI*Ђ^3,zo6K(t8m>/G4dYYWgxm33G5
F^or2Y)"9&<q<f75!Qfrd>|I3\4xY0WT=o2g$a#~[y~R
c	8<)=DvEe1*0ӒlF夹HWf2&%z' h^ӣIٸ
Ngi4la
*A
yj{BUy&ʫxm퀓e1n,J+2>+"eIz
j*M%k'4Фb>+vRD$񕗨8$	1ܤ^ݗV\("mn>K	R"qo3b0!w"63?􌭂ZuZu0S(Ҳ)
@&&3W0$g"r$9Mw(?
#Hbp7Wѱc,0}{@&mcDsq*︒ttj%AD
3yCr]#]GZx_:D~wh4pL^>;j^Y#($nzy:/e.gf$fʸ)83OQ=oc?Hi=C%pWH,ѓ.䵙w/oΥ5`1 ;%8:mk3)9_fZxLy)*
x-<7]'dDByg3h1^S9.EC34r xܼXϩu,85^p3ءmHĕyX~7rU"	TSlł'2;
ͳ)[eTcL}Ug~Yxw2tx
`YO7&,W&%4߿V
*,h6DQ(Xtb]B+^r1&
iqASuon:	_T<FiWm
]َS0
4FԦ7UsW)X.uja},Qf+H<y~p$oeS]M=X̺G{yf"B|(O<mU>|mK TsQ$F^Z\'l+wlBW_UFmI(9=Ř:4dWݭ7^@髕%%ov܇Q`FGUu8+Ug#)㥈cu*nce'>Ǘɡrܿw߆棯Q`2D$toWy
8IUs!w9J#62EsKLrhH8=FwȦh
b,'O`vE=ڵa78Bi{[䗗Qޛ52Ů'ЋÂ0
Hi-x~+/ew,j*qEM9EjMmVV3&nU&x%Hkxˑ9b_tHf}FICSX'mH>Z#\$~0њH5[y]<FkB"KƦ2O!F&6zH	!rE˽J,Lٹ[X[<=4 (Tcof4}w+0Bh3"IS)*1N0<ӏ]j^Ʊ?m[=?epQY-R$÷Lo{OvF:kdvȑA3
P7WdCAff&r<
I^gBy/]egN'`Ƴ:+|*AMhH3 hEԛaZIK7]E	qݜC#ŤoJ5)ZkDەW|Up«$\I0S"X숤ڢq?h0wȔ!+ Owiq"/6fpf$ЊcHή&.b1Mbo)\7&.R0:=YxQLt1VOqu+PF!\Y䑵2^=[XpiȬũ;gHGjQ #_xUZ_1NY
;<iVމ<j%9zTJx䁒 	4)wv8:bc_G E.&͝eJ4sDڿ_e7gO5o'z Jmw"k,j8"
KW~/<^)rπn6ҵ9M;vj[l-@q<-)P#Ӏ>Y7^P鲤hu=r5V%yai./D̃A)woOhqx`^9LI(<`WB7A)-	1xqyK
B.A6TyT
m|1車sX;<-c;H..R%^n
ActxDcd/5{	t!xClmxc]r."
HL#D}h2P'ռ62C%CNJR)H=5+d*T:A/dz_<kPЉGsVN3TͫUQp<zZ^x4K>Uyӛewm\1S@XjOckn`Q\Āfjy1NB%*ȫBw^
E>7%j^h˨p+^OS=ZŲ1r&N^9wIf~_A״-bq_&bL2h`&!e}bݬ)ㆎ*qQ<32,(ms1>G"ZwpW>Eҍ

gy1v"K{n5Z22TLH(3ܫ+ >TG-S@AL/Eg-$[Ǣ'0	L:w1 J"Yfhe(1:6R<*y>mz!+V,cn}ղ>rsgakͬ7|]"tolU9&]An_bL,Aŭ>3nN?x،f=ۦyC=v;Ӊ6s*Ͼ+ߑ.xJeכ!ϵԪBw&BR҇egIv_CQrl
sLɗ=9&#5@Pc7}\li/D"s6
1snCFrY-eQf	K\R}-7o	rq+q
tYKIxÈI_[
l8ә٫%Jx93y)rp5Xesz6j=`d"@-+P:*v :R5? 1xGS2xĹ-iqlwW[i/Z0ۺ؀Ec
2$Sv<a{B{p:memB`a=\w۴@oT7@,(1" Zx6)ƲÆ0PKQzBx7ڰ_L3[0=et#
uU
$p9s:"ʊ-Ѣ":ܭKx/Oq$
&N		qbő?'𶠩02A'ҳ5vgӳ<nA}=YtP:=--"+Bze-7K!<)bԀ$e$Ecቨ.4CeQ. szoo#xHU `n AgAVߤE!K:'b
ev >H
[Gfll
CfOA1V'?Qd1,813g42Bټ'G/f`!x+7q#b 
 Ԍ*sDC1Zܤ	@wd2/e\!u7/+foK-Vbu5؋94-()?%RtA	 Ŷ,%(iި y`H-Y,,};Ztue٦Dı3@+ڂ2*lH(HU@	b@]^R>K?GE/'1eCrM:_j}z nc2qn&30
eȉf]q-g%ETG:QwgŁs2Շ*18anz b_::LjiwsKzHef:OIQFXhWrZzݺnShXj,SlW1s e_Z"}ygH&Mp}J7fiFl=~t(=LR{1`lKEh%*LR)LKL53ʶS¼;`OȆSx%#rx(*UPQ~8h:$g:/kJՅiG7
Dӂ ofi|>%Ɍ%ܔUc22<qF4f/}Ќq
3,}Yb|⫔`2<EfBYm'y 5x+킦rib/ ;
TA
9;J μ EZ<ϧr!	*-Ye%1^fMfA0\gAWF"5ƄL%~؅zpxEe5S]쁋Ilsh'^lD[l'SᆖC-j.gc ygɶN_nj(ءJ(jZ?XK#7wz,coMe8om7/E]_`xU-tG]TmG<gw0?ϚQS^ص9	;ׁU4'Raii$xHR30` ChMDk0zl
KcYj~51lp>۴.2nc`2IU!9\m&n/B~i<11E?VY/mFQ߫L9+$&)e@ʟCZQ1OX%i:`	i[]h[ǜeX43[IA0ݘ.Y #TBz)fL 
uz>bFIATgK&a-f\cj'UĀ.k{u~j_Y-L9z_&-ې}2ɓ@x5YPiҊǳֲȴJO;|+#ٺ]x:*9.OCSW$	gdӝ1k50bĕ&:l}.ڮ?^[@ѽ^VKP,pzR/+x%noR]MoE\ATY1nT~MS^ZcqhZVQap^'Hb8-3N)*6ωBH)
}7%k3\iۊ
KgR3Put,s}<:7F)ϟK3[E'	LzShB7i	-л!["s^1b_B#^~P**;	ϯ*FSϘ5LjfkR
Qtفz2N,KxU"8R,_fCOZ<
ĴMZ@42ХX={q8qImΐ|;y~h9YPziPw{f7dr20-.r
	*R9x'&(	LF_mqh{QpFQYRhfAS"lX,:tk(Hgremtgwvi*v߈7K+-J)No\tQ.VFNG_!yc$fJ3;^^ұ3L	yD_5t^n K_FgrX=vFd6x@LQtB>m,:JM<X*xړcEl$lQɆeL`wQw5 `:/cK[73垥@\(1G%&ސ	Awydl|ayFVǣ c!<И`h5Ke2S<9B1ynȁVI:(wn(iB^!Fk}2/pCBQQbP]"o$OB৚vz~SEeF1p?&e)4XgFꘒBR590Rm~65f3?<OM>}JrrREMkS:
h8'NUz[i:Np=Ț`|#7?!ZHɶ&t"*7sg)&5`&HlP}RI#qYk*z	>A/0;uޝw3*6J*7rZt eU^0$ҫR 9=sZa>`)BiQ xBҵA*rVwgz:2u8@txA0yFN_GolB `C^A`Ϫ_.87Clh;^SQFD(nH&2u}BZ
>69UuPfmlJD`C䉇*QzhF
k.%O,IFg]WCF@'T7Ȥ>8eMr`#"2+cAe hA^ŋ/O&x7/}c2!sδkZGZ`\#-^;}
Һ 0"W^9ږfu1uz [H"jG%F9rn=k*TR⸣t`и*wUs&Ľ@CM_s*H0{ i-,!T0&U3/-*[\^=O&]r
/y7)O>q|:P:Qz)5(5x<	Z4 3U2D'p;b>J:,kJC$љy`붢7I[_}#kڶ.WUqn5{r yb
TTb})9(08 x<Yy7y"
IsAT'r8"Zf _ ]gs8)7Z'VfxhhZٍiR:fhl?U4-⓳xF~C,g k`^TH2g-2?	?(|V_%"/`÷Ց-7<ota?ÕJ$2♬ō*(%WUY벹>'Tin&҄4\ȇR^}!5ix*ZUfT}Yǐ^%%"FMJ!
EWe{(?Ǔ(tcYUYE7iQGF!g>	xGŤBehgf'N@z|`ʜӹe_UГd]Gl
$ܘƃR`!48AN&O擬ƙa%S؝cjǁ}K 뚘;O~f)QˌjIi2Hl<!* $Kr;vƆ{U.Զ|zR&=G6| Y,ؘ>MR}ͻ;~ mE|2rܞ80.L
:PwZ;!epg`
'ȃuh k'	^/8@
C{TV*jT#/ڤ;Pk{zA%/ZR8KaDuh*2¡\ǓLJ2N`v	~<r*ipdLA?8cKߨd}
̯4
3%MSH<4u]z%8&SSgq=A[.MJx)֘?rpIG l b0,fęxFP5>VBG\pE]{:b~VZLiiTbfSRf>[7hвTe&ESZPX.ѱ:\"+UQ}ץizS5 % ?{Qw֮__߉] ]LЋLrRJ?YJJń%Y<ld,+[%z.cElJ!wIX0 S~w~;QzFثt,%Fʘ|&	}\8:*(&e󍫩`i&\36
QnI/kB %1:QLKOz{H1<զ]"}5(Pvu0uYt֌NPWRTe~QQC`b#c
 B%6HT	R,NwedW9Xao:͞Rsٳ)gȲl:bK|X.G,ɖzv59hWpYokOY<B;QD.eR.~h}7 E+l+`Y=ve|1wu&JaTn%篨.x,ު|?'M_W.NG%p/Q÷aؾ)1f&%gيu\6p?Έi<bSd*M_
'onS3W*`[8e8Jz=lD$@9_DјkmuuyPM4:q;E_V3o\ wAIze
PE*,)<#&  Ȃc=Pb0smE`W6#?'դPu{=!]< #x'e^KIp|8DFW۬;Ω4(c_	νI0^VV*':P{g9Kākv*+@C"ȕt QX:E 953!;ws#lnGt FzýudBq_,<ġ+kTT%?*MV5Q1qUGZ_+mLPzQLRQ4u%*CR|M~g
eenVc'g|5ֽfARwgK.m20j_zK$y #FI$?EӚʋ6k:u$>`<삻Y+@n';G!"S
)mA;L=6ʩeMEmnT7Yd6:D,#Bsf[H]|6nZt =T@2	&)-	37s-ޱ x
)4
'~<rЕshjZ2ЖCtJ~Ur%\Z )A@-/2-lM<Nbe<ƛo0*ZnkjA%_~vC/Ct!.=loHxrJ4^"55=}K*i7~O
.H
zƆv<g| <v:ZI-=l`*:gr.4,:}vec:y
3-m|eL }Rdf2+g>
(]3xEd<9PGQg7.:IOѝ[0&@&T垘	{	
jDx25mI|=LA5u~da"C:'c^^.YETAu6E`& TA,_!q0;w̦ H
3}yTd˸A+#q,n$=hX)#⃭J1L	.r˼;|`2s#kH9L0HN6K:RVH~m"ب.&i>3!2*:zHZ]0U
2tpy5qWRB?f469(
dSzVyw+=Bfo,|,?6+<&hՔ
/Sb=e6Dr8Йr)
kUtCbRqE'ׇHJ4d](E|Bz^[>,I_8?OŒ˰$r:[f0+P$E,^u |GY*ճz
Wx&xk[N򁩿/T?lp:,ݧCStt@e`L_PIv!Β[
myzX`0rqߡWOԆH8J1](4ZN u'lQ\hJ2Ѓb&H	mR{lȇhގhm'ƒwVdDijJe_Jޫ O@;r#k_Auejo~(aϑkQ^PQ'F#O{Q8c6kE	)u<MGUzA
m60Nw^x0+i؃l" Q)|X*Tᣞi\7\̦!!NzQC̌VYgSMG^2aݾV@&XVXFE6P6N?SzߠSg.X&_z`ˮ,x%9_k4LE4ޣ,l\2WҐ\~KAckVlbbA`pB:ʗטܔоA;*
pIu,o9Mv D%PQBizAQiISeTwf;94k:%mRB)gQsKLK{on> `٪(fg|V6H-
.SSc3vt3dӓv;S0(:Um8_\*rTgZA2{84
yJAp|g*	V_eh*+nNu;ftV~_re̜bpT QF>s/fB?Ah%HL͞y
뤈:¼aw!ߺWKEstwL6	8(K4奝l*_*@Oz4	7߆ŸMGnXiF܍>v`	I:H4{p'+!_/΅EKuG @
oI";foM|PJIIU(MCҳ7* 9W19o(SS
+T
RӰN:_+K9)tnQP\~Z
s:Meӑ/KB3WlO6ZXX_-ۊz7{
k6Mw[g@ %ۻnF|zo#['NwصopxǪ"j!]ÅUx'Ta.tx2?gk}xVCx07
%#l U0JQ)X.uEK8̸G_1]fJ%K +{OTwU WcǑs]L7 V]RxAP&B߄UHӲ^7q|%<Tr87uUkUdf%2ih)I=]dmU(Sz"DL$ʟ艖R2B9~7ch<75jL@($NP* Fig~ʏ.kc-U<*$dVI-\)BID
,
p
oձq\4*XyPG_@\ekٴNE>`~u`m v"W9rd>H.Mn*t^XBrdoh-MO,Irnw
?v\/d.0cI1ґA<lI @-dD#et3pǡj
bF7RThjC\ieI3bh3[!)ru8P]o#&Ć,GKc()h5w) rV7Կ g}_B;d;\"nSd̎ˈB8ҟ%bOW/:V0,
 2TFL6o"}7]ط #2Q'9cЀyp4:4~>qgHA#=J|S60qr
H+ϛ%
.#K'	:7,F/6s=Q,<8j[3棈TBhCTi +!"y7	 mVCj޸-xcH5Tq8nDtN>1;XG@vfѮ	"?X7P>'XoE3#?]v-nr-Y,} gmmf[ھ<uG[]
wՁyޞy,TG
(g]axs"K!ުhUYJ[(VtlPDd`2uR/R02h	rO:nGya]FReLy0g%A?yv8PpTdU?b١ѳ|؝J!0Xֶι誌w.#ύ5/cE cAy`oYiK7>"_"!UOj7iiՙ ھ8V֭> sHnpM8խe50Lz(#rJS"lm)N(6@K7m3.4384{v;-eMnYD
~9
yp:љL@kOVJ+[ނS
FFGy
A`@\hi,'`)ĞUlvXlE"}$U"Lƙq7PtL/2yH舥=~Κ.ґ)*O&j/U`ǙZ
bjǂ76dqؙ&r8dD$ke ú2tzyeN]8%r;$=D⩄x+qV6#Yu6f`F`npd	>>Hi8sJKq18d(Y`Z~/Х"R _6ai)Ԕm}Wn*8_TKxg+0
6<	 cY8*SaT.vŵL\q/Bo܀e	M.fdJeu6x7%ypܝNL; SAVx/zYp>!2-x*96튅m4N,fhq	Hdvs]V_4W}8\uKP#҄m~`0V#"f8a}@MD*29
E7S9fW6ĘP3e/iȕ-}x)9VQe @z"NL43a}Vca }IPBҶ<*Uԍx NAO pk
s&<-MmۨG^UH1x4& Grk ((Z6:r2Vq`fSiiӣ/t7e<bMr&Un݈5;82XW5KAWL{"t%K_ϚQb%p4:`=d57h]Y=+s1HRjw)gمm#ApON$X67dM%p58ׯ(; ѪXJeP^2  pt@( sDX#6,$43%ػY&^9iYyT1!tj8}&M |q*O0Ew5ʓǹ!٫BG-V65N0lxZ,ըVvIsYWd@MJ r,p3 Sp<$[ބ,2$r"̡*tWm lxa|˂264s\;. .zݫHwIN$)#K>}᫁nbx+('6gVQ0M>|z9 R(#Zȝ#_'R4vEk8
L*2VY*@._XX#tG*T61Y~(|WZF-/J>`w(Ts(<u$,[Z+s"ox}x+!VA%qk+YxN=E&
hm_z{~'\<kLJncO[?y V$O'Y8S8T~Til|!4ЉNxHz
r^7#ƊWa@%X+ waʛ)H!eHcǒ54/1l?X_$OlJ]
mZ(YF<}8E"\,(NF坊x">`*>C`%(3Ps{y&3F2!S6or؇0챍xs2Ew
NSُU<;f-_..TzrpQMB/
fybLM*Tn
x	@
kݐnUrQKk9ERWG=scE7KS.8[",QlBޡ{c0ŕQBGw<	7݂G9#I>yaN_8_K|3-lէc-'()(hDY_:8.V	u*}KV6+^Z;lRsIȚ6
SU.akelp?՞zʨभΦpm=l.66rE^ɮ~,lVʫh>L-seX0Yl4Ju~elL0֘MPWiFn®U1<b0OU,':56*n0ڽhn5N׌B<bzae
LfಋRܑM!~ِFЂ>KT᫽_Ruٓߦ?.+0/M4X*#JE?ѵhkq6QDP(k_	Is]t϶`GzJĩ@,HJB7冒XQZc^-Y,o/
g˒"@.DݗD=
{'RiKC^v d#CT&ĲjY8
?*I:GG~£"Kul)3|CފUn]Ta<6EqDl^33[TiT"]AZ}"KbfR+`eD^đeK`8xDjC,^ x T֕ąYI^·k4꠱yȰZȠppa0n2ie ]vrwh{Q m[
Dɖx>("r> A[]HY*NLVʾU)yؑ,	1r戉?k"-v!Z`݈x{_/r9]wޑ )Zũ[q|Az̢2HD_PjtIFA%wpfh*DΙwo	GzOoDuT7$*L"xhӶg6<Y O(89EMОaz!
[(>=jpy?6v^|C*8^m</آϿ3CH鐈lnR5i^Э%0N?]Y\yMQ'.hJpi1*~&pTvIԼuXGuԊs݊g-$g;])@Q\ޝ6
IE'}aLF;bmy[!;iǣnf%L jɐ \yZV47DGTKDpKJ;AL$.Tf!ioYE\#$*Acu,!0Y)XU|0fhfIѾ(}7G9qO>Mz;(g$ǲoƬ499j2R.7ջQxʛ
E6! Xm

`$@KcrL.uyx(4H4Zxa<.]վ%X@t Pl_  >HcRESh̔		lIQ@nkGuv(#	]4e܍_ǦkI<I,j(=HШiмa{9Y|1PY-|Q![=UD$Lsh G6'hE~A[nD}f*NIymv|M *sL4Ѧyn|p	#@lTԙ@rVGWVzm<I Ay7,v^XCw2c
,15Jtk2Y*LQҋpC8±HâS
sU9C<",p1WEB~E{^{0xήE]unhY˳8$-d
	?j\O(=4h)Z1]vOaE{*wfg期='vʂƀxVӤVxM.ЫmHYepDzݱx'!<!1@RVt:eL:CbTcYϵB;д'Jh;ZsQ(:+{9iy$X@*AV%)1-N@QWMF0yUbnOfnh.hk-k)0Pu&#?|b3ѵw	ނ;KGxFCJ:G8nLȦԙaI\)ět=RP@<!&cMژY㲌lZ=guG>^ۓyo㚑r> es-bG^G9_"FI%@iBZ
[,sP,e+;/d"L`(3dXabӋ2_K PŅ9%M	3mUEk3
aR$vJTD"g`C{H\':cEA#!~y# CMV3y@ n7Ai*J7V<긄g-2\5W٩C2(u@"
<?!KW&%y)v]A[g}7d7@{k1dc0MVxwNfίaY۴*"x|F'$N矀򯩓8JϾSQl@u5]^gfAџk8ѐk9Tr$$b{Uԭ%`C'ǐ*&$\(@O,r~S1(IaŬNv<_
8l>lkuR$AOAYg*Is$oL;e4sxPy2vVl:$"p7:&E14s_a)dpwg$2-fn4KiR)%r˃V -)t\"يl?U)8%hM~S2rϊ¾K"-āv
Ow'| 488^ʴƓݬ@L+V7EuG-ofH~RKfe4V[(%s*b%:t3y+r:d$QN]&=X7,`~9OnvUV|*w^'W%yr;Fwmq2lY/lnjThJK!qU-:@G(v t%	Ы@c.3f֛C8;c3~W40Mķ#܇Ƴ#W]22dDTPoh4H|
_5YbVqςa9+P
Ei?;A/[RQ5Ode~$zTizO#A1rᑓ:./2#M@qm}1?ࣂ]3)6LXl֐Il&J*?דHʂ_ y-z{1ML 4 )x0ip+XH6%L'T+"cT
~SCPeO]޵CUt
~tDD_"RuJhM#Ob_ `H-xTMmAy'qZ_UX
Dj6fakC^^nG&=u%>'%/:Wxt2(hwn"`:rExhj(^9:jGX<"^RY`ljxB*~htxxI-A"d5CG  ȱ:MY.lMCKfttJ֚7y<J:BYB&d86u`<.	# \OVŚf*ߎ`HeA`:	ާ^!|68ho2Cž-J~gXW+aP3
E:Wj~
'Q|G2YGuTbO!xB?&ES){] ZȲ6pgDpJ8/]˙B/;">8"dhtUx('ZZ_
N'V%Êzݸ<>L+j2UEF5دRzWYѭF!
=cٔxqwoj%kEC.z*,A FA+Ζ~cͱNuO'
Z'$S'BD`O-22=CF6Qe x쫹U[:ϾMłʑac"(6ZdLx/3g	ye&p(vxODLQ4FBq@$H8r #+ҋ0+ e;Q`8<M)V{NzxKG&@ rraG쌑>3 0q섲|,^4a'=H?VHBsGq~Ռ-,$vǻl36h@A䐠$!c|[җ#A\R- Q'jM|#w~$,A0Eґ0I#EggwhVKK$ZakD&C&`٫\u{mW
`&%(o?0VEL$4E}wX-NLIF6]ꬱgXb"j"|̊̈́ߜaul4]2_:gow+0MqCg2-΁B~B=j!LN\3ڛJ(țR8e./te.kʖ :m"?P~6͊Z!1DX_0j#ks^UJI2HLo! LR}#IhQxO'ᓌ_[{<"0;#"!	+NЗSZ(onN	:%;dWWI;2'|
Rfڬ]4ޅ<jV	0u0RVЧ"+D?]B99Ԟx+'p@-z	5]D=TtfDIGdvxAޚV1Qb#Gp
9iouXXSPXo0`us-Iw2*gńg$_\q5q{~&@OQA^dm,pڪ
)UV܅+ٓ1_	>d7`s%>^*óRgNj֡86+|ma8F_ޥlw)'B,+5{ԹKÑ	iAIC_VS[#%)"^c+]A&[5rFw)\qR(D0xK2mVjeQCN:JepzoY!+ݍjJg*(r"zǀ _-]׌ףO>s{h3(nT#R%:dV 탂e#QC".	'c/K_y~OGa[%I]kfۗ1F1k렲8( Tj[NlRڂ	eKgA9B<IJA_T~AG!9ۢ&G%a š&|zIh]~Lu
RZejMlЯxx<d%$;/UF+yCA	Zj׬Isו5STxO+ܱfz
4
.
O.3bi{nRx\pn,fɃNXa#Q>gp	߱VDDjv0G1@x8'J죮IUU,hOS;ΜS
dE7SHlg_95y>!	╺عrj_okbnQNY(Z|; ^pYn
1˄bǒf%'g^edMzN)
\:l[f2$
 H"K|#:A!B9q4өHBk[A,̀>P[,YqAx̭,v-_3nъ}BW-){^B0B14<0$p_ ܉rJ`%090abjMjC .`bh&;&[O/! %n)8csfSj2_}À09O#+@$2Jrד2^@զoa@O%޳X`+њRѼi2m{#E<lJ1Zd<l:7915br'* C+2~,j'+^scOQnIHTӑLfsf08(7VFe3YCk=5jB4rOhdZD"H[)xkh[wQ'R8;
}
$SJ1-	pW{7] z&GǂK/6Å	7R#XcAǨ=C(<1-Z=l  iM{Ww{|75[扴Q7ׁ螁Ro?zK}C/@F:y'N"vRRlR3
L@X+IR1!+lJWE&¾<Ɋn{lu`kN 3QK>gq$$.~3.Y#P$KE3ژ6>
̓kveGNV~6FC8սA9p)ҧH3n۫$A!c-:ݬa}y#/Aͺf01f1@yP.AY 'u #1RA@%(ЩW&	4M["cS	
%۪eA>6muknmQ `}fQǤ0z䘆 ٜI=0b!'	$?scAa;ղXW:;b`OκJt=edj>Q=a,sK 207͉GEفP{4TcnX_:TcmI[i:"r/ڢ*Ho~3$T*AU;_@ lJ#wem23OOƑh8 G̶~Si<%~![˾˺>#ڪI3̐c`&ذ:,.֫e:Gj%BR.'|iTWt@3q?v0-^4R%$lR!a
('`4&[Q˞:WH ɔBgb\r$
paHO: \ʑ?H:k`Z,YzՠwSo(KBX%Vaֽ:Gy5L:y<PL7JAO@S|rџ
!14o5
38C\JJn831 ᾟ앳~qϕbkn)J³> wbY"*,*>LXkSɠI,t*1ѓbdiEYfd~~J>9h**̽H%+ae=ʟp8@
,
$@ E{aL_<PkKVM9wDj`@ZrE:Z?9$rVgg;ȓ~"<H#p@L!GOd=p9oTSo<Xک* ak2ZBn=IWD&9$=dhgjvOse"ADcnͪN'ÿPEw&9;(In@?ywm1"_%OPVMs(Z݂"rX؛N۟aZө!8<CrmIFf4\ -&!(z0(мFo?xX "? w,B[>@"3G%ި7+8LqTo)=nn

y{¼Ҟ	`|nA xb1Ǟ|G
5Zᇛl:?^Dlit,=PL<	:3̲jYG=Ap$ִ()(2(0w	'&a>7z'CXnjV\$"
?,qݩ\_ÛyI 5I2{WWOOТԯ!ke=$Y^b{'텢@4K<N ϒÁrPڧK;@v/NW
Ϥ:\
`8g3$-ret*UP;z3me~h6&ؖGDNp"My->=N
>,{X*9-NBDM:DSlWD!G)g^*sbO*cx`jf1ը	 U{Bjk^ @DցK[V=	_ǫ?謊)Iy!RW6p*%Vy%sx4\3X1ңHCָQwGvm6"fWK*j)*mH1
߼;+8\#3sNLh]
iP?ƫGGxz3re}S8y"zZ~f)sJVS,Kigb-r=0)1TˤZKlA=T7NХDjKI 4aBUInC 4
*O|G8pDuBN23?fXFR5 y\Au`'/ZY*fnQI!O
\nwaWy/cy7%3#TpTš [遵2k
`QiN3R)\Ψن3<`87@w(Bl)%oh/X.VY*xF1 S3ɷ1
0a4@W ʸT*[ܛڡV<N@"Z0;Jv}b(B	{]3zvS"W@,Ȧ#I50	KWQ]D}H󦘣`y"KĶ#ڗRɝ.FZx嵺,3A@"`&{oBᬉɑi!Tfun[df遣$+ܛ	FX:Ir,~+Ru:g` 25JN`M42_h	
z 3|@B%UU1*Ńâ%7ɨel;Cޟ[ᇾQ'4. 8_\
<`1PzTȫrPb]2]Mzv2YW@O)D:)=Ӿԕƥ-*V<)e
USH<l[7	ŊzkR
E+";_QH^y. _/-LAm(
- *1Ȗ2hEr%DPyuH{mt%kP2ʁGr7[*tKP"jXU
Y2}O4,	D!*^iF-S͐ѩNh:(<`#e~>CޣzV"vװm6 W Ofyq$KZvY(2ae9{TWDkyX1}X@:)"[W)Wu%,E<Ƙ8  ,SZQiJ|%/?8s}0o9/<AZP((㱌/LL&~Ҙ!Y6_\MIsp!}|&ҙD\>R|::؍,A> H4O>:~bM\!u( 8I&sk0D9ɬ⽦2A q?ZůKPAb:?G	em"mt)eg&sVLzЙA}ՔrVJ-"tk E(Ԩl>M!E4lzs5vKQS+||kAU*	YXk
dWU2g{CT<9[w?`jLPL 2.S[ : sMQNp
]Dq\hb":!{<'yA/5I\B6leڋCBYńvȸLrGXeTܾǎU|xg5uK|T)Z8_p,pd
/vQ}E1<.31M85bw|rFxī~XjaսX݉V$ȭ]ergjֲW BBTp7t4\0sEoX"oWm=Q+=;U1{tBY=S8sQHO,Jn1")i'~C \G:
^,_p咀6krvj7Edݩġ@W":ZGD= :
'##̬lm'>6܀I8&d$!?x9TUQ~gEPLVu8I*$!O2D^dc0b] dhMD9`
AƗлfI<X0u!V*CQTS[xY<ug(DpCcao#_J ;*~B@YJ_nFǌ]H_i@
=E>/<0`e+@g&'PAoY$	iJw0`:,5U
_2;bl{$`dT;Hэ>\l2*`ҁ/^vAȡP=~mηeG1/|Weo*|Cm8b|*)v7I
ԓ8љ|g
|ݗFUyr
U<
_DpK-ƃD t%
^$^^WtwzhQل@2  K7ͮ`lƍ`O.hoEb>mRT\>`+@urHDO~MxHD: L>RU$h-
m`B4Fuh2lDr_t_\Kdk[a<s[@L:i~5poDʻ"ҋTVB'_nƢz_ތsZ- gdQ3ƄMFŃSWTrݓ]ʜDz;\OQmCBg5W1Iq%nqsib%&jyu4 NX
5V(isױNZZZYN"DQPjb^o.Vrc&n|Bq+j}<ˊ#kAA֏U445YvSJm#Ihr0I*A
g6nh֌EƓrVzR8,XuBEdH+/ޗU-Sq:a:QhT0|EBQ.v͔!(xn`7ٌwXoe6ay;öd
f-`\x	1]?[bm%Ce7eV z)D|U,LBWֶ|>nzMƤrBF9M<)+prE2TAU fwVz2N 7y'#(Ԉ8At^)@(B+YO2/ kŞ-rl9#jp5r>R$7Y;hF-i9,]O(]E墕RC	EiffGkˆe#lܯQǩrf;;x pafYU:F+
spHIy3o\OXa֡pؿ Z
6̇&2%~.E6DEzsTga
,H#JbhrŲ73bL早Qc%H!V"qHwA灺h
e6xU'Olpe*̓k*XREh:X5fXu3ql;fVjc#Lo
商*Ue /[oA{hLC]3vZz\kkfH+koo(ob2~#f"OP˺ 
ԡ`-zn{U:=ƮN8VE {!iR ͥp;cj2$0̏QUM=^Ŏql5O\*{$ʋD]n]dfx[	dt~r&OazS'Fa
۔3hʖQpmY!7-H%p+kzs@6ɖ]w^Lӵ/KiÌծb.ԩ 	BX4IWGѾ&3V{zj. )-Xp~es@e8w=x	$3wvO+)V,UFDx2%8R.4R
"i*!g.dNR,o љIn+	l.X=(D:ewE,Vh-۔&4&'"{|cFVSeGa+"Xгѿ^7856.&J0ylakn+6*0v2	tUE
+[oPZT,XnmsyQnUG7q	UVv=Bv>ȮIH,.@[vKv%&hu֭dCOp"Κ43Yv.m>VLD/
J>.t2qЅ0Ɂa+or2:f'*Z|1 3w}OrfR6NƓx>ҫiGo O;pldD)=gex(~_E(.n2(x@IY|sap-Y8&!at8DyRJ"+ ElY
1y"e"q2+k8М)fӖdF:,x06{@˺[x[-3Dס~mgZACTuX}VF1dhHJe9D
{õ,#/-
a:Jнd{({Lp0JIO`];*9HCŪ$gcL7yH)T-pK-EO )PMgzZ/Ȳ [
w#N g\àڵd
+=⑽(Emy<TV՛ 1;S3R({Jf>btLė:Wǐ38E5v%[]W5O@坠73d,Y,M<2!#O}Q>O}i~$n*Zr1P&
2RWG"0B\W7sQV
2p%bD!3V g$5!z!*.T0&p&Ol2T<>;abҰ[&0TgκA(:[N0H?diy$E$4dZj|!:+K%DfT́㚨|e,]d*N-Nw4r뷦m7 R'uKHA]u^MY\ >MRMV/)KSdϘR2?E_V>^UŻ Q!\$_IPm
>"D2m` Ԏ[#hΠKJ*wa>L=
Ls'
QG DeOE܃.G02E ]v(v\$S$:m_@]|slDkZ0o;_LbGD$D-s_q,!qPTrd<XͅDQFF'43tיT{q7s˚=YzD}}|:!IhLDÈgM /#Xi{k;涡.c!ul*5D[=^Rjbe}83(XsK=Jh(>v80P*ˎZHvERs& vh`VgEk)Y@ZڳdkI@LNb
1e @Ǟ_yB/DlGJrX'NHo2NqH:;j)&@j}AR.2X{k4a֕{.ߊ1P\F	
-PZZ _||_SGwL.è:	?As+ŋe*,p`o<QngQDQgW!z!9J5!<(Z7gy+|_)8j4cYӺ.B2{vgyz_فai;
+:
*UO;x9hzϱ:ZG
еW5S|Á~?,H[M@|!.)qP`ӟ\S:U4Z&(sgw~F$nPŪfj"tk]p0k߃>;(V¿S'"BQ2:DlL`J"A ]t*L<,\1"	߉E/,疙0l`XVp,,*<gЬ1ZM]P	Uu>JD<iu 	^h{/4Js~uVb}DQZ7 +9]dW C&5M=,Aj	ܬeHIG6Ų!GbG8P?Vy
/IfOD9=
6wdZ`UЕ{2lG_휽ZpP(hf%_LMr&X		݄o~Z8gil*>@U|+"kQBafvH,Y*$z`ivk+9.;G&B>&oh@N#Lٛm/·9F>Pd$dMR3 ]4eU]֍xy)^(Iif1~KXqž6U޳mY d&ټ$d~mRyt6}GUH3ѫ՚l9K"wJ)'*&Q?	"A`	9\dh<V}H_fȼ|ȎjZ@q24Z<+C<{k胼l{;ұ.|COov,@ alqdyT0F	]aUE.Q_Q Q6A$Re%tQ k4Їz7#X;͘SBW<4AN<l	kD .*&]:*
a#Y&8L0˝KG_Uò_\̱y
6,!dtD4=OKw(^+sUpfO9=@g_1S1/9&fQq7ƣ	Șw"hIp \LzyBHaG%HGDӊ-zr[EiAK
*˃}5nEW;*tuH[-a0!q?Qg$G$+a$'7-_wLǃeT$81ZޫGxM n- AtڠLC+B5϶DF՝/e%M2D.*?IuhQ6gfLkx&rx$K j"2'ZvTK~'F{yʯNݛ#*ʪR!ۥ`|XWߟ~tZ3qOUpd8t9vK>-GXe}}U6s{`fc<=\kYmz'IRUumoz)|&zH	/0!-4	
q('g
c;Hqv,ϹE,9/t4u˴wďg
%	aO wR_xUF>Q{ +%=TǸZ_-ſJ]k2:AĶl{
v"
QxU?r|ԃA5m+vcx݊a8{#61dF_#;xe:L<;7f#\' I?JI.˵-oJ$I`>=*\EMӜN%\Sx<T ǋS⻨YF\hdج5T2JBiu(}Mj_Re>L߅Mf
G	9IŃ$ؿvpE/.0AGi&o^ZJWOّ
}Y!/k؃z'Sv
+PfտtnE<
[q@=Yw+6J3TK(0˱i Jc{xze*T+CֲX^x	FJ6c8=DU:^-`!Pv8$
OQH6X,Üc"?\ԏ|b
<VKa)zE`2_!4L~RØ=QGPy+. 7XeՅG5x\1u-b܄4L.q{:8\@w~4i2֣;&+^SYo+~xGDH|-

1t摡exH{pkɓeq4ÆX)3#ԅ#+U8kP6n<t^R"l 
Y ;bMJ[$a ηeQm
op8*JC2{;y$x.B tÅ!Nw\F`3hd*X&w#Jtv|IAhT
G.Ro1Ѐ ԼP]ExEn'ZA	gu<3R.;,=-.us8+
Ovbli ER'0+[>UZmZ<eRi6"\,y}goi$?A'{$;(~tYؕHpzDUЭ\d0[EL4m_po (F1{PЂEZt'߸ya+KnVж\hK:@T4]_<vdKܰxCsX\!N'S]͙CM\!-(kX×67rkH(VxRv`_Sa)AP)QNEFNHrutg: 35 4vqjn'n5? *tk:cz*	ݸ~o##"3KjYfqE
܃zY"

UT!+q4jFۀ̋t/;<51JXnf'Oy#j?px.&|ڨ423$yDDf߫k4uG[0QŊU},j2 ₛ
J{WD©zyS6 Q8(.d(gtLțG4
V$Du6WdŪrPGL^#C/a
+FvΚ-΄R<]EÍmdF;j7B(pfW$
Pp&HNd|"BQBLeN""RLNw-S־
2>Nd>UŰJKWɫ+
ޝ`!4ؘ+A
Ly*חT^_b:DZ1|)@m@_vxڹ%V&\T
 F4W
07z>"9sOw'qJTKhu8o	!^rnNUF{.q^8v۝9e
;9O2T'2~_+>,
NK 5k,]}1I@訋@XS^]tdMTb]g9Ь-`(`BX"YhT|r&*EA3Ou`ިX/B&$;3/97YJȭ܈zxFP Pp~nvQ o#Ih
>|Mvo]X82{L=C>hE.vUSev7&f|y|rV_{
"Rgz(h*#0`^\~(
Rv/r|d KedoVbҸN@s k,Yj'<؃@{=z'OVyݼj4H#?wl{(P[oqHF,4eT'5X}"q\Unnr0C]$Tuh*5ә׍eI;=ش"8U.L)Y&>9^
o
wm!+M
V3xR^=S S&c R xgC?].&4ɊW0=RW9R7T6ᷭoё[GmǛPf,C P<__HiAyU_r[Hx̦;?hB0ybαbm'Dkx2,@G&'~XhA&=g?
K`qu{ư1v< [eڝAL;7etL#^3uI-;a٤e.NV
SPU&0>'NqexBW91[xA']+pc,Ctov(Ø܋IUq~J{3zV4x	#ocpB](&MVHꗧg!DhqygJ!K2qZB2j
謳[	'4>ؤ$W]	SD\lW9mzvqy$=tWu	.FAI"_Q՛]Oܡp?|8r1)d~5&m=
Y.%B5eA:SFY1٬wè
jG%t(:S]*tNza{NƘ;~8NGvq@PN'iOGR4{!ݖZE )D|;蔠N"UPIEvzmլH+CMΪU*ғFݔ	jKHm!8W6;ZMM|7|GP!&Sګ3jϙI`8|l
]n猭z #evu'0h` VmP/2%╴u|
jsZ<(K}McTY;ՠM*V73x/34-~ޒMx(I*QI)ٟz*#HCalh;"EY LCh}u\KxlϮw@!{բP/@VPb'I<T01zJG JW'EXo\Ed+"=oh
A(h>xDQLxJ݆y04a=0H@Ʌ7 d;6X '&@wW%^[aw K|n"$
RGDx+7NGDO_֌3 /Lg_8<n,SKV2\v7
ڀ	qTan/,JtJo&yp7	@(⿂ITJ%գbHRBZijc
:(Xi65`^O(ٵt?Jx܋xTq" ]p)AV1|
GI2iL'+SL9o7.a|7/2=[!lI1 S3cg|Y_8&0x)/5Oh.\]BgǪ{>hPD"]ٞǠA>"	R64M"(
ri-nQX-E
|8_VFB#Iu,4t;S4-tQ
X#-)AZI!1	msņ3e -l+ơ=v+ڮ8K8]jA: $8Y܀ihIj{L\4a-з;'35buvnZE8IC\>MWo 6VPVuvIgB֛9֓W0'[X%"+o.M8j&'|-ZЊ
s!a $q)/-;P&:,K q)'|);Q泀e44 ve2>|scLiS؍߫+
p3+mNK];R2,:&0HQEO^yS0-ǘ
8PHY(JEV6[|,&:?ǟc n/!Kv*"= ?f){ Ǎý?u65;Z{s8<'rm"bW%%|%tDo ΅tm:44D)"4N|e9cR]Q3pi@8,`ד%m[Īcb_2*tH_'۶e$3Ze>]"e{$KkZBٞKQEE< md(HLpr%v@YUǌGDaī.6d+ܻ`-9^ydÉHzr~Ln^!1cG}*EVEqaI?-R|[W[<HOe}T	ɏZ7"UZZ0&n&PpIT@;UymBBb`Cs-UeUb$Ej@K"iYW˙l+2F1rtJpeW 3ʹ>Yf2uWB2~E4KO71C(,	*QڿKdu ܑeA:q+6#{Zu!Pk4A	f!'.ށ-p
.6FgZ{*p
Y*e{f<	>
?qlb@*&3ж",6,^R!5B	F3,4ݽOhz3J݀8`xd8tB\
[#JM'P7Ѿ:U]ehي!UF}Lɓ6+b,HCUXIWkɖ mh!btP?[H[gPP1SрB*r)XvS5m8iE<0m?Uz/r::apWp_~hw	B"(Rjf(\ሒjo*@hElJ켤x\(g]]ӑT+<*-CpDڕ1~':RS\1Lcp='ś2AlUS=.ʫ${TB-# H7PE΃vGOU/gE]V~"cI$^4ڐt1E̘ju{1p	ǒ#d͈vnt8S0!YPrȥ4SU6dzqXQ'bՅd-{2L
7[nejvM	dUøπLR`=*O ԝi~۫J͗RC	d.u0Bo`;pue#%\z2,v,(aXkz3]-0M6tWQ&-p^9q{*$
K{64%{@g	ר7'6[nk	QŢVA5M4D72	̃m#@;#PQ@`&sVxQ颍%
Kh/A.G	OD)wp2\Kijǯ0	Hd~Yta(9}Vp 5fz`ZyӰWչ; ZU)Rj*N	<p
,-!TPأ*-&q (۶lD4:jv>Y8&&#Zh<V4(
$"q;jQ]o_<\.(|0Qc"ӑ]1dubpE	
_|)fGeR71t73\)s0Mp#osև%^;ؽJ 1x'Twa} )+C6d(3L26aFgA6jNe(/D(xgNJv<bRZ"7=#	اN2L`J2"vY'<#r[uT$XG!.
ĨE`Ќ8`^S'w3TR'Q BB{Th5JR.+cau4k{<7쬖	6
.Yl+yߖ$m@WlJ*,3i96"Nd
$|Ek.3Wҹ7i (a[|'r\eB%#": T@T8= %w^!ΔH(=-u!yZU6dc$HG%	s4l҄wh*}HuebE*[<R[ Nक़ƛ\I: -Sע^ɠxC3(Zv%n7lb^US۟bdSFA(lKgT@_`4Ȧ:L`,ͮqr.LQ<
\_[5y	_B۬|Q|w
R
U/V!DXgW-0}Htx'
idPg!ySb[RB5_^ÿ);E^fڍKAL/p
3
x8Ģ z
h	~XH&=֙tE5:Ma\o	E%
OI7 UP*rk"	2,FڜMP4Ggަ,+5rVF냮űefɔɴ@^BHtbtAo5
X-e-xQ6ni~/ρtgK!獝D]xu_zJ7JwiMدmL&)p)\ICWZHtR61_y^`Ktƥl' !p. ,3R.VOoVaX4%^Y8fRX03WvH@ڋ7Ee{űZ 䇀
)o._{haKza8ɶҫGgnEUnh'_aBϐ#	'͡4FŞN%qY^bm)oUڞ:rOH4s
IC5(y~܀	G'Zə EUJߵAJJ1_JY9ic8ƵQaC9rNf9}X9pH&8qtF5x1MQ>Ny>ɂ(ng~w?b,H˙'8pP7x.RWp@sSbJl!xmx.S0F 7ŹP>!X&?]ևtj̘@^h41.!H>Г.R>jV6ߚC9u՞+ei$+(F~D6)r"oDE
69_vcdFd6Uo\bυ8 |f:'thg`xSrL;FY_ꔥF3eXU;/p_Ycya1(ȡ떱SL&k .ȁ~38JzhD:,Ew*p}CmI$wLMBkfkw?3guFg[a))Q84$nCRw,>6Ksހ,0w;eE.:"L4~V⵩!ԼA!of@^ۂ9m/Dav\AcFhMdqcXŤMzw,ĴC\psU=¡S4Eô9{"Z,h	s!\NUZ״qB02(SXT1γNJ/}`h|jQ	Z_)ɽ/+v /cX<*6B5@1I9 7+N`0$_UArt{h~jADM5w
C
&"XFY$Ɓ@nqRmʈ߆kzy`(T	\в1u 1A5O 82Kc.mE:$|fec}7l, kv'y8~Ic8#/|Y݉!b˥q_it=S9E=/n//Yt~v~K|Dē5i&	<!2H:
H6XM
}
U)?<m	 ^6'c	HkQ	U5
ʷp]0*؁^gmc`_a)F<y8 RQ\֬ۂp=]F1{mG1^4nYX<ظLD+b~"i~oM#Jr\"m<#e"8j{".Lлb1|bEF3qPo]yY_-D?澥3E#6T/<2ZTCyg
}p"9n0lCW-`"O'0υ-fLݞPc*.(l$5CzT@G*	v Ucn+Q1:/|+cQԤzB+P]S85Y͓AZ{y=M[~qβ82֤^M0xz#ɓ@TuFkPbʀ9K#h=q%
EU GRx^ 5[B=8_Fae[޽CXFx?FiV-Y~1BE^>haA0	slKi䶭JNN㤫_\JvEN 'ewZLVJC
&J#RQlׁ+eErM~9N&^8sTІF(<01 6)XBy'-W[b'[
41G>k[%R5+jP3uO@fnZa
ɿkHwRh'"+r dSWu(Vy &Ob;(1ukK;k!aS"!STu1	e9c:K,sp%rlY2'*6nu_^^LL硖	!n(h0S$ eK` @6ƃ6w^Zr%;:HwҙˋMtIZ	dtnU!l:wD3
* '
8vkP	Q|
#SA
ZL
L hᓕr(P92ŷr
ϓr*LkGk}80%J|Enu)kiuM3ㅜ
S#P'CSȄt@j@xH[UYKPD"Qfbwuٰ< EY (C!䇼	6'@Tz&(3E#>"6HLp2,/Bgy_"?hV[Ӥ8K/t=s)\?Uި
],Ui!@x0 XI7/Ho1A:yc7Q%.whïP``Ꮢ_+ZQh7&)qx~v
gWe,tX;иkY:H\=S%eQݻ#9e6Ҫ=˃n\E>T_+Wּa1՜q)n xKo8)7`iVW纥45;gH1IR[ 2ֱu%qيȯWxn&o,g
ѳ$:}!bw"e5!D\(~8sZ}1wA
fNDWc@8K=PF
kajÊOmP2#G=`*y28]y\|#W`
YPZWMHW$asEFtjb¶sp{=I!+od_6?D>7>ʌ3_yexd<zy*2Mxf:pWEZ_s8Bst8kxR,%Cpǂj<Sx7b!i}4oCQ9rU@MF`x=(,*BLjd6VHS&0B,M>~+ss \g $4E}&!Vg\U	q_9erƵ5=xNΕ6#"7""zpEv ڬMpLt{%?|5"ަgZ#btxf1j,pL(_qzO*c^pE KČyQ6
l&_9L.H^A{Nw2т:Kt$3h?QQvi4*VTCVЈK2OSPtv-p=dorH:*+s-\!>E[cǬNZG ^xH`zRmZ$%$
hR,OSJ,BHCqATP#%(r6sG[U:0H#!sB$rbhuú$("oD=ByqZNA
ל1A*C2 J&W^ꔥX179FCv
ئ)}.#\(R'.Z%ew.[TX&@dDLZd6,
x -IG}"9:-T/9z"6OT S0_ a =
1{t%$bc|ˢqazCկ	.˲AEJ;#s;N&iac[`%oQ2j	0(mXN6JMr6tevdV{_9{$m°\g _%FxX]38sjѾ_='Xl&X 	4L:LAD2yx/,v*MO1\֦iRTPTyR=,E}iiW7еr{Tm(T	=9K^T3=EWY;˗r&-pe~W g2>HAl®%o.^Iyd.JBl$S#8YPhPqCTۧJuS$1ݴC8=T,һcdl geOGZ6%4$["F^Q#H lqڤ`Ӳ;Bܤl!X'c
iP[ovM"	_Cl7R&r.ڛA="/,56ɻy`Bm=NR:fFvzd)4r,5(0[T	x7r
܀yj!Ȯ<Zmd`tx	7Ѓe%8j;;FUx~$+̚i!V2MPAIr2+^H
*ɮQMXg;=nI	V}x,9_$J	5|m\
oY<{ű1	HؿPL6+{Mk[YsbC GAci'<Kjh$۠'sU?'Y*CھZ7no22Y9Aʹ ܩȱwn
!Yaeo'S
H\aM\|	B
ud3&uedÿ6TM5,R`nꚂ9!'><`ߔd췴	-^+6ȫf,/X6@	51ވd{Qہ@u<mғ*$PUtˋ:h<,
EUEjw%c<ڒHG|Ix+cW$h* L>ڬd!}z``d:M/<p}	Q\8JD7d şӁ {ngv㪮1\vpy\О\m Dαi\e
d#Pǰ!l<M|WUs;޾l)W"CEK$>WxOTpd4Y{/5*'| 8 ?2s/(3Zh+Z,9^Pvɽ)jU=&i!5c\
y女4[UfXպH*rgT>^q.gSKqol#(ގiw>Z''`(^wbѯI&1;30j}(8ȵ(]1բMQ󞇰"ʷG
Xnjd1f`6VWFpHzx+GJ%g#$Nq	8]$DlS2^ߨ#7ޕ,B#gmn Þ@SM>*ifEkիa,h;nT[_w%~\ZbH0}]LFζpT;1W,ʰ*_`kȯSx78a
lP9 6Ga<y".tӣܾ(R#4xاJu}bub;\<	^
YH(ؖЉ$`o]=9倐a
{RjPbQV@͡+8Շ7}f)Wٲ`=BXu.Ȏ|(}sⵉpOyi2FY;<ΓUS:MCOJ^kgX.ŀ:h6Ė#`(J(]x3@+zY0ٌJWUWxD:mш@=Z`sg6HG
خ'Pf-:0P"#"
o?hAQ:|Bo::hPI`yM2e
v`>9*:9=DjP y;*k{)s+KAq=P15s-t&_#bsG 	X5Qd GXb1'"{S=' )ufрN>E8׼7QJfkНe({$2i*Pu]-z@FIR1G2K{89?2~o 1_»*^ ]DS7)h3Qu(ag+DvWU
\y`1X֕vRXVD/WqoA:^783rF*|!>4QQ\GD&p<	wMM`-@LǠIa&*USFDVpRO^0Ai
A+L`
=yA,2W̳Ff9ThM~?۬E<0,'3#4jH[MEvu
)Q]NaTxѦгK]LQ:)5:b	zaBxcdzɔA`fw[`iђSͳ͢#r1urP6Q:|w:49u
P#i52mj58L/fWCWaT&tV:Y'4
11$5V<C*dCCOXޕ$*Pݺ_
a&gu]N.bѳeLAALԠLEТi)}șPy;~UUk2ejNn1s},`?o@6KVP{
DF)Lf)=v	L_"ȟ]Wmɪ`Af(eHSb+pǽw 2Q	rنD[O%пCUy!d6,<IQ܌f@5=vygtG$"!2bUrr$
a~  >qɥ	PET*cnZEA9 5EDu݀CF	B;ʴ kܽB<<Q.3H-̄U_jDURf*2ϛ@A0!S;N,lMC;6ޚ	2j2ژA2^E?(I
@[U81M*#SA^lF;yͫmP#0!cZoʫ9g#:='E],=΂]rGu-hMbIТ:"OX_$ǈ`OE1}\^
w6?@Jɯ]d|LJDX^A2o(Rc G	ɟA~{H8!)m
JD%kn`Sk|B<YiEDLU]HDazv&^}OkY/"\^la<dsKh$K...Z/ՊPhڞ	2ɢ@xb.Hf]*"D$Qk1jYلBFQ$+3qeluU,ؙ?|)Պn+L8b#i 8!ÉsX4jFn!ngxG,ǰsRr.BI֦J
3\"qԼA!xZDraF9U6_`&ƶx{668\R
Qވh6`<Pp$MzǺ
r-bkAQ9FSa\*
PoWrՂ
/F!L_tkqq]:8
?:2*JQY1p/>=\CWiu%!"/LV|x}t
qqvZV(V@
; nl|	57\72Fo,KRg|Gp&O\-TǁNsbN÷M,Dsh?ˌu`^=b]R]/âDe`)>C:ɉ'kYBM_?G=htf@@,N1_xƋ>kPAJ]Qztk6Z51Y+.`\=x":&c{9f<paU}
QFt<$dđL;Mz>`s)]G/. *
ƛo>'+/XўC7h% ,]v6RrGd8 lZE%,"lg-{A/	hYM8\0&м r;ۈ^|⯴
StQ w/b[)#4+xq39TFңT({Aܐ&lGtBwQ"7iĈ5=ƒ#D_gK&#0DrEJI"چXdVyc^:~ځNS&O7c񶗜᱙(EZ+Uc9R$pzTd,{>[s

eYDzjNFugUr4jDDbS*jP%^VɁ;`HI<n
"aNsݯ b;̏a
_CEv
96sȊHfuJFԈ`&n~ȯ=8aV4-ҼeuzgPUawX׮6M܎
1W
Q.gĩ~r`8rq	p
G06ѕO#5\#OrV!<6c#Q"lv;%4KCIsbVUtU<A0H1!|gIN*Vśe;v8&0xSJ'ͅ!7^BS)0qՐ=_NtT4kkyM[8a/c̩F,WG<!d]`|ŀpl'.p	qp$_-<zu{_ݭdl5)|>HÏw
 ѴkބGRV\EIFV$ A/)E𸧡e&|] NEM"A7UUhDxa~k&!&g`e<X4$A"c~'S'G$^PP'-1v`Q`&APctƩ/y)4gVO?3Pj~#cyVߤ~Ee|	|hYTI$kDկ|*k0+I} ')O.x[9L& tPzv
'BDF@|8Fbp(ՄVl/׺c2 gݪr`YL/2]V?ne0V)YxV9;'[7rysͯ!hY+d3o8ei	 2vR8ܶv1'	fXXi&g%2renaY83(]P
TGkkb|{l0O1EHkSzմFJXgS	]CW&atL,&5+}
7EgĂ,`WqɶIGS
<c/h5.Xrńeg*oZ'wQ{!*N{z
z\q"wGI%^t*Oּ7/ywQSi$|G$gU:P[X杯 {oW8PyZ% `4
d/g'cf*$	jAI*MsQ#k<5A7HdV;+#n(8*.pq$
ER;
m;]qf1CobP/^&B<qz7y$%;ImDܰ4I(Djpu9U2x5\#e0ҳS
|28J;	h&b M/s	7O(>:5UT;ZC@p1 
~R%cw]=.SV9
;WžG=`;y]MFV+
s3TsM R;E<պCM=4lApg.I݋!5@|NŞ-"ȫ3u4ժ2Vд4F=s+SNxFe )L>Kٍ#Q!ŖzXl	OǮ;Td-&a|q<\.Dv'Ϋt}T`_Y1"ӳy PeUG캢mBق5\ƞI/\Aʁ`7BP5ڬOԷSDS!pwLU"}lQ,]Yrן*KE;P6Kd5o-{JiTs%e}0țk5B>?m-78D> .**B:=Gbpy/I9yvNjC~0[4_d[dw;0>`r\攆9_[c!Yt;/e]FʺV`. |@/[CAQTB
t>K3c4,p[Iz:lQ~8W_E7k0Hܥx/<<DfRR^@:ʗ#,'PJ+C,XrdYdl\`MJI	GR0z8bCOLOP#XH8}w0AY<a-)| G.WWb/m9tA얚R^=mV
uJmxCz!]J˿ytX/߅(f@
QDKe䡖jq[L\Te<0"#Bwn6zP;#MbDshUX+&KGTw2`Ôye>~&m̄Y7~lEك*13,EH$2l`!)o\Ƌrj YޝxiDJ<i,
6eBfR:Gj@iÏZh+{[Ed*($O.+P 2X
D*=ݥ,d5<w#X`;k<%IvBIzfZˆeK8P{JV/Ws`|zY<b0C<j̝A8['etc
kb	Y}+zij)Oli,Z8x=h6Cj2"ůŅRN96,`"v_r!/8漱9.1t**r]lw0ē$ 1!.A y3qKW]p$kn-Nff"ľn&,ld=T8ƘA؄6n!7O#]=q	OyX6v;	sؼw}Vnܔm>ӊWl@J5L&W8ߠUztx,R&Sl$.P^5C;3Yz=ʸ2)ȞB:GB&SG6倚	Hy%谆Nײ#+1HwXX؇пMP~WCz&rqpt9<!oq~?임-`bXr*<ok㎕wLp΢kڏ
mv̊Q%`*H.{OAYmܥ&_ilpXvF"5yj|=x<}m&:HzĹ0`$*PBRtd^΍FyS"RdIm/e40@0n<
F̣`*ʍmj<6OP5|Uâى):ti
9+|OdMTNC_?dA,/rD
MƲ|=νɰa0Bou۰܄fSJQ(3z3n/
XM
Sgr9O5iBhE&<PQKqtīaU+[E^TX]Fu<QtVsD0%.>_!e_\ ;A|E+Ka~[H&e
Ϊ_?d+8B>wQdxu$V]Qs,}W@|9 xIhY.AG`qx-,<.vR\M	)%	:O:o{yHJ/*94N3@7F.ǆr5Q,\[;P:
D%P'a,o\ġU$	ȅ+:
N5olmT"
E]h]WJDCh0V%vr>ANucqtcRqy9p&3+6q'Caf7Lpvt~Yt'h6xyX{.Mq3GDbZ'&bNJ(hjs!,VXͳ:[>KX[n2*-d&AauH=40+CD+ς0mR!DSiKr%/O@\校ةtȖloūNrK
E0;)Exyn|o\7j%kSq#=/g?(3}LU|'O!dIm}ߥ[2n UC 	/ RSr39J``%"߅(#*Qr4=Sc|LvVu-Ts\m*\CuH|p
JT5jd(AϭTò/Oc~,?p#"UH|$?~ӎ(1o;|GEGs$ɟ\62ݘ$r[Ź]gmA
w2{%Ճ
6뀶3<(=JhMC@ptu^?,o%RÓhHwA܊K{U뱼RFv5]6yB}wOGбw/IG~R(Xy"ΡjJUӽư6Ut	<Y.>Cb\V	׭aSu]AZ6bs6[/ҧ\Rhxߔ8Y@"M_3Xrַ(6,9"S`tIQI@C[R ?'['2QJ׈U剝?kaJ8T
	;%@Jvug-^'=0Q,TLM*#F$`ڡ]/P(UNݿMAuegS3*_S(Bo)]72ҟbB\{*JzӉIA)ټ>'xyO+*)i:X$̫R`w(j`~qY"?a'~յ?*jA$;pvdl9H	V;UMiW=qC,Jq-F=Uc-^3watV:#9	2}8K'[f~/ir%"PB+X$Ra~<fH2HH^XuX_#h&q̑%
ȎVL}@	Xl^D}@pP Q@kE$0x*}-)2{BeRnZdQxy_,<NgF%ONټ<z&̫fQIn\gpl7=3*whƒusB`Q\:PaO<w
:Y'2iPvh-)(QpPAGb"_[B
CcfަVLg'b
 	Ff? '0 -O9&v:5&gr7eCnר˓Hdtc(<j1`x?n׃qi5y(*BPd*=
Z6si=tک([_MSc*`~"DEcs6YcAóT4A?kUTt{"҈&3׊c"qLhQ:D"Q|()BJU:hRp#zkCފ:l	2YY/t8)
:I_?T5zn$&KRF2. d%ĭZgl^CP*Eʑ?quud H2s96,ɃmT'R,<w nb\;RQC²w/P5GY7[m)Q#+s!(OMЭ!mP'PiQU)K,18-~ zʙP[A֥!Q_5!}BP6frdU[F]*~s(X|.ˊʫO+@4m(-qlJ+X ".c[].9e'i&*C2O29!]();̈́?@EPFi,Y(-;΋* 6]EJh\ex0@ِGSUU*+h6gpU!|+
d²L9gOFXV	M=͡蔠֡V久j~,Vunb/%uαfg]v"q&\H]Yi~h =1ݧvT7nsl
K>K-dгߟPd?5wx;"!kr ծo$
/[eHhZ!\t!j9/sZɏ١,%C#3{5Z6oFJ2$G.q6?0˙@)/$`Zg1 sf2LɱS?BEkvE
#xdU'򍿅`q[IpQ^+0{^=({ZT0
ҾGlۋ1ΐ\}0vlQ|>r"
\Y@M1B_`?		tɜPĩ4
U#и
jX,ZX_Zx刴u<P5<phFᑻVOw1(PWНu(x_)F͑cGǩCv$c'+hX+/#];*R$Ak81&4caY~RvƑcHRh]~QG!چjΝ/BmU)oQ{?JH8O3fnNQK>&,k*}!h<evgKP&|p+'[|4p`u,H<76`ʥX}a>2034c|SXѭm<u,x2E%Q>SYaM
Uv4!!,6G'-\ah'y#h7Lw&P5?#t z
*5dƟ,x깧=yi&nK!H"/Փx2Gэ%;z<D+
\aiUa/qBf*0[:rwp8؅Ǡ@fuD!K'|xMS_0a2/ߗ^2P`	u*t\zo㒬bJD\ڃ|x#ҍro w2eDEQ>hK4/VqmO
Ƶpϙ)c\z:ܓKVQU`ɷLkE@,Raqh\J+ T<5Mt8.5S/;˙7}'a&Nj*dr+bxF/M°a+BJn^IEF6%1CsОl<;Y:Ɫp(LYfjvdmU*;{5J%IB0P,5v	Eb$Ty@.̓nZ:kd$
Y~[e8Uڅ`X&Z:;HJV((%)P-K* bFuHn6|gvvKxlКʑ~2*HIq|Hh
uY+i g#Ja3>OԼaB|J\
6pc0EsHt/*Z/o<\Wl^qZmͲCV	ע49+oS02z?wټ_< .T3$$b.'$6GZ>D* P<s
LVέǧ2}͆ctW07JԘ}+^<-fPw/ݑW 5zzK9҆<ʢlt<v=8uu>:/
Y
QX]S2[x$=\v7ʛc)c-SQNF>--{)Y"!Ѳ`9WCx!,BQT5	kQg$I$/a_XtEa*3EE":IbEcQ5ʃE:Rfi/("M LbF,M]lwE_t!^Jtt-VuTY_Dwbϙ?YmvbjU)~/Tg&IeYɇzSwCLU&o;%v
;CRbRx/BA(]ɇf"(m, 7tMB3PUW`a_-]`3Se7ٯـ^G2x
˵9DAW&
Bp/nb.4Fi;=1䐥l %1H2wɶpբ|U6o~xMDqbe/!q7LH]3la5a L1(92<E#ِa9#ύbS
#nP
h&Í׆TcH
gϦpLhȇiu!A4j8f/D)`
ռi3T ѼZ^[몲5M:be:PM.sT*o2)]F;O6´.Pir)ᔍɘelK {AxQVg:I4J_=Jyl䩉"c\D9_F㵍XV6ˏ}H4¯̓sY-]
eݩ<ςDK_J)Qk^_*W lY!vդZd؇k}*m̫1$;~cɡG-&',@Rv 9Y}C-syHf-)$D!Qi?vb)\3Pb\ƹv5LQ9jYCdGaIhMtֻX:5+yv|؁4qЩD
IڼO@&; b[wg4vralEX=?
YFM4Kf(D0.njZVؑENMq1'0}BLX"۲*Es`$e|Xe;w="խy,5yz	;Ve!K빃w0hWTѓN<vs֑rAx9
EqJAG1젦o0LT,>+Kp.|3E tS⃩c?ΰGD&i:	H"M^`iKZ1mJ9$<<ZЌֳ=5ۼ<KƋm*JLMؤA~}*M`S<; V^
r"
η&w6f96m[\r7&cj:
qj˄?	u&˫~eDa.T'?<63PX	Ҋ6RtΖx`B>ю!b<LiG:5[S\M]Xv^rVVrebLÓ֮bdg/aiFp l=X#{9rӈY>NrIQh&ί	h2o2'mY^Њi]6kBk1~c2!Þܙ/suFF[WG)-آi+!XR4'Srea< D7fw [Ƶ/<8)/l:AzT
_.*s?i`<S̱j(*!t`WOUvKt`phĶ}U.@{U\
Ee$tl/\(}CP	ijZr-߼4SyGb

ڜ8u7C
ɖZ21ab\7-ͨӶgQ.oDuTsD|wNi+ ˤ0xMv LՋJ(5诊oWa9!u'(?LCi28޾<X9z6*~AZ|>L\d'2mO
5N`jaJC;Ǡ&CVVrn*B}^׫VC=[cDᙌeJ8<gXϘt!CzzшjVͲ
r=tT.4fܶƛ2^zcn5;Z%١FjoLj5g9/tFjҫWcsw0M,"OOW7ݩpm#_sc3 6-2<	a6aH==.¿K<WoP7P)ĕ=DOyV}`VMC{vʞ7Ѫ6G+=MY^N5 gX"鈀ÕܞBWH4[*_^N˩\fI7ٴ*wBTT:H7ث!e<$%÷ȘOI#	'9	U
+cDZ١GofĒF]
CFFP;(kP3HvfQu|FNa_qvyk(J{ Azق&厯 6f@%,3oF.2T٣8*R܉([h+mDujUYH;2phc+ث*0T{_#'AR% =9L2 ޖP=7Fo[
x@qrj:Ϲ4fPo"Zcd\J,"P	}$Nꢇpd ی2jض-*2܏+CftS{H%- 5OLpM{ڑ'lH|Lt%Jlid"GPr9[:B3u֍h-$|WI`p	;b}-d=[ :fpU򞖿22"9%<C:BH )YW2/T4
m'+LPVxD*^~8.'GءlO;dɡ͐\~ǳ44z-ܱ.mk8Hnзt|N*U	B?`w*r4Dʹ;]df=`z^D'쎕x R6˪c(:}'Bщ,z1
T
PBAieh×sF[Be;{{#jͦhr3]1
Ӷ)a7c8P	41<GOu#J7Sףqe'&%
Yq!+cj>O0Gb4JSӧҞi:a02
2{=LTm<,eںM&)MFCGyyNQYҵp.oopQ(2O79h#/-y@.WaJe\0gHZUDbv3h 겋:iP{4~K<Eiuj~iS];p]$
ޑ"}n[^3؍rPD*KTD07yeԻi6`b.@^qo4w2O"`80	C`Hs0	߱7͎/K%ń~{SHbJ<=ÇHaP> eGXa{L1U7f4;yNb,8!\ ub^Җ׽8\ =<[(#yܬ2W`YYX|"$mпQAm[%}U(Fwcלr_ pnaeP"a0;d|ox6d}nlwڕD^2M#UBG-vs&%.L)5'իw9$ Ip	Z<BK6ߡ%]<
}rCqCLu%4 02`v:wSeC[^1lof~
:X:I0dgiQʼܱ*Z%Mݖ/Uf*#pH5UA5fQ J$pװė[h*rPJ96rG'XP{ZL[5+@H(6"4}Y[P)cs"#HI3;|X+3m.bIRp8I'[.N*lʠ?}k6!S^AFq㻚6WwgN)N7i_>0V#Uj[a}
8vAq*6Z6S8bj2c"$/_DJ7.1{@f
aG
ȷ
$%m}21+2'd2^va
hG{>A%z3457!B*GK,*pqg1<v,?9$۪V=o6l"9H Q WhRΥRмB~%7{ѯg1{fgIN|Ʉ	mdhv"8G^T7CkbOQ=9B.	Q4nCATpNb*C&j[yЗ19 ZrW;KZ^m>b鷇%Tv
nfwcW-qK99
)h9?d=Ef0P:cvd^'a(򄌷G`ޥB4n^޷5C~BRvs_@A
/ Uх^QhxTW/N
ָ<J3>ᴌ68KOBp>9:;X3l
CWп5d9vp&W=%L*B_UjCİ2f3O>nP}1Rb%|aXT97R")6[	_C3s3cBeȯ;yxKQa)TpNN	W'yOy|37p=˲qeDkl]Mt:.ȸ|ׄr'k?TKQrsI	";tGtkïl'/.c"O/6$Dxo"$hϜ~=H#!!+xFsSo|-Dn+z찐h 
'iY<u{Jylydt{	ѺY3`hj ϋ!TYq݅f0KSl;ʜ>4#e2Te!~f)9 {4Za;0 qK"Uh;`;i
AU䖒d$fmu≅mD;ixpΗdɷO*_k_tŚ P00|K4YxCNύUD0'LϾ6\)ήrnW'm-s5ϼ0B=a:B
x;h-􉾘e!ZT	ocE$j9/^B/|Cn U*BSyu:3x|*L5oaH*XLvWPS'(ANiYzj[^I}ѴRF$dZ, Z2hfWmߤ-ӿ{DNF
b.k2HYS)OY8@Jߑ{^D+v1;y:f?!:9&GȠ,2ebnztaSJ->q+RS@f>.5EF!ciQ+ /]C&Ub ffؗd$5pSͰ-Ox-Osݫ
l|vX <1>(c4|e&s>0ZDVdl+lFLK5(.&_֏``.Y͈#5چͷ
*ps
g&#[mBԗn;i)+ ItiH`Y*
*Ө,1^d+p#;<K
Ц8̸z#x
74!Glw1 `TnS.TJe_>kEdd	g$m&sj:AO$:-I7m#GOᆅw0yQi)1鴍2q*"F)1'C yYټ^J:>Żt9pBa"	UAo]Fh**JcYOFȹm1d\t+՘I4kkrewAo<p42p::O@6aTe/2CVv
*+4s5-筐<E/#;Yfr~J O8HY
q.pSٻ86rzvfc<!y(gCd?,'pd;	3[iP\#GJ]tA	f&O{"SgY_ЩKYiv괝QmO|@ F|
1[ܓhuw1?"Wlܰ"؊Ҡ|b$LqGyyH ǓêrS|b1JucNkAJ$A$zi	NQܤ#T8A,dLe
5Ptp,+'A[	.$
P%|K=1=?8T`Q(a2V/-=>L1k/&8<M ,*qE3PPDRmL~WǙN
EU	w
컅$q%s[c.*Ak7җ.9o<nH
z(\?LMR<MጅhCKXR8@a}ͤh2/GN߉"(2$qGd]l46@Vy9/*hϲ8\u#q0*O/z5fHS yr^qVuTvtEms_6$/u_j^&A-2BT4 U*4hg	K	+[ј.7i]+{*V+ +kųv{"nrX[PE'˗2h60r@Х\Q8 z(o%
 .&+|FмbnpiT(P* $͹zA~ٕ	I4&Gp%*.p(Ǚk@6,z9fSx2f\EC*&
·Bkj_̦akk
w0	eǛv`T 84q-FJ/ȘhQyUF\EI/bj=e0Uf\/RJ-OJU0

NNm+
f#{3nFDabekӟ֋_
P*=IƁv,Ye:&O"1AH*0>% L`6pcUm@NfEaKpb#4myÜ5heY@|ȍ^$1lqLc38yݕC^[^Ukѱj.X#B$%z:
J*BjMJ.-Geey7Meԫ?92i!7CWKotI6}Q3],
_ވ8k%$@;IALs,#bv*h
෰hjJo֡$:ЬDÑ1&e6<Ĩ4.`8_>栔@$ 1HwʥeE
z6M~b0rś/*d3ܑËxzb4
Z<-FW~BQ""hcJ~8-&EN^Q	\o@WR
iLS	hNT[ETљ2O37eiM8O;uzk4W_	'&8Սt ;7VYƆ\4{W(7AlFp'Cv<&k*H\DH;do2O]AtVwۗ_!mO_k+"w(ڂ,Nhf)BuY/׆
V.7x~W2CXQZ^'!#khfxg!.27$
5HM&SW<Y3`x2ޢ--@H`tpeW_ {Y8Dbּup&l3}|d4`sHrYB;83OQ0WiNG=0ؠ^P!
¼m(	;AW71+r.B'FzI
@%&ծG2ۄ΁1,%j{|w<uOVB%:W|v:ʁr9|L?@uDtʖarHxX{V-Uxy3 \Y{ܘYlNSMFR"6FE2`9VSl
Y]ik\I*"JȰe`p
(f39Iqh^y~1T}X^hz,zd(-6=v" lu%gGcx(5<5C!in俿ޓӤݍ)]2&@MIUUYݒnP!boFIQeƏ *W|qt/B(tTm7W$em;B,CqANy8{Hex"n:Ҭ,|A.8/S" ʊjOz1Aik5bmC'6]ar]D-8}=
i:$YHj6+aO;cRTa'0@Y']aUbEBKYM˹1/hB1U0e&nCLyV6k`"]fc7xEٯP4L
-:,\q'V!37\A,ʇ%!UkZר+Z"^&fl+aO,G6sv07
AXłX3ݲJ>B@5PQ$z!hN&K[#0+t`^)A1
đĨwwD6p b'^2܃	S7ڄTz>@<l_BX|ߞEr1]c_V,er\ܝPÄ02:} Gô{TܖGqGge3t_fTHBd?
4Ge}&~z.|C7sm;	+e,BpZ7SDݙ
6MG5Tlbb2$r֦1~,`q4V>_%~m'2ɔЇCfyMET($>I"v"W2=lI/A
t7׿E	A]Pt
Ġ
ItކZ(qBO];|ԅUxc4P\bs	%d&6?vZMʡW>h(ɻiY+qe`h^03汀
c/$Yȁ%lpJ/j P *d9qHN9iFoaQ#y?9șUy\="-c#
(X}{_,՘9ph?Y,56`3uΥtArdB3sW0+郉6l98ͬ4UL=QeYZ F_<+hB!*]G
X/\ۑv ]o0?؆
?k$VءaQ_P^SII׆0oǅI>,"͢	}"k>jۂz_=~x5L3f: 7X<D&fYiYP!=
Hd걀#&!l,70Qk5aSYlĘQ6iKp"J*S@
FUxCz&iT6_49X(xDg[11/˙bA;(⸶/g2ӑ$}DrJ;2}*+ 	aAף$߮8J31	BVľ}ӆk7@q991hG,oZFڶ<ݙzR՛âQ_O^Q_%%
/N0ʑ
[x6dP	V (l0MY&0L4ı
-(APP\<QcRD/D&B&1|&Ow,ގeqz&Ta&cD6blQ\{6MHfr+"0yQ&ǁa"ȓ{?:t2h鱗%}8#rju7aJf־Cֻe&+4=KBdߘjƞk*ڶ0i(Ƶ}*	5@*jtqOi|O2x5^gĊ3
{_=@DZƔ!/8&X#.%?*#s/|ܼ)g[Ty=
SᆉQ(rm#c`}EiX
nwƛ5lh=
n|f#E1tlTG씻t",Ug-	.T;hN~z1ƞ5.l솵qѥtn.BQbS'::L4=-\	L ΓL7L;IXH/hpd
.vr=q;}
sԆŏ-lWОfR
t8;>G_T۫RPCnezU4Vt$m=dk=:/P	,XS cslr, JPdT@i+LAdiClLG?k&Ӫ4Y`6_lbƋ'kTkcpMFvraUOʛ)=*:M4R8ie+
[m`|%h	egedaTeRt$EP1t"	6}(Zd!_|8%_T*SpbSU
XnCбXčT 
d仙:.<ݯ	8ƱUy1X,2n14\3ȏcÖk҈g σhG'`,f@VeDo3HeifMIџV7N|p@-2Rtc՝lz^_`7ZOvuNi``!tJd۲+hŵ<ʟ 9/ZaCz4E /~&K!kh+g$N|oŇlM؎k2Ǆ sQ*d$[`UVEZsA*@EX;V:7#IX=p}y6X+$<,* M[0%rҟ"ڝĎ.X8Q
(a;s<jMy7a'ڹ)tRvIm0"	p4xa^/ #b˧'
9cI߿^-OؖBm^b/GAP4eQؙvgE{qҁ/o{px&E/<2;4%vs[Cuy+<i&U/Z(
}@w+(,2{(t-I-fO+&#
L^FE}6@BQN-Lg>!{kA %KMhC
REodN< ]G-Jx,5wA:cyR(4nQwLXnK"dqiN<eGFTUY,G50[@
ɘW`/[d|-IIў٪XVޖ4}5W8]E\v[ʦUD/
C:1qٍ :m?]xvf	:<M"ddKJvD81u\eD,uY?RF^j7gt9Gm%x{Lvf=v(:6e9LƞYph+Q<.E	:RD {[z;{L$Sdk7#t978@h 
5(i:+#^1<9al|B>\VP@[7<(g-l×@c<
5x̂{	Vܠ㓎Gj]SjlzBLMJ	{Rv3N	w{
~Ay0Eڹ_
R*Yygt˯AhDb:5jF/0NaHA9HEmۋ5*1Qaygn(Fuw2t-wbѥ}K\e]+˖Hfg*olm;HҶ {D$D>xKRDJ@]ry
e%ؔv=]SY8402sd[š@]ʖ-9!	8&OMȐZEFD*$654Rj5* #tDZ]o6~Ydfz"KAݷ9'⁈Y,J[í(!X}
Ɗ:7[HnQ ޞ'Go<w0cͩYѥ*B
TbV>y!;H4ZVQwzҩrH
8"͠CnfKj3l:/oQ~'.dA7iQ6R\PbX,
@I)]IMt4N4sr_Ia&{c9ͯa%#zs6.
cG:b(ۥD~kFk
Ȇb!0d(&sa)~%/E&kg2\3~>F%mUMԽ׏%*J{e
x/gdZAf22Bm Cuҳk94Øֻhϱ]|Ʒ٬7î#eLgZŎ@=h8/7Яm;PptQM (x`
&B*ie<(H62*;}5]fZN	
?ԑ
W¹֥U%-J+`>e8ېW1D)b'W$Ƚ.8
΢)꣩+2k@XrЫ7gy
A "P\xBP	Gبv>9B;M1g?rKE֋3ƹdfSf5trerΣ2{$>P5welQKO!kʯQ4zv9
34ygH-0ZBR-/Jۓ+<]ٕaPkA@ܾ9(b YmWՖ&T?ח*&0 D5.c+"9$͐
/hӘtfKul+vS4%;w
W.U<
fٚdN@](vL5fMv,<3hEdED*.QF@>w$=5]'(1O<-6&	~B0S!InlIQDSO,():2ײ0,-vx6lgwfX.,zJO3m^'eC^.ZOSMd<޼<#-"vsdx|ȟHy%oC":ZhፋedGiAR2;kb0MTWQ!C;y6Ū{DqRVЯqTӥJݺCm(!6r-#:I<y	[y6dmԥ莻̤UW 
?2,](N&+\VIb;j8p_m7M܊)%v6mB~iOU-3/afѿŋ(\P2DgT |1T.`J7+I{Ƿh <!>Ecy6)i<̜j&63I`np:?mJ2`z)ϥn<ՠ0IU 0#Sh"l?H,	|DB9V·B+кvryߊ7$#T`XXANE2ļW_8xMMF3@"urP|Z8!3 xyW-
 Y.8L#Skf݆GaAO-]3ev>"W+=#q
qJqbPWg9GڳD= 	$g-ZľhMP.GҾN7嫃s)xB3vN($r.
-s4'kn&
4SrV$˘P
>`9M)ҢGifk9mj82̚{)|(tzqN:O
>0]AsARa2mlPGvjpJ+4ހ˚4g!kO7oB|',jLXu^Ӡoի8%B|2
mngZū=p-4?M!$uC
ڳI/jHӁ&ޘ<qjC+XcX(HeHUi3gfGl"t;gc"h0bjGFqae%
eIyl<~)7xj1)阮8~{HuY`% Mݫlɥ+TA1ϡC)ښo;(q".q!o&_ nR0e=LڈBe27>X
QyXmYI[]6;(&΂SKAd=lfc娢ell<+5[ W"UPJ'5
wQ+`fnTdU4I~`iw9Yл^GYbݤ8aixlydȍx{q"O˦Kk3ӓたGf͎ұh@3ӄ/.HE_	afЖn)PSiaud%$cYWr@
WayfVsW SB6S$njȡQ
C+{b}ޅɞNz)z_RʄbK%X2ic|L2r^6_ORy3gald3jE}qz:
c+Y&IVn#+$+Xž3
VqOmxYղYIᆷq=<ְTY$κ!qk}9@G/Lϑ0lPN	aޏ
EsS5Xޑd}EH#<3ނB"/]Sn)af\
*>[xR4eֲr%@( h1(<9]g6#Q pr%BfRR{|yG*$f'ջcGi݄Cڠ3M1Ea'H'*3,eN6&YFI6t g
bԄ[(|?I.BҲ)cG;)̍.{_VFU\I)2,YOSHTg"&3QH4E
Xl;p{>Tn+a0'?m3!?p|e!gEx. N<B$e*;"fPa^١yk6YyLWE15he.w
	GlbqBw`6QnɅ>ɊI6h=YWpKMtq`G<(È.iވˬ
&UWl^-m)
l?͗wk7IܼSA:+*= 3E3(6z* <G5M$f2?Bg;0WaQQ6{`-ҭY/d	l:F}tnad!FSzOZ[CDMW9.{7QQ	 6Vv2<%rASZ%-vY?aXtbbčAش=}qM$F@P@-SHx+Vc~:ZJ_m6&YYȏގX'CeQy+s>1^WzY1Pپݱt 
DvӔ-kx(SgH=5)X/%m[NLɓ*L4OxDAjrW~L+MM
;8w1JL.X,7w8c^~tȅ;cZDnY4L *2~{IL57?ڇLK*A7!$PJJDmVv{nn;2mdq.36L/%\WV "Ψc,'άD!J/ߴr+O?R%$?"sEAi|&W`ݜɄ<AoVvm.6;AQh,^*ZGX 
\Ä<mddIH<vN2U5q󍁃a=`ufHdڴ$	CwMs)Fj@̈Rx<Vs&C/Dz#q	?OYҧwz⨺eB7mNa5!MıoЫr@)e%.ܼWu0koK;d6XO}Xdޙ4>_$g:Ӳ?awTy|cO~py
v``i۲!2;΋rTفb-eLpmtի? h2_NԳ"5_~?f9g}uV3g(bl?a&G]h$nt ͵8&f˅HMx1Hkq'|Tu#jG޾@R*Qa5ATr3;z|Zx'iF:~x32_!\ f7$So̇Teb]XA?C1,L7~Y^Z,tomfGV-L;M5`_֑[1 &?҂KJ{
fSYVקr_+UhWR9lERa^׸1A.jGVec	h8'ZVV`L%ve͸t*(pI}QQQaI/*P7W"Ka){z 4v"r Ǯ{m\gw ]>*:}PG^*y\̊+2?[)w5-T\WoS:򕄚Md$!#lLnamhWxĂWQ䎛Ma*oFaJoMۺJiszGA%͙2=35u3c|q&=91nj6R
EZl&ӡl+ʟy1,$dxςSQBpc1Z`^EWN	E],T;XŔT!0By$fMTVyw&b=a+J#wiZ2IRkR/Pb:08kZ"IR􄒋%f0kIG>T.EX"fX|)'Ƙܾq%E@XOO~
Գ+])Afʹ9w٠=D, 6E) f2%/;ډHcx$	((/8,T$EJTmIڷ+=p
	 Q/ވ¬L|'z$铅'SU5
J5x7z;X'}T,Q_TeG/$F8aG|L҇'&ȪHǅ"_o/9M٤jܕVK)Je@ZsF("W'YmCh`!P[0jJ0*O(3d<	ULPhLʛ>-͡TeĀ+٩aDm
<K|,O[
(7._t}FŎsq[1\&BrF\xhpiK섟BU9z:E #]Kt%r걌Tj2J-b ހ Gx&@va΍ص#'s$36#b\q^H	Ekk#2<LݯeWIC-`М.ѐQjKM<@mRh)7agzδH3rI<OG9i̀!mym#",6q-yDT״M=jd}Y@na0qetr,27\G(X.p MΤxkb
H4),(vUcC-p-^c.hT>w&%\w"LDQ7YJLҳq?&
iT ]^AN/'[e\hN'"+Ow6|F ̮lyiqj%Ew9yNcf*6pXYř
5\C?*ʒ3YU$/}vd[qv0JXB'Z]=Wy2ׁR8+6I;WQ E'CȆ0N)㛞Q 45H~:g,UnY(xvV=*ݳi/Wv:NMZ(VMX0m9qIv۰=րs-kXcȡh<ur㙪L*CAg\0>Nvb=Fw')]qʠ@Rd^B"r5S|fukCfj[TŹSQȖ,v=XE( ,aKp4'{ErԚ͖O]B8FM9(![! *bJWxS38LF3Aya]E"+{,ӱ6o.Sݛ\kn莼v<ODEHj eU=WC4xI.g+1Drґ;4 0]fߕ>Y9	\*F/px`0B6St؟6(gnH|!jKtJ~7	M[n
XvpDiK˛Q&TzQ(28I0L:NtA4yC84-y~Air707fx(CoR=(Ƽ}X(j-I|wg&TSZ>+D͊t!џvTFI+WoiPq\;8<vd.'H;4./Yp9^V0$]q&٬ajrm-/{ZWxή踀mo@ 69_f1)prxf+7yű1V@wg&:f {>V4!jw+k'f
^N"
	FL|6+3d]I=aQs"J;;9bU[.еXP7LMKu	;A>S)wv99Ri?(|)8t*ɒߑg.Rl|C-`.l{_=SYGNkE}`+;-
{d
*RhmTh("FC-U
-3$,*{l(6amrMhȟzZhQܞ%wJ+P0Ca(aE(_"aIѼYGZP6LKP	.MV	,N\?tmYYL4yV;TH!Ъ%1i&>
"v*AZ& q'ˬ2:RU}.KiЫ&LeD+83Ә2
agdZ(Dt_L*Ƭ:gL(e1\Mv!pxHDY,}?tbI鰉sb 8s'؁8x>aza|tDpSxn~6xlȠr]
3w %v0p
~2cM~ߠS5	@F0"v~S;1UJ]H Jm``_^_0
 "X
ěiꋒpqb?08hOqQM!<Q{|J~W\ދ93v֦C$"F_+*¥;(R9sᏪ4 Ow];oa3şbb_m2!,#(:)4\&o,0t4QIj	E"$oea*{i y%wqd_"@q':Ï9<
st'2tǰmfGyAUo b	#<g#)blRk[~L7U\uPg5HA
cj[^:wT4^"&B0׾I'#2(
jR
wh;(W8ԥJ~
sf>Mz_QViљa=|2)`81m8V~@{xStHhِl%lJAx>S2qmY<B?_i6Y7wʼV%1!6Q<1EnR
k]d0n%Emb-oC'-dὝ
;vm
tN<с5Aj]\yQW0hK$.Yqp	H8]4wF-(b[^Kr~.r
F}3sfт^*nvPb}\rI*D;T=&9;e~~)84Lf=6q:02qcgHf ((0Wa8@_[\ݎ!^%3a9S>LD	+ 4J,t,]}ex㻍7(PUZ<>o>1jA.ļ\cDa>>׸2eG|^m1 jI%OIwnD:, g>w_o+K.Njߦ]#I/i'c"-h@ET&ݲlhd~m4jc=2 xHõZ2"#5{*օSBjcLE
jW)Ů!
aIk.p׊7_,W6DaF,g(JH~Pű~ex47 7bŌQi,3[[=^PS}['dPlALG=[r=oT
5=B1r9KP-Dsvλ%ʬryNB	Ml|7JU:D}Ez®{W(FQLG4-m(mMLϓ(-}_w=D;[ܥ|7<HsB=mru3+)ZnlebUn}ސi7i@գT)RRm,@	ky&,V5~dt INgV2` 8p7@RHE1}pjn過lx6zc-LHF$&Wr
LA78@9ǭHHn'`hI#*֢:$SA1(]yd'x{Ok	3$Zpn<NMa)Аx
iKE3AǘYg|(:/î</5\3& %r)o(LE4qe)h"׈\ԙ
g3"}
u" FRF1Eǂ՞VI`Z{K##%Vc4G0sl"x6#sjV_^u>ȦI\f+ *%c͜Qm!M@o
K7)"MC)-:b1#x7\i
:(zXs<9X& {1y)ed؉a
 'dLt՞୕ىbT<.D>L|w3LcEix<`xLW5 yDʨ3Nlq%D6;QH\jQYa@lɚ $l!	wސURc18U%nD'7q]Q;.V+[xS_
{^0kE? *
S w3fN		Rwс-( sDAP(=R?o$0.BeV9@`6<l۷Kx7w@|-
_V!:lU.,4/ܘ?n4ǄX)%R"LD!S~?fjC"۳=
'Qjiy7'abqE?E50.ȶbh69~Ʈʉ
&NӀs1nkTL0f|8iv2])>2Kݞۼ(JDͣ#y
2
!狄@87Ŕ0Z8.o?1O'sL2*m
&T)]&ݬϓ9jq#gC,DgT#VK*8Re\:C\p윎p`ȂY,V(5XqXiLd/6#LaA?^(رL11<0u<(
+$nslKHrגįh s2P
1+
3Hs`ʤSv>NPJP5."[!3x%Ąbd)qEEĊӨ0%Jcx.%F02s!P<m3.S\$ZI{aIۨ8X(nc
x5D?D`h㬘R #bƟ_^ؙRN01D\ޢ12-$ ܡ;Gi;:{ay%9(kȎeܪK*C.RgUj.
ѫX(OO|BkJ\a1?vf6OX%)N&ACTn('`˽N1	֦h.GE^ڟIR?Q:i['ygmFUt:̝D(Lΐ'ff9cyfXEeۢ)n:REWOw͆.	RHH{ShY,[*^oDi[#m`,H^|De\ jyEܪӆ#a7jRZ)Es	_yyQ"$?6$|[-*@J1vwƴh+KE}tCͼ}#iVH܄akGrP; UX$MTj -avpkA5Ұ
u`vȶ=2VpEj=qt"̓ng
~`Q%,av>0p.~1ƑaC/+b^F8,wcA`-9e-TFɊ\Xo(5ju&ZWlFA`84Ms{,9)֛q'd_ᶺ@WLt=%JJ^82ҶLTx|ceU!F	ҲPQIVE7pnea[=q/3%<LƷ.&t!;ܦ9dJ	hן礪^L3?vP^3HIm&:צ <_0
im`x+9I%6hLs/X̀</\E `󍧔	6^!xHGtJ@S6;WquΞWCQLWՊh9-Ƃ~%Zr=ڶxe7F=QzPmN6ȑ
fRֳ18P(B$nCD"Y1**9"M	ҩ9LyUoQ{46	8Xb(188Tp'?Xj(R;~i۔w=Z(vn4*"r>HŮբ62qpR<&Kգ	*n[-)-#KGԙH+AJܗO?REͳLOwUf;iY\ fԘzs;t3!
vۊf
.2A6ˡa.w2ow
UMk
/*%a;`E5=_&>
`)	,JL@B3ݴCL8Mwh&232eɘeyoo5	ydzvu/Ez
Lj*&|L75}Z7Rh^8$rUZ, t]v슍Q˥di?*(O`,RFf-Kv/, Ioӊ MDH}uA'@YI)א8rRwn
*x<ÚH/S>;<	~$\0yk;0$w^'*ۥBR.
lD3;]uTt«TkڠIVG0,p-Vs3I0c>K:
ޠ3cViwyIpR!&9Tz+;
8ʵ`5)bl5,i>(8e^{Y<(OmCe7ڢ V(I<?JdaDMkSIyOlF02Wgu	e/1L4nLS;V
ރ.@9zˑ	}uNbڰ~r5?ئxvg|4FpbL@s;%ow,_"srU|k=d؈<S4xW]@Dq4@ٛEdeg%91\JJ?L[!D/lbv!B{6E;@<q+j{hȤĜ4nӠ&v nHBd8):*;)~Vg3	τ'|Bbޠ;0E+K=PX/jr1{#g%a+[9\}ȘJ4
ŀ~2\8El31F,jL7rvF"uY@Aׁ\0'HØ.$ ;~ѷ<DQA+u0tǂf>+2AdA#8Ӭ
DPIZXM&əK4$9F\Ċ:n@ lET"I_&݌ecLѣe7S.t?L7Ks*ajJY*"3ժn؈&4U3mD'
yP?dῂ7v43	froŐc(JQĹVPQ><C*St39D%NwOﲧ#Md%; XNzi}v3a:OLl=e'ߠ)ռTEKN8o.x:U̘J1lPDݸ8=Cmq(Mͳv,/n-7B5ݟV7ΣC\_FsQ
F7	KFXuKadfсle.6#Alx$4^l RM-7Mm	6@F>qk먲oԖnڼm&hj xt
Dt97 synBi28'*j
KQ7gwIӛ|E2!g4?\7lsbnv46ƭS#_!
VBm\`/TXlŁG	
$%
`A5LFr6z(w|YZwG׾|CU&."ޯGV!Rdݻv"}!Xm1ݠ6_ 6q^$."&U\mzGwH/Ee:fu9H7IRyͅd<^͔[df]m݀)Xh1 ^(NJ֔oQ 1j!xeҥ]UJ' *iٷͪ7]
̿ﻥ,(嵨jEDꖭeئ>*f%MTٿ*䝯dQ&rҗ&QWzӒe>Þ1yG+'!xWTCݭ,I
Q"<1$5Xu.:c5l뷨-`\]=ы#(#AjIkƅ;%Ɇ?yI	hQ9<ԈfA)ct@3YXd|*Y^\>_:'RP'Ebׄ,/OxtD'C9p9z!Yk͖"U,rsE!ϰSDWDD#JBA/(U6R'([PKSb˘;SQ&C;avD\\FkGA7"'n*)h0o#c(r{cuAZ1`V26TaT"i\Mo
ѥQcp[_.U\@P
2(y-+V"e?^^~BfvS?wDI_Mc%
;[*V8+iy6vQ 6PB1YrED	\i]x1)d3l,v-KFx<QȀ]h.5]gǱjg}84;c6F>a
 hv^;NTo4p+,(x:  }5MhcQ&ɍEx<	^$Ŧ`wz8KHOC۟YtO,F.fRE[N9uz4TPrj8 eCElZٸt,G1 CzjGFTQ&gQGqPyֵv劁UE~<xZ0ˣ O^mK쯊NxfLXeR1"FLZ26R6"ڪmN[^.!/F#\i܄C&ӄ1[>
Vnp
2Zl)P@
|2TMT3Ugm	eU32;SR3݄w7Ujiy2uB~04R, 9@w`10:̗H	S1(3BS4~ҵ	F8YAVgRu/IwKMA~։f .].<x"EsGiW{Çg[PX1UOյ+qű7-&7dj́n#cy>L
6y\*
Az46~z"	dRw/_d"(|YDF7.(f/_lPU"? x}v!,#כ`R4ebkGu)Z)m8kZYj\3Ffw_XOk>[zŞxgTX)NBgDDTVMa:Ôxc X^qǏ%a&˅&]JͤcDE2$StBc05FW㔍Ϣ~8<

DM̲APU,k
:Æ;1M}QFD	y7W	Rv)rhU;ZlȦ#Hܢʛw7"hl
UEZc%j`0ҷEhNL(rQ;$l
DaC-8+Rq-01:N5@k,6Ӎ-3kpЄT֠<jN*&_Xl*gf0("S)QF `vbc:48Izs\}f^ZP oxSpNQT2w*(x(.ߛWY)eghszgi#
B
ޒ@;a{xuW5̵@]Ms 1&$B2$2LY'%wU_-='s?M4no!SXVF^߻XWu*{C>=#,~u
xefH @]EaEHGOO c bF*1ZlXqܞe6аU6Wv4B'Pt'[lPGMBi5gyX[B_\ <3B$tlCad\[!;1P O5P[e}
,I%u=2/i<¢k,?Y856ZӤᔈxȎf|DWJ`&N1|E["$'IvUYۨ'^,3r9XZR,;
Qf׼k1*얿><bB:;`cC^\T|ޝ	Ila$K$d?@Tdp)C)Հuؒafo/AM~oA"^dR-NE/ٍGxP#8E,383C=Z6^1dT+c◯X:n
(LoRa\I1B12q9V( egB2шzP'dC14vC.
vnZ~z^M jBh5-؝*\~;hMe1W;?QXf˩^bwm _0=Wہ-4QYl0,$>4nP

1(PaRA)W{-{TsƻSDʠ&×s i$?WR3
$ċL&B7e\J1e%$U^hx.\rj1)1SnoorL%lE{V6n{42Xg$%A;)*qDQ,7iZFf=&߉$C<.fPh1D`DкzB>]'ǣNx'Aݥ͸E؂	N1yGo*4*,
e?Mk뮄6҂.3;N1m+4.gLcHKuJtߊѪ~QMSE3Ư$4wE&9WaڧmL*+0B!4\&+l0_϶)ZzC{dfhl+1y˽P
THo."~#~-΄mg9a<r 62ْs<u
_M؜j[0Go2/)B42ƀ\RX _x-ҚdŖ4Ny1.o
*',64Ӣp}*ADW:vuiq7ۄ>m|NL'>(s^
oʀLw5.
k':zC@*k>|1xl9Cbt
\]l
v?,,۱@aіȾ{Kbţ52d|PiT(|+2Q>#hޓNS1)QEɚ.g^M)"'1-n@D7p])<0nr'M~Mqm+Kf8]hBp`T~;#^s`XʘKl+E? i	}<`.dσϜM0E9h/fvecJ<4f,)uBߞ ޜ/e^TH)4jJ9?^bH?q=E6ŝŅG4qOhnVFE	Z.Ǝ! @?f_nl)݁B\h<+t'p/@22yRh
ǆD2+WD'i%r
１?/1(M{
_AdT%f!ELx zSzƹG`QDĕfdϼ=2HUAI&%8VLجB5g]	:{TP-.5*
ˈI
*&+Be(SN؎1|}Q]2%$m &Ha^`̥4Wg	Jcỵ"8X$
n1wUxvbXK2-.%|/	<r^ѷ`@5AqBXr2{C' =!G2$%M'iY4O*kD"Ηū&uct)׬I8
2mࡳo/	$ek8$,Ƥ+P÷Os!t'n$gsP
6<fdq)Muj} Pf}lFP\Ĝ߷L5e/y֬e-oc
6QDŎjEaFgsA3?ģK{&M;Lĩ$S%M6&׬r4d$J@5bjcEP¥tTSx:߄E'!H(#z*[J'kO2
ǲ8%+J)*eZ8ő
yIqHJa݊V0O$C)!ME,a0IQ6Șc)XFAT>@bSiזq-3Mbh0WmV<?@2|h$DkٿVsr9b0)v
6X(]L_ЭcA~A-&CYiEVގbQk"_k
ƱmlbZۃ0=,_:bwՆf-Wl)0&; tEy2dF`X1bQx,Ijґ|)qQ 0laH5Qm
<4
7\Mу'Io
HfΩ=j(b\y^SpmMfwS&Ӳy3y:SǄa]Tf*ގ/w*r^vB	âj㭫2_ywȀGm5Sg.a*VfV̿-,ׄx:%(FPzElgtnZE's:>+=b)CJ#1:'5X|^Åo+
.T:.SN0K1Q2d'.gڰeW:֚K0mdd\יu=]*5R	C8&C/Rֽ w̢5Ewgi'zGb? <Y
F6:۩")bk+Wס+X?_^1lbA;RADw1sR@"fZk
_M\L#pBcypdi6
EkLb\Q(K@Q}cI;ްQI.*ghg{:;e	SdUgx`(*!Zb!qoގJI\OW^<fC'SyJ]<\CPi4~E)(ǝ,-i*p><$8K
I>=KW),č3SgR,"L#r=*s	'9{
  eщ)ʴ0t0/e9'2:'L\}5
[1$,oGT_YegVgM+Waԛ'PKx^^5ode*If
sPg<0728*F.F7qO@
2Oף)Rm<ɛD@[p%pd]Gu6&N %DoM-x"/)l6YAuѫ^S`6~5iȋPyWLhLoRPF%{AF(ᘰ<Z_	3Vc Vi&F~Z\BdRte;^BT(
nVϋ"^R:s-(7r՝f_z&K7LRjOM￯5869,mDM%G_E$ES}Q{a?2 VP G~т:DJGth
Ӄ+cOL7GjF;fYFӓ댟k,$yJJ2FRg m+1^Fڪzg.2ե"2Jp8}=8y2([5&We ݮ Әy4(f5NA7Ple;3ݖ
|Wׯ\4p{ ;@
>
nK7i5)(N؇^L=?ږRW!zg%_
X"WQlAlYP$(0M]!UUo6f
hiDpi@my4F'B
n;lL
Qent`Xρi2nodel+Rt	w##DRb=`DZQd6GVomlbմ)&QqWvS?.8
=mf@$p
X?w L)#XD_,pNggn ~~
چm+<g 5/ҡ͚2cg/K,~G2P(\R{׍W@0E9f{	lA;C-M:añyd	jhEzv6'3ho"4w0'5Å	,  R׶="kjB7Y'xi3C6d< 5&:
(2|"H<X|@⥻czDØϕ)^b8(2g,
!c{|=ѡo;P_4ʿ=x4U9:HFv
#7q\jScjH6XnTԅ&5xRAІU4v2UiƘ>"
Ə9%6lFcd8;_N%8L^/WaZENͯ슱,cg`M	;
>Ц.Yj;%	dE@}xC7fR.ИO>ȀU,>-YcN'Z!$eH-ڑ=݅<EqpfM,NȑqcݳM*ʖ"dI-[%ꢫG1XRDq1!}b@8ہzX4y,s\,BJ#
}u2(6ۥ,@!.-Ys$pݞ	pM8l7#n$W]tD6y.X6Ϧz!VIk ry*|ywB <A8dJ%{"
^).g0S_E
A
<5[a葫@30}*m\8]cםy᥽?10HRS1Md.xxs'MԆeYT0x"0% 
{GX
$)&iKdDm6݉M]D-
oH}C~($&
J~OPDvΜaa@
!e;]b~ډV{|MVyԀbhll52͈җ4 cJX=*|$W6<	]4RS?\9ze3]nw?| 
r]c=]X?vX`ұg1z2%ɉDYh<_&)`u> Jc2ixفY`
{	2'>**:`<
8Cz,.n:Q?^ǬZW
S>PeD򵛻vJYwxAKGWs $!ğ7] ll<b %B,s+Ky/1
	=:[Ğqxv@65E\a5֚ɱBED,+l7\_$*tz N?v*1M+*WgUW!wX
hi)Sgyˋ<`s8>Vx%=|aXԅ[,CJ$壜wX[l#ǯ4E:., Ue;F(ӷ/fULZ4,+H_~-("Kc prQ+P?uԪE1W@gZ3W󘥼#Z$r7|qgH\.\-sҬDrG[! 9*3E.@%ٵRVH2`2R2Ο{^8bi3[Ɏ[4d/"XpF{N~5}Yx*OZf^dWg<RQ(f=4؞([p q^DKjCovS|)-I!l21l:L:ۏpG=Wmo]9iW0s&+(VTVoR
(<j'<dMEGs	]v)sEdEcR/K4_<eM!T&$01Y
LI
[ $[EVJ;:7\aYEzւI#zCPn:XUDYJE_J0Ųhm3D\,q	D'i&rF2[p^IӾqq h`LI~Z_\aruӾG:D~L3lh)GDSuۇ|d\orˋg_3<;3z)y
Odgq-
vʉQ1z()/u'퉑-@
b(6ѰSLN<bzz,y~IR, 0~YU>shfBL`,NP)/DjFA|6 @Sq: ^bZ͍ӿVY
S02QwG6Їi8_<SnmErMgE.<eÛ1
h|8uƠ7nTU
/Zuv65
1fq42TX
螌,_iCL2,L73^"l<
Z6Rz`C]9Y$G5SAeaZbB<uꡞq+wnķ|!Oz`~,۔c<bufəhTu 3я^->@vM`ܴ"/(p6#@lEYň^Ǘwb<#[P oT9D9h(ƪKGajE|hğ0m*axO'"\d
"]ި"tNa$h%Bx'?X˨gXj`Zpf

Vr:LkD;{B
:FW1aUf;&	}킎46<k?tg@@Ӛ+6E\MtSh&7CX%k+7}s2(٢Sn"n܈ZJQ5xk[CcUR2jylgg	xnN &/2N
NbD7žhݪ9#f QDйM
(:[Bk_VuU6=^ώ)8J بδeЉ;us,B0d3g"2.)?gob1ɧz=$H}(<D|,
njY2E*Ѷ9]@81eb" =#7'}j	^!ݐ."%S=m]ZP?y,??ὰF,]<1{Wh<^	?5|G撈jKLJK`\Y
.{6\}YbVl8痺P.^%PJR,iU@D0sԪT˒oXDUhT؏d}tQ4}q`\=˚IaH~MU$wfIWwsb>]{@D	㤰̲' t}6wSKP-D[$DICBRX$5r6,߻Qm
E]$'ŘB|1ӉHG(wyȰ(sd6љh%g	Zna8﵌i_ \"gs!o$θCLrSZ*LxXiW,}7GnT
jIk
5DnMWEntFgq>P[zuR*'4LZA"rcKFDUH(MK$HiDH+_ʺlu8qMJDM;c1,U42Y!OVng+Џ!9_.2P
b	ҘF`p@ZO>`[JNax<
"+s}<6
ta!1L>QU0qW^AjBB&z~٨E!
SbWb"{
x<xqH Ti@zsaB
VS@9_2dEr1وr_	Y=gL&^LHDgz0:'ǠUke*U96{mIZO9iDrk|yo9m<)ci4
jN4Mz4h+*ǥF$(0K[,[_@jLOiEqKFgpBg.)AX>%aQHʪ<k^vw;R,歸Ӎ% wt|;9eJB+{lbk-$o(H#Ɨ;iOGo>}dNYC?
gǗ5.Vޘ(R^kS퀂DߠS0-Y8/+rOh>޶U)=!V:.XLyVl
W0.QnAqt!{KlFDtW`<}M'}e4E,&+Orbk&Q*JZɃ Il+ɢӓ7Im^+E<L4[B<GVTaiXZP)vs>P}%|Xofy	QŻ]
zq똴s#v]8чJY&P;Ue* (EZ\k3Ul"h؄l.Zd#m2
3®u]DEkgC}hxυI{9_IL.QG:ryK784?7ܗm
B*^FS?@b!
wSK!Pf鐯$e9YaF+͡_*fW K&^V	V[4n@Ha\`{%#=WC7֨c?9P&Olc1*:Cpj82Հǋ)Y艊|qZ6.LWs3LXL	gc4bh$&6k#%򔈝Q7Z͌ xEcj!H͵842Uxn[CC9*AB,{0aۢ%ƭQ;ܞWI|L<apLI*,	u_˹1Kڰ33ԄJ7;7V	KcԮ9-x82BrweSP'>tRٰaxFoU>9cN[ƨ!kn\(EҷqWVEGbYh;MC,cЙ/,6dTpn镺,JG Vygֈ:
\S:ܑ2+y_+TW^5d<h!щ̄+<D5!d7~	}H.(+t#֢P|0v oYͦޫdC2MFK4`#Hx%טK(WFm	)8DMOXkeŅq~ajY{LӼSP c,n5vHxr3S
˼Hh	()RIԆ\_%>SH1aFRXDo؜#[4QE@MS.$KNЖ1vENi,/4!#EG8R<jIԒP7gp00(Z\^L(WH~|QDnnq:l}Iգw/ ѣ!x*(7)i6A]9Rۭ
ЯXvá7}?Ⱡ.A)W;g62m'WDMq>8;00i dF1td\6C(:t^BA5Uy nauB=Mq?Gv^EUV\;,Iy%tDdGzǈf.A'Rx^޾&kgXbd,w1[w
 U^W}{U>oQ\NuެPh/h^1@/=&EڑX*rMQ
mtVg든KvܵEݎE̓Jf@Ba܋mǓ3u0==&BY,jImCn!0u5c r785 _k5?x5ش"a/\frq\2QP"*:+xؿQg3Kf枊";Aɗ`kֵKd+oůٕuH)S/=mULk E1=gJ!gD<C
K4ӧYȏ@xbd6^ FyeٛlfE1&I8?E!xP7\_c]M$,6jyK&ۜ2 H5S;A' µ-Zb0vХA,͈P]arC}P> ]7%*+\ҺmR
'I|Z8Y9 7CI\԰h7'?tDN!2k2{Ipe{d %o\$6V(I:[ZT+w=iȃcQ}#-G0*(sQKswϖ>,%
93AK ԗa+'obڑBs_'Uh* tFX/qgZ(`=(O(.6ؕI0H;ϟ>_PNKSsdQv<mKz] Ӊ
SRA=p9,= 
:BP`L#znF1f$+<;3⨚'Pj+Q^eqST7ʔWÿ]tv2}Vx)B)Т;D&K­`$5a\݌@ʧx!F
pn-fxJ9ē%Sh`)ָ<$CH ѾEl3c#&zN2fΟyS̫+|dNHyH#iM&[AeB-v6l{[e=9+#}\qG:3NcTҽw KNO M1ZyK$PU4T$TnM,ΚM}x==4,\+dOE9|6Yteb68:0 r×qy$L2D	2 }2%QfJb	FfA[I'VOk+2HQB
W{54M׬q%XUF[*pR cb2LfRO"Aqź8WoUY.md<?78UZE6L|	ϗ>EF1ndAi5c}(؄qZ N<\ߑ!(+\@Cukŧmf7VFRow2KL1cߺLZq4~2<r*S<	b_`mq<kLڮ )H-6NFkhjRJG0 9<q 8Ѕ_ź,(r%9zs4<J〗<Aa<~CSh{!X+N
60pM$&B[o)bp(mLAҖ>mŃ\ild]~[Ljk %:"!}1Rh
0QFmCT摸L$ʋDTT󹸯(̗Wem<l3eP)
^-vw{q=l*i@MOSpGa(d*@yDT7.PzM1
>YOȤg>Uȓ
-EHe!;yFNò'CZ5x5ʬ n#ATIcjt8n^o L8hBZj,^$MQA]M(n#sc8H
lZpUf	Wk,$`?<aMuuEg2z!*sY-~o.ctڶ=(L5a2eWN65n"|M',|3D%EK],'?CEC)rB+:NY)qi^aI.o`4wq'mfƍKkO!Au=D̉uαܷ5Eq5ûV'Iy_Tc/Kև	\+B}\x@;B/}o@LUZAk4GP5ǐI6>!ᾘDyS<^(K/ƍC1+=a3J,4lުɺОH$RbB1oP`qIJ	HI"u-*h)b`!Yx$vƦ9t%ۛ5y3|~L*4a&(5Żnѓ۽¢g{{8h<Nj[ib#-xtO^2(T/bR*U<R-Njziװ@'
5=)bX)T款̨Bö̌PK91i<t;կy/
*~'pq/3)\iӌ	2< $6ϻ EbZ87J7MujCK"vMSlo)J#x"+-lKf遥1s3l}Sߔch"7ʸb4pHV0vwe<.Y7Rh@u=;dԦ4/?)Qauy_1HR
S.xdC]i=x>YY(h3~:nG^ݎ7Lv>$5Q:6Bdo>X:L{SN+Xϐ#[0<n$eIg/94iu]dl\]2{1Î/t U+N	bnOT
/MQ**+UV$
;"upf7^b{y5&x+_Ƚek^;DM7~Hgx4d)2*wGp95SqOL%Q|j-+b<ܭ=P,:Vi
ZAB Q\߱ERt|U4gsUq_uliD(3pk3@aӡ42;-
6>46B?Xwihu?Gt&EkeHa3ys3kͳUK|OF4	ldN TvUTgQ|Ѫ5g-^8ݔ,ӃqXϴD,%ɔx0=& yމSG{sRf8_z%,	YpVzA[|*V- YxVAd#Z˟l-Ʊz#(\/λO[<<KQK8#&8!%X?[f?r*ͩm ɜf82T^	/ɧjPPB=,`KP>Phh~A/e¶lR"iv{E

hC#} eB&܃HjyoX񊃑jԲlf`fUȺsm(s&o2t4}kA`oW/^~E5(
7}ú|M#1Hp#eۇM\@bkMt62[ x EY)+<"%t&DݱwʒF}vANߢR"3cۘ`u
ė{8ƗF9RǎOqmh~\ ;t瘄V6Ie2LWtk]:7G4nvk2+,1j;X,o_WZ2V^vI
5ʺe_<QQݱKd yxF2 ŷ7*eg65/(aEKiµt[6
[<-^Xl{5FGqi*riF/ӞHe NZb"ИoGAd23jD7}ۙU[{yE&Z	O2Vi2hFܢfU^w.j'XT[y8޸RiA
)x^o2_CC^8.l._-zƫ"~k Üp#|CQ|5/Ζ^z+OEsatMy`:ykN.U?I2z"d(#@޴cfrk3q}IH۴]-vvDzY.OGWq=g󘒵gTh.,do̧c	0n4*Ћ9ϲ']C{S+|
~AiNDU"ݡf}B#^!1
`c\<	As_`<16ۦmE%[ct<,>
d\V,~agUDDU jݯE_ʥ6k
Wwb^bJ^-2Qy]-hAFt봷`n5#R-x:eHk+;щ
4PU|o*&2t4
&{Y)1sQD$q)<9+qmr{'uiRޠuFBH/bdkŧ!{2c9Te^Q2.L~+xgxe쥞1VIgEV
uus6_ÛW(Ιt27L_b{~,y4BP;HʟIX؍KjB\a% gfwRZ(Ho+)2⵭H%{an9ensL2mXuy(·J1eTuQFe	}~ayͱ?:mh7r;[f
nu)
Men
x)DRU~<$Y)]<"I@5̑.4d+ueAe3y3d}PzW2UїO!V
SF2&f<sL0=/W`f^'+O7x2;Uc`,,ۡ~A򶴎ا8&o|R鬢aF#AC$D!C[
kٚ];$¶oXt&*8эՄ[{䓍_WTIS0hV)'WL	:WIyL]a"=o.:ѳ j/38([j1w?4c8M!?2e;7n_+#aIO(L :Vy	nȺHtXW/OI=JHry{d3K
9ah7SY[{[bYʚw9I 9M̓+9'.ht(#{ol@ΞHE*U.6DO
6Ɂ>~_D)j!|it%"dcΟ AoM_JP4gN>qz<%9lF>$ӊܱ#_kn~H	L->AdvtQ_vR	n=H\eX\ןà=̌))eVN=#/mj=%ƮÆ?h^<n,3Pr(UިjsVnõ]	=vljne ihĈ^4sǶ4A{pt|*syjlMx<GB68@}ZMO&oeP}wĠSO6cfBH8:-2W_ u@ڕk-}	^;y9%ˆˡY!eߖ<F%Q:M&T%nR m(=*G_ȴpL⮉B-
\
[!Oٯ%-PXU&|L`Sy=\ctznu"xm<īa?T cHΆj

 enR'LYis&alJ<?e)/X 䳣*}֖G*tX/
9M*>1LdW_SLsy,n\<"9a*gE'@{\m,neOq_/ŧ@.Zс`8ՃH(Pn6-3 a*ہ
kl/ ˺l@D+F7k>≣;gQn8(UxKb^@0bZ&D
yA]T4
ڶ{;jeZ5o@TryYɽ54,F)۱rB'fލv/gM
bU6)S*	H`k&nVAxVQ;$!
Vbź0()qq7X4&^qA(탈en=N(o}H;Ht2&0v~!صT\câ%mwd&zGgBS]Դ7A&~AW
ΤHpz'G?ԬLxk(411-:EH}>&`$iQP4ГG`sHk*q**	۫yO`_a$Nra>pqp8ԪMxNνyXC2wGAJQ(D#PaaOLD#_4mjmDl518~oE!09)Ki{>|1:>ڙvk~ !+bs8NDظ١b_$.x/l>^Tg=[,"ZQ>@Ӥ
M:q PI溤_g܃B7h'">O@;QC;'S ~B
2#T xY$'2;W&ΗZSrR
x3hw\^kֳ}&,d5`<`ۢ3gQDDqO'OˤݚەʠAhZx-RG2])(/@ge5J_Ѷ];K/E4>@`PBÓ8i8Q#heM^Nn"5jLNb|A'P#G(v<aTa?fG."'1syd3OƧZ˜?2V[RbF

܌1"^Y#_UpA"~1Z^< =b/q;QM"lL;#L񥄯TMa5'7[҄R&H'Q8]ĬhTmK`7_*wOCO)G7'^2
H'6ɜMf7?kЌIfGCtA1_.d	4p`K	aN^oh]ԅ
ZCC1p:˷8x/P!p/|- j1־b,y%ov7xZ
w1yppb3tY8'5_(0U2=B/Au96x%'6SuS`;md\&r19!M&T;W&0WN\rg"䇁0xep00q6U9zQZ%@@4mjBEfiJݖnUa`=A=-lKgPƺ\WUkta/]
@@G"|ǦC_a`a3;/dŮgq'D:+._Ko'fx}
jٲ7Znh~~es!0h]V6;D΀`ppL+s,$:f1Qs=6Uza5lyRʿ&ƪ:I{P:XBr6f\"OzBg*8oC>UR}-6D)-< Ci19\j(d@՝?uF[7DÜȊ8+RDwyy5ȩ_8z0MrLv1ʖ?9/3c5D{lTva3IgqzL(dF)J|h?pf,OҘ$08rZ*{T4`%ޕ,ì.l|\fT^:;8iEgEQJQd$~;ll,o*܌>m4kFs1T_ƻ5|3/KƏ$FϺ[524`+WpC|X'2 _,~e,g)UAÖDXωպJ^1et8	d)aM8qF2BTj.B	*O>'1bavBk/D	UٙZ1Pl[+3K#LrM\ͺv.AYZܛ~:\+;rvAfz,^]bֈ/; 2^v{*S ,C9k<T|l&kH<2fmRU.<[Af7VS僲y#PCgK(|XMK. xL3q>E2oG p-@.3}!*pY>r3}O"rad>ad%*YmYa1!2*C܆FL`x
/d+ߗ؜I,ؖ%K/t:i|Z@Z9V2u^-E(z1u[l7Wf.-Fؿ8Zy6~=&&9Ǣ	n.#Vu\cW+4ہPr
|WhD$VwxyX"jVGEEN{؁ha\-m	r
].^MH^ې7xQyr)Lȭ6?-cR:<=9HƌjɡOYA#|M5%)yQ'JٖS:DGȬfAQÁcy˃
 Lb":9LX	[4m)=!~nL".ktY{2nh d4H.&/p4#fIWsm-DřQҌW怒ml䩃հ`ڃW~g/{ٙ}	(96w(mOq'&&#
!Iy(n<6/wA:J}q8
J6ff=ѥ,-(S]pbN$`iYڥ2$|le|'j ĞKpeL%D掌T[-PY=3k?MxJoDtl	W>QQ.b2<qxCdNot!#cm^ƳiH+0a< .+Z<;ssl>Eքy5f萵RR
gg)E]C2_GGc&iu8'f;
h㢬$9nM+l/`"89(,|M,q.tB'dcq .^eL'"S]ʣ9yGHΐX"olHӕɡrk^`\UW|KfνqW YL;w6T,>|<Uw8{
BLZ8MRȫY4w,eB`-Vjg9ߘshTڰfvV.De/ Y,lD㪅F4$KQBÀbY	!:3'Sy@@rSd4ocTx3^IMQO4:9vnqKR`'uWew4w4b+*U:/&C87:6BVprjn`>(R< wRs/nɢgZHbs=&:J-˯Qϋg,Puܚi37`v@h
>wfGQ$Vc|k{iR 'kqxoOXR`	)<%MQǰ3;W⺅&63Qmժ(.4"uVf1z ض4>߯4ZvTgC
қ1acdDGɜp5鑎sI!YVS0"oVL
THb+Dg.n8:A9[b;F<6!Y.Tnَ^Wǃ1o>/VGHQ J*MhL%ZL,CKo'=chw2bGhL_Jդ8N]0絆_;pP-)HR88fa Ky{EE<sh<C]HxN`]hoo^0!#˸Z'O-P7iHpS{Y}:<SAL$u7T$sCK	zIezb^7 к_n]!*42--iUؤUh< ln MǑfM*E᫼
FU#Y~A %|UΪFb,uiyP׬K'$*Y!	`!.`=hޛMRL=1И}-_q8ٌ)Ё**4Z<|- Wx
MWXqbTk6mgۢ7m
"㡆_ҔFkVUdI<فi+0K$->
'M:̻C7ʱ| <*/G7}UL6Ok;V,,Im΁ 1DFqTqP6_tjEp9vm,7!`Bim6wbH)(g|7K B*ȐwӒ/d٠NIh=_üȽ<b"Fr0ż \BT{A-FzOTQHp  7c
ZfNyL͟4i&Ls;^+{$ݾ&|Wv_v$o|m	*_ga?=ܰ]1xXQlgEa@{#PIhzEH
WKS?T%BQoCN$C>uף`cqz^VV1jjA]bWf
Ov&0|>>|Q~\tM$mswp~LUd0<`Hd3;Q꬐toXؚ&{ ++R,phoǚ/b673N'6މs(3/ރݞ%1	i*D:e<>NgJfl6Qt6QN	l4]fPp G
 Z@z;,Z5jǳTD&>Z "Jg"=	QJ>Y%<,.L@S*xۮ%8Ca5uV!eDR)n|jefҲ׊2]C{%GS1W8b'VJkֶ->%Bdn1&G랬/bSN$%lY݋l.Ҭԧ5#bR-Z oDݴ#&qqjԭ!EP JQ
9'qn=zXoW
]<8zQ7ZzE	&97gHV6$V cJ-B+_:$ؙU54Rd#\r'g1/`CX6UX#aS[03%+Kp~
>t=[6:&<8>I((Na)d$>9.vUl3n҉Y~rw
`,w#n$i)%ёb&
U'##9uZ_=-]i9+Z'wx*
 Lɳ//j22#(+M=#q(Yq-5)
:@fs"B3ڥBr%XN
%ԳSeHKȤ/L[sqTb2S&x[#"1;کTJ!crBk.d4YTbG,q=Bn~7>XeKeA7t1W; eb9huZ((2eEg3-*z)хڗlchel;իM}Њ+72s'MSba["g;B	v#%=H}Ƴg5qu~Zti
3'O~/SHWx':@Ð5ɷN	7:tD+spB
YWݴF=;"dk%yӺ)W4?Ͱk%O+WaD`TZ7Oc,0so)}y~tѸ"Ru{-nީ
{26/`I"PYBm.>",P)@O L"IX
,pqz.,	Ag[>IhVxwt<bI24jȌ|YAK~d(S 7>L([6}F
/R/USgu.tr`6B1τs^fW	Մe &ؑnn$YjOF82"%oU~1XHfzl0f;~F^SZ$Ջ(3n+
W,18#ԁG-\aJR1\}~HTJPMedצg8HԞsʉa=ň/Q	]0z
"Ջ?]y;TxXl5jV	*]7.uPuxU<T~uG[fUϐٿL+XKfM,6s慊vx6
m&Egb|!Ū$q]AC?U
=TlɫWiB!]:ج$m|̀Y0/ :zFb2Nª9
v]x<g<C9,u``Ibڇù'Hu.J-b-oPBG&̎4Wt'ňkJ*A8-WC
=_pQ^RLT+F|Gd~$`rY^YgY@Tz8AnZ64S6%R\*^E!:%*
@8A7X_W9atGRV6$ot
ѪHHl@K=8Xڨ(<jhÃ]@ݕ(HB"eʇM
)Z7xJaEs,Kw1:tQ?³56̈IhgZ
w
qZF] 'ܠc)[,H
STl]U_Sq>wādLKӐP*RVL_UHQ햘>;2ulٙ_-7o6
lN8Jt,"eȴFB5=u<'nّKil&$`@M/Y< ́w}8HCv^v	.	(T+:3U]ˮ
IIR =Ug-*|8E W6pc%} [vS:L-WaB'nBK.'V sb{1u;g3eb%fފ&(08I[SW9H6ɦ38
h]d[-'oȧO\@lD,@dY=m"suV1k$D	*j)uł-jq,\(2QZ23SB}=Z)wgF%UQ9aalsx7fKN@#шMn6 E =/昐iّ@9xŻ%~Sk#2
DB'MA;R)SzInR(V9D _2Ѹn~\Uն|H4*\P%Oiɯ|ew_^VS
dN CEP:yx\DAG`8S\n'!~G!|A?MϒxA2W.M|N"H69jd|C#6 ¾EO>tj1ۘvhȝI{
BoeN?%^ʝC/0G*JQyUXY`>FQU*ݔ᡹fCt@̜	d'24h奫:Vpv9{Z20.I܏Y4Th?Eץ{/cɅ/
esxAkt}PlCz49rte~9iB$Bdb¹(2nKi PWπ苙'HgsR~62B`NxH'% Ri󼣧&e20ꔇ͂?fq[,@aOӫ,3ǯ%"Gɜo&hU0;
:;frҔ7?M@H\
!jwE<2nCuZ(
1Th;NERb{pDrÙĝ5D;jNHlz7b߷b`1XD5^@2<Ak0bp+yKTkQ&T0ak*klYцH;3A&,
;F$iuUR.teM~m=O@y0$q`b^z`J2א#tR:19FYG^2DRZ$e@0J،d{ѫ!Ri<6wXSC+ix.cQe8dS)
}b:c @q>c>+3.K
e]ϝW~v
6cVz2_ˋsPnH+5yZJk@1qp|KLKa4<Y1t?R_+96̹.`ɨ
YUJ vzvWRDXc2
 S&0Թ20vo~% 68>m0_ΟMz	`S&Ӫ:kbHfsvxYL
T`v8x#歬%:ۼ̿s갰e~J[	93Oẙ<-=>;ws>!rAhκ&ZxU&аfXu%BDRa'FVs*b(YA~x /66m'ǭX`O_ġPm"P#9HFY(9'_AA`ABEʋHxUԘO&P="C[MEr$.HX(b`;CP&t]Dc
>4dbj]0SluВmrwѮt9t3d<P=v;	~F%Qy9gt*RH\$	p|9\'Zf<X-jw-^EyѠpP@5VF\sndGL6:ɗM@+FҰ{$^d{ b \Mp)BmrhOabV[r*@[q@r՜GBK;>6+!
P蛁ohF2T/Wv|9Ye!ӃvF%w<|}.X09l2e:;ٕ)`3'R0̣<Llw`ɐn-K@ &ϋ$<&YFg=8:'yqC]P W1TLy
\ai4/ ;92!C=/VݕW*XET:/3_q±{&i`&&kʟ)sI@&-yC591&ed9N3ĸưoXm2|Hos&}2uA.>[EV^-0IKK]8J2\]ЇuaoNozK{R
yi/om22Ϥd?Ćq9=g+j3fjݕ9N4FsUIHd,̤ad^u0r:Τhm	7TBf`/0mO?dtkV/
ie ݢe]KVƙ^T`ܯ}1C5:L	;T:@1Ő PCnFKu3ypN'}8ObewƛG
{e$Hud*zh	NSr(ʽP?nS,(ԥM+$cWL2|	Ru&BkffjZm
aR8NCDEF*.%>4pj!ӷ:s:0U&BDCGXu
dJAK<8	/N(Dkp-qU*nR<HpQiHe
 -HAHIЂ]Ljio*m	N$^MA`rju铨ëVŅdy,=DN#?8K\sf]ytdJFEgYpwG1%;ٶx@3T-hGZ@ҫp\P7J|xsDpC)¼ue^IT?l,]YA+43"b:ƉZ%z}0o?0˒eFCCͤ
fRr(7;4	 .y
j1ZEv@bcn
 	3#R,P]]q.% f *wx~'+JGRA ((~⿨X[zA'oA*F9ԅ|`1KEʮ~6:AT""IqX%FI	P3B;O`rpV1t==Yi'ʟL`67*c:#q+`EQ[:xUM.#?uǰ4
\jsHdMQ rGQ'19ęnqّ@m֓A1Bߢ\w\ҜJOjn6ut%gU1A}xm_,@n
@74nz
QefT)z"%N$7饺B؀,ۛQZ!|+THu39Fr}6΢±ֳ;YRC|']#v!A2ET:J4gVh<gb(2ԓjcG>FIR2ypuB$u7ţD)XczHֵˀ
Ťюe
mBj
!U
gZ됔@ADHkБH뢩<Bm+C6!>lؘ;"ҥhn]'b@N;7|5{QS^GUɅG1TswP/O \x5Ti<NY"44
GI;樱̄-[<\Đf3/mXd2_4`Dχyn߶HkDC,P)=}`d-2/xyƨs=;Ag[h&6!'.+uAܫYc7)rVq^
2xB^% 7p7pRB>WQ9J3+ ZOTtmаlbx\YxCe.ECj#jЎ	e{rL5!_D֨J+zt	C.)6\c#РH\o2	2˕!*RkX	@-`5DD0IEf".~š?6Z2UDv-/xöTLrut*BVj$0%~L<(&lJlBKŢX^^,eT5lbe[/.k=FvT:C+ϰ =gurPʘ%!<T/apg[C8ܿj	܇,z dW£A0"a[wt#p2bdթ?fk`V?᫏A"K	Q]sLf(GT|jXZ]6hko(_d+ӛSLoK;
L`mh/{I){L

Uy214Y	vmSTrnєW܋yW,ʀw]:}tqP@^~;Knv2@OOa:lo$\%cUz.ޑhiSLI2*UKҷ<``GUsWi7\Aj׳d5.zhx<P0bT(WUk>N[}܃xy/P紩<2eijS1w9.S尒?˩
A(>|SyZJ}X
y1xRg=20E#g%}{m3+:2 tMt1t' +fXDZlTU'
^1KV$c#K$;)\KoXR4x7sT8]kR}J3K@__ 7BrT(ANHzl@Se0b`´cDI
#	ߟ"fXf<UOP*Rmr|õ*4ëVL˼R(}
y=v3-hRN&a1lɥ
=5<JOatMg@[qn/&~=싨uRvQ3QӁr3xpt5ɺ`eCMBak~oP:BuT  f
t{U@HlۘO7(`DWfV?@"{.<~x@Z :#y@`̗ⴤCP.J(v;F}iQ|0lEU,;YӉUP.
Sぼn{xaYHXO~dF7dettqUtqQD$>O*dNjO9
5˘.D+5h񰅟Mʖ" ehx-^k Љ
6 {	1ϒE_p{p_])a<Y
Ƈщ`۹#hX\RԲ8X2ލCB.{UwyHS
mD2_#݉K*ƉUiR$
RPL L7_Pp6\No&u(ăcrLCuM;cD.g1nQ&E$**2pND
 R2Xl[\2bSbV9
I5`wQ7ZTgpajf?{E
$ę+ZU_(8.._fQ!`YêGdK90hx~,ȵ9Vd]ER$XOCrN<($/ńӹe/9Ef@/|R*=Pٵ/$ÈX51:	J B#'Z0aQF3C@i:t["
cGA
J!
)Z= 	muiQ~C`#6$]ji\Mj>D*aڴB@\$@1u 
xV~FuT\`ʌª`>1ңc2m6|. B}n$GGQ
q-[x0#B<]GB2eyVՄlW`3:->_v3A9pȊu| u[
xPc/( ,	G7}=s+@b
r,cyHA= \JqDKT'Ѭ5QP-ɜ8g@CrQْ"C tn~J@1eȿ<墬(x$7Q Ϝi o>Y1cpRl
Z%8:gPd ?zeI!۬kiN"ӗK!V<+<FȚTT
Q.	lDUS؄+X44(^nza"LOcZCxw*fͨ9$nA^5(u|Aev@:
Ij1,|-e:>gs6gFz@2o4Bo9IP]%˝2~ónO6^f<Q]o_,Bt\*wN$&!)?:Iƕpv"Tp$u0@^S'rB)qhNuw6̧"'xf
Y"oGE"[
:]X_Ǥ[Q tĜ
*\ITnTX,nQ)*
z!C5[%NQ~_)[
U@f d
Gn %=;[{G+'~}{a
7'HSֹxow\+4o*bbSbs[<KoEa)O&l|k$%Muy!4`|zc&Fs}mI/sZ1bd2j,#!޾,&!3{nGTCUNUàߨ}vKD5,P{c=d%Iy՘1,&"NFʖidmP)v2.`VJmM,I;C;tE& @
{
9#S]Mn,%
f6tӕQ@$yP/s~hFj
KnBu`C'+w+onVוα:p>^?2x!$/J
puYVY*x lG,jצJ 9Y
qx4ٸ[؆5</!&B;q|wU]q^
%>,ύjq3]$g.@j@XӦt
%PGnDKq@5+SI.t,+n)k"X| -it
79Jmlz{B%G`9
Pxšms;UaS#qq* "/jc"\(T}E2D;lWDmȦ߱9a5ic)ђf>@L_H1yVMc/de{Ֆȣ[/f
fʍ-QFft/Ex_Vp*)mxөvi).${{i4ai&/wmfuzRPOÃٳ|z9P#3Rp	##_g5+QO4=Ŵf8 R܂%rۜ-N$ :;R08cM`OjA̐\wETūx+ec2B.2ub֞#`̏O1DF޲XT"hjܑ
^'<֗-Oq^ݝ`Fc桮|VGBax!OtND3nV }+$daC.h]es>H-o&AeaJMEЎl qe]Xҏq{;2Q`4YUHǺ&M|Ab 8"\ds|G6iPyB;pc-ؐ7L%g @Q,5I}7 ieUv@
HQkEu[@ql[+fh)Ɂ;$MtV	gop,.rMU*cۢܩjPH1APxm7e-nx=>܏+
|HgxX(l6Y u=0&~}TRw)N?Q˓3$cP]
x='TSqP.Ly=&Z<+%X}LNl( ",G]L73Cb뇷EvLU˄NVȕ5/
XPXbF2G߮_!Lp-fU'KŃ:'|@F$QU=b9BoDVp\0>-gE+4cz:
M^2VT$S] NiF.o:o5l
(O2tE^R<iIur2L66S>#Uz<ic .㊔
.ZLq
@"\@P}2ltO'e%ׇ6rr M~%|#P `jWP:0uxF'ǃ
6K&f8*Fh7YY5ʝѨq-b󌨭Ta*˫pݦĂ]0gf2NWwȃ'OyՔRѭ*p]1"?,)`r$8, ]jC+Jů7N'`{jF@>iW;GLU֡x/Ӥ#~!R@!'V
˪EAWͺaZI|"mC'E$~;IphT- ?OΖ1A
˼X+OcuxfǈIVH@6ć嗃"Io_,z%"#X!iM5r7=E2"}OKrUY
"?a(k܉c?k_Uib3=wg^HߡLHd`D^b2X_RfŖdg+?Fݯ#b4:N\BaĨQEO3Br#fNl.4ԯ˪3`°:b"*h2	Ǭu4oEsqkNl}_ۯ5֍%##xSԞY%@4vGb>`6F%/VݱX#v|D11E)j2BS;b.WQ;DY޾hXOIkȗ_b#}D bh@!DWvz]$,ABI
{$FA2E? YA}LF~̪\N<$&g̃#5N<tj&_?^"Ś;Gk% BN$,K莙\OXpkoi/zwc^z)뢷"QP@VpE[oO9!^f*	hYIX$zb찋k 5y}:O8Ң/̙K"ܤ¶ 59Uj%bQekm]0U
۪.aM7IIV
fxuxJpGK!g#c%Ĥ/mYdncR4A,j$U
(4fȓOlrɯǉQImMz7jC[W'z[zCmbNy/q 6]ޫ<NdfG7\҇q]%TU5ϓc=B:owц	%-S>~~٨	ubg>G:60PR&X{y/1/y	dMs[Jp:'gric]okUD,N*Z5\#NC۬3%s9rl.j؜K1ӡɠSZ\(т"f^
T'"nPb5XXq"A>$wwH&s(r5+Sc/s`5d	s`cd.x(0#C֢jN\}E̒ceHa
h%}lΠFGsT44G92oa|.+{rEB}+"52Wcfjx4d,@"aYx.6aKg{6ݬޱZ|VߓDV+qd=:BsDi"</Xvg&Xm[{ArӺ*bUIm;m=3IjO  CH?S=TZU:74}c뷹ěFum;*&#.SwUz GPxܟWl9~
hrV𤡸0~k=ے3K!9$R吕LX_v#<Mjts^ED˰C$	T[[	Q
mɶB,R4#?5xZ?Gy2Ni~'ЎCC8MGeHI}Ը]A~fI m*Y74pH
ٍb(@8T&)1{6Hax
4_E\Y6滏'P	">F#l+s3[W{"a{b.p2{_9k7p
[֮]IZg$י-]+;BІKM.uˆB'sT<Yf˓~+ӗDCoؖ՚5ngN&Bڞa@Pm
n
/ ByO+, rCoUg+`tSN-3L>$NKDO7nYOhg-|oDm(
!~	aʷa<
+&:l̓.?:j}0d&"
WH:*۩#PzЉ6<28M<sB&^զ_>XB o<PiB;\W|έf"meA7:s
w.gya_v'e$k_LjmJڃ
>6s_r?9
 ;OR:V^lڏ9
`c/d~	b:F!-+ތgWica!XњvXLFFuG8"Jo0@V?ǳĜ_/6Yu:=G8tULZZ
.}a[p2Ld,kLm9(+)1櫆7wˠːM	$ 
uixVIk྄%xjǁE&Js" 8܉		'_Q.zMXg +`<Ӟ]3׻XjT`4C0PYx=M|viBS0p]lN(~jZ:Ċ#+~WZ!=;`+Sn2N, MĢGX0%F fc/$鑿Y#ٚ<Uv+k_J-ѮP\8^ 8s^e^"0/OE^\ĄuCy`
k@ vQXك8ކi(cBa
7/WbV/̕ފ7BTh%d2T$
OQWF6)}*,a֧.Q
mME3d$H.G˔1?FFP,7yFǆS*5HaQ7(Oi"
|5٬m)ӋsW-ZuK9]ef8öUNb
G {B\li6ՙ4\̓ap:7n^}$>fwvD{j0>|#oQ1j>5PvR0o5r/w%xb!j(Iڴ^MxS=ȍ^$Ay<i
ߊ=_̓5!{txa}2uY\ {y*s%<+je?{YgXrUs7D[_F%r!Z-EbXpsY_[DUQ
S[ JHB`&n̸@$L <jL,ԙ LN]8^'$c/
f5;:buVC 獨.P8,Ɨ\h6W	NCrff߇x 2bٓeEld4t2wڠ^q)-JZŠDm֘riI!ըS&i 2%ѣ'G'o@E۸9y.tp||XB2L?Kb5qvZ:`-Uh2AU&Un=֬磉p^ֶ!g/_SY/q$_8X.|t&GFnG3E~q
j*`d*=sUwNAL$'`y:%.R.$x,;A&!3
Y%9/蕫DRZʰVju	ld0:̌\Z_(C.'rT(+3ű<ÃեyI$t|/;Auatr d&$k,PuVXb[
֮M#3kc7	t{m"ݺ9*oi1^s*x1_u7̏Hz8^d
Q8gmKd_5x#1a}oDa(
[)9w2#8QEra-j%lmX-
2Z/"yK\3J'EO`kJ<
gRN8$&C.LV	`3u-\1}Xh<}
EY4M/XuH
_-8y/͆W8:땣3(|DmIȈ
$͠(Ej)ԤYA`	v13QPkGи%d\]XToJQuyiH=OdR^NmYT6r"r3χʹqc**tR;)J q+\A&QRRRYi6'~B#1Zԗe~My
[`92|P}-,683Hٲ#Y -DmepqH3(RfV jF3 O_ 	q  MKŚOK3z'I}`&Sxg:d\lAM%mN̮M#Fmr A-6*
eʧ%M2>{u\;'"%
L+ВidIEzUHӼ=J^#F]fQ<Dzp]~␻o34@FB.l2^,]p˜};KIQ2OPGB{!;Y7©r1%q|1`RDeU,YߕhMxՓe9cuRy՚ D" R'7&<
%#Us1SS4::EZruP:~kz2!

V.N瞋!oiT/uOkV~9Mn9aNǵ =_QZDMy
V]6
S C{WǈB*V0-1%y_!gV9F&ihQVdLhW5I$HڦȭJX
vUA})̛ Lg\R#6UGeToNV0סniSVJ,#e#+hpnlF>[y INd-lei%ȡ8[gv Hq}/R2NAw6oP&U.;PJt*y[~LfPdvt3S&haߴ \dޟIUE5Vmڍ4׬0L؂LHdJHJ;U2͍	qǻRX=8ℚсlt^E@dքǪHyu4]wÀjS,b3(Y6ye@gux|βY.!?cz-ZoL@ړE;"$.J99<8NyG&*!oOk,2MO*6Ύ	=LBmDq47af%e>5[YL E"ɱROČi,?ߐ >ɜ,ь/p:|w:z.\
2rz1TPF%bdl@=&J$޼Vaò*  [իo2GEc<~=8&Tdja\DNѳenȗcE'TAdHUC+,(2T OİmH<x㈮r"=@볮#V`jlUwd)
2'Eq+Vw&6\EZ_,<|3T\"
)`#ؼb {p"=*Pv*ud|q
פBw.KJ	6yJ:HHmޣ])Bgi+=Kd2_j
@_ä;@Yq@Hl?['WrlhЀ+Urr#Y
/=t*&$sPwaHLgrx2]QBp&f!R'y=+!X+0ts7>2)PCN%l*~"}ChR5hm`Ľ^{\2EԬ!5ڥW6t"!h#%]ge+Iw=~oT]7\p($'=KCHpS$Q7^9ɩz"ݔ<F[^ۄ/"XaEb&o0_/^zr.mt%4Ɲ4CV;
)kC0F
2. y9"b;\5R(V>BC8!sOT9+u+`P[TuN+1*ĉ|aqh].Q~
b+3
fG,굘̱ x+(" TcYth=Gf>u5~ُ>r튳w^l[ż|c`'9s{R"ٙNU4I.F:&iѝ?oӬlb[|V[Fc@r˹c*I.؍o|c;/)nً3	&Y4"A?MJ4/!	½9<Nō=Z[QԐ\.Sti	|_
&gζ!ʈ	耍`I)vgwo_B-s@S+
-tfD-(^tIcהiq<RI	Td|!--Z-ZĎVBzxꕕHݺ9
+1ʔ[/ |I*P
_VF98Jl&̵h7߉Y_Dcxq>%:ٌ9h^3ZKw&7V/YǛT%CT0B)sf-e7|@BNBAh4$
D
KX>w4"=rM,h}a*;aUpQ~'CMU5V|0[;E0[6<s|qKB.T(!!Y1)e,VL&\ u@Jc7J%O!1	&+ˮR'UUit~!C1Z/+((LGudyXE?*FUWRhm \v.~ 8l"p

zP&7}W+.Ur8Զ#p.(4,ш ԠUzg^I\6&X\O|;Y	#QURɑz._CU1*o5?	dAp	WS4Nu&|\Nҡb)4ɓ
8Ԝ@NMa W&?JFK095su;IE\և9+KHqWޖ7з!¨B	2CW
,$:`kLG4P#ȰxZRo!R'jsu94H<=WeM$Ռ@/nkJu+poI.W%?ᵫLH
z$2`yrP54TCE0v%@J}@u5wXf/90ՙ	%(1;τ4SPxo)CNGyZQ|Uy@Eݓ}o4:t.¦
zԈti"@Mz/>#  B)ai>u:O5XKːiv;Y#
4u[Rυ0HBIK%^nak#yf(,jqpAֱDx%GkN^szN=|n&llgĻ\QetI^؂z+&\3Ȫ0?):Pa/|6!	ja\mcQRzdej	+زJvI' בO>b}K2Y+2]
ݹ{v cbW8DK2$Ě96yv`å+z U_^n)4_'FHAII Goiƾ\Q/I+DsZ*ѧ"U&.XcJHm#y&Q<\7*u^AfYQBo&'FD#:ocި,ng#Eڰp$Q㇜\{nP @ϒR/izm4'VP ɭ L^e\B3dv%0/'(*fJ梔118:ϥAOV6ʄɼ\Tk,E#eg d)hy~AF͎8)Ɂ\B~!LЃ,qM\ˆ]Yԙ_;jyD1hJ4c-hh5AZ@qb@~fZ؟m5
3nQFJWWEkDLT^O!x&C= CF]2dt
0e' Pyks*
UtՇSQˆ2lzD-<dyNyu߆m7lxW`K75L106C7TQF;n]s9cT0?:67fݾtfȫ&@:TiғNĸ"~`(|שщwk'qyGwS!a&vҡԉ-"M.FXEZQ/(3axy_
0te\.\R+h~63M9.:>@}m&<YYjbz^Tnguk$غia
5]%pPZ;|;[¹Os F;+ģYh~$˝@D:ᡸV`+/题QM՛S)X͹V8&UBNk֡D`]'u51*byoJs4Rm|2j*ro*1r;<&ԣtgaCJK-d^ˬGBOqZH9p櫪O*t+NP2CAs2hsT:3.3{6MI]VQjGu:-f7NQ]=I$";IV5"
|m=\c^#hFyqeJw53gr/W+f'Wkd[vK\rE^Dal(ںY;Btt%WMJz1[G	} r	̄"OiĨJE\&i,4*Uo
EpT(⠹΋1cئ+"W@;ԣDqd
=[yYE	gEV_*wtU'l29A1:X?(bJj%~C7͏$M]dDCхj<dt9Y0vÉ(h,lc6]
܄?tGtb|ؠ2JTP=VĳY2'>SHm}r;[l$❱?o{kr칿u
;P+d*b&(A^e`k:/EU[cLٵV,e6z lZmjcLp*g]cx&#i;m:GWQ đ(>q"?1ƉmMug*#l5Q*76s?X6TEB
.6d\Vz4M]G.ztTpN mh
8}9lXU`ɪ-燯I#n-}1mLsޖ˺}X<4!a˺xrB:2``/P4r::߁czGgρffwדېY4Ę79sWG
nuRdL=P|x50UX/;(V$:\nO-@}$l~+i.5[%\@Uz0FR
,\Nkτ6Co	q*}+|ATk>H>RB-dZ'&r5A=ԉX~g&-|s#Ya2tAP{^1Q)rMkYbG}ws&{â2N Ww5Rƀ3p@ES"
>.XW{xUtb˷C>R9S6k\x=r~BJ&Uǥ'/鐰-E^v!2:BzŦmej/+U
YV*zB-*:SVǳw10EM6zVt+dgi?p=Y<^#KB8P[Idj{U@LŻXc޻3I`
VL,KTdBb::r)EBUS=ע!<QOKUaP[m@30lq+i E
Ӌ0{:*ڦ4|pkE4bXՒU(eΪpd'ʸaQr%3OIB1KTJ> !>P"d$a?tjeDM֟m{]U.SZ>/w2/k,[Ng56/ uDh)ětI\A$Py=2~E<iT8iF.e	_rj.(|,9|:-ZfbDlTwp =5@>X+$`#Eprf5/`Pdkz*QU2}\	bF(?[k^E&^ @LB7u2s>WRFz	)7OX運[l¼ʫL
!`+Ve=e?lgvj<nfTvO	&.q ̔d3R $l>{Eud\
Ψ^(Eo$R>2.*<Uc#3&*2Lf=f >Q82K}٪[t21^44JR	ǦXPc(\bCb2lJڱ&#
4VM;
kG&7W˺!Pr'DL+)1)-h~;jlQx%ؤibll(ԅU;I2
`Wo0MgAsmǇH~^-BHSfX>g K,&Ey<RzD$cEfIBH`MqKmle{z"
IDYb!U+χπ+vOQ6[GV[SX{nH-	T
T]<nf85ٿVM~9Ɵ*ye[ʚ0?,IIW¾|bI4tWT;lWP|?6gCWzayv<ڕأ?U<ҕُe+rMLHyF`/9in;p`YA6d0p,Xvē[l:swFFyƌ&3(fKz3vqeD5F2xj;!o$+9ڶk+ݚةEZ~* `AtmMZ5daiJ%F7F\!C3~r~>:#Hs0qL?yFڢO0Uv6̐	d
s3Z&.r%w3WB@'q9~=H 6>yiz4 	==K^KaPM2PJ(/{YؽREexiwt27OMtow2,;PO<V  c4eTVD
42L -띉E+b@'$`(93{qVrKE{𤽚 |U(~A{1t9Ke~7ωTxʄa
lbmX#Ŵc;@b0[Ѽ=ZYKQJ2E#K f#
ћ`3(S!h3=k#6LD<2#;hzpN@Zf%B;ؓPe2kePnRAJY#t@-;ДP%L&{\(!_2Wa<ᆍ'c?Tah˂m/ -fT(mbσ6jm٢f;
ɮgfxK}x̳QUmOcs.ރ;XcY6}]J J.L+D
Dހ Ӊr>+9[hӁKhiX46h*{U&8LzS@Ă)Kσ>AdR
6 b%_
R_Z+-l#$mp6#<:^l{$p$9X9B߳RZB#̊+ﭛuEF
=A8{w@87|pu0S^4`9b ^ݤk$:,~=YH^qDVX[Ōy_0tUȚ0ݜξY}7;yA!tD;CT\,k7֕oE~K,H%(ڵSf~N_-
(!9IMdy:Nddh0f	\˒v23L9qe
S_a͜uL%N ~$2.mDEm@-Q!9tNAX:~f(oX90v0X~UK]V#ɥfe6{O>	
y{+	H&dy	i2DUeБ*!9O)L5b}&6Ihu7(
9.HJTB]-[SOqMAk.Ey@[e):W3LҪ3J`ߦ0׮@KY.m.j	y_+475@f5y
.Vf7HMlPUf% $o T|U!-H]9c)ΏS~m j0"B& ɰ0d`MlR-iǱ	}5d.T4ӹe{/ͬyBZxrĠT-R7-$1Pb>DfzDb'd}ǵci3y'E #\#ڤn4ŵ+V[<Ahl+"gd{X;le^qBhN8*Dɳu.y}vUFu%ejZ]wGb`yS-Hdj8F̌P*б|z% 7+
]\6{e5Lrva`mL'`b'kH:fދhj*L=GYfꨌstfݩXj:fo+Q_%rMZcJ
ЦQ-\ЇJg4Ӆjexl.g+)AYHAdޥ<pS%HRf^̗͑՝1T9ӂ)+~%IXJie4Xz#ь!ChUX^ʪ.<(/[p==m5cV=yGGwSLKj(cXMD@$x|"Vad	  ك)x`P:)Nn
+b,FK3;js)$,Y9ڝDQ{	j1/U)rt^[GވfEn ?q'hkUyf%;!zM%.
9YU1醙}*f+)u޻W=S?a&fJ&@ :{[i#FːxxpXTA=#T\be-O@>%ٴoUiW*`1gNXi$,L114WԳo'J?~t#X%υWE'&	OdR-<une,5evtW*b3DG
E*#98
ǫPpJ"vdoI:6SagPo&~xy"r:O"BV%ۘ#]Uq}bapJL$͓@!GBꇮ"I^D6X8$.DD2I[VmyyCsn27lcfUnERkKys.h3gwBzL21TB054u!ƨ"8P(ݤ|OyL֧g48H5<iơQ{$=vxZىv42J|뤨/x"|/D-օRސ(D |?%R0L~oJ`00V]eR ܕGf34']̏R/pP9TtZycit^cx	;b0b#}oFj]CA1)ZC/Z<
j9+Ӷg'WbU6oA|.Į30}j

A s 'b9EĠ4QT.Xv  rES3|dqQSw
@1Zv#xґ{$.%*+6U'Z41i롾ZPNSa+<t'=$AC
31-r"p  _u\Lh}4#Ynl6j0w,=fÇ,@1TMnύ4b3
RVs%<q7mV	~3
XCAzْEC
mΜ`wzKCArh-hw=Ir6R3mF/{V9&PtCY2cxH:x[~ydн;1eZ6̡<?ႺRw{x)o
;:ӆ_&$k=c]R?S_(KB'!0)v q
עw' AڪhBaQow}R$M&ԢdUlM(Ygh`dQR@%a<< &A1Ў&`t
KqArGvO9{;NJYwX'	%q##ΊrDb>@Gܤo ڻy/<]w|dw@#rr|rfH8R (vI 3x*h,\&h
:tAV78s
3_eiZ+vޗB6-ۃ:iFʀ'z58H:E&c!bIspJy InH@+7؎IBQ 7z9/mCEDd2#ʴKwvDP`W]E$DG: W]Ձ/WQ~2dTM楓a7 
fe=GbĶ<V@f fho	N*9V(-=H2\ƥ^r*nȨO\ 3ZB q(}2Kǋyjj4.oh%]"̼һ/	,HȢXqHVN%U$ʑv>]y*K3/_pc]6vnl6x
Z{guߐa<^Viş@W]zh{00?.7՜BRP86oG	bIzA8%z,Q#C߁gQ3MqF㕲\=r&mu9v ϢUI9hPZ{DA8$8U5_\%ygr((p"5T`!cRЕlFL"jU: g$Փ{-#LDuE	p.=hم`sWqPpڵ-$tRc®(c*eQ/sae$x&	
:mI螽pAѸjI|
y.ZPNHwhb(Vjn+ $6
zFӾX;n]hM&3JX:xwD	C7Ǘ~Q;t->>&9ٙ1c󙌸c%('(L́QTX8Ӗem8p-Mb_Ѣ%B<Pa$naG34A\彂4OVv
K53ԫt͎s$CXY00{772r&TuJe:ÙA& WsU=6q/ K:<bLl8TevNz7GqQMtHkap+\㲁ta+0VzU r'PWLI+B-WH_f YcqU5Uⶰ2][K)N}iZT dQ>`)I"L5ȁ
x)P5\|(W3^
@-('c!TnA!B_$UA6puף3ې%Fwa):X<5yW9C$UN&USx48=T2V3ωBMU+3!-Kwwh}Oߠ
ɪ.

Ef,ovZWyJ%l?mP+d马[9ivx;P,^ntʎpm"lW{Ұcp7aQ"Q7DV+UΦݲO@?2᳎#1wdwJVyZ2ڦ-뉅J6]w|FxcpurTIޛox]39aBh=8__1Wt^^-AWfbzv}jg-CȺMW&1߃sE
Q@02.
_
f{086a䝖"ۓ4TJ`WY.!0ԥ7 ږk)EQṢhLI2EiS-SJ{7gz*|tq=n!7mI)7dTQ_A8bM0MGFBlt;r<Vf%__!
J7^FD#
Sc
<ʂɮ[ԐP
CgIh9:ұD!hy%VCJfF"E1)(ۊՅ Toץ9z4lԎfIWѮќ@vɊS}#AFjTAPt_Ocb.76t,%n+&&ӽ7Yg;ԓy'1054M8z,b;TD!AoDe]yw0:G>n(QTkdƱ袮U+SUeeWc<r 8
ܱnb"PB"CJQ_
q_M	ORh-k4>H0-b|8%	%E.xw1ZtTŗתw'U,2)(PlώC8l-g.4Ef{mAVtH'98!SAɴͲ҉~ry~@lC↲0'5a8V(4y"oO*xxd"v2`&gst'D? D;qPlN%$=g9Ψ ^%
uKJwk*U^H6?("Rc
)1ZsZ,|,wTǼ;A=~^
ڧfɌI7on=M;xJekN+ZO.q0P*ۤ[|J'X@PWrF8pg+K-1M(6ptnqê#2(у,jE fVyaʽM
DOh?_206˂<m[Zg{䶳0(X
HNq-q*E;b=}W3Vey'M-lcM
e=]7 AܔG=3IS}?Eo^Iû&5vx枈N!r7暃e0*
䯻]ax:OZoGE6polOcd\؈4tKGp16|v
7hYvxk"آ"r,
^CETi:ܰ?f>17[u7Kg#4beMlQ$Z1@($i{Iً>qJJ勇cYU#ýl"IO]F[jX&%#q3&:q+g)3ɤw|
5NI _yI^jmd"C4΄$FCp-^9uKG(a`;>IټDqܠl΂_3!|>n"CR{Vjq-Ϣ{|yjϬ!&_h.<T,oB-Nʒ+ILK K;ia6طRT
!㲯6o	H3ndx*f	ɽ.E^ֲ9H:X7gxELYX@.)8 cU/[042,;2D708CD'('fjL5<[nL+4k
I,fIrNkN$ f3X#TLܾ,];-º0Z< "Lq<K=K85ȹ._ѱl( &*^a%fpP
#@6 -;cĆK
Wgze@$I06+}B1P(oo%34H3EV8a[Nb|Ńz8ЭT\*GZ`MgI ߆iRKx{Q;z34]-Ȑ1=_7DE}0T\SeAk۷Jpx'ODۇ]U0Es-ȇliiz$B ,55t$ٴoȘ֌x6y9UrȔQ+caxo.OBozx,&Oj3s<UR޺j	lR&z*B=@@\jE6#&4~a>k)[%5W,T_=6ؗ46EUГg XFih/l]U9!&jKT<dc8,m
䎮l>ۂkŉhjWJ)U9.ٵ-YQ`Jw@@\f`gH[y%$@7v@:o# 1oK:|uZ4$Py ]QL3Zׅ[;U/9za7V$S>"`O-/5Ӓ;k*q-W( ǀHc@&Re
Fa9}e=*/I5kvbPԎvFU;Ն1[>H\2q'+ACY9b w~sˀtF s ;$B
#oeUJp!flS(RAZd&W$len;4#"#	{CFYf7s>sn-NLOhEJeʄEp *׊0bHAJ@wT55*OH#'46JAȝO݈	X9}0PlHʗ21Ljv2%_S<2+e
̫֞b(~Z520,/j)}h~_9 QG6q᷐p^ߤ6zQ7h_\
]-:>"xm1Z
c0?/i[8=̉Rh?7'Fa@"Nq$ٳLd
<k/CW& 4GI"89x<z0lz5J#w #x|mK-O1\r:c>]f5]PV0E{Rr"<ګBPS#B6B#"߮vꯎ.%^򌸙a4ۏQP&+q(-Tk-{#!s/;R'7GQ@ hEYT#8 Lx=@4(<VTB!*,9Ǧ5ekطjC1S1Kނ2- ~0zO!KSC"\cts0Z4*Fd>"<$Fa[BU,B|7]\^L*bHA;ɵYuJ7KIQil<a8pfH{ SIE7`eQϛ ~OQIL20{ֱvJEZf@M'}uSdT"ϼ#E1=Um
Q!2F8Nksٗu~
ONqӔ`!JX 9
sY)߱k,)4|29}Y❼y{B;eu%Wl!^-T(<Dְt}8^{1vV;baǉ%èPj9Me'\s5D%5`ԀDFׄ@
qG;hU-?rsڅ\Q 0cLf\{b@8b4阚$}|,~V"jx6̳{dٍy8*KHWأ1REZY	e.;}QXv,; p+%gIZligq?En3"'Q*\VTppTeQ 'kQUf~*mO@Сa4L1R<Vy!<+țͱBLYŹ[D\OCH@>gI+cFJ~`|'%"bO <tYΰ#Η,.2Qb	'jA2
W!x#KJv~'MSZ{6-bB))]]|83׵`zp9޵˚o0p˂!x2]Cc{G:wqs5EJ4Xp<MW4z
N~*0àذw:)aڂDQ;E*w5Tqઢ8E1| i<LmGҦFpbp;!{^m'^;KYY*
IT^ymJ),{xFwL7K6uޮZJ3HFԋW`GhQ^G4Q.ee4oTD
@sۊͽ%n/IEX%bζSo3$z|/G)GJߥ@p	{BaJBmlɼn
T)}|./j{0^YR,Âź9?^ac+4>F/0G$
⽣\͙1co(1h_k.XI_!z&	@}KXEs1p^knQ-qsm%&cI<OD6y3L@h+{v@$]՝v~fe
P>B"Il4hQ6jF(rx"|l0^6mWķ`*j2dBz;(쏖& &O)nBB19h@dL$(3Q#ÛhG0[N+H6.6a'q!*JЈL&@ǋ/ۻFCʂʵdrD~x-yBs5R̙|AMlV0D-O7R@|Ұ=gW"fdV??Z%)BoU|gĔ8$ߞ J2wL9ȼp=
8XBD~Nw6Tįῤ.N\%
kfzd
RCz3V*t^;կ+)|Nx)m Y8W2Y1H`Hɇkan҆T1E
I~c+xetN]
|]:4xeLta<h?rDkZ	LA3hɯ;}m&Gf;껰*"R%wΐ6/PG?da򆆼{[Lʒ>|xаQW6aTfߠV4@;]
=MOtiۻ@cQOR&6Uxcy`Eq҇!q'_=qRA/p=:lU-FM)˔$6s5wS%WӺp*e1iRP^1U,t,a|>6ÄjCfk*3"l11F
PTa`kwXMar	κ#s 
=.4'M[Qs9,oZ>")s^
-qʥ.ة܎X.rO2}
kuOBzIAeF"[wҋ8_b/"f:b4+tskI2Li
b<7`eH *(6ݵT9,y|(_7af۵AU$܆dK˗`#ozB2#i+
ԂV7t#40(.%8Mu$O/O_0h9~xuyfNY/:Ѷ I`_V?}/C{>l,U?;E4]Ln̓.]c!"JuXDo$C淲MXVŃ)Kl-[-֗rfvk0kD+ui25JXH	8jbgQLϤ2hSvX'FUU#ä͌mq]TŧJ?ո^eU.~bk%ZoPV4' q**P|dSϢ"I10!kqTU`ʰR
Ϲc6dR1K0o`VbF`(er4}F@~[tEܥt`[2;m=3IdUUJ&,Wu#Lo}_nP
u,ieG;8!9 Lb߂fG|9j%|cFGxIֻKؙ?{kDîhDV
-5lEjbtFaU]EB`=<:W:;^x")驘Lɓgrz"<q1VY}"-06{M/0~x~-s+s0&[,[ UmA6㹻3??W=egBhG3!,Nj|f铲DPk6-wa;؉b8l=Gq	˕!] c)Wm,/pzw=(3u~b S˱hAY3]_F'_dۮoGe
԰W&?" (K$VX*S<;?fN%hPjn0xG
+013ﱄ|}{T:l^˼N:'.;O5D4t)=V
_W3$RGy&N5w[l5d$7<9Ě&,_'|B\j-Rqq0/-]ubhbLby*NdTVWp|}p&8K
Ƞ1yZHQ@OC~`=BᛟOnw?wߖrdloqt)3,"AgCWc"(+rhh^f-LȇU!} P=e@gr?OAnːM1ȡlz=
;^)4'!>2Dw-iFqy	'n<#)W	\Cg?Yrgڴm`Ё#J5lǬ첮r93Z@<neefV줍LFI팃 {^*wf{u<U`vQ:ԃդ^cuߧ19\9
$Ʀqbͣ c%Xưb_B0/*1H+ղԁLbeE/d9Np%Kg0^|BȱQ5w2$؆ S4ہ^
4Л=2DDwu&Jƾ<WLB!)eON+mP:a3'af
ŰKf("Jl$-m@zH1H{ץ&7%Է"QDQ銩Ȝ&Dނqfh6M.R*WdTO;XA#N#n~5bK(8#$spoF2Y!߰VUI; qM6[^jFTǝ1z%t[J$JbWRO&55Z;
J3t؁nFm
iWxBw"w3*/w"jLynA<p,:;/(?vehK6#J.cњk+Of[_C'iEPU\Wǐo]+H];.5EÝ$#ip*"ec姠h-fE
^-ߣq=GA@ͻiAB)wf7**D9zevTI#>ژ<IR
DQQV;'"BpNjlDԗmZV)]Y-UAqƴpwz/Q	R>э"r. V}/;l\2pX	k`r6ˡRa`u(B%0M|k<,dy '5IX	[ x0ϔ~O[~%|¦ʙȑ-B\f1OHz%3|.~0m@g3+JSt/U]A7wd:t8u%<sx@-8#dnK|?LW8a5	T1Հ	Ӗ*Oir_A'81iٙs?T)wP$bEwIv >~s̙N! ?ﵲjk$;clxfkIchӧbn$ⲟآRxx8p-~qYZj<XiDrW 	h=B&'(b[΂ 7P3$;%(6gr&Yk۸ІY͋S^)'3jT[mΩs?dMjL򫀟J+vNo$ ,/[	[Չ)bs*YX0˝
:Ox*Oĥ2?)F+vkyʤbx6
XtN|ǨGtXxC:V`8&/tqxɞxI;0rߐkB.!/mŰՙWD?TTT;LBe?$ߩ~Ä*%L@;I6?$sFzN;ჹ;%ZhXj-te+D,UB^۰{G̼6]^b:Ɔa㌫'F$`&*za/6/: 8&NQdRA떣ptGK(%2X^ l9u髂
9B3^ @[0dܶpnk1c1#`'^'JcZލ@FMmY2r6ә̳hK5̎
֛RʾőTp!UBKi
.x\;jGB*hi&RgL	H y!nT2@v<^yꢤZEqXBtj/!8aJXU[]Y<9yV
 MO<N>><|+Aӻ )/U	LL"g#2?FwH(:"d\پIb1Xvɭl}YX21h "K	Y2XE_(
C~Q!zvqg&S:m'+*l."E+sUx#=.P>aioS0{T&֭L;:3!,l;
Wl%¡өHseS&LãUɈEѢrX##{hޚBqh:a-|tqJkPz=qLxv,2iW
4TB(6QۺsQXߏճD6`ÐUjwpRe兖SWls;w1Zxl?
ґOά$Q,dYӜ_)zٜ66yƑ7eeejʼFʵ,>sW7%}!0IcyD;,nl	tLc4W(VNh?{3xưOE_lKI}O1&3h
2f-oD9gGda8Q
sЌjbņ9B2.!(80U(^w&i
pHLD'-UXRY(K%D	7p]E(EJ_&TeR=z,&lE
iI, Set
e%ozYj>E5mZp>?y4?;N55Z*ϔ:fb=U.M#l*f-w%=pF~ 9H:1^jJ<Bv
칗̾`#纠^v#6l'<cȼ&^	4D5ޔb0L} 2
Y%MG7FO[7׆4!J5+U`AxB* ><!S7@K1VB.BT^/މ&+]L'i7͠xZ职a}fFEn-Yj#mc^DXt\8t>H׸X;g`A
mogk06!܈n\6+*y8Ar8lA9.Nw oBb'2YO	uE~f8Buʳ7D%|Ԑ?좁sY:mfy{޸R~[H4i㸛ŜDqi!kø>t&׫In JGZsQ!7N79p7
v1k,Ѓ@7s)fbus yI;[5NqwL)ANvx;x3"^"SD֩qZcUOf 
m53:H*KH3%T
	B!q~FӚ<K>wm,Ar(9>ѢzyCW'#_Wښi6I$r7YV@5
|v@~ :ˤhjx-"vNlw01Ny&8S5\Tk
R|+S	|9:2kW١9
67$78X̣8Edo6T'ěh(W20ޜQ϶tV0MͶ\ۨSY6OPέaIU(}0M'JwE4.4*1aZcIdN54*案H+EAq*3}3n:`O'1WV1_?E< Gמԡ	i	
^pb&g/s-|+'oh`]qv2w6R0Q9KH?O6eш)ag<9!0Hse)B	@iW0&o@bÛ-F,c<r8K|a
k/Q:e$DJ#6RIkX,)lcTHsȊF獭,28EI<^]SM:CeT<BQ?0F֧柵s2PdWh}+Ө#Ma1teQV3Ȅck/3"hL) ēesݷĹ~m65Vn;BkLHusEF՜*!8EG3vD$hgSfw-H+Xv=L<*'FqoFW:x,U㝈Qت~.2Lg$ Q6S	A^Vf+h697hc(#F-=686B	`3eŢ	e=e[3DZ(:11?ߜ6
wrPi%O2>]R8ӱ6G$:]oX-x.``|B6_qTb(K]etFReDGh 
p=젵I67'3\f%>9} v|YVQ0U(_l{ag
eSЫ@^u
km[x0

<eyRwD\NwлiT+2ߣ8\%^F{Ы{G/;>D4fCDnƸL
%ઃSBQDW{P*͠S~_d
Yvzu|5@rSv,*VJ}東hC78GLƆU.`|[bfx?
،|_<1lvXN.L9D?kқu+4[yNTnL>i2lBDSvȢcv z4~{Ideyoi#Sxw@~q|˓'?RE:J'^`	^C4,UA?#b7
:)'tԟLN(q.fW#X8ZNDN!Pڀwԟ[r@҇HiQy\ā
 Z\Цn\59O!S!o094(Xx[#RcÆpNoqGƓPe[Xh6݇J8-5qnT:fY1J{h3X/(^|F+Mf򍠱6jr{6K8N6qG'm/]#hȍ~SSߑ2>nup!(V&,%Iʵ骳4%qF!oB(@jXcɞe!@5[6Dys3&B;~~?cSH[H9YIF"Z",lnf\Ճ٦6!Nk
;;rɤ%X .^f[)O

&K-@Fy+Ģ;-K$8nW&~^dzȚ8bZq
 O06Ʊю~b)CMajT1(&s\~=<:41UZ6lRyS_NV'_ghݨԛApEs87kH"5h/.ҫ'ۂ*VJ w\Z(KK=Z+2,#B>L#$$9/X=rhz0pE@+TxS,,+҅TB9\XMfG J%bg(n C- Bċo$4&,ҝN9Y2s{d-'{ C*B3;mXTmQqKwi^t5@&n)L
VWC4{Hyw]KBSq.oґАoٚMr]A'FN0Sl(͏7PMP't4UkDDP"9erry[J+$JP#p3'`\p'd)ˏY3^7ƃ=;UZ	yHO`?@(H#	D:lmN өE^UƉ[ADሁ
wLd@KX+1M $7(;LUY6IL # lBNˎv?F&]nhͶB4sE0Dq:tn`3fVx)[ee.`XH퐦g~lwASمP;AsTMwQ͊sJ.ټƐ -*m#_a܆@Oex.;ǯZAi
՜	ag=!4]j0h3DA:JUl)3	Ek)Noۨ%M
%Rlt&M <ڢLU,~IIjKз،hsXU>3=}GSVA99ehRqe.&	\oR@S!V'X'dpO2N.Ł/*ŃrG{do$Pڑs=t=fqWPQ۬]guŻ4

?%{ңnpl3%b0@-+Wknl;6*#FR`/I_U~Boem}qw^(mo9D)+ 5o`Ã{$_L&GdW)89]8
n#޾*W8cgF9z10K
Y곭|0RK~cR
34i6kD8t)ǴM x8x|ңr=iDuAo
{B
i-8D{6:Y<f;M ^VK:
+x^F[,C2
j&WSzo"A9ߵ\)j[]lCAzT	3DM%Ka{a5) 1[Ή:)Sd*tq7)f.p!?,P%E!m*[M#e{-0\cYp+{L`r1S)]U<<]M#zA8K|ްDPo}TEVcaDNF:2xmZvFcdl(,=ebl3A>FISGÜa:4/~>k<l.F3!˅*1T`FuSא^f^]hMOsi7Π*qxoȁ) P\G!,
`YmEfʔ.U'AHxم\&U)&oY8
uU1P;@ DOǬ1tɤ3Pu<W^u;N>Rh:#	7BO3bЫdmF!c`"Qkfb*$Ȩq>&'(#z"_Mbe4b#wFRMshJ";;	oai;E;Ӕ$尴+QG"!h<%kI;6^ـ0w%뉔0'y~rY5gs18lyFH}6}ԙ	Jt	b]k%zOPo=C`;y#̸`,[p&uC)rrL=Giy_]"ǌ؝GM%cqo
N5kDAؓXK/t.ntE
E)%q;܇{ I)
p!t)t^V{O-௝WWzTM"6*cӳ{FR694JjvQ[ʪLWLH8O&֣n2+j:;P~GJSӯ"f1Qz7c*g١vSr
}yS
hm&RT4ekbC,? 7sn0b/b_.8Nx[\AU8m#z*@r("O|WlEiЦDhh~ҡ:*̬@?1+`*^QL/7`rčy@O=U	C`B*li`jO=SXEFgwԡatPO8'^Te6<~s'*)*,ta(*l&z&|ʞy]/4d&Dܡ"Y<1/
Od\!MwAA&!m!}8;rE>Ip= бb#<D
+)"_CbdP^-=zBO`T`95-p6/wO=.p=Lj9з,bvA6`D0aQbT2XJuj 'Uc"Mo<橔5Gr~qe4HζNDvuGQyK׺j!Sk()Lkَw lX$h9.eg`	"E;>(TixYQKx^moEDAr09=-,Ț}J szeN2"`F8hEL#q6jm&d$KՠpH)H+腈Ѡ#}	5(p7y*;vپ<{jG/6(6/Ҫ >
XṙXZܨk.:u1
JPУ.@јEA9Iy/ZO&7c18pCU،<o,OG0_*ψZ%Ԥ~ޜ{t[^:R1Dq"<Y.L<;a#B^2wd;׀<HУ%6tA-.ދt0-2ⷉlϳ<0bF. 0Qa<M=	k	ކQ:G	E3f-jF,|tJ9-U.it\`f_^i}pڃ$:(ɖEۀVCMI9IBŪzRcP#Eq)dm1#Zv	h~L
/A޸&v<d^;26"ۄ8s.Ľw8D_|d"kȴ\P?vpE6[4]L2(D8uN׊r7mr+~
IѬ16Ppng>}9{`J2;
!챃vU0StuF`_4e~ԹJΰ959xg*4kK} ~H^m3 *Ew̚}2;HMetg/kc)j,C~zz3 /I߼=JBL,l&	"tdG"uR]	q_%QFp̴a<o_
QdND!ɠ#gw't$}	xVJ5avVR.	֥0JLx
IhX+!Zplffxt{mRED9/:ۑ 9."ζz
hRe"f2BT7mS4$˒֢"pz:uDx'Uh q#6
Y}qI>'|ָƥ,w4Qdad,ݷi]υ+!P<R%|
};~7u) D0tަfc;KZ:wWZ
<gQ**Q;?pI98ei^
QmJ&cbӽ9*^#!S$>IK"w(ހ3=Ta}I+첻$1G}%h1{7W.á ʏpxM,嘦j5ʏNUPaÐޡ3Y!W61TPS`d-(,,
H!1	zI=&`6<֠B'<R"NM+1y<p09D@m) 	6o+NCڞi`̷#nItB)U hz(B'ֹ <Vfo -'X^d	QLVMb<(HEi
Z;D1(6B5֯Ȁ-EPnŜ_FI$)PwO=DVp<j6,IhT+X?5SLeB2W1UuQB\GA`=]
d2PPOң_4Cm2)T$G|]\L^=ܸ]^YY*_rl+*3Ny+l1_){x,^u	vzѤW^-iN=Egk[`U13>e#AUF5}G<X۬!0RP@d,NQf;y(?Qoݳ[0pz=uv[}7G'4q
@9˰붠}"x0(HQD0?xqԇETLD/u!`EO3	݀82+p@\AZO fx2c 7ġfoClapɤQՑ:97eI헇܉&S te#)ϭ	"8#R&;߶7RZXL[j{|"+/A=%ka8*+:j}U}fㅀKsiR+<x͜EfE#Ǆa*K ,8+Ak	=l'hC"0g2quwE1ʗAM2"*fɏx+ Hrϰ= xRdHJI1Z]ch"6%xf|ǠIэ	vlocI[	Hv`M~ZyD/',PUU.2Ďf!h5Glqɩ
H8&N8Od/@vÚ2T87!.V.oeE]Ja!%
Ew<͎3LrAn(hz[x?qp]'XY+<̄3Ts잒jcHP(avFUḱ"|dOY
NFFif4`
8"^$` 0+_anaIDi^h,0t}PavBQi
dpTH.S8BX.ߎ]$F2UgtMn%5u`^U,lE`$W1T9vǁ)6BS٢uI(svcٕodo,@T6c$p#7CJ2bXIb<!"@	P;(/kY
JA%*}%p$wPX5A,3DK
V>q@[F\I
LbQX7:9bdnqKR\(two֌@A\}Omp_!𪋬b@o.fth| .'\	wY7ɜyXBaJс_^xMgU860wKz:6=;qn-E34F\5>Ic}2ꕨ@=Ug,X;Kl<g1Så滊Nz "nX Ժ>	DgN{IMs5WS&X/layH7Xɞ$+]SEtFQ ʽ_ԁq,~~Y6"UW>DlXX(._Tܔڍ{D;UCrxr$H9ʁ5"bΌm=6Ojx'@P
:a3.+y£\xB"CTQ?8*[X)3gBDb46&F-o&J{֫Xw|X݋\:d]d;l$&S %w|Kzf	i)s"3T
z߾

$lcyأ.H.Tl0
`wk1rQb}_vQx/f=9
ofˈJvsF%I@\p]?Lw"Ȟպy詤G%Se׌ǻ+.rXX%4S858	UK640+	JLJDA	Eo q-ea.=XhG|XÍ4 ")q)}N 0pJb04u#O: 8/i?ƿJ)dcRMo<jե+dPWK$>
yloueuI"Fl>+*ZnH$(Tq/
Ě?:TuӔ	F_5Y* 4C"'6GY(tYv\Vdcic|ּԛq>(6E_x3tbub8tdNjv OZ!VL/
@^mTxC%?'Benơg"/$G:	{#&_[x#9+l$ZT҂950eB{Yj$\ÓyÛ7Ape,L/3\]+[ǔk<3Ű5'ڊgGzqB|KfB!*sEL;lz*08zL%POZ-QG=<\ t!FF>u0ql#䞺5teڿ![Jt-um4Dp>p-4#tuVxI FP"ٗ:Z<p;m+7QBHFUH=.wZzd>DhG7q r@Du.$2BPY|H܇JzejBx$^hmԋJpxfؚiYHȋ,#/	0LF PwM(>qBŁI8-0
$@j# yC蕁8J>7u50w/>S_LȆ~yjG'LCڢѽ`zU_`4+
Dؖ_\B;'(.U[2cVnԀ'_5	Y?×)&%!a݀GDa|GM82jz[Эv_vǘq|p_/fsbR#&C9@oe
-P`ǭW,=	s}7p	,NG+rͨ6˥җy~:ѫKeqq{2Pt/nUcnr<.<GFЗxSd
Z[HL:瑜~`P>Wh<f L%<yj,x§^"v\c)֑]J8Syܠ͋9[ETyCjNXBM2oirZJyuXF6gNnew`
?1E.:@EՉvR#MxѠMD/g4a@NTYjhW
Xh7Cbi< 7SaP
Yp
dF;׋(#<T-
x]/ǝi	b>0$}$Tđ@OĲU`V<3>N48%){k4;z#o`I<ZQ«So`HpeD$CRt.jg?3YI۸0X}Փu+E$CyF%)bS\{"Ñ^?7\B.P;asqTRfI&>)r2M_tIѯ2Kh+SPQf'%Y%8"tRd@&Ae)#ϑyC	N:L&~!x݂ N%:N2E슄zǣܼ\Z`7('q E?z3F.5yO2mKH)&&ns {,5
#s6^eL
k\%&x,ÄځhE0z=HF_A+cKVVh

<z!AhqD	3% (єˏCA?4񞍥[t2;C	r$vp|-r3(ou5i<PD:6u6:ZӍhal[,CP&eakcf9dw8y3N!aʢPHb[9x<}v ^)pO
eyn<C[inPw5aj!!{ۃ}#
}*ĮC ^hF
x'L%&"~V'/]bv
i%>.Btu\pU)Ǭ҈a,!{[WćL;xq
$nu	=s 
5,!~#L6Mb0x:3TR_Pї%kV)%̖\m'oeL
J-BoT'\TKsg?__Gѭ$1h9+V%"`{],7MG:H+B֞Ox 4	EOiؕ	|MSmIVVL&$A@@M+^<r7\[QCԀ5#wO96 ]z!$OtG8`d)M_M')AM^/xQf֙:Dk:kFcH;5ѡ)&(l/pv,^ـ@1l\ϡ#+T]$AR7g (rtknsI({Y6IpJ1uxL>OqѲ'-S0Q8!{ީXL$kepGxmy1ՠ֟u ,{t`#n˗8Z"a	k ʬc,ofI',g+:)5C-| \aBX_GS4CƖ(slNBEȑtW㤤>}pHtڰ4[ NJe݀N=ڴ9*'Ẋ5-P?\V̓fV!?	kqpµupvh}
cRkR'835(ʼE]vП7۲݈]C$@*h'7MB=8ף?DzU+YܛNn"Yx ^C"JAv5T9(05,E3AjJں/bB4A[GZNJX0Ϧ m=PxDBҥ-Iqəpww2%iș,x2"%9v3~idKlm PMkC0'ў7h4n
&Foު5LvIdf̝.-cDC~![crKga1qe+7qd\d1u-
AZ݊T)
DYXɆ{ɂ;h;F_8'!
xb"U9:`UO511s$Yi&V],Kq-PA'Y<R?k	YԄ9.2PCIl,LOVN޿nMIgUlFt$N`G.RccذH˳,w
G
-	+.nȶ9.Ɖ,-
d@Ʀ$QƔNJcU'VUg):~Q?J?|ԝiȧ#欫OxaA
K::VdhT)IC̈9$ljI.sP~BYbfopUfKoP yw\<MAtH0/_rQm%w	iMw)BՔ):wV>PTY=:Drt^׊7xFs8(E)jsWVSPʛqrd}t*8aBF:SSb$MI5Ac"bf(j_e>ODI'E"abwo=k\
Й7ꎉ2HоŃq~~-_krS=?1>#Y~V57\	Ȩ9WcF^*]xLTlΖ?
i4 uun
xKme`xk8Wzm)啈JSWRA =5@\,<EOwIS hL-@ޙQV7hPDQ-tfEmrֹ1Z@$jCb:<+9'lCcJ*^_(q%u\3bYX 蘒3%h2Gҷm̺7M٪|! 4"M{]^J.族jQSV)
susY;E\']JVH,с/h_%[p0,5؜n(@y'<y)+;7R"J͉)Y`Yww\Zl>QR"4+d0Џ2Iz<Oܱ@?Er6*[q%vAk|^wYϺL|8Pm\'QgG BBe,T- oibv?=OS
4<dfF'f(zP!,ʰ{8N=邗~(Z&X,gz7`t퀩#f
HUyJ{A9)uttY 8#ph,u!DMn!kxp䚹*5°[*&ױuk[~Q,B
.;iAU2w֯IOc8!Ѓ"ŴW_(&o\
*m-癩J5x_!l6vp<4t"Qʧ9m<|~M{W­Y{n+$Mɓy X&BX;H M("!蠒(܆=p:F0~q
5VE06P{D[j#ǥTz*kCeąyN!գֱׅ"5_D@WÚ6nY9]$f6a^/lgkt[wv3@	F,4uLRy`G4.:z2"%K]1H'Sy.ygcuXFܢc,W:إGL/6f1  DW
1SSnOpTOs0msw`sefLTs6n[s(/,C%X\FBxI{b9(;'Ĭq>x)q'r(ob^ά=4֢*5SRy?^pp~"g>r(0nZ6`:Ȑm(>l{yN`YǂB-{ ސX<̤w8?z$^N(
m&}ݲ;?JTaY(,~=%Cl버'*e$ȫc
$E4H	>P9=6L8'%HH^r/reS/FŌZ5vL.K.I
[.i `ՠ`dYʍIzs!eN ,-LwHޓ59FA:kc?9?c*iuƘoV (GX͔U
+6L,R`k\C_~4ղDЎ'}Su'9}<v	^UH80Dsg!Ǝq9Tx\*B &ClѲ=_S5)\CC޷1͡I*^]9t1yx+U~)K32J݀J\DgM̆X	=iI8ИE$^
ah!gH#J"n&P.9-r.h\l;,V¡f''KNw[N[%Y;\>j3TO%O|H"A;90^hԩ5bh*47L֓3l(YOn6	GNPR
XoSJ^q;\fvl߱6**KlhqPLF!Sq Hh"*;.Y 7i/z[
A12?)xY-alB|HVхZ@׺YB,ֳx>*j1 \!eebC뼏QzesgEzo_+du\JH)bExa=PTGJw*ha%;/Fo;,!)ȿ5J[ RS:Se6ę.I[β:3Ⱥ"(SvVˋ|86yK@%z%L~O6^

eȑdH8&0W.	M&?oD>9󡺙
+@W7o4-FiPmXr+HcB5WP& '}g[ʼ*FSyG;p=EeJs4LN"b=ϡ03viiUbmŨ~U	d]y@f][`f4ρM_V ֢m$`9gdqoNF֢#Y[x@2oiD;"IPIFII*ъ\=QT-XA8T~#$S5'IE@c>Zu
FW]-oH޺$&1Bc-3ʱMpK$ G} )MMD4ȠxhAeV 2N_QŻ{r
v8uٗ@-҃lS+$v٧19z
<q<VG2iA*S>nwzUx濼Dͮ74r|Ehթ%E&hP˛By$"8A28iݰ|1XfQ:A2+O#*bҪ_QGG4vL(H6eCǺ ˵Ӊfԍב7^ya|g|*OpD?5T8)2b*) v1OUE's9Ai;'uEHm{
kHE¨	=$TMm3em+4ڻJvmlxM&D:Uh3*(SĂ8]JFT'mSxs
9lp]fɺINSievDgMLt%;}xXA0vT01G/ELwl7*e#w^-Fdŋ8+*-xfߦIH몢s:@,ovQKppg4-'QU]8F1}ös9B0Ʀ=ʡh@v[AzU{fSjt̅`Z/m.h<Re3m"^7nͷU!ٹRU~l<㑼dau3V?3ZZ
ᅟ,CaWu2l0~`y!L`?<7zrx$@j@`
wfJ+d,&~T>`o]AWXOch]Tjt"Hl?r#3ٌUȨROy9NgpsY&)NhJsePji8Hp	?q9P
Q5<-$NnyDߍHcG!#</zOyfӦD|䢅4>T
5RGې9M1dvg%<J?OP
wBlP/㊈{39N@b˰BݰEd.8x {\XT˺Ł3$t/n|ۑ4䐭qؓ1)-i]~gQ7:DQ
!pIWB!@jp-)}NI<aaakrqP4.͎j's&4<f"!^mY0!u\<YU#DgC%i/+r
921&eߓx+]GUVqVP
5IaǨ$E-XpzbbZ.ZSJ@Dpp,$s@%v'#YB!xlAfrynծyU|A
;fcȬM+*40t41ؖ
WMKxger
F;&rOdXqKAxb	b:uE0!HKxq/z@M}~څ3 P(mqkhm2+fn<$]=`W+J#7оjKoږHx7fA	3LJ2oeV/uNR!DT6X
0ó%Kn1He4L9s	,&Y3u,F兑'Ogw{h2>Ulf[DjJ]Q{rSW!f7D#j،,,m@bװ0mMÞe/(*)_̬29Dn@DQ`uw9ՋV9E͈J GvӸnS5.oXDK<=0Gr@
G_eQ9tx
izt2}d	p35%tz[%Px:<7XS*́EiܝUx*iaxvto`Q؍ZʗVuhfc2۫F9Knr,ݐV]yͦ˭96=D I1EݲaƄ8
^B?&X۾4󣑨Cư/($ӕ'6Ao@cQEdўCȴH}qM&e pеfat~
UfW{ص/ha *[a&dKQǢT=<WxiӶF=<	 W~RkA˒vvN)sG+Df8@}֛Ҵo2O̘'!5UE,,\.ߚ}ͳ=X
b2a4H(s$E1=${0"6-{ޗ+W3QV0Ґ{urڕOF˲YU
sxxq"#:!юE,>[EeVp`%E!IMeJ5f[2t%>t[̈́r<TF8 }YHy,ƄE_)Jt߅ \}'Lޥ?8D.&hw,%
)i#ֻ g^ JT$Ef2LXz|m|aXΆ0*.qd7L6)Զ	hN
\D $؋pBi̍V͍(c1cR̔f1MaaU'nLX*OGW{B$&]&S@&ۡDHpP3v§2a;0O-ޚR1hHi3nCM63ez1zeͬ=,!JOu<	Qh薇,7z@>Z\δU6(Ij'2;a9`m%%$c@G!p Y Ӭ5Z*<mSa:`Y}_~h	̑UHX#bdhH3pVFGӃ|&f%+:o!eV} nwǁMUՋ&c\ɤ,y6AsKF|C
KQ37Nv	b1%]~ԭUdoClֽ@
W`3x;`yV5Lґ<ut,DH1BTޠC(Z2'v+8_Su@Mp^GAAƓ]	;t,S&mV5LT$7cTgϢۜ Ax F{3D*DIbzXjm<cYKS1O{ǧ!/ZIljܞ.~i}jD=܌
]*3HU,gē 9MQ%f?`ʶc)뱚ʟEt 
>qTF/q)7왇XFȄD{z{48JPYl͆.cUpL-6%J=#dm9L2#j Iȃ0m+ł#у^`jǉD&E_d^J̙͵OS1PE}^>9Q%޵ZQfjj |+"K804nid
xyE~
83ʧ	ze;Pm&kam.]VoC
#^|Sa*3K](OMf+zI4T721/^F6A+|fިLχEw.h'J?jU%uy$C>hWWTڔ]^E
+F0V|bƣ<@dfEWWeyg[X?d$>N}"nf4Q3H9n2OlKC5eq iG'PT`!]T>%$Vkۤu/
θ%%$i
l!ogXя"-O߽3LP^$LUa^ddEȲ+ )Q>din	Кؐ	co(!ȟ:!k֌,*%Vapfw}"B_"eT/QKlW
w:>9K;|ђ򾙍3h`?H&gWH䴹gi$x5xGo+}9X'cGЈ#i,zm89/e^($$ߤ%X2"\/I5.LTW`z'yB+\$𽃄Eܣ9ߠWE'V}FQ)Y69[.4hT5#]hӀD<Vj+*X}k~LeGx{fT;9N*rc+LxdEN̖%DKn"V}:	)M $s/Jw̙ݫǳ
f/o0-T&۩u-pEK~h7,A&ޖct#j%ޅY iVb$'l+pٙ.Eh +d7ZZ;$9f	͠I MR}E*f}\c}J 	E+ǣ$~aS$o,֎ݼ/f*ⶖYt T:κ}DJ
iu8#fL
(젭:WW͎4wD$P`ּ2^@B;OavtV `[0ex\6{``0DRń$UݢS85:;#j7S}gr`Y\%
PC!NRavR'U33xN^Wkp܌C.BL_xQdM2en4#_-D&}1
{o!Q$~ $hjiy2דK}Ah÷S*_*&܈'܀bP,c@?}GJiC'+
dhby^4TiB~PQxҳ9Po:m{Q?4i)Rw;Kjh}mD,,ȡ0͔ΠB#!{VL[>pt.zxHj ꅏ-_>o?	>It 'hǶ,t (4Z<!0Pp^CDNentu$jcM NB#Ռ
zeCWe=Ql@Ἠ.Ikg=eb
(w
@KQj%U9&+paLg
(aH$	yJ5o@PA6*QOfy)ES6MA/uΠ,'9cR(ƚOϟC;
=&`O-pOǍgε_ra%ȸBbɉ#Y_;2lմ^NfP[ӖƻB},T* K@;jLC!g]*Vrrw#ar
׌#䲆,"O;[PyXUY,.:!D1I~@ څFǉxZ7f33e%^1MR*k5HE#Z	VLD ~jLPik,҄v5^#ҏ=*ΎI,p66dbnX	έn!},^n_5'XDmQeK!*3I G7m:zR_ Fz ǙSAs9vBgwֳ!6Q;/ 	},wLE638nҫAW_H]dëw@KB呎;˵K+ă_~`\HNI`dB[-0&hUI88Bo'eM,"pgIӪȬ%u4A:Xl{$V/Am
FQY5/4un#:p;Cl')9oiᩘ@.`$a|?c'f
Lzy^&~y!6eImoob*#)sI-/@zf=TCUk'E*V(zc[]\e\|J2;iiw nJpYևy
wꔣr%@+Z^Թ'I#HY<T2"A8£ eܹA6~0Ɇl҅Mlw"CN0)\£R63VOFbmW'J:
	3?T||Xc3'2T|X=B	LWF*\<6[/*H|F4WmmhC"ME9M/k"֕z2|P:bT]2.Gu
DNށ? NJjЃsqXCE*,]qɂ/ޓC|ʞ
Q~5|r(<Ù1`.t
C460>_^'9ꋵ2+МA?]oꝮDbHZC[ru(OL8}h0m~jH2ɱ ^vs5oȯ6-l!lӤ5R䙱-wumkS<
n
0"UJfI~t%vzleWN*+ǄeztTU;C]̠AE6e
$2&&'sosϮU=4BZ0nBZjʢٓuTUl=i068y`%V._b-DgxƐ# W?jd7:CAyXvQs>m6mѭboRLz3=uM]?D\5R.t/ԻopVTO#y-nq"Z'G(zу Rdp%twSF>e
-T40FLvMLĕIГO'4PWX$3,s=4)mo:pѹf!k݊((.yr5_	\[Y֥b+'naKjcJz4ƪ-z$\59ES>4hhm洼	ӚATi!
^ a<uiޛ8bӕAG]EQMGu\0)՘L1A긟א<wGEq')[YF9ǉsyA
 ݄
FeUGiExW)S. .\g+3\v@gNYZ2lzLٽ,-YmHJa1vT]PIuIZn
_8Q3s
pQJ0eA;tl||Sy& o,@"`=MV K1-p0G̥bKmЯ2mN%7rɚmW@'Fb+˱̯^`C
u-~046nxU8.w&{!=෺Εa`+Atm>{aYl4X{$+w`|ɞ_78r7vLhC.{.&HbuS*jxJɟ:WM
&aVJсl΍887y5bNݶS1kjbB9?V謟	*+v߳q,Ȉ"h@n=<]Mv<Q,;c[2fJfk0'B^,Ӎ zqHvTRrt>*Z|7IRJ\O#&cJfR^qgZT(	U/_/8v5^OyH4BAyC*E>EV y1_Wx:؎A&; ~^Ԥ$y[2aיJ3 9R`LFi/Hpґ፬\PG{|^$+[\bW ߯
_&)CQ 6۔29!5}dE6歼TtuAtL
#')Mtte`}YsxQϾʦskFW˗
h,hdE3ָQܮi_(i僭hPղ9<HEZ8^.MM"Yp3)PLF
~%S6:.[g*3=Y')hrdX-nf;"݂YeިnBSiz$@2[^B&1;" 
GJHDJvؐ-ah90߶UGXY $]hl~$IbB,$6
&%J)N?uS2p1%1nZw (Pƭ|gyd7/yRq-b7S@@%&p
th,j&h/3qbAo-ס3O65{w$t}8}:4buY~*`7RVP6&
6#J`șŀ#Bf&Rg&!
cۼ<Ɍl*H`&!KW~+8SG<d'l\%p72elժ2bZS##(2WN~}}9ykTVgXQ>;6MѳmE\$/K'kPm	'Ll-Jϑ(UU_=|zVP^]ڡ/HiPTPkӨ2 !9'>&B9[u;>wJ?KUP|&k.}V_(CNchp
:ѡXC*"O$OI{|_&2=iY0@ƕ'l{
HLSޯ/eϿAx ihhePj˝ϱ4;Rٺ䉵+tE]M+`F9e#]d9Sd&[C	ŢVo,o]Qf֔φa%-WA/Yʣe$	{BgbN HzzzBF^rȴtt\
&҅Kqxc5"C60_F	D"8e'[u7+%l*5%vv-g/jkկW4 *Љp>:g+yOpPu7mYږ0ratsPNTN9_'DZۤד֏Wr$Hf`tbR7R@q
M);hvWRpʸۀKyƫDt~Z ʬw4H+`zX%ZD-1q$"f
q}d*M*0ÅTõVx^!N7|O8ʿ~weaѾD=,0s;/h7}3Y7"-6b,{0؈Ph23
<wx@j #x8e]Vx8(BW$${L0`żWR(N" hS'aj>!n:G{J\Ed&̿l{-BPzܡz, 9k^kI,	p%2A,Ȯ:&H'&Ͻ0ɻ|hZN׿CO^y&;cRuA(BuV#
%^'#-'&_?CV
{"gg!EuR02cj<B`ռp1mrg&nDAYR2?֠ obexC^8467{pTN"gE^H=UǑ$B_Ej:E/>K(-Hkb
HD1x2WBJ\4}BɢR,kR-
ૉT܃iiZ+N1=%=o$#[fؼ($ϝ
8=;ݲׄu/c$9S9X>`,Dn#$(EC]L@NT}/|70H־sJhu;?1[n6Dt1`y
35mh,嬇zѸp ,JfJo\!;Bb/-efO)Et9o	J<?7X,-CXElqZee*DLցDRc
II2<M͒#A*"CȎHAO>m_"RytDL%X-֠;vno}ї4rU~mo!0ard%I#ѢknW]6X.plǽ"TxIlfvЅ[K4yJuM
")Ä%a rV6b2SC^AqfWϠoiCO|Z9_]aT
r<h6ʫQ=|@NqYbECsPb
iߛ#>.|	χHN6.I )[(7p[|hSW|+֡dF\c'i]UW%)'iHUǗ
cS3:]auT&pݙǿzkL5;&p6-NXsDMUI>0otqGQbjȩʾOб_WJHTС#	smUxamVPw_MdyU]N2FmumkӗIo3RȂl~&'DyoaNC:we7Ofo\ڶ25Gj~RVӛK	3WX#QmPb9'Ԓ#MQLč	
0' 5!v놧zr&d,0s[n!;9;7(G"A,^~M$%Z"\FB0gâbd3fE[0#p
Wޒ#\T4+x/8V06e:2`n3CQ(aA+WAE8g";1@pxCS)nPv"sCzsx3ywJ-:sTcvhϤWii
.8b0ヒkm@.J?P* 	
̆EJ@GLtu9$
_/UVb6eGPpj8̻I`*?rcHn]$HG{G
,y#tZJ5]O\Z@rgW9dAќP
y	O08/r1
[:{lK,!WOϙ=p	;b_8<+=?T2>&4qTEOM dpL}W"8a~?vDLə`#UAiܔ<\DRD;L?NA_MafasOe@9~Kv$Gn7z'ߥ	$drb۟iG	$۞IOYCRމ СQp?5<	m=j_DGk{1UǗ&FJ/(w1be ,ǡݐ)a1'PQI%L5f}0L,هO͑2U<2RFǄn'`
^oO{X～
vvy^1+÷q)15J w+aUcLǅ.ѣ4P/Vݼ
{$2kӬt .ހayG
嘷˗R+_b=8YҞE;5c<ݒ
ùJ낱71=MؓZd:nC.uXW"#qGȄ3'r?zB'Nс6΍="z7Z/!՞ Rϵ2b"sqʈ/AA.VV>pU\`ysor'<c~s<,9RD3VlάH@n*OVI1)4p}gԼζq@xB ;|f~t]b1Y`ڋ:\<3$ahfir"3T_@5%Md~.ujfCכp <rCTT/,p7EgT/Mh0d&1!xb32q,5)<\\ja|	ayB"ՈT`G}2+wVLe1y3?`3?ʀ,^8~Y]OD曅80
MpOF71ҽcgg@uǛ(8ػV0QJ74u e5x3`=Ms;6
h(]kta-
3Z-؞z"eg)L>Z3#{![xT'R3Rr46!,GV1':T[ijȼ
V2`	694v1Pud<N(d	ܳoNfR7Z8'SVl>У6kGTh!nϖ
NYA'A}CS8pWh=̆>C6Y4h~y).8"ЛGQҺ!w7ty\,?EZnha 	CRz$(%fsSxTD9ٲZ_wcZKv\!␌%:1nxtsSb:K1M)U§<<bPTnAʾ峮oeE"0]㷺[oTn>V꾽]L,O%KMQf.f͗=ݯ;EETyg[AŗMehqzg}
~]&h.
yxכml m{Uɓ9UtDI$	R_-Fu%ŋS8޿ˊ-`.֞x擽׾|&YLTr#rR2C;"1&]2,s/ 
Gr{td1^uX`-4 a	QL8F\)Kt7Pk42Uờ~ٻv $|K$*J{#<*N{bbO<r4lI[ĺu'qW;G1h!|
vQ_8 o˲`L`l
sX{syL0]#f!DYku 
u>o=!?ǵA%"z1:Pi$L K*R&na4ˢRʲR3^A[d5KvXKJ$ZH8Ջ&E{U{q銹FXIܐ7;gOcvW֭k}}^"CɄd'?!v'MyAʮ6n뤘xkZ@6P2ݻeve`olĮL{luꯞJ֦/)R_M#T(̿UQ%5#jA(ۘy:U#Q՛"h/~Fo'<iG9|wj _/r3J&k%p@B`nze!v':fj
%*E0|z0k
Cql)D8r6K7EOvúd͵Թغ/ 
VhH67P=o:F5| Ij5@99Myחcqغd 6?fkz?rDvwAD2ϟI+T.L^u԰Zu>zI1a	
<Qedf(;!Xx"
ќ]Y1-nL曨s3YQ!G\3#;+n#BҌ႙k"/;A;s"wMˠ[W%YO[۫y224*(_7qѠnp8BD֥Q=D/c[HHue!LSjԾof*}IwKWxlD(Led_{ხ{1{yeq][F	T7^EZ Q ]8$	(_nn&RR\&</~(9TL
Ce:PXъY}a=TX@.,Zz#+8IXBP]9Iw
l.Ypfuj>%p%L
Xp(774u~IW6HV1)r'|m[% A0ֈB`_YA
BwĒ|Y	R7Qy;|JbEK8з&ࠎv%]cfUL<zy 䨮n*<Ɗo`s \STtU=SDD)%: m=oS%F:
LVk pAH7tPƄqXJ0yfJ+zDQv_NL2lTHJζ
+A#ӯJ}[_I'K;,qǤ#m}<lc;,iPKYS*AO t\e)T
3d"Gjl.N{ *
wr>әPltU<OT/֒=mKD؍iPASD]ͮmx+!Nmd=lvsy:40.vZ
[yV$f;DN]gW'AQօ\9g
~6?h&DTQ0	\xU
J	)0dQ:`e*XjhJQsH!}Fm5,QF!"bŶެeJq<S#178X"Fo~yJX1I?@( 萝n1eof.z}):uS<V5c	AٰlasOHEީ膃a 9v:ڪXԨltA_;BAŉ'aB&JwT]b7P8
PW([*R~G(/G< J<E'@,<B&|@ -PQ_ߍ*KeoSc)L]@MƁ4@VUjFL	\e:`
<5xՊyUn5Hfl^IبmtMP$&gtPЦH#+뇪H%]LLDkb+7k˨-62xVJNJI`9_YL~Gg¢8/feX6fIf	xr=,![[M'R@4@"9҉Y9pd9lwTx<G@t]'>\,`|6*bRপ[,bkA|ށ`u"~&RF8D^PK|9]lz۪
2M+8nL,ER|Op#gUYt?y$
IJlH ܶT%tjZ4鯔cQ|B7'OĝTdi~k#ZP8۟=͉S0KQ[nc4e{di5vVƒ<W#ᱎP@T)5YwvA({w ~߾~لZ{wy\{[c9.=;4k:Ӆ׈ډdr~;ΊR2	zN4́?Me~uoD5eZb̨KL<k8hRaePV9UU?1onj
/K_ uKjnCT^-BYFг[y*'ګAHeU?3raRZSxebMZ"Dt8sNGJz̱T)jVR}
44YE KpgyR:a ^eɌyUoxIGW_5SFlײxDrhҪ$?4۝l8x3^V3 qbdm5Lp@/'rYh"XcKQvng?NSS8X찇pU\XȜE75ֹw('̨QM6s=XaA蔴]b=b`Qxk50(o$N0K'Czy d8gG7kZTh~Xzm<+Vc쿞J~+=R y%k{%*x7GVrpE­[[1_<BNꍺf3|M:@u9
j:?@{{΍^D%GJ|,d.d%#R+Y0Uiu6$+-/#spȢ_Yк
c BBotinyҾC銘ZtJ_A֥ <eӬ*Q
M+!Wm,kZUWU%1}GH8B+3=	Ҷ %Jtg5H\L,j
D?f#S#MC7C8VdDV9Ŗ	.K(apiwrOtesnKG/-|B3Ff=L}qP^IӃ`䇹o7i<3@LG3$(CZLY$7,}z#1QM'3|dwUfZa83X%V/?..wǰȱYڵ﫰s~ѓW4IתWX^9!=zg/
(cп3. ]"^Ыf)g
zH<<MB^5l͜ZDei*a;	*UglB> k[A>V= g_\YQ{?W=32;2B+FSu!%,nOlszxU'uE;q6)KPP#x0YƌTa:2#r\7@5z
P/pvğ6`[(
4bUSF#`>{Xu"o䔴QL䧥noYa,t,dQ6j -hnT{|,@1랊zH&#m¹jĪݣ
g9(,>X10-+4[iɋ/lP.˄3q8fn0Cz7w<$ɉy3!i\āxK8=Y!ɰwö{0-& m3ͺYr
FثtzG~Zche
waͽ`]΢LN<ICjY&nMs&uPX")+ 1ȚJ{˩&tLٔ!SXjeJ;A):X	^|q$[5M?X6Xq%[Ҩ[z~$!ܝM,'qxxʸ`f+cHPVJ#Gte*]ExXE86.:K(4[Q-]櫉P;
CD>8.X<E`AxqN1r(G8lR&͠rq!p8Aa8,gn$ԪCh;H2ia5מq)~m7J%+HKH)|XB+r-d-9⛙+FVX#m#\Ptz0[1 "eTYO˚D0Dٽ=#!}/A9{HBT$`dzV`ԪUn(,#涌צPScf~Az"ȋ˱"9HўHBٺ,}@9D&
M	to~)qp]R#D'0!ʄ!F֗@6Ǯ
I2CHM#+&l//YQaЕ{ EpY!EZ9?wErDʏğ/?OD=2-FG
dFssP8`$E. RI~)ȎתSG ҍ'9^nK4^v@!DF8q<υF"dWT%S^E 66-е#'a%^ŞE^.`b b"pi +h"(T2<NEJOex2{e,c/],tכK-L+ZVl(HO"؎2J7g18߃$lUG?f=-(mfjVB.>T-xKłHT\}ٟ~0ل3Rd&,{?@9o(lzg}YH{QO2AK ";XPKeÈ'j}VP Pgf3X@'-LC6zt
Uh	I_ ),l^2da=WScʌ+D'%NElHJ{0BHI4n
ե3^KenrߏqhC]*zDiXjg~$l&+QsF^iN>ݤV\ M2:EIs͡7/hf.wv!F"'`5@meƭH7&9֩)P9rwvC:܆;`1IdǦL/Z
U0 ;ֈGKVYlÙ\ }x?M`^SG<pd!wVdCxsjpmLumб9Hqm"R٤uw6ꋫ(LD/B9RH,F
Rfnqn
@Ch:	;g
vLŗ^@LMlU4bjRR1\*L^)TaBw",GD9QJ醲@t!z@nnLT@j+/Ta[UM$@YvUĬVL_ajsz4|4oMU%lA}YM>ײ!DZx2YQ"}Qb"-@wot{o56k-b))`v4¾F5N2XU&fvi"ivd$$*\a)+T&9(ޞ"*UHN!{z«&H'2	R	r8v2SUn-DFȘb"Pr&ZH4ӆсA^4HPyX1h6p+AqP6"Eg5<'D^a3$y@,$ H=)QFE[nדM#4XU*ƔV*tk"
F"1j@4:eOfa6huXUΜ-/nV(U/1F9>cQVVAiWFQw>9ODܔD_fȃ2#Kc<7􂥸hp,mˡ\Xebԙ5mof|)A.TBXɉckцR~MVbI<LZR׏.INŁF^xmJ5"I\Dm0	fSGh3$sMKl/fEd>A.=a
ƍM9aEiG0u/*C[:q"@(Kk݁a<
L2֩(
B?c zDh	ވgYAdŐC3`	dV;rD+QQ[:`ɔw۶`A,*942nwEru^Z!(ֶT
ހ' ,9WmrEid'L2iڌÐb:deg)_:uBx#{.('-kcTEF73Od9ow/}U.8ڡӨm^L~&)âdr<bz
y)oj75Yx

`¤Դ
mgdRZa>y@i;@?sWxS
iC~qᩉ&z[~CL^H̑p+0QL1c(y
5lH@8F WO6\h̄xa+Lc+O[IF ګ;RE2O|m :[A~ymۥ%5w:84
@V
r,qCk	09z׷ΜWL!V]|B1qb!$Nrؿ\MXk9	3!gS CiO؃O@IcM
Y2zV
G1Ǜ!a 4e,%<P M؍Cm
<L=D3˂8C=ۺ jOrAk	ƝBqr5+YbX%dʌ	yJ֫h7TpI;y$;WH:5[7EړRcƵ2)dv4
iDMw&eDϓR-P5lej
_Qu&Gb7>eڎmaf<"-.e#SHedX*B *(шd4r4͒ŢK,9LT.^zKH@JelP!j#o*
d{יќCU2wAOj<IhL	s0ϑG#cܞ,a*z(E}V,,X
'Zr͚-iycs*(
r3yb]`2 K{NO"S,4vzFK.|Y|DH1!_Ԯ+fLJ.p&k'/$&KPidvz`wD &Ak~f}7Ek3^|XrjiS9 AAo2
a.];FRP7qv58d-\nE3!1]4m:4;V)ˎӂKS(#;aK"Иy؏ʱ|	m/2VҡjanS˥hrHyFXEM#pS$9]^l mpIԦL$hd|EDϮ\n``k+0;췃ҬreST3σrH2[Yn9%WÓPi`>?_O-=uʏPܮeFg#Eֵ͛'k.u3w*S*@1q&)DL-$>~BJշ!3jN߉KI_9Z_s=-K[֤*ԍETWNED3>ٖBm.Hn 3-4%rfX=	
b,
sa]@F1h
*H7#fcOngL_:4Ϊ.vKThWZ#3]Vݹn/-z@К:yO)Ā>C6@nm
j;k@Tճk"4cdC@((]+~; }R9
8<9\Սv%K}VUfIź /ĜfBF(к ꕷRVl?BI	6T`=}ʮ`VE#zӍ4!#wYTIejeM++$@<z»oi#OZfDڷfiR-t|5~RL|dbQ'޵TyFj!S* Sgy]品yB(`8*ԟX`c.۱IYt

20Գ 7ޜ"Q>V`#rf?&P1Q0\&RٰX:fH7Y'wЌVٿ?>@>An'B{s)Rd&CXKEj*LϞ8=+³n9B]]&6q6DS/!CA %eէie*aD9%,/Q-ֶ~x
X ʜ芉X*nkl$8Xb37u7k.Ί
41q@\z4 -[y{a$l@sg٧XY//z|/'
TyC[i$~|DlGpz$V?Bӷ<بafrtǠ{QH\Qc"v/N&Bz<,H
ܼk[G)''ywSQҍnW9LTBiY{	vcZ@F/c
fFb@`9:}hjJ)aV*k.^PMkK8t@/"èj6~H,(]lP-@d"ښq2]R 
2m@cBfYpQ&dX6pq?y*Ҡ@wq%aPnDR)O▌H,+3Z6x,_&8ɐqj-}a86'A5C#ơo-<TBvw'ZEDw˗䘖7nIU d9Nˣp&I(Š}@*RUE
4_XvD0ŋ;FI%:;:My.< ~#ɇ6{fzTʅ?Ui
x 
q,*L?"4GXs'iA9Ԟ\M|} e.Ht.1iC6E6Lev	8bv{62Y,b,rfIH@jKnXm{1{b^E
p`ޣu|WhA_"K	&~IXMC܇AeR[=oMķln#dHJ:P& _5~NH1I{.QM-א.p(ȲShZҫdۃl NV`
OFvQ5~(u]1'`X=:9<:,iW*.Q6%_,&fȅ}i0aMT`PF,X/>=c]ޔN^y
eeHً޸OP6+!\1*BčO6H,fQk,m7c8(ӕ,!ZǧG\лlgү!XDo\wV.NB93)/:(e,+猪} :{ϑ,?:-w6F Pt
l2]E-iֆ	YJeɶNʯD$P/<{ۍiQTJ}FqT!_׆bL77lݹrֳCe9h*͂*M=ft
:J32M}[ehIwuV
$Qo_ ,.a{22:+6Yq"rRZ/dީ|`(G	(i1(zBfXp[F"i1RViFdNpxvև!<BߊMjR=@p>z*nߙʛ@SU+B=uTw[nx?0,	JTB4S7&{6齬Hɢ[4,8ʀ}H@[ZFy/AT.2Y02Hw7wp7^0Mt$UStky. e1^+7:"ߣY\\ɓ6praFV|D1@
lN)B\- a<_-<tTM<:tӠPa4V%G`E		k2#c<">k~F
ȦqNDT64]\ՎS><çkѫBX͉v
4g2bxt7GꉹIأv@i(ˆi!;gq"	<$fN_@䉶X_qBIδ.jાTW;d3M?Aux;@ty[_vB:#l i'&T/K]@8,\(8˔-L]>]XO.gw@ׄnƳrúk*h<>vҽH|r/24۾F\AA KZ
LPWzEuď@$LE4BE;y26NRgQQP{aiiEehn_3l:7kP$h'ny.ƙŪZ{y[c?밓-ҚR
Oˍo1ҙ:3Muu	Qhg2H7b=i(1ZtБEwM䐬b>Ux5LѩvY 4i[׶HdBp,	y%"Y_qNy[A;j)xTZBʧjs-=R\Mb/Xalf= |ʜQɢ#S(+*&)0bqK`@"᳅6@?IQ𢀊%kX'i@. 'Vpb̙2{0Q	(آW0vb%]P<S~j0R=v1eX'M0@]n-O@z[HMlZuq%l߃uF_&_@d/Yb,tHt]P7lv1f`Q!N&-]ۼ4DAfdT$~<M	-VI!E%tHzUQУ3T@>	VL|kT[O]yMkɰ	|YI\TCd畷}c:AG7rA@dLQI<l($4oF#Cz$B<[`{bǒ%".x_XKmF&9SqZzϠwj4>fy`aA!U8'.*E.XbYijCa?WdHv#8Ʉk˿Qvfe۲=TNkgWU`$IeBb@Bi0rLѲlKfCҔnR(}SYNY$I=35&e{(3L,gQa*%P(
]pb'9]Ɠ[RlهTwml T`h
;b1M>V@wpXhE^r@,@8I~D\On˻m̃I0LY蘫uym$ d$[,w.
./M,{4Ey
TpNTh5Vx:lĄ
._Dܱ2+MchT?/F'\@'3+BSo>5O"kMWUflMŃž;uo.͢fz	8^ͤ#BއQvKZPZ)	F	ViNXMq$ݾ޲x@%R&lCkp`xuI	т}B-rw`?,SC䓋oC%ey	c1(X%v:41%vJn(>-v}xhtiA]7)H}.
.{Cr2E`y'Cva&aRk+)[N_B誢fI7 ?wvQV'ǣ596OcD2#5YsS˶6w@ҝC^m-0
"y#ڄ6ܙGEq}ؽVڽ, &^l45H΂d<W%%&q1gn`VSpېШp+=EՖj0q2V;A}-欿"ЎOcW~KxX0tOaӘz]˸+x.ޠx/NLU*Hb
JIy"+(t2H_)ǻjiG̺[an4B~lXT$4
{3NꊙV
JK]t!f/Im5GX4WhsH8;Z!/|)Okq
NҜ:fֻrKFŰ'Vsjzi^vC
	"7~uL`uqLI1y`eFxWvB4C:	#Gu37f踠*MGApo7^)ʷ٩&[21!R@~IN*S>\~(
I|3keOp*kåb>+Q[ŵ>UxT!k ~#ts, K)B.X*+qk<X"sNugQ6H^ݛG
)x
I8J16/
	*Ěr1fx,Yc"FX{`2VIըJk0NG%X"xf;TL*ҢݸsMh( ]	\Ha`z/ְ8ks.bw1cSp#J˃	D$;.E*Q0l@)]wBp4S	'Ucu68ϋ/ΡO3guD.JPswA蒾lXhE [X`uږ8,{x-_v^":l6t`;IMF:}'wЭ)MؓSr/PZ~SE+`(AiGiiJ|݃޸J-#<-&0eMd-Q UVGW#ypa1h}!FJlZ1x	URBB83DހJ&B[LhЈOOl02Q0cP.=Zt*%zD<b/	XxSW=tL:0bJ}`w/3pmH짋a
A#V.S+X=V:3L:"Iy3S!gcDvZfUBPO`X+:|h*їyGMȕy<t}a&_$(G"YP[ݤN܆oz70a4TQݛ
?nÜ:caIDET<#"y	rhOUFr:	)Dl)	6<+_6^( @LNR	Tn0mL\ͅmҴEkf>e!㛗KXѤ78{J2Lq
iq"iit\;Nj~GJM	f\8GfJ.X
L,튡	a÷&wLh;9Q9m͵{Nix2∟LAdyۂ/i*jv6f͍KiŌCٱvQQӍhlQ78{g4:Pš踃D<uek>ab-aQp!XB>Ri)Qjh6s;QXT	#(Be zjdh-Uzr%8κ0*=K2϶
)HgY;REdA(7S$M2p4Q>

:}DPѻ
)fBޝGl!)0X4D6*iC\eJN;a
f@FXzWL~Dd=W3PA;j?nng&ےABq͒Ќ]p,o(~'_TrUv#2=):3#
&!ECSz
KeK0Rgw*Bx12窬;&wS\Vz%SyU&Ց%Cj\v79|Uef"߯N 1?h<dɸun:`jh*
&${*TyXDBcܨ<}9nμ.._z6̑Zu+'Uch0p Ș[h8h,+wL*erX&c_]ۥԭQ=ZE~,mx=ZQ5Ηt48tӵlPu5C0m~ؚRʐ-Fcߏa2޿	h]f=Z%&'.C!Ϗ
^r8-*}#I	d\:Aj%d\|7K$ k~H-%f\9&3S'G>ITo?S|A[,JH\qb}9eH	
nDA#[2\_ܠ;Fًmo/TĐ+d(ڏm1د
]6bU@MLil
ٹbK(%rٽ-tS]!fʭ_$̑11i.Q߂]c"3	RuL1x7sfcE};17;4&볎3	`%dj5>sfOht,	fgۧ~jecު!,o(X6	A#ۊ?#y5@(lS9}b'ޖJK#k'ϠK
tُ[HiXud0uHfDǰV.U#
f=م{!3h'AҞj'q54<S|Ѩ=U7vn\ B*fO3iJ@ fU FqR3^  \d=q'mQD<b<EO EC/:sF} r-7yN*Zh/c(	6^mʣ!Ic.j0hubUWd P!٧+`nB&Ίi$^xܥ,itQ
.,q:Qׁ~Vi's-&"!["^y>
DElk'bgZLFzi_d<;0A6]"9ߪB(98$|I4#Y"b~,il{[\c-uڶ	R5K
C	0ybcJA\Ygf8Mɱ7r]IL+ͻ̳p"A5WyHR/>`äECEܛedM=S!w3wPq#CE" q'xЩfJ-6jM8	df=BChc;hhN]j}
{0oasqLtV׶f{'u;	3ę0 zJC0~-)VMh(2x
BɬoL)D/02S/ʕWka|SFo	>'Ed=Tl"'C`3wOO:7IN+f'-(HD2
XNW0K#|!C`Ԫ*뵔O	æ
Zl"-HKL<ԗ?7d\\A\;}æLMZ`iՖbu :tR],O46'Ň3I#
YX6Y{^п-PNNLjoEds/$̈́J?@frC	7|Lzf"cr'<jm<@6&}$ioLNe`各;(ŕ2p%YLхMAte]"w0n&Z@dϞ؄!נx?Шmd'vgD
e>mZ7s]K(=*Z0}x/[	0עi;)Όlc$>M%;k3q?
ueVVv%gJ̥'ƙl&oHNW;+&Pv.X
V[JdqZ&k;4t.Edi
#2,H
n;gk+4tJ84+u1gD_x;TKg-0u_t>iҼ8.o\,7[xySf{8.&JvIMhȴqԲl'>IZxܾTźx`7m*i*#Ni%)u<AD;"pk=sDoOi&Dnԡh7W(==7Ib+gWq	ΤQ*?,i||G~k55=8|ǫA
R/܏}z4:Ll6':5-G 
EOxI)!z$IɎZd}DGTE,}cއ-
Qu6IjekbQg<TjI.+0x'=<(_60>bJ4 2W gz.ȻCn]84I4J!xQ&hhq㮭;[q~Z¤bOdُ=f"h3.cx!~t}VLU}.	;tI:GEܐ>#J9R ٘B3Hi1L#&4hO<%T
č
8ܪI&+}Z<S+E*UϚ<yaLllsA:TIVu$^.=cMr*X.J
uDlW7zU>k8 Gh\'ږ&"+9îo8
<竁[x><ac>>ފ|;4Q$w>gG8GXIvF{]^|}.!|4dnSh|qg0#oB2z#CARB*#6Y0G{t$ШJVX$2ߕpB\sx;ɘdU/ҾE750/Tf0=ƃWghCPWK~ˈ}w3Lʤ髱H+){~9f`Y`yAIHS:NRK&d-ާǵi:myXkL31,Z_
_@_^Pwlj,7-+E|ʧ?\.o^2E_ԢYkEH*w_{DYXj>W,r 7fOP@&m| 71FM*ÞnBh5 
_BQrr	Rcui(ǱiHF038ȱeC2\h,=ƃ(N]
IxX?{ʣly <\ffPDf0os%5eTڂeō|>%+wkVCDWg8Q:YesPt"%2EyjiC%EH6#(kh~8\^"1^e{qx&;"FTpz*&E2U[
G+Trk6Q*/bɝdqQ&k_no9xpORHRU.7c쯅H*-EEy.C	/T˄:WS9F)>@梶ъ! q4xSjѣ\'
x)[ueSE/F@/O7qv4BHH>6wT4W(^&\G|@iYVֳ2Gg=eb	>U'R졃P%o7tXxܜ	o~Eqy/"6ns;L	vRUK<½2Y{2\:Δ>bn|9CZ:(Z2Umf(<]bk*5߁NJ?ŦO&CE5a6ɷͲ?j7}V"aKvE3]UHpo edr&ࢀyN֖G٫0\f9r,GK
/EBנUWxW0-q_6<)VtzkaT% ;Y2V	c266t~[GY8ILZOz.zZT}@ӎɫӼ5XX\W :LQ!JDVHśq(E/Ayܨb\(A@?"Y|

cpj9ɷ,QF>O
<msVHbxLkr!O	m NuY?ᱷF W<ߎCo
.LEܒragȹ8Yg_MED#B/M:qf,RK,tvcJD=dHtrmEJvEʭɺ;X$>"#!$dP퍢4d[Ӈ*U|F^hM䅁Ȕ8(׷bpP.\P|C5XUoeSVOr[gG\[+jkd5D@[E, ZEDز "υuwR
Epu	ܥ6zFt[
c'0Hv^0sUTy*p/-6\YbMhj%f[mq7Jp<gTC$*AhǮBQoyQ9dj#5M#-fk3Kikz*G^׀b'#/ 2zvL ⪙=2E^0_L7Z~%<|{|Vb^d5<(#I	e6ܘ9VWgAy}^f03U耒<n(%lТ2]Ä5}bJ_vJ9&%r3_wbqHDD~8K=-hif-XFW%G6z{yJd+O8ZrYdx56B,.2KTV؎ȓVK=hĞXȳV<u	fN=,@.aT+*sFB`0ZFAᡲa]C#}_h(4	

'"J0+6+<d-0j"1Ȱ7yl	ws047l3/bL<D
gd%Kt`j:F6y*[jԄ2$D5g*UQbmvEV`:ɽ@4āIJ(L>{eMڪ4^fz߿ l3HU UFz?| x	41Ah+mIt1"m_BF:T)Xt=4hl"POe{Ĥtftd+m-|vF>Q6l<3yMwNg
kjJspMݙUy&+D镩a.Dbp$3͍`,`hf%\~%?l&["Y̘IlmJւ 72"8C)bbCtKuua\$j;IT;FZUռx&_A3->̆ĢZ-eX.T
IW#esĳwXdFKv{keepJD6&CNMC<d2GyX-1ғ>eh{R7W$Wbne22vX4O2VXxm4O *NE>~]"i]&'~g!1~&	̈)ezEX,5yF<*.m1c; !Zȏ#"Kfa.4<(*Łh^[W:S.*sOYt棑ѕ(FuD)''Oh6ϰ	xNPDO:
g$lHtE@WQb*r;٢_ʘ
=
mN%J4xtqmI~6\-u`iFQx̊7 ttα2DJ=fX0f:-%`z??8`
ul~!yZsʡJtpbŠ{"7MWB
(q7&r/C<,l,lgi4hGmX+T Pqp.0-CGP]Hi}a<`j;p{2Qʒ"}Xqw^PQЗ
O62'G lAh7l05|鮌/:
sl#q.YbK	l P]$-S~0SUckަPV:Mڇ˹THNXF2ۖ=PrGnQof͆aҐ`H(j>߽V0)i;3;Cdo* 1N^7ڐg7.-@X{
&

kI['h"
cxkڤ63sK&ۡ
0%e29fEzkրrQr+++kb
,Wm6Ψ\8vdn]?#? r"-,5)1[HKG~q;fo& Xdܞƿ"qP1营e#[%
- ,$3]1Ue%g?o>H NHZ4^E\K+LkeRK̰e+Ƃit&Lf]lsoЉ{ap@O
$d@qqhM¨A~Q>d4yG|עXa:>>}9@CD.q{23MH<G84vYPEhʀp8+pqo٬,QffmvhN/
 F_T
m/XIƹj^n*8
 x/o@SDzm#hL+N Eo@jo
x2+Cb)8'5su(CM Y]3,D~K*a>gqdDp2oF8 fő-%:+#-{Waf9TL昀߾lUxنF7~coٗW&햞"&?l"gS
gQ
U,`d;mhfc$SeXZ'
d`
<7H$g}_#p8g(  SD
áq
tt>,hR7<}&a9YNGzeEfWCjgoENVJZBkM{#@|ܽ%\Tf!4f.
}*A={]g6Hb߳il'E搠tE#ZHf KÔ0AjLO
:"Y:2M$oWEk2[`/>_ kJlaI/P5<VYJW-QE@^oSf.^^R{R:$SPKAw8Pb	t-vm>cȜXȢb+2CTʝ6d7,'/bdd̏Ray@WD*>`WI1h2xӀ.@ͬ>25^\D.TWeqI7k>)dC_
'y1Ͻc''8ks1pń_d,۸9RUg(4	Dqw~;
)_lPT].=>BWqG!430wZRal뇆ȡfg4$9GzKB6]`+9r4IyaEޞm\T ϊO꜡G٪T6`"WԻ#DɐБq$k#(
C2cPeAL"7X~2,Ji&vui+0ⶤrr
Rsэ^Em0$Sb
ܴcUv8MH/	n*^£cm'f`W%1eC>+)1 
$ZԘdDyE1ҨVE&^+a9<	:P+]~)vgNMGb^7G#}>Z(Rr4>"2lOS50y#*kៅ3pj%Vr2a{I^|CA<!LquͬTJ~uv?gE-sq	nvͅն`O#iݦsHY$,:"$$oO)
>@gd65o{4gNxmũ
Wj'4"ucr7vBUPy"L&×gxyᳱ 
#@?@d9@zN|WSURV(':
(@yIŋDQvE_`cf&.Q D,
+#JY<=O>7A@!p^Չ0m(POlUB65  #؉
 +A>{d,pO_*5E=߯8f>h<#!SIx7Sh
:Ai,|8!r=OOtX،8yp)E3|eo1`v5.<L&M]$EcrhWmZԛ7B'B1vtcL4XgzFA3֍m6mj0q3z8w7re ק	w{gG65YdٔUled¶*{jͶQS]y6LfSEt$C*	Wϋ4bw;PbpNb*-b6z;zel!wub"Z"V@^Wk|YU~uE'P`(]4
<r"2HTMK}23%E\vO_Gyyj5fHY
\Yw;c 4=oNtYd<w
28
V 6B4l$Dtr9%*0MN$β.AעՔ
URxȦly.3Uؔ=CYhV=mqEkWMClEG(]gjX/cҷ JfUEWF~>Á=ycf/uɄ)HY4'!;>;Z@s_ [r(bHJ2]HDLʴ	=Cސh/1SR{@96䖑8
HΦs*/Ƞt("<۽J 	ve#VUQC$2&J!큧*
L
}giCJxW Fdbye\%i
HKG`NB"JY
$汃MD8R'~t,x'}<?AB1	,t9`HP</qI<V0.0U9V%vRÊ
/TZ*sHyK0a޺"_ڌJ0
eǨ$;UCO~3(l<ްKz>1ȇVF5	_d
G!g%tb5YyuJM}H))<<uxۃA5L<Jql#q&^xv,%SeI4yZMA)p`7}\XsU^6Mf>d8μm@6JU&rz(	5*m!C0^:'9(jN<ƪꎎk΋1eӹpGi2= 16"3l*)B8H\1Qba2䖆ߞla:@JNC&&`v$	Ma!F.B1Gcs* |=_ʤ'݀w}?b ;;qd`V"fԎLC	!BPjqqrqtߩ9dqcf#:<lR;ȔnR%2&p6`)I.H2tG|@ȗ~v!JV9y]}Q<!RgywcKt+\k )\:s"Z-eE1<ϊul쓅fM "#MMS>,D_lu1!w!#hՄN
z4%U,\/d,#4 ?/00_/^uA]"L6[i7tE)Rc`'7Ȃ?X&BAWT N IJ	:ɏ`E/?!m?L
O#Z+p`w8@TXYE0
Z2b<2D'swesaTfTaF0sQbŁe3}k5ڊVL,S0sԄk-:{XNˇD[=bSZ]1po0߸tHMC6i!2^Ʒnsf/]4Kϓhzfl~j<[h[ԈUyy'hDw}jmbdSү"ub2bM.'E6KfZn
ڗF~A`=:ZoG,1(k+?p`ʶ?
\umϸ#&YbX{D;!XzPLQG1:<挹-0AmzXG "+@	
obIܐ6ȇ0t+es V rLhf(`Z:bi3R@ZYiXe-㜏|LЁivHZ^9~(f-Dj<R!ȴS]8#ը3`TeYf!!o¸<ۅD*Ri nl־
3<EWHl7 V?I*ƉU<tvOIg-dFup?C/b1MFaxPWFhƶKPXKMfĕB.󛍧~ټX"HE#9t"s,MJڦ3K3 ul$=B]"FG~;qOɪEa.;G&38j!^;/~_)60JASنGBhAɥ)#mAgH7G\z҃+d/̈<me~:
dۙri k[(-3Tk*y5*Nu;<+9H,cڰ%=&SnX^
f49!3k%8l FMz5U@]F@ʆm-@lvX&V?"+_@!ſfkCFP*Q}ͮ,51F}9QK6BEF-=#6e,%ZRJ+΂67koBՇ^O#4f59'YezjV4$Ȃ@*
WthA`\
L`3I:Gh'2/VKNν
+I

8oʤmCa	ܹ	/'\΂pPE4\H",;*zSqeZcfo'5f^f7Q~NBSz8:cw0zNF)[jc>zcLKyemܶu6w]X4eѾqfl1	c4vLH=kS]CyucJ5c`J!Aq+'/q"|sTjf`yJ ҆M&f+{yP6>٘+;E'5:C1HC^N
Uvf&G/4}{$m\[jdPSbIf\f	6p]ΈiC,/>!`8#6R/V#Δ^5Fřvf/fEfwdQg)4o8]d3kM+lo7n.mhU8D|vHTǏyHWKsZ,q&!LLQZ6Qevńْúl٨-v`|L #i_Rd69|F}	,Sf0ˠ,ha5TG3rlʚ<o͈*ǗU^҃CkY&#
}IOXKc5ޛ86hJVLDY`!J)2zR<
x{F447
>V4@2Z{AB8lC`6<JCtePrjKD8mJlr1n~U~v[OPY6&)
}{
nt\x;7sϩ;:pW1O ]YT1չXq0&u\7WY:Eo6
x|/zr3[o'csE<bX_rJNm\@'jvƣ3,e:̨%#8b^ <"4"1Mڔ##I
C<iyAoȳ]DPw!"<ZNaXˬ:DX^'Nm%6Coe7k)Yid&6Z!S܃v#r$ɑ%x%'f;2EU8La_7+0<X'poTedXZ}J,MBuL4q<7'a{TJ1!pǚ |'`&8[TgŰM-g1"2˳t]mL9=b7z9jğ9 :/7t01<5
]D>쒥,~bv1YWp--YҮID,$2mLL7D__ȐZ [
Q7kD8GgcXk).gHןYv*W62:QZdj?":]RW`r\@Hö9^qxCC8~y3l"2D;4>$RLծ6N9jI+$r!:k+|W XݐJ.>mm
y%=B& ,ZX>s3\*/Dݽ0Gޠ{shˬCԸũkh.rZ,"{
Q!x`J|>fj:{O%(U&ƍ`:_p_EW,&l7"'pqf'vf)Tt
#qVbl0IE|7X[YꫀbPiwVBX3-~@&6~EgH+ׁѽ[ngQ4emr8[:6,E54 y 
S{"|M/7ˎӹ$+@pnQ\
CnjG3"(DEn$Cf	.-UhDڱot+n}-#	Ls|	T Z䍋`df "[*ɤc
i؞l@+<
Rn&YDWVC%<c툕YcV%ovDO/Q1V~CSE?I\ԜahAknnjUBm7(GZzd}hߔBX/SQD B#	,W.[DyJhAEѨĺܔVz,89\0oMz+:1͸ @⍭BQl["mq/.@ZF8b=slRe ]|P&rt֜b^;K@p/t&mXn4٢V`.\,Ձd+<>p
IW/O+?쇸|(˵9%`zneP,U31@	&^,14
-,%d]Jh*cمŠp.#VRh쓝Λ
 Ar&$r⒕NCA!S64݅i[aj],n4S^v7fl8:FNO$a~lhbP|h6 W{U[۰*]%Xz u4nRӅm Xlo?,&-᎘3s5j[LnD\ 䒹EojyMNj1z5@6Rԥp1ǋ>aL3
4I& JMxyHz|ej#rkhZ['&B݆U,9(雤b+1:#SpbIy˘6d#elUYՎ:ңNѩn3-A87SW}>azj-t~)A`#ߘ	`lS]v.lz
U?bipelClHWFh.cG_t>asf
z#"ȼB3UesȻ6yN&bb!%LWq-p#P=zʪ)
<[AWhtX8x-<֑{h8mㆅ2+\mkto%7iNxGiDyT. {2b LݶV}s^TOIMq2IӒ[rClY+?	#qnfz< ;]?f#Dpt;KQ-if>]Xs8uyBn@bLWEif{1 d2%^L4oLAh4Zh\`&V
<KN-s3A9`(S0?RZ!~C>0R.
(סta֖	>J/D (c
{M]<C-7lM -`d3BӺ#ᬏ3Pvbw+4~{?BvC
G0bLڦ`1[MMD)(GcZ˳p|5e=Cog5ɡgj*O\o戯B=S0C&6֭Nn&ʊ=J2-[.f#Nf}Jf?co|#OGV "@7h~5tswV-`k%@9DzTÙQRfqlL7ۤ
^:=G
Ɨ,1QPUtdbМAf	m&fMTG+-`;5mB4}GD*pId,+[ʘɕnbB sm7Mv.(0G0rc祼EqCopO[edL6bQ'&`36a)?ѳmFѠx%Ґj+Ԓ;I2ăoKX#;%OK"I!f3p_oC]p-- ǔi}pC,J)7z︾bxG
MHmXV%p'&QbՂ82P("V-!?L}DX@,hw ct6#҂OoS]~畔 LWy<#)IU5gd)0P,̽g%t30k?N)d|E8Ђ~z}(}J1P~g0KQ\]NǺJ0MwK5"CyhPg(Di#ץdD{,r	a(6A6gI<#%L&nH΄cM
1:N<A
R[|#~)i`T%c):0V0(	1IbHxA?j|My@:~+<32TfkD});Z'(r.Z(F
"8`UQ7$8Uf{Q¼\Uh_WSmt溋7qU#sNSsE"D\@yJ0\ݾ,w#(ǝq:u>9#Kp-3o:[ȉiR]ٔg#ˀ|eCB)Nw~Y+D
LޢT7ҋ"B6)"rBU)Q)3pT4O~gQWPOȉ
"Gc3tpB+Π3ŸɎq,_ПݶhjR,X=eWxZU>Ɋ\aw*}a@5|)Ѫ,rk5z)R7]vvh'UPp.iY[PI=HT隹򍣹-cɃYUD,Ϋ't&!20!	\2A@dOo6oJ$?P56[.EzJ.pHR9݋6,1LB	J5Wx^,|9dU2f f;$6
=:~򙿻AL/YB_`XɜM4imz~-fZ
p[?%Ev"െd!lU-q
AЇ2wa}(pcݿ	᠉x='H]#Ktn3CmܳY/ߡ-Td"I0S,2Sl|"OVzkR|:f>:-&̡_:Jn6)L}KBtHK	1&.Fi-`sR{/Rr8mq8.nPK'ӅDB)}p5V6-zo6
%yehٹ *Qs.=s%8=.U@i9>{-4QN2kDEU1h0E9àMYAd^mF\x,ME[q (FɇJ]psg7qBE6j\FPwx_<;HoeL*[YD;FX9Łzat($RͼD2̌~	)m@IkUdRnBS(E^Z	HUt
N@ٖua.0ŨM0g3ғ	71dKY"_%7F5dgW%?6F$HcJ9"gL5lv3+hɥq2ML9)@ʼ2'ŵ9.7t3]2&i]U;v%HV\0zF[.+#F!]	X뷎&y&D3Ӓ#A؏И3s$#F@ ϙ\1_J缘N8zÛ m CID2^LDbPqK٬)CeqN鍩,? ā)͒uI-3 ЎTѾXZDݎL'ta|E*bF!]a,A]	Η
l@s
^1%5ߴa^gTT(U!¥ٚ[	+y\LWdVFZ;#۱aScsF(%p4|jfN|X 6+`K|N e+ #XС\WcxY&TYKL	54PA;4XLy4HJeVZ՚>,L!yY5F0Xy$79apl
Uz&Ҿɐ* j׶WA- DT PҴr
ui߆28
9=1ps3V
:7bEMPYlGTrFk>lM֛!REӥbroBT#6 (ɏ
gr)Xa~)!.Es%;[GHDф<>Qs@~LE.R8
t
1䲸ސb@,P.(isUq8	H37|ywPYX$&yo
klkUC}+tм<, 5z<2ٔÍyGK.zMzPzwO(Tzz8J߁/1+w _CdqQ9oosKn$	EAYBMh!6o(+$C@ԓ
{ؗ%B% Թt=FQLT^Tr+j̗5ϥ9Pl/\xё:}3k|ԌM, hѽ9.з&u|an]pؙX9TߎukѵH/,!yd"3f
+VvmCC'yiR<^~-p*\cm)"ˇĂr[w־-?&>-G[NR{`ܭMpmFL=/*Wa2/ZI-!8kݤ!ls1Cvҧ^ۿ8`܆.Я,XR"1[;܅|!J}!&e(`Ӓ*ufXs}K}j5EYNP%w'ےW6bzҊ^oV6'|C84(Ft&.Ns-m~ԑ:M')
GrIxʀ!cRp}qh;L3m*"xH2Ax;
k[{/c5D֡*>>Kӂd:TR]Hj+$el
:rb SNh Ԝ|GߴG}
jb0h]sI"Fg<VSEj!XAUX:@XyUEypD_
6tou#.Ċ`B|2f-FZnͦ`dTxpZNAu)YHd<>9MߟH')uW\Z4cU;-;CXRʇZ_pYDGiYY\6|K"2>lFmI&2d :wv8peaԸA@%\AuPeCV;[M+7G5 c5KY1{O1fG{jN
gV#9fT,s#P|MX#_	22ST7DWDQhx7tD{e0Ƥ	=E	/6`͢k
kBN6HwaD):Ɋ*+RgCR;>CPT
9HC~ɴŽpPN<#old
FΉ0Xwk&>L? @߁^ljtyBT4ܱ/~ׁ$,_XߎeL!.xJ1kÚ[Uvf@P@*]nxPOi1T̋Vj]p`yOo`6uN#@&:NoJ\KĮ N611Sΰ͌/oXy]LkՄreӜ؃>4ŐY
D=Xk{亴:-{Àih{6Ae !+YmVd%~dGx'&SO+J悀|sx^TO	<P-FgCMhgCsg֌jZ<HYpD̖/0=wkiRk5P1id`inV{ƌbeVbaqBd@,1_ظ'ԴC%Y*w P?Li#·quzN$rk\g 2?KQۛndYDf#ݨgi)i{fE^Cxe?%-"}[KN.$WRM+h("vt=r3b'떩"(VE)7٦ǝƵі,'xLtj#c'9bpK]Zy6<
~t<Lʖ=\DfyIgp+:N% \M h)kTe2ț;3_tSDIŚW5A㽘V~'AM|15Iy}?qAiZ1<3n R:gHv%ںY{R_wa=x4-VR1Z]`ip=?9ƛck ^Aq4ff%"	UjZR\Z"ԔG#kAc(W|ΘhA07EՖΔi[piʡU%	KIo8S(f2G&־٭(!ƕ_\
$)ڐ'ݓeDJ^[q4ql#)PLF=kx/ndPcؐʠ#H5نCyEt PYwN
hHD-SOo'g;fݲKePp.jqG+!(VEj4ۆS- qPa{<Py:`8c#`@B!)8X=)0Rň{zyx@LnSl0'-ͅIEEnvBXdt,Yhk;{Ҭ
oφ&[Ԁf8Rt}TEɄ~#j H/ck]. xw|u8nI1}֘d;G++W֏f#JWap9EP08]w0v12Hr,fqa!on6o J4ipB$AX1	>#< GWy"L*OA˸1>WVh	v=XWuaGa8pu=~׌*j<9R,^? E0p]lƖuYaQVO2
ʠDΡ.0B&-\y4wҰZ!b߳X|{(
e#VvW5KtP~EG>l^(-w1]Xŕ:PiZMl.p;,z:RؗrMɾbGF؁.<eӾnjWybEQW`ej򋏒bg9S+$)xґgCVQs#pUrfY{`2l'hW>e}O0IufA#X<0	E?x<$cCL/!b5beʥ>HGq DlrMU./V%Nm۳ž[E3%E.
VEw8H;(5yy:򔝁Nƥ;OK9-f]@fWkN+4*}SM[ynpL#Y!hOjP13Hs@-nH Pɟc֪qAc$DRAwCyYRfSe
TJT[v|CkK1)SlAf\w!iiLaUx8u-?w
O36㝦@><db
6C1gU{2 M/ua_Fnkt<сQ [s+=Ll~)=m[Q\K}֮{?PRS_MWⷅ!pzCY0-/a2=\'~  #!(uVM'uS'q+Tsds*Uj*uf7Fi9ifj,\Rer/Və3AuxJ	b@E8}5z1)hg'Km3ÓӶ|
BGJU\(FaWAKINrHvTlQL.!!ʑLi|t+]by*Mxg<ĪqjF4ȱ@U
@4$a9אQvJ#x0< Yr58G*HGQ;FQ	"&YGD'Ӫ_
饥,MRС _,1SH*
E'U=Lc²uHT.!
`&nlDy}+*	{4G"^uY?k#1r4cgobRVO:؋LTWW:nufG+\M	Ha?K{L&Q2җRc!
ĬOK񓸩㑧6mX8貤޸2ߧq~EƢ"@K̛- u0LDvXma.HR^92d"|0m4'3LVupCto:j
102_0hoT
L=8ek&oaL'zG\V2]ZdSYeN"xw_:3#*MoP=P^Wnªu.nʠU0+almZd	ݎ5ɲw
 ?z2y2Z2e}I)P Ʒ똃]DDo8;ѬXfO/Ko&NuWxS_2ċ뒅(&ꌾJ]=ir|4hmkb#mƀ@Zu6&YYWb*bONW9t<4~S8koOp $ƀ/l!4)~%&cĳLq,%c&9i^N"љQ/%ng}$3{-\biH&$Ƌ[j-yE4^4Ô{|; 9r鷌0Y	dLGcY3(#){7yȕ"Rb~&6ɸx*yGX(t-his:=81*U|7qSP)e,܆]b-
y*7)Y$w7tZmtqKcKe5n__eeCklIip\[/z4lE~]5gџ":"|bUĠ ,|3ΚԖ̲rN/U\<0ڸGsW!ফ 2Rv?}{QU<QvvKe"CF?2e4kҘLhT2I͢BV`*V|> 6psFQgMƺ淺Μ5v4XNH5X13E{V0?ܰYn03̨m)J2skA^^n҃7;;$
t{'UtѤ
{{!|"i{C8ʢPPNX桫ΨO77[ڒ,0тn!4IB*ÈLڪ(2qKmpZ<p
YT uH#-*R9bpVjJ|`鈣h*eQdJL&y&9N@ttOJUnO
jG>ĊE/0nV+T	8>C@_Ovas
>M[ R,tkE۴n^0SErlx+] bڭ[D"*MĎјidgfmh& v`6M_`|P|ZZCJ.5%B#LQDPbD.<k᫦CYLg9	S,4RY@HW f윯([v<Q8Bp>N6%>Mװ/[D/La<Yҝ0n꓄19֋";92Ht;jǉ)B
srv0&\Xsg߻@0w*J&r@c4|	IYn$P_-s
W(-
ICH5,ʬsTf- m`pU6k2Ep&kĽl?%ܮ*ۖZ%wlNƀUhQ&SbF㰦_@"Wdyd^Ɍ?nx|TLlApU 륙*Tb]QUy٭e/p\viâ_.ryUPBI]诙s0TSYpt@r͐}	3I0=
*AHAOxn_۳vqn4LUKB2])Mi4s(
i@T%a\p(f#xŐ	בmja{lyO#ݬ{NPSV	|_x_ugDVEc&@CαxU|UɃdF||-28!Yl$v԰}[0$ا	Y\4s{y4iZxֱ=rƔ}*%9q+&ja߅D,Jb
^$+"囜a+,3zU.彳,*[݁9Po_qP#n2GGf J`x,vu0ɯxlo 8੖2@wUʜQf
>.9C|	gS^2I=QL-],HI~jDYAsFb̬2
Kv#uv
nc: a!آ'1"X
[!
*iE7iobGFo|>R?ѪMDCO_׫|qHxuRp+fTÊ޶cx I)1\cI$$Q[d` FKȓ+kEt5pV\he3
YĽ	!8K8>/[QfcDXX4^lzP}j|4>`4,&]1
q3I֘uo
ccY}&tC2ETŕ$>X0LKEӑӼ@G4ts'vOS[uE`hF!Όr۹\Өv^gsG*MQ#<E˗|n
UvLe`
Qyisl(yG]R
"%ɦ\M0tOVHͯ֠ճpi5 H/3HwdїG$xcܧᅟ(@bp]\/;w!%V&n=&ݰyyJVM7OIs
27ΊGHՔE'VyL"uc]pa@r-N쩎)C[<L<23
LҚR\KH:gSR5"ޤX5}Ӫ#|c<`xzZ YzwFኳj<?l'b2hI<l-YMX:W~a?$E5ac9UjF,zO|yc9γ"8$[&%:h)w%`HśI8:
b3_hѸ:;b4e^Б{"b~a;N:ZF=Kkm@
74.'lluo<EӒk9-}"~m2+88&,E\yXl0@gbc^R~2%ħ?$(jX|[ک13wn:w 5ϙ*|>5$"Ub)~9 ^ސ6۶zuy?u{(!ha0
p$t?HJ^|4JEx6Z2;/aG Q+<0oʊZ4*p x\L&/IF?Ы&JF~>CQ$:մi@~>~
/p6BL*$Ц^ѥ@a)t-^,E $)הb/V-nF}iQۋɟ94DIȨe70IxޢDL,Gy!hLpemó7d|dRfz`;XEb:7ɚ{baa2&M-FKdHUIs5Țlc%qR2vИ8*!*$etKгjk<޵tdڙN/	jlwR`nǜBs4L8b~c
epFSI!}@BTIbr4v_t·'!\ع/;m52#f>u,.g5p8Dd;c0HPQ"fԲqn>ٛ]s~dpNX3]U9ySN23&sGA "%Z$6X1rsЙ'V]sEߵS_fŌO\CQW
W:^N/9
U{N(f#0زi
Q9[Sg{A
8?ξ 3ˊ̌4%2{m1`VuQ"^m$d;й<Kt{YGFfǢk":4c'ٴy2GF{
v*E3L2XdA}°KφBڕl4\,G;)-7)va-H_95θ2&hA5Rs(n3Ӷ0
Jv/eXAEn&~^/hU5
Zu;[NCjK	:&3ͮ|amWpn,kcY=Gƞ
/ڒ
fAj ޾-Qּr70^|XJiǓ=Ԇi
C 
n (Jv|	ߕnDʥʣ?sĀLI\@*1kpT
feuK^p5mԯeA!CViѽ/'<Djv0ZN毡+B~*%He 0:EH)gEAKAeFk%Zm,mgё -BR:XeS5z'9@eDyr% *umPe [x/˜%P@ggYI
(gCmB1N3">p#;Jqߡ	2sAK(I6'C'
H![3ES h(s-*ґfps$\zJ2TJBDLIO E=_].nw~#a'jp_l<>5
+ԡHST9g9DEz4]"'pezڞrb})s|x1F?[+wP`wY(ɨ1QϤPd?1PO]4eY	B$| 3J8&/zq&)9?ވ;6xi,pt;he	rYhd{t:W_օL.iPb}hQ_eXag4E!DKg:P,1ݍ7
T
ĴU+?y+E[sl[1*pYIm1z+5S{]V	Vw6&	R,2a$j3NQ)ӆu?^PެLK0Ph;7,d1x;yVwv`ʂLMEwt\ޮEWEjb\#yZTATbeWd䇪3_dnlIV bqP9t56{*ޅ7EcAm4[do֡X:,YfSfS Iei+%lnPg.
js漮w T
eZ	LtD*EhlX DK_t14ƙl"=ˤT[ښ.TkFp`"֥cϞ2\\^0`sn`:Mŀ:1lլ֣IG<	"1vOY_
Bpn8lڏ())@jɥW=E7e*y<
z$,ReQBSf_g7px@@Vۨ'S
[Rsex CJy?q/9h2Q2N=Z<XՉ%U
d$b`/y+ң'ބ/*Bh^?y.XFf:V7- mRKKvأ;|F
)wlS+ݵJY7L!^F{"~$`1IbZՇ$	_ɿ
d{Va!wc͠!sf4E
܈L>hɰ!d&̃OH|լkxL]I[础wXbWT%^n$AG}^a8NcE-dV0^^"S7Hz:~%5
֘	4`ȇؠԌAQY :oOЈF²EX7AI(q
y^Qz
o=tMr.jn0X,tRz55-
rfUV̍R8M	5).eɡ.& eöŭ|Yef&<H 9U](-+gBExq@:8ҝr
$ܸ1HRxg[5=QvbA (B+)Nc-(ӛ&̓3Hgn̉?c򧀞pzy9=EӇfSeX<M
y,.F@.YD\?tXf_,MWC<'$G.eHI9"DܩpOH5Zߖ4bD;$R9D]$qɌ<ӭ'1CS]
atPT6sVjVfұw0PYQC#_aBXsĥ ɋ
*؄N؛p
la	kːO\an'f둓yw0	hVA<
%"](zW$apt0K5kÊfT(q!ݜ6vrM}5"x-ђ#ɹiEt)&(\aYɓNlPo.Rp*`Au! wERvRn/o8Ìk
 ]%]LPGYF8owN3
gVG.Ͳ>Q'ܦA*ɵ9J-,,JA/c'X۳o~#
:Y3;K7`@?Tm^eBktXt$@!Rwk@iV)P9weS'dR+8A({x75$wR?lഃX`-!7lJa~xFqfz|Ly^n=A+*
KxE}VJYf?%
F3+۾Bmٙl+e5{ZA5e:z?|+6Pc8nMπ4"NzVѮF`ވ6+ēV%G4 n<$
*ul N݋x"	oN	"Nt%w"%ЎyZ,8;b]*[|*EFJC6A#AI!XCͷ܉u,*beaIƱdDZ_#'GK?SzoVPs>ؿ2PBri= WrZҵtx?8qt9vHR<MoJ
+ʨ#ul֍PBBFJ=/o^O#"JWJ$k|= )/wH된&rKo>R{
A 5
O༪PlUb63d]`YF=͉C$;4gCmT25}KŨWmԏ2.rD)0i*8?PS(}I\}D}.an<pDݑȓ*\wuV
tZ^DܔWyJcM4p+e<dVsbIxccu0MؕDzd	l&D5f%Kq@tpV3|~)WechmR9fŝKE:ܸ"Jo+2DnOie7{vm4[E֥FItך+)L1U!;;̓W zUHWGbp@"fhQ;[U;SǄT:Z:`u/r.?p84-4(	_B((]t[CIZʨٸ|
/KuBspI"Dxη/$;G+Fֆ5ȁSVT鞂q(H_2zʖR֔'Ie3Dp汋)ݿɉY+)$G0*Tj!=ثx)KDgŉP"啵GI0"J L1vt=63q kv´qg=ى>puJI7!ޑݣ^^PNu%#],-< Y(Eerc0pF!Hş5u
eB޸8rn9çB/NS
]*y"K!ð-jCrO/i(-)ik`"`.>aڹ%M	S2tgL7i+yq8ՅRUP/O{L)T:BU,.Yg-^IuPY$.!4n]؆`VRJQOTo3v,uKb?K$P
[,;%=CgJҢG6c7^)7c!-*°4]հYjA.by#M5Y	F"-<-/v*v合8%8|[ڿ/gt?q>rK3D3"_V<XJ]fvM`a+9GԒ3Ұd"UvXt҄&-7[廛N
U#fا%oAQ[n[- olHZ./eo" $S(b9
,F?Z!gJ"Ղu%Q
]G(D ^+!&\#62D֊k}U[.չ|
b$HXLgtYr|z` +tI6a|xTVfĂj-0Ԍʈg
*=[RvnrT;dwlf=/}_eMνe+)Pe(T8NCEۓѱ:1w遍t>L,[1IkU2yx"}wO/$Ǡu ^LEQ.&Zt`VhvЎ|^*:;Ajg8Id2#m/u`D39HRZvvMg64È	@F8)TVgSYmo1*=:Nǂy9 nW)5rP$F)`dy8Bt֛n!MAl[ ӠV~_mjh?px/}^rpEVp1ϧQfS@᪍TI5yaõ&PL^!6@GZ3X
ܱ0Z؞h
b0"÷!)Ȩg/Sת}.)k;w
Z~v!>vD
a3e؏M:e3%yMs)JV$jCF90iKC$ڠx71<nsVm<;̵:}֕sʟ*v!Ij:J*Px.z^m76L]~Jnd1;j7\٬	i#n&%."S#'?d!o2fGŬc{\Yߺh2RsÖ\_|,픸s{|~}sjA!Xmc*MͿ&'YϖMٙE|%rd
Н)'.$D+M-"0M bGLjƱql4{{pTR/x1]dJAQA9V@j k!,`O[NAaU St-D:^qxN5`,SK&Vp[l"H?jRqZ72kz^x&kXKLv;|J!u,np0
[JjX5g췗F5hZR#0z4HmRԺYY+Օ';AZNqD1.ixDJ*Cӑ|tA;e$gD|tFxv;2+6~@atY-.p7E>D&g>>ު8ˑqX;kbi6QekBTdqyr~Q#H~5ZȖx	_[!I$!9	 pg\y(*dD9y/>ZJTd4g TS|$kctdrEZL|C]BxB@F쟬F~ \%Qcf>ҭ7šy{)mK"B
b/n"7oUavE)AgAM66DAD:NzdMԵ*Ob7b.Jx9'RL;'Lޔ*A 	%2&r z.WZ/&AFI/<}`zjcO@he_#,}a@M17[BM"Y5ExZ2@ xCPTQ-:`!FbXB}
gDׇQ;W@!)JO_ÑOsv;-j.?,(ɷLX4 :׆~=Z̥2gE8b#oCtj3Ϛ^2+hD,Z!_M;DOm}
#G^hI<FECW9D>7[[pL_Ɠ7}`G]x[ 4=Rj.٣
ԟ0cLLÛ9pm4E/9vɮap7W?oGĆy"ڤ\*ژYɌNͦQNCfc~V)2Sܪijϥܹ5=XkL' 8Tԝm;8*Ah>3C!;#)mPeL&'#f1sH(*s{2$yG@ήE|f-[C=(h*&۫a(.GX{jۦ]J6Jytǔ[Fؓ!nY/fr@&Bhڎde,3)"~c~{y!("WlCZ
ۙAd4eH6%ꄛ'Y92h2+lo(pUE@sbJ((s
U+$$׫dms湗ZY	3̧VX
DNOir=j- =bHz!E>(Y2@n+_Zq`e73,SZaGXcQ{Ŧq94mJXd"鐫ER&V0R5f*R:,S](^RACo\hj|B#^QjE8Qfx\p*X&+D8=@Yc:6sx ]-$]/N瘕Gȷy*C\y\2VWꖫ㳎@ttBQy+]O'q%=E-x1F@ض$znkI,&[<VOE3MeCq+wD8%<E:닃!
Z@f,'G4Ӟ;jpnAi$%Nf&8W;VM8y;6gAhn
2EHȤΪ$TF#W+ )N1qӋGHc8'J+~	9&c
|wCBu*v~?O60'rr`}qnY
]bi	U	WPE;d>yҒxi?8Ȳ¡q)^MJLrp.T1m~=ݲo+hż|L@ENc?uݼ_o@'u0|4uGU2E&͌]SA$.qfΊmV%.BVWg?60#	lU{=<aL5<4*?fǑ0<Lk+X[y^Yl
__	?*5W=Fk"%7"-T 6"3^" 2eMsM7Fd
Uӷ;N?Lck:Ĝ5J7,wȼq֞,ꨐZ&@u1V-v=]FEGϼ幏n=EѺ筢8'̍B=ٌDe(ނνv:aJMW<<=lAP5qcǦ9 (7YUm@KS&ܖ2ٮTrm{HPϪlKu L4U"YA癇h2y ;VMPR*'Hi\G0jpΩ(H
V:jKIqj%+# 
O?Y$'3 Żxc4^QmI^p6y77,
(
:o}nb\i]胶lv.ٴun&10;4)sM8bS	v
p*S]^
1 J[(aMZH4oR30n(tp[sAze$c0N<Ar/hM;MV
iw
y['8$$ASv:Luߞ)<R}2 xAL혽Ϫ9|nrO*bpηpDtݺ5^y#&iw,L6 `PoԈ	cyhLtH+Q b3 [?Btݞ%roQ$rwm(6GpS_NxT=tHֵ
PѨaOj99=vxF]9U9usov`O,|/zӄf̛'3$f3&]>y=Ak2˪ݖNpM9
avyU-~G/O^C^wE50rKȅFI\GApFC[! [RS$`>O,'I?QU-V'^&l?2Sۨ_:q4ڠ!o*~
WtA$^r-(әة1K`E/gA!s 
:TӛR 4eX<\JCn~{Qk~Ob1UDL=P0h 9V<UW3Ȕ؃VSMUFK{0QbiQ&#Кz$vRyjl'PϐCbVxAe- JBN@pPX&_p[YfYstY
{FIЮil<C{"bRV>uaȢⱓ9 ŬlMA[W$dPYRCeVՈ7{ӔJ9вLXʆԊiY=d6V_p 	N؛y/+iRzX9vބF$ƛz_N7Y+zsqkHSz/ptEO=%
frXѨt6,}BHFX=zLx
6wa1ȽL3a&
MU?M}	{	ZUX '<g]*"9V]K9G~]AH`◊X.D/OHPYҚ9Oԙ΄;b9װxVR#xo
LX3yq
x#0[kZAoL¿ЭhQX5-
"םHRộŮvLMXʾM1ĄceI 0	y4 ud#ێ1E'r:{	
c<h%2wTtN$ZC"a!̬(S0.#	~1A=ZpR&]&Gx򉼉H kjxlM
Xݏ<7ԖMTPhM\G6IQq
bT@M@4Esy+6c%wt҃DV'mmbJ1"\|ɦqd4w&QyT^3q;LFEŁqHur
/ BJlLiTc985ЌxeBoDPǠ\h r/0d3Qz <oκ]FWځ93	VSHa!eeoBw6ՙOj9`/\܅!g%t؈g.P fXmTMZL0sZvG
rxK$2ޒȵhuZGwX^4G_\Y1>ųဘcV
pNjbe
p !]|fכ^x97F)
]yQ̻Sg%ɍ$+a_>HgL7Yآ*0nT&/fc8*kau(On@nRCN7#UɢccEHbQ25aL`H4"F]4fJFzh1hLLd5g0u'o@ܕF)7+1 xr{ɓ
Ăz%te&ZBLWQS,Z>X{+Ԧ1< QL̗e
V+i84	bf^F{b:,'Ƴbf52YGt:Ane18vTUQJ zf5[{/gEo,/g_MԴfsfگPԥ'TXKs4x߲^PP5,q{Eg[:%AJÖ
l#0߮3suf|
Z'3'n(k
WiVzceI}=
[q*SoBJK|wnN?jgLII~9FfW
m] ܉s\FEٻ<K-kvO,:3uz<ldYeQ1ra2<@m+DėJRčN"ATf<3H(/lD_)'qOK4{gfdѶlGRk[:fwth*ْ#<˂
_|A*bkYQwu[PY_P	i=QojG-|Sml,1d 
~DJsb+.d4/11?/"PO:VGoýJt@(7ha[,Vq*e?~1x+=])o% LGz)6u'
E&zcjEȈcT)Q"⺾-Ȧ硼.͞e.T ;F9n|b&9{K\Sϧ!Ğl\kGr`Jo`+<sߑYXz TMaD,AcpgQL["
cdݵ=O&6p4@W@PriPH$Ј:˸|[J\V")h?rФ@gXu;2,2Eq}߅"^B+1ۓI pUHhFD\>1MǄo)v2jc&hbv{ލrMi6tT~{Zxn;E
d;$2ppf+J5,dԍШ7!N4*A4{V4UEb 		z:1(!з{4$S8%SVOC]xg
H |^A(2S|z<Z?o,	mLN^Rm\.ZpZhH33
nἸ&mn:!{R_6O:&	Hޓ-".L$?) l>{4iHN
geZs
i_g@@y-f8]y7؀mIsOweYxC
yyN*y.>~,	a,I`7v^cQ%ZՖ3d$U0saTR'cYL\Qm/~PlF"`8;cCapú2	8oYv=_5P<P.eդT=Xd2qD=	;=hȨʫ#o@e&:2Qن2Oࡽlp=8SLŻoI:[נ+_m]2˜6@
ʌHeƣ,w\'C!%;m*10T&}olXQb(߫ʥ6qedD+/mÍ+" 
Yc drw}"vJeJ`hy`k[C(P )b3(NQ/y!|	֠(Թ+M^|8Pw+!]Yפۍ9DaA+MJ뇣d=82=҅7f}^_n37	9%B4EKoFNUg٢5\C^;?/~(ȗu[G3_!o"fs
VYQa%0[m)D2H8#NS\BL=B9-Wzd%8y}uNmћ5B!9guW*`S|YK7RK4`7.7B9w6eo1Dxэ17-\'+I30PF}iBQ,GMMnh43cn|ŞG>h=ʍ2#[<<LC|ǖ2nDΓƪȱ>̎^l1l̍ #Ki`4QE6
jǠ(A0UT47 	mO
˵D	ݫ3n<5QCDD} 4Q8d$*H!"peyk&B-eP|/i21B_(&FpG1ީK-Ok0GoUޥCYlT_ԯ2rMQn|v7fƣ(PqR0礪@`Fs>s,8/l]."CvR,#슭7r0"d ?6VZZ˚B.|Jȸg	x[H(s)c%saeziEMVg[@VY2z
SBZ	aLl99xc*	:2SKD``+Byu `|U2ek^f@OHO[N?%׈ՖKʥmt8L6'"J,/gEr3
uu!3d
6e } 	)Z1 |s;GP4|T< S،$ : JiO)
6=v{)I<]]Xr0~I+t0&@P6h<mB϶YZE%}vOx]H 1Aj)P$B(M,
Y L^$Ws`4_xмoޟikqEubv	<ғD/ӂw\g|He/^ZrUVJP*J-sPL[1fhL)2ptp͇ }Y-ylEųv$51 }ECHT	t;?#"
[VBװ1r^,>R1͒ghL<5\\g=$.</	`h2ʟ+q}ңHʁf';.+Iެ`I 'DvY
?t2
x)ba8Dc|u-D~u&/`O!#~ۊ!oƵ.J%ʕwǞjlJ~HўF-5KE.KQm7:8zXGF k"%,izٞeg`Th",(3x.vĻ7 SC(Z))a=ŦG}6u4862 MŊMWX-0Mĸ pNm
h~k%H`L1#$ymcj
" 
-BWҤ F*%S^|{XtW`T|˝!2/޻LhpI#\ѾVuxalDZh*en|豳	 GҵdO%zV$L=9L%/t'5oc->i,n"ԎLLcqJ'J]rUx&-Ӄchɮk>uO>hr~cLl^h,`(qz3XԢV+fS6h:-(Y3%[#7c0Eiܭ_1
WJͅO	I+k66jOfCKFFF[y
A FXG\w0[K>h7#Ң*oql.C}oYnݎxX"lddKQ
 std]2"}*udz7-tjLvs#BܳO {L)6 ˇ+J?OEWyI#^ȎIw~1	| ej+Fb%ʸ7KS0E/gw|,J$Fy^$ƅBه>%i+֠Y먋/Dz+8\sq]vh\meZai=W}9T]qiN/s χ#ǙV-̻SHRʜkM
EbD=]m)wרȀ.<hhbDmd2g
V9~*;ϙ&Tۙ+`q|
s{'BNQ&9Mb4j0/yj^$19^#h%*FpŘRowJ!oJ4]'I9y%ӱQ9G^bdGl@;<QPnЏlzK*u#z3y`4ю>}1T	. *`[Òw^kx!* (5PXs2FE'3tm[QS0f\Fh
D`^"od^
i2xf`",&PgT1_9
c?Mzd#`, pr;Qٖs.%.1erz^
уQ /Ihmi*j*^mݹ0]x	Y'-<ip*NYEPEM+sw$n>ӑQ9'ʎ-0R1E*o`$Ѝnm/
*
[ғ*txk>&qI]UrRUr4ÉYjK\uPߏxAF0'<cDzyo~0I6֬HSdE
TL8Z""j;NaG?^pu)ܼ),Pd6CX`M
2NTbO&AZ'-|P_q\<@ck8?
:xqԥXʹ 1x_p;*ͥ_\Q'!nM
iTb:ߘ	oQЉ,ϳq~y:wE -b5aIvOG`+4t}rʒm^A0_!֦xEOg)Q
f|8}4R:Zc/PP3WaEi$M8#ƙ5Jk/<].뒆SIEg$
AX
q7&-G$Doe61'e!ONl.*uNBN8FNL2Z8#"	PH6:bpPdfR{G`I+:'QayomԹdh`
<+@<3wڨld1,}4#}hk KrGx@:5J䰯dQ<f,~WRٯWNDbjyUDKI!WF[́?`nƁ.xnh
o&'h"4V&51]ʰ ">N(l/59FYUaT;n;v.N.X_FY|L6w6Q|y,%EK=_^bҗq7sלda0@6uEn	Wǒ| r
6\$+;߅;xw>Mg#HGxئ'aӮ3uDE:RE.Vhm+C@6#LNI_4dHf\ȆXΡ@.HoNGH^,,>؍CHk&Obt:0PIvzGXE#2b?`5f3BQˍiUr33qڄVd[TŞM'HV̈7q_cDua/;zxOQɼ0C-l+D|xs1!$L8^VpfUJ рI^;!'E axהv(JL.zΛlP1uPW#K.>\
1l4!5
kF	KXӬ"I$%4~U[y2sy)l@xeP,<VxkMߘ57ؗR#C!ƀ2˲` |{,DiVmQ2ϊFQQ(,7^c$,5]F|T`e۝SwOơi<zC^C~YBܘ9DEаdԠYmX4I$s6MtWYr0Vmm(Hdjł?)&]	ԭ<JGIx$_2Q"k3r/K X?TH7Pq?Asڦx$mO,MߙZ;ǵglKЇvp_zR.F`N!pգ T#X.XGy_{h\RSLQ-e1OeDj\QX;5++4	>]IOl3i)ʪ("ZCb(/;8`v8E4!>}WKH61}L
VT8 ؜kF/"+vqxrI64$	\2^v=ҭ8fBqwD=z?JH(7̲pb^.64YmmRl4Sr-aqcƫL tZgDMMG.7Ȁ?`zfoDWQȢAIP"pt! =*|Y9t39e=%zF3ٝiQmXDAMGG!%z(׌Cך>ѴOt{˄6d+ ,6xa.&
r<3ы	TIf598[e 	L'C;#C`,22f=v2@=heԑPG(Uqob6LJ	g_)K@BQ<FKO
3lB (64̊3 u+<ޢu
!2Ozlۮ'\
T]CVE8{+:߿@Nx_Sazl	Ǳئal:uSv4SF50Mo7~'=|c"!!»I@&vfs2
{9j-Ɋ*tvz&#s;!"Vyi(-}\>T;-ف'*|yW~t5s_&4S;D>~~[oǏ̗؞w`ZK/`+X@$ǕWӤAr{
 Vc
16_gZS\GWNMgF`C=6P*̧}&բu@gY-Ψ31pP
9f&Gw#H]>;`BYɹ#17SStc~l"᳅|tNCLlwqZ*n;cUң^̿&]Sk( V>
	,%Kܤo!:,["]8ZG1 H+Z?vgSHGQW@6RLQ /t!$8-N:qo@9#oJ&r-+~Td\0E.RrJ-IUj1 RM!5LhfW֩ʆ&xd<A;WJK:X|nWj	IώVo;3թۚ7W.v֩¬ ,FsOId7E*VǬ{fsذh[@سl=`xe932ԉ
BpW7wYQ2i@oBFh/"RGXڙn[`yiZf'[}PogpmUl߬JĘ jrGF]Lyb#}B,V rfT͛ど:Kxh\
;B;K"2/&0 Ι?HsI	:`b@K1hK\)qg{Ztǵ6`1>::$esJ<(/Y ;xE(j3͋9_ÊON,)f4~%Sf<HF7a
 Rĳ_F馨L$\L}HC$<UˋvFG%SI'U_BHPe ߿{ G%)$rPTJ*Y@2I`XKw,'U&e"@{kDNFCѩ<k/7#A}"
hZ	/(:[6dnhx7Jf.U	kW(p!k[r>Üw%ѫNO_t]⒫AiPwBZ@$ZdX5}]N\%DG?OOPqY.[3Oo,ǆK}q6J?Y"ô#gW2e0*q&$RG
\=Y̴kTB/>ҲH,e< Mr^n>du/[ _-(A$Y42䵅lB(7,0$$ 𧘅aCi.&?
K od\(P#f}?\%8?&*v1kj"2K
A޷݂Sdow.[CHEBPE"C !+]ѣbs!T/Kۤ_X)ҟzC<8fa~*҃<)B9G"ˬ+-46ZE RE$@Y%[h@^EӜSI`l2ѫ2_WX `c6-6^ X\1Ae*pA`'R)5BBD1F'%n CSM,\F9yUYۡ2HoMwyp@ʃWQg?ϓBD;7zwUd㝬Ű5s@)wa	oE"SA`5<ד3ģxukGx?Թf,DcxDMJr9ZPgJ ?S`*;|,)9hyw+m0e>͑ns0\iz7ᡔTVEC.(
򼘙gش[}Y$
)``5Pp'L&t̬,9g:^LPfKvB~Ѯ*J3b]2Ĕx⛔<{~6}޸3Ԣ)@"T(Y	}zn`:'3g~_M_׷
?
_u\%n3X1:-yCal!1)5B]?N	`[[)%{QT%S	.tfUD;U]ʛHE=ć|]5l%^'^)=*/[Ff·zUD!(= wA+rD0ZA:;
z$,y@	vd 
TJ:yUM+}Jh&.kW'&19OymZN>FO#IkfEe8p
E/1!]]3#}t06zJ lY]	ۺ4>j3f"7ab3hRO"Z2<._Sĕ(եY7+X90O*mGi2K̨C+DT99*8˖"`?Z(*ʽWqJ*E.80ZJt/5}pN7Fl,y#3l.MLZ
ׄnVE*QGXO%-1)j OHz`J|C~"@[y1q"6^X(E6GK&@^q<34,leIlѽ:SoB=l?qY&9XS6"
	Bwqj-$K#Q?dj_z>Йba/Ybّ?4Wҙ*;KUl]T`Qg^'}	V	DRϴbp&mEE/W5C<PMNYP)7\Һz<!T5ݜ~U.mҥ.`if0&qsb;iiqN]Q1lM)8C3uDZiaRsG*I;#=Y9#ǩ@_oAV-kG]I1hJ	5Y̌i:j}M-$B1pw؈d:0e~@[2`Ym{Qp)DB_!hU[E\QON2t-9sMT.]CX)CA<?OLؐRՅ>fS<ꐨ5I[#V0px'@߆6MQq{c
&IBFGWB<(R"
R9Cy*^-Qrm3p7.LuCr!mŪBnHůѨHG̃TA
ˤ>*[ˁ{y5)=
!obAGԺأ)!}Y5Ac
Fki·QhaI'DEc!ײQKg;g"xTN<ܣDpBmo&T!璣
@4
m-rU{E=V8Z(1Ƚݺ(SZa5̝:T7@4SF3,(7~JfR.D!qf'\l:ăPU^(N8Tacbϩ"`Ȕ햊HL_f끜8nCڲcFѱmW@[*i7Ҿ9̀W>z{'99e!	nQC<y>t`|
-/(kaye[S-{/(LK:V`=n'k;D_lYSA}tT+2WUcM~s\,j0hYRBGqm|t'~Bʘ&:^L)ôL-UD<>H$)i쏶-# 0[1nǢ%m _oUbXn7"nfp04j.K49MꑠaܣRiCln*n?JBq9fBhv:qXU2^4aP,e/Idi{ȜQhz&ҕZ7
]E'X)J2'KȐm#@w`R0j.NEVٝMdvI
s[=WhZ{V)k. XVX~
Hq
Dɐk!n8ԔX4@	&GxVAc˖|[Czw1F󿒵x)qa=x/Mh-a*޾Ƌ2 8ؼSE&TDԣ3=DFzVT"Ex0zRmkz(Vc>9T)%Eyt4UH\szv=86bJbU
suxGj4xd5l85	(ڞ	&c(rt îӦg2GB*{IuC˼gLTƆH|+<@Jv/X^6;h4'F%*ɀ	`l%&@!M#u+`3/Lc%t!3[{	q
`-wp6
~I?KｬtĬ|W횤{iRYfvp~9H{%VBH388)`EG!Fp+
%r܎ ! a43MaMV0wqkH+U}'"5z"-'3f:ZeQFH<j	R7[Gj}Z0'ZT-LlSrKv6j:`?h2oUeѡEitG5"g&$rLPbgTh22̓DL
,8$Kǃy"KcDx\Ȩcx\&9aQ݆m(tw5HТbYRS#;Ӟ$WKI^7#&޽p^SSR'0f'?w/G~مYV`7te57y"غuDgrk9Q&X,͌/w3q;LT26v?!)]b7:-Ѡ0p4apw(``QwW8L
<|q0ZIH1Hq6-,L@</۫,2Ϝ

&аM>S-pP)EtY*V_&N'tJ<̗%ԌG-l6&M4c<s9St\fm5>9IHCX0f_2EڨP6"[ASDȼq"nq%][QvHfLbt̧6˟k0846Cq^EA$z~:BUDGL&31tB;9orb@}]ײX-,Rsf A\ib8\ׂy)'5{[0qXUaaB:ț'>-])cDk2˕E궳Nʠ14/'[`xMփi61i\+2qL3j@2}
[X$n˵քN	i	P:x(1DzVyvX*W7EDZMIz9~3I;Uv3<h(f3:)Qm
LXR~)wD{Cnh,(E+X0
x#sL$qZכmk34jj0JrSu_wpMlTLSp%k\h?b$TGt(6#)0yKV {,5@۲ %fEv70Mir N*ĭeCKybV{I6m%$-珖
:z1AedWSQEYP20p?gAbcԣ"{e;2*¿I	sb</%9qTI3SU0Jڂ[|`vB[f7=`
ŝa.,R=-b:Cm\\İHEK߱ 4JaIĚ `jzdȄ:-h/ufڬ&tf&Pt5uLIWJfu,n^#<8*EtcZw&.dQ$R6~16(U@jkƇGK\7j8Q4Xba)M@7Yb݊cY$Mτv^,Jj0PbS)D'G嶱pP9._-|! P1 (1vcXZߺ]{)Oį <nN# 9sF+`'c6X'q7E#Ak[7LWhVpP(,?tr$		'ޯ˿>7_
ƭVk=x,UdʚbXC*A;z\[Rй*M/sͥe)=.'F%-bI={MnףqZvC0"	"*C3yX>	T^kw7Xj!݁KoY0z-؆%`跶u> w<N0!9Ğ%'&z2zlgx>/KrsL̙ƤOE	;#Ӄ;oT22PF)GjAL4%1eP-eKrE_&>m\6LHbe*K,&# 2{ n1=gEPh^<fȀZ;l zD'\K::]hr|&{ <w˔|RĘzf0:5I=m$+8>y
g@46n.AWfD,@'NLaͻ0y7ĝqӭ톴^<˯&4ɱ}VdJ&\5QpzH5"t3rza#jX[.VL"{اTJu6Fr5L~m*cK\da Vs^6.Cc O-ԴJt.#Fp-/ԟevG??ZDQ Az>֓Ћ#o^:[QRs<Pe+q,gk=J1|_Yw]Ze~m>b ,jTUއ5=O˶!x6_cbes3zJ8#yMFDD	G+smsIw(Q>.&i |\eU
d`$jO7ض,lP
oW.i8h;:+px}<	) Lt`x;ıgXzp͔U_a8>7^V^m8/pቺ`5Grh1ƃA?'iZlGX=-轇 SI8죃~ +b?6,2 2y&bܓppt<[\J\<n7zB#y0˲;\4S1Њ.ʊt0Sf&FM.Acry˚|
6ܵLYI$Hx(wҞGc;8n40*A1Ґ&V<¸q1e~d-&RD\M7dP8X%nvtzx\\I%cp2yluqrd:!!6S=L4<vʙ}j>*@ap`^øj :1LH0
ZPuHS'hq@߻9x
׵c>xȔK3S'T-ZR䤪a,#:iyunH3+L C`Xp@49|*џSJFwr
bqK:u;̰(JhB.Pv	^JL^0T?M+PzGDczI7CN)kXԒ.ɀnQM̛Z.w3bʾ/[pd0M0`ܑQ DHס
8_*Paˌ\l5Mi0ɟ[*KfUNAָ^Pү'b@k
>2<&E\HdNtT
ޞ	\HQLO`WJ82
ENyb.w
N`r);	tZ]SWp>pyg,MhhHVJI<VL U`(Hˇ6GC\1'SDD)adI [Meee8 I
jʄ0GkzC	)T d@b5 _+QAgߺ&?^fAv#<3q{NLg<8+!> a/kD՘ #9G|pHxYi&Ġ=+pZH
wТ>^F) ?vTgʕUPb5KK)37i*S-HeMNᣈH[7x,Pn

*Gσ"b`
ƶI+N,:DqpÐVfKa-`JPvu:TO-w5D*W ))#G9Mx8ؙD"4//\BlvlC?;MXf7N#xSR:CdI|H"dP+QېWqBaj~)vt?+)(`h!&Āp[]h?uI2HcNGE^a
C+
?k`Z%v4|l+ȶ.!8
wC 7E:Ҧ
K52M<	ɛ,!(vKsT	\S? sa\(xR
{*Sk ܔjf]fth|
lM;E`3mlD"z7oBD-7嶪ڐr9KuW#'YԲGe(9rv;EʴJƈQuWoqxBEt `Ό8şmT"vPPf 
&
P?R+6=,x.f|&rB=Lǂ((֎:p<b`p~IVs6lFTlTqH,%".0
eS#5>@L=˕=uSr潞81- WhqEm1ɐ˻423Ut.M# ߡ
<TOxЊ%sɸ=_ 3.aeO#Pc-\NˠS(O&;# 
Б1i11}"OQT20;ǯ|<_3	)TEv~lõ~yKovq?MaȽ!|4<2Bz^lCoc|
d`ԪGy"i1
ZU곹XH.ƽc'Bls`*lX4[Z4󿪘|k#mlF7f5-
̡ 6?6yZ]Pfa#ŏ7h0:ȪvB6<Rt.X:-b=ZNG86D+ŴYxu_R?ިMhh9iڤ-Zf,64V3{/3IMKRQ,$^+-yLGKFI,5&B؂P<"`w)>w9SuXDrq!t!6;Vim32S`&,'d;dICWXl<		yҒtzJD]bC^Q%?۶틷lf7HĉO-2yno
rR$R+a
j*z=?BkxgҥDCD_ʆ~D*~vtܲe\aӦO
jV6
{2)0kC*r3V>]bYyz\`&,@]tVb> ;G_WRH$:UZ=H
ߣ;(l>lD#yuԾɢE'ai;K` UVPG_UE[BAmҍɑ\FWk2L?#ڋJA:*_XE.<!E!Gs'TGqS`T <ϳZ	"3r0ZT#P?PJg
ز53<*9׿SEM'v
S[`CPZJ=jER҅CM<2Ε&=-mĩQhGF؉kp/,+Dpg	*.o>y dҥ+鉭:
N՝z]-+R
oN]UT4h;g,8f'#9ӑvB DhM8_r8RBD_t^хwBJEf-Qؖl1foڶrLv8X.&81$xg
^{B$ qR)Omfy},l,&kCI2Jy\p:ܗmau`aƬ,&ay3:"hO1ЛdR`@30q5$iEv2GaƲ/<$%s.	 C8lH
vzeWUxyDd>3)!9;[W@e\`DMZJa74n`<Li'E8$+|yRA\מ=ebLh'5+|"hͻ;q:BL#k	*巂=lmXtNmqm@m&Ʌa`1¿f8mPWQ$G[UZlu!yg	S4L0mlE_qido5>-XrU8L gZ]K'Bas2	,H_N?,Y7g5+|Di5 dA1{WKfF1꽠R r`(cpT8m<`ߗhjaR7A΄znVgT$a)FyXE<w6.h6u}x=Gz_/lhom'3L9f	9ttSڀ>3Pf40C!&90b2lPgplK=ʙC)מc4:j3jT<)gD}@@JF q75神ȥV0i[~SxGAScw$D0H7v`
DQ;d3>m˃Y3"ZPkGu,;o]` ภ'լV0I*ZFTИֵlmjD~-,ʱ:g=c5A_(TkcX J
-őZ~?8d~\#rws\=wXf=WEU		pS"k@MGuM9H:zQ~[:eIwbRDe鼦7ܤW L&L՛v1I564S+i4uKLh2_KzRL_OA8e"B^ɌEa1l"5"T	Ö)gXmfI}X,#k&6Zw_BD{$OAbe h˨\	UcE>mJdml0l;Py~9(5f᣸`v=_<MbcUgf`dҼwfPD`E@-ޥB]!"XD^YB_5h*7+ś(d."WY
AK|V˵4Yr_(!noxA6<LZXABY4Nd]6$HT纏Tk%_sGJWӞƿRYn1fA
3WpZtD~MLY&6MQ)9%n,?ϩR:r*O5(+͛
1L"
8BNpz
}qyx·g4p4l,⩊H'ٙSs_B'<aƵ`,VjIB=>/nNJމreDKSRpuU0-26+u}ot#qDDAᅡFlYOJ;P5lڐ\@g~bmcv,:G͝,<(pK0,{Gd+a3(zc	V6ғt_ڭl룹oF͒IiM\g2DsvMh|aoe5JҜ3@pElɌ2~kY$M
$'xF&E>n:3-QAFfO5qڊ̈`g˼VCAws	(L-0-TF=YsP#
gk3,Kd4Cz	Y$Z*% ƊʎmލU4_^^$a|kݦ@.,P2U%>hNB^hp_\"N*ci1mtְčL4U`4 [I2]+UQ;Nw"#Y<
YA^,0xJWc4~)fL+R/9@[t<uQ"wC
%\r*Fx^y~b7U!A|Kp!|K*%wx07 K;YVHw=BFIv~m)`\m\!S "}0\.mxV(Dʎ)B<\Pw-&Hk
E|h/KA1$'f3	xnQ:
~zׂXǝem}jvW<{ԓ
W*R7A^e 5ǎ
>qJ3[U~LX:SEJDdTc<<!SX,}k*aW0sڄB+ћe*dQn䔘,Sܬ,
&n-,,Ƅ|{WY`M$@= 0s@$*iSy#`KkL:GwA
	(vƥ-|eYYқF3WneA7bv	tb!w	7j4>
IO&`H
|UR|6]B>C1C(4[Y<<MTݵVT#A%+0!D_~Ų{rUU869s2+ʧw)[l# *B1r<rɾ*5}:'B%cqfBHYDq% 1=T>)(<8KV
b+YkÙ5g0ChBB}͛z1.O8蠃QQ^*֒u8VjSt!sϬj[LLF/WxYijkGkƼ+3 5$2}G=C1g}ATn	S8WCa"}(I<3W%K=+JEZevիkm7!de3=&BOyCQU Aٴ(Q>4oE@K+)0n}m/º
qvgl^xm{ m l#Cϧ-ah% r!(،M { l47k!	0ǻTć7k֫FJ~m(׋i;}qv)X~īefѠ&iiĤnl_[<^<@ڧE,S˖j	K .)K4^pPA oK!+Bˆ}&r=N׶vY	))aAZ4N+NΨ{@-<_&gm-lqhT1}/@Kh]/>xos z귷Vy>ǾVZ:Ft4/Ch΃n0}@`\"U#f1ppOYYFoHA}QP؏<	
L*:+'9*K5gF):
c[b44%&C}LX&
%$CK)md70U6?۶<_\įg<VnxrBҷeCO1trlm\4TЎ~q5sB\pw)B1\w	i;4rcD[Q.?٩b0ԔɁVv0DE4>EB+/b#9jLW{^)blJ+'>|#nU4fLjʶ3ˈ&@X?Wo
=
Ȁo|9W&?I1:Lp:L\Šސ-[8{tMkHu-re
sE)d#kfvU/GRZ,DEa=ೊLr.6,H,$;UTP((T2K0"{#q폃UKI]2p7f+CyHtʇ-PP췉x坥tvy=BaClv?L}~:p;=&ﮨd%pV	p	WzNa6"=߰>C
9''DJ~' `K1b}p	N?|ksӚjJMfܳiӱqØ*xGx\O
0z_he?Gqs&V~|"rL#<>Kw,f̔Oq.VW
*`{b[+4!H0%dX"Fm`*@cxy&/Ehhs3{r)\L-kZYq9rODh ;ɓ|'JMf)-_9gQM<2
 -,c^{Ũm2k=2 5ǥܑ͐)Sx:!H#;ThQ/ƧN@uI,	O7<^J"a*Táȕň{se~["\nxHaJ 3{bwM8B+@PZBAU
[TuD,}iW4AW5(ҧ`oVdk{a%6Tz
^($8FЇL<9 j5jlxl6{TZl,#L;c!$J'>"V3}hv1Lߟa.N\EƛPePy4&aENo]n-B{
9ѧ[xI 	7̤f7&j?X?chtO0&1<㶲s1,/_4xdmΑk!#|S%UldPcoҢe{q_\ID6ePvnZOMg5Hצ;Zmڙو@i
._%dg#`m!2=UO0jVIv8z,n?H+-H6 '?aa8(`se&NZw8 DfK[N\x~2'"Mq=2-,R`{\#(xs콃Vp	ұ͵ \~˔6yO+0-;0+dJ|y,'6Τ+	شǲF{xG@iF)ǊI+(hU~)gf#Ta-vrfRO!sbn+(@Tg%3:,߂
T)Z_Eux+`ef[΅#,]_
^q=M@Iم4ŹM&Ĕ1poRj~
*
7UMZB(;:ze\H[mǬ1DVā;u$NeҨlqإ
*%nI}<V\ʨR9B6}l|T*޹)x^= g&8\.
?,IIW¾|bxjiJ2#3]%rLaz:%n.knPZ~Ӱ;hMX(	V/f',
năyT ;p<YҖ'-ÁAh=|˫CG}(
f.vh5:n&vL5cTP(^=HhpJ
W['?!8<Ev*kWB%aѸOnNfj;P3)ak86GFDlM<*u9P$ Ϩլ2W!
#A^nnR.ɱ>f%ScnLFfW_q
r>CSP!NoC"jJ~}Oh!}tmJL-*;pc@.
MB,wl/R wGe6&@L*vFߡwqPI❖ܰF"qdTMV6Cs$g3qq'i⋛S"BQEf3ZbCotj`L:&J,{"g-G< "r{]/N`*U{$T7Ps+nhV=tGxX,I${U]؄0 SLb[huKQܼ%'Aސn6O^%>(ZrSϜb/)Ȝ<9 ƹZJ1gs{LD<ks" y.+1{
GEIlۓlO(Q#El.ȉ\8F?!d*$2GQ<yϑbV9DĴ4Ǻt4]hΜA7ghBU4ҢT>r'U+*c+ک]෎sъH4#l}Fc$uDY|#HrfDፄBƝ?%.EDUF5
,'62t,nݪ@ϣ>@>izcFSGVy7m/8;iRd\ ~	tyoʖ̘X*E˼ּU`
b;\+#ųa)CRh9{xWY{1;[Y⹐stpEO$%RO]nwW{/Pz3@򶣩Vh*PIãLBk+ȑrPfwкG~wk8 &hk̜} K&?,L<F@F⸝7pGqFy3_ei`۵+KOxCN) <c@&{Q<nGYR$ q9.]"
M`\	ΤYr5a"ܪ=L{6=|B*M,X8X@@Ԕlaϔ5qp??EDV.OawO (%1(aU%8hnDdFz29m sіwGDm1`gYt_!iU_2;{Srx7?NkF|W/tk0@zi_-J6m
"<0WR8;dqsqF%n|m
kCEe{Y//B_ɍl>eXqeymh۬ &8&פLfA[R߰
\ u`\TO FËT6AKGJ	 seS7C(
_B khVt%I0kMֽk8ՙ{ \(ZdL)n.}N؎CD$P]ۗd#F0nA5[V%?sJFt)'ACA/4&I<[&Tpz˅jH"Q+>,j OX>YvJ!}2@S"h
GҮLM<
bzo!V2ܲjBoĚ!%/iYUDTSD>Fvpȓqb'#-vX;v]o+rMQL^"KJ:yyBDs
l9wH\ػ)Ptx&Q^rĤѵmj
1&P*21LFuT`	9BPP9*Z" t9-+쾄6ti
Ԁ@'YUQ؜b`Kw@pԀ۳J4 e3 PhD(eW*h6K⒉[g=}Iմ"[7.Į4ZR h1u2F`=,O*<orAk#Z$io9O/
gRY"
 53ɑlFuĊwjs7NjJ`XL:JJF2YmOʺhQsG@Jc8&&{lUŬm{p%&	7jwY3mAY-K3P1[,X{`id/ufk<r>WaGOnL){
\8^aފj/X:iAfl"&Q2&n
1
xSm_`7}E0OYDv> wD7:zBh;;h)fT5~PM3a~۴2)0R-lЕFQ1#JjxHC"nWއ.E+~R*|lЌP?+v$'̞(&.*9Լtʬ	-#`
HHh&bE{]^|
Vՙǥ))9$w$R19q&BqMߧ%-ְ9 hP𓈳SQ:]ZԢ;=R'IǖdйjXƏL
OS,`ɫb Į17тC߮k]G`dSKł͠xb*En#KL/xUЛzۇep삱h3tW@mm ҙ_4iJx*ܳhEp|ѐ(sF,Y<̑v;AuIcBYҜpJmjfu6Y:X? ΊYs+9B)j
p[Kd?ڣdtzF>^X9%V&9ڔ]Xwq!D-lW=U=M>% &y.U	#,Eg֧*9`Ϭ$E62&Vrm	"wm>Yo}Unyvbpe"<&@IpK%~[S|,08K;Gi*!Z8G6+=*?Z->Hv׻O% @r;
ex?i<)˼4:3vB`$G0ɱ)
e:gC
/ytp" 9$XCy91z ,xS vphmσ=T7҃=Ҡ``6Huih|ΪX?.@WO75TkdyƪspEX"IZ@ׂhuFƹ*ĕ.
p_^HEؑW%J?k㑙ʵV#i%ğn֎JdGQDsn.&jo'eVӂ6O0b`C,aoOI5a4EHPYTYu*KhuL|A]L;~I9y?Be;ΔF?,"S{q^FMdl̄pj\t0;4-WQGpJHRWeK@l+N( hrDtL;oAՈӻQ&$ԾQ/jDzkdH>á/@,HX)(.7 BXkF2~_,8\Y#*3=97g0xv
II0+LJ
P橆K@h.-9I9?6Ƶ們_@֘X3pL
Չ煮

:~z*d8Tz{fbY]C	˕<%=y37Rx+UDhgV͢ir7ɅTМ%
R 
z==ߛ龖J;wn^KAF2}RXL줂Lk	 6IJ'XnW4>X>O&0\:Ԁ|߷rT`ˎbPtFR&cެ^2ZLU"4z1)EzQF|ܯ3q ^B*81zM?҇gU,Le1^m|r6f9 '+
6Z 5+`sX	+` фl]u~&<1ޅIΔY R
#1ZBHfzUK%%~<l搙|Hcȸi^H0ua/{[cy3F(!aCɳ4Ӈ(Q2  93}J
˜5/	'W!"8kYZ@IXߝ'FEdLFddY-*pٽDdz&*d~hwGdVZdLW)aPGJxNJadSEqitFJ 	wf=S^l CjpbJ8re<p3P$9\t r"9Me܅=Sap|,$rcNK@縋G"`qꥀ20~Yڰ~{Oy{<+:d [LCm(sL?MoKJw'=ruRIX6oDC`Z.L*5%(TL|
2
dк%HUQ(߰y#.JyM8Nrǘq)CrzD (@Wc<. 
a
FEPد@i2V_3I d~tIjfA&O!roެ	ױI-56'wJ䭼lR3Q6`tL
aVeyuBKf#G$S$W QU&x?(
>ZmlV,W&8jpp, #~6IRCA	f-y4T=~լ2z]U)kóBHXXq-;
0ď'$Pf*{O}Zk 	MOw6L)
 jn4bRW'+>׃B[|äjF:W;>qE)]w|6PÖA'u4Է6K2LT69RI6r'¥~ͧ"i̜tFbqXΈFLU#zb~E];O	QK ]	Љ｢>R׏N?6'US@vcT ɍ>;^syJ8P#=}e
oSG#
"y 	z2N5-WAr&5HWнOQQ|>ßBr% uq("+!J2yFq+"xW؊ƯA
Tm	ϲ.
ȯR@}|9^Ab[*

"UlUet[E΍">ºv:W1|qy{$L|Cbs'euH9n&ܠ;{r.vE(ճu`!畵e^kJ
l[
W&{SQLxyӺd³)$+ Vt {RJU&/NW8![JpSIk)zzp_p
/*B7%1
91:MK~4)
!vT\[樬Q j.^	ʽ& ̌i.-JN
w+3JD#&"U:Ho]	y`ڿR8˨#lb5R6&WL.US}MoJM%jvn0\kċPaecnRY@rkg	лXi/vMa
2<=eN/D)phi	#/7Ul-FRXiCɣ=C1!7XCGЈ;oD]ܑEfs-J(!'H|Ō{#!s
Ϙ 7}k3VG3
6aEѪD䐀0;HpEEgʞ|/,#|;܂_<ÑeYQI|9E~{L\|eGh"Ca֒m(B_1q ^V\V0l@qPDUld_sTq§V`oCG}ե@s}`ʖ}
`` `KT8C4x=[VG T*TϨ	Ru*mücLO<q_Hx`T Xs tߦBRd嫐LR<\}df05Zo+(.4ew8
2/h^F9v~RG5{d;ž!3U|2:j1|
FF /~
ɑU^J/["/f6	)[v'9+241Us~EE6.j㰭=*>,tڑQ#&K#z%l#8.y:t},\jH5;|ⷈ` STw&" `
fƼN&X2Ycw<&jbvik#琼!'Xoׁä0pe~dPw}đРTR&xd W?)ӘgzĎAJ1-	ۂ."2ܺ&sDT::;nP;@F0&r6. &:Sڔ^올ҽrJm}Zk\ŧx++9gsK̷$+jH"̠,L]s49%Ϩ&T"G!p)N/0VuěwDݓ@w9XdG2YgVka\Ah!wYE.CՖb/oNF,C|ZN
VQ}r9YG&#\D!fsu
P
!FZ>N΋"-L_ED2 U=\36|k Gh1TMD8RoW!ZnV`㎈<lS)tFZ"-*.	RJVc11Eb4YE#Pcp"VbHbKx>8K6&Y
^rAR%4cMSF q
l8lAk
V(><ɍp`xOp畼"%CL!Rr$
zXfG(HUc°ⰧդI08˶NmF \v_͡]%!9pXw8d"*XffQ1
J땞])}˩ٕ;x`y_@.Zxee`t՘&yiՉ+^)pǜ__\@ZETW
]7[
K6	av2dC]p%{yd+ޙ+/_2*\R3"/vm.BDPhu;C5N;V8>P<[_[eLld 3~/e|9aOu3-&P,ekpOze}qG9Jq'H*2lH[|NA	msa/5aPIlܕhU(#QL_vi^b4=XJGփIH]%L2TOY`VIVo`C;RVhA503*TQ		 *E(J|!ˎ-uJуylt$@?ku <QMH{n~4UI!|Mof	ZH u<ciyYݢ毱/,`IG.ߪ
(A.wZT &bγh27@T6ɟ
&jfz?YyH5 ڸk$:L)TxH٭l!+->ye=$b+iê>PyZf>PG"R|iH,a'Jh
+@k)+/E7aSjI`K|[P8OrISA*O@BUPWQMF.h}m䫊c%[\YEL>FUtgB=)X>LgV=[DêSIfJd>ƲTT.IǛRpn3Y΂b8kzl.dI 	PP}ږ4ZhJ*rSm]jԮ~86+ӻ

p,{{7gl2gYl͇$=K1
'CcR\k698b"m+:_Ȟ]\ڌ5~"zVIT[f
2Ef-)nǊ¶{R"״+PZẃbkP̛19狙N
8V zJ<69qfn*![$ˇqjL@sa #<9
_s
lA$ &*i[:SMqqY0E6Eb2.a򴾆aǚJPd!% >thh@JN!+'cې0
/-7I=ܵ^
A#y륤	-(Rʘ,cMJW!rp%=4KɆgQxG}e,x*@u/4&bv^43B{A&V"X] Q!VR탓B>NXJT҆TX l&TA>都Z;E1':S+nQ7w,KaK$#~^׷aR[IqBfSg NMI<95{UxmBea7RSϳGQQenȢ+|<@?Y"+,DR&sPA'zaz1K$Nԉ"ncد|Vw8V3̩r0u͕k:%Ρ_wo0sD	NPIfsn$zEAl[=idZ}|2v3(][o@A"}F"ڞK^jTCvH:u7}g"P`*6V˙oP@6ɥY&\~H1 G<w/-}/$]f^6\4MahtzM3~ve XΙkn㼘 6˾PAlNzQӎ9]22ob
[nK Ljnd ̫<4yTHP: R.J`R1o>'ޖ >>o/;]Ff0
<EčL❟D<7!:*L)[STܕy{dmS"F{JCE	y
}uvPKqmт@CUQW|Mi'3	]yLgT)yW*VГb|ލ % G$YȫEƃYyہ#OԢ5~͎/
ӟW8Y9V+khA/~sNL+Ply-5Iy{lHvUӢؒX d=E`rk4 (2+S<O$.+BZUmrf	Q{g uD_k?1۱ġ$r.A3Q'($VfHzЈ{5'$iiZ5ʉ73Ǵ
Ȏp8;Л$McCPI`bxXK(tBՠoQ2@:R&j}>(a")YߍIu[A}i~沨a^kU8&xD8<T##ܒ̬Sgmbun&#%^sAlT	OtӎɶNi[ߑ~&W'۲☬ZuԵ$鑕f#?I

NL:|"9xD'^r ʊ^Dvd?MW*&(AEjyZ/uT=;t3Wt\([⫏~vA}-q;96!Ӌ!L+׾Jnd՞fE_E׆xPjj$ 4^7ᕸXbvV0z;MɽS*X1ǧ ea
8#s"ѧl͕S]ݠLkT
W'4_3bMM?v/VTTa*FVP\c6K𐏉GbgK
AR}wN<dt@OȀZD|/z,C
ʲ}AJz@7MߍK:kUGLt@فʩB
*`qSS3v<z11<mX/Նe
jRnq6]|y݁)5%%
>҆r5sVj'njg,|&y'gS@%^I,V@P3n'~db@ȼ}Ng \ S@.؂20)%bp.
N냅6\ZU+k4QM

Cꖝ>Fķa."d|/(|qf94 B9]#/+*7Mdb/x q-Wx3QptD+pudޕs{	FLb0MH(*i/eE'8
V/`LF(.H\6V|w>V?^Cc4}&kesn}5nH
x39h?22AXϋ9c%r,ҪO41rLP̒Km
'/0cy$3g?lF١;&" m`/%C˽$asz ٦/UgL_~J	اH<c4Ѳ>:AcB"|y$
]dz{F7د:OvOwؙI^ƱwbvuH(m^0<o;8r$n&Irb
 M=*A1@!Ȯxht0C>}c60l9>z-+%EeNݛ
4 x5Mex[2	N|
a&/A4r5f)={O
s
Y	=*w'LF0\|r&wQIHKH$&m<5x`#y_2mtM8R
^4*P5TUC*@eBV)edqK?L&X
dHk?+"/gyr4(!$ltM9,*g;+nI&A|>	;[\ЎlhzKG9LoDfm֏CԖQqK?QFL2CfbPwP&#Hj UFnd&Yi
WeQq߭ZJ<`9WKu<_;yT"Ow[M<15]{
=lߞa.;ܖT\	 vC#SdT(ToB
whxQwf	ݸ3=H0IV$anޑj;ȎMsRHhpW
<ŀ}; xzc{x+yC.n mp{AnUb^z=H*/BGLU0")VʇgY0HA*XLF}6J{V24<H^ vЂg\ 92P,s^>>Q7R*\'ܛP|)Ub
)rd޻{"1
pHv/?VUtRTЃ)4un9{wÆ`WƎ&+jeyh`5X?2]5[{A3:R]6fŅXeaQoL |VFM/R0|"A>H(/>AD(؅!g"	ȳaW_eĿ_Q:Ȼ80&'n&D)f	(l;TPXA!SBz
ZJj͘&:¹nXbq\ 6`Iq"WǴ(gX҅d.n6_GQHdhnDT6'hRwx_*_ʕ"
V
\3rerKAU:#*LF~e7/F'EiQ$y$1/jJa2+b=~n?	ӄ\
p;	~ҩB.c`dӱlWh ޴:K&D`tLHM5l#pens{>\ycqiݬґH& faV9.w3&1Abc2!B)laNIJαZ1&L9)WA+,Dt27M3?ѻ*^3tRea-#GZaKw9p'g4fnlB"o*k搪IxlDg*tOm[aMY%u(ClSܓdZDnrheWF478I֫"R.bؑ|O	+h (ŢYe
xQ]aS#ＳGgR^"CbN>ؖHnSY<LϰmJlPUv9&OF+hcQu^wx0ԑ=`U
tBCx7A"~@'Wc*R[r/2_Vs"dwi>g#wDkJxo=ېy6E-`C˿Rip;WJpp\i%8Z[Jg8,`
ANnQSy !UY%	Ia*í2h:>]"90)':'vu֥{t _p`~I-= l2xKPFB4jFtb:+,
OC@x:»	T6VD75u5֕l U2"2mPk04W0di*`>5!3r&.*24r\U[dM:a#fy-q2$zǴ_+VZǆ4_ZH֟	W ,Љk)_.]MjJ$;+E-;n7 XeZj'
UE_~ D! #yWT@%E$a7@A5WEDUŎO ~_
1}XFB;`~I-A4~	{+_@ó'Dבh?Hb̋5٩HpZ<N9a8JS93D4~1ұ/CN/E_[WটޯǱґzbOX,P/qLt{A1M<0,UkjG0\HpMD w=MRY(+P22> WUF,L1?z("ϼPΥ)["K-MTYJdp4%bJDʆe^1z҄x6Q*lprNO:M,"#ݗ=7ȓyF7~#!uRh" C0:6/ۢA|<" $!k'O8
%?B\؅ڄ^- gļX"`T%J^k[d yxI+u6Sxg3VA{	8@aWL2	9j_ A@t1ںh!y#R*ޒ<bY&U>R	3	P1.C#IW%@ο 4(?!7^I5`Ch2;i 
MfI2o:piuXр"EݐYʣQ!:@fOeXTarFraI#b2}EƍȔҔ;/S '+๪\d)ѦF&C7ʌ8c+Vˀ7$m4
-T֓ <sbOA߮zC,ܳp9LVFO!JN+Tpe4I@Jxx\,I8z3H3|;jJb@DȲG$iϝ_`1&
nǿش5җEt:UR1I]U*xdf8r$e@N6	{bҽ0O
c vb47o]IU"i?1R+F`UJY,#zpV\RTjLx/ ]Z0.{??p6Kړ::#ӕɤ9JVfѧaՊ35J>`,D}Xb%=tu	gӂMI!hqiT$e*3'wL
f%:vP3Jou UȅD&R(R-¢/m荓=$@-4"嵲Sh6r,4S-t:\ØC7\Qhg#]ŧ&׫2-ˎm"=>~7TC2%
KRP8]u?%I<oD(DwBR!U)r<`_{S:s"2b774U&#&!aױ|'XOt	E"`]0~!oRoc_*;0K}#,u6"M;ؑAP@P "Dvy9:;_c?luE83$Ӎ9b1zF3(Ei&de>Z:P-Fk
g6%%*\ocJօ<j딫0[j_	vsIs<IPoP14IT]Voyz/yCmM7XZ&J<a~ϻ+'jH[=|h/ږ=I>>(z2`[$bS!.͊ZvH1:
̜&<=Lke-X6NuL+a?-W[Z֏3">N^VÚx	05/wf3&l$FX6G*.OHlIռ9h,E3LP9ޠ!('DTK/5C{I%Yܽtȿ++i^e%k?t21<`Cd,$AЪ5PAuyY{3WK/$/T$oxd'~
Jc].7Lc23npt#łE)1ɩ-L/fZ#Y<hnLv2pT+Cq*"$M'¨NS?68@t1eB4 쁔BDqeŀa :6HkfԵԤ5w1@vh-%Y]kBQPLRc!+JNOES	Q'9am(4YT{y+INúq 
ƄqVxZ#eTww\'R:hz	JH.du)`ܝM2#YT8	}H$UtUFa-̓sNMnħ8,P`AkpƱzTQbaF/or	:uN}LJ]p:eD$k:l$
lȪJԩ'aK'MGsZvn,]Uj,'d3'fZҴ5dհٳAă!7Y3E'(!8cd*H/AypMhw,lD ȥ0UNqiYYͤхjRҷJjM<IPIdAv˔4a_sJ-
9ve q2&mn<Mv&0ZV!~!՘/u;<6RM@ /hO%.  LP@1$#m$mqΣyQ/"H<~%#/re7|$pӛ
D
'IbyVEN'G82=7'idte0!s 8Al@Ox l7u%_hM,Hv8{('G,Z,.,=#\qHDdCW ,Fѩ:r۲V>K55kj8uxD?A?TB<xWAU%
gM@#۩+'t;mkC,ǅlr&RE7k1MF)E
u5;=jWկ!k	_Olڜ1}ԝ`1'&ԳNu!Ifx<8+j|ɪEzL&׬Ymwս;Msgmkتɜ&<&/(ysUFEth$ K]f*7y~,6bE(*jA^	˕Eo
<
$oj+&tAW
c(I.vHL
]"cH&9z'#2O*` &Km&&$4RWV;paۇlDL"S]"iC*A4S`@z'ӶhE_Y
rn(Enlt:JOE
\T
|.QM^m(K++ߡdTشuY q.V 0{$~lޒ^F
A񹮭U-M|8Hsz7m=D&LшI4yxՈN }rT)
^W4*UV.3 T/Uؽ9D#BaJ_:zePlXdGס>j\d:R
h,Cb4U]L4`^*>"QG~!n88Bï0er0E5IR{QL(cy'Z6^&fs^.
fJ<;y{	O`
c[~D_uրE4WNVVIf,A2^:i	펯cdPS-aco\[:ʓUT{	Eb0%"#
ЁU)>w'ӥLbLvT.3$ .Ɏ>-R'}5JԱ^OeL'Nmp%ց>>*XT},~YuFdŞs%,FۙMؑi]XBH7N(Jgy`*AaG=bN#.)	eQ٠
Qi7ңlh_#V$ӣI,#7W4JnGSƀͨ TOȊhG!11$<',:L<oD<Gjʘ[G0J!?+;@Ú15,/z-VtREڑ86
/˂Rʢ734j_{dâJbI_j
q<"(o/?Kc!`70Ծ=4ա8r}9!3F;6F"D\ƪw>2I9W'7[˂n	*+ÂH R1Un/ؠpuV?)r6VbA%jfvsNmf
AÛv-Xy@8I=5xcY^
E8oK ouPv$a:u3XBNhY$81ҥ'>keA] oJF42ofJBiܥ1Hj@<%<YѾŰPdfSVnOҭSGg	xL|Xe
ɹK!2x'mQ:,I!cmp\"'t_DIěŷّ>i2geQY,GSMޢCY8A7`'ElFХlSM7Ӷ5!vhׅ#<!%RP" \Ɣ(`n'_Mx
%oꢃt5,l@%[@pV0B;,48ž`~ux
?e>܃%V2OY7Zov,b(:	$rt$jգJ tv!w꣙a޼`4:dKb$'bl N|Yj$\5bK5I!8 TdPN?]B֊偷lNO "M^\gpɃ!W݆rHUVUϝ,ka*dK{Vk2e)Gw&
3@NΗ`xf"[ÎFڥ#fxI q,>.xٱ?d9ݺ,nnQ$P;KB, +5`Ȕ$g6`ϹhϼSFpX(E)cG}O]
.eݦĳ;q!YCeF_ët4$#\}'yNɍUSA!Tp>`<O[AWE0B<Cs_iGoy"V'EOU'sG?3d![@c:zw&͉FGwWyvȑr=R/(p%6^ʄ,-jjQ-62Xnte@/?`&\:{VaPi?7#qCo>=
<Gc\jM+^/?*D/`ixl&'A7؂Ryo+Vw 	eZ"TldQxA`|b)'[P=`raFm@.udZM\Myn0^@NOJ&̛)*aө$+@/fI*.q/yK;Ւ7 x׹UBO<D)\'b(
IUM(8l< {"@"evµkBs6U	*٠(w4gAf78_x |GJ[K1L9zsvԑl-:W/;a!&RŅ_	Iޯ5Ex
"$dNy ߛʹxT[dT<=,~ɓfB4rG6H(TG2+6
\\=UZֿ `
:ȁz8j2܀/'ZE~ۢ:J`Qiqܮ]r2@rHGDid >r62<b.nQ,x#{ȌfӘy91^w2oT|R6cbU'ROlVe7]n!SjvFe[93
f!ܼ4AYYH
*y$MeWme6evM2_oڵ X7ߋԊ6s .ab~1fJ_MV=[ΑfELGBs!wC>a4幭*3\e:yK7)|b(hLi_u/4ARV<Hbt#yXVnVY0aHxަ*6GV]y (<*,b|֢,V2AgeX;UIV>QNNNCuW"PW(>_Cʕ
a CD`+w@m=jsejK/!4]QS,.ޘ!UX

duhAS3Tx(]=RDIT`)b*\3L2'Mn \ǆf^HKֻ^{-}augKdShlI^jV
}8.#zK]Q<U4 bum2),0[ ʩxˑoq2Z;>`.zg!Z0#KTH%%^֑_oA1fdܺuQe(l
MItBECQ-HSH¸i)}S߶.#D4N@ސ ^Ԉc	/
6h=5z˷)RfZ4MEnژo+F w$
	Ka=
U("4t[Qo*,7RJ #."VCF3ȍpjߨo|C2qC<QD4[PА%pk|eB	YYg݈{Yn1JI
sʐW t	g"ƠW.MMPr#++2i6v6EUQ5գ ݛ"J0un
D/oPX'ħd<i_|sd̴u(>Em|i0K&[eyjq
pl xm1j=%?7
uw"P2G}#]Md\&~@+ixAV`A!Qk-`|'^쉙"Q]B3V.
wL8c젞a\kly̲'̤!<r|YXqvgm8dU-ڎ
s>3+&Nmd+/%yNNB=<}i24oZX=G[4+Z
mu@닺O}[fRD>(06kKA9r;hfNyCl_)!S%@4KA-TbY;e?
q4rզ5^"y^̶#!/GU6q4Sn5yKkp8%Ow1k{շB,HDCzk<P-Q&gld+/8
mIh\C*eӰ C/5CgHτ,/oOPM58*F41amrϟŠLzyEVudVoʡjX0<e<kb*;396Ѻhʊph |=SذUu;tsҦ@@\ 9БQ3=xQ_^} )6OHsFǰXs"BZ,;&ʄū,:MD!YH$ҥQEPSdj,!ZcD>0T9gwyb.lF=H[mo'O|evKgNɴeB4-EY5؈0Y>5B3ҥcO(TĽz!N34#e9pp'Υ=np@8l]C=v`GɦvxW[K_ )%wefXTc	&)AKH4dk1A;ua 7
yljQ0W<~fW837!{́4߷[q~0(vk<(!ֻd$mk6*$u3Knd8T<޼؟l_sVP38. >m
B$<Ζx !'4D#+Nҽ:z-"83mb"sND|X9#	K|cSHq:6)xL$hߒgwJbU&NN틛Ӓ0[AT1(69Qޡ3^1gYW&?OHj?GHHS&/5F]boS*rQWuR,V3EJa.Àd3WI۟ˆK=x/L|XυKQ_bѫ.F-:4aF:M&4/pw2~ߥd;$p5;l P.DJ|q.&F]1gJۈiJh|%rr<D8U]4^.|FJd Wi%Ҫ`p[w~P崤D.GɽoP'I'\rlQFEh{E-7"b8HPycLr%HMY #LY6*>T(+FiO=8qU~4iEWŤѱyOh\w H6)`j?g.RV1]|dB$a8w/E Ç(7-K\a^\@Ux`v*tT*£FQ"^MXTxf?MZҀGw{_岜,lYn`V)FYnQOp4:cŠtGq^2.m΢50tO^
az9GN찠@#R
^8)Q99ؕb$$e\V3yPA$?̲@Nԅ7ooqdn~WmK-`؟#WslfW9i|7IfXM2IG=+ 'v3+%s37{EHP/bwQ%z˺0M<Dͩ`
ʗlc!>(A='8(9i]U06W-@ŏ(g* pJdH؋m|N?\	Sfa(NOjq^Hy/`Yž%^M$d+@y.E lm+~&̂<t.$?z`KET|XGA=0*
c^~7TD':,LG#?:ЖJP%].%x]ʋD`{/*bg~N*;ؼy8w:A`KDAowF.|ҧTqq[x6@50`?pQ>J{Ѩlӫ`gy"}3(P%u{.jLYH6I0nC'VĞ: z
XDe<*8
jtQf#b
Y	Ye\	!;4/	,d6|g^NBH1P}W;,۹Ş%On!+wL_"N0 hg+9>Ц;Rrǘ$_jefD44(kE/giOI5<405dpBjlUkCdk	Bf2ƑUsNE4bC5\<N	-DlpݪӠZ FY0\x] (ԑs n{g
 @ݩS$XZl+?6*wGB3_0J)!;|*v$Cm;}khIlC 4@QJجQrd,.\gHw\jX?$IɢW<,1HtEvUnQ_QBW3Zq-.lEjdRcߤ+x[I%ͣ96͠%%JL
Uf(NW*t!<E*Mh6#|?W'!-_70RQqX*Pm6>߿ye]0Y2qXusFI*
6UG@2Rձ7hP:2l^}%cãM;#eAM1a]jh&덽SXd>;];<쁴aѕ\]hu
Up.B@-j03e)	Aj(:`j{HRX!)đ
C*3ZJw'" @(aٱ<cW/qg-OTd)|ADû<{yOt$L+=@/D)IZϓ4b0dѦ(ɓXU߉}@!̯<;N'ݽKDJR,GJ>Ɨ<NS'##e=XGU0ũrQWUi<?̙EYLZ@bʧ&߅/:Zbl6 ʬw-s+Y3GأȗAo&oۈvs7	QEm`YJ:v?1IGsY&Xx͙UXZY 4+G'[WdD6u-K|&bm5·Urx6k̭>tC2nFkyK<}3Ϣ9SHP&ƉTAzet_f ?8_t5Lz&9 M	`3:4Hj4n/4lCvoP
Ȧc3*:մ%67E:\Ը샛NƟ	ŠҭDKe|]Z$TqPiD&[f>Pv&j#TLjǛKv׈x V&KO 1x2KVDc
ILlUw:5I2C8v= $
.vCo
vQɘ.OlQ2^e3K9$]V&L*'%Mx@U`;n*X 3309L 3<fdl@>&G4mdhUG(7~[Uыrx_֓^t\0K;'R I9X·?q4we-!Vd)(*5԰ܡ/z`W M5[?=>rԱZ/Of{/|_ֱ\}eRR)4F1T/t#k$]oQ]Ve-XG"oXE
J3bQڡZPMJF0`. |g f"*%1N]O6)]o˱
"BH-_tܭa0
v
<aQA^!ڎ/$"!Po('
"z9c-S	3;х;c2
^l!c6 WY:+6s[AC.~bF69R*YmkhôPփ*gR(
+[WU.:%pISPqv	]Y+?mynɁ+PU)6a(U%N	(/ʠvP|6
AvᚇRw2[=/܄`j2!ZkWûy۝5
Mx}ʒ&ã!z(xaǻ##;h
f/:Z^6"0p:+ûh0p^mo|+r%MKhZ7'oNch+Xai͡'$JTiNָJp47%!B᥹Ys-ď	ŕsjq4ݮtVh"ӣeDRʢӡRwK&b7#1ֳdXh~EjSR@ZUv{`Py2wde<lN
=Mof$):	-de#md.NxMZx*Kq.)DQR<且]%{my@+lf$1` r !( P|~Оw1=̭&ߑNDK1!VgƆCB6=<^v0C#d1Aۉ
߆YT	R"x0k>0
X&~*yY"#Rc+IC$;LakPEүg/#.dI켍R1!2m$:{S
lL~0?
!p/#Pwָ	x"ֆ;mTwhsqt,IwPl
bPnSf
:.&dylrdfum8Ӥ|	Sq$u |Gp4z̩-#CRLB(kd/\#]
5 <֙ɖ`&Ol\~XxB"8e*)	:?+HܞR!"/

P .`N(TaLRpI%+jS.u9Au<$[O`<l wlm*2[S&Z(ff4nGY$wQ>LQ+0aT⠕oF(*}}蹧ڽV	csM^囖bHr/PRƹEtC*Wg*O,%,!AGTw[E`liqk9C(g6/YgGYŔQ1nv*R(k|+V	4Wl~&;ܟZ6z*oݠ%Gց7cȈ_LzG1ҳSNNчweSc.Tf]b#J2I]@:^id	χ8q[z2D&ډwpj'**m<\Zh9?+,q*[Ug*ѱ`\eKЁ[0e3Ǵjr*>gKt9>`к@$9C6qj=Aʷ%QA1%Q[d(-%dҘ*Bag# l3w3am2R<{3gQ%t-JEJ"HHdDF2ҕEFtZ7)
	Lg@pIm 
MO6Co-Px'03 Ådn\Ǵ^I	 0_KeDV*q7j3m~a¨7`G1X=JUڕUD.Ѐ"oU3Rc_=	8 *Q6j0Bd\-=0c*I#PK$О̥p%>BƠtm[pњQ)O&RY2'/jQⱸVGӹ̟>L&ᅵpp24{^D36'P od>IkY-<o:NI.F؁SviEeFɲ:J%48ZБ^> SPv.wPϯiٱяu\m<d(~`8\C-:")lu};]σiͣԑ7d^ڥYTWg%H3%O2R!|ь0DOV
Fyd*)aSn!iT0YJQ){4bg~ܕk
Ffib?@_tA!ah6݋^|U4Q69rFGb
FSGw@	5⛻`4&a~iE$&isg?Xz*v\oy%*{+NBKd횴>
XKVXā{I/dX{i)ε)hod/u0%:
+Aӭ(HS)C8,93aOu&?.zjr7>/d괒a|+dmUhl{XR&~y<Gp}/G.҄Г"(JHC8d"ah1`,
.]dh7/VM8>B'= c:$Aia|;#JXK@EbXȽ yOkY}Ko}5+8D!5b4˖Wf:E[T+f
w2o%>]6s8_9Ch)UΕ%بn0-L(?c	DE@S"\
[[lO)| JnV9vVW7.f	
YZ/Ak
c[Qt]2Y3*u-3\dP˃UV+Tu,҉r
vh1Je[7tϖT8%`qrbrGh]
s}mV]vtU޸j;u ls$a3C]V120*:tod`x!Tr$``B!>6gKd3:̋_Ҧz&b$m)3z$K,J}yDiٓ5.&O2m`<lक़ܱfMYDE(?eE%qc-NˢT")
Oݴ/(#Hf1&_|d.F1۽)i	>RrOYT 8d=JZOG3QPx7+EਃԡTPdx6)WDoR%̇1ࡠ3GY#fk9+ckTy;(/KαV/!.&~20)A'>h`^6/ܱ6)s
-2{[XNT\EBp,^ 5$^x ]1]
8lMOtK
UއE.
50.r3aUQP("<X:hЖAq
<RAt8[3i}҄JQ_Bn3Sd6J#0#m'3ǈ$I+l:W|Dޗgd=|DwW_M-E8-H)AGCn7`dhI5etaiNoI7Α,¶xynH(*xu۞b96phu-T0UT]XQxy.2*=+@	lF6z&buAýmkwޗA=QQϸhD-VWqI&q2zfA%ᠠL?M2Ifa;̀	S6LD=r#F ac*R/wxKpJ(G6{
AC4aUr4n-m."WU:Gs%J	#^E`)He_ xx;dހ`ʩU 2`ֻH'ިA-l@e	td.HkF7990LUPᷮ`exu^ ̑e*vȋRfH^71W/ycqȊv$[aQ' eU-s__f/7Շ	tDXJ0#e uؔwÔ=VW7>FEHOrD`v#|r,D⌔}E\9 Bg|To_Zvr_!! h\@pFfs\Ѝ|B{"4zٔHdD:}ػ0iK'Zzã
K|8+O!2+2k8Ъ49r/tj  Jߛ$"3w_x}ޢt3UK;I&Qqfت%<ZJ4:_?կT&HoC{|lS}m5wG^ )$kU,j6nM+nIREă*r	"w/ >c#\x[cz:"[K.+Qxrnv]25mf+%ԗ:@w,'@>qԦxVS!L"UP|)(7TÛvu\9{z?JMeeK+UsI QSY,I6!mЬNgjIZF4[E|M4M<ظ&ǧZ8δ.kLG
'[K8~_2U
ֶ=MIF Veg⛾D+z]NfGЛ:T핯RP:[ۤHkpgYTwO2
I"zxR.y6D׎7d*(9;ů!C:|RsJ%/q@2N%2quP't.#cD#/r
xqKeh |!H*[r0[Qy;^ '#tb83*Otثy[#D)5g<J(:'X"VLL@NVD?1h<VQ<E+n]9xEZD
Ҕ{(cCL]\O6a$,ZGƼ{aSb{QAx3")%8&jb;m%{2$)kJMǐBV'f'~[Q
D>JFEW'U ϼQ6p!957HqX9վZ9Lq8 
gr!BĻB)+IjB>f?K,7sˠK ֨1B	-e{mMTsq@Yg{ю{-[gkeeMK<Vt^n5
;&U@$Ol:DGȣ_碐ڶZi Ef,,Ck.DnITީĲewQG
D8=7}
(t#;c8:Ƕxm4U9iZgfn3c?LqvxBR:5otΛ2WeњjyNC	D+S+pqP?;ޱx@3x@>EtS􎊆$,
1i
0HYJm":\>rmrqiQEZ)r"KUNQ??cQ3\砷%x~d!,fu!G!@d+hXPa'h`wh
1F\՛80#ehSbO%;
2
Ѳ+
P
yeV>aA

3^7E§,mP; 	N+Fz%wbd* HD_Do(So"e[.榤_2<a"xcdjO5FkyUl;י*?Ѵ^l3TFFdBVϷ2e.OF/בP^z{C
R9J1=՗uvw<SAlK-כM9E%*WYֺ,+p
5/m&DUWK~O"x9ZQߐڊrCf!*ֳAߡ$17"+q?
,6cBiPhvgnRbU2}EaiYB%61m1/gHCG$)DWP0XuM4{a2ٲS"*YT_#	²`|RdXÿ_Ya2	όz5L
ys:dbz***+j¯sTx)ꪫ0顔2[,;|<B#ݑ✭z,[tbYd9੃|\2DIDCFk됒m:qID[ɸhR|>66Ee
Iڗo	tFvE:R	T%ư`p%Ӷ= W)!.V@xGY@*O,d[֥}~@na=*tCwY}II"Q4	+Rg	HiftużU܀P)
XEPh] z	M		]ü6d@	tE8j
H,j/^D6a
б zSMծa;!)^{e#lxqG\{=t5?3n8' g|9-4a
ͥM`tfg*L 6h6i5r>'	JzQҰrQL[ԈC/Lh `Q/;ɰjԊ_kz<gpN:~@$y5a~N%BDE?*P؇~8ER$݁eD$6a-.Ph%	fLlV_VSiKh<JcU'|n~~{b7F-ȋw#`ݒ@6 xh0[x*k twbclɥgRf4; k>S͜H2lcG-<h>x	y	*WxGuAi̜~xtOB41KF",¹\NlOMs;I:j8.
E'YiDNܮTp2&4Ev6Z_HqZeý<ڙ窼WFTl5ʹ7яyLR9.yN)*Y?l:Ҽ xZ%CÅnV=)"xZqbm&Y"W'KmhlB)g5xNM`$.FztnYFx66Vkk^P*
_s=LARA.] /*o/lZI:uķ"9dMʷ$6YlJ//\yãG֚Ef`?*a?Pd@5񇼻yI;6'ƧiUHtG=#~qneA@!^fD&rUl3h h"c"nxώ6m1,ȃTf!w0!M_$NU0/JW)u
l|e*TH_F
Ι_
 6-vT~,f#QzT0IfFJĞ:l%$I]/IbtC., V	*F_hIr=};Y4VDŞXSF Uu\I&@FHNVғ餫O\e!r^5A,12b*M9<r{/CfF=<.hv wѥ#bS$}^,J'Y4AG$QFrC@fh/0Q.E"vHe*̻9CP@9 Ag
?xdt$3$*z"Guښ%D$SV%0DsX{r:C1Ul5ƥsUCT6#\rJ=hlvH.
V6NQ贝ˌOZTN勽\HP%!S@6zW7Sw)IàڷA7HiVd=|'Kthe"z.+H0sE`{7pe"d:keZ#&#PK0!$?x5BF'2a_v~zcjB.NOq@K*]͈~U7	7Q3νx. U0~F  c-{K$$`nf9rZ`PkƺDD΄"$*eEV,t1ћ.`fDYXG5DjO6
*E؃܂^LGG؞|eT:xƱ>QF=Qr^+5UAeCY Sa˞q'"ibnd~3"VF	z ~?%&'NBpU^YydU1)X9W#O<	R/Dr |xA'ߴ;9s7J%f	71~% 'A<lL$R߭ZW:vڈ:2P?wM29|hkn%]Lj[QDgk4
&鋤aJ!XsjTϸ	rpN[եA3b듳9[I՞_Ƌd9:u#Fzosl*wڭ3$K|Ԙq?[ܠy  eY!lMa8hʍ۫'@uZv{ZLQ(`<P0ʜ
zn'b
赯]]4s+]d _iXݤ18d阸YѭdbQ![Q%m3=F{I*Mu5=TJHNuuBobI~KV<5pQ&68R2S_tۯ(
I	
bY*p6h1th͕nhnl@tI*.
JQ6i#Ij@cLKd3<ƿ3<G$EP= ',}@6=j"&ndߥH.oHXnkRBS71;'l20 N/cr;?g uH֢ũp?
)"kWWci,PUX@r?d]GHԆ
SY#?V40L~D"ĩƨ˳p--/9.:ULYF]U075#)TqM.lr奘>!>bp OpgSYҀ7.1y#D=旜-+ra!ϰ)\>UyA14>aW኿t5a}] 
L%\< U8lEOi5ZYGzRV9?d`K $kK<	D[wuayј\i xasz'y9"lWs$4PDVFbcBUU'׉xq^q>{A:>ߏ	̫.Pqskebjtcdb?MXӴoQonW)ƻB;"Y
|&Q@Eu Rs6BJ7tLI_^Îmd]vriŃ,{ZbWլnF S,tE 9쟶 zдMf	/~ށ}&?LwB̧ <;Z@5Janó4uIjmߪxe"*Z87W`JHKwLv{^΄0FLw*/k~$f@s%ݫ$AMW	ϞKm
TyҞQ{dd%2'<Q=!0{c#Qԟ
|u,1Ya%һ%Cio16Jy-|(Byc1۝A]V͊&Xja\,7;4r%>:0!}#$o
gV| VQb)@(Ċ+8anP_)'gJT_s)xR(\@]H*h`HY-"^Q%Y5[(Weţ[f*>X`\H^J7i._aSuԒ!,bT|`A<:~P(%LEeA½LNc
 ax^R<Lw*OCkwKZн?	#LA\TtQ_ R*Ђ
-/py2h
f_:BEG"{
J*'}>MI$9kiõ̀d;
"z72xee.FpIQ$Q6:=͸ 6ɭ\s|t<qڱ{YtS7_R
s6`HUMQȊdhwƷyY:O#oKɑ*/ULVvq0]lڒJUr8wHli&Sm+;@}IGiËA,Xj!3w$
A$?0 2!?f=?ޖ*/ʹ4RRj8Ri΍+ܚ]*۰Ъ@AUhF,zlGy]v'iIv( DmMke#-<moZ|sOUǤwtCQnvntjULQ4LopMm;0v$&	5HPDr
*qT>/m^DI[<UYVV)'/{oPe|Un+yC]YH\BJ@z	hE %'dF{EۊPUA` a,c<4+܏v&-GKt%yd`a\?b11̷#5[8#|$5q%ۚ/UvwT4e#j%r`H9̙yDtDVx# V}G_x@=#!{jV^:IX
f4j*BC E@ٲ$5jEF£u
t b
UI0>4e// 1L4I6kDeyסW`L!pʛs'g
oCJ}PNmGMޜ8LsM
*׽0ʈ0G!2tG4qn
T#S}j\
jlC-#oc-+$t%T?!,ˣtmƕ7Z4:\W<ح7y3io(o/vݴ4d`sݧ(xS	
͘T'}2 :CfĬ,jR:Mo;3s0DM{J|&Z'2fw{";Qi;y,ǲSUiZ&45ptr/''|FttI9 '46.TzBKVt/NK߽ȡ 6)$]yj`;DxPsqЈ+UAj$f<b4HYvw䵝ѶsTƽfZo^#D"KPʆ~ !|XcͻeK{/g&1nxo}ZHcA!۩vE}Mdje1XVX
/YC]]X#)90cgKϴ(a'+Y`'1W,VM:Ѣo$f(ϐ +',-*"J1Gd9Jeu6z&S8jh`?39Z@Y[2dNb}.nXT2XՔV8vON['[[JbDzj
	UU/5}G),k1Y 3y>JzNʱrUWmыEKn⯳ѝ@G/b9%0AUDMM9V㩗Bb~_vɡMǚ+1BG'?cD^;$启eפWw	93đLIo[1Y_X	hg*6K%rY䈿8_c 5@:1|kvY#exh=/ujXmvR;9*܌Q}!boX;/-BTG$+ȦA
c)~\X[jg
כmEeA9I0DtHGNŢ<4ˑ=),E4\

?2+us+ gâuDr 
lSv"ʣ\؜ڳnۚiaQ))[̉:f!o	.:ξId8yLny٥%V#øulOұ91G\>XEHPXT	O'ƅ՝
sz>P-rJ 3WBrts,P[&xdUA;`^12x17Gf?X@Yq1b9ϯ]Ac~
p'WE ;Bs厖sYӀ;rJXD/yV-UcoEz66N]QxŘ&+\|95#9lX*taUykGa*8zא-Óv|a2K=;WY)$+tR# [u4jB+][n
y5UI863B8/Qf7Ʉ9&]B/h,'<tk䮨MB784?&x(9E5G.aAC!Ұܿw$%	/%F	]i(PU2i샒049ʔkN2~d"§IwT^J+a t5 ҷ/Ӯld>qWi6Ew^
b27,W`" p!2-q4[G46p*"
ZكTQ>
Ѣ{RbZ0n4DX!1Yd 
_?`}xR*KL+k}O#
|V#p6֬K&YM*ja$P0.}?tKؐ^ -K4ft5_ :<:2!
$	S=>%;u8A.["eouƒͫwGXS	d O܂}hW5-h9Lz1ՎK3 @Ɂfh) Nd;(3IkL"s)M3σW;=t`҃%mre$T!o_;"ಠo@"7"W"WT{#%9<7}jԁ/*ok@NHPfE6'j/&sL`{_HufޞEG5f7=[\2`GpWثCx×1o #Orx4J\+0`4	}꒕1Ve5II_d3(w({r5i~,dc҈np:a)(IO80 ͚
Y0Α(p-V%	[/		+dO_3BcQ|x\_p"Pn[-Ng|`89gM'3Y3r$g;%oє,Ovp'V.DqjAVa4bTYt ; OIٌD4(J2<5±SxU,]b>i؇+Qޛ]`&ׁ8#Q fAÚ6x2	?+ KٴDtQ`Ւ+jvFG57AZY*8L@@땻I<h8{<y)[ۙwzNe MU)}`M;6u{ JO!ӷ&d>X{*8@ğ('%LChãNRͧZ0'\E jpmNgۅmm#;NxqhS.=kO
"=FԂjZ,Bbz-Ǝ}t1r*9ר@XY,=z7#XJ:&ʣ psVEP*yrgEi5b[OlaEMQ&HC^oHe0\|MR
cThjX_=h;FtcөpR
\o5{,t6bЭ^wAhI'i O\ F_͌0%Z
Cҽ6<=`%*OƪMvz\&\:7ن;Y7Ckl0_$'}	ca؇I
@>Ϯ M(mj⸸E|rqW$(|йNPD*FZPN߇5MȒɮJgq=%y$ylѪZw6$եmVƦjm/Q9N C9RV"x[/TFp?GkckC͒V?" Q}Q5a"Ͻ!7^	7LV&:9$hބjܓM<D.]:"ɭYNYRu?, ey؈/m54"{Tl.2
?gِ^ttiK\>6ķ0aj"Il"ASؿO@
X':cshyK05$4uX,
{E.WB7|>&)CY@[C!7PejnT~sRހ8"j,BĖ{	+s
&Ь^(#c!Ml
LaKMMZw#)7j|46
8_җI]T1/O[,
x4uH"ԞL
-bhskH?7nII4^a`MO*D(Zy +؋&~Y^k!Xrug2la֬L'jޖ
y޽#5GT
:.2`JF*W6}r z!\ k\i< zF4	 1ey-j@v35e
>CY@4Nr
!"Dnl7.\s &
thEt*!P fPpMW53bYP:A.6Lb;m	2 WVB@[']%?Mݛ# *rnƫC&1NY18r`xɣ~+6$w*FN
Ubx_C3_@b?yҴMYY=9a$ӛ%Hhbb8-l˨:cv06i68J9sX~ pQRy"216icK^t<:ƭlb^ZD(N+samU3PgfxRoRd፣I\@  JCZNbnDi6? a3otea̢'}T Q'J/"Vq[|cxg9khEG
sTTlnGfZ''N!ރz̿{*aZ_|n>%y
r5JuGТ (bNĢ>U^{lyF1,.+}$uHn卑\q10Aع8D! 
_.\\zB@C:G:JJ9jXE.FSZuԪɱhAIM۪C@c;LR)6\Dղqh>ŢT+enP~AQWG@ZԲ\'C"ClNLL?Dq*Qx}5a$=%XBZ ;Vh+߾&pzsG*=&z4VE	B!$ej=5:Tʨʹ*#h\߇Y
}ʕQ4yF};B*oaz=y	5VDPk<N,fXC D:'x#ѩ=xYvݧS;FC	Z*	!@+"?9![g9AjI.9
^0fiDCc b.Pcf=)UQl!AxoҬqxS5MZgY!Ct,XHĈ!Sj2.{xIF;@~:&tjIgZ`kXG rjGWrg1u/A ]#	 7ߢ@٭s^+Ml^x~HdtpHD}ʂeihfǰ54p9Lpi`(TO(v&|U77$i`9[?;&M% w2t`m!R
1b(423/1yPg|K؂DY%&ZOuo4LHXJb||SBu.鈂ZVP	w~M݃P7fGGOX8RO]Qfrوde&:E6
3fôC`jyrItpƫF N~$;Ѳ$gڐU_+~'vZH$e"%*EMj/il&+Y|(*
_Th\p3;N|e\_A>È9k#-	<v3
'[6/8aUJJv=Wx)iqw,P^[!IsʩE:2`\WѶ49L,Vhk7Z(9׏2VˬdNV*G#5PD55 NuO|J!E+ D6+p1v<CoN3e7
1=T	)a&."w/<?1<!cUy9
4u"@F=|l4Ӡt55@ܰ,io~M#Y/=^ Or湼ygJ6MEP
/Ucf̏fmVX;œD2rsg[6Yf,~W.~942VyM5&;WGhqmd
9Kɹ ~ Cd,|7˂&D}MDxE^d1C_Xd+wC^wƭ]>f]Ih9ݢ)+Inx_t$f.̙҆yb{d§̻nZ>@NB/B)
820up(y<:
;r+rPa6>dlU>3^
&TxP@^}N\3{K%b۔H{݆5'z]j36=.9#7'<8s~W+2xHA}wNC/(߄/8ua
IiL8hG[ɵH+F>ڽt6^~,"b'%w.ɴP49bkDb
"E"o)R"lܖf.O3-!p0&ԞsmCQ9nyAj!dFj.d!3XvBg2#p 2ΔB.N=XSP:Y@t=WNIaeÝ~UʀX?L57]g
FE6Z<PlF*o"']gZ%zIr࢖DJl?'IuT1X<'6nSxd2GO'
7h]мMߤ|'dn h]A# I%0|vDw#8cN5@amy%*{G5 |PюLA@Rߎ*04+q$*lUo
vI>E/`NZT(ޘ;\S1ʆz'xXy5"?gq@7sӌ6X$|hU2
miT$Ҥp:N)&aLh#>GZeXҍ6X"cXg7:SA= tλƑ	?QkCirv39WeV8Q!97-gZm5F~j*[H\]'$0ݪd?쳇iakt`N]egT@*Ǥ,7d%5Đˑ|"Ht_UV)?1R~H8"_z/-<E&M8tw85-U_
qw|2to>C4/5" zP%O月[82Ȅ/Xf2SEiܮh/enmD`]fKu4Ӊx,FyF`rPj큇Ï3!'*MjF!@"PCV /=)3z[<V2V7@'<+u32ȂBӣƿ2?>ލb
Ԩ0OJG<847C!xv[C9d֬Y23S;V<i+X
<vX$I,:oߢ]4E[MWN)H9@TF@yuy1=M^Ѥ9,Hh 0BҮpUDN|+Yα<Vl'$khbgPySȪ߮!R[]dyajr+oНSER60SBMr݄Q*P0J65MOa#
4TH]io_@БboT=_M kB!7OWH8N<= IєmY
s*LoٌnsY:V
!u>p/;+Չh8rQ2sB9YuAau޵CAU[};Ax[U t80rR
ٳ68ՈC_:"WK\
Y%Fqacp׈;h$cee@Ӈ$m}HsR3v%	Q5׉G$raMX 
ћm	m@}'qOJ3!t G2||2|ULxEE|E<NSu6CΤt#~֗
p.Mq\n.^1yS6%VLaZ1gQF% N,K0=奻ͼr9Yd{љ)×E14{.
Ob4h7".;%f+63j&chUzL偏7IbhI.,rT
*XDkVsb"2x4Q=:oG!?T*-${nc!Lm:F5o0jsɲ!*
A@I.a\LL DAΚ Pdb"vHtY絔^0g*.n""T'b*T[*9
UW9ƳsƎ{(Ɯ0U9O;ASYX[5v|z-o4ZBu9$^YxTe'69>g)2lPRâ2D2~·O[_![AVvj#g.Q4ޫI`aRE{4[?!2
߸oE@ق*nGc#ERg8t}ۇUvZDb5]rfJJ±UFdVE@ :5~.dK"jHCMfAYj=zFWp
zӸ7	LD a(+w0}Jlx܃~Lݱze3W3ĢͮLΉu,+
\H 9t3Hp)4Y_#"˃Qع!ZShE3e
BA2q0ƥj-T05bc5sKq+'YFBr4苙X4x
%/o0 i(:%q@ȖmQ@ [eM=y
PhziYLYY_4 d 6q7yR jOuP o <7wS$k:j	*"H5Y$E#nOXū$U!1Lu	.['F{eV")")
6kT[T==Z)3$\r/:	9XWgiK#ZRMXV? ^&[`q)GV!1$
|hJjtRoDEóT{Y6D?C>Mrw6ĉT&
Z\#ݏ!WiQD}P<_ĆXDEZ
M$8
CPh$.J:ry\}u.Js p|k:7ӉifU)-]9֫zq-s2!x3[Z*vG
^dbC]GQGM 5Byt@&$o˱ᶡM* ;}{+yPW i Q!mB7xxD_=WYuDx͟_7ilV@TM&p
[i~}s|kR4,,onp
s^Cf̾)C#[>b""
esNEF~ Ҟ
S`zy08ƫA[.VA=߹wxj$ Ta!Rx'S#	
2nzqz1<vy7o:D %rgzؙHJY+
blt&b}kfeބhbTjMdxn$m_ba@K'&ڝvMÖ$L:iWQc'oMNs/n)	7QZȧEժMq
^f<L[<K0jsmI
;#i~S=͡$@i)Lv2KAڔIs:b-I@k 1'v,6{gx~Hd~T:O7ecqbW3MeSY^A(6Jgߨ.Udֻ,X7E{Lы)h;[#֓9~zt4n~G/"7Tbj**M/z>&D=vs^fjJ" .ţ(C	. $l}x$dPEQŗki=E+_q?"ˆz7zp9F9\B.N@]-qZNZȣѰ
yw{Uq9*4-1b	|by2&L8gx&&5/*`&,IEɳk? Muh<"'Ž"y+dmX[6{Keew0
$ya-_ rFP`!;b0ftB nRԟar&B)u7u+ln}( "O
HI6*c&h2ZcX]2uAPû{t"6u5` p.OPnM8Cޫ10Ge¾b&`9t
l6*Ɖ U4'GiRdك
e]9NWlU}9[׶]3bך7Oʅn@9ohDZ*'opH)kÄ<d<B[
OԘ6ā 48VHcnF>>ZW7-Ú@ I٤TBx]hI_܍xU^qj!d=3rH⚶z\G+:}C̰K推F׵ Ia&{fYlop΋_86'i+)/
S!LOJA<cۗzUy_ǆ_F~^z46,b0;Ew<h"5ai	RGC{ )Q/$ĳ?DKP[(^R^)n3ŵ0e(vڈq(= ^$[Q{w_jYWT:i|XHjBEb{|\9 _ M]dAEGԙ%#IJؗO?O͓"#-=,230U:p᫲G[T1<Q/.P<sgeŒs]Kco$xom؀dWBvSۄ[vNVr/;ZeF35u{3&x6)<UCfdeV'Vӳ'^{~ fI(2e ??!DG>ѓ0DNv=*B\B-2Y
}p2w8\$$S|`1V;9iQܫ
TP~k:Ѹ+#31h`_5ma^B<O`0u
bHZ⛁*pH2" 5[T7$5
ax3(aѴGtuq=3#7-3yY -\E1ނ'39k[$M&L".t(3"'`mlQ.\%e1:,rkU*,mLE]v=$C1df6%Q?P<1iUhYxg<hfX$4NsAOΖc*b'C:"(gxt/ήhQ oH]b-Qwcn89ُ:(LIQo pbIl
6%mcC}=z'*LOoz%"7:0K#"`Nx=GTp`9E=:A.rz/5xLs&^_c6Ƀ
=<NEH@GN2{_3$Q_i~K%>$^"h&]# WM:HMwfo6=o6PѶ	8ц%kJd)~f>yنw uLނ5X/CXb}<N9Ymf '9Bz)/¿E`_|A##lRǱ"C7,iq!|-aJHXǰKiچlD 1E9OKⰉeMTd1H/s'@	9x=S8?5ȘL&@8\`2Á
m	wDEpd	Vi[fa;#[jw-j&fjD
vU\| \
X:rA#V*FYx
;/[H{fS5;ײ~6̠8x_ռ
'%˹e^A!_JxTY@S[<߄(~
r8%s*Bղz۹GD&B/3yV1R/\FT<	Gp0`w$vM?汙{"3
/䠂_Οhv*yDXIT=_ `F_!t˓|^x,u}8a2,geqBFZBuL=	SvAԕTib,sE>̢do'O>0ئtwF!U)18%Ё
Bt8׷> qpy#oY='wVD;X
'h5IА7i,ǳŞ8g^x=;-A
mV@U4&fgqL9.-9Kb
զ^ SUp ۵Wmߵ77N$.KG |)±v|	0pb4+03\_`y3݅%%()Xݡ"Y!eiu~y	6bY1/|GPΠR	a.$fBxk_#<.&>jɷ[Ԁx?NWǠxKd\.NO6Z6BCMw,RL%Wh^!CUםPi,;IbGplƤδ
.
~^صnP,yO{EMwoJDxh~YݒMnkTu8s- 
@3B7+uh	 Q9l˗#':hae Ī1%u6;)4hkRd2]jm
ݺ|UOLB+`@5擄HFEC 
eqFnUȽdFʹ$*sf"E>3rMnjbCI:@nkjQm)C뀌9W-1[jZ*+_V[`# Bdb$\BAK#OYE,̶ڏN:ޠj\a9S5u͖e),	/K&Dc%rtnF"-l  s|Y}4_Ӈj^ң=-JP.ک%%QpqtJ2A4Y'ym3rG+OT@T^UYQu>YUe;y =/4-nbL&zHLQuN
W`xχ/z8nOv_`yUF#OErqɚBNߡh.>킋9/p\[h# ~0YvVV؀@{ϥݺ}Jܬzg5q/
èTlZ^9rez0PߴmKi1(!47&ԍh	r;Y
C:k)dvH&puzQD.WPv8ђq,z83U$zJxd7}3_1i2l⻛<Ao\TN:#d)Jufja!Ջ2Zz.xU/HT(pzw+=ӑ UrTvu).s	:dic-o 3S$a#Ÿg+R	6d/rqaP,݈VOK`,I>7#6/AJt4= z[4Odѩt%U&-8{.dKJ \Yƿ(JaJD &uB0L=yYnR@Ʉ˛{ф/'=}`BkNyHpa' jw G	|ёK <p7M27zx^+˛D5X%VI5nnf8dC4G}9(`on>p{ v%8(<z|r_J͇9$Y| MarGPŞyw2"	j"qTJ&hMl}+ș40Ja%SO-0'E#b'ckBur;};HSK'iRx7vOX
	?4 ~oa{8.2g֚!3Z&LKr~aG9a;JJBOjPE*|.k܊Tlf6{F`mΊlrQmrj`XĕM&VF*MQlf@C@0qEXߛdT9;,2Z> |c
,ȏP:-{}1`إCe\8βVmɁdC!	E#NEPqC-hqm
*XqȰ<?o1y^H֭"s<TvsJ 4ˎ+xn"3
 4Qah	#A2_)P,AX*;KZע}9<fabo<q4oyde+?wT71^<eKÿx!yo͐EIGxĭW#0xri9NyR1U$qquJxքA@'1}PbVؤ9`<D*	KUdq4j2M"WN^ř:~.x~ ѢUHB;OxJ&ӁK C\LY<жEX/ȉWUy*ydP?y6t,\yz4B+_*g2.@[lpDG՗S*LOZכZ8U5%NS\Ɵ{JF׺mHڕK9GFkQ Ӷ)%!(R
*{
F%$_X!u8f-5tfJ m<z
٬^VSnUZ KOKRDR񲜟KMLN!N.|-F<elI^_QowR+՜Yfa9UK+{,6'fAVz<<X4֊(i
\V48+P0jvd*[U\N!RG֚	2yPq4'YI|X&,
]T/6	Fx,?FRb@T7*
A._s,3OVbJt
}9xN#ZK.*rt/l4T
|FlV>j5"j*$e)$3nGjuH71yzA7&XpRȕ?`*T5lm@,[~!5)NKWH,75 ܑKEʤ36m~s{nrLE(Fk,Q;xFTTb1GrUQd8*\dЕXeyr %L&
r81UBY%C+Df.nUvBkJ0(v/2痎\d4VTIg
5$60mު
`ar-*T̨I 4w~mU]t
*@f	 Qi? l+9KI<64?`5WƤNy;xwDJ,FŽIuita`/S=dф։Pҩ2-'6N(*V	]x%vjGi\|_9WJ?ߛe8],}iTM3iTe
x'<{E?M=2{2%A>Gf	pʰ02s6578JJk@,p4p:5&hｓbǧFAz"q %U&uR%$?ÒXţ
΢F,jhoŷZmJ>ΜAFki<1dJ㋋
xg=ܯVYXذIBx8-)Am}~8$N<?pF#[vMf3w4}+､_);39"Ǌ?c	ct@_노]>:%m&/O!{kp5hM֔C,۽M@bx&wb{#hHG?;G%c?h\@[=oHYfr	؟;'+oʥ>4DpR Layo*tӡS`GI~z,!'H)rFEG@)B{V!?Q<:XG1'M4	}Q:]~}գ{=h<@
BXqoυ	.2I9'G@W])fNjK4wD2
\w(v9oo_vUMs\3G'8ǭ~[1e`liJ'~NMjUfXP=^)V&mm4/7u8|;wh	/Q5Gf[M@L0JGM.wWWb	R Mn*QI;۲g{FzuxlG%)89~)AR4E[\lLn0O\S{/ߟy&eU:<Q*X$3Щ(j !Zpn
ۅeĝ-ci6NQ-4=VIǂj
+4WǕSVKl+,iIu
Aϖ9*ѐPbUNTT`1-MKi?0?,Waa|s&*J,<4QJY^bҙ-z;NvP
A1zډJˁX
7sHFδ[<Br" %VE6whڲP	gDV#x/uX	&i}mb$MtGMU}_y޵{̎hJONk$Z`q)_nksx$
)2ew.weG%qm9ޢ#	WߥFB2*'!?{Ms1P(D:lаyz1&a
eQaT/b2,b(
ŪpӋ+&(l^9׏3ڭH
(b4&j5, FV)Yl"ÄNBtrug}3+Yݓb'kۉ>uFW*[lѠoc|RnRY\,)wg}y2o;]گshPtB5]?= ˴|0N
R<
]yљ5rY&a-do҂FEM;0$wGmwС9oWfH#Kkjo}Cɶw_Z:J;hB
4nM=MlxfEI@;&CGͫZJ#z- ׾xyY+&Vs)?хP\<ljUoXF5dLpg825ʙl`hx@]F!/Z4Өi*bψ|3fmۗ=DDo`益>qxByua{^QH@I*Z05yRX_dJ&2ɓ
h<O
bpnj&]='Ll.{F\ρ-tr D녎{ր5l7my8{O~<]ީbtke zGL+;T(
Z
(k5=呅Em2^e;>.CËg7	´e95rd~Y0b5SaEDLD3w+Ap*hF crf8<knL&Tmi0u!-C)yP4*9BnG VjL	P?gT벟+ dm2*.䬅Nf$'*` <L8@~JLrx""Go[9|Sm2^Y{Аo->6@lZО@ߐ0&o6SN}sKFe!t:b`o+{ǈfE&*
ެ#X
V:`H#Ֆgr<MJ\ש!pO)^0G<kҙ`\X10hY xhYO>2f#NHȅPғk0isɯb
["/l/NBzHRqpØ]YZ|5<3#jKg#\a6L2L$Zm
e/uGwA9XQlríɩ0Gޚ@Zo<*9\ diMŚ,']@V|JK|>m1mPq'4o 9u{Dr^9[і`EO5+!P&aŠ	cp']PaePEn;AS㚡՟G	Gnj6Ѣƿ@zI^@OG3ENⰢb:jSr	*#B	 Gg&
`g[UD~Ř=#yٔH'ሞ@u
u}4v&A.oUqaeEI6lvZu" won
	m;WQ鴂5yٗ$chH.2S-0@t!V!W mgLP<;oQ77ÀW"9sBm&|CEd*-H
ė GjطFkqT\7狏RnٌfpUYRL4hU~{:O?MZl	e&Kpj:-Jk9KRh3%tU7!A7sZc%ݗ0iaI
(l3Y@wnO MYB
Xx;' h:.W"b+lvD|o7TOلzLqVB<2{?I(z*[`+RAfNR~_j|șpM<LN/ }#®?Iƅb{97BvjɀjV%Lal`+PRV͂+CuӑMb/6r&4%2N35|	5YtIi nJk)3
S!oE3Zo`@15
$zyTN~nvZիPFb*|nBqi"lYGɁ #lZ
M]m0DQY<#.('J0A;E.õev;ո'apq7[v	XcYH\y@gD^a"@W7,XjS%&zuF9
!ߤu;Uq$=sX[mc)F3PW6rCu`a0&9 xB6	X)7\/#t&8?V*pqb޴;'Qz`|aYH%Lvȋͼʫvc^
\FA.#-$mv0Wڰ/luwLE'
`D*B"J@g4@'nٱL0g#BEl%Wy_fȊ&;q!Zi`}3m1y햼;1Ybl9sR);"v¼z"҂񚞪)L	X)ٓB&[N#ER cRyiQ{NuQ|PP;~_ ~O`7W0b˨XZhir{=`WspYG$4~N~Gܠ$-:zq6Vi: \{14
oz>Hػ(\D~HGF[Pju9*Y'x@[4ɾˬ`	;`r:ƌ(>-K	qm:9%|pZb5m_G+`czr,(&)V`hePA
¥-5	E{x~g3[eeR g 09ԕ+]B}9[~ee;qVϜOaMTXx@ZaEL3dܒ])W;\^}$7"ɇ|0 К?aGsol{xc0nXVѾ`>B92!W#P3&* /xu#ș49юS@F
usGo@"&B;|Ksyw<$]
 qD/ ݰ}r<Ka#cRo'^L$;À#+xt/|3d&
F)PS6mՍ,t:I,W\'-25l)s6.&"xq[ݡͽYjc{[uC8mJHf1vl*uk"":wn3ůȸ@w؜!893f年$oE|^m(@d!KPu',edD?Wѭ9\W-ɂX߅2|kg%);Sͨ/n2hEEd]r^RڔfEC=W .0;"pq߫1]BEDDiz	V_	fE>#˙yRP\(dl!w #;Gx3	O!MƚV@Z	wzܷevٻLG_o&\KIQZIXDYUkrg.tBM߉1bF+ J Pޣ(t(Svғ%lPڠ8sIn91'ik=$^oȀ$xfAExv]L0[Q}!L-`_:bӡ;Tta(%3Cbד2tȄYN&Ն,K,nBZ9aJ{Շ+ *csEr+Y){m(][b	D82fZEQbz;ʾotG:76	apOA zNtZ]zX4`cθ r<4GZYJNl)y*q$["$f*W(m|PiWrr L~Bk`b|sZVXp6 {>Ɣ77N8VUmwDL0^$W_~y,'测\V(T'Y\b <p= }ac>A)JZ
tVl#~^5/2hX nU&n90OXq=-ȠaRNwqt-7ߒ		Bt@ж-pw@T U'!$xi	!O^tSJ;:asqCvH~*BYOCI;nvfc:xV<͢o쁼&^is^85_5NxySIjk>Cה9e?ȈR^QI./4y/e$f^
L
:C	:+N= '	ѫ~v'2os$LC(D`RLQ63-½V*
a͘.7{P3|dDX
I:[U3a_OK;Д8ʉWA]$xO&Y	r9Y_ XP}05fOiV%"FKcBj{g:1Ytѱ7p]y	zKZH3{H
)j`{	]	+PF~<ք+SF<ۜbvA	M|8OL"c|/w^nmORnA[rfc1l?N鍹L&!(>se0De4h5sBv`OqZf*Ƚ|9GS	n3(9ͪ&>P-|DTe-kQZ7v(/!	;d%/%mC\ʵ9}Jd+tC cU1[GvVZiz#xT WyVT_gˢXXJʹt 7{hv
F&:jᐑWsdMllq.InXGL~=M|]i>u"+-cbȌӊk% WKngfR"O
Ħ`mHȨZJH㩚bF KťpPD nseMף4*VGo_X9Fsmdoo$Z{t8Ӡq  v#ZDIA=%f£cْʊ@i&yLi<#f4_!'
!ۚ6|"^D`BpV8
	=fr*
ri&φl^xʃp6Bpr@
Ra#P+])yN5ArΞ)xh/{Q$ ⨶8Wb3fv)"ᄷXnG3T-YJ"B`ÁN7KrԤ}bc7PgGؗaVav/dΨy'?L p*nstwUBl` c1wu;/tڈ :
s<ø&+φ{މjOі@^dρ{q]l#E砭+&8ITE ,8srfNߣ)hTwb.Vq=,9m {~Y,ɮgU='9ƹ)fYnaRӬf9Xg
@g-
 ulȟu%TBd8(
*ҜIxx3LK3!cZ=gMaXz$1ԬIFBeNU6Tԥ:}Uw	49{6놄O`xTn^~ߨ#
dTn*xֱ P}4C %Z}GjjTA
ɃOJ`@$>-OH丘 t{Zl-t@&(ΰ?M}v3qҁo@e=fጩyf,vZ$PNGIfYfpQwGǦ;E~G<Gh.N*E[L&l5mW_c.8g+UVjvQNVۛ rr 
o,\ᣙYNI:L
"T&9[QE72^:c5y]4F!+ꭘAaTl(xUMA%]gϺȡN<`>x(&N=[Z75uަaQZX@ЄA	'O
H1\8J
_@"BE3Q+|OLkָ?e٧ȼ(AN!g"NtJse'YwnmTڗiiԵ_]WAOp`\6'b
pm=C
0".$y0(Ϻ8OdNBX=-ıu iI1H½x k}Bh)eVoJ(;}'SYn
OM}EFcѦNeXak*Q-BK}!Jn8{7v`pxO	G 5DŬ rHj֞V0<*;:;.ō
JZGyfrW]V"De0UݣW0K*S+xP3n,,	g+Xfx5: Ih Imŀ SYx>n'zIPSIm^PIQMғ<|АĊ/fC5Fknrx*'OVxU:hnIp+
	R2ȳn١z`-{&[K_v%lxYHHSԶ^-vb5*4SٜRVeqdu͂-J)*Tm4KOףnሟjEn[\nB-{CZ`&mj@xX{i<蔺X%W#e^rV잘`7~@Ox߸S a,prY'˂DN!؄97K\0Hu&]D.p|rv'0cY0ʇk."p6 n؛:3gxp,>7V(fA4TVBlc'tjy;-	m#r6<'1lfr`jI掿ґDnî$-⩹X~'_:BeFn] w_#xZ(*drB+uPLLw4HŅMDY%$.D)P> Q1Вǐ2gn
+"W"%-nl7rlVE~wT7Jڿ8ХCScߛ
>Eֹ~Qm%`VM۸J0%IzRg|οsMd&,^6E&`튷EHP"'_̟cLM[Ga>>8Ȥ*ԂD3
pL|\2P8ZB8*ѡ JāL΁J2}yIVo"o}䓜X#uj&AA#ZB@1q?jY$19l֥
/][]Xwzԁ_,@M#s`S-B5^:zKɍ)i<`#{i4(=5o"'
4RM~=okAj/0g|/[=E5<֩P/7upKTXoȟVEYj>YĀEjJFH~
^7]/t/(feCW
t%k~bS2|-3eXJH'K\3
9ѭɤckH<0g{^5W:t	E3â,D(ΫBT0c/5cV˪
p>ZMUAܣDhr=<K۶0
-)n.@%"[4H};J(KhGy.1#KtF)W$/${5&!Tjs(:'oZ@O>|@h'"ma~wFGˤ-J煢Bf()*bKnP<
Q5҉%2&;N>p@@kb%UiP'@ Q9:Re-B`r.ĕ)OFWFI0Q#cV[vkڗ*iq_nÛI"VeHϱLFvjVw1@rѻfRd@"JYXrnS}n",u~%qo'R<aF.AZ*o%rc5t_`-P'o9TdsOG}@
*Df
.hD3t6/xkpzsinLOԪ* >j[ p:&j33lILmPuZkIgh0ch Ux ϻ1nZ+![vX˳>5:|HFF{Da®<Bb
c0WHeޓ|T`Qs_~
92HB$JjN̬9"-XC)["<Khlڱ{Y܍^ 1 -#j9 ni:=gCY>UFfqֻdAOɊb|P/u}Ĉ?^
kCߔbWDC%7ܱfM'ї1;Ib4BzUUoݪ5(ډ{U3#fɫ k&C4@1q"dg)Z8jԘ-.")ڝGKF8aSX7jH2E͈(m?	"ρx5pb&W$
U}p-__S(.Xep:_S>V}&	]̇׍*[,Td<(P\AQJf&P$ڃGfrE;\Br^#ovb"HQjI	ypXdc]ç?)%b)37͇G97REUH93q*;xASDig@o;uppnգL21<;`[\hF\Fтlb%|_қqrqa?>T׃ԕQ~	f3C#U6r3:[eސ¿xs`(L)4	#s%nXXcg6H`d>R$:"h8 U7-}}-k z9$'(+KE i0*ކ2sVvy[R(7D[8H%A, O0b.3ŸAyh
y0{nÎ2Td܅*)q1Bp߈,׍ԬIy\/Ox ??,BGCՅ'&Xfm=59j/]YsELe2oP'gp@ӶpҢ9+o غGU%$"R*Jܜ(]L.KOJ,T_O|52IAi@"45+X]W7<V*(G$útRV6Q\x[Ozd	
)0m (!pi}l 
k°'d+)QT5l·7oB<G|p0>
uqX*f
PtjԒBh+1}A^KѲ.Z& C"T?Ѻڪ-'/꓍>#,Ĵf>.
(wnS\;l
C:^FnE),d,JBvm7)
LXB;se:#s<ҋH
L?jQGwhS@ fjJ_|bʤGրNB<ociLԍFVxvڔJ 
iqRbCV|1Wcp8#꘿Ln<-ÁwQv=^DΚ9Ԓ0,ؚg&v̂̢@:	־0n|ObõmHkU990I/^( YoiJ"9 0{/ЌCﶧ>1	'`ɯqLqvݙw\FvJ!R*"#y.)Bxbs-~M'7MhW.Q/	نp"Kqa]Cp_B$#(P]BI9*;_=jɂ$aNb'eL4[ nFz}2ųӊPWtw
" k:s6Y/[G~gqsg;XO@J'X}8h['mCQE糎7ޗjo>;v+jU*3:h$KOav\\OǮ*
%W6RR81)gHW%ĳIŮHiyLthM9bmÇ-nѧEV>T #*PQ'b\#˲":
8BT҄C(~7K  <LF坱Qtw:_*1Ad0ٳv"3pi( !p}p1S67|h!b@X(^K: $i02ɬNfy<"ۮn.2q8g}3_ŞmeJoXķx<0ȼdّ4mSpy,Ds+Pu'qQ͇EhJhOAMTHY/Latj&l#
t!nT	tmju;<		n\	ꀓ0="QSDסI|J}fEH#&aI*J@C&k<ug?Tj.(t+~Q\LP"Xeȡt{U#sd5tQ--_/duH3u2*3%s)A-P:Lk+ Q4R#w2zPwMSAԆXCpl&CLcʢH:VZQ;3֜@˃)̂'\X ab&o}-ν,<$ZPʵb=uS5$+จQ5^^fOhӍ ܩ*ѳy5BI=kLUls::jӮKxZz@JP?X	\VS^	) 215h$8.8C4:æ`z-+4&~2i~ͿO"V`|ANQd6c{2n܄yU
*/VH#^,/]a&vȃq,^	@p9Z GuLB8O ~=*&.&d#N~x8/;2H]ɿyVLȖb8bgX$xi3 ݃P.`(bZR'B0M<8lA)MX?2UP
$m?Iچ,Cumѿ
%bǈ  gaz*DL<*'S+;=B9O{ dMQv!H@QǵҐ8hNiQАZ2Gkо<ÍjPlT|A62l ԑknCGmu0kxALHnDTyxĖ [#<h*W:-
TKX Q(퉝w:_8UM*녹ml	.2X
];,Kg,g"<ۅ|,ޓ#5_,I-ڣ\_#DږX	Hi(ap'*2-}T)9YOJГgV
	
/@e>X$k`k.ǈn68ܝf594|2	VJ5=S~Znd.XR)qz,eNbBxVph. >Sp'/MEOrDϛbUԤ΍Sc$bze䃽O7`''
PIqae$RNx&dȖe
_Jln`1:#>`j|v1EY9F1=$46u$Vhzv)wCpew	"Q+DDRqڱ적~	
&e	p[l0nLFmCbE:<TĞDؕ(v3wf<:'@`bTyUMٷiE(?[IğZ&ӸƷs"|=p:AQE O lu%4$jHlBk3d
L*;/kăL1	;0 s j'5TJH8*vVdw;36o2;:"b_^M;=LiOlcGH@'<qw[B!`64@Ŧ>($h^[QuSʲ:y_-Z!$|6
\+C/`DPY-esґ,
Z4l-{| ?[Q(1׫e̩]|fjdEA#R&"Z)xP.p|){8uzP\`MT5,otN _(j*B's& `48fZ0`:¡MKAy4Dl3sĺ{$<3YpLE%̧[
xT.Pwd%[C[{p7NQKTt䒩;ɥ!r4kv8^X	Fa_޸0-juO:Blc	NkfgkA9?LCǼ! ЦlCDrG~u8[?OhX
{;}41;:|Cxif[#fW0+Ut*8DE 5=<]j;9hɃInGxD'6&!Ɗjm)JW6l <j>;u=':K6-Q;Xwr>@&Bp66b!J|M7Js&8, ߌRYLm*`/Xr;T$]/UOM΋:T{% 18ɧLX+S+_f<	nT<X{Ůl.q*(lTUbݴ#BvڰԒk[VS(	$E<nCzR'%j֖Ѧ/`4kÌP[_jߗ(%|=]bJŮ*4,
!IzCD]^b3U%<+D+QÂ i'ڒ	̓ҹnMU'|\a[ؕpEQx	V˴EXNpViVۍct 
IɃ1*q9ql}	
d_EEY*c*p^Eɋ_%ud˔50`@%(>-0JH<Of&<|M uYKՠ J
b}oE9yȜE=)dJgE;>m!|;!/YILF1X~4PjӲ|{gTh t([v+pN1
f l4Ce(ȑKvI&?Un[@/@iEn$
R`N>zn+p$DW7	LЛTH}Ia	nR٭eJ4GjD-wr+W2&wsmiD^YﲕDɉ)r>]\)K)_;-	:NL$
YnV9'Qaʇ"a!
H:/BGF#v:8	8 )[<5Ri.u-$O(tK6GgJlaMAo-{@-^"NjW~n"&4*v9I|G2U?E>p{ҡZ`^d]K@۴Rh443IvQ{#kv4I
-	Kن\
#:ȋ{LqU$^
8D .%	.9b
FN:XD؊+!
M5l[VfO]V뱙#FʁQxqj ǘ IziEx |&ۡ@AVJĭ,Ux`{Đ#%ᄶ~<[7[ ",
ƨ?2<!xP(Ҽ'NZ/Ea*WP6d((GUC`(@~^$@ȥcY
+@D./#NdSP߶VH
m5r3q&爫=FAۯ$g8"߲`ez*%Ď;;ŀVX⢞Ly>\Xp΂1kQ_Y#ËYOĿuG*QB
S";-o"DT1G@3D4`q9:.7|__w*75'BB}p7hΠ|'Y%lr`=jh҅//yoL;ƳIx8PNm}NEl1QQ:l	ct

/3.u=ǲZ
!%ؑ\/Q\\D:8=u7ʜЧyN#OytanNFaӞ$${6Vtf*߬9_}_qm߬hKMNp)~h<D
KUwtA8Uٞ×Ktȹ8oT6x^
!HJGmޘuS2mRzpM_p1,#ǜ)O)x-By ?^$6^mDĩ*:yz^
r-QPZ3@1ȕR=P	zJM2<qpEbX{1z@xp` |u(0k"`i^_Jśi`g9ݝ@iQcm7"\W؛3(&%4qiXy<&`B$zi p%["L$/$yjs`? Rb' S{bjH7nPʜ:U%YZ "<Y6Ꚇ^Ipf("[FN&A:<ثZf]Úy@+MUm	Ghk󙘳"Dl6SZX1N&x7mREyRqgۓ:pwPntnFJXcG	28<oʢQ\Օfa	_tFSiMBb	f'r({Z"81h\d%jqz]5@ku6"q#;t	t Gz^G	AFcKt6@_NX/m+΄O
Z؁6hoiZ7>z;޸0{>ۨ~E5tqlayyfo$T=rmJoǩ	IJ!ZJ2A7m"X`OG4<~FW8 ct2gid=8%51Y1Dd;4'N業S	dZ (_<kXc$F2OܘsEZDHoyZzĭ֜{YFT6`VOZ =cq?M`%$xc GB=Hᓜb]1c/6#VS^.;%	Z\\,l=FL\6Rŭ+:Ԥ]cSzO 
IFG/MvdO,~:QHs:9]*kmOfMҶ;JKG0Dl*B9(*{gy\[gJIGq!2=C{>};*,o%^"[v5l鬪car.@u;Z1e(He9JeT{a:Ж
w%2JJpYTO` ։a}Z$lRv6lv+B/O>DŃd9;?٦CO`l)jÉH8 b e1w,3ڃR_6,@2yUۗ$:v$s^fHdjOx@o*ܨ例
7HKCi9=2ķ6t6(2~WXRtF~lG}r8W1Mh&k&+:(dXc\i`x3+[n90%nHm;QBԂFҬǱ8|?eB5vCn}ǲ8RgrEL<ɏ\)5^0
L"^AJ3"h'n!RlA8٢LZ+SK&°~Dꙗ"Q*Z:B4_nR^P-M"yKNDNk|}L2^V|8,af}
jzKHJU=h=	OSj+Z3(TEڹʐi|AnJGƉx,o-'Z!R
jAi LId%leqMK&t(33GO%lV94Yv0dm.\utMvkHvL͋վ7rj6߰	-^	YTxV:*2q	A)/*CѓDHӬ٫HvWdFz[`hFVTsO4ge[PhVfOoW4I{(ڹ .ԑ^v+	g-@x {+RkTMGn	5g;˙5*x:&Ԭqfn4ZpikzA"cpU+Ҋa:ou,6p$|X<lfWgڸD?,GIW|rD-Ac*3݌E	Ы9*2UY`7n&clE[VM|RES쪵*fK ;ZڑyPIna,#nt%y|f2B2``</f+@z蟄,8UdQխP?AF\G`R?(1U8XTheZ9k9#^ʢMQ[/fMVNz
~Ge(|24nl{ǳ}}={&,$LNTFDUaX\HR_~
ٍUh$]knXoeIFs-sc2ﲡ)<Eu#o#wDuVO ZG6d ?d}et'wQ8Q'YkCx[җu18m ߨ}bf`g#sdbmŰU?Q@ *p|:+_m9l{'?t;6WTk/쫾(8so8\^

&Sej=on >:otzZ<F,ϓ1=}ΑD	qg:cb2p/$.δȽ /kJ`n~)=$bmU[	ɼW*
9s#	.zB0nz3~aҲ<+J^}rG$ 5ڻ08K3ݩst/(XJ<ɰOQ`4a5&gĲ371dc')@?:$aÒ)+}{ǥt@/#v݊do3^
2hc]c&	ص"qfpmTSBuk/<G^B;jr{XDY8 ,6N$TLmu"[J*+T[^0d(ث/L9#vp:gA`J2jϠ\<XEɐ=:)FJBZfܙ\vz"Z"K)p3',(̖ץE!:<r:y֍)Q%iWӖt7ReC13fuNz\:ff#fD#r8~5
cuHU1)Yz؊gG-B/yF6A}:[N>E6T"W|WK	N/WcXċ%E6-REtiW#[((29qAY#uqÍ/I)EOdC}
.ȁI]o$v`;wF
IN.֠|u-%y1VI)
a5EdaTy=kŹƪ%Bl!\p͇@UF:Y+4	.x^LD#@pDB0z G丹m+fe{7"#H;s^9޾nx<h(
WÙv|0D`v#fGѼ츏udȟ輩@y(eeVxhy/{y*'Uұy0 El),.\$MkʇJ%*lvaƠSJ
ruē+,,_2&Z9_*4F:PֳvofV@`-^b@- H"~@JT5ha_*N0"
N%@Zen'h$̸2pGևRG,䉎)8<a=0f!;rLqc
9QD4ZNJ}N~i}v9ӢU巇=/S,'*-D_]PSp*FMUp k
T؀.ӆ/H.(Z,ދtzoP{/ɔ!~;|H_솕y1<!ѿ#}*eK u̡+nƛR/+ 5l,\9<hln	Ǥ0hƃmG~vj!9*¸@ml2	rg-~Py<8'i,@!ζlfM
G~EU9*+elR{i
Wok4<?eYBO cTl%[h9Pl$bɶ>9_4?<%m+khqS*iG}&wp:H<5_|zO+Ѝo/
-$_!e:gr
U
kp#tShj1fN'7j__~2[d%pyA,](|3:.qfz,ԕh0i[mFp
V~0fJj <z|[5$Q{^My
we#h\m;f!Bn¹lS]n9 Z<cq4cbw!7
nSU2!
V4fEɍ$n䂉+JOa?W2{1YdޯȘ1`fThGּ};c!=S_[5NQB|OVy@A!wzrpT?@셊i	*6!n	@6Y59EtDW150&a ׶ITxct}j0SnA0<W⏟&NORo
ћV丨=7$5@%_)Owsn8ax]#3i3EWRx1QǅYzʀ*=a__@xnDр",
0AolX:DW,Ƨm#ϖUH<RT	ȲUdf|~ej'J4#
֠R
2`S»wvX
}dşc#'!GCj0^S^#+kS;Fm(QUe5l<4igfd	g7|UC̝$#|ũ̳:q¤P?Ӝ4K~ FHQ0K5dJR䌝/g2A,BH],@W(enjR33!zy5 vWcg)J69scUl|d@mYI;USa񜜃չBܡ{wL1^Yih0/.H磮%b.7gNVT=Y&fD.,I$'8XcPNS b,+"h'BFi.w5WQ_Ku n_i@٣Ylp#va)[JF:uܼΘ_P !wQQ^|
q^Ŭ$_"6)>qsQ._Ntnџ&0Ѥo
xV3inݠe7
D)н502]<@dz\'^
M)I9/xӫ+JK[?3ow
9V2
(R&ml*#䫸&#ﻃ:
Y5Px2!C6JB|j)+9qlR
?̛}$@Hj7evŭ.(N+Zֿ#<t\\ 
5M'-Xz?HPM
QM6#ї#TrQěxB}Ւ>9k0T\
Eqs(JH2a%.m~}v8#r>	˥r4^Wa֏))+<B<76AYN6WNrz
 1TaiXӅ[ɇ:,e"AGRFj鍙U]
$e%	ee3r*J&n3
r
Yg2a0FqKg1"~ӝ_ 40Jո@AE
]ዹn*K
01h{
{~T>lDބU4U}4S"Iz
!ZRc/D^R<x$rdc
3F-+_hw`উ$?^&6a.x+./`.wqr2
P4\и\hp1EȖ1 'd
ZY$PKt!XCxhˬI
&yk]L:_P8t7dH"\`좡:&Kn$8 MfEd x$_&/fEh`\WAWBh=<Zg>5?kLE&N3']Ty-W{bz6x.?Us`<\@T-rXG˙}q4앲VB%3ԠbWDO1E`VVG	zp:DE.
*lCs?{J*I@Y6eFpG^eYc؃d4k8ZG~y"J4Flʿň1yayŖK0</RK
/OoR%9Ty	IXoI@C,2juۧwS^Kd6(_''Iq a/u^2	x,?g\l>4m@O'2z
qkY]3!7JK;}"OthD宫6r ˿IY@>J&>,V:훶].l#Y:1¶C+0f?3;4/b5 $Lx@F
sEI
t>?X7Tu˹YhD9y2criݎnL76SA6qP6e@^o@9<eQI^;O7]10o.#J923a$ t8.HNPBE6>7E>LO4t5_*b G)EAiz1D3'[f
]m.jK&3xj#c\I#Q2R>/^ꨭ>	,o!
ocaׅD2f<6èl8܆/J .kXsi$VB^8am7ʶʿbAgT0
]sY.|g\HT^
_<)ܲR*s(:!dz ?]}E):p%ӓt9ta97Af&t'ۮC:zk
{C	Xt%
vVdwU@
[T *0[`\w/n(CZy!]/+QmU.}mϑو BlGE#!o;0";pi?9p&ZHJVN$A;&$J6>[/'#hw(>NBV"vr5__{0{l=FoE*yШofGbiVa,.@~lCPJ#\c&ʅy$i=vJ&+k%Bf@hhR7iڄM{*hՖtI63YC>&{M:%_lpjJ0)${Klm.gNRu 1n@0?&2PTD4	i$xY;(h,[q9cDt"5y,LM4y#
*H<}c}#w6z[djewi\2]$זYcX҅V df(Nbڈ{^mecg.#bҐcHaDo9hW_9ߗxXӧkL1Wd⟚ݦ*@TNpVA_/9PeIe;)xzSݎN&l۬4޲_}^׸e>-6[J\GܢBxj[I|0*ΡI
JyeVf]'a5yw#k;E'Np;X%Xea&pL%lJ#oSGi3c,pgk霌$T`)Alb֒3yʓ;7:fVkXӐQ
;/4/ZBZ C*P b2pC`g0(,oO!/ Nj*sʱ<MG$rkk14a\qC:BIPJ54Sl6ZC0rZz7ư@F>#ܯ!]QeIc=B'Հ[؂nFDGyգ-]ްRgr2zI$
EèL}reELuxa#?YM<LiK0ak>I	#㑸B#M	Vx؄7BzoChҚa7B6|WA"#3@v1W'(W`9d-)T/	dcY8*(i/IM,XfiNǦf7(I7;pOtrLԉ
=-kK@(
eAX^ν	Ƹ6^@lyy<+x֏fYLϥ*xluU˨F
pQgDC"3ʼzIbl:Y?"{ A$/WD)Ϯ	<)e%S)Cduzmq @DQ&V 'oȘƶl'Rg4ⶑ[Kԩ4
Ifiڈ`}2^zshHUE L+;c
aC<:xW7Y'*lgBb,s u4Mtt'Y/+Li&@bK2jP,M/s1 /-Oݓ8K3*ob.QK.z^(/4OC6#V(A=Ͽ5 ]l#
v"M8g6*|
7M/w}aM?7ہ|tP-Ag:谏NL}7N9"Ȑ*kĐ[QT^Lt0EfȂ8B3uiWJ2wG6o"1?E(.Z݀(/]UЂX*r9mI&˿M+B0Py"2,?"0-J26^IMqZp"+uL2 
3[(#YiЫBLms6ǓK%A
`T
_:f>g-5.*c)Re
%*wqHi<_8XNzAUrGnI!Ǵ1WPXdOhyd8+=Zct͗H^|3)3˓<n΁Vĸ-eQ@FD ӳ
Ԣ|&u.#$PWNRˀF7HHe$sl3{u&@ZQsRrD2hl2]OXO4=`-쾅$oޓ~tC_aVđY8{Jlc<EČi#75*ˠ&$EA1(\h&%DCGPuh@ܖf5%G:ks,p((% ڜfA&	#'I<ō8錾:ml@(3)c3_NY:g$h	TD^M~FbzEt54r?T?Sbkc6T,q
{	V"!`kVRO8SC6@9$B(*28|xL\kv-`o2-bxQ5F^C8(׆rHa@OW3$& 4:qYnjIn;l[jf5L<EoJ̆ZI(zp[`=~JX(*z٠căF/p(MdZO X3)M :T<òkFqڟa(aYq.dъv+y6J`jiH^EZA$
o&hK~ ezb!'oGV]s7b	%E-sD4µ|vD,`G*0D-95̌,X%,Qr%$\ ǁR `H<ʽiuڢt"@aʰ@Rl97m8v/8;UN3s!8/R=YoB04)pchKCȓ\?<5*5ti Xܵ:KxeJ*MnvZ`d l9(;sm|7mڣf~c?X<Ν|1|@eoD=[f?@uysvIR1/,o<QRjI)Tټ1N2a<PE.K$D!(مaIg,͇38:8sӶSqLmOkg9M,g>K*Lƒx3Mh*YY-ڕ =Լ_;YBLhh.7ۘ 	lOapn{|&um4d$
>P幠od(}١HQ1
8{oH@~r$V'HQ̑mQ`My񥘛sV8f݇`I_(vl:*Z뢓l'EˢB!DΜ)Dd/*> }^>Kڰ d':_,}[{HpǍi~hX*{B
/g؟z
ka=A,fk^dǃNaK7_U7?W~0nc5_1,e@DD!mRWyN*^=cD|)Bщ6j4qDcݞ̠Ct6fR	#SJlS].?MSj|ƈer#OgGHh@#xG+onj)UUfжIw1F2P%`	\c0/߅1σ,s"Y.peFyu/ON>#BĐfYT)Enl"Byx +?*Āȭh9vAxlcȆiK(=4`l w8
D1 &S!W݆{(p񂑮`
rfढ़+^wAg
5rэ!Fd5ZBp&|""%p+-ki%3U>Fq!
؁H9/yESMW|Ħx
Yh!y#y3Qg;\MbZvfVFS\aKOb  D]^}>`z!"ƓUn_S1@{1@t?O0\+
?lĘQ	x"#5rM.QM ȳ<=6Kv!MQ$[vt0WtKdTcOKnNuY'n/	
h'^/*uɲ{`h4
ݤLASFo$E{B-Op^.$,* i]rH_qՙS^;ȷ`@;]Y4B۠WԨ*AlJpp;-wDŎ&cͭ[3=_W"=,82 L;V54X::UΖ%6A
h JY/.
q薐~dU#܃!˲R98(nL)<KB7ohH6m2FξN0zP>@71\ \aTJ5V#%1B(	C䔡سH,:S1̣툷д;	p ?hOEfUZu߿?ᚿ%X`ㅼ?x	4-KӐC*Ȯܛ2anBq	F_7ge#9k:8
,))s5㗞Cq@9loi3LgsLQ s/ngm*i&.d2e0r^6Vd8P9	 ?ϰtpC\d3LR^ed
=3)œPr\SrvzppUf Lg|jowF}L3S6Fip%ZrhbM!tC#^Mǎ&\El7;$0MoXAD8(ؤ t|qJr^!{~_sV3+ݩMEu<'gal#b)J9s Z
&ѺJx||Q)0,/!6CpxhS%f#HDGױ@)K7~ZTzS-iV&qy̧$U@+cٲ?Q^"L,KԕHULf.a֋d}ҮLєCYԂax?
_ìAM0I!Kf}gSPw4Qmh(ؓt>9[<gQ[|ÉHy~S\	ȏ0
iqV*Z$-85gLvqQ{ѕ)*b&&2޵7RcZm~p:]wj'1lqODe
TǇDb38tE^Zc`|L.W5}I^@O1(
Ol,.7<&Gluep\y[E'lDr~ 5;Tu%ŤKЖ.>,"|}ÑeF
_bd	L6~L$5@ޮ3HWbǏ-S:\b)wr%-Igv鰆<Ph(Rp@]D/2.h.,K1z-)LIݲhli+X/FΣV*DڢB,@1(ZimdVVhtl_7Y=O5lA޽[3Le4S>X#>ȏh[FEp'h+T"Q]c^SD,﵅iv:F"+VzeH"pfkyհ6S҂Ye'7##mu4I
FGh~EBs/iae7yNXdJWRn,H6SviJ31>9,7Q}MqZ>]Xe=0&@ښY*m8yBꑊIEcI
X7wV{JAZ7yPpVHd͇e(ʖ
WVq$GۦU:r.HƆbz-oF	h]؈/J@B-DLlq<{yPۼK Qb@h
6bd[#Y+5{.]ފ!D*216ݗ?1ܝǈX+9їrA^(DS$gx$Bnf0b4KMm|/NsT65}1SI%[Iz(rc,bᦜpdle#olPrKJ$naX \ZE5OqrT[Km@4V
uB=X A${YlRE̨AjBɔ̝gf#\!z`D|<ۤ-DvYpJrn&Ag$7],n?8V¦F|
j`?`^hej6*ĸz#ѭ4z*G}n%Nnh==6xmzWbG16
]e7s	Fz<2A\Qdv`ꂑ."ctN^&n"jq zK'[E]@=Xܕzi6
@$3-(+<Ҏ,!FXOP!,(
|AQ{y*SQ#UL\lZ

V♹\<
u Vʎ1#ڇZ!
3d\F̺)7ĵ]ے,"`dkxr,P~';مh$p]zf-Iu`x/Ô"^
ʜhȣVhVd!8ibD~t;<r)癿: {YCdu]j!7f>yF?^j*eBˌ[<ğ=BEj
6Kdu@ɟ҃IQթbU1&ƑIQ滜"ReVFR2K8Jz*q+>sA0<Rp@$md%B!SO)sFZu	PR$ՎlCW\el1
$i<ޯ6r܃qp^RZ4!(Kmxm*|RtZF]N|[b?H#kGqi=QevFoKa^{5S9_ y0#l+GOjbS[";ӕdv+֜ql\޲[[n+m'vfǊX%KYcDøImhc5S4fB1:#Xɒ3\ԡ'rprnqhf=DQ0 v<m *-(:t;;ѺP\fGĞSTxl։KXk6>k12"h
pe^~XZy֔0]G
t^[DRPtJSaM
0$T:_fWTAd1O*
!ǭ<Aԃ
2S-܍Xl`%h\
X5"MoV[tZ%bgH­㶍c]VQ^)ECO6pxZ<V%eb*bMTR6Fr-3DǲG@fbL鋽V;p~&&QQb/vG(8ppiYa*+sy5	N3p})Zbhio+]I'Sia҈IMr]
ތ(76RtG`Uy$f
wy,
~=l{|HU/8Q"f;7"װyTc4Wi{	g)rxڌʌQjcn|6_ّr0yF蓩`6.aj3>7AjF|^Ŋr
.u`|-SL6<4F&u=C#5f jb)
ZAE7)#h	d*vuvB=Y?yb}HT21W
@0Ef6Bߚ
:ę)4<R&3Ȗ6hLHԉ1N?9@e9hS½
*2^~lTU(H]Jg]LG=U<iMq5VgFi	^LCiK c:sRSA-*]_7N:tꅙC95"WTß_Vkfx^sp~Fj)KG=&`[ݜA+&rZS0KFdTm"88%={&\Kĕl `b$il;
,x_6TP6g" E	?m Nׇ'mumWaxMc& ҩ0ߛI=f<kOU
r(=m0&Lɦl$7xυ_e.{s7Z_3,q]>o[X
g6YxmN@$ݞ#0>DT/CC)2M=lGr	TӕeKr&}YAS3dVr٠xrww`ښ![<ʢu
Fp-;4Uc7ba4p"LO/1F
V|R媬`t2,л-zezy*'fƨ,β\]OOKd
+Ν2^WiINUBԨ&55LA\ITf$hՕR舩zN3ǫce`AΐMzg[C09v$U#Pc'͸ QhޗlB$9|d:EO漢MCN&m,Na{%bﵼarS
gѡIt&љ3tA#'_ pg-`Ec)B΃6~:7N9 [5LL,2ȋtms
JQ4w*
{}"r	GT
ˢ
l=#T#-<,gW2IOwx<y4`UQ/T.*DмB@5ʍh|%V&fM0azD\M9@]P8ש
Iva'2
j"/oz9P:g2*`tv*U*yoPX?9=xȋj	pi"a
ƺ#+JFCJ,BbE;DD]ٰt^XZe0Q;6JqN\RQl@K.t|M
K.Fk<o^',-$Zԣ<r30CݼB6:m3+s3l hu<i& ,\)Wf<t|. j!1vG8-~&~7;ymQu٨tZu0%zwP%565pWw6Q,[ޢO6y⢒&tB+?R&`~(Ţ_-|$yG;p>ԊK<EO^jr`h`/"2%/Šw<F0hIƴ
JvjNU9_ /;أ[Yr^aLä:&d
F loH0Q
旬<9śb;t9f锚3foz8=ʃHm9h
_YC3YУJ&r}5Nk-O8-JM]$.+;
/_|	ŝ"H*~9v^D0ryb
jg4fu!j@ bg4A^,<[CE3мcZ5ހ!2j5v&[*)ߗ.2o2_(/MB&.FN byaE,|ptPB
,n{dD9r%I=x+Ρ~?O0e}XdST00kʡqR='Yrm"}amo*Ѝ(}26@ᅛxʞRۚg'd38RǀPh;Z9IVBo|䇼,y]1wT֨ $ qe´ֺS-֣uCUpeCq7dB2_y@^ܛ1ӨJhz>ɪMeFC_m6wi1!2
K)%&nk>)4`"lT+/c/̸j@Iߢqch/J
^\N6?ҳUD#Yt*((\iŷ<uSFYph'`S,Q++7~**˲èr/
 3e`i7-E^*Lex73"wy
d*tCS,hgY+9<=%VG}5ރD=ӳH>]\RK0A"2uh<,zҫ_9:{X!?lEZ6Ĳ&91 ,ň0'2O\f+ɜP'&@T8<~k6Xh(}]*oX8 kWJK2<уZry;u/V`=ȑI:(/چ+"lJ3qj9LU97ē\Ͼ"1
e'W47V^ &ŭ22Rϧ&
l71&8PeiV'uFi>*ë7<a$Psڥ"pyῌrpɊp&%)(Rt[W18mRPZɞShde%a?4Wl)ǟyXu2/%ͥesa[%nW{&aM)<J,7Ƚ&ON[4"6d!1ix!9&݂9:8ɴآj)ȍ$ܴLSQT~9h05D[nEFX=Qs&jOJ.7:#Ti2ay##[0Đdb+s½#.`P5 CBob"Z/G=z`Osk:,ckR!ld/-@%OS'l<o2(o+<n~-qK&' ʸOӡ=~2Q&+rf9=v4H,,jt_!)$1R{%/Ҝc)d#bvˎJMdԳЄ1 |l>^9@PyI~fAx{#DAMJB1O/+˿ffwh["?EZMy%g6R>$롰&&!artŢI26I|}@Hز9F@to{kfQw3Mr]!Ty!Y8!/vēb12HdfY~Ȼ6D\c5Lكo&H}`%sarFg	DĨ1y:
VŖ&J..,oHB|pc)I#&w
U_^MP\O#R "P/d3z]b|mT1
%_*0(L\Z;ŴQǱْ;?v#PlϦ)f"9&]"<K./AoHV6:P o3
[U	!Y^Q\ sN`ɉDPDM]ЄwՉn)U{mܒ8L[4!cQL
i`X(yd»r;APt"E?<`鳱#+HfRnc9Fe9+[іXj4W#C*X̚|.]
x"ϥHH[<n%J0PO{^jxƆEƧPЮcȔ
iPsgbgQ`A|:GG,wkhz[!#tb&wDbOʴCjp<^8!3B!hB͈
\γ[ʰ9t}dTZZʟetZWl^oRDhs j$GyBӐ[7i/FXM\[CHX_@Liep(,
7\''8]4M K,=S/&OBŲ/PzM:#W:2
ǋ0QwkddB֝(3jl 4""'$}{d&vC;چ?%8D &݁%n\9d_R+T j8A86i2oEox!WO9Q@fxwtr⋶<ST47 *x0<vʏJn
+bZ wCA1bn5$g!ُGb6e^Eǣ
$#C&[HW0Z`ٔM 9	9hOq@
Z\F3A
3W+?Ƴr1$Vd!Y ;AOӒ
7
RJ7p_O״+(3q1
JߘIvet]2C͉=2Kfg+NPɚ=K cA)V`˳TfEOfY_~gOuF
+ִxzٖɵF%hQ8=/{W)e8m`OjKIp/7M)iC[,8-V
Kj+؆SA2esݬeK*Sy
	kdfvL5k8C>Qn~vJ)T8+˚[]1rQp?)aO/Z'xF}X%dXf\osQ
ĽzrÜ#`HyYo6fV+lctϾn)cY>#&=lvi\)& KH9K%VLg&ج2H|!,q(L@O(wmҼ)iwղhS,	)#z!T-l!J
5.lC8`J8#Kyt0%:("|
@^Z9FI9{w>X(#&.i
L&0O;(s3T3_z#w
*cb/0л"/B:wecv;U?LkCZ6xilQ]DX3qW 	<Q:lbIBEIRQ)DlHB)B|!#ΠRe9=2/I:mPx*_%O>Ɋ,gMxa&H d0`تtyO<M_\rr69<~iV`E{MyeͥZfrG},hKs9V`PEAkZ~wA2*Tuأ1+Y_Ɲ[tduy+RǢr}Ym]cHz݃N'ushqmq~*ƃ±iwxDan>(	0X.ثPFyO
"nϠu
PX=C
@c#&3w$mFf9ϿSHh5u'cpx(ēCHgڒP&.&v!'PZOC;Қnxp8yV+hv ~ytGd%~Q
y8
-gGr#Jlv T~Y*:3,@L&Qg	>Aw8Vd W-7foťV4Gpy;%_e>C8.Iɧ	<cf+3v_|Я[έ79=KiΫ x"K{fDEbGL:G¹DysHd_c?ә"T
\3	wC
~Op5-5Bxg4xm"l5y8閪DxBp+l"x$Pei~]|E70FNq[7'b,<89`ɝQ2Kq׻62ΨJ6l7;-iݜ\f+b=i!36K]9".Kʻ;a&<Q;YG>BqXVF.0CK LTeer`*EE?9/Fe'ݦyUdD|1R}\<UD5m~vr;g7&I#2-m=FWLRPF=MtLDʁ*L#{ rv4Ł#ũ9P񾢯P'h&\,X'}EbeZ<K!.V*DW4:PôhK=ZY
sL*6a[eJ3\"ΓD]9߮$\<g9|

xQ@+9
K,eZ!P+z!GVkbI#R$Le,)`04;Jܸ.
̎Rؼ2
EDVƲd?)X@+65CT$6gs&+- {^ԓ1*#G("}1/ʓ7	~)R{4dnE~j,h<,P>b|*8ǲD>iZĊ
մrԍ)h]TaK+Sj[
nL.aXXKQd4Y7hﰂɯQD캅.tK?*,yWJ&apHݢ|z		}5&st?xԀKdf΁!dR1<r
qfAad+Ƣ,a
5s@.XGMMؒD0qZB;]Mܔ\Qم\s`r9[Ea~	Dx${d9IrPM0
<R:bopXC+3
'?b2̈+u6>D΍&N!
Zy vl#,&y!`$(bK$S5܄DsH	FsiCyAfnJ!܀;;rEn(XcmD<rqO))Xl C~xvp;zY$nzWl)uq;;;e|rU `J'V.N-5=̔0lPLTYԢb@h];_|沎>}+ij+?v-wq38%b{}0s)1$aM2\`),9;z[ Ry6/$?ڦ'tHttQǙ6GS*Dd麆\3OS+KXy"-.R0Z\+vMmxpvog:gi\0>m#-TT81\ʔqQ>}R~w&buJCqoMR9ޠǩC>4=̵{px$=Yf=;3av.Nc	qcV)+#ݬBGxG&?03;*ԞNnaMFzU<ȕj4˨|a![~66RE@Su4Xdox* X
E0ivΰ De!AW@%p&JГ#(VڱBd^>
ekZHP(Ý3D3@/{7J5DxcY3${3pV#iBGEV=?.zC?s7
W7Ɓ֯!	 d+<\1
G1 VC++_LH2K{xZ*5ÉvEh֙|+^WLx&W&'(H uDFo*F:IBټt*>
0q4pLs>lqmd?ķ.Y@bFXݣVm48P2
]7Sm1OSPŜGTy9Y7q
ȶ0H2puv`h)lq&*6,-jjᝌ "]6*->oCQ֓$,֡!\yffa(CZI8Agᢥzsn
"b*5/fyS"q&R}C0ek$sKȇ}2MPٸs0b-lhkDEDVg,P:E$"-dm^98J`ƦLh&H>m*)4+G|5wEr,1<!P)H>{(*3Rի)eB:(\4#~[*'#Y)zUF|/♕>afK2hBQ)rb9]ӵ?r2x/F/taĢW.
ѥi:oGQ9&aB2.APϮuFHLˬ^Jx$e(Ckx}:EN5z|4w?RFX18({K A$3X6\2nf)$}!%-VV6o;s?xJ_ɠ>!.N"Cqd䣍nlęfTu.ҏ'VJNܔv.k"RRK#X,-)i|CwAO"ByR+X%BY+MyZ>l 客fMooI凳v~ kɀAF۵_yL>H,$mRH*_DPUcm+/z{q߳ح̱#AՔwQ?Y bS\,!i\wA0(uVn$?Z2

)pbPB.
[H&bݝŬ7SBGUvqF(#&T܄y*úÊ߻7^
$/]$Fò2SBl	c˓qEtB˅
<Dc۱IzuoĺB:QF-(VñV"7\`੖+NqtXR,	gֱɠڏ)x'%iLvAr>&a{4|,	%)ު@UDEf!'YxOxTbc9
#B1x溏C1G({1zʑx:Sv .[Xx@*+8<6Cf΋bYE`fNL˝e)J]U(؋P3JNaK] ²zIQyjf&~/\h^B6bOq,˦ fe~;GDnY-vov,hʈiE
wiadKLQ~8cԺS"ГF8pr'\ȴ&v'D Bag䙶ߜA昸,)U_$%o99'(k@>2z'u;)Pd3[7
c$75	肮-x-)g6>T쫙{R({;gd*iFQf,U&Iz/(5<`\(	d~>9⋴JI:,=iWό%38.7B&zÎ8C|FIE(a~\52B^A`n\<
SE SiBCӳ+؈ޢ6H2K6csP%OvM"~]X%[U@-)]ޕA0Io\ޝ,,߷r_
	!w
lsR56F^=sZՆeNwީ5a":,	Aëd-[*P6+4g ic5@#x<y x6~<x'Y/n3l<={` tny.X<f/U&!5)PdDd|Fv6rtբʴBk"FԔtV!k 8PFM (֋9.;Q-$^Du	cX!;GwSJxVe+uU=X>?LY>[)&ʺ"'ڐY,RWHa\2\<hT&[I|Tzvf54Y`;6{(E3R2 qfs)֪P9{OAh,ߜD.zZr$сݵ8&8Jl)T6#QdITDilu
is4r&3NbZՙ^UGx7HrӂRb3_Mr#%Ys~ B@UTy6TόQ]Ntg,ZOܹvcufJ<5̏O+vQ4u9poꓟK)HDqy$
G&
<"Yܪ3%6\0v'wϟ~(|3rdM&TI<᷈H2K@oZwk^86f/H0)>h}e0[+e 9nysE墴N	[.q=R>f	8Ay؅"rU4tt5INFڥV/zÊeiXW6P@Udoq^>;D6Wܰfv#mޤe=渖R{LߊH:$Y\4f3ˑ$G蕸/\r>Q,1hLWeFn)XƜ0([ҫ?( ?^Ya6W W-J4b'O"^O|Z-!x8UPM/
Tro˚4#^*ǃz(Xudʂiam8⪎{)[ klv|ez%7H/ꁾSh>	賑c5=N"i%Ƴ#\rࠑl@wAG/.hGA^-]@\]^dnf3Q޿?p=yx	B TDC@\7ɛ=h	2o(z2=!Pj#yT OƎQvqԆʖo؆.4 NGuiTeGTƵl~2%6WL`?JuW@8"WW45,ZrI=R?FgM8,JEi-Ա<VZ,sDx!U]+S.D)3bFq"/LcPwszeu&PcKf8:7QC*Z㟫F8[QQNV曎5/wTC)+$elG*kdy 9
<[誼VxD4!$\惹tݫcQtIsd*"iZhbN:b&xcXOH'Rvm:[uBfHb)UTV186ijCxi2zT^4,Iޏ8`"sf!ID;ԄAw|
KP/(PxLD,&H$iw7|O@e;owp;+U 6p~eTv532`ף*]7Shp2o`gɛ~Y&D_B'}m
ӇOL7S7Ɓa}#I|,\ml
Wҍ93x6YcNUt]l
`{' nks\V-}_	REb,<J_XPOCBcp_BqW1\95!K5#'IPs㥫[K$.d+#"[9ᙎFsV&}Q{oyVTuUeh,tVxJ5ILRbf

w(JrC$4o1O!nqeC"_'S`8 _*ɪ0_wj/R3lD{.Vxo-&Uf8L7;M8Λ`YMX8v)D}8a+b c~W<c2Yz4@~2*.;cd	QC
L\ JX*Wjf=rǩN9-Y{ m@cإ3*wSG7 \sUC)_42~L[!Aqq=iDfLbhIlzvȐtdLUUn*+)Ip	ĪZ86ynWRaC*/D\=X¤<oVcqhxz߃	40Y.HfKHx
H!RC,p)PG
J=;dr ׭sfۉ|H^nq]3c|셊:P'^
Qx@34 :J<,fa1&U&!@"olKjE8x$%]á#ut[MxTUT0üt''-SyGϭLQ- ,>͢d$ 99QeSXt,R9NUvǵquUcQ!`J<KKǒ63_E$!+kOW %xEqihVlJoAFikBE7+\VH6-59JHex汄jUю,GO'B˵jEaz#mSV˺A2"|slشKտxJ3p3*D12ht|,+*}M4:2آ<>;)~ڱ
t]e,	L@] V]SeYy2+Er^:99 .Ag8 y7:3jVjٸzkIp|,j3OIeMW	@VMDz+6{LuZuql0WI{<EfuוI($7\܉~VΪoec~?*zLm@yfȆ| YA'2jR]8&$jW[k	}'Lځq4V勪 ),26DTOsPlAp.L,\	`W;[GSI*.KIG'6ywp_}ntw^-zW3(8Z0}KrPtH03!XLLem"69Ad,J_Tȫ6p!u%y+LQ?:lY4qd%(OɂN4)Z ?[ݦ1VLުd u	N9O2})&ݟt0*^rJ Yje==D6%K%_Ro5'(SS>6dFҥɲ3b~!<<)YBc*.ݕ%6%t,ƪ"tt"	ET.i`<fLhwpƕ$gԿgctEAv(o|/N>Mՠ죖g_
h	!tړjs@0$TTC:d!仝&ߎ91ö:QďMnh_]zx󵆩wzLJ
X`?b+_㺩R%+N?
PO>1>U(3p5ɮ7$6oPá`Шa_&ŭxck%6{Q"vup\nvk/2=	~$ک\=~lVp84c
凼@T̠17b:HeP@?IR1["-9xaC:Đ
@ܼU8e_ߐs̓9<b&wDR.lSje/J};ٶLlڃ37l6U1X>$ufPVW,8(qšͮ,X fFRlp$guMLf') ىN[RTET(*# R,Ɋ Yqs
^b%5YnMJx5<ډ;Ɏ0LW
r"WkR~Zd8S
)!<<siht_SLh[AIƋ@"F4C:Y63nV-M]RSes7C(e"\B$KYokO&;)5|c6u/Γe WhˈQ6yj,1i#2N
Ф1
s)
:呓ı)J9I]is~1^i-6%'!qQI,![qHZia>?a0}ao8L4*ͻ-+ 4$G5dN>a'_e=	hl+j%2$	Vp7>MT鹬8"7چ
,;_tnjvZ)*~*7|*~cM`D
Sq@X湍9F&mȦ'XȅH;Q]hqHCY01$`I
[8szy+#
%dx	ElhCeC0d{iŀT
2%;"'b+q.I!ByYfQ?e7)mijr o|GI}
Q*g~J<<حQ
qv$ p6.o|Gq}2*q]_g}
!J~	KpNN=hYS`T"@fJSD	k@򐿄/ݩ6_~u5㢸T=FrYEV."&cR^Gf8R#ǤslܸKfIB}A۶KTy\BՓ'0ұrLl4`fKnZ#?A͏ %֮sP3:bs~!pؾЪ"	g6.5~ Dzk2"Y ?S7nqUl~&KRg+h@!XbVE&Dkhs"c1'N *;L%Ɛq%xM*$$וx@kB%~fYlex0- 6"OV	5-ftU*{?GYj`lﺯ;/?vrCb&4*<a+h`f"5mgIhobL[3CGC8pnm,/Qvu7I whXm
3Ֆi}U^fQ}U?ǈmc!!y,ou"@CEߐ/᨟T$Q	_d
MoQI7\$NA
еIiif)*P =fCMFBfW]6Dz=-ї: #= SU6I-2MB0mETIN.`Bі w́UD۾qUۄSvkEA?ie<0-5Mm_rE<]Pp:zR9V7gS>FEZi(՞ @DHj/a#|r7h+
4Qԑ &9"g$W0ڠYv;(],s&It8G.EsSygkF/l˞&Ȋ<DI64#M+\LB39Vnn>ƨ̋n8#qȤ׊*
CE?$dŘJV{>B/ա^oAigM7u6kr7ZCGw&LRbᫀA>>Z­Q4r</We4E'{2Vu#Cet31~oZ*? V9b.^ɱ`
f
v_U^O\f:|z囊܅<ҁz6]hx
B}ŧC:2"ko'8hj9*)FшJxaEd*Q00}HҀ &%,xBbXCqߟJ֬;` ~BdB	(^-VShP|/5->q}f[&pA#EE*Z漭J*L<yY.<f؝/42`ixװI6W-a!ٯ&缑FW268 ʾKH|YPE,Z'#h|[FT
zkH4}HGhgCRH~jx aUv+.|[ۤ) gȤ _y*
䮳IΨ|4.W@m$>3sD4Q.qv*XW9w@ Z	/
AZ|94Cið7nẂ/L׀DpzZ<hc;2=F,ZdɨO#Pϻ@P؆rےK=jz%&#kcC/ɥEJF
wgŰ-LgmrMMbAՊt7RE$qae]2-HJ>~-\]`nᔶ&RiUCofF5f4NB/8/$(a1T3o IFOx$|FϢT8e{MR
mi`naYH-F#ȿkX9s|U5E#6A r]"AKRxuդcZSjDwŘSt 缟!vsy;T/"g	TU{՚֥BӚ$4lֱn'Ìvo!'<l5*_S]E8OeG	JQ<ׇXl)H-qLq|#)HT#'̩n8g6-	B ^]@,T"XjR51o*S<1(]T@&b+%SoIgxĴRh10n2Drخ
BR	Bg8Ϸ2EJ+n+"REJV$#_G1?`SXZz3\Gji9V"W&hqp|	>3800>z#/	xNZafH߲8:_hDI{) LwXkW=28hHpy].#QrO3Kn@BҊd*I<fT]q=_I5q.脎@,ڂDR%39zWCZTE0w:lB{gݦ~et+8SļN@r*)Zek3C6njl'ȩ;Ba֑JjRʂ%{CAaJ^v ^.?Ƥͦ%
nsF)
[<* L}9,=Nf}Y,9\x%ϴH1
r*L(kT
d%9<K#ecϼ)բ\"e,+ރFaY*w+>q)
Ew6}yC9.Պ"+crATsY05	<jT>ފ8-LR+PQmh*P»*ET!Š,c6%5@h<3/hCu-\o	lw}_8JM>/QKԠ]ق=yOC&'Kg OhӇ13%UY3r;uD \$|(q@繐(ep  WCNpe9zxf43aRgP0q$&n"E<3Y|`*D`ZB2ІP^n"(#zgBzB)
68.=Ȭ.A^x' ,BzhMl&OfH=2=>LJaՈ<ya`̱?#.$v>pr" wP3^kʝDpȄ_O^"''7v$HãUJ勿u%4#q!lNlGjrɡFWvͺHI 3 >y.lAkP5MEP{N.X4lYRܤ[AYXN^zbsJmRת249D~ų!~D~xTҭ24d
՗-g`(~cJ^lvMZT<DCdt]S<,3hϓ8T#FN2@YA*3\|,r:i:/q$gwb(o'7v9;&xx
_)$}gkin}
k'D]/@3I?PkOr:?&+u|ȗ+K7n}uR޽re }8B%KV~q!:
Fo
(MiB6 CӪg2Ĉ:d艕p7,yI$jޞ0VXY/X,'9odZ=tyaRO`[EN	0DMb!`;@@+ƥD7f5L-32afw./:|6J$C?+)
?[]Ra'+g`bL] 
NT4ѼȁĹ/(X:{ͲGTJLM䒭dk:IԄmM%&Wk7&&zF!٘P97ԠK(@C;@^6T"-`L] >Kbt\~eBH-
8/zW`T
UnL5PeQ
Vi/&iN(U#(K`@CԀ%5ϋheği~&.z51>D}
6@uVAa9h&~47[ %EOصy\8c=eă\i~ߚ,4d1^)(<)~9ΗH%nt>8,	0< Hָhn X#ֶ6A#`|V@Ofqmt0\ȿ=Lc%O|bcIН'2g@/!ɜ/m71Sy4wΝt#^ѤabsZ,y(%*|toX*].m/2<] ``D
[_<j2hf:av_aVJOO&ș축UjKvLZ&yk~M#JT吙)xk,8iB8\We zޟŬI>&CPɤ4!T Tj
jjJp,_jTNFЀV*KIdRc=ҾƸ5Yo0m2v9S]Ֆ*!8:̈́YIL C8p?m@S=ʥЩ{۰h,g\@-vDH&P>sjÚ;;{Iݤsd|;|
r)d~7Viq@L3m'kY݄⪀T\1-g	GgvVVT6""Xy
#3FFST  =.NE <ӻF($تoKtּe {R bݯs35&:<。zx7 ;*THPq D{̐&

gf&1BU;\QO&rD^,! HVe\&P\gjBEޅMz;z<ZŘ]Nr	HWe{Uj㦵|FGH6.4Ybl|??حydn
̝	(eB~*&@w~x/'
K8-chJ˱T'%zA&6Nw"HZEOT6,8(/=#俣 ϚlV}.
WW [iѬ_aIzz,A9UK$FnLWrxz<?æiJ(ֱޟ0%l##B4[3*-ҵflu,0pjE2qD]|>ȚNS%QY|3xF
a;.<PNȆey/|eY'R};	u!]9U7VWDZC-lf>E_PZ(AKw	oR#+n& GPK8QYaЅg|a$
Ȏ  ƽ)Q4%Rbp
?Bm;MX0@qJj]-rDmwK'Qj=vj:$_M3W؄^"1~aBi:YePzn( I 9_fkPg
vdOfgS_ [v3r7Z356C-v`OLf&*2@wӊr@yfK1TWrkEA:b1gu2EG,mNx7N΁̅*m&Sλ|RhPBp3<Z =f,iXwj#</&Qý,;(]4~֘-}WN(: "]P@j*BCPMgZ>4ATgKJ H锐dmpkҡU|H"M#zaĉ\LGKCbuEuE7L܅3rePl:uZ씷jIc 4lJ7]	%؄]O\98/`")9Ҩ/A3x8~2xw
C5II**dĈE16Af<xppgB	<Rm'\$}6NJTvTCaEFh ـ]j8
{3T4"Ŝ
0^i2`QNmsdU0Qa!)*\yYwýW%	`i:eY%sH -HU%y$kodjM|qZlR@ HӅJlbK3D+C$]pc^<0+	`b=ScEJёj+w$vK $rS6.r8)_QF3O'XGp$P"&+H<9i930a(MZM5nsc3Jgc&<
Z_e
~MG*FJ&F+jV;{D G93gh[m33\*Q'F4GC9/@,zBDe{'x퍫ojx[pNÂCX5}V
EJB
˅Xu;8Wզ,ԃ^N`|6l葐z*mjg>1ʎ#&=
UC3;`<nධHOV*{"V0:12UwcZѶV5	<5E͒ɾxְFU&ԃD
Ɂ^Z;268gҵ
dhsg2ڦ[ m,lsW]3wVr $4HGS7'pCv#
E]HՄCy UkI1?R"B6:	Z2| MZ簇O_CŌKgNuQu=,]i{7q1I8J˄՞ׂbNK 'hprYdrGm  w}9rЗ}u;^HKCY|J>șKB}k
}U51'|S]p|Y)C/.$rl(.HPke6!kHB{yT=-Y-er.ļ,ʜv74\cwnlyA_a!)(0Toj%jR,hӶJA0P9;%: ,_j7Z16>YXﾣSiɞm`;Ǜ
HkE*Sju#Q&{Q=*b	zSG3+| qV$}ECT 0r4@bfԔg|@:j.`c`=nҍ>uҐH9ۈ}_j-x&E#p+j<_qapws7CڑT rȁ;afuWRį#ޜ _EWQ-E(s6IFF)ǒ12iN`*ogs+ĿdB*=ɋ.	eN&zbHTp#XGÏȟ& X-y?ZщI;R^1Il0REe2)2;o&J"8t
,6lcKBMQj<'X&l%w6"g:XSPt	$hۢ>`<#mWx3Q#HK ϕ@!hHHAW9xQ廨`Ξe?n<qxˬHXzHJ_FJ?) H]Ko1;vd/iVRՀlYҐ[0;;9+=b=̉7m
uFEfrKD҂|BX	г^tVs¶~XS[bH#x~YtTrQX>[G[5=rӨNy
H>WKׂ(,Vc!fjx] 3mNz%lWIB7v%8	eBDE2<_.Tֹ@e%꤯c~{Q3ߟU}Qś$%@_{p2ЭF~*[)[Fy鰦95en_WB|\IO^v6BHBP*p7V)ر?K7Á_3yػ0ϫA*,kV`7McHќ)=eKpc0-D	Ɍ<w!EdAS?~>Ն qX$ny 9O'=	@#Wy
{Vz.tdZsթB<D
KgOR8߾2xs5aڦ9h
FVѻm^]F|)vXԇ?A.QUGvYYM' l#$,gaKʒ *P"/!<f;[O~CaVr'4	(@N&SL/FddWenh{X!}+`^KV5bޙxA[*޼GIH|DzO KoGG%bd2q3̇wF1[yЌ!{+C~"
3~+9R$L^YUhR+:$ؘ֥ރ
.(I0+\Ǿ
ls"fͩ{YyǀGW2CA9,4smm
HLIf{U4:E1D#p
id͑COǸT݌/`/	9 IzmҰ.o-۱jngơHtJ_y旽޵md+ulFl|D0tt<cԀڶm'yj,	rnm7̶)#<Cz`0ffy7l[T
܆B{Q'4CRXN"HZԩ^BL_bNF~2{t+Q_p9@邟HD}\	vJznf`M
x=%0	ls6˷TwD2ͭ n3SVA`<ZB1Uqm%YtdR_N}1O"YX
0Q+Bݱ̆+Y"SJ58FNlаCae"1׏ӳD][="`nUeBg'wAGT5L"$N:*G@$ylwcf=<2T:wX^}.'Q_?zLʇYH;|q+=Em(:<ޮs[
"	`^ΰwKozUJC=/MG+*qT5S3t)+\d-5kDW=ȓlx-Y'U}@OuD6k"~O+=Ȅ6$#'fb8z̦2ɧ]"@	%Љt\aliB;:s=1aY+qFҹx:|'Ǣegn=%g3XS5R;QI\*$d&.GēEN%F^ϵ-wIN8OȽFtZ`f5ntt@ZN,	V .kXAa2 x<vĮj=Ģ
_dqן pqeS>J%IIEu0FL󹠹zc'	
ﲊ={&79`zqy&|	P\flbU=LV'u"";|Aq4قQǠ'ZZ"[?~й	ʛHN Ў61]/[*;!x׾۾r8D>Rj,R_tTʜ.~,7O'l6leb"b"ʴEq-)YR|CagqVkzRt+č.ȣȷP"nID&55_˚#>Įg)%yAJ1Z^K_V3@9*/kcF6[ǁΨ:!BlǃH5Pm6l<'Tk+'fά3Ѣw=Z/r5+8hea*. kHKR<(0}-TR#AlԇT*BؾÂVXnkg@Pwun;$|=J+S:0gPT@$Ȗpc)CV
,1thئ%ĶaV'z#sN9.N`'|+wȰ##`h|PoF:&]3HZ7*dR1Fz_;6"GF_VtTgFmA㽭zI!ޱ\	7d2b<|JoUqL"@-F)c a~U8¶j@q WƑB7rjJ~ 8/x2MxeUצPI;q87[^c<I:D(Z -$x/n%Umvbx/<>ͪ#aȓЄTAL#9"Kx:\4]BG9S%tq!fEvT
ݑ
x z"a]8}<Z-馚[bI2'OѤcKaaT	zP9!s},}=%m=pF$*8q1ut*|Bb֌PNRU2!}rf/oqg4W>D@irU[X&WgIVB\*x6򵞲M#FdtÔKNaK`hV
WRs
)X[93n/D?Kd4lbX+,'D2Qg_`S)#-(IHGm ~M_aoMf~*:kdZ&b2_Y%%kmJok[_BuH<ɞɮh|@50R>ؓ0͘㛹_b Df/
7s=_D#K15JDŹr+>ע _Z&Oj-6*#o)C,mrY<=)DG>/03p̦,s@W⍿%K.٣(=+'urYq_v/2t#^iMPz*W3kTI	'
盼C2}l;yu F9:r#swҷf0oB4',hv\BBNi.:՚kxccq
Y˗:vpmxDVd^W<
\SqktƥRn0 	Hʛj?i]ݜ|_?ŖR0:"ʍOTJ$^XeG.yYǴy/D<Hs@q#%	UTgڼΙ
Iz%TA
|-VdmJvCJOYCeKLB&
ufA"QxUrQR5<&G5Tv3ȷx.
MP"ѽй_rJ/"
20ƏOE?)i֕"/6IT&!ܹlePƙA,\(R.>5B/{aRh'|c[QQ۠@0^ލ
Q`(k!n4c NrmuuG
CTSʟB5/H[#K_ 	x,ő4Z"
)Cu	SrN@PZmBt75zɈP+@:huBA5Mx'j+wύ=$Au49{zvY"(	.ug;Ϊ.kgӸ
U4Tb[&JPr)4|١$Hl8)*eq4)HY/7~%TA%ɊpZ@rxn
lsLkS8#_!mjxe)p_@.U1<7(m-O:|kSi!B^CPfrr%+9-AV/ȣa!mRyFn}-
8DdFMQ Qmf-#N7\ឭr`ݼ\Mwbљ1!R}ЀuB@"Ɗ[oͽTjL׮KD1;e		v7iYVTϨýu ıHUR^!]ptP{4${;)v@%s !|ktn_%MeD&c{;&';c6;'w h_po.ޑĜدEŤ:="q%U%xqJpX`^G*va!Pi`{[G]D_y-_ǠByL>(ZH@Lt^X6.󥮩*ѣjK,{|NU$Ҏ)Hp'D|>~<Ii5Wf5D!u\Ԓ&kxGm4 u|P>ti.]:L::;#E&?26ڨD(j"pe ԣׅ$7GOwe`-E3?rola}t{*n  Hn0	p:Lw%"3";uzg"Y<BM;wGZF>mB+|/:\o%W 
Q#Wb	7EQ3_̭,ӏU`X@?᥈p.\f;H6:c
f!b\۔;Y&j"zE1%ڦ1@nɷ2AswOzSx3*pX|yYs e  bE9 -8}öGəX~o"RM˛_פ)0Nq:Fi`LEL1QQAX*&U_s\\!R$&UDy J9t~
锧-]s nUY*tK&z""L
dH@dXXWTd.J'߉F9YKRǮv,-ćJ7&.R{QI%-kE`IAYPd'YHh"A&5}zMYQ^_laxNxccaQa?7KBd%fcҕ䢙qҎ-k<fXl֍ [+='pۂ&#ܳ g( J	ŏ
kCH/wxՉXfC=^]AlēУ6m<:muVnj IxbSgk>U'
]JkpzA!YD_H+
[A'35,oh;uC7:TBK;qGw3cX
~aۤtl}[_hpWbz6)LFL;.d 牠Wo'4!3 QJt('XI[^"z	(=a	H/Q&Rs1E]qqŨgD/LG'*C#֥mwW= E&VϴvHuK+Ƒe>z01AlbH5CX:䋛^<H:y[ C+&
(4&pxʃRi3(&<OeTK:$J<2~$P߈Im}8`6A;`5Am?[
eX'/TuhzqmaV!*ydf- h܃H	PrkO.oVUt9<J$z,;'3ݡoJߋ}&JXŋ_
u_apF8fTަh ҁ~(9Hٮ&R#9¼ %RSCa[o⻸|U
>PY-;ҽ,9b}{Zn#6x'I&mR0{DࣇP7d>g`rSSvbhSW +T0i^tѢÊ#( Qdj^X!Ƽ6gI^Ab@Zr- lA\3nLc-,#潅w/r?;C'f;^"+њr<U'<˫Xx:Dd֫>xW?k<!1.ZumTE`Rb`Z)X;:HW`mK_8Ar9	@vgWq~)z!n8yثpE!rkL%ɱL|Gʞ*w7GF6lBN8v#%_KD'->lR)솃xIl7=
%|n$_<")0 %lVx90XE(FO&)+~NpO\YoײqH<#ȈFXL OŌgǌ:0ȱ,j1^0q5ӱ,Kp
.]9o}<
)hؼQbTKM-YQjVh0칒G\"i\܋ڳ)aRէ!yIQw-`Qm=\kd*'"9{MS@ًr:@IZ`PL&Xrt|MR"sI9$^ynqOW;)v?!Ogq,`kY[wxT6}2pљǷok
A3\nW_Y'~«@|Xۥ椰g̃L@Y(RQO܅X?N􄜀LԞB:P՚?PfZp`KUb%$_seXt}X8L%!h'͟IkGUuz!BH%+X]<U8^tɹژ#|@y,`k~V7TN@D3;	5>LNˢD`J$t=s򌳻E\dASUg+T١
|"^mד *0-}䣂
w0I_zBI钭}vwhﭏv*:B
#lS\UR
⢆ҫA,W%?<ؙk`o@ٳl̑j2\AH0pw!CIU=r.&&sJjb+)CP5IJĳn\a	c
 2!WBk5tM,^D;f@II/*:#Eqź83ī8IRy1RdGnRt[I526 PdY6ZNټ}UeV9"Q0~Z؞HH*Od:dW;E;psf)oWjpKb~sw=`b$&Ds	-d+9)St
!MAK}Wnӑup$!HO	(N)oÌj~*rQyaBTX#E	S~6$K\磸YZ0UڪdO] BF1Zjz іwFH׊:MuyXhV睉FID.e=$̦Zo_=%f2>u8AԤ(JG<Hp"*x$[p=6.pNl&E<Yr\&4˨gG5ontI,ԞRЕmѲh0^
z߹glS*5삨tAnt_sx*k|ΩLNfEM.8F <LCRk%*,o<ĉ,"ZfdjT԰*E!ȋ";cjrƍPJbCdФAx	t2e2)@`
,B]շlj׷wD$9@"zPun)<l%f]]9ʑ
'_J^9cC&$Nj5TmPH[\y~ppw$l (@h\"aѝ2siTjJP`]
sC	L8*?h3+lB*-- W$4
U^9s8.ezy&|+,]]{\i.QlC|.QHQ7Ec_wY0 hAX9?lJl"χK|k0YiZ)W {d䠉rzm$
%D/Ryh#k~כДQ!<Iy3s4UXS)!pbd9+ᚮ塋VQTsA6T4>D~2̵?
'2#:2 W%Y"&BZ^cm貲v1tY
ʈ.bsF&ZVh龸	La
+eۃtȄ9$2lϡg1P B2m:3N~<Z_;zV/eJh؄Ld1]rYm=pĺ[<ȓ݂M&C]HFB߈">de|li2`Km ʹ9 @zji!7.Q"DR"8Fp)x`"tޓY̦ƍ$m%LPw9t?ŜOk尊k,u$ͥhF6W簭Q
uVq%[.H,ҪQC	WF(^K$9d:jm.0Np($\xLR\e , *O D
[d&9mE>qȶhs6Ol$Z&cRݫQE(P	WxUHda乨n/ZAeQ_=/Q
?=Vd̾BL*6~"RS7u/ȷA6`ONp2FǼXLbN
8iҜ05T7CG;%3_KPqx |]J͚
aJ=zcgvּI(4}Iq%Ф)V:d-bfzCR#X4[ "~rV 
We	kF/ @nS %$c8+i?PEE!}>3kF2up\MNЄYETPzZuj-~&Op
:uteˎ*!KK/k \=<cJ;Bwׂ~/#.︩hR_z̲>/iRYxaZsD4Ɂ,h
N߱pa)	d	|xdhe9tɒIɔx75y>Dcet.#jɿ3Tav	xS"acÕ;MOBSi^ <JB
V]ys,VL
gPQ9o_$>OQDiy_pſV,VJ:u1`^U]Q)YS<*Lp.a4Oi:60
T
0
dQs!N-;AoJܶʘŪ 6K=ef]웪n	)¹ bu){Vg(uдVApC1!"-`\/m$O&ͪ61M?/u@і5-6]
f'h.H[@HPeB*ϑu:˕rBE,~pp^Eg@֢וIZp><r \%
:؛Z*h'Z~B!<ԅd.3Ek~VA5#<Zq`?],bxU#BDf.}|q.+SdȄ,# yOk֯*b>XyFJZ8fvv9UݻSlGR1
FFAdm!BOc~#VhW
g}A3"cڡ8ƈa']9ݵR.c^5hoVjv 3@1A	-;hےׇ>:1֝qvHdPPA1.PPX-8<hV=*r`"IS1|bj
a
F 	kt[)>?f&Rz\v2̜H2uU׵rK%!YTD2>NUŝXpH&\UTIl9hf8#Z_U/hQ字hN|\ʔ;y=I]hE6Gd˽/׹ ԙގ@-ݠ|Sf+PnB"Lq%/oKzd[H<\e4\DI醂B2!\\;waKY[#1/G+j:ΊKq|"	w-G\R׀VGhw{ɇ9ǔ
rPAByE01N$AGd2Za"(T9/&@M&-r^b|5uƣQG,?ĥNl:[
 Cd T-cdk˪7
OEaLMySZ|nF3 ,Ea솮h\-Vyb1q	QNcu֬aܔ=w[x
d)N1#6~dDOLLSmQ-&*Zi\0H4໾~XQgӜ7%3U11 kKp"pC訣SK2PΪHQh=qG90V!SUQ?QhXIVE_RBn!D[vE4 ٴH%'UaԳ@p9bbڂ<M#q%"[UsgPN.PSc  WQH;*ǚ}{%7+JF}I猂PKé!-Iq8S@ԩ:a/#邸N\rjZB /iKmlő=3-L"T"Ytν35#$p
Lő9(If} ;5kXjW<|;EՀ"=Hieq<.Zߨ&m*K]#abJ/bY<Es=;ߒZ̈
(;xގ]=lo_M8Wb+*Bs5lm "=VJI=5X"{Y9|8_!#NĞwk:L
2IʐK*[ˠd(_1h>/JzfK'L#@XDL8K`nNtssV6TzHWvy</ˇ&fo%U7uV!}!&Ɂ)eb^|~
-&aʊGG"
QUr]"$cK)Jmч>7^O$'(2&:$9r ^	GSdtwէ㍔>ؼŏz"NR`i㲦^;[Ia38ɀWpavo6xX*"|sq%:tOL4e_b-dtiU"#
%S@_y3Tpr'T00?xNZ#" @/Ń}YXf` $S;n
sMi[297cI;7SSyJ#0~d$KTg4َsc j^#0rh;/ط&N7![a{6wN<2Y`vm۾q6dMf)$@ 	Є7zLǛ9; ovBi,Ée#_׹6Ÿ}~!),B{w
16c5d!>"B7a5?BE;-Jh+V"6.O"Ƿ![b@ɐ٪(ЉT""W=⁃!R
$h#  WJڀ^m@1$GoН(͖M
^oaLdCZ5<n߂uت~;
Vڦoz*&P0*jLY
̋*G녵پmʂ=QeЌA&|?6
 F&TQ&KTXͩ!KFt4(ȓ
ax,CYX"䊅
&Kގv0X6D5P]
Nzex,}{	Su}DyrMLZgfP?edl6Q, c#XMCm*\ݱ76Ѣ[zzc9EM0xeނkRrD$mu6zwsP6̋*9L!<6(@2&N9=<S6U{zNḕ0*^|D`.BH
ՄclIg(:0OPN`]9
|u)W@ɼ?_u	+KLFze(=8!?'FL̔`ɓ@f#ydQ)%Jɓ O1LS*GO|cM0")ǄIԐ@\LQ*GAW @bTX
3\H
۴
M֡w0SLSl+``Lx>)xӄ+mx,ٯtScҟTȝCfÚ
lv^:U&"0z=;ҩrc4ў*y2KLna^8H[s%&B2
bKY{EozJpaiH(;kK,gu_@,zc.ڹs9q}<S4͂<{
%wOȯeqvlbqny<w3%Uc7ד}6g/iyj(4eq;m{-Ҵ8hb+c
CDm{G`+M:o8;c'}t4>ÜfYZVeEj_c(\Es{1	8SmM 9	{V'*ΆlуLqk_[ 8pF7ي+S2!X"gSR""z(NLRX{{ك9K
A'^Lx8"&uSDdFa
#0)d~c-^ˋR8]S5\6oGŴYVh; !\yW|G䱦s%SI[)H<&J>F(~M'6CH
 ͈=P߷apG,*ePoB%;6n(!!zR4^YifDbӀO!7.2 E0q;RIyP(jtUS<`POV	yLpNfͯO|dhBh3.H=c6)WeEꓦه'-e)ޜ,݂eȄ<z"n!Ҡˑg_dQ(fDFDFr*}iIoujG.$/@b8M0]Ca
DgrO\< qQry3[>J`Tfh#Ć(£+E4ED8Ӌ-<KA߼&`""~$Ձuq|vAdBVs$/OPhcq$uܨv!MKhfO~ Fqo.[; ~sL⨪]d~-uPM%
eX$9AZ02^eOoO{bb\a&D% ,'ғY-bp;ke%F-mY_`Rh2Sz̉h1` LJuMBGO^u!jHJE!rCwd^\gjנ:hPi#˃=G2DqXwv3F4!" *LA߽ϜvmXtpqla,J!vV<b9The+f!wKC+
]zV)b,틳M",.<Z,VٺnZ eA/H2SLX~-ya;̴5F\Asjppqdbh᠚`$K(eơU^nc݃,*;!`ɬxe;x]C/:ǒ)]7OD2O>980y I
x!CtWq
It0m/tJ=̢37c?W6фmDw}MT!""͖=)
!-\p1T'}Ro/kV$BK+$}VkwA{bD2%wy0)<oȯ&o"^h#[ſe侍}	pA&oa/&TGCxlUOfcQw(=Ufb8-VƠoLf4gޓQɛc[,~+-/&xEڒLY>umf|\~.
ZxM6P<{r)7Ra2QI\c}YC㩋 *D1pQLN/1~Tr4MC\ odڵVM𓀪 A_xs%9Ҧ=uk6ϟuM \  W~M'0K%w.v~!was-4eHCN`YRzg9S@Be"ȿ@pE/g5t.#AӼ]OQb@v4d%uJCJRC~QKzoAMY6줥g!4k&"ꃆ-ryZIlJf:Lz-+h%%`fRn}>ɴza6mђeDod2-5ۿc("A%EpNWI? IDVXA8r5,{goQ<~TbpqĔ8J#T EaQ(j[ᝐUQ
U$>i{o[Z&smf /;X'[Am8'R5DЈ%Ȑ~}%a
1pe|OWY&nzWLa${gѢ2pe4P{mlBnydXU,W}fn'm
xH͔-[_ACYf7ڜ=.i&eU6 ᗹ
Ĩ
O撦W pip\E"l|+[Dm
:Fl"*ϯhN:=E辀oY9F/u(%e|MMm9+k*51QF^ZDލ5{ңyFmnX6
]~{p+/;+_Ґ.Inqu[檧8X~i#b
F* bN
*ǣ5:IY[	[">
ˬ
:K2K(Z?hۘz0r@.lqFLҋ?>6ҙ)G![\e>/-,L<?a$u=:Xp龑#b,ġ~AcDMgl2pVIl~o	˔[b<n۷㢅Pgz9O<y随8̎rZym.<NրGX:Ty%k4T9Qf]Usݾx6U凌RS_vzNd]$>Qg:ɀ\lQS9vpK9s@v4Al,H8彵c5[`+͐A>:bLrb\牻jf	l4bL]-
e#/f팧[<$KPZO"{bPidH3{~zOelt
yCjkZ=榖 
-ʺ
Ƶ(mX<wY G)"qPdZwe9	JѢI&
7MbD@Lcf	
BcI]]6ԧTKFϝ[ӆ(ckt%$-Y!!Jܒ# i0PbʢڤPL"sZi: 	gf]CJ@'蘵J23s$"Ca\80a_$-wVrQ7B'b/;ĂS/8#*/*[%m?+.~L2%  T.+3Xք3YyBo8]_>ԐrJPq-3vT`܀7 :<Cc5$NөM!Ӱ(qf"gnIi8ËA5fbi!DPK"5*`iOk
()nbIGa2'x	l.*k i<c\EȜ6p@;&:&8DPčxa}ن0>y<QDd-ޔ+7
	~?R҂23i9
tOh$#yr$7
,rM M^Ȓa$rFI$(R4_F־hS#3}1NXGʼ'AS)G3ssGP8_劙ũA܉hlR9yNcЋz%'bx{OFA^Eǯ1(ewd~ԮTobw@Ӂ[L{/jEi]v`3U6)+Gu|C>PiEjq@DU	h0ا4td1s_ySOJFK⑵-0lPxvF1đgVɍe,3
y5ӯEe̚,뮤};RY\:q"ޙGEN'wBx<3Bc7LOnf1U9}ɘOd\9ʁMY~e&ZRr]o3c:gTsE0
ک.&*rDmƼڪg4,ATߑ94n'%*Rw;x֋	[9@B_@_'nC[(|}ǮX	K~ZYy"z=%a@x0Cu9_V0SjtwH3$Sl>UV$+M#%xms2V`7
V*<wUEtΨVKi7o![6/@slDoN۞%q&tJD1;_S05QָRS%E o:8REk:tRmBvp6b{t.^aFG!Q8Pxbٔ(OGLEg߹eۊ#< mU(
kY-c3W}!Sk殸ׂ`~#&@LJ^'?mCzw	RЗJA50pu/s1app+Zx>l)UN.ћlY܁.+!~5BkҌwT:$muBI'
hz7xM͸`>tYKPW] .D5JøfE˒{H>F`F3y4fD^;#£hli3ҌHԣ:4ONFuyTVZkzjص!oݺ-r['硣kuDEd[GϪ8D8	m*.Ge ը=3^7b3]<h
T4޸>ëUA
g,@)	fP}ä9Jth{V7:`U :o⫀ $x6J_;8V1;gVtnR'^ΙQi0whm;py,?:~?M56vdIQ
SO[zl9VQ`B"	Zl_A6?D>Dou('b+WrARFK(SxiԮ"qi(#Հo0x5c ,e#/$viGqhlT4h`Vwn[_eL܀d(f~% MAȔ88:Iyէa$N3Fb=K<BVVM`h`&r U-A=8
AAX%hWEU#P>,RRمaDDoۨC5O2?GW9G8;:?Hm9.IF^,]1rryP;V*yB^[ƉR m?
Թ<'IxFd.LYba2*O)80VХNdAHnl=|%YOG=y%kp^dQgSULL&KFe԰U;*q_1z_z&PY#
LxS#9E4B!P`wf0;f1D-ްb'LʲRםǦ"1	̬ACBSHj9PuJ˽"*
{}d	aj9a멐t9cw`t	j}UbTW9mhWsJp;l
Z2	boKX^U <Zbv]*!aEj(2~#|
aXm`}Aqb6gz,~SWwTH>8"p~#](& |&&Rn2Su;\ytѻMqt Ti#dթ'Oq/v/8' 99+-Jg$)qfMG(y;m; /D[Dν+
$zPX*j*BfgP*/8WSt2^)
wI
pB59*AG5ԭ#Pu=.Տu5eX
X{u@uOj1fߔ&%/y@?b(*0L8lBEC@
Oo&$wjANLչL=A>)ɤ^hd]xOOZ$Qit$L)'z#u[~~a,H'beEik*dt^g-ZDܑ<!
eaA­<LA*hX"v޵#{f\By4S2wm;FM%.3t+hctl^W6Sךqt+7_#\lJӄ3&tD
Ic4Qofw,Ϥb\<ZE	?Xg6xִ)M⧥u _zT"qrh3n=wMC	J)';/cf092P|XySѥOo8d>Y	vlLQECq-Ʊ;{[vyWl|腫sd'y}4Rtb,КękR2E5X%Њlh^gTi`6GyhANi1
јGx0Z<N||4տxbᒩ߄VX>`&)a-=p8g/ߜu(uQM-/&(5N+.D0H{v9Jq^cǠr{\|N>vH*]>jVD24w%0Pf_dBo'\6.oS)3'@ ]
OGٟ`D[g?aGŀOͮĥQ,:EiN/LP.zJZ	)rHOu"8TˁpdyNF"'%|A`$;R08	r(e+MվnyP8H,z#91
JQݵΥcDrEn]\KaFD췅7Ň#4~ˑ7&;>YCf2sY/O7v2N(I2)4Ȭ|a>
LrIR>#_[νՅp>JL8
e{]|B9Zrx
/Y`27"H
Q$7%fࢸmƐ@LLF咨m
3E"D^MS
~%,ePL n6~TPЈa* 
4{ Sv,']hl
Q8C%p^Mʴ-tBNO2yTngNYڮ"K֬rt^sDDq
6#)'Yiʉksgxq<C6w@Qb)j|^ʹ)C=UW3޻L\R-"<(-\[4Lu.f=Q[IiiK;+c1Q'2߄v1'OWQr_at[A*$a'4GTsf$Zh7~:P܃7oqRp+i)uְ~KG鸶r5%d2j!+ʈKCXC^>255=
#۫"<`Zf@VTwl~%ie}mXMz\o8*]rp@S3cRʏBR
63#ۄJYQ.@ڈ="v-Yj'SO7Z->rx#tFKh,Wb.5~aTb 4oFC\hlY,{=sUo+z}iK5G+Ο-eBzk$es[+43"_Rֱ2+vz+Vt ;Z;|iWY\ yam.ȕe
xH
Xi?J}q4uMAz!ML 
I; 6i\{d2>mg3JHF(*.HDi}_Zd	>g{4TJ@C-!&CyqQt8+sS
XOրJ[V'=!M.VYY'0ϲ(1WH-2Ts4#SPr40\ÐɃ;*apyn1yR,eIHʛfכ_2uOP]C9r`9*π)\r" niSObdK<	[1~(uq[,ˈ+s&goE~;*I<W^^ovQBEus%(m>
fpZ{BDO{meJUA;B@1<_usCҦnheX<Ë:\+A2% 5KrIeHVɄ
=?	.KyRmzoHs#pE=ۄHwilOehU[axD/2䎪Mm2ud[bAsEH)ش3#*QLLUى*dFLIMNTBff[QWfB^䡛0ψmOY/dPD!mTe+zMCxG+֥vdmc_`@yr7ZpN:S<o	NۀIe?(@<FN@1]ym
 a|C"pm ex|&a}
f90RF̃v	/d_f1pP
lz]g.cTfљ@+.lĒ:;7I %c3R6
jTi$s%f)cfrMd'wU[,J,E{N|zW%6ѝ;pm:5}hsL|Pih0_@f<sH#aV;&ܑtV$VCG<c"\d*lxhD£9v7r±$Mk(
ݿIl>Zmhi	W1JB=^L	)m>5E[gZ\j>)3+Z&ʂ5K6UZQ㢊(Z?A9 tq(/7f=Y JеIpH3Ό1S=G0x5WZмNm
0_qlarL_\2EAI{9z2YK ݌K%	WT,ުP{&Ұ'5Qjpy'
Չ(IHNHfEO%DH&孻t#X@
&RS"SW<sEF*r#Ffe2*P&.Q:As{#2:vRQڃBwB.uL*BNMo=,"`"Ij"d@Nvd큳x*&sJ]Xs͆z`
G&xQUE;xb&jPe*Xٌ05UQ?663Hܼ)yJlT~K5(z3~B+Lh@V  UN:Q9WK~I~0\kٛvaœIsnv'oDs[Jf#	aD8䙑xQS27߮v.5π}r42/}^ߕk.ΙQ/FTyXT,	uFh-'[m04/JyTIhq1z`xM)6RŵD5aoY	^E5	|>R_"%ofiy7'w]qlրpDSu&Y2˳vUy
?Q?xxToPjm5Vb`YYnW2-6>.H-Bݧb(86F3:0~Y9[IƮIdLPS()xj^tCgxOf(^J\O:8HE68aO`:5w"\oR@^GRJS2D Q ͱ
P_ƞߎs/{7eg\N>
R糖S{&UoIVZc5X0E6(0M-3{'#D[0n٭*yGӘ$
SXG>_֕z̷V@M-7Εf4`5G5hfG2hT=6CX.d	(gz-^Z-h9ތ g>wZP\_˖ɪ^91V"tYY*)rw}ɭ8Ȇ*B<߲~1dEya
fwf_BgW~PPh9JahlPopgK)8^5ZL|s(cB 9#Z9I[?l=7&a<{[^xAۀcHh2ê=aI@QT|#ZCMU5YL
ED8Ӿ:"R5qn6bG1Ae)5XkMRx&сmntUXI@*e^D*b]-5cu<'YaY;Hz8.nYa3T]'8#	{yq>G
>cWViy#^*㉐K:̫;sgƭj9U,qbQ/Vאѭ[f.X"lePsv6]vG?M2,xqW3JtqA!ٴ6CɐBUiu#-E &g<%4Ng11"˼>jE0&폰Y_6jUtB)N2vP⥠L[CPaéu"3Oe(J\̧T9Xyf0\CI8-(hMi)\F#gԉ(~eʹ]9썒gR&b)idUkֱP_j $9k%b(X.SrN4'BvH#>R3sr)ho
}-Q?_[Ddǋ೮HVV9U:\:%iF><5~rnÞ(,$^:BS3Q`JY	H
\XnCq$ހ4f_(82J"2NQ!\ɅXY<n$J?Fj"ҵi;PUfGxjWO)~Fa2.!aIS^R\	$tGNJn"JRfYF5oIqd~O{,Ʀ+wEɨ<Z'r5Bo:M|9`S(9SwD)ZSFَBȳLL#8{UXBu09NA Iy&H7ଯTeZA<l*FN8
A^g:cXYD)i}(E
<ODA;A11DjR>iP4^
x\9ӏ1U:ls7#@᠜̎M48X!DZB-S&{WSS$ao66yխ)9[doIwO+9fу ;
k5[ wf5 v*hrD1@4QQ;	s3T%ɾ¿Dey#GA)GswQx#;w*1'˼:]ǲX'DD"ha4+{XС%4r#$dZ`'
EGVܥ#q᷻"l*ltD}7";d\UU#U;:Ԯ' ~	zTVNᘈ֭Z%SbdۊЉ2bo"!s<p;2E|ďcEBQɶ/XFON\u\6kڷ0v]>\ЖȮAOڈQV%\;^c(lݖIbfBa$*M"SLJnY $'ЧleCKbAb;<'(*
o)V:qk9*Zii-gf..\[ce	ۉ{D7KI@,MY2s,d50	L*Q@wI@yS
 Rn_҃wbVMah3]h
\0;⢨|VbZG:Q׆Qn~r0g)P,fL<NL|l(k>Îr*)W^hchAߴUmh~Gc:q2f`n 2퀌6rִ̓*Rܛⶮ71
+}$́PTĊ(ٚWƂܷ$>Li4\j%siǇ0q32/9YОU༤ycwi0>۱e\\#~٠fǯ.L?ehgKLt2zGW87#Y|>UG
H0I	 Ǩy^"7Ƥ}c0
wqny
:^iǰ&P!a@zbJmC1a`Bߏ1)P+as~
|DA~-qZWQyM"T	;䗁UuK
=frn-f42-.nF4+ QPleq[j'1$ILzt=]\*Ù1@_@n0Ny`}{ϥl,RVה *w1}6ѧ/Mvā{y<=z:۶:pwCKJrx hYh;Ah_O':CZAcU.g냜 ]AD
2_jh< x=/:Z@_&T<$C4l_{}T7T6J8XiUCx|6;0	%=@%'I@!D4I^y{gsqF5n>sM9/7aUa6؋SwOHyUۓ%HFǋC8]~o;DD)ul-4#t+*se;͟~)qwv7Klh`LM&=]oq̲o^x\WќQaz;FIIIf?^\~s5)R3@I?XUUS
|2
:zobzhqfaZp%s|q+y/	 -p@$8gC_Rd?8<'d (<I״6'H	@W+S<3
/ݡ">1:loêmF1]67݄!_hDsRm
fT)ВHb]pmEբtɹYD4:x)
YA_"jZ\[lyW6d΁~j)$a@71k7.8N^	AP88Y3
yGQ|bh7yS
12|<@MX]"z?5֯XMV/Y{4urkf´)ƈecsԸY5䂐Y&٪6;H6!tY:X} T_Ԯ^c'
dfKHO2*,~-e(mgg]ÏHKF"tU!Ĺ1_.ԍ|MSAr]h$lf>5!^P`xJR*W^8'dh%G9KU
WgJA'N[/>NJ0d8(8G9I~Fx<b@/&T
╞2:ęOH1Ҙ0?߁+M-xiYzY'Lmd.J,S@.i/Q@tX@xƭbnyzd~B,ie1Ran+:qt.
r): 2Lf
)<R7k_&?xΕjĒt`P6L
y[ˮnDov
KRh癳_T^6pgPoʇfآ+m	,oi3¿
Oŀ9DϦlUq/Fw@<MJLZ~;mL3IZ#Fg1\nZg%U| OS&nO%)l₉#o^5)޲F"֕:} Q$}bR`V%C]:i\mnͅ`ZG-4^+XT5XnMU^%{] Q=Q(l&Ƿ-љEԭt^a=	wo=%6'PHx[3#W#,PaJ-BYq):V17Blh`uѠUecV/Fk~qURݑ!c)
[JƓyP8q>%KztzdfG^)x5|wImGdN<fXմܑI9<K_
ɒNj}3B/doy?mE ]ْҒOra<='ܲ|t+!u{q&$#mJ`g|>(SQF̒aG	\FF78P0/zoPl#Y5O-Ǯ{%Y:z\)jiai2: {=~-h 5p }0QL!08(!<&3wF7
p,_-:/.zY<ÓMHd"ˣ@qAxZq8R9;I+$Fk9Fi^G43 +w{TD{ldu-f]G$FJ֬,
dPbT9\݄\ER$,@Ƅ[H)qҗꫪXyԠKB_%9Cb`7`ɭRJI?l6ؓ X%1a`vÇ84W#9?70v#zFLcz%TzLcܑYK6
~Py_J5iPH8K&r*.[V'.2K3
9V=qn\#L/ubylM97LI
\23	ޮ95X3	yTZ	Կi#_ü@&+
1 זg%h!q̪m	q5r)`LPy;V]ĉKNJZ \#q{IYIqMMtV_Qƾgc!SI8bG4ct@&^	hV`8.0M]\Y*u62*JꗏVh05zy|Z˓Kd Ӏ7Mn
F(nQMе仼(&;/`E.[W2T6ح:3eiףk&Z/GbrG
Ó5fQPlB	<pЦ
'Ir S7&.=y_(A@8N*˶P3 5IecX\

Fa^JF-&wx(ꁒ-DDЕC'O^-Pes{2/!>U(,1}`Qn{>$=GAV/t{e#)o*3<0<?C庉/9\b(oUR̜Z4f]]ĉEdn072e&*
]OKõ{$DaQXN#-كWKU%
d@V+Fq^CW>Q3kZ =|-Հ2+@`b^0-Oc ٤	1UD.Խmg1Yݙc_x&]UƯtb[h2pSmW
jф(?W2.cn*g9YMXZ1/FOM5|53ZB:pN:8U(x6oќ4T5~smM~HG騈+GQT`:GfJLca8
LޤW>WjSnh!}~E1luW^ւX~2&/Fڼ+ӓ<
(=b#J j~1+̩+
ikpfKh3Lδ_BWٓY͹XQM6TU졼Z@t줐\jF^P*)'^F:tv?v:4&J*:́^%/Ŕ:U?0!S<.X0*Қ#YuCF8vM=Τ(vAk0nޅl^(if@XPd@\
Q$GKScOT$7 `\
CCfрL`2[Tl톪PFc ,ч1HjH&ilڜd l4ΎPCu <	)AcW|zؗqGu?R^0^Cb\؊dZuō#Id߶='f`	3Z˥SCC"yi'%
|ZQ@ϳOKct+so(ax\bC̀!.#1Xt[};f^?\x<x>~#<x}`O[	3hZ	*ļ%:?Uߒ6fS!K,R;Cebѓ5E;ŕUb}$N%o~ի('t0Hрe`I	hWlBE|љ&06|#RnFֲtPՇmV:m8xb׊'0q]圔`Yd"3cB(ќ]~&҂;;I,HNW%HH#cNX4O'zSj	3-k7sS7Yh"_NM?'ve9M'
64g{A8GO\=Nիf)ieQ|*2
,G@?
@D)
[hVGV
zI;?Jhlc
9Cu2˫tNj,iz+fZ0gNH`|db@âɴH-5KHf3
H~,׊_y
NyD30RSDr"v>]/e';	s}:Y;H=ʙ͙ ]mHi"9=!㨗$0ބ
.섓$M_̻Dտ!(l
	IAQ*j?fl1cmPY\hH}mйeT@DBO8W\X q]f R$ߟJ1PnLv1L|
6n[̏P̀H@W4C͖	l.iiv][|U^9i1*唗/Fx5;
K~aX	t5ϪpC$Ͷ|=6 TNKj6R8B؏D2p0?k'bpi{/v4'۔OL
Qniʵܑ_<5eqMv6oH
+ʺ>:H U):dCL-zcӕW |-YoESY|T**MC%%
Pw<i-QV=P-ov.w"jV@vUUa#'z܁aLƢsGIy#30rO/	JrTś1WmG֣`VD6HR^u㰡(-tM]@Fui|)_]\<c5oԥX!pXlV@OxYGF3YE/vLG\¿O1Vi: ǦQDBZ/	ۧ7gP jn.[se~bLy&dwI@P۞JkY\OqؿzCaI]le	zaGzm*6[t4i;͂J	`M	2xH#pÛvEPDYM& Un=HeִV.?ۄe=p1{M>t#jPt3gW-E
-Gue\TTF,ЙEdCY4'[IټkM>'1:w%\]9l
MӁ$do/C@ҜL%/UYrE!yVYvVEo3k[ݰAZȉ$fzSl<J-(vɰ7(Kt䩁 Wـ(pi..NfrF`E94%92]!;87~@$82/G9MnC[Ꭱ#QP	D{{4o@3Rb1d}:caQT@7t׊N,N\ȹ7?`ɤ
R$ULl>Lqtmk=2e=zvBVſnqrOG%r=<%y=u'ca	l"PwFC;*i
a"`D)ryt|eO*g4 f>FcLPv[Ê>1oFJ9UzT,\X:Y _|qDG,_)^01R7Sn:ScyM`m:>َ^g%y>B<98sgʫA`AD̨8o<iL{'c|
?<POʐ<1~
U[1{
4}E|19
[1/~ƼbS[2mB
l+UeqXvfGVwO͘vXiCrul	8Z.O2_v9 hgM"5]<q'3@0´ӳ6SH:H*	Qw_5*a.7e!6
'ВRig$I*BEw1y,Ux/M 
g#xLN6DҤp<H];t;`9OpfM_s-JpS_2?{`)pwD+cv#&%&xX6
NSU)!PݣOP>`~J3Bҁ\z[Yޤ\j"hմ
=۽x8w#Y%`t+}> 6'0%sv
Qb!+0/|(9%A>	3S$U}I*IVN
Wm(փz-ֻ:DcWӇtqXxb H/[D4NF
QA%W(Qm:ڴ5\asZte8_9	JN:I~1IQC$woQ6Jytf|BfP2(ťȼb/,ݲ:3}GoIwM|Fk`a!!
6 ᏾2{7Y{"τ,DPȗdHJs<ilbsg&09o|(5sMމ8?ѱ]-ـ(Ӣ!G`j:%Cȟv
kH>**hE?GύNZĠ"JwYly3&Sp{%1WOb+,|_{Y-fg3wy'f6a8w(zZ/|Ҩ:K^mTvO5Fp.<rtohP`f+po:E/:hT۶NwcBp.~ռyHXp/Ad>x:pl"+x6&Hgn:C!L"e7}h]9aNb A8|TXMr*tl}VLFg6ftMA'B?UyOVt/~	-36-J*wo.2\g5H+IRር(3ωz
74̧3?G*2pnH?ЕDJBqt;_7c"x̾M޼[1ֱT'g	Y_֞SIU[D ˊ.oS9nکLFpt*FJ]i'IPo(	\LJ-*@Jp	W"OWO#VD02`lΖ71eӁhIC+jp2/-U*H:̱%NE,}69paYK!X`0GFLb>/Rj<$od
iOp˵M2	I۱t8jiL
,c,v"+r0G:;<5<W̴x}a\9N6#ʢЁLl6+#1{R$)$&
R'+>1gD}bd,%e:
hBr;/	#U@=N   5JK`G%qX8d	
ڭ

rfjBC	JxxVǔ lt7˅$ooE;ԣQi6&ev'1{  1YHSЭuz:MPIpyD4wor&ܲV;d(x
OCbRr,8_fr%B Sk4TI=uK|!,qI<syğJaGtP.%z,2}qIq ]H1ofmXȳL2ߩ8j*wʟMߘF
˜yJ%z/yQ/tjO=B\/otl\S`l$|Xڱ@uV,zRyZ+"K~el
O%4DgX<M* ʺwZّd`3[>lTΘK%H
 )T:rSdRar5_fwUƣ6{Cؚ-sŇX&>HEC$`NA2'⾸43ڬ%L1>Y.`q뤍|/Kr$4 Ngi)	L( "S`U=ozD/(o[&]wSrG(;}flCI#@L32TFao7tʶb+^ksN
+"d$=D=C]%AB
Ʉ.%ayxx$ePnXchH|TbJ9LR1>Wa-	ڥ-Jcf&
.h!**rH"{ %t&{cw
ɀ%(
4hJ8vd`#(
1rw6:Xn}@ȁ`L;#|P<c.RjbnjKb"B=އeoyXKDX\Tɳ`g˞bhF6MKǞ<hQ?.ٚITƢ<QeCi 
>)3Ħc$C<%EC\{DpvJ
K>Eڨ|
QWΆ7uŲ'I99R5@x蘶"Q{&hN)y\b<Ycuc)|ug.u$l!ENjʱ1#쀜U!	XnV]D̃mҪsȷ~F$'Q+~1{w,7cеbZ56R^Ʉp
)xC<k#HL旍:Q.Fn}SnY^1L(Kұ8wmQ:\G/ӗWN~,o>
*
op̜
RS0ߝ9ȁ%W1cy/$,>\&ɊY0i3ktS)]=+'gmhդ*4Λ/t,{B@3s
FΙ [39A퉻 ٟP۱0c)ǓrqЂef#xXH,YtɃ)-nJ)t9nfC2*qIjq0yFEO`ܱH)J%.<g=BS^s=5Hl|x2̄4FԼe+xYL**Ԫrwj(ȗDNܒg[Ip*iэFuG~@OL[#"
:[5=[IK\VYCȐ\R
}^_xautfQ LA́uI=?:#Lrm[*[4KK
	ؘk/!;w9{5SꔧG^Pi6lyZG#x=yT#E#`|+d³Uh0)>n2ɨ6Vk?Y>֛3(EtU`
bY9%A,$/lsTqH6؇U?a,1Q#2/o$7Zn:`'R*cHB;6sNt×#n+|8AUCW)*ſ>qi
eER;H,W`+V4GqTXd^a um79+I6k?% wYfAēxћ1^g*ե8w۝].˗&ވb>l%1
N2+mZiiyL(/,khMCrg	c'WyK /t/h 6ڒʃq86ё
l^> Cm&ӃdxuPҨxEWDnQs }XÂ/NeaU(U.ӄÊfLy#y5@$vom.euUTS"H\;%T嚙bees~rLulFj4+l9Pc8UHP(xG2Ϸ:U.zAt)RjHb)xH$h"}>T']o*dRܛIf6G D,Dߺ
x̙@b#TGV&U#TEW}ߛoOxe%Gːq0/kB<2G*{'aՖ==nz ؐt57)Ft/κ	$`o5)HG,,Zb6ْ%0S00u3  ihmNzdGSL zq5|Wa+<'S9U˵׭Uʳ[71M թ2r 2F&^S
(5Aef2Y R2\QF) tQTAR?mQ>aVqu/oaZmB=S#gpLB*YƿDwt^E	
Bę_Q\	e?HDWh)h3:;dnK*P1X' ȗԫUbeG)4Be]e_JT$KlRK^E9"SSsITam2pQ9Ð*skH1x:.o
}=sSH99@4V ..|j߈ɚ\Pg'P"ctGoƋr`yK	nXR_hF#I'b JtOZncʄ>vfAwjR\dp=-,H\ 1EdH%
rGfyNRȋDAUw>BW#Vl.{\A wW9tFpz:1bϬjQgdf4c#ѠO C9ޠ^~s~r \;e.Z1xD}5]*벃[:>R=\OCХ$.3/WCAJ9>-b=
-jM,jR}_K2'	&$;0yrݥKFqV$	KtEpGG`GK":`Ԍ/X57W&	Opd0s%\n.IRSg/⛍ D@08mčD@ٍ> tsAU,ۼ3h:ݔޖt6ۏ22pWUƣ^C'W@#JFQ]UxM2;UۊS2H$&	y*ֶiU8CciV\+!#And^;?!~uH˰3+iSٮz)@[=9e.nY@:p~єuhڧ;ݫW.I$~o<Y^D*mzK<()w]$RFĖ}8TCad-xNLVkQ_n@IGP*bb8,l$X͑ R[
HA^G&iCMY<6@fQ!>'W_1Ynk؅U{${{0Ac&:mk0W"{\H,XajQ7M1qB<}>Ys̙q
\|Ԑٱ\`ٰrdd&HbO5kؽUI4EE*W=m;bXD<9?oV?Ο
jࢩL&16TI
u,!G6?@
XHEMdʖwF:5:+I{<k&5ZI1U(`ŻumL*$uj\	n.?lڵ&ͤ~;zQ'
jBte_ :&m j;|SVMfSkr%e
M2ΑJL`fpb6`4t*VHKcH66txDԝ!~BvȂ_nmgk8
[CtE	\>3Z_$A&4nlΊT(d)w؊cLY[	T[!X#x	GrYr>`+:*StSv)}"!HN CNc
GªE:9_*̱/A_
f3lY,ǣfJ~]yQP.V49Q!QfU[4RѶV%'wy?ĔAq3j~XLDzѾѰlnj9+P/R5ZeQ@P{J
'[Z)@,j%x
 .lbc '0Xj}JDqKtGI
tż"Q[3Y&*TQf'boD$.As~:*J0-*uG"sy 4
>,<_*UHFbs׺I|#/i0Y4bζRyow$j(W5v=Z|r$Vj2.D
lO| Z@^ك$Cչɯ4Y;{"č<Ol<sf?nvO4=eY.q/V  5-mm9
|Gmđv; 
Rx_`qVlGqަ̓{"J-	.)R&Cv]X-R$A
!U/	i:Je!\Pa于"S.W^DR_$Q$uzq*<_lz$~>`>/rhӇ\4TQk}ŶUxՋH	[!긃gF?ͬag5l	/_IKvLXl6/efMD1SsH:1gEhx$+ю7T7^=Tɂ*Owd
UqIC5n끼p |z\X6tvZ(],Ѻ^<AnvPVQ܇u$JcbS"at
m#aOǆy$\~"luR˪è$3D7AƎgU"6Gw
"/NwnE1o㙰AEF|N<~U1	_ac)ך{[.γE'xvF0]18
ɧÒ:}(Qr/@oјG/()*#(aGSLf[_^Hp<`~ńZHh?*_^>歽t[=
0iw	
d4~f#"j
dv
b".Q
&:|mfyD'ަ2?j/Ʒ4N!+VЋ&PR`8uT"o[,rF߱OuV'Lڟѣ"569= <'tΑ^w2?>AnB0ז7TfKҵ|%.{%!@ǤTBۃ!Dnļwb36yq)\:t b)#H
rS|hROx($40+=py3<үJ5jqAŴ̂as}/DEl:m4
@6gdx$	ຉ0QwP..#2idJw
qX%DAYiw9YLD	I2~Lx/_f/:Tͺ
QNDLTCpfw̙/sa+ַɋ7Ze>Iլ:1:b~?^ֲ}jG^mv |L]ոJy$b;=:W^[|$GD ਢ%׊Oħ8ѮXP&܃d;6`
zm;+uKUeH;ZWg
^E0L㇜ĕ$j
D$O	|u"?H#iYt"В0&Q&
Zye*ݤ
9(K\Q;E@]߽̀±oC8q\n_h%uЉ?;{HjF0Wqp{5K~ =j3Y
d	tͨ/%<F_˼y>bPM9DGXpFOߋQ\E^_FZ<SR4UǯccOa UQKD4e'3@:C*мxc0Q^xsņ=whEd]w_"ʥӽnD׃[cIB6״I=IVע,-OBWINӋwhs*ϻ1h<:}rjƼԪ2 jhjoև.|	<D&=EdD
KJeojp	:]9cX 
V^Dp8
AP*!rugnNo
LdFQ|9yNDb5Sf|
4:Uopb\emDU@e1pբ5`.w,R#Lw@r7u#4)v`A*Ge){p
]^fi_Xd߫8|RA`q<cPRkݩG>H郕Nנ2V1ued,0S{$r`,ɾ. k_ִSJv'"z2}{VUؠcr@N`86X<vpgyTX	EQ(_ 1 @QLU#-@B3ie j^CarzępixNd0t͖h@dLRSn͂7@BjcY5(#bL i6ȻnH"jLUЍ7 .|x@MZX4;q"e~!xipw;%8wlIuy[0nX67]""Lk ]NՂꑕPD ,HxbR_g.)8щV^Ӥ)
}k܌p
ĔMV>}Q|pxT"@uuEKu'VjhYP]I˪erމ0k	]8xy+"z* e#sQ>x8]RYw閺z/SIX6,u	tj@C(gԉۊh+OSE9Kqc2Ov6=5wn(!{є.NlHIRT%\.D 	0JYu0}E;3Ľ c%5+G̓80yN.T`C&*:FN^*<'E'%k.bH:BK?39]<^1*hX]1Y2^6Sdm e7#`RVHT\ '-e/F~uس$l7O#j0N,43\2UЀ**ɖL&#rdEыJ! &iw7;C_V}׳7'[lZ$^k? |ċ'*%~|x_b9;0A{jXJwYA倖a9# ݙJ-V'lb5[nF-%Db`jPVP ;tvf>\tl-sWf,!Ue?-Ci
^!V6ʀќQ<نaGX3i?Zu%wyctN~"8ݮ%6"A"-vڲ)WR.'vZpPiƔ8YUwC]лBJ't_.@A)";o7Y䕡.AGfSV!-WB0ؑ#!m-<lVb_j|YERd86gu?94'z{p7UCMl>*lsQ$}?o'⁗2 ?
=_rU2.BUe`$^02(rJzWݸKeA,d"}GO]CIg`
ۭ( e<VpN2@n/2Lg!Gxʘ̆
)(f8؀4 sX#_	/q753AV; #_o	#&6`dlЭ҃0OU%IU'f]7+.B.jxX0r8 ?7#_P
	S1PdWk DhTJތ$_	fVztKuKAwh·xE<=+aSC+(lmnhTU;XZ7.wLE`̥yPJ0L9.K̝*%
W.f뭘.ǶW`E=Had΄(-Z#	؁fuˢgu~R9l\81վ;*1c,ϿhWI,3kD۞FC$Kǒ7tTi04s~TyczK]+(_C:J4~=`n=:AЃة&TȢI	6xac*Y頁[ʗMc(svx;
-36f,]<=	eZs~0Y@\HD	$aqSBg֕$[Sl̰8M$A\/k'}5n~_Z+N ~7IZPPmh<?/kx"M,So|rw\e5qfY=rM<84ʄ,a -p'٤xz1?ar("
0ㅐ$18J&ŕ`:
\`<=YEGO#"TG^~k $cZ<:vb9f\{gQ%9"XeI	2*!OWy}DUT6NmyoJPl*v\C#⩌mw|6*X0d!\ى0_9(t)#Av9,.WOŦT*iw?4:Ę"
;3P$!g2:UP 1D ;!^ƂdCv߷VR
Y,|lw9{/AiϐMt=&V1	1'mh:c j&^K"Jio*bF*$Ǡ5a_7_ra=(3#d,*qwەZVg\`_#A&H,wCŉESxpymi= .7UUwNIFbl&sKЃa
JAtyZ&Lg! l2 pN0ZHFHd(Avf>N6q3j;y:؁Y.(߆?tD:?.nਸ਼45*?one}yWaT&|Z2prȧD	7eDYI7܌}q^;6a
\bsY?>< 9HH	A MN8]ƌ6K։pfP@dٺޥo9}1_f̞KiI0b< ~*A4(LJ-ǲ"
F!^z2<LJ	ϨQX˵Yb$wpFLzv;DY\| AIjovPy聫.ωaouO7ƥ23'4hբr+{UZYŋ{~AQK$oDЍRd@5VP {
G``zȊL `Uӕ@"7nIGC/~RIVaR
g4F%:e؛ejS4(1'/r6޿}Nc)pmKF"@[^p0++3P&LRL12M؁.u?>6c8p(eo-BQtoB5ro-P8o)ziɟy·#B~uMJe+0![G:)J
hluBs&D=*Y.&v 7
n& 
s!j^RuįeΗ7UMS?;kw4PL\2B<e9axv=Pmg2+$(h1au7@;;P+"</=:yZ͉OC*9E\y1WhU
;ὖܼ+a
f=$GbHYƝEwvc*TI3hR it{
R|FUc_$JU(	<I#_d9R_\MRrf ҀޱMŮ,dx ^TJZ+`Ά0i:	w_k+@
PY@NQ,,4w FOlLݘQ
\G._yOR	fSx.k?>?rkY;uVK@E`;/l30+ΡAt}B́s
v%<fs>Əv`KE~ONDw
{!@-/<A>ꨃY`g$-L%/]ͦKǠʹeíWEs5J(̞)lXf8'|,\d5@=d"f!Ȕ[j%I0骕GtV$P컗Zr,wٳr #F $
V6xrY	μqXi鏠Y22La_ Iw'%ḑ֖w!f;1q4=,
V@.&*%"$ìp?5Snf8J&85]y*r (ϪF@~ܵc-YZ!6I=j^Y_2U,Uum
隶3	2P<xoG
\aokP!)dKu؈r)Z0ְQF3 ndaJaDR)E(W"/caH~2 nZ{mۨ-@'s\I;DTA;l|1n]ҙS6@&,3i)XeJlj S>ZgZ|DDGG*qG| ǀѝ
畢j*j|	8އ-ӣ[-rRޯĶ:ԁ!juluŨKĽo5YM|[R$X\2$PR
lsZ~%|eNׄxf
|G+MÙ?x>AX]T
Qgy2l<iCL\FXf#o(DC&>R9ȂXl+#K'O'a'LNO59Q
4p݅+8rT>Yz<TY|*SmWB٢/-KSP0
UBT/Z=1N581Xjex*79di?Mog&+2!D>ALZP,RCK27wPL4|愷dyHݐ9_u:x%{*RC1:{K
QԴ(%^]2bBN{Dwq򍲍K˶Sx7a
u.P6.al[	!/G̞ȋY
s_]|50bh&niJEq羲odۆ`VC3^U
0$z)9j<[	ttFM}N\X4,,J*{ڬkA]tHO`#c{*B,U3sB+/!N.<^:$ѪKI9Y,&6}y/%lnj·9j.wbT 'Y	<lj/ɦV8dVvmBK=@{"*JnB#63>789W1Z\.'j'+<[ !j
|"|BT"AnQCHϕqG`-@?=.q2L(L)iVm]z
Y օH%6v:BY?eh
Ȫ
!z:0oLPnqO\%vx;4Cx8;fC'iGMDgQNT 
ɆriҎkב#6EUb3=|A]
Bn
f/~x,
4ZԀFxot%V~.Zdx
F)i&WA+5LiBPRK^73" 
x8TR#BYjNZzF $VV@S0!0-R kQ*ˣ/D<E&_cI̲a:oi+Ӡ2+8[+hJ⡐diQ"<޵8̓"bdPVMr4qpE"˩bnw}/<4hi:cˌ>Whg2*y&
Qqk.ڼiK_<
#\`pwsW)j2+{1F\;qy'cx#: _E-W+7ZȻL/wUrXPflBzٱkl/wkg32ESKM2X| iΛp_e(9X9Պ_ktn<r P'A)zONYgJFTo*QҀӱ(0'AsRIr~5XSY^?wLmpґ W"S䶘[I|U2myq6a#MUz]AqdXT<DcXqȑAO_l˄]Hgl$XPR&24%oLcSPV-Eapׇhɱj HFI!'Ffw0\uF?ws7]
F~MJf1{E!k2san* BW4f!ȇ:9AeoפY`<{eC#9^`ۆJr.*CNdZBbVm:_WHlqfDP>,mcג9{P?6#pOCŚ99ϳoHt|@CxPu$&j8ɓka+܏9/6(*γW (cuO: &MDy<Ԫ1a;3
ɢfqd5!"s6G*_@la͙{s<@ HK6 5ˏܩ_KzU)
\F-
@Y*sq@iO}SJ^
z%D$Aܮ;1h`A2"]-eX[<=o^M޻,x8ySQЕ撸Ԕӹ5u̮'H&F'xAQ>=\P B1zJ*įPR)?ؒލ_*DM/"}t<CAvPN$^e)IBϝoZ7vim@oOYC>zli85&"|
qf>L$fi7),,י`,KՉ(2;&cNµlǆ8M:̷I'hOlfv?0Cu9K?!v<@n`ACs}L5U8s
@#%lKǒpEqTt"y" Wt2cnK ~%>  Q $2U Ё8SN2{__N6+P8[ԗ$B
)
dk%T~LNHaYd(GiQUW2H
ZիG\%TK52(KV*?Wdi
*7ū5X.^̬br14-G>-yqe.8dʿ!xrOcmEj%<ͨ s:IaZ^;B
^}I~7,Z{Sew(DEfO%u$(/#/{ۤMÅ3r@鮼!a-ebw*բ}7zA{x{sC!-Ȅ6H@dhh115y|SqEd;t#.G'=D˲6es0%yS!O04:#\LǫL@Hf`[mxnJE'Cd27BMw	YB%"'Fnp%OlgJ_VWSQkO J6
Sq:q%73e\8ʌ&̫܉MhKQ[~?fN0W!SxtzxP]FV|Ew7\Nr9/[ޚ$1L{!]ޭmj:Y(e̝Rؤ@VhaEil0/nb)N'ũ' Jx ;STqvG.
FB;3/l]&C%{ָd	ʹ|Csu84Jܹ|[S,M+V&LkrtupP$¶;LTeb$D\Ą4UHfV P<ZmTݨ[5WGca){M&Dm:
?j%+_{b"K2PR"@o\Fq@*Rz=hw
5fFb-#cuRCj&CD=S. yꩬ|m5@LxUUO[՚_6Ə	I,Ś6nCv+VH7><@Ou_bө<Y^PpbMb^)n$m1F 3"]_])ɱ.&][J o&UrnPfStHdIw|
/^1 oNParr'	0yrޗ a'JLE7h?dl/Nq>B-Lm(=ǿdqFݨ谮Eu
Po)9DEFl֧E 馊1_ƋV)WHDL4o	ˉ"AEVYwۆƯ^AծE,;Z t*aZY rODIA&SZXՆxc\ꧼ48K]+.@jo?T^G0:^.Z*pl<]^߷ 9ht2oF'R >
ϰ'#
,ǟyZL
IڡibJ49ZuVBa*1cgxR$=E-$oYVXҽP Xz,ra$s4Mq"Z}L:9۟Ig#
k?M:#rrr!hxstt0l6 Iu0&LJ+^$PS]S2GuCEfȊ(]A Ys an:QKyN;=<	p\\<Ӝ]-VUTt!yeKfP(>_ETEs:˗/LGoqK*#(/	n?ǆ<F+@ѤgAydDR	myUj(Ύo:%:>_5$6>(Ɩ,L64̛xIOg_H,P
ב+d	:&5P`Y`t/bjtZh?YsxV	,\
. #oz&oV;׋
I9]Ux?n..L^4l5i4'3&ha$>_ cOAity/cOLCl'n 
ޅfӖ5aڳY]9YyvZ[>3P/x)56>Gy6&&°2rDT¦L`})=1{H"i	Ǻ%JV	XeP)fgJ0ѕ9ϡoۊy6RJ;V*]OMM@ o<2S09LjDwamsㄟ29r&ҔIXg{ilh 	P/c=<p0J"\縉9X#%-'3iR-,g;elA;(e~R;Kf	񀇩IH^
dÜ^MJw,D<s΢'Iـk
a
yh
	576q2*hǞ &\,
W8w=FV:u79
Fdff_JEf(6+(jdDWx fOV'q/Wd fPː); UO**+XoS,) rË.Tl5^.H
tfѴpM@@r4i#3y.
/܅>
-C5mh
xN]AWFշf9ZU4ǀJ
aaHj h\p	W<^
j|(>wXI
e$q+YG*<10vPf=srE׿8ɬ̷p.I2Y^3+Ua3L
ЮD'ROʵrM2*'b.6Hsg2	$>?[Dy%laxK*	i\IKV+mEHOql`&%OrV?%)+sXHN8dce̊_,sQ]1+~ɓU9GRV<N&̴m:,-!9PneM*uIJ/3uxwi:BVa'BGܲxYK3
jQ/cYvLaD
|-VY^^N2]*ǯOboHBG֊_ %ۋ譲z7AZ
5̡nm=u_C̶	
JE,FTݟ

Hj:_uš)fq		xrI9YlcmT!r 3V ߂5
U@ j?caJd8`͎XedJ<
9D){]X(cjVF<=OTlmm/pe=M<~s۫G,T4ѷ72oJ+H<?dhTQWxpSzpj|SmJBlx1v̏Q"BbsTU[ }$:/,(.xmӞQj	hPCUMe>Eʞ~%NvM'өq\Ȉ
ZI_uO<߰uEc}pǯe3D
(R9j
)sh*h=e]j$2HfCU.EИlաۈv\yGVwA,뉙HT2ѯU%FrJvMnS9HkUi$-Yo &㱭fb la+|s
y*CJ&^&F\7a}gB.(Y܆W|{QذeF$zth.Ʉzn9}BRP_3>pww`̨Ty;f V`ALFx FnĖ9l3Iadlo9eV5V UM`rOk>H"ۦ7RXPS)2VA81̼M-w)l["uW|@.9*I[ʷA7(zJu &<\[&EK./ȭM:=l^OHV~WÜ.ʅ2U H,iҊW}X&[z"(<`w|Lxpq
]Â&^RB=KX#q]@~cZ#HBUuLx4bWkby((V-pXxB]K֪"HheÅ6ި&Áz3&~FzrB5ϻF|w.#b
	gb=LQرCF<M*)hK`, )l ޙtnL\+4FA"4/SDiOJm4IФ=.f[mSS9~<ɽ>#9d:Q2/jî̝Yӆ":pyH-#>*M|.TDͺl
h

!T,f_me*FyAdZL|`r2zFv"x^eui<cE&^H^5Ɠgoq`,r:vFV̟H8ЍDF3"#BIT	kEchu-DӐ7mԀYCyh믕n,o
$Y5yE
Y|=.OPn8B![jo"*Y G L/G	i*~CMmܙ9ћIi
%LDBt`s*)~jZ3y
j#wcBh7.P\z"ɦ4lT@
0H~YeCYi(r{s
u*I@"݊7)֣|H)*p9c:fQyCX>6>?{#
	̒IMfAzaZ^z0H( ^^)`-Dnҩ@n=:RDu4$
ĸG6eT"Ͼq#)`K-(Cup[BuI7u"%|n.$"2ky:GID"9PlLRWn)
&;Ѝ0`$[6hB<h4-ϼA v3v*u=ðl=?dLSq@mf5&ҭ6Kg`*`f3my^{#6dY  J$?:K
J/-lڛF*9QE	r:iKH0ۥGsvk _WVD	vvB6HޠfsP$vYKqlbB n9	VQoDG.*elUj(s:tLo<r4&Z;X%2W
cj,DHίuxU8*&eWWt/6`=yסciH_ޯƯQ]'.:I0Bb<׌3
EіI_j/ɰT܇"V1{|D鷏ZFoTT.
G6ᬖCH䎀JY$uMv49GzJ­K2"p1bjbb=H'gPiK<F"'T\/h/~vkKDښ]ÅPdUuu\gOF곧9=uUn`TPRCvpŜc#)y(LŲm0΅LE\<DdiZI}tƁⳞ\8Sdx"Hk%. gq|ͮ(fGqy=̎:!NFmvlwq׶B#6'aKDT	3Ah~MiaU2ɋ~4KrkB:nSxFƓ,RT`]4 & _'`.B/Nْ"ލ[csYhx[ !ʙzE׼ҋ]`uy/
^'ށj49>#U畟(Ò?}ؔ[v.\{e!KC:Tk2I`YQ '!vÀ+%؇H;	@W&ҟiq:/1p)WP%ru~p7#:>forr Ub
(.?1ڿX	#RJalx#MVd@\_f
_ S<$iNJT5tu	Z:0&ρYHépN#MVv2Etagb) V=Hr0KJ$`W*6e
n3>*ڊ^wj[df<}KR٠&B&l!sgqmnYE\S12nf}e@#xmc*uoˀ=bi_Y!rMnn#	Jԁ6o_oQ 0Fѫz$KQ1ϣNItL@yGJ i;gho^e"qn~_VgE[Pi	ZA/U *]>ǀVӡ mțoA⌜HVi	{#_a$&Nȧ4٤8|~?+&Ī^DThJu 8-T8Slb~n4KZS8g' By^:SB֛s[e.$#aU$}ܼ7G=ZX`I+4YBJ j냚`xz4Elr'}_B⭨C)5vIET8hER8(i6IyE$vXDX楧p%v!6{s3m U]狑aٯ`[v_$?aEU#G,?6P^oȊn_ZBDT0Mzr'1[E^z[A{:_ܖn8pКV2xjb>rf~:2 MCU[@0W&l iT
,~QT;.rLA
Ү	Wy* 7W3>s^rn=BK;B(r&/Scz~ y8D#Bg)5-mdłCܑ̭o
0*|vd!) #?ar->8 yבR>#fkPA::?X.$]<_<\W@\ȾJEٜLx3<d0[6d쓙

i;̭/cE%0{Tz%cV:5f60ax\+`TZ}wyUyΚPl	KfFLNERLn#y` 9d]r
K/
5j!R3C]5/!gj
#*WnSFA U~X?Р-tdkFn:ƈaA:G1%c\y7a#ȇ⶜eeg	xK|ep
y[u9Fe%A@kRB_tIg{hSD$g\WW>}
O)&B:AIߐ8:X3g;nZHU.yR ~HL}z35lGt
}W.b-=߿w$8z5Wu(TnEF1j#݄5`	To_<!:"w+q)#HMY
N<ݿEy v]pYr
g9L#5,UL;%2ӀG@-W[H''/2z9
r{a#+	&"+jkx]kpD6΢;e[xhmIaQe
":M鎿n+jKJ3 >p%*	g$傀UP4.2k. 8Md񑘟9JP3&cAK?Њ7Áȸ0SG6iX5ÿ8+!j-%[`ag d±bK1_M1DX'`?)b>-H2J¥FS܁m
Duצk_tԋ.QG#jByxA&IzUGzc
01a5
4<K~>#"/4nq=@	.Cx8j.ݭn0+{Rܶf
204xc
pIW/؄3:>GrB\xxԸє7i3߻I x;V@H}g9;,@9Lj$~\S{ Ebaf5}I"l
:!a	^H`I؟'a.X"zrEmu9Otd@^k|vTxX F8 PD@7;ZƠgWVۆ@Q)AqՂ<?xἢY+cʑ:IR;ti2e/(:̓mR282	y uGԉQJp'H?vƘ*6M!3wXqsz6EE19ڋb3|(x8,\w UXe4`kBK9l*(h^*LA&0W<rMWv1Fi"?:81y>F4s'|tc<ONenB}F?OD@-\oRSTl?nRrǞ*A`F7)
pȃ,2t_r+l5YG ~6M[641ۢ*!oQh[F3yw&
"N8+ha
L:)u˅&j\ǟ."LӁ+	9T8w;/ThI,O]A/)HbT𺤽o:I/d>͉یUMH^zB+od]Ph%W.Փu.Rg!I%RXLªD5v4	@yșЁ'C;*9KW?<nYwT8(*iHV\Ii%?~-ɋ6gun1UO=/
 <t\E4KOWS,/9YL<Kqm22|iиZP
Vn	h/0 %h '.Q<'3
]HѲDݽχ0
ڱ_\oP^+墷RIIʋ\%n	E&cED,[AnO7\)V6Ϗ*F=Z%P	56)Yu_S*qOL9B:軬Ϯ"Wpd$iIµ
ݡ_4L7E" "$鑚*a"3i^l_<>YZ`&fb"DƋQ	qLUA ?"ȆY߹|]5MH>UUzCǵy*;d
.ϧ
aTe$ qJو{Vׁ`#i {__@ȋ0>MxPO0R=W0ފHmWys;>gKST.y	R.l1T쌧xXL݈\ʎĿFR6/_<Zʍ| N6oV}QǭXH/ |S2OdM*#'%lO~෧_R@ɚ,Ta3eUF0&A癗24MH"gީ"Z{T#eȚoe["tdG51EG>%gec	?6_"I/A%ictO3bDoIa<p6*N."6G<&W	;+Oqt[xWi]0&&c(P2(6Ix
.a e.uxMg=XB7>qDVfꌾK	eADN6)+֑SuJFVA0G oѻn޸ mq7FܦMx
76l@ 0Gk
҉C:SZoK"
#y~< UMX'iGHNmO_Bz٬'EGHNH*`tdkV6H/+[rkzxSn&1؅0i(g%Z@ٱ|iWv*Oc9+_djp'0'4<_z$[.d]0lF7Wn
4).tj^[rF:gl;5/;/<lF33Oj![JbWˌR<I?֗ר̷eG<;x~|{Wywbg:g54IQ_,z±%qқ3*B-KNwAQ
7w9p$`;N݈aỉbTޭB~r(4,Yr&kC,V{ d ٌhZK5\V	y*o KKC! qlL'QTͥ;\*KW1 [QEdNMg%DqQܬj
xգ3[c:eO_LF-0[PIUf;MN	Lʬ`P<.KcgR̂U 	X#AEVN,=R(3HarGR#cjK;i
׏(?rWQ wsW5q\`0k:lL	WRLBlY zV9F5bel%Uv[Ƒ9]'U@W
~h/w/J^nҫ@%>~7|13mBqA,z0yԆpr>mx>wKxpoQ{NobAup{"7 X]BY4T8v-":.y~.@HXո_4Ty}4y-*Ú|]t㗲TW&,e/
"SjZf*A-G"H+TL׺VnqﻢNΓ [MȃK:ywTCӝe]RDL .XrP3PP$fub-DjC{/˯*F	{D;GAB#rV^Ѐ5xÕ3a{͂H/"ރʎ嶀vkL
MLYk9V&$jI*aSzF3Y~HbXEnuO`mbIl;PD~ReT4
^Թ#ַ?w0W#xVY
p'RIV=PwtDP)D`9iT>{i]P
UJ)	7My?|e#e5p6w1MHKW-	-/Sg%ɍ$+a_>Hgg^7]آ*ʻ-!و6,7!84<nY;%2Ǫ0%~96PM'@W-cO67VoGVgk.U=Ta"ksTZLO.|VוBB7	,Ќ%ϱgATx} R`j_{jJ{Sr>(UG¿C7aeL!-iWᛛZ+
hx: *$v.ekxtGQ$b
j\Oa( TiI0^
%䐬?d֯S]ièGML/{0F{AX^ h4qRKZ`.;R7b,S?Ue]įD5v9q(6d^/D\w<,3O܂$o3ZQWG^@Wm7$@M%F19wC(DmӖwhH3 X`sVSȊMY6AΟς/ZlтAf-ZFX0}ugrT6XKHቭѢ͊"!0J]_5nC' Id!7Ƚz0bf	N8SS+"
349̧vؒx&öKm˞aC?VOĸ!Lʒtg 譐(Cd<#pma+0kEq^~"*BA02 oE/+6=We2;*?m@鍨i7FOP]o5}eCK,D:U릝ȜׇgQƨD68}A{GABJDUөNj@ºP;w.<GzZ'zٮhy`*`}@Q58OEk=uɪ@d4L]y@(3#Ġd5\3ģ"5"`fy>;Oqwpt2FDŨ2
1
`Lƒ1u,׆ q?VLV$2bGRK%7ޮq&K"^
8
sEww8Z؄dL=Pˏ"~?1%pab Ŧ@bCugq%n:e*\[Iֶ<Ahˑ0 lvv5fŪH:I|nEX>x߷Ld}Ee
Nv9->-Xg5)Qgs'&r'cjZg3i

(f<lF̡Hb~h@5	򑧮2SH́9׋lx3#ʾ,0$=dCK-TZqųa/usF!^ĕGKq(֝W)+J]hNt/8*ϥCZ-;^}_b/|;%wfv) $Z#P8mSbU6r%/N_9weU;a	Ơ$Ј^%*Hjxv(7]v}d>*j1vDYfk9 WnAחS+}$;֯E"n~ *⠱ȜZmIOU$:b`p1qt]	i +
|Dh3ڊVV&:3N$Jog3z}'*QWPFQ1LVՕJ)ғEr]yB,qrMI6"^BE:cR6:*L$c.Y!
=%,D ;l
 |>파y|f_AJbb*Ѱ``qze%
}**(`ȭQx*<yj;4×O*ih)]tR$O,gl[T0C%8
 tc앩b{"qLn8?'\	jCq{:dTRImZHJ-2S5iW2':*LH4+Hl%q9KDV]ڲ'Iع% _Bg;h1CzN\C(X,IIu%*
gq p%ӛ_ HJ?!OR<q6hZF?ʡToy=Q,	E}pjU%
@ohEͨE0EM'E6QqPT6}"F4;
׃:wu#;5fȢdw@|8[@N69k/}Ae#sH}BIԉo
: z;(ҖkbĂؑv('yG1y^BoFqQx+
0,F2|;z?a4 H$6Ť$[OJN<gÉMb="ɝSO_C	~AO~Lw\#5H:A\vTde<)5;^Vҽcd+PQt0\Zd:\Hv@%31ׂIu':v7=㑿4wf[ԘqehNCe^H֭ldq/~R
^t9jvC90NFv娩
HƊV)mguݤWXnH=II̦CA7Y~ȞXL&MɮnmUj
e$ߋ*;V)u?-sm:hq
'PvcEQg-. We=VE.[+ɼ^\>&Gdrh ilD)YG_EJ`"RamfM/<&FA<IKXVSE[q_vD>KKy,ȗ-.Th=IGO.ceZE
_!dMRmp`xZ3Cy4! 2GSZYX'r2P)$ʎD499S]vYn*-
Q1[2@ja
Ǹ+F¶ZZ?>yRoeB[6%pih;N̽y"6mJ=w8!rˌ4R)*zr>O3U@r9Tlܧei?G	Cݓ)%T
U
*!]`yQy?si&uBIT񾛚n*rm(`ef/wRƧda sVebʈ9١PmU{1saxBJ6R&Q;dvբ
S?րW0L)WG@84kq)zNhƂs<zy-2̲va4SL!iZi坏
&6 
bd.Y2!R╥~!hs5EǄ5Abj%]X#.̒$Ai
<5L	p+?pn.Jb
ܵfחq0TPk7f(.d4ǥ^Ő_T<0	T#< ~OԳȖ:ZXDd\ɔ1G=ZTEo+oĔdNHZ
6CLwRz8se^b0(
gswz`;h#h	?fV]LI[.MM#>ʣ{9IPXRN?d*
%4ɉY	j*g}ؙcM=k)`@ 
wz0B
k3:3JY}?$A	o .#My!E]Z+t8eDẙp,vFFgLo	X1^.dk$7j7J4Oi6M	'㨚v.#hY\+sͩC{^)xY|e"XZLUD`ݎ,# Un@;1:ӺH4=Qť]wVٛy95u}gVؗc/,PV8ePS,drG|[%4f,~$ ־,DIm#` wzH/!^2Α mlc
̤S45Ȉz7kؑ29;ހeCE:Dd+f]~lGP s_(ҳH8:]VpQAH^&0qt>Z
23h;S\jP*"R*ɣ[҃aL:2>E	8zq2&9y]cW+dO|V[(`Bx?5,iKJIEtVB­tql-Ŕ :ecW	1
2|A^6bJy2pu|.XSw
1
^gA%#pU2HUjῘ|3!u阖{+6})\1|*V.b.ga~5CFMc uA5ë0@w9FWv7pU}_&SEҩ]χy$"tM4bkvюwOW9m2:oIQ ;S.mwX@<S%!7hh;_'%-7/Bu5]Oqe,R#o:
ݬJtP-Z`n ,e&8Xl@%D^T.gC,3edAht\.>p8 ?P2Hp>*sV	@a#2c.k LMJgsf^	w/T
Ok~`Usg6	"Y(4ŚYHZʃÀ/TDma'fFj&.0Vd#J8?Hu2(8+(%<2p1ai+1[e/^Byaxg_p^!I^jgȕTu 037klzhZv<~WBa'ϝF+&~nfwk]fv3VI{>WS[ȼ6Of9b3
/Lfv^C{)ZYiK3b8&EO
[g
)ٹxΙ=g#l` mOQIw܃ĴȰɉm"h#܃Har6`AmM:!hƪU؋{@h⬌xg	ka, hx.Ex;6C*/Bd[҈0wbvP),$Op($"
0_~|/n9 <T"//ʿ該E7.gdfIMO.F5(f
|~v&"JsG3!|7m2ȽyK`2+-3ˍVBVphR3HЎV\\\jf!XtUDƞ	e@xL%Jr6ܗMJX#oDg㟊1> llg)ٌd8
L*
G񖏯ԴK:
j3-mLCҩ.(;eU`q,#}aEDuQj2Ojp6U:Lc"22J5sgvJ
8]g	r5;'^#ՍYG']R1} !r.'deۮ|J.3[-|ǫEvzii<ŜZI@l=rTkj
=o%yd(ψ
>ÏV"<,3Ց⒢P&.ey7x%FBd5PUk!eLsXNX>-H ":x7e| o'+;GI``ŠrgqY7:0>xb&en1WF&2xJN՝f31SgfWG<+
D`Yo".FB*\,e/N y7mY!b{7Z	3Иhӑ76J[WVI
FFS:T5uRe"}ŤabG1NBF4l"[3~XFfb5,>v4d3G\9?sy8BZTm(?|dp9na6iÖذ"k\Ct_Vb`^\44NFF?Y'xy;5ыw`lr=O~K~1cOZPʛv
@-udsG 䍮j3}:,'^1 {XOZIvI(GM^tOeJ^+Ay̶אs(G3,/mu&[8FFxDԗtysHƖTk/>!Fo'eC:`՗#oC;HT)QB_ DpYKy阡i8@=
78MN6hǙx(&땨$V	YRc	h
6xKUZ<)68	ɈXkP_h3i=gc9j6[ᐙ,Y"Zha0RW0Mǣsx-gVD?u8\0VSVI
	g7V3#WUb ̈L")[6?[ v8[L֗ڂ9::wO1)d]4'X?uoD1Ӄ{$dZ`Gk2Tk&dᐕnomk/׆78ÑxYu)(t[bN#7vV8#I5`4D8E$u
\:jk<A! P
	jy1|l11<.`kUa	w΢oux=Kd(/srЋ
fqk
WFhӺ
>(q=j[VN6oBw0.
4S:	Dr&6SٖFq@h髵<+0SAEgzAYi,׺旂w92=`ӏ	^Ǥtl MZFB4&7
yyn
%}챁绾br4HN`PI9
鎹3DZμYPIT 	bOwT/;C@(+Gwb|:,"d0' aKHFk}&CnH''ΑYp0KNBQ+xsNjvc	
©9Y-[fJ:⇭T.{3P|Bbn
o1	jK˺ ځKNprǋ}Kw
3
(9CsLAs/+0"7hp{J0/Ie9n]@MGR(B
vEn&OX<%TX	1L$M9F3Q_lħPʵd#~z82ayO,/2Ya][ P#T:}Ws=Q^ܲN.}yfHI̞<x
%ܦ1d*Fd÷gǽ%Gcu
+D}0!P}&WqtWNFZ	є.YPk2VOڞ͠Y
$fK1 f!;ɣQ>ń6|Fj|ࢲ7s.>R3$tMqa>`@u
x-Vi,/ɠnl~-6ٺgð>(b< Ut!f(!c
Oc/JnQ'O# 9ǭ&foLEgXG(Uë4Qu sY& .<0<q֪F(3KyvH=uЍ\A*"l
p#

Jf*[.Iá`&'6} }'[{3D}0y&ڄO@c:Ŗg)seZHرrla׳I+obxN#L&D$[bЋN9
Ee;,Y	5eo$>&
<@͉}Ͱ8+224XҏdG}-Rnc4T*nI?4ƞҚ<BA;J9јm҃wB/8Y)\-0Ԫ11s"5ŷ }
6&K] fS<a955qR~}"# l+*%Q5)^As㇉FݩϏB*2_sJP]%`UAYc6B¢6	ݮy+̋όh
a,Ɉdӹ
.N%6{3i4Q"V}Pzl@~YzYB)ecJN|WnzpI]7:GCD?)"4+4nx90qgb#%a_@~rQorg8PZ,d$/B;CmӐ&~01קglj1]ZHY)ɢdx"&
JnHE·>-v! ڗD[2[ޕۄ+`#:=6pDb!pe+q Ew&I&QomAd(F# 11oL 39hN6a` hR1>Szܠ)W`ˈ^Rj1~"u&K;Qdoڱ'k
Y2*ffSh-6H2rf
PHcabݐ,%
'0pGʀѲ{"RHqF(f'hǒ\"B吼:SM}YVhκNnc33l\v n)FpVNegtj`F
s9cWz-;ؕ
ı`Hs/圿	&AlK&o={AmB?%عst	@1v(|<#_)(ڬяaK=T)AbaZRy/yHH=s"jp*l`ۤ3Wx^@̺=IH+e{?bxҔD{Ԩ
RCoy?pT9W@QNi .EKee9~
ɫdaOy7HphONT?NbLXp܌&+ ]EπDb`6lgCŎ*aVya',H2~xb?Ruoc%25cNL4Sκ
7 \j˵^YuՔc>pXZ]Dqh];ydSnXz5PD	BAQ`fCgF8wfn	I`"|SE6eQe?DASSkM7YVͳKLe]r T0T(%f^ dy*V<Pvf}l(w{~zw dAӓYDO :Dhi>u lkr*F,+Қ۱2sD)E<ģT*Ph9kB/Ad3`2C/KŜppvev<ޯS ?*j+4eu`b`z2u
nl|6ӐPn'TK|f<3?|lM	)3Zx9F$!M<6.Av[
7\4^@&u7s-&dTH&/@t߸'˲C_O1UW966ׂR1H>@N4qG_5n7\@<&KZݹP$@}(67[da:ux樅)(0e2O-Q` ᡂ5oPFR	zFJj?Di4Βa@Z"-h"FFyye5MKܧ8.0<*d'y{b~R}t;P~g$Ё2cO~Mf<ָANۘmXA>T`^I< D85f9`USdWFrft#;RHނ
u}$\!rmnۯVgAA"7K3l-Ob&#L /4YSӝ?Ԏ"E-8y4ޤS
:X`2(7Hڷ	`?02*GLL}!0$$	{6MF!h7.*o;9>f'S	(\j"vY!
	`Ryb	uRZE!1C`xwa4e!!1Q@3Ah:G--V~Z*/Q!.{-{]L
Z6VUt:`_
7rLVȒ[|`aCm6V]"f/mGCPEL&֏
.>x_Qdyo'DHj+˰=T|=
͔@فϿtemKRHXH4hD,b2E|@ɻQd|
Ѻ^bi`U9ZϢYmVs&<3. &USd9GWJnchKۿjNY5ltidzVC3.auqi遙筳D/"!xX0:BS+xi .L%i+L#I4Q8MW[׼Л_Xyt ty2]w4qfGzyq?;y;Kix	;+
TP9	OjWICĘͥ>xg<]Z/}`4gs	wfF&ג; kVQZT*S+j艈03Btdhڤ庿:sݧLq؀rm]挺ޓI\B.
XIxS bb)ow؆76	3mJj>b_g9sD/Z-E_$+ }i1%Ky88aF&*Mu{Q&V8FNk"Yl?m٘gKBD2g
!ܗ	y,ivKl&-2>:sGcqߡOݤ>V#^BfAdfO+\7(֌/Qq:2j(qZRW
NEyꥵ
pn{{twJQ2dPK-\a	~`NgZq(Bq4SLd8m<I$ag	סiuoDFۦnAqB$MC+;ԙ<u˓ˎǭ]cBwx/mGICsLuy~y(22' wdWIb-ݧIk$g}Z%L46,AW{^Hpp
>}Fn;wB+J͈L3MԬc,ܓݣȇYޢ'8Ɯ9;;
;ɻ,
ݙ0;obca#DgnFI@oki!18rň^f4\1:{`j &dP\m?o&VE3-(KPOė\:7Z2=Z,
GJ׉Np5EfvI5dt%_GFXfL4̘<Ϭ6S@+*q
C
bNϤBɣjhɂNb׬c9ͦ)p;nv(<"w]ߤ/!ibBݒjIdOfxPMHdzDN>!ۭƕ}"(Gtuttn[7X`Xyɻp/wna#dq*"$m`
@.1GJcemp*60
rEYzdteqsy;HӸr-Q瞤=f
E=1*6I쒷QFGBY
r1ػ`&bbd
E"JTEz Yk',l^ ړ &Wm&M,\)jÕ4b"q(<N'W|-
#Vb
X6![u",g4Q* .Ƀ-ҽYpE)o4}l
-$7	idU]b)
,,/t3=`(yƎQ	g	Q b;P(mh26xGQ%s6s2R+H <p=QS?)2]6Z߀g5	V0d-'b1Wf;%=QT%B+-^Aߍ.c?:;-,ZbĪLQݘ&
=l*bƌ2) RtPo.Sie|ێT%0&S^VD"#PW"'P9rYJֺ >LǓ]g!OTqNfjΔOI,T⚞|[rPǦ^yEv+EtsqR1GOl(bNpSvgw&_Eg3³Hȧ5޼wI1#{%75Z91-(C?
Shoǲ3:Y>s=H,qoӯ@2B7<5rJVmQ߱i@Cpb9-(*jk9/YEI7ec7zYbZ80*#wenʿ]`C6(ɲli`iä"
Nu|C"r]54:jw:__8_b{~.I"Ou7~L;\5m,`ŉ3up¯uOǄlDEFD{1>MG2xѺB	A'ɞXWq&-RV&D )Jl"C ',Y%|h)F$ *Dl MpOaTw `@ߣ/D$r9jL9͆n21YW.T$G羶xȣލYuUJ.dKuUy|J B,x4y/%!cdlruk~]$R$/|hf[s\䁔"DѾu3E]T^y"P_#q"b=EѺ6}n_@ZK/QrZ
6M>j>
%mUi`1/
fev~<sf(u&ZuDC#厽+f|Txb|_Gfvn3K;%wQ
b&X2\{LfEfbDPr8XpLHh%@ܳ"j
wf,Ֆ.>*HrCN
}.yABc7U׳Qn/^6)6ɧzdK<kUt1
늁wG\l1b2't-scMl;a\mXlE*pMJF[W)Eƶm%COEJk(jf BǋDWaѮK4='sADLZX3LլK	#ϡp1t!M{r  ^UQʤJ'Φq3{u0җΛrjK
dd !\[
-'I|yܝٜԅBJ& z:,RD#6ni\60W=h (_29n̰/ߟIfTK }R	 `aX+mҚ~?%!S,.)2r)o)Ed/R6Ո.	8穆GXLô&l㶜L2	'sQ"1C捞(Ui.Jlb||Rl,ބ?s^oA^qƟ8Xt 
sAS@hqu_"jpkd؊YL֣5CHȇƶtdRf0-16"j0ᘨ^Yr=;\6!lh,F'
#;@E]#1w0M\:Xn\y<RU^آck'QOKٲ+0¨:q%^Mp{2xl
l'|1}#hF
79w2BYtץrz bޱFBa-zl{|W6}`H@nl{}lml=nǡiwV%VubΤX0+gҍ~e"m֪
I !oQh?ƧX0.:"11	[rSo.)2{O#H˅dk3+P)#d*x
E66x<?J/mJz0km&Ý7#{nXL*z$O4)Jf~5AD5wcR3M&D~6lfM{Gc0!=|EƧWdɪHVţ[ÓlWӊ
8~3AgL`'Pasw"PqD	T|[6Sŧ
{
XSz8kb)/TO"08EՋaגPX^L`Qa<mSp"ZH3&uB]Cm
ƕ@%[:Yb.bJf>Q?'!u4=@aazƄN=MmnР+ۺ:ES7K[}ڋ}Uh`9.:6i<-zX"}7"C!+5$tq,51xfOPQGm?nγ8fIIISM
GFF]~5spÁh;Gn
],&y\)I1w}u4UŻx?OV^
$.Vm"f,)EZhǻ丸uw@	~1.QYjlwqKF~ô~3 n@t"20dy- 
ѫ唶
\}
+qnX:7+I%<RbV\kȂfbk
١n\,R}WeOHrw ZyNeYiZJC(5GDK8l_z-q@yvRX-eڷMv
|F:h
excT$xm8fh
XT\
RLǸלC@W-:3Nw
ȶ]@U/"JTboP̼lۆB»v a-Dd۪dbe)⽽⺷8L$qƴ|st#5+Gȁ2*tm$\#S4:Y<^(6Cz̳+VOdeMb_YX|dzFE"RSq+eEkpD!Iy 7/#1XYcB^8։@8_`7 <#ɞmZ9MQDjGPkͰMȔ9d 4G>ZT\=mO	9ZT$U
Ntv`"fA
l?lGVJCYdUFHaX<Yxlntp& UmLuAK3m[yޔUޫ1SC.!1SKTznbhz3n}`(p,eG*[PxxO5X- J%NxsjT8Kw2mq束P/6=9YGmcmۯe<!nYhuh)T-Le12,&XLM@
!$ғ);iDM$EtT]L&љPU5lv5Wt2HY8|"<!$Pk\;Yh^b_TbUV07x[V&vK-FuqL͂lpd5[waҞ*`\c{ɢ:mlE3tۿPcdObwQTV#tD#HVowc5d&$p4xrVj̕@K:S剜c&nό3%ӸU96%F=TM
ā6(o
09YU2(>Y<؇h9\yj:v=&[MўqƶR=.S'ә)L"G,LrEIwDE$vXQH_ ?턄T J-LrF|CVV V}T\&g$Q,M`6}. S?g$[,NS='I;<I>hO[ ǽTYH{ߑlP*Qc53
ᘱ8z'>ژ,΍w
[i{7eBy[2N Ddos+ 'uN "uh
H`S jZ/$/h@uH76ZKp !!/SWwE2ZN]'T|]6ӳ27hH}3l9H@m+ʳd*%(|J!!o
DeqllmRTv[L-YԚo{+GY[Mf?+C9xvl|I DVff97O
&z#:DфE,dl@<s6\ؠ+vN%t4BJWdΉfrH*)pyZ`fވ`QߎcU
=Xe%p`
4`/[ĈֈEmezz.MkD,65>HW`:^1Q9c:%^jQUS:#}!9(٪o:z٢# !MX݅R*jmqь'@xG@-i Ζ#̎4tB	UR:qMEp	Dfu4O>G*5z>t{pbZzMp:6]Ψ"#ξ2m9xl}}hL'.ԍ`o:{dDpƲ,yR3Xfg
 
$"GzN!&<'c<raLkžЕ0_[9qlݍL./ǉ!H˴/W"FJ`_޲Neʓk:4lNso\W>L:<̉K2taON8V6k;;"c`#=qN:Y]r\[xHQU-s/MS3ebw_pi4Xn~;p|oKoB[S!DRoz
ce7lV}Sp!l'([wHe>lgq|֝`t|#0)4k@Ǭb{a9W
[i;Qm=M@N.o>Ф-F`[E\VJ8X@:~zNpYJ%t۠aLVX<xO:~CnS%ddi7.gQo(dm"閧v9t!w2v3sfiіlczdN=*L.Lwz{s F7Aۆ޺ntPd'
l*S"Z>0S#a1ѩBl'x<bct]F=pBOw4l揅7!);!	#3-'xB+ZEa%MZpw.R"VlIC}0[TsEV]oHvd:.3N\;5φ,Ը%D\kШ:Yx>K;L8ltVeqJ3SZ<IjS +ְ)f(WPljʠC)tA~<5vmrm&Ow-b1~FvbVYiV pzgr:vn/vzѣ8 l oZmJzM6nڸ!"-@ )mU8K'|#	Ǉa.D޷p譚TlK	 ҋtMlp
ns>),	VAVHț2 jfk@مYh)<nR9QHWr.mл}ӶL̵kpp^OD%Br%2̈́Q|	d]^G_dّ^!FlVll7nb^]38ND%dYĬ#N2me2$P7q8
KD2z<I4rbNhϤOI~EڀHK<c	AU̐Eh
2bt˒K.'Az@đ
z9ҏɝa%f6GUxl~lg2Ô{P2J+g3rծè:GZg1> W\BЉ/إ\<<5f-w[Pc#@n!&[а+[/`q9usT7.L7ԣ'ђsUԢ0kr6zt%BTcߛ1/8G>)/3N9kMB'ki"MU-Q:5\xo'2hpbvsx?c_p/1P eCi?sem3iɅ5x1Yϔa0cl䆕E.tƈџk?
:D	0 ~)F{|.`OFK%h ":@^P2Hj
Lmk,̚SwxUx5ȭ=OBFVh_F9Ʒll,<?
C:KQNh60ls7#4rLO(ziXV{Ձ}s:$UWTNf}Y MތD`$cl>
w>L2+3.2(1YaKTlg#umessx
FUM{j$![F/yGw䎦pHe;Т9(&@$Q=v({/ri0rZ4{M# H`I(Mt'Fx%
b	IajDbu):!4 .q
0P=~^%D-	qs׈dСwzS#>@UD
R,ć_L]W'|sL	- ķj^1D3Оt/]]R[w!I%U&{E,e0]PPX$dc"D:	zb'#!kٛH3{qI׏R8/c$י:U: h""^HTeu3XD>`Y!d"(8R/R֖N"%Fѱ8']ՅQ&9q$LXL&,0r9lR Dd9a@kfS
P\y.&PSK`r?anC%ʄe!p[ cy 3NGqC/^\Ead "Zb2SJ}Q]ԕt
scxCM\T\qݶüQk _S HNwI>lu&b~2c-!Y:`A=ßBׂl}1CEVOs<XR>/6rn-ဧzldQS
9p% j*=g1@"?a{/BHhSeMv<橦;ڭȚi{XRefjS6f(2
Lہ.(v֣TbNC"aj-= t
NVّϪ3>yG0/k	]ê6Gemt񑸒"Se>EDnLw~
l.,:",m`
ldzf
]濐K:o+eyPcq*	=gbT#xEM#&
!^%.<o6z[8`&9-ZKI.J]H!p=*27Y%BQ68-	;crQ:Hty3#4^l:t$g$ÇFa_	ϲY[XzBG)2  w6mըw q&guE1$bZQ,QS'JdP&z+㌭O\xAcY`8HNx$
W{2;Ú@߅0Br7F
$AaXlI8 k;()b	LEg\f&k ^][D,(-^@(mb-/IDi")~
mےDRB`-ZZ٥ٙsi{6RnTKl̼NѥY]`p*T]A^W6}nXfNAl6@L7	g˹]HEXBtL}S "!Ǩ^|pY|g$~/6qH/\d#]ltnS.;&@.%}l\׶QE6ͦx 1p=)ҙu[A͗FyP^5VH4`ܕt]sQYdW7]&U<5,tkbI[2o)"&Q6`j 7wwƸتlJ%AO@8ڥ% 5F'`}F3e3
0cF@w{^O7 7%cl _.22G/uWbW.ߣ3~oǱ|0W(;{v	H]:B'LBa~I(. 0.OqxoKP!U5mf5ey|UI4!vΑ_paN:?Y$$t*i)3++ǎ_+B
HW~]Fh+%iL7~9HBJϾ|]\p0,)Wķ_}<,AIuD'eF(rob
|{Ag Om'Bog*"R|T
]M(uZ-y3b$Se2FaR_B*|mL8]*J#@#hEu/
#hHQߍ׼LyNmfD"ñ>L'.k)QmV A%@e˙RБAG:W$Ac<ϞQrܥ3A9#t*%VDtjթGs1Qq tZ -L3pN X>Z@5C :yl<BS<ۋ
<WD1EM5+b'S:mpi5s_1
l1(ś4Wk
#nǴ[īN9SR(*,!jsN|59/\A3{)tdLO#R.
;a\%i%n1e|Ah^#-:MUq+aH ~G
q~/d6gp؞fQ2*ftJ:+5)΅	1i'Ve?{_7ɀ'W;B>ǯpQJ("$;D-4	y@ pm/̜qZL}ᆓu0P՘ԅPLOwJcKSgGsv,,13	c׮4كITl'HӱqU"eu@MDa?Qל\ ftA:4+cuXlU9d^L-/dg^5^
D&EtoKii9j
@0ȟjI4i߃	§wAG΅r|.5#&U/xblVoE`m@6W[[]Aˆ20_R`\vP:I+Y{i17EV2!Q]Ry~-k@(wtXIyF^QM*W3[nޫ"Nw0,	jH̏6M%{ɰoH]5Ҿ~EPX3]lGzkVǯ0KqrQ*("ލ0h#9GSgcd}wΜ`ц\6ށP;㕆0I\\W3zOJߺ#z/1m 
@WyB~flї^o̬P9KKxAmIDfeQ(7ahD="ѳm9LƱB zV7ÁwAHv`7s$+ѯ"!D4:a`Ea}w^&N5l8 v<YQMɘى\}ͧHfU$Mr6:H`ĔʱG#q&6Es(?'㘚H}*\Ë1m
*os|O"6~,%ȹ#&E7&g a]3tj4X)ÑD0J8H(ήyZh~TuizETHb	yyZULڡ{lJ8y Ri*jr1ۦ*hQS$Q?.a`xSk+~,<KyrҲ֩96< ,/B"E[.4̥رFz.lMN#"ފ`BNS\SyND @H^#F>A#n25۞GؖbkP,MDC47Abf貑0,.(SH_0P/W[װ`޽fjb7C"tAn)*(_TYHZCv:4{[PD|e|-d=Akd󐧋@7ꖋKB5bcw3QVenNYD*8+;Bx؀f=apVh!^͆rվ27gMj6r9FdԆ⦱\jgBـ4OACZlvG6V[CJ\Y
`B
S"JgDS
ы*&WB|{/r@vX⿳O(UkqĲAW<Y)hbN+eYVxLRאָEDIȚ' @y2~Cw)`ޡd8|X R9/&e1O[^ ;7;Et娬jH"L&2~3?6w1/.t4dZi"7c]LPq4*QNe!ࢯ}6f)~qLABPś ~(-$(w!&u[XgS3[1n,Y#:%CخҎmSP;'ܾ[ $bHWD&h\p(S#3OT\,]gL$#!hu^Y@:iٷ;;]A 3R;n'vi(Laqr>&xu;9h;VQ^G2S<"4!
'NnbhYb	\<A#֏ݳ]P _oL!ޅQeőYvRRrdr/A&\-I*VxE2EiB8QwZq(܄FWcS4-Xhny=&َ'nGZB
Äibkp-v $a^eBrt ]KCJFnN&XKzJX i/;8vd5`F[Ke!+z.ܖC
\Azz䫅iLS/B!*X]<jc"srl(e.zD(|ADci1#C҅r@lAW!,$S
@
9Q&D}r.~2օVh5ng%
AMjd3
4-5	$m;r_ĞFM;}/nCNtk
ƭn, >L@3"kI 7 @!\uÇymqceXAJ	?]xp[}~"8A	f{fIe{f>,eC-M>70'AIEc]ֵA1'DaU&G%C6r23'aw\T]p4L#fed owim/a_82Gx9
UΙoUJS^V9Wu1ۆch٦{H
	zze, ]!Fe@H-7q NK}Pl\	ϋ0*#M8*N*)إJrd zpfC5c,s3)[p9Lqrgs?vX5u6{,jvUm3u%|0rn@ǀEI^%# 
#]m husA@42!]t/FF7ؙs.
.|I$&/Cx͕U "ÜO=3񘔋zC1ӏ
;Ė~`j(`. /BGԇ2Ԑ%mhnya|4Xϫ=Xn2|.2j"L-5A C@# y<t"	gg/IgXI,]E(g%h04YY_ͣuC!ie<%~B6(@W"e`kygG5\\:x!	dC<`H"/
fD7=|$#Bɫ U-l&*;U4HO Oіz杁^yRtOJA+FOM8	GF$[4s;{&3BQΓ2g`e(<N6\a$
IȶTSF^>Txo0fpb=
H0 (,Uި{o)Suf2E$s۴8hF.a<S')1h6R
;,#ϰP:J>ѨgڶOzGn/hr8f S$U?%Ėvruv	K7	
/S	l(81aeݠ.#CR5YحnТ~,Ì$NTdh̍ZF<ᕲ]+AṸ'7혭68BJs^ŝ4Β*,8g
`s$Z#ӂݒ6-ڮ #c,,*2[;2LoIe$G7B}:g4A9*ac=Ul̹vn`в	q$˭7ƣ"LV*g3С?_	:b˭^bUB?E^H&EĞ;2mX-|w[@RlD ܵ
uMQ8Γù D3\@%gQz%2Ţ B~Y=Gբ4
|A$Tx#Qu2`MGO7H\e!L!ES-3
v/8ictpNcN1|y[NncԂY3LxQS%MG1
]ѹ'Q`tƊxRia
8W=垵/XJ/|ap	̝"$b,Ntq4hIDܱ8%J)k[-_\3ZeMt| 3)]e<nK}+i]tXG[ޞ;i~m0[j)vQA6\IL}cٲ+Y|qم}h؟Zo"1x2Wy0*-s6
CƼhW.7o+zG#PE.!RJ@B[\[
TWenoM~$@Ɔ'Je
N		3QJMr	Mj
Ȩ*u(/HHj;YeZ"3kwT("+ӳqVAQ"btc{n=`T2a m4Q>ՌMs7oH/ːG[pZנsiv<&WБv݊n5X@qS0Ζ+gI4x) nڐiL]Tn;iM9LPβKK|@rV8Vel~agx%#tLN|[|̝HBܚ|z$,Y5Y@l,U8.PUzjwڤ	jH\}%urXDZ]cG#H.oچ߯>-=EZu$(Ee !n䎅1Dp6!nHGV	7eS-r-.(XLt[[Z{͡A|6)[;$`ڃ=I&)Z,)s
C4aV3@A.C
#
]J8V"2DA9qtQKPb[(7!-o*1x*Mh3۪GN&M t+E<F_uI!˾]+dN|O%a_P}$})#p2oTJIpF~G=mˉmQ<zv=KTSaYa<%byz+X~0Gy
V
KHYCr562
%8[<&ɈXP4/mKS[&rSwhc3r;RR©7qU iLz#ՙδʡb苴}D(2f|hLq7ϒy$>v
Zp:$hՙ;4ʅFH0DGVv0yrNV?!Ǒ>dmZK]vj%<rE<&M;gRiux8<㠕+x:
Ϙiu0XPa7	VU`;\w=(9\s(S"ؕkS-L'h.j̳Q
u/yousw$=
(tNɎOgAs^&$WIą8.xRfdWmW,Y5(sJRtw6ȅK^s*?O"_&}a칎)zљQ<b/MIHk6ͽY!x`A7*Ī-)BknZN!EWYpI
Nt">nHv?JzHAP4-iXPs&:r6z|`;p^Vəd%Z)<́|ҥ/țGx'GrK*D¥5ٛ$t;դYݴNͣNFFLz*8o3>'u)hl+u=T[,Ӑ&D+\;D뀮2H΄mI{(}Jԃf #jX:̎TQ,dEN 2u
r(e=	7rۄѯj!:1amF4Hy_^g2IǷ"CפwvYBo̀&]9iPdD!n# ZV{p!	8AjP7p(9Xi嫺즟ie b~G+WDEj2=W*,SL' >_8TqР,I('ઠ?2i:CI?`ס3*E#enEfr:]3A NG͠6*kGn\G\
HrOރ!K/~QU>MxUYA&9zvyX<Kƞ0q8K~Lf 4)C^	H6iÔrxJ^}q>Bҭwΰ M0*ʣ}8}0 +%^Kq{e)#d~٦2hdfΙ̗20A_֑5Yrrd.e!7M=>%b!]<P]/KTX#"Nhl
W93,x!ZFj(Ģ&B]Q=be
M7-BTsvY^ O"LZcXǗ~ eQM 
 䇼9Ai5 ɍqdU#JOwݒ2[.z$q24qlLq:,f;
_4bF;bu"YEB=D82iѺe
Q@FnD	uon[P2W,K%9˙mն
Dj۟K(1I+0ԑ+ }hNp`,r2r{*C|Z
'`,K_lF 
"x8@Uii/Yصb0 D%">7,ѐK f
L?+2E%w |'tȴ&2y<D^wG7Ͳڏ!o`elFl@stȭ~Hϒ(9uq21'&hyYfC;mH02&STPEY_,O=bI}AE65kH	X}I݀3.P'+<D{K_@(}Pkc.^+II|aAvjY
:FZfq$A鴽K%
J%.
z7xScr~,dL8ܜ-9Vc,f|*tAGx`*YE֠b K%ZڸB2\:|g>)#*{u:˯g`Y2b^Î]t	n
+f"	@+{,-Ӥx
lAEU<Uy#&,b-#~,
B]D6bSaU.,'d
ellptSuds6L(*8%tx/>(mоSCz~&QU2CV
n-<RɁ8zEI7AZK=<odiAq(5(
Qp^<#w9CM=F'	^d<wZ9ԊO
 e@Mo(6>Jk:2J-6v9hu:/<'UEr6ȷuXy~2i4: 6y#*׀]HG%e뗀%V	c֜MMfOtA:E_+!#BfRsc"m<ÑKNlD_,mkƆnKo摀?m|:?n	4SaݟHM?؄*ao_M~jOwI5&BUzCq((:Ѐqһu>Cc#e#G?ge؋>`D6&NGej<B^*{`eQDbhSxr3{b3M+xhSI7z7!/b)/߅c'a'U)*&4d툓װp	zt1ZtB9(%'{cy4qCVE`ml

}9j&(ie4JGAATVJ[ue]Q$jfSmRy&(V*[ŸũP0v
-:ll2?0_7ms?s7H¶6KaF/R^!ruZ?
üWj\z!TBV'	e"֎lI`@dUuAk*rB-%&}ne-Bt?|`SԦq`JK}~ZLyB|J afz%7 gR%1j<_Use%RA>iQL
f8\ڇӛ-Ve>0W+oӌ?|(PmplZL֩op)D~p֝a~g$,<pG^f2A`"\+6LS6-&L!Xh_,oAqB8{6HO+4T'stMt>EQy8NLLX;q0fV2?N8$lec*RjlKr]6HrXGʴ.~dzU]Re'"wTpйDM
Ɓh*8E*MV#TE-rZ.xiD]w=~`'.zg-76m=`ת}z珀WjQ +U;>!Eר߰=̼eGv{jwlDܨ{t&Mm+A
޻@p:4>sV1L`p
R+Z:/0T$1+慁]AD'G^[1"3vX_TX7,RV
ی?	,W2u+A/81wODD RdnJ޿c֘QJa#V<k8I:	cc*=ӳ}`@`9}NXeq&(.	I
y .7`ZU>]zai50<FSK2l<9.ФWD!kƵAMAW6E`RuM[rh7e-e%TdƊ)ɲ]nyyPf!Y7,TwCP/$ӱ܃2L>BKJ,=ܕr5,T%..l_p!?VVUߴ`X^0ڳOu
;P1PM:tϰtS2-V
.:|&U^yaY bSEzF@hIඨ=,ȦEB[7O5{NFv
voB<@F3Wy i?+/WV6;˻!!D.rc״xj1Wy
[6m8Kh87r_?%Xl;ffKAj-.A-WPچC0|2Ǘ'GJ!Ps1MNDڕdr<m_to$K]?l?wI	f.VBPՑEv(	7,QlD
קi$ŏ>A:/I}@O	c*o8yA=ҐX,$y&m&V*hRlvIħV8##
hciueXMQ:ِ-&}y8HRtϣOеQ57@+i3;L`Ĩ!9h)%0WQj~H̻0h|c)c%BD
 6)og2slLX8䃤#ì{"/CEbYDw-
gK,7@->iIyE47+NWD	vUZx"fQÓwE"~+Lg>K5VaR
rd>fAY_H{j&(AeS]K8ږ,+~	&bt1ggNk<@B6no4t+xQ5gS'6kr=twR-xJ	L:ָ|W}n \{Gr9Mq>/%xw1bmJ1?Õ)oIpH
Y76E
1͗lE5Q'm_i(D尹y/+}OFAYF.
F
VEFf濕{/#,)C3ƥ2q?Փ)JLLUdӬ`}"F@đ"K]j.\^"w
fL'*]1B`3>:սoa2J
Ѳ!cJI4EAHKsFȁWxk.Zf,N1hŜ(2̤xEdtׅ~cJS<$>N4E|"GӰD01	tU!!9CufЃ4!\jʳ#nTHy=-s{YZiU5=?cU`}2\P6YԱ%$ߙAWV-	l9q/*[n4@(Cw7b_yVy ܭs* uqePG|Bʘl} ;v%>AOa)&o9
ɠS\̋DKD|.%a=]F]8#C06)y-R!,C'0p~<9Ci8+1K(x?sELp fJ xj;7x2?8/\!\ k^<cFeӁC:̞2[PDZ>l)@./b8E	~9vց!H_Bn

tbi i6y~+tJ[k8(:f<G`
92
1qQ2Ilw]1!})\0Xt扖;"S5XHkZp:eϊ"7ϳW
<m
NŦIL0G:ճ(<t,`1UFL*nČlV:n:OH6t@iSNuHfJخ#JZj3-ȃcP@n3=V*"=
J]|2EFw"ߠ:Iu+3q%@iP]&2kbņ@ȳ}<S[BiV6ye	XEv-act"9"FT
2$jO&,Jy0%ng
)!o49齖m]$)1aNR$nlwJBW;/@@T\NVBgJXmٳo3[5iHп?IP.wP@$^-%Pҹ.fGp&^	¾H/Xl0^<.OP	ͻ:ŻXVğ}a 7nX-/{!CެW,,$MT_u&+z*mÉy3[74̲B-		TSC`]6~U
TA?+Z3
nv}$|ШCk.946fL%y+мpPjV^$k_F1}XSmRq'FJn6&}<vYxy$cq*Eݧ0+(Zw6[(t})3f][`̞/zNT_~!eRzؗ
͢!2mQ-`u'hĽtuk`{f	S7ruVpK+	5H5K#;6e>LOV\5ܛQI4fb7BTz,N-(7䎑QBD^w(SC#B-\F5Kdl!% kм0pIW:Q>`7RLD_?6IWJm~ITt1JDhˈʕJ
Y?՘M<^,dALI>Ԫb?_Hң|ȗ^]m`@P%{hVcNj:Z`h(vV+(3ZSEx܅
Uݒ}Α H9na؛V,&IjP	fy>0ܴ,NJ, p*<NkCL6d#u^6Y,2ձpuqtAskwB,_ыc;
4}l|b:e8cPn@ntG0	2e؃"nf C!Hc4L|^+
MbauQ|QnXltxGWp`D`A?*ePx.<B:.qT&NWF=c<~l%{8eawic
!PЇWڲ&"=7SMVcL$fTTa[1`VHAp'$o",e9ߗ3!Y慗bq.!&2 +bŗ͝t]T~ʁ<wvIG2JUA-5r
6r
KLT&Ga)*`EJ,E&װ M\
GٻL{
FKui;67O`Cd8en|(I(jeqJ׶4 :W*-% ˷o=cZ@xD>MhMaef|Xـ+6l3jtY79	U˯D@C/1*/< MQoe@4&՗Sc9H/SKmӃP,qTu8@z9Q}g:B}T}i4?G`j^^~mζ*]+^h{\$[|etfy']a!aȝmBrqznSc^*sꖍ|NXMΧE? YX=E`> 
MsL8l2d G16\$FJF\L,#@
`8ޚ]V@
TAo|Q?TEJ㯈MߤQ*&QA^KX[bԻ7̀H߅@UUW,k[gؗ94KIT)̓(`iY!ŸĞ=1kQ'wDX}7pksFԬAƘn65Z>oB6MQ@hعxrl!)FJ*mEE UlI=C19QqѨ,Ey;H*ټ?S%aZy6,A
q2DZK}vp5rZ$
 A$FJl6ˎ c\}Zu W
^CqF12!GEB*\%G6R mVk
TH̓8^xv>;uq釴CI]j&'5t̳{*hLˠeq@*%~NYTc?[,ɢP	߱e|>o5oQ	jςc#KjIϋ=.5(ԐiYugej`0 1%ͭ<$S][VξB{L]5J*L^#t

S%PH5mGqY.VBCdvfU
"="j`׶)U`ɅCJ#`\1Nxlh;o^0T<!SL:}9;M\0$f:[L,^vaN2&\p<@U	٬u[lUT'$?*DthF@HAI~B@CM]UJy#9/˽f
p"-:אCdq&1%sä<0OH􍋞1\[fj&I<#@HeS]gNso1q|͒F8N-AP-,󙽉vcXڹf|ꅁ;s1k*qo1(}  .BdD<gY;<Ei}&jmTBm.Twy{:{%mb{,KǨ-'hEGE3\߈DaͲ,4
{i+r3
E\2k{D%2vT:k\Ǩ0מ<ٸچxTrKl)}&9`JK
-9"+nSl9Z3*Х뙝n nT|AERt.DhE
%zt.		C֫Ђ=W]C\2S\cC>y}J,
$k1wY'̡͂ڔ}lZ|;89,lfmy:jUKr 5=p='ՄYwNbG|lѨDNJAQ^HĨxkպ^n,Ov`'vMtЌyb<RVEG#VttP6
'uC;*%ء^΍}dlSj$2`-^܀®b(\cԽQ3퀖z
@8+:70V'?}
Yʗ9Sl*z)&*4ˡhԮt~b븁~j ^Hmޫ\Hgu͋0|d)u.C,	h$`m":ǆh fterWީͲcsamY=D eAFW+IERlAlJ%]#C"N
au%|+u,~+3Lu<cTǵkȌd
"@Ϣ[\|M%`9f~ s
xSQ=¶%H|5Rg^PYAݹj={%Z \JL`p߯cj#>iͤL"P-k%\|je0$|		
p3l5B;QY|-ETh ҳ<JƁTP76wO-ծCmwLzgP+6c䧐w4eg:gNb;4zM>~:bg+D d!B_J%gL$fƭѡs#*&aŮ,XQА'c_r5vQ,^6DrJ4cON:/
f`u[tI݈-2+UT,:R_d'6vyz{5"wD":;`^2c#)u5btj=xfqaRM]<+#<BR0jy>olnrKmPKFxWxPl580)];*pVhb,h\4D6{r(	ﾴ7Anl沩uwOL~@ߓ'ѩ"}	8w?ӁSȑex=6
֪;J+W` &+&}bwp S'ġ\Ӫ5BF th MtM`ZFs-z D:l]5HȢd+w)/S1r%:/\+]t=yZ"~xLFK(mYۻљZ1|#][Ȗ?eB׭V
ba%p"[Ì~inE&UH(_G1鷷a/+Xc_xw@1y7gqe+`+Ɣ(ؤS-tԭRƿ$2=.
#Do} ^ p@%r>
'HB&>`[)8v.TضyspRH_{GC̤Nq*A .e}Sf獠jPSAf`XQMFIsW[y7qαߥQNOh6yy.hkw.H	A4슔!
czeHLx%Ӆ {|@$;DgKü
5
$IB+\vh=\8](ަFL`fb'ϴޗK"y#X󊣸=
)rX.syH0[*F:b%F&IGxBrvyŘ2Ѭ1Q.6ɛ="|+l[Ifd2vD70%9h%:Wv" F0R
'qE*HHեho^
|9FO4PWF,l.ԑ4(PaKj:(}{u
x@`2~?%ڬ0JJfP__S>X"XviIY[eY$Mg\ fvFV}Mكj1	6)foq'j[r:5YEF*u;l(f♢D'aTTlԀz*IvPUWQ
}RA@6aK/c6.ɕٳO*{nMCx,ESȔo$F,Zm'bq7a?۶@<BDhט:RQFf`SX1*I
^eye<A H?b0fM3pc`8
3W`X:=Z$JoMubu4&BziB/@Q6"N"M,>2;ACUlE3П
cgP=Af؅ *vK(
 cm
92F*BUi؟^.fKtT(#16ɢr$[XݼM]:OZfHO!}sOȝb`+Mde %&*}zU<=ΑgX;2[mq`TKX?±ByfLX75 "_|R\#rB5
QЎاx`@BE>YG&iT;n ?64u\ `EH32A۴gaJ,EF6~I8
hat<`dLrtߙkkqU 㕶jig;hn4F腡i&2!ҡf;35/-:4qEx
- D(܆Z=\G]p' 3_ExF1xvbG+ra>.[GT98z.n}5kзhmh$HR8+cLl 5}g6h#/~bըF!k$ڙt[67~0G\>vSQ?frzO40g;vo؃Τ`>vgȻ	U ƳAU~FbQ,n07ېdhP"D zQ
@Զ,a6ܬȅ-+
$M
9"7`!D7[>ShɸUwNyZi?#xj6*6b	Lh{`*Sgk渳u0G?ϵVaEBh8v=?դ^\%>vUYCGoPt|If'#pn!ԛ(J-o2L SEg[o@0tWt2ISsp`
9AX`W#\_'BG
t."u,JItL:' {$OHEWV)ʎm4l75/Q}Y$Gd|Gc284)$OvK/U
wJ6#ۛ,:.#rfת,XHѲ4)xC48	CmM<D"Z8ʳCy_X^͖"FriLm~āxXHHDxՈ3+kΚЃdbNga]Rbabi=w[)QqPUE]+=:;HUM!_SV_OEMeŋFceMNlwם9o&%+f; j"j15Ƨv
T'r~Њ/u0˼~..ml$ь'1G|) q@"*NEs3 @_ P'T(Gőd6(iSP+
$U>a13)ca5-O6t y1L6PqO4SzۙlʏeY0y3j33xl:L@v*`,q7c-qHpTee"3o,nUC]R"DVA
Bm0r+2QՔLlj.CHϚlj419(L`oCqx0F)I@L5G#3ӋmSRNaQ!Ld1'ء9cBEyo
q;|nBp|uѱMdKKV5qxB*?&"Q$\0xp=9ka\VնNL$A]|n7m]E#$h̖Hч.Yj:̮Ԁ-ܹK:uϒV`)M8^͎i`)Yަ4~^Q%6
!8^3RCtp`ZHZ=E'y3stA T2Ԯw xV}[<\BMUzD%""īfk/&,#Y~*/DCW~([(&~6ϺgD$V'P$6ղ6	G`dlVpA]lrɗiaD饓<6/Sᥔf|ĭ׋hg<}>qXbYݢ
pfe/,M
s6ƒ硠z
H7A6%FRP06p]yB+-
xDnދ 'GOW.dDg~bl=HU;CTkZFqd#xz/Ę7a <K=r0_]S(B/X+.ʓm	/*f>6+
ڔQvhFX:&rf&#^0]jьf̈U.yCPd=%R1[=(+?cf^@THbKiؒ$>"6AřJ\˕I
Y?/[#p\~|WCOOfeYT6Ym{KFODvQ]X	giWEB)QW(7qxt.w6N|s6sł6,啋<-^璢X.B╕u64ਝrp!tkX܂&0
M)x탓`]iq3a\:BZR2M=Eرh(opp@ug	SyAYW#˨Cw!6ĜgeS9
oBgbcqMO0f(ؐVQmQh2!֨o
 T
[fpve}\D,@2AEt1zCAU9X޸YP
:鳕kziq	U'><`l<t[K/IȺ9#j,+b_^{mδۊEab=i܄Ҹpi.Y~Yu/v[F;R
 ="a
=obѱv)U}}Nn(A3oMXl)H{jN=s.b
9
M/&m3ʘ F+ýL?@L*	H$ٌV9gDmRK.nWq\޲BtG$qeiރnnDkmo
@r(Cۀxоٕǧ45
EhxG?OF]#s{źL*V5d3%detsv:.yL	}`bͨ(	%:%Վ:0TO&mPp."^A3tNؙfU*wOkq<U<z5ĢL/ы)є
|.*JFLg;@_#ʐ X>a>bJ:!8[z/F{X3}Z/;ڋ*Ȁ .!9dM{^POEkYj/v
\^1.{.qs6DlW
CIU{U}&Cku6#+xFI2L_=ꬆ.#5kCqt.LI&:._LO?_`al_3@tF-ZEf")j6xlR6#lmCc+7ED8g4Wf"ˎO7Ƥ?⼨f&l
V\KkN|-؟KzȀ'A/nŠ< !Zû364V&:1A
賜jR:Zb2ݹdZjkϽ6أM/=JIv4*0܎4bIn+Fs.M`Jj.6+u++yL,0)WyK jDgZH?bH)cϢԒ4C-s<:q"gғ"xD>egFݕ+Am1'wp#@&f7b\Pr,	Jb5V)Z@2WQo˔tm֔E[/FQużXR`ő4k5I0boXa"Q-=[
	[CKpC"TkeͲ:k=#	Mr,mKCˎg{JY:.@]lP9}x=huK^HZ$krK"΁w
:9Z
(30wY4h	ׯƣP'd^H5Oxsʈ\41 aH# m\$Ȑ[{X$ZH%EHj
7[79AE)'DT2Pc+yt1X3QgEV0ou&.D916꠆sRν0ur"jmMt0ܹb}-vƿuDڋfrKfd-Et܃MM@+(SX(Ё$ 5EN@1x7wJjVRx8<Qgb#IQk6
TdoMBXD&,5SVmT8c6ܲHVl?XA<j'1U\eѴƢUyIٷ
&\ahb{CU&oneПƥsE7#ɡc"Gj$l'巜&JY8PbWOZŤGM[V<o5
wx.K75;DgKyߓ}GvhՑH=DbὡoA@uәkN7g#M=Yʋ/b<<#(ۅ{~2ϟ 2
b<\7-;;H[z2В8r,!PLć:;GlBM
0k`&)=t38ujbF+tL.jFQ_59b:a<`BӖ`ĺxQq+t&;0AZmP@'}Xkd	vl\ྃ{z-tDB_R&S8h/;sTmHm2ŲP-)"B}P-:)4Q6D6Uc.ɗin7$ʭc [(fT)kdujug1,W<P֊ݩ$2IY$ؤ[\F\\
<!(!sl(.R+'[!+kxVo09bj.<,:cLB:G[1A4~BףUfAko!L/f[#phDw%z`<_Xl)0ИSׇeAGq'IOéuf |Ul=y\ثלqvLiy)	s/C|V+Pk7XsQ'#1xqȔdnk3,`HVW*}puNul5ݠ_.s<_W:<LL\/BnzSC\tmlA{D\Uci|HT!l_D4jPt*=E"8& bC7wko;
S^|ʡ*fO;6S
lmdb=<~4ooEW x
x= Lb*:9YTN10~j[E9Yi@qK7Zn4a b^2dVEfN\F
݃a7⎱KygP@)٫r(EnJ:Û;{,C0M_?j{rS{	fVn,~[Ǵx6e2EtdsW#_oZΐb6F,:$߅8pOuLώ7 \T.IJ-AP+KhHbnG	5Vd[Te!j  #^SLwD߼ykna1K[nAo1fJmu0s+1Y]Bm׹F٨!jBAӥ"r+ibXZw@ D*"|#.+ʌ7ҷC2	7_wX&VC!?8nƯ ~
+qN"@X__pUF%JNB~!
UrxK9uDp2Ye@ Z[:ΙsNz,/_CN<m=2i̖<؎8lA eo$|W&TWEAv,@*vFɿfM(3"JOߴȡ ;h~!T`xS4KouZаF3ܛ]a{3	e~q ^uiq5cv3
E-/ab[^@V5
oJ\ٶ5"NK-\%BQMi9-{ {gV\V'FjfJL ~'JɶFHnuIl|ͨ;^I)HN5+UU53ds$Xt67
'_jFHb6Ok^2Ԑ4vrT8h	kj4LP0w
'ʅ 2.RCLۨգۛ8z[ab0{apY
4V
~c{&%\>j`И#ZL L?Zv-)SxkM5ksiL.Y"+>w$Xd7X
 МC92P%Kyx䢠~*#:P?3[!Ҟw(b<l۽::wr"	o~ve`qE~SOneIaJ9F1G
<{ˁr3`QlЅnr0#pn샪zL$(]Be=h'1k&E&rnL46ͬ2lqlM_ۤ8T5Ws`h$7n&f[ݓT茕SZ͚|*W i4L+!2I
a(1
*"LKhqr@%>Qz;"Ŀ(M>1	6O
Yٿ_6caKh2Qߛiɢ"Hh-	>wbL ٢5Y/U&,Tyh(x/GX+wg]k+miliΟ=MlItf0A
;%CM#.:ʠ&YE;XvO%6ږu_'JA#g] m2Ȝ)?9@-V1Όv#CyvaYJK+&Zb}ވqS<D$A9dXin)NAp9y:FkO챬U02aWBġepi损lыf_X.KhQpT5W̱w4
^{"M3ɻSt=
}M+QjFԜD
NGLY4Ble2֑Y|`^+uqxkAQ
`c:G1i8:?`I*6W>ċPDpd{D϶NzBP%9_T4-̎2TZs-5W'v2w_/={zJ?wM'Tgp	`|1*ˎwX%Ļ@]dCiJCj74і~{_<{Ek|H0}pn4y.+LߑBKXX@ WvZRkH+>2S$"QX$(1Fʰ4mPD
cKlW[/T ULOTK|LU(AAcyI.ϪȃL#)>a a}DXL;^%j6P@8i.qTL|	!H^22xJ-,HOװ$8DK8m?ťa]iB#GO718NDLLX6ۈٔ[y,9ַm@b V2\hnJ{!g&v~橉Cx&('6Tj֘ri8d{7b-51$Fr$}k2s'J?|*,)0UuH,jDfj7@拈c
ĨHtR&tس^B&°6|UoI-먁\=HZK
Kz=:I	wUu9FypHM5e=9+&!RYC OZ0 ̢el2_#c7f*lV%tgD(&M_SD-0c`(N;
V悄/UH*Gx-bug~G6
2B Ǭ&'>z0|``8FKK2m?G_Y2vU[v|}Vθ 2ۃgP
ִ-(cQAU~4McR8bF=郺G H_&3t<bg"$ZJvrrFcӣ%p c mbzEKvPh"PM4.0b,4-о&_0rKXdΝC>0w<?JI[&6ls%[6:-i=5CǞ@ǴdTSF0'LkߊPX` !62H^۲e
fW(0T@Q+oU޵jLY$9d}z#ᱨG5
TGE"P}-0%Iduڨu+%Lߞ 7~[6"y
̌`>;
IAt_X6ׁ :Q%60&3R$9
Z;P@i~ްb 3
K0	
ޠܞb_TBov.o4y˵Lt+P*VRS>;dBD9dq~<IotԈZcs6\O0KbWӢ(.N5Ń@jnY(q1]>E搡	b)3:%8,ObâWMCr\NP|2bMKr$p9 &%L=FD98? ?.LuCE@
5*b O"i9￢f@A7Kh>-zN	V=nqF2>5ƢZ
?<P~Msd`[8
\f;:!zbySvel^u2 pm7c$nʋQ!&¦d R	o0rɍ	6*	?H\)G=;9&wdwG&BJ[Pzг8T\nd^p/wQms2i2&Icv4"Oͅcne$M>Ӂ%j&|!-i #)2\> C@'mzd0miF3#Mi'UoV'j<<6|י Qᡣ/3T%da{'SM!k1om-ZRV{ʹEdk:7)7M`nN`):!<v\8geYApYT:\1e#v±Bՠ+H)*@3ōc60maQDQ
{SyMH>^!Ҳe"|laJUa lj{P
P+bIBWF18tΑİ0Q
eH'Q@xq$ʏR3x,gTªZץ}c-nU!a-EX̔*ɷ]nb`hX\D5{<
'}D``nmw&)#\(s`[N0>_`B16E?jL{ZS`vHCk`RL,ƖQc!sXYUqrjKl(q Eg$	yfGۈ7*+I6nPb;Arrv*4*,P9pR6Nl:b	6ǌ!sh(s7`AQ=rv~$OzrI5ͺ]q%v1;*jba`X|#$`VUP]ˬ
,fv.
<U7fDv뛨;{0Mԃ3fd؍ēB+j)ڎpg{T":7T[sMb~ȣ_Svw<zNduORRyF7-͓"|
e
b*%EziݠvEbo@=l~NNLB3aiʋJOȨ͜Zl wT, L
'QəPī1i_R4|O,zM5ĖQ<giZƲCrONj15egIH,#
бUj
ULգID}hw]]
B#fw&e))"Dtac(ė+t]fhzdq#W@T|Y&吨_-_ZQ4}g#dz$:o7`jqL5

SQ,P>V1_{l[cBO<_0
TAQR)
j?@=y ^uc9;dj1p3h~, ?-`Wl4A$+Ar"$kd>Iʴ=e`#KSF9x$@RKT\$n+2{p99ZQ
YC[j\ʟkAUQ;!rYEwױi *q$]qHnͧ»-Ҝ>:Q۰%LX9FIVR!?,XJ8= N8Oƿ,w+\lE{mfSE#ݹ`T.8Ȫ4Z4bEͩ.+,D8df5|
I.K`4_`꾭_l, &D<10/ՙB=tE	7VAgS 'Ţo;ttCB0Ѿcalnހ](R<CNVpuPVAGU[*B2F9c3W-[Jjz<r0;VV%?fIw7Weɳ_>ęǞhRwƦuvG=M]Oq['A"h+_lߟ&+0\%F)nRubMhᵙU"ɨh9/
q9Dpy@Zu0&}Yw
zâM[1@dFջZ p֟.qxB<>6j=f$=]`2 gZRfcBf<"M xD$
U4	&X#!$;d]>mfFuAW#b0	@u֑֝gTEOnItB釢:zw.5e&om+Ȃg\BxNu2Aט-N0[ɮC=*(ݑ_-+|kiNeakBᯟ_-c2-`$+=*DҢԁXA!.[@7L.܆p$/,HKV.7q+Q, aEA8G-Q=$K֯0fwU /JDvxCqBJ*v 4; /(i
(@vܭ,*q+cjʤ7qSrPDcu*)A*"e+#4QC2A驖=D\3"F\1ad%y~Y9D@<d
P;-bXť=dVOe86u$_~6bly0ā I UutF+y[O*!kO !S~%yuvV5N0
i$ U3w-UsRVRSM(ٻheٴ<=iP>L\3>Xg4c紑U-2Bp
̹B5E.ޟӛT(|uis,"S@7H^Wgmг?"P%CuVi]$&{S^99wİ	? `=yir&H1*'i}9FVjʶPԹxJ.zQ	`DB*[GR(S=I![X8N=^L2!#݀R.%"mz
v&À/|bM\U4werL 
b&jҚ-̎&؏|sIE]L2پZKQ^xN5lR&}¢I>կ\9ڙtɶ0YmO@8-✕I%jٌXv$<t{-[r&lng9<Vg?"iHrTVvN!d$,,.M9f蹬G#enAFxTF6_V5LYeALTz~y'v[1C!0`Uf_C	l:7F.rCdxa'_Bx:x'Ԩdc(UڸT̍ m1Ngf^ {oSN!>[boK*Őԯ>ͳO"#2M@@ػ<8z$7rQW!./i
,g~L/<bTxD*Q@4KNEIu[ieIpynY`zmeS٭2kZ4xj)'J]5fO;XZHyx Lu=E@}gwQ-p"kE@G&-|@謓ɍ$8em|JI! s)-?أ;şn5 ytqVk,˂[,8S_'.Yt?Qoc*Wd#
x㎬#cgY w*;bn#T߷vNLpvQa	z).ZLT1؈7Z| &naٯ'6Jfzë[h&Rf?<meq-u%,#A%lWm/QqVG<;
V$e:<ku=$@X2*0AfTCWGg^T	,q#9p
EB ԥ8JN"qQV w@%uZDQ
ӈߡ\{,6CnCYYgTQ5hE~NA8=RL5uXiaQMbzwy	,Ҭ3>W[?`h؂<g07OHAR!eKaV5ݤ9W5rg["6
dFLEgIdu~C-!Ҁ^iH܃N09 Mx7HJV>+*c#nVj;/~z~хC8$=ԡ2*[,.c=h,V@Ta#* ,fץ0PD_OnZW,hYzř*^
8ULAVt2!ݱhvy.Od_[-~*[KW{Qټ^6v	[% 
/:]s;6)/~cR%Jи:omj
])َ\,n9r1^	]@5x w2uH%^63Lul*  'Ew2~c4%k5
-D;@6zEEPOc	>m͆@!-e[n`o})OZ&
 \qEH)	B &,F^}5}_I܅~3Hkq5LZqV:M9^TB(p)16Ӵ>REڭ/CW򁫚`x
O~|9 楔Iv<Tob2YЎyltȂQJ-%%v1=:,^Exԯ\,|#{eȗtMe
  'Њ&XΙC,g眈	Rی_l)e̯&l#G'v+mx@kZ߭DނiSOQ0lQ8[h_P)@j6pNGjʾc6@V|e M;Y]4X(IoAcRrkZbĮo`ƴ%,)u]jCxsU*8|(/ˑ{YbW≔tR/gN?(wnf`:9cr z$gtP*s7^VRV*۪_D9):z_AԆUy^3ȔLyxBX?7{@Ԡ^AG*"sa2W<TY<&w*m^daRmD;ZV3➨`%y)&V%OrmȬM"~p\i;1Zޢ(GJW%o(p;eV";֨!.u17uE۩}7o-%"?*Vk
|Es}U' jH|J/lyjC
M6zF=eviV?)$!HCvTQ_ɢb4X"|I}"ݚZkYE>&ľ&'AQ*zzӯPfIۃQa/mlG;򉴫-.7P\F8?)+\O7ڷ*)6\Yf]|MtbV]{N.鏤h{@Gvy/ˎ+ƣ=5^22ӧm2T#m􊞻ࡂLqFHd|*{NɦviUopYt1-c#>RQ;!C`j{p	Mk
=^uҤ4x@N/Z\?2Wf0)*4 ňRXJo@aJč^;rJ7x;P^9ܲ }^{L9Yo3+T'(8nQHȔe1TAF/N"v )K_HPg~`j.2ABq==lW2,p
p=bdb<n,%-Kԡ#ҁ]`Eb9Ect,;m2q%]<Q@0\%tlB`\a #tC2(f.ڤAOiҙH,U0Axҥc$U	+rY0ʠfLxa/ǱĤ7Vxr.|e 
RQ3os
ia2:Iy6| d.#kR3#$Hy8-;"&wUL]Eބ;7Iٚ\"PA(R
ZV1*+&Aث#"vqYmJWI0%fOn87WT5p1.ܛ2;EO=h2Tt*;V|<k
pf9_p%GuHit7Ӟțƾ$
P{5mNA͖q'L.'?HI/K+NFu%~QNa3Rc`U})r.4<LC׍E
ta@mT0,	frou
ʘR3W)4-	-|gVuщH@Y	/(rXVb_
ltTv|R?2T'Zn4;m@Ypn;S$Kzc jCej94l?qMҭTRE\bQ0d8m}nIZW
(`u.d}QSY+zLU)'u,B	i/J%$vَzPCqC\q)kO
,_GGv(HU,!c͕yx#X
|
w0H60WW53
fсD,-hH_D _(Gt!tuO2Xz)ڨVw4
hMzىfT&ZCEQ5P}@bޓq>0	dChO,ô:'О)B:to`ȿ _xX J'Q-haWa\]%ezЉi[Tݱ+'VrU¥</rD!_9N/iգ< !}˚C5Nt'H`_7m8Tfo$L<SuH@o
,֪nqPBбx@0F΃%OSu S*GE$Pju'[I\
[ɻ (zC>rYsbD4ؑ@?LQ	~|P6<?$:iYn_'ڱ{:6tPuc,(LUEf3XBz\ZW_o釗	b_ݷ%΄cIZi/PG	7gtqG-K&}riV1$sYE@&/ Jh>2ؼED.]%d`ΫȘC7l+\bHDԠPU\/V֍uK>M}#.CN㎔*5sQLi{@?4 ^(IRJP
ə1t<jAx"/obu}qlr	D_nF9"i+(rZlR2'F *V,Bס
P"SKZL*ETus	 Le|DANA %ݬ
wpcD퓊~!>ib&|vɎA}a[]x-;S1/xf5eeh((vsmt]9Y3gBQci-n~3Qo}}ȅL]rE:	4< ӱVE_=4
%Ư91 *b]X צx$a_Yd
da!o̺bI
ST,VRaބo58i8

)~-xr갈_#6X~1hM(;jZaqZ5T͎Gn%$<YE\BзOĂd+OH7^O)?4`0i" ӑ_fy 0M<F&eb,h!wc)~
<AyÕQ k"T&0H(2ZnИK@Ҷ%SnzEDs`IOpwOLYfANӨYق+9$ruKlp6?fjp!V,'d0|7iђ5L#mK:?e>$\j{S.z1,2$S3'F/A:$%𙎬=H!0r}lz ɤm!Y1ј`gR*b\)L<Ӫ)>=0DwRTw{ezW#{%$C涡gA:B܄GoyYr38X\ Hw&l%ՆSyMCGO6mL1&':3/ݔs(\
U=9D݃~s*de#fâ{NdHz<WKW&X/:" Q'w1_>D~;j^ttJna\\;Ѧ%HQFQokSo"rhzWE^"#dhD89"1GΓYr¯<XbV:pdQ(ҦvaQfV{)ők	XS<vhqL*	;J$!?^>Y߳;n6AbB[oBJm
F/l| C*Јw?CQ
v!y[Gjr6wӤp=yL|fwзU~ԛL?S#*Dq(%C|=r"׽e۶<;Ѻiq?o#Yϰ91D,\ꧣ"0&|@a@3QL Ȁښ
16Ѣ#$eJR$}FE*QcM}y/j8Ψm.E|4P#b5XcƋe_.+=q* ˢ*WNjL}D#&Pbq"v0tD	V9]GZS8GGAO*zl	/`@#) 8KV}6Li,yk.u/6Gf,l
9snlt,rF+zC\I9rWh_5L< &DjO8}ӣl"lK{|rDxqu
gpDgƧ0aq'o<(K(+ݤbb
H$EGq1c{F<,A5RAi<
jQt'f-+:|Nxnv1{Dal'΋,i%G;&VNp
8S*
;,
KXAvrqIb	@F[Cq{f5],UwȂ*C'+9E:oD\{BCjAoEM^dz_n[*@CTD!Jȿ5B3a$eq>Fy"12u.l3_ɅUxO=|pZg;E^g+}V*5VݪUYevy_CH1Gq@]7~ۡwaԈ@4r(n17}jDU ^0SA?-.qTw[9
$}j}^^3X5[F:a1 V(e6sHx	'nVMuv+׾7	܏m[NA.W&a'bo6fFg]gSg:gE
(Ȗe?)"r$Hɘ³:`/D)<xF|/ĉ쉈x2S3
@3q`jfы[~xŪ0QmhDMaȎ"W'X`T!JГ/ӡeM(athJZOT$v;MZ/u9#XΈVzY=.1'XJװѰ*0mʈy]P Cn9k{ݲdҸ?|4~m-	巐eR,D9+f==m@LVQ9H?LRhqpmal<¢cYΊr0T((5XһSgc $)!n*zASWCR/
6FhUie`	tW[P=TvfE?Q!T<M$T|
xI́^$I*B,a\M-4h;`VP͏iUoLnhB/A͌`,9S4NCh&fk"`ϵa1-
ӥ=vwPW6C]@ʓ׉?Z$WUA=X0hQTtHoHq/b#ǨďQw7[SฌLK7XrD%Ұsu)51T:8eN*C hDPB-3˔2	[pȚQ%ɼ4U2mXˈOK䭼omEES9(o[(|K%tb߃Tݔ^WU FW;"M&H.N(eEw' ؊f}=okEIʗ) ȸ
25.a	KeQ! d|/m|Zɞv4RfTE1}]8e(~ѶɨTH(nYqT{zWb3ǋ 9Bzf
irYX
`̓#QtR=&7!\H1sIG|Fs"r~z,{J	B_?fēip׾F'&a
VF}ڤOzD93PF/')_T%91Ag Y "۫:޺NI/j&[@tmj'Bs]o_"UDCMr>qu<)U*	%xԭui_2'N#*P3)+̨nao!E1ZPȧUS1ǚP{ʒ:C^_ -uN$jiO=M p08S1kTCNP,]%Q
8yRͽ6}e߿}t1JlĈ@u6p;Ln@K]Ti~\Wy"uc_ӄEqFAèPJ"^iCTƱfų68ê$f&H^SnAx8_$G?oX;!Ã|hKHp
J+bR^UW&9,@2쁴F0WD9pG͓*2@ӉQgT"܄|l߻3'?إIo;}Ѥ7RUUgq7(ȶ".BJ=kAe&`ĳ]ERټRdH.4t3*Q:`9`&.FEվ}[PHٖ3>^zc	Q3;:Oݐ+YVξɽTiLٚ\5Y`aqyViSNy>HRG	|E3T*9y/OKCA#pDg4BL]'΃T^7Rt8648:TcdnPVV6wAIJH/H;6\RM8@Pa%}D')弇+-[^p=|`BЉy@IƱ&	+
KNhZ(X遐@\42^l]4mQ^	Gjl#\FgUC@螲]\ɴVbɲ,GBBEӛ'dAi&M
Z̺qpK]&y![truޡ\خzIEwrn=>e*֥c<р9gHF˖sn,˫YpXn\pg'g
]{vCe)P
ܧM2wP3(ʤ#֮W
jj~}Xf87,#%0_NBԎ?Q*,M<Ou0Nc9	6"h$y^IP%f-u
3GDa;R7s9J.bW!dY]+pk;nϋ},_GzDB@Au;|NX!~SeACsgZjO_ V$O
 @F$v_\Aoe"^i@S:ux>ދ(@TcUH'B)z7ibukZ=8	d2HɌXw8QvkEc
z tVrSԉo\.Ԃ
˗ff53dCB3SA?<9GRB	H
xU5ӺɟƑ*>Y!jhJ3Vą{)SdVh Δ#[e,KAJo2\[FhުyߴL-Ye\ޢA
K[9>wSh%MA1'|hYC6:FH36WU//\)D娩Vh#Nixy
|Q3aF)d}o-

3.D33&N0Kl咇U]:àr MuEuI^r7i*R/X'*@=FZ e(	a1&B?)`f~jxTL	̤9bЌaos+[>`2
LW\]R BOVq8"dO	1$`ArdW>XjÉMOm^=(Vw6;4ogRl[%']%yw=D&*1J)7DBeqh	 3b\Ҁ/I;T+'oMWy1.04G>W=؟@o@Q*p"jFN2D|aU	iܹFU+nK9C:3/\BHs*(nv0`[wdłO+f[1'y1x[#{e{o5OUݎs#s.upIw^CoD8 _'k2yJ#￾KQ GM	׊"#t츛6)p*D^dTȲXB!65:DD+[kUz
L}}6%Xۄ%}9ςвuB]N'Rq&D=[	h觼A" =)>ȁfdNGΥ#M u%~aWn]"sς^&'`F.`~X3E;M!gKoP~r&KTE;[(LSm-xsz^=oVa%LJ1tILSgؐ4#?bl9SDLSV?Ӂ7QxY.
^
~0nPP\> *X9.	%Zt)	]|)2	H2s,r>AeȜrމ~)COiIq9ZQ$Q֥D{8Q.ÎeKF(Se	
,w>e6)
C-4%zPn݌- l ε+}AZPkW\'BZBDB<[Ei9(} J;gpuAS`Bӈ
doN*6uT!uI7q*>"_'u%ʙۀ~ߔGn½[lQHԙgFPp1ZU0973DG9 M ~+ƅwDd,f)^툃$UwSYku1PC@h:|:abaQ}@~Ь^
2"ۏ)՗a)J!
t}Ryiy]rTES[)ls=f*YqȞAN <sgrf%ES)m`[MAv*ב~qmKʛ[Žv#KتI ?|o{hfYEWt,.%|$*m5MӽIiuMߘZ+S"j|mBP	\BN$Ǟ]l#L*=WO_I	DcLh	<@mjVWn\;KD(qɂX\YV6SYo>InaiK<#tt*5xHt z o?0_%Av=6!QGrb2潦UN}0=`L	ˑfx-FnlV9r*Hm80氧o_Er_G4Y
.ԝ~BF92u8cilr*137ИI"F*Y;0\4ia$V+
aiLIXΛ`VtL|y^A+
X-|<\Ҙ`'*yJn@Fގ5!`@Xw;STvCȠ@7bm'[wT]^5XTG
cyo!eΞή>U Zf+1`'7MК@:X{
Rq/	ĥM'm|6|_g( t8#:<#-c åq`]sLݛ=<LVAדQc6ނ`6YyeMaZ*!Y@N/$TEshZ1ˉbOa-8>*5yY:_h^A.ˇ`9(Ey4&^ȦغiA#iiŋVDe2F>9Ve(kp"<Nzz\i`_ ZS#\y}::Ƽ%on58ApT2aZ9F:,g+[TRcAԈW0$`&;8Ή^&NY6}M:i(Q徏F65RrUSIl]"6[euD
Ys!R\j lRqw/l0`2DODJ*>.֓_g:&SK#MݑU0nUP
i-eMr MkLg_0UNYgsYom4$Yߊ޸	ᅜ^B	MUes60"v<9<\I5L/rN
G .2FS5u(3Ȝo*&h)5% y`t'siʊD~V&ͪ61|v=-@١-?|w4/ғjLѻ@Ĕ2'aW	~:I&INda>)+@@]E: 
Rw3a|Pn}`sYYxm#U3'Ti(#0obQT1& OӬz"W\ʪ8
]Ū+WxyR
,-2Zedt**M3ff9f۔VDa4e?ka<p<N|6q?5?$]jG{n׷H[PcLc\*{U 7oRf~ca 3wQ7_It":
;[lKb6GL7.)`3aW?ڰСT:`À7-
ꑨfKO|h2TӺ&Ozk\[Ds̍q2U*QBB?	6=8brPי0":	,j,tv{,4FJj֤Apn#k [-Z$[juC1gB}$~eKվ_uBum,&CY!:;O _a8$
S$qSGG.FJ++/t;0JߨCQ,q=s>NĦˉ
*.9	He`#M	A'7MRm:0!$Ldd:Q6$Rbj奄c*ڭKuZ}Ya֖<c*9Tz~`vXTBQtjj/z#QA<F
PԀ+*S{RdQ:ca,MI/QwU%Z$'(C͉֖5Hkd5X2Ȩg1[x879~Y#R\T;>E%٘.Sɉy
bw3:z:ek
T"pI$I`Y~GQdY=Prm-
oBf>QK},ylhaVh,]59T+ؕJPAQYipC[+``],5|%xx"zQtz
R+ள>AfE(zC+l:UT0bd7
evнӏ>==P=
Id*8o=ocS*[RqhU|NоjƖzX	XcAY
hy V_:ۗN ~cr,v&6pT&# (zOewr)u ݢ
ԤْLN}g M)?/do4Îm#ewF0*j`45OdSn/gw0qK-IWA6OߥWq-M(^$qJY-TDoufVl)@lNURyk~cwD浐C6>*$y-0] D+SX*-C;0KQk):z g_($3)kmP:iVSb<L2Qa}iZGsGkfY)yiyV#?9fʃeT&d@HިpAydjXkUء^@o˵"
#$ZCik4HFN*\xtiu3wz˗}](
˭
!!*롨4.2@eFw:DN2ֳoO/쪒yC/zd|CEAj67'X%WbW좏&VMISIۖ	z@=^)RSjLq`Wii@;`~
^
AcߍBZFjNC<fM鹰Vw};fG{-ԇj&\>-7DWR>{ܔ1xQU'wtYUq'mδY*f9C1K͞7Z&ZQK1[cGV?	]QM([Z@H>f (cp`%VoTh]?a;o6-TngDcCWŭ,SeQz,62̋z;	DNz*X=VF+dSghʮlV[<#SS8ˉ(	\Cs!4&\hhx\h"EK`;,%oPZ9}OwU}mopCnކUu]	v=INSuWF:ŗM"nM.HEEB_sX6Ӏ.\ę6جZjx9	+e=ǫpI?K1<ljzj{a>H3-	_91\I N}"0<DzBs\:1_H_fH匂vL},Y hMyEo!-am~V1),'l ?162 d,x<&*CXH:P}R:<"Y*-}:"bE2!
&2m+$fxfh8uH8\0aIs${K1XC*k*t蝉[*ɂբB{(iY|3cx
B-/(RC	WAc=x<I{ZwlxYf8,eޖ ,[y3,h*<Ozr!?8NEXV5X:N)VYoA
񹧇0hy8IJv%RE1'Ǥk7S:m@Ɖ*%q>~ۆFBJ\iR#\y#Ch$𜭑	z{s/v	M	<)2|5gkj58p:Xj6V5hs<T #f*U7fT!\U+Qh'MX$gF)aH/jJ]樅gz˷@i{ۛd+RAV6?v"q9^ˬ*byly;CݎP/1L\q"wkc;B/W`{SPNtܭYW 8)hM%FrC;<44
z!%57c;(TA2lӏu?>F"؉y
t.L.Jyv) Cl	_Ļ-TZgg1YuspJTVY*|bƟH4(ƍUGJPCfyX"#%fRm4ap	XYp)`q'A~%wD͸Δ9xΚL/֓.	b0MIf[Q/$i[_M0h23̌?]۴cl^j8BrT`7y("ϼL\L983&uELمJeP6D\	ܓ;TA;vwA>`6T3"RAU`r>ysU`s0`6L<w6<ubW=&B)| ۄ6QmYv(9	"2kjn*;[~l!b0A^=F9{s 
Y,XxB~g_<ɍ4+8:!WZ9@	B3É'SY;"F nVOlT|>Fj+\e@5dtQh&ybnZrް`LK_
_bMOsy5&NFYVͳ4Ozv/=03Qs|^&
1oO)If?,9"arL ,  VQnzIa½	dx嵂3p̤t9
$sYIļD"zj<pݖc ULv6 وhHao	Qncx(~nՐ=
{lx&A98o­qX͒(E}V.Haxgf֞smE'Fv؊8jX]dlŃpVe
IfBd#RV9[
Ox?-VܥNcf:Hq76ޠìؐ= qIj+W0gb`#@CF:<pd%Z7vj1=\{j:ބ(M-n1GL*_ u@|ڭwqxj {v!قm<\KFX-0ӞhWY8~৖Z
Az@ѭmaƁEf]u~1i1e)YLmN .#p&$s1t? Db"^a򼕕+`aIsrqRCauOi@/V1$mkZTbxͼ?LB584Ë0'@4pmbH+^ƴ>5]cV|U%*TǗIyֿ+l;;vd*|Q2*0_JB 4
1:5`nz-Z0rsx(&]V8o60YNy$:'+<MBC
2CtGTFջGBf"Vǭ`3_L>!Ŗډ:rX4	_kiՊx(`%QjWTσ	;=h+!WSX.nCZ"PQ2'NeOgAv@0~yJP\l4_y (mE(2;L1@.ZGA Y_SؙID8j [v!O2up6u Uuu/ZvhBDl[*S-+eGsZ܆C RUgTB_Ѱ9]0<Rw;V̭6ϗM^܎.!OJ=ۤQJ[{]{;</%Z̑RxiTIFY &CPN1o'0=(oxDDB5҆
>(/Ⅶ9P#[rnY%tn5;DAY4Wog@ׁ,G9Ɋ&.&]({֒t@dAEDV4lWo|1R&;.U26ΌloJZod>"Z_xijLO dTQϸGkJ@e/taVʧP]F65U)$ǈIgg4éX+әt*^c	5j[=;9^*iD/j!9M6tBF]n0̆VfTL};Їzh-j t#C?5&{&**8*Co P䑍	l"_"?aPUp$$sLzh{<'nu#|r-P'yyvLC|uNCAjl<"7MAsvDq:%,Mg]򼪎Lr~]u A2]BԒYiq,f{u5<轷E ֚E
/Z3KC͖X\;[S_I$M(U	/&U3dFcc9V7@-tBEf 
yQ5a=Rvk@κAvM\
Όysc 20NN^cJ(1p-N-\`ۺ{T~~6TI/ VΓv:26y\L"wuY &Ɩc=t#V$v/~rjX5Cm^I(n}єz%9\[nGRKRfy<;bh=fw!g$M
BvNhOj^CN\J
hIa~2{6<>iQHbu3uvWX?sTJט0?a8P鲙*dW8'<'rm&1\%*\mANN
LWDdWt^`ϩZحuμu4U	pmN),.X8#p\d́ĺ4Su˂rŻa8 dN@K9r2J5h+!5O&jwltay~\bJ r*N591	tPW]z9	}$-`ּiGMږtWr.!?!m
E粤L1`4.?|}67ɼM%X9~ E7]j'(__REǈj;IsH)B;hDB̘'jc*:ER_(ru>;ȒO:*
	*j%KHJYz4D G}͟һՑ܋XK\,-TE4Jmz*w9=7Вq~xfKP!n|&hcِ%sĜ]!<!Wx"K,Pg^UD4 jϗ.桵<%[աEe`Bc`p0VmWHBb~V^|m0Kl۾j2V1e.JշC
[<A%ҰqO'fk?QxVtMXta}?WQ"_{ϜHBCd=Z9kJmDOϦ݀:4VY;hC0+
FrLzQ8+ym^ł
;I(-Vp kQ9mQ⭟EPH욎,+!?(UN@+RHHk4RY9St* qzGW!߬~%tvh+:-綧"O2Mi)j	RD>)P8hI?
AC]m^
#rͭQ"b)\SjaQ7>Zhޖ)zk O
>-&
vN,JaZl9|V!!	;C3Y^h~?iwDmU(z@M=5}OJ'4k5h$*`j2dO8_"׽wy:| ÆWDr
9^Kl?RB"hBV~HuU:UAg|I>fK%N$bqRx~7
#z r;77^-Y%F?uN'֦H* 0J*ݪ5̖0O*;n='=Td:\d®U1k#a2h+z5gUʚidM*ߢ0|y4]omg@=W 2qmw+o,g?e<B܅XNZZVgte2^39v᙮FeL*$ulѯMiHup<HT<+.*9a@R3M"Ms@W7)$zXkR&n3w=u3֊p]XĀ(Zv UHIG/
=FgYXGȠBLDPbXW
nY
b<ܡYA@X&_Pa"fP	xsiuu )}Y&O
LA;aßR-tkvm)2HtȪPs%d@DrWKA?zY+Va-_ؔAO(Y&;/+VnKw$Apg?@㪧hGwX0iNm?W>' C #p<Vh\`<@ 2ͼzt*P'7sqtڠ\t$W69Bc<~e"~
UQ$G𮽯 {i18EE!qHb*C;>dv+FsLY$9d}z#ᱨG
5UDE"fQxIP't񘧸N>8E3eY$vӬ6.+g;pL48<)a&V~boPtUG6p(*q:\U2~/oP$QfslM	-y;f,%X	(@vV_<w&"ki!xO2ӋY"_]FR	vH͸.u"jB)H
#:jok$A~~Mε?8#"Gz3#[IJuJ{VGAkyZo&8br
|xxT)x"ğ8DS,YW	6v,`lL&Yȭ4TŅ	ܕN9ѝv-p	kCv"AS!;@N2/
@xF6ie L!jS|y"3ҾL~ ֠\ۭ-ȡxq\>y'o@/$)ZuSWgl~ޓfGPZ;W4vx6s{ |:g"5B	m,	H ̏OHWNCN-"ɨ*y>eQ,Dc"`p3Vb{ROy/U(=Nń@TQI~CвQ{͐lo*eQkN^N-7q$=%UݶPʷ`3eȰ߬po':NW䳩yYU8J<%ދl>\ߍv̯w\NMrML<7!]e$#\)fL|
cЂ;;;FR`Ћ{W}x.0HTe$N$O/yUHN.@1Ӯ_D-lw&u((.8*m.EpwuUA^xl+Fȗ;i?I3UR0vN.m\j\-
c]Հ[i;a%tY'4#8=1ڮՂ{J.r|1[W'Y}19/D'Gt얪-ySpQHؓ21^,䛼@R3QpD#ݱ\D$
 zIT[tMэ(Ӝɛ\d94ArjNzHp%(Oڬz*O5tC ب>$~"M~Vn	Fu\<dA ńH
Eޑ	MuBrM$[7[Q*q1r9K=w cy@P3%g
aY|HǮPK4_4[9`{,wgb@7Ij+Ev649PecLO4[yIH+C
ԭx}pTv6u]7}n.Ӫ,TձN, @ȶ
k߿]|5JN%E5yYm$ɓ1ɟCp%xj.$\vU7[ <oǞUW;-|bDf,_@OZMPۢ)updfa{*8|i9N-2r<\2Lx&pқ (k(o/@̅cJpOTI&^N]&'(/RY 3&[u
-ς?cU͢`&aǎ9J5_f
OCp_5M&,`O=NIW"O.{0Ij+K
4rI
|z%0HPĠ.gO?ga',-Pic6qwR?քbtR= SVK$ j.#eAB1>@?2pW[Hԙ=4}xK zgc6nLx]T30lqQ`Zk2+tDYND0ɼLWIJ.v/>Lǡ=ni2^Z5ÿ1s+=oȵwdB|Gh㘬2ЋWE)Ɓ.4%y%c#lsl]w=تx&*!;*ۨȉ'k]a(=Ue
hsH5&bo3:6Y[LiKD<eBpӲFG2%y+_ D^Oi,RT!#΁-6qZ"FVaV"<D!`"QVlL<;}M[PTlyX6Y}E+9/޶MڲULي4Z!Aj{-n>D9mVLk/Fb0\v'f&جE		 )w^wuZWsgUA?TZ(<"?hl)2M|a1<6@tb">t+v~#7?s	_:٧1D⃥cdY$HCE0
!AQNsYߖVnTkWg"bX<2MWAFN=\)o`}J
s Ml:Ҳn
ǆ3
%&L7m19(]{g +4sA
d
St,S>իU
Ǔ;/߂~@2/=pP=7`ou~f	9%2M3*90S%Onx$KhvUqJ$ndde^gΘ}
<@0)ĉor+71+xє	y_钴KHΦPpg\~[] C[1Gg{B"l!(gFO{/,_cMN^}SOR(53|&lM%b%ZʟȦ&ahkƹɨ0 p]<Q;<ňDËSaHшr kl֪i81%uT["L8A<EP+QYx̟[J̦K>+Qv]aYSՆVJf"JA:4_ aS=}G&\lޣ@۸gHbNj0w=}HT]L[`0Xo
T,u3]1Tʍjix9/g"sW~2d`xLsOHmo[΍b$<S
s\ylմ>81ǹ఩bL)E\iWΠǕp݋ldGuSz\W+&7htfxr'DhP*20k( [iyv>{Qh0ra
|
њzA.߅+tEڊѿǩ#6r(-=[p"FsPf㲾KMLHTc~L@M8ZڪG;3L#XR󀬢?T4xlfbhto3OTdHZ'?v
2lCYmI]
MT19JMRR*CdDʸ 60M[7D9#8my]o?SEL曟8ߖiY_#W{?]T3B}14{BTRj/R[
&$Ȉe,֋A2ʊ
	DˈƱw/6q~f_L݂
ak*lp 6r!JgL:"W
Y ꦳s:F:n>LmBz4+[xӇFe(FW5b5G#/ms8y'GGvYv.Jsv
zo1
'Sy3)nlQz' [O`0żbY0"4
mzD" )*Vfg];
|;[,]Ā'EX%¯y4l`DSSS$bJbd]ҟ`D-C2&MvQg]rZn[N`;Ʌ]@Eϩ<_Y[Z,nX%rO=J=TcZYc3bE\:s]lFQBk|oC=Y.HB͒;sf^]n[._GdI<M/va	l}Xp86Uy,E::wR
4؂p!zl$2hZ#K
/
WCIVM'Ҷha; X1Lrkr.Pf7>$"$WF$&[tkV='tRg"\*sWxbd$1[FV>,NZPERsXCO6Hۓ9ɬ$DP?*zߑNhavk`(<Ck'v, \q{ވ#$漸'ֺ
xxC^%J%RC5T8e6fwG^a	V"uL&GgYipn1'({`1&:
uM5 -VhS(D)?/KpF]9t79L<	brDlehc_D>BBq _b^;gKYvjC+n"7e,VvdÄuA Ʊ ێcJT
ݗC|
x|kRa[Ξ,Ew
mY3d
?~Of<\1``
shD' Sgƥ9F+G$d_]iPުC>;']9f.opGb^
;6Ik.)v9%ZȡmR,ZM=}Zl<[7咋/8HEFrpf%h9xޯ)y뭎62
U'$_FH^ A?zXQ@Os~T0	^:]'}8)2o(W_&	G%m3ktD_j]'&3ΩO3xJtpA U=bih{C%*j=;a*
Bzr0HF
JFO{]kE`IOr]-2Yg0YF?9qmuff9#pVVb

垻D)TrB*ÛTw :|
}b^z6Юv*UIr5L&;!!I0 GO)vuGk U%J@B|#?
[w,ڷ_B?tVamZʒ˼$/ۧtHՈ\Y$݄4w/ӆ٭QݬD!FP
Sp&"J{oz_<ڒj6uy_~SV#ه8L6dQZmtQ{
X/h0IiCu!
bbU'cVϝ	 Z$<t-ϳN6{ڀ5ճVN򳍹 
Nhh#?oBdk`sߜ,D+E.%-|MK9swpk+#bkA@8
P  J9^Rt Xmğ#rŌFuR
PP8d$H>hۘO;l8QawAH-ݶw@4*YE$']a^FG3U2uYÜYk&\KPzdW@&96MU1.xɛV&0Oe0mUWȡ
z}7LtmUdצּ5æmU	lw&;lqu* wDp:$WzՉ!#nUIP#sN*?6gTfrMVժCX@hb;ũ0np~iMٙ	|WQ,ׇBvp
ϋv(bV6+kĿ+sS&vc	Ϫpq";-JW6-8N=RFL̞^-n񃨠,U5_sj#.䤿xgXa$nbyr#;ߡDz2'Qk<<ӦE'6|JdA+-d},6#B>q
+m{6&wKQPJMto=(F Bdoz~lP%=R4}ʝ<TX|*d`K %``,s,[;:D#6
,kZ4dm'6H<#]Xd5dŧi1Ӷ$ʕJ9ў^lw>c]/p7Y#b9NH$=u]8"pGCx.I8245M .m:^hKwŭHWDh4W.|r~?zb	3PB$Sᘌ<vg)Aur"7ڪ	\rЏ0 woQ
)Z$G`Ӂl&5@ W{1PxyȜg[e	!:Xի>4P!4q-  ҖziPKfAfq6Nݎ	s&ΨEWΟ1= x^cMB,.m&5TʀwE]+K~?F[2q7l,3w'n&AK{%3LdT+AgUknCcWOzߑb(DLw ;jp7
	еWd.Z)Vٸͱլʔ+7aPfWZ/FSlDӟLvʬkzF@/|3ys!yOᴢMPF_Nl+od+Lob$HƆ!	|E`݂[^#5kw4xQ`]OYQm.Ud-ƍ
4bL6NV[w7*Aۣ4ȕ}lXc>D߀{	0=W*	9ckL/mȭ^B׭7q\4TN%+{Mq,GbBY	}.T[_& Tܤ+(pƃ{O	<qpEuh$Bq((=:2rsPQߗ
P
*-&bpdrྌq[]:%|^U/Q/H	*Z<842
0(SZaPFsd$g=g k ^ݭs"H:do|Du-Q-wS(o
eӸE,>GKs"|Rʳz.ƃ%J=Ci	2Oo2֨Uĉa9NۛJLǀذ`L~}+Ϋ@oYR6

tܽG#Kpyg̦ɣֿ'Mg;dkb4|9	8E$;ǔ^HcRRa^Gmw/bg&dX4=dLt(-#G lΙQJkT
F/<
-XmlsXWrl15AtC
oj}a["|)Y5,ӷpm:oO<oɑ-qo"-ICd8^x 7
Iv%$pƋxB%ҝ-&$t^pɏզ<Qm\pdӬU5(X3lڜJ(W:jR%
z|ڝ>0?B0W	
(9u/Otf[~^,&[e=dWv8Qt,ȷh=ݭ|Mi[3Id[_AzUq1
Et 	'c,!
Y5ԆߪvmJ<7ÁT4KݏF& O8b".!,nK!<{p:qz񪠚8ʪڰ?|:KO0/J#'Ar<,P:b!Ɉvou͇1>4J I?,wf<oI68{C+"
0L(~KM(Ka
jmz&ISQWSf6G~fø]"b9^6N#6Za/8 \""#8hF"|sB`S.Beo>"]C4HLʫCӴq
&%7ksL8ʋ#C2IeA)hy+@Ub:k.֒<qx:q@ÒR*O%o+UJ/l@=~,g!țً#-{oLpC}C 	͉촠Pܩ%¦V9Ҿ&x`g:#hX""
Ӭ<:<,lv.WB,tQh"uMm[Īxh=~|b`_]U&V==FdHwds-6.&BguF7:g滅R2xW5eTe3:8wCգ/Guκݬ1g#Mi43o@8!0Ո3T37k[?Be '9WpDyR 5@A,Lv;^s.H{j#
Mj/t''̻i\,$*ක /WA.ITɅHXe<=̝	YG+t,}  B/ e-jEq	_He>PЙ7
d.boni_W; "H8&.K/!?	|iS5*zqqPȱQX.LbLL˥U[**AEL=k?
Ɖ!E:PHxwo^
h48?4 
:Vl"JeD4Q3m6-WXLzX
4<48\LÙ1*lK,tn Rk! ,ۭPCa#V
ϾY~u@10 'gEH Ҟ7.Md	{ a&]8vs
p!Y?B(l*F)PH#p(8T_Fw<[9o7
v3,*IJ'Մ&c\DPb@C$}8KkEvEҌqnD3ͣxDbU<#B2)퐀&9#"uK&v/-BXsx:o޲V-nordx{>D콪&Qd
e6~y
JX*#!7n&e
eI(^@m|$ 4P҉j&ޑ4Ҧ7p~RD
=ƼM+ YqSzp묡;c=92FRe]hJ~DY0Y8&h&
#!3Vpv:.#n
%g"'d@T⣾Ɓ(UmzWҨZ{AU$ل]
73;/ak9Rkz^rD-W~X~=ctmOnG2gVwmu&ˎ1ʓmѪ|WzvU:WBl2_tDT
:H֔IQCދ q <,OgBs[qKOY#
	EQn+<9 le?B@+SI%z֤'PN=V?"2qĀÍvs&(uRUE
ńO2nקemRzÌGtQƶb8T}kZ0qu\OСF-:oK
0+p·nƶ\ ;O@ PxD.PI2akN/A2kړqD/L~+6G"~ |uJWY[`8pc
"荌Q&ah%Y6T.:F֙;rɝ+D{\x}dgIߞx#,VgrٸA?AT}e8EGs'&+8(]7]ӄ]ܶ5lYQ>@'6CHG?W#Υ0H[pb\v:-Lj26ֺuPvg[YW26	df
Taz1/ kc<`2"phtS`+'.`W[t-\//Q(<
p(!*[Kӌ-A,D&Y 2bR:ŭb 0lS#[o
Lϼ { P.fx+&gZlWx_vI!phZݗEjaa{!2\d
p-\2̫Κ=RQ*b=%Y$ Mfn잚rJ(duI`"Z
Bke7XIAæzpDvR7Սc/:7Wal"$f*`hu(=2'*3@:
FBDta#
%aAH1*Ur$r&J[%J@:Hl3gfN<}㰶hWlx5h$Lےîռɢ
CZk
]jP~ ,1,,ȏ+Zl|u׀ڤq!(;┩/tccʸP{&tlObӿ1FiO䡕D\E֓ɳ/>d]:m10q$bO-α`xt]yN1lkO@NG;pXF.a&ʴGc-\R[Nx䏅vڃ0UcQ|PE@}1&b",j7fYT˾x^Lj7E9R>*.AE{
Lަ5rR2ѯrj)ފ+PljeLM[`OB#kÉx#[k	.Pɸau#1nqZg$ݢϦfdYMT9JGjjh/UCԠ={ rE5Ev
boݣٛ;U4)?8!kT\^ ϶SxBo.|YNar`/;Ʈ*T<p6f
#xʜ1e=[BUu
!"@DOX*[nИznקheLRjeWy
ED)\ʕP_/w:OflSxfCS'A#}`o3YE7sHCݦ:o)/Ǆό7x]q[fw$ Dt4ѻ7J)G}.J̴y.]`$=ֹn阕S	Q(N$g[oͽL+%ig\!µܛ?76i]{QFT7Ȇ|A |>wuٔ%rDN_^Kf/5m1(>0bTTz;/E'o㳫I[o9
*_23j8N^q|OWy!M_ǮSmgD9"ni^
6׷yD^E%"`: RtUdd_y&fL83	yvE<ET¨RvTEj[}"!$e<,/qYWt.Zů.'*68i5OsVF͌)8%>	<Oq? lr3pG5XY?IcLk7 0eE>/tMSl#_@c
s vNuǧ_&lrF2
kv}|
	dV[n!&$65U氌LRtI!_\r0 bP_vx9PcKuT`5%h?Imh{CW̦j2	iDO #Y\/\xM3'X-lȟib׬pX
CEBlI,#+CZ̿5-RAleo<j@qO]5<`<oA$ߊ~3j`/-[Hxg[{%Bh^ Le&:Qb
^l"BЁnE+7kiaw^|QH|Z!W)㮥t6(½
T7SO߼$mj!xӥM9i'r"Aujh^x~>F
G6ʰ:O2۫Y&!@}hbudV?o}NIW`a*
d΍@ kZN:PLҵ2gJiMɎlх}ǋ@{	W9"$JMqB	~Z^-8u=$$18{~Q;%0K%5W?'HZ|`ɼ
`q#ňfFa\ST=g=d[5ٮ^,0zCByb¿H21#.A<'LAz;цE!Eaqܤش̯C*9z˂'_lA|`)ig!ZCe	jD$#u.ЮC7-Ңx# a?xJ(_@O G՚8:EHDɻں$l]"7AVg 6nnƫ@'[QvH(e/ZȁD
bjJY՛wNYXD8:1):xJa萆&ANtfP[amLgTC	P8 
U\
R0B@<	 
_y#.3afPl@A|e6'	QFω!5qMK = T5YnۢE5s9	r.2 ّ^UuNg6ASt0VrEJ"y0=%5	 tnxXT@9Pj'6PZȈ+h>1@_q< f3el@z~)嫻m޸4Gc3ye.ҵXi=.=By~١%]Dץ'r@ݞ-8_è_
ly"mj_(S22]I^JapB0]miHxfPf7ie_
)&K+afu|N3g:#_#wg-R!n,t7.Ɍam_Eq6L!S QaCiAUtX!ola=+S7♐	-2/Z*.F8dC4 Otv&څgyy+mtLޭҧedZ,nA ǶB{Ƙ#5 2=Fs)TNc&! 1F+Ub݉R1YKr#s.
@=1_	+ pMN9@MZ&8L2]RXr1}*J PE, LlY'nkh)U:E'8;A)	X'/gjR.|grhͅE:*j.p+2I[Hޜ1v-oJl0#~sj{Yty^鑗므ndU!|4O9iǦR/vٙbsXТSJMwo~R˛t	yI[B1Afhw0'.v\k*d	=rzvp5D.>DUܾ/nӲF*Z'l|	L29Ky.Q1 *	5uce2co<Pމ?8;do>&+eSۿ%8'1|rt#z׍~NJ [$RrYyHՠT l)m(*9cZ1KW=ƢhͿhIz-"A
7ѳqḐm7Od;͆}l+`\&\;HH;}260:>bh5ٸ;<sb~@i6ELsfcRcZh?Tᚁb0P} 4^3D>CN<zEMyondN@sK+4|ʏ(B"6V8+*qm5'lJI%)`Qif9F+Mui9J{/nӊ|1w	ѢW73tOʁMNf1K64|R%mfωD0ܬc&8N}2ś
HphjOsEXmϹ*1@2`+jY.gB[UDOծ	r|}5VZSY%Ka_y,5=Wu<(i6{꾎jx3*T3yX1+X)L,(hﭬmvB[ʏ9|DɛsLЎ/}RNL )AIf[m`ުZā{[|F؈hNעH|0G;):ZTW;GOM#s
Z8;KU"kqH⊜(f<H^.q*mdO87tIe9N:Y=-[R0S8U]?3W|wF,~M_~d?`ҝ8F4b!S0l&R-/01},Ko~h*ӫ$X!؆$9wrdy|b ҧ\F4GbȌ>F BGLh",$+PFjh<c/|d.Rpz
di?6ffqu,i~ GcL6#Wַ˚x&mĄ2@["QrILPN4}y̐''AH:oQW(B]9?,D͂5柠;s7ER}ꊎ	H[&"ՃLvtJT%h!]!c4b3ʱ"hOr%ވSf؎dҩg@S.d}` oyq>
|{ڗiNb$ld 5t }ǌylqJ&ŹV.|V&T4O%;=w;nM7-F9Xe+Q*|Y=`Cv%yV`12ӛ#5۸߫E'e`o=\Y.I\:<
tIQw8\8obRq ʮ2T;TG3Et@NW[ЈI
w
<B<iR4IdL0yX"#XT2q-XjR~낪xi-rJ! &{7a7|a%!Md!7uc/<&[#XGVIɟ>y-?<q|2 $~` b;c&fnӁ@b(H.BCR_bAS}''7F|Ya<w
:Ily{)ϖzO{/챲 l[i#C;+RRTmF,Ua}`FWǨ]j,cs`2]tL-cʄjeHrBD4 6RxG[mZDs[8w ԕᦲ;x)R%9G_[O yf'H	uJ
i<
R=/s?s4őv%m'"ɱzxgߢ{~u"-"K#2)c,({*ұ.WE޲X'Oz@cPzevJ\&'XFOxgVyCyȡ>נ][9
ͥ" 5ISmA".] ৖ʋZ4;ipx^Bޚ58kс&r}8jNk
0#DBi@QJ.&,3W$9IxԞÂOmma0K*ТH$|іps9 (5=?#y	45t*G
zOT46lkO^.Rc
wL$)כd].3Aayx|` =~&q/gg߆O ;etz+<Ap1fengN̮R"#~H@QJ:Ziz(;jc6[g<<SBN8n!dɕ؛	3d`cI2|w "A󻕜umPĨ6:ŷau*0wzC)th4dR_aRgvI9\ulmWn]n-|Nbmxhba!vcsǭb ũwi]P^w&ЩHUZ9ffW'D.aiҎ|V.b	ːѾ@)S0_ bE]VF@w* JQCocPQTf&&=P.EdJh6^zلB	sH~#%AL uw\S	{O74ǎ6uS+`d!H;raYm:'o6K&H !cZ:nN|gIoo*H<`0Qtp</J|0)Wddl/Ɓ~1p[vRpb??2YM]5bt|׼^k"H;O&&tZ36 3%]w$̸mb%%\ףe_tV)l@nV@<a.QPW׌jMF-TԴa#bj٬+d!0zU
;m}˃:mdK6'&(!9=rEkrk&8$(Q*_U(2K k.G 0A~_eK,:atP'ْKR#)儨oI5bB/E`UgGnޅDn2,ADӮzc՛{K2:Ffڀvt,n\J/^>RvuW%PT1#'2+6IG:sF@˂*SЅ읙JZ
F8xnD`3Rc{.RD@\:
g>c3;,fNB0Kj(T\I"~!5`LvAX݊P#r;.Vn;AmMq<a	%mG^66%p)O*
C~X珠?^d
fCW@4tPu6ǃI
#;	n*Mw\gp9̍ߖ'}w|	I@ܠbӪZ4_&<[L׆O'\řN+McbSq
}ޡ
2~8}["ֱZ֧_`#{a6洅]fю^Sa$Һ*lR-ahىD OHf>5ÅxɈ(!O1K\y[	 #߅H-?14lY@ Og.yn+m>dgG֣qP_(L+XCJܰnøra5b(`"7AH)OV7!1r'!Rf]#,-GVSH>+a0"2F+cpHj
ECҎ\x=7D@aGD P(|k>fI&reNA%@'hg'`/BUNQ퀢eBTzn)tӁF>f*DbNX݂86
#>N C*V;cFRk*`zI06AOFaJ)iwߐ.
Ƨ&nej6h6Eər/KX32}.iF0o'[#,ŗVB{1%w1[}L+efh<H;Lw-zK_A~pGz[ 	n8b
Z.qu&FFVQxTZnLYywۑG@{/{#r;om˔CM;,A&;8@ 
9 E
*_&7YkJohVp2DbBX7ZCrr& U#	_pnE5<@z^'c$o>9
B%(%O?rc_u@Դ '$e4?tLisLsTr%=y3e$N݄oqfI#Xe|5<iL

uȋ/z1G=
s8CXN6-W1N譍!j%KmT
6J7-|#8ɸE:wH
oGjTL
,އ=eJN^\q*ԈN=ёUg-Iig1r0~4>n3s!i8B^ ].׸Ln@u=KH^5gf#WBp7}xdd|u`!deQp6eLOo¶e+YDF$Gb&-Kfh
v&P&ǐz;
[ǆp=K9m
Jje{ 5:Hw|;%;}X2v-J]A CnO?b*j:9A
1a$&&F{Z<aUeqw뛬'"ݟil쉍j%KgNU*{*{ڈty:T@V:ǦrqV:4|eΟ|K1ӕi-_&\,-anR9L
ztauj82QYc~Qn3R|obhOLk9V!B8$apiYߛm;"/h" ejQVp+,V@f[ǘ#yeU*OVIl
zݴ1ޑ#Yk72@Imw>ZB`h&u\%eTE=$  τĶj>뷦qS2~J
9;xG"[Aùqf
f6CzUb l:	ǴKeCQU(^NŵaduQ \
Tl b{~exÀRYlD-fS8
9)ʘ̫"S(JZAI|'"o+)O|eaE*b=(̫J!֕e*9cPycty
͉,n߱/Uې*Z^._O@ڧDSf繘JVZ萁dqo1/~Z/9w0JEr}Ɔ"ŰvqBeO pj
mxJ3㊷}1y֯h fH&'rƻ-(dh_FD^>,A&́|A'Z.XR;n&[FD2YOկn[C3_v`Q=_V? h6sjBiWP*̟ 	m'
FF(VJ;d]
b8w<-ƉS_Y|dG<RN2WeTL(lnw3^Q7BOsϙQQ.GQ.;KЭ֙&̇ES."/{_I[jUE
\"/~V7"ALN*#ǌ_d]`jEe(Sky%dUP<xF4V<]"JuAi'8CO 2VmU:|0Y"RZbG\H#_ExvAk'6̋irHkZψGch*$r
}#JLQ=W Kq;LX&;],%ٕs營7Ә%e
GAuԻMDdEB%lCc0

UDRQJ'雝N@쒧d4<]fU+X 9zd"$@&AM}wg(?qnN})%bE@vvlZ1M^D;C
1GU˶H+FoN(10&{CtrgڷiCUD'ȴl4:sk={3@E0)qYdc\'Ql*u"$tn9lir9g%]:N#}VuΎGI ꤟ)C5Oll(lVvX\RD{ *#2-2O2Ray W*	!S塀^:C(
U%f@Qxvb.0hۥr 8$0	mdaعȜdZtmb&@&V~/,.$CncE FF}WolŲ<ڸF7 RDK}0GaZk_KMfS]dWZet=*^多p`~ZdϛA&ҳ-dF6;+iDqшyPղծGfPU
insvdϭ=u eRl|n1Jbˌs9:TEaF~t
sDOIA1oǧ0h"Q{&nGgǆଟdۯ?*Ӛ[*ۙ-_? 
`<VJ[՞SQ֏
p3Vd51A.k"%wY[I^?JA
 xtSK\f/=b4<Gd#[jݹ#!^k	ԏy`	!Y7ջ7B.MbѿthHgZR'
w4,F`Ha%-Vd<r@C+O,Us^F]d8B7aZ%>$O4|/SJbį'B$DhfpIDhnJV7*e, 1k˖M6Lܛ
ݞdYTcuAx&mYv|0؀
Jtt*PuD,:#pz%ZL{Xd*c',
*]xe") <2 j
	qrV=Nv^AџȻڐf*'̞#[yS)>|D"	:ZCr 	XֲpUmXܼBPgŞW]h9;>HS
$a: \0&UTcd{ƍL:(]$UŀgV̵a:r>ؤ(@HnWu;Prj./HF8NzcJJC9PVvƳZsy& Uj5*v]靕)

11&lJ~ɉbYT"ymUEP"khaO$͉sjRL\5ɔP#-8{Ҟ>kz~H7j0 8Q,l\	\!%0/AכizmTѻ:'R8 $C	$4u
"WF$gE#9_k@DQ4ΐbu@CR\OY#Z& Xc b(8
'%J W-7 Ĩ`
ȩnP9PFy~],s/>fev9W0wWAH:D_C6'\%%E59
&/lZcPkg_trm2JUr/g wE4ZG/:I/0O>RG-2p	ECĜ1Pq'C\L|_~cB^G-K	)iSٶtΫ&4mr9
-59&LDĳ4,a73_EGJۛ,:-|%MBֵ^sg"ќt8DsT
A8/AY
Pd(x
aFD5L
=$AAO|PʫՖǞMЧ%UrGoGpN,ȋޫ#\?Zm
WUҟ|Yx]z2I2:rF^
t_WL7<crގBVItp6bW@Nĺu~F9p1G=vQXFo>A`$* kTe|]5ֆ<]ÿMG{Ơm'Ɔx2*!J|6*!(@v˃'a-5pQ!as@W<VyRj3WCAR"uӷؐיHB<uӓ׫k}-LyGJip%NK]{*S71tG
|niRlV>=Bj[U$vz
+S)CyqrRg ͗!gu6	luXVF&]
G@ 7r?8-;m%Sٽع8|ILmtBdjk!c$NL:jr`"73?G݆۟t覠!Xʟ\DI~},o=2:Rh&fgL)Ovb=shnU:=7Y<Q7u0~|y'$ ^5#8Kbp=-簫&DR/)-S0;ʗw/RTCxOtHd5 u_uB߀PW0%sb5gyh$*ȿAĀ8y3rU-ZQC
T$&b)ZC|R1I.'0U$:_1yN߾N	2378\WA#!{ DW89__T(
TI X0)G)FUP|KU-ǲ9TAEi_|u
[ / ?#{$)\mkTa
Q|u #b`"n^Mv{ہ;JG^DEUG"]6y MpT_Ū[r$f
)x:&ExO{z_n%%i5v#6-8y@Y=ZN?l˾,@ɗ]{se['r#[z@Ơp
Q;oU$6'p&Pa"-۲'#dڅcڝ\`fVMLUke?CIxԪh3p"SzBWu(&ͥIwS8*NxMF<#D2"0LAa9"C{KNAK+B%D@%5'nZk%&j)Q{t^6Ғ%
ERlI"}O{şr	]LG/OBT,.oUQ+ဤIDx5ǐ8 H
lr
i	!I!n!iZݐS^	ިHmdrj8	.NTE8ʲчxXyRVǅꇵo_@㉜on
4UVq=uf9ʒ#j@ᢺ*3݌TQVVIk;bdYgXE9mKEwsXԱiݞ}Aʣ*h2߄NXMVⅻz`|
nl#3<S;`QnER'Rqab%NaLGFa]_W5ܼʐt4\SXKuirC?,(v*vI=@N`%[R>UW%zW Ks6lX*5uTbՈaGKLkخ[EN;燯2DlfndC%䗏I@٠c{E0JZyDZEhD%uH$ ~O?@g ZB8ЭB#-@V|UԲ=EBqW.-NVJk9\^4ي40!>sAS/'À`TN	VX&xX@ίF+|#Hڼ[@*NNF"n),d<جi^%`O'k'n@+ AO?&uy%=Kx<3L;>#HCL":*M󉪺}3JϚܰGpd3lTx:BIqm~̵[`IrG8 
7kAphHC5^
28}@O CIry]!R
ó8+OR4e 1\]{wUHoeOj$y d_qНIA쌑Af)&A z+.Бr3kC+
F'b%UiW2u+J
BjͧɁ.8+:n
q0ޒ@y,]KxWG`1T@;
udŪD	);@ky)<4QԻ8:zl =֠CAJT~/F5ZRwWa4iA4(l$_,?:N^*ߵ_=@hA5*nҘ,i}#l#\;e*z?_[<?LЈ<*_>ߎLSf%r`~"V.H WA嬦$;rUȧUfjUN`7]\r̔Z.)r(FG$ȡuKT`G5ץ^+TQ.9Ѐuv5fIvsǢ=::em^S X~M!`XǇVE6Dh^AeTd<ܢmI(E A3Nƣ*	JL5A1NE	_ Cݼn3˱ErZbD&N=laf9N`O`+F qMIKymPYgv922W
50G4e$W	' 0jِe;*t3ma
o3t; >xhQoDT
	`]@
`2/UL7 "Ԟ]ԜEa4DX%:$ N7nAChhtsVzlטRVv
Lϵ^LMHcfHtd"~NL)xVF4SҫM!b
ҲH9@[hᑪt`m{ʃ6r¢؈&6y:E#~F-4ıȨ}-a˴~Eٙdֆ5ڼ΋mi7!<L
Xr{Uh,9x/2ﵭ8C ud'gB*>^SݾFm4<6pvCKHi\3뇀MZS5%M|H4> rTv0:RŲ
mmrFE1zrwؙ"}v.gKA_lwđ}53CM˗:Kn?=9G\OBKKbRK 
^;E"LFO=opbtg#T6]H#"w Qd5a_SD* B%RS0o(LN.ڪuabCm(m^*/HBP5'fVڙ7jm3A"4݅ԋ<-?cf_h^E]vdc':&"Ay17.Ϯb:
yK@"8H2/cʮ:J
H!]|@sP 4%QGx|dUSxzH\8]TIL|:!}?"b1[C8`&b$Dns-oLrm
YBQnw&Q!S0)G4e}:?Tpoe\8ZؓEE9K! (e֛x,h-s.xGuI@A]6ײEKwќ&FCy!ZӨDkp^V,B*VeϼqA<?ع2}PbAC17":ƽH>"5!
)PMV&c*xd&NG. ec,5+3O2mH2N*9@ R V82cC<ae;qphkX
y7VeΎ߮	Jzj3@Wq$1p@ٳW MB*PKI_<X,y3_duN	|tdLʈ^l |1V 0^śc6!%]q<]23fW&̳K:ō'WZė-L$PhPj!eYVOfZ-gލTM/!J1 53Px&XRD	Jm!'"չ5XmR:oB";x::khfdشSM|4C8iv_΁~4!f(Vd"
DUli*`<eoXGZ3Q!ixw->c&O5i +\Y@/٢2%9P<lcT4:D	U z lcյf&/Z=1M=)aqEzTGﻞcz n_<oiܰ,Ji9G)N\Ч</Ӕgڬxm>O牁w;x=
[v**y"oݙh9W_TW}|K>@q
ڝ5N=>(	X'&
D(0!og	߳YŐ&Ԭ>wԓ*6IdH/f($=Ğ;=Oց;%HTxW,[PWl{-jx!}y{;fD
M
hj; A/>:@uoMae&Ĕ+%**%3Tbg?:iē]*mV@4_Iiu\s|SjɁ;IfHffB辈 
-?EU(0<UґGe]R"r'G?9Mأ
U M!XZb@x	(y*tI uI]z-[[Ur,n`({cMU<#+R#*^5w}?|/A@dqgZ쓷ĤGgtI"~"@Y&O斬J,9<iJ&<!D1G65U9l@Fgˍ#D)̣bWYO0bZ
$ByOQ	j&	JU×ca
zK㊳rdbv-z rVbfeف& ֭ޅaapň;ǂ3Jg"DEf,ƽ[A<%Z>ę)m'<#d'Ae-[wDۼ%dO\{9p|tqUGH5@MS@j|%2+qPT7n"©׃~.GꀁI'Lw~Ձs.2.B-~7U%,/`׭\u{]"5Od(Zf=2E%I{s҇Yk1ڷO-u`Sb"d
bjYe퓇^p#V ꯱kD>_n
EsE1쁋C} w&`z$9rw_C$>aWEp 028pLϟr[A7Me26;h]2L] 4\[c_GwP>u۵uh.?R܇J
&QJ3n
4~ ódj09x6
:
LQ}ᕌ,\`T'`b|\B.A'NWi2&58~.L8ì҉JSLWa2YeAn.7lئ !2O3k_~bdF~N"<	I<CH|d/o}ʫ\PC@VQTFPD,[&yзۅ8\ݣ
e+$,3
hHr6FI&JwJF~lG7$KZ%bؑ!_Y-̖(nk'A/#&0U\J"Ζd9|D-V{|RЫo6RGV?lpL% ̄OTU	י
E5<Gí?
J$uO"_
ÃjgխZITY,al\pL3%Ns@aOxDHOx+ϞԨ*ca UK`ݖ
s|e,Uw-.1vLvf
;hNޤ8hMP1 l:
]f,P$7YZXFM"IeT#A4YszK+7ki)5xiPoJB3Gtn̗:ȷ\~≽tvdUYٮXԶP;̳ccyr)dǯ E6ad	HF0p*HtILd2(+mBm.!z'cO<K:y:y\K,sL>U29?$C<rc&xۙebN6g#h<;p-P8\䴩HD25%]oHa
lK1&k:~C2E`uN@iJNl:A*6B	֤6YwLw_Vl+ep<ڜeZLtAהB
0LLKҡR UuA`qzZjHӀ94EwB_DDG/c[R"f\VT9 (
d#S]xda7OQ/+Oh5h{յnԤlR `eEpFJ	/9A:J{h:`IM@J_h MW#C'6ύ$fS|nW
!NgBƟzifJ?1&'^$;lrAT%g`y˵# LgH׽c
R0`ֺsL=)0-<v;Hݱn?\acTY¬JMuZ'[TNlۖ%9$ʪX;&0)
t12>gԼ^P8<K%w^\:sؼd5jf'D.޳rLEC_d1L=f:4	XhhxR
@PM/m{/`{4$Plx	FrKJm
?޹VU/^Uj1?~.٬.rqOx(m-L]~BͪNpŝ))<>F2G~gE%
2vdp#+]a
؉hW> r%s'	]yif75[+u9L:_JbVNA0o5^mE©iXh8ճg	C9=5zLyhȞ6b<w{Xy:FeL#3is[@t?,zT䋁KJ8ϰ<H| :m\VDR,Hh;ēGdXRo>:$3C䅏*t1mij#*"Tא[@z@Ҷ8ƒ!73ì^O>/BJjBMf;+LBC8<鵎Vb/ĕCd
fBAFX$y=E}eRUKʀZ^/lQJjpLOR[->T%\S-86W0h._ho:Qj9Q<\E&ι˒$`DL1^pj+DrҗB+_t5^$)+`{j֊Rov)T6	]o!	DE~{e^=aJ5K.Tԏ!R P$`
tʲ&7pfSYP'>/h-[SUKMiWWM4R\S8e/o&,]qWvLK*:,CM|zBFnDN9/
uyWp.dB!!J>Db0}yTd_x6hG߭UڢU;u8/ƙKp~ݸ<Z.)hlR8,!rXo7bI-9ֈ3H\dLLڑu]ߝЖ ǈQ})lKP^	S$Vr
yXtN:YO	,kv<怞3Z]6TZ
ЀRuthq|wXÔ
oإ(Q,7ƗO;.N4ޠ4:RUîoP
b1')뒸goJJe='	q='ӫEX dܓmyDZMU(Q;N'i	l>	ҝ̲,7`d1Yrp6^.sZ}Nasa{Ǡ!q_%YBFxЮ-"%o*F9B|SV>qT0ͨ%'aw(fcd9~}̻DzvɎq2]bB})P{ԙ./=(P9	f~0gDS*\gdTS˨	T^D`TE,ty0󵪺#;! *tAͤF"q<`	
BYIqNrGD4Rjʹ4cxm<Ke'^0+8'܀~>r_4>,1l#͘d/e=ϐ5~8x3%QR!+/%{+-I+炦Ve]Y$Ù'Ȧ%ho2zoSlnNG+@%B*Q\C1TʃћqZ@FX٣J'g"^ Tō O$I x`AI;!}"+t!κSv'6~Ika	2J6WUMy(KY"6 @KU4O5HZVO8U{U(#*u(zF)m{Ph$R^ip7iBIJj/dD'W3"t⡦`>O
ۭT3?efqCz-ۿ`8 s^|3VtnTyy0
݌+R+"X'9?ġp.Wma^$d݆&60T.ͳW&y#GS.VXVaP
ӸO_x!+ȵl:xP뜤-Ҟe+ֽ4i*2g{JxkYQuؗ)Ab1NU]$E- ox
8#M䰠zAL={"GA5C6ai'hA{PU+n.\@r{TmQ4+I=^~2vi{	
(leo:O 3ڕ{g7/x>%ez7*{UqYR4<p"8](b9dj"v@4[r"tpt	^h	?j%6V:pŶ@$US^T@FΜ	H0q|&@VZu8IZP~>U-NxP6~9d̾oiV㈽uPWE;$i?US
ЕɄtE`xlf3D	U,<D5!w4{NHy!]vHd
V?tNF^mLY8dU>
g(sJ	!\r(*ժ4UB0HfTcHeFI_={AYP:*Uogܭd Q	D8,%k/:w26!38/ZB;hRh&MrhƲp0%$ȞI}q-"`$3ݔ.w8V<0H%n-sɓ<ϝHגR ْ*HOv\Q$MJ׋)c\T6"懟<1)Lz檼GzA*aU;;{ $x8,|ˁվYju-8ST޲
&h*:dgf<$EA}E+bݣt@{*^]AB_O^~A~&TFd!lJZ4D⑞"	<n;PrO[Hf\}ro~8{Ǣxw84כa{ 'vl۽)IFO<aOɤ;[OA&qwe)qBzA*ibYfIPEȹ{2H A#k3q\Zh02͡)c\4_dq[9+!A+d VE/r&l@ƽeBmh}jFYx#Pے4l:`AcitQJ06ЀLWvw.evQ58Y'=Z+G{wxF&=FĈǌ&ca&Ln
)W7kћY#̾M~"
&(]}U94W[t~_t-1,	XCvG6+IF\7肬E Lb=$vב!}":52N?ޠȣl&"y֓,g:H8UeTDaļ2jxy[,46^m|IT$TTd5eON֥eӜQh8T6JBj^<sibNDNy<hg}0)Cini?Jf}8W+IYx^#ߓr97u/
bķ%KmM3G<'k[HB]^ $VŦoMTIKI,qȗ=fIєTK@`4Bx2N-)>6Ϻ`q+Ieyb63Tw,OF&ﲾhdNɲdy5n}dg\4M^3|V83od<ËAe(
~'cNZw} )g611GN2.WWL|lHL2QY0!5
jܾ]0rWz;X1HbR2J9&u|_3fWnoZz&&
yN0I61|R	(94COafEV"d[4n=!1[}ٽxoV)ߴ0l8SW	޽X▊-6<.@br\$[5ATVF1RHf iWPp@
3Tʆ 7&UEC+^TQ7ҷ`eG#x솝 p 
"~r@..@meBꠉ2g'8k$o\N|=mT="3 vi+U>XUGRzzZo. -< ԥ w8|2b*d9RNE&l~
 lw%α˓<4.NcUYh[[}y1VdBؼE%$eQg07$knq7eL _t.dY(&o'"OՁ%!
%g<ˌq%ˋ6iJvwʭ%AmI.IW*E
u[,gY[c7D	JGa/`q;èXaM3	Azlojn"ŽQWS0>rhwvXg22J"4S3L CjRC%UdaC~[|L\ltYbrad@e=뚄ΖWeb~:
SC17NVgȫMoJ΋q%vF{nUe
 	ZNt>HmׂUS#SYE#NƄp@9ձ	$d!haً=l?60Йh{\i3u48;&\ⓊTl)~ᅏ4o31]F퍪?R}B~йPA oI8:j1𖀘HK`qNl΄F1J _NtADiaXZmhc7@o?h|>Tү
Gة/ڻ:{pp<	+!gc6 lnEK&cͳRޡ3nvډiT	7-<ڿ>_it+L=*wSyp\(-M+$i#2?T^	Gopw^
p!NOL!44쇑/k[{t~wwx LUF4r}"mu?u")mdh
{ٴ9Rͺt6w)lʕd~vRW-1VDx@FNk.{jr՜kK1)<nE|)g	1Hɸ-̵6 (>$Ek_%qaib	|![k<#݉S6{ɭTtog5J_-2Ŧ%>č!ޝlMcEmH",:&bVr\ӊي;+EjqM֙ibZP,Pٮ&O	QѬ%7X򡀠?r}-"W_"rKaEfbBwUĶRD&H)LW]bU<M?؇7R#x Ig>5l9R6Us,;YuGdbmȐ6ys^ya*+x7)`{6Ԧ4OSmj6O9 he]hKccUe;2UPYOhY7*^韒a@%BЉx(rpXzU:6ı!*1D4d
ÉFFΪ~/XtZIY-%/*X/NDu2Gy lˁO{ |H_1,y ^bЍ9[PjVgub>N-XJX"{/I2*!ʿ_
Sp' D5FHfxl=K4ӈ*Gp
r^#y+GsxnܸЧΗby2TUhHPc[P |H`~ڹbIa+s|?툖Ef
7i@"bya9
$h݇q0+mB7N.ԓ&֡
l
MƲҮM-KGۄBcP9$>X6<($Y1BLL
ZF.r y`M0LE2H"P*>5Sˬb;7ؠscYÐmK?䣖	TF:њ|ݿ&28Ƴ-}YM+K,	ؼ :srtk^'cbm҆ۡ-"mWlF<^Ef%Ltgi$Hz!N!l4⩑8{ɳ!ΜE͙^T
ybR7zyVlt{W#k)!K<)
VE(XދEZoeO	rQgC{[8OE%a:DIe Q.ޔ7m<#rJ  mg"}4nTJ;'5~ j|Whem5NO_O3/x~B{<A*
t2p3{|~߾,N&.6i7\1͌N[Ȧ$u;aq?9Y翭_Q~[:}8$a0a@.!elD[s^/x	ZT.@YB,d5~="&&Q8=6,"i&ѫ(C!,onj)tQ!r;Q0q2bB
VqVaDk.jCX~02p.X	-_"^l7ZV >F̙:#T
ϭ-wOF _6@CrN&D*`(f~w"2Mk4v;U+Z
 m[	"Ɯ̧zjR@.UH&v4~$V0|8.5s~]4,5ktxoTooYc79o?ʨj$oGr}]6j2-u6~hR&,
KS lz+@8!x;ERjtbTW"%Q$jXlF6
0N9X7Ǽdim<&P'uzvɸѱyPyS8d39h??Ђ	Bٕ->wz5\NALkYWo`-Jz$AG**
:PWs")0tEzk6lvݯ+&9x'=H%	JnQF<GPfZP(˅L]0-`#Ȉ05M*JpjU&(4rҭgeqv,sD5y%BAD%
1 $ɔ <\b6±5$
>|s2ϾQV:.h|9(},0Kg؉zpI^-[Hp/Mkn\21>+k"9Ԗ;,JX֥ԃ,쳹 a[c &yEӏy#'~PBʯ'zIO8
V,KP>QLhH"TՋ_NњU4Cbs&Q~8?/آj<=uJ㒺ܒ۴9ˆyI.8˺x&~0<6Z:r85\}As}5|Tt^n?	;,'*6
h-6ʊdxSPv;FexӲH
d."c`u31Z-> 0# KhxӢ\\tk_V,'pUN|6@@LdPU6z(4׬AWB?"{	WY;o
{83Y2@`jZ09c *]d*7R"R\	O,,Zj4 kK.j6؂D-;!zKlЩF<hR{Ì	7t  (.0fCцE.Mٴa|)7Ł9E(ŀIDg8zerl @+V\6=2 P$%kK aĪkUd<&H#z*V2-@W7w1nW2!۩R
(h]Z-/%fn@NVR${TqH2HQ;/El*P҃Q\mEj׽ΦQ=^yٙlp+cB?'*&k{෸X=F :4LCӚ7%/
y|Ns;,<{w6
ҀY]R̫JdFkanޤD[_B=:M݊>vHF#XK`?H|t))NbyAdQ'rT
ʉz6sĂvl~3Vz"i.D;iYek\=*V{ݼhH`2]L["DВ]P㠚(>u^(i3=ၕJ,oqrQ0,g
	U<\Ǌ[89B2EHE"	e`Τ\$[oNRB9EiXąԫ;VĆ&jө |c<xC*b`<1nX	j׊(` |
X4#r8]*Nuَ;\Ɔh]uC.{<#}!MtY3?آ7BYKTs)ŊjTgba: b9i0  &Mnk.PMǕ2#b x#tJ]h(D#G_4+idi1/;(!/AY*NK0c-w٭TNa$;f#[yW^Gdw",zTP</}]2YU
ܦLS0\AyYu\*UdMSIrC@+hLC¨̗Z"ǖ	USqgI#uE5jklmQF}Ab"wO9PnTR@"EQElz%
O|
w>YlT[I·D3q@'8F=LWy T6G@1on>I5EeLJ)Y4I!E<\]g
^Q»: G>
U	K	Dd,BRme`=͵Rt¡=T!XWWP@xIFtYࣁX4tzN +"H^]M6dګ0JXxeb;
KL=4)769f5="8[oͧcHMdwc3sJCoBq'^  dcL22%t;T4Uq+W@
UrȈ:ҎҢHm|AN@Ń駙UO(v/bTɄ6aZEqU0/o U5}hL[7J4mJ63) s۬oP&05Ey*mw˻8w,Q:<]
IW8Fm\srn3̦Ed;н粹!6L"updH%}q)ΠŤ4RT$hǀ([,
+thD-ramkL\ !P@AO~Uow`ZgbUUAG H4D9
WM=]X<Y)#zH ^fўR@PG($ZpS:&`ib͆JuV å2qQo5 -SY@A . 9(Hm(iUYo=ikEAv.'xN[HcNvExu#(EOi&@FUृThhi
aw;1+Xɺ"Kqd@ܛe5#zF7DCgEWKTL-bBTTbe^{qvXBC;ߌ6Cs/r'J +2298|U4!m _|׋xk3*vlЛ%k-x#YE/(:2CahL8^L޶5oT̍b0! #XBoctOg-)aT%i haBlyo5ZVHbcU:JT#S>x;UM2	0`*A{&2ˠfnm淐?C	ֶuiJ6Wt 
B	^2W>P`M'q`\\ eDRt&BHVP~"i[8iWD)HzԡaPsU툳ʃ%Hs6vGn T;K|FFZ
NjRa4g~}*9@'Rq2!lE	UpUhԀA Lcv"WLJjcg
1M@CH9dXZ()Hd=JZ[d+Ni'
Y#Zчd ~eha<	+< /c7w<ص6ވ`)`؉[\Ψ%s
^Y@j5KsW.9u8Jݯrdt=E(paW*6z)`lPG+IƩq{O[͐m۶6#:,уб-\ 	L0_oJDIZ\Mjn
! #U.)c2q`PőwͯwPppe܍lSyp"gcb: 3%+y-	r*Jm
̹F(xb3%*7)BW96߷n/"R5^1L>̤Q{&Ez,m _[&?0d3VR4UAmnÈpB^Fv	Zy.cGEXC/Sd$iˍ9Dv$0y7.B]0@nQ pOo"7!Qy'FƐtaV=
lLzjqHv
Ȫ#OqjTjm{uNe2kpi+w<;oVCUH:{wel̓b(:Ojܳ".K⥋3:*+,af7~
m|/p/q	)*qȼKn"_bK
vٰ |=	cئ7"à,G]o
2-u5QFU|%'+b|2Z?3_Ƌy6ĶjU,	O0d2for!PW>e(rd+~]\aOogstzbA?;}G{"U`Yc/Ҕ``uٜ`Ύ70ժ?Zⶤ ә(#%eΔiVHq.@z*Յ+iőlX
1M)I{7*&:n#89	(R"B_2xbˆ gd-G!d^",}U`h虺"AJzX{%>*]'⇏%CE4S*oatJh_Q~e&;<"zB>mxz
 r"*d׻LG2=`*(ue.@l?1cMp4ml"*Mc?2i(c\T"oDp(:5,6ըN%Po<=uPC(LG { }?^GHTi?3EOURU[(`^ntݐ*]RL
+O&cOȊpr$T	OMBT 헼R@)5-5Y"(y /Fa|QdF*TM՛No󓝓zQ/fe ʆfY^:E~1c2a8}Xa+[Q rXN4EKԁnqdY!U	57s('rFv"q5}:]"!)|d~M^!p%y56#k~.A%6)EEMt Ai?cO'__7ú.,db(C6kUB>&J/1H03?
w4y6rZV:+B',&MiK7]16b4I<(Zj<op-W##Y
	vy
@"-p6-iu^<Q.o&Z0!-{a>V'?ptƅH&YEB2JE
׎lq(ϜjF~M{VUK!{$GUwo奖EoIw0-1lkRBzIBD!+??
,'*tӐoF_ X_5UnA&r'R74KE wqVb<k`~3"᤹1\lQꃧzxKȏ_g`	|l\3PD2u"QrC5dꨒj)KwnتPQ:n@bĨ(	Sȍ:3vglKE&vMS<&())AZ0 0&}@
7ͦ}DƀŔ
hIK:7<8ᡂL|iH3`"xX$
sy>Jż.x#p%(8R-0*TRJ $+
&jR"(32j/t: 6lhgT }
B>:8'ev E1/8A/8	 7Ae8cIr_67Yy]!-䊎tDD<2*I =Y!fWD0ԉ;|\&0tAD.9UK: ~Lu%2*h3y*ᡒV]6>U(.Kkt>*U5AhvUf+X6UIINdgΰñ;ݍޤ%auU ٷ,?*%'j@nbTR>4h'ʙ89Y̠iSv

'>OK#13ȗb
n\V$UOV| 

vd>
\Bѹ^	ᯋ|t>l	|7Z!I1FA~#.U2ю-aj&S/|$Y CiPe
נ=aG".X}	cUICDKjc7O,Pܥ|rJ>oNf5`,)anDUbr>&ad[ؓ3cm|JTzXa7Υ=yldgؐELiM0ɎiL;оq*Y~FJPAx4*l&O * Z5d,㭙Df<y[1A&^s@Enf݇ōu.R RU
[Y$XpE/@G>˚_J<-	ȴNTkR#aw缘(8:	2xVQyJs&D}CR^_D|mς{dJNZo8部[ۊVi]i2,^ɝxp֓A"+Y̕%Z"'1d!
)T[2\=SkQT4Fⵦ4wD߹WuX	N.e&̌~ubz8!I\P	t ͢q	y.[4y9|j3/R)a{AԜ%9x|'?li̩7%e^5 ZAQeԸ+\|i**sn@ D_3<O! 
= 6sjedx+~hB~]ܦ/%?O(d,UAIɓO

-1'2/tgGG]"^5.TX5B\Gi	I?[͗L	h}/j"ӕcVr;O.["Գغq4$7x(	oͳx^IÒ8g*G*pwm5v;kcjUeKm	'Q&`G ~scQj<<b
peˈH
FB\*59fDNjR-fKRFԓM~Ѭw([cZ(VIpldEҚNrƃHq^9dOyOJI|r6yzB*V6/~^Ѣ.z|!:Ulb=XЋ0*ai޵ڿhMխ|7¥"SvUzdᅏY=(H0%">s*L6-_Pk?f	,{Lˊ^&^uR)uy\+)ޗ3rlX4а=	#Ysf YA)1Lw@4]fE.T@=Y<S	MCZLЮw&?w`xSpRO~A?<S@>9hn",uQ
؉ HD{qlf55dBxI8ۄY]VT}KEpSbBeگ2ӝUu`-IV0k7Z+k4P54m*"A=3׽.j9<_3ITd>#n	։=<!PY)(
Jkk9LON&hH} 	'aaIXIeTH'jEK<6wƩ
TI/fU=:wѷ{oW0Gq6#ͦsyH\ɍ6Ћ(	,B6aYu߉/bt -nLF#jC"H'jkY :+palxg[>&k״^Z:7484oY`@(d!]x:U
KL?/$	J"xܭdiߢM']a{aT\r5#EcE=A~GbH\n=yBl<Y+/&UO6%U	Q7Q@դNE8.M߯Wd%MVJ1e/QKjq?@¬]ycew)`H%jR o$WxmG_\ZjD
ךd.<
6 8W{7+E=:ft/e
~hϼ$`8*B[ E|R Xt6p>̈́mI	\G5ccK	Y K3bAɞUC,S1oRq
DlOY-ؓ5e­R3	fak"kI@k99G*KdVjq"xOmRKX
Ȣ8A${.:'bv$$biK%\FIcH#w_)Q 	DAnޞ~)S'AD1@,@6A`͆x"BAd2Zjcl eR.V9\rSV͡ r|2ĆS a=bWnJBb'LI*c":*,ęOh1*
sL]gzD=H,GVdׁH@?y%~ 
|#+Y=X:MoPF思o-<}U8
):S-W>Ԉb[ r#
j	\[gcnUIAJ߀/>*B-ٗMS-!s,
Iu!oxG b|'roE"%Тͅ
Lzu'556PŽ?.k,pp-Y3,@s!w.fa~V3+AV[p:d:cS:2Gv/o8 3;LِH}P lA90EXo>ė^81g^Jabjb\5ft
`=xˈM@LۜocIlш)9슘S-Zp$g6bfG3%ֶVdywFA,u~}L}:}bstٷmgYX
<	%pQZ
HJx"sr!c+%  '9ݱ8;^xJWwRm;EC'-jiG&N
iI4̇խWJDK!$S]Fj2gK}|^6
]{}c>_(k`w
=JH8)W,d] #6#}-V%aܥl	
(;2TNv=mN$=Ƭ|0}l~T'/c&^M<#}@I'"Z%G=sZֱ[MayP\0
tD'jnҀiegz~wg/G%4㜭Nbo[|g0]ñ$2A43Xzu$cRF)qCFI4\6qrlCUS}^urX%2| cVȾq[zjMxP3cI$-ӡ`1 
2ex`?Fkr#NǱhI0~s[Q3c-^ņ+ۜSyt>cT#r={RgWgu)ǎ|Ȩ)Fa,Gr&ҋfnh
[$YIٮC X!Fոt2'd
V*ȓd>~-gxXڈ0&
GZB(iLA2{SpYbj>?<2F4r	}Ay^tQxД %P$-?OMidNHNC|:ufJ	D.Ry2
PPv9+%[vQy檊G<Co&kn9 :5s]TB%(V,9[1
%^(&ͤ..{D*գY)fer3|sƆ`n*y 6|DL-@*E*DaחaifMȞMKe;sd
Ôdޙaxs#S:t%,cpѮ8kFe KoB"jÃ]T` ҂RF:6a4h0bڏ2By2I~
)OU+a AuW
4d͒g W>r?B8)}tY_@:`l!;cGL4}I͇2x@2$MU0Zv}tw\#SOykunVԺY3ܟ'˻8h"j#ZIo.@T0c_}4sR<KZbi$Q5jEaEzMOq&vɒW	h_'l/I	^ՙ=\>'4*:"#{dQB7/3\(ўYu)cn-Џ009&:G!ucA{ޢG2
:Hb"~q;LEP¾ʛԩcmt.7v6̷ֹ3wPb
,,TgCjgR 7:/g["J6_a8JDzGd⏤ƆVdx,NmWؠ'D˲.9
<R40K&MWOdt^
zϰ%mh۲`XjJɸf2%^>V|T[0}kQE.cLdɑ%y%xIԋYf",qX&M$HUܨcߣr1P'3lwI*强%voú T&d٤n9Mia
fo&4Χ94EbL o]rUf)Fd7>$>ϴxxVgI>t/ H.[;%Qz-{a3B7\{KI
M
HM[~,eҸƱʭI-Xl$E:MXd,ey	糧5RFN6OgXVNQ\%:eZU5h`GdK@꣣-vM:c|>-^~8ShNw6;vKg"Pl\j;WX[cXᅮ"%Ubs̈́8Ë40|踹=F1}:g%Ie\Ae(5pr6GIND1^P*d}Yݐg5H0/`hf;y-N:Jӎygiřn#֒+
fnPVxw_UrjTkav-7 YW1j(#eAS%(mАVūPٽ	`3:b_nbR-|lC!ɫ*0mQWy:hcl{zf0r8[Z1G'<n!
"

"ddНi!z3I%Y7wg+LPU& ]m
Q_AL_1Jz>kW?\`e/W_ap굅m'\=/Nņ3{E~'b?8OU2Ʊ[)Jp(3ra$/MY[dqoa2om_yXI$Qg+4eϲ)bN<6U">8%ԕfuy)~IIQfa޴
?[JQ"}&QboQnEmrJ1Kieǲ7Ѣ%C7,֝Zfsz3^ðha2;
Z3GpxLEF4w	s__OEEH :X+٢	wŔM;l=<\@O=-<fTBeٸQY[naOiX5+9t8gVb_qdEugӷE(I{bDcSj݊l]IņfIN	)GC77F
u8vRm6+#OL-`Q^_NJ;09ʬ+㩔bQo۹YX&ƐSj^ziQ3˪Rj1*MA\iZe[D	)Q5%}֥:<a%3 {8cD:m-͹|9WG!&k7r2#XoϰL.OĔݯYLDĲuRb?:({OKX;DMxV~KDtrf
Px#{)˵ PeNg	h\ٔ^8!6+0**[So`N24
8sT׬w
ŭI~oohz7Hezxh;6RB
0`keL(ST/0a\7Td(5-juO	y(T<߁νxPH[(!/S	'@,],q7$x2LFa6zRw~Ҫ nF}</ݦmE}}3s\YpfqUg@΢"
r'!X/Zz	&OXL+~LɝN"(Sg0W946s8,ؑj3H*Q{X^BEDV͒>؅^D=/)uQm%vw+Z?,iWzf
GLȡ~C(EjIM	DftZkϝgzDλ٠mIo.f>o&&"D܉(f,ٱP{hϭs[bĕhW@	|[D&$]U@3LeRLemJ
d6뗧KDijq2垼!bRȩ3_G{łtx\P*wt:[_)yF<!>H4
1ִEWL@5bb#ܳ)4=į+ ȯ$>2`/-<cLˁ3(_[C^A]JTByBeޱEfIxj#hB&Jw0ǫ&*7
FX8f*I!pbV[D2.<vbi3~ƕYlFbmd	sOʓC"LA sWkҼdDB*Kh-0\T&@Wy"U劮'\YA&:m\0cʹ	D؜݀Gq*JІ˷0ֽOXQ> *ʁ/DԨ5W6tVH+ݨ rNiwNd":y".Arc^YDǫ2ً{t0A2-.22-Rby;r<om (
W)ݙ$4yɛp\(f`.H<lZ3='`bQRNF+	R*>rG"fM$4(z"hϜp~YEy8]/''xhgؑ5ў]ʭFbCr_vs_u6fy-}Tr|XSqxA8k8gH\~ʇHG"cB~l*p"oĜźg*${M>bSq%N
iaɞ[=p!1)Ӫ0"pˎ+i'MmdPkh&~jE	ru/n֋FnWP)YcD/XⒸǍ0щzwmF\`oڟH. DX}caP:%r9d唾*fs[)G39cQ
uw(F|:P_CbhY@LgޜudrgVAKGi /tf7f'ɶ( (ptoJQwe\wE`I
N>&'C'Y(87OnJMe-3gl~`z$ģx֛հNBgdhq'' )
}y{6&ct.`(	
ыSNbhn}	>%2:%{K2?#>DFO;ቤmفe(;,d'Xp]Jy8}q}.SnkGJ|W[ITGrB](;XCƛW.E%`f)?({;,!(\q:-dB J$
$0s_ʭ
)E`W^?=wv枓/ q M<C4ȼa&^aht;^R-!n;L+yNBV7ԯ
%QsȺ!
ŝc<Y`zQ+er)gGǋ M)Pۢ=
c]Uٙ4a9yδ#z%zja_\ie%/cťY]L[@.o6Xf+;&(Wb/b<91jzgL<nQE[{o'O
W0bTG8䩋-_x"Cr8.ɑ\
Օcۡu94^ek]VxCA̫7eEE 7+Xݾ@KdedDи&Y<
Smբu/47%O#(A!:bzs:b"ƸWag}H[PYoކS	.-l$؉PYy/ɴO'-\긎Q~O(zƯwoxfCovZ9Ƴ2
)6w>_I2sj ߡ\MGxef2ċ&6t0D
ƀͣ/('whp(B끵F*vGY۩+6gXnE><Q(+mpM:hcmTːy132m*gƦX0]+\|Ewg?q̊2/`b\@wmNzJ@@ð0)S9TPEP?@lUL	"⦰i@%(tHafAy*`n<@wX!\MK&2c;MlM,{5>dy5$pH9{:B:@Ez}rPbIЎ=Ʀ]3+#>
+%~,}F.-:4Wd B݁Z,Jms
cb$_5|H5=c~ed7	8/"bILe0H×C'Q^4-ϔ=OT.Ay]	lfb_0Z"bBo1&KSrZn}cҶL7yv{Փ^HN1CX\f򢞯Ȇ_QѭE;v(#$T<Un`
A` Qr|\!@ǣhcJ6(Y%k' 6 /(h1Mye9_F!Y\EuR-
x+[OiDQ9
5 <$F6\b*rðxP뤁
](!"ZPC}ysͮrg(BCoߢB˂X_71Uz\p88Xj[<JzugY]a (6Њ&ȽΎ5/X:M~QʄX~6P'jxU|w	LI6wd̰G{~fG	H;]uFj^$bVBN&'1Y(k1ki)dYGq:#lʉ{Ӂ$߯(09j`RAXrve@PhӶ
a88F0Rr"1ݤDzAc~#'Ig6lΉ9ϛB!H^[sr#\r^؆"Sjpm;Om7hs^8HMy&ԭ9|E{Re]
㛣s	
֣X+"@6-=@"(㠈m`Њ4Άm?A'X`6l:2SmL㛖_->2^l8VŬ<Sj6bzú5v'OlRёN9~
O5`YÝ7ep8d0A=RG[ZM+^J{}7:QKdwJSYLZ0`<C`QT
F>Ls^(BnęqSV%29ެ:ըn葃2j$JNxV#MEnX~t V,}eяx\o7̅ɱ;+&vpnqkk*DwDl{CK
sn(pxF&"'LաUs* Q&-v>(#Mh`
S_A$	vvoϥ$eΟ;vMŬ"mgS1B%k$@!5㱡N<"|6*L.ܫB/Q$`:Z"W$4朗}x|rbBbM}k>FHU|gmΟYX+r(DZD孮fT>I{EE2T
&B	L*,)35095
9E6o
ݘw,F"(|24Yd6|UL3a6O9kVl
!X	DeOLR6ΰƎ7Vl,QYK"1'\}kzFoÆ*{T1SVsgSQ9	zeĤ)V !SUp@Z(l[byqP[wCw*d	_"7vqVtV%IB-)r՞FKp
p^ԯe5+}&GوTͫ2gzPPW?-8&MǢmT-{C/HOV>H@%>JH-h'v'8ʚ[N1ӈΈ粉\%ULbK+?e)Τ,2RIo֘Z
ͪZcɸo"m:;7~8PTm±ȭ70QP(%AB4`i)OKrpiqˡi.L_1\:xJ'`e{cU]\6llpHw44jW5;
56k`Dp120/28,k
 ϭfJRS\.,X*!ٽcEU4Q`vL*HHt_rޝI__+p'*Hɿ"{Sg6}1QDʡRVGjBj
]*MlS;hZgTY'vRU
2RtQIJ&b)W0ySa&w N"ia-HDL±3'|miMV<vazLρ>b)L}M-n'd%e[~M$J+bT{bwP?Bi?&ig K05Ka	qb`MVh?
ԖޕnV>&3rL@Fh[9r!뱒jt<YѝYE; *9AeW.EY[@Nu}蘤,=EH2u(7*`m"rnaw"/l^q?V7zbx۰4p&'S#ryϰe6 ݷ"j³=\.܄Pcr(g80
FQ^@oiPz
|2;n%^S#36;k#mբ')	6(ۤrsno,<V(d[Gm(ZQezV.h-jz;m3eAv:Jb  g0Sh:
T45V`91Y΃wh}L(f	B-lUATKG>Q̦4X^xb 6KޜTa'LY^vਙ	p(+2.P[I2UmRŀP3 hL*D8jVG	WX<|:My<q!Y6RA#	ǜ3Q6ۄnӘ7!y於o4*Y"
T@yc
w){`[no c(lW@O]g T~k67rG,e~6A,
H::-@#?oRK?HŒ|"d8tb!W\N]MQ=L72%!k1Xu ?9.#@]k0|,a[L6^8.n\m/?ŵ]II JEUP#Y|Qxb
dL_AwB!( _KZ=k&Ú-rf]M]v`#
.U#f8Ycdɳ#ZMwg`Z$]C!ڟȶN6?Hbg2*\ tG#f4,6q\tK  $s/+tKMgi&#ȓ1vm-	1QРlfGR)SS.;uȎP6
;s'!Z%':ZTuA%1CQNWvա1/JPO5&[-R'g:iʴĥw.V~E3٦ Ag.t0ݰ3PNu!|]_dƉUBxE#0+mdPxE	VK8~MF
6JJUB^6\ IW,8#C(\l4ZF԰!,k[&"£s>$VqN kaay.eFGHX]:z]T%DmṢ	_JdɈ>Lja:&\`FF/ٜVK׬_`iP\jy2!*@ܶTmuhKL\~
'e@y+6\:ȺA*}UnnwB1
^2H8q`=Mہ޸0AJy5+]ǵ"8sykjyywk@hwtOqSA,@q5:eLxs~-$Wj%8d|":[SEDɢ&ލ F<2#=@1av	hx-+akduAg'zBw{9.'n	#fjzi˰g
x?vvk#h=5(wXڙsY|)O7ܫ_sR_gn3؅Svtܵf2R5*\!y΂6@"t c_&"ʘVF"*:h$jELT[('cd 2DqL9?rI43PT5"o)β+K
X8"fpb	FAl,v\k;Bu7DAa!2ge|dd~RBu']`]RjLZ+Ё!3R8Q;x(jM..B`})` /Js[{+(v9#Ew&?.W<CJ@G]wm,S;`Yp@N)	:&	;	k\Y{.fQ@^lA40BwhwἘ]4zhdK\H8d&TgDPBPKCɬOP#:N	;$>0m#X,W(xdp^\0!L9s頒*.s9&bݚ8h>oa`'gzH}Qr1ߢb+3L ǖ+qM≿Ȑ2ՌA6	6X.t<fOx_k;m=OH0*7+;k$0}Sdq䅅K_=S +<="M$E#=ND,j8`!X"q E\ȰM_-}EXSp6{
Z6I";B>f}83zZiJs֯jlB_%Ż[%^id7&6iCf!Ml#h	ڈ:N0ad'fh7]Uj`4L3О,쀄
8(#,Ɯ3*9=B60yH*Bcf519Y3ϸ@e0o
Ј~Ž EyÅ&SMoqUn͏#a@p]T)]<%Y4h|:ioO	IR!Z<6ouR鞜{}/甐A|SX;=ʆBKQfbxvlOH9cȭij۱QTP''%lqhㄪH˗!i
N4.,ᙐdi|2M^"rĚzPvEL/OI3~ہbG[I+F_GM%?Vịވ6`_zzXgvh7ٚJ]С$6cS-`H-D>";\l2{%SJɿX$U*&]5
9NVq&c=
]bAU6MD~^h>lf2R$BeT 'C`-V{^)ⱀڲ{0kvhתqHIה[WL=EFg7zصb²L"!ITO|k]6B"{|c4ˢ*=55maX-crE0˭|ߘjK%N$wu%
:32<R#wuS'^n툗&4m6?t, :T%r41|{Z`M~0$\
 YU)(kTm}}z>tc[|HpB5vR\AUy0:j	)IzL52z]P |wHe(Yy`hP~Q
0ۅ}@3L!%E&ynަY}~Z
I<mu-)рuYvvf	bb 6,`,JnZ /16c1AA/󁈫^S<,j!
vؾUæ&Sx,DBαp) \ËV:" :G-#IԈ]'ڗӵ='J҂"T}\b/{(q
`at3&IbQV3	ϱ𗙉-%L52X+Da6I&vJMRղ"* iRƱJ*x¢~3IŎ8Z  sD鷺W^!Bdq#pu⮩ÆQaq{
E`IV?ofi+Bw]?|@cXr2&ZNB=DMRG"
L[ErG?,H>Uo/8j"qer6Y6-Jǁ7\sEYx._"8i*/{ѣ<l>U9,`L?O쪉:j'ЙP*i`߀CΔ As9,$gBH3 0n'5"k_\KDdxG0s9}m+&+R8Te
1L)$ئyqTǀE3E 2'7ke|ZCe:c4W80$6<B4ϑ*(gR ycd
KtƊc >)#ARgܘ8R4y$S{sJ /+6HH@wMve~ݘCuktu*䧅ym1yq/t*JC`1TtFOfixA㣘,dP3m	,x
&Ј>"iIYx6TAȇY2?砩".۴Mwaϰ[ Π^qo&l+7*\:RŽj0yA}n̄tp9pRoItNC5FBkPw)["
96I5
>+k<;lF?P[bYo+= ;<رF
^N5Le)$U`j.eĝDތ8ʚL[p.Q1mmЀqB0,F`2έbNl㑣8Tѫ2!#^lg
t*sI䄔o/p:O{d|J4OE]SG2â^mtЯ.N}dܒRg1zo&'l:NHr,u0jȌ^#/lOZ)b,5ə1mkx>J@K,>fiڳ'g&*h$sk#zW.mRD:TxWa-<E4Rm8W#2_>Z8*z0iYmQͿI)\[60I_ٙL>D.T&e]V"vK0L*1ٝdƌ}^qk1Ȏ	jyHj)D!c	,/nz%r3}A(|v-+2z9D(Rrt2./~,Y/lV?q|ׇw2:iX`>1Z-A$Y`j7vq[y}:JX$pޭN{i
MK'2F@#T)ӶXK13g1_C
Irb,@L\#EeRv6/zFe0mWyU O!G;"VURkxƬL|rj݄Dh#pr	*_X?ͺ5'&xREŀ%h̍&p:`0\Gt|yN!	řpgqyO.b%Ǭ<0lh8%I"AoVee '3.p0Ȕ.;[f(]6?׊H٩Wgcqg]VC&WxBC<*Qacd(AFpVg6(%7Zԃ006(/Zz|*y1ǵ>5JlߤO!/]CrZ/f$ƤQ9aϙH(M\TYkr[:rN#oŖ⣙
Q*pR֛ⲬHo[U_AJ}VnedYrQ
¶1EӲў.3{Lh{ L7T94xe=/Osۮ:j<8SYQtmW@d9)z'WU٨4~fndw&(2IyIK3beV^`$ۅ|`"eɿ
g QB/!IMDEDVg؂q;mz,#
C3/׆iѝdT܄Jy滼FXģol0GQd$|_CZ9DB,V5ʌ,1p ":&c
Ȥ+MQȒ8~¬c˔?-UB6A}{xb׏U[d5,nу?D\'G5ZM
着^b51a&`l,z4&Zy(b 6#?ԦJ<
yigL`L|eg7QwYQg_$CB#/TM0X9kOf=,Aк_H2zӗ÷4\wS!$Ćf^|}'}X
N.`ЁKjrPVڴ
xfv%w^Aב='%D,?^-a-Ż&],:ٰDy T&lF[VhT:Yյ^9ig!#P1a\9^@U@ &&f&dz(Jd|44]z"ߔr'wxyDD#ZpFfB$J( tNo7[z')Y(|*0ڊhbaS,V^,62pm,_+/yrWI{	]g!	bQ]t_3 V4)]yײ[[n92&˘lcؒwfdل֨$&$cX24G vx+e\$77T.rǶx
6依hP`Ǌ,"z! 8_<ZȂus23׋|jepL,'a@.L4!=r +
+~AU
;7Tk\_)/F'$_3\Bqyd[ʴu&䄰@YNXƿ2LUQmZFPY4{%"SŐ5=ah$dF9.R
cxvW8Ye늄ۉBm:B~rxJkc\p^J=j#a)RG ,1cWc}C65=Hx|(e><r	7#1)(Uܫ{Iߎ߇U)"%J,c đkPhf6͕am_|/?LPR:n
3Xi@|5^<|Rdܩ FFe^(;,u8cv[~ftqZkhDyZMǶP0ғ_nx,:Ğ@zwꁉq6t'a8U.7(|fCSV(ŠPXMe*Og/ !/EC$a'mv+Җ\b#GҮ#ȕqk(;<aPQZ y}+Ig8Ⓣ6=P&%:Uē\V/-%;23%̬6cPʬKbN\D=mH8]cp5oۖQrm
ȶ
y4<$(Oe鶎).(ل˅Uđ:7sJ.ȯT1n:!qכ0=
xX`xviUCDdQ-~@wͽbnWBKydi[ti׹/]Tؓ	~sf~*Ќ]</7q(O1+Ȱ=&id`th/[L6a0~anJҩPQ:l74	I"YGHV^`¿Fc~y]@gqb느AH-#HR@(piʔZY6m]>7
Vn`148oxbz:+s(>ghI|OYT<k<9@ms/_$bv}8/;t1KxW0Cf8<3	b^s 3x"= *S*i庶B^2h%J
 ȍ\&T"<{YxC1-´O&Bծi0g2hU0]ș02\s>HѬq%ȥ.
>[<DtF#ȒCt/&,l(CAiL:>	ē\ |>XA׫&M]R.4o >[@faa|	w3A|o?<A% l~r\VK_.1	`v"ZxUPLʛ}])>3H]UCYY,LUAJ[,qgkm%LB) #FczLORHdz71qN3l)FiYP=O^LY
ňMeBpі<E :U0#QS\fCzh7UxccH;n'KQәD:"6\:8
 3ڹ@؅/<y*'7u1xUrW;0Xj@EdAŬf
4ѡ8hL
3΁э(o8""^-+VŖj{/K;,8(cs5i0uKWfWj0}Vܞ/E8Z7cc|`[7EYtU
E :ߡ|Rb`:]Rb$ix4<p5NB\FYN J/#9jfMy̓`xC|oHUzƪ13~Irq$0=Ӷi]U	Z%v
w|m68裷
a4Ygo0gR5"cHĢʕUo[<
JgK(
{'UjnkVy7_}D27 ͶG+xna;k~3*[e|]ENBRs-K#C(H,pŧ?!Ow)18"@--HeE(+NEWF G;,=qp[7%Y) /pџ
X<m5cr<Bz̫hoMj(p୷APYI!'nǌry.ڷ2lL\HCd^jW>؁SW):/G4Xe1y[U#
HWח`Pٲ
EE^7rD07YjroQE(k;M{wbGjQ;O0Qὖ_)P7WyR$]T`?6 WE7d>/Q!𧞘9ӳSR^Z\-f@In/[G}ЮiPYXhWObeqi)BeD|DpD8RD>C9Cgr"twʎb/բ9̒,u|M^&[2D̾@+wPpvR5d
v1]-~ư|2sev+m{w )KD"|N6S3cduaUBa͘Eb
l"L 5Jm}tmUyU~x5yG{o@Ĝ3ȡOHT+\YGq>Ћ
x1_I@oh]*!${/Eqg{u@BY_:IZ+ӑ hD)P*ovjHM4leD-I:q/Raܙ* "rLJϞZS_pf:[ಜ(^^9m"d)J׼
ypcbo=oAB7(V-G'ƗmC0:>77eWF
PV֮Ɂm	+{naչS:2%$FVcI]F5%\gO²Nd挟"%1):vh&&[9n>|Y
k?X]fS,ӛ$KPK5K`Rp' 	VɋzoQ.LA~&
S[fLӿG>7l_|F6	LXHL4?:ҧ~AL~Nnze1	QZN,Nv=~&D ]ws,l?MFn'ل+
KQRG)բ=Dds
7x+h{ەh+39=@PbOnnqnj.P<ydM_qU6F<AVzv.af;ɦ)Ԡ=1	
#YDW|r9Fx
$ћK`	4$Taq
cHDT_/=˚*B(gDud~s,3&C832QA+]脭$"("\sHyE7:Gd
:\Ɖ7A&ڤNUy/ڤRZ(1~"n
9US44&6kd$gm&ph'	XXHT8i{Dw G{w
@R4H_0\`KՂqwRD0K7YeEE\ꁤ4یB#/UEݙiOr3XQHf#
cA DYL<Dq"STh"@IWUH UH+&9˱X>	h2i)ʪ	|NԶ
BЉɐ,ͫ!]MO{pp	9i<]yry:y2/ӕo_;Tj6ƏvB	s^1|:62r6!bh2M"ȎAs:$1ek, '@HYk/Ͱ%jE|LX97kZ2L3 iTu`mH@T[GY=\-JL	Cš֨O>>)	SШ6&]seoo[1B@c=XBh9eG؛Yb,OݠXy.
Fh+fEuOױ)J9hM#w_Mo"nRF·M(+/m`mR1X"shkˊ(*f(x֯"m'ɀh*q$ Kќ ua8x8AD41Jw~Omg :ٱX$
!-̄Ƴt:ry.:#Ԟw81) b)m@??pdYK[RT2W,< <qQ#*`h\'23p.a@qNXѕOy&`WIA0[x +ՙj%	6(l.̗ZUSt/sTJ I.
Mq<-"wzX$8}C}M[o_g*v[qeBm	X۳J U@shEZ2Rtl&ܩs l1Mb3E|#*<E\1}#)t
P:wt,?Y[/P(P ^ۛr7O;RFZ?xP<zO:v7yor*EiIjL6ڒ>+ٞQNHn2	{5¢r1%IiCO<MJ|/6e^`d)t"XCGZ.Oَ3Nṯ4bJ	t<sa26<w'e@D!]ȱYPLF'u;H&	D	NM%NP57"
o(dZ3J	ϳ2:&vKFlodlnެTf┧ThtyW-7Ha
iW4ceX
7Ƽn%s`nyP!8b0O9>h7זN}rk#e3?uǠ`]8?jc7e
yal4EW!B*-ddu|iaS=_|!))}Zm)"63eOQX%	yU)?͋"*$
8:l6z`HnZUEnw/93P	~?qU/nCY\=]|Rw>OdqgR:rJ#̚Cujz޲Fxж,wSZ8w1r֚/-HI/bMn5<dڴJ,`fu&?.w+5Z$o`O
,>FK 1Bͬ@]&0("PbҀht׏cxH3Y|_tC[f|,G&+ڷh> Ȥ<N/2ִ7XaVG%
)Vb[uj_HmxJ0_<6^1l8I<eF
\(Ol\8X({s7_c2D}G=7rtN@(ڛ_y_ī߮iE3xTY{"d(gbjrS,boM_:hTXMbQD",N,=EFWMS̭)ȃs@{"?^n)Eݒ@?R@8
IzP: ܧL@'U\4~@ʄZ<QLo!y
d;wQ\

0'<B	;C⻳T	VWwpJ^{H"#熦>>3P|q[TʘwR;Бl`⽡
ߢq4?M/PXF.X{F),4!O+p9UΎ-6*&d7+;nx_YSp؃`0c\uyHRMZ|&XP3˰z['\D(07rm8xakpYcșXH_I[uUY(ݚFw<J+&Dgw\!y/e3⵴b[{Xʈ;"7J4/qXCJ;oւlW5e'*Z)Py~H	J&i0P~FY88@JxZm7|PS'ԚU\{l%_g{7/P1+_$BDUۻq%nѢ3A ,lPi<2KH	Tz^9 䈮|?DCƉa=쭚9j:5\}تnskI-Tb8%a6퐳L/=
xZ(i_:|@RR'JOCpLM,~[y
ˏP`eUh㰉_Ҩ8h"mr/2_;PlrNH/S[~<=UY$976ޔWfrHIkZ2*O!Y}	@6eBՊPYwYSU\F*kɄ+N|G~ s{`m`h݂Y7	.LiZ3QJ[^W(s7xaZԿZւj1x\jd<
ϔ֩N×rcʎ{4@I=qXv{f!a39s^R.(QtO5TыΚ,\19<*胺RVHytSjυ i]L%-`t/XҤmd-Z=l|&%WfRQ&ع̣,

/y0G+UQUc(daR#
E]PHģ>ф=t}uC,x	/\	G)౽8k6%Ť\mF
p#6#@#ПD
3tdNt``3ިek.*9fTbҲt=pD8=ۣkNho2?{Zva䄒l1s#9Sax6ubTE;:hb0ػ2u&s*cL̽+Υm sjص6e@e	Raxy/<Џ*z;B|7Cd<1ɱ8ɺ*A,F2e^rq&bC
\]$dJ`	2J̋ج3>*VX]Mʉ[$xr#P'WM^֦al<#"Q\@;ڿK*>XèO4+T@67zѮJoQh6o@[l#eeM0}~0p	"u&ha)B=W,ִBn#_E.2:7evSA$9z#hBq%帻tJi0'BCv0M/R؊-oj=7, `y`]щFa>VB2cHF]B2[e%ŭcd[rf9%6M_ANfc[C3VAWaRm&ՂX.~Әj%r'((KxfiE=ljǐ^6O=PFJ
/DFk0
[shJfq
.N,31-023ѹHf>`tJnp!%# l<db@aI4C{p,\<ʺ$aٺf$k8^ۃs#8R\y~#rGcciªk~:>*wbD~^FPh6=ˑlzxGf(7
\S}uA\D6a咮Bd'"ƥAh-yî݌i
j\3hSS8zL+&BO<cϚh!$@YK"Nծ!L+aLh]ZiVqko%И7dd@?sO-#:4c2\
< "
:Më	O(6iT4;m2h0RFE<o^#I5ujb¢,:UdYk5(1z_KD/2v݈;~fL8#D~{ִrQo834!ov̯ʛc2Iq-@eeͤ!5I
K0tǱ`Hra]9P~HIQw4 n*L{1v~u /]ǒ(.
ǔZXRm`|]*/^Co-"k PE[,"<H*JPZC4AYK95H*x"M>!#nImr-<o\6r(A%]@*E,=CBӥE|(KhmTLAW9d۝!|ddS5
8%i^73f2q%'}+>
	+t#:
ͨcDZmZy:y:<MϩǦA%"j?#!Q
1'~+{`83sX8DzCrpic¿vXy ^D~D$(괞3%֫*bGdXݠ7߫]~	PC
jnX|^	2cMDI0U	A#I~̣Ƶ|S&
bUB"vQ% ?Re{
;IERI'-Աb;P;<i%J"Șj0Ve)@YQuࢅMDT>uBvl9ۼx>TaWD`/(uS5>BF#Q1*bRfoi<ɘp+bd}zqL!bi21CqB_XO݇Ѩ
&^0Fbiظ,F6s2w Z\A`e
,osKs$-lcJ՗X9Jq=l<*Oȶ?
\ܴHF6zUǵ(3slJ> :dWTvbÖV]ɼyvl;٦HHΙ?"S裙%^;HyvD΄TQZzFfَM9xo3x"Qzbݢj#ȳZ$dnZ4wt5ajx?~ ݞ䦂o+ь-WU0nҔ{wH
E&%Z5qC{!+C-^QcT>DK6e[޵8,?SrJH)Z#
Cw 7!V:kY-o	)QYC'	+䢘)[Fp2 WYxQj뗾pbHE% GױkӄD6qK
9<~" ɔapMltFx	_وa3Xݍ}/x-c-L܃>kuÎ&{۽fN@'斅GmtUXDf3Ƌ+h#ތ%tFg:-b]@#y"X0
E5H<9llבR~dōTЎFT`+E
ecxKE&Yl`# RH#&>s3)ш%	vJT܁Bޅ-BC{f簲Sv	afbP4[vSTCzQ$NQc1׉@aTJDGQx]ϗ=DiR<Do0Ψ?16L^Rhi[erϣdn7y9N"lH
2\Y4S#0(;7g7
[e3*F(
?,GȲ[<|r<<4
*=)34"Iy)؅k[إe@7Ӳ]t'kRD-#0K%m~r@ D2Un1'\+Dq`'8/i'o^b&9à	I}E;uvg6l-aS
g$>L8Ǧs@7 C2A:VBL`8zƯ5r0Zt7[_+	,XMS$Wm'`'d^'DĿ<5qN cqgH%@Fť
z&!]VPK/&ÝgivL 1W"X@Rf_mp87w(Fǅoedl#޸k8!3J =|>2Hurȡ0֋0,)=\d7 YnBڴ%bb/8ns w}#ұX=˙\-\+ pLB*5*O.('UKXq%ȝ-A z84X%ij./wJl+_Bliޒ9?!ni	. '.㊱	P&?[hB4msBv:7UI
݃ "*hpЈ>
Vͅ`CI<gYTi"޺A7z(t֯qʹfmqe]-1J|c²]%N9 	͐'|ʠiHAOCʷ{]nnxϦP6T[~D%ܲ(Lwƻ$z?|Y3d!N.suê&fДHJ?<\G P6?ӤD:5 e<+" '/HF$M2A7>(G]	[Pc }>hf<ܤ@K<
}|]JIuxj@pv}
$ZLLsxPMW"i*vV6!!cru^%/ (JRUY}L<3uY\A > /J+
֣ q`;YIZ1>$֬a?ŲE֊_`/`)*9tkІ|9\XU=]4ESx
'e+UW'P6oځK:0h0ݳ,A`?J-@S~QRLv 8#'LY48mg;*jR>
~JHB] U.2Gnޒ*
4%v**Jq%m@-±HhPܯnOZ`b*qa;jpj,Og)Op9(Dy$"87I
RO$reF@<`g4<ԩA	Bet2'CCV*P8ΥK֫-zt;lk*N;Mb!u`J 9\p~97o@xawQ=*i!Wڂ]y4yR2-@GaPOEkF<#q4)ΑP4ʐBլс<%xegǍ
Ó0$R g,b757&JLr7Z;b9]5ߧ)TkwQyHV7މ xv]x Ctz&f},)ֶ-Fm9h`x_Z0b7+JR҈oB#5 wNHmúF^.0y4^^$0p9Tґ OMÏ`Z~VGxx~m
5$R<s =
ⷸd4tz ^3A{.I
ͱk-M=^Dx੉	 ;ԙVitʗ@5U:&dcLP"5KAsf>\3;)H_h6:aDt:]cXFБ
g
4ϟhMӶa80 1<OdV!̍0y4dJ<mĴzn-\ã#"-IJ|<o'?!5G4IlVEFfŉD B
Hja7;༰֕*\nR!3јL"ćGTQ9"V*&b,`Yڳrg*;y}z%[@)z?SG#nojőoFZq'FNWy_]29h(l*CUQX{,=$NW{u9%}~xF3:o'ig|#51DڈXB.lpDeU㶵^n1t~`58@Y";^s~Iht[5mDh"hZEw6j=DXAKO
J)WKLp
F쥵.pW)]xbq/\`ZqZ2zFiDچܢ8wS0{f1ECP6,={6I=mfܠNd"P'H=!Q/
ZH2Bj'SDbbNB&50~A/%WQ<9q^vfz?":~s
=GEѻ˅|<<~\:L(ٷ+&뭤dt6.X?#QJ#{8F)	&P3^
ǲɔ?H<W6SKKr#6SnYEcGp$;o<:MD|5B}><\+bւثx*!
K S()t_Dt͢w2#t=b5FJ0ftHZQLq~>z/1'4zً§RF2zlhC8">,ў{;#ઘ>AUoe
E-ɩ^:Hſdc EU)>яI36jrЫ#cUH4j54`E	?¼$LzKRpF;<*j0V
mSBS,J1ӱW.	nR:$}gLRI1Ld84a	u?U{|'O9uZ>q:xLܕ
ɨ1r̂|7ps7 BD$$7

wlg WBūnA)2h WUDхEwd>JpezױQiel0նL
8{=ɚsUǹUހh:;"L]bE Ζ`96D+e\~yy
eOpsݐ=lLV{-Y(Mp;kW^u<"0gGN顾\[ț'LO@Ke'-&$Yˈ]FlQ(mX'X]+?\K#[*/Ѝr$
>raT=Y@FRA*Ҳ523a^%3sE:5:Ƶ@cMY>LNVmħ\YPWT/FFIb[XdׯHe^\о*G@ǩ:^B*Kb8h>Շau*7"[DOkhdʚ(1`]VSҽזb=3	\P
2>OnT
"*s;x@dTKN$fNkwjj5:)b0F>7CNiu	P|ԋU+VMsUX\%is7|3:SO14X'5gQx\/1IQ[SLZY	~|F!jNWjA^ 7%O!"%+"xMhcRg3C \oDp|hV)h[^-6{`0"X=& )B&v8wϞL+ՙ4Yw`ʀᖑ7
#>PVbe.PӰ}ifHq=p	LlBQ{<Rx	W&EUV沇*wګh(.s= ?eV3wxTflav;E_-^p܊+Ȳ,Z|KTI*t#.*qI/1E(+-71dBlY.}oQ^G	Hm gXHȁ+;!Yk=ʱw
) )]mJ$;x갳eDlwq5L6QEaq4ZfOܧ7Y<C]|3h9#O]H0h,%V*1Jeʳ@ "e&@\j!/Uħ.3G#|!=TFHϦihPl*'1JK
2齡N-z+2˓Y3& #S0OB#h!K+ru(&zKpFKLPHRUiFfK褐*٧2KWZ#Z;;"AqHfheϽRC"^2Wב <
pj7xElSY8#Wd'bR&-KKSZ>'&;8IHU'$*5* gemlAd;Nig
 Uf8\VMY.B<p\M@}N6$2X0%9nCngb4@M;K)`w^,syGTbZ?B,Q
1A{5bƳOwfp
+DkNʎPG
䩎~p@eX>Bi: C-&wFLs¹ʄ+'db$IݸF׎wkӂsL!
{,7*(+y!۴CІp2;oDd/' ҢC3ly]!"[m;**s.9l
S	d"ho-2 &[6䠌;bB/d4<c!?VJ!ߡ~C#ƛH y|`iE=V%- (;5mx
Ǌc@kW;p'ޔJÏ/@$߸ז9MAz-2Q!gÒE@'@#WˌUˏzGvBKީ
j?<u/'Pә"0dfRK\ӼW9F4Mc.	ZlŞB=2
|MȮ}SV J@X{t_K鋹R@Pڋ)&X&\&uOfٳҡ]jd gC/3xRGX6ຐG! ߈~')/K|3~gk4Ubp99JU%l1tZ@G
]Yo¡ƹ|ɑĵfu8Ωy'$r|&D !Y<3*x]6xj:0D*v&(
%q!W[qOԃ7Rk̬ݿ<Of' #O9HEEm۱{O8,ᢶ@r9cZLg3}L1mѸl;sLR7uYe('AWdz<۬1uP.~IURz-rM{:R:KEi.W45%o}8C)O?+1N,a[+m}Iٟre^sp
F;rƸz4)~QAiN`AcJsȞ-i&eSs6`Hڃyiw =u6MCU'c˛DkhvNCTy6 #UOxaԥgr=u~}TĤg,-;[Uf\}4L+
iٽ߲, Dƽ59mSE?[ѬDđiN+(2?<Qu8%^#[EK0a@Q5AB$kTm;6jti83*Z&&K\:w ֽFV! J0_M;Py0MȋD{O`}n[R Y(y^x~^>lvoXVI>kqG852Z(VR&"N0nW[Y{>(8:{1tV!⚰
zM~B&â>}F2+i{%cW9q޽@FԹˀ:̇L9潬\\kO
%PK#D
I[SiȄ%M|U  1ˉ aY9]
ނXD&j`*@V!l0i0P\FYʄve
rzePv$z+x]@EB3'8hI|˞O&ݕ+`D='b|yqvЩE(Mqt>{$,?pdFr!cu3CʅO
M bs*sY1/.6	d٪Sbۢ-N$^
ҩ -w{-V.Ȱ)j\6lMDUb<xK's{WCGC/"~F~<BYɣi,|0z6ٍuduHLq#
~߰H+ӒME5cg뜬E@3][@~ԑrqwIÀP8gkty\D0BA]Y& R5ӃE={lxČQSӡ,#püRd&@]T**<FE$p%{	[RذZ{|30riXϊl*|8A?&VluDB<eC #h?t;s	T3܇qKrwzƲ<1 Q"CՀyp]͒dIK]Iau
$C9Ly{w%=25nhI\yeaWCA_(bo0ٜ6!Y?uMMajQ	WdE.ɶ0Ĉ5,_.'+e)v^l2D~
qJP6QMە'mo
4Ղz}seP$/HO3,
C`Gau?9ɊKX4֋{pjlMʱdtͷ`h`VvQѸvnl0f!o|,]{zH$b@.4ӵXH'@e+/gu.$^=1X w?Od|	0Bu@Η4$aD]ӛ
 	hG:&4;-YpqJ10S:F5AW*zb٥z:ߪhX؍Pґ3SI1meت9̊$rRH,@։|i׊hYV-I~-:|*K6@I;xlhno_7WD<<)IA9 <U ]6o7Bs`vE6 Fm|:vSZL웙3tmrGzFĮJjE)rtof5,Ŵ $b_R4Gl`$X3OASN3OŭTp+:ޛm3־0CrEnUQ+߬@I[L7 ea 	ڌMZYr1sq"
EPqVJkAke
D.	;Tpa8Wz=<O ;&# 4?Y'=J"T(qeUpO2-K|#kZXDW	cZV&H|5hOa.D@ p!!DG7X9=s1>&"Df^PUl>̴sR:^ru˞C<[U)-w7
E&
SC⃽\L4}9蘻ǜ1-DÒL7K^lo\?9|Yjvm8 u.Zr7R/SxwGg@Z0U1? <d8bX5`by;n:i` ZEget-rlTVkHSKO֭邕M|\搜J+m{Z/<"LUoiY/bI1+303CD<$0J]7^g'O /]>FWPzu넭O͖?PI}.rM^+F^
Vɨg_Z^lt"wbkJ$x;.jP`j,<s؜ɷAt`T[Or!ڭL^rODu"+dΟ6gЉƥx}3 7]
tB,lɠS?k}_'Jbq+:
h(v۹Zafd*0d0I.B-ԓ8IiEr n<_`qOH̆> $^RՐeZUJ> nQ	[kѷ$dUwR]8-H9Ӝ&.B\Kufx	(!'hL8A]
=Vi )e/T:V*2 ݽ#l[!|¥v.T{0\$0D[FӐm^@lpS`/ z574?/ݲa+ZLe4|Pt }67H騃Ιs^ .YVY'U0|L!(ZO{thmˠ^
w!WSHRQ9܁K"	;P7o(Ⳃ!hQ5,a@%Gl/ŅT)PnT	ji>	o!&|"
l̇pZEdνFSC1(>
=@J7lVTք(Z{Wpmͤm7Y,Dx|s|>@a=0/lAھ0
+álB]Dxꯥ:B,KVB߲9-
u(^r39Yroq	f᫜BO_&|DX'tΑ0Eybm0UW2<,*WUK&J\G>QXΦ?ULX[:Tr!4c:V5.Qȗ%Id#jc*bb$$*kBH\dT/_9c?4x܂f3qG)$mߨGwB8\s[t;Ĕ-.}UG 5VnwWN(&I,mz*92e#;wtBi۔f@Ҝر
5<8f`AXfby (j,Yp$PZVd*@A38M)<!Ow +S\gG8,z 9?nxm'ǑiL8ӨfC}}52G!,`$CsXсОB}F(aX!$kZBK[Q6ҳhbQ@[/gm "kӎX;'
5tSeG|NU5=FYR=/6ZuH(Y-߲,E%2@̷(^ q#jI8mSZEqR2 ajsG:I-]_9^ELz<e['/NKWeDqLwt3q\|b]9
OV|`XG{F/ڒMh
(2m$%W]/ꂋrsu[Z$G${\BYdPLK=DVc%7!xPjY	W
*(6{z!f{Y
<ljv/0q?2eUsGWN)@֬nT?M'\J?ɶJ,/ºfĄdٜOqzl~
Ps]!{"Qej".63'&YE%v̗مTX~<LzLDby	KQ%-pbU6=L.:7WrP]Xʀ`R~%: G|50%Iyz6~+sl!ZO>9jY1UNԩ
ۼ})[LR$Om\M&\/iԆ9}Gq#kӎ0\UK>Wb	yP8h-AHG	5](!0(l!ח'fưxM^ӁۯaJ S	`]Lj2>#$"ԉi2'\^/öbiH5~QFu
%gȧ:S*88
դEy+;?L"3BY?{4hqZϴKCW&
H,æ`y~jjDs+drn^#X'7[2(ԩ*V;rgK>e1?"Ykqs,q'ix학ӴU$V̐8!/wLPJ񾋭ޏ~ޙ*sM4Q~3ѿ9o&BGdȖhKSkf
l௢guMʸjy%eE*?saf5G{z=E? #	EVMֳ 9(R8ID"%?б);c2RiܗŏlmwPZ.Uer_bኝNeZfIv׻bOj9Voxe&ixG6jc]qv	J1V1A'd>I읺%MЏ@vVВ{uϪ9Q":-+/c9fhV811V:*8.)َ%33GLƒ+MFݚg.@8sUwin($)P7Z*rWAA;IwMێ \>2WExs`LˊլܯMS
;k"Y]OTď`Sɪ/dI+@ʑCoDD:gdi!87&#% nAv^I	my	|$Ea
XU^aY@E&`
P88w/}2*79=d}Pq1um
	xXkYЎ.&C(,N n *>kMX8\.NXddNc9f5c#06*A<u`	λ*C:Bes8d3i\ >{Zs,p\E1n+YeáRU-x"N*U"SjD,:QlyZP&&Ǔoz+`^rGrwlY2 WF,,",s
VR
P8
/RA<MlbxMgU4WX$;ug{[],6cv5hmʍ	yDWk2806Ol;ami#^L~XFB`rdT_6.,R?KJSq
Vp$5P7doaa hפr(,E7fю{7>D" *3Q:|
OKZlP}[PŲc-̄XRq+7Ϲv(zhYF-.ѾJˀK WOU$.'
ښ+3FX`RhrM&0-L{JEU[S5'L*1\L7XTOP#n3ʭ"5"Y:{4*1d*I<
9"̴jx=mܛ"AVk=B%:LvtOpAL\*B."q 3=D/i*CqZ*B6PC2MzԊ-`yP]f	:B(y0-w>cc|[`C
'0'Y@
Q2D5K4iP9%y%
 nUc(9+M[Q _ȑhy[Gujj噙d
v,&e;m8qs]Ud3-8..Ί#.w͛p*2EJ*5ZTEh:Qr:t}v%:fg&[ZłT@D zG:ӯc<	w[%[L!d('%4SU"e@;=M-Fv!R"6CaDg(P:)^?TuNlV [=41RŮ4A.tAi*b<, -Wsn.V|: VZ_,	 hƌBҗڤRf虙!4LʩKFRsP* mc`f,BzPZu[(adiM>')fh!4	2J" "PZFXjU\0ly
QEЯIK,sſr=	aGfg!	_II``5s8`̑y;$It{b/q#	9;5Ʋ# ?sۃcrt`k]ZcOg< i
pLgޑT*2Gq|Y,fփ9ufڹ	a]VLkY
feb	zF5Иz3/iOh96[f~Y⦫X*z3z/a鑅,M D`+/VMJWYm"їKߙ'%Yi
Go.+p.ŹW.tm{gGʪ.0M`U;<IH"])vNL39]+46?mbQBilzXKxگ5{~0i S)X-)*Oz®UhQ9\367xvLL
6'jm,6x^WzS0k!A(f Jr)wԍ(OڒCڹy,O=rnV:6 P
^Ey lR
fOުI}h(sRWeV$傻0n I8?ȣ	'Ɉ"VvT=Eq,9؆Z^Ld.VO"ҡOteTh)a8UFd( 
lH9]ݔ 8>ϣ"r
z	PD|z\4
3:,c`qPC}'rO9Ds][
_,gXuRVc?}C#jxGi%)..6`p@߻h0u
sAd(ZJfAM\O@1?=fH*5@M(f$}Qa-0~tKEr01ș/"k1XV7ٱ<Ԙ=<0nNQיI#"1%g?U)s[cA&dSN'aZ	6)IҲ,jKu
Nu';?MkXCX>!s-Ӻ#}YqeCѱwčVJӁP~nRI=GtWȻM)/\G:βˆVQ0r!x
Re'!\:4a).N\xWI6Ș]{p-XӾ}'n(
G&Uɦ&-f_8be=Eh 
^+JF9F.f@8eaחp,.S"H{GA&H;/&(pseȄO0V1[[EXuT"&Eπ$nEGaOϬ4'H}L:h>9<SWEEG*Wb<%uLւ7׿*T&>R24Rqu	̜ÇD"Rh/p m'ۖG샶Tܑu~_9p mDO¹26,r.<cvelh]&rHhsWf3N$޸&lt閠'"N@{d;/m@Ʉ.ﾋ8*8t
1^_gׇ}bitNS4Fd']?`BDݪUd9+,QT8
гM5LQp[opȶ9+%+N\/
-<Q]:uOvJ:0@FUk';)ᯋ@RI%(xHΒj%*V1?mK*[hӎ㨀Q+R-1`I*Z<Gݡ߷Nd
sTQ$aP|2BЯQ:iC C0W4c]زqQa0;j~bOַFQHA44![u@y.q`j
1$_s<OdMg ũn+Q&盐YTj Yj_B<yV/>C0&j6 }ԟmn,r>vEm$SB-IA 0Vov7pi*&_+:!?2EK=?S-f;&a@Ch=慗nԬ
r$ 04L.uuΔ,L2D(+t+ĩ9w]"R)Ágf[9lB$L(TdMjEIxEdJshP,[C:Kn)B<KږYA.KF^"DIMGWa<E#|6?!+qW=IU8\JiC7AK
<o!X]lAwVb#>KŒ?Yn1ǥLNtt}QGБR"6^pdZWɫT2AB%/X33f?ps]meJJ<嶁ұ`uzQ`X}RO6$d]9'9Qʝ[MCOas_HwX1}XeN$ng[1
<YWHDh/@~# ؖ*J-&b ?H<klVZ3T&dA)&[BЖT8ES*MΙUbo:zyByEw&~odi_%WJTIl`~"FZvξ34TTU-}($l-u7ŴX@{9ohu$2{c.j+urD&IzZM$GX6Ӿ(~ldX鍅(+ CA>%LK \9c@*O|[hO$ӠC$&?2=Jg^M6	XܼS1/kpupF'"=<BQXuo1V5	TkRи`1S_ 
z'Eν<k,@T$oP`	/KuS}>	A(],Jᨎِl!)2@atrc$8,-Ys*aX3sgX_FA.QjFDx2ҡpOƏ9FTae6l8+qX
NGS;t"?$=4j*/a QiwK8dHh Zho,*_"0흇$R:D.[%*H2MOؘ|rKɝ"È
/^LXE%t$vnƬa&F(/*0ŲM'&INq?WrL;E WDT'8X٩5>ԩ
O_}ya!x*w=]	)0ءzsG60+)K&ur	ѩ2Zfm&MXRTBH
Z#]܃TB9Z1PhA9D>?^mYؼt.Yj$lěJUTE[jDW7b{Q[(*.wj8@񡂕._q9d\t=&'Уfn-5LoψJL||.ׁ=?<'׮xs^i(;D@j8@VjЬbXt$tht9;2{@o9Missn	IRfD~SP)|F\zK"#YuB%gZlY]PQ2sȒ|[k`e$Ղ]Pg	W\B iտ]V@˄;FWDIvC30-sT{D<;fky+s2jIA|X3R)-@vϤHh,$ڭ85:.:߇֥J Y)V@sq"/E~46.f}#dq]8	|71SgȦn,fTfR0avZow&6dЉl|%.IvL%2R͗(w8Ө>y'qNͬpxs\fڶ6\z7x۴@""րõu70];ݴM#z鶍´=&,	esMɒI
o8
6	K,n"DKR"HA`H)\IF\<aR7V;,L\dx&_]p i@*-==L<SH쉍DL%\h/Պ7HGfHnCA *=`qH&Xd,")ɹWk}Vz-nil
:ύZGdkPUr-u"V"b:+em*gҵ2mJǛw-\~Өrr`Z/e=D(	bm`jC9W_5	+>Xc-@b`xZd8PTʩVX%˵$y=OlK
ppY*A9yfm{wM8/ʝRn3'\-W<~Db4W>e~0~G1)鐒A}X4e3s,+xj̰eTr _N`([V%?jndZc`%	rywϽcEN~@WPyDw!v-}6-.,SSʗ=u$ӠwtYT+aoUˢС!Ԝ8UzHx6Q$`bU@碝ժb`\3ȖԊ@rZjus*\IsC
8ى$jc\bHP÷wW1J@hW@iaRRP<Ã`C#ĸF)%d/82l+G:K}~ɹekp=[y~03#_=f , k!i iO&#iz1,lsF
amt8St
9?P{I`G
ͶGT(L>

%pu~:]
C,0EK_@ǎ;b(F[7Wr1
ѩ+\n{0k:*usߨ.4$I5V*>'?$d̏ò,dm|h
 $Bu5`pqg7HҜ%rDU-yfBmj6(5ѫpsrzG
x9>h洃^r21ѪeyW.,Ԣ\B
Nm2:MjƤ$&N%8'pf-47":|zI4d(T`yy=!DU[DTDwxruL[;LAGrV</VhME Ϟ`%2kTR7ɡ?B'|fh4?5;JspFRj5Tz]^?*A9rXM3j@+w.dn	QFսh6#i?{tǪ+Gb]XOc``~TG\je	g3J,;uJW;E=
hC,i Q+|+(|('?G6<v<"os|=ئ	'X2$;?*Z2}<}Jm!Ñ&r`Nr)\?x0$ɋlV#K	WV!AԼv{uKu<|)
4o~ y)g*=8"[H1)$^0UHy:J`#w*\+M4$Uhҵ|ݣs.nLio v{5!ZX4n0_&P;A3<
`Ѻ 6a![_Nq|*s 
i &2&J"SgB+#A,U߃*4];h*	9Ӫ;֮A8<J'r1Ӫ81cNzmw	8*?:E1QpB\,$/C.^MW'SOnicYFYDm}5o1Ib/%F/O!ٱDe뮪7D"stnsDw	WHJe{jA.cil$t߲%ReSx]Q! (#!^/;UFIZdػ(ɬx"1,$i'GTH];v;<AAp@Y@C_;%~\G9qM_Zjn0@vNSg'1z:)܀b
	
vwq)q"T6
s!;Lv/_0QvA"AEv@iS5a	_y\6`ƥ?/Â{YLJR v],0GN1YE(/ѐPHEo^-C
h/[R&'
9k،%:"&+-NEdf9p[*t>K&X8W7MwWr
gAۈ*p.nrxgl1p/C"T%*BmR* {HU;*"38mݔPtuN!&I"/V#ȴ,:oU87
YhrJ3'|'/UC.>+`:6Óp%Lm
/d73x:+qQVv(v^%B#oy2EΓ6߈GZdqeZt];cpF*i
~mCjbosW]Xppgt8}Е8/^, :M[H~X!=SU<A:_$ɫ `Lz 7ǎpT5[Fg#q
aC8Yi§6Nݍ)ֈU(Y<dQqdn,Ͼy#tp9ոw6zzX$7PgPA2h"n_/^A\T|-4o
E0]Jyɶiv0یP
ͨtI{q#%!X(qnVX=6uy8?%G$";@b {*wWϼ4}9!("UfWDQϗMZHlC ^ۋ;="J
BY9$`ajmK74D- ,hy=9xȻi}ô*Br80B +tp
ǿVR(EU0#	EW^ɓ1M6TWthC	֔`4E]՞!eLn(W^* NѤ(.$hzrVo%}a8R;VN@{}ğ`r,3X~֍A)<86CdGҠnҋ3!,wr:UBѢ[bS
c8
+exf$ӞqwP/Ή.,tJ@v֧0;i[5Н1UC1Q
auucbMЈ St]դ];KbG7r6\a\cY}yZ92iq{5N8gV{EC0y@ɒYs#*o7gv-V44piM:P&xs;Tg(ZPt)7@RrB{fLuBM`xq"wz {'*)cro&FdoBEE%E3BoYc;Uu0?.Y$3G*dfMPPhl8YV<i`I_df|#+^;4Ni@@A27dM@XSe=d .& YBmŊxq{IyS&CE@tHϼQE8rm9`V)[wI3_-W@dHefަckj+2&W;Q`ԍ/:f^ߕv_
GpEG;مXѩש<ݸ;Op@'h\XaŋK[ziNLbW\W1v%8z_.:mVT0~DhR lá9!LE&!_FetYl6	ZXiN*	}xpSa:ySp8*O6㐙6_[%?Dۻ+15km\*09Յdqy{lPjE	ɼ}ї8O$&+8DS幊ïa;`:"lv!ʯEoWTRZ4XHi{TI>BD%-sJgX	]I_ߨ+HݶWuNT,j&!0ԥNOn:054ъ
 Dz
9V:? U7Y̕1 jDi̍	*#:{1KF	Q_L
烘 bz M:q~ۿҍ!.SwvEg1a֬V_EMX!U͉ҭw5Ǉeb|5^Ea܉Nf:CN&BRA:idO~fCODyeƔF 3ztuZzT|Z` D#c
tT-WF\;;RCKҁ5+JZՀpgT尿A}W3&+UGtQtxXlfy6
Ay你`[	eVWϫd[!c;&3_(en+[ޙ.''<cmCU$#<Ȏ%K&s؄x:Ym]5Z,Drz6N
lp荹B(Ӹd r{b쾀iS`_`kB1
#N'[`S!u;dR9(?z\ʹ˙`Lf8VK:8_x
嶩Ҧk"H)RB.KCPHh۔`xrxpLd6r{Y4. [H-M{ФP`G=gi}1?RVU5(	6Hٷ'a*]6ޤm,SVڦTg oOh8rsv4@>qU	P7Lp,"zؽF.;e~zjSQ/ld/ӒQ+0hiTb3CYdµV7ZE^^#TQ~2fduNxJ2ŢR	svph;
)I@·$ދr$O&@`fOH
-so8t	H7[@\SgPʙl}5}S{_tZBd2Bb`k|Fm|%eaXlP0նLDFvo4_x@qxU~38D>*h@tF#e3_Y	(T@Lby*FhdPJP òi9?4MDAe7Rʁ@OиqC5=֭9T!yx2RRj1ڡ̯Sg'̴HL4|,j鞑Dw5Gc2*[_$UVu" dū~
+ +6{DV$y:v:/{4G.9f]QNF22AFw[ϥ dӿ%8`c)aʢepc&A15gq hDCsUV>rM_?b3`hVWO.{9\".J,D0ؠ,TE
[b}P`Aědq̊*\y
I:O$]k*3]za&
{%1T`5AHb%K)4<}smJb,6sTɧ_,Ku09u>l^ɞBsC}W=m0<lQɽ)։0_A>a}-w۵-*BdHsw(T;@?
6zTłXU`Q\!}6#	WnJH#K6 ]g2deTejLƄN&	]R rz8agf2Sldm%z@sfH(cq!$݊*O25g<0ɯI\1$uf{orćd'\dí5m^C$$M4}8<(Al3XZ`uSrsl=	.oJ$pWǷ0$|{6b.89WgPZEdX
at<lC{z{y^
KFӢ7)
Wr4a%6`,\	G$łOpT&obu("`E
8F\˽kH񌦏8^
ݖVi.p9'Kw2%Ho$˨n
R,߰2)!Pr;jfL*~u,ӆq{q(3a_-T42
2
M
/dX`[Z螺=*":"[klWns?6ovQikS`G"
O nNr|*,
O!5G0IIrp]`n5ɬCp|P0&/CG:|O@NqW7o5nKsA?	! Dw;iM+
WF{SY=o$~9sc`j;B	D͞?$K\Y[BIt\QNIFZOPTԻhvT*AM-CtF'LE pYf!Aր``:Pnm&SE'nH^iL*4ӺBf!6r;oQ!A3	
`H4jECEt +Df	gJ
lm)iW"	Zx@TpD`Rw1g޻s[Js&-LN1
9$ݕW~RvTb9SdyGO㈨ܹZ_{!GB
al{mqNSK6
4bnSz^33`	xF^GDwHU^Q(YdDBSNdŗ{C,ɽ /U 	xgsapfϦ7w˲T%RX-Toߌê(զx\4N]{_קtTjqų7	ll=NݔXӯ>**uͫT1,ҝ(/%="|o hIp<r2E*w_I(/KU#(JǬp9 
:ե#PD//aC:04C~FW`{P.9Ͷ6BF'weNHFZ$Cu,*MD(,d6ϒ06Лlu9L{%> mvDF47p d)A:U/x:9dh4ĩTYh=ڋxB3قjI{c2NH9k≍괤ӭxEzpVlΐ˝s~qN:RIfLm_8WJTsM.PܔddR1t@U'hr8Sj<ՅC^FR-^b	KϔZcjrwM!
9,u/X 'o|Mt-i[(<nݐpv/S]#eWz
*]:BT
@/Uj/BAʉIȬb[XE71ɪVv̿ȼtS$a}
\U-a+
1K|FSb⇭St0qb/K }Z{Q&v765+/.8@uWiR @[߄ּi~Eu'ڏԿ;ԂQᖓ_GK5˩:;%.( ݘ7 &
Yt%vGZz!G c5TBIpgd?jiV	'82H
^*XZ=ö[<GLY Ww'ҿ
|H>tLwcT5~(7=rHz3xNg:]K>tɛ=!OpV`2A_V#Ȕ-Za*	[%kuu%K"L%_!BϡPR
'<<	QP䓹P@Gx56s{B\4rJFI>"XGHM\ft)o9ḿ4BH$ PM;@rG'/pȑ3fUmz<5`S0Ycf{圀3i?@jQ9RȺl,2'^xQ.B%ĩzuT5Vx&9%LZuW̲*̾\M;-mϘ_șL"uBt>qfɜ{»]=ᑂˎ㗉}WlrC>--I|'}rի.Wr*S9&?hؚ3~-+IɬDbCC2vԑgL\ aHt/B<$*_zOVNECcR")Qݗ=C
ܑ"s#gKL+	jb:O{T2?
\wSG46%Dl,vO@1G2Z 1':l;9r$`沉z˼3衈Qe@0e%a*^$FZP4
pGb$)YscͨʚViHhqkb ZUoAN3[ggH+ MCJB?ooCeKɓQ;e=I؁wIGwR00MpUUHOiIa~==񟫅P>qDh}^vEAa;)QPAZ
48Cy~*:X Wio@_'O!"#3m
-U,[&'rZMVx'
9B0l]-<Ƅ-aᎸ୛^ɫ]1tĪ'.[^ x!I2TTdTCSv,^m/y[n:9֍ e82PF0z.
sSCP0,Ya	%-c
B \ّۚɎsz1+\yz
:%n|I4nFeJB^<I%JwƁ$!Hem;m;Jr
BhH	sV@uhUpw[@##ğ^K	'h)hŪj/fKXth:]4B;ytg~KТ/rp(5tCgϬffqcͤ	9)P)m&OXnPʊ2i3=]cU`\DS<a籆 ']95fv.Ia1HODWcͶJwYOKz`uOeYFWEh=#MjCģP2| f,cdy^٧݊xcKP"Z1`{ԏFX|Ȃڰx ԙsRtWi<̯ۨTU+?̣M{ ,1l@}v5>3cwn[
6BlVY[:넥oZV-)@ln-,\ֲ:qaK+tqTU0yvTDRVDDD#9G42P՗21N25M XD5Et BY} ,RdQE]l|ѯפ$u^m|qj4
~"ˮ_Lҟ8	,d#[:4
(`Y,MK aCU9u##n&S6$̼k`y@AECBea<H#CM
EhlOs5*"SFZ
V=*Ql1#,2~m
ď@ѳ3@ŋ7~
$3dL^V;:jJAе1(!;yfUwGCFԘym1;Xk%1	RKdH`ɡ-&S.íwd6yJlU	Xu&8٬Ϙƭ	Xb,'P%V4#NywsZʖq
!Vߜ.3IC#da}XJM`iU j6OWӘ#|$r4NQEOO c&4SC9L6(PyDR`M܉[&erT8`.^<o(HvЦ'v^)Q7
IOLkm&VOryH"0v9a'
O5A12+}FTRȂK|SZ@ ]TJL2WU$ibus=Κ" ZdmGA3x:Cִ q:/thDu8X=Zu*'L
]dwT'Pn*Au#6n]cf +ej}e'nwC*:^$hyocD
dD_yAKaɇfP2D%DZVHl')y$&a@qh=ŮЖ>k7Zs!I%N
{豲ː3á!2$pM8椷]Nq57x,\@Cll8fdױ*.~s$K5R2Bl	I@%6'}(+)hL0]9-T	j$qb{w0:vwpkqF'nSUY<dr'mZ5A>.҉z״١
SREٜ)±`CjUTHH[ESpLZDU9+4#g/Te:	FPndRAFLGrYw|[ɶ
rHsv`;u,1/5)ZB\톈5B<7g]ͤk5|IDc8r.L/+,^&سP˵4k=-@0|榁-z#ˎ\AG}V8wB\frMskIRWJ׃7&*]N!`#J1u%}[k*\uPq1dtxYqxz69tM&H81H^ ˬɫba
Zcm
MuBrT&[F)t'V3GOxW:Av,aɬ*E樲̮>ahmhH%w}|,+&`P	+LRyZF=[%tDkDtGu9<03(ev<49*꣫juN("afG1/ RHKcjV$+z rdec*12wt|I4-R y{}ʦY8eĴ8|bB
R=PH	湁2bх*
}8y"$}׼a.O·k%E 9%@^,~p84@
bH-d4E.ε;չNVu`V" |n&6qyiT*9 $mdd#<6#n
nf[, k OUvyLyJC"AV痕=Ug*:jcUQ#0iH.XTTD^ˬu
~z"vł'ϑ0$:X<]7Ѧ$-A#љ>DSSiGOlr1m
/)=SR|C$
OO\n NQ)viШ9&Ӂ
`n0\ 7c2H+ɸD2F#,V]"aO2I.;J-`wcDnV'i(9'WPfE[Pת[26kz0/oJò'oBuR

28xl򃵴Sݾ!8@6ݞvf79Q<;,iϽDs;<eS e"VV!&<УjtĪޠ"prD(7d
g0f^e)iP24zyߒrr(]Zۛsvˣj0ʉ.AU92xdԃ$?3C	I<Yt({Cdo(7FGh}x$nYGvfOXb#wx\08mD`kr^e܂z=
r
ޠȮc3c([gϝ$MAQyd:oAs&3D|7T1^II{z\i0 YǍ_&)]`U_SWdxsy
J[[}T0Xe @D'f$Q=ɯRM_R 8$N-#UJ冈Q0K{yqG24UyHe:|V0o8z;{R(7DaŜU(la;L+o8` L,8&oq&=6_8+cO<LP#L˻r@|h[XDw)M4ɰ6/@K	>.Ozս[Mlc=xPĴA--XIbRR}< c7yѧZBs2	c9A]26\HVjMg3_|iNiBz$2`3AV/VW1?wEJ%j²D\7Ι;GMkXn)N""1ld?=K])sYDy
}0>O>E\vR&٢^Kj&:y*kQ*a+Ħ6{+`xOuO]4t.zk8?"g_c(|;5xQ3ފ;cZ0S26U3_ٰ!c@>;И른nB5	;%Q.(v&6	w]@"%75w=Wh8#}tPr, zʌF?bJ%TђN~,^JVT0G=vW9Ńj66D4D۱fi"HY!ajPZzG-h?{\"42=|7;%8%u.wtUfeoЩ368`˕CVF<N=t}1..u(+1x>ȯ3g&+b8)J*vxf5IUB%5_fj?L>1[T"@KsZ&e<ÿgcCXkl^aXp"$6@<H!.P%.ཱྀ9kpW YP?
Uۃ=Z+x	4^II΂4-Ġ#{cll-1o&yC{$HO$L%HXJqY:b!0uzi*.M{CQ&b,Z-:!s`+҂HSiH.=D0Vznr/kߢ T
ls͆UVVBL?#Z-%BM>pzmf ?!$>><ΰ(:IltAf5.YdJyp;lB|MBW^	><\c&1 l0,Hp
t0(kA
2ΑIvJIve2	oc1)e
m<-JCgf.i fYAfj8\CTDM)keO5n=Ľs`汘QFYGJy+Udׂ;nL21.NI>b¶]J]^o01y(5l#lҫv2Cr~ `decE& ~#(tӪU؉}-B9oIyaړGS	pY?aE5E΋FqUBsAcm/S;	?4!Yaʫ5窪`6ΐ
g큞q'ܝ
`9-w`o
u"°Eb^Zi$JmAybvb7h;	hk|a8	)Ia?|Ԋ(@ d@ҊVpSm
GҬ FD@yD΢f⧞.3c9{*PjGj};]dZ63e02\,C=$	ЭNGY3ȅ
lq$ҥa"YIlrX\$	:f4ywUA>Xa*Y=&Ӄ3~Pv1*,Nz75Rޣv!jhKübq<Ö/@7`-X,nvO`Jex
nv;F-)dGPrHZg^ˍdcMn\Ct)~GT<I~O+hܰ
:F҂#Rb	WZq?"Go.tL K+Xqm Pp|ZMAG䮥_/nb0%㪪"2q}þFj<C+\\vFE(SrM+"DԤ^R~<͌ܐi,,@wgq}=r=;T+ހ[1 	#ʓŻd<Ț ֧#CF'}yf/T,@ڽu.Z͂xm
%+ʤ'uBIQ[dw&j{Ú.5=c83ʁT`1T,hUd_&u_6"n afiH%ՉU|q\:	:H'73I\͂8Xg*i-/GTN!pcʄq
!9MVŮ,ýG2JLf2!"պ+|%NSJvV4\0bsEQ
pIAٌP=pabQ;RXv4\tԌ(8V	Y5mSlHSQBfT0O]<5
4/8ո40BoSs
&:F.I*M|#hCW+	7-}5O.>Wo&̈=p"E?)EXl(O!ne"ŶKP.<8H+M5efx u~yb2eg-
 }O!.*&&$#1 ľ<TCϭv侎Oӓʭ'{;VA틞 "#	x0-#g]u:7MUVY}DUniA05x-Y{dlX6ru{WE
u
`,!Qr1^% 
fnuA]j<]@=#*爔9W9ݐ#^rw^0b-cԑp8a~0Z`=m}z=T'a+2Ix&;UsVAp^R(w!@OlGB	x\d5`@Ń_E,n4+1qvvŘ!_+
[sEhZ
CV[
ׁyDY)a>YKFw"q`;͐ce?-xBr +<[3c;ي:D2@6}1C%"
,bAY}{O	2{3'cT7`<QښXR'A	VbC	
{4v&lv
pVTFH|n_i":4(x"IGjUB갮H0:N$I4r2CHv|Kx3$j7 4LD a]P@#;qPt"
y|iQ]nėHUjxĈe{؅7B)1EӶ	ӣCk"qpé}i>VpOζͥ07&D]6I*_sqXKbU,QWz"
~bKUk BVOgD&|z>X |YIn,hG>bR}2qz(-gY@R6='cI `zGhlSVAZށwU~WH'yTelJXG>*ES`(@_`v|˛ju	TozhvJeL6ͯȡ.,V{rd8`$XT +y^D3jIH
;G!UN?Ʉo)e).%V'Ϡ3- 	b%Qâ;zbVת`(h'5>0ξ^mu`2WI:, lF}v	ryx:ֈϦts%'Ex^Շ!͛#Yu3̳d"Cְnq y<DqVg42
Tz>2E~e03RvQb}ph2q#@7_3
v,e}oHʜcQ'DY
P#"
-Qp,.IJ'{Dɭ]"LrtgV.D0_(;052 GٵntcE|Up/C
k `_  VCqoV>Fo볜7}P߽Ӗ|Y" #ɵv\bbe|$Ԕ갋E~eF6ܦuL"+kš&"aM(0T3^6ƛUE:~T7ʜOtw#'2GMGӧ	O'όrr1;&v0n~ *dQī|Ө;r0XX[D 1VrЫV-Y?il[!FM >B HR/X	ʸgM?V	l*ML"ݘu"I|#;'3'{|iIޖ}Y8$h`\O(37AWx-F2H%`@Q$l5oc58/B-GgfӬ;ovW!33H5 UZqi|B(J0mVTBux 8_ol<:IHPeE|(m$fj2$KOp3F|%hX\LUk3)[Nif{G9#˫P:);A1281tL7Udt&Nh$ޅ'A(=eS0*vrMA`lLvt
Ey"]"	5pUvdiVf^&kq'@h34D0:d+LÈ2JxD]$ѴU&qPH+!nXѕz^*N`\\T끃i(qiwgro̊9 !t3/WDg,5?ˣ,pMk;[z:Dp/$5SPSRIfKr2Wm2X }P̳ހ-064f?3y:CGa>OO4]
F4?@_PAWO
u%`*[{aMd;T.()`PA1mD޼²6~ePla[**́+@xgDFX>)ĉLg	US>Ɉw5b ll I}twRi@A+&*8k%9aвqD_$|ҚȠ+
mex^2:!;~5
/U+Tg3Qh
VZE&T[Z@b7`p
e"ót8Btڞc (=sAzf6@8oz
:
ZJ!lBd̮g(.|:S, ۧGm],\8n5b$G/$I=T	ztA`@DGjyX**TɵXpt-hĪN</,+2ltJ$&Z+K=@f^W#(,[-oG	߅Pg# c4愌;;.8Z3Om@XF[;%Sb.mH0J<s@߂eI6ITZD2'݉CgDK9Ks3PkkLcTIrVjx2|1ztDh1V)E<Q1C<~ێOM>KeUy&u,SOVd/!@[<xMI]3kRNpp@.e7G/R=Ms2hb *Y+a}!GN!BMJ"MuK3o<{$c 
mYL.6L^΢+y ʼGx[U./FC;%M560_Զ)XdTŝ:hRB_%;(
8'J01y
L-BdXcKutI~﮶uvACm}A7~(%w습ک6b.$7:Y9r1 K+ȏ5ce~%01#1pd@T)sp.+*g@)qhb:XNT(%"ˢM^Ko$1y.ggh)Xv Q[`[$ln/0A.`Y;prLy|#z{&i,q
M{ƟaPE[i\aedz>;9Wx3&0߅KER(K0qk;Jqo|gTyaʻSU,67KWXVM>:YT 4S	m$V@K5f4	OΈ69i(jvҪ
Q9NyUz{;~F@)񼥲yu=1u}tA	,ތ'xohk^'e\E1WHb0H[wLsd,j3wq/#bcl虓cawlzsr8=ՖQ6B,Lu4tQY"h?" Q!aZـm%*Gy UZ)݆[t̞/lBH~Hdd8|bV3 N^^Gm'Nbf.u>_XPQ٧0w`J1Cl>gCSUmG5^cz?$AIȓ*%ᆛ{4N-Ԝ=^sTC.>#м<%V[!^W,fuyPHVưmWwRh(ߏ5d9DBJ
Y
W˲E˪l[<XI;4r.oB!t<NVTCZ\3Ho&SzQ6OZR` Vc	J 6xq.(5$%/mWp	\[hNHx[Vr} KS_ݮ~k*IrG
r%z8YMր0ZFprx:v"e,oz׮<mJŠ-%^pKEihTv:~LE,>VE<t/Ze+҃'4Y.	ffx=&0(%L$9M4b,)Hk_(V(!]z#ބ)EpUT	ZT$X$q-	m
C[
cdkZaXȿCQ'Bx,H
QKCdpaZcۂ;άg_f?)QH	:59l@z
M  A2i?HܬxexT@<rfF1µޔ9Z[e"
2<Ci&2%{αIaeÊ7sޛR<b)XS>̒M\7H; K<XBt'OWA+0'ǁfpPf>1Qe4eհCրelZ"ڃ	HJ_B״a
>A~Fܦu5d>)Zhɖ8nJ{#g%gTW&UC5۝%XQy&{Ro{G9ټN.N.@UB0A{d̞83oXmR9=^П=V(4K[LanL!<+Y9lKDV.__ӧHۊuF̒E+!Ar"6ޘ2$D#|E_$D11/d̅r(.BKZKBöX&&A\oZכY:&t>0
")	ʂ;r-흋ؐ_..r6*H O*FJDD\yj[2]V	vlBu$e&gԈ+dxLXW6a鳡Iw`~On(Qn~}7&ٕ##ʽ3~
@5N"mOL&}P&ebzj$K{B*v+w#rɾ@ӻ@6N-
V;g$x]#WQY!IsNy	ied͎̜[ 9T" B~Pp#LqKInI'n* hjeZx;^qcCD4-8)Dc6k瓾dR{(6MUa%P.YǛ}zi)	';[p8[ex+̾or${rh|+Bnz
6YUVSc(X*៨s-Fk0&p3eoJX"GdKedZ,NNE奌,׊d![Vb	O{pҖeCCf	f=ϷT6;>	I5\g#"yx;FaNNAgYո97gi{./CiD7ofI\wY3-v7XvvH<$[	Ͽ_$0(&\1>^	yd&FSPm* N
TOTB(AcU~$5G7Ļ:e)RDTC`΀7Y.pLFDLHy{50
LII܃T9GV;M%\I8e)m$MdIdgTdp}GEX,JIbć~mOs&M2"0v
;M+1Bn2{'Qės2XNWug OT1!qdz4elm4c8uj޺Pg'f2՗b'R&KbFv
PB]0'I<wa1T٤.PQpzLlFb_N6MnH$eIEVq K=1vk]]oj8zq x<_d
_.Vz|V0@XmP%,BBP 0'
E2"nɖѰ;`Khϡe,`n#Րw,Q:\	X){*3;?r.l".5E>%gWH&-2IQ}N6vdie_gp%?4|aB-Kբu<-c:fI0kN*Q~JvQQ<&ЍD"$>^-*rfߤ5f!x,H.BZix zFlUfLVo,9]><OX7#/0rDt4xnB4qLpX]ԣ8*d SI^@ӰFIЭ=z+	r.SY/v  2qPcVB{Ns* =
֊?*Z&/?47{ֽHrC
\dY;y}w?Q״ })	֑į;;AE2I
y`UOQuŦ!>h{
՜&RBtU4H]l;6;$UKesAx>V@t=DT8zϛ	|
<ɞV,em]yPqK\)X%jz*ȏ[4eFOLơ;DBxc[Nm&FvIjW&*t`:\sa#ܽO`,Bc~UWwT4 ]<	J؎Sو,0rTҟ@b~Hf̍S	3yxSy+*2~Z{x(±H-{s2ډ̑x,BxlDJ"@gHXf)(
m_(Y_38.S%+DD^z}ω\9:luE(<ɨY_ɔ@džCD\(Uúճ5e@CUW:tCɨLd
REJl9uƞcIl/z+X[$o&}3fƐ9~G'w^oF8:J:ԈJfl5SuuhU CțfH1ރPyp A[[7"PHJ$e5i,9$+JU''b
.Ra釔9,f?,Z2Q'.8E09S$
TQG`턇4*},˓\"{eaJ<v@yhB5LP,zT0"ePQU4@@_bq)&ʯ8m$'du(2cRFY낄
( ec8
'tV1׮Y`(`^VU\ർ$nnHB0 ifE~`a1V-^I$%+zRҍ'a
͢5d3["zGM1r/AW#)i$"uKTR,"4;wB>"LeـZ(*ʪfevB}0ө҉)`z!{?Vt*WTo*)(+az7A&(cr`X9D%JjvaR9˛yoA4D^6+OцƌDmzEeH|0\dQ,qݰQ  2'F2*)g<!{ud[1W9aGExGT6҈řJ3Ol] KA3c|0.V]FPkܦPg=IH~K@_G0_RC'LI3aPҴ	!熙-ߎ@-)ŨM&Z' &KExQ&C8cЊŚ dФir[ҋ˱q:9Q\8@T%Eoڞ;3>=!Sޗ'~p%Kg>_+ft}pX$ ȫade:a+[pAM Umf¹]qEL`:<QwOAKЯ՛%'/Dod^fyxQr:tFC\XAuQ;uQ)1P	,p~#;/l("ޱ7y܅K{~@q6c.(Ӫ#	32&Cj
F xmE¾.hF9v8>r?.,
9}Fth >F]YG_V4e
%j(f7hvaLd^.JJ%`6<wN␒gzMuR5C`zZ3J=l.&+)	[`oAzG_421j,bX|疷Wsrn$
Pa3D4oo1(ʈK*sH@<7u泳4i晬jx%ޓb3eFDzepr	
GYBIN% Q	y(NF><Aa-3=u;WZn&h4`|M6h-PWњLspMz?#JuAQ[58	ݗ̡/̓P~D{Z,}6Nj[og	jȔs-]V*-2eUA*x7&evg"( Lqai|/}
p`_><}Z̫`_<e2"B0FE^)[E8&w,`W,VܚAp0x3X'm..-CS|1d.M"ee xj[@@AQU 8\mPiQ]96Ɗ}->~
~D v@"#аwߪ&AbZ7ЫD>V&(#\ɄRHi畑Q҃,	=Ƈ4'Z<*qqQRճ$:z e+L݊w(_<r"-ti-,ӛ2iE*'
nܗ[ٱgE7~m"N/@vJ/9|B]df=Tamć,hiE&(]-J?+>jŪ?[3*+ca-Gl/BOvިԣ]I*#2*{a}xܩFGiyU^v*Py>LوGmt,TJԭG5`1(GHFV<dg4Z07'eLm4 %aٞTVxE)Tc=Vʐj7
3bU`䬛Ó|R=OIe^J$:G7Z,ŧ'G+3bf?[
G ..$& FB1r{1*.(3S%g Bȏ'BɄ	Aue]ؓ)fRqWIs-طXLW~Ao'Rm߉}avlC4A~MnRX,C\|`i1u`}8/C5xr0_Q[k@`9x\.SgIh@&yeoU !ja&ZH:jǴؖO\Exɚ7e3qZfZgÛ\`?W.@'{'qD$RT%po\s'Jo:k<`=>U'd<~56M:|#+zBǁh@a6Y^T=ؔ/oGT<8"e)>H	ajݫ%O=8FuȾ/?/%
5e..B4c2_w0-IءNSd9(m(6g+tpn" f1?VVTr/Pe7U;Yƞ>Y2zTX3".JwSmY&p^8RNN0
V䎪y'yDmyT0@"|Y^|JpFA21}-A7LjT?,Ν<RI3Q
8>1Zv
sN?P\^IH, .'E_rHaBdbF JǏvxv]ZoAApc+T<QM!*U2|/R	#zm	ՌJih.#!E7Vs''pu	#OvB.1̌SI:'Ob''QILFxh׸ʛXp67V^Q6ȨȚdwbW$dPw
3M~f C`M+^ѨUgJϞA9gT&X "tbl(HdKFS]`Y'0HjmքIx=oIP	`7j5O;ZTbOǆ0H|0@x*JK_;S0?l4Kh*n+96f)N8ݲ
DWmr@֢̏y_J款(W,/6ɉp\94V	yk(r&&qO
>1c
&"(ѣqMJu
cJZ xU@*gЄ"9=$Wu4 g
,O_R>s^>zc)moKV[IcPBHIh
y"<
ZC^փO,KaXb*ך:ӱR^4dd:36^Rv7:zlB20

 	ut!'~Kmz*2Dp$I
҇01wՑlX^99hD
uKH\P>0D`Ow~-K\J	3[)*gзT@Ȁuri|
(&lU*ڄ_vE0 ]]0-]LBDǱtefyB쟁E}fPRI6ߋ$eJ\KHhETj%RAu'pY]-2ۥ<x>?5PYPki˝iz 
w݊WN'oA"p%`Vp]ބO[U"Io({pOMAb"3R8\#$݉J `DSH z
&:5T=Lt6M=#\Cy`2;
[H&+ޟz>HR4ZtuGԗq*NTV>s\ J00vHuvs4d:=1<BņE5g<WS9( u7<qZXAXၚ%ҽ2eYB	m|nk<>v`/U>9#9A+ajALwJW^іWNJAZ%d&-	?Q\ܡ*7ks!	(c~>/D`c"2'W\gXbP&6_ZH"$d[dkkv*G$Ρq!X;RlEe?:<B@J=RJZUS	%pES4n3'yT08>(R>xVyȋy<
˛HxXyN7RJO<,S.aY4)TfP-3b&bOSTb:plJgU"DφӜd 8TЏKRFTzg1:tr_=^2zA٪i	Qrvd*vBFkb\"A.tMRAp@XcM3[Wj~Gnۻ{G3J7SDr)Ԟxst(wB-Ga@?<;	i3$a:QFMZe%&?	Ygf
TMvL;td	bLYgd;g
2dINJ\DHؤBr䆷@Hjm-̈*lqti v֢?O^޵cgCu[{=\b.<C8͠Mzn3Qo52;/fs=(\ˉ+&o&>kv|7ɶLMA_G'G&fP]0Hd[w

j*G
 ~q-@lϒ0z2xNA@x"Xʠ0L%ib xjԬ_wm\5%U5/K9r1Yx6	7[VZ:dihV2+
\U+|z.056Xc%i(3porH6ToW
,tv!w Bߞ7d&:6 spCͫC
> .5˱:iv WxF|ޣ,D[7a EL|A)(4MhHoOzDЋ֫8`"
SLV
c]duuDi]npcHb;>zmKXQSlmUNje
}!"}6k"zJ#	nFS#;ނi
f6cB|iWL\U$bs ə>%q@]$$N4YEiT9M"2Kg,()r{ތ3{מpus[gnmn,d:DP)*HIf@
ÉIKϏBnNU(֏5iJ_|*G"v9|fN،P_8hR3_]Hx7l=rDs:ȤC-?9t))^I=to&+UejkuN0m<0:x*
VH"]R ,	Fl	~EOg~![@%~+T$RZyeSv%g=YQ|/ʄ	k1Pv\+uF&V5K^:FK`{ݣ O/!_PJ6nj- C1*4#ͤ-
y<XU'
y(YeP9ҾC{_ֈK:䋈$l!뤲 Ph"4AJg3. QXmsOE]lykT
V1MT%L+8ɳ=!SE%+c-oq;V 3ZPc-c9b<3X#dv6]r_;N#zNu_@f ѡ1'StatꨋT AND)<({6Q4*[~OO}AaH99g.Ψ{Eȡ\M`ho(p#	c J*}.S&"E?N*!clgS6d'mn̋ԗmmtĲ "ڮ](6=e_MҨ@RdZF![MG5a }Y(
9IP+	DAuv$z@zW%`C_]L=_DCoVI{P㵄PymL)/p
(0!_8ЭcxW=`1_!`7p#;bkውpTӧj?yH@ﭷ"+遛U쀋"!pYM+2Jj7憄r<śg$6S49|j w	?ϿjM:z7Z,Ϟnϥ\pY:3FK/M_	j_iHp&%Q uwașjzKhϛu$R3@FĨ
4m PuN@U0MjB	ug\(͡b}{
It`Mmb eXNb#SBN0
KېO"5  M\O@ȜrPghQt$pbA
l!F7T;Z~9'<LOzt_~4^gK!7#911~
:[[U-hf92PE!٭.AGa7jnۉ"ne( ؘV&jmb\vN΄;( |]Z@>bf)ȟhDU	9(`a(SΔPy2y@L%}ZP^vP\gݺ@QE|g|0J_vJia5SLΕ#`u([2V<Z*lTZ$ܓW[Z>Qʝ10m"*3k)!IC#>%ճ,msr	Ǫɭg~Q
K!!f;d)nj2
z
>] g:liLT\N^uK 4BI/_a.kf!}wGM@9n,"<7Bn-pFA:#_(sԳHH^@,֮3N-'YA(^0Anw'Y@k]Gԙ$ɱIJ%IZtW}LQV7Yy`~ށ?ۡrHAG;+Gg~>S*/>B/SG̕4":PE	ѬzME/@DjOh> C6yrT%ʓ`u?ת߯ˊ(Wz-H$:8fzװL"6VLsJ_% hD-7t&﷡3Z],o?C^(.:.6M
B#:1Q[FYUǯ"ʉOzj:DMv4E9j0Gtqz̯\Xq.+ <a TRUz~EBHQ~ල8dkUP&W9}.=
3/e(¥(-egpN6b1c=\	(d$("μTqJ#7Z866nI~v\L]'k*JR3`B}T	߾[Px402`mE_dz,l*x**ڬѣ@ma"'tFƫ=Zj޴OxĎҿjO>ømj[/ϡUx֧e=nXԿ<c?81El#+΍
wyOCG*]V^\,˓y2z\sAwNwDf˄`k뉃y[ |~6V@d`	S:N^\Q.茘ʫۙ:dQyxL=+*}&d@Y4
p"p$q͚=DDbѓDdkgy 񊊁 C#:@a,6j/x"TlZs¦S2_VߐԤE *['4YC+GG'.z{"d6^~9a39T26SwSUzneAic{D
)؇JofWPFz? OH]9f]L-Ԅ{m$=ux"UNU~_W
.]pYÅyL.a|[Qxȵ
_
L[d:FP v-0ɧu:,iCkf=6VblmIcS !:05!Uf> gy#ΗGPGp_ gl/I`c5˧-}{ech5(DBgB]<HQ-(#Of%+xՊ7Öʏ=vAD?-ؐ~?;SdOdp2!.	V9YLcSXs+]a52tKJ)N5 yD6<PEDs&U]d(GU*Vh 8{S:jB\ h\B| x;5NM$84c  njrn5(T=lv`f_>H6J.|D;ͥS.+'6-4]F_sj4Ki߽L
ܡ,09!eT	րڸ7}"|_ye*-q:5y
T/%[\z4ǋȪ9*5_%XN~˵DllΛ _X'_V*5a_Y0eO#m-smc"@H/)1c;x/A4tb<WT31^7hn$YI%x0e
.c6QFƃٺK&ivmLmd!۾d9Q'69jrf}~+g @ej}[0qgp<(1Y
hXhnW'D"GPu!樮%Q*6a Fqk'oв>Z["#	%J$O"k	I>4'X<:)◘eϸ8P\a0dcc<ޣr#Og %Ix1.9$%<b[h+|5.CQ7(E!5IrnXh8_;+%|` -3^ds?H̿ :ZK\dSF	rW)R9ӈ{*>Fiǀ*sc*\51׹۝zmEʜ<#ېA6Y]	! +1B`&@z7:OLy/LCA'BlA7E¸{\p6fNɄ"gQ\1j͎l8E/%3\%YshD)67/3`LEQ&Wz`@Oዪ
W@f'z/\RMU"DB[%`GYa\I]AF
s|Ø:юo-Ea
ڃr9:$3!<BB9"(
gyQAd!ہP0	C7C[o1I$d*g96WNMCQǫh X.4篆F(%@Gg)
wFM+F(aOl&G^.
MBgܻ*fdt}MW҇URilixTpߟ̴A".g{7JQVQVF3A#zOpJ&/@d/.i	qBGfQG/('P\Qe_jȂ9t>HqIhI}pTb43d2Π[zj,>Q?	qhrg5&u;bMs	_\K&Rē))2|,S,SFAMԧX,R͎$&Meh܄s(7fӛUl`	D1AQ
JJKԑOM1pf"Fz	C[p`1Z1_dkO,J6fm[Ih>qP>ZԻPETdMׯenK\G'K*%

GB׷)+Ԫj7iP +LN~M)6R4
cӆE"`qrBRnL)wS+fTph}%%&c",ozx,"	{ཱུ*f}Y1P=]mK'1jns7J}cPGsߏslqw^ƃPxDaY7U1?1!Tf5+X	hFKOZUq-EF@L8u+s sHÄ1;+*\`25Q;~X	DsgU?,CB2M6E
&Ј9vpyt3ۊ8%3Uj^́yUG7W~dblK ̎:e/6uD4yZ!	Ela~0GE @F֭Z6;2"6\;q(^ %IZ.]~N@ U%.'$=pKR`S'hlg|+Ֆ:gD>Y@5fWN>a5Xy
vcd9JInGеxvsVF\-pϵ$_
6j_FwFJ+in	̪pk
eDCre?b/ ~~)b	{470a+ѐ;p,:T@AǠTG]+Ӏvqӗ}:<tDA?&Kvt
^8Y
NK>$Q 	]Ae;<(fj	:Hb0˜5YV<{
'$
\2bG'G^!ɐ;Cxr2j\ܧ?נ/ *)>Zav<!sɜlN 
!j+{vwZQY/4+k_"pSѱbT%AS۱10:]#X$IVDrZ	lY-FjIoY4G*"EAxDz$ݣnAڡɷ `zU@ F,%8VVo	B$oVAnJUNFx,A@Z\9ݵ֭ Ey0sGA( =ymLhfrҪ@OD4W.px6`	نZ#BB!ѕe҈ږ7St8s3Qzߐ m`1pNy|ӎ?Ɯ8;jaN.Y\'[wThP2FyO&Fb=v
`YsuA**/i3]$9]/a<Q!r\9ݧKaӠf25NJ=l&Xnl}0Hfկy}OAQ{M*J!6ש*k0YլVyvpTtu 7ksxCוV*jBZOB&y$Fw
	:Ha{`f˦LbX-l.V"~3aZm[z136 UX'˵AYZM@彨Ea*l9JC#޲$G <z y*Zb+qV&)l~NT`oLY,JiVoхV$
4{D+2Tّ)!-H-W{>c]I
Z'ܦ0i "F5rYF$$8B߉QPpTͿ^- ̛<Rq"ߪv4n *01R&HluLQ9L#m@0O{kUbƝbI-"O3&v,
ˤ@GBlFJk#tx֤fbK=l,uz H0Yvp8m~;b)"k
$Գttydv0u_mM7T8dp:-)TვԲDa<	=!O/ 5ZQ2܁X+u˾v|l鼛IUxzcЏpLw0gmwNC]к6eAlXk\B{ MJq|G}>MCr LeJt7oVDe`N􎩆Ƃ	HS`O)tF{V՘᯲m	 }po>VŮ6j;¤O0;b.qeۑb%{߈,U
$*8+.-CHi%У=$+Qy4@#Jh[R~S<!ލz[$bw
qVHF})+w8pEr|7!r`C̎zBA#q#BUfK@1KP7F,@@{.$ZZ絭QE] oD,^ԓqWM,cb4VdNE؋hōdڸGBuD4/.*X?Jפx}]LhJ1
˾=mU<30
О.{!TAa@×bᒐU~K2][Š 
[0̷pxψ<|j(_HNdd{E8GJYԋFe/du!,**x;C{d@TaK݅p	;j_۝%(4*+z8^Uu)6ygW'!@l(sdCG2P!(7Tiy§%̮|H-ZQvܓX6czh/Rx83'ћ͡v+V>w#.$= EHYa!"lɬOZ?YJ4!3,EĈ9oةzuO4F
y>)xa 2^DevP/@A2V͐)3>癖7

MBVУ%Wr6ykPE	潡(N,;DX^FP};3<>!`$V*p9;!z(Fޅ \Ժ!$Z$*/ָIf
gL
_嬨z`OUR
;cu7xjJEX#x!`ѲKHcרx*Dqs3Ma[ľp<G@$\t궯o0t\OQ4CR:	Xx;6\ؗ8fB-XvQkwiQzvjc8S%SҪ&\R2oJ <oP1; <Z7e8wE	eC&c>?\L()پZ+A$ĻSY;.[d//@N*TN[=pOx0Ղ1|~i@Q	e_X{=ª"IwLFrd4`-0<sI_%	?"ܥ9 ]Cq" ԛozڙ~Aɍ
eXuvAYT|-JrIltG['V3_ꖧJz
	Jz}"p~ہ O)?.telHs=>\ YfJEHPqKY:Mq["M&bwS5OӅC-x
EWZ90#U)WasV)Gk;bwW0v.,VBU԰Y%}8O6uetVXcbXT&*]2;*-jTܾQcb6f",39=>JD+Ҥ0Zq%|Cϭ_'Vq-.(^.&"`rm;o	`IDQb][ceZݰ#/MvcbN#ϳu$`+9T1e} Q0³J:Iuo
_vĔ!MMEgJtz/څ)X?nj'q^&q]_tR䲇ˣ*O3X-\6mޛdGr!Lk20ffbw\O_u	JrEC_I`y >Եb>e`d"CQxޔ8,U-OX`if*kZLYcjM	(
,YIhq<nަ`IQ;ei(~Z¿pME3I-SQ\1n4n
Y5mT`wxtC^eH68}['w>+[klpJIvx,,A=A	&rONrg/,zD0`\m<[
aL*T2*kq- <Mԃ #r\O`kxf/LLLa-rd{YUI'o"AiuڗəRt h]-?WXI8y6өVVqz_2!JsʼEK?Q1*-PZY@V㠒P%hJV9aXD>!u-FIX'(E]+iq&Ggi6:ro'C0abvW(ז+ƞwP?
1L;>~{"A~Fgeִ@`:ۍCDi`T,[c-
T5`&'Z.
madtA8nS+ED.Q:@Χ@䆹#`̓a3iDWdN˜A>hjV\Y'$jn%mL)֕|nsW_r3^`I#AB)c W !ˢ \ʈ|
n{ԌZdsp݁W(8sx-M?=VݶAGd%@,-K7h; OQq)`kuU< {8c~ {U7EEfu?tzJQQX\8
ԅh+0]>-s92#Ɗ<ldlDo;KD4Y}RЧZ'f'.MnK*+;i]0Ln.JWCvħj)35"\ë#O8x55u
<];=Ьĕ**	w8e+^LP;ޮa AgUWj@(3ugih$ƒcgMh`eɣƉ-o{ʘI862l()gOy@!2ENG3 gRl+>1lV7OqB"BũoN=H|kjn6Jݟ<lZtd!ɭɘ%VҴX2'lf'^Fn|"cW%3BPhwA!@?Dm:
-ӈ\8t(H g&n6S=HJg< ک@	XKE-]'ezE`K8uNEUQʿ..%GU=yD8]#5-Y'c*R`<eV3bZ@֡E?\UAئB.^DYnϠJ|8@^+W&Kؚc1F-Qe샗ԭ}QX`DN<K@;< ktg#*P[ 뇢e;lm{kJ0"@Nq0k}Zq,ourpd[=ۀ!^VECv5-@pZE|g'"RyxZ$w<XAU:g!g-Н!$5X ^ԺHմi9O)<0,ɇj%i~q^o"BV"
lpz*{6MzlMqR*	uPԉ28%!
DD!$8.cTi<t>eC1kO
>W8K_?eԴ`e:Mgevl5B3ՏN5]1	Gb6
0ǊT),!ṱ5;DJQ9ٜ"Z޲X:ni^|r05ρ:%H>&%QH<!3<F"$!SLvnLMA$qvx>	x!vK z]4Oi2r3gH)DqImi:i\(9صX97ksrq[
F/p28iBwi
ȑ>ßkMr&xP22B6BN9d<#^r"&4kImZeZjU5!E<
 x*
mUnL­wT	A0>  rI{!z=Ft3GwZEc
-2ZaJ2ZǙ; _wVV^(uW{te=v/6k I$5.L'q](?/ó335|p^B&>n6TҔP3v^:E& AՠQ~ȱI`H-C r-`!'JξBhb+R+C6?+J VF^zrx:-DIX=fduh9u۪%)gL詼hOmZ9r3uN
uhZ0mNBr]/j;plz-h%=*Qm
kC*b
i{ŲATƮ7iJvP>ÙPBvHAX?&xḌ:ltlOTF]K:͔\4/IB.xCҦ4*iW@%1@I,TJ6ED,Zs=#"1,iZ`!nπxXd
u`8ʣ>G[,F<m;E1&;3?Qp	m:qѮ)oUm*L̦ûgq[E(2,HKG(9	UQ=PjDzRuyՍ޹=|Yn' l.ǡa
!GSP1[,+If"(=ܥԦQ01tH6,D	8&̕Zq
	`0p98
*]i󼹙ՋpjB &òo!6sNzKtB~<_xKQ%BiO֧c5Գ>X-c%L/Qb.T嵞o>B|GfV=ޑ$lb;#{y`B(~M ?[b9؞ҢAH䦇X0@n
Vu;-8v!^5yݺYqs7DG&[P~8BBlpV<'xyg9F.yC|FSٕ.+ٕ(rRKR\'Q2D hF9|a^m1@С0+ynhN	:IiÊp(BՁj~hj%*ګTQ"
퐀KAiy(,e)Z'~ʣS
(XH0h!	%c\9ļC1/<xk#E7Jy:ZPp].w@!ȥoBؼsYl3,Mũ믠,٘_:jeE=MÂ2(2]~`q*=h<,֭+~Y'حfw
Z@Jj~$;JaɨA6ȭ%-8=) Hu8:țGz-q"fDxmpHIyO)
`{K\t\iKJe\Mor$(f3WMrD-)\WLѳluLfDc,0aU+ƹṺ԰pNm
}yn7살JYR*TJ~XD& y1	:@S*oz4jXτ%qklX PEw*mVަz	ՙxTfu!]˩/c`pi_xb6L?.MsG4Je(4?PÔ
<h9^ՁI;U#@QceO&i~:D)D:ĐTc!f'l"NC
aGI]h_j(s[&a3v%-MV@4ݔp+ރ|1oe$
3⮲(+sI$,UC;fnX@V$T(l6eF):CL R(_ֈ4E{2tz/Y=<qW?hd
VvW 
HNXac7IЬ	c
ܼJ1,jժtcկS4e{2;6*R:!u(,N# Ȫ7ٙ6ORʲu6W GLPGLT'&W;[[SCt8rX!v20$ qOI@u|YtveWbL
QOTjJu,YǡxFjzpMn)ZGoi(h
Ӆp7oD,9XxyQQf"F~B$"MQّ
-cF193EU)\zz
d't'q0z6ʆifnS0
:w*qb,jùD(UAqpHy6R /:C"VR4HgM/
$Z<|
UqfHHu>-%O'rj5@T]S#TYgcP8`m04,VܕinD-;RAM&̲6*usAKc|X[h lєQ׭@I Y"",1)p.->%cE{sy1PVCP#Q96yIO߈E㛱gG	?rG 6csflt?@7m2hMHN<Ve=Rϧ@qrM7ƊprV%#'X:X0D\	(p1jv}Ba K1pM>GbZ֍ 0h-+
(x<es.|U,Jub1mu˪Lҿl:*#w!"
lW]UAN^ղ{A9{j<Ȯh%vlY'Oϗ}aM	Lmj<6?4EI=LNGL>QQHcUrqo"fpɒ
汔 㿘-]0MdE[~:#Am=ZS]lIF&ԑRtCT*>Jd_	ISNHР:נ&O0KWLEqP`astYp:@í3p.=.]B⎓s\di&)K^"[^<Eȩ$it]N<#[U.Rn8U)61ث]q
}EpeO`1$nU!7]B;E,M~
\8X Z̢#/DN-s1MK6B?GDC
6.@O'CA?h.fMlA|are=L	.Y(Rk!pWj:I9F1$v0|XxY=&	ά|O#AIv<+9D$^p^V)av;V)]⋻lnEx+9Y(E~.I ށw}
;:)
E9#txxMz '"	$+tRiO?~Nd &$W,'ZŒܱ5A&r"WY)z#ŞvYNQLBwjg΋3";f,5p;w ޏ7 $ O,<vB2R<[y	pY\d*x+p(Dn|HGNV[".0Y` H'.UJ͉U>qr`鰭uRTQ(c_
g4_bФ&|6M݃cXs	)%="ˋB}˰7L*dib-Yߵg%O;^e8OKNc^E'@'
TREמZk,%Za" dP"[zu.5}AF~FZ
*\t'7^(HUG7i"K\E.8pr ؁p7y
z{@Ryޭڭ-9[o,/11TV:?
ljގ1!St,rhjsH8\*{6]<Y*B`:Q
%@&W2<`=|b1r4 ،umKG3z3#y 	)WVHu.%(qĘ5McKA(v*TX @wwؕ Z`":\&J;5	`IgyME:,X9~ 0d-y:05ȢyW<n)y!D$&ʵ)-s\gx ,,H+wE%xXӰ .rsgp>x"}Ki*JLྙ!
}:TOT
L%2d&j|ڲ`,-B%tg
LcĘ-xm&<9y(lڈI|dU.cecp+ɂs3:Eo#F&&e ,*טL6]v<[:lEB=1o6
O["ZõGVe8F#Kt䢫p̀4	.Q7fa4PEmSk#!gbhLAyb_L!bkbm^Xt{9)f'Z*F9u_`Fh  vwp'I$R@An82A *	r+^	iy|IPh8rT$_O
"zrG5,`+7op<Y(P/g廘~4B#S38qs-^7Y%
gqЖiYӺ˺2QيՐ*ZU;ȓ$ղ
Ae&1-B*
[<Ů8kE0K.H}A
TV'O^H<ocM9|*{ _%2`Uи[ KOE9uka<jft;~5_.pؑL[Q`IZ\~HKHY[N^,WRJ1GF3(@*^)IbRv{
mSً[	ށC 	ՀnTeih\
 X2(	n	0vWw_	H
Pi{InҾޓq"_~c͖B@h(25ZȻ
f(ȴHfh|U7J67eMVVQwl杦Xjlj,;o_l[6r?Nn	q++qc-9nz%\x,mex2~ hL1	th[Z75Aԕ4q[Z}yPIQH~]Se(r7`/~Qv='V0	?kbRwx!g'&<e[%H*ȧRBKӐohl#܎tdUlɲy[LdMpb$y!30Kp426Io502'qmDN|+x`kVGeztrkXwqϛL0D\* 	lـۈT@^4tk |2RT>1$isJl7.V`Pze{.>1:kZ#x#Pgಊ]ܞ[ՙxpXֶlyX%x( X~"0g3
S2(zIjK@T"Wm$Q-	ڗf7HwVxNư?I<&u7Pq4rޱ܌;̀эheWozF9à5CGaF<2]GiS'kq!Ӛ
`A<b+F+ǥp_IC&#Ew
h_~tZ)(sI!?c*N` dm.s
dB 0ǷQGנZI
#j
t_ߡz'\}<]~S/hBtaE
cKZ؀0^
0L6S鷍+(ٳݓ!WgrOBð2~6Wt
OEl6Ǡ'PUBK
`kW״b1]ZoZ!"D$xz,qFSκ8>}ؖ\z :~4Cd NBhdX
&MHV\BO0;iR_RMXAa[AT
̔)bJqr%Uo"p]h
B֫XqՕ6Ur_]r5`) lp.=TL4y;]4CΜ[{6RdӢW3*W&ry|K!pDFze!zW8:\"mUIoi=ƌ PPAJUJVJQ3(W|`EF"ZklA{~i84>QK&JŸ@0<5ƖayzJ
fLYV
Gx@y<*
i|PTDv)F;vRkjOY|~wN᠃t3~W@E/U)pZ|ZK!򭓜I`Lg=`(Lf@Ez9AOQ^ZI@8j`?V<	{dوׂ<ARo UO?@5mP\'f" m#R@^ālOBGuᚈ]3V\U6FcvDPj!^uexѣD܋޾-8Q5vvh,"H1W3
TCwLܠmX~{n}n	y XʴOeWf N:/ߝ*r?j_6o0C	5^WZI̿ VkOlc{UPrΨlŌG@%v.
Մ\@U/(,F#2>Gxʵ)UZ/fDhU3=q}zެK+H(VG7$]8
.CؖYjsr~n
"\HfMW0(s(L%EH=+FxD]e8ٙVVIyf
GJNj],<
Bh 2Dr1uma6sgp$=M
!\fkpD`(L݇ҟ:DHQ򲽥[?Lt.+vG(iGcةŉMpڐ~|-Ъ
K7̃*L-ف/Fn&1z/7KƑp52Jv%"#@%)"گ0Vd8$W
9[:JTUbAyUm4 VM3'ḓ{Mʤ:tQ]̎kqD7A
wi}\(-OIqT3nGeڅ̤հGiT$E+ܡs0Q妈Uv0b|GOށ=cw`)XB٨mMfz\eSllwp6
UaN'dxϴPL=pqkLǂI'!{+Xs	P&t P{:I~S/h~K]QfA!:ɍinsw4=B'/$@nA 'LfXn+A~,-W2IˇZ8Ȕ=+wf#˔JTMYIu_O2"=8AXze	'm8O,}X68tIIraFW`-cr>g
uE&CqIYПJ*jwT}ib!3VᖗKrGQt
ብk1B8$sF@k,Й[tY:>1*줇n1MKb[ms)D=,SK:{];4=pId] S5vU$D:iO:3[W5!^VU#dqEǃ9K>XƘ/!M ^JP2K-ʢsPiJa1ZVLI0yxIޛ6Xr I%نUI
ʆ6ށ"r*I}gqó()eJEV^4Rn}i'zvS&Bؔ]̆si?0,sBިiN<cy_F\%^h߇гll։RlE,|mkѭ{rA߱n V5bD@2'Ns)MA,S"yb(1yT+U%ڰ茀>= 0w8gq}߱pOexۑmIt~Ȓ!w[/E
ԉI'6.˱MH->*X!XEg;/Rz'xHqRpVQ8&Wm%R-BuLa>;ӗkqgЃr-C%RQꌫz+0E,J7##,,* peMG
²[yR̞wa=CD0K͙VQݬa
ŷ	rAa'b|aګx(5$$]̎׈&XTZ2KYQ-)CLR#]X6㦹u&<￧^=y^d G.AVe݃-|BbQ;lrGh`FcD&B󄲂ī?0O  oT@\Wl^8Vyqx|-_Jq)D,FHaIf⍌r8u*).b/5o(
Z̭s^p|]H2t`X[=7R>9!G!('eᑷZi!$Q6<YY'Z;	8$\h<wԋA.wCQ|T337v<kH:ES^AH~:<Ҷp%,VsRWW}qY\n4i`nu|.DjT+(Ɠ۳Sj䇿D{prǱ6HVAQth
<X%7{<k?s橌ʠKZS
ȬֹQ .똺<	c*[bًedn?1R-eWzg-dc"ONTlddSڡȔ+P YQ@1ud{U/'@><2,LFz}B!X]:9rNDxй&@mbSszr"]D>97oJWjv47&dLqfTHQ`I2X672<08Ƹ2Xu+Sb9NtհmcӺz+)HL"vfAhBYpW>UXA18(
g=?@U&m]VMwA[	=ܭVYP	Ĩtr@vAJ8UF,5CA :Ѭ?Ӑ0)SaEQ$e'qX+jxB*ST$ӀD(^
uW*k;سfr4ϙ-)!Q[Ce6pWIP	(Z/&yiL* S.~Mlɪ%",#\%j;TV35	B*Ltg3BIn|A=IgzA2`NA>^6(4]h6LQ2xi"ֱoFȍygsHUk{Qe'r#7j禈<[saP`eD&Jjl`j _cцRg*_D-68.>0Oꉟٰݙ x8 &t,ȱT	0mNыk$_l"r7C/ACoc(;3`uZ.yﬅ0Uor$eq+)O
x'	[/LY,O0{JVA6t\ȘQh";ZY
RTe@Û,ZRKgFTcVWoZ%)i%6I#SFMlk?ۤ¸&D.ufHpu?Pɔ'}V&RW7+V衐@r$"NK+NssE۹\}%M\)K튠1BɌQ6/NÉTa TƮ0i	6A7>xu=<;bTmg̘Hx01Y-`2
&0r-_dVɅȀɛ};dG8x,m8P{7!Nq͜
:gQ(R4pnz@Z;ͤSܱw8z"ubdnE!VΑ
ug"b
sqFmb4+,G[Ĥz~Xfmm.\..ˬVo9^MHr'@ȈD_0>H4oDD*T,#OӾ.rt$_l!-Ղs>5;5lsه`}KXOk~Cs)HPÖѣ'2>ָu+LJJ=N+mtj(V 
PW˩Ý7tYE'Zhe
8S^BnCz*7-q1<f zZQn,2sBg8KBN=M٦" h|VKC OJ߆*97DhOW Ћ+QR?
-}9MйIEp B/sѠ1"eO5]"\l^\0lR)@˩L:Sxz<x9᫡mjM	 k\Qqh?tMDLSMV}XgPzP
-~Od\-<X9ϴ3ꢬ BA6?bQlGlo7OfݖimLdaE}8\2V&i6?0F*l^6i
nm()Ez԰C*p1`c@੕eX@fW	;mtRH&@:dˑx٪5
!
\^$~lBz^[1rdG\t$u*%5܁z@;y{6
xFwPDS })E^
=.fTە)+@=\>1'EUk(UϷ jWm@']Y"9)ỻb['IM&`G@6I\]ǂa@U9=s0f	@  OMJGr8EUenw*7-cҏ>r]6bb^Bmg%rFF`WT^7_b޷^u.D[F̓&V8Cz76(W!v`vr4*&;\m`,Ԡ>A	EEoH7Ǻ-@$ʞ[`a:,2~4#g"qz<񯧬ZZrZVRA/\
7>\Y5'sqzBF
V3!)#SWd;aIB9TyUL͛JPhMip^ddFK nZg[ܡo#wtYFSrYQf0,*0)CQkGCmPv~1Y>.),!bZe\IE<Ҳt9g&)m"T`J-*hPѼHir LNXFTR962A
\TfCr[JQF2{p+81G:FC$,r~``江R$3mEy=9܏
]M%"^S*H҉;Ne=/vZ0ɂeG3כ=<e`1=@pI3aOV-^wH>nh͌SE
t>Ͷ& +t骴J!" M*13PK@w@Nl-WkPFJڼ	IOZ4iqYLen12 M"LN@9wQ"1~_A6Qʁ>n 
k[2?LQc_p@y%7=׍
U:H_zm#;Yf6Z|	n@QiΊFF<l}ֲAQVxo!B9"x>\CF&Hm|'@$gLQw岠G-\U$dl6)Z)YM3pwFis	:;Ӱv)EzWp7g'T0Gd]]XQ:1yUqdA	0Pz?{	
k*YhK]%P]JתZf 5N1-G(]f Lm$Ħ+M\Sz0\됎ۏ5?7hyDgHVNn@lx,ΏȮ,8DɅI9UAI
w?mYM<
`A$eR@rKQ3;#\C&C!947k3HT^ }&ly/l"Lnh0BL𮬹{`E7Ֆ|Ђz8=Wp`爵$¢eA]7dQ#u#SQfW͚'Xt?d@\N5׭;
7WYs&[Ryt>^T;+LqcwUpꐒ
Yĸ0S%MXqWd
Q]x9/HȐ_Q`1.xU6'"̎聒[^Bo) bEm_5[RрAFab9XJp>YԃȰ	<D.;;@!zV׊4$nFVK݊r6.F], 밐ws\7ߖy>:`?+ܚD:9=Ԃ `N.`WUL4_#I,G	BShZ.!<"} /3SCsݩP$|H5KSPyMTd{7;[mZt:>WǙ(BuT/_F{M__!C¨PqF<Ay :k&AMQ\\3'ؘO:4A'ln0ǂAe:h}1##LrE M;Q,
"xV.
LG"d=LPwT2гhs	Lэrzv@i.zZ^ZbiRɋ9d⼟|BLLcZe(q(;Ž:'zPjJŐvl\1j/Qp%jtDb־C3[GU-
luҝa'E0!9IG1Zц솥]@$Ͳr[bw_U[O_5\_25t)ܔ Y1^%XD8TqBYJ\OheU+s7cRЙ	]$k
޲V]a gGdPycP,auè=D^XJM6ԀtU
6U/G my
"k*.*ً9 5b;2R&˻ql%_m5Ԙ7Usprp=w8?7kG[y%?v^VCfq|L:]Q5h{6mEve1ж쀼<!-S^<coiz[/,^GB
^݂ np:Y:Z~q{
8wtsyy,b#5gh%9xD'6H8&[lE&d1LM
Mt	)^cdi0yIh,<MblRU{
9,wK@_PF:F#əCanOˣwrƲg;H|WE0ЋN3H?{;)8%dWN3ɛ&̆Jl^e|`E1r{.*$-G1dS 7JBE< ="SYE	VIQkt[GKC]_RP^y+ixYwDQ1Lj{Y:J#b/fQ*7HB!pC¡ʓSJBxHFt	*_˕UcHzI~ft
3
oDd8k3½#T]1#+Q33|4*s6b`HfL9{%7M8늾+FGԙdɱIJ%Q^W?ؠ*G-mыl#`*rpLJ9vNF. o7/S
}.,>AN:Z]تI6-Ը[aʩ)q9gyop6~f|aul|
[4Qbsc:%!dUYP̻G?}k En(vN33/<!ӱj\33J(f^~8 t&ezasy`þE'ګ<Y+cV,sm].c7
@Eʱ̜uHS3mTA+S_ӵBƖ\<7Msl$ʃݑd_qÝ蒪^Dze%]ql)7rxfYbeྦྷFSq$1aЍ(-HYV2Ms#R{dkp_P<C<yg2j^8#%d:Rѷ#;R4s:dJI;qeD A/Q:I<)2(y .Nr^79<5f_Š+T;W5HD`p|qg?uOxJ?F.8mv!0
Y<'6-ytzwM#Yȡ8+?b߻tp?=,\.YZ)\QdZ6L͜c3w-^%Bߤ5q)ם(E6z~6
o^"^h]!z?t
!C~ߝ$ȏĐb@e$f5QFyD]M(bg1}ݣd yq݆${NQ\Ҵ3	b@+"̑e
 sq.
/c:β΋P+E24)K2Wj|m4U)&<'6Yl鮃5gfgX8к22lN-Lx$׏f>H~	]IٽFL;'T\^k+LD[njnN3^=o7!}qgkЌ7îEfMAlz{qfxJ؜RUD/U'5H3/i\RH_nn c6 H4wPa9EDtI1yP;:M869|8fiq*!(	
 vC*}tNKhE8ӑ%gR.۝UsY0]&0,-qT/6\1o;`	ߓD%4.
RM)lVvE#
84="avn$z~뽊xՠgj#Z% UDYrRƲ;Uơ1b/}@d]=G>p$@|utSȢH$FoOS	*RN=G?!\[݊Xe	Gg:
DNI⇃&3nyrdz1uM?2GۦТ(ca dkiـYaeд8?i p q
-Hžc	tz xjhz^3mlAUE2WQYI{EOPziO3]6VsXBкߣDwFEi'Yk1Z}ǁ290O'!4"oiT&\QOyr3nÀ#@ȊO"891S"PU(.7\GGȐ޲z2ppY9d
ejػ:qvh!)w1ILhb7?cVljԿ~|)9!K9WY5eXzP&ZnhJtMI66`b_Ք1slsTcfU=h`@;6z&/d9TUiB\yc~,fMђՔ4)6Sb4OCmҝy&QJQIA^9KW! 櫐sPE
ン>"MB+5bn&m!h$_vi%f }bEID5
55H]t(C"@jNB65[,u".5E?htihHzpI%bQ{ҳ7x
]La5%-ϵ+3IߩcehcP0M9+KE#tisN87dOV6> 8&w 񥼿cw
nd@JaK_0D4i_D)6Eٜ}	j7KR1Z،j$O3"%p8j,dP29m14x _UC瓪= Μs<'l
|Yh<\gS?Y"H(oQQ@pN+r#M{NkJI#Hz!xƾKN7\)P.>A=\Շ:ê#rT{MvK `t\/@^C2eyr0[LP
xl_p)[},3ҋ!\6[W!ǢxĲLóX٨7~*in6SMA!3ťtAdX7OUH44nѽTWiky
4$<eKXl!mgŎS4
Qe$7~@>'\4AqE].\:C2֦&qQlb^pDTڍpnؤBTzA'h	7r2WpxE$w&*P6~7<)<EU}	%EX0QG(e=e<x'#)jFz>l$612,M*x&grAX)l=HgG>AWvW9ߦ㘊\օ=Q	UMZGQڳISK8*yӅ#~`w3BړMep9-֌%5Sb	U4EK dw,2lK`8-j(0	!^:1/}C @%똴f
ڃc39yd ,؂N$-Z,*D~bUz6?65r$@O)NDA969Mg6ћi_wz8&Y}-\J{MHP)מ	
%˻<%H@ruz`&]3+#2 ͻHJ6Z+
Ex頳"qq,Vo@w`O4AW1 "5l8<Ewl{3vL˂93sϪED＃ƌ<!5f)
C}}@⢮,:Ss{Vec0U:Pklmlj۸-;[sp6c9i Rz
K)'BeǮar(ˠxI-58>7 CQJ9aPt$HgwвISr>	;TN^.<_{
K @| tJ[kn *۔CoPkIF#$C1}HH-+`d(R̀bHR4iq< 
Hp`PUɻ	hbM*fGQ\Y
+Tcw5_a0z/HԘIx$&A.+lTgΑ%p}̬ڴ"9@P;Vљ{a&aA	(MLsFG>e[d<I<Y6T_@'`$bFUO-=ydn$K}۩o]ƶs:2:p$26bv4'fX7t^{Jґ Rrz,lBz]opo2 X̶{&9X쐆-[86#)ejI+?vsR	ˉP%x$<iN6Ϊ7[lLd畽YF2ldBhklPATO&Dt\:Bhá2$r z(:aq
Q`
GKXwFd5p(;le^\ONC-6ƠD`-wONey\bsut=;8_@ e.&LEm48̇P5K:.Cw9_HItw)?g8$
*e(&︲1:Xr /q^WM
q,uG:34 j1 MHMzzJI!,H"$=(ڡ26mDu<$DqTvN^ 4d8,kFLSeqFDٯ*3pnDٲ/*,QbQ@ِwvXM67~sE*2[L-]Rz H.[ȼ5cnsX
hB1ѽcr<eg@1[Tgw}OgqI[
E>s(MH~(素+Q;xt5^̱#X@ki~e±4h͆"+#9&G	y?5Xg
9{Pr_%E^zKBta9|eCJh2l&D,'SB2*
_"6p13|KM9$O]#::8SXLq˹@]\T;{;1l$acDr05N\RdVA&^׻-.0#3[%vBTf9Oa;ݦr^z1~_pCZAYIOiOyY0m68Δ5][ ~\fz6mB$O"gE^`7z4Y޺M扒l<-8]XH4?-!5tX+XoA:gxs\R^'),=<胓(pHN98
fR9D2I|BIҁ9X
}KOLvfgü;HWh+7//ˤ5,t\Ec(9= +uC/fVke+Z~M_L^|*JQ>Wg'pp76U+<6=H(r3z|A8RA@x׫ՕBhJJ.hmZ`4#Kah'mhN<1Ss= 0B"&Ukګh,3
8f$5]]6gV,<1\CÇ'rcz,Xuz%YފMNeM1=ۗx!&S΃icHMҵ)/8ˈT/<yzЍch;VÎ1?RF1#4S%-C٣9rbf/9o;GfaLqŞV2bY,tN.xVVJƴ6ʹh8zޛErK, ϴO9±SW\NtI{l=s:(|tTzOx8q,M,"n},IpHֺٽ)7KFXRWH
;Xݳ걌>qN2>#T~6"KXZ측~#%+4v20&:d{suktig\͊dST?(FޯS'xi_8b0he02Rw
L'r:ZFb유>
p@>6D{za
gK᪛c.yK<-Q)U%W4Aiim&7<8eLV')XӉ$2,TWğ	Tߵr_GjPB2K;nF\{袻6"`a@pX<
kxl	ΉCq07N9&"xQƻO&8b	WnC͢O#j;
XW6+w6wQ
 o0"J!O	ZPPEzBoxA>9V*ya)?s= 
8ǌ[[A%@w,YZF(\O{PÔ"!Aj֤uRlÙ$* sPcwYxzE1J84B>8XBS
K&xJ׃Yp0VOnl5#s}!hױ2[bl/+|tOI҄N\򱰧ڕNh*D7NVkd:鰿޼hm}I 1":P?Y?pBxi-|	|Hd!w;N݄qb<Hg~'p0#
fG|>'moAoqGAȚc~O KۓMUo\od^y`=UbT:nL?/ۄjG?S|͇Yk54)P̵2aQI\RIŬMoeI&ȫbne@*=r'"ȡb=t`𵭎)NCX{̈ZqwOUF>$;gGiwHv%Y0)'\i l68UG9</T	ΆouBchլ$Fs;'CPȌwaX= z2κ\<WY}c&~c[Z$Bo26p=2!5h$#>k⤂ :y5peo	T=CD2S>aɗQkXk>߁XDr2N:bsT2{Qj~l9FRul#Z4tV0F#4s;<O=QPmLYjI:񎠱r+#<6BcT9(*1IYnwŰgVuvXoL~u
![^ך~e}.wd$
,iQ?;?-d/z~"HD5mФ}5L74;) @M2'S["QTnL(U
s fݝUiEZ`OҌp>;S{?5FP>wY/>E"Çʁɷ jd/Z
%寊pj3:Z50*Œ":Kݨ\[wV#5߰k\m{D X=ȝ;Js0fe/clf&aM cͨx4W	S|j{3aψ'tCx<GyQg5Bqwf&1e͢i:|P86[Vv_;^6V4jD9((/FʖmmvgEP#[8ЍC\gEW~)B6PlQ1<1sEfXƍ.YbLc^n̏AePԵnaP^XP
 R4K9c7=Q6qoܱ$E#[vAF(Ûyגbr,fȞlIṣU|M2b;Ca{EW:dlC-F6ąs"(}2R`)]/duhƲ5PS	ܘ!K2i TQ 2nnӰ	QT}UM\ǲG@;H蓇"ӉEhM,*CRMSQ(5D3\z*Zz4~3|ϗ(3B`ӽ~,vX*[yNճ7lP`AF?IIWL'a5MI0XC5nTЉٸg9e/DZbQ;I8G8e
iJ|IK"Kr;KmHTWM+o  ^T>tr4ؙ	فeh<k-
0"FuD'\'òh<
ˉ1)ivǭT.S(n|iB"")esv*ldh¯r;WS׏sႌh3s(]"ۈbnCVdI:\Q:8rq^5Vo 8yʃ=AvQI"(hĠt,IY-ɨS02;]g24;rXYqhO(OܡL)UY
ps;qvQaXTPX! Bh9<Sg[V 'wX6lQ~qyъSZm^P5\Å,Pq`0BE|Y6ntpX:1I!^p
&cCzleSQ]^F9}fH>n_do£qB@AEY 1_ .僿@?/%kc&;iȚ-/7ahȃ7;;Hre
̈́n!2BO84BlՀ%=vL7y]V>
4Y!؄j]n^1ᦶlc-p9Zr<?_/װXm4yɘE-!:(OJqW)'&I
ˋ
,Y׳xcHqɔ+H&~&ށ)K f3_}+QhMNVhjnfA
@Y3A$H`|YeWyqS X^ÉYM+~rɜ/)e2x,7(aYpU:Ag)4A뤰$17ۦ=<<ŊLiϩ둹.W-&>(Orj ET8 s}Re+4Ȫ\֔7aՐ*llO%14cQS6os8ltvSP(Ksf,V.923*IGBŧoWp ~vd<SXje*ɳx[C
:<~âq(gx"Fm@H3uy>z@HBa{ݷ`@"Lq|mÕ};2eQ!=0TQ1ML"f1XWu]wS)lT
,MwI"Ɓ1Q #K3Mfuޝ@\SjQAF=*|ݮMeWM12,|qW2]
)dc	V=We%#V6cɎQō!.:4,OfÒ˱R\raQ-a<R!-ZIs;`ׇC R(Naъ@!ݼNWr60l48E]&2b逧t阢>1h8ީcpQpk,({@N hP`oA-޲	Q\<-.cكCZpWC ]]pcP8iSUNj8GihQ
KD_qxRH
Jr,ߕأ+B'
xˉ+6~ˈQ{!!1~4e
#[zar7UdQYdUy)
qۓ碮q׈.A.tavD顂S5/(J!z%H}RNE)YTZ[2c,}:ԢmTh<'0Xd`j 1IS-R.b|C1R.~Z[EQ)|eCYPhg/NBw䈃g`)h3*Y׊
0BV:j`YwAm.tX,<,=\Dn7Yٺ<㵿R܆A{DN+y_*c(.{DA	4*fU?}7`<ۧ
".JBsZ]C y2Ooa#OOjy] aS(*E3dc-z2Hmz E-Դz+ާZpF\[cd@\o\mC#;L͍1זxRrYxwm'c/^\l'a3L,y;6q %3P3U6&?a,[b7)m[14Wa
k71[tS#{)^ǘDǬlэ*N8u@Ԣ֊/B36#ʕ*r$C(Ob4;K.]tM~ dXbf1gXsXd&eO%]z7;S%T5
wrfҥia
0L2ۖ$},&>S(*#G]޾J'=sYgl2xvb]S&x8D}!DHu)d0XE[7T).ԐzƫyY~P:iA
i6&=`\<!_ A#Meo75n]$_b4-j-p.6m~vBCP(}*C#wo|-A+i̓<Es '&*J_4";e-b"e^Ƈ_1'&";?Trw_ފY1'+2xq!P_L>r
6jj&ޠ"vdhFL/qOHӋ):Z͸f'3o
P3kSma7OgLM6ڴT@>/6oʺeC
 johIˁ D{W>Ģw,,
f<û)ڀތQ2]q	<@U3P"
/e"@p#e@}NB;7NvO{錶u2Cr
\C-XP;*a&J 
^Η̮30h #NȢ<#兦WHR>0S{"[\"6.5m&PJ <;9f3@-b2\Ӌ͸&SUYf$6oQ6j싌%Y<S("Q2D_(*GN^
Oc%Iź-zӎqpw8X~ʴN 9wP_	&Hg.WE$-vT=QZ'uτSA&xbr&ߡa5ڍE`o>]jePK3bRş9NF3pN&
eY212mQB{~hX`d/ORm;,.$E8	 hhn6.̜?ItEˑg]6StO=Kn&I5$dk2 I~*
O%b1;NU2a+1
DGJ3|ԛ
'VpLmspSe펡=;'h<+Msaa l¸&*D-lM	C̼bPxd,5њ
[wx>J
YL7XX5
91RrJhXP/ʥ625@Ǩ̾җlBY$MS%ЦW;'P*DQ s^pډv4k*<-JmpbOY"Kn6K!Pќ
l#!ZiFW>ğuI mAnɲ0=C0A@Am)һ)Ɓh3?L˰"!Z$ i]w"L֝+3]PҲ0]䋛5X Tzw1)qx-dkrr_F/Py2,Ȗ^z )l^#ӌ߽"d"M`뀜*uxl݋Z3ٳ/{^иh%o 9&
Bz93`T'(Jlz^/346H搑7-U]:ÓbKRa6:
u%sk_DFҩQ P*GLܺC	"`t/,+-kC:rRR³T;e=0:"㉒Ƹ9a] f?M߂Z^*v2?ɤqeaui
%mH9s'j.vL.X~$xcסл$iזZuJ[WIT/C-,p&KYʨ37j$`{2{
e lx~Ѓ0
HŚҭ%dg@uI[Eq7(KPjSMwEPdR9]l/$`%7d,rMrNqy!Y	++vvs80 )^EݾXq+RfA۸#mM)c6BCJo4GA4Q>0b&+Y=#>qty.WU&NnLP/,?"`fϰ3z
Ej;P'
]Vl|>JWYl2R3lWRc)7ȧA S^@6c,HW폣Et@He	<yXU]@yVʚ~RiHFfr{]s1#a#u;4Å/ZӼ'^B|s5xl<l@JyX%x4ؚcwDo.ܶM'ځL19+bbGzNFg`FymiQϤz:V>hg4ySam7P<UugEeaGԱ¾S	|1g[ /-b ?Yc71(F8A"nvA(G1irw6>W+<912)=:fΣ^
=YXW#i[@6V4Xmn)tAEIiъ?4Mo˿Ʉ1
w{[-.#pOWb;bS$%Q8FՈIN?S#kS%~=A{l_`\ՍT͉R?PA_ 
usbqTKҏ\98^L3vL/Ś7I[[yl#<
8Zle2p޸Z-&ĥOxT Y$+:Q.Ԓ+~v־C#k:G9.+	2*wBa+ϫ!Q،b2 l%3`la]qXxޡ`U]fyu^I+d=o[65.S='7b݆l
lc/R6smECV="j]-@eSs:6Ў$/(oK<>(ζR+q;<\\9o[rdLLO!豧1Xir
 p38<fTaCGMs1"5ETM}!/41c]8%6VoA
rq" Ùz9kH_c0B,S"2hw.cQ637x%6AGc +$ig߅SR ʸoK'R]#<Xc
y'jUtmFtQsDx]`E$Ș%)'agl7DaҾӠC@#hΚ
adKāȸf
L ǩǒ&z&k0nnT}2=b:v^dA-nՊB[Z}d1lӴQ<b>F+Є붽ȳ+I_gW>
*P^;NL-;B*#,MNB3FѲ.$yJ`9~K*%E)( bbF,quetW/@@ *z5xFec|	]6Pj(v*fhnh]d)QH8ؽ0o}LR|Bυ-]CŇvL\:\3D'oif'(mi;H%'^>MPY*ێ[)r3H)8~H=Ep[(9j;VHDSQo~+Xck9)!8;HYI,h'MێY| Vl+߰\
8.\{h6ey.q<Z5N4zw7';K~'x3 Qhn#LRqɎ3y6WyI*0BgTj^,&ٯy#ص.-FxE$Ye 
P@:4%pyEn9uUݟp0Y,_OE0lzZ4,Ш::P<ȋM.R<r*DHEyێ6{eԪL:=
jfx63\禞|*`$?8x},rL07Fqx+;K9蠤SVv<_@O8&D8UL#V&"lH!ZMF!^LY]tz:`_duMy6= mae=ڧ/+Ȯ߬S@8vl8SR/jy[֠;}A@1-vˎO@JqiӄjdId1fĞ:JH
7`t)k |*犤2i	4hQQIkk6bkHOjBUd8 I*	J>Q:_]Ľn7m9b8֢4
qY{jUòN_MhAYm׀-Aht}QF{;,4//@|?2jԴj|S)H{?tC'/{T
FE`iBο<S|
./ +p#x*Tz^1>LqV``n`
<h*ކ1\Ns
*!D!EfI=lT2~H2xh&@N
MYfEIlϯZV: 5ùgG
V
NNJ@`7mwW'\]ذj7pZ [Nד幝o1xVl(2m>SHES
Q/[$	Bh*U3A]
f!Ҩ`TύUF^t6~ʡhGL%q?yaRD:=v;sy\D'|6&["oF]hy;,'2	(<'zN/['OA+)
tm6(9: =_>#⸠19H*d/cޟTΞ`38bxj?@d5):(G)#}>ǄGApIIoS,څ&AKoɑO\ WtE
/"N*luWȤ 58H,<KBaY*"2.P4Kt9_HprC-\y_ۮ?֨i&AMC<ɉ15&
|
:ȔZ5̑Y|	YtH^?͂ފGr8Z-`6xC_qWp9)\ǝ-+3g<JX=[}Uu-OуVi2Ca)/Ƌԡ~)T*w@WwC2Se#k@q=HfI,`f$HyrR_[(i/π^wӢ=֋[:_JQ<acLB
ka]m3),Ij]3)oRemTh.:{,ow\
oPX
MYQ 9zWE6D_[`ˢ(Uh~l9Q.B;r!]]HسXc
> r6GGsD6Pa8KQl%eѰ%&>%g+qAiLP2cg*hdɔZ[wFv2|5A᥮̦&vKWKI~pwS81Ӫ$eޑ2LܧqZk:ֲcdՍb44:X@ܛ+WTZ@e)P)$J |9K'ݓ#JwƁ`Tj*2
_F*?r]$ &X4Ú,)c`Dȱ.ʒq^#}:s/\V58f{&z͘hjXy]^:y?cy	vVKDLʑ|=o-W*XC"[hbrEex2Ls"
}zɝMU
[ARf]@>9{#nf0p\@ZezFN]؄ LOX}Q@=_J#Jձd^5ճ)9 AQD}O(P!rs<ҌfJ!/ej"(hBfdTm[$`[D_)B:92{+o>MR #P4p̙"^GQ2qdp+TL|YHPVh*MZB1Nqզ 	gj9ӹYpE` 8LA:,/woa'mw.޺f+vLUle|֣)ƊU8E\J6)HPN4mGe|="g$# ,Z3HYح^R!=BW<ҝNЯL9iˣ̹skd
z"#G\nr.4ংp|d6?8tk'kE_iLmZug4oqho%#qYjG.;)o7c@y0Ȓs*2LD``h8t5nWv "
~y#'"bj%}" B`'ve^~Y]../>D4Au:v9M=K.m*g(ձJ+X,bZblUmsg'mD!6'sMtǥhV(ڕu:0)
vIAc{ъI{Ma.xC}KbU>N>[ O$ωID<d2_j%vd<qtb^)@x.BHuv,IhYhjmЫ!6&-ӼxiŒZxj!s%[sqі$.u-O呛Ӳ61gȅVf ++iThAHM?cZS=;,0,AMj+վfMb>5;(3[ mȝkw5xfG"~4hK8JMYUq'ʏ?oI[qyQHጧHL'q]#B<q
pjpk&?+ \@	du&5t|^2t!ꢁ
9SoiP1YE%|lȑh{)H<1GAbBUp0r*
.C-$ompWߗrLz(=KM 'Doؠn.8$X"DAظjӪ'Ze{"`WLx>{mA4BRpP`76G\I9췋,r⧝cs,M^̱iۗLu>V}n1͖Daʁu VNLH:V/Ȥײk`/X*x3$Dw]^Ʊ[<=h&PRαзtM  KK~yD19.cxB
_7D}Xq
Q3_UN|%:hr>+P:fM68S#t_êȶ- 7cpd&ۯPuڤl8(k@9"|L1~u]SÖfZhr<N#eE?{Fi![tʠn^),G;l6T1>V~
a Z"Pd\ٔF2 g;tPOE:I#DIh-|*$EmJUcltNL?/[o$hkGYw}b.M-chdkDJ$#Oфgw?\adEyMQ؃$<ftqDVRA?1)*)cg[jAg5IuٲMz`'6	фXŚI0	۱(6Q"_G](#!xRIЏ
ϝ'%f P?ҋ5̌/=T-sy/cf
(:KMmilx
K wcM @R2)k0_y5'D"bP5h4LS%4|MPX509gv1^nAI"Ϡf9j"O9&ݢgdcT;u>CD9mױp$G3詎¡<OIŹ`lJGG)
[I##Y]ϧ?Tu9Dÿ5N^C/-Ʊ:, t8(
HTb8l	3AO&[ê)uTΞA77sg-ZS6xF޻wVp)lVM9h9it, ]@GXAo^2g魠vg+DH4 l9%6k-M~u<ăNٯw0[yTn4b8Yi|qE*>zyXt6u
'*L# VgXſMl 0fJ
7ԶsxH;Xĉ|'#io~T}J# %TۘOR2Y%bVOP4`%D!:K\p&9޸^CeW^iS׊p1b8-`Wg,-^
()h}GaB0e!U(-+9	]1VE1=-&	9 
d"iе<*'7U`	>Ύ8,k̯?9xy+^5GnEMȗyIlfZӴh }?`.URXx	d8J:8^țx	ݐ-lpq'aEO򔊴	pS9IwR5?]qd+^h0L>]َY<6!WO+ҴgRnכaCgaeY)BLmta
VQiѥd'{Hg5M\Կ3y؍wx|X<qMMeOYMͨg7̏6x'F9m-O$*%ә0dB*l
*m<h{
gqA]`Q>=}d0e#7j%:
R}FnG;DsqT9X"D@fp:obɡ~ӿ%lA! #e(=LHK\Вniu)#&k`9̸N&{usǂIT	YXKe3\]bD͙Lղ;=3ψJ$jm-r!>d0ȷ<ґɕxw6_8~G#uS3~gK o8|y(I8U@&>©rڐ"[d3`p	VRM"H#h9g2Ғqi bBlxL<o
f(n\aZD2Ȱ=Q3<lq^1ǲCUT9#`8ˢ6rHJr1^	`8)^据1S&t]yUE3mUjAȀ/fg^ϭ0%yNH5	Mg-3.HpFȕނ7F'1Д޾ΔbL-m1XhMӦ+L*eW",'\,{{7Jzs%E[t CFڽ s O]J=ҮWntg$h!n9°2AςI,@T$5iaĻY`<PL%-ayjB@):q
EaD#"Y(E_*:Z7 z/0q8xzgtFOW&@/6ANpmķP #TGȩb xʇ}j|CE";xm'K9@6LIZݡS#03Q޴O\fd}\z,C~QWm!u oOAIlo3l`)f< yU`CׁЯ
!ǡtcMLa2Y(8[^t+$Y#MČVT=*_fboW{4s
b}@A;ۇEap(Z?c<`INi*۴+	Dij,Lj
w&zhfhh{ 
*+ď@5X&
 $wZ\
{''SjNoyhTO%YT8MǄ)ZFTP㢔jLS'Oˀ@%Ma|q,ͿYPOq-khz2Xqz.>BeS_Dj&<XSe{43%HRApP8^N߆
*W#ģL>dOvUdւ	&2/<?ۧOKm`<'!N\?V.L37L,"DbWXˆr|jTuMO`Z}<,^iޡsU2BRO0Ԕ3ha&R*L2kO-07
| \2Ik\qch逵z#fMY=ˑ<c<X,ym5
)P8ګjق6 l**}ob pm<;`68嘼i⻹<b}2òtj/Q,c`=WR|}rD%s}~S.J㉽eeqA2bi-vŨPO{h$@(%4JF[ Wlߍl.1:8
Dox+uϲD8E?+t,/+8DƞB-j/nt"
Lٗ遪
۬v.7:钟5͟U-W4lҩ7q
7 ^nqf
S=DToziK8v&́.w1cT87DSX2:,#xh+[T	È&i"*7l+}w:NU}#!SU8F˶OyX1'?FkLP6vb*ax0t4GQ@aXiXE`Rä
/>O-t(L/΀	c}y`WxAOoiy:[ȩ@fIdQCBlPڄAXVK(%JR=lhoO-=g9rH/{mH^tHOf7jV:6)S7{*3	};Sz}jzp:v.{0ʞCMGF93r{EI,Qd v)PK|:-"'@iQѺQ `_0=xaKD ihBQUua:໊밑^U! Ba؜lfPD궨C<dHtn4Ab1a[F=Z3.>o6_
{^`EΦm
[<C`ӂ4(D Gt46k-mx ғr&osTsY0MnhǰvIɄ-ʫ
l#YxJp<bU+,w.IS4,9 wD
ETzCiq¶Z!
m^;m!K5b4r㝶]JWǸQp;Q>:q'@ҥn?@l/N;14,s*vĥjȈ
4oש~wXK8ըΦ7;HغMqZy"^<9y^$A(5#Wԩ :VA P: ە94v`if/mb\:E>A9,܄7uӸ|ѝC^E 	ff,TIFZSp(w'	*ip܎KtV?QVŸF	Lc3X`Ӈi&rqZ#:W1hӳZ1Y;'	+J.>MJ}'9vpCo
i!GK l)K搯FE,q^k`XD>ۉ1Oȓ?٦2DJf!C:Rl,0P.4oSV~;Hf\N)}
6-LQx|llaۘPa-VLYO1M3USᄗ0r<baJs0c`e+8J)׿HH#%GUԱ>~'&8B|^)c=nts9C$ߟBaYET
MUiY{!YZG/+ 1JuNr!8P/RbN![6 ;rGd PάnsG﹬_FXh\!Fœ)cwyiFJ$C:^rT>CG!듃&Q?&."۫2_Yag{a:T&O!&,Z!k2 Ȳ#أ\J
ls)'eRr^ឭ,:+)k0&UePfO(D/vK
z%b(G¸>("sj/&ˣhѱR%iћoФMmRdaۆoVĸ{=v*/[[]7~
S{xQw竰	n=yVb:aȽ+/oFx1)<FF^>Iv338I2nBE=ǜpPeyE7yBs9	pf:P
Гk
S >Y0,6K ut58]M4"l'Bm0qd%~(v_4P+@^b5rj\}{6Jep?uE~/"N13_԰My*l%cɊ($8$IHUbPʃ~@
rdC&;-{0
3Ⱦm"'Y+<t=󊋍G{8R=~/^-\
mJTy:.Чv,.Y|Bu=a';r#l+W,rv."09 QX^ܕNTv@WXRCþサϜx	ygU$nq &#x2v7)Iw
,]+X_O_R?y$.;?aC*s^FBo[.jH*edb`h0s2nzNzE{n/%.4~Q=Ғ7hʨ\`tܻly:~3tx_7[qwfn**L=jlՍ-Ξ3(3ZӠNS_|ʈ4&"!f.Q4X,Qg$G\+a$&(i!ɪSoa
gjf*_%(!EUuVNX鵗ebڍĂ..PLޙUEH$N@ Ò'S,,$~}42-	t=̖x`z(`-},!hRmO9F^IRNe`8L2{\$d'e(AСGh璸 C.f/~DH@.P"&ˢ+J`UDDM&Vhq"_A	B&7u	P⽆J%JtqoQv@r[H6%r	b%,U^\t
]
!MD8M]?~5XEOҡ3:zn](ToN-K0u@=1>xUx޴,deOb3](wq3	xD>NfK@KMө	t(˸m"\-hAqԼpWd0M\&| C8FZey4+R88 0iֿD}Zg*	VTifxp
&RH%(hl1LY	Pšl@MRa+iJ=O9 .՝x|:$J9rN:T
'4b3+QO#}#T(6cMsˤ܆msH'3	ӝm(r)8d>6ڶ1v`p]xIMڤt`aUMSvk{؃fքVbu.!dkl^`p_xr";zI*3b93ognu]5KHh-hRp[dc.d
q,
d/,/pM* 92A!ڄLBKEXVj2JaॕL4#ד-3RF5~0amcdM%
AFrK,2kÝ5(K@//KdF^-CtUuHq,~#Vpࡨj/,$+Iw{lkkmJicDR_n*))o^In\O*{2hXF"u/l~-
1oށlU8ZY0kBR=Dr/$
݀7$ajRw2
0mOxEs/!|g,2s]
b$00MV[Q:|
152>߹	b;ڨϱ`UW~%NeN&ELgpӆ-r&RtdRh0sOD	kpXOn	ljMM\Я/
.r{ml X:G~ZG@0K.!@E-S~mT4~nD5`1_17򪖪a~ ZڕeMC^,&HdyF29Af*OfbB,ˉvk5S.I,nA$HI,Ȕxm{

ErZw}zαMCTQ%z'q+EDbp[=++Cfv;5W.҈b!*K\%3x\eò&UұVU&Qf[JprԯܭtUy}"	%lC8*y*r4ReY_=X޲#. vx<n
ZMJRa9 VOM~N\%5ފ.ݎHϕ~y 2i$PN5DgoZ-T;]d#xЏHD"2Uu0z'x[c(cZ 'yE!hO2Byzň=GJ
/+T>-A}=t
*;+HgwfiowȝؖMȍ"VnEb2Y܏w[ocJor(0X{bۦ2T5ı E<KJwHa +X桷P1+ayˈXrL]ՏDG zv䬀QGSڣb#Ћ'q%T
ex ӥ2TE`;h
7IHVemÚ"_eh O+ϕw={3Ә0ȿMYFMF`(:Y2Uw'h낵	>:\aoS˅Pd֢U!ri]Qgx7wPPvQpֹC܁7-8
	K JKc-""؞:tB
X;qhO£TȖ4UG&~:5*#ل܆řo*e7NY
H\@)Y!^2A3B4ZTF;;*X&wk^Juppo빈&i6:f]*'c
g(rP<IјMnO"YbǍ0O+CH+ Y0ZscCQ-d)јJx]'@b˰:oız";W<K"\>x	pC$h8GҮhދ;.Ei$.6J|muHnU^Z;J[ʦixBe-w:	ۊ]3!ݪzdG}U7gNHz2\`9Ⱥr3̡M` J_f?V\=.V,9#?޳<ee~uDG9U*7GY@Q&O/q%o^x%yہ^ ]č@9$ՎpN*y3ZBx֎=qvxP]3Gf;U@.wp8/h$IC=_y7b
Z
:nC͙z$2mn/
rx0R=5>YK~_)=z#KVTcG~Z^ebd\sW0n:uYxt6߈z464#	{zǌ!74	F>րWlͧ@H&Y?.Q"=e<ʥ.
hJfXU1A_ꇿ(c쏧}vrãrpWևbsR`b)اU0'Iy\REH<RtKXxRlkIM\Z ~M4VտFf:屒euOIb|m/&PPZU$%@:^*|)U@`0	sd^"'-M/?|c^x+ݛDwzI"ߓ0I[
"(RswȧZ2eyLAQ84!hDDzAJaG`	d>5M#o/e]?zG@SbEn@5	WI-T,kt@E"cV<%i)@7	۾mPue3cCK|2`P>.]pS1G@9+M&CK?_6] o|}@ &DDX|+|7=r좭@ܕR?ov_R_JU5 N=\rQC}'P2)7s	>AE>nrІgcmQ|#JNIHT_;qU8Mg,gcZARJ!s/
=h6I
,ҕ9R!%Q(df`OAsֳ+U Sr .U
>6BJW^50qCLi$.R4=_l.1G}hX~h/܈|")N:青fFaqhJzj7Dʐpry(+9?ў 5ǌ06YeΌu~BGIh00̎C5C?A
V@it΄
w.)sF1nYlKI:|zyݱȑ_q'AB\)oMcdSd(>5b!/H?19iwA3V¥;yIȉ bYT7,1g~Rkelg=x`:>)]v7ntTǞ9s(#3\[M I}FtQClˤQD01a	9LQ25? Y1M~5	zA#I8*5ǂSCu!;8(2;lAKp8IlS.TEQ[
txU;F4۹Tl`.OoNDF2/*\0$ؾX2+K&V͓1F.}H
76]~z~Ѓ@zoyo#}
HvcR~ə=x.QT4"yqA&gEGU %f(œH ֵ81q_?QB	6Qi\8$s+ V FH)Ek"P=*&B@'6OH#т;*寬 NxSQr(m8$Vq\iIWr#2(9YE':֮#uV!diΨؙJA:LN!"%[TE	㹝P@5c h*P&VWukᾘk[2*fQe#K^|H4V
MZ7/0Y#^aK!7a}ǦhFK/Թ
Sxud|'l8]ʑ;#;|GEFc
W*&qcU)p\֥3Ԓw7T><F<&Yŋ߳Hq,IWڕW6CZC%L))b+=O.Hɬ(=V4lרtB}=&
û-* ZbeD׃Ab:+<YD@KI_6h%LlS"t2QHo<")jV)0<p{%k
oP.Qqg,anjErQaYQ|T99Y:`ױG˻<X|0_ax:~ 2}u;=t[BՈcw`hўcN7I}07:=
K´RT9
;J/L}Ӟ0	pI$HxWnph18[W_:s
c)Z܀<CdhhW+a.%y;oUlBdՑy#hI("2(|Ye&Fd'	 X*O/FGu+p6P%ard-j+7UtA4`טh^r2ǌ;lYRƄs$
A+*@}(t	XPsg^wZC=Eʹà5u"je ѮFNN}q#8^+iB7z,*"~_;i$rx2EĀp֡}M yT;TgN/#
S:;,_TZ֔<6}i6! ؠ._Md5?;(<@X|u؟:-஀U!4\@|Rv%nth"f<
sjh"g}B:Ul4Sfn	J97R+CÕeS}SH&(X}"@/dl[]!iu}"۫/)|i7ﯫȁ:exÅh7(:n 65zF\>A@?jFj$lEcy`" =Z:<W]S[Ud1y%@{V{Ǌڧuf%,Z;	lQW jlMudW@b[U/ͱ3z`I~NRmeZWW@y4I΍aJejMv`C⇼p:xxֆ@ǅr#/Ea^:rit+a>Q)Xj:E1]$/v.c)$\CA(:+Z7[`$SM`s/J*l?u1Ek܍WÙYEG]x).29'4 dUq*5M`xF<
X/^g%.I_blq`P0fSzf3N(C]u-[zT6<(1Q#cs1bwH:JQ:b!o
ApubȦMz-}}~|gըΏY(T*@57^	i+VGŸl~[a;oS>j=-q@t5Xa6 |E/_G3FG0Y;ɪeo.IX;nl[Ai	"1=s`bDO'}>]hGGmyٝۼkŐ	WO!>h[vfMHtG(BUIr.UΪ1<UF݄[YGz/^bd؋ne.XnW $7{:`wgЈ&W^2 (bPON<ށu &2dM#PhyNS2Ǜ%s,*[.gڢh|W." XCȤUJgIB-+pstd-WQR ?U/d*!T$\+R=O>
2^
<?7@k$"'w+X\hrL _K|NzV2`"D؉wrx9&q2#r9wd):m8h_9)FQ92DA
Se33؁ƋswV\ /4B  +1P"4Y7SĆdF[4eH]*	]45Ѡ)KP\-,A܎!.#{Nb53ܖMs[NVCwvDh0U঍|d̐ȀWB[&L/cd
xX4{"nY<[غ J)ݻ]

/Jw2ނv-VXAd<팇qs
UH|5u:|܁']"Uly|
!&{}<5@3i<FqudΪit#5n"Ra19Uu)$č29))lF򈖓V.E3IlJYvwvER,[格u35!΍]z|}Cp㞡p-@;y`9pnZ`8U
##JyEvM
V}|{"d5e9hi`?Ȓ>VZTt5lI:;y:Ml@9/9Jy[ͨm`rFj0&>N0Wσt#UQ>Q
U9&G{9z"pw|cbH丁_xZ	"xlt]doN@/)
H:<^DM46˸+MZQ!M7hټڻC)gi՗KtD.3lZX'3dEXtM_0}Ԡ@?V3oD&CUE/R(HZuAQ_*$^sUW.,Pw.w$e#fs`Y!BnC@*&Sږ
M"+~ѳB@x,Qȯ,kuգoߙ%5<L93Y
Isgax4b6c+Ag[h*iRڕoe(?lO
ʳН[el=@j oie)}Uwt8dXӤ aJd1-: oz<  j6UDiեyzD8D	I	/_7aR%
<84x~m3c(̳xt/9.+ KJU˲Tjvn DFDrLɹHHsdT ؝**	_̢
s?}g3zԁ8EJ+6w
CE! X92&M`E|І
X?*8|b+A
g!ykv4"|NNU3ӪsG晴IJkL@2C%o\G3Q+:^k-m3BXh܉FCk(zP,6Z׾(uWAY.fnۡDbTN뼘JKGWt&\_#\9BW&Y|.wNXN%gHuYx/Xwe68E@$tew2IVbY2}|k)%TNzhv9>E95ͽ-PB?KQTTzUV
Ky&ė}j;vvV,*RzU>!R9I0#'Y>2NLð-BAjTp::YT6V&},*QS|OG_*uE^L%"?(5J&ฅhm
,X0aVA\ĊXA*]✈,_`ra
d.Et=#1u#Rhtyr=@g#4۳M9Z>CZ\{Y`&I)~Яi{3P؎ТZ¿t2% cabnӹ#yS~@}cPZlpVpbԙW9{GVKa6;+ȎI#=H`/ޑHz,D7 R\5,9 \KݦePÑ;F+UnzN
k@/i1J7w	<l+Gse}KWT(7+v{:fmt%F&/ppvi&bbsBVdwTTW<qh0<` T:0mG__r <ȉ<՛U 3(	*.Uo0[<YRgK&)_<6

Lfȓ.-:Dg-Z{
Z=qAmĂo]XiTGy0[hyҚ$/\STvzyesI_<l]
1l̶7u[(1ѾoL똒Y0
ڥpȨ	j(S' ejӴ Sq 9|jg/DHA1
r92ދ@!yx7:T1@#:y2	Uꥷ=ݼVGR6k?6Tb:Ăl}_@PiW3	%2`|lea0Kڇч2UD"N^ۺ.;5tg+.eFB\EBj:gPkҐ>sy'&a_`X#77ȗoUyF|1nJa$_ 5'0"~ʎn_c+{ԭ0]žg{\t*f%d;2Dnn2.kLtam:$$	-<~{${򆠴g
#SN&x8D
@2'U8]t0"g;a7ecgTMk
Fc9
HױXhbOCb-c$arP`# a<ؾW E
8qS7l^ƫb"Zq.SU;K{?ۋ% k?tS&@{'7UG}YZ#Wyvʖ($$FDFP\YU!~?FA	rN t\QdNGX RHkBf\o䢟ʿUJ8r/XEHL쭣ȽE2F԰ħA䋓W(@Ky8,' |E
La4%	nȒ-QR%Ptۗyea%JM>[DUg	]&d]kZ\9bdz[0G,\0)A[M,o3'B*4z m3-uR^c. 9w]=qaS0UG0UO7lGQd"E@0/o?]QBrO+
_ē"rsWn{*5P'v(
4 ӱ$U5XX6!dhT	c;Q ?S'oQ<#j[AbF/fN+VpNjJz+V;Q t/LKq4zY\e(BF^UZ9dЅ2¯XHd)=*v\Yã/w#zlV&xNsL+!tkX-J"}P3K$48{6j"-%a!UDK:|7w/􏨱˦1u5qY/=qH
5$>,Vqz3mP 
	-oj
=z$=TUdt	&\R0<%	F͋,)c*Z͆^&Y1YIRF.G'PIvasvp
r[:MFSq9v%+.["^%G+C]əLH Tp(Ѹs"胬((:<Ɩc,ȃ^Դ>IdVd KNj'PX;GQGۖ0LR)dKj@aH2aT
5zR٣S7Al<A 8ﺐ	*,4fȗ
ooS<9I'H=Xb
sX8R>[ k]
oŐUj+
H:@$PLi@ʢ93ˆs!4=A-*
%qonY* re}ڿ9p<ryP{1|49(DqZ5兘ı'Fѝ8@[qbU#,=Uz!Ƈ9dODt'h|V,:pT. &M/A]jlNt<q:V<͡&p{\6DG"'\E"o'N]kFhYb
~T*><Ht\ ˇjYBI)vE] &`OŔNQQ1SY	OKДY-lzÎ,C*Kl$[ Lep<]0Kv$_sn^&YVZsQHɐhm'-X"9pS«s+mhFZ{by0)[,hP	%u>4Ȅyh7qJyq/I/rs=
y8W`lST=4pԉjy^ yߕ i|;⤈"	ӿfovUvaN oʊ^p"~l-MJ.Berp
1LȜ6aw}Lb 1wtUIC5Y̫@弱Sz<M%XxGZFAPýImRks]Ve@Ǹx\5m$ {z5뿞+.^5f~xFFSO٩T#d2ٶ8P,<Rdd/wʰy7+np:k{gc9,&3[	7Rg	YykO̩cSSH5@<}E"\NTFBo`V~`u;zg? s&Z3:`{Q;R<"&\BǨ<@.MX UuP<I%$gImyZXLLVqdmkU'<PyQ\h1+4ǔH,?g2	/kIm.Ij `9P!
[1躟Rìz+^(7ꔬ/Ԧ+f&̼nDM-6 o?	`.4rm'I@i/ŠģgJ$cS|{{nc?iw؊Ώ5AAuWvB`Eca 9^@r:⸞<Ju퇥 pcANl#`텵fi?(*ӞOY8'~PA( RU#/E`z> `oCMx9
yK@ѷr)ISnbu+<ÑlL&*gZjڡLu<% zzMNMcED>8n3W5F='i᩠9i&~Ǖs8*ʆi֧g:9xb%IjȟI-Eru($ފ dDA7Z*.Gf =c*
R["h4$ƁVG:8K|K.֍F5ɋԁ|dK
Y"n8</aj$b
{ݝD<Vܲd\jݴ?gp"p*wkѢxqQRIzB5Y8:6BAwh36J\TbqTy)ڞD@"wǳ`<֖T"~aX)C&沈鈕a#W X(zZ6<~ؤ&r$[`%MQ`P֒jEm"",H˪*#rċ9Zr1hsV"ztd݂acm/9"@ԏ;p|,Mh:
AU<$˱+|P!<"5HψĆ_>%X}+ӥ/̝د[ B0D+z+n{ΦMq1*I^8R*BR/d,Z*VdfpT=W`+\l*E`"I,QO838 :t*8Ȋx$]r/U{<Ⲭ0F~S);"Pd
clgt}TCf ,'\jU\
d\р@_)3{*7ȏ]z,6bѶsׅl{	[ܔ*R k6AM]yxtx>_)|`r~Es}eoAa3TۥAyYpv7DOhl·c|lPBEtt5*ED"D7ٿ)ڠ-V7[#(w<')HxBn{bZ\s؁"JLJg= zu;#8nеCdۮr.&tlu#RT(U5WDܰ ɵU9#As47u2$vM4t*H%<3u;""C/|8G{zPvX|ƇGQ{a酌9XPߵHd9>k3g_ğMAP83*k2R
=@ŗ%FS
{Z4Gktw06^)r0INGQ*2kd3W2|iY%E A=,VY8D8)TMMMT`r5~9V4h7yD3%իhqK/`a5.!=`C1n:M~~bJ,H
äލ]3NaҠ?fnť}.R͙"کDn"{dO{4	Bo+mVwe^_,좛:	r'3xa 77{8,%qF2(")EՊgġ$!ê09dCZׯ::EtbjS	6
Ia@PAn">,P8?#pLʓ79uns.pA-2ODlV47s5qd0#$IpQJs3%w /n82~~?puP31g0IqiEƍ	*<l#~袅eo"sΨ6Jl!mrf7B53!:h
56HՄ<;UDDP-lȯn~Eޗ	-"ܟ(5KD#_a0BSn8S(uwV#,͓ֈ9z뛐CRBWA	HCQN:5;\ }R@ǎvm'b!JYqD] ذm켛]bID+0R>E`J,w5mcvDA1
#K6\f5[+ ۨnev-mY	ޘGd̐X@_R~4N9[}_fg@WQkB`Fz$~~ޔC̗>Ql^`\C]'뿬rNւjD<< vś}
(X
gN)?
ۼ	?k۬I^	OCx>5`U;~@aH-<+Kv |2XJIO;iya{9irDoXw[L]VrDUX 6 O`FOGX,@Û +y5Atqd=rFFnRDE.R4'!D
<%"'n1yϟ)>PI4ԝLv^^>gFl#kX̞oJ	ߓP>MwJ(oީa$)m#꼋3#|	LӔϛct˃:'S5c&Ǡ1b%" 'p@^_̱B|!!g9y-{\Mj㍗ș³D
Ni϶Lɭ-պD(sʄ@ ;[6]*X'TK YdS/'|G \/x;O_ްkku> D`E"Z"x\.~FN7'(E;h25GC"UQǯ<-D"k@6UIN"
|S,>A%^̥LIu, Bz:ޮl8tdoّS QC(2PI|'W$L b&Ns	 =5AARϧڀlc
CcCln.]ό].WSz^'h<
u$Պ];>DWUREL'7	\I*̖nxIW`;Ȍ^R~bn8c baTJb}vO2>q&oFV=x6[f3&
awM=ޅ4Kv5CTU^$JD	={RNq>^wZӮlEбSVM8۠	c=yD9Vژ,UJ$&9KGf2 @jYh#&sIeT~g "XѤ(sȊ>Dr`E|ǄS%Yg*28
94?Zye$bnYa*P;񃁫]$:>bQvk_˵bR^KDTQ3cTp	o,W8N/sSdIyj4]"!{5M'qU7y*+J1X6Y|
$O2$`8RN7,5NdnQ51;{#liMSscø#0
761_{ڍe_|MC~)09,t ,a?6AjCªu>7Ng<nlJYG5K^3.(ƍ6_Өn)Hm&`z"N[n
uqƍZݠ.Vg!eZJ`/ u"Y	Nn٨fRpeۈ3;/uULv+G^XU6uDYT>M`vQ<<p Jr @L4+
E07m<Y`33Ꮘ2/;6/:kd;#woJi:z"P%D{-ۭJ@%Lc+[1
Ma0vPh9Z.iaO4GVT^vx@&t_&d
ce,E%zp{FncT
/u;)}dC]NF{=!Y}s"p$fc"<&w'|2PC~j<q,$zUD'3tX!C\}U\e0%էf>Dj-H|SAy 3]a# ,d0"I-n#b+YDgiKi-P/:&&ǋ}&Sj]*U~L'1L Aנ1*s߄cS]2O +ըs,X&;k*	N*OYlD)9Z,^ӂ/8L(tç~20fT_jHi,ԩ29t7ދ:S] .Q1i-&AVP΢n̙
9%lYF&|t̮%_ϖ8Y8*4~P~@gHnz,*M+`xGE,naHct4U'"c[3V秮V~BD~m"<nPt7ҵ,]cv/X[	V\Ax=,8LaU6dcD\a\12xK~%9A^.nb{b냟\JW'{9'S15ZxI~TP9;E Mb~Nizp{9}4[f6o@67F9ݴVIE@Z?V<h	ZK r2}Ni l?1ëu!4z*Gvڹ<_JުvCIx,.0R'brќgL>F`|-$p#0l@=6Z^2=+j2	%&ܝf]G
ݹf`
.ܔxN86;ja/&.Ѳ+8!A6fn"Y;#C҅u4(~LB,4э8ce2Mdo2`ɷi'9B$/Xv\k8B&p}
ڟ4òʀ:1ur[f	: +w-EGQ	|h	ӗhhY!-"销#"{G\&UB|gWR7-E .TXכ2axi'N ܝ2
K<{kb~EU!pؠHŐX?A'LEr!w@gZG)#bXO8͍)qW.-&W!@7ǯeVڻ<BSjjh<xMx]zEF	qRMAhUsB#b:L9X+*62|/ 3n!/!aeLou-68r&OÔ{j2?Q+ܜ}sH2d!=(2}ˌGǊh8e"_eYh#aLH kE5HovZ>/v-7iVAA3P[dobxll|y&sPp`U ,v*)(FlsZhf})Ih_ڞKw@0s/hm߇.r
v%\K4Jw6PpƩU%TlЕXu2~f@9@gm~wt?A4Iـ1b(wyD)&>- .0YI#<} Wa <Gˍ;h8|blȽv6KCþ!yqV&h$/*ɔF]UFЁ9LV:s)_RJQ7C琤Z)ģBfyD'8L`
n2W(QTeOHfB[]Y>%3|*ګd/<m!!.wΜYWguݼRz^G"}qԷZ:}Lht\LܝLtVa*Ɩ^szi7'(97U&fKW1kI*]jJU]R(Vݛ,Fڡ h^Ѽ!ZStᘊRcNg'@).y|%wnI9A𿕬ԈBan-og<6aED/fFoAڰny͒yCn!W軑LTXYfχ(9OuĴ
"v#.2rffx@hWa[,*J`Y+PuFS=y:&&ꦞz(.-HjCBO-1ĤϱrJ7z{QYzh27LR˗R ^s9V@DdRljk=
SDx	mQɼΗI;	-Xk;$J8%+^y1e_4T[))`E*>lz!,o4|ȉGnjMOD	{,tKj2uK=[Dn2ˤEb}`z ^-7pv$.'Ƈe;KAAWs`:Y'HRV ,
U9~#nKF<EP#y,y"/Y"Fib_pÔ;)q(J^0ka@\4O
u81sr_pz'ږ)x2UDPsn !ǣwQzQݗffۮQTy"׉Y%A,n(rR"d}44" ,fVUh_<ZfMDR.$1A"c9
8M;}>[w渏	Zb~,<o>#l"x2+ h$UPU:y{4۪xr̕!tjq|Y12h4Sh?/~;|M1lYVymV^& Wѭ$3$ܤIQL\7i8*⑈B7<,h/O)HCÅZɼj}- GMTdγuk|gRHS84Vk*72l\ǒӜr(- I;G:RYM0)]Na_:mJy	xG0UɂERIjW`Wߠh4:T<[ӃO{9Q:IJ{HWK&*7C,z
`IW eL۠OHqlдeq<ؑbZ4_gͺI#<x\U`ϣ0XwgBPU| [6gQtɲQz2U(Im$TMJDj)_k"-)%.lĶ4I	R6^P;Y:O5MR)2qD*3C0H_`YX^g̑9e}3<|zX.|ˉsؑQ_@Jy;~dZ#E;KUrqk 2F72_k%?0}-we+l"DJ(Qj>AWbi6kfEִ*OuߌTyVκH	H%u ~ӶB(uZZ`C^oR)ؠʇ̣
ESA$s}ŽY}sAAoߌy~tl
X"'s8OAR?x
#qdڑ,nG@6_뵞A 
[yUdQK0,AbDG߇p?
hT_g$FT4/6ƍʼ? qk\j`]>XKvŃ_C&sوXtvp.
u$'Sa,0=?-Ȅ)vQL&ܷZ(s6slɟPGס{8pYoncq0/
|/h:zƥyz8u|HevdUյPv(	߁+VXr5oT@lRMvt7CSy&a
J`אbg,_6J`cՂ$=r\aq`!/ښS(Cb&g
gDe9C$X迨	mZ}'A):}eUAåc3q]G5*@ūagW]W -&Z	Q$v1@*fU{&Kۭi.>ˌZ癿ףH׬e[4ܣ
3T|S i['{`k@kvia&%%٣+fX+A.lg)~
fסM~C̊
4iI`#ÀTRVG19ttnϳ2,[%;%<i# SiV&"nX%`ԃ~(.ObҠe}iZHϨ	һv˰^raʴX*6V&w ?G>)/Y> "
yxT%)
̨_'qYj^~/ycҨ@T.iRr	.vpQ`fIҚia(,tyDgt¶s1V$A7
No:S}Hf	y+Us/1!	850cTTKf咎mۮ\0)B)ds*MW^abU(OK|z(&׏C@yuvrQ*:R鵲O2{Y?&K!%6L[B9f
~"FshVrPꭟD3~V~躠
8^{r!k$Uf/OTtWW3ݸ4,#@Y\1r_=*Ć\anvuqxCT=jf	*J{CKSQORXec=2o lt8y{缆X	J^P<wZY<ގ(3܃pP]\? Z	5 S$*زI艅a
D~$y1Kw
}_B/)ZE&zpNԓ,E"%SIRYG	- S	o,Cr EOĝ
@ōt6+NԛaPan4=R
ttFƃʍczeCPxl:/Qy,%7|i\
hK\@
:8T0B
Ljԭm޸Kl!@P!D@` 
Rad3
WCP\H=iy 5v+o#ބI~@薝-^4ۍmv1ea
Ӝ5u]r  _*<6O)[xj
5JyjH:_l/H;ilLPʝd|MؾwLZ$Uq(͊B0R;0-TʁmħydxP`&BNK	_LT ޛoܒ
Y0V:py#Z|p-*8N[ҵMRvUD:i0,"%%|#eH'4hayxr<gY6V*]RɉMװ4
t\l8"4i٨"MǒT7
w{B5+(ʘ<8Tӄpqo>C.d8yRNchD]ړȔauI/= wx	ze)ybcxiEE\2+${ɞٶ[gaN}z`K_Ѳi;I5% }lEis,(x0-{Szr#;F7n^%tS hw
L΍d wbn3[pseYLj:1ڋaRVq,z"FTjBd)w(6{฽ 5a]M3g^&L& Fsya[(~Vw@G:qxbYe!G@tqkJpM&!/G$ۂK:"(X6#엫"}pI*L"Sk&nko"Z?Y;ƂuGYD>+'lYV,%fT.LƦJqLXD	˧? w@帖}{b%2A3p`<##~IF&6ExtJ+rIjt[+k݆W6ӡi)菡>eΐ^{7k9M'`%%+T`R[Ќ&P1'4iЕPVmto9+@ 1R=
.Y!Wahym4TQ&Hjt\rVx5waF7e85H1mJL	
.J6')#HN`DNofLH٠0U"!r+2(DLNy=<WcL01'"ipRh*ocMrϖӹ#
'ƂwZ'ϗc6w˰rnŬ&vHLR!OS{u#bi3	("2Q%URB2}q!t, =s?ERY6а
Iįc]`ɭs.sL462ز'`3yJL	v>m>|W 6WÍ]	p;Ksz#4DZbdh,R5ozX
uW	;HV.|?yoSy)E*jj
(ʊ16&8F)uM8$?1n<22;f8m[VZZZ=RDwoMVq{gܵ~~}dJ3%Fs]q
˩y$FhѬ %5diDQVxAMpCi]v_°,<ŵ
H3SOK2+:J*<)2aE7rfZD'd&*A0hh߳m7&CdaTtCAabr`ьP7V;4|2ډ ]:?eg} Őu^uĩQkWEbhƜ0!;%!YVx7>3۰k`V
z?}TX	GD~E,zҩCӥ\'įqNPąe<f_mePCtfRrdE1x,YjƢ,P6Ë
( +JJ̜r۪[$TT"|u[`^]L/)r5J!% R $]95M
Rj-83y\fOdBWN䗀_vߪ#ΐ*2fNJv5ԙH#IJܗO?R9E0LTeF<4CqoX}4FGd~ЃHEsU7xsO\Nӡm5vX'mƒ0M8"wf:x\*a$>Yo1at:
FB)PSB"1lbvdRP,LoML0ϜL<S@88:̌n3DeQb+d3O@;iy~ʩ[m(r:v4oy,avdyPUqbv[,J>Bh	Id?%6yM#N+3.X|oÇ*+1W, $%ʉ{99&W;-8Fv$b2tm'!^i湡thGP\;@pߤbOبaW>v
@\`\_SM:*!'xƧsgkva<72[~Ę_ltQ.@-7	*!3l]pS5q[AsMU^7V9YLwhx7opq$&cγ .{D;KjgO"{0lI(e4.puNa*
jDa틐 s4AauLX	XN^p2P,g֕,@ݻNAtbQ?=ZΝE1=%zER& r6\0/y ,31gi	"u݁l;GmJ$n1 q(qJ@8/|o!j-s'b]|Q(QXi'[y=Ӻ~]y'v֟$'AD9ވ
t}X4B	ׄvy1PF+ۅgEux)#mo	U=45:.\tfџgI8}p2l0,!D)43}oiOeRaw.t/C?fOY)}_CQze,t	FqNJmw`sB <6dcx*MU=l[YLwFcȃb"F2JFk3H:Pq8RP&qqP)Rbl0+]BXe&l&`1[@vMxn=N]_ ?6;ckҝŴ216eO/"ᨚZ4}M>Q1ֵ3^DطlzmPdvQ4LX#&S|:2Z=b-|?2"MۿF> $~Wn!ggq24<~=WFpI=Z"?LFis4xXay
'	kB?S5ZW)^=۾'La	Q
<Gcp
sjcNX<_0~O8`Ά1~=>'p;G
K~q{lObڤte¤J`Ry=K]	M'ֲ	s:yrac,~Xs!;%AQ 
DO}0$}ȴ
: / 	[f߷җI=ladYU/d% %^IlB_>]y4i]/qH\DQGv:HݱGS!F߬O#Ȍ b2gFޯ@eM&ī
[El2"ܪJ)xhU@+	n@^]v
	pdoBm i\c/ފU6 JZ|[g)<nAʴNzBҩ:=Bgc^D#($;YQ7R+9%3 4OQ4fU^.)84sj@e/њmv(Dǜp{&٧ႾJBsOr3)/ ˉC}]uD/y[C$OL_Eڑ5)e,쏡r=]d$-ո/i˷0WL+ϔ-X*їaڅF5aTCBxj5JcG\bE;XMf5"i0L5 ]ah-:dD'ab^*)Ako)H7.TJ5J~qZ~,zWEHZɅf	{-sCKx*P4Ml0V|IYͯ.#`tt⛀
lq>nAiudLZxtX{iꠀ*8I^U/'x	2**PAvz(覝]?Z1p|z)El`v^lޛ89-=֔inmduaT]3y:IovDWPE'7WX> pHFR51dLB6ɜ,vSX#x{T[{~aL ɂʒ=Wե
(7:SzOoNtAc&ܭg0o
mQt4F㰄h
z-8A.rBiY1Lfe-
6`	{7O@K>kO!Ay:1Ԉ$ԬK>SPx&W |n.!WȠ`[HtR|:
uzzEek}ؽۛ<&qUY."Z ${ܗՀohLkj1S$(\p,|߃S`FmsTDG/B5H hIDL0Q"'ᤧYI<JRܶH|d2]&`	U	atbbKwMJ
AktFLU2'^v$ob8c#cF![ԞБ}:6ӡlYzM܇2AD]"Iqd¹߸YvM-6tS]Ʒ/S8N|
IasE2׺L7ܓlSg!D4G!S_Z%`ZW&uT5AC82Cu| 5t h
Cg8o;S$gw =s"?qF"-VEPnT{LoteU=Ţ
{]|POvj}Mg,/ Ot&3T7Pe6v$oi_ɛن@XgNLEbiMBzhy$d-Fă82r@|uq4=T"ӫ?,H1#$}(JC-/`?(/laIѲUC%3	
)a/WB<qKZ(ⰨT]`"|"@}oF
LPNW2A](E=o?ƛ_]╹@iGd{Klsdsn-??Ueb*,C^]pgmDJlN;W4*%
ŀR%TJEI
W7ŭtk^
N.BNnb98W>7EaDPH"zC͋ v"c}39IJ(7>MxЩ*$3	
ҮiC J. Kp0%2vt1,:(J(lp&*FY`MI\tȠ^*neRֱ)S]T+qǏx	ם;W`lR48~zݕr@ +7a)0QaJq+E;MUx+'­h,ʜX%"Z]A1Ӊg)8|;z2<y6b	ړb
8xK5Ird6x4.sX6*(gTWR7qXGb٩]F>"2
B
s0bURFbUf\EMc)/ݺUB_ԭ,{\ >RgODe5i+2 yʌ#ϼ,v'gгldT$bl
kp:*ף*	ƎBmzuܳfŶh(B˯\׵<O_%r=dlȌ5>Ej<IFd(f1g!Hb=\	dei_;!)f`ݶN"s8!]jQFcS5)D!aYS9a/aĊIF&3R.w}~{Z_Vҝ!j;1҂ηHso|yϳ3B+nμ%!H!RWqaƁ *s>y1WfI&aT!><((Q tR_6!SN&'VÍNQU6TOU-DCRҌl Bp\"^`.\͗UiW4BE)byE$Mp`jY
êr]mʧ.ުӍ֢uQF<iBtuVz2YL}/LB1/-ΖJ5b./؞HQV|EIU--@Rpj1XN[4,9-^|Io.5]O%"kkzTEo5o-\[8S; tH<x>'vMxЫd4	uJF[:Y?L71'š}EQ&3ykʡ	[6# 퐜oŔZj3%F_pfzJLސHS
Ȝ3<!Qd'"Wb4c⟰WLX@,q,򌌰&'s`{i6DjJVQi\lyM&$JDP4*)7y"-7,`M@f3il2Y}BNk-K.ȳ],ഇ	n.Y9&Rݐ$RV=K2lEj(
MXvUbGHYql|6IxǃEP\bKd=]@*0NJT&B7;yEOb8=F=?C)'aO!itg` acfh4"`}kj˕Z>/Vb11Ę(]n;omk;ꢧ(@e>6wohP1ad7&(yFRBgYD"Z\9JfQyEL!׉3DXvpj>y\L;,Seu3/76,rm{&Kc$2CsPg$Ln1J-
#^,K=QE<AZxE<wlAی"21/Hahho\L d1GzH;o_e3հ'qF`Kxฆ&0Qf_	ms^LHqDC&wl!	m|'`_\xbG&l$n0yn[Ўdxw2ye;МM'dYXcg܅7ڥ<:Ex H
]P
v4]	%Zu|:EZ ;tK&ZҽZq2q(i}gi1.=ERu!!u1haf
naԠw=΄M79pzaz\<KqЎj$lFPi,TNdB5`DC^7/Ţ|.icY8w3˽BEqGf3l-r a<1[@PFßk`%	>T)xm!%)Q'cVz=q9LG2ZʒkK/RM[PT4]*{%eTب3<q!Z+9dQk 3L8@&rhbȆDsmDL"`MjQ
!j]&v$8aoZbn={o-
bD	|ae
$'qFۇpѦ9hT:E; i'r􃃵Lt&&ܳLtFG\l-ź
#߆E^Tb6"Ä8sg<+#:C6࠮2"giAq:؍$LN@LLɡ~N!hD`157PY4{\ӱEv(V6`~/Q[h!{{/Z$HNE._Δ"l#EŃЅ
~VIOܒPsEfڑLw/52 O{f
.b+")t-k0f4¡z_"qoz~pxI
 
3G~a	aʧǓ+HQjgī$yBkŐһUGcvM\`k9r;	/y{Ņ$zGQXWDp)`-UImfΧTZʊ<c{h[`RLꞖJ9NId_Y
K$N^D\oB`M	Ѣ"HpTVh̸'^"qVN_J:<fd	coS}qayǂZI7tg>),٫̀ȴyjPol6!Ld(BBɘNsfVmP
CL:[1:n\lHn.ӕmkx2+

nDrw{P7 K"y7H
qxAG
/u_TY'@4ؽG
%|?[
W5R&Ae[iK$}
l+xLϲ#P9FT~	y~\{¹;n!#E++#+JGXU{X$#.Pvzk XgsYS=8*O2n90yLg|[\"|S-wVS	k/&$h&t~.)OMQ"j<Q19T*V`Ll=S7SK.#V<~lH:63
m2/ȑDоCepǧPYx&5LӋ{6֡#eđd|X.T%3аDRH*O31![gM߽氢_Y/ł,'FL䅡@*͈˺&[.lleqlV<gnPWGt}
tH 1&b{ԯ]4IKA8ٶd.&A_a\K}jk
]E )01vo"!D.F11qj{
M<wTZ0t֙Wa!KTd^$a֙nP[
݌Ӯfa4	Œbq ~ވ+I]48hTNPzF{M	]ҋT{e2Q"vz#2.ˎXiB(+a9%
$g
UAqI\}-]jڞp	qtʃ"j =di{ar68+cQKլb(Bʒ-:en2,)40P+aoa"eg̸-)PJ-mޯ{7%G]XE:YX͋c;`Vڷ&4<zYTʅd1PfZK
wl^~jvѵ?-l\
 #x,۴cd;TIEs:hہB;ןժXZwP{ʙmxvDSTDQk#.6(:L0%P;z	"d"bl(Z$!|={e4-_,y284.;ع;^;%xf`\KAakvn<34˒dzZB1QC' <pSZt4\hy7,ZmaRXOZT`%:ۡ8f曗=pJ;>xO8$ψt!f4TNDs8OdeejhMtgz1Ized\Й\oAL8["ۼ!\&Q!@jx'C#]yց?92[j%*^_j[-J;h?XUIQĵOIu13VWI&cԽnFur*#bG&ȵ-#/Rmc[7Q1Bp}LDb3Zt-k}f97ng:+1(𔃗$bZoEx6L(s	\Jao01Δʇ_T3Ͽ*;͋ȼпDm~;o2-b9#3*!/tx^Ҩ|
@gj"іB~֗
m:MzXF;aad~MGJ-гǲ'zف3̿bcRgd1/EhÕ<i((dѾU ڞJlQŝbZQl`Y,V*vB54??Ujf:.</5A=n$iT4rzwn
yю@ڃPrL4i{^b'U4hcZ6=KDr:%ەmD3[0/SٱgQYSmJo
OiWV,wJc^ŉtP$^s'%mGL^x}1f˖վ%Jl84f`c[{|g#,熃sqN.U>B{M:WEgB
AOz"gP0M>,.56We;0m^y8	Uh!\[Tn#guY.m;"b;`|ڋK<fC!-d`aqf{|t S$kq&g !s;.},cf"Py&\q9]K9Am`
suϜr,WIeUX5kFXI`bӛ|pBcGVrbheG)ZNj "N0Mm."&5/))bȼm%?Z*֎{::+qyh|+X#fD}9Y١uMq(f{c4~!64cIUT08}]4GuVTo*	xFSV>8=WFntX<E~יmv֑nC,4E(`#wyE/jkZ`
ĐK-!Gk
Afb_@n/h8]	x(C(/aABcFG}X.!ۃ>ؽԕѯ"7"Cw]=FO
/YQDDym	EbT媡2]ġWp&oJA,75LDT
]20?27xkfyUvxSDf(JSs&CBb%RPk(hUN-N_͡<\1Q3}J*C>Q6h!Kݡ]Zu}Vm,ⷯRI5e7a_GVHR
t
&d!&N#@=ټXpE$$Za)D4ףXhͮD'ý2-hdq#ކ.A`ZA&V̝I`KSfndsKMv{FGЈ"&#;5dx[hmT4EqjXL7ی!`([I"A`FsM&=IP'`@fS<dVWdO;ʅ\?hZM	uJ Q<62;4^ڐCEonSճj. z3)(^ އj鸐(gд,
fJ@׺FE*gMnh-POW؄"%z}kiظghtby+J
q@M&=p	Z68r_?5eՌE?pB)[V)ϐ'B"n"޲JjiFβ&ޑZڬ[hW62F!rvat0R<P`x:>YC*/j`
`+âg(]+xp99tfn`[H`QfࢍY2ZcmZ
sĎwNGEfd=8Ui݂+jYb/~_
ō& lt)k㖌`ql` 0$sњl/c<#J]7xr[PLB_	~:zOB}2=ޑruAS`k
H]`P SYł16ڒD);Fj&D\Pm@mKłyxk<sW:M!MC(sf=^,L}5AKR:
ʽ`Ӳ0×ހ&m#4{)<nPdEXTըT'Ur9)Fbz@_0'doG@<ha;|<<N_xr93$)5Yro?GΚQVgYkUk"Z­-1I"}ޑ@ڗo5k2.p-pV"R(ПjYxHq|i9E,*OP#-dyS̵dFJ }_+HB֝o/;gabȜuxZhV(T*!,l2VM?@6J xqEY@c2h%O,&rLZ< yn2Dz%}-qG/Ʊ*M1@IAvvY2ճl4c 8̀)"\ͶЙ:&ڽ a񏝞K~(yYd$a6$=3t,#?(2FZ9D[D&x	vYg<7n.xXE˄nP

Ά%n
Kku"/ܖ\옆xWwSh "QL6h0E|qۑ^	l{.3-OFW{dera;ltQգpCdN8ZPqBFiY'may<WcZ(
HɉWզOnrmy"}JK?$XV4ℎK4nLqM;($AJ71tUExs/`6cAع}-e
 
"rU˞˳Eӓr]{T*)Qg_mM<r(hE:(j
A)08<	XFs\a	PW5lbx<$K9V2p׌hl6WUg/xvK0*]@xo+syZ(h4vOU&i	C$7LS-uA[:A .DK2O
v]|$E	4T\.8FGZ$E bkiE*BnG.u∽;sK6PlVt'H\|uX
xSq(2:6'5	Tm bxv~vck$tGi+ü="A!YVu9T΍Ƕc	"5åy_KL5C8+27.@Ny`bhhXi)3sJ^hgn$ !I_2$+X8'1£)Ljݴ'RqA"{fQGL/iڛ5X.wjQEP?V jdɇ
cA6kjF_,HEA"~)^1xqA 'k2w"*aGYGzfG챕o!Y<-*zkW٬]=Uk!O (i>WܶēZ-%de:WE[)Xz$lkKROytb

GQL0"|P7W&%lؿs ?,!-aꅯ&>Dݑ'aYo.Bv;K<4!W}_$[z+%X0[i#rhkrrJoM8xUmr
ˀS<SYbumhބ,B5Nc
1v2+L`>|hLa` ;H3Y4	tqF5)1V#Y:@ʀStt/Bh1PXx3@aOO_-b.Xz|rςʪ\b
+٬ɱ݉	?3ڪ<S5U\'6kFT fv&#S*D@׈,{vc_Ի$H%*$ZiZpXϗsw4Sjroa3?ROvHPNJ삭e޹\%dd% MjޤÒe#2Y0gÂ9D/Bdz_`\7-}
qXpC(D@b@}p8\^=c.լSe kܛ	R8H*%	EaaNO7
bAEN|moBmN
OX!rX+bFRoM
,ZY t Hy~"/bգ	xpSC\1dvk75fSj{u~kt)PՌ\j?T.n^ u͎Ls~y{.T;rQH
@iXfG69#[RiDqU1IdfR%,gz0'OQI;}zLK7W>-f'KA铉[%"=s|
׶Q*h:zՕY+0$fYR:9jfOZ(&qidw11f춽YE^ƪR4}W' Q3ȸtβW"QcH5au5)|Kæ֊`Blh}D'0H/@ciՑ$0`Ig0fb!hd|ƌ9e	"P`ʧI9]3O/";FSSUGhұ&1]l쯇`90-P
J1Ex/N
I^KRX
A6so|сF>8`x-J96MdAƊA|оhKgپGzk0?V1)3Xc]1|f?NjQQT/02(ɮEX Sz/k~^mu|ѩhX|8Qn(}IWx( 1[1h5GƏznZlq*b/~G$#fǤw՝f<!4o-HRMj+NNy3Xk;_RQ Y'1ZRLBb2͉CݩHdˎᤧ^0Ԟʒ6e8rÓ	WB3*6hl6J-^A7*]}R3vaY'
Wf,P <F@qQ%^[*qwm7&ʛNĶ 	4<ή ZGqOiYFJY.vёNF)E~@Ov
v6^(*mH5łEJ\#j?V3haD7{'WSkE]$@_3'%hy:BڹGAN 2q& %"<n(]#C[Ӥ-$K9";~zޢXlq	{	fdi
f Iޟ)2t"G	6-0ei9<B:zHӚ@Ik@~EU║.F	4Iq
v$mu
&E<-6wo ,L+'(n;+URtVfVJF19`m R,A>_ʳ(>L,WQo]BFv(~#*tRފzIk##~mߐCT}ޱܾYa0둫&t|6L32"CSyQ(hd@ëA\X%w"RqV$v1$Y=P ' <(l<ʺVPcDZJ_Ce%ZЎUН}$F>۷YIIkQ΢B<_HVZ[ ñVgÐYɓ3Kx;kA~X:XJ
H|t ŗ4 \2ofK&iB8i*R@[rQʧJ#IIlъ0M|gx/lg$CWH:ƊV9tyIu)ܷUs0x11YG=9 WUټ,wML nm؛h6Pb0o$DI_!
,B\]T:Lڄw	\,EelC0'ZGp~@T-j]IE=x8N9,4q9Ȣ,uc?QcaĖVIw!EQlfrB0~[lpnELsצVE=|`db;l;L^cn̏Złt+[FGQyC<wvdV6mY9'dIs#p(Fƹ<'ȴ\{<7`L5ŬґW:-
}9UI2\B;b&ʹ
η!-mbloJ/hÍ5sH1q,YFI3rA,oLmBҜ HNM,/<׵/8DTT xr+І\J!=QKmuf;*].'f׻YV-L7
W&pt.ID	2CiNe9oD8[v[؍ýEs
F<&ѝ2`{[ǩhŢQKpFajwG^:*P\0[fy=pİO/ d\@Y di%D@Ee;8&?骟.*4-fSR\uU#l7Ǝ(hwƆgl8|aɞĖ	gQ~q|C7}"+~]7-r69@tƟ^ߤ`>­lZ>05uT+\Xe#~E욗lPiD|3}ʀx,Cm*q$
 >-Ѡ"njkP%T.v:XY;&jSEу6琝-dyݭ(6UfM ^Rj́Kn*2Մ7C]2m	i6C $ӏY
G:(D֞iy%)/ :r]kCk?\K\DP<A2ŕt
)MvL$߄Bu@=VfqXWғx\	 gFO7ʸ 4ʏWXI֛B3LL-z7pc-0&>iˬi3Zȓ":rVfTч`<ߩ屦D:~6ƕD&ʛù)~0gcs
XI3(U"#K]0@<DiIX}m"l,HH?WQi!DŴSFu0Fn*`7o=qi*7˗䣅GSD'V}]v0V-%	Ň3N57
fmIޱ_q v^ʹa1X%[oXh/"|4۹Qdzּq"Gޖ-G&o2}CҝUPԇ*vH8!ReH,HItp?&]0+]E=%#Z3nl8ƃ		|ehǆHh\"G]4ثxqǩMi=]!7AAEe+91q6kFDQ
^DVTPPlEh$P	8F4qo<BcbAn"ډRyJ>&3b) .23Sxa'Sn51l 8*ʡz5=[
y;csKH8EQ'j~OaE7)s7h@ mlcxG0ghKEދ`q}5>i10XJlǼzD4QLρ,b>˝wz}o4'%\fM܉])~l`e`슩 0Ų`ז5797Y*:Ж9\.+o?4bhѢrd֏ khjǘHvHѢ#>dÖ0;>]p0xEƞXE7Wԩ
\9UoEkI*g&aQ^OװH[TY-Vgg*K⭬7aO
	`.ʜZV%D?TC<ӉB`)DVEҋiK:P]N>;m}p>"SQi일,ܤ3$!F4DҝWYUa6Ϫ7!9lcw_k'7Jf|.1On
9mB D\iϝ̙\( Rڂ`=Դ|4L6εY.
AQh,~JNK$LuAY{fe*mva\%qWPyG%DZ7dȫGn/֋6G&x3o&9	30LsB 9<vT9`RdT̈w(4㋠Lpqzub<2'ckeSz7OˏWP;@=E0|b~*$/ӊATA&C6x6 y@0<L8䷦Xhՙxl(*.ݲBBf\0oFAZoNr
Rrh#Xl%CB"gX
Ꝍ3:R&@/}|u('n.)=:`Þ39+kL~N=!w"ӕ5CwB3$%:h8N８HS1:U.p%boMw&v>{#袺$
-ƄUլ:"jQg*LvT*rROlȋ&e3I\Nr{6EWx8^>}*M2[%W+V[v)URE挮1zK|QUfΎb<
6af/s"`$.K]͌3N#8
O!0|j
F
^ч
B_
%5(	TUfk"s!©"+
c8m;>;sW!<	I&@iӃ$fw?|
p '˝-h=o3}*n҅{Lz#p5^C'b'XEy&k!O>PgrU
W&JQF66px&W5SF25VfNY	iD0AI$>CۡcʻQHռ'ZuYFl'e=^+nF^݆&Q-Lt' 
wuj0ǖ${ OMȱĮr=
FO쭳T$F$0ZvQҍ=Runp&d97J'H
2۴%}Pop
JKI~:|؎	kRb鱟٨敄)yd\A%yɈ~@Lyr5JP̱QCK
uysX٩8Y7tgjXK$Da%{2I(>?`9']se	aևb@1ݏi	d
Wd՘7u&uqc`ƶa`*n96-L1,:9o[	_=;MTA7ey,S^dE"7-grKRQ_<c҇2.qS4EFEkw(:oq(VQ[.l1/CuG_؜eH(@zx5oA0 izGdAW>5`&4hf|,uV{YbRtٌaSE"!;9+a"əs'Wi8%PGإ,9`H'0JǕEe Gp-py0|O2D4VZ3
%aCm;l[ly˵wL	v 3#f(_~f̟
i?#lj6+1S=3kr#ʤ/r
"Uw£Z/oJqܩ,!.6ޅS[?Ms;9^:pq«86pxAzL%|KѰaG(g\\
>-.dbxK|ѝDJv{O"
3<35eWc!op_ƕoA,J%3T
S/y8Sܒ2=;*iA

F^,C ǫ x1X%HAT:7I>Eg7s7=RD`39=ɞs@cY։$K
UOѦS5lQ)I5BM}Q_AȳA 򐽋?v
-VĘϥ6|b9h]61a.a"-,ml>Fy{2U%`,bn9_  ʏZL7KN-m8v.$D6`rF]XրR4#_Wgg:JuqzvEådփ?uɬjq]ֽlx*mlL/ޝ-vav?-oS/F%,Wch!fr1^`$q0SEF崩03J|v
b3ǖwl$-5@gmݟ<e|I}G(rX?%
V.4elݝL=e\	q?
:YQ
,8{6Ի15yb
!jGGemΑ8v4+/Kxo;Gh),jMo3ݠZhGd	+'K"$[eBXe~mad97hP6䥫*f"Pwa-IKQW~?ֶ&olmt_bSy|4K 6gfc&<]FIUe9Ƀ$;^GUe
ph9cn*P*aɽ7yZ׌ǓCTb2QI_*:
lxlN]yƳo7)G.aFiɟ#"L<J
XMGN87{%˶sr7`OU|_W
)
~Al
5^FGbTK9/ ϺP+jTbr3r
Z3Lv?HQ%q1sl6%|j尭hk'3mwnZRis1jϧ_{̉6E,5EhTUcx̆Tibb+5j-uZ}"c+D[sO)@ѧ9˾p}wPI\<ٴWnۘƈ[m.H8]sHe$/)S tZe}%2zq2˪ѨnWLh@5%bv)zb3sЊ2,
lSm7D XN0hŀ.VW3%r@HWR.'!Kxكoz;Dgaz.&䧷/nh31>mreL(˔2v
o:*div8ӆx&
BBWv}Al&Me%e%
Cv[zTjdddŉl"q"~x=2#1v{"pN(.]댧~CYuTy۳M;>pxyc9j9`Lq3Re-=cwK䷐e9|+}P`'fظ'j=ԆPۃ^Rw?:aV3*6tߑwy;Qp9X,b5Jtr
HM
d \sOo
]c!-%:$\08.t1H.-ּ`f3:]Q3鹅JhK^ ZG-4qaa HXZd!3;!&#Nv܆\Θz`J<
5PsUN7
kI P<LA&c0^kf<,h8dh}ww(U^|p uϥA9g~!dh؀lٚ<\h!@[Y5' ;xC>I@u89
x,0%T*G%ɖ̚J"Dc6~G+倫|j+`hZiL!gئxjaGM}Z]ypeODeszZOM~x[;p`Xmd]&8N-/pf#6dc?V|f3ۉ(WJm,KyZ!GgN.*=; Zsʕ,De9YZulM		x(E,]G*N~xr8MZ<GøY-	"G
ޠA#'jk3
]fd)0TA tv\##;Z}Fħ^/<Wr'3<F\K
zJORrq/$TWFy'M
֤/YVq%Jֈ1;-Ѵpɨ86b7Y&{!-W'^UC6*L*AJGFȷ*E5+`/
 Dw"i'HPAxo24uX.@Jf"̢O0;uǻB2e8j^F$̴r:W
OGl]o%nn2	JFk#UJאxZ0ĵ4r_JȆj<U%jɼ`j)5dW$_M(YTVSY\fΏva`A$4]@<,_Wki9??-.ݣKdwd=2cPڻm-FYN)Pxi5F;ܴN	`H?
gYÒsk)V|jʎdPh4UVvĜf+4qVq]*)8,\ q',2s۪˱SHRJ$2icTUMO
QJnb>eqg:ͨ3V)H7فSk<#}hѷy׶cX}XKk.fH؇V7Vw9÷Bqi یjei9ԋ;]s:[,h$#3y|[0[8Q!;Yz(iڴd)j *&,aiPJ;'̤w8
EFߵQjWxcծQd"`#f:/:

7fܨe*sXI|jW;fï{$+:zH\`S?o8jX"-C2vzB^5̳`螌VƖFښNvfa@<{b
9Qz]xSq9Ln W5>l:W =c9mG
z+|\o!Qlqd\PQɥ':ʒ:EHZpīԏql1X9v@Yg!7`7mȾljweZԽ}Ra "p
MT#:ƝR1
~c~pQpslr_p1韂r8?O/ޥL=uf|OOOa&)jd~DzWʌ\\:
ѻV]ZvmYpuKW̝`'T{ʟ5z~n&9cjB5KT>bK+7m P,B4].؆o%K$%?HmNƮϜٛ:N}eL=BTWTgBKH^WFi ȗUMs[\Sg- Gfj!9Ix4-PdM~+e:wxgJ3pD76WSE2&65Ymv_WU3X9j x7 JFڗI](_Si-#Kr5-?kcQLɨ
x`9%<pP(?dF'%+3pu $K;5#hOרjF.ae=u] 冨!7PԞPEEr^%2 D(Q
Qp\e%}T5Orze:U>7d.+7S8oƃ/̡
fM^=/<GB~ɰs߯NpIzg,_0i-b'cJ2p{aM%;lA:eOhEjH4?M5[@1^;u6$wiAM]1礴#QϬV٦p`)ܰS=7M*b:L<<|+\wf!f<R!w\eT(  tΓu%93+H-2̺HoIya+&(7W=lA4f/҅u.h`_FWOAzf[[jܛMqJ\ja%d!>YieLk,(wZtsX{T)x1|a.~ly?^J_DoY4QdvP_&wfMx	gAe.3~HdCgCnImyIyz;&_0E1?V|g6~=2 ʣM)R9v!ק@h,3\9VUtS+zd '˒pH++o	өP2\6rD阜rmОCmuG'(:SD9Xs|=>*~1|x"DWi6E?84̣U3o~M+ZA>A?M,M>aq][]
U0jTR$GaVmR<99bAkDޟ?0||Q+$ۋ|phz6VEb)b}q8NIYxRIcb'0qxVa"nRm+n`r5
?Lw
|sh&\@ʵPaI(g}F|f/ςro_(BYFw1v-q^YojHϥzS@c.Y(P!8]ύ1y
".%yVWJO`_3"+`ciͧ-to	\I:"Ŀ">Ff\UʈD	}S{q3pp8%)hW ?@'X`ǉBPqOEfbvO.@j4BwH7XjW^荂?,GYW|r:(jࡧ*3EU4`8-#=xBtœ֞LL=#8sMdcECcZ;o}ˢ1i%XVzǙM8'uCIJ(XEtlk@di 
[EeqGplcA7<z3
,5=L-rSPxޯp^/3d}#[h_,_յ3X	/bX>
|Jwےa~C7OS;Pu;XPa9(fC}]Q==̵ 
0m&I9 D7`cqъ`"
$5X^{@$N0:i4X'vPN錔E͎*ArZPs1|4BB;HѺ	E$%3܈
> &(%n<XϞmn,2̋ugdWbuo.э@͈Ik~u	gdH{YxouvVO-"J8z4){L3o"Iw%{cFH*CV$
e 2cp"Ƈ?(yIgg,8ҫZv|a	@H>O2]?R'R걀o-xtP
A3rM)S/U55yڇkCqz'pl9i<2EA,2<ət>i*/s] L73i/}E攘n\Pwtg)K^p%Dn Q1>sa5J$`JۜЯLadm'"#ܼF ,0oqɦΑpLLӼzb5_BVĚlEsv4,P>m%H$1j0q	xt#Y@
<\|3 EֆMqIg`"
n&Er(`Xǅ충'ּ=.eGk`T_<KO/	9Ŗⳋ9w+{pהJW5a{&2'@b4:0m3E970gY?t4p
zh#|cSF҃1gu>ᶌRt\lwI-Rk^H
躍K+ө+p#v%ɲm!WGA]	 0GෑZ,|G
gY_L02AZ/a8U/"{hF(y03L
&QnL#( /d'F8B94wvp]/<ҠY4`CH-'X2TVۇ{ `FF1u_̲l,;}(+÷zӨ;.(INHyC&Doqt4KPh+x8
;UMPoF%pCE(?\ex@:a!~cKQ@]ikTp!6<o2yKs "\v}2R?.[lXe<81$x_܏i}7@ );E&A_mlLa5=niQG-,%|	""
:&BRBe 1wj[`э:o(Kťlu& &*NByq
'gW3ИyzxESTۛ]#z-b'ob ^H׋,C~ c|w3!h-PLw`PoB1~Tʑ
~h,/-j]!jWJxd͒.P6
<,g|Aō;eP
dXċtم	P;O~ϙ&PCS8OGٳ<UX*6M'%Aj ki+s:҉ Yn1%GR
([2ԝ*$2+2eͼ]"v$Lx"]vT9тbyb~+ nv'cX0ؘߨ\b"6+g2؏;g'F6DT)}WE
p U3];RT
ThFCɝi,Џ2DP\)"/k VtxoNEfp%2L/%ݣ49G~,}P˭b+{_X0M8tlvlWtpd<_qs):L^Ď5xS7TmFhV=0X:
5 Gc󚿱-t())*|S@I(~I[2G,أ52/5v&i{)IQ_xRmqFf:xV[z"&g 0)d3<*'ЩuS;(9X)Thyԃ@pӲⲄ"NS+d m2?7}26S"b@ͨaZ$亯C&Uށ#i
X8Ũ/'FO`WMWy'eD:~jn$g(`2Tԥ.2ѝO 0:=xcP4L
E)[b%V[^Xc=}3"Y%j2kQVR
?HJ>0l4f\91+Ɗ~Mǔau-,NQls59HdNLis:j?Nd7}he򹉙j`|hb-j.\> +9wl.8I5Te\T峿x
,</)ȱ,|٠s1qHҪ .G`bnRjŸ2dhfoSkmlNY΂omy$X-#	teiz#KXЯťdHX Łܽ
T|*;ZJn^eV DpMXQ	*
.|8oHrkP։8v
.C.a4H`/xxGM6$N&g>V%#8$2=^p=@p%.,UPWZiwBiȵ{> 1_KrL/R;IPl<iOA3ad޲[X2EMk c~
Gܨvgu<lg;?nq
CKg,6!8oz*}VíCM E
~b^e-Eΰ8$6LK؂!ben	EΕZn/whb&~۸_:°F W(0`W'$0Ya^^yĔ=EYIai.fc"|+mNZ\,Ԧ,ݔqH\w
P,
q_퍿ۡ]+7BzZud"Zaɧ,~8uI,Gks8|-YSaA%q N\r^nd)e{/lsM #3219bԱRnE&r_3g0qjZ@ #ƛu׹1ɮM*r[xĆ*F2Dk)*ڕ+§zQW;E2̸",8]>rV/꽍;@i-&֡?R^BdZswe=(f蘌+3
4/meSDfjгPL2HߝU,j`)L&e5H
S +"!2S6]pwx!`A=i,1mƗ.ZfaIom.l2]#q[9M凜p*Ix/Z>?b,ӑ'g2BEyy<*9H+fW;Kh<K)&TZb:{Dڌqw7x$EX۴3l=!D
yjB4;N9H<H
+Uz'MwxБrkNc2PYSf>EJXM[(hbzyF,T1J^xFWo_n0vӺMz-h@=>W`b=n$"E@V&q"y<rO"QT
Ra	R/&MJx@p`Vp-5rtN?G.lVAQ8%)2/*tm'(VޓZh
F2EYyx2:+>Z&.@n.
aB+F-F#qdG4S7#݂e_}[
|,8$ЌcTq/GwP%aZRErp{	6/+uImj9eHќgk;
vr!]yHc-PD-uNj4WlB<WLXU"~ס~˧DJl:""=1!=>2H#xF\y	LJQL@C9dT7 OqF\Yb$44'\ř/'3Df
g nUFӕi1/[;Y)gY!9۶OΥ*SqU""iqtS\䣏7aGiIU<X(|_Iqp"LLj /^iXE1So1Nb^uL;y|*ىF`SV$Lޝ5Eu]¯N[5B%
Qi'Вy"sƄ'5v?G?dQ>)u%->/[C%WllC QX)c"@g͠mR4)~@m7
-Z4 K(*_6
ΞL5&,Q
6G`dv:pD;-q&O(T	EEH[Prmq:̇8`<+eWS|?.|+mrd)l_A6@XXHE
*̦65ȍqͯF[%$zp
I4srBfݤМ'ۗ?Ź$FHt
)Y]i)\8u*	Ap#EhAPP]jNǲp;M؆8J(`1Wff:4#RȈ#]eQt#ZmCB{ ,UjC &D|uόXعe%;]#݀ؿ|'WQJKd}2_5(27S{6TgAݧ[0]dc,9FIMd(+#[WXd0?jvA=4Qq<fs	Upuodc3oNK<tȉӲ"̓
Xpt@ڭ_rgt	N/pE9(zWG;XuN'11X2.Uy
|Bu'Lb*m` =0r/׀qYcJDBO͗d?"`4R~-&E>ɍQo,FDtRyla@
$LB+8Z6,аdl+!쵃,y8;P;7lPB&A:/4s4a*f|ؔ+JbH٥DCV]q}}xbP*_C(<N*o~`qH䎏^4@
sO_F{Fy_UӲZˀWn&=,=;+xLuj}`m_5ǄOȀ;)jx}*e随|R(B	;1m^'HF&h	&:s
Ȅyc,UQˊ⛵oNgn	}兏(eM :poUěT4U,돀}zK}. !uAQQGe<+y)Wɫe0HxcBYe\ NY"}MHG1]GgXt-:ÇCG D,wybr^&yWy_.b?idQfg@pJ#/]Кd,P"XtVJ%Y!gB#N#{7xGi^F):WYd:˲Qt0ɲ6HM1EiMUUdFRhxNͪT7v!^TktcVL6E;&B5QzQLgr_u|*63|"V&S9_$nV$,DY	3ڡH7Fg)<*'[Sd)r^&
w&R-A^8G<C}?LjCEiTJ
Lp27晝5qVJ7&H koN//NȢ&}3-`:.X
t矸a'tϹ9uݶ@Wf3	?tߛgC[$U
̆8T3Kܘ)c_f<M̢VJ0"),(flAE
0/Fewŕx] 5j(_~pꛈ2
M-ؠeXa\%?"'[зzʣ<E1=FțZzAY*_4,SO~HoВIe=qVݛTɒα1Qڻ
g V2|йTd!4{3,9@:T,25
r1i"P*G
29ʷ|ЉgnF{)}7"muJHN_eEgmFTTW>WA`enHxbP*x *	NfK5퐕2߾-k-y!/lK%q_YmYޙwv|%Ga)$eEUup/g))$5}7H>'b**=ʹXcuvزzf#7n]ex0
>'lȮYׁo)._U()yKMMT"ʿKYe6o5	ew$Rd'[!}GV]4(Q7 :}
zC+jyһФ>xE^UN?S!Aԃ]4L*4
B+B?ͬjl}L~ćfhcNxaMO0u^"BNEyD5ItLF́M(&INT>B9R2L%	w {0?6o 8s~m)i..ʄ~f24n.D٦j7KN綠jTᔮx>is <Y)TO}eUn?[EA05ÎT:ӵ&HJUqGidѵWƁ1uʕ0mv>VդtۻhqW(b:mnķb
"#0",`q9+7F_{[ ((VcM64Uǐ2y䂁^QG OU;ϸ|/u*~(
5x#b^FC4N+&`	øyCyƹ$Q G![Pn)\.7#:)VeȊ|"b
QO.>I;gaF$)fJ>+$yA JN>xs_*ҏ-xx}Tj]4	Aب^총 4hO44ݕvJW+m0m>[(zλ6>r,e&Dp鲉P՛qh3iG9s
}qcj,o;Leor20vȸOA ޢXChW#n,X@~"GdzEp#nzFGb1Et8B9oX@Huؼ_na<MW]ϋ$|=3E4Ed!*ͦC^r%B;E0>"?`GcskݜD7*ؑQNp8bio[U(L|^dEQ-饹)l
K':q?otb}jzLwPiDe.7~WAUAb !)kĥ#]C{v=|L6H٘F+J	:^M*
x"yaµft4scwے AHzMqULVPJ-jp 4#1U&XX9_yj1<)cm3hSM{*.4XmupH-#QB6XW	SxQ-co95C8y:2 r;bi˫T(&+עE& HZe$69|LA=
!r(p7=<IA__~g6肁e TQ/egO`%` rSQ9HqQN%{nx"Us9\6ڇNrh&mzrGa!AX	,e5S<Z2/^OJ21!P ⹝gٳp|տ`䎆fqco8n1'q|&o̱!=Ryi}Z+0+8u[|&<dHqoyg6ȭ JV03:%R(Qn,34XB(lE gAR9ڵ]Ci2;Nӕ9@zQ;e#`/댍e٫; ʠ.B!X&5
kq.wEPIlVX&T]H*\.Xs5S-FBi	XųXa,o.mG޺=u'j_L/1жx'}p/X9U %),f:hFA5$Ycrhd{Y}x5⦖ߟ) zMkL&<J2sҶQ%xl*{3EI)'{,mn?^E)f=8`".`3O%yy}ڬs+
NMx -./kքAK)%HNo"(踂@6)$3ᏸ@ꇋp(e$ROLOaP :͎giLHb;,o}NK1d&rg?aՓQOLRFg%ԥZ-ρz5{mB[̢"S:٘C.;pDf>-îen,5*
v~` %$>=6E ޥU]_0$	294gSDimⰠI$gVKwiCr!3ZLZ*VA.$BKF
qA7څv MF^
t=nJFʵk!;(=㑂~``	sѣuz3l&aBqǝ/I\FKDG^F)(ZE<Č`X S?Krs1]tŕ	ɁE-4GFSDň{gi#E@"Ăkэ}Wkar蠳zDdz]SYeKҷ'fpxm;i,҇XD0!V	qUN<wA(<| wFYLNPC,*S\F
IիAn>E:+o*F^E,93D0amz`mlrjȡٺ.7soCP{j@	hQT;^@MeBQ#ʁ['uưZpY;ᑃ\pDNg)ZnpzhFe,0fİӣUG!AXEZx2B&6ldY<OQCbëlQSi(3*NÖUkvf1>?/2"QFyyT]f#j1'ăV}dPSJ.oE
ۉˉ<WEJc*q-7-|,Kj6;O_WC@1Xѻ^B/flo
RDIupMif
`4UmKZ倣+8݄w*&+;-yP ŉcѫL[!YWM`d
YS+`K3-#6_{|
tPHTnWпW^("
$2R #m_WzV%0%2,Ѯ8>FFsfe{9X:o+H0B݉TR/Jaeb䲄0be8epo0ap|RE
e>	V|Ccs&e2P\oKGgpI5.RQ9Yxx!,
cA5"%xMç$8ȕ sm$Ef;(7+Ú-avgeJ*eRwYnqY0ANKlq؅pgeEhvJ|5V%Lo`JU9#A=Ơ\E
ڞ%v,F*q(8D[yhZA3R*fꪦ%-0Q۽;c=H^uMtYӄ.qɆH)Β-.+p	@7*۷ͨ-p>DŪ1C֝¯fF>XTK̉܍BZu3CM5-8y+D,f3e,XpҶl2&A@H['dP<}Y
C2qϡYIxoRص-J&e'T!iC%ീ>l4$t<\Q\|g$q،^	J18@3WsZ8@d*GjՊ C|^Bo㗥K2JoҫEljV}[/좞upC%8<x.$N[k6
Ë/1-+{)<
,-(opC%~vSY	BkȒ/D+w0KjM".Rz7Ⱥb5~)cy>C.naM"wc>pp
Sp'Q$`~^UVq_4y.HpuCgAU:Ѵw͑Zt Zv(u_2CK#4}dEԴaE@Zfba(lNNB0{>Xe2<+\80޻uiUQxG;ц3ڄã+70U^K*^LCҜM7kBd)7j:Oh+5a.\N'>S:<D*P&\p=k7e^$HSJ+].cCWY,nLtӏ2.elgc;azUt(ȁ(2@($yJuU21bl'uk
Da'*EMYV~|MiG[]tk`BnݯzZ}nK*hqyIU1ktwEP\mr|؇HrЖ<r587,8J{TroȜ6>Ë-dx:=o1)|DcFօLk点^	tyCIgȳ333U+chުB9i;o&S^4N{Y
@)={t.F$lѐFOdd/9 <3mZ	IImd|kMAxoWCGy(m-ы?Mc;S(WI\quI|o@e70i 
$j#j|p˗2aǗGl>L{V,㐕QB &ZE!?;byɤ΀wf=vdmC
Í:#4z؈L8=7_DNٲMtDCqwc3c֗* mgeZBPj-cT]CLtC<%*2榅cHNmky 	&~#XD8ab0:E%+5tS?$#]Mޤd^b$9x]р(e聍`ǂsos<f'+gvؒÄzzGA}&NZb]Z[!		$^xK\e;6Pt A޸s hXԽ$x
vI8rȳ*I9)j295,6
diPV:C_)rn#CEl87CD	XƯ2m: 'xԃ
:e'}d`Ndjgg6_&
,.3!^["cuyD*+W8
cSZFA KG[͋V)up3tQ9p9:(!3y2+E^Ä%J$6,VȊWqGo`Up-,,9fR(^c1,t<⭜OEV#	8uYV@PˑteezFZ02 xȶQ$c$UP,'|:m34~
uDz74K.`zfG92gF+J鄜3\SWGS87CWl;rR 	%4hMctsdAt{5baxl86&97mָvc4Hx<0
vA@[Ae8لJƐ~e!#tgWo-H*OB k$?Ii,Z9XLK}ZdqKFz6wɾoC{hqVSZA߀Ze( Ram<
+c-1L
NrN 
Qmʘf9KqtK@3i?&7n"cHL
yDXVD4 F>%$we$:b,$OnuثLLR.s*ueDtiB g1ׅd_l>/]d[s-|gbaiK*9!WAevoęy|iއɅˑ\dg[#ñZ0HFbvs(5
:JuGg3+T
e4LxGf,-
<ŗkL74.!J+hīW^,nF̤IYD҆9<(te]]Q.+giavg~*brE{Ne#MF<~ZQKfѺm\\=jh.3ӵT4y^ГS/*'ptr⃓ l.$A$~W߽%i_uB]:KQ#p͐Iv<T&³,@0O쇁Wy(3,^b>}hՐ
=P,CK_(1J+%W08`!+.C
Φ#1UfY Yɸl,
7_PbL>cMQٕdAס|HaB(zb|
c'f:[XzqDBtlPNÎ>2q'PY2fEs,K0Vl6,(1ݔ(w-/ŠZp2P&1l @<W
7~%h
mRV-&cIX؈%&KIH2G29-Igb@Ҹ	=)~KC^X[v/>؇`G։fVN#K$,QOH{0ho*ZN;6M])cv08f\֤=bsdN?q+[!<1F0/|ZAW30xNNG%%UFg&) K}݋WOjqm6\157`-賠n<b	O(S6|##DJT~:(S²Z@/]|cڅK]SlSüXrniE
xkGnc/f5;qÿx2;:)&s!}g+<i2eWhf 
b#u<o+ۣvsR[UB- HWO)u^2z5 "Â{tD~U$pQXXhթᮖwSOVKoǐʈCpuɕMPfMI
9"Dgr* ʥ(@	X܊G23<{^OA6Pe0v#3*HP"ȂqP4*uLpz5D3NW)
5`+()^4i7墮x/,n+P*xKC ~b*m?+$Kq'+;rx>}Z65Y
]%P"F)^Nl:]G?Ϙ),H(mLiҕ(2:d42NRxxTS5l*j
}ֻs"eq l=bTw^hV0tbK$j批 (JՊנ sw_4bzH\"4jNURe"	o)P&ȽV1G!}$O
B&G} BWlSS{;+jS`7mlҜbh&A.xR</pf64n1	l©If{]
+
-G܃kQtԛ#]HqQw
	Te Ax6>
DvF#"nHd3m:M>@AMA \LK|۴1A|qߨa4kHzr6$E TTܥeU <_&2q{Cv)d@y:ʦ]l":i)S?l_
?	
^(bJ5i#5YqaxIVdtNEcߵ8+Yb!RYUpE!
+;t Q*^~&D?w|>Bǧ)6}(]!?vť8JC @$]4jQYN1&!(/B#kѩm"^H+zpd#A;Ճr0]Й[LK\aRtQ6i8]>bz#LY_([ߚDM uRW$j_+͖|otGв&~Uѓ;~Rա
2r|2ڮOQJȇ}3l[1<NElӐK
"FF?8Ϧh©ZPڼbB衸e5>tz\*q$bas&ʖڰ@*nS4&׎8E2,!}w*ߡ$GdQʗESB_%c`.g$ ['N2/Ol󣲰ؽAUPt$wm>_lRns5pbXYҥOA2~#}#gR# 93#SCsC?xLq5\2|?C<J&e@	ʞo8t穃m^>F(2s	ʣvO6\U:d[h
yien!P2"H\Bf ~:
3u׼1  }Yl;m֙M/
;8Q!LETJrVePvHca^ւ'(#YdֶQ:B%`hىPЀpPtN +3#B4LvYyلMol"
s^<Yպ`
mB$cVb!(kѣ,{Ԥ8o3 r`
ʠ|5ZL9YmlL)묪qCj%L㝩eM2)˴N{`#U*<ҙo{^aX@-QhANjRcD1):ߎܱ],d
#+SrK	|arۤ>ZWaQTp3+(ˌp[,PۉBPzd%rkY+f*|fD^܊1a4x"_LkJ9B~Ʀ37aۘ^3O[i\
]L6B0Uܙ#+HnQɺ?ͼڞycjI=gN@F7f \pj/v	>_ gqg#UAawT2:62[⡎av
hNL ɥZꫥ q>׊MP2fCJa2E3h+l0^dꈀUz͕mW'B3$BE%FyQ9)2`l @\$򶆨80>Taטhu$GW5Z>q;8bV@sAC4`UxŻvhJeS8.
ٿڀh0.8L~BH.d;
)>7fGD%AM(DdÆ-+巣g4@'Du 5c&B3`Kay/<?m/]$q"!1**V~0	<+2}
ѣ;p!-)(l6ߍ~K)Ë;a3ǿ]
dDP`e'UU}K^#Oq8^,#OҔ6ے4"A~Z|A'(Bڽ^r Ek=Rq7՛=3#B-m9]ex>doᤙ*ݎP=#bu* P3X5z8ś,WK8 c2N\[L6T`G*wͣ46'	Evt]UJ|rGy(u@+DC<잝 R"fEgx"CTM	|WCEBSu_ Gꁰ X=7eU9΄ ťS
srD fra H+\x|6\0OzN8)2VN6dH[hpNk`+p!$+Ǣ!^n}v..rIFI&Dm>HYE.Vhrk{;]D
VҸO|fbxhd3VvH
FphDI>XJcNfJ`$Î-`O,PS]<&*#	lmDNL!|RyR2RA3
&q&B#,35q-JM2
[!;
^~iT͈FqM"- 2?Ul2ce(+>k.țx"27w`LTe=WFb)*Xe@q\jN&ye<\+*#AN
~ٗ	ob(b2kS-m@Ӳ>9T:\✗n2ϸ҄N%6HYl5YY9b5aqz/Fxt
Њ^ebWa{&/	ǉ!wn0'6Xr/`;I6W1T*(٭ o%u,ply</&S&2cH*(*3Pbs˴Ke?"݉T>dDrWr˼lz`6C\^'khm[.r[Q/_2rB!vP#r#e*y/-"XTƗ#(:LW.拞:*5lvCn<#{	(#״nn){'3@8Jv^&-+l+%u藖V
HibCy #a89*xdu1>'kd2_<Sə
߲	uљxUjNF6BnCù^jSyfwY?yZh2L&=FEOԞ$)O$7S2~&eL,f#zXeBlLmQ|ŷ9Encq{+OBÛ%bCBpKZr2iy~:99zH	K:FzFqFVB+Ecr,)pLsQKc(GЫf
3'#]Dn0)̋Rw{(mAY(]XWǑiG?i)s1Xme
ZƜ0D|?c3m	Bxn||3C
~GT&Q@PcUGLĕl+H0KqeTƣ`𯓍c`ꩡŦAeO'J9gw!Scؓ1x·E\$w徶S"qbܳ|H <F^,&Ayw=T%OʲR<n|Wl4FrX@]7P*i.'ݨqW}B*OVl K&UA/,ȠhDO|s@:;ƱXq'<|>GӉ˹2[R 0#K#NAb$ ,p"i(NWe9 ZFUfìЄ
CH5ظESRd*]͊Y]C!AIvG1v0_Tt۹2wRA/(FJC穔a)	bz&#zJS)ڏzuX{)ol4% f@DR߷EKL'$|N$r*=/>Ktܑ,!VpIpmΨj`-:m6,C٠=je_"z͂e|0P^ѹ+ 
B%r(&{h_艵Sʬ&\;u䑫6xy0బ!gRf\lRї:7l/916@ff
%0bہ	;b;=L5;MIfKFIʏc4T9ZISɌ.V+ rIxճ:*o ,*Y,<nNb)uDj7mI``]eqA"HtO.CskL2I6g~'0,e3tW/!/
:u
MAE>TU1	*anɌ @8eRϪހ="É ;r}/XOVī`Fe;R]ӓBq]*aG6eESʵ8|#+#3*XI,Q+e	2h8r]4c0ҔSwI<ojT8{&'2;pD~uCazI*L= U<C`HsK]9ԦaADFm,]4CZ 4w}VKYM!֩,`Z+3^-3ݣl~wdJp~x/UXw}䙩~dTqژ=֌:zIӪ=-Gp=vݹPbX[d8*a'S8HřM!UPXC?QFT4tG4HnTO<i١^.Dqś;o3"SL`nE^E)ԯ8EWV_Z"$[2s^ +y|Cؘ_88a`6^見6qhW;7R,UcdwgkF䍋 ӛ|7Rkh=?S^ 1	$D|R#ʫh򛨙Ux1		?/GmR'VވАSKz46O	̆pXgUe_/zYTL"^m pP6&s#W}L?֨e.Us ^ֆ%<6G7HKY[3I. ?)Fp
'K>+N
99ETp/l[t*OxotI
=.TXрcv|ݲGTg/"Tg>A!9[)kkȴXJ@
ch&ݵ΀)#ʉ
#X|AFB% zǕ|V,f^(CKrq<VeriĴ46ğlJ.7].hgo9Zc+/!0QRLeʧQLjԼ+{bK  bY)֪F~+̺=ضK.-J2HI,Ĵ#gLa@JRg%x+VQ8c4UԱklqˌTTGEbzM N7bZ'Pdn=#KRlV9LK
4qOEΗ2h& 5iOr(9/Hӡf&Q;HD#Dqќ!ƢNERmoR+"7`#a%#83eI{?E܏ኩ{S#h<J@/+n3wzNdX! B8͸c8
)59mH0@(
AoZJ|)	
q;*|
EpLMgnp-@?`ąN!ug+\ЖU<M$9bZl`ߴP
{EEsyG\u1;CT7J9@<q3QEUTH^bųtns1=E'=>1Hᙇ(}#oJM*?3U}"vN5nԻ~sʽ3
mp75t:H
~g5Z N!p=IXIm<?Qdr#&<u_TdzI.C'/8)\~F3$6TO}tlaZf08rMf!#Я9N&WN,/9L[H,A:Q0Y:ڥ%ۘ 'JJPf(TEr  /;O~ǣ̌Jи#*+PAiXawӊ\$ƶK䰒=Sz:ޤn8g̙%ͫ%(Bvr}?ƛC𣞈OĔ1ؔʺ;KVhAD,lZk&f$k˓<:W!/A.d,f&ڡSLöe~iI5Y_<</?bsڔ_4dVƃG؊Z$ShOi|@&p|,NL
l'L4̡KjXWU.=l&
PMKnf4ڑAM;}{a;l*Ϳ7VgZa
xʠ".ܘ2P8bb+N5EGyDE\(mގr$\080.khF6 M,;cρC RͪƭBO
nz*`D9j\6>6D6'߷h:0/Qj0cK&saW/
0L8:-LB'[6bo4e8ܾւO+ܔ=E}[(u1dt66w-7&l[S
!R-R)Gz`ğ73=;𰗦QGE.>ŽvٕAcb2HI+H^U;\YU&
A<"+i
Ҳ	kLf2Pڪ5˥\2c^
9du|cC<dn+HSXX<\goĴ5R cUM!^> ;i扪J)06cr&l`GḦܙջZ_dsqz"6?[P5.HQXjakdǓ)[`Im!3tCˠRc^fSNMQlx;QS∖CQ͚<GJĉҩxD:$\°\uh:Zj&^kgx2Jě'}"&kq:Éz@{^h.h?]	
QmlSIIKNǭeHX[j։I]Dܳh	܌ՑMiw :͜%몄*N0uǴ'`GjwFYt!i%WXX閲щEؑP-spl2ʻp"!(
-͒*zu\֏Dv.Fgٖg19
Ɩ6R6fz11ȽDt蓷DLşQ!hľR^F7&`E 
+hL[411+'ԃ̬GT+Ruwg;BðOit&2T#Cp`fV
E6v:%/p!IG <|ˍtIȨ:uw'2M$֙h'wGՙc7*e81z^@(Y"e$ZH*,4u-c]2)pP3/V'yu4W:oNEY0;,1R-2OI\b۽;bdwf
anJӌwFSXo=I2ބlO2G:f ަ1vslXɏfh:eOݽ/ő	fQ&ޗ⓭qf/Sрލ?4;I-Y]\|e0X)& kaFcY-Pf4T!u^v%%j{c;P<]BEMAG+t9i'^Tgj!2eݞ#gaP)X߅DVƮz$v|%z`N+܁ϱn:1=jTYjLos3^4>&ԯn_v{VdMYlwX[DttMNfEt$v ن$)*mU%-,+WO!mt`0PKa{ژ=waluw/5dE&.Fd*Dc`ۂJbqz'/^v!j3VēI<5k1K+2V 56ت;|ٛڞ]_k$tGv||5Y]>C$RZ

I	ߒ vxWۗM@)Rkm<~%͝f
*x6Ӽ:
~1ȧ@,CUr
:6Zw
Fx.83؇ź@8:_x).\R@:[&}6Kmr3[淮uSl9tk|e}I$ڤwsl)h8T<UމQ0aػQ/{H˓Ė!8jn1vKtZ W=t@PM =7㋠r	_!Jh37D ˲NH}
8MJ^NϞcWWRnta:	hvd0F&i`/B
τuNKMM!xpOxXN$pns*iI;ۓѨ_+3h%s7k;йNKV@N%Q)Ϣ-$2هT@@Fl;`|ܰḤIi9ʔ,)=ice2R UQg%G$+a_>H'tW-Kp
Zux,,qY))5ڋW,Apd(`ǀZuYt*XLDg#6Wr%^0|?<rDdC
vlR6dL4۱?j&-Q2Ј'f2̬w5D0;.0lZoacIQ&
_$N9$Kj~chƦXˮUP,^n~saDƮrEyE4+Y	AIOV\]BvHՃ"S\Y~CHV/pWirhݚY {\8K^iǖmz9_:3/˲އC^d-&CtfcH-h
o=w3/Rqehn*K`R$ d
36<3U{&5dB}օJGc9`m<BJM֖l.>,7^!'`
70?QT4~*>wPƇ|+ڣ <po1adUayԦ%B؂NcWPС<q;3.@k6 k:Rj])x+I ַbpj0/@
RWɸ6*`5 u,>X q/vUpߔE/&+_*mE{&-S _-СPMP>'$@Ol{)T*(Dġ>ЊW#[T|2*71KHEمنW
E#JB1XUMj
gzjљcu>Aoj:dEh<TjqdM`<<}h'"Dl(&GƟ/j΋>s%]DG.վӘ%QC??Cg)<eʴoR;DFESJItA԰t33j9Қ02z-j3#`TEL24;*&O&ӵ
Т(A|A/3 ofbp#~d992b+OE!N"Tܼċ&^BL+fǐ-QT.o(j(6lXHXi^:HaNzy;\!dr#Z}Ay0R1,3L-k lZ|*l>DEVP		8RM]r
  a ]eS' 9-
-%
dAݨc#=F=J94,JlȱL۳(DO4SzиmFe[e!%^>13CHی9̔D<M1܌BK'0p\LǊ~y)у>T&@
_c,#fl|k¶µ>UБr!M&/Ht.*= rIq-c`LO%RU[ۃp-\ Ѭl+Q5?[z
#Oٞ+lncH@.YmT߄J|x C3V bSBlͳ,!>\㴸;UYVNwYIxVqgEzx|nLilB<G/<v=Z.
~9^'pjIHѫ]d	e7eSKqaٮ!+m]0fhKaL~E1_.{r{3eǐLuVPf2;ʌÌZeqLZůor2&,g]*beFпfXGZ<$0&I%E"fkV%+kYK2{$Vv5k
E8$M"kbVN
3Z#/(;)p
,+
Be-홃1fYbY,36|"^*:d`(^@^	
Wl H1Xh:bFX /wK|N AAw
۝lTuD>9.SwkyU2BoRn*]g5i*ieG9Qd`!2옿&#]J~04\9'F1AQu&	b9ATt(;yaiJJ\j)_gAӇ7(Mҍ$3vlxfXFl|qwCʮOo9nKl
]yYiҔ+F!`([lpjk>_T.uP:uS4y*"ۂ>gW`4?NLofSJi3|kFye2NnrױGH<0,
%Na-2Ȼ&0sMs&"1<Wjt
t<$KNWLH=34 FH˞+2PD|ar6txI[]b
.̬B1wX9I!+ht"v$~9mp
o5IFnp?2ȳR~raC<S]g1jhyO7%)cc"'7@ wO* qHS4x@˴0]l]7G(
U1ڞ|#*m(<uEAlqW2cY3a:(N7b5leT\?mԫg%m~x*2j%+G/V$MB3_H5g=/37uM{P-3ga`v
+@UޟH$d"khQ
$4>be;"@A
2:3jRw,#$K*B#kt"VWy`=BFiqe`h13S;M=^
Rj0Jh+~3adK7>"@ܾ05F4יz>W]ugs:u+E 'ZF; 
mP

zl*~iˊ^Q:eYf?aq*xحdH=?񲄖X:h8[ 	"ϛTǡbAyC~%xPхg(jLgr򛲠Lf*k'p}QioRY]a8lO 0yW*G/Rx/3x"");FI'b#[ L.
b_bu=Sˑ~xJ=CLavDDd '(8ϴ?#SWZO$
%"xք_Nm(
_y+Ak?,V6ƸN{&DƶSzIT#v<:5BW(s/H/! %ozfu8v,vsKrlk$>AICa.сYD@p{0Ej:hCD]>
ѧ,T4n)=GL,2Ec.	=tUE$\a]#ʜX]g?)#Rx%9q~}UWjEbP$ǆ|)ou	ٞA6@򲭱 > fjm䌤fkɌ9ceLmY1
M	nګjHLÄ-ag&HdS?Kl*H(gMRN/^l&C(ԟibì:*3H~_aۛm|2
`nl͉iL%G*?1e8tgEFtz0.Zm)0mk@M%6gmv{)zEg.@&rL]fݙE<P!SeyqU2&.A^vtRMHdUm2ey5H pyxi@Æ0%0Ⱦɪ~N(I-VƢ9|:a@u2|%wQQxLsܕ}O4\Nd2.['B:PLEIp+lzde[y4L#WD:c!}'Xb[Q+'q3Õid9/ʊv=,u6;4&#pmK+N0qfFEFAH0P/&Azټ5p`Ϯ\I.a)i,@AгxL
${ռ-Xi
\''4OqfbX
|g)ގqpȈbkVLaj-\>5'R)`aO7ڈP-4|1tpOo3
4 uBXn:-#I$U~DweE76iM6ѡdϦ ețFV~lfަSLσ*bE}x4<]T(eziXg*(]nC2ygZlpReh,tFg۴Q6:4NmFofNsj ՄCnKHRD,63{&$\Z
[PQK4\zCQAHa<IU)ިRp?0âՍ1ódQԱþ4VC4<i9IDLx"ǁbB.qGZ<}I݄QI4b
k댰*beXhDHeQ@Kpyz+@bZ$X6bBi7|a xG4SzS_{MlRIx4_kςnaf<QǤ鉥9\6`W.m~ADZ;!;L6ޤhdaiFF*5&bl?3.F)͜(9H%?L
si_?;eT0)z5cm-s{[HGT"lBjv@#$Sο$S	8u^C@H<=ZHjco,s:|\rRj1%oPt2HsQ0MWi1gL̇ΜG4Z./,hL+ƷyqskΩy;,
İf.K*ȁ̲iV~0RQOX
5n
*)X]y6|RZO5/0YPJ&\AAq'G0+sפ*|PNk*"H,˰ςoXv依wP~'4ܼF^zKUy 0	 ǚL_ʫcQblĢ4{%c*&BEXL7l0HJIn6 /n.sȯEt51FQ(ZoMy"btӄڐu)rYGͩƕ
g:8-Y
|	tLJDjA_VlG"{)[<2>o#e_lm3tX^ĺEH[IKq֛ń!j$g"Km7 *[O"3{?#g|bo{l1[ukz	Mِ;/\ԤMIJ"=LD%)MtX's~qH,=qu2&[FJ(O@w&hxv[|7mc_!T&a̓¿P9;|ŇV茆V:m
\>)ݶRbz5Hd0Jx)HWlaF
HSILg&Ԩ+,E DzMގ1,@s0vy[I`iItyi{`#󸾘ަ,pѧ)	)D-$dw?xL?<ՠ?8kyʿoCVT[U6KN1l]3ٴBgFD,
_8f
:\z/Mî3=FftాxYfcDؗ`|L0~rXF৽(rW9,FZ3UFkEUdi3n4σ"-;gqAiG\u[XCe+F|TG-}p5z)jg]`@ I
e܎"\>`^r!P߫eKssɇ#Q}Y|G"\GkU:;ǷdP\
LaHSc>2̴.:E"r
ee#bA*Q?ٌI;o&T_
`CNOd%%8K+90ބpFr#*ie8QҎ|ɁU,˲.}mΓshK#=c'Q׼0zUܰSZAPAaaI`nO0
/1n4O1{lNiNmWKلV<D'[Bvt|D_!%7;:$
^-Wmxw9
)s,W9+FaRKj#4m9O7ڋ)LWeݡ	sM"BU2[Me
WN4^&tʋwɌm h:2aðY0t!a; $ͬ~Rԥv%	\fP),k~oHf)pϙWү>3)=ۼGb*<TQ)f#''gZ?-\|nh$)m%kE
ᜟ|'~NTOGo\3!Ūy<󄵹ӡ
~BS^vwBTb|71Bw9|?BdEk٦U	?u,=7JR8Z͇=tBtB7%7w
3CܧFI#cm	yICskDV	9qJ$
/RyM,+B؉GlT/BHhr3RoRm yZ8e_w
Xx4Zkt֜yBn~L<$E\-]#];@:
+۬x́3a
/OMnϰDbۆyBt̚3m%i1BL#ʗGϠwn\2Z>&Qg8z&0qntFp~0WIГnXDl +܎o(d<즨w^Xf?3ͼXarfhdhrDFt :P+)F^_hcjŤQ~FBS)πLfpr3kCȞ4gB[kmGi2
x̝
Q&-63HV󗏱2- EVtT$`*?|Wrx#o!
) ^`7욅~j!eTl.ZӀd98du;ZSh/C7ķ6&qM^2M'=ѫ4f8a5,BL&Gy QDJ	fuCb/]i&7^ZN7V>wДnV6{a6Ʋu8-G*t3
drLL*('ێ
pa_^R=D#z/}Іj"`sPgurݨz#`_9ҽ7%`
V"-+H;&nⴠܞB&~5Um\e}
8nc3\HR̴NF"J,"6Q.]eǩuǔ(:H;LjKEn׀lڄQd(^Dܫ,aŃƤālQ^Ԁ4kVНdaIsB[<8,
5Ðuo)p?f0LJa#-q_Y}Ubr-378.λɊhִ -P+3Mzr\0p#_e=WD-j)5+¸Ay,\[:9Zĭ wy UMBR\H
r\"i P9x'ś`Eʘf~bL=E֣ZJs94DrBXdU ҵ7̗b3"/
Ŗ[i:h_q>p`Pm^SrgIXfFA^¢NQ3P>! K[>v'M6ANA&i"<-#+	Bz<9Alޙ])I	l$+kЎe5 oIN!ğ	7,$,t%L+Z,`G
vL<eEj_[6?HO8@rv]D
^ܞ[st΃1˦ߝ!OLs%yyܝb]8(Qk:VYxu&-$D9Q!V\Y W[Wr%(@zDx"=Q0"V$QA>A5ya<0{=9ٰ_-ؙ;Zi<W6og.}oZq:DQ2TQyttfwCUqe!1c4(fp).bKVW&x֑4T+=6ɅKaVg	3#AtV*@pYH#0dHMMYƄ$=&fR
h99x|
BWpBf陟<OvF'KaҶxĘ}3ǛKgl3ɒ1XnCׯLȲwvݸ1ڲsHl>-MG
wM1(hXN䦧3=kˉXE|1M?Dy6	<L.IN,j&	\s$oogJD_,@ BƟO0ϝjm9l
Ht;9Js'$kh
医 x-\?3f)C	N#H%>PV2O5@m,tW9ߪc0Z&*Db.dڳxdXk[0(b-JMQS8/"1a!0m({)nS67h,n y.x7u͡w\
+3*S:5EG:D
NQjЄpK
?xcOr.}܉9c 
kPЖƩSe
KۤϓL^
67Yy./y{(
2\l
m1y2XiѝJ^_0GF|N0ThT/_fB9v-=G7CB.8drr3ץ)ÎĐ
`dވM#a_6"DBtG|'ٔ8c)6`u)"ZĿq=o4eBpArP;%J?y.Xҵ=-2mM'yJ/}X[0ϻReO9~3dy
)GuzP)I%HhBR?U-AW'[7 W%]zB駺la  udD+N5h:vBǛd{.ַfB̩^
c<iBhx
%I(6^OO$-<_a(2V=쒤V2@v$/(-q躏RW©̼MGܡmk
`4T+6(ϰkUG8qZ(Z>pDИO:͓TLJ6%.Z$Z
#̥։j,T'"l9y?`-o2ntL
-
/b;2-+YJlC53  wKI#}_
NۆeΚr"(߳8,8'}hO%ԝj`N"*jR~"y!_miGz<&LYuej
*]>VTduyQ}h|B>@|*'inF
uiӜ<HbVI`p.˪o2(<qP$Lm;@4QGΘZhg6x
(Hʐpc\еI&8^X|Z*s)}t	]84fF̰p5[o1S*2t"$Ө	*m9(fTPZN5M9"Np1lB7 Qژ7g.qX
=\hâAcKj{ɏ}\qH8>ho"+ =L+F6p8ӰO1"hx/_HEqyɮM#NO2=EV7P\Lp_\uGwFЕL}O{^A\lXL䵙PMdrWRQdCr'*~&'
;GdW( /|r`D%s2Wa(#cNq!7yz&H,]5%'*{8L4F;f#>Tؽ'x%k3%jz7Q,仫Z~kˍ&`͠5=ke2闰*W
ifTV^3X:	tv4gdĈFjJKvV,&v ςI@Š߯DaӤ;	'22v(vgT:fy0ʀ<i
PAbi7]G7PlpQ>W8dDEܷ<mAta1!#)zaixϥOMZFgy*> 2{peln߳~s0i!a6IZӋR$IJO˹X"R뢀I,ӰCF!{059<}RP(,Ҽ<"D4ԥvCg{NDXzip#BS#Q('Ir<yw`zagdb3gȻ^`V붏w1|d-
F" ,k*teW|hhj:Scf2,b$T
?6wѤ%
WOCfY$6AZ`%AM&f8b)`1:ZC(;?'*[$j&PooLn0alfO VGқ2qxX
b홺i[ȎLChe.F z|N
L
FmkB#:-4\-)= .SR)cT؂뷞'f
4nFi!"ڰ8] PЁWj^H<|#W1xm+<$~zƏ#ʙPC ɢ"3ʌ"Slۼ'G4:u)ܱꪊNstJLC:\UݓuՖVk!4+\hF`J]2Qc1Ap.\ǋ䴌Ԇ\"oFp`cXwP5Rkb	r}6ظJZAB6*h=ʴwB/S2D
_OPfR79!mi&!1i1kQp[uc^qjDN*gI	zxuRP켡+zow2K"e%\3^TL|YTT>}mρU`i쁇$}>+r,a+:g8tT_UZ}V
hأHPpw*s8(3X|ޮuKن?rԹVycP0#놪*X	0aSXcdP%M S&c_JĢuX)]n2Nl u<G	^@y{uD<;	IzXX5)o40幭׆o>6hW#~tmIؖ0C a{(%PxO=* ;DzaP9⽗
rlrx/FY%D@DUH@ӘTy:@I^܈d=kpqGf
x?%gƢƀUsL:4W0cЖ&N>,?QJm*
%Ir6s|bgCgz-Uڥ`B6ҫO4S!AEeu(BVjQV<lNUk+xGVQ2ᢎv!U6EQ#(^*~vo#4:9L6xéNN*όmтAV9EX`q1M|_Yuҩ\	bڋFPmtX"O38PGA{j
wE~)<KY4;))"0',CJC`#|fH(]Fs$ԔWQje0^Sϥ@uK :'4@AX!6,&3o$AVcPY$`D4M6mQXTEc8)^rVƃz~Z\
t񆓝*bbJiLQYOƶveE'PhiXHoٶ_A^p{ԉs舍eRc8P(/d[m׌*LjOE+ T`^COg>Y^.|zyIMjp@o])!9ϛ 쟊) %A;pf
\x)\CSySQǖf]yH+MYlzm<2	=a[N1ch,Iu((;gHrUe`/<2Jypuh	z',N5>C	?l7vC2%:	hh^,14Cp*ci}`6mq`"+#9 R ta"Agbڮyd)'Wx rP g/#EaՂ%(eo{c-<KYdT+馸p7}"=qw8"S}esx<''*mx&'FIƙ-oQY|@S6%bKBhBWgC;"@_m@uJy^7G/y*2sfmGKtiKxrIuZ&9ˀ0şkUum:հ:t|EDp;G|55iN.`pmtPlNPKe1#Uc"ǮVl@wRʎd֎D<Ѻ._	okj4&_Uk7!VU
uUpuJmh(!np(\CBҜĒo@&ڍI:CB,8)|׸-HD/V s7a&jÙʼ;#Z˪o[z8ݱc'CfWY8:7}[t"UֆN*:e(wl)Ss`;PId$/:qtV
ΙD.	nr'*`ːI9ֆ[{S QTE)*`E2NOwz,[lCw(S4eP
eeᒊ)-&te[I^Ou-Uxߟ$B5TLMqE;T5<қ%/{xڕG"h7q٪E- ln[0bf1%Z}m1a8AD
e/ bTށxosrm("]\|ؚ\mxUT`7&zm_D0)Pp'c:kD-+La-{:#+j>_R|RJf5a7gu
aYIkzenY?_Dݷ?VD/2	xƶRdk5L*ЛL+siޕOET@Fl֜Vdu JTW]q5t)wlo>~UuZbL	ډCΓG<3o+*m^xjiK_smzpPVC4@
$s5kU_JVlS+р(_gVX&yBg20fVa^M\t_fz	!iv.vQ=a]#aC}fz=c1Uvo9&0i>A֠@jbZ$N3cٚhq6D	E_b#;2:R+,@)ɂ;ޙyX[#@xl'$pzBr1ջiV]
M7~gL])UyR	mid8Ք
g3Dns7y`sy7/6go瑷nWzk#C1e^(Y"D|SH{0,fAedWh;`9B'L)DO($`1;EG7#i,6&茤uՠI/9YZy<Ppsujkh?.
Uxĸr+ۥYfX'~XX႓
wJŧc
XZGMd@I
R cCGpRIu8j)]?0c/B4qT⒏PfH<.!ݥ2u5):';˚\`ͼl֑8D	:UqfrLW=]ұLjj'N7@sTeQbzAک%x.-g̊;e6߼ :Qrp_TCPƜZ%k
opX(;reÕq`T`pEf>rt);kǣ8)L_ ϓ%'%yM+La_;6#:#"Q2Ïӱ6OUo*)0&zgvQ%~CS_9IggDWAce!-ŕIl
S`[ `
D$ǷXaT'hζth=˷82!RO|q|1Qt{GOֹ1Y9PD/~"94PӪ<gcԳpu,[S8gkH5RM[y6n
-rZ'XDd vlu$T>LWrr[[ƪ\	D|q&?uw#l<yU&MZlښyJĵ腚!^T
_OovRAjO
9pU^Hx=E)&K1gӍ]!P6B&Z:H~ BʩW_ʝVgTDUVϕ6Y4k"4>v>.r8G\3a1̵<J	1)V+5KU}PTIVhR<
%rrZ+
x[<KJB*午XA$V{~w0 +@rWl%7"H%}~[ivTja>Ctuؙm:x9`jl*Υ &Si/a>_'7Z-af\{9~4~vfXfcno+W1ggR	 5͹|huvOKPСJ7[ʺ.B*'vLsds)WJZN7L)S*ay$"	&H3U4KͧTuo,ˋmk8$pĴ*zgF"״k0Ԁ_ic
U\^8wX0vAJ-I/Z;/W_ٿPe|:YMc;P{2&wR83%Kڔ~~/<#U\aꞩpcQ;Z	90A	0kքX8"}2	 ?AdĎFloC.\~aks`/Bu9/!e]q>"
.F;	HkWB[:!]VMBj)-<O߸C)dVF{m;hs0pٟ%q_}4o\a
^b(*EӁ/(aCVDha<ʈ4﵍0v`#EG~q,|x41[`AhARȬ!彑xPo/lװ\C0n7K{iOeZ"ȡсtpdeq]ⴼ&k:c
(Wh,hyI'iK&0yՐV
sVEk}GwSI.d3GazIA4|p!l=#GĖ,Oi/i``䩬S b|J9tzog<uiZNZvӀ&u}g8wu~Y[]]T6=e&hIqmL7ٵ͝d	=rq__$ZZ]H]XZ^T
l;jDw/of(*#X6'Bf5YPZD8=HWkGB*"B╨؇3RH7E %^n>MMIVHcrtUbyoO0{C4rћc)3zy5V[x
c*A r4VyΧ{90:a"vRXaxNZBY	ֵFe)IRH&r\Wi":p@5OdK{Hw\ʃaI:<LR:.PnHKmC1Uu@R \`q)"u]Eأ^Z<ÇV/I6Rg
Vx's2h#ql|p_Bp(K'fƤ9x yn]FhۢJTeQ>K&＞3|0=\T%\-QMX<	tFYrմPgY6GiVh*^L6ȑ2(J$ʧVLho5e`ң5{(؋T9weXTd؆xD	[I#dNv<,(2NpwvL}6e8dpmpf~~lINv4?Ikq/ʁ_)T\{W訮(⃫.E^^dE'1422Qi<9I\԰gMT	n;(.rأJ>٨&ȃ)u3WETΣ(#xT9״KtmB/%ncLT*˅7V9VTTA͌F&Q	+GvJvF#c*8gzVG >BEE=
Lu$cPdR#!bsz<ɂF
G⤨{; КL\y?-<GFk\9/f bsn/qM1ā	sd .C{ean*A.a,%ߔbԆO
7>42	7AG̯SZú-Nke.\.&Lڌ8w8(1dB1Nc64yRI%Nӊw1xBcX1ii9& cYkV0Y1R2l@+8&cۋy@&3JƓ?-EE`y6k*g_#MҪ?6TcFs; h2ߨƟ
qP*N)kݱ[?8j*<g%/1Pxg(È̓aj0NMg>$֞y?eƏafI$Ddʛ<oN;]v&-Q2֏_rtݍ"0QHD30&FC7;s,\JVpX "tafQyB٤5C.y1l@e{,1ek3)qL̖*+rA-cz3`G].;5PNSתf[N 6VncbJ|IT|9nXf1I߲p
ʗ!tlEJ)5r|VA?,C¼O]eab_vg$ʱ贀e"Ҽ_0[4; S\eyj!\ x^a	ZYV.sLYnřX5lƤ5Meҥ:f3Dt)cKݕlZrB;oU-Y37,D(R*tU~|`64^TǴp)|	A|5^&{MBt;JixN3Ҫ^/aϬr#ɮLRE:ϰkx`2=ؚY3lK .KXD'fLTAz\D)/%ȯ[^Հj3%k3WLLl^	_oci1QP4ٞ(:B,Q:%[`Q%T؄O! *e/ (J- Pd\4l-soM?{03X[1<PbuHRIG oh/T%׳*xeVSKkτ|Kʕrx4Q.Bm2aءtJǮ|˸OM%-\pq&*Cee`;L"{70VD$"W6,sD,,GLچ{\lEYtӵ!{7<\b6!=t32 9)62EjOэ8d
	2smwS.*?w}*nm
dkd\^33xDP3qJG%TܶV:%Ka9
2Q\wڑ,O2{[AGkb`Pl.!-sLGT:B\aȒ< 3y/RG)(.{XO|ma>
ZJSYaMhB0هNL(FEҴuYp\
1_CHЧ)vMM@N|GJN$؃ח(9&0w`U8|hW\T־"LݠQMo|݅uMKPEFrRV6'iw:V&Gcs~Mx~d,@=9lܣ*
΃@,POq5X>[4n햍Yވsm3Jٌ§v:m!ܽd;vj3,%BHLN-̃<C"V³-v0aՖ*A͢\MG45iP?XNɩqnC\*N& XK
㠛P@lE
y?'Kíu*EġPW0rI|kt6>I[lUr踰:zF/)o57`Ff7B@xO'xۊ:11pX̗Nd`.&3⑸w|@mەmL\2Rht.ONA~ޏGpptJW6G8FM."96N7,E6#$i"/d<y*~̋/#E66QTCFٜ&eBf X /f%/qځu(r&P+V0(]
}R2Ǳ?5c쨵={q=D+f$EG#s<?Iv7uJ ]exXmm4A{P3
%W+ļ`rQ*6-SP/Λ(2w4-Exܘ؀ka~'!_DYnB
G24sRIf?ZT~w
K`kgWCJ13oB(ټw[4U܆w%._FdB;|ɧ_--baasՃʳls\X[{Б-DK8d}
:,E
-rM "mim<ZJ<l벦O%lHF|vB?@ޚ45oRIEjÐdg3StO!BFy%ar$k &PH#JJп>_DB2͈䈍SAwLwD`JDC7#b7;_xs.MOIgnϼ;	cd"Z6)$.p2إ^l&uc S} UyJM;&Q>Z(L%mX`ۣ}$(1.t,A.gXk(s4YĢs蔘a6#LLYE*$={,'qm	g1x+qGkXlGc8SCĢD0mHr~
/zAVn--Je|tA  bA
$a cf0gt֮*ViR{9?.OE3-P[ȼ:A\v'{qP%.َ07>d#e83AIXƞZ*V>ABֵaGP!GGxڳ93{#XM$OaJF?oÉh+_TAI0N4?a)/8>+_fZiIG /GQLC1μfJⰡtE+VP]TkS+!Z2@ó5-_pgqD CJ[י9=8UF
^Mu\}j5;(dN@"۬|*1gby-sH`lN-Lp]JT8MҵEb]2v-̘'B$@Dge fIf_GZ͐RӨF6Ǹ#zw-5';.?O`uLθ[
gH<|-<ȞPRFv@,H\Op]t4CTfO]qhJl"[Su<	0Rn0ӻAQ@De/ƈ:
v
aX>=k <tv;Rf j
'Y?X<GRU).97.΍cE$i:3$m!Fͅ̪B*Uʒgh+Ltv# !:PU6>9Q'v8  ^gEC%5Õ@-NV}-DS;,x"|bvc*P?~Ma:O%;=YLd+Xcyq7JK Ԕf@l-x- 9Uo\@A;49W!/Qm{J:4ƽRd`M.VĊFp]	sv_P0hv`B{.-XQ;R:c@\#ewƘNya ESvLVP)VLc[FR1MMY(+q1xՊy1+|s5Bv.i^\LeeTbJ^~❑'(7
"o3ӭEpCc<r{7$J.'"^1`b-"D0z}-O螆2]iu.Kꦬy0דWU"D='FI¬<lB܁uoU{JUڎI-%3c]l%*G<Jo9#hPy>N/p.%jaArI̲}Ҹ%`E=?W{2Y5V#:(.ClICDUdE\q9"-F}`$DDU>Iz'pUl^lYAVSV1kb(r~el<#Gie<IMHid	DY&|)qw
zcOKfM٭gf21oMu^!SC΁gSb}VlPӬbb?j1jXaӒ,,F{@Q˼ GE1HDHI)*eaR4DDrbHzYe4^[";+'C(?;:}V,\	tר9kN;BG+D*sĢ`(¦*lO /gdXke^gFbu(bH8Jmj},P$W,q|Y@`#=eoR"PnW"@OX?ُ,J:qujȳ(4wtPUNZ\[Gia0+OT
[M#FUL!ȭx#nDH@]<w	sEjÍ
nLW^"zni}SC̰_XYӡE^mY8ZJ-Ro}
%DآX$/,L)$gUg&QG{vZ/iXėZ#1M۰\pӛUP9t}iϝfB|-CKa{O=l
~SosLQY./j/dƪ@7JPvRAcQ*ւB2LdUTH](	:\AIvB=$칷jGA>гtTe]|hqTrFhܵ＃YFuD"W4Ʌ=[ ebӕq6$)"`6D]겑c$!˔C(O)~oDA)\,1^[${VL1
#/H>1+),s\/ăbH.Gw\Ko<⮀T'C@p m
$B*s8m~QɩB2M%)HR⁸PW/dPd(Rx{X-E	W3aJH?Wz>	eSpT8ƀ꼫[7}
!Gjt4E/!LD+SZBWY#=|ds,YdɮNHBeܭdRf17Jv%>)>LK',\;$\3g6]ވ3 x@ KҸd+ea;Buljv8C@dM&6Na*} ?G!Q ܋y*҉f㭕oC58֔d-XeHٳG)%X %~C7m[bƺ9Ar2́kyLL3nZ >]37ZwW3,9̥D$ۖ4#ZX3a._dR܀gusKc
E(' &␜`*\(NDQMp}{?P8qV`s
\GY-Š3'T0K)lٯ?Ty
O0g?PީHaa?gTO;VI ]-vB~1п69
>9؞b,#
\sf۲=t˖
⟄#+ tv1n.M0KCy fbM6js/ˌ$,ch=}/˯'َa# xg@x_QND*4G+l!;=Xt`0|mS!	edZJ.X6lDv1uf9AQ3U-nD(0k1KIoTY𛨃2qb9*̳h
q
(_D95Aܠ?2cƘq<i0yנm4˻eOJXLڜ%0Hk:W;w5H4c碁v$)`]cO	!C$[gwVŧݗũb2?1?mFC3@bgQg6ĳ&Z|phʂQB><CDfӡ(6rИb=(J7uJg=iG#6LTZ]l.L"DrP/H ~!obګ
gikwt@6΀Ë}б1g]
Cj`
焀3t04rZW4Sc_;+çzm]68#wdm]8>9TwQW^/R=Oa-X*
'n'qUҔ+XShSg,9pGq
uIe1"*~^ĭߓY#*\>JyS.apдD
6a8߇a91|g}?6
[/ƚ|RxAdqV`7#C׋q̤9XGZw+xopڙl;&AfKyJQ̒!à&]`T3GfO|V5N-YCiHa*Гryq+1bdD+ "2ؼqeP Ue$i+)$B`/Q>Z,ZEi""Y{рnӧGgУoޫh`c	>Bz+[mڿuS~فwc-sK
3yb$%oj7Spni-Ki[tk% EѥClJY3I왰+3^+0bC<22A=x:O](:%nZd֙]bαQfwgi;`;V7 jx3RA ~Vgf<cAT\AQpnK^MθRxVxYHGfru@ʛ.,Od%sI,,上U;)A6RlB_(qXx)^@h@7P_/Dh
*32|rF#VwU\ȥTgg(CJ
yž 5ϠAeK+.~ӗ<RE7x'uU5ϯi9I1!#f1Qc6oJ9O#♦6[oPLhphxʟĳy2tP
ClǼn{cKÝ.e9p!N|)s&zZs@-OCG#QW4OHZs-:SrI@8|;90anQ9*	e
Y`d@.=7ItO4qA|ur"T=/C{<	2}M	2]AQ!WvFFA?7ʫp,W	_KM
ERaA Qut2DkQPf?Z4@F<Xxxq-''!@ Ҟ-
rQ&dpFLB~NJm4!BHn9*7&F0qlJʘu8XlBon^'<~ҕMռ[eW&DGrjJ.QGZ!6ga`:FF:e;a2ڄg;ZRCnR6^D[MVΜ_d0Nx8ݎ$?,r0y؍#.ϰ''P@|O/<RQ$|mN=+5lBU]y[nSPjV0+uO^+|? Yeap:͌k\yOt2'U<M?!"6U, 3nH'N$,_l(NGdfrraa1ʝ9
b_!-)S	>C}tpzK
];qd,u|c1qhRVZבf-(|Pd=~܂M3:3]=uȦcRmOp	)tYjKmb]Qֲ*D1X!*YG;&Ws%ri^|^Ʉ).<$mZ@0Ѡ"J|uDGҁ
_YY|-XT{ ik4ݵvW|J`"gv9:8eghYlc)g)GKs}J7.\b/yi.Hw0x\ϒƖsZґJ)*P.L_|.?a)}dTQX86SɈ#qt/#f٤ Bf.%p+n@C{)cqNh%Wo,|}e#KkIc\KWj)|yϕE`੠r$GpB
HYPNBWE9ء<
vv	yᠾbDYRO1*@c&Xl45
_dget2_J}O<.ݤx;rAn4C`t`\.AkXĚP̖7 wӉUj4h-_JżhS+kZPz]BŻQZ	$LMG;>Ƨ}LM˖*XLJob#BȹtY]l~{bZHLeXWuSYilr(C;+ºRbZ޲կfON8פ^xRi<iS$<pՓSxK۔f(؃$[	yL[b
$*oV)>@r&!:hKMb}@%6I	΀,Bȓs9#x-Tc'xLD{/q"$=wc@d DQYG7{JL|&M"f@}%=q֫|z]6n-lĜDƐ&rNL}h/u*jM~E01-zR&2iOyC[z¥HmC/)e;੣:&E젮^fzEmEžCzw"jr!ލ'jaZW|-@6a.Sqp}0;yh^z5S $SOj~q"'2SO6#l=te(46pd&](Fo*x;<[9Rv|m̆0=+ڟE0/oV
"BZ4e{m"]R8X?͞ڌh2X&CK^ -* ;
WgӔA0y+$ݓ.6Kɀxv#
4"NXÛB`U"'Q|@Tݡ816&ĨƔ`_>&>\<^#iLt>τdPN.*9(w4MT!_8ƙPQ&N708܋e0PAXUwr
8/lcjd2#qT!tCɏW%iΒh:4F},"7[x:ܬh,}L9
\#<.ڌP
+FPhTRA*Ncr J<C %~fqyl#27Lq?A#*s:)@A9,]x6!v6r}kAjZ~m{jR JF7eLTdT-Qi,(SgeXq+xԈ?2]2O$CDD1Pcq5`hR2HmP8CdLG\x^6X'&gg:4 *Bj灶/[D8 vI
ycwVfB_eP ƍޡs=yYPelu G{*OF܎>튆p`<H0Gqc-djZ6XmNW藕Uq>'cz̔*}]
J?5XmdsX׆q>bz&{'B2%5Buqc-&la:G?9-cVNW)tB`lZit6ii.ZjCP&λ4_fpA5OP=R
֤u:7 JZ@:&Ǥ"D[$UNZkpK]5?);:ň%#1D~9<|6͋Կ,{B`DI@<^*& ̌r$1!Y읻18^̧`qb`s(;]EZ4rA[
]P l\~%Ɍ12F}%<pQSTw0H仌2K.FUH\X\_%Au\B=L$pI4%VNرuDqTA/0fV{(N!!ap@;Ŋ
ji_gti;̱|PNIգ@/j2U!"dm<6ot}8 LLE#=cXriF03Ċv\<?G2)9
b7S*j;4[CI
3Z-58i`vZ7G7p5U8).O$XfܽZ
ȗ_N֝ȹ0NcW9":&/S7|Γ嚔Ub_Y">/-L^829ej)P\1(_q%y8MԦȌF>IP&`"k3;OKb}P:FVɑpcyHL*	M+M'-풁4Mm)q嫲8h<dHNL$2Fm\$}#V}j2(F0N-(DႨc"
uh7Wg˒:`
)3N5~{s
Xz[aE8ϊYX<krVf=84,󎽭43ga?З'AawWiv`.<Qn&s50sh03S_Rw9|ۨR:R=u+x\5^AP{n&/f} zw#p 'S/Z_#g1
`:@y4雂s2xPs|gUKO̰"@0U[t&{BBL (fvL/M'H{f4@:yl:?LpGQ>L7hRiJI`eѦ
U$^
Dah+9mjFZ)%|E1mm0@5j?qϱ80
n7۷@MJP6Ib9>Q/R**ܣQudjT(`=EnKB'=)MZ&@A:.Kz;砬<.iE+
hLJ4*zc)ioxTsv-ߓc2JLDmQdr	4On6U{HY*ӰGWQ-)orLVmq-K$	HD*#g}B,BڹV9j(;CqH=vA`ntș˘,~O֞8cw-qP:P@uEMB:4m\IN^]l]&fkgY$f%m=sBT%ju[	"noMqkL"LaHvlzHEn]Q"=*	m
m]wtg[`jѡ`	ezzb9[>EWl R}_TCCx{A0Ie|"e|
駙#QR-j:OҵA&_>;% NSPÖ~FVnl+	hא!!AhW:*XEZ:]sZX4ߛ+հiZRd՟	J8XNmkP;q͔߆{o]ug'NSYde\ʷeݜampM(el<;8Z0`"ʿH~eN4G+i`DdC!ܿuV#" \/o0s<D
h%#(a^ȟ&܆<HԦxK:`mZhB hkH	\{N±-̴RSE44kOQ?2MŻVrK
XbrĠPy$^E
V>CIL\މF-UsLp	 EX忁vL'M]Z*Od}^)
\<[PM懾FڃW
	4<kN@)dE%:WS6"6<cFm5&z&!qSx\Ngt}cB+V1VsѼE,p0Y.oM1lq7zE[g`~dgB5
ޝw<b]νΝOK O-ûGގ
91sphlQɧǀr<R6"zdbd{)	s؟T_I`@&ŀ!
)ߐR˸
\V~{):6qIbr)Zȝ<0t!Vs|o/&sW9տG:,J5ee:Al~Qp/5\̓5/V	O<02rQ<ٵ	?HXŕK	}oX7@7.x4m0">,]	POUxM҄nYJ
9D&q
S!w≠
Lh!Zb[*f.ӆlVG^\Wy76@| M0@OI$o𕭷.chD/z[(J+XȎ#8֚D.h@DJxMKb7&^uz}0DvR_	ǯ2׈b(RBݾr7(*H!qsBn\@#=$J4*lF!.#`W&/Mbþ}8S4?e/:z!eS~]E cK~MPfX8ftNxmF:o6(89m`'\<Oogy\2L	G1Pb&n֍lʥn] }̟,Wc^j7Hv+_A6EkՈxU%+O`KPT'"0GdOsM7m9'ttf
r&D.̈삷\2d2Ms-գ0 4nn.vFbT9-[@TIh?
xwp]ȔDmro)m3%Q\TE8a')G\ĒT)IK(To|F`,)i3׈ &B$^Mf;M
JY-_ϷSQ-)CXS 4mKVQDﻨXKOLڟH	uTc@:5!D:_=Ī)ܛX
JfÉf3@>Y/1F]8w嚡t[;!ș]F=~&ؘS:uR%l;2)%gm@mf%BeǔoqQHyb\脈n &6, CPZQAh՛=9>i̎^$Cn3loC{d/$fٞfm,(䪂MQ.\xXj-M>݈0m[:-&WgT-p9)Q@sAFz-*EXDl9/xf#앖䜍dqcZdl_QR	ي3*"&Buq[W+{BM1ݰP+(Tʋdlp:|(Y8s&4BsE뱐*tE&id
ll9<ͻrL:؛O[ܔO3lDX1>B0dH<Υٗi[w~nH,V>ףx]Sf
y3ӭ)WbD(o:;Dz*1':\5m,@jN	4܀&%@tq~ K #S4δaN*GC(ã5xg2d7Kί3 u8'=B5IwBʒȈ[y\^:Fԁ$w*)ץ)XqXw p1mttGVMMQ&xXF֋~ǉLX_gOKc'bX$6u8öGƶMaI
{d:"igV$ڬ6
A4 MT[ұ\FɳAZӷD%nЅQƣg K8O`)vP۠&g|VbJ1+F{ٱv}UxuF7-TV*KPxdIvj#{"smo!M<D	qC'+L
[ҕ1xH>?S48` V0@jyōhH֨j̰0Ot@ڧZѩvB1s'9)2S SV
6~73ATŰ(v<>Xp,镤q 7Z֎a3WɈ=A>Ř+`iչ'HMRlw)
(Afaply(e['#z
xT2t]36+O#2B2:玅L_؁_vpjYӴdu	Vٴ"R^b4SXVcÌwZu_!Rrs{
=WHT	rê7O_!xG=EN0
=")lut:1ҀZ{.{;ZX xx;bD-L~Hݾe#Q *Im1/ƈF
O)t
D]ԗ_<C n7zUEHа.1z/Rf+X-5 ' Y	ƈ`D"2Gzx4T5kp$f5cbM
	-Z<X%l,戄f]-D8:١8*`^,A8jhax7)(YzWlߔzx|;柕Plt7næO$&YO"c\=8>Ai	H٦_BO4;.܀RU-ToJ_M*7w
<5fIv̍;(a؁:>LLC|îu=/ c*j"^y$	kL^vJ&^1"v:)}5׫"&h]Nra)@5֮=EzfTe1E!p+r'ɢ&	qO1_i:%爜d4Bo
'G9y\=l?`3AQAWHK3#T| 7ImTP' y֚AD@&S.V]HA-A TX?Cvj?2pˤK7 )fY֔a$`4F2Ex0"g	Me$6jCRFە1S|6HX-e2c6Ճ-SI^(	bC"<.oYF*@t]xE= ;<Ճg0ha.KiC8;ǐy3skl<3~cdv'P)@`T@ksW<qTa={c_7! 	hV6 >S[>=fs0Vx"btBՌ7A{_1ҊJ#G&İk|4}~y<һd%r& 6H7wWj#sF sHpQ6!r |,S#5Ƅ;ԘH3u̼HP('C:}nph. [;!|BKZVr/ujAT3(ξYpZ/N^dU8iH6

g$TlG!C".ϟ!7CtWdURq-K=~ŉ/R
c&#r.aS
ճ\t%؆b[ęLǘZ/pIv>.-K2IxyEdu8Y
CT@@lB?=<b=9CL{ #bcok|Oޙ,eI&oH<)mrJjYmt tv[^4+DqNG(b`8BR
yT3\Gy	
p(3|Q-ޥ0BD
!/j:uNᦁZ{zҋ+,8R #]7mL:,iṔ|G̖3-K().qS0Ld	uqM,CMl!$XNo &CE	S:E CE~xIᒑ-OX s0I=P0m8L
Wdk{f5PUfcqJFA+/x@͸hDfB.f)[Q-ȭ agCYorEOvW mо
H0>PVMhWBuJ,:x9+Q$=m2C% !FJA nz khy<ʷ<7i">(:;UY1*1Cbjbև"6l!.AbO};L-I=F'Gaw7I堘z4[d_6GA\x2ZDt<qioL>%Њ|ԣl#ZT7,94n[,*Fa'-9w0UNNl,PEQ@ՎB0ϫY\u^'nz|^^ۺ4٪g^QFn6)o7mMӺ"f40u&A8>nfg,*#mIçBEɯjIaleJAuMEӐO]2&.gs>_2ctPUE5EبQAdu H(ȈgRc
zVVjGik%R/K84x4@0蒺
 H[!oTUK$

pqE@qѕ-s0Jsܫ|7@o"lvPKHՆZ5'T̙l5G 0}miQ8N5g*>AH_k'1J.Y
|Mo{)`YGFjvn|ux/>b#5Q\~}zbLT/H&љS]v֝J5q	Yϐc/ya'/P=oT_+bg˹1H֦Q&n⁦NMa8oB^~%Q^)w؈:B=nʧy^rV&Vz
NE$٭xka4̯/M0#'8g5y"AV!;-d
;d_#'Q
BwAUn,\$kYGdrQsliU6H@<
rU3\5o4-/'Phӫ3uf$Blb̾._>&M󲡵HZ.`
_TF=D3x5J`
f0fgiK>X+9mJa];q'ٜzI{ٴ=' ttTsЖ"mc߆:#DL?dc |< (wt6JBxC7/$~Z1y/K__}U`bs1\sy4O=)3<}Efy1s}Np"mD@[5')O@X4~5z-B#t##hOT
d]L(%iٴ3t;AoA>A
JG'kw?j=Z.Tm
QpM6H˪6>uZ"H0tKRP\t6SnfLWFfl*fIE+#q @WD!IiJ?jp
I32mb߱#m<̀Ɂ	:Вl`"fiW` `z	ﳍ^ /Ub&ޚ0-ቨ6:
%j°5K`IiY&Zݠvśj5#:'omhMVYS,rU\vKIIP_ƍ5o"'oDݚ:`WbL8КfMӭLkfǑ2fc[D_ X<X`b`J8*gts>4
]譲Vx2L0*,vg2a0Y0.Bn5Ao3@D6<DJ xȈr}P(/*	i%.Vu/-_S_BRUȠPOHZ!3(zϜaXl~xE-<״"&73ǩ'"UfAl
]eh$[>_'z`˪nnDM݋0 QB_
;H&حop}хvG7bìJ>)zh_FC]<X#[3*̟	:R58t3F>("Q޹&ߕ%{Ynَ2(K6xHDQ,+E3J>"Qz	OfL.b%DkP:p<h&)NPgcq2ʌ5bxGsd9$gy9i(7E7[׼~!RIp=Q.x23"{0.NԁH`͒<eE;4{xEƥ/6nDE
I^gB6~'bcGrܶ02h,JXL6`<xWu/^V<7IOZ̩!W
Ŋ"J&ٿG3& ԃg;U5GDrVNiHKjcp
ς5ӊctS$wxF4)2uXQn2qPdؐ!}aHu[x#{
ٳC 䑩d6kZsZ\Q{8/Nwd| :@.
QG8apM.u6;¯5,'Q-5^wqZk;:X>
[ţ>F !Rq&Be2[tvfwmF{l&T-*ܣ ŨhH4Q85*jPuMpfV3S*HKoP>M#zQvP\KE=@\'[mY.s9-Qk\n&^10a 2#U{dㄶGYgN-6<l+2ѐl(|D> 0cyf1EfW0tDId,Cfȼ6CIB#-^4<@4x7>lINW?<!W8a]0, [Dj(Zi7 Aİv%$^2f
0]XJ}gF<f#e0Wx!]!N8Ա^&;HCqdK-k56.پ%(d$=e!g ˂c⼘&PaGh*K=vzU!i\63
KR!dK2ȔP;Uo~`!Z`?t^le|Ιo=''dFfHL-rE-f fS	,,D.Sy7mIcI]mcK5q=d@9 mf
4*J辖ݶ=-EXXoMۡo9A*>"gh=B; a5A}O^)UbscQ,Hh:k,ʑN#qPNd1i0[3
50sUco.|
6(5,\`srk0Æ*WJ
NBDHGA`ే(|q,+c-ތ!?xC=rpJ6U֡;
C
oڠ]$`]Oh$gFu1s!]ĳERO+Y< \
曗
PDv
Sg/_t<8 cEW@j9?!N:gX˚GmNӍ"²Bjjr!+8.ڏ$n+FsjٙvuN.悇~\qQF zcu 0HZJNjvNVI}u)]I5]Ӛ,%;k;޽/QxYI޺v9;ꆮL۾"F|[phl Р/bATPSM&dw
6hǠ7U[	ɉ9o 3]UM6."W.k$#P'ޠed AHBCԪ/qH>/JǍu !/"Mw,3_r>T!Sog>3<Ʋ gK="s2-݇ǿZK|"$
/kc8 wRn+/D2jHX:Ca:E9#EYe@gyd]N^-X<ŔDаo1eP*祲֏r#ym&L T:0ܙ6_eX\G{={PTW@r8e`4Wx'pcf\WoF;wP}|Bǽ-~t7m3۶ 6L-O򦺋R3Y@pb4(+	
 t`k "wbҞ5A0!e̛雧W2.0k2SvIwH^bgDYYyĢx+P2ӪLxT>TkTAVIu=df2mNE-r rʏq>ƓAia,uHV<@I)Þg\
yVnL7/Sн-1Տ2)1t	I6UŦ&5 9TsL]PB1m0?x#bڗOjX'`9'8Dzro36rUKHiX"yr\EBo32\VB]#kxO݂=mj{2g9j}s+c7vYCɠda6@"0?
UDMZ3)Y1aubs؎-9@.j
%iQD=ؔnGD䩾Bj6 ɇV=!u
ǯ3F~`
'oA7&v-鸼?=xpȜwRa5T̽xQ 
ǹ-竪5o3sH/;fZHP`:>\R4\	J=tCYDh(
I0"F-At$UL&{DcVי4ݜM
Sy4,1VyI@Tes_
ZDlEOn˗zҕxYOjuu`$_8Ñ=@*܈mRwE搛pwvdBsdf@4w.V}tnr$Aّ	&˚KϒQ0]bwԝ-Q=&׌&]9=3̟Zj/N O<iDST:T6ȕ`%(Ҟj0]L\&CʽgN"QOW8Z;i%jf0R9c6s=I~OMD0Lb-Gf78*t祖A#I]L*LerŋzGc]wn2~k=gw5a>1ff q~l.h0eY:ғ+^u@P?S2YdTys'}U+ >h*O
SIlG3lgUD&!LA\!p(v'Lo+IA%q]Ng2	^/xzBp_y/,+mf8(Jy܀rTf
:V'Y"ejEi-<~,WKν{KaR%
O̩.1K2~\|/Sdv{ǃM:B# bd#XOmV.{&8KQ[r	z%WZlv
XUp%p~m~-YPYN-5.̡Y#ZVo!F$I|C|

p-
<$3|zaHԜHKw
*-٘?tO6*6jyZ2?Bҫ
 0m]zr@ԖJ+N?&vPQ ,0KG)5lK4ٙңz͎Ղd 6[cÄq2J(w8f Ƅ4smxƅR3dʼb1I.vY^).&L2yҏ-geŵ;9gA-lAIX
<<hi3,u.TfCz>pa븹&L@{РQwA*nĳ|.Ցe&]8LV6ZWD';y1T<|
Yn3ДN((sZĽte*,{_hJI)#emD;@?Tlid=yBAw[J~Q6;U9^6kF:0
ؾ]+۽#} aea_4KR
7T_&cBE)_3WZ>
hnM{bvza9nZxb{7XDzpjh.DU^r2
&#,+;iE\rŎLc5Н)\HD*Bi@^'U&RΥ֕qol5}@b'3jR:<Jr槐qw9'f`(Q"ʨ#v5\$PۈӮI(}"LuX+SVn0fb(otBUR2tXadKCY%x	󓃉2\:"ѐ[	?Hz,.wbLЋE:fEqJd9A"f˨ra]~,Ko^E=iA(F`O4V8x;gPڎjB>"
`F/HtFP>k੷6啣`P
HnKUN0p!_'EqyXvi3e'Dzb^
Mum))~#]XULBIr|+B@CU%$TQqTY
۾N>h0TA+-hgŎʜMo_=<?`L,A*<.Mu0M&`1x4>ŸDRuԙ[\L=Va[G/^Pq(3R@tŎ3xK@$+o
ok7|3/("Ή;>U33*p/8NM1`@Ҹw0#x'yd	]@bĂ
;Y-ϚOrFDfit݅[%1K|7Q@Q<OIE;WDKQs5.%}&TN*߽J}$]0P||ltg
ǃ.Ȩ-[8mB0z-LLةMfW*ɆnP,i~ފQM"0$w}5֖ty%Rm(+ܷmvҜgQZ@rXto
ŤVL?
pEZ9	],Ye&Q݂yG68aI6 ;'CƼԄ5sUhdvp=> 9W]1;O%{VZ&Μ~6wbT-^{<q&wġt%w4ô3e7XQm(mr#`cY44-ut.CHyw/הOm
ڂl]1S
`O]aL ˌ
E
`+~`Ʃx"
MSWbV</c
-s!^-qXd&o4z/:͋N|XW 
_b޾sHWA+ff{L
Ӷ3Ƿ`k6nHda8D9mҢ=vᣞi6~t,ՋَQ%^Iw0;T}-g9uY붨fXi2ۡ
Y6'cFɉ'F|[u+W|=4rL,4;+`yA#qW5unrm©a9~bG!Sd.S!Tw5u6ټ.>c(^e"lϳU&lB3cՃrP&Wx*Kq
ɲy8m"Gd]` QPˮDK+20\ɂ_=,	JBIGu.&/c(\	Ĭfâ`;W/s-q
|VP,s/wSHL6^	YeTyMXhW3?C_669؁<dJST]q)<@)TVH	 ŴO<ȓ܈k	ց8p=UOךɰ9qXTO?
`*Xl"?W6b\Qbm %Y;gkY%!76	E_yD(
بR	Z[Ǒҗq(+)$#wtS[mH%@yA0&ktX4jdHullرjhoPsCjﾳ.d
zWxWoG6fE}[I0qo1'ɳ8UeV#3 bu% o 'mPf8H=qj־:a+hl*xt/~Bpc^SՒM0BMh;lW%ir~/Z	S?|ad| ZMib*WlY7vEm\fZI>`,9)0
/c׸m.
;3f
5,|Uǫ9xg264?-YWdլVG{!ya{yplViC0N
*@A#X.zqY}(|[]-nl?_TN*'xHtzt!hY1XN31r-HMϧvg:O7>zJI|%8fgx,?%&
h0Qd*uFC noqꕑE؜
:,pF*x"BP<,'?.YQDC8%;%g=aυ(R/kD_-畍\a_t  w"jtjo
2R?T$MP46f05A
3h#bwVtlX:.VF+"jzy>Qgd]ޅP_.HV\F7Λg~KP6ƨ 9-\kl	_|A0eW?lx0b̄/zӻ6aEmMkq5 M73ǚGQݖl 'Ԫ88FT:v6ܢj FrMJڃ,2<	.wh9#N5s}be("^6FCMG@#}X-9jԛ;k|STչ}M<&3&"5YU?1-R4q:GeWu7MPzB]nȺ/?P/MFē-MjcMaYjU֊vrG#[Eq	(H&|HgU^ +EIQ"ԵA)S9ad 1b)cm,=Rga]rL1e<>*#$-ۦa9(7AwСLn̵Z#tLZo_.aO,nfhZ)ehzDsLД'W}p:9 WZaMH`t(@n+r5c*Xff^A O<&4 !H<Q^S.Ku\I&HAsx=Ò>Ŋgw,5"5h%eN&-`Y;B9F7ng|݀40kH2myU?5pQ .7#IPf+wb|E5Yl˸ unq ۯfMKϑֺ2T1Ѩ?%1p<_+"RVM:&9
o*e&$OdAG(6l$XYogG.=2 I QqBu/Ӷ"#Lu}+}$+M/+OsL[̠
Խ!>NPkLER!<[-^'_Q?Srd"6'd4B:.ASĺj6 Qrd*C.}<bd)*:*bRmɢͲBfL0:w8&>u`.]nBVKk"M.QcKke+'h3$D_'KCQQo
ݵ6uF){	Eǈ4($x{44՜Ɩ8}SN)Qtڠ209g76 gmתn2=L){	\{+'tPHm5W]KG={TZg
z|ύ?%('0.J^xf=,
6[cS+. -B1|bIe,Ir9͹3h"wkBzl##B.KdþBp<>JiV=e`y1
mY<xFqLtʏS8 N/#	k0NaPP
՚2,SBg"-n@q;`@<e2kB-H{yޯ UH
` b`Mϻ<.Цdv81'1hr% ǩQ3߰!5DxG^,Q
>_Dz" 
ܲ?oJ(#CW|ߢrDopzb
[OzH|=bwx5ńa2)SF**!	zpS
4Gƛ]VWE>1)+h!'sZ#Ȝ-ÕspUqf/721a|;Wh 2<F 7De#E_?0]QJ`P?PO=2aV?<z	Oi8M;*Z(ˇ-r,NV0PCTk_껉h
Rc6|'I{??9qMmhsaEmPL'6`aK^K+][XD
æuf%=%}˯ЊxsOY*Q?R=	F̌<79g9%$&ߡӕz Iї άPfRbc2
dc^ l&håK*{B2_1dTwwU+I-ي!2\Ȕc	DiUރ:mZ'gy"ld<XegSyM}uM)yG~ཱs@5bUCc]6Ho4)}	2BmV-XN;x&MO6`<o@JsE!0F$ȃ<@o|k:ȹlhi3K=޷94d;}=u#72?tJ3&క8e&Yޱwm*Kio"ܸ> T	|gf0eŤO{mJ|5Dܑc>F
"޲LH]LgSjd
h7׀z@;s2ftQ~&$h~ԔE<Yw[Kl`¦brmGDG۠H,qI{!Rt`Պd^G¬@@qyk5gTlʷʙ\%R׶,a	aD,cJCyx5;q'\o(Axp[?UJΙAZW=SuNE-,A*FQix#"/r+*2Pm
Fs˥><N|y<uU
42b߹r`^
|!~ß$)AM bh*7=嗴B&&9ɋROUeEa5uT
jqCQ@1Uc0
ch|.JMcҐ
WCuXbZa^	ӸPZnBRQ008f(bUhp=f>Ĝ\6a]vpI>'#5)8HݪEUD<i{H܁, o#)9GhqZW3ďG"OVHdrd[ iЬ1%g
(x6)WWO_
1ht6@Yj	1'ΧLםr_)līuр])DdٽFׯ;4~
*HyʺPF#_)9
\"y};qfԁ>w/y￘$U^rJ[jtdMP?+2.';!ֲlU4{"i6OR?URZ%T91*߅_g8Ձh%i̸3F-7^L,r!_k).
b'.q#($CA"6ʬLKa6nKp#B&1c%;4]4zT[3ɵ%m.jxْ@ ԠI@w90[F*UXY]fsaEo/ FcʌomZ&i8Jzy˙7皧pxaw>FfN5pB  ;۟7T۲i(X9xe+OPGIr4B&,܆AC`aL'nfxw,L4-BěyeޕjG`CU՗"xc%]cXmsc6".Ղ?66O\Դ[S("ܶ֎P9K9w*bdbZ$K&WViU<K67n)ŗ+myx&;Y!ѣ=tH&ƒɕ'ch j\rPs ]EiEYvw^p`@ŭ$N0Æӯ{c8x?iJ(lsf6I{DUY.e%џkXaąT.MtEk=a0f}ki>}{Yʒ12F"3ht%	{BƷ8	G[DwL~s$n'䔷MA9QW +2}'A+,|0.zEVpv.gCͮ/ix?=R>RL{H=}Pu͈6hep#'^A
+Xd m^E>tR-sB{ZL&.S¤د$p8T-6c*#cF0kdL)Ⱥ:;ٛ:!V[rQ J2,eS|
Np&E_)N/56ރ|mL&k|<^yKZ{σfq,inUPimC熀h܋
o5⭤ɲ[z%}~KM>d<	C,侩y+,6lMwS M,A談C(ݽ,3
AwwRm V	Ax6
BAݷ&(}TKltҬ°Z1d=x,@р1A),O4;^IW"{mdZPM;#y,&f_eN%V`&O|UtqB:0~fUz4&hՓ<ބQ 8=N^DfYBL5A6Beoԙΐ}An5*N!H(S`W`'~N"`7}yYIY"F\ wqk]/M*@LR	!Ih鶱s7KquEP6f s<@7mH<UIKPe1EI1QA$@&!ˍp0.}VvjʬUS<Kv|ur}OŜ,;Bmx qh<&9śTR 4%k2TmMR߳òqLdiM{i;r:dvXal@:Sň5iDO	
gEq}:* `eRFw)Oo\؇wYFuR(`Sf.nn%!7CD~Y-IBb/]-ac)
NQ`obÊC_4|%	ံyngFX=]`@\3IQM@X4oӧ[=5Td:4
JeXպ[8vG,`=0YF=<(4Ӹ Xe&S<pg0b( e&)	ŬP&ئ&ɜW DiY*O!BI<!NLbIc@L׵E%6d;ч#dV+
SY̆2?$OTCRAh:yQ+`{٫`/?
u+,ّUdÝPNDIbhَC6l!x \u:'	|J7λIDm-
ǮՈ5Js7`ut
fUJ"=xz:'*4ڍlR"j2q1#B
1wμPό-W`Gs!V
j Q~%QX]l2ByuS@`;:BZul.0UJS)6q>ُˉÄulX}[N&ǗeEy~IFiXmVB;zAn*kiP<.
KI5(**`LØN?6:H	/Mɐx[K㱳ÔÁoz@G񙹛&4YYFh;*b92jxK9L-!.[&:.G
K>Q>W0n<ZFr$G>κ#ga}tO_V;lT9S8t1kwvm6'8ֻ:LǞT*Z
\t&ls_exl$,ˆma4ڴKÅh-lˬvC?e涾+1v*Xt3c5@>G]-nnAȊ.@f	Y{	8Y&igLJlq
ʊJ(@ϿOx$i̾8b\>8MY(eJ=29C=lrBi3n&:ʥ¸Y
aaeQk:O"hչ@DExz [k72F
'G;X9TgKFu,i/	;T#{(ClX	Gh1X."y''UC4蝥Os)4wmJ 咳ACI__8T0yE$Ä^aʴMl{

iRB4BKn\ER۞[gcߨL$*nʌަ=
`FnNWHxFK
Y&h
! -J ٥`G}]L])Ky4Wp){**(_Fps=ur;Fo삠TY%QAM
Ԉ*_CKqx淁R2e"+y>K^	pYYYFt)Ԋݫu]b_Z+
LNL`-#|zTYy7Y{!R'+?3?$V*:eZb9M'
.iӷ>_\yEU\UuY1Έ@S_$(IyLh.wp6|zH
rUh|Z[_M 3P㦠D0r7PH)Wrbn>8(;%j؁+:Q`0,1i)BC#C)j~|M)Uool
vYx-(U_\̴ZǾ2Stz]aXYK2'3
p\m$+NMb
AV3,A]CVO/Jh.h1usVhi3qM2<SX4KtbDܸv#cC[Rۭ\QG
#播i1.5cilF01bR8NЃi"Qd.w k# $ۼ{1;pa5VR0V"FuאZd	r{%0Ǻ_ق-$vz&9-^Qf[аM&BKx@	QRSeԶt֏k"d)DEΔADSEc5y":n-ٻ@^h	'a]ߝ7NZ9]m0a޸ZVŻ4&
u:lB{5 |
<j8އy
+G1\i,F+BR(gq98C>3x4.ZHNBɣ GN*蒌ǟCR8,7IUga0DduTRbbQQu,<r97Aɺ-qkK,`2k`vE/
\'iSME};eЈu|Y~QRtbTUP/eiPa:.
:6F4A+'RhKhl<L?dRd%|zᆛz6sJ(?w':s4A|ڇM;wɒ1ҙ4!h`fGM.#V2XwAp&wIԁʵ
ぴp5\le!VwhI?$DEfzU|\E+F:N#Ȩ.dKA])YZ 8Y
59 8Z횫
A%ߧBwoV"'DT!ѝL_JdM[[$-Ծ[SmJ_ +zHH~`jt5)(In82FPĢa(\
2[gwcyy1MѴU1mT>mv $ȬF7$xieFf_/L3o<3;q,T5v*065Z9D0̨;Ws|D;QbdUD:E&:E&Vd`,_Ϧ+n6l7z0?^¹vih+QgC-zdV7(B4hZ~q%*J	)^5!#nW䅸h=*=a}n#S?LkC?5X'f>j{rб&9AB}>n"iV/o\a )z>"4h3|\X"g2qB"!xݏѮqp3UH3h)_dM$uR\vh) HgUwLKI֛K 6.uQoH0)o e潫`&]vaֲ6޲N!mVbńh,xk1\1Gn
ƻꘁ,`IqKybpy<6o]&oL|iFR:N?Gx:SN7{A
Q0Do
ÑQ\6uHCsq꠲}懿hi<bZ2aܨ&H
l-l[#
f7`{6XʿHU|@8=CwtQmh'敷4Ձ^0O/kJNHWM1b'LE5bZ9>0Hg_oJs9@	lr`ϥo+	"2Fbq\,* SUA	Lۚ{eZd0	H`c{)դrK,I`	2)s	9<Byv6`%:3 ftڢd1jMqB

d
rǗe쩄H~\?!ex7[5ZG|>dC=30e y*?<X0ZR^sSB79BMMG/Hbp;Cd+19_oy&uY=Z(
(
-e"rpXZ'[4I;Y$iGU6yvJG	d 19p. 
X&(3[2erO9CX n
+酶")Wį	Je!/҅f#OTtEe3ymDDC|d1Eba8+#>\n4fKRkӦl޾NU	5(H=?j
QFXr"	ֹ&:vL{+W$$``E8֋A}F7n@HPf)^0[KP`Wt뤶. ?-)c:yB^*IJvh&QBypsGiůk g+5iXsD]&"x͠W<-s0vC
2@*87o]Q,;2ycUkh(l"8}fK8kk;2;T9GG;D+gMXu%`:ǎQ& Àkc1_tO!:ehmqEEC~{0
Ty_LcC
ت*k`&RN⮄b;زI&qjLg1V0@A%{Щ:M"D,\
x_GKbċ0Uq9֠+PW48[-P,j6̵!<z;U@0@_Ԛoy7/uՂꖪwMɨ#%,ϯj@*>ڮs~lT(`nxc'2gnC>ÔiqRGX.:X]mci[o`9K"vYo  V@9!ԗQe3YDbpj(6"HiD;͜G1҅C2%eTF	G<̻Pȯ
,*>S75s7rX"tv#.b|Ő'c|7Db]#c,1u~\4gql%E`otQ!-LQLQLNy $`ۊpb,INQd=	stX̭={f./O:[\g%5t2b-д]7Ec޴D%V ݦ	znXSzE4B^:,&!B* (lepC뙛
%qݐYa<[,n
}<LJfkFs/#&KH,ev3E,	-$y(ȩ&]߲āhsؒ#THv=^:R%v	eYl
U@P1͍.%xbO;F29LXklt1 ˄'[~5PC]xz#6$t&-F[#K!_KQ*{i2}/8Y٧Dg}`>3VJQ1$mT<-h^rphkYӠ2v8Ұxh/]ltV0#%Nx޻tD-o DTk|"+Lzwff!8X7Ap.r?~̔l!m6J+x<(x0Fs&[|[NTY̎eUjJ?/d˱3"ۢhhՎG,ZVjL]e-M]Vod[W9b
J1pl|Փ+J'!ȅ"W
=uPq<zj$3#FRiU3I4EpnzQk}4/ IX.Vɷ<cV&D$qp>h])8̥P^sA8;hd&f"s!:OjtFc\ۨV:V(F[ȱnۮֵC\8=7d5.Ert^"7Y'
ms:oņ
z~WRS,IN:10krA
g~R=VCE^[
ZE+Z!D?#;aj׆uLCI lJ]MOFr3 
 S&Ч\uB}ku,04 Qk"D(Y&Kx28s/̡wNC-w
}`'qLƑ5섛RbPCzF=Q?XH?)Wl(#<Bc2"{ 񾗫<kH>q"HJbERAdkSAt°9=\gJ\/ ˪؀ʷz x5O{9k*3ha>Tze{oZ
dۙv>6d<ALj-7[\Eא;ȕSWj1H``nI3h)qOm[6+Ej9" WZYՂ.]AM"`:lE
)KM+{Xeτ.Jw!w}^CJi@woyE+ڐn}`I}K]Dz02b@}Pfj
X'AEb~*ȕfEؤ(
PC\uRrFF%!z&VnQTKL3N &Ni[o챿rm9U?,	/3]Y^3xkt˾tdHc SIv0KHs9nV웶:9M3׎ټ$ćOҰp^glG^>!LtH/Zdz~K4-y/lT^R,x ~-DT
}'r/O9 	ZhcsWb|CyB5]AQ(`Q
\sF`Xq/)Wl^$c[2xҾRwO܁ףȐy13 V㷃mly\W61-ݦlSD1Q:iHvIPʏnCקmoQGgcɏK.kWб!
1If"THY6zF%`O0`'e[``:Xgٙδw;>$Ni0~IaHUkϺ~//Ԋf(P6el"3>1щa(ڷH**{"D+VBe1g9ˠ(+ƗL+a51!b2u~3v4<'!qc<H9d*f#TD	{,I膗ZXcN@^jap6Vnq
o6"λ࢑tĎN<ӜDY|4ТFֵNpͽ'f33~q\c`4ckH
,7%1e䙖>Qb cBizx*8qY5H(ݰ_֑wYYfLy,NQetQm^ue)q%Q&~*ɣ2a߽砑$\C,"c 6
>Q*lk j1a	_"5ۆSqSOoi5f_HL+0qP]փSȊJ&'i֏7%_|x)H6KQ X_,굩"c>w6hqKp(p7f#<&zzzoJ^U>@Uu0)PlZ󼞋̃n*iST/2p7<&ףVLQaR
<tcu)_|IڌF3'Kc|
>3
mdT-{kR?DWЩdD*%92ڃKq'fga梿$QGCZg.tLϦ'NKr.;n<|Ed 7 ޾c$=>/u+NCraq:VQOL*뒄7d'
<Cnk\M>~r(mVTYw":^͚}o!xobzTȉY#f"gɍ\^c=]J`~9UhBܥ>`zش&*(ad{.>ǿCmƉU|K6-o"[KMW?-g
j_s(r[piqv
?n°lc#Go0	h3.ZĤW^C.|aGJ7	RVuD_ԛ\T3mX//c4_oF|Yfws> o
7fx>{Դ0
|	< &J8/N]L*N(i=}U@ugAad@h3.n&	J5Dkjr
1ͺr'yJ&J(/QZfa`+,[4ժ'"֠"nL;i&ě%)hfZ"OX_E0XL!ړ4%K
غ}T*E6T²QJvJa.,=WLٱ,
'1||J0%xd._l V:.4y獙Ѝ&}WNT١f>DZx$,1>wER.~1z<b#&qP{8 s\WѸ$KR?HD9IsS팇LA9ET%*v!?iDуW]r>CsxJC6FvW,2 ̲)bOG`8|hXyŅpYOd'
ngD'\	ѻPҵOAEe4!3&~OJZ1_3ReFqLq1'P  bKM<EU&X63a[~
$7o
Dz( 6bsVToO/D|5T]L[ӫ]Q,K7_p^r_ 08Na)
iI\fqx
cs{SI5@mHIvRY'y3ykrd|?Nv	"w@is oq5hLcW2/Ys4̢2,XǼ|w5OeL%7?Zdݒ
Y ܸ٥hmQEjfN@U׫P5*&6C@X/yQXSDDi\X.m%]ơO#$0d^Ŋ8-@	=(8V xi%3e:ݤdfV;tzD7p)NE#9eKO;X~oY_p/:M[j	<XD|O)Ts~	.|TLd,,#iZRg}xB7Oz榮|ȊFj+g3YJ͈i԰2٫ϛa]!w SЪ`D4ܚ	cu\NU{Y&_Y[jD,K-hx;iI$n,.#Wd֨6F
^xbb5A]4hc ͿeQIÄۅU#
2i>L_!,86Ǌ*:c0,|DTdr jR"=TAYZ2Q TIe]RS(|c)upN-FpH2CUsvp)[?(N*>Xj:cBdTr 2WItQqULi< 4~.Ns<UĚ7LLh>	{|양]`'&;یY]gB^4E~R`Vn̊?=yF}wf\:pY
{3S0_ݰ<ln?P3x*MPZn胤!!GʄsADh3Vc$MƼg2qA^ zQ74$;Ґ["RюK'Ҵ*"(ނ(K"^D;y6N$"]|mĪ	o~`(&2zE>861oZRIsm^>HZԙK`㿮E?T;~{`W*9N"L*҈Et\so>$fC<'a&dYuV-0VDVll  u1FfQL][Ī/e]eדhtdUKfKJ"*RB;Ffɖ%(W:xLV&` |d9ܘ&&TIEK('Z/7
˳PC/l'n#[tm5x"Jjxx>yk
ڍRȓ e;(﫸C	Uw.Fc~d_`AQ`laBTƊc_]Dk6h-ɆУRηi=!<ϛ3 0ȼ1H8Tnk5eP5|OT|6U{q%~)/%wǣf/(]9xm3qx
n&[	N!yiD\cQHߐ 5rH"50'Z?G8h@cdjqlbeO8e1BOH>ܙ?/~s{웤_\qXXT5 D%|1D
j!#%PJʂspTfR}J/CDxhl+bqW/FNQQ
iͮ-zŨ7z5˸-a]gnz$Z9f(M-P+'F1Hm\RvITut:%7.Pwn{|2jf5й#.+0%4p!UzV'olVX`J$P1]Qq0DOT@P-4-<-s9wg^šfs/,0Mŕ(ew5z!+FegA#B7:/s^|kCt^kXM7`*mX=f.@y+OWIr>
?r+E`ՙ`sބ+?	fH(5㓨)V悛lcʮ	\ͭ!n9:X0ҍv
HNlU0Up%?&K@]R̙3
(#vl
M_FNN6٢*H!Lerl[p&d>gUda&rtE꠰ UhO!
ʃWX_F@[R0&N=>0e8>ݷ
8&55ydzޝ/}/
R&dTѡD*ϽRh'jȻd+ 0'0-+Jg6|~+=ϔ`Atz+u
@ośfn"x!J|~d1GU&J~ ^g)[{[z_;r+Ϙ0E]5"bMBV#Q;&	}JX]9pe? 1X\z󆺲̄dmmŨM?_Dѝbm^ENS+vCx'i(-/4y99t'+Yw̉ox>$5/f# OVզCrM$5bRIdNo-Y-3 5jґx}zXN]"T>75vm~6ϴ~NjBf&p)sICX8)NjzF4TUDҴMS.xW0%D+<LTuSGZ0R%XEEn59T
F`P9 e$n8x)	͑Х,bF@}F.ƜrrU;.
*D@ EeFg,EYaڰ۽/>/x+2`Bz
&VַJ3Pwm4
^"pO]a@P(5`r5n$pd'It LG怓dUAx-G.5
3hh=f)3;uSג&M)T>i**#/:Xt)ɘL	I6@i`p-NĐ
z/0\1l/h;e:ɯSE݁;k\`ao0/=dAFLͣ'獭4DɄAՅ>)BQ=7YxZ/iƔ.
6e^46;X`on^N&-׆c]_8@!e3(ސoL4=6Wm5"ڊnNd_c^T;\&u,lHH(LW#
Vlrpd~GɾZ6ge}NfZ16`M"-a}k#7_n2v	!%S
@IUH
/&5ǆ	ǳ=_b4~2iW0;w[j4)zj{-)ŉW(2_O23n1cQDƛ%Bp	
lr<1
{ݳxCsNYÛ$j-taQ	#fÄ}rkHxP%@vZ6bup8R_qF,[:#ՀBҔj1%uE@-v l<φ+ ~ev2i6,8i	X`7^"-ڜ"wW3fb7*{Izm|*KZT\@Eixkv~+@U4s3`fzeaiRGDa"g(A ӥ3J,hi\`5}L̇ѷnvߊ!=plD~"y)Z̥U|őVWjRI5`{0HD:$PFg5mQDIښ7bܢ%:PK!(oe<#1? f{uZ8ǌ#ߚ SP`:y{I#zgTFF[oziIiii*Jg+BXP1/jL@%
|F-$m~j"*UevA?鹂S:k&kGdqDBApv)40AA^G͆?U!`wDNbD#eϸLLus-d8ɞAAfTi8Ce
{><C/մ=d_U~CHrD頗tQm&CJ#L51h"xܰboN+,PJW
[g{;*ZkEt^X**멄KFl;GA_6D!F'`yr5
bS4V 
r_N`% y٤semBM.[Qh7	MZ\1NL X*E7QمX0N&~"/6)q#qrtiu2g4E_NMpv@rB~6˲DQ
M4, d&&k$(
D	n_0y#(eD_r#uQROّw~Y	8$C
x2_cmKՆ]PPoD;ͼtG$o)YSM0o,Gs.TFS̫bɅv1;A>I~Jq>DX,ksG[O0@@=;[ɪXSxe
vJ^
h }+'ʌ$Y	=!?j #A2+5M<vPakӪ	{8Ψ
aS{h:!;k`++ߜy

ĝQn*>C{4iLvb 0P#-.+(wKlз
<0Z%:D*DoUФOxoׄs48YaV:x=z V޽<i\}֦R&)!
T	HѣoseZy~ q#J*&^,/-(-#X`:׭SYVfJī5n4f!1mG<w*6KG$jF_WQr;%,ASJW@;({l]ACGIz0MN?+˾^&?[$.lbaT⠝q pDE^]*WXv2lRʿ#IRqN%tCmB6|4.(a;</[y잉Fzn]W`f֨;pӃ`q&edc)(ĆҫuR3!-.XG	
)6EO@Q"t (ڶB䬫:Wq0*C
SW6@gkT^*l%LY
N	W6zTŃ"-i^%߁5=S)'lOiQ4.p-$
SDh^1xW6|+ұtMPedqX|DKe4y]
Obq-|4l_{.qdD"e8&gx7{1'v:qgbI60%ac5,PIua*Ibp+~V;d*L2y偹6!+litdM|(*I{umMY0mք[0ϲ<9g%ҾfPsCM{	4xHrrR1\ÊdǪ"ɕ7WY16wWL"lG3|:c%G{r^)3УͶg9d|ӷx뫄肴0MZ%a$$~:&oƹHVY2q0 me@qy2FF9h5aWa `0y@I3Jg)_texYG6`@!wĬ}qoʧ7vjuYTA&b2\b1mq=GϯO`GMpU#&b59*8w[L(JsEoEa/po.)А`[gbp2z#9\cTDcm0O`880Qc&Ed`fq~;KW^njiP_l@!֊m9>9sgYЁ{
Gt OUEOk
1)^\=Ϟbj4Ągdu""Oo
tэM<UbqΐM`*4P見$`P%oES(g,9a.23(dyN7y;&1	@R=i]2,X|b߱#P=KUkgeٽeykVuEi1b< _(0H$sf*aLFmy]J>aS6:(3KW2!χoQXT&K[B/sG'2á}W,3.
q#P]-J%v[2Kƒ3Q'_mxSeA&nwgpISe+L)RCK)~[@޴D_Y=f+6by$k1FkTJ$ޑ`*o2$$Nnw9eZM~B0),Y	f;+P&W$E4m,7vlaὄHOZX@jnǡv!Si;=U]2fXf4luXl26!qc~X@4r4-GF͢<'}5`"kR<LRT(_EAE
|dMG:h*b OP|NoW_ba
^
Idż0&\!H4\0Ud&3: bETg[9
#Oӵ c{VC
5ܿ)JƻffrʀTXo,6Q;YP-]WIOqp;o" pLPॸ61ڰy6 ~raAeFf/߃3>0PWqވD%y[SwV#J%KnXh`n>8lpd[5Z-\F&ώƁ&ۥnjmp/1ӕYzvI_l5L ~uʯI5/P eoX]rR+bQW1jRFi3rb_¶Gn[6aXIN2h]e6rTVPk6v>67 m'9zLXo'pW)	D{ْ4#6-=[{;4$DaS"/
aӖY8f ]K42hE!noэy#A<́G	{ﱠLweJВ%ɷWn)7-Oe(w1|Doy/+Ii4^P3+{(Se,mˍ`*&
ð\EWy0/2	j3X
|ǾͧUS @I01eDR`(ǹq7H(ey[I7|9&S"6Ga:TH o;:4x%f$JlBSL#{`3<L\X}~7I0d7pF`8$;`
q
O'4X4hSMvm}E``R;I[k, QCqb\o>7ae[{*ŭ2}h:*EiLfr_.	w}{RF8_B+ŌH"^L*_a/XK`E}c6	>C^O;P+oQYU-VcR\K!,'jR2Q):k>-?/; .M$-U^m^i^<0"f5ةaA
׆0/\Dq'=ZdDr\ЂnL"	Ot
NZff'R*++S`78557*#jƘtW>=.y̿twxu~>bRn+)6hKs	B+qpY& 0MT6'YH{$x?%LM:T倗!rt@YZ;EQhKaa+epMp7FGr|Y
x>77FdnT-& G}Xn)-[0?MwfcTJu"54k`:2[^KYc
G0d2ws	F!D1/pђn
9+=|ޢ=2Z8CAhM[DSx5Bc58<vs|!#>1
tc[Js;E$JB,$8g3Z+kMR<AtBEXP[ >,jbC[lv2n\Ϡ@~#밸,J/r0!M>ڶs,)1xW^=lbkg}|+2Su܂S	t!sM!AHĨ"^˾;66a Cl͎dS*+)p6>SQwԘo+h Sbua+S3<YнL<\MjI2ADȨSa[c|#fs;/tbAbjF`RԻ967
W՛ǐDRE
>E܌W]X5;:c|Щ(_wcs0[l r~mܸ/jS#sގnNEKT0mћ,D/5y4Qn+B;i:y*ugVuC_>4	Oͨ5m-r[n s%'
$ɂz	'0}[3i&w-^)>;
X'IţtYezclI00Ư6Vsۙ.N
v,`l>T""ԕڌtE pcRy8<OK&58#/$U::q
(+r31	^PճmJS0y;iHMJ^.6'c=U޴6P~wvZXOD;Qħp}cGƖ(sUEB̠ãѕ`{1>Z:^a:$ @YL
N۞Mfk7߾a ?X4sښP91 d
פZYnې'q8áh(@)DAI;ss+B=6NwTq	^0LR{3
yLʽCo5<KwcmY&fD!b#mx	+4Hpiq>Gqgdޑ:q//Ճ2PkHr::w i<h[yKeBI\1-?[:pnE"⮋M>w3Ca/ &	$U;ݸ.iX
IMc$	ēK}@ѥ;tRwwctcEVz{Rvh۲cGp(1bx5lt#YL/5)-NG)bMEh`'鼶>5+|.w3AC2bd
{:lI$8'ǌB@Z,2 [yEňgLфF,i~R,]%CxDޓk?TUOK\q8ެE&#wgLSyu
9jQ	G5Y=GcxN

#.MPѺ*BJepډ&z9(okG$!18(x3[>)pv-ep )OTbjɸ7&v'.pGӵ÷e"E#,?c=8KכLd0G {|MnneX1yMy7>l8:^GTeW[KT[
v}Т*VE2ZWu"#6՘P- kQ]	Ӹ@Iי5°J(d0_1y~2edW힚BE/aK$	EOb+IX].+s$4֦a7Md,jd)|O8
 5KPJ"N'(Z@8O]Rcjw\YU3	fD$1$
Fazn9Iͬ,ErQ
 S-,t2<E(jA 4Q"MsXS(V!Ƣ1avflBg	θ<p(4*3Ȯ"Hc)Qb~#qC14ct\СظbŜo:kmkaJYp5s6P]NyTQzOt#ک*xJpMRų*$\JW'SV1iE@ըW>&J*1vOGbsl
oY>ߞˣXp?9Iy[UgY%(/ŦS>|+
ΖLpmxhO
Ɣc~GhLd	V5]gKYBFBʿ6<r!ZD;v^Y82c'FT!9i~ά^AYi}X Ƅ3Tf/	ƫ^Bw3785T#j`|Y2]A4?3eÜb6\X,V*yE9jb 5*܍zJbɔarH)@tT1l7?R82BM$y>=V"/9@fި$Ie%`?65YRk	`(7̆pFc57 N{r3xc3+b&	.,(:0c4MuAnz/ͪ%;%__sޕ\3c6)уGo.L\A9$,~BpqGzMs1鐅}"b.-˰{I,v5S\o 6kX/n}FD=)rˣ:Y5Q~wp@kڌfsziѐeX]2Y삩8fX[ojIL4n!,q5_M|1fc="
/8rc)a<;h硼h OD8*l̩Aʦut|a75B9!ܷ6kjb)#)I(4X\
x|S.A>fpZ52'*|2&/1Wi3IɂσZ5bˏ6@	V\p!3B`;cHi;!BkO9y߿KѻËtQwapׄS,Tވ['MUA
ԨIB`h&۾93ݭH8$?ӈ@"|̚`L#`Πi'
h5!p@3ېƧ%a^y42Rmq$}y/Ԇr"Կ;$c{c<3X:BI
-ICACP!@I;#Mx%!~8TM$cPmҠB
s81
OB(LZP(}YR^]Hepw^O\JD}:8{֣CHM{6#kC
f׉AY@E
0	U/XDk;bE8Hb6kJKTA"vj+Y1+Ԭ0AJ
w Ƞlփ\O<0jI
"(o+T̄֖d%ıq~CVdhaZXY|diYZp8 ;(I-(O oNDSod¥	OQ2g~ҽ?<ImuXy>^q)'l"1iPԾqڼI)Yc@>\TJY@'UH|uophydjSv^X;#y)n42'i+q?䌖vQE#
7˿?G*\~lYa(yA[D$K
%6J"*
=STF 
B{V,J+Xi\
y{[DbMx40TmxJwe6p8ecD)VF%9"ݷ|<%򐨠iU C!0 Txu},.I呼I/@	lv>gIkVO0	XWN 6.)lC,ÅQU$V=ۑvqSAO:2F#9cקҵPa_Y]	1e,ͳ6,<H*1}ჼ=q?!?(#fh;nK>UNm}f8XzZFGH]brx8ѲRȄqčF8d}]%<
a[Wv.x 쬡jخ˰	{{YGܺ(LnW=yj31 1]j%uíX	6epWЋlPԒC/c	u<E2pB1>nqG@hx͛Em:J(GW=
U2d/,8&4pM
2!ees%$"kQlZXGrkBLkT8&7KT4)$*Ł4sMWU@d.2-~e&ta}_}EBA!Yw
$h@EfV~˳P
3!XA3KF0$:UHKK*23Pc7"14|g"d0- ቨ%"ͤoQWe%d:m	KI!~.]3&65*mdN]_-4:㵆hIܿÊ^Z6xˑZ]L0o<az@½`ԽBP^w,OtCrNE47MⲺYTn7&xƕ
1s^Ʀ8ӿA,TbW=ÈYw4ke2Qd
~ZWC%4pd( - @BeN`Q׈Lxsdƹ7>EuTig%>֜V,t\}
;а-b[0x 5CmLm2qmW>u/e
LY&
-
N=-E
<qraԻgܲ0Ft
I`\%ZI'Kz
-$e󜀖J.Q@J.;~0zN)G̟	[)QKRzbA.bSH09<'j.,07XiiR(TTC[݄ZR8%1!^BpMC_tɳ82 ŋc	l82DPJ~eD&'S'HMgdw^Ջ0+V=w9ho1,{ޯ.Kx%H}t<^PI)Qx6׻HXd%uRcE$ö2׫Z/WUud7C(J¾:rhwGbC1-1>荦dy=	eL)sXzG\l܃}|Y[UW@\[.7M(a3:RCc0o
O!hibֱAQV'mQ"%#T{y3mG؛Ԥzha|e+F?Me'oSxrrOQv氰pH4pw%A&CCpk^d {EoĢoG[yz0i;eFǴBD
XxR3~IʘNB(zyjLVF
{>YStjnQb,\֢(/L`Y^鱶lZn$}YcR,^
5F~>0n~0Tj*)/6ChhX,[@\8fr+(,_%kh_K.R*cIw*S*%+{GjBݓ.jt8zGh̋6vrN>d?VH
<Ւl^S0bdL^~T(p|ű'9e<ĞDi
wµ6c
xCxr,J2ea0Oe
2RW^w0nXUǤ[}Dʨ4#L)s:LCQٴ0&&D+pA>ZȦ3%E=up)]>AIPc=xLᲭJӉ-a{5(L±dJ"
Be/-y!9HKј	<cʯSp4KII(ĆuIDY !%RvzWc~~f>Pr*q}DV;}w|ȡ	~\0vȱf*/S2 T 巘\Ӊԝۓgs9GL~`,Ó `HM]'1]=ݐShBHXo"_*Xz@&YF&)#lxߏr|3Sp*|6[9'&Cf\ AS1>A"`}\{]LE ƩqP7G1A>>1#G}쒛a{79PpASdC U =qaĚ:Z!><|	UR~oBL`QViq/7Hq&wao<Ǒ9\bTS-R3VTY_T^ANo*ӱw(= +\'OE8aFe(
u@{NN$,vrEv_xc-u%Vmf@f{xļ̾YSv&^YXG:Lzl'a/6v{:\g")"^3Yu[YPT+DFMD{]OB,ހCy2בipgXEtv%V;Dr5p^>0| Z`#m⨙pCΨ'B%<=	{$N<L2[L,u%Y{b^i×`Xq6T'JQDr|tw-*nK)n3-^ാ,Ε s[v-dGvOʚG6-?\l3M3C#<1zAz.5"q,b(\w"f0?wĸҼ5EFHq2ڑQw(dtA<G~ݑ#p=rZ言2{*UA e0UVIZ^rY;QU^0ժx<ܵcf=RNG|7,_<Z.6u4QwY~Y㵱3VFqX
l]g94}98"yzaxi0Bd[NCmQnttDLtwdh>49ȞڮX^s
7[«)
	&{.2r_{L#z|u M_Uе[,XD"	OG<+p%xNV!}@'ЋGIrW)6S`ks@lpi{Mm*VOC%qwCaF-\JTe{ODzBOVk)
Xevu`i&
*粤+x(fdY0gGGyvFǎvĽMS,%AL804pj&e'Nn:}4EZv؁UMn,bg)[V6[6o"#X<@ҨРָf@:R:fzEo_R)F6iu[a?RCr9QXn!_T\O
	'J仅.Tue!h^
 Q  OU04νnzEҀc7yjw./tʽ(x*J#ֿXLG`
GeuUfQ.A9Px\\g7+p {%CcDݎcyhR;ʫ3Z i<YQ'K\/ԨR`R28<UfQnǣP:|!XM "2'^Մ@" \}ZL[ 
3}CZL#{)wr23*O׺&i=xFal562
d)ߝRLjy5vYx-^aΆ-҃9,2MN:
u$?_Ҁt'V!tH3Ρ3UDbd=5[lXB!0 Zl|0,r U"hFRH~xhT~Ţb[	6GlᑄKY%c>c
INՑŽ%Vsލx*fGiЦ|&j~Sus)Du<'SLb-_hULjE
r:Gw$ұukŊSK9Y
 rVm}8JwD"K<ƹ]F9QzanZ'*ׇv`էP{'1Ԯ$21f˽,8 W'29*?iL4jRMÝ?ᡄ䣋MySuK2G+	Aå Z.rQWsV29;XWS2:ZN础("(<6AEaz#Vq%lF+XuZ%Ѩ6ReM$)e:y>"o]^ڸ	;snFd\/,YD[[!g̼ÊtH$K*>3M4**	YnTJ.䉽yjaϘ'#Y
zUW2 u@JMF
ț~EҌ;ѪGbEd
J@
q` w&P)FK2t襡%hnmzvZZj7Kp{!,1unƪ}_{\@ANIrGxOVԑ19
.y+dNاd35tan<vۙ.QpeD3bBh{,]/g.p%#Fc44w>UZ/QWRW/AƲK_'Fd#WX:i֧՜98<:{guUIF4~ C}68\|q֑Gm]y<C2xoBT#o˖?\>(g{{дxxxEjxReJܢ,=giBo1K(=#}ZtVoXܳKds*%Xmb䛲@'u̩- G'^"#zڀWIadWƙ ?2^EWYB/_ԫ2EFr-?5u P Cβ^AځG@?l͙6E0UĀt!d0oSF@n3:o=Y^K`HPn3_JH}M:0O1]v
^B^,]Z:y"(
y9:쎾ys'aѕ8Keh&[&x[ia<DD0΀Ç+.R$1ƃZUzȇ&k
ͩUL0}ȳhA\:5suI;o>ZhTCEv<]I(-73-SV5PZbP_t@j_(b\jg3&nv3x6Sѐovť0$H0
A8ʞ'3{0L\ 7LM_*=m-XB%t^AA2Qx\)sH(dNAi䬮\kn/qx9פr'sQc8%.Po`TWSu)y=z4GPJ,EAux'ҳ'L_+ӷJ8/aqO'/BY> ɉwr(N xÛؒ
2_pKܩ֓`L!6R
gU6Agpovc[N[	2mq,Ds
{<vQ36aer j?"In%
s-dD5%!Ј(VN>G&&60JpA+T&88ޗǼJiUD9^tAow{^Bn*c)L]W ҥ!T+MWJ0jbљ&@k_x^Ւ7TzXsinLW:2~$0w
HNע|/s-^	j@NM(mC8
6#D{z{'P-h'y%3q_T`$8[k4*T/48q{sMUn-śr򲰌njլ̭ĳ]5+bjijw֓capbhkj8}4f+<ˍ=!.
X@v| 	(x1Lvۼ9sXCmaXkc@llCKgRȃg!w"$p/pXeػ!f:$IҭW
'Gǚ<*HKHf
 EN@֗ܢuMECk"]1G{?44'`֦7r,1IVA;nfˣt	9i/dqbpwTxzk_BO#.Fbݖ{!Xظ*%X 3ڹKct4/ƒ'rf "bch{|YUU@9iSON뾼jDAcڈIx+0yƑ/Qk@ŵp}8\|D CfpܳtN
+gի ^WΨb̝рuIػÛ!e|`B	Ԟc1JNBu:οp8oGV'8QxnX3J6E:%|♗b[Z8^90ѽd'U*Y"!X֯V87XSST?_rV*̖R{سXȖ_"HđմQ~8DH\>?ȴNB7-vyB;`T7*VCܬޞF
J9W$Trc'ؾF~'ʴIAԳVeD̨Xff
0
jA^(1ckszc,6
ށ6]0%X48HQڐ!'_t&Ap	&
6KToQQ6bAxֲܒC VUƞ>
7|GI*ΐ	j#4J`ko.p|70eA57űfa{R`+F&"a>$v˂ኌ.^s<>/bDI9LK̷e[2Ძ/T(&aoO׊sX,˔[$:1#<a2N΍wб!.6yN\ uwp0_b+;	`x
Frޖ	Ȥ47OFM<6$0'|@hc2@3(ěX5@;?^b?L++CZ5uT.w eppxi q|4"ؑnJ2CEov_" @"Z
'.Cr.yk:@b~'e><Rnk"(e c"h`e`O8#=]\2%{pFLdSSRd`
B?y+'~ jEb/U?&o}$AjL]R*p\=ISwyF^jDc\5v"XUE(6IUcYW76GrkE*J/IK:,sfUۯϗx M"SbS]zD4iup(2_C\$2z MK&-OQ#%:9A,yZQ?iw@xS,ERP	 6pM`dH,G@5=FFV#Cja^O@Ѯ<
/ΔMDtݨ:!4i&YluX
L&`\Ϙ-Ssϼ4a}E0y(!-8MN,,D	5A:RdS6!
2y0W.І,'j1)m!eBElYu7K3!4pEm
0[X~eG\g8_.ĳ)D=Wfu	}DePib+PsFn>[HswF_CqA"}Y#R#AU?{K 4nƿLRbSݱ"*"
>/XݒT;<VI:(.{'^Ƃ.	f5QO
ԫÜh:Jw3-!3A"S5+C
x!Bȃ3-5{o\!Q"*Ȝ	(*h1|HH+</kV];>]ٱϵ-YSOd<JQeD(v|3jpJʊ
|qx"Ӑ ,uGm
Ǳ_mYq),Pq"qGpF[MLVRV_:ec]5Sȍ)uu\BY,a>X;A>y
N*Mp]>LIzbڨef9-dTWY@:br [/sFW4!n7H3s0 JYh8ACzkhui'QG#* H~gS"j%2V9IZz2H~*J|sVD뤩H݉)Ψ%1JU5Ėu/  `bk'lKx&`c rǫ0L:1都u󧽔'	x0	A°(5Cb\&DEszToUx9O@KA))ZAdJH#IGò0$oAo(ޫvВTxa{a@ґhs
+I~2l޲m9l,a3,l:5[=o^ƒ;Mx`7X62Xkh;ނ wڰD\݂~=oH>)$P	AS0+TibCD9@"^2f\1*ObA [&4Eb|:ƕF5	쪲\( 	

'DbCPm*_SZv0ͅ
n	_}z$V[<b$Ǽe25:/(kD^ݸNr4nr቎lTuiOlIByEAa{v-S!i&Ѻ]ڧЛ5Rmس<e;_VQQ9VrX40_s2_/ZI({Z{A{Q-d)L5d:ݴY}Aڎu_=dc^=}2K,*@qXի_HqQE:i
+4 &f!3'vʼwGv>G/2>ѫ)dRS(yNWEI؊4N\z'ˎǿ8r~o*GŦ2qi@]܈CBS2olN-ٵͥ͠&6Yֵ:P膼sHZjBپ~9 W^OTE8		)Ht<qBUMb]a1;LN%g`Cq~|+ӺWHW?Ф%Vjd]SI׼/QcT Ҕp<
ݯN ˉpnނ*
T_T[G
A!rOrgS'u{aBN p}hiF7kr%pvvH2D_=b:1)=a	"w*ꭜYyG^``WM+2ƃox0.)צ:Y
EBY>JZ?CQ\?1}KA͕`}mfy+L HP
-#,XuՃ)iY1-\'e3`5F&@ӛ
^v3mA] D276I%`!]86,h듧D0h Ys~;5)1ƊvTzʉA=krb<x"@LpnDj-Vm	x{>/pƀ@ۭA" w(r{e{_՜8@ibnEN:K*Y<}{.-3Z`	QV!*laqRԪhH:(BCH@mHWTͮqAJhh.ۄ)Փ66Qxyоb
UB%sjL\3
51szTf7yxA%p`Q111G-85bI,KF]6`g
Ohe_3S>I
(Laߩ	ۥ+1(Ⱥ@D2t` "iӍmzWw
hGC{ARo:*U-!<
;>&&nqnAlaG3%ñX@εCLM{\SjNn
qT^2E?tfVP/vgVۭ-b=|EC.*Cp=e݆P7܋,{K-Tgz8ęh\óDhT
i:&yzd*VԌ_(~!_"N{|3^Z%#(MرI}Q/T@lHQÊ
SA!lYхMݲ]]< m%?yU2@Nm=2x2r̵:)?7O`
f(#,`	Tbc5&_\`}P?6ǁiK B,ZgOsg{ֶq\|m -tPY!3
ceH,O
BY:_P= =W#dV@E
2	.2 DnfɪP}
af[<e|A ?zα>]w-`"ޑD @h85g_6WSߔg1I|F<GV,tQI +TqkfJHJpxa@A=f1M%"ӆ]w1-$+ .Q	>z2	n*\u8(bpZJ3M,<_粏<b{QpLd/uA4</Ao6al+:WMC*DLtZ[jA,?iXwb紉O/@
$p?!Tp=\4{P7ǇM
jr֠:Cmd\Mn
Wɩ6WuH5.'A-'5!/iZ*&fIWހ{ױP4ϲȴp¿K0Z1ViPIu>HM&W痛戉xuΖBL	$?WGv"1ayTē#W9eO&Qf81Zp=&+V3!nEw/tabfЎ-FE6-.}X<%m{	J8ƴ'}í{zUh	QC"hh@jЈ/ q;9=W45]1D[ .xa Y9`ÃOEǟ7DE$X4>W5a/ɘU=	HM4Ao>m	:Z75d9A$)<3.2+IdR,J<=P=b;@"^LŤzShQkPdɉO&hVtn2]艎cxu
84dm+<mFCD,kLpCPu C)C6ۥF.V"m%+_SZ
jATu
@o-'#h> 2#
;xMD+cN˕ncE'+GG2GO=7q:oMMuTo!|zePLƳ)R 41R"K{NLxT7M65mphntl&>%c+d;2E6aSТZH(<6Bl˥ͭSNpV&⫭Ę;Bj~ϰG/e" p}9ѝW;XM==PgX7rǉS_U@	$4?qc<VS
Â(ԉYцzÞ`ؔH$Z@p7ޯ20Hӱ$YoWW^? )D$=jzTxBdȘeddUP3mZfUt(gb0I; }2BF	Sj8KTJII-Ux8?;;HpX$E%.5Ba(V7Or/ aP8Ck]"YL+NZ,{d:FU r<(g5onma08mhNj71%s7%n{Ŕ6}ump/|]D0Mz*u]	0+elvxLd3d/o"k@azzDrTzn'ީlϤHZ5nl6@{owlf3Y{`?/,X$Mҗ[!_1h.:%7
T3lķ[	ZTaZc$nQ1lՇsЫ1cxrMh/jzb.m	I[bShpJ4ܱmawRQyU`%(~{$z%1ƤӳA6ʤ:'['i02	80'#oueNJb:hrJ;Xeg1,ނz6P_1,>ZdUCc\7ݘ,"qZlI|)Xl2Vo+&{at'.PAARv)<~(t.h#8>:~S_#(V+"d4f
Ki|-SgauQTƙ!{k8D"2NZLt8Q6^$yQ}/
9SInp^wl*29q3Y
ʠ_ڈ렛"Ƕ#7"(=IG(R:=I,1mchі7B=ah
 w2]F
zVȲAB>qhˉ4n\0MIb.pbPxhh
Ss
&p&<AH-b42:U=6J^ΫFkE()Hz;]u?h-Q_8GTRTF-$> 6XYLv=lEe*9v8T,[E9z' ap4Ƶ=їڛ6JZo3UN.h~U*v{"ZËC	_hBЭ,I;S)D³y-l_$?yQ
b͐2V7i/ă4R2tL{1G6+v^V
O4d஝@=[}"iOUNF+v8j`qyea dt"U|lTGp=Z|$h+z%ZrZSJIF+%sg$$ƎA!а_%^t0yn$XcI(n?QDDk
*m]	;H
, 	h&Zv47tV>&ҬٿЙ%
8,PU@1-d.lHdIpK^#{nC8T
-D&`JLɟTl˔pcBT?])ΰ?:^O\Fy#2aMlyPC)rr\@=UIzH0^џzѡXXH\xWW}0uS[@1[%hD0j0FJ")+bY +3O#1gv{AW(# - gclIo)^AV]/G(@'A
(Ja-&\O:&lc\jǘmG~C90}Cb)
vV!E
HVDΛ2g%B8	7.3e"Ir*{B
Pp盩:RI8A;1PRsDr-NDC槚=Z_fW"_6$_Q	ošb۱ר(@u!3$eJZN?_q~A&dbamʨ <`QpMym<bNKDPQW -J_:5{:4}cֳ 򼄓xVv,eB>7 8SߍGDwQ:0ވe)R(Nr~@O©HLha'=9"̩^S-~nwc]Ɓ5?Q=.jnշUQc׾!āA{i?(ʇsgpH	`3 DYW:rdCd~6Uc¯$3c "4~|q$pqW8l\J& xOe1J`\PW	s_L:<K1م}EUa?ϗZi).8b{	a]ن ad3T5YEox=ϳpIٺ\f:왵Z)*)j,L0We'xԡ*TF@8>S_֖-cSaxMy5$S$qdFrqpѩl#  E`j@\fbZd{ymG#50[$Ӂ[mM=~
p 7	d`Ig/8Nª+Y``LWT5Y#YԢ~d 	]`H
;l'/s_*0 ƌoZD"d=i6PG׌ioy&+ECAT]QA쌒GI;N,j46/(Tw+.`֥*\5`U#?)Tzs\ZKdVy:9@Lf>%s.Pv
`t!ǚD"xEMLv
JnB)ybXB63~ ]vP2m	henOv9x_l5$E%raٜ EƥP9r#i0s"5!HN~f{\ɷ#!,T98Eآߧx;[w鯓qgx@(ƇMJN`#9]a}3g{H1[<,DPBYF7qM U"m#j]
ʆ&/R)}GYsz*	BOLP)xȤ(b+|ndK#X![9"#z'8|@JHr'5&n[zi\,YH#lϲ0tު{hiH}`t"Tb8!}>aTK^F1S3CKV)藲7U@Hb<@j9iZ|&dTv0x-@LG2a{wqTTZf`[<*TdD+*T#k&{H ݯ

LJ3[{2EmxrdlM I
ȠT@+G}@Ң h0u÷Weq"\: <GV&I
S94Rʳm)נ92ڛ|8nifW#Ń(~Xi^,(@OCp~?[,*y򐼄:vO(dR-"n\覮J(QQGik,"kh|fZ+jRUϚlK9B3Jyop {7^C<Rw Dr;̞P h
քє{*??HC~k2
7t<$LOxĊ3iř/#+qFUo86CXgNW M+Ͳ+^NP9X*26/%9TD"/&-oP_2<h8+dxe^HaJ@Wڭ|aWR:, ~_ 9'[0&vы/:j,W¥$Gs~DҺN|7#Rg#屜<S%RNw:͉_ASG27YdjH})R0rlBfڰZÈ?]NG" ɘfb~ v?)Yl-СUMø@E
=XMe)WƮJ\O	
W31;4Cช4:>IJ7
Po>7&(IC]Uo,RT  f
0^aZzUןvUK5<<g'B݅wPK&OtJp,?mҵD]YT!00OC%7̜ -ctoȑG8e=IsTBu`G,2wGdd5 Cԭ֒mD<3FX7>F7;Uʫu.Q!)ʧ	g6kEz6'>^=I2qch<ΔHzUБI9TgItN%+Flt Q7L>#TM{aXld)X ȕYN;~9qmWՇu<OwdX<}aA]̨9b8I$az5䤡57+2
B/=<R[mT"}y|UCnC3hJS5¸UUcRSa'0jɞeȸD(,!
-!Knv1)*Z`5	
lym#Fz]1O< rgrrv@V>8`+JpHrL.'&H=ӂc5+8٩rWN})l-,[H׆S'O2MX1Y\aJ8dTcz2wfhX2҆7!F|wnaSdJcӳ4ja`.22u$VrmB*ڤ"ixW@fR'WafV̞yY[ZK,pZF6Qhv\YmI
";qdK8
a7ةмNR77KFQ`o$-gL$YL1{=DMsQ&z$O(<E烅*(:CZ)(cW2_>悛&&h*KE/N&x:I5*
+|}̐sՅm;t%٩Rg&W_ >W,8ܢ z1G""hH*qwcdђvyP^|Wn9²gO|{&a*
I[bݿIՃ9v뉮 TֺǶ9wnCu8v
]FiF#I,P.s=<ک:ŅHyo)>xKS?RrFs;lŅ6XZ0kzL}E$ӊ&Ųz.@Tֿ?q	 xd$P8[<oFҗ.+(fkT$cg6R^z\T".L߯,̰̲/JiGCwˁhzHsYe	>p7mdQ	(:2QeNR*il=>1""cr6<aAUEbP	P  NBT:~ԶIzcүd:݊05rrzq=Us,;/bs{82NI	E4˵ᚉ]ax+%"TfD{Ò0.^爹(]TE'IG/Ӳgz1 q{]0+|S:iZd^0 #I췡;mksWh1(ln&AEv1d~w]jN^E(;1jC,<OOiI:n+zL ;0. r1ddr=Zvȓp6!
$.Id_2ϑIA:H>k+ܛEM*(:oVN҃ٵ'[rlHPֺ%AO@g (_
Љ\ROG3BYy<\	/xnGё8+N1KZ&@\X%G6w#XW:WHõ&Ռ*b{@dLBMu9x9c|Y&xQ,\t5=IŁ{/˳F2_/iGnJY6TN(y_QWpZU(^}g@<0aK{~N^iѷ+BX{w<KGzz#n<j A]E_B$/m}/?
X4OV6SBóx9ew=	o	iC.浪s)89*)Nj닙9ݏJM>̃lFT{A	[?EP2*W]ΪHZ<_5g\CrQ@L+݀WZa#|w<ӟ3^.˭UrQ[Daj!r>g>-9|{+|vXy4 AYMwlw@DJQ@-֠6O-FğP96*>C-&60fK?(tp=9#t*17=uDMa4#J2+CAP<-Ѻ+:og8! 2zj֋,łOW5m0\HnOx<7P#.nB="栞|}OٞI@z l{<<A'SAEr
#myl=3qF0[`2fkd(K	l0݉w	FYI=N[
FTBg8AT9yC0faEݔۋ.:m|ӵ׉ H6`2SP902<vxeB%o*kvNDt߱3y$W"nI!W_RG5u #8~q6
AB*DTh!O\!'An,,<["
$ޗGxH
O2@X0$vq hoh)}Y?ֱvR!ڡ&ፙ~F6ǁr~,)=5ANɹ^Rj XǶޕ\ JW
܉9yyMvLQPk{X>J[ŭ
0ȇ=Ŏ^,;h&4:P.Z/``pi`WlUEdA|8#w3k
2厄f
fqlO][}8fOpv	'_e6Q
![;ͬuG`&^x46',Qp+ ]pݗ}-&BI>C;TXO<ߕQczvIBYPH}fmot
!
)!΁粩塶BV*b7݈cR=}MPN715r)vYwֻ5EfʆQUEi`=H[kP1h$5pkw#
fOhUEıcvz3+yD==[4"GY8`}4d:>DfBnZ"> 6y, ">IjN	B-cϧ!r,2
=۴V
=qvĊ]~&9qIJWV-DJVrx	hUHFԞ"yf}u y:oMg.(f=i]T y/2nNg/yEx*VyX᫒<a*JQvU]Ad馃3l/O ;bٟtJt(^FsxH,:W,&z25L'SP;<SĜ(u4:H,dT*'fE%xI*#ܘV	8;qaND$=K6s(
na>Pk٢Y\<	r)0hJ@L"q8k94	l5czҞ&]֊Af] $
4#QL=,UTK'Nʡ/oa+~
W)d]@Cj2(X(C? |G2/׃S3YQQ~{Vx"SӁtAÂDa:J\-?w,)$#\cQD~A3<X::lW;ҢaO#HV	$*dI)kU%J1hN2Zۤԍy
?pcʭpCbߨm_*ceu^(J\g=C+a6nGр
C< .x7KvwUHgR_OP>v.R߈W5)dS:A&&	cdzLHt0t= aUQ?E48@PЈMC):d)͉p
D&qZzs6FqoVٸ1gS'DSSe@hƁl@{cbB_z=ێb¥L`5p-RYUG'Kg`SZT;֒J%E䩓7̓F,E`q!zƀMg^DGk6sLǐ ]Qa50ZӰv3 +(G@mҸ?}@)Ҳ5%ؔ?K^lHnK3ʋپpݠ/!*O@H+l#>'T\
j D6drwGÿ4-(>ג'\z%[V$gHVҧ.甼HTLZK_ڴP;|QwK`T,PȣBi^lFFc
î˦e*<v}퓙~{d[a!6RB{ڑIjc#JUz-cdyIht
PNZ#}
9,x&
-529LȄHjiտhT>;)*xճ0+qvEFǻP	/AyHDq=b3
s!RSA2ђ&uNdҙUmdGWR0uUӓ|fCE2wh,q9#ɟNʉҠM[1kc:l[cgٶ|%>liބ8(gwj=Jyt)	.x<Gգ?0A%\]"']?4O'=62{1-Bpe6W	V#kr$3[HEȋNڒRʵޭ=c(k;gAɑvwzR_UNF*L[tV
e_vE3Zwa#|704DYUd챗Đ,LQ6lb<o{9[Ml?>+^|ǲEP&Ṋ{fЃ 1[iǛL";kyj*"␬rExՂQ]q兲o*K@PHW@Tށtg7$Za|J	
u{MNljhbX$i5v
?t˨,pJ]|xXܴs|H|Tmhsx] Ǆ E|!|uՐb6f@YtL!S뤛j4<iwa0oc.nlX's[e	6 bQ)C].@%	,W"K#0=l)U~$F/nk"RD*{/e%.&z'W~j/(VRa>#rhbc],ρfʭWTYy4*ݫ"
=|\>u)\Ji( Qf	ĭylHB+Xwc)P:ʯ,aQ\3oFQT`? u[ă6)#{v193b0t)ǲ*xS=m,tZ䓏GY *3:-p?X#+(̓Cu2@0\UI&b$WH+#ӝLD?!Zh?xZ}9k$萆NzRL⥾6L851\:'܋_{h#k0-LYr@5 Hd^%Rv1ѕ-ɁIX9q.\B+Ió<`7f"QDCt3>7h$ iheš+\ڟS{D'FP۲U<U#_)z;nʝ2I<gcտRpd@|r灰>iPM(AK`Wx40`>|!©v'ǚXL׈͔!i/d ll"U}qZRAm(踢*=OҀU7 EZZ:+զ~A
nK0Ƃ#pjǜGMZxs$aٰTph%BSzO6vj~W<>JT,"#(!"PIhZ];A-J/9ؗ=vtϷ ''-I
	yÜqh*z!Q7cBn>eGSx*9bTʉQ5f*c-u'kp@|&WRIeኇ23pu	hӺK<b6 (ݶ>OL,&2 >4`IW7eVtpLݛ\jgI9oü hcyH]ÖٿGHhѩ(@
EsY{g]`T>9?jE9b^zrP
L\˶ɊW!6.I-MZEU"3r_V-Ǝpbv\	fĺn2UGd
Nwؚ
j<yv.zaAu4zd@X&δ]>R/.L\X ckmb5
!gx/. i[	tZ&c_,l,Ӻ2_pl_'F˝mWR[q}@uU(RE0A'mr[%pC8:eI	 ۨlʉPE/VbC|jLTiWxGiGJ6]QcM WTFxƽ9d%֩мq%A:Ǚ/K]T뱯ٌ>YtC"Ⱥ*W9
/@RmvIvVP~L <Is9FY	1/\ٛ8 f@JeYB.Re1XX	xnZυ,0 X:z0Xcb#{$quDZ`QrL\YOil y[?hGK6UJ%|𤑡<:}	Gtӱ{nDStGTkX~ COq!aHǢVMq!/s!(@=8q[
"Ńq]$ai"N*+N~ϣdʙpdo8S%cJ<%v$mnib+I@KTv[$$l[מ- wOMs}[ڸV&O+Ms)}rnƝGRйUq:0oY&qqR2<I|E܄Wx5̥X&R*k2F޿ybN$7Pv'=6pE&X-i_e"zK7P~/qE$ Kb&-!mf,>Y3P[I0sgGzp%,uyJv䌩$?ivp	3ǵ-Qp7l-i!  Р_7W@ s2wec<jOfiA;F$+ ٱenbVH-łkeg{Gv9xw< |~Wv^kmC5-8*-/t;à?iڷ<X#V>EQ7
#̨-B8Ĉc$pS\u~RKqНƶYkM|gf1	.u+*/
Q8nKT!clA	SDPP}n|GE&ʋ=!t{&҉R?32PxHwo֝xbolο\HK|VQh3id8͈Mo&GsGʭ5^cQ9Ֆ@«8#|]?vR37,Fs̌(u+CGG;)`X@5ҧnmfiW(n̽#	Tˁ3KL[!LJY,tԇE`( \s9`vɗ>U^Rﬦf?Ղ=.}DO9DxbSXP9UժI~Xz=,JE˦3,Ą l;8=)=S%`3&XboZ2q!ѝǡ7`EBSWΡq 5b7o([]'Iljŷ$U6*WH#)[M
7,Eyri9Y.ؕoF6pN%πqYh"_/$2m)߼0)2 ;@bi:rPGCնt5C7Vr"oIד٣9/A_1D$,7GҜ4n+<-{.r^xkOTa,Z/F/f(Biel3Q&C{R/շ!/T_rFtK7 E ,
(rC>wgzyQA

^}GhC0dlx\lY;L]Q&b驱(Vzf
m2(8MfY:4
4բT*%fdjȑA|>(	0a{	n020WP3lrtC`wռ.	^qxcMӑWy#pdV#^˰"K-Xt5@P d\Ô"w2\st<ɛtsfHRDgOB	n	͎4=i,8d6`vQm
6m84=5aCtWfOcj+:B0\Wz/+%&Xی:J"UCaАj
#@ɓ6x.Cj^:}=	h\N-N	+BbЖ8o@ 4!ʰ?0QO?	jT r) ;Ǳ'|3Ѡm3@5%1),ER:^},B_ȫAyp*B&LLcݪTd&T,#VNJa)l0y!dzp}P,دq'/
DhQM68<e*<@$攋*K*)>ghrmʵsySnaBئ¤TdCx:΢2H	٤PU:14]&&؝Oc¤tג7ƹ$h86y,V^MX*B`Ydօ m.:0|IEfT\J$@P]j.ԅS#[ir>wA;JnzeHeUqKTg6ِ=M6K8}l}(i2l#zb&?7U'=#W.uìCK_3;<d c<3Е;[)#3dǕ$6QI"pb/.0YKWR QYKV[mqMdʁZkY/hF侠vEyrADW*kW?+1Ϛ&>Ld~WR<R)%!h
%:tse5ˌ],YBv/A
Pϯ1Qmev§#xړ}t<,ͥmwjΰN6g'{ LfxtSVc?ߐ=r4־X1>N~v&̧ڷhM^3W4
^G

PQDNO5{h#'L쭼.7m9.dLF]&kyDWx6 pTqB6$HՕ1)g+
'+
xHz,{0R}ܐeԥZ&ԐDT]l"vA޲>EMS/(Z=$O&MjnC:ߍ|}ӑ
Pⵝikk-)5m=Š+a4Dmyj#4'@鴤HQ%C}qkř5K|0dW>'̃PY(	&ݼ2khP'/슕Fu04kP^5Kic݉Nh*GI[\[vM]QQFpɂ$& M[,u`]=^HZ\i`s9f6r5
4Kj9FQpzKa,S/L+z!aRzy1`
.LMQ͚JU(w7	J䀕f@^O-*}Mv峘dNKb.eoX
ZPyƪ!gU!ce.%gS'?)WVrGp
Wg*}`lI>~F}@X;Hv	dّ

V\NOHQ.~	&/朗|;_9ߡA&tU])"dt&k4`eW=e)}8"-dAԳQRЌ$L^ثxlt()b^;VO2pǘ)[ڠ6L¡,H&c?.Xo.x8mR&q_N ڨ X;SʋxbP1b'I$d#O2&t6=ߊ7uFyhA
	qB7_=|5vJK5D*4ɒ6Gt<]fY-=p@=Pժ>t45ŖޡگU
yB/#6H")v% J1to.޷X҃㭟*Hn,xL"2U!iw[W%(-vR'h~doFXHewxdi=[n<ؑ? ;@7ev	dA_4ɬM.OU'Pɲ8NtW*A"gN)⌘ϺU*b2j/eiYSkdX0]V0kƉ,b3-V]]N KWM/2F#>\AS`]>K4q'&6~aAr/:?Kr
=3{-j/nX>Nx| Q8TemRMt,WO&Rv~	MM  c6uXC==~}%;SQ/+"L˲}kdLc2%dD)8|Z ߘW,E[gsaby#7Mb5pvn!P𲼡)\lt!mUni:	:-5>Dq
*ׂ'6^Q[zxGT&l&z6p%",(in,TBB!v :714E})ygfmԕ.bZHc?͊{\w_vC{sWi=9w^N|6cAXyz
`K|Sc4¦+<@ܒf3Zjgi5.t.@`,kӧ\
fj  P+xw[Di:"wxD1G]S%1\dckG
AEt
h_(Ld@JZ QE*0x,e/5GjFmpzfZ[,MDɖwv
!ރdm6o1|\ӱi|#:4'ԥ=x:ϪGu4JNc']XD|888S	*#)1<ۍ;5؜C?6[j#F=+c<D">V^8vPE	Eh&`%wώpq)ዯbV؈rao+tJ3iي9B6
<ǚ{`;cH)Tu&c|"g.(30IqTM7
Jk$~
)b1O$n¤^={E)Q7c6u(t+tLYV;νW/:ZyX
ת8$jڽV%W6zTx)'<2dDesSJ } yʨ\5zECDV
BQu!FJ n'_R>9ph,w}7+ NqU.(3cJk#iw$(ʹtJg≯ô1Z((3AԷX/CB 
̬rk:q$dhjvZ&vjd1aKB9	~u4M5`RzjE} **P	(oHa
yظjX\Dd.
&]X>vx-)ĈSJv@#.1Zh0$e4I[<Y1_l,r$:|jP
ƤUp*teεyx#i]tS_d*wfc,q1+A)$x`paߝ:*^i5}{	B"feZ<K`[tXO@DXs8kCA/GZɣIO21%_C: `88a7%\×1~˃=Y('D,"6+|*לHg贸v34H[9swc,Hؑi^㎶!""-N,IAUSVhxuuf Hұp0fA	~*E+G/ڦMV,bdӰo
 * QP3.I&"4
g0ʋ!` lwUz4ɲDkkxZ;޲p[wG">V'o|37:=H\1Ak)
Xd̽jNd̗7%qe$:S&k*W*rN^@d943`p<:=7hTMnUOGΔۍ-mGH.;C2i	)b Wou$
KӋI	*!u\)03A)^1O}gh';!ƲܜZҁD\U,7GGLc=~xL
Q+REgtׅqrF-c\Q*ZQeZ`MoPn2FٖMg
hd6E&.\vw-_y2F:`%*0Z(Npt+"X;3#I
\<>vSĥGޯCMGw|]Dl7`;+-fؘ	.YhIhWye#9 &OebM0u|Q2Mޛ1Ă>?&j̖d,J´Tp	+O~	N>
dL<5H{88$3H!b?ѨjFE|XNƉE;Z6Y=na,̞s7L]E]Zl%%(
Fd/X˥\hQXgQ!cyQ}ܼp*syoz߂bVފW:	|
C8d)fh4/ǸaJ}T<sE@{ptÇ>bѝIxbfm1!:PmYKWaJI[V^K,Ca{DJ.l*7Ol p-F9U5XQOt;,@32vBN*4![9v%X[Qe.	<$dWNQLl~%BA頏Fxy3A6=|\]*bRK|;dV:ҵ+~?Vy,҅vH)R49A&QHw\Ƭ̥*MVHPIUnW 7?[IF[bU(RIJ2h|nC^mFQ|Uޠ0y!m@@\w!7Ndh>7
H:{e%ڱùd	
݉J\]Ig3%}FDVcVwyq-b@k_=
;܆aZ
JIWaI6[ŢY_KE15]{D	w۳[4Ak8*t-=R5 waL/`E|eX0nl"ˊ~C,6>%8'*Ò|DC\YpH/#Ph-gy݅1,ePy.
KsN{tgrR:&WHY?ZŊ<hϓ\+/}h`jɼ;K@PD UhBqd~ b*@r.xj$GB)varA<RmVu8Y	L\3E.~0eO#2e
z@mas3tZMV4emtTBMNǉZJlliͻXHjgg/x3~N)E
mQ4 fN׻lc$Z0Ai4ZB/94VCwq\WUi/=2"kI<&XuG7q%d)dH3	Lpbh-|&C
Y׾TSUBk* 1O!*_2ƒeɶCmǔ p4#&jzVpc"TӲos4FTzLT޾S^$k)څH#$Cqb~XM&0P
РX"mdn-:)Y3x LrL&L1RipfI^Kn* (
8cP\LM|(뺘/5qqMʆt޼gF=y6|N=y:̵.a:O!1"YpT=
k]uhf*|Ͳ.mu%r<h
@޽i-Y>I,	)mYb@SⷷtY}YNNa(,.U	&סK(qQrLhWb@qUQHћKn	W5eX7n: QIӡ2*ͩ
$c^8,
03s@yg9
rW W֕员7xşg yI$ǊUPU1fy/bќg;u_mb$⅌L~'=xa\t&`av.dcYHe-Yg ͩR5/Φ,boשwJtu\~w؂\i۲f4?2tTD>0	4^뜚SyQ+lLQ6x	kd:8+0ln~""`fX[M\xvȏ,VDi6"lD` Әoȇr+Aoج"ԻQyEYsaU)<BI(Ɲz/r8KVuYaA;ꄠ5"B,siT3pm?"(m><J	&4{ږW@q
Q
!n9 'q,5N^*gB%4_	vЎa~ +vnj+h5VDdgqpPVã4OWGzD[C.~%#(
f
ߜb)T+@po$S8tjܻx%m*2qvt@b&wμ$7qay*Uv:wfη?s#b;NBVr:ÄpQ)S~{usr~3JLg 1; =F7s6M)#f=ex+y:ǔM>z;L[;hl
p &:\`	GZ8t$
WtEY[-eY*2ʃ[X gbYx\F}2Yڡs]d/̳nwmc|]hqxBBpHATirG+rT&(k3:Y =7;
>h\fB8# WpYѝOEU_9Sv:)ʑ~Qt6wb	+E;V4: #]
BY,ɒW_$yCBۦcbј_<LkNLSxaΊ$8'\)8'AuR
ŞjS73Ǜ	骨/p
KmQap9{6s/fU/;sbwt;7a1
0G6h[*;*<TI%%`q#>
f' 4*#]fb~
T""ŅBp5C0Yj㮠v
&~Dğg`AlkVbfic"#>׹8@Юz
~	tA^h#b]DlwlO!ppuBTvyr^G=컖)D<ЙJ2HJ@:%;f/ƓKq蘃UVC
Ԓ0㤂3ځ2CzQ_~媆_8X>S.A{<.Od28/k"x ZpdM`:`KtGa/_%@z?5r V1m,*Ř2DOLIaqSh3{!YbfJѢ4kON#|!E'nO@Nt*>5_v},ă3ˊE4*Ԣ^R.ຼF}K-ۣmbpJbݣ+SHW;_׌)8Ax[?CnS,`U\=YY[׎A|j

V(+dgT448,j9=.[T1ϰ)uXPFlBa kv;W<l\!#C4b7W "4Q̓xe+eRieX` 1uy}t/2M
^@j
J(:A^`7֛S3ǂݒūG?"Wva	'7#
^A5Zoډrٌ63$&\l{T
tLEn`M9?HYM>)?jB(Dj&xEs[ߦa`FZJfxq2_^LV`
a;D.sVgÎl&:@L¶җ%YCX-L4%v0Fz9NהqG5Y#wb3Op^{eIQ_-;㣹^tjqr}3b3C;'OFNtM*+K+-sT*A]HȩB؎!W6h%%HUd[F^)_#%fK\sgs9õv$g᝽K`M.t<&mP2"Er%,OcCdVظiDL80GݣG!Lm,hQHR8Igd3!*!ԩ[D{YUoBI?Q4oOt-l,f̓VTU=MU9vJ,G` ]&2D*Z'#p
<v7,iUN2 $h
~O6q᧞l5w>S4FG4ӏb)4"
ZimA\+xg*o5:
N'HiP:Q\J</D{؀
ggS)>tfg~e
[!W.Ǔs8g]
  %*F~.4q6*r͋rqnvG90Z#b'T.O$Ir,r5ONM _ Dxx){+
_F\zYou;IL[076
ኤych~+$A<c]+W+\tD϶K[+|f<nhxa&60VDm.2BoG`,ڮXbl=8	K
uۣMud6..	SNob:zìvcz <#}63×Їf  F=&)w30LJ`}$n%0S[@kD&9la4*DA{7ŕ1b9D`#MeJ!IGHK?*HeXGP/	׃aJm,]3WG!h,L$>oV0pl[tb`#a$%JmJ!%#Ts
? !Gym877T6
є30Ӑv/뉴R)=g5څP4ܚkȊR`V8y^8,&|ˁƧv;ɲá=TffU|wm̅;U,DGˢ)iYwn)T%"ѬwXvI$iQWe%40p ߿^OJ|>0ò$B(l6.fy;Ԗ	I[TLI5D8iEE,YX ]8vWR) eTSsA5Mq+]>f#tqlV:,.2s#s0
$]W^41F%gMoۛa
LoѴ/ͅ+8<0^}nS5
p
%28v2~l/)Qwm7J.&楇JR2=Zmސl"0 פW4o( $%i_I{灬fhr^ܕKA(y^]:epkz' mF:,	@щd̈1'{t8Q%Ydu24P-KK[M]d5:*yl$Kx.eI53/լf]e/t8`њ/rLȤը`1.j=-z#_y	i봜$>3Fx^c%<ie˾pLj:#'&WR\Hn_hr&(|7<˘cnvѨadLF=9bB>0)xtn193pD4 6-.
!FAɂ?Vrw7ۣL%/c"u4nTрߘol!}Wڄ/+Ro([&<wb
l6&Y-?(d ;If4~PKC;L`3,d;h
է ]l]:2M&i&E7gp<+Iw7e&}&Awl{Kۨ~'IĈw|}uM(q.cwQ&[<ɑɦ*DE1.viP4C/dI؆ǡTkR0$(el3d?Y:6DOd3t%7cyB_Pۙ#4Pߞ@2 vȈ;2b湳٬6C+ kJڅHsF\No$E!sKP{ig9A`]0%O?+z=RpjGi.ŻPcl3M`G{Xl)zRWa.%N3B;USm'ދ8_)ic
(XtK
PPGU\Bm,'"ec(d]2^7K$+0	qx46:kȘ"X`1ߑՀt.dRKn%`Ϗб;MiSeeK1]V^@N{XeB%e]hYe-╤ٙk6)Whq05|c>{g-SEԄ'ih7B{0Ça\i^In2L&2tL
<)MdO$}yFKdsYAfp+MՉ6pm1&5QMӄh W}IV0OpkDZǁ]X]D19T
hs XdtB(mȝ/I6Gcmͅf8%Eg'4R/pl\:M$9jTM=T! ~,àC>N2}tĀÿe_&*}9i~	ybZ05]kLv^){reNbb&1
lx{GBGK%ۛY9OvTf#*Ht
#![*_kIƧx &6bnCu>_eLk5ՆE^uKX"!]f*k<<1}Z .# \uly3ϾUbdIaav:24)~Q&ߡ֮6u̷/nUaJ:j;E;_J 'gͼcs)z( ihޤElo:Z1XglRXAU(l=OXV1cqLJlGǦ,2rAaYaw>*chb/
߳bS!O%&i~49˜@Qjm%<[Q#F;yAJ&^Gfj9 &C)n_B.4`1gsǂԃwI seG.A{	ҖYR. j϶&Sxؿ%9;c5DveX:\b2r{sT%?c1QeL
M)jlP'fjĐF=@_v۠@ f#W9
i3K	=EwQ
ZT졦ZzdqGx
hpjYab38fkSch3^8q:x1	`žaYE7Œ *i@(xW9#~X?ݺ%,+2-W}*ɄGܫpV_`p{S9F' ΆbzԚތO̶ФK.R*ɓrb-d/M	y靧Ƕ{7 VKNAkªr3bHa;dyBQ&n,zp@`p`lEU
HPgݥf4rw	M92ɿ[)	/5yk4pt.VK!Gu9-u{ƪȤ;f1j}"#j`-2
JKU؀1V&E'E`)tidb+6F0YذLZ~	ᑾ6F뛺WUx78]y>~XNJeMg>
8l'#I*7RҸ#2od1%u>LGĖTON7lb.ƌq;p$"m'{u-{HlaRHY=M()7wp:%FX{ 
jYU,ao˨$sI
2<{6&^p6HU-ݘw=H <AVn5&Łz3,zSe&|8SNA6s@7[lD9ŧ'%OV+?_'Ѿ
tt-K1隀:e,EǢtὣJCN3L"3	;e߬YfR+5/!qwKb~=`iܡ$G!1;83
\_f|W],ugQ<eMﰯ򋈨dgdۙOȿ"+b+x/:Z5A;F +jd
 ޳:Jk!幆]-k+
[1<wdtk [5Vvqh1Pƕߗlւ|7nSл05lUM N)KC@aT$@te,\d6_NgF@RTG.3~HfqUo-juUi۞sc3ܖI;<JK\و!;/o)ԱpŌ^Ʊ
ܳG?a6lX
Ol$Q1iRtJq	v^zá}I/yƙOcG,1)S+Ů6djӕ+&'ÇFf)d-=>n1t{乛M8eZ9'K\NzNǤ^L\IҰi hvh{J"p6Wo$_O7|)E\)]ՎEhɒBSu,頉E&8a䨲ܱ4_ub#ZN|
qB
	k׳r{&h8{_O!+sEq@"&ڃ%|ԚESiW/èI#,4ozwZx7L"愝$ɬ^Br
w3!itR^yI2u#!6fW(r(ډV]'
uyp"ƊmhH!)~ ԣ^#	|BIfvg\0QaF3/3)WFtSQ&,g4|2<J,-JDFr%W/ZJhy,t;*Kn}:12=ږ"X]
k܊ˏ!Hi&+YFck&dTV@$<@me\F^}xYF%kq#Isyήj~#IxAuM{BͺV>|8nֻ3t6ﱴ͠hjMڑ׶#EL8pLd{Τ{k2NHf~ݳ*m
FZhCv:^|/DF~f]xO
p~ӳGI'F"3 ^ 򪦄נdpx&Nqt59̓@!/b(:fP_i![΢-
r5T7Mv6헵mDP1}T9,pk~y
\DRq~oUF-@ N WPfzI8*RJ#<۶N5Q(=ʄ-
SC@\M5ɾAyufY4/Mr`X~GՎ4@;Oqh&<<H9阏j*21j
̽<xf É05,+P9
IvG%K:8 w
;VMYXu4cG_U9(¶t2 0Q#1	9=S _P)P 	Iƃ,=6az$Kv,
3YQ@&,0Gl	-GS&vvnR?t+oB1g/Zc[d %.l1R~&:NiT+o/Ͽ?_?G?&P<-B=zquvb+b6rNjx͂m|L]p+Gß$Z(暩oq:b@5L쫔΄ :L#HF$LVۭht?elk9Eܗu]$mX1,3yB^:pÙԡ,V&ef8(|5YB[b|
`Ǳd?B;[WCPZo3<c_ HK5>K.Dl۱VaF~g)}PI٩<TL
R8ދ Ac$YdZKƠ_ʁp٣ynLǘf6aES.<:R쬤laSI]WHː9P: q6Jc\Rl6$T4'*6|b1F\*ᐦ߂QKB>:oP5G&0c)S`CHD BFoۼ^k*5RdA'vž +˸SnWO ĂIq

!;B=O7#?VAqYtmQn4ǿ;fASB
Wec(rנHB<&-e30ClSCѸl,]Sʨͣ_fEqM^㬀ha[SvʸPCv^=:o,oжC*ZI^l%9Zd'_&w ŎGTK}'ܓЖ_0<ӆ2Ћysz9ȧ@pB0qx£84bל&
z/Ҽwb\ 
J6
UGn_~ѽdʋ<aYDH6td "]Xji-鲑3-
-:nh*"'/F¤v`@spH:1,uLaDx8;pHob굷&<-'rXACgԐxwz+C攣sOgƞGPg.JP4a#v$B8ZowQ5\/a h㾐\E(So>؀,X4CVYwzLgM.lHf4xB[-3u<i	Kg両_fbYTL5]e9v?3,l
=Ӓ
UEH8sJ#߆ͨ'Aqrb	Β'ց3(5si戊|q
K%V<MHRܜ*|ODdw"' u+V"gF:~zSbAni}{:.μ.dލ06<L5lx-+
b0۩M!/)/`VO.ِ#];xӹW"'b`?73h9-s@D=Rq5&7PrچwJw;Q%1YNwӶqSXil)=^:Mթ1C;yAQjfqD7dl"(<N7Xa쥛I&R`vtPN0JItȹ
D+3@w)
LIGE;BWvA_[cڜ.K$qI8`GݹȲ`hg0b rڃP]l#Et}Q%ӛ-x2RG28ޣ[RvOΙAd%2QEA?mؿ'$#Zq:En&<|e<a_924NۤɁ}LLLc6kG˄% qz⑛Se24sCwF:\&JQh$zzZYi1DoX?h*(Kl[{'c1S8WSB*2:["	zmK<Zm?&<O+˔sݼG(vGU;
OK#zj[N>BUB׳DSRJp~lGYP3҂|"he1"XFR+)
'ҼVc"+?nBqi7N;`üȿFݒaeY NdQ/#ۤ-
[k|f=!4gA9af"Esfچ4582-aщGs8]íǤO#)&ob8(Wnkɀ< Mn.R`46ȨjYw=lFpބaRc4،Ʋ@{Yz~ʂXi.*`Jj$Sw(2Fd6;{&-n⾖e}GSH"UB0o4p؈xB352;^	ԛIKVY,"ò hpA|oB۫V|Fjr_zC?7ڃIILfPSOS ԬֱAhѥ(UϝYGq&)|k,A^%SJDq?+Aml~,'wq曆:v=~DȔ#=%4Nf9,:3</B*FPH
wLL|Rzy3.Oa9Dzh
\QS04V!V@0N#OfHJ&YhD^CI:ߏ2ƙсm\7{f }U9g&Ҿ=obM6uJ6qb̀.}+/?ǓWM̀n-[&j}؞_F:ĪB(+53zz3k|qє3"5Z[dHuUjá*.{+m<SGR	ܕIĀxw&AE"El=
kDek~mR	q2L
Iew 	?b'0睐V`{?$gZ'tҲ*@Zicuix^A	)X_SGw	0e\dN|ث/mo&Vd^TF@rjIL	a ,7=ʂ,H'W[4
J95+Nk=Xf6Rt
NB5YԾ	ok>f'!`A@d;AE))j! HAΚ$7j95L<OwT~i`+&@D
eg$e,򍨾*"KgEx2`쀐Mpm:W,.x:U\lu~ӦPȌvkEVgcRz.哏"ґ 64)jc U<}la8
3N݄iPng%$GJ^
&!IAݺsc
\ՁTg";5x#FGoie{V5dSv.",OZ+oM%vebZ&
z#r&	(23	SR!
t=NUA7)rĀW($@}NVS	\ZYnhǈKfDz/BZ"oVE-X`[ѵmXd²,JؙH"h[ļ!<[:GwlGEMbk\i
3}S>=s"U0Dy&#w'NC>$fTmJ8JCtT.[X9Pl@Mdcۗ;i&<
f`'7/g{2|}hd>VNX?;FeDdiaX̣{x.u'W&n5K!MLz'>KI&FRѸ#۴z"ReUҩيxslf\(xHvd2w(</6U+YLsiبm4BfwٜdW!S!fbj`mrg
"eژ]iR_li"EkyIBeYp<ndl(Sc{x=aYg>&FQjMJ셅vy;K1c6K+Ʉa3
ԐYC-mR䋬$
<}{) ]Llߎ
Y='Me:QyeUVؒ PE+fF%gW|ZleT !h;o'OM],ykkzFB+YF;rTꊳGwvDhY^m1:ewނaO)1Ϛu,"wN1|4ux440.\Q	265}qF[VX
PgR)^ќ3k`WՐ;\?Ni]35rCХ\R`s\|k.VH"O\	R1?`P\
IL>/^ٵ.eFlU*e3H
;h+^Zأ>;+8=\FZ^L%/ߐ^X
BҮ?;ge̮1KQp@HH{hN
J( 3ZH̺-xQ'-!,+)Ey[;#tO+:
7<oUic[/$nګ2m=V
ZV(qG2 YuF;}̉ECAAJ6(t".ئ~ ,D&ʃĒ?eڕ/y|~QX$N42YWS9逌.X]z<52oǡ5sǔTt/#1dȅ˧@licp!|)>2|8>!{D2nۂrDmR2S!OP W5t\I>^ a-Vg#˼bhX$TRkL6$jA<eg-$h4HӍҏ7'phGoN*5^@'ϼ_y2S+`HԸ,15*޼+XDg~W,px?F,3rX"!LLT.AMK5`+X$q,ʴ_tbFViwB]?yzы B:xRYrwqݲ@$34-¸,ֵ/Sqh{/J_xxGs:ΥnacgX"؅`(4J.dŠB~ethu>.!zj||s`43sC0@af7\:}01Ro0 p^>ZVq΅ŇY>Չa᪛z6tF1R2H-] a$7y9w,)rHGA"46qd&޻Dϛ(wRk#Nzuqˠ-ե^:,D:fNOpYB΢׏RB\h?x)8$EӋ-b4Rat`k	'3gG,ħv&ų9ܚ>YPES-sBye3<q48НEoo njQPFHg]~͂뙛u"`v] t]_FUVyO)/"#EB~(Ibj7z?Y a5Pd>.#1/ߵc&tR^*V'Q8$mqf^:	NB?PSTr]S6;X@:LJm)&ːmĽk0(^KLg 8ư?7dޗ<f!18mC p?$*KikbF4/D`CXmǔDG=Y.8>dPFfR3-ܾRC-5f+rc\;gTje&빠ęOHxR'=f`
t2~J?FU-%Q9/ѥ:G~BWL`;0řD8<7HX-}3hD)'f"%g{G7vD]-d}ω¶=	Mb=V"㛞CWK>2: ̒#sC|:ۢZuJ*艔
zRLk\)~#	)QSd`P/$ߩ,[4HI2 f**ȆѣI(;ӻvm~a&.$(_r(%e uba5zoTSi&X	ƕCZ[͖j6'K^T.DU邊jh]D@:n~#	(+YTac%1|g%e#l-+
tt'К[
1D.Ӂ>c>xwbE	PD9oq^5Ӓ&C1a_"AY05zgI+ql6(<04.'p)8yīגAĕð ɖ=<,eFf	f0]+/JBbߛSՀSQ0hFsb8)9,۝m.SMf͠"͎cYT}yWfXjų%rE
ݽ(	~ZLȷiKʴ$0k^6RTb&{?$_:OgX$Mgn&2&8a R!L 0hKΎQmlٔ~LUKdʥ@p\	fqMLt~؉2'^as.9Qʪ"zYd+6GMAMCz(x)[c)yؕK3ьugbs( zC@dl)2rǁNSg|ND8CXќ;Ѿ]9lO*'j@d$ԏОC7 _5e(&)ӦefeB'a,FusKˁeQS*(4ӀW7~?ѫdQh\s2x.L3_lpSpXL,n^5ESdUgOs0xE*˕gsTtRw=1x#&eк5bCihMPRS6ڿq{m.Y=qlD[dϬ␊:/1T4Ee6B~D\THM/"z0v=GnLrL`" {XFe(ѻl򇲭t-V)3{WGՕI RUyD>
Z8ELE#Oth<5@I=0sTgFI7h@ArxoTX:1 lDG'2g2nЍMc ߱<Юn49vu$>;"ޤ/uDnס5tayx .,ˈ6B?M&
0d"r$Sp
Nyg`ΐ1!m/Y_z񖾧tEEBsPiR!o05Z[mT\,%Mp*k(z96B5̦qyn%}Z2lM4aX.<o'a&uF5 4AD{dr6܄M{ wjPr%
S=jmV
mw(u\N(/{drzM4J2E\fs&˟^"~L{=f9t|AQ:Cv-hK.<f;W)~
b2A}sa0-VdGp%1mOa&t"i8S7c꼒$ɑ$z%p	z#uyV쐮ʌp̔ny2.+'J6^__krH|L`"C*Elj
@(.]v 
AumEaa}P#/ѵBXTﾊ u,2͡dQ yGZH5@)8FRSYL!]-YE*ȒnF& 	2ya«A
q_;d̥vѵU7(\
Ds^c(;1k K0&k2<µbnǞ%[ĥ|f 	K˝#5+~e(9Rj_68(2
Nqʔ[T	3zf6L*y+ې4oDhr:dcaDPߗ64'Mj:iJB*?OI/f_.	!YrV#uwrw靟ʹ,8ܜ1-Ԙ$2Ph>P#G"ˤr5am.Cd4<P+݈[$ 6v,!CR(hou/o<c	WՃt]ڔ|mµ:]-Ӿh_x~@zj{"O.Kt9(exŎ\:Vr*K邎Ⱥ"~m qZ` \ـBr(>!tG(BͶZOv5cCbߜUfO,q_`v$VTD5L:yP'stW$y^MPE%c~P Rm"|X #W.T:.0r*y|t$ؕv87 1x*	?{ 8eD2jR2Tcq}[t/	x+G1olҏ_3Oբ@I(m6>1zp)li`t<Ge?|"*STFr/x~
ѰoؓޒG@-PøUêEÜmm( }jMǮS	T(H`nƛL
b%!	IX' ".-Pe,
2(<Z,Y=
<ÙيTApz$`Ve~}Vթoەh8$")D"
U&]xLDK]
JKqz;{XSp0w 2zFޔ$OD ik1nma7~]M^
q^pOI*T$u~Q1x.QXW̾#ZbybmpScW+
l_VEoJӕ]ʾMaڎ$l'ߗ(|8ExA%xR/aMOjT6"׭L.a7=Eoi~sW5ZM+slv0ȷyz4#W풭рST>g*rdFWE,*[DDphM0D	B9m=_t$RaP%
 P39q	;ՄIaq(`EP_<MnډH$ewDsoY-!7x,!,f<EwdT>1+'5H<	WiH=[of$f&˽ɪl^EzF kj*f@M`*~jPy
ǝ5!*Jf˨0x"#7N4"^%Ȥr%,ײmA7a(,$':P ɳ?hbn^;mom|ɠ"|%r
;SDBiBsl0Պr$\(Ŋ)aLr=ö$54QBaa11b4V[
^)3q$=4T4ɷUUP?^I
SebH}|u	;HA41^/n=JD\8ʠ"G.Sd913,}]/r+Y8ٹ§A+PV/;l>lWPey1&O8q0-c?xc
:IX$K+QL՟m.]'/' :Cu'hy8ôh8٪tbY];qBXeCjqP$	ϰ 97gV%sv>h~:Cv*)"U$~ebh7#-)@#^pYEy9BH}dIjK,"ۻhER^*K&I
GRC̤Rx,њR
C]i
3F3{ؔ+Ȣ`\-EC#Lk^g7;cVG)Ba7}*
==ٮ_<+09jAt
/B y	y~-I%d<DlNF6[f!?Ǻ:\ɚLk㲽g905B42EiBE eгskbN5lAgei3@cEOL_`JtOtd Լwp{
*IV=UL)W3,*
CUmMk]~%Go6eҪƅ
3lgot
lapIGi;8S>SLh. P%^#b
P"xwmƥFH"WLwwkaaa$>tMzMLG-ğ߅!r)ҞR"'dkߢ#R
pFۋg_	y@׸C3M	$O:$$/N	rPš/j t`sQh3_"ݺ3N8NGphJ F0=$Fn=#b@bE%'";OE$5K&Ë<{B̿68}ZJ:AF}6R ͟[G4 woITf(%6soE/zYʵul 9iAYTehAu<r+rĠ[S~"ϼKhA-H
$Mnk!D
3Uk'3)cvukb×G׌GXXV~Dl<M[
ӈUOݡ #OHZm.umo.P9]Qe`~1DCR,;m/S4iFZ)&?
|`
۩PT|MX6zM$8cF|hk1-0I"^F?ҾhReQJŉysbǫ<'㳫*)=3FdDٰ."M< uD7xd<8橖6U[qIjfyi("han -tUOFL\%Fap+[zħ'8e*ҹ3GdAq|@f!l	j03KVЗϸZe#7ϯ0h&:0Wm`y~RbkāЮᢆR{gJ
ΊJNk3%nęN:.<Sɚb^^q
YD@DEgE1(XgƳDISc1(t$凬ĵh4D((fpNIKNҬ&?YJ
4H#+Z@"ijS>`^d 6#ɇ>2Сl:F[ʤN3h73{b2x0ת	l>tC*!6཈h'5m+j>͚4yAl4G[UGm2H<	MN9@F0w*W q >]><QX5)E._B#;i֏ 'y'imH"#%^&xiEŊ/Zm+7ʦ}  
IFdWY*Zw
5c^Q)e!M=W`N;EW̘R	1@ClS{</K盲(PlOM{ hE	;YHAo{w-4'-CvQѴoF_MebW_O_jl
}0MO":sV"uiiu\.W&nwQyXH3*8!qA*ҥV2R`uXTX6FGGA9%G
STn 7-gR4Nl:*@9g-0W0E@;#0
mԎ೨s;(Za=нƜIzV9coWW5s.C$B$R³C\ȁ)	~v5*yr%]xr?:Su- Hv8|\0oRZg"sHҨu];!K> KlFUPIJiE
Qdbfɍ9c$@OPg%$2E@o	-	-e'Z#3mCZuilp*֑rX!v}2Cvv>=Y#wafKIUS_T]}Q(+\j8ފOW/`Ie
ox1DTY?$\sT6b!	>9"-d{CۢСNK/rq"=cZ'̏|܆~tk0щX$xdU[@EWAXȮ2D;*l孼}!  љxFB!=|;kr	*X%ϱREVKᢎ :£T Ǵ]r3A\`MJ!WG2BGKL.IA3*cXyB-5@m
ExJd6>p"ޯ3,:w 
p((ȑh¡7ȓ3<OxuFg|,)fٯQAuPZ6RI7@"gGej댚?EX0?+ޡhtr2M=+I
 ihURh}i c(R+"dd
GV!v*\<~ꇁ߳l* }c)M}'i}3r9@*ۼ{h</! *AFTr|"yl)67pyB1Yk0蒞xD4N(fy!Tdf_z!O>i1Y_*Ѹha?:JʨU'>U( Cn
:V~LS\d%t"Ph\WTg)͒o_ݞOϖ=d
Gs0gu1keh|nV'h$']sVuB
J/
`Md柭.=V7VfG4A$|a!g=jS zN@\Z+]Pz'{Tx+ԁNnHV+LYTf,KW
` fN? $|R~ќL[xY~sM8흽; \oęM*J' &5Ҡ49֪|V?Z
uyJʩ@t!Tx*+2v(ՑlTR㾸ne*_4@]Hu1f{]
tEzqٖռ7ŗ/5qf]sOx{MrPiu0΋=6PqǶ S.yk:'^&|8`bf]r? *}4iKm@pr
437Ly=}i"'tt~[A%}0$t'۶ 9HAӬ,䂹#osFP!fͺAR0bl*&	
>mbr`mmR;^HJJ\km4SH^uue+[CH/;Xq 公RDkJ.Shf{;nv~Eq#,wK@*+q^3ƃ@˃8:>]B`Ej3l<aݝlxTn1|ai&CpqVQ0ܛ'A.~}O~HfTRwBDKX,y{PCF9X"DmPF1t4+{J͞-6WǨ(}`>S-{Udv)ŝ]7dUI;Xb	#]\+d 0'pJq742dYr_4
"U~ U
T+OO@ (:N.ňIV8"hTwXw.?϶V	2}I gPSða3V47I^(F<
`Pxfk=m+t^M	?&йJ~|lh|e}H M Fp/fY"2#Xxj&'61ǿ.bPؠ/،21)O8q6y􏪴ƤA'0ӑ՘U
-iEC`3eoa*6VVD-I^|¬ 犼t˪ᐹħ@P1==rAA"ā}T`ؗķ_=3
SP,]V,!l~Gkc(MNܹ,1g1ob0M٩*aDCuhħB}d PՋB u*ˑtcP^n,`HJ,*KYgIQEB'і9({	
|M '5V\H~oyrׂ_e	4DȍvI;)	[t&A@
KązNl
Y5Xzr5V8
T|{1]WRE«XETUlS
RkBpҍhRc5gZR/^;4+_-׼fwrZ7Sd44`k9JZϪiHMfN"@tdȀ)$k9$!x"*a_Vwj0%l3' AX5
v"hHntO!lPnXQ_;"LE_TI"AkZZ|[pmcO*"(}<ÝpADTN?`k1::Zjch&N bcAB
kX5V
oM)4Pߣ$XVD<	HZ'p߸#T@Gq̖u/s53%i=ׇM*`A kc-seZl׼/`= (Zf@ш>{mpe23%hmSa2ccʺ.{SӘ:
D
@[ t5
;xb}awvT~hpM棱E#_74Cx@U
QT)+-tl"9P#~_I6WH
=^#& L\dV+wpǠ$Q'"Le%b;C-W'E&$D3dlXLܤ%=b
2^Se,zV#/}b!U
}8
UwR+taLQ/j9+sB@G`AVB'yV@
*j*{H ՝#~2	GP"PpԷI'q.Ә)yxJw,}O2Å%-Z!nd^J]CY,L Ŭޟecs"(TwIh#4B9MGs
, Hc%κDX7g٦ׇӱ&d 1{UT'<S.(7ǸѫȈ7
HЊdƞM|@'&'̫Q-xuDBu+UClL>SO.ǋo0Qٍ/ MM_X`ڎ)h+9eb%G^׬K(h]az4?@LF5SwqpC`Δ>4RYLJ ݀؃{4erwg2m΍Z2ǁ28e!)\:SXc 2S{N#`>b tɝx2!xt2":VNWh?,=	Sk'Ґ2y3U08pPTz5[hXU}BC"4s7VtҨ;jź8QGJ<U?RXJvpm@O4t^9J0yhDg#0Z<"J j7&n~fBl":.Zp]NG N
(5r'ރZsRV*'0T `?|&}T7{e(&B 2Wt QE<Ur4ɺMkoD8im=nYڛGv59ieBt
QAhA;W@UȲ'Oر<? 8+$vYY)`|)Fgܔ~\LbZ`r"PK!q|&+š<@=}k0}+J'e;CJ$'d$;GNsbgZ~ܭeBj@cKlsXAW RՊ%Z#̤u*Geb$A!3$'ݱ~{1FEGEd\L%z1OVHkr 
h5'
F(ڂ}8g2K!gzvO_foj΂f1LM	j;KH;E ?ɰp0v+Ac0.	u[;WOPx&s!ZÀg	$ꝁM-ؑ!gdkP
n~k	*(8ډFot_YY\Hvj
y0ۀ2~f%:NՎur]WthaӋhlm"|R/dk|`Λأ^[ljhD<EUrei~ǳ,&غtIRVH{[+\(E3(cZm\dI
꿀Sd8=(/υj&"[\Dk	-
\ⷆnf(sܵ&U	:n9ZPKwEE i
izpY6xDId+lGES苍ͦ6)Hz7m!
Km+#PW-U|8=J`F.n,+Bb%D=lËݹX*U[g3~w"Jdq+Ɩ〬>-V(KЬ j s-C#*9L^  x}%h^7hY0z<=M5<:R]%szVΑL8(n5IV[D;7>[	3l9t5EemZ1ASsaWdM{$3Js.`tq2788`*QQLӊEAxl{ ~hY=6̼/bwP8U6O>IJx3/^vʞHw,)7x="E(u#f"ݡ`IO+ȡƟٝ@XŏM(@)LXQ6,O"&l`mNEaUO
2I\z`*R2nAO%dD~@"2
u82,Ov>6UT0f01\XW:`m,iy!z?s%[FD<U<hp{`aIhw&$ S19kz?ϡs}aŢyzi2).5hhdա'8ӄ6ÎudKJ@mjRlEx<xIᙁ
]
hdn@MPedt%7
gJ=D2$P]zgTk
-#?@7m
zݩX 2W&Љa{t;VQM9(aw lB~nJ g"{@iNwV0IH(<q.]MUɯ``ϪWZv"U V4!92ސkOL}С}-܌NL_CxQ 86D4K
}(!H.6A~+d$yDj<0"uUbWMsʶ8`'~1,/הΪ9Ihuj5<,HPJmS8+RX1D#DT?~ /+Iw.nv2";*|C׈:5Z/Z摖/Y{Guh]G]l$-

IF)falx*i.9$l|SD	M ǎ1h4$DYw6%XL7_ͷ Yq'+^O!}T5$N&3l~Ø{8輾?Z d4Q,"I٪W+H	u5
-ُ
ڢ@{OI*$	4^qsjL$!K+m6ZW
n>ohk5Υ`Ir
wԆ|zT屈^\%m{
%T]%gŠail$k|AG[-I#js 57LiގAjxȺRc;҂QTbh
m9kVKsdV\ ACzIFbmJ2?_9o3Dme:yo)|d	%'د'Q>t<0?t Ĥj5~}]5
_!agV,*2S ef7u541e
I)/<͵)!_%h9
Sz5߲&{!\VN5gZg6:_}Blܝd[mz^2~ApnhyG2I{scxaM@ݒ<(!]lǱJүd@=T!1"$5Ep4
GdQPjGoQT&^CWǱDnX%
#F{GU Hh0Xޱ YYPG
DXo>QLA(en%Hx~@HU*:ڐ;n[x-X.ޠ}0N62rjC^;pE,en*=`MV悋1848w|syf|Լ=
<V}&Ozc×r?|69 :z5$aB$0FI{MH~Ľe-Dj4?8 I5 C4e	ǀY[MbdL{0RD"$_O#sV
]bV}-c{YQHЊ	#f \ yY7"4q&! p:<D?
3kd0>΢T_lCehQKf"-T
>Q
IAk*Qvb:ȡDjZ%3eKKoX	v0L	)6/¨_,0o뉘Y) ONNfegu4Rzysi+,H
U!V\E @a	sJM)?zN蔱0"+ˀyWvyie:40c&ۣ=top7'_Py ۑ'v=2$d|KTI(3%z5Ve{jb@l51)ݑ;/䞭AX6YXg*(;PQʦ4 L(+P&!ͨul+QaW
8yfT9[4у<Ki|j"q<AzP@(*GL=&0aUsL;^̑I+|آW. 8UB>?v2I~6l.Rl,cf_Y!28$IC}x!ZXdX=[,>ZכʌTpPMAKM٪,ͼ]{"5Oe]΄eӂ 0^GJ$XȿCw!p\_<X	Ά
%K*VYߋ	mC0BES(_I]KQ5ءZALG\0V\fфL3؊	= vތ-
dYZMGʆl8M *TH&ra+ m`-2PsFꂐ|_JPlf9yawb=rVwz"rZ˳](-Nr?l(;4Z/ʌmȑ`7"x%HnRۼ=K#4*/;ZA5JMNs唑,f5喼ۍ@*?BY)?[¤X3Xv#+`ks7Z9i`VNT=l f[\IQx(#'CuXZ'i \W=/s`LF2,3'<v,TvF0rjWQA`ONjT HHط
+lB$qGP(*zV8^
y:rEȼ
3ObP<PvulXaoIjjElW'%*>6K*BAIH~̂vza
)(c\P%q{Bvg`,}ܴL@c^!\H5A'1%|(/X[d{"Tw\v7ql4kvayvL,qQ}"
Iڑ*WJT*1,Px	Z]*ILV
IgIY+MwGgS E,Vo==buUF	lwk 2
샪C2;z+[0n͆	E3eALw	H67)&Z	
e"K\z>O> =*p!R^Y'n:kIk([r*ҭwIG 1F?l: M@e°XR+lyPtMYк|LTRSR%5v/U<ځDljpjh_B{`lDKphERdtwO<qZ\aGFu$W
nT>(p
oF6k
K˅ݸ?ŎDB
M}*NR؂q
74tRE7K(Ӗ/Ke$-ԃpx`CJQׄe)v2M.';
9𬖅h~r9pD,*4zIL۬%TV4cD7קV;ƽa,e6U[Ge$DD3p[b*yyiZ1gY	u$3;g̖(ܑ5Ae!$lp<{,c`EjI+OFb*EXS86cBteꕜk!@x*2jt,}CMӀg@<l+Mē5(a;1XnZ:/g eQܕ|CLȣtb¹ ek=S<`1NX	UðMNBQbL4R-bb~M~uP#HMqAwdj&S6ɭ160Mj'{١5e"^ZˀX:f*$Kؗ[?%`[EZT*p-aRE5tgM'Gt`nr/=r\ŰGp<iX"|*j# Y\Eb<Rf@N'WS#A1d¦`k@3b^cʥ9[@Y\u,1O9v{4f(E P<KdTOvPrO"՛S'M{7vA
}~@7R%ВEnbzR*[+Rr;H(;2ʌD(T",X^) jzcH.Tf<qxXZd7R~/:@t/8B_lIΘP!vx-kS"E{Yg yNQq}zHཀྵ[CMvp{)"BPh&w~Uq=oLXn2l:! ,PY^d!-(_lF3o+QJWF+͡~\*"}--FXwhϼ(>].TRGG$?O˝-aL!aCffkA$L.YVXy %ܧHeUb~_3>M
a~nSs,g4QF`ϟf.l.bpHA KN}$Ihך.6y}"&H@`46*/~p
s7Qf$3TdKk9͢n+ěu1u
;ğYQxn![eU~iBsvMy>Jlw*TOv6}kh*d<VՀmCRFrMᣙM2[s,j""tcjN2XƴwpvLcaM{6=Ѯ<Tՠ.^,7#lewK**,_y7ZPmً|~McZ ɴkF=&.n3%x^8߁efLxϭ"(y;bhiǗXĜ:vtbؔK>4A^*q"T#I$oW0
gaA%hJ~K},m'q _#}A(|BeQ)!=ņcM<j6Y#
2tx
,Hޖ_^Tƾڍ*ZمB7?VoYF-PIR
߼
\YcG6faB6Kh]m-Fi+E: nXF5f~]r%HdhyI'Cm	Bh$rjXZqC>,ʼ2ٚ-U\l"m!hȃ4:><*B5X΢hLm]6N0@7WPADeQT
;JúKjY^)gfrʚ'Cyzm x$;b+'MTw{lw<@}./
fVZ6,BOh8/9/=2=El$7mNT6ÖchK@E_yh;GPnr;
r֓.*f<s(xsyei5>LqŮ4}FBWg2)I.@*Pj,Q eT jEvc.ٔOk9ɴ	$b
2q4
P'R'i K!J3j.@]ha=zsf)vew]{{sx,+Ӕ/\b2?X{.PG#OSRz!W'_sEh:pBq#UF5B.3J]>?f?B n7{$Աq,%ct۠SX̆5ƍ )[lZ!sˑب.L
5,'ՓuXO>zn\d(J
&pciuCdp3xPh5;O/DFbO:j["J"a
_* wTQ_.Xxu;]"4}O9ߪ"ˊbg0\82ʃYA˖EV`:RDn%l'w*~+)
=G4qԞ`;줽X>V{a4\iۏ5$^OGHa1gҮDjt@}lv2;wv[p#͑"g!D1>ԒļҞ" ^q1vW!/3whͩw$;Hxj%e'[RlK eC?WT
vyV'AIάXI@ȟlҍB ]\dærC[Y
TsT+ܽ<g?i5Wo9P	[ec3#ȀhkӄaDiQYM߷xw|/`;@
y0aTm5wdf
y3El,Z毀³iu9
Q(`}6P1BHHL>KE+YBHKCBy&cYHph̬H FJp,#"%ڸky隚D`( *@b[{;X~ bHm;y\q"B{961_l)AS~7IZsu%4ߧ(%Y
x
&&e.5kQi?mY}]| KUxeg:GpLzVm^eN{^۩_-_E9sjgݭpf&5ݔcxXaH,I`(MzIb̸'`isN* 'I1Gd"}v٘#(cy9ڌ=^֍NnkPsؖ$сzUO9uɉ(^M'z̑	][R@#):*B$}݅kI⪌:Za &=k
:0B濖6;C&t	t
6l,$"@\TM[̧3@`Ħ8`_V,ˊ8THDi;v4,7{
ϗ@/?soED-nn\=:.fU3j}TS4;U(JP)lE!
$9;@yVp"#,A'p8@.o^/q㷯v3* #[Id)l?m'>!P(<6wѡ\#
)>E6aؐC[}%{PB,ZO=X~/eD\LVڈÓPzb.mCVQ 9~@E	ޠ--2ec6MΙdWqWx
2@Ri3jJJť!Yxf5L=>pU3%BdL#Ј݄g{.Wʙ
A?xPtt[0}`$T"ZӰZ\'[઼oyBĐVʣ.˼O=#8#,aFSY,'C!qS4!f6­	$Ǌ_$BF$1#ss
[hb~}RL)j^i<8SI4$U{0h/s3lmEHo ok᫪p_$, 'Q5>ȡ>)-#}dkƊb3)Ͽ+)$o?,5Ad^cs|52573t؞g^`cYQ'&э>A̧ah:V0
?_L_Ҷ43_"IZx09tŞXo"R$zfg
fnĻ-*rZmY$4$f:o)ֵ)GdtA-KÉ9ārl<ZD\dή8Д4O{uN/7`Lz^y"ZJnr)ШcR@4|cvrZI#T"}lhGDF	(<KH<<\𪨰T\U배ӾʐqE#GW}Jx*Pm;](AIv/+K$c ԯQ!?!p	&~JAҴNi-e=( n|P\ݤnQU`i70cUif[N	iׁ6ibU͜ )[1LG)Z|`	w&
eNMaOJ~Pq.e5p|A9a@ٞL^liUx"jTc,ħx'Z-j)2D$j""r\_tG@#撱N&5ส,WWsF8XE~$ ruFuƃ8[l\YHCҠ>3JFqe!vFS5s? Hwxͤ\*2e	 Y	Gd+VTGh{OcfvFxl68^<xf39Im=}_ ߇s!p7wP߳/E,f+cM
2_iz,zTY-%esYmYX	fAl,VMϣ9$|֠eF'tA
K"]ǛXg
;֨=
`D:2?xu֚WP:_溟JQ]k$+Yڐni ѐz "2GBپ
/0J&+qƾn'B36oqBTuhS5E6*Q2Ox#srU`	ލ$UKG6VXz7WrgH!Wm`b)|'%bd[rDUFS8"ʴTGyp&okTYlpn1~Ni蚄TZJ
& +:;hean(8|.`GE&NFo1bV"SA+N忀"؊JXdm9{Dp)$Q¹8z	'y6	>т꾷橏2#r&
uKY0{gh̫=MH͙\nJ3="B5c*<		DaiRA}r@J6hn/]r>q0*sN:XO2}M@j!ZHE{O26mtoAMlHUfT7Bw07w[}(8m,i+'3bэ^N7>:b?|&cWzGo`8ˈf0aQDa<JFFDU
(Z?
lXOx6ջX6_+ uȆlT0B)%3i1_osO&-y:oAs,wq(KuH
ybG#}L<ԹB&#Ys	wnh5M2
< 
t6ϳw~ʑ.8Y
Pb`=;C(XzYL"JBkCa47ZRZ4YmX=WUGP_P߄VHƐ\HqOtŗ煭]i֒OH,0;̬B
D~JQOu?n~%lGSё䦆vۘ\oA㩧01,CA`Tէч!q:^9+W͙Rgؔ+ƢܱxZ/EIbT9-Z;X'ΔIE]8Tu&vd@*/&Z_TEHf\$(f++dnb0k
ryK&ȗ#<PaGYsӱv6g
hyHZdnl{H=T	BM Wh5TUOs ^=g/6׋};I"O`	,Y5̇L!ƯXj0}/T-2	(3	HVlfIFaPgpLF&2Xqw?gSqxұȆlnYMd?8tAWok/KqXX=/7t77Jx!+17mV\b_ny*>d牼sZy~i*ϼFtQ~=N_
$l{op$(i¡'|TDP:T.>ə	VS'ݒ9nZ?D0u.ך+v;Wm$J^ĚԾM,iѩhbAy**B Lu_u5laŤDJ3/CJ'oMBr8. Wec
kFPZzC|丑o.^Pߓ dxϣ<|)Q4۔HS+vw'JLrtitҍ)\zD%}N p7uơT+_Iis\Ù<xv"*UbB:!eb"6/`I,-PnsѼAC52FkG7q{*~w0-ӾIDLaݎtة}cr d>	d`)0tN5	
h
mr0I]=QJ8Z2QPG~Qx"2-3^hkc."3ΑPe5jT5I+:B#FBc:<NMq֙L'omӺ{2ėƗ 8)y*ҵ-zTmaHҾ@̮ɹA鿜#7ލ1?
Hh6CV^5`OU=(>Ek$IdKnJ,la{hJJcOꦙG*[Ú:Lh&n0۸(l\L@xD3 /m6)+L1g/1O\f[:
ء0 qr`r6kQw@oaYkP'w'yJ֦Yp@
@)L|	FSF -~3@6!qvF)`B4nYZ$O-)X=Qya8	F'et7"_N5T3WǉY-XWJ$ևH$PLJWQǁpYٮq*Y[Ӷ1Fal%-Wcԝd45:R\\	h=ƅKtjG2hB#U2	O/_yq vfUgh"ۯɫ XA~l!3&OATƍb
k[Qx2K!z)&ViŁ_EпA/E	)1/W̠":P7;MWb[
j!2(WWAX>gb`COƣtgUPs =mm(<u_K'\LlҾzm4ixJZv`f*/A6XooJ5	rRe3SIWa[ ?O;Q=C0>l	g}BnɀUIp}{roݦp]
+F{*170^J9Q{ -RHQ8rGQ0dT̋Sݔ|
\p	kjV7|-v4j5clOl{ Gf$` K($#s);o{+qRQ3{5k#'dXm<u8L5a!l崜uqN`.s#p	jg(R0bb" 7	wb؃դzKM1ڼ>Q_ʄ7s|uG$2i$E8Z)eyӞ -6<, Xsz'qq~;[Ayam9^<ˇ$J+eӓn¤q-pqm}R3T+MH6hAOZzDeOD|""߰N^B T莔?<5[8Z j;WgE0|O7Ϧ ILΝI-}yR!-Q0d2'<nyY&Y ~<§LLkY]&FAs;
$6V#zgXȳ,tWS}a9A>3:6+ڵ	zցs6_
j<(UBw$τ.beJXU2?.Rm
Y5`PѢôX#X%0dN{K/k&v\=Xa˶A",b=uL\XYv~F`wF4U!t^U@aB՚8'UJ.J{jʃ@+P!0f/AQE0-]ʗ dKV&9ruIT(DGAr(&(]l$ JzBLƖW9Xv6W`|<j]Bt&LO	qkCK)Bf!ykvó>
+ɮ>]GU
~ir7TPV$c#Q	 uN`ћJm.)p?Jpsj^eň^>eP
Y:3韕?LX_`!D]^a8Fr2gIjbKE5ɶkk
A`<aW<P6	Tx2]ȋwёg:^8?zTN{-酤HAs(JJb<3MR-:\c4&O䤭H]iSp4ͬ[zBko0&B`,MR2XeޢB
}Q
<.|_ 0JdaASz䅎vȁaC*n{l Y;`%"7&\CB1.g~j5}4.9' rvfI.X'i߳hCVF=2TsuY7G-ZǦy~K|ՌRk</8EZΓߥʭ~l,*]̓,rG_0˳{pbk5Xׂ5"R@*crg&'{b8rr3O^12b.Q<p G"/`&?ӓ\I A7: C5BHs[d
D`ȁ1(0ɖ_8iN!%+y 
'W# rq66p:
Ts')ALgi
kHV)Ddy1p/[zͳt%?){'qCHe\,
r=pVpIȐɋ#w
G~O.
'ϭj[.88&X@YJ:,S	p{TTUډxx#	x8;~pAuBQU hK-Š|!YJ+&p;損g3El@py\x0%Co722PWͺf6SlX}ETjX+`vi\ΞɇQ"_/eS)jLce#@"<_toӘ[Z+t3;`EMU/+||=a:l)خ65$(M*p!gl=UNb밿=8?$׶庮uBM<)iIj 2`X *>1ڏ ߿sXkGg`@NkV d_G\<V	;n'j.VM(z_j >km2f(fc=V2\O.
HKw'˓$ִ)*bT{U5l}xO?{kd-D
wƫiTM'YԉV8ZxT%uV@}WqzLD-a)kA~>5it:}sϒr.$Wq^νHԟAYTbI|9KQ
R@M`	u-R^!=}K=3I,t,+xKKɫ߹{i!Q/ǲsc4:'ְyOzچf=- \^,r9^-8:ׄf\hSĭ+IT@/CB4:!:f഻8aY!Ɏh#z\,cx"7,_8YD	oRecaUon2B.x,VWE'*`Oqر;楰)(x9F?0EӼrpdҶ$@fq#gew,,R_Q<*n\dTZHz
r,7!/]pVw4)2yfvNKQ|ʩ\B&5m-K
 Gp6c`c,^'f
ܑ_GXnub 7b?xr)T*'%"<H$.sog)}!ɾs\=C/ WXXqY@o;@p2!<I"-

۩U/;/2@MR(RQ;хfC%{J~ЃJ[޳w7xh2]7v/NոZ6<fzwDq`Ⱦ	)|xaW/H='U/
 #[7`W	k0 Jqjs>Lcfo	KzYB#P}qv$B0\ߡUXItL&4+ǏoT
PTLW-X(*:p=xODCS%8f4KSnd68`*4n'_hRkofH.ϹZy(td	;;\۲#b5臗|(^+C>LjK*ha&IST|j]wL3]|ŞDMO=Tv	k=-Ǿc,͌E7OKOxd n~:$aIcN^мJI@&_W,O*k+"ÿw 	ɦ #-$Z<UPue\	\ۀ:ꆎi? XlGL~rH#?7r('%|:נAjʻ$_e",|0;0-|J7-콫KWDd5`{L ˰	 ;H.}&FhσEh0徭U0+7XAn Lm\0c/叞
NKAkѶ=jn#DXxEf*M6U>y|""74*7<h
̣93D~lݾ;^ؕ@~ slu}&C%; `;.o*{cS9	#OEB0hw	)wyS+9^œB'kFwhy ֫(7u";TƤ+J_@'ڧW@o5qtl0Gͳ+62jvJG.`J|YfIvV
P*QL#0Bx.iJ	"ƍzHkp.
b>.d,$;H٤,iLˏP'^0eS34Σ$TgQLRPYGSxzƎv@
6I(Pfӏ8^:/%$AogHEs25LRaA}e}V$%sΟ@Z;PYi/~aS{˘>YTD=K6'Jiń(̤u"YI8|R8)7͟Xz'qj'',g+T/6\{C8,S2n2-={P5ptthqLCD
Me
DZW\5\grlo'[G爔)$50BwQj4l/U2I,&ҳ<vDWhWa[f z%es5`J_p{}6v q+w2mR{9M4 {Q=9U`emNי'jUl~yW [ă(zNft_쿉s CMw	nBX<-BN˴X<r*q\c`=De^L!w3o7;B'_}s*IQXS7[Te#@f68rh񞓥7,dkla֊ jΛ(|IX]5:yӈt
ώ?\DI!cϹ|ؑ-6Jd y2=G IxlZ̞#]
%9uR⚡MȊ#	vȶl)o]3 KhkCJ 2iPg)V㥾Ĩ?N(9JC\
87U{T_jYu"a	QKW!$)Uj^W$TB4fͼZkBubB̴P5=i͂ݷmu^B! AHV,3h^fF\:B}+ޱVst2M7<qcw-C9`XH<?D?M|";P/9Q&AnP%^;#gck?A\Ա#}ɀ0mI@ iOѿBUn<MnϗFgR;2*ZGCӱUg6%yk;
|$1L=l(B*'EcχB(q~A(?+nOciw铀7^MBYVΓLI (
( /}ժrԯv2*UR շ}5R).`Z9[6ٝA]KR&J*78ژw䓚LՀ*!bI ߷BsgOjʈF\v2O:nn܃W/StbsXVMlxuyC2?")㋸hѺz:`
~/':p&쥙OrUϊ"j	vV@jt{G>'S{mvָ`	u9[R:noR}9(,n-Z:	%Bhu`#bGT^PSbuCUޔr$E/ztj֐=,x|0D
L'CS=Js#5Ӡ^f*ʏ%2T!B(Fb~VJC϶=G/N"k
{"[=H֜{pX@(јHYɰߑ8Jk8JGR~J,S8oSc*DnXjb)"uHP-v3MFl\d27KtyzW+#$3'uJXBe6PMm#N)j)urʐ8ID̃0[^o82	QR3UWE8PW(1W!w Vg2+7zi3m^HrZ $sJ+X	⋵Rf|1ycCs=9Te>ӪC]
U{~@ԕ,Pɗ59&h#j> :IZ@ ,%.:g
+֡̚87"hjWa-($MߠH<̫nIv:XMa_/yGDAU'!	 #YBIK	[~<CCM;.Z:Y+7rꦸ{ԛcj46z&A:^=6팼G.PؐسJh.A=C;!|T{r 7gbI%aE
Fu9`ȱ^Ti;~7c(hb{	-{D XpU%B.Qv P-dQ@:r6g~}/;Jj-h<P|o,}nqV`
gY0EV(<{%~Uڹ]K6@UNG
4oe}XWI['%F'˥,(.HJ/{D#[9{ J0qB+alE(3Ai60wwe^VtiR]bWd({cxbK:nitWCByf0J;eP}%R) Qw<+f' YшZr#0/r0@ҨZjB0p:GtX	U"=[6)m2o5QtP5'4 c]%b:bV+IR5gc0PRh30qoG9?VbN##A7bˬ2 hMD5VflX<S?.\DFV㰷ȑ-~QϬ{ҫ)1~<,_ћFTOjbLTQv,uDŃf`Y 5DMmtGY5_d/!d
QNF:Y#'!b/+zeq\NA_&&yiƛynN9hx=7ZǬ(C`#z %躗s GG\!Sy)	$bQa$WR{0͝X
kjfN6YkMtU唆`sj#FX,BQО@`mCdKD-xb1h!~(Qd]cUJP([,t"xu+Q~zVRdi hXK/DCvm1/<yW~n5oj!A)%ian[hdWS1-2yiiH4vq.TFxU
]CD	͊+`5oksu(m/xOg3fWm8{WeݙWzlt:*긤.up57EH6{|O!
:N&t,fqzuӣW:uZ0Zӡ
?;3
l`06L4.Śn.BrH5#K:Юx&M)
󰦳ڲҎ0C
j,yC!j/}]w3䰤k|qY~;ʶ?4ǁhzK%Gn	&b~D$fێ4~4,UVw~'ԩnP9
ò0d(>48)hwz+缍ЗKx
eת<b]39oA<C9_]j+NP4$EyAؓ#ɔu\kґ?M_|4EI6!L}IV_`I',b%>܄#u gzE8eOԼaXVA'pxCHudӀ٭63V(t㟝̴PKX2lrjJk"r|Ad&<vp~Y@Q?Y2mc<\6]Mb],<9'3xDjeS$X`kŴLRfi{]-)"|<NcjTGVT?p(gt	&~@AŮuRG.- 2bH/{}%ZWk%i6S֐4w<9~Q;II9
rAR52r8h5ӎpyh#˲΄{l*0ڎWIb
%2!)(.	d&i=5Ay3"P8T>.@3l^r٦Bl\lYËKOASƴp@qx@W,@5z{ͣϙ@^d6͘ נ7qdb
(fT$jx"-pIЁPkHAWi&A؎Ҩj|HszSyHqj.P2t7pbFoPQJ{Vյ
aE=&D].Q<(ݵ[C-EXEшV" 0';vȯwZc\lJJ[(/°E<Ӭ&;K6\$Dx.#䫤U+\h#|dwnh!GxJҽ =.xӜѝW=?KKЦ6*jDҐU$ꋻ\Yp
pZ{=-[r\([# "2/VX<ſj~'@`~]:L*}v[&W(QBQmyaK;BwY`Y:pJUT!	$0((>7 Sݝd Grq'$ы`_w#:,A:JB\H\K6e[.
~*0_qP!C}HW68%kq
pU<Oa n)PzE%۽:
fD#7s74jcH*LcԉI<##e L]V_AP94#|9͠82ʧIH]N>ΐ9'n`<GtYjjaSɚ4V^&"jMީeum<Q(g1EVN6=4XT^!ZJ!7Mmy870gMPoI>xA%u2NX],O5RnayC ћim_Ɔnk+Blw4/=Lh7)^/eR%>crQ1[t/p6<n`"qZ$h#"τ;SPl䗅Zdea,l#LԘKI _L}	+gG:jT_&.ˤ89^Fgi8ے'3(7WBn]HGrBHPƳ8uAG'N+IeJNӯMZD!+nP-abXA(
ȷ9(Y4sQfp沸M
2'1hrml+8IU3 Nȹ$J=5Sl-*
%nZ >KC{dWzk
ץ@뇸nlyp:dQx@q;Ɔ|f+)횢 Douc3 [w_~rv1ʡ2`jfq
=d\X5z3,j[$Χ$aXyMok`(WM墨ilN26#ÁeuGe"&_tfͷ$i4tg`/p0qLB#)E'sϠD{cNP[@q;>*yd$mhU ה))P޸Vj͑I(:ݴa2%0ұb_~2Az90NR6w}CgL bB5.F^z|nzJ;Nn9E|04`RыVX
Fq`_	yT&vqw
BθtCt:,	1on0A6{K.7|Cu<!\8JȑӈYh@5LBCp($xF\{%Nn:D:
[A,;c?ܡ)g	vxQt#/$%㭥2iL|Nkߌue_kmemV<v&,aCնR&.YSԞ໇DPfYsM9t;  Yh's#
2-lv-l[W1YhCtF] hƗ%ۂpggEd.P;>c 4й		Fzh 4ƶeNUr,{XQsƢ"EtBпDE8r6U¾ɛ//HsNpA)0"Ub6PwH3/(7&0*B3g
 6hHaKQhGڈ
$ܗE8pCyܣu`g
+R:0
L[vȊt+ȡ(0rdLBP:0td;
n̖OlLuSӶDaY̋m`w
jo}쏅Qx0($l+('=;H-`=
@KT0'ozk;ov*Ocz)s<,	fdSGeOLU *C̪a5>NUapeSs0B`:J6U'Ik&)7Ζr;ZYʝ!d%ͪB8M}䮼lBbQx6ᮼF'`Q'*xVVQTr됚{K*wHe[?/k_׿S?1VNƎ=`|{jӁUcDX6㚴݃R8@
I 8y}tN]MɂTxYX(Pos%R'siТ1ߦ7!y2-A2z}$,ĕ|sE噪#SRbtH׿JĠ!x/^>|H)0 %=vyE!)e{eqaU5e"=j
3jOn3#Q
GrsRs+~j՜sLP6k?{	4IYp>Xx̿,9|l>ËF*Q"Ck0dעxOqEmC$12dd-X'AL7QAp6¿7a[x硗6W]AJr;H~L'>)[k.;1WԑIpv xUidl?ǰה'¡w$=IAÇ4HDe+L:8k6鎥@8Zy&JhDޝ-!/]vD6R*7FP4*pӪkFi[
0FIۖw|^,V5! Dɪh=?
ȼ[7ъ}y?
nzB$S\oͿHx4'>(f깥%C7fyy$ixO27ߙ)p/Fx$­*xwrSLEx5UǗJ/WSw:u;DyMHM۹z</&?f#Hfw>YF.`N~Xlp'~VqPdw,fO-Hiψ,IBe#pS}-Pgd$]M={PܔӍ(ϐ506;p	@igSYpm^2'7^CȖ8̖H52l-${͉x
vx
ߔ7vaVH镄;+H@~D֒FtsyP ;%D.|\H=-2lD@ᛚ0+U	-*tx3ꘓsr
NgXe4mQmRX=7A|i	5脄w#:c:M̝K|B'4A7eFlg'2]KΜH)lȲc$12eb*}ڛRT.\P=v99wQRz9an7{ w QH9Y҃ɧd@ǌh cg
q(M3o\/ƔVxsy{
MY<x0'
K._)$R9~o'#B<3#ܓ0>i<C^~Z݌Ӧ5LǦ:b6/xŁ} fyw.Ěn)\3*FpP҂jS;+vALnIRHHeITrvoiޡ'*D!#L,HL-y# ?U0	Ma's.vŴ7Pr[ĩ.VorEx}~qOU*UypW#Y6vj2|ʺ+	tTzJs

tĝiy!pA;	
(HZ:G'@lvV, s:,>m)KÒ9i'v(JpujݍݰouHTIZ%:c	8Ъ[ 5wq_'s)WQMfح,$cqX&{GSC^J`rfp<F*3{L.3oJ!M\@ç7堼:g-7!*4N_-&ŅtRNk?V_o'>p=c]\.T+ז6N&wQόZ!_Jck£ ;
)\gz]e<ZEAAM,E ! TUTk|Phs͵=X/ǥ?9_&l}06un$~{=:y޸¨T5\/|G.SQHm𓮰+Eaö/I:o]L\= `Ws'qW+޳!^!KKd8pUij9 +	c!ju$Kf]#RU@:uOc?:d`C -h):й`"NbsAaOr=}
%&`hD9fXwSc!QJЅ\>t6{xUC/]3fZ V؏F5dN:c\殃pT$KRxrS1yV:Zc<}$22`ޯr57İ
RtSHBxm<a4*Sqt:PC{2GFFDv䫑#.x=9E8d϶p~Oa!dP)y<#凩{cfh>ز=lۙsˎD:CU@Bv"/^lAFq*ppv%4)uICBSsJ/C%Yf(j;-$%0GOIvD6$h|ʶt#/aOda`E[I"2@7MG"(z-XhB?9E2d#d*aYt/b
aEŷ/{أй%'mU5ɪ!,+^2/6!=E^aj`DMSS-*}zfƗRPv$S"
<> >אd tQ^֢E%"C;L6ka(z9xPq$f]@,tf{?Y68BzbN|v?qYV?_2?YWgӨ<fx?
@JaTVq^SzVPT	I><ʜM< Hm!<_Hvuz3c|82CBya|:wyBcQ~FDWXT3i&g~/IcvߵI0ƔkRӾ_pQf5"^dga*_P
c}ԽKwVUli &Y
D(6kO4ڪfi L2Ps$IH 'wB:}X?+ah a^J3i)ufU7ǀP1!q?jI2+BXI2H8|Z#%bDT.q 0Sz>Fy[јK"=`ۅ:g+>G>)BCov0{-U.J=(`5F **);=t*W2[`j`Q2֓סbβ͢;TDFΊDMDQWDY	lX	`Pʌ}P	ȃF\SJ
}"(A݆G-ŉ#Q[ea0Mr8Ox
UʨTsglS|#;QEgI,AJ1N:תTR6Rh}!&n'""	xIQ2f$U~٥i .Co[ &C)Т8	0d&wb}&iVgצ!}vU*=5
Ja%e9Ut+6 T*?226pm*%!S9-R<'Qa)܂5JewZJez	K94WGc"b\7DyM["9J9/:i=pZ:[*rI/|5nN;O%%'Sn*c.]/
|\
p=c*L#S4Fɂ5Vxn$ok`*88bY:yv
#P%Wslm\'[Co$ S2f\"xwٷdQ)x
t,S. `/.|&^\:A(e5o'FF7R2QB%U&xfD&%Jw+0kZq=i0"~,]=A 7/cWV(%>1hY$]4AW o@UY&sW6T&K֯<j%9U'i>C;楂;m
'|6E8wh<FطU|ouz(tR5n2/1B{yh^*lKaۑ0n3\7ylc**6Z۰|c9*ueD6!b.2OJGy^x(IѱuͽoMu v}<0苊͠ĈJ$aYlA,(Ş$$![>DK|REUleYA  7<N]F8'VԸoG3 p2xb<1
t82={$dy	LOfr]Vl 8aյAyƧZg
nmPEeG
,-FY99h+K
aҼ!]ld:$6.l @?'f  T㦁nX(}pD"`e
MhWynrO`	G"4 jU85"`5{P]\-RGJev&Sg52532x"o_**a*lHʢeIl&EeG$T`jsW})8WPߩ}rzE`;Ŋ+5](d
nۦy=`6X)?VSPW Gy<t})B35RH}R5mޤا1q]23y(f2n"Bo:]Dlectq>Vkm-@^8m_ܕe$^ci7!ϛ	=K	yUd%ɠ
>@brN*of+{D$AnZ	ac̊x m/%#
(Ax:<LWdNRYX8XdNU[`N4ԪϤ")鏂r>&CiH:YB0'&!^-l*M+纤U<g]̿RQay!<<pf2W/ ,Dl-,p*JBh)0ªDoe)~Jng(%?>HeK&r&%?4$iUc {#_^([`< gYBCjYމL*,!'+H>@@U4{@Lw86J7϶ `oŸ(>j48FP?U
@K?_&!8|~@^WR  cB	_.2ѧAQ6[o%t"`c%"X'4NiaNR@:|]k
.d|G*6-"Ӿ%]@6s81U%އ1AV6|HF'`>(=*RHYj{B+}	Csb>#'D/znEgy4\'}@EbE
EУk:L)T|-'soC\@Ϋ^ FP=;#\DKK\Ĉ6Z^rk]d(Tig'h((#w/v`B1/$;
ӃAʋOoDt6L/FAX{`y"ѕ@! vh6_HPPg5s\VS6je4.xH''z6Ԋ碱S4 ,)T6Qj=8ǆ
a@_Nl W©+.-c2!z6e4(}QjG9{M	;0mߤ+_sx҆$儴eDf@6"z8;hc829zY
~P`	dT[5Ez5 ފQF\`'Zə4fNd$mNd4󬽙J_.z%2?fbP<>wU&_V}\- M*	%Ď3hYRZbqlS_\HT9"˹)<o	O.T*ײ[X]w3=a,mny!ZBo\e _!7i#~ZMNy;X5f?gf7!E(Dez2ZkzC dXƿ2(^=E

FŜC>cLm,HЭU/=1?Tӎ*ݦ][V4{U5:N͗*zo@o
(.H%RTCzqfjZ #/[z}4cݚ&ˈ(Bfm2Lj@saYPZALKܸ`	DuVcoXuuUjp	*~}CL!=soʜ;*9_PD>LXfԈ{z0Q4T&dY$~VԀĕrl.L4V%p?WG
/T"O0W0,Ĩ^9ca{g#޵t|l6$*i/Z(/w|ۛK pEgݤdqkݼFnSSWU#gQdT%ٞUK.QżbE]>
>7Rأ}KuИ 78,mDW˨ǓУfҰ2WSL:9[C!:	ne1/G X='##@qB8MC+=)
 wh44:n1ێ2ɊrUI<DWoMfVi9_p9܇"Q)*dU{bM7=Ҭ4s00ډ7
W[fxNԴQܜ-|
[ԥMNT{QmTAz_շL6rPՒ1	V	4$,
*ّ#zC&LX]Dw`^M\baےnK1r
h@_ޗ05s4^Q	?k{P/k?!LP
9';HzƣfG1H
>u[f+x׊O*kռ		D	Uϥo6(il!_X`KOĝ!ohՂ
oU"
LgUet}oj63H
I|2A5w$vy۵KeV(5D>K[VzE<<@B8v7> 
IcQ {ͷ$ &8,ެyɺ"LL+21%ϙ7:\x=-܋DDmGjLљ@:*MԹ=gx`T_ݩ "guՂ.$
,/iCԭzRohHvi;ڳkjܹə&_\Xb"[.lkAh#8,_m$ˀ~w .8m5Wk2ԑx|(?tH%}τ\	KQ4Ы#㹀;
԰"&T6nv
C򜄗  O䏆JlJ1)/ZFD+SF1 s`[V8u<%2k,{n̄Odf +k`u'ҵg3 b1Q"[4H"wīԘJ@N&"YOsܕa y++4Àe B8PxdYzM%?b`"6%x}]4&kR+Q2[7ƞ­Ab~1_Kv)<)H*7%DpxB\@-~H:q)#,?TT$#1WAU2dՄ:>p]sME:I׎uWHTxT+&[3N6Z0G*VO*VEK$buh !Vi\LӌH@;߶7ynJ3i-7tFn|	O;3&s5m?]ǔ3A#7NA+>spkOcJN[:mz5UvkUPUce	]d/͵`֢tF
95tٰwP="dǚf#j@r	bU&ZRf
X 9,<UE,6%+"xS\2,Ƀ! Í0DgCdw!h>z[8}z	M#t|VC-{8^)8V
jb`&|ukV/o@O<վd9ЕƃNmQp o2IyBX,usV._c= "K?J͝wүe+:f8l iRS3)j1GMU(JIYcE\Vڍ^RǠ*g;9WغFじ+y,L
,5OS;u2ƲK
j8^1uvƱ`*3gSJ!3y cp7a%݀ΜO_r JfǗV,t3WSr&orN[v"V\S>F yst
a	f_$#eexq<`$⎗3.oK	`#}؍3,jq@`OOޥ#km/D!kv QP-V&>Wr?4S)""2t曽UYCY&wVm+ʐ&lMS
eS+ZnQ-+0/r|_oz:d|u$5Dw/}L7* gjr
Mw(ࠣ?p&pL2KN-˙QxN΁p(~7brkth}P;+Ѫu47*d!G;h3ҙ%q>n i3Oa4Լ]}:`-S'C/qmUU!{+I6ɷZ 
M%"'LJti,ÿEFRMHͪlD/@$8/8̶Q9Vť|q.P32(5%`yhKѲ0."v@/5M,4]KdjrA/9[%bYC3vIFؚͲ.}J1qE'&>:NCP`l=Ee;V61tmgCVoӛ{/(_`6+f6x.'aVItx?g-j3\V8 +c@@e_ˮ]nU/>߲;B7[hQV
KLzl4}7=y7~FjCS`Gx[Нsz\$ne ƵR
K<lX
>=h[@fIV8-YewX"
Uʹ8 c^:⛲=4Vɚ⿳)O
u_R%
,+#p q\qɜjQjY%?az*ک^G.:e: tXT#c{;/hbdk"j\~q<>4
a"̓)IYy;ֶG+Zi0A.YWXv6yPR95ھGr}vkL0G'IC,4@H*[LbڙUNbtp
}HSɂ/Di? F+Rߋ̍-+y|%PM%f(I"C5X^*(Z*Z@z#3e07><~-pfE;cޔlQ꟩
lWm5   >$NV6R ,ܧK∤|0>vUvѳi1
\.jU:ʒ6IA5S)zxX>r-gJ]yr7fS(/D;EǨ[tv^LǯG 禽:W-O*X:[_X搎ztv!*dYvGS7b;DZA?\Qp%3#_	Ț$;^3ұWNT5ޯ;ywDOgl2r.-$zV	eݞ][[˴OQEym=~XG6FA4~7Jۈ̊O%~[%=@OڃY%8n;ugZ0~%}f.{N<6`@EOj6˗RZ;~Y8&=~V[G :eOŸ.q;2Xۣx%H4Z9y3KXX]ș9?"/pQ2/Pk&$i9]ɟܿ̭mN(v:)>pʁF8~8~~͝r|*وq5d5?8,\@OAR}O A}:fi"AgW6NN,K9r`,7OmWaGSeMUA('
')Xq&Q$]\LhU*\?*EY6DtDnzITSoZ_bM(64p2]"aNI:*5(v
ġ	XldYHz
nCSaYjOԌo>\A촯bQ\fy~v]G*<JrNVKa>p! 4r
ƟB>/_A*z4NyBA,BܚYV#_ @4p/w{S$FD3
e- ^m
<"@uJ@l"qCoeG.ԭPq>d6t)@HU_b^}2F6$Z&[8бgv231NVqa$B
⨄f@xIbC8OJ2B索aWܡ*cWLD`bg
fpAt/TbIH=T]ޠʶO̼dKƋ[fIH<+Z|g T{рctND[jD]f~B	)HoB2Ftv趮x.VE<z4}1tfaCJN@M3ǼG
fz[kzNNpc(AA+LG ֐Iis{1=x=jd=VYөԘ
X($׎'@9=RpF#r9,\ښxZ
os
@Q(7nphȚ-Sv֩ͻPT[ފ0x#S8H2t% p	#@d AF*aչ\~ē<I7ޢƒxGZ朌RP
jLA\OpQSCUgA.pMZ7'328:C{UQc2?d֘(Q!v\T)97D,2<
ϮcR9	BꐖPhN7D>{΄alDVtZ$`c0Y:0:w1<	ʘ?qqӽXQ<ꂢ~ǥ"d2sU:O0\UA*%.M=x#3bs1/+M$ψ6qCYz
"5aJV{}dDۻ-,zPPsyJО-N"g/15N3YTGlvIWG~Bor`ԝ;cO's?N%$tqsעQ&$sQ$T|:ٕ?)}`5Z,ԧIƙr0ElTF]x30Ǵp4<5X-x>u;n?KA=粹:m:jPAWU(poBڂun|48<25rʠN"(i$.{zf!xTڑf<;gơX_0=y<T$ÎHX3a`EǇ	5Xɕe-ʡOZ/+omر瘊w/\ޚJnt-Q3/aHү
,K[B^QO {L|RMюu+Y§쐝;й
][UBY5W`#1}b[CR,;93	oΘlzb*=ಫv2D@Wo.4טݽY6qr%yP𺉄5E$rNǨLoh@qw$"] ㅜ<EλaJ;,#]|K.k8+CyBᩓh0eo|iY
erSFtw*jmb53!\=QV Z4@~|ŖxgU٦޾ ӱ!{2dHbߣ j4$Lvr
I
Dj&E wrctQFp#R}l$ũlGs?@`EO]ѻ\}!uј^
Rhc$/hHL B*'kDv>Ӥ˓SQHCGܠ"*E^y&t"]3L~"24lI)1Xbaup$Nr}T.RAǲ(-yu/Y(K
:a	I;0/K4]DN)dl_:_.Z5wpWYUȮJ ^AaՏ"ekFe](^A}s(lnn=.Dꒁ.#Q|neϧնڋ>6.[=:x!~3Meޅ986'G-9춷 f]	:vbKick\uYy@*hƲ-\M.^#d
TӯMWx+J!LȪݴжLXeI<0${D_qM	{2k B/&Qa[eg<G	"20+询q?3Vhdg%ˊ78[FD4UTȍiqMPGⴕJ#XI<s7QiҢV\1g[e{24fbl-޿HX.h>Xu`^b94
=r^&L_S9z"8!<<y{jv4lRb[.dm\j!}b2h;aT~׾ >dL:5
	(^RbW%Ed&RW!	2ϬaT
,x=`r-ü D}1z7_ sCe4q;j!R#;<ј 9Àz
KJ7x7癩˶[Usbx#̳sNoL$Hq!c;_AUzqWVMP'BXql,b+{ALkD^q̎+={LLW|td
U\d
!\-2X0
23ꗔxC[w/CGyop&T(V>5.y!EK'Lw,4X[gf b6P
n=oݜOv-aiQ~u-
*qg#j+[^Uz|nNlua	M27̻*+\I<M<p`n;(u4#nZˑZf}AmlrFؠ=f!E_b)=H6D=f@Gق#*$q`7,E)JYd{FKAr.jQaJWcs0?@8%z'(+epGkRɢU)8vEBt$eXFBlj#.3-q>lK/Kj;cWkLqPm[ke@ұ{]5o)zl)ҵASNfsae84b9ͭTTxMPm"a:jF{)wX@_W"I!##Rw9
Ԛ';owPK9&9Jb3?K%ܖbX gje}#Xc5 oJ]iDWTV&AW#(d`w)3D&w/-7oQ$tj-#u8`ɈzzKCc6M!t!UÐ;`Ru!ġԾ7x&X-44ٺXe(+s.噠J:\ M72ʆz"j9qɎĄ"(8,.it?I˔[MvHD
9y i2uĊb1
>}J
I4휧UM9?p;EfLs۳bPuJ1KhAꀬ/~e\x@̺ߧA[B	ޚ^.z5$+Slx1sE*R@F%_K3mN$fqU^YufIȒHGC=Uf.",H0vvsHP-=1/Tw|$I^9B
+8W7R*;
sXJOm
#+Su$_.YʪS~چCHZ,HM`H3pe+h3P$FEݎC0yBiXZ}r}w h7،1cz LǗZpf1	"	:1):CTt=6QnaCU@S+5[P5O-Dydښe%iJ,c Ql%4EgǱ9Ψd-R;iD[бw82;Y˦ZK~ILk=w1ɛ(|j
[Zf4+n`>˞N4Rnȱ<OcjPĭg2AI6ߚb4+|w_P
8a31.Y}GbIcThUvNhV"NCj]r!<HLIȿGO; US`S|0^`4/ϖa*GA2<')u{[n]6rEfM _r@S4_QhF`q(HqZ('JԋUDAas(T68\eg D /CβQ1]3܈삏>|&cz,
 nĕ`r'g9Mv+R1u܂e;L
HHYd#&cEUv!0~tz
QV5VM7쎉(?2rjLf_f2o؅.)핀c3-:5,T؁U+Oz^UQeaZ
)Km1`}$U԰/oj!H|VOMvA84EAo`$jrjnӂT/4aLa|uloҰ.>DP IC±m p($zh=ql82o;4\:pW*Rw!L<ZOs1y6 KP:+$!F3/$UĉxcMd
v$ Тy8e؏-.F'K"
qQ%eMt	fl-D\gE7C 
[bqYGE$mdRAlC|;rKxJlfH;!.}o%xEݴTn
ʂތkŽ7f`
A(LQclbޫ!<(`sijBoy_,٪L]jGA*~,~<!rfJ@j<rJ& d;`=ސl0+3WL5Hwg}h2z*1ܑMpٺz%M&UUb`8P.sǮ:9)1Fneʊ: $lzw|ӡl5?dTO-Jh
. W$ę.96u#qYiZ (|I[vM8茵_ļ7JD)1$\na%/) (iU{bpo6પb;%O+MGxdyM$+w4
~tveQh/㈃Xhf?/ѫ?ei呉'^1,k}h%[g1taZQČ{˻aYwǔ#B-<5Ŗ'FA	6
U\oj#h}gNƾ,rSHP%l	ς#H( YZ2 |
e;IznʝJԅJU"7L#VIA覴Q'*VLy&̞1iнMæضXuWfv*ez50;kW14jOE35&厤ÀwQ%z&*Z=S1dp
#tM(+>2Yק
Φ<)@VEg ~'}*K@"~|imυƲ3,xO P0kѼ!RU9aF1.r~NvO0ܼ̢aŘiVCp"x%e
CT؇<"b .hbG_yDtS:bfO2k۞QDBt3c\:.Κu2M3sZ%!
PQae!D/͋BĀT9Ea-"!@
WuGfG/AɊ$CEaYTyIee閁
,\#=7{T-dD4?-{3QO줘<x`*I V%YoSgt2 9;4P|Q\飜Q^*m~1%E}J2kM3*is!@z98Lldcڀ(#k5eTsgs7nBωvNb%='c~d^O~¶}D!3t`"4>Bh$Ycf̎Y'^ws&lDae-Qic綁^9&כ̀
'@|q?Ħs<~ 9?`ޖmilH7dsc nw "-_a+WEG!H`9D1vcns&.CӃ@gsB1mXßI,WyΧB^ K^BG '1b]㰂*i^xYDFjm"
em"YkCJ$\w4L=G>m2x :#{z-nNl,}㾫.JDxbp}w|}Ė-odP	4~'S!РL2E%GꡓuݪJfSo^4u3鑸8by֔HLז#/2 j%DM3ECгAav C*RAa9{ʆkKRG@6)o,jĕ$ACۗj̶a/2v^[pմP{%͡:!y
e}{<qG7/G Fʏ;aD	e>yٜ廙:\,*I;._TN.XP`j*@`YV'dsn{%Xǀl$n*D4ys\-׆$QF
_w*;baqH,~^EoAR9rfzghOJ'.G bYQ8(hu$_Uh~Z'kqn|b̤Y's7<mngQA_52`h]iT]I@"' ̺/oBRq(	+1j8҂\$|k!%XHr'/|d+`v&@#1ToZ&e6wXYĪyyY}4i VA2e\.jVd16ߨxxwcCI7ܹg/1vxc98#]r7uB9sT
 CrD@O({}7B*iU%ǱͲ8ްlӍm8	e[d)KsZ9a	hFd]#!17vJ[䛎ݟC|hO߸,.]*HllJCd؎DCb	$Jf'G{EHӥw^+;s&9]Ij̀2j1MP7v#|);[fFxTIO:6-<k/	AJ*G>Y7Xч*U`Š#.n8"Q a0txғ3wL-q~`:^AG8k6-:,O0/TwgbZ
4#JŅ4HYL	C~{r|Yxc%Is%4wS$&^M@6x#,Uh Qti`G\pۿUot_BoC/s  A?;9s{`Up,K@Ѷͻ%.\ka
].hY	`O+iAk6R
:F'X)f7_>uiB0Cm	6-"QzM%C;<u]}6*SPUfԷCvFLKm5Yղ:t.=#Ͱxlpв%tυ,J
&EAz 5Ź^9AX'Ȳ8A^ʣKZslY^t]fZ4~o,C((Z W^mbd26S1?XOyZI8Ҡ&yCц6Y)OA}Sz''y! wn"ӏ#3Z
RF+ƶi+I0b}1d"t
Kc[:*VA-|E֍
e#b3niXg g6gpgfkr,fY߿́@~uУ
dF9lB0Qr֣=Gj.ՉRܔ	+w3'wQ|RO-X)ŇHv#=SV#&URc	;[iڽt|v(583D^b$ͺ*/7P&/VpŅY͆@f$s+Xt-Ǫ _rԶdtk}<6_
ciT,B-hX}ȉ(Dw0̤^>=ycLor0LaL.T<BH=)	9ha~ka,$:SNML
NÍXeCe⡱u%j/<ҕGgw2;(cJ_\_Bkҿ"t<8.D9WLd@׾)b8v<Ep!Pe<a@Kgy0+Rֲ
jl>sxz9*:sAPcXf
W¿c2	;b3ttLw;xdw0GP"%&,eC%x%U݃mCpB#ۡוsR!wņ\Oh%wX '}܀	:#q@>9
A[63}MK@ǭDaw `B<{z	đ:U<Z|SjjR	{g*̬TbzϲBU@my䲙#l%V@A1Y	sɐ J* &:oXj 1@-"
0sh#4yGc}hQ'0Ok`z.0Ge鶗[Ћ(`vηx/cˠ8<ZN>Wzp`!{No'-M!ԙ>(rL>qTni $^򸌨	
*.hLOrf198a^O&$(g_Ѩk(خY*T$ʣuO).薵9sewh8Aѝu	h(0A1T"<ǯCй㶌'TGf/gHF&}Y3)3Kݮ7K}J{eY`aQ+Abq>S9XW;<o-V>lD;%IR>2JlR*i #?vɌ`y.e:)i0tNj6Da=N8`ǚwHAbV1T%*`jD
edkjdwo%]E-̸x0NqMPA557eFSDz~X0eUNrA,c
	I26㝨Man8ƃɿMAH
f:ef{x.&$]%xbX{<oJsewg'wF;RP*:wü0ҤAs w0ONxP
q	~Jdwy
;g/x`@d:MҖ1 `}Ke
8,j@-d"ʸ_̭mK?GၳN#&fY^bՑvdZΗ(gA/E*,
ۢ܃5tEYvTRhЪ\#,R2N*"~6Ei~E;QiCVTsN}=tn'2pbM{ɽ>(	M%CdԇoG(droU>f@EaXX`Q4:ketǎGN,F(lGYnH//Fq9G(̋ ja;h#I=oLDZr06Ĥ)#x}7qf-@rknAQQ+zȍD;6O5M\^~}'*PjRWUVbQ}advA7ތMGyNa:KFl/FdMY93g68"[f[Hy8#ox"nQFQ/&)qgfA&>~`#bN^ڜB/$3akyB$m[=HLcQboɸytDzph^
Ó
2k@{3nK@/ns;?( %e␰_TFSN3UeƸ n q~7ʤ̎CWyHn01>#>&=AT@v׉c(L9	j0ka
KL1pQ[~3j¤^˦yRuY#qQ3ǋ֚Y8c,B!_yW:kS(ˌڳMK`<zZ3>P8َX(cW	skLo:ȹqe`AYLmy nE|%gD2F6|Ѱuc%l+nw9Qvǆeix*7u4q-{nMcrMg<׷F8w$8m&_`2p̍#"cEKj`zp86^y
c
F1^O4zz5!鵽V!eQ"leUxn/#ĔY^}I3D=ql}|%uY|ii80}UDx兆\
y;rv	gBXP_-B"))ċ[?1	g9
kgsQќF/Jp~tz6XdxKG>>^ x"9	4ٔ:ʐ nʰM8QO-HBbpRqZ"uP.6,~.ۈ"cKX$RFOp/iE^&@Zum鋃++g'`2vZ@8QhaҶE<ξg6a{-s.pyQ'}G+հ2#'$Lk&Xg+6"Q	`"_a ypX+;߉fӥV`cY)3ԣRLQ *Mk1_W*S+X׶CEHOARfqquLtKmg<a07FS
1jV:Ϡ+#_Ƙ&`qDs*,4n7"WNXEA
!+gx;$!NB&ֹl{a)L+~v"^}}x
A=Wvm>WkkuOdHpe~:[|$MUDӕ(C&xM6jQ>(!*mJ atsl (EޢGA-
.XDK7J5G>T`cLLJQh!l.?2zc.[L	L514ܜN(	Gë!e5eLy~ґ.JR%5.=6O:̵[;v9􇤧ԞRA@>oD"KqwU}$l˴(=NLj0+kF-2@lh6IK3Ƃu"R; @zVMjï<Y5mMQfGR,>3P}imz֋<nHGR:'Wo5x1Oq5 q'?M ]e=,sah?Pu>(^1Z~8=D,W{ᎶDGJfjTa9&)WY.l
/1`[7]TM_0+&؆rk]22E 1ؤkm7e+Iy<!3s,"rXЍgY-%z%͚۪uraYH2DQbz?mT-
s/\nI.T=i9M_MC"1L~Ia/ы*9R%ԏjFLAIGݡdf<i&'=eN})$Gә̭a 8I̸lG
mp-h
`1U	h'f5ý;KNѫ e7~"eHб(ۗC!Fo2TD$u	?94
xLEdϋNL퐝3DH@o866avP~ʰz^I
skiim&P bpg$OX˧7x`,12QN`1it+{0oa	@
O3'VrPp$
-xt$An<N|╙(1oy{o|s4&\f+G-v#nH2leQQO
CJ VOz}m5[FI+-\FX)vv KkS_po"_Uw	! mƂ_Pc\W-r"Br=/ew*ġ1ߘīR;{8'_CiX?Y_A>7`.blHv2P\YAa
|N2IjP-E^	54l`kdttBte1j/Z.Llc]t
li5?)j-(śN*ul~#Yqiȗ4/p@w~-XLYFH?Nhb
Qπ|
\:h+ZMeԂ2,k("uۈed;pQVT/qOI;`^ءG
{j)zi(V֣ ͝:-(h9:
DȠt3,@Y"7	F~M=!
5$Sv6,k1VQҐ2xT[40QLd@<ܘhXw#X$$rA+NHaNカZX^GaPXGy..CxS_Z̊nyjF(RKgs Mu-Jt6~ 2
I1ɲ9tFeV4?S'"ntBYKUL~ՠ+p"%"HT9e2FZ1m|[HvڱLn
IY?Pa3cNm~1UN`ݤ(!ȞwgJ`&A8
Eܒe 
-N~2N?r-D″	3sfW4[8ۉY9@E
eM0]=IȂl}jHTN"[Z,64hc/LX<6˃}i|Bg.ߋK"2aسdcp'!YkAS% Ku
[ʳSդ@e"<k4~y\;ODAU0-65DG6.d9Ҍ0GZn=Y"'rջI6l$,Ԗ.MfxXmo ۽ؼ&YAd훅CjlkJh5j+w,\"Γ=]EBr90=ןNR+߿䥦h2j'H"rN܌JcX
9y[36k\:
9Sx) JKrVRVcGM
<Qi>M9#BV!/h]6V-|7T*Oi^*圿xzI`n?
Hj8< w@,ʹ%nzg7-8?gcL9h
ire$^u%qbGn	Ac;F"4J!.;ZN&r3 =s<U0WPF
6~
db9@AvP$4Aŧ/BИ:.o_hKRdf>ىwYհ6/:{PUZ%LBWVf(e׹"W:_*ޱVdoihY֫`8:X;
s2wn&OIs~HpNmL,vG9nS$_4læq~VeN(g$7
- Á"MۙN=[`4EqomLz^3O#{U.
tZrRʉ4 1+:LRZhJC]x.J밫hH[
 &e4kT@LLaٴݹ̰iRe'hm̻:)2zΔ"-ɛ(lVh+Xt{MCT&[J2&V?-.s/?á\%ƫIϵ	pE!lARD+!rTv7
צ1cvJ&`8(5q;8]g,q.dNՈl1^'TF@Dmżq7;L.Qu+-|EꈽZH7_a (.xO#!-wVCn()ڼO:zd~Up-&'@BEAzm.&)3Dl0 	߂ $~l~͗Bܝ ]~|k+Q)Ӂ2_{-AYT3yXM*qI8bȸerP3-FO6s\bKTmζwMT,GBLUeX_a. -D5@E6kod0bҷ%Ȇ*+Aљ*2Oa*WA ,96
B{{@_32ljmѩ\'~j
l/+K3!\EKS*rgx=宯22Yτ\5bpHP"fNFNPϒ40zѱL#,2	nNK5HI"r6<@w9(F"TRo؍KW$+Y;Q֒{tk*8tzQbJ`vF$|ܠ;+ܲq-5&:,?.3nJ9kBa3*6ay2SD\1ٺe-GѺ7_z$lںQ%?93߰
Dv
UJ'9l^N9G<3Rh34&>#Ґm-K68hޥM
)W)
0ey\W5Y_^6n1awmZCk%:6߭Qu0ظn`/=~bt<Ȑ:`԰ -g*/xaxj	-Abܑzgv|1{x~وZt񁖚v6&}Dg ~v93TJ`yA s8?qF;(-@QCU$QDȑcc8NI--got7sp=VT1FY`gËjӉGhKL<l~d10?< eXau|H{DMR0_&?{嶣88oLGt'p.@;3SaogވG{.=^D~r[w&	?Tɾ5!=r(XX6>R2,j@@.V$}/{^E91U`)B˻BeH03[,MuRF&*$,-2ȱ+$Q^,ѮY1_vVx A;qPO>7cetTFrͳ9}{	PIMW1u&In>TLĢsR.-UDT7V`o8.)s<
5UB
e͠Y	q[lPj1)^C?3ݔ6[`xK=ڥ˾hk7!kSn+>рSbX('n^m6=(-tgÙLZz
ŞT~"oVu b<iL{?ʋl1ₗZP)
ln#Zifoknpg&!VM`=F5Һdӗc*c82?Byn.5\.̸:@DA޻ Ȁ*/ĩ,EeuWhM]UU	n1a01tpOjch҆|k	}Zmߖд1-!1&jgV+FuaE;"cEG]@<trs.ךe1ꔅ#jXM_)vr(.FFſ7R?0ЮHO#:2	w¬5K˽}
&:
~wu,$aT;Fh*aRAgsʉA9K`Ƣ,Ίx$an O))p!B0Z.y):6ȢWml}<؂Cק<lIF{nf8sYx"eGTBWBuؑ@,GBS֌wyZ(5 Me4mܶ']NeQv>u$i"F-"`>o.5qJo2z,]蝨<x3Zs+n io,ߝ34JsKPbAE)tS&{`ZZfHlYN){_ߗ-RDY͢+%서k,0Ѵ*63O<\\0~G^}۠9Lډbۿ0 X@Tp[ۍC{[6Mv^`na^Ά	Re]QoԗVLO*ˆN14(<#+Fߴ?D,
:=@IF8`Q)v`z6C]Rg*lSŮ3*'	|}B%LVLd4EBW S\	B8B4o$PS3qt6Iǅɺ>h zb<Fi{("\чYY])v!t-MS4N WMp:#K
2̴7sNۿh\[6ƹrmX 
|1j4qʿx/2+F]z^.e%Z.oy˱	:߇[m>'!HED{xo$/|*'|+~;ӆl<;cO6\LWO8êqQw4"w	Bf%c0:Hl3Q4bQbk|р=+6DyfjY	R =;筂B嵧b9mYAt*Zxalc񦁦f
<qhAv	]Z\,O@{9W3ANDБ.rIm9ݑ׸*)*bR1-	XF(u@:uB.tg^b	f*+8S:x%}
i@%[([8(`nQB6ƷPm 5I
Q+8LCmt5}O03x4H
&L|ÉޠXLM=<CE`
3mt
㕂L(%
 GQg.^솹	ʳ$RzWNpa~y6>E,S WbiMQU2S	GsXkM8'<3m˛j4TR'*TӞΖՆiCΘ(Hw"0hN"vT
*n1<	Yk܎yi'wѼ8d[\F}&> 76P
nA&R7ד5	`i5FQ?x'F cFL66"'C9QƘ7.7{ ^mqGK!O(GcȯT&!y`3@2V;}>78e	+Ob׶wJ]=:Ƅ`YG^|bպPs5,ɉIW#F6LX,#f)!OԮ*rQ hyQdeY+Oank(30,C꬯h(U*sċߩcĴzvħ$LJQ$Ђėln
BntXZ(諃uLbR*G/'iB'3Itp Ҳ!Km+Φ<
;XnDskb^?K=Px
K`@np= MD翰b
Jw,;t1Y
y6QN;Z.9A;B@ elԌs.
sM_db&Rm"Eϴ-:${@Zcyx!2Qj濫j}3糠䭩`>S>ݒḿr5j˞,4V I@{w~S1;~!K2dhfNړ..k	Tb@uP\!aت{y@
տ0?FWFnYyC-+9[V?*[ALPb2(JYޓ	4oE-Rf5pKfGzEG: ]ҧOU"(<%o!@5_³+	<hG"
݈yBG׍bG%ITq=+< @^`k8HҩQ5,JM,]ۖtiY:F._
B}3QM

`Pp*7:Z ?.5kLk`"@60dݜXzI=Uٸ
Aja ֈx$Ԣ+fKL[ ͊gplDR"bo2nwÈ>h:[LBCja!,R(Ll,ہG:3Y21
ooprRݝĮ(9"2]nGub
36QB*IP&j4Co̠,qɞEEI͗ueɴ0'ꢀ\C@a0ʎ@,ӶDz{sorB}ˆwޔ4(}	wXsYhiԅZ㱌}CV	pglG[kEdo+P	XP&
ET#SFXR~5,{KPʼ}zX^ǊcбTazZ$65Cqe%ert6qG!<^0oWf\|(ôr`Vj00Dx8m#O3V8DF%>(;XROGQp"0V[qg?,Q7qoa0|cη̟#c/W}FQR	!l_nڜlIH)GRp(p 1 jQ*˶a$\GES"Nrc\xU:KA(yGrK/RsEdW58Rk3.ikB~%}7M0vtw삷
w0#$TL/:޷(ߙCFO~ek]u9\Ma29bU
''g=	vᒊc=#t2<j?TuVPa")om۲x|%\Gj9	>""nӧW&>}ar|p:ČvםlE|o*/jD
a
Ɨ@nj}1 -qGg"T&of ]8$dˣxEvh:"]G704&OUpKAb3>>I2:+9
!k%Fл?x:0e
@7B&_ӜׂjӤ8K%`KS͡y_3va*@4	ͮ'{zaV+#$*t2<,AX~*,Iki@se?}e_~""-=;¡I!xef,r@xX{^세qj䰲Y#³
ZZ?^7⥃_VHoIĎwT>HIuZ޳"/S/*Wl[ړ8\C=#MP$c)NW.`'A7`Y
$m!בYI8KUApbڂaR|aE߃/MܔN.C̔ve`D<IM;
;êcr,_-XfaFݡmwJXo㇬2ʀ֜'aXl@Vta7z?S3}.MF#Qe[VQN 컛B
PJX' +/N܉ȃ0C)βoN4EcNqқHA"3Mjad/ _cR^l1W/<YjE

z1ZHEyy-$XRϨ^whEW4}+`#F3:)!}72FX2zMPoуpmND&-1<X2Ub>sOA7.{-Gԋ/=PMhĖɱ,t3`jZQk(/*W˭pdDGf&o1
8qE|fxR{TGvL}}P%b=]8/VdZJ=㜍L^v q\`~-?_`.YΜH{|5k<pC5~KE3U޳rirU!ɖm[#VڍC`ɻxY:T8/Bq6j M%44*Hu 08f
Gx8'رV)4cY@Bg3j] ʜS`XkGm>W0~`ŕtk{Èeim@ٿ.kX4,-S%n».˪;
мl1| (!ߪX.Nd_42aͬT1QWoҁLFc}tʊ_Ε7s3_J_-hDp&R2_$)nVTV)@-PEkRyyõk4bHH&=gw#\={>26x13"^OHUjmZb-T&B<!pu*EE*`JeK:¯|nrc7nCzԎ_6r 2/ ,YèJ*>eSTw4 NƋPjaN%1c| kWFl%xR',(]
J5Ş^XTKLGItѨ~t*\*(ƄD<5Ъ*扝QF>+և.l+0Lq)ley@[ԴyDg҆#Ӽ J@#(Z
3apH$
5 u-P=3orǇxeCfq|2n^;x<(#*,l>U+V႞WS|	=Ǳ7:y#eOg}>mwZme.2h߀-&<ܰ#
RDtu.`RQ6r׏ݨ_WbƂ¼!3\,њOj8P<&b|hXuXG=ȝ:hi!Rt)7,]ZTn%O|d9
ˎv\hS߿8>!6sCdKyF'L0nr0X<&s7")(i;bgSܒ%bT$O*F3p^f4xvwF:%G GiwDTIIdpRJx6OQOYfK%s7z9,o]g:(dvꌟ?Q\)_@rNqoT%)sO\S8l7aH~\Ne2JJ~K[bOy4PꝚ'1L^k7Z)XH8D
oH`Z[	((tv4cR:+k7`F"A ? KX:P+w5'o)MtssTνª)f~N^k)
]/)Q<^VMQ2J4]Bz_n;	&s\,RyvUzpi%=pg@-h0/Cʸ/st(]tɡߠ$=
zvɭp	\JAL+|2ÄYXP{ΑoRG=9s\<nn\ewNբѡ{$mpE3Gt<i銧FmR6[C!(&g߈Ӳ/cxq?dZGB<FW8]>N_p1;;g%g4c7MK_`r.Y?>*Ojw4@8.AftiZ^O)]I2hF4Л4sn<=M{)H{#80:K.z݀a6wM*EJ!3^b1Ho />dqT5(!cH:E m"8+Oueoq'Ce9?1CFru`h^:6-!`"wC6j|zLNHġy㝍lĖ\$6wP8S4SnNM<}dG(,9%f
S
nw]_Ͻ0 T_jBa7EF.*
->ͩ
.cfLxCMuykGdqx䗑\"i-aw/xՎdtӢHs<7oqK>yb7Cͤ`^:k^ABlxL]BMN𯆷Q*pp?#&l7E,vl#7f7;\:@c;8	/iOˈL`ϻ\]v|ɋ0J\j'`w?:,0#N<|vp5Փ2չS&RU "4EʛL9iQbP<Wa!e 8/9Lt`,v;	G4S-`jk]^B1^z1{4$3"HؑcGetсWŅ Ԑʏ> c;hMϪTgN>¡B`0Sh-%i}	\\q;yaH)#&%'FO^tƱ
$d&wّzW\ƏrJ@Wl7+_!3).wH91!%.N6{~7H`>JɬM/ZEѻھ)f^Ecc)Wo6 Op*nqOFD\T_x/ARØ܎i/rI8RJ4f՞`a%1'[`hȏNb-L`J!+0zۡO	l'ÌDgߠ!<[//LDSHe^	_鷩D;1(ue@6qt. ETl˂.M.Asm-/q?e~jlü~x%?d9X&>4m;+
,NE3?-7ZͳK&;{g̛hOM&(bkXƔZxGA1HB匛xf	dr3{rwpcFY,<_ys,t.daceZ"(c+NWUvmZ0=v ]U@(R<mASVy|&o-ψr
[ZASn&Q,
KT;s8=IfȞ|̿a!C'(QY8!V3,3B"
(;m*HO$#050ցZcE݉@pX܄<d^=^AI:MJV*͂=<ɼB.BVT%}'DpѨSO0wכanmAu3-@/H/\]<O*8h?2)6ͭڰmxR7ShWJۢ3bOnp ϔeKu"ˆsnzlā~83xY<eLntʉsgӉOd;P4<
fv;QJ0j&M2m(1O:0Ff;s0'3q2O2XmDQfNVR
gϰb5%ZʍBˤNzNX@gʏqSu*s4k5 ڣA4E[t/_J2!q6ƐD1cVKaGpid"Dt`$`]:h5O׊(^T#%jkՓ^Mp.C~Q
Ӝn߉b3
b6Ro^2>MzkLh4\i/`#r̷2`z/T U+7۫Q5*êţXHL<pEQb"\7bE_F^̿+ĖTK^sP(~Wv7({[˼WTe0,L@,
Ǡv4Ӂ&擎tEP.
K'8T;" %iRq.$ nP%O2H*MMMtTj͢,HABt\oWX/9k[ԺmV7C7'd9xVKYE0.RdÓf`LZ_:
3:[G'P26]y(C(u,{2>Ƿg7a:8xrA{TdU:dD^,6QUBpDbj
bf*2u33L@#1ẇ=HSHMZˢ^
6s-k/ţh\FKYB%qu+X{w(LGf28̢@p"zpX	D儼=
R=O29ne3	+;v1dMcd'L'̯OưNYX1Y?7:L9Y7T*6VG2 1]ּY˺SMeGZh-b \LbP*:Qh
 brj4ӐJ@wFڐtb3ɔ$\FHE-<)afVrrwӁHr>Ҍovu
.*ZT  dݟH +S B)i6^}lJtޝ}0uWE&pk俾izF6su=.p	bxȒ]y^DLm
("hR-:)5<zu 7Qx86!+{/2ǜ#%3tI[(~3]Lhy 钠wI|
ya(|Z!ܦݶRhkɨgyLiO#2|ŀĖ,6(=	
'.۴bXD[۾:K(q#:P?7p*+,%2>蟻bXWiEP^yFKѺyor d)lqWf4`<A6oq]Kp[P@L{1K'8P5>!k6k+Y;Nr{` \"*3p(SQn$ksnеޮf<ϕy{ʨ2_{k0ge֎%Q%U#V,\#/x=Mk=> Dc
Es$,Dg+6˫p@]h}_1	mIؙ
L y2Qd}ӂ0h{(	n`iEӕ:te^lE"8~#bA1*(_
퉐υ0AFTOQ`h*$tv
7bEx#L|ZuL'EhWb
OIw.sfgөu<!-`(?RoD*͟Y-ɀP]A36%V5? 9?b-E)ЖX0/ g $y7T$T!{kz\
Wd`מ"֡Hz:@\2TwA͜[]#BMi0NR$Kf̎Cj|x_ۼmmC`6+f 7`S]-C%mKĮє^R!k63-Lo6:MBĕ`;I Kh( 7P3iNR^?=hF{+Ŧh<ą zEi֑M0qt/LeiY7*O# ˿ٰDĉTfiSkI='7<F=Pt9&=s\^> Z$qpONOdT&L*2n;b.mD0#o3L;ȷ9!wʌlPy͂4k8G8E;_W?,igU-ƴFx2U2U"eB>Rv#>r
8Cn|ѝr%h9>NfMvS&ȃdmai;M Qϧi{5'Nf(KTNkQR個Oْ昲=S
lw]EDf-h1'Q!eF-$`cV AI
^@Gt3xәwW-dsr	,;}0%EkxyG$s2̐gi  [KRIsL3p2]I\wFaUtFl|4X4Yc(.՗&	8R0?g·aᜉ"">4:L,cAU93%x*/hxqj5R-@FZvs~(_^z)zth8O&ܢqp4oAQёWP8= u&95W3
!A#B
 $fϋMK{#Nڟg$gP21m8'TM4s ;Xa=k_4]5I8H@lLG!!w6cA@]|_"S,Rg8Kj|άıݡX
iJ)ϻ4&MϭrXI~4Rq䒏fFWgpR
j̵Xo,J!$2<v]Q* v|M
/c>:@kR*Q3T<d$u-)3.56ݐA3Ee;XE(m勇6f6X@Y^@:\68bR7cyy|ŏ@x	Db0]iyTZ1w6LSo
m\NhN˹*}Py;c:Ex/oWLb㘦;(mVrԔ|a;ߊ8_%JUت09)ft}X>m-[^D4'ZQ)3KH&H2Fxo,{T&0{$MWΠ9a	DzCWP5*L?ЄM:B'=&`e9S[J<~B3IȶYH"-77.ԩώzIwVs<#E={d{6b
8x#q,&s*&cKtߍE@Cgl!	RPj_]EaRt.R?aЖ;C(H^;I?Ze&rHЦ7tR
F,XMe%F=H}Ǎyz=4כq68o`(JY")LJq63& )AtqB-*}kv$Y.33g3dk"S1N3ay&`m QdiOC"xpLy:0wV}@Fڃ:S1;j6Jb7
!V&/&0~Lʽ#j<3Cǣy=/d7t"=@ÇAMX[wzuƏEyi#=%ALZqh2x)z>9BsUo&ݹFK<DܨU$ѯ\	Dw[!{،*$ZfXJ~zA9@2ϡ	ozyf
Dyx-q.3ɧZ$ cItm$}v&3x{
FS7GX,BlxQJ D-oPUVfp5[X=S[
xw˨qbJ u"5{*}EXz02:wEֲfJhqmavuN%+5$sKɨp%zq<}VѓOɛl,NT
E-	Q`G:1
!Q(Ą4ADwрO%8t`߂8w=Dh,ۮ5bM%T7̱>%S@<Չ8D<1m0\ow>JKL4JĉSP(]6d\ZW)Vj\OVC8f[71	!ttf9%M&hthЗ#hu~ώb,[?ⶽء)*$54oTIq͎."Mt\Tt-a7S
qS|@pVǄs8o)
g"3ɟvZ&ю%ɡ34lmDڀ#ĨO5da npQOcЯalʗv:_G!=Xq(\vP{
Y}]ȰփcRMy$"ñ8vY1 z(a̛1^,isD!ბ#.EICpp+f9Ueb!6oHzUG!eBfm'ͦʄ%L!_A֭c<E菔U~
"+$8U[;F2kWt5Ju-|{zjѥT-W԰ޭpSYsN[VZIdxu<ru G9t  sF-,8iM:jx^﷡3Fx&)ӭIxp.hyTxF+@(u"]23Z
m5`K1hPg{R覯47Ac('5e8ن\EPܲZbА"ׇE|"'_s
ӓ{qfTB(/;J vh,^)PD-a6;B0L(A1O@ŰUdۋ#
0aęzfAA+xViWEwc㭭­8cY(n JнNy$,ڲmfa&p=0GnliW{tthcenulQq.ݥR_Ō͜lRn_d/UAL 	ha4Dc=ƙ)o4΂:Db|e	Dke>,^73BHb'e@ Rv,7rƛRMpZ|a0.5	ֽ|;ܩ:ĪtM4a˺xK"3H(D	{T(ġmJXKڶch3ſJ\VOH@TH
Βcoc*kE?MigW/
!8ҋ3ܱg`	}&7F79Z'ٍݰ)QBDmLIY!
Hy!: @_wsm
i³<5NDfM:(UKkʫ\pQSLvxWǲRk b>GassB0JCGVa\X *
|)%/;^<"0ыn4jBˡu7QYU&`7Nk6= <P~be
2
}	͠4u6gդ<?@vF94tf$D<%
깴ͼhN\NeTQ p7yFɤ$P!bCz
.QZ%xȗc*e9V;]l`U<.k^bq	7
JS2D|oW8̞v'>qy?2"׫:l
'IuٽMeԘ:g3Ȟ
JKv\uWQB5<YzApHK Z[𡂈V~KϞp̫IՖ7v=ǖĤ&%3H"w'+V#ad&آG{qLJn/E[H5	AAlgaHhܝh+
,)/%ŷ	|z4x+lJ;ҵˍ᭨WDeMlpC1}a
!Hj;MQzZ#cX)_`E	Ċ$B^ʣzӸq%@GfF8E@${&
#\z۔-)afJ$&SQD)[snodÐͭD6u&gn=tG'g{&MAX\d /o-:˞|_rv<0X*#`Unۢ7<Mqu383|G@2& τ,nL693Oqpth<{6\Ɂ+&C ;3K)cj'=eqf,_\AJtNd:灃8^dF$;_иSD'bFE΢Qǡw]|`!};kًPx!M݋AVd_=N7Da1Etb*NQЛ7ۙ&VJ6JD_)bn܍`8i
Z"Q<won XvjxK5+ҫw;,1)]`)VrAl5{|0en7ab?yx""4{f5W(%/{̡޳t.0,nXk䕒o59|vhU$rީXiE4oւnj/Mbnv=Y!8-LM3C.KN:#ωqEpQ@.GGbۚy
F;,4:؜(4Ŧa,c8lH[g
*dWh1L="pgçwo+2Ę#mS6İ*upԋq]l
Ls^ye~#+2#`hfAOvˊ6>JֆZfwh-Nf\rH\<&y;h?-G.ەA	t%]%Q@:"$z/@ˑhV``aDB7%H(*ƼH`%!Nl&8ݶ/};f"核ollfai(46#c^&8lQRPޑ,'p %r;t8Hwm>AD^3Ϋ%2_<	ͤ638`G"`z|E
.Ã ☙+9a4)uTVBp­qroX$.y$#Gq$
Wg%(I7#dd\cv
j΁rcBA@:ÈB
naJ㙷(3CTfrqkx8:'4#
SܵQv̩}«ؽH9mefMo` 37:#a(@͈@<v~Yf5P|K^F9DAM,iPU7v0X Wl(~2xǷ}ug^EԁQs7VdFdBoW^܌2_"l2 (5yf$Ąr!0V;&f>gĊwѓF=cjѷ
GeuTpp2\jJvQ{Z[NrmԿejT3Zӗq_XEPdLtI:XP*נ#zesC6)\H[fV@]_W⾋=>g7ȉj.$lQ`z
ҦP{z?H,*=r=ncAI)b,L"i:ⱞxSNXB"3d<EEt
b"،L=L>BAEDߨ6m*j(CVVER:;Kgt39˅.,MQ$"ehd-v`eS=G$W#rlN3S3G}8$R!2|7sբJz.7`L4G6vQ,(6+I,؜>y$
õm*sB#$ SrmTX2.^m0[S,vh$>By/-ːw`W<k>LAl\ 5dFq +R5J挘4*p'AJq<NS0(l+?de5)h7 jS^/,V8BP"NN5g&%[stG Y,3CY-VI -M)*%A793dd;ycdezY:x=;RNjE_X%jE/K@5TXwT?} JE1қPr2l,

d\SCV.0L#<e_tVNr[q%$mnb|@	-B?_dN$<9%Еw#UCͫ̪fl+kTt2('䷗eevOB\83mY\(!<h/Lw#<.:n%6YC6>(=AHO&hp݋:N9=#ɉe&*AMk4љ}Eʆ.9B^Y6Ѧ:V D#\-[Ӥ"\`m\P#9MC65Q, JΘb)0`JX]S
Ģ !CqF?+YXg
݃y{z'N-؄50O `_%PD؛~GGbhW+l4^<"YK[9g4FxSCYcoxd0%Ds;zw2#TKL:IsXIDD
 +&*rص"}_%*"6KD68e1@qZѿTj#ے#-c\isRZ@glPGc|]FczГHԡ@
D  C	"+ⱱlPwE2ǅRs	~# Umd[H=|w7K6#VTJ ͼsd]s6Q>87pDT3@eT tå<(ΑʒZR¿ObbN@0|^ca&ă6h	+S`>ǅr
_B<JyAjmܕI[:n]Q@4#`<})隆GRTp>x<-).b x>L02Rͺqg7L6
Z(xsrخn	EqU9X~3C 4v:e/E<*o|kӈy
dݴocr;ܤS8@ii W8Al5dPY
:y0&\̜ĺ(v6c1<M>o[Fы[ǍҬg\!aHR^Z&@
^Lz݉Na.dC{^I\jOs%T2,[WpfAp1~ɨe
_t8HǛ,Rٴ{Y9\C?ΓwkD&$Ak_oiD
N<\ΪAePD<xGݨuj]vdG"$[#N^CaNxlB%2W%0F
`ź;2бh-hMJ<U4.+Nor5t\V66B=bDN|rU5㚊2*{(:AJG<g0`oD	|(p702>+*dzJa
?zpO8%۪t@!.;t3k"́etb̻õ!Fۮ dYڊq `T:!K1?LA˹һ)+n+5ϸ=`cj)NT'+ӭ@>cj,O;ߪMqY\Khs
S\򥥃H+ʴ9ye)_ЃO쥅-0
#<މ
?((lGݕ2)QjHJ~()rTHUB;e8B\,~p7|Ph~E%+sZt_ΘiRۙ)RxLGһ$uc<	-W>nG(uf-XvXr\M6{n F8N3DsNO:
Ne65oZȚ%'/v<e"~9J2Bה'L㋸߷UR̨ iO(.~)4P--j$_Ad
W~iJ̳^hN.},5cQԨVB&D<UNkl@WhLQۍ70*KO(\7ѩf'[ED#HMh1LM+ȨMQ\JIHIi`2+Uزv
z=>0n6<AB{>R| EWv`?ne
eCPfR3x^+cMB!3Zq5jfp23q0?k]q\!
z2[Jŗ8ʶHݞ K5:#e?
pvR&A9GJ\
}śE,CS&.M9rN[Auօs~t]K
ĊBX[ȊIZD4%n0<mۆilYFʛtMu&T PHC1&w?g0Ubt~
Gl^\1ZRs2Iα_wP4rS4yNd fP3w_#;L[m4o0y+/pQ1=bz/UB*48Wa檝TVؐ/;gw@x:P+/#jrȁb4J6"Nv.b3Nb_6>tS;\m[Z4hc#*t&1l4q0mK :CA{>&O%)$L# [(MI\P@޶7.T
WE&5	őXN5!G)[й3Z=vf
*L/XlܾhB\5!['^B6%%y@"JXw_6[h(oQ$ߵ쏍*o[W][2o=8?7<o6]WhXBe&ch.ֲI^::mi("eg1_g`h&B:6$Fr0C^Tq?h՟*B7H.+?w*JEy"_Yd	
2IX6 ydsUgS0\MQZ k˾-GH)"0Uf7!bm_{-dhԨv\Fلsbh4YuZgZtY1(*K"^VN`
5(C}I87=Q
V1wV@xmC^)X̿aZPiP:NԽK᪺詣&0\^Bb"'Ѧs*aP3 oyw\=,d3JTV>Q*H`}Ӷ
]72@z4 O $nJB|S^:5+h}u%eUr\#1"AWVo8[&B֡;ux?4x|] ۉKjUKBp*'X
.t";d%o"Tmhu'/OpϹDaLѾ<$i\p9+F#\-^c,9Q.OΡ0`3f"	bftTM_`n/u861ϋL\b-tVaO
:p{]b++Fa켁}[|^axue_))YlY]06*3:fKbW.)ކQ7b<Me;Vtl"֍ls1E־mQGKp/iwwn9uI{,ȺEF1fb2ޡHߢDdP	#Ϩp1,eBGP m3`̄jӽ`M*2_|ei";0x`(G4&EKmL4<!EpTL˻Ĭ&D_l:4ݤ3fĎB(cA6^  )r$5TA^4cJmJd&3?)at^"W\@x+	\m~}adL^Jøqt
j6)`,ޜӢ|
߄rs(Qx[O.Aat <pG
tF븳yE;j̣$RQb#"o(ޢݽ%F8.):2NCS*7W6"­w%6$(QG.ıaJ'M;Yd^(v*Di'
dL
_x}GIVN~j(슻&p|A-(X`Rxͻe.Mäw`?Le{o"
jQO'ɰZ"0c45r&WG"Z}Fئ
U(U (VrVWѦӴj&s]"ה1Bmfo
_*Ekk[I)LmR&ArKH	mJ,6mUX8ȅiU\6oe8mtmѐoQ; \("5
6p0޾]M \woŝ+9l~kC²KQFXP$W׿rC:;p(N%m2)TEA<ql-Y2UHTԙB.qtT.V(Z 緦9ɇ
>3.#ѻuX*E$= 8kSGjyc  
Fbyqbb%aa<RG#UEsm69Fo=qH!YawZ	xZH#5cj
lD 9C^
Qzg3P{N kSN`Ê$29%whz 30;KI:η,l*vp.Q&ɘOgR.@ԫL} H!#lnɪF2wWW'wr3Wh7CR@Y17Y)*aRMNΒdaNkieyX
.@B#I[6;tNmuN_aay7IBm("v­l9*Cz<1*KuHaX.֋Cl+FHQGǛ^Ld͵7_~MrJ`.[GKȞגL?<"
2ȿ}ݰ
\7ʦFO${f3maL~0yq}Pl-!}qI~0͠:5JFfed[g]'arQf`9?6Y?&@sE
TepTz^r1-"JV:zSnxқODS@h䷧1J/SjΐfI4M`!uM8ҙ+3Oɲd
|wM(q)~rW4G>>#P5y9
r)4PSZG4EsB}$z8ǉi`7cH$H.AYtǑ˪|hU>R0wawQ<B]v"^aƺ!rTT+-_zལ1GȚO@qmҋF\4ϮyCbOՉ80z#&[0]  xv~\Yg뚩*sppZTK "\M^3wh6{Uwر]xýEvg,f0֕ӓS1W}fIXBm턒D|-
;g7?Q@30XspO֗KlyDNPMK!4K3
Q9];x1҉O`1ih2.mQ*1 I l-DS^E_?7pU:q4<0r+VfG[G*EݧZ,6Qp~"Y"Oir?N̸ͭ֔GWҘ  TB=TxcDGB4d6o,͋E3*fzL9-|39֮V!
ێBNmnk7KE ]<2q+{S1\8S/iZnx.ri:ݒA_Y*.e$!4&
DF8Y`e )	EZ)/J[C˝~

'My3OՌs9p:[F*a(m.דE*լJ+(40PdOw1ܬ3ׇX**K!+]40x'"Y:={
[CTҢbƩK~Bb3,HmA)<#cM2`U45,5s$$!x=f<\sص"R4X~,`)(Ko?__K`.<#Ċ}
LFw#(qXk6w=PS#ۤ2) q
J[rX.*N|Z3g(0SGҚdS
z$t#ZDq$m"hדhw
Ov3(q^K$FU`[%X74piPcK;Jw.<[.5r**<Ӗl59
$.=teiX$3	Y8}󩩰U{\3qp4IoIU']E:gm&XK6 ]xE(q}XǛǸa=in.֢Evx;'gY&fX{{/QKh3A n϶-ۂ|t@UR:KdRChd
iP{"{5p 9X"RJEgGjMTNe|ݑV:S¨4ƨ!94l/gō&  CBqm )*M9mNchT D{bD]ohL4L`y?vU2ì!<J'DaQ4NIlEʯ{%jP:,+tgPFl~W>rTJ!
u<QWX=PI?ç+ ƣJA#\n02qFq=w!rAn=:Ax*^d'0Otsm_vۙqn ͸j5ޙVnLH86FE×44l޶F=s'2r<`z0;&qxt!egF$V9PrdtĨ(6-˗+A)0{C"y˫2x#KX_$SNw$q5$Pa;2XB`S%N"l-Dб|IwF1ߜiK^@E1oҕ*
w3 .f`e8wCKh
XAFk2ϾDRG44Zz6C":5aIN-~trm̈$5yz^R,D<ӝu/6=
DyYZ^)dDWNԥmckYzʺq)9<7Ȁ 3^4ڴ2XDx/A+1M@9])t\L$}|t
qsB!\$rWǫru~{_Jb8RC9+w9i#Ļ"Yh ff
20l>DB
4h!/ m6G69E
mD#ۆE蠸GשW0A9Zx7gǻx7
@gRd1iP gB':$m@(sVLJ2cCtP2h1pd{|d$kt	)Dxيd-i~*#9e\eb "\	;TGIN&=B@a[!o@9g0[Umde}!j,cbL*7X'{B1Fg 1V0#6vP6Tk{:D$ntV:~l/$4zK
׭t+Y)k=*<%"k$c+_aLըw@ŝ`7"g)C%6D quQV=br 'adlr7-I־Lgd
1
]7=o$6`@\gΜEg1WpWG
hHDrZXwؽ"W`6w,CxF5}mCXmrwczlNQ"	aVz<q2h8/mS/F*ZL}fI
de֟:N2[ǔտFClIPj̜}xd
SU-d5)Szr%Gݰ+el3砒?`$\8#,x P
G(<݀}*hg9<˅n		
'ێ̯*(-7֫=iÿzYz-`ܚ 3*-ᣍpfʰ9pF)g৘كO6bbMt%do;Vh!ޤ^9NL2!D,LۗTެkW?,%yd`n5"c2J1[pF:"w}:hh3d2wNlhBbքQOQSrtXZ?"W;?_ԃKm 1)9ĶsM"+LB؛L$.C&6BԟqЮ{jL ;0n{"@Qg޲J3AġZ`ZC vY̍5jⓨ8`6Z;݀
iywڟ\-&YkT$ɳH~u\.1Je)(5W%+DG" POءo.V=z?'٫Ghy4gЖtx+Q,02m)p2@Azu&8πab)gᨹd)2<Cx̴-3qO`'_O $Ԙ2r'a	Re`it26{%tYm*=k1S5f(4H6)P=([p!
+=+/	8ԘD<6?|ehSHm4_u ֗,/WoFh`O6NYf<؛B.㜂9l*F09K͌(
s8z1vݖW=l"1j!k" ;jdũZ0jִ
׌_)!p-!);Ii p@Q#n!8{%-ʼq,E|
NDmYt8y)8GT
N,dWEjHu.M*vD:pgܚ!:ȍ0ݧ+ky68HĠ&۔'A޻Sf=+#EwFo03^,|IBZ6yԢ	ZԆ}P}f8o]E3{Uj0⫔B.#ye>;]2.CɎ/(ҝ2%N鐯$_pOWƲ
>T$$~AL`G|߳VHiG6*fρFL^HT>
{~U+FlѹD gDEj\R|lx[D=fc3dү`^u8
̨
DXO%ٌ=+j@HHhW]%0Hϼ晇ˮ?@Q䦅w2<O~lۅmhZ-0jVֲα}괹F	DսIz}l"J0zҔ^Fu`bwDW,7ƹ6dRyEvpǴfO`j
Э;?L\S/^!(ב$fqU6hm;XyߎhA3yzMV/8@&I4H~NeA)N1C`#3I*%G8j2,o	̤W+KՎ*ZU@Rwcm=$Uh̳׋M͒lۉH}@pa0Gʀ>N9$eUf`e/~S}Hzn&?59aQy%fᅁfqH0 PKئm|g42`ꉽߚAeAfo>DAe!=UcD2z.h+\Gx9  ȈۼwhaĤ*;&
WZ冚+YRu|JQb
'W`BĎYZ渽+

Ev\
ُHPPDϾsjEI&Aw8Պ |
F;Ln7ml!"oKÉr_yiجD*5ZJ{zNc14뒩m(h'S>)i5xlδHԅO_ђ3.$IƭT[2cAnk,m]b_6)δ9xj&x!X
ӌ@"u²4iɌދn]aꢇVfIn1Ha"QDsx6谼3zcӨt@m6bBM;j3M6Z?ǦYtQh\t+
FIxPE>meQF*89eѼ2wxr&rBѡ
e5p6Mhjy~n.DIk/-I`qCr2

(9^OqǠ(;b\aye4UC0ˮ |cI$t=
Liv8CcRrK5*ၼ!e'	,Icd!ie,;7a(#cLI<D-Jc/Pw;S]\KM,Net>׏E^}Lu*Jq-d;b14;٢;mn	A(pEFo,;Oy~(<S7f4D]GQ-ެ	P%
	Zk30 'sݵ}AH!ZA]DM7a|
X6YwSHUG*Ϻpݛ(3hNPzJ$f:T脾CVJDPfYMp. G[zB61H*m~ElF HsfNTªJ- Rx/m[FWY(!%Nyۀj oeqLـtͭ:"1ivLztA ,M-d9^zFK7zƔ2bV(X6uќ#ˁg|G1#"p8;XO@~A-غ>:{$S!U8ȹ{燯@ӌkܘ
9Q=+$0v#;Q;ɣY%EO-4!êy#:I~Șd=
BXLF~F/6&JmwȱFyȨx1X(]<}
Ht<qqv`߰AEdƧB<:6R%!{Px;+lqjpK-+%2I4LGk4\@~#5뭿I#k}'^ȼMYQvΙBM:T|U|YG8ś=!Ll
ˉ0_
'8p3%h)/?eiOId}Υ㾨<n̋3ITUS7z^4sMF&6* {~,JRޝ#Xw&¼;RF!2ybkm'xUW|ZtsغYiىZӦy}gɌ(Q0YW?Ϙ9ϱݱyKywJ,ݵLx41B2dlYSXZa`T)ۭ[0`m'J$LlHY$&R7!h}%gӃ`C
88
ɱXD9
ioe3h&UGQh=bJ*w7(X@?vm6sӔM_n߅wp`
f:-CbZ*r$CPQDRB](n˜WlN0dxkMS#C-=(teZp5-}|Es|CR^E
9=mxF,*J-2H)*R4[bD X4PuA E{b|6l1]<ۍJ2XD`*/x͔ij&[iT%UƤ`bNbrd 0tU5ЇNC* v9mpeo]$O,c5qhYofhW*6.lnz%"7Rr7S;9kFG	|vehzx%-j	::%nPISh̶exnLgǦߨM9í	lvRB[
S_]șE?QiPJB$ YkSwM+٢Dr-X3JC5=҃ƀ?1;DqPxfгRiG
CQ(8f`D3aK&l"/Oۉ<ǁLZM0HR3W@rM)dOL+]mjǳKb(+3 khL;|bh&a2y~WfΣ]֍@Es$3Y(')oiN^W
C/I3,n)6ѨFvl^(-㨗^תIdE)Wl QFl[^1JHBaўcD@kn7ҋ8E+mKp8z~1&,ubx6as[).ͶKMܡKJ!duJ{[۶0~3U?9r| hh"P4ml4	+',$''E&!<(gʃy4G&P*ga_GhC;ҹjBi]ދ1KL"!P`ӗtEB)&638F3D)pYyEFB[ZEͳ0MȺpiW7arI2}4ƖD9܃`㳘/]9(gn{(zw?QRс4P3Q>p<fZtx2ۀt=UBY%'^ޭRkȀ*MBt
h7'%'w  UL	#xkw&?!	!lr&>/Zu 2XjҋcgGүaUN	X?e0!i|GE޼%|dh]{\<}kDY0d	N=&TN (mTK56OP>J§=Wiimc83
e)WAAČ_<^|̕P<!ydV -~7/ڴppdx*#"Ό<QZn,
1
\^lޅ!I*Y( E7-D;  )=y+"ᕷ3>cD#dqxx(}s8RYj׻Vc|hUO6ěTdY8X#Xf|&#5F
0hQC{&Ɇ*^LH]r&??wY;l䷰;,R]'] lor(;h?߷#ί%|3@* ]}An(\5zn6i"'h*;8L}(6rʒr~Ijsm	uRˍ_޿WkB|c5;c<0H9\{Zʾc<h2M n2{̼ZT/#C8x̪[Xm
!sGf.ǅ GђkhEl~/!=6W4e`F8C $AҠSq0!aR""Qe뫤OL>, J4G040aUTQ%mJO,/ƍߏe$lU1҂R *4ZxnaZed(].=5
L(h66T`~[JH;GD LdF*=s[Lt{QWnOJC[>J1I%mT#(PN\]}?.w
N}D&k(Z
AՃW7HD(bȊ
)A`ANqs`)-7-pL7?jM2DډPU
tad{O@d42$8r&R0{>&\8y}µ
~	K?lj1Z#q8+oobi=J~="#^òs,i(i3OL➳qWQG+^zͯQ'<6(ƪ!lf=nVY&6,P	ս_Pś ~n<pb},y 8ӆ7:-CKNe<q')ځ4痡.gHzĪJ|_eN$ƘZ28|Fb
5:gO@f
GIb)#
:Y@f-_鲹vx7 (isR=ڢ LY\^[k5$ixg6DuӼf{"R<ʆ2=5>edz{1yN}.[
Cw^ L[CdJ̋ZuZsrˤ<	#&>vaMo▫by/tdY]nU\:,Wd}?y2&;Xi*ڟ<u6jsllM:#=~fP
24B(6h<h^Ŝ31xv|z%e2Rݗ	t
/ufEbMTƣ͐[jҔ/Fm<^ja Yfv( 
@ !..gu0z"ݙ@x7Wv+6$u.tAi~b^m[&`;k{;Z`Ph+S4y|#Jr!cdEtaЫ˸7CotRŬ?V@n~
]7b@fD̉Jcc{!7WRl6p.)qjEhU4>9lcL[?L=EozD31jU*
4;ou2tDk*-8
n	43s<0¤LwBgN{=Kĉ1ዘb`Xٝ%iwx4&~9Mʅj2|xF[QSᄽܗW'*fyJ˞gi$ݧodmYaqqnb<Ȱ3r"/MЍsߜu}гWkqR@i(
C7@%0d76JkKb%5uT gYTՑ^ZTb<
`Fs~؂gj1pP/$EhY\&4Bxo{=oI0oR
S̲@1ϯtKuNK Wg#na-X;2W*u)EbY<e`N(xcrh~c2Ym,ܖ&Ι9p<6`F꼅Cr1'-᠝SO{.ܔr:o;=lRT#
?ؚͨ
7"%6a6g(.J*2aoI9dSU
ȉ3W# Wʜ9X
y--r,[?2&d/邹\#V	%
<RdRe]pن7I"aAIO(e8N$.+4McG 5a\
*.rz\RLt>v2h_YJ^U[3Fg\DS{6ļ.7짜~'* S8O<~-vp!F`8Vh,3gd"pq+4ɢ9LU	< MP/];`hJ\&m!.P9n%;f:gXRwd>-u:Kp1mDfR+) ޣ(45tVS*6]MFvY-GP7|\5	0[};0y䁴!V'~%DǦqy*6ꗂr'ig%ds|=zLT!2k67'g>6%{cŹiO*VLJd*jo^eBio'/De#ds_\m6+rr M:ց.
0r4ya7;Ls+F*ַ6tP&j&.d&
U	hQ5YbzIax
5:7!J&]%9Iѭ`T)-7t54eɄJ_M!	KCG=X_-_,4DF䮽<rU\PKe~GY 7 PK
    D:U            "   org/bouncycastle/pqc/crypto/saber/PK  C:U            ,   org/bouncycastle/pqc/crypto/saber/Poly.classX]pW>k$xc'cYrqMB8u\
Q4MVDD[N$-8`aKg
/t0ô%朻+$)ss޻{o
 7= z@d=!HܑtJy0KLfw%όuCV>Μ9K${Q#<	p۹@#Wpdu)f3ͧ$P?=;25~"Ξԏs3*M	$ڗ+seyx''&%:S*fcB
k,ǚB~s`nj#SɉѓGc-	=όvfH1Vn1ZW=YZ\6?^ȏ?=veqU؎rI`(Q&/^O6gj犗#bHn6Źbs~aX0[CF\4J^)%n̝n,KKyT.6#6(Aa|s~$OY^,m̘/NWF5j%H!v\g1@BP,l6
F|Y]-RY	`'AwX`@G4q
viOj[J0re3v|<i?~ЭCH>"DI{!0h:dyg
^">z`SСCt	Av9"}p9A$)"<K%""U"3D9#3D'/)pζCD4x?thzsX[qY,?Z=QU]1 lt_Q?
0='8vsl2r}mcHoh<`lh
R0?WWaU843(/.)WV>XUh*4_&t
AƳx߁/WN	N5[1a5L%I:|USKf2]fGeYWyo 퀶j%
nòdD2/yɼaD(53C2[NU葛zB~.E&1,4Ler˻}Dm$oߞ[o[2I򚡾z,+jpU[]śc<4u"ǼLVٖoY5eڵ.qQBO
ʺI
\E9,pR.agu|k#2"2"(((.""b}nT}P4Xs+^
[qPT-qWud^.p8ɝ*NrӯXڨ
랊T++5`W;.?](oRro7F
NQT]tZuG pL
W	I
>$:a
&KnhC81Q#n\HTT5"<y
cE^y3?E#;cDA'Q:[iE:7|+0L#Txl3Cks t
lgAd-m+dD
f`3ś9
D$P*!m
`昶
':l+!bNLYmHͰ c&*s4E4HXUUmڒm6pW6o\I~wًB8Evte5P&N9]I
,.RP&
y_};3l2<o&]wn;~xۻIrCus59ylp:1J8xW!q0?msxjkK:w4gzz?faR¸ѻ!..xEN
L[|k
E
촢)glbBT8J}JK aIփxg ͙~d}9U^^3P~vgI8GYYLFhUɜف,ûb%rxW<;üVÛQH$N>{kpK>oyp~II?Jb̀5fK>0ro..ann1q4QXvqW&c3VԌ[.b	$41bcXUKKk,,/a,ZʓP$/RIVqv4,^Fq[F,NPeYJ)U
Na1cpa|mjZ	#εUC
NS3w^4oMzZ 0܌&DB'~o6߂oйy4wn*+
>[p'zsO[@ζ8[ݞJN	zCX}ˇaSY%<hV`9k\,?ȥej
~jN]D80t88GCo(?d0p2etY|6DUFل_/+H_kE7@ <.0Q"rxdz$7"85LG*JռѫG^:G5`9yPKjX.
    PK  C:U            3   org/bouncycastle/pqc/crypto/saber/SABEREngine.classWitc-3A621-q4%bc㴶,
F`$#&	Ii5.iЅal0!{!i6m%钴=9lhlp@}  6l5DI8j\H:QFiHUàk=!b'u52
:\-ZɒT{bhTckF::oIS[1g(VډҵHxjLox ;t[<MzLKd <Nkَl&)B}Pem#-SarZBmH7n	quoYTuusKl3*@nhjDKFcHg1@h5ln:
Z{4dM|H	GrjulbfbƝf9/cֈ^-{Nn3mq5[	W<'2CJˌ"'jߵ-аP.ӻWכZ^m|(⨤+>2ۢR1ܞJǑUZ.ڭe;%_G65iFS	FWMSO1k'CȁEc.
*͐	Kf9-d
{^bIv
2iRج	갘t21{`q=쉏k{劍}\\Zb$ʍHѰ]ilQh<~2فH:1Z;3S4Іsõ-.Dk.=?akڎ 8x	@*^{.9zx0lb;G`|ӜZ6k_V T# EEpw>(BqEHAk[:
l`<3UUH/y·wlu9I,W:%\VU`
P` @pA-AA=F	n" B`' ܧ@
)lvz H
- +[@Q`+wAˠR	E
"XMp-,V
,%
(В
 <L!<B| $"8Ji>CY|^ax\a(aq	IL|$W	|[	M`{+n/<b8'<I\W|pX.jXuzP+y3Ze0ZZ4h^?α}J0&qYe
\n಑˛sF.or
.wpK$(V*w(hyP
( 'Byd#Z"Xm`:|g`6wOXƶ{w\i֒s'p<T"<ݜi HF;J?e%O%Oo$[g|Uy(T9A#ap]$r̵qExGG3ᬯB8)]0<3|wdTyȓ<HI84hM=K#SҤ=91o!/>NIV0fpPbU|x)8|\Eښ즱a5RP
b.NXw<0	?nrnUD.`Î*PjY?e?^gFEKN@QʸV^WW<W)rXY8>%b@uUgmxa
~T,gQP8"dgDه<($	lXpMp?C8GD'WFf{GxMÁn$\jrFeӜ,K;X{A:EiCII0+ B@wX/b6h5$Tλ\T .Ǧrr΀~l>uW
ouy.f_aw	&uo$\@.+:-\]1{P15~T54̫M7E2Ms}c ?C!dtJc3b7?zd|
/Kfd!^Obz]X`zډK;P <9U
LN8(L>`S|%Zu_IxMO3L#l>_Re}IAu鄯	](Rv}שƦ[rysNOT@`
k[8^DRX:Z"VA^֮ٝv5/^^G+ǉz5t菡$]5	X*o޶[nUU	'*\l_@PJFIA~;G
eUћsj5Ta0?$iЂZW:mu{CGxv_h#ť$(/8RO(^عvrw{tY_=?|NaPKk,	  	  PK  C:U            9   org/bouncycastle/pqc/crypto/saber/SABERKEMExtractor.classOPǿpjAP/?nX&cG`H]w3
8&4c|2ق4;=9ӛ2$0U0b䷪
RV5L2K*R/~#=6Ur\`>E>
&Z\8JH)zVsm	L8F!oD>k9dnԸ΃pZG59^`|2ܖm&'oY
6D[X3f4-z͝:2`
[g]_R;9 駴	WTLȪRqU5ڹ6J\bȞ?ْnX,sPG:.#C)$t!C:=㸟M<ᡆin!/CQi9
3(Y_9MCu$"_[HHkR|F\ 1#L+J=<9F4K_3fG$tþRR,IY3C{z]fł3=,O^_DNȅO PKvZ    PK  C:U            9   org/bouncycastle/pqc/crypto/saber/SABERKEMGenerator.classmOPwl+vNFL j ]w3:޶4ё1COWfe6y={N? caL+$VM6踾s􆷏m06ͅmX66c.^~Rb7M	_BosA	n.Dx{ؔGTKkn77|5G4F=Z468LO1?Go>u.VrП|w+]
#R*GeJ
7--R!wڮ		.K0-aF7ap@n8ò:l=<=+sT+WP3{o̙Xĵ)uuT.tASbI8%4	\X$qCA

dLn˘ÊQe{X}NAs`w&F:FqɮS6Oy=j6ODG5O>I.uYb|:Nb!.oX|N'X PK@&  W  PK  C:U            D   org/bouncycastle/pqc/crypto/saber/SABERKeyGenerationParameters.classMK@GbkՓޚ(A=U
*"bBP"v7nB"x7 a᝝y, fNRCkBF1%K&gLHϔ,qij~M%)2¦Z}'z?^~RӳWMpeoŃ9əImeDv!q'ZK^C
Աр	-ڹ܏P)\̰޶vPu;+OiK
c| PKYI     PK  C:U            =   org/bouncycastle/pqc/crypto/saber/SABERKeyPairGenerator.classTkOQ=.,<|
}PW[DZDDCH0D]nb-ۅ*IM?sۦ*E?tf93gN/_L5C?m߬aPnrv_!
/l8.:pKy5Ҟ2LC'
2VG-L2>[iCDMfPE3tijZ3Szrgi5kd\-OI}ȽVUK噳VfuaF֬>#wWXy--u+_ܬ\
/pM2kET-;,)d.KtRy	z%\pEU	$\pCB	g\?n^^(|J{wF2S=KX|khOT_gƅ̃圷_s3GZ`[A<
nᾂ~)F-
:PEP!]SІDa;1.#a&dƴ<q32bJ<12"Deä02F0'c,d8à#DgEv<)'良2lЩ<`	ǀ$n:D7 xX0"H`B][#Yŭ&mYZ(<FX/ߜbtŅKXxN1R	b`-'å^W/*aKU-3*PKk,    PK  C:U            :   org/bouncycastle/pqc/crypto/saber/SABERKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF}0ŉIENAȺֱAeg`ag`ed0!@7kh\#}a<l<L<\uOIeP(
Td1@R 4v~-|4#f,  PKMp
     PK  C:U            7   org/bouncycastle/pqc/crypto/saber/SABERParameters.classRPHۄ"-*')A-APR3pʦKip|7BG;Ȍn"Rzk$	`5$4jHjHi0aPA[z$/ZA0ϳjse[c9oPV6*8,ZE]lĶ-GM{3<7=3p}4.(PIV=ޘFEQYUߩ];ӨvX%(WTDdӓ^[:ecz`KfͭU#ggt(NMؙ%?]n_eΙѦ~MDOuG-UQ*egUM+ϻnZH:ZlЂA.Gpq#ĠGh݌d ci#gL0&Si!c6!̅1Gar->2CPpQpA[p%R&=Ӕ&ƹcԾ.OHCtD\#7 }
hz=UǼ~d/X
~5᮷4FXⅯ""_oWpExF?Q|<Fz#Tz5A%3鵐_HICKmׄPKYf}  c  PK  C:U            A   org/bouncycastle/pqc/crypto/saber/SABERPrivateKeyParameters.classJ@4izЍ4
)(TFEQ®P1IS!o(.| JJ\X\933o e0z/`(y`.N$g+8M$=t U2݅Z^Ȝ!陸D"Xl$PyS>RVо"Vj%cߣ~':yK0g;[,-T,'CTLػGuA*b݆MؠϩTеC_BOyRi5w63l?} f!tg
(p	"JPKuKs    PK  C:U            @   org/bouncycastle/pqc/crypto/saber/SABERPublicKeyParameters.classN@PJ"oܕj
F	V U&Ii,V>e@%&ns=_Nr&vVf(X\{\0䦕.0H&@C9dTt'W2ehjI RƉ/^8BQ:;ʹm;7dDtIlOwZJ)Kdhdd8\$Vz?FcyCGCz	ਙ&ְAg:.P4PGZlkشް#0('3f
(O!sJlPKӢ-+    PK  C:U            -   org/bouncycastle/pqc/crypto/saber/Utils.classVoU?ӝ;Qz[X*ȺEmqK|cqJ5g[Xۅ.
YLH11WRMxE	/>1ˋPzνw,ZH=9{?=6 Q"CNട#6*X3%G
Jh[+X1M3&/.h.0Ώ	^ΈKTKߝ|
>~mHN$9N .ȁ7뛏Ӳ_iїCtbv0<==U6`ٙ⹅Sťttf*;uB]*NN
´{['`6
nS;&M	JDN$F"&4DvaАDHd3-B%,牼vx)M$Gd"D^~"$r ۘƱrqxqr~]  
-7r-8s:lg#`@'xГ	G2755}tAΗ0Gנ?l<H8:,WVLx4gWz-ܑ܈7iGΪȘU4])*&BLLcV9f̸.)'M]5
hU4{-+8&*!9QW)`2Яڤc
8VȗKDF}_p>/o*㯪e{I2!<$vœYުr&+lW˴2eq͠򐳩WH(gZHP*Pqj
BP/YmBA|/A֫G)U	xvNܕm/o2آj/7>f`R_cp;֥~l%qЖ;S)UǇq0m%Q5Gf f4HA;GIyBn\$EzNL&4<*{b'Q0MJ(SJ~5p"XF]T>µ"/]+Sw`r؇<nU[L`U.ɣ{ؑP2Q#Lb1x^<xF-P6j[)W7;j69bg{.]&Dt.)%,f`,|_;ɨ?m7lHd׶1Sdtߠ نv.JdT^~آ5+:kpd`ϝ5
2gR7xt!57&V³K"3)0&#ϖɳ5x
\W~uhvJSgqH?nF7w^{,^Q$F_,bsgR]I;)3iRV&:_|.0F[tZ2e0 /B}iN|}')'vĤh'w'w'mu<PKt    PK
    D:U            !   org/bouncycastle/pqc/crypto/sike/PK  C:U            *   org/bouncycastle/pqc/crypto/sike/Fpx.class;tTuϾ[H+va?XcG'p$!- [H؊ccHݦ8qۀǖ]sz&1A$&iҺIS&8M$3pS>νwܹwf9 X, <oN	y[$P浲=T۳"6ʓX!P0;:O,8cSo[{$~IκA^YeeX+1Le9"$;9G Rj--ʓhb@iOV޾ŝqڴ:=tQ6:eD",N.֘^J[,>VYY9j+*`򆶆-붮o^߾%Pkn\۲c{M)7tPqp}[s]=}ztuK}spWБޡa]jW}_ ja[Lۺm}6]+ںfS˺vjݺv۶n߶esqmݼmk;k3
,Rw4ةŨ5|SZ[7-ОV\{ꝃ]Ø:4о{%۱ÇtP{סTC"Gב}

]]xw>sg[X^ boxj@OR'B} Jrb"Û!6f:qH5Lpc,58XQ5=GQ#UƑC5=3GXu68|mU>&J!K$)a	"*$L5H=}hd'c˘,)sf*6vJ/8a2G98O3
VGatj.@]#A]a>Çvw!^]GYi.&cQhLd+;ݘ!ZPs'fx"nhg@a[Ldh".ɽ=CCξ-ly6B`U)[b!k%Nu6!k'.n(Ca{_/<<+p.0{.ter6yb-X̩cre$"G,s(}Gp#Jo0p[Wkpx`pbaDCh6gq{Hdlln֥POoVChۋБ`wME0;DyThmG:{4nUk%
3=(cNEԄYJ4ؤf
hpBi~
>JT7gm/-eX>;
h&XI`XK`f-f@:o"
[Ha73\2-;A6mpD聘%p CN6&p0ɀ N(|j8x7BIvA4n#p# p8FzHL7ffp 0 wxSa#p-\i*:	s{alt8(|gk#>OH|u8Ot8(|LEF_%5D	|7	|x	|w	|	K~HG~L	L'~Jg~N?/M~E	J5CD D L@&P	h"tQU1Q7_\!4;vt-L}z41ՎgA:0eby̨4;٬MV4{UJ^~l grw!m'cg~
6" I5
T	Fmu?+]qVJ<S%
7d9%G*ajxA ˹2,GCyx:Lf4.QI('!P0U{N(ҙ2yeCRF60WIʢ"P{B֨ob	( 5R:qʋ^{-K[pG6@rvBF~iXB9W9mWuCʾrKifbR9al=kkj4G`1꣐POv6ifL-cjX6*]E
LӨ2}1>i-@& 
`t Uwc1nHkVf'AVzRB#
Nt,'vK	
Y~&qXFˋ:djwKQGHB5D4TPE7U/RW?A%r|#_m*D|ƌYg*:~q\b?)V%PUR(yS#F893cT{ߓ#p/ýnI]^Ll?x
'Bdx_4EAa	JoFiqȐ]yU39yOfܼvU*Ĥ)PyQ{/Zp3.DM>)V'Yhs~mɞɩF$T(JR%Tùsʴh=#U'¨kL. R+CUH0!Ld9/m8Mr
ltOq"CG%o ]1G]	kTFh
SfT4rhfbi|x_+wwϰGy"tu&@riGRfu\*Ob9"RѺӰ%]"T
(
d '-fe!4ӒXH!Ñv}>g&Hz_{0^g^u
]E;]R9/}gsUN{:
˥˯1"l\q,tz2"G<oxCLW@ˣO;nq g\}=37{<(98NT&#-]l`h!^FV?B&_AVL.L[>L0RSKty?vnOYdLʌJya:3 dۡ x>!J+LY!F&1ӳdgMۀxB& 甧S9f929@fFοeU%IA]!3B/RO-TbZ'F.	%cҕwo.&ŶDQarV b:Լf:*up_JX_8O8ݨ&mEJCdNsYO>;Zu𑦙uMW0gkRggE,JjF{1zj938⶙qjQz>)sYi:j{>f57MOs:6J*Y͈WW261۬5C/^߹ޤMT87c45/jF-w C[-Z0F/4*KN
bflJNB$JHLuSPjlND
WqlFMXۨLS@"Z5L앩Q4۶2JetbP:&?	..t<y(
g1xGTe":Hcoj%wEBm%[Gc\Kv~$l^ΧT89IP'5DvG1MDDZ[;n ϭdi,m@0P:IA훲ۧIe_((DQf'.|BP+ͅbί4\6.Wg<\(&b/0]X]jid"5?肅F,L!^0F<2y$#NeO|,U2fECI[IT&})G0sWby1K@,`ER΂1D2OCs.$Nٜ:\Ź8OPK՘SNlv{i8x8kд4#1Gsĵ1MyiΜHPxEDɋp/"*(PO6嘬λEEuTOBob׫`>?)κZK<;=㎮UbU 6wAxA|:rtqt#b[*)'hQIU|wMZ9?<-ťC:4;fmіbkqg%NV-{JFNDD{yp#~z`;jv&`4wx
vMc:cʼj6eiꞺڝuGԡ@&!HG	
WAjkC>9'~#5Y='RWCx1(nd97m|aMqἦ"/A솒c[Zwx#tgÍGAT|y×aDSvNڞIVjcc%xdM7#BM89|Bu*΅o0oMHBKDp%td		1NH !:"1x;T۾g
yc.4H!h;uDRN<=h|.sܪ0:rw4,bp[RclRw@]Y~0}
Li9*597vs
ԪcmgD&u1\Ry '5f'fܵR㙱9}H(2M<%5ͼk%-ԽRrm\R+|3c{G^`+|	M%3)2\T1x"aŹǯ;.ՔPMEyQ/qw'=+
ˉ=
fsny	K@zڭc`<<h!z1Yם6H.jcޒK3^֥	xt8 HZ0c^oǎki;,n?J4GQii%R$qSZzlc&[v!]uE!&p~!Ӱ%ּ:1l-8E#k9 ~mcn)'wQd2>k_l+}/5gEŤ2I/eǶ̦{{
leᆋpS8ɗn7ęǛtc1oN˧p2ޔYBqZ]R]VO-u4UwHuy/au]'5IKC0W3+ޕTwhDpH-dKogS.SܞM[C0;!N↲d|ؽkf_v|BE3beECӡqK̶էL/.1TZOv
cVϋ)
мT_xx`e]``*"pfRlM̔4߻pjŊ<L{ta`Spc'g)=avv,bt(zss{ Z$qN8q~'.^t3v0u}3e
Ny=/ͱ.o[R粧Zz[Bjot&{׭hY8c}(O-p$U80#s<[hyvQUhwO"\2gS8!仲)_5|͊oeh{/$]XX։}9elڦL{KiylmP۔j|3̳Ci [MXhQEh4Tmwba
a,ҹ
_.l:}ݨyTPb(?e[7EdP xOab+4fGmVYd$MLsUQ*x!Fm2q0-+_P6GInldHp2)sX|DɎt!W{126o>{Y)nܗ/|AmN57(ޗ]ۄeq=T:(6zEFMZER>h]{(	𲷳\`W}y꺿p!{KC6~:QUR k.Eԙ
(10hx:n)ᗿ%:qr2BkDg<ml[_ء??dg~-+)T^Ux' ^~LܑYeu=g&roW {yKE<oCc4@ςZŜpw5cuX3_ϸ.ݧ	(ʛOvtx.UޙB6(kR/9?{,`6uU.r<oVw|ٝb'\wt㻷\Yp!1Gnd*CY}<a0M%d_d,Џfa\cK#Mw}`DLV@bc fH2j>c?7?6y&ؠݗi7Z{:Q&ħA=kɝfY)Q^yYgYV,^?ճ#>!w*@}j@krO3MMhRigvN)
{w @`ƚGohx1~l8ۦQ63=;!yfo?*X"r>
Ekzo۞[-ۓzRƯ,}s^)Eₜ$f*0ڋMJJ1lraiQT
4F'Z#^FQˡ)(`(%RFHC	7^E	ĈT`x0h0J](J3
+$̤U
iLg@v[,N.Gd|4dǲd.mc6M~ciMSM0.Y)#
ACQt7V%
",ؕ(L
V `Qօ<uejLhL.SRK(!plZ8I=(E
K QK%x
ĈJ)OdE6p_۷K=K|݊vtED.WPc
V{Zī.k9g%@#L
FhDLFZ F-RH%IvK6W?&8Qҁ(rVwm%XM+ymNl֜EyMp\`Rq7O\rɱG"ŧMtǱ,"rLD>SJNe
}4#zݸ	`	D:.z'dV5
L~V4}`!O5(H=˵~wڗGlP`Yj=/oR`>I=XOcV78U<4G}`	*+X	Δ
v
X H0`MSVCP2-iy U0ktteV2E\M1XxY446V[;c6Qjdjkz<܌f8ZS]	X
#[l<)sJbD'T&N1Wiw1D?wt@2e	PK
  Ra  PK  C:U            /   org/bouncycastle/pqc/crypto/sike/Internal.class[wGmٲiZ	m
.o\`8QJZ=ʝù(],V<
X<Pfo'd73{?[#._ $76#AhB6?gZL!$eآ6	õy5
Khe6fKeYLnNvRc,<mKڋ}\Xj;|Sbc'J,W{sJ̲u
vWiպ6W*'({ZiV߈
Z%}#%
ISl'ꍦxt
r)K;JylP>fsh3$#TVpm\6_#y0㗫SZUkПE1$*NnKuV)&YXѶ}pYWqzؒa[)Zm<h%}_PFYߥhYG![6W)t(+j2]+'(Z|Pg}'4T'BTE<!AvRPϷ!O!k-} DS֒]׃4SCUC_:g*ϛx잺eX4VeOͤ:.-tHyg$Y>/o?fm\Cyqi_,?JbJ`x!``!/y~Վ)}UOtyi5]|- pԬ%Sv|nb5fk2g٬K˧ix=ǺQhoFxhxBuدxf+Aۙ~lXWzCo{-#m$ىyu\KoIpUi	nhXg8fa
GYN2>Ih8,RR~RpZzȴPcL>\?O'>PQO_leg-<<ݥMKb)-aZ]̰<jxkFW/i[./e8)ÂdxL22(\wHӸBw~㔹eJ]w"~ϸ9اߟtT1!G!3ft]}?`k^)pw o)[o?mq6oJQw|7@F܄z7C Tx71K FCL4 01Fxx/V/'o'NQvM-I!a	bX&3Y
bx#:_3QbQQ!^C'E\u#mk%bxNb,B|G >M|k`uʯ+8"DDO0o#%)1<ELϕ/x`x"?LP<xmPǹ!+ߎMQ_%^B
$yճQwX*K%h20yԯ<n
/_UDo-G{cexYY3?LO<7pn`24\hثFF[iN:rR
/)6$n$u5	WR	!OwTA_\UhdT
|	Nʃ:&(.,ᨁꎪ'e5T#IUAQ_j~7R@̗H+҆.PK\    PK  C:U            .   org/bouncycastle/pqc/crypto/sike/Isogeny.classY[t\e'6gTFZ5͜I;m┴MK$df:Iz"UEDKRq-\_|G]ŃK]99L;MmE?zw ޑ@n_u	,=34Y{tZۈR#6Y$mcű-֞n	Z&ㅩ®XqJfOx4=4^@^=[t
`GO~dP%vSBHTđztvd{$:{eqmX[4
3H4:\**UF&qBqtVsdi:n=}4&
ZO*XLTl&Jt+C&Z}qW<yP}eܼoOvW#u@)2|;Zo0a:y;JV )ؙ;e9$h۟?O狣ޡxJ<D9s+yo*UFSCx!U>0)ORcR;H
eSJ1ho<P(
:nW)+czI6П9VWbũN)_tΏc_lP+>)i遑ZFlVQ	}8GnD]Ʈt:\J6I:ܦ×tآ鹒یo<л3m7oho<Aƹ*
eENm9ДEi}Ks޽K<3hn)7ph~)w`Z=,&,bvnfFPĄfXfB
""Iބ`		"&e˄& i2a&ؠ
T,LM	7atJs5H-Dn%
r&M&t	DDv_OA"쁊0Ad HٯAȁ(d`A"&rQ"$<BQ"ǉ<Ad1"Ovuyq"!]"O9A{QT맲4峹*?|y n%&g7Pr[+	D;'ɷٷS
ϴq /\v7mR-,ÂHX`Q? '-*JL,+%g	m98d	-ak'g$7yW3Lb'"	5`*NP
ULL]ȽX7H-hZ`G~o^2ڻF]7c

o#,&;/Pl!\Uԣ`"Ru'ljv9ףv1{^7ǔC=SVK&o&zn]oýlS%'ڿTHDcnv4>,tz"]U~s);yޅfw;8PR2>N	.q7iZǓ3i:ua(#B!7+rqEɘVlӎGq\?c..˥V{HDɧ#QWq7i Y+oy<72-ryhNq֍LEٙR;4RLs"YUu,]nDC j"ܷ1|*2
gd(!2!!'ń3|"P1n#'t.}xYV%^5i3V;KklJB96+7nn"1m%yGm*TJ)gF6Yށ<5Z8*P	FTc6 ]3eO^'B%0*g|D\.\_v%Lfp	뤞?[Q}%ֈ?Ypa]Wn
8
! X178n9ZԊj#L,ￄ1?̴2}R*k9.frV""ĸP@c'K5BcˏBcXc-onJ!eEks|㙶xkfo;Vj9E8©x~aտ4?3ӌ,THOSɽ{V~q*+,;Fk}~9W!V^)Fl\餋#<O:8>9'P⡄`{/XL!^J' ,ry@vȱ+܄p*99zO<Q+V>cV`(,(UO*AנhP5rT=
U_jAGb1Muhnbv<ɪ(z\XqK [=#sIYZ4˭}	4xijZh8pꪇfCU`r혭;v|N,".N
\Ub]}_ssaS9sB0ÔUk^#Talq9˴>
]Ƅ"~1gG6$!G\̩By»]Cp4&$ Ou낿\o-]5qpW
]w..jDzL(K]}䋻.wKxcx]e&Sm!-2CtNjCs2{{̞(T9
͍wbKB
Q]^0o_v8E;:gہPe4TDshIS8(oA#SpFcO?nLDo7]HO^k!^OVMrYfţ:G`9,Fs_;-G7xA	wA]O!e_PY%z_{ynANQE,g/¾*,eu
8W[@(.Uӵ˸G=/&^RT|d5N	Ҧ\9Nj7O.з'uxZZJ
/sq1l[{`i4_?U;% d3ϓ2PK  c*  PK  C:U            +   org/bouncycastle/pqc/crypto/sike/P434.class	\SW}G nk]XFJ\D"I Zێj.:کZmԪKδu.vb>9NNxwn<BI*)	IL@&qLjo%,#הeDa+{^\Vᨦ$<Y氹<"ӜK3[fJl>KIXieγ)jrٶslYE|mVRdeZCce59F-z1XԬfmMN%:cnn͘gΞULi-4-4?˜۸#5[(If?-*@yřBh17El.6P҆,D)罤Dg/Y̜Mjwx1MGsU*\39T\E9V
W5?Dx~7FMgޔn+)l̆ōذ'?	Xl1X2n@[u% #ϖ(½"SFnv14q\Ǜkd,0-$7_fnRgta/qʹx\n7L>ok928Fo٤edm6~L@4!-6&'"s,-{ɟx}^Í;VPy?͝4'd"K4drC'Q"M6xj2,LvTHBs&
Y AU8|y^(8O#[8|Mt{=J1nURvj
^]UeXq͊Qa*])o㬮ȬqVpU)T>\RWMuٜ2WHq*K)q\)^?᩶WQZPusnq1LaF*EQZcQZSQZSQZcQ"7(g/r<YuLնJՊ8Z@5mj\tj4G-βjgY|m|υ-WYك_Og[y;g2D>l\o{1lo>ވϲ׍\Yqjk>I_v^V>lמXY᤬WD4}]`{i7'^a$,v);ƒƱWkn1;밤-?sر	2{ ;f4[۱w'Z`[8;;UYѭvi/
Y1j'Ϛ߾evyHF{YL|{Iz}ZTdгWi|Gtw:ͺxckE9}ԅ=g_է.Ys1zB3+|_wk}c틞<_g<~[r1FMΧӛ?7.{khrn69
~FW8Hq]ibWrsOoNL{;VXOĝOtx8w~i\5i8Fqѓ#st]8}(ɰܙ	YL\:ڛ͈rD~ߛSw<U5ILW5
Әgm]㏽e|EO9yoQuvv1JWZށŔ}Y3~5yZO}vƱhyGK/3^a=7Ꝧ?aү+,Ɏnϒf=>v?-r2mK^QH6tk\쥚Gox,zy1߲	}6u-܌e.yt\a'&k7۞6ͬ-e%>rb7f,ʍ;.U9:|oVͥWfK'*gn`^
io )?~WYuѺna2o	r2{Nn|wn9[>0
bt+LLBe&Le($I&d#\Xd2Q&2!i2qdLd2S&n̒G&^dR+:̖-%S^-iIصLKwxË{Sc"$ޮ&qJ5tv$<pz8N_*k[(EWz!D mQ
: @G]@t@'@
 i@:p0 C, 01@r8IHZ 
$IF #QXr\L+0
 *
@&Ez2 ^`'!I)}PO&zRLI&]'a`%L0 
X
< '`#4,	#llv ;]n`xx	x p8
^^ ǀ	mww)/_3Y9C<1p_"p	|
\>>||	||
\х]LK:~.5'gV*lF]#$~?iz	!4B"_ Ұ_bR?C$Kq~`P?fzґ49t$E:BR/ܼ˒^U)WFU6Ued:"Cl\)7E/EBA㧿K9by/rt@
7($qp"
_@ygE[<Q?EcqEX间|X5L0T%YZNXeZ
nZs-XB^K(KFmQXd`ėd4.	/H#J,DVnXMJ3ѩ#7*7z*D
g遄JEۈelPN^-V 8[|.FgKg#Ȃg##7mTr*yE%pivDt7Js^%rA㸉Vi67UrI%/sY%˸QOĪTM&rUĩt7*5pM}IP
n)nzunzt07T:*ITnT-SZO}: 4TiS@~A% tM
tM!kDgț|`U t:1a^t K7ЋѢdn^\
b Er]bfV^,Ћ^|ɐV()Z
ʌ:kl(f+S5TVlj8p^E lEa'%
*2!v v	茒h ])	
*=T/7DxI!@
]RQ-@x
VsW#qFPL a6<#0m,B0rq< HL &*aXlI`*p/`C(pr$@%4'_)ŐdbHaH"1$Z~iWe!Ѵ$C++,8$@3"#;!b&8$кjCnvaD0J6	hZ	?e)#o$0
%,8"@60Fǌľ(MEA	N	k=%(.ba1<+0I:S;%()V	N	N	.v*g"U
<(B!j
{E}̃8Xp!""Zp	
eBy@bĬY_$٠,Kax闺K]
ZtЖJ7d0(~AIKIEKo}
^g_*\1(a~46_(X7dP◺G{4)]f/'l'j%Ct)WD{;iIVnIS;iK_3m/%#aw +2<~RR5c wf%JiK.(Ҭ2"tq	#E8-C87ރp^BP ǽxH"Hsx&BJ iY@sbh3Db5ڒKFʩm!T3+l3OoQhPy{aY<WWZ$sX⿡$HE"b5
d<YS^Ry8/<Q"@I
EI^ButЅ
ZOi ÉҠ[G4pt.#.PKд%    PK  C:U            +   org/bouncycastle/pqc/crypto/sike/P503.class	\SW{ySpEqRQ Q%PA!BAqj֥֥ZkQ[{],VkkժͿvVչ χ9wNN:!D MD5oP5X Ԑd`h,؜Ȗ"] Ғ,9D85QMqkJ':&zIIts1+K ^טlI1:#Ւ&e暳Ml#Kj	R#Ɯl@sπyt";v1>=˘i̮ӌX' cZZŘnJTUոjԐafdJf(Rc-܏S OA%p=(ݐebLKn2i%Es,g/%#b61fy7jv9VpuQfsNdba,vo'_/agg
hxOLJ>zhtYo
4{Y&]pߘc6eW[>=~]k6d-$N1Zؕ~fo=C͙)2qLB*gxwroJucrZ8(3;6k:{!]_s[{n@Kjن4%̪Fc38F-.k17G7ןTtUlxrʊΨ/9{&cQBFȌ0N b^
0
做<n6{!{+dYJXAlt[e^(2m*gPrڬ,%tu5b2V]%{C^^sj/I*VϪz%Vd-V)%V6TJJc<U-)uX-΢*{kS^QS^rTLlNT ko/Vrfz7،Zа:r'yIqޤ8OR`iuy?{ՈKmn!UJS:ұuzYlvTs#h7K
4=l+.tQCL9Gйan|(3G鼬[έ9N
^ft+!?~D.Gm=.=6V{t.5-]f:.&HwXrīteӓ;ҍ<Nei}gq,>>Ԋ/SNQ_cE}ӗC{C>bRw`βEf𽡖%8f
}sي{NLoxwt
oI9ghڈ9G{VHIQ):&pғ/dRJOw_GO}nƶK|'y'z ۝=9sɭߥOMcOK/G;DlQ_kyCN\K@Ы]e˩YBݺMvֶ@rI'{V;I=uz{SB4E$~cR~ٚ9̙3T6Fń~}f\{*%{u]%mMIۻfQrˮSPvR2ićvJ@X%C']7m׎9.
z:mrqW5T}N9u4⥩~GC3!ok~AI[цv+(\SC[qtY/ѶbO[43vj~˭4ȈZ2!vMXg]zg7իs8G{Jk
	љgtK\mv[wnPkztJ/kf WqvV
Vݸs{ퟟv5acqWN+Ɵ}ɻ14ZV;J]rٌOck*NZH:88/=>EjZC9Ͻ`UaŤٯ̢Skhum::ʊSѱ&ɫ`g+oмj+aWHS,[o<r̴ēo|ANެeWiGϟKp4˺D펳~unWՠ+a=uO}
>(kR"T"~HD%%h%M"#%*4K$C"ɕM"$R")HD*$HD\*it-%k-hIX@KطNxT_Nl EÓ{w?/)=?oyvk(N4|{*눆	h
24Bh p%h@{	t:.@wzX @<0H 0`80HL,)!:R@h? :+Dz0 	i@:d$(&SRL儽:҄:2QxNG	ב* Ox^Gt$I	ґ%6C/^  {7 ^^[;{}(!1p'g)s4%p87?Kwe+O?_Wkup
  w{"@ ~   t@6- <+
2
!&m-0 VHr `J<#=;v D@)'X/ӷva[L[lb;vkI8skl<B/Knq-r-Շ-=Byh[AWϣ,%د>)^=I-7q؆[nq3b6聯bwH5e[ǋ˳b/57W=PiAx-Fe6Qsr)d9W͹"͹"34-Z|3/?SgLGٔ,O{n35L,g?s69Zu}|LhǏن
[Ѣ5XŢdzoE1vČB>a&@	Tqr b"3_n4:}\܋||Oz_K=I%sԓOJԓO*DՓaFVfB3a&3P͌i̴P!f;3LK|L+<Lk,fB1V!8R;|LB1^3A
TtTf:)
La"D)5f}Wf)d'33=0`V|+zW+zW4Ԇr򊒻?	 j
V+XV0W<+(tQ+xWPРh mv@ZxțjzV,[jxńfbdZbB+byńHb-x?V޷0Wl5>{t2<+[Xڃlf
Kv^穼s'TEج	zy桀&r)W#7RY6ɒ)W5Jfh  ,CABF(a%9
FCl!h lC=G#	10
^4GJ7h z"׊EbF@CC Cpp0!P-1I2"a0x)HBKCd 43ZHH6c H-xaY|9WbLBX(AdhSe@9@\@©ëfhLnqFțo89R3JX׏tH	d> GTל<݇:#4{@7ٝzO=hqrzo[Vx0i|ʀDI@2`F>#1C^&,:O7o= +0ƭk=o@v9F* :5ރVp&Yl
!s\
Ӏ9p>_Ĺ/R,\Εs*>1><Wp-<skz<
xeg͌&Rܢ`nq^˜Q4-&mէTGH8R/+n1EϞӰv^Ӫbg̞x r&vcsWb0i8ZOWtuqn1I/PaGz8#-w8'G}klAa+Sg
k'0OR_G[68-ea2˸l<0呆X(h0<YW,hP(!|ažp<%aK}}tAxP	aGqS!=HGjHi60B8J^Ma6~E!u -,mmXa'Aő쿳ff1m0X5,jj
:iqz_o>W_l?;RS|RS/A	ٯrgGe	kK4p3Zaavs[2B
PK͟O{  "!  PK  C:U            +   org/bouncycastle/pqc/crypto/sike/P610.class	\TUϹae¸  nʦ"Ȣ8(ΰ
⮹YKdfVf:.YKjheiV\V3y~=}~ۇ!ݥ8DطR`G	LDi6'Kyf%.9f$\KD%GԨƩQJVXcf-))ʚ]{&:9ѐJGcoNFdҒQi<YMgV3Y3`Hӎ|DONMcb!N(%α		!\pE
mBuhI1|5i_Zbdj|QlCfC5"zȌT؄qrJLl
%My<u	hQ<%j|/)%
ɜ7rDV)k[u7CpqT#VKRDIKѽv^&5ZlmX3,eDMdY$~"QjCdJd1΋"2O|*
OaD:aY)F1{TIx=j:;8lXbo(Klh!Yle/f!
Z%-2*!֘bDBfp9m&9hh}Y?UPRj+Ts8ǮqU(nh%҈8`Fh**2[ry%3ͥ<y \j-+1GJ&14T`
K-1
V*B%/(Tʿ+q<Sa*ԠR^UVP(d1Rf+(93/**%yA2KNEVh**	)(YJƙlk܍ϿE
nƊCxF
ukl")&)6)6)&ɥVb~8)qcڹ.*hhKVexݲnFf)sۖYp5X
r|WǗlB_~.lƳCo~~+w~Օt~_F6w.fdsLa:6SX.[piD~f|Wls׵lwgONݞrlav|N?8Å57Ǫww7Yʈ6}e߬Jh!gUG/<|w{}Jgƒ؎o_z+{+wl熬v%?w4`ǽxfeklMΚ۷Rٕ
o~ò{zv`O[ߗi쐷Tp.F7v|9LɎ_i#{c6	y({x~}0Ѻe]=m>3;y;t[zpnڏGڵ~;Ίnyvkgv %}rcZ/N^:Q?95,7Gg7MbCإ)l剥rk/jŴνx]4sП>;yVE;V(u,ȹʪn[ޛcb_gܻ3	uz]siX7Q-'vdrǨϲ۞==>63Orf?]ȣlq?ig\tGڪ[İ_K?mr,ӱLY?kkLyN
ip*nMC5˾N7S9·3x¹qy+1kiycd]#߷Qݻtӏxk	F.p]op$F3Kٕe՚UL8ӄ9v!;LkuLc
z<īwUOZ2m]o;feN̧DZjQ-bԫFГ_6%O_siL>8i9?ߘ?<~U:ly?:MѼ'e',KX!+5u=Q>ͯY`^2Ҿi(jPҩ7^?|q/pͭ^|?R	#Պ}YI+\bbr7YSAH{ǺDz3<sΏӦGOϒNʫL3xbKIl2{̗Xƙ_f]ve#62EV_b#5͟Q]/6+<ڞdXfs^1i\|fx"i4,w߼!loƽSTU\7jͅ0y2-]ukXqBVVTq6iIڄYl[ͦzU9M<!!!!z
!q2DC5$AC5ddhH5$_C
4PCR!R!R!4d5&dddI%^	O79 0ѿvjPҥ&_ WO) 
\?\KpM^?zOoX'o9e-QZp@<f@s|@+5@;=t :]@
BP; z@  bX` 0$ɀhBR$jI!0 i# g  @??0 !@< $C<X`P
 +Iג"(	?UBD֒L؀,z]K
-7od8ů;k6p	 9$P@  G@
h 'p@)
 7 dh4 oZ6/ =	tA@7 B@	z}p/H 
bX` 09R3RJr_Ii4HRi5j)ޙ^wUJP髢	h*J÷yUݡsPu{
MV#إyz7IkFy٥ܰK>wW1F
|@sKz]/϶KVnۥ<~0FPh
[uǈ_=.A,O)qMRR.Uvi,.)fލK1bC^h&A4vPo<]e*+zN=FhFM<C|Eoy.2mnT	2AGAL252l9d%7jlᆋ8ɴ'߯uu<\DQԡEZ%HNo^g]]]fe>+u::N
0qty_g^'+~BpNAR#~ne37.2L.qD&Ki*Aܸd!7:6M3q	.Z(2^WkW")'=UbGErU窲%z(;6zPֳOe=nz+zzz:r#t8725n"7^2-[&;i!inZ:7dڅ2䦍Lɏend7e72妃LeML 7z禓Lvjnd>7]e rM&i;nBdP㦻L+	nz$7=eI)2M	i?ŵD(4N|)Ni<S:<uS
)9 -h
:
p<q'Bw!kŉDH8:E9*NN'BʉDP
mv@{ ttRv.vݧϋݧNbVe+b,eSv?X>]+vVvX>O(D}ie*߉o_ElGf(OJlWvߏY^ц%ϋTHV*\P**yU|L]trJ矜tə:mrZNΑqU	3<@ZSp5H	1hslb_a-hc@ I1	agZn@N"n[uǭ=^@o"~U@	Dbu?ك1q0^"dhCҀt01n,$ Fg &!9s3§jbdB`<B<+Pbh%K2xbb'aC)ThӸFP38K(nd`^(	>#_"\*2,
U]Zțhahnh4+CC`uxt2wBoU]wl	@CڊbWյk@bXPյN+)!H	S5k@8<t}L"LUu6`UL$hɪ=T;Es8Ss Y 1V怖 ./m-BZ1P(ä&@ &dLATգݡ}1QtH]z;!T9)ϋeFR諄Zp
fru_D֋7	VїYe-ѭByUpkB]onW
oB-={E>-rP[0_i9ʫR.xZ9TWs<#{dcca8KOunvi^./ vikwzOSnz4ZGlV/~0k$3Wrm^.M"Tz̓-JO3Ht-tOOpu[-v[GwSJ|x8Ua{ɕ#
PNz
A^yʳP砜B,#<V@n]pOm?k0!\l cT.:dC:Hzήv@&y8)aŦMTzN!2_ !xgx<f(1=2
.vi[AUH|Y!RvU)/-;mGeBw!DDIMQB6ITp5&^nPK'-^+s  ~$  PK  C:U            +   org/bouncycastle/pqc/crypto/sike/P751.classXTG^wإwZAUD)PtEX]X\Qc-ػnDcoh4j,1&F?y>9?;se^B,Hƾ=jơCvn@hpTd^ .i&1Ӕ+`svhfD!pk2,|8X]	5DZÌ=bCٵ)cHJ%(
C#c#ҁ=BشSWCX>X	IhGʃ$E
AՆǲԘPCliE!--:8{?)|c땣C"
!>L/*,Nb~y+lO^ jY
Dh50&ݨrM%ڒk˴䘬Ì{0w)aesrҨl11|)Z
J3\b^[lYX:l2&[-w>9:ӍoTySWG˽Px0/128**][{bKwf\Ko0٣,<74U^:4k.7e[-9VKjZ)2ז-liΉ!QzcM=P%=1hK8v.|[͔,Wy=b^=e󩔄RTq!"ޠ77iyyvd29י&[)??-m7Wě-tSp~jJc)
-tS-ے[Q+V9-7?Ԝ^OHٔfN*T*)6יG
lf^eXIْVkfKO˷MyӭlA&65ɚf͍mݒmy4˫p3h6a]'/͖œJʒʒJm4[Qٖl2Zs٪#kPkC|Hc˲Lٹp-ʣcuM4r~A..Ybsӽ^Ya_:nAQt|Ϗ&-Uۓ"K\{tbv-]?{Nrݪ=Z7!|wo,O*>r	\{UotJ:v|c3,=t҆fR]?StNn
릡y܎Lyŏ.;>bMpv?L
3,={]ض(t9.CWVMEWayk:L^^o&/t(zJxEtcì'm8jq͕lh+y~=nmg~xEDjoҪE?xHIBG;t8K}>ɸyu/>%C%X`2n>.8ڛL[X+/|zH֪tK+=O޾)5=q^ɬĥLOO^=O-{ϣ&̤7?se쎹;Ovw^y0>^mYфNCk9y`e2wQק
UAH[3OWo9-?׉~m,7^OW٧.z}iJ9v#7es\~`gC[ﺝO^81t5^%緈0}qē;r?`zmAIOKqY`UhK|m-ݢ8ZcoM`oY
gwSBPmk*OkM~g-yYPNDR1N*.`NgC:1}y9k')4̜LndNPw5gg3Sj洪{rj	..ْ9iil/&d̹Gm(GIف%5J@'[~GioN,-\g@"p6v/$z*|yBI9@^:ٛy&u=az9hj3wm :T,SiI3ŗ|HG5	|8<|өTy]]Z>^9sAJyLk6!uYZFO}u/sG.~>2i7zֽ83g?^i#X:Z][_
-)Lm;l5`QEFцu>!dF(>ՓJO̝5GG$&}lc'f=nKl<(uiY902iëZ2vt8hxѾ>T֬~_FGF<.7.IYQr!u4Lsץ.>$ѨU;۞SgQ#"J\z>ћڝ٫A+-}z4nRq`I{!/ߥq7x	덶l{4+iFnN5=68SM.O:>&̜_hʶGD{owf::ϚI[m5G~b:2Pgt`OszU:{c|.޹%584oEJMmC9;/6oStѭvxd>8āt:8]gt'~}&6yПOuSfj
q'
q֐D4ѐH
!5$JC5$NC5$CCL!5d5Ģ!y2XC!R!C4dVT5&}Ĩ&ԤV㨷|0jrcߨ7?gcU}k_+D3g|vW\+@j[+(YV|aOمH U	 W@5@-6@]74~@3h @h	Zm@;=@8 b T&.$$3$@
8N34ht :.@0	tQ@4$&` 	dA@>P Å+0V"I\HXυ؀^b}*6p!!74t!Ib#vQ}h
 9 A@%
h
@#	t @8 "n@w 
b @ zI@2z@/`i@  L    V @!0
#(`40E`"XK$:n,']Lf:=wĺӀ2ԒUfDE%AX/rD$y;6Õ<B[|stZq]vqNsYh- ۋkl@'ŭ:]<tJ.v.TR]\xԹ6bů)qiպJv}.fvfF:-a7ܩ:R'1F^'9
,q]\ۈ%u?Inu6#a]\ʖy9,Ʀ8)S#A&/Q>3LLcQ&cqlfe!2.^*蟪JJՃJ^U0)U(U_WǪ'xURuRuRuR5URZՑd:_#_ZeTKaV[TTۡTRmR,3.+3e3UdrpI&$f"WYÌ,xebgLP,m_e*͐W)_Oّ?)/}X:)Bɝ\r45#ʺguS{ nln2[P}XYAejnRYenᩲԒAԖ,TbM&l-LcCp2A+<e/YL=Y^/i B=fH&3X0_aF'|YH`,0''4q˂0 3(Y,^H-da>3-eV0̴ֲ	r;YL{YL,gL~d,eL.2fBdrPYg&L&؆zYew ;_w=Kd>(K*e+;>wlT:wD߁*@U@@5@
#0;Ln+n;,+tpwXda%Jۢ(4_@4~@3ߑwx'SIwf+\;I~NQ:Y[d0p^0NU:Td	tr9;If(T:ٕu4~N^g:n"IwV:CIPV\yUi(e_V׼TۯT(ڳjR*IܐB%7CTՐ4QA8"t 2*B-jkֆWps`p恰.	x$X>j4B/C&К"@s:) )H	h	Zc
@;TIG>N@gvAB00^m¡uED݀IR q@<%=#c.N)酑@*#~@N@B0 Ȅ/(c$Ɍf\<
ـLCap`=)2-9s<?s";؛Z2]p2Or9s:8WǕs$,T_g-r.\_j\˕u_ϹAF~&>\6snVo3wp}'W윻{T?=3|5aWîg]YC;Иv	R;@^+-?vaGΪ.y9aHpUivDAVviHˏ;0^
)?vʥb:3?wfF":X|Z~Uo98á@8*?R ?x+k@+xI\y9̩8JqyB/b%/Ϙw+u+y*Uϕ
gnFl,;Vn·w*xRU8 AΏLKᵮ%+?o	O;y+ǹSyqsS\9/8_)~EK|2Ӓ5^k
-
Λ|;=>z+8WI؂J	..v]ܥS3ǞŰg^(D'i!T.I]XGo:K?2..InvCoE:..ѕiT0f N{Tю2mNk8Utw)b%کn)Ew>qk%.ڪχt~3+o]<
?$vs|yaʟ/pEP^H+@<IyxP^DZEX WA\)= U}MK i_BiNUF߫[_ǐJJ4#~:
JM݉b,Za&]X~7w
7pg͸sHL/)[mD~=&"CT%#բ@HvQUբaVřPKW	Y  (  PK  C:U            0   org/bouncycastle/pqc/crypto/sike/PointProj.class=N=kP=7MjtRYұ8b&3%  C.QM/νs>'XI#gQzDc$2N6bԄHkJez\RJM.bUT:Uqx`	`7d<<"hɇUWN|ng0حgz`ы?x	ݻW PKn
      PK  C:U            4   org/bouncycastle/pqc/crypto/sike/PointProjFull.class=N@=cLGַ6X VU$2n?B-ld}q~?7 2XݷlwjqGlAX>iczgolR3UkuIz{b-LN;>\'*s8..lC!,/JQXcѦNZ)_TY:͐6ɉݺt'PKk     PK  C:U            +   org/bouncycastle/pqc/crypto/sike/SIDH.classWiw44dKGiC7zSLPi-[	ra,(D&[Rl9i)PԕR
h!!1m]:K$	nO=Aw4y%y%I%?ug4߻ 	ojÁ)L[S4UA@!U1ctqm=Zd}a$_-1.Ŧ27!j˽T2sgo+DWyTIa J1S&nevQ6Nɝ˛0zSQSJstJA9Ys/Crpp(vvw㸯s9+4G8(?, FdmZ
juv־.=/ʎY9bށ36D5cp}$5/w	]4} 5 A_7=5>IgҞ9oOfa}0LeD)U/O'9dv7UI&ivhlB.m/$ۡ_.f%U,(	\cәY̄<KVtQE;(s*ҽUa;+w6FQM'qd(a62q㱣Xj}`d\c$i#gXd}I57NeTl}[־lY95`Ħb,v8֢xwW`"'hYZh (Nv	p az/-E5x};w5}E-F`('λS;p[fm($JKGnY2CP'l`>L6| D'pA
!"l%(B/"|
b"8#~DA;*vpE}  4:		>u"t@\{	""B;0 c"C`0$A M!8B0E0M%!8Jp8,CVl |l'|$	 S߳$w	&x? !~L,O~jÂjÂ.UbȄ;| kg-m,8v!Ŀ5x\_^3L[I0E8g[6ޟ.671_Yk*-3QzWk5xFEsT2WbOUxRaT*JXi>|cs!]wlh)xkV-1t/{M+@\^g]yf^fYfg
^;}:+ecd?qJyc%XzG4\aI
(sWU'"eDMZ$snNj(xI<ܶ@VGӓp]jt<8%䞃M'՜/KWT.$#*M	W6~ghȹ97{)Szn[U&˺]55Xl6>aS6c6NJC|,-(WQ;,U=q CD p3WcsPȓWr#
<S+qKp+'\35QsE,?7gLn,@#ayx[OX,E4-"XJ>Ubs\;'U~0/b.qL^?-זketyXC~B͉$4Y߻7O~^y\Ͽ\/%Ulj^"HN>.p"km^SrM~0\(nOaAT*6F^o1kZEG $b*De>j!N_=gCg@T(9C}k\Ȕ\DV9Ar!7INisȴ(i*:%spİCKPVDŐYd
=K)T#*
*:sBIշՃa΁x.T/^Z_S{~5zS7#<.0ዽuJz*:^Xe;SPyܼ'
KQsL.Vc>uzU+˩iV|KK"\rވӆm^d#Z
f5;շe^jKhh؈;wfmX=xw[PK-  v  PK  C:U            6   org/bouncycastle/pqc/crypto/sike/SIDH_Compressed.class=	`ő;ZJIc,Ik1eD~,	ll-,	I68CK@ 0I˟,$$?/sKrOrlꞙgfqӟ%\}_'df}E7Qbjg>J^c<iSb|8rt67
rcf6?8# b&lȞ^VJ Y#ǺKܺ-\V&Q!#71mt~kDat**tttvU\'#9Mbp;:v
q$9JcrA2Xnd/bJ*i )ę8O>W
M^nKv(a]~wDQDF ׺=@aFA['0n4=	`mhہ|޽C#h_n/cuہ}Å#Ç(Yo(?F;F1SLIkuxN	%iz;]7A7vso{hz?\,l&y7xab"ߵy[ksqJp ~Ö-^axtDZXd D--Eslm}/PM}`aaxsMQr~$rgo/iz
{ >2_P>q^E ] wnhߐw1:}αQn[6OL.ma^ԕy]CaXK^+H)-6lhn>?@ZǼZ[lnɳ!­<p[hwvCpGIAC7:xh=ALw]DBB,O`#;{hdnɡ1>ZHaEsaݰؓѾeNv6QІNhNp`d3r血F<cn6pbxߤa*x0(A<!X7n
i_frpm{td˴LCﺶ-PH7??YhwIm`l^TR`6ʱqCNV	p㣷Rr^x?C!G~``abh
d:2:YJP;*RX=:oG9pvlk ܨlCЁ`%ٝ[F=z`dϡ=Å5cYg蚉
k +)d!8!k2v?=YgoKax?Q;@qFs`w!q%V
@`}h Had?0oxV%vKfZJQU]gRTKyA-;4Y³9ֿl̄
^t|\@n$"`IV$!
lNUR̷UH6%ҙEBzn
Tݱa9x@)*RD9MɊnw|t^Y8ih,Yw{C
~HzRD\ے@0ܺay)$D
c M7V5@o?ؿf5o)C`E5Qs`|hКGF!1{1:0S`G0Z#0.`uٛ@#`[1m؈uќd#ꪹi=Y52QzafӱUyqE4,]suh'Ѭsl%{^@mbdD.QGDUL5$od]]Ⴥ0z*r01	^y9X)fo2w
!~pG`&ظtPI:Ȓ<yP6``Ny|4ߝ!b.|&3zG'h'J%DQD<%'(a(J~%%%%_Eɯ䟣_(Y9|
cfѦ	QԍsEWlR\5X`C,_yU|\V9מUNw;%6΢؆B2͚cb9;vJ/swg>W]fFqv*ZKlR{手!Zxf:v//UuCle,Ht^).+C,}+;BP͝/U]tsV.kpv9,-w/h^yv9x] W-РMC>ǝM5Cg?/;u-T:wf@G
 Ep# mG0`#8^.w#8oD0>G!x;$ x	k{,r%\ZL Dp'7#x<!w7 xy"' &9ioW
]i-rC#E" ZȳĲHTXd,g"?%i|d,U{"_"
|#Rk?$u[kı"̐0b|4`
wdE~dE,rEm&-&rE@S?C/ ,#o%G	49"7,"i4i)? P"#->"yrE>y@!`<MZ-O!/ k'Zoe$9t!#[&Eo#S#^O7P`^
Poz)Q
_G}?Iy"ZlWZ^e7!x/"Z,hmh
-^o"GhE,"-q@"A'.t#AЋF7!؎`܂`']^5#؍`{C0`nC0`?܎`IDp;BZCpFp{#CpDp,N7!8]e~=5NӇ<u	w$bv'DpSދ}ޏ`||G||'|!x3EO!4 <?F_DU@'!s[;w| _!#	M%o=@~W3 4"&(DzGNF#x>sk!#Bk_+C"oA?o 8$AT^@c=;X?:21?2ySLmkX/ePx-%T.bi
 X+ӫ󗀩e$v46=~
Kb_Bi|Z}ZIo[/ʟ7=-o6d)JJ)d)I,+̨.]l\5ZآJi@W[Qt[M ,Mnh[z.i77Z3R]Ry[:.L|WL3(}KoR{V;6RT|T4%=-OkN@Q;"#%!MFU)MFU)uFi:48K	;yl'ґ ݉{ޔlN!Wa[Tܮ8R՗DkcE8QVcw0Y5.N%̣:+L(y}Ę!Ie5QZMti2u;WP4ӜW@ow#*xFɵq%PbI%f)
%i2H빌+F?*݉Kcɩ,jx[8¢vÿ@ܰ/wiq/	wU IKyϐfQ
$ڐ7ZO8Iǒ[Ss1[XIRT T'*ʓBAcN!ԋiOnYVɕ?#81z*Oe>L"3bj
YE#C)KAR-h
eLuH.2[.tXK~u/z7W#=GOU5MRRRT'_-~; 0 	
3 "DăV&^R#;*b1r1&
R¨LsDlTduf4	8&{f9U*eRQKeq?(싅S# qc
7":˝wXcY͒(c%XE1IucYHo+Q
fI>5n#6Ѡr^7CYƭ$..D@MLi}@:=n?A	n
oPN#ͪob(haH(P~" eQm$_ұנmOR0D1BRǼ?FsӺb	x7c^l(}l.tcRӛASMJ3Z	ٺBrL!0e6@`qRXTZSx$ǡqR}~X4$6KC@ޢ
5n_mgB.Ŕs0{F Z4,X_$s+\fBI*mf"V
MnoX=76.j_\e1Q7ے9c0I.c?vMʙf_lєyI
]sĭc`L֒'-JGYLXi;ģ=P3.¥G\
ZyDvBC$)MA|RCwPG-pz,0GP1S_tLl*8]6!+Iuj|ZN^
-;
F4rv}g2e᩵F)*_J0f̖N3>
?0PA2#u	lZeyKKGteKFǀ6}iNr-cHs!fau\bX^3j$fɖdْvI?Y]0.Up/#fu?.#M#	Kt,0\ƕTif0LV{N'a4y]cuZ\Toz7?fF	qDb3H\Fq8\ADMvUDͲclmE,'t^C%RaW3HI=+ݰk9wڱ sg1X>OqeWQSSo:qlF\9g?Št뜞y0D;C.uէAhϛ]i\5ϱ)jMY4't;8A,e%NBF.*yo%
ٝ"C^c`op^xRub6R4WbGAџBgǉi8/%1-4kFz)O}3f<[Ghlj},.qӡ}@ZU,}u'1ZO'Hk5RwXEИ(joyN Iq͏ )+eX
"AJBe\<X[.Qg7pc#!C,ݟg~<	%z
~X`/(j\y*A{wOZ<m1tmEmU.KbU0*L_Q[lRZc:((jRk};Nגo_,R"nN0r8Mh8I팈ڕlщU%<(p*Ʈv/ŮsihAh}h+
\mK$9`8>Rvʮ:IyGT&m*˃_4:&#?SV<
0bH06`-3V2SU3St'B|+i%)2r+pRĒ˺[(J&2H=bfk|,õ;ܨ)S%sS9wyx柝*f-g[5.|QM,̖ll2[
<`f8ekb{)	*71Ff36WE߅k1 3U/!!4fl@<y#V|ѫ^1`iLT̍&0YΎM\%XRYJBX@	ļک]PpD!CWEf ?Xך!3>3#OrtNZ<݌ݘ[a'mAIn3}N*=_!L
16zm1n0n%<r`pc.\$fs<	^wUļKEͣ伋cf<
,6OP	8>p^·h"iΆUYIU%@U<8-CqS:Mca9aL2r[	\sYI+	1_M$͍_-PL)
6eiJs[.Yx-C/by,i¼Fjn/Ls65͗2{ǎ{s(O$ڠă9*^†UEm/:Ap/S!QFJENLNӧE0qeq:#i=׻
F$zvw͵|s9ճ@`wT]
V9
ժ\~-`Qw_7c2N-IT]s>u?XwxD^#i/ekaVKv{P  wl<ɯ7d}V*<5zaăh#j=RvTVM%Qbl+1|]@[N\gmEg@jk5XMha
;q$x[,̩s97ˠ+QkeHeHP InV8UEȫk[":$/>(Q-ܭ;6r[ߒ4!	]bGN;);^~'@؉f5	;>vLDIW{q-Ёcv/d[ѴvRтI_x<@vRʜtT|f*BsiYi%>敐LeQ{K̂-G=W	a,Xn1:E͐5;_YxKܳ0trhQٍIOem{aoB8;7Q[7%xtz@A5
v}f
fP+Y
R}$ج"
FX3$R!{XqLn\HzQ(+SپLr{W6\4C*'z(*ٷYͭ7Yќx	.}4H[fYk}-!˱^]^vEayUD#A*mX1V3nvI<`}Aȴϔe>]n@JuוZw-p@׺7@~>Re;ȇvza;Mz%]ǻ1p^o~"*e1 NdxO6fO6Cqy8rFv<uv,[,Րs
/uQ{w٢¢0XQjgjv̬_
<.QgX[HK#h.z5m̶3TwD(|)=|l[w	{&w-`&A\jJO초)#GLy৵lڌ#WۙӲ緫s`.ev%i/|d=vQNb+Z0鱩
#ov;oS2i~4&Il$z	.e~.d{QGF5)	)~	Vzxo[>oF~2}K]?ˊ`u;s5ř)\Mqj>s͕?s]O%XTU㥆_޲֔_޺֔..g'IV
s_AxACd6ۑB/egw]4YJV:
"eVxg7̨S"!fbMz|R_Aa{<yjB=<Kf=+wY\m@jFIRbYQJjuN]VՅjbeZ1p7}!.}\\ךK!\>2OoīΨ;P&[BcMGa`~0B$KwIMIwNk;ZXJ@4饤[M.Ǎ]kjctj~JZM*T[Z
.NF)Vy:	o[x`LNܕkfY[73
|̣w(lv_v}1[/+;=:O}Q>)5IBE%>aUR}Fc8@c;/гwNx&q+yFzO؜tn, !YƅNXYNd8&h0kJxF+bO.=4)E6xa4/A:ݭ"$7l.XӬ05xUx-ğSSzԊFqRΆ
ft\l*r8'pq;>gf3sҹ>!H|rvBсs/nǎ۱ԗ#7Lr?,xDy8k+o0N%3+d$4_Ivk۔M/G	Sd1i_vwLLug)vMS0
\DȺ.)>Z	%_B8婫csM_RfBTr6VrIPJ.3M:W s'0$*$bWZ\כ(nB"KtSt[HC(n|9@ Pwx6xoMȾ	^IGr(rfWulO7>}#*_Wp*ã2~GKw+˝p\jB7.5d^֥ YxiK鲼łdᥩ2VrfYϟվO[lGL%a1R#2ճQ4zP PiR[tJ+n[SA:I+-@ư
oe]7@[Oz.rζ?$D:ZXQ]im4g4Iy)EyW٬WR^?蟦@Un.mmȾͿ7D]76-'cMʴ,6C)gs8]4;T	M(ޕ죑iٛ	;ޗKoRnNMQ{Cӹio0Uy	]QA<WKL%gKg~UZgx,<};KH723!ܡG7D+1&NŒH9{5^9WvJԁ5%Bq547?Ǹ@MMaD7agѰhYAȗJQ:YX	5z^9znXgk(SSͧ0u98l:{!)e$e+xr5-DJ L~+1/QZBÒt]/v-/N2f<ۙr]/_KX4L_f:Pok	,
-[
lǦlZ^D.h맜Z0?.eL-N:pb:	TH%݉yjK
^?
t,&V;SXBpQIdFA(ׄo	9_V/.``{^^6YE*doۆ!i?zؤEƀmcUEEcdhRQ8z\-8/jolΆ1䗶yǮCkJZ(1x^%TD1!-
/U~C*Rj(Tش5@K%fb&Sd)RX|셇C4q[ׅ|1u8 &]dԉ,8yuنq6,aE><Mr$̫rkj0rq;n<I68N$&;\ W<8iRqf4x۰Ʒc=U^(v¿/|61us9}ʉb}b9e6`feH׿e6z
EOglrKFKYI^9+1:Hr^Qν(vW:<+bȎS-1/}E0PأBtz50,=	myF.?!)6 ȮچȘ7j6͵vBXz_U?&NbVh_aoExƶ*hN@Y8^0vKsخ&7?>T4yN%Yy@ fx492T
&yq@/O=C-JɷlH;K"QчǤk;靋Od8)H6h
Vyk9Iig&;V ],G8XgOe@#{Ismy\G~g%\FIP~I+=E/>EnBHg?y"{ )1(d{7asѨнܨTڕdYv 0:~NN!Ѐרf~:M.0'dzw\RUߎ)5 G@w<4aNqqH`KAKAEy'g)f s)fLSCi_4rM:r8rG@Opvc2DiyEfz]c%LBo"r:Ҫ;ۭ4/r6*@x,zwh+|į ww!g[OZr^xoǪ_G}JiL "jtnz[Bzޮ7OuZzpg6a ߀ѩzАϱb:M:bqW9Zh#56:OI<ic@Tic;IK 8?4&,(Mxs(,Go,hT΅_|ҩ	/+yR7Ϊ{8T#7Ux8oU;5J?O-Ʀ
q*q7UYaVq(fA`)%A x
l"#[˭RrU)VLJ<|?ʉaS~*&CA [%ycZ%ځxX.-YG\<J \$=>.K=cV8~gW:|S[ZZEJ>L[4et-ՙxTw!у080F7D](}.%oliCLxdS jϰ_3L}a?__w_M60
+WIܬE=Cz+S)cIxƷ'f3N
w,B,]t9YN:~[;ӾYT(^RkTcnCp?)wǣ&j#'v¯k9r&zwr&eL~%κ1Ϳ[H1-3Lۤ͵v5FTAU
R_QJQql4ZRΉ5ڈxFwѫ%A_-9WˮJ6_:R-w˜zs߇3ڬ@%mY߱b&tD:>k]bFT`}?Chi_9gWNJ_9K8sk\]<jO;u
Yѥ<D3{l]x7}	1a]zÏk?
}Ok$_#k^ѷo#iQ,>>tSr=uav1dyNF*'UU~GFO9GJTjAp!J݄7՞f~;^R3Cu}(~n{سMbiMkܯ7==
/^Y?C+[vOycd,ex~fRp2b߅ĝx4/{+_6N<q^t/q&PKH*1  I  PK  C:U            1   org/bouncycastle/pqc/crypto/sike/SIKEEngine.classVsg==VͻNM

iŖS')K%˱[v@^KkY,D-(Ĵq:;vafw,[X3f~{O' 'pWw,v_/<n;Q1fiQDj3U݆3XW)ݴrc\F;#@
#D E3`8bD99Bx4	Ū:Z>2\GFS	Rj@做U8Q5YTtQ%?O6aw_D\p7kI/_SH1@c@ID=Y;asEZ+=Dpx(2Fi`s`NK74VLm7WEv$傖O̪s\PsSU%SKj\~\A)N29%KU>]LHZ0CJc$]4qSWVZT-(71tHJl槲d%$eJA:H9bO9z]#SԤ.-4uRJjrQ6%Ӥ;G
5$@RҲj!EX~Z@[T&RGg ԫ;.<V2jGvlKZ8E]b\K#[R#'N4;Φx<//Q[Ӵq@(KgrTZNcero/eR3
<n/<]P6I5>GEtxLE%+"$OCE7=D2ۨ
"ݚ̪5ӢequڊkVB/t7	WV^< }a892ax$JE	g	U	HHcRlc18$|N	: J2\-a?<WyHv	!~p "n/)RnD2L3f2fs9(0<Pd(1hasxʃ'5F-^ p=00ǳd6w<27ax2EO3|0OQmjJrvH)ĔzCov,;kHGJ.Pӟ@n]+{t+D#ƢC6eֻQ\?.s>4Gyh4~wܸNr/3=D(rӡ?Yd~{\N7Ɏ
/J5zN	p)?&Ne*ޠe<oįQ.;(.;lvgd9kO]2̗9lm~oz&d7mfu,՞oCC_ԟTsvE=/
jÔ&Qv?Ej.i/J*iF&)κe'sdW3|D|xGT40'>T7w0(ÿ5s5NsK&uc)oU(oP2)Z]H^_oR[yqeFaS?ѷR87HZ~kl7BoM@bK/CFmK׫d7ղ?3i!5qZ nA젒hMݲP3#J*xxV.3ጴKǵIYPhtyqQnұvcݫa>*;W{U-ng?.reE
ָlb\nWR}W]MڜNhUֶ7nm,MJߑUe.u7ҍW4]z=֨E{-PKx    PK  C:U            7   org/bouncycastle/pqc/crypto/sike/SIKEKEMExtractor.classUSW=KMkUaѪ@Q	FBB)Uf]J؍o_?XG:o0Hٙ޾{}睽}0(BW'rA\RON+良N&`|$gq1@fVaKlvNAfB!W7n
3aUwDep|s

|fqb̿n8:g

72n9y&
lRܲ88W$-JL(/3qj)Sr"iZaOz`x,kSʺUUKP&OE$zi^;w,y"	7Up♵eg%I'V[6<cطTj*!]x|]a[23C-f?fGpi+I=	
5y=Cܫ1.FkL5wk85ZAڑZ:cG+Wɦ*ΨVYU\PqQ⒊T\V+
mziBP(BA~3m0oiAw(x]OQh}7)M'ؕyQLc'taT1_GDt!n~:#*nMuƄCS1$q;wdkcFC
9
ii´iE0a4 Kprqu.zH)Xz8z(%Qz@W^P"WƯoLd56t:-Bc2oPOB-{)XnbL݁
ʮs}hArҩM<j.$'iTh{,PK\p    PK  C:U            7   org/bouncycastle/pqc/crypto/sike/SIKEKEMGenerator.classUksD=JljM!P(ȏTq(Į	Ǝ!!EJdɬ̯80|G1kᒸ]ݽޫgo ؎#`LvSALN~'/ew=ZZo6JUZorqMAak^-UWbt+Zm
zƣNty'Y5\?dN3SN9]_
.;~|d+d>`E߱;aף鞂M&
nY4_(Mg',/p)AKE4D6Sa]ww=סpǶVSc
ݦ^>sF/oZAwz
YÇ
ca!!
ut%O8(;
p&VZrN7:an#:A3Oq=`1w/MZi,aF7mbmecg
	"IJj*;ԅ+*fTP񦊛**RYxW-3s4S0;+z.rNUD2IA9yo/+$#nNqX0/Ӊ|-3u7^D(E,Ƿבq_TEbG1Zb[:6RoܫI&x8>q:Qq
Q90pWyo`AU|c브Eeb)XN k04V5dPԐ7|a+]*{JSZ6IItwtZk(	8Y@ͧ0|?QZ>6\hza(D&P|D	
KdڳRtv*KFdHrNƒCl
9PKR^Yy    PK  C:U            B   org/bouncycastle/pqc/crypto/sike/SIKEKeyGenerationParameters.classMK1cj] zk""=P6YT(1[*
w2<yy}zp6CГJ#֌H1'G2pmf\/TVdº+)rSRdZ}&z_:{$>NŃlljWCa37[F@gBMO&я?I:"045P;S	}*O8|FX1^{Ir7PK'm     PK  C:U            ;   org/bouncycastle/pqc/crypto/sike/SIKEKeyPairGenerator.classVsDl pl4)mR
qIpEؗؒs3cfh0Ű'?p	nwovO   
#_n+Z6Va#UHr
|f#if+Hm2r+r+U
;v>pDX0*5Qu\vULUbQұ]O\!KԫU_\%&HjEf"M0=KEnSi
<&(ꌜ~RW+s!L{ߩ(Ӣrfٷvhwe{yO0<}mٴƃCfy/uce8h95۪[땙Xs)݄nnC0hLpmd-VD@$ؽG2a{=v`^pLx<[.?b,/6{(ץ_]]@l{jUpyJ]U1
oxKŜU⒊*xWEXU喝`6;-
.~snogSXT)l$ӗ?v1!+TEvwGȋ&9gR>a a ;)1$eM[hw]<W/Ξ-5E&>|:>1:>1#$&te!$thXѡ3Axwuu\Ět^")Ž 
"t)"7:k0cdJk{ nbKO^~Ig*"c#0&q CШHm #e6_[4'n<ãhPRmןih<~X0
!e<+56o=oX}r8

X;X*X(M'O-MM6/>zwYڬ&T{f-8PKY}  U	  PK  C:U            8   org/bouncycastle/pqc/crypto/sike/SIKEKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFF#}0ř٩ޮzAeg`ag`ed0!	֌d2Ո"Yf'#';/0DSR"@fJUYL`67 ālf ͭ%_Kg+Ff."A Y0m K3  PK     PK  C:U            5   org/bouncycastle/pqc/crypto/sike/SIKEParameters.classSnQ2 jBX(X
jk,H5!13d*&|U Kws.wR,Y|?|gܛ;?~I
S25dsuOgڊr\[U0m: մ
yvMpP)BI?2II3_Ft=HϷMc}Z}y-輲xm缴F}8Q٥w{vG{Ny`ϭ~K#ڻ~`ia R+D¸@:>u沂)zQNA
+.p1$q%$C!0͐e8Hge8p-syEC)KXbQZ[޵I
Di$O$8-yZrJ`w'6HBǅ
rUda!*#l3<<D#8ˆ8¯)|A(o##"	Yָ+	
10rqSPWXC++|`'_A=,Wwd/~UWuM5?PK~F    PK  C:U            ?   org/bouncycastle/pqc/crypto/sike/SIKEPrivateKeyParameters.classJ@4izЍ4
(..
BvC	IL|(o-Upa]sw3o `znu_8C}PX2}HzP%V]eKd\$Oo*Ou³FVvRe3nuStPP`3x:J:տ9(80PA6,ۘ~Feb
{ē2H[ȹcG/Xƴڄ m^g;D=}?'PK    PK  C:U            >   org/bouncycastle/pqc/crypto/sike/SIKEPublicKeyParameters.classJ@4MqF! *"XB taWt($]ÅC
,ܹ|~ 8&Cl[%&gI
/%1IP8sEGA4pēvx/laر{+N]'rd"x.(׳ϣI3HCY`82[9<zͿfcE
CECET
p
R5KX/(SaMHR
ilPUPxK:ufmi{BwRv_jѐg43#PKt+    PK  C:U            0   org/bouncycastle/pqc/crypto/sike/p434.properties]fuwON9 sQA.&v$@-H$Rnrf|VS f4	v9U{V޻[;kqƛ?SL58o\o&qŸj\o0>Ɨo}o3LxxM_¿|oG_|ѿox]]\%kZ}t)<ZOsbmq{{Xk%uc:ەЭol[[mܣh}jyTejeݲO)խ]S4m[	9xbs|juW]uӭXc5ݥR-s0c0|(gƨ~>)'Bg8G6,ψ:ݷuzyrsNW[6MFι8RaYS]!^ȈK1đat`?u9sl'[
~ro}r:O}v-xwyb+!#2maG[{C^?Ry=OK嘜c۝9;=}VmmϔzJL[|"j
gaN&{l=6˵>zwlg[u-6xY4s8f0mՓ0 o[yYN;vSЊQhمރW,!7V0GeZI:Bײ4iF;](iTy?5?B޼",l <q3F~c)pM%i0N;so[Zv՚{8'z`Oq-x6s^q6LKX0+nuInw7_(aD;h,w``vJ:fqd09Yuz7s-1dcF
+3zڃtY5b`5F픆>sAWv7E#9;փͦo`Y"뀏[eA v̭L4`PWKmIŸ|ۣ~3 k`%&HsٍT:./֍1Lw_{۷))=)m'v5%v=ػ=	'd맊Omʏe;ϱDWm^)Upd{m>2>y1]fU:~<ܧ{[/ajӴG<`uFc	`vn%1-h8爯zf͌?i:u4w/'88e^x;.dXKlzlq*g3u}0xbm~W^c	Ld&UbF~8"x׶k)',"aZhαĔ/~0']Y>3%~	F}]=2\8zR^!msv_|
yw|7?|xwoo7{]_}5% *#( I+Ŕya,4#gܝI"e3~j.V'Q/]սO&9A[4[V":u0Iڼ3Y10)	xow_g|]D,O|Ʌ
 6P ,@첉RMz#"u=`hyTo]iL~.~N߅
0/×*~te!= pClvj][\DwOlRǾ KJ0 ;}'Ó#s6}O:`*+ PɼZo0/С;coEFaG[8z!n7&yDOe٫X^"[wW#%{m01jOʳI
:4byN'D5gLL4TIvdBB	fhG#N`jQ*)%bPMT5sbD$'BAI!G0AP.n4NՑn;&BLtFaue<|tZ.Tj5a0Ps8k#mt'MwH0Wݑ_$n(7TB\k]`D%.A$:`I5fnw۰[2
lN;Ja8ǰ!f#6F/"ޡA& "u|莟jn`ͯ~x7yW_}K?5w_)+˟/=AfQQ^a@?і!G4 Ls^pb_j,32Jl,/{0ޮ
"y_z?]_|ὖ ɒ.#([@oh)P[bUȻm^lCkz>ffX:h)Z_Bɼy;1DIs\i{O6 =3Ak<AtB)!I[״zPX!C<&{F/Ӆڨٿ}o*χ~~|/kq/9-{2Ba<dݨ4gB/*B@Ao~~wƗ?_o}7_LH4Pd8hcs}%"|&"5&ym_G=}&_^3ؓzuJ:([n`L>i],Ү[?e=Іm<;_WF>߿Gk{?=ne?_//_{z߾gN?G៿w{'zկ~{_y}~;۟z|>~_eG|A#ZEݷ|;|_9~O}~+~o??A߼fZQCqi_!Zc?|ڈ0'B
2q>I7|&g}^ l`WK39	υUಐ]-甂>_& ug~>?1d?kw_~>hDf/% _v7d~] ?G9jw
tЫQj&VBǠon}LZoj)vo
ZN>3aL> ?	qۉsP>ycL}[5SrtWf脷/]3n[k)x/8(.ۂ-UvUJ ]\lq7:3瘔ݠ`L=MHjcrt^JR"db<8=)Z!|F7\ouя<pz
n20!rhaE7TۉsLYr^~ŁV\&1=T[+W	)oP>.Rf#\X96tfi쐡N*vH$&fG Z?g-
luA/e0j
@tX2^1jzc9pϱ>?6\S.;(Bٮʬ |
֛N,~~HV3qiy.D(g[Tχ[t#1hR5SB * q<x@ES
7_lBy|*e!T~GrYǂ5#4T1Á|M3d>gnjrZ<s|U&\ح|m#5;<a9LjbL"}A\!$qixL5''"	4iSs³090W~=$<Bqq|N@ڹُi}'"R[J~"Z.KTff6l>'2=1$puᠮg(f5gpM2^;Xʮ	{5 .Ǐs[-a$k~ul܀pyba_gωh!cdW!pi)f|hOZZ3
E͘&RhR2|39ǽ'q͘?k_wWmY0"*.yv熰JB߲b.
oAVKkڀ|.`P wM[tvm;[mC@ϱK.
hɭqvIvJ9=WRןb&	9~{F#?R6fN#`vjuMa~D}st?έݞ@ LʥBV1N
䞝SO_dBP"B6?h\*9uuُ7̧߆|^KɕP!@ryYp=M9p6'@C
=/F(h@S>1Oh
C$"I'}$?b	˄u+X'B)
ko/GX2jMׅu@`.xɂx(U1\ӿ}'\iδ]mm;+_kQ'CK@^<mπF"1?(zM4ގݔ\kÌjk @`ыOm'C9!\IȟWLƆ|_u?_p̧:\+W6 <0bd/aJ/hCŵ\1ya9Л**n/cƻUPhI[֚:
/OEk(f"jgL٥ڹt,={Z'xWV̐I>׵)p& UN79JƊ3$~ `M1KÌᵞ,0.po0x{|V`}.`o.Tjg	Wp qß緍|'0K%S0ay`_ك\빩E)LHg"ڠ'|gj#@а(Xa=z%2>mx[ujow9##iVyǙve+7pHr:! 	ZؘDvǒ6HJ`IkWUe߂R&RC2=[XmͷbѮnGbX]Bv'+[|AhɅN_xuUfzR O6fb$oli;&Ğg#c7fhgUѝ[ <hb4a`M>٦0Nuo/B+JVI2G`=AW81eBŵB[gi$Z[{IDș<L7:	i@D|ՠZ;*~L+@6s9}թeYH4#)EJSE]w5&gTb+u+Y=.9a@?#SvPp-Faº!#SK	k2wa^iU6@_j&:u(?i4!1v4a"^?KZw"4NL40cðÐ.0aՔ v&QUb5z#<(׵(QZ`71XQMm3{Q qW_/([*Nߨ2G }ÁK)XQKr
?pJa6uD uH6(RޛZCaP6WڀLBt v{ XQɍv3co~g[`Lk[y5R
<h|5`Xealw jFrUW.ToBg*.uG(faC(
N;״-+C e9D:Q_:	|lcM΄*pGvfuO6
͞-F6Id)P-Neڷ|RJV#"E}{?-gl&_4Ȇx\*86C	3)$len	
TyI@c ,j+@kwF,f×	#	A蘣U>D`@@QF["c	H5&{f$BJ"2
@F<wA⻖Sr*j)Tm~`[Bwa+RhP;xYja?-VG\<:t%y%RIZax k `<M>PF$"kع25;߆"JlbK 
G/0u035jÁhqnىQvT}@0݊DeW2uUsC*#ږa"3HP̹ؓehqLz#gKib

[\bSn$"6O+q/N<,֍wkԻG,i[b3
GacPg=p([ǟabwd«h"XpYEJjC$W<A:w<W{ `zpT rIȴe<Ck
Zޟ7ǂC!CXnVk厬(gl8#ϙh^\ C%*K%:*k&0;d SW:a`xӎiUWhM'T8Nt,'*Aue.HϘy MʰʬB 2
aC.LC\K'צ3j&'O~s`~共0+LzׅN[0՚ #g#8 2|9\ЯP	P8u
J?I?kCDU0M`*1]~tdQPpx	[G^0py[[FJ'tme )L9+ ˤp0T0,!)-!Xn#}OI+]J b 1"-Ai]
fNbP7ő՛ 7Wz+F2ƽQkx5& G7*hq?"! E$jq撹?ŀKF5lLQ3H]ˑvCU"Md$RQڛKp-Lf=X@~`y@r'28 6*q9$t 3a{0@QJт	!2P(%W8jDm* x΁[w% :]Y+^LSSk:S}:	<]<2U|s|֯VyAG|֛<q^]_6"7-9u=PHhc1^uH^qcP
GRK8uoG!_
X;QLs}o\cㆰ2#!B0͞- ǷϏwN҈
>!c4"z㴋48IՓY^=RapDMTuB7A(`uLBj\c56İy~ֈlm ⴧ3/|уN1)T#V6_QRGaPn$nZՀ]ݻ'
XKC<\[6-H{ŻaW
jiَzCef"%CO iS턞X8 &m%f;-Tv 'Fy(	zAK%p ԄA'	{֩7X
=!"Ao@3_8Ѧu  sPsC7|BkzD@'DwLlVm1@vF7RFy9Ff!JhA tlkBK+=w|6w1-t	&CϟiO/QekQ*sW@2Wi \G2M[BĂQ=Jۇѹޗt$JI<sꥀoavAF@e]0m@@C<A\9uvi_$$[^f6-l
 Q!ƫ
Z݋lנȴ\g;aPK\d|>%1dl$ee%+'L;
 mhYEK#@Y1`S~=}pkzD0&-Vyp~#HuEEK*rˮ&0<eNy<"pW2^$B1@P>oضF5(VP3%V`0%bӋgغDʮiEv`D$9S+WQ+EH5d BZ&j(q̆yfph$Į:ޗaǰQAБ
zaclj}񍮷-Q
6*Vz,YU
5owȓQg:D""R&wQ̎{]=6)ykʜ[-1z&HS_QksJ:xSHQV]sEiC
';m=n#K(=MZWD8Syukn36JC©Z8Kmʣ$xx@
tB EfN7/JM?y7vZ~%'d2-:, $1Dp:meQZd7iHYTG`>To7t.XbA(2Yy}Ee:^Ū
MP}yT奼?G;u+D0@KN5ZJa&
3-,op2]n)-FèM]
ywOOƴEP#%z:yw5>y@!F]=nĆ̦Ȕ@Y%+cm.d"gCO$ނ|_*'+ۏ~fH;s+#͌hQň{ ü@N|[>_yُv#56|Am@h4GZX'͟뢙M[@\$tb%dmqxLm?$uz{e7wֲ
S6
^4PaV ;2.;r]&յ5oZЇ
 Ehhs12Q4"G$:r)ժu7C5o`<~.BXNY+FSoܳR*,1[3vmOX68g&
&1 $=Q]ǲvABeZ7VX""	zڹ*ƜSѠIV+c;сys].ЀS!9(AƤ
onQ:O73k}w)2?|\3of }/uˉh6 Ϝ&$*U=4 M8X`2A\3os`*?p5|.?is">HJ(H+DV$mTig	_4הAS+;LE5P/>yN+u7PP@uU/r嘔AYp-EBVnPGB	|0bʢĦ³MH҃㙫НZDcXiX0$iyZVHMrST8;T#ꭍfa¨MTU<ǚMBr2d5ǈx-
oOPfBp
=ԉ aBL$V$ZEDiAnB.[jX+1)ɝUWvCOD#Bc=%z s3B%lfP\ɼҏָ	R2|&_W: mm4Q K-[+4cN8d]1kfW?0
hZ".ĐP<uu/N pk13@}C9Ԭ8HQ(ܪ@ג@imPsLvIO-P^T	2	Z4<`,QʬXAgtTe=(~lևzNΞ3
[KF+Z Y)&^(&MM<{"2:Hda/hN<D2CjU_CiS`1Ը.N8^F^_[MU֗cVŎ(_"nx4!Y-Fh&DS^۞Z<؛b d)1WwY;O!;x婏;~DML,`2jsqWqbr^4'KEA F$2A!Pյ)StP+ɂtFfV1k
2=fޠ~VN
{?TuM%S2p	&TTsqNKX|Me|KJ 1 -,scJ}AUCzm$]wL	*e$I] ?FPoEd܎P2+b)^"M4Mk_gLp%̸f&Ee}DxeWmZvaZ}-$D0"r pJzF~RBM<~ٿQsH>L6DtU_9 W)v:o8.^4V)0G넾nӠL@E$~"bo8b
7 yȦ!hMDC)NK%*
c!et@ N4UXOJ8Z*
@bzvIbA) n$32иf-TvKmPNN6 *<H>bBݥ%dr߉2
ǉFH\JF9JZR
P ;D^ƁڬAm9VWPT©Lvk G4%b85֊#|V5/T ,CgNU>QTk2|%[^j,8ZmW
ޜ@M?C( Dd5R*dĕ(mTRiVRp< HJ6(rHjn&N_/ϋG)/HWtu%nKMqټAyD3o6E<@f'jyT
|*xLWUSXSEh#u	ye"&42-ehW>-q0]F'<hmJ1:b]y+^-q.}u,dQ˄v)H^C"EgԒtF"f<cybA{%5xn%M9op8&'BkClUzk"hU`I[	A_wn_  
rЋue>ki#EC
°4mf͗lQnvZϦ|
!wg9v`ER2CvA?s%uKcFhD:la8Ra!AnK͑:l탌215㺪,`>._×{5daHJ_2ZՒtXL[pD+Fˎ2㑀$P-dG:Ϣ
xT aڑodQNU1l&,W\*h7-=kOM	UC%QjY* |tt/ߋ(J%?c+iA!@0V%{ xC:FԚ]iGJ'*`W'OE	Ai?
c骧7`V'`WuVT
NZG
0L!*H`%w͂դh*VfI.v:o4JV=Sj@%6z1xXﮄjuHAJpìk$XۣTf,Ag&i-G̭`lS5^]p.j|<I-Wj/hC
peߗAa}Pw{8tQ"uE9{G#HZnҠv72uVfDTROeVPfPeA@=<,'xN|_Tgk0A{V9l_ot!I!Nм¹"×h`\k
Di{޶i-IZH.^=ÑbN26ܘSz-mh-
B@"9dx--J++4K,+9'Hw-!p>ᐨR2t9xk|4Fr/u/ _T.#t\dE/r7r7:fbWߕT57-ĊYkB^sGtphQ
Ju90\K/}
2/1|Y4@ B.Tm4mT-Opnbb}7} î772=~XC$|lNCnI>wY(y ~IP[g3[Fl|}>gGk!H<FWjLHG<pUJ
^DDJj 0<FVIfQ:Mgں1MF ã>*(*y>49`K>eR%*u~: k%*%M	̛Rz&\WsSxUS.VbAc,/$Rɢs&í22=׏q]&2ZbJ|[(BTXJpIE43Me^^@
ʰt࿀RgTsрC*LcZ<C!bAAif$f	jعOVBql`U9mh7HndP;mH>@{7zݮ[T^#@w^=GwtꘊtL*^}o;4z8~mBVaf[*cV56wuZPw6#B'LSXҩN e;AJjj#CNzpuS*b	 .
u/CP"SHPo R"uHMRm*f5E=TbұZ<Q }ިXm[;VW@)vU/67y5|]i7@pAv/K*)8T%LI4OU]n$Iqzr*B4*&*~T3Wh!"ax4@JJ.M9t-h/&euxLjD-7$6d@0heC9t?{Swj5/
t8.$R/sb	jM>8MŜ C]<kяEKYh1&	]pSHzK{1rK^lš`G@$ƾ6lPs..wˢKڷjL1n	\U?Є"U]΋z4'Cڴ[
/1f?^
ԠLYP2%Ex7--XjЉLׇ94|8sDǮA'C2wi2![DEk3\!+сϩ(M-5츥:QT|,G0A_5]Ϋ^<Dʏ.$TVY]AxrGnTɟLJ깬zĄڤuWRfZ{%Qٴ:*`]bY
U1ѩ
.f$D&)㭑L.BjiuQLutB V%pVeb"o0,X>:`&>^9ձp0G"ww@ *xƝ'C!֔Ŝ>AlIzI2%e;!zEh|zT+fX,zusϗ!QD!j#M$x!	'q1}jTՌ\Rʎ:k̘i.Ìzһd@ ނXJMQ|VbROEۄ8=8@Ml/tU~g:t4Y9WDר8UDB(1(+ǂD
e̩YŤm	a~y/c|Ͻkڬ4ZNRD= B}AZf$zl'v/,Q,=sRj:vppvXgQbSE=9i{j]1N.Abi\GfЁ^bT6i|aj"l^T5iJb{ҞgӚ`t8UFuZ*m]yQⶰ ⦶mh
Vz%d`iu]03Aem:=5ٔJBi	3'[1Zk^n<ͼBJRCMQ.qC"
bTWKM\.ou`\LZI6[sy,0͎;me2Q.ZuR_
*n5KeN:`Tc6ۖʝ'Æqɍu:%$Uj(&&txlwgpR9H '3?uڥ"c@q‭C,:d-Ɲ=U"o{1ub(s+R+YTFטʠ
 !QUr՚_͌ŬQlTlB0.e E/GjQ.snTN{!u-q$kPgH8Z|.}F9~!ܴt.DIiǡUP/ >3V&,ST	"şۼ0CV
Q:xA@T
lE{T԰7@[D1XeZ.O:I}
l$+f-%XRWnQҺBгMCNO}0,(Jo+KmJ~И,{fp!nc=& ww1|Mu4{n4?J/WٴZxZVք4G#|,mI 5dtQsKr,<Z#=?=+_vZu-!|sO9Vvm!ZT	1
Qu}<&	B.|\=tr6Z'SIw ^ ݇Tԁ
ffdc#8=xժ53g>+	Qn}hR{	g8
8q[*[NQUNfN1'&]8MOVQEViup${uQMBD7oQ	W0j{"U[5v?ؠvhZcJT.K8Lƃ[KJf:@Sǿhtm82gH;.b\QD
Z;dZկ6Sf0aby,tvyM%dY*,:I ˫NÊ7F$Zh^}z05F[@U:R?aZ
tYs3fc{Q&j^v^e^^5.hQV:!H\G5hs4%KWu%.[y8MS~Uy
:it,,6\P|8$}OtcXS@cxlvnuBہ-JOKH[$gcN{XQRNVn]G,C
*RJl +讒\2ߢ2@\TR3Ƀ9Lt4:za]efw-3bլ-
Wƈ 0AQw겭V" 6UsP]1N}J:A%
MJK"&'5}Dz<aSŗ(%hC"MN!:O:8RnoPب}ϡXnB@OSUur}BNbN<kM:	+kO+STIs] CnJ#P]]1YөQ	SϨjzt!e
6({-Jb뷟%*ؠ岠ĩն@uIӁm\)eaŊT͜!-KXJyjW*ʯiĢ3qpo/Lƴ6LI?@K T#,j>2܂0Wqj)'\dZEסY,m;HY/nI3>d\Zthg5fx`τxb2m..[bM{^
:M
r%^rO	 t>hz 
b~KM~~#1Tע4Xf%ģD
6gjk'Θzj	D꽫ZC¶t><>^5oU2e<n`H[Muz6_{4Qb)owvAm[)֪Q#Oh^gSmY0^f0.?.;hrӏßpUԛU(PQy3s38*#	jS]œwkETsq*Tt4eJyI%:.Tiڍ+awꡦ.݈2-1=<قmQvb9% wڍZ>
g@?Dipq* CMV0̇Ke=AjR|?L)?2>
w;Rl()ourZKbDߡ6T	UujRi Ԕf|n^ŨaFY.Q*
nh@Q+OQUs`,RLA.8W)"0tJ7N:E.)=jDZx%:uKDmmF3[B*³a{QPPԘL/`LZW*Zj:nB˱.C"hs@6JRӪ-U?WWD-jt1` jT@ 11B`e.Hatr7KMyIVUk:تq&]S5Q;sڨ
GZwrk:J߶tT$|:#ˏ$	ڛ+%Əh;-Z e5Ue:DQTqT[MNlU
O٨h5iʖvVi*.,"JPg	HW_iq:m.bP'[Ү;NUGPYDC HUtT!C2Yir%A(hEA*LGVJRO)gpԚCI2o	Plrwd3ڞ:@y(m-#jH䵼iVW;x|S'|H!*_UkہZ(<n-0 m}qROYs~Pjފ:LBDJZWa"*Ȗ*rךBf	ǆ%H5R9"0fao;2P!,`cһ"j;N߮P܊Z,<Y13=OJ$t7@YLy(Z͡Ue32xmdKzW.kgd =CSƤ\	QuKkk5#;xS:A:VY3hs!(mͥ{ʷӿ*:*5@5fT=9ί
%	?sq51n:W,	J={S[V[՜wՠQك"NW| `LK6M9y[%ZV|JdeH"q;W5ƹ3pWW	euP20J270ʙNlnfthΉNZEkB`Q$ƈ`mnkKt1GY/1
8U!CXAwE̪R2QITW6:VkWڹqaf-Ug"4n,+/HY<JۺV{\Q)('jlHEHjIm@	@nVul ,U 6DiJҪuSg
-QGnvLZ뛺 cՑk6o3qf(%bHmxcJ si6Njen%,bK;Dm
ZZ7U=T
J«jXnX2Pa9yo!(Fmz,&&̳Rjq
;8ȰZXȷ=	::n6fU!3~ݜHV˃R	>GͱDF{pJ̓0IRML/VhPذ"Df"|r2lgOtx2MBܲc՘ s#8)ly0zŁ\ZLrы~ݽܶWӨ-7!3Zy9+][ǡkN:B/Ba
p9҉Gjŗ[v!AP@+i?ɤXڈ(fb?&+WOtCkYz$?`ԫrI?|wcWYZ U"*z?}!u%uRaų'%JI}
d";rʘB,5eSAI/$8	}£>|,F3Uדq5EzV H?*f(ژq.cB K2';UMzUml٥ío:9BKUZ܅UmzY5QQJ\=%e[uOD
֨uf&7j!"g=J>ԲSCP7+5HY%b^(}tq*>A1{|`j|ZoVT&Q/?u.;qG^eʗ-4l9*ߡ
-ժxf5R.!|wY<INK|8]PimsRz&!ޔ#@n#6FF.uiJ((M^fyzPG%>15[?ZPrR
9	W
<|{5rK-#X*#*ar	VֱX.IG?!,@J,.^2jE=1p!Vwq֓nYb8i7"Zj鶪4dZ:AZ	yԕ_v2-S3gk3>
MjTDT:ABg`/XlF=->Ī`h5:*6UjQ2>['@Բ.0Oj4pHMV!u2N*s@C֏E%บ?T"	##@A*2g
oRwG[@VRط8wAL,{aRJ5:L(IGBǣaRsޅւvg7:%ϖ(2(PXNy./Pc	(	DqvA@=E$	^V<ڃ;:M#Ui`_>#( 5p	ߙfڔQsicwx~Tۭ77oԹ-j;#mޢ0=ngC >SLm%S1HW%~M^0:GgNi73!H^_.6tA+e|]_[o&onh3eSo%u<.֍JP# ԫ{&pWKv@ajܪS<!;2لJM-S)	&R	rD0QdJpRtēakT(<شp$pjr "ZEz9%z^)GFm)SQu\E@=.YuE [zx.!	Pg.o59L\-!!A٨8Wf]Y]D9Ư:gG =nZJlն'1Jlԗ^N:J)t6!#4cP2OQ{=G\-lR];"^8VD	qB@efuOk6jIp0[ԩ,jnU5H&$'Qo(6Ve	B̳΅HGYmyd4~
TS3 Th5ej2hƧ

ǧ*iOra>CL*"8zSɗGq(~[ %]1rGA^0e!P(ESSn59];*':5`tPR^tףAP>0GWu~<U
Zf!UMI"SST(eqcN5)'kpu,R]I4'
{]3?:hn$8[
$6AND8f4&HaH&ø2B_ZI\6XP

~[`[	{-GqYHoxS'ԓrn%B5mVNb
,NUNlTNqtGuVFS@;G*4od}tg:-U{J
q &)R I$keSO*e
+N&eo|BN	zu)Cl>H
cp:Dżr 3t$r+1A*bns@2ܭW-:)è(T#Q%/ָ>rG1LJ1cZcmRIZ$E,2Q{(+˄i#kGkwGt(g܌?.iiNUnΌD\PVuK[QK
Rу?:7L*pS+L2$1XmǄʣNzM)(J$|tg:0:ZqVr[L[AaAgG@i[EjlwAA[hǬJwV⒅1ؕHTAql%Z4ukeQcy9(f2Des:&Zmy[ѡHNӖ5t)w1Tu{bz˂`ఋ4'TX/=
-:Ճ(ݡuB˖Ս	8j.&	ٔ^o@帍o%qQW@D[#d0<?B-)7 +uOf@	A:7+X/WT^?(ȩ4
r|̓5;aj:p
AmִBhF:(a%
LXJh'q[QLqH۟QfMB2gN/1#
Nodt.Y̲MhCQd]篯*3Bw3PIY89˵~-9Wg4߻%Yg3ϕoQD9\P?~ӂ+u9&xuJSѳ
<pK0~ F&[]2wIY	"K/pQdBNkNwPcrL W@.d-ϛ/˦OT3vB4QC֘!b.{+EVcx.]ևERnȴyq7K[K
w9Zs o?W(Cv߁YnV7wW\=WOvWL*h{,*_ԛA#n1|1m0·|"hrz
ݤzȝFn غ"M:>^grCs,; * Y\PpbŅ*\QI8u쀷3MV3mB``_ GK	QAA^dOR둗>S#^#VNFW0B9iփp˴|{St+rB=.|j5'MsyEݫ/,duJ[`j`L\GJs]*.# aBx/NB^ XH1o](ӶPۃAh9&r]H9.u}Y~6Kx|4-PKٸqI΍k(Tg\uF`a Z݄&PsCJRv5D1E%.&HbS=CҥiKOXdp^|}кWpqu3ect}>y}& P
>"N9nMz=5xRgzm!p	z4qqYgTP*|@ C^|{EUT%\U9n0 vI_m9sM,x&Cv 
k2vJ!m4x4WyH5蒇!x,q
]>`_`/~PIM	Gg| g~&Lgo-ibOd
zPVޚF7,gwkR͕e*duT xrSQߠװ;9@w]	ߣlVn>E)$E9J	Ic4v6|Q/h#ʗ3͜~0iY'#w7*i~ԓHֲ
n8/8+7ZUٽg^-p,M?.O{~K99Ʊ :)gB^w )YBN=fZa	G;%$?wWI@Dx;`	y' N_+k9R0Er[F>Y:M/Uo6q ϠzS5 YEzyDm
.5DWi5L0d<n]ѝ5:68PeoEg=նǇBK2&H)cdmI᫰I:pRri`]a5,MglY'ʇR8ٝՄxUfϓ2z%Cy,--Ϡ ?}TPQ Y{c`(7I
TB~7wt9Ж`zܚEv@UxzaTt33^}KWW=BW)d*D"po<`3%94IIE|8*lPZKsw )+X8Ovt'oAl;zzܫƝ3-rCW6o#)Ȯ~um^/KxEu>SJ0ֳmniYηM udt77 `nn1
!pdJйL
{,r&
zvD^$v*LE}ع"k\G(OvY0r'֚8b@?S%[_6q؅)Z(;ö1QkV9gE}n}׍.>7r"8Iutz҉ w:Gha΍l?/˫.E5!<AnBqݞ οN|Zu' ҹY|\+k93HBe'B<]JkVkx
׮l8<9(`"j&3A?B]޳PBM `Co8*l+C'vB5N>ծ-fXoHV8XQ;iJ@
Jk1*\وEIǃ+l/;mu9}kC;񅇓?j$[Od {<[?7̷h}!9)ik
uqqk|,eXYonnEJ%2QVn!ʎIe7w.@PPk}w(qYr3&@¨7EMBxZOz4B]Uݝ"TBtykV'fxtHN DxvU.1ܳ~m\Bmh
塷[W0"^FY@#.-I<Gl$!ɡŪyԛ;EG*29:HBJ%[Jv[SsٰVG 9"inZ78+84P;S
g#k	a<X'W,hX|E5fmsIm̲z}k{JdW\kIin)~/AU\ %\䩻tLW"G݋J`4+C}rىZGG	d_]	ǭ_܅֠[h	6USN^r/}]> +wǷWs^U6
9az*;UG4CGiT|"&CP|a!%6&r u')}?^ܡ_5By+D4;	_nŻl6uZs6p8E zȃ Z_0G<j_3a*CW\V/<7.e^f:XܙQ+9?	ǋ_=t+^U<PO/^TV53U[v,.ZI9F\T<|u(2nGSI'#y_4ENt<[
Rj	\u~G-](8*ΗiYde+7mm_y$qM.orztNϽZ',l*7e X厙7C
_Y|~Q9t'$K\wIE]3 /UG99->M0*rUk䢇<ԾÓCJum{ٸcXWW; PHi"NnzSSSV456ﯵh"ڰhBͣjtңB 1g+EP#1%gE0Ԩ+1nn-b*Qo'IY -oYb䭐@^`ELfa[{p@@~"ONnv\~R$8. 5[{
7-3
~9W%`+4?y<Q༄H	M7޼W/!WWLqՇչ!w_٢=Οyv&gYVfSj\m3_ 2p{UԁRp?^JO]Ih@w옝/XĠ;ݝWgƶ`zd13/8Z^+v Ep-/&k?[F~p!/KojUuQE\WOe%
'x;B{+',|r6.KK;.D\ˉ}/cKfLM+$x펹-F1:RdP'~ !	Zq	5=!O!ܪ*BDԜwWCKYY7S Nޅ.Yq^PW9[\uz5nmQ|qݡe49RP1&N"6uur_]-/n[ז9( NE>5Ndzet	Ϳ(~Ay@Dܺ(=TӰ8LFX2ODqnXPNԃ֞=rvR\'G,uXȷQ]>soQ0BoU6.0b1HQ]A&$?7CKz<T̍qq.w~DSg
ʓs6laYxU^bH~,i9{n/ΠEϼWc{r-
:gMU&5@I}0Ӳ>ж۞Þ9C* ;c5d&2].{{A7,vc;"7/抌~|0yd̷ԈUKQ4oN٧.X{*v!ًYK9|FTn-i5Q"(9Q{uRI'em0u bzVWe;oyi4Vؾ:Xq|qv{\s|47p,~êJ4sı/WpK+1x+>+飜-ךjrs]e<t>ỷ/?m٫?98AcZ[`)բ~YSNutޟ:7L]19KyMO#E֥(C`Nq'r-y]#Am)htUS84OT8=U{]	_Hwnn*Hǲ/1$%p:;4bI"-W̮D:bݿd&4Ϲ;+vhPI6Q(rׂG8I#n'a9)nI,{zv3o<4U/ڞKs
=28ܜ(lFb6[Μm05{'	+wsKv7
yA܈Ozo}2Rk!ifUNC1Du㈰ph-p'T{	@n&as|%EDs"Xc}3eRjgh<xe,QX{BO᫓܉<|*XըrfQg9 Aq%7AD7{7B.CJdz C MrG>
psZEeƩiloCߏ*HJ(tE3kЮk)y	JU"6h~iq74ƾ0F}sي'ȸ|th=PrIZN1$3	Ry}Ue_m:UjoqS[i9PAnPԭ<_|tK	\p6u<J9mkݖ Qensz9OZpыjl{gW=Յfƨ|5 *N_s`NMC#uqd@i7;;r7xCHz
	81-(EzjZMDٮMYHS'w%8nE5$W;?-pv] x]
-7+V?5-sK##"
i9&.IB%rշvSAХ:%oTslZ-7ZIe$Ch5pDRU.v) 챆0vR{	'	Hxߜ#gzKjJT'Z4\ J?8%,N$иE>M.?+iĒ:FN
H_(ҬnZpLO5D-򏇗ź\ۻ	r[?qN5$y\gF^Y+aLjf4q
<#XܮHGWs(XVMci2{ii[~JH71ּ;]4uw-dUbcCs_Ys--fߜ:]5sp}^hhuk_|H0If]ɥ/OpUNE0 </p/]8CT'<F.D
Sˁ{'"DN>)*E #B 9Z	:p3V}ksڲΰIaX]!xPC0KH*Qs)\GF~7:΅bZ萷I"Iw/܆ᘆ]`8u@
׸NM߳Yɢ]
 `ÕK'ΘVr:Ձ{y23m=1e"~*;o/LPKյSN8?xP9`Y W#ŝK2&m,.R!!'v3%D+ҢEO+5hrNfQK^$wÙ[2a 2VK^<(nYeR)9&t[%R
I#f-+4(tTl;U ݡ&@4е'	8ߥn(kLx`-:=iF-NnDIûP+Xɮ<Zݚ:u$(Yɶ-, 5u4P[~?wٱc1`)]P{)
|y`^Ԉ!t*0FW^㷼A}P୎Lj@κu]ZkQQRne*j
:7;QH%O_`-9aiҝ]"nFpcTޓq?ÓcCl[7G'NpX $yGYlVmǮ1!4p|;\Y@M_ˇD䊻LczME08Q h xD>yzNWaR"Yۥ1/3ijCļjiS<h1suV%?|WL#);j{
 WscǦdrmRV%6G7A*;ˑ.J[PG{x%۞oʋ)[KoOo*?U
D)pWE[p\|KZ
'w}Z53vP=ye.^WǘͰw(-|ws]1drfK&tWs"5r8 dziL{^3y,$$z
KQL,@Ea	'/Kwo~~'>PFDV 6e5 Dsu]UNHqYjV;˷8N 㑼~İ}ly0:w OgA~D]E&DkoSݓ^#;fA2{ܻ;n|]&P>m[Ae\ǧn?c9:pil"Ϻv4ܧ*dN>:|wp('to*MEMk
&Mt LAj'PHD9tr%K{lemhLvY_ InY_xLyڛא{~	26JU `[Г9+>T^R|rX$?b1QZ'9S}bRL?֔hp9318@sh6eO!iv*{F6B[>GZ7{іCc$Tlۊ\ %GH`{
SMwZu.I:ETew-tO;_MbU;M}Eh PEzCN|[?^'E-lPK{UIq8IY>B x>M1h~PጪsU}z')f?p8<
Xs{	]$^m47 Lzs8dh{7%ϥ]?G9:<oKǹR"O4 ӱNbNuW!^qN
]6T14W y;	/]Xv*w&|w4ZAY$qa*hf$gSX<](;y ѥ
k}yK7 S3n?]NN%˶yyl]60$kt|@_,<Õ=% #Wak@6=ԮX.NcjJ*kz6ڭ~`~Rą)pC[-EUp\]s?`}yxַ#zН֦ͯ	|U.?qَ&BiC^GD{I]y:.=SJ29E dqD~}կڧRkG3L됇.[F5ٍDmgCC'^+U<l/
JLh"`` PG)t,M7~Pn؏$^^v.Đ鬵_6q]*q8SHN&wujQ<:ҏնt(_2rrjQo|`X<1 	3	
 V<w
~QJ-OwחΓI&8! p-
"|zڳ:I@_bzrurcUyN{MAoܶC@qr̛v\puZԇ3WۗN|W_IsDϪed4:7Pjfs*5<1XݩK9:oʑH6}ABAN]m#O)y~v5kp.KZ OאxK]>mzaGM0,eWg|]I
Ӊ	סD.CYLȩk\ӅfP=ʱ<hmpA8ᅌ>UyCH)
glI΍Upb8FiE@<^" zPWԼQz#>C+2RԪ&$Ҭ8iz);D,q3q++~~H9+x?tlq1}m)B7j:!Xdg&jONy؊]ң{Iz4t)F[CO<օhH+uH6D& sPM?ø%_tK̺4MnG='GxrNC\>wNKw]O!J
~wkn @GPEs@rR~Quu^o:Kfnڨl5;<6uO}g?CDr*ߏPI'gb̖p	D
o^ɥ^t!Xzs8>#RM VdA̺|Ci"H@sQKU{MQqyt7:7}?ەx*CSh|߃
@P_F?m7չ.
AB]Ȫ{$e-F7]2bՖӖs
w	n FX
w_^d H%BhN8B"ϹWպ8+́8i6ڊ`Sa1{B:].ta'"K1y颔gl=dwN2Ǿ9G%{aު;xo
M+	NhdzXE<QJ\^eg%9Ģ^|:ӷJՌsA܍*ZE
~b)tk^uSFyXSz)ޭl
5mǚDdxauaqn@T4N)?To@hʊ <)9'C/)F?'iFDqiW'蒻~-w
*:'j
$>6k:l+/Q(,Pt&S󲋓|ؓ k ܊A>8T#yQX9JsK|s
<˘.YqtqKV| 9 ^$Oj_2xU#=uΠ>wtt?3;Xʺs/66HhpDvO̎w+]zh4)PZ\'Jwq$FѸyVŮ<r8RCnc([,Lмʀeo.	B,+^{%7
م䇜pC Xњ+RE5IGz
8lҗZh@ooWJ<UCz!zӴ	px(j(? #rSG~΢:\O!UUP?oJiRyZ;XULjr):=C<aPV{!*u<wa _L3\l|u/(e"K5؉(@ZFӉˢkztzǮF=GY$`Iհb\{`JW|uf򵟂;*X΋*e.ȧ[3ֻcˆ3ԜuTeזZCVN5³H2߀aI$25<TކL;@f S8Uh&kgLu}EYl{ŦEX¦IDwwv¡WSl睫 ZB4$?1 bX_O?P&rN'x
z.؄ YX^ 3*ڗEޜ[")AqKUӦA6ԥhz~Pfmo%ʏ	Zi[
u &9hjj`Jѣ'GoCFI,GAjFfE[9,Zu'7K	Uc=\x~ c#`m?R֮)@[7Ox
Dvt/,^'Y
{@wN6US$i$PڔV7]tk
RZg'c%~@"LZrvTU)S!Kv)ڻex(6iJ0Nhլ{؏+ k.rfi[Fe%xJ
[M":+Ӗߞ;\\(wM7lhD@\>뵊FM=$3m̄ c_5^x3Rb+TSBQ!G={Px
c\|[yv2ρڊ>׊OlB*,gh|>e4G?=K8̣غɠ/(K' tu!gPaYZYQ'D}.8{[I;*WЊPJ= Robowr^Rkoit= rr;93t;FrkМmIq@Gi7@r&Cig;ɮwݡehyj*m1l8J$Ys*e'kp,PyqU5Hco/
/ҌOrw	
F`pl~oN{WuciyCQC9U'v2)ﮚn֌սƟhI&)xI!W$׻|L *F8nm~vK7mcP l4ys0Ts	&K	7u_{tX,tW:U+2^~[5`ڇJ:xx6JAy_ 3vq7pԪ:o}_^Nݡ=P)<)BJ26W^!+^ljc_bt네GqQ~h9-HZG)DWa! [tiWOEi=AeUā*{e$/JD?1١,7LVasdSyA6:݀~s+$X._}|S{4ipQՅzJrsU3Mdj8(g-r0Ӄ
{*S)muB.lPt:qƠSnW[pxW<uVpS.n]?wsOǜ]?V  4
㕒{HtIg.'2>{Zt@On7N"i{uoqlۈn#ih k
ulـA7LC׹Rȱm2|H-*8lP&H^]+ʔAۓKiMNO^ĥX4nQQ*P
Ku$^'͠~6uJ[![8n@x
VK_=w݋Ϩ;rEfLR@_QGVw'Au zݪ\+bW'G;QE o"M,/KrdHvV^f/< ·1u#Wڞ5'4 !CW0:}нՀ~D*{/ap5͙r8R-݁>!ǅ<ʡ{s0W;64Q&P\y>:`$䗴}eONj,7\ʋ@KJ|0j%>Y}4p;9EoHYHw_	;`?+NS+ހ<x䨛~@ŅbPopOh](@r$@vmX	VW'3-Q99BxtoỲ>0zI\O{$ 6΀%Qx}m^[Gpj<z#K:
k?t5$)F.*/'6qz#+:EܛpN*Xц[Ϯ&W1voȵ-Ӊt
tԫbS{6+V?y_7	:OmoJ&@*=F9NW+p\Y=z.D%N]&dFG҈TV҂hpߞ}jc7NHo=\M>>|}G$j#!=ضs<j&:޷ev{ŤKՒJjW3mzem.Z[mmt"M]jPcGD<3UIkk~ ꩰsQ'bV3LBNf
\8H- 5TZ?^RZɁ$~@u
8nQ6k{;&Cm4ҭBC]'zJ8ER=;vr[NP7(9&jF(PTc-:,ĝT; Hdm"˚]wEus\v"=y切ѿ깂eCGGVt:r~6{\y:5tNqj;*ͯ@!;̉sVĎ7I}vbN
^]Dʤ	䨫܃KAfw~YM^_;4iYBw jRhFGt/gw?@Y{
>(>)CX`6-^ǀʞz_F{1kH4poښ:.M!@Pdul
IP0F+
f`kK:Ρjztf5oS<fpsOTVIE
,1)rU;*Vr$\D۾62\W[YQUUN*./2;w@]՗c&"~ćNG4-nsg4HY7摷D'^TQK씎۱˱$1K~CQ;ߪJ \R~HZegUi? )
eѯJ304q8@˃,7q$}Sܤ?C40|Rm6i4kwث> ;PuS;X."?˙κ}λm1o/{FT
Q5;*u529t.p#qtX
cegNp>[)os4 /8Z>sLIΣ{grjGǷ_}AAüxԈ̊<(!7_LHmKlxA$|B^[e~5{HJq~~}$!qX*tnKGFhB fsN[#Xr|k^\ޠ4X/x-aF_5ZtNG2eϰ)d>c|΄r, ?Z
u]˺{͇8V^Q <;1	I	]	U(Cg؊1+]ξGj=3m.ұG
Bsڹm<u3v2ƨ-.#Qר.l	.bѨTTD(GV[_NZe?ݸeݻZ	9@Ėhc$̧MnvqE
{X{Q'1lƢ4l+d5, K Mj
ځͽqOXf@BY_V1H	͈p@KkG+Yэo0}yX79۱lxc&d}1Kc)RL1dN/t7(<u  u0检<5Wa<YUK/~@p+=ƭ*,+|8L`p͡T νyw[1I9ղtEnӨw$hÑڣ|Ak[#fXBbTO;I=4,ўa 8ۣsi=#N$G_,-Jpǥns2w&A#o3K9W8N$(s	@^MSas>vyf*sU^&!S	FU½hD	HH[8o겸ix.>(aH3Ke&عM@u(zY+cOeHaq	>0P~i6؜ ]7T
MqdjM8Os`&[kGG#β9uǕdE[?THu	l'\(@Ӫ=- *S0
^m7/=06$ ".aGB,2w[-,@Hwk+a٪	wsB jdiAEQه[,	ɳFʾxnJ_f.JG+Ҋ|T:+ڇT"?4^k۲ke0a@~0RN'v8ڠ."Fa]ӍO	P/7o:lmk:Ok']I8;O.Gʻ#
&zzb>Vx\R{t7V X2qv{#
v@2<cNLש /I\!%+SJk\ 	̪Pm 2ZU	ᴚu/Ez-'|G\%XђSw'1>0 =tg'rI&Ùoz
դi=,/BeWpڟ[ZVS飲n%댜|vz9sEͧQGV䜾9׾XpA7KN#C 52\n5}iq
hw)mKO )iddmMp,۠M7mr("~
}RM)9λߺY\Jf.CQ
<r|TRGTzxt^ n8G<^6n&M"A}>n`&e
`YnJ@~~xTp{O	Z*(3U9IsDf{*iD&GV2PpNiNUWmR.;,B0WXAȿ{)u8z-SU#+`mSR}Dy:I]Ky|.CbA`t!ı;I}[^l\Q >VBt2psH-"59Pc)^u~l)xţ (UA'_|:7ΜV>V%/,0V[oܷ>KAm[9dǻ a: i{G@qA5.<تsdO]D é?t+Z{L<9*lMoQ_ܭE~!=
C_*CO<%]qD	Lšv
uݭ:?#H{jsad'RL G"cߝ-|7М]tre{RBH[DORׇ%x67I0[^v4p󰻛 勤>Je
LK`,xt T8Ue^ 
r$d]:`]s7~c6n7ǁ"{=qyjhDzP&q\
#^VՏthmJ>D֝5ToT")Xc87,WXSmÅ^HDOvHÅ¡j^#g2BjmIj.+6jGgLum#UG~0"xlod1//*7k%*%:uB%BF1I]qjr*1VT6_7J/e4v9ycH^|6{+au:C9*n	37R]窫oT`_kX{Fy-nNhVыP2 ^0Z$ж-p)TX!8)躂zwh] b8q-$Ώ3]vfѡgL*/O=_'O]X wiiX]_d@=O=ɱYAt7KkԆC2\$z~]~a 
n& ^xVT\(:]]{m=nzG : XS^\F9A[bq$אN{<>¡{;6rKFF.&@UVI߆z@e#k
x|u78t&hL\h.uSWYhnm~ej_ڥ:a}J)<A`h1NvWAPu=/ܻE"l
W=GA]?KAc|`7?R۹]\8l*
.^SӝfH
`Yy8G&0~9m%-ɾfժ=!7%iR4TPF%Gۛ/Y!is}UN[% }+ȕiwy-ծͼ̐ԸX)U<V}W&w?gn
6vqUL4a&/ƙ?^< iԿQz8D3YZ:LGH`?/%^U/V+lw Yp7f.4~f*͞m.}43$iF0:)S]tp|6h
WscѸvsOB.^W
zIHU#.wabye
s՗׺e{GJ{8E
A^
>pꚡĿ-lK⻟nj~HʣEߧzA4stɝ>7;/2}iA^5dHIm<]u[_ExVt1X3<m}hUvNGz[㮨kɤ0 َ`*gAh^֎ EMۓ@Rݿ\MW>] ΝO]K0a6C%법u'0RRdEJ|<m,S05%
;|+B-
Wb,6XGq:
oykӱۡE0ui*od ]kG4S%֢B-sCq((`J-#'9'Ю,3::O9~kA,^.n~8ԁԼ2}; 6Yf=v> ͅWC<8}7x]s$U4T6{tH-U Gm( MpXQ@ʜ	+`~g̺
`5e/Nh4q9dT
^ӖeJۥ+"{k)=/ࠛFZ067S+4gATѯa_݌mf'|;|dB9шJ"֬EWy;	(lϷ̳vѿVNhf䞑N}\RI.^n@.ݑww6|{9L
)7
Xh*UOoƕ)xl37v_\#A괟 @S/rW7`q49/')"~<
3j5C9Fi9tQ:ZӹSHPJjLѦM՞wjn]Xsy ^U;Ω'80?R*
o:ԷLwI&] "V|ZtV'sHs*l~6{[Pm_z*4xsTIר{QzQuU.hʁ[`'p4jUJfr>~:ҦNV.9Ev݋fn`dŕ7 qUxy.5
.7|A75=qÉ6`jequ`a;/!9>[V< 5G- $jr;(&{g%7ƠN >.JDsâ9Ae9h}T^|tn|:XRqLngt\$q]˖M{,>`h L: ,^[qU6hwlIƮʪm j$C_c8WJ<T0J-;NP"dN&7bn^dpjQ\Rzѩ$E(W/}ڲJsAZB'	__§Yؾ'Y9v5|M,#H	_p^NY'I4o.r dqD_LGHE
+_9Oq< s>F.\}2@4*%n@[	P;VDw:JDVoq̢DזT}ws6DOUml>3fX8вX#u)toJ^stTVG:4]Y+ιAX%Y@͸Ss0*#Dlzp6Mh҉3fpWgFoU rhxWZ֖=|n
5]$"O9xX09F+@[0@_fd"Pr{N<LW!wW뮪'54M%|3}s,;*GLWL	t sxQpJlmNC,OBtoUA^nC\Rk9>?i_b4 8~NUw_,D/Hx6V\ zM3uPqh
uX|vy1q7
<C^$dulڣ)FuZgjM:f}=l ==zXwj/hwW'-:SS<k-=*U83qkh	V`$tÈo}qH{ȅ9 ejTBb]Ć.`g3_; 1nauHBhCVNg5
-UXU>);p<k{%aeJ=
:?4^2_nٟ{3	(! _7jVݧ`y[I!uU׶+jNBV~83h66\^5iY饑7RUХ*/TܥiMoR'
Ȣ؀&FN]ٝf qTvp
tקqZNͪ29RC`bS 8cId%h.,,}@_IkE?aDKy7멿W2ʸ}d-w)m«pKQ'd8خo~g{Wl5%|MaʳԯR#;2/ɾNXW&6g<ݱkV5!"5u V; ۠ '!oVס#aCXRвFKe  H! s{L!B(ol(҅ո%*#l/'< @7q8p`RcNW#a^6Hz[MN:`+*,ƴ4\$I(,ڧ"0T]:]oC`'b2cJQBX(^6z`GmV` GNQߙ!z\
DE[3~!.P \oIg(tĆoUP[:\rD̢[#e2B?|t-+Wtau@:
nF⫃
 5&Xks[MudEKU݉)Ɨ0>]^J
ƳVo\lqz[jCKݸ/r1]25&#)T_@)%'&&#p 0X0\֐P&D	Ҹpte['EP]U	Il/6UHz@*o2t7L//u|Rm	eRͩv79&^=atMQYhϞ>sK}ǳ
R"+84xZfPN
~[~pOCT~|V+(JeVndd܊=e)՞q -)}U]O@%19D*yyLK"8?$nrƔ1bKVk\K)R$)tJ'bo<vi%V!i}ɇo,IE.B0X`@ƕU.v'~Ci@ԈL1@ykNJäCyi}RTZb_PhN$E>Xˎw%uN<אQ6&^,&[8*mxwQU溋|%<'"dg?m<9Fj~*!B0 ysQ`e0pΑ0857.V50*ܞ%moC'A	[YPnpu\Z8RTcm>o/GhCٍY },M/ w!h^ueCz  vˮu8e0K|S@LJ.i;[Q[DXq$HxI[>"e~]mNţMS
oWӆ ngWi[^n<m5N4#~U!h*z]uY>Ȓ	"~mDsI~Tp']SON8S:ϲ|oZ|LzHnUNV0>h
Yő;{
H@]
m=RzGIx,	h[\Cs
v|nʸy8g>كyEoWdϿ#o}e;CCt<z9q:sJ=\ _VŭA*.]nh	[[	\U&?
wo>Uq_cs'ɮZqΗdp\2
'5m5}/\gB:<XLU!J\z,g8_J)
8H*g'36B~ ;IB"9n̫0J8E@.T{8TU+np5K ~86.2/I77&h+8OiwhWGrk]D9Y]Pdipƶ%hpF#ev{eLzBi솛냐(jт5I'Pr!//r#Uw!O
 ?K{yzo
Rā*+|hTA\E
xOg>NϷ>UXL|?:t9w0mOO=/@q,Ⴊ80z|*i:jiI,hVEKˮ{LLc H(?t_]ވɆ{P_MPyW`Sqh⫻|qλ	?˸Nׄ$zl@5< %/%|):?m [}	[0ƭjVlh|Í54^JoJd@Zvy
E*:U	Ew%ܖpQbw\^6**LkfE\Z䐗&5)Xz5F<Klókz|Q,lYodh^#B"L"<X]>D;DܲpPـd_qMw#!}|nGY_Kjnsat*)ӣsܩwOCeM]I,^8m{8ԢnH$9[4AO5x({QDm
\rWϮTz@f^+UwLY[Z	Jɏ̨s }ܖ}vśWKrpAp_yi@>[f:qWnUdwrBs%@(t&zmur}~*!w3T5q[#VB\Z{M'A?m=@A3h@Ns/\8C#VBn7l
׸/psM
/Vs:4.5>'w\u<)
5ˆۼQR^@umU͜(|9ɹG1
C'1t4+q@V7o}pٿ{8+]%8^ 		fPH	тJg~,h
|k	+ӣ9s~99RMmwU<CPC|爻~]`h@9<@S\W[[斦&s`"d^;N6X:2'*mĥ yx?Jmtg5w/Ųd)϶Аۤ
o"5r	Vj ^کr9%vDr#o{^s)&Lфyi?ꚕ*4
Ѩsvz==Hpc%B{jIo2=jX|-(3e-(=H{EÒŶ+æ2GjMԐT.ڇ#
E0XiGHV3mo'=pj6-HW<M'~3?5Z{#%d	<ե&N+0mf9
bQg2NV:V`'eb	X'e
	PӴe2=jBkje$'F
"X> [.oܽ\R:
|v(A,"r>R۸!h9MR3ސK"o\S.hmiۀv=' v^\\ͳᚆKUG'fnmԶF[u¤kHCV_O.	"h٣sJ*T!twSq4	.?z)BN<i] D
#u-Q)LF8˽獟'M)0in6P
[	r),V 8~>Уg8zm/)*YD|qU-
b y#Xa1u{1^W¤6ĺl%##9:zKw/ptB쏒'X/A?r&xaKp8~݂'ySb+:rjpgG*CjcsÝ!qѺ<WHL8J D=pF
M:]Ԧﴵ@ɉMgOORM75DQ=)tSyAy^McEC/n'! g(#'JaNAQ3Smj)59}jwq5

 8+Pʁ\Leϵ`,w{!Owm
}绫IQJJkQ G2[펭}2	\M'
fdDO(`_Gp9 ^?GB~'AI4]ZV{NXiPu0`ZxBtD[]O=H9Ѧ^"ոAL`YT/r̯Ҷϓ3kډMRM9ue ʍDiR `Åz]qǵ+p޳L$uEpaQ6vG=54]Ki(#
--jbnώowJbMJ0HwoɮܷPgJ

#J#~bRtpGhH}uFHu*dFn+oSp̑PݲJ6 oiyh'M&/7pa-zt'Uj$1t7z}6h<|˩!Z"{(>	l|d;զYoKq^	qfNWaxI6Lps-s]oCeiY@I !wHTŪ$;o}MFٮZ.rv|l)U
Ⱥu
a(p|	iBp TӸ1]Od#,(g<4M9ڕҼRު&'PpߡUG=NUnP:=[ԯz&vD	zrŘB8ٝRjJz哂ݚ!x[ayJQs*w_>p1&Y>j'1,pnh5;(aMxoV7r99'a9AznPr:7n]/(ud39ܺNO:euwK
4\ Y_ɴ&-\LCz"2 l2}T%0C-w>ĭ^<Г٘տ]KVV(E	?\T~N&9*_yΏרnřNɟʘK`k~i KЮB];o*ʎf*a;})q%YtWP=
RM>SaE*U{'U-8/ۯnE#	W7UސWq_J2*tN'#(
W~
U2e-o*k?[((`ںP;.sdw5] [R6s~WgU.wRF*jGп#gTt7ۦZ_@۷m\G-Mf=9V$aTs;w&po?:`#ҭ-ɕSEM^$O&!
vvys b<)m2 
r-^Pֲ"G8X9.]]`ʒo,4Ԇ4>Qm!jߓA[TH|0s:1pThͷoyf@ -T/<@B9>y؉ &CÌWi`pO?-@,uR"5h)?4珥}N(veT
hG*ݯ^=BWgँ ĻZ|mlE ^~WpkO8肃aY^bbsϓ`朹/~.\)Lk=FZ6q@3/Oα]ܣM*yxJ./mqЫGxةtZ{|ysk;~-%]@5]Mt>v)	riS/cxjw`d|ptMКrq
*FQRyBw˪~Oo
arWC[2X<MS_e0[ŝjI9˒n9sEx"o%3PXY&mU @J]-;v4MIo(ScUeNtjB&#;i#B`a+ɗQ1Wt8FaX&w`4\ELݹutf*x\br'$E˿3Ŕ zD&}[ǑJ>pMVtfVG&G Њ{}s$v-e[ua8duoP򠢻]@I9/̽r1g( MjVsx%TU93%Ϝy.7
J}N0"VZ
^]R<zpC
Jqd5'~]^Wv.< b%/r<^=dglw[%mW@Pi<u6R=!8kǑ8H	x[C$rM/{Pd"aZtS
T{oX
VP!51H6{HB00Rı*r9t-jFZP¨V$Z4ԧs0;==eC8m%*6wT{B	ͤ3M'TA;ٶȲ?~/	YWOdQhYŧk7XyirVVK׼O⍟jP͑?ĞB.M~VG>)` DٸW+hӀç~eP0n 	Tݓ_:Hϒ"0LĲ	Nuq\1X)bʽi^
.13%0=w+N+nb)%f	.Y].EE0*^湽R~v7`cU*=Xwr6ztoRRc٠ͭKnޓxA5@ϟf/P«֊
N)*17W
J\\jpVc<8;շt,v񽿶9z_w0,l!wA` }'JRYiQ"aCnWA#o}@wΩ5HAZKr-Xvx̮e~n!Ձ$GɃ8/9O6;uZ딹fMYr^t dl ܠ Vˉrq[}
.
j~Ci0QnR9}kT
C{RuVR0h\$
(;t&Ǵ1,>yEalIg	rjQV <ۄPl7	WaU!u8(v2ufšI0%)WR9V7h`վMx }om¯J%56_7"dН|RZ^.fتN#ϩVAOw,<D?CBH*5(5Wo|~K`I֫qޭiǣtplKqGLzC[OT6
@/HK.Pspm-7zoMo^-hͪJj6_4Np:}3[\G9ŧWVq2xI7> oe&ǃov8jSҡEQ55{f2_hb|+>Mnrw/iw(A%s{lSf!3-3"q\{kҫ(GP,@=:'ZD;\TyAA*yXET.}H$kNJC.XK.'iK]o*{Eϙ}@=NZ]@i~وJ&|h~$=LƊFyyIu|y^b^vr
`1V9r$,{ZA^6\	*!Шj	yJWWh\+2,UڈIQg^.@]Y+M1*cjW|RإΌJGF)1@O0
:oNPDNŤ0nu+IyMkZ~D>fH32gp8Ϟ(Od jl!D@Bڽy W_y
B{]sR=FY`$uk=ٔLҴINڇ\xxGP]ů̹AyP: C
YtQ^>AuxC' ؽ@
v^I]K/'5veg.Hhua,C4KF@S)C6=,Z~ R]4%mHW^q?=]낇wĚ{R|:1[
gwŧn<uɝO"*8rw?N})9PR-aCG%>s>=L0Y^%-U] @ĉwuhA/`Pg<ɡvљC0'u^7R#4Q㎦:@: nmհGNXL?M98?~  eʺwb$,W@EV1:0kw>꡵n;
[
_C@G\$w#ӔU/@.NkS3mс^
K,(#|NԴe3V2˱k٫EU"4q8r6*
`Jb׭C[3Ҧ.:B$9Ɏ5	hA~Hi=wS&9@q~ujKUV2({b"Z8o;ytBy̞\B]I6~4P.*T[wO׺R鮎=r fQn,^m_߽}NAsD`Wql킸_ջºú<Q0ܜzvcic0sgXC=0M{8]s3 2<ȚHıS>EPw&9
/jS SLρŪ޷[,Xa^W 4koj^gg E\Wv9)KlWl`01%.o]rP](LWUrt&y튿J|+aٴXtuQZxV.T@Iߣy&D"F΋_>1s	EP|?ʏGgFZFjzri<bO+|
u`\{ʛR$qpzйQ%\ⵊ^v;7{>Hjq_O2:AtvZ}dȭ[	ެMP,6GJ\R*E	m@;%\o(-hj)4i{ISvcKA0tN6ȩkܬnƦ	SL¢5pj`tU˥H*qz;sp뵳5жDl>ϔx-SMԟ\+HPFi;t	nGJKBc#HQ2m}V[5s*a}uNH)T{eNush.@n
>me[M7JV#}xtKʜ؂VGpfU9UN?{>̥= ஠<,dI1$wPM}XՃFEf	mS|;X 0_ŉu[WrD#.'.C{BsOhPMFJJEi.l;'ӚS&;?h|6j.^9mBcސܾ2
Tphqށ=D'h5z^'?br8r[mxTco\M o{av׀v.CW\e$=wKsJGd0uBuNɝIr^\aǠ	Nv
{bTsBrߴ[Ч0'D~jޜ}x[,=KPyh'Q+jGs>Oړ E"t6euNhI:0¹"=A[f<@TR@`ۂԄLKWdȗ볻,SBp?6[Z>+v%i:(TtNnq
6yĦZv|ү5R5~)n]kU&zo"}T3+n;ro	s<JJShXY4T #U'6D]`B|%el:#ڶSүpGȻJX8n8` [*% =\#pF>%cjMй5:K_9>
-9
\0(
t/7GA
rn&5-'[xsS1 =!o%Vκw)Cl/I2Q5]e=?wxz=Lђp0zDTvlE7XKx+!>R}4/TXRcZw/_K$cyrTEsvX>V]kXD\P-%o8-U]*
{#ׂ;gg$9rpk
؎ި6dhAPKikW+C6xb#5>esWi/ɼwFxr5`o}O+ǇL%!E/ǩrKsaγ-0y<UbH'MRsTv9fX3,Hqw͠:Vd/k*kiٲYjF~cp^vr}vr^ȧd/wn i[O[\$*aߵi~k{kt(*l}Bz<;D%_&tmH|@VZ(S
iOQN-)&e^'^k$ѩF9s3/7[T w_X   [:`FIful~vbS4YWfUB?/A+uXƤ<G(W,qTP|
LzS(&6ܵn-Ƌ8ȚRTwL d # '`vW#E+ܗD+56MӶ<m;}6Vl8]~|waAg!m
íXעܪ

%y.
丸v.:'6+_HIlpz7h:*$y9xv׭>ԑ*L؞܌/(v |+juO FJ=+sO ߶Hqf)$@ĪHE%tXg>UTɀ	|eM8uRNKZmt%-ôީ}8
.qy1}3m?	܎G#,TqrG9$r^faw06h:e^ zPACH4`$
*J8ť9(3Və($O6L$mt\|1@?4$ص54yVsxn'm{AfgYHQ"Τ[
쩱rMuF ~l~r+ dIMʖԘӽ
K(<Jz^Jyxԩ;sKY%7r7[W]y} C+r6G {3!竈LAPkcp`y>-
{m;z_'t{~⵴րUC]uĺS篎=ϴq:.Ľ hƝ~Ə1֦̕W oU xQE3DPQ8 8pC|[6%P1b_!쏪<QtLsl}8((a_T
%rOf[rȷH 7.OV7%l`4h%5uSW1y	bIamwAD#(/IVxa pӉ̢!ۢpÛs\S_St
Dd`$bt`A4	my9渔׉$&voRHm[FRiypS>Dȕ8>8b-(VMqE14n9wadg\hԌvaDᒽ^ i
x_KG2+	"Tl;6B_oi/,Ky)o E6@v&,FGA㓂2o'۞⢹PttyWp-{Z=э!7<y"s;yƓWju kȩ~RֵuZ<ߟ<x@qMlԒQ SQqu
z'5n{ϵdߎSJvECP~5W7?ְahxjYc1AyԹR"NэNA2kǖGt?oR8;ϡֈ5BTޜ'+И<?}8>?!ֶ\# _>lsb+v-Gy*2&2  hK27S,;`wCx|Aݝu: M}eOC&EQߖ8{]oAZHnR
zYD^@/>7qm4Ax.TSTgͻOg]nyȺ'iɫtBRׇo@&Ɂi=\5i`;8J'3y{!7~elmȪ[Qt2{<`<Mn
o7d;yg`iTwǠr"yEH:A]!Op!Qsb]J,P) "$W=W?U<4TqDoX{Edǒx60[
Mɋ}nroM	Wqn{?PHbD-vfkA#꼷1yyvT!Tϊnvq_u܏_OO.fw[]x]+h8*cm= t#`81F%UӍ*^۴y=rjH(.4sɃ3\aKYj9US0
$:	6} ֍u8?P5yu
hiQ6^:2!q[b-.;TIvZ7E+PA	ξ[RG	d"-XkPZ:$:~%jH¹-VmN*s ƫj=K-@D[2]9&\q!1՚#Q?9wh>9Yv)Tv@/Am,ɏ.u`=z{Եq?NU5?|$`/h{{"YfJ&*52N(M S<ԋ14P	:`5w{p3Ye5ߖʙU'B 
E
CvaM':hKQCC
ǰȫۉ;g!@c([kQ n[*$ͽ9˫=KJWS3f(hsKxdgx:-b7w,hCVOz
&e/[/ؓ~)89\dCǎc{ϩwc^ d
Gj&RĜ`'~yQ!?NWBQ08+DD/MTWg]g$*HSά*|c@jr0x:h=3m,k=>tU\}䛤}=/P`' n+Ūe;CQ5ڶZGL$p)_9gepw%cDREu?iYXC`QI4ExfAE9u\@ph	Ц:j::dhպ.m34N}Sȴ=7V: dֹKO;HPV0b
gÞ#P퀋?? xZqAfb8\H	GǴ| pLm_Ö.¤nU>n:w%:9,jVгEv	$0|(P@Fu"+Ƚ.R-\LuSvoU0l-}ή(^k|84~-
Xcdz:I}^|Rc
 첼a7z]IOq̨N3ʵ)3a}FwG.\!5)j哋3OUZ2qhM= 7\pYFمwa0s5 ~itI[~ϬPM|Ic%\EYCxi$DJk~l~MUS{@2/'
^ʉdjviϢJ{o霊2%?<u!>j|j뻺s mt1]2
bxTFewu#p)|:|(RwQ䬂2zkY$ׯ[[%قFS'.DEjYbwB6xhR \d.ʫeY+׵I׷sꝨ-Ot{!e]:WУp뺠3
I|먫ӣcu*&eޠ"BS'Iu>>W k+(
h$0
,;Z'~2WL $!㘄[>'[Ţ`"jkՇzt'vwM"rEU,:}wKrڄn};:@ۚ.mYWWq¼çx"pbն!xv|Iv
<)Wۡ0☩a|N^Ԉ9YF(OܠLLJz/`vzdL13CcӃxIJp\4kE GՕ^q:a@\Z{]RV	ișJ u!AQNWEf
1~Dn"}ڷfaEw=ϛGuh_4TBCd_,'05\mΞXVKaJ?ju ѹױ⭞R@m7oE UtRcB#/ Ǉ9N/'Myµs_ҵN,Ҧ
ٜ~^wֈK'ܚ$;;	dd؍I%V OǢ
uљw'E
`/70kB}L݀NWAaiك$P
pU+&[!gVZI1@ڡyMUeM(휺~)ZI'nɰtFP)T(Ծs+z.15'pucשQ:lz!gkVnw4{fY)w>-@X57M`fAG]gN8/,.+h}!wdF̜DFAܜSckP67%(sx`ۨiZgpivbJ?Xws`Lr@O~>Wq'|boxݾjK84;RI(9͂i^O,t@& p]G9M7fi5N&^dOV8eWpSmU3QIkᾸ\y
/q-5z
^NTsEV0'vQJ(HeUY=o>"4`sr S詤L]o.;uì(mYç7V@ <6dҤ[S
l{6{I
t˲غ|$հ qV]"l]Ezl^8z4 UV?՚#UZbrkJCA}!j|HIEpOKu_ [=w=OzvE{<0DE"%_"PWS&7+9D	sʢbrw^{]Imխὐ(Hek`
zzU-KJ=w^]e!T
bK}[|]uvUHGtr~p	e{ݒq{~*C- S/${Zc)uƙ[qC+yMXR%ޞe-&wJF8Pc
POdT:ڎ:e5	(JS'lO7t+U%KݕCn4g-ыo[^FkkBa4 kBfbݎX`u#~]+vNP5p"5]VvPX~ p蚆0lPo;x˵iW`ҧ$|dh+hӹvL'S3=rl	6G['u7gq}^J(ӕݥHLIVi*EX!ܝfR~6}2a`z tk1RU6up *ȳؕv$J>cFTF`y
Ͽ[E*<!;g+sK8tVXܤ^W8ZSwn=`@vfy^2aGP
N^O9wGNR6ժ)Yuu+C zB}coX+$r$a᠉l*5
c<r"U%@\A9SqOq*ԣbڅ	ET|3JۿjDB\C't[[E@[Rw#[򴜮,W׹(F=qqCoЕ;iMiRŽE=q{/w7H@]]k겸Cs>Teؽ629W3S^n.0pcVi'DlS("*v7:
^Iљ|lrT!KY`Fnv_]qRv9$rʹ"pϛ{;bS.Ϋt;<lʁN \sgڴ8_BN:7
)q5F|λ:SZ
D
P+@H4<MN>_{F98/:R:-w_#s+1Emq6MSUM<+Z)pnu{'zM~y8ɟ#m:o-q 1
CT8+ٰ? B¶Yk՚ҲN(βЯ!kV$G@vseՈ5hY :lӍ M~mt8ye	c!,B&{NBJ	-⃴A(7F	^v:d]h%9
)hgGrtF5J;@9S?}/]Rl5$-a*@8#\BKWCRb]`LÝ~u7VZ~XFr+ka,UU S֑^ՇuݢXM4I#AuaJ#GMk= EƝT!6(|5zOÂ?qi
%yBdB
m:@ꯣ9O$8017`Qx>!K<Ϲʣ 9|-83Vdڳ3	?駂7=_ =.Ҝ	~)`8_wPi1{dgQk[ׅUཀྵA#іI<U\ic]EU*?@)<$=d{Ƨ*=1j]4iDOw9Gs-^U?ۯWBvZ$(v'kiĖ} 5+-UgZ|t+rO>
}@ BtA @
*s=ZPjw)cM-0ЋDU6o]qۼ=r{"|?},` c|]"H!|x:f'.*V%Gs_#~|4D~~!׫
U 4zbzH>ߜ#.	r.(2ו5R=im?PmtKΗS.7o\͑n>EY].欿8.HE/j o(m
LaL051w0T)D3#5Ush8p7!Mw4
s-5TV]{JEg>SQ
`F?	
=^RA{hje{c-lMQ~E 
WEEnF~CvO]`Փ K6zQ>@lm5_e~yƹJi	$k6
"0D\b5+mň7x{-gwpסn_S@_<vElnʢiW]8AkZ,+RlڿS.=R||;($hoIO^~&L[䴋Qdۻg\SJ%<.xdHcEAt,XMg9s'@η"Tm@@&wR3FZi&)tvP))y)z<~ys#(Nk6AoJdr;	hcnwPE0np>ïFW;NΪ=_tL)=#l$q4o1O:A 5]ˇ EL^ګ!ZXPhR'0b!6Ѡǐ,K"Y$=bʺJvxR}UȤ]%g@fQ򬨭*Q,\S:y(|yȽj:Ugl:Eq>Zߔɒץ#&k}~M&w="/%ş \9%ʤȻ9dNУezh~-.P<srYM|ʝ6.mHi:>5w_5p'??t3*gբm+pט+l ?>?
pɸ~<oBmcJͽyh.%M.]B"Ȝ&3m]~}?|_I"X
:j֋jSy8-,wJZ)!.$}8f*u!|LWSS7eGHópnyrSť*QPCon8G\\a:s7l:\|7nlTt[;Ū5({urb~֖6SRo%K=
|vOa۩oM&fݱ7&trwE]Ԙ_TA1<.*8t4N`\܈Pe^ڟA~unU.8^'̢'o8:ն:,^IeZ <1/guM*@yDNStrkn/29>87[_ҫҙ$[:PjVN&j8V~| iUwbOJ˒Z_߆nmGn}l(Iy-NdX]Vԧs/"Ms4 qV\O4qxM3q5 _CbX$*}.[҃&`֒C&m^$FsuW^GwcDbgi]o"g_}
ңʽ5uS`h<JbR/WRhsХZ*JO^ӕmMSղ/>K98"f|%pFx. .2kM}^i[ʆiFcl8
TKs5>"W	:rTc [gsp]yޑQ"cYw>To=VQDpiHvSU˒&
$=kxR9i*p[۟
H9|~ @KfVx-館Vg2?6lo(e	C@2,ֻ	fEpT+$"Y{h?{9q4_3^K7YP!$'|@(Gf~s?{Wlq mZ+r $|R#yΉ&of؀yPCi^bSvk
%鿡ddAV/^NeܺIơͿ6h	zZIe W`d:8܃Ȣ@:+~;YEbS/%Lڔuٹ oO+vZ.pҹ 
F)94֣*Ig<^P
徤FCNz!VVP7	ohg9e8xO1ǝsax(:.[ ~vpi?gٱyGfu腐oDlDՁJkt#4IFJM]/{80^C/w`϶9_%PfW/c,➯Y=EZOSH.k 9y
P6ʣ3jӱ,B^8J\O.ۤr
 WWus
dVreфwF.`qnN]Gˤ\\~1y(-褤g9PfG]PwVqNND_! vGk
w;3
klK~V%-ՎE[8ۄA^US?1]%"Vޓ+7%޵5k ){Nk }th!*AQBd/,C%Pq'ޒ[\GHWE%\jސ,dZNwI 5&[
ڟ<;hy>C+Uc~.Rg:z{t΅h8A /3Ak/)1~آ҅pNQ;?U.}`wN7?KaPT]5/߷FF$W^|E͓`ϯophfxLu~RO}Ϋ%঻vzU` -(r6WO"G8䡽?BBNxfU{NIK]C)1a-p yC/ y<rWq'>C{}5\%/"W`977G|O9})8rs0N;qrN[\oYC_])E20ЋÝ	prGu4&QNֳ0$9}斀WC%kc_3 W]?P
JHt!+מ;g	Lɞ4U7hs:h{ا4^wQ%
|?m^Zjܙ AxXWbn+,;7IHހlÏcSAWTTJUߜo}j4b ;V	"3351x(`w;m4J仟kX<R6N(iɫ|ݨIrZˊWxćW>ϦQn9~mo
n#q5[zfQ/6z5kO:=kSWiGb5Umv5
˯Jm*tXSP
YDƜ<Bq!ʕ k9oWɡt	!@J<AJ]r:947N}Ac^W^]5uLI<E+:[໷ۭ+9#A]<k=yɞ+qI!-8rc>i6X.yKǇt2ӏl@=?@|\݄,8mt<*mdB K6woe{Sgk |ȴico	՛p-l2褣|(' 0]{_7k򪾳DabO]]CZ>Rn=naIy`z{hJ˴JwxU%7<nNOp6.'( rBh`>"RJ@'v ܗ^r wx]e[ wo'$9'WK#*W@-:^12BEUlH'(-PQĞj(+hKg&._g#9Q^8xP5gɊw>깃a*HU9@ N9=' {zW 4
08BH[a(W()T]rI5{ա-K` R9]YT2O`
7훪؟τqƬqZܴ|$j>EdJ}8 `Q*J:3%zz'xAiOAʩV.Mϙnh \	0UFcÃ4qZur)})CժphCO>i̲v.B}Z Ы0q,( 	,x "}9fɓT6!؃,i^k1X_~wkN3֬rj	{^{L{L>uBӨ)>wK tz^iC4{GcsR2;.3| $~ebZٕ0GՆhUI{F,iű"r|^iQ%N'r^7*-qZ1vi"R^c	qvBZ/nڭ4"˜Nŋy6`Z`~ɣ
ɦ!t5J)@~>G9r>ch5z?]h S*c͐Dv@,W_k.'2'{qnU4@bֻɖvg8]!ʡ˙CA`?/={4j[L)WKmlRLN.e-|Fc'CO+t2-|HEO)䙰ݻL&HW4C]Mca8n)W.0S)MCAflhS	4>â	
eq:f
+aнUV	S}j!^?Ȉ%T]&|'RÚֆ ޤ4;U~UoX{yTG*èvY`_6`(!Sb6w~=7dAT(A OMM:E%3秀ҫxAj-:XWoGC:xo!=D]ɟ}@gZI~:}KOް/[kR
=;2=/1CQ|> ~㴜ARf.9TʥLow8kUm(D
_ֶ<TI',s@d
1 t΅\J͹oSblD_Mubs9/f@݉Tײ+mtW9'[Ӭ

	OM>*7QO0ly~
ێzD(#l_V?뒟FKe`B"&0>62{չ1h}`b)@z٫0'}	\
DٌfY{٦6[A<qZքknڋsZ{|Ra<C;nzW	,.֟~8v9Qel`廋	snn]/^W}9`%AdDnP,rb)=ZdJ!:nk4g&W;*CۛЂ.\x9؍` (!˿???bPAR\|!ٝ{]9;ܪG~,q{8t{Mo;R}ϫy"SؚzQ?O;TcFa^/?4`
q 1xm=|
^sAގV*[<Ȳ/:Pvt	2 ߀¥|b:W;ߧd!Uw
$#r̱~F5fL~NYLzlQ	
pXa;W&K52#.|=f9\P$rpچ\G*uj@`8/m
qNyCwRsQǍ/צ?7kʚu,~6R[ g);iǵk]S@~]T~ |E<Qc{_@qSh̓ԧZ@zNᯍA"5ϼ}CcIRrB!ȢJs[pkx9rwgEqvOd`]65-]]rI{E

4=9&t蒎t@KP28EҨ'(53u~'z+cED
97d=ۻJЀY8m4B2 ^uZ~GL=vB	O9>08@1-ŔE>QyK7Qrle2\\J_Vfm\}$,r,ʿŬZIeKttEW+w*_+VW ޮDv؀r=6I[UUxci<8۪zQuG{yu0$/<#x;#մD,?fiΏh@X󊺯kq9EyyհVӱv:Em
Jc4z/M{+"y xߺ+!܏1cÕa]WqjDM
Y,ֻ:>&wĐ:6+)O2c5Kx.D'=S"ؓ?sxPyI5U!_CVO
TR0U}aעG61 Yo|X^\6n];zⅻ ˲}q9ba:#5O}N~(t=h?*|xO.v'бv++d/	A}l'?;KaG%AJ8t6u$]mVQ^זڇ}?qTΣZdIeTM:.'1+aokUGgmd\{OC
ݼPqᇜ.ٜ`WOl70i$7!`o5HM)X$
NS)=<9znLpUrҞoڧ8n(VSDUEIHL*-nnӕPX:O7Pޱn1jixE
{U~Z~)|rwԟ*ڠq)r8g if<Lx_7h_Jۓ	B{u:k
|V\gVGTT\K#G-`bP;*:bФ 4(7֫РlӜ4̏s-X<u8H-Rde&FI<Z]x,
΃..5xM`ަmE.èF,\QV'::s=X8ЧPF;F+`VkTvN>n,drg~H\j|+TP:?xځSZg:GKY	gg5gډv=`&[~;]+sjqKԨ
pTUFK_p`%a5'5WkDE	蹧X
+_e||B}Õ[_ˋbHGΚ<KgRt)>P5VU>XzIqUpOz&e(|w4XO=i(7R:95!C"xys5sc]jGGp(D-~~(BUX]	ov#&KP.}^Eex
k	ybƎWu bޑʜ}-^̃8xS}jNJյ4Zwp ɝMHm/=lPS'C7^`bbc\/UB*˙78%v|P]K抲"h$pٰ	"w8nO¦ ͤ7qٶTZ.
N[O]B R#wJlv|2k.GMWvg+^nyu`*}څWS]B.@rΐwydKIZUKUXsh յ8
?SKKyCXݰbj
\aH `i=CYYzn
@]j[sn}9֐;zEp⡁Qc@(T/!&'r~  8%KTi+(GW\O!&e9Mܧf/q+PD M\5q:uMQXKI r
e{ %Nj)PԻ   F; ߮FP^A@Y{m|o<"hqpW	Qǯ 7'pÚ P@}]vTqaY֝"#ܙNW^	8oRLz]qE49EXAy^n\1VfVFS隌=-׾JxEGXSZʆ:GMGvf<GOUlygN|_X	~.nݘl3knuϓuj*Sr=K~<Hs{5RjaHu o|O'IW<'@zUsMiA-%h󗪖	g'8|jU%튚+BH,u~Q}G-oYvʗeY:wTaqzb?ԯNhqM#xCROR#:x3FW\\sBq1Cm3:iբA޵s
4s
$xz滚945HrE8(j2RWwڋTSG2A5u[dWвB`[r=IV/r{k
\T MrÔkEZۖV/s+=N0OK	;<dCƭB1{e+`}wutu80j;eNȞ:<VRSV'e{8OKYs$ZN>N
ǁNٳ+^}X-Lm.ޭMv-@!Ɗjp(js`98,r#G۴<̫ǁ@fD@bD ~Wz0\
)ge-V@HqF=DSuS='!l^:sb9Se#=YbO+']hARz(v{O~_\]E ^	"(8@ ѩ)jwo%SJ54	[%!;[sskxòETg#?ʣD}0?yK60(8`zp	Sx7 UoGe03ʰT.fO]-n \Լ<QZe~զԭP|KYmhR |4Ȃޠ$j_B|q>^X^F7`@69[,s'	{CwHV]Srʝ
*5ϓO߶WsUs!.FYb:\Yga.m'~ӁIIvFfAъ_)]k	$r~$r}GPi+&pێ\yw89](jA֛2զC!CMx.nζ2P`S,ݸJ*\ 	$j%D. ܓvkaQpA^&5
GP!y0@#aptzټ{r?6vV]`V!ꔼ6@!5W@IUXykN~\tg3UĺbtF 47
b.t֨޼~a/(v+(lu%݆"
k,`BXp-KR]I	iCEd^9U %] 9'u*䠨w%DlpNlf'Z#
7OV|5̙}wv&bxJ_8t2t<@Z ڿ./΀_>󅍺9G}U5#Dzz;#ڊstjVXqj ٴ.49%f/<99Lz{TRptpD6k
L1l 2HGI* @Y?O]9U{\{-n
+ϣQ"<z,@sx%*	qS}1>	D)kӠUywqO\kh"	3wi_*SL[8/ؕ0#6;S>NZHQltg99v79UIde=lwofTk=ʝ{ȚGpb
ǖNùT@S(aYpJG<_{3Iެs +
Y#C7:a5d%µ-fR埳Usj4!
d܁Gpdy^T{4l]cu`]z|{O ̊jRv$L);(vS.{wGƲZB_!p_m+H]H֧LQ*lC+oޒOl@=4wũKSݓll[e@C$wh`ZTl&^{ऄr ZY}g²-(KUfeKc	W
%N1
 g;a_<c%<
w,M%tXՐQ `J!pX`g|/rPseՄLyWή\: d3.TjJc;QQuCǝ߲,]j>;LwyHh^pwn7vAx0e}-}z/_rzcTLh4ɑpQ`mN=/\|rc6d,jeŻޓZz>s
KᄵաS
<<е$Dppct)br'@KntI`WMu-yry+xe'
r "Zth <8yuPǘGtfj*],|.Xsu+x8@w]dw-ۺ ^Uf

N;Sl`M_O%r=x}ڎa٫ql}a7*)ƜV:	:>dK7gu-@N5Ea/yͻ24G5U͡.ޅ(<mAșy3ejۭ?_(^q{x/U{㥝Qs1W8HЗ͔%-t܀40úWpb:&ypY>l}^{5ߺ-5s>í)`4,_ZYHrϤ+mtrGԜ)٪Ft!%:UL99)7V[_p]\#HW=w&xs/m8"G)8yi=yn@woWkkw ,Nl=C+)s(dlS=]3:5PVw2Ā^Bte媃L@v%=DGreL9*C\/YIs y<lِaԄqa=z>d
8ccKw־"nJKy>+>P96D圣idc36 &, rM/GZ&3aEpqbTvg	Qe#&<rjɚ!"gαȵ&?GIkxq%	7m6U4׶SpPoE$z
uV/N6ȅu<)˻5pki&zhvp*~o}Bi[kFƼ\<3VdT\xKCݒ wÙ}^+3n)yr`m˴ZޏeY7_][Tcz)Υo)ħ[&b')wP~NC)N#NU~{v:g9\R; [*:B4N^&'h/LI_\Vn|XOnͅsZ^.gVpdӥPel#kNKQT^J5L[mw7TmW4`qm ϗ~*ĕrJ{[G;GEShV16L*Z6f4g_? Ra[ga__O)O=Z_@St{\>\yġ bh^)*oviҞW#
gd-xr]W`_U#{uԝ
"s؜Pߡ>[Av"rŧ3ɾYVYs|mm|N92|[(ŎSܩn`WeΡiܣ_$YQ^h3򂲩ެRRk5Yn8QGҽw*>R}= aĎ/jӸSL?|O{m+;F[#%VJsjqkhl ʀdD3W#V'vM">dV
Xc
Zɧ Kfѧ%5L5f`ů69с9¢Nob2mG߶>0©gzzKIlHQS@;<y`*Fg|7*7jn0pXP.Um81 	>G
u.
cZ@
?po|goll%Cu&yf#v|N";f=usdU7]izf@In^
|fr0S,"arR"gƻ:{cG>!sXjdak	d~ >}qX.79V!f/#Փ3Y| i?158EڄrtA'*V
dPWOwH6 ԋvsژۢޚ67q
p-6Z" fۧD'lzA郠mܯg
Mx
Λ`4, b[m^o}˲`ZI.U+ܠI}K$P.! qZ4udW0OTOR8eڕ[iZ|lMܾhpEa z*:;W̓n5>oc|Ag+;.3>nG@e>|8<衲RE[Cm^>[!Pm=^sHy\7g4,A%i,-'osC>Sɛq{J^ l+>S=9J<a%6uՅP2ޜ!@@e\"Xb&YCaVn.׫Q0U-@j.j7
&~ä}n47;8Fy'Xz+b2TI`|l2{iP`]EYEee?@(Λgy[^qtIaE3)	ƧWW:T&ŋƟ=zQs$}z u5zFJRnmo
{+"s)ĥ,Q-0!̉^Fxigu~V¹nI#b$)f3䎽&mԻ"]xeC'Pࠑ+y7Z[ꌱm!&[*b}lU-auFqD~̺'h]Ue^P`"E`&jz*?QvYs0y@
чL}nv
Br=4pNl0Zʧgo]SEu洕=
vrLdfr]ihm?ƪ̥ڨ<:Qxf+^yɗtM
Q{.$e4A9kL^cܦ\ewk^Tf>dqDQP~hBp+fj&LE:z98> ]a=v$oҾ0n0-UbAz'z<wi!8=~p>k$߰4:-KfƜlEoyqNymXݎ޿6O.iSK	^ep⻨
mnTŃ|~ *$SYu>]V F-8r_X"9|lY٥	D$ؙ~D.E_XO%[RT
nԢݾݱZ8 XR6E2UCJ96=ݕ	UVk]e  NcN9YU0u	[*xŝ
)U䲮TιnSwEemd~ق:(;
Ʋu3=x[6-ʞPcLX#T7%5	Ɂ\e ~s 8R+R(ѡ?0G޷q8
Xa;: ̝-M;y9pȱ \6h7yJnD IJ`(@/wu==/'y{Qx6ݍ-	\%>˼`({|nCNoO.I7{@:jޡ7z~<5vх۠Gu-#F!s*Ae⸼xCz
OԹ[!&9+ !40O48,U4oc`nR݃Kn&q.%a?sL]ko$ #ºL\D1zً+uezp\w+ƽnnڠ 	f uoDUt\7^=#JrĒbtkȔq9Iʧvp89$S;.5:E>6Ffk
ԧʳŷ6wޏ.J*q? :,O`VFwK靜 NMn~[a#iy ؊ \h,\lJJ	zfy3(=AK2G똯;F "%yP'oB@]{x}ua0uzeBrKJф+:.,tp#nBG=w2}gvxIF~-(ȓ>+j_8Iu>r`I4PfӺ^'29]k2ޚ_N9xrw[eVE>HqJkxA^5"$%]{b;eNU˞H0QYy~$6
BLˇnI| C-M
6NnvhC%n7wmF @E64`D\#	O..
H&OUH1{Uq%;ut0WHϗoe>,hXIZh,@YN.|EҺ\DUěVX2t\PqyN:V6%c_!(,ڈW֖ٝ:t;mEA@ v9=ݱ= H'pOlXD-2iJatʰh@GPr1_5M6U%	KK"t|8N8 E	T1kA}[QOĸ$ m8\ڶX73`kK|v"YAڣn-pCki{Ywe{=@qf^P[-ӹXُzkߑg\E,qsϪ8Btjќ6xOI_LC} HryzrwU怡|AQ{Y[ŌK{gnONNl;]W{F<THh4FYI!GE9+HV%jơB]y/|@\7ܐ|-j
:@v/^D>l#;wn*ɮ\46sQNu]8wPU[U1SdTlw j[T\߷D	֛'HЯ}i:% d!+/ DuRk˙"u?YCZI:6qb.,e=/xU+'1-ViwVێD-]|
P|_C"op}U/daW[!$Ҕb(ғ{e
x hp(iz(FZӻQZ_ۮF+|.a\B;=2${7ryXef%𓕚QٙB2YBjKlbO,d_ 
&9 GJ~"(#P6=/5/S-i7׳ʎG8`e:{|E\>6j/#Bk|yr1ޑn`KA G 9trMDޔtb]qp	`=rh # C3ȷC
s/Sэ$mj,T'HOPWp'@"Rߤ?E3qi	MҶNΌ]- }uf	3w#Xcr<{7$711o!1I&1W0\_fۇ 띝N)J%i!	[r].h8PAgkD][TSچc1R=TȜy6NWH/l1'Ϲ	 ?Ѳ~q2#*Gou8$˨#jm0o=GAvRY$*!	R&JՕUVIU	u&A	{δǚ-"E0Χ.=_ vx!]#N!J7y{kCyy 5Đx	 \R?]MWܐUCy	Z['F`U|WkL*sh۩doǐeKa#Տ`YYw7
<Ғp[A.<ӻ:C`[8K*4'ESUɀ+q8_4kq&̍'AWC]OE/7҅L~:򝎝Ob)ں_TtꀕnwlD	Ʉ|>`ST	RLp=^L09I-X0u]tU
ӹ%Z|$%GJ** 2-v{؃>Lxv-xOW+­sPrC<6vh94@?͢dT@֤9*MR]QtD0m*zz=qEԓeebMSbE X[u{fJ ?K7~\zrxR^pN^|?Sa
+zE9W!g9NT׉[	֛dN>D*:.-G/Г*Gqn
ucih]}|̝Jp2
'nu`G@N\Xh
.ǃw[jߩ_%-#-=v́sYlޮ:N҂1
h2`p`S	ʄ}VyZlj-U--L[NʮjT5Kn>ʡ$w%˒aSoۺQSO_
F+fM9oҢŀyVFuTjX= ֹ^`Coga	:\̓Nݕm7\
>tnK
WyJW\D5MYro^Y ]s,WyluN <ZxĨSec
whY	SP6]CSɁ2d 7AdEES`0v:Hn=E	\QAf,ߛ7Y!W+I 	RJ2s	:TY_ns=4
}ɛA1otgY8c0
@%a%
n6r3|1'Ƕr4i|⪦<(J 
y1p`;s	(
Kp0&Hң;B
МT~$Vn_i$L!Q͋~['U~R1P}TKc:jodL	_qn~NHqx`p`{Chz&54A
tF yǘdՅp2)U\b?PiGl-ST-?m>PTx0Wq*wzURCm<m+7r9vUuBoPpc#Y-Jݟ)
6p5Pju%%diu2&ke!XIJl #El#_T>Ct 'MHOdC1@guB$4@iUQ*PpZ'[kW#l`c7ax7A0@R"[Uw%h{W敾JHC|׭ʏIp3^
MTiac ]VE
أێűr9]1NYWQ[Bgt>JkyF4uKvi4@U3͞x#U0C⭉sOD0Ě.q/g?Tmi2y.R5*Z?^E7HKiťԏ{̻cYjDv7Ȥ7zcWh
}|FzCUv:͞_ b}69W/T.3o
hS^pH&6[
c<
9~jDq݄K7 ;_Wwxۣʞ{[jַ	
<N2YTz#KR5qEщ9?Y']+PKR`{ȳso=8"n[EyFe
USd4>yqlF1[kS537/etU|"	$-%^oW!n@uuy\N2)nKY&89#x:	K_<Bdu<<hԜ+J"i`Nu QΣs@ctHkթMz]UWe>o<ܨٗ89YA^rX}#ܱ
,U\u.}_$;&C#*uo]_ΌԗSJFrFVm\,.*BoI[=eRZO+ں8N|jHa0iE :7>R Bcn7蝅'Z_%rոvu㺈K	=}Q{_1lx6I6ͶAo7?d'Csʡ43.췦%]q&; )E@"'>$
hU{mJV_*ug?<L©̀-Q1})rSj4и @U^T%kfIv #eF릥^oLB:۳wg1 k*_9G/q?ʊfm$l?ʮrCА;JhYo{/u\_Odq20=(ҋ;dދ[!7,"{78mRj):|վ:v>,r*}o:u||!	+k<B(
otLL3Wtqm5)?x'~Jyyަ+u9`ХVe"yQ:h@,+5|Hm|i"I-Ag0IݎeVIY5ϡv8AL*aKK 6bٶ
Q oKOp:vmc3ra]F/&Uyt2PV+bԂ6s_BxLꩀw뎻]o⫰&ݧnv4 V7ek:\?4$-mKrM{n
Ɍ%xTNg3tNLI%p_F`})M׼mA\10	Xy*]!s1w9rZ5߄"5QJ\MMj.^7p4K+lWr+~C)nӻ]vf">'60hB^\w4Pr|O<NkWK]sPbNT= 
ĶM\[V{Ne*+<^l'=KK-皵)EPI&a?ܡv1dV!DAI0Ii΁9Pf@D'o
2þiS$e넜BDIjJŰ5i8'^=cĕx+\3q`dQp2Jo$͵$=elbiVp%:&5ɱAh8
Ux♑:5:Q;ak+P=I#TM\/$n:SR jEyHꬅ#W(3z&."<;%uJLL9~#J;N8v-({ؘټ+<%#|Ru N
7GFJ)$.~	Mݍ]DR	 lwEvnWSFrWwu*[w4_Og%-"pVd树z$du{ؑ]l[;7PI|;=^Tg rg"4;AlRNjK~@1y0FEDHIw	l]r;K'p[!iVgi 3)59V-e5YV"tlR6mڡ^<w-\q
y-<jvE6ݗbIc˲޵\TDpvpGlӕ$O Rfn.	0)Uuܳpܿ
_N[5ҭBw':pV=pn:cj#wn!턏Ix52x^b!:hkv=iucф)Wc]k"^m;@~I3Ҧjx.?<4>wzz,7 1ϧ8
:*<]ݶ1y=wq3Sn.%̡E9o]2u^@[`E}"(\K计;uIZ].9.pVn|L6`IG@rx&Hy /h0"YQtwz5>rdwthO% їDWNHSvS.i6C-y_ᢿ:5En/)l|ypur[BA	N
|Z{0-V;^J:ɒ3u%Gey[)G8WGB5rwlu+c
|BhM.xTjHIWLs̛Q lxQhw4`S_hFx[T'9i0Ѫ~^(EsYh~HuzioL%zۀnb?GvQ53y8@eu<<nS͒؍ȨΖo^A	u:>5:4N8-:yp 
@}. o=Z{C}/څi~Jzp'.woʗ9_/:Ez>N_0p{lK<2"hU&NV))MkI}FNʀ+AKjSݍ[1#ѻZCVrY'd\om
G&xVC1 8mr!RPI $J]<t7R*#IʿqowQ"|nEQxIS?5t=8GN24{j(I>kc|:o<<o{ܷppw~D*q|qw
#U^!kR.?FTzA\!	t_=䢪v+3J-͹ϡ@	ݿ%mot488$[O 
qMw 5WZDmvp<CeJPW=A=
{Y}lɀ)QB*Xc]Izx
|7$*@}1dxsqn<dۖ$$k[w@]Ng@s)8[PE -eSyl7nɖI=}V>W;Ν]ؐ?2,\]@܎$tԡA]%6tR6"g׬0sr,Ĳ^+d:X4(8*Otg	$ԭL,c)KI=sY]82Q=X(]|C]>BT,.1eg~I \q<7-#Tv7ݯTw-?`]%*"E*<P{8ֱu%
.uZנFs2R:g?|9dtxT/<OIS#wwTV^l<YʠoK"R1vEEx2<PKp9`ŚmEwDg};lL'R,wR+o'E#WJ'z
tH|R6&ynLA(>cS9}ä$sùA[Y&UI]u{yuoFWJcWt*w+Jos9͈;&a";'j?}E髽N/	oLc>Op!;jNUkt: Oλw_5fɋddN,'+bΫt6
dBܲ!/+vۗq7 xj$|+˿(l|
5'(nS[*;=#A?I%+hrFekxw8 1>WxM6G.`5v$@:	'(AOJՒdˢzSd4VCp\ab]7p_SjOs35{PI mݾUm%~Ԇrrl-	]Sx\Hap:(ApMኀ%| Bd
[JJV 1oeQ99ݠt$BOqTɾ_kNt}^j]k9#LdU@2PY6>Jl&܎SIۧn+31:r/oЬ\s]74Vt *rxOTRIjv06O5?,&NUG~r}$ZVѡa8X ᝨB=4쭚;ŰYdPzV@(B8Z{$į´ GZim[us%pci}ȍPƙ5BpYNqRU1|ȿ^`DaTXc(+U.#Hi_c˾#4 iK t(1F~&$:=z< ;QI^ܷ>u^Sbhmeس]U "<T۲g E-ח {~v1Z49>7,3ѝ(op*5^F{K&Vԭ	9hdN@P7:hpݱ,\dXbqU o%%"Щi42=6qhzՑw[_UJ*5nqh+ЄW4`0Dt%顗eu%V|lcqfɵTk}:dm\O*rqϲVG,M>0)/
p;n}lilv:܋KݖKԔ'փ-f$_f.$M8c %Ԁ޿I.`
q֨J)s.*T؁UwS9mGjk_Qt5tĩ_xhn,;HOr8
zjakrO8~l"sVRx.{a[3F95AlI<lf.FUgoGm%Cr+	sY"n;lMOs$8X4XhGV	/\#'g˭Y7ym.Z7Hݩz[+Wo3(i׮SNKjNP7.S?n.4o̬J]p
T[k[SMNtpvѩ]yW~y
y=7"bo-8
)"+N`LgJ{^q6ڵ;y4,w-9ǩckA=Y gCEWPy=BۥUp*:~u(^.	.|EZ]mM.ᅶ3inj	t\2πDC||1Н=l !~VO.
ќY5 #xG_V)xm
'/_R	Yٚ%QI\8d@%x<qP0z*N/3F@:=xtqV@3pTS;tTD+QljRsϯ.A@ĊiD:>"ع_$[w<
vuGht ynǖn9t9! >,uޭ(]O6mwBRZ ;Ĭ`e
7Qװa: be׸
j΢ڲD)@OjQu?k*ɓն
B$_r7׫pʮ.ܥ8|VS̘DT<V/.ז*?#.yO?lBw_~obW.$}ZUJ:pO\MtNji
R;_-y80p\O7ӳGn'&Py6r;I~zf%`3G5gH<Kk*7:@9lZ-\	Np8Ցo>(W+9&yݰy۶'~fo;4 3cvZ]eBv!?;ō_}N>gm
CDi_q5cpA}(}nFOQ7@aWù7 u{aJz:S@r5 Pu)υ0 X-]{Ĭ*Sqcd*]V>bYg
dॹ81kR8&{a';ķ[Jsg!'1u)7Q_nG+a`$¥B{%Fr7[)SxvP/[9)O^$lČnkBCNQ{A 	2!)VkGba
EŨCöɒrt>%rUU&=sآ}xٯS7щ80$JbfuϞL0ۻڥܥ-	{<,8Cyn(/[9CD3RnrVT>)V%]wE	%௅8vBP ԃ{;jGʓܪēKΟ%Ow5R(!+*ʬS r7MC6+HH0^7EH57]#Ͱ<p$6& UHA\'0QY߲坋Gi+/$]}'Y5\b};Z<ŐH}@"dFZW<ޒ|Ra
]e#RGnw03[?u\v\2Up_Tf.0l_"\OsZ.\qhڞʌkH]1{R ^msu/s`'U+]š5
n]SP'EVݴOOk+9ă$~ԕQpϛ>yUNexf+rWprH+N$nץ{Σ1I/n`kjYfO`M8K
!x]SWj]nW/8p[ֽjv U4=,|U;:Ȯ(F,k&Zdf&c|wOmkfdo*%CФ9O^'_!D
R~`m3nz2N"9w}4-wޣ1\kU\O5N'nƳlt޵\[ٜؽϸ_uZ(Y$' `#S#erINSC׃ǰ'J,#D4ӹTEś0ϕ1MR
ݲX`U:?})xGBi 'v[cө n"mm
h?)~m-٦'rjrje%W3]R(Y2oiF3@GױOKof#BbXcUzY>@=&F:#0F' ćB]?I>r:4E%-UT'kKy\shx+3$%{0SHK\k@5:
p9}WurBN/y.%1nU~S~F 7d${}/@/d۝?Kɫt}ǫueLyt@osw7
&~Ji{Lgʤ{8jdo@3yCmGAġ6	fG!fh/rEQ&?uθ>M0:V.)"I"kKaBM#8wv1Aä^| 	]JՅC -TtV= a
fIj;jyiW
K
|x!NyaasPUu"m2Nm	񹦢gO"Hܾ1,'gy}mc6DԹxyXHO0mrDR
o!S9uew(H	Puh`tç;3<E+ǶkvOJ*PVSE/Ɋ.+@4~.
ƘR$o]q!_WX8]{,`KIsBݺrQ}(L1j󬃑>=MAkb?w{8T~lh
Lu:uG)}wr(-@rGgIIqVmy N-%
`RZ^Zz zFiđv h@hFTӞصϷ W9j#!Jn	w*sm{g	񫔷:hz.Frּwa¤	Q\ᒈ^=r_떤Az@^.ǁ$N=V$Ʌ 'xh7D|w)UTYt<2:iC[xJ`hkJ\O;ܑMXh=Vw5nBW˼e@R^rtCww{ѦnQi @9#LHN./% 9ر-f4.:ꠄ3N,GF *JAI5frLʈ~]40l"\>=֘I*h1VoaIk9㞯~qhRQO\Sj0Xz.Z۴x\s?GX:~ĝ
d1{+P.jU.߆K149W$:\jRƏ@\v~f߻U>h`ZNqp9ߞlDQ&&(@ǗQ9	zNMqQii6}j3ϓ`-(A]Ζ{C /pD|>_ER}R@Y'k(Oc%񜳟Ae
w1!X%!
u#Aݔ:Xϵ9x9owAwdSiUrG;_m`K_rE2 '٪RO2(@!kvྠy 	#>rt*l~.kKqx)tLHt^jB		1^ZWի C~χ$+-@ ߊ/<z;%%ǋo%)RBnBOL.gB_w8Aʞ;")stBDjQSТ-O)gؕ<aZ}͹[♟úZO$ޔ2`Wߞrk7'xN.[3^z{{k-gz5^z[s-OLF~.lnm9vJޕ.ov3aBKd9=lYPrzGS\q._f{\Tw}PR+܃GA؊2m+;#.`)nA"<DVhDhoMܸɹDD^RPZr"Ok5t!Qy֮nߔQcrmYN*T%r>2W@Rm>[8/v[|/E5,nz{B8]_l/ -FdCٛԇuF
HC<߽mr	V[moIfWyNQu~A8~Ƨl"#8:ԣBé1۞Y?jr>^moZ
<ΘT:(~4#"m?<]
pt:)6ܞ[<jw	t-5-薫pwiQӱjĿ o/GzGڒMc42w<ƥH3\
ڃRt	%YA8c_ܾ/6ɧ
U;Rl?:bi`3#
ʰd6Ӟ>u>yuD X窥
0|5#n[R@	 ۽},(y$KW'!q~.N^ɦ "m㮉}*nQm÷a_dsdyU3oٳ9!4ĶA0tR
xw2yZ}Pwܣjł)Ճmp*)ʁK:,vh8pRPP7}VL`^Wq54c6`|twKn*cHL I4V҄)B 	nv%a+
'Yzײ;GRR$.
ѲjϧP|^]7`nabM/_G	\~.m:^ГdI3 ＝z}+kլJ=qMDsN9ٵ>޼.Xh$UxQB"y"pR[\iT۝k_: !a+4~
P;db řEtkIPOW^5hY=2,H+~f~WhǇ@#ǯWt|[etDnZh^pٹkmWٴ&}>[BsǦ/q)MNl)+]"I9HWpa
Uq	< -]UV}<+M޺#&`r刦z;˹`_vq\:+NRoAR^9Xr*#L8ބz}Gr.ar<hAϫҾk*tG릮BgO[}HsQt("0v+ln8[՜' NN:f
vA|aU@m:<)1p#w[Vq;QAꭒr^%j:\"
ity@P:umcvU)	/VQ'{sԯk>?tQɆ8j^DZ}9vȦEYM-ir`@ɬ r)(n[+ '
W{XN6#LbΒp<f1hfy?R7T|V>iwU
϶j)8ӹk@\2'baSS-ϥTTOwS/&3td[(D9t>v6{߻p/q^RQ.mߗ`Y-9u9,"=ԎtU<=`4=!ǛWuJ옇BmlT,
h_zhț[/j4n£_C8ti6;o>aOypسNՙc>}j}4ߗ;J
=	VI<Y^u=<SW=࢘Ujtkj
C%v_ _HNI2k#ܳ⩱[ߠptg5Q2iJilN :*%`?8
xRPqI}cZa .=I:PGDר rVXVWR*${;,*b"\*mRńBpʈ~?ܯMQQƷ/S	^o!DƉN)`cgSG+Q< Wf0ɷ դg\UƚN{pevm	]$A@<q
vKF,,N~89*vpjA̗;5<Rhт^܂]RK.z&OxFn\0nz?ޡ2Yk/8Хo0	UܕUbϏ<=>1Urw&q\'An=s<	A h{#_S0}HL~%w?{D<Gd?W"gy&U6~TΜՠhЛ#.X~s}).usf"桅]w@i]G _
9
\ۂ*YŻ{aMtaHRe;{nUI
S@pA+ܻ  ec-['bݸ S׵"s;Gы>i/7T-(Ax8H9NS'ʭ;d$CJ/+`u1t
CT-Nm5*5Zs,v[@N=:'T5)F)ޒC2j#d{w
jb 	$H0fMI{HE?q)%}v="zսnI#Cp)~N`ѽؖNA4/ Qz3v	|)~zpm<[^e*3qf1m3-C]h+T*\IOmO
/p]CF޿Ew̹;|Ds1's@aF~|gA܏9p>IB(Q{\	T`Xy)
Y#'': )~Y ?B\`"ڛ|dQ	F/kj5d.=d]uRʖd}uw
6ZyIq,X;L/uH\?t\<ZPyZ-艳bU>3T	9Jk\-$2\԰Ympzf;kW7wy8^0Bѣj%qoG@fz]CkFšu_u.%LU(TX*bvH:uo%(C񙕒6mw{;=|v#$.ߞ,ku)Ov"oSӖov!Np^ՐU8_}<E|H;z۷ǐpɆΡݪEZ2!NJ)]t'3i.Sіv\Ӆ{AeO;E<{_܃]!j;X@X5ߞ4ludba-o\Zs7b]V
[۫gӸI̱u.sXNqs_Mޟq>w!G i	J.QyC7azVkV\;Wi3hۻT<8-iӅkIUr:V	z3E4CQ ȃޚwPIw̰mvY<fe@Kq4}x<%vI9SK	eޜ_uK!7B @}n[޿EXι8S[Pvs%]"iq^F"N=*ίU  D5S~I=3gLzIvF<J-LG{V:4@*U낣	^5\PR&9r/\>Ց6Wi0M<%VT8Ty5cL3t}Ȥ\Ezx*-UNߛ j㩳FNx .
 F.PX
0^~@l<֫|_=9[ݳy{Og^i좬kۆ|gZ8S\D!*?Ŝ 2'0XX;v6[sKuTvG#I2_Veg:ie8(X-pv?Aa#pIEf8>jzn'I	8B#˧"lJh?y)~,\W3UJ#_#VnOUys4-[EP)rᴘf̶d;8Ϋ=cԪb`,՗c9xc*.S=<|NnK}>^t@^APގo%:cW\U)36~f
f[UVo+(̅~R-{
fjߞu\mr@D cS{j8ϩenLHZ%v;KIyA[["^Լ[m,g'{@VvڮG*:3?8:=
!է4i82gQ]bfd҆/JYr]H#^<VB%{8ėTE[QްZcu
y_J;vcqCCqXwLA7o4}X/Fab9wM{Nc<O3n22,v
S$R*'o :5/Q?;cuSԝ{X-
\Wc0i:Rd@HÖ>hKrT~?-94m"]"|/	ѵdOFgZkVz+e{?&pꞟ#Xl2͛<Ҕ鹪XH~=
"OW0Ct+ֶ`[|*.Y 06mО/K3Xު'Wơ	,B6&pyH$E9yCIίYGEB7A;9עZ #6tJ|DFjTjG._׫A\TaWquRcZPT2 $O)_$KG|7:_MTK \3E)jP#8[XNlǉ﷊xSQǓR·ܧkI&߷tu+.c97~΢֞!\.jPYs$ߙ&@h) |edm)lhVjMzv+B8RH8?NZnwz+^]rQa_|xEq`U֥
@8?H7>
N޻@3Cˮd{ܼWRʖ|heC2.D\}\̷u~'	Dktn\#u'iyzظ
A{yGNl
bU!;Wfh2E:V(l:@d߯:Uu&`pqH$y>drqxw0x(d
sس>*U:`fKPؤ~|$	|:n]׹Fw	uC}Z혃ᵸ$C悀OaNfn{a/J)}
Q 1D	Mw,jdr)wmL/n$]<5M3o{"]V!p6_'6dԀ:_ʯ]I
<E<̔%>_b8ܒ{Z*|?v%>[ 21d !B!O!VCc$)E{\kxo~*.3OTU+_	P߆B.F<)RKhKCе%I,(dmY^j,%_ghAǣz'T?29kb6qJfU۩XL{vC: *)-V|8>{ UX&h8N2Ţ#oO7;M	Ѵ~rkmmaGLJik]jO0a.6|J|аc|gvy:ǸS"[9Eh| L-,C۵ 
M@:wAە|i)@HXBglnN)y-nSPGڭ7Om9BzgiQ+|<5T#\'9i]2.z%&H6 g4(h
p/Ɖy]X/T$D"|qr5
+f+ggq@~yNB^O)±snnW)֥OuFjp9FWqNo Ŏν7=TLthw js4HxM,)轚xe_^z?ՠ.fԚoLN8ŭ l0}-"Yte64r*v
ҹ<J3js)CR.Fv< dMOZl&7􈿹I#@Z> Ef~q^e8]<D2|!)V"
۟$uܶOFR:v:LrݰZX?twK'UMȗHMH~,>URhQrt"m*q'ka/}%rsP!?r'((b9ֳ>A}kkՁ}U-PmxZ\ Wrsei8+t@NoHJgpd֛hMVf8-֎UUj8PCҶ5$W`븆DI
S!g=zzgL.徥G'[u'FMnZЅ܊wQpeA&]ekv@;tȄd0q9Z2j[`@숦[{T)jED˰רȫ.CIgd;%)ttq X4lID=nPW7!>olŀ>
F/su]Zc "AȆGSփ>mÖ^:U˰P}%&gO⿸3pbF5@Iz*B2TםKF2x>~l3^Lz8cI[rK潅7[5=<XƬʵba?mln|uX!sDSȆ>g[&O_N7v4In(O%\v(`K̰`vff
<*8@Zp/!_Ľf"L5Zr,0ਆEHհiT9B#UVX$|_t}l^{j:ݟՕ317ݩӻ͔f"m.L QȜWp+A[{Q/P]:Wƫd("
Na眙AXqSn76`gY}gop/{s0lپժqr׉ˇfb'=tu{q} n~ .*7N?<,g ͒i&VMhCͣ!XvNL;$4D# \}y!"
$c]{3=:ZJr[
W}kNSıM@B^'.eJܡ~ XgG.|kH.
Vvq$8ǧq{|M~Q?[Li;.jBsEEmV>FSs|[,j3}kX:)]rKP;"u.me'谋|=~jvA_DTTRѥwUJ<iNXotk@:UQY/0FVk){I~~ؿrc,@mZ!rd[L34AxlDP9>ysjC`l 0LQC5U.YVq4yҎvIo(䁻Gٛ<-Ɯؽy2KVz]`p3ȗ?JT7啱2.jxhȧlѰdmup-ޡ2"̇I=ܛǂ Zc^VH1p9IVu):.K[2Z*PʼvMvi`eUmt
\ڙnxA8)#ˑ|f
#.drM!-9c<ˡ]
`%}UWpo>١W0|b^ ;
շ[Ghq)e5];%,E"<Aǌݭ؋>$))1YmKczV1Ka#69d1thq nK0MR13Ս<n7n|$?" $4r{q[k=\VDӣrYj@?x,,nסf='}4YxQ=ly1
dY(	/dVR]gԓOh"RIA9q(/W9ϴZnߧ"_;$Ƀ
A7eۉWLAl2zddn֒yE}	&/5_ vl`	zG[S	 \ĝÞ jD{NǢЃ)i'J Uu8@_\/άܪ]K!fˏIgH_nۅUJТ0ѼBNey&|Q
݀(Z*QsBV'zJǷit#"_:PMJZ)"쓵5B*9E. E,#aCONXկ`\Yyϩ_з~~՝_Is:kwp**vhyA>)}T9y~YoNӴk<u=#@ɊM:\Xqiӥ>S99s":LPk[s[iX3dSQ ; 6K`]q@ A!;?"luqF)/6)G
e7.b@><Uϡ,`M-.2_0C%J乥^-sXoSAp-U]%8̜ 4!zPDFOrC%>˯8	?Hz9%8/a`O+֋::r)kDmU;
`_JGw?q˷܆ӣ/p^jk΍ljd(IJE#{ q*[G7ga|HW`J+DNk{TjU&pjJ	 
S;o
(y)8Lny?v
u tA'F:쉯5Ξh*
zܾu%obw2lHUphz[q+ p0۶죖0jLYvZxKT
4BSਛA^bD9+w+DwGNgpN#_N9^r['[Qi}{ݧp&w%@^e	$Ci뾼
Dk|cAbW[rT.ߨnnZ( 9_}n'M4W%ϪgK\N(/*:;mǻŴU>x5O
/©oGfi
Z4Asx7V@RH3rfb_YчWz) WIną.j11)!Q:rT4Q)ѽ
nTz iDQ3(w].drt`{ͭ$Xk"hܸ¹?
0u^C9//:dzۛ {R\a5Z¡7J{Of)8g=X[?0ڙs"7ŏAT#-

~tLHlվn˻ȦFf"pa#Q]N,SBlƩn)w;ӯz6kMU}]MҜy:uusyЈ}-5s"Z&H*'0nQ@+h^zl3%߂,ʘ"di0)4xw-rg,ܼ~^d4y,U'wƫS}$!C(@bX+Yԙ8ԗw.g_UQ5ל #<ImrSEGh]|bⓓLrx <*GE˭W1d zɩ!y`p[+"R$Ƣ#@@",>J#25.DvJ+Tu+(vwu-#ǑjM賖;+5r粸8@D9? kO0P-ބ$~jeF:H*s%	J4@=qb;E.O!ne9}_!}{YA=E7_aκ_{/
]nUp[NvuxwKu	X`b;.rO}lzz
'm(c|nQ>{Yw7ޅKs,WZ`v
8.oCrz&<
Co0[wpPW2779n۶۱m@9=_pL7mYrzC*
f]ܧQZZw5 @BHЩc'՞d/OӞ7CeVrogN9\LBW;g	?6u ooͪz}-}6TF^ws0puwуKlk>#@7qHM{
/J]\Ad{ȑJvQnzI$DSN+{8DRvP"R\jNk1H>ndԲ	ZTttM{nvxd91K1xR+BxJwuNn~SVPJLCYoZPQ,2TtPDjdu2ԭ:vcnSE9/?arj{\	WqW"M^_`6˔$?`LW
ƻpur{x.?1mōcZDKZz>:֑2B]4?$Wo-G<Y˅#ʁH7/OCp2e/ud+@
ZIEE5&xO *x%`y&JhP
}5=?Ď+:dW'Ic+#p;l<\+o D+*o[kyI#0@=J"4kSلCq;"\*ZZO6Exy)p	wRM#oVCrƆ)`,}PU[G[&yGQקh~f?'ݺʦZC3֪֯˹!Tֹ
5r~]<Sc0M=DX0WLe5!kIrAKtkӚd6NIQ/鴪Qu-Ƌl^[Fms0j>ԙiPHP6R=YPots<s{c^e/7GhK1nXH?pia`[#Yvvׇ||49 -f{JS+NS68c5)nb~MvFWb+6	]$E>Եv>odi	kN#!wBQC1dNr69߯>+cpkr@E[x%6}/Kt@Z-+',uZΡ&c(R) `~KWUM#z򐜗dz u.מ&в587}p
dK1Hd!FB?qp/n`VY4p'ۀn[ٓ/ Pye!)sî=vY
O@bPE@
^4Mta{
ޫ .?b6o/"f5,/"-Ѱ.FMX=5rTօwPca?z#Jڛ(ڻND^ sTD,!߲C"|XzS-yB.c!NUǁߐ45obb|k-oDr[=rՔ'/* Q: W`s}є(UyOpp'؉C<E=ePAs#]xW7\]I< Iz*Du\W}$ǢP1D@ȫh_kdǷ劀ZHG
u(iI㢄O{>guH`/ī\JfS/~AjF;JnV}0wM^x6-.՘\#Vuwӱ~#0x]shI<
E.:gd3 Hf?sD!>xd<96)wAJxm^km#HjEUB`fgdK}_фR˚#we.Tr"B*xEuIgWV6*o+|뾹IñyRϭ@ežs؁7ox&SGRNro}?>khM`iK?TNP^8Y I<[cԕ$K(xk׳8 󂲔AP$+uvK*	9
i'$S;pc}/ O
CyЉeM52T6>~n\'HDxvz-7)q' XJK-OlCj%VEǘw)..jXjǹ]v#T'1E 
y=Q	eJhSxq

w>Ko8c@M%r7.-Θ`Dh3	o'(ڂH53$*ǫ:WWduĜshULXRļ ,°vGˎ_ʁʛr<`Knr]%Dw%!u
1oA$_52_WK˪(L< t}rs"# 7mF7$U9r=6%Ծ#r̛TZL \Uu5~)	NuAiPCMש6nVK	C׮_ea37{'[n>~WCOEpF8SBGj_*[+՝VS`/r_8UK`i@jUZḄ*FU뎉H"AMM{"<{)MgV/kuoH녜KFضCw9}-)	Q*W7BJjh!!{=u>{:HїVªxI<i
@M)˩!l&/g:"l
Xqks
QtUDP/,gaw<@jSʉS؅5llۇdQIlT-L~4#4U2:`ؐqDTE8Ӫwjx >*Neyoa2RI,&á# ȸM(۪%3&£-{ֲz}tڌU'n֓~z	`U

5
*B+)oӜ=H$N~eKqm[dnȡ[7⡲lO[oꊙoF
^~!A5 [%V1:媒6''t*N7%C/HŦ6\ _RA"R=_M*[TO}ǻKl_<C	G'Y8ikRWi*p\Z쾇B0]+HYpS7kɱh/N]:h]]l UP].쑥x
"l 4ئR]J.vGqaqL
Ĩ[pV7M73e꿸ӗg	;kZLoVS<N盖<^4UC[pʒs0S:ҳ23	+r
hVTu$Y5`	Pv0k_?zg}9dܜnUy.^䷾Cٽ7	{oخM]|.w8  8ei*<uڥ=Kе#b6ԯ<W`n]!]KU
ݾ́ Uo8Lrؔذ=R؊FekĴqN("o9Jnnͷ`{d027"#@03>GAF9^]}	7Q%Gһ?x'y˪u8o8geKa
=Λ7s *.c}q91ҔkZƛP nV;
U+Cm4(A}EmjLyj.5F!Jyw^L銾36+*6ESWS:8̑+=`N ظכr+{MjWQˁYArei,y[C>x2έHk$:UkĲ)Uqy	"heP$V<|~<sA@H,dL.QhB>ovŶ^C&"mj˙D~-}!n[0.N/oH
.;H@P5]hmNչ2
mpX~vy`'ilpuTZݝ>;@2h]PH8 	jFr<ɏV;(j썁D#F X
Cꯛq/bʞ sAͅD RiHe6zMn]UW:ءEÚmܣip
n:z4ǎ 7č,W"`{Ë IQ~
\]HKR	}#}{Ag_hCu;s_|ѕ
%ECg;ϛT\+σm^-~&5j5%³w5z仃;/Gv*er:H
7r|ovU=@XhtP,:nGb/;(O=&qu)Pu,Gx\bj۞my9$tY#V4q OTz+媂nչLH?ɹm[Z­9!9髶9ü?H.9rT	g `[y6U@Rc@(|~VWj N
`l&sh0v~P4Aq;,'GA:H`*Y^ -(͏2
ѱ
6VYM+V}XB.Uj1Y.ɪGX5_,F͗Ce 'K"9LHVuMy?.kJ
_{CVM!#2-e9Lt/'M;vWFDYt#*	 mМdL'd^G<$lv9KNḟ*Ϛu.FӱFٕYeVb$O"^Xw@sJ	T+^|s
g}Qɮ>wաh<Aw*o54Jw"ga0ֱŃ6I}蠫^p-7Wl:#AvH9}XP&vG_yTKnŹr
#r9ȗ־ $a
UNlm鬆>2{?!ICQj[鲹%r=pY*K[K3J'_%\6=|(* `EUQglgkCmäpr8kZ1]ąCқ5"͊$4
UuQ$!m%<`.) ln2
j/8S@IxWtCrrʭ;ָM9,<߭x$5&/殕`i=nr\b9.WO'_sN!@OjJ(ao}'W@zv6f{)]Z1c~`p8lO{jq}~^Lr=.ɰ{[9\~t`h|ܖdE=6cR4,Kɲ	Ujk9VU
jt^YǥީSG~ω4vt,.UBp$WFtp\ќm_&}8@A9S9mv(>+U$S.Pqz6+pYՁ"؎kK|uOj
AAj?8U_xX7i$R܌J*x̏I?$T
yHE7T[6\VfLOj9.\򁕕гöAE>_u":׻˄%?9:sp\hJ?dxl/̢uFdӸW,oM"8¸tB$<oW:\DϿVG<Y*xZV%Ҳ4COI9;Ǿdo}p5gfpbVRa:%5:xޕۥdRnBW/ftqͭg+ ߸ER('w1Gu KJi{3ɔ
9nB2'\hD+'8p.QGвu
>N)g	ܔmuw!ʜR="JJ.'OHz{ѭQi!3kI翬;9#UɐeA}]"^nPwp)=LPnX
-kViF([3
,'ztJ(vE]jm߻u 9tu
#櫞F~rCq9BrVz
7_K{;aݠYiU1j ^RTKU`@Co{`j
$^5N@MI@_ k/ϳM!\B(ڬֈjmFEEu}(z9}֯yH;(
W՘ )zJxE_dy9IξW7"{''JDo$QTQџ%@WU.vW IINꢇJj	auo%O[EVFd6n˴rGRYU*4%ۖmn<].ɴH$e!-pqV^̿ŜyU'H:\R˰Qj.#⠐]W<9)XPfC\S`gl4/-02%=#pKnXD~{PhN?;돡
%5:FuLV##Nނ-=ȸE!t
:~)#Թ'ʬ;ސqm?L-s%Mva)p辑
J[˷b `W<ئSZlKOGH=EAWsˀcT8Ԗ(bTf5|" uZ9BkٞwG]:%GHZG A	=s9/R
W]6d_zsCׇȃ딭g- ݘRjÐhu\iغPuNqk_XQg!6o'P5(6E˭Yy]!TQnQrg'"Qjh:#sVKz8Q R8N5V\vNt7ܒyŁ	I+!pZ'tZwU5z@)k;5ݳ$?ݔw%
DkNϺ1&
؝zwkWϩϪuנ99x@R!HPmf
b3:Cl@T(
(.`o?XG9(P.үro GvŽ̀ȕevߘ[aNNDnftԼj.WWٸs	h7A9NgGW6=cJ6lQϿ	"O{EUN r|:ۄ܎&ѱYqwW
cOHvxb)锾FN76ep
fzYv".?*
~9$d+Ar0I"7ur V,rGRXʿ#E/ezrk&\4rƫf!s5BGOn.Rttv'۩+ ӭ~][N^fNj˶ 4w4eϪZu'r
似@,G%z<A2YդV-,Be&Ld}9[PL=*7}c`LT"i*BV%=-v;u}B `ͤmUOwtԟ*8#VuY4' 89u-w80^(]nN K.̣e-:g
BsoA%UCi)\B-w$${I ѩLA Ü&Wgmu{N0rK	 (`Y_>nӢA0^~mlyƒU%̲+#}X:9tBe߯L/ni}nG{nP;W-ٵ,S\ڶK!@I쨩jNNR^V5P(jI܄LYv6C{gd.n(ZfIl^/
'#do:M'7a-HmgQ{<eAɎ癵J\Wdή) {m=gTNystCjV1m*^GKbWٳnVgxTϹ%{q7i Hz[1Z
{Xҧ(^7IR{OCCIfBط^Ǯeln"_ݯ{nߺlPhrSXסOs)؁EƖ+pVrDsN[RbHpmV;s38r6r+:qxrZkf
GďuhoD+%SɤP-y#&822 E*&5O#TdcM)sC<=C[.CpvxFƸ- &e}esM @L]A/=o4a$4U|},U,V|GDͻNK͕%lE5("\Cc^:1D`FuF\KO[0:۫__0JVEڒa-T(ޗ[lby舔M'D.ߍ_\,qhKn^bQ:WIzPue}SW"$|2{_?Yދ{nQ'n
i xJnr)✠Zz}[&8헾8/t}ێ-,$!%M:0֞7$X;^5qX}=?:!/dd-8].vWY͑c%ӹHU>jB_GCe.E$Y\i ~)V+?Dq Vmj
1ɒSMMa+7bMS{rN+a9n|3.~uoK^x4qhhI!p6LxZ;ݦپմbwT&h\P!ɀ3|X-NnٗC>}#C-ܕO/f\ʔζ܇t tj	z4u\E::2 qgߺ̬bC^_i[Sj04;ڗ-[CE[] OXUs S<T@ M{L+9cur9Cኜ#jp`{ݢOj;T3pm͗
~* hB	%\9wY/m]Z(^!O	mѦFHA1NW|\w%hEQslӴ"#a8~JwN']n5l ~=CCu~ć2<MwT2yGo91o 3cz39C$~'aY΀HrQ<QQ}&+D_RckOY=?>6kC.G>C8^ʓfĬtw*$pq罆l
d7s5_?cDswLѵ$*&G9~q8^e<*|Fzbg[s'KW'Ȩ%Pm۞J	u|QP<LRI	XjnJ<z]Wo[hdWǶ;%SVK)jI:z+[.^dE=\JAJrW$u"vk*5a2NTۂj@ #UT(fW6NCtTӵ=:O]
A5$-1^1x֠KCʢYIvex]j+.[OQ!@Ը
}v OoC-zy~X\*?o޷7~6p\DG9H>io4C!rهᷨJ|g(</]Ǥ6>Z|ݥdPp@5y+MxԿwa1Qdˀf?YS∴S$;Ȇt*,4M
&ҧ W͚, #(~FpRRk.)TtNG6CbW"(#&89p;?cN-1
I/<<Yі;ItЎZ+TCWbsݒI@kpӸ7qrukΒ!GAu mA"LUKzM
*6l%f0Eܞrq"WR]&#3bZslAZ abv-jv8w5gheci`=؃1P=SvmsͽfJX.JXM5;$q+
y*U[UqLXwQ&c:2C_N,čC2ck^|JIqnzqY]EjKDD[.*þIa^-^v)Yk8>mWѳ"Ҏ,+q{~:{|7dpD$`6ѻg!SnU9ͧf́Z Cgycz`	H;ʧ W˘j krT6,P4A̞2==Akخvyx]x)oPճ}fN'U5f$=ZҎxdޝ*\y"L
4V=q53Xxs/{
'VyioQ+E,!n#:Z=jbͤ43MRH8yT:cRa!*`s"Ω0
'^2vpx;/\E(%*.Έa\w&~0/7 yW	H{NC;|}!g	՚7ceH*5W=͢h])ځȫumI-P6Kj60(3@N΁b?O՟T=Y_Uc^L~jE.O6T
JaR
7_i>2?)(sQDg) ;~GFݣ9$x]4|1@>=NM;[RGjpE:~v$[0Kle9hCVi!妝dTCWYQun?K6:T#dpgf_gLqGe\yoW_3JI++!&S9N[ʱpҵ:ͩ<TVjȀ
zxtٚAǥ'ҡ"Q
mg;z0zp"<[y2H"kE0|Ql]\(n26-zK2\){f=Pj8/G$n9>B:P]
xn:Z:L*`Pʸ!}Yiǣ-~ZpQ? JSς`٣t^2_{>]4$j+~[|^mR-/8lW
Ty XӥUu;)qA+3r690U`'j9z}o[b
^|֙'	($C=lhARA.v~mS)T1Pxh@I[ϖ3pC2
#Y߃_B3ʬl"D[Aa(HYTUKCvru%xh
a.%ĂXn>ѧX~Ө۞IpǓB$Y"mIMeO
;|9jzO7;90N?	ws$\BwҨSmE>7ߐ 55&BL|<E_u5M\?㝡ܴmuOjC믏nА6OUx00][WD3a'x`SIu9,VBs?)v'lT,ᩖ[>ʶ~NGpzrzg8%t;ܹNZTc?]r: d+߇N?봇bޏ?g\~r\Pg"{^nYA	{pRa(I{li$tH,oݡoӢxgRmv5-Sm7]ZvyQvٴ'񘺋ݻ {`]]"'J5.+>igy'50~:CkɗųBK:',|h|ڱwŎrpԘTd:{}&7L
dwCsr[m1OL,,@An0tNj&;sbReΊZuzZL*O+{~lapkuڝ]vQHb)(]ab]{}bWfGMK]c|J<7?w9ÇU*%h~q{^)mbxal-=z7*9LV=/`<U{vQtRZj5-ɩͥ24ս [֨4> I2nXSQ7,x`[nP㎜0V%t4'4&|A˚c҅˙xud	q>@Sٷ5wBru=8Vu,1뿘lF:-{UDO#p!mm(i7B1o1RsyCad
ޔCxc&5EApxUw|)IAfV^^Pѩ<n)X_o͟{J
ItgHk&,)><Sr\UJJq[\ml黄K= iDIW
^6U"]U\Ny$ęqm\
Ȕia}Mr0^Rhh$,]S[|ZԁYr)'?+5a71PQ8K/9'wկgxէQN^+B58oC|Jq0}3U#RO)1\Ȱ~^$.BU9V07O2"BXgPQJ%`.7uCѩoЅpVOodA1"_y ȑoo;DE!gA8A+;9&
-K7D}AUhVXjz+_GÉUo
a%Q}i>P@WN[ѰmqivWv^
)TMc*zIA5у[$q@;샞IY7XvC
 *|۫G*
\˥<Z+պ	;(pH0BDjRKz)Cps.5UnVUT_V$]V=5Vuh,gFc S]nǁdZsǡUԷ|ڨvK~6hgپZ;0k-8i]ݔ)	vWO^
Szmھ 9}3{KO(JIIQFɊ[J^BrY:a۩v,΀zRA G;C{qȭچ(q뾛}k3ՅP@	Ly囿Xz"*s.f	<*%aܭ`ĎSe#77rKo܃ >`%xO&8K?ϻ'Qꑳ84-P%4~7`ߕP7;vS<á-fi	riZ1433A#Id"X˗G7nX \ms~611FxBvϖQE˰eو欛@kqdõApVo}wLn-
xwKv
5U3ON:'鵙퓜Sh=eF*<MN(<oD7txz=]j$H.<5x^crs%]Se~ 6tFO?LLH#hD
%䊠tL0)|8q'Gvu:g;\ScJNYuJkw"oiVO{)WTڒUA9N@kџȭ
%/]ׇyt{䧪r>KyUUc!'qN.z7~\*~ּT}Ԓ$FN
"O0؂sR7ڮv2&
D`{U[}$
ý/./ڙPQ7g9Ƶ8	oɝ+f3'~ʳ7w\m;t-4ges\ ܄!3<os+  [g#@vkY	=,CN7Ě+Mt=
x!lyZ\nRj F"8xO?$=2qWp)  v
y/UG-~N=,Y
W@qW@jn #qH{9W"iyAc#aVNa*vf0dWO96G_[m|/
H|쥲o\9_M"T{*&^uZODQvkrOۦB\aJS^QAj4 ;<@z2vY\6MH+un$yʧV_
4EL{zvF806B;
$`UDLeYj\yͳZO<]dmg9λ9RyfNFKJ_i!pbIC\!p0}L..J\Qw3ڪ.g
na$r9Z*
AO'DrEنJ)sVo|1j_bAնlѹ*+A*TOu>aXW(PwqVS_M<e IߠE`fw4
Lp1ޡ"\ԙV1$gcgfb͎{Ч{\+. gm9$=gj(>vG_r4_s*>z1S5%[9Uc2Oܜ+XyWr)*I
ܴ1IᯌBq[ˎ=~<..>*e8":Ւ	dS7MP3Dd4%uH?;g΅ezjXCiupBkOA\`h`53h'oG_^@ɝ
znuaZrJMU^&sgG\zx܇lگ%QF{#wlxzb,_UM9-ܩxKI+(V7ྗG|o9vTٵ#]퉖ǁ&6~h-AjO0
2e:T/:]4wd=pzʵ||-!n$^˾/k	l	W*"M~CV-.tX(urJiPZWp6҉i9ggpC!Ix	4P[Ɵ@zs^l97H]g^x层JM*l|
l$f$p7 BvBCe.٢J#IC}Yn)Ik,Gz>@*oIO.o kZ~/0mtGdh-IU/]BJ5-[:X8_VCV&@7/W M<☣MKG
GyȑdcT]v~>x@M٥Cy>[0,Qݑ룼J I<*\0ovRZ=wE]uIҰ(7m{~ }Zhqn08T>&$eݟ)h2@|
=n1ȥnԟRTUkׇ)
qCYMtN-h$%;;#P!Z3Q&a]1-ϚL/&%[_]	jsQϬiGqMˍ暂η5u`Ϳ	tu'B\PKݎ9W~M䖮52a뽶	G|7P	t;=+Sql,QY#(:Dԁz]&%it1amcD|^Zzxr.MxR_nRsK
f9y"y*_"r.<?ci>Iw6Ϊ2?3yExm'.9mPs'n%et2ǋʭF%ߥ]!
7zApʞB{NݦJ[jJtMڜ*Aܶۡ^'jFiTrT6\?l-0"槨0Mif<D) tPۺ:xr	6=_yroo퍦Jz2gRJ	k:%|P
O j;_-mjgAm4Ꝁֽ#TU%AٷV3DN)D@nS@#MO\Đ{sg`
q
Ug|{ zLm40.IB_(8m\xL&hvQskK23We˱Uj.lh
ȝ:owS\aeQX{eByTuH[I)1ڦhV.S{mJKKۧOJ]++UvBsp9evK Uؑ{ۡ5(թu;LSn不;e~/jzJLLPsЪs`DxI5Չ:_(.eUB(@ WQ пo~ڪ }P#9Q5wz;>{ƞx`kv3
r1
{lU#-KǤ3ٲC#Wzr v*̋_SJO%mM |?W!mO) }:GHq*H9x! |[f9[{5A\ZuLʼihޱk8j/PMC<@|7n7Ǚ@\JZVU#p+!u(.6_4j
a.&QSXgJgAt;@8U9A"DUbm'/M;JZHE̜nIJ@@_5J<=Jkxxk\d.0?y)UP_t=P*DlwyOcx>5q<f[\ў 2CL;gk	4~k}eƢ-iz8WX|iNQ;xK&K刦b:I&	4o6#Z7!JIJ³HQ'*DS1ť4<.E*Сqs[ց_b],}SR_nnSu:-}ף&	pgQ;:{A{O|`@ڻ]ep5si{WZYLHD_ϼh{5̓ƥw'=a@5n:] 4,Mk;!5YDyG L͌yv!H>jh1]G]aMh³ Bs*uITH:p7;N[ޓVFtK
'"ټ=lD^ѓԚsŶ:/hg~5WC
Sݖx.FD1I<EC_%BtkO"%$K\m>p
B
zG-N0әO_QdR.Տ_\EElA$3ݷE${1J60O/UԗTj,_NgG=`$oQN1?5e9xlB|KM@='Stnؓgŷ-j*;xb$ZTI!͹rͷ_=\u@8*?FuH^A}%Z]tOVBI2.A7
+j4,}֞!ȷ4QkKto{I[\)k`f&[`׶@%g	b
]cKer=M(\Kё,J`Z;VK	xU<ދބHpJc"\tGme<:|n$2`>ۡ ]m yg3-]،ZgpN}Mۭ5߳_WݰeCu'צېTT`S-P%NL\0TʓÿcӜGPm\,d>qG?\]pyihDM?ȱ¥v$j(OO}4\ftA/z֬/%''M:@Ig-zd"=ح @	ExbWnk-7hJ9fbqY5jj=iC~aũ*T<"9is`Z$
 cNl~
G]b{dG*+&SԵYC#9iWʷtֈ81sQTMXzǲ t%ekY1_L<tx"<'#1H'D}kқ5M.e+{Wq>w_pTh$Vv^gpx4-l
PԯꖀKpq9SVy'nگ4Ky :5^.%E*RqI<Liw|9$qr+ K]n*y/.Kb1TsB<Rضx | Cu;Lsx8wKl']%?\KD>_WeFn:Cּ!)_'5SA.2-;*_GͲRVP,غA?P懥.]ku$][$	Z #PH@zf"fi *_wOs+AMQgN=aVN/HxH6
^4+;-xY4ɮq.ݚquJ6Mr.$(F}O&ΏW!Ab"I{VDwǁJ
~E,=9i=ЬzOճ;iF
wf nA9D[ЖQ]*g Ch6In'%Bz3Fdʹu	!;Uڇ?w5	Ӝd9U{wɎ {SCx>Ntw|h\s3ũB/*N{֬hymOoʤ=N怮R7ΒLpbv6	ix`UZzαY=5HIEN>,}C3\X7
<>ÐU!иd}o

s΂m@}K&PߑTۮ3I=E nF!(!uޗj*NVr@ʿۿpz;y/{j*7Cx/ڒni+Tk%Z|V UYh fGC_dyk\s=j{kH޸u\~gſUj-#qa&l=<wetwGtX?k8!G|Тi
T5!_Y)h	wiOg{z+o(@@YG$rdX";¤p"`*ϫF6LxU1^AjW0K[Ɵs(e|;J^aoU>I[MtR
mKba3h-N`݅z fUą(D{q].	ۧ Z5`_,u<m:k#:$~RFoᶜzBrtߍ X"
7RLw} 6bβk@ \1;<뎭qhy\Lvz^eE)oVCcMB, xBB
H aK;䗇q}ܾ$1ϷyeFE.;}rܗd0C"ۮFk8rul_U
|&upK7|~ Ksu[hOxnT#+ ~}M棳n1E=$-aDv󺸞[yf!%Dҕf2澩BhrS$ 'B"PB3㚹M|ol`J7d}GO]]M#8`QπX
|7'R!]q>
D;ǯRs%AW9aNg/*7
之@ҥl;ѢD
: q,saVM~ 5W8a҆WqV
.'\F?
 YaȒ(z=A,Ha8Tc6d$pYp$ m-!+(ֵIpP\W8[ԮHTXQE-'>N9 \38p	-9^"Wd/yU#8dCsuVj	-'3F[߮5"o7meRNرTu9JqԔ,ԋIhΦM?FA_%_
0.˔8NӴR	" 5gHʁw_]_88usӆvIMĪ~/Ӕ4%%cm̓Ͽ]FiZCEPT^Dp4i)ZwExh۔iqӧ][ dzlzxA#6;w"YliaLPf}Sĭ!hX/tN%`UJ<sS{ekiHKSjkj&[[q;`).t?6weM5ʤ 1[RY 5M)}OW8XpiLkqR5_bXa?~srzi\S/[9ɕ*U>^J4ƨm4]o2D"MaꊊP#uEM&7E22ӫHY~t0(}dhtD;x{qCgut5!|nOk0Љcρ	lY>6O!%04ht@]䪐XoN5g!Gg #iwn@ ~Hp+u! QII^BA[y`@UCIp2h_uK\IXw>iai˱51`(?|AHࢣ4tE[¥KM,lMlG}cL6&pWn<M?$vaޏ[ߡ0al<8O)0}URm'찛":kMs߽gpx|)MȲ΁I; 9'dҿI{M熖ְ -qֺeSkݼ<Deyi(B	qpץtc|S/8V~5Ԁnt>^b4pw':ݡotb'kb7ynWOvnஏ³}o7Eщb?UD
9OpԵS" ^ zP
L𒰵E$װ3\`q\.憖˞r,7jvC4YOW$OrU1*5~°{f[R0:sʡ	>k^.:.&<| su aRTKQ$hj.3|%5ڼ.*74>Ā7}ZuAޕ=|
VU$2Ɩ oK۫bnY(UzMW[G(^Y'Y/yߤ1J'Ųy
 godVpU`ÄoniQоd}L"hl?嵓Y[^. WTIH$pxY;Iqf)0+zoyYY?t`걕2qu:@	MxrruMPHuS}Pr #-UN꽃mPm#4Guܻ}d,Tc&gA|{7έ*耊:\[H^ Hsko,5q%CUnFpqn0kewo>Yx%v݆{;t.kV]UGGrX
4	<e~J&<uznʡ曼XN1nb@e	8=\4^vhs+YPY[+gFHݮ+)NF'
bYN]	j^Y7!kqkܪYlH_2K#05˕C}-SٛRELZHV|wф϶pM.N&*e5drrn벦slb@0I_G	ԝP#+n#㓳Q)BE.e
Bkwt@ŮjۙOQ)PrlM`7z8q{r=j̈I $.e,׭VV{Uʼ9ޝOfeW,0⢩R֣8ڠ'~CrXy/͑ᓾѩMԡ}WyTRԢgU tJھ/?SP͝g8N ?g s}΁`3?nU%A~1kkxF`'hĊ">t,
U`j:V% \߽U'6DhKkFU@ۓCXz̖+:KW.-
a}xgBH70Iu9?;6S̜@>_Ŏ	A؋	#ٲ`gZtZ)x]E?mc26D!y`]amrء/HG򀲢:ݒT?&<jAG+o>j Wܫ*۲
)?D'2ޝz缶d.vw+PcT(JsZ<OoS Y9$y/? z-,W䉶8Z|G5,4<ߕnm]%K,@^hSȋX)Pm80vhdL7](<)sIu'yv҆~GFr%LCnUEݶt"Yyr9R8':"I@.U"动ܮ*_Qu~I$x&G+jc{mYC\nS!"mqv._8a}<lz}堤8t~rOkt[<OoGeP@2FL29DLwvy6[+uW	'%w=_􈧤M-+ftˠ9&H5Z@_ 3Ǔy;q<
B}	\V֢R*'VFL9xwsH!#kck+ 9*ܵ:h%w`/\n+0Rt>'9dk+{5osNw$BNPÝ
Ae=+2L
$lCm(7 3B]Q%7Q\eL VF$T$$
pQI"8vbR Yjx4sy^p
{v*iV//"C[/~s.@y/9Gxöi.hEQK]\PǶzNh6Z"K:rN(ʩTy .$2L5:ǏseՒnsxP&wKj򭛾o/J[]	֯Rm"qf]ԧ0H{j5!i&:"U
;oHsWƶؾ@q{>[=W|=C cc
ȻԫPͳt/eҊUC7Yn#׎Ek+{.nhE>U-"GB)rg+*{m:42MtnĀnHB< 8{[*	ĪPN[e8jvt-׍rD~w*Nȼ߭>?e;eCr9?2o]FfMniԇk[^4]wѹ8'<XdU	0dt&茳M\
:>Df$Z<OWj(QJuy_@Q_Dћ׏ ΃s|G6Ky@gxRc
owxHGu5˙V~wҩ}O5J}KWIzV1eqIocD.X+^PU'#xMƨs̭ضt0-/pO:.P֎SjGnҨ\Tj`k/tS	Vץ`Cu9 |3sߜZew7i,#MN:HrCN=&UWy@o*${DFp0:ag}ABX-Q86}6\E b
\ڷd;1)}w]BtHjC7:-mCI)\LNGymUBnB*:ٍ;U	ÚuJܛ by/91:\EL?[T+]\aIOwo]`na.эy'AB䷤~w]5w-]/kr#/nݐdwȜ<k` rjB]q~|;9UY,0tk@JNvBQ[gEwh2
tn4mRKeEvDlWTSM+b~>kӴ-Q2ܵz߾%3;3x<̃|;,{Z ߾zonҵO~]헝3hѕ:>E ;JV$!O{7Nn<wޔΡD~ͶHkj|WfnR"Tيcv5PZ9@$%F}
l	Y
,\/K=V}V;	pMA^Z-(ڣO,[2)"TgxOn@h@6SZÏh1g

ͪfƟ ȟ=z=R/ke&FW)jSZu!TǛZKڵ-ޒʂmb1xgVE8bsw*ZUaC'4oYT[HO! :Ca_	ؤp
̯YP-H|t۪;gIjDcm³m1h0]i@<t5YP8^ʺ5&{4&&
ߵ@)R9R3(*j\F,K/ͩPl&V38Oށ5	F}V.z;<hj4VIww E^=]DGqقB1;
W.	l@T;9n[@"DN[%([l>#U/Q(@\nexfQLd5^2v Bgwğ.R߈ɸ&@~{z(Fʐ^vcUv)ѶqުqD}:%K'wF=5s[.2{8V:Ʉ.Jc2n57mވ_wvonY#PlSq] aEA3Gak$iN,gm*KAv*d6	?\l
TLCV9u^9=F/{
/Kf}ݞrƻ*R09TI{qx \%4LGT \xw84U{'GŞY")Y}OqmFO8s}vV"S*@ %]FQrҤ}GA'pE+m>rP9ʠ9dSii)J[S&{\u=[%(M7Ǧkjdo5x>-=AOzxy0&Y3d]3
D1ZM6Y$R_|e4܆u)39崭ߌ!URՒzNxK.wq{>pATTAbgVx?RqU/_%Lkq;|zdTO!!QR7I1-eX^%O8>y]/"duà|8))܋*	D4E<WՐSjc;@kS"EPKÉ$+Ee PCCd.7=Mq(-Ez\dKgx$ձ[/TQx?[c!՚A	'gWPg)<nڇ
+[PwE<!$~\\2ǂ|^8vrh)wpm<wU⡆0S;0 8Ŗ2Dm/mbغ:71w8;fڀVT/X>B5GuX_>[7pR !g"Y)DS;x8w|'V&>6/[ŗJ{q4$vEbtVN%C*-^lxϧA˝x5N; C&;52qꍩvs)qGw]p%I:Qe7&$*;}]"kT Y'wYt466H lJV
xu;<u,Hd˿UrTY躠vQQs
P	Wia?j!lg7Vy6{Ú9i\K![#V;]pQFNQ[ @amy`cT`-n)@%0O_-~j>ߕjBP8et+)df7|ZtD	j#7V:ݒTe:~znF\!~%VOѽ-f؅'
3klcQɭE*vpO.fw/i
5h&*oooZE(		&Om⊪_eyܶߔRKzOD4!Z~"	KMQOb)*Bdλ h~avK-5٦C*5H'>K|瞴l~m(SG٣tO7Tx7Uyu^UB=ĸpkr
/ȇVS\yup}GeRnq칈g'Eުxnz(<lZT,wԦtAM-ês9ePWVQ
g:NUHc:yvKW
>tRG;8quΜRt;W{q;&'p2$K#>ս2v{I(b=\عxW}fό+t#sHSNy|jFR
'e↺i;ASvIKκ6lSX%LtO!yrrmR~~Z.ęv _1 _ ~P_Nu[k*K5>`Iy\wIU.!=
Ჵis|o^e]3bS9:!8UulRBE+SS}gwo	{]@7	hf[(d!c7ǰmZAȧ&7Z @fb~ 9U=Yk<~0{o4=92	QVnx٥pFex5C0	J*g+"KeפT=\S)^UL@w෨`~z" bԮ!GˊhRmS*
dbtR
ANUPK(
5sŗs(oarxՊ3Ǒ
|<<уypΥ[Zz=_ZDtL
k$u,
'h:_E 
h_	C+ݰzuW%JGpX-\C8 Ox:_&N I6yB3OC.KZ&y T$[# 
hP}Ts9{fwI3F`rP
r͸Eѱai!$6%g",Fr\.>9bS,IܠMT;DK0d0_FWˊEk]rKUm^vY۵ՑGi98x#۳u]Ѐ$h#%nPESN_#ӖQ+H<WD q9pR*սlB&n8szi܆{r
_4
t7|@Jj:4:oJ*m2W4g!!|j	fWhlv:eI9z|ɹhCB4V񰠙ݞ!y-[/pBpz*	:@:!/KMR.D)?什
3+YKQBK[t	h)t,FuДas BzJp|hIHW"91d.YELWs)8RubΩ6`]C	Jp hȣ9!^~s'GS q?1
%GBpUԢUe)Ks/FABEWT/ܹAugwoky/E!Vᵹ=oN2wР:V)tC=ye=ȝCHP|WENjr_ꏬټV@P{۷$sZLaϡTj9qy K5r+6_34Lmҍ@5e(^`[HgFɇ
긝6Qq/s*ups!G6_GBr5<aς#I4mM%@-kNuEPtдQK3N*E୷Kʳ˩ۚ"I>ho@[pm/`Xu9UE_~w\VY$ŕuu
"͐HI|+O}pp-=BiZ7iPp(H}!=`JAgVCICVN,NVTR^?{Mpnw;V*hu\p {t!

@h'YRfwSAP䴬q7y]FM,+M{!ǳ\ΎpQb9!7Rmi^Q"?gu)'SӁur'P+ѬlC&:h>6ʡ4ygU~]W0`+wiHTtnL#9艝Kx.R@J^S:4jt|%g-!i1G9n Ou=xTSUG8p
YEP?@[i|aR*;5)w&,T}mlP@NB&rH!{l]Pѡ+y@M._w.{.<eJ\X<̠\8+<6'vTtb8ҡګ9<PA 4 ^ZCKWpu;Q/8F	Ϧ_ʞvm ~f߰KY[F~uCD"ZyD.tU<j(ƕjǪَ1JN\ûUuyQӵ}dRf{`L8[ًvSJchMcnF KeB;I_Brbj!oAN>VW?s!sv`5GVaujIA|es)ĭ#4_];sy^0%ix}XBb6	ړ>8"5k󅎞jn:~GmN9<~'-j7r7w/`ɨk]s{[P`B^瓕`ٜ˽ajsK͠)jQ Ue
rKH;1wl6tye"),%ާ[>l_Lާ-.a\u '+_{9ᜒC<Zr!-q'q;G9;Gj8FͰ*PT)ː[ǞCsI}(j!3Vaa
0 rY^'&gC뱖2Q9'*dq^6cݾ5c<EQ<(]T98"_"\{IApoW"l7{| Os̥*1 ѴzB>n1;rˊ?!`9{d.sEUsqΖ;6U
J8}d@bPIA;
\?O
ħ#cni^S%6^^Z׌z͊ubvfkeU	zEkUn[Vh!r?"aK6OG(Fx5Ǽm&84V5`S:>1kWh|9|9GwKN4X܉[M
>f@;}WM;0gմ
17z"iسa
Qv]DrKY.>k\
	;"t#+R_-gj7(<`#
ปtDu/jxZ(qG]:1@xTKnWQ 5Rh$T r+4AزRMvjbsjI-֣^q
pz@ўJ6pBD:GӡWr>xSyBk|,
1:`+5mN[<]MZvvf<AZ̯
wahҌ:܇ðBX{w
z/ɲ@m3m(	w|[W(yrՓׁy_T
XÁ(YTztEgV#m`yIT\eVAL`XxE"V/b+9*OY`Eަ=p	:&('Fl>4'U*%p3EĉґTXP@493ly<#-].=lXO5uEEG )ρc:h EGBzgni<~m>zwPxs @Q{myeok"t۸*yQ*L˫QMwÅ><|;
w.|vUǦ\䄡[=e`\l9m0'a&*Z.fީN%(%Fx+T֍D@2[Nnipmb75rq]+<l"9j57NǳV f[YQ\ƻMvD`l<3R^N4]Eg+r
 z.[C/R
<Ip?ielErl6wzX,\zx= L8/^y}'|W޲
mh6OeUPm(]9hbC	/V#<j.[t5RM5UJ(KEUɦR}{ّpv
֮Ea'%rrv~q8M{@A2Bn.+ͮw	Kcqtj+͍8`#lJ:|]_>ߖKfH^B']vtSZ֬m؉~{ ,xQ5:^QnHd 'SQ`^]@tj*r F?wW')* eP4w(h1nts\PzzGͷ:'iyLBqޝPܕ0U
|@$KmYZ%M\(Ktɚf	;tX)^O+=Reޱ#2JP+,<n1p7/nv3rH3gvTa6vw}VK<_-䝗9R	gMz}kG%UGCM}ba

=W[o	s 6h5r㑼#> V Y?ĕ/thˁd[azh_#}l8ՙ|j{'萞$q^i
4氞Rm!	" g4*;jÝx/9Ev5Mm;eWwKmmI5n 4s9EI(Y4ǝ+)z >o*N^=t'ÚqwItG{U%$tvuǋyXaDH?'m(6(_jpęwlb46? 
ZQu>uru䡞7@U˛8AwHVgdה<L 0QwO>!6:gu]0C~ٲP鳷ˉ",'*B৖;?|_y,RbkF"WeT0۶7cKhwe{8J8؏
Z_O.V|a
fn#q«j g5ѡwW xp&Bɻ@.D?asd߻u>~S Gq`ie'֑gIɾ=a\Nʞ KcnM
(آar	F%٪(y4
I{uG}-bM
^m$g}M>^ W (%xWVS1))DujuX!DoR2,
\
 R30$E =!}4r6<	q@i:|ݥA3ges&SZu#zsNMp8^ۢinW}/mT$q[#n7NmL&EdOP 㫑Ix9zN"Oq5mgp_L6A"b|6]
\V]BKFYǺ"OKNGPCkkTAը(F KH|ΟQϜpO)9ɡU2^iSE(	.P+0L>CVsM4[F|.T`Ruq=fipݲV4=gI
_@Y7TsAdT=D;{q(Ag֮QqFGQ#]"HVzx*BKZ^_>)NߢZjwɧ7#E&sZ_EQpp5˶%󟓃`ETMn<26ᲪgC|Wfj.7(?g] %W8Bm&0)AVx"L_r$$ӽB)cZ:AׂlŴ 7
U_JZ䮜C}['"6@9m+.:Sd E'hu!H{߾+^lspe"9v
-IR`UzG7!qˑko-Z9xu:IQ|>x+op֑(
S!m/WE:=wR
S㼙OS9L8_9F)VIc}(nٝ5D@QuuMkW&Ů(@\
tnU',{R=%GjS5g޲]~DJQFv0X]iPl~+zW9YlG9O䃌{P{V_$8~[V3zT},gP򐼪mU囉tWѷK?/k'OoBPJ]OV8+
<
[t䪤*	*۬F캊]E}z2&J~R:3V7g%Tڵqǔ! x=Tm9mfUn*]C!1<h[}@##]{z[.:긡3NYNm׾o/lg3U5>.pKzvxK*$=wMS}J 
(e|r%;
x
^~	!C$_O'$[ɱ	5.=uPV"|0"wu FBY9!G''\|{~&Qi6K#H7J;)U<z*ᣜimO/uV;#eF5{MY^!IouVWv3~
~ũb'PH7'%)<HA>e_ED#P=wUT[WVhA%8!BErM_x={(tsm#9%5*j7h <⯼>9y)b׳qSWڔ_ש
z*%=V(Kvq&s.fNJ>$ceZud$-]aɗvSr[n[.kakZ|@$40	Qnt2WARi~o¶*nmAghքf['[VEww\58%P=2+[A;h	هA$tOA/S1oU@;Dv-2y˨xpAKĂq(q[[ׄI`~5Spj!5H
>pӤugЗ%VxKSm*8tDC+0
tx<M{	$PǄ7AUDȺ$H2PQڜ2vtp_`xN1,gUi^
Z;5^G=Iuk7C $NSXBlg)	LlQشퟝ	U	vGv>=;:7 *&lLm@a.j+2ʊR
|*JTje6}|Bmf}Z@qHྣ,qT^w TΉ3r' ؼǮHI&]=lQO>*tTGaOuy.-@ZG	lr$?Ǥ⺀<S3Ru'ҵT BV{ZV1lK<1珂[bZsehcP],,ϋjEG8-`b2FJVս~fp~04ϩ˒2
hc7r/BqYk6$tGMؔ	:!]CׯEa=Хqf⫓Fȵ;1Wu&Qjͬ0Z'UwdBCnBF </Dȡl-OXU_"eZՀ.۟rY۔^KaCvmcOUdMpZF|lE(m
6t C&l-K"C>ciO*Sr!.1+*NCyN$W:rVۘu#+<m[g85͊q4.p(R49 sFH}R%BV_XصA/
['\ Z5J:
fK.P/F[ÆGeMe`xk4D
	88f:ymI4ZÃlL0c <Py{N5CT	<P9(&+{Tm4
X;O_C,b5"ڕ[lH3Qm
0!NCy)Cγ
=ۗk{rЪtzo!@um'lSꖺU[_b%\{M5I	-
D
ipie90COQ<j~NXơ6ޓz>mhnhONE=ۓVenMMbr+ɧ`B3siV\Shu [ΝnPN8
7	$_
6oV
?a~R""<mZT]g(PR9a^}19x`l"]&:D:*5f5W i8=P~ש
,yuRYC%$uaU%EBTƗCYZ<7σ_{s~ډ]"&4Rq%VnFUC"w主wj2 4^
r T5M]1wOPhv*TR,@/#=9YBFۚ(pnMRod+m*+3b|GUMoKSῒw宇6jrN
qΒWWZ/2G
:cE㰙T-?X.-R9>nt'N0KdBx}dkc9t&j?	9]QnRu2>m},"b%-9 \QMJlt'd;K'aׯk;-V9dA?`s@_|:,*!O<)}Y"6~]$
SkhL]wjNv$njZ⩷b!r(U< f*1m~~jiVteBȽ7N49Fy 8FLHh=crfw]z>.*ˉG)}<{^mUE9YuGW=CȊ:BHfp;F
g$ 3N*x_m愈phE_@-Y	2NW.񻬛FۍWZZ]IC`B@EZ uqpp`7'xzP)P:o'Y5$xnU1ek4.3rJ3@f57	 Kz8_jl:̋%=`}unPTgsi3 ~`B KwBJd {\IV]r;kt)`951CRy7$%L"uIZg_G7 x=͕ѐ&9O{oW,#H(KE;tUůܛ;o@ȁVhEI;N~jh.SNrnm~\{Φ=PbDA#+=]YQ,*xQ%fԒeX^E6$xN|Z}x SO3[فN
rOv0fıJ5b_* ]'Ųv\޳	%%s%f3Mm@ ="lt4nr(<jCxs<d	uU}|)0R|SveGwhV] o\Cz8w?=U
;QOss׼}%ؐTEṆEءޔwt޼b
kY\$=LWx#:<
	"ć3	ez
8(3^w22C_9
TK\wTnc>4RD|Kg*nY<imZy-~s*M.^' 8pX]%^뀬6+'IKWT#=s`oAh1İT$HKێrT'wQc/ϡ޴ǃPwqr>v<Ѐz}Jjf.qMC=j9'	&]QlTf)q	xO,D]"}Chu$h(2L3(ʧ-yK;FM;6Z{*=H&?@
߱.}Gsܓd0Ý[%1p'ȭ
4;OE2hL-`R%5@Ⱥ½UWLUD?;Dsz6IJkސ]uΫfpk(mCh@IΠH5
P౷3⨾1xmo
e]bx^%K)95mv	Z< #j_ ("R+uGJ3M"n	O8UQ[*/(o*I~qb&3tE؋`/w-
[:ynTJ ]	A8ޥku6,+2 H&kԲ*P2莇L-}sFSW'zގr]iu^gt
x){?Yf[&<E(ڧq=.ŧ@uUtqUܨh8#a\幞N>"`,ut7ڬh,w2,
tdTb0NjFykЯKęN#G	X2^W<TI^*t^39Jy.|6yΧ :6q/͚^RN:3w?c;q*OkkrL5	}4O.y]ۻx펷;s&YK$r$*z?X(y봖kȔSHpsV@}L2-~i깕t-wuѭc㊀o|op:@$	̕}?[P6]<o8mT]lQj`$G{~:׮*xyq0J8RǑi }pr41aSy ujq=̄TT4q6ny"u`[t&dиH|wH
AgνDqNYgU4݆a<N
%S6`9{9zr:\4Orlwk
`qBap|NKY U>ǭXhվg,]EbEUH8ǿT*W[ժs?ۉ@/V[<tHuFJMo2]	^ϾJR(TxVu9rƁ/~:"7>tqYWU\{HWݬ
 a
!>r'/%
bi|xuWަx/pS?Cu%(4Vu(s*('wZi(h%_{%1
;Ph蜶Q|K/\n@u[Tڜz9 V_Iu]M!htd8nw'I"FfVQACRtU%NPo%:e% .j8YjH}<\|ӡEb	BuMgL~xK=?k/m.	9)sFի)1 EzɄ<N&*
C;_y=	
:]ci\\oTߡ!jQ(Թ`xoVssyR#΢tkFău'gT9:Y;1=]Eg S~(>5EP d ~dC6^U6
ré-AG=I	_{kN&*Cq54Kj:ލze#g"f"|ߧ+rXT^jlݶ"ϛ"J/C5?'QRG`Vr'Anw ^|sRGQ p]V\5sw}>LC-$ǵIi(/q@I S6إ:"OZ/A v|X.i@(o%KlF;ȝe-\	 z'6mk׏B|m]ZRxwIxcS,RJu[r'25#ABŵH;#S>|#~ @\^IK7D&{O`vZ繛N2MyOBtxh-(2~NWIR8&7 h/џ%^&n޾C>p@mqߨg.	*Un"+XII
=b	uZjЧy|CtxO{$oU{#9T)|nȢ~GWA"oA [UodVn}C&J[k~jqO) ?]樔*9cN~I,Tlse5̬ߔI"4P6ЊlXzvdb)B˻)3Q7#?%ө0g?0gH +]?aN,U"SNWj/~N,U0|I7Ǯ\6(|BփE
^xpZ\)&~q~~Kl2ΣwtbF]N4៸ZL0>u[XlȀhYJ;6|2Gcw%(eX;Hq
͙Y`T7NH=.UC@UVZthڽπZB% ߬{6]CqmL7 aSEUKm|j>k>8I 0W.xVI"歎Syј.gaį^q#;B
Vsl7eοnVrE5rѭ]Kr YM?Aۂ{t/uEәoDE7ʌsI\arz~#Q"#|<g'*LP\T%pX0@8eN,gg
˜59Jmޢv^v:%x]pKvY遏^ӣi!U<
-եܝU,ڬ*T&+묤?\9T)OspG?Hl Sw[HIWYN[dlZ#d :ÅkP7;q&8F˴Ma^C׆_gĊ2.pV	#˄`Gӝ|]?GSQ=]=xEJ/Y Gϴ,<1jDl6:@ʭW4<aK1q
8=cJQA*kꉼSrym57RV12xLV4+2SŏǢ֞gt15[
birdzg\3smiro<0A.q{rKCWڸuN	XSh,HV̎a|7@9	$DWtYXE9SjE\ b:N'oO^)M=wc<FZaI_2e|) r?b=OwOj8o
][&Wa%_ҳ06otJNwT;/92lu={niDJc9G"$uK՚
"MU%Xߟ6]tGޒsZkVxsVTe~:uWwRbk[:GP=
W[fN ;ξttNؖӤw/kGmGw]0-u5Uu qoĻ>"? KѦqqd~wkwVYIagPgTGiHc4=]ņKzt><תriM|eYb:]ǰ͉hq;yr,	߆iq.ŴK\>Sz}y:{:S$'N\:zcufg+;Yud>(L,=gXuteqt2ֽ2z`ε=;okkLL<sz{b^c%Mx	c͔}O,*_<1 
.ħ%)l׹l#r98kNh'9"W
NΆz$Z^zHڎ!+g(àIrFx:iIǽ1} !U諻{XeY'<zT#e»jҵiFgUM vIG %#Npbw}7}iZ~/-IkeklA-=ůrj	p(f}٭AHf¿4шm^Fq	K8e-~"oՕpߐ~9hPwuoc`9-f).]5Pcz@K:%
GLU?@lXYA>I]6isÞv9r$.[lv%:ޭ~ua8Emrb:
k =;xY'.[OpEm wEEVZ9h}ÿuq'|
1dVA. b<ľ`O,ج𻔁sMq9=!~$ƽ!(guKݨ3P(=έ&t۠P5  ܢϗ
FSU<'
ڕՍ4^;Fin=3ᛇ+ίGU-	xľ (5'B ӠW]\% 1&`5)Do=^ސzv'{8Ծ#_:̴g q5#*
gUEmQ$Z5td%6+Eեx4l*;9  uf_<+B$R=RS6:ky-Vv#M P8r9!A<_W)1Eo܈,ࠬ*gZdikuWӱ9
^סi^q8^IXw_9:?^Ui$m݅ڪ$Tns%w)^F	:61Y١⽷ܙ*e_܎ө	Ѹ+>h=;@+ثh&0U#VvR#r0b2	=uv#ܵm׵j|[^$K_@NJG*y
Rךs[꽵htZUvE4gvҢ-C>.UK:7@iQ?Fb[o%ޢm]'u%TmW<;mOR."N
 I_mߣ'b'S"n׷7ܮ0W؏R"..B]bGE$"+j"@ ݵ8Cxz. PxW.ē85.W.dS~ҭDt"^˝ 3Pu!kL:f jsѭtchj+,ц=ϊ0ڴ_yߊͩsSKIAP,'j_/ NwKI,xљmcDݎɚ4|B|V͆wAĝ".I+J)HVxOi@SN`M
Ν
l EY%
wGG5dw(E;*j+m ?T.fp݉ŭږdUJ^0:h5wȤҫ)~>anY|MO<Q7[Ξ J$8qsfA."h\r%K$ף"fuԬ
C(Պ[)RBWڶ;LH෼q/>h57Ǳzc9g:)T;$93 oj}3[)zfaOՕHJ:ɀ
\*8*+ԧפ/ %Q"9%mGɪ&pmtH楶J@9=
U]Q	`(s>ͯ:.	
Rj0p&^D.^mzX-TK p>ݪ3h/^RVJeU:xrnƜǪÍǁѝ޼m@Q5JLk?.ʿ }&Q
6v@߬^L?2
1J/?\&sEa
?X2ގT%Z<ab;Dt4g=t^M"֍lcT?Ȳ!'=h@kkB9#Q5O
@3'T%M-h{V)w}ӡgi5H[X'7AZݺ\dhUſI@_.\ȦPUՓ$0WG33~:wvDYQT`w`t1Ut vj	O <74&7(O3ԗґܫ-sgۊTf-ܝP
Y@q3+6 Qc	>~|)y~-jPrmaL@ "\3%Qq[&l\:VmHQ~
<q]NדPR(;C/-	lvUߛN 0(HBVU{y.\y:jqHo$~I<5+fgeV~t=ff*(k?2Ն0ZɨX6rpp#<nMqvnkpV	1tH#P=Q
$Zeon'Lv)lb^;@*p!
-IWGsKĢ DxugEIabu>3m_'..gUNrUHY@.(آJYgEMi
~KHeq=	wXEU 
rWr]Z:c
v2Mǐ5iTMȏn-'

}oTʯ?
<j5R_ "{t9ڢ 8KGIzp1Ԙy.~O@ d'mBs1p߯
S[&w-_1ƷzgtY΁hw@M_*UGO28Xn5(W[I70rwNݽwRiGO9Y2DUP {]:l{Sפ|:([|! (ċEኾ!k C jY;x^;շ&&FRmdncL3+zZV{5]}tjA'wXX xNZ;JؗAeuGT%QOmyH@UCZ<TB2=w~5]UsbD^sJ[eQ0&RQ\WyS])[)Ꜥ=lpltjeݼ"8>)u#QJ#+vZ*LRz$+.yZ+@WÌv- =.fP/mۃ
+fC'X≝ka%R6Z7\5 o&8}ЦMqc,ehݣ;4hӚ=2t	3R};= \u::ƴҐ	z-N</P+-vG&>  EiVM/^r~T`Ic	Rl`K6HZe3(xKRkI]HHͱ]2G؊X\4#SZmτ@WK<J(
ZyI>y-*G.ĨAR!2!$=Y\ܞ@7=z#5˪wlHnvߠ
gcp _p.6bLYi S&`iNe֎NUy<o6pZU]!:-a/$R˖	 ?  $ZV*70v1$|=jx~93zi)k(6f4Js>PW8td$֎XfvTOxs4Ô%E{"z;(8Q(!K늨pM=t%(n~"^FU8گH_VDEU{4]&+ ERj!͜[ҊhȪC_noQܧ*+`v[X j:=<R:&+o|y	{ZuhVݕ1{QeciIUVLE8WÜRɷj5
 B q9XPgXA~Ԝ׆Y䵻Ѷ0|҃:tKo)ĂjHuEBu.	AHz|~ Βó5$`pnl3Yj,QjD볻W)̘TXܛ/|G1ώÐ(48olޛCoyCJ:ha݆{ow
,M{P!|IC獃StҠmq6A9>I}U qk-9ϹH/~ZMzWRv4\Wv)emQ CvQ<0W9^-Sh1	bɻd~-"kC;@x<uҶ$Ax37{:xTpo:LJvǪW(	YG,sKmQΡSvc7l~UKfF
$Φ{NH)04JpO7bIB
Z \ߺ;u#Wd9Wa(0@VnYmfvbu=KBzKB,PKI',I	mOVgu]vtܑ
͇MrZajo|A$tHgaz&̂	C'7$Έ"ȿvOFT鞨=`h#l;޼E(
m6_Ba_ `D!!sy @
1xq0_Wj_ɑ)I=%[K_,~'G>RMY׼fMDCn3uA׺1L
Éfr.^fA BEk
ǂ(?POEJt?`EK̷֢k ځYk
:R,K<vli^o2y;Hbi9m5
Kh+w@!Gg_mJ99XpgKH`bCw;sN揽]\2WMP]˵ۺh'Ȧs/Rpjdֿ֍tV7@\H'WsRDPS|(©8i8
hgtP_0Vb205٥KPNl  0jQ=jɊ3,ЉeaժҦdXpN$X}:*3Mj
1ã=nPU8ŵ*U"$"V}bYnx42WC4;~[N&w[+QNx4ܖʎ5]Z*n`ƒ>S_6BCz\

yxgeЙ {RRsj|z1
Lz@(s)%iR~;TtXP,Ej.:'K-'UwZKYewZ 9 F=Ueد4+o@S?aӔcj=ۗ\.I!@lYoe#c&P"D0KT`Xps 4.WOև`tl˞=Tl=^xr|Qʍz'Gհ.szJW$oૻ'J&[")1;
j$(2L8) SreVI{9aTՐ=?ɩZ%'?wk'x>
]T#JиGj%.˩N6r'Iм2I8k2@ɎSK8Ӫ"e
KMpz-IgWQRյ@W._[7j">? 
0{y˶	 K'D<FGSmWiEsfm2nBX"@OpPMUWmBJůVt>T3|WA58$+-⇩tp)6RӑHk<[5dn ǻMI^
=rz2XWmaK9*m|;8uɄ"i<鄞(,z^AN<*g@s5)L.1-jsהA|كNiӶJuW]#gm|V;̓{Ri>	&&-Ma%dd{$G~\ B%5
EΜCU.so^@sd OlWt	+{SB'~Cfˉmu ^:f	Lkjuj5,PVB9y-=R(t0TtHQ/nL'
PԮxH.I*s9`oKG?YGCp[[%h~]ƱB#T+CDnv,Nm
xV}ӉRY`޺8Щ3$>8^da8̭f$*Qq^L
ou& 3gςZl< ԞmbE%ib+(YGF`L
(
MV]YPmCA5vᕡP,GRˡ+;J۪rryD9yKݎ@aN_\pJ<r詧XHe}S0q'6A|MփD$9j/H[̒1ymV?I&n`=وs"'S}۔꬛8ӖD3-o-ʹUr~5(:5s'߇PkaAgG\  )]:^N_rreX+ڤzݮBʋ
Azj[QAp7cm]-rhdu-ndTs
68r`	C5Ϧi-%h
.h{OGKyy><.a5\3Ø8a.K7J:΂W$F V:ʩVT&mG+@$a(Yոb㰬Oϩ lbF]XA~*;ߓ
>yW>1 (\S`p%uoAz\rNVmȶg9k]3o¦E&b\ynp8CHZdBQB40r=H @[9reuYɋFCyZ>g&$(ױzMu={¼
v$6<FԶ!^|̆
Ow5"Nppºe|)TF<q'gݒz)u;Ұ+=E.3VMMmSKκoDU'Ƒ~Ph \In{B.X=nQ+c
	PW_xAD[Xm?[ Z{;OpyƝ'$#	ܔY<v.B3֡[`O"Mg'bfnAp Tw}]	<7I ipՖzY UXt (uKS+ 7]G,ǯ.ݏ*s+OWZ>V <ΤB	.E1!K	+rxs'bɖ$ۋ?EsK+>N8%WkTnI4!g;6,
r
1HI j.yц#𵍽J|GMe|)[YqlFT׆n*c;^"~2

* 
FPw,
*WG2չҕ}.@;bSD9 p *:JrwmqӊIR{d'Q;Ǒ|nùjS47"A*(IDfz5~,."ح?5`|,d$ynx櫰n>c:KLJOCkV[Fjq|vR@Ur^Kh8Vrh"*tփ>dHΗ)fc<ӛ4vGO$q%Of?E8:U;K  =sT.8
w9X:l+x8$ې$p2`G=Ϛr[TsdNH+~ϊY_%+JF:S;^ݖs;?uw4{=~hEp۞{L@ /i¡Hw,EF3?1Ү	C}Nl*:Q_2vK+ '%QeMj5rSt^dON"I#	NPA1pD,	*,5R*ԫr_mmWN$Y,.28VN[^DQ e
A,mV}ֵǯ;ڿ\ʶ?o !P\z}s3LjJ?AgL'Ebr>
D-uœ8k6դ{{	 V\;6d~:6n!xc%mZc%s=gT"&9ͩrm΍uB#GD=HO+q!V	0u.z0F4|_<L]$õ`Cn!LQFv	W?{grJZޱ~f?FqNP|_(mUTmd-.bzOlίzq9H*B@LJnhow
Bӭ#9,W:ԛ~6
sfOqP:ܲ㳮w՘:9;:ŕR- ׸G((SˍduȤ~D{Xy`˄F=.2t*]CgOFȋ}+8Q0[ɐ[9X]=<]GT |#(5HvlkieJ3_)n6Nҽ~?̬P:vGtr6SJ4&"_&:G$ڶ$bEUq9~0J)wmXY= xZP[SQ4{:"TaQ:7tLپ|j
	Nq`dSO|=ڨ7Ff=t|%X5{fw#O6\cӓ[}X_*h{ۦZKU^)4X\׈S_mWYaeN׼5ܶXOD%LήƔmO&& 7( B1nk%Y^$8sՏ'tB0ïs.\{݊,8zޭSJMu%p%+A:6W9}WOagĝPgAb*m{8(]N7|T}>y
O#	Ke))n˅6lY
Iq@bU3]!rXG[ ^*NF!(ki9UpFL|}ݶ91 #բrZKѮM@2F]\^6ڕm k]DCT(L5QV^ĆGw MRE fv_=/Gm̬>U<Jrq {qHX+CVQ%XNmSǷm;I";79J /﮲,õxN	xXlFBR{1 jT/*M2g(c鈩|mmK/w[[J}nJgy&&k[zA1ju K_ĬG ©e7Ns>U>{՗#J1|F*v;:E5#q\Ϲi1%G}R<-u ǡ>A8'aD5*$B8[ovޘQ`ۺDnCeZ-8!͙'Kɀp:x/Ǟ_Y{Fq 
ډRg#DF.f=(D6έS,wrW|%z""GJ:"X2w<AJĠvXsC۴CuEM'1pRN2;WIN?ғ^=ʺ<x^=AbM|j*w<&",|'!	TE1́OB
pF'4٧^MǤFyI
p_(>n.f;D<BnS_SS*n;HurM_/<.X'բ_7>̄0B 6UK}ຓ)<<-Sϫ=A׶kԷ!("PV[MBއot`pMcyN(xO|LеR͕?1SKv%!{'>0Ul!ylma-Ǒ 'ה\h*[٫̠gv$EMRefUqKY`GTֳͶ80KK+ך>ڷ;^kUeB͎>$dntJأC
q/(JP.
ĖjPw l!gdV2a|"ãASRHw\2CI%B )gP}_ڇ:l)8Hb
\ߟsޡr^r*=Yotq*1٦X+wkCӷn[{
0V:;1Hz6&f-PWc['Bk`pig^G]&!}$0
.1]wTVm?m?_ܙ۞һ'/b#	D
RToQm\d rtU5Gz^nVY =>5!Μz=%2rQ@ؓҠq']j[Ms.ROy u&z(\rLf99UoЭB<$v}/ySp&^o
tlDnrhwM@$(8,3&݌Jg>^lOKI۠'@JC->Hd卛;u٭]+t:}Ư:9ú5ps.V
tO$nqA9(K~f˙Q5 ]l}əᓺmCL\ٕjvLT$-2a:O3
庈[е g`ͫ!r1^k`^>'ox;U]!.ұAb䄓m	#"ү9=n멓XJ2}s
zs
yHKQY	R;,Ae
E܍XƑ
HS&Ih9*r=SQw2H[V/
]*\B͕DЃD.:CV7;+m1I`g{uA Pz7n}K un	]u*:PJҾl!ȅpCpgpBM]佨a5pGV[PIǥ|Í̎sv.`[XShdԢwE׃%B.өzd0 %7;h_մ\$QpЊ+m
$OHVw=OSw%]R7Q콡tLJ⟑^mI~Jܦ?ט.vQyh}"(f2o<vh8(9,D;L޼y:N6> =~
xP\Տ
 )A0Dmn8K0FDcGRvdEn-UUt
U1"iE)jv띜*z)VD<Y8uEx~h_]B
Af]k:`0<+Jd,--WқP3O/
|7I&Ya.Wlp˳[JoB7s:ƍ֢[ P5"hN7zkj{f|g}z$ág+UF!(E&ח]]
wH-Zn?v	Z\V˕mKɕdSs0z-teS2;+z6Fs@obݣ EcN;0}|gSw}d[0WV"I>ik)$J\j˷H:"4vݳڒ$(6 8;L߱즺;GCnz׾L^۱:J׃
Sci*ޅCԑ;7/#nޠBZ@P%]Wխj8 +}KX_e%~V
LQ^nc}p91=N|?fV3^xs`FO_ty]Ĕ+d̾nł^T~
>&75n4&}
\~LW
d7*9cgBm^ڪN]\8sV'rMA`x}w̙WL
->S;J7A	j{u$i=q5Xu}mլ5-݃7XV<@9p-u%-
J VЏbT6}W>l>9eq}5tTu˭>:"B8޼'{&.%* pHFy\G˖gCSV(e9
ܙ|xTS'!Z\V-!4+lϨ
X9^29=# =-CM>^d%{zT#*ݠ)hnXO~󘁤zXrS>WgiTutK8TR.فX
fF@I#WasJq~ݘjKwt.2ծ&dsas̿ZF{څ];W 5NJL,V-x"j\G9)hI͟y/>@*u,΃{RG?sm]͵c<^O"Ys7.YiSX	Oߝwg߸	
K3A HjnKYkڽ`8TkI$k|mr3dM?Ibȃ k<hs=kHtл!	%5p-A7ڲ>
nfc+s2{K2C;.Xt!q+Ɠ
.o tQYC["J~a'TG+Wt
q{%TՀV;kw2ET${k-)ٻԋZԠ0oAӢAM.(3~Ҩ$~bwP	{rSU,xc9߻UֲpXtB"]|W_'fi5`Zf:I{G ܄W^՝_Q-R38Y7)J
l?/k(:֣F;Mw'hA+.wrOs͗\.[=449s)xΈNW~"mY\\j'ir&AU6-	wnhԵwM%~80oL/_GPXA.K+X	I5i㐍˸PQ;2_:8,g~]**^.I]2MaNx|rV=K*yJP[Y͚I4>
;R>qjlEsqXN;ve ¼.nĩQ5'_
I#܃8O@Wu yeA5_G
#v׋N8:K7]$Q:`|>^
%\·,u>sYzP#	g_dK"C|Q9[§OXEj=>뷳_ApmG[KRVKx8Z0.pW53v-.ui9=GA٣a5,=\~\
/ZY,sJ0 H"igu3x[J}Hu i<oR
hH4@u@X%֫)QTsWM#⋤ K+fϼm;hNL<к^-VHI *I˃ѝypY;:Es?O
Wkˣfubr868u].GNa^a{@(n#RsM%Tp/oÿN&|%]8n;܈[$ԅqNw熷o3AF6rsO9 =]U+ռ"<2s\+K/? իV"ːZLvz:9vJxDz	N&Dq9?6= grUG,<)iy@ErdӋtف)D;v;B
ܶnӜ˹A@li
D)!8I:۰o%i L~ZJNGrT\Do:ӵQzqg#|0ÎӘ:-/Ė׭K\r
ȟ5.xS rn5N߶1Jt_TlWU	YYuo`zdm YR:y0%Uݛpn%.jmP}[x@h|tj5r(<lG3<0BZ*%ٿ@4qN]
05OUZ-_9y9iJx+i*T]5V.,ʝ_܀'0)VxL緋6":aXwe[A?^,\p @P_(*'F*+cM<vU2ڑ$ q7rՎ	Qxk۴	XFiJg 0۷NqSSwSv7T˙;jX$]ݷ[gɍt
ĔV#+7fcI{ķ'
O՝~fR6CȉL =%
%@s-	y$apq3jT[?6'OL굂)2zyUw#YܶwN;5
Q
:ybWO9I/%- Y NI"l!1W\Z{eゲIio]룡{z%Rz_auSNk;P_+pF S9eb,,f>|@HtoC{'C0]rR%xT۩U!ڌ9j5摎yZ?cFuEk\P
bbG7J0N'NLGE)zwFv>v;\UezTz7 T_	 E50BCgwDmn'
`1~ cLɰ!/J\);BNpGٝ䍄w;%:s,r #\Ѷct[em!`wWٮwKM Uܻ{
ϮUϖ+Zc: ̓o'aQdA>ZqHMVv6hv{xnz~^Mx=)Zq'E~n=ص,	M>I6}n7+ovX\|
N%`5:_d >_Z D	өF^+dzb8jz՟_ Rl  DCV[P(B0YQB~B`yI ؒO)~	ЙmS63>0 ;Sm+?Us^Soc$©ıcmGdG>{3kyM׮^YiG/%3N#}{
d*Op_!r=_ rGgyp$NFXv@yEiTR>Z}-A27B|})NgIdp$ƱXk$%Et5xm4,:䶬Ժzϕs4
,W٣N|ͩV~:dfM-?9VhК$&O5KMBU~M#KPCBvVb6Cmjx꡾^=]"D_j/%nCZ3 pYjZǩQ ';tMRiN8m9_ &U`|(ۦ}l4햍ڶ'>jv.WtԨsƏDyw*\zjp36tdY+D^E"
Ɩ+v^GεMx.H9{+Z'9˥/P!utǎ׮ŭ<U>wjս5g;kWHZ)yIdZIo `ӍبN!K?b̕3)ؒ((y mN@%B)XOfҥHg_QɧCcq˚+׽b*b}(1('9Ik*uuI$95yɠՆ>6?	3Ѹskbm-7iI8w	'8:('eۺj?u>j
"G߁r	<j]myKmgɏ4
c|'eHVmj
!vĳA_A8ljdFpl7"_4\d ČWiW%Y$CЫ{BKNLħo_}KA'JJNj)B|^Tm.9P	[C匧@ UjF	xwU}?^>頖qu=έΓ]@`i}HN<'gjJZ;9ƺ*!;:C{~7[.V>&͛|-;wY, 9s4z,95Ř-?KcZ]]mk$O[
zQ|8T<,k
%^
y$Z::K55ܜjtUX߳k8mnH;8}%N[t|rt5|6W(Pը\Q&8!#ϵt7Va(zҜ#ו:N_#op)$9mS:0zT҉m,dCUIE+,r)jU2I2Nd(@26JN	9
ܽS-pD.ხT0V"ΡF)d/06Xz/#o Mk'!x]Sw^CdX[J'8%Lm<Y_q/M~*q R\re]F>)]DkN|8AвrwU<7Уb#Οrj
d`4|\) C3[qr2/)|4"3  `F0y<x\j]
ymA|]$>U.7O=PnS(k2ѲEyJS⒨ʟ鸬3& zp\6kbeG=8Iy_jsMA񱧪-'}>zN7qiO%jű;ҹpNXdP[W00eӕ'BwhӢιÄ'7<r{	lo,[\zН&t9 oTsd.'7pvK%!>Kv B9><]IH[Ex`+>+\h
nLCJziP叓zbV- &jwu4kyr K]ߒr(%#~oo:ܶt^#yO}/-
-̎V/FuÊx#
>[+*tiDBNH xkb6WY9'On|:4@][X_ #1
>՜el![#
G
-v *NtOAg%<C8Y{Bȡ4̈́.M$ʴ򤟃VV& q8h5w/R<[W[F'ݑN*7whMəR?:q9t@%g?~{^eW)i\s7
law* \;RzP%zH`7HH>U:(珈*PزÑƺ%`GNH=W'(7Q̉LsUX_;,$imp,x.9+?Ǡl|HLum2-៉L$ͻoKe*_Ȃ;]"Yt3N#r`$*:V'5@:&O
Zi Pׁ(؏jrp@1FWЂW]!_g-nȩJCsӁuƢx[EFnyӠ A"A5DGytDFmm_&P&_e6]wt-͞
M/YIۑ56ziIZ'	77|䇥j.g :5|Hf.''v-Z{J xp/gj"Pr$Wo\-G>-Ż<f%"{he@wGmRv4ŻAt@yW65. pCy+s<D[ۮ42*NIF6Lhy=ŜTsAË
>W§E|"E%S\b{rZ/=sS(GezB~.=xVw#ҏEGo b祮.&_FۨS&IGm4KoM)`:i{;ὗK,s[nnݵ5+2TnTzz;f]h!785!;mYE-g"O-xߑ*1eK8U}v?6<z=fO[ z(NKݦGBŐwWotoʴ}
)rpg-1Ĩ3R@gIźeʎ{DdQL|;(~eKN45s,֟ҩתX~]1;I1%Hqd&6sn3"FdoTk9*YT;#_hᠶ*$Ojיʤ{22'Dr5I;*jI\ Nqp㝦xUaC=%0C$TS<t!D
eN]{<J'mG{rX8F9Mk~N?*=%K(I.ossdW· .0UϝT}=Fq np< !=@AՠCּ-Qml@j<OK\6>ɔH-2[ ŵڨ/-Y?>vun_DXөYUWxxHP^r戦zduFȻ3}[;$Gr56pW}vz&ʋ9ѷ$u<\9T^ڦ$x['_+ƼNkVNy_5.Įor.="pZ U7@#^af 
!hq'=j0U+>Z;ADu4KSq%ߡz3X%%o4?qq}5-4o-]e.8(U@N"s(ÞG}	|aG:}݉8,1rV:߮4͎A{5-Zl){E X֐o7$_Rw7CF# ɩ*|ZQ!D,0nu0rU(:§ҕbv-ܾ(ܲNz i
2`^[uP#uxCEF0jfRs3lY
3}ԕ?
GMu

i:ok*Dt'OGN{ ;+rO.3Xek `1bP{.9Ց
@27QG~T^{XZ"s{:BƎ9m3u=G@9QDDI73GutO	۠M1+ؠqL**US;
'e|C{	QG f4:QsIdʥnaId}!/^ʆ}[0F|W=fA^ NJ຦6k;c<Kņ?8ugyVޗ.u+88qrӧ{?ekQj\N9{#r㞋ޕ=4^aW\}4Ļ
hZjF%Dj>[%h{?{YԊɝx2v+eZcWr/mA=ɁYdF]Rm?ٓdG΄x]ffe"9y:)NyH'//ُ,{R!F1[4sM}]yMemoUnczǂ"nUtGtmW-UhvaW!_ݱ4S\ᖧ:"%p89_jiғ=l1XSHt.@`6SQ0qEx@$Q=zucO:Y%]G|y^qڿuyM4Vd1O
WROa]2`:MdjsSM'ʑDWslRԙծJmK֊}-_KZkQ<5LCAO2H<({Ku[zrEn;˻Us'ja؈RG~P9	&w3Muol
:dsUݚihTM1[7\]CO
ɸS.g}Ul֔Uʳ&*N$S=@(5'ϟ}:U?1+fU3rgŕنӄxari{q
;zNϬ3^p;? `t/q|G*<"*1}UpO7akdi:R
"[/%&jƭ.vH@"z-&N ^
tc|\<'(G'qd^qۍ,zrnUgKG1qRM^Mp[4%Wro͔1BW$q?SN:c*Nc^,G-3Rw;|R+u`rSqmFٺt<٣+{mV <H=R#9?}:Xv/wu'#9Zx8	5
MZ4IMÑp7ŮTw2{ȣ^9nE}с9=%?"9t9rBP&G3tAɶ'N@ W`χ9tt@j2ei9CTPR>"am_-ڜ'U'WsU'tL	& 	/N,prmX{y$3wm9s]B40j~
PI;Z>{+`9]s<!\F`r]BN>u8Dzb3huM>ٚ|Mڄ+UݕԮn"4(n>+D; VK]cv%@Ǖ%>TjuDc|\]L}]n+ҳe ")HD.#:g$SΣ;ao0ѤN	kl_J~^n	% iÁ襈[#l*$%l7CPUM cj\Цl6nq[Thpn/pH9[	R
~D-Ilo縻4iYq/ WN(sc5E,J9T	;R|!nüUB/cI㽋/S&}gW*qW
w[g	s5<J	V|J5(3vd[]&GLfkXSM>+m\ɝ_i9wl;*>ㇾ+lo~1YK>'aehl/NXp,|Qړ<v*,:zsZ|/+ZOW" P	HמzNu6\{r(]jBPxvDϢIpT~w ^g;-mm'&\}BsxYE -NNOu
i#'nSCW.uOoY|In=#bPsmec$UVՎ,A5C=yڶE"H,rTgOn
M=ˋv F=OOv
rSBӒ Em(xsjF4^vIuJ׉n0
ѤӅ1:gǧ!冃=.CO
Y<97I9_K(13(Cu-g4m`GlN}\5Pb~^,BQ=QsL
*puGQaZ
2Mk	됯E~ePxaPʚ)$2ڭp*Qԩ DI5D5XM(
Ьy9@mݝbuJ#\]6UzE]o7 澀+<+9$>'2|, r1?u2C
_]h?{*b{f0J\a>fKTdKq@.Yw\@rDAnaA	4Wjp(@%^a	xiMj}>}ҮM	'!AKRVIpo3+cM-ZPaUwAWΩjo˹O򶅠Vi<jvTy:;7߁D-Y;wh7ޟ1_9,aT9N7w@C"U<]kb魢^TrqchYȦ$rpd{Q@7wECI	ux vPe+=r99+OΔ\iXEn֓'a'w@Zͫ4PMBfCHgb!^	&zS^rl{׵[>[Q*աCw1tfu+?ON>dgp	mA7In]vwPE2	tFv.?Geh3DO0GZΐp+QAo_0~?Z**0i1$vUd`[C	FFMյ	V`sRhHY}n+ :|(sӋֽ@2Rg򔪹<tÙB56+V+HjA'~b 6znC`	2TZ:U(ZԜu$v.ާqуQd!7[vwvYUYX	Йoy-.Zu%˝Uze7,ʑ-maBlVo<G'|1CNOKG$%mQtJj5GcSvy<'9ʧ""*ʌ`_ hJBP
z0l>yfJ??SpﰇsPUA砥C:Mp-
XܷgEDEe D2%wHPX.]jM(>)I>=Hn_3mD1E"]8ݢhUM_kPfd,&UMU H
<\p
.+t*iVAAί.@*z \.¦TWa.	\V+{S}g-QoMաLy!Nq;)>L[`'ے-ڜ;gR&x0p
Sl4#-fq8҉=qd&2{dO'=ʿQlr$aGߺ͞9U#`E{,mAWy1;
c;8{
VQرt_ }ұĦ}iʩ.>
qXAݛpIo7Wgɓ ,wT/%cMi& S
.:+u
`L$f]?Ot[
5`5Dou.Jޚ21@ouhjAAc4<,C&-<Ђ68RSPz?HqÖO5o!ƵoJ5ʹkuX!ޚq	x	nH=9@<fWSJY'	V疆i%;?7A;6A#ݷC*"\@w֡ߑRO^AEHVd&ԼeHUc;~
`Gl匽ĹkLwG3rɲlZhpO\`6ű{NMTvZ:P"KNR֏z$J'6Y/GGEq\҄R|ct|Wкz3:^p>yvǍa3U,M!r]/!j++!{W%r:jR"\^)RoQ7j
~@hBeyn>)oM4޳j7GΖeq 9F Ԭcs!i16wI_&:D;D#p뻭O{ CHacD\o"Lr\}_DMrN GqT,K]Â_3T;$^0EAL7OP"]5tUDFU'Rv&HJ"9䌔IɋHO?Fu7yU]q,Cfk
:I[sE͘nZk٥
#۽#<W|^L[3T訳cÿ7{ʄAZ9jkrmjC5O ?˩7biv*薢"?V\4QiӹeY*ɶCK|7)D+r[Uf0{˺ZKz.'@ցWT7Lv<p<JkZ٢Ou`
P[CüǟZY
G݇ETM>N;H;v]	qԵt*#ҶTiΛT4p1eE+)jmUJIki"V @)9dgDUД@p:QIfo:֭sI{@hK5kv=_P~a|995}Ng
`vraj&49L<ڕ/Q} A3L\($ ݸwooA<wG;W	4%z^[έ<<u ~YwR.o8X۱djYE*$qW*o'o;xn~ls^j_e`I:,N젯=a@"U/a[	nsl_',YUgXpUL\@HZuÈW؅ڒWu݁,.uZoS%19Xv:ܱs5qO/|:`:\'91N}]?RcԢ}Tv۟s).?kgkEwI 歪^¸K=ϛ/K~jp>Zm}j}xENC6ZYf-*.n }ߝ D$|le*#
Vb4eMzI~^'d7\[m5HW>gm7ၜk}y%%;sL^?˩v
>^lqSXGF0zpNM	\)9\bTefE`)PpwcҞt]EGݢ8_hFzOxެSe{Op,*%	ruX:3lY=!b$jM
5I{[_JM*Nۻ 3GC[qgBc8ّ莩*Ea{GicE@&2tx.mI,V{<uM_XK(P5Nx'@*׵N8^C
'<1!%$gIs\SkQ |>E u3c`9װ6-x| e{$ScsXPlѶSaq ռ
!,
k6HnG'yiӍH|g/sG9B!GYc]xH

hUrj
yiFO$AxuS)e|rcAī)Բ@8vEG|zZ$&W:shl `LQQӲ	t- %W؊'w%4H/lK@E@u
-)UQNESR3,/YK rCjVEC&aѱTC q|,N:e>veޘsӁs3	48IP|P$l8)R&x
i	Q\vY0"/7 u-Gjf'8:o3nQOl̄y
۞Q<,^~	pީHQ'GJ88!~:kΒ Fy}c(}܍Y0oqՋJB?vǥd*,']S+^'2*^3]Xz21*rek +e~M#ә]"?8k803;q_#Hu[81Hc~zU%iT+8MKJrQ)L8S@r%ܻ4cQ >l`y)CO'rBfK0OuIɯK@ybwT0=T߯EYk$YҥYI'V٘؛WzMz*#tKIA{sJL	RjQ\b:Fw*'Zo;.zR༺+ PP\~6ۓD8{f\?2]SL>~|0T@~umaI;%t{S"oWO=z!	/(IY$wF,=֧nQrx $`uDAx* qlS$<SUÌBu-j-6Aaf
[<?!gESW{i*+eg/{7pXs+=7?xP59fݛ]M^BHgPV%mpGy֕=hR9d? u߭kHAbU] a{ i G}QtzU',xͶ[h7$ym梽3Gj|)/H~ԗx3r˺#c4沿.>?aEKbzZɓ)E|,
s?qK∤v9ƜkJn=_S4{^u5u.g_y9Y3rf7ƗAm8:TL+;s	1k({+rƖ:Lާt9umUbbPBWWzIΛ*|	6>!kɂ@!NUgIU{s TU`.@TYFiw\qOy8+8t< jFշUy[ӎcܦ}EIQKRĤe$ئ;ϫڊjtV]NX[)M8n7xD
%ON	m{	luoqozoW1bv%]zD_tz$?'# Ka(N1\gUmQhiWj>6"/emT+?2gX<b94lA5+UyZ񖫖v=x=R\[oGE}**o*^]ht]j-᪼]Upo;/	K=%ү7I\]V:G"Qխ龖\kQ U^}鲫
3(R^;\S/XA.15 GMhۀCߏ&3Yٯgs#L/kd1.+WxH7um
іUgt$9ٍJ:lfJ u)'epX/GvDr֭.>My9E2tS®\u=rZ:JsnԫDmѝ{8Kqj^bASh-:)EXYDUB~JD[
*cӉ`m}5X.*bII_xEX<0aձϟ7L֥d] 8_ծhN`ZJw_%c8X'.Ju.k-ںq 
c9O!VmI"9hyND=N*oYZC$G![ƋgࡗͫOER`U8.7=GWt!w`
XVo#=jY˂SEP.
GnjZ	Jz|.YX]5267:F:1[&x;$vGq*
i袭-G63J)>h|S_D4 F ,"WoaIo#5
Ag6MIX-ڡrxt霠gۤk: $5mTdYXXrڳWV>X bN5`N:
5#HK5ET\]͏yVQ_9֗sV7Z3_bUU;&-.
ґ9|(GniWuyq*$f~<!'a~O嵓>MMr2`j/)%5%nBUsY1/.9@Mɉ|MI`	*p_r`)(K	O]#̿l:qЎQۛȟ


k#rrW.(6gdX.ᱰ4qc8LQUH2~' ٗX}s*` ]]rM⡹'	z5[.='(Jet
te*:ST6[2Uj-K\d݅Ru f^?'i#`HB$.m3jì|t(*)_O`]
pRi
(
^Wsԩ\atRGiN(*rr*zovM=Or]X|cр-"%],n
/vd,^j(F|_	 ipeҩ3Ĝq	=8Tm©Qzk&t$uQa:%d<`og2"ZZ @q	ǒ#I1أtZE4~Դ?q&A4	In=>K"VN=v9D$~rhE]%[gV;]cWNKUvF`reFMP{,纅p38`^>a^Ta0Þ8ע$$WuGyJJ5I6VX:#n*4 MXa_;qkYJs܁
OXxuD'/@YJb⊉\ԭt}?i[v˩i]; u,q\zہ
	{Kq{-#Ź4TPU­p?ml|Gruxǫ! pqmiP:E | QhFJV뚃CuR[yke9jtM:]
-('|0ٵvdWCm+Kё$-ᇗG
ũ=N%)y,V-il8xW]yD6˰0ȗ~^Uۋt07uաTpBbn
=A&VSsy~JrBl͠";} #1:$2\ۥT.H
t_
[UmzRSSOR-}G
}]W1m<7u
yuUޒS5S\E:xn3@&ѡN@:kjp O87U% -%Jv)uV[#(X*x;=w?>p$>>aIPv_/
sK:	CYJ6Mֿ>*vVq҂ًol 9>a@躁VKd
>CZ{Ty.'P
@?ٴֳ{Za鵟k{|up 
q W44whaq&5jM-AYI*GߚC
 dKFe{!9j[X{3
&ZS=bq_@.e-'*BN=n+*~rN.k09Jf=vy$nMmُߺ9CjfXd9u2v4uy̻oVωJ<-Zs60e*<Ut
1?ǀKmfitV*ziIfMZ(.;MgZܟs~ky+v 2E\S_loͣ)O8ʑfu*:e1gr@2Բ*6w:hZdqq)NJmQNo߇~ǥR	 rI5|Wpyyެ*ݓORʡ,n_wMw!1HXGw|r]̥LC{fu> T>~~|Wp5=qiRw55$C9qB뾬?75qcX!sfBtQmY$ L@^EqöK
9
ϪZ.rJQPC5ji&+Nƀ}SMsܼ|K&o?ՍMVF+i Ϲ~@ <kL^ a5AaR5S2jhfuJ-x#:	O;Rhosι9@c
o[_+	rˆ!WP]rvԴudZ&BN/aOhZUyG?a%<_g-]Npy_zuUƙ \ѧgGouu^p-OCA.|VWz[-xrAy jQvF%ECپ<Z$쓠qspU޼/s哷Mx\|

\r<fNI\iFϛYUeRQ4)7_A7H/*wiL ##a%+w.f8>u%ȃ8B }.QjZ=8j9k|[SY?W&jB:QL˺JF &hɧ`ţb@>ҋ݃r#?p.D>.UR^1* lЉcՍ[Q8y)ī;:oE+ެV	Ljuuܪ$Ex}g-ӳw$,+~h'J⛫bMWo4O@b
TW=r	ܾR$A
 ቻdS`)\ٱRQBfUVLm<pֹGøU8A+
m)5hCWDgNEDFYܰ׉ÍVXÑ~Ҕ*@`V)+ap됯ڝ:>H"?u^ #?7yCȹ.TaxTf:^@ SZF7.7& XΏ:_}Wmq۟4uM9d]Q_\U'B0@ZMYb^휮"r}
b@$! An Ob,~2T_oa!M!0M=Sjڪcx 7oDԉ>
ޡv<=<)__ᑚ,O%K#yD]o
_WCZ:qGovQ#7'r|MТ{;	$yP,mbp/;~V4kP&_Y3hת愄]O>ޞ9YNɞ7x sWu}{|P}cW_9!"hx,Wnazx/c@me^Qoi\
Y3׿U"=ʔ:F^uK9L
x&DVf.PY<(GsZ1_BEx98ZܼJ*`qfM)`{)FؔT?<7Тd!(d>!p
cG&8j,^+}Nϯ?|H+xZh%B`Ea9rpl+-v>O^eJN%_ z
:7,n@foA;nN}|[VK޻~u)n\::HRQU$\14hVϖir8"G샘|dL>Z!c4T"c	1dI>4F!]S
+8qE7gs;> KT2%YYݙWmG4!nv%yެ.2qI?`ߘq
yԴcj86k.u`_	ӽ7o5[SjP:}ra{to"
kXTYP2u /'AnT'@a1њo

 NZ*0__-@m޻@Αa1*IWeR|k˕VNjH	~ԝ7)kU_a:n+Ψ{yvr:!)L*1|WI&(\G.ء~&L	(@Z^l})quhg_'ȉFq/Or#d;tCG~D\/ɵ]EPT\VzMvAMtV3Y	v1t㹕\Vn-<߷=7֣˝Db3ܠ! 88a+m
%U.SFxvԳ<dH>A( x5q0ݚR2gmv.FRWMj&x&]K&T/,	$9HZH+*}6 c7^!pd@G2d%'3+3Oʧ7$7,*p۫嬥fwۢvNCm9$gՊ\$[W"pO% ܢ"/a% z&xɪ~l)Cj[KpӞoq)Z_c[4|ԋ+w7&l :]]yI|-C^u,{l]?t8ҏ4_4n8e#pmҔͅ!בkݰa]dBu0pܐQ3õ.ߑ"BM4S~.{UPqE`BQliwz8ݍQIoߊ~3n?)=;i(mܪbkl~* Stv14p gRduMc+Mgˉ̡2Mө~Evdpx\T|);-x'ʢzpU47`Z<\E)12}De5q,ݤ|n'ao(VQQlҿcӆ]o:'dDlxpUiq>{+D˅R<˨a*)s|gM*fF@~+.'4:vC-yvHT`TIZH^硁 %`/U!&_)
=AG
N\!E?%H!S	hu]Ȁg\d;8ٶ5z)I~/kARm"aZU1H?!Pԫ-ދ};gg IVU{Ia$0'yT?#+uÅvptu53 n1_[eԝl (+ژ$R=༔?,(_
 "=<$vd\
^Nb"Ldc8
WJ[ΆʣnŶ8O*Chm=UXy-go#eop#/6+*9թoa+ `wX!E?q:/iRټm]z]$>9箆x9,UD!;ċK8{;AmP|M08cn¥n ަjr: 1LXtQJgzOEC<(5O#s_")Y~;#ĸS!b:qJ.ʶ{Ue\ÊwEQ3ori+(pB޿_18j$Vu'lZWe
"0ATW}(ݥFP1[)0w6Lv.p`u\%,} ߭,EV5P;}Qq
N\GȖr=@QpaPTjxoЎҚF5_uϝqDwRYs=oHm|ቧO0w{\j;AFxQn^ѥ?	=SFPSvϧ.\hZiiÝ
vn&UdS0C>+GO?RT0hסb
0ZP[{s{p $oS&G/nTßuIVGM`ܗw@R-sivb]2
SnQXpo"m,W"RU.Zf偐dN"\iFSLgI	 @>J'ާ@dvC\xLwpZsVH~oy
ZT6UDL~NJ8:L;~Jy`䤂@R
?Db:k`
WTI\<Eom@MSc_MdoЛICeQQN'&݄n_J&|[^:[Gܥo)qwiϮmEOդ^ZEcV[lT`"GtU1\]u4|?eQ*x򯃿 X"8B1jv,sꔛںl&vq5> U2$,SUqbٻJP8l#.ztI@f 2T(+`+{ZN&QɈy,t7$ad&9
0WUj ^4nWq.pd{PֻۓSBiR2𣿑wVj'ܕ4ٮ2ֳUkcJHv5.t-r<*-Cb:}ar .KX.>M[M>H	%eCJ]1=Kv3jZuG;lxިₛdZCS?_/r̈́x	w7A%#M^{d!#a<zǐd;_F2<?Ć
rVm7Kʛ'wH@|{	bWsG~ц_
hlLw6v<v(tHߚ.WϨ^%Kܤd\IZKV=I:+OR(yƝ2Qtrejٻ5Mk9xBq7I@zd,BLCcz-,7j'ANaK&}y?x,r8
a3gѩE9$GEnK]pϽ
pŬxv:u}DSxV̟ 	,lV"g/}
v_~P:5
u9L
7|Dl;gfgJ-ud\g{-G	Q:qTէӽJXⅵtCUGߑ_Ϛ9{@= *2H$e8)Y>2zgrnaT<KU{G嶂`ZK;Aޔ;W+f,v1r[a3U<&&Ⓥ#zUHSF .ȁXD*x
_۹kPl<>pL7O쪁]-@F:pNsE.gǣZ۪{O_5T zP;Қ7Yy3%	\/ӧۛRV`*w!
.iFi*۞<QR4rSP%/y?%^KV`"QP++y*QVHZ0r&ylsohs*^	 Jǫfd0
 Zp>t>qЫ2D<'xͩ{-;2PԦq:a+mĵgmrNaSjxs/x#|OkeV<GmaM]_bMŏ6b}%gכ*{
ٝ%["Ե`R0`qX%ٳxTݞ[߇t<s,s}NGXDe,*/[	##~Y'rle'2\e'&r$K^FKkg.2 PMF Cgs:ȥJ'dzziH	doNrSےõC0YJ֤V!qD硓5%Tȁf΀QvWS'׭:_^yR< '|}v
/hA,pQԭc[@mS_CB˦WJC34vv}4qp^Qy. n)r3G]m]S/4[%<j7|6bO~RO$:kg	vԤ4\$co5_k#H.cwpn2k'6r?xRUH2E/ מ9W4`w'gE ڎ9VvS`zXXme	 VLis{tY;v\@O.uH:
lʵU=K9NVT?<+eiӧ2E@7ƍ߽
Xo{>:
yʑ;5`⑔x܍!^ġD
:	λǳ팜Rw+4Z>LY#-l;C,Yiku{((6bLg}!<7~cq	e:8AW]QXӼT)I^KUp.ϔ>`VKX:ܳk9R2d;(pDϬUpI	<l[
m+sl5~F/n~"^iWLhg F]#R'IeSV%[JnhnJ,lgOJ{*E/8uoJ|L[BFr>[}ҨluSm5	zL]n;\4*7?2gKʑ3U+zVQu@TI5@};e;N҈RQF仮mh9PJ#Lr_t,!6
LVf|
:MI:Vu~#x7pdgzJVRISOR.a;܅a$x6V äp;j<fBA<Oh$yN$rȈNkz]u$o6Z:ۡr]	]@4HJ*	/orZ*gRh~VTK÷?j|Ek)G
ZVǲ۱iDvar"滷3^dv^ct
w[Z};'n#Ѣk9'K
]OBgx>vmjh	W܆OX&5WrHKy@Kja%yxl>yl Z^gu}tb{sNk`߻UWbXqBNe[ cO*_X~u찶İ/ ~[`\.GVT"H{)pڎrHt*w(E]+Ω5=,WQ
e% mz٫$OU0nۦ:WI>:d'5=4"?yO<j8)vWd!SOiHvuBVuz|+:xܶyO;仭.;΁U}]&Hru
\Su"
ݦo]f]ON	Lf5"k	(Of,|35k(Yr:$!*}d8hA Yd"`v *w+MjhiG!4Fթ bnsm]qN-n zhR|4
2"^:Ȫ=UX_oR:WQ9	J<J(ޖHT\2q㞾,a"*]jqOjX"O"w%sȚq 禁+ G|A
N ȳzK(MK!ҙZQ'^No8D@HEHw1໸ '{EBne\CUBwCuND=]~Ns<t$4ݦ])+uCn\^8H"zAiͭy;2EUFnTm>ڻuV3e<
xkB$?h`[	"O|r }J/{kJfn(_Mo<\9o .+$j:f\w	Sg-RVw49svVF;t+z8 /gh|*t!sn1Vvt(3+x" nD8$ZkKdG_@d2=:]\ںs	xZE"pHl@o6Щpݓɤz`QtwK+	T)|h]rBl\|p?j՜r"OmXEqHz	.@J@<=ںi|s=9O*S'R7F2CJ̟6R*F+9	EwNTt2
.]V|bsk%*Zr
TXXk#|YSx0A Ǩ6)WSz>0plB(mSxaAg}n,kENC$4L{%NW/BJ2tKz]vyN!n^*^߇kWchL`eUe6zFu㸾EuRkQԤAz3ơ&/Eoՠ[㱤pMF}npZ8%;JwVhpɻs]nraj% @NzrhPDȆQrZo1N}b4|֧;P=]e%<pojߨW/Q CRwc
e5yl0@-N;<d`iKH@I&9!NU3)byf`;k-pz@e75Nw-L
\rOm8Q{!؊#H'סq:h ܅-X40\b*.z>Ew^.҂n!XTy:~}S|-hNVH05I=D.CV'74^?r~
l-ß)Ms
}וhsfm
">4Xm|u)qn3<^ztg{Oܘ:JmSxoWStldtN]iۂz[oܗ{s@M kX#q7ȓaۘ{s<Sx6A5A`&hj@WBw?9,wz#|0$Lu;l{^iQJ"q؅h<nZaNjDYtK'h?T^ºpUN
GU@Hi#/:,p^+@8GƪpQ;F! IkCkhӔ-8
9a܅T	V򼔥z-qvvO
!7?:3y^ کߜ#$?Vq"_GJo*;:cjH͋?:<#>)M*B'X|nLͫ1կvhGSH`=2M/<OF8
drBu} ׶ROh%E.Nm-
fC6槺̒%2
zt7(5:/7d"1qanŤ]W$K{^DjFyBe"©`|7J{	\#CV+:/=Z٥Qiw䁂^~ͿSGd-\0 Y3!V T2D
z-惓"qgxVWe PofQ=١c7d`(#,MG%N/%t[
<VZb;U nˑdl^:$3j	-ףTB(uTUvsvƫ*:RZVj]FΡCiOP[얣QD7ZRrRݥz#W͉WDp}wI( C.LŢiTn?qf]ax`ԡy	pH9Vq~v{/d\oU(	{5 =Ewhߞ׹2p24WCNVc\Y(`&==qܼ9$g3Ǌ\0fgB]]8 YkRyдam<Ė=y C2(/8Uj]yHy'ISˊ
mNSrX 
quihkmՊY_kxJ=pe[{Ȧ=72yY3153%tg:?|h+	-gc5{7E.wgX~UR1/Ma~n#{깔-8.ʟD{jt hއ	. L"āmO~qw> $rx&Ȝ1tVf(s4,dp3grN<wp /Pơ	V+('\kYBKҩV%{@׻k
ݡ(k78rªhd"Ņ9s}?Dy4}J-rQxD]$r5̠&KwC9U2YwVb~p zPunb0O'1jk-9h򸨖s0
OKLcj0a$91ݜ%qbS/0Npu+6&VWq}C-``cE"KGh^gzaZ7'WCm3\I9bkJhK/[~t<S%(]ymѰi%Cxr Qre/ULzSo"Y `Y](%amU6^JЮ`[i
T6Kz_cJ5q<Zk}<8E{[vE{p#Ć4Os}FDvIlݲ*Sl$B4O߰\'G$dq_YHSM	\U$`|"!,Ǧif} 0 #c󧞬'9OZS-; .5Ǣe;_Px$T'~&̘*g([T6گ*i [q8<C3HC.5*bD8 KHytyQ$U}
+W+pHe8AY<'TpC)!U4\Y`E[K{Wrх'jn%]A$eԺ>5Mo	ȾIs9<p5'_51aZz t[@^\Jt`!"
]t緜UGГq!QfYIIULJ
ر9Pb
f/?6a@3R_Nq)
ëO
)zԆ	߉7[C[ *`R@e;clYIe
J"sQwes++T[OL{U9j~C@nC#oŖ8<J0gNm6UUD0"~p@'oڷD},y[:<IZoroUuV}ͅ="p?<F88B՟9c|EDQvIC('a!vb'iWs\dْ ];B}urHhWLt`9{Ђ['Y٢0rU	
<=/~KxP]@s/PxI2!+Quod/;qQ}޶!Rzlu&A+zBg-/x8zn3&Ĵ-a)mtpu8%GGT{X)%l%)t b-׹\4:D"<K4"K%["ol)ee+~	h̴8v$A\eذ샥7@bPw/[K'uPNЮO.rl0II[k:L/n0rM/32{4L:ED|-ND'w7$jsshҞܐttTu^ynThrDE:RPx\*{,(L&6 8\f*ǩ{$7թDuB\9J5g`jZ
MZ't[YGG[q	N7<Swpq;Ja=t/#"'BV*@Vܢ{#wA_pT 1+Klj-F㥍WүY
|G?de~tΟU$G۶+P ƣ.ˏUW $
לWJAXjA6ʠ@VK%1PmF&<p3KSюOѧ*vzF>|؝I, {\Tkk
w$\KҖ2(uh+ "Rإ/ 0OG3x+.t[6DV;2]QΣrc ̖mjt;KR$\rˊ	BF{|(+ړ`SԴŏ:%ϊ;+ثw}!=
l7i"T!lUp8۟㷪{Q0jq (zh2
VnEƛ|9h}ʍ^30*\qbGHwɀ<+ C]FC`u|,硛Hz@r$Fvc.:7;#ňJa"O84罵ѦMƫ_ow8 j ` Җ5XjECzӟhO"=uL?<1k>myס79]|nH&ga
"xؒ.G[{Ή:ûL
w|HĘzIݜ|xUHgk7CZrhh[
!u	jY.P!",]%	x"i./@#s)\sBҖZlH
TqkpոSf5R~TމE~Ԣhe_Q ω?:rOFfPisc|@ʱ]w88I_V%b>$w( 'ޅ
nG2,nŶ*TC׿}ۭ'PMKl|cnNːicto3RK|AA&I~OVGny9;$iMzSX5qNŧD*
<7I&*Gb|Ϡ5EE)J#j$'s_j-WḒqMUA&m.g2xɲEbW]Gi(6MH:x<IBХ)X<;W
xi[OMB\ab<$^hWFk\wExsovo۳`2!uX)B~@CQ:H'sK=o=9JlN<=dӅsU+0܃;
4KvܴGn>އXsKD~hQ?DX1<?M^\y\WW	>WvjnKttfҙݽs<NpqvMJ}[U!ǩ\^(9qϢ*jy!lM$=!sZ퓡_oy`򼟉]+PH}~],Lyv|V)Ut4Ӝ'}S7u~~޴ЇUV%vϹcV459&l_B8pr|d6QY_?ise/ [y^|l/pa#S<qeMAU.fo52pA#_RUxB4V~D)?ܱ{@-S@n*kB
euَ;\r{5W,M1G*tT{{|ur)M ŭ)0/U\^AG將|ch=	
ZT8x
W'@]\2{ ^1QrʶQ!t(lR$?mm%u%YooRs-BС^N(43r #\DND:wqsvq/OCv{o:I
Nyy	Lv>[QTs:sv,5RP(w~"7Cf[0U^ vVB*Z$P]k<E7˕`sd`tr!&8.b4DpNZ6z@>pRXբU:(Sgy{-G]r
LdxSU[M^\d
SP rMjY	C WR6O,.9[ݐ	3:z	eS`CnwX'}.'809aJ~fsnK.u[d(۹&yT1r\͓Ԇ1\;Uۮ^6K3J% \uujK~(z8+ԇ!GPs`:aŒI*,&͖m)"ۼ t-w~2!1Ъ8i>48y= YgT|@7+]3!@\1C!JӔwԬՁ3NzA0
aopQ9WbGw*f
,WV>GS_+!!EoǽA 4ܹ%	* wD-hGſ@h.<P--gZf59ioP%	g@[^YjH\}>Rr^R.I@+nNFYq}9ti~*xbXҖ{^Q:9 _Ʉ5"Y,x7ټ8/Dםɞ׳pu
l)i5-P@sk Q|1z;na^1ٴ\vHőaCԞ=Uui6݅e#-peD~Ws/2zRUy H*4 =^veJwbʋoaӓsE<e~¨o$OD7 [mV<Y"L:9#"M*Oni)|HH~OE#T-q<ileA8q)`l^EI
)=^a岮:fQ2I}nWfs 
Α:n&k宽	$)|EĆas/~U+8s8PHXIG{:I
(՝+dZ^x&jh6֓j kHIwC!~x`![{^EH}^g	^ti/zct7a8oZd[T~[ы$N#ësE]h1\<8T0ӰPp O?~;'v4<i0vo>'6s
Bv 
"qtB^eྨY{Ȗ"x$W285L)6IٽBLI}9)vp~|)^jeEҖ:;a:ت40r`b=HtEBdʰ8@3˺P氜[(iTE c*	>~~"j@=Tsj
<˫p,\ l;I	'd78p,H]{Vy3ʷq438+IoCJD<˙G	;!rEgjιi1N	\eȣPDf%v6 6nb>x~um̗"$U`nHgIx	˶J<\@,ǏŠI`'O5ycٗXyU޾S=p%[`cߥ7>ւw<³vT
~Rp5T]\t>)'jr2S"hRI
r˷d @iZ``'Ѿ~qU~r乕؆qU'nmn6itdܿѿ92tV8uͥ[-$˺$;W
@[oV@g2Zږ{%!]Q=`I3mEG\ѳ}L`Դk!_Å'**  AM/	|6+dGO9%:(՝+%ƠDN":^A<8'Py! 8.
ӉLΖF5oա
YD iM޸*8u8N[I=kM.V)-UфT>z3T:{)|E0O4єCӑtzu,8rGZ`-IB'9y*b7'A00ةCy
!{yO,āƔ]bU?J=>
S1CiexxW6|r#$׏gS2ƭEG%(\i\~CRD ~S&.^vA2
iřfMa
iL3Mu7ewqV՝$=c!p|iWM^>OnQ֝ڥhsB,ޡYPcsѭRY
L묀uEOd@t,uBzD#;1sk3ȯSYOV,/enޫR
Agȣ՛Pxc	>%
BҚqmppM'۔G88_ :l^Ai ͙GH 떒uJ.X8O+vQ;\/,9t-zax<ul5~R7WyvI-DN+9:j;:Uڮ+[@mAGH*pPӻ8=:7ְz㱋}<bA>Ds:T'&D +Vip(-XT"o}&McV"1j_.Z) |<¾G΋rN!9PJ]৵)0`yH-&gT*9Gam
1_'ŶRb
K+m=¸bcIQUkHy:bE9?JO>O'@A=JP5Nc
&̮TJoK
/tqP>Vf#̠Pqڅء0H҇&_<:k
#?9>Q |,o7]502@&)%G9ؙ+&0xTz ,\{R+ctLSZd
a|ƚ>mh,S<
yǸ$||ȷR+usRcW1gI=d[uRc" .rXaX].֖0snMkYǹ->6nV8o϶^)Js,P\<0Rq9r@Wϝ!}[_þ@^hHV&B%hzcmᨻ׽հ~(Th
dӨ|˷cvr
2bV$6fSBLj`<t':Ew;f9.)m247]ʻBTp: `nAblNpGאꇪ)r$+AOn̖C+oZuyknY-TI<Sd0Ի̭NE⦆#ɅqOSjd!{.J6뺔NPW0
9>SDnRhͩy
3Cp5I)KlvgnK[sΥY}֋x/LhBR-pԪkeRZv*_EvN(ZR@c7h*ok\Zk[$!Vr{k@|},;RmD^۟P8utWV?|l,OJr"Ix̥yB|"sVQ7𶇼ƜZ[SxIX= Vkk.:N=4 h+ou,ngW(.%UWƯfS#~WGv[KA7-kG$IDQstju~#35l-2(g볶G"NRIO?V_#YV£
gmuK$	nS@Nts%y޺.[EE@/"
3t>_	K
ގ']zy[e5s!וֹӄZ)?59ˁ?MctN@+O.OР;MJx
"U7:PΏZ[~&>:<ɵxaAVݾvBh*_ɡ\[R*kղXqD]8&sG]׎V4H|	CH -(\꿥1+*TeQ\)zs^rfyt/Q#:FM?M੬ڨQtyjTZ:bڽH++3M; 8׮v0zU|[]
r" >k
0B|h'2j~?~;P9ZU1F.}f¶F}g`{HjTJSEgg~ЖX7[
j$,MbgFTE
;WuB3B(0袕_*@m ܮQ})2(G\'xc9
 ^˃46M?g=}!?˿ўuNqL3x_ϛ)9emUˁU/i0*OoeҒFRQ?	n\>ȿ4
cFH2lh`Ǔ(< !n;JzDwS#X|KKgJj􏷅V~6ϣ:
`)?wž^;1$] )2M(\.^vh;#0֔v(򦰝/4`	
PH+FCyiG,
%37@v
Bl;UCy.k NpAZw1=
1)\YM?[ Ǽ5(@5HD4y 4Ck3诣=*Q&,<AJ$Z1ߒҨqkXQw[E;˲j%+
=`9MQj/'X'Nrw{{zeʞK(%<X^<\Ԝ8|1ú*WiJ\N	!;XAHYe=Dⲧ#vL<UFU芬J u+}^jE.Y^@*'_bU)fp2sۊ3&?ж@klT
#$8ҝ<a:~`TQ>mөƃgJaM iFd#ȶמylJSCy::蕕gr8ұ@لˣsMoÞiiL5{_rW楳(Z"t
ᤎ[+Ԩؓ4-cD]pb
཈"{G`e!4꨼a0D!V^gDy8dR?N2,K %Q`ↆRti#z@
%/=4̘U\e3g{:`ysby|4gyntC;*mHU9oĚ)UJT<>@'#byNa<_~o3"|wU*z[(+{WT4>0(LTeNJ+Ej=C<lQ6UD,B	C7G#>uM[	OԬ^v;c[*ckk|m69J5r5w]
Ȩe	 v}Qy5חSfY9JP+`R=
dY8P%r֏
?mʨ+o:ɆYwQ_?\6Iw#VA?-Jz<*X$Ǘ*yVWMs6O>
t<7S7w
.(d7ی<;)Zҗ7_fs8XxenOê=<BpE%M
yeBNaSHGW8y1iphF=@7Π!#sv擞V[2hc!<]+$-W*,S^Oa#}=[a4e`65mpN`>lZ(҆
sħJ5!P1+LcÐtc0$oLoNZa1\G1Mi-%vg͍u ]Mc?U6aum}bsVVmڛפY-Y^ڗjCԓ𺩴NijfCgEf;Zexv5&h=gG-WPȳ.0m(@[d/ehA5rPLڷ+Dɴy1s?~jyri U~`JۛC _XS)iO .Dx pNC8NM7~3L:ZfKOo|osەc.j"JS
nq	ӓePa<jfnf|tߡ{miv+ x\]2./|
^^tM14h+; ciGqHG,df}bܢ*˛wz-G}菧XRrNuO
Z'OҮ/flU[0+]S7siԎo;<tҐj+Lԕq?[C'
q\<vR*pSXƖC=ʍiZg	zx^,{/eh@.h%QRUWiOwdILgxtn5K%^8pMQ	MF"mP`VR7~4==h4V~~t+:r&PTRL  k/o|9OBv&70	e#}2!3RuZѩ6x9([9V*p|W뗽z\Z39=strj	& M17alfZV@
{Ћol$sMA/Ϗ m\\׶ynU'UQSb׭۠Stв5j`E^u,BX<	|Ivj7$(Hy޼!/5E.TtwfPO5ׂf,BMa(	WZV5w'ᡉњ(QkyR~~0SM,^:8ȡ@X{׸e֪N
JBSC5eu=<z-^^6m50KJEAa?<9=\('(jP_,8y	P*=w	>5_3=]klN9HN{x(XTqXӏP)}:ٓvX U6cgyJ'p_LXM#g1{9UPେG#Ez:UE	/mn|rؓ\{̥
xSaqˣCH>ԱîۙsTV!ɳuϖsy_;HjA$,kz	
{_H= C;uQt%9|:T/'((#vdIC[CB%aF	hu4px8*=x&ݿl}GouʔN|ZlZ8<iq֭-9_+|,TbieΡ̺|VZt0\y{.ޜ2 za۲=.c
_xj fO큯j&A'Cٝ-(Xy_	ъC@:au7D1Xl\c|zMi?ҩǫqs'cSg{ z
`*fNfjc6Ty DCט'{]{czڇS)Qjx-Zj4D
|HivX&;8IP4:?c4;z& v(krk̦dҴyEt]ᵭ=ā&`!'ѷGk;.=;=^ZaхVah,yg$JT6vD',?cꄥuո^cK~#^]T8
0.[46e,n;.=þдr'PXM-yuU9lަ
P }/NU(`C%'>_n&ޮd-V+$f0W,Y~JPctF 36׾nPa<
 @ֿ_{;F򤺕nV1FCya,A4b%p~{iR Rؖ
$m(<;bzU~*{i|{Hjʖ5>ʭGF .͘a檑-+Iz4')u*gNً5M;([g<n34 d(.@z {	TFz8`~x
R'n>`*:E-z8ɣ2s|M֡o=,Ǹv$V:`u.@EoyyP,8޿N֚J00a:h
3
I_&jv+l˜gFRs8a]\MY +ccÂC+@ld5͈a[0L+>NۅtJ5b/|z6=jmqˎܝLM)^aph@@`@kviZ<*'"h7)b<lqڸ'>Ysw`Upqzw<P"NA{.Gu#TR\\@	`ds`,˪֧yԤ-Epu5Wm@mх@x1fIj$C7U̓=]K8U=ˉg)Sv{apЊ= MM?`kn`56GO.A|^ʑ@a i!_nٻydM%&HdE:/&UjXa2F*YBz/kʅڽ>
0'ŷʖX~Ow:!fW&v/rNe;BG94PvӱEsDױ3޶U74.꡴Wϕ%ba=7{zU<FMw{-j8ئ<EyN,[b)%wvt>\%UuЇ1y;ܛC!2<ipu(=c`GFt:%W}i UQ[
ŜqT*%8W:M؊愼L^ L+zZz:L~ZLjh=TDhڍ H1igNX3ThA1J_<ٚxu66S
oh;F	Mòg7q0hPi[?*q{e帘5J7X#=C ԰y8ȯ#)N5QH;ˣL3w	j<;DghR;ݹh0Xɽ~^#f]i" sFmx8mTbh[D_"-J;oVwUew<mC(&DƐ_yLG-鿥&KT96v&V\T'[(%4h>.c;`t꿦] \tT_
Ph׮6)mf-VOX8AP.J *(;zdA)rj{vjy$4*ʹ4wƈpt<;FXqZ-jMo[E
y"gD&RQ+:o9Zz@&&􂧗{|ɓ"m6?Ri k{;vG'	î`V5}/}8vdF AAhNs5H*lCImWujP,Ki~SЃo[@,SyxnW6k6N	R\a7o^C\*&y륭<Zlp.EQXVԗk|a|Ц1w渝nbOuzƢeS)<D#|l}{Vn_} lbu,p-
]hA5AW ^zEq)H^zTt3_cl}EgA\ŋk̽DA7/iN9
VZ/:~)w?EXj>DhPrh&ټթ,W{de8.g͢$t+: Oqق<a%$'
h}&AMEت+AݔjK'pza>w-^uFS5ء2 ^ ;|F%UNR:A"]oFS
'K*ݤOl+"Ss=@:x
){u~Lorh:vWT(xQ3_MÙ54gu
8D:VG7:On
t//X>w5i='s LԊ_x$.eZq߱W#{;u<z.
-x6N uY2Hhh!ZUi\
&/WA!^:Dhry!-]sA,;jj"lWQ0
qAleFمMc멀&OJV.9iN$r3iU{
o(WZlkt݌і\  ۠b^ч7<䕀/MHwYG.,Gr^J8? $޼@«~jg#L/+M(fj3,X
Ce	*j:H!M&:,>ێCS"P`;oj;E0o,sލ7C)Ј6 q]}r.zaZdYtAx@jsK`hvsSRΰX/p4ZV5xxt6h=d#feE>)d+xv
w[SxEGJv].Hy:&vC~7䪍/۸h8nףswnI+iʥHm2t=l:e98[wdi7Pw.>*`FY]:VxNBp.}pڭg/2lU{:d6\^ޮoCV~0Nwp6p8
1n0֧h|s45DTL7:EdzoyIDͳ.c8kϽަ,z RBdr3;_f_5>`)PY#yнs9k	P}]gR}COJv+E1_vrSO2gknsZ}ǾuLڽL!Pnb9L?AQ!X1GBH\ʩT48BN	~B5tά4࣎29=^*wiUAy%wC|QBkMzK|>;Gt:(oޛ:;ۧ50kL\nNsxk#_o*&ܭ*TDЫީ'vdE^PdK>N]62M hbI~t;(A~	up⦭QA5wUv^2=muyi=Àms6ϫ5uj -N^Ch*=S{.X^YPa44,x$!>Jf}s8fy<%< o'pB47y>rp>eݣ~|ݾ'=l@BZLa&.etx??ꎸqtvFIMTp>hџğb;^t), z@{
_-47x>4L&B%Ԋz{
|%<s3+(.'0=;TcUmMN{inxP&oW/זf[[=ahՏ(%pVyޙks?OȔ8'@&
L^P[O6+.Dh<\N
L",r뭥yd~2+S~TE-#ggݷùa^o
/LGvihk(7];MouPa}9 hhLoLO[z
В/CiNBRSs&Je0Sުa,jg|_ ו^J1{V<y=atZТ_  [`4};+XUuf=\<ZV
^C:֟EY5b<N+Pi/:3ي(%o%M[#dv}D[fpxz=83JiMAN1?w敲5~SceSJjec6551AVسց.yd~4
],JNl6/ޘ9j>TR=uKݱ$硜jt
B?SGC5yGovf#S9')F]28 ꥒMщA3X*ڑpۡհ/1ع
f؂:i/yYy=:PS:#@UcR
UP#5\yHjVU ZJC
ʥ/<3C1$I>5WV!O;Aq>||:U`<kj6
a*|W}UdBXS:wuł<E]dcCcj0

CWw ɷ橺ë?ؼSpzB-Iki#߇{J-=J?e0?ߌ	0^4O(oqH.`ڦ$7.-ωoOurfAo}O(l5}:: +	w \0e
Ԡ&o<f=hqx`FރziH
(zMMy"\w.!D(s/ƍyHObɅ@QuǶvLF=fvgc\_Do*qGEN]UصRrv w=/GJ:J}W:!LU;8KcvO3͆0BS8cN9|,3omR)7Z4J|})~D$^5z{x=0f{,UzJɽJz\zJy4yܘ{#ٯrMl(7O8|eJ*c=qSvHIqGSY9@RNj /Sj1*u	]>}U	#E?F;:l'V^{N<
3'&B6Hm&]M԰faܝWp&J!NtH.&g꘢PAw͜yRI<h2<3vH֓!~SM]^BVC5v܊?mllD*e2=W/Q~@mlt<
VJ3m,E\(=D	a fx_HCdV<FyPmyS3 _z |LOcjJ©Dz)q
#Ol1'n,@E	+b6qD@#(+d.~-eTN۽7k(id`Jqgúv-S=W+TN=6=F[gmؠ[8U5N3nG	<BzlIͺj$0FY1$ճFe355rQ3ȊM<=s脴RwRd9Iy?xY44;8>ѾId@>˼7~k9'jL݄kɻy}j]t@#{97SUF0ofg{4B`yza:!R=X{
q{&U*ypT6;Ao~,\ιݭNp{ t?޼z"ە缟kn'1\ü5Âi.I7ޜ#rXf4#SfmtSSA$3MT}cVnV@άߧ;;b]o$|-0#{*j}=-{}m
Cbwz1{;Oox#ɪ&;(Ɍ!,*̢&1TءS	b3Կtrᜉc݀-Hp5Y9B&1;QO쟲ꡞ*yӃʪQ+_<A%]R"2r
rYjΊղebbp;H0NXŒ8<i?}jr4uҷlk^N=SPI(Uk3À܇֪;{z_SkgIB'K'=AznL4C^:MI{vt}5MyruSEo$dk38`o	~qR߾me"g?_F%CF4*f	/ Υ w{lQ'9xNvS d>,jQzId4B_Ch_XwSr͗&::  ։
iC&@[/bOMWec*͋<O(*b9eI0E5t3v
tSbpY^l)Rꃜ-|P<L׮ƾU&m@$XNYd1ZȲo<Ihӥm|tƅ?*ue7r;!ix` j2UQW:zmVv' CWN=1
6-Vy2kr^e) g3o<'-z^z.]* oQa)ڮ2Rh*@K'
"GN<2`MjKHi Oʳn04N:r^=kZUv[Jޝ6eI5zNj,`I<gLtxضP*!tC>iQ>A'vuSH^sfiIjenSZZs0Lݻ t"ur}JOIJk=sb$7=P<z~JQ3[Ei /Gn7D`5VşSy@)Lf"Ӑj]APT(xne6uk;{DA͌e/KL*}҃j}TXMpaU2Fqlg
e+x]E|@xgɿ2nAp[FNg[uoFQt`Y]γuxP
KIW6&Zs8;:i-Y0Ŝ띮]G=Ӣ4aړouj
>ǹ.eft}g9=56_[	B
jz_=2K\U<h=0O(kɱKD8QlS銡Y<B~?;H&7aa&9t __^n~}Ҫ_"zmxX?R{Rߓ9ȲJn:Q-`@|4؂w_m2gįs[ },;\x"{PBp`-lPr4vR<.a,[Dl\-O{4p{Kx4*rh.slf2VY]5/xzk6$L8 )33C)߯-C
ͣ̟6ʇܬwޝaQ3Wd_9txF"CME$~{fIcP49Qzv$iFCѝ<=n1b /skM`ѽdL"ې7V
Zae`/U2q@D/wVr"Ԫ[ h?M>UI/(<\~Y07S
:߾ַ29k'(=Ίz@wvk_moӾ PbvmژQX|]xOmE3?wݔ*%׳sAtN[C^N'㾽|T Lpu]6޺$ƫ z 6N~6AEѕ,F 8E/ TTN3'Rl p ʿ!+uzUQ%nMjET7fTp
i0`u5EV8i,6I=(/Kz6A6{ǃJg⧤ǳHib0ȒS~I*coٍ߮)dh		S<KH.Syǝ5
|%<+Xf@l^4>~&^[LGaަ|ӌ&³
޳2.'O3Bۮz;st(X1ɣL8ZY?Yfh3v#+|^(P3}%Jcm T&mC5VuϺu;S9 b27(%82x;x'J|YodM}<5JRșNֲ,4fU;՛R`E"uf13m0~l+G|y`<^˶_'ysmvoYY/K.LkчR:H2]
TY)NUEETN 	;,|Q?fAyx6e`Y%GY
!-QSM[3mF*o@h'C9}9gO#jh+_dK&>yO-^
ŢQoKI\٦ԗmLЕڮsV}Tn_BX>f .wXzۃȈLCW;6zBwkLSpN5wÜ~"# pA{Cka;iY%oGj5u8H	PPZRuQ?25ds6вCAap"~`MmNM]tR7HRnnƄc4Iܑεb\^J9N'lF^Y*`%
*1(ck89MƗw:^
=e;I2HRJSztןX>J
 A;	8NZGm[6rUA UgO^:<,@]Sd.TNlfG țT{vjtKBujPfu:85>*b dבcK)(6]rO_<(keCE Ymmj~S EN
يgSD:6'%8E"ϔnР	ԏ_^ 4BJrzh
 I1}o@RN/jɚ{]K	S^]
^uBd;}8ٍͺѝxZ!#=&F-{FG6Lί.c|]FA(ubٮx[R	N/J#uLexg1~j~/MӍ Et}z7:-s|/(1RST=0]
ΣixF&%@y4ѓ)Pth  >u|*j8ЬDx0}P]yDEoMA٭Qc=5YFWE`KR*7Y!5Jd644rom"(Si+Cj7X'BwfPbۡbP=`cmyL 0I=Ng4œ6UM9e7|h`WF7aPR,g:]&.4]^$@"
;N*1B'~yhET'쥪:6#+Mޜs]7\N#& MG̆Ԫܞ쯺b:$jX˛PVw6oԏ=`6Py^ImUWYl{R9ڿW-Ld_ 0mWVG})=gpHRūי0>w<!MT}5[O
s]MU|B`VTr7`a\MXNx_Im@<Ì&/
1`qMޭz!34YO \]T-9Ɲb@0Qam1xi5%Ur>::]CZR	: \≇t8KjN,^JGD|kgmSs{܉luOe1B'_|TSYs!8=}KTŎ*KGչTX
tTt{V6YaͤOόbs8	@|B`a")}V׃PfdKyNu&]Ҙ/)]&_AҚlC]߲2//zn;I|VAωl`F%;'xsnCO,-}V*gzOBw܏2<(V
野z+i8M*CѪS4?
	"\FfMX&GbgCzВ:_Q7x1[nH{2{p.,$yho_ݏP7
BNu]y۫tG^H5쐷׭g
xkoQ=#k̋Ի-n7uf4<q˪靖Dft2NimQwVnB5?o>+G]NC/P4y	߫醏`syܭjW#Оa;6:oS|c<6qo)W<~pN//5+kAp	<Ԣjükm"X#!po\HF<dk)
M^	J;VT>ǥM
=V>wyݪ<'}A!BG_ыE1g`MU
ha+E=?(/>z5?jj꘠1G@4m8{iҪco.e/]=IjgwHGtǆjfԫUob20X*#2)^tXvlCٗs޺
*#
W̎	Y6=lǩ)>tKM%;tNi^dCcP}gD :<RoTfezKY>&mf$C&t(JtsRTWNvCާ\u:+sN\sߒ{iLrpt%cxDQ6ik< TcX@iY5*NBb _֫SCPR^ϟ<@cBX=A#i#&ߵ[]4d
NQd%t@,I
Ǣ$&HwX^?ٗT 2`s Nf,Z7PXUMFȱ^=U*/;𨯻@_|`gȡhXpz|s!vtan&͕.C!YyGC[jDVXF'k|jq`W5iB`ݯY^vv eL);<NW뾛V<G2Wa?WP>1LAO|ē> |UӜn]/n99?ChlwFɍ`CuOeӗ$;LeZ[/
R^94z(p 3Xؔnhsh=Dw%9ͬ6;"cLiaTU)72Ωɛp:`6.fiFbFJx<-:R`4;Ѣo?=ފL98}b΀^ϥ aM8nOVcx>BdQu:9Fş@N VqtxWs۸ t˙CDw\V<[Su;ۖsŗpC[Mm5bѓ^ôԮ_QC'}_P5ȹQyGp]klr߁F{~Јu[0"Ų!^;&	<
ލ}'+nH&Oo&kL+3ez_^@2vJoq5_|T(,ߎ:'E\!eM载ZN.,)zٵ|cZK6ꉏ_cByhjxkv8BFKYOI1mZOhn&'՘4M-WVWi96F/ƋgY1ʹ)7m4PFDc.VbӌzU.>XwbG~Tm5oWc?9Cړ%

?^W:u:`&fն
8`(|۟h(QScP+vQU_U0V1"<F8U/ό.Tplk*ثc# 7558vwj{wexwk @Icfaw6α൤wUEy{$KNtzTD1u67ˍ-a'~‪/?Xc;cf^P$7VXnq~(r|4ve&@ sW29NHGP_@	Q]8pwpK.ڔ^z0}A3ߘE GS)u_{N&+Op}e噶y3zݶ,.y49@&3/T;oA֜mJ,?bkDp
%]§'9M.
Q]y{Oskcк]g0`@a"whдVC*_z<ߢυ
r'&I8Lbf*[;?_+pjxzLP~z~l4<T"70FB{1`YETpHJ;R,Cs(ϻ"%Ꮟdj{&: Y֯N~~
\Г˃}#Ti&WR(v^B|RXO-*fS
>pw+gvl]0
|x,ٳ#xekLs/%[ua_cqE0gv^74ֳ\wG¢MRlWӢQaf1_f~P{Fr>
h.4F1TKROQ~lc,E'(
Й^3
7L)D 
;jh6&"5Ŷ#lgN)7CVz#Rj(0(]	Ce&E(jcۮ-,!jwۮZy|F0TwJQ7
(od zMj8*5
/;n~
rw
Rjs3gHls*fkW ɺ!ϏeH]sgXϽd5
y=`-IƊxHIiH
&%lmj?<s蹇V
3U	׮ͿbdSNA'9Ձ~u9ղVt@05/ė<}fCm/褯˗Gno;)"5E޺ç
$*T*:J<vݷ+	Y{nr`3ldW_ƻ415;K%ԍ\Y+>O(4.'=%GV!4uN
`I3)ɯM<4E{sJrWCsv7Y|֖I&E!m ^ڗtrX=v:NUЕ5zdҬ@wM O`!)&NCޗV̜plYlZrh>i	I7
!G+ki[Sng/ #I*lQL,<kw:أ}Zޡ97~mnv)p*f8X[owK5yl G~!?aݫŀd8dwHk_KOevMʐa儋`oe:&? nvKo m^7wiwޞkB;
OVnƗ	!Ñ^˖8;GvtMX򺑓Ŕoz3`67	ۈP~6NQco^ѩg3"
&*}϶':+y)׳^*AЁ;]5eq;-[ie
rV=c>{L>{.[[C#^A;K7K<ӗMGKSt󵂲n2NSdTޖiH@,|=p ?uӟ؀+=+v ϓJkXiu'eGN*]{^ڢ|Q;zURCQ5Yѵ9sdvO
B_֤A6`ʁ^ C)Nth-H`皟=IՊ-uڎ?O)|B]w4;Lg]`SA_~&z!%[{{
-c8'pnyhn
<N<aVqMewu7`D3M1	$>3>U]t8ˆUD}z޳?} !Q7o0eS誑JK8op f*i0>~d$gVÙoО]k8BY!x] ӭuŃ/jyqZ(ƴ,@<%+a_/h˯+X%üH<izCo[Np_
?+/Gtf&<yֽӅ	`aiL!~{4A'㌱|2Bҵ߲>q]VU}']
	_=렘zߥ'%P^Ss@-Go?M8X{i'~,t!VASzLf& Ynu'HeI(ce:$'~N|KqDʶW/3s<锼)[n@9'/ս*VWz=oz {[<.tтSMeBib	6r5'8~)"$ p,Y2AUR;Va&xR<AX5]GIUxˍ_bW[z8Ufywej"wvקj@4(1NҖE;z
R	?8=FYTԃ"TS}S|]O٩.ZO=#^oy~
!CfQvكo|Nz:%8:G-A
xݦ6T@օ@| q*!*AtBsOgAIDM^Au&hfo%#铋4A ggj6UBPK-SJZrZɛ dT=G >hOtVJ<M.wF
3[oI8:CU^n
y{aE`[
镠Av( `=[ui{_jqKNM'@>qʤ|oO8w5EQo!YPA/v-
ųi2ޢ/i'͈_}JQK;x?;$
?4נ;_4Mz ˴oㆡNiH^b {XQ/	CcA(К"O#n6٨δҝEӇZ9Z0Q~LS> ╝r;`Ac;.0:h	mUO_3&zaR]G3ޟ_`S2+7_ԇQhR+`]fL*'QD7J?Uм5Â@g~5<#H‶ 
Ji(w۩f\+@Շ^ZB4OUdjIz!=-Z}scA\C%
DbG1Cn:1mf"M{t8&5Ŋ`Y0[i(n52FY$B2VfhRm[YPf>
:%XOwX<Lv
-Y4ugQ;rT ^Dv,	r+\i#)7 Kwji9Zza*p'8NXME1Bc~yuOGXcض'
XlRD3{yg"TO=8J^sl&XQ<#8x8'^$W;5d9tOJ-rFPS<Krus~M@ɡTÿ=N@MY'PR6D;yI&ơJ0zXr+O=XЉN4QjDuzX[Fj̱ƹY}NV \%)dhO Ɔ2>zSZC θr+@`I=z9rz;^*|3EU4#Afqv'u(^zWX=PdP
͓LIE[P	XoڋG.p^|88n:U4e<UdHX#	:=:)_
ɩ8ӳ9pپ,cpAÜ;J	HMݏ?rE$IG%VK_߹zQNֶ#l:zI4e[RQ
tCP[PtT
z4;JeW|7#{S>͇B
d%CޫV$d6:tSwj|fBOspQ*o<)wyj^I%MPq: ɍisTb3n &gl*ϥt;~~	8=D6]IeՀYrAvj3_d>L_jYe8:4% muppl^ot=	,1#IQPπ O[rp~Gol?gm۰GMQ>㤎l~-g~' )KoF<<m´(Lyɳ<!0t%]	~Y:h_P٥3ov*հNU-+[N[umdTAn:u:P23SbF1tPob&d>,Wb
j-Fz:+
c	i\l[ /`|Ph7

5{TB_iBĕnO԰du}=F*wRjR)>x9«3ox磓Ż Z|>̴`GGm_3n<|,"
ǯ8vF4"<&[\1GBnʁuvGg}xk]m~=Hk8].ʾms* m
Uaҽ7h-Lv$ˬN8w_q|vv|o3:kx(UFʀDljAW_477	,6gvma$\ru^S(T\z"9 J_ >[:/mPb;2H]VGn1)/߫WpdSRb1tBOo٩;<Uc?ƫ)m9\5'W<},/DVb@;YW$

^6c6S]cym˷hPqgxuzh'pC`Þ4SOm 5d, ߘf"@4itDY/(q˾P/Te7
i)yV6*MC:@:$nEҲMOfXs$`D⇖:+Le%GʡfRl<$
&6UuP߳!+6T@^;^exd&[c@ޮ,P§.W
{kJćOyt[xKeXba0jŧ9zt3̲kCmgM!BrR!miЬsgESVtmfmVC|eaϟʭJ6(ЮnY"Og˱r2˷/e 61-/P~6Bum5`ThA3/jDUX4%w힚g0b^Ҩ<4<$v]*Y7 ;߾6gUeu-ߏ^븚2`*sDyb0#pr6ӧVo#pw"o|t-hBY>&ZMZbgk_5VtnԣQGQ!Ww[}}k27mQSq y{_Na(K-.hj1*dJ:hы7L4h/˝ϬeBFeЍk@'Lʉ~'({CS '}
ݩIwN-<XW7âf
ۤg6]RG&}i
TF^hЬڕllWѠ6W˫Vs&ZP {GP)
|@C6_Og{XF&{a0u΋!:jdnv=}ۏY^
!)lzP¾.0x^Sj?ۑ)>+PY>snQ=+Oit"f8 :A4 0` *"iB`h@)ֈ'@kVJ
8L``V.Sָ<֖O[q2̖]m][
U KA1\bקJ-RMM&_HeÓ,8^̡,\z@0tyEZa
="2$z@"t׳~2[dcr/Ys߭A磧{W\S+4THc޾Lg:vZUJA_\z@ %I]8H4jAv^hB
[Vడh\ۻlG
MiFC/
=>]?OCTªaت$&=+3<F+WLhhflo'V|,zH?,l?zqG)%-`gxb}#Y5=AatEc
'C ||X]eghin1j;Ow{ɀ'R)ɣE'r[
.:HpJтs|Y"wM1]RY+O)yZ}ҿX9SэHMAOZCl0MO$zVt='dm$1~qL]e9Tk|@^t;
j "FvUx5ϩ2Q!ێ%E\h趣&rpH[i6cnYՖFZߠ(lkwO_
V&,1F -/M,}Hmkx3{`͏%/dbU:(% 78;m+N
'a̃ymްGyߝZ>bۮFX"uONkŨ9Cޣ);XGNסM-ô-S}$;@5elE1O 1217i
B=4-իý>k ?"9d"QW熭Cӻ`0i
nT!Tcぁ
H`<U \*7L}Qy;0oއ*l[(XS1`NðpBtpln5t(xQY>#RWJʾ_[㾈]]ZibEK7Vy7X,Z@{q.HƱԺliSuύ2I,CvɈ>W;:G%"wv?y:IudnO!Tzc|0d@LL]aE$U,xV7v5*{m\GiGܮ	P$st-QqqC
iTKڪiN=޿+
<(i5]KYnAGt;	qCGpLPm>o 2N5"iG#(ɎL=\S`芻}H /5\V	9p`[+fid  7M`k4@3#QQb.cĮܛ.4AStG|bGAP\~
U;,"-S.9o:pqhٶiU5`=;7t0z8.ܴSK+(]<r2G<wڂli.rFp2m'+:cNJ7$ƿ
=7o'SF LK/^acr^z:NR/ZB:aps<d⩰-)ۯ!3SMx+{+ƵuOholWpeW̪b=y[൫-ǟ]CRPO%VOڬ
מg{/Z1@>vbNcM\55(@4r;Дt(ZzǇ,~cW* rTx IY6[b)GNW`T# 0D'BK!-i-Π7 _JRǢٕI\s򯸨
Ǭ
gaY(dJɜv*=DpbDq peV'Hai18", >'p.p%DJz֮~iP	#\K<("ictJ@ٜV17g6|{=	N,\*;ܐs3cDSxt|~U8	(_p-h}8`Ur9uf%٘&>/	bʕw	|CЩOmAUvf}OӪꡣL
\P{D`AD
@.!˂"DvEF?ۃoad/	Y7L'ٵJo[uȇMPYu;dꡬW'rk*?&!'-_%Pr*<KhaUfiqAhEhWĵ|̵#.:\!U$>7Rm)9O~Yd
˦6TrPv9IJɅD[5 7hHoz'OjL܆`Cb,[!Y*`4:mp_F
NtT44QT=ڝ Nf^xU$?Tۆ
׷UPhz]%H4zS&:ş*pNroo]1(BZ|kvC.QO+	:q5~t"E厪q
iEm@9]qr7eV	o\ZE)ڎ;zZNQè~j>sX1p^DyHIxTm\p'G,P3]uȷZ<^F^Y+.>P:5;{\D'{|wbCenLrnνYZ	kN׿-GZqI]gjYqpHilp2Tsq͛il
\=Sy|ӭ3^I2S??Y+zRlZ'&#l{g݄|aKmu8{=7_=k::(u;hݣij@l$T|no潐ASp('rT*0@tEF/sOg*|.|W~nG >ቶ(j@d tog֥S;q}%Ʒ@L( p^	90Xɽ\uۂ
\O$
.Wx>Z**..-IPٙ| E	fM܂5yCp?8a\d}XR?*W2t[i,K3ΰR-'B+;\;L)9lyԢuې9S5mwUn|u4cP
8؊\>
RP 4Ztpْ܅H}mC!qeL'ҦjL &<V[SΩ6_@$" Z+6cҰV~
{D6fvT@urPwrXIă.:&1ﻷu>jC~rly698SOW>=[*e6ӡv	'ӂ﶑9%Y?PT';\eS݆p1zKUGM{)s"[+[E=׫ෲHsKKpVU 4y
^;0Hd
m^4
.&Ah ٖ9HJӴ6a{z4hּ,?dr̅S/ZƻՊh<MrpUۭWTE@JAU5SwMFw D~̖]aʪn:ĤR퇭r̰8)m@~]X) q.#.m
2Z!==^
nft)/7X?\<ԫT).T4-XS"du<Oh.ؐ ,k9$P8`*⁓K嬽a=>b_N
Qd~m'?^taE4)Rf/S~-
+yTΐWt4jfYZ9es[F:b䨇[8
o'p]ovp\T%;X1!rGeK:FRKI-A|>A<,ν_s7&K-??KG#y``~#StN!CgQj:\Ef :M%)
  X9Øyp]4y4a ٽ񙴒Y'-#WM`^|h/
I`9+:[s	C?<''/vGs*Nv-`yh56=6[^Io+:bKVN>Jʛzu^^ހ-ZfS # HjqȦNGp	SZu[иF<9hDfyդsɦ8T;3z?a8	
8_0/`@}mA(H%g}>{,Kjd@5^K6kXXTP樽*T!]V3\/:ǖhhE7~
շ['ʲ2%^S[7IZjUpo>`
goϥ!_q|zX3!NP˶D Q*%g]-'tq vl7{NDv̄`|i	@=FtbpY=_Nw7<bVbuЧ?K3he[dus
'7<CYзuPPa5>sTˤYV˷Ϋـ\DlC$q46w;`#=ugL}53GTw!0Ik5_O-T8ahѶ-8ZI_iiǑJoXI=̍&&[K))3ux'Dz+3Y <?СlbOAbG	z^ T۹mF "ՃKV|	P
[r:mNx9rvRˇ)Uصܞh~Bw7NtutC'[y_:dGh8ױſyp}BdXk sz.ZOX 2Hwq~OBUW
Z0	jd84C=yQm9$c 2~v>(P
ݨ']]x}bS"%Aw~;5@t6R$;XONr};̕Z]	*)`ݲƯ!wlrz)TKr`u'
x-1L\.;D1OMz3h++Dro3ֶ)ilV?/v3EjVv$FzMmGs+¥6?pÍZZБEj2<l݇C[84	}	RwP	+97nPEF(бȁnER޿=Ks)1z7±)MHi#mL=ny1˓l?X.Gڂwga4wmɆ-8;QNվ#8\l	]Pn\m5;<w$w
CXHӹ5f[{Γ&8MɌZZh1v߯-=gji
q%tHvv{:^B$MYv&[ۊ@qKhl&5:,9p>\̰T	3^-ŕ8RN#n6rG`r<~)i3PL2c8z(mEa{dn$t΂[컹JcnheFbW}*Tw>Zǫ`S&u2\e
T	*fE^r:ڊ27ǸSԍK*Bm$`rY&r
2vZ"n
I-+
xU@qޟ6$<QP}!ۊ˴*e(].ϓOALw]c+4<6&E_n'{D:H!))B8 !S\)wKͥWI;BKЅ_vr[<lқj
Iߑ;-!ϭ@>T SQM'IK^,WJ̒Tw$ɪav.OM[Qެsc{ w宾=wT_.-#p؉U*XAh@nY6ĚVI?J@
CT8utNE@+1ɿ$ֻ=yVé
YQgV\QWf4{oYC1SAd7_Pk[*;0\3h1kTx-*-
g9t(},Gdmˏd[54 =騏}v#}1g.%?ea?"ܣǥH#I:b+EDKs}-	oP<hEȻz&`5{009
DƃV+ZBWvxbS5
2SW߫[UN5=9>PSx󈣎	B-ihݴV(['JB]
/FJ菲{|DݕVLCDS xiǑYw$rv Oގ{u"J+-ʹ϶쭺NgQAF`ݭ
j&)z{Cohĺr.]K4	!9cwTA7h ϐy27-^_-5YVZY &04pmzr۱7^Ti=NqJ?ao7PX^T_y7X4z.urfn\aK72̦OE.RCQ,+Lv*J<T.y^4/QTQWV}smx3)
yhZA<+sfPɒ]6QEDr9ٯhTgN'B`Vzr[Sq#`ܲQِ|Q5@iTľCa)ןqqP2ÖNXu>'6,!̃T
Q}.|H|5;nQOu}̕	nrm*}ˏWeJr%ؒbGˍI󜗳n%;>64!W{|{lDL{p
5ۍE1V̟Tf*)$7*(MdaxI~p YJW5k[}
Cܴ0sR>X]6̥vxP[q`}6[N\-M-8*ZPrxWriQ߹e}@&#̘9ϽCYbH8
cU5gPV>sJizB(V-R.{<nL+-	)׏GM!]<膘
H4A]V8TUg!?a.|8dlu0ՔH@k2r +w8	6
Ƨ!Mje
__DG O+kT>9˘ɧ4;y~F36XcnU*4t };Q/7d1=ip܏gqZN>#V/	Mՙ=P+i.qvHv~-#]8d~bPv3(7pBeCh{e9YpopǵA
38Tv2C= OB%O+$XCJ=ne'q싒A?^w,﵋S$>=uŰ9LTb2*{gh$6
59o<iPV.Aԍ+ksU
QsiuU~=
lӅbݢ5=YuMMy4[P/X&5y"TEI׏na\'=/h	 ȰUuT
oyxsj-zة\y+C9`zM?yn4,Ц@FSuǭ4zgG:B?Px*_X:`S}3и"Odi|Gj{>$F&O=6~E$XVD|`plADIc]IdYrZkB\EToryxƄwP5p`yחf+<X
=
ړfk\SJ3NN[u:
/p.9_uAĭ:(,l ?,$h%
fl	(alƽ'v\rrKI&Itf{K
ӣeNo^*4u:77_"I0/70,ei;qNߟszC5ҜffT)ZI-W=]Kv:FR쾈o^h5&QSBUbbnS97w}jZ\::Ѻe%89YS
nO6Q,_7B#\W߷g7Xsv9zu
T4X <ˉx s0Q?SωZ˽câ>\WT5OZvv&~Q3\0­*K` 
n:Wc*vHT}xX<v@YӸِg]]O_v82zxHi򛩹U*:P¨$؞ɻ>.Gca0}̉.`'=r]BU=YϾ\le[׍JcZ{գ'b0CkgڡVB>v-,<ZAշv_w4]WALJ "CY[$;8k{̓?["(<xTa;^BtVq[&S 0cw
j^˭Vh&iE8v|4`NK`zP¨jvo6IT>}oF}@=XP*CƵ	ҙCvlUަs}c5 n8[hbXQPgڟMM<e/L?uHqmO!AG#Ʋ\],wK~p*xY R]oQ+M[qCO&>
疟Msz߸G]@e#ͯMF_;=
? E]MD88o0a	]YtvgzZ4o䝘ſDQ|Omu9L=GHn(WTv
u3֙4acvin)|;ç
 ϜlX~579PQ[)r$d`?
*ds6D)HrG{,V:\@pԂ
H-)${} 1mkkos>,x<V;jNuF}{4Nvm6ہZz=8+mk}lV

7CTC?DޑxߢiouHԓVg[=Zr^ۡNCJ<CpKb3wL}UUN^/muI
ܸA`E佸1v.s:G.c3=v^ʂ@aXcZx{' `iH9*9165_G1~e~HˊE GF6 {*4w&=œ M-6r@Qo-jsjO
lME"=]?ǟpc"F9<f_9UL꠬W[}uЂ<~Au {᠐A;6Cic]- |4@h-+bsz	Q5/C/[D6ͫMO	<\*GjELWW\2><u;KigG]n:Jl,dԨ%_&HӶPU kZmy|nGNлUxD 9n.-QɫIDT嫮BL?i\Q g~);h	,,H_Pk"`pCGL|l8ABVq)0Yur7Ir=,]tbZ
at;aN pk ^|WK;dB}iڱ{Gd"iO|:M/+KPm@[UxLduf*T	}mm(rsrii8	ݔg٭W󗋻5uB-w;ׅgf*<@isڂZƷfUY(ܢr~uD<RֶA.NHWy7"!I&'e4;J
;QpѺz7+J	|&4}EsMOUe682SKzR֫hsrpMm;`mGV94<t-Q'.$MmMrWz%GHiwbq?pK
ˠ`A*ofz	3ȣ

iE4&WnD~
B
ɮ>]/
n%q޵fĂ8qrI647;l`B1&XqPo:T@V+!:TB/wA$^V5+kBLpy	¢vY-ʚF 5\A[Y<SBjUhs9	įjbPdzƒgyο֢9=;Q!QM$Hn\W j*D
Ù6CS#"[8ʵ{vu-ԁ*d~適^ԞzDo[.ֆ!LTr
2X-)s|骕C>r
H6=g= 'pZUx_9F2}<'u?[T'h4clsЭ6%)WHZv@(2YqG"x,Ct.g|,4dD'.5!O݇tU_Q}ǀUtFLji-ڪŽ#tR8=Um^-G-of7m(.*%-Q
uvrv:Φg5%yyq_;Q`Dìb'_SI;:
 S|ߧpBK	
v:Զ9ལ>^_<y
0ȗ_D8%tڿŇ;ngSw]|)༗jjesru7E+pDegKt+:	 IDgÙ@_<ߝ݋=>}ѾkۦmrU>fnd*`u$cPaT,Nqx!nB󙈩p.ȷ[Q'EY=ZW
NfJLsT97J\eǁkZ<_͹W ͅ@g6
ZCx
j\9*5yoRJ+W]NV5o:L1D=R"/
pTE8{e"l&GH{Eoh8cYxU>emAʛQWK	m4WU.^'zWpG pٯ2WNR58sT^mx"4%×VOa46x
#EKPprUw<J4sr)Gf\dkCGh3'qפ"@۩ nݦ*d[ni$~!i3x0&>uZO5qW=˭$ &$ߥtX>:*2ƶ2:	XGoLX鐿nKJ5yM+9KWy1\AB$R͍Ciwsr~uؾj
X!7~:N{(n1ߍbSbtű?8A9O4YXN福h/Iҋ֢rv6=j)]SZ_6&vut&⧑.>~wAn:.--:Cޚo\s9bAgun͏urn:Q(XvG#yp?kt n^icAgW
Uiȼ(ρL|KZ({?JyrYk*`Sc:Z{:l˧=uՀ/':DA۵{FBá׵pi9-Z?\UCip-Iv0]W*^O Nj}&z~JIա#G{rP䚞Aa&N!qZIMaqޟ$Og
R'J	'|m^]I:\4pY@1Jr'W4	;JD j*w?i_5+J0T5fyfГMSG88SԢ?A]nYODԯXi)ِm[.1o *& |w/QQ8w >AT8bUr24-6ަ_sI-:]ZH'D?$ o
qZBgq!W툠ERJ LgD]P&We-QL[YiTY"V
9W%5R}ɗRtr=W/l':k+Po-JLfDްtuV<?)w x$%KAfiB&Wkj*MW;'	od#sIyJ	G#4~k:e"C!f6)A<#s .gՇfERIW΁ϛ53WbtXGP>
rJBU{ps=pY8UB~Rq8&'Tϩ;HFjKPZ}\1jioO!s*qE, $[|JrVJUnjes	-Pp~\Phe>t!tKa`>8]cFQcdk|S1u:a.*փLeY(DC(@Wfa?L:S41~W |(0Rc h!A#sWT5U
AJoj!Ldr_zDHj=Z/&uG&t0/HL%r/;;ÂBz'Yi4]"
 @PʢM..0ZMXh	6Х<KVbDc$G^Uam!"UXUY<5p♵v
7s+
p-` ;n^އ4k)+@ھ"derۙ7
a{tP$[<aT*׵7
j}+hf8x2ڛ7wQm6=}MzQt|t0+|ujU^
:o&A/~Q.f qb ccS'^wV|_7~vN1
[/'d>!+# O-,MO{U$YPݵ'u|(sVho].lu= G[Xםv}tExloҵ}`ڍ@ox(.S`P.ǻ-q.tSp[x4~eq_[g %/8n	3%҅'6I8 plJ ^
%~D0GXz2 9I0w|\[,A@rc']oBL :'3x:j!ZRhn?w+]N͋vFpP7`l:zR	{;hK&T~q.h@uG]]N]6N?8"nipֲwb%F+MFpa8iN^
^iAlI?q[rȋT~My螺]8]Ln=T:	}@@lqT]!	@qCbP-}i)oҾ+ʞ9,tZoWq;r&WթZ.fq
#)<ŧ><!& 
n>{˕qb._~Ϝ xj8j	>ꚋc$~h?~RRO=4q9FRȩH|y-<tch/2sr IS9U}_[*̖BMA	>P8j;՞p
@nP\e
 Ykhp,w뮘95*wa5tVվEuءM5x'DnCuvꦷ]u*e	.^ e5F`HΔ쇋^wk] n=QxYC~i <l\\E]&]ZBRo$`Gݎ-Kڱ?"__cEi,0l>Z('9s(3	/#rLyaG.+	4I"*ןǀ;V|
Xj+%t'<_eTs]e~txQN$&By
Gf/ש-5UYs\ύRX @kJq.C͹kmI%a2q3rTZ3Uі)nRlr]xf;nO\6G0XwPd`k6ܷ/˪6 hu)o_DE@Կ^fW=&&5͌ğ[Gn<hQ%:8Vt>^iMlK52b uRM5ol@Nִ2NVm	QCF)G_	?喩I:rbԶ)?]:_5sj/,ZTQFPWlUx*(hhdCf'	fJ7-?
wP%M	fG=g)_y|l|&ƭ/7MTKYu= ]J)~)f4B띔@tU
[a6d$5񜀕x] c1h
 TWq0Hv2VLR|T!ɼj@˞]~#x?lp/qj1zwlœ^Fe}nii-I}:Ъ#u*R"TtOVyo$@/A^[IYZtlK
dVKئ'Re?X/.p z_&l9)p@I2emU}GFնntN]1!-W'Zmp{~gio 81k*I9CS
{\=9Ԡ_nOp7d )/'}߶aV UC,+:?@dD{U)ү=ŵ8LDynkakR^@֖֖Il]SĽ-b/	O"H+&sO.tZo˃[|6g@C!{f m=ILsQ7ЍQj
8l`}pVv*].6ك?NrAƯz$ZPuV'n4[`cKtnGsnh'ǆDociuuKսwUgE(,^_Xt%?,Tk82u=y@i:+vOeQIQGjDr."88#ڊn	;pĀm"V^w, Fq**s
h{ v>2'"-+<.Vh09i9A]!/܂lဂCm/nEm]p;s'4wg.zuc7;?<4r9.Z]z٨=6ڮA;oFBKFL+bg;zF;R5{;?굜Fe*'|Y8<TQF9:|uUv>ycLqS\z԰ak25WE-Vyד,0] g#WN$\M-0äZ_VbT
WY~)-^{LPOGgޙ]ͭ&RpBPT:x+oҼ	:B>;$ymY76YD$a^ygܸPjjyomr,7.dirݑTr'I3|l9cD[پpΫc\! !|g
=t9˥(mS8a[JGF뀤ϼǖZTEan뷼oEuUٞ2$q0x,wˈb%@Q@nO
 P\}ֆ˷
Ty#wkz
j!p/aRHWs?ĉήoǦ
'g#\{?mW `7 Wf-@\<C
*I^ atEBP9"pjTRDC4Sy` -RQJz?s𽩖+ޚk0@VpC QʗcOܞyH
5=զk]>!
-Koؗ(R+aom1.5|s_KD,S*8xCYknؖ&'<;*9"S@K57Ɍy
 z^ҡĩA[lMIldw9K<L2R%.QpTR͉]<$֡ΰDns|cgH|Ӧ}4iZB[UtJ9U?ܪU4O%BznϾמ@b?f'ܣ:f8nl͊xyjJKEwCc޾6j%AYIWD4*e::o5
=$2:o,C<.)iC
/Q1WI"þ_a @|ۦ p@l=ҜV:{1sVO"Qjuod)\~Ŝ
pOs.B%t)n?˝oܝY
+E4xu0Q&cwgbK;DJ&ݮ _.z7NfEVDPn8 lHuUi.8dPJv❁@GNvtYT[fD?qq+!/@&m0;mA5TUa^GMrFIpH LCL^V^spH<V1)qxF$AF
Y+)Lpj7ܗWx^)נlȕݥP'D:!WiݜG%IƉQ1.g]Q0-Y40	\%ĝJݺto4?	>fx,
rWҩξ!w(/:>SR`QK<]$E.n&aRWcF6m6?gTuݦS;q<$W;*G+2@_N2uqꧧ#/$׶a*	%A1wH	ZL?_72h$H0YsPiu6>uq,_8nldu37mHOHͦO:&9^Hdzg4|	ٰh4;0J`(|Ne)96ۨqL,,w:y2^j>~OZ,è]|( ewsO;nCfyE<"A~TͰK*MgZ
۵=Pq+T^+caGTbnʽ\iT$ns}A}w^P8`CIO~%𤋮}	Ӫ6O{#i8DhࣜE{JNс@ַg
":
R/o
E,И"Irbƻ;|Cdo\7Ǚ'=/{ 1 ,2:py8k*!dDۥ$On/gޝTP'2 \5O矸ֆF@$'ͩh 9:ZDpui)UYAe^X4&kF%>|6,y.s-٬N%]%[FԆG0Cpp |FWp1	2ǘ748r#^`EI*Hw$\<#W'myxȷnzM^"IK&vig5xnC36 Z{n qv5~R|E=\UJ%K6Ga	In>zRM!p" $L
ҝʐZMc˙	ڊPu˛CQ<G}d#EqJ2)3%
.%GmwXIRܻN)GKv ERLQ[\2Fn@O#E`9z/Hc檗'!mN uK/)KV/
Oa5}sm ҉}O	2&ȣuyd4{	([UC'GO3`UTsv);I#bqʟ$'t\KsL`!oy8$yfvB T%0{Kg@b7)>YB
6{šk-'nQM >u S
9z$[EpnPA+"ȍ8/Q#!36u48dYk[$
VbWImig&
[d.Ku&ѝk s ؟b,}^RӠKmkOEDbѸf(˭a>P&P+-Qz/߲$,?AΜJ82#,>ٻfWkxWSsJ7QlDKYWbVW\Z;ySjt..ާ@R{qTիܧi5v"A%QJm
s(pFn[31IO0ѽTH#U}J>(
oԞ
.GeeJ".}:׻#V'|ZA`┶:h.'v@$7!3߁\.
oL|XU=	1YutMH%gj*;A?r+7j%p83r<m!vENxz4vJ?CmğױآZ.K`/ 嗳*cF7_ÅujxBFW-]qAzH!l<CiDsqPShqۙ+wM@}W+sd{cSk*{3~uA^+'X$vDo'#)Pg*}ۦK=y.\Um#6g95%mUw3
W~{i-0mr0r%-nƶX<QyTuQO˩=vj3Rtwv]lED}E.ey#qKe4=?EԿ2%s>jȞ6m~K`MQ"{"E;5R:M[	1u5@_ܕx:^t
bs|1R&q޸B~:Cdr\O/Twޮk/$~c\!7Ü$o T%ȷ<.EΜD/ĩYBrrNTȁ`,STm/1s4^V0*p`>_΢"&+ȣb,ik6^j2w֮y^%oGTV߾0ٟpP2K;H!!Atfd>!H#%6sÅK$NXb|.qsHC6A (;wJ:M\5+&0\}BHO[;B7O!?spgεncmu-<y;Pz$<d5/N[jѩ<>+::OK`Xiv}`Z]) 	A,d~ţ30""{Z|`)IxaT'=]s\)v??ݽzA*+> 87,#`T"*sLCڋS,HӭK-}s)gC=ro=YgR -Rs 2-ֲ{]Q#_U6<
QOHn~W#\WC]v6u-Z֝MWyrɞGաJuFEiN8	`Ny,Xw>G|+,\K5P<ML$ܗKw`Pb
jQDs(=
Wt 3Hobks*]K6O3, r^Z̀KbioލkMcŭ%ph&rE j1YdsU
])ADi*tLř<~irDb'9/hI\*553<UKu/ ƴ0Pxf
wn!h
sqH OM,ₚiC$IB".}THoT&d=BIeo~!YBKCAp.^t?0k
wa
y
ܧl@&SҺ7zň#ͅ(lpXigD^xe
')8S|B.SQ~zJOoo"h)تlq=<LȨ_o~+z;#Jdj=y`8JvC!i_8yF-F\b ^=0_JNKz:l׆IҪ<Otm"!3o:?0J8ٙB	JF&ݼ[
f[ˣԬKIQ+*ݥ7BQQMRTcyq7Vh!6'8Bs5ı&$.T֠ϯ4~nDjT0LԞyv)i%s߫^ nӽפZۤ6]B~י1{hzrm&Oټ`ܽ"Ov^qFGh PTX*؝c
z	wԅ*WB^^a4ڛ(QPLkEMlB?6	pZW~J~ŗmopFʨdBH8jE~xjh9«' KN{8['$¶=my4ŐTaeY5Uxw`eM
XR}e3yl
|2>ESIw\Ƥ\qk?dH~-zvgТr2{yJ^j,nOJw#iV}~<ɕPQV"ѿe{5SQRΨ<MJ_e|" Ro{ݯwUP٨:T\M^w%2l!%8UC鎋J؊kB!il-bςF ϊ̜pܖ8+@jGF&".1k71.x_}!RozXAktC6<shw}sVdd8V","EeTPP59
Y|n=Bh}rX9nå4*\ bK]Ō<9Pds(H&㩐/P	 Cs{>SWZxKD#aGT)q	_ܶM)FQ
o1r@P<<jVj(ơ/·`I[i=4rzn,~s?ԑ=VT(2Z"
iGɞ[W7?uih?mlM 87|tP 3Zx&=EH$ay @!S8T ŀ\Vl	LjB[<F!cRw?XJA
z|:]JhҲ}|.t ;lWe[K}m'a5,YtF\5腗PU}c)\*ɿsU
߄Xm?*~Z|YUV2>
ίnHW\sD+q/R92!
J2iI{Y޵2	u.6<EK.[W	E=rKW J h a.?jjؠ*n"S!$@Κf`-A~^%<"bKM@U~5=ɵ_%]?#1D׸^;wVWzo3Uݪ_I(, pjܓ2{I޵4|wE}WA{ӻvR)W*~:X?`]|mMj{w-WjDj$X]$o9.+m+ָ;u1;ӳiTc~A*e3ά(`)btDqkmN:<lRdlrG-V_M?w<e]aiDG$	$b4+]T+'>wCsLV.S6{(ɇ9yg	IedfopAMa,^<.p6wvWn,_'E!>yy\|4फ़.}~Q"u[Bnmu*ͭ:nxiAoڷ+"Cm-ݐϘ$/vWqBUJR0 ~sPawh7
(7\6v+ޭo\CqrEx~<`(3A82V	 Z8ϝ-?fa5U트~T~ˁIn7tH%4 	nJَ~<O\Rk?wavDb*m )LYmWpL
l?rt,95N᠔?ACSWz`蕻@LVtk<7]55ߍ{js)lwyXS;o+>P0F;`jKO$Q}{`ǪoPѹX.,'EB jjz&tVQh#{37I}ϧ3%޲d8	%0}r5%3H^p&Os-}SKf`;zZj5b8D$$$nUk?~
6^,=WTlD1t
 ~f,~(H8ڢfcBjM+>گEAFVT}xv?ݶv08&{( ;r;"-\\4ye>,+])bw/@4x}H߷X_z^
ϣ:NVWUnێП:`|夎ń{!h*W"5~Z+$im=+_
j𭘩M	4:O7$KhVq,@v3	*v"sB>%𹂓5KUaΒɒzvw*F~C-`II48vhCy8crHm?SBȠh:)Ӻ$$#iHW`p<9A+^z޵ ^SeUs{Ȝ)y
9mܵ
DS*LcXJ>n`:+%-RMYM]ī$-b\Zr=cIFH${|gJ1oUGn\Ug!Gn5D
 ljY
J9Q8{S:qN'ATN*V!YٯԩȦ١fK3RLgHQ	bS#\<	 r^ay۶vdtr9sEUj^'MJnzh'/,$ںp;B(?t #7D-afv3sNn)Um5"9ܾG$ ]\\9-F]gXRk/137vM}>U%?TqҴ 938݅{.&CS>X&%L&=
ܺ_ᇓm:Jim1[ݛִ낌dY;%Ebw{ \1ZXI1^ evi`3V~XiHE9DKۣ~
˛ Ɠȭ$#[=1(/UPEhN贬4щ LmY	7dD8J<g(} a_X׀ݭRv)-hei]@˝T-by\
ΏnL
ą!n!B"ɹ.Lj&	9Z&tƦN=?A`Wq_e:4Ot t
k<Toq]U@ݥ<tus+ɣNQv%ٺR.wf7o"
Żՠprg]mp+N2ȁ9XVm?dd?H@:Z`GjYc*5<-xlAs6 t=_yӥ['q!67s뷂]5Gf7<_k*(&+ի<]%d#Cih+} e>[8GWoN==-]A}6U` ~_ҹ جKXӰV:@| Rt`ۨE۫;NkxRuanڍ/kl[hk'=ANE	<J.ߊЖ yfy$?(/q:jSȓf0G5|Os[rIH\!YN	,٪j)~%&nqu6
XH}V}[6tMM:]mPq[jJKL~ࡳCҼ^ǰ`[]%dMߺ Q:}T^%^oѓ+Y
JsK(ytd%8TVƹ毰8 mj'.
M<UYrUI{`x
$b@rVη^,IAtڷfxRή6pKipöR<X/
qU*ל,_.-udIx,`έCb@_%|
"L &^F!*\9+П?-Kr\G҇(H7=tw5i*@|
[prRUί'lkAOݽ 񎈆%,vOu6?'2vG*<~˫A!_^
\ dmG-W^mn~I~a{'vʦ#(MdL.y\QJ%t	[L	s}S"-JS1Y+AX:(RE xLEmuy.y2p.^м>ږ-&ǺQ`p_[-'ozZ9jħt_8俵Z.=jk3
p}7E[L8O
Ŋ.
gMUeX?U'aY?>ǅls:[5>YL9hG|B"RǧC)KZ} P'ڷwfH,[-INQM5zyQEyN҂JgVJk%ʡ@:Ŀk4QoKjco㌈
Nu+@
N.:WJŤ$IۧRQ6'ǩqjN$P+PwߨsQ#شޕ;Sت\xn/~R+SȉR8]5ϯ;q"tQ7^BhՍ<LCj_D95 wb^=
XkKqoa}G(.zFXf\IniAr'\ag_9	QԌK
)j*wqXK``g<[G?)uK+e_ClO9Q|*Q?]٣G_ޕ0-N^	"Ehz7hZ:%s'M,3ΘMwjViud%mA  
	KwX5E	v󒞡
M@3:o&4>YEh,Uv
=IC"@丄dKW6Rrr
K*ݫM})M+OO߳	OP OkWŤ
*"5QZ9VJ	=>aՒȏ>G.<%doQ.'DI<nҶ.m$e]EpLWB9.H=4*v Nu,$@S(l"$%!fdTn}<maJhcQA)^CxmHI`HNwId/jDHCr*[
ur$u$#~?o9|,sP9蛊ojiJr4fveɕ4Ձl5al9V
1S%G7,Qq,Vxål;*^fܞH	/2Gt@"H8N}:au6H:ٗ8z9\Δ]_BMx;⮶6_y״]qGGB^|bڠ?kDn!"dŒ?qwSxTg%F꿾<yz3Nԩ/ƚnC
Tͫ!<+PNrZBo)^M :v*,%vDAz]t=\ZQ$`AՌse?erDU.0ם}>}cu5$nQAW))5آb"nR+nTHgl1nf}
b8G8B*UID	B{IPFgNr!Lكh`~Q.Tݭ_;j#dτۅC<̍9ex:pEAE-5<}[+HtJeyTbJ%%r=vCnB0ɽ<ǵ[uܛ ~ri'ct噏,TX+pyW衿T1e @(8HV=a܂\N:NwjOڲ:$C!z8Ԩ{ɎjBx?^Af|Bp6.oM|"c˭沺4e)kԇ7.Aȩ&-kx ;F-z@,!>Sg1oBuלKp|{>aA@nU	]en(:[m5ץ<i?shk࿩f]SҼ}
ʇǴu%f=ߋ|cig_G?yPZ놡v#hȭ)@O#rhL7uCTՒS3+us.mivfX"U($)wL*U)h%IERI6DTlnM~X@&
^੘{Rqq,˴M6?d	\.1_VqW[.t
ǾPg=dR,Plv,*acl	T.B\Ts(cEn*)5yKpm7&X
^YҚ܆OӣM;Iv]JiT}Sm	{\}I]'_2,ّ828ike-ZӶm9r#~
ntytzetp!Ql0#]iANR'@\A*
] U´7 A \e欧ҫ$DkQ
*Y3^gF.K]`[	'|0L2 dw2_7Su*[E rHkj߂Fߥ@ڊu6,-D`~փWU@[a6KZ|ЋՌ)m<x4⺣[,$mhSrY{uj@SJm|%1䝇e͔yQՍ!H!<__"k@.G(YTYjJrebOϏX<$YSzKWB2*yRMq)Φ(?~܍-5QIm?K,ra7,oױu][g/ߨHbӮV>:h %LhPgDt7Lq,~T0Y<y^`AfkSY¤E `*QT*S9oGVsgA$DX7
ɸܕnJK
j{__Cƒ=j퇓+fͤ{[ݳoQێJ<OyUE5"0<G933sy%)K6p pypP\BӏKWC).pdkȤ{4#lV|6yMP@9*4[~k8
Ջ}d95&-'&Ӿ2X)?k>	{!=[jr\U~~sJaVLj%<~'(+ K.nw,Hܺ^%BSPn
'oj6Bf0qjZ/}lSUTnl8%Mh\
[?ÿMEޤ^I݄7
ͭ헁	|lmDţs-NPbG_,[k8yʦSLmg+GW_E\"`%gVt%
; <u${/ԣ|7</8j97&sQF>܅>0gz|)!'5Hp6VJ*0ųRЕ6 QQ*ꭈ:71ܺE<{9QmϚ+gMT]ĩ3E(s[emY=)oy$'/Gs?vE]pG-L}gJR	dG|:ɟs*:"~/[iPCۛlj4UV)-t.][ǲOO5ZΠMdjlfxJ"*[D~I(?Gr+w١q+.h5x%8ޝ︧~uOFQU:UCVq:q=7;*1{%HWSr[Vum"-Td?nt
Bxxd$P>-ݢ?<=❚P4\x.ޟ{8Ti[ϽJ&MU9R1EZb?#,^L1Wr DRr2t~öT84mȝFNוVutp#SrF@rtD+tD}$
$[n"p
b'+#xBC`M|
l	
CZJgZ[Yvei>U%hIވD7S25'	`[	eIUڧMJV{H
^{4>ZƄ7"K'"~,Sw&DR-rkkMX XJ{?dZs,VRx)Y<UX>'ٶaMޥ(4fl%uvG#7!86ߣnk-`VlW0j[I3}.PTxiLSOJ=I#.D8/ŃɫLmUܿț$!#1t#xsUkvH"QT w8<H; ;q]wr4wTHZ.8
j%-_J*[	QrJ։i~0Bh"Et[9!kW gU9U[?96UQvM>}hOG
ˋrSdV?,G+]ݶ@҈e~Y  )HNAĩ	+T*u[ b*
}Ti`+F
WZ`V>+TJ?iw(ٓccc=<`8[a<|xѓ hLST*IWF	HR7EzrOX@46
SZ"iI
}H~_w$[QW8\>m̓vw>	5:"쬷st<G%5OǷWRAs= .9KW#KMԝxCܒY>MG9;7t6-|$0A"Ӂ	.:	t`%$)*%G'~^<r%iUq+llQe+ڧ7l[SXzs'rs%}
qi
m*dJRN)p8~7v'(\E5#YlS*sl4tN?~M'3 ^GݰQLDa㌛
$S++T15,~AgHR!iڶ~-^Yq*rY)FC={YO\q
;)>#eʌWQ(rSX&yE41'
[CE\W4((_PNU9~"<_
]5SN#wwR_;Yʳۥ2sJ:*k*X^=ֳMp)2$$R6}	I4<	w5x?RrIo!I}FQQ3'nY&X
8tJ\tK&(h2L&U!#Tm"{v$|F~R}K`j݌1  HugM1[5VV(Dc|9u&xEb"AG%S5sIڽ4jy@*|~n,Ru^5Cu 2(752'Αn$"o?
:%j/¥ݪ0$
>G<(c+XLB_·F8kIZ83͝fDV
q9x^
p_QKn1H
HVoqv  >R& 藮pȳ dViM*G( g](֭ʥUm>MFr@ծ;]ܢ$ऎeY7ROXErW'n>̐pȣ3CMɑEw4 gS)<Q{ٴ$\p9QT."ͯdCmTVto2T[PM}=L7~ݟB.m+>~$o[0n7W	rKAy|+ 6Af	=;ڊP^XP)e>kc>itV߮b#ZN |c^?'\?R~=\|k~*X'"~Ԙ8X-rm!X^5|{m<EU& sƭL!y_uwr45*ܵG5`qx1yO80lf}Ph
 L+Fxhx
EZإR63kymcOUleŖ㨮*ۛ\yUQ|W}.ˋ}(`Q*
A%Ϊh
)-O:v]LURP]NJG6 Mm)b%:Se
eF3dۙ}KwT9w0mhh&--5]ݧϸڜ3hrٲw@lķ Rd~d9<)OڅGXgqS,pWGkLMev)qf.
r\AY*
 c|Hi}t]IrUTQPh'l:q(>wY\$SQpA4`|P
(!AWk+?Eȴ	`b;%v>={q@+X_CP6lv|ǅK,N'H(+|:UUYXq\г>qu>dIߒű'?q]}\a=
	_Bα!9	)q
t׵8o纏݋̗yZRx؄iIO6ͰCk~|ӽq{wU:ߞgnB0nbx[@n.W0ƭpD6\b@y:K.A)8^ܔ+}h>rQmǂ|xid}J"&=
GTꄳ'MQr4HBFD
}b$>Јs-}ՉQcV> 
#~Qpbɓ<^i]J*\n
M͓?qe'zfVҢ*tRdShK,([i\62YD$``6~&JP\F\x-kh55BD\#N	Ye¤>{*0l(*`;ik-Dg^br^=L>[jqL`_Kk]9%~ޱUDQz~G }_}+I/[.߫6E j!w]gmD6:~j]\B害fJȑRdU\tŨ3U\˾mkNMFw}5j|w\x*nuyqK/;7Ѭ̜"*s
N/@oɮV&kYƮwJZҙ"󍹼<~?29Mo*2b=f +9%zآ>?gsN>
쪺1pkcU[
zťVpP+Rzܙh6'i$8Fғ$0cb2)Ƈ.P/xuh{#-+Y]^\,pDIpU"'n@z	ŭ, ­_c(zu#b.%L
D6ڽ6$+Vsx{KR]WSE~Tc{J12*NrRdU"?C [Q=G t(̥[]ZN,bX'ݑ9,#%ViN9_m3\YN$B~	RfC`D[xLہL2EZD=Rv#[93PFRwMF[?
p@p$>mPIaSKn/&tS YACaDoCBҥ=kDfKuoRR%_*&umGU
͕>Z>N_޸RjByB:Ht?Y;ٸFrtwH	#ZigY2AÝOal%L<m3w䔫A&>*JW؉ERf=jT9qX	^|8	ZQ<7U[TAWR6T|koOQex
7PPI.b|9ԠGF-Y E[G~j<V}M
NQI.S ߄_ئ_;Y*ETa[S
n&Z=U%2
]ZYם㪲$U+[ՌsUɪ&S sӦeY@/ve!u0jwwƙ6U+;Kqkr%+m }6,GtFl%fiYY̿`f !xauQmJ1_GӢ|&xd餞]~?Tϖ<z	}E8i*bR|wꑔ)P?zIgsOjKzv>
$t A0b)E_e!2ͪ&$=ATo(]q(G&U7"*豸v63;ęlH
ק7s(@<[bwɯ}NԤT'
Q,*+S~9JɫreQ{ y7^Xpm]%3ﺵmHvowO{ݮȯР&E l=u]-^Jƶ>nT.(yS8C)?KBvH\l8˭jc^~3]*A>득jЦ&lLKϥ Qp?\o{P`_Cׁ )MEv
jϏ}"sV487zql,Q>-
|WOǱt+#7iZOƼ8&
o>iuE/GG[~qj86ouыt9+hG[>u.`=S\QhRRg(=wT4S	`l5KlJW@e3=eʻlz-c6r%n$S1Wl'6|*ѷyL]J3] }9gSE>נd8$MctRl+:lhw3^5}Eanq]QڝdT[R$z,O5GW:#p]?µdd4#.gZ}jj
c^??^q"'27RXh3($t>{#5բ& ȢRQ1W⤈uhgN2s%KǩI:[}H;RGą滸J,MJ&9	uhw2~~V:fFW~䩱	Du}Gbь!pwS]-F
l*DgCg+/H!K~s?\-j$ahٺrp(]K]'D!d#wꟽI-9iE[V=ǭFIxaeu: '|7n9hHZAe>,[KT%x!KYK?[~"vL٪
ۡNkd}ȽW̖T֮3"~zH#knvG-Vh_,[]1V.N~򯷛}窽b3m[o-Q֪:]IC]rUAnSD#Mם*M+CILd%q{q+%_Q;;غ(즻
r?حrtA1%p-W-QуPN*
.L@}?;u&'I%u17їH[TߜʪgR1h}BNӍ2\+![* An.bsI)kmTfҼ(m$u;(!|
pM =({;')#s-~Qoa8ߐ/X^e'..RKԉ*-:^
7yۏеZџK).hQrb#gѭRUBSWF9HqGWna~|J
vBHؐHL-
Ύ3v.$
V)<\wjщȰ
esHIrt'R׻]B횦닪P$~[8tVmu#/j$~
H	uԳ*=M/P2ᖷ_9)u98oCхtE-^w
G(S״wޮ0qqy_)ϙe,DF}TE]6+$^
CGya X5+Twu2|nx9"WK[룦rrG@U.8Aծx_||>$kS&*MNNw Kp@f
d9St4iB$`UU3nAwVoU_/)KY.eL8"NqFnZ} Kdf|*:h>Z<?9:-]4'pQIj5Q$L}K2@Ad8pp!}|gV<L6
	Z&\6]dnY-AfZbޤචw*⥶^%4|>UQqgo]_	.^b]T/\Of!%aL(?y8:t+2]xm:Ѧ#.G(\$4M5k4PLx6l/\KgjD5hHԮf-I32%/ɧTD=f(@Ec%.9~<M#Ν4☧|WoN?#%W߆&Oz#kYCgX[K>V<@[y*K 1=_WT,ždA{̨q*ɯ稾PT>k!;%I!)yȟ-i>\ikEz'ݼRN_TluKA9zErJ6S2uy
s@"O6vG 6'o%&i\a@N;m	_5jYvi>] K?jMu(XqkJ+
xs}YU6lF
MRp|M/}.aɔ(ye>k/J2/"OG	Nt
 ǜ͑'1⩃AlҜ-t1R˧Q--1IPy{WҼNP\?F.9ȸ*mN]Ugxpy)ǲjI2GqBU8	oE».>GJ7ɕ?&]JNkEtZFߥk񧛈J"Ԏb:E1p2IÝ<DW_$8v/RC.߯_[XjT/'~	לnvn?cıt,qEcS@{Qr(*~Wsy)ZǭV^TE͓PMw(qT58TWǞ+\cx:;	MLp7r>nuw]'v(hl/GϩTCkP"m)42u sžͻzMÃM*ɵ([}>7hP6~
q\xi_K~<	D]ǔqZS+zv HݜDUH߉z=)Q7jgҙpƁȅo+9jVw[Ny=Ym&G.?{ѕ$6)XoM{N%k=f]Gdㆌ70#i5H	K&ݙs=xW\j푴Y=t'S%
ɍY]%M zWz(4إ'B^KYM/n@vpAP"΀#@'Dש	ۻs5
qx>Bcz&;VUC{}zG jP3po'P\ߌPzU׃XQ5U,=\ r/(AI0G*tvG\_w*L;ڳC.YԞڵ(RDgPT,]|8c͐է$0~~Fs`]mT֝!Z`E1>]\iQγgmTLE k(5&˴e^Pb}Ԁzq"sMTZR\!	ӆVGD=L.oɂǣs0Ū"^-\C^P]{&Em|!r;.DinE)JtGT`{O^=O8TN{րgl^qjmOWt-Z6g:7]+aǴϕ:2vuTF}޸kBw.!!!r=jd=`.4NJUWw{;\:ap.zzҒPC-繎O<ǡ &H+c躇 ¼GIrN|#)(M;pHaˋM5/w{ϕ"id߿&caѮ<iei=hmBibykOaT6`])3`lpUs;Fē[U/Cp'M	[5+	Dлw!re^M+ʢGvT|oWM3t$E/@fֵd;'ۭvE "ӵ:Jz%8	ܨI1<nL󸕘 G)<Ǒ#7)aJV`?n9cYM4c*`/|*/UǐNtZwUI%­FOoq1Jy
5B6-Vh`$gme#8Ϋ9{էm/JZ;VKKTFT*Lԭ깁^p 7dUsII`B$8n
G.{Sz:rZrH'$}⫶\q2oy.UzU**bJW j&rqyn,r0*x: }Zɼ"4G_Fy_?uG|Uu ,̱.gfk.3?k:OK ^w8r[NJ~[m2FDE"!kfI>cf-*C[s%n?Y|ʹ	4r{cU%ףMI K	LjS:O簂:;u
tT.SiyuydUWaZW>#ڧ<QCգ5e3Oy+XJ;z
=%#;VGv(`f8Q\8-&y;sQ
.>]?;ƺGGXM(qڐթ!5Sg"8/lKRlh~	$9z2ܯ UDKA L{\ƣwHVcW'nI$	@E=#&/kK)L#k?7mugoF{5zXoq58_6r'*|J#75RɷVȀƪl'tYҎٕ
|l	5PvxT(U{!*FL/iYL(أNSXGWPϑ;ɋ
4:)n`5#W*bqϼku
Me^Յħ]n'-R#-tݝUJOXK/xUv󤠔K J _}w~-5	G$	߆rdEHk{Ǽ,DyU<>aO
U# J7 w5֙	Z%C;U(̴TὓeMzӊ2Ҳaɟ3(G]7(+T, ="ewR-<b魲ujBIEi&.~SDS}:.Z\He%+>jW!R&F=>~; 	vB:!gedHiNftG4NRvTDcb*
_HK&ds׹hFƑy=qQܬ{SM%
} uS]m5[
)WKk裒?U2uM-  1`t\1%OOR+rHIf 2θKnצ
)wexS7+CŎ]?Upٯ"7̏dBDEFO@t41oKzsQf9վ-D S<8ɧ@s]{q\EًEbX=^5ƀd@|<kI-DG;{
]!]8ZH4nwk%xX>$q]g(JRh(nߗJ/HStۤ$8]{)pԄl_~n+zYД&$4\F-ZY
Qd3Lo
hWu(3DJ$?M8s^X+* }{Yq24?"%?AI.lR#^RLi+yVT۫ql6ϷAyOMBS3\8I4d	@ɰ9RNPǃ>g\C7&;mǗx
ݺgVZk8){?EL?
הj'W oJkfwF#_k]3 'eRhJ gɿ0Ut}qE$+H-wv3~f]wnvZ8|s-"-^🈗85;Ai%SSwIy>s*&](,ڲ<TZvGeǳHZrZn.mj4jp{>n} &~Lw(0ϳ9F{T`6v#x%`vMy|R!;UBE>صNlq+8HVږ'IPcʒ;KL_Y~*G5teW9+\M;n/a7,/(IZhW0~#A^V'쟥V+
6HzGYD 䅥2PvkLEIA)u?L]8}$
9{)_IK3!,epJ	
F0ȱEK!QXulˆߢB踵&'CE(t, Y]WӐO.߆_WQKA1QN$9rQ&L`|,0W7;R:魳$A© Vצ[Y%j'l/EZՎGålp;%^ID	}1wu(gO4o	zUq|	lũ>!w(KU 7^E:%+QG:]<۰;55Jd~n9(H}=.M$
Ã"/uܠj &}'a$,c#Ruy9Ms bNPQiZ}s?z.YƔk/ɍXT]Uh{f# }:
)^m\.3+[='+j.{<u)Tv7^
?M
RҶ9#Z]ȯ4[2U^#^=3mʒe}mv=oo@Y/8*7$&wrYO*ŭgCq!E+(X#/.@<eu:\! 	F=JUBHTW)YyQr[8Xsy9ѼӾuOndY,yES[1֋
<5a'ecM-4jv[Z&=-4gwYcoi4#/JPU#(E\1Jn"8[ʟRd.5JV>I@WCg*6pnټi6JaNVU̇c"8
(e>;+εaM	wʲzpJ4_,:%\r;hʖM"<7٥DznPeS}T5:g.Ol%g%`SB90/ ̱`AYs
VA+~'&w
qzws?;^*ep
CwgW7ʕ65rWYlͷ]"+cwV=q7a}Yzzٌ^Onn0n7Rgѕ8:Hssޢ p%dbY')-$Bª=cYL݄jDd \i拓i)*'G-	zQ
0+q4]&a+Ըn:K
o]5d<R;;1ߺHAۘ`Ǔ߶u+(TCriAN7Ox2o<S$ߤ`Ey87DtegBale)Oh]"Qx)A!CFɒV߮IFt%ŝVu^=rCej6HWnBS])0]ߔ7Ũr͛Y*3(F☫6`.D%Vum?vbpPs
1˓WOJdδ[3ZfpVw#>Zm=ދQ]
ykj5&]pr;+}]<)W{;+ (W#{ؖm+]Ղdlz~B!'E^!å (>Hynk]j_B3IMIF%SM]zHQMY1ҡJXάY}*	Mn K'wRNqjd
	PbJ4@|HB] zq>	F%XkHYbqO8|L 2<,DooGf1@[NT%%|i9(.hTԨ"
iQ]pR/5 [i?m>'&2ҟSٟRԙ卂r94))@ti`G%Pgzs~H&TB/ߺMՉ&cSӃu] E!WLw%n5J%bv
YV'
X$Ss=R1`(~)r]ϧ\7O@A[	gqT++h3R͖.E	O0)HACWF~g&N^2JY-EL'wm~85[{4/?;)TM%EQ<bWb}JVx/(ih9
,@:E*KX:V>ھ=|/wM"lx^UFو(\*W8&J?tոScG%o"0'%.aR*H&6
7愉d]ÖG"a HWR<G9Ezв	A2QƊ}cMt&JDŗ3bz@dl򍲀?E-D'K&ܯ?P#EI"ota172e0ZU<67A.$uCK-Tk'4aGuSx_Şy#VN0)Gn
Zϧ47HwS%W͋LR4 f&$˷HvTj|׿6ǄZ~r:8^
\
uHj ͛JW>QY~ݱ*g|yPtĬD%E>8Mw%B)T	6mPs# ?zGCR\3h&#6ܮKaUARYcKb{D,@܏[mb[ms|ϵIumpQ9W*g)w
=p
0=bQ#l'g'NuK6;hfPԿ%ˀΊsεomch	9 
&buejv*0]T9IG6tG\~_%FPu*9cL>Rcʖ-~2%|":wgxSEȭ9s2frk($$;a:ʲݥ<jqc?_5 Q٫}^#{ePm9ySb(JkS۪x>P'>`42q$ljm.Pu
^MՄO8d|RY\.u/-3#%ʏP\zn,1}=f5)Kd;1{ՖK\@5M<ы, Lyot:0]R\<gY,;F\Nn
LeE{(@JDWR󀚢=FS.s `*f[BHNuI$/0@$f.,-[ 2R,5"]ԫu	_yQ.gb8H8%P_5lA_{~+U:&} \&_0]p
]G@<D^T8SU{~߇{nޤJ%Ji|'U*|t_oZzTx/QHHrM-̭Zצ
8IbvS?{1,RŦ^(ɍ@rݯ6J3p~uP(R`hQ@by-El1m3>ywJwnU5m*@tSWmז50UUr%K5s)EoAP
^Gc@߯:SpDR7s@laN}Fote]INapa4`7H%<@=B͵W% Lb".M	]d#l[ߪvtNjT:{Ǉ2K^ô$˫	;P $>V.6JWPדBH.:&)U;?&w6S/+Jm}{93ZTձQYxx08}c]<P]o²6遬ezu_O4Xܘ(/ERPxU2^^bչ)T5rJ8CM|OvsqGz?9cX6wM^?a\Ql "}ثm]DfY޾b{ڭ
Te$QA5K[]`ka>]f
_זmq2!"L,/[ܬ2õN	O;ݍ!!pOɯ&&ڑ%l?AAT@C(@ъNɾY.mbL%W~4ZfwtA|q,/3հ3`D/ʅ8c!rUǋ^<R5Y9')iZ ^c- 
ʩM_Dm'~OwuYɥ'S?|dɷso7QUq>jjԾ)n99jy*>m\6
t85fȓE۶PPK!viZ1 j-{T?]V,Y&hcRCܦ4=W!ⷨ]Tϛ*/آT$n-:'Gf,E߫>RwJY@bH6:Tg|"^3$vOy]i ĺy
_쀙3"ΣbOP>*ɍӕJ:c2;N5~W.qգb6ϕR|1F[i5)`LIHֹ;zr@3Ș;p_h20\!^砺ckFqQPbOt<ܬq0<&*}>ERVPyZ婚$^VjX?&,hW7PףIU}jwk`?h;}!JPaBT:4m̶;l""?فKj^|$^,EGr<՘zv*#=qȕvTȷQNͯ)L.@=3
Z%ʣ4v:n^4iW_"%ۏ^QT>Q5J!kf˗Z*5Eݪˏh֤wzX	Z#-D%-}Spv/2էۣ|PQ
7%PnIK<SA5ϕ.%
$,
%NbH6߭msYT2}wV5CiEG]uGX
dkXQgP5ҠoۭTId/gД.}8<уXltU*.cPQ½a	~Kا+?KiJ
hR>Tݓ$YLE#({Ff芺ke`u*{G>e-K
PzU|aLGI
uI\nyg:(toV:/JE&
ȠtQQ1KL##֜Vkd02Mo9M
MلSJHGF#*Dɳ;Tʛ<ܑ%\fj'9Py^rV
OzC[9rGB0$&hOO5ǯם9{+DQ*b|pSo;ot+,ș=<d 7.ϠesY-~,5+*Un-!<*]$Ӹ89JKUB2ɤoS?#NVWRP4=t (8Xfwu_{ο$;eޟdry|}MOhkW)<<+pZ %	% /g/"ee_TϵԳ
GO~;_nfgh_LWF8J $N7[-:Z휺NvGX@_;ϜSk|t}k>JaTU)MAvx;rA`3pts}yHzOHP`ZdJK45~Z'_ׯGŎ{(sVZ.F]I8JA\{.mi'urLsy+8N8b_ى=rg׷Z.WP#TyPсi24-[gɥo_5
/ AaAEJ%z
=ݺS5v;URT5zɦc
y;hIL(һi"x-ce$`d4zmmo$yc.lwm2DӁm'ɫ+D\7kZَ dTr'kEHX.?q00=D73؜-!ϳC'rS'+zԑ1g<nG?]]- Y7P[o<lJKyfZt-7t8҄nahv'&P7jk.S)e&oI
ľkqWݱ1w;Q9.VnԚqUz,xD`#gPeG3fV!꯬ޮm/J9vovI։ "z2e}Wv>WKmq [%k-RkqH.i
U4tu&JQED'.´MzeP|\O֮D 9Е2݋=jk\>䆇l=
4My\+	sGBĥD/-Q9!M(Qulbg*CI|πQ5N`u] W_ŮsF fvP=ʼΖ{SK
zOAR.,<@#vC0)ot>T ʑ`%Yr=r
ݨԷ9cB[rG3%Bl*n;ʇ2 m?^D1y"n<4R:)2fcJ嵭k(\]h]$Ŕg<uЉ8i)
nڠK:eW*-3]@qAtJ	q @էEeF<UH`hY\JO7ɤT˸KDx]QRCM~${sy*3tn3%irK p#B9<=--3A!IjP1Es &@yxPkbEm!OCƅ2@/8e('өVTE(uk<uʝy=u@.Wz
#-}-!D$shYStq%L
icayQK;r
] / E"U\wԾ<4	jhNK)JZkX3:xh']f<5 |íٻ#IYHߏJKEWc$](,: ^8Q[v$Lk8MD'۶A3")"OTw՟]9\Q[N^chy7䍯:ZL  Sb䑦K	8)O'.jFJG B\۳"Qy_ oS_Njx]]թSo"IZ&S?U䂲u/`Z#V`%#THL.-K3I
ȓLLh/uS#<'}tmݐw欙ܰ/>T$U$qQ[c9k:ٕ))SD+ߎo*,sjnp]I&:_O>@a[lEip3*frTƉ
Wk\8ʔnW3.P಺Eoɹ:aZ䋚{bQϡ,lOT|rLҜWe4g#)ۛw-/ϡǕ'X^UodI]%2HqԞ75Π
קnWKqft֫H\\yku#*j䪓T
WR{ng@u*u~ j61MQ[<.hzV7ԉ{ogvSsT @(R)_tf:KTh\zguK^_y#ޒ
f*F9h4V/g2RA+&`3V |*qr<k9Kb.Ρ2G
h	uoѵܙx
x&Zp)yD?c<}t<*7I$6kmG,e
Eo轀v͇_{ThVSܔƙ߯ DSᖥQOsՂ!]XČݕ<e<0o /@(E9_PP@{D
znqSY<n+oK.\cfdkȝ2\%
<(|\KPBc&edS`	KYyx-t`OḘg>kuc#*h+;rÁkj7RAS|m5qZ9Ϝ EL6MC47@Y[q(^k,(iDK܊,k힅(i9_]zN";MDqXy+ѻ(>Bky᫺ʀ;ڔh
]6lB|q& YR ?+t eQէػJ;ԧd(.u0:ooɇ9hϵ7ՔdC	
#$~{ieޒa+[#9U ~+pԡ?LIĉkTh=go@Z\L$UmI)F.5 &Qw]7iXkE gn#G`
dha{{Vx",Tg:].kazsUh;[%@Qa&
HKX\qvJUo4M56s*Jwb&dRDi"ވbss$WSX1'-~Vֵz.kJ
[d
z M&PcTa[Xϥf%>ѶxQf[E$"ߦuiG:TDpu5:}|Up-h#kNѪὌ,l)䍡h7ŹV
񋝯pG4Nv	/jG29e~oQgJDoCm
`	^2NԨy̵OTx;<K-k"Zիx͵;)Im쥼eMG )O-A$^qWMX,/d"[gR)in&jt*V,oo1㽌fMm-U~&z۠D]`K nNeMټjyT` ـ|
C#΋!G"O0_O䃢6GA:.<KMN ^`4ݛU/ `n w52޽Yw~9.1-_s;\<Ê&\| ]{7ZO۹f7]A5?͘k,Eyԁ v>?_wlS*J]pG=b:MII$z޲9j-M!<Rq%IاUjGc?+A{z+&ڰ( <Ku$< iV󘰝`^H<^:zwϣ$UB
[
ImmP-uspX+zMhzVj=,ɫxe)	m[E[Thj}7zt\=Uu2WGzTpks_=|͂Y`'!	D睾EQ5Q=@	lYUas~qBް)v5ʣGq[[EnN5@)b2Ѵte٣cmRXHOg&ٌ,5JPؽ]Eeٛxg] Op<l|a']Z=2Hp@
_Zc ^&6^Vp[343`CNCUXJ^{=m$HI)5x;&mc/ulDff1E*!Ȓ|P1FUS{}?8Ldk "^Xaۤr[$ X_?
R	j(z[j^Ų&Ȣ%1%v"95/_U%T-/0Pr#Z3ؠ [}٨<jjCd O;u*LpZik[w+%!
_Iñ7 "V!^8ds5/Ia|!sY
^X`#Y]-?TGl؈<mx5Co}ZpO 'N'^2cޔ8 { WOxw\9[:JWsZb,P mۍKoq%-ؗZβ'b"wdc
 d֠Zos:,ǜMC*?iWwDG_*EJ$П|U:z_$w>x㪷<>&QQ]2Lq38PA%[0 ɗC!Xi!0⎢@HwM={Z^q{lK@mǜU#j5_do+@؆jG%Z(z~;	*@ֽP
_!ǥn|r$?p)!ׂ*,U B먆`U2tîQF[2	nP(@
jQp* TT('Զ60r(~kb-
&>
'òe߬%d/Ֆpc" w'[a8C3μlWPͮcma'Yٟ] ɀ궧Ur	((o>GʀzDƶjuv'n+Ь
I>śߝ:~dV8u+Tf1drzkc׎\?QSvp '{ڊQMbA<]j.dJ[iB5jx9-lrnNP*Q;tOEFH"wmi9-э|2KYDSۻq
JBpJQg@49m+>^-ڴPI ۩_h7!sꓨR0"V<ǁl45XNںl%FUv[9eMA'H1.*^ז{	&Om'IF~s"զ_<.(uk+*Md_&ە
jE ~8)H^pWS^l,QqHajn|U}%CeNUvOd37Wtwx՝}%.xySi4sч7< īDwI)ajw8	z??>5x{7yVuIc2Y+I\Ik`<9;oi.ф7f@Q#L?d{Q_'wul߷(N@6֛4C6Z=3w=;mQUO@zcQ
	>u:st,E4-A<U$`Fϥ媑wvB*HWWc7COSՊQ8q̾E`vu֣nYC=Ir2 6!m;9U  'C@Y7tU8*B\8<$ p" I;h6Qk!a^z-9Z$s_VRKĢv.pUEm)92\dk=+V`'%SıV 'ZPYOj0w/p[r)(pĸ	Aʥp3z+m]
$A0e?wE*a꽫	4! G.l,*؋ SC1l疁Aďaz|]ƶ+?m[eM7V0۲/dY_`$r"$jKJ߼z>Ex\A+|T
Z?FZ$κ'?(
VkGWeXR@ͣz!qlw`|ѣKb,!z	'Xl~o/3]hj7$`lsiѾpW: T4);xƔI[uHުOS)
Zg~ѝ)_y&.
PgsP}Mm	96ΨUs'Ū^؎@T0#|1Wcrm^ EBjw~ 4xBsNd7| lc48|h㤼8!4v&T|ytР@֮zw؉Ք`[;p"٤:Z&zImb($P-ytf9ǻ+ë"}[mY{.% *LRkqR%+:R{e:K:<m|,&ޮ:J70$@{ʽ
>52ϲ?Y8ikiT+{Á̃bK"6K5akZ\?uY/Ge	c! lne;',sY1Ntn߬x
p79m
/e $T*ǓTucLH/#44+t?jؚm|
̜Z=w;jpMIJ1w{z娒"ʲ,m nW߰$t{ ;@8at0 {!z&46/Y<Uy"c
9ϘLZI~R`T2k3X!ѲkK/*4wڔ;͖O[L"Vniu[VS8eWmWRfDC=u%Tc4	وKs*a(pB"A.%[#E@=W
zͤ1\U 50`tsNK#d/{͆x)$_F^98MdmɶЂ@D[o29j}8˪MhPݟwtxs:H;p	 B
ZM.`o>ҟ
w:v!t6%ĪW_s.>ujԽ0pMɝ8qaO:70A!J5ޖȮ(o)4
u%+Eko5gL-/Tr*ThSkioI)>Dq
}.­OJĠjآ=$$d7h1 {,z}oGDzw^%))\}h דE%uEY&WUW	y<]#I?MB5^LESEB={Wn^:>iM|- uZ-r^Er"zg1G_c7d'Gxn儠C+]O+Oķ ˙8]Aqu7IS2p3oLJbc8hQ]Z!7£fjo^$3~?
[)b$/pU |c:X"ȩ?"amc-lYz^py7eۇ
w
'vz˙J؜km9*&ϖZKR-ԠqSp{M[S;?%@6L{F9/w^(s	["˶`KBWgxth\X:0.F!ԋ@*UdBgO@DÒ:yWv-|^x4~o}ғJR:q2Iyk"Z*T9k@:M<#F18&ϸ>ɲdwPRyl ʹ%\]ǩUXuarR!xSEy	dTWwΥLo;&;8{s̽G"ZDlE4[Bz,;
)8ݔvr:ڎL.: VN ҽZWs$]9*kN:[<e_HjDYrSlB8
Žv<4 @ΡNq(##AGl?ӣ/=k#
AĴȲ-\oC-Ǒȋ3\T
u$TkB93x
S|Uثi)o+X,x-MJJmM?r:YWuvy@U D	?ѽPa&!ۘ	cw<UWɭg*:),	y(fKc%/7	8
Xasͥ~\"򮽘̀X\޻?۶5b}[W[{
M{Ϭ}ˀSsR-׻{:{.K)*gvƈ~M%Y/#ǞϰO`UYܤ\bdIhRz*{qg½F7Y6P?"yXUZ([5ۖkB|{["Yb+KHsj`z:AoJDe`JqivkYQ!:p
UMg<w~i«P{5ՒNb"Oj msB	-c`s8% nͮN%z!ŉ( 2^KU"^*S`Jg4;avVr/*w߱Ly6`9bݕe\r௽҂=E#tCq
M)ͤ.]KV´8NXʍSɇ "8짔6;yOSUWǑn߭Lw -j;NW#uo,aۯ/ǰE0\kN/rGrty^Rx|ql{{6sKKeAԚaHٙ hZߖb:{}AwJNPUH5tl 65ZS%'5J'(SQR#5lEXI'/@Hx:;	;_`łHLZyٿ_eIګ%1t'`XuI%9pks4pPq(x~*-l4y^::5 Ymo0C+B2(
`ӆ*k$
UPTw*V0>(@^0ėӦ2uK݈YY=TJ%AcE^oMQ-Nvo7'Fb73iuQ#.P*r=c0i{ÝRH[ϸ5@jh?0E}ऍUtO-I5|c'v*JQYoQ|Ǵit˺+TȄ'^{%IIUKM:
ٽ̙Sy3,3 }ԶF5/BV!7a!
R{Ҙ7(έapnoh:
rvh>~*k}alhlXs:[&"kl/f8.>4 =+tY65fN@If**kJgH(m<4vZVb
I}m{Xʨ3YDH'?zpWh0&Ζ5V%נ %.mUVPRo: DBL%5x!QP -	;SCC{Sm&ڡWrJ;MdG|'g>NaVCRk![gY@ڍexYFSo*j _(*a<dn{TPPto< J3)?쟬%e2莩n-r\X}RR\QDMP
?,w~48Kmqj89Pܴg_KFVYcv/l+%Jhɩ_g-JA*u5Etg#"(ao
ؓpX7\fR[	
9_GFl;;AsZaC]E@VOq̃u=Lkȷ?,l;4
jk)#u\^*3@r l{4 .nWeߓ&
 ʳ^&8dXhtMO̒ZJ疊tm
Ab[MmU2tU]	zu@ϫnWᰋdE?<%xuEhhP,xccwV
v㰇Ly0@_V
,9V+*n(.O&ir HW?jQ*@ ;+HO9U.:	̻]cS[}` %ㅃfҌaI5qU1t]n.,P=:.~VȎS?@o{0h!4ޡ/BQ;JiÐmw8aW5}C ^Bdf%B?w^zFp8>hbkڮ:RX'(ҴSQtKoHښjpt6PJQ~ɮ)#5 82?T916]eF/ >ЮG{17z~OvaeQ-:-E~%o vx-W ^m^gdM=,aD@1N~
Zt(i5#9b첨Ys!jݰAϪ,"tB1ܪksF _-rE{R9PfSwMl)mX+u yO㚥u[܅U[M&n-raޡ?Z}9bGR,GPfvx:YM9le%f[PAVZIIe{MՓ0	SnVDqcI;)F Q-v͂$;~+`.:/n f*	+Qn^;"×\%'x(S%˪R\Ć--
On	ohWlnèWFTF: )"*N'ngћwd'ˣV?o 5o'3
YGIIrIggg<jW	"OYۂ|s~TpxtgkzJA_M7(+oJˆĳ݃&ƞkl^n*Λb
fI2XCd#gd8DE L?l4u%Yiґ]
 9٪)oeD/9a,4QbsB(E:eTG0C\Wd"wU ?.{y)qZ}Z\@Ƀ`I{T8q=.l9Ĳw9|dT'Ewj$HsjT.cnf(O;bt-DZ|XNGW)	YԼ^=\aK.ɻ7kѴ1]Zb77`yIt'|$Op3XvGwU=+եxvܥ ޸tE>E
`3[oAp
ds43rD"*Nӥdtrp:Eņir=PLMՇkLA";;h;P2G.,	6+	UWDPJ'lGzc˓Q[.
  Nإ>D3eևQ@
_L杬Br/l/>_Zu!׋]ˣVz7u2J\PLYȟ97EݧC:>=Utl|<4ݵ6T-
5
ƬӶ1;k#8{9
N?ٷ6!AhM&?p;]8IVKDYCs"dZ|5}o"-wTuv-8%"}{Ф|vT1|9y"azfʥzy?Oѻ]#^PT ()/veibbA v+ck&\/Pj kw<35+Dt7)a7ʫ}dX@1@]zqg4xsx漼-ފӑЄ=RR;KeC }O航%4Vvڻ}{W;t;Nw{#U]	H=϶QEչ6b@0Fg o>"[z4wxOrH%<0t:-|Bksȹ"iFvIǿ"=NrT\1}٩>IGF7M=Y P=ȱkKioI>~ՑbOUs	_:^L1CG76Ӯ= 5T]%\uwZݍ4R8^NPo^xd5yTj |:<dQ*t !>9Cf{,ƈ?CK:{fk$_}n.6G T+FChl\UA[u='BFJi'׬S}6Pn};\QKMa1
׀y|UQQO+aNR@s ~jZH&<U)&jqC@+jȹMVb<-[rU<ܳjӲMI<F=>/{Xv3	&ZhZ';MIp_S=цgq/-bV8֫<;sl&tl^c{f^wʻL⿷& ^<o{hi*ܻ@y(8	uրnEM9FS?*(Wj&|E$>q@$y"j`6f{_50bT?0ZOf ʲ%/$
"GmuZN+z֫pYycާ Zͷ:WNRѻa5MAYB:`(+XmkKUP.~LsVZB{-u[#GmTTF1&P~Aw~ޭȲ-;|JIDRH޽ӭ"U<īJ}8sf'K;8dkUoBxHKͦPhv@m$\+8t੊)[ m=O<~ٺسjPlY.k$IIE2o|ޫhi^;.XAn\}vHЍ6W
9'XG\OP"@aVk/']a߽VWF`o!H
UvMX\
99=Z.桮S<[3O=Gĵ/ FRyS=L1M^fj=e?"i=z4+"!	!Al8MAY1gOQg#v[xu7"ebtp*>j.{ey;^WU6kږoui_$LJzBdЄzX-  hi9s1:Ov!%#|m4ٱړDcH oP-kCI8;K57*[uAyט?y"kJ˾vl= x/Z?;U@n+E&xVjuI=	hHi9V
/
F>#(o(n3b^_B\V![6 )'c\kŦ+gs<~Ctr ,TܞM
*J*,F
61{H]]$!ܾrlHj3:DoxQ%RVQd49}nJ JU5
S0/߲-to2_kۉy2Ī*1K%q'/lP>QZ@xۊѾ,2ZV,P{\	MeT[|²qU!8	|
e|skU=rL:9tSS?X4Ahsb(m{=3Wd Xvq8?6s=WZrOkn_4O+w_Ij E
T"D^MvW3xA)_E0*`}&|<7u%j"dy?CWϗR-;dg0yztWh%`
ՄW[{8'@hP]oE lˊ[czt(I.%}l{lξ6g&P꾆DƠ8īꕍ:.<-3X
DIp%W}/uZ>Gjh8RBAIka.۴	i)8#QBr6ȖvO@-Q+GϦP0kiW|Fv`{ڒ:t\Hz[X; ujl'Ν%z멃O.l*QXq?𡶋h_ԕQgLEj[N}!&@*HcvcC`ep4T"P@$I/moJ 5ئ>2e:؅MgW*]aТ9B	$Kz9Cݟ%!xxCT+*
UAREF7uҼK/! uN9&d`W~mߞnҽh:~zn!s] κa-2eBXמ6Nk+SWШW'8)!T?Az)]rR?TiJ]%M4!zȤ9'I7e}lC XeV:ʑxq$fkNk 6J3Z(SJvj(ͳe݁dі}[8MpKm콏5$$GesE^vu"#V8ox:Kz	7
	fQ:ȗ[FSc}4'Pޛw^᏶
Y.(
D [<^Ks٧v93r!~DKEX$>>,Sc0IK³8G4_= OuGn/tMZ4m{(Xk;͡c:8s?˩jxiV,o^||hRM5-JS&]q|O@$6 Ե:z<S"lV1d8pS\ *+OE].6i-Juj9DkWN#m֛±QdJζW
__(}f:,N=&Ы|>vi5|؆2hВ"I7_Upf0$U].⡦i&[H~5D:M;!(μgmJxE"ڝų"W'OQæ[fUuJ*o8`'nrS#!(t<G0/eT<ʣZhՔLSb(EtcYrmagi]|u/tȬ@U*C+f_ -IJ㼿&h
sץ.6-3'r9W>t^[ޯa+IMvwIYz,ÉM=Md	=N?T[qLqMd6M((w
ˏ԰erKe}ә
G[sW~m_Pءbwmq-M}8b2Yi{Vu#V5	n/G'nm@9f}ܗ
P?q3
rgXAsqRC	u҈8ME0^Eld'xV|~@wShv~#{OS#	XeBf^ϡ |[LnT=co2;iEhh&W|)v&Ěɦ%eS^۾c5@dm۽[#),F>8 m1>4 :dǩc}4t4ލ(vmQZ^qZpnʟ899gIϛ#;g9G1ha|	 z.	!T(}Dz/~0@U˫5,	R`^Xʲos`wu*&X-pRN'|y&&h%Yv̩W)p?pԣl)|خ+i|n1Sp[^$ 4fd݉"^FV
UُC-t0Z+ئ*b\ݔvom:|!pLbi􈆿zr~GgYm܍'ih-;Vm92r9:qmGgҳO^Vb;MNҎdmk/tQGz')AIJ<q	WginmZ'IƐNKCj{#@EngR#qv>	$NJ.8ڑz_bmr9\0ncnد7
bY%$RH0(:b5:F|*ᩢqXtcs$:Y5wOjحt;Jv9@#uRxV`K{խHfI+dTza*	`E 1!diiSxF]!nՖͿU'K[o\m}>]D'^ S,#X v|}{;ukOEw.~8WzQmO5Y'.`Og;eJA__^U'7gpTKʱ/n_m5-@cik C ʯ*yxUm xul5:;Ҁc0"8PB#|v@Qk@yL)J⼓.h9o^m{/1ly^jD8ÉӰ#f<CW*JD\
6o*p恕gK!="KCr%-[USUMtI('s7*QR4'e%tCaK &_>Rm:(z4'_OR=R$D Bry
p;`	~UVR Y,
2R_h]CRCxY) P}BR+MqbTpcA	#K
܍_Ss+TLJU0?
ĢY_y]ُN{FIEPr^S3xҶ:l_Vz&a}H,wI\,9'
kc97^{mY
AAEMKa%y߀օ<pX!S4DMl
Ⱥ"ҵ5~l},yOy_ PI.ӚCA+S+l}Ģsq{mMU%o;b%dMǲoY7Xބ9aN*<Pέ[ʿGMjfVpbq2ؚ@7t-IuHeuvKmE>	][:M5WU
xW2j3O9&@2{"E<YјP/D>}*B<U&(tlR]
'	[
>X).AU 6VltVȧz.yQaA:1{r-]ukZ9()LOBW+ۆFkD')Bv5,c@PAfRpP}Kxy٣(@Z@w	Bc!S-rA -7);F
s,bVDIH@z_0 kwͅ-74IWNVit3	9[&5m2fjY\ẈUfYo'󳼢o\=<NK#HxqRs,860sr"lBu1u~ѫxlTIz
GGd)zIh3V?厒FYq`

M'/+;@߬Vgrx;4MzjPbKrl.*bLfG+Ҋ}Z4a>&4EAui˝OʥxQݒ`Ͱ|M xxr.So{ݩ
_kB0<k7|z1k>U~XݨL(gi `[oV f_5m5`;`p yS>ԚAǨcoTuӖNMǫ_c>j~|D&pDDh5bwyAF($FKJD#sYm}<"_{b`<$Oo}isZ7k\\N*h\U]i2ԹA<2 cr좌j݅LWbY!]k	}m˔q Îa.{qI.`L?+Y _Ǡz:.l|Cc҂ֺj#(?|\uU)6
ALV(&db%*L<"PL6
v/v;vԲp^poc%L~΁9ԡd?z*!䳨Pj"`ua5kRoi
`\ֻXGkbp
ZW"	L
[^)Uzm!Gg p*mTS<4WcxJni]Əy;iyW x̠[51[Bg؉%X2vw@rM +ף׷MG 8d;u= 5^r6gxö;Esp4j*ѫFIWhEO;n'J{ .'l!ZxxuvCmAzpjnv[;;>{$~3VzIgUKs		3o-YH]yG^G?d$qS
T~=:a8{L?u6!SZ{z1mplflOZK'q'&pV0-*p_LX=(kiI-qFp;JqG)N hkcMuea+fUX@KЬ+볜xcṰnQtzHPȯ<o
Yo׳RK
CZk:Ɵm˵ƅR(.-oJap uG4<jz7vC[	Y
^?=ԙ	gTTQuqlQ
b[]<7'35ԆLWڜniA#gc
q@qw4Pě?0l^v[ɾ 0{|GMVXGጏtzվx­O	Y8%lըM^o`YFIUTcg&̶m[4
h/H=Ф6x̨vj$kwF#]Òn:hwoAS6ݓy&{t@]oT?ڂ|YiU}	/jtvy߭yVE٩z=$`D@ckYD$^`G^٘˺=d=4盂Uڻ5 [oЗb:K#LZ{t*Ğa1_u5kŅf-Вu['!~}:%쒿˱ ,|1i%%V5ۚȫ#+?#wE>7	'ܓ>rV~ȪWspu;)5/+!CVVkͫؓGYjOGrm
@=֩M-yP>f'/2IA\K, QAG} Jw_1oF_{,%J
5΂H~u&@{
|&flϕh'#{[*ȥ}z$m_jb՗q;m	POsی[YXvdOOwI"Qo#K[o=QŤդ1xLidƒoP{<P4nMad7o4l?ɭȑ.2`\ u\<+&{DBsncH1,(ZN:d>HD7%t7.v0IJ]qɸ"#۬Tuy3 i	<X ǁ9%}jy>FADr?wGQB/0k>J;q8iTň-i?-)	V`z(m(zGwf!u+WJ3m{P1kWCE'~CQ@Ex𩺱m_hielT9~g$w3Ey ֻưfע>I|V!x+Z5$meh	3.X/bmc#d
8٭egŢes~%qd-muw$
6CaOךc_,nUJȢ9n]zm׌NwɆIJپIE;̲8ɶ{D&>&TM	&zw)|҉s;*`R`W?-h4@y[Ԫ- cȐUO@b&GȭʳmH6K6BôjV9pr&|N[jȴ<!Ţ\U[k19M.,;ITw^`)!_0&5Y̯AsَI"(,@fg!Eu
O߂/'ta4ɚڢрĖceJKv)a*@Hx:hs60Msyy OkՏ(79iE*o;HT8x=λ\dg[zo1cԮI|:IYm<
(KiH˶DIEcq{aᣙ}Եa8n@Q:aFۆR3xk}^k7,g=#D|d# f@߈0po{93BNz:hFh >y1ܓ:M$yݾ-?w <jXr<$b4	]5m
ޮ^z|)n܄0¥ђ2¢\.Y>w|ƣex4"塇&/	gDM
?AJ͂ 祺#O^YW@HTU,"fzz'}/:C6
Kϑܔ.]yx$LmN6۰AMMyjQ<KN%hj;ǩxrZ}%	tpuN6j-v%3' V5n>O[V3/'w}Mpjb>ISz=Au+jO?qߤKQΝxOq2w$]%	D!G@u|LzgkvEI˻Kto,T
/OjosQي;<k-ϭެZ&RXFl{j=yrWSr7=Oym-/Xêchfi)}/{594qDxK؃xs*
H`~k{y~K2oXn_ PuUY۴xW¯V`A*_۲~ŗy
əb/m+c_<廅G4b7mh3 |eW :t}ݪ5)@уr vL8.]r?zǬErmEb39-ybcZX]Pi=K]V~5G6aVY<Ջ5Mš
8zHZ:+gvK}kv,lr!^[> @T|ۂJ|\~lxGgnމ'Hk6VGx6I寈,tNb;+Ӂv߲
煥y:a]d	ZѢĢNw
؈Dp?P ӂ^@ %*%0ݫ!|8V9i4,;jUڡSM<t 94oQ/r%pKN[)x-Ώޮjf[lq:VơY~ՏIQxՖޠVWN\|6r	OcWWzډy	d aT^EnjteSKx:+!GC_ɶW₌X1֐'OuĀsǜ?gCp:ѻ@֬>>lg@˂=Ce>Sſſs?{Qr
^l4TZm]}C\PIXmhu)ѰW4{IIk9	7w@^5Ҝ=Ҥ尢L:.ɽ4R4
yyn/gA&v*|J|۾>TjRsNlW@Tױm/<:w-x:pi-C	ل!=~Z;n5=ִuM%Ks89lwkj
FDWymT~&fSюƱ-$8y|*׵:V2zS{m>Æq	L@xnqh|(a'g&SD\OgΡ|Ϥk|Tv*UuP`>5(7| FԡV|2>}-*.i6`ӉV*L<<~vXnZQí?l8/;ټ(.@"o>[mc/=ף*o5z{Q+ $T{ܽ3Jz9߭A^v
O˓Ǵ}1*ǐl?ZN_Q[ry:ZJ.G`z?ǡbtƾJ}EO/[*H-wUʙ^&/x,dd½Oq_Et.Q5_CBKR56 q2E8$`"-墎Nbz>* sM'tBVA~7XjpBrst?(Dr)6JyB?v(q>,%#H+>yVsα"*ϡYl],zZ7z®-q8o¦vԶ 9v
"]sM~I5;sF<hr~^u.TIоq]o>'(N34h`mkؖ<KUJ=cn
<sc71ǣBcL=c^RJ!ؓOYSinQq*/PANk-k\6wjր
e'8*oiy}z_v1n7//
aQDyՒGr_%H!Ȅ&e`X]%r0 Iaחs!`䛳| MkBkCA~K]
ﲒ+kwޓ&%bumj3'߭6x8j@);U4'O-TIk{V˚2/e{Ctj@t_Pw29)SjظVmX=@e"{]^`Wxn+`t~Q(έѴv >1fr&ǷsΗ ur6MkHH(oƵ.i4vWͽT]Kwo}6v *3Z*^6+*H ġ".[3鍢|=dDobR%AԜ9tUzRnMo |t ]	
yROlJ2k.
κ癍~]Sx^_$]j7O˪P_t[^+x0+(:oNUnZ	VB|o\߇SuDev:&}>
=petU{;%7)
lj
̬;iRWŊt",C lYs5dl<8:8LX]<J_qQn^BjQx}<8,ˊ[E8nA
(?L֫
Z?vʣNiri^RT<`7	$Y@/!mQ1 ?U{}WG]kWhgiS>sW΍'tlY~Fwjc%l:DI&ę3}C۪um%DY9I:	΍LUmy{}<bixg̜(;b|ff*\PEbŐ1,gσ`DR͔6jvch^}Л?;a)^-;(b^<=2ê]N$xw<^'iG،&P߹um+b%%nDoMnև6	N|.zCbr+KFx
s]u!4p%LGD5#(nNgm U.rhY#4;
q縅X[w[\=sUUe9娏>tNtPZU,J^B(ç+Y[B^8kGJЩȯ&_/+8Lzn0q;g} 30
KmkLqmyk孄zi	Z>u!x(OSm(
JoQǲ+F5΃`yfp~9$8E6j91gKT$"  rbO-L
'XmQ'Ȕh9A^AI6! 7*ã^gWfҜpwԫ4GMUqr'j~Dz4PMD8UHf/8LŻ .=#6<-`%,/,i8u<yn+Uy|:v!z
Y8񣷃2Kޥ~w{NM O$	M or\1$YpXU~6yBʆp_(='ny?A/BS(jIˡ-{@KoLلdWPEg$emows⽚g,^
NI|/E؅Cߠ7J_%`VFtj`m&?2k WAdoYy7o ct
*(`j$Nȁû@+Yoj~:Uo'fLxvO_r֩Y/(WkE(|깍ia2'2YFmٮXhtu
}>Bf;;/ !>ID@V?!]4l1zPsy'U+
xQ
aMESY{%
5j ;^r{>ŉRWp|vʨo[9%{#ԯrQJajb:HoLz(D[S^8>2`2_X<JVvχl/ uO[f<eQܗ==*kJ],+	&TN}fNԕTMΑ4ڪF0G#q۶SܱS#+0~Np2xL{gct=5-1T_ pnX^tl9;6}ay)Sl'G:Mucv<>	~5
:7R5ک\ҳR)-&?OGQzL+n E[UC_s`?|b[಄eEaVA4?z+W,Фa/ _w'J/l~%K̸KK
1|IC`6b`QFu
Z9t;gr:u<jjPXNcVSx:Y9 0TNx$Ќb0մ۱h5 9)<q eB-}gяMQ
mePeJmVvȌP2:"HUAe(l!{>UH,6GL̖7i윕#{OjZ`OEV!\ ?K+N[#A<
/CW?6s2QU~ ԇCyl7WfNٲ{BB^o{
f/wtď#qm@3AՂئ-Q-m\ Ky)nxFus[#EPݽۄvѫq&tf[f!|/fBuJʔjTJSIЃK<?ÄrYhօ]EWB֎ZD^cN	Eum\5-5ԻasOL-_pt2EʞO7gP	{niNeufujڪ%D w}E-YmlյX*Z(Ÿ	;Ur]ɦɖ
 |;١SAُmҌvd`()p[pctWG|FsNz{75(q-~=:Ϊ±=v$d6rn'ۡ{q&9I7_8AP<Yb
 !7YAۡBr݃Rb3IYw[M0ʋtnYʒ>%R-"{=NUfHf0@Թ!XkU>Cr[ZBI~F2ieih`nR]sT48\JMSuާFInFT-@s}E͘82\iϻ+.?lw=q\Kt%@B">tDw#\mKM#~ˇzCŁ:M-K0S~rE3eVOخO/^Aq6@WgB ݧZ7I:nS	SasYaU4喤]z4ax@]uFHVJA-zY/+]eN(8nޥ!{9K(-cnIWez&zWⷴ?vU9
G=r.ԶVm5Ʒ%v"yrA׭Х68uVC}~Px#|VlˡvEUڪnшZ	Ɂub5jZJ̅>z{jG&BP9̞?p7glw"[iq+B*`VQcG)~[{p'O_܊ߊ߆׶Ap8]qH<r
Tdxij8g! .Jq=q+"[{{ͱwI=`T%A4ک&.`|y_B7= Ȕ1GIW/WוI]E3*ݦ&8Fd"o*ڹZ
S=Rwo+n
/7}\)BW7ġSΜԝU=⋓Eױ{U w/u^꣄P<4-s?6"ڤ*^.z5͟[h]FQ?s)4܀g?6bVNA D#
WA+ǧ !45|o7d9eRHC!!:
Ԁ卷6'Q#q8ғ`}EvrX[
~J^8]z;[ueD-ݽ=V&beM1hK=	}#[gA8MCMXܐF^nYr{wzzLq\7`"j| 忢rz)]+/x8,:ixͳ5{&iGxuI!-۽yUOx,F,t)u
ܫXjIvU>k©+X)ɡ$ژd@fhpW0
Q޺W邹z=JE4
-tc 0u[,ŹBx0PuRs/z_hO59S-4]u܍#_2Yc`!kxҝy%{ Bvym䉾ǣWt~)r5IGNSbϺ0c$(b>]S`ԥ.];RCc۫NrRW;['ټjVэd|
1V]AqSW*WERx.]\NC*8!iVݼ[1D Y{5zaV
?sNۮFe7AĳTJc!
akeb#ۨOpupY%,	bNqӬDȏߒOM`pSЩ+D$^=qTF.;q5bI	ɡ+r_"ܽQmL\Jfgx@Ӧ~3'7nѪ`.
t.7];e""B#ucvvrj 0,*Wro^5B@v}GpvהvyBZm"Cm3z?t'Ar[孮N/)=q BKOz}+4^W{\x#.
8wPD߇+q;\RIE)1'*^ۯI&\*lHzSsK{'S+GZ0م(E`y"a\7yOX3՚ɓPK#p]9{V*߹H5&˃PyMCD_T5
"l^ӋMG(i} ^uaW_kVfk8$AC=3D B|<1	WP_7OI/gi/>
' \Ir~+%4ip0I%s&VWOz@ow(~  pt\!_T
p)hqm	0>6e$O	vPB`81u*uq Wath/4
T;IMVKX[cP!%Vwn5qKYC/ǣ	+:}	kUC炣9CO{w:ͱtAuPRM:_9mNrylYF$;kcpc&ߺsvp^J^dT'U{Qz#6}yZ|CbjPra% N8HLl@y*YjOT{U?ή\|"Euּ6)X)n77E>a~DǏ\@sU/߽UoYmm:6%xzVU	0Hj/,۾F}Aq٨N;Ynk82XOUxZ`={7KȻ`kC#Bס:B;`jPrUx=+y~6q	PXe"S(R<
y27pp,-I?'.zSZ	"@ $ -zW22-1;{rumk`(gOtll(  p+;GT@^:||$.U
f̊Td^6؉ZlaӰ7)E)\2ศU=<Re8-+90{r9g֫eu:7Ukݥg(i$d > 1)꒦@!q5voDiڴmx1\iDp>b.Mm7BV9nNLz^ZZ\4o B72'@h'iOd/5 Hdb+!w5eԲ
p]b)V!dÍ[_E <A@)a&tDiJ
Xӝ4PQԸjץ4r4^ӟzc95ib#s=PuK4\G 	0DǢ -!ڑѹ'3_~$3\qLggn͕(Zpnw>O-7ykVW}`"5v0p1_Nx=x	P^j _N
X%m@REgBZzC㇥'j΁aM:KᰶaPfmv[Vl3Pv<YIt^G['+ĹKgagaMrw
t@X:uj!#tw dTڄtZ'.;橳67$_oIS5f[y7l	Q'( rk zvۭ:XҦ(p_3^Yl E9}K
%
֪
]LJ?M䈇*Z٫2J-7q-U|Y$Rjq|#CK3a+:iwlr ;gE&~#'\bzj!vJ9Ҟ*tHuY\5&Wwpخ{lYՑ
ݢj0 N;$GT0W!ݹ]lK[1-iBjd/=\$G\ղ3ll"iDOE\eMRikԄn,7spDU~QaLJ[FIp9uIL
:m""@Kܠ)dE߯Z9R
w߀dNTWJw>m[uf)Ku mtuFV
rϜJ!YUVz3tq\ [Gj"67λy,y𯭇Buȑ[r^۽Ƈc~#5pBM^픟͹!ψeeߣ6dZ5yZ@Ce1[b"/Q뺟DC@*-g:ڇ?y=#ZYI$/>ubZVH³dНXcUTJ/>eF|e$^RR^'}Y]&w
FkbסA5<V鞦SW') IcJ\mZ
c4Q Oq9{:TrNeW╾mc|4җ:-%C8]zրSb+~mIWmٝ<q弸*7k|Z=^b8F"P 8z7d@ٶ<y@-!auj
wKϰ	@9	E)5mr5٪W[moPYS{6:)k;v8=ao+ȥldY>j5+.[>\/:p^}U9/}mJh	JRʦ=.[<IJNr
*%|iM0 _*p`0vTɇG)Oz#*/Bdpu$m\w_@z	XAsQ8X#4[ ,MtBj==Mp
(oHA
YJa~k\RJ=%jkAc]zn^e!8rSy:i`Y!!$=t>M!o1g:bo
5{U^ǬLK>x}㳹UCR)ȑU#ⴰswpj	G<5?<XX "ג24 RDv,_/ \Ttk;%^O6jq?69zx%,)X55Ϩ\l=LrAJp	Dny|c@Ѯ̺p$|#Be{Oq" s-SQ4V\h$$`ss XUɠgMҼGC6]ּS=!!sb>N
ڲ+L3Nj$OjTvdL]bf
_a8ŵ'ۡއ)៙haɯolD1bUB7]q]봭_1_ Agc'\7t]ZtW:?o~X6 
}õU
 ;/   uRe7dc 5;>|Ay${<[s{}XT'k4%,m΋'umdzrω*~Z:ғe'yE />nSO?fI܃WpG]ٻ׉R:$[iBN %(`!#,<UPmMpOrU_jٱn]\YtquB~_"XUj&+6I{?0F>f$nv֐3pUg5ɞۮ*WU< 
_pPj6.[}*m:On-^l7P7xzVsf}8 .i̦Nx'ZBt;n[T	IkR'bs,CgHwٹ	0栰+D.õ)=6xlns %{vlSҦf_JN5|b<гb>a'ĦЛ=p-x@87˂s{}|لkbn-mv疕SiL QM馞Η/ȥK~ƛ]Z*S4`vԷ`^L4)
S`6U7F.bE6BoŨwߕLNݯim:.[K]KDEMڿefւn עƱp}T0!D$޻m p}Ti݉^'׃
\~e;X۠lv:q~0qT~t[˟Cu3_Vt  m1AyyZ|uӄ-PCo
 }kŗmrP_juNuI o$:L]ȫkk}4n(Vj#r+aZ8\ۭF@霭E`;=<$$7
ں:~RѢpp/ߡ^lꜧ !
g]'Wp2m7'KV;M?˱j~tPZ!xJͤ
^
;hMۮt*sWDtsai",׹oE1 0Un͜<_!I>k/Q,;.]hѰ5W.UHPS~ÙV>B6LJ=94`nݿx
J7qr֕#*(7lD[T^ɌWIr~==IТ5-"B.RE}X.ݴAr(9$]9RD縕  u 0qShZz^WOwrr6?k" ;M@Rk|&wAueKf>9R:ԣȭ.;ig g=Ǆ^Paߵ\VZr]f)7yH!Yg:t*^f
bXB0DQ ir17~6JM_L8̈́R9W's%@<(@-Ν+Q);v ~8ujJHn
50Z_;#Gz0	q
1[rS-9 |\'oȻНQMySGdl"`"s*>~O ݛy.q@YD=ިMP(4h=4GȻ-(l)ʙRgrij‿>UP8k}D"@xbww0o_1b]Ƚ<_RTHH;s\'wUz3 
3u "!5]ΈNVڥ{cUWLnګ

":cc5r9b
*ZٖJ,/p)As[.	K\r'c?xٿoK,`|zڍcH>)7u⟹;ڝǩΑj 	֪B+6+":S|#4Vctݿ֮e,^_MCpў'3mf~,=m$"OCs?AOw%TNh.^<y\spӣ*$Y-Nz4z!tM*DX ?1O˻TF1p5%~yJ Ռ8{
]TRgJد
5Qԅ_}kĝֽ"|R^KШ-F:CsP8|UxV?@58'kMm0 1ytL{E>Eg]+=,u=p[)(7hfCH as	帬D)_"x~LHa
٨q$.k9rar ,BnDêbE]n =ή
ezdI Mjת]戅۶r=Ƙ'&_vuk*63Z$&w_bM@ JFcM%vU@uK#:gЩ0JAq-poH'떍 #蹫=٭M|#fS;?h-Ή_
J&m)~G<uV?я[;bDa᪈rOmi7C>Twynu||Ug:by^|n59+-jۑG1A(ܜ<}
^K8tL$eyi븗=G-^$#E/%U氠QK]-z/WcQ ٷF+RVs)U&մHtxt<$[vpO)W2>P-ɪ#xi<)Q?h{Bۙl`=|1Ѧ?'Pk_ MDIr׼TGBl5pWa6]'a#vu,@'}t"e,l_:'ݑl?S{}..樼#Ά\(L@ïy?N{Mb5Zrx6`g	T9ܖ0@#(t
p89ܩm
_Y <c	"XN0E۹b˅S(__\dNPuMIm o}텩
rƨؙ.[Z	 Kx{l-Og׮gJyzTK:k?' ִR$|F+p9ztS'z=5p_C^\ȷ7';xp
__[
);d
.M\9ZyJ]s "#~?
(n|RHx])ڴ_|F&WXˁJzwGݸ>t&)DjkjpsDS7 D?
םyYKoKSO3ԿEA&*mǔ|,~yL
+@GG~):]ͶEFp^eW0&v-q
)NB7r!Q)b1+:XgSߦs
g<jxpq8kŹM%+an>,$Ӕ+z ȁPm	wZޫR
⯲OlBsݵRH?yfl}6s>8ێ MŃtpr'v8 w&$qz[|%[$4y?yCqhT
|0n;Qdx)Ea~r0A  q:ȻIڇFwM<zjN}+7SwYBN,6x	9Y>қZ{}PҞjԾm"$a+vL 7oG'pq=No7RQ{Ax`f*s>aީkw](گq8=8svq;
ojkv	nϸZT=,)-;r!<_]Їp*e;MΑ_ΑjdXVYޒ*][
dGDEN޸mp*&Vq. ~8"ts	^u
\
C8y􊃢d@/hۇI\	or
pkTx]/C{ɒI[mwG))T钂.\{4#;V- R`k
Wp8jwE\sjϮ-ܖz4rʒҥmIqWd&;VT,TܱKѝs:u# F;f@u9!giZ'B2\r,f[9_%xL|^9+{uʹޟ'n~^TetX\b߯`@2E3Q0PÄL4>Cb4"!2eO0׼r	}zx+pLTu0*H|84v[8@srǊ=;e<5<t5Gm^QT<$ظKH"̩[	rj΄mÉ7)3Gl W'GG}u;+ϷC{-W7LWlOno'ͮNy6Q~*Z/'PQxy%djS9 k' }&>@i<FF7-G^~	%}5"=m} \  !!|OJC>rfű2GL#W-N5\<+E$u1ruZ1=
)SICVygQ鮷Krk 2_Aim1r֓kuj!&W͕8PtV"W8W!>EԟAtCq|W[Bdv.Tٔ#N嚭x]
}4@4pf_1<#й_˦/Hu+wu]I)yKGH@QD3Zw	k{Q'?| ĥ^q*4Rnp
WU*LE8fy%v5@O!<$orU~|!oup-i+\MQ=WɳŌBX]㶅wX!.ƛ,u|{rWH{B$n%-i^/&2'En	z~T\_ &s{vޓ+qo&2\
Xh*$/wXr\f@~9rƳ]{)|5`
@I6X#: afZp:t2KO<
dvK+U[wٴI兀h⫠3@D`y\Z\_uYuHd+RϠ~TB}y3L`[Qh>ynA}3o g>{	\L"A`.0U\0!TR<6`˝nAؿ˔
y .S9g8we7_ӁB?uҥ7P[.VeT'zuI]dSVN5l2,~>Q
f1DCjCq_)nԌ&TkϨ؆v5ݿx[YPu^祺:T̸jB߅Rbn9X_'n?rwʏp֪-3CpT
Ě"Ejk{+?sq@ٝ3MQ(Vz5OLW!9*ϷE5{ ŻtZ $LYה,"7Q Iw\+'oſy1W!S&wHBҗ'(49ζ݌v>|֗ܽd<)9
bz}tX9'}z̺܂KTl{ƝP`S>%~Gs0A~-[{PXfΧGڇ3~ڲ0`O@rhm厖
jA&xB9DnUʞ"5 \	55#uMRlR=:L"Gp>uؤWT=ѹjU+`Ǉ>Z%=gC }YRH$dMcH:=hAjaRFwMWy:_>	 w=Jn`_`$lҧקmD:U''9UEJ,T=u47L.|5|H_XT}]څ:E,BQ=k$^<Q;ExnVq!p,BN[Sp [>
7dN곧44K\d`!,5bh(Y|FJT˧4l݊Rդ9En)@]bMV	ojo֟X/|r妩=Rբ<Ǜ_uti\
=W]0aGOZMq_;tQKwcؠ"ث9;ۿ.Dv*O7#+}
"SQK6|\|U%{4?r.rjOqFM0h,?ͩ;$(Mq{es a<JiǕ=hI(+/}B;/	m׃h=`]Z~_]pH|l o?Jhp쓻)K
d^Jm㚤SNm/wbN$rb-o 8 fU4/1f)4.SH[!cdUGk"?}I`,aV-K\a&t&%ݽmhK**ymk~'JބI4
)m9Nq;?l[ ȣT}!ym:UGx%:w)I5.YU j9BẐ "'Pgiڃ|̒2S0fJ~x틂Rcy"#l0U(1_b*i+(+A81Z9t68;
mX뭀+4Eۘk){nvߣ56Pweߠ]nC_kqV5UKP-xZirIf,x	(RC<
TͧH8zE׻!*qftkQNU{Gx9EѨN-  Ŕ肏F=QQYz?<<>
~Sp@K!A9-ⲳC~FY{oQKli+q+NA0q*ݦ05Cҷ}qtTdPП(bio&μ*a-RˀINKmrqT>ޘyyUdCF뼷a%oq4AB=椀1
Y99¢E`RtT~ں@rzz_GlO}G:,{FyIzw;wuq pSEw&Kuד9ı[n*yZ*o'C!á8jtCʻb]!T@mJ}ȚxH?.ЛCXYQsO:5R]'WͭnE#6kf)}\WAV*}Dn=9Ωl*-Y{aܛ'sZq^2lECm/o>\?"v]c˶ӁD71.&!+on=
$mEC(:C4nº.ҘrpK'.uOӞ{.#lthF2y'ai߾5.ƍ"Wz^Mz"g
8bA8|jCRjgϡ[ʅUzGֳ.UM18%Чp,CUtrG-_'q'u#.^us/Bڲ0m{;0暿1OG/^-Xku`?\0 !x
'$֩-@R褞I'ZW)FwR|fIPR)!X9]$ho"RKjel°niSH3\ExQGVge6U.[+Y+\LQOXN
gяk!*Mhc|FAg/{2\x5G3ʱkA+IH#l iFiMHf`utbz?V`AZՅٓk|Wqtrg&rQ,.CǓC,MuϳWd 9i2ixfzǫjza@ {e3at$ uN)o$|ס$NnH!h)e w"\vXpF㌆?iO9EJcZC:|6u0EC#MPKz~n\B,#án}(I~|φs$ܺC0{N
>a< R,&*̦B43}?;̹ʕۭΏn3Gv\I.Ouzw⯞ܬG^jt"z@npHPFNQ!>rlhe9ϓV)Wt m?ne}Ӛ-ߖa~i.W"IZvZ4=ybo5m7rU~=3nK1j|  (2pғ(Em]+b=>6_*J&ZWn`H FHadht[Sk"Q|&5kuw_lWX'}BqC<WO׏	1H*9%ogi[Lx<w3KF1JbWRKMK"' >mө{KdkKG[5<!Kzzs-_H'n's@Jnk|Pn-P WfOz6qͪ4˽Y8.+D$y}ﴘ9~'HjI6ϭǦ;#(WNmR }vhNXU@AT;_C
&ua=K9^>b}78K&2`(GSd#Ō[[Ij}0eA= W~1oѽZEA۔$"$K.ojx&e:b)K]2\rO";":zfMCZYAO
Y}+fo]R)6(@쎣$k,b/Z"9@d
 L'Ylʵfh"(VJ}آ.&֪@Rč޷ڰ^yN eM
G>jMTm?o]ݪr]{%q4sȉoL5?mک]Gp~T@u؍vkMS?vC;8jz1&?GZ8	ْ0Q^?idJ&#OWF0;Ont?=gUs8:njBK
<2COށߖ@NsExr)lK_oO,SvGq{m>>nsaX(Yמߢ|< `K&Na@29]_DfK9:{8&N+Qg>yj{Mۗ͏\IU(a
!Qbr4jjO5҈VWwX^QP"laKCﭒ]RKO
28q$S>9葴"me-
$?\nK/
Pc>iFq=sB9J6
˅$ꦷSt?ZjG"`U<7.Bxy2aZD&$6}_̝tosע h{.:BǗE <Z_Ξ݈JB5dZz2\Y1AxN7[
*6ݯΣyS8ݰ!%zy>elŨenA鼩hn7CZ<Vur>nQU
pç  /owۮ9}M~9@&:BKSx xi
wYnA_S-<T_aP/SLł{:~v足RA'Zrg9=ѱ$mT;dLHCK +JXo ^
>d8=f(,r:1L<|sj\&n܏ngUIa?&h!6>st=J@G^Gb.]ѭEK5*wuK.>N-Zu=c*;a.6visUk1eVa}<1zPMH<xϣ.Yj@Fx73.ZQ+0
w;ҾS0ـشM[~\J!7Ws NbaFuZpq2>VxIB'ikiZ9Y.<T89,*4o>@Z|p~E8ˣ8SJzqTrN]#Qr-#UGlJm=94|:5vՓ!/nn.E!Lt`[IԑD<&wxbC1;$8tT;
>j-[g@!ں܅hj[[(ݎ:'Qz/l'Esc>Q^fɚ SB^ÇveyOSj 
4T03Eَ점
gd~Fϕr-t:QDoP_5y>vz%o.O@14U7y+.= S2p9itvz.*yX0nd[Q}W<i: EXuxB"@$3Þs+p'2X:b s H@F	qG~Bܾ]p>sZFΟ */}Vx&DGO5k׽VsߥBPz~"Z]
93NVwۿ
j9Y홐 nxu3 3Z"&ئĳC_B`rY$xߌw.WF5H8<-[Kx8 s!G_/⁮YQ,zM}@S&vsviKqBڬ|0p/檎3«zeV<RWE3k6l)/\zЩH\83s(rIqkJ\jڀ๫rU^ 9bUGiә%[n>i䒮ܑ_(IWt^X+9)</2y-{{ȤߓwT %/e_vYm\>y+an~ӎ7g]畋<mAgϥu"=-홒eGS^VQzǨtP{[4(\軭QpVj)EB~-]ZV&8iq7NuW
NcOKo˻3n9շTr[1HN|L(9$}yζVxHW?XUTSk/I*v<՚ `Z/(SeRUr~"sY(|<W{o(=Pt6KXQ3	KJ>{yh:2I?/7 -}I#7S`m?'dJv5l;֥-RBF%o7I77p:Xؕ/x+w`BI*'*DcQKi4GKtťiy,}nIJ80ͅ5M.ӡ3DbY*A`1.p'BtDsD#;\꾈YN많lx#\鶛b,䛪v
M%X"er5,
!\
=0g8.dvӥzYe9i;WM׶aKJRN;E\w,G~@!bOo߬+1ΛCP-ݯǥނjanup+@p!npǔk
TA=
r%r)5TQLIH7U6tpa^`PSS2H3aZo7<j @g?[0-窞Lm%R=eU mCU&  VӠ΋rPF fͽ6+$}7 ޾-/Jqqpa]n]yF~-|OB7pKw8*
r

_J*qmZXct1f y*S	[nyW]sY;?z<t:Ʌ !fy-|fоK6˲|Tx}>٧[݄FKr<à-7R_VM{=F(ʹ}^+D[;ʆI;T
|ShܠP{lvu}MN;f`fqʪgpgVC7hc]%^xˡ7f^ݒjg9Y/U.K#IS
û[߭ؓ]u,n6 :.K~QN BٴxmIfU-9s\NyqP#89~(hF{ۄHԴ{IݐnEu
᪂},W-T"('\aј0O,|,(Jr<"3JfVUy	Ts°GW4se9ob}*n
=	+lG>[Uu:p?[U.X\rvRS%ӊ7U!~6+RͿ(
IRAݷ	;rV# E}#<m.n쯊AjFy>ӒEEn{&;+
RT4aOfc'<xjta[)@O ҎuX9xMS[\48<h~m[2JuYhs&Aq|a1xOxd$p,)IsHs`c1"A  n8nYk{cNtJ$.T^N2B"ƼS8s]f3tՊqPy^>$W|jLZ[J[de ]~R`MM+<d
q^z%O B/v8S?٩N$F6ſ}@~a@xؔrt[%Zx{֌|(l@17*VqK
f[MǝoBN8avX Z[JvA0X[· QM Ud%K%D Σm;{YC;X7;-B)v|Lsײ.cV=!,y9'p<dz
},Dˢ<j aCgq(aI΅Ii*@%Bkd
T~DӎK?]={pn:8]zvɥtHD#wpHɖ.Mc~Z˹M|<Q6`tpZGJ*truP	)jR`xP,ԣs'*RYL4L(:t(\:dT#hM89:Y^(),s,NeS=^44ZYtSmB*:N;11/kx+B	'9ݭ=m}M=]Ijily;'G0VG]UΕ ~̫R*LH.9{K>kBNv˷muZsy[cñ|  ,f_DOې>6 d\J͂ToG`1I<-sgU~Ow~bTm.iyh{+u)ܙ?RЈw@$C*R֐T\M2F7Xbqp1tei4
ugՓN H'TRGd<]u,9ͫ0	i@56ȱ:0trM-)|{{Ȯ; G_Y	q1͈/R}y>MY$d:Y*6^#E:԰DJq֋Sx.TA[7kx`vmd-į0$:G^=rvא}f
Mnr1([RSW
ulH]K۞۱pDjǡ8T2ڣ[X\Kn6r Y$	ݽ.<YN]X)i^y܌/7 1h7ַWws"%n 2_AuQjR&jDXTgߩѲ-OV%}vGqe8 -Yuvm0AWZ UQai*h=97 t3:	4ίy7&
a/)luCd]vmtV/Ҋn[\:i~\;W4Sads-kS㨞-vsmWlIف,"G+oNGEzkr"؅N(䨝O2\?<q΁| FɩO_O~ U_#яJQW#K
MTٔU,jiߨGLe6z}NT.-y FqMwlfP$X{ڲ2`Qu/Zq4EqP.9)Ktz8\RG7s8I&|<})RK{g ]>'n<g;8b) >񧸤^ǝ
vmظy$9ԋu'رl* pӱI65`K%~a۵`(b<Letoa/-n
UYT!:G$FOkC/֐vW	~4V+&ːNx.t)\3wu_MF-DL.xp'd%@ʹ5T5wsUÉ2^ 
}Y  $>֪	&gߩKiڙtL.MރNUZe	J|đO@pN< nMU[/<Qb;лn_ν=<Gc:0qsWq`MM:.6bu-}c]!!vܐ8Ѵs:
z)=;_Q)>Rթn_A^WTLh2颺=+uBmni[^Ҥ
WʴM`X!Rp.dɲg}-ЧJC%K-gx:mM=
I`xj&*H6vGmg4	'ꉑ26eȊ8Q
1}
-
mJ@|lٚ|?:ssN
qKʋ<Cъ{
3!+Xgh3Tk=!ȘyH~N6U_хT ZTxcST7a9eMa:]sPW g(
;#OIH-{eLU
nr=+u(9B]wI`AUsq,sLtԗz IT	=OԥHN^U'(nl9cU/O?2"XHky%ܨIKR5:pG%~ſ.фG~̩G!2qfgmmk:%(rᕽwJ"h_z=S =t[ݶkX
!İ
M̄nӃNFwwyA}#׍>;ѿ  x@ErsGڬP;
krB.TCrj.\&'y`<bPF.u\
*h&M<y`޸(V08y"YS ƍCC>]uS M
|vk8.ƺzC;ubDͺhukث
ye$f]H/[a":ާ
tL{ꤳ=UpCP{8I8T X.JvF9@
$7 {Q}T]΍:\{o !oNiKΎNPak_Oxah%ߚ(J-"KSy{
Pok}C:D߳d
<C%J{T?т?Ԣfu
6vfE@hE"Ѭ+]ۢw'+&$6;fܮaa^]	R~M0)']*Vi/VPR}4ߛ۠ä
Yg`	;z
]
l]k">ER9Hί)vsZ\  >Rt+  -ԕ& &yd^
:0f
 T
B主gZnU%4$Z&αW.¹hf匔-?,b{;.ܹmtլn	S/㫼Յ.sLzbV6p#F i-1 ^ӏQ%1T᤺iӡE]T]VF@?YKJ}lĜtqOIfzZD-CGsUn!˪\*{a톡dkm3n"vā]|{*e93_AH ҇TPsIVpͤ<88xwVQ
gSc{	"EiEi*gIYCpZ$h[}p9꣈L+HctܲG+"YaVKo'?zv@z
tDUVK~]XC~,TºBn,sxZR ؔ,MkԜs [Vr<g8Bmp-P_TFҙo(vW'} gEU
~֐ϳ'KnVk.ꫪgCj+p=Id_xlac
rgC<fqmJlYmS029jv8q D__L=f/!۩]V=lhJɣm8s[&_
yW~U%>?s	gno}oO(jĲYrx*W4eկm_
Kq
I[&Y^}⡨ao%:W2ҐdYn 9}7~SpВB0cCWnHg*PO;ר8&6SuaP2ì	w*ut4L|JsᮯVC-ԉa6xO^O[*.ē/rV]EBB^6,աAxM.<mpY,Ѿ7>[H8k<]Qm	O)wz<tw	S9槭/<qOWHD}$37@_dKEk.]jlf#F6
!''UR-ډz%H|!AÖ
O;o#-S.v/P*֔Ty!ߺZo;wX3le M9%8ݣ#%l7nrT%S/܊5L!h!nuJl[J靤v ~Q
!E #:q)_;n^xquXgwWskѫ8IZ|#4=*-V=!CwOQedټN˹oڷjԽ<%YHQzW҈ʜj%Td>te:VTޙӔ<rzITU!X<2!
r%->V^"GT𛅃N=j%ibƏT؈,&	TZ:sUok߷lǾ¡+4A-~6F륮PY@HcqB=ᰫ> 7ZˡդL$),sgyUC.n(Y	.~Snɾ{2~{p3Ġ5r'A'fMK_MHU #w9hQ *9y?Rp6.+YGoX#i2/+cOlw;y龮oO	Cш^ӪM⁋wj֥H;4NƪnOC޽!Uwʆ]Q)_{bk)*
`Kc{H^:v+oTYT\ k (V*۽\K_ T(eԷY>	n|U6(8j&pO/69{]hTN{	[gx2,KY,ANm9r~+"l5D۹N\18^,/إ	o8әeI#AB H >H%y=U$`jj{XAA_`QI	F\s;[}#N~K*7pBo&k))<ۯ!r2Z5i\z~ye#.rouҕ0/å9_ɳܣ|T(I~t큢(bZj@HN #Mev	KŽWf_ԺUvBF ay~ ˴QVwf[Mz^2iДJng#['mW\v|Vhd{(KtXpTWп:S\@>9XU櫀vg==]rݫIґ]}ۆNޟJح@@;@SvsZ0s(L'H^uI8Z$ׅwYH51 #Dty	R}hk+7\R훼}(aHٖ-_v6@hC?&3 y
G尹#	Mh7Ի@GkGVcL9d8RI'58|[ǿJM5xu鬂:+tW˓xDgtHLwPB.A4?Q#_{z^/uoUSe=&CևykwRGP߮:jp#_є)Z^d\
s}~kGQҫy|FktchO|Ay>]x^~'y|@T_:IJx8!ZUrT˂	>
? T>'
׏vYB$L?筸ma},	2m*	_iͰj;
ZV˟x;zng:sTgHC	ZfV^1BTҿU"kt꼭*ag^c&WvG,jXpwy*J,ˡrgȸ]SO1#I8sKj1B_гUG;"/	nHRhV$?}V$;G/9FؚJKĲ_GqJ(84OsuUleIdurxU>(;[_sm=6]beu	f
QU*+ a``Y!n#uټk,yTmyg+#9Q|4ОRrI#
rZn-`P&W\W fk	P~ms>_1&Q,ҫJB|ٷzTd˕{"NFhx<ȸ#>9ia"˵K\[~L7|e;_}<|6a(Ky])~h_s@Єɹ~n>eev2v݆b/&hUF	-gnl#ZpmC`
nزm | Khmf
/3)yw-kAҮ*bt4qq<l
<@
=t756P/bUR䬔9j)x "}@zu#FFg9@wƇӧ*$}y`kkz|yd8M)GRۻyc7Ezu@r5#
)i	?)jg¤^HzSC :
 QfJQ8p]t݀P;@($]D}|ϸ[qko27Ϫ*<k4,$%&Zd~4_}jC	/j	 u8OIy FN%>:v'<B>'C.Cr kۯW{2
]X8duض*mٸ;!U5o~3fo)U9ZEjVC8K!ٽER M*oipK*C	A溮#ʑ%r;0t祸<2i
U"W-Y`ϖFm6hd^LR ͜Dw[d1OpxBo j>#!7u&ʧD=Y^KQt޷=w]ܭVq_8JpsFͽ 
QRkgԜl@FqN'Wz̕ liES}}3)
&L#ygcqc9s,yQ*gP_vd=%ֳU	R6+%ppt`Tn+ʞG/LY+@N~8õk;EVg*Roe.iwJzD+]L-8	$uRLU FvKys"9rx6/Z }.Q
qy/<^O?et[(oNj怓Ho4-Q&1BaI-;/
n:5q9/P?^S]
WIM'#U6qp^մ}̹oEWيV{8&9_'O^G6װg](),hKo	k1 ޣ*r66Yyz$,CL8U_}@Z]3WQ>qvYt%1ϗ4b ҽUe=
/y_OՠA$Yoo~*C|MK6,NJ&uUtm<*r:ϛ3Vj\rqDGQV*^Zy_`[-CSqDLr,W'R1c3GW ^-)?:qx~/8<	%^n fYMDxegs>*ҝ7;w_!NP+;:L.(jA|Rna9hꠧ[
NFR<]t}h!IhN3ϥ@U#0/fF/
sS#h1XN%x3ئ'	I+EKbC^Dl*d;J)hzӆIɬ`E@O/: ƩeG1J!QX18kqI{> 
*K{?6_:
sA/`TQ@^:<C_v+}	CGNrv
t>r{S|s{	M nM21ζx+9M>I:B*1,ZڱP{x~Z*𷣩tV;㶶KҙV-iHMrׄ]q'Ck`85ŋڋ܏5o	nG#MBp#~5 T%KZugWuE˺Q)C
pu)^gq&?QٹzTTL1\IZ##b*&QL~T0#l>/ٖjGjw7L~-_kQHkVN,Xv09ҠV{Kud[TaV$䩎`K6e8S9f!K ]_T붗˸+ޓ<{~.PZaW=]%qZ2تCi<jUg^|κ(*־Q u F#э	9t
<#}Ƞ||[~$u&pcSYԯ,x\KE+ZNk]؄'hَ{v׫jrVo9+el$IEW3EW`s%Yt܎UFx @~
 @}^mwLr7JA.~xCx)(L7o ?;.9$[^>{3P&ٵôD^TYaFU~!5UM-vךbTڃrc⻸_֝
\ŏxFq}*ڭ%;(xs׵'XQW < %#EQhZ![#] 6WUtŹ2v1 It-:	{|Yg'u8BpS?~"^bm=<}@]G$[OOcw/Ɠ.ʼTl_2%/%Mv@Sm[p%ei
ʜc$ֿ61QGsPU .C
;j3rʴ	g|;lo҆64kIFj̒{`P̺?8x}菓W ~΂ĭyP=6?z2Ңl'ke
+$K	BjnÖJ5
)H}NnXEwXh?*Dp/DeHA\_w+n*=lr$K~~GIM=VR|0El9 |adŀW$e	A
}|^osdJ 3:ׯct[ܩC&g҄'#VҜwY<+]1nGHA?䚃׀Gz4@p!ٙ(]:j!#
ҿM.Rxǲe] w
˻Hķ5m"	<X1ר.:ɇ7!}Kh7t@Lp{)1 @ү@dal+BD~29T0()N:tR C#nGNgtkު۱#<cqs%n
F:벱X(f:iv\nnvNG&?by?X*}\\LjaAt~sg
˘ZkLw=jHVZm=O?9t[b[^dsNTM8"Q1Xe!Yg(?zKr	xCi҅gzHZ<fҥyKP&v}Nݺ<
9;aXʠ$_7c;)bxB'&7re? 
^n6s.U!Ϛwr& i}rt)7m~w6I?U ~׃#үg.@Un<?{ZH>˅(u09[ja\
`Twϋtz۲oɕp&w
uQꅫzݼވ$?D@
}u<{pU̏tru@8_ܤVﲴSފfrpJV`mxC ц\~/	I5̳="?%pVӚqIʕG tu@҈}ȡ"5M)M2,&Hz̃M :{[D۩|Gٷ:$=~kQw;ݶRh(Xg#Dv塋^JtBc.`kV7ޟtQw)fW_ܔ}ߊ)ʼWoTI!ï'2AӉd_#u((T/+u\ e1JZɈnshM'>wS}n;2.8nt=n~^vX(AoL<>A9$=؜"I`i_>8hoT3=
os(z+c+tqtjOKf=d wPKDNsvGϧ
V郵7Q6fPY\'an"BhqZh#Khkg6:9b]UUHfWVJ ^U)
xwTI&#fG*_{@4׭I%;߸gb	~NIrg{lJw>9Fxа !%쳖24SNfrE_o)?{pzV;>>D^zPWAϮ]2:pڢ:E8p.F&j)L$:`
 "B5~s_|݁'R2BW`S5 MQt+*BJћEylOu&Y׭p8<aOzɼNeXmrXnrT._qլ޳:f1-@sx0	Av!L*跣3F-)7OgnCDw+w-qɲlGVGQB}ΐ/yޙQ	"sDX4q/q:ya|]?tq{k[!{ŝrd+ǖm .i2!ٯ_ᙯqy7 u&܍+c?IY6n:>rp4>p.*Ȁ*#a|U=kEZƢ_5hRn+{@#gźD}xҦrX;BWRKC@xa*ZS R/!G-hykLqVa>j5_'*|M1܅4y9w/WgtI|J *n%t@y2d*+/qhplw?xxȳkSy~Gj$'
pSCɻSp=t	r"A-b# 3W;Ajs  }_⃐>@Qm%Cm(q$\@7h[2bArBe(y*6]5%>0L~}H$ k^ÎQn&]rFZvbЋ,j*M2M5ɢ;vor̀j>NNt
|pA<yC,Њ?Nw#{-U|@
_A'v#ʄ)Rw@P,ĔRՓ|  v5XOtgI>#a_	{5ˉ:}mٖDڤ':biU"da)*(tF8L Q6KR#p\NH\!	靖TK}N='F:VC-+
	lwM/K dmETmF [-%D)$+*J|M~L;K^&HYZjTs|*r:RP V=5nR=<.#Rd[Iv>>b#ƾ\R^zzVFR\", c|4Oz\y^Gqm
8:#N{o$(G8V%Ys
 .o͟vRԔI:.ⳗU;?	
n^+ w*:AV1\UH]f_0B pr\r՝u])F]'X?:]VF<wop+ܡFf ƯC4KH ҧT b9ޟړ3ڀй޺ER﹏nr1,ֽkCrr.'Y8=rmvf~t&KS4XOϓp5383~<odr%]v2x}E"2am @.i;'R*R0kZ(^BɊ헃H*Ȟu4h}9OUAY<h{,v:䡙F) *23+t (pJ	p!!9'n*K1cІMն r^zR#.45t{տOVp}E5Tw.51-<+Yɯُ Oȝ7~*01hϷES"Yu]Q;=l0b+6^cXw&\5'S@XW> q}} `&(oqVz1nK1qW^O23Z]!2ctHA}0Z[8XՇ7ISlEˣMGj󠝛p'g/+@^[_P(8-GMٵp+K\'<
xn~oPh
;hHIǯ` $5z5 pl3HwU+F:UD.I#@8Y.8ғ+E.\xtêm[Têoo~Bĕ;jfH#jqRmVXNdڽi>&1Oa
8YX(a#APFBfn;Ó>Bl2I${G.\6'm͢e#VUjKS5Z1&jt
Ǹ{l7^y-\0BѨ!\:t~!GnHl{lKFTjtQuSLu8Ж\d!m)qXz<.@LBXōMHi۷vġ
7`
d=nr、kѼE
Nv=Nu BL.]8tgpyv,- Va_cKnН>qK 뒏zѾⅣós
Z
vKk> _Bx2~UJ-~ߖ7h=\:ܠ#Af8W;Sn}[Źڇy\tBo9 5ָv{㭍dDY@ȫE'mjA~=jifvK9N
TVvC>S$~7hM`mh,}
{أT	%ҁ_l.7toRV	0 r ʛrn7M7\j(V+1^ӣ,:=BwW-9@'*e!wgvɠCKb1g3zOs(8̹bUldio\RUDY1&l(ttBY7Wϓ.5]qh?_E);{ (:{&n.1̞]QY|n*j 6"5q8z ;!;!##J/&s[
Gu`os@m9Hِo*
|yvc{@^Y/vG)$𵝵ˉY趮$c Btx vwyBT=:\VU_b%+r@78
Yb$J^t/&'~}& -iĕ0O7 IpL2S@ʊ7*Y/M2>Vc8@X3:
ImJ.F&NbxQZM0bu޾
"U'M9J3ip-r~217_gVd]ü1 5:2jkRE=Q/%;!k3W:'yr0{CyDz<0YFdGļO}ۙ[=>
QI|roN[-񁐜||lbKͳH\1~W4.PvZ|EXU̺pۭݢI4MGWy ݾY:u_>*:zEɜܼ(wPsdu~xh~'.ܧ
_kz}&"J:ow*?lګGj6ʩкg)FS~P[P z Q ,a AXU<"V` (nI'CS"u]oᔦ6|j$}"]b'ɏYs[޿eJuyWG?i6#/YL=
w$[ru"T\"ɠSI~ M:nӲP7^d#g_q)/6FXP{}>{Rtq΢B4$}yu&RhW&ذwK5k{'΍Hǽ~j?@AY" 
;>'lRY.GV@6SڔppxXz1X2@IY[mgHNuF 2i7`lQ#D$~J
pkHVds	
6?$j5
GA[	"urIBŞ4WkwQzxJr_!>qbւ[KtIG
̣=~ղ|gf+C; ׂ×^![URKf>gk(nRuU]PA"3qL	dd4AL(͏Dbd68PH6|%q\t!9$B
}OёU9Rsļ-i] jka7)$$ 5pX]owpB9aS|~MMQJN\!eKaG%+:\(]sp]n}6~C7as8<δTtzpf9`J[vi9Nlӷң)9+<WܪqɳK|2|q ICQCk;s(NQحpw+T./GYUUm*Z-ŉK&
l,RevT}wh#(GyW=C*CWp^Cuq 
[\,9ҽmaՍn'&8xuM6{RV۔1w)ɻqVI6вSI$*}^ʦᨸƠoD8O3fòrT躉bz<"nsC'+6PJZ"VfgLX(Ӱ_
>?eg~RS(T^S0# |UHJrj	9e5*7I#or.Q7!󸕮`nYyc\*/	+Y=S*Ddת<DSKMIuFe%J:ήwhYpӟ¡=6nrHAl~|ΟV& 2WvLŶեtEJk#
y)W^X'[mj +d< '/MJ+W9ڽ*~[}K+
rZjy` g&JV
W&״'{}0\|4n:9f@DxZ<ΣS/Ŀ h_#JB1\/6]b.nkUr{6hd7ͽo*\O<LrĹԍHnkY>n.AU7N2ܺ뺵hw4c▔_VD>{Z	Cslݎ.w92,EWb{8+'hq|j+۽\ch*LePu̵T*j'nrʅD ٶָJ#JM3i]/q'Fy:q&ڑPCs9wer-_rg y^T(Ⱦ[VaIKWEOYj|tm)6
'}SDV &$s_v7}ޢ9璡MRi@h8H[ōi^e/m	.O}CM?tҴdd
E[0kY[}ri;4vON	\*%#Bk(SyPxzуNy" \Ď³
rpњN>c}ѡ
.H۠"AQ-3cѷ!޴8
I)t o< -Cý$nΣȵ+TR)4mB?5V5qlr0'Jywq|@Ȉ`"/MMSnQ[[F.o5_nk[3!CΈ;
]d*E-w"{I	h|9Lz93<UN0w(pݗwM}-'4MwRa
amϚ`<]46bPW.xWF%<\ӚN+;P|
Aq=Ec.[;h19IOji)}rG"MwUg	E:n{{
5}EumIL!(r.+6>_1_g)+mHK3Დjly䝳VѺ{C"/sd[s"0L #neB<773hO7۟v&oSڨ2R
U\
R*C{ϏΛ sMĭi\s(yǳ}qhTt̀g;҂^IJs"Xj&W(\g<<8**V^IŤ?o<x:~^gvrUN9'?ŉ-F-t"!+י{vrRVŽ1Pǿx97,lOX.zG9f
ţ¡{s*Vw$u4s98~:+j |
N6$	p
Z
>x/k)I7 <U:
řUud`:_WWogVJrBE]+sg=Hb\mRŢ '<lS)}5ײHN4r_EG.0kNr6ꎣg<oqƤ:M>%G^#(唈9^"<
x>8~>aϻݝPJmSY7
5&QcW`?/3pG'8eSf_h&׬֮Fm0t ug!X3NNo^׭3`-!DgpbfJG7ho7[k"%E:1,%WLKfݎWi=hY*U˷?l{9Jr!TXy^)`Y? p|:+Um1xbGT#
 !^_m[
اM&1V
̂Z]Z>J6Arr7Q**`}0o~5GrE	`gL*5/Mwͩ
G7P-E?TmprƬ|[ϟ<N p(<lywVȇڮ#|g`ےCq21e<Wǚ{X/eFsu?N4OfCOck:.
o3n?>ATZ^x>M)࿒eYQ@8(ǫ;i=UVCs#ldsu#f~JqrIoՑv;KN::!wau%^'U89O,%&(u#PQ.PA(][%jS,ˤ0Drxp.}|mVIIWe3D5=@DUz@󓣑f ' ,t9ǧ !Ъa
x~cwXa;'ls5|~>Gsfi6*O[Qa] ([U{,3OS>"Cڃ^ W(4$&vi"ySx)$C	-f!~- A!?[5QeФO]
:[TS*Q.PGT.~8.;+OG09
h[Bvd؅V]v{qpX#*T-<
nG^әSvJl^
X tdjEɺDIfL2\uwOxiw0Ǖ)NJx{{o0Aq94Y".H6ap 460]KǆƎM-vv^.ͩx샕hJf*h( 7B
}$q
_
7
ѕ/S99/`Diu8j
+N$RZh/&?y`V>X~'`Pc׋
Md"BQt$<-{É&y@imMἃPT7 XnT<FR#5ҪrkbTǶv &DAwhmu,w2'-
]Fz z|gRY`'"QM@x;pC]"%wnS(%O?O{ԫֆ憣AIBTڼt
)wg(C( |C@.f{/gf'#7t/kJ3f>YSǸ*?nuJ!L;g"Ρ;ǋӧ]"r[
>tH=Wd-!'͏8Z`_rdQ߇HOp4%Jqac54D]\y8Vz_?Pd
( Nuq.I!rhܾxքCB^?It 8*)!;-H.2ۊ'Gx5;DhZ,}^
;. 0>Ȗm>$ii$IY^g{
@ w'S'"l{3.^բn\#s<NMYQ6Rcnڒ
}4iYtýw Bx]йݒ,_/thtRPMP9gEjQ	F` 0idKpL
NpISvkPR{^zv_lk$߷-3n:YX\
Dt5Bk%Nb[t%U܀=>_
3twN{D3MU"zIV^u#DrTv>sRϺ<Тe9d?E~Xup.K\\'>fN3T8vQF=!ٶ*
)@wImUݥ"W V^Eə\vf8	sq8Jü/S^nt@
rZp#0  ՔxNUWk<hQeacDMd\t^C2G_r<P7i05矓=&G<0oKzy꜏,Ոn>FGܫC5?Zݣ| 4qz@b~"aPU ?قXǡP?Iٸnq&MO&?o}dSWK157ݲjH6EEWe+1;c4 kqChV tUzԲ${Q\鲓v%e}UTh<&~74CG;TU0w	
Po.6u7\&+|5d;~u8 H}ר[BkUa`NWPvxwY*TxLgU?n
rOzq(\\R9`sWQkM_<!)KϪ[*yCLp"#~*w՝Zٔ߮WzI!G=$?W^HU U\P)(3ψ*ɗ J
75SE
a ҵa'Yn߼1Pm"TÙY89p
1(VevS¦?Q9ǹTlNVP-zVY'\Eȣ 3eB'3௃	[80j928 z	uG>"+ǫi
X
,2ܡGG+VWRVs3䤢fMh:Ugi)8UEM={wPbowm~9~6:zd1ގS\։/{yIеٔxָݮ+MI9	n?1B!vgkαv~ 3^?(֎Fo[wj7,48ي۟㋼P=e6__+Dm,pKC NF\fˎ- _d =Ee?ﮔf^ԕa!Z}"oHdC^A9s]jn?"Qqʮ$x)'|?7(*>v&gכeŸ8glHI\NŽ(!
:*j/*uh`Mrm|``J2GVЮ4!u+eݢ։rvht?SW?BTmGӣ/gTH7;*AӷdeuD!}h'z|:o+HPOfQluC%קq~/>?
pP#]|.^2dd=n uU>8-:#J3q;T8x,gT8fQ|_E)X-C= `S	`
}HF>k \ґRX/XՑOBW0. *LH=k&ʬKez_>.?W0FKi[o[#l*nq!XQ[<7ީQ@f'B\~? DUSCީC_
7κCEXQ:y@%]z\XOݧs1;K:9hy y-
uOk	J{T,a=F?A1_*P_X1-N	]]V%m]ju
?!W;w_1%6+[8g0?RHI^
e3$
-W{lĲwO3AyDSZ iȥӗJ{E0]'S\e_*Am+_E׷y@Gةd/_=KQ J0~ jAfϜNI2?6gRS'o^M}̰-ROyPGDz
0ɰYྀ4W5 .rp)LL?XTrp'(įU]I8
7dpXג'hyާ^Gp\Nfn]/^AY`\rz
qw'\{
R[*h9<fwVrgCW1O}}=>wzkpǭێZLfK3n≑UKnHd&rr)QUՏ4']=?ddRIΜ96߱>M"S+Je!.b_,R})B#p6,HnOޭIR sO܄|0'7*!("tu|);I4Q~?/J"J(YQu
M(yKMJ>qgk{EbY-Vɖ35=K`q1>pS	{<<v)GAJRj{IT?xWfQxJ2(QOxU;qZ%(GV5`ߚXPyTqj/d}D%>pwdacMmo.srzq/X=Y]-G!?#g&媱UQ`8gڋj
3rǌ]wKFGϡ;n6R&QNͿ?["&+>u

&3_'KwT=$_?!Kų䯺sorat-SYBL&~EgR{xcA*:r~SnιbPK"vRW?7 Bum}CQmۭ"3ERGP{Xωz"GpKQc+@#):&d1>pq
Gz5kn 
F5vM28g=-w^TtM=j,Eۻz/W7COj24jϱ48찲_&$o%
2'0xʚ^ؓpKBn)I!'uqNO zς8#9DH<}	B \j0(A.h#d3wXTܺ_qX7e;n󸬿xfYtEPMm:=AqVk%Yx{6T~_IQH֒U;Q1UCp-OKVwoHK7KS26'[cGӯXu-GD(`[
[}# AߠK)g59ɿrgAnjKKT 9 9)<
0v}yoaK ]~@d*~gHcg޴vb'kAe+w^k֖GK3k~[ݼ&ü^'<A-6ޠgւKWqX̅<>;;9>S*~"TԹfE_r>ܲ]z$o{Pgruv6Ƣ 6.#`tdiU0Mr'֧9'g0?V[w{yr{َ̦s5fsCҋax[jRkȵF
W^}xmV~$]fր~/klOjE:nS\ B9^( ]¿ۏNZ }G/j\^IKՊhm49.m:WhI6Dzq턈L#'r@ů}8@iR"ŷ`K|GS-0fw!j+}ەӽk`slM9Q>z攺Z/0PB ZNkK^\~~; * a)$q(haT4`rgsm+h1W9T9q_rNH*.>faI7F
SF#i9oE3%X#	AA	קjoats"lRo9jǕ?'\1[}0mm3Io{۠hmy"<r{Í湸<yXă^i')Z7Bմxdxx=5KHJ~h;C5\մBrQ4T#?W)_ifRQ&PŅ\vWe#e~Ht3ᨓ / Ǫ 6~HQBhERz욓nT7Йf;VtZcAӴLAMAـXD(%E[D}l:Jbz!E#t%ĥ3$!FVs8S/
vFA|7AH]=SUAl ,BvgH\1-{!c*Joh`=qir[d8VF9`\^io!K!)~ ~[oIQxL`N刵IGqcJ K_A
&F;kU?˃AϜc,B&!4ܕhOG(^6]7GEYyߛmf
o	MʉKt'7< zP7^U>;+^cr8fvvN2_i!v`c\O}s\؉RFpL=T:5QbheΎ_F0jhv>Aƨ
:Ի:v@4O+yB]ƞGp`ѩ8fY-Wezʀ Gֽ>'Ug(
J-UHDωL@n.>g"_AѲkG|O\H3VӍ@cCF'VH8 tF*C~s|	^tgh4)}jmpejy 1wKa0<k4ݡյzeN$PQ?um}, &ynlD~A\rpo
wv$FO)
2<]-p^WWj,0N$ Cp,i;wDƱJӝ`֑+XQhʭKNS7CgHѭ=18XS
up휣:8Nd <fڧGk֓
:S*t\\%")[)evN' J_#k#|Շ1˹;8.+g`Rۡ{=}ݐxngO;kg@ɲ-[=Cʠ	j,'s9\;>ʜC܇: x08=TgwT5+YϘ'G"tǥ<hUw1:"N
˻5haD_;m>5(^,QeiVqvp7sd<V
dƺjՅXM.םTݓWfFO算pUpdduʥ@_Ճ&F9Q_V4|?ÏpLTHYpWCާ8ϝ
:B4F4&߀j4X"i)2謉dtq
aF.-8mNLBw3IV
<`V}`}
,7<n	7]e9=q+r&}o}/k
T4troIa6[: aOsx\>>qZ"r;|TQʺ(KxiYU}[jYq*V	
(.}sy\pIm2.rGfǻGGկ_VI
8x(z33 BKZm]v|NzW'L?5ɬQ893tײE	'ZCfl#h?UT p+!/
5۲fbA",VYSNmB!r^`eKjs0EhnBbj1ÑEo|*Ӿu19(CC]z, 0%rVN7NRA{wr}'oE 
ް	`݇j;iE/^X=JVtA=+\&G9 ~ ._$'Ib9pꉂMw<dTMа(*Xe4|b|/	NAvBM"&5e&|ilm!Pk]pttpy>;%ҵ{CE=3rq*_LN{Vg>moezEh݀86^<pTM*#XꬪNMЧ=puDU.%+H?'I7j@W{3lwa=.T.KWtp/6"$V&̲i]/KGM] dWۉ[?- N KƧq#283dd=Ċsӓ\
wh 7$bds~4ʱ]I~Wy5
6\~] O6n*и6/[>?]TTMC
\Al|j;:5Y~ޑj1>a*	t# G_2=^1INbqwɄtd|*u攤F/xrg{4C
>tj8e z Nw93	i@l5Z҄^)ӕ_gTg)@ 2ڛM?]@aF$1w\hS<eb~ K#?Gєȸ?륱TrVKP}UKU4Y0ybB:y;ªϧI(O#^xQu~'%G>ҩAZqDa`3K;JsR;ÞspWpbV8|<ktS0#Fux!?	JQC59ߝviSJl{x#E;]^.gMͰc8Kθu
Kp1(/b<s{i%xRp7)}:}RgfKA)КIR5me.lB/:A"íXs`چU{80 ˗0t/nMXHyJ^&Mڥ4Gj₩Tmʠ\޲$)$#t^M_.;~:)_8^+_pf0|FwQ؛~JӉ;3z2;a"c[_w18׹\t%3ZQ] .m澹ٖp7Q/rcr
p	z\ݚ蜙ܽw07\Fq ]ka~"''7ȥ$?̮j+1]wg
,AGq:qEm Zq?rR*|H79y+?Gbq9G6 gk([V(;ԷXU9r%ŏSUBw+x@Y2[ћ:~N&Iw&
I˩!>>}\[!:H%ڊV^FK>
pK57ĠKmo$ۅHU4兓4k=Yԫq)j>؊c^i|\nryiuaYsOv^5X
ݎQ]w ,k].nou:FG*[)=pQG-д_
[3$S_a:k$(p9:"Qyٷە1^
r|&]㪷S[v4	1_23JpQC;
 ~7vZQij:5tQ)yo%PmOBZƶ#Fؓ>OГ[Onȗ)O⨔#ܭ+3wW7Ox+!qewf]~:3UsoDxd'^Q	g*`jɥ1o__C|w-ԩp!?\V[o㯷;AS*#j&oVIhqS/\=*
g{%RpG-,,b0{^;⫻^80G*w_>fWAUJ%&!GWd~	p)ȗ㰻AHbx*z!m[7"J
[*Љsx@C7Uvѫ@; %/ )!;ݕ60j[ZyG@v!N"NK@4 vKG=߽>E9ݑrL_HW~P[B[B-j%	%3_;0jvS\ӧK|gNpsF
ƬCsp[>+/?ep[PQB7~IxXtlrT#U#שf;Y89p>ia`?8?C\|$CHl*IrxmS#)%wȨ>{d`wCU1WE35=`?{.~y
01;#xdIֈY%Ρ5PXvxI!Mnt*]T5r}B~:=]vgS̚/Cymg)ecHsPEK=rR;7M>9[?:.sQ2 <C51)U+nU u6`	6,u;#$p$PX綸u;M")sN^TXQeOͣTqOѱez6&9znnj\GLj\܂@Cc[.@o
Ao3!By:gF-M_ѰA}?duĸ5˷&*>|`;˩;6Ϯk'}u>m&E){>;Kys"_ܠ1Z3Gonq՚sPU<{XV#@e
^D~Y[+ͧXSՊq%JUu%q	9 ~"it<_{rOw߷S|dri
n2rO{2g0]gD.Pc]MH[wR繞U*fq)	fOa+tnJ> kySU{GHnSw(w@Y"ϡ׀M.~`hW@h,l]IT't mfC{ym|V"Kvrd3b5)NΨ8q`7,s:
<-'frr,nOc/vEPMpIڿ#$n_܊AIa@؍t< QB1YTfhUzG]{UtN*޹Wx
ɜVD~$ڢg҂fc3WD;T܃+ [Ƕ#$HB.|q
[~џ"-$Utm@_$|g=WHηN
DbfZ|mzo-G1Ҟq	v:rFmu)ka@5}jb!פ&/XKIL§2L.-l@? MBC` nݣ)+~kHA/C1WeEh&&N_%\gm<,r'])#i'bPFɢ>`QCԩQ526U|=zϿz[ݚQ߯P?RE$Zug¶dr}\g*"` >u[nQ$7ѯSH@I wFS
G,ί# 0@پR>\m(<WV(zb0ZSo㲦x)۶\rx~!r6+qϗ}Qp_Ƹ!W_#kZy]HN]˲0\r=T
s"/	Хcs\JNiiFe}~♱b9:<M1OtKXcHV. ¶㘋63:yKY[yp 
 [uFߔBc۫$UqQ)kDV;H>N"PIP|n$T4NIZ_/5
EhO|}~+r=(A9n[TezT'܃ă
J·Tt[53Mmx.CXugIi"&\z/oO;h	{)ft-<!45~\|g-XY.s]^%}kL=%z*3n$P蟞K[&Z
>3JxWYٷv&dWU p&wonZs\J*:R"H:LhHm8֙Z "6woXwR#?9/N <"V@N>@+ͩuwqل=wp	Z<sDp/B*
z%fM14be&`	0EΤ:D,IA˛.`qДo "7l3A)
7"d;΂3"CxttԀ&0ʵ!AåbrRi&gW饵QĊxZXAPʝVy#T<9#^{K=@QA V*Zgz(q-+$
%P(%tY|EUMUKZ}O-/pԙD9>I?	x`[mWU(&LOY3 Ӯ،E(6Z\ۋե@xETي	➃z`Z U2gl+HFZɓɆe_Z#Xv䟡\:jB]SL;ظx 	ᇪbڴҪl9%h[]?:ty5`Dgߑa'LR(
2UG+=UH<Y-~u
R%_.	xyɹ8+OPjUߡK%<6эUӸQS;^~hK
KnϗA~wt@Obo7N,ɑb{+y)؜szAP-0CݦKA	'!L%!]fU!=^k76FJ03@7V.o'V[&- SO3c?~A"FGUgX< <Kk9s<+Цó:`iu@!bM
F̍*Oۧ9UּBd,)ɪq+ai}2!|k)Z+'jdT0Zv\o
Ej^ôVڂ.1
{-%Y% XTy`K|/WڣC7Tїv8I@{9Bdk'^ N^ıQ/Rsdț\.i!)8M1Rtzr3t
]q|f:%~δ9|
 yhusk}&R4?TErW!=~cG%|vAiǖ EXq}d;BDּ	n "vN/㷅8W'%n ys*8Z9C<u<5qN
Z(£_3oa٠ ggtvB 
`NʧZyH6l偁iH*RG6zs`mX@١<ή ̭v-A=˙WI_>
:-|먍b\ {Q&.3
DN d5UF x)i_؟_ ʈR7ј ?p0>>4%γnЫ팓PvQ箠M}'7{7Bp'~N&d:n(֡.;͎fTWCALf-vCEht %%xž<wAz@
qg  _	965v_b?ExNl?bRѹxm&Kq/~-lIj	+&=-UidWXN
`80D#Ii =*ݼA)CQRWG.>N7<w7LYӃU2_=U16%n.J'4zJ@O=ȃOY{X[㣺`wNv0L{ J Y_Ui52Cwjn>ZM$x^9ca{m~ʤO~Rރ{By>VoplѭvC:dO]B6]w:gD.dMwǛ?O·6EX Oo
|v;; KnSX>U
\OؼhqwC*Z]B8ܙݚ"(Y^k9`4RC+ x)7p0MeNEO:E[u<ԥV]_@Fc2*<mxqđ~MmoB/v-ß>eٳwEO!A+n>E:٦`%22FA`qIx5d^U[	rMIjG]:$ԠB?=VA?cH_%}T'8vpѵsl9Yp<	dJ|MJ1ymRr;FKp<?6O	p*PGt|i+c"WWFR[88DpC+W[ %K&/7BCW7?Y8o"J
GyQff:u%Z^R/!:}i;'X.=6	$3eq7%.T`"I;O._|<<G-8Ͻ?֕R1-Mj'(hiTqs#0H-;.r$q̷.XI49_ق
TϦ@Vݴ| R:)HJOp/{*<cOeyNDrQ[eq	k	кG]Mt$ O?D|k-Z	`S	>09p2PE%Ư\x!i1%wW@'P1Ia/Ư,{F9dGx
Rthj+.t` UA5{G)uxoA.GG'6woF"@..l	;NV~35~Kqߜϡm78ɯ.L*% LΆ p/ Ϭ6.|.^<#VІ[A ^A_2u}lfiXysmU*-Λ'}~=alb!Q)hG%/#r.̍P !IqÛ%o̮o%p8_w7
c>'6 |il
J_7믗cW^9E.]j7٦;Ov'B8t+HZC{u"piB͝uE	áӒa1YN'䀞zu$$C|,,D8pռDsZ, vVq,vάCPK>Q
K.|L( ʵ5Lӯae{pt{VΈE}'/~	) -7dO=۔\~t9Q\c}(Ujp:@; 
.huv.9Te;=CDd{1 o@wcS@puSqyP J?{w	X4p\g2U8u(FT-Zn۸)hn0H z>SE4}<H[Θ_x=w^v1R9z\'A)Z#)GxImh0Xސ馱X8trxa\E]n/r>/:kzpy8>D
Y1'n*!=s]~ة	9hSnqoȇC@h|	0YAt0z	:rcAL;XR!b=Z2D+sLQ\Io~P?]_ % #dZHw u??>KP'1WZ+ʼ◶<d-6=<
:*U621	10zR[p[Pyb3wņ)!>ڇ$%FeHCbV/ج3bx.!'@NڭOv|񳒇>`So[k|~QN>z͑B˞өO T)!C Qt_U
?@7Z(:UhAvz{?K]UhO7SNMK;WREQʼQcZ:	y8|Qaz!^J7늇% -rUxnr4C?o{-441Uv+kpLd[l+VW?W7Hl-j<˟Zv^KG/xj]!'7#>P$ߡ#5UY@Jfy	D96ufd=AڀtXGv!vk8 [e<']&qSWz1"Wu
﯈Є:?VHuXj-h٥TT	W֓<bK.dG
­N!pwDk% 
8ͫ?SJ){;ةpcuB:)݊k	#Ha$<NE^غw8]:t yQ+H`=
R)ݕ#,@'_PKũ_.>.^ H,YK*B+ 89u{Ҿ36g:e|%hʧxGZ"̴vzvٜL6o;CFi t)y_v&P#%~fXKmN
^,p5>4h,|Om
6Ua:añ
;eG<0A {+>UR	Ld
]Ѕsr6wѮ%ܞg䥵ʒm#ڥ	 |8uiv_{ wDݯI
,v-ʴ*)fG\:lszRQC(X|.kBHD_v鍥Ӣx\&zG# lw_Uj@ܖbRP7'`J~ރ0pf{Rc{ 
|_m)xQ@pgXI$Z-Ѹ8Bj %BA֔ݪ<ќuU3& % kD68>ɑRy?.ttYTX60"Hp1PTq 9T(nTp9KڍE{n0?k3^T9rfGͫzAXsxZ9O4wЦ3H>4vӸ`r\Ί 4E{Ue3z0ïQ0dG7a;ɗŝbѝ	SLU;?ԝX Fۇs\ r\tzs@lLfmHKqE%*CPe#dLۡu[úh楀\,qBZW!#塨*HPLjGK`.ɱ6Д9R//[/Js<_ҿp콝[1~DP^&PJwʚ"rkM|n@P;
% $-&Xa
Brw<MКy~}bu,JXj%t+nlM%<5W&\QԻ;}iZ8IWvebJPeK6A}A D3 =X9)W3뻌] 6BJ˦9M8;:꜂ǈy&6 l@P+"(i#sjTjܗa\rBa(*K3m֏Nf$jUd+khܒɤHI 1lK:-܆vS"WFˋ'@fJƭ/`fk8T?68~	X4Van	rA5M4vz`jT(|i! 3)H1'g4u$#.Ga=E+9鬽ӡ
L,͉ݿpz΋E8k.?fODdU/~[A&gM/8Nvܡ=V:9t霡[Ghzvŭ5l2@G9e8T]Ѫ|+^cjpj@48F|rM#oͱ.YS$G(grBsȶJ1$íڶ e/Iota 	rizʻ/HQ%W)yld.e%N"p%:3֐7A+@lS?ȸ !|U\誝]xS_88qA4!Ei`:Aa*i6{c(njJiqn?xA~RUq{K?`: NIwkJ&"e&#۲3Vl!F
p]ٻ!BW/&[qvppݶqCR@c	3.Ӡ㧤u3
 UXױg!C{`EyyP$;۸0n[#'~Lqۂ[VM#No2:x<nq* AS9ڢP!6\րyKa/la§0j9Yd8ddئDPR_7!&eϔ$RUGTH|$K|
j]:Iݓ89{nZ7_л=is	y/q%D̖4x`כo,Z*Դs{)}	6 &/==BB5洤$OrL5s\.J^n]_VRG{Zo>6&ɻ״>a8j@B̘ƚpl'PtUjxGњ4oubd^ûop]"u@{]kjqPm4&AEq9GMhaਲ਼[YW:+%AHf[R{WbZ'ey@I9K!nבH{K%.=##@"O`Z=W#khiG1%j{F63aT.V7)I`
C1TܢtK*}hW Q.+7POhGtGd
wE~\f'OvvW/zQ-vY/5>qKb(=:զ"<Je>9}`<:Nɩ
zJcQR'HhhFK
G5JF:79hRW%DkEI^rLK!tՏhv}q\d`G	"HK!%
uQt9Xe+,Ҩs]䷀S5)ġYa_Fױut֕`RE3o3?Cu,Mg-\4l͉k#ui%,cyeQ
jR'^VѲmփA߻u7ٔo|_[UNpGT
D/ذr
_'m^kx4"*R\J] mS5wzaJ.9 CڨX+MydUI[[9`|盇O?ٓhU	{[슦kvsdТt,U!,F䪡n.wήVWOvϙ~.Qp!47C]ߤ1(aGMbpB#;qK]?aE<W)I\8#)߆͇jFzhR?`GW+CoZEwSδOKmUy1zi&γz% K->)IJ|?Ok[N0_[
7>HvP৚^	P-s5K14&Ǝ 8E6Zlov~c' u\j\s@@
ƀ#޷U {7H	8@{DgA䤱ΓL]VNtá5żئkԕVaRt{"q<nGXNi~El-Rܤ1EۮL&.ѣf,'/(Gm ;,#~:<QJB:(~n,4.\[MҦF;iOזϽ:T)%kysSkU7~jq(LqO~.
tw|#[.aR7+:}UU;ũ:V_
%C՜PT+
9XN!|`]Go6snK$j@zW[mɪ"kҾ;s1i㰩ת#&4
&1]#zpԶN$`7w˶C>n杀*/9¢]ni[O?8:̰{>s;?HQb_*g;7ζhd2^ؠt~!r!Ek>hǼ̯vjk /SZRwBW`HnFܰ/o/%idx	luV +& A%ȕdЦr.<Qo	V?곴[Cz2e;#3"ufN3t+@&6<}+/݌FZjKPPWa#~l&	cC>?5u<dbԿs4qSZ]pOybyd
WpP!:qHV'ݭTg;ݯ%XÃ7{Z2ɂ7 pw^!G+:p8wfC&8ut%i }q&=N-hroOk%G2#ڻcc*_?@VoOP%f~\aimOKTPr`Q
M C@<P i鴾 ,SʬzBƀ@eɷ2`1+Tf*ڽjuc(DJh\i[qM4sl){{	0kB >~t՟֩W2=Lj8/xd6d\Gu_)ӭGHl'CSJNr>v/PϑL]:JYХk>.K<ǋT'a*M˧E.?2 nn2A\REuKgu<+vJ og%/k{NW3OS0e"-a}Wgq3|p*=C3Jahn$x]5ԅR]h	Y?\&~=~cGGm
U2DF}<P aXUo_1Z`~Trt1R.©@7[4.h-
"+0L.)#	&@˜ {V281O)ϖh[t]so~Frբ女5#sUѥū)	UUQܩ˙q3o
d#>!,b,("dp:AkZM@Y(noPQ0Ƒ&O~i.GMOjm(qhd9]j&
A/ʾ#i&AE;+96cJmI$Z-x ʒ5>ZɳmsdEǞE~
uîc^ϗE}]S:6Fl&):_ש 9?P'#2fNKװws2+(y-9zzwp-UozpF.S2TWңM.@+C$ \28p
Z//w[Tک=J%o@p)ZۆX%Řx]p?tLђ~z`"VS)9+Cyq AJ@	#@)TVY) >tQoǌȚPWAWQ|Twib(I$ne-*(;4'dx^y@|EQܮt;(T<xJ|p>=5C:cToV+,@aتwrp 4lo"
u^`&q`"gK~k+ T[NE}qԽ-Um?O'Pc.Æ>,\K/lR.kP2ݛ8"+kwIm6tETTp݂:iLJLG	$禱$BOаL/ m2<$to.~۪# ͚y$ ġ4AҥKϵ
T*ܺx*P1iy(UmfFޫY*O u'iSaZU0[/ypIW@$hD靷8[ޜ]38#ڎI\^r8
k 6+-tvbz?lz&pcٗx޶y 9EΧ#d5WRۓq2?Ujf8mru\sү
W#Ti`	ikjɁ7r_:;`M%-8u9*oH G`j	6GSgqv)yuƑTuegvߵ[`-]_W\ћ|hI4y]phv$l~N"TST9!^?TId@۷4q]ѓs~DTK<2w/JqFm]ݛ=zvz>5CpS wվJKJj!l^8i/W'.6WM&5܂[ᙀM'T3:@UX!DF-%r_۸(l|ЧZ#4 AqA%wBJC00jK;/ʶC::/?ǜfFˣ:
o1r;j>|x|\Y]5G2fp8P
2]Yj%?6sj߹,UUTGR qng7F"cٝZ!4BRy%A番U8PIE[
Xn7`//3lgIBG_n6',p/gQFEYn%Aouy!%nFΉ-4	Tj ;ac_d]*v{PxxՁzUO^4}.ͮS5-7^IV-$gV&zpPri/\fR@Ӛ/[rnTBd\*M$;W\с'KRI|1w9d6ů%oҞ*qMe	CaʥpMK~K>1U~kE&eug*zOmNx,߯u|NܯzJ*\r)viiLR
B$T.KXQEO:zri`ֈGɐw0XLmW̶w|, GtIď#
M)ەNh l.Fi_4e9].9.Wk궨{Y@hBV0>2fiqzNupQ+W7/.Cy6  >ey|*뫡$1E)2]
N!iP*INݲTT#:G"+.jsr+M-2ChAN{ṯ1V|PFW*9AÌ`ukp59XoiYNLumW=o9#,k9.l5xoehE>^i_}j
η9zPMCR'gF
ao,|h@P]1eԙ*xV+qYJII_OE-4wЗF' ߯];MpF73ҝa]Y̯ѹ(&Pe/'!88}O
(erᴼKi-hȼ}6ͻ+ERKOSFDJ6vؓ25JvyQ{F$@C-:![P Zۤml%H'gq,u]F	R̺>);À&\~]yƐv'd|n/ӅɮVHy9' Èi2"_
%<vg"v;Y4a[*}Y+MfYV:y
iĵx<ZO3#9KvE)Vb%Kmפ!B*`H<+(kC
mF!xUR1c}5tGZQt'k$9 ʕuG~LPZ&Ho1A=|5iHE#],,'nL>ӹ:0~h>z׫NpfJĠ[۫ | /P{ڪ߹8 KmjGㄭu@=a$+pr?-TfMNJ?.OԉO_.'BE{@:E`Ta/e;	b7iJrn9$\Vr,Nr+&*̚PbsH%W'9&tTv
\,ԛ?h	𫁅M4uޮض`B+"ޭ= SvCNv!$"rmG(.)SDE&+yDǭ9)|C`p:@WUq	A'95\r=-EpuώǕG_kΡ=A?$NǐS(v>؞ȡp!$w"ֽ<`iZ34MIRV O|5Vr~|WY`O:5AFx'f2"mȬJgU9EC[+Z?~e&WPoW7E
X`cbLimJډ=k(ex]z!pLZo;p]$v+ws7FM	i6j
m꫌[^O|	,cplwC3&8
kEp`nez@vJSzHO KQ Te~U᛻МEA&OR+^,2{iI $Y!5nv#+>
zWҵ^~[u&m^ㇻgJ7Y avGf#tt˲9!NR,a9,K'.GFxݢPcI`[}ors\BYh	ĵו"gWh%έԜGx]]D`tYj )^+4|G4*_fݙe ᔼgU[6*bS/':9^|QmC['
,>:[?Э?G4U.lQI5Q`dYY&SWydGH$/? rj<9>P\g˗$z4O'Eu:Y}Y/~=οqoN}24Ph `d{V
S?ť[8JtdBbpGxK*e(ф}oCh:Y.iZR3p-.)hEZ+q7p^rdMOAMw)lAĵIgpZs7IfZE\VI䜷D.^('.`XԿuUn=h}3x1Jַ\\7G\" mz\p>T+1		BRvpiYN=C&q{#Rybo:a%Q$[ߏ.Yį_O㳭@&[seppie;y]}jJCy鱾gH)AFfU(ȳ[MѺRrBnؕ+9R90BvqȠ/8:0}B0QQKCt~>xA#P@3E;QT~j,(F(&+Ijשԩ.mkZ5,,JJz@)[y	8AI eM>PHSRԢtsh%ZTmW  8RRq|{U0(<]ŇKuTPkBm:#C1LgY<|<ߪAQjm"#?7wyPD7|}Z5NsjЋ෣i"g`Х]ߠqD-k[nԨ}س53tjw8ƽW"T+ln
 M8P>{rc~YgNeihʪ ն=Yמ?q_7?vnՠEcIgUBn{=
Y{Y(E$iA KziD[&ZV(nۗΣY/%Wsm F=jnmЦי^ud
k**ntV'dle?5cYj <7ŖP4R mA+x$< }ߺ5=`<e9u|s@pظ@ڄT˺hcK `Va:+H*NԙXEKE:W`)y>M0eT$CpWn[e8/@wŊv4_
tk܆gUa4#$*PA("V;
x+WU5m~a0ɚJ+/g݃{&4ql]\nCWN=zaxrX*JqM,5d~^YnoӅ+RǛ_g@)Nzq JsŨ&Ԣ?x:*?*'([
}F*v-`Ari(}%#T(<3ц7FZ ;+7!+u!5^Cf
rRI2#BcMK7&b<ۉZτlog]-xF@yq~/yB0/YqqfRC<~֞TH4m	%	UrszF<%Yᵗү?WvWn6:Xh ^o9b^`oFOyo-Hm
d?z
w72ٸjTԮVҮ0(`4 d:2e.KJBkR
;>+!$6X]ݱT4-йā	)!UX
 ӅSLtFHr
ym;Avk@R (.& $B]Nd80)QS&DCl;EF
8Ƕqp"Ԗ2@0Z=PosVݵV3{$^Y<HbpU[yf%y"rxaY{=,$q΀:L3aQ+ā-6+&O,op\_@L@ |2=zTU9xQ/^TasnXTya
[ob⸜dWe=9ed]2]fv4\US*lMOY;T)Fk1{2	v{KP	SW!d׭UQv	NN&C5࿉]{DTU.bV{Ͻֱy/7
X齧N#
Nq+̻rS]D{U˻L'] X݊~MJsR8	zMJ6l`m}hotNzׯEqZ DToe<GWsjZz)dy p^j
wkk/+LUf`mY3j
.a7mågJO)pj]M.U!^g~iEQGe𘌸9<K[>~[heħi@qQݒcimu3LDO8.w.y㦪k0@d2ɞot%#\ȈwWƐ~]}*+v2*?XE:N;ofO$pr7d{i9HCh#ŭt&?TP}5z\2O_JKKM^pPǥyYw;tL6ωz!D$	WQG-Np(O^ʻP耺T+l!:%	{[  "$"rs| 泌*+7[OPt	@Q/yWiTG^n(_`@Jkʰhظ	Ay%ѩ6z"LرuQ=Q6p:D"
Ex} !S؞vpD@roC /n`5TвK ;_(S:vT_$FnpHCp)B5y
A\R;Lw.Jg}\U瀃>'t,T_/^pʭg5Z	'z,_AQH-)O*'NQ7w^Mld蝔)"j
%h>]o!E`Zu:>6م
4G:,q!@oWS뚤w"VM0O竔V7O>T. mO/槵.Қ/Q̱MNhRa
nO`VBO8VfOU)XE8)
Dm)^Cpe:5{ܔݝ-VT>
<^@gkUyLےH@
¥E,~U
7z"E'% vy"~W"qns[q)Fb{pmzek:06Z[r~oSw\>Xq&2ݼ2S$mՂ+F:R_Z+GMv:(фk49֙_he.O
au'ILr[գ*U.ó	0lfpwb|Qu*xFNiu>r{LU5>.Uxm;xQ&dcSE?_w: +!/k	|2B|=cGث4UD`5*P(@;u^ͥ,X!w%݃ctYOu[_gzy* yun	&%tGZ
5 VkO9RW^2qq4ciqrBzʤWTO~^j qכ7O"BiS>Ҕ*>I|勘Ue6|mQKQxr5R)kzęZH$7{MJ6p5eB*;|6OiK{wA8G
uL>+V]o YC
&$(q [COzr.b["۽*A\x^ֶ+عz4mGf6~NWThn¾\z-sk5P+ \ERfUsh*RVvҏ>e9O7nx$Z:+tmXc:Oyi01ukĺS].X㵬ufo?Wj&qULIdlnqA||7Od$VW%(\8񱿺.u6K47ܠ牯>v5;^C~їJƭ(@
vB$T͝2GqzaWWKsw%@7!r@*-up(S,.sn H-p1[
NhRʇ:ʰ=`c\gV/8۸杼$AiPj[5֬
ov؎#P@=ݫ|;KGRj{ҝ溍HkC:*M*bc->ՌR1vE9SFoס7)#BȯWT|}s{XFl3E6՞Ɏ״ɉsw	'$8LUu-G5Ps\i)WwC>D{ooZ\K]Efhϰ
G-8OE'Bs&әbzMs:gf~*V5E﫷\M{q.	sxY('\Pˤ`@Csj}ZKC9j{tUm+bn_Hy 76jb!HWkձ:.أ͋cj&8EWe^ԭ2g_=+ىp8Mеr .H	9o2,V#/9܆a[ȃ"?=Ga;!Yk4$}T_aSUsI9ӍBrkVPU)ޮ:ځ|}fHgvQмT0E2)Iˎr^ҳ<xPfc)H`Cht330G
Nɛ3 &p@4׵j@uNhګw
uP'52u#:N"aѕT
lS]芇:~V$=<hߵ.YO0ϮT πquqǆ%zyy<ۼWYt[֊jŎ'ߪG@M򅌥-NZjDԙ@ dI]Ȅz@$<3u/[ܚrV]Xf{rtDN!v>%b4':BđNI̮,"Pj;CQ7T:e]*:#sJs\pAv{,٭[MCP~f ;Z!*C&!q?rTzogkmwש_I| h>\׀@Eh5::4C͗D"kSp'1UaV5@Oι
?dUoz!]/E,r8~ch:)	<ݭ'JP"{]
G4ut:-~;Pa)@##]O>zԼEvSiW:yQ]{r^kܪ<	(Xg
G-ԽǱDS B1?&uN>1 5(a8 m%9\(i
v("O"u(E<r˗V~#i$n@ |XYRT8.*<&c@эylsWpS8\R^!nN{P)r<
;JNz+:]^w{P]rh8tOq^]ϟe Pu Ou5=}4
lʶ᪦PpWKP?q|7=C_QHq7Aynkڭyi{8 Mt'Q䢻z_bE-h޿6ƃٻ@AOrCkAִs֞a:Q[JEhoso29\$xC)N q7>fz^uۍtJYg R96m ֥/NP$95ZgPolG=7'sƽå/8ZEWz	bwCAOx6׵ <-
!]s>yBf!04;<S,h)qwt@Ռ<ޒqJƍGdGncj}6=\-GA}ucIaׇꉋ|t>Ի%jR=UYW-(ЪC.n96+sڍ׎{$<Y&ʯVn]L鰢{G
/|xnG'/AwRAKآ\z-oNT]5TR2[~8gྩKޮTڻV
maҢx*
?AZT\#`&cEo*
pc2m	~8:\ok ݥ^8)@#K߽%Pawsi`q7 dt*4Zh7mj綂AĐ=?
5?_V|C1\PU|`0|#IS a9TZi{jٛGL^l3byR\_J*_;GWr3h
{Rb㰓h_1K٦*=ԃ~V?1-z6RLqi	ʩE@qwߟkX
]@r@Wvgdo\?l_ݱ
*EQኮ
jqZQmMQ邻L?8K/i=:V;>SۿV4z mCvQSv !Op&:-g8JI7tYAIު rS^gښW1#aݦGPpUVv]͉)7TaleVWUw[
KB:p*8\UWt*TdXvuP'TxWȋ
5ӽ4qQNufKxbo1GCǩs(PbʬOK.@(;5
g]F%Ɉ߽][g$v:(+\]gEBM%)66,em2yZoBU<=ܽݟ.]d+InVҜR 	 U\N{ұhT!HYߢp߷7К?2t|-~;rudXݰp+[eKZ*:kO@4YLY]',DkmJ1k?V<K#G)G?k052S|\ҼYpRӱdEai7yNm ?1ƅpmsp/ؒ [rAaχ\FH]jU$荁'lypO "C5b]GkZ!|.+%ˑRQǹQn33g6mLST{K^PV	k.M,A)!#xjw$
+ꅀŎ09U9hЅ*cvS+7^,ȫ3VaƑ#K~KZN\;ZxU1
Z5g[NaG1` ˯mLVåT
njIbXPs--]y>&x*ـ;Vy(T{.(	LN69=K9k]B1HMC$:p.%D=ŗuz&m_%K+#NP\SIXj<xliB&-%L/۪JnxQ겹q}kԏ	V9!QC^Y-hNK^x/QƨZhΨ'yھǁJ^X0OotWmbs]s*7+KRsu唖g[- |/U _!5
Dܬczڭ ~I-އSZ+ T~"^jtGEVThӅ#
k%j؋U˝.厎:\u_>vӯLk9\f_C&]/(W^9) u,DlIjG\FK	_K)蒗V-
5p9r?$hjAXţc	RWq,@C{#T$\
ŧ݋ [Z;NS)B5"N7^㉰]S`ŕ +SŤJYBdyځÀt%36Ɔ|/C)y7xs2+ڭDh8\2B{mɹϟɰ2_	3`"KP@Nu^<qWBVg&.<;N"/tsZOT-u֜P8ߛ0[ڒ|4
|~^%E'gAzskW
{:殯C퐺tzhSbsgL'<x1ZKB~](>H]录!Uc'm'\P~PnybCW)IuC]R%|<i'9|۷Y!GV&GS/HNd<[ڄbvulu*J4@IU9cE,>`47;`7E?%*xWGbuǧcrZ.G/0O,kNRSf\wT,n$9>sx1U;AjzAWx:(}!|f},)HW%3ǡfjɨ}ME#H0`rO` vFU	{B!N4yMv]go>heJ/ރY~/;94!.(u咋(
8\u j<1^}FV&:zo~UkHNUTHb*j ԁVJ4yIsNo!c)!~":yR]L-o\PF^V7?lkP
v&nv$r>*1HQU.}@܋Nc']R**s.J񱞥uOvZvC\hՐ&s*]1*UFnpSjqD9*	xoQ
١M]1z8W
*^Uks~^7YcJ*ڜort,;{DĮeK(D}- 		w#{lƺVmeVJ%aQ yJB)-:5nvV@MVM Rݟ*OII@Z1QE4g݂TO/ETy}rS
ګ.X:J>8wWZկIp-*ؑsh|F"* 4MfSJU S%-]bR?Q-5!mF_>%4/WƜjCW8M:=y^}e08 w
4m T;`FCKNmK"5B#K߃4PgćF@z84M|zVt ZqwB|q٦"8ϵ+nMdg+
l=9gNgIln2^]B^-5#<\T+ގuQ]éjd]O{
NQ> =/eY
Gu^PgO8Q
m jY*5MдZXaɷiu-NgBd*ɫOVdf$zF ,`:+Ҩ#ӈ:YMqE`Ѧ	u=_+UΡ&**}Bo==)٥mJJvp*	f:1S`_'n*P6l J?>u|ImAa=TLYOʈǀ[E	鉋}L2VVɉ+4AKɣ
kݛ۶ޓ}_ª=-ξ`rly
$l&:ԉmte?i yuj.NϏڿRR_eUL3iF2GNF1m¬@'<M:j"A_+iKȨF)uc r w-NnRts6Q*s,mKN7}\Zrg~K!E
rpOtALFF|<L\-f]5w{ke{j ]iAp gyv2V߶\9q8J%?Z/6u\8+o=
[|ҵELlyWʩ/u&ٷ)+TN98Tj:T+>0H},#gOp. .9[⫝*g$nG:5hμ*94O TZeS)YlG5WE})3GYlO#"i'>]l&NewܬX8U~yR rYHlO)Z[U:>#+(Ǚ̟ZjŹhv#
!5u; <6j	dnMz[
we#-$eΩReZ	o;) YB~<Q&y[X/ߞ*NwbQ"%JM5gVdnjsj*8'H
$?!',ִȻ-]uw? PKsD !
 PK  C:U            0   org/bouncycastle/pqc/crypto/sike/p503.propertiesͮmϧnA熯p/UJe\WJʽu+l8uy<k9'1b2".n߯Bt!_*.T/⻢bկbs8+yK6]*_9S{.=~X}_?p}iORIsmϑgkT󮅲mL1ltK=eU,#sr+sHk7ϙǾC{+{;ݴ4zV軏r1bNK^b<.Ǚiȧx(٬,++k爵qt{Ǧ76WvBjc٭'Ɠ`<Z'mUw=16_jմͱ#W]x3bܭ%ΝW
VZ6*~sJg5	_k`u5vҨ>:bZ\}~9Z]b~o	S=r'c=tczX#S5Nz)[8u5cw
n|sۺzROl'KS2gYgcq&{G_]7{dV׽c`闙sKsd4[=~yFM/0O
jn1S7CYY5>N2խ7;rgܞsx{0PCs|ܯwY0N>{227<˙c6=L "e.wy$XIq!,~#{1Km-QOR͕VRTfs~̘py=8RFǿ`Vu<޸PvHmpb%gxg^ OI	3> }jT<7W syoWL56 M=\?A~_psظlCbfIF|K&E?jznge14fD&YH5&
<ߚ$$Lp'MuVRBlq$2;|^{s	7pڸdn09@dquƠ'qc]NsV4cf˄=1h۷h<Jr
5^aaޅr/aǘo7N3F/y]ByYr
UCoc: s3aXO1jo38ß9rJ#(H>=ð[-G,Wۜ[谣	ֹj+0Nz`'~c'^59qѣ`0`T@l+a'HK246wT%<iJ0ёL.ynw+ր ::I,Q6&bRgdG^5O,7g_BB щ[|Gu㡘%|, C̊]w8T+O$C˸$aMp"2I,KQkQof/U
nDv]"|VKǑyyYP\\
exO\Dm$"`0@L Wf82(jDL	,9H= mh2x,&&>Ϻ	&kr.}p=@e903X4M0y{ˡ#o8]j00}D+
[͌ooN?bNA0^	Bm`# aExx|d
טbQ$A}&l/yCQqǚIcz`	LSAD74N&C*fYD`O@E|`:a$  rv2ofr.WL
k&o^zk:E`cUl B'TOnQgў`]AG# h"7@VC59-N?2;n[?azV[.Cy]i$n*n߉Sќ<[\Guy]L6(7xhuGuNO\01m3B^w .xtFm%%M15GRKN@6a
[{X>@; [vvuZg][
>7H"J@m$ex72N7V
qu8N-ȘE"~}s0c8Ma8ZCvB.>%&d+(ށ.ߧOYnw/ f7?PqmR\>{THi ȍry+",۫*
MЛ1j?"<~kDI+O?ß?ϑ+H"GQ"Q^AJ r!ѳ0规1:zcroIKȚi
#}uj`+h

Pc@f3M/*q;7W(ĪV[߾UIX\\ fzм]Bi
ϼ|+w	5)F$}?z_~iWvͺ$r֭8
J<j[9<.-
~?ӟO5ʷBvGO \4*y7Lu9$N\	IO+{D.~!aqM ӺZ%54`c
Kw?oO?>:#}zȰcZ,>a_(tGke !UF+m#Nвong0֖Y6 c~.1Yo"M)u"!!
B@YK!e(| /shg-k)}!IJb*8[D׻Ļ~ȥ#)nh;ͺۼhxb-3fe.	y#v0hT@Kw	YΪ1ۅ.,4BcȢ4;)is\m.B z1㭍4?/#T:ݴ2a6Ƅ4gڽP%C},C+*/~O#
X[ƘYrjxD
ɂw/`xm+piDV>Xv j9
+ge3zU)% ʟvZR!͘h8fnE.eiڂ.!/h^bq>Gk?ð=Цv/ч;H'̀Kv_o[?w~ZU)X~pN^҈	6mM{e9[hQ*:?Jeϋ	ǃ߶X
%Pw:C1ɔ|VTqOƛEBtR&[~Z{k|m%,~ I)oB	fUt&v>kThgH7~ߞc}In8^ExkXPjbā^\G4VeobE;Z[!q]!#` -CEVxj	s0=>z6DʒVԂʯ!Y	Gpo<
C%<
tkSq`̞'9w+=c±WtW_#wj{C蠢94K3f[_fR@i:~~H=.#
6f{=SLm~yR1}<҈װESBoCq~6{8OAULۿ-ӗl0W:"T|p%)k(7q3@ݯ!<?2/0-B
#jؕ
/l'i^	WY.։<gF<kԬ`ҲJ7ܥC4ϖN_9ⴲrE_CF-rIoOf8lzm{rzݜ"vnĊ/tMC1W/c~msܰdgwbHflaћ%(/]:#0>0c	w~}@f5@[M?8Ѣv\=d}[
/7ggY""@kChkVlrJ%H[ʢTXw<{2EvQZ,mw4j{jK7];^q7C"\giT|1;Pd
-7߈lT>_Ʈ#_W߮K^q(7'(<#PG3g|'3G-	̾0}rK1ڭ߉N*r\_?#rgUsdZ@q)u'ٞTޖmAGɈz.LԔ'3heqž~ơ[FZbh .)8"7y.o=`ewoo,pT$;b0I˻Uꌝ<+6d8 0!1Mk6~m_08tnJ*e(0։B jK
dO	#fi'./=pX.cvʊ@ܠTzQJ3M_z^g0+oǽdȂ
9":yX&LoS!$d̐;ztSQwZ]!;:DYDę2lb	_ ZK]soVSOUpir@cAu
kr8߀'?Ro_/a-'f
oðӔ<0'W!EY}ꗟu;bëp5͹݆Ƴ2ÊFWMtf.kjv":@P9_ꗟu"ӅeK<rϧni̜2naŧ%&nocP0s~1TcS쇙> JSNau*Gi}q!0]!ְ^BJel8 ^G6?bX
fғ2
3^ĵ\l}L55gKŸ-<
o3ߕ+ؚ&cXvEMh,ui'.72 @$p!-;*SBĵ,7KeS+CmpQh>?=GOA])YepCX8
*OڼҸεu'JO``'/̭xxZyuP`CN_OڸƴQ|7ss_ͅ޾:xI&r)whx6ln\ަh}toTij,FJWo?B_~iе;*Ӵ!&F!gMnU=Xapqz2Y&h+4\"ad6؃ܷ
7_ q	5Bz2Xs90
Ǡر}
h!Zs	a|p,U?[Հ 0=jBO(e2nc '8b,LP8:ʐd@S'Q`@>vhJT`PP`7$ i<\ <alGݸ[́V\8U#bD%PA[n`;:,IP'$[$V`ݴc%;# (pM|ڻOwy{YcƐxtc>0UeRCkBbaa<X
6R/5AS\YEwZ ֢OIu";~[{JaBgrz-Md,K&},XVSvzn:j;!^C[ zӏHHP%/s2>xb}ޘAP^j0	'} ҙǢ#*VT2,';eqrG7xѧ
i1.X:ԧ\؄	e`Q(=UZkoKia q\\pʳ8+uc0DpJxO 0.7-t<T	8<z N4Xdb98
3hZt?p'(qqp T#QE;y	a7/L' P2j61Z(C
46
քkEWKULqUCxQb*!bh9*WØ
g:РB
Էvh;/KSS%~Z^*iI?<H0ܲ,&%QIK;0~b?1E|9hZmtzjL( Xc^,pTRjqA8*:-J`9>-膑jkGU7l8NIꀴDHJ"9/w?a2Q)wnl
j =*b$gtiwSIi0|
~=OP!:.0; 8O!uq{OXW	RZ	kꐴdhA4B<f=dJ~@XA;oH""oCńʋ/Uu	L
6Lm(WyHUYy6ua[OM$8(.iq+'RSpK;W\)u*
a2-(=Vez
	 }"yUbC|ۍe.w>WCoӬDo6](9Ͱ#܇ PDEl^t^/#Y\$IV/oA'uGՐiwUر*|16=xPIt_~߮8ŗ+LBV=`4B)pFS;~EUrSs;;<_i|$߮,^q"b^WКgPsFC,~@Dm#>z&,P0voW	
0&N-0Tޭna6y	x2jF	}
1׾]q X `tYK}DV%OCoZQ	 1
!"__*F5
xt$F0MT<95_= 4	~VO^q#?b&j\3R܈_(MDǫc+"pvK\%n[4w~¤3#Rmx"Ė2l>tKmoP%|_.<nzk
&L %6		X-$}רC`qzE|¯eѕv FdE5yJ5OȎZ/	?PDk];OL"_l\>fQ¼X#뻪!p[H*\XDBs@' d%
IB4D09ySfLcr`!tyʰgYڧF?eH0 my "_;QGFRNzfT8T 4t=^?G-Эbx?{$aoDbٌ7Qc螴['[euz}1y :ޞ!cl7 H^#+,nV7L]x9;"{R8+@DI|tIDO 5VƑeA0=cTD!k%
qhnSB^!|/c`?0xnxD(ժ+MWKSSgD~,@2ڌ7ܪX#	qVH--NDi.Dn6wchc֬Ū3(x /N^g*́=SzP\9@ɤVC-RVI`hɔHg2D|h#6!v P@W
4VxqЌD0e8p	lkm:+S#o>ʒ_j
$Kq"-.Dq ;0Ӡl&u&(OKPCDXbъK}(w[){_Nd,)Qo7b5ǽ-8Ujd``)dZW3j
u~gG(MD?yXnĻ%27PUL<:lʲƱ
1~-a30@
?%c!y%r悸>9/JvUmQ`lU-u_!+!PmiʊfZ#{-$wi9u$PkQͣQS+T^ά$40)enq%>,@\amhň/xRyvqLY*';~OL<4
/Uчi^iv2"ن:@\Hڐ#H60,<aD&<N󂐃⼃,
Q\-I
Prr(O[jT.@8t@=X!"U2Hɼ:WV@oU<dhB g_r=VWMy\^brヨof^(M8i+4rA	HpOG~l.p'IW_?vU

UV>-<XWt,91or@UR1`P\
r6f9&,?PXT4xf,PIGOߐ[% sK﹝\٢>U`i]^eAnx,i	#meWm*+Z.!nZ`Dr^:{ i1	mzة}!fPkƚ6:xim"TMTz5E]ij
dJaAOrF6 
Z=jVQJ-j~,yno,`pRgsrke!RTL5 D !?MjiM{+AP~D[t՚>=`i>ՄQk
	ZYPR\{EyCUpd_vpR7W֠j6𽣈Sh1݈D+μj:\H"ӿ5_f_ Zhh#(ٓF!4 S4__od/0퟿0 &rA#mN	`&V(:-Uշ[NP~.⓿=aH1[RG\F_
4*wTp_:vU_t9v]j27ymWypBLBQxrNT\L'%rƔ 7,2髀93l)_Bdh^戀?AugpJZ0ӵSǝԆvV˖Y NgWm1,Qe7x9
6-%xDb$IBbt1Գ%T;Dl\Vq׫*OExJ 	S8pp{L6QTj8[^[wJ\]ƚ'u^DlA!xZvy90%EƁj/`>aPE>7~~^Ӛk- yQ	X⊐R420FQ{29'jG*`z5Y\s\sM-.NNIfHʨRD%1lyz*t_@p#QU{uSTe7ɣTIlaWL=}E@~Udgϋb%o-Wvn-B4Bs]cDjE 
ܲ$%Z7u0,D砂ʊ4H'>z4VگE9RNzW_/؟vEÅz-5lL[(}Q-!;Bxxzhe]HU
HsuU
tK9@UB(2ȆZ֌N40UT-iq/:iy}_GϘdʅ*pKȧ0K7)SIb&m!!TL*hڮjVѸ* dB}/8V˘o

_@QJ=(7.-4㩘-#x Ax>N-`"^Sm
Lhw'	p&SFyr&aVYUORRM09%W`X-lO}uJ,J >S]ǌ"))?"
MVaʴm>>LG,ac+}E1VRJQQ6mJ8})af~WUHG!-u|P ǈݧu=
Z
j
W`Umk# !|p-MS3ח*!ZJ`<L[zx?@:3
Dx~ڨe+Jmbk{'(5EkM-Ew*)$Y
ra Tpm5a&LJyMJ1(NJ VJΚ DA/Ԝ
m茺Ok\KK9`(AŢ$*P$ZK%DGL)AX=A3db8ǻDu1 0GXQ[\	+P`UFjg#z:CAex

bس04oE(U|!<C`C6
R4dEkY EKʨR,Y)Q]21bj跡'Iw;b
L,|ڼۻ&sڻ_xCSm:w`aCf
>ŀ
f0_f2E?z EV `%O/y3r5jlfB:MVnK%BVSo7`ઃw]5_6oZ&!^PP+{Pfj'>ʥ}Ly+֌=!hcW%X8jq:P=2|1n}`xWToCP@_E`x.OU8lWoe~GөBYkDd8[v*	RrvPND5,Rkl4)3*V
fe]2!2~CwV}bdPLӁ!*Yky<'V)K
*PS2=O=[P 55@!~ ^ԍa21EWXB	О=&z$*PU1`{Z.i8S2fpq*txqT'`keG`фDBP3;$P(@Ojˋ^M$, Zbړ`S%,U稼2coٟiL,6oe+q4V!6+<>ZZWju-P 3"\;/
V=QWtuIVcaIpBr[V
oڋbTE5ӥ*&+ 4}%f(*A%M'aO_ՠce
 ~
TSg~K
,h븀/woQ&Mv>_Aw/YΡSQ(
E(q.6z<Ĵе2BRYvtrb[g7bUBCTE4AxLΎ.WEզT/D	#NEOs
{:</Fܡm'@	n0UΓ+4,h>>ZCt*MAE!轴 eVqG
-zحҮv$~0COQSU [j%B>#c^Tj2 KvP@;C @Y vc8MT4scԪS:)@+`
jCRH57ŏi1Z+EsIA/(陳]-CiP	!-1ك+'ZlZO[;*-ҎkdSh?# 1oZȯu:/&v$סZnUҼPӠ	Q%Xy߲U.&O?:AT\Ogi06 9TB\Sp-ퟣIYE!U6ut?bahLXaQp{KIx4 pl
>|֤Ea//zQ63*Ma6jR뫣mQ^H"2s:&ǧj{o=C~U{D3*¢VGa#YMg-/	'&KRhҶfVDjFL~A5{$ K+~3:!Zp;יc\L3o/QRp(rU.A2n(]!ptVES	=Ħr#
 3(PpzKHqF(H+*CSl4t{o qlQSPt#=Ds.PoW:';wNV1T3[,fZ@̈չuDىQٖg5Qt,v) >ȴHT2@|uKBe=z'6ݒFEajU ܉yt\V8U:~
<Dm-AOp/} A 7Pk>u+k`i}`%5@E1Uk\%P%u"	0GЩR9_)RL&WaH!DdOň%*zZEɎ6]r]p5+*RGtuXsG]5'4
n"+TOXڵvafLE~'Cl369X9Rd3ԟK![: k|?)naWpnO"UhcR/msFd;,>RXf"#
Uh=KyW˖׮Um'Fh/vց6J7U+W0Px{r;=hfq,k`҇z&ef'-bؙB%Ǧ"ƪA^	f´
IP
:§"\SjY	&\JG-VtΝjZ |rruj(kݑ;q
I9iotVT~UɀWvϜUߧ{u&	(24
oLiU&J/-S"DR}Ю"<`Zd %#Y80N5!Ey|oQ7F :*U=Ti_9Cď?65ӜL
Lx+ITxHwΨE$Zm z Q+^2U%W+Q'T{"(UszJH+ՙ4.VҎ0Wbh^0^%Z(QG<4T``XTvV15R
&٨su;.soP(nZYiAr#DobZ^Y6T[C AM3<(雓,a8Q;J.yN))]ݧM	sXǫ0K]~¶:#AZ9s)
/wFg65rbҙM,tdt-J4̖J*&?KZڇ":
/k#эUS9W֍7cRA<:t?Eo@Lu:K&B2uچ[tvU|*T 3((bīʁLLxNAN:Ep_Rb%
ϮF/<h[MIn*Uʇ Yk(sC(@G2_ C
tO>"ղp
 ,+3sQ&	m3쪏'AƯ#GsΕn}=hdڊ638Tө^OXv9h1r2Ÿ(؀RzS;|PW&4-iN !!^Br_LkPa4&cc)YoSfd+O9=Jyj/ĩ"?ƃ}iI7ے4\Ȅ'8S1hkU-q	-X3╪)<%\t]t4TKiGUQ[zS!9X8:FD[-<JEKhLDqZ˭@AOYҺ@RᵹY4*@Dd` Hꃜt[:
SGW)h@?(0leiD;:}٫ƬݞD3%ۧRW-/GucRCڨٕye-"_Kg/~4uLC%51U2Dz?PL*Oxo]Emw_`AR6$a3
xC]z;_[}0AjY 9}Z;Ys^yc+vTL+C¼pEd WUECL̙wտnI|Ȋ1'^0Uc	ť+2JbR78i7L{uo<c[دڠXI稦y*pFL'>*֎ROqhf:WֈD㧏[Bw41%:
Y"X]sjz*	|g >,ܩJ
.:CJ@P^0i|RWr	D@<ڊU~~@'bkubίZ~gSxw#T9:+O::v	:dMj= zf5Tx/eQz]QI+mD |6Z ]{+:GY5]uSb7LW5ҩ[]b"цcRE*Qe^x!х0Ss6h]ESqoW-a_bcåZצLYO=}ʈҭ8E(%:>B%kkQzRmugX věFY~	*H}Տ~*A-iTHHm9<٩Ret2yl΀
(bԺ^TA84Q|U
y ڨ>bK!c]laK@)2%mSodum1!.]:oRF|CUKO9U<uCfi*D]6\(.!U-_M	$yԃL"KШ?AM9DY8舝	ό)"v`{w=R;7  ďk-g^Ug>oF_u^Jκ"iBUEga\T*P\_}Wj=G'8EUYP@3;je5XTo`-j:p-aCϝ``&oJ@!G cOJ1.X|2 T"Ԇu@|z]TϽGB;T?"Е":}9U^?9KӼj̔Lj_33޼VE !#t̍1
X2c4nTViS4[jn"r"rGV	.t2rRǡF`\툘V{	t>@rY;`nOԎ
CRF.;:Uyɧ8¨t4yR2(?V~:;igPNJR]qYDD0K"ͧD-Tt|tSw9FUUXJsJASʹGZTQ~1%W_(+v:9fۻDTjᶘVO#ttZCl	~4RCX2@)hjh97 D .U_a0nguQTs
<X]@C0VރoTcT5]&vk!MU(қ=Dr: t`?e 
=S[rmȚWlTYNB8	_jðU]ZzV:|S}vI
~Utl3^?_;EGq4XP(U(8k'rq yB#Ǆ8/Օbe:femxIv=
Jr<&Q>1i0/VWK8T-(TkC H"!"CX@O4K"wAio[WtU&A7Y
#&(k?LD7|wepSႺxBL_p4'f+r_
xejTnEtWݬl@rW:x?9J.uMoMI)NkuģJ`A tϱ(AʸK߲]2V%6^&;,PU;POW >]Q+ڄB}C7T; ^ٸ06Ϥx2i
r8T3U&Z5Tndp5I0ŭ/F X|SzۻtΈh{:ZT;oS#"7uj5!̏iR}jP/jF<1LԬsQBǩUuJMy.겁pY=OT*ׁ,F5SZmz%NR9*mT՛`OGi+ʁ㪁6FYgO<|,&uh@j؉r1AGtGqu?qp:3P(&tv)gqfB,8;:iJb+/u2yBRJRITdQp}{HxgM:vmpG-Zdi8i*ҝ]l5'h|zX
PZHWo8u}+=æ,,t[wHsDz-AUUʌ/|JTuR
~lwOV=m`qA=	woa 5C=tNhosY!ŤS>ljENǐV,ajh`F}m~^Y&7
U-y6:zJR!۔L>=,v$p׷o&nP3TumϬiqvMtfh4%}:zࡔ+(\3xgP$xuZQm@*PNkZ-С*TGnAEj庲m`TsF4ԓ?2@}uLZ_[By_B]Winɪnҝ
P9v#
mH>
bc/rtT`#I(|jٝ"ƌT	CnӦlUUF(*PU(Ŭu)H}BFs/LYD
0JTu!N3	>M ;q8jE]zKQ?A9A'0qm$n!bۄT*T;t հ#8eRaSNT#A WUWYQ`;)!oQ~IDM X?BM
{U)7 9%S6;S-nu!edkw#Tm2IW\딃/:Gl:%G{uTP]T`E--[sJG# w*yѺZсDnSRB4fq%Qtu`NlLa3N
KwF6	/V
:Y^.*a?c
o|5Gׄ=-V`]%&Z	jio#.TK
Qcz7p&`y-xlCOq?J'PȨ:c\iII6:L"&zp%A)HL\_x2RC8ʉ}\xũ=KL%w%QLm͠x<ugOڞ{`~8hAM,\Ù;"DrHժ¼]	8
RLM":
ksI
wL9-.hWbYU&eF
9M'D'WՌg^GH/0؈}@ID4tcDCl`bIz*= NMYjC=(U(0\m{(~s0p~uJ5A3ec⦫.Zv3duT*  :.ZVXWf_|l'~Q
eE
^^Ө_j!H6CSh=5Z)PGaP'T~~Y%^KǮΏ=_N뉪봊; wAi+ʓDj/5G
q64!
aT<-\DIR"zc+/%ovQ;,zHhOUGEZws2PV ۠CKzEu<:8:7ki
լtxjFUI6:\FrZ
x*FOI-vbmͫZbtQYP,RձwEr:o@v?C6Vxx$UQd5/D%^>BЬjX1V]ktbE`ZƨB-e	FVpf@	7Tޡ#$'.9x,?	A	h[=5!6BtfFyR9A|U	frE@4h".m
N+M̩ՀW]§2NmEmMu*YЧsA]
*(:5nã^]b*5@2&R,A,SOgv"կ*1C{Y=5xU?^y4 %yRFySDe'/蚽}'.ՠW>ɦtE뫁`h?< JO?1NT+tP_-[|:'4PJ@X8*RS3 zj"@PZU8U=jcʃM+VJ@
? [µh 4u`2Z#p-m,g:2-&yWWY~S
S;ԖmY)+9 ygWy_'swkjx0(Iu]#lWc TM3f98`׮JR:N\@L?dJ'%z`:'KK1g
jWcbGys2Ou$:2yFUxr=p	04Q4{|D#ԌZ.d&uXR:,pgV="St2bmU'Tqn<ޫ! lͫ}mm-dO]qjQLDO%lUqYuFڭ4yS>ay,ZVhʤvŐZ\u]<.9GwB6au)ھ?3\#@+ʯY-^D]K׉q$!3/IM곯йڞ=}!N)WPh!H*u 
z!vԯjA`g@gM`*Z}ʈzPG{W  q=GѢJ쪢 +Ġ{Z~Zqj*JڪGC{Gev;ͩAxGO3Ĩ:p])v>b*zS M't
w?ORΫ	Vr:ZUwԩ_ufxҩk^M')4tg&>FkֵQi--mE׵qA
F;
SVaOv̀Ăr)]b]'O+D/6ƧCTc*x:CCRuP #!\I`#D _vi"  x':ZϩGOMm	-5|REd!7(e$[\խӆZBAۈpkCfPuB[5;$
>:
"TtL!fSRD9Ȫ&UϳkaP &"j>|U& xR^Cް*ֆ\C[|zbPmx@ӪBQβ;Lm<U=kbZ&*1\!7*NC|i#Y?/>"Uc1z4.UTH!eG,H=JZGCHP݋0 H:ֹ8oXb{u
*Pg`zmqƒ::q4sgP뭯-DjwPU4Q%2ҮFK6a=oՖe(AWաF֔x$[%%t&UAfJy@Z6]dM{
0S&	nΥZS1X d^hR̆(jRuP
*x^Z	JjIxEWtm^A߲_
"CzDteAU^*V8rvOT:ا7QJmUݪ<LSP+Jlqy
WgZݤv/I2QRcyN"Mc*eEykR'E(IQ:fakdRZR@l@d	:
=|VXK5w:_Et!so(#TJge+^וtUj!3nU>hN6P*o8:*Hh Kؘˡ]sQK{q.@MMF3Q0H t
ttHH^duE醦rhe	j$P:Ńae(v}Icf3	1il:#7: \滯Iz:ՄS-
\q1XNP(UFfCe?맪/CSTP[^ܲ$d;!}H`Cw:]*3Bw3ΞzM.vb+h
<y"z\A_uf2(Y
7kt6 hUf&8%iGo䎞=P,.В9/
ЧS&wt;t(u-?M}
k
;= 9PffZ'CVQpgU\}1 ge}lB2FKJ2a4]^ѭ>U3ċBOFfO#N6.=7dhNl?6p1QvR9 b}
$s 3IƚTͩq?}E0a+@	
[GjD/y6.`KȵE x
p3_.94 КUu <Y综RMrmuLx+L=pD/^w9d;j?t_pcj~+[A'/{<Z7HzjӦjx	iM5:B2U@W4}pAlpq'y/[& x~ף``&R־@l0xܛWɱR[;u`xYQl=i9gm-j9v޳OH~VM7\kНAqBU$&O5%KMk:
|#M2MiԤEk{]V?Aߖw>C)49
\>ge
8MiaWUd½YE_5H7aMN%MӃF83֊˙n2CUiq\pKݝ$S&s`+r>fsOLU\{'lyj9v~@u.Ld9h4-Rm%N	rmv/xphjp,%yEwAC
-G@e~$=$KI(NQ2RNgk#P8946b9'CtIa.8h۵f]ȥVsH@VQ/oMA;#3/l	^ynޮQ%RdkTP8*$hdq9 	d
e:SBDX?YJU@ުZS=էQf	7;Nԣ_lW^#ˡV',X :\V`7wWe
j:k'mjnM-[vS=vL6KHZdRk=&gX[$@n>؝ xOt*H4VI/9nY9F-X%b~Hd82=-nJu}=]v}9RV
_Ua,90vXh3gzQog>9R}Afq|
Ur56ǸNԏ¼@uh&C`WDj]0Z܍FMܡ^4ma0[iqYKC
z!9J8M͗Upuԓ__ڍ:OφnO_Ps_֨m]d1ޢNMK5\؟B+0s?EHgD)-Ie =<VBPUWm\Վ$:d5ePZGy(c#μ-tGZl{,(-}T	HTJ"uぞGG/YrQa8
DnL9ڰnS
D" cB&ptp|P;8L,Szp{-_Td֎UKJ`y2y-%%m5+SF('7frO9*qt̾+Yh
ALDZq¥h^v!ֺ8# (>guޢ:&|V0dG㳤i)Qhn[\5vbք:F<vE{' %b*`0Ծ|AkJâ+\ce\$3׫׫#q Fxtk)|
ۉy(Ef	Rj(.09)"!%-0ci֚|sF^[?Z)*!~v%nδ˜`k
YlZ[wdV@IsnΞ5[z$M= ~' 8v	#`ryx\0cg]Z]5ߴ &NnM|Ϝ*p8 1#% q:f|Ä"U`FSFA"{Js+[vEɕڏq`]pUQsYb|l*qoL-;ex%VIHvnjEj?O)3u]/in[XM.op*gI2ٔ/$Z>=niGnqEo*	w@uZ/iJg
Kڟ9n(jnTu\네+YQL7EK&U@x7ў2R$%=V j.0-|Dt,̀,ɔ'WuCx+[/;ěO2t.gtS1"e+w68Ie
=/uUU2U|{=}[h=-gj~p*tN9)/U=g& 7j {+NzShpKh}$4dS.UλbwNW_49*5=YtK Q5%m)ՠS<ε[jo$ĝ="Zی|ZY[NTKU<)]>'ҝUBY.i^+jDvh}@Cn*?vW8KKՙ_Oe=*Ke-e- X%;8Y1Ζ(SfC+]<ء	2	й@HCړMvCSIۏRJ7Nf.=|	s{T[I"[{ӊmC#nl]y/=nE; A2SOv;*0	宅S(Gΐpdm#	<02*I\hn>I-̤oPP΀
:O"ov)Qyso@2dapk7gX_8+'?azDm!rr@#5\VܻZZd#G[+k϶Nr'Tꄮ5T#w8Cܔo<](g=CY|v9ē!x֔n~7e O4u8bRZԧIe:G73<ߚ-q:3N.ls蒰R3x}֛.u42|`~ƌÉ}ekX?¶O :*O#F4CI)xm/>O/*Bn-z mLB!=``pcN~3}<2-l6LCmjZvE[	J"cs*țHzh)4?+ꐸ%E)\VS\)	S'[q
Du Pm#{>=L	-t鬆]]~t!Jsgഓ-y=vagƌ0=z*kL LS=¹QQҽ5=ڰIL*{'q	<^*Xyjph-UŨO.2|pǠkGrNLY]9{*ۮ꧛! uNNdSQ>rlg;rzB7$:%톮SmU	BkqY_}]>]P"/'UPAR^8^f
*u@iz_vh69[ǉGd:C0n:P Q3T=mTz\sm>'Qho'n.x
,s-qwñ<5WE=<֠&C7Y}Rӓv&90=.wځ>fzS-NS]Ȼ}5O ȈʱkY!*8 
 %$eLVd6v#ڟ{.JGZ´hBy	w^C4mu#.GԳc?ѺaD"AxxeЎVGi
Xq#txYd.Ϋkit)$qJtgZt65$Nشˉ bѸ8\^	E8odrs6!/c=3,H!}Ց|5Kvɪi3ęvxŴ
&t2ƛw(+' ֤?I;͔Q#|kKh,eL0OgΠ|gt;)|9rMtU%6B|WS)lt6yP{;Wˬ^0Z|>DruxsPpiOe&_pU&&'
wz!;Ƀ돟AЬQ֝o~-p<HB <{7irW`sUAϮ>xnGm󟋪!h'
R+m;<9㱒VK	:PVt_1_^LDNWh԰'UU7ɓqZ	ôg6~SO A; R~XCF:+JVM*!r
Cu|
t	Ykm.Y4Nm9dh+*iwgSYU)zCI``M۠p`j`/[ED`Vd>C
2[NG>0{('CUʪ^XU=:gɭ4Fdw%(eԗs>`V,@u]U&}]<2X#W$3(*Rp+Y?ΗYfյ	{PzQ$AӨw^Fv5Rv
_lZId8@.tUNKkڥ 92}ڳdp]])X-V,݀`Y;Y[T*ks^UH>pᓷ춑	+ 1q	ڊ;޲y_pRnC޸&q&}hibX]W8
ǬS@m rŝksA
eBW {^]s88°;xQbɑp\kAβ#gVYWJssn%;t'WgΡ}i<A@OBdVWՀ#8k$!uu=R70Vg;jJCt+AZTZ׸8y6)EKj}	j jxFnMֻx2߼<&+Z]#ܜ!K\YAQ(r<u1.G쳆 6;3a.Șg b~,~!hvյ`U^
[4IGw%;h-KOI'Jn^~2YQz~sVGmxjse'?4XIF7fs&Re^ᨬ2 jiu/-QJ!;r'COyςaWA \"$PY4UGj\s{x.<)YX~
]C.Ȩ/"ԊSna4UR*48m8
/GSf&M6~z۩vHRf}=z~%lQ<oW^Z1g0^WfZݯT/c\#!|P,I9*8s9a[xqh͊/,lX$^=G$3/"7+ùQLzhtiA<!f]Rq_e>|:kun:ͮ HSnW
\G,p<_O])NCzge=hW<ǻE(n:}&q\K+|.om)G|vh1w}ۼjKu&Zb"qr;Ty8zMxV)*#

}<y	>DIۭu0+е#eيWu5N`8sWia衸!:>:?
u3
*
ơ-*Kj:y^^yMۙⳢSmqƈrX>0|ء).u%>`:𡷟^3̉ůV*pCt|:#Q^=zԺV(.S|悟涪j5ͽ >~`|8p?2@[=iJD :Z? r8QvTӪ'SS#Iۧ'fо/͘6zv)T1;+=
G5
_ôwP+J)떫1ʩ,Ue.a|.t*l(KнNp\r.sѤoSJ42+YW{Ba	cWZ&@0 ۃח.zTCs{riFcyyEtbgQ<@JSAIpWC5=(5/	3ЫZ\jS&{mBtrTYOL3sR*-M;ƝzL
aΔX; CXЧ'aAwzHm1µqKXjUgoPnCFy݅^In0Rt[\IDuPQn/#VϔZJVHuwY8ڵ*5t	GinUq\liΛ 8CCyJֶጶ追[֘@Q[➸pЉ#R0|/`5<G;C9 i1Sv[a~CY0ҝ%.Z8e	dK GT]
HT%ɦ|2-BNΡq	+Ptg⌛O 8TR U}LOȐ2 Pֺu9P[Pq
;O3@K,޷%MFeGqjs
g=Jq|?a%&egb34Y᱘	^*V.ǤX_קGI0
~#?HiCtA>O5Yq!W7ߕ'V^:XYWD-K)1j [;mC7I`>(`bK7!yy@6Q% wZv8mp;oul+jB9m-zFW\%H@|6ԫ@T >M+/JY,{0:.tgwRVċ(~N, $Nwx\=FqMr+]v5zz%\SwvK׌f{;Wz)
l;'!9^%$vrksCL}n@8ۺkuU(,*2TGZݣ8|?
Xa\Z?n陎5w/D:x PpDg!4G>u_Ȇ?E n\Jg
q #øuB./]Bo_77ʶrVM'C>ƏԮNʥ..[Hd8ĳ?K9-b98DZKj_:{!z]vSfvtN.^
tLjZ6Ugwh5!R9ܡ\ǁ,u8FC'
tۼ9Bٵ$ss9zT)Wؓ
ݝ{V*/BS^?go
D"٪U4\*uxEI)of+.D	C̉ M5'8ś
4?cBteo
\KW3eáɷZw;_vVGQM]MüGr,>kWdʪ>P7邃uᆆm8RK&D\}\lkS_8m$0jiZOX3-#/a'A4?gG\LC5s+hW]O
x-n/مp9wJ>-Q7CFଫ{ANELQ莸Vj\<Wdw,<d8E{TGC+UŜ Mejۏq]%;d"[6tf &2>[}~e!j{k b@$XMȬ('-O	G. ҩkQOzݐ{Zvqv(/՝`Іן%O
xo}8%osiuz9# yxeꯥWUͷ砙^%J"P^sl[coNZ5w7.Iş˙ ~}`}grB8MslEͩ
jcywm#yCy/X|+^@g6..	` T	[ҢAtd=;BY
&@ۺstVgN2\OG/-nDw#2@V/V8L<e70c9{˞R?aejO"K/܄_ѣ+%VrO#1HmHԥ\Yw˷YtHq1L/Fﾑ~Mupwn,827wTE-~I{_~
?#ԑfB|ott-ųŕ 5^kwVE%d~6Џi]\h$)H^-+k9D[EW2:.@m⭠UBvG|-:A\Ouk/7U%|n_rLB[_^d=4xp;RqaC0P=:lLZgC>;,@%Cy)
)a.E ?Uɱ^Ŕ«zÝs7i¾nĳp,{=tj-+.F:~	z`~zd/=.v$F;TXZO,'=ff{ǣIuGj3sVorVmZQQBz}x=L.#kڮ$氕$>R\;iI}th8AL0˔kyhY2AF	O=gЊ{ڈyW&ٖx;9se~;ՄԲZP?Շ/[.@7>TI|t=CΥUo	ksIr\	@Хfu	?, 41=Rq8 KlbvPi(^z֒9I;8oL+MWU@Uas~.t]?| Ẽpp:]ʽM-"$6Y @ӹg.G) +U{d4sf|ǃg3 $7@nZM02㣧V#w;.NnjO:0:Tz
z쌫a) q*8z
q{/la4GV+caUK.S\L9pP~F^K*3I_xG]*z:kG\<v@fb|,UtkskU+)&]'<lڸ$z16)EzxD!#_| p$)kqֳ7{?I[NpkB9.XŒ+W/į..%wܚ!
}$`}?/	2N>GUK@Ѥd
Q^L9GK.R͝2z|S%*U
'w*JP-pu3(zNMh͎sh?Pq1/H^&O9T	:=dov9S=s;+)'#
8q+%R
ME'I ]mTQ9[v3=#t@#}+:*y%BA<슜Sk3=\1[x2ՑH }"Csl+N75Μ>qGY\|uqm WKcycJ# =A`NpcHjD*W
{	(?!?ez|=[JG.%AzpwB B%hs[]jR=<z扻oN%W̱q._3S^mkNN}mM	Io]w^<͜
{:k)--s eˣWNwW@<M.87WWuV?54iՄSQTD4H;,<^yQom;&hVXcZ/{nd^k\2K/
iԃRͩB>pI>5'-qGt	4]Fwӭ:v5O5)-%ӔfGE+T9z6#wFI3Pb*s%pjEi?ʹ"Jȹ߳c,rAc|,3ו|uNVje?'­ۆ*s};V;gԫ͑ſ֐-H]ɛR5o^sI!>Eq(T}bk@[/	'{V'=w:>3+5qCWs Y_6{} `5g(]"Չ&=88*U&.o~
k7 %4ςd D_l]UU$8HG>Q {*SyG%Cë/,$qvg7I/x09CY1	rr;,2Qh<I^6gT؂Uҧ֯kTnKeF:mVJyfwa5|TJG`uX+#suoYum}u9}agY9%USGQwMt*L>piDx*ne58%)e8)>H7g/׎#HVԃU58'Ұ`upt-[݊yQzMh
~V*eASs8D6㞹-p:@lJ]lǒϣȜrvet\+8NJnjS02zx/sκ__̈׹>M"Pґ|
]Hghl[1j:{:'lYdj!j;: b^4n;A&~1`rA E!¥)U{x*$	26+ۭBFj7G5c&	t^UR	N?4ao%0Qi`eώaހ3+mI!wVP6:JkN&Cp9'*Hjoߜ!C) SQrWG4ݣ~1g/':l*\)WŅGZmܓcࢿ`ㄴOwe=If·oX2ՈX9p-G6$ihDU-Cfx;D:U2ȹ/˷r::"K;{{ ڭf.ྦMqo^Kn	ՕؾۡMw$.PayJ0%ۋH@eXpW '/^/g(LV<Jz/8ѳ$&mǱN(n.LE6DkO◫rf9X8f&B)s4:TzKia/R:*OBda*D  J/|)V߹fܫuU%Ycwn+_:EMmx׺c\K8w~Jk-puH]7l:`v}k<ըldk5㐛eT$<iAyѸٻ>RgdWP_PB}[RОuH{y!/(5Y'aHd>1(F}}t65F(}
g8Զu%~'7HlqΜS3@~ýJdSxuVnPyR?6O֞sGtE&]Ax.{j<w9M<zSGeͷu  ]Xr5_Ƚt~q 	2L08$Q2uM3I]^o%kHu<
%2p9cݺ-<?>G.QkڏVrxT<d~Ԡ~vɑD4
G!uiu'yBep8Ru:g Rױ[-^ܨem7F/˂Q	vJisl9ueIܜ6i*8^@'Ɓq鈟Msr6^'P!66u4؟'KnŇSy H:5$;0sScdu`ؽ"Kt©`)o  MVixU~VeVhjK!7kzOӁtМ#.Un& >rzt\?v=tZo8|={GTRZo!솯ݾ^D;[3?I/p^0*Z]%*5q6@*0OO-.ٝGxV)Nq
,x}˟nq$uB!x\٭s5X+I>8O ͝]<..*(W 2gRrT|0s	Na7	kKM0zY}TFGxs$nPp29=pS46xAs{5]M=u:ΧDoK&+j,/fَGT}hة*Riaj]*.;eQރ3 Qߝ+)bb?WŭO\	九^JIѭPAy
\Hk_fltzk:ٔlͪKωGQ8>}S;U?pNզztĨo4{[
VQmnj㨹-7g?!q<qZ_o+0bcjy-k@Ĕ<Xm[?i t{
sxUPo*?zo0KΛ>2a=hW5rrf#
sUiL\~b{}ֶFIMN8d
dZ29yo#[V~(ŸGwzM)HG=%TGޯJŁ$:Q
fe|:Ҡc0ZJ5ʇgn_eHNAx_맱7NF&܉tا|+m+
EPA-,Qv-[52US+	E+[V:[󴵼Np+Ȕ8۵tlؾXӌB\j"Nf$'2
|iMPHc-%+є?Viݶ/1-Vu\'#'9
(a/=
]F+!=ܝD&y,3f~svbQ<vT3Ti}}#Iē įv]-}έՍ=TySj~NޢBgv<QqKW/|K=^Kt,ɒ.dļܔnwlૺ5s&VEhkx=
okg=e1PBˆ$ 1g^脈=l>RzA1W
g'*_e{HiCG3v𧥺#RN{N׳bp\ 
l"̹w9#;߬Vg]<`u8re+\"NKIjv0ܞg
:|<! ΤA"NWM2ݮK(	du<U=Sp4pw($Ǳ`%ԗ<Rq'EkǮm{"8ؤ[CP!QE5$},A@ס<p-yi{oI+|XFk{J"`סg
(w_LHfூfͷm؆uH,.&Z6Gs{>6;gA0?ҽ:Rކy|xX+"ï	%XwgDKߪJ݊;wW{Q3e+(J§	.ˌ}A0f[xAu|*rVQTenq{tEZS+tn]$GOSS_j-@jA{Y7^,	`e
l!]	Lx<Y`SIfho:
Sn)ש֩VP+e9
ᱻ'λO^x=0z}ӗ3*wO@6)꺎'HcW'6H8]JRѴ1٭m,ܴ)3O%	T	O͕˷0W\l׮1^l9oDoSohjZ\1E~
Fq37ٲ q͚J*2G5uHY 8tޙq̗.aO:J	R#υ⩩:g»vOou mmǹ,is
כVd>>,\}1ո꣰|Brl9I 8ddqPsu=ax_Uax o:J=3tAk4Oq⯾ΣS;up#3q>|	"*bsxfhgYpL &[eϢ9}բ19OLY8ݒ
4ױWbP/9Ս#[8	D1q`Ĝ* qt_=;^c|96rIj`0/]Kp|)+_ &֖Ϳ@^/զ^e?P:nWiaYTZjNOwt	Mx/q*E
~"2אa!<XoW+5޶*̾{ŭJХG§ɯv?2%dlӗ,L)JRͮɩZaB\M5#}\_M,5$pQK]GXik7f|x+H>yj[4_; <#w;v55V&\!NBx6_D)\'Hrh{*UUJuzx>?_c<w[P=:i(IQ{y~9el\f9ҬI_|3Y$Hɪɥ*čYv9Ptg,W0W|@WWqFX()`
I y6'5fVsG Im+m-&Ϋ֮팃C`	Lr
@_By$ġ>R`A6Cvf		![JNMg:}sqZ&.:ڌI!60z&zi%P^A=;<	u8:1ktEx|k	,_":w~k\q"]O}ADNA3r/Te=8J$oU]>"atBR6X#t.xţ*WW?kj\^θ:SX6'VeogKsL,j/@QHжg2j7ߎ<{ѵ{ ]֟S
қ%N!F>,3&\>z?5<vwmϔEVN>
;hҫ"Y 6yUvz`MpYxxeDOFWB'UK=b
d(q7gq+IcssU4huY,ͻ7Wy纻k)~]rK ɝQ;C\064*Տ{9kADq js-ԏ_9RPs}Y"+;7 "KGR.G,! o!#mno7ǣ{̧LOw'aBkӡ7?qg .&WKpî#q
m_W-R
-v6>y
J:Z:ƠU%[55cMExj.V2WfԠ-uf֙Y_M[RS+ӟsh< u|cPM;;Y*P[]
o*r~`W,J}lGTWSס.>D[Cxu`}*9=ב+ QƓxf?3jdU }0wi;nF3nRtIۮؚjBp̋7VA$k0m/#{q~>
Pf~Rōg+p,.Lد沶8vKeWJG.ѽGÍ`EQN``:$Zv-'I$-\	9T^IB5>l˝Mx4TI8ݮT9ZC|I@c=0DU0gq[GF!|8ҭJHFS"ZR]fqڗQ.dD~OUO2<Ɏ'Mr-`U6NU쳽{9&`V~w'0;vYA:ҼI_Սer.SrYirCɒ>ՁݖQ>1B=N7\-+Q?ςF\,_CeYZj`̧  f8ARݘq'Gr-K
kӽS[ud%j	QX^}TFO+Ny)=G1
j9Cߡ1嗀"/j
a7ƈI?4:Ek~\ŒH8H[iD.
.>c M]>n1_iWCeVt&_+f`tq%]y<#;t;$4-Դ;Ԙ(S[p`^-+L.@]7{>MR5Iqk磂c%@,m,UY'v4vK<Ob&@ ntp,?n}l4w;Nwakuuxx͕}f4w6_EaP#p zո
{UGkg&נ~SUe{SNU"5eK9upoj^Ġ0u<[ZA qG--U"wo] l:N8`]ώP,pmuFd>~&VE#\k`SW>Z3E=j`.gPN0y+XW"G\M؞|0V7h8q׭($+1(<[].߶\o?ث/A4Nə"IuvkV?E:u0	r_\^~㓿<"e-
r?/L,9^IS]e<g;Gwޯg+J{Gmλ&NݦԯU>z]OOds){+a|h-aWEaJMUb;YJkSs\NL3')4[g)%@r@oqgFj8ECW=K9>-P+JhpΩj] :G\5 _B x'X
  a'URP*.Eg?.(]QeKJ
DXKWuݢ?WK>q@6*ʹ Btrb7$8&4	gQLvP\07Q\J "$3=ʻ+:=JfB\_gީ{ͤymz'J9@$Uϗ8׸CIjE
:5W;CX%#p)z?|dn<GSx$Gc<D$0pΙU BsĮgLzpm8Xs֢Oǘ
CANZH~eZXšx^)Dܺ!-K*i+ӽxxbn6's/ b~E Nhշ|5a ykbM0;~Bi˭rkJk?.aFw*x8JGG_s[WIu#'/x[8PInG羪;WH0|62"+dZ3dDh]N5Ki \qs՝7-Z|U<8ֿԭ4.dΚN@k[
:yᅅ ^"Pk]ߕFÅIGW$n~o檘%Q$DVkJzغΣAzXbɐ33.}(߇jMEݶW
	4ڰtgK"ٙOu+	gh<i'1ʟ(sI+~?᭲*I8ez-V\ؾRs
HD]aI@mAg̏[8[6=磲=08mSLArީ;$p6'9_sGNoM9;<
4.0+SC.h@!lON݂N\}L*i?,jS7:A95d/	^vy|ִlh=h#b4svkS+!23p8fu.H=W`=uOWAqVSamEw+HdEqf3y
<A.:HxAB$qT8CrsN B+8ќp(`WDs0$
oJV hޤwx 5+}\3#B$RBS~ Q8ύC
%x}\2i0$G/~s:'ש14GTpr4#{ 0(͢m K##9@,|l']5qpLxF]SSB/޲KKepWD5J\ٿـ^';E8}erHTG- /Ot8k!37Qr7;dun
V|1>+5PH\)Y5YOI#CC9#1豁܆3mƯIyyp!+BxZݭpBK38h%g0QZp&|jCu}.Qi-9|-{&=*x-vNS|>*RB,UfG>Pmq]Us0i=hWVB[
SMϵ
؞,e?G| e}ǧgn4<WWKE4%\ H
>ˉdͧo/A%@^9XUį:0=,Z-H3S۫*^-Ѥ涘`UeƑZ::B(F_\][s+Gf"ҒNv^roSQٶ{%ߪg@!w&> INcam0khjT9۞PV
ݳ*+1nVI'W1芃Q$Qnz0XG1==pŜM-<
Nx7;Iƒ<_:M)+ΜۅpnRYQ;\VT sF.*qC.,g:
<UƺbbG@e&2e
 T,e[Xrtq|hHA'蠟fܟR	fg<Ț?h;͍ƟHR[^npWOqD9	Jz3 sZl{r»"Keh[[k&zx6'
&:lO|ЏiINfq*sԔX<q,r\B˪uO@UG	`pAXAP>V}l'$AOz``?%sD?<rD[ASۥns(|P)pȺ8798IIG)/[=AbULMC`Wu0kI[ٕqz;-.~t`69ů3Ȯ..IY7W]?;ͽ%)7?Zp,h^Sa'| 4^{aQE0oِoE%is x^T0Լ?u>Wc(tYn,aU`nIyš}3 -	i׷spF&jjOb?.:κ扙Us_b>z3V.2ݫ0ZH9UQ]=Yc4uP*
Uir<9AGULnUOL<>ߋW[R.CtҔ;t_*	7,!T7G[z;G!}ާ;%ݖ"V^Le(qnN_,A?(;^?̫)f ?Υwkiюs/_epGݗɶ4
J0[W  
 N>KMaN]qwMۚ%kA(ƁWE6l||Sg
tK2r'
TwlǢ<zܤw<ՉZy^i*|"dHS+
[9uK;cΩk1,#]y!=]}7ҁLǔ/Ϸ6NG
8ٯ:>㘨d/?[aYH]oثgAUY⊹iĲ<_Y|ϸf&QgppYa甹9)h댧8gyxmR9M.NM 9Ac+Hvͣ3EI
u^muOtƩ(p2u3E'7+8;e8<Iv+u807jsv޻0^'y9T9v1dV6U\S|sdn9խьc5F]J*f6uhySMb|0 ng;߂= ji
jkj;8/DQֶn^YDZ	]GB<\x!5ʹFuW5~Չ;m3s3sӕ!~v)%`c(&ڃaNH8Z{8|OҗX kSvJ\v3&MokpdTD;!76+֯AG'` V}@7*]2"߼eq,!)"6ǥŕN4"-uʮlj+s9ɉKxZYm*H"i+0`&j?W\ZP&tM4S]v)HfE(חCUq
,s:et"CjⰨ;QxC^&Ưlԫ ZKxp阦T=.	fVU?&IĎB57t#AdIDTOއTbFN yÕhSՑ91*皋HtfJ8WQ7vhWnm)'CG@7Un`Ku$8<Chz2-hs&k:'GuY']})4tѻlI'knN
KQg3I*ȷIgFTj29Oچx)0Eyx6~<Da}SqQfS-ы
)zDu݂DBsD,29|ܕ:A0V"x$x[pƑY S蟳9hWEꥢZy`p-^:m
ȭ\G\oX5soKMn^H}F,hu4 Xu磏E
pDoO˧9i7+媵ËM(_oS&Ŭeh	PͬN_NN_۩}W׸趤E[P?
]!t']`̚\|C+˓>oDC8:܌CjSl6[-N?!.?{֕hj	k	__UvLD6@.2a踫Vn`%ԝ/\ޒby%> ת`
C{zSeSe/qm=4!w%V3F `?JmvǛ:uu4UG;Pvx2m/5pϩ{G)%U'q</hrabƯ]-I2%-ߚJ[]gWrK1'"|Kձߠ3UȯX<l<3.ݏc|-Pj	Q## J*]|mV:m>+?1(NZGpKm"EY'R _YKn
?-qwmodt
ȍ\^-<+ʰm7H>m؁@n[L~	.AH"GG!YD20¹nb1NB~gS>zC糶#	C-S?EmYGvEK5 NR{6n]c- @,Mݴ%~Wl`Պj.~Vu
(	zN.#*E #7nNߔh5׻.7j'uVH
e=lΒ[{  ҨV-c5#gycb
;xc
noi**gyMHi۳P&O Q+m~I9wpw^	V~sJ%s̪޻::sBn E,|tkgЦSW w?	l 3AۅK~Q{x%Y'[C߾|O hv;z{9@SQe܍#枀@u2>k{[SZcKkm<mw
bΝۡ~˷Ep+rMT59 $+s}^z#Pg\WIUs(8678mw"0pEaܪW7vb !@G߼<|7Wvө
ͩQN$?hNuw*E?54AhMԎt%C![iMvpPVH snmU~y\9Xr<3r\5|EsYp_l;W@.U"x	m ^)le<8[9:%A`&G{R説\7!87uJî9K/pz>m~xgw0rB[]
bA2U8ySO7ٿMə<qonݱ4tqx3KS>aS:C\ezqЬNLDDQzUM)n:jr@.\fs4i yjPm7ea(:[r3b?;e)[ݱۆGnMUG`٨Q
3KۇZ~m"Oׂ=~y+ggwz<A䨒D/ `	z鮮	,\4֡+ei{ 9+%첢e58!HrS0Wn/_aQ׸|`91GqY'W8>wLmY1y7/*L4pyxT4C>TpIim닺4m|8L3xO<Yy=M{
*gv6pWQO`;hG_<NlI>A݆1
&ן^3#Lǁ`e||H	ޤ)V%ԁKytYM
/<d:5-)O<,?,e)y,p1jIˢz
`(so~M	h>	eÙ&.*ЫXw>y7E_0uy;wdNn)K'{6YJC
PUSjTfiDM "4j-N]!"s-"aT\yoyH {6^t'.cKrQI@|·j )7,%R>[KgcѯG~FUo,Tm樂cCm('cxvбK]0k3͑?l>vJci{glƞ_o)?>vZ:h< I7?@p;;σN%hu_=-lJXt78[
3->2-6jIrgR1Wؠ3v=Nc&W\@if8)limw΋O%x{nrxl	R.CBN҈-xe:oZsOu馪5RN?d9i1$k?R3M~nbRP@#u1cwm裣8P<FzhLBGh7Յ8GݰԻT;w:`CE:b<:PшOUڕ:a&\^C-/ m4oBF&vCc9$U&I,Uxq`tOk,pXd&ZV%f4HaODR/o3^:gti&m0/M=*M7yI-Sl5꾢(]1'}]],b_t&?|dj.c?"4KaG5ÁGv6GfLs$5l-M5:pxвIF L*U8Es`]êN[BKQC[mNovҧcuڥӥ?y[`{}5zkއsngCGD!pvؙnPؔ2>F?L1ׁ[Fcj!-2N}s픠r5(C\,7N
rq- 9bHtvy),KY)X`l~)=Y2)8x;,єDAWv+оXcZi$/غI'o0)#P<7?:ǡ3Ϥ~0	dhMUO06߽=Ծ>M)尜5̭{o|<ϣ^=wf^(|v}ݟ,C]
mx{^{i:;Y	Oqu]93)&Ǧʄ
9BA=.mY@^={.5ͳds\00:z)	Z7A>[lcyF`xf&=?Iǎ%

|dZ(q3=$&aԝ7Ub%7rT`:ZV/K<_53Rm;`L}e1o[VʒFy{6ڥt?ӫUgبD4g
w*cl	`qNY$N@5Ob:Y7Gۧi%˙}-|`)326fh{pnۻP ou>P3怒:e2M=M1:pH81H$f[xU?)f[}rV
4M{dmTyxkm8n
$35ӜȪG7`fAL\5`K|کe@5w;FVRO%5iChLIk;֘^\u:nA.<GKRTĞ^QC~e7r5͑m8h7,ӱ)!3L_Vl* x^]V@1\txϠ*
|Չ7}E	?~<#QDW(??'9, (ΊP>0Ԫf6iq޺)E<Ei<Y<Ώn'^)4#Wɭ	_3S,fpn'*7׏oqד{4P$.:B<dM+$^4NXZ᷼g
ahG= l2?Y)T4;bm]|AYJ4yѷf)iЪQ,(Gg%sgfJ>G٦xq9-K0Bw͌,
y/?O>Fֵ	rb	Uw>G>G5fcɮt|ÆN=`I;n8QeaC.@aG"'ʨ{!.1[a	,=3JZwfx::,c4深ukfC*N(`,{4eoϜw#Jƛbdno+W+J*cZUϓW
 .4c &_ϗ Ӊ><Ѫ],a,<iyN+h~[ם)d_2}䢇%)NTn=P`mMGuSP5آ:X,|`KCC/qY$i(8:t0ӘoX>Y?s@O.t;1evѲYߥj(;
c	@[\:؃XbM_-m4ՠ&$t_%m/iDu­H`J[Y'Uٟ1h:`T=W¯>qꆿي/ԟqb#dWD(4!~_33>)Ϟ
7N@t(<~J%jCke%ѱ}jX%FZ
O
T`KW6o oU'?g8]ZMu}|{`/f)N,7
1V3!ǭKcSpG%j9#z?)wIsXM<(zА:C3~45;,HFT-eikfqP;|FpbZ&`\gS/{'Op2
߲ݞ}2`m%;}!lkP$9r+&uv7uÙZяA.x6ϠY֋bR'LW]M"#pJEEq&1yt^d4|X#A[]Ȫi=.#СADFvZiC1E'rقdQOgz-̱̗ϩ<Ҝ*Lż/;<
F&@yGDkol^: +-TSxP̆~}EUɼӁ},^M^-}*lrdWSۇ5ͣQv@NBt-=07?aƹ_Κ$Ev>=.] &f(t}
t^Նf#j5P ޣw&kIntU4\1޺XwBƢۣSNT\3sL$ZnN;EoXv3-H>2>=Ty`<7֙G0_ 9=8Dh~{T5蜸l9ϡRgI£?lawCM|Mh6{2Cc	
60?j{3H:=w/@:qy#D/;Mɪ4P^O}uحK:OT4*1O/F*L?z#SY͉>1֠s4\A~՜f3֛G;	qh/k
 EcE/͓ʛ2aUφMB xzO>0(∿;n~ADf9,/8@mSBE
ԧ6Na
m<*wC׼*g("_hI;Vb拎TZ?eyJԩ/\ݼyjk;lvŒ@'҃~N<
*p<ӏrs~5MMi$wqzw}&S99YM_Ҁt	֚`ή
2Or|j<>5C='+C=SXj	3,4+ww<{Xyhz'+>=о{fB[񧣅vW]H(kG5N0ΠU{,^ۡ=>Jv:q@wnCԒ^ȋ΢ޯk\u4Y HN-tr P*ChO DIjQ0aXO.6A*RӉQ` 2c)},/</'9F*q7w7xMnN@G'vWRX%.zI
UrGXGRR-ƞ=e5O3E2_[1/-;s[:&ڹe.V!
Q~(c]VlB;h1(Q=X	&;i)N5@<mxx*.<uKwd0kCN(i[e([g}CsMKTwj Wl.g\UpȻ>s#Oӏ<ix@JWEr - UUNj45y4i68(tuXPk)sΥ}DS! X`&>WA^RSP8
fRKySGJI)#|yЕ

:3shs|%cZ?ԑjBtD|4x@3%Ct\2q/<mY5~zmb-z4,
.n(䈚n 8kLP^><c[?SUvNW0P2[rǚ/wU}eC'<{]
;0fVa}2٘5:pU$GPus$^_WeOlHGnKA.Y~?]Øil>blp2^<I? 4
UY
i)h%KUg\Ǉv3]ix|sd9i+|c8Ϸ-^qII4NWWr[9z9u)V5nf
	8O,PJȏ?;Mh&~oHQd1C 6!^g
<x͓
ᇫկo|=?s+0T~n B<UE	Τ蹴*lK'nt(1w=Q	@9C7,YH@>H@,b#`tΚS/Cp8X/t>?w #0Oeʷ2N֌w!ChW/+N{,aX0 IޏjEsfS(&:Kna<~G//{]Le4Gҟ<FΆ*isYp$z {0<
QHچjƥEkfӚ}转Zʧ55AUCd!
V}Ojn<u+Pf^O0~nFDds^3?prf+2	ɋ*2ZxJ#
0+a~zc#^^rӧu	uK3좶wk}NOYz_^#l{-dFacw(ڴ@</h\#5ԏIWSB!y-[cY<bP/+Wms<ᛴxSi21(Φ\vi&ze
]i/sB65á5 ੃1@IrBע+ί]J~ŌNmA['	P;3+{y<ص`2i<SiةnB*}@ )[k#t2| *ͰK^,(6WѨ6`u@п)rsM%Gۮ$Џt~bA@?罢@dW[Uhi?Cy`FUk
I;gJr
ͳ#Km=7f7/K
.}.{k[NY<&pFיr6(1T3Oyٷ ŐY<i,G_]H{4-U+V#x=tq棸ESRzDPh3t]lm(yE֘n
g')0QO4@fsl*7^Ʊc"5/x6N4v{
ZϿ@gåء1ay'7x6Nǀ(jμS_4ڑue]r}H7f('S"/l@|:Rf^7RRXٕF"t.:i&E}8kס#
ZKV5pzb(͛[p%vqq"ADs>#H\D:$,q|nm\:l[Yl/𸼶gWoB𧝟IQ{)3'c8CwV!:{H?XFTPߜG.F5:xq?la%noxEJ.*Ìs}­OݼOWetxwH+7M\	ǜ{G9	3:Fc@`g~ړ^X&M
:(e6;L2=Qez/
'KjȢjpauZ s5Z۠>y/'<M#Z^J+@& X^ll`]Jje|}\o3
 Ï|A_FuoH0'z2|_gVc$Akޗv)~oTeit4ǹţݫ7ԗNcћ!tNZS
m&Degw#.hZ4
(?ϑmI-x!Y+MK]wlqj`Sv9cAx:yҮ[S4(&)&G` ΩhЧ$~R])n\lWM[asm
8#ۧ~d5i=$ !~41؊ c')%(ޞ.bGktj#E9Rlǉ&j6/Ucdg:<#)G'p	XS9<366eg0^灏(ztЮ3BޭSךL9>+`

癟[妶,7k)Nպ7X
1x-Ʀu^_|$
>1N{f'Ąf
ܓ	=viVA@W\ףe&ؤj.q3PWJ̯+źS:#z#k/WTVl$=bw#AW.L'jI)2͇^	

(,N7Hq*Zo}i%iy~feWFʯݙi3[r
,'3s0
1r ؼ1}'_9xvw?esto*^fg_-.ҹ}N1^_fSx/ټO!:T8JS4/7*oI#RPdМ=Y\mCAg45je9J?y(e1~&қ
97_g@O;Y~o5ynC>N2
?F~]XT)sUeŎʸ{^??N5W4խ?ys>Gn~96ּ1^Axb`w yKiᚃ<70l$Uuo ,oX績ͷCxg`5.fRxF(70h"ó,;jdQHg c0RĎd+ʙUp|{؟,r|EB;OZ`Aֵ:>Z<YM
?˿;jhlSޛϓu;!>__	߭r4+'}ɡjTM;Z>;lZ36sO,tU6!/N̚C#f1f:wRjN0+Rlɞ9Ft^#A.o࣋ĺİ4mwh;-1?I[#/)Mw걌M\6sP&y~9J>bx1*
'fnW>ԈjioRHu;B!Uk!9"}lScѾ\gheoi PPzWA4#?4cŢSctYwLJQIQJ9)[P8(6BRE|ijFHY݌vi
-l{:x_D4G z >Cnul}xk/
l}qhZFEP+R+B[:8NR DX{w'>KD :W
Gc RMZsScvI0:ș.嚫 j#%s[U$ۃ׎6e|Cm\ʯ=Sz=/dfs
"23
0Nci_wk4&Rπ6k3!HMs(>*
*3 w5??}"r+SozWҩCn3抉K|FڣI~EgY; N
ѣUlwal?1j[q/z ?eٷL(w2[eԷ.؊i3'QOJ#q-GP4dp;Ts%ͅd2g?L;4|r݄l.aioxl`kh|#=<ϫQؗ-;]FdXC]#,]/Xx
7M
ifw1Ƀh4>8z0dn9Nv qy02u#Pi=ѓ:)R9~`iVqy`DѐpD
g_H"`cmcE0HSϔ+@革r0!^ֆt׹Wyw<ax`|
6ޑc~0@ vP/
x9'W8uns~"qMoָa#+P=	a>W=ZweƩ1D[6l^	r[|=b\'lPnd:3@d.10ǲz}͕^}-T'	~XUaN]	@\XM.
rKːIU*{y̸6H'zyb_SWT튲7
j |^6'LF!UCZvw|$Fa<]bH[L43KOZWqt)}3ngoc:B~LfuRԋ'/eVm_w|'Y1i/ԫUc>hx<Ah=~Ki<ooΚo{I34GUxP9c_@;e\;qtXtz=L2\ͱǁ~[ǌBwNkk1E7Sy/q,O=W]uܔ+I]6Qu[=e\ԤagsdD2!h_/7~
`p#O5yJ4eĖBa&'=I?zv-RX:*Xi
_@hTdU1^5%.	V؃d6~#o/5zդ[m#9OyM54kǦnW}{;yRSE!tOAXfhi$S)eufҖMSwק#SZwW_nO
4>^MrIu@B@|fk`l_GfE	e6[0Qlt9Rm\*1nǲ9E]ŷz쾼V4BY7MOsZ~ܞLQ[1y;QZX}p2IjMm3)#>e׺9Ixj^ifQ	m:HfM6t4+FĜp>S^h	ܚH,KRld\t#u?Ma[{$
4:Rpp.m:mGvP*L?\w]4avcɒN4Tujc
w3h YtY2cywMU@[^Ro>U:b.P+L +bsPDc&2|K]>,E;SA,%w#Bɢ)5$(GVrSnӛN=}ihl +2,>WKd@eYE
wmXtE_(5a~B
tǦOնlC(tۑ*]2pl$jf_E1;΁'#}Jyǟa7UC朿f|]/	s  e{k\hKb VF`幐Tp[جCcv2[wxxT%"+N.&rjF;e{ޕ '}G|5'x .7/xCRfs2an9'=pl&=GPg&o!`X<hhzf<vqY
Mi^'2-a`z] >tO6TG i^G)ZHMGp0~;ՇQaa5Z^R ~5zgozQwDW`JO?RIԅ&*@ǡˀ?^mt(vG=Py
}	᡺6ezA,=;Sd@ykEz{AE9cgOQWDO]vvؤ*ju<2N9u;hyʲUZkJx-Hm/f-i>gƀW/72C&>=ZAg=ɢD.&S4Rm<C(>Կh1=43wRN,w3JHt!
姦(zW	V,$m
5	N=]^wNgOxhGQٷe9osFl9ax/xd="aږ ~asYp\'Ke[UYҙ[Y]`3|[4ks-eSS4y#
i<vKm]W;Ԓ1f퇓㹥Z (%hDSxV.25r-?6<z=5ђi&vVX\7,Cp~X>>hA[jdj9x>^ϵ_owJoAf[;UEbWg'(9zWP猤9S0,!JATt}<7
z*mf4־ٴF2p9R\t `N6a!{
l[
ר.+vytRx_>uiGkƾ퍷Q
U"@^`rgW
 ڂg-fzomFآP?[ ו3,O5F*ԧiRpu9s4ЦSԅ&_?P7u>YNxqS^vj֟BtR*P]Fl4x=wDj~S0෰d+]ZdsJ_;
[떖Swҫ2o EN^
R<2_BXWo|4giinچ%c۔hΆz+>r1N0@$M
ʜH<
3Lko5ZZ<C,ee2/Jca|ngp><jHGq҉	JDѠT{1rl{?=[:6"v[r)树zܲyH¤\MeJ~/7wWk]M*BqJEQ+޸U'Hq8nI+kkY9-Й[XhfоS~ɣB^:ld'hRK2~G/O y$dٟS*
Oi(VHU@Mw<:2o %t*2Mڎ,]#9B"CjΑZH4dzh{e:*<{MGH<kՙfVng_$9O
VÞ/ztLj|aP M nXy	=MPiUUFU:e@
`,F]gB!(g5%<VE$7Vj]	/-kۿY/MޚXYǆ5 b٘3'<
SbU}k-ǲ~xDSnļ{ד
xW5۴h3|:Y!NMƓ&
xl*/`?___0an4+8f'sJEo^Nm%O<;odf0K6TbKqtUF~W?1>:vc(=qB2܌Eh!$!>_
G(9OFinÔk6 ƣ13J_(%|ud%v4
Ϳ$POR]fe\a@{vn J]i|A/PUySO&[1ӻO[IMSiGp?nnF%H&&/^}7 T (<kL	XoY>gY#q^  >E#4<`HϽ^B`8^tsL6k{Rp>Ʃwy	 zm#lj:[fʂ]
 XM'=Yҷ༭8^@1* 9'uzce5gJ熵Pj-kB;P /ts]VƠj!_0Y+iEn>!W>)3ux:Wd|&9Uv_@2`-{:ctz.-
z`eM}/;*<S y{]kO
+E<'O=r4[w_vb&mM{I!L}C}T5$en>:f5Y7NW(:?{骯˛7AlQairA$_ 6w
Y5#`s# ѮT,\Dm^ʢ<5\'	]Ird@` +5f;2K%u컨$@}KQ_⦠limi,(<8ۆw3oO#4sS[K}f}G:q,͡K=#Q.#jg<ޣn/H3)]?G^y!Ei/]<xϯ^U
Ui3RŸ5BoR1^vZՂV骟/uݴ4E{~TkuPPH{Q̅>(Gv|̇2aL@sع|V_3M

XZ<~b&7-o^앴  fo]}&jbAhj /|/
.rNE{P&>(OK?_J]x%?Kw<[.<X%G('i6R0t2Ծ5v>G34 *n:Fnf.uڢcғUG\~GwQ}%J@s>;8_&på
C,hߓ;rN;]c9
<+=6xLUۨڔ9vӈGL[x@^'J|CW(uMqt͓nx1H!ՋFwÓ
F,+SQ'kw
y(菫jwچCvrdMl,82|yKY
t=}#Qx=t9wXyu^XM1RK@>QAēW
>y|jN,{:O%J|+͓ۻ*/~緲=6$C#ױbr
G!> ?=sk@ m-ׂ:CypE޵I^r+}XuQԦy"c`#0A<,䠐\
v{s<<r<FJKb͊gTIPYf<uLivVW_:J]0	O&0@V|k8Af0
ķ^H
3rS͓ynʕ~!<dFխ>Mr *[vR4s$pkr|uFԀ׈]@ۭث♉㣩^ImUۣ9^I{H!*}Ϳy1p9bgS%KJTY)%#r1ir:#%y>>]\-JQ'
9~:jiV7+<hUS~9~
Ssv#UGȯsOZJs
l7&h>7/kae}c6s./00 %,kxFAz#]'1Six64jl+iO\\DtbCu{'-j7hq7`@bzMu( ꘳
Jc;<MwqWXr1T=+bj_
~Nc!$Zy<٤i0iQ+ux=9NE^&ܿwPNմP8brXoHox
4
U8u_ xm8$]G/˱Sw432Lqc/߱p^Y6L	%2.G-~牱Z?Zб`͏Eh&o<N
f%/
Gvlrh QK
Z^)	,CB|>
gؐ0TQC-|sO#(Ov@\AĮ=2,C l+jOp$P-NJ ˘?=IyVmwOH3344M!R3oʋF[P&Np]
`u[^/g]
Q/`i9]Q];Ӽc[*INߝ>òi^*Z!Poo ViuF5"D   5Ni&?qaVyM=]NfHU,ɁoPɔǉ^UQ7(_*A<FXzΥ{ڒя{uڶ$m2zkv9ޡXkK֍ZbcuЁYfy*u(Pha7c97(^:U8611cݕCAwӱJ;-(@k]YLπy!Nt(}|LqƉi^Ǚ׹wvNX]$l^]9 ]<\ZzyPwiC<sN	]7PjA
u'<]ͻ__r;j6	dhr"j5vZR9O~OW6:iYz
((:]%h~U}ܡ&dT^kTuJ,ocFs
dXl:cguTI.(<>b_U\<qgP5_Gzv/oCp#
(<:4P~949vG#6O;Ĵ\-*M!beln|cd<,8FO/y.=o=/?<FΒi*\],WWW6_aahÔ&	 fGzYɹ	KMi2cz& 6 dA[ä)	vf˒fN+JRMk08{x@Mc34;iܗk[ki+<lGnJ׭e2~ZCj蘼Tp\TKoxSdGҬ4M
?iUl}3t"˵%pѧS!tWe
^1hV8[Cu+zG3ASI?-1u* KdApN$5uC=lMmGL/L}nM):A/k
l622Y<_^0`0_bsEju7)3𶺛c/OjW^wdec§k{ ew{NPyk@V&ԲAfAn"O`t/[C2Iѹqbzr9C9*JPES-Asy|fgVc6r>WBhg7I8it@R,f}#Ӡ} 85?!"/ a9E_/]*Pa=9|aKJ7|=YgfOG LtLä^S9Htnqu7=SBe6M)i[W4"B^%hM=1`b]1g (*32ϋYԡT`E?gUY"
˱PZ&yϟ8*Td 	̷dh)`StW_c+|יx5c\:uޔAMi]ЕTtzWHE!P#ݏgjtۛ{_pj
aĎt}O0l҆%tѫ3e}TsPբ^j	N7Gb$ѳ4OZީ˾&=Üc`i~
T p3df>x}zhԫ⶙+4D$s8Yw˃T4ju%UtY;d^*W/GM/_ބiO⨬yvpTE/rgư{znVHo4(vaR-&_Fn6yeZQ](ye+G.xu	`#Xc2x_);Cz-^ޢKi,U&{1(s0%9/IMn.]Z  f~[v6X]܁ {Zyx@MJ5kDg{U	Wɂ}W})Z5
6Վ
X:Ut>"^Q_&OKԡ_<S4jdd+6Mz
._@Dн⫸*v-/۱]G/!$ orJ賂 Y%xf{s9j*0LoiBTSt0vj6w/媋;Efl֜}Qy8*	ɜk){GYx1:aBT"E usl9&HͳїC^F|kUxs1@1[R1\'	UcR,;<磩Quzr|{n'6MZoO]Gt-PxQ+x
lC[6
l= yt_8[po+9ֈgQ$;>BF<0R&h:Y*ԊᕍGA8:Ha6z
	5Z*xpF5ddX@rX-pt1"ر[~Js?ݯosaԏ=:YP2cۘρɪs-~_b+"a#?2H󃬑]QZԥ]1E 64&Q5:%4~ϩBm6aבSc*xʎi4'QezE!zf_/6Єl	*)7)/# C4Qā
{6kłN.ƌ$oCi<$k^O)
8jD*o
C*bL<[rf?C6&u[e.|CLA
h|{*^ȟ}-5l{hstgfGq+XӐ
@V17?uE+p՛O&n{!;8j섉-8}iy*Ȯ W`Dov<N[>t=Xle\<?΋e54=qiLZ'Wǖh_<ulvɃaE˧GZ)4"8UQF1f5KA'/5-M!3K(kǳPZUB?Z]'mW[:)U V6,j`cwǣA`Zc+X7+Ff簧}볈o]q@1-
T6s־lX3V>
"Reg3ڬZPp[
9)rߗP| Cg,uc^϶`B<AZ_uMXGe({~y=:x'k%6(k!NJm
aiЁSZ!WqUâ-[?咨Pk2nG
i5Zz~R_LաsZ᫼sj~_\Y7eAtEPT?dI}Rש_[}Pby2#
\m2ԏCq4%UaL{J~֩n:r"À);{;ld9,{j*|XAc~^"
.3*^MGxvx䌎7^p&[8̇MR%:z)j6lz:(58f~y$ZO$	/pH5>8HP^xȲ(sG2uZَ R=vn=Ga'@/O`JТDk,S18DdmOMZ(_xL4&]u	\_Bػ0Zg>  tO8E0TiMb3T2ܛ	؛?2G%꿼ƻ9pn6c2>oMwT
SlRQPl\Uo' SOJt<,Q:*Sg^ٴhgf^j<H0/,3:tdJ(G3'O̸˽]7zۇ
EUZܥZ4*$l.ptVـT<-xy	,,Zëg)D|zh SǛ{܁_xl˗yo49>7r.u9E1W5ւ4RNT!>c7vAtb\?˟1egC|fT=A%0q$6)fk<}AhiﵢZ}tV45<@^H`*N Ox-=Ң֜td/uz`)dU>:Xͺ!ClahFJډ6 AcU.m%w^`q,K++&ͣ@Ke#fOe^+<u<[Y;FdO%M-ϡ%nVdB͠SwG@{BZ}+H][Px@)A $3ɂYÚTeƇ1g{w8ݏ!]S~[F\yZewӳ:*WnCCW7x5MLN9>gYcfkՋ˚R8a&W!8 *:K3ʗf_R&'fYj/kS;ڰڜ8'u(
y}uj">ܱY	ȧo(I{epQ8$:PAu>5 p3|CLK4-i ~ڝ[[ܷz(5BGg=8Iɞ({:da;-8`yhG*<0
,
w-0̿lkWZZतʒp~wAQ0GƮg2h VސQ+YXtU)xHQ<*(EH~ͳ).Fnu2kØ7>V)ZkWo]p_Jvo4ab}dP]Uqv<)ܙW_|#:eX+<vn8/Ov=ά(8i\cSCvP/zgQA
=1gB,}Ψyz=|l}>Q2fmM]'Џ?&$Ny	<Hg@lnZl'l
 \0/.໰ Z5F,{l0'$R#>#
gH,#hJKD4y&BOnj{y=,kǮ>*st4,}׆8p>]oνGt팾+"݉/s~=ːY{}h=`Rm'ppaԶۦh+/5K
3ME1Sr7 wrzJs۹3?chQ\<:רub?G>Md'E4HmSXRoa@.o
0Q޳IaKON"'^{CC'(k]I/[gZ{ȧǺ7xip9V]>dv̬1Vo:arMJZoѶ)Xt>Yir>CƼEޟBWot/X8~8sU>:w}p<"r+ZU( {Vw2NjOgaOvy͎Y(*6]_V*	|R"6F]<p2If,B5R%U⦗$K옼-yӓT9!(Q7ߖ7[XSW;
rܛi·:;
>)ӋI'^q*S?@mP΂&@8#iw?qso!50r+;*CMx]Qcl˭a~|t	 C#1$E.OD<-TUjhK{Qp~ֺF_xտy03G1pSdZN
4M~|f٥`%e.EW(nFU'?mvν+*(JQ%D;'=/4H]9|*ˠi_©CPMsA<G8xQ?ng4>n 먦5MX sifs
XGu<8lg[y
ZLћD^]ueĊc43ǏOh7Ť@MnsGh:hGOѴNV=5y}bІKOO?v:[|Y@׻3665^
^efuTz~V3KWs'a= ynMcګ!u9њ/Cו{_ܡY_w-LHP]}.?Z&:>;Ѝ<F-4-p'9;j־b0O3|,7S\]ìeU['~7D*i*[.ږgD`L'ޠH{QV
ŁkmjhRO7<ʂQzqH<b`,VntkԶR`o͝U.Q.t8 ϙC1L;@<NvR'sI@kUO:ԑIG_y>xiت\2Bdwx?h$)3Aj
+1勅fTO"IS4rU'*9ޡ$t@Kq>RqMSZSbd31<<[^PRXd/y]@vmBR>lZIxYN7p6#G~^69^U
3eĭMN1'f(c1
2xpce1^?
紴sh=T| S~&%WvRl1>$̅y#(ӴUPݳQ5&x4x1<׉.Ag؍Mw0Qq5>^vr=jq4iqҩ$5Q%qIS+p""d.ڳzMC씜q`r5ؼgg1,6c磪9u&]i c!vdçf_TmꕧlۡHxvz {E,hI~'#ՠwi5?%b0 "CG?LdLnYP9:u,XY4
AJzA+; ҧ~<'|&h1.
(KcMWfaG/RqD5v[yFHy'U7SmY@=.xAh<G'J
eIˑMG[~xe .㠒L^/-\YLM!*GOĒ <,쁲+YW0D-vTr_MZ
f/ 1{֝^jp |f"K	<LP{SUxzKD"c27kc>6!\1d=|yߴq.4Nx3kRR=J.m"`ui\ ^d XqQg9:3N6m]@5lBmo.
(AȕWW&Nu>qa>r
	ܝLZsM!K_GcxTѾ+j6e93?)4:`^Nqnνj.@9)u]6̱\@`6G=z`qBVtyF7wWdg+Fx@YRH1ie
㸀	Zd>+DϓPQ5_[&HN$%mZmǸD0uLuA4B]GаhӀ,u҂]sJs콁qMfRޔ3b[̈́]LL/\E6qb~/e2!y
A\i&}/z@@Z.	|L쓓xk1rt-
o1ax5YV̓ٚKip`ZD9F<g^'K>!*I\(#9ϸfQ#R~Ò}
_xtȆ#S%_d#8M{
iRYMZ<̩ш
:-<"(Aq{/0.@mG;=N9J>yQ N/H쀚ZО8A}W_|6:bzs-@ t|rC?a|si:=@ M%xŁq19j/sW+[*utlTQЬK.=dXa|f#CՕ#
)O[2ǻG	'M"ߨ[x1|v6O07 |
Wrr1^Ǐy]8<`1;.x V1މG@eSF'--
K@.z}Ǉ$:
 p{ VRYp5򻺆pek Z==z~>z<lU t۰:0mhEslˎ]W`H|22?
T<X}ꂂb޽	5	iPcuZ!Vj{T|#\0L&DU-+h>"x?SWk<|<ׁzU!l)>`^0'yf @mhy-)$ώU~=Y{19z0\`g.g}P&Okfl>uTSBpY:E%
ƐⳖ[`I^:@ȁV?Tp= `Ng_tYCX#5>6bqdYp.늙:T\jNPsӼeiN=U׭)6CG"1axqX> mtb@Y;uCFYX\9
1I+~W(-h^A(/夲GHv{T&WMNj}ו
GԲ\c{:C
h>wsAoU,ͱ	7
uY/e| 5`ޒ^G;ŗ,ZLSzUhE/L]!Ȉb7FB$]Ne=[9+TBq7[_UI"9F։ԭQKhuSu;@-9z<UsV1{.}`pEmBѹut
]=a\K5GWBiy?j^d]bg N*8`׏kc@CyPD2ŷt~umzTzs@N{%o~vl9$tx,Sw@bс7\p O~N[ٞ*-SŃ2nEK	cv|~,^qy^U?B(
v{ wm1
02Fst()K:
aqi"FJ{RZ|,tm^;A50s*rL5y"<~|/0*rb~3GxS jn`vU iGY^V|îdBTURzd'viq.K37G
%/Mw$"@s\SHnL;'nRONZmqRrhwor誮Sfn\Ӂ(j;i縔~)}dޚZ9+IVn,Ǥ3p4^;:qvFy/r^ѢB-6#o'"Yӭ3yQKGU'ݜ;~*ֽ\p=
Y (O:G*ع|s	yG	 @ &l$Nqt[j^4۟Fu}zZ3)}f
:ޒ]*ʓ*4#g[3vgʱ'$&~$Ͻ"`FP$fg "
9>ߨ+p9C5fY
ޭLxoGc0Y$5/7J6>	0Q(G)|9&`]u֙	HG(U:f+,E .ͥ\b'~쭵w>rmv`h}Ao¶Dqo^]C<𑵌hO^|.czuem@1t}d<>4"<9qQQP>O$xñ^?.915}5`u8,xѥ'ǣsVJxKs]]WV;AJ|'{  ΄HD-@[:sr\OǙR3)Qm:Y_(Uح*vO{+;waQwhe36su@5螝yJ{{uײOW9|jhHknXefպH8
TXPk)٦7]eT[9;J-:ۄ`+:|u^sŇzGKMthz*Jۨ%eiLPZ(R 1sNߗkwK24~g!K|'THw(7\@lo6Uv
WyY>y\auVGtøD鷕wQǛ8WV{C(Dg[y'$7<GUĐ?du	8BN&r9ӻEt epةNA =X\I?\<}b9`M5Q7dg	57;#nKԶ;ػwҖ:.
%KeQ[9J'r:aH#۽va}Zy	zV&A
V L+?ByvLTG9Z+5+zU
nMɋkПE8e^θةkQw#<{έ뮟ׯTiG-Mx4Q GVW
pw5asYn~o9<	5TiHt#чDA]v7,Z|DT˾nG?o sEcdxQu憏@b/
{@Zv<%*5Jf~LU8
Vĳpsp°{>9

zAP	mn[d;E؁=jZ!|b$>Qs9L9dpgv?Ώ9:4bբfL\*oXub0Hm9ښ,x&ɓZZb	$)sq(X?uGJW6>`ssuS2>s(i*ݵ|p64ȴg`H
E5A) IMG@q=|ɻ
E
o^Y=K!X!j!M2_wdWoN[f΍KR.9DGU<;hτW;\8?(u\w<u+곐uyBdSWvAZwxnSE&V])OkrfWT\말1DWܤ T5\6|Fb>ӋjCmuS"Eĉ6}p=q.YaLZu~+
$~UPmѓD7MI,4Iלtٍ4t]&m#ɢ{λІgkJ`Kk$ByÁ:o.!AIv	*kB+:@n#pR+8_AvKo~]"%H]498Y	ǃU?Ns
ޫ9K'u7,ԺDp\3&n'/ g؊C1[~@YiYV'US8(ǟ*:t 1T/GGٝ6վP"cx))fn?.a.xݩ{I˪qb>YR(r]zOQ5,`m8~rM`a3ঊri$}HU^(=[v>R֎zMUH't_HȜ#S's<,@z_>V(A
:w;ePS:V
@vP:{}v~xXQ9Ӂ${n&<x~9`%Ԝ]$\PplnoP]ZZ~WIm)9G(D~Oa/V8૗8/Ǘk(}D|t	\_V\ Z* TJ~1d<GPo-yy:}_wl ^'h8AYK'ꩨvDg1ܷ
Sц,}#;I5 7n芠̙Hnbu˪٭R&]6A%,9]CSnL
5
TJƑzvE.]wZgjB}	_םZrpzXf,$wQuUܧ^b9;g3[!m02a
VjH`9xāxu7ѽ#
U#Jƃ.Q;9H[9.UaJ/=Z@I''H]$CJUX	DpxtYD[KEdŀ8n흭:JGPPUT]ӽ=YDIzAeY|le*Pdtݳ&p٬ws	,AUm4\y\VU.mZE.'A.!4hUf]7
^g2Wɧp7ErcR?R:_XH6o	(R>m MurȊ$ZxA%ip$U~iu"h8[=rDݷ>	Sy3p?\b=H	On)8 p]Br˪Ut9vxޡo}
x븻D^C9
FOn8kW(2NGwBmv#̇vlza˭:}~wCQp:ryؗ=ЇT-{RihLKCqf
`vy]"e[lK,GB3xq
bec9W3(^cJv(IJIkn.	? n2Q{#oU-zx^.cvv.JIרV:Wxľ?]#I $۪SpmDn+^CWU?
WQ},*j@Q@
\ݎ_>{bTТ}t|A(jN-oes4g~h+,!萘V;`)뜒h.«._w+UU"NO]5ִ=_vk%"s_){%ֵ%lRэA+`
GؼKUHӁT?Qf+*󸰽]9|zz'JfW3Fr5l
WpUGfYT­∄J6$Vyy,,݂Sl$ :ǔߣ6ܘU VҕS4-ol@7r
4g%l(p9-GR@4̙9S
da!nʜm*	K~9WS_ZRqc՗|s <nX#)8
H>d+LsP2!Y׺ơ|}lɔ["vI4 rܲ~^R4YC*v[[/B
N[#'-$}-ҔOuS7&:\Ҷ`y5XG4I&vs'SܓO?/|?%9:]gh95m0;|TrOU>Gt8ݓ/=/֣;¤{ekirk9d
s)=5~y(
#ljݞxWUyxO6,-s:
#4G],=J>< ,**- T]5=䤃:)r+L7N[- Cˢ}G BқL.k=#|;ʈ)nJQ<7'^\ }\}:*m~nc5{8
s8<0gQȪ t+8FL'}hr@t:;Źcpqm7,\g>-WFi`aptqë]:@-(
^{
2\ܞɜ c<XV!z;jȫ|:?>E$)7,js
#"hLz)8m׹q,"^ϼRVԆ
ExkMFzDqtDV!ĪNL'RU'
oUn
ő4H\8IJ)17kX>:-gGy ZV0F+w.+Uë!9-i5p;gR_s(G85f[Tk|9B\kZL<+F<tܽ"9yCM!ͬT1?"/~B*Ut	y{uFTy(:թLgdkXP}1$D$/X/Yǿӭx}Tn_zjͥYʕnrZ
}%n9w&ofTJUۚjzZnuYzւtO!7b ^D&W&;DMW^^wV![S&ZQ25oGL6hq;PNER E1%˹zJCo\ އ "0J=)J{??hي"Mv5+:#xǻ\qO}zz)*gOHe>XӼSXrUiQb2B{0lD"}sJcnPSABlH¿f"
>VuhV>?.N g?Qm{$
Y5kr9#%3H-߈R">.c.F޹@Ƭ9vȕC{@[
Էj`徝%)Dy ukOA-;H2 G%}߀ o?; v8.l`x
T:QA%XJ6'Ub{U>g[d0뜷eKW|sdA",m71dt-s~Wġ p{3#oiu,vg_TincZ}hCN#ːfʟr)K#p[HgHmRXu-d-96",׹`ϣx5j#SN+/R7	Қo8K$.<A|{sxՙ!q1z#op0zGy[GDhsvhdeJhs[Y	ENTi̓JjԄG\Lsl	:$iy0<x (dm-50N
d&l@OJaSR&%ox4XNb4߭S.:&WP	sGhUf8:$ ^t_u/Zug僝7Mv-Cqn-Mnv-ĸMVzJe5Clc9j]8U/|k
P&l-xzNچ(YW~8(_/W-Hsp^eK%¶h15_$g7OzA:}i;o>
pj{9!p;O_.igWi]]z҇n1=.7q4gz/oUݠۖuq:*M*nS*pvr>*Z]l}y6+\]'I@	PI=i`eͷBWa|,q=]๨5+{ሖ$LƙbY3.WWxM*R*1~Ss=-chwIת?Se"Pd*_ΒM~`x.g
lP〚i~g̔`QYZ/?Uw9Qc8:n5v9pK<uzN$%&ץ>hRdۚ{
.~ >48DNNA_"@TR{r`,#f1h%(xK8`'qm?`;>mRt7hBTSۻyjSMD6S?K(#/$R\
68/7ygq3r '}n)Q'K]Ġ^jޔq8Q] :E)Y [ƑeՉhVyG QoQ	#-_+㷽m Ȁe·^XKu)T%!CF*}6&|3%Yb68Q=<nYkW=x^QЉVKyh	RX]@>0zS{ YE(zZd625rPfqJKV;DOǠ  {x|
mi=~aVA{]bN?$&κR]Ϗρ!@%\NÅ
;ȗuonu3tmҹ|v8[JԻzv+o!+^	\1SNuƵgGO upc_%ڸQw>5vop.exC>nu#q+麝f'/?+&*hZ  J/f¯;y-ŵp:a*&uM\9^x,*P!<=.	DyJl=p#+ӌ
֪|ۗJ7!g%PbIOJy)lB!^K:,VNjC(UB)n"^P酦h}ڔj@Ҩ Ys HR;C[']4 拜sLR.o|.^*A6W\dNxE#YVe۩X::eC^	S	镇YZbuBzKSK}2%I}i`gҮ MT3x;q+[xq4ۿMx\ܟElOjͅ3Ohŝ\cI~H fWW^G,'
mQ˽G 7E^WkTتֽ#_'ȠrmZ  Ju(6M8[FN $6	A)oN-颻F
x^@czoItguwZz;W;.S ض͔c @Wv&{~!Gð_MQD:0;T89*WWျ:(%tu-=+w~BS`%	mnrÛpo
K^\ǘx;ֺ$rc];80MȠ=X4эhzxz>7[`hJNO:]7Cxuji6Ztqmt1G5W<YG<>=Gux/XݩfZw2j'p(pDrGSS:nZ(Y=۞gU aMfJՇ8GGϺKj44	BW8}

w?j\*$U=ʲҮa~dasl.)z}鿘Xu>:]_-T"{@43SCdhڳ&̋niOqMwP.5yLX9]<d-:=Jbg4Vl*9λs`Rs-
U:3Ԗeқ2
 R3ğFQ˯(g.&r
NQf(`GmǬPWp*S~NPR8o_C{ ^<gQuvݡ[9̦8ooR{ᄸ0::BEuG
{L<-~
ja,
D)9FN:ueEGgv \50j;>{#AVF_+~Q6Ӛ巈gěq8O}YCCaZXΔ]&g@UZVߙG@&np`dN8RhQK"VG ܃Sf>֚ع`k\-ϤW@![яґp_E&9Ȯ5>ީɌNH񟯵J@޷KݰurLXu
ģ fUw;U\'U}dJ
Jc0xZ/yҿ5v"ϳ^G*;֦}8Xp~ҽƧ	zTJg~Fkn:m-SQA`k ya<g M-E</% :tvcn~.D=*JlVV7iﮆԢЧպ-oyY g}Z]ngBMz{DAAGb;xDy~w/8бUѦk,B CekS2.7T8w|k*=q<xxD=aZB8ą\إ#P~tS_DnF	{H4,uXnP)l|mP$\.a*v)f759Q!^asKGRJIyH`5-j
]ƀ`WEx A^;
b"rxYo p
=b}G9Ze+kq7U\}5<>NU%lE(hYܼ[)=z9۶*_$0'
IP'}x5 	Ǉ{Ԏ8SSGрu&ʠUX9'S{6)ئ.}FL.Bq@bw#4X]l-p};i`[GUGSTU'G`Ol().RAGA|WWs/@Ήk ;JT毯6/:E7AJ
tLֳmqֵd H,jd' =Vo.$'@ 6wTyPq)Bh7E
R =XGseSց֩M=uXK
9SEZ	q_1jT)GIC`ĳ3ܵh/"̀jg_X=ױ[@GǇƧF
(V$T8z?By:;R4s;DPnA偺
K?ϗE
m~M	CtƬr2]s=`VbSC
:F_ea{IU"Ӌ^H&)!m}wxnz n=SVuhx>EtX]v4t
6gcs_>9$ID;]+ȱ/KQ@-v!4LG
:	{Dc>3;vqǣܧ.l ԻK6NJآVvrD9նpԤki9"~ծ,Aeu\ vu$賅
NGQvK=x1Ed9&|A1R%[EWh7ȀgiyN)* fVƚxsIQDɐp=	!!<	NUHb'S_Ǟ@̨83X.h@HGtv:"qlj]#dԶgAtй((	Z߼{
o"iQ@\(n%Ǹnm!QWo!mo"dU5wu}n=@w'=y5Rr LPE|Wyu6s>E\[}~8}Im%꼊:נx ҟ8#O_j.ڔ\Ƅ_R`UᆳeOYZƻ|ףm^hٶH*:TXp(s=ݮ2!d@VY'PKCjFY2_XU-Wb;^ ŧTDpux)\<αD2&m|~ZT֭#+ $T:7D#8ax-Ug$t97wq>Et֜N޺у=&[ПeZWcMx*WI40@=O6C7'RW#]J┧^XV/,avRFZ<gZJ*926n3a~.QEz϶B
Ve`!ڊiҧl0qTkVUW*7/KDwU_kyË?)/]Θ
!*ۧXVSmyVl;KJrƲWTWZ_.N?
 zn;ʦJf鵨H찌63!ґU>kSGU̴gpO%)樟QL Y? rѸyp@'1%;xbeڂ.͒s	To5]VU7Aq#dS$/|r	3u=֧	.' <$9nMD8b7j~0PUGc_7Xu
ՍvHv7^3=d<滽N?4"t|uВ%T~9sEhtKayW<l_@S&(?vȵsyԣt}?RcʧUFt	27yU'P5b1:(TKgp꥗:,{dŻ X1o)t)[N1є{+o;
ܯZ"8*W]^@jV;GU*YQKT|^H \ogxqQk\M3EgZa$?őv\9n.ί;>m;w:ȱﱕI>#\h)ʦ_j'1uۺ[SZvc{J{*E.)/~S.Л4y9{Yer_S\>~6@+$-B§Ssj?3[gG,o$Ξc|7d\f˩%\M5 KmsۆE}n嵰7VeE~gzr
m|Kʐ\
|;q;5hJ
+w>ۭg/g(grdtܑYL֑悵JRBzPq ͭG׵窠[/Jb˺S+D3
&1py V)gIMoϼ
`E.t#X7ԝuvٽ3'6x%򐢇2Pܐ^]5ߞ`l):h/|A EXЩc&gc<zFJh7E2<yqHMG|ɷ@"	cG))}gI<fD,TxRVa^J69,i[ȮPѡ:pqR_Z}hGQ/6dި X G^!h"oiP1zIwysx<]hkv~xUiSQW ji,B #̤/-=;9Y6q
_4zD$i'Ns)H'jڻasUCSNzRـ=d>/r>гn]3
\jP t`cC$j!qQx[  161Q޼nd88#1d'.n/*ˁYvsN
7+bs!bp9	zJ|Kk CfxB zSo5]:^,_X)p3Y]8w@howv9Y?.\\
1&7
 x:ɶb7 qJ"`{s8с*7C)e;_Rg-]R8ם_AL	{i$Kk):A(o^qwk#)>vR`Cr3G&:Tgޕ=hSw(i

JOΩN?RPdY!֐3Lz֭mkBڙIsoYP\}%~rrݏ:"İ`AT h(P$*f~-"/;ERahPvcAjں{V^^Xt	$LMS>?wAjqK-Q+(5UmM/A[MqOuzk=ek/=DB#fтg
<~hJ>̷+֊Nvv+e@z%ΒerEU$
ލ8~*d=&ުA-&^}I-A|@Ҥۚ'
=Uv[
Tn"0ikak)3JҺ0b>gꄖ}MsbmT==r(O
.r8& mq ޗΠGEdOWl>~/4Pi<.z_@faiP0ˉU+[K95yuBL̰zNAc׻>EؗvBHuyҸ IJB2y 霣@|3򎥓S0>dy&9]`[.A#-mg,o!j:X.69u~bσN#cμї-ܫqzw架@?JxE9DTCz/$~xehnΉ_t+IDNFO8H`.<ZL^
8PIU4Ndrz
R}<½3ʯWUy,Z<D< 9ɷ%~^
90~(aASدKK4ǳw;6P:=/R~z<jMZ(
kUoN:ucs)ǸQsڞ0Zw
wl8R= Bިze^@Q1Ef=>71uvqkhn5V|/ayf1_S"{Ϟ5M~LFrT/LX-P 	
i1U <ɮe{x?=&Asu;zJDd
ҥ{??ۿt{ב X:08gSk<]쁭B?D_gΈ}kעeEu X9=]VSf	0ZM|(vK8p)RDIgYz sE&@>y%-!Ws07#~+
B͘}K<Ȝ_ߒX{c	<imCt:9&bpUc 䞱e̊rVtPP>[+g1KHU_5Vtj~?u<'q$9\T_~ُ,BJ\J)2xZhK{geeQl4 	9{~zE$rHwSq<;V,{jt|wr31>*UfdnV;+7y"U'~T{hӾ>Di2DqEt]FqYt[iM!qQ@rXmA{D=f'RnC< G=3MR}j_۲
(T[h{8@RWâǝ]N.!4fe)|m^%&ǙLno;S9JrnR,jD'D+RA*\D۬[OffOS
kڔȒԈoֳIu^OQ
ΜU{?py04
:XBL⃑zPtLgTBNv%Px
E
j".	wk!9U9{b>$- nN6ȶW#XӪ	&>1CQGű5IQ I*_?|
$o͝%*t??}vvS`_Yn[CND;R, }YA]z\ Ge?2CPA]q
%%i+um+,4EUavC=/Zo/ҷV4%wͳ{ڗki!Ӥ&_N ?04B{Lz#ι#hH2[rN	g6HЫF,
WD6@-yE} 9ΟHy&Ń|~KDɋA8<X;>e)rYW 7mi?k>C.gPNmYO
!BeM"&Yu?`YJܚ,B
ﮩ' })+ ՛*ʪR}s  t֞Q?*
"cۍu-*Xq6pSK:
G,6U=uO`~gG0U2++PϬrseE
RPQΠg.8+p/T-Jm*{ݪnaqǿ:N\֩d4zw<Pql6$(ӻ9N<<F!^e-ygPk|Uڰ]snϼ>Z8E*ZwkG|j6 (Q^ٱHI.fZd=zP҇E38epMrhDfH orN?O;kn]
w9䙟ˡ[^l v 8 Zl8OW"tѽ'*Z(WUrGě {qk;ͻ:)+~FyxKȋǽmgs]3?jy%Hl|826ZK4]_?;p|9`F{w>X{zWSlpI""]$Cq.DG5tGjgZVzuSzF:J$A>Z!McZbh3̠21YLiyQP>Z.[e"WQNʗoC g/Zౚ]nE E(>p>SD\=B+\@CڶmE^IGnOp*21gin#u_brIl&hmFp_lr٭(MIQD$Iﰗn^DkBI
/oJs7{(%w.8)?ǩ"𖭓$`; fݤ,Eޠ
[x,Wi$ʟGrĥI @PU iDw
ꮺ(=PQWR5oH'Gjb^ߤۺBZփkH,xd8D!^x\HSkbZw װ}vn.qNw@4Cm5FI6m^Z)Gzp@wx
#?\s՝פ'KŗgzԺiHş$a"m3-#FmK=XV8eA]ƹk!*yAs\z@/Ӏ߿R9/Ias!Y6LrUedk%E5k|tHkVFT%+OZtʭFY;ZuCd*s`pdvk?, _Xmn]1+^	aDOz*9NCGz?5xϙ5#VYu]zRz#/=̯Xq>Jzl)QncRa=b:ZCW07ÏZ?A*$zV竐Ү,@<"pG^z}nME2
Y~@dwQ#5zzV)
ݓgqoQ-Ud]/!OA$Fa].q3=
ץu6͗LB8w/w-8S L? 5I.]N5tYMl0Vm_/*	3_*qFc:=!SppmSvt72ϫ"6XDUOhd,Q*'SznY?I6lD/ĪD|!4uJ,UTG~JR(NeBEA"e݉In(sYnct6nq[v*L=JryDymdq$Gw~*Hh_UZ~iWc,(#BhB6&ժ~Ao8n}W~^VyN	9ォ蕧gCXpѣ{jYzWW
!]+C['E;QQvP9@橩wvQZg|!3D; dipf lE5$΄܄B ʚM< &|\ET&+Rwc-N;QG'nE9ni?U@ /U]r#9gv(续
ͣx		ծbB9<
/䩐d3WwN&Kȫ
 ?Ea
Ye"h$޻UwGO_.4Ï-cQEG9CG^Å?"GU5fU92z\`MV28riH=\k=4%\bZ7_ggKYc6=b|=Tϒ˙k0٠hY
ݽPyܓ/E<)ŞUj-e#'[@tDBuJB*qVR93ےj.2j1
Hh8٦zCqf7.{*2H͇y/X#:P yx!R/D%vZ$J=mW.>ZJݽ;"ީHg8Y7+,;d]j>Mj_nBPBD9/SCx?(n}w^7uywΐ%[)y6)Iu:3а4IW&
([@I nڠ:k
ka
Hq-UmR4L㩧LZs֬̄8ȮOCDw@f҉\#Y~4ELiMf/v%ڐ)z.+!twρ\ų i\UmAY=Hdj%@ KT.[jK,5Hԇ7N3)*	<?I[{5H[`f0ox&o['lC;YO[Xe
X2Y= (}L>wH
j+TץN:pM2Ks|,BTEԷ*dX?WQW'Uߠ<ob>I
u	9@e
}E}Nt]NgKV~OkN}?Z7Qf³D[_dʮY*"eNേF{|SųϺժ:J!iJH#+Au7BGJ?-,E!q`>"m8N	 L
>Yqv1
P}V(Bq:t;qysy</L̨
ՋyNj63<FYOra/sAxUmtxǕ+٬x;vdک2ѧ)]嶃( 3\¢<+/?%u Hm`'W&qukTwzWm0%uXģed5%uY@1+);4 k;$`h^񣡝<KnYl+yG mh9氶yߓ36a5?
QpӐnK6pt
CF5}.UW2L֌R&;dq$GNTS0m/>F:SyWcn#_^u IsֲBRzth	vHk<33 [B>@.v?o/)U"4'T60B'jcV}\=%s}A,kE}%917^ޟ
}CQt3v튃:.˗rnXb7(|[SeV: ydKEǐf4^ҋj{f|k&;!:EoW&e_AW4<q@t#AWb*v&99lqD>5㥻~aB9
EfMly}㿒{Vql}4T
t'W[R9<baʰ:Ktt@Xޚ3冔RTX\s;C]zoYj?W
O"ɚbh[2@8@hQ~jJp>O-E"B<(P"ǺE;v'WYMBU 5<_ߑ?oOgّӵNx?fC,}[%?ǻDY wuv2̕EYC/d 'ء/\Jg&!t/jd<oY~AVkBǚ?%<\5öUtW5ʉmzmtȨ U	IQS/tJ*mj
ϬrSq Y7?͙-! ozEǸH[ͦگbљo~rj }٤
_x؏B_n]	g4	IV&|d\eflJGmDH{["u<:[}1^(;܇QګCAYӞxBumlrkuk% R3nr`,ފ듷guHpբe>k
,n)ui[sTYtϕ#Teڹ ib2l`:`]c]:`jElNKfguC<"8uK9B"u4۾mDnuZG ARKTΛ|CN+Nw`Zr$'$1uUT-M',Ƹo^  Mw>G~ϕ{WA¯RAK$->YaIQn)s\!{^7sLuvdj 1Гo!OA{4rhH#֚oR=eW6x\p4<pMŧO9xbDgQF㵂ǃ=fd]5qԛlPBƊk݃tw<t!~Z*I>>ߡ纍J̻#Wi"CQ	rix
>J܉w"&$B)v=ROsIqW)Bjiû4yɺ-u
f!8~pU̧rv	$wSJ@7pWgnAOvY9~;`|Vהҍ2YznhWNM[*&$ׅZ(\gG%5@P4F^0GG/Vn0L;oݚJfk Ų_nNO	-₂ڛnn\ZLGllE_~QW#0|UB
;5pr8;rvuj.r?/EYpg5N@գCڂK"J"A/z];rAHk	}z.9X#)<Ն$=Wko$#O]Lw$U'@ .dHg;NV_n=qYX6&i
犽]O	pnZla&j
Q&VpB^	!]cS][Emw}kv<D 7/R$쪘At-vG-I>GzGz+t.lV|T	RG{ @g^j,	㴇Uۈj<gv&!cø>t0/zei.?q
pX6ȾlLjE7htzo|wHF 
$Q[QΒr*wdRB[(Yy#KK,9>k+j8ggQ܅Vz:8w-nE]܁	>
8{~CcWYg>9B$5ES41cUfj[\)ƽݚ_XͷcpLȿ9B6[5nE[eNw؏ƀ_|/@VwɛöQÏT"'v#f]Q[|3.RZ8~=šYV\LzN6)Yẁcm|NMn8Gh*J98nyۈc"O~	ʚaYrUu+*+kٽJg~~KRx @SGXy[:?XtL.uɩ
qH.th:%(`j.<5(:ѫ#BN/w+).f8\CA~m>:+ᥪԺto],EEqZO]0(OV)=,/ݎxÅ!~3$dPDݎq$I~q66_7_upK:CY͠m7KK	AT+u^˓rPg;>,<VXnkLd
iQ󋩸./6ej.$mU+ŰZh-s7y-nP_-lL5
1:KݓanK͡
8T/fM2w(>-XVjg[@YW%iQ.U㬈WI)aUu-ꮌY6/t8[#;u*ik:rNB:0[O:®GUܯX~I@
l>k[ۢaNv%p3yv,u.<8zc˽GcNW
6E~b!:]P$zdjksӒɶcϣJq qhi'p7m	GrN?&YcIannDFȺфcmףGkqySKOi䳴lVK
(`@lgJ˰/|tXSI5E~w?MP<q>1綴-Bذ+mȁ Rsa㆜~"+Y/cRYScj6v$j!fӱ1U4jX%{@oX/dr,ZK0zqK|$tb̥N^5~TءQ?K.qJ8[QcVAsy͉]-֗sjѐʷ6ȷWhMCSWGôvqu{58V7l)~z vԡ|<D,jؽs>2_l~֬QcV>Ub0RO`;&3/K`J6H	OlWa4
^;
g=(^qDt*іOυS~Ab,|᜶dD{4\9>9) j58
@EoaժS-`X]ж+w;M7g255eo;trp>y>Yu6={xr*/ &৽'R5jTT^ߢv!>ۅ 5BNr_1ʠga
Bn5;W)lqk둘զQy?A9;
^e!AKy)<g%l}_F.uٻ.lX_|[8~_-6$׃2uֆs+s˜$&7O۽u&ZZgKg		ŝ/s7WNv.rvK}Mǳ5(%:d U,^^OigQ)!}>0歽ppR%~}flG[	s>LVp2r-c1sTRpsAKbr% 
u><i|4C%}"  :+
) 9g
RytqOMlؾUM^-q.>ߛpclgj<\J^m*>V)j{ʶz
QfF$r(P,oڰs鮧 2-eVUo6Px
dmݬ!OkD!ˣqSHGDݜH,YE8,x]\P>"n.ѹz~o9x_*֓\.S8seM%9$
 'H_RG3s:3Tho	A<)qvTL'V?ޜ\Yw'WƄF]؀$>U'o%:S]w,*	R_⳵ʢA5m2v0Q9a XWL$3HiIull?/
|oQl'[	-@p| ` GU8zO%t|.,OXsMa~c<޲N5n'Җv` \&|\O!OrZy."&CV:bF}C@w.i\_fïG[]B&]|*ņpVyXA)&8ļz٠WNY^iRtQ@{Z;LػVϬS	P3(TPHS f@FWW9YBA htY*jv-[m,1F@:kyNXӲC}t~L|k$%gCTk$~Jp)WVI=u6JF>+բ9/lRq~u,&`
9DۧNQlrvAi|-"mcB' R0 @YS/x
 #(d5L1>P}Ю֞woG;/o{ZuvvԡW=UpV*FtǏ0	:~qQ ,sy|6xz	<Cx4z! ]FX{'B΅:6 nV8ǣe\gwBx䟺~<b>&\b8W=竂ZDWcib9Hg!T/H1Ww8K&Wî34U,_GqQ	*#^vUSeV׭HO	?ô&gE
G'>Z7YuN	<6__vaA[_ÓUT1<[ץ:ԫ2c ޻(rk03%# @w?G&TKIˡm|>ϠFT5NB*ԔlDg?[\13WEDnޮ/*~}1^tGf#~ >x,pΠ	i)9͋!!rs-E x|[7N3otƹy!J7Y,>h(tFgӳVʍ\0
Q_Di,Nmp(DzY'˞F5%ou*
/_
>T?:O9VK-f8n54J9u]j[㤟/jAo?K*W.#wfUUCUrJU&$]%88Tm{UO'[7]=yj_j4ݮma*B%M`ytwe+_=Q4k&C|Ϋ)'
Dy9-,O,AkW	kY,kaqs5$bMQVICg9^t;$qoy$saM+8UulFڶ+f@֗(>ݙV+}'t6g(qUd^ǁ\șNpAg5<PP#^Jp0.yq5&p]%(SҹWev+)? imp`g6S .<t84T\&A󵰿|U*Zgv0,sMoalLzYhkq !?Ht1ȁ2uDvm*i/n.tnΓ"~8<%ȵ	.tz䗆owUfvS)@ kßnӦF&Kp l\[e^~%VWWuыܐ55
vUo{F#(	Nqzg\8 v4mZLk6G9|9R BQTbu-p ,Ij7v]KI^8`:Rk&&("*cӝ\>H\\)q5HHI2{sY.`Ř@J0?YLy{X.=.]QɆ&>toєKd
DOzT?EM܊v\V7.'%T
ޕG,HT[^ɬΣ]%Q Byrpԑ"{nG9N(wr25v{\0]^|]A%)ZF:^`ڭ9^b=_{c$ŧ>
;Y

+5sQg(2MX O/nRw5ȟoͬg2N溸Ãk۠RI5c`۹*z؉oruh@b*u$/&beII6
/@f 2$z>9eq~EO4cf~D *|CXA&VQ[URU㺭@}WPQ-GlnOi~je@5x4"~CO*[JGʡ
㚴TNwaͳJ1$ԔKѵu(Jb^qƷ%t{f[is(H:'	fh> ŗ_Y>UY>BS_E ħX\v&?#Pw G'-8Kt L)u_t{澭&@O<-g^vqjFZ+ ʯR.45T3Θ)ʲGq~:&TK*_ɱ
E%_*%jW-8-9줥Aʿz7gafc\n#ɲv(4 p{h
X@qфo*e.<Ce|GZ}S뮚w͑*Z8%	{S`P:Hs̡ 	8d1dȶ;WB3>p[4.7&՟$w05?W?ڣȴ+\\Z&T\XJvh]%wG [l.v>e5H=mVS}P"O#W`e=OgAL;nM8H]ATq=2(xvTWo_r͒wCe8K0l}dph?Õ|'Mrs,W""R}pG>{X񺍸cٙ"/}_9	P?g9{iS^㲒]*;r#-tjmVAgf{@ZЮhQG4
(ǀob[Sя@
C#C,6N2z\lxgGA;ᥚ]"q` yh\>
p<ui߮T;何ݳ
\'%g['X\V2ɰެ=S	ơjI	I==	VҧOF^p^v(+Y֛ئ#,yQ@uzP|t8DiT' 3k\YzBN|2٨!!1<v>HP
%
2eAWq| Ah::$ȥJb~1$'YiGjp/I֙}R7
c[XoXUp/ΎFӦl~%P+Fǥ7673{9=%}H/$e's
⵴íupP	~޼UK1k4nnM:K20kR/+KP\Wu߷N{ib,-؞QbIi?t9+q~}WעW@ncK%aVdrꊚ4 u眎3Nh~:Ҁ{	<HG(r DPem^"$
Fj>$q =ao'DS$CnU5șV oi+\C-R
r$
ńD aM
ύC9	!ZڰcHF`Պ~Mᄭ8@!cegGp13iL~Mr@;դ? %
Ǎ Ev\lk4 D4Ľ'xDtbQOOŞ6U.u]r~ZO5AvvHHlÀT9CF2n|Jȝ'΀Cn~-W
K3p=_N2>u0n,hCQ\|nBS!{h	2¨NjT{ ݆s^N[)g;<r;ϴG97l!VҧOHa Q2	eM6U	;wDem2whɮץ:=.[{CsI%S9E@sB]gW;+IDSmCf}GgOn䭼Nte=<=}=1#@*36ufAIOkM4|NkJ[H9XU'#8dd#t*rb`<u$BPww༚ JJx T
=fR_SmpDX6SwT	Ndr>=rI	!CEMNk,?s:BG1T
-GV5JR|q'$T][:8^7ްV5v+%~?}e*e8a-w:a裑EOra8nswQ(($q19H$LpKHH\[ZIY"อˣ5HBùh˕hjŕZZ&\p3)H*[m"Xr x\SwNv^F[pIYU3<Co3[BJ[	O:yDJwyC\l _̞oyC+9*VQ%_^KZܧmAeުO)A*Z0c.: Kh%C]ʕ)Ou(>n \HTKB<lWLs&(k3JR\Sí
\:FぼߤsX(-Vݡg
>]&:5Ta69ܪ85bEHx|z}&w!~`&99\i B+1WO 9R|XKJrۛiJ'ӻhnZ<8e*1獨)ˋ9!ǣ{r:xlggS^n.OZՋNīCS.NӀbP/ŉa5Q燓ź<97[#Wѩ&9CG0 p#{reo~j	["d7EGԵO[ߑ3PY6#[7 K]5|O1qTY$,ba ~s7Ι x:}sLx*LWw	fj1DKh鸓	vCE*pq;ptTaC~ͥSx{!ծ;\|K/a":"6r:AdC#A(yeWP$<Nz|3׳tª\RҎ&5EUz=iԆ(z  x!eqJQ֩<E{kr5i\{A0;s$PZ+gw;Ta8sz ou%v	ѕw+P@9uDsD=mA/@ܖ2@ytKa1.P=fGsqޤ1\;.-M{5j(W@=s;0O9RPr928>OWuGΧ
pr`O#ύ
|T;A8drF~ -KK}[h\Q忯8u*;~̊Ly#}6*˨ oxȕ׎#60ǫrS4xeUBO(dYO&t
*K= BZGmu|ibu96
 6L^֖X
ԓ$&IvV8*kTݖ)Y'9	cU
c}Cy;@{_:bVjbwgp,%C5@ڽlsUF87V%ufA+y]Eh{N#}D7ϩu^^ڀFU}N2;WLd	cU4L-DߔgNN3K:ـ$^co_<AHag<@ٝYSX<ڻ9|UH$'&tS!A^j=}15G!pis[GG@gA h
ԱT15i"Llwo,0vCw|Q|z5 )-@tǞVʼnc@$*|ao#E2Ȫ-yuZ![76
{'/\먪C~{ 8 UL<  C;#&,7v'|z']tehpyvm8f_-%ܣ\a̡iDή\B`B|ʿ9lQ<}R#&yp1tn&CF$/Ve]:LWV>
=S&:UvU,9"\zoF-ϓo+֕el,pLlίEvZGOnq.Uے& #g*5~vKM<7@vQj<oTY[	cNq΃9Ïà2z?Ֆ`Q7bEz@Wr[tb@+#K@~@(G#
W:ryZJF9B

	F/`	\߃YOT*ɖ&
Qx%"roe
Y<d-qխ7UT*ͪOHnkOz[n5^n7"}c.xD,i<qY"X<
vfʻyQbsk	PӃMaG1hTq;ozN?pz[
w+
Pִsvu_(LJ|LT'}pz]T儅ἢ婐^
?zmD.O e2~jJϱ=$G.d,]Bpa) xyG[]J^MRqog8o'T>q2K\ݟfխ[矉Pƿ4,1a,y}K[ )y- "Vn<qJN/ehq9TwIp:nج ?#ϵˁ>ֲk%HuؽC:H6|/z6\)J&=]!NTh|GY:U:ɬK׳otCgS_HV_:!k3ҿ/+~9쩿V!L;*LN:[)$-뺄x࠴C2|PG'l5
Uop'ODv2m*sw|׽}BwgCЌ~>zi(N
TI}J];#bյar0zkTQq=9Y Gk3_8s8"ּ]gnWSaXCqܮ*N1p}ܕ1:Mhp_&%-j9E8w?9[iC4݈;Km\B=mg@U'T jujO ~+7'M9f@t1=WVAnmQ$N	GUWJrO#:{ݑ#_Ed$.?>GM
kMyhʘ< ޟUo]5a	u<KI ]lhU#*`W\-x7uj~LH.Ŵ
5 =WӨr59Cj|*cH:*Fw7`p&=8Uͮ Nqh*PùS )X%TȊ91׭sǹ>l;>c{1L?Ep;|U?B}З"g`+ǮV4>SE7Ťy"?"VO.)`k;}[
.ϻd!<G+3=$K/|
R)3Tsg3N3@kq`I5gCzHCiK{BֶU}SvřWTKMQQ:VɍtsQPS߾iѸxdsa.LV:y:74(GIYs]Y3	օJ{ھwR'ń	cB&+pT D+	W%wVA;701l>	mQt;I]yN<*n]5\T*ʲ(y5Ap5)W*Qj妶[TJʻB\OSE>=;򺜢/wuEwXPj5;^u8H7Oގ턡ַEꪙ|zhIt|AQ[(5Զ(Ut"oA޹ Zco5#[םUV!as>I|WSdhSUЦfPVrc<SO.U	_cM~~%ccb^*v4؊@hlt+Dv2s:xid)cX_d}]曔Ͳ4Hj	0[\%Mi]Ӛa7F\n*3׃hy*T(F<YP{ 7ޭ0vK[QijZ'!\KRHE$m<?_cNF]=-{qHcg~V'LRI|
II[ȟN&jo߳e/(oKOU	_]v+K:WZ%s*uV7hIr5thkV88]Yo(s?{<K%B"7@j+=Z]stTg5;"f+f+fE]0=-]ft`t9Н6_x(;EX3cIfad"\De!iKdtÍT>x!D}(.3ͯĹsOWxyY;!űW|ٮ"XIw -c8Hg>i!nٙc' B:I{ӹ@c֝!CQ!C~	>v!x[\ܺXޒ[t@ZHN9ox|oz6z-]9.hjB^St#;L^b`l6ҩv>#	UJOĠNreӘϡ8d9-K*I\3ʮ>(/4ABCo؀wmB
%u+ޟ%}|2}#QZ.x/lsZ: 
R31̺H[)*HՍsc35"{kyz
sD\YЙt#,ݢI~x
H8Q_mÆ0;]Rt!uEG˷FTӐ2`}]u֣#3xJ)DO	heKĺ1Q!ԽQ{
UZxJ|RT:W=>-E
o?pvh"q4erm-AE%5lxU;Fp8%C^j",>Aq*QPRpmč9.A8{f5@%М#8=a+<\sSNvP8NM՞dg]MŦsqTHJSm7kI[ֺ3CY5|2alqCMA,љ[YDɮ˃8*UR(D?
0ҫkZuRoTKԨ~j>.q{/kw}Sa2+.YT@l<	f㻼?oF_]]^4 a:G`:7]Wq>+NW~Œ%+;=V_>S|Es,ꅤ|n5izɷ%U4R}%<*%=- Rՙc:<I*-A| ,9@/hpU;A&Q?v Q944_$2x#WކƢl/*NM	oЪ58V-v}+g6vyzLr ^bh-v@]sV
fj7߻
xqWRM#p.no+pXIbQˈH+	jkrf CKxtOjj>Mpq7/iW;~r
f&),TmiCR5|}bzJuZ/5y`՘ۺlUH!5g+;Uϙ	)\1ɢ <9/du">;t@gZNt3MˇUW	M ѩVE[Dt]C5->`*GR;K\0Bo?={~;ʿX5Kؑ˩,sT1tt*0E7FvJ=+67VFW]~lSmmwյ=@ُJ._!t4>!M?(rfk]	F7XqoѦaxaY x2޻%0uu3]$JN+ y.z.He@lWsv:C٠L͊XQy}Ť+5VBNM[w8ǀ%!\K0ԽWwrY|ZCFU%+zڥ|&)>J$.^}Ê琜i$1gPRs;nr2]bq|O%OGX^Gp9֥	mq3D[Դk'ǶpGA_5DtE CЁ3D4N5|b)qpu'Ű>7I'us_sGn*1Sn'(*Ov(qWRM\u<_@Sxq&LbCHI{6)IS ;>z_s]smٵtm_ul9n$ <ƧbmW`-o9Nb
\_f򽉴x%X0`5L^+W;haU+(O&ޕ^}@y^;Z\Sa`/zogysS\_a\sɢI^D蠫[p٬P~w4K>wUH-7׵JOyκR漦ڤ)Bl2_(ݎt<Zt'Y+p1Oc76usmq$xBSyOOvAl|r{NmEe9Aj0Nڵ4u(Iq+y=g>? aW-$]voK^O_#rȱ7ٰ˧a.a9g71xJP|h_Ѹ]3Sc8hA(6^
ǀjE@rG,ʽQg q	)t	jR;urnQ@ǁ]_*+f6ʲZ
_Vl崹n5hUCrhP
	BoǹͥTPmخr:5%|sޯX->Xp
({N'Օkj>ypG?[=oϢËzKb;7Iv3^H)E%r>,p͞)ou<dSf'4Yvagu=}JNHPXTcyO$O>HK)8;J\aSz#Ty:.sg@uhq5{_ȍ.H[fд KZ&Xeo"r}uPsԑhy<ovr@^6V3zujC&~ewZE!cV"pe[;cׯ{Pܭ8GLeJd[L(>Mu<қ`.N78?X2ح?+kf6cQRN$dY$u6!5CʚWVwK*RMw5cKqDp-m]o V߳P#;L h_b7PE` XlHlѩD`U­7p݀
΀AF@Y5QAp,dlC.a} {!)%V}PUOb"䘀[G7hswz-(erW2뱮sUA]Boԫ4ygM*'E6@%Tu>V?73X#>cUY|YCL"ՄītPՋ̛>\Zei|{W>ǈLO#4
Z
vLJ9 FK5uu[k;oE[+2Po)+7zO;_fikmkh._jQNU_Zm&-	b+[VaC﹭LE(_kೊy6"~:pu= e?l3f'ѝ3@K^LӒWPE%_`<B5mҩp~qəTf>(\\t	d>fK/mydetԘS8
*~.`:DBSM+fBD]?ѺPsx1}cKW<d!! C;ASYխ yv{I\IjɇD޶tn&*-/G꾬b?j[~ڀ+Wr<.O#(}P.chs+	[GJ?U|啎$K*oxE{5
I+Lۭ.߮<
*Zssֲep[$*;/_{aIox$<Sm@;pَa3eE/ Ut\M+ƶRFYm
W~-ٽϣaR\!\~z[l@#bTފX[ΰs6+HnTrhnIGo1NfGY)=bKIPsBua0/ ~b,xA+PM	*ԮWaiع|g{
L+Z ]]cy<!lM~=$~J%#W=(:5յoPTU٘,uQUԧ >GA,0ر8d9^{=W1t8W
' ~xBΛO΍Wu3%F&~iz}KLՑfc5ݯ%贋0&fM5o?Գkv&\%Jp 7z,AǕ*QkRLk#LJ~hch
y1jT8o5n{;S6е l{C4"Ga*>Ջo39_v5`}PϹ]]ŕ\a₿#eWWn_8k)_qXvBo%vy3yCϚ2
[l{8aJF.}*2tzX)těu%H]4O1]h|1'O
ㅅSYw!w%p}Uy6R!b˽eJPrfgR;L#mb*.@{vUOX& @"<B8K3#:OTKDz`9Ki[\< !An_ʐ$rg߼Cx9V1&ܷI4 J^665z-dv\)5
sG^ķKt:]^OZBP<y7Z?XquXR9Hѐg=ppM-٫\0/2Ȱ,:ٵvoH\m*-HP<5bLGXlNʇ`VKlIUÉ}ÑO")۔+ESP\^"0ٲV^~[=OZkPn}喛rH^I9tU^8}>F
V>˓fYEUg8Ҧ5:z|St.b*@&I9A!EqYCY9梯XWWigAhvURya)wqj(Tɸ[++E)瑵~ h/dT
6NaripqspyP@'WsOgUUF݆} HD.|2RA	{^HQzM:.ịbJvz.-_23oa1.tVZqIݜeCw$ٮS EmzzxlFዯy;*I\ш;*KorƯ[!:N|pFm ehUO>cO_^oO+>_kx^1pwRgNO(޳v:!
D}r-	U%UT4-˯/:4s
~v&7'[~IؽqGOTC=zvکᶖE;JZE[d+:΅ uaƵ΋ȵAr8\M3_zPZ5'1IΚ{-49?B@> pMKm;[ SfPvkaW,Oݤdi<\y~;
/T1
/j]9eYn@/4j|AEK¡TZ=]9c;pmO\<?8TKWKiD:V[Qd	6 !bC'5+ơtbeK<w[!LhӑM*>Pc3<Du@Á+"C+r 1Ԝ<vIʮ%GBx[LoLá'ѝSh&8tDGC0BkQ+t
WE@.U{舽PZ_Kbum!_Tه!!wKsgNrvc-@`Kx_&<҅UFLP/	(=	*8_NVzaWALgEfNS
\$BA0jQnBTtIQau6vW(o*GydCFf'b;7:Ir8:o]@
Фk*ğF2ߥ	/R^:z,l5-u}VK1i9}XhۭT8-~$ΒUһIgC8?)[-S~"MG*0r/a|Z+GZJ61G64"'M5S'ՄܺiV[e>B쪩Pt ;-"|+1UH(sΪ鞕BRQ@=>BYqin-M8}])_(Ap*YӋB,~U9kK|+N6Q6A/2RP9o@nhNJeSYZg;ߡ?V!@@gՑޅÿ6l埿:/pWQX7{nasSIDM8jtYa`݉ΚKFP!Gs4qЩ0˵!z_³yJ?l)i&>Хfv&[0L.ʧ9DUأܕ`Uiٱ4/A/	H>eyG]uqcF	@U]]{*nݩ#H{z<T=KKpQcPzpC%VXvmi=vG
lR}8>7DNk.^"
"bخ̌S[o&"H|O5{C9i_|gJyE3(p&?mls14T~?]w
n@Lg7GAl9
ӃhC
x Z3 p:~8,Oǲx7qSEM"U/.3$@;gUL;?cՃ(NxW۬wO"i56HMzpT=ǫ8)ȧכ;!&}e$&zMkI1{Ow(mI1>PY3/S#s~:
?\A4yO>͛AX:{L$@dթ p#[aQG׌~CNJWIss9ǯVT, nɹ9`s2;9Y⥎S
5Swq]C&+4f۟]8A6,tI_	 !T;KtsI>:((m}<rw3''/q ^'1Rm\;]W]pU3Ew
_]	~>, J&սlwr$1gPC }oziɹ9Vs-Z8T\GpS,S}Z`\;Us<f.FrtEdN; {ifY.IU3<G	d)]aBAaUo"t^?.._|Ps9Zt1۽\Qgxu7AMPoN1'	vG6O^O*:<uWtxDZ'(!iAqK{PltL"du@x!
yd?'dO&`YdBmUt|o<S׮nl$(lJG T ~	,q#A1Oؘ=W`>( p$ukrP)|l
Voꆣ$RB'e<p 9))xe~M[9:BۭNTJo6goJrPes
_lGAam)av2x['D iPto: 9IF0W7~;TqR
4 e2#/'t*mC
5CQ[@y-#ɟ~B_YIbkN˖a,P uzCEٳ˥f1b3:+ŀUmB*09ôU"ߒȨϔ/zVgYI}KVWGD	tU𙛌-N8jtd?w!5`̑Sq~#C/RtJ<Ou"5f1_mm	yddٝ7( 
<3g!ki@PC<B<F>θ:Jv\n#F
B<-pj:ZOPBW	#US_Rx>	
cQ4Ocl#9ф6Ȧ{}(5 UE[x`Phuє(T6oUk6me崤G=O U
X`PIn6yF,c:ٝBװf@_q҄o!8☮z( xwRVCY.
LR5Zy\A
6ll.ncq|Hxp_%VzSO'nUKyHĔ6-hm+
]aqEť)@P+uK?҅ZEVf)~M⦩j|NpygJӼrf9uؕc}dA0iű[!p~V`~,wx.j7n
K8Q_yͥWu	}ӱ"N ӫ$Qmy~-uvo5تdJtPsYlWPc~]1|nje0_n\
}h(&3
dƻ'.;58 ;TxMRw_@r67_WkOVmޗ|::'kSlWME8@<ȳnrBXG\
I{HW]x"
Ϊڧ܍X"l#(j^s[N;[ҡ-Yz}J2W$ s{󮖩.up
ċV-&/vm՗nX[j9@uBzKES~n|AEH0:l=(홗.B`FuY	l$o{Vu+qX>DJuiq)% A^r{]pV>D]eOd2˾@(Pl\zKWv{8dmXM1qsg#w}}ƼӒa/''pķ[nڜ
pqW9[OςڷLT_~qo -׺>g1Ec>\
a@{aNxtRvq/RҩUZ6oH ur֙[]9~$x)T|xHЁr8kص.~#_v/W#ru <I
^Q;@\N~Gu9N{qrY$I(`yK`ᓨcGn|λ i&ڀ` pq3Mb)鲜Sϡ_6gPy$AqU!J׋	UPcm7ܨys'BܙfYqlھ{	߾B2o9_DL1*ԓÓ;tjVYz@Z54
5G{-){
=Xv(9d'O3?p
-/['XXFO`Ǧj\<sP<M!1+nԙܷʋw.~-h3O+Fo@0Q-ΗWzSp=˿-\mB΍j:q42Ȃ)@"h[~R uRBzK:ueg4z&*r(к	}[][Kf |(
r S
?pK9q?'x*#%NQOU<>%A*vY|oHs.&-WGC%2*|+mEڪ>SGW9#ia|DfbgG}
Aؾ|:0{\"H6W"Vd'8K	</m۷+>_[V,Us=t}+ox9	RUQd*LM֠'lV#@= @K3$iQ}tӸFvA fȬJ_
{"Ʈo3Bj$IN~'f4cqNbE)VTv#19+/!M/^8RLS/jG[J;FglOWyOw?|q^VpE8!'L8Z]l.h{oPl' Dւhu!uE}=a>3Yv^o^/F;^>/6{CksۣgU~s\]9wBNwQvY8SZY4-B&qpOwᱜlb׾eMўh?U6VL9R־0y:)gMZ6t j
}^;'O\O9T l-5T3ݜr%*aUQ+Tc~lp鯶iV)<.ZPm-}t3y0^C۱~Ɛ?Ȏ4rVKb}42: q>R>?Gl,mbYO!@+4E9Qw\%`s%
"=\z̇=y1.4<
O(%~|uXu3WVqbQ!?tjy΁:"O:YHO뼅'*s0HYg,c9c]O诟
5rr !)ӖiĖZ"ثdr{wsɗ
HU-zlk %_}!|fH|G=ZɎS.6#naMvr phsJ8t[ Q>2'@SqFTOͩ?T%zgy*J\*aI7*XXi?48tqAZ%~[8p"=I

-ybWW)Φa:֏Wܚ%̓x6\־ͭsb׽UZM:zV)9)Jh-Y"!Aکi;A0<Wr;u1_}2#EƙäZLq@Сou0sTH}|36n"q loH|]^o!HJp*ɕ%ͮY/uvMK
<5V49\>c ϪڜSC5Ϲ=_b	"6ʟ;nw:o&24<`#9-/7%HY/GaNxΙ"gxvxvn zY<Eu;kWc$Yqvk)_4u-=GĥU'ş㜪SzCAm߾YoZlnnu'J8;l^Rcki[eV;+7Aϻ~c"oKlNUc	ǉV-ПK {Tvu<;d]iv\c\RttM-D˚6L.C7NpPG1!L|}n.v,kRUվ{uLQr]j?11`w؟z'YGb(
=Rr-%>r:8H_O>6
VOy"o*PBէį
5	I/SjhQ[ESN{8N'aFZ:JOS&\AFA}3Hxͦ9a_aIKW*tUyk3_Pn>0$yc-tBUǂj!nP,9JB;.w;:Х[m38JUJ|$nԀ}{:)|DKk3
bQ0(KG^hk DK H+s7M]UB]darpֱ\enUm2?Jޤ}:V~n=dR(9r61ŻJ+s.	mE/ ZIQ&W-ߗ|ց	AuX*.j\+
k5c|E\N?hM,m"t^ƅNbd UiND4Wḗ$?mKUqd?^Gzl~$SrTbbF Wb<Hu3d?ޗ>/gM
KLh]9=vvעx4@iFomkL'tЄE_=cʚh%iAENq/Ա$7նJVljY7=V4^e]7]*Ӆ}@\/"G*k:G'V
pÝ?GcpZ1B_ΌKܖ:ұm➝ߣou̟jn d(BvP HzMVUжأŪ8g( [Yd/5lҏbyَ[og
OȾʯ9^n{KRYNi(&3t}aD.{$>V&qr dtRy~sYx*Z
u	#tW8/N'sT?R/뵜Q^q{=S\M4f^XJ}&m@TUfR>s	vNہT/ڵLGJ3{4)(L7 $8.)AϯOtumbue0%*2'vs((qPTSN|5c粸sNW\fb6	ǆvS9|9-*mUiPCnHQzd &?m7q]F\Wk#~ua%\mL+)QwPw/f|^6xp
R,#\8,kB+Ŀ.0w /ZlnBuO:lgC7lA87mns(ՋF_ BjhxOy!rwp@D;-뽿9i)k?Ztx9l	@wNE'J9~(q}#8OЩd=e88	y;JxW*fiHѤ )S^(![v61ʂ_C+ߡGP݀x>)шk{V-JSJw&uSCijRR}
[gTŬ4$^}~}W5s9QڬtX'ow:?%{VSgn*W bOk\Z0E&
h}u&oZuN>]Q.vhqmX9Go/-lhdsJ))ϋؓkM;_Gd}gm;*f~*7-4oөwJrZa"AZ!' RMX\%d:muWTK7%GR#=-^!.MbȧŐCD:ا.[5B>=y	ÖMs'v `].pL0
vkͅspAEIVsJWv0L|ˢ
M["|ɼ(f=T@-M!8/	dh[X)8o*[f*$N rV%G*jBSKY]TN2ZE
'~Ʉ!sk~es/OB~g&h fv>t?A9}qBLBqn^ABz\Jt5VwN)6Nuxm]$g麎>Fjpͭ`y.Bnޘ;t1QUı:A1S<
ʪ3iπJ`0!,7K)eip188@1Sg!;c*3T֣tyrԫ	9{
ښ.;{I%Eg@Jp$pZ^e0\0O
P}]g8ԆgqM_e2ψc	 sݹOE?%5XFN ԡ:A94AO,O2NNtYѺ@C3ctw,Vl+0>FGx-z/ƍRƢ~̡uH %U	UH*S^OV2K|]rQU s5PT,nuj:? _~+:dEGryTWA'zJ:}2v1lݮLs-j<"KAC(G <mOù43~ߏڰsh0)XP6yNf?ՔVu`אi
'u[\]cAĮ@a%

E$ /g~Fl=#.u@|i, |9~rs!߷wukGܹڲc֯VTH2$Ӑ/@~AF	'\AzUZAq
gJyE\&U<zt6=uǠ#]F7)]׈{Y &
gXvw	UW<#,5vU^zG{Vo\:ـմsPT y&m8y M~X>8WSs؅C!45fU@qzw
>WWvmd=TxuBg۽5aAZH%LQڟj*ca r
_]Cl%@j;rX
t.MjٱOJIa=</͓:*@rp56 7YM@I~1mP)1Z'@"Zam%ԃRk| Fdtޤ+7 EۿoS7?߰R?MTm1_6k)G .~&r,@g@\ۋ%kA5gn|IVd	&6:X;٬l"er?@"ЈNת^Kwvi	OHeyjS8[޺PX bhX{UJkM;X'uxΫ˱^TWaZ.З<R~YO>MxL14\G^Gi⺳ݧ
W'EMTs<ޢZAO'6}xoSBW
o;Vx`p#,YE[[ZLvW=oU^zBgxⓧ..Ro)\_
<GvClj|?UYpww-J#^#須iU	̚%H8ђkx'*[[Wec>Uz,r:}Mۅ:P
ƫ~ʔlG8"
uG+E|ۮpr'IˑpAѩ]T!#p
LǈRPXT-IY")g4{	ҷfIUG\~P	޻j4
>I:`BSmt󢸄VH
9nJ_<3/ _!b;$U9äg|_z,? qϛ18BݡQ{蟠O@1ժ?`SӊLk]trP<<˭%@"- r$wӆगuYu7q_e!aٔO!AxzT~`   p$Yn!wꈯkН=?%eOV|V{Axؑeۙj@tc8\i|q9FHV;%:jyt
گ)۝raP(j\@|4.
}TlѝFë5)]MFla R#Ғ']$
OɄ ["p}!)Xpk*^	Hq>|^^Gyp !$>*n$2(dttལ6pɲfr hQ CNQ_
'4e"B֜~Cʉ4WƵpAG.f,(^K> [Npqn'5ѩ:Z=+$pB";$
͟ëNA⌟BjT4|{gor+§NmĪ#[ga2̶V4ª㡱9KR_{1Ӛ*x]-{t&K3we ԢYPrFpY"8C.%_# &v]Q7ϣVVpaRP6f2zS ~\erGTGHZWɼXcECZ{;\tyJ;@9[
'ft	4ƹUz'p=g=o,A-ؽw/C4FW>Qg]?:2\ нO)T0pFQPY-Z
ě@Xbpy>+/u.^fX_G|mǏoqfu'i7F+qJa(OdvϽsQ%-ó䤎)kk*.~gkW-f,'ʗ>:$9V3-ͩIyRg`m SMrV4G:!(^]͵,I?~&4MT,ʯV[Ei{
lJFa4Y",Onډ[	=cDuikn;]n&ܾ1CT% j}860!Pzk;%MGQ\	teSAkym^7Wp/CDt^[nDY7xYb=,]R 96ϛdUwf'e6CBʿ|k"%V
hc|1 疂JO߱ϏlR4el[Xمdrּ_j}rߊңrJirC@4
n֦*JC!&b`r Q)t%NC _MSdl$E3<TM/_];[N|b{zJlGnⴋ}ǐ=iw}zÖ/z>Y8ƚ3hՔ/8\MG3IPs[%lq:7a`ͬbIbqou~I9
Hlhլ~8+?*NWU8=7XSĎtF:f!3쳏;eʾKxIZ1|L==RM"6䑍Im;	;g	wOFG5vAU[Y ~E˕rml!PM쭹N读31e꣱dmjjp|jj~F*}NW3<ؤg
Fr7 6G'	{O<f@hQhliOHbIͺ .yEVp85W o RokKߣOs$ATn|"#AvNs+ExAi>n8%*Ym 6P-uqCcq;68eij5$+ʄ~7LjYgQl:u$֝!cY\TI:OeSu
tyupz*Kw8-")MIWX^Ujn_g7
IpH2,oߑT!b,gx8{CJF^ԋrF3|
qf^O/
,MGuE ʨ$䝘};5M\C"\̈u⤗w'%]ipJ<:TWٍ̓V;?X<MkSrL^Iu5Pm5@25#	)<o٥g
1ѩYꔑ]ɱK&(;"[iU)CE~	nc5E;z9IqreY+y6C=au79!Xhr\(oWWqJ=MMΟ/o
 Z"M!It{'
motRԔggԂUM"/"ۓEtT]h-W_*ptMWLh-9UsʍťF<Z__a8ޠ]ђ}KBOЊɌٴp_,,컞s
 oڤ+E2v^gaW5ѵpk̛e\p pG'A|g>N<NjKy?_bԲ}eXrEp+"u'Tfk(>zGuWݾ˙tUR+$*[xrW~pV!JG8u
QŮ{)6F;4Q\ش,wxh^c?C6ŌK|SEJ]0>hy((S:HLg.?.
S!+v
0jZiE7PV5j`E#vd>S
)Ra.!*:eC%[:*'s'oB^A `-~+4HAѬsE{G.]9ŽV|s8h5u!	nE5@DH<{UtX#pIuJ̡#	_!ϾZp"+/'h[qپ\+ g*9xKXp/r
oޯ6MTiѹʖ8[/XK̯kmtV5o
^l	-bQ{>7Q{!yiIKʢ&E~}fNf\ڄ'
8DMϷ)ژo T9X|Va; Zʜ;Vеymxm٩ʠͮHR9C 5#%<qa׹OQEyv*?ܤ!r(y5*E^)"o'U^_;`_-:q+<npYLIFQ{>fEzȟk6m~ {k{ACW_D#{{QZQ%3m!;Aѧ)R;&rhCN=<-86ڽ<JڙjL<8{[Mذ
SyίSHf!BN`om6r
ÊV;q$@?oIl,rT}km~mUUADƀ aGJsIwֈNGXoPw
:Wݡ<U":~\ySz<VEhaZr1Û79jnwb(/JOOPŝ8DmN]t\o#veN2`ZjlkHJ|{Sj§L!CV\@j7+.9%ML>gGtg1Zn2ݙg/E9?n7ѶcǐFH_wLj7StkxPo+_Tԫj5,9\ܝ*gN3n3G5sֱ<wP%O
P-H_g.? ?@Zy8Ps|CǮrǶ<inU.4SE
5rk˭y2htRpMyidGHCմ#tSU)+{yqS J 'tT؏bSUOY3'3
V.9Q' 8.S\d8u[t}$T^]D>InIL{CO
HI]5nMjk ^Ň@A>KvWL7oT­%[nk3s\͙-l_c^N?Ϸ+B"+I2d1+dU^OD)yKP^E
b#*5RQ񧭳Un:*&ό{u-;Y$j>{->.g9pǣ	RBeQ
&w|]GƿM .J3څi$ymDZ>lAVS J>4}\>Ic[#q
iW\KTAZ4AWdݮPnK7 
V=9MΤ[zU
Y+n:hŻ7GU 38ӡڜC٩ey9A:r'ݏ:<V&A&ԻKG
߷1Xe9rvhuC(ZV~?+iKV(cz?h8HthKrn|v58J
V9fԶ;d,9-@j|_S}/W!7hD_QÅx`K&\P;Ҋ+|h[9V2:p^)wOEc1ͧME3 eVrm{n=	ŗ\YH/j.Mjҧb#C[qU3
'˱El$O7m"?M^Ðk g[`KSOkI_gD߳_]4n)v$iLpT=p	e+ZZHÁ?pWgtwUm-n4:0;@t9b;[kZI߁,Zj"\<\HwJdݜRknה hr5FbѧkЗ!VrkI8BP3$W_3Tzku\\u~v^E}JCns}Cښ)j2\v݊,QhWH}1T#,w_׆gd]pB CT%юKmg!" ֦iMI:ePnT<+!Z!F` ȑ]vnǄ:r,<Fٚl668sorO9ckI$&ZGG].=.c:ڼDnE4rEsiV|-=}E[o9B& FiM
g{j6şۣ.ʂ[	CSZL5gm0Lj.&GF[ǧF?2e4JҭSGK~]Ȃe=DBxrt芍^utP@>=s=|4GYX0m}h3d)xI=?sMFn_$7ri)ވcU"]
R}v(5pp8R5zw4S(/.UM.iʣQU5<
6gI/+I<ss9J/.HGs
~67;`ǿ#Iaj}ȣ{$wpo%-gUc9sv鳍WE܇]%ʣc/zR1>J=A
пʶ%)}X,J+.&y$p A]RO]<u» y#>9@+ ҂%޺y
`S6Wm>Zsߞv*C}pڈ}ᔴxGgV6]U]srvD%\m\yenj^EpWsnv}=F%H[y+i*'5<گAe|zo'-$;AZ)ԉs3SyZA WD@!w^u4h;-]<U,.lIL}(UIfaL`Ⓣ7'г^`S:F`BOвP$T'XOT
'JlM:\U4%ħcNuݮ|nDfC_G]*d	>Wc+!%)3nKx/DNG#0Hy1zf_;)[T:z*%ZEХrt(
9WÎy(V)Z'i	rԯvSTkwB2΁+KV))G^>І&A -鷲	R֔rrN[5L!U:Rwi8ldG~~o)[^@5րsuF>9VT#fދasvp%e-ϭiYL.aTһz` nbLq<tG h50[
#6ȭdv	X*|ns_!߆LRS?vᇂfhXREGqm,/%ݪe~RLJ!G9Kh.'U_M IN Hu^1(xry~m\vS[>e9E0PKG3γc@$n%9*w89>$ @g~xE*8YVy}-v}4޾E|GmCvo7\k2Ez1p$OtwE?}5ik!F0VBTM8=u&Ϟ⟰pxjTQ%Wq{{@]q5QLş"* C e%UWc:
q3fz0
P8Gᵶ|?~YgÏ[dPU/x
ð<Irno`Jn)"Oy)ֺWz
.MTw:7R%_ax|Yt+'5CđT
*Ow'Xh%TTv=; OUus9k}\F^BKS	-%hj_@@Ï`>h	_}v!@#pwL(6ʫA<]w;9FNMlp>]7$
5TK
b4ciN{ NԈUg"!LT/u,t墄_N!5{tG1#Ue9QeijjP%Eь
灸z%%!zT=!Y`V\<DN.t"@^e=e :,PB..8wrȷ
DxT'~#7oq3 |AiCU彻ץ[3zM7'֕WχBԷe.ڀ܏^duRE\0gQ 'GEJ\8Gد!Ϯ
l^àO6LK>Q_H8}>{~GM㝔-!XuݫhB[dczlƽ`qMFR# :밖k)$?(H˭8Myrק+^Z>a9S:+[
(Z,奵 |~HThY|=+pg͜ΰ܌JC.s=\0Y΋q8NXMI\T%\-pJwj|Ovwɍ&:4U
W(r &e,{  VT>CxxWz,y۳Ho!WUMPB!5򪚡IVpz+/CU_Ǝįvm`Ipd`QR^gVܬ$f[EU>VC6itGpQo(q(iL2ؖ!(UЙuXӎrO	H	$WX@/O0
RUs58qRMtPqW&l9S]+P BC<=Yʫq8~gɦs}EG^ܭq҉cjx~X0;`\$e\l\ۄvVF7&8D听EiJ쐙=l
U"j$6|4kb3M<b##Pa(9sci/}[T#?nKyZ`w~JuiYאJ~Eu*Xm,'
0$X Nׅ4y-C%5ί? =(u2>p齺$-΃ xizz5:*u	(OA׶aT$xn:x8ZA$Z
-ťbI/#h~t};kl.*=>YĴ	D0gQ_rT*B%|ˊ6~"
 }v-'
ړ\"6~Y<s}zS|K"}z8nzqVz2ixA P3 ,2M$ '޽tj7*쮀5B!L8v,>)whҫ[y-J%9w9Tpb[q{ECZ'O<¬&
JtM Ԟ2TZow̍o&F4ݏgcz9sb[ 8kzڥlRg{k|<[/uWܵv:Ŏ~ʯ 9^X4ez*,g ҟXu(N{9 GǶW!³ƨh"JsLa8Dc2M7o<WMzW&qME9=oJ@aZ73k@Lˣ$d }p!ȑe6J)gݱH!Z-Ty\@
CQݕzdJcլhΦq(;Zt^2x*T*|҇:'XZ!6p/7_
R|UlH-kOɣ,ʄQbP2	8\	%_FrDzOӺ5a\	se*˫f(5j;ykC!/%jɾs5'M"pןGm,_DP$$0m8^yA4c%/-1ʓ-v$un7Gx/ 1Vγs=L1uGevXz9
@rle[AP@%&ǒp᜻sS5$8%7Jk96>*8	-<n*"
.].3('B
8'Ci9qğWyތP1YNvܳqQ%}XUzA0%Bl/WAU8s	j\M% NpN9:YpG
y_mk8k*uȴD[!}A;Nb^A 9p3*֏~K>J*8PMj?'s-vrov(!ZA |rˎ7!%n>I?$Q],P̷'rE{R
R%6Um@
V>Gt 
eݳ
$ch9h ֝wNo^7O;*VnFo%7!{xXT]C
$&E%:%EһȧY@%
 g?<^yuQ+"mDr1
`T_>(]} Ig ¾`mg64yv}-t#@cCܜB\j2:؜p"_!
=eu@-fsCW}?kf+8_'5I?ulp{9MI#L+% >Q"\:5Az(>my^Xcqxyy˞׍o7Uܓ;_\C\C7{lH]C`y2t|?n!gq`x[bt<?iѶݑzZdqK7a_\=r*D)XAJAEO{Xm	D?T?ddv5Wv
oP~c`kaM~T_s!TI6qʄⱼ.Ja~Ί5E}N7tjY3}m]/V 3?Vu:FGGE>+q+E	n>9|b+5], Z&B-<r<7<jR߆o")"*w<oʻ)q)St-wk.+ \?U#{c<=)GzAy3KLׯ:PxK@wY8x8h5_BJ06h
BKZ,ϘM SOV&*ɯv{Z}8b  s9
iQv3 j*$Y?<
pJqĎDWi g^efϭ/&b	Q_CKw潒kۆ	 ';
;5jɽGM> <-ȉ8'QC aw290'vPx' ̴vy8##,fwjKXr3u >T!rfGٛY9CrYT+zhSvr>q.%Wңo-nˣlM}'E\qpߛO+~:ҩs@}r-"7|q`~>1'z\Zt*<8|@nYbfgn	*nI\gN}B<T5(zݤEb"#OQqчTRӇvvo0N߄_sfq@;cOjι+9d:qnR#T^(܂@7NJKvR_#V C"+8g^ό7ti]>wsE;>:ԘMJ4/	>*Ł!9 bY!jwgook)ꐜ~=i}vR*Y VPa$E4"U']U5ïC<=u͊
;>xlkJ(Y׌L*ΗG	YmK7Sє2KgtcCҾU,_L @J7Vwswm>qy9`c׵FNwY_	 FU^\ ϋl=
2̫oc?ɐ 7a#'ԃRӐnב\{TgNh#FpU A(4xb>yΘDg
Mi-B<@;9\?/RAuҾQqH=q]kAPjVun]GwTIZ",ܖd",躵I.>p0_n}7>+NcOv+fz]ų1n/[yNwk>Vjki:*%P<{la
Q_DĞJfuo7=wʡ(ya5 1zmoW 0Scn4 ͱM)T:u){,÷5%7̠E)m|!8)SMTZzP)&vts<@)3T4̠D9+pWiXTF$㑏݄KUWQB?ċvU{}8m[D.U	dUIgpq[HeQ~~Tín0㜲==Jk̀0e3K
ת?OEʼRA\nRZ/t٘ֽ̛UetU[*pD+[ϗ\`V,G4om.F{4ңNujc}#;D1T,6Jࠏ@_;25t9zzӔdY%Z!{|!N`'Mʒ1'KـO7QM/#/j!GH*	@FWN+;z-DҬ'!8FPA92ɍE?|z2WxxGr2$<dQqh'0_[y8|O:<Ӑ6n1Z*uǚ:^y+l;P:
,L'e	F}Do~C@檟Qg5+Bu
j3۬6,\p|v,*oT sCqͥV(B,_ @ܯh34l$E<r+-j[~ڃLZqɽ袠v[: c;H?pTRA|b;&_O.*xKXLRvȯHJ)<bUI-/+ḿgztf~Hh$.۪JPKoGkGVtgs2gm+0­ܶӿl-[eeeB2D߷)~#?O1EM*S)&i4vV׾4>#
:9>Փ3-6ej"_@љfNV3=|!sx՜<:{*pK::-2C+锄
1ʂ> 5s:o(jI;@4I~*p"dm
%<<$FLOVȤ#UnkwСŭ>#iq=Rϵ^xQ?O.Oobە=TrT漇1Mh_qYRmX&=JK 86,vF>$1T:׃m Dtn
9רX6="/6_ЍOOkI7-&(4(|;IM~!Lg-Һ3jm#:" p1Tn֝BR <]x~&Dp|$\Cw-z_ޫZR6JzGһ`DO%K2aVHkn++X>IB"B`wo"'}r{U(܎%PFSt(sR[QXfRW/8"@m<A3/]68Wbh`)>\t̷b|h	n(^)gx肑*u) @S7S]C#cW-M>o$e]&>$Tom
];~4tH	bB,MQtqXݳ^og_]%?G>"-F,UD 9ĥuugK8ޣCC$NuBWJ,C>/:6jT5ݍ~]ɫ>FPsO|td?CretaA	ڑϾ?搡.,FO&,k~F,HkAU@H J,y~/ujN행+תX q~F=|*n>`!w5c=6KPuϗhPoǒ
x	9	<ASpn,!PoDy{<$er+78F@$ z{Ñ<5jӻzD!sIXtTUY8hYo8qD}jk|6oGo)4)W"SƼBGhSJ%;pH.ێJƲfi{GkڷqώwԠ1v/xf'܆2"'grɭq%Ϳz 7-WIHj>&+ŌG 9QXlL4Qi:;tQ
NLt3}
i:5AHWv( @x(Z7AydS<f>pEd	4^gGz|={TYi+<+qtRUXzΤ?j>'؁e[]d*{|id$ϺMzHk%GscbMM
"QQn<WS׀-ػ9nnWI]-۔s$ES*@gʀdI>fsmѭظUnMH ƿO~̋UCQF2s`/?._;vȬ{t`
{{ӕS2{Jcˊg^O<AgnjNpw;vbq2=sF%Mgq+D$Ep\h	/Nb*Z?U1QYA9zU:9W{$Z[h=j
F*R4oׯRKփҁv`\'zuNtIR:m5|gw_^j2ml:0s}osTl}K/UooXV
D4Oyj5GO';v7qF[}}k9F#]!؉CN]W'PF͞SV2CxĬuQr친O|rԐzoA\F-D:Zh;2ImJ<#._v:|ӛWI4qp3FmJw"Ci,d40g7U
&/?8PV`^*V4$׆ۍ 	Ls+Of&4+:S[w8 Xz3.,!P!ȕ!"yR04S?W3orxeT[샧 fxs<N_Lcajv2%Qf1Z ^Gn&8=Q7sxszH;n51ႉW-=o[ϏE>C?uݸ0hW	@W0d2'e5(*5]R\(@ᄷ6ԂF|Ϝ#uXP>4t~jdԫ`6;HWs*mm2ҧZ#.Il%ngGZs۝˒SGg"b:%z";4|P4z;cS d8S
Ϭ}\@(~Z&OMe:6OVQyib|z	S[*;Q{,OQ>:5m:$4÷2t;f`ʈɗDOpjVIΟ?T<N6Ax|Z^!B#g\sYneq8߫beG9qTkTlL'trKS_g$Zcn+zƄFN:<gcVd8quj2e;4
^Zy:,+|6/5gG~zdfw DV;}8
Ot+X,
|kBގj~TCpBgSU#DDnĘVv	د 8+|.`al)G%gHoE k\:{,):^Vܛ;<wkez84cIp缎bHwch34J;ʕu&+n>
3#ʌ
\Y)Xd|32Ch]R<-ȗbz#rDU1uW, z*pq㫊?ߡK48&Aӹd
QΞ;In*qG
ܿuJ4Tg Y%0W5
0ޒ^')b6k ePoR;Tnq* 'P;k6Qko~K7s?[$qea	9vu.v}n]j	pU]qiwD):
G49\4+.;X#IyUSі|d"iW 4r:HqzŻ2=
|cn^ qCPT[avi:ƖW&ׯ*mjN!2ܜL`f^z-V3V>FQxpJb0_@(OO;ziPcux&pHԔBg%j66+_ 		 V\g

yy->_nvPK	!:Au-ƺUxtM$̽Pi7Nxk	m,xکJ)L=nC@rhX*h`r$,Dɿ[(犻֡}b<*Ua@s~tMˆF|!yZ6s';0A^*dJ~ܿ4^ش}U7R,~e0(v@\L, WvcV
2_Gd㢒7A܊]s]9ɂRd+,"`~W7_x?Fp?CC{uא__J6.AQ]  VUf`9OtͣǦ?7Anb@XB8p@pg|t´cbW_q	`Z=x()'~C 5Bw;>Ig8-'40u Zt!\֢:1hk]MR)%X_s
h5+LQeAsYI|L^/&#l\yǬHVÝ,m#͚LY7SܦSϿ:uj4oQւ18񄀇rS-E?)>uy
%|$S'1ﴳX$2,{sYP)gހ
BsyUÁxT zzV8%`|6ո%QSqϲ7ν4
A~>~6ioDH-: t$PAr'v,\CPi>gk狧}>Q&IVY<|tOP 1 dP ''ĈMGbM{*ĚxLdBG5n +f(x
V۳듅T8|_MK tO=OGpJW.
V"vIjV~
~r~g=")	j]vpOSOç.oQBݯ'@Vo3eHSU< zOT#Mɒ*8~1AWYwPq\
Herܘ9Yx-	a롊nMi`T8|;nxpc'zowS"k|I[Տ⊜}]DŲЭJ&Ps6 l3gˆ8S.p|RIʃã&8¥K1!W7uHQlHi}dl絡6*;lƆPnr!E?B:NC*=^5aK{Ծ*ԗ,t:bB ^|XAG$;8Z9=Igo-R2e`h;Uckq<os\Oɯt\ 6)H?6rQu$!Ux74z2>L6KW1Wr҄E^rh\ݤIhʳMp@+'S,jȆ\DP9}~5]ԡWoRjmqVmkzeu^aj
	55>+w (:s0OWy/VW-Ow/x5@T85i1_AD-2bp~R*yբ$%*,tsՇSfys	M㨐=Sz-B9ɷ"𥉉lku|sn:k@6o;r3fLIҙ?ՏK#*ORӅqxg:3J N?XQݧ٪[[čcj2BLh: ;vpжۓ\c
e]!8w/L r-ymkn˖uuCws"|{bwWo=Ba˞}D᪜xoKikLRrqW{t;J1磃TRU#J%G\K*Or^]PG8KHv<:_'AJVtp
Z>jzE; (!,jIMj%[I^	,-t
~m{)P3V~<WtZq_xZ&j
wmQqIiB7U G)m~&;Ɛ6bh~sKw9=jIP8*U|kЖdNW/i&AqCnUb^zu$rL0_w+3Ϟ.z?-ta?=fPG\Ѝ(GEh[4ܧ
-Ia^= ^>NA˼bw([;ep#яoΆՂy9[Q~{1RG{F.<7a)i3ݽH^ 	LQC97u*	[Z8Y2AGgNZKs8Uv]\1h-ux<'ϹFlZEuq_Y66A	R ő\jƟh<HP<]Jg	Q|SQo9tۅ>btGӲ~
` ttיܮC	]^Rb@y<!ȀH(R# !+NmbzrQ-pHkZ]iMoQ
YhQItrżv4ńPw4s-os=nэer]?ް+\JͿW<Hu~|q>,+ ^4e]r7>ԚњV$ET)΁KI~bqETFv1\jf''Ձ&^W_Rq)r|@,+Lƻ/xsl| )qSPt䓲M_*F	R836i1}j.n!]5"8jnz+^zUwvK8zzrFשbw<ja6G4¢eHTJ Jp\
Tx&-
dJE:o?¸	82Tk%?
? Rx?.W`e۟rZE.8K*
Þ]u:;sn*pptѴfcAXsPuTl媃s8[OUMh қ8"RHJflNjC\J9y'jn֔SfTV<~ՊiS~x<a4vjLg{rV_`4;(wjY4o:GzrxsHA`+|/DzEnC?b,?Kݺ:Y_٤-")	?q\m=E.a|`hiia4UdQ?$sT]q=í7۵`(iU;eGbNE3nBQP^_`Nl{]rw*vӞ0cSˡZ'ܗfq6
,Eͱ&r}	pb5u^I<J@@dӡ#A=ڟT=8fw~k<BxAv8&q4	?`J^F	`6}\"jiQn)z>\~irKo&9\
DǎjJ-Fww7m3M!
nhiGwC弼5M
gȍt~tu<,+2\.~ax)4\>n$KYOt}quX;Vot3Uu"IdEy z2JH*}E̐YW+@7}bk8Tt^b[5jk!̄ۇ$mj7vFwm903+,{6u73¸eoj^e0몸K~])ai{ݛ?}R.*kX~ʄNV!U}]}sUѵlL[$9@JzWPjuxH}dǫdJeꨏ`yB}a^vբ#5(vTt\IPQO^rl~2xQE	Gx:ٹWUvWI
5Gyk 1F5݉r؄mb粂_I"l>'f;7R+b,֔@|6a|W#\r)@7G9 ܗoXҝR>sSslsS>}@旓wh8?-M=`W&nbuH^iw楀č2',R^VT-4\]G=>/k74|-m.wto\ۺK7{̟fh-MZF[u+A=p04 *+OkNI7ogiAl"lK/R2ʶ q)&!Y7Z5*Go*/i`!4AYdM	HcMP<-[_ιQ "ftP66RjQ\RUz!kqA_H.Xw f-lV[ݤ<Oz{8._ve%&(GjN$_=@1߀-M2OW]%?ŧ0[l&@<7UXOj9N}=8R[yķPSSekf63ѥu/Me/bC6~pڱx2ރ%e
@mU5}o/ir9q
v#GL_&/wiQZ-Z
 .)Z^Ji~_
Jxۏ+Tc@ p2eENd"-:|0~$j,z$?/:Ho	۝ߺ6dQSŋ[}itP/ij?~mUQw\7QD^t8NT]#?C=~KPlqI'ZIO+:hǮJMMI??_i#{MU-$*>= .5]NK#p%|2vұF^~t`g4\F_o=?5WU}%\ێ,C@z!%S&9J9d՝Q3lOk&5ɇ\֟. [5_qã뼠\RzWѼJE]{1e
Qz}p%u~~u"q>>=--7'cOʪ64'rmȨ>N%'(?ҳ^}6	AAwޱ KQ.tW@pȳ>!_ԝsy$78kFU%{~^(ndRG Qne/XwSxkW"->Vhk@ ː$&] 
Y
8YC1r.'jcEz5
g8`@i/a>|[mVʱ/gPL%.OMjZg
BK?GYt:\8d73
}MKmx? /悥՜T_'BXWv>
j[f&ƙU5SMCH
 Lb>H$ݼI}CWp8y<EN\}7}O8yIʏCbm)$lUvfWjn-RﾜQkq$sL~p[oZzF[V(8GJgE}jTg
u2
(m
ِ8WrX)BwxU!NAwN]Ͻipv>fE Znj`')w[ԊWQŰvţSǏ{lWHWJ4v	_vy$Bމ4ޣ T-<T
bt;$4o7Nx8 7s_	(A+T /cxs
^=N9Q@w-xS:7'I٥gm'M@2B
zyq?W~sc &g[=ݸQOY
k(/|^c!!Ri2 *N@_ߺY)R {*q]ǔek:Q>UŒdR蘞ms׮!nriV-#m[#'8#5|H[.^h_;
!
=.L\aQ
;v`ZUCjG= !`&f9ߔo{%؝bm[V`<Gף.$Jv_c-
96]8Hn#q_ܧc*> quX
8Ȏ,4RABp+\ͣzcrĊ5$ExxyGZ^!d+#S\>Kʩ{4@ru"D Xv2+4%˭xDL 6'oݼL%GfODc;mMʯ;5#kq#ɋ#Y$xO35}tbX G'*UjTx\`\*e>/0ͯN{qG9%~SIKxzZM(9o|4ZѫC]Ѝn.Y	Q7jpfgleϬUi~ޣZݖ^ҹeIKvBo	BH7Ww[*3Bw3K }hO-A1}|l^kC_VFKrwKifH[W`WьUD

Txp%LRAF`q-D.~Xغ
/ڷp[AО/+L? eE7lZ*duqo҇rC$O:Y\
 .PD!G9#5;(^'F`;ao⥽AD\O_o(kh
Y
4<ۨ0tXj+ճq"vrv}ΘyZFC^]Z+,Zhh՜՝&QjR	78Zkt&fɶ,=n+c!}[g?!חCte}0>:p[ל%r4*OݳzͨF7[UW@c+2_)Ɯ/ӺJl)\f
8WD\)I=^|&\ko~T!:=mrCC@Es+%n1
\[~ D8t~skQ?PM)vr$oHjrw~TB[N^刎w.O*Emþq{-RVYzY|VԦN对p]:ƃ/>Q״/_c5,[OG3%T+[fZNV?(40wuEHTQ! E噦έ{5qH^L~< v/m+`mI~$wlBɫrjNcNԤ5@"t"@ֶ8O?WႯ E"]EhdP$@lJz,;ihӐl5z5wQmOs޷c;\fRHY
{ܺGuݵtVO>a.Z5~9# J֣M<o::\{XTE2'[[_LG5pwoNƛ+ĪEt^*K"To.#:D
SaV;¹KAqs)[$_iU{%"@
N
*;?Tx!q<
v	j_Ĝ3=XxgĽvᴭn%:y 4X&6/ȱΗ,yzgPӫȁ0L58=5b//!;2RJQ/;"3 ?ʁKLXP$4Uuvgsa~w6jpb%OR^zmfōZHMuf8ogآT3iV_? 'sC'MS!M0?ܐYa9U]鮘	\I}I.?z:Z>|yl5!.N?}nS9O_q{;cm}y/ |E=쥶uPZX	9{ȰMξ6eޜL{W|Ι;J><{lak(9]^.a<j`Z7*^E}2<w>@q?3Y knKc=n?*.
RM&m\rF]_K
Dg.0FccL{|0H GML|kw,z)3ӽw#>peyyA9(.2~9X>Z*U=O)	Kt[wFS jgW^-RW:'h%vQMp:S
Z9T,O8^:Zs nH=XPSUS8jfǅ[D=#EjHgnP
\*Gum7vĜF+{qRYqi	섌J}&% }7sV4XpHme	Wɿ?`~iMNxlzwA ٙe]jSC&M1h'ڥ§L3_{r̨r/)@ ~NKyҌ-kl,BcymQ˩cl ($c:vnsj7Bp78=C5x/R Z?z]ܗ)*H2Wj*\
Z,j3.u^8K tU1}nձ$6P.dudwo-U߬9J#UwHmP'po
@38r`F+c$pǑ@Z&CFAhz,	)yTQ}·{}CIyyA<ip
%/A#uzv 
8e{|pU=!(ҭ-AG]uAeDK0ܭ^]ĂmiiJPVt+ax
ki'EtjhGs0E-Qf :@;^ŏK_n,W^	8#M!Y9PɨCU# }tW\a?6bU=]r6TByg=Rn0h6){t4"/b.ҕ6ˡI]H^|S)Gϙ0)$2wO~P}oьK\XKV-I]v߲]WF0BxWᡀk"ayu/m&9%i)y>ɩkq#J7)ܨ]ɦZ[EUa/ͣZ*/-x?ހ..򀌜۩?-s2LMtadiA^=w	GkXiM΁p-Nm<vP̹Aӕ\q{+S0FP!k~upv@Y[:
PΤmBT[oٝNסbi\Ui./-9<e
xl@pW29g$1Nϰ~}xqabH\Gn7O]%O=)Z6OS-8.vkN}PZ2fopK-@V/״tۿY;+yOM0+X\qA圀R7z%HZ<"J]yh's,U5oΥ,{⏖|/e98p!>eK?\86ojWÃ,aX}p&;4qm?埴-[M):`YKHdc9燉.tv['	f?ڂpx{4гʵТR։ubm{ {I;%Q_myy]vkUkM0Q%MO8s'Rz)3ܭwHFYJh25Gu2;1rkS8\$/'MړgzVjZamâ\83,
pICgjvՖV"D``KN
78>;eC=@fNzU<Ge1PjUlzw݋uЩޔޭCd| 7*NL꺂SI[ENҳ1oOc 67ًhfy4< lأ](200+-;cy4O&)&_},g)*C45ҕ<qP"לsT ΠOrv׎s(ewQXD{ zBB2te#cEPQ;bCa#b( zHT	13D#9gMtڈ{I+x>\A~j<;v-Q8N}K8vח~{έ-]Smx\ݑx7QS,yNdFc"**·6Qײ02^d`]ƳĬ,X	XKDo&ުRܶu}(@I`xٗN p8þ.N=O|Va#Ň#}wЅmFSSۣATuC*^scW㍤}CY4yKD흈~9,"+N'
RpD4l_H`6РdmX$vrIJt:չgWTnUo56$/m1nDT 0\g/{!@RףtNZ>#MHc"i
Joote#4JcJ~MY}kN'!߰>onay[PL/Wp3W.%F6}( 4>/3vx4D*5WYLl8< o&5$iň+T8F[5V@o%{\>B|8 4]10JEó*A_\v^GE]5ʭypNԠݫpS86jv{~!᜼u="d/?T Hqm`躔ʺ)>m=J	D!]qf|]kt7!}4çk7*tU'ݕkn@m_6@FU\Ԝλ;WP^4t[v!p^y.^䯲UРMʫ- %C0k%+xE/(x1JCjKyݗjJa;o+HWս SGCx+)|&PqEUH5V27i*9[}zߪbKgI݋Wkz0Z!Bv9ln;<tߌ YtD=Sg۽t%
j~hUXY 7Í
dGmѽ>R
+MD?ԮGz8A x"#8p
*u˩L]BSEmЇLU2@'=ώ9bPD0)>G08]<ga/X%en*
].XK-YN!mV$Y*fpY_D>
8/ӉϓA(J.pt-/r(lUՉX`Qa
8s=[N?pE9\EΆV8a_2:k=lR:p4\ufGRvrОT=$VG&Nr7i7
\!>+DFqݰ5IBTD2 -[olۜuݙ_Ip_Ugem;j)9Nz-`Fq&<JL9VwjCr;#Z[1*?$SJ]#V_sHۗh9Dvk%d+7t&&=.٥#cMw䀊n:nݍ\DW%".tp*ZtSAG=~:1ky]=oK:LVyʀ)pi͐n+twTն8-P.TFеQԊ'hHh~!¥_Jk[ق;[tG6SrO?H+Qi4zMD5KZɎEo.٩k߼z2[V
dX44n{d2yɩv:?ѡH3[ܣ؈\jN R:{V.\ΰРj*o4Ru{VdwW瓶
):N
uIsi&b#Ox]Jna[)0!+yK֨r<A ~e8Z}d 5QL 5T~xUI4sBd8rrag)ɢV/w3\<9A"UK/U[RLS)hy
Fm0_8`#ҕ}\YuttݎOnw'{t0-#sV3AoCʽ@>OiUؙHyJWV{>9 óӽDp,n
4BJ#	b8y|*\:iCԪԸ䪴zv(0hҹc;:G8?Jz4d$_xWWznݢ$jL(:U>#҉¯Mã(@%__O+mZs7ƾtV"IkݶJu_	 ~"[gAȪxnUͱRvW#xϙ,{Y
n9'p4. M	8cqlCj>MQA-MP.KDsG&.2SJr}aؿq-#E}8Y}Ur}Ń@%2NyT5њl*wH,<1G4A
`+ϝSR)ʺaȽE{ޚ0Z;4es~@li[ Kegךтhj)õ@$eX74)~룞['7q.dE'u's|%-K>m<}2
wCĻu.xd8CnPtPvy*7 C)ɵfsmed&<r%p]VV?yXЌW1
amgˡ.*O.PY8#)ǎ=rWCXroE/5ft	Lj<5q o$<
Ǜ(ԁK[Mr#3.?d"
l#JPo~^[8-9w.n+5Ϊk5y4R K1eWLXFvד4JPv	C#ħV'ԑ0' "ծ|ݰsN)&V[b֣Zr8G]h`s/Sg!(jpTl`Ɔ[^Vneg`ihBIn\ښ(jCBs<2xVf:
KnQ,RǳT~\ uzGSM^[(PbEOMLyrc0l(ݾаTjWja9 @.GYW-B9	"uFk*?>*넷.jKR| 0M~'4sDpF侼 c"'}2k
 t消X/&Ǻ}^"VpBG)UN;gZO>Öl;nhq)^m']#K5B;39
4(}@'[nրH@BtQ0u7wEG}M^Hd۽$?>~^tMWPSͻ/-aNŢcFZ޻-*Pr1'7{w5j8.M=S* ~hdͮJwpv4G5ͤk	W'l]2<b}Rfh]A($QdMpZ</H#ՊY=
 + ˶Q*MD5#?>>TM2^Sԫg@+<OGG}6X?l21IZ\5PR_H~K[p?T{M8s[uyA!)88U9rORNO7wrz%
 5zE=Xی$t=P8uTIp!(7yMh5A
P=
S5'rs:*&ͳ^pF_9~Mz[f7ʱDƍ
]PrOs\/:\fhr
SТNtQ' MOJiV\9^?z?D]APHDc B݋I\hqb qlVm,PQ7Cxv?"2a	8f܆1UKjFi|i5%^Qv}iIF+~oWXw9gp-(唟"U%"y	,D^Jw]'8CpLO5Cr">NFZxkFe7$H7ԍ
Jf;ej8Nx)v8 ݊l*×Λ9ڣbP҂`g$vO{$>n]q捇go"	[yԮގE×Fx綡zeTh(W{};gʕ I$T؃e8˪Szv+.7~sYb|]~ҁ^0 I);	M(D:7WN\hZP]w%-w:r}5d_wɃDZs/D6q+IϯZi}Fjѩ_nKPv2̟D	v;ߗKV]uРOýja}v%WUUzSUv>?4z&wej
q8Hl|M5Zfy=GzUw'8Cژ 7\ѥoO5I]M<1vp? ՞fYM'׋^Cjj̮ K]
.^c	,
VnU
4ϒ/P"uϝ.Rv!Z֜2iGyQ͒-4
ኑ  i3`K!͜? "$pQ4%v8Nz
7_+aF\Uc;Y	_Py_orڑw+_E_`y|u۲N
x
ħ(7 c@cAH)E=sv]Du#}\@5h ꬪ+b,5Z8{irt]r\s
Y
UtwHneR]W1?ZL=?wU@01]; qhSp7sX?,['mV)Wh,xnnRDY
lq"H8s˫,[k(z[dLy]ŲOmi/^I@\'(ퟭT1J-Kg|ld[6F [+dFWЈt@Q@"l眒Z9W>F})yMIzXwQ̊YUCrt`+gj좉7wxSt4HWNd|sw}GqD*[8^}=!p2^8XΠDrƷ+7#WO=8>/cA^wsoj??* RA{䙋#lD-'Ǳ:&9R^OS1yѫdTk=s9:)yo=[d*->@`d߻FG1ep\9 df!iv9խ6@8JÝ<]BS5آ,
xV`и1Ti*tuykshj_s*mPR8F;~)		E%?ߥQipx+eKHÓXz>&,#e.$\{/A \(њ?Zq+ 7h6ՉQUP^4B;ݽ0TvB?-{m	[_+@TCuA*J,Sb|;<h]9zaQ\x$`S#/`CiRMZ4h?	.^}Ed棓MpufLuW"0hcq>rPJDp$`Me/(#֪Et@$6Q d!%TAdUzvNi.ZW?,+9^Õv@	QJGw0Ǯځ@RKq˪R+V
L6$	hԃ|m%KsXYg&*|~WZR%~AJ!D_j+g(%V]s	@pR}s~\a¿ZV 5}*}>n,ǲ
6dcy@$TQuFTP"mk=E88љ9zI<:-Q~+:d98li!6><ikc
ь8@xcUQ><+pP
NZ`cJuhN\]>N 	I¹w-'ckߍ*ft<%%ND$b$Ndٯ"hTRo6D/}YdVIz3=u*a,G
:SãJgM% ʨ_M.Ǖ
P+C-Isnwy*˷Kkx/$$]q׭0¬".88# ' l	ݙvjNT	5MQRC~#1V9p1%[R O#&.;PwROʽE@>ǁ\E=ެN m4hdɛQ5;<*:E@#T/Pv'>Bxz:6ܪQy%֕Y[7~0) *2q+fUBX%?`-|=$U.n-3'[@Jc9ݐRKyY
tj=wG_*P	:j>{,GRJsqKU]t"xKbq؝A>_䍠'6dlħ:3	EY8w?
nՓߩLcMndpS%w985ֳ3=p:#Ro"58yB~Z7׭p֩!8ђ@S(jlU"f8g*\x'=o,`9\Ow:
]3+ol{t8E.EVʑslrE!ATb=NIAEȘ(.1.̹?: !}N"R?Q 8}jENė|E&Y4~i#yoU!qžMӎϭ(@_Q4m^nE@8.!<N_>uT2ߍr3VD~t셝?R'Ex-}kJtb;s:y{|}x uB.yf'q'2_]%Z}\yLhg/@l a;9+VlTR%kn0UKڽOTՙ~q-`2݄ԲCXyMtqup
7͓?K@G'wp'v+
+\GOʳ<5 
y{N0X!۔$'@]iFzCJ붮\V/2C{ktUM`C[Ko~Ng1-U x47+y;M
 YO]t~jrN].&" L\.0fD:"< zv*G
טJ`[y"'ξS<mB	.QǗ]6㻟c:8B[4JR1S& $;[GooMU-` EU԰[,~6O7
%U3=:z΋tZ ɂPl0q)jqR<Kb}x7yg\߉mNغ<$sAp (_}rNTʧ4jst󶪁C#iC_Fr3JS?vQ{i
3x~e~7A{4ZNQf% G9/o&pŤmKe걭)j]ns:83Lo0p3?ar"oU6dG&}5ne+a&?hӞH3a:3
-~e[y M*$pCӟ " V
\̯#|Q{~GZd~kW- uX5i5<CWouȥ Kw0.l,9gP=M%DMh.'ȭ
Ьc3
]H
:3́GػѹUF]~]$<Heh5C8pu:h?ImOޮfm92:aL\Sg鲜:/i;f>p.]Z4(~1(
Iy9]rG\ZF\IY8'F0+!6ޤݟGOJ׶ƪ I>MR8 d}m @rXT㾱a
y2C.Iz37qdi?D-Q[eO@
ۨ]TPpDUzz|D1\4ɼ@p̿ױ7*.ran~h>QªvPJ>]&jYZ -lG_q&͏#PݢRÊxYHګxxl 9oB- ɂX8ۉGޑ)\ 9ybCwJ 7!+~kn݀tz9%k}PA$Eۖso	x/r/'>l;A\}_%'Ǚo'n}VAOWOWI!%񷧵,%cI8*Bq.זĮ:2<"ܭ`K]m"~T(j	NcZV}lr$"?	r:/'NAx`ࢾԴC$[t8;8Cxw<U5٧"1 SSd*h[s5Tk7!kxk@{@*I|xHus{(VSrr=I,Jh5|]U٣΋]^7ju*
B۩\zԧg¦fW#I'PoNMh%CWuc8]z?k"ݻW|l~`-, 3qA[ v{=Z6ϔF3vwsomsv#(ޡrE
Or>nGnJIWꐸ;lloj/TuKRĀDDszlu~Z{, [Q$iG!r&ϩi劏$GatMw[b
xiEƧNCf[O[bRcq-xa%Uǋ4['KQ/);)9D"ozso {М<7=g%	 p~YhjFg.Ejl-s8l=Q5k<IGO뚨o/*}N˨\`!qk39]&:@9DY5!,IBb؀"a Ĩg:v`.W8\pǎ#oͩ_.0#	9Pb,9ǽfW]
YWׯL8 o]Am.[(MjN<NwꎾW :@ݦ8RG><{IR뷹 e`T'YoG\GjBr4>Mѯ +HJ#:%ɣYyKgN/vkZ,7">vtʄbh=5Ϋ>g|+[^`d(P[qHP__W`IE>L$C@֥pfw{uU9 fl:GQp8gj"L*x`?\)TZmLrLBdw_S	}vYROݏ/\@k(JyOq)`ln\ѱZxUfXrwZh(mLrwGGpnZ+"^`vĊ-kG>6́3	i} &08忽5"XNm|
vV1((=Ρ?`L%z-T;rϦD=PWFϜG_ԫjqvVP/| {Yz[9bqs|N5i&@{
+Zqu?E7,kOar9ԕnpS[gXK-'T]3i!>hcytųKCU=˼۟%%#l/:T_}-NhATbC]Z7&&C9`aOk\]pĩ$,)94kQ)>&Po#z3r>"f;YN'8O	_zYvrtXrWsSXv7+UD}Yk@jYyDUjp{[8
^QDK3pi#oƭ|U
_ BGIBϫ&uE(J~eX.WJ_Nu!v=DL>1|Hr<K)>Df®zlKUp9mYWm.yAC#8u3HnLR$ƙ|힞}C,!HTn|vqu#V|
;[]'Cpy2!pT{Wz@d.յkvksxt7:AWzrp"//9m@_=yބ-T$uU30=S{h˅Xw+*~΁ 7JҴM^i.@XVPβMRe$ߺj}Y:T`mP#"+F<gǎ25E
':(K
H+
%;~ Mr	1nu%4?;,H
<ဢ	_5Z/&
꾎$u%T@4/MgxT	R"ZsW%]$
gSP3){m
zh?9 m?zL$<i*6"7U=GBA[ܠ()yosԱ}4L::EM_uH|N[n,!xu`NQ~yeXO@TnDsIޛ:g)MȚWMfWpFw x_soCJ=n
o\*(?
`{n{a_~;4FQmRϾ	ktV
A|}U_q5ЕƉO0Oű(5x/yȉѵ-W?2Wo:imVEOxWU/]*ʶ'(AwlYS=j'@|~>4[q$Ge()̂P$dlYLCp!kO!w
BM'AX-
wܣP|#Â&˭îM+j_m}V&eC,Ve%őӀRE-7W*11iFΐJorڽU6)!Lo]o..',k8܀on7#ʄ

og%G@Zru6Q'TnThoݲ˚%8*J<Q&tEM&TZXN_,i@q>fl$k
7pZ`TIUtY|l5>@&	G4ɬ6VV
pfgri9hͮ@ξWلsW$9ϣJsT>:5ml:s;(ds4QчWJ-<߹5e8׶ 0|
\gTzIo:~*ϑZ.Ta$͂ٱڵj/~a9V+
רxr; QݡR۵ ܷLѤ-kuAۥEa7ÌqybCVM7J*M$T\p7Txs8Dny>;M`RdLw
vt7Ka:Le_|Ġ Fp&9^..u;}AoKMAQx'iruO'5%iY/:*зMPZ
P1yZdu^η9~iGSq]Iq@x۫&Bt>d¡p-s_$WbC;dșBdOnnnmw-]4; 
Wj΢x'xzdwTIn}. _~[pь b@gV@G~(qv{x@u&s*n!VJst+Eɩ~	7W1G,֖A}ڪ*|0§|O(J:rs_p5UGI0}n$g޶Շ%^c*kufޓ
za[oU"ϠSmY{qA-HJ"_Gs+NonXQ0YW
O]S`NuxTwV*rL_d(Ia߾UC\z9ӽKr;;otzr+8\ʳ`r YVwx/380IZƤ	kF]UP7rp\*zͼʉ*8 R+\k/mJ⵼G |ShZIi.m04#HNGGL:;#G33n㔎qJJʄ.#>9kXppfJBsApŬt
_>&Ǿ^=%n
2^;Nt^p"Fvv@p2e~S'IHz.bEBUKjnlWS3W;*Wa`k
};BF(rK@Ι^SOʓ6[QР.?pxX\] A1KU&5fxЬJ~+thZSm;+/E;uMeFH٥zmUfHٴutgQU@deκ':uV62:w8MUwcъ*5ŊY.&k:)̓ul_-ܟbdEMȦ@[Uw'ʪsz|
0i]QD8\8{J#7gb5g@(uY-'!moE@W[9ogr0
שA=_]Iۦ6rz:E9ѥ2[9M䳟}KCڑ1
_o)077J˗6iL~yѕt]n ."'`u͗ۥ\k_t:C64, ;]Ԓwf)c 4G5!yCq/J
8}W<jI~ge'_tQ/30 $zEI쒺rlѮD8eG\saUɤĎ0CF
,m}>
iq08{y)Q\~*d|Am(RhǛm\D=bg~)<!ҡ^,7(\G89݁r2O0ďAQܞ=X_]3W=T2	ãq̭|6u{%p۴6Oqu(˰ⴃ4b7V_aC?f!
6=tAg)tc8b5,*]*SizpY9:-Q|ifNGHTY{τ ѣ%\;8$!
ydV@zlg@&տ6 νm)˴g\ql2ڕ$_/iS(67OZ	q+9<'H͊Nj?O/'(#QEBu~CtK/+7%zQ4N/͙)c}v5>\?U/I)B\Slxz4 Iz،g'_*%4nn
I!abӑ{{OTcCa0KtAW5v"Y4F;_hwo]]|ݪNyؓ!0kq%]fhVki9r+`i{AΡi5]'(6d?<qQT]@o`|;"CS[j]+rƖ'
sV:m1JsO)Y<ZΓ봈Es$藥 vD*,9c+!֩yWRȉ%+$
@O=̐3$nӴrF+5יw^ e6@J
p&ܱ6İB$9~ԓ*]dXi
rT Ǯ2x1*:݁%T% t5\_?pHIK-oEy8EQ]_֭}x!;4
||0Bgq$8{#("@ܹ#(ҩQI L+?s"s6cq-hTZUHIO_(2ӝਢnPeC]gXjb[`Uyuױ9o)KxosTISM@>zo5e["}W̔6+ZrԱm)CUh}?_bxBԂ|IA,iL@E{u귢C@-4l`#;މ-ut\`	񩪌Xh$j~A9ELwQjt'WW|$İ5߰{J<u$ιs|O=K:|ѽ-=O$p
]7) *ݑǁ	v@%}_45N$psxzUOPG K~Hr.q#{rM/lU>֛..,{oCmP`N/>
~*ߏP:&~"NKZ9\ilx8JmsfJAR\JnvQQ<Qya,aQA
i<4Wvn}|y`BWp>x]HZCi8ڔף0p;	WȊK4T~ڐ:y4]ޗ&863//+'`849ǚue[<{;)BsxLGנ"AVrGn|37}k$ujKf`ƎzRJ?TewRlL<ȯ!ѓ4aH((+8ïj\X
{U "enuU8t#LފGOP}}kdU-Y{ZNoo1aPCLUN/
ǫAGk;n`AIsN &s H	"̑?۴kWGWE4gϡaI/em{vNoDy0qruK2NGQj:6͉{Gi)O>DܦJW+t}tbFy;QN/tݻE)&HN
:5 pev	!(fuY'$NrښF1
.ޏ#mu7;δlFO#`G~ȤY!Apa5jF076cg[ȆhzɈkIZĨ"*0s
!҆ӰO'rqs7p0KCznAHD`u;KkU(7Rt{~wWi4a+S uqLgzwEGz"FTR<0U n4j8V@^@na΋fM	L GYa(;bW(.s?bUEL :
ΩQd
\ =Om݁v-p̶粒(㎧Oao{m\#ޒl:q2LO
8'=
C*^=
^/ t,%._ނ7 jPszF@+*'n*ܜθz>@Br%ir+ڎ%GPsDA5\GoqW"Nš,Υ
L<^`J *jpzVe$xKe(}~eZEk!pU+pST!9VL䨝ybWn RqT/w(S`~[/uX19ڎA8 Cm#l2lTN9ӥJ~LEEߜғSo8`<T|cq\LA_H ^{]QbwA%v}.AV1qKJ6k5߂lmky0[ATdX~6Vh?-+i?ӳZs] -WR\\뱔rQ"N!c}M>ga۰^NăSGe߭+~7N
F!mܪ
nGKM*ebvd6HGiEBubhu
nTj'r{&ԃD?s	LWju?OːJm8<˩㬖bpބ7m dACOKQiUQ
ԻS&Atz/)+UZ28RL>SnNtˀr $Qv|aPaZ^i%j	ȄqԌpMu'ۗgU-E&Kϩ
zqp`%iԸٌO|W)d%G.%']f.N7.stO345CKJ]d'*ɫ.J4n^s*ޔmo=zoNL}j=רFon< 9R>Ų -aQlΰ{%`7v.#{ܶPrٌV\84ϖ?eXI*-:`U]^w91r.ā$[sC@:foj)L"	VtK
Jm5gS%mG8&3٪?\Tn\' |dO
O0z%Gԍ[}Уsom0E#ۣB|7X+C$=rcxӉB:f;R4ˉ~y.5zp@H3sztAlUYe3'Zzӫ |6$N#gH7aMTu=ݶJnQJRUe[;F_rEklZ5*7$2yZG'8j8]kV5&!z(WK
Eu`!+]ыBKjs5/ȯUTR$J)+H$n PbZ׃ws]/u}y iKͧ~%SgU͟#O/Xʆ<vp<>E=kz龬Tpּ껿zSuj@:!BQd#ʭ#X((%fHxۯ'S2th\^+Z.I5|\^]\}I4yIљoz{N9H%k<=u;֎GT:+T^sKEށ%el$|qTPd8rk@:8[-LwHp88dE-]̛n C$z(kQ72T0EU@;v|G!;P!@&?0E2rzRq[{Y:?tlu%!8n)9s$RRSG.{TL*>C&ɽV!;5!bJP-VUBvE|OdVXȻ{8CO}L6o[ycquu
@-!ap#蛰|Cn
*[l	[?I%+8nk?}8Нʇ>P$-sF 9nA#0s+_u^NsiQ ?
/pO=9$}:3:2BW!
~1)ZIj,$rw:GqO'n&Nt޷cCk[J}8f/P9d54^%!92+U	?z1:Y"%f_]zp
7o;v?]8e+n
E=@G$m1l61mQc0yKۏ3zޮd~SlJ>V.aѰQ-K(H|9U%
X;K[q5o[=Nę2 ٶt{5P>KCQjSKbӓӳ
O[nyZ(ŉQ%Z]˨穊'ÐF8
	uѦCqFKNPw"jj7Bu#DbQ4YdW!9	u~6:Idt%k%T$h74FN
܊k,}kt5듲qJǫ֮_~N9?e] cʧmU^Y"+8a{t|nr  ,l \	W<l&I 'S컂-Z54['fV
2ObywU.%&7)QOĝO)Q:թKAl5rx
2cFݢ[p\kPm@]\u@*gNz.yC]!)H_Goo~{6].q\y/\BߙSיěTm+ǭ# s@u@\7	~{|qذB*Y@a+py婪=y,|Tk*6ʴvYpP.<h#ߔbO}=WBu97<V!oWs4`?q=E
k-9edOrEu@JBa)D|%=PRA}Cޮ̑$'W;"ƑnkO)5m.
y)5I!C07;9ؔ	}U^aӯ*ȢwVLF A"t5nqyەtDyAV,r Zsoy`g	M3E=ܵ/#JQ%h1P{KJ;G}KFfV;]Q6o=BLNyٍeԓKίlZ8xB#EƶZ]9x_HE/wJj6o(ˡX:˗3:f峫ˬ+Fs=ܸ( &Թ/-Q0A:gi'g#UeuY{۷;Õ;0_w<["El/A365%"?c'8.+Ɂ&r<.ڽ R˭n.1.r}twĨ>QE878#%E j]\bYCho u.U^ث*vC4uWzRbȼjنqp}Z':pI˦g&]@by0m7Bs b߲<bk'ƙR=bI.}5St:>5#8:ǹ#p0ǽEZ"}T*";U̫7) &YoHS\Aw$>GsHx&GD
.9J߻pv$4E9&juQwC%^_SpsubɤJ<g2u2[PLJ^ک3n<G[ffN8xj"gu 
oRWߑTg[?G6v7nr+p_C#]l."
UC~IY騽?ƹCAFuN|s
PqI$)vmBQc錶dWudC~0<qZU6H!)aNǜ]C]!7n=U4p9[ꮤ8[
:^?Uz(F_Dm?;~<Nn`b
XK|uz+~ w9N$Y=%*Toޔ	״ϸ֙~(ЎE@`yq3՚^G0Ȣ#_vU#1W)}) t;U;4K\ɍ.|Km5IO~>]G? K?M)^'aM«~Zaw
RЉhT2Tudv<O/RJ㭦@5Wqm?y,,
eX_${E/AijT-mf_[e<A_]:pHN?]ZT.;Fg:eZmUM
&J𬛇#$&t{驫toj(.)J<oe3Zttj܎H?U-Xv%ӵ[0ඏC.~ 2OMK]˽ioR`CaUpf\ב!~Ph.rT+p̡
2o_iT>UBQ:cū.!2r*Z0hfKL*3+ӹ\+}yuJGn~oss ܎݇7IUBhZI?P˂Z)ʜ("KD$) Sjbs)o	x 
7NΞ)O/<AȢES	y,vP^]Hj {ۤvoշT!tJckHVfZXI\6nOZn.~
,A,דWWs'%h&!޲b~vC_k$[ΝqY[S<
9M57Q@E8n)F{ xRػCլݯH*/%]%_u?cUĎ.~wW__TE+8)" H. ?YGǊ/P T"S:aeݱu6UK?qtM RϖAג;p%Ǹ.a)M#$z0E5}v/{ UԆ4<Xfl/|\tKԍ
o	RI[[åuZz	+n ^7ډQUM%(m"
!OHL^NCqSZ7GGL4"sNaV?'>G=\4B1#5/`'Tvj Sqdxټu
GmCSբ+Qص;8ޠoO(CPT(sS]&7@.{=OE';c8?VJ a>n69.TJWqQ!zXޟ^јpZDm"u-&}v	iZ,sw.AnE$*Դ˧֑ 6qv<#7-r
xF{rzCQrOMHJIʦõћ-5r	XΦkVu]V"dG/8x3ԑ=qMP 9+tM5:+"]]v*P3RH.0AԟϤ s7H\5_ y=T-jNݛr~֪4{/Xl ^Z]`"GLL؎BKBJ<za`[ߺL=m$#'9<jkuD8Y.j-  H( LBwNjJBV/a./YU\eU 9EUAug+sv{{4߶"HM2iCޅ]jp?э)ӥy$s±U@N]dz\"Oz.=]A~ܜ	n)^So.N9/Bnk)	TW)ݺ%q
 湏# !;U9F5U?	Bʯ7NV8ͱEk7T\>}d衛IQR x,21RdOwĖwu8T7Rpxvy	.캋L(͗geIR, 
c*'&~dے^E8+\ύb1;M6D9qxw'ى1y:<Jk/xqβvKAl503Nz[TF[]O
z?RЈT]0<10 ESWd텗k
_{ΖLα!'QY2<I
U>oqn${x'?7q,%{h>Vr\..LcNޡq	H|Plzz)䖶y3vP+gl.OJE9g,ULpu7R"/ߒj=1[y/6#NlW3fMD)[/Y2f[JD^턓 =60->gGQ~N;ʰ[XLUOm*&7W-/:dIhj茪Dw9H.Q}LEV@c
=u{%~+PS&=80ۘ+yױO
)zͭ(
_i/E نao61/j/EQ3'w
6
+o;߮eQsTdPZp?j< NڟzU
\A	ܴP';*)@T)ٔn}C9>\"]FǷÝgR+i 4iZpѧe,r><I^*zurϑ	)|xo_[&v;p\|YW<Vu+
mۇԑQlNyS^[Z Wt0E wv'fCuc<~Zd9d	xkSтu9	Zh	Q\E
ŹUDUNg<.*gY
fF%t<}'գiMC"mxcZ*,GM\$H!y5;.[p)MA	NVe 0sypT \E*1f*Xyj5:ar	/,V+O5ީIEKC B]$C%/K *Fُjv3
RŀU"0>ʱ(ZO>ntPN{ kL%S4zqKdY'T}y%RN#;0H$l+u9E>ew*c2C5vQNWI8/Է
7e$EKϱyv|44ok(IQEeξ$h%gKN+ۿg+@pT<8ĪǃPbQOgŝw
PV4*=OOKM-i_DypOcV.ACrkUKO<n1y` O-27z(rkta%}g~KR@lێG9)R$142^u#+BElV74?&!=Z=qg?vk4AhfITs銖Apnޞ*^}cR71Gs0#T%iuQ>OTpwNXl[rЙs
Mu`QTmBP}P¤3($Rd-)e51٩|cY*U_=.U.rBz<Y9<Qjw)
.
AW;gzb:T ke	:p\y9CD ĳ*(qS.9!	5x7xL3XQNZj`+qtｌD< %	SBאcٚ"@ypXZZX"Uw^)CgF3.\7^$$$֞_][{ :y>(>zʫKg􍂫4WnEJrJQ:;%<(@ tF	
!q/TUZl LEP_m`[@|Ǻ6;7]u
"UŘξT<^xHzh*=f{0U*xvS_YJnEi,/U%KRcx Z	{(5<Y[2/&G7ZpqUK*.whWܩҁvRU?CWHkGD襀
=-Tyb/gN.3Hzv^QvI\L~	QQ=,LW.>E9
3*bsEUX7ݩNպҶIJ <\\ܚnsƺlx7crsE/S p
zHo̞Yٶ))9ڌsr>CBJktr5T_T:c_cOo|F|UœIaճ\;
uר8vsZu|[wV[ Gx[_%}}f{jcV<hDBŧ}z28{q&OU5z&IKT{ZDYJswQTB/&nbjBRdv}JGR0Gx`mcN .;B\5,-~:W.i8y\<#I0|vn(jtd
Y7;vИҜsc8kˤ[RU/EFj(ugJчRԅ"&5(|Q^(PȺUYrDZ5[oV',:\@nސmmwt=2+,nu>؄;MZdR-_5"n"k
Hޡ)p). *E%rRVS|}<U=}~yBwK<o@~~S> 2f^>@feN~q`뮑yj Aըp,0NuuE:']G⻿@9YnSYvNTV]mK}McBJ{<q[EwI<G=zg]`j\nq6=[\v{j^.|#qXTs+5~r?S ǋەi-D5[ǰҭ[t
j$yX(&֝٨.&/$ĲH,
J{={}8ɑ[xvܪAQ'TǓ#g)4.a{UT9ɤE0?ׁ]T:r5{]@!祿0;Oy4'\d
>:b<z,ɵV!yw q`ez-C֮M:m3&}=oh:z/yٮ:GۜY,t6)ȜY *k#9Qz$,ԄK"pb^PC)%Z[쎎(6s=IWr͠(#-ibs5:HZO#rO}R
##vG$$Y	ě]O#]xx;N
|QP$PXu=ާS\jhDknl4W)x.]<RXJIE
?қdt@UDURWid
ةTons<26e(j!>L;jn V)xUm[6+_)7kjrnIǷAV,qoTmur60rfwev.Is{Se=Ik>pMk
Ӗ4Bi0щu|^Os֫%T26
ҽ",E',nP@ĩ*]?<6bv3oIHA͕9g_R_e5*":ʬn<}$_!bOuՊran:SM<Pw
@kAm4"E>,JR>v䨽N0=C
ڒk?nan>*T:n<o+Fw*&&kJ__`>62˃좷rȺ
 Gi[(8qnwl@>]wi(ЊqQ !S;%k^dqRm~aqYNIP 賹(:gpanuf9|^J@xpCУhn$Fq%䰢O5+p:4	8~.{eT#%!y/M/Ma2X9r_8`HvM#a܂	\Vg}+ƣUhg~)3KK;m;~`׳3A_sߘ
iɯuqVKSF)XKWLUT<\oْIj( 2^AONF
$]uiA:ynKϝI(|BWWUM<;*-*vd>Yp3->SHݠ-vO62U= ϩ8'kdD.;܅rQ]f}yp)>eDd5ޗ
5䁜~.G¸.EF}ݧsBP͗|R!.TXU(BH2BJ?MuIHKun}q0g]TJ#t;8][AC$)*Y'FN5xL]/Z<]ȃC{]1>H'-圾
]
R]9?
4+伨Wƣ{\BBrmPH#,SSIĨ'34ң_ p$O}>ۘGW㻂J(ɭCGR`	$vz#x.2ʹaU7s@Gj	}ͣF^3q_(v\;ڿuq!OC	ow k3ڤyu^lݐ[v*;0r嵷)Pݏ':X:.5Nm1Aj9fd"bVSuF1Mm(#P0Y7^׷Iot:Տ$ΪTṂ'|$ؔ&娇̋ڰ]<m~QD.nS_z/gLV| =T]EcƃN,~
+xbΆe!0) ݊r}ʞ=TRw4%ʎ\dʒfr/rƒۄlvu5Mz֖YMviR5 Un,z/jUТ⹵,2!3N:tw1&+Ϻ:+:
O庈z
jb>l=j!iq5gՉ#ݼힽ"
 U޸~sz؀V%u;M~.+[SJ!5J]yswMm<B8C5Np_VTp'mxe5US1w;{Gy]&&sKju+QF0U7f+bHǧ)It"`UՒHomd9Z[!S'lw<Sg? @fLܣx)~vE5ISq,EV:GrU9CiNc@Nw!8F>1vs<+4:8(\Q՟['/2܍Pvݑ"w *:)i8TKwh
ި?߻΢%<(٫͎NnX~IԤ)Ρq,]Ղp 9Zrtᑲ
B! jۓŲ`.fQ-7u?bHT/R9Ro?ZyMSB.߈зG!%dU3O
ꥍIO_^լ9}˹݆`w(nwv<B*LR,uΑh 4m =NSxC< ;y	)
?m!d">g@ uUnhص!_e	W〣2:2Gj̩_+_@MEF^J (˯f沗9Q4Mr$hSi7';KngYABAZoPZO)^o!
k]r9n/=9gR$4\-l-s] c\K0hi0Jǹ~bمO*-pg
zQRhmz҄g-rT<mCWRu6 ^}\Y)'/_q'RvTk*=ֻtJ"kE8r>PWmd6ɢH^$qPf?͑\<9`k.5Pct1؃u39TNQPE)G{X+M
rXC/UAETCF&I4ѓNHi#:l1:LQM4"f7d.V/QT&Oz(54(je[PK9@yVֵv7HMRp%E~ @i5  oFƤ+a@o拹WydCUu>ԶC-whT4)RJ#j=^a	D/]?JTJFx!(\U|~FX =
uV(BVڂֹ#zԪv].I>zQΦ3Y`/31̿@2=}/NUoRnx.r\(2"\\V9@`]\Y쭥)4*sQzKOSR"Oo@^uGU$HQܐԼŕj}Bu8/{gAesA::^:57DU;9=-<bP@..1)oTљ{p׉KDMgˍI2}dbW̫,p]wo2W:g\`w>[Q$
G7קGQҺL=|Y¥55O56XzEU+&RQ/!bϼ3Tx@&)ou?6c$"űٙ+ȄTtŃSB&eIsξ_b#21/7@X\bൎ</.J#D̥P(fQU2+e@rIqlS)Iny赏PSߙ7qrFrk+EǿeE2Z')Vc6t{0NKIlzvQ GUS~|:=vF[J@~etY/)EW..
\fW-_#/wgϹ)8@=:y8C<܎é7hQ8!)$<ZriS;kB+3J{(甤jho
oSGr(OAg=R{,Xs2JG<-)ܯ6jSUXjTsL qLԈ	QݐxZcؕ5ߪ#X!t4m(Ʌ-nW⤙hFw*B$2S?>{E>벢ܐZMŰ\|(ñI帹w4U aet^93{Okjw>[I1a˅9ɲ\	Ώ<G@R
kNeGM(ֵQ׭nkQ(W4hآqb'"*4  zl.&ރ
v}SZ-aWDωDy<+\u?/>F@gn}BNٱQU[tJ0Kd(W.n#>:x.hTȠ>9$gN]گ=岸v}y
)'&
Ԍ}(s%`>HCH3X琷4),U_	8K6	5Iɂ|
wzV$l{}DG\Y>zc{P%T^Tqn~L!skj_ZeZkS~Ue:2p{&ݮx0F-zG:udk/wޖڑ ?Q2&m{DK&
*QǢ09QJ I\>PHOhڽW:]+V,jRۜI7VIUA*x}.LBw}5;mHt3,svBUS'aſ S~s#K}\`No\bwXYGaUw:KDȧtͧ|\bݠU=ad'uMD U(r·BDv`(ܦ? >'9YS#'RYBj(9˳n'}&X
?GśKj.jk}4Cp$Qm_ݥ+=)NT1iYIb:1/-%*+o9M8By>@
}U]mgt|-x}*Se8%UWpO$Hu|XZ@8t5ps$hu&T8vс׷Y׮՗ ڮ/٘~CZJO;[k?>A`8w?~QLH9%]dw:q=ďdOhD͙jRwJz$7@![}~MWMVIo_FV\WrNFɓyjcDujA4T&u}>%^6Hgg~Ȓ)uU=-9&,ڄc"Y'+Gq~*T9\$p+JNP*HV::hD}"zl9u.C͊$bƥ7
<((g$\gk2.[T鮻}cuz.k{?6d&c2*#$%dMGW(V;]QK"Z K 0Vr0ckd]vt%S}JRN݇jgLUF27X!Fal scSuF9uC1Y!k>&ZAKfkN-5:l0Q6ӷ
o@CnWHf*[nv;ES.%lp68s#eS8K_M7ӣz]߳p\lt%IiijQ	|2VX"K:[z`Rj#J%Vm_S\X]d5h195oWoMOΒ¹[2JS#!VJ= 0K|s,֕;x܄]}`(;ꄖKN
P!5b㑆l2r{
"it`ĕ.T,-WχN[
wVhė@	ZD+?wv>	n[T
ǈ\eMH5;*NQ4d"un~p=ɢ@5kTٷYluL*F8Lq1aS&Z~YaNWA.@8sG
lTvXo\bٺb(]GUH[D vۦzv(moȶ}

zY_!)
fb,-e*N@[u $N.Ugs7&pߦ=VfVAԱ]
c
I'Sz(2)錷U-&cxAW+ILdxEfI#	||_@o+#鷕-gǰTuXB<3vqyquō9ъk\@ci[K>n[~Ű	Z=:8E@h:`ˎ(!ٔvT+TpiQR%l*	a
$BNIu BklsT JWÀqj$˺mq=U׌/%x^%{MG{)+'GȵA;|Eyo=Rm*
"
Vt}Y#)+N/@-m&?]םw` wN >SuʄGKk(V)x4
 mh.fQĦ/1!H^ tyr6xĕwySOoinLWz[uo^&̜T
:z]Ӵxdrf
Ε7^BNTB|J]3˳lg7
S\ ].wVY75ur݀(doHG>תw͛%ǆG @@]UjC<9P~RGA˂`|&/:ach%0{A^[G73v^W},P=-If 6SR\lQ$'ati§9~[OmȣD.ߩ{l!d/[$<d!vR6[;QRszI
.>dQ;-wz麣m?preA˦5fO$ǞĿlx*6yL,=w$`IZ*}囸O
B=k95^)p`[;98
 Lv)ݻt(izQDs#?}/v
Kf%hc6|]CSP[Wȝe4Ncp(T>9vA8g}\}!S뱼4pe
bUCUTZ彀xnz[?8W#\sbݟ
`H*4$);h|ENtȖShF'ͳ$zY=i)c9eZ+vGxL#leJZQrC[K0b2Hq9ewcu @q^[ |MΕ+v@"p9&VW܅fFRvY}/M})R>
?ޓ?yjn&ƪj@"W %+V'^n2[P6%	eLUXPEôgLeSTf\ϖyHrCWEJ|ҧzS;1~G];O
Xy/@س'^Ciqk@
^wiu:=sOx٪VUu'$" Ӛ[~n16
EMuUG\3t$QIsiLn5m6PZ\=%[
Du4}Hk5bRź	=T*@ħM߫NF[n".xEɕE^nȭ)DjMo|9CIj%̗lɓZxbQEE.GxJ31)EjKZRQRy/rtnh٩EuY2ݟ%_pF(XFeT
n߻ubuY taJG7ᴃЪ9:trDCGyrc/rQ'8+:Ky8Q@g6d9'qRHJ"o 9e [f4k|Und4,Jx0IϚ|@>\$9+K}ZY)5k*:1l$%7dDebO9fJr^>Kx
&iKˡOκRI)|mC
>uJLSҸ9Pvǭ_tQIr7\<VEde]\	(9J|c`ᝣP/p@mV: pWWQ_&(kGF(*lޕ'oY
_[KV)#[De5;RH>޳RS^Dӯ`fE =Av(~J]Q	[fށwwdR5b*c?4&/-v'jq]o-2:T(H9rbl-HF:Y(*՛"jc,JRvtok୚L <jG78|,כo2ՃlE~W/^j<eH@<5.ww}(s0^%FŠI5grK@u`j Qc,9׃:gXU'/*GM+6Ex4eSjA,Ԝ~ǖ|vNZ;]QiR\S{؉Է7GҨ2
PT~s_4^@"ͦlsx	7dtR0vY'=KԨ^6o]wh{ƬOj&Kg7gN6Ls47L_g	5K{Pd (D?.E0Ro:U]p[E[jerWV"AIW{.uޮ%I $cwu^МZnhϸ@$l)s.
^9]<JBZ@}ܩ@:$OW Rq͙]&5	IK
).w	T+9;Xدڿ7 gߟRRWJT
ZY/m,NBR#4RO\yr
gعeղ
5jRB9^_vOԴ@
4+j2qdkOQ+ښM
UGy:9@Y8IH*|[~zaW$R`KCXTYUFiֆ"YiIyԃ<׽~|lE-J DLt 4rnjiZTȣ\n!N	آ|dn- f<bjf
R$aIMcWW	Ubg)5R|Tnb TO`Q<	o)+v{+i#Uǡظ[A,@
p8mއOC(/[P/)i.=<uH_/Iv
T= h@_/mÜ+C 9)]U%b}%]X?9J柳8_F7)^#jEO.=>Υ
J>Rq[9?}#yw)/F#Ycw2;G?l*}$ɀ#}n\moW "P~cӎ hFE
cB{e,ܗ1g>dwgZ&Z8r$LCfXpULӹɵ!:>`\W]9.~qʸ;ײ4-ɾ\Ӈ y=ANdtsZ=nF
*ʩr,41̶ A);g^!sQ^ͽo9	;'$nG%G]9\m&qS$c,_%"-uЯkG*K~ODzV3xO(	rEwT'IT*J)=YPAz8WTC=*E$K_rnw:
T
+Σ`QQq8z
nɌpS/(ӽ>{r4<-?Lux'ՕDb㨮(,^fк-G]nj1pk-|[?Jz8Bմ(s%u7p*)嫹
U26e+ELdSs6.%y.BE@IAкk'e8N	컪ɵr]9k.UIk&<)
LtqDs"11H Kf_&K@
d_(gVsgUo<{$\t%1\ f]x6׮6|dxvK#EպRkgRM.gEQ:u#yR湷%ٸe&gwCiɎω>C\4{ 4ɎA][+9,8
;/c3L\|7b=mӁG+0hG:y^MWRmKݳѥuw5g==/$Qz8{YԎ>SA~[)o㱄0BPO`m43bS_spA9:$VuX;Q?]k@:o6Wg(F
{Tv[jvyLMI*T!/rg]24{کs"	"Au))@'_̡i?VŨmPT*]&VP@L֫o"XCRsݣbW*QCGP!Eh6+nHk~@dnRa_?Ȕ[GC}`"owW51脐,Yܛ
sFh4od?G뺕ӝUt{5EymC4m9$MgRuH@?En7/l>J:26Nug:u֢7_v-
ܸR) :zo8@~t*8i]iR>WDmn9Ňӓ㋣_tmݜS:h@?/jJ}dG- zi3|*9D笓yE?w|K::Q9{8r`9X?s1EC/NJ]ZpQ%NPB5I:)K V/В8ޤ|تOhy2p fQh;Ƽmw!G1aҫ*ҵ~Rf$vԈUN<3uѐiE	({EG
-A{5
w2l:{\BVUn}`a!U|x9"#D󭸸*y)u9O=jJkhayݗIDϛ@I g-Ħ&EۣlVsr9*,+"Ey9
7VY--q
'ho򍳑
>ҤPid>~{'9rI_7P<9죨vCy5ߨ̭#~U
͕.}ӂ
(ްbc&<Gģ ErRAy8B̐#{˪g˓:)$u7ZHCC^V0
!9xY	66J|<3d kcd4@q^ȭ+E|8)yN?FuIrD7%KN,bw&)SY``1A/FKa0	耏O;@7	В%,hVH[|oi0tr4yj@CygEuH>RܽbzOk)#VjyGCV
sw.gR:I(³!zx@T!JNñ!n4|_BWJR%:򔏇S:WF	YY-2uw-*x.E@,DΥxPje.<[E)Z:ÅÊzއں
vvezTNS٪%-M.AMA(n]W]`όʯHp3iJ^a;O $IX3BA|EVN꫗F:uC[R@M n=UW5Q¥\+)6YuAi.Ve*{hI6u0z׆Xki=,8`5e+
@fǗeQ2`aa( []5UVu3(c߁ZxÜo*d}Nif)5	EdV%#S#kZ`wTB_I4Wqߗ(w+l$x%?]Vm0:d}1S[xI^	^W;`nF&NpxL'TG*e|.熕
5Nh(e5(MKWfUeA^.2ET6L.Х擜$cNAߩdQ{ԥG~vWOn))I@;Ը悆9	次QӋK
"kJ	Rʏ: >;#$ٳQ1 j/>8֣o| 	kM^SȁQhJ ;Ml+<Ǉ Qe
M]~6_˪U{W8GV0DQ+;mgHR[d4nUĈ?).%gt(A=nߊV\HWa3՝Hګ%BޔŴSkX!8b\Fħ{ťCIӵNx;rKx{t=1̫-(#PJ [_d
Bx |t o\ynu6Y#VN*\i8%?4Zti렫tt"n (0ђKՐzZLDA	rB۞޲(Sjz.A_m_%
#jhcw¯՗+DPZ
4z\%wM	,g0_~, O]^S³N˜L{.*wt(ˎڬǐ?ߎ2w˥ܐ^W9s-*_Ţ{k`EZ-]JN/XIYF%
'݉;TG9.t4l6rNOߏG6ǭDy[kLKiV4?p~iQ5rB{ݼ%ݡⰣe3T°^m%UŞ-%
O<
>3.f>X喡䭠򣊸Iw=<>x6dĨqՄ^s Up:	h0u}.T
8PNa<CՍM`^UhxrRk1.YsǾdUP;:1S{"JKgSC\@Xcx۪+'{qx0Y%o]ip<ҞU<|wvz"@MӼR#S',Jf/c耭Uf+(򙓤F>	)l;!z?.37A/p%q'ԇ*
7K"pbOZvrV]4ctWQP>OVW0b(ɜ_Ɋ|NiӯDynd%iگ_(ICf	")c8Єc!".\GC$2,u6	z\WUjdy{`Vz,XDHǪ4?1i[ψ:
L8~7_gzG	UB0aP^@hAûx_Oi$ŻP!BmYs?!wr2NԳv%Ť!PZIC%x_"HHtE\Ġ+K1\=Z|8+h^MU%Kc{yOb:Gd[j-rFGm:d:DٳEz-rP?KOwe1˩m5s*D$/ 7J$l!Q[p`4b:^64U;mguuݫd~HJݩ ܫ"1Bm-U`,x0u
[kzq'iV~bG#kN#4ŬtDPl#=9D>j>rjZ\'zTԥ.ɷn@BhzR5z
\I]9L#EDKQfёjq	`(TW*\mqbԾt.,<On蕾t9}Dtv*I\w(ɭ87yY^6]MhjW/ݒr=c4JdkJ?wW12	L۲E$ר*P*o籀X#$KI?jiwK[oTw!ƋRM2rd(e.s
=$Mw|U3xrZi4X
W(
Ll/ة14U՘>;ݷn*~ /ȺB sŢNBu8}3ERrTf%z7 4RnO!vGf0`=-T`k擴Is9W[>%d?HGHx5b
z$ϢGaK^ZCRԗYtz_()V DiK 5s9U(K=Yh6H1T`k:̡V`ew[~o14zB_fv;@^,qfr2jSf
&Ҟ~Ք8V~jKP1^Sg~#6[ ~rFVdXWn2|QqA'hfc>.}J7E~)q7iƲ<Ro^y#FƅHY.IT)p>΃T׳AY9QZ-ܮKIշ)4sȫ 
6l+XdHZ>j T'P5<MV\U@Ch}WjhuoKh#~7PKZVl2D(tYRU+I-YZE)ټՃkV]uqzncjX# +Np5AӑRILFWg=_*WvՇ9[.Ev5?=ǠX)#$gZȺGB`O -$s LeG~=uJb}GW#pmGv.άۻ8e`%jwTM9f@p_[iNeJ
\zҌB7Y͐屒̒=~o7@QӺ.0p!=nI6͘4bk/5ix+<05-芅a.Xӷˁx
{>_ScӼ]q@=TZXm*Gy@S2wH8-/u0UrwH&$1TWYFDЋLCy0ɶ0y hgŵP0YhSS<4q
M(xomcO\!4KB  T|}$ilH xmwB>+WW=ø	<M[,_a7hÝA[(n!0M\Ou&U1RH<\GadjbRo<{]L
^ʞ3$JT:C_B%̦LR1ଙ3_nPb=-jKx68{_ r̦Bvս5lKSG
8Ӧ Oћ節5Rsp>c)VTkzܢK)|i6zWG]b}h	ݯ<kX@/QHWYrM澔5}293U
J]Il=XcUHWe;O>Nޠv
QiZ2IO
%5L啨&Ԝ+x v`'Pz#<9GǝChݜKj)IK5T+rҾw;#'zyRI@=1GO/k SxNկybUb
yv	#qLآɁԤ((z]sP3aKIȆkK(YVu_@klwtl *u":5ZHN]p>Hr:߬0wS7Ge7kͷ$|NGqg ~+?Gu=+k!Uh8Q65A\iT`)؋=Jw-0Û0Ptt|*ʑH#lCI<JċxZ[B5leC]Jz.7cМME5)gVX:\g qKZj`kvFV='!'C0Šw9-'Nˁ\5PY!,d=PN<(~JwB{M6O|ab6P6[ݦu'ud>zVW󓬬If)-XY8qMsr^jGN9a
q[gnKbe2[.0Y)~\OK!&	S%)F Eg|IDkw?JGg*?OGoENnC^v՗ncws{-i>p؛$)|L){+!jn3z;y&uP	pnʊhTJ(Z9@(]*Aԏ|S9|u,j(gnUx]]PhhoamyG]ܠ_Jˇ9i>W6s5\?7WzGRA6UjryOy[Oh~b Oi]zHi\㔩|dU-?e|G*?uL9GЯI"QF}xoS=;s*;nbsvgWvH:Ye"iEx"S8J(JUVB$;*hE-Wd}g 
"USpSe:w t.R^]GZCD>|&'-g'<GHmWnIĸ"@hޡD7ʼv;.-&^SnS@T /SEbDY=%3>ć,3
?bC
`iYʏ<{T"rRQmwg<'stu(^j'`Uqa%aĤwR	j,$H!%ڹ
[7-]Euwf@dMuv]Nt<\vʯ-	*F6 Sx2b8W2_ާN .ꊠ?p0]U714mMGUnwsy<Ep9oCr%ɂM_ߎrQ~dRLFpdM)EF_7%<Cp	<8)H߂mSj)ֈn2Er6bKRŠ(D;8kYz9ďuL5}n	`Y> %#b 6ٲU\ɻZܬԭ/jSήi})@F-8!_na)ѰzHKɖ^g/nDQm:r:N5Թ]Z-[KԡS:| }洮A?RR]1IbE>P-j
@;݈ɮR>o?;?盹ʚ/R"qZ@zLO[.Q{%Iℱjh,^KftDrFFNTAmL}v)Oه *Hh˚=9
%Ȧ)%p^.r>
KSՁP,wZ:Vqx}<Y>jeza
aGvYܳ2\$JP!Y	^yq^f)BAߏRct$IYaQ/.Mt|ȩŭWIE2F-6PbRs=,UD[.<+NҪZ* wU<5KI"ʢ"<D-U ei?R|](,$*)ΑG-aVđo "FSES2-u!A`xSv9f2f /F"VPKQJ)2*1&y^).ǨֺC$44RecP='n̟jqݭg~{9ԆAV$=7|yO\e]KWf:N3:T8IqHh7[ѪIzI¼r>iVHO%]e
N{xߩXVHUAKrR;ꄮ%sglIpYR!FB+N"/xe fP{=\Dj޹ܿ'68t%A1#g!N/:8I:@{p(245UyiI^aob 4[QD y@fWA?_&xmOC[]0V/Y7+ F8d}k9z&
_,|nx-괹.g{n˅JG{}Z,> MmEyF`'nTpRCc_/N) ts`X:F'`fdmԟ5Su6;ˏ>pSuiH
(g9#Kk*yq,z
NMBiC=rSoZm^Q
㴏>x@T_ oi
 i!xTVykZ`8Z3]ӇD2sĵL;	MSLm\'z'r%ۦMmϳ
q4?`UoAuЉn
2!xu贷"o:wo!FUP8\Sc3i0kdD׿z4LOp'~h]y;IO;	Q zvMMM
j6ms~?~,UvPUcu FnvgHQq7]~R<^ǾupޜUf
)~pIgO+ukU.$΄'nmkHٵCxo`<{6cߨPf+"^ ]LBNw̮ƲJOԮqws)IV0'quɘq	U<^t
Q*GXIk_qg2\1{ ilA=\%QG4R8iJ'!%MwK묤m߮	Sh1ì+A?o ϋ<}juu\R/U" 1XtRD?<C &<*<#ӧObm
`>-G|qBu,E^6wkkgJi$Qxt[d[I[~a
|LLH[u=y[[CrPzH<pwEq)CԶ[VȳS@flmӢ`16W t<R#^c#^
]3yЧ)?>Y>_dgءy'_=c@|?Ῑo
;r9gGfwTT=1%6X (^{RaXۣ=Qn[3pħ$aO7o9S6*3d_1T>ύp;RǪF3*T ۶,\",@63b
^&ED3辩>$]:i]P]R>bL"t`^G(@9hpY;Q:Қzȟ|%~paQRe.dm?F-7\Ȱmr돦Cϯ|(0ӊY#HE;qy&-D8m()\1"wUW&K@)ZWo7ߊjR.%NLXDqV,vw9"0C	)
ѻΏ&.Eصk8_Y8go̸|R>֙.[< ꃀ'iIq$ȯ(q,@ OP7{<	~[]n9P^F7]FVw_
$b.eDiLI|<nN"nT O׫DnnBx܍̱:cш,ڀ^lF_ֿr*xrjCSԶJg0>`7ȇDq>
p0Ia|ښϓTtt2@[fl\=qvtMjŒn-qZ+0:]sDx`)DJ\IUbIŏu/,.,{]rv;]47
dJr9㦔\Qޑ!u`:]\㏛#Aɫzg5gHܶDV^NŲm:Tk98y
dǑuY)F[E~Cax(':L߽dZ+=
$D3Y2+tV[rjv*.ԄkoPGh3rUg1
~?*7o%
p|utaיy.vR5;wm&
W8ߵJ)XN&&ۓNEy'OJ#jAI]g3蟃Ʌ0}y
=c'\z'.>#IVxAgyoB`ϩayoE Z F'¾ԡ`dnSp<%>je,ݠq7\B
:˝a~qǭx1<9ZtZ͓o^*wQC(+Px4i+Zuz,.#%'%EOhks{vV"5χ=hrn8|_LT?z'HKCWK͕qA(VX?Y9X˥>gl^ojF{[?%٬7G(,
sdJ׃s̕t_=C# .*nX[+.[GyOe	2W\}P
[ 1q:/TՋK;"UgJ[4%6m>>c85Bվ: Vc%BG6 Ņ:;:ȫNBL6l&]82p.m#.<gEƀ;̥#lnAƊc5s GGn{w
a?g 2ފ"ƨ0Dm#	@6&t h-\W擒cH
nsDzU_nwl+u<9):~
U!U~ҕf=:\~jWs&@)3hs갶Uf.*`ne,2}*WaJ$,eG׏XT+hoH
;<Eڪ:;BW.s;!8_]Df'3ϮW
f~V`Mr)|ČPwvJqV:-˩@}tuڗ#w	
ftF<
hw{5VwJH¸cy:O(j!	$5?Tn<<^mSU2LdcaW{r(q6'wTu(o ݙL'F'ۙ͟ȲcƠA5#aaK,\HD^2/rTz>g(OT|vdcxtp\7f8KguG>AU<x
s:RV?WZ~"p(ȓ5j=+`P9@@%ʍNf+xﳝ	\.X;@OW7 ;'R&2a`-Tsv*//UuR񿡭Ev?YU(5dƷ%T%Tj B:p1uxmX>5FA3-'vvGݣ<\%vEur2QBH=`"9bxs#paP.	e "k
!3~\<ТJs/\HaR|;[##IF`\^b[(vn]SrMN}co|ˍz~T^ ;+1I>]@_,>'C6MV] /u]+p HW˭i-M1|r'8){Đό4^<U}#8zJ]!hW {~~gIέ bSC;h4;+Zyٍڏs2Bg`wD~m_QŁQө`}@o{cߦ5Vb{>;	=:H-zje--
f作$yҮ/)Ln=X÷waVykLEpmǳte̝&tWGϜ' >P<
!u: 10G*|f&%tH\0P"@=੔!jEG 7-
ATk^{5'pvHL̨~sR|>Qx~u5AnqOr\eCڵMV-F\m	L"fXVgkyBIv>@ߐ%7SdCܜN|}0)Ny,]t?MO@o;EɈ58;XTB#/I-F69?O@wp>_=ה*)5Im 0&x>?9(g;9L"G-i	ғ{_yr̚Ĺuz8ErDg
׌-'ZJv7Yw
G9j=:KwCKorW*{Y`+nzַo}g!l[=3]>Ѱ:zaZΟT<l`B)͆O8Ne]s;*Eްlίzגaf;&qN1Ԗp	fwsV<MPp|$TVI8w;()Tt~RtOýrEꘙ#@%5t. ߞrmy\FIJX~")JrJ̔6q`Yc0
R{uVJQR:Ho&5:jC㠊AP-]ɞUk~opMyQǧ"xop_]ɩQAοVqڙ8wt](pDS^t?&=YĊ S?|?0ڎĸ%x>#*s#F\rك
9/\J߉\Q'gM)5~	.Z,Z/#5A3H.?roFW-|vUAkLv&N`&^Hy۞frG%٩(䃽߹GuQ9M(ޛL~a{񯔬p
gmŁ!a&3G.;IO6,ro}n>'PǕQ|M_O&xIt|,F'w]un?u#()(9%aq}|na8K6_МvR(E&x2	QFYnrFQ+x~JNV[+lWl V%#\Nxz5j$4 Y,#Y0/-Q֞'ǲ;8D+OWȼg1 pҴ\
&g+%#p#u}!@n8bo rt:#S{XO]m=~prpJ*Ѕ>ޠͯFBl
`J	nA2[R*3=
 室`>3x%+LkڕT8PD`rl^&YZҳr@mۼx_n`R(h^Pgx9No4?h;_w5-0g7s+9NԖ<~eikzA%x{4]ۃZa(y^D~ =V9nvX!\kyVpn-oh>Ҳ5Hh}Z؛*NӧQh)h 9_=#[R1kPjCsaL[?>[@7累]&1?4]H5J_?r>?bGS	&nUU[
v#u
rOuF@BL ;g$TT|V\78N
B-<u@ϥm>Ge[aΧ$ ϭ(/l|'rΉkaʽF|z
k|qWn$r1cO)n{arl.m\
hC_[MG݂SX
͵d'`$|,N;R/P_		,d*Ӏ5bw32#*GXԵJh`)Ckca	
n^1kw$xr:z
w`}0땺mZ&1mDTtob|=nUL)+:%Br蜂'L!TйAYʏW)TZnWyc%DH 
Unw^QJt}W-x!25堦Eյ	؅9LU@F0y|nj85q9rUJKZ.yiNrcE9k (zGE5ɮ-n?M')1!y6ǜk-IC	E8É~`..%w!7(yJe,Zʩ~6??F5uD@apXzv
=d`K1)mgYwAiܱρ`)	SUs: CQr.	ʊ:og᎟sV7ȕRl;o@'r
[~x~8rwsUm-^e|i	>|Ogi*C_B*M>Gڇ
xGc,[8"lNj>	UuGt\>Y#?6Pj",~Ɋr;҂wkŅƟ`/Qb>kM&ZMy4Gso|.Wsý٧'/	& \)S5NKD:h4ՠ}Dk
"\8w)E_JKQ2K@AGwěD»;EmH}0Y''n1rR'p)e@X<IqɚЦє3@KH{]|]eN-:$)EC:2uw$Ώ@_;3Ǳ%& 1u5|8i
cۚzMLOxRlQ	3fEIGUkѨn(<V]Y]z0xp{+8Zo{͕j(a%Lί:~V0T7s\#Ԩn+(6_j<N!M1}h*WEiܐvSr@A݊s]㲹uHGe.x%GE+<Gz@1ْ"໏'~쎗f)||0R"P	OĦrsږ=Cu:[Wi̦E/s(]IS#>4w($ۛ}NbŢWRHmj׀6<cmwc}0լæb?PZxFbHSVSSFeS뼡VO!"Af܇9ܼQ3-!ǳ}(@}%w#vTZ^=xWls_8GZGxpژjddRMHwPL,%(oqv2oC:_q˛`=/jAt.V=6A;U\'{ 5-\s<iGH}H!8Һ8r^.VTұS6ڲ1U,\Mź#aF-*kX٪Ih>x9?!ST,_B,uM=҂B#kU|*^
/usP[vޫ,
B7׭=R+{𲷲O]K[hk}ȹt"f*L|ۤ<j&QpJ
NG_S9+[cz,7邡G93 %3៣ZA?Zhi.vz<DvDk'E"ux\]$uk@;/n}zmˢ	1889sivlE_Tm+']'8;8ଆ|"l:مV2U ӆm9^-,^ $N
A'++ur]KV9
%
4yS*SV5Br2q~Vybg BrkN |L{I E4IjNC}ډ+u\1$Q!\i+'s6k7#ad+;:UZ&g5H2:-P-%F6ޜtLmϰJ*vf{3Cx4Ng4LXLI,
֒+kdx^j4D	T|Qs8âUst';ڼi;y/O(
@
,R`E:qLXYHF#a%PAM(ݴ<*G	n@I|A
BCHZ|
0'
B92|ۧ]zz1DJ82W"KXYRVb
@plJV YB|"댃K7\uЫmB"0\y$sA|n<O7hsǭrbPuK鶢wzQQ1ifu|nH@:	n V<ؾu֠@K<|紝w4LU4ՕOR4^:ԌheQkxAZj	7Tktxv8^nz
*Ԭd{vQRrVM]jqqvGS@tŨ6) x9$%R{lW@o\t5R@*	Og_ɤgdA
"NSri~m>K͉;7@DhCKzeNpDq),Ev'6Ǝ/n y*Z!;@ŖU[[V9ni]nŁHDٜ鿳]"7:@|xĈ)
	$`Bpr'˗pB<,u]7L$dˏ8:૎y`=O],9y~J{2Rvr6J<K7wG쉽D:9&ZXN	e@H_i,g7n[eB [Qϖ3\ec>Vv{êMsU'^
 K^@ᴍ8^VT^^|*Z_>uqsSA3-^I4߬&-(#a8Ao4
xsk<wgRNq'*q(ؐ!S.wj݆W#hZ^R{$8<^,^!`
o[ӊB">QUF5?!wdNU]Լ'vJIKudTh \d
vT8"Ap\&Yt`N
>09#rVZc{(;'^4@U87"`Xy->j[N ~,^RVmԗhNuyI+C$o6Osjn#hEW2ފWpvľ/g}77
G:փ<Tx9map>V^ֲrgU߾Eg| z{Z0y/  mYN?&-IMݮM)9lK<p1H%X]{%|Ps±YCqtb`n«(+<Zlr)TqN@gwk.Iڒ[N*wNWXX$lo6z=h)Wlv*5A6еBI	f8*h+΋ds$\~F6W/d7Q ?J״ vZ|iuU;!6j8ZҎh<E@8Ω;I:[']zD$z}wBUߪ/;Ï4ad_EUzg~y"Nh+'ONbS*GA9&_zO+>ӕOq;:p7FM.kx|yf=-Ι_uvEywQ>8̒sdB	KO=.r9h	rsF9҈RW=Ǫ!.gt%q70
K{umi	VT*7(ʇjճMjOkrŪD5"_s,y/
%B
w0[=OG#wj6H7[';PP{|{V2VV5}|nd*X5mHkяS=)37gΏ^k=6X$ܗӢJ!u-C'Ư >'?|)t
L&ig8S-PWS&Zcyx9Ck\ϩ
\$r)w
SIjzn0xE(
Muڳ$skri\F7bx>]uP/>#Z+C,869 Ŀ:p묝xPpχ%	P(1ͲuBm=`;' /#1Gij$gSf q4Sg5-םx?UP`8:@>vaZ˻n=SL hA]tW%x%DG_!\~u~0xP9wBJjYm_&
4Oct ^+x[ag{uEiحO݇#jioP_M׵GΦcq-ʧ=S;^1UC95]
oY[jNAe&GrѮ39fo{Ie ˴@EmF.͓|@o@Ma`_g|i$đ[_ɬ
NNA;AQ%"dfegR}
Q#ܫ@$;

@tt=0sܣFE2ýΗ;DWиBuƗ<ȯRO'/[,eju%D]>/Eٿq`7\ǅi>#}3cڹP3ıG:zsW҆仗d̵u|&pֺ1ņ3z/#]
!+l1ma5{#7
ȅq53Z'8|!	[@MJ!
B%2	j;	;
2.G{d.l+UnOT ytO=s!ɶ_?X!<4u̺EhtYp'M<|= K{CIKϨ>z$X>s-d-E;t) 9^2٩roAgisy6gf"9VS\~>g.G0763ө3`Gz9-7GN0J 4DdAxGw:&Y~
h9ydq5i2ݗ</뿫/쉏jU CN۹)Ky ݢV&pp}f
j2UzpNnJgKP<6AoF-{l	Cm)U0(&~ªF&N~9>=,i[/Q/yNg%\{D_N^ Wjw)5<}SϹJ yFw C.6^nMzٿU
|Hwqoeч/c2OyԸ$Jv$JA[XQ	zP~#{V!9)rV 3/0[6c}oxSM٫#j Aں.
[Y5%s
 #?xeA+6u><i*
?Grc ԳЛ |\`
/_lt2av>sLq@epB
g[@eOêŹs5kZ/I8K
]z(B($7ք%ֱHW I(ә,PgجIL1(
6TIҕ*X}d$+UBG jUwvQU3dUNRʙCQ_&q
F):G]X|nBE9w2jp{7rlGb0RI.ou_Qe^+ڼV]P{yh,-ɰC}OOc7UuZ^EɽL87sZw}sڄ@Pkf;䔔6U"vf[4wvHow?	I@_6@룹wS|ԙ2I 7.w;s֙2巐Ț!Ʀw RE)׫y\w;Qx'|ۯJ}@0$CM<Xѯ]/W*S<\Q}F*Ndw(,!%*Ymnaʗ?;Z0%!Z#hVj(5GPxΛv.Zs'nկ!T&qWsi<r>V]0vh.Lz")!PdR&yQpf	'X@y}_B:$,VDCKEUfս)c^@GU=rckUq`QN邿Fhr 
 zeyT7DrEOǥ
zK]u$k_\$ªEJL=/J֋ST9Ku@boO<;JM+d+?M[{eehn>KԹPGm_V.~0I %69^|.)ㆤ^#j(Vk9xIy~`8c`~ZzPz;%a+~V
uݙ`~ڙ湨%*w̚Tx&]u*
+ݝi&\݊4.\m%qq)8n8O?BH ZmX`#]WKN@ഽH,C#5#V[	wș$9B4
9:'ܮoӗ(54~g-j=g,wH3u:zQsSE}+<T^4W!' hPPM]}Эz>ںf!Ev$
$;#}*uq.':]Lrnܑut  PB	J42bC
*@^/v+"'$Bۙ4D"&+{O*6Asmcn[5aYá<1o-7HZ_bHm7v`(H5Ҙ~%2N;uU+n7ܽP]]eݛB8ɕHIE o
̦bWSvxS#^1ڧ㷜`םW$2s*٦bJۤ]8#u;}
8g~=KEyZ洐\V$(FM|١f:ck|do03B::q,;:bҵH"L9uĔ}"	~If0qfkI˗JȳqGϑs+Xtuݮ|4<ڃ)j1s&WAǲSJ::Iu\;$c Z3?rz^'vұ3? :UûRszt=J@ߨ]DKE4!V<\>\(jIޟVӛO@aG#;&|wv\SY֢Y.JmUj{CX<{gHoAW_GWSZy'XrtlOԿՑ_|e.Na	0E.6ˬ@+_}|GGߖq9w/D+`\BS
~Dwo/7	Ÿy8NY45>4o:a(H[g~޺
^{9xNkwAjy<Tg+
lv~O-T;ar[>Go%f*FD"oHcr1vU*,%:ߜZ9[Q5bOd˱H|iqMC6*A	06ƫ" Axnj)i>?:x}ϑEo@ #ko:QiHEʑ!qcN6) t"σޝ38r"*@Vȓ"]$d^,8*0HξK{Z eya­P{SC䍓^J=Z5^?ӥk]8lb,{'ۑbwNM(qCrXO4p~/ ߧ.譕w@0F1++4ù` ɸB km"Z.~.,Eu!&;hJ:V 뒗tѦ7J!%X|eaRŜH<%m?gZq9ZmZy$͑'O<v\`Ō˃"VaA`qBb5%ANs(k3`/65#[d>4NbV޻
oNs fIyErzCN38`a>S8^|OuB)=]`9۲ W,uj$yd?plq ۑr sD$/|OF13Vi|Քsߠ.)'v*wN8wi4/YF&]%phi/VC-/}Qw^c|ϐ[9XΐlwzX*Po>VzףSR~^U()[׶
Сrsb9,l9Bƙ[tL^ک\&\[R
6:۔Ipֶ]JKr짩_ cS>8Y䷻, f:vX~^%>[ܞ}:3Uj[4IF\rzg`IL}uef~
<}?YsIwFw'SX-qI|Jau>Kx~>(Bb~oOXhX2ZiA~ʢF]pBl6աe@3{+tWrW:Juշ->1.@3V	9ŇH ^ 9 0-亇1EK%vT3MǢEnWVn6G^#@X6ߑYOKxAuh	NT9ITardZ`Cܦh$|\o )iYڣd?]{$ a?Y>8Mxɳ#`07~l@M7 ^ܹWir(5Dq%|<E;sshfƆ٬_Zܼ^q|1/`vm_jP@4Tw\V߬\B#(ߏGQkJ{Z.z	dítn	N9đڪ 9晏 B@uwa'PznC)%qv^6b!,SælN K_k@ҫ
K*DTz/_gũ=
h)z~=HXHr]V	d$MCmG\ᢩ۰ݫn&l?ޡW"ίfd̥3UZ_ w*QZyѢ0!t_U7Z?^90OPe[]0rBtў϶+ ^
O>uܭ,'cy:q$ݸ*!ߐٷ-tnE';'=]qs_z~.+N:C1+l&kzR\vrt&r\)z9z>Ӡ5_8b)^46:l#<*xUY?n$iK/n}*$_CHnݲy&ÄxoBzίW)z`{R?$OL˛¸#f/Trn~Q`Zm->θI.6WRsøqc.|D'hYإ'<4>gǪwCPuA1Xiz4:EUH[,ǲܷiE,8k}_YԶ.S>RO|2my6i=ImO1by8[xM
[jJe4A7~$~\65]q:Z^I  x5ib	)CPgFlYUi:9}{woFCq-ʺSgƠρ<]+ol4t~{ pؖbbTkHF.lKv%tZp	#<H.lqacܡ# tԞkG<5{+*PZaCdpɵ}9[ hE{M.ggH
׳dYCꪯC	.zx6*oTB:
chkn$U7:s_1 .BDmϡgd+bFj}v{R߽[ᩥbMRs	
aL5K?j\]$'#&]Bti@6
vuY4[ev $P\#,7+deT]tK,]hz#	<'*vHF7wzK@W3Ơ\.!KV떺ڹ,gqvj.g9-^3 A|wTt:d.lMVpjǂQO?_I1)[QsBjĊRܝ+GP )6D\jU1ϪTV83D"N%7$ۍpȮDd92#/7|pc	zp. X7 Z7H$9M%ut,"XnD
x$)*\MǇlTƁ
'z4zM w[ugc1V(lkzjt=m: .<g`=¼WUhTBz9s<Gl*{Z|ۡ5,?#_
Obu7%=sHyh۟`q}:9NwmۂRT7)N$@	YiRaM)lLRrp"{$mrkZ9s\ut~M%iUHr[ׅ]k!שNG~VTԃ5"WBϴ	h:fKĭƃpבuV~TOքJ0r n9:uujSc\}G(.: 4,KhͿQB|s{E0!]0f	=|֟?|;8Zɛ~mtpWztC lBcik#p 
ҕKtO\߲Fdv9TAEMj+=*+^:U)ԉ/a
5RgSk>NEngA"@>H[̺jhD]PZgl*{㫚>󸔫iF~
+-(Oih?dR]~Bx7'C@kOj zXnL9AK[h "H}Ɇ.x!hP- 8|ۊ={|fϧݍ58<([TtLv'w]C$4
L]7LO2o۫#kMB
7op{7/4+xV@SWۣp̭/[zjV\;x  6Q۾֯J9}G%LVv՗Z#+N>:q(Kh^tgK:[ބ{D2)Qs`%aucR˵BF))six[׷'v.@SC Wu$t6_.RT<f]UEe6uNy/흜$ɢwV?F CpXnAS	9[ټݐ#iݏEP뱌[duv\dPxTZc:@N	o}.p$'LHx޳NFHCR#E''*iSC}6ƍ
jA.Ʋ1?xʃ*+*>*ExN&9EHs_ޅrPoՓ=IZ3g⽧
aK0+$-7h&ϛs$ F=g̃J%&5~/W7E Jr;R:
oEԸ7
SLL4wKg݉]@LJg_xErLf)Td9wygOkӴzg?Np3s֌3!eW	}ss[9>NW\MKk=7Dwq>jq(ߟκ+"5`X6$-:7z*@|C3qO,;䀝{[Xw5##ϘrU;*[\OOyOr~eǒox)8
,>h 9 P>_k+`䭨~;S~A(SppmgT<@.S4ky4ʨ@l-#IֵA:QPV8k)r;i[A;PUؙS`7j~귭D78KpQͅ_6.?tLkzN#i xg|/
s8
抙XejOD?Vg廚 ·c9 yY?.0oЫ4קKd{
6rHGҚl(-E҃>b@Kn1Gv%93llW_ PsϺP<=^N!Fe)4c w50_7N	e@V﷠𮳝Qѻĥ,7am͛{U@VQq9>MIa0k*yTJPسJ>ak=Hr^>OPxrן5\>:
MJ~䥮 C 2v1z,_Y]9<'0nMՄvC:.'= <uxe>þ'ʶC/ұHZ c/;jc~E8RZ/_$,(gxDw՝9B7чpα̢ay9s9g
J#Jy\O!]1I?c[DéaR4āƃäc?ճ\onQ}bwEo:-ȥFQV;see7Ά>hpwJ##|B^W;̥n;<H@Jd11nC3#g_A`w	C3! 0r K1Zn7Sf}5$_ȋKOSy?NttcGa%590i%?;<;a	M	G'wj\_~v2ui|O>s3<3ܽyސS;x_hwa|*X*EBqyZ%^&2{|oK眺?+ra5hۥpimLϣ[yYl͗=iv[I;x7Vݦ$|Lv.Q\;(FE{ ւ6?W۽I˶z)-9úxDA^]W8~0R8Cb:4L=U>H<wOj1l^s^XE*yM@&_f<<G>s1ɛʳ2Q{'! lj_?4N\En4_q&`
q%SϱA+;*3O۸;tQGqn&ȴL*b8j K2犊(s&f4nν-$Uc0/&y+wPm7hELr5k;4y֭Mn\Fs[O*X {JDb/EɷqfZuNLWx{UkJڸΓr鬎y*EMzO!H$f~Q>/`xƷz׫èy|`TvTwrOo&%C:Lot:lm_T vR+DR}^%|A	v{pt8@w˄Ww2X'kL\XkT%h3
ww_wI(E'=/'`C0%ݾ^R?Uȅue
j;=z ŵ uFn}Bz۶8R:~+"ͤ#?J-OV|S:%bpVv
Lh۱S];x޼<bԑP%~2<9\ ah + uBK%#Tur_]J0~Ĳ8G7ì\e5C%*?E͊$`:$$IX[cP1DBrk>dR}qt;md׋˻;g&NDqvS|O}myjSLs<m9\fr^'aԨ9>z~-pק%rN$#乀;s}AL{[ʟ7ئ+G*m/v{޿OChB/8xmoKi#cqhC`e+!KtC:9Ak`
xT(ao
quGj,R3=7RlBn,6x8mu&h)-Δ޾OE̆Tjo9PQ
x?yoŏbYB;춂؅'D(}u0V8PՀ	ͷs㍠O&E?e
~ *wƮY$]qJp#L[HDk 4pcr.@sf\ᇔ񾚓;fԦ~'Vq>PL8bis,.^vć#ָl><x|5C^xyVrcT.qxCAe1X}[P4b(8N$%H밾[
Mx}
؄hãXKx~a ݭ}ܴsX`]
ID(quwԺAլɭ%8."pUsq'N k */5xMcj{e9pFiF j;WpR?WlG[k8crpGpسh7BvEds"!َG-G\e|NVG×U(\3@* Y`?ė
ib,ELRsT\oXl-N >ai&Oޯ9M}0]ElsQ3s(q{<K?:E V5365$}DfTZW6IV8cYNk`kg$
?	0pB	-4u(0IeRl>nEq9]rF=Q6=(DfɄ6%Kggh%BB;9%4{p]ׄpOyKi"Ngu\.~hΤ=+/ti<)-īSLAe%yGwRmhlBRYceٔlH.j
ErCx\uz$\')STr΀OԴ(8E~I/zC(*D:59j*JWY΅VSK\p+(s<3׶hyLZ<+cCRm
Gi\_@k$\X-~i][S{?5R6=i^dUmZvJAe
Η>n)hy[+>c|i˰/uz
.yykn1J	*ʤ,7eL.O<&p[W`ikZX)
5Xxq=qDbJOx@	,k.NshqU!$)>rN@`LQ\倪{4'<$9&$)*B<<"oֹN9$}ջpKH*!`ې?5?]%=( ;lˑB7	s \ǃ51+]Awmڴ`р
tJfj;	y@3 إMWĤnp^<'e@Jƛm*]E	{zެ4L.}Kd @8U&=˾Xa'.moƶ/EF/6oUzۜ!O|
Ϯ(#y?pj-:O檨f[[NY^A*jymyvU\F:!=a;=%1rS$0ٮ`U
G.zx5=xA! @ȼ+ObXJ
3]&آpu˪)Tncl?H6< ouOE*oGPu7rIG+Ȅn΍kqk|N뿇Áʭ>GӮ]NA6#0Ioֽ[3BP;L|ky	(q	|Js[0FSrA95i3v6G;:$*
M_E
!':PNM{7i)7K%[oJ)ӵoe JF2N)XHVkGZ,Z:Vvozʹ;!3[ps\ețbMQ"z}_'gG
˹TPUS\hEɹʕvA8i+®aSӦޒ!_ASf}}N,j
s8ickH8C4m뽚j?Z m<YxZQW@$fq,ik@!a5Tz.DB>i욎``[}AآbZ&ܛLi31ٚ ٨լ=ENb6h<tsp!w^Y8
FV<+0Z5nO>`	Si
_jw)ZB[$)jn@Hä~'jɸݡq̤jpMS1pڴKWw)Z$<Mܝܙg࢟S
J](!7Tuꅧ*Pp Pdh*?qG]D?ǟvzJ`䰍(aY:
~N~!;@_5Uǡu
iGd;p[#TNᜃɊNzjЗ4籒a^#)|9<h(G2Pމ帪bE˼+֝40AlFE]^_'ӣzmyZ3woWwpsj_=Hus;O\rVwp?4I8l/b xw3PAT{[c+-yiEv1p`-Svg~MISWx'orW!|KiX5̺8dAXiGҺ2yvbϺNv.n
?|/=[CUaϕFM܊:L<ASoW:~6N|=Pt>=5,ãSkwExrU&
 "j.x?NpMeGC\ZOaǡ=5;l.z'(Uп%{[ǫZn
Q4E$M)Nm'̣<u\PLÙ:J]0dh_e^L>ZQ }؞ /?|Z!1ї[yq]9*mS1DR?N>Zpyɏv 39L0/pbJcM]I>0t,_p3kDxyı8O J.GK-xirEigW`U:O?WKt>K$5ݷWWsVrXEl('ZֈGh!jUu9Ԋh/G݉.2;t4W@r~8R_:)LTةw
;˂BtCyS<h>}15ςrUxЕtUZ(D+PQIJ{ETqR+owTAR=3w!bYź1^>z<p&ٳ|5	e]vϭ\&yfzi|(
5O&tn'Ns:fSv	}n&QNv]w=@ԯO .l!=~.?o/:okGY5>@NS\66!'*ױw}K1t
):
@۷^+ I.9~Ψt6WV]݆ڛ^$X]E-H sqyfJqVԬTemم
|W:d;8E|\	@	j=;ovF!>H㽡$8b:U
;BOs<pnKB|_r]Zx(T!m?	&>KK>,Nm	0j="Ͷ2׈3}_ju3 x@	/4G˒pEw'w5:w]]I6XǄ	L=~	]$Ը:s s	A	h\EboG"ů|5
AВJAI6O+3=kv*vx%E]tnD=!9zۙQC ^/1ZfϷuv:#$
&'rS&xs@5) RZ 5G}%𘄴g>S6j8Ҥ:ࠏvxb`}uqnx}ybTee:?4HU6Kr#4g:ʓɲ>4؁6P"AM9c.s`Aެtɳ#`iU֟sG\J2fiBYiVUYÙ$[9zkV]bhcpB<k(ckA`xt05׫|mDiGdxNbW{}8}V!)p)5m\BJ\0=GRWKUj恣@AӇv]RܤC;Tx@Wl\LkS,9l<|All=	Fث!MW/0=
Z^zQ	B4`mlJL8.raH:]˫.zBu!"ĂیR7pρ7Q1@2WڮUG\ާ?^EӀ
i)Z7x@wüR}rďാuN1!H2COT>oLڽG
k˜gj#
=KtXokph'Y~9njM|el1wsD&s9
.s0qkq@C/݅KesW
~}fhqY~#hN]@ @9Pߊwʆ-	n,o49ג'yUxU^'p'&
X2Q1:O(W~3sҙg<6*'L5bB_|"rTI	Җʳact2&\'[SϵgB:V=;v{~tO<Pq V GGEO/2Ej @p-e׋~ipX׀sU\78A?N/4xGש-1um^TR.
A9:J8¸F
/+R˵9E(bدv08D?*zg}g`LVa.@\"8|TM8pja<߀vlS1zm$[E;@ѩq(4;*4-W-&̶{̠Żnhhf,u37Ra%.1v5tG&HK>q(	Vӷņ]>5և㶚a:^Q.nJ[{#".3NUR&1@=Y\ҝЪ!gj .$_KfcMrZ%@D]iR`4-Ca]RD^e"Y#85yRC:v2p>s~VV6{AQDmӀq|E5WrkIQ +V5$M"tAUj1t9+m*qtQ[py_g}Bsoy5ͣtDFC>۵O6m܌/=&ߺt5d	ǴS~VqU=:!ce qÝs +"o V/ǦAr$8eHUjC<\_G`|Vx27S*WQU)ɋhz	D(jU~Lĸ[ep*RT:Isg	ϗl1r[>t'ĩ{w[Νki3)ǁ?[+o!+yޝ\[	3
\ʚ]3Tps5⧣
saU#0B \54gBi&CҊڣ p`DNbU9$Pm;uUPljde3_350X윍Km5&mij݀DCش!{q*k> I3v/5>4dz.+v\cru'*Z !E3^>L)vNCm|kZ\OJܱۮ|HW GBT0yqWm6Mw-8'HVt^֋ X* 8K}*;2n(DF){Iog
8F~Z;Kc`
o|'(̇C{d?TjX])}_8:]eO[Cn_uB"(7}@vp9zAh\Kjgݿ!:4Wz,~^[J3ߢ}sSC e9КSs ɂ}`pf']F֨XWݕHvdtE*{
Q_mCrC3)Ibc=ݙPtB._S}@WOSɮF
#>g?*6%UJLEX9oH'g=nwz?x/߃cÑd<*9+<ShH^/ul<2^_I F*'\k v=FZ|\ RPy2J_g9Q*2~>Ln5JǙExT-"
R#%m7n+8ݍ. {ԁd8,J7]-sQ/
x<I<#z6.&d<u*3Ӫvbrd=IaS 銼2 +(\r1/g?lmt>Dv)6R526gNrI_kx]1OZ$9}ߦzVjs+W`N\[\ ET,rݲFKԨ
ω=Eh9[J!jP@e1(JIꏆ8IwT@Dะg	g6.HI%u~GGlMuwdz`Ŭ7Y)_%u0n,&pIlxi<)B'oyZ:,z9˪"0)p}gM"Om$[7M|5EwTZ2X_#$lh?vlr|
Fv|`OW"FrnW)B2}X;ȮRՏzOksiVG\?.<w{N@Ju|/=@y+gDx`ȿ 瀪[yqJݟ'\-,~!/D7Xzc3.u#^-^#b
T]WDR~*H'.uNn>zƻ8t
ЃyGòb7%y+.X*8
B:F?}9[=z~ਘZuֆ]uwlCY=rvWRꇻ3|L<X"Er3"ݍ
AapS'HuOqRƒ>* ލꆁytR¤!g]SӺyLqhvrx 'i4]!a |QSj~F
>G<
R&|R801}NA*Ppn;)oNzv,RBkGˡ۴+v2|d՝^Qm3Q"IR۩Ţ.8=q	'FIVu s죐嚺sRI*@ٹAu6y6#hlTEC'T:S;wNǟ33qk5T	_ҙ/&!딤."+VV+UHߏv5}v]/pX~~KǭY\
әsģ}
[jJXu9b#_Gzlٿ0tLJ
C &`t(	 Dӏ2Bv27[b=GoUyyƝYҹB<O]I*ws}Jd#{6_J\H^ -omϘTTPTsdK֐2T>L!Af.K[tдj	+(V.Rj\!?5ϯ7OR!ggě2'szr$-Z@zlt\Y]֜V;{ZKG}SDzNY^yim\(nsmJ&FPʂ=YM}9smFa	@.ͼ)7[\X45p9զVt_ I~]&7|~>]ذ{Q!RoP4q´N,='nZRWtv?`ŏ7Hz]3im3R֍6Ďqf}g#vP݆E
Xr{Zjm9Fl[d<'Z7 	9;>qV1t9jntZK*\maybm4"jmsԿ=*r-nM%0xW'{t^u_(I+#Ǫ)s ֜]/u%yQ!:	_Sj|RB0?ҲhAd3vCɟoYb-Ln} Xx{r\^UK]OWziˡŝ$rML?R_CU|M+w]Jrw6j9Y
565^WCN
6b28?&J )nĳMn.~\#k,#a[4>]ĴJ5ÕXmICX]gX=}tHƄYI hCDQĭ0E:jK
{>b񱲻@2ҏXCy
Ȕn
rǅ%OYCr=TAzhiv\QakQyW@U_Qċ\!"1_  3jb4ub3UM/͡YfRTW78`(hgŹү"5ox}YǨt!hRՄ[ܩ/vxH0U^ޓz*B) O tZ;`MzB37\IREq[@A"!#Z5U@M['-tX"*"9=ܧwh.C0vl 8tlR.Pp=nj.c#<!|U++8$鹅3Y/n+_oKmZYT}CUkJRUqxgx5FE#en`QDw(~k:Dq[㡻S9ѡ(W<xO[>ove ѻ:ttQ蒓ϧ/nP",rȢW3i=%sNmٲ+߳%ph~hShW;i-}mD{rmr}T$fΐ3])\W˿eYgkqR>G;P2_*"gw?lYƔ9K7}G&YEPhI
Mwpnͫq$/1@*h#&l}q y_ІX>TYNV$Iyhr)W99bV;hL{8Opg y(&\3NĨ7΀շ	["!ryQJSyA5:ڲkshXpqX涂y9_3
zl;y')\4<o+t¼i93Ko;]_E7y(tOƎ[db,$ͦ3(ȣ{g*LïF#{^b<E'nburtn;@-_oaluk0,3k)Kn=q)#R_fv^n`o%Oݨn&y2o10!g^|FEn:xqj `,[tAy@;qM*j:&;2^!
Tء}		Qq2"Pz!UUǈk3]/I1gt4voU1*?s.On5Ae$AS̀ߦA~Wy`
Y?HOIcl`+wvwXr9o_8x)"bG%|X"k GO=mCΒ)7X#p
*tx/ߟ)N72K]
NkjΧEbKJɠ
baKvvk\;I:NԦjBw~Cꎮls	l$Mj#Z-sUwI	/s w+Y\bZο> "$jǇƲ߫%
A:Z2'Mp]TB4ew>PIݧmF+u랃#ee% qkQ;qL,+ph$Ѹs.bvy:6VۢY?wu:flg-'弹|<tCra[Og=8T7jZѴLܙ^9dN3	wPA溁&`ŋӺnɇJX~xuPb%xJukL}&FdSݶ3t9Ȅ󧮝#/+$ϺgnPJ[
Cմ/P)4(.(ʫ讦Ak4C}RhU]2>XYXb@/~du\ϢYUH*ofH:|.SYܧȉ*oD-@MA[{{z̤F㯜O˙9e~y|~:WjuҺ/҅PXivf/\-2
S^9£C\?w#Yu <
ߗ%ߑx"Mg"vq ßR@`?CN?jvV8 ~lEZJ|$w*&r
XD:}8Usw.e2Uћ@.=/h|)5=Ju5ok̤<g+ל`n,$Ҧw޽D>8O+sbkvyG+P:QA^MoCyV )dB
;p+?]L71ٺp`nV"[׳ŷ;}b=irֲ޳4׻в6GBM8#݄:;,>?ap"7HˡFpp1RB_E2|.옣li},Ђnwg
h'Vw
FZًT	}'..wbNH8]zT:4HQ
eR>Il;D<k8'XCƞ"|G9V
?o|;VXTYBSfd븫Oڡq ]8~ͫګ8Dfv&B^г8ݿ.Yj*nWq`GPc7JVo$K02-]s]r֔q RYKJU:lC hz ݰ U`cjV(F}0VE\D0 .x]<k*	!Bӯ<vmZYkmE~9ZUf' s\%hp?٫pR5ݖc{utc@Iڡ9syɃW:͡QG)D
)v-u`WPCtJ)\|
x
EX-I<  S'4#y.WtoK+[MfUT>_9<drc`߬D;uZstM}duk먫L". kV-'붶Rwõ]tnu~?X6^_Z3+Մ8Vল#(t0Q-8qRlȐ5apZN@/n󵁌18EoK<ɼf$?_@ c +3d=
WON!n}BxڲdM9\tuoEyKF7w{@}~˺#8
 e=`i9ZB2n5{P}?NPp`ӯ`:<T
GcV&O|B=~74^[_tV14kG^,WTi
w/xAy=؜sBv
|qKxYW >Ef2KsV>aS'x4{@tw:?ӒR!sjIDEt4|HH
Gރ(cJr/n2f	!;ۙ])F;[}fP}gH&~d||`^p>B>mqyٷ,WY ,*q$p9%³=nC)y*PjO؋z+ţLS868l?!xLG
Le	DNaS)PCHj++M~5Wu'ʠH 쇄wYXZn1M~[ty&+5NZGg?[ۂx"}-T;W;cDi-Q'YE|+,g7"9s":'Τ7ۜME3lsV+0s&ڒ=ֈj\qKэ#)捂MG):W2,҉ԸPq
ECó 흐Y?2o欧i3xoinu$R${
Rp,ȭr	
	(:l}9x%gދDeBԦ9{P^qEy`K".M
ũUTW4jB!h
ySpy@܂Ոvp3c8?oZpu+9^"9#u*P*3պ \$&Ds`D
8OjJObo|ns[~|"I2B0X;iN?[HہP}7]_H=K R~?VIӽtLi܉؊3&
7ξq-<L:yyJd{IV/N$/&ÛUVN{Ϻ-{Ӛ9@2
q>T>mA|fz:OOiߒdCqqeRlw yUcgꁓLHOe< >dVWc~.>Qv(eÅap2p*4?A誵G7Vn7N9B{b8}Уj=DU*&	ΫWoTݤn/hIPS:Q:`
Yrf4qJ7pz@W_&2߅8;6N'>@?OQߒx9-ZHvE!9_a:8PÖ[!q
gG
1_
9[#\-xp,w"
{xeSJsp8BaX
Ry^ѦzP*cNj@hn'sG=[`wU:%rqջ"_JEc[6L)&\/)v}~qW1kBɐJcMRh|=xUjur䈭2Eg}U^hkzYh*/>V/@3;
{]
vC zp5S"+!j%X@b'U+ho/YnC{#G{^ɹ8T@m@8/E}I #8N*9Jҽ]7CZ!zX5i5ؒ:YaU-48{]]rbtӪJ)+WHfrrudK,^r]YI_FWQg%_
rn%t5Yj%5˒U0SJ(Z?g?E{ul_J!0ы3E9 7Lu7}hH(wx;p:Հ:'6ylLy;u.2crg^-c:"NIh໪[ސeCC3?3z=1XZ+jʹ2x?5nx7L1t'S[wF2̣|~5&&+TE
4IVdLQ`G/*7 37|t*r@'n>t}X]RM$XIvpbj5]1a'.͹4Uȑпs
;\:H㯥Ka/nvS) :9
Q%O xIruo>t{ ona~uMrhZY15bsS
X60f{ߜ
X_Bw0?%74yw(;"	oN-Aaٷ#xGFʄ>{Nu-'yp⭜~(	drtRkч\mBpN_wm3m*Es0<IȦm;^YM&]UqBtSv*1{q,z&fҀ:}]&nҟ\8*L %3snjɁZn+\S~wn3E#}+bQ_q]h,QU9KFgzkb<UY{Zz9a
<"ѾoG>$}yEm@<DRW.@!LEI.]nG(u/u=âɡ]\MqY1,:ϔ ^2Rb;YOHd/JS@Kkv :oEjڢnKwv.BE*kIto͑a<;c4ZbTF]Yᾬ`'0E]ȗa%'a$j>fM\5~˞Gz4Vf\DHЦw{^MWLqcj`Xh8f#W}UI,^D~j;+M0Kz(\GRv\5rLauT`׶dAצ9FCfY~mޮ[Eo3⯋}f۷]j.-e>(
:W,H
uY;
xsDƀy54^Z}*''|KH[oԧU0MT$XVdk^'*J>S][69tWx|/bs|!n*	NgXnNP١Q]5`GDt\ȐeVU[Yl>!r5O/{-]&d%(&34d~݀<{6]`z8>p[I2#[
֜׋啓KQ(?>F_=HU$0`X&o׭1KX̙Wp<GKKI5$R_T9"ʦQi_e9Q}q18Mp! YoE-ҷ9خ|!|@&'	
x
a[!#u2tE?fMQN:VmƠq	~>|Tާ#Z.< z;PZ IܸObp@VqVAٗzG;5.|>2{Ӳyq ǏlUT\".@"d;1	|0^1ޮIrc Y,{,}Qb~fRI8gzfΟmWc}g|e(UYӤHXMɈ&޹>p)ȷNFDۆPuVMw^J;A[s'ɧ])9괧4?}SH
MvƑxծ_p	X2>jpT9Ha|P {^wң#aLF_K{f̶Ӛ
(׫NqjhXT sOp =  *y<Ʀ&|8P$ȩMh%ۢ^ԋhgOUv%r7ٟ%0rzrz(.OP@UǙdGK	{J%Kn<տ2gf,n),Ն]et{ZPtX8\{r6D6sOH(chY%Ԫqd9p@6A	:GxK+q:F!}n%JBd9tভf{*P	EVzޥʒ	)0z<]Cs:&kP)w6sm%;S}&gk<5u\ZS|tzAoٕuSKڬi;/vy~NAMGzO绐U<^r͊z2YK{RayA>:nƪ>b n۫A'!}.摽}[w|ա.s*/dWZuӽ$ubM{[]%?eZ:,D{[H3aM
qAA!{!%VtbVHzkTܩu	5dAk?R}<QU|+y,RVH'PcPB☵VdnX,!:ɶrP,mKd[}ue}oٺ=ZJS?qYAT:q@B5wv	J;d0cV;4\^]P72[˭wKWj@mpK[-'.Τʨ9DhRϊ4؎8%FwfXJeu,Rg9u)FG{\RgD]Z]ɫp!EEw -YS:NGvcwrU $An9ܪi![
w''|)8}
ը2H0ʹ_afr<$/@jjJʇo?ގBxl{ݯ>7ZqQIеD~%倴(N5uC%~8Kͧ[y,M=|Njf/w,_#"r%[<Q
^Xr*x1)FK
Iӯ$J7XL5p@и>c96{UW
WUYA@
ݔ,;
f(I˱?GWJ_N)':}OplZs.^w~񴽐
N) Sֈ-Ul	ϓZkaqlE!-ԘxE:'#4plzVQ\!-kxWG*X)mvNnre7nڲ7J۪X0)W;|O"
'R>nA<$h̯OGri*LRUL&)^*4uI F{%f^T6&ӨvV`{*`JVޝt>H[{bxqwXHF:y=[\m~}W`*qOvʟn)
uwgՙP,ɝ<~q<|u9M(>לy3QC0>{keNŭF8
]/w'AQb~=m?u?qkoݏHم1Cp"x0/u/:UGۉHjh=%z\EGȣ{R7*Df{CBq롢<A/VV`cN2V-H
Ɠ	ᲮbL X)̣je=p.܉piHKz
%ڈUe6db]RR2oX 47jO5G	~gT{#tRE/P>5s+In'P~Ǐ[1BAHǇQD>nN&ƽƥ.ok 器L9:^Tm =Xa=IhAch̅ ͑Mh-|%.S}eY{R`R	gZIV3NI9[8,@LzZgH$gO4F^b4c0/j)oRcJ`@xe3nűRǣFTPjC
<UwLϜ9zOorhjbK듽&ci=,+Ϲ8[<j6}X v66>'&\5<Z?C'*k0h-Nv96"W8C9.g8=T:^A5(Sd,>;rJLg.%κfX$u.kI8/. Uap RNٷ ˠnK~
,_حZr[]zqm 8F\3mx2#:{=KǙG8:5(N9CtG
$?S"QJL\IԹj ףiӸX
1R#?.Z>P1SKAxug4Zc3\u <cԢa
YeZ㘯F|~Cfk*[Mȸ:"6Z~O]rOUc5'_.<Cť 
C@g,*z͠8_mVaA#$pqxGa 81,/O8E"i>=j
}&=OndC\v
ff٘j.e[Bg_k7gGX=V̉H߰Ε@
9v2fߧ|& 蔰5q,i®fU&EnURԗx
{q |ꙐrܻA,:Kd(P^K>XvL^%E7r;"$	NpunJ9VU-yqH365fv٦w}JVW;Yoo?8o.df	8mNGxE't8f	#?~gd&bŭ
2s
%Zpn[]o}Zj.m$W~:j%Gƺ벓v <_@Xy䖌>5}|ѹ5/iqk$y
Mrh啾7%TzϒCilWh.ky?5`|s$-
*_&{=&#v{Es"G8dȥ;sjTz3cn8P믣c	Sav sp5
\$2-ŀuduX$9,^=:!mYr|OVR)\;@UHJ.4N})*#6,`QRKt]xReQ|\VC,TzVrʁjqf;	@
} α!&M2(l
݁`xTagWu3uN3ܒHtNyuZ8*=眣4EEs@@z8,97SA^^"eErm݌g
5RkDh{{k@~jvci?ruZ$mpaK{/{i.r9O	 &n6];5AHpD+;}9i4{G<[ȓ8~^̇7<r55On(.Yq0uCPg{BcOwc{=ҪW	K#7@ʐg[	GKė̺BSE T\,Hi[})q+>}
kHU#č'B۪$ rJ,$kܚ*+`,3I_N]yYy4Só4s
z75$NGvuwܫ)Np{Or0Bw.G*˩K>({QP>Q;NMq)SGmVLe7[qI
54s`i:]+옎k%PwG郖zvƆéjlrQNbeK8N7AQ*]XVIޕQ59T#uVg<JEYTtˉ (e@0LN7lHb-JҏKe0;pPD:|v}ApmNC]1ujm7$k=&
y.^*t7MjyiQՑ{Ž=wUgUvNW<a 5eF$\eސ59)9[Eu.g\W~#p_  y>z(yG&,6m='24YZ!qN
`ue?k7ҕRL3|dRZ<*:@$UVaXS+@!v8v:/&*k|6;G~- */z$`RoΓ\u]y1Ʊz["A/$@IzzMuZ*6p#AO%=2Ȼ/d/_ݼV0'~(LI>H@=vHO>8iNx#60
B5y4{;z-X}]:z$_r&˹UhBIZR8~wF©͹$Z&[d5l|h<~RH{x*EM'Z	КVME ~skL!f!ôT2*;(>4_8}.(7ݝ	gW4m׾HGnDuS9	p|OFkA[VyBiN#AK%qZ72B}ZɻPw8۫yo'xãsm+*gf@<8E~(HQIZʟ2~?LybU=8>IP|W,;gSt;-
 I$[w5p)e]zQxk1	]E1ggH*nT*ߧ;w.[`g_׊i:[wkי9yĠ(:jtymB
|\ҘvKPlhtƓoyqQ!icr aY ]\s[)R:f^ޝСkR|R$#*PLR(jA^R>c)wɐ7/k&|N_	|	0|_r'xNߑ`	YV^KW&0+!w/`)^#7bO˿b'S5/(6S 4(}gT֩ݝIv齆r |RKq	I1i!
n5h</7*K.`g'U4[Cz:ú
cia]kdC	Ebǂg MOӬFPH9_7s6TY0yk{u^B9:n;yv3ث|:{E,*-l
-hqЕO7~uT-=N :C q]V^v9*O.-hbN4;#FPjT5$r[faǭOu6WkܔhQ5.G՝d\t,2e^5)Q 6lLp|Rv:2d["?fq).+բn1),,F{2DUvEIXtpxkyr,ɍi1bB4=Uě{HY!^nO8Tjnnm@nqȻǣ3qv 'i,C^hq,iP!_($W}3\d|IqCS%dQ:>eb!lh)maT{*IfktT(2q͘Sht½ӣIփl?>
-1C`Np,jG
rmuڧRODGlP
.p1|GSlsN5T	OM2X!i8+Kkj=FuHd>ǯBt'+GegeNa6|ɭWR|JpvmT '⍖3W EH
8:wb%( ϧ_QcPS[(S%OkǪHDCZowd+鳈ZNy=0zS_Ive|Z \3ndVc5'Ar Ɖ8NG{#kufۉ;B.N>Iݡ(0~h𧣸4卾fմ 4vX_SYB!02 	Ź*P]?Yơ0 ZSs|$H/Y|*8*+o, w'1A]ghr-h $azҫ;hZ5<s
=/',Mp'+}-1%>/+7svŽ|)>	+-yRV 7Gq(\W`RSu*h[-"hH5DN[Cp*wׄ15]37,,#r8zr$`ߴ/^!9|
5~ @ӊ"x==whُʄF 7_n-a-Y~슷(
LJx]iiǚKUOcK9I'KqC;Dsp¶{/w3P
$>jj7#ö	^i`Kt[uMp*d4.겸s369ڗO},|EN$]1U`\A/N
|wԜ>1N%#~?j rk>s|L{$mGu^rqת(ҙ)mʷ*:ֽ5ࠑC!yLՔh<Cy+	ˆ7dw܅k XY$W(2S ;}O=%ukssҔu_=4S>Ȩ#
ҊKfE^Md20\-w$ޅPy֡q:g4KapǕ|Dް]$œI'/m{B=AX8?蹩3@*AIA,,AJFh;u/OBGt\}>vЅNxAQuAiW
v;:izqصwJLƉնDt!Y49ue͚G΃+{=`	k%4%89;VP1
=[;u7RI;Ճ_evVST~ᨫgͯT:$$]h@OGB,+aY6gNq(De$	2B$w_!η;RJ5^?9R,
nVtt+VIx)'}*a=SVgcvm*++K?o8K2~	XëGS.s{(xga3
@}xG-:vQR2<d+|z`ԅ@-fS#t`Oe6TOO. D&9 
Jإ-geyZfeO	ɢڕz'}Pxx-][	S-z[VP*`z	phy}25M03RѨiYUnAty:=/͂6^rݫJ}P>qe_`rU/4#[[؎&x\Ƴ4 թ}mXWs[Z-ŷGBH^VoerhА#$.u9 ԩuIOˮqTᖋ^#8g,'d \!pAŵp}Cȟ}~OYuB;I`#93!hkDcnbgysDEgU@p4Wr"Jw89*P5Կ9i(̻F`̱lA.`9Gr-/oX|ruvj ]S7Q}i`܎?z|dgD[֨6UOU2*?mzoehWQ)^>8s2nW?^?L\ջA[-_]R]~KY&OCGVrhs tuq)HfPiY3<71L1`'*pCTG0URX9?YSjʳr'iͷPAStwt2r<d㖮6Q{|𢝉>,SEh)7"VEbPXN=q^C?	tafrju]򋋩_)xr\O#m1P0zpb
Hj=>0Op")(eAUYk5t?gx Э.H.3;Zb 4U344/Ԃ~ëЈ 
;◸LӔ.fJ8rQՂ6%[P4H 1< {{*5%o>*|z9rjOVn
ʀ	,SoztH#8?W_:.
sAV[ghQ
bh8G=4{[0]^B@E
o3=:vmI& 8
v\G.$8z5T+If=NDslݚr92kK{$*kR*hJ:(/N,(%%}l<qtp%Ձzx+zu"\%yAnpCѝ@ ?nkX:Հwΐ/L0@_ϽY0 /9ߝbG# +^E@o~dxcn-R PSȶ]?xx5LNv~BH&5ep|v2/Xm旪IwtZX
Vϔ Q(R#FUm=_ǦZI
H)̓!"'+Pv^tp
I%|hHx]-_'
YCW\aQyΞZ7@>1O>_Qt PO\NMMJڽSA>Swxx0WCU(bKo5\tLCsd1n]?wz׫ R
[8]aqxV!{G+ #Sv:
Oy5[g^'9U?Sɍo,k˼FIYo%ƳTrtIHލHY
Iƿpd"u>4|HһMa#s])Iqx?H[O;ufT_p-We(BU]yάԺ-J8}	ph3Pj0	6ZW*o*jǭjDGqf83b<j2To1-ӣ
jts,mfy4Ř3OJ_;U
dgsph}0?k
ُ*y]`0gz:rڣȽC]`^@i䔏n/
ތ|tX~%'?Kߠ;
5+F-^f
=Iɓ+U;Sv(_<5Wz0<>&ni]n)<{8`g<6KQ-w՝3̟n~_vF~PϑL
!YX,%nYRTC{yWDiWT5n%m_C]О[ӈ&'y&Y(+EݐS.w`%mI  WYA(OtvSy~R[:7v#7_i^u/k` >''YOE)]d
纈ieYB@<[&=
{0%,3qu]\/x!B|9'2]"=O3,aܞP&EGx]JgCLY~2]Uܦ,]?wepCH>I|ꀷ;ܰq0v߀|=٥,~MpYnnd:*di!#SXDCʍt(eU:Nyr-Y^En^koxbrR800p"тXr{
rg
h"zLJlۯ@^ZO 4QR  V2BpONqvf-URM]	\t:1(b4)=2C'@ʾhࢇ.˕.wduGB2kK9P
}ճ0O[qXhrIRJGgW{^bGsqgG 2]ͨ
 shds(w}1530,:Ps)x[M.N舖,	~Y
\J$
@Iw|^sCz>K[as7XyZ#PIB` $u$!}H8}R<ս	 +>O@~:yxITO\l;Jj=pr'~*Ϗo˦bCL~K'$l3m\1t6˙bE>X cssG͙n[9AVwb9
~I\7B:;ڞG(*,a[sr'g&':fh+L "Ī͟XYliiM.׻c ixnqԶDC!E58Um%?;dCT'p"v;%6|<vϴ{R"#ȱ?*7*eYS;׏Dވüd!ShYvvb>!#Iz%ӡ[iGjw~]4i=*=k5/Vtd|hɑ3K7-C[j
Nmբ[kR+IyX*{Po͟|ġ	MbJ&C%'xO`O
r2M/JjS_qD8PG
_?F 4y
v[ƞ䰡n t}vWy@f:LsC7ڞxx%zQɷ ~_G/X0TZGĤ
DkvDzE*I-㧝hߕ-m6ݰM<+}c}{ttBiDwKY
Q3˿JM{6ON}`GH	,8I>"[`[~zo 䤙 8
9NA@s3ITC7su m:m5@@~-'kXy\qqZD#ܣXE@{w(!Ǖ>V Ӵ	4֔=C	p@_;uI8*ک{ķQ[բt1@}K}nՔӾy:9TQj\Mej·@D=OzNg۱}u"A5#¥Pƛ()^.S)~F1( p%ܛ*P;ౣgwv
1JThnh ^uX:l>|QTt`*H58'O۵9$KWO
G񑶊N#MJzSU.JJ#>U;C'Ewp2ru_Z8hftuw+~y@erۺ}gЫB'TGgzp <u'*nz[8
rfJ0=+-WN1z@EmbC+uG扪/wၤXNرo=
8gJM@=y$3ED? ^r\
-T.HqZTD}h1̊k?@(dm޵IՃF㛆,ÀL~'%o{_8p|whAr͝ȶ*/yW ]L[X~BGk?Y",4eRs  [P3kitm"e4PVn,ҲNNnwA1¥ZHV?͡=A|wpʎ]U}/JqH3ߪ">)v+"|:C#Ƞ hبPRHj*zکI~J1[蔟ŤЛCi]JWkBvYi|5l/&v<6z>]HZ[(13Z<DRs~4忏8t)ŐOK^YK&WGqIp״Ā@1l@^ 6
$M!*cԓ|guӡy\':
9#JK"d[:B unjrW5wϖ2dv/:I
 &(5֮q/s!hO(\ˌZV.NU.{'\yTOF^fڧ={IERְ]#|08lm)=e<{&OJ[#x┖Th*E滏S5>]
;>x?޼QxώMjm<Yj>< Y}xW.79ْS͢Xe|q8Vb>YִȷՕ{3N>6N&_]Swc˩!wn*E~KUoQ{[rcI앪TGܹjӖgqIĜx&S);Sbk%Vq5p%psQlrƔSQfoӦi&dou̜^<[hd/_9~I~	Lŧ6 w784
tu+z>̥Bӥ&uȳ 0#ÙΒEW*xqq|k&N|+]`>pvi)7^3mRMC'9s_
jC"JE8$̧sv[-AGYqNE穤bQ/hYD;~aH<nͿ[
.V柜JڪfwEY$Ħwnvcm<8_%ԡOqÖ"qYN	\0,>F0^U&FW%WfP{.4e^#ɤH|-ͶJjgs"6aJ	?I˄OJ%OMƭ<x*
[*GU%{L
4}L<ײlz.a8SWS
f*; L SWT<Hphw"2o	S_r/"::S]w&]!5
MUЧ
pZ |8G7.|+g
Uf'%࣠TAЦI܈m;_ASydmrEStji~w];82U
O%V^ҧ)wġz̅WU#.S9+6"㐣M.n)DB,?^%OCӆmlsŏJ3V5N9<R<1*\gT!v餂}gzc%{Toĳ	)(L#	Sit;C;@cK4:s_}ݔsJu(X0⪓׬V}۾͡WӸ`o"׶X$V?- ͚glf&sFaC9
SzՉ<M-PSoE+!0;1Nj[؃K&$ uR(Pc'VRtN߆-|y6
Nx-8KC ʋ?B:Z0ȭ^AmԂ`xܪBٴ~ڈ	zPP k%q9*V+V?x|r:R	>ǰw1?]4!#Ao1"ysʵP	Z8OZEO:՛gu7x6fRk:ճK"<6׻ I'6$8|NRr ԑ`^Eً&G ɵS= Ѵ$;j.~"oj2:^FH$f®;Ot Qx*q>8	2sJ+!S1 j\9kyن.Q&UTρvSw^Y/h'_]r S<<X
%: D63WVW<.駣:̽۴!Ô9W@652OEwe]Wk/ZoM205lE߭$(-
QŁTǟ&˽®緃zFoHQI=B
߭t
)-oPfdX"B~[\&kxsv}@`*>hDཛDQ~cbEyW	P}"kgVSsmmG*Г3	ԁ8DQ8լJ_	΃yro[[?@g ~S9P]$x<mmmэ|'0FN*عrR?F_HOy<|gvQ?NEw8<*'1OpՁkӞ4vU7t#H9k3=>ulWCa~]c~ĒCIKt7]x]4lI]qH=1@Rv	Z+.O҄BYv{')	_٤IO6i=F5%7;W=WwP3^Wӯ-r-ǼP7ʘP})*[I8mM{գd39D=Rߕ͢\Ǩr!>,)U{BYuQ6(Z)lJ.5A
+;g>79
w^W;kL-G~U[o}ԹuY1^B>#aQ+v^~:]z%\TN.h_,ywcR\<
tP:'CY+{,n
FE-VON4CSJ_At?	ɗj-tiD~R;7v)*/YA!W@@`Bt6Ufkq`\vmҘ$bKдCҫICIv$,sռ!(8J5Q]^ڗ(6'MI`T@)$?{x^'*qlkUb5yT$4fVgOW|Q[߼ͿW]Ȣ'cia?ZĪ*ʡ]$Rޫ˰Dܽߒb]i#m>zuyia9/Bw?CNYQ܂ףQЍyp	݋Yd"ә,v<YK`dbʳE ¤5<N,(AW$#r{u
|nxWzGOq;p\s(vȈӵYgLz!STON*0.Z2-%֦ԊfNz0x#j])) ߴ;e;F'>+qhI:nî;`q{ܜ)]<מ֕*
c%%`K˟uK7Pzs )4o?*$=OL	!9Sr@=5Nǈ,Iꬉ<~9pҾ3ouH:ez=)uw=r9}:Ac$YH/$cݔ)~bҶϧ#P
n1v09&`h21؈>\;nlujU^[_>3,jnWeBFESLo8,+ϔQU]^s8y*T\l$ىW
[U,/Q}⃖
|nDNM[܊w(UWIkJ<oN\"_(W\GLO O9=}.\ҖO3jK;iG1bQQ6$=tQ>dVOچx՚oĦbmx]4);n	Ti\ښMKeUwnkyK#nے<j&be1@?IvR`
yJ~WHg^ TX3]wVL({9Z<ʚ*T':m:jz֎L!	Y_08ʪ'5mf_Nfwdx>ȷg̐OIx_z<|u$Q,Ժ^< fS
:=֫{ubBI"HqNKS _!dP5U<}D~޾unOR Le`8>s"ﯘ	:l%hHgrlGȑ#8A$\ڄ ܡ	5ȗtqM9lD	ar|0}yQXuT𧻓稃?/'Sԇua(MsYʴ>Ԧ?%y1oQ{uK3aFeuϼRk_X%m䝟@{yiZ<ǵVQ')Ǖbt͗#OWdCZJ*XmGwTJߕ
GY+ <|+SWN׀B;a}{H=^	S@B\WYi:#?{hGd'3q抦I}y-!
OkM	?R"Z {)#dPo$_Z2k<ܐI~r4OSki*vʸFcאSm.O-35̧ɴuv<B=	 Za3TO<q~նq*ȟT
yT9yh|~<k:u;~Ġ(bϭ`p}ˡa2׳5ml8O#	t;xW)~jt72I_^u*8Ɍ|բʩuq	-U*PG(=HsYIϢ̷BvSK- p٭|{N6󪍯kb 
Y MF.NjCq֣˴SvF89g$1>nNݻ_s"s)FPYT[rb?2t5x?d`.gȁ:S$R>}w{=S ^v=JKoPCvFxFJ:/5d8LʅCeZ bQ"itKxUVA97L| to1liLEC
E[#oKP6l$']@}&ȗ?"US6GߞgX`0࢜׆IiGMx=xb|ron9  \czV5&ݳ"Eo(xp|FTJ|AA]cFx]^7{h<N

6%X-ttcF	4=/ӊ	,G3[ߥM֞yx
L2K-X4}
hjOI<[9nEf	!ň(PzNRdTC ~Q΢uȦöG}+T>?@^n`p_UK9CwP]
:/ F7؇zI9P׸SQ0pѓB+ä-  I9웿r6ue;]Z]t$;
ړ9!bQF+Wo_NZk~vzU!lD6eJޞ0ϒI"QVW\B0A	!RC$\aӀ/-T-
}=.Uj"{bnu⥵=zk[fr;4${xpڢ8B{޻eJ}J:vQϣqO#_M
gԪȣi::*;&VYLP!9$`˛' N" ᒚच>js&{ђEXk [p|<HG֖f<]9ڝD*zɾq`--a1=pM	j:
Zh<{EmɽJk>3sY<p]钳yVUHgt\E=! hbVݪ ExOK
Ah SR*6ݲ!juHS)(VDٔ
	Σ)<K'w'D\O0}:ktiGMHJ+_U]V(8
9,,r:
De
*O!4R.RNJ,zd~X+7hr@|5V[7:LK,Oz@Kч5r~ܨeSHu
D'/>[meUZ2m2ȁroXI<]Wl>iމ/qD_Ol=2gh\~W5
&J{{J
Wedw9ǕRVk@j̫'޾RaDuCJ!MT fml~N-S.O}w?dH*0*J$huUe.=AaM=ƽIrP'?RHPro"'y֠@Pze2 <?xZD_H@9=#迵#z2d(gGUZ[TͥM'zLsu) Կ(SE`ǩjL	
-ck%ŭ6zh|}ʬgUR:.s,_KǦcM9`*nx)" R,{۱`m#v!NJc'=kjDp m| (b!K.|ҽ!ȿ=A(ڽ9m)Ebj.^: Leؙ8tJϨ
ם E{fFßrahQ6;U'jIJag*f@8P>ռ}i[%ke *QXCSQ
Q.y{}쉀R羴͠ʠ`-/:ƋOA>%Quk;GQv'#H)j|*zLN $!h	N3&ajӧ0-n,ˋ*g` c+#
:12KHqUT_Jy80znavp3>5YٮBN!+R"_3q¯R*.5?שvQy4PYE6vf r*جp&{4ٴG["*7@_8:y
hA:{'L?\yro8qpٳmP#,zm	޸ֹ7k*M\@亩#YR[o4YɣVSfܸVyB\x?8'QJ*]iax٥Wo:hr@luN9SeWNٛ: ]54T{xo&u`nϑUSQ;;m/nGB{ozڐB=_JMBOWm_9ԋ&j[8-p9'$G*#	V7Wer~S{5(z}Dgc]TP&Yn.NчNw|WF-F^d2tXw.چNQ Eu~Zu]^0 r/dyОAylY/eH?=rZ)?=+~>ĔwjE7.ѣ+1i1M<Ufr"G!}T`)z}-I1u)cOo}UJGuUC޵5
I6y T#'
^tx3J&aϽ[V}pan84)RH0~[-A9Kb|++b%
ٸͦk
m7órJz?CeTnƂե&ism>UDM-.*W4=:[E&j2S 
n/hpnҍSk444vgGx&	8؃7
VI{KrRK
KOW2+ū\92TcUH5Pq$S(B)>.}LΫ7fe_O{:;p@ò*(D^ֲK
yOUT.*b&+-i<rNCz4yܯLkȽ1)^4=cc^ lv3*iS):9ɹG@0wqND	I1׶h1IcTt;pj.-WƭVV\s{r݇F*'u_b[Z?-moAǿy͐^&_Z֯Q!Q>=iZXj=ӄD\McK9HkK?}=l;-vt$j`RS}FeR@>}J5Gr۫ˁ++q~oMpSמ"S^
 8BT; |8NXRaV'UrWV8bZ_aة#۫|ڹ;~0a3e&M62ϵ	|v]Y^
s}QG9S$LNy]ZeUA
g
^NT^kMw2iGe,̟B.ST&fK4S +-S6.F#jv?:ӔSi
@n77&X<5涗mlw9Nz-4w-$}Ů+.l]d٥2\lsA:Nv3BB*w*Kѱr<Z~?Jlv&8̡!&jۆ:Jx :%ڒlUUu+DF[V'pߥXNgCSޖ|Ծ䗑leV*0FN`fi7"WCiGi{cTPLԅtEn%DK|4cMF|P6 w@09Q.-ziںwG\:x'A+w-Vp^gӷT}*ZrvZ%Wm
dK9%e^:Sq\<ω.	,^dި芬OgQ,
U	ظ#Nձ;@UpEGO4FrL3O%it\(aFA2çq_AjcF/Jͱq>W`$Z
u"ȯRK{~&=jHNO#ݱh͋<>Y#Aŗǁs"Zކp@jԲ$4~hvuoԓ*%1Xᥪ|T%ΧKv^-}oh~{IB|A>+M}?>B05Ep2-[)iɡO$|) (G$Y9UqLgّ^)N9% rcVmBn﫮{r#@KI->y3:h
L[pB{4٢'ѵ
xU坷\yD)('4^T7Zh۠J 8xUTC㛅8%9b̠MK􀩍8ԗV]υGr}rZJ'Gaq+BGP4ܼ߲0E:)*4
}\ DZ=6ƎE*z ՋMMYoGWܚy|##7fr4y«x\?5S!eDTE	6uK,v?59ٹʰKRX`@#wq8o<K4RgTb)OmjdU@fM+]@irKp1( IX}.*w*$4|(Xuč2i-}ۛ/
^c.SVj _iO0hd?DJnQ7~J^(
[ܰS
SYc> g~hշd-3[}-j_x.Ԁ#E6:_R.=~q*sC8N~R-NWQ+V4ש	ӷCId꟥Ee38S [&~v}:ZdS>z0SFɁI(p'ackw/tvď	^[/
9$RͦɉGBi(-5]gOP (`)xx+3x9I "J'U5)x ̝9 U8*T$W//(&&,JJ:%SϨ {JKRC.(uwC[ANRr~]vcQJj㡪̍?sҾ>WKOkU?;S{}vxu+^>-_̨N֭Avo$B Ԩ &g=b4=vdb?|m XzYq+lms$dT?̔J4rRk>U$&YA;H!+
r[7dx~q-|)]uu_nY&C&&i.~Dwh5)fkR&فlN?wO5DOGA_@ˊ(5ƥ9ء]OUi~daٔ{M7RRHxz?0g^\fﵜIvi
G.F%shT*:`<B!#VTO<~Ǧ[Wy$>4Ļ3+Y&#Gq c<GX}zD_׫Pib{)XW\ A6π~÷3I=q@]xDq(Ҹ5Yh8)8{PЯE8(ā'Q:A:Cױ3uQRm(C+yxGpƂƥ*_̑ӵ$Rs@kTVin/l_NDWV`=Q1G.	N~ϲzNWF_wܤ=#fyhdQţٞ[wy1a2+^0-?/AC.yS\k
P%9)GsC;>U
dG+g:f\@A_û_L+jﭓ(dӗ5QUw½40)wZm]R8<iX9V b:Pܯs Sx"}
UlZPĤ-)jh7q91w
] t5n9NTދUWz<JeZHXջfAnSpýâKi{'VQVUȦfتRUjOU#ƺWrJ-9ƭ2Uo:֟Al|pmLZPLf;w۟4wQ><_T@[GTUITD 
j;i]8pWHEiT45O/3'(edדG^3W7X蛇^%:a\: *J@<H_+u#fHΜM:p}.Eޕ On%_PcPs=%mWkj4M/UBxS_̱ m!彦ԂVk)iēGdΣ̕j[OB;h<zҸBXAlD< y}iXC/n 9z/"r~]JHk+i
~Np=
y3okRK*|A
u<UBjPT `<lnGq\Sn|
XRΖq Yw	bv+! '>EϭcE݀o8y_I~ tHS	3(uw0ּ`#@7-s)/Ycj6;-}MMYCIWX'V_)',5]	Ty&~*ZWP^#I'وem*+!`Px9\Ս XI?J^.<JK[s/~t
XTtèc=frOGϿ9P!t9=Clx4:N/L^`E5)W,^_[dWw^[/O	G}ꊓG|{dʈl#T.jA)NC J&nƛܟ+<A\F*y&'/ :
#O1x$w5'#+v)ڙd@SkoIՍeU@" Ľ>.ōgk!
:d%sLN\F*RgɸwrN%ђ|UWD;#SUV%葞H;,1tj{|uX;J	nN5zOif:WAy
srpۏ{>To?kÐ=ZKY.vs''1.O8?˪"qSLi .IIM)R$RO7ƛ?B]!LoX`"c*cmIGWr|P,>8pQ\ˢ"JI|UX!jJ,]ol*.XV4 lVw3F#L̷N)&M
zjXJJK!Җ|SV*HE>NL@UϙIHH/F;l3|B	ڣ:FlYdxM	j2 o2I:)$5z$'i
`7hd~H@umA*
C.>.a'4#S(' ^hS՘ݲpd{S3T#%wpSy}6^<87(?m	z}{bSRjcG
w^]DG^/ZƳ	
 ݵk,rbGG	'68G!Esg _VExV=1nmT'\ܞDZH y. cz,bJMR?kNf
.?[*_ʍH<7Zu)Aێm)@YcL	b3M_'ԇ7 %y	h+㬙t|Wxǩ̡&XK\t*LUnKBk|٠Tup/A#!nI6Mu$iu۾wߪn= *w.W
NDbq4_mn{ٮURP^y;@v~b(G]囒(:(^X2&zgBGd]YMo?8cJj0WOׯjMd*g_t6/?& #8拼6 ߔ%+|Qi-N.-*HK$GQbU{PuX!.[F{&MjZ(i8ejȚz$o}<׵.~}3j;$ttPNgd9EjTZ|뉫O,I!Ie׏Aޔ|܇<d2b } &5W ـB':]k8ކ2G{-GM
+:aػBE~Q^JSqQ~s>.+g+DzwXIG%@ێ޾zzbI$
]*@98FF<y@>EBm3d}MO
GZ3nNcTIXK
T*siWRyۺ@;gx|xlNTߑb4O#p%(ܣxqy8{)%9uuWejWcK/<@R^lE?^0"ө/rYp5?IMd~ڞ{Qi7{T;ԝKowAR$Zd m4	}8u\
48&e (t qOl Cgq_U`习
koÝZf뵲.G6`vT+1L%lh}u6InF
93M_Չ>?U!i3A#@wG)_=zCw.KӜ+?Yy`w^%%=NAtKm>T=qH=1'S
EwcW0ܜ+a鹹W全?_^ґpC4ATS?<D/hWu@ѯW	esneQIAanUvct+LBaϗ*L=څvB*\thDˉ*t	R3_Ң>}AB% ȝqg^rIT-M񘫦Dm.6R!1mc	%riusH+بR&a	Ck$o
z75pDT)]ܝ'`
ݵ̈́.>s1m*Aje]r2haVۘ{/sxwTmO \irX-}td/??89>w#u˘YM:q,7EVE
\jrj
To2ٻ{z0ςV5uUoQ?Ë"z3Vid<ʵ?*}YPmVk~NWK;[h@GjXIqN1كYtBY/^AN܆-_,dY*G+C+n):L*a	&0ya	;(9Ku:hk([%?3UEOcT6'|ʐOhG@>R2)H(
*'ͧ+U^Ŗzϋ9MD Gtf2sH$V4Ig?!=SI$co2SeRjPEІ'TEOLqFtr_S:{YZ*Wp++%;"񃊘J&y𠭦,/@:W茳$];n3lf`j3Sp޻ӊlyEe'ˮ;'$DMoFؒ!~~E!pw3.^PIQ)<\pQfexvAVwL|SgFaǍ#ѨwDi:@ "()$S{"Vן>|Em a2%{=TA9eioP 6,9fj.PAʀ\@͙
ۊZħm7ͦK¡je
R𺀥3~ң(C5%['1g0ohM靄xxGg8]-Q@߽}%bv}0	A^CJ~Vyv{ 8j9Uts8{Cf4U%(;t Ѩɩ`|unc$P:Yu⊭!x띡,)դґG8K@+FNRy*ؒp>"JX2]]کPڝMϵT'k
^yM 2:&
Mv.D:.lHʼ]w1Y>GRM[ɤMԷN@4igPǎT*1pCYǸu3Uх3R;kbe ̤2	D|_jN
Vqcj~9A0U2F)(r?R_-uбl>
ƴmWkVc5ᚙ_V	sRQi|[Np.X!`0"Adp]CvR)n*gl92A\C"GĲ%\UE;#Nu5<HyCWSNVM.B\܊KMUFx5hzOMDf^ wex	o09aٳ(|4;Go
JuiԦ|{RD8=L(ۍ(C;,rSjnQtrpӖx	/ai=NPF'L^.tu/7xsj+Rʚrj]eBTpҢl>)ʣk!DOPA VHxDen:N!蓬4X=x>Z67n"ki4 7~cyҾ9]=VU˝NtZpٺrӻ7RխCeL­T"|KմuKǳO(3nyX=B^;ەcLFm |IJc	R;Qw}JWLU.[ڥAgS*漯KWl)6\h؅1PJ/3x<
!nkV_.{%_Efr^b<ynЗJeg摲\a|
ؒض8/|d清nI1E~l"9+ެ"9syL-ޮͩBYR4pz^g.TʦWJKMg#85ʹ|^ո\piitD[IM̉L8sy_(=)<p&O?7ܻ'TC4S^nuo`*psXdA(nulM`l'aJ
$;c-g{-i)d>eu`T#u*X<KO] ?(aÌHiڣ-:_ϨFRk!MλjI{8_/GYM:pN-ӖchzNgR>.O
S|Q@@s`eG܋6 u*V%@ ]Fz[9?ߕ&!{:K@ -GIQ.&"B$3Uz]zD
͔W <F2I|}VYʧ+qRXR3#T%ׁ(ko2s.E
|^zyMEozfxj3CbWM~?Q]oiiG[&Dm-
JkzTH)m8g\B0mOb*웃yɹ.DE]ڔ,fX$:#"<R`\BPM:AlK%z#9BMF%Vճ]tu劉f=q*l<8)w%oMtr7ES}U_3i=#;GUkbu1jH\+|bA]~qWQ9L
U>EI#;HdapJ*Z,S3ԑ^O7&)/[6LN<Vtxfk5w+aH8$pD$*="jvvŁ_K5D˒o=0"	@
(=cà*TLU{UqeǴ6f½5H+ygG]]wޕX=
G߯QUU!3:'~KlQW(%ѵh-m/ PsY|Kfjj
<А'vk"ji{s=6piJ+v7h&'Ib	Gu	YWY"ŏrt#YY{>7*ho&+0Ŧx(
O4t'~E"*"fvד L2_>NЖhS>{㏿/UGES?:f(ҏ^;
xu<Ív1a-q˹&ňWJE
(yHE_/Hro94vH]Օ\\AjзE/`;1e)]dV\gA50K.ѹ>tJD%j-IH?ZU}?ngUsQ3ig9P>"_pХ
ݯnP#Q>Z!ȅ͘;%̐}S5
eV`+6~<Ws8d3IG]J3N1%E=#='KgGR-O K쭔ԗT}df,hUgMGzk,9>mR⊓jܨQIJyO!qPl
`bPJɂ]2\ eC@>D*{t+-~A+ZOrQۛ<su$X';U; 	Mʪ ~C:*Gy:Y"ۭ$iB{!Y2|ߤԇ)G$!W 4>5nlY0%"kpy!.OL!-WRm 
'1Ri/WdJpձb<$#jB5q9ʝ+=-w~L WU=gHDEUE梒83fW<FOjI)N!v!?O,7f
I5#jӮR2HkgORB_ce| ܙ:A+>TN4ݮ?
^*UvQ=n+ f%O(ˏ_0 X-J%vr5QȠ*/pxfGq .ZfI]ݦهmB;\R
DMyRsmɷ|Z݊R$~( sK6殖) >,SCy|M(b>Wxz&4dh-v*pW^4)K.L}Ҧo)w*2
}ӷVɎ ;i0EuWa`w:UyMcr@e{q^Y@tp8zo݁Rz~wȾy6Lm,<&
qs̮o^bI-V4O}Y8+@]P=q PnDA 8su7@
! V}¸{jM]T@NT󱢐aO T&:Y-ؙj=dyF^WOw|D:T,9CUVqsw$Sn+;`4CEw	Ǐ5uǖBE6ܔg})xgzm"H(W~Xb 'R}*a	T-c>l}PE܏RT8eV愼J)pVG/ ?Cĳ4-KY8*K˄\qlGcQYLm`^6?ђmtpOG*3͇xTfJ[U%Ġf`My(ծu(7{dw|N.o%1vδrCuFxz{[@eי^2BOe+t˧dU>v4Q`,x^zTr稰UR~jE
g{|\DefB8Nj?, .`w)\\#:+
4nPI@a$ۉguw[ )y>`%OmJrqb^ܞHRz_x|\uRc׆禴zym"6s
55u=#f[(*_ڋdV"]dr ͑追B.i@S[=An:eҢ)۵]UI3zh[38ڟQr4H/{Ɵh1^jcSjT&KE,8
qH *9wJg3 V*k;U\Jnx!GGTM?RJE!sB'&ȝMvU#\8o{9K6w5'd}*ޯw']D5oȟ(:?WeŸ\)m-lF!+q{Qz#~n N͓ygS!yzVϙXP*m%94 %EP;ZpsY&Ozw{S5 `ϳ)f`{UK+tW@!n658눻|
=RVm';MpҸYðwG	mT:A*x5t>[U_#E ) hoG$|#g%E?9tbAӻLu
̥M+c )Q2m54yo\ڣ;Sal S
|~cy13g*к=v? p Óq'qonq;iM=_t(˝3@T|'ػ=`NV.7qZ5뗺u = Q
:Hu<h.iV`+zB1=sSJW'i^
:L")#JJ?)Knu(
:={F 
.D-ZeΖlku>:wZ6iK+, 	'o>뭎26
DjdL*3IHmdPoo=kԘRL')_*b.:+QL<#Eyza\#.PMffC&dGQ?b5G'cN4A@&O7R7oQƐdxQ:u6!D]|_9SԚD!t>Sjc\
sT~Q03"dӢDy|M\r/uUּ%}?%ju0g@@j8trO"ݔO6"HQ5]AjzeR6:7ʸa A/&?\&J>J1ȼ:e\On-86\d1NnPq\^
KtѴv)
NAKiC4ˀ˾G+Al˫ڥ{H1;8y۝61 O飲~b6܂+*:	l)	
}j<=<jgU1*6:'BY>]
~F];Zn/JrP}/mu+P<mWteqǽawN\eGHQC`ymdӶN-O_k-s2jE5w=8.2 0-"?	ӒTĘΜ-K*U0F|6RI-(0pF6;AtCmoW
X/%\h>rO*3hybzD})5i`Sm/oؽ,[4T8?rUە~WQNsXk84ALXh.x2T?t"|gGU}[:4b~N|Pl(Mz~/~N5 RRKq"8K.7b*ᬉd~<g80Reݔq<eNaw(8>**[xe܁F޲N d]o}UBm	v-9:r	Zf=Y6jBj))\
e4m\.)qܓu5:&b%Np?)E*/5S-4
M@\_.Jʛ/Z18V[H
kyU
KZJD*z(fұ5DC)]>O[V\&)\z/myTu1&kLmK&\ޢΣ׮
 pW\7{i"ˈ`)g"~gj6VG%fkz,S ZL<n8mɱ]{Ú*zZz^&e:RR<rPQo~k^B]rЪ\K1&Uq23`4ekdB3.q"k1p jvMoewzFyK|4#(mN_Aa0p;֘Ch>ۜJ-@*1U0IPJ?B-
h%dS4m'<aPUL!AghrQ!>,N	$^)Mx]ЉN
B3(p
'f#581iÛjRVߣv'WL
u4@ه%I.x\n`@&j6꿵;76rOɥdi7.K!F+
wM/c
:[ƻNnɆ`?&'9h7юg}[>?bKM)x=à˝8uo\AP	qŌ=j,ȷ/Z%/v+!͘5"zoEd04]^<.Sr	(ܷI~9f>zbdcGP 1+tzFw.T:UDiH!P^gكoyں!2yڹY# m^
P 1y7oI2pW^G]h}E&GA}XUk#kN-ݻxL'iIƌ,xmb_֮`Ӿl,oS_ht+PFᶱ+*fY&
?碊'򱟔~hm2#r)ˉUlDUJʽnIPfz\ޤpY +Eу9R	z&uyt,뒄V4=HfCLwz^$7ɟ;<.@i@
A
6i.jGӹ$H2vC %9D	aw6شs(	LkUz;rmJ^I+17KcѼ<lZF-;V
J&q,p,GYX9ѫX\
sw
i͛5FάE^S6t6M/KW强f96-6<j+]'Om:!#+`Ͷq9|7bErgUp\X<R:4)OÄ9u~Is2ZtPS$_@ݠ :П~9>uw5FM>\%OKIb?#^hIPPl;?]Ft?Pbv\-U"J*< >:JKD^ΰfѳo}u&h:Ƈp
",F]؆$q}$oqcr>߂Z^g!bI[@CUi@Z#S>@HJnJPzΦ[ooғ^%Gnq߆04:m9`~ ]-WN=
1frc
tVp@QҎVᆙ<BT@m/rFH߹
#.cU)rqEaoוAQ͗	%)A$uͤixC 
zZ9}
ka|t^$$ @JuGfV-]Vi*oǭwmy%~eʾt|Azm`('VKf1H(X.WK%ʻs:	(*%qԸ|ݑ[:%=3*Clu~5ouruiqIZ;V@
k2=ݷJݿCalxgY,N7:u]
`yu=6Anr
wyd>x]7dzߴ=ʛf<af~ضV@&6S/M*qaƈ5sd~3
w
jY@W4m8&@*+oYq^cwrp3zpE>D殰%xtUF9_<T wNSjP{tyĴt/@(hfJC\}@Yw<͢[EU"V:ht^  GK)Gގ-:z]فxI%Bƭ\Ɍn<|! A5bRL HZC[oD
COw(;a{/Թ!¯nK 8eQ||\-x;O'/i&q|z9u_hD1*5'n5u#NWHfKzSYw
Jh_b2ѮM
[rS7Uiǰ*u#?tZ-,WPu+
|Zq+o&Kq^JbkHy!|չ!&G6R,9$2-M'l}gU`"xC NNXtx~NĜ{EՖARPў9'Wۊ٧^-
?s$T6uPi"+ۃ`4׀ndj%1	%KH0vUnmQ;J{,-RUjo?HVɩKL*,BzvZ^?vdU_7IDziqCxspp!
*⵪lWb;}?	?[w{CGPWtQιIn[Pcоc2p%(-S{Q~g=0?A].מrgw54/A'㍃V/c":"s	MFq5(䩰OT
YHޏ/p:l =|b`:tZ笺3*F#?j+g%!Lֶfsg>bC^U4m|O%5o<95C`WAVupnGM9pIQXA8zPUǂ=>W/;]0ƀ$
:t"{9`'￹>خSty@4j-厂'SVIzcPU-yrYVEd.L+NАEUA@67Z2pCI&0ӏK
81_JԢ15xjՏTyw})G6AYcT~?)?Aە [;Q/X8Y*x
<HgvVuglm,pb޹	}
qbo"a

|%E7֥,QLPutkNAg%&,^wf> 8oC	K/ߣț>)o|_'ފ>JպDR3VO&:6rt99S?B{mR}0.3R?
KCޗR82XeqUڗ?Ιe\[U,:.~xvޕ.4$@Zj=-gXu]
n$w
;̢?˪㱱Ryo}ls,9p;rVׄ;p7Gכ<\4|)v^N_ɕZE'ur4{n˰fa)%bg}Lu{nulq!:=r2PYZ,f`1,\Nyc #jJU]!W;c|ac9/DwǱ);Ʒ[L NAE|4̍W5j{q=<`f{) }Wb99s˔a(&:[$]֜A:8~~2Kuz#vi|^ikN&.	(
4GF7T_/DRdJ<$
ҕՀlmow&M
79Iy7Uo(TCuWvW[@CFT0\iQ3y|\\'r_
!]D${qgOu[Q^S31C6qL|vjy<0Vgk;@]=͏o+ZKt-
?
pVw)UD3CԈ,M}Go3%?/@(%svcn㺄ّ{j^XEmwu4ĝD<xTcm\tk2,j
>	&}3&tWikVwE[w &NF>LkGDyӝJHnnzß8)%mLkC^(eKx[Ϋ}]մPKP'A
Ĝ
}n%2DŭOEph5.ۡ{ +SJ"Ƒ$1瑱l`!=?lYysy%"'/ɂ3i[߫ݴ"pze~-5pp24JT֦N}^0ӣ|64NU@KEWV}(؛
&>Ωl*'PL=ui;w5ߜ[jVw~L$`bp!n
pqsmBK/}ֱ  \9hHPff!zPPNd  вFdJt

#М>G/OP֢c3%!W&+xiMAo)S"u乤EՁFIx豩6<P0
ҙωh8cLu`ZV{֞GDҴ񬯶̹4_$LLSTϼ~NJy@.,)\:}Z03F;}+1@]Dmt$uOPX?IDf}{x]quBU2$tO!չ!)ü\?ǒd/˳ A
<ms}	^'q9`xUHt.2y/(e/V=7Q;7n1Q7}7w@]=H{-8| m ,p[KQi$h'HfM*?m'CK{a0n7ha֢~!I43'%viguiP!̷5H3bZl+M5N\>woXw4ť<h\ }vkUZk36s`
1:#/"gNZթa
:K$Wr}}h
PNHF jLVԳ0oa
XbӰMa#Ö?ca@gͫT0:_t<''O2SyQk1E6+)x@;q jϚR9 PG8ڜ ػje~n3N,wڄPt&I3Oت
u{E\n8s52[)סZsHFReZ〪ZmGPEv^^>2wHߠlvJ7_
W`o4U#GkhUnIx
PeZ,+y{7j%s*A:qvhp].*W$ zl/(Ák
4Շ  Vhx`KOwjc@ݎGhg?o AW !zJPs,;n$Fш[ג[u.ԺgPfg8E$u#4h~/]1R}R&[N/iJKiQX-kdt!b`+yrGN wlzve-Xb;}z#QCX}{HWΖ/1fٰ_R6qVI>gTo~4NC\vANPEnͽhR˭xfh[,k14CsEڍr82H=MȖi(@&0W3T= t'u9䌿KYmjQ@5ǀ⡄ؖ$ RQoB?p*1H.C!~m?ڛ}y@T8}Gә"E sAmQ	5ϥ3o
`BI gHx^H BԼ>srD`/և;زjY~z%O演J[	xQfٝtUo AWip}ű{UE-oى6O3V{-9rZcop\yUc9K-aA(
c"e_⇚9~LF(W9eYa.	-J%]O/xi~}" =Ȁ'F:KȶZ:>]	fR/'J9!ndO
G=trd?Q#S!5WWnrsf	*0+߉Sy2q #x\HWF&MyIN=~iPldwE|ԩlG$`~-Ό0cN2u8R:^dP^̓?-,%K\˺ /=<$] ;d`'jF9[ʭxt'%n)L.3{82,i^ch[/ޭl`CݚVA,B.
H+lA\ 39fvvU^:e-Rwu ſ0Vӓ'MIMP5 O(SVǱ{T,1/OoWۓU/'%y*fQyv+1"(S
=UHO$=6rm&~#*T*mnc9V뒾nk@3fA(S:p#Iԥ)3F
"J_"h|>(ǵG+nBrThI|&n8lqPbgUC-[bwc;p Xm󗔦/v%YYk[clqCXI8RJI5|rm]2tR:CfUI
s<o$b/p|҉6,ʦ1K̨~nz:Lq"/,ܯ(>=WL]N?P L >E JB*|Β3z3/Spvw;߁Ȏ*+|~o+߻#~	jq#Ǫ#Ń[ŅO~T2iwpYۀ~
W̡rtL>klt1'?ьjh"ݷ(PFPyΣF!͢zv:U~mkrNE"KQ.:N)̄Oٶ2(2Y=;#@)Z*tkS;Є.Efz!i_sk&jI'qQ*V
} A穲=Pq1oNk`vcyonpX})M9NM|6ْk #r._ٱiCt Qo Ur@lvɝ7l$ls$7?FpS@Oa=<;w_vL`@L<DX_T~
㹤sIc>Y%7+:o򋦧zI{omrC_8
g-	}
>}IZ
^|k6lyۂKS+k=@ZB!,"	6ux0Ϫ%(,afa* Ov5Vf86l
lyZ#[I.r2_&RD_v(Jj캪^үnpM8mQ-diߋ\܁AKګ_ w}CxpoS*9dMPR5:)^w%|kAzJâ]"YZ2W0>=4-@]<#XZ;j
n4Z/gsvm.Nֻ~y՞;Z2קfs$9Ղ6U'>W
	UHFRR+?Űw\apZ#yǏPMǣT-vjb{`feρrJT-=cɄZM TD6z5xı}u&<jY2%ԧ	)A7[}UK#z*h͵&z< h%#OhDsV"vDSElUF+JxHH܎Is*]uTsGoks'rek
Ô}Q:4_#Ƃ74I]k;G랢;oO;d7eIľutDjdo|h=TyG70PGӾSoXZ):Zw(W+U
xhIy2>f;J=GgnK/ʧZ4=2H$@wh3«Eudp)WukK
rl lWAo]O|iF"DWhh[\"M|Q}9F;KG׋[
C+pɏgz!P=UP
!tbmqv.+"׉,L*_A|w|};3uƭzԨy]vb0̓W	`{88͓VQ'EU>TMulzm%J^p:׋XtuteR4oV/MQmS;.'!Q}8aOO=]hW}H_6^{9
_;VNhQOW ُwKZ9AUS؊V@U|S+g5^gŤ/
?[W|MWRgm_ *+x;
AjGNeIkFh+vkoZRWb!]PSs%c|<0,.-H s mkh
KPz)eoGT`X.pՖ^ ЬY@@Sܚg-t&i~1UA+k>V㗓'-ykP/˰v[	ʑs(J)`)YZVSǣq	..?2ɦ$c(a t"ջelrmr
LUCߥEQĩK9狘D6r*QAw7q7kTg%ޖ8gOݮ^6GjL&@Ptv]-}GJ 6E	<XE`E<	_' hXMD>9'pٙ<q65?a4:}ANc9uAKߜ!eU'֯znk]Qg5nȎ%pH <d^tr(CN`WU9ni^Vu`~?j= ;»o;3 2uPN/+՗Q%l%7y/e{PWQ:Jj
@Ϸh@ޏcI$#^wd֢jOg V	 `6qH.6浺BNZhkPg:-.I0ʻ5\$>)
UuBq !4Imբhl
Ci75:j/YoA.zk@il*_~8gȋZa晈H?9:}P.CJp>tfffSK.|nϫ\pƥ
(M=;YsP E]/G1_5R7Kc:ת\9V὜*a\vfb& *#Y^)7;]=OhWtzNVa>~858lnBk
]#YJiP[4q*;oRBty
r+I0LbTѣsa( rxׁ{	~|*md371`׎xtM(̍G-pcz9jchݼ_Byu
8YsUCK|\_PQ?K>՞[-LPRW)uZr9څS͒*bE
6p196E-A2" Dţ̟.beW_K6
^R9"N.jTCD8l"̡>gqZ>ZyZӸ4֑ď  4.ڲUsN=ڀNh	d@c*DO$FNz	~TU΂Orz8&ݿKuWZإF^]xpGϺS΄Pi$;.9%LBVtDKkGIMl^Vi,`B2YGxrz䟙-ql
whջ='&MvwW2xp
)[>:Tz80!cIC)G8 {1^)MFUa`6#\~<L^~?3P$+>&]H V7zJ*pdMQ@FǾR  EZߴ A9ɾ6wQNƟy-Q35Z0F_[cXxH:n.rs,w9z]B}t7tJa] 
%3=|%eeeגC|b7^Ob 8Y֢2n`o!c?t|t4'I?@1޴<仯>Aӝ0Hu8`0^&|~95r'|qWy(Ls]>ē)$yF[8԰>_T)z^Wqcq4}I!Jܗ6<i%Zޓr	B]N>YHxp+~WnڳQw5&y,Q0ގ᮴>3V#
ҹ*יlNNUzg;!Py2/BogGCIp|b&j6m,@ҟ%WG\e+HwaH$5Mq焓HfqF{e*Ee_w[;Gȭ>Q!i+(O{-N={x`}GMr"GVwr{[z)+Ūmڠ*܊pJ&ۢu~Yl$4mN$!Z"NHݒeߣ3:g(I{ coAGϝBT/ǂ:ъZp,}<QV$:"+ʏwa,ܜޓ<ȜGRgoҩ  -TU$A,
$d531Q'%zNm|<pQ7H
Y)jru>öw߽Iu_%;ml4tǔ|8u0{$"nh%:Z?fyddxJ\ӏk툥Z}>i Z0)
;٩*=zcbsZ@K&2_f˂ٝ;qheʯɀ
iC) ,5	^Qa`Z(yMFAkfw[NoɷbwW.[y+
p`7]yPKAѵ?9|
\Tƫ=J+
-;Ј"ii+pNdw&<'㍘|
'|!:O
X- E+uh A?#Be
$iŸ@u=V'Y&G%`倱DVZ
w֨ۉ>*GNfR8CR>`5(>7 ߻]ju>F9SY?]28jR_;\]k-pVgRYZXRK%3Mi?P?q
6xCvMvk/C+'THKS[K^{ȩ*r=N⫴w/]ԬlUZՈs8ڏ@u$'
>W=j.mױ;u;ОTc,*2EFU;>.5?o,h"=vJ9
|Kߓoĭ#Lyk}gb
qD`TQ PK/KjY0>ep+焟R%a}{p_*jS~%kB~NZO03FlwT'F7[]_TSŽ9әUy*̂z4N5+Hh՗d"Ř(S)`*0A3ٲ]`8֜6Fɺzr&ĠDm:xL>I?h@`Ѧ=pEwʬgݺm5:q<XޟóԶ<+~9
y=!u#WñYfH:`iQ1u nؤJT:yդy%PG ->[6,ZųTG}~6/VZwՕ`asq&Du'`ܗrTDY"|{;$^2t
>\fE
`7NT@<?Ibh()P|rj~jyywQu7SJEB<
#()!RThm;F%S;24@ܫzyD)ǳ_,Asg%ף}Hطתqt/ y]WCwqE k&}hAx~_trmrKp#<zZ5U~ͩfʑIj4*.+ m
E58 ճ5[aL0YT*౸xԕFVytr?l֡Wv.掹6F9ư.3"K-1#&pKGo lG|n9s׷7[h"Jk<pq>j)1Zo3	)hPoNITk'&| ["X !|L$Uwu6lic>-.]w~N$>_5*Մv
s#5/gԡkВ@r|.uZ&P1!~gg{j8`4ù	ڹrIȧxw轂_}R<쌴VƜM.+~"W5@=[߄]]6>3[W۪EKaSg}<Jp:s)/U^Tt[6z!xTYPz@[%
*M\.ٹs~&aݷdSr6];_˧>
|9wƛv8 %8<d$HgtH`tCR#+߹+wFM`e98
97d)I"4Zrto5
96oH±Gm!V//3\B[x5fε#׊h ǎIrv\[@vt3xmL?*=ii@L=Z]h}dd;tJsqۣ;W1oJgsvDa4%fKNdGWkvvfk=zj5y#q_?"ݣQbcOSKq0͓s>/`VݳZ.u)ӈY򘚝nd_uR똄j9]:>+ؕ2r+Jgzϸd~zkwA+79q&awkۅOwugh
?S#'=χWYGP6풿ur^'0REyRHE3QKv2xpK'\CMt@/\Uc ~,p0Md 43bFj&<b-\Z&ѵ:)>AURxL:pm󋖽9ӅSvA_G>ܒSݦMwղ3lٱSV:<y|,^ah9:G`^BRi/3{{rp4x[%
kĲ䈏ϲ;JdGbIViւ	[
}(OE٩֫N1؁w2LfVVE}Dwr1PV(g`z̬ }waYRb9Wivkf͜zG̹%c5F6}i{vZ-ܨ7g̫
;N>n3+Wzs~/ȨۣB ƦT;֋qεuinim%{֤")
h ZٮUVdV{\3GϷj{:z&Ui
ՔӭYs(ճ}6jԥ3397J빣4(t|UhA	]Ss3ɒ$+ZBRM]uڋ:|.
($䗫\43UsqwYz\öÙOyq$3Ear3_	4pW|rqnmǧ+t>}eT	_rHڅ:|%)̪_۟ۡzׂg,aW#h	`Xt[z姾+dCy[ɮ%oFj񞾘rK˱ȢՉu*I0LpM׊9U!X8͍.WE3r
@_Kңa<(0f
h4{e]2ǿb+{}wJ&qwE7n.qroc}F-ٙwYY-{{?(NOMAhUq{17f5 #~D\Y
UEysk=:ޢq] kVǼˎp>ȡ+&>qxKʏMB^н{if9C%"GTvlݸbIq:|90QX)˲!j#&MG杙]~m8E'iA?j.X޳H!%5O.5/CA~p$x#D7xԢ
݊9'8SYZxq*e_GZ|>VK>ne~%G|JXqsN*q+i: }
۳|6ut9{4
)UVgB3uz!lQ_JIDp-@ "NO~ ؜tt}
eWZv){ϩmY8axvVz~8\rb*/qbOL-řK}ђRh{ּRW֥
	;~#Qv|)1Q B猽D!D}LR,M}TUň\6lz8'عnS8BN{Ub_zC*אarMs?	 n\+83 'Gq]^l_hc& _:gɓ'
ʜG.4cog9Єcb2{x8W;G0#658GGN#'aahyVmЈtʆvNMh>gҽ쁩0]PXx3ˍ`:eb\CV?82kj
%vw=\7%G׆elLq-dCHR&|
*9$JqiL>&\!"J-W#	UX
]&8R#_>]gny Rk9Hv0绒$Y=X.%	f+KmM0ʴNv8G+ *ʼ[pҖXZZ7ya&&SH։i~L2E}x:EfX؊.`Mo:ʤ
Kh/EW	,݈ΚD) 3+Z*&ùu;qsȗz^9v]U(C\IɹD98 ϩ@mufu჉ԭt
߰]zEi@"ԑ.a+7*sW{P**|]r4XS⅑mH
ՁY/-
8^NΎo} D|vfhgZĤw+"$YGaFw,L#+Rs~%tq,]qV~
)5̳?l_~r>P>{x|([ܝIX0ڻH\O7gUU~ji>҂"~#^jNUytv%\΢6Z4#yl51tū! ႐>,:U^xѕT#B*'ȝZZ.shGX\w*6E~,yqyrp1.#qIZ]M%'>M:Xbΰ?=)߮y%yw#jj6_1hZ J.cl^,
r`>}+3metKoXR^'-է)&O6c+
oM!<Il/S=_?<a!W V
v6IGʘސcJ~xnuû5֙x ƶ]FߊϦ6G1*d l.e4>+]1.Dpc~RS#;=}0 qpgD^WxB.
?OzZ|c\C=gt]/#@5֕,Ճ&ϳ
2S;{
[(+X@>
yϐ6d[P%:LyMѸJYC=~yӖL@{T,I۟
v|oesڋwN?[p03shEx_πr]-Z׉Ce gp
LKX1`,9^&Oo]KpiW*uf#s"	-:г	Г=>37qO 1Ww:yqwR.Y7oMc|7iq~.xH*30^ۉN@jKҮ>@!hc*hv6u4([>x=I={`I	v+x>*FJu栃</ɒH*4S8NC!g
!A?2rRƭ|p<P?QǇӐRHrvT5۹'҅muְUi|Kº_=x^u湡&P/u}\7O&WNqQE %;npM	@:^G}C];١myxBAYVǴTq3uTq֥	둎wרʝvJ`p,5W0[ÿ .yZ\n" Qn@lوyz@OB=ȧPҀ$By
(QyKy,~`+EX.Tmz{>E#u}B}X%fE|?[rEߨv;xqpBR͟rr!z߉-"-(^C.r75
9,*|	(^\^BMV=_)}#
Tz 8r9|ْS>AOCЙȠ(giA	+zN%dWZ4@..)8H:Txtq1&<{[>6WLޖɘDW4_ 
b3Q	RA$qH5ʰ6
LN3Q'ѸelGE!U,ҫQO{NXU~J ,&ma`][nyrmjW~~(UI*a=*-T {Xj)xLFY[i tq$eWsq
̟钾]M]R:UZ{R>C_ۓlTDPP%>N <<ֺ.D0ĵGlNTql
z.i5}ܦy+m؈ٵ[AҺ. 26-/c>~\~ӱCS6 t q
dE_Q

" PVi-="`v5.hTs
X6KsFi?4R
:@Vr; Bq63%[:/w8H`\st	9~j7`c>ٟˏlD'wOB\t_/iHǈ>^)~ȏqhi7ڨėFsy/C?v攔VͷЅI%rn?YewiSa*bQZVq: WTm3^z C4N87N$`k :@E0V3D%t 4SL8zGY_@Df@T xx}_N0դ
h)6`7VAj|'n'j3}i}1c%ZJMu/jR.Z >EaKpyoi
&hL00PpZAɝP:mp9Z9_Ủ)t3n:=3@WeQ6lV˕.e5Xrsp"8SOk?L*pp2Oyu *jom,XMNW1l1k8˯
Dm#:.G4h|７b)Lf,	a2uAaRԽ8өڪ37w}ъM*:9o릟~azxg30ۍ(
%d
j`Q*=9W( R
Qtwz/QxrM(`!+ͺ5Fс_lJ^XTU+Ha5wCd9W:f
ݾ
]S!o.8/ZI@<3KeX]h!T(nRbކc'0ztzGc+;Wm-򳈓#R垢/8"&_	L
Q-v HޔX4p,b]R5kXPH3drZp=;{u=?Tַ!@FLhk3ĪPգ%] 9z(P7Hn?GTf'F
B]v@l5ǆ:	*~VrEA3\N]Y&|/WnA8Yͫ: &cəFo[g&qam5Wm{t%%"F0QM-
xPs9ߩH+s0UuZh4>}K5涵⨽"\%]qoi.%S쯾urfU;+r16fqT79bZKA+LrGϸV&Kd)OM?OaWտ9Gvj4 j$] q@!
}bG*_`^q\u6ldm<VkR\M@ AM7Q,i)U<Fw	֠е>	<޼Â(Cb>GETy!#Tp'>qًlp)g(wSYvWgiR{B7h}hhdq]ף\JNYǼbQ_ :nԲ:OQ[etu w#(*t5'?gD8"5M壛ɻp ؎kR˙ӽEL]5ľ˟}
g[܉ъ|TV\m::!>K;;D
=_-ov_uńtɸ=H0,Y(A^ɕҋEldQa |?/zyA02g	wSO{8N qnQ2_QE%
~gmw|h*qV@'"/hRtT$Z>+Б)n/24Z+ve_7e+<+c:TD}RTVmiF:e4Qѱ؞yM+$\J{+;B㾟̤, 9l*=$U
 V8fp'T=*~k91GL<:ā4ybmIőy.%k(r}Zswu7,-ٝV:~N&Z9k蒿<uRtrI7eۦGy ωitH
p9n{5vm 9Vh@SMl[ؐ|e9FSWo/[II'׃r$;g޺CgSWNMD-;jK^Yp
R qʢ|,F
N91Xx*r.LX5)Dg
p>Ξ>3s@ԗ;^֌l25>	| sw]d#wMX$B$w(SSɷKmp-,vas,*A-b}|ak&*#睰ő\ i?Jq+mJ2!D˲c44CϨBaD*]CRr5
߃=zU;q఩эKV*"QzayaWA9p$yֺ?%nwDh1>ߙQP)!,R+D++4Z6ɝ"
\&j;:5 ~2NE]/K=appQK۾8!І+976^mt	<.xU-cZrա^ܫڋ91F(rv
΃xm51KSw>:$s
NTˉ0:
F`
G.鋤
Sw{qhlC#`zn1V~2_~3wuS4G7sI_9@5m/_(z,AQ՝7:驔Ujە/#W>E2>0>wF59OԻ!oְQ9
*.}88H!86'ϐC"$K&G9YwhLò~t
I/)$V$.ll:=A[`m睨.frse!n+ob-!cuke؎ į8\GI@Du5?
؀PF?q
ގr9*3~JPt@	J ԇNk]MKTY%:ilsKvHjG/'9/RU	&n:]8>\$.LnZGiԴ4tmt	0\/ԑڿz;xWE:[@(Z9K_VCߑ@(^2n WL|+S]9]պY9u{@Z+|3Lt7G(s>z.:@	@t"iIp|쏞t\M.ꪬu Wm@gƸ4i(.N*	i:ORPu`pBON*Ŷt^<x㋃$s16^]5I.-e]\D:iMJ0T%1/L'2
n/}V.fwn%"}r%pWN׋mgrgx-y:/Y)K9Ꟃ̀m <"싸H$9
`0L۩E]2SF~!
#-UTSB=U+0G?}0?=BuPh
?ֿ^7 s8$e'fkPfW3\2zN^З<b=CL9c)=UaS
(kekMh	Yâ$F踥5T.=(N+~?< Rxゝ~ex4g9duM|^izZ]r|E ϭgAr,|OzH(	ͪڪ(M
鱩~~(
&@WMw8%vWfipl: EJ'=uVyAY ӕ,(%'j?.b,w*hx3@_Z05 G«q
1ԁפUAWtٹSa˭LSY)VaLɊ<k.Дt*$ה'XfvL0rV:vU@ݜ5B+8(kB;kcM|k[ρKڔ	Ad \h:vs`I0vn!\Ns?g9&*1g
wnyM>*))DIj8+ߑ<^}}tH~I]otW84.Hz5y8S`,XR3G#x5	EO硅WUS3M+P)g8)jZ~Z`┲3m-
&t =P8)9c;P$vVITA&vj"gm="^J{BH/!S"hu]<jIMuDGZ͝Ut6A_tH|2Ζsދ&6G#']L'w$Ԭ
~1>V6nI +F<&̨00YuSk :bbٝ7jzn~/_9{$	]I_Ew;]o2qޗ^&}H(pkCRo@;ךύ;WF5B!hTtR5Q`jp%EK1"*$qe%g8`*'8ҋRGl|;T` /OCe޲2S_L¬N) q
:Թ$ 3nC>Cy5$Aath5~=KvuLiSc6}sQdA˭{gBW`ҧ貵1ؓdrK|K%pDԿQmCti\钏6	W{YB~zEbV<QaoJxO^#O[jP0I\Z,HuxurQ8+w_Rn'$i?w2Q$BnbQJSJ'-,a\AV$WQڪWW`G%dGݭֵ)d	֫mH%CIj6ʒc]Ϥ mxSp';+
LHO!Jz+|%~:{q`K[{i\Vmġ<S76<T'	LDBw
D
VE.r9qfkI-$R	 6N9,\.)~ZG"bCnN'f4˫.fG-X-LjJ:@R5e2'%Vm_>>Ӊ{)ygMU3xFsOxL%if8{zak۲$rjWS5:f4ZB\ʯ ΜAGnjjPuewjj3?ȫTY-
JeΩ/_.k;XHԪ*S\&ԟ|KC՗ڞJ٬
ivTY_	Ek=GΝq}pIfAd{/:};p|g8[ǡzM.Ϟ%^ϣ΄̤IAy.
q\gp'mΟC,&T-]$蝜 X;Z1׹&ת+guU(Ԕ?xyB#79ˠ0$AzAy9֖FK/]˞d99)jq4_]D|~"3Ts>-M.aDӷԻ+^NíH8zhUu%L0h0LsG~x&[>bVf9mXƘ	JeMB 	ݡU;Ҿ+*To2\W[~ClW;"nLϱTA7%:9ĠjϪ@
S>!QNcTYqHj4I)!@:ʁRU[eDz\a!|~D\Ru!.txVт)-"݄[`ݡy^Gve[7%j\q{pDAkX͔ώ6`54"Yp;:ޟ3
\D =K9)b#AӫT:1X=W	DTl]cٜ
y8幔)>*xM劷͡kL~堾8BU!J($oYNrW?krۡlC;aW-A^"۞*ĸ~n_pZC˝wUK''z.wܜ?muuQtWr';0(OHZn	%eh6{5E~֒^xɭm2$'
LjNyeKtKu4V]#=
J	ELy(Zt<D	CIWT@
^@8O)h];x&*~%1[gmK[ZQ
HH AredQҐ{;֊%dI
.~.w$k͛|L~Wnj@{MeJg)|wR/;gEOaa͛vwbnQY2qxko<jeu8~7Q6rB$EyOUށxۗfwSnUmcЭI^8J1~[r㕼GV-~ަVgsMy$PHM=FpNY{kQT嗫rmն(QLVSQ
qs%9pQJ1	')\=h8&Іwb5̹/W.Tsyo*$]W# G98%W6K΅k"|*N˘~EH)Dj%BϿ?O\ge5ޟ@Z~jJw3')?v)E{py<ٝ)%	F$(GVlB;uvP@r*PQ_sRңTnSy~JH]GQޱm[]-wͷE_MU~
fd@>$-4pib8ϠR.r]8Yn&~OŜ .ߌBYEϦv++&uۃniZ
Sq:H>TZe7
GG1D4n9jф=;,NU?]vn@3?JʾSK2~]U>)yj fbahf<Iˣ_*jvڮvPh'IDLg?<@z<Ok*sy':$R2Ee>aPlVKjSYcuJIJA_#U˒ɫF) _P*u?	[$	h*s
ENr7CLY"sC%+I'Ud5ފlbQ\TdjNGtR``ٯ/!_qvd=ILf*$	}є_F}~K\f!ѝǧy'΅)^eSM;!U3LEݥ/WMUQ*Ή&1?qgT4+P斪
'ϝWClM~\(
{W҄)C"eoO|RNgM?^"}YvIDv'EvUի3AԻK"rD]* k+2Pˎ!wzv,5Km}MTd*' .e9]-p-q8HtsvRI@lxAt*&Sݴ nlI3OS4J?!(2;]>SV,]1۝[1Pxp{ ʻCjUKJw9vMP;)x|?D%] >#'E9p|[nTIxV5^??OpaR]TC6auWu!Y..
6t&@@D~SZQr5i`%b~kkE<LO\S~*V}Ww͛K*KSMK~9w1ے_GʤI({G5FW:i'Ev=0ulLT0Cڛ?FǥULG]Hz$g2|;Rssiԉ^!NDʊĻuU)
	78*!9nktJNMOc[ot/gǞ.P=l㗂,KQX08M	.dN2!En^B]T@m(*,go\ϵq즺z]jSfL%YKiDGjrE)`ؕniuW+gtRA_8~&Y>4;b(>ӑ.n$R5YQm:[~y2-&A
lA(JK4ճ.#Gsca-YY=7V'Oٸq}[gULX']X*
h9m{)Y<ΖKj^M]zmmu`v*^5eCmKMm]mezjD'vTH	KAwUZ)?|EuYʙH%H\U\@ xA3(8҈TDd{xSPwtMV:;èb"aCm0Ts;r솮:X\X9D<1,dltȆ>pU^V#*U1*,k`lD)5ct?[<6&1'G  UEgA\2rM<H\WmI$WV-]4!$'>3r!Mgo{P<jzvklO98 
Jgm^-wANem@gMAv~< F$'	MҺjO<sFA'`	"kL~i71:GaUr@*?h#j}|U_ ~DuV]\켏D'`pBF	Z(	@:99:eu#M7ն׭[**WKOxB36S\X1)v~fx$[eӑzWW8=
_Y'v NJ,-Ep@z^@e0>%DBޔN.x8zu+6ws%ytYqMrTNZ=c0m;mJu4Q8`%\_Ba}A\g(
F*ıu{eKL~AX2~kfw#l.,hjiw
U{\tWu.Rnr\e|t#A'x5:$ m=Z>i~"ADA8vprz}ڶGGsJ~Z.rJ<N
-CqiȶT9:F]:lmTꮂt{lsu86W(8K:eݹ.|?Gߢ%D?	E}EƩnХ#-&_ߗNTIni%Pwqs횬2xLȤvZܒ!>"ݱګ RMys9-ʯd$\2Lvkj?uz_|ycug %(6\=|ҳ#dU
(/z>4ev%pS济4ŞgT\дzg5XC*6v
lg"(piǉ R?9r(n;
Ͳ!®M^_iMu%R\j%wvTRc7F7lJ82Ȥl$_flԡ[GͷaW<OZցEWE';_6BUVM⩿Njw@IB(HQB8G.5rR8B:q8JQI#F1s䮨oh-[-9}}R6[EaUizNZyyȀ[+Wv<Kʕicxͽ'!HU靬N\s=de.82.ةQKX/b_5䃽MZuI1 Ir熪!FШŝǬgߴ 
~$e+
廟"zqs
Azbr1@kCTg/Yo~;뙊"Rv-̣(,Hm>bSИ6.gh??{*;ClkK&\
LeGjPZ((jwO}%{.>1	/|NPR2I7z_Yi{}t%gq䮜4)? J5SQ]2;W"Iv}OciKw'ݯrLnӁMa=Z/./X/Wk(c}K*)^U踇<;:6Ǜ.3YBn;VϘ,,Rsv4Qe
Oޢab532lZ8M+I-ȭV@:Y<>ҨzF<׏ ײ퟾%Y}XM,U!]yޣhF[S檬[B 穄7t@wՓ˲y$
^-
4VcaWPަjFˠ"R6nEg]4@~NY(S[zqxץw*r\!ͅwxڕf}=g;
Ac.E?'dF*1՛;9mבݸ'Zuc0N6dʜ<<TոL5<O
;iBy|uȩ9sN#YE[?QG}.f`Q~Lt7fAw3Ip_~O-񭤾k,7\2KMoz]sIMճ`+X'iȿۛԥTsܴ0pA#G&]@o .ϭarmOnƑzkR
zyyDڗDay|#;BQ
\RZ1)2rZfuܻFG>*q_r|[ojnLF&׶~fAq|k?W-W>נ>2(\~*'u{ܫW_ja:5/7ڂsvqOz7ᢂK@Ttkq05FxV*dMuu6hJ#8f͹ݽ/RC8|48-	@{k-]W	
*ȳI7'.]L%!#HZ`QXTEhPn6," QCtՒZM[8!P6N}G{Q_נ{v-Aw{'/𵮛vUmR:7\ǭeZ]V}|K-b	n_Itfrp%\=}
d1jO1JCVf3.>
Py`E"AN|Uwȩ^ ڏZ7[H#[o5\:v˸jB~שDE@g^7 )@g5us>EwÜ<͟Ƒ
BegRL=kkTC{(#D*T|
aֳ_hak/5/49{.Ci'` {zuՕݒu#IyAH<y^ײqIJkp WlohP'yIIҥyxj$QNp2*?NLv8B7Lfa\jGSk76|r+B^u
z/7l)|0%@bb_2N]oMn휪퇡qSʏ`!S87"4>+/7Z8l='Ӛ/d{ՇU{Кz
ã5e>=3ok7qN! ^O״!/MyDߜmnN.aNl7ll=xxd_L'{cUhKp=6UZK3.Ӟ'F&^
F'o+,:9͎M uyma|#Oߡ
/O
H
Z}~o.]ź;Rk
[ڸP5?=S{n]+W,U)!΁U׋< [߉"NΣp%.	)_
UyՉ"Jj Jrƹ+'Ϫh)1S)d1Q%Q>(lQ
J*RbVR0Kvk=آ5amU뭱،7gpd]j.;rcjh	Mt\nR>V.޶T5h$>ͱYS("EP~-Z]~vy?vi
ja6 
?]I199m(5fzM!G~ic<R\hsS|t#ň
em. /YqkTw+?XzSot95*Wq' H6+)LRjnG
^!5I$i.iIYhX*Or+Fq%
 =&
2CWD%
:>/6%%0_J<&ANT!I*#rw?Pj^O'k
˴M-
Pk.ή)XIy;pìR:7MSƬ#=̀G=$ڏW>`u)CѝV~\gn	*-udsS8ZΟJ[t^̈́2 ^ؿ:,U1c,?$p\	]i
nOqC!Q&i}*p p:ݙIyT
Tv) ̳v^l][S$`)fdqT%op*Dk~STRPs%ZJ:R
UԶO3j5Gh	r568JҠ$Vvi)*-ܝ2u4E20R4~J%DӨktc-[>!}nDn()Bn t9]M'|4Q 9Zw8z0Q^Wɺ+OGR'Rbb$%T$lReT#=/uN6eg0,HPtߟs1MPҾ鯗+r']\KfTdK_D&/g*G>4~GR{OC*\ 	-ZۼsT9=]8j\DwޟoxICAQhsNX>}F$uTiW*VV+rs/`\unv*ʿu^@Rcs'Nq+r
AʧٲnJbmz敊r٩G>p#Ȑ*ЪI%m[m[{
PRr6` ռUvTTYkq)k&L6icDt
Z#VWU6Jhj<yk[=({uTT"OVVg!Iqd-ɑp.	p qv;6i#%(d&>=Vq	{r8tT.Sa-'͓{Ь|G"ۧ?VGo5?8mV!]KH
wy_
<KY9]K$l@/~^6
K74MuY}~cR(8rl_
J^z`OS_?f4YKꙗa"Q6+XcSzhj@&B+ Q|_䣿 
/p2oTZUÊyEl]igneZӗWsKFؑI*@CW`pcfS3Sg*N(\Ox%Y></~ݹDw6'؍{Q0p=J:^B I:r	:+
T}z@$+;7ZYcf'(C[3I("mM\a]FPƔzqPKxtSʼ+Z 6=.Dm@=+E-٨IQ3M^iV@57pJb'}	vƫ:
W:ym܁X0Qz)I?^Ny=z0y8'pÁ)]>KK+ -'UaKC%9h}Bk'z ˗;4LtG~jg$)^^!_0=m>>MZAP<M~ iʋ˷$w}r5O:ZjzMqr;p?~bD֤Tϑ,[Ԣ>]!;l$-^>':590sMT!h"̣̤X7 \L9S
3=:XV]%5	O7-q^wzx֒%ؐ<ɕ:7NQKQk*ySY nXDQKM~[s.W:rBB
ܶbנN/JiS[ &ܽdEk@LGo+ir	ۮܪoIM`OWL@(%9mU(lo	f BqjNB +]!dԽE4pO%^Հױ| fwa84!q6P;˵Zsrl`)?V3UJԮ;әJqp&LUp<	)XdޮsK)[ <W	LQΎCҿֽ%ٸ;?]I%<|۩fo+Ւu.Tl؛ .Rj&c
*<{S>m;ץLjI@
*?c09UuXy`)*5eѧXNt0V~^UJRSC)?SȄH8hVgۑ~?G[%I%Z&-u.$lz#h[DʩKt7"GT-)ԨL!hh"JfKۄBhIR6G^6C5"p֢F5]w5FIS[@=2X*}J4?s:+(6Wh${K֞IV4n`TOO{M祭
EBR1du](+dⶒe_w)^ԍInw;¿zHZ6J]v UGxY@*59-?T8
{wPM\0[YnQqw77=qբ`I#0	Mտ;	
ΧU9kUxLBu<tј+6>V1 S}.[6MdK)*FHQGTNWܞJ2?Զi|;'PA"шMtuX[x#xF^U<-66enP)xc/\DԪ%({8wTTS)9A]Q1#j5M~ &,:Rc5ᰨ_ME9lr!N}1Π(JQZMC&h.X T}Nfڻ?}ܒAú4|H+A|?XIyVN\Cx&ъs3߽ZK
%?lfW}|\Mf=wqN$FuݦL;>VtBa@ͣ/QXynvj$		;O-jW&+F$J=pۥП&t~k6d߫6ŵNZ-#_*(LT$'ÚjzN1iW46?E >5VS%Hq.8)ZK
bJk&nV_ݿ"5\/7G̣IUC@Z%YLZ*:sbx~ZhT(Rd{yP'v&Y@zp%XԉR
NR$Ϡe&4FP՚O-د-A(މVwze
BR-B
BO!>@RM҆ȊKayqeM4zvi b}b 
h^%5r[óZ>4]ő1F	5pJ(
. *fBѹG	;"
ʒTh='B/"Cm;SQ|*x#MQjV4Gn9^
=֩"e'ʠPG=l״>,o u;![[:( ɏQ,zJ՛谻
ӳ%~ubDNfcѴ]3WW*ڶ yVMaV`!RjFfupSi(\ʞ wX18MMCAyHtv%7`,8L/]ʂ*
&sP]5KyN9%e*q;yvֈ6;A~ꗢJyYܦ"bPkr{vq&V0Pr嫦Dj
K!*m[|B䜱\gxӄj~JTjk6~	URA2 TZ2l=ux;BmHPd-ό9<ug>8wͮOYUӌ})UIh&;pyn=ܱsk2ꤲ"f"U>Y+el&^G Ǜ/.NGl[x[|ON @HW)e9z#H0,"nl^0C }cz{~Gjo\=3J(e
{	\.6\9'{*Zn6Ӂi4.˨="V+٘^ JηO6~yYd*PMɛ}:ׇm*_"Evb疱@W[RIcd^.H7MB{̅ϽyOWrUEn#Ђ{(P/8$a})DIٵ+.el`$L!9$CN'U \i:۫N1Mx E*Cn% $񥈅v7#'W'"^-9;T=ם%/IN\=GӎR*uRtKTRxwZ[C¶=@MA7OUq\b>dV~6n6s|RG5@dm>L"! 󴺖Xz)X#hvm|rx<uYKu3Ϟg/)&amz\UEuy\HҤkiIQ߅uEG(Em%Y^JtAj #VYR`]T1^Oې"(gAtUuvA	MvQPWqg	6m|Jt7p3
+yN>`:rn<lu*4z]]䉡R$=swր]<7.Zhld+Z-ͽ;ި_ѹhL5Gj=t.SeK[
D
,plWveՓvV 4qc.Z栦zKۓ.6mMp(٥E#'Ti){ƪA:&+Ld~O$CdP	~;;ˈ?n>4uSH4?td L@~J pjUHG?O6jf$iޠObY
] 
8{5uO |[?KIl/u:uhcW	TR`tTQLQe:kA}'("n%2B ؛C1xLΫb: xՆw񙋐_ M*}O)FZ>(zCmxj.즊G5Wm2+YYh-eˍ|(]4_;PXz W}L=Nٔ.H\v?#YOona.2IŔQ[6 ȷ[ӗ$M6DLoJr(sI8gC @+Vy4sÛw	[z &!hB9~ZN!z]ڞe~eoyJCr[Lc֜%5CՓbOĀ,_"`WSR*<7e+4nc΀Ƭ6M]R>ԋp	U2Uj_ԕlNCR8HZ̞<OȉBL6|nM~8Yn*
,|J_xʩMUb')C+Q6Vrx<qljwJ773t//1W1b=%+Ui𴁧%*T7)MhzI{юt"u@UoM_mrF)$%Rr?]!aFq=y'YEN⺇؄oYo]=*%鬤i|z4
G[& p
z9{,G(볣dHTv()_7K"
2r)|qVEBLȕ|&K
Ȧa3 ǳHD>s/u	0S&7ee%Wt=H#踅\vWY8Z9xjx/d#*]Bp˗{1ZJ	}**YA:y%6cout-oRr/z8n>I^+x9|}{EU40oˤMu9EP]\avqD!)X7]PJ'^A0(BCЎ2XMplrWC,Z$e94]uRx	N[Zœ5[MjD#hjgwIǔ X=|:.^׭Q[ ^7>mf^n6hoG';>Sc0)SMģ,'~ \hJ>^u?y7<BPJO!I
L]gŕGg^]E$EB>gQg4Z?tbU	gޓ#ܔI7	(e[*[gi*W#RhhNN)?H_9(n1YތjXy)f_a6r+֬|fRO64+\llIU05  wRA~TvW glKc-|¾*ɟr^u<4[pݵrn	qDOы?3`ݖ_ ^ҽ	EDCwH
klNNjB-*4Г]h#a:?Teս?`|`Ĺ.ɛ݆tȫ)?I)Rўw>yID'ٽ[e`Jր$6XP-v8
9۵%I[Rh*V_(.oPǏGa0]S_Q\b(N/|$λ۝V9JacV(׃嫞`&c (G(EPqFNpDHސϣ\!Kc52fsqUϜ9'4[t Dl%w;:7jsJ~[/K<3ɔJg~D~5S&~@DJv'h>(GbNo+IIx$f;
5tE`PC yY V,I)Uzg|9Y2I$=4攑s}En<wu\NrE:JG
S[ygҔAS[ݭzz{ipOݠ@+QJӲH9
)ť9FPBs
ePWV7zz;l<
ժᇾg`횔JuHٔQI%-Fmu`D+)35g{Hr{(m@NNCn*|)L@ۋCtuE#ȸʷE˙N54
JJCkDܼJڲEXúg#Bٶ߸!>n+!{&*HM]`)Jzd?GP?.˨4.@aK9r,!WCm$D"Vޅ~qF*U[n)ǚQbo/>3Sk}/_"$]W>
S&ߥ*T@`ΔiUp|ٞ\MMr^ݝ^G?$ΠJʏtǥ0lv
/OM'T|֋UUz@@3;R#l\v£P<K	W0na9SDhl`KG`sD%(Y]p5,k':sN
uܽLuJ%"@j$-8zj.<吳%	HFwtWO]twzrV|ֽ%A9I,nzc4(Pk{JyAQo,%÷rnZWL~Ѱ%KB8,>:ekҹ΀yN96u-O-LU~[|!g&s~d_nJ^:!vl7@b
>Y`IWSw&kP
N3=.7+qI};	6[Rm߬i#I$WKBfZKڈJY$u'(Ir~ԯ #}T[	\l7!͖Vl7eSvF=WeMXV2톇{YnNdZ<|}=
YUZ{DNDx Gtu!*n,j4uoWW4/gpKJ+܃9';"3I,I=>F@HƧC׹e$M\Pnw>d'4_~IO0Zzԭڼ5?T)uj&nwNsX%#Urzk<q>EOI
NNnw!)L?ldLE2trjfOF	II&Z"i-g[Q=ޢ^vz[uHg	܀krL_4utZX~ɫ3L-1L.AZv (wꆩ,F:+U󕵐7	ZR$9S?\5*;<9JͽyṔrPTY_uVKAγeX<~^#9khw
#^!3>,y
Xn;\.Pvm?_ wl3$F7^oJ$kp?$A5NNY=|KG਑o
]BNF+?ؿl%w}bQJʘ KNԹ>Vs\AN~Q]b8	PTz<l8Vr
V+OSI6"zIwh;\AuP <9KlJ1ZDB#ЏXPsخnM2tZi#3(l;BE{c@>gJ&iip>%/qH_9CN ˭Z*}nws7Qz͔/)ە/brYxzKօ!Oƛ\t0mŗBqXe<C`~Sp7vs\@]XĨ~4ڊS^KC30Yi)˛Cdjoa(s˶uS(3Yu$\DqŚZԮ<Q)e+x\	0KfYU{6~<ϒe8L9m=
U_HXp>H|W+`BYpَO _*1~`ះ9s`hg^ԃ ?3
U (Gȱ!w~
OS 32J.SFQM
k95IգVjOΚCGsiүXhX
IR>]L]WFFq߳]GOPVR>F c{Ag3@#M@)˻bZrYiM2O~8P)L*Nx4r")S
B1ryv0'8hCP[Ż|KZ>Z~շZ~>sVo;Γ~uTr9 ³ަ. )roG{]&C+}!m~yt
b"BSU4/8ʿo{tXx$L]
QKW[uUJ7ٻ)iMU@dY*
q&ڏA0TI14RJ*r~WUg
@ϊ="=FU*WJQ)!vnO*Z꿪"y[P
/M+ ?<DWpX1")XKE.1 |7*g]*[}w	hlM3+ d*= Dcܫu/WUH,L[2[[s$RqV¹OBZs
gy7F8R1knL|Sr-g-RR8ޔ<IwGGxkx7@aeiȸjXN W..%IZl4lJ
tţj
tD7Bf[S!bM`e
W/P`R}nJsdQ,5ծ 9rOC]c
Qe
ɉT pɸ@5	Ц(mn>v͹*r]q6^TT؆ǵx}G
Y!2aKQ8
!"j*dM>:PNNc*Nux`%GBVqNSAR5UzW \h,$%Z5aK3؄Ӛ}4_;,Cp;~}Y7."0>p"fUrԼu##4p!fSZ@Pb/i!:NAș`|ɧbGejN_گ޾?Xm/JU"Vы*V
=](	lJ%vvry_R<0Gݪ&MIU2i{@QPn|	5)ՌihXLefWZcFJMw,sgxPr{de
^i{Ps2\?@94GȲtwwoj02VIP=S 6рvhMk6T6yVo;ݛ<T8~w#^̉_fp4FtzӝYC:rdT煀;TJ Z}6O0gG}윖I@ tf~CR4g5)_	ljZO!VUBQRqlج~EwSD(7߈E=}v+̦ 3RvU:UgnI.Y&&L/F{~s(!Jj _}⎿hO=_qzM>
&gVSӥէ,
0VUY$EPzH: <ӷ[mc	DOMMr8G>8	 -O8Z!-Irq@Ή:"w:(ª 	I=TePl^k CzSh!ʧ#S:{rET}5UPAa(5zos2 (+"bNLLo((`Bʗ-V/t|Lrj8Ý[YwI*Z1\HDtj/1O)UITO&/N	 J	X#*-
|]̍or	by=W&t;zU=KtғϣT3|vv*ޗ2x$Qƒkϒ(ݏ9BECkPRl03z^YUnsZ`+m12$M
/vG=L^x&hYwx	%T-:<w;tZj8뺧[Rw?ĭ!HIO
"u(PjO\aE	5]PY]W|r/ z~-:A!|y$?#̣d֯Qu->MTHDUCnR*tE)8k59k*H)r{$l?d)J4
L(	;حN[mV#i¿lE*r59_*
knR?ߠHuiPd ꮫ7b!sݓ/3d:XJ	A]oQ͆7I+K4
tUy*=,v-
 pVM8P\stݘoe_@N61l8[J݅m!UδI<;vq~^@/l'&' p^1m%{j-u7B'WR o]V]X:9fIԙydNܗMtZ
ץ1>J
W%^G>"XE:xLd>پƍ׫~oOť	%CiVC/RTk0`>R?tZ]J)}߫Ϲ΢P:XW(dnc\ܶLmM~e|U*]JyZ#453WQ2#U7hX`5$(D-sBSb^ԄM.IT%]}HqW?C"c[i>Ȼ-ԬjHuRlwŏlt.Lǳ4PUfTڮZL[YKcLǵYWU<5
V"km>@N_qCQ&'ѫ6PY#0uE.ۄeR$>W%:RἊc;'ppFO %N7 [[stձ)c^˼84Ě;ƫrzwc쩙:|Om`uN$ x}|D"g|;.\KN&ǏW$6Igd+p/Eu9(
ո AW8ǯO<
8#e(; oqv5\">*/9lIe	4Jg~bU,⫴0-c,W&0p^|;i`
ewgДxTYp@#QJ;Wy{	ߣ6o("-1¢CGÍ6ui@F9d7g:m<TvFk";T xId5c$jphVRuoYg֕R*$! g@nm9QR(j#J)N6Trw<b.TUA=W)RS&zk9%q
HPlCAP3Q1X^~P_e>~ #ӹNWTs jg$wlxG+~otPyEz&以4Fٮԏ.(A;ǭ*T@.r;mGݩC5I<{9a0]	Ԅ3N^P+zjj*ILjp]A<<"6; Vt
zij/]FS)-f<_H
o.MkŦWYWAjǠH	!U#h
.:քܣ$-zM{r_)5ͅ_/9(6+|D%&Ol[|Aϝе286@{jY-.5
L	VӧqvY,U
s+55Z#kP&]MVuQIQ ~UTtd.RC?%	quǧ+5FROqJyE
nSENjN^fiCc7MbYn9Uãч3>ޣh/ū80Dq%w8gN]qor{<>G32^eW	Jt%IR0RS#QT	7nQU-ys6~%D 
yՑyխg_Oջ>pyU79(嬇KMڧS+R*RL% zU*s8-%IctƛtUQ͂rͺBGUE2o>OP~[<K\RJU7j'1Mz^ZK&]BEؓ(W{h Mz|/vb_>sKh{}%v}N&܅-Fegz1r'V<Ϳ(x.R_Qezf
]VY8VkutVi"1lʍ:_K/cٽ\ɸ/$N]N |Prz
q|W5"SU^z<*D
2wΜ}9~nzSa4޹n=v%uvO8JiTv_xrz$jM[49t܃[ց
m}DL%	 RyI
@j%@/,y=@k37?*"+r	Ջ (~y:Ӫ4ypWJ1!?qJ:.BYGB
%#~u_M3ui" 4Ǚ'548EJ0JXW:U|{K(>[ZsP,Q$-|VΒUӥWŏ͡wSKVp#G% JvKت5ݧ2C=è.ݿ k+	+9ݢ[QR]K!hIA?Vw
 LA Y@bژV-\K}7	Ⱦ\uiS??-Q6*v'}S&5my^V)`IAt3,	7|Y\O"}Q	K81w4Z;JS!re孵@Rqͪ(ryswS+/n\!$ޅdI?zaNn;Ypie	T琍"($2?#*$@q
? 8JV҅­PTb@6w.Os,5^oNبTz[ϑjRYș3F"%MQu@\lt)BCݏܐN	P*ltJ3նNW?V3)E1P!bˏd JruT)JM|8Hd%]gnP߹W$5
cr(g辎鞀xcnL`L
u#ߗN_#Ũ&ykʹGVlgwəq%NU?8.bKHԔH=XsZ[`t<?!3=9aZ"lH%6ms$lG֦_U^ 9vnPDvznĨJ5pI4~fprZt-5Eo]++MA`v2J+)QG>` }IqV*RyM"E;VDRys0pܗ0[0F><L⦼\<x
$2p>GX! %I'p&9)2~?d+s}
WPtȘM.2g.RHМn»Vjߢz派nI}s 3Cƥ:5􁱹|.3v.:s|^o/`PU89]DQ! M/0Kx80EΛsJ>{轓 &5Hz٧2cr73T۳!5cs҇wюT{%$h rvLNd}Bv\ߡĊϿ:PWXW:θMY*)Tm<͚M~SAn$M5,Gv>9ˏcxď*GFZs̙#OtRRO6b_uMHbw tUu$=FPUW%Z1|	@"𨇜\^%o֪^@rQv
-ۢd	%qvmٳ&h&P"-T(iM-
]grٝ~lX6P>#!λtcTv6E^gÛM1p7mvF>R }MygՄe;e nMKzߦpPRQ(Ÿ*yI44.JXF8t!/=[۩$1H}>?W,;ӷ|4I=jޤh WBFpε%sݸbz:/3_H b|Ïz9Ap(]Df:#y"
/aa$RxG#Fo1.~OwcȫT,͸5xP]G՜SxJ<Xrz2%ۓ8%mn[
}LA$`gh\DdQCT$T"WU%z8K뀇K~ܙDc KI:km~N|=A_N+No<90Ѡ7mX??;4bQ??iPiJ/g쎼d
@yݤ| 1C?0YOK8J!X$>Vn$@9g4"yQi+123hmwn9uT/Krz_h\nK(vVx]F.CG[˶6c<*!jG	/ "JNvDTd8Օ_7YoWmqM}G@Q=9>1N2fuuP1ъT
?WyTUZ0H?_Pn.Jpk%,edKoG[
|ϳ/$]S ysn)	&SgCјq(\5|;߭jb㠢˭rZ_ց:Uii$EbSV(?G<j%VyvǞpkǫxJ'<Q%T:a0.m@rԔzvͳkp@C= =VFk{
;q/hߎ?
*FrRailsk
t2uTOCǟv:KN@G1.N6gzh ۫
O>gTF䧆f:
 4]`	qJgGo0=A̪i5٣ߊ\nj*fj7jT*uQJWCJ)exGn=ɚ.)E}szec`' |cq=ż2RwtQUV;Ɵ8A=RŸﴧ jM@?˵	 9يgD+y@Jɒ&B!h4 ?.fZ9	j6u*/H\'.@xRi?u$ԞHB!#uKԇ!gX$	]޴3X0
d^Ù9L rܢ؛
Jզ&%(9seNG1- AWIe	⯀](exI\$)//4e%f?|JR֬'+x#<.MÉvCwP$< M+E3TM[ dO*1%K;t$I_yv4oԙ蠛rw+i"ݔD
!Ǣ]H/LI;mRu@=YVw(?4ƶKpn"K1h#fK;$-CM6ܷǏUx@M\&TWO?}fIw={]Q{m6WUl(=Ajk6`~eg֝;}@o
*!Q^?~	{qퟵLn:Ձ^Ql.~rd=(B$q%q
nE6`Zѱ~@|jQt~ kYQ}9EgJ}g ev>q	8X>=f ~ wm-WЍpYy/Z9,`D0GKQM&1Wݲ,W%C<$I9'+FUkIn3݇\Օ8L21JAg)|[t5OLzsA~qtU<AAu&!.pN} .EZ	ܶ6ST4.@,֗g-
DVxT+XϤŧ[a#puJ1|QYWW&](vPs{NJGL@޶XEȗ,KGC0wєNfQ.)ov˳E8
%[5YL?aXC-mA8'zM<XU^{[8v[X'iudLBvRXޮyY{zwI:Uq.H,X8q(=oK, ?37Vx+J}3kQ\Xݹcڇsߌ%g1.-\cŌkajPMImc7'֕"^}R6@5@24b|gOڄFvvZKV|cʏ$h^#N~1Zm2$7
qkNn,`W?
R Sˠ8qܧMbV;UF/,؂yB7>Ԏ<U%o O8U<`RQ)sN%ob?w}$ sIE9h5uȑ]AЯooJ1nzQGY"fKk#UJ/4p.w!=$jmMr[3hcF#7MTW3K^[9
i<cjOMVVs Asl
l%_Z?;F\Ѣ^e\ߖΠBp1T8!yU GR?'!OGWX)Qȵkl<c^zBF&XXʤ톔)+%_KiJVQaKmU-O3Iڨ%ie=߮-9D'פl_wL7<øѿ:f	hYP.`_)KI~;`c\!t+u\ Rk栀Qw3RK.Px{|vkmz[UD@>~HU*=S2"DĠ+ep[6&ϻGS\L* ~)~z]}j-:.؉{Bjtu%~FpkpJw\`BD)ϕxi)ʯtkH*@-=:H8g]]/K]kum
X`j
Cy(έx'~,~wSwݹIRрvjQۜCUl"Ezу\*wWY/5j]fW^ӪY:@H^Rvs١鐨a Z7
tT=H:b
h,SX
<sEp_n9|`0mC>~c y
E.9{j5["LI/ob6r	G=߶ǊXu ⺛\3۬.-8?"3撒cϭۂu})E09;J陷2zf9_g"yt7չxv]/zBAՁ<
ƐWTܯ֣|:E<ZխEl2rJgޢPs`twmg{s[R,[W]9+Ar.)J-#9u9|i-%IΠt2_8qՎ8gt4ltV=_I"RulK1M
tɸ_gmh٫AGvtp7-aFb٦F~>tǲsZpntRTnߒ:OapmJS_Gq/B3gE^:54ЊWO>~߯!i߮|U	˹A/^m%c6twDmyO-NPY3)`e#.b@5ݝ^ki(1xA	  \$*Ӻm౻FoD2C۪J~(gQ$WI{$JAc
ruh)
~}QZq/uEK?)i׵]gk.  G-\PLfEɻWliia-b%,U/p+7FTQ8q,A[?^;PSG3MްX-\Pd*Gbp nyF2ק	[a8$ΡSU@B&$"+a!9ۊNY-$i59(4?c~ggAN$U	Y(YW	>~YZo0L9͉)kӷ	hKەSPz(!*St(MyTG*--Ѕ߾c@Zo*(?\9R:
H
D[	*O @(	֭]q;>hyKIr/hňSr䯃'v@b$_%}Ψ{VR`΍d~Rv3QZ%?-B%ѳZSexA9d(%9~cD漏BVSc,2|躴v$5>.5(*t+'꧖ʯN}YqMgPvn2%PUhТQ
#9^׎QΝoI\NZ.x;C<h>tDP`;JԇI`b=S O4'|w}8`Kf*`ߤk	I6g46/y;`
Nڃ1qg펭#4r3y!i`
"8Rfzr/!G.(+ļ(mԃ~dx<2e6.-/I#~xZ≨avtWNI~̝tu/~+4I11&A(۟#abj><D³]4Дh0{~FEgh399x{k+z) Ne*pHVں3 @5hnW4ZF4;)Ӊ)I[
~TAQ徼L<{i
'EٻO&PoߤFXw;{WJa?l?Gv¦B"q@p}MC^GJuuJˣVx
0^+\B'`W4Uj nN]xȴ@QKn+zD!5M7cIy
o9Ytr#
|ƗAN*<\YǪɻхwa  ͵=AN@?w9G>6A*KI՛|ky/Ŕ&;wGE0phwƊClؼEP
T!qW~sJ0D!5J3na4nfjOUuɈ2yxx!gnreq)B:<wwM7&
}p~?V
[l4#b%yZv;QH-?ڪ]d	No/IU<JCr}ۚ$U\~%\ʠ@}\3bb|78To9ٖwBo=/:Fv){ޗK uԫ#I$Kq<G󣟹O4B[)LҚ>|:bnq$sj1۲y1Bu`?'Ϲz0s с{%MCK3.LYhPuMԒQV	xQ?4)^_I>h :,C<-WZ oo3]p
iNFz@
');
L:;eTO]=xьN`d<ɴh=R݌3xqQGUN$wiݰ!h*e^^0wAߎK0A'Xm j<}F`wP)m;;275YT|R(`?7u甓rRvO`4v
~)CyU̓o'}a3^ʳ/MF3gp7`#@kkO
UG{w)rɖ?wM^b5א7m[JsXYN˩]LZ<#3T!,M"׹	)6UmR%"X={j'էj42aUK7PJK/ī˻7Q?E1}N#  ӥD;­쨅̙q3?qJ;. :Ad ~z	%`M/1$
ϔ%st"=;5]N48O])zP+g[D94'*ZiBSMvLeey_EOT	_n CbuRD~@"C$9#aL۲|:?NtF#ev<޽/YK#k*R47~F1B
$ǐ,
~$#yI7
灐힫[e8JF_"|[!
keY{]R8SB}_'8'L~qJ77ܺOC9ݟU8wRE;
t*ӍN{&*Zw׸N:m$\&ϛ}}֤wgmw.Z(\1a |J0,dZ{eL@Աq
Pbp<~Nڶ>"I7(nqAYOCI<;8G P[;fSniS/
티y,<,Cք@穏?sO5̏5ɭ9>۟i|	ND6ǧ߱%ͫ藼ʃP$f$Y,!+d(s
] 
gʫ#o4Q+3Yc:0<t~"$@갤kIڝ507Qls<uӴè Hsk<v`;69`'BY7}Β@n>
tϟWGݒ[SBխ_nr=u筂7t&L* \]ꙋ.9ɜZnPޟGSEmG7`$˯ 5]o%lpɗ[x[/~	YFkFR뙿h \aCs՝㧞۳BSɝ"	#TjUٽ5<
ߣqxdu+hJ)vXi*'#ſJB3QiN=yInPXy	PFZՒptkNoTB[T>,~ԨlDKs|~sf}0W_~BpR^^wU<u૖[m~T=mխv(w9jbF9?+1^g!^ףfrZcOJRc7|'JO.^<0#nr*;>qډc]9KW/5+uDY	8x.[](פ5`M1Ja+5T PJ=RJ}'HEOzϙ[j'Ru>*QMq! 67N&3DL5D4Q"%#'7Ւr)WK%"=|SHp]@N+,˞#?a퓩Uq-w,֏F"r:z0pQ6611eQFKݣU!XZ03U:oB0gli=yM@&=p]7g2W~~#x\9|`ZZOD)W%m& d4xqԖJ{֏kW6aUTQs6٤ؠe
sQCd|#vU\ygzLGi^z:W:ݱs	2Qe첉0HQF6~!ޕُ9hՙE慪54N!xuD<[6ގS=Ohʢq|T JfdOLy֪X3\Q %g0\mjB7!h4[8}S~3Wڽe-W_vTnV&p`aj	ݾT~hB^΃Go]N!Su3Í[WPEuNN%)utv[ <suvWBb'keGۏ}BOJ@(*<Wӓ~q[1;@%zkB1(Sן+J-muA{%=U`ե݀X^uf<Gap\(ROSCd;δw^ӸJi_䍸SgF\ᷛiڂOo1vPbsԭkqGxa|Ûo<u/Xokv}N	N<gCNr7ډJre麥)7
6]sRpP,&|MyR4^<sk[j>>'ncl;LO[y\>yWT9>%cN`_Quv8N.TeHT9*d[6/2ְ(~Akݻf7eicz9eSqɫ|MLkCS^?eߚw^C?w]q,dg\^g%Xs]5 5?%"dGzEd^,'C)\íVi!9cPC+*D^8{l=o2s}:;/;k\"|:JsW;l[sW6>vs,#_lmb̳Y}#}IKy.l4v}5Kn~l\ć<rD3V%vrzaYDOqàQ)5qλ;v=9{ϟ]K4!UZ,ΛJ
}:כּ*a:j-sҘᠮo"S8nΦ[9> [`ۘ5zD{׳O8\IZG7z	;AEEnޱxq1Y,M%ouGQU $׺^~ng"~|rh7p}}elau议yV׏V|!Ω iCNRڎN ǚ?{-aؼԮ3>s`>[#X𒀓+ޫlE՗an8U<9?}dn
!S	 | Xء[2!/II}
v~-qazӿh	ǣ?⭐y5ɛf;ͫ#E+nxr&_j
Dyn-x`u^iǽQ́2B^"*!j]NO [?HhgiK~OM=棼WTxߎ
7ɺ?N=%tE1\	{Bvѻ֡]Y^-8'ոprOѨIEn"h&zXQ2܎;gŌޕ&FW[ۙV\\}HU3EzT64zuc.}MᠶyzѽKM3A9޺]J6ͪ;U@?gi/Z$p@R:AELk@*c!]/UF
lDķ<
+-˫.=Pz
"D՜a6W7uX@juw5:j.BΉyf~3W[܀A:=(m(>5eЧ0::2L1S0VRX?2^ c6( n§zԗz~s$.!Ii^D1l"vR ߦԵMeQ50F}GK:GNnٯN|,+;bnVEf"r4K~骬{jEsI}Q-l׫fu7U
>sr?A9Kv]JejSL^}68rHp为Bqn(R-b6z@bS|o~TuX% &jU3_INբ9rʡSJv s"?tYٜ{r8yfj7:~mcx
0#
O"SenNёEqB/#a-o"Sޢuz|?># ;:F-9|_:,D-I/A Q
"|UW!4絅!, O{Z*bO}ӳPץ8#{|R'u.EL1W\v uӹfC:"V.W.BbvaqڴXt1|$jUۏ:::+-LM+T韺

KGj1$Α?r;ɷd엿_RKr?>+[9VL<$&p	G~41
sٯAVZ{5> ,^jD軛|~tE~@ͱ?A	`ow`Xr܏q[%&Kn]o=m0C'$LrfޮmR`P֩W5SЭw9RQwWrHOmn'o@w_Y|-.L&graa|JYHYWk4ܻL[
av.fʔd㬙-mB
XNn"rɅB#?wj]3xU-(Fk}Fq1RU6y<u)*O!Χ
dYZ|ݕld<h@oV3v椋ؽN>4J25<k!CAYXԉ?uE{{Hs
s l
# 9LA\Ohd
?5sU
AlE8_UZ	^ፑd8/'P<zد^т,y֒j:9}okzdHm^	䝣}ҒKRZ۟<*[<+
ԘE$xeryǙ
vfw+SeξrZB>r
a?)M5#eL5qo9mՓ.ÁS\4&M}U(SmR'x
oSҷmv;sa!Sx܄cԤatߗܲyTIWsU{Jj:'4!QsEK*h؏ҷ>7.UE>lk"nNWS*_(e*Խ=ƤF7ԉ:Qv#?Nmꀹa`vh'cǦ<; Tez.s5'cSPC+}4*ymބfEq4ڛSlJ\1}#;㈚(	D7SlT?`z$"EZRqe!xOqZ[!P+0gz=MIA{0ȯ:c e#_OkD!ey蹬9yٔg.g։Naު?Mm@Exg+rK'zA.8EJ`i?OF\^kK))A_5o!gE
xhQ77K$-θ7Hi0)Q%^­)AI!^ˮ2^H: 1yQ-H;;qk9]oݕO[DnT_*=x4?91j"<s+`MkkGrs?dbG#ݸt?/͏q[;%Ԛ81]QYQEI:ԂcT+V_MY>(x:dd(9~OgE+5p$d;xU%_QPcAc	䌗Ltq)Sψp OOJġZ9pmz
"]MvTD'{dl[gxImءx5ںBf=q=䴏{qQ5eA]wth),vϋZuMǲFV09
8'Oa%2!m!gXPC[Vd\GN];hOCaN&A,N*=/1yQ<ɺ<DWPCs')9yH1IHʿWk#EP|ajpO;؇>OK`()4-P
;<):<Wmb;6).31SܐX۽~UsNzGPw|עx:h	S_q5SUٺًqnRz䫩๵6
x\hɴМ t2']m+}~t\x(+< W$SpfHUA5A6F]tTurh\[g!U8Arr/%'_V,/iD>G# \
nXu\G9ۣ 1@: D9:1\!.]|{Z0pI7XQwS	
*L=dJUup'Kg;Ws87~r9 p_Rز~ټ-nu!=4W|1U[׏߆n=1)*0qAO3?,sz:gi1*1xaQ*8&L4oGS8Ө@%A<6_ܔUBu):Rjv>=XG?p8$+*7:B.Eͪ*C[>"_LpwdSm*efik O≽.,{RcJ[u|U_eN 6>Ųb8e*u	ǈ٦Jlq
]7c)QUM#IG V%	;wWWs k^H\2!)܇z`5XWC{Uu:KƯާ%}mIN	ASsA;u`,hZL}E
0PկeFs,˒^ŵD9CvV.U]h9:d/;pGIY~.TZZGyf/	>xT[(7mcjLlNs㬬Si:y͜So
$wy˸ud˂.{ɕ%$/cۣA}4AyWǸvk~?![67{qtn:I˴d?3/xpaT֝Aۆ]F(>^E.&݉ADƩ'1FA0?G缝l2KI鲛?]!Aɭ!:+YU]
nBR$-Σe,rAKt:rVg)h,iGHRM'Lu`kidҫI!,z#WcVGZ,J#UMNx;9?,*\RUw=<:øa?JwqR&
WMK,}tATPה}Z,?!ȏny8RɮFw')X\9#1T]gUI<%=_S/rp<ۢvQ; rt2W
O}1s >?v,ozgg5Zt<ZE?dSny@qkf&pE[Г8<ON?GQi
}rxhoa-5*^sx/sIJוkLLm|g'ٝ>;E?.MRģH{phGOu(|Wu@ANEjr{''NtJ?
a	ŵDm佑H'E8X6WDY!wX,:igvFyf\wUbq!"<:;A|i"@?F38:c^uR MS{`g>X}xJbYݧ}MQgNښ+	P{,s>-{$>1[
z*&Qtz"~/U &@I*\3pl	Lr:J(\˼aqW~ʛ}ϥXK[y:?4::h3UZ@
[S>к^`xD鷡\QE=of.zv8,i)܍͏/>3P?E'uxjG=c\\/ J4[lGDD+v q^++UwY<VP!@$4gy?@zC3|"+0^vA{MÃ,; 
q=~6"MQW|~rQ 'eVmE)ٮ].(U^.ls͐l
>IQKԡ']' , ݳ<%Dz	%x,sKP)z}Ds:'|(hE{9#Yi3qTO&h9O
ͫƐ!#|܂'S+1]8Gҕ^y]ӗK]ҋx6.u?jW {R(97tw@D:U4) rEE3
?^y_]-ߚ?䣄3(➅U,]ۈ:(L 49aT5JiuV{#үnV L+P;UkQ'סdZ_R47O6w Ó}Z< PiO&`&Կ9$77Ptf:N+W@X3P]#T0]9'St	ԃʈD)Vs|(}  Aqo	9;*ן.c|ۨL6g?m{0/jFteU19qRW\
d)"Twɏ߿z{lV#+mV}6h:ISձK{>`a[yhE谕qq4r鄅{DGȺ/77tn`
+hZ1Si8}xK2n6AYk,;l~#Cߧ BhMkjjڤ8p6M/?Bq.XPz)=2S pҼD9k{V!908^JW2i^:on)WyI*MvUOv-*wJ$weHѯ3HK3*r5l:Ng[Ȉ%cNOKsח	=SjǻY#$:b4n㺂l
Ǫ.ӝf
EmpoKx묵_
iufX@yǲ&\0oWw1Q{Z$%E} &NI* )s}~-ԝmA=IbPD&;	
\z;|Lzq`̆>#G_{Ur`?PcUИ^c33Zco!A=wTv$ q S,?m7Pաs
''RPl@4H$dLAU
cWͅ>-0]dQ+Uǣ/5~r]sbmÛ#o5 ߼C=?F3*#˃rrz~Y3A
y(yr`+Hw
9tݑ[vf+wٵYxǫH7I'oH|j8SZ-8*q69Fu@]=Y>1q"!茍Gk\Q3ٹ
gXJ&Ĵm@klXC4`ID$?iԥŭ.lR<y6 .tֱDΡ*QvF{(۬O Ȓي۪:aPB{- yܗϠV:'sD3p.f<-{TvADyz |jqMSGsNk.TvUfB6Ը C!ħ㉑.'FlF^ut}ĳ]8tnar?m.$nC_T P})/0p[tDqtw&/0RKm{=op!_r'rNG3qd6)fZmJf*ċX[~&QbmڮoQm.\C5BVB7COS=n`"s>[;
]!\[`IG:ßۨ
YrǚzW־E}f%8zd$cpŸOZvte#Fh#8f[Ix5"a5QUge4-` ۏi,?YMo</UJ߰ء8mY<\{v
@$HuȚԨvQ;E6^⭫	 q]kmwzOD&(5ƿZ#sLE{] $`_#UWe/~G<s^BxPCoR9e)6?5QF,{Նi|yg`9oRKR}TDT
8tx	Wu%HVvVxS5?]#!uThT3
>({Lu0LUV!nEߟ=3qؘļ$c9 IJZ\J82~7E9\ǻeǲZpKhBu]*VͺYPP[lŲ?vR-:Sަ>էҽ=O-М}SY][t~PB` SJ$~<B'oO4(~>MF#9fu#<5
ऊ9ϖ9+JēWR@˥3X:4*	k049;h/veKZ2[LҽtIbeS=ӷ/^I#buZhBD.=ڥG$ZŴ`-GŚSN
QQT}%
D|idk%
&O\SPI%B>-q˱[9C_e];q\WI2]^!hF!
gr'`Mke?݅xN*'GOs_8?̿Y-ϒ +(ll1tdBr~MsYyOngmtWg)7%SG9Ӂx;1Jtu%	 5o@5N8
Vrxi$yвoffh5sQPP0s%);pLB"MjW.7NNH%޴a[Ufzx0+)=?iu^'9L?]8@/}Tױ;<t
 *mtuoMTj}_B\R8~hWw?@w[z}ϙ+a@ Rz[\ !+z|̿ݕ}Akvhay?OU&)'K5wqDmhn=<6@I0TRw7MVAXΖ)5H%継ӗ*v3,w{a@ҧߩ96/ίsLʮvNe	Iq[=-jpsڟ9{AߛM$BD uUWվVV8iφ&ηr-T Ew /O$){gk~`:,ę(<V-GD@&7M*!zZ1TT~`8F8f.9_%D$4aj_hBXړFmRMO5x=\9x|W!L"[(<TyQۚGh)}*]!⢐p _87BZMonEhٺ}@UϦ!r7NhY|¡[jl!V^2iMu2*@JoZJEnE#<5o2i
lfv$Fx꧶Lj68&ě:!nl
sFRE8y$Vg95$-"&1­iUHNN?|.VMۦ*;NctN^}B	OaE<y" gr]|j!06ٖ^g"D9{sp 5ѪQz&$2e~
0^O;g]+j\`%51ԇ)+j=y8:wN\aYW9`
^EVn@*Vj{Tw8]NG{
N#9Ĥ/܊Wp+o5K#TaM3@AD]cԥI{.0Iq)Gʹ}9[)" ]|M秫CD*186˛H৓j<
.׼y]:sfpgU2' THmR*\VzSc(ƮY\kਨAz85a<JH։iP̏RCU 3߾ǫ;)?`GGpX>sQX(84T}A78ز (Q?淽5hO9P>]aMm_
И:
]^
kHGQ0j>h*7@A^|.P% u/:8ZڬniSp{SbM8@)xj,MH2	$voX|%N"BWaE MZ"'*_Atԑ*˛xi2eyUԐ4NnK5ku0V
YKT|UݔwGG~Ma;ޓEuOBь4Bʈ2f{C)g$]o0C̓Fu?*0i͟V}:{=s^ӀWB&[w]GJGTP§
|W
ҪU*>t<v+9q$PS;5kc M5OFFt7.ĳ\+ΡL6ȂفpH<Zqp7~dM(txt&*n#c,UB}ŜĀm/^hO'N;-	EnX,ղ#@UAO>U'kvzC|:Vox!J-Q"۫O'@wQqM!	>޲
.^|j3sZY.VDLV+2mmH;o
8zҫ:ts>^3(`\j/ͳ{ʯ)$ץه&sx̰JO.3o,+%`'85,~s=Hd#9nmUʩШXk /YvE3cvE|9
͉7(YWnBV>V<{zVM.<ӓϨX[5,BS^9lC:{|p0};S.z;^ͭI:YK'4햁ܵV`hn,qԬDU~ӮiMJ\Qɏ$(OrwF1nn, g㷜UMVwְtt)e0Myp$C?
ѕk%lGWYk>meN=ډ qB6]׆;pf?>ި*IWό;"xDpӵz^W[~3GPXtx;{!){$lB	.eZ'gn蕕t6A:vӏTM.SkPU Zf,:W?sm?/7Ծ@Y~7ѶnuL36x Dp3ә.?ĈM7弄K3cq"G_[<]GAW.B>me0oʎzIG(h]ow`O~Z_yåbKGSr|$%!lMVW@
T^}KPP9kb%өqÃ}0adѥfPj̅=8 ߷eJ`iͩsQOLɪq 0~k hunSچ`BULv Ptfm!ȚG^e~Iz-P>rHGf\UpdEVղ
q!{{US2%_
 1CUrhFˮꉍ
<(&w>xXnkkVJٸeo
Pu}E6sV>UhuLaH'q5vGrնf˜yVS?ˡh^\fZp:̛i+j6WsЪe׾a>$>>W"r]
@
b꾚bp:cņ
DέRq<KLCrn@tSIo*h:%(~k~c>e5[>)
>vr3nN/wk71n	n^[3kxL+y"n0͞H-/x/y,5,oG,/]=%nux(l<p˚صðG){x[yxƳ p_ Wـoֲ4o(skϨ]LȾkewm9qMZq=>hQ/Z.~>e/NNoMhΗ7`M?zf4_\oSMg =xUǷ]T/'9缈::R xyMM f&pIQwXpEGo$ѡ[Z
 =tV{
xDu* Fq\|5hA4׈R2'Li:*!|H@]Ϝ]KU",,zVZ~~90ڨnQ,*8)"<gRBA`vSpQ0ZN#cO.	n3
^&R$QiVtOb_YK#u]mRͣ5<oEǦMG	<T-
?
{$/ǋ.;CUbblrh$KlnSt&Z
h2\?qㅪA˭'Y^0qε/A%x/jkYos,ɺQ߂>1~6Q	,+
J<Fٽ?(4p6NJuF=otܤ.+?QE6-ėxQXj*͕](Oʲ~y}ɞTd$*Y#BbRuc:뇋& :?8l	F 9
C>G*$R05+$@*\IMoAw@^)7O9e<RA_g}7˞&f
yÞ^Ӧ#S});s!Dd
W׋ 5=a:MI\5cF	#(ZZsYEz-d2MU {EFi,8ێF|T$ݾJǦbv$v1?@4@ѻOOUy
ɥme!\<|,`=t댋8b\MKǉh{FZz{ߔ*:dUi>+H<BeTSgJ(TJ]PP
Go/06
d'M|5E[Q٠n.:f$$puV46!^ p^YU.UnNԺ E$qa`_5 yv?ԥ	Y7m0ǎ&4.]Q2%T\[@QO؏
!څoGl-]BUumf'pЫX7Z}Sn]oert	Oȑ#G/rW!q֥VJr?#䋪Ibݖ/g=M}qNq,뒊[5 4WR#ӢlQ mW&	P#G+W@7ޘ KtS9QGZ|59@?ij-?Ϥ5@PVN!{uBXr=M'D$A.*,d
n^E
ll?$BDIxU2C:9ME posDec$>#̝k x*fSsqZ6TM~
.qePі&"su]֯/i
Nja{ V7YԄ^iS{gt\R
3u<= jݒ7
v%|~~u29q,FtKؒGȦ+NTiRH*M+
قc18 Ż֝NMPTY ITqTo-""n> VZN([WQ9YsRg!~3D6y:Y\5v9
VXe+8s³YJ]
g¹ۂ6_`ME4tH)ݕ'FHHV'0i4
x_(>/??Xpdv5TO)ǻs'v*PAY* ң) l:q< MOJMpab7ˣnܩ',NN$X o=s9T2|o4MlII*AӞ%\RT
LҧX~oEorԝR-ӻŖ];$D0A$ۏb}H,7*
U.:ѸZєȽb(5Q|XIago$|3;# .>\Ү:CTC%]vzٌ
_M^xY^ݲ{ڛyKIQ1]	Ǚ壟N?B.IU{;4Q2{Z
q/9TOzrM1կ?vl2$ܙIok*-MO2)upMjoU4 :6G@v(1Bay|!sz=LMiS<en]	VJzRӝV3\sZA^6<p9&UϾtDT濸"Xڹ&eӊ)ѕӼxNoA㣊Q.kYaUeL󷽠|06i6@@חJ}{IҲ Gjn9gwQpW`}6+3na|vak<ˍ fZ_Ї^x_AjkHh$NW^O>:GT*ͷn";1,L㔹{w\~Sc8¯Vz7AX)q]Sd.QVl%\@\h@`fk#yJK"ԧE~gtG6-2MwKO:4A,:*}ZKxq۔teۧq0Ȱ%n:4fuTYQZH]U{iAwaYmiF.zpMC$߭X$AOMo_}7[/%ؒSy2z,"aӅʷ&9vE,{}ju;Q&iI6wn|sY"h
\|Q|Qļ`]E;dt8#' OF {JHz_U4o8\@1>`bN-˫<!mϰ@	nbaƁ$mOKꂐ
mظ(e`H0^@\Q#Xg^[͈\%jQ*9}Gi/&:z'MwN$ /;=vxW]$
GiR f	SOq	s]{ <n`Ҁv$Q7ޖ8phgڅrQvw46~?+p^o3V\y5r-)&aK{!nOPs9ۯ:NoqA\Z*{fli
 	_J#[=.T#TK% }[ć*ǕA>'j:mʘegM(DZNgejs8Rr>
He8SSo<o+vs**qds TI};{6q4|՜ SY!4pkˣpp'尓)ah@<9CKF~+?gZ7
99u{!W3X
z؎UaV6MF[&g\wMlH~&EN|tA8* !|	R?>]!L^Q놧mt.mqɨKTLJ:rW7@}|4k~e6at{+9	հ
r:1׃:q,}_w+9+lv ԠZ7NY7X
H9du,wOR&%sn˾fr=VQ07i*
TN:=xdo9淁@3-	WLJC@mxhD鄧Ixe/Գs/\Vr5Xo-D:'Tf~ЄfݘO0g:[Erg j.F,d Un:N<ܭj?ٯ<׿9ǭ'~`un0lUgq=i
)T0/eM0d"@ maW88}^)LSBϮ._jT'^lg.ڏ*	eu/k2
Cj$r4uvg%آV\ik[G"ڼfĵ"hVe	FaCN7`,^GAjxt%D0I$-0Yh7j{k|ꂪN' Y羻8ѯLCUvK5O?Aoy|˺u ,I?>¬/*Inϩ-9B"VA$26nZ>8?Mu"To,Ӝv([=[nBpo8k)Rk4 xؗku6U!d9*ո#ϯq:&oZgr/9rі(h)tjV~*X,]_NHgom%\4m`|[rT·N%I;,[U-|}EouJ.(~Ȋ9AN%Z}JoqȚԸKUyJß/F5wXn@8}v'Z(
d)DUh	jCcjUй_s[y,{'߶sbH\AXF)lv=m7z囌3^2C&)\ԋV 9`ǚ+IeԲo.7x- CnZ^ۡt"յWo:}O U^~Uug_cL#Ɓ$!Hb#X$!5I^$4* è忶_y9ۣ.Te19ۓ]ž_<Ba$>v|CgYJXoX:K^YS/iO<tL S#S#כNz\ߝdέ@2qtq;?31[i!_XV. 傄]bqҺwHS'XSsH
:n<[vl-.^o. @:TykeZT

-1fqqK;s}1gQ8N<[o¤fvuUņ `r Ij3]@U᢭߈ݦ7h-LUrX~~>|!ZPya7o4f<h^EW*
]+L%qRH4*cyGbzN/͗Ԧ7PHyCs_#8U^gU+؄p.M˥DUm83o)EL9[QB*]&0{K-bSNmÙy1=شDYRp:*@peh{r轨qQ%OCF:AsB3"2?-iO@}̀W$c4#/Uj2Gƌv=xX8D]>1<\<LvR*}
w-,7K\BMoU< !?L5wWNh(9۳EnAG:MIg^9'lI
ΰΨK<e#M@:?mO4v}8EW8j,C!b7_wo9~')`,FVT)Z
궡.|$&@Y/VPe
Pb8N][S&9j:u滃)Z~|W:_Ⱂv8n<hr={п%-3gEuttM[my;7*+{!WKU9#YvN?7qF I~krHJ7$g;0>c:LxyZYug}qb' =~ŘmN8aNt(3gV@Z[+XF}\RuD:VlN,ѷ*K
m]sWCʺI߱<Ry~y-ɡVmQ:O	yˮ8@ |ǭ]sX)}чt<
UF->|׃="˵&$lpvnx?m-T/紟BBҐ >נڽ&ɗX;)ǪNP&B@bqӴdN&J:(O%"gxg')O_%f>;!6UA'vq4t;%i7?)DRI^ǆG+IJU:8R`~pV4ᮂ1$W n
`+ē6zMIuS.M3T/:.7<8]k8_k\ڶ~IdX/*̃p`f뫮͞_~i&;9
4,pi J<G=KП+טTGd9(A( ^\Nda-!N jaE֖9*'#5Ѱ9ܬATsV#~fgƩv%} Jqhgt,a[SA.̥up-;*;ynow"sGyWD;
	-@Tv;v#X'}bpsC^!_> gkQX8>)JB^0zO>p-R}GVڱ'\f;,q9@u9$˩y:(ɮ n;r*zj箹4iZ5g<:y:fz[WтGsSJg Y#|czͻz7L2Dv.ig]GNE柬Bv=<68t噹SNEE929Q"}nZ[&?`]nK'MzlS1}@~Dwn+7<U	kʘʂ	r34>*yꖺ(@:X!;AnN^d(A
]Vĕlep@6lB*\jzRo[ߠ}攂Ry
$<f#6C8p{R$E~5ZdqT`$ܴAa}: 
j՝[ i:ut6cma567xyLD)m̃j~$<4N#wK6:,v^nә#y'tkwizTFKz4'T?!s`lqv'3]CPj;tx0|Bƞy^78=mkQ1@aచsU['Kz>mN4q+øUr;
:'v5栮~}s.m≽]t~#+kP]n<KHU4
̒t]|pUQ9c7^I9 WV_1pMcXdZ9Ӟ9\-U ;'7-Q%EeV1uٲh0)'~e!I4ܤy iH[p{]=G[s߷E%d"O_*(v'F޸z]OVqc+"8Ac:)F
BvG`ۑ؝QUIé}ttɏwv/	@יZC9JKd| ӂb\u
D8rJ(F7.R[MRlwfz~lB|TY]+JSq nټ!9ʼڥk[b4&Okv܎i@J_ڊpKO҆Y#|m\SA/y6<Xz毨jI[ŶxDoMפy_D }s+"xh:N*Qz_8//UL
HCmC=;kL\K6,}\GӋBKNQI Qˢd[C
(Y(Kdb
v;jfbaCGPs.9KQWSTg	P6 +xkYwBvg䄐
t{H\p/!IPH  H]vr%SO[ z "*}97OBwZ0[ڥ;ZoQE@
iNh]ZP7p1~~s
~|\IOf)híRtN7+[zapYel!5++LzqqV{9~_<6Vbx;{BK9߯]K\GcDvNoa"Ux鵘ݣ2BA͕5TT&mv\;v^u{pc(<Qi_Tɍ758w"ӽ>g/-4;"vo|kNŅguSpv@8Hk;%	B+vZED; U\rairGz Gv_}wdoR9nv!h6Z^SCCjI0eJrFݫր]{r֜YA=PGD4murǱ{G}dK~jmkWÏse{Xu 14w|֕UFr}ܨhB'&9O&S`R-

	&j(lp@iChF"o9pw%#;-'t-wԻWiRa 'v_{+Daꚹ0FWVW,FBv07T\Сj)]uix"o9SWG@W5LTКHҪXWuBɬ6>wN |
 kDUmX~heZק91߾qއVݡ䶕XTqtA֯Q}>}3?;
m!/OJ{daĉ<Qhΐ8TWp4>v9<Gf&D[.|;/JL+/YK*\Ӳ&9OrG'	HOaZfhۥH#N\[~#|ߡT*
tڈY7Iz;xm{/zaJ*KF.I\{`n#k`:lMWA}H n{N=댺ّ~lr0Q|fH?w<a˴\ġwVS
A<U0hcIt;E+:=%Pwqp9ڔ<Y}6ϡZWOQM8@Wh9
Y+;]J_0,keC)=FI㽀:v:_cs~' Y];Om^k>:_'p\Cwx97!lփ d<xؐ}!ZC=9wsw -Uo-kT+JZz\\YqVᇬ䈝VyD]v]vpWKɖ \ب7lםnSR?xN%1	$-]# 
8Ԫk!U3c%P,ϩGI>5"$:lޅ]_aӏ>W\im!MӚƅqu,dJNq	?[xͺ Y*&;}1$el`'k@E1#tC^M/Avr@.u+G~7>8
ᚒ'PMB\sf(}!@RTj:u'~Kc6.
^Mvt}O̢	@я绣,p+4"(bqpj:	״ -Ns_4}~1@3$sG90	a*ȁ|1vbܴ>ͩ9{CnMsR\?\x:v5Ʌ6Ў֏)ۚ#{zL^%l{]^Z{_	(KŅa"mE=c#c`GEu-.@zˀ\Do5 rI
Wm^%9A-wUℷ_rJ\ZL9ʭn \׼+SßʞPrt*I]Ix2x¬".xݖ5uƵh;#׷-ӏ:N]yg kG-.`j1'S:?!ҍ(!86GdykyQg	|Vg˰Lwq'T ?HmrXGrzR4:j<mya陔I8T]o*R{Q̬l|OwgqVx7%BPsJWY79UYA
HReDuvP*s':v?|`ce@Eq#}%lV$Nh;^W` B3-nM2'v8-;5W mc(=pi`SN
8i@s x6.}	;6`ty8uHȕ~DSCg/TYNERߎ"lg\
!N
L['PuNdy6Cg]N]V2.
2¾a
yq8&ui&0w̟٨h3txƎ7)U楈r
`p[_u?m!X9G*h
 
l;^|t96mIbۚ
.5v(<Bab.꘧_ZgL7p:T]u.MN%&)1q}|m*Gϥf A˥_n?UU_| Ao>	w]KDÝu$uh %y6Wy,J*7ﻒQԨa7p[n@D9^A-^wto[CW2VRw?+/F^FpxѤbe*ź	Zj(WD*kGo? hWa|RH.2,8<ݲbfa)z>!C<'7xICsΞ,ʈJ]MS+Ab<p`H\W_ H{|@Tlo \NPӿ
ӱ-x.IGGNNzNeo.t;d%Ǹs8%jcXaѐ&쫃ڦqTy%I|eβz ?$YdU	;j
 Y(~Y%MQB!&;Ej'|a pm䷸ʓ.d-858ൾWV$EuxAA4-ߏЉ6q7Z2Ǝp!eF]k@z?S:ދzSIll6)?U.怓cj>q6[dܖJe{Qv-џ) jmE7YGlbj<-wD\>}614qC59Ψ6ݻ!]><JᴩZ de	(oM;^/	^ڴ/p'W]NHDNK}G<FcerzIcQTɍ]a4Eo9F1y#|9-$by@aG헞Qkxs6uooo"4t5<%8[g?OpVHDz;b{''[Do,5>EG&[YB5Har"K6 O5t?g:7*mv:n\1}F,?8󭴞&mb0F\va
bv^)<dKG1>dyܼ3AWb7eeЁ	Zwr&VмGP|8RK.rܠ9\ݖ]Fy	lj>EьR?lN{dgAT7PN=%'c\V+]o`
0l.ǃh&JU.݀i.*q#p9ˑ҈Bއm^S+mJް%q*TZ#`7ئ)r{7TXM @)ˁXNJH/9lCq& H`0zSmCzw	grr P4{M]ȷ$+V{	]I󝵡/./zkŽr; J<Ѿq G:Ζ'bUP1I.KK=}|ޖ5fkQyEo5,00cyjSJ2~Zl)x(RC7kqlk^Sy?~ѓgzGEFШ*Z\Sђu<hx6Vʪk`^ ӍLH>'+M:g71#QAދ[Rxz2crs8=qbSY"/91\G읕{ FDKS+5D7W0%	x<KcRnM|2oW_ER!u1(V?cx^nq\B-v`V0duX&NhE*]#Ӻӓws\)\y?}##66pAѤ
OwQaj*RFf"6Mu(!Q{*)=Sy<|Nʡk	\q;:gyz?ۋ.&	&=Z3zqܖeҽh^tBNnEE@ugH=g6|`Rzc㐳JD^%x5p$^W)V[K# mJ::C"mʇp{bguԩlh7/M@!Xpϧ*o!өF{.&]$q8kN[x3z؀
¦L	N3AQpY+qx|W!!
palÈ"~=~	P!vY:0:bUǝnM0&1G:sg0OU97un}"FsS/cvRM
7HChݖpu=UQ(azY]TcLT4zʍT^&xXg\-X 9Ӛ+y'\,ˎ%ȭe§\\+)odsyﾞu?Y)MAu̝X}5b|=(sFYT>+E+BfǼ?B_tm
UJ(kZ; U&PxćWE'$kנ4嬘?7 ['oD7}Ļj/y^5i/8fY8"ɽG3EKVZR[QO2&Yq(f&i&*,5(RSxZ?`

[v|rj=5KOjvA~VZн+5QN%P4$u31\vZI#}bR'y8#PG?a9@m	}GogKkd' nUSY'8#aZR%vv0t^I6	90䛫pr	Zf$ef/!yJH=rOMPkҊ~ޒ+xm*G0ʻ@P0b_H$ځ(> k8ڳY!NU.4SA8 wMA3<:?8 ԕA[[sw֣vh xIE:tJA$m?Yxmuk`:KxH4u*.k@dp9۴w| 
pqPtUk{ |X]츝ޝ.
<b+yAxuy(5Nmp}.As@vUSҬPSC'*;ѥ:6CUJl⢺/s-~o%M[	8:'߭
ZDǔdYŮJo0"'{#Ӷ͋7 ƹG?HPM7@FiOSH!]9q	+r9z?芶ݼ-C6Έ1"TKKS VLq$m@)JyW3.W63WuzUD:Th0՛l*G Me95iyKZg)qRv^wu	5nc}W,sU i˕*qXR:ħ߭LPԵu nmAl6j8E$ϲak-cs=cw a8/ѶnU;|L겷#Tie,Y&Kye}RwQ	罝$y+ku-,_{D."CN܄S	5/؀^7!wp&N%٣ T|.luS`JK$c!#%Ng˕U0Tw{:H>~e˴Vݹ=_,mN;=÷BRD%gԻ8Wێ
q\z&DT\،06/QOav=@WI.eSh,/ U
RATu6Gm~IJTuե\ˣ1G\HjeIWɮA
s׸h+1d?-EPDV6=()f\%T6ܒ<0iT:AglfFyJN?&N_7_dڭ
(-, t=(jzO^Z
A9Dtl*ص^/Azb+w2Fw=!GGU6+K_TaB]+z|Rt5#`JEg!0NyJ,tknIݽlnG"ڕ(O:fcS19у
hi5WQXI/|A_,gA˽ 7I{uoRh}~t
|~!>-<N."A("_-_g} ȕSW2sDDzQ<t.un[,8}:AJj|xD$:"gJ~YΈ_-+_(
j})YIncJv\/Lс J!'Q\Hz~{Qgs<<>M)C0@Of+.*|xBQ:;AQ% rO{Ls)|
iߣ`)* nw#IT&U##~IP&H$[P^.a*uY<۪CzCu!k!kʷAJZUTWn^oti<kB"%Ө յs̭h?s*I>&Eêr*_/j D]&K.' JYBRiDz4\Q#z,dZ
VPNlvgj~I=#HϹﱁ>5kME}eq7!I~a_Kqm Y$T
 T8,C4ֿ+R SUvjgY@#TN}Ju)Qkǟ4(_P{LU4r~be<v#G>;yu~D%E:a%4!nXLr-V~AktT[<EfR*MN3_1*u%B55\xՏë@*h!%}1Rrt6_>rt߰Rܛw(TG &mMIkb.Ƒy\gs4]or*	&.rѲ ¹/tsBa</Y /Pi@h<D|#^xgDfӍlswd_˅\e _R[p%gLRWקGl'~c.0TPR螺to.
@0;Y&³}cTpt2Zǽ-!FԪGʽ$4gw'zJ|<2[voFnXx|l\"j-!ECB'Q˜vиzG.~'ieDލآޅB!L,% f?5R%{R,4}yOna04UZUHs[H{k3ʽTQM7n}2JeK@~nO֍2N[AexkbOl>ykLcd`P2,*M)n>NgY3
ou}^(G'Y<$E]l~7"np%}Fq#7DYqVA7`agpJ }c.;TA\
5+UrZ2Q~YpTTGj3B*8Zo곡NcI(T_9J&WBpjAky`V_񻆦&j9S{it^v5ՙa.Hʮ,Q=9o~a2쏼tį3
}ؗX0s8r;^_hLK:}u0޷cRKƟ GKR=oA- 4](ȑT(ćUG>?m O`$mwNm
@U([	Jvݜݫ)q_E/Ԋ0ܖb ke<8EeTNZ\.M2N!÷{R.4^r>zopE\	kT\AqBQ씛uۮ'0tsTDt[kķMnY5J2\G*>wQ=p⩲qRХyW$5ɝVJMZl'T^%"p%>/Nw ?'gz)3knP@ͩS!׭C=DsR.φgNj`Ͳf&:x_}}b8?ʾ;WxxꓭGAn"9&@,Tm}V!=9ߵgiNe=:r_t[,Zxy$.ho<rj>
(la'In+u5+@rO=5F|b3$UϿB,[ hs94JY2bۡMnW"i5Q	 ez>+|'D`IwrUW~L]oy6Agm25IzuU|iߗε7ߵk\a[xE?
g
(0^NBYYG6-.R*+N
ȑy+fu4`D0 n>T0s47By00\&^TPPY#2h$/Ց
rIM<ok9BW	G]792Nmv!$0jVGqC1Ѧ=xG78(s	D$5"g4XÙ,N&m];慄)f>|9v@}m{ZkrRtI>ggJ.?-u!'UGi#凿8/Mݦeޥq+3ܾ>1硺{dǆ%d
Uȋ*>>T78weͲ!d;d;9>p0jCh`
l>lKXὛ䖋v4}N[xgڴ|8Z9<]PA&UDJNSĽ}JBWRƂy&4TU5ONrIl7+[dwvzO`|+0EbY{\͊{:7yyjh_
ip0"Y
MVǪbp&2!mGBL8WGQ9VN4+DOYz1b n`ƻ%U1;RwKZcs~~9wS
ێyڕjlsVkIMD-p:Q'+հsoezcf_gf{GvLGQd+9ݪKSJY3w 0i2\N \45֝-[|irMa_Vq	HϿ'yϋ_SH09D]sb\l(;3hkA!ː^WVEʶ}NUAXʐʯm?W=Y7NUCf*g
SQa:stk/[%MQT\Bŷn
n݆@l$M䝲omN/H,Y۝c]zT - i~W=[*qcQ>BSH/q0U|$D4O^!xt :-"_^1h*44z&O537y,G>v~ZTN	{գz)-@:^]{m9bo|Nnԁ	~cO+q<Gn*q?	ɥX_=2 V`JфOb:\}IVi'*s:zzmqZM9]H 
;1 QMn&ūlp~TKtl(RǿL/$v:N=4er-tZ*q-	;N^;N_/TߥQ˄fͨWEOKMa1مm=݊M6E9z&8ޡWJsGspu[K)Qu 2ݛc
؀nGv#?JN
U U`˫p9 ,rEf^\Rc/Zn
_l`nimSpml"\9(7~{۪}Nޟn3AJ60_w\5q=-gʋe~ۥ^ࢗMmgqpnIkc52O&}%ߏ'ZG{t:=gn!WMxQ<HEF@+n{Z^[u+4է(==l!/d7<nB:l	ƌ5|7R?6
?;*=Ҥ戞J^_'c
/b:4?, }\d5Cfd /ξt:t
/m>yqռ֝W>_T?EHpgJx@'U򙱩N3΢^Js{n9AO1NWSQ&;˙m U9:j@N·8Zވ+iՋn`hw}9$(12J0!CήY^L|\0"$hk:F"%9u%%wrUG:0D [:Mzc{
Rg:	i	*P^7(ڹU̷N2cQWEZy
mz׹8O<OIm`@
Q/Jΰ7I ^7#3Rk
&y6<庸/$Eirt]\K8	uei]{#Bv)Z0 ͧ9"r{jjTi>miYdq'Hȟ2yuzFv9[dA.5^kuf"B
ǉ@
_ׅ'oM:nܺē\zo#~I'Mr];{9Dc=KEpAe^[>&Ipj?Ft#A$W-aM_'	Yk9]0V']zIV%Lm`fJ	~Jgh5j *$88PǛ54S Bz Z H@scv!il%7֐*6<R]V~Q9e
b;
O:p`o!uˀB !a=b)>:D@*898޼]thBU-f x׬%o}Vu(fF)
ҳ
HOUtNHUTS*Z| CKZl]\KnTD,H}<7 T/fl1(W1G==yXTS#r>3W4E  !X+p> ZGY^#©<Kj)Vffb*fLKūXOhKwqduE722&S-K|N[,9Ssbp*|7Z"n>7hmRN?lkF2ҕL;JӐj{SANznQ]c[L'sئ^r<S53Wn6@_"
SOءG%)%xU'zf/ioO#ߢ)M1bVT/v6XLO25S#K(ͮ]d٢M-ߓ*YN*
zUdrTL'ٛ6m?Ҽt`:]űzM A[AEMȦ˻z]:tbNc>灒j=U$	 >/G$uK,{|ۯ5CU]d}D45]	)_HʣUxZyxU;3h:/'Xj-|EzjMR@MG-R@;n9B2|>nE%_9z#y{+a֦sh~19$ᘧ)""'WKe!)] &d%o*"KZNgrY%e?BȞ-+	XѤjYp(iiV.M4	~Ƽ
趣  [OPP?fͩSE?%Nn @BRڣSBQ.LXWjҧ{uN0$zi{XE:N/1 mlȰ	tz=QgD6wqHJj?>4,h8}OwSXDsf3JJ-,Ufݏ} HvW4 y_u
BDYiHyo"`T]<KG5U-
)&8j.E _
j//-~	O!sjN@d
/=׸Zz?
ϭ=X
<xyN"ՠW**']DV{Tk3\: goPu$ݔpdޠyqy-7.!gN]H˭#B?K7<UA#=jk8@M9'~lk$]VdD]ןG.Jշ[7	ǲO7@@Jw˶D|,-kbuw;K"=r8 Hb!$碃
`:B,CG&@(ũo>3V*g cDd7	X|iq؟$h%ⶩWMtU\32P!7w(/_Wi*r'	Q?ae-V.ڵO,XɇF]wGϚM;9%%[< =˺ae'ъIC@!ıT7+<*Wﶃ#oLЖQsX\YG` ס%qhͮ[>mʂ~{ggV$~-$193]C9P0+
Ҫi/u#DΣ&a ]85yf{Y?z$7!.
zQ4)-lgs^]u#/Lqo~nML';){oUЎ@=䌣j>}YFc؛Z*d-Zl8C}\T截t|yN8qQZՆx)wks>CRo"XpdEPX8U[tq8OX?;reд{4eK\S %{*A\-{;qSV#]6+P).vؖ̏MB1~:"Ŋ3+	{7?(}8>
oz?g.9i+ iHD)PI[b;)SK
My=" \.I LN
̚.{Ԑ;bU1oi͎l]v_cOtI@l@Oс˰mY[ߗq۔YA;g\9 ϷU^S	=)^p+c
j(GRL,$+Yr|_@#*_jluc$1˼i͎ѭtd6x_1]*
˙W`R20ž4I4ţzk2ЀziYv4SSy:/> OݲP+T8<Ios&4SbppƧ%(;f3#Ks NA>sNotTf:aflOMC@2K̄+߃13ǒ$"[ m<$\P[O=t89Hk~宊ːW/I/p'&k'D`D3<4ҵQ'A@LeTGyUݪΏhpFpǱ=5r
МKw4oGkoӒ╵c=y
J8UiD䧈'? {RSȣ8JL:[ꮀv
RuAdm<|_Dx͕l9ia]M2pdԍn^teʫ5*KEZ feP}r;>yb$ǒ3Wes]8z/U7U"c+H1AS{ҶOՎp׬2R,YP|?^tEśrZ'v{*Ϡ;At?&rqXgUoy9Dc1O5lb@)yͫ68B#ZۜxN┛UA"nJ׃@FdGˣI7'+R* 4'}<qhu++=s!`xK:[lœ3Nd5Nj\8:sсѩA3t;f~'1$Dڨ-e=v'5%PAX+'탙&ml
G0n>VD*w%x"}9PI
KH& 2XULw&0+,G ye|Px$표g5Brxsv[,VSGǙvn`I炈fpS]pۢwP J|9V]aipô9mA*׎1fr~~|{ǧad+<d/9E욲p2NGn޴d͸áDU#R8s!uC{%GA!v]m]4ތgSuddp<g?Z#JKUo/hIt]l5^)}
j{7/sP4CJj=6k!;GS;=`d͢hCN:R˵%y:ETNj\d2>Z{qxx*l:φkOKr&oB~:pG=jW'x/;!_w^j}:U+ f=U2piy2>ǌjkw5+lu^xE	oCVfkj@3H7zn0?-hu8`=V!NUrzǓv\k0ERX:8ydnT6֊%鸞R6;?Cw$BDXOL״M7]}>/9$Rn)(|a* nns<ݛ&)ZCy@O&"yǨ:T%)ԳptprzТ3IHBG C~gLPBgC/'2dY}OzuKxO<q'-!X9yi 2^
I}Ȧ^M24#!
|^M.Y2rzģrzg䂌-okB6K;Õ$߫pO}Tȗ+DRjqv` fނN\-ӏ:%g״Y:>P)xڀ0}}jr<AiG|ײ,<+TFP];3MCYAH#!Z0^#U*6hFؓP797ͪ6½1^rd|ۢǵܵ_.Ֆ-UosarB^@
y SSUr̂}w		W$"FY=X Lvm6h'zG'yd.0akk ekZyitX+EJ:܊0 o-9PfZn>LF§|c;ih=F&z t䩀_JgRm)zOp4MT ѮyCN.<*B1uXjeRqTWy_pU ;#P+U`'ti|X42-h{1W y9˒t. 6Aпӏr҉&;
f-68n5Vߦqϡz*|MT̚9<t#24ݟ>cUOn];8N:+|m&=0 F-FE`/̹OR«;s B.г_ Z+WU|E{>\ܛ;gxݸ	;5 :L/UQdnyp&

>Q)Z~^I;0("gY%0tMǾ !!MnSZPq>gǏ@T>ڦd
rt/1H8t+VU&Ձ*Ess^v:(W^uO`ZMx[aΥ*oTgYh25k֡],-oFUpd*q	ޚu9qJoz$:Rx,[=uVǥ<q'CWtL{DnYgl¿8@*l3x6:T0KpX"lKLW;*vtpL+aN״KԄ7_y7 zIގk-[sCS=8SVpp $z$anky59
/p~6D6
 'P_J&F[X$B{	Xtp~hyţlu$OgiN(^ 8Ù.Pp'hc՗J|$H
rMyQ-"\?몪I~+l:x
`OC!%A'AQF<VL !r*Rke{*KʯR `!GQ}Sd#>d-?P挾]O}R(=W`Re-%Q.?Xr-|b{COAf]} 3	U$g(WL+Ϝ^5
*m/Ovj|1EP1mW[8Cڿ(эWQ#N
W(;,^ sc~kqmM;\=sl?c)c.rx 0@
UX=AU8uKkDˢٙ߻+DM5tG]F!硊	
G_)kZQq+`l.tRs
=- .͍kȉ>YI\`irvǲ:K Wyq,4պ_3AzW .xצO`*SLpD|_wyGg@3kO N[;
WWU!;G"gn_+rZ&_!;'@39+x+IsqY%}3zI3.7,ƅ&RNTʿOP[1.EqwzMtG V>_[OoժLiCdu hm@Sڊ3;62ݹyRsD]zյb8Arn0.xⵃk+$-\j]Gp0WV4'.}{N[:ɓ_Ԍ% ĂFPKcty?;y^vmˮ64l
:v@0{o6ݗ+;q<x`]OvfRn\n{mpD/PhNnX-"pv^{vZoo~NW)g3,-y٧e}BT-+Tp(`[_tY$ɏsEb:ny̞ԀR ߨg
 [6bbWke;?i|<\E\lOؽv<uvP-<Zm4C1ŰѨVE[meg'ʧyZ͟w1=z(da^!:`_<i.]y8*4ꟾ>TkY|!9/$%E}$kاs;@4DG$WLJz6%Rkxi:ŭeQ7\g趃wTSqCNb/ܵ+Ռ\
"̀S5Ͼ	MuR|G m;:Cs>NBL}hJ>՞B4:#Ht gUsTUN#v	smVȠ3zSxy!r3=i1rȩebKXc8\vpuJ_uZAp qnrã;hwq;Xm:n8CpQE _:ɸ<d˧sa})r 3N?SoM,3l
eA :YiHZHO֝sY)DOPO9հ#)ιF6O	٬kSHr@3vDJzq*m+ OU ސ,xth^u2ՌwjD9;1?A%mhjC lW
ӗSuRI_i^+T<W~l~)7WJNj~ *@{EFt!%+y8~B(KŚ/Rz,-{ӊ\<s#0-@x<ju=J=,NiLK1
yMF{K 'd@ɓ3R;݄`GRWAP>jB.+9(<}2ΈUU/v+uNy7)+ު&8d$XLC)gvnr+
{yVb_rc&hdr^;i>5XwG¯)WAns8[juk6IGInCXڴ};kE`t;k0> 0t4S : F]>|].j#N)	Ňx|p]5_Vm^ CS%B
V84 E@.*Qrԗ'HrH$%GnOgjWnY%/u~ 3A>` aҚR
a9jiE$/{A+߄eEhzjY$;dGЧ}
4s^eu<PE}Ϟ.>'&C1*p8 n^-YZA;\-+̓2cze@Q`RuL

ΞHYRV[NHơ@ "_sX7^	7GFoAp=RUSWX\jash-&hh~=v #*⟙*K4+kU<r!(>G#4/:DZ{
9OZqM_3V0槨'9:7=_g[9B0;:F%#1.h"&ѻ,M<rKm [}]t8{
W`78>ř48SO_bH}X9h\ۢA(n/RAh_Qg(A_Vm0|W8wsp'X5=H
Jq l` {+Ͽ[=qeÙ[ַs~^డV<p)(>@DX
wI+!8sıW9Z]/KɄI9rʭC~4j*ۭx"ZhUz&pa;px)M;-c˝
 S!䁖;$fͺcYЅ̜&gQ$~ޭ66d:@	F-v:df}#Q
	QdGUsb5]~7>-n'wbt5N%<XMX"c9Fۡ0KA~=`\σS݄
4Yܰd!~	sz]I$nU&#p\=ѵWaĿ#qtEr:1{*yu~*65Ap&DL!upP}^6. IaIH##Vx>fǎy}YcO/+ϊ6cv%U=ű$y)͘0YΞa}+#-NU;rG8Ѯr
Y318S%ǁzy4Wm5J'WY?X`^
YdiS٪{Ŗ
5z7a;Vy	Liq%
rJpjNhsShS>5N/]RQv(ZUrb$qPfU#G("x
hcw<t:~V$Y[>)J38Xec%:*wc@p/؈pY
NGߢa{ЀQ[Ǚ^B7o(LžWּR&M>Uvfk8 V![Pq>s>v
JJ_:FⰓ:ʅRvm9pނ'ȳLUri4?^sw.G^6gf	"w7

[OWf7,SI""$$1GWp"	ܱTu)>+v-QBjq>VYYMG9ԳEs{G'p@V+t4p	XjYb]N<B}DަtS<o\^UqPSGSh8%߹:r}wYC
b齻]꽪m2LB/`ͳ.|g][=i˷D`52@buiG"l=xڞI^.M3`6 \n!k-s`Vжij@u M88gȱU+tZ-TBn3w*^5nN,,Q9w7z-BkV
|qTBmG4lyo۫GyW~_d/}I9~~׹; U͑&p?ط6clExl9$~ȣ롬۠"-'cpibiefUI
$vje <KqMPA`,а8TsH@Q㬬{sPA_9hpeK󫺥Z( 񀃆M;_Q.8iBԂYc&%1}0ɪVE<ҰKl:~,]hV C=qn~~i
$IrXSlrU PA|iWGG'-U!{pȩt}#]u
5@h[3~wKG].AlJ@sDO3sZBA3;nE9<Bշ6 OyH6:!hO,&(إȶ=.\zLp~0H< 8]@N
l?l3?W2f'hY^Jsl^;7ȯ aGq8 Cj-#FfH"ujéM%S *;A.%# W#cPoR+O3uI$ޮX
ˋ3߃˩ˌ
ٿuČGDD\?V_Qgb9H$	([R4aXMgVF_CT(2}>) ˤ]+Eϥ2AG6<?
U^u o/+sd%x{l[m%5g_T?z_`VqSgB.{qJLVǆwP|]/05%Kؿj[ ְЪi<,V?/R+_":bscJ:6]QΒA:9/ePX#8T͞v.YO-,JsŨʣ`ÌRow.5ZAOci,`XG9jj#ȫN~nkj|֦Su:s}t ._.ޥeL؃8]b^sb7szPuP":14	6g$:3ǦT@5!>	 -F	TTapƎ:!~ Qf #IԲ2@%5Bg^0P~}s)kMGwEv͠8b+ޢ 6-BL6l㋻VxW!a(;FB/L/t~@,W>P#:J^u7	打oxvGPN)Bw|

z*`|rw@'oح77ڧ\sG0\!fbw+	vh!&oOAܗӚ@Y(n!su=#UxSq
p's
v6dt;&[R?W$B|z67>\\,	A4oO+A; z7q	>9;8!c#|gꝪ!0}cp0]QY:iRtxԎ? d(&nt5peO-+ȭn)E"jBː籹VZ$twށld2t	45Dm5ښ^+%_Rh|3_	QygcM +m0\vb:J}G{.(#s]M9B5vOW%yVe|{b#FB=b#i~Bݫ$OB7#	_hމ.kkZ;oȲ!·Q:vp|W<?HUՐ^B}CE9cT~,iň(aUFqVVlg~	+ϯ`q͚b[	gRk*붱Nm`uξ,fҬpG=aԈ|	T7U8O}>c2>9C^QyEH@(fտkn'm<-:ap}mD˝
Sv{fU5WC|ƁgŀxId}B:~<BNAL]Eguoo[6:^J܅|8ǮŋkK溻~(i\X6e}ɵrTfpi8.Տ2?}K*9&y."SNxk縹*ހ/twdWE4&a_LEVڢV:M}?|v_}x@YG!ޏ[Ak F|
wڛ{;3A %8L b{6wwlTwmXނ:s*4:kWLIoxmn=2JEJ@i\5jNɓm!\Q.-I@SW;WPj7mh'V{g:V14~,rjhrZ++鶏 xZan@!?kjӔ-"<ܶL& F?GEy6rhp0Vx
!Jqt*tƗ!^obz̏Y{xKWP-hSײYU'Y!! Df{yNђ\uQmI,%+1Wk8v73X)jU/嗣l*D(Zi^>"; ?WT $59yЃ}2|G[ψad8:-$a ,Ub
\]BAIr68ϠXO%5d@ЄT]eAI.ÉSpw)aτSݐZŽ_S-<\xlGHnQky{=BUЪ87Du\, >w.RM W3~TpcNRyN)
=L^ R32ͭ(chpG`-ɂGKWZe˻+̳o:V1)!'uu"Z+3;[8;WZEI7϶OBi\D>3K9L9QG9VztP~{F`A .a^|J	YҐ*-f]C&Y-T'j esb7k9WD2̕AowC<ʛ,~Y	`J9:{GZ$m!Mó#g37xpxcF=?	Gq\>5ƢȎ'&~	H|2*{[}Ԝ-dnw:tҊ$MAFv۔zHC|K Ê))HWK5!7I+GD37n쨈YI[';E+
eA5p3
;e7+?\U>;|~rݑ?xN(ci>Krft&eCs?~厊jݎ~:CT^S~;~A.q/:8LY3f{(ebuǶVX/F/yyH
AVc
ÌES(ZY H胊i+R"G6t,`j2UD!v"sA	=X^'ګ 9+V-)r3' e%ԇLx?IvdC,'Q|#U>/$2;D՘pV)>JIS|"%\hңiEz
\'_t>-ǣX}sԽcK\݊ŻTi(#O)6'}Zݣ.x,g>Fqag8MyRI=~\ǁs=J6\ewNvQ[&8f8
t~db}hE3#|>rPx.7!۰{죍hBM	e"8Fo#Xtp֚p"iX	:@GjVv˗CYdoݩrAip^wɳظ~;#Mh[w/EHMo]@t!ཀ8	ә-[dr4_$k~Ӈk<0v90<ֱѺzǢ/g4qZ;tp]sni0Dx{hB*wZi*]pۤQ<PJ!ۗq	uK)K5o>lz8%6\xa/ h~3Z)E\`ܜmk׎x0Th|]P6rU5!j]ϑuϞiUi|g	3./҂Z)]b(آ3sY#iqE{ }\P~VcaVN!0V^ٲ}A^͏%E`+DO:O?>ѩ_Ne?~  u yV#XqBBs4Izj~8qn+({p2 t-:+H^'M0L U-qFw\Ogǆۄf7	z{y63ph̭ ]-P:0K$(ܬ	|]^@<Gݜji+["l|HQ<nANaM#s1%WvM¶[V7eip>0M cs'O(εi~ t[\6mGLj`|U?a?|zͥ<U_rWp~/!	d$Ī8nh-ca"zq5@q}!U"C]6I[)@RϏE½!qФO`et~*X%k&Gj^12l~U	ף Gp$V5>w
c^W.Zs .^rЏ2}H%E
γRA7k*C[`mZv
Xx)qMl$c8QUt<YrVZj *VPL<>kloG܇v6Vݍg+a9i_g$uM"@_gu[əlP-SoJ&qt
|ȎngWU#52h8)fȺREaaW;&"tLRԧQwV
╄6.AH+ESҮ}n%,ēGmK1Y_G0mDl!'7<gHuwX-:>x$** GJT/&"D;Z-7eݑ;k*
b:9f%(Eu.}dEgV/QL^f/\v͹VCӭ	6<+Zܻ&Xtq	 ԓ&sl;pU{șSǾdɕazf9(YMzȐ
	y'ԋQgr{w	]4xQ|8;6\s}U$FK:w#.|߮p{ )WJ#q&}^%JM?ܕ67Χ>jei}
ug Kj ]3>!duFf?_=%ge@׃;{
+VZZ
y_IЉ7<] $;Try~p*Y.%Zx@WUYA?B@nk)w 9ꤞn+iQH)(0BvM=P+3_#͡vp]PpGYIAjO>0ۚ_^Mqd뫎qFp[nv4G	ϩ'K*;tN:ThZXqN(*WoM ׭kI⮥=RJs1U Es׎/7n8ݬ\j2LK޽}))8fbR{=t I,Dғ̺-vAD%1+6%uך]`ߣqεʰ8Ư!H)ŗ5U^OUhV*<#do^5Uus"ӗZpв9ֶ4Au)q_#lR}rN[7$2sݿ}¢S53~JQE8
?wN9rgiak7myVq́߮wO͔;<Sؾ5hpfH6&tťJ8$.BjJw9t-H(-A9AE9C'ePpg=>gԛ^8`G^=ȍvC$!4"x;f\L.e"0'\B\9y``+O:F𜺔p>-)N}B!D.ېI~?ud{kOENV
rH7ˡOR[3rWʕi߾_e#JpBs6tFI0Q!N.?)v.Gъc+}CsoFo9Yy8Tz ,v?&
@Us]@3ʷIx 7IoEa$}Ig1^0
h:ӱ}=bʙ:B|˳m.ؠ}J߷ߦ0/ǭ`u4Swu2"}7?8-Y_YHn1PlM
Q!W9$M@Nyi])Ǯ6wdZWw>H*;Ww8BI),]'(*DMuh$̋LuFc238Wyo&-@9:6;t5;ӡ[\zK Ƨ~toTxs:KBT+
e84.UrS}N٭*P2=ca\fy>WV6})ao"qPtԯ.m
G_kyҽ]A5 zv	+*,=5/踜rb#|[D0L6r6;ڏD^zgmL%*? 8ٿmz[9φ
`|GlMǦ:8n;jVgzK_$ Щ:"A\rtՠjԖKA[~\ûe7$>ªTTrrwj݀~mG yodo'$B, XETzJT)7oFk%XRڪn&T&^c>Uvo(y:{:J>9\d1,&}WIWJsE(^_j/`sV ,-0voEųoS_W@D|+7
4:VRs,F=axq&}3G8[MtgLg=rGGlw4sZGiv 5!TDTt{po}ogPl`!UnS/֣|}ǔ`w؎*6_g$Tf%j+/co{;#|75-MUQ{u:!&,x%T[{܊<
|P  
jNm8w{`]At 
Q<~usW&qxq.'iW[[M.t{!=j<ԛ}pD˳VFB
0{DIr%Bu3G9,NepΈ0wUP͹9#CwNN38=Wv4}HJCa]|ep)0Hck=ˇ ݐXbUw,?vz7(VrO%.cn<
 y¼+Ir:ZY_".Rc::TkJY8Ϟ:G;5fCΒ`	yGO?^+yj}G/i5/+;qT>a(N-(Ge-7r>%*6Opg	\%j	A"74AN^ 79HpXͰRsWapZP8ÁfȉJNJYBE ecKZE=i -yf(3!>U=/eA>G^Q٨Z;F~K-Lg*A2DfK{a͏6km`d5aJdMO,"z֤,x+߱;\:kڧi,z]^Zvs9֫{3jdW*+p6Vt [~jr*S_V;WxN<uxL:3mrRT@j<W~ЫУ{Ah}&UfF %R{Lx(]߅'O
[
	@EpǺUl5.t)` 
wvCs+ꆕ͜
}ŗspSYգJHy\bT$cu8
divE%9oalU*{-` 99[Gj't E߽]tPpqS$gܗ@`g>*Ǐqr :8
!H2"+<:$xknxaMDG5:WɳZk˂jYSꜷaX.	Gc	RE{X4WF)w9d쌍Gs%tdc%&e+|մUuAUT4\3:oiso@Ii_(s7T`oXS%!rԹlM{<烈9($#G4tWk[m/	
~[ecyϙ2{rpݸkΒ&U
u(o͋Y\[k94Uvs9=vR=z9}?VqNPϸ:~)J( ,UQ8>[ѓx~"^zgmiK?Q[xl\=J?-2+òLe+Nt)EW` -.wA q`vX^oEP
A-O~$'gԫn/Rbl=#M0=G]n
㙗zRíG>ІlgAR0S*s,Ħ|H TJ | 21Nz₶RC?\weR]I8vvP=lutmUZlۈ8MP8c`Gv4YF9ɏ+#:3/8qtDwi^%?!:DK6 ,NQ\6G>U90@-tzAUі
lȾMs+K)	ؚC**tt'om*H.f{,Zx"!Db]@Hr\
GxC`:.x֛nkEbzmL^ibO#AF@p:QN,''oVC<KF9Z&0W2bJ
4Ӣ{Β`*ԜɑBRҍq	±W[{fuX?N8~qT稹͞M
Ue
``b$?\<ɛ$y·8Ƃ6糹nfjŭډ*N{ 'M] .9ͥ`(ͮV_j7Z:_ W:}~	t/j9U
$]x=
`+W,dѵ=ujNp3Ͻʷu-|<@1z]C'z)Bc$,:k 4F$ݯD;[rACvK܊2/Gxu%A/@$zX姸2;YuRd]|F
32YblK(:SZp-x*K"tocpoga J.r=Ȥ֛e#pMvvH-%?Wn\tUt <s~ 
p(I6ɧ^"z~s ˻	7ǭtOe'DuGX!\> T ^TNmJ'cK%bJ>x0`*%y&RwiL/*H,zwe>ች*'7?2/"0X</BYΆyhv<<yj\l=)J4䘃s&ۣPe8S5֞ɮ1V-u+tEl+zGe/öUX&j!=̗?m i_s*oF)??SlUA`uT#7j~!oA^{'kjJT=`U=\C
_WPhIEί*E?֛*g
6`Nv"G?BѭuK ̮^ﭶrX:EX)s?4rLRt!8B(p{I޻V?}xLg0ij1.zkiHnq?.j'(HW tus"vlŨd)TP5Y%v/ӂUkx3vX@v,o
J|U7(SNL#hroe-XL8EIG{.(_Np/i}D%ϨI9^h	mqH*pS,
ջj e{l&ҷ r6MEU+'=+aLZ!|9fd3' "ޮ/YWW
9dn8u,¼:@/.6^C
:/ω.=$q4KO \!yMJNNOaE8RI*Tف#"rZGdI
U[jUȅm:,C45DTKW]C~yH~zfpB"_=1Gͽiai0ިVkJRʪ
'}ɄIK5TR=/޺i(PQۚNtA
KtxsY%@AMG!gnV-xaCi \E:m(qzҔú 
4PV.V=Ec>`$Dp3-rV^u	p`]]yƛ}uhS2D}$=Y|)zL$Jɧ5BQ6V5`j5nA4zk5'z˶pHw`ޒtٍ|N=WmB̓>o }\+CVʏ=L}T#YXtRU /g6 .-a?qVBƵ=PNǺ@>tqW|W[A/:F%<t.[k\t?,R&Ú
75`plzQ^ŀ{,8r;O$g[/Rhs1Us Hl"0S=+ J;@P?ztz0'!;7im
s.^[V+o#`xаp0j4%o7beb#Suo'"xJ@C]Z,P*ž@5
PO]EMd"spnuWl?i xH%mzּjOg8=Ceg GlGkBx~K$t7l^Y(񛠟MBՅ~y`3ÍVp>]E]C(*-HZP}8Z
+CSrMzC3]r*^T vr'mՂˡs hAӭSoZF꼧%Y;mw2֑Ym&]xKo4g8WI*s(:1rp(_E/p<^	v;([a'l܏*E)ܮCۭ&<Ѫ].-<jF!	P*Rכ8u(~y'a\"i*:egؐpެ˔E;1ȶ8Feg͜L]@gRZya#J#x@;w_I*0|88	P.w6nj/+bݶ
C7pgkn!@㌤jyiHO[ԼdF:HυK#.7svgU5zvhq"{1⭗+-cM$K9] ?+y[)gn:vTI+2bs9136Vzk,QTJ/$`[5<M5uB$RvrJ`pGHɿ4ʕ
9i}
0?@8M{K5F|<ځ'.xIԵowO*ґr-}/'=FNɧ;eYp˴f[V&PVG:
tpJv~ޮ:a$sY%Fvkޣj552QZѴ:4$|EiPB>l7kj=iRq>LO<!1E
z %T{l;;]ͅjmK!h"T:'Zpƨ;;9xLڦ%Ҏd'VH7H_\pxiW" ]؇&Y39LX,iȦ_sIsp=`r-|Bג!h YK#
-p=׵	
<яݎkPS9lل}Ep&oQ__G/7р>MxR} H<@guSR4?Us3E>r7tRhwUV졓O)ld϶U,vnl%ͫ9\DiYH}j4 /q^CX;F@1j#:;u"Gzvxr
=Kh!
-gќ>?Aƥ.'_mq0n-~.Γ$\ܻ	v8`Hb%]P;ĳ=#҇0trheГ1Į~
/ʿ3[V8s9j:c:j7onPhϩ2~x~?Uc߶r<{.oCUq7UaDF~xoieGXh
6!H\`B8f>uAU}#SkqfI-C膝.4$2[]Rax_伞'Ɠ1@8CwsNf7V=>}/Y^I$rC0j!b0aU/$ER;汄}0.gfp`	V! =589xZDvy柗^:I7G,Is.QٖFK}ڒkj_nEG1XoU:gXftN2-Q2)J~TWאNVSGipV-/]X!:;י	ub$=|b%zs
wb[@s@)f׳_o
pXm+͙mc@WiTAlZ3wMY=śT4"WD\A-5/D,oo":ʴxJETL}ПSG2D=;%^^
'5qX  	:t.Y"Ga;ZĮ]a%7ޢa#0Y\x&AqPV}B)]5j>z w7xkq )pm5@h;.<N]buN8jjxf(~Ŀ޺DH
j*ꚯN/([yՠD<q@vzbv]ڄ1r,g6icN6PcTFj>2I+[G13} ~pم²6V\8p@
'@Ctd| ZIATK·^W@eNmq0(bfԍKNp{&zk7Mm=˸Dnkj!6UMKBCi.
;f?.TJDoʷG4Jfq=:$cP7'mdlW+i[2nNuyS!ino8ΆvU݂@t/_B8@`}?tQ;Ț}i,̹\ڠ E&y<C=LOI1VC&hDGS|~[ˎKC{u{4 ʝAV砱>nW:k)@[}9\^<<ptf} Fu[kߜ\R~uS $sp_`.ttW(Z\/-A:)[<׵[(;S,J.8ÎW$NH :89݁)I s:S?q5F u9V36o e	;iɟn;йטl4m\W?zPVwɷ:>ޓs#c?rV~_rv:N0(/㆝Z]+M8,!h=zפ>3vr6PO8RܯÓ}ȷ'*ū$,(Ml &G>@ryIY^7)%rȈCWCo,997vnZ 4Gt21ZpGM/W7[ѵfjF3mg"WbW/pi5	_D64Ukp~%$_/x}nWJ|`22_;)徰5*_p!AҩCPtw@N=x-,isꄺ,5^Mz|G׌
`܅z$huor<֠@WO6-s |oFw-wMijwA8Bۿ9GbmGj9k:>EW;[Ajr{Z0qpoSޣ[(65/<6Ps^Ցw{E:TFUߦ4a
x5ᯨtZ젟.jT\HQz[^A]%F9QQglpz
NKzn9ۗ!
T҅
*L8NUɤo#6r|`j=W,br@.m4|}@㰝g浸k)vԨz]n>j	V֑Ҳ%Lɼ۶,<|Ƒ& ogr4{w6]y徔5¥7+q6
ȰHL"Za`-B0~M=;:YJ7ܥ
L37]lfv.vl^E=WH9i{'<@u1>~ڑreT[/GsFwK\:j{}:]j*S?hP鷺ٯB=M⸄iy^bAɼ&y[&qj@]W'+# _S!#?ox)w<QL;J[H:	v_S`QI<Wvfe潨}n?MS88*U yQ%Eݯ |y/ku	/A/^;K#{m" "H5rneΗZ'!&]uqi-=;L|
ˍ#1Qgu@=Te,觃7OdLtFqqE*ANAeE:;qtrvEQX
_Ȱ<YUqxTUv(PN0prJ76Ǔ6
ZN8O03'"}$NQ7me@8rY]RB69qiO*'eSsy&Yf].܋)&= O%qI?yLLGԸOjbU4}$vBD3mȻzҝȼRQgf 2T)8%~NߜgH	N[҆ԻeSS!rN[64n#"vczr%|hE".6xIHmCrv{s-6'U&jF5`C3tc96=++w^$V#'塷[;u~mm.N
ud2!]9(qVA؝vU)\J
|OapفT6?ũD͕Y>X
aa-&_Gb)J͑r+h0QyJVy+ЃGlTZ~qG7VK/pؑ 
hH/@EAFTF<
U+Y6xPΆI 
qCvW^e;]Om ;sG2oAn*1^rcҲ$Iw7^[uoDiKzg+9[%D9j;~
DL+!=f$g"Oyi3q:qMM4,rNS&Nl;\~Ԃ?Rg7!O8R{:ddg:-)K|;av}I@VBpӋ4{߬C&w$]5j`Wΰ{=U'ߒUi7ArUw?q'[G<Ϻ/9.&ix\h@DsGǅ;ue%4tN3tG%\x+- O3KCYbEj8:X/
ҁ5[+s{}sk(5cr*lj.-TU[xMӥU`ZB:= BvpWEE5:~8'HNO3䘩m=NNOS!ĨR\ZD
,p{2T*
yI<6_{:DA
զP_Is};Gyl(A;f菫Ct͖sWȘND}s@q(nُI"A,d&kㆱHF䷼B;z7y\xϢSnw!9 qI\p`zh~{M5ݺ&oZ&-)Bx$ Yx+HT<`J+O"ұ>u[Ulދh75%H_He6ŐWyDbУD
ղܖ)G{ ." ډ;MDHDʧ#8 .W~!nw!@(|D6O
[H+{-GӇ,W,A"*zMq4LɜՉ*E rs2%R,)ѾUr3"=lMmZ{/6TŐK/s5*oo!C59[gO{`.6P>U2ESuh吥#u<S"߿}S%mT-H\L1(l
H+wYO]zHEV<tE~*KP=e&˩mM%@ )"esfM6P{..i
\ruT,	*pwrtHG h;,\%1aO]	pNvL$V	)J:ݚx6`r{w<AubWAoXdN ^K;45dl7֙N.[Qik̖@x#ӑ`,'qC؂R[[~jDUM+^AJ?ēC0>p3.4>Ymg/iщL=q'+y~m2Yr;XU
ݩ4jW]D8~\.&w/&rTBC +g/z?ԕaV]h@[s`vŁIZNJ9I`LVZ}Nz\-Hwkﯯn6ak#Y}*C:EuuNPLx5$ +PڝA`v)8=O;̢
۠JkG\8Y&OP kd ]TxSQڤDqBq&Ҧ2oóèkA[ҾY
&8/^rp.T>\#.˗ں90pNn"=!G~Io?.a{W

:9wç@5Vp5N>
߭UEwf
Ur6G<rrwR\jxBx{%3D6:(͇y;s՝r増2Odw߱[H
7j-,: L'9#jkpp?إKyqU<ZI;[ݝv׺.z=.1yJI9O7	&0XG;bq
V=gݟ7lFT>J<5m~Qx.(x$KY>{zbm䴚gK`np51'7`0+2֓ ]a(]J~P&"VG
([[*{tCk>Gхh>qٗ[-;A*(|	4 @SUnOn'Ch)eb@Ӗ1Tͩe691~9`~y7+@+Q :L6DCKj&hza}ˍ`cxkPHh.u%Mq[GCk[fouD"{(sm#u'+n5u|e5(qr?OJ{E;)ūNXF^ʥa/^YNqzJ)m0@	jx鷒`>'S>B'X"ā6	Zߦz[KIUQ$96<HSo"
;_7}C5,GGJ
xW#ג 8Nngt\z7p3RI|V\*_myoCv)
yQ\-5ی}+$6l#pQG=;e4t찜ϧ!E1+p=6
Y)>Z]w3ЕGRC=mX:`UF >v:/~Fʜ$y{oS"8d3?Vqt;c5ݙIN 9<." NInuͪ55F#G!Bu]vN^8WTu$i>l7M8͚RS#p;IKҼI'8x)5vJQ3iᷰ"P܈caVh0:88*O35X$~ a.:WJK ڔ9=~[#φΊ>(0֧]hNjthHrZge-@)X'U5EgAU9m*
nEU# q [3֓ᐛQp-	
+V,̀h*ݔuu8{D!0f;5[>	`n	ƝgT5Ԯ lyfS̒#>MQ߲hO~ x۲ѷT?a.#^v;Vkժ=+ 0ρw}ˁZ>r(MoFS SUbI< dm8MWx~x'x{NTY>Dq6$r+5~NtJ$NEFx! 7g!f&:>L]S-,rסhcIm*ck
y m>%:ғ.Ys8L/Fz(z/e7~Yb4Oɞ
8`Σq>*Eo>ezn8r܈7<۽o
Uh
PUI$xU͈VN"C5rV&ᗰ9|?__Dl^uu I8\5%$Q:߶%t7p,mPqg]
?/)KPBW5OdYj9Q$)oV=Rri ׂŸ<ʏ<7_D*;ڪ4xmJu})Vzu2߾Ndlu,-o(` fTR׽:eڲ8Pە(.)M]6&B
XS~rKy݉* }}(=ޠ mSwVh\J
SféAi]9_+)rtȩ
́cU8J-Yj3Y\6P=@w	ԍvs7o2w6T9$i&7˔x&mV|`bAfjWʓFK	i&E`W <RzxV :tiǑpv7&?FW$P{k<+TA\	r>CӦi=ݷ
o-#>npq=6tA]ʚmpNr]e#{wZXrY<c\V4Ѭ#\L*KlY6wX)etD[Y;T(NTyTB)!v62RMmp
{ZNL+9,94MQpBDp'xu&MR[;WJ1f~uʉMdD53,dt4IkvmwP,-q]OgK[ui:8fQPͽFK`KDgNr8}lXA0mc/PW&:[R3=d*`I=Yy<yי\R[P77"gN'wɁ
^Up1"ZUt2Sj0gQ amtj!A'InpVIϙ}>gvyHQI*[H$}Ѻ {ϛnh?]kާUfHwze)un6	c:B8vs噾o傸Oj!YRV[B&`yYK]cֺ+@|%Q AL{fuh?5˟3p]":
9;pc|YEGn6kt|Z˺`Sr9H}bĞfQ CѵnG"{iGYt@3"`Vl~45E#Psʡ2p&OHC~Z<t.gT$Sc[}8*KqZI+=0t]E?7)񚪏
ъto '	+ef0K@ym
!Mk_9 >r&.]Zɧy`ijj+ޘ(Rc'/S 
ϣhbl$(Z5 ғ;gK'i /
.[ٶt=lAjjvŪd!F:.-@Q-)
LE0`oz%$WJ+3<h7UW"cR.W<8tӟttE<gIEFpXF&_hH/Y@ #
6%ɢޫoՄpD"m	&& mc(8ʖRk_:0hfԿc@MJaT?[)8ŮZHSVT)Hwv_XT^]F3$G; 0vP+iGwo͵*~Zn	ñMJ%,'_.`1fHG4jm6@lg?|~/-.US=H; 4Y(L- hM{%hsc`K<î	8ݴGPEVsB H=:˩]\2>/.sc=+K=+U`|^i(U"[K~Joh筺}muU)	z&t&H}<ug. r@ ::PR3:lYoJۤA8<+:>/f\pTzqZjyʝ6𠼖)ڣ"H(&l*4ZW.>up;jJ>w8_wCΣOG4awsx'Yu.og~f2Si2眱?OYMHy(\/7S<и ͝fS=W"J4	GWAijiZ_p>Ks`	=;_ۣ0܇[6vnrh@x͗v=saKI++<x4i6:k>a?l}`"sc~%l?[Yz	G3V#gJn7*xZ^h|-z;A@wRԠ:ܩ;Şt8-	D% ~j,[*D9!=;<"$?ܛ^ݫNUff~1;ysc{PS) Pڙ;,<[
o:8~d7~;JB)ݑ2ٷϳr2#)TCOG팥ʦs mRa0`k*ICu9htKgyâ0JLxR૬.D$FKNU18.[}˱]
HzsWMSk4^wKDБ-+	o}0
T!nk<3nxchGJ~7:&C-RD:|i>]ЫEwNjדѠٲ;LGѱKо^,9n'$|08ik7 wSqz3ޠt<# 8
_sb;]5. ]\㲄R?e"j8י;Iw,us=,(nGfs^ǣ\|Zi|f)F@Ju_0K;'~{p
i6#kO=Vl>_z'~_<&h~RW(xǿ`K~ο(VAƁ5Hvm_ҺЫ/DBz:+CO#(8.<e|n'654r}YIB|'GB_MI_k@ynU?å?=* 9bK/%-d!kM"#ۆt%ȱtIFp-&вW%DWH.;~kj4`L QYRXXQe	NcvY>aSyޔV?YN|:Lm( 9: j~v#d(QwTAvġaޟ
~#/HԅLF6۱#h.q{Wg^>ԵEw"~~VH`CX|+{r}q2Gxg"3)
9`7M!/79G97Qޒ^RY>J烩z~8NˣpZb[w"|r3+E`+}pvAnL g
zn#|tt]>;T'A=/*3	#
ψiN+krw)e][߀n񺹦\Z5(K;6ORw%#G4TN@@Z^S2p&qP*:^u$z]69[]	J0<NU$K9
6IK]a[P25҃;//m;yX1<(w_#rvEU7K9?vvJ抅LQ|wRs6[&Th6hl7&Hൠ8"e&8٘[[SZR(?N&W8ytSðqF
k<OcKT3pv$f, 4*no׈B(R<gRi*Dk$ !>\aUUo#oPwU~9H6_.k)#JY'@6W~bZ[K4+$NdL/
$A<vrvoZHڭ|WWM;^n5i'5D&t`5TWo3GQ&?_U[OH^iVgiཐDHJϐ*:
{tRKTYIΧ]`Lv)mnuYo&OV'0s>9t5S5Вlv'&Ofw5g毖ZL)ȧ>8պ?}GQޮny'gNR}zƪ1km^2F:6jfnةsЕ}iy:P0V%II]ܺ \fN3W9jinkj7P{Ep@nPO/R7Dg_IXr$g@w>>W-芛NMK۰p`z!Qr $ #WSH\vxHg_6s;RzMr-^g	"v^Hm@nWcN^Rw#z*"u3w'vzgU 7א@dU{Ƀry+LPEAν8Ny\
o[t[UZuK6@ C	o|kA)jy}gO$i4\i0	]PciazV.'G
ѥ^ymEүb3{O._S6j{,B@,@g%M6̓#46ETu9/UWJTWݝ%hGW"M!~|DܐO')]އ^Z˕ӛa
8NƢ1neKg(7B-}A;t舿䢀
U CxW悊:{vo|Q.nTJĸy4>|eVOҚ{]# j߳>cp+:Ol0SNL{mɪͶVQ^J;i&8qHĺʞmF=ց[q%wY i`p.>s]f~kuu7z_f#<q̥_@
Z<JKQ̋s𨷕 &O2@t#|Ջ5<ZS~͓қٝϣg뤬g.%'Tp0;JҤ:Ϊ4-k%B֑!%7Ivf4k׸dzJvru/ݑ\tC`F]+ku8,w`襕]!T.l&Ʉ353'd}aBws??ϠeFtVGWj򙓅AcۯN7@JZ~x^tT2UWGJGf#3ȳnGF^;n{9Ah:JhiY?'ֹOq
5	8B@6[+"*9^ W!T,>uwvGf,3F(|H37ޠ> '󝟚,*V<YiN]J#+ flp
F"y&sc=ym	B&":)iUHVآ5𭥈>T|Wǫp^65pK&3
^ZxUhm7ZgI("Olr:B3TNV#DU)qX*nUW]2yv`U ÔS':NvKtToUX┓ډ*GRX>`\{+2IRnrh$=rQW_I|ݷOXuVҎ?m߷>M4U"ۍ;WI.\&'B߀z.U;AAjx6#I,ʌ_s6I:WjTinU]6x_;MYf&T2<`xJD)ߪ

y5#50U}eA2&{]CtKs?0'gh~n|은D`.h(
wdq"ӜkCvXq@s=S'}Qǆ߂}_ŇB"_y/WЕjn5>N=~W|mB\a>FǈaHm+z<qugiu
f߼{MB
䩲"pty]0
<w ?eIwV`\>ǉs`*UWW~PD
VvCC[rMֆEsgj-4/ܜNJtZ?-uSOgzu+/]D ו5Lb3eUVjώt<9-lGۼtuf%J\F{r͹U0yu2@7饐V{CG{ T;ݱ64f;4{GG}`WK&S!D{R #p_V:1d7
TM<B"!x:yaD_?[!8_u_9) u+G)
v%GDN-i׏< LŹIf[n%fO]vzpZ-cT('dkD]!c8WcdvǱzj'W.Fr.Bnc{7MPcZ vu%r
̄P7f~#%qvӓNh	."Jc*GW'ٟw+Xv]/{ƙk (U7rpEYɛCW!砶綬U"<Yqm}ju9Ӑ8>^fr[aa ryԧ(קHX=Gw\} .XB@7-uau8
IBz[,
Cb,4	mA.:DZ׷*4
$6]ezo"+%AwD>i+yO	yG"~s՝;꒘`}!nF0Jo)YV2"3yHK+Jj!ꙴQ3TXrٯ͌hap?%13|MY>gk`x;Sv~bj#s{SWGr!x#k߯mYSzjqtEHˎvJʫc=Aѽhk}Gb!ڏPKr%A]H%.橸ҒlU@۶eYpSv[|ސWQꌯu`x\(tAЋYțzEKmֵ++}EjܩB@ZNs\hBvl\tGp`lP^Рmz5XRѕ/k4`LJ,ͷvl:}y7ȱ>Q!TYݨ &7p>ļջs_sL\(T"&-P-	\ɿ<gw5~deR4T]@::nX9HoÁvS5amqǆwZzVо0M#鳳(rCggL~^ VϞ2=q]ſ{nʮ[WHW:}OI'WWF/
!PG86"2T fĮ&rеT\A̭7t;%h}.'lqpB:[Vo44lS$m
52+oR0+QSMtydB[GJ3sSzc,<98@IU˘Ÿ$FG,ɥv1_n<Yl 3jcvsmb3oKx[
|n0d(aIvqF+18ũ"u̷ ~O(c	/#&6%J\V=_=hnZ^Kz$lsI h|3vXuCaRz*VHgNZ$3a܆M`S)pYͨPW),B@u>4PQuw5Jt1-{`^R.gߞj1"d>9ʛS7;($:"Cߌ3t|\Pp8F[)`*鈹ف~ql
"j}Cpnס:po$c߰F1\/&^my
@nTӐ<MJ񃀣N6xZj.[sQysSb^USuiwNK^\qF
;r]r4$;xJCn~μ~۳g^VC]*m5TPW&|$f`J}BXUYVgFO iV4X	2G"5ufdp	o[s&=lso9gKjMvc?^	4_:Ƀq
n8t_ZŊ{h8Sh <㆝|[+z>GU=y9_914
ҘQXRCU.ms))Q]<UuuLD!09<%Վw"}@{.yX+P9c4͈t,eVi96.Q<e}V6֍F`u^s
	/Bh7_Zqj!;X]oZÄ5: mR6ǉy5w;Kv7Ϻw:
նH˘バ2x}wT;2<G
)OV(eI;TRW<֝/!q#kD7Qwt59bY85oG"O5!ont.&,9`HoM]ܾ'` 0!jR<>sPrZtffg䔉kY_tN	ZƁɪM0n	1VFk(X0#Y $$41N";M.D
 DpU>(O>#GTg
id;LCd9}\fK
AE. aNJ4R
Ĵksɲ:FV69\*2?6	+3vX$kywBh(ʦn`7WU:2`{q[䚼G%
JPTsfXQ\/ Zj&fh*_;+Uw%|߈2wNpiVy<-!,|׎F@'zH.sEMӬcv㱝REkHNW&x_;R@O$0_κz 'Q3upxLo'9u<S
(pb*
RqsF@[ G
+DڢM9xY1O-א
e~-%k+mHUت2A`uPV̩UG<,Q|A(=!p8)rsLqBdKu:fgisN:>Μc9ODِp#n`M%`T֑lRv*`֯ ƻlӝuj׀zxvֽ`1/4zW9=jq&I&~feﮋeQe)ZNw!;&2<S9}Ȅ)mzWnq[&d6Qg$'tvDaAl]=Q>l1 f݄渚fe8/i4I(x|c "U|u8d5	'f2XFl
:tfA3+T_S98sa3ifwY`.W9sV*ld],%4ݧ6瀡>/OӀC֏:xЫ5T_8|g	ޒ '@&"zҙWueև#sd%OO\'Tj%arm^Y
%Vjpå%gplUI
<7Dj,NS"'4伭Ɖ {D-c`<e<c=>R޼R	>Kk:8px^J6X?렗p
,yoqιߏAfK/GW!	
Yj#vw]Yrl.MQv5_vōH
aL}W8vS)Pna=[В|}pw;YJ`1DyCuR$,VlTwx")j(bdm^R<8!ӤDGߺ/u<Ɠ4֊KnJ|^ٮdnJg+=ɵ	@nDGB<|W*~'!/ޏH5\Qk8O4j1֬/-r₽!]L`X@wE~ʁfX8W{.9Q_3$ƦCVx8H<l'tKu)x 2_PY<vqB@
/*kSXPĞ;HJ<ڊ#SCIW2ݩ^W?WDfכt+QQ]p~c`8+=Wĸlk~oFOS4S;0N6]ɖ2``cc`ǲI}qBDIzn=GV/
6dj}|gRf0KOt\q^wl,0Z_8礪]57Вp&.\!]/Uf!Mp5TKbu^`G#a|MKtpB- bMA:A-9'MRCCPMuD$-AeMi[dqkZQB.YB|Dۙ<ɪII4pZL j]D|Q}kY}eSa/-u幅$EԤe,4oI8kr#	G?#Mt	w{ËNJ(QHTfN! ~
&5CIfr#99jܡYmG
,UE@͠ȷ^k(ȯolY-s+W"^ƩÐ3.^
]60h stnܥicDQ{߼v$xi4w;U JxFpV<Վ?rl<5iX԰6>J&#79"N= ]-(逢s^;|jfߪ'!s'F{]}2mp1r*@Jۑ,ENdq8"2s\ bN;z'
;( yێUTk/|>-/t'~7OhdB>f\L'
}<G,gVXyXqct˼Jaot"BYwWPyA
7g
dێCzt!hik]nsjǜkBC*j8{;Q2^7)[|ǋr'}vx93|ѾzpǏH!&gtd+Hom靻 :[)pf

ClN؋vrQK7u)?'پ/VLy|W|[gluGYvp`+=HhR-ͣ(L	/T'u3xv5֤UBho>(cQMV)BYص̤B-G}aމ<.ރqn.ndg89u]$$3? Հ5G YT-vWHn%L#҆q_
W,5iդJ`A:-?@\P]\~dTXr,#yS1~t|gM	imG
Kh)'9	u?U$%9pƄ*7|*ժ "=iEb4Muo;t@gaAcoV9*vY5ړ_PwlR8D;`N柞)n#8C8M 	ɬ.{7=gEa[pp撀͇l ;MreZ=Zٮ½v={C^_R<R >tӆ$Zڊj^-?Z\W+˛^#ɕS{B(:6PG6S[⭮%M
eNGCͩvբݰм9凇Zx֓6ȵ3`"| a,+s7[o3:I᪜(8(Esxn,kyt#r5|Wњ*eP2vDL'C}C?W8u"Ϙ| E4jT{&+P6Q`T	  kQKT+Y!=⡾Vюp8W"@ŏ<4;\ dNh>qG=%NyQ^WP\@	X./b?eުS	aN
hMgc# QC#<M1{*J0lߟFȳ:@;#QnzSM(%ǀȩř !NwXA{G'e:N8;έemn$i8%w]~<Z	W2/wl0>0@a
{ʸChH>R[HU\q&rס㖍N}!,I0'gtTg%.o?j}#%H9d?ЫFT$~q}[Pܱ47
_M}3Hg״W7A>GtQʡX\#K4@jj[YEd
'UT&#
]ƼL[+<k更kk ORv$ѮOm?<j':aQEKh:^|Rr&'!P|*A&_~{<1jpm_$ECh=]GTвإktQ-U
|&!^3|/}Ke< p]"V0t0rϞp8brVZe+hNUB_lMuK Р]^4]Jl#j!y_2;D>n*>芑<aݯ""y!ǠCpQK8l4L3]:ӆI/4ס#E=]U|\Ĩ[<Ji=Nl݃VMڱdpN\F;P>mŚI!2	/\s{<p}OHBw
=749s{+CthƧ Ú(><  (8g<QKƢcT1ΞG_<婥nCFS,TWS+#ͰE?"
߱Z vǍЫep olB,9Ap':=KG$?Z%_YvOVe`3)Kq4&ąl\LS|F
H<w>zSʏJatm.e)Qt^S/{Y|ޒ	g<C&ƳbAuwo?18BiI	w_~Ձܮç<4}s,_=Qrtg&-<u.Ƕ$qp:eV~7]vXkҶo^I4sqk| /ݦo8uӬX9F՚L'E[BE..|zm(v׆;%Ո֏])~\	IU] UzQqz0j{p0y~F Z5/5IyjԩHP
o8JGA`3gŋDr鈢AmW:%kfn8i5A6_*'YH{UjghX
@#8s^Ms)~1r !q*9^u1iJG[==|wRmc^ݫ_P%YpZqᕰuG>VtwvSyZ ԆG-jXsFԩ?Qf0VH}j
Dİp9pk'h;(7%ndoPT cMIh9s`Tm GH\f~_0Q@N~k};oN:=.NTJʓʿ
L=ߍ 5{I5Ɋǫa%]tYsp]&wEv
mؖ!/IM4VW@b'_EtW\2vS)h~|>`ƞ.c'p4Nyj	<*$A+/{4T(޳DtY}#dg%{Cq;OW8Q?>AYy3ۤ>C..^._gG<;L39Ŧ%VEKhP	聐to>*X4_.KyKgRս<{p`>.JO^KP[гMt&-CʹQϋ,D/6&odxN;_)4!钒@|O%]Njϳ3m՗t,XKgScd>';Zt!	б1p%v>9vokm<ꤱ5eMCwD
MxuN~f܏Tv30P21n\-
A,VA@^M8pJcG>ppQ~zu~Mu(~'Gh<uƁ
ĭU)uXstI=GK٠hTxy x>ZPB4sJs(,4ڐNưE>"^otgi 6b3h5f_9,>D.Gg	(`Z?\+fp`hu7lWUZe:wTrٵw*J
mS7.?
ŧ~^R"N˫O#ZҶN~S
gj_X'1l>jܽ]ᾲ[ϜDpq_bf1fڸ
_a(JŢbez=;>%ոMjNVv?}ZܟX>
 S|E'5\hC预c Kx%],`&'_yU^_]nyȟ<Wήt]PJ%[p{=+~J24>R+c8M(5ݢ?;dVe.ۥGrVD0 ˺*a հ0
%a=e\ٜAu>z~T7,߲Ē[Xb𩃈{	̟-u?IMѡS @q|{O
	|5~ɿ˵G#ڸT}l>Vˢ !nQ#u>[
fW2RGU|Uzȡ;~3]Mұ	Wqs9c S耿:O\6~'7<RfE*MG./(ck+q뵑 CSȵNGv
;Q.D?aoϤ^)QO 8LGҝGz9K"psu#B?CV[u
	j|rI`>m"J㑮
%mV\"|E ]
>R4>KεZ`ܺ| z+0ҎR~S.x:/gGZXpl1Slz3H3nǁ;]cK5~@UVC?TGEH<]>um T[6Sp> E.7:S&:pٵ"#oQ9ٗr\S8@$3W:]2< ob藈:S9;G5յܡXyc*@W[vg]
n])K+w<{;r7<5|r?Ž>H8&Mq <gcJ`^9?-'U&_rkq\Ss8|[CȎɡqr.UY'p!Ϯi<n^1U4lsϼ./S؀4]/A-IZr
hױ%rz9PSz+
PUDGT슂1hǹNkKM~"m~)Qzkeʫ3Ɠ{8ܭ{IB﹍3*ttIɪEƷCh,՘!(9윫\1le⃯t<͑ܳW֞J#[pp[GK@6݉k
HI
f9ϿaiMQK(}ʚlZ]8mnM6ѐݰBRZ}9n ,)Ñ?,4sNҼU*vuE+	[X**Zye.)߰-1F-+M.ď}=np=^=8tҔ>Oj͹)u+>7 \csP0P&WW ,pˮ!Z>c/SUlN=u
}~@2+Y^oj>KC:َۇ_/
$57|e;/oO6AqZ_To탪eP$T/
2uȾ|}yp:̝ȥ~夺%i v9#%+Bؒ?y/L	3)'$Y:גޡm{"N	Vb%06iϿUvoƫ{AB&Ҍ hV,㓑IHYJ߽أNAg>.+T<*W9Pec8_u*A9<n[53[P1r=
u02ʯe}tػV_1_a|t{5;.7,T)tLhm Y"wVGJ='cy5:pLTG7,\HZ=nwuR5S~xHTm[ln;L:+"8GJSCZwpA%$ڄNK%-os

0h]9g9}#ȳW5T8\^[C7s}I8Į5G)85L:\$XuV߽6wa<*}-o#GYmb/N6?I79c\z(> 8!BU܏M%2d-.{OsN)õzmzrݙ(8Io>{5Ki]4wѶeq%Z"y/pnAΰA_yx9+9+{0n:Ȓfd XS{σ~OQ){toV:L1,[ǛJ5.zT9~h>VI8Z(s!nh]?
"-F~Hy:$6_*,8VˍNҼib@d[6DmM1<ep\k;B LyI$W}ВXgB~gR.KټbUջhD9DKOaugWh],7E¹K@$&=Ha
~1+Z9Xd WF-^?2L=4qo	Jur̊ǙܶAvvw[Xۆ|5Tq%հwYw>́!{Syu
GuvմU"X1vPah.Gָ+Gܵg"m5*PIZckqf Ē|p=ţ_Ⱦ6ZGKAVY8@cbgx\_j}oEse\>K~Qev3BBq
G>J_օQ7n T	<0ӫ
RPc(pŶ4l_^\6pGv5ʯ[rk3C1 G=*455_IM|uf{]V+楤Xί.$`
_]9DdcWzyJ썻<e{t@ٜuSn;MaeBtѬ-2p]/?M'"/C!H
՝1	P )8bdr0ox;{$N~-[DILïדӏ:e8	\]z$MjwY&da1!|SĭE^y\'HH/G|8VjnN]ܹ6K:؎C#hFt8gfYdp)ZA`kևwl^Oww%bq>
=OloTg<SUNQEx^B.sI5#	<@om9Ȯ xk|BLp>?~+{Y:XWRMOen]mZS
~WG+rasx"<WRI=_Q]L\+vWidЧk_ݟK=+p$7}.kH$&pC${uqpj/{,PCi4WwCϬ!SgfS =94Z[c)*LpL0'+n@D먶ja_ɞ.$L]ܿe% T5uI}7481Y6ss0X
^8E[>;71ѷ\t"o-ge]őҲխI\)&Hp\2`\u><XƳgT~VZKɎՍI偁
;2D%Agehg'Gh@1ϧ$1c'-6huk%|/'e?F7(Ƣ&u^6|gF+i:e}5S!OC!^5nRݭ8/U-#?L< '[ܪ'V5{QME^ĩ[(u~,Fk_R Nzmp"϶"M~ncGsyު_A6zXOgMփ}i'o9Z	c)t\t	Ђ9n':\K~v&
h f9 ins4vu+԰⹷wϵ*rqFU-S|n )Gr	ٽ'g'+ZU>XST8,u 8ۅq_; z
yUW8H/*3liEuvM KJʨJRwhvoK;ޜwup@2ޗ46rk/ܑ\I0^>z]-?Vg$z*2-AF9ή(^eZ%8l,Kb$x.cd<4^^wAo	IRSt#X=.SGNiu`f$Hj]ՙzv;"aIO?] \h/(BPObyy\cp"" cKo:TU<hCO<[F=ik\0kle,Br;fyPr3Jv\qns{h[rb&fA0޼f]CbR+؟>-fb\T1d)8*O$nkriWO[98C~y?hhɶeR U'|$~ߞ}IVi	JwJ"g넹YL}kei,m >xU?[
^Tg,<yiR-k&G,nu0;M}?Kb`
S2)m}}"l|;1'ϭf=#f0snWă9u(ʬS
7QVh# OT
nrݳCQbpMM-|.L.`jJ6?E >pZ%q9u]rlx<v3JΖ'q)HFX>搢jz6ݬ4LgRZǱ s,zsM)I')KJSDҜhoQ2#9dHF@N%kR;2U?!`&eHDB`LGs
L@ܙe[?۠q
!8<嚎Ê&AyW69h«X=)z>U6r
YV|\kǉ]dNϽ$R?f˾ՔU<ǃ6`:-'Zu&=QP^;Gy|*d'd]*6 篣:;]վ `bsiTrOԉa!7i;~G_
#MU~?e/yeR]~,co%ϑҶy;eW<"wiN];@Q}*MJV~t4؍+dR+
N
4iZ>wxN+ju:@kEj&:O̴q'g29",ND.+3z>Uij]l.6R{KNBrv͚>Ρd.g3-sNaP.Mã\%F>	M V՚BZAӅ:V^H35n?݄Võ/\Icο9zkF@ZC+CGYjm&OU&"tGMP`	pc/ݩD=T%n$+7R#<_ɧ%T%&˝	RqV/NwEβ"
#p[ҳYf
W&!n]S|.*]׃w U!DY%&?쐺vکuP.8>ϸhV	թ#.|;oZVŽWcUP#WRpR2jgeU/}i
(yLV*ͪF$5}:/&R'`i9z)XC.mcXʢ%/~;㷫['5а&]Uܢ2dت4xCp|ù 9s-Xߚ!gÅDHdQz^bfʹd4MrTH"k{s9 #oo?`P<1~n][PV[QSzreXMr]9K /D 5p0BPkj	55N
Dj?\&jA^Zl<>42wV.;<q|	)74qaàm^\yl*CfX֗Z<#C	T=8"D|.&$MQ5Tq>m*	uBj4Q\_ڤa਑U۵A|E}QϜtC	G:~4#3[j竔oUP͡^ӹݚT{r}	%1y?]W&8f?3_HF>2/w5K|9EWp+&͹OyM})ҭrR{*~)y8:ӺܜҔG\_9@REUqNPٯϽV2sE$-QAg>/X|<{'ɻ9:[zV9ѝrdM
-=.ff~l_
 x`\pV_{g'tda-Z}Uǹta@!DC6!$⚋\~kQ햿R1M6:4XCd ؏~P|9fgO	VˑdjPR"Xy.ض+ۿTӧ_)eԔNl()ٿqw:8]{1jU'>m~{1eY2w	J\=c[x%.2'qN\-ʣ4#!i*:w>˯v7E!\@uSDp&wyP-qu,OF\"%L$\Gl ~8SE||;~JI;khM%1	徶mOA䆓n
?z_Ko>\grwٵ;}oOuYxT*m@\>rzl\#s5r/G#'%"
uYWJ!Xc('Gid}"d(vߖ7a|Ϟ/7	san~=7qXkXK*ǵ| 鏬갴xnnD\[9Z>Sy\Gtml\{<JHcZ7PuptY"U
~~k)"`M6ETA춹qYrSC
hբ*z;FW .\(S[L)0.%<ڒmjJ,r ˒Ǻ`
(AݬvyVbZ\㆙;xj؏긵혐%9y,;<N֩vlJ_"xrОn\un	z._Κ؝,*D%xH8A,c9G<Z,ѿ1U3#$9R1ý&WqXgz]>z`.gɾ^s{z 7YX	^`uO-(C:iu"xO&+:P8~?o>P&$uzB]"DڀM_	'5U2^k7i"xP<1j+
~!O@HKJj x8VwnXbsLR-]ڞ9W}~Wz];ube!lmS$T6j젳wyTwwTm(Z|Ψ=^3?&!pܔ@Xp`Cf2(_Aap\us<9YPw&"ހO<9@~Aau
_tWu8iw"S<ga5h=Kl*e  )Yؠ9UXfrlzLW-<%ճ8FLN$@Ht|; Sr f!׉9ALC}t),՞5OPQUdWݢOs_"3%Bp+&>>a++SnCB[Y
Œxs_OY`*|/M?	f|ۏ],J@q[H 8ŨoI||kX dШs3U˳_Y(m1^	b
qL9|n<		yܞ5 5&nWZ2QT0+{t58x=99` l\g{Dne5:3GVJӷG
q+0jƶŔ6ުGO9~޵VhҤCr"^"j.hͺFukRLmggpu!2jZH1]	i4~bq7TlžuqV<;A&|yDGn=O7GvY,ԕ~Riu	'iNvw_Z^x$25סfԶfl qs6I7)wWV0}^uN<SA[c|ӯ/)xPN ]S5vApCIBDosU hZXϡ<pkI# L!R-so95`+6\jgrR\@V^䥭:K..c9mk,|=Fղ&0:kkA9PmUϮt%))=roor'O9X׫|Q5U;w+-US}va`;=J9-;f<쳪2e_bi	XF+o:qq)KkkdeInsL9
OQiX-m+GX> R
Q]E?"nGW\8cZg,'5NE0m,]&~ קG
[91M?zu~\&hb)(q804X4Ap~{6.aALJ.]TqkX[(|
v@Nf&YYP+9uOZsdX"l=2gOTQyFNFtjwռKk4b
b'>J:j}?.U0OVzGoόTl,
Cbv@]I<å
wg9wGouCNs.U8EnW~,0ܻE{wqx-g
jpi(>]=@t{I&%f}~_tA НZ0bz7:` h	&8ߣ6M}KW+R)Y<L/|*,En=)==Cgj\[Qcяx͏n*FKɉHi~Ho4\V&.r`4V0uکz ȮwjL}>A}|Эĝ'Ӱ%c
яHo|iBHmuDt, *:
\W*O!E	rQ"$RL;Czw +ETn竳ΟJ/.wɩS~\!wTE!}<z~gO3L^oMY`?cU*yv 5git<{6`ٽ0$,i
eUx[ɒcϫuw-X!ww^KRkw\Dǧon:4VVMw	Ux 5ɚLvQ '*?Puumԙ=ð?=r$ꄛPxN"vEHC~]Uސc^wdVFnZ#ʀt>uwtV'?+~/7 7fdei0Kgu"ZY	du;M苆|}Bg")iuy]epwz4;A?gx}I[r}09H:<=P҉oͨIne"{ryL^!q;|\?xྴֆ[M7,ga۞Ÿum"铻Y

2+,vٯMz}%ˣŇluE*N;Blc%^;=$-%(۾VnBBF's,8ah2	$>Grhqiu9bY/B\.jut gg	*);qni{>]V9-9~{oV<s[)rxΡ(\(UvD]EE%;S;_Uuz&5Uc]S8YEUԓM' cxm[oR턬п4+WQelN֮Rp.?'Y6kUt'eO^'iݎxMӽ`"2^E?=bܙ,00&TbLJ9̨# ~+iH6-
S$t{6td@
\]Bi\܊8wt߯phEN
'?>c]0Kb KGS֮N+
̺C`UFВB~78Z+8>97gȆq?#
Yx~R#pII0m
݄aM'X-a!+o<I`ۡEYh.q8NTEkK^tVWC_ow+#h7$kWȌ]W~ZX9v)k.Fr)5p98ISȥQmՂkv
¯
98b,Ȍʤxߍd:fp;ֿhB	ꝽFM|MoMfȇnVJoڛF̫:;u<?A%
EQ& lY{6GX:DVRܓ91nx8o|+p(-*\gզ#Y믹3Ȓ]k@H%^s}zUeJ$ tmpʫ~FA} 9{Xc=ΐoݍՂ2V3de]{˅Jm*ۨ2YwKXrOPU'B|}os%ͧ(<v}^Z03~`KhsI_	>hn
qI c{@f'_Jsw	!hu~!:|\t=Ԫ(nKσS|~+P-Y/R~n`\J.\-YK/_'QW[(߮qRaREQReIk{kmҘeX/g{|^Z_]NfVt܀jyߠMN}]' \NaN<1MJ'`62dW7oj#ŁLb .SxXצ8_KJ(IM %f>"Kud 8? ij\ttX/Ku@iRZN툎#wӜ[E)-7[ReIw_JֹhA2 }#
˘Slꔱk6?3[WL\O9.Ya%6 tE#΢Oή?;
ӝEqBYj3]d~>I"\Ƽ<y%LCP9Е9}iEN8NII8^%5w~mQ4y
R<.h|~4)tܭtRKr393^0׾KfPZ#RLñ1Mw ؟*z743=eREUr"Luhx
'iJE'W30ь]w^ѦsP3dU*(7|(UVp;֬j*%ô8@"(y|]3!Sv [m&&k]IQWy"OwfZIx'EDtp=|F`]U!
sԺ*ϾPdo}lUO}8)f:j4PHXi_֭v/CJ7iS(L~"Y|3^	hޓiH͆w.>G5*D"Ȼ)z>beQ\]/Eɧ?a<uZEy{s+\#yP:rA;7ڣ܎IK`b%áZ
e$PT!aT{JN 1{d##kgީH9xnqƔ!xrѓKߜ-F*\;un7#3Cb8 NȀwOjM&)?~O*A"':wsoJc"vP9$agEGx$LrڛUzYLG.94|{'ߺ#@z^oHN.be(a42HIlRlcS|~8xiӮ	L%MkB7zw?ru%PʶAhL(dPPDp%/j@/dQ~R 
w'ɵ>P%$dBɊ-As	.p[γ Eҟ:ZI"ի
{un+
( ~uH\@+O<-SeB;D%CaB_MW]o*%H]P麙X"o OL#	}`+hRD]_$lWlHhZq{p`$6qN)&x"ȶ\SGriC]&w{!:c#*ۖ'`̇萏:c
U'\U ωak:s~aI[%S:CZv~=Ny1w^zQ~MUnIr
t2"m!=zRϐD!by8C~SvO2tWy&}l3y[P.|W3t6M9vxxY2^n@2?ytN3{r"fkqnc㤆&HKL*TTvO'p"8%ʖ?NG$.1&5)9ds?>	/	4,58_}]k|g	I]̿=S{_5L<V
T~o۔RD)稜
`}
=W|m|AP}5fE[GuvQxǞֵ4=Lk9D_-=/wAvUR5Dȏ1
HхwMJq<X$6T$4}%6e6GYC]Aت,lz	P9Wso>+@QgSxEᬉߴRD<
z7GxFR\ADWI7W#NR vwA]nYE9Wg5igYIIRtHz2GWEywRgڛA܇dAu\$8^Ӹ
sp@1m_UZ9PlDԇB
A]Ｖ(y=@~ On}(T߼b*%ױ*qYK8UdRiCaܷ*x1-Д6w8ID3JD/
ȄLW![_G/wKj!qAeA
9h\ITqۼuM䥫VFj덽cj Cm]I27_+I"VqSfC}oNi@3 q,Ūk6&i.S=	f(Եoqn
Ff?RksRZ-=:СFu]QAz߉^n?'p۳QE39t;h]cߔ0h(k$Kp⃑?;&;6.J.S[3rhWKE=/гEQ<A;(g[OA3OWEgN
~_>$9SX0E1DnZn
wIӗ~[Rhn^y?ǤpNuu>7PSR>B&T-mSlCjVEWpIi퐿l7V?7.A/reS;hYGY];Ʌ' .K庅KbɣEG5KLA>|w.^x{R<W^%`M>&PJspN#mL㛋+O@>7@%35bpրZi[;gq_Ҭ GrK9 ABG5>XXCwjFL DC&x?oh9H"r~$͖+QρU@Լ(/A}-M*/
o91Ǥ()B$p
R 78BRir9`
BȘDp
9$COW<ؼ/mPim C<_n'UoLN-Aװt5?5$

뀗jkJI璳Hxy洉`ޢ#VBDt,izM:XPa5*A=IUEL*u`"rޥ&`ʡ+h{U!MJ*xK-'xC{moiPci݃l-#HWeFE~-yHn
.֭m,D#;CV.[jsA7_GG.RoNq2Co{̝D<KLwOG+1Sf| )vUI;yρIjRٌoZ!d/pmZ]D:#ݻ#
y9 {)8lkJsd2OC>IRU{
gˣ8ryP9PcɡU1EԻZ`М-uL%,U%$М?AB?8OG&Ѕ3g|dƩ|k*C+iTGr;% =TVZ8r6/
i Q+Ӓ^?
w9r epw㦔Ts]3ŕW
꾂ںM8{X)8?@-9Zv}$CM:Us-䫪q-^&P=)P;.R]Cx+AP[Mᙦ}'<&JV
J|_cjQ(Dɷछɭ
/:#F]sbͱ|S[wdb[D~r>M:ĥ dFYWiRYnsWPAtbF%%ġq:N>
vlq!@xboq.;$=BtZp_UJpAix!pi1%S|{_* od^Q2VفښߐOi]\˄rJ0A/\ԣ4@@IITt¾C8s3eqVDχ<Z[ͽZޝ{#2>PW]ؤH	Cveg=RPy|5bQP0{S/UH/ǹjsڢYIKR| $1Zk}o֮:훌VlVn3~>jSibcH;ӼjU-:kB4&irSl5r.W\eEMzw~)ծ~$Wdc"y[D@T	!DQ!+7j= GP<I@=q1NNpnׂ֭MZ.bfw=R4>kCM!భoP|=lWibXQdΪ[WofPOϿTGnqޮb٭iy.dqj+q{XK5qjq>-i?iLTDI"eYSܺ91dۘmޥѮU<*U눳Ԑ}uKc<91RYvv.Z
2Z/喯uMMQbKpnz^Tq25xaHwM~|gACm%`5ݜfsFxR}6#iUG}\qyzkh~R>w?E<$s;vEʶK|jenk疂UUDrFT+"YuD{tI6s3[ܒUL~BmS8ޱ_Oj6j]<AY谂
P{SK)Ac%}~I٤kH8mfu)
2@DcK:Z_<[k<*tmmBKK̛9`7C6^ѶNɡ_#M1jO
a0ηCcoSNl%Ra?%$ͼ2ׄ"Īt/]sѿc	^I(':EVp/S)؋mW sO_?e.~IG_vOZrw 
W7(.zU'5+Jm[=x~?UrI+KFN.7C%!oVUUIqQؐh逊 ~<n7X:r?gv[Ȯ_2ҧ.9)tE̃E=J@ݐgq9m?/ĩ Uo_^|턼 \-tqǽuꉹwUD7W˯V<<"_0SUߚwO:&'[X{$'5=Ǫ;gjz]`ᓯMFK]G	檹Z ?z-@^ֱdU'5'{C$@VYYiip
l1<A"/t ֩6I!WHjCIf
C߾E瑿Ӄwk%H*Xiݴ-wceHHUVt՚0˸_ժbʡ*B6keǞ'.q	'y{&KF!,9L|nH23Ϡ׵ߵfU+d.[T}=4N?
{OVT%&I|w	hקtՁ|ԕ_]K^乪d8UbStKYyKOgOnp|㽇L۝iO67.~=z\1!{KPi|؄O-D0'ĵPi
-Q5V|l|)RxU>U&-gM#z]e @=M<yɭYw|w5uΆS1ɸfo98Ut|p4_#^"SBuږnC
T響:Ig%.=+)4T|TqgT\Se֮ \ic#/SG0Iߣ|J^R0F<.ӥ7$SRCSɯgEXZ$RjPԼ_)'Iu'X
5U8cq-&1~{'M2._-	8n!m˭t'Aޡp<F#70eb|^ UE_C
 ^nG~gn"f@Hߗ;_]ҽe[H&dP,ދaރ}]~˧W=rw7tHjJ˙["mB8ŭ *2dh\Tc<g7ڶov_vEҺۦ7L;~I4^VPg復0ϦJ+UY:]Ozq$unOWp~Rn@WH\ۚ)j5I8__ k{k,T
YU D+dmmj<57TTodrQHG+䞡om̳&.j/Q\WR$)lEW_j(POg̖ BNeDvQǫj%^[	Y WP6rb˚Ou|<ٹk.RVx
Ky8iDM4LNUS3;n7&{nT&[PkO#]zt@tB|pΊ'Y%E%f&i !Mit5ofu(s2匆CQR
?yOu;\$7H2 \1e)zF yfr	^Èf}\}qiBzLj:8=rnQKQrduR,NT͏r旈3Qꆺhu"p[l"IS* ٥6!9k4-)ς*$?E\Ys F_]u
b0Mn+k66ZּU_җ| )U	+ZZZC~^RD0*PS뉹)q\/1}[T.`ѧdS1mOr83ڋQܓj//B$5_N-W}rmd~hӛ\߀+;1rtu3;&OjUy Eqh[W9gz,vJ	'T
Yxu"TU $1DQSg聓s4[|=(d<*D
zC=RKUZ#U5{IhOw:ک"%}srYg*{CT a%4KCjG0fG[<N3Ѫ_ήEJ[aٞrNOLĐCܢڶ*Z33M iؠTL?xt@xF_U;`J	 Գ~oJZraϑ[$tؖ_yzUfʭ8wJ"ˡR;:W5:p+^\EW`*ȿ|΀).ʭ[vNq RpT! r=Vqse[wvSDTj*"vWHgߔYEs
lVSFUݟnaSn]RDKp3r+.u[h)1ơ^e݁ÔG}c%)'ǰ;Gu
~H@.?^!(*[C!&75yVE >J?A$ [7p=>͠vos
տʻy{^~z9٢xRknO<e8z"DB7	:4).8NP<'gqJᤛZ|/vsvҵ:ŬLHi^G㝬=TƅyRvc奨.KxE!={PҴ*<#l⥜"h6a#s) !O`4MJD46؂uIkJ D'QԱRލ0HC:PlsRr̹ y%ᚒR7A?=z;R6٩TEQ(Mۖ/_хY @joZ^8bF/:b9Wsdu&lI:u}t\wǓ)/jVJMnBd/n+lk&H,#<:p\?NH
A"BiqkW]sKvL[$qS=WMHyXOs)	;چF uRϒ,W#@KjdP7&SO-Y&ŀW!Kٗɕ᪏
ՇX]'UNiSE17gNEa%.K1Q*T !<=@wSSOC:l*L4N"m=Zj\QT<
FQjИ:Ԩoi]pŽ^[ZЭ`c= N\x\M5}u[:zɡQJN
%7>N]P}e5
!B.I-ߒ𥮄%R:Tv\ҟ'vk7~ 8B~OQI^g2)<s]} h7s~iƅ^̑U98VtXvc/܁Y\p%i9
rTyآdd1JQ&
Yr!DCIrt}WuJc*_h!g)ΐ.+AD3"M^(F2TqN櫄(THUA᫑ba]8.Po8ax3m
@2.Cx^mh(O@+.cpI)x" ((8MN~k{yIZ diݱ0>
oh0u˟(.RE&?& "(t\ǲVd
iMI1vLc'wBy^]MB6.=ԛ7&/H|s";2a;w	?sSW:=WsJEnm"eq3_8
O*c,^ݥP&Cݫb
M!/ 8M9NX-nV3q)\R@o͚y^.4Eb"SIE]yx*/ʳް<RWyYW|ٽ>Poja8ĺt=8T!KP~h3͟	^U0tvj+"`vܣX%4y>dMR+PUmMpҨ	"e[9Tp
8|Y%Q y4fzrsIjָF=G|ZU{X6LN$+&{p
su ixfBrPoMۊ/q^>!)Kŗu/uArHߕ쀖?&r>~r/e49sCH'OA{UUmI9e},~*dk®-Ovjr8jǐcxwn6o~O'Zul]!Jsጄf(8r{6i3.f':]yoo.`\]_w%Cmnr+eZ[436.Ԍl)m.G:;*UR*/ a S:k\%<&S-2zU>h5,Jtg[,8(=U&EBuVZdw_!ɯ%j)vqt@[*G{qo{bɪwQj(RE9TeW5ep`mו2>I8d
#}*PZN6%2A{f>JҲˬ~N׽Z4B(\
,5ShɷΜ"5~u2$EɢRa+[ m~~xyJGW49: Eb'>}[p@(&6*n}vIgΏ8*sP)16oX)8r39G&|}UHw9PF_hUr-hu(¸9rʜ
(
H88_r*/e]weyzZBwhB\EHAA
҉sdnIGeqS9O&/i⪿r%O>GZ xRK.2}f}92;YtvkIt͞9*AvK% (a@x
'q:9VRP׾wySVWX#cvRN5JF"	ULNVB ҅6vug^g=/
0wr\:*yxy/ e~!=PxgU_Ox1U[R'k
bg'p)V}*9q).{2c~#Iy]FJd=v
q. a8grbCtl7׎i6bGZΩP8,$'*jv7*.Pc
׼_SJ_3iR2T!7el7jB2E^fE_@&*M`Q??+"?o
U;քkPxwWIc%zuMeO%&W_%W_sG_c%<WA7PKZGK ׭ PK  C:U            0   org/bouncycastle/pqc/crypto/sike/p610.propertiesˎeIr] 13
DiY	Hb7l^k{fs#H Uή8q縛m+kqƛ`"K/ioqٸb\o_>Ƨb|5o&8`B4!}M(&TDwow_uǭo}۷o|pSΙvv_׌m[g)f5\Ҏ2[1-sj>5ckJ8΋B5vmR5vZ	5vK~㣭9LuW^Qjj>N+z_TKYg1s٩+mqɞ5\χnk;)XR,YKsv;|WWwcn̘S^cG5GomՖƼ<6gC s*_X܈ƻ1 {L6x"lJkaLggb1ם)_SGI~Wƈzgyf*9f-:Z3`"K#bl7dsR|١s1ώn1ܞ9]fv1{s.N]-!{bbP]o0p|ʆo_V0@vdyl
/~4Ll7爩cQ,O6G넶g:~>zSͳvo[K9ug&1v×lvd|X,2cFjm;Ie$Wnaf
eb`>ݗa[<kiX3q{=
@ƴZZ۷V~)\<c\{mvA߮{ƶrwx]5怡x>.
{oӺZ̫wftWPɘ0gdV>rui͜PLǑ
4t+Ժse+v]n ˚q6A9QG;20&W2δY0Av~W5Ǎ3vҪ`qsp=0]:-x\~JEN1,9$@e*⣯;t\U ƶkۅ`z2ӬX~ͿB :0#M=-`g4^+
PrVrXVcF._fLP ["Nq!Tqn\6[k]Bs{V:67{O# qCJ<&,3É
kGcѕwX-`KXgOL7㉖^h6 uC\\sQ-I:9K槾6;j:]mŲ,3laO`@xJwOg
H$L[2nyr&X. )e%?1,\_W)|]unֲC$o~OO_`
bHXzWwx]Atn7($ /k <Vnt.3XgS}:!-l42Sh5ukRdމ!PPuҵ13fWԡejH{wyc
nƍrt8)i$*,ֆK5xӚ}y`Wijfy0\;uB2,gIA7>#xcK'~08:(`źQǟuO
pJ_k_2|5po9P; [<_|68f"U<_~x9Pˁ62KXIL ގaEh॑9W-w &01pBw9faXɪAp\dia Xs=b7@m#owjf(B.c12]. {W)%9,<
@b6g:	`(6G(g`n530O4xM`~ܩJ;G|vG;@CϞ5*F#"G<gs8Tq"׀
(=>Z6
Á"m d$`zWÊy[	}N8DJઊBHiK!t
@q1r^ZlAlPrc$tyC=1/`=HGA=
k!`:Еƞ0Njle+ @K,Q(x>mdh F-)4S!|i jog=]_?XU ,&'Z$#(Gqb_|dw8piŹ`	v-X?	(`PJ\9 NHиLi6xCnb}!BA!f
[tC-FU 
Z
`
v?ZJpz(
caAA$
Ll,ay=0}73bMEk[mrrYؘ b0daHddpɑp$BguZ"w
A[s9vpt+D%fFӅQ/^g=xV&r[GfN4"Zu~#ZhH	S\
V:73ৠ#n@괹ӑ1v6HX
PD;xeg2ő,8jQg3ZTP[G
|4cuZ`b8;]f{B]Q?,.V(M\,n}$'Z^e,-T2\
@$MZP;N
!W-{0>QM;@!zc
@9?X4b	8F2.ݴ0=4vL8V;{@+LsӅLPÊmƢ8,Zf|.wطfdePW@.# ;²"Avs߾/^O[W{pձ>vBK}
aODnS3*hNa XF7l	1CzE۷oמ[%!ۼu5E1z&T&d©ˉ6Y65m(."QI=MSd*2}Ek+
(	~ϭ2K 	o}8m#hhj0v
UY<`l:Ʈw4OwL2`ZKhCj9sL >QcВnetV\k p2;	P!`'h?|~2;~Ţiv
$ x_+]4 y+ig]F(q@QovAow׿?kp~)3@~ϸs.XSuDڷ]چ#ۂj}I?4klR
NK߾}?6cџ+՞ғr-Bx!@2:EiU(0ge|߼57KafSڗVOOÅa8(yMh߽s0^%T
π>)ŅSC>{NlJ92SK.
MHN(uڎh5"yzf$\+Aѯc㳆s;Әt6W݆5aDXsvme yV^ÃAc~j /Y2{%=4==BdH34fUٍ0c`6 >ZDQ~($&ŗh-AU zx]D\f>Wne۞!_SVRvI
0̲	Ý\2&wOq@rǛ[_wUOv:L>i*=
:J>ݘv
m-x^s3&1)_3Y_Ӓ>]`vlK]3Qn]ԡR
 y `o8F@>~~>tWt4qѕy,2d"`H9rc)k5cTI{[ 6;͟KIg)
{㔳huicCVZ-^/C\fOzBѴݢv7kZm [4>OT=zmܽ<$<ЮQr睖g.K(':N09V<
z`@1%c "ǣtw(lhrxA
=1y--̲@wŸc9鸏_o U&kqfOAp0ɦ :N#~Kd8ώ0|*x(0aXDkLGGN-}N<BRM_0|e8Н.<Qdp5**a-^¹ʩkqOfI=nn+pcd"$Z_,s*ۧ
]7'I>5@hR:=Oĕ	?ng\LsƀD6X[8Ã
;|͵ۙ?QaHQt^sui{F$r4wMbU'6	#o8?aD(G@Jd8`)W.Lw8d_.A4Ov|QR"4)CÊ]IU(nP<TyTgKư~$<dGUN!{p?mB64.hLfl߇^Cܯ+>KiKOp8	jBk]Y
gNݻf-D'.a|t,/0>8tԉ=v\Bn(]Q췇Ηᖰ_
yRT.wG)2)3
<cXCwp_RpmQyk(Ktu~PcTVk4 غO᪄0q5QAjc/WפjȟWh
k5݌nZEHH}DtOc=?+U<-g$	xKv
Ӽ8f18):j:c	0mUA b˸yR{Fjk5eiD%E%5ͯES EURG*LW"36akkp\wɔmkL/鰟tpٯKb(Q0RRF!\1N)߸]:Jle%54OczȪTz(vNZM67'E^Utf	Z*Zϟu5@o7tAĴ`@a1.Q=4O{._Qŏiw6ws^R_g̶`Țc7pĀ6=
4~`=ϸP6~U9ApQG[kjG*q瞦K56yn8t_ 5;.ϟqa3.[OK}*tQK̆)0YXkF]J4?bbϕ>]1osk8oJ1F
UT-`v^,Ap,W@v w_WÌOWLtX&
$E~`Ȯsqi]X节UF<D(~KOl:X`pW7;e|52
yD<8dǮYqq}	9 #*W P"_RTjVTzBǥ/_ï̡~		MkܹsE+Hv
`I W@ywz>K]#'#)"
;U`43rpdŅ9;)é,LS\vR"PQeuj+*tB S ՛nN?D3M#+!φSX2,e=8Eo=Jg9_bAVgc&ޠo]vC;B)T2Z݈-
P ^oʅ|*2^T=	&JLԦgt0m4U:r+qNo Rt{m!K*bA(@hgC\pz<S?JaU
1<xXyG>GD&pLi*@,U`zƔXl5#"sDĵ˥Ƒc?rS魔g2H31 _,^daBRN/AW6$JjVCqg *ǺǾ"BQ21ovo'!hßZ`|Żi6J8-:U3vm
3y,##UΓ'[ҁ6fVFbտ2K& _4v	k
h@?ԒJܦ1ZBk*DrwMwÊx)A[g4%0q
F+w }
]9#A9i?XV>et%	7;ptFxXNtݜ
* 8/lќ`N;gZƸHBC,5ӫ{цh?y3 (\0Lp:dyTO-mԓZpWES̐Us4]S0ADqxetZ5+·τcc1ba"DQ:~[Yb.6^	o`R0هA
rkefJ_GѪO;IQK"bzS}TTUU(֡Z);,6;ZfA,q)_m*\* He$!㨪XB4J 68 בY*ĊCDw *!P%.,oH!0̳@@4y$BCT.ÈL_wc]رoqpϽLnEG
wC;[|Lw#fӨ߄T *SaǶ# zjm2-0abKe {Ka֪A [NjςN6ΊT"*ubYtVPP)\7̮L}e<_H;TQlnUbDM.Br'y
Vi1'P_5 +P!(Ub"h%p%b;
nuWU&t,uQj*T
SِՇ@iUsS۫-b6q|1)Qvnyb" T !Pd[ʿym+2ea6"bAa}dBGy}7W6g_4yK |q$f*ť21BBq6tpRnV(UĈvG2&GЄ""!ZتZõEk-ϛ*C
Wp$
qx[,Oe)ģL&Q=G`XaV
yb{5'Rg!	p B.@(C$ؠ"324bZ\Z3kkDx&bƷz v0RԺhIciKQD"~ƃgnEWRGmA>t x=֩J?"+ӡc*F)( 'Qk>'_nueYZ 3m_K* ;UfO^^ٙz1wҋ&:eGV^tt)[BED.NWK2ƌ*ڠ~},.{QN
DCp-T]7N ]!8ؚ
JFc1٣L6%d`YZd(G~`jKI%el H^Bzu۰e0U_l9&XT.aGOV7A--ER]8M(\KA 1=CuËCG3d!)G\
`VLmml 2bY&4ܺe\"(Ȱo0Mb4Oǝ$_9D&KP|I9
ϵpxwk#qSVAeIy<h;2kρ%60 WB()zQK5d	QLZnmPs64@4]b$nĊΫ9<ÇZwEjR~vA\BC3QDdNQ%ٙh{<!""3xf闰W`T)-s0xP}՘-0u3݅zmv~	Asg북[l0mޤU/&p<`oɧGʄu
qmOA`Uy6/.
H֢Fb8&F3/SK#0! p41Yy_hӤ_ 3׏te Y#A&|u1IGÑ+q;8p@nP)BOVyjWNa}ţJcPAU+KgAokKk[x
M0 +hV6[a4Q!T)%.uwԽZT}(]uA͛6Q`^פOW̧ Uoڲ }i/BK
}@!sut+0l;?]Qg~Ŵ;NUZJarETAY\w\	M@Yŏ- 
.hH(G/p(xŨS`
T!1 0c7i
XACo2\פLfT.	Cq<P?WvYTt>p+(9gMb`4-,[< +($| PR׉l	+s]P`tp}	pi%0F\.'biJaCLʮ
쳭Vj/.ja79`脵<^טGtCȪ4|AK:Z	ee (r?]F<o/f4j]:|F}65p_#a?CīUu}3X-E%QDL
`\PHaɖj
 K|h?\2߯?pde?P/xWIuܰ X#ת
쇺]BBTҷȀgA
m+g=Jsrޫ?/A}KrU%u,r´2$1`<a:"DpgAa<lmPRp`^%<xAMJZU^W?ދf^>Z9^ۆjWAnvy;C>=tBi`#o'+[jk)2~{
\g_xLo~͢~k f(W4NjS365B%5)W<jV;u$<?~q7Eʆ{^f534RC#l*3@ٔHToQf{$݈"	$ica o/3(s|1 G5XxtZՙV> pYO@lzClP?$ Fks+ZE6}o2vi!Ejy/h\ZI_A=1vYcWEA 6-lm6ۖkx*`UVXEKڟiG,č 
XԄMlz\*,Qaz!zUMI }>[dw)أ5b̷j<&bWKAH&
Gg>7f|eFj]n;	W_G
!R9sJJq*6#).nq	wF;D%H
i':"BR=ȑU/2v%-гfIrm޲	vY5	QK+eN@:WU5g(L;_F#ETVήPvQkp|[\jSboL~
4,g $Ԟp)4۵4.q|ҫ]!"*%II _GΞ;zC1}s'i[Y ~QxڰpbMIX*Wu`t̮Oj2Z/ܺ+CJ
͓#O2ϊg4P!j1L8܅5s qAS=h_Vc.VnIbĠ/(V{" oqۚ3\rF6,Yy/%E)Bfe.&&fG-:ZUV%	a:H-Zjpwoan3*~rA.'ך{cnQ?Bi"ig`KMk0	}	+zE+b(Rd*Bj+QDÃQ[CI*cN1uPbm`V	"֠=1
):bcvy<ҍG݊@yߔnRTY#!Y՛ʤT	v
BQT
Vc~[OjǪ*b+"
J"DCUBwvbJ0N_˽Et4Kza*-+,-5}P)`(gQYhE#eҘaVcB&lIFjܙ9miSZnE
P\cu>#rY<0kA icUf&/alclwb[>x䣶$?ͧxko\u7S32
d5| yfFQ孶b$#מUl=<Om&'`%J aR;lh:'!P	fǦm$_KST}8vv7VvTLL;֩RP-\F++au:|IM} :ZL$Ϫ*04qp9]Y3OTYp|%Xx5T'Q؟25JeP1hT	fڿ	eHw>:xaFX{+ZԚ TVQTzaײ+46c+$N܀O'--BXA8h_ǫFw:6	/o˩Zm1U|8$@l5 |o*E+΍5 ҒV!~#՚nMPJԦ ]a~u'J>e}<ںjRT>&}%%lǩV`vGL+hR04=YM%c:B42( YDO<=:n~|^axP`ʨYX;^5{F@zRөAJV
-kAh7@edhڪgH[Fm6=
oB"LSĀ}?t|\ `LQ[tcy=?2T=.%y9FE[J> u~:uYjA25øWZiSjQM{?+Gf~]JHN6?Kb C:+*wlҟ]9j٣L;tS	_{IQ~
2_sЌ
D/<]4B8̍uD?QyCb`)VCWle 7 ǇP;O02og>͇x%OJ?fhppPΔ`::{
?>o)X"ZC	Up*u#rEňY*6T	hȡU)\D9Լ-J!{
QUOYQ':
%qr#a
֋.yQߕnPS6@(G{&[}byHPM@߂+e!CU2	xP*)K)%t:_J_g0=DJoUcT/x y/ɳgj3vuo<!FЁ_d9J6#`CCP
:A,bK`.8;S>M~>ue;TZP
aeڪ~[I^ *%fy7ԊoATt>
8	x)WؓZ Vt̂Q;AH$4]2Z&˾rq:uYmVζ-$v @{x*u=zf`CFLL	GXK)Pv|ҫ#ߔTe
?rj
Z:*
CȬgĒ>E`P=/f"[%^݌'
Y%%b<k $9*gDu@ƾY|)'yTqR50`njxw1#vDP
*DۋAluݩA[6>`1g)-,8 =+#NR	
zIL?B3&E`^_ rFu-u&2NqdeBJt|&ՍGiS[DbPl wsA68NE݀l]m"X0ȶTCMĜiPCvK
OQl6Bp=o86FwŷJZik(RiPQ-F]k`.QiC"kpsDܠh"pN4Һl[΅Mlzۍ
J(@Y8_;(`:2C6pL5k(!=G*L1`Xھ\If:TIojrdלD;bSǴP٭|1Ab	t> ]3ԿtnFռ>,.8iGMTU%!N/Ry0Su<<It
+xtci}	16U)y170TI0V%]1vZU`,Tatꑫ)p0[(]9t
Zu-⊄3V08 JT0$! %ke[I*~ē
w4poTq~,]"]<*>Y=GTsq#d"oq%n^;3my%J0+?
evX%"3De3Ž"LSThp6H3'.eLh8o5Ԙ]h)ũGS1s]h@0	W	eʰ}}6{5đ.Kg܊σ(J[Htmh곦"2_˲/fpU#D/+		[>	9<¬Ub2.aӇ¾(  XdG,44D;L	- - ޞPZSDnvMk	a^6ЩRK˘JOj㔕}!CG.׀b:CN(mhez2Ѽ$8:G+	VeA61ȫ@jk݃S{I	1LtTϪ)NVq"]# f>q/ğ9C
emVStFOI-d5tL]vlUu;.^cnUr/vAsٔ$biIE<[K'RCv{՜m#Ѧ	K[Ai*˪[N'-C6@9ģoTlrL;!ދ
~&?#k!llu}V%u{;L4?|%B	j1,Ra<M
&Fhu,)(TqK*N(Ã~RljXUfcF ]@=ՏrW=s@7*PT`b!3`iTFى%P*mUz

vtu#÷Tc8#A!EE~a.EU8!`M	&nځ\I-rkJwMA 5'x*,[#lto%=4.{w(r}Ģ^ګVKa
O
E徑Mըh~udäVMhd%DX+*#G%j[j :yUe2d̡ >ZQAaT9@4+KG0QqC"U	: .Qnd5h68㜕a(⵹eV UU9MD/=t<OmRrpn(7 CabxVS&nM)W۪T=_rU96`B41HdUAYFRUVH soʇ@´MS'ڗW9֙ߪQAS2&t4j;[ǨdzW%1:C=A.pj#TGt:t[Zl[<Z=O*t,*lO9P%XD-i&c! P^'[en[dIv;CgrSUxHlGCh/"ySpeZ qq1MDŴuDT0PGfsRԩkڏZR1JH~:G#0sZԘ@"8h=\5/OAN)M>[iҜ>4RS)8+޸S-S09QG4k:sk2C1tpKE!l{H[ez¼vnMP#556<J*G@YMC
I0)CGTah}4ETGXo	Ӭ>Wo׬2K\Nd
zxeק?;d|` 
dJ^ P
b"h8auE/ɲá\dNw*eܺc^`rI.aꈽ RT˵a7Q<jꑴ EU>PN
SӢJiR)bt
	K3@V?t>t?QT!Q' fQk'ǩD1*H" 3LuU_nk-I
:NtS+
GMEUh2tixoƄ@^ y OVp`oJlodj,Zw@3jKǇ[cXu^
VQ͌!Pa@!*遗oRMxʥXm}f;9t~|_~v*78q 9%n$Iub*I?.ؠz85Ӷ&B[td\0	&B`XcLoF(YQyWĩ6?	hŃ5xJS<(Y4F/u@'CDePFxTs(Eym]BubB?xDn"ԧN+WM#$P tIkhRo"S͵"`:{E'$6#hW%~dtNYKDbI

1\84&b=CmwS`錩NcLRbWJz.Cϐa@j=H[V-J9tP'4qc2J0 BQRG:RhRUqo~CYB޼X٪
/U/ ʪTM, GPf'(ZӗcNfJhOPZZZ-8(71bԇ^V{#p3xΫO(#hO@`gV҂rUn}+ \fo~-;֯^\wgK@S5"+꫿u^hiG;W
%^4qhͨVA.H(~qvmIܑ1bBQ??TFwBsN,*^&6R`0!M^[ݣצ;KMȮsJ2]Fk*WEm=g'S:,Fy	qC[G	<^ȁ=7F YH*4+oXKLq-1%	VUu\NxFil\𕕔j:n1&mp`rҼȼV-OT;Ag{s}֔iՏxbsJ1P8*ʓ j[maU
z˾-RpGW[=S
"!oƔ..58]4\Zگo 6zr3xI*
	aY:CeD-Cԭgt>pU-̩7'+
)]9STRu&rF &@KǠycMz}i`*ψc!2mB7尕:˘['-A$1'Z}P.[L*u!Z)VN-r+G]o+07 aR?FT>#|ό*+D}Pճbh^2Y:ڕ[3j?p>ҸM	ZhIڌ6IHs*YO=
:0];Zn~f		X*eO;rCƫJV6=-<l	`*GX.k[D%*@;Y_DQ6|`%#pĹ`b=0߄~dNdbGH,0]+34QK8U66"nWZR
 !NW&uQA5[
m'3aYPwJDף"}&)JЙ[s.V;+{*TG☛e` LS=a3VO}ARf©Wk	J7դнv-vk#6 k9C|DY\*Lj0Ojˣ7'mkT<uoWqVMKiO`*`6wl֖&BLm)&BuJD$;lh%CKSs)Ǩظ#'d5**:Y
'7}1nZ38AIb̈7XDpӳHR*
kf82BSRSbKusoxa*(xPG7a5ivt%W(>IEFL`HnТw|ã~#&t9
j7qv-h~SYn-mǜ4jE`7u?;e;ٕԪ-zwۥNT~J[e:b+ޞVVdoS:PJ<5SvgAK|˄W
쑩\pF=ș|7xv ä޲cp,wm*%+Z=oV5KΚ["\PlVzEA*
r[Kǳu$ uߍ j32^:L"dϚFׯts	3{{8v~
b	$En{F@@'.td)j├ZVhZtSﵤmAĨԡj-@؀#O P5:pNTVI]VDZ7I]ZfTWgJ t`5GM}T*+h*M]ER_eo'#0g,5@f4wh3iK[I BҚN`<Ј+C\+949%UpZULRݐDlRyE
K^G7"\+:tG+`p\HU:LF-fU/L:Lʭɴ~RU^PJ[\hKR2aNPn'Ne:iI,/(kŁOSn;Dlە@ZIHڦbnĭ
98JQUã<Bea?h(	A%7nJ(Ȇ}OtK]T󿈒SFs#uwEWbA)ZeǨ:B$/8j}kNEΩOVZ"*tQ;j)ǷҫF_0%hUSEuto))\
U&uؓsvW*\oMȑUgL=T:)/0
մ(#dR2\ё٨np:w,JADi:g X`5SYmeʪ$ӡdj
]KJ%c;$-)$O|aTun PPՋj/Vsb촨&VU&fu|BM=46I%V-VTue~`y:|$j@kJTWSυQWڛ}@ 04:f#(FQo#cu# !˥r(-6u|JZU8ʓj  ;*ZcF{#Vu@󟫫J<JCjZ<9Ҧ{7O^vexl'h%_eAT3,-5Jvu4*JoCQy*>S)ZMy:9jSQ	\<UIJxao7"
ȓ5xWU
&5 *g4oI[:>x^v[q|OJE=fCIjFk*F Sw-h36YPsH\ÄB<3 i
G	9Z`!2[GTKhT3U< T|R ,$'0:(4zT<
d#MΜbm$i&0MM t(LҪP,:E}aʸH7vJJHQy՘UQO긖r/fW?eeMCڧ+6Hzre	Cښ֡u0Kj 7RVbV#T̀HD^fQ{
f^m\zK.zS%A/Oτ[(>T
Kp)U+*'.'l*p6Ažy!&-vάl=Fd'|ԈfR
#Z<vCW&-"ESaUFUUq 0v`Ͷ*jzx[uXTcU+U'#3U.mJi~WZ@v=FRV(8T=ԲXm@Ֆ^+
oSCpQײ2O%FIP+VMëq/K*"ixOkTyAD11]U1͝C˷V
+N8R"h42!ێ"Ii-]**>jcRUj$TGjhAI 0(Nj3j:j'?)б=67n-_Q+qGX\Y4
2B$w+qET ߢSZZ"
	
:_%^z!,EhCQm.ևb=Q*b,:3 ҺR5R1NU&$p{NXEū}x"_LQ u*d? F5xnV
"PX,փ8TaHXT}<?9'j1sxjRNTL	u
kcHUPz|PnՙV{PXM	^}Voq`n[m91]Լ66ѕ	\8
lU}F@Hu\\`}d %H5YvX:rjFՈ'4
890OOM?bV˺zƩa3OHt٪!v+M=ǫ$JK͑TJ{a*=@Cu&sI風~Q[;taW6wyiNMiEDdmwd}^IP>pUAWt81/v4BGßN;FeVӡ<=żFV=T"JtNe%AaA+G]<TG=HYbDy|o-]	4jq0@Ǩ||O2idF\nKRAO˩ 6<0uLrpF5.OD~$(&x$q\P:2
[W@i:g/r!>B˃:^ [
# 	0
@i5^@阠
hֵїݹ~%ZxeH =Ǘo.
@IrM:oE""'{ύoCέ\0RF^50>lKZArv٢R`+e 0%`ڗaZIW")[S[OKoJuC2MKX*b04W:u@bSK9SWoa((pHdWUvUtfFCT٪) VbTD㑱
lhNJeeW2(/JXQ6[)cS3dN#a'8[a̗0QcYW#*^ʢWD1Y?wiM'cX7e IqԾ[=`	`AGHJa'<$-FT Ɉ )p(\eXpSgxC awFPW"A:;T͢Eg?F!#f=*E<gPEg%@kNw:b<3z |+OչnKs+[:ARu/!휄-TpoySFrg
V=ZDj."[;LوMF	'R瘀:%@a1;ynڤϘ'sA)h%ԡ3ډ.OM"&Uի:USU_ORMĪ h{։nު@ͫ2˳dP2ѯ^gp,MmLQ~oGBG
V㛘6ѡ(&\n`pZF{<*{kMyr4NTN3>B@iO,X:$QZN\j
_@69o)D9Jfńe3%nޱF	ACUvLZm92㴁
qsxC&I$i03æ:֞c7U&9$
 A\A\$#5$TWeF`nvg݉m\-X-/W`?fN}Vs{YJЛiqLM(2gx7oq^>YD?(P=(1텩2Gs8K.4Lc-n=cjXՆPF^HN6GˤuUeVlw)uώjzfs'@?|7)FhyÂ
 A݃JuD%U(p
}Ȫ,[Ttb<%F{LPM:
i) 3ho.U6u͚QjPoek!T$2qnO_s8oO/80#./YfRԇG@;E)]J?ș*VIzWsz-=NBdIBSS$Wկ^g+7/Jg}YQWtvm	K|S. 9Wz,g1z<<8 ITmy|
kWǸEw,2~LӽUQq1UKذl^\!A*aw1δș3'ķ3M{9S,.84g@8+>e7$`e-
Y~_Nok(&\q\T`+
.^|u44	uz7'ݸcwZGsZ=|b1ɤ-ߖh|3dw4.]M{Ti O/l =bl)rO@&bSb) z'?m|_9 ʌFSR+z_쪥E?{ ܵ8=Igm02QNՃn6"̎/^'t6uW0;,cPH3LP0u$3ߴf
oO~uhZ8[ȠQͦ봛eJg
VC}Y$mAAk|ļwTMol<P
Z2
? hSh~[<L.R Z?rE,'`kDi67᛽"LZyPH&ȹDa,0PVZs&[WS+ww	/jV~c]{Pڭ0l4kaC|zȃ{yy2i28Lycy뤟>iы{3h|o>iiI`ߛ> =iݜD=*IÙgWpÇn H9L&8y
yuх:jQ,ye7,ӫRvyw{?_2C]
&JKıok
b[mјp Y8,Q]T^ XV!Z82~Sx[o<Δ94 
ȣQpʚr
 
EGn}܃Mh_R8YI1V)úJWC᨟]^Ģ)X0Y+ /ɏQ{k
C4A7tg}J@eRX<]L$?BvYQtv:Ƕf=/A7"8țN(SuB<:ob
r*6SWBMm4JplV0NaԐPs6(041~랎lv}jZO:_~ՠs\/ԓ5T2Ǜ2A1'~lviromGnV
qE(_7#lXz[4B4R4sCr<?oHã4Pԧ
 æ$7=2!44(̑2oƊ*܍CUy
.ܺz.Uv++H}Q#ݴ ^x~Ma$9EzP4֫PBT
0-GQr$CeWt<<uoǈ=WVТm'^W~OνT_þ6M,)+|$P3
x#4˙+jpZ
{^S\
Lz|s(d{vAA㋔
Dm5Uhn{O-gl\@\HNQ_>5WyWu?1Z3Wypp	Jsx
ơkhl6}C<=9vL
j<F'lMerȼ"7Hs~zA M>ڠhvVGQnG ZZ]Q{/}>Dy`Ӊ
>dHFhsp
M}Rmaʀ%j
AaDG29<f{ǎv\3zk4ɒt0DQճ!؁guU'W9lҔ;x3 %V6[8&g3N(Sȃ'5c9Ph2Wv-/w	ॿy˞xVY餩dle6'MZ'k3j7J^|ɎILO: Դ{OgBz-!&
&?N&[w>;>VK
';t\ɱ܋'Q1Hy8JۡU3%~ejތѮ6q6ь8uk~H[>2;ޭ48]z7_~0NKOLP^t*|W%.onkg:O1IΚP}E_Qm 	dUymrPF'Xd}, ʩNrQ6si] Xr^ZMi*<Wg`Ӥe<h<._G,[կ<un:TMVB >u<KgkzwMLh|^fa`Ҁ7V3}É<;ZTV〲QSMʒ뉻K
utVߔX6_VWmj
tN՘lyN5pS(r#u3zY>%8q9k+  ʀ8@g>~9
m4cAմv9?㿆.!`y㚐k.Gs4_
涞Β)G^So@\gxW˳7EgZqѪ!?fC,B:x'۔Zw:Aͯs٦GA.$;Ƞjr lu׍䱄ѩ͈q,nN_OY5LГxxf$;s4=&h*MZ[y
XlǻhgA-[UY>-`G`ix{
\ 7Mp7:'y/>h.+8vX{?51_S=K]K,'a"~VJ6:\+b7m@:jF_NЪF=:0/BJC)vv=ژݜPyϷ65'OzM@Mn	eT
N?PO$7iڶMպ+_;-hω\*\)AK+"270MIqh+-48
hI {i
u51y񨕩u}2)9tj(W7'mmi"p۱=i0yY@xsGDSiQ20zPz^{44ޚVvPf>,iJH?aŃJKf{he'4Ci~	
,[h\ս/#7{xhpѩ@T3& ݔV\94[\z=>>RsE̓T~?SkcͯB
A%rp4=͟MQOঐ)~*4`^ <tSa&nh9y
HqVAcT> o]P<}҇ڱ6
gqfyi+w'uF/.
kh93(:hn@鮬~m5[<l j6,pB l0:TJ:qo HVPxJN9ӨSO$mcO"sE[&ymGoQ>ar;9|L8(]\Qw訞 >>z&@*][
v>ѿ| ;ؓU̟	F<{U3y"`T3>S16GeU)<=-&b<}HUqHex=֯zo{yhiT)
^e]Ps'27;nlAq$:_78ٙD@e,r;7XyNZMmSy:tLfellyLOfy晱ܨk=),u1!OiYb).6jxj
3i5=s,7$v#e_R=JCaXɟn
G
_թZ';j @"U2-?E	Vx91?pi@=,
a|0A+۠:;t/os:|/à`^^<±#y5/Ӊ'Jh/މx 2=I
 4;69Uw~u%V|
@p
2kFcO&-G}>u,k~(/2IҞZ5> JVupXԧ'5~"]㡊+
S1/h^y;`B<f+Wn!~o4➟b&qGiڸ؆
	61JSgɄpIHEH۔n?iݯەWydEM.yƃsX5ZheՕN%
D@ۉW?W{#~!4$2u( ƭsaZ([)R&>#k"bf30/[iV<VeG
	R({~k"#[^'5l6Wo6Dcsh
آzN9w*4W}<rl}F2[O.hK,]8̄ӵ8TWTF+zRyꪸtJ56sKWᅱו?.i}R(rXiU>(klX8±|NY:%#,C4u|-wau x@FHK%Pé6Tc[2t	!wQ>	WLsd@hN
	xIYZ' XmӀWW}L~9NY_,#4-7z0&VMO#`:e@6
S%4xҔǝ@P;eѺb5^{O;3=uׅOK=fe|(%$a9W)* `NE,2o9홆JY#>֩lsTK*߬-OojtSeFW6PPyL'iJDԹ 4jSkRƫ"#^X}S#^'CL- ]7mpWc<h!]LD{z*KNK[^ڷf&.=oͯ
sTKs54SnG=?젆
e4i-Z@hkl*JCoA/ =i8tJxZ
4:1.G8)
=05,LQ0.^>EY0]a@1ut緣-ַ^'lcI_K(yF)K0|5!n1ƢLv*	fRtXp_KqRRDQ=_`$$zh^ieКkzw#9&h}B#xJξ(oQk^9RyߪrG@b{̵سoj,hԇ\t
SJ]2LK,-hyɽ~t7቎ʒoktlx)
bhN{w>
,UQ#f_hDaRnT._R>- =ŠS]F D4NǑ`I]>%m֩)VQyzbؗp%gW">W3SDw23DC%]U	+Q?~N	N>f,`_ ͥ).nO(	-0eCYAO5f:~:C$[xm? 0Ҏ94p^8!3TL0m4x	T!k_<$eCjqHO.)?&҄XzOcw|SOW$7+bǯbhSM],<a13B$@͹2m]"Yq5;g|Uu\빥'&
`_jYEd'0ONo<8-'3)^ R_d롬
Ng@>Y+ӎ
9~,dle<n}I1*:ޢ֕39Y<bBӹze0YPYW6dJ;j1yOa*!
iqmRk5^O
>ʚ#J*2d2l},SA"΃{a7y `9]!hO?TRhf~7czt+ZuQ B4'+ A12˕uRa"&cd4R:&
4.U]Y}ƓPO|䥽1߀.:Ļjsi)JKyZEw:r
.H?JHfd倯pV	,- 瀐#`s~fBs|:WQ,A?@9a\͚}RZ Va hS6㟡"`:,d.ZdefB%~OO|Կ % ¯PD&A0P$X<Mz3y.VǛ;ڍWbҡ8s8ɱ\){Jt.4jZ}Mz5E'.<ϺS]@ \ud$%3Te)4h]JW!|?$sⱽCGr2%
M:P3{C˴6NG>sp1JAoXjkn\r9LbxJOC$J)֜͈tZ`eL1'3u<'Ы(nf<=-Lo87ɢsy^Gxy'6wh8(ZȪܦiA<r.ox_$=tܒ
nKQjq#(OO܂A
=@>cDsm=*u30=!QAMt6t7\o'щ~}w}䪺d+y
e(,*Կ!N/d][Rv,3/u׏⢾Æ^8лX'nv%PmӬބ	<լݦz]I@S/=']y_M֔ Tug)HG鵟b^Ct? ˄<0>7KbnUR-k[4?
eBg6S&xw,͞Qkqaxf}ԍf׺:;АL6_Qf៴,K?^<.m̺))tKI9'* 0NCvnmb X
,Si״̺%{)^>:}g11&sGgzIվ	(Y3Ao}旮jxnW@=],:(A
Ѓ>ڮ6)Pj!`O~@(d9{oR6ɃAT Nh)Zl:z^aiFQm4U}Z8|Nn_{#iqL~SwOݪ%Z=^/]Or~~[xqBM^Jq<̱W׍l;5`+uȵ$TZ|ɀҜ1Y {Bz~"cAq=ۂ{T.TI=VgCKɻ[u\#>%z:^\٪F8s
8sd
葻mڷl_Š}SҼ;r72WôV"v@?nN6>; *$9br
ܶ	VðG32ASaFJ 7,;2
'\z
	dP/+^p8vu8yܜ9Bs$ctʒFٯy
6FбoSYyނ"}c.itS~&L'P
%Cg}VcQ&m~Cq z1eey<яvVoIM]?A,;*%R 	8
]O.w	w։N#wv4Gmcó8ڴѧvr>N,dٽQk=iX[q롵|;I;3!bS >?m d
6'Azs&2F9nc< 갘7Cu@u+t	0sӨ_/>U#CrO'Ohul~0*Ρ9'gz]t{)-^?Uhy*r\U;
k5urpܴjAoy=OċRһ^^򸣁ݨ~/0
6 $ʠ|x.yn%j	BNbOhy{oV
8 gSM%OMVҸ5b|Ge܆uګx5`/z͡3J4(~>iSJrME7Fw|L"K-<m_`ZX ~]tDoV?o(p<]݌MyYz9|T)LC+FԔncu$ѣ83xݓwn:~Ɋ9s29}2*i2o1vLfT|}Q
ӢsUAuAu?`MJOb9P0~sd=VGEG>([@ltägL}vHeYvn{
W[\5(jb ""8~W_*-!ip8H=ob$+PmԞd9wDWNo\> mt8QQY=ʂRgdyN?GDc=n3dNU2 Q/؛s	+@Mṩhnz"x`M=
W!m!@:+l0ۛ$twcKSt4|J":IfyRCJP%AUFPЫIyRW%2e'|:D'E4fouU <
yeN>\AVKT3xJP=R7; g'҈)3Y/[~}e3A tLC (no< <dQg=( :Jk?STފ፦S{ ⁗F;jk5hxY^sx{PМ:(4Xzu&6/}tw<_
e\o^zkMѢ/ ˭SH w*on<,N+;&e*6D;Mg/Si[S*6f_8ޡ6HUMk>raXpQiD֮n-!KWrw;oAd(Apj~}]I?jF=Bjjy^+n!ҙmtkUQP̑pbl}ku5BrF𳉷ZN{ZϞvҪXu~HflY߫sI+%g#/ I͌y^	&Y3.˴,Ť
<Ki|x[UwenK܀wرn)v}05={T5]k.""X񂶫Zs*,oeR>YKc^}y@(k1zot2iC̔W,K'pp9RWY<hgTfXN	ccUY깦y]6AcQͧY%޽R4P+]+|p]g&sF/!6;9"G>2Z)
\!!lf/?OtѴ:IOU;ՙ +Jl_{V
ᦱj%<p~ˡ5Ӷhu_8&[(֡KxV(?V[.8F,%< k	,ɹXΕ]'T>ã,QЩs%=U;jv`Ϫo\u
%֯\2ަ?ml[tN<bUWSٞpiKS<H 64#U#v{םdNjjB(2g?ћ?K+[CFTShfzg P)2c &$R^5KЧk=&<T~#JGOr6we(nWDjs]STq3QLkz]a+3EVUcԼ[;`If3	-wm91= 2uḩCՀVXpãzu G6&׃)XsRq؃a|7Of j:|>|o/{q!SF36[?ޑBd^]Z.e#\ı< !lǫ|LFU8YMq:>s5}5is)z}zOd[cf5W}x
0s𣚷GG%
;
c"xyMtPB#䥼@%v#	wQmٜ~qlNSEL(!*	>$Ʇa8#͎y؀5mI@ 84t{X&s.U<OJC>w_(t*FGkY_ì3~
6`ң$8.FU9iU*0F_f-I~SuAq.dyL1`(G0m_|<^BZ^ͣ4Z⫒KY?ɯNB=@jEsxŗ2Nb4*Gqlܽ]ڜ iϚNs)0рOe`/VWK 4ϱ-IWʓZRi~l)Lqݩx5ykÓ~5zz *'P7}Ngk)|Wb{,8kZ  l}a߹U bFD<q
X|遼T6y@]= 	]U OClw}AJ	144>T"W9kyYO}FNf &0X5JQIklxyoGܽ;쇭ꎢ*emƲXLMXt۔9t!:5p8gⵙ,4TL¶~[)I}4$mWȚoο3i)C		]4Kϖ˼L#0 r5c]/}&(mWMrQQ+{JjͳeTSn~Vrd<(EЙGi_ST#G
H>i,hZn',EOWF<a?2|_`!)m*uV=Y|*\Owsj
dxiܭ?Q:l#s'o4F<ɄERtFOtMڍE]>ͩ}pO)%՚#/ua9V{MtGvo:@S{5'U#_Qt-(l
d#m^*a1V|}O8X4oRsܖw4

Mt+O9bX/KwSOO+
Ng-1尷nY9òv9d}%W
k	!q̿(ɀzKp NN	I[SqNeEkVbiQ1i(Ävr']>EF
7Xd?R:̉'=?aPl|RRR,utR/OV~Z'޾N͞Q~<L>LԷcQNQxhpvHߩdzGS'ck|0V7hHW'-2S!Hբ6xNJX3`y|V(dcz4xS!@m^T5'>"Q_GՁg
5g>>8υk)v-'ǁ-K/_O3r̫f>'!
h
ךA0
?Sq\탼W1UotA_g3QBv3nXwB/	YM-?譗\ywݽpTp2'DǣT~f*ׇZƇeP)-N
dVMRd"='8n̮3uX,?Ǌj5=60f&j8B1\[pUHT 2GP>COMD7%T<S=%2g:?plM/^WXr0xdty~܎hhX1ûS`ƚ͖A}57f$?Ǜi&;Iyq7}:g:̼$Zt #+v¾l?9W5UOKx40S1,3U2uʹoG8>ߵTU`Ƀm4oǄC% sƑo([{AYW7i&y=S>=fŰctWLUV]EyNﲧkGA7vN$~tjȮ{ |<{#754>]
ǃlmͭDǵtkb=g
X1훂qR_L,LNƷKc4ʭ;FL
;=Se<1IмRkiN@ic"٧RƋd1891z=>Va˪܄?_5YB{jͿ|w<W?_{M.>EoxH
ly& u]HJb4`K|٠ą:WbB
#ZzHAGb)vƝ366X
wѮ;
fL52?:zh~!Q!<'c43 deO;_4C	۾@ppM<wGϙEN\+k6s(=&%Ǹ9+u,0}KЃ?&?,U1toP9gb\R>tHDe<Z	眆TQ!kdc<`bk{>M6X&{05aɄ~NJ]b|α4SM֫nM+@Bi7o:	9zKmcӫukUl  _ܭYL΢qQ0yK֌wʟң|Ӑ#&isFq4P)dZ1 #OԤ۰&^cTj_^07:(/Eu2uJDw;:KIxYn4(>9se@:h	,C(x1r5ܡW
~d`?#^g̪x"EzkN{_ٓ=d٤ǧ[G*v
vhh_S^ͧcm&
<I7G}vTx82+- @/.|+?Okx~k R01	ʎwnl5-
Zn]wTk"0Pf$R Ưz ~z>w{;q78ɬ.>sӿяЀ:uۖ|v(s5W%ؖ3t*s>7p7|X/	n_L[G遺1~n<)2wTPPټ7hɬ9GT8-Rs+@.6S-^J
ŤOvpGO2[Y:2Ukz}^O

({~G&d0:`;{@38tH&?G-J=!D3P:1k4&ueEwyЖl\J.:W7
K0٧Ґ̯G9G*.˭L^yrPl	ퟆƕ^-IO;
	YJVLsLBj@
ڝmpx_Yn%52>F!6e+ARul)e_<$tU~v7ViuVȑ)mb,<j)odF`1}6^ '#T8M.X6(O:	#ǦeSUc4O3j~C3ѿ4`ƫ1ۏ%	@%ije>N jcfùǣd[K;QfgcYlu	7)n`׽z-0njpm0?
b8J5K-cG9vv۠Þ[maY7kC+~]Bi'#a9@w/EI/<-$F=:tiUx~#T+O	Y	<Y`]KiЍv6YKT.o޾R~lՉdji$޺!)ǭFwڼ/~3gͩ$|xFj|O;`{ɖ7xHy7E(a Kl4vKj,^cGj"{'R^$yV)bX(βzTL1neIuu<1SٌpGiBumjʨaq$u4rQqIm0B{kT&}v7*Ϧ٦cH10u0I&S%%KRb:k'Bz
<O}'&u)"%67n<yǻR3]`m:~[D=}Y{0K;bsdnM#5(P@6oOǧ#bt1G	3f xn͗Fƛ4J38]	jBV\xJ
o ^7/m9WΦ0XQWoZx6dʓPMH67KRdD5A$n~Bok@|)}ed<LG@x{͍mN[OK9/# ;;=|c^ƙՙX.tG3>jjfbGsI:_vB67%:~P^Ҏv>^xmy>zd3xP}V}W*׉0q<4܏hNsf.l1Gfyr0})]'ed=CVjd=L̺\ kpSֽߎ@5Y裉ҧ>k;aw[OL(=R>JIl	<%%(+Ѥ3D硫\܆՟1v&b`9ȶKC%ЫwR0,UvݲqWi4zQ-IsDIJ06Pm7[2B-{y'
*L4(rx4%:myn8Lf= 
xLa6{_0sJN$C9o5$ݰ#z=O3qWuƊT@&?1|c!sXw
偣::CFSyQi S#`^-AOz?>E)ѽzOK[UChbs+./v(ޯW^GL5=GMv0Ly=Թ=P|l
<9)ϻQeCQNs<lEB_y@U) S>_TP;AI*
i9
* 	*,
	/)P-ϩSBJ+oʾQ)fd[_(^~R"Aj/:{-LFg/LyJɋ^o}Ə	|꥞98{*2O?Y
`hC{~s*`77םe\6/5.UGS^{.Ő_&ۃ?hjYyWt'@W-6:J%OgfIk*%bޏɟމ;֓90@O7I3Rػa\M=?}?
lIk@LVY^OʊXyFo,^Uݟ[E@Sp2Ӳ<ۙ
<9UDl6V)"6h5VGʖF?eQ	,g6svz}1yc}n^gc"%m*#>@	%`!+]yҬ!S*@*&S/6=SDf|8oyT)9~*߷yΔ&$"P9cʣ(#%I'"
1,7ttiO*LcVo5jk:j-6[8-T(?<"^\6a꼒~c.Sp7xM.~Z9V,ljG4	Cck=&PCzN]c<
r:IS3,+;dJ
Aj	/Pi:Rئ@>쯼vw|O/Eygto=pՔIN }_g Es'R><*۱XVJizvs:8NL`DՉv*E`8	I@9V<	M~9&2d_&}T:&CanSڻPKo=4ۆ[@pԌhu.4sD?h
e6RImR<XIupLIt0@+s꘢Hhj__޾O WB΁,u66Ir{"ϋo=@eqQ"k
0δ53?zJ3Oo"a[AA9;P.](l8-tdMD:MY5?6K2}O`R?~,WP|ғ^S?@A$/oދneh4='EM$|ihUJl~; }(/?q_uHB80?Fº_\_\e=GtӹֱǨF |M`WwQK6ٹ.)]{9Ydcj> .?=݇+(sVXft)
Md{/=3=q;5UU3`N-1u'j~~RwQ74luϥR{CaΣ{ݝ
{u`wN>o5(x#)n]YǾXny^t'VO	2#oN'21uR؃=E5]Ƿ[QfH*zC3`'^K3#yvs$ f|Uͧe 
ʉ߬,ړ%<*:@6M	n}GeNkm^f;O@i7l	4`kIG1?oױC^赣!!o Y<NbæUOw|m'6#i>-
<#ߗ֧hU#wCp%}7زd%<}	1kgޯ/>Qfߝk9<g͙oLZTn
(`ce܋(dIуT}z.'<iYZl~@R9
tg@A»m
Y{cfUqh5D6!_ϫÂ|:7͡ݭ>0. &ehy񎗢mWQ  鏻@u&|,/bH}c"|{45xrDњp(I]ސQAAI%@\fKJ#0`e{{?/M43&T,RuXa7un/cDۂxga&@0?hk
>g`~G
^x<r/6˹>63.n0Kdm'=mS qzߧ%d~|6C4X&ʠOHmFh 
oz)搛&^d趔~^
}%ûnoZbEڵ45xگd>ZA\VwPX #;`#t:Pf3<PrTt4>Q@UN'IU{_b -n7S+6Oqof7|ЏhDk5 B}(ūeSD=]MGרf{I#32_vZ2K(#1ꙟ;$?t>_ެf@h֋k]@%aҳyˀ䏍y yX4?:BOәϡOGbްQ">sTsF\V+8.})`4c4IePQ]Y[ϨiC0vs`)&4Ǒn
PѺ'!k'TCr:SY"TgM(Sr *,#	P(RGб׹82ܸ3u6yڔiO}NhGQ^	́'^Sw`=K$kc%YT@8<sxBD7pv˧Q];>cfN5ugR9Ϟc/ӌە!Yj?vKS3u3iU|EX06d⧸U;2;;|yX.Sl$7Ӣ.;o,;kro޵dXd70P3k7ÞQp.&fjtLr^8cҪ`|%6Y^T7s=@4LxW[~_Oj$KIx_	Į/|ҸB2;[|"h=]-?6bK8`av:3ͬi4`
0/\b[FyN SYMЛ]5aZE5uSaz"zOޫ|vb<o
W>jʃe,
!a`ל7T^SWlVzh aIK7fi&i*ZwKYnR7PPXݦnPW{*+šk}d@WE}ewiuFZˌ,)h.sz c3"VO&W|L]>+-ahV;c l/k}a_fʗHjE]s~m.vE<}B5q)?Mޓ<C_衎6(&:	S&W(;:P^c\ዺ=pǋ
6jPM߷i43	k0LNe4>hѨY!K	⡚ѥuڈp"("'sp='b\ؙj>vcEfMu
/Rc9ç7gT=.j
jt=FC^3P["CimZmhaw8#χ7}Y+erBZ,*J&o㴹+gC#E`ˡi.=@ 0ĸa-6|zAӒ%&[-QC{a/8K4W@H8
QE huY-+̜;jo0򹚡v'ݙb|W0Pgb5umx[m) )!qj1ߎ J>qlU?QWxyre&
ӇMWBd?
,k"P/.)+X=\	aEE_[\{ptW̶uM	DƮ[O䂏t1FoZSeh۵ &}I1FJB'tr*^)a=Usoj= `te:Z7%ɯwIZ3^Iu
(8U˦@ V~zg8*0:+f{]I!N
P/)[Mo|.JS*?H[~ #;J{ LG!J󣑱	{ͻk-|4VOk@ǳhnOT|3W<OtM=LU /zw.?ݽ<Jy!E +7o>;oBB%>%MS{c>n	T0 9溪lHD7x ^z̄Gh<ɛ9H#Pўt=/)8/dvh]>!s[3'⎶,?wB3י.DYe2
>TWff(M8߭9m>h
iM[f:k4}|Y/)T'Klz42ޫafPcudUx
إw=Nc;sm$22msj"ϽM<o5/p4]㽔L @!%^C)X'KnVb	
KѭL{]Jm݋v-PP?x2ZyIZ!z;CPwR/  ;yǋ	ؚО>U`~O6P{֧%[i&5$kJ8R=)r<I/B?5)Ѥ"pU<	$c@/'<ԩy0juS$X;9P(	+|H(ObIHR=Iz{2)i%@e9$v%N6Ճ=؅wNfޫ}w	v8%_SWCv8,0[B?T#B)rF< V+Q_/mx>i*[ޫ[ڼYC}NO/lYKT4of<d7)_e֊!ȴoGi,[`2ػ~nA;Y¤-A:*OM\y]*U٠.]i 9G|/Bh}ЬpVWFY(p<wr,z4 yIAI>38j*Q?~޷Nϟt6sSǢr;Lxڧg7M{ͦౝ(&jf2
(#uŋ"{!0 <jA
JTSٴP.&ʘgg8:4qP8ɻT mN-MWx=9(ASl3iިS=OD,} J稷fEnj0nKgg+li@XJE.֗5ڢox@3VpjPx}%z֚py󾏣+^8:k)iA'}l65sޚFuH;;yv\msepČD`}5c!fIxyKÎ>m6ni*'B|.n`OdknxC}^:c{v-0n88Q
QSxCSGOqs*(tugS<2P=3Rj,2[죢AP+{omOJYTy?lc4{ԄӨ|{٘^@*?|3X:̛PvA8M;gPz9~k֛WOqkNn7yD֋Ի8zSI;tyy#|RE GIM=.9MZ'1TǦ;^zʚ4GjHxZk.qVۨMv1^=!cS:%wTѸV}	]^Ik֞]k>[1$x#Nm.@vh?¢[G>o_j'IKތle#{M?^7yߛLS~}? MЍٮ\̂2'1l0|aV U]}Nӝ"`42<W='s^}Y2:i^H.ẏ#
Lu{^lj>ɜX1AR@mZBo?2ЪjzCv2?-ִ
9L2VGt.V-uk
Ƹs?'ĳj%!ۼzm\մL>Λ+]ףNɤNRy4*ٻ	=Uq.n
ȇ?pJsm=!`ydo]).ܵ3w{pM&9W(-k=>c|(Z	}xc5/"toobid75$!y8NPj͒_y\9(5Ѝ51p:_Pgby'-i:#pnU5Fz?G,˷ 7_MOѺ&Qv)t	U $á\ h)zCjNWq [|}Q'ќ0/fDֺ3,8ÏUrz1#8K<*N
d"Tlѝ
rLz3$ftbhx(
B>N{_\/
pVa ~n7RM@R1n~-KcY?塨bA`Tw5REq(2qpz̨Y
:;UHE5A{T| -6R7'7eIA>!l60U+u}]g+2HfmaRLVܥU[:47Utn[#ssvQ.F|3Vjb79/f<e8B|hqIֆ6=t: oI_(Jv	tBT2!iV)5lONƚ#]@\P.~F>@l:L]ӌեfջ'埙ZtptM.ߙk C[ xFסgU.Bיo$QޜRF@ 4+}տކ/Mf^	eK$P`gm&OL<@~l`z02SEuP$ <z}D]aԬ25t]fz<8cߗn>8@FwulNC
P|JYaf$,z/s/A8ئehd1"cT5O	n'.KXS乨UUdT-P;S3mwOH~\;MAd8hLdh9S`7=ew^]?|9q"F#/|qDQdn(
Q
7\ެp؃@1W;IQ`t3`_b_}"]@[' ůg}>	VDsٰ v̲$ב$!~Q/ͻOw3PADYt.TP{&ۭJGA_7*ZYSV^΁%"Uޞ9AaD4œǓKaߛ@zu}THrţq82N}X.9>(~?]i
(K䊠ʖˆ;\ZqOq+YVO_Ho7hp+UJz'סj=Ɉ lQPs"5A4@(juF8kG#3$A|8j~~ٴ"`E%5GpwYo.8s$o4P/^Gd< @p
fGxT?YL	AytRWB= Xft?汏d]_mI([XS7}i^p%~.x+;xSY߻ǯU.Q1B+g{SD<@øU]ѫ@f/l= ՜TQj= )1B_ZUDf\L
bπ18;
UO
+F fpu߇'S=SINZO֪.BpUᘀՒ:ϴMhs֋&_^]eAˏR>NݨS8·UΨF}n/\M`Lr!wb|ƶ݋8cdsdF2gΩ@Tؤp>y7H7^|H
MUENwNP#]=W⋷"DI/g%h"sX!w<zm C)+ǑN@|oVG.mQZ{v6S:s%8D[pB񚫔|L h'-S{pcA.Vju=x?(Psc'AlN/uS;
@ܲ
O}^Nn-~d0Qi:'X9;*Nk(GяSXAds)9LcؓU^%3h6HjC
VR
`uw̑TK})-
Wኼ58=|ptǷ]V8I9M*)zBi\4U| MXS Ճk))JMfmK6g,2)9o'Orǰ.q/@"(Ď
<~>g懊1V.C~SRރt9߷UN3ƧxJ)		2l`vsHj&*d& 5#YtB ԗՂh&<K3d	
'P /
۶?1Ie8MZlt	^Zw;
Zi!e5iyy
Y>v>' 7vIEǧ{ 4삥-
XK:
r#@ܭ}5kOq/9rvJ X3尹= +@_	D59i\s9Ws.K.q蹹l@ǒ|AK>1::VK2>!
4#^$~I?g}v5;]ߏԈwoUzr [pLZzN43	:MSR!ͿV~V+ @~"V؛C	x.˰VI\W5 nܜH;*{m)>
Ρ?ҫJ0_-Ҳ2P[W.x/-W tN](5TuoFwm
)}	. Ǯ%*CM#ԥ%c@wJlPN%C]`aCԂ(5#om/UpO7wUpݮd3P<z:mM씔o
z@e;tXa=c;R?	npMz
Mq7YNmؙ*V[HYp_r4ߔok-|8x2k`
 |pTG5x-m^tۻɦhhX*K4M9$L 0ATq;fyӃ=
u'K7]a#|'<뚟eXU|rxKw?Y'Kn>!$
WT *
P
Of\-wͭ	<Ӟ=&I?WBv?~ubq'5=2tE?xQ(Fm/(k=c9;c>B{-39 LTj&UyOӠ׉̪LZqGP.zg>'(_*+9rbh/)1<]O.qtwزo2G5mhVuS5AB|qgCMhC`$͚Crn~EvS@&:8uB3p\+>x5
Bm-!Ӆ
PNeeKޕ_c5jC"aܚM(
YXy%>+0kQs`MKq6ްW
Uޓ &{9t+% JAi>5N2-&]Ď
/Zt^˙J]Ѫ\rJɥxQ8T1r|zL#*FOYb>ʵ+U_s5&qH
|2XO'=tgɔ
x^ODݸ΀lKaA>4q]We]tΣ hc䥨uaz^QD˩:&%؊[u/{w(sH4n@Kuhr!V]Jڃ?$e,OxMX6̡&98f яqH	v\;!Ej0)?atDx񎃋~;qωMUWëh\hqپT7K e}+Wn|@i~MNri97VZPzSչT=N$xMǚ/N2'h		9)SMY*S<ku\OOgc2IKvSrLl"tJ=9wʦUQpXpNQ'p|zb]//1CEՏ;6x\Gwޜ+Yl:EH~JsptB0	̏(T^e+iY#e!|Z9X'av'uUU%~"Ϙ|xXlSS@JaTAtAF%v2]Dc}9{R- oƍ7n;e C`*p~vq5rB!G6h9c`:rO94/q{R6I$rm<c/&_?/I5w O	xBqo!H1*O~lx^0!Ӷ
_P
ҭ/DiK:OzՉR>21Ω
=oRh '&8z4܃5,#xH؝Әqto+o"u>>+夗]
ձ|sw23s`]& s` :U/+VtP⣒LNz++ڜ?uT[rc&n XUo8;jcCKu~9":YE.OR!KQK!Gͳ291|.SmaT[PR0
YeZs:ݎ.ڧ!/ h*`3;KYHU6Vx*?z1|-wk?̆ҰcC9N8-u'ͮ_ e3Oy,Zm6?V/5f,^*
p>:j=cR?}[Ȩ&vp×VŤ&!H[W=U5GJfq&YMec\|5()<v(j}zs0H9_&T'z>sp'>E%lxLMP-l ^<?:AqpZ#Pwג+1vzC6d4T
=Oudos˳D-h8ekqIEK܎q(Sn=S=9j3dA)u/b@ JZPBޗJ2/VL:뜄XN w%G93LUZ\V1m˝%էD:
+$uo$;?&dйɽ1t#"B"оL[[l7J< ج.fqv(%DWOg'zRpލT<6eiVŏ:$YeU}w(BXz}|L;Dz(/!BGsox=ZU
=_WHh<s}HxagYߪ6$%I
m<J0q"	S ˷dp<ڸPJu 1,FM?w]`%l
hkiD!*4Thjik>%O(<	[ê(Ϻ%*_#t)	kgT?y:)LӁ!)y	nO?>4qqFW/x7M@eSí4P;?5i?>e]gF-tM,h£h8R0(?!.v5粤t<
;x
!ps7W˔qb%w{
sR&	7x.݋Ty"ȱ.uwG|
t=@nG]&IaMuSKD6#HWu\їoئLC;ģS/Z̩I]MXMh WUɲmcym|*BFrN`³\'۱5ꧬ5,;[
gmS׏3~<-"urC'NZCpF%elnBK[ >E)AmB۠S@]:zBS
\:vOGj5a2'#&]W; RL-<92cXoLDp\,}O5!Vb}&;T ϜA:Udʤ뱌8TC5`KE*Eȃۛp _cˮh-Vp?Z`ҙ=Z
]lnd=ShMO{.ǚc&gA[hnKKpl#x"3omV~%i#/'Civ\<!N#ylPr%茧PQV^sJa 3CY4rv˖;aI ƽ},RV[ukrFB}2E谳V<nT8WmG92d؋Y&RkҀ_l*^v'T2^cǽr"1ȒIb)m8EeV!f&fA &0@q?% $
|C[V UhAN&xqIoj:r#,ڟIA*iBfe֑T6pU?3[Q\!5PqI	ʗpU"O4ocpFfw1m+y3Ԝ~*#A?}ÿ2Omni\~nX2Q[.( >XxZɼnm\Oеc|(#)|7?>ӹ
2<;DWa~*-oٝK*kpZV	* ΁o|}V!*zP˟GsB\C^Fqü*o˥ܜ.'<Z
QJII.P	XSjJqV]i%)V {#:8e-;&9 A`efKbj1^#ムh-μ Im >$W2m"޶{>[GK/s)_<
4tX@n|gAw֝C9̤S4 PFr攈ˡev/k~mgX22N8
ϑyxtQOTrn.ZS|t;9͎~Avn1ȟ\БonHP6laR9Rq5\mnQ]_.u:(b^6U\#lIKUl_ɾҪp$Ʊ;=W"&'줒o*5K1`O, <rw .g $*-FLApYUM·9US_]WW]tIPs:DxekO!hN6J
K; ΄}՗՝Z},	Q0;lB-5?)_Gvǣ+[2hx_ݐZEQ&mNidM9ZG+<[w'fezR%lp\0T'a)GGw܎͋%L~p*s
M".)@]aN3XB
v |Nx19݂!]\1D,ׁT.		i'	_-/gXY ت[GY+h"9B)&tY!gZuy<<ڠQ8.䴅}k !IU Ehb-{<Uмujsƍ'˱v^! `ΈȵkGHkls uh y.XՃ|+酩pc1P>TqYCG%k.ä!:ORI FUvfaAM$pӟ
nS<~YZv`򗏲kޙ̋`>1 E퀺m:eI<E^qNw?&>6tf$H1Óغ5ɷft[x+ 0݋dO=1p\RǕkJ
T]Sp&78|}7Rr:K:* MUJcٚy
M>iuQ`H L\B0Vzr<
	Ø=żr:#xംF0ȷcWWm
չ}W
CCV̘nշ5ĵ]EƢ\src?ΪZ(߉ˍ	6cyn2@dPzPgi[r#1@ܺ7N|D	)f)p'B-L8ތ?
tUJ*g%{*oɈI
9v;2<U~FIEԹ=[|me)X%Yw䷽yqOBN:Qx+5)&ǓCHrSW=MiȬM{ʭv]l2%O-EBz*,%.7	,bn	ALA&7
0ظ[	*O A-6$Hװ0fZi:hIUHV[G >}^M/	z	a)ehB:IbO=<$
73Ǎnɾ!Nie']iߦMzA iͽIod5Ruf??u)5V8=]s9ܓ/h</c/0V7+2
JeE.IݵGQRkj^յ:
cm~)MBޤGuͫ{PʤHFIoZf&<nu{TFOʓ)G'xN!Fwqڅ8Dx,p"[)`A0-5lRI#l]adZg;]!yQ
9Cm?m-N>Ɯ9	bq<}>L]}ti`

5\xb3
1b)IoE<ғ|rʊ6@][w=5m!,iū6b)DHSO@ыJ3QO7t>6<e7l 3&j?sQli<
:ցU*!p V騽`8tOȵ?ٮ3<yƻ@PrOq|H	X77+cCT"Ծ60+NQ`+`գt
)>OJq"WnQTR7:4̙1Nj}5e<@MQ{U&W=i=F]Y%_{F̍Ug?[W;/d&]WL7ǗWmk%Ws^gUmf7H2Ӛ)E 	HK8F<(e惹=$9kVIQ(ϓA&Nш h7BI#bm~<
JKN*SL>(XUl&БQ3' {Yӱ\E*^[ZU.7̧U}V ,E?&<?
K`H.oVzF頬ˁvF=]]E|vb@r~t،x9/1E87|	^ł{Wg:7/e滭w&XꌤzM@,&sjB
n ҵshEg2:߯>GC)hCC*:#4.nJh:\C[Y$K}!ICHk9+Nb=AW\.dW
,N Jn>Za(~MPq~E6uFrB9a.~:tp^q_xI̻0Cfs9qwFW^lΨkVCPaAگ"V0~n:pdu?Ϫ6Vc& v	|wBmo|EKnan`]Zy85LmK2
|.6@~GT37}jew[nrf y֮qyFvnTy~uR,h-,UTRQcʎp-ޭ2u4z~hi+/҉3<ujFH	shV`Hwxgϕa#ڬtͥLQn]ىT}2uSe	:⋔Ls{+Z0$aq\69^m9 8X$ͼm# k|:|ů+{Pan`2ݐ_,sOQ[
Ӏ2䙼 )zTO/
;	S<uO+	c&YVo87@ުd /$ԺoNY6ۑ=u/5r8K>{|lՎBK/\wmjl]O*\[xg/:jZ;39z&.oQsKyLHZCo̟1T!AOS3E  O<
|t&6}.KruFʢ/_0I.0>g]fz)$&J&5`n[}}Tƣ#mWQOr>Nd@|ZD+/bw}*ҿkH<ByDwT9*ErmE6]@WгN$OK9܋Lh+
uDS>f(޾20ةzਂ۪xȵr<TIs8vОKEf7g#iiһnn7?j^A<v~?	謡CSPc^F%vʝ{|Y}k]cϙrĒH	[k&;WI0AJD1#YkI}ުi^K܊5h U95ŜwʲqU-Oy:/NTzyې8b<}l
;I_ioPʤ}WqYJYZ_?M> n9ia=g?vZOB۟=ʩVk`_	UɊĂ鍚F/T{HBZxt#z'قG.gm{??ہ0ѱ!8[eMQ}^pXTRZ\ie! DI0
Si:[5;Ή¸y))\ȫT9;4FNu~
W]bQoXK W=Go`/VTNBDW?@`K  i=ݵ	RTw$p, [CY9oz1m駍SzvXۣm-E>%18D:tE%$X3wMI8˫O}>$uY 9;Â1fn(UlW
AOpOu A'ZWVϢ7`=\;~ۜVfۥӑ f]'`:>""oDUo&'M<i}rV\
;()ćd e}-g:\dȿp\*O"15DW{4 k]h@Ryf9༅Kqy$',hhwT<s	1[z4>
 1>ፉ?6c7hC;/dλWlJ9/9miEO3c\\YGcU:9GEĦO2Ɓ*~H؃uL+ ͯ]r^r+V7WXY<DmKJvyS\0C&Nci{^b@vC@L,!ӒpVOv%
܇M4YY(@p6C&[▲"U۱5<5ӦD('iNH(xB{*Gvc<G˻Y_z>NX_[$>#pIj-R#s`G"H7m j`d$K+b6x~0Aws%;Њ`3h}xygq/[Z^"-(XybwCL\w<%zxS
U 	T26Cʡ
i^_\#ܔҨ#8T˷*38+U6_|\ߏȪ):LPDρt8b+8,:Omr
~\=sϔ^"kͣIs2iVr{8dug♾|_%C^)wʆD*V&/1Vnn^IgZ'hCmzJG%,'JX
xzlpH>>lUy]Y~"u$8=*A^Egz?0Os&0IO_S|6-ẉJږsU
]\*|LT*&plOZ}T
*s@ŧݒvB>#Cs8֩^)ϧ}5b9X۰_	z$0OCԳݒԶWՍQ~
TT]	;?,z+lD'â'ˉ*;`ؔHЁr*D7	QW@}pO2۳2V6܆wmI\rO1*)+v%(=>9BLMW;гRYM#GpyL!(Knu#͑g89\ԩ;L}$Bg D͡ah#zu6Fu;j
F
l߷mUGHn~U k9doǠ
dsFY;$tpO}+]$>D֥Z9{W@?FA(wiH(#ך9\;#4t2iAJ34]"PǁZH
}%`pɺH&&L^פR>EӭSU=ZSySh>x{t*pAV}a,p&]pBu;z(
6|ͭa*x	'+mFn~Nd8rKC$ioRQt]/XA-욡VIJWN$7:	'E:<ˣI9W`>=v_G>*cʿ`ӿ]y#rt
ǅ(	⻨	/0F@E2jNg]WX0ј1t
aJM<`"x3_ܰ7xflg,W6J.`@Ǭëui]>ᶟKd䣆!Bzn|\$rNaz5v8a/v$IAhF,O	g'Bq	I͛
zP&]u4[oz@΄E?EzuFxO'7ʉsݑv
ݫo̐%}>2:HwlȑU9?k']WC#20S%tbڟA^-9i޿y79mY;vq)|g?Gohm.bq@#	ɰO
,pn0ai=@ZcVFи+胱~Xj&T":Ml
%	@D˝OM7]WU]❋R ⥐4mB9Y~ΔdIS^_<N:FL(/wqOkKZ;ppwKq{ut)'3U;銃7smtOTxTMQ!ו?] 2uzuUPԯP>"8,KˠK,%O=U}|Ӑ35"LQ|?hYTV-'{uC"d-_*fUR,6=NTVP(y
K"- d'8R8ԣ]{Hl>PGVƉ
ŕbۊ<"1rzmBV;BnT6H,bK["Agkֳ5?EfS8*B7~' r]EԼR2TWBmR
ɬ\%|VYml0$Ah0e]n#| ?ee|ʿT mY(\
Uk.3O'"U}G-3ݺOV*;g]3ߚ7'elFɎC(JM{;T!;9l\#CpeV \!f{Qސ_:NÇ~w8)k>Gpԣnoiǿn%O<mI뜜'O{JfRa*#FZhg\֮HFGqPO=*>u`ۈoQyr5$Źp^=+QXm'Mh&]GU%"So o-@CӿtA|ZI2
LCrm0|#bˁ#W"+"U5C#@5no]}skC_=
*?I|R0@y."?'MxHi
\Xƫz}QX{хȷ"7jAn1@۵\Whqs*>EmAmK%ru".GM.ͅ8"y 'bkSs=ȫ< n9@?$®q&(5Ph摒2*
1u4pzCch~nk${Q׊@Fpm6GJВQ#)\y%m=M*'X%Bi@Ze	S" -"uHj9Ԑup趠ݑ -g~RwݒxD)=`OwHesכ+a=eS{Z,r)m]ZU43躜UANjstӌ5b=c3]8<nxފvޫ	^ H}ߐqRM?j
1C\_E.~ϟ.r&aX
G>G*fNT	ɣ4,,^KZ<	(^U8M쟤ki
4s럾ZPHd7}޲&0_k~nY$2 Wmm Ǩᷖ,0  9گ#|*Ы}Q6ɹiҶJoE,1[g՘W< +' }
_İt!n>%\Y	Rt?xj|eb
EQ;ݑ$'\Kje_}ߠ#qTQ4@*r Wim\QW9ے.&]T%=Fx:Bʞr"$j_HԚgy,0A_] ,w(;FHR9"C+OXMЈI/iVǆax5m&@U_spEi<
z,\j߹rt&M	t\ꕿhӥ
6D2g=9IrW]ʡRҭ
-t'k[[3$ʸWkXPl}rqcWҾ[Y	o\`
:?^?wڳr~185crt"yOrEX,nAZ9 .GZQ %
p,@xkOtgzژIgI-ࢬW@b>l"RyΎ7]Wg6ژ

ݙB"ݚO!n}|U|PA?.WùI[	\ԚX5'up,ml}G#<4&'3'p\ cnfPrm`fEpx!o@SwFOz|
u׋A	}lI3qNnyQ}sIR!<[EP8)md*pwJa|D*+X*\[dhCFٳ;2D4߈`gdfh!iRq
_A՘cif*fZ)ߝs(VRS\
KJ
OZ
~+ $ekR@=S)4
f@OVHOZS,JҞ^xgи+2|T.o>_Xxw}!6vN3f7/ߙxը&g&:]L]ʊfXE@
V?}*!x<\cI@+6~r΢)
:X!HI߸G$kʂZMGMjX}]!̛pK^Ww(ل-
Qu~bȶIB)h;gWC$.g/z 
Dd7HoԂkZRp!c% o}TLp NV=N1ZNqԥmg5ZIlN'm3w꺩_ hR4 } ܧox@^v@ApmWգ='K7ϊg:880ֳJ_uͪ6_%52^.@Pd+J@>S"}(DH%L'{E#k~ֻM-!(UJu%y8qI;y4]ƅ6by\[D	pv2`6LT{kqw5> Kil[Dpg
˼[~ޝN"l@49G쮁;GV-D-pN >O\
ЂOz6,kx+W>BDtXnk+βb6*#1jSh9AOS7T$&NE ]	Tzd$U&%| X+ݛXSje֬-	ՅԮ85{0~vݿ`K!]BLtj& Ybz޻v,bCzUN/hfgQA4j+T[ciG0vb(	=9nVV+Mkl Ak
xvg)/	vZv$U]fmXzOqH'?Ȟ)t	[Wֲj%鸻?.uG
bJvO#BNPQO%떪Aπ]8C9oZ%|~׵F00{r]C,AV	gҤ(BR'VցSDs4N#9bR+c
<UO7mF40`<e\Z"K	stDo+0f
nZejpڰ-Sֱaqi`YZ6]Fhrs_.Zs1Y-Tn}@Hs,unoΘzQ]:.|iĬ~g.,Fқ(SjJt.eOܩ'_o|*XyADJ];)d3O_NHz6u\zO%mn0.7غi~\~kA<&]'gI2Ov>6GE] ǃTz0W(F  L +uM\}Dޯ*ʌ33U0YYT6+B^gS4xgK
\pq
N,|nS<ZP))$KrҬ`bϪj&?.?%0ǿtTʖjy5H֓Iū(X) iȠv94Xյ]]*)*Ai<SvQܭ+Ayr~X| E	s%mԗzUt=N<j-U4UїҕS+$p.}\0Ʃ}̪$!Y?}sPS!k\]4۪
k-}	H٭(H@{<f;F	 ^0"l9%pMs
㄁Zszb@Pi͠M"^NT&yQD$C&fgZul/i@SinQxLboDBJPb,ϲ(dSJ}87d侩.0WzN"l^?뺡]rXK胐=<;]<׵gλkA\74°}#٬@؜:
uj[%gӪB^Io0}B c^g<]jf J- 8s;b*`Ux$1n9, }hd쒗 <y쥖}#YmM3(x ^IᥭDyi
'\EdZKPb*XM֭xVM!?3*}ӕFr[v$qψӮp/Z}5BEGP9l_-_ 8w?49XH
hFWЉO;7_ߍ
/g>i|cSn_~DmEӞv?w)*b86D k(Eb'_T9??P_trūW&>!
"W5E
l\~bbmet:\%T<.}mRsҷU
7Os6LpM'US>Q2-O<Nz+IS;BN!F.̣5goL4 k_$[V*f~cyT?^$Q?::ȎL~Fe;s6P4km8{Z#_=K[:)oi6( ZL﯁|x>kE!V~<[vDW	mݪOLf#V7MbI	@ƻ{xr֓\I
n:x97,x,Zsd=t2Mʖ/qplmu<ӯWW鏣2>dp`
 :}"#Փ_`Cy}<N$Ok?<4ť	{	}ĳ Nǩ
IWBU[c._^ (ZpKЕm
+S=zlI*GQ[1]p:wy]u9*ow
uMl^Y(yq^+/@N½Ci.5Gd^%'y`NGzO5xۏ:UZGמxԄ
:˱"w&U
ݸH/^z00iEGӿσ(_P'ܧ12NQO'P^DxH\m:Qekz&>T11~zN%`D߈+g,6{3+}Cx
F|q^0E\R' nvmZ>X~AY:^oe`XvuV$z4;LG"2a黸Mt̤5bχ^I#t_]݁b&(c3DH]Kz4-y?jcԡf{qG3m7ɀo"kU.@]4ݙLC5q\:?b}d\s$q.n'v_HyM]`x	eK\P2/$ݹ zy
%(*#=ezI|J Nq`s@gXPߦmq;w{HPeG۝& #յܑ}T;wS- kuv!B&4ȹ`]Wڭ_Wk[ؽ\HʭsP\%'u*_t'mrg;OTŜz@BxQH>_$Vr7¨?xGR[zIã_@m՘<[=ǴV0WF(`Z	ODG>"i{
RSI ݒq$G,Oa5*ukuu,D%XAP2E++VԂnD"9ϯk.ͻ)JTlcr.+`n~s=V=IS9؛Ciӭs;8gR[8zKy@"țr85WBw_Jr)
Qs]D";ם&	i/ؖ!5eeOZ4zK?SLOěFI!hUqĳ/=d*
ed hZď5]\O
ۢOV;Gl^@N;2!6]X29ص2ކP4#ko/
ZlGT+%F; qI"GR:ɖ!$XOlȉvN_xMi)ulHu<G$߾=n]àA]zSkOj]oT%e,Zy뫳ڽOpixê305N꿗Vګ	,cW ~X{i0{/)<rx3nTlTBS#* 7g.N'~*a~0GmKXEY>UvH^KwRpu"qq;)ϋ߄q;II߆L1CAt WTV4$p5 |8}	Nt|y.5hU?¡\ZpFrf]%>r*{nfr}jh1,:4:- 3.qIi|;`٣x$u
АSE ĭF\&MGzma"ғHlh r+1SNbA	oC
aq9h~Jr@(:zr`)Yiqg2Rw3ThZM|4hjUyo:mO;J̕G$-gԵwYuWАWـ?@k?]s
+܏ƪ+lډee=8;뱖	;ZʅziS9
Hy#l7}:X5~/;ٯ{rDLR"CDv;	YPmcT;WU-b[Gt@i~Pn®NQ%{NTytr3ޜdv5aYu?J4Ep9ʋNEߛ<ZJz(ڮ+/~Asc{XϞUGgQ!vfNoZv-_]͡;ⱽװ>@rG=Lw5֡˂@:`{LKE|jЖcV`"E6/AyZ \-BK<q2B~mΙ
RJsڍ-!!\dgs30Pyy
_mrSL9Eh&Yu}<"b8	U)%
uGcY]t^Pvikd}W/sY=
A$>s^^)qf
lbk,Y}J6å+,P2%\{ x.aAʨ.-U4DidG*
Jԯʯ%ա ]] QBY}Ń4@♿\s⽅.WU0(Uiv}$3ıGrD4adCV##<|qи%Xn-j( .#ؑ"-?^osU,tmeJn *n}qI%UH_py
XKE gG|mcA_@##λ=O!wD8pZ0(29jaY+4˥rK!wmI{]rw@WrZ_˷mmL`$-.+pG>;]z}|\L*CR 4qS5y<a0wiꪤn~W>֠R
lhhwg`/iZP: q^(੢=oN{
"%ǛY	
*?VpheлRB
uZju7f&Yy.sc.6>tsh9A\QE!6l/H~O&,τc<N	YaVFEsbհ~TMG<ӹ"~GF܀X"i t~٥B:,m?ζ;wꜲc6G/"$p!'{YW?LeDx[GvtC".p6!_%"W뻢&[YO] Y?Wsa[B DTjY~{f
ub	z%JdsnV|.վ7%6UvQ25nbɣ$I 3ǒ㷺F?|?mp m<
ph-{MkM &}ߧt3*r|`+
Zpj%>&X*\{{ۭ#w%nHu-WgoWu{Tes5ڼ;(0p+p&묅$oLjD{Qt6PǴ-sT@1k,tT}B-
+'&F
F@@˺d&$?cw9QaT*NkbWRt,ӱ	&aVoN		٢ͫ4C?j%jqy:a=z/ZwO"ݫ 	jUs+ɮNh'NA}2J[W jcAqt^rnGIMͷ$7ЫX'%us|M=$E66+8~si qaO+#S[w['_s9ɉylYmx%'*ID/|ҕS:>"J[Xr"wf&z+irYѡ}BNJ F= a:wۧf_!`޲uˡ8N.q1^}xNsN[rjz׉֢`fC"ȉh}!/{UGvVSK7l.K-G4J 詣kQufS ]<chWN^8ȃ^X]?Ǽ.͟$PN/f'~
ܨ
{*٢kϱU&ш'CI}PXUJMa׈QWwKZ
4T@N˒E?
F"/9ǘGܮ܇JRbJnPզA8R/]$nR_=sB.e1K/^)|GZ$sb[z`,KNfw-m޹$\磏ߴ .P@A	"4ww$ ~d2U.x?^ˣ|T
V\r?ez {u~W<kq4Y<өb53"#?a}q.	n-TѶ^
!CK<@103HQCMK:M=cAI%83:8ոyFxރ3ĳӔ
Id]3%(/ja)#%|dw?vJUN.9WJ2E˹GtE>1؋~52.sb_G5isS!uWPXǦ>$o_yJ7=ȋJ'*6ܙRؗzy
8vk+sTxOYmA(O%V.+lwrIo]ϙU$ťA^aWcˉRPBZdzp`2
bDt>J'س1*/pb9^cw$	Un<kɀ5"RTg2|WN6Vv&EqE6+C:LRG,FU8F<gߔ_&{*do/}/N\.͝
Jr!O13	 oJ=@ZL]3Yfv;1$[iUNƒ4HVYt?<¢^'iP:^[ I'Cg@X
p}8ͱߠUx)+E0OqR;K<k!Ns/1n׺P_ea5lr۱x+T
jC
RfCUrP9\`VT!*yї}m@䥛t
 FZ&W#+46+>ϑٮwX]d{-@GVy?=;j%W_\-ݪ}<Dw#I(kpmEdѼH{8IXѤ)ȁA#*F	4Cwםgّ/܀rQ8#N,	0״}ǩ5NE BОZJB~"6G1Z6>羃=`6ҭ<	[-N@}ˣ7(3WvWk9'BrS5۰&,Mպnu4uZ%{. Hk.|JD]&m~;4*""k8uG^dS՜?z(¼u G߯uN.a4+y5PMo8\텸;
|5P@ݐp۷
8{tL*ʹHTQ`<˥
Sx1
'.襡4i)Ҥz
(اɓ7nnOz	DV/@ܲ$Ǒ$!~
/iEttʌp7#U}Z5;-	}WVc$Zܐ?ًD;SЯ@u
FP?j8:MЖ	G\థùA I3GuAѶWG+wz]d++PrPKL$tc׭X>t}>iM2kԖut^"	`ѠjX^!|g~*>W%&.ҽ&+/0or7t*:muV~߱Wrx*(7M%#_㦐f"$jvO!Oqt'̧wGFB]鴪w}`0h8߮Q
`*G|AvSKj2^y@DhyMntۻɩ[IpU?^\wj#C2m<g*zbT3NjCV_8'4ns*+DuP8()IDp*MrjSP#(`&,'WaX}t{bdl;0-*G0wPY]\tZ?QN>K
WK͜X
'_7IwwNmxL
}RiiVT׾׹`t4p+!#!S2p{y(PŒv&帢N_9*cEVH
֔O8U-U^-śt"ѣɍVi9-xi\В%e'~hg(?r#XI!2T8HHz+O	txvKvx9UA7|;㒩Kk]V;zpk*}v#|Sa(-!ܾ3ߺzRl]۩*/m|^%*v&1ٕ!e-VhpQ3W3!-f&f2n۴apQ	TYFԹ]wh_OD#1uQ5JtU"y>Li
Wl"ݴYQȟyNUP9sAqxk>ȷUU1o5!@bW	ed;?S,oUW
I	Ԇ5+W.JXDG&㙨"'U /t]˸s&_sĤpmIzkirW$8`4g<e65Ot>b8)\Y@g+]!p@$ut tNdAːLM@*
h!-I!|tpÞr'<}DT}sNm'좭+ڣWW?c+C :zi*Q5ΖG{[ H|:ɜ|+1Y-YS A"v,$t qcit9 dfh"+Z6M2Wv#&tˈrnncprE%wTY3n%tsWF>hO
q<g;s v!~RGACu[w1tVr$*yD&OHAݲ%}My%@fJSBߑqdjuqw)Yq0zr
ex}{  ]E)N~ILT.JiyTY#Dϋ35]ݿ *x2I(S )zRb@cѾۡ"E@fNNv'kYZ"%mEͯ=0=l?~${D}yF.fcCծ5fp].xO?)X^Q&߱2o[z:B?XH,wn-kH}r77Ii)aۑ	%v].HWÀko!$twiӝP_)-7<$r-N*?Aq>;VSu|ubyj@+39ʦ{!:t6%/(J z3ʑn6YvkQ#4+4NZ.z`vuT>]\i 8jJϧ(9|Fr+Ϡa2`0	:n-z\c]i\AhcOg"[ˣ]
G"Zl^}ϴ˓JO/^(,璝Fm"캋5n-wyBxt֪wOxF ^2<iGmx+Qau=WΡBsG<M
=wMmɺ_vCcIFZ!| fN30Aw	7.Wzn/ރ+"\'Z8Nӎėcz:skAհ^Ҥ|PH}f'IéM`3KjUtjg/s)77WZ<]KW{j8\=57肩Ӣ%%OVz՗|m+V6|8/Ubs9ߧwN!qK/B]̴ЃF{A63+IѻEbg%tړ<H,=f] *J	ce[4 Eˏ覐G=Ւ iw.V؈>pSe p`-!~
fz2yQo܍t\k:1"+A
oB<p!u'6r8	r'!w8NnÁ >ABpbiJ,}x" o:Mø:`9|pV\K*`EMk3b_XŁE;+Wx'[$WMZTLtpyiy#s9+:+ۂ(x}%&:LyY,0C [N] [QűbR^VEeBs/D-B

MZqpV׍B,rU.m-תný^N^WKF>zGqNКYy#<E*١%{fQz\
ͷ6Z%_J gӳ4$'P*2qv\*N3N,N%Y/<z *>RkH^\8S?kˑk|D~u]).ᾎG-xt5Wubq0ֱy~չUi1@\
cwjb*
(bv_gx+98L52wu3!hU"7mRךSP$I
VHCu}@k5)^1Ewy۱UEa\UeGBl׺n2m4NC	Rg#'4r3M=%R|iDDu
s&lqmDʚLI Y(QRjwݎ>35i
Dm|RsBP=X9u?<nDYn%7]&7,eV<*jKw׶t0+.sHIuqҝy-nuK>wGW {j&ۂ޳Q?|ە*FZ{'`āt:2<3#083طJ1uELa;iq-{LgnÈ5O4C(ApPxٷ䮒T&t4iL*$Ԃ>V&2Ɵmіb]m諾`oZ]ۇ;x~h#V\@yڏK>>(RP~z*V۞kM
RmxE[/t"o~Ջ.κ?a-l&f;	,`+A_6
cO\:%ߕ+Wɋм5?TD!vy?\oz%/nIiZ``"Wҡ,EFwyܵ"D({ڽsUP	zA#GNª:5:DA\!0zAIZ}r`ҋseԯ!1}.u?/b-Оi'dG-IfoR@mrdyu:"
co[hc: ~}J2M׉|g{)?8Y}
Kݠ`%-Or㣴El
Q% ?pv߭l]ڇ
depESRYVΩS]rpTxw#nwo@jN*V35ѕH.uwW"oʠ?2dRoPnJpsy'p?,B	6\Vz#=ܐ(}
V	ԕ" ƫ!iO϶ |`V]yT|wTս${A\].:_K[3%'	rFX]w=ӫxp(@ጀVvsZG©9ySob]ujsÁp;%rQVr<3s=nE,Uʊ1v4~P5zNwD-huEY
"0Gs	[
@e3u|uθ|Ԃ	DomXkq-
Xx*K n%88]eSs\Y[ͫqךtqYY!+yFčuݮ4hWI?,zXzI9bɠ|06ʫLV~V|S靣6B`mfw}\|OgFZ:R$3]%l=)KgKy[ӭe@I2lQaY|А"9-y
-*\~W{enYSҩw᠖K2,F^cӁSބh>AVjǣ왶ue7
C{;ElK;#
#Tr/flTO)9
oȲF؎ykfn1)ޝN*Y~j81n
G/Pyk,aIu%`~ԡSEok[?gz)iԧJB;1dƉ7H[&q*֭l pY+
>F%Yj<S{_"b0',.CZ*i;Wmg@sL%;f7鼎Cqn#ˑM ˲~G+A?wTk!RMAy{()ŷu9	L2-JQ(9^o|A꙳&>Gp]Ic.'cGhEr]6~wgBo?^+s*Qp
RPPgX_g7F;S.EpQ$+.uYweŸ8.jwNm)y5[kV8ͯKy,knnX 6v6a8'M0uDb<@Z=&nxeE8/#$s
HIւodAXMމq&ű<{iu|ګoy#gat. dYᅷ;zN2D2!4d5N;JKnx~-P$m_G"(x+bqY_ǿM	 m^W˅S"9k|gzOewI 3ȁVK@g59!0`67+TckG[[h#|QqK	p?vˣrN5o~v)0,wX{#mJVZxgJ9jd?s5T쉹oIt0hH+P|)]ғ}O͇Xij[p:Cs+$r^QyqsS\N;Β'& IwVzW^A+XXC
F1$Q/aRtl׭k^8|d^|;3C&I]Uݫ0zCm
;^	:Ĭ5@Xˎr%rE&d@BMOFSnyoh/܃pZH(
1u:a<R"C*O*bX6tZk+^~]1Zo=VH,ݭv0xxǣ[U*.Y"iǝ#T vpQJ<xA89 &L_gλ*Kdl;OG?^POgn}_ڋB۳1W}^O9Xb>HFּ#O@UYpHu`Ȱ\D4);!u!VeJײnuU% {,rزL=v!լX]z"qtJhׇt"rr#cӮ5<zbX}:gHotHX	^a pɹ@"uMH( 
u\gPⓙf)un튇pO?Dw]GAqw#\
'I#犙`$EHRpط>%tUD]h0~"+n=ÒPUV8ߔcS]`)|5hzO!k
lfPv%ձ/UһH ">pgGh~e͜	sgըp1m^NH57ɞtGCcsu]u@,ٿJ4iێ{\nr^UĦgt
s?
rHe,zǆ&^^2&,y3<Ii^?.\ l#B3>rbgeBP@oCκ;-|TYg~Mr½kl7?nz4N^?ǩ7:CK9m=i2}\l4Uw'O\
Ϲ
_[$N[+U	ƻ_<Uvu94WJb=£ր!}cnWzFRUav-̕m0?QYfu+z8"nG6id͡iRUue [xI@CcCH+]C:(u+ΐਭIs}3#gǭsFs{V޶O[
X8M
 {K EǓJv֗6uAYIeϥsէ~00>7w	
_ota+pNxB3}I?fN*ӕkKRQu`K^"eywVs-:1w;ee[VVqk)7\ pv=@x]Mv 
3-)0[G]^	ǉqh jpN3q #߯KUGS*'E۔$-ȭ4ʋW:2g-ӇOAEaO'A]\5AΗi8Zj
xC%_/wnݴev)6lwA*obNz	*еviئ!-8(nbAU.D%#rE!m>M7j2us`ľ^[$	Q}*ɴFF̧.
|s :ǯ!΄|QE+6d^'Tr}ueGTy0cq `Q;E)::vym;o̝~" m@aA;7ߊ>eh{
H8mMxd\N?6CxEt
<l,uȯoz~
:ْhnҦU:<(l(1A!t8L#LME}&"2K"Uf<	f}RP|\HC-ܯwVw&hv%hI5&{}EKw;
9:(a^z~~ldu9uT=HοiY>}tXqN%qƥBG(ւ%$
3d%@AIH
G]pXN'f'}Iܓdt&$m19AC(@◶8D8{lE9'8mPtS8g,(R{청MJ_NnRrE9JE0$^ǋJ ҘQ_70B<W!*ojٝ3'ɿ+m|,yd%Zv-	W
aTౖ.[xl-o%[a+>,D  :ژn9Gs-MQcmf r d1&ӻ-qұQ6M*Lhp+*-TK-[J[GFzK[ .)
Pqdm`<D:εbT贮n,jEc,U0ur LxOo}!;hC&]J bjjJ=[Hs'	.ACW'%w -/;thrR*G/b+j
Af!j}:m.j~4 %zi I przhyhq+B5OmQZR&=c|Sn?K8@9Rbq}nM9;Cjr>['YN*@_Q.

7WKd?ERjwfVi?'UUXzؽ5zmj<' L'\&U*b<^wuף>-[r50FW?FC"ݻmOuKlbƇ85xr${}5%ۜ$~a&?1$mTǈ%o4m8`˅})Mak}:M*ʉ g9й)QMg*J5#yIoj}A&ٙg0ZFbĿ.wmknQe; ;^k/+@ht7='vGqA#:ZdT:qt4߿^tU\u|sHy,ު%B/@x_߳>%@,U0)>Y&pwv$0*2̀l5 LСJ:80ײ=dO*@G31Z$g/<3WIaZ .LVM\on5:T^R
6ܨ⒎dɳ׵RAx޽8\.@.3ﳔENM-qgiz\"G~6woJ4YGC5"}/։#=6uqG.8k}
{+Jr1t':$j8FFu9jsI @-F&5'^ß#P;[S}5j R\ 8Ҿ3othar[ fbPGNuf{7FhS7e&5 g:^"կyqZ&ñl!U%{-݄ߡ0Z~dlZ;K#
JJ2N(L\*\U1+mZplE)sZn[;ÁEhҶ2EL$%f^8oKrRݴ=>X[qX_u^ߥlMgTnKe~Z^A
4b%Dc֋t ((P bI#9cYDXY>Zg%"\ov&me?x?0W۽ݜu)JR}u
?j$lpB:R zSܳ{W"TLzD
5om@b*DChDS՗/ڎ 1@4@٥3Ti+O}-)٩RX 0>UU2au}i5zYb367hxq;&Ik1T2]mzt6
N2+0:9|KQV9)Ϣ=TJz&EN;9ɣ7	Ba*uzh<q;T#lTZvjO3M_CbM^Sw+mݐ~(H		EYĿGU6^byE.su-6BTT˛s"BxQ (L7H`!E-&?|
 LKY1aiZ2Ī S'=8{:oFmrB7%nijL1R5X\t*m]j?{'Ps  9<6NZ̐'h"3P(Ni\wj6k{`y63N+OvďAH1]łNN~«"f=:*D㜁"^e
m*\h4iUlw
%rJi)<TEVjI<y9:s˄>yU$5?4XH\\\	dX/76R{۞Y7v`eU=Y-d]&<lZ 2S:֊Z:`

%xN_P%6%$vH[
'= 2׿k(સn3Tgkhu9n7QaW?-gYc
+N`v׀nRR'ouaQJKBA34j'uܪL"1TJ:4d^vnl;5"
QKRDV'iYR]m<怸O&3+
*nk[d;U	L}YjkJ2"r3<9c~$eBf[hu]EQMΚaE~]eRI =]K}нȅ,Cm Y?򢊣_eRn
vc4&,\P] 5=E~Q;
lVS6kM?tqI߽
{8ndxd>puiCqŬ}6RIt۵|R(qAEѪ* N_3Ӑ@(b7ID_7~{|=/xrn^CqSo9Zz ._ήq&
o Ln^Wទ@􊆓T!
|/$7{3QiYX߾I%nNKtl<ɭt?3A}ݞVV\r$Pm
)yܠ}z	?܇RM?'+}Y=(Z5|%771L.C3?QFxsGH^j=<dup>V9NS.є+JQFI'Vq MD$MK
~=vQv<V}<Da@|R@LRIX8[idB$P@t`[uTd~6gi7oUeG,Rd;uvU<#(|JO,|}_!ͫ\o/Jdsz8pOwS;g s5mgJՑי(uMI:ҝⷭ}|w@B9clo }'8)(eջfqmlE"#붋 `Վv8

LRc]'

nQM5#9HHlgFn>љ?76fd_ozQpȆgb(2pGUu.j lˈuWU"!C~feIafZGSvXA<?>$#Bx5Xn~2_bQ醼=-kZD'!wڊn
r-M6{>ɝxY)}VaRH"l}-
/13ءi!Q
*gͰϚ>/qVS9L6S[Kϗ92'ltъ87j3:SEӎ;VIk8V
S9?6_$ıogWڍu	(za/_rK5LKܧ4qBjçҜk/jr1}n`7"y9 7f=y<=f+[=?<]6B
8dj{y(5x)W-)H 57|<Xq"yo_l<^$8y^XJ
܆z{9k;+&p{9*|u.Ek8?n̸["XJj_hv9A11?˩#֏Z+ ]ϰja?|0T8v( =[gsՀva&8߳Q'JͿ]ێʄag졑3,[7E3%S#O~
}j#@ RIrY2V#O8%:oHzDM'\v3['x.EF>{'9"L y kZO@JΌNv'!y[ez<!Օ3,('=7+Av?g:60di7h)V]qGKxMv~tz_U{E$yAYͥ-,9b&-Xo|z:|o9箦}8Zb٢ ѳ#U]tBYi \8UwIW&TҜ2vA]:ȕCXqVLφpf
.`wgLR|OjXݯt'T_g瞯9Hg|ǊB͒E|umS1p
g*
o`;M94Ek6ȉvqp08jكm9Nkq].ҦXSn؀K>ܔWv{g:q7V;WrjD]Cj=Cg#iң23qIuPZ#K\nP\#Buu!@ڠ=RB:$(ZwYؐm&t*ZܟZN:k۸,	l| JP'YO'h9j2=KmcH]>Izp.rr`U5
~>IEr
j	Α-wAuu6G9ᚣ[~r,σoZ-1@jՁ	cN)e;)Cgy|;:Հ<.t"gmw!qkn֯|ulM(U##8itbSjvB GT=.n_o'x9|B_9w8t61+ɇJَ=qqo*
lg^/u
Aߩ<a;2,z}GP9)9G]:d7Ahy͠Oogs@=ԋJf߃Ƣf5G^7Zo47ApeF;ةO̫lQTl[ȯ<̯})$t4v*q7(d8K $qSJo`W=su84ҹ#ҍNR/͉曓*(akiD:Uk; Nːb&e/'-nR7]c9Jcۖ6ϫv5D-Nksa5@pmk#<7%KQ<_sp2ë?8S~9
s^7x&{UFg O˷EE4#G5j3{YsWQ$GnuȉڋfzsѮ|Dq5sV
dU/k#OM2BgқY'y-\=V.ĸz6ͧzgVZo^chiMfi uyOliG`ts-gsCGmbX6U::ԺoP?#牁~?Fbҫbq7dDG(QDlSƋxJt쒨w8n<bt#U?N<	0<j99HM%4'X<B?Z7|iF3*m8zp5"Rf4jpݪrD,& 
C9O/U*nK3FUN}<d&4:AYҐ,J^2ӑ]_OL#áA^ܳJR0gH?YR|+RC} ԗKXN	A޼xۀ!KWsR9+vMo
fF⪖peFͺeao)-*|-Θ6'|YUʙO5sMVk{L[O_RGZo3:"Z:5YoLXlk}>zu:@5GkiCuitF褠V!&N!C}xYs,Kf~4ڦrEJ I5*DCLt f
~-v,0iI8lC,zRvzQtIif&xP^I(D Jv@9ZΏ1v(4$8)?2>I//kjٟ6!\NI;Ian!>(iC.p$GgO;I8!b|Hjʮ
xp)Ge7Y	](^@Eف D7Ⱆu]liܾL|)ܸa<,Iu
wڣ	HDp9x*Zt*QC
C*Pi)+X_HVu&}R&+}8aDAz&`hU=PԷ]UyM_y9<΢&Lei=vz3Hs_]CW3%^Ta-H2*M}pƙl Dϩ``vzֿYMM*LBqQ.J(|=zp;۳Do7RX$:
 1TэD>o9oa0oKߠ+e l4U].d^lu5vj\v$DAP@(l0IbΘz3v.hDG~@#ȷZmp Ӭ,^%3Լۚw}Y'Tzݞտı	?^
:T ̌Kir'JnBP("Jv5nMxl< bR;8:I=;##YRaRK=w+hMWm_C
n%s#ȭq+*^Hȁ]KV/(<-scu}|LZ7+jϤ,d?◔#Dp20:^ng5B
XrTPMĭ4 `݂N傪ꑫBr[9\UO	r~{^:</[*M YAi]LJAM8Fa<=jg=}ҡr;ZH*rI{V.T/Ku9Egf$-_v	ΈZKܣGGd^;6!'מ!FEM[{k$JTSILPDɬ=.X]T-@c*?2RryyW_E[
[^Op%7&O>vn47z;T^lG
ce|Y1&Yf"WuINYlmtS\B(=]V^
?0(ѩˣnmr;3VRс?т݀pi6%![hG}ڢh8J,1HڈA?s<os~v[+f %WW3.VA Ȭ*t-F]:I#Bhmh1ƻjl>S?NWU7Iۜme$C꣢}tEE*;"
g
4I\i] p>C1S:gKmt]8]A xn|)
W_9px'n>>4I쨏(iĺݷSB]uX+%\꼶,&pZ9ވv[wfK;`a|*ykHGMe06]["XPeۏ04,<&\U~9KEGeVUW<x3jB)Q
'VJ〥<1H-Üg|%R.ySM&1rćnEmV7VHk6w8O} ."v\RJ04 5w}+ᨕRIXv}+/Awʏ3N0-9ՂE}y	>x`QogLSWti	$}ltR+ݵ4HnF;ui7%;⸹/PYvBsM4u0V.lW쨶ơz <ܖ!$dpWKm9XTC8D
BDVL[- 	2-X~&1o.kz0>Ρ#Å
'7G@ht
}J'@S-۠N׺]"aE0|Uuax,t2-hbN'i&3ϊ{ H0y&T2Gs'!ݧ@U9dB._
Peۥs*"e&ӽr(&w#bD=ڙ[0_ٌO*nd+e*U/=5]H󯃨	|pwgqn'n@Ѥ\"חHI1^P'9ئ
2pxUlPҖu)uj=sxL-^;VcUi3h]٦^RtetlʝyǺPSwtnwbUtturo'BKOjrUrW}Ae5*:H΢ &M[ԜI
x$yy|zPg/`M޶>;\r.};2n 8/{vԝ~M|z7Wu:P7V[geSvL|ti-b+uG6`
'v&#(Ng8HNVs݅tx{LKǫ%\]]jAIjӲy ,]hT݌=e&]5}9ZGEj e5a8su(L<Bpm=VIw-IJ\[Uu +ϓW
	༊jܖ]ݙ"
4gzvr$n춆흗xAt߫
K'`@=rAΖ8j&l9Slr==ͽW(u_FY+}*CTHꇌ׏o
xhw.Vϧ3"k}PgЛ{ZG0_ .Ƈ%o<nRpl3a۩+ک)
;V>ڙCx.%I?*ڍzkV>y%;z%"}>GFX9@I.~q^A׷'Px13 g|:Yn,'kildc륮@҂.rkɃm	B}
:g 3$vnrn^n
HА/.4]sցN9".Y,vZ:͠kX//az!j"G"B:$CsښrP\q^RgH4Iͩ#VuIV᰽dӬO#6\.J:TLk06u;u5r4ޭwK<e#yqYQ
:ujȦr` M	QF;(Ak4fȷg)gYj`;PSWA8gE'14%9SyOr`O.ktZ:}iN/+GU>6Wo!+`۱,*svHf}
L>cK)Ak*Ii摴Ss$[U
NP-<&Ckr?ƚ=yxNkCQrS	LZrpZ':py6JqSC滆udZ9CSC"ֿ襓ow~(3 @>/',!;+Zu9#
ss/
D6sSxT/*r	A[yj
t%aL>+7o[!_
"qZ9v[5Ȍo%]LHZeAǓՓ!oEHW||4XQ
{j"`i]oe&γ5r"$?N-wgl$&`5&-KH2]c*N8Fl.iӗxyYz;VoOJԣ[dS!x9^{^%/'uQGIzt:bs% =.~|ױ{y^*949cW"jq!6E2 lgݿۮ?/o)уJ9CX)Pd?x\UG:]|ncg#&'GbYףcYeXdd`L+cS7@
*Gɯf :HOG|x5~DS8[S0 G{u{>}I|F|YkJ; n(7ǩXv1"ZL"A_@!['vrM@0w_ˡ*DUtS͹,053IC}	-byxNqMToTEp2J=9ag7BC{wdQukT+{GzwLEB؁Er?O=?S hrѐۦAΣێks"z;tr@KIs:mg"T:)X܆,SAc&zMTk	%]7@D5WX5OUo6c~$4aoZiKNfOLrƝ=ږʧ]ҪEbq`iA	]J^S _mò#[P2̺ $XxÊrӗVwSgZnGn14T@ʵ'Ӗ^(M?S{+SdkתӬCPM+(J䢻Oȕ|b} NiYz7o
z$sX :"}}4r#_L
 k`
Hcsd(@B	̈́rt.̲-$@ ( Ucao<K/-\`EƮ_ZI{h(:=-SlG[ErbJ/Zʡ]0㣧b%ַZg	Gĺ9 X(YFDX/Lo"Z=q`E]TK+`TD0"5Zi}T{[gmk>Qw7uC_dԝ4֝a2J^iG_[Dﭟ}6ͪk	^?|.|z˫W_muJ)9=D~'k-MQdUz48ЬgLGsablhT_}ou%,z|D jrZSW<N,MaCz 
!)+֧Y瑠GWv}N@ph}ʭ}U  8ѕuvHDKQ?a`M=>%'6?r%^eyJB%--uSǵiFQ4+M/ML.ladzu?/*,	
 D}}}ZZgԤ&0JU|v|gT\II܂_cJgSZHx5r]5NxrC3ە=	*Ap2Nu;(n{g\HpI%6'V^&MEu` >KXn|Ż,j@#|9A΀Y%ց<0#XsJϳ]2>;V&K	oTf689׏v_~꒡|]A<^)q	H
U;ے{"Z?I<EjW~OmppA`VG\vs\8&I|C|[])c<;kj=#ol~^(D:?-Z	vG
(߯3Bݷ9}GgmM	b8s;3hqOӡbk,Wt+:\S erftޣ{mflρ" Vml)W @sbu؎cdnQPz31KRV ~].ݹBt Z23BGAQ$eTJ
E?ei˵L%֬d?nqp׋"J65ɳ]vUJ>jp&9F7n+8P;pF\ϭ܆ُ%VwSn&>s8 6ձ	#(=|^@6
2ѼV`;rprBwc<LۦCGۂ}/MڇLu|~SUzy% X$]06'/GGF7i|!~sv"	ݢҵް
)eeUkܹ
H:Hx,?!Wrkw* 0<ܝ嚋^YqZ'΍%鸦nѹj>0= 2-β.@WsmM{)0Vʮ˛Vg)4=I{̡S\1+XjLA.v0v.-hɍ@:xxA'EcUK{
Iwi9tD|9d8(8"<Ig@u=e8ԧ#XOhC-YM8ނU}GOCgn{:'1;0]m #A3+t&GM"@ViؐGoץ֥_٣ӶN2t,JQ"@	׃ ~\N+
p?<b7ؙ}-|9z|0͵bj%[%M2'xP΋l$?
ɖ{u#m;/u U}(.z
Kk)ûu
"8
$d7T`Ql]N*;?}TXUo86-:yN}hF<avHm G푃
/A9*?kDcz9ڷi'WB6~ߖ0;,e矜Py_ZOI.]s;]_kV5zQ g9&-ܑ&Ym; xQkWlsB~ۄ(y-m=śӯw
vc8	L>
U䳑܍0RY	v.J'z@ xr4;|v5eTam?5~.$<
U9[DcEDJ`r70vAMy74c8lG82!+
n;	Wšǟ]9:vWrq:4 KCEWz:pJ1LQLAɹ$8BĚt3_$M jNk[4&wNHER1:UʅXs:[w+afJ\ pӋJ=4K}/Eܽ\W1 WD\׺:[{KTLX.8'GpR9L	y4.8ܙԪU,8qXњ<3l5;ϽBgӇW<6c	x蔩#=uFFcv5
"Ľ5NB܀7*mv)qjjSxؽ@YťUaHⰼ~ücfdJ\T è`Iϥ%\m +$H|iQ=n+hBGI{x]C%fÂA
J`ϧ5m߰MCώW5en7x~zgsEnLk6pt@m4 怯uZmkG4WhTZarF{F,ןlj"1lU<EgN eq˧P7\哃8`m6[Uz!kуJvzޏ4?.
Vd@EtCIv?0tx7ڪ@wwEyvFئCd9=轒iuR[~ ]7HKcd+UJ-֮w_K;xU
d1	щIBa0Y79=wˆ(eB	݁hͯ9'=S`/UZ@QqZ k=*Y#7sJN38?T}ۢ].,Zɯzip .,'+StHg psRa߲`b|$0a!~s(S'~#KM*7m-L OZ`G/8x^{12?K:g
v1V;axL;9u0$A:{_Հ2޾zƐ,\<^T~z;WG.PW_cE/\V<yTpl
ri˳xBІ#^묗lyﴔք::Jq`
F2`Z:cyq6͟&elMeN
|-ΩV%~zܨHn^C>fn+vZŹ>V/}|7ї \,u?a}ez8%=l~yȺWJ	NU5j?_GgҍQ:%]:yg]LP*[r4D 6k_
%+WU7V8zզpWƫ(&l
?$B3Im,.@&1D!vI|r>yAڶD촱V^(ETS;?Y!srkj&˹݌%~i7QAy:j:j{K07}ñf!NYʄv@
T{*qY\Q6~ۋCKB?cA_2mlqV{ܚ ׫OGqt95	-L:?w: x[eYob}Y~ժSg,)BqfG޹
澰4nh+䭖Qw _u{4bu֫x+`kУTV궃Ra|ŉT(Zp'جF3ՈQ\KnhOF`M܂K-%`τ&~&~4z2](:,#=~pH61Q{>G6-xvi8u]>hոىVb y5uj'[nU	uX_$qrRXCf
&&,w] \`G`4N5b&1uF[8!?MMߓk龷*U47G}m9%z]F鏍G81t+ g٘x{z&r۬:yH+j[$FВKU&-&͢ q;c$g|@5X{٦#9יHb,WCR4 T;ˮ/%JqBx1&HJ+p)9T;	2iv*ZUlfviZ>ҹ6_Cu>B	g:Trh4qvx}|o.הWѹK/i
0s6xqfk?: [Bь*-~\ncݡr׳$ցYgL^a٤| }pzG
ZXhYyA+gŔE՜?ӫ7yQ,Sύ_6Dpn[*LAAЀ=|A"UMdr*[+טH2Ti|l
i\>]աKXo4_
0O_[j2(DET`@7HSkATvsŮ n)!u#YG>|@nF
~{iXKZbzKIsO6ݒ6k8}asիA,BQd^Lv$PE m(G<Rs:i؋jG8yj&Y^[TO9\Q]G6r')7{Ht>lnԣRISn-޻QJm>7$INZe[EB>wm=%%ǲqzg.NnT*o,j%r;ݗmOI6;XU_/׷(
n'	tNB7u֙_g\Z^
*.rRC+X{ tQJ~"V}zUrU2'AiBV&=5o+9Qڍ(JȮGRm1i>Yj;(dt$ϺiԤJ\;17 *uџIݩgP&!r0S%L\Ϸ|9; WWc)#lpܙҹRkaZxarg,g10
-`tb-HftJ㓪QzԧNnǋĦVSR$e("u~cgC>%pLR,Ӊb=S[ZAjӫ^ʯb4V48&^W>-p5uggߔ]Igi:pVGzLg
'4\Vʞ; Lx|{]n?a[Gp^=Ej)m"\wjw0<r%l@u)-DB
EZ𸖇\㨂UyKW~*KbfdhK݂sPqE	 Y+oT֒xJfY\UxZ ?~CT|EجӼ5 1>'h1Slf~?<SD5u9g %qaV. ~wUGbEUK!3?q֯Q2~hu/yP!%8CRn$TSnrMgRW->ԓ;l[9"yZ<SEU~N SxV#'؝4D 0E\I5NWe\mwvAt7`EWyFN?]W]UեRV$AYd=sƫ{Mͱs+BS(D<Fҭ.pӗQ6lG/1*LĔD=AV,7fMIx sY͡DhYVJV ,mse'c*V.qx[Tﺋ:[KJqߗbuS;RAJpb | WޮZ<N2P<"S;]5WRPp{9=/#_c[N8^+sEǽs#0,MR#+QRhx|EM߷L \l)H~=*PtG?%W]/ <rV_,ʽjڄ/"nq[oe![d.:C6%8)ghö }3_ܳ>NPY-hY>?,Q5Լ쪇+aI0}^\p@u'(GUד[u]6vEMIh	݄@XD)@ubv.-q&\kB},9y@͋ h" "O)dB>o-fӪjW(*yw_/(PQES\d,7j-X$aPHLC%xY]</908ⷸ.TJE4քWċzo*P=bKD.Fd׹OIHԑ 9Y~,wRӷŋB~TL`	*s>_4Us
S'b(G(e#e$kl*b:x(.*̭F+뾙/w.BGRkt4JZs⎠l @sS2&8
>	)ae3; uyiݻt*H	@	uj&6j\xM]K4+4Z#jVvJɕtK= zv	jw	19tNlxҷ,ɲ\f+I3v%P]6kM>%Ron4ݡg(NצJΞE_.IJ'c\SRb1q_^tIj}ԜNTJxr &;M5roi~PyKyaտ~Z:
edQjRZn;g'9Gr	n^
gWݼVRG۶WYYe&Ezީgr=A*
;ZOsF!;(}8xTrnzɇf~e.]DY+NQf NF͒9Z [rQg.Dkz#?8WT,oĺTwR}:zI ;NQ&N_ɭfT(jN55͠f4jWu.6yh^/5|A&gNjOk jJ}+7TB'E	CU>x|QQ{|:K[v;aK'+SxsIHUWAIg=^!R]#'z@$pŎb"Y3nwLYBm:8}j#0=z$#֕wg%dڀIJ[?Ӧ
/wVx,RθC_&I`?4LmIc.xO{m
JQnH_nT 9@<JனQmL"-3`ʝ&FXoT?$
P'IϷ>4з]G۝@Cxj}G&nY*
RV`		q>B`scTъ_֪;M%Zgu%3ߖE漿@^b⃑&d!qvPJ483Sab(N)Z뾝X8"-ן|CrV'GQbԪցC?΄TƯlmQH ݊&$
r_դRm]܂ꡟF(1cUc@B
])>YF]H`%ե[Ya7œJ9.v )V@NS|M\S8YA6f巘ogj}볼U(n!82ߥ $a9
 InٹNGkrp;	8j+ք.?tc}|5*.V!4.IMEGWz)ݍQL|:YUpL[~Zٽ:vZЊzm|B$ۢI"kUcq{RL|*f'\,sMT!)i/4sK0?]A
Z3%t]us*7 
,_Uc3g,?	
,xbߤ*9R+ԕ*ENDڰa{iqR]1:eeWM\j?2**s4
u2n 36O}ʘ&~Δu*nA>
iXRXC]xSp
bvG$pWg9m&y*ٝ_Nl,/
&V>vENְO:b5rtX>y,
c<~褈ʍz>d:ew9	p:fCwTxn5ruKRO)M^:	}퇿ZC=7}}?H2?|Jq}R3
ހ+r/|)Q	nux/+'o gZoAܺ4EHa6C^Pk=C1: )<WЕPgH~|M05rZ|
!)N oǁ-{(龦vd+>z/2e>604Zܪk<J%4.NPƭujGjwQfyˠ?|sY/Q6B!'WdIRĹf,V_*Au銋֑{ԩm:*nU 
LƍWjj}AXgڣEqbP}Gy<ymxwUuZ!۶aSG,A5%}nVvjHb5isw|/Vt`KslSI5R`կ{NDhjUÖ/prMngd[(S2ߣgc[ӫP6RԲx@a~
v0~*ޮY`@I<v3EShpy$5_;kx*a	NB*YˢX7p%5Sy.3:Mֆh^n6eEJXC=T"55P4'1%fJW㼦tFo S\cdDpyULEʒk{.}{:I9cꂗ2JnB\<zj<gHG\\a 8MA:$mI+I)p5#ɐs(Dʷ5HcTT?E`ydCNu
=&Zi?3,&K$WGiǈBBعB3qLہϺUCoIUSv9q-*c{VBg;	V<l[7x|lIbdQSpY;Tqlʹf.SjKr&7;~4=܌?iupOdThԦi
Ҙ%a }$S2{N5)nTt"Ex>F\]G჊/H EC]dU%2sDBl9)SP.PBYlGNNc?]>rQeE"%gri
+Inu U#ox$v(FJ\۾T.:ʯ[*W*bK/zd(p%=
JO
ej"NTҞ[{VPIHJRo
a9ͩwv ~T/cjMI]I[גM"q<--=FWG6@`
e{LvMrJ&(G.r3r)LMo^2. # +VҊxQ<9Al.fYT\n&؜$.n#	u)y)_ޣ[jFRޅ"M\\
R[)(@s[EeRТڨ
lO$R[᫻DtI.]^{?Q
e9Ťո^vSYjBRO}<<'ޣ*U\Aq+.'`ʄ0KwIrm e%g~[UչG]8mwϭmjM?-g.Lz:!>|0AUz@nߖdnR1Сʔe?ʢ.Q'J
盃R"S򩵩m}>ie6mdWt8j+
()C^*K]"\<G;<s=ڠRWYz(y"+ZL"T\yi7!ghw)ٝ*zkUDI?
zӮS)\
e/TQ<QOoM:"rJ
]=yl4LQ.ݐ`CH
q؋P^(VDPR~y\7s\>( ~Kcy buGAPT*܊]z=PMn[l[ԜȻ&}ʓI6<9Ӵ&͂yʫvmW傸@A͎Ior7h[ק9. ȳb(>*\K_1lܠR
T6M\op^`_e'M TSWҨqvSt8i[hX<xoE_eDHI7%9EfժF}"wȮAq8צuCE	bjC34!˸ L0̲U490fMγuꉯIL~Co*XWԐnznjp~G9xvEy<y*G!ur^IM_ncg% hZr>N9O'4m\5BTPT`P
5=4**rg}y<<b٫.V_uSYEBM}`	NC6)o+pKPMuaIQ"NP8%VbD:eb#`INjbjԆwjUb&4taCWk˟}S}u>VG<
QB!;}II[YK+
&D7>RCz}*+U?IKDq@v]G7)AYo@
^ 펖䫍vv2:єW**i+
❟G,"j%E:I;}k=J
%	C-~ZT '	~w4I%jBJmWQ'Apĝ@fQe}&
qYpXl.B8+
+K"7ʭ]įT
T)F<)`A?p/dpgddNUSωOagbx~'N(fܢ4?Y
Yd}6[\?R:
d+b*Sx{_u+qQΦ1eXG|]SX^ׂkWC6"|G
yd9{:ZjSڱLS=Jۣ'8yoGr=s^gr֙6}@4#*Ar2uH?\Q[?Rk	xpxw#ڧ	!Qݮ56ukӹϷM&֋NZpfLƟ}mb0[nǦLJtHgm3(iOl%_bW]853 dSyoX'U_f4)BL!私]qғ緌]i.-]
*˂br_S䬜+y
b	ͨ'@627a8L߸xy0ЛBe_6}PoE	]*&dd	Dx0ke Jr5I땡>{O Wk!$KS>wO,U,У^`7,mDB{(_hTԹw$9(
QVTUd"~#*{՘J%De>$):5J/n-2T􌺽Qሤ<վPGYvfN.^M%L,$2T%Sl*M sh>Il/zt?` jIWTUl.>+"f]jUf;p)4O\ByK$jzWpDjInEY&@IRrC; WQ̔6;'XؒʦaKO;.l	D |;DjCB">ê?@KUd_5ƫ=x>춣ʽ,J,3[=r)*NM8Qqn;ߋGIe}k@pɟnD:Z0)K;?]G1*%YLyhhq#t=ϡz=G3Z14zݲ
챥,(Yuk$}$\V4PWb
^UWM!ǊUΪ0p;vsv"JIʷ"Z6NouP[YYIZ\ώM|p
d-8\m|ukj\2y%$V뉉ZڅGZՆj\jX}GAzU[YyꪫJ0ZGUzT?o^_Pb$.E4lnԧP7EX5w ϾjJ
47:$ꕓ.Uҕ!ϭ$Bـ4>*P1FUύB
m˄9rKi8G}B|#Br8A%+v6\TWOHʛUqHm?z9Pp^U6HesEҹڸG*mJ)c#ZG0aK}*5ziUKeJ}눢]+.Z?'5~:uD0z.H'}N *vu^Q[Ȝgɀ,+p^> (X0*ݪ)$u*)+(DYkR'{ElƘ]9˺<I.L[іL|v}B&z]nG]A|e'+u,"=g=RKg+mQ\g["&* 7hmBlڗI폚*3f݃
Z+Jt~S߂ƍHأccM&+cڈׂ\xcâ@9gԸL=UcvEEخu@;:|}4YW4Q62v(`YwD^g8ʐaP$VXʧ*@A&=*	O%9GP'U"!
;AT BS9C&/퉽9Ԧ==9?N$l|MIc#{$ֿ7(B|p,,jvxqҕ럋o
R`'|*-,P]-s"JaEk! d|gn+RMOk5
KIZ?'V4pQOjC4h
>n΃8_Oddna2$udm7cۂR9OmD
P&Bd#_]9WΝeKŧaݔTM	!U/$+NCKi\q-%-@\]néÿ(E;j+zr>&GX?JP*RuW*e=ETooHf	L(5fg(N (s*M$YvWT tV|ե[ib7uRZqy ԋG,Z]rS{'==OE@?O9U,T.jUVrO*5Ao%w/)ϓ/Pp9(	 HJf*x]}f5G{5Iwps!(9Es$qd$'8ٳx+?3TdB4ݻH<2ךK<FUwC?'oj5'\_ܢڙ6Yŭ:ԩ{ՓZWݕTSWUd¦'򓑿Ȼuo%Vnr=F)T1PiQt߂*T)+-d.7OM
賐%Y#J+1Y,͊X%ح}RS?l(mϾ)NYL\+bOaZŚ@]ˎKeL9Z팏D#ڳF9%Tx(Q5]~]M˩dȔNѫۤѮW'nq-H:UR|n^Z	}J lYGY^o|m˚޼W}?}ےN4U:)RaJp.u=J)'B
s9mJLL3\OE[	]V8]&ihݫ&`=~QEO=~-JU	
<\$ds#Z_b,u˗cB}ןwG1w<BmY)qC׏oMWk?
ĶͮCT
H6ޯ5A.&eT}9J}k:Ą#m3Ay^DrgMaQkzgI{u~Ə{Y]b"P6u}R*kɭB-r'$FFF@3q2rI?Tvi9h
qAy.,NޏG~|CkguݑDomkaFUmjDڤJ[oήZ~-'w"D+ѻՇn<*Ǘ")?yYYZGQ^;Ľ(2Hqs	(rSzrX:Otw; 

x>o^E\>>i:h{'|n%]cb|||Ky.4QJ%qc
6s Yd=lټyRF~8,ʨhq<胃rƀ~5bmzq5|%:GӏdP2X[|)  L`uPn;{+ŀd˥$GGo<EvnRq^B&xՙRnUmt
}R9 T'Ujc'?y+j
'iA"ASWVT[s9WUNuK
>>@Vu?lFzAq  '엪 $;<PU!AMDwZm݆SQnOק BV$K8t}0)'54{:?WX0`@ZRE}4KK7`d:H}VѩO0p(ԪZ9kTVKҴ\5GDwJVN~,$j)dQv[$ԙ2ỷw/I46O>Yrh9Jo'"m 054adB}KpH|-*zH6Q>l2N<^ӴAݠdb#Q֔|(B>iEQŊH=plI.t|Rxpw(TY[yMP2;7<܁+uU JlD%
Y@߫o֡ F=vș~<G2¯.̚=B(`)xUlbU<9)<qW|EݚȊF`t{6;y?ͰEj!i۬7e5w-k"At7=mE=%.Pw$A+7
rHL'W)bQf@
hlC1mIs%. țJjZY/TAUEJsw䮧HLSNx-x#*
	6bDGiܼc#BqyBy3$`5QrYlvEO<g4۹\ǖoԯkr1th-x&f
AekxKEk)}߼n.W혿vb
Ti`k)ev%ЧŖc05ixp8ȏbHJ#|m~	WՓGaH)`-.7o4
5멟T}`>dz!5iƎoBT!k1r-1#Hws/wu*EJɣʣ<Sn$mk)QՋsn}_%i;P&[ɠ&]I*k_9w=p<H5:xg4+wܵ?p}M&ko"0iἹ49
5o_"\s5zk5Moj٦^u݇f
Q3]9&\dز1wy/\ӳlY8J:cny^# v*;{Jؽ"·TME[Nu$kR˻LOT'&|
m\}QlqC}d}o?SfL@}٦U>Rs1WEG*-r^`-	˅)6J
vI^p=xmT$'K?̮Ωq^+AxA<59;.sv6g2c*t|8GB*<d9IǲpGtcFdO>DWg+S^-?j~&Y*~#rL3K^	}$QuٚS?Px=u5:MIuzTu
.,ڄƥ7o8H_ߜ:c:J_	<gXTԢ
{؎%\RZ`UåY ʺݨ]
28O՚ɕ@*O*7_
mt3^Q?.enM#{*g[mJ58MG΄8pQqkHkC_
g=jpHא i7YZK5mbr#WU/iMp"K5ǕcwCZ천j~G}K50Ȕ2W;J'rGb2
`;L)\>kHT*
D*E<.^Y\y[O3$7/ՍtãQߪ=UR.[dǧI]:5J$	/\s8_:%pYBv\s&X)Lp8:vʍ%+sUD\SdT1F?>8H[nejR(? K fR~dHژw>^D㴂
K_I׉k]ˇҀZUW
Z<u;%kN.1:	MZmX/Ö%_ޏ
twWO f
VxQj|SUSM݈]:Rn ]h9bNiS~pKj>ု6㟽hTJQ>ZEI@y@|}92=яsm~W.RfJW{cMYV
7>XIoIm$r9-:hAӴ3.䚔oT{{\7ϸt@T>=S#keۦ5.|gD%xU!SM>:CK
<8 ^gOc\V̢
jt:[zaZ$TO47WfTL2^ ǽ@;w1cՒ'Xa(DSUee@Tv76'n[EVQ&o.KLȧkI?7LJ$R^(ǟ±䁽"dRAh&0Mo4750^;KM,bk Z:EǸt@b%dqeK.e_C_=k6Ts.s'	O!ϡF$N.Lm gי Gyj~<ptMq~khܲl0@8?Co͇
Qnw)5[q3Z[kЦ~d.-*똛hN$SࠋܞGVe> ҙV\:FaF)]56ԖRzJ+NWV9զEfT>6%Pypcd6"@(|tv6:޻*)A-#"3oCuSӈCx4V:ϛ]
L誶:uaEUF9H}2V0zpOqj9zqV9SWp:U0Qkk>9]!M ?h+N@%@2!L0Qx5WP!iˍ292[ Gc(\R-K\R)E
^>4GDk~۾UJβvnnWfBfz^6@z݄`oX閟 H32ȕmPu0)|7Xkd{\U?G.F#Up=Ttc}gTOC<P+`9h2CUa/\ߊ<lb2Q23KW=-cߴWߟ_Q#U1↛M TGD5%.z@=kw_7/ 0z|F(E3a˦O_W%%BaÉIgUJQ=w%xH[lȃI5wiHZTʊEi9I W䦛x6XqP{Zh30jr֞PI u-49ߎ)&cxWn韎U{eHS;pWNT<?甬tpS=X',.uFf[</00>ɩڮ{Xz]~H<푬ƅ3S
HU'ਕW*-i E8lH$rql}m/S35s+UspI~#줉LSt,@
M>(GUHAVnudd<|}SyhPrYW7Lxt,4mg]&u68J8=e?t)U؆rt8Z*gQ鷧^6x!fŻyu̢j-5Y5<!!',7I\e'j
.;Նǖ[']yAzW.GŹr(.	-unD@磫Gr瞟ѽ&qʪd@nirB 834ղUvyʓiDz<<KŘIЫFVskSVZZJ4N,nQv+97(x.FkFGp@Dzr7!PX56Wɕ/]Uѳ>1qzbŔ ׃I
<0k2oI]W|A5igd$y݉0TW_]ij2VQ05E.^IAki0L!K#vHHʺ3v^
 
#S)^?ٶ2R;w#5BWP,8
QS00E㊸Br<V8ڍ0(WUxN0ŭ
6?:NZYqe~.U5A	GHQ7o0ײNz}cEA6P=skI-s2U)K38iY>Qx6*aw{=B{R+AsKla 5ܙV#j ~.]GONT!\suFsi8wuϥ5nK, q
 buS5 ,mNE Sw1Sr&QYT@;LAM#r
(?2T߼oP/GS2>ۚ)a
Q&-΢^EU[qP
(66"cT}+Oz6)kjw]"v:rޯs,]Jys;00MDH o*ju^$&GQ6޺l^
Bt`M129txŪ1
75½n&]]Z^]ηZ7S9]gd)YG[Nj]Sl2paLHK53$mݡS׎.YA9rܪbI\gr=
*VOTDIdsEW82HhrN
?2UE"
FOHPz
TSҖZpPw70Iy ׇexywuQLbIqiש-hs'v]<,SiHtr( 5L<(9=חn*4:vjb+& Y[
 k[yjMİ å8Ny:ꠖ
0I
3pm)I"<|B$<ٺx3]N)eJKGyZ0UCհWqv_#B=VE.l2W?MϘ\LIiOBuPh|Eٶ_?O5y!8O	xd&xo>.NґuYz∖ȸk\}~0r4Y k|K5ݷL%v<y:#T"()FnjԧP.^ ` |(~x8?{VhKI 弚^*#Ǉ+$g8󢥳~*FN+v}L0TaZz=9?><gfHfkAZ%OS;*rlBfctuMMUToi귏+*EْmWv͓_.ŞXA#:|u%8yF<骺]\eYJ<(tuCB:,:()aG-_Qiml*>?s8E(*g6Ϛ_VmsE)j~`ωww:,9*N>' =Aҥ#~NLkI$RJHn2!zWM"U:)t'ϒAI9롼4sH .,}5>% $bEVFsQSsvZڹTSHvͯzLn@RpbQ'1@BSrYDз` zeqpaXyy	zrcp*Wo6
js^vnPJ}ɶn3pa;_U~ϴ4 {pg,z($쏗O!옓K"Huf#l  6s:qQ	?Obf䚥FI?펻@)汦sp)4G<
{iDվRXZƾ<>@]{b&p]\Zc>yNb$4rp;GRl֧T]{|_;߼trI|$0R>mG#|-.Ǆ3;T|TᾺ	o"/r?xv/Y;0r_s)Tl<E5y#+i}hdu5ˣMAހ	ڝR5
WM,kM2N:NٲwM(.NQ\̩~s/u}R.:y>Xb>ջ&{ܟ@ᒑ7(<'F8t=6gS2GEVi󺗮͠~\s^MC\%~{_W5,'18HV'*;LYa:֞xNRP9;Km]ny'HR::$7T#iۚ$FO>SC>'"Ke)@RCq/l{W%_hDE	BrqGɸikG2]8>B\cm|ݻGB$wWNlU$:G/+][֢Sթ>39MWB/j}`=>[m IZ븯o_^	43}JxNMZi;_EL?r\yLeSk2Zx
]_ށ^)I?f71)6AJU(%S{|yr\vwcTg!]1xq:om!db:w-z_Wf_F{utFʩ~\vyM}~xZ+ jYhwط΄~ˤ]Ц(ީ)fz|/^c~F
ˑ zQjwtVW%V 40,ļ7xۅV.ۏDrsY ۶ MIH
R6
뒳#f
6u	pԖDQV'%}SCRKET;q۱vtǥ	GsLa]r
T#榺H|P	oi/gIJ?萚{+mKdWJ5γACE;8|9E^MK?">HJѭ.5^ʞp(aym'W:'#+D7)Cq:	S҅z%4 ʋR
X쥯Z㚺Q}ogF6;l@4jhD9cKYWlAYJ$<BYHǷWC>$
Sgw0iT'|ZQ4~~dz3jh\)GnTGuvSm383qNezG E
MuNmwup(Ii-ytiT X[aT/ʔzT44\һ0tsu>& 
=Diklx4&{rL?jo牖KP2dח'*ktabơPvv
yI4!P$T D~$񂟜3+HǃrکC5%u%	j(p6hs3q}+ә

WAݺe	(|.+8{/ԝkZ:}EGVHHPV5JsܔiK~$K>
=\T[0P1ƒbi8%:d,+/-Rw7^:@ǣWo!R4I{ş9I~?QB?G6n^^yh%!އ,]Rc
jQ(G[(8W><O+Q@,݆vݭCo<P2k=4p A޼	
*3!b`pNOܪk4΋ul1=sMR2TUsm}<=T3RpBim֨vRNfI]n"Qʙp'QZD~{`Ҭ-Ck]~aץ:pޛt;ȪL]-)a/.QNz~Z
jsQvٚH(R%A96.~U:?]JyH"Mu~BbC'"ϯ5(z$1o}W]`2lG=R<&g䴦n`n֥G7]y)ȮEt=6CaYO]s/Eu󓢵݋?RxZYZrAP4	]0LhʖJr㫶t8O IND.n#WeƔٗE7y]=6 \n$yħBLW	d4Ph& EZIJ[~  	<Fqi7_+/DJv?P=Fէ~Ʊ
EY]CAL\zݜШv"'()"l
=LDޗvOn#V$W6e;tJ%`="1"^|?@BB/UpmYDS1\~sM["Ky?c NBo[=z	V
~fDfw)zE&˧Atײ#ecYzlppƅ {6N<(ɏxr>xdQ(|5ʐM{UpZlI\n{86=55.hT_h@NdQ4	.Zp"%\D2bP
'ǥAf.ă)wUA@<UѮ3B`d$cw65P9KɶxS V-[/ \SP+XprfqQ?w=)Wnׇ(x;VFy	7N^uZ.0WYfh\OLm{=SliTl2Cs=]Z:}/]^2˝#n0+[.z=|#QRS;~II&<_K\O\NJCprj%R5a`<BkrPeiF&@ @C]bCU:鱋R8\Uaޡ8Z:"hq
IX~"T^߉ɯ\1>+ʅK~._7d
G=Y,_u֞c$ޭa[$//MmĚ؍+=xIe KJ@~i :)q#GW\.Զ$kypJ/z
H|1PAu5IL[R/)b8:j{vXwCjɝ}H/)JŁ]Vdti۷bOi(5_v ?jx_:s{M2GG^
==@v1Mw5볩TlR58M8vshaCrɁ(ָq688w$4sGQoGZw"rjL󾟈˥AQ|f8NסeS0>hlsQ#n>k	/Z?6i)w;+jOڨ靤G9BԑvyR幉x$GÌqz+yyd|KG(!KߔyL᩺MLaYHJH[>8IlM%R.TX
wvvjEI68W'C*2s\Pse+D]?bDk0h
x
(|5 ijhL<Щ4+rar$k]C* ;@I3dDae1D˥GeP YYMBҢyNM;mξm"8؏#UǏ3A8*[D)A.4PV3x^wVP KxO"Ĝ\h-⽂if3k-@\
n
hFOx"=f2PQJ!l2툻٨nQ~-_]T
(H(DDU_i
]J9ʺ,ai~
c8FTC)oO" Á?,:lEɺ
v3L']{;L<)^Ew;jA<:SWz.	7UD	/![BtZhUlF r]Nϔ_Kz;H
EXVh^*~q?7)Xg5MzALV[[iC+**bV1{5}l`uͭ{dFE'JG\SVmYi/{IT
(x+''&ɨOߝ^FOZ>kѹbl<@I(ɕT~NF+c[FME`¦p8=m?'kHw	+Z)%{*EـI%,X_}4秣eb^
C+rۛMYۨZZM9RH)GY'ĭ*uoGg+A()2
cs`c
DZ86!nsl9WѲCtC]SEUKrk	kfĵYOn1C,`$$e3(*گđXV9QH-h֬f
	)/kɏqǥ!S(쎝EɾO%ǐK-w;Y.(ߕI4ͻR+}0ǌM%$ںLtXrs7|#%_)H~=Uh(?
A[du (cv<\덪tUhJ	xUsʓn"!`zR\ ˦v,l5DH'٥,oq}XVDQpI=U+A8.%)Z/~O7 w&ռ-7_nE u%8%f-[7Jl4܊Q{C0Dy@
A&Y׎ ]Hr^:[d-
)R킴nbIWeJ<Ub$QwR-;I"۷$f5_W(朄+-']IU5zqz7sO7=RygVb~o/"}H=	76oUaG8M=wwКb/OaH/g],^>"XP0a-9^#KsA[Sw 0>o{&	n@ArJB*{&${Y'
<2iVo֎PSRF_>u@ 
Y-nUEich|dĸe} 6
wÔө8
LY9|%w)PTxuzS]Ǖ]8RtU;MO΂Q"7?(I^TU'_e8r]IӸVGKP2((N,CQ-ơcy5.gWшb!0gO$u1{Z _.=i}NRcjrv	_L)ZiL@i
8F{$؏ˁHRtMlp1YmvJH[39}m?J8蔃Qb}L!"(%וTaB-~f5	Z
o@ umE'JʽGf*k:1TS:HU  ~
Wc+9@|$lW`Uul1{xٓVQ5);<TN	7K4@Ue)
\$Fѳ],ϥ	ԷUaK|ֵz4ڷdA>Gy1l_&lQu"(}(]eH~R;PAƭQEYwR5(4ីi#ji.6aṂ@ߑޗcܡ;~gW:JRb(	޾ujB}Է~D7-lW*jx`/}x]3\خK*^v *6()՗G[smYijKIǔ%LӷiDSOMGӷ֗7GCotQ5E?*EЉ2_R9D
~:o_<O| >+:`f7vo$,BD-1rVҟWMDNnUAs|#ٓLNifjʷ>Gm}J60*iU^|ʄ?n\wʹG ȕ~|tmbw	KVR/!gp&]\j)B c/C^Z4Mo hɉy5T
fZIe\W>l6>9Zx׭Ez :r֩:[Ewѩ.cYC
r_+)y"QA#IގOKQ񶎞>DQ!tRt(f|JM8 ¶;).EnQȶXs@ ?  -^ی[.3BUUfw9{G k5'_'Ǩ4"?Lg(kaɒ=njҧ/Kk0ռj-o{~73ṡwn݅p,#˿#BbMSĸC9@9Vk#\RNPatIK׻i/Nܘ5.8
n>'*%_FT~#=g[Zo5Plӯg.Q޽+h)	pyI첂gޣzn|d^[cCW`QZjqQFZv_Аwnv?_CFTmk"=zjT52F2TmcVje
<1Î)<*~'ҚF}v]C*W4M 0GC:!\mƼop.Aeƫzc M
$kLo`s)Ut$@czZD?9/jDx&4j'
 |suhNvŐ[wv@N_t'@e3z4ڜ+UP[	]р9
kuIO)I8݋b{[WXj^\a^oo:YnXU͸Wf- fuUFsˣ
o&	t49TY }
Yzn9~D3ؠe<`tGe ӝ	9mb/+Z-rK7P0/WKg"lbԶpL ̯0gt`['*i˟?Gvy8ŧ]5<:]<CI/b~8]{ٿhtf5'|x6'fYڇaZ]5qoPN1`? ,/N(5^&etNC~m~cr]HU]ǎ7<ÝCGj9}G1<)ɖ~ZgwnI t7--?d/l=n6&Y[:UbFS]Y5gߊ2=XW&S?-4bhV
}|'xL/wdjhU̎ӄ.M?Ĵ O 7OjzEhW+(,+-HY4;7м9e[6Tά:L{~dbΪqA#RӶQz+ %3gd:n[˼:=`ML.|]AlF}o׃&/cM7//X$PPA7C|]HƋM.|3w<!t-j
!5fڻbcӭO'^woZ'etJJ`h$TN!xεSO~"G7%0٠ c{]My@iYE[̓7L{>݃ԁ=x0ѤN= ovJ'iV$,<h5D=gAC
r+ygA6sJݟ LڀDD]6Oj&4ZJp4ԒsB4pG,326u5ki4&rz݋&E{{@;ҥzؓٷ71x:U"otp9[ZW@ƠPSVK'XRd{E%Q>
]a= ?$lދ|=My,ZnNE0kvAjgRUީ]˱9]ɨs!hi&g,aQӣ>æ?O7i2 JK¾y:	FU3`4ET7tAv#KY0s)ֵA.'/9lqJq:*kj33!/`_]&-|[kubkS󹬸Z&٘{3
VϼN>887r\AϒO*`Il
^/;<^l뾼>
ӝ<MN'
%Jj1GzS99CU+]^Bi0jN"{lS^ A_:q<"=^xFbj
]z:2Q7EE/F<#&C3P`L6#н6P5Vbϟ h'-z&egf,FX/GjRhAk!5-|>sh('W`	4Gv?gDtB\Zo^:ORq-駨cu0R|=
fP-.6IUBziÔG
[6U3_xq֊3L緜wHj`Jj(
51:j횯Q/5'BnU#W.ا{L]Z%9%c(솜_7u!$rT%M2BQ$'=ޱOrBޱ@G[NA=YV/B{X:AKǦyu!m"75s\Fyq1sS׃ƴWRchFx>{[qt9Y?y~_Te18iDRMXCAxEF
Eg	l*_w.vHAF\{),ϥA%\g5vgO6H0pwkFX6QʍEvB:b6Jb$~	 ;b0w34|FfR_`?,k@,ri~b.2|R`i3wrEb3So=%{Lrly=4Q*@=WhĭzANǓM10ǹ&|L?SgNDliJ4q}PEw]b5 ;X示#k1N,H|9dԳۤ|Vϱ^jT2gEy6{6JjBjf)}d	=ӓPt }Ӵ-V753(X@'sy`rKSNgM|^E~-ߩ$`&~I{(504L<Mޑ6
ca%ekjud9}c48먦Wl$}:Aŷf耫[n3IT;mכc?jЊ00ZQP149oӦm}bN(s9?ڃ8{x&VۯG.Aa`Ƭ9
fUvwhJb<䨢K|QGAQG7{{2ڜso@>MlYS9ῡE2XBwƽQSE8Ǽ(pTpTeM1	H@w_>v°T7؆.g\ݫ}[(Фa.NEV("IBWk\,^zn-i uTVhS$p :بZh&˹<xrFP~ުW?z0 @h60J?,yAt	m"SسY7x,5خOM*Tx
<+j̑O'$Wwю9
yTBܺ))I>& M2b+YL~sS:GjdRG%!9M_4{yyJ;^w؍$NjeaMgLpՙLi]UYمY@p2iNֽF;=u
lyҶpKXs\ǣڑ1@T;<pY@lea9h{>^ۦv/OnVO1MB5x2ph8쀪hpo
Y;d-_	\uh͛RIji.R|IVrd4[|e*&qv;N݀>үHT+&gY4}},6N5z:ga&}^#(.ǳXb]im
"7\
{1{55=NpЖؔgkBC=?9pR=0/Eh6=XmNӲ5J柯W]̖"٠

~$&q.tR,R~ef3m@pOg?@'?Op	
^<J'ۼww]L|{1}77s:
'l 0>QK4 :u)vputL&ZU8'iUS!Dg5/҂L15/_̘t1jqfs2ggWkB6r{8?tte;TW`ż1Zc^ZO}`
i[I&5i/7S}j|G &;fÖi*yAެ{!&4Xc(?[P! 8EoqTTGʹVڨf&Ǫ@;v66{iԏRMd*_,9:?_v)kje$;6	Ln{=ֆO"8hMEfHXU
Ҟv] fП{_<`/mt0sn܆o
_ؕsP֟ɇZf
ѧB/Cv'59
Pm~{޶X_fC]
 UB`rHR>WUrm<T,7W iv0&͢QZ؛8~1;yS[GްV%eOPۚ$z'1쐋r58kT0~
J$*ӷЎ:gv8æm+xΜik%+`yۏPJãS9%^`1[8G3Jo^94!gOi˱v<liM1C5o//HlCv\#qNzk˥aH=>w|#9' CQy.٨/=
HU7.upY=:G@R):x~QsgFۢy"(sJ+ԺagZ&{ڤf !<!loV
õ 8X'LHV̮?kZګB^ŭW]G$\=hz۳HT<rNh-i`-?e)+&+USGb2CpX94F] J.
0UٔwP=`ZOee@IrB_N&=@9EX)GtjW BX}Z>_=RAsm=
'2ֱLlL ӗ M7oeb]x<a7j:dۘzkI
-nS5ctx&|0^=
?t>eW:	j<f
C֝e2q!%'Ý	Q@ўra2R4;56ۓaB]x@#LxYB,7 a2q5̈́I..Rᄩ8 97+V {SK̒ qJUw/e)חǦ8GU<&	˧tb{>ysηvFd Pn\(:ޛB~Q 2YDIw%Z ^Ua4S鳟T[j8C:=QN$am/ߥG_W7,@E@"wPW~<g,
-4Z|ta[XMc?S?){n90?
c޺yXwŎie,.r
QUȚo;"Tt$6r-''N*ĕ5iq#<z&9c?kPr Xg<lq>쬗OÆk\N^W=qIaNmGD>ӟmke:%F⯰ġzBZY*ϬSyP(|kʣc:m{^'rC0zt+6(zz"<e5h0Dwq\!0(8M%N>]j|!k5zvn
I3=m֚FnR 1Vd8_[le#czq+&?*p e//s 0r*`X%gr萟Q(S.3fպ]ξvXo8S%/C8w䒝43hG
,zxt+Y4mCXzty> yy̟jȔKRLǋhz&&{!#p	`X.tkTsM{Ddt%50#҆HGSԗ%%IZ:o3YM 	f]4Iv_[%'epqV'$'4]3tѵ^+hgg7{.#?fg%v yv,<jA5
sX֨p
gz<I*rL}(%wƞQaRkm"#=8)4=<;(:*+j"!ϯⶓ!h|ĵ$Uдi={ND
g]F9{	[6Pϓnog۝ߞӲ_ŗ}?wyщ^	)x("ܪ#	3ZܡMx
`բғuU]	~ћ}q (fh(LTAYR8''vy(2|*v)[4iJuКiXx"XAy4ӹ"6.>P<fӣdclC;SIGw76iP]R]!I1|=SAK?] gqL^6H*4:sBE=J	+$Bxp}qTf*V0Kp#<9']=< R(>Js!E8Zu{hN	QCWv֞Nx2M=2>0tg2X4!8ҪwcFu (|@Ft@n| -XPjKe^!+AXFzT'E,Obat5Usgٳ

.ϸ'БGos2qerT ':2ո:-b:-xoV/#StOω޾)PRΞ(s|Nzޢ!ф=l4Ǯy˼=e^O{t4)<:~:R}|(S}?0F
ɑ|*|Bk:[qإ*E^P _GћAi=uIEJGjl:שK`nFʨ3?.=i|FײlR^tgźvU&6XtW[FKC*s>(Ο%F	tfx/eeEõ
:\ex/alǆtRO`Oj4͠C<WhSs>5Ud5kq=trz[Ckg
_ZK}RL䡖s5xc2Р2=Z%8^r)WN%oH\Qsn)BƸAĥ?Ó:0\:sI5^ʁPJ%
rLXpUڻy|8-Tmh!:X5!ϫÿ`oSxXOq&;/0797s9@w'CkFǮ8(f|bƷδͦg%9}ُPیѧYR)J4ݍy%o2lAA#E*:~<ȃ7Kx>=xm8XXS Ei6_c VAd 1Llhq69zvYgDy>#qVKQk5	;uWS
9r>Yt,*p#d^g:M珚VwNF܇Z4]thn?鱡⾜J݈iy,̙&tǛgH]'^+80/uZcL=ehplʞ8˳xp*7d]gɺWM*.s?f'Igldo?f7.3*u!Չloд:E}T01j';g|0QbZ`nC`i6ܕ׭)]h_i!-3'J3~+Cz_7NSeE1ёJt}̾2f<Vi\i^OJakZ/Al@VzOop%mscZ<08Òn__=vAYwkybs*@oq]>+
2%f'YRw`)~K6Yn7lڴ.>F&kvX)aܮMK+PcϦ~QtʔiQstX]=L.\4}5Kâki< V`Bs7<x6ktzFf#Ei*8-NUm$˕7*
(֯L`_]ei#<I[71(
0G|&>O^7%^äk-!-C j4ɈXʅA}
f$VƄx%[̇Zt<GU:U;-HAoebSV3z`42$g}AxOn#Up%v "݅W옳aTmJǼDFޗٳKZ4<gԆp__=H7&k<X~H];u?&	O&J^Aݱ1¦]:㔛w|¼	Y	2tJϙS	n=&ۙd,O1rFeks驃DMۙڭsȩBa,/(ٕÏ7jw-+1<y&Ef6ZXu_$Ҳ$m~
21ݾIqgtd*Rt9G{l}MG~i T#klepsjV:g,lӡeYs@뤻*\
0?ɐqe6~7Zthf
M%љ7[ [joL?j&Ujux4k^ Y20Z"fC ϟI5	4٨km F-cƫP
cqhW7}?,OJ1
6`Qh)TQ{b$]u
AiAӷo|B':ܔ
HQŌҕ,.&ߌJ**0*¤吾kzo3GMW
 tYVF; pMS?IWM3` cl ~t)BVtkםJ@?QŦqҸ^;XqwXx;sr.zJ3-хsN*iZ <Da$9C*W{#=wy| ~TE>>ui&Vս+@]W&TX/S cPo:9P5Оf6び>ݒ0XfƷUuωd_K?75ƄO뀇Mk,)k=8uo.Aqyzyڹ$E^<.=	řVߟLi	Us=rj9i
eoZۓ zXTyєg?͆/;F!wxaЁ7x2*4AKQdz'ܤqE(<@}:O< 3TcE{yKYMZf~_w3;0[{N^?T06QqЎ]ئPxX:}[Lk2ðwVWx{{؆p5ǻN][{^\0HwL59
$NXnRʚ1g%S'Ez
% _r}PL.-o8%++`з^'_<Ѣ;U9Tj/f$%wO=3=dIGkM%Z 0$)J=0A³wAŐ= K)up WeCb޻\GlϬs[t5iFzoP̶*l
2Na6x9'^Fe=})׉|ݝoFm8:oD%~}* Y{?yHWd}'-bm3+=e4_3Ih51/u0G+\T<7eFql|Xuk?Nyo&;{Lf$R83Sa9RAK''rg,ԉ03h츒A/fȯfYw="R*E
=<S8՝/,v	_EC
Ůg7y$8dFY>SMt~q	i*#<;q>5"EJ	XgcƬJ+[NϾ
ϖxJe9K^<|O[΀l
n#kL8?=*T+<~J|aHa
>%-svG
ˣkfiQkcM=/j@Nyr&yg槂n6 }[?nJ-(ǏWI& Ԫ{-ڇԬO6oԚxsX,u;0x?u9MӠű3G+)TmЎsiz8@.(KWH]dH}nrhm+m v`]uM \64͛eLeSmn`Q/O,M||W.R@Eކb)k~r.JI閒A!,q?Kwk7X)GzT+{^ܚ!PJ]wle4>>t8KV@-	_#?w|xšn+h!u>U?B<E	`pk	B%y?lxShW#)k'lCs/?@iy *˅Gs_gE@]S2ɹ^NQdZs+6n0%z~迏^D/`qVg6v(ۦDmR++9KQ%9uQqGH*k_P^Ӷ7Lx)X8ѣxVBl/M
uCPyJ#k׊y#!2U'ju
{_,%
U9.3@ GEē'i:AYa+44oYHY5wHťRoSnkυEaw$+ar볪3UGkU|ZP)@>	+?vвjvvF <ƆRt\\Qn s|7Fkh~{Ys>v㋍\xn|$.$²C^϶\(&gL
"yLZaC؟ϫݚ n]ge,vs/VLY#/w TD ʹDvJwg乚+}CGN4ܟK+T~ cM1cjطc*?-~	SmeڏuEW,ݴ|Jg*9^&e!tiY@ehT;S<HӃFKXF5 $3\jo!/̨DO3/\-JHsB2w&g2
ڠ8N9Co+^|PxvṾ3)W::	.cP?dLlv^}y2XdkuaaZf!Mg
|b=#<=p:ӿC>_ɰwRymqr_CE+ԳRv`1P1`W v
HPB5`jtA[T]0>/l܌;"hD>?|Db7KwTn<3T{ ;XZ1VS;gUI%Mv/HvFHPMw04i=5^m	ht\&۩BrD+[6m!&mM=_*.[{&o.0e;`DuN^P`+䏳ʨ_9^YdM6?y*Γ4>0q׫~
Y	{)n03jn ^hzԄ)f#kTaHYlH=:Z s"ggNvA3
w>[?h ሣj8_Y
s~a_$lg5zK<KM=n]GLY4S̭1x}׷iWZ
/`ڂUVvGSY@Ke
0`~CvE媞N80<2")% >`ࠦ`Kj<^rTߦu0c,/Xԍ-ï^%OpyF8qc쩤le~fףs.
R</'+
Uc(?8音7Cf!]4a?_eeJo\9`ƃZyrM$J>W
BFܞ"}ݱV}Nn٤@;j ,^Fp|lIWvdAsc c}P+dkL.<A̲;a^qJئ_L5IPdI9̯af+\r@4޷zt&?>4!_m8Fٯ1U'qnR\%+̟;	fhEbu
奻c?){9ٕԜl'Z#|À:rWN [u)I\_9=Wur^RP4fS`S*{Pf*fήLOt>?I&\Ċ.xG!	\j8%z| LI<'Oz(Sft!
2d8Uٷz]i}NQs+?T37)Ƞۑh>F75(ۃ-@礛B
 |;v>^Uoᶺy|wߏ~casa,[i`\7h~{6'.FּgԲǗ >57YH*6.P;Y).U|GSw⿨Q2etg.#<f`(agpg~ӠpڬuK?sZe7pC4׽~=CI LsLyY>xQ	-wb')x_C)r΂o9{٦y3[|٭ǯ㔺Dgʦq>y*ELU!yzA7NY<\}lrU`Qf{iv|؄LkNA5 4mO/>ILipӌPбD:LHs20R9#6UL48< l3\zs8G1Py>78_g~_ȴx6=jB2|3᷇зj	@8ꐩ{Ɯ53ޚ
4q 2Iս虃AJWuXJ2iu7K?yW1րqzmMnaҊjMT-RTw{X鰱%{fM,hV\hUm3+j&zj{b,0e<7-M/`oA4eۼ_pnA5-R;aAj:NZx*٠qI)B=u哦>{нԤ
#COQԕ
h??LZT{>K{QŠ@xϵ)$`FrA.C7^~B|h
 hM@d +
1]2C[a}tawx}&Hs[Hv_ݛB(	/ Avj<:'A_PP՝YU
hl(ueME H`׎:2*sL&o{;cmP< {oޣQ_xd{,m]eVRYN:UTs||Ƨʠ"t2h& >DfO^Zwle5BB8),{QBQ¬m4CP6Փj~s~0`#`$L-*azܪQH|Z|gp&oݩ4U+{JmwM4?gciK+O3b<nZ=A0/@kd.)~o~޶4
@ 
ƻ7"懹y><oj3[#@SS=lcqyK{b7=`h?ГfDm82U Y{I7sriw)Qu 3r2GyAN.8f
aX>CE&{jv^
a7~Ac=9swN&	5PJH	8+,b:w.ZH>)pAJA7mC`kU>NwrP7:,Ҁc**$j|HK0?»6Pwя*^
RiO+ŀ$ڀ{%G=ح*tܢI+  oK9]i%v <~O0'hlk&O/tej)J`U~e0RlisDAt~{3(?Y3K'+mJHql< M$]?/U
q:Ña4*42T6/HS6QI1!&uFJ5uo:(	'c^_Np(w\@Mnt|Oz&Asie۔b ٣e`ĦJCx?^jÔ9ZB
`*J0@<ZQFswZk54u$[~Rf;/Gï2Z&+CFbNSk %6UOa=%k8C%IuOEa;=bԀ%4> U꬝׹jK͍?{?β]&')NzDtxL7G4kU߈=^}:fV@!aQ(tK'1rԢ'f/P(|7V^i.#-yW/ךb1;G_8J1cArYRB͗ u ue">w!70֏|e4^Hx
&P-IuNkc/Vst\˔]	)A)9:qj/wJ
mjDj
2Q<9
8G;v{*EeQ-kaHE=gieM@7<#vj
醀[r'((qS
#
M9BdP[MG~?!.#9G>Z>2_>堎O,;
ɡǾ&x+9^zSТKayYP8 qcwM&~|:ntVȖnw<R:e?2;C9cA~%ih(g(&=K>絠VK]Vk?xN|X t	~I?vSЬ
<Ϲ*?{]חrQ@z% m1e'K5*&LyA`}?gvW	=Oy w_gzϤV(5>a9󮛖fx|<&r'ӐǣUt9<w_
F<5Yў!vy<@JLt/ a^<Y nC[Zo*zxkN s^/cxrô՛z._NE'ʳj4
Eg>1Ҥ!?X6aVmP̸x|㤆k<4Ezg\659w&Je˗h?th^`	`$FxP+3@FM%~|{>XK,^20PQ<5<foq3&3h nhp<m&i
ui跟mt7vb3Q EH^
k<ou:R]voU8HO#-5»!Who1J1	pr"ҐRF~ͧќ8&UT/}KU6<LsFYZ**߇΀!h8adLd9fZxQ0ۓrꀄZJASeHY$8"L!"JF<tS n{Oo}܀[
rFJwT]:ԕOCxk*YF="Aۣ?)f_݉"8ZuP=r2t. v{*/E7;Ta|
U9RDП/M޽;V ;2Ҫ}򼑠}cQjKuj)t2eԯ*vUǙ=uәm2a2<Q:/Ѣ4AǋR4rilY-PpdFbQ4%ޙDnBg )Kf`_uhJp
/'6hfL{\NSdաlTJ>,OvYNPSOc 4[S5~>zQz]hY
mHe*H3;\V7>Ӱx=s[l޳{n~x
ǐz0XHj{+\~R>hK_:ib0j_,Y.ˑ4O)-Yu2c%?<'/ޤPo:3־ޟo2*e22q?ѡA]_>;0O婡|U3h_8[  \S̣ΞSYǦ?ϴ$mW5j	n+nם~oD8UX#	D~!89`b:|{(	:,<p|)Ӌ_j^GSwo-֦g|
	S
zC)wQ^ևnvyvL#9扡~ޤ*XMW8gc3xf9hkn?M9]i5_"`j= Jm7%?lT2t&t"[=?xTcΘa']v8kV	XNkUjH4p޺gd*yဍ%hYcܵ&Hi3
rwy@aogPWA6=M 1L4OU#x-)ҟio--	ZϷMNZ-Uyg2Tv{\si/FJR#z6*ǥ]
1Ci+O%'%?!FZV/>4VwZ-vcN=cϊ_^35GPh!ޓ-yHkEO!T<LAѷc6L?֠w|̀jDwgb9L3o+JwS;UmML/oT<QNTn+%c/3WR\
>R<[ses[ ޖ3tyY<TKغ*3mC3/0Pvq?cAҠE_ x'0}8Cu-qx3.]tb1dӭNh57SwLߍK5?.4D׹pL5nTULo aR?uh~%M,^xӻoiv:,O890K
n~_-&'TSAkA0P>IǛ{k %⢒EҍŖ#vԻh
#ME:{[cUGu} *Ñ
F}SAZ,C}OõʄSՓג<1h1x\y0h#2_LT<nx*f>ű.m^1=97<\3U|/|vYj]GRdXgӗB^sCgvcpOV>G¯݊N-hapciD:΁xUVNPPǔfxaf?YT[iߠgY&%t}'kڧ"џDUm}l|htf9p3:Nҧ6Pc#LNcw諰:Cx\Yt<J_R8C|
sywn[<;^~Ŧ`:*}ӹ(|<ꥲ</znve
0tl:3#V6SoIXۻcQ;Qo2|DUS6&)nWr,' .ӝa&;^
0ӢRTdţoTHJ9xW7ٓUb.[b2`Nl41B2 ]PMMDA#Mʉ"
`u
Gl3	jR_x/?7r\ VX]PD-O/e9?Mx2i+P3S_Y|6}9z}zx9Oƀu_hzUE}5C͙<x@51{c;NmJ	^^U0{k)C\ y.;)V^[/:tpa&+%lXt0P~.|c-WhN'-zYA۟WZ3zHTVי6Z
+`[#^7qTl.y%E9,8p;BeG+etԉJU]esI=H;j(j=^H.^I0xqEXAVDf|HW+g݄ppШQoroX)a ʾ|U4bRɜŕ9yL,~댅gf=ɛ-
߼"*ELmW887ӯ5tBӖ]l6"58c~)km ck{J#U`rXF t5WRX4k1-UmyXrƎ;Reu	(@jsH;=oCaO<$~֜-N5?J W/oEQ,-KqcǱ^·Lu[ `HHh*"^BؙBq(,oDO=4>QzbkT;`-#t]&1Wy.m`:i{'i>!aWYesR\FL#|=i`Nٺ'0`P@0bۆ9N{a
X	<ĥ&[-π'/-}w0}0?p<P*Yz/iM^^3S?e0/%nPoX 1'*@.甓 >#4,#n:t;EGcnT=W[2ؗ]=0OTbMuӕiFӮ{-'Fe:y>>*St:@УAoR괚O807`a\OUWsn չyض-ݳeJ|	 _w U h5Iϱ#[E] +p|*Fd-SPc,/$`FQkK=ΤM}	Ua;Owz:Cp9?K+ĨҦ7fN?vhv>,:ւ^O:O{S#;f@o꼌qCh7{X[+fƱdj,ـнfX*az
l)Znjd݁&Eܚm`;$-%xBBDocJL3hmlHҞN`=|R'6<["X0#J4IyEG	٩{SU)la?z;S(O\̳(5ΙRP~Sy}u$PKyp<OigPa'SOu,ԚF9^6Y}:> mI^7?xW~ HSMu҆1{hO
D^NBbyvgo	jz85=h{6ԻXv};Ce2kXI-t|L;=BWdn,nw8ίU86+S2ϵ /(oVǩ2 ͏s[0
kS7xs@JG#B]α'3NT640D`<9*yN{=[8b 2_Rlzt_QPJq SnQP䭚¬իQ{-R1~fH{Ե~~Ok=-xiZ,eګܣ1}iףQN.:Ӷ.F`q1(ْ^Q8+Ma0gGyPi'x`x5hL߿
;=a>f\5^|[JvSIy{N[)R9
2U2c+4WFK/*k	%yNW8:4`=+;G+~Om䜢W!YF8ѡ`UwWjKETavKt`kjP35C2$4F.湛m+ȑ/2HvcYu-_=r;F w!T5E
뫮޿LmC:PZ7
>kVN<6@8dCL 8Sy {fL+.*@5e4EPv1k0,%Ia@zTͫVj<A"{KW^3뗒mg"M=2¥~9Wr;ع;oŷbK2SDЌkꞥ-8h6YqJx,O}- Xu4
la1ReJ?Ɨ4|}zU
l.㾔D):W%!6m7Q
v{x/eQȪ)01iEvǎe)8LB8#?ıV

b]LA8&lʧ9{`A{tY@<z6AVnMERL?4G>31m|Six[Я~
.qWwZkR/Mw3=DcuVcWӛ+a:O]#uw_)##T&zW@{`p:o.}u萑euRZE('N[-$#4^&5tGI"DZYn[4l&/>* * e=ߤ*F;I,ܡpFc0c6xݴYat&x˨y" BIlT}O
X:VX.*F
)vkQv
ieZDS7Vǝ
3``5TQ
A[z-f|ڢb*d1jRq^Hu
pqS-tJ<J!;&/t?[{/h]+Nĉi@]Tܼ|{-
3Ҽ@fQ|	Q4tlWwJ(*6wAf Wf}Rv7_FN3tkcX85)(c' @
978
`'쩒PlxT:v{|
W}f- ^>^qC#Ҭ[{Q	T2E~jj e'שr's9oyL$__XPG_8_k݆,´13g)|/c|K)~|¶qVmؕ[WGo
K<:hvTz+sn+;)oPuS}̰MF;KuPjpH4.oYńEs
s"<t(A#.&߀N8Q[?w"\UP:þ
A@8#Dfdq~NBKc}bawʺ`~^HΌ)^U+~1Y:9#/Z:@#jQjx8GdȖ5Ru9οS3AA5kP 7xC̢>GdGӞ/3b6*O
X #dN󜯁ڴQ=fYn%&5\Vu*vKv?ơǾy%jk`\Yk)gkPP.a$i}Z:'<t(*aO7aG=-/^vnh14.Źkjı+eSL@7-sqv%i'!uNj5 Xz
A-Z,5|ЦIQON-@97
1X,kҀP[(6
<6Fqj_)jm_=Wo0Ej˽@	6Fe\=s}!j~i:fe
0fo",km,Mf0`)4;١(0]zkngEx/<\9
%?ii4˝Sa{KElͬn)+8'׆uՎ9?}4Oa-x.M,:9cCY3pTZy8#k}C٠GH=GSz4Je2C,zs)[
2ħ^nRo$ߥ=MQo\=!S5^.G:J1U\ zܛ^tn~6d-&oGH)@#q*|c	 \Q9q9kc<5;ҁTI^mAij#(N}rdNp=y.Y.ƛ~D}gd3kcm8NjCe("vejZ_ylO6bۦ	V}ȂTA
I˂XApN
	r[	pSl3&4.LKTǤȹ7*hՙ<͆}/|(_lɷt`l5^i]~_^Fh'~I;]eç&y*AsY:Q<FIF@gp$u]SuvA,<Y{bi5
(OW^r
	_ML0y[SeL[与D7K|IsDP$*9 |RoESgRMv,||h\OT!NMxݵ ^ZϺ."~yʌv!nѮ@N9چd$Yg/{oe~Fj;z#:RHe.)[?#N-
T :Mf4@NV|s1$yM98yhpj**ı
>Pi&	:UN9KUvW>=G2T#$tGM;ܩ\39dh4Lқ孤torX
g
Hmͅ\?tG8ۀ^(&g@X=HF ѻDb'	"-Su]w[lx
ۊgi*d+ڧl,-5o֌QDIby.C iWdDi-W:T8&[qdkV@\.	r[sWw
+|J@v,}~}A4(yA.n[?Me/oS/{
T1#+~~v>]o',|4/dM\GWp-AGuASPR_ѯWK_m9Qu`
OlUSJ @
rQS\4 9MN?76WJl3%F!wzvN+C}z[qpUx"6X+̂_l;R75>ՙO]}4P95,%^eźfts{OlY4NP<oqY4!֕V)i9|u
+
iي
V	Mۤ`j t|Բû㑩R#dr90O"G]}l1>rT 3<Sk:'L9:5gc
Aluؽ!nk&HM=dGJd5?"<XEORI~Ge;j[Ͱc?&-^0YR|8`	a	QGa_<D/%4ogr4X&*1~:ՠ7P.z(˞4ֶD`m0|v,?}-I㈖^߼`hv)y`+xx Y:9g9[
Ozø^kam)&A][dA)@]n7	Vd|Mɛh`@gA̙FٹrZ6uǷlS)G7o^]< lZaSCU'*x֙޸?g?V}W1
$M:]ݾby! NӪy',ߞ VV\IvlsCê(N}`LRrϴq#-+:կyQyQa0&i;~^_GO 4+0DTkORpvٳyual{ŞyɎn߻g'T&}/$9X>]ťzhP_8᨞@ud  QW,Y8O@";ddJ^ٷe$t%hw-r~Aօ3L(ڒ:b3# 2`{=o<޸&Zev^W+s) uW22%|ğr57DA\P[eĸڅ>};]׭ZX7p!#Y>~4=U(,s 3HBV8v<y  bChҲ {Bs<PkuD'hK^5$}[*3nJ:3KJj8u5|2yWQs[*]{R=/hMYHt=hla2|rQq|_Cu
;NG#.P#<:8˙*ʿ:j&z	rױSܜ+CMK$n]MmÞe.gijuG0/MwG;y8 yڳXgB+T%_/.x]U8,:(A5+ѹB̛
=tco+PD
_Lk}Mv(jKԜ'יL<vi]eh4[THzoՒ}?a쥎!fM{hu"7($@"^49խR|aHsA_AH<@P9@-%	v?}yzq_ǚHEUGf$Vцj5Wj_.Nc'uH\۱
aIA'EZk-t	Tw

,-ɔH~3.1TD˱ѫU4M!KuU X6iYy6ńHua#8jCkr4͊B>|b)!|iXVN
=T5;fхpLS_
¯ā
:D.uLXWsO3˕˜tzz-yU&v&   WЫuUjBd:c_ǑQ!4JO-wkvTE],6bIӖOٕo=oAZfeo$/S܀"B??-اel΅SueC6t]BrZdP*|,Ĺ
Ԧ1su=kdc`nqk2쯽Etbk)"D叛FvVUn
j_^hUPz<~JvUDNv|rQ6uR|UL`/X:(wnvw2%>kk'xx6eS+8mh=R^Sds6ثWC?YUIS#br*Zf(~ã-˛V8Z
/[iY
h*0Ti^-kW	ЖD븶kVR6c㸆9sz j̛mfZUpfgT쐧W~ӣU|KgJ$*(p}qFH఻cEQerݜQ7MC؊Ɓ_ݫ#uWv9;:GExtױ_{hrYtsjTm%6+	0=A;2Em}{6u G0U4vt(XaT*AS.b*QSL\V[
#ªtU-*2;ֱf
D/W3j[SQX`Ljjs\]|ĜRp7$Oơҵ7!:5_ޟ}PN-*0m[ztUZ]&r9W:z݋Ze`9:hwTE7>0,{zC#Y(#ڙf|W9g\ڽXXba/[ᰭï75MMO	>4ȇQsYF7ᢳIEml o;Xvv٧CiZ}^<UT|g$Q÷XPZӋ_a`1l{WoyhBؖ^ؖ6vp5$Y캆*r\-P15T߆?wod}QУw|qJ-gMNsz-eRzwjw6{	t-ilhwSQj0@e[5	P3X]O~lvʟ(dΞ"]t[oGSAfՉLUok={nSxH @𝚬yO[8
%_0	{}	?C>޹1:F>|@h+$ l7Aw^E-7jսM~Җ	4VI
ݚ`
WV[M2{R{L*0v=)!^݅kAIO)h+xBg+M.Ӝh*?&8)
֪A{%-^ny4?VV=X+iR
-ٻ
$ۇfèD5evݼ
{*IHP%$ Sl6^^٘dU?6, 94/P2Yܐ?Yp-~Ou'er"7Op"` SpIŮN 5>@=_F} ꅥIr
2?lv˅`pꃧl`N/<P}gu?Qr+q	=Ѝh룣=25;sfנּl%L^*cxKl'Zlo_Y$q+oً8,0gOGxiX国j؅noA
Mf/BB@IWV#sw/tJm5vS9ʹ]W
حSUp	'²{RW0ԂendIJ<
5n`UtyhiڊJ5b6M Mq!>fT[W}Ndicӓk8?˗rY j1:8zZJO&Ӝt`aV4?Uu-ģcVwzͣ#Cb-+Wū[^=
J/"V y%Q׎s8Y9)[*q04:q~,Z.)XNF,	,aN3?^L$!}<b< )؀`珘vԯw(~Npϙ;zE-G0t
{O+Б8*(	 m
'*=~@Q|ymW.bhS߱ԋ:.9o!$_ђ$G{;10Ac=",[DR(y]23>||6>k%TU/;ia`(.,hr#M1ЁQA(ޙg`FIyĩ@-嚖N3]SL/ѽXyNTMd{:(AzPVS;K+/EC2ɘ$%*rjwl9OE,Q!G]pEztwWM%?>]#pz}^'6'Z,/)a(FW#J4axkᔢw!2WPѮQ kٜ<Yaw"--~ԇ4 DML6{F,~CKZ+XO9c>YYR򐶺˽Pϯ&x}5g+-
Jꄠgͺ7KVjj
lSj#)Z~ n?|X#/gPx=3Fj(UzYCW6b'B&iF 6c_<粑mI48r>O.Jb[;tӥͶB֙%jq@pe[W\+uӘN0!&d포#Ird}l.=aJ@tRdju+h4R6sP Ɣy%\\>6=ʸ^Y}i^{voOůy҆:hN/(kxYYL/IՆY'6еk}@d-61S({R ǝPvgv*x<P#Y~"W.U,lcѢ誗){Ҕ$rVXb.G.?қe0Q+)Ǻ;_WHu[;E'Jf{ r稄eb#"~!yrǢg"o
GKl99M1n@5Ps0u2!(QDS[x)Z=T5d5[@RHQ>rv0s@`'VfӼv9vMg#ᴅ/6,9kܺ/dԓcUR#Q w7D0uʚrW92J9~U>A]ӷha,ׁ5
u{nC,}r`o;*!UPo" ;U*$s`Bz!S.ZovP\,ml
$Q-a|:x|  *MnMa$6Mㄌu%hfHۯXHdgؕeaQ>l<<p"Qo8@jp@z ivw
xc06>CCI
0tCN[P@y8֪yg6U;9HӼx%t~]!oA_S/ܯ+tO3G+ˬGdu<Z{һOI@MUplZ|	<\-I#%=
9^؁
?	~R]rj3JKw%Ff A	f&=u2gǮ^_?~\bٕ}^%<}ZګSl}+
M,+|KWk>BlT<ٝ13f5\@l}uvbX8m[< vGcYY׈
p=<tt݆:	z9GEfy#6I?yt@̴e~I]{ơQǎٸ3l^2aʟ[a5_A	Xg/\)`srXCdnSTSe	6bC Fाe=㴛f{4lek~#IFQ9<~ЋD=_SVh$_~%A"@7)fotjiu+F:Xu>7IoU'p|/]=XGڱ#jh"/,ͻFEև%|
2A Nz=-[>d9@`k!O #Zht# 47&E +IYUAj,־-f>]QPbe;"k/@ǧ
A0|+$BE#DiQhQ^_AaG+/Ӳi
w{BD?j|Q`ӫ6ǖSӚS2F;[(1:
˹YW/*UEuB_o8<n+<m!Wr
 i=ȃL`!BPM-ھC(*bzi O[ck@л	}w`^~[0oӂ\%<-棯9Zѷ$%db+{]
A&z<<>j`{i4Ș
T0>4N3xLvM;D^[2?==VySW8#D \& F2.u@Jh;'[	!3VPtTz-^aCP
Vx=<[ި
e\L pV+~@Ńx,xG`*Onl?0ط>sd
?aG ~ qP
<O]|w6KTГvICB
P7"J!Ng6`h">^ꗵ	X}(Dq^1O! w
r|4>Ta2{9ZP^oe4	˳}mQDv=GNy<|NyרȻ]Ee|^znH/i2Wl3o)zy$P*y{̮y{hJeٶ-|gZU_1V6mXn;P,SjTE@lAgԟr.vO[R'@N Rh|}`+4#ѧOZy[˺;}}
WIQw\4)`ҿQ7/c+LL?pZ%ҏVƥ#tp& Ago#2}~뱨NJ&f+wъdL6RΨu}D_]09*RQU[4 YT
v/ikޤ#0V=gr~jV/y,`Sގ GW8YѹPD'˞#(ι6T{ݗ;j`K]]s~vПN>/b9e9չF2~2Щr=N`,bS	;?9B57Q<RNR{h;{iQN$܈REtҎGoPu"mӣdH,
`#h}Ƥ(«CjHZu	ɾ
`]QUi-;^Ű'OYM[޵n׭k;c (;1&<QHaϾظ(8\l5}:<fG
S pTFWyIIb:M-/uVҾ_
acMk޶$e}ǘXOqTMY^p:&CF[l:o(sN9sOW
%$*ìhCR>-þk[Ǳ⛲MnÃAn+Y0nz2jT;74T㴽~ʂBͦ?
RR93,q#Q*Wv-2
k?OnG/R|)QV Jվ3.VM{*=g`
/G9%RUySdPYzrHOD
"H?	PΖ&j
UVvzA	bИ`F;p~lKoMeRkGOŸˁr~֘T)o;^g8gw/7zzNpVÜhJTJpY'02reЖmyT6}ٯd5:ɵ[3wx˯rpln@l?মpְVZb -襸tbjuv꼋6?J)lqqm?K
NN,΢*wi'$	X:9g
֕ks*od1U5p
q}FZHh#P 4]7q&쿰^u	jK;5?]9R%􇽜Zк HuX	blG3 >0ȈMHNLd&%fRi|NﭱgmsȪ8-TuG[puw$"^r-yۭm
5`WR7KL%

8! 98<b]z-RaV;l@gV@'[]Wm5ڂ&7K7#AfhϻҼzت7{aF7_OSN[mB5^ܖoBh+@h#UGPUg$zty7is (O|a>M3G-$p5 qD|C6BӮ=j
h'l
GWO#ѧ%ڟ6c^$NԾ;Bcl/~Mۦ2xsl89YLS&@6V_K>?s>q;;H԰~Z	m&W;k2˛C~kOF"pLɣdy,U6BZ6
"j;(	<>*a7魧ޅBp%R$|(?qc/"6]]oXY7˥=zg"`cbԽH@`w^@?b*E!v{g>ē0sDms7Cf6)y	:TGnM>9vG	kFk&ܺ8 dCEImn	[P2l](ަ=gIls肉ٯS
W5FV?|cr{Rrǣ0
Waeɭ ʦ?IXRSTZҾS'$ڻI朜OqV.y2l~(Ǎ1r7w}֤:A
Y1O#Z(\u;p
T܈XNA
- FM]6BtP;)E\-t*qѶxOS^WI3G%ը$upo6ԯ;У/E=X^.aM{?AT}0OBP6(`UwQ`pd|W:p㑜N]Z3nݡok-}}(ȞGA3,^}b!vjǯ7	?2Pdm6`8cc7Ӝژ/wW]NvzƲB2$ZScT,#YK&$dm	N&@S;=ʀ~3#|pWf'wȡO%owG6}r`1)UnɺfWʙo ~܂1$:IPmnQ|{aǡ>zS_ȗ\6{ 8<E>8

GX
f?$Q-&qqJ@VOrcɿkCKD)uj=ڝkmgoh:A5HǛ{] ;@*\ZMo6Hy+aݶCL=<5ub-@{MSګ	;!'집X#
Э$כM-# #ήtT@c+q+`Lg{{jztS&IJk7eﶘ:@X.
4ߧ`X&;;ǧ.]8Kb![YMO$=)48ֆ=
;*&w{0|8J ]Al\!4<,MZȇ&I,ְq3*n/`DK	dGoGB"*'H5mJ&QCc7@yrJJNMh{B)Y`jkBV4%O'+{tmު.] VX}0;8d.gIkDެjjL
C#י~)?y]
<D`z!\I׌?$1VǾK'[iP 4PoqTttt0^H`o|?֠ãV%߅WX$<^xBؘQ>G'` Lۃah|f{mpN4})|V8lq{Sy"lmVP_?MX|L~JXY]𺕅(N"yikTNq$}Wtj!,%$4`((̖QfłS.le!I׻N&d
KQ
.~R@P:^v`? # [D@{qZyI*εn]32Y@ ":|oL@lξ7_dK⵺lGz7J%p`S~9byXZ ix	|	}:gCL>
?_7:}zzD@AǖOu߲HัO*xm)Op؇rZΨlo >'	 PwA{|άdB dGS^CRu8lk*˰"
]E;1Q7}x*$Cb)2Ht>@hc\ɱv5\
$·~${C]
^0APGK+o
Gg3;vS6V/f6_]Lmy_(>H69
=u6e/UD
;b˜ݠ'R3Yy>%jnhӟ`?<X]cҼ6OϗXt~A08hb*%!VUP^-1ZJ?=!i	g$T>m~o䧭#]fv/J[/ȁYY"N+%;(Lȓ.%8Nڎ@|N۴y-xidNg,[N),b2iKגı`BuJZW+Q!Z,?""[[ux$r54׉'Ԟpܖw8|'ryA_CO(4L;
{{B˖wd.2ݝW6g/69idSa2{Y {W-,&Av
BOo5y3+
`޷>NSP`U<WO^0"߹⹖*ÁK{43OБjG0xDPF:>I"?#>	ܨmsFXGI[ZN55:\uOjP{!%_*`r<mG\W.Z{^4_dߚKo9Ok Bysc
P^/G;\U:[@	"cCd}$bL:itq؃Ŗ+^S+etR,8"Ͽ,@=hKO)9
#B8k8Qskw)^쬧s$ fGlyHQϳ ܳiY5hichUUmٱey6ޡh׍(nӾnQ9	0lNqSʫ("0<^U^ROKtqEeul.^qK'RM5V?W׌\
ȃxS6YHg)x+-y%j!T2Lqzլ(AAdYl!h}Am[pNOm7Ө?>:V~v0KK3ף!|\0q/Ԯ $mwuD8Sm:y0Y,v
vy^>El:;2k>-)B'p٣mEi_ԉbj =<U\#+`SpPϯjX<zQݍoG:RN1a;(>*,Su< `ցDk\me.9ď^;kUzLW%$bNO&mrY(IBr"z2=/5qRAzX?PΨ_G=x]Rr?}ϼelZ~jKnqфnC>`Zu}x1mH]6mkyzvmAr6z:lVxYc2?$H9=NW3Oصly0)NH'
>A y1doѳK˔n5eR#G!(RɅsG?P,LvDxߤcD!X(TCo- gt5VfgN/2 Z,MFxԩ&NF}n;zĆe=y@fNjzHцj;Ү/VtfF1xAUTfz|ݥ>/BU>bчO[,WFʶ
 / 

A
SQFslNFi}?'?<M#4[ݑL[kUboŞ$lfP%e
 gNF4C]9M-ILL˧Y [(*Wݱ^~	R`֤sA#@wTdNmz2D"A5ґCE	/b>}W!#4xãQ
+SEoﴃ
uICBߏ?,,x2[QEB0xAo.vuE(6qcHiζWKt#*TQlMZ:aګݚXߊ2JjC-|0ִGRl>7=ķZiN{xXRVW8@zB}Eή,J-G,qG^?@5(8"JsGO}\MX_T:-lU|+,6/)&|vߚOwW@tM;u q7C`
&4E#^-c.<{1Xe~E9OU+~	l;A]O4]*ZZ2l)~mg͂|ڴCvfMwe*:)
eX7:OH^:P^aH8I]BwHM+GI508BAhwOHyOdMG&.l DgV[߾mRK{tk4:8SUR{C'PRDuh
N&B'mQU\;OFqzYAwż{F:sW{ߚWs( &Y׶
{U'|:XFW$) Dr^JS'mŚ*?Web雋(<JM7QUuaE*{[2WirVlSn6)ܺ`uJ+?J+-UXcZuRyeAC
mڊYx0g oj*_S~UA\} m}ܡQ+>UYlC`=GS\P࠴oj˖8YiHiNuҨN5u7p81< fE6je<rOX o%d| 9E)CR`K49@zs>ey+bds5r}|FySׄ-N1{A@&9	e5M@`(ge3p5xH/4$"g@hҥuN3{	
KPb+Ul_,fnkeGeNxw-'yԻ%:d-|0^"2;D 5Mr9ES5uVZ EHo
a{}s@-8\D8P+HK_OvAxoYE 
x8>9J˒TNGVֶNLɕ;#q&=nG,\nδ)JD)[L6.%`EEj/u`tH</[h^gFW趿p*j⁁J'P:hkzgee\@Kh0VY5ׂ0HfkDx~a[cKZӇ`|~ut{34^I
WWߡk)E2y_3
O#RZ[NQyZȌiNб|6 m/JSѩ/]?zX@da JD3Z)qGve^# yj*G>C5u:f`Ofunxl|u]ڕT5x=@_@xUOu,k/8Vj5[ԎmXqU,A<EU=. 'qNI6a{)N5sR򪢦lw_kv}J޸fsi+`mX^|
QΛ"Iρ?֬]]/^P<KLgOJJUPrl>1IU X=5$'LItD݁î|S$YAd,N 8?ʱ;v<y
@=ެ^ם-#ɎWvD{!	'ԩ
[eÛ^x]㹠|wEڏT@գJ`ۀI6({3;,v\rGNqs{;rADћS008RbBD%J.%n	OPe9
D:lۚj|M<OU!8IHePJ'-n?Y;sAckXQy+EYWAcFD]vFD
E2]D.8z߹@	j@RƭЫ^:q؎ngo]dat?{fC蛹פּɯDZ揭!<.59{e!bxi{:|]nBԖvQUlD"ew҆l&Z*5wH
'VX9_9]!ۢ4۽A@d;:ϙcH`'J=>4Ru~
./ҌcA2I.G$UDE ۥAꏜ-O4Mt[]={kk;6a φ1$^@@ջMcY83jB7~_ʛp7]JP>3։BCfA`sjzH/D*e+DP.bS&MORTۍ<&<4v>Vp5ڸk^'YU˷4^oyRm."!%i/JdڧDF69;fW!vFp6
&-*WM/HbQ*S^<#ٴTp,Ƥ9/S\[yY=o<k.o!
X4<Q@9)Y[ PAA4uZ}7נN}(xD,=~6~_vFcj-44-ZwA<۞^2{>/J>N@|x;wvѥm݀]jkyq
V:6dBm{Gr*%9x{m$쉯A[USN2W [x8khLUtܶ4FCphf\^5*p0UF_6=W60O>k gS|Ⱦ	'%!AI,;k9}Vd
ǟTJk^a9({yAk֦ew<Z0"՜XZ1y~ogŀ >rqY#8	E-ƫZI1]hD|u̵mA -ZaRӟOYe{P-P%hH- }l4ntWSq``7I|s@9w"EQ7F(8ˈV7d5Ä1hFsTiXP֢Ѯ(}8SN箰?ptkӡw}kfeCPAn%2:qf6y ۅ!NeGvpRXR糊(m@3714Զ̹	 nQiֿhCerp+*'uI	`Ց_o)$H+
o`'qUvmdHo#OPqAo[m"o`,P7~K+0"߁7q8^FH`OzW}&\NHlt,.:3q4LVfyַ|5Tüǽ]%hI{u34veoe=#rls		qe[/LkDP+U#YTurI?fhW  <y>kd HW:e-ɥ&vj ΉWCrهɫ깓AT@_m֫Py<;XD#0"P&|K4Hb[4nΜO)ӴHZߟmIqso@&18c9Q\E_{Qnےfk  ^blSK>=^,)v^^5DfXjEdR
fm:zq2<A4-7U ZI=Q|D}vsl7=Njo5 {[P1Pww+嵏B/#cYגqK٘.\*jV-S1l&Xղ!Zm>%?;|PPáZTD#e	aKBjzUulsi H|§9'9Do3р%NM=Xj53( qtNiMH#W$& /M' 넞ٞ/pn|5G:ְc\QlNRs'Z꿕f%b|zCoBf]-bT䊼*?gFj2\6y(0pz1~)&&/men+0
'gȚ'%gז
aVA)5R͕#zaP]ڼ>Bknp8UWsڎ58Ɩ3_:\~~M-;}=tˑ@-z]{TDE-je	cMeZw+8ʓ6S޼nR](	XTpTV]8灝 o5 b:4>XA8Aei:sȊU>dd;х
6^q~˶Gm9I64?5wj7
Fca{Ug<?-ͰXmcnĂfU}XOY)n>NR*t&Ux _ŖQgų.
q	u8V܁$r R׫-i~^YJT0hp:T6-E*sgݎg~y@B~څE
jg[F\uު'Dү׉0n"Ml]&8Mtoy¹bgzbkk8[^]Y6حb=[	r
$4Ζ2xb8D^QЀ QM79$tJ.g*Fxf[F:g/TpsgZ]ա?r#Dt0AprVFz[|~,N|W2gO-<Q!=㼼rZb<_6ܖ
<m]{n l't(B펶9'p?g8SgvFF+9t4?|\2m,q֥ 瓤◯L5""+$G
Bz]3N,xЦ~y;^H}wS=ypLBg|ì/?_E=ptG
w/v9L"s
9~N'yH4jD wT?g55<q[oRWw3OO3vCVKyO^5lKo{lC*ռIAĥCRo/ _U/xK삸<ػFZY&qzYK8MNjgQlgIϑ*uDb^`sG+?,=&qc@QP܃<
<я$D*;KOdZP'Aᥟ2(|YQ:ݾޣ#I3TlpF")um +ցNkk~MI6N׆PtGBLӢ}zXGw!8}og)~\ir֣	Ż2GC>{;˻Ţ10wۿ~[$6rG/G 4mUz_RSXK>UsTSGFB0V!v7,q.vN*A@9zdxyaZk'`;5)KGuiDLeA
ںĦb96RdON]V
.i=,zjZqsz!e皼'hh=P5BzJ5
Е)8.fp kyiyKOPq;h9AҩvB~'wZ1G}iԓǮpUzLw-gqy݄-QM)#X :
+tSR3.`co$ V;jN1*uTR{vak6'ֹ})+P[#?P	hsprOY#NwΖN@}`ATe5ZDZW'Ad[uCVH(KA*ƼEڅ*W3##
_Vۧ9­Ja=$ʃ%~:4->uzFbܥaMcJC-):Ȧ<R|<_71۫)4o,reT/ F	v&?ytE;*>M~mHP~GQ.xĔU>6-^_u/m!7-FY``m_Vzy!PVc'֣GUĽ7`o8 Fhm#+F+Mj:C>ŵ/	l)ztjmfm߆6IS{='}uiptm׃~TEX;y2
Ϋm^OB^;~'qAI.#3XTK ls(녜.g6Jr֑a^ڭz{H<M4Yj<g:3BT{[~C bf)캤p<(CG
ϻ2w^'*i:RZ7;r05)>Yz v\,P/{Tcli`sOhAc^dK]OR7vQa>6FՋ~]Hl4c%[ :PX2sml
+ݹ]1%86)oqjfο5	ҙM<2HG x),iaO5x6l]z/^K2NDaWVq-l`١\#+p1t3[VtFfTV]&Hlkԉzy_<R"[)t)jn	y;v
sUmuRg ī5I_ʨg㈈$
>~Xnh3tjs)WvOz7Ju</'/>+n;Q}Nڎf@nI()(킻,c_S?:tu 3=M0QOE8_<)ss
"yN H}+R!qu-Kr9v+$,H]# ՜qinOC
/eR԰+*(`P9gg6>q@"Ai!77k+"8o"&ѱ7r~bkUF6wsTzK6ʜ7'|KZ7Ua#G	uӱ!Tq }[8Ro(LnO"%A+׽UPMޫ~},}p,,Np@] ta)*unkSpp6r@|'y&C"%m<3Ai~Ss%(o<PZ<VݎjըfPBz_&a j}d۫:3a!qF
)mU|wv,qbpxRv
>-nZ	Iʓ[O_eUHߣ3Y;[U$j9R߽VAld =R~*Ty{\/utP>я ̙O3 si|QIOS	WRZ-!>W{V Df GŜmTD\W fVzz<(:3 L;A~'sbYї47lJ(ë 1z]U
HE~;eYZ(+NN&qy'
"=*tF`x84N/Z
(l	`IK`e5Yf/x9v|s3)PO]?38ETSo&j}ӋJGF@CWs* !&k5C_"Mlt;!fkv灔!wdKl'؎>EwGF4[xVe\~| @J8$J=Gǧ-<O?V5Oh1*P?#P`	Ȣp_w_6 s\3 b^U
cc؉IT
S^'-fG;RC8|u{P/^EÏ6^bJ]=6Ng[@dc4*[ݧF_ЪS|mrMGV1u<tfvjBmXDϮ c'ôtljI+P8֎}N߰@ рahS`R~P]{5%ۚAl[7Bm2?&6Y= hj-]޵קHDKWWےFdYHhVIXr J `5wnSoVfa醢KkR!{c],a48|4
VƬw<3`l9%=YpAP(AL
^9$	rC*	#sOӔH9nzE$)lV]U
~@ݾuRLl=԰Zn
bn6lUǔ	ϙfK%r*:߯;꯾U; MjG<fp@Zn@ZJP`G7IVO.5 77ߥjLUbIͷե5B?x" 5 _g3f(^%,egky
| \/IٸA8I `w;TI5IdK]\hg5u/b]>J)}9|PW*=mY]%=KN־J	ں{4jmZ^$KU.
kX*R\mh(,֩"1ܦg_Oxw%za
Ѓ XU]pe4*ɟC5h[dͧfϫd׋bsզgTC?We+(Pn=pȥn
VLXI=M6ɣ ЎEn>g;j t/SiION:մz`xudZ SKg'c'w|?w)6,@e6`NwڻޚRRO70m@  xG`FGa~e$G GMȢZ^#0وS;"1ǰn2U^L*'VE,vË"۲) ]PEn8_(`u1ULI*\r-f,
S6B)ZS7-mn4'c\E?2`	VK-.W~uVycy.~xZauա>VqG	kEYU`DKr*;x|eᔈW@ngY
@+iOJGa
xFLF{G.jҔٿjODmI۱5&"] ߖԄSäJgpW
&,'67D/Ep|$_Su5k0~C}c߶fCM)B%G:ޚ%
\1G,߰!b}p EVKqG>x4wp :e:=/mUж!uh]uv.I2v[a?J/Kn[b7|ţJyíQ`
4{
&?tknziH\OOoWJz$xhC"qd^e~D[Z85]2	nb,Ot.W*c?I]׵VDxU 
"NơP9=K+$|:!0tv{sS:wO;
=NSGB^c+PQS
gnx	r^J<ɼ0,+5= {:w~	`1|u ~L)}KChW2 9=Xe,iFŸUzU(Gd}CPUn\XS%0]`k:er~o~[uL@!E-WT[:\'E  HHuOGJKKꮮʌ w3Eb	e1d,ǒ]v=AQڈW YT*-s$m2~b|ol-@S'q,:I;TeSQIX]Dc⹵䘻YQMSGgě#nB2|h\}q֢|o
Pro-(f-k jS}{|rCpmպ
}}{
[p`ΐӧ\~_ố
o?5@g(z
xy\Sg]Gݾ?<Cu(3cI7ؼZ\CNܒRǾ27LeT8Ѕѭ>	+-jk
$
<*OA9"9OלXӇ]A/bYM{ogmigYO3oq/¢lLc-";}pz(2WsoӺ/G{P:'ǉhzGzm_oa)㣻tzHr)f~vՔ&kk*q6f)?x9>6}:*V8m :)XR!|-/U>zaJ$jA7ƭR]ɥΊ385xQ	Eџ?̷nC󨦠2(<~D$#Ԯb'xg~ǐh_
TK !A.ƋDu~ڍДz>nru<s}3AUnQymo$	YCs'K^e
	1(\-
a7}U]K1a
`RީSEҰ:tj(i iKa|Ih%9~b;
·\}Ƀ=?$
=R 2}GwުBQ8&8~zҥ'~ҡV)Y?{nmU{ᄁVO֗^\18i\`ppYE#*ޚ
iT (!?m;¸*U'FŰƚQMt'w@tLg#?[@$Vu3r˪@*s9Ô%ut xQѻiƣplN~w:t5)ڏuB~,-! 
@r~g::
/@{7
S/jq%m"kAOYz xH|TxCSYPP\G::=y.&Erl7g&պns׽xj,
b{ 9$mczse*#iUW,;U;W1uowOI[N=SEtk.8ĥi}s`i7)]ӣZyU9WqR 5*Zw0u~<T}ť{M3pz	VKCI"-"38\Gqk݆).[KLJdWJ'$$(5T=L\_RYbŨn%9w)[g>>9:և7ZP.OX,rg!݌U_u5\u'mEUףƧf$d"\vWq6oGT`64Isԍ&·m^lZkݪ:P+.ZV"mK񗿪t[D!k#2Ǆ~\N(M*G)§<V	U5<ܓA^(ξ6dIJ)sdR!7Mf{t1[S \J2ƳCDE|VϝZWIMxLEzQJ=73})4c8j'GP1-pEDq򎀴k}M./i\T'ؖ54pS{pZԁCJv[X*_"[ҀC KU7D):Iǒs&LNy 47d5@g+ޜ tVxv51d8k{:쀥}s+[5|U@f Na7}g0_'-ݦU-hu>..{^iך;sźBݼ>TVљ+$գ=loe,?T94$k
6!zp;ᔟіOLm%(T_xb.b_:m؉JSHgpkP0K<[M=4gҹ}{. JJnE	Tȸ"7t$\NqŢVP1W^_߽gZ>/ݗ@SJtL#kφq֕k̣|#b8ˊ)|*FR	ۅUtbKـqYPߣDZzn笯^vZFȮEipKy!#\q	?zztUz77ʫl|\r} +U31<zh%nAZ>2\ٝxwK^T^~q9>uUt,r|OM?$ry2$:ӏ"%'šuTU;S."JNy+9炲;|1֋I]-u9AOloJڈ?Nj4
3"VKk}[v,Y3?h5[#k# +뙘rFv8Z]iUD[oˠZ(~<Jq&'Zf/>QHOj
upŪE^[nT:s_!5Yԏa}S$ e<@'Wz:7ݬ)PK g"tnOq!
&d<GZ{90}5
,hce7 kPC(!d[f2S OfX2~z}sjLGMNj@Ύ=nL
$%\Ñz8z&Zv&xiq̗}9<,r'vMLI5;1 p2pygTqy
Is,Yj]Q7>::RMWuuC@Y0j*56@'2<E$0sTƻԟ>xKUl;A lD\vp6v)WSNq\(rKJj =t\NJ3'	,VCoDUo'MQ8TpUu8<p/]z3&!
MH6[5/!*^qjWZ}m# Ȼw͏]D's:<_7FR!D'1[|#r|7HR`>#%'<e-xL֡VhGIs_1Q~UN'
W	|+Z3q>sEOκy}ǆ{7V|D$TN')
 E	+$)k	b#ׁuTWfr6/!q^ƍ[*߼#x9K*w]V`؍r%ѥ3ZWAeB\׫-9<ԴqZ\6zm.7n? 
[ ~UܹRӿ;	Bw!ކz·KP(>vgyXj΂Dg~ԺT31(QL6w(%k¨2u
۪\z?yA+qD3U#p6	IQԯP39{kpFKew)Th5l)LvT-&чӑW9	㤞1&Z!,wO֡ѝլ`z5+
|3.vH	ܿYMUÝrP;@Jjh-s,dN5kTSڧa;!tB
!&OG6+wJ 4崉Ҝ3yA
.*z˂(:<`xo?)!duN2F^T$҉oZ/䃯h%T
6D[qӧFZ\ EZ4n%*A_5>ȑHؓgXN97J*ΎG.0guڮC+3$RK޵
,L\%"Ϭ^CR-LɪLϓfrg
9$0П
T-D]tLY|ZU{
SQ(v]$.j(YUգl4^НNM"nG>@M8ynzOrmu1ض
>O3T[t9~31uwu
9Q\3082pJ|opgzMIN'&1#JkC
YuJJ]G~,H@jKsI
])"E/[TL@́"Rwp.ؕdE˜aXӻor6AGaOD7cPM:}
^S@z
lQxo
֗}8L݅0k Z@a,B.cfj`DDBj)uYo6	jh^6oͪӂjR 3q܀*3 }Ls(dR@XkTI]f˼qcoGy"W_	~FAb_wB7^B-ȯ:6+
껪vIoՃ-N*HN{>8=ac.b3YȸE_5!8K{Q3g&NX$lca;pPߒO*ص- 暖u\C*@%aGR[ւmH'_:">`l^NT_:=uzP\Xz!6(ZHV08:3.'\&?3k&EpTt;'mXP}>V24S'ǻD _n@̈Y: O+!>_ zsXP ļ#p-m)lR旖m*㊺9DxyoRy3(([
;;#S?CF8yN1XQ义ǣJVUJ32ݢ-:}\N?fZpjW\nǳ4esTu2F+jɍ?\Mjw!/M$E
Ȩ5d5{6sNR1)VpΟuS$
1PI'(]*qE5_Lʬ;Lies˦	~Iv|/ˆP<f5@{26R!"GWS[
 w
&em>h؅ѓ+gxգh	Ǿulm-]EC>G(9i.3	`"v$@{wʉޤI0Lu9I"{v8hɹ 9% 	b}o:0~vl+*X}ͪ %DYr6ŝ`ZU"ӕ,y"BME̧]P`ǱK3W
;uَa|{z?(c<zT-9<g)Ȭ2YګPj/]Rxj'y D2C
[BR֎VSRſwMPrqragA6!,TH"}KlU)eXv
L~E =\ ̚7ϭ W>h'\Pp?9E깖%U-|VmB⒗Rcc1vwȈTs;l|(I#~Ӵč֐	,5gl\ss=c~Ҫ99?
ķHL.S6oπ.wݱC5e?Mɡureװ
Y_WJ<NRSρQ
gў=os;Vd>@UXMഗ"	:=IYc
[$\CK!BY)L=ѓu]oI1THUM{y]W=Xnl&!l4o}W21HƵ}kۥ`(@f&iuf?咖U8o5,G T9hY9n/NgӒm|,N L[/8a	F17=Nv_۟>B=Ea=ij Z>!LWhX%I"Zr±0|, KZ?XǑ+>Pcg>opI.MO
H8kAd}=SrWNZ*%'TzUiLq.tXο	]ǣ\rwh|.b4A8Zs*k?J<0ID|݀I4g3hynO:W~*	)gvx>	Mtȅ>7ԄrnrP~8x|v𧃪,7?wQۻHd9iA;H" Tn`VAMmnJ-W<@ZqWBp*ȩmP 3R<o͡wءCݛC
vzkh-ݔWG$'dӨǁj
x?h5/e}3QW\S,W#.BN1$	5.Tն3 ,wuI@HP> Hv=C hUe'aCl7O5crd悤j*9,|5rѴ3D7vTYVv_Un!Ol>u2Mj@/6wR4We6l͘1{t,9
C@N0M' 	ligT]JT!}#DpX̋0I>Ćjj*-c7GRaO"{5Ts1eҧ1/& R^})@HX_;|GRqW93bn*{'
.
>~0WJ__ZɭRoŞч[**	.B{_Gxi$5RV9F(yK)
Ճ++Z-#WPN
/(簪VSdhH:'짿nk,u494Q"RYBg}!^HY)AK1$qCpNhx)D\40/ahU:봐w,D7+Ht؞BZ3{:ڀ_]MVఽ9Ieߪas`ȡ8U
#OL,']PޑJGS@$oM̛\mZ7쎪cE>C~_8(94)ĳҳsIGkS靲u#>vPB&y͔wDഢeMW]2,_}@>*P0ûVn9`P7βmL^A|~3hѴEq<%Wdr5y..6Ef]"uKy$[˩Ҭ̹qPgU6FGS:hkD>>N5$͡ )9rkC5@QZqgbMJnܔd8vV;9$Jn[bgn	F@@{ Q<j!q#|lT:D'	R|҄N? {8 Z΄r#6XıikKϡRN-T8?M{>+xCzi8.Ф+4EG/u|<~?V	$iSp:)4tn ίFH%m"
|z.MmWc_Yd?8ẩ`}c!rGkz.
PXlt2MD]پAmkj<J_ڊeˉOB*i_
ԸASRz	ak~
e.B>Se'Wrbl&-y#	v]ܴpD2W?3n/vkn;N -
a$>HW}:
AR3(bk")B9\2ds\/.E@phZQ}*H{h"/ i|6zqeGɦZ5c_y3;O*
b	KerqK"U&۱8X_ϭHځ%c~e3>weߙJ$}nVUW_g&xo1*	
yOwg
 q*
T\+t Xǥ󳾧#S
s5Qs%k{Ķ_ܽ>Ջ\AeI)Puq\?>3t-)v=A#[NYբw\{@5@^d6Nn`rD<?Yl,x]&d8R'H[ӕg-6/*߿n<d^KGY.&~wBCnًx9|aLV>kjM%dW	A6
N=
/oFIuQTidH+T3ԩ9\ >)Ck:ܛ?WB}x5+ddUTҵNʀ4xBˎVߒ%pUF+Zd_/0
bgU<5"sIlypu^~rǗv*w9̅f2A:ݝq~oui@֯\#u
y3ϵM9WWh_vvzةrqѭ?Z5ͷE>ə`X Wu)Ge.lw_Z ӯ7.dr }PH0:WyWsĹ}DR~D˗y`x+7{oetl
o/j VUgMyp\7ŠqɌ=Y+d {.	@=#<oec[dIN)ҼC`V{s\ԪN6cGM<	lm
X	@1wXkŘvdQWy#ҵHڅ'8J
w̯ꘫdu2I5rW^B['Փk꿪5jX1%U|:ُ|GAE&aq0En`;aE7
dFj笻W{7'J1ތ@a>"Mu*Z9*\rN	de ?>
ŷzddߵ?3;
65[N%۱.:0L]5hO[s`"vEI")ur
m+E7A( &.%Ip@Wܲus/HD3%Գst|=k
H9sJ]+}'MIzoF\7h3rڙv˙m?̟3&ɶ`l}|{ xY#@IK1j?`ۼUǣ rtή$dӓI?9R<̗Xⱐ5/>-ޤ˄! tgJ< ǝ:gR
s$fQe?l$+:m)8~pyj@leP4(QGmJ.(c5jDs9,pEJOo&7>yA"~;kL_W-A6\Sui=t:lϲjvHjau5	ܾ:RxTUѰ`éQ{^^RltqܪQ+kl+gCfiЂQ"E^-Konpj1}Bٽ9h>ZLU1y JpXڭ-b[o@_v@k9ﷳ%ؔ?v]pG~p)Zy~K5H].֦I`&ʜEasV?Ky|$ۑ  w;ޚn)E؅vEIߥ|n49
Vf
諲R`<nk-rgȖ,LmwS&WA͡(SOP l&MvkNv,:g$	GHC)~2$SѸk8"9]䎲/*ppQ.Lگ'V2
HY`QkZ1|+cCg:ݪrRc|Z8:pB=5_n:H8!:LT(:@ss|֊*#+g'9;(v5<m4+xo;VK 
|2DZ!)	o?MnM
9}U,MsT`>U՛hvi:e8֖8婊7ά"]#3"t=]	Ksڤ(.jy+h#^r]t!4/	Xo'Q4t:wY! Gg ww8ĺph-9Ft
7L͹M:%T %{\&Ts	buF_Eߏ`'j$d8^p$%To#<KgY4%Bn_'*]#n<IȜELd4lS)M4n`r>ָEDR:&OD,Ń 2C1!N^w٧'m#:]^g-gd@2Qz*>*/Ď] 
g)>]G/9UUЛ<x]jkHEn;0
{.~]E7uKi[oz恤_rNv|*o^t+UҎoŷj mrnв֣d#g.XP9tpu#
ထl6_(Jow&w%;yCDl7ysLŢ4DZHՙuXpȵ3ta8_T̜-n+!il|KNĳCz"Ca3O-L!t9?X6D^ yю+p4<_ck1'`)Ț=d-MУmKeΣO.Zꨙ[N|~U-g#/ mPOlMZ=7ۯ!«@!q*i:Ot>*׭/3SIZgSrKC=1%~oujebrw7n&ϕ"}wG*ꆋV9kVueڎ$NB.@6G`r0g.w]DЦqĨ
ݬ!* *ٖF!;]%XFǁH:?vrs*@PvI'6 qblytP
E4[m弒NXnp\ jt=1N"hP]w\aةe!?{|聎vGW7v]sz.t_9d7 -댭ڋ#o)'՘BS&]=IVS~"%9SEX|7@yX_D`ߌ3uZ?P`b9^!HIүLYufb(TM
5=nnc-{@5C|#Bn
2.NoE
%%Tl>!tOzJI?Jz?MB7u pn'sX{'vU\)jGtxa s'ӽ3c
;tx
;
@EQ7#苩ݭVu KA妺F&r񲦦XܼcnsDSg	/W.L`	ħU~NO8Ӫ\EhVEBi]0NT۫YN?4w5]B3JTndpFx$/@ɩ,llc2ų\	q8ed;sC{,fi;7[Ryn嬓>^Q#V n1?0{Dbł|ٕ7 6Qƭ@PkSTך49nttbrHq8OWfi,5ݒ?'+mOSH{I#<9U}jvٺ4 czfBe32_rV`JFu&FbLpzC͋-3ܭrd0+-*:%
F6M
2{<W鳐4K_$`Ё[@|v``TT)&h2E:[QX!ƕ
mqzPnSe#Mu#HTn*ÜNRY*\#,&woBUo0.Q~YS.hYRЧ~7辇bf*[@71~wIS9p 纣R*{J^7u*vQ.7tS&< 4<$R\DMgRq)/ ya.^pVMc#{oB^+4}hAĚ'sC:Ef઄PW'rtU]v1>mdL!% H]%Hݹy#UL${;A~rVVvKh;OLa.ݛ>KY<M?RLgtj9K&nH^T՜:G~~sx2g%VZG-i|] ,}
q Xa>^Ӳ^<Ƅ
mP׽s
ˎ?n)n<.^~C	6\^R6ŉE^yK͆&*͵-anw&Z&mAMAߺeym	l"?h;t="ۑ1ry|C;EϥY|_71\GUVv&Rlk	sFzCX]"s
e^7 Sci`',0.g7GKuUHF awW9&LPM,+#8Gá}>֙tnQ#p_<JkZwi񔹈BU>)iq2
yb|KºW/^ˀs?;MM\b\p(#O,Wpf{6EMr6To?ܐ/e>4;R+ȳq0`'ȧ|$_sSWv<Ƀ}QU/p|lCiG[6!߱%YK.r6}Mʾ1E-VV=M/0"\~G{԰"Z[
̡A^GR_=q"?cٝ#5 ۋ<^I@!)_v8Q6Tfc^j]gH&g#gXmBbg&d%`YU0YXZ)TΊ/;SjD.8sW1{&]˻軪$(l-B$Vx;xnq>w/5u aⰪ`2b[r38J@:3sZ0\<O-E{yl."?%_@Lϲ#PAl$TrGXupPM8	ܫVXV+KGGQ¬JH .o?W5]t:'M`%޲]h$~k{TCy
՝47#<Huz[VC 9RD~>&L/7//6 "~:u-ijkS׃j*{U} ]<8ޅ#z WZs=iw TC4E5PydMhR,`<OV5lUNlF\pUIPdLНK
U%qoO=:,#хd`$#[G?6廼qv1`EfڣA߭!\mv)bZ.7/3RGAoo[}j6oi'(;G V*hpz%!}jWXՏ͔lVgOa	檼nf+7%Ap7%OpYRD;T zsvW^GiBeW^u`z2oRy>
0ȝr.6ATzˇ\v@|(6\t!Sʉ
͋?@_u;T@.UEF}ǁHxp}v~<I ɘHAkP^/9}T>Q:@:W\ʮJ>ح`A_!kI>mn`6+)ZfnfUϭD(~%X/GJe{JPĝGSvKfK|j?\y4hp>8QW3^X
yӆ	VIS4˪,%󼉐 sr	G>@wT]<-m)6^IU`K2ڴÄLͥx~9oy Vhv*ɯب*ϭ}]sxJqH r>l`ws_~r;,]ރ}
z짭cUˮu*-=IU<Zr}T9u&i 6@.CIqO%x Z6ąm:1Κ5騟M,SN\R64g9&g?3E$MIK3"1?vGH.V!I"W#m% \GՉ֗yPL
Ē`ZǙT-akuF=(TTxIǝF~#Njd@No<n^N>!NEs{ {$U>C9o:_rCʀPTT.ftF,uLtj\\9\brΑ)l/zV[^CMqD'Nux2!OEe*.?|x; %~n6壹"6@kr٩w@u7m uqݸٲ R"cҚhD.0VswN:,DaVY{VQ_t36<#:tiR]Sn\%~.ȏ59)JJ ΒĆ\ >0EI`Z?ab5zbuYV&McZ|檖I/
ǤW8\!{JԕJ?e`56tRT4U!^
fyQ\Wy
˪v9h-U5 ⛆ʲ8e(5ȎbP%Mo`n@E"U;jS֙;lq~;t:^o>*J[`<,0("F)ڤ-EosAdG$CEgUҊit⮫[Dŵ9I7d)h%')gy+»O*4IaW:u;:(qpg @`
o)]Qq:LqWEvB%*`4By	Xeöuo8X_alIߠï~ JSrcDqsx7.NKn.nx?WhmW&mECzu$6HJ&eoV^_FV)\c`һK %	/\MjqKRm!T	J)#kZ5Zn
!cDID)cmAL'`m@sat,͋]
  uΝD%7 %9I1ϝx;57*ET<\"$ARu#=4SdEV6Ul0<=8;UȦY&pܓeVhU_.HNpa[>SU}Z깢vs$9p.mkT~`⮇e5FKgwH=) SS3piYl
w \ݎlb}6IQA$f̍_E]0PŪfV&:f@obTX Lucpw.lVp
r&h@C0~O]`^	O5!&BXOvTtxį't8yP;Y]I}_

˫rEJoۧw7FP{,0GfΪ@Rq~7p,χnGbBBjF7>"*0FMRC s35hkS\9TUbN0?)b#`]ʩ~6a[āpD	IEC/;8vղ``G]X5)锶D#Ph߰||[}=!O V{&!$mE8
X],VZߟbb(A̍i}sk+HUòh'=Nj` g}rϭx`M[类7:C`M<482cO'dwXWDl{dp|{[(/G$G8up+Lk|8[5}AsDk@u:i!:{ݬ1 7DtǪ78BX׆;zxThW'{ezPSӟZ@D߾:]tpBpT8-T/h*S{?"k.7ۼ4s*`HQY	MYmz8ۜ/1R6|kW%ˣX?YP6wBA%zE. 6]'N5-ȉ>[oiDHs2Dg'$F-':ēOSP:ΨGemJ U(=#>W
x5bA $#lkjH]۴!Q^	 ")9L!i|"vB0SCKY|u4lnGkG|/4$s:_VTٳceؚ6cE8;JٮQqU^
KU41[Օr)`4^ջG!h	J^9\[f|63	z߮5mRэڠ4+vKN}<k7@ 4xgj]&؀9N I/_Prny,@t8HF~z܆ǣPU&>	@
cO.JaOm<}dU;	:-V>UҜ9tC7#7l`ZM ۝1u5?V5P=8PÚEևcU!^Tl:SY(br_(7$Y'=8r|:U;}_Ysԝ5*{̦{`Z%U9DI0eTMAI^k/SW^},Z!8t*s8.u2\,-?3cl x>5Jw$,rmp}4iq TՏ[kMQE*>xl-)8ZLV#9;|*<{J ƻ@nqRַ?n`*<6$<2
1Aۅ\%!gN
ib@R!";pJ\prz>6iAۣ'_gIA{#\7\  o
sc3<BS`,۷s'k9Ku\dOٷ'%< NǠb-^).uh}iDwЩxS=UIlu֙
6M+m\-
DF-5nmfysDT7Y턽˯1gЛ#4;,RNxQgF8ʞ'?~W)p<^(#YȊ$[p]joje@m\D!u}T츫D[rIIMjҗ8꠲&=!ẛ4@HE8\}WRN$> O-<KHH%AMt*?n
W\SZg/-NH-WK7oe=w_Y!Iub%&ZwTOzNoku?Ts@Tl9ow>UnMd]ձ.IǄe a<jju-|
,,߉jV3u 4	[)e|yC}bf['81aLrW]yÁ,*
KXPZ+qywu.Zo}{7G*ۣRۖ#;fS
@Ii$u#5jgX6GGݒ&dnma2>uڇT;u']8t(NӲe&$jHJ<1ݷ-=b9H"v25L\ 
յ抈6}
>tDX
#Nݡl]י1=^E`wA~*-Inc7@x\$apwYYgBS/᳗D0]{{[=]*Ch|oQ֟Q@ˌ*<Q+8Ut}gWJ]s.7cTeU-g@EYŴf9;q}Ⴕ1bjD~኷ɭRԘGШ0yw=<JW8tuW_U~:v9JG^Kv]D !?9Bv`7O:tb끑4AFD/>D;/nOלwPwU&RO>k*0Uqu5>0Gt%u9ׂCsRg*rO5̙M>W/T3[qP>A/pFCg%͏O%,ڡj49;i-	*VյᏞ4_ؽ].! (8BR=Ԋdt	ǨYŉ, +FŲdGC
v \ΕdD~uuք~t\oי2-NXrQ˵eqR%Tjus3A8t`S=5IՎ:}L/*_|7 b쫯B7hD"!W䔦DY:<w-U`d@a4\rݰr"TMJ?

eE/Y+gVTU}Ř6pOO21Ncx]L,F$_SeB}kj=\SPv"
ۇb;z\<F`W`UI]A$gk	,EɰQCrrCD9Wn5."5<*Tn)G\	Y$r3;tд<.Mpk/ZP8dUO[|D:=4T xtt䠄(9r2O4'	0i)'9A.h=!I2 3>Ӕkv%yNv1I$yN'6dR8@u׸ud$<".'nG8A*ԕvJ/'E)bhdIC*PgTf/fCWkyЉzK߁qIvK,-"JzX.Lo]֬Ec0'H\=ɿٙ3[2Qc@c9M^}ѱF:UdT-~Y/B?t%πS 8:kK t#]8
>C]$HdMyRL{9h3(TjJTro9 cUϲߛt/qtO(Vh#L,M|5E9ENSB?#p*Zwߔ0S	Xs\eCG.~yEYL+V*rFg՛{}Oɠdom#r7|kg1R*Grg*H0NdgHIĻՁC+  twv}O}_2mgUDr;8&}8j]j(u[Π$@6YW0
]xm5Ii*K%
+2gl6hj,Y(DE1賊՞$ QD&_L [$x9L|*K0U#f#Ću@ 5taE+!&x}4Nq,c.vm]  RМ<(/S6`(?䜴$%')R+ZZH5,7nN0G]ITY Y2Sמ8Orj}^u&0_;CAl/k=ҩ G6k#'X#~,@eA0 *WRSh
;F
5㆒or".PcA<3[.
/ySUW.EuQҸYR%螓R8zgiaDrԣz}9+J?Z7~ptEUռI|KQ #j3Gyʾv׫AV$(=ctoVl-~U$Wj[xn:сkPs[)sWX[8#T6:4+
`!Lz,[N-ښ9Bv\ş*f뿚ttUV?
@Y`fx.o_rHIBa<m,/<v	hg>vT8[Ijbu׋PsRx,WYToPQn]d`;ێka8|Jѭ= ~蜨:ݳue*3ҪhtW1+gїQVγ`â1c"	<Q_$jWpY#vt;6ta* ䷰$Ή)ʜksfKUԁ=ESTT6]
w w7Dq52A5OPtr398bSՎSLZ<rRU^UH֘Mƨ3%yx?aH4n	yi(-S ɦk&g{,cϱvv*嚣4dfh>*%}jTt뒨'Odl@,[]3*SO+Z{`"
@u<KjLH<q>u#׫V+ʐpu î],ӬƱw,\8Wn+pz6jPny_Ţ*v-`D`^!cPgqRL16t]
8=Zs8 `Ï\5MWP6Gȣf"ۻ>Uxp[Eؚ~XϬLsIV4o68Q##˷]_PV?n&b8?Iڟ<꘳N @4}P'O#K
볦C~l|w+C@zk7%,\;:JDg_亊u;G>zzJNawy#<8~Hab
r0ϡyr:!x
̽3}NCO+m/aE*QkS't{Tz}߻^eBVАJ/<_jy)5BsG{հRfe8WR_M]uI~LJ"$b\֐+P
uZnqO|t9%VtngH"cUZǷy0n߯Q5gjHWwړ!jQ{bhw:ǔ앎)lu]<嶣8hlmdtҋjOF,OMmUǉ1Z4/s%iכo&v^'[R(t
w3mI7G9JpBz_
D
&\:+@X۝4̀$H,rQtyn7U7UɞwZj[BFFMBDOgN4|F{j-]M҄7U1]h!QB^R<?<B%%%fvͻ4M[]/"m/c
zI
Eb\"0w6df?w®O{ɾtSF9wN
mo_"' =YV
g㽩{ DW吥KPR
":*-nuɴVgg
uK'!9{Z39TBVq_*g
#XzKn)[}Ỹz6ݠRчp܆]uq>74lQkա,GiMc8؇;UuC@G~51tz'e@\]tR
5
A
Lk)
Z0Ү:e2u<..+1u9>5ˎXiؒ
{gi$͑tk5*t'm;:qsIAPsQfquX׬cTNݖC9!*ZŒ%hp3k蝦>U`? d+rrR8~V%YLw(+Kew5:X՞@`]כ~*|tJ[*~jm5U ."[:cQx|5jGe^k&\J)䢛rcf`jn t<n0k8N>87:KߐsPWAO=\̸(ۮnxh{;qûqY75{geB#!r-M
/0ңeMMbUuEQEr I!i//Cqpo8|#QޖvܧChh|:GKE;lc͸>uuj`Df:[)>oG$T庀7rFH.^ʎ&CALOϦUQ߶vo[+N nd +(_,ש[}ipJ\UUŘc-^DH"޳WBU| DCg Qz[*v vó`5L7	F)(/%IW@^BÎ9#%|
Cya~[w6ze<6iyco'I`pqG;fr.(یZ?t5y6s!xT޹^4 MS/(<ݥ&\S<cEo$#5Tq!~|(!KiDDա~k@~h{v%V/'1<h&5rP+k5iUM5h\*T3y*4e!w{"vp8M˿B904K'ʟ+|4=ߧ>d'F ́(h~Fϥ1#ez|[TF-f%+;q4U5\>_ʅ YoPIqo9Yt:I|OUKr.E}!@`ʀɱcrCY|t
n`/"yF,:NU4XN[ZZ*k/`q=*:DC"<Yɚ#845bS\Fm~|O*]YxAh cA/~G:Re͎ 9\i&to%Fw@&`
s	J o>=֢ Q9ՙ|D)߾Al[RI5\n39F~OIƷ}*{:Rr<OJ>SǹYi'g0Xv@oјT3 E/G=?nh5iq"5C7V负i,C(>
qZRљDWLpYapt'Uu4N[ ੿0\wSN6kR$w(Ul5qhĠ`PYdr* ,x%~޷8Zm7B&%߶.JYc {H|1ȶڒVTB ( N3efhqd]	|Uus^+}~[pqǮK_VHy\G~؁6IsXU <O8 qG;;>Kzg#կV؄[1EEr2t9o	;Vקʟ^}$HѫKѺ}sU;Gg*Xkud"DhI6ERv3&C,mtYr%u4%)
($֯	_ЭӍ7,xY^Js\d
\iYmؓcCp+w]eV/u-kݘq#[M<Kx
lZv)uLXs!J׍Q	Rj˓CT9H/xrck,$1;SuZwzqُKV(H'nøf8%~}Zn^:XכNA[ySS-35^g.90!na/t]7W瓡9
<@z }4T+l
u-8{U(qX?=wUGf>OV1I]-YKBS6KI3lN5ZG]mjw?lB^fi<N%spRtEzv1)ta''_zVHv)77B<
w6x'jT`gI/K4
074mC<Fl$¥MRh6 ̈́aQƩgU[p>r>vxH	WT<vDtC?Xn>7y ᩖ:uG^&hnNxMgwaAtxL-tAWGųΠ_{Hű(āqЪN_Q/ח۷>X?f<Ik1ec) *ǭ܀~𯻸=
ꑤ1om7|tDHc.`bG,#-
uIѶlS G'E<\v%u2qW< =DACW-jt+(}vEȭ:{й˶Qծ3<\&^%=Ż(G*ܻqf\wѕ癊xN3N"'%$ؑ "?B^<bLi<َyUjգ5S-	$Q(pZN@]$fw7]iGɩ1.p2O>CX]dgq:9SlniBX/mk4q;;5Z NnR,!G%ojz-6 0l`V#g(}'z=0CR7UdՓU@AsʲS
x@QOBӔ\	XېD 5a<	{;;M-\|I8t1$;YGNF CR8BP}:Ex ahwGQ<#U}g}FRșPDVA%Xs~
 80!otLMj=A=?qg:+xxI*c(eӤu"caB|y&΃\d2aӃOVҚ?S\@7+?.r'kw|?(0lwofKZ1ɰI๺
4UatZp&٭vB,U;_??<Rw>ɄmQ>;kvt׾K\TAy;Z8s(\VU9S\v{	C.WMgm-5vػkCt~~ZqN堞e\jEͥOA	,D3'	UV~lY}58ka+FsH
Mph]IScɝGc#Җ&o/V$)K'+B.)XSç1}]`IvLHS<|,ۤz]ղ !iI澇ڏc69GzX|Tϰ;gmbIN>; 3S"GmHK*T)G$ҁm!Rt P>%!~ך
Bةs-.n`Cmje;mۅxr0#[f"A@;1z'xA6F̧kHU$L:ps8BzLeۢ[D:kV۩&n +* *7.ep*{TL6n$	f5vUe+
ks	ќp9O}5DQ0և2"|oXA亿:7]:C8҈DUDZ#j&-~+*x_)?cjLQ'/zsM"ۙu
ݥߧh$/[?SbGV	}o?raƴY]847VR~6|,^fA2d]91xUWN)%QcxEH!
RZp[!'MѻZcT"JM3KRx*35`΋XT"Xރ~?S[kqWpV!%{3֮`0
tiu82LS{TJw)Ûeۿo"T.vx9],v.kt$3+C?˻/GH֜C}˨4@]F#snC}q l\Z (>
Y63D
Ty7{7jmWdPeu[/XsC V|l}rrSY}a~ZrHLޮ 3PygP	L:\XA}nmsn}rDg0H+2fo|T򏴕zqr=.t̩KS<ut*C\5k8QolD'&|'QڏJ)$rtjdY@W@dQh(g!ط-Θs u[-l|}#mtn^cA?	k

o+n'r8IJU.Zb8~۞q/ۂ\
Nm}?gm/' Fن!5ëpCW)q5jSwo4S?k7</h	M)~Cؔmn.t;8jڷ.Y:g
q> n<|7CmчG~AWtLⓚ`62
)sS|+өo3*lZ`?Xɪ]E͙
-K
Obp YcdQˣNU5eS7p]V[oȝQg7o`2u`l%:':F赠p_ml`Z$M\jd(0fO:Z#E=^e 2J+.VbN{a5]XnP5	,j=JKztjʫPOyOd^Sl>.ԗsՒع0,Љ]pHE<Ekl̇K֥#T7R[HW3vc|)Jsr{otbzwgCG62
ܻB	vg	$X\X t4!ЯuFm+;ͫA?׳8?ٮ~v|a%vb
~俵GseiK϶6 E;]|LٟR%66rDc|<ic0r4^"%r*0}[^hp1Y>;cڊ}"6غO⪡
zS'U5jWB2wEaEs<z0ާ.ęhM-Z*!U"@aٱP a/c67-cQaa=K]Mu[)}޿mc)2B~/x7褶6kx%@S[HZN]m
Du 0CkN.x>û>*çPF0@Y';5h!!'q8n*pXB!鷃#J7o[2arX,CMQ.w^;4!&5?|㳄,Z94+&-Gۅ2mZɫ$psM~as8=k[{q+\e4* '1vq`; MPA)^
n9>n2jnA^)`O!12DNQCrN|wuqӸ骯PVDks9LIxM.|?lPs3AvZfZ{%@ICr\L8HID`hLUdkCR;:5Hy)qhc= m|\E]dbcwV" rCq^(
C~PǉF +7	a<eMzKVӭ?̓8
KR1
 UF<&qHѹߺcO_<}^bN+?7`^׮VR>n&,D(6qGT!t}nm[OGcQW!sv儯%FY#mPέz
ո2J<%F
½aWf=C@ޏ'Fb,
J|gԘ}J=RrKB"}eQ-&^ax>-Ã׽,W\yy/Wt3V-WYriuj9F0~&
kT޳>l|k7
w;63қf<zqD>t.r
]z`+>1#.bh&xzwPhlvH6[.Ƕ#(З'\#V Á"FċY-b#	(,:*>Q"WȔ?=6I%e£]KT'z[$ GQK]hxUTp ZAXƿ`H!!';cIE#k- :yx/GpvօK}t_c$w
X@@VFruU(zt+&Ѹ`5rZduGꎂp~꨽H00JQDYC6jU;NP}!ݤW0-Nv>Btn9ȅBnvz~S/>ҷ^[3=ƤolUl^Y*n`8Hh kSfuR:*wVtX&TK0kCPS?1jq-k6
`.(}T ȫ1t15GVrgV$<\MW4Ͳ>K@S˫9גwIK{@ӯNJy]@F3?>ȱ"*44
n06@k:Ÿs<`P$M:5qeMNiިt^@;?cKrPgq@/oy{j}fM'>-
d\*@*Oy~YS&8r8>"AnW,OGՄc7,Á
:-!z-R"ќɹV(9b#7sڜ{wbFG SWӫ-G2HIn0'],_nYNc	BE<Qt5sI ^νM܊>ߏCg#Gx"jik/K wFf)l<J3\o͇r8+'fa	SeNvS5sO?7SapN+;%9/򔱫OQq
R,c3gGkt/"xr~~F4b2:!b=5m¥8plɥT?^E/N24? ;TW/v_ߏ@ ;Z~^0+%zCKN>z/1T^5U
nZ<Pz'D[
Y$cZ\9j_<.m&8 DJ</2P%jlB3$PM[MdeѬս7Gޛؔ>Ru*r
*~`?&A$]A($T喀wj oL+.-lN;+/yۤd9=.uZ'*'h&F
6x
qcjNUs<6,sgmZXd.S挩|VÙ.ui&<i	@ౘ1Ψw){r5.?`?n%Gp# "ݑCqc,u2Ő{A՘Zp<ܗXR\ @vXgtUg,oeMȏS,T1e*٤nnpPDy
)oّJζ\-xJ2cg{g$kBJv~*q͋RH,B
TEm-}m%Us;!M6.[AX	ܭM>4WQMyݡyW%uZknj霍#VI$~;%Vxۡ4,tUN&.PqjWljxaD'ҽ]'N]%m|=>m_?gq榸'םG"Kâf?@d%[s
Pm
7jSlcVw7;y&E.9*[*5`V3=pMsUmpnq\YѦl_@zN+!<
P'4 2jⱺXkb\KIjiғS?^/p4~,zԛUkA>]$;%@>]q3|$
оG叝͊W8ICz52UR$N6ZaAձu+=
n&Ut$R	yyKISU{u6Ɯ'Dsڅ|R6-^Wkp
t+
?I̍R\mIuaݺīPؘ?՜KXtx}~@TlTz
&voJ^MEWazlZ5YuaBCUSs[t^1$ҍx&	QQ!N3e:0OrS=P5VIgPU|*D\zR;ćҋ38\FwȪuLhW63mW
Vm*;\o^궢s0]u֖%:r){Tϩr<LL>v;FMa$@>퓥G FkLPuԔ[+~!rOG­_PGat踺ry7dfkQZf?\b]u
n<~y^) ׷2$9Gv3piA_si=Of7wIөtTaYݭ,CZ^1`M]bYdih?KygH.铩޼kjO©u~=X;G%]|\dX-N e +v/hn7A-?nzFz\3:5hY"V⟡D"_ S:`OMuonS]v}T[cƩurvXE鏫SmUSϡ1M=4|ÍԨRN*qƼ \FK*%[%)sC6+t;VV5cъ;n):p'C	Rܼu)K/vk}C@/*jǉZ5}ZEt|t!j].ΌJc-"$7=yb{[ǵ=:TuX
"u8FD4ҽ%嫭2`IQm	܋O
띀mܫ+Hr.7
QdE_>Xqx >.
e qAMS_选9o? Sjy)С&Ic#UPꬌn/h rSlu
T
+~tTTr]*.кʊK\}_:5>zd`+C^fm(r-,	9vN!񉓻SoJ0B|IE;),-98|&94KzYP8=.>KwC69Sq_QW{i]Eg"(T@K8|H:spqEV>RHGn%Oz{@U@D] ⇓ŋ˫$(0Li#.K#!]{5TwU5[VKJ}zE<9g/ *-ڼO/x0	p	dl;c^*6JU{h
o'O*N&"QOG4⼏= 
Bh
~{G?c#LR1U2,iqSh"
6k/ӑ"`Wr9f8HUSIxqoWnyh2K(܁8^ rOurHSbIXwYM눍)H<Les.%+tLoi5 2$9tY&}Q`eVx7ryowȄ M{E^@ƣf?wk{m
=êo^Qӥ[%͔9ЍOhU9-r*$ȯuo;Q	eN_riK&bp(>6s0wȒ@^Vm8?#Vk
5WUt' ]*`B.s'%P U7͖\fx~Ό
(Xp 	({V[.tmE	%%×]rl	MMDWxWƓ 'W	}
&Uu3@zn1bభrMT;Rf<E+xNgym=HauK@"x =Ӑ̯~ӿci:":|]`$dr~cف/{u;~a?!6lOG(#$\~Yo;pSdt
MQv3JsZ3ȴ2N:A4x. Cn>+v9BPUnA%ZN`"2P@VA9A{5M"?k2~6tH76iYe⬫CTif'-e8`k@
x3Es>}ҶUݠ[5>3ۡfޥDKd@(]yQ$5G
mbm)%S+ͿE['?lvhs9@^g?4!!G_nUF.:<G~WuQ] m}=ʵvבNN#A$̥bq۠@߰!\"N4(t@#5=G2:]C
M7ro_1T6(4TZ%+ECUo;\WnFiW'ǀV;.Iת7
rW-1
7 :ߠ1^JAL.,..y65+U0z?g1_*rDX_@;FC)I]vG[KGB*T `tר*Iܥ (D)09筭\"[25
12_3&Xg:/1&l3:39bH\B؂PR
r>@n[jȗ^
]KWxp(dߙU9mUqz@1po_<%XEg#T(;x%^Eًe3 .3z:%$gs&Y8s9m
kHuf֠w W/>cRfqSt/\WTnAyw$dؚ
?+A3xVx_٭..c|uiŢZGz%N@SN0qA_a D籸\uJ:3&BK6tJ)9Ӷt{Se?MS׸>z_rN4+DRPv=>7EΔ	m@((~(N= a
'3_M_['Łxlmn"ͥXt?SgV#'=G*jt9e<dUDנ	=P~
B"h`9lJWԹLͺ5ذ{-r&pKu9os"h:Qt9s	:pڭ'8jqR;.#e)%Spo鉳b^
(aY0#Rv yyjP?ǟby4bE5g-O=נ/"I
%sYl%B.Uҵq`,^c!hVhYR
CZ=O#5PN\aQ̣t婈=
	 b)>]q&̣J<3VG>3p?H9Sc	ik(rlR*itDV.\ӐO糙-[6}$N2v)pysKg7`>&}RLD'mjm>`ݻl.40?A4^SV>ɹ2}G]϶ nٓk k1$@:#Ahn7zI-e8ܞ~ޠ!SA!8t<-F>).wiwp?k$j&394pVz:Zi񔦠U7Vr>s; B	՚ގdv,H\I60WI6GFjW[}t_. ]#ׅ82- Cnm/|=+R.[~SW
##'0x 5i1@:j]5mAD@W~'yqu_׬-^#V]%B>RޏG5@L
Wb`\ZΣj5Oiқ]Y$țnYM]xr=Tqa]~U4Y1&g/]ϫzڜUp+ةN[ǒZ>@EAvN !;3q}H8:j.kvyR~ ߿oW	@^M?+]1Y`.CSûN24'KseFu1;) 1:fW!
߱%>%ݩK5 l P$PˑhlUKndr$	BVk/;Q*O]g{rmlьΛ}OxZg祫JUC9pղSo,{@Dp7$GUtAᾱ;gK׈jeK2Ҡ7A`4BCG^Oz|Xc|DQ4+\jX:J:0?M(K43O\+>b_,Zu)w<yxD"Ũ!1ݲ
} xss_n$q#{l\wh6yɎZp#	0u̓sR%}nQX~as{,i4թl%k_tc*5?*aǎo27}S7Ҕ FXBfEgU9Bӭqq.^Y"yjIipvΖ]?{|),52w

M_>5brt@]}!)%\Hmݱ\czWW۽@0޾dcmI-*:	Ӡm?Y΁&Jg&ϹWLga?g
G/TX:<g%Q6
nrۦ SMǢ_&^9:2LoND`"C
2&LlpϞ! Pj @abĿه 0_M03,J{$·Q?q:TqNG̉as~u3p'K)Ѻiy{oE/{Ha(wtjo%^ қݗ!1BZP)54v^7)8iqCWg:D3P&O#͂H_	A)HϭS:!Ajf8Oj>?VTwꍿi8G[5(r=@˷
B|>a}8!bf+t6촗.fgj4&'Ut:.w߰WƘE2WXOa5,;d{칯3@H@k o>t_qמfGj4SڦVvUEG}}a	=UcܵD+G~FQ]wS;@ӷ6YU;\ޯy2_\ْؿD89ns^KzΝ+iF roCףݿBk۬y.֦4Iy'iG
5*[&Vtrk2>n4ש%en:P˳ɷ%C8Xvki=< bܰq~vf"f&DdfvgOP~J@rZ/_P'hn*=׹Xd\1a"^ w3Y~F41ȉ޶nQ8|j̀-\m? M~de2U::20QF}5ұsU!>G:kZT
@E}TbK>~y'f6vS_I]Ҩz9:Vk#gʁ	RUA+輡ˉ˩ XjU%,QJZՅS{PgmjB2yIXs'2#\>W".8ήmUQ7u45lŒq@`'5YjdIWr3q	hm;a;m3ǣ:WU/AșA$qܹהح!~;j23ƂVdjHz6T"/;~ .u{wvIulTԃ
 v#ӍMqWZ{I:xyQ_23~F4:ȷwMn^MYǬҟ
8Hd$Bܥ O,l~w^7=n7 
-v	vJ_|g1H@Ωeu3zUg8Zq<rtb5¯TN(dEˤH)UUb@w^J]*5
CsB *)U-ap`o+Gsz,8 q3?]D[z ˔3Y|[
&Y%eÓ8KMDkϠ`Edfaw~jA^'	!g}kCU-QpWWu+1:.es`ǼT$%UHTH8Af!\:N7lڶ,,iT\rK\ÐY*\]{eHz2(Bl`؍e^7xڮTqvq/)<3:^38ǥe'gU5hX
uSE*+
P&˪sh:w"Xi s053 -|gɥ;~HS8!	$ DDZ
Ѐ%[
ׯ_i.vX*
p҃jU2NU$U i"Wc[KyxUGdaJJaff@s%΁ԸH#Nh@
DMD?]2 78t"um
KqE;͜[ "̒}#sE;[M~pJ7(zs(t>l6PZX_1sjȇ:BfO2Zu&/}iǙ׊څA?;(Xf+?ݟ
,=h@lV.#מ_4Ai1PTU˄fSś}$ihm$p8jOwzsP\sSp/>V8gs	_+ilh^CBRs
Ъmuwic)8&tOK;5Cٝ@^+ ϘζߠBO;#;Gvk8uZ4
QתnHWw 
!P=h[*6 !}kT]C+:+c&a\ne#5jLM
sUUS;G 
4Y#h"$Rd[galF#ףQ;\B=kQP%.+u{:-<8  c:b6}D<jBW p%FN{sMe
3DG9mW{<4`pu녷)Y\1,??ݧw~+N^BV:s)TY&^_%!uz)
ΒS$J@?yUG#%CAipGl'%3M!2Q::y+:w8Sz
oQ-;Qz.f蚽9/5'M.sQ%ti:^]nOr,諀4;1
׹D܉`]YD?;,g<~p6o"ܵyqv8s&	+< dw0T)j<uZw
4_\Cx|lz~9 i0,
(L+^C. yE]5n-?S_}>zmEGxIՕurjvo]uUk$$!HFPUvp9f]S:ȩh	\~*rukOJN]U4]i&Ţ[Ncr?5t{E{MnKD
5ltИvSx&ǜ}fOgĭ2)xdU
orc:R.jEq)<qDQuRrGsu;)
+wY9>ǸR),&n8TF|!jk
m7ކ/[?v~X"yԞ5@ڭ
`u
ArdE\\bO8 ˓Ujأt/ MG*z¯vt8Yoݡ77ƖY˦wl Pr%mM|~r(#όfI%*ձ% q/
j
! qWtN[ћܼ]Q+V1z?Ei~D|<4ڂ%Wc+u9eCʔsspҮk7
qt;l3MϩV Zנ@rꆸVH}].zR_&SUgSI)fSz}muN%y'rn|	|We nPmqu ryY<uC*0|ΡxL:[*MBMG:lBWi)3rE;<H
dk֤U@tG
j}Q5~auMyˣyQ:+W']/.#W'X,*B.!π'cn`l3fkS
鮁c'v$
4<!k (r@8%t3~.q1w7^5\I?k]֋s
.7$[c؇kx;yE(U	vBHD&Pk`b*k1^D},
'Qץx/h5l}uGEcfaPP
5ZMֶv.
r-͞ӵLJ')aAj[?T{:/`we+m7= 7Aý>3⠸ɕf-jinR| 	x)dK'r[W#0!Q~>OqUE_7C}qng3m̸w#I>(^kQ1Qoܐq	\q
7c!*2̄!nYWawB?|smHVGegv@xdSa8a:F&%wru +8P+,髆u׹IXQe
t+{O){9I5 @4qf*(B_"y;h#LMfu)WB}E$?=_[8 -2w$8/z4x^IY-.bbR"pS6
<$9<CXCGZ@'Uo3cS$O,~{ۊ|)f ܏ے/;jRۭ'PڭjʜH?V[trz)8<HrN~QS,
d;nnesZ;©1:
vaX^tր@[:µ}w
R
1ހCl|~]~4j,T&-WPDGh[s8Lj n67j=4 U
9IzxNJǑZV4'A㏁6Ix;U)OPqz4<?\͏^HH@f7pɊ]!NӸd&9;/qMu@(q0L
9)}ѸE->=jAǕ2z	tn7t(Cc1'ܟSS](J
*W:
:-{`K<&@{NjK\PAaM4 }}JF,7|p>iHbHoRE.ngb+	zXAXJ=`W]Iv~O. `H$}[;h׫5xp=]-{DҔy<Xo	]Z.8 U5WՋkl&w
$5I^ctIԭWSol"k֚pS[3 Ghޡ|R%O5K0'ͱM'V=8++{ha<%|Rt Z%nW|e"A=&5&vJw& M$lY}&"HKS'!$>ŀ0!q0#|0XGx,K\!L!]E㪫 "	.?55
#IJ`n=S%0FR?>gH?!pOIʑ<j~FvݬQȑOک4_.AL|ȳJ6/4ι*vN])#PM`-bɷ"e9P!6:Rs8vuoĶ'^b@1YYuVi'	il
H`b2dSJxM[i|}\|-N[/_  'neI+89ЉqPQ'OEW%,F?kf԰>|1O534QdV t?>}5yŚ+a#hu! hb
7apl4A$$Cqǹr[5	>XU1@M&J$#56 p^tPG8:?nǫqT>A*c~|ks9#h_@錃=
Zآ6=vRjA}Jl@\]%;Xm
G;9uk1 
XiUHU
r1։UqОav;a
ʵ'CsG\/}e52t&Tg8;~,:WvL^ms+vш1aVnw91C-\>0?!=p:6tKR#rSߏ/KzCv&$lfm'J*i_b-%
:E=F*۹mET~5[u?8
TZI%4tT\lP6TϢ,<};%Kݪ](TlVa'5yDwږ.ZUn-em-w01Rw/TI^7ң!ChTeõ4FzƗ|'4\?E_ܓuC@?%VmGfubtI#x~i=/,:4|p,\RVr.#.rgH/-cS |r.8,Pf>M%|r-U@zCٯ֪y~OJN_OʄصDe?jiM{
k?"XE\
u>6يXJc՛W=C#:z3ȱѿL;x'#VTt=+wUb'8
N@!6o~(iZDF'R^iick'pve'sK9>7s $$rS
k@@*AU	8*ܖ^{o=fc87>Cњ!*jVx|炡؝dRHZ-oql>ed09ſP|P};]a6wB\9\-/8㬶:vَE{;$aއwW_
xx5?v m%~d آ1?V7G$A*c*S2>~Ixh^pCݹ_"HKRVҿ	6z>mSQJp13W{ùbzN1Ӂ4eg*{W g[H%wRGhG?
v}wa׺]ߌuju{@DN.>v	K\	bB!Q@E06P}rglHQ
¸wbX(`_UU#9']] J,t7ǡ8'Wx';eC:X}a?L^n)#)uy
KoEW4@(hl
7}NC7 h\4 oi b5GQjYΥu"E>弧)9GwL5i9g
7V1iwrr,.Md9R)n7U5g8LN
gi']d~^ty)KD+ؒ?l\mJ)$H'9Eq	Hũ͕2z.Eu"\dc0~-&5<y:RZ1hc?he7ʘؤ3,ӍΤh3n>- 7;EGH]%\ޔ۫v$v_ P̦z>t(PFWokKo]_VbY$Oln:(^3Pcpx8;;9fu{ѵʍMK)(_귺8Z~zޱ/~kQ7 ^]Ө+$]RhA׵A}jZn|D~߭z$%Vu 5E)F8ˋ!vi)A¡Tv<h@2X
V-tB
RFҿ|D'D,H8HO<8iQėS<
菑"3mjMuPSx&jb	B)VLBtn Z>n{
p܉kֻs*G+L0wJxk*Trzl0%q ^zD_qh#=h&q.wƊ<G	QY{1m5BOA6];g\dգ"KOr7w&q_+UY
7D49\qFF~~˺Bu@zPR
Yc^Lgegz3/Ds(ݿU}V5/uQN;K[SDpv]TM #oFwgG~ч' N~	*Jݨv:28[*a
pʋKC(TC`V76kQ(C?_P,Rh w<콊UVSjXw9=IE;#̪:>{$S6ZuPk#剿`4
HPߥǷx0 ~2B5w0)⫭XU/%ʒǁA=]![N+v꾟
]咑	ҭ<>V@tׇti'QUGum9PY-XaoLR#97Џ
U\Ev$ RvLlˢBJx(^~,
,2ݕ2h&Մ}4vD	Yjjqkj37X>i{zPKON=@Bvg_M{C0]zQW|
m HkkYoϝF6mC$}[|,\x
<u8z\eePK4 GR_1Qg'H<RnM#x!xTCQ6.宣*U>\2 8qY"MTT9\YYxU[;&%&ޚcNqQFp*z&6?ZoL^uyn7=9۟ J6CF"Y>%dU }뛘Edkxl{ ʞ~vÙTM[
m

^9}өˣ!5NJ|ܳVL\ǲb7.I^Wۧ JA0xP)?ܞcuj
?GCDXnOR9 {粈b	y]osߔ B0h\x|;Pv	 7wKYFx6q<q+?"
0':. jͱTIZc#(	^ ׃Strt#i>D+k'aIS("g̣ˮ&脲U];v7'(禳U3=eC-$b.@wX}Mb PrThaqY7cJ~{OSv`}L LlTThVSnl?QlKF C/ W"8WJDuYƊ(uYr8,)we50/>(ùT[Q`I[(Ar3K	͛NǓ]!'WŜY)d8oNEVFrϚj
{oW(|?rtrM5V8PuڴU1#Ɓ
G.C`lZg[,ث#+AlXKٕ %+qV^ ԰v4@i>tN3mJRIKkg_UơyCmStp>)cÍ[
ǥ{Sb
EwUEY[_Sa:+ډM4r:d"f嫄J.!#Lnt?-b9l:vۄڝ5eN*.e&F@u1ąl	6
!Nju!{UheH$-Mr
*
s϶ۤORҷxٕQ⑷URj-[#N}JoBAZk	YǕ
K?*ޤ]#"ϠI\8c,M.E#"$|)$F~t:Yn'	."SS?2!_*kZD<v4o]NCr# \=·
g"v2H=->3-}nPJzIY:iw @o娮U濚Q5}}$t6kD-OR ưNZ]w]]:C	<j+gͅ`3Yx:#uׁϢ'hr8/AUkfp߫H脖oKjp>qǩ҂V1e<ֿ/KSdS@{"XB-m|@hJץU;'/%UpXJ	kЗߒPo'| K|3T@8;5
kH<Lv%̀HB18gޔPdNYvfF-ʭ *܆	:o`z#Y}/́.(r>KIA	pZK4UIn4|er1GR+g=%Pد:0	jSPEp֐xp:..Jʱ3Olny
@Wx.&'DgOt\Scga<]hiu
G5-߯JF{>XI|<tG{>ry7{]N!٩ێ㗺		S+Rgy/"u/Z̈́榶eч^y>n</-im>nCOr=^'
7:`UDyRy"TUh8VP1b%Eݢ^@%ՙ}=>Nh}e|Q ^'6]>%*A*^5_dv`,qk95MO˖`novzs@#BM/Tr
OOۙ͂['~=DU&۔x&IB>YFw6I |(A7br`hp#KFXCrҔFJ/E9y~ kV֧amOhw4:qWvZH;sS}o2Ǯ4?Ѐ R[H~xQuzͼX:g՟
MMՁT/I+ŎN\OI*(wz~59'+8f:^$ŵD p	ix)I蒑mj~0
)`dNtagp'uRqnjxA4W	o*u [Ѧ[1fp>Z=~;<S"8yYN,^ͷ
|oxIhڎPaMJsZMqZNulsҌ৲ZWW7%DwWA[x<e.γCcV&zu&7]?8餁4~oK7\"a$^/A%:ٳԦbQpY>>)KV9~ʯΟ\ď柝uy@QH?,KrI&bHpK{twvUd	 nz?gEUY<ERY}錑	XP#ͭt>v2dZ_aMQ_6Lbv{.6?U7i1jko7 DCEUФL{*c^z'jzZeEжv@cW8ʻO=Gt12ߦ]P:+&5 Gz]Ʉ^CH\Xkk:l}YC}gu	<;^9oK/w{IBNe
+S)I)@V9n:RR䨓.q&r)[uFSNpǿ>=1C+?5
l7Y5\-2UZ֔f45
bYDdQƆw~ <j{-[/}
z^\۲`!e'.s<}ο͞RzH8^Xfun(rtPʓ㯪W!1/qL{e&sAӏZ6Bx_:^6Pzt5nze>*Cߨ` IK`\s4wW=f+&JR#npg:j/^vZGMk3hI^IDf-nu) wds$ܹ)N Ow*ZXE}wLn-Z5G~"~
zHMST3Q`-+s&yt'/ RE0/}%{=.wW@HdtX`(Ŷ&;\s4n=\&LU0
:> n5anX} $J_Yy;CjpK?qРt_Y߷aYh_QO"
ʥѮt).@ DJ̹^(rG]u0nݗ##C4W9E|<ȽΑTƙU9X/ׯ9Lώ1n:YCvϸ_o5,ե9Ym])Nި@7Dn]Z?UQrfogrs "]Zx½~
-u|?ڠ u&Qy 9?i&@p~k


fb%d_NXS3
̿}ZwRh6QwyD9tڕߨ/uu/R<4ּRWLB1Xh6#[>Gܨ>K)p<x?oqz%^nV#;OM+jj=cb H%#QyMWZD=Av+o|⤪PdtW/DwWxmb,N{ϴp!ߟ;>|D۲gݱ"դg[ҭl- f|F=dDs4r9w-U<g[6A䢴1$,L7WqʟA_dA;7q$% 9@]hz,.?)юU
\vcl  ~W M;f,"spl#gTk6ճR[
]n鯨خOU߀qsݵT
E*k_]`Σ1
)kRzPs=P=~=uRUms'gvO;wi.(S1][-_ߒns>%(xϡVZ3+ޠ4hDtpn)t?n:	
=NSN8f=Nh>$19l
܂jƣzUVdc7ΰ{׮ZN8&±TM>:6l@7>+	#.ĩr~ 7%]߯?Vf*p1&Lw̦/`th}iҗinwFmb߾/2j u?>M];%!M<
Aү`SP!UU$	@H3:fBRl6 'glUVwToלD7G9TyMҲd٫~FoOl+ܖ8[WېYHk<iB|]lpA+؉N"dY0@>޵L.\\gWA|0sE[8朴UK(V<>@7Qh#!'Ļh[^$n+r}Md7ilN*<)YEEռu]*m᭮晪!&TUΪFprDndݤ"+f",ᚾwAWjckZIV#:yRe׉+D]nAA}Kt45_o
)sko-
_'
4c{*^jo{V56D%!-礝%DwPzҭygEUZU3b
=sk u;dB#PO*!.fql'<_@eZg;(,tlp[{#\eyU%+6xHk++lPݳI:mkܛoprK~Φ5pضm<»c39_<]/ 'w­\wn+iO`tسtbWmNhY Unk1gr;&DQ:?юmWo 5[GG#_Vp>VGWs%m$'?W]OB&Poj>I@ׂ[-XZ`˲8᯸m@@[Zǔ2*}li[2Ӄ:'_#vuF8~Iu]jSJuJ.gX0l?'4d#JۆG_UFoBq
8Hzǖ˱:(z
(U-6cۙ+:8w"
Q/ʅ|<dвt/+'tO4T\mp!wϟKvM#|i_dGttTk(* Q[\Z7;jcЏjY
!i+̓%ժOU;=@j	/NRgRܚknk:nIhzuo˥DB)BS~rzA3w֥j]%OUESJ$#<g=u(pGa S4^(UtRQ6py$ 0+ZUMˉAOP.wO߽5n;(,KsV`D:KZ;rʽ:d1bo`TkTgΤ9W#9+Rt{5xVN_hWlp_*Ȍ[GojjzaQFtͮTv gx;uWOfE\9KͯIKG$WTy*r~m{Ο'FՑn,"~ͤ5Ɩ5!9#%\7:oAL:9u&F?)%N@6/BU~D ;!["~,5;V⬾K=6
ф1[6ktI ֭' ޹@u4 䌋iyjP!>uQ8#J~1&?OY=o~ԯ~=
[ʎ(>$
xs	ĺUAr׬5n#/dqVWЩKqiFrɟUt͏.DD7h"uWr2_	晕ZҬDE	iKPM$J+=b,Wp"TF@`o~&".ًփnV	y(SXUuƞ/Cg%_[bݔM Ueh	B	t댼Νj"i2GjLR@W#o7N\*/tW!6yP#NH:dkU4*RL䫚3eRO[x@N~L3X-
ͽfՊ?Gw`ӕenC$:
ҐdK&匭n4ϣ5|YWH-vGQa"DG$e0K݆j}9Ƒum;ZY?WL\;١$z@~E^{>K5U1n҈Vd6W|;6`P,.w.wO C/9WZvCk[;V'Ysn6C\!O,6_GB'V#6dr"A˾?|
\v3YL*n$N]3yr%|88Étn4IL5dyЮJgXYаk_Gbk2oxX@raYƧ"ˎՊCE#~dKn` mb=ɢ "kUu?t|
7@{5-?xÀp4E}lMΡE9 UePS9%8(4:-Y_80]}$1*
"._@(q|uq͚6va,R?
m6ztS0Yvs7w_L
l%¬VW)k"i〬0v% 'lr
]oJIeO?F"sޖ ÷?*i2p@ Xerj%0#+1nW&So<y Smx.XuE#P Q> 74k4
RBkJ HȻfd|3ܯ,YsEy @RE(}==Ȫ<C	g;j|HGfj?qIxz½ɲZ/}NiG] ͔TТXWw8
O&ZX5S̋Ddԍ\]Lm=I
?R喹T%ؓ;	* I7'](&R[zuT>$I?@Q-+}
&`~*BE	P#m ~\!Z}~s~Q
=F]ն)?%\N,,2IՋBNՕ(DP7⻂ڔTB4ζK%7$Ǥ{%]cO1=u]
&N,["_:FK	wFa@4LSaT9 ]d#pkNN-\@U6qLms\YcjǎmjH;,;{i)?HJB*ɺ|}`STUz`zNL<]KA
Νy@ԤM.p5 K[rpg#p4ϊ*-k;K­GQ/kq?htEg~m}]
PT`}(Gl5|$^L|X1Ԑp
<w H}Sm=r̭B0Xւ;<bj,_X߸o @ws%K0'a 3'--T'<7R(#tpvMld9SՓ1.,Ln`mfl{R5RLz<FW Ğ@8~k|HZS|/m0;AˇO;iX\lj ]$`7]:9s_'!U|b4;MR^lgXUL$Vz5l?9Rr-;^  NZnbBT:͟ǳhw#r
޺js=Qj>Lx֐{.Ov˥4"林b	&4շtXT+|Kɷai
`jRyÁ4H)rs--A#zS:O &_p wbV4 9)帺Z>'ڑ=}/htǽJ&\X:j,pVO2?nzwR>$+mc\>D+ޤkȗ|>U{VU"-Z!Q"$F'H3h\USsciRqYpO'Hd׆! ` 2,4Q3᠟=l3A{U{{JH/E^ :JTzgCOU|hz6`յ\uu[|z&[U9n:1\a D{	7mg7+gVSt3Wy?UU
`3G[ݨɴSy-J`&NSZݻ	Udh-܏R[Xnl~8$INNP띨]z*ǩbmmSuehZ'HsEJMl烐V7ApOEOp]	rO Nų_"kR)
e ]僰A~곽n`ƾ2v4íN
 dC!R&Mj=D@ZΗQ"WHBgfs;TWr'r]ج>Jc`]5Wu)\ժ"`<Za>cJF.yGC%-\n/:w)\?{|4).e]&nw
*)2#}`:GKŞŗYU9;ΩA8d9:mo$Xzn2Y dc<@W!`O
 -Q	/t5gL(8BUբ`U3
oMP~`j63R4gCQ؎R`'֧p nǣ/;W=N@ޡ4)qB7,l`Ip	HJM
8Ϭ$MwTU|&cTA95z)?Bҥ%X;e׵&avoe]b><qyAwa(xÿ=,:p{dݷb@1aph`_jJ.aRIlն*? bh[T+[볖Mq9rAw=<tǴn٠PtR%o
c['[inFz	fv[ˑ90=!Et(w1;AdƝo{+SiOXnԭH#D&'J3OBLNZ+K-Z#\p=C}i|:?]uY3̷>!P_@nЭV*oQ}ɔq]qPGqڍfi]viT4*M;e9(
_sow>5KYV:=J6MUVz UtHPwh	FQՠL8MSѠ,."UoV%췫vJKZqd+M~t Z|Ab	[ފ3hj!UT0Bdw=MopԔWRى[g
Qmm.WIx5
YIgC&C%^Ζ4&󶜥=3gq_u"ǉ өJ} :7q.Ɗƛ_*]K
e⍘7+'S;R06mO|&|ntpUuSPtGtp"O^7wU:<XLsBz#k{n 0= v e)Op HpguʉkBK2&jr);I&-yh~5/f&BW(c_1hp>z$G/À,&ྔ)"
.,5'wSI7(gwI7BrX⩳FdBK%CQaTDxU=R. 'Q.
R'à<@_GQZgڡ+wMuh7uCT7ٴ%iq9Ƣg]a#R)i[K@UY3w҈4@uP|;>$vO	[* )sdtt?kDF<֋V}(	xXH2`iKҬ^{Um~@Rp\0xX!"^}`h`}&L{[`Ų! ]u}x?\^?ݑxiN)H~GNts\'05akA"c[8Og\: pwG@'K]`}t9x>;>zO*jP0]\
ךo9<;9C7'S4 @,t=]nM+VRD]ռ]\u
Ƨ֏Dr`ł*h;J<Sk;$6qMtX$#8,i`(r:>loP"ЫrK\ T7u%gÙus4 H\p]>uv"֞@sr-[8I*.M!k*]kg%ٞ݌)c
#\W"Wq7"ʀsݦrBق.n
P;ORQwjN&r\᜿o|SFԴf%mR[ӽ';e2A ]I zJ2
mO|P'9LE*nrm
00p~-|W31:C<G5,: &	z\GwqYT!QRT`U&ݍe慛*	
JP;Izֿe}7H#n>KNM/ԫcdwShW8[YWT}»w;|Ow~l vVDx?@d%q~F_gѬMUlh`3UMY{Hy)Y*@`a$oi;2~uC9"gUW` ^!W~wJtyuAC8*x
׫kثtD cV`
y~MhFGENŸ蛓yfO7A%GgBP
s:̒TV|lGc_k9d[r\QV~>5i즸V0%!V[L`]"`Zr6{Q:i5XDǭB"{t6|0:_~<*査1;V;_]4mOvtwAmш[R=&/l>VݱBzpC氥".>U)|oS-}3#,x7 85
u~oRBZ]gedr[4zRtA}N
xhvy{21;4*phMFjTŰTZhfq,4**Xj]LpZQU"5>C9>ݰy $X3s_<$IY"n-ʵ=j\l cTō%I=']ԦJx9D*.9u0
ևn8_~gB8f56NnM,=n&yEknہ۸<hJj/#jf~LhgKinPHtrǢLک$&+7%.')yG}U!bO\)KrbI{ʮ&{(
	ak}\kzTwn_~ݏpIec!n!W*|r/8yqW")t\CT)]qK/*9Wʓ6v/cqqNg삉$.t/qVB<qcIKAA]oWG A՚z S'$|3`Y`8U⮺()!Ji
qt^MD5W}>z\=M%SH>)g3/:ݦ~M7^7:VYKn9Uυ-ZrYS?P3Hǹl/~ui|}!jղ$u	G!v"oP(0\PR[.U̳W`"
t v4`ľ4ћUQ@um>;V!쪯؇D_7 ^4;ϭo߽fradn-#,9S>}]?ds/=,!xJerJ}!U
$ɷ'Ht{5kA3W1 h*ˀH8QrPI8f3 Z:37YoAG%JzNUr3j{,ڸV{ceM'TZm
?^&?CSץB\(+dӂ%katyz<LvmO
bYi6x_OȈlٶ/bխ+$:]jhZXyk־BՀtgЛ͝DBz[x 6}ק>_P
=aQQH˃V.>ON/ͣf)
hR yK\AOQV1)P|.OL4xP<G!hUe>++2<ﶯB
0@&W/zz  du
#i7z#U݄k]B.|/a0\QO?xxJ}\SzE:?AimJM|ꉣj[ukԦ'ܬDA	Q:+5q|C\Beyۿeg}\
,8?i-Z,YN# :ORgn"< $
KۣZֹnۖ?%,͏\S|	B!x
]9<#l{
6n6ǜrF@J`XhsШ4@\Ԇޚ:<4
vy?J@X6oeVn`ٹx11Eg.P~y*OnNs%dF.>puWW5kP	Zo5[pk>Vfe_+|OV؜NEr3Nݼ*'*;~ɧ2^ђǻ."/!x[q	+@pw%q<V0/+nMԛ~C>N ݮ*oS!|i.aV$G#pDTqȟ8
_Q8z!4/d&Q*WV;H . 0V_ςɻ
y~vV0g:I,UQY./9@+߭xOaE>N@Hm7*%U[>;\'
8۵4*r+$>Ó-utmߪ
<׵00YLN?r&$%`ekѨS75uǳ,xųrR74S򆣀ca]Ժt}K5G%_IO^ QCd+.Hj#o@Q tC"m":p ֨Rϡ L8zU0;ϑ
8 5U\M l/_O}7>Q
_%	`~%PFNzCӜM&٠K|N^xݎpSj1Xb_ĸʕDwp=O$(:9[5m̹
:$McTͽzsjXt%gNRs؛#}?mߪxD=e*OH+GQ8B܅l٥kȥ=V/91ȑM2w%@mM0
2ӡ۲k٦O(ʘYwGYW,8I[p85<#ge-o|O~8ƥԡ٪5˜m8MM|tɖlN[]ߴeyP?5?b\}lĪ<2I%/
T慮kl-Hz.z]E|,v*O=~D"w)ڴ5tWp[s(
+oZ\#P]L/Aٴ ]їo}f)'TBW
ȞJO.$5ǁSgl;&S}nX>6ݗ,h]!'B:=غ2\#@g/Z%
nݏ$V~r;CjyRFէR?_ԺP&H8{`hՔ"=7,R􀭭뺖PG0O$bWoRH5&?F Q9Df9erVȉL1;NXFmQyb]zƛŔ] Iu¯1TB  "3 $|{>) #P^oJt񍒪PL1UrwTU4Oz݁BW\-+`?/4r\hRuq@spjMW|ۿ=boT6fgmn9ۥ鉆~^#(dB 5D>崹x1u]Ez}v
E?RlNv9ǵ?SHĿl4utkMc	Dn޼ۺJybYgBGi\sl(uç<b(h3<B]d+i;Bjk6Xj8mrnwEg]ާ골zg|%gLp٥<@R	aT./xdnW0xzwNTt)_9ب7t@Sc6_=yXNKcW	ҵhͮiJ'a@|?G|Tm;g
Fߜ4-ศg]GXFfs$ЂճŃ>5j|Je}\&Jmq^}NM/S> GZJCS85r'R~+heunU!uSvt<ǚP&zVkR)gN_#קoّDHWI&]ѲבPfځypu#|D8k^yՒl]A,H]I
>Εo߉3 
z܊͠r-afuT ]oӻj nm=Wr4gK*x@2\^9O2atWoEz҃-B[\}#(wDmqDri8w&
mJ
7WeָsN]<+CU˛3,M]WbǷe50ZQuDTi}nYZx'9n8φ sD7xx}Ohq]O_XEm2rTz:MM?$M)]
Y5:	UkI.-]Տ4@uPߡw/!?;FuR/1.Z?jKM @+ա*׺9OE?qN%o^A"B㎫)W0Ey˭έ8JVUVΠ8tb`,7|"X]0k3)2}g\L㭑JժG*}[ܻ$W}>
Cw@XBOFT\ٺOYLNSaW=kƪ홂6KKݤU#!.7kZJ#%w>`;jB/)EE_a@PK"K*<Е,k<h8Q[k]L7Ar<
dQ\ܺWrP`j}
iԝŪF.WsOa%wG+x9R.*SraDr~#HzO$$qٮT"!86K/LhzSɄRZW"a-mGXu&2'\zn9*zH[`n׾?q8To2V}G뮺Q"2
c)m\jя|Ink%3 /WϗNG<>A U[R ˴ExZRעHpf[կgקSJEgF%j>19G-QtR֣lT+M.?d(n
pk
N2JoHOYO:REYCz(ț,XVIshHJn1!oI*U70xs5XCJGԍ5Fŀ÷._M1b}]aB
? ]껩3b}	8y4F[rS/
Ǣ97X#7̶K'[t/$n7q!ՏaRWQmE!wFr&u.26Ѵ]sm F-n(ߵ@rO˚Z]Om[&Xȫ0J
 j{cTW>	&Nds34i99! -38QXԑId/:vB
fFrHq q{1}VQґ-xwJ5RTڊ%l`>)x+JRƟՙdѽT7ň䋤;n(ac@^NC:Z!z-ts~&F[?'2QEK׋`[t@'{p-ʕ|¥!*).[%{O*Z}LQPo:q~^Lut󂪂WO8S&$5]/JAN 8q:V@siz_eD`?iVɏu;x^Yu?Z.y;eqg_H;ȮNsUjSja*
宇f|f$7D)c Cɕ%(5XJ@qqzǋBaOsvnjMM>y"QubDi>OHax$YcTR_8
ǯ<ˍN~{G#V'ǆ~^Q`x5E&xÿ6)8c!ަ?v*9w묹u)t8x`v>"}?I^cT.KK,DXn 
,`%;rC4FlU4?T/&qM闞~yHCDj:z9kP7خ]s::^欃<Nu"KET>:yZ.wm[ηWBRK 2M" hSp7FR{
~q+ih@6('[l0_\t*ZL[,A<G[v/ƄnDu0#6j4P- َsFSkUehi=~0y.G4quYG?G"INj~T1ߨI';TyyO_>t}Q*UDm:oK%%Nx3h)}?k/ m6WUt3ޯ9G8҄Z`PgPyXz2Xq2ɍhfn@Жy)@9"V|KIVZlt0XO%TU%C"Z꟥uwkE2c|6Ĵwq19228＋H_
yh6S4n>y~A9XPOvjʨR蝰xmfK5_[P!4Q `	ݎgҍ X8Ŀ-xO2o3Yo;m_쨋<NQM%%n='.EY-Hmx 35։Iӷ0Q߀荎o>`	+Qp&휿QAƶɎZU
 g?nl~s		$h̽%9_tupǹ#}	p\5ځ_,.o´?]L6lۦ˖|W$=ӻnqAZ-jqS9ĝq$(}	?
iۡ;xBj(g!sߧeܲd'a}> 3Dp9}}`
$JQi5fc۵ސ?NWߣ{}rhq|UZ$ RP[zKkyH}tɿIuׅ" NҾŒ'/"*s؃TܱvK'.PG
hF㣵Lk79VIwC v=&V"K
Jr9(gK8)ʋO]'+9sZ ٳ h
ɟ:"	9OG	eG\EoMagߥtI%=~-<F&i,6l(j 8[M;9{`q~
C	=$OG0
A'Ksg%X9v{"	5k8O\Su:ޜqlo%ͫ	'5V{Ěj"tNm݉at;)J%?ᵁá#SCSgc*\ld(9$Y{rF[~|dϯQ~[
`kӜ*9^CZp~?!HBYy@h\c;osW5nɍBڂ's?o9|7YT]+CNB*چNq̢KlvCu+CG 9]:lpP695[C݆_6'~eE0`X'.[oAqh۹TRUZkPeK)ܥӥmu
:4GaP@$:*gA%nMj~P4?딲HzsSjYwJC10]G`xRڰX)j շ~pYE/mI"Y]lpô[4ێSh
#Yz|ΓͶ)Y>GCU+R/ګJy7[^q6|gזx<L/9D7Gg@ q=~R>wT^L8Nf.?S)^FIԇCܾyЭkDg]5T	4hM_&yhQS29vWjڔNW+di0@N]_=nOptA쮁NvaSammiU+`-Q&?esu~W!:+577pڧ>VS6nuo*H+\n6̄b~r4^Bv~T2qSԺkƊB(c>Z8wA^O Q`vCuz(?äo.ا{:ys"<4]|@?܆W"udG

	)@5=Qն8;#rIY,F9$|v;y@ſ+bz;kQo'т#o+?#/RQ~?n7$"H}rTӐ#2YbI9NTPAϛ(KsR8扡OL[i~^S4
f/qdȭJ#ryΤPٵ`o&ZuP!dwnbt׹Ӫ8*i*uB?4~.JFQɆnY*$qn$bxSt[}KKWcZR|9_z7{t6.k(
z0iw
 rAaG%.qG:S-S:ƥR,:KF]d;9-
/Dj-eO5d(bZo.Aqv>.ml?Ghsi^P^E#n
֮Qgoy)v,m;&(<tE񭦃NWŢI!`uc˩/YgzEaOT~)O˗y1$-ғgwGMK~H C?+|g=,Dx"Fq&8
-]lP)^%R	YΔ/-ٍ㰪>Exg5܀)g}@RsJZJ$z08ϟȬѠCҤ*md>jY<Fy9yHsqG_<'2E=`=lΰ|#ѻ.c۾@'oM*JbԒZJ%yj+E`?y7'=[zlPW$یqUߥ3 0t+h
ra'x
K~ 'x٭86kAW {HtEoƝ2˺D8N|5ڸ+n_(A9-@& ű7W4$Z {Tn]SǩAC蘣z#;OEP.T
Q¬޴"` D
P1JT+%C)<%4nʼʑI2hMG1#`M\`H슨ܺ;#MTפ7'	oN3 }B<Nρ
vD}kLmewgB"1-\=  kU@
U:$Z>0+k`:ԚsLmy-2%d-YU@_'rـ̬v;Ǭ^Xˈ|}ms	is\)gqc$ZUK\%LL
#}̼J݅+
+ :0d	2*A=B
]#\;<l(~*#!ɵNyta9J͉sIYA6U"x9
R3; )IPv8șU˰tXRoQzsUO/R"CXb2]ʭUǚjK(6Aӳ4}t@x&%$Ax:YXj>Nq.iɞ&jM>:u-׮ٓp`U:͏gXqNCo,M3t]{}]Ʋs˺B':ܒ6ODՉj: Ώ@Yn#:3%t[ȲuPpuןvfn Fܭ)<;^T_ɴ'q6le@,8BS'|^?LloI*3"u8W
}zp/E0j[?VXΜNӑNK	=h^[_TŚg esȁ&)W&L	M^L<씰f.砸6|/ghg#D{m/ƭJB"tiu!++M@[ -?*xNe}dx^P-4p`
@\3$T,g)klV0{<4!9SSVlC. ޹0A hSM
r3t5,AEIFIM{>t9<B92NaM^Jv5S)rm^KmFn@7O(L}:khlFR7,}T<}\"s	\RXby;i׏p9n\тp;`7rd(	`9C:uǙyr^
*M|ytAũ@4}E41r7r[YF]4hl4YnmmqP'PsuyR.#zJP$kNG<	lv S_6Ioh8cV<U8ns,,Z~p|=baѕ\֞Vq K'>ٔ(z9j1<d'iSs?p9\MBQ1ڜ?OO25PjgߍJ\=o塇 3ւg~Y̱>ciGH
t_*DOmB\arܶzpS{.H";ʰVlɇ*g o_%4Vq}7ACզGҾVs=uأݭ/njҐn\nne~k@p
e ִkJ*֞U4J$<)(Gì*Auߟ΋`"c眭AWJ󩌮q^c68[µT#D;'ċGX4y8q\@v/L"`t+n~}@MZR40L>< R/T!Pi6'mlŪkֲBb;v`^R;u3Bx՗T|+AA5@^睘QZaI <'*f!6&jRwBsn?؁_ޔڬ<"pVa՝ÏhZTGzSEt*?;YYU
AZם Pz2F^U'e_zss}Y8%5Tr;A
DW=&p!tzE:a=.rC1&2'!IŔVp;yTؾ428ՆBx)?2ڸ]VH<f;q0
gE79!@lB
w$C|~od4X++1vOwPA,?
SYqo%F慠_y |ŀ֣J0 a*|qsz)z
jHUW*#V*p\ҀsR:%$.do2G.
AFyRA>}gba4i˚y^䲗Z
D?81#񺞏?J`1ԝw2#k#ϻ3g<&<DVyAx)If.*8c
$zRXܠ)qNnVۉ*\E K.8oy*Lh{G
Θe3o֣Ψw]:+ *Mx8wGzv)j:~H<Qd+W~
Y,zlvRSv9}q-mE!=9B
Ƹ1
(ϼٞD||dV^6~q3W Iݣx,"Ů8	[]HECq1`m>8LwtX\r	 :}UR7,O$vEz+j	ݠ&#_NC8ѥX4k-D
7<Q@me;[R.Q4߼x;%Φm/=4q@]^għSMn|Zզ+]Ss>p?,ė?q.w+a!XTH@%.}Z$mvr?NbHr0k˦՗ySsXOq6YYxlUh`s *juI),vLmtu+mt0b֦3?
,J%lW3<>͕] (VYm745 @)
{?خ`cvo#L[[&?0fNْ^"FGΠ j)TwnMÁKfT pYsq>98/Uo:((:RL
4wEyUp['\po4hCL/;vf6 EL@\_gwPqRӡ+Sp{"fo|:7KI6?ū?ٯ#B]4taZN=vp4C
 AFH^U.ӯ|ufMmC׭+%Bq	>exS& xzA	p9KB~5.NwF<XPa# OA6]j]:XtpXoRYP) WRtwJ5|\v,z'!~>'j'!
s_#A} nUt#F q4Վ*1x)HյH'O Ǹަ v:oM0B(\iq *(Vs-r%XYP,!Gk٠v[m[n2'Gmg?esfX㸲zu^2 ٽGr 9Ḯ_=-	-dՅP/Гj!A`]r-ڋMVbp?jG-f
'O~婭3p8/gc⪻Th2ukjo4'R݌EPjC
+;#1]gx]jy	ۿ#ZBǢA*YǔtGN&A'ZK qg]\Ory
|&X;Sh[~[U@tQyv޻54?jb
 =#1ǻq:tՙ5$(RA[-<r%jhOͱf
DX&,9&9iՂ9hSA'F[ס4]QTLy͂e]A#xm`8R!Eu\]\u[ P*A#^H
_Ǣ	S<uH\-d4X9Sɦ|mz߄dMՃ.\8ay>HP<T^']8<]r{~vB'Vi焋a+E@gރ{⧼XvEomڎ`E YwHivxkG%۔peQ>`2!ss%Z*>ȆA.++CHO|*ݦi
_
?yET$qҁQ8u7kAHRǯwB-R1i8G!ӥ79AhX`2C ;E&ԃeFF,t&c>t}mh<Hpk?n	ïI;᧓	tzz^vR[!k97_.e[p7#fWe!dk/cCޔ]([s
Ѣ;1`eQHLZ1~ֹ`i>H_w8qO5'=U5Q
T]m*J]xvrns 㓭BDQ35mP4&RWLZNIb5dM8MI<QQ+
D68Nċh0E.Zrql)"hht%J51}`a.]+0aѺ`7/rC+o2wAJ)p
Pٶ＝WʦXU$u7ݡz'bҳTם08Njܩ~jGhdm7ЛO%S]}(eځ%8	tΔ4*=A8Ao)T'6cMkDiSU@#s2+Hm_]M3e$@i-Wӹ=HMN%N}jz#uG^~3ϗK\T	}Q1Ft.M't~uښ/(ӣYY4!V ug{OUv*]ͻο__s):&}oLУL]V:5
g)``Fpuct=ߗ94\M'?QmZirs˒GA |%ͽ29Ցf$*)ҷ.Ys^}wi=%ݹz;|ͫ'pn^vѪ̭LqZl	l'pNmF~)ҭ8:O=Ap`-ȁ8E̦Ŋ!xǥ+~gihW3)_l%^v{.6	Fk"c<þ9/J/)!-|Wkֽtm| skq-6 =BIp[O+
B.=gfM"C/g%]HTUޥyԪ_h/\48l=P)NJ̫)^>G`+Bhq%|1!3C(Mouԡtgv=VۢG<Dglq|E4$t֝D`1(Uzt%s
N.+9]")*s7jwNC?VG92<cPY N)u5Y/($>0*Nqc^Tr7\,*~Q- I
և8-Z>5]fR\;
~"RD${s>K7ȌgԴz<Dcg$įwՠQ|^>( 4>~wlO[17 (gT;l|M:|`3/SP0>"FBut4݁ۊv{G8ݔnMF$(>^VLzD;zGSrGI͵0գ&F"50ǩṛjyn|03b@Uap=q6!]ax\w+S}ԟSl%%s"wA*Ke97gށ'[]U
sENԶ*Z.z(+xWMgcެ{0&ofW\1w':ǰ|ko2Fz,aS=tUju$}ܲýDRr3y:\eMuYsKQKhjN"7RϿ@..h#^c֮@$Վ`\r'=Kx{tlhF*0sqȟN5UInLwx<ܖֈŠT/. Klm[%f]MM\xK1yҼ:)2O G
pNLJ	͒b>XD
+WtHrt ٵ eHO[_0	[Vz-RE639sgg"K"
@]j)9U^/;=8Lhf
_Ѵ9sELT%Ke	f;؛/
@rW%ʵ[־,ƤtN ~l# ?*O)kQuOcJ[Q/ob$˩9ZEodsVgf1
YgDǩYV$ Zrn7(:qL5Swdvrsd@XU
U	"Λx8aї"rsun#IY[v|+DU7YIrC e
N+, DRHxy	@ #K. 3Q~3B&tr'UlB.kp55M@k2WWh2.ؖT1AH	 1Gm4E w0R%xER~O_SU?(!
Et+*σN秇,"?r\wU3`g(WtYA/`8ޟB#r.PAbouxMʷL><1Ⱦ5GmBmel+֠Y%4Hz&"Ne_Y{pMl:-Kã}$ H"i-PQ*	mЧxu%qpg<Un4@.6y>8UӨށ_kd83UչύݮW.u|Ϸz
$TNݒ vܪ~A7=DYl9?d?`r@|Du%[9aQI"sW";3n
9^XZҳIg [EEȫM&Pl_e``y=%Xy1ѥj2hПKwzspoݷN+Tꨰ˧۠V+i*tu݊x
-,ᵪmm<7D*5Z|Ѫ%Ӛ9BiGҁj-\j7As+32p^7m-}@z-&T`4bvj}9;m
@Kp|UrL&HR)YOLw;7ч&~4M	(%Wx׋qBnu@}(ʇU C bu	7gv&5-t8ISxIspasvߕE`Bn$sS<ZH*
x.S㆕
XuqjomYes片gp惸yt␫j,]	M/g ik-|Ҩ0K6~
8C] .
V1~dA5mUi5پ[o<T]
״^<}7-iϴ\~e3Ω;C;;^w'm7߫H2*Zp̳+GARz"] s
X)WeӇTk[B@/|
4_&
;p28_Z8y?xpVcCN(=lg"QyPw9O?16l-ZH:h7dq )܄RQk3S/
t2HziGRU4X;lk5Jr:񹑩|^NS\j@
u&M뉤eܺ3:F՛@<9SwnJtt.R,4BSxKj ޣw<]	peWe~Կy@0Fj#*jN}IMhgi͝/n
!UVX.T(pgzm\R	iXs>8Njo2YW$ł~A+ߥ*1NH%jڻ2$tE&ݍGGZ*K>؞{͑<
99HZ:wݤKT7̇=_q1JOs2[y
C2ef)/ BwӜRkT9'1T#
]gG_گzyqA4T@w \qu`WkI(FR_j5>^J'TxSIww-;SLGwNVqd]YAetr*li;,|yOuϒ`Q3;F ?ugmvYYtGQEY5ħ#'폷+zGVavLz^|)_nr#UVHP*ruCY'!b
RlK@΍8Z0U;I\%A_<]+b\=ea3g
 Wbg~o۵ɕx˺Aw_ܣ	 qW"C	ȠrofҊ 7͢0u$GW6a;
Unv`[0kAi:7̱U/5T"n]) RqAFJ2,inj:`7@	)wHgڝgMCGWt1YqyY2u珛f;QfղxÙ|M25T?3Θt4Y)+$~)@w%F>1
Khؠe9\}n+\x
Z~^	$
=Z
(uHI1}n;;W4r>7h'
+Up=8T-Z_ߣڔUjE.`/DHWt,z|0^x$6kuV%uمZ^vufRo}9<ڊ-G4["bk!5x	gQ (LJ;X_a xO;T*;׳<@)ï5(pADrXZ-t-e9HPi"k~/7$+8;Cgy')7m>RuκsGcIIĵx zΧ}p.jK(.*V:.?`DnཱུqX\
|hz%*ū!ko\q[Й|i(9oFRh5q@w٫ɋYvX"金#]<T>rVw^UrcZ?GTNǫ̜$kGzY#*92Vk=<
8e7{Wz%ac$j'@N
	g$Q_1;s=<Vmu~So&c+}kҳI5!]T/ޝ NP邨X*p7\;zPdAP2d+K˭xVT˚B%,0^e L	`pj"cN	f{R/Q9^-;~"֯J`{kvFVPA:NKNM/%Nq}IՉtg[WmǶQwwZ4
쇳VQik*>=	'ϟԭ9p;0\^
֫ՑZ$nǚ26:&.o\Z~!J A7w,(8G`%4!_&ܮ=Bᗍ#QmNO!z9㽌!;wUeM\
BU~_U?/Z?k.>wR5t,vPPbW+gRg$ͷU[X9PMҎn;8^iu^(^ ;0#VQOR]`#Ge8oT	\;s{\U¦Ί6T0n5)5҇E>X"^T5-%cIbI/'qngªJ@6 Cr*;	
5l**˝B'Kv캮6*fWx/^.!k}?c?q,Okx.xS4ڶ^n}-==P,;b娮!ͣ}耐p0_SASk٪mA>Prph]Mb 4/]mG_*9M:ʳHk=5EխGL^J;AѽNOtV=Ĕ2+((L]-mUDE&^`ky53B3 u#ޚ
6!(oI>XN<"8p&yE63vR45sM'}[{잏$+wvuF9Ȥޗ%j<tx19s8NhiS8[[إ[*<DYy-܃ȐCu~rrב{,;Bi&NnL]EoiAƟN5l凨},8j%ΫzI@z^tFMywC<ȁ4%n烎 WfEgd=otJ6)!+ js*Da@7H/Al5ܸ/=&~~}.+ I&k(ŃNw4	xQj-;wPyR5Peڰ_36wUJ8NAW 9zڇ#G%}:`^Z]}KtCԍӦ&;(>Md'}/c}
k'r7̈&Iqo(+.oSshR\5u(jjyZt<ji8>B)65<h|Ob\V+ NXpNU晴 \c/=R={Xlnn@й/)>OjCБ{7Z#s,\)B5=	܎
ۣǹF+U"4g|K@x9P'pYH3Pz	pw!y%%ק4:l>(55Rߤ|Cag<8U5o .njTox[V<>tcLP3#r_RrPɊr]'v/UtV0"c7rפvUQ<](`=zU-L1ۂJO]u2TXDR^O0Sf^n?
`dGrpYp y@N.T=IA?N/=]MNԹ`N.˂f^ Ubխ?-ijf
Bq@_bw&ɦ$W:>sp<gTU4ܜkhHV;oTr2߈\uW>qCQ=q}mtSʒw|s(`
rKtGۅK"cyƣbۧDftߪv>@䣋'3\pkZY)|F$R;QrjoU'K{1[ +դ5Kl	piO9R8ox}6ZIQU{yT4umK883Qm*9BK583zfB6QաM<4w_,H*bFW=Lk51u,i;&J\m2):ќeg+eʶ952:ѩ?MD]na	-ь̞8wٟsp1{2+xhJ&0FKt@
涩Jud}$YXcYUtS;7qTsCBsң0|t1d&tE6+#b.7"G7"'L[Ϩ#Zmp|,iOM|Z53~$$bn9x
Wl 
l5L78'5)˻ie$]OrZU3  ,wX;xw[COz(mY=EFVQ[=Pъm)j(Jǿk<]H"Ԛ
TNc#i'm3{yWV
rM>`U믠K{{1hsziʩێù<\!Zem`[ӗȻvNpEU.Ԩ!`)D&l.4	zPs!5zHR³b!a.w@Z+E@-#GgQKSd8'h;2Rk 'lM3<tOY ej	qkV;W'|o4A
]Tp8V˘K06:u(+P66a<Wu^-)j<~
tz(ids
*myH5u=1'ˑm}5叒*v=+ao
<1E[^,
q:/UeF$G_8,Ũ4:hMuZ@ӼQq2,ɿJj&\s7.7o8C #jE)3ImR߉kAD(avvJi|ZrAUt8PmmUYt)VNqq:;I`Ƥӱӥ-8>K3,IgX?`aw6
rz_<M*n*N3d+m5]3!b
3׿&Ódu{[ 76;Yy55]PD2_e/-^[qu諸Z媎)}OԻT{d*
ԃk&lm˖o:..ׂä=rOi)ۂu^2l9⧃MVU9 oۢcim
ۢmDan[= nWZm7!c!~!пa{	qNpLaK%m/!6"BvRw'Znp
De
?05UWͲ/*|bNI/npWvUsu$ySl+p|{N|er=G;`ٚwkv_۪٣أA%%oA/q~l|=3JpN|
a~r?TGb'u#9Rުrq!-ύ#sU)QKWs@xkmAXt/'gtOj?0}<vv:Yܯ>}5/dIrM5ϥqw#&;4D}Πl{,\ku}o]iW8±5sNPIԼ(t#Y 
B&$~W;~dEB%iv_(p9C=3ob}8mϖCE)F
  >q`{ByWou&.uG>G1o"35=]]2ΔE:k9h8IsM4|^=&5hx	m劉I%/Dn 4S{lcX;(Ylҡ
 T<_Kk'3^ha0ږQbsrSU^rUڗ'ٽNuB`4E)g,u*4X?Ngt8@n!5Ap4&V;o<6/՘/`?ѭb!)7<AYɄöU\bPY[ٺ$`-t:i-tςAyڣU*NշB)K^Boڥdĭ>g E+Gy=ĔE_>G#{Yuwy?Ӑ\CVMi
QG#A
<{B'U!}-TXnܝ@059 ܛ|UMDv}L$E}>Mc~YoN7~>}1xTf[rǣڄUxQtu
Kj!3(8TP<
ތ"HIj}?nvm4Fx	$tS/)
kk\(n*`sU>/n=Q:K?z-\v=ݥ#\{d\-#%Y調:>/w
l5+1ĝҗ.tSSZ}`,NhP{@iy{ābU~VARh`ɂj3'%T*ِ%{h1mǽ6	w8Sy?q5HJy}9$T+V;
#&X
8?FM9uEPTRTѾQG"sy@y~hnbg51 [[	(ͥ*Mg_s
o02.q:%9kuLƥ
vwte'D/ߦ
O9؋]۽uW.Ԁf'Yߎ)-jk%o"(|ew$[}or}0݃\&U5*HwEchn=ϰfWwyĖ#uVPH벲|+/a~3JvEU\싩gT\^/XD^s9&(=a R`4NrGbX>S)j(<D#79㵚Dki󫆩B &mx~Voᨭ&yď:4X)DB;\TU^	^hSUX)e߾:2Ob=\6K
a22({}u!]%VmٷvzS4B35"*6uoB]*:d-AMau~dñe?,]w9'jEgb
|tkCu)e*s0I^MGS%3h6ln8KMp̪T:I'yNNu˚X;mrC~[
RG ovԺSvTPMeREUH[ \Elt~'75κy[1տ/yZ
u@\!گwuk 6nI2SY3@:% D&-f
6CAd_UJ<VǡMUi<PSy ٶGVD}5{Ww*nӺoh0iQV砆r^46vin{ǩsܕ5Wh
*:vkJ`iɏx
xmw<݌?YULP6	x>zoyT7(K4!dLmGQDy.syI()`n	V7~:Iځu4gxVr
*nE Drm6sĄ}h6]T-p
rxOp"=hrfku;]/qХQU/;8gD5Wg@\EnJlK}H0*B{#fBTdbאÉNC^
}D"5
y"j1H'+
e_.aOZ6d7Q>˦d+\˹^U_.<BL.Vp7;O$$:Ļ7oI$q2hELrtvmAX)'T .6GyЅY%7ꘆvϑp>?K
Ьe-!xD
l֍.=+;zbp| ^):-6fz_ќ_8x
-q.Zp aF%G$kh9~Ҁ A=#K"?BS[
R)q˻vF;Eq[YV&@Uu? ^.v~CMNi-ՠZɻ˝hd.pW#ѺC+2MaI sڊQ;BO9tWV]ҖtDe:TW4mχ Kct
p}|q]Lu)}Sn]j0ُc$J7&!-7A{\@~xIpTW]_vxfG`,7)Hf.'^7$j
hֆ
<vn)_r沉5M'Y4K8q=X'e7Nw$Ww;]P5:1V HgY ZRmU`>NJ;b9g_	Q䜮7YaHPEgAjdc/WT3A(uhr<5UYnTvJ@6Mj?md8ޒd}^!S84jZ
xpIʐ@t:M㆒@qM5oUh6Ҵ9O,lY`ó~O؏Qi|jqj
n]TW4"RD"1t#F>'!uT>YIpɜ))bF枩aګn+mxVIaU~/T}MHsܜUjxC8;LV(MiB4~/;w'20!u8^
:NH2`lf0
ŲDDFyV{"$~ϑ"0*_LC{v|8o%8*WUz?=gbeJZ,<n* 1Op9?gD\[pݪ8ƥI'>IťNuNfe+onE:elc+Wu	Vq!<8A4GEd^x6b㮘@e:V[YA㆑@t6j`q5/:bU4Kk-_;|,x,5;oq=@^ҜoQz<=oqXI:C[vPjo]DH.u%#^aۖɍg(U	ӻu֬FlU7rH@Pd^S&1gSwbuۑ}W1wAcg, U}!?4
`	E
pOt|pS"S4VT<E@Eʹ5	;3	lk@ǿ;}g$/
ԃ5"W2u'tbzƐjmv>ww
0=,Y1>\s|T+U537#}`Wd]鶑vtiC&yA N=:&BhV;4m(*{H\ tDwxQQ^7\e7d87a@w40(]O9޼c|m킇^zr0oFGVՋ'Lg{0xV.5F%Ǉ{54偑M!\Q6
V
X/V3[VHfh3ΨyA+_lGZRNo9ٓ8|ϛ	{_w_bAaqQS	^ئJZQx  f%\
e.ٝ2Ebk	u.}9̡-κ]ɶTwGH~,c36_M
g|h/>
v쿩Hpbn=7㴱x$fzե1W>n)*-ic կaI[p%9+A5@I57+CZĮjjTp
J]졝vp~KqMoņ6PeKG@I.u2\øzU`VA[wUCamW<O4?vmt;ߣ04wͫGÌ:Bpģ|ТߤH7Jtu!xu,h:U&(@	|WP*!'?EG#j<"ku_mϻ&:AGA68V?(Cc($]wCRir{NBu`g]y@P.ͥI43>V}I"!@_Q.Cm% _݃m?>TX]|--!uR/񃍨ynSǸyVC4z_7g#|WCm(iо6;08:,+S-ɡ#lV?7ĽOڊs_(WIuw(<NZ1k<xV7iV3`=䛰%uQkՄ۔K0
\!j+y/CUCUJ/Jۋ`{EɕsOnɞˑ{	vkLEDNi[5/ME,/&oINR)Yg⅐ĩu.t}@aORp<xQ$8;hmH.9''IA'Ak5ttʢ`s2MK&W6.KD8~P$iXLur8}ft8U1!BOZ[965eWRgQXM0kZv\4$\:R[;VvU}rJ
io+f/2J8 6Rɿprm=I!vmޒC»M!$
>%k
8]Y
|R>.pYxV:Oq8]٠:o9?<bMEbΫicE
MMjPk:Y4\gq⎉P!v᧥bk-%5qqǋ vL>MѾ$w
uP_q pB׏A49E䪸Ld}y%eǛ9.}a\9}oN*6B؎9s8U˅U!M穙ɚ\fSy4-\xA:k6P@߿]SCaX4<l-jqڐ6^$%q;zݑX:V- L ]řWE
\[	tr*T;mխl.3sa.BğP<VG縇~&ӗd2=1왪<%o%'q
kMWE~tIS_-. 9r&@KDp\x1DTq*ḝYsV_ֻT7*9)gB]?>u	 k<W?4co[;#WR*yn5bUmWޫ
yl,d}B}m3%
 #j#Oo~sʗ.9l2I! ;8 	|"
/j!߉sP~x|*!;sN#>!0<( *TCGk_"WuVNula$ג,XydoFSUe}SzlpsD _kU5b(V$]E^܄{)>+9?&OsIluTsQmaGz~ys H;d@2K] v굆5ͥ	.΂3/L:;^~Gtpo2ȭ]r|J9tZljQZKMj<:ԄI[FzVWUh\K9ή{>Z:C!-àjqnr*< (q[p4;UF|gjQJ0NTfR7t!T4~sy-}_M׿"XsQb.I]nhӜt7Pť$pT|r+z
کE2AI~$pj]Ls=:	QlGYKoz9툫wo%_Wm7Hv4
ύ
G_m~l9Zj+9<ϓۻq7p2\y5]ԳPzΙN|p*+;,7Q ,<Z>j)UyРMFA(NQu2vQ{P\5T)ϊ?ģvɃlA!=OeQ
S?vUUw7Z;:ԱVNxv0hVnȄ@Y}A8x_3}h3;UnQnK9ڨ=<##)U(}R$GI(LהI#R`A=Pl[xMp"Y|&^ҧ鄣+@Wb4"('+/}:#w	4e;nwF	HV&*'W[q)
1gvcT_FR?
v-R$xg?Eb{u-d<0Ri\q:jҊG^Z{."Sq)7-K~nU:
 O
Bv2[=
ʍS}P^4SepfʞGC$\ǽcNFW+;X!<w#Cߔn=<RˁWSxYrX+tsv^9kI_5TRj!~	|y#tԾV4M|iܣ9EsVqQ) 14.ђ;	1yE9cӦ:&؉b	=!͡P]Q
&QCynG	፯KW:p^fN_p kPiQlvδ Jiϟ`༞wI9Q;XfzI%-GZ>@wp)	H;K9)$M-3BatQQ g@?WӲAȊ ƽUwZƶZ!1bmnEut4^~ 8Ng~}u2T娑}]#p8Pn.KU~\#%_7t?:J_`>ɸvQ_w^.)V%vQE68<3Ю6Me:n'}UmHcZ
˔cȸBig|^9:4ȶ@
	/.}~
EV@.J'Z(\MoG5"k7mZ0&PS
rYͤr|8Z}ŁRʯF=IACglL,!m2rfjyW{pӪmu<߀mB4#TD#%^U%S戉z=W6S =ЭU'B.
'll,ٲq­Xɂӽ;7Kql݊y,3>tPncJ9((\@Iѝ٢s[	t_%\$~xu}RGհuA	asn8t;%ao 5:VzNxZAF[d$pO]6g{Ȩ$tW	uw0>5RS޵q*pt"tJG2&P{cࠎӃ$,ZU!qfUkRz{4PU)!`_{0e)1rφZW}lpIGY{<%*&Nin"}|?&*̡	0lK;ނY5l5ܷ$K%K5+XkD 2#~Ng&48F2=H) I_:y E@$[*qކj>?_XGVU2Us]43l*Ćg.zrN 	?w{tu$^\4 (=X/(^iyp*qf>~UCh>F޺Zk
ًoҶ+wo
-G14U{ӵpy^ dhv+	7ՒQWX:DPnN('{bP<o`G58+i`ŧ IKYP3mE:",#N8X;ߣץ	Bΐ֡,HXjHۊ^GRA/)s&
4/ldXPPWsթ/băti38Bq:siUWliS{r9r>Y[FccqRƜZ$]rd%iVxixkrq`CS9^))۬6AlEuE#
bBk'=^D}IUM&@З]"fu^67ߏ*=/s+`pjLIpM^f<dUm\)#Nxp_řZFwA1=ytnSc|;15 &w;/ƺ-7)[d3uxO}S$X
tn	Lx99 >թHĭH#hg]l it=.뱥YVsm*pq
ΐ4?(Nw~i׭̧R.5)ѝlvŔ(hpD\Ld'vn6ddUFx۫J"!7Qp(͡qD%` T׵YNjz@(8/lqkNڧGR7*CvpVwmo\&-

L!@zaNר*u!` 
DR㇆DI
9`?O&Qq=b=
$Wa~z+6H>59if##D0hah(-0V;޶\:*XT?೬b%J<^{Z"+pz8=^1QفS~%|ɥQu-X][qSoa#9,PYPa}nںVzbt9q
(/i|UkzU+VG@uD[T0O}"
hAxgNϑ[I <Zwdn>U9RPN0AR/nk A}z[\O5!Y𹪠tFok+0PNltD?ޮU6o5
>3_gL!0B'O蹒b
K8xd&o i](_%8fp Nq'lPfȀOS-bU+ļdUWLH$b+ԙ6g
4:?Ӆ:+Dvy	5UڢIgoE{z"^wKvBJ n(ӑ-=sz6@kMM_{7TlOvm;`g.IT/>Zf.MjJGNlT
:(z[gHTUV+0PyUwDq-U
`qsȨ|/?3mY5Jz[8n?h-:dݵx&_k9ѡn!<T/8_x\A!6]Ik 7oN"ӪGx9v#yy6	
Udzc]֊?0e8XpֆwZ4OOqЀg	
,csnזw
{%h_/m{|X@x}e{Ͻ+Ӟt꽦^YƊKp#bW]zMXŹu ]򿼯QX^ЉkrUp/٩)Z5#dT*V¨_u/;R)9Zs{tK/u7; JWɡg>TtCU n}wJ,^V*rhgfS mzLqjn]L8=Y/0b&|5#ϙ]$Y?Ͼ#ѕT聍;uW&,]/į^Ɨd"oZrݮfonKRBW(yYu7O&1 )(׋!?W0` }_U1]JւAt;9\\+-E\ch5T]B
u@D#;74[LbBgġjYuS
BՖebRpnk?h
2ߝ`g5u&A!* ҙ̢9fnuT>rA[Yzsշse`[m6>M88r>t8%7qE=ZMC[AfRdVb{um}-
,3-).7uu"%*S5)-A!pTx5ԧ_<>ƚ^1*lgUWh1ͫO-Vm>ot<cZ9.r7.syt]#^<:XOv[q~	4{ȆC]f
6V
WӇژF~8"(*'|~ڽRW~iNC>'uEC5
$c8}!UXJz W8E.'2=T̺:A82=-4Tz;g0\n0Ge/;Q:4\.z8Q*R89sPF5/
ZҌT
|? )ɦY5s3?*Cװ"i^c''6]A?_
ޖg4ׄՌ"JOr򼜛['yC-m+(stOv7oI2	v5فrS! XTڻNE0GN07v~?Շ.)yFĵNek!B$K<gY-g$yw#ᱵC9M^R5A8|W}=G&zެvb4y`yC76WR_Qi
h*O~\B>L.-t K;~ 
[WV<nF%1`_%U9Ss>]]BHxI	b t1}hQU&~µv9Un*7IM+ֵCm']_$I<
V~rmŜ`~<|OVOYP+VzsC`xxAM[\v(oN]-=ʤ:ޝq=w-b99!'5wb6^%Q]5r5hyß3Q$D)J؉)6*E;Z@pʳlMTHlq3M\aPn;EPvI2(MYG
<yAxGm+ZgADJ;ѵ$_yd}{&%O)#:r}tvHǁfFWSK2-~?

qh),Y:cL]n?Z-P)KYE]'
I_g^8gyQmcm$}	bxڽjWC7p̵BfC讥Y0mpqU>`ug4ԧ_NFS|ljCc꯿C>[m=tiTY+TƸ띈YoRݨ9E{WԸƷu_Ri	d|ϽX 7;JnF~A|`S+P?cW>6o=Ǔ!_n]_?3jT:mB
,29#mĐcs8&ЈX}QFeh*M8VimGw̧ހ^Ǐ5o]ZDu8)cfa3[ZHZV8Q.Q*a+w/dlݽ;Zԧr5G_5~oTxV~kIo{Y?y8kgޢDǧe	pCV7 3vëʭ]=n.P7 ˝.ϛV>kLN1Sj.n2B~UbcUvɌgq'km
HϻBMe1ȼ?"|}ig/ŌVή?gc迷KATK 
 R-}򽻳|ܠPAjru[sV+I=}~en!%L:lk[3M-M|~QJŎ}hyQn!&0C+hz>XTvQu #$EL,=>UʛF+㨒cEb &C\x $CߓI\RQV3!P cUo):KPm32l9uWFo.^}*TɃ:'i8X\,izeHʛ:E\N7y<DzZ[T{'螐cEY-n*vop|veBҲ;Y\)d>"B_UF9>
kO]!h3bG{ >㚋+D_#)9Kk9@^og_cNb^hQjj¡+NUk֩J&<ךD^Bto=WUNz9O(W1G(܎k\3HQc#PHyZ6gT)W]ԧEh"R]ը0SȪ%՜$Lh1
}^>Iռ7~eٷ(ҟ:x@&
e]$p.oͻ Lw&82ck|U^&S̽ӱNpM>UD7i gomiiosl +PC[2|8Q^KěϸЯ{
ǿ59x}KAŜQ'&(]GswxrBN=}[R<{ų>2ӤWQzru?WQUN}bMK>vmt5TCk:)i 2$ 5 ]~An; \g&n"`k	Cy=ν,GatqwKbduDYc[e7/GTN犈EG<#MAWKK8n_5"GAlPR/Z%,-^uP](BJ?}[}pczʝj^p:Mk6'?κ-)*I6>ojlԎq
1}
Y2a5~03s9ǥѣ=%ҭ[EH
]F&TJY*rD1k%)*Y
(UA-)>urQ.n9*9jcUWDЏS
_vή yk_^pۂiXFq4[QJNLƓLRm~6mg{4AjJ=r1eX y9\xU%&ȑ5TjDot[PTzWG	MI6Vךn*BviDZmKW9 gK3R߽ӕr}!ut
o_?'*#0zDA7ҐUWJ~@qMh4E=DףՙPM2t¿lR;Wwޞu(M[71 !NAg@rI[هJПEtGrGO3[pNPqEKת_uHs1ρTН6iUffNb ?/j n[ !NQ2啌FafR˓dbrr\_|($4](_sŚKA瀻ohZM׆BD!kIr,kM퀽FpkUSqEU5>?d9_6Y40w`:-p2zGuhyj6O
և!ʜӄ=k 9{9orNrJ3tO%\9Ec/Y@U5O
%610X7K!VRB;:bp)t6,1n'VOkn;"SԕOYk*D@¢'2۵>1⫼F
/9PGҗ]<Е`H-+zU|\mNBL7W̜fN"l 㭴uo @P3}F	nMx`*p\`{uCdRK`{襬>ˋ5y-Ժ	ݡ a&
&Ȧ*m`O|S/t77RľοAxF鑬>oK.瀹c'i+n? npDqk`~ٝ\pU\}2Q<Pܵ5N9YsQ4oj߮U%$
 $^_҈ LӓNfP|<G,	&,ʧ_
c*mRxRvXB,\BH]sL9>\jkm*Zg6_83qB*g/og	:i^Cz*X8x?JXDFvb:
l|dNΆq섰7((UwQ!Jq,QJ6) ܢa&yI_4KdAߐf̀
vj__8G1k;<2CD2<ZmG"Aɹ% Z%TT((T9Z6NXJuպ\
m]Ģ'*hGRȞfkQMEǢM  /"$ւ?J(.mNEe9TG{8G%^]/xw+3 
q̥9*H9]"O 8h tW6 tC܏u().:Zʤi^͉;eF**Y,rtinLT_>4iK}`*ΝڤEߘR]7׮:9Ξ C8sYUpgGa>tV MT~57ѭ"hO^'vesPr<wzX'J5)s}qYqu.Us4
%er/CTbD]?[#
H\G~~y?pZXezym/#|,GcKw<*dgsp{2:l^_s븳^B
T"ՔI>zlF{MԮ(*ݡJ
trPsD-Bu+$\tWg[B\oDy-u[nBe\kg=6{[
!P
ŪkӽFN.pzl
q@
1g2C:XpTje2By}QE9ܔ;p*On<;0-H
Dh(H<(吇Pw3v3{AEu[T+hi|55(`^y~sZF~OTw˵}z揆p&^آ+^vsv)tpIn,$V24=c>%"HxSl)MÞJLA8[S+8QrhahxH8QP#rSGUDT3s/QRlM5\#
v鏋а}

RckN3ciNpk'	j
 idW_ KtG/kE#HU~ ׹g1
h3Pڰ/B¿Z03@W, .mn:YʧK6}Bi3߹xPۢKJjnT8Kny<m#Hp49va zHuՉS-'-1<\jYzPDu<{#&5W>/*YgZқ>ݢXc䃺ڦxS ؂_
D}*Nvpa'-T
V'z Rs9x:Jt6MZ*ڰ]ӴJp9j\/k
|
RҮJv_{(ૹ'ű\}B̯|e /Dx2d)OT/
DKgU=|?FKҬsUCeBJe
RXH|2QuSlF0:n}	;,~fKFcrIQQb!5/W/'¢HvK7 ]"TqwCB=[8+HԻ~N,Yh{80%Z*gg^|y/w߇]0A$ !+o]v	}K)9wttE]TvSk9l
wY<ޚgոOJ.-{܁R XA!6>R[.f>B<S'In"6;?s.rŀ o
i+I!J9դC8
<j*]i'/ۥ9^ u`:o?*Qilɧ~/:^ =\C.H@JrRR[5׊QTN4HP>PV'HR8L)Liz/@tLd>3TJtya[y|a~wda_vznA5:KB((s=kç@._-=[QpTbix은`SvE_JgA6|i|:tQZYzpxmqškݺxD<3@-iBէi
q9
4r;Il_M6Rr	,[,-tplVu?t=2y7'n}m<sf=
WvEtiI9v9Zmaů?[rC<9KryU[#N܌f:#`#pQwu^[yvVJ|,ᕟh!.n|xZ;(8E0-[><I3Y a|4egIޠv$ֱz&r^+b>cp1ik:x(}N@Vf>.ČvރOs:Z@%.(NU-:ZޤN&!բEU,rvZ-v}󲫼JcǢϡx@].k*r^l'S^v4!c0FU u*,#);8qNk5YfI^(8q^)9B4T̚.;)zvWٜmlוTE&V>K1 rب9WOhzRU|vxck1#Xk{\ȡ)ԥ2OB8x
DPB⡟dQBdx[}'!V9%K۸@ɍYUi@Q:36#Wo;剢n!h_oM`PCq$r-;GeZLIzib6tZ&s4pǭ;B/>S?Cꫮ2\R=l;E0`w"LU#zmE]-O4QUXr%w%;\2nNC҈͵K[JNی*IpA(_NMGp A`憛옜孹Ϋ}%,굵m:>Wჺ7K zFWNP-cqgBV*]_S0]x϶Z/-^(0ƫ5
#į05۶;1QEY	Ǌung &ͽ@CW(^j`M닠? 1^o?wY6(^HrwQ 
Iř 
ioUY'5qeLe!y*,ࠬ*ry^};\ʯp2
r(]W[C|kolIW]a9A_<] Ց}s!>0Zvz0Gy܀ڛ(rՈ]IkW!S%AV+nΪֺ;frcX3aޮ'#z.gf%mzs{wqe~fLNӓ\O/QNi+TLM?v@|TZ
@y髜7_'8J(IB36cDv
)X qDT!Q2593^Odǵ:p!ڨOv)ʆx o4oa[+־Ι4qM
T	-/q>""c(SL݃+	%|,EJ8rӧޜ6]_s$baxvv|<:~qJҪTu(LPOP'讷Nn攞<SE>}Յ x6iݺuܠ8s.LAVث
̒ E- *s,|-8	IFUjuk¹O }D"	NT[ɳ2/B[;Di>\*P-HX0uMA~fpR]zQLBn|봲l$V[$.Ƿ9'¶#V8 
 B 7xLX"&@ûq
ANdp	ÝpCdI1hӫW	s/Fc69N!Õ>G HF +9cR%q?f\ۉ 8qޗ#|#ĒN︵ۂiqw,;Z*'Te\|Ԟ8 N1ϒ2
J oKfpk2xTz&54<}խ#3EyA[';93\4%Ax_){z`򧄛뺠i1
*.N%ݽbϋR[3S7[_a.u8W(Njԏd\oV)E\ kU:X	{I!qDu	2ȧZҾZ!W'hj(f<T^
?U
60(/SXíMU
K@4MɿG;%Ńxgq`5Ex^ѢE eM+p}wꑏObK/if14zfhsFJ,g'ikzkC7Б\ dGWGl?k7-0{%FoYXCq^f.
S^koBNT22B
>nRSӇf+U54H{5q$Hf:tM ;=^
]ގgxzo@(>5DSd="Hvi,4-uX k*$1 W:ʯVM.dԝ}A
iD= 9D)'t6JvסLuF6hzq=,Jovɜ¿'茖jCUrAllOC{R P	|VK#tGĀV7옥69~ֶQąa)2ߖl`!FrotExƫd \(HkIEjީylG
%b~SDj{cuCwҏe㎠:&R GN-hTtrWKj\}]c$ˁL| R:,jS`
5@Oy83QmƮyjNzMkAZ%uAPhјOVU^̛\jwByMNGhּ<ףӽQ'K;i)yr:<AGi~ƻrDqq5{홼wP$z;,k8;OaڞVڠh KZ1;)}+?g(}9.+<^^aCDK~^NS(^h)p8ͣ];u`GLHxmrc	O_%48zS%M(A7	+ +tS{uS5r>E`i@{[do>OVh24sja}\s8JZ#;v.:(M]!]͠W~y	BEU%-=I)4}µ2Z@tR2U4eYsKFNhx2d.>	8r
ê
Ɩ|E4y0WH1Wq<Z.N1\w{O~>ޚǺ;{9<<9sG\b*ZB tUrÿU5(R|hҊ_!˻E$m 1djޖ܀=a	uSw @El(
G~MvR*W?=k:_;J\3V4Pz}eh2Iv
30`Dm&(z :^k>n]g;^NAfa
\W)/lW"ߪʏ$G-yU*/MMxPX`SAӌ3<}f i9R4gp=r6(lmmTǀYus_KvM܋u~*ڦ"<0P0Ćcj9y_U]sX5)M%q_ (	)|8{O]8qHWz麆o'9AFS] Zк^`eP(QkL"1o_4̫oBesV\qoDW%=?Pz&U#Ut
n9>/H?w{of")9uApeM8\\ub	ӗ"9q^UBw$zʧph v(芺lGɢt.\@ ˝^mYml
5ـqmSUp4'Ȏ8087wJVP(?Tj %I
HāX"LuYDoԙJ6d>b&O8
>D8+u<(J;DgCץhVƏ	}kf]*`v}EEj<\1 q\K:(C,b.M-#U0
Hz-joh ПK9lo=֧oǒYpk]~SEGx+`;||e-J1*!]5k"d6٣o+<˥pf?WɄw[㶟p
=ڪM'\Ί>
n)%%Ei2n c?
A'3ĮlWfJ9\R"U_E8b>2~^>숢
Q5]T~IPU]_Mq8ńSdlBaV %_CBj$6߭&ZZuҊ-7JIo:y[p9 O<>7y<nңE}/_U'gߦz'нZEgA%<H@]rlX%j>^X	Ǧpo#8|rEIP]H .H/0PiLWPsiP^֋%GkO'*+;<Hɇ+`FR=m6kVD0O	z5S '~e{,>*sVV?fUgQ˓PvkMn^zѾ]LlU
xğit_
6]x+<kJiDml%ClHrtkdD8װjj4 JN1Hv;	({6-tA ZA<;yLf7ܭsuO="
 o3sT~ XB&{<V%9 '羯ǹGe7%jm7i8Rw7-GJH34Ф/\FQò>K^Ik܈׈i:Bf4|_y&m]}~s 4`1_40'%&9z
mիb/\n
X=>}RtL+tbI c}.䂠tHw09nH2H@+;+d=}\vurW{qbR&pܜQge^L	(P*:\9Y4uL]i׳BU]S_g=\LRuUw0wn wEo"Xk\͞,G4wT	DZLy!d=3/g6G:U}yݖ 
[ @Wz.9]4]K)[k5vU2¹I}3|\?	|r.Ubl?V}}sMk
VQDr`qSןy)Dܮf Hx	6-Td:L#e$xdp\rTuE&|js9ߕW6uKv>u̟3Z.
VC|4&{l~s5C;va8z,}m~ L< GnL )!|];xj9TptX]5!{d(+=#*gLS͢r'Y[@^k`o9d<9\!x#@g5No}L`T7G9Iu?>JX;hM`퓆 c
L,PN݂=ͺɕ>ls]QOkpi8zmL:K:rq*8B3@)
Cg		,&FYr~Š$~ Jj<-W|m>m;a_erI"FUW^^rJrIX>}2߻]؃smHq*la<9D/f\&x)S&9SLWCP
yB\?^PDq<bQv!M6'gxNUZ2#6,s
	ն:ɖ;xPY΀G%7'1 U<yq7TΪdSY8%A[fb)Jf%M?S E12>@ƫTw5=##a8IA`
{륏)PcZfuZU? r;{J>"% cbHܟQ]1vkp\*9x#;^<o9Zta.کzv/x^&"Ah	Uu$Whx)J|WB,4r l_θX	o}TWjЂD*t
/v&8R.gR,zUk39.W&Tg&bR&t.2it/8_)ٝWp
6ne4"U,jy>uOzu/rȢ,*ۗ3S놺ot朾~ guW12
3t}֥׵d%AmL/cn9BǯQs\cudw JBLBwjtwM!GTP\<,ƭţ%] @;6HKr,"wi;sTm#b52d})D<~	Ct{n=x7NwʡyƲ#FÈCriT2Lkar"AiYŮʧߴKm~έC˧V27q8qt!Oy˸"W+x4_ْJ&7Q1vȁ<ɳ\Z{0?-͋Oaso؟TebO^ܸ\{GtUҋ^V.ˏ~nحkZQ!©B3DajVZThottËr7ТG=U
$k?j_ A;\[vITrcKָ%;8H~xqP(@Uo?6Ԑ6{Ը :Z!,SjSǑ.)]*cT

:B.
6)_+y[aRY=u(*{En})
t6&IVu8	8|Pbsg#LKUsm
ח`6xOA8y^<Yęʭ+Mii3[WM	@
dKO+5[5RObqϐ]mIW-J0<i!('I0ig??
PaN[~p@R0*&`
[_oqcˑrJV,8*?HQ\W?mh
;!!6uٮpKwAVC]m\Y}N`˓	[RVҾH$;A[מ7X<'>vY#)1?u)MN<
^s-C=!ύel]!榑WHx@][G~8ABcq<PQ0du \(%[kIՍt_ˁv:O39e@=ə9v9|أZ2Df15nRk8AL
X8S1 B_0N`u-8uY5J"r/q4ЅdAG*SK]NHr8I
w$(H$5\|S|U[vqm%{EoJH9KH@¤C|֋O'ii:@\ R#Ik;qՈ:\q䨮S>AߐJ	0MBemv;ީ%-]$\>&g1A(N~oDpaHrN(rSHM9Gj\G >?=]r@^n2Q }J#T@59f
m%t5%@IPp*Hv8ta~Iω5d8/a
NJa/[/2 !>#i6NOC}[møBnA{]ՈGPǻz]CwL7/ŉwE\'9ۏgO,uh*`4C҈d?=] Pº_ІQkLzs5/N[d~8q}JwwE.М<~V\ gs"3Y9BV㈼mno	aD6 @R
Es:ʸ :_̵Ƶ.Qn&ͳZ{@\Sct
S__[#rx83y7x!.slrGKP1,{Z RF(Py|-0Wr'$\lή#O꼟[?rM#e/+>ˉxi-2)y蝳S'"%g%AOѮKo[Ṱ!!) M"qo80d=gjSjU/Xx&"VPfz5kai.|#=oڔ5;	>ZTYG8$#3$rjmyrFƱBJ Wf:
kHxڪYh:9ovxAJs*B;s|"E!ju6Pi]2/uSɄ)h~eu8{hKA b)	T'\_[?h݀hNks.Wi:21.jU2w	muu+{]KqL(T*d]a2`k.;0.d%Mkxg*@&wnlT$(sx#<Ic؝}gWpQθj4^8%XIoX9+5شreUJU[bв jIr Yյh)î޷wu48VQxݨ٧ a` ><f
~k{1rrƋ_×Q+
Y4xU\@.'E~<?G.eYM18FvN?7d]ECǕ*q[ծG%ܨrN3xiE
'!u3?,+ʣgT{9.Gl #9
@U`?;bGj#Y>{OgSF4qRWݭF6j
CY_/J-s`K(A!|tnH>{ʗnN@wWyWE1UmZyܫw.O:*}ؠfJSNZX3PTn)j]mU!
ݸ0v!|vf%η63-7s@]uzڑxȕ<f{}P_e5VvZg }AD?#:չ1m׈Rݚ]A~a VS+r(%:_Gx]"
YX;JK)u1<u/j<n&oyqѫ_0!5MrN䝨KgY}ܹ#8C,!qS?&E3IisqFZ)1o*5$ZL	'eRF+{(/rG*ݪWnv[ʁc7yȁԼ6dޮ K%=R'#!lTHOOI!;pN9ыn:hݻ; F 5tF~ۏ/ B#ḟDݞiՈħC0Qfxs%ء<Pd'}mR,C[ T/dqQ0N_$&|!fg4UnUzsАu9	Gv9'䣎\ n)Uo&I!<a}m
+,v;ϳ{nˠ*z @FnG/lRėA&\z?=уl YuqJճ;m\mE_P[2@,!p߮m&{ģ4cl'_rY\D䑒^"a5z<6/?,NsY}4bQJW]<߬\ZRAAvsLv
q;ʰ?g~lۍ;E×piv:juޖ#
9PytnlXШ>*Qp11Z@!Ӭ!':!)`x	\m=֯)\
$	IlC=Oc{9ިף[( +ϗ(z^v4JCSp+/Bup
$~EHjwq*?t4|T/*ܷ<V+\fk-	JuR-dGWmaes2C˗0!r
\XzOY*\ѐT	@k^NhnA.۸s[w&T	p\FK0~w_͍Wjn36Wq%1+=6GVeU͍y'Wۧ$t"	|S̷T^p>rmK
NCt
XC{BDB.+U=ڂ~o6R-(-_ar]WC	0݄xy=ro-޺ѰpZЦ\5-KK=ӯUaqJfP耙Ky/hpTRF*8ֆB Nb!~lONq/5ݪ{lx\2r%,u1t%!I;6<xw=lYeQ'YSe8z'my9(8#v9A_u8lXBBa*jh2g@
KX.%"]ZطNX0N \^R;.PIy>rK\7+
VH L=) i>Eϓ]Qg9G^7d[7_IOW
gI䵬sLGp-<:jhYHx'wno'5pB.)nMIڏPL>Sϔ
,ZmSynnW1n<NL{@M5XxE>` BvS"ݑ{T$V_v;iL~q.t9ǩCo?/wݕ8$ Qtk#"o )tO'nu. fR'[mk:wJ_VK
 &?hm֡,O.%,]㥩h28r.亞7⡌T5|d jn  "tsK8t_bFq
!f,ʻ_':RUes?Hu1pokh$-uu[J[<V&ԔHq1h%7:q%>JFk:]Ol񵕒%	hSe?:l5vϏti\0*6pMS	[zs]rxD(GĠpAhZt8ޛ~<Y΃-;Wէp6SgFkE6#=oU]sI?蜨t?It;M4T)F5*y.jq܉R
,5.i 
>@kNÆ+^Եn[*bz^У%lOt.K+^v.Va6w%ʹ`\@Sk*tX\\a(ղ(˙9] Vq3WE_֙ຒ4y9/gu7 w-ep	usU-ᘿÓW@$G	As"OZV`Wk,;nhEvG(rhvl5pM\^4@LM3Nmٴa/$'
vOWWE3^Mt3bF}Ds !~MIYE{Z_~;ɉN"TJs>:p\׹C}=WgXa΄"l:Q
ݭ_~z2$}4j.2d|#3RFŪ2#NԠg3nu9\ziϾK(se__v\ǋN =زPRSըtKXV;u2E_jLf^~Xk5/)D|&W.9Y]@%KQlEG'T =ݾ,ZX{,[U`>\%-d\_]EF/^~d=๫M]$hNEM[THoBnТu[o0#B$u`O98:_ϩ1\s!
:#oŻ-q^Q5"鉝 ӜNzGU{*N~/30nыTӲPxB.[k˷G!^mG2yymlړC{KY~؜0b0W;IjC8ɫJRv2zؖBwKo*vߣ#`]>Xim BuܝsbE~(\ռ-}f~j=5IL(-F߯SfKSɯWਜ=UE1udW(m ΀W-q]kuHd l@lY5eUvӾo@yqP0vߴ\:9FgW'e&V68.u$5ʮlݎ,ۥFQ{pz1Ҧ@-o:$Ksڂ6|*_hY_ Rl1mkJ
6áS7NF!9徺w
7A)נE-`ydcAs*|HurqYf
w/OVv-SQ|r;\G/t6̥(RmݟB8pbf?ŁFrӔ@R}ZWD*`>14D]=UnYJbu#D!8G^Rf3r\
t.+UYz%4tTv͆Σ?aLܦM]bb ~[&`ː	a%}HQcq)o@V{2*kpMNbkZ9iW2ҴYզvƷ{t:	ȿ^cw~pH*Q
V}:~ |f/lᘠfvxL`񝽯
| Ye<aqs	[w7:^IlqBn	*|KN]n7_9-:sӯv2LUY?$=F3(3RHHX߈]hWz\uN3xࠫ$Vn8hf: 
o9_G堥)B ֕U"_42I{b~T0	u`N 4rBǊ{ߣj]37(ωFvɯ!K_|ϔEsM-?[OeG*/BIHLG:):ul{@n=S4xw@	1}4ĞnWmEp
31䠒9qT],a\
}ij<\%əG`i+	]{t3(,c;uW;3t2R!mPY(օ$c<9ȱ+CC's8E[Է^#/u6-b76j0eݥ	6{lfoMb~WNqf{ePSO*7|tVe]ZDVq&/R.
 ZFRQ5WuJPU-J]t
^r޶{o*i]19F?vb0I(5# *@ U;Y
0N<`_ j]
ί%}EH0z(d_pA&ӕ8|[[RtWR>&asүsVvvAV7
;HΆN%ߺeGntq}MWDV[t\Œ <O_\IDRђ;um߁WuQg$V xΒ]K
sz=1z(;%Ut Z$sd pƆm: ף??tv lm"I6}Rnr.Cj\ZFBѓGߥn&xγkU#fE7I$KUu[ۏ02fzaPjh~h=o[$&s8,Y}es=AMR{h7WG|
Y f@0exteC\jny巀rJו7sT}ݦ:cA2f]˴,]QrSoNnW < ~ʪ$l?BPz{iDEnMEsDVi(v+|j}f>Zj+)	ݫSIυr`0qN)$Y@L΢O`a>zod|;ի6(0;٧a!mL}h|1WH=8aI0>'ݚMX\B$Zb7-X 	q-8oSN+J3':f5)4 @_x#+p ='?#W?a8vDP|h#y%ה&駤Vd-)L& ܟL]b!Qʑ8{`BZu&+A1Qz<qq'֨Gg¥`˘HpbG)D;V-D_=iWc.AiРk.L
'WayJbyf}OV]!Y?J@eh<5E#Jj֎b\
e̄p'U9
u&JݏB4t{':VNf^Vz$c ?WMC<=\W!hpp_N+Z >ئ(Pr[L\PH=
.CQ{|)³G]FSy$bG$cmեBO&C9>Ռ z^n<8ױ<{j!
iӍSRl7.P}+Uoߔˮ8S73[	j_Ѿ
s'
ilO`TJ*K"zG hYa\j[LR+eLk\e?$r<@bC3j{n?_+ iC4yFwu6}ʶδ63$A
ztgZ1"
qB&ʔynr+'u%;ݛ4 ԮlWV.}
Mu_?84)&QP> ](Cѻ^Gќ 8^v0e%=U+cxN'ٹWB0eSUm\ͭj8[ 9 Bq
vP@#P(A;`>VdnC*ZԔuD)Sef[wIEJܑ9UM;&np,_v
9!s?RlCo ӋҴ)d}?|_ޜvyU$w~QDA[Qt
i{dQw%d(8{9+.ٰv/[6'%)/a7*OV.>sU\5o`?> S =o@Bonj?֭y#LBۂBhZԯû;EEFx6R'lȲ' LU?X#7!Nʥ|j֎9:6ߚ}|a} B)hn7:DcϜ4YoI^jjQ/"Tu>^ޮCv%_ cUxyL'ޤvꊽ(uGS?SK+
*$litmН
*
[|RB@k"h?ILN=jY!P|w/SgM_lbTV࣪m'q:vJNB5+ھus~$=`
{܊#1|DE
+)(rZ_<\KR~Xq rK-/I<M(57_s؛§&Vus,/_'"RAOA!y/2=wX.hX H{5FSgMweS})sW#oC
)"C/0
{AY!*ғO~]9
1 9nL'-3F>&Fgg2R~zlimxf}/aWue^}QU*^" ٸԯyTV`*
Pw},)aib_M8 =
_A\ק5gf@
c6ңF}<BvrPe^+=:AIGձʖϮ1Ѥ?%ЏUZW}*qޏB pFpUVPghgM +N*'Fի|N6y
ڛ̪kƝz2u:5 ąq]ua!I=8~ԝYa]"s}glxD#
DvMSǥc0#ʀ` hEVwKtsMz|6S"YMYwܗ/Xpb$ajOlY=a০K4ѝ#nGs_:x?Qi#18sj^
*$7dJmA]*FÓnުdP{
(+\o<> ]t/=Jʱ"x Kjcj/l¶,Bm֠k΂;NQ4pיbyoy/B\Kf҈| b^ Y7u`:aMe<wkMpym>[GVӮt;b$<Q2]䇺=kWIv2>.u,n?+cV0EO3!Om|~ů@ :`Kx+[)t?YɕT* a~O0Zv?
T&O1
iw%EUG0틂Se$_"C]*{[zx	<P.p87pI@>b5GuWrHG{w5ڞ St%BTsյU5 I㑍ѿɭЖܸϑ{4]O8[)xؼJpNj:*.禖Fȳ 12򉤵gUv=@U֩H^b)1_DWC@[ʓ;dC9p}V-5MUS{zDBK6]:ȎPN_'?\)Q޽Κߊ
~k0eK߲"yȋj{LSRY@t\܉n_Bw[<-tCq1匀2A`Txi
 =gs~sm+E6~v˷MOn_}~.ҧ3GH	u-rڟC6iѦrb!ጠuf)З	yyO|Pr}I \AZm:4i:ST,cvHn^eˠbЯ՜-l㥌eqqX'ǉ+*P۔ˉd	q-_?d#\)zJ,4y9/y`L2ؙs4*yYN'A:Աҷ]Koc+	`AWjo "B}./u'*Sꋚ]ZTB^6A~4@8c]EJ;'R~EK&jJ:PIK)"+PvE{Y}ԗLBwvvIwE`&#Q[;κN?zW}G+7-VeYb7,*,5~<;;C0){N[U
[Mv$͏vs4_%C5S>6Y:>|Z>P% =E[YO&ȖSQ"WB{;Kk_{tnqZPͱ9gz܆wlrsByL709rK-Eeho\DM k+5v9DF:6ʝbvXӶs&JLXef0:5r.&2+9YZn{j@l
ӫݺlDS_zSM.W5؆=pSRg{{ÑЄQzA:gE?p#7[%|̉CF@0#RW?H7GWќ(
*دZ'9T܉T6w(ٖںfEK:	 bSÁR;`-PsFVY0(|LTKw2sAS[@ns4A93&AR/`
]7	ŭ^
OgwszaK>S+쫅ngŭm%M.]2uܹ;O R	8p8>
/"읏Uh Vd`:X=uȒ3k(%Db$yu@뽌p灣^hgyKo}xG̮=79B _$Ul?iUv~gSG6Ӻ3#hǬd걌_AB%V`	ni2z>ĥ1(;ɑw׮ }d?9TF8Ɖtnvuy)/ͱNNEt:!rU*36|&veH,x 1}6)x&q!/>Oؿ^
|_.?iWGҊYv8>rN.	c2~KVv'z6n[⚷B%\.eG`g27g,EƳqlDU4I?(1g%_G5IF^"_}uAt}Vn
8Eρ9m/N݊EWN)tCn6wAkQKR΁H~Z^hcmJuJyO"MmX˷S!9v_]#bx*?R fBŧOXErTa|a)Kȁ\ϔ47[ڼ`>h'+ٽ6AT]~2#ol{imJ !?vr)rh)@gn3Uf359Y3tajNi睎$NZ,T)S.tfVJN}>f-r%~ܔT,=*ǙՌLu͎6?wV1VG&+뗜ñ2Wn.y8y}'U?qS-@!~=9iA:h}>j}[Σ18!bG+e8cyI_)%z8TG3sI@Q(?"{KB9aMڀL7#ήc:[&@NQYD7۬}ש>^\K:8 ۧPU97ND==Ǜv~ c,@ zbͭ
7,=[+ #1b~H*SYx_7/. wrCPC[dOmI
}=];UG1i áSE%;NvnpY)FxBɤ~|s]VO^>ۂp;04yАT&@}i& SYWHjj	DB<S?"?G7Y 5 chJ=N%u(v֍6~782R09єհxcd%v^\dBspVejUкZ
.@KkmKr=
@:kDt"q.4")Ra`\d=EU]!*Oq/Ql:y-$)5^>z;u]! ǆgLr^s2J|.$`;JRκK5 ٨g*rdCǦ /w~CDbsȣ}ԬBXf`ǟs4vɡ=T%7=ywnl4s@L_gErjᭊe}g]=&۸ 4d٦^7j~౬_D_QuKᮔ1za)zs'\~G{ڭhbhb$MXڮ=5c 6^U]KQ@lc?M 	t;I<3{:yt	EqNjls7l||DEJ~%R_}[pE%/UwcU{NtCzN$@`[W܋;匞S;5,'Io=;ю]c~
EH֗~~մ:}#jReaq4j`@\ޕ8Vq<N̞fw)`,yxp>Jpn]Kq<aG5J?Cw"rW+qtAs˱$Nv)*'9=8gUܨC_̽`)pT([J_%ba4 |9!+ϯ۞/ 	Y;< g7_jPP8&wUR$]FhFw3"EtQC_M&d\>m9y|
^G6b8'U^ fw	
JӃ_\V(*9?,g}%:%)8.k~+|8푾犃\amjrK
6Bwe<wkPߒz)8B<v[_3T[vqD~`Lg;.CvvV˗q3qtZX꒸uPX6ct&')wĖD
Q:+V4X(Qؖ\-V@PJ8'ۧK*̬Gd9{k'M|&'tEWV=얍s 6Ea5'.GݍgS]^	G5
H]
(%իzG϶^?Zg0(1Y]vxṅYTXGew XaEY3(8ɫ߯kDXq?jp ,y~}U?kH.mgț䕹؏midڍB>^Eq+OJw,~`IVTͪzJȭg9zmV:߀MFz?I+dҪ{0(. ʒ՗ݭN]C?r-4L^::Aq@~g)<O輛&*[2ݩtbBRW"޴xb1: ?Xj+'0
Qst%҉	1i
/m%ex`y.Ueߦp>Km0:0+t]j%Q_5o{2ѿʄ0-(N偲7"(@}O<_
;\\3.#
hy-zr8uX_lc=<U.j5Sut'h
.,*`ϑ BcsF
KUF'>Psq඗L_J4|<zɛS{GPy[- Jՠn]\:bK% 1SC>U).F1n:ɇhV5 GZ.|2~|~-̸ߔC̬rY)n~Sn}ȩ|7U|Qw
bJF%ُ;v.iz?@U@GMUVQ>"d ;XBл8ѕcCv8*<TP@ .(K>EG5+ǂJJ@4'Eqd@zJLVe6|*`\!eP9ջKRr`;q*:T@QZοSv8hNAaqNS}`gNQ^g!CgaX8A'4w"FBymTa/;r}!#7vq,Kdã9'iuYQ?'ɘmHI6K槸[%tdq"8F87O
=_ )Oıt >[Ԍr͏};9F{P+KRer!Iֺ]R$T^7IIEFzs33LԾZZxbX
ǎ9?]1d|'ۿaܜs-sὗ"kdGd9{ڲ"PV]p`<Ӫh<ic/u-EO3rP>L$H>+'*#lt?`AO*%>|[
VC&\SƤP]]p
K; 5=Ϫ[$MX/t)95nݒMI~36NjX&K_";U=XʑGy"Tt:`|o_V#J=v[%/kPY9xV< bŚ$ JoN%[Mk8kw/-ಫAEQܧtU_=MX>
pd[\Hwzj]&Bmsy:	!GN摈<|Ҡ
H,' ^1p蘻9
֙J+Ekkⴢ@Q+O		=uUe=W+'7,y5Uv:=s܀Gģ|pB}99kݙotYsf1L)O.eSIN~+p?Cg3`1hm١	ÑDU~3f8JnB$K!6yDdK+YI6mIfvq׏@gJ2쾣>8"e9U(jpU!ic_0d,WqE!$ŷv~jϑ.Uz6%qSBZum>=Io[4loFm)|Au6do^Ң<dym+n
8jJ_R)xݱ+,k柗da_oX=l%ViOF!ًY~ʂz%1-)HHճ&6yD2xD[kʋH*OW`K=z^MS_@o뎽4SϵHа\+-\D&f
A8נك蚤ҷ/;-}#~SqGJw?*[J^O	i*0	:-/ż`[Ažْ'm$䇯KFU]BQ*J%bo\Li9oݭWiw-Q9?3?bOaWI~MN W";E[!!CiD$uٮPOf5[]	VcWi5}A H ޏ.f?O9L횜je @yѫn)ZݨqhK9q[42T<^E`Zg -z=-(YA+  ݆>Fp_.⼧jt>+OqiT3z1p׏3nIpw:s_~k՗@᭮#PBaJj 0']a: C~brC=J3x-0sëIE[\ќ`WHͅ#9~ qYSzA{{b>눩+lM1Uҭޙe^Grޙb H`E\G9zQA~j	*JHGj~<AS3 `#ŋ0Dtm-  Ϝgh BJ-I%}W>ښTO]g!:F)k][''3;Z_'^TYyVSҹUd- K$b8Њ%ܵk;mR+_yKkV"xjy(`D<c-Y᧹m	z"*lV|}Rږ.uHŰ	wrWSS_Nʐ
O~[-C/vVyzֺl虻RX}  LFnp%;Pe쭗1|@Iצ\kGG)CsyڈizwߏWvncHtZ8{_0R(7kAt%=I|_7_yEf,xXf^7)36"GQ-(`yזBAP*/|<&}5]T]S#S6
WLҶ=H0}1r
GP mA
IUsi
@&u<P5L6:~?VxJ,kU; f9#!j~ ZM{KT{u"+7RZty0ߤ	jm4"]'
qz5Clxϧ~^ʔBh~Bۅ*-EPZHriIǭ
'h^%	.X4noAfPazrِZv32WI١HBqtKO}DӢf"/OG܅86Dܰz#γ&?jUx{2BqT,xj2|/ J}<Swy{q1]|9zZi\yŀ
%'Ցfnzlҥ;PtBW(k⾐՚NgI	Ӫho[.⨺_ߗeG)jzinGBN
<X}Uk`;8<mֱQ'RϑT惱έTvi^U5?3c{
cYNc:.ΤW+<gȍ
;Kr̴s+ik8jTͱ9R,T{.Pm
L?
[$/rdP15XXxQRQqmrYy*R߭_ֿә>IH4(\T`UhnM90qVs剳#[ј{bwsw>H5\.:R#JzsbCfl`-Cl.h
|oJc\dVRjqZkY]5Qctx=~,5ݥX^ݤ)?o壔}`6`W[+.:b٬b&#u(<XG#QbCƹ QMUUS+ ͳDKN8Q0uoeY	몁W<jkoR-FP|(M^EM:7w%xBXϥ|IVMC, vnwQV7QcN<LeSS\ɥ44^"QK=}ؤ:fzި}{mk#G<K4.Y[rf@~kǰ8݈uT Bϖgm^[[ӅUd
͡q	wIV	J!E	ER+c3^WMhB&3vkg6uQNKp
f|y"Sn&  xp.X~OWfP;N*1 }8Jˏe+l2	G#7b_Ǽm^k}da\V]cîJ{>*ڒZT&S%绣yGḓԒcC"aױ
$ˏ[]dU7o[	ڿa^lk1pQenpyE(*a/g+vg>FטAæ*vQ#k?gGT] mggwT`9AoKzQ79ڎ-nN]YޗO2~].mp0Ѹ_f~),l^#o@rN؏uNuCqgnp檿 5zEs(:s}y#S8 bm#4t+ܔ`f)k5Mhϯ-	~#8TuânNM_bwg@uI;ήe6`
/{♁;ڟϒf0fUjḊz׉ɐ K'u㽙脫'ϛI,F?v:jέi2aTtJ'Y4B	Ru~{{gr[jO'?ԥhҿI @%ǿ;oE[Ay/ql1-W/PC
D&QNۦ86w1;I|BՒT]+y폩K0^dz/ݷrso,/poLdH\	R^wER譂$=njd5\,8"ZR2LX7u{0J\wv\}pO RulāYJ
8bQ?V]nQ*E;.Tg Bw/&_׆{U'PU0X5[qOk<)z-Tnj~OOIcAHK`ב
)xt.u/ .ɚNz媈}ףGKe£FzxX#xrvnLIAJRcU TwX5/7PW}zg(
%^7[⌶u-__JLSp%
n@çvgrw{hV	V Q*ģ'wW	Z[rWarhWvQ`?*8E9)]W$?ҧ)'<Y	pxJ[_6aO0BϣlX	h/
W{
x}K*1Øt)]b(.ygN.aCf`<Km_o'Oɡ$Ec O{St7:Z0p$:mprtPPlJPoi=3V$4`d}!;
I3=F!Lym
V?wy䇎3O~
* Ƃ_y
(ܯ/
  
I~͖ʎ}%#ݤF`'P*y<|5Yl@GPUnw'B5 ~T'<E\a
Bmձhڝ=9p_s?侊s}QULIa#O 4 ք*5L~%]8XŭMQ}tinK&d+Mvz}  OZ{T_u9^W_<UZUn@=ď9l|B뿫?_d&ld!ib9F
@[rg
y(Ҽ<`uc.hQ$64e+>~kyUç1$PDߚR
	 kz
"Gcn$>jy"Ob]u0/)B絬D9$j^)y0M/(ۙrJ&=(S c#6rIQBǻ"_ EO[h x:v
4. -D]/BLU{ sL.LУ7yx\
Du(G%F2s]QͫUSL2':_]*~mv/
+8=|>@Yy]X./ڃ@}-Q^/Mu
1Oi^٭b0'+t+L`{
ԱŠZx{,t vxt78q{$9d7{ޥT[xQ]\t<:KU)36%yU^/`}Cu>m}Iv.e3XkCF`kMvKٵ>{I4|vA7UK_Kj@NzѸ@X5=ixKCu;'ן7^R*vZ4( xl8M{ylƤƙcT~TrPu0B}R
Ɍ̧/x9}D'(AA6ǀ5~ o|N3XK4C.hÓ	ܳQ5Ѝ>*uG7URL{]lkJpd+"0ͮ8OڳǄ(_'SSt
kyMˉR	Sqp9J'x5L[+djQ_}].gc{_D?/uNxqmQFkx6BXN95-N,
Vq
݇3Z6\6jrK,$0jr^|Rq]r*2*ZkIŀfeWK!!&̵*y~Q<'&P=jLsk[Iud,a>BD#'N.auE=8u ik7"6kmSAq-YI} Qն(ϔ븈=ߦ@JX,axz78Pg^`|?aa\ssʜ:ͩAQNqxhF "yZGKvo$ifPm;K`	G;1P8
 sRiSh|8u,UnH{wgjo_&RTX#@G15G^9AD
Y!Pǎ[[`~yh(nEƻm'OZ$ȖBdV檗b"*{.5;[aY68@BcQh4%mtZ9{5TT^PHU}o"SΧ:xv2}--p/Z8["O|.~ yvr[<~{ʗvSݔxN'V8=*ܫT8Cuftkg>Z|VOօYgeMD~ޏfjpj3SN
u.~@$MaE?)/sH?/sN)7J>XlA]qMCՋ@"SUMǏtZ]65wDq(]|lUI7;9?n95EL27m$[^V4v!
`<W7V1yĆs`YoB)@?˛.
P<|ɿ͛Ač|@T0T5sp+rN=GV z#	!:T[<$.@cYApP+~J$(:u~d͉cFɝyHrr4D-R?^ǥ]mEg|>e^=M<gØ2@Ҕev,kf[2!Y].û?/^'É;GVd5WP"O[6ǇK8ڕ5eU	̜E}#|eay^yLL+pM6yk1-	"֥)^mqBLrZz4ή*>}Iq,=bÆBZ%=S0rf41_5q{eL|H7=mh;_qb=6/PN3,|u=]PNE{Vr?|K|^~Ɂjn]w=1iz
>,&K@(pS|X<ApKЛh%.]%ii<$*>x'cx.K{ᗷ*/x_̺yb$X"c%,j#V~6Af09~',8	7劬ے>3PY\H7rLaŘ42?
@v·@[*0
镲RV&zTMq4npwTӹ
uEسCU&_6f(kh'EU6Z<dI<ykۇIT?R	]S7cDj߶~ ԿCA6Ulpoww~c"\/7D_×<{:)mWu
F,`D|soT?bM7|ҤK*8CD绋{`Y϶uKNXe}ؕQEsafrHϱk Π_5R<UݴrZCP{ԡ:i)I1^WSqroΏwyxqUuD2A`PEnM
1O9nJaxWffA(c4xGg)p8a}l?r Z\2%YT<+
q|M.$@\E T.XBUvЯlNJƉjvdlso8[JWoVݤxNtfg+cBt=(I&.:(4wf	T&~W~Vaݴ,>8auvӼ΋A\	Na9u(@Y^+*8+\SEmN` qz2[B&~2e&Vg']	}n^G_eH4Xpp	z/x [ɯ|~s`}dU|8
-ݜuxUy*;9~۞Y\۪D:rqɃ]o6O4}9u<"ʴ+X5+T7g3e~/^LGq'Wp	](鳓&%(GŹW\
l]@q=ָ^Ǧ"9czĵd\B]Q!*~-\Mlckgƍ6b3.
C(mwv7BmVr?ştεTHGEsC%;x,{ b= |`ݻPD(LEĔo͡uz`Wd^b<"G05&4ѣ{`ÉG*.r/nnRE皪t ?ƿXA4PuKv[
	C󶮵^}0fNi%m4_[Fg=^"#9UʵԂ=!۩Qh#lLVcY	R,*[Ǭl>qb+CgMQ3P`:K3-ZP=cCC
gx~-%8ؗlm'U35U͑U!%\hpMh
hTG|+.V6u	b6Nz<hɽ60$`0Hs9hA"]ӖruSNPBJ<:LfWwW=§`=s0X3\Z0{OC3j!h3jEx}ߥupZr` .QB9A\Q|w!x2/
ʈj8_x|BtJT2L>QAOMRT:d6|RPw%BgjsoT7	Y'<@W7-5W
`AE4E>OtQ!-	GdnOP+&2gLx!RT5@
	9,ǘ^pNwsAP+wgd$rh
i'MNm֣t$(TA,\N'lܩ$QsqG^$rl*ORۥ{%
PәV}EYBYiΟtއx`[!."(_k}dS'y%.k6ƿ@[ObKt*gZUH'MB"4xo
Sҩ%KNQѮVhN`-7A{1Z1 @~OVqҷf>C>w	;AdFlxW^jLS?5?8ڝ|
Xn
$IydXmѥ<n-CRyan0.ka_%q|#.fX~CCAW-ui܉ؒQjDYK^WK#;z6}e5
b+L5x$5 b$@	a)9Cnca"Ǩ_]GX|V*n.6nZ|sڻ͈^@~@u*/aD |{')]m9h!2>I$Dօ	Ŀ~=֕, Y7T$Jc(WUk@-O ֩ <V}KsMe4Xk iݕo*fd5M~I"l
I@+}s[մ:{<N,4X\| Ymlͧ.*&ϡ	 [j};]ґzz{8nC^>^'ƙj6<!y riT8f L'ڪn?@E7ԒUy=kœQW3[	?V7{󉽜UzG`]nT	 `ӉZF_6%k|M
S/+w֟hg'N@&8
m=7{a)SG	.kY&t4!_fS9r$
/*
,	J.D?i?+d=vע.<WCb(
xg[VmA?'vyzwzGHm,8ۢ(28"ZFԎY
`gsQ9WkoR?Pΐ4.8UczU.eA"y撢{u_*5d9}Cr
DߧY4Omo7`ڤ~yDR~~X֖ K[3ۭ"A2&cOeby<AX MpxNn&mVH&+RU/Ugh
@_i2
/x(5灌ĸzV1wv9 70]ITfڊ?t4hm9}T3im5~\"(EywG/j=	_[B}nv@}$:2ĴmŁ;BҶ)[*iyy~S0Mp	F'2\ZlV̒S7ns J9.E` ~h]SY"*M-lK/X!	1y<.Ou]ezΝ
Vfc\ɼ4d3gpmqN\W)M6
wWDLܼcv_>p_H]_f8<9(,
>D#SD
zHDιk!J
 rد?)R:e7$q^|mƨG=Ӭ^׭Yh)vzW9em4}բV+:a:I/v<M5q-IiaW!1G	w%el<ͥȉNg2塞]]$x`AR:;
W< {9 [v$iQS/#
GwLA+)~qhk0T~۪۾%&!"13ۉF^[/>qw"9re(j{ ']%bB+GI`]fZWԼ
ipsIu@.@+#e25Hv6cV]0\p%'Hߠ9'`Y:P%tPY_%*<qSu"yZLH*JP-$8*U5R,HGm* lh|iΪscb?$FBA[]s۲VMl5DSzP7g/r<ǔѥ	>/!iڜ.͚63m
4ow_@T1QTbHqУ8+0#!.h=ܔ"E?{ʱ6zPLGXΪMr+QGKm4oIzfIn
S.v.0W`CjӋZBUЈ%%Ox6
op2cP>c>\(k|NlLpwMcu^r|9b#-5[uyםp[bT^rVtAix(Glp|]ѹ	I4܀,$gIxgW!.p2e`ו^9& \P cg~ }O	XP7*@tnq޾UḪcE(\+\îrcQ*]X41+z.pӕ s1oZr&dwz7\P*U*ɞlWCPwDh»<踩nٙS*M=Ja<Ӄίi[`yب"; {SUN;a
ّ(gtx˦{uu=˹1k41qA/L" ޻Mg96@ҍq9Ţ>7I	*.42"cg?G;W쎹{úV72ǨrO(q3P7}\J@UPgzo<W#KuZgS"]ݯ{jIV@6Pf5ƣC
<khH%hp$ WWCUe9 ΰ(9QTVpLSRRO`W#׬2vd'$g c zwG4Ǿ;:Б撈~:lBLv=ɜ1|!ʯL(09ZT TT;vJ[SkKq"GnExj(khJPKܭvӀxV<>w<+OLVm7ki'3y奁i6#@@9kUDon&mM3{1%iް*S>e>F6r{#n񐉬zrs?|:¾Ϗc xݵQ-Rn"pwy63wq骼]u).`H鳖F
APÍՆXHDP-Q%
-i>==r+iI;
wI4:1_~>x)(+љ*N6rTUz-q@˞
vugWGOBlNR-
Jp;.#;|JSҩS
i%e!f1U#rh+2<_EtBqJ,x=)){o/9;iHcᗈzd(1.
5h<lYV=;I7PA#ZK:`~;G[F}rpX|md%hmnjrOU*'(96FHr֑t=7wÁdJ@U[kf	IۭEe,
ʚ
v­
\|Hgr'- ޖƨR&(^tc:ܠ\\7z	nQ}/mԵC^ʔ#9Y=\7l PW:f %OO%CĄunF<vWeǵE`qR_K@qr'tK)P8>KI6x i]&?P^7iJjB ~Pcy (	v^9۩Kʙ:P?ֶ'Q':NEOoE#k蘃:0<VJ4suSާkIסx-V	^0-j[MT@-Z
>j}zþCtYk"/{$N{^NG#CǹٛO́Sbڗ'ot<wӹiAVK?v}_`&rHw\Jh}}uPL_5#tOk?+ p=rJ5TkjӜ.gE\\iSpk&_S_PZKѻ
hBuuW]8
d"6 ַJP̛˔L0_鸺
UXG= zu6ȁi{|@Id\tnI53]U͗p>SgPqbj9-ުuRAU"2 D߼=s}a^<Tm"}g},|\L-hяXz{j<[>Z58\tt9(T3hY;E?8
A ^rlS/go_7NO 2GCݿ%pȮ\j{aA'qUgYGԡ:>No
2-1sjGz_vsv3>:g	K:%JG]P@Qs>Kzv/4'NxU(pzy)u9VdS=NծA5XL+r0Pk{,t_5|!gQ
C.Oϑ:~Dv0U7` ?<g>E}gƤ~[|ޛ8c7Q[CݞSL[^ϗm;˳Av0^gM$؟5PMwY^(nΩ@&G=x;ǁU]؀KTSMυܛuTwaV^onst71K٬ho#DJ-:~iGĂupW"(*IQ;BiQl=}'{<JyKVg2|^lqo7r[KZ</7sCOP{!jM*HqYOs*;ئ%=c/WąLυLˬ$[@W{'LZbiJx:?ciZWSVh>4κht3;~cF\v`$Jrpb[W\("jYA<*(ULY GO: (M/U[b\%"쎚k, V_N>r{8\I
ӹX*K4>bJ4czFYp+v92u@ZMoZJ~w]gvݧŒI!1N?#m"_]#SKC'9326h~7LyLΡ
lS/jA. *4
Q6^P S oބ39~6oG 	fw55t#GP]
Ғ'-=h:d~YU}`xMqu"kun/
|UϠCn -%LZCo3SxNfBxoiЇYlͳՈZ[H96qݓ&-l1M8Ӿr^ g4Rϑ{ha9t 7l4O(B$젠H2=tX"<?ۧ%VJu2QҷIOM<roUMЏo<֥ͧe*MnSy;R536\Cql
0ieЯ&Pa>%#iqHUf,,ZE壿Jxb`Hq֚8 f,4ml9mMES__I[MT[!Ŕ8`9}t_:cJ׮v)4l~I.p|TQx^Ֆ)]`% ýh(JAAFʽ)-f&aNz ߮.*ِW-Px)&$/@T	EqǞId~aZzW{Vʏ\]RjP}'M斝!KY0ʩ``Ɋo!VZx:~رI|@V :
rS2	ASF|i;@z=x")aBڂjϼYXUt$W3m՘ R_.Z.]/.-i?,ߜ?X3GSRiGvfdt[dڥ~Y@
2>PᗕW/5PBEjy.MO_V=br5rv
a*.sbuҵ1V^Ne+lJºU6_u㖁{J40yr_bVBJsS/+	dvIgJXF;5W镉 z3ꂶd	8rr#j@poxgOyUZ-*!$aVwU
g_;t^Ck˯k;kL
dgx"IFE/:_9.hD
t5<tȁw}O3	xcN'ث*ե1T`=}Wgv3݁p8n5)
ґ뤰l pq,̱ `,Vo&[Wbsԋ.AFjg%+ 'I	ʫCy, Ty-(M<%Kn=N<\YQ^0&QAlDTt.P.1\Q_44;T|][J`묘M H^j
F׏ ,1I_+hzv:W>c'^zH 5[_@Sbx6XW'>*^5םk-0
ĩq1 So̡ݖn#Xm'?=Y~4w7mP38.?18+4
TlPэU-`R2O~HcD?V-tDHPi>0tǑ0Ӿ4GPge}CW(Cn{bSZ{cK9O(͟Ot# KҸ#vRRM:.osm@:J/D߯ڣ8@/[q~BnGpɻڴyUmt2Uu]ӣ5_N!9*Br/%-zeq1lZʵ[-g΃}.eWTS$J0'O>´JJ ǫ'Wojj/dḺvo>jIexvDzZ[?)(J,^C[w2({EaԐd0u[Gm|Tz[=eH]ӂI_wִCyƊ=Dg2isrQ-:N6pX'i=.n$7p:2x#Bӕh=7$'Yagޝd䜬Km:,W3 (BmGKDn.lĬ*$nQ(Yv5QXSr[z(~9-٠zWvQ&./?ba\ENXs
RViJms||x}ĂxD}[ubO/:j`1
ucu;o[/@[G=!QJ
2B4	oԩ=ѽbxj1'BTVt: gq}sAzS9x(aoU'㼗Jק(gkdqR%|>
&<(R{@7zAX$ىn;t]	|ܷBLj˩sY|4xKdk=`"#xfjP@ڭkO_2Y
A<ws<'G?Z_ddsl>cd2T굜Հn"L~/J\w9%]Y󼠩<U>3F0q	'&+RJBݖ [#Y'*"lA(TpERdL 	,/D\W
A<NXR:a3Sn{uCJTnvP.kJ8â^C؂-nR tbm,DweiLͦi`xVCoSapr6)RBcՋ{amr*;CZ/RRᎦ\hMQ9(Z(
?FQjUlho@|2_xn,>mkx<ikf3iZyatLokJծVl^g \ꓳvZ Ġub H<	v8E q-h ʤ5;ecKuqm_I8W蝓},-շ}=<SX%VǫZϰ
avÝ
T+Eun}(Z \~V$ݸή^B`(gAH .I_נ_߲Bߠ
U۴P`
W2_	Y/`kږ܁z+ߎ%
zUun]a]ɗhUu:m
v@%=_Q%?863D*Z(ݒs+̣lo/0;л.NRkA,ꉤWv}pK~zhApӻu:xXGO;\mظIV~LX߃ŁdZ:îʥ׭.;VEC.ShAyAY{ B~"
Cǝ
Ks[$'NSS:[Gw7Dr1sų<Zqݦ"!=+GM;kL=nàyD~ ȭ耾
[*guh+sﲵ<ܼ/[NUiy1jV[
B[K3ӫN
OaI'Ѳ4gQAٮU="<*BewQ֞_IHAػ|hjʓf¦Ve+Ə=ME촋=c lȟʽ2\ֱ½ա̃mۯ/qu*
\JGj4 *@>[@>hWYLDߖݲQ;z'i y%-zWj;4u@6f۵*UhK4^>T!ԃP4nTۥ~=zjYW΋G)R+>)ɦ*1"BzY_#t}Z)}WN9%C+4	m>ۧx)>j.5mj6\JeU@!p$ϭ7Y:JAӋ{oXF79FHy|iI%gdm9cUvPx
<] q"yI!0R$EI};9$WSTQi{X -mMw46+ESNZlV 1yq0Z!m̦Rzqi˪]Sq5XJ, I'ԫG_ [qǚR.U%8hz;[+')MLwq":G]!>L.G-*X :OPS4A(J(<D!7
@)u>^j5)	ጹǭp<_%镮=o9ŕ>0?^jk&Њ'uw<"Kf)2,B	TtuB_0B9}8sWʿ`I{-J>A^4,S;F ][|X!ɍboBgڸ8H8| yԈsI)(%Zgf
uCWյu~jו
I`
s8ܰɵv5Q.i{ruR%;,UIUy#;g.T
ܝ6+>as.#Z9gQAuܒgxlU'I)m
27JdkPX OV480S 1-Ue9gd{bƞs)tzad8Dpk)\j)W[;+9~7v\xXMz0@ħȠN43̓+r>(մ'냮PtGW uTW5B_vT@+}+(I9X5Oi,\2@{).s_u:@@0z+*Uق,wR D3c$c)  ñQ}Ɂ-m?᲼f
.gs7LM5a4v<ԛ$TLc%Rg8mm~[3͠5
1(rAOic;lnC)̷4!Nʘq9[`X3+R++15r6 ;wt*ӊds!1񢾇Kz/eLy
-i+%IiqquMNx$WϦj|]'ONQ%jpmBxg_S
_jr7KRy%e$}s!o/4&[57Gsnpp+Ӝi[ҷa =j5vk#~Q*eH3@.ޮ<+jAxUDtfi('_mבu+zm<$Xk羾A
n
m~ᵠQx>q@~<pQd	/`n7e;OOYݏx<BJ-럪%/}xJ=C*K`@Gn+,?︳J(00l2g;V7v>*L^
uuBرZwTd{p+AeW/:
x,4)UI^y_0/<r0nhi\()XՖ9kgE]`ba|@]s錴m 옋q|щl~rn>ɵp|>ǂW
|C/}P"am	Е,YuWΠ^; ϝĩd2#YRW;<d.6y*&W׃\cGW-5ip+9Kz왖]]4h=i1=KvtJA@[`Heh,J
9(W׿U7Fșg'qjno炳c'6.]B(
	.?g|*a{:a$]ã&%595M2	9-
imŻ#cusƈ1,9rZGG Ymaf@<;V~)j&(pj	=fPU0p9dSZTBws,O#vLQCl+J	U\ɳVVZ	β2ԥy)?3F6?r6q+{@%<1)gſȯ ~-Mj9Zn٣ xgJ=DKu	zcp9\JxR:F_!ʔ=Z v_NRbk;iwk^d$TٛodwWG~D ~bd@Xwl~..ko,Rl۠V{
w5g=@:P?6Z_/(*<Z7*dPrmF,+QkQZbTWӮS7Ùsk.w^oDҦjƟz9SiV1VPǍqX(Sezk|˅	f|0GܧfV*C&&mX<r>5 SH>dwHj]./dȕ3kѳI&gR F JGj/^Fv]/wPg]iE@<ԼzlzHf0<Iב nBz.D`khk$pRϯD3Ot0 Eo=| lCA2pS¼U9 fYTKeG˘*D<+ٕ%=Տ,yґ|ww ^PgTcMCmU9(с<
~<	GTXR5hAi)=㦾>c#OS\CҫM7.WeJQ>.0h]Dv4жa5r7ݵT2o N≧cg*vpR #m3(q}y<%el*4KpoOoitgMsy}$ ɣjb.@cҕHI;RJwQC2oEE@s
5p4>cuL'
VK9t"_oU@yW$#F%#ɍkӨ.ŷHXѧKq'C]Bn>):[SO'?[I0r6,~*2N/8] 9Jܻ:,N-"?(mF)4Uy!?Ǚ\T]ʞ8Ȅ<?5k'[V9-ܼڶKѸ(P{J7n ߎGBW*gE\7U%9$
x$`K{]i>s"3H@UD"Et4Wr"S 81"xx{PmkgϮf#k.θ+jֽ%hL! ;*gz/} AY%
k2;BBpa=9m{/8AMAMsn
Fyu#\n7+<\j$:\Z8MGg>`}t,qS2Z֯_SeDK|i(mǂյeUežU.YtJtD
jsHZ	.2zG q;Zkuvu[Ax:+pS	yw,*n±x:ތs~!բ}M:Eo&	_Ȫ:ĭvFRG_ָF=҉JTQ=GSTe"],/o.X*
l::z$NL"prZ/e1O^IlKWOWEVLm93i8v+USz&z}^-⸕N@h|-yK[n 5Ǫ&fET izA7,n{+
=WD{Ӗ#@fPн#M- ]041+v xeIldP|ߘKrŔ9Ǚ"}mBK(P^tgLaDkan T-P[05yAW*>JA$)Aƞ\N\ŉB<ٟ>}T'~w+\v $fu)\yW|E%Vq;R]̜vQ
q1wc!Zh35k<k	/LISg롴I˫shW?ȉS.>?-9X1L(v:3S Uw	
6.Q ^%UdARknY=i*wc FngD} dQD:	rïU$͢ΙxAwQ&9MOR!:7G ݿ.涖uvkC|ʇ( F86!g\eo@ <SpP9?!pJ{X:y+Iֲ6߬.,MXNHȷ,dqI;.Lh'{M3J;5@v<?$hӵdɧ@Ⱥ8P>OB<dnBwڗ#g.⩾@7$:#TB6ð.5[ Knur?j.G@f(WILI$N[Ppj#Hv;(_er {1<yfQ;)kJ<	z%#@~j>c[gM6zvЙmKc$İTU\x]ϯnZ΀mGFc#"nN9)?Yi
 /pM+i=c+BiZ6mM=`~ wXHi:"ATp8a}M?`!3)U/,[PרxR39a'g<&
թ<<u#'9**1ͨUAa<uSC
d8
zSЁ2;FTG]d]='RdxHW}RI)AɛqmVsぁNJ#id٪#J!] dƐwCu˪ծr	}~	˴ I}PYӡɜ~A9kI[¯$ZywUn \涁C:")SԬe0;ʺ5]!4Ȗ"ʟmK9|*+di@ xt̅j s˔<|&=BvL4QChܛ}j^CE_4K]P,=!(۶cRe\IM?ms	tOG!仝Jrw?N7
e
ՄOilĪgb&#q+Vv`Pt逸ޙ^u%ar] as͆)dXꎣhɴlU}TYz9J!a`-P5lsrNa~qjMVO:gBp]`Hr^pΛnAk^P7et@	Dj |i\EII GEjH}_npxSudH5cJC:LNظR/FV/(}˵%)B{ أ#796Qls
o\3{	;V9Qld5fpQV'&+׫;:{F\L<e(ީpK?n%V*UMo ŇwR]پx9ɢg,A4D%w8St8Cr*xՙ{?$Ufi҄~K)KSHI$ҎBKxf~jC9˯"E]~'Y|C^x8iNLk!Ι'e =?M@6cc
j1]\Tu`΍rZر]blA,izrE
Uïٝ}9\W]mK .pַJ^_}=кAT&83]w'f0GN6JiǕ؅s@'*Gw\|<T+-,-E\Oh-%fWk .fܦ(x]?֭VzGnHTC umiB%M0@ydg VE^gVXavm#Oh1EC'1P]/N=RDiɂVWY=#)	!Է
zsTTmʤ5k>d(-2R=AD>.W
SvIU_(Lb(`$ԐuEW9iUI2xڔ&䨮VS]?}JW)h' 0"B
N~XY5őP/@|JeZ)᠝qX1wV8/[:b.i@
|@\oZCiNS49^}sTY#g6Gfs+MP,[ioJ9o1`hrq舵[8z3;4;OyJ2f==rȬ T vхI%ƨ4'J_u' 49>U̸FzPpoAy]ܑua܀	<8eZ0ܚuMʳ	Л77,g6Ɠu
	Ӎ55M&xUc!Z>!ȩ5@@:ݤ;t
o)?EIyXNQCbS)~tÛ@qyI<q(R=XQcHEcb9@G90Q`wn`i{]x$/kճ͕yMD?Yl[zpnbbT_urk
V\~Nh^$'B}8CG[{J/nQM]'Ъ4+>V
Wh	̛$ydoUcpR촪9*+[&Yq`2}ŐD oo~EiɖԺ1n޿Zf@3t"nAW.\P 0Gè\aQ$$rEA>R8gC=Vwok)U
h7j(-A_8 P}z-ӻ'cIw3V)AZ9J6{/':V7ڋq˹B>QmJUvO&ͯ6S~K(ǩ<}`ΰA>W˳~}SkPtWO/ETU#w'4_6Y$Ǣ/K|(ܒCבݛv4?9}#41SvSߍUg@+]gnI;=WAN0$Ub0΍tTtXG>^`uffw|;nJv@~?s
ۤAsr}ޔnXݎy>zwijq\R
+#yKV2t)XI\ 󖵿CQL<w96?JE7{'$+FYwZ헽>{,pNIqx,-N[C'tZ<@r;FF~vརa	
O4R͋Se"Ac.p> pޣ<D&)nԵP_^DVfS֯-BIP
3ԮSoGiI^\GT:lP2rAZmt}3 X{4](CaDљvêBNjpj	+o&g,[O.:\KQ)	.ʙ|cdGBV
=:I$P+[ASo ajO p'+4T# 9OM瞎A5?kV]qhSZ\#	^$G9Ο&o2v;Nё
?{EN% ;E)_
iu,9H:30"y=opZNA8~FC辳<ȷ=:y~lf	 	EQح`8/m'"9D
j7'VW"yzK$&Gezفg-\_GKKd՘8F
wE{SOBJf]T){Á y~-
^Tn:;Z
ImJ<P06wWb8P
SRP^d
"3	XfPl
H+L~vRX'7EM\P'nWw%~:ԔT6q7c	:Ep](F&VpnguصT!4l HU14^/OT3A}V8ZS?Z
ú~:dt#	.`ܹSj=ptsՉRt5@(vqC>ѓ?	*MX;/p9.ER#OV^Nv zWڦe;̖L;4<AMJBWwJ{1ϭ,΢7N4M^C|[i	oˮk#浼@(9=Fj1v6:M{a/JBU	aHA^:'WlEA"n2PvN[!39ЎVJۀ|7?O_U;KWvo5's8uj
ۥ*I1C%H5%
*խ
}ͅ_t%vh{	։-o
jw^{!VEHtu4T7/BmiO֢+6;iǑp]_oqk3xvdu	P{@>C<daPr\N9$ZU.7~5j)ږsRjHU#=\[T_[`
;o>hv½a	Cum-o/w|ӨHIuY
nܢ>
EduS0~}׿z
*ejάҮAuh [d:ֳކ[b)_לۤywCyͦv}vwXC끓(]FMY28yBck84m?(qz<MZ|oK7dnUFV'GM35
֪j81^}
sVtt4wU^j
ESbS-=Ӭۻ(*pb;<MՁ88IWYPos9ZU 
Z7Gl>wVq=Ә[?ýơ񵚕 >6X|Ss X|٩2\J$NȻZm@JF!Az5p>$$g|U7K%
tWCQe)+z'[qA8!AG2aع+lPzv=ZpY=twrOg"嵅|~ã({
v_:Rg+r	NTͳ*['%jpn>2o"uue/:/
#WV2Wש[jv)_NyP7<99-9]Ց"FϾp<`T-I^
*
R"T\2̇ja@ӧHѸ1p%ٔwSzI)E 
nQvU_)4TWUiQJॎLp 8hD'E0:΁4[
U/kb824R %G=!ɬuzqPWlV;A.|fbGѭ;ͤ)4X[rv`C?m(ȺQqxj@r
 Wos]=ٷͦik^" tIͼ㯹b;EЦDWa
Wv~C#"g@3(fHĚ;\dd	O1+h䮱5esz][KSV[Wk*]>v
:qMQA?@z#U
1S$ҫAJ"yzQei
]oV@&%:;ڋuEߗsQ3,͍Bn/տw HĽrQ_R\ck}މrz#˺q)};V&GՎxs6Eaos:ޣY";ϼbj͘<XH'/
KL-bǊn
Tk
{U6-2#	$WvUP
xfPŶn.Kk:對ZF=zUpA\%@7llc顛T_vw.Ai64bm0$ FOB^^J~2`UU6Q 9ӿP-K8ͣ1uQAE!@r5Ewa.8Ԣմ2NaGq?^s83]N)A^ϱk̡('?sP8%5~m`x0dR[]ZI) k|>YL.nz&7dݳ.@s|$ Iک[5>Ԟ7<yKu
/\);+$dnM$	'ጭ\^_~[ɺG()mE^NC7a
@V
Y喠;4PP?=*.'sTGEEVn匚/Vn|:̣^YƬ)#2b5	nAsfzRYG5|hFD*@ZYݗ`{
{o6ߎe@;j&83JzS̑,ntkl<c:lL3SBƣ'#$ӣxԍ@W	J-t؎խ[:;;e5h+:R_öI<ϴ^L
ŴeT"1wj̰*+ws.5@ܮnK5?:h^ x9B1ۙ!f^lw%5"spO1U%hCW1N,Sz붧*Xd`3B]G[PS0薧dSG*Md*
ͯV.d߿¡c#jv+-8d]$$X㛒Fz,"@=JZO9= 3[r4+?٠4)[<1(^UߟK
^xv )|tʥ8rR$VF!p
{ᐮHI0h]Z	p|Og=+EgV'ñ̪#pTs3i:=yD/8&j;pyQ87n|pdբb.gUZ"65:ַK
}GX*[9Z&L;1
o_/&VY@}9Rb_!I:C{8 Ge++4pw
>Zi4پTUՃ,Qr੟y=0ӏ =NrQDQ.@))N#5t[@(·svw)
qQēVES7Vvɗѫ?Jd {ݖ5%vlw;Ay?[ަtzTт\O%8 zawvpˁǚáN2E ʎ7ꀱ,`wh3,#r^Pf7@g.wYvCQ&_
h/,ɣn5yj!PWM,XYvP~<ޜN%AʷS$$)8(`k{&]j5q̞r:k5|5r
NWvQ`4ΟξlVTsz@Z`{CE&W^3يLō5ճ
f;SwU)ZwGLul\k3P!ح/s3UP/1// #;qVZr(@ a0Gw1Xnj`IN$B@|&T=Id$9͌2aw ܣ`jpmDY)~N+;TG9n  C}Kx*FvQ.,]=;ަ(0GgBwIs,ydu׵RzQmL*DΎ'ᨨ 
'][[ى|U*,./aFG(ShnRuVbU"YU3H+F&ݮݤfPzaQn`a8*,m\[P
r	G¾azIGtLusm̃P,RJNL#wT-[!IK!RK"8[u*;&o"C!$o 8cОk2AE1l7ϼ>S篤!R|ȹGX;	l59Q$F   ztٵs_&"UMμ9yBb;KP/\SSN<{"PUժ{w. 4bKy43 #nV! 9ٚtZkQMb!Qp;_UBp3cg^jaӥsNL|}VU3ܽbZfW;$ɱ\
Zp|O@WfQ6ZM
9c:zlc*iV␺Ūeuh$*] = QI	!dܧ*M$Yݵ~+*teѾBy
Ft%Z]%AG^DyY$,qUQuޚn|}1ʭᢷQ-qFu!Z利駘O4I.2-OL
u	r߂ׁ<W:wӉ}g"voN:	TRm<u5*xVt#i=ةA?PWyo[ު"qngRiz|s .$@)sBYTZ;׻aZt[0QGWy8LlԌ`ݡ축insYbsM|ht<RB %Ƒw-ǲ?lVC0ק[X-ľ:ں ri:%$.Qx=jOE8BqOKtgehP3e^s+$Uv]X^J?8B:AJNuc58]ΠD~\W9סVtUjGSo(48ަFD}jvfHIk$H|*7Ls"*_t5i` d@1vǣN@>k}] TEU9N鬩p8SɁo]2#5l(J^;$yWok__-3'<GtH@5ӢR>u1U"tmCD2YZ1:M&vNG~X"[OrsVxoХz؅?@lگtUvBETn5pȮ0@O0\l})NU^Kj.	ϫ /Rpr
|YnîrU8Crp+xsq灳
gAthz-bsGn='´?6Q̟z1:ظ:M
1д./8j]6/!g[b|x]ϣ/4;5xY*;1Θ
Mq'?]M:_pJ:z $@:Y!Ax]c7ݶwt-XF+7OwG1;K)+CamPa-eH!+iCW+k4]_I(G]VϚ<	ΰ|D][#2~Q>֭\Jv
,81 q-<'j۴|PLKrϿՕx̗ޙ;h'}bTZ
ғ8}v@Z	.6ݮo#I>
*GoVHpGFH!UF<V\2ibb|IST00ܭrGbށIAa)enrnqu\BҭC$һ=܇ĻɷR=2D.egwI"tmHvl6B
"ߏ׫D2UM'ˍ1T>-;G!*j:7/Vڴ58ԓRd=2T'LPK.MPA=_nT~<7(F?>Wꫣq`thv" fsӤJec
?[:s`X!y?12Ϳ$VE)\θ."R]5Ǻ[]v]
)<"d^cRT2o*G
e<e{}$&
u`(vhK

*pKvAeK$tB#TʣPe0~ݸ
Z.|zӾ_=@Q"K
;K7
$=QLXN_o=ěe+@\+]<߹&_iט:Q	Nz
UgYwKȚlXNTtV֎+7l,YKHl>SHr
vU7WN7N>}܇$:kMu/J{zjW$ǁ2=C{㋟ȶ&8uiM0YճI[+]Gol-Wu)g(\(~A=d)(_+uv'}jEauᄠ_SvZY@ $_BsZ-\]h )&/n#րש1>O"׃0I70@9fN:kJq3$`_D?"F)uv]I@Y֎~_wz1>ÀGU?NjP܋74f6pjӹۼGW`!L!DrE~˧=|F3{b|Qq]Y*F~Զ19PC)dnd).=1(<9ڤc̬lg?ı
4]C
By/]y1N2ti;\`ld4	LS0O,*
'`rZtfYoeZNoQiAU}$8ݗ*uh@nNvݬ8A[4)2Z4'x-"l៹qoVv2!CrTTZO7+W#ai6VY8E{`l^ŝ~ZA"EsVjqs[%;yu;6gF҇,Ã}R
-N:N* > @&~Q)@nM50@qi0DCJpkēZG<φ];3w,A-*]}k ls3pVNVg6b7ٚy"mU]wtu"Ic |g>}cy܃1`8|
cmj~joK	˹Q\M|5oRb5th9膯0y
ـ\8A<A:+ƐN\&tu*baJx@j'-k}SƻԭHO;E0՟NA0ꡪ}u,/[#z;x*	IL)mjR\Ũrp8'`ނ}8"AQw'y"f zE_l-_״yS;
USw=7fW		8Yw"aQۃ5*)ag9)DYY%GH8I|P^ޙ)$zΜJ\,!*K |v&mx_NjDIr{yw_
Z+fX95[be8;'*&03mqXm ʺ4\5g{B/~9~1)xg{U?qn1s:ȼ*WmO9Ƽ0wrNpqW}i=%ƥ%l㽍f u]kt#܍IlѰEߌfV5`K#\ƚ'A4F>v:M	]';[I̮fHN
\SΞc	ڻ:0jᄻO
N&_L/SܮO7ԜQg y[2h(Xwđ EIO}6jjlT-uMc~(ԃjzĞhC/ @m)H-K8Bidν<6".XͲIvIAg$#@:dIuJaxɠ_;5VKTuF(P`'qY
ļY`(<	X<(ԣ_gbUJ:kw"U=z|ɥn~~K71)ukI;O4o	
)Y,W6i@,i$" 185p5Lugo;E}hoAŃ|	,oBV:ߊ67oP~"6$)EުRV73	{	3Ch`Nv)Jfw&,r(
 :\P*m38_8ܝ ׄޮFJ|}RI2Xg:%K(!َpms|>ʟd}Tքϸ;kKK'o,,_TiL6U3+ D|JYq=3hʰw䯗Bt	x|Qq(t,rL[΂_M<meNۡ勬	ĉh!j._r ޢlgvoUr  >B+Uڝ]7>XEy8+xq:[iu=T\Brc@o}V[]rƲٿY9V^g20jyfuug1eϔ ?GTTuN@v7<R[u/s8$6L
PN0]y~Kˊep dڢrKh>i?(XZ;̼TC%ǡޚ ("*7!5a匣g\H*ַ	
Mj{L[il):뀔D1;?~G9.}ނnr4qwbPDwO<
۵bk'@>tHo#=*4
Qh[@!Qi[=S
AуHq]4dx-3\*i[!6 2s{ysrז	I,Hr O9kic96cGmd\׎i0`Kh{#x2gA;wY .:F? #KNS؋
8B-JX#g*S.2
5:-wEi4݋Y]!nyCvFzuU[u.YGDT?^8|x]UMm0jʉJN +UL.Aq4
uWv
5AhAh{\VAPix8~sSak^!gnki1ʄlw@})Meߩ篣v\Ka7|9EۙT9ooBY1*+'rgŭ/Ugގku2_JSޟotzhU^]%a*7EV9/4V|٬V)+oMmz5`KG[ɎZawr3Rx;Eoe]q@鞽jčv&oNSno{/w;arui&T%M x9Eڈ]jn$)@*wqS)eSgB4~)Bee*gf9@U|{T	ZTޠ}\ fNK)&_$|;D=>m1]Ns4S EX<bˢ?"AbhgTf
8P
vHjn ҩ9e+a+ͥenͥ-'oZs֝Ԭwt[wqb/e룗jv͉&t5Œ@>7wi	9|F._OC.
?`f߮^g|qP<s$NwFJ; !6U'M D1:O>r&_Ԉ]+W]z$K~՞ߋ*/ >10\
 эSLҏ
(KfMڭT nXq#@^ !(T[t%AsZ-?&^+7WÙK.8{p\\vߜ1E6R>A%+8pztbK)$V;LO I;Ez{,Rރ'>oD
	$lS%hfxLSA^/qW/ѥq[܏jwUEՉ5tڃ<p87*},5X,*g%n:<u1.N$7wT+yH&_5MS<3-^YʊZ8(ɖȶgت3 <Y幟@zNqk^}	2:;qOCz\"CL
;j>_]US%g/2BKg#o=/YB4@G8c?U1Fݷu&Îu$%j~YQ%g۔;K4/<0azpX-zr$zSn8C刄YnN݃Gz(<k۩ @NvakKݐT3qKҍX6i9B8|V,[Jz[K]k/nR$dH,+ eOo]|댶<@8޹u-F&>ʅQ0Rs]GO)} 3?ǂ44媧әkgbVE,nqw*
<$|9E4ypwN&z^*/Q	?TtFQuߴZri*,'ixXA{J#AO/R;෎R&>`Ϳ<Ad{0*H{_Γ y! cÈ27΋$+^BTTv=	]~a'KuZ1ygD)겄
ZTzPtLeФ*W đU	K.q|BKrcU˭;serfV=Y+u5o4z*щ/Wɝ*,Eu@a}UwKB7 [yVkd8:&g(ߋ%dmD&y ^0;m__9o/٭m!M+7Z
4ggu
UWBRNoճ=4{qrjCeI,s#zfrQKBw<;ۤz;GW>6IEC1(f 6oСh G
ʯ͛_;, IH->[(6GXhKM8A0W?tn"ף^9:1o9thEX>-|OХ6"CY9zds]&~_ڧy/s+=	vXNb68"Þ39*ˤ[zK}myuCM8龶֑i_w@{\8򰶰`- z?ޭY3q
$%do^}<Ω`+AO/3=4k(ᆿ^O \蟉o +.ubvdc-gQ/@Ïz,^LBԂ.wSw'4co^_$r!AձIxJWJV:HOwNq'*5^IRTS<Z׍@=M|g5$eOå<0)Hq%hJ zm`C>?hhrWl"hb;[dhT'x5b[Z=Jl- w<<<-X4J{6Q1Z``ңfUCc"kd;.zHm:sDՅLRNSEF@"c"3	y<	@`W%q9|k3,lcerLwJ#<f/	Vnyң8ŏ/l騳x
6z.y*(FLZqX]{e(ٞG~p7Py8[v:#EO7gZN1ۊ5¸QhPKټǫSQ)Pn硶(I;
oJ
3V\Cb;@0 ;x84yCTOgkpۋ F P uЕg#FarG6']U@K]إ`눻ó8#$tX~Jql58E.3neEy2+_[N,;)e0njkc\8˱I
qb
$g^K*5vg9)mOqWqP綪*}cpSG/\0Qk2\&(]iZlGV`S3EG\j]O/aMc/D~Js)"ń0um|
叝[8-sIZhsaFKF6B0Su\[|K(FY,7o.~=IHGGqJ{opJ
ǜXR
k9-kQ1aTm\nP>GR5_VD8n!*Ǟv-Iצ+`_'\z?dsmã?-ʻidڠShgYr 
N7=R0Uj~\n'W_xb*dG#!;@8<Ҏ*Jf̝N)I&$ ;لN[ZUH}O.`<y@5n
wxSb}7x"+M<Zr6D M4!k$7cgVFc9T5	
i9@Pj}Sx2+LY]lx~eڅd OKutE"[)4Lv*~uWpHqfi
DP
(rS:!WW7@
[Olקkw`Gu
,%*ʮZOvNAAd@`Ij(MD+<HMB.t -XюGU] +d{X3ПK|Z~mU1ʛr׍e&~8Ż.E&C*h̒otuѸ(3UI'mt!8)U	hErࡀФsLړ_RQeٰ!/W5nn0'u8H*8㽳TፓoR;)]8/鰮$&ķ@Y\k%`6- ;^;'g[s6IO5[i`Bܵe8zD) _yT;g
(&x]ҟXbr={8RҐ0ĤIxNt7:I
}N YNܟ ⯿OiU(.= &7α\`9僵a(Ar@ٍ7KM
=ɓ푰G>Z.?GhovwѺu/MzqQ_=6xM^C,t)L:_68
trc7([wԼdﬨ~E߮>FI3}u%\̩crj!<&Cf;*t	P3t&	[ۂv8O
Fߏ{q.e^5xb/4TJ]bm2˫WRv=zS$)
K,p2ow`(XG5puz.&P"4Q )hvIÔ?v@c9"#GKV^@4syWb[pU%(EM
UNi0! z>wqFv#|־*.7/qEKZ8`kHWn>yIdH?(XQ 5rݚ"Ee*:.9Rn~ɠoe$iUW
,$Yx4}#q69\5kMʸ}&Oˑ~v$9!u>G
=~b|JD%~a8
f<Y>i5tIQ:c9Wnn;<WC^4o@3 sAGbkl/zTp,| 'Yy Ey5O)aFG-Gh@W!?q8E; ^\<#NIpk*%|.Jy]i4H:(tp-$mTD8_xƝ;kZ^>d0N;H!MѮ}$p U4g՜㕱nI;dN>j![߱f8a(1eb,TXrWt$!b=wG+f2tQEni q`&DNϑQWRp:\e"yO鴨G;ki+-!$7Fh`]&.
v(NpMϟaQ\JFɭp4={OrREk@,PKEfS\ C7p /mo+Hsؚ*\gy04iJ'&Ʊjؗ{euYPHggB38}-UtE}-mEc3։?=g0
BU1]WW?E15qIqӏ\bei4#ZLJD5m=7W}< H8zVT~v\ZYvNzCZ|x^#G\cFqD9~anrqˎ&o6EֻZ`I-	 qAyoNW0<]۴KO/x.S{fUc9~SVqu*4p
*;UJԳ+pm!D;}ɎdaNC BsI{
Q29 yG=F!|	[=!Xw@Żשe$}Uit#|Rh!eֿp`b2E
 XEqM]dn*ο0s_YQ[ǜQhخ%y
Oz7F@['g_r<9%Yv@wnn(\0ǅ88s8|\tKq. !l]R9w|R
IK'! \XI` ܗ$ztxu:: ~{p^4wg^ſBd	U()]x4$Pjw(F"z:"VTV!5+ypӔ-V̾0/H뙑_ ykz.Ԕbw
~[):wn<֙I1U|آPJB7%1*]:VZE)g_.5i#9&vtSNjw|,-	9oR8dI؇sc(UG|U:
hOT0~m<v\SvOvE5IAdt`GӍ%+y*sR   r5>7&ͥ=%3jkĬbPJn@#F٭'=%bG 
%+\hNjpC
@nڽ@qI.WmShu~O
fT z
		$Nci	 &\iCWsbN7yBWa|)w-;<?Ͱ SrxQ⪺k
/t* 
1uSW~C
qn{ˁ鱭)B|}uΥ<Ӕ5ӥ«ez~r\ՠyWD]׳k ~lB#:	D>U
EWn.R
 @t	*d442tuDCµڭϦoCc}A4 oNJֿ'!*sӒY-DI܃ExSTslȵGRKlC)~?D-}d;3aY˽]a{
7ak#]qc(Aa2A
Q́FPckጏ="}䔆* <Տւ|mx)~]zp&	g]>xdW{L~@͹17piӵMҲZrv9r@.k{z?NL!PϓvePY\<~BhǲXQND$@mį&؇K}|Ca$ ke=vyn׿$G*X8itF{ ϴ=K$_ҳMyI`GR2W
"z<B3\`k?a_k
(qއE8F%ߦ;~َD7yVdq~GpdW
*ܢk
*VZf!T=*"OWG3#t̩2wP LFcl÷ E">ԻTw?(2GD	G?bkx(byex(AZ?횕Asݢֵ8t`RPH&?nElډ5")^=$
K*SZ,snTsS
:9&Rs_Q_Ui8%ޔ`.Z<];SV54S-Krӏ|V6uzݓw2?)d'H/26@jM7mcm$g;̝T
/nC
P!~9_.B"-}'K@34hatt"OXV\ZW8ӯ*nG(Hw-u/{u..Wz*o3ƧKw+C8Y :Uy9\ rƋf[Ln4<ʫ!%UqhO#	3@=|@KXvaoSG*|7[epoۨ&ff~po7\2kϊE4SX_ҼR@Sr=_F}fZj&3XN}e{P@m85׮iL
M"~xPp-*vMj?7L@ϜsY`&s
p靀U3za}mr>]r\4 9T
Zp]{PMBTuhmp*XWPU~6yDKVK}N%ֵl|1e] 	.yf兽{,ُ΋ gJ`_)X 10z?KkS\alסW>3V:ɛP	QO?PMv/eu#L5==,q	B"wX ԯ6:EZP)_:}t܄%յg3_O:rb"OOW&.Ƈ9ǩM.pмZvf(@΢E(RXBnC2\Evi6}V?n`QX̗&	VYd`^6I֛>1wGX'~61TTq/EErKmT#k~AM i5LSzn_<s<n6|G@kYূ2x>DK>&c+v7GUO^ݺ>]v+Bfk[=Yq$0rM`!]m9Q'Bz4bg)-ޏr_g=|5I[6p̹{O>˴Bߧegө(5:ӬlUaD4D{V	g⾻+iW+
L'd	|*/NIșZmKP\g?yYy`Ij-O)۟wZ+:
+D	3	g-gj}bOL)oq<dBUiC*U{Eͣ٥oFG[/?Op+l7/5`AE.|	.]l\U>܍hǁȊ{8!A%)Cnzk\Ny.!G}o
Ib٬4U?]+rtÁNJڪwĪW2fMJOiJ.-=u:|{A%`ƝҪñ*65g%ƹ

o7#,1㳆w143j2MW6VєkA.?lM%!Z}M֪nX\M$Nߎ<{~j<m'8f[z鲷췶7ވWUi]~Z*S3Gޣer¸Nʥoq3q9jt߼vKH1쉎[y/Mo.uuMWhO)a!αuٞM]#qv8NN0U_]  W?s#pٖLm)T{wIK!僦To*qjKl?}Sec\wAR0V}RPPW0	V;2Ac@r"`MPrew̸>]܇E'6 -u?NٗO=XGNѣ>t8KV	aW
\{֓@E
b&Aݗ;8\DoAUє<
1MCˤҴc|ԣ+U}Na\?*#U6oT$sOcܲ$u#:!}'f,{پTR$A j9A8_lC@vptlEC8;XhοI̢^(9M~|:l-x _ ~É.Hg&-%u^x
X<)+la8w!EW\ jRHjTe(}s1ۇĦ$ջZEkylU!f;
eU[`* a'V|Xs#8&=Rf8hWo`;k?WV[נݯݎmˁ|Y7Wjg 6i=4
 )l2;=V"=8j;^`:,?e|uIE)iC˜0b*LwϟKZ]fl3?:Z|)H@GSX7"kKjިzsi:bP
UK)M,.#^[W*XN<'ڄv`N
񪪆1v
5`R q 

W'?8;v_
u&K-wOg4o{?Aĭ~^YfMUuЖMDq#L5y'	}psL_tުjgz5R4VyZ"HvT$'Ij]뗣t}}MkmZ.S)öZtcҪ'G)Vw[v<k`	sѭZrÛ|at9|7RRrw+^[QEH0e90~WWޜ(a9|<~ے|kHY[nWEH	@g5Z|a%g_f 1#0Ƀ'ֶ]0?;/0oQ4"9]m^O_*
jVaiDQ/}%`e[ϧ4GӰKUXe`?Ŷ$(߸BwMA-[I8v Nnն$Sדm5qD~´E/}RIPe- l[HTundOV (|-n[<~kftgBRZW<bT r4Oȱm\<A5es^
:NzJ<	V},`c\NU]-})%Bv ޺y?RRS>SrIvgCk˷%Z5!ūt* F=od1Š
;mM>x0.4˟Fߚbˠx,kTBk9ޤirҖ(c^xp\#Sc$c7%XOQpVZa'X: s	PSlzM*hb }l)|3Hݮ,U¼X\nwhMDaolg9bNl6J,J[ ,?=P̷@֣b0V-f6e`=BG^t8Exȓ6!66_Q>S ,HzQ|4T&#Od]!ATN!tvS8d:zn	ܴᶲa!#'\MM+Q.;oOQ)ԖJVm܁p-Σ~̗5DǦ[5C>mC9ϩz1;5&kxYU*:Ce؇l_wшH16Nj5LNFLa꺓e6Qz"ST_Vǳ:i{<6!ѽ! -qf_NMmN#g"+
5 Zkڡp&CfXZodkRw%Y@E$'Bk.(i	Za8Cb/zr
ҡJ&BJaXڷ%(n슇"cYƿ;6YU=m:
ZapΦj;t2vYm&l|XIE/d{wn	(9ũ78uj]
{\&Ǔ`'K?`8XQT+ 
6|jO;;6ЗL ZsZUj>ZNU	nѣXcH[!tkTNRc?U*CBtl:^FRҥGM\WOa[9[C);'ЬJ<II?%Bz{Io2=,צ9f=D^n|Vbþr4Ahy:qS4Dʗl0ԀjDw7=x?9bSIp{sLUٶyR/wtC
Zv`G'Qϋs( |loZ^G˝ iޠ^6==:hz8
zݯ2ϷL`A5Q#<TuB)l*zԓG?Q gVkq
rzovT rB2$u0٦td_QQyLY|ݰX]v,Qhc94댿:h0 Ei1^0<:wֵGER-6m3&01Ld{הn `?(T"t)KȹϊG/M|0onYX8sAF[жlPF\MF?Ȱց0]Sb\l!C	g(64/xE%3>]}712жZ$TCܵ+xXC#DqTŬCtꝇrwھuOZs뿛^^.h{	*(=]'bpR*\=u~&luM	7G?EFm\]zKHnvdֈ^OT|95	Hf[r9C?X%7vp6<q#v?pZvY %ްW]v,AV=rvZnA*DiM5V .6fn87YZeI8E3+ۉh饉DO7Ǜ+xpcK -?m"Pxۗj5X15Oc0͂$UpJFejQSݵ G?5t=^Ђk߱NU5;}.m:$\ly6W%hh Qj:sq#򰧕g(g{ OY7yo-Q=5udUݞjϻK<Uj-J9MW--8̓+1$>'VfCߓl8}ϴqeA8uE//e,W?7^.،SNOWŤ4-pGw#:!(oDJüyW60_	)o})ije	&ej\؆OOoFΐ=NP	?G<
&N1걑+8nCDX.
~T\W֯wJNM`Ǉ<PuF+/0ԙ<WZ	HqyhER!1p`K?ߗl4\rCPU_kٗtƿQ2!@-d5@.UJ%'vWDZP%1=:)}X$hn˱mO]3qb%sIN=O:4yٚc?(5_KP$p/0>No5"K="Sa̡RP_>IYMʻAeq,ߚ>rБ'Br!;z2fz{tFgΜ#4%SsˑWrDJ'НiBʶQ ~Oshk7	ƪvHRZ}|
1kn>,wr׫:^oͮXip#㗩WsEW&@QAilf`8ח2ə=}A:Iv@[_)XE
4G?.&+3
,ݯ0|彼c{%/5`c=GiUma	jjt䰱ow-[Ŷ^%e<ǀ%i]!шsa	L+BI%MGDp@H#QՕh>׺X;*5?)Aպdj`#NImc֢NS7&@ܳcP{_q.c]ZMۗHl^=Wus:S0 :z}4|	?Jn8@C:b2_pFmTi5w1|MUAzuJ߬DLn#7ل/u	3q
^wi郭}.8Sllvt{bIL
Ai}ɟA25~ N jhJCG=P7lDr*
Dde|²}Ï==iy}+-+w˾lyBtR%E\nUdI{xӰTI1APT
"r+$U}::a
ԈEy0z&`4Gk@A< *pu = =wa^ZnA.6?۽O|2D/u3YOpe[m.IN%s{k, _=oK6Ds:GS%N&>-n>NHPe,
(RHpΕvѴz
d%!a1NV(dRޟntz:m+e{=EYq"uzTUX Chj}AM1d4y+Cq82cO
Q5jS	4<0Ngcg,W?F)-=l*UUPwj}Y.U/Gnekn/q申lz'+.BEW+U[dAsf
.=왰
&X!`܄)*7GZ`UQLYL(8i A~IA<R9/76
7^eVq
z4 u۫EgC=^e8:
e4HINAaM`}k12z?=49JKn%tڥ1D/ފa4aK;ӣ*4_;W
*UT;
t\=hv[0!3vkNY!/tZ 3wcpt F6%m(Vnу5W)~/^)5緷[oЕPSY3YNfv<'J>;m"EAC$zPZ;0K5gK@.f</{šiCŀ,^ɵb>d?oߚ)A:$W\CF`d;^-Zشؖ0ܚԳ6ִ
""$>ٗR(_/<_h4V5^i$o@ZlϦ>:xyvAV?;9$xi91Z0ZVJ[kY %1i[+eH!I¦}me=Zrlv4NC2_
n}TJ-v\Y8~XQ$k/qU wh
q)
lsJ-vlh-9ާs/|SAP]Te2ƫa/;ؖju<8R (t䝓]]sVpFX>1֤u\v
#<=GcjUC
}9Ͷtda(׭zMgZ-~ahwL/9Kd2`a(0q6~2m\8(:: h'9!A-e -KNu&~j<vaSߪ-c(luTy_JoNre;^Jԅ0}[4΄O; jrX+}d١]zUk^SɮnE.lfKT
!A'θ'XI@"{dhhn:lsNZpyd'm]ٹfoO֪15_c'S)#8aqݬ$O<~΁~3quqfn]c,sj(G&^<p[Ul[R_dʧF͑l= %\HZoSZ[I@x7W)73ŇJoGm9H׊	ڜcn0@&YϾ+#H:UzŌys'̓KZ'a	IDwnSGh5nV5&vTǳ:W6Vd8m%ryYlX8C6tTE{nBəWL@ ךq}80
D7Cs%\<-k,
WKVj6|N)
|,*,2`msNEG֝dH.@
AJ@L&Šw9F/An
A7P"#ld/M{?U{SS=<|aH@@~9nH	*CQ3_|ye=.DI#{=6}lXFشAaGLCťI@j;YS0qmݱͥuI%Փ:( -~㿻>Ma%EH$O6Mlo8J7ڀP<@_?#D,lYY^_gSv@Pm:΂ʏ/P6ސŚ,!	쏞,(do `SmiGǺc|#5ksR#
z7SYx-_S#Mc|׋v6"Tw̖-(m/G|nN
{  (h]j/MؙI8ac:swY:iɿ4]]Vw<6>t3j]SnEa[yf-5U	#i,Ckkd|L[26UyG0^+9 )y&ڱM7i&#)vLyUAs7Nt)Y\

J4<7$ l[
I_8C'B+|AҎgve~`KiU!b(w`6hmUB|p"8pS+LޠӦtb_
6mȽȘC@t_mn.,~Q
kXR+GiVG&"<ZѲkTM(}Gť#{:L#mQ6Q79,XBj/ S
I|:zd
˶W <m\ʯ	K_Уn<;Yf*p4فxVoѲ1OMǒFp_D%W
WBoUp匴, q1
>M򂆄 u&<MU54rxiDⰁF]A
-V:ᔼR"[AVOB/
5Ubˏ˚V8w,;eܞxJҴBKWxqBp	%l::HX.7WA9e4{:w + OaEg'v&ҫk	vp>jVl۝KBlW*4$=$=yG6k8cy'b$ƃ8)cvCl9C}6C]^6u9RPVʑ%$ !L柷?ZoV'|Q}Yųx#oo|Rp*~:͠o0\콝J}.|qN3式ئ{qSxӿ~Xʙ-qBA8g r@ll^*v\7m-A&d7q42!!ĜD|w8A[AVM4;klTAOn"@WWg.RooAܬ$I.P7y2Llk8Bě"ͭMU릝Bz$W߇j쪢wu(
np`?]U"T E667qS0ԵǱAj9bZeC)pP!i+ZG7j.$$"tbkV{55"h4
QpBE1=Ps.<;rԣYXgG	R+'YaՎI͎"=*u7
<Ej@_G$z^QkɛX5%OxhyyuQvW Ӄ6҈J[$mcʿ^uҋ3eiB`g80%̋	@0j<%K,Y]:B(/tj;6$9a?-uǻ~6ZM,Vڿ(RO
y83uĆ*Esۉ댮y^]1ğJ/kt7iRJ	7
ݶ3F;«"uPE~h*x|O:JWw
:ֲvfO[CBwpf!{}\8-t99ɴ4imm>樏f	:x@Ld6B]RV(by
 I! 5JF-uk] r5x;m~[@DYX^F /PX?͗$ìSYw;.GABE"QoT#f TMA-tN>/U{쩳_u}eI`B tdd4Y3"~,)E+O3
!/Ws*ZJ0"^7! cn:ӎ3c7* x:A4ttmV ŏ?dЊK
]67[0Po
VG"$WPw5؀5+E@(/ cr[J
x% ͜Em?XhoX o;MX억
վje"8~aS0-гyl	LQ,Ca$骮|SϔG_ؓpE/1(_-\Zԣ)hbq|_m"U]J$7
:Y^xO͡>bdcJ9G^i'hq6fͯpF674	U8y
#If&j+(ާp^7eЭJ<ض-U3;`=$YRuu
nnLZJ%\bȦ̊So
={eu^[
59*m'@ůʺ=.*ty 4#OJsLר
k?VTՂ}P{c(ԝרA	b
OimBcyQ F2I/" .2>!+j|q
щ
C4ۓSќ'V5mJPFPxM ْǖxdCw+[Ŀ/g8Ƨ-|
	<&^[$N&5v7yoT"I#/kj>J1۫([vv>jg
M}ːi'}
R3`.y9@&>:<[S'<Wyoo6WRR?ASh
xoCPJ2#At-(vL!9|٧Z\zsJ68N_ TtH:Vo}Lp~g~L؜Ǡo7Ļ!O&
:ro^yU6<GоAٙlvVq-id}Ӹ @o
xAȶ܋2o&nW[-x-Yֳ\Tڙ/KΨ@oW.8]9
g9p	߯-Z^ ϙŇGAgH@
ɞ=h}Y
2ޘjB9`C<]v(عP$[2qW#E	>=gF5TW]%L(\k&HYAg6h<Aq=y{3	Hr?z5w[bǉQ
Z)_T/CI1KavlK)
xߓ}UulI~m5Ŀ^bɼ9|dK*2-=,_'n,qaXmzԽ8*eC_HQph}vBb7bÐ3'SΐG;d툈))t,eqy^R#ë6N`^8aokhWedJ38S2Ί:MR
JԒzN҈sŮ<U}<X=ʪ՚t۳
o/W!dKrӒ}}	%i_bhju<0ɚ$r,
__)܃jd<5諳@|e]C/Ƿ@J%G.Dg
U$*љ>WPkQG=lYs~,ICSc[%' ׍)\eU^*>o,=vOwےt(.\PK'YuOOG<g/fycXzu{ew
Eڔ4		] YLjJr-w$1#^VGshz븠vT<
ʰ
K%0NL4xk.S3|cϸU^o?q8/
cT ZL*/4TjF*_)z
ib
nZn:+Sf39{+j'3܆^JNXQخ񹕀TO./$جnIJ'ԝhs[նu^[Q%X*ʍA(ߝ[#U6cVTK<JČhozt:+F.+wx'H'.[v;HnhVC+{U7wz5;82@QJoTaZy;
D!N<
NnN{o3{¬r 6*[R12y1t{?8Ƣzx\K"5UGhW\N@u,Ppi4e'*IE8Rao^_Ҝ.즊zI^8Hp%@'E5q/Y ]|(z&5 z7Zmt,h3$\V:rP#Mͣ'z_\CWPKfMz܀[20uq<㫄pּ9[QpUcr<GS $x+~';}F؍Z[kUGqDҬ-;ݎ:E"$|]ٰoW#Ï:P:=Ya?{Y.;gI-ayKi& 6EPUo6P.t4؅
K p젠k+Wx~Rc]vLKCjUF->ZQf~5Yg5H9ҎAT[fiBAA{s*(NwۥO@ʝ,7(GjsM3\kV(yߚv (pe(Oy~
CE~RզIE^ڽl/4]A&}'u
+gbGW}x:Hd4^SzW{{Mރ u0~D-+?h/e"n[ͧi@E@Wzm>"p8,$Mٺ$~W;VRx?}Dg4H:=g|JlCҊ~3$U#Gɢ)d[nkfITy*Ф;uo|Ȅ|U,~QPX	i|&#nuWKe(H<.%*Vwgmוe"^ӛX/
0r°OkݛZAu;y4'|Y6Sm%μԜT|K_lE壝*(U@?GIT4Dc6U,	7aĭ FS=C%S?[*WWNgW}!K\DZE]nE}j/Vؕ
r{
pMm7Dj֑Zeqӯp򉯆շZ`˪vL*Z@ܶ_?KرǤ-g=`7w;
^6ho7<Ora{R_?ё`pn0-Fe$XXTD4J	) kդh#boi8MUWQ⽄k܎s:UABЊyy1||L΁1j;1hOOWȪ$baUmPڏ5`Hj,\6'd;FU%'[ 	ŖlO+Ťe8rm
'|k(EIk8U/&{Asp#s;9)Bs_^a« [W2䩻h. F4	-zW/+&F\k|'X\1T~`SxYYP.[}i Bݕ{g."-gEuLK9ꇤmo\h
U.E5mkV88.;k*݇"/\i,K2RA]ouܤZ_64G-@vbΕڠ>,ye$ sUUa_y?!cQ ҁIېHi9[6ҥ
Ǿ5{1GCyʣkc*AA^+-G2Ȭ"	 V~V<Gz!tSj'akDmiP2w[)Tľj,PA1t=q2=5\."|b6<h[yKPe/;Zǹ幜;#fߑt$X춒8GЕߓA5ۉYmnsZ
0K5P/hvoC]z|}9 ͟6ի:G!gZj	nϓŀс\(0#b~Vht8XrVW5ZnT#`ٞq
UgG5T@ވlH0́z_.oc7n걤n,oV C~@~ȥ(9V>!LO$vaLN\LA>o(6<j2=KJ֢3ŮW{-o"
Po\m69	Bbu-jk,VX9"	Gl^'kxX~:ԋipWܑ3ǻ+P؅pFE0/%ohZO]*ytN}j_]&ap9φg'$ʪ5&q?jaa9|΢j0t_ǵ;q9̑<s-lh,!oVB"ټ~Z.:=1*{OV96e3n4|zU0ku:?ٛ[xP(2A(f;T}^rV1tڳᬆBߕ@|9YG؄ǎIn~KCH})ۏT^'Rk@3vգ
;ޢ*dο'au\,Rѕ_Nvd:pњ%:!k՟
Ϻ @c(EyQ(x	$"'uM""+w[.C҂.J=N	3sYZh"]ii)|׏F
*g te͊d~mA_􂟜¶k)nrkpj;rYZiޓ7䜥י9?ؒHS
0vJNI*>~E;- (		8d%P	͘Csg
=#Q%t 0n9'J炔Ӈ/ğʽM ?p0BM|?_eGc|ZUm7b~NQ+msLxx
GNS#y;kx]楺,gq9iYwڈ
*/hD;
+Lbc^0U^ whhY'Ĺ˛Һ<cDx>۩ޫꝻ͠<@^$)Vx-M:f^s^ߋGۆxUkE尡s"$t_*COx=bBބ峭3__6) N"-"TṂ'SA$r>MTk@k^9aJKJbCWnc ɀ{
iLtRu:L 8هbÒk_:r?6}N>I0MܪG`{Z59JStp<,i%MS-^-Ho(m`՟CEmJ?TwWDݷn%w^_:9J_5
)!ROmmh>Jک
j-0OTzAS,	dM9Ntjc?M2y;	2
ʚlq0_y!yokR{|׿W|ԛ<8	3VN<!v*RZ=wWBonʦ߹X^Qwmz_55ʦdXKKaYgulYml/wԨMQVe/W:+9rJtl$|jXێ(bj%/v>ǰ	,ȩSN˹CcOokVGRءp/;B +a6pk 	>\ꢅ$FgCMmF邾(kV.G0	[5kEN3!饲um*&bsEwY|
i7P}c5;f׸dVXgV ]9L9~joU~N6҄pUf4G%dv{6_9AY# :7&Cfa^`	u$*z/g*?!Ȥ'5f8CQeƹ/_%SSx?syIKRwҞ"`m涂9[8c~aARʶjf2g;|d*CCcR3duyrTw8>}<ǫY;Ri+H' DːQ}tGſw=D}\N+Eo(wUacXh{嚋Z }{yn;̣YvuwGk7w g:P&ZLS.{R0&F.(JEe[c#yP8![ێ"EBZN} =D}EpI?5ث}WőFSW4&e`TSKƆ!̓ !;@'[t$}^Ƕg[gyv:8;?
t ,#*fW.R
L%kor:adi`u7ÑʢpBr]gB-ؿ UaS}[_ZlUY?ړMcY߱i꧹E41X\?[-So+E<[	 $
JSޠثٮ%n.X<ǎ7`QC$H֏HTJFr\'vXVPlk$őF>͎Η̒.{9
p8ǢoNTt EA9Rrzl&%9]
~"vT/1yZ5cS6Gx?gzμ)NBe?~'uJջڝiѼUNc2Hۯn=O?C~l~.W}xx@@2`|_MH~؂׭ȧ;X%'A=[y\[#3i7(VkTZ}k6*(c^OnA
}%EEFl3(pW++nWǢ0" x~}
p?h\͢\*^I>^%yOK#(V(o^+{x]#iA\h˶W/q(yuKVliAUՎՉO~l9#ua{v'IХnNyi5iA²:4UJ`	x4Ķׁ^
QfM[XM!oxyFSb)n4RDGv@yQx4pKe=u<dhyN>5*gXTbAT<M9Hn(Yp(u.&:KRLsc}Snt2&"?c<@N隴>hx!uZhZOjy!s3KzT(5෡J@BIW!嫓3d`[<#:pn{ W_-,`2Ѥގg4@O_m-ysd#m+[^6֜Չ½Ò$_1m'ʐaŸ1sd~vBBYk:/Ta
sG=;dH/7;tXv%Eϣ7~9(Ĭy^ke^d-lnwܣ(o|h^^CL)YJyErc}$=I@vȦ_Sa`Ne`9
_{zd~'
mnaNL VP$~5lP?^̰@-uNTpD dCk6\g55kv*_aߚƃ{uPIU[DJֿg^Z'ھt.Xy`.I#"8PkjVT MJ*F,%k~!tV4zU,:HwUmb;B>74iPty-F?O^W$!>6Teۇ깺Q=F>eUh9^ɩl<^W1Ƨt6q[Gh*ԛfWA<iN@'tPC0%^tdWκd~s& R\0
{f<K#R	oH
^$j䯳(x{Q-	Q$|V)ٶq	?gBf@P"^[5U)GTV	d'#C$(ZLo7	*3gk_~8*7jvm܏t.Bc͡%mK?U~3Nq-uT_5Y  ^rnC`4igxp
T|2YS&*e'JAi/᪥ns
ܺ{[.RIaY/صW0QމG
	 c0m 潤ȝf`2亮ػ*S(~+-92S?$]{zpgs"fj蔶9ݺ44׹j"8e:j {&ICm[8]UE ~E68 /4
7c}x	ԩJ]B8۟S;T7,)Yz5^±`e;cEsRN
)qeJ0Aakf)dSıg+ԩ=^JMOȐ5p:dŗ>]kNVf?zVU81RbgQ?ݖOq;=^eKq)b{ʚAD])+L}{3pJt&/XĦ9gpŹ>u&"DeN?D9f$E5o;V Wz81ŏja]y:z!noM֚ڛ޾qZzFk4a"n{V(.V'űWoQ]	H3FS2N)}6[sCEDNE#4Hzf^GYNt[#sQFbx+i4"|GQ_DWnυs9m),MߌC|.[#m<NDdzI1NJ|3RCF;>?}gZܰmG&aב1
)/~+ȓv(Gul{ak2I6X
soֆ<^޽bmZL)m "*0díanJBSLHedh-|	v+O.pV'RGvLd
}5	XGoȼ_
g'WH Kf
>n۲pߣ-GqY0
-p5E[wSIKmN(&ٶzf䇄
3Es=)n
a>Qt=gjx[E{#5WDJRJd;ǝy2~bmJ~\'DG]YMtݰ(*y}̓U&^Yi&88K!EmU>&
UӀb? ޯƼXӝy̐-r{̍Aonɑ;'
H{D&0K7s//>V-KsSbjUD%ȼMeG&%ft?=1a=wH]?ׇ7vtw*AWo4Ʉ=AT
_8nP
(y+k#?@-/\#D;|%o-J1@l;?F]RQm,>ކ?6MzW[w섳dn79u	:{i
R#ԮXҪ Cw*%zT(pȵڒ%%y99l@
;O$_'v)M
Q8~W7W3˷S&Eӧ@\
oW!EvW!En}J}y{L2b(7[Odv4h)[`R;5jVꜛ3=
Y۬i=MT
.cϨѲ[q6\$%G<Ϯ x&hL8#5OĬyjq̀+mrpdudRKaPUrTrl ];EYǦowM|
De"4S`rF}2'0`[
*`\n#gN5dά)<P8%Fr뭒G
):
Q:|k?) VouHO4l$w~VlŲVV!; 0p)v)Ivۜ_IJ0JϹ)zyç!ّY7/S
u'XBRJ.0з9%ٍ+km~#&t=Qe{X?'<Q=Ahף|Z&a)Kͣ
7:mOG&sV	˷rCo"|Gt׹apik;D9<V ,ӚXzm/T^k8eGlۮ:]'lQ|,,l`FwADA.WoZ
R=S.MXa~S"~y!OLV6A^8gg0xYm(Az&hp<ί0Q3z+3-V/vsR7(GܡUg)z?TOE^oÎ8<ʶ$7ډCm'nT
ty<q]*0ȣipY9(٨}9NO꺼⛬{~d9ܶz8U	XQW6+^ll-6듖m[J㱾_]X^b5xs1	S(y/ӠV5
:?ttߣ˧[p\l̓E?LLr7x5ʲm	L$P~}juj];\^bK	89۪]H_'m958KOWg	ReAbc8RP{GՑ;,܅rJn)B +,vr~7 _7M0p{	yuw=Q
/I*Qjva:%<^Q@TfkI|J)->dmRr.sT->
rZ1x4L~NV<*^oj+f;>H踇Zrg{3ˆtE'%eNnl:[Zeݑv^iS=Ƀ</YAQяmE8~~rX~
)k.	NZGFݝ
d8gMo "xB$צج}V#5k&G6:
<\RrKPfe_Y??
J/2)ֺ$3|x$9)ؒJw\	.^䌡ZzkNQ(ZOi4ACկ+CgޜT?
CPO[ ;T׸'G}ʈbCEҬLۡZ;dE%p{vC3hAՃ?j8YgIzЁK=v~YJzByJ^9(N^$©4UT*0 iS+LQQC!(iCv0 Z 
 #;Y
}g6:pLHH}No)Fi6onXd#|;P\"FvB`E|Xie9*LJ[8/ʧ=UXupr̿H^)OP8M
B<QtzXZmD4\^GXq__A%:&WTM"2Y#Zh dۚm[YTjSϑMY!^Wf0pR9NPn{}n۾V+U:;5EO/c祧B4dvͩolA]zge|03eЈHt*_+gh`kag2ɐ$1.	6f-ʮYuZԮ}jE{sk#fs|iNU~}JRIN0hzF)Za Fk:i ld)촣	DuzMB:L^4^߀s4IvgIP$һws*7Λn*B=߽n`
iӀ+	(->\^btF)zwӯVjLX*p`Į]g$b&rz[xmxT;6[rrvv@?<^-no揄`r.68ܿC8L,7m)O ʲ.WC_.=mh4whK3Oi|,u;TA<u,4㔈U͠_[&q2OA:nqXF{t^`tM%|oۆ]%yM|vuXC}AI/)91Hp\?:%g#dlL݃Y*Kkki1K
pҷ@6AA$
]q"W*"_X/| TTH":)%BVY{I
m٤yڗi+mUhzsz5 k?O<G:):E@@u@u	<c[^z!>nZ6eį`{qr\xytMdyiXa߽CyTk@tks<3+qj/?ҘȹrfG" |j6y % ֱfo^J2	S;1b|n֧0 xsdLE}) L0iBVG|:1ͱS8(&G]-#iNΉ:Ҝ3VxUEɬ飻Ts"N<k~f>x֓
fCU'&Agm{c|Kbݖ;l<[A]g;lr%cO-BຳdyڱH\7Ym_M0ȤzPq$Oe֔<A.rF9#6r,_[[6)j52v|WMY7O.`<<љ8 d
u/lO9$h]}4HȯU:A#Ji9cHg랮z(y7Ցb QJ"tV]`rC4{,;~6	 [S->
>oҿ	 8YT43;VڨN9R|oPG'm2p44|Y-S7 hE[FD~xԾe)Cfm@+v|ytu߼\Yw1m`O1!\ fs186,N:+-^E>bTۆ;
?{ap!O}VxxCV|[ݣ,/p*'"DTh|
KJT_V$hgٵVsTdُ?.\fU&ޒi߁i.zf9 ڢY@<3_g,ؙT;AkT~֓WW6f
tD)Z-ҟc]0:n
*ڼnzSWPU#,X.6tB_ Td	NF }VIμǔ|+t/oCԗi:BqxmTd9} Wz܅h*sb,-<jifN]}m@PHذ>y2^L{=3Hg=O
9~6qrH𢺆A>W;@ 9xɓX
6N@ѥZm^!95IEdYQؒA]^4ϊq vϱLlC<ynɮ`,:G\Bl/[;kӭYWJJrI{|⵰+U"2n
$vNYWl$r"X>YJ꯱MG(@LVUN)M_Qղu ?fU	!+R?ls\5$qS*	)vs[蝡2pr4z<&x !םC? m>7B$Z)-:nP3jحLqRKhZK~oU~㕣<QʵzW:Sn
e
l辋JUì-E)@fB80E:nkAd؀Ǧ/ʙSX8%[W3bqbC^ 7¯j ҭg=N&3YKƭd	Leؖ'7I+ŮuFֵ#ԴEb
D$">	9Vxuā)~}^cSg%9
İ%^^GJ:^wUf	`F4jFpE< %֬OռWEvut
TZ-K10"5N8uԺ~2|_~x隞 
7N \(Y
TO	HVqVvk;QU83}x]k9G5'B9qhu@ƺ}wH`V\mҜ\^*.MDj9v%iy
7\_dX1aB4_
*o7#Z6I>5` 6Wti\TPFQ
CGD_q6p>Z#[J	%Z"~	TWיC8hs}*!mKg@gN^\@*q`>07z~brdǘ̄0x|9Yښg*s궸g|9fMe{FATvgU.]ydQ'::yJ0pkq\t-pP]*÷
ϙviqKanbKE&H:b:cT`/TbI
 yA>!)\U;]McnnT4E	{ymy,vD:RH׀ŭoU^skD.*{Е:6sכC6 	O)l;{q-&tIC!y>c?ע~~PyYhfM..)cMD@箪$7pH@z
ᬒg}䱸u~⳻cܔhvhhO"ݨd
TX| :?tՑ~>ׂ's_mN?d-vNj^jvxa|wT|e[eF:raTWFQM{yI$xphNp B)ګ Nb@@ `aG/܀gaG鏈tqSwT#1N"iO%2^m9p'2n:RLϮmi꧃ܻjb9M3|x`+o<iOҦ&dqU4L莥x÷<LC<U2mqt ]S]#ϑޕ椊Q{\q ^ܔ3M\#h^)£xJwqbH'$x/<Zu@WBE2IJnW;&\?	*2ٕCNƉ}Ujb &n譳cV`ͱfU x_U}_cS?siC2 	"'hZm
o7#C_5ۯtӈJm
e&"77eo9F{TÑXZE7]uNTJ̘.oxڪ|9R?E1i]FǩU{Lz%NV1 G8zsXA[	KQ˫y<ysu=dm:->׽ռ3M^Jꄁ-0=^/Kg./u,vJOo^0
	gR.rbgWZ
KDMvV,.^sn[thGU,y/l^7/4Sq,0Sqpe7g6xJ \%'5&Mg}-ejt_U}4R5ǙIQxK,c=etIJTET`-$nQҴPt{SmR8*s>]-&T<Y۫@W@w'5:WP,7jG~}0D@k&~$!ZṕXa?ra*FXNTaD@ykOSɦy_;(&g裍aOXܭ.gv-^].Vs[t\G$'ǁ݂Pw~@2G
"ɉl;
tHq>pEc;t㣷Q_ݮ~,a.Z6~SjG9 Ej#jH]/
B#{ˑ"cB*ԌJy=ě%%1U8j[h@5 L0ΈlDG]x<d6|1\NvNHԬKr::61l)uAciG,P</o,Qۉ3{AM!9)'/* 8UH&iؽz7;\k4jJŪ+34
!;SM:£J]iIU!Y=KYc  G.() <ymE(A ?Pf[&]|XtӊWkB/Os(/%$	va:jac@ /h#DY傎 
pk37/.Ze^йwYVݚJWx9gþ_p=:q׭˫\ZQu~D[DvVP
{/>ˏSkV׊JZj9#R$*޶5%7s5o
!]=nSe48Psئ*sX#ThQr
Y)f%:$t`I8M:eGM]+%-YCDkA*\Ik2CJ	'N%*{CYԯb;S\Q崫qs/DlGWC+Ȼ"ƾ~Jݝݷڭ٤\MKr }S*SLzT(!g51鵛)
r+H /WG@R>L$, w۸`2dlҜq|)NZ	[3ǚőv­Q,w+NηFlf_V7-ͩVi:R\9!KkxFjB+Y]Q$ ϷO	شWp)ܠ7^5eЕdsXsԄ
!+R<gxq6
{<Ň$q.g~̾ 28o-}6%]&4ե;׵7՛fl+IΛvpH@&ġU1JRۙ=
(w<Uɛ/wfrޝs$onCKh 
 6Ϫu7L%<9ZU޾Uͷbm(oC	PWQn%Uʟޤ˳cWT>.ݫ_qK71N<SAJݥ3"6
~ox3( k V8L4p[g>(`Kˣ~_wtBc.QKO9>Vjp-kpXTK~Q*OIਖI	 -#+T߂O=Uô~؎pߜ,aoIDK8gsMm#5ws㛿x2t^soE^z?R 5OAF3y;2lG*.`rUtSB=T
.~wϏ<votiB?w-jkzXJ60~$i=?N}뚮H'}M
~@ָao˳@;veHKt1ln9|_)uz(ns@~CVʧx3vUQK7h/ꈺd=T~SGRM|d٢e,¥ⲳa9=8_~0O(hS߹@~w"7.FtӐX< AwԊLN_SaA059@SVYGAvUqER6A1l(-fhs6)&*8k!i/iK}+|Pk:]ռbqA/RzX; 6
<N)i5^vAߍ J<*Q(`Jo4;4VD95tV eחjX"mEGu9M*r5PId3InS7(N1fj!s/!GݮvlMp۝tO=8[;8g(8)AzwK#"í
g&8~CD*O6Oșچ*i\2ar!WsZ]m1Ku@4j ՏU+ 06ZًǢ/(w}+s}zvq'ϔģߺ}H>G."r1vFU2ym'm{N֫@
Lky0A-:wW<oYU\)un'E?54nL*hS
6
e"l#y\jWdQӕbr7T,AOW8(^ɽK Yi<*կjӚ:.!7rhd
z.;١VUC$Wڣu5>SQUTVg$ku@ i!%JUUW"3ÅKN' bs4\]
Lir}nCu-y~7?-oUPfY>@4hYSuZяԠyJ@vDlhY elǴnҜAƋ;F{{UZz	z?NN:>)Z6|_Qþ C I̮;3@ I{UpsfՆ./'!?98}4ר!⟅zn۟SWf,$+]D\Q}Ҿ	Dl$ xk'n$?[rq~e
)JG !Q
6UmSɦ4 xϵ]b\$;CTܫTڗ %_^p;͞ϰm^Ax$ yE' ps{ݎ i2	zQ[*
cV-/ua2-{ICht=OZUoTD9LpWIdf5Wz=f^~v!b_QԸG}TPNW[\G)f&hl풑6Uؗn M%4M˜Br*
ݺ6 qzBo1i;S|@Ao.rAe?`$bTwgм:D EgwWTI'9KJ٬,ݱP&}k!n=<D48`韺vػZ[慨0Wug9
7&4:O]b0ݲ_H+Үqf2:jbș&PNx*C(ڋę>DP3e F*9ϫ:K;"x9l,&F5'̒ʍwGxB&̇Q	6~&<Sb}64{p\mZXvzM
P=hwSz@ю~U8	[=T`}tz	+^4.~
Q~<zeg5<  yNQ]Z2|1ǚju{[*՗	VβIL[oA"[եTSU3m2r'9pt*.GtuWd;Kq(kO#K7(5jD|	7ॳB5\(I˧?q'դ.=p2Tu`IKHSB[}(1)}R;RfC	p\wڟmce1f"|X3+pxB%
/RfH<}BWPĝG~>zځC+Z^jZ1l_yg?	@&߻Gi#QeIV]@3%q`ʦ~k(5zbNgn	idVnWtN7Y;H#gi8R2&OocRBzNX؅qD 	k.+;9uY`kz&P/j
qD~	zic8$f.L[6DP1UT6e{ZuCAvn[jJ|\.Ȍ3 ~S_WϱLq=\߷V('Da#R/|R Npr"hhrG><#
$k3n3rO =8Hs&eHMA4atwqDlM)}>0ygW)_!
p% r[Cq-Z~	Ɇ&/wREJG?5)N s)ʯ}`A0|='0w%prGkSe\wT{ӕ?yޕBZV
0jG	@w^?;5>*		Ji.z8
m킦,)w
LHJ
syhIs>Ϲ`vJ(ԞEoHGo[bZo'5K|sv,7 խ9qj65(%@uZhזqHGME3Jc'7[6;joH{^.c43HS8q`W+}6ˤg*sFį
[q-<EmVV tޕ(Ψ~nH?>ts9_uU.G ~<pƀmIj(.Bj3W:gz+o{'5TW ߔ+4=틑6 1\gJd9֔E	h&'mձlU/0Y7(D&![*n\Uٷ9\7Hn̊oid"4us0オq`K0'ET>pz4T.=7ъO}?b/++^Ə9l_;2A11XN#X[-wWDe^Es:
I'&kLq@1?hA,Zb۶ՖEqz#ڤ򢢩t
US=JZr1*+{Vop$qV^,ya}19̫{e!8kK._J\3'j*LNwUWy<j.}ketMuy(
0X5	,dBnzR9׳Rk㖟k.l`{{J:P!z8䂯>_gZ-]ur]K%\_ 0wO-wuB<{
r\a\}ժ/#RVZoi!-6^WUU$m֠-GlLBp!NZoTIBT
NfgM 	K# u[׵#q(y8q';>L]w,RZt,WE
&R4(OZta˭-DKGqnmČ-
!ϻrpR!bs
GI
@ɮ ]L\%\	㝁^z~} H;8 F:6'b%n5="I78=I*5A[@05mn_Y&^Qx$.TU .MQ59oؕ]bxһlFojP</'PDPJg)]Og։@ O$>!räK]RHwK2^.E N4sӣO#ɠ)P]?LZk1˷ֲ0+!L&A_	ypmK֙jc?{MuE:.v|o`O'G'fp\۽eKPm"rF >|G+}<Grݭ*<ԟnSPX˛8A;pSCXhYQ?|яSZBVg߫&gaI'`Kqh=~	x|Xw6aI[m=Tmtx?GnFE3LBZw;׋ ~mL{alQs[\.7MU1(zD-
P/ˣ趐3`WnW]M^4d\g'.KfW坸FXgþ\8	0meImA4]d{0o0POWDp
O:bFBgmQlo)yP;tqxRC+@X] ,-|&
֑Yv,	uN2H)$8^?gK!n"$ɡ'y*yIfw~bJnk5/%1:K}ڭm3!Z:s6DP:q\0O~dHttG%i,MŸ:m.v;GLPYQK"jʺt^t-wK[FO}Ϫyp]N orqI51
gV8?nKSiv66LJk;tZ=UQvr@q#Xp勤qGzgoȎ4j-g72p4rNՏ	yTTUhA
19ܿ`'(<Hxo^Tګdin>h1{?"+~Qq:RU5&a=S '^`{sW޹c
a5ǹB
~OKܠt	2ȳj]]X&u?t[GX1t뤘X~8@yh聚V_rΩC]aN
; 7SPg)~}+vE'!"%{Kk<1wդɗ}n%L< ^YC4em?	.FΎSW3]A+֤+ڦCHtNjxOew;}kD=9͠+TxJ^4:G. A{?B銉%G/\E5/f_<`a
bmlHo8$1^Hivgv3ʴ5
emށ	@8WPc+	uwiruqJ(5۟W-`{@b?.skvV+E^UJ1.f j~Y|
Җ+F"cM
Ո%npr]0Y 	gS˦
xm&e99
Is% 3e	&Vˆ.rdp"\1M% X׈{{.y+ΥAJ66[A c'yj(
9!+Y%dn䊽hD`*|+i7ĂQZG/¥#ZĶ3YqQԖծOmEh$q%VKڭX$y!U)F`e.` lR_SVf>J$/YWoUdPpϪ.g'}va	إY=^*|p0c\z3)8~j|hRҽӖ6_<s|i6ݶng
CpՋ_uX3*rԛV^@..=0%S%$66og$*W
8~Pw2Yha;WsתcU95}ܗ]7r)
rJ%nm#Mѷfמӭ~aǁ^qɠ~GԒl@j:4ܾ!KxʽU"cVW]ٚ;P&HkQk
^;#ZlCJwT *X{Z~4Iz;Yvmi=HeJ$b;#𹛷RK&f#嶾)>&ktv鈿3݉Ty2	x.GwUFx<̀˿(9}٭xiH JӧA+҈wԡ!P%Z*`#
eV'е_۩2Pkzx
|vg;y]V+pelp".}^-E 7u]6[,?.W5$'K|$H"/4 T/+-hyw%SH,VW!DŹyi/:-: 0aj6	ЂlMOa~>8"rd&B<Ts0?;g$4\cY$
SSn׼FtkTk~!c#ӳ&lRo-"^FHG;Pu$oG,@4;Nw$Gt	 $JXO^w⎨JT.qF~E2z]?_Lb@Д }g(²6:sD[qbgTtXyOW"943mFe]Ȝ.c=b'1PBfBߴ)BTSHAUA|>#ɦℛf5>eʡ->rJSuO	#ǵd<ѱynA.jVn%o]8~l8r9XQIm?|gVAlU'm)ȰF.ݖ@ǅ)|0P;BybAc/(':.XONv x믊Zl:ɴT'Թoc<9|9uىPAa mӭ:HO]tJ11fcW&p7JEI7w'YًZyT^K+Tx..`QIIÁx*~t{);xS
7і9m
.`:J/57p4鲳[]4K:  UC}hMXGqF(t1ÿ


ȉJ~~rM/I5F^C8LcrvRwXO(Z(xkt/cv6H,]s^:KZhWpo-Wp^8#?2n{^e8}j8,R9[	'fP#E J	\	x(?"d)&2ቼ((ڏ_xE9rm"zxz0ۏ	VKXh"Q[Pя'v	[ffTGpЮN[KU6hvyA{_wķ^{5qM6*$iT\UQjO٤sQT&MYVqI"#,ً_l6~-g~ǉЧ
`?|n6Dcz2Lhh1L<ֲWs:&[t#94KwGe(7$ƫS@kSos6{|~"+;IIf (riõN~oq3ZT?*(,ˣ3=KqǊP5%?m^d=ϊnd>|L*WGdr{ZQOڲJ"8LLVh;S-*Ko@r<Wݳn7Y.;QĈi{wK (n5 X{/
mg@(WkCCG:if2jĬñ	p#CkebUHC^xv#]fY2ւ3.޸[/.@\ VoRDpF.p4bEl694HH҅x&%4f@.ko&l}*ˣ n\O̯ZOK.9J7s9N]K۲I?gY{G诧i>|]ڮ^OIݑIܷ:lTv-2q'ک}䈼$d{p֚>U&
PPOg}UyDԧ]eb:<.,jtPշ]InϨ@<2`$3%p=`BU09|p7T-AG}84ǲCd|Y9n/dqL"_Ξ;)ېIVnP[{4ʫm]&ö;;Wz;P*KMyw^V(9U=tkzLr 'e
	Gȧ~m
-AOG7 (bmǞ8W apƛi)ޭZ&@n9:hĕ}fЏUۤ	N&]mt.BÏ<邔S#iyE/+hkʶ:U6`_n"
1)#!!vZ1Bׄ
?ynǢaWE"4yTϣN`Jzgi$Տp{\8nm֭:q&sĳX5ضt相)u831?|TI) Ug=TUq+s/R(Wپ:G 5n{6Roq`OB쬚*K;C=^v[+2ҥɲl"}m)8	ļjuxA!VHޛOCHNtr !\OJ2r>,]u"^s;@ckOaoۜDJ^?Qr*7Q,7GBCOyV [L_r&J}r$Դu$ݹj$e=Z@ZI:m98x=Ѕ5 M	Ұxb)5iL2TYeQ02rw6,38*@M#Gy :參1<j7ӫp|+PEG
'w[̕?e
9(Kv . ?x]<A_*Ikjb.h?:ud3q)y1:2Org<EXptr3۷q=qdj!7/`{I8DO[nvV hJY@`RHy$zNɔUdGx@NlFۭ;XR+gߏ1uI^]wbYKh"(K=.` ?>Fv<8
N/5Z4GnSWBZHd؄G
k1¤Gv^@p)}w )pcQ{;^;R]!IoNφErhՀXW[u)aCםp2O_	xaיF#VxvϨnQH/qFN|$(ϰ*(3.FFA9n1Ŀv\:ܶT{R2A7)3PIq!80s'*Y{ΉР	73A.^GvHcU|JNss[	g^HhYf4K
q &X:.E{WRA}{95st -]QIT|L!JIq MjfO\*?Ng|<惆7#DjK$AABm&N{t|8V5&dW7X)ss VD:-d/e#WhQ
>psE0ul`峒i_@NN9	jd7$wx.S1N47SھrCG$cp8niD`gۉNjBU[E1rɃWN3ѩs"]|eEO5Uy"\jս(U6.{.\~qsu
JRv\_GS|Dť@uߕH!D[|/W阾7劾K2M<@7|ȷ7?UpVvh_	&
?6I~KoHgtڍ▇Ŝ%*VEԭ{*2ug.RZ<0Onrb OZm
U
xTF.-|/
oP1K4ʃd,ؙTJ.ܿy6M8zs7B1 t(	p$8*0U%>>ip{Ŏ3jp<*)πZ1@?N@hƿ:*<CPq7G~XI8cAc٪NEٮ |wevnm}4{:D'G$'/$M'lqo]ImjĤpMTg?v=KC}_nBu~"8,@%yr[!Bﶺb(
z<n­e]7+\k{2;+Ƣr,JtBhj`9{:	՜T
t*)~dg $ Xx6\:k[\w{R4D{?}[y;аi֑!4%3cl(IW8_?( M/]X@E#yَghy
(wRP\4HKK$ 8p==%[^*:}oKS	b)8[_h=ũ=犫ajf(i1tHz?
\~	.\J'	~Kte^8Plp	\9ry.ҹwUa^uU,ǁwr3?ƼSXL1_l|
~G/=ל0-kj3wa+x^Gx
:Ttఊ 4[lōKopciT=αh]*(bV(Wb^
pcYp^70"RY`$Zj98iXwYTlq
o+7'fꬦi |mTDQX=jZLt9֙wp豼hXOuN))	8.FW
.Φs<@}J$׏Rٮ*s	SD!k4Xn),eۺ0Yu<RMRYx!m`@YX,c?Ї	n_y|fuImEAR_j`  pIG>R+NDѼV$)ߜd>p-"
nQjaOx?nXgQOOpgQRtJމхСMx
m|AWT=Vu:_QB"!RtpO9>AA.w:?9,[x5"c_
s\v"&R!&hp,Osr%I Mxj4:|#ؒwq(pQIk6ЮUN=BgIRKN\52p_%lj)4
#	聆U}g!e?z!e{Pƾ67W_V5cSnBgj>jXNTbsiveoqIMhG{T*OO 	WIݿ_چ$	;,K䇧Jɨt
7natK`o==r	Y_#/R
q~>0#ڵy[vq8?XP\h5|5~fȢ*=a/ *YnZdW_=hy]BM'T6._6ZӛgJA(C_7P]VgJ:hřh^`Y:ddm?*w5y$eFk

 :L3)`:jJ?@s¸
#;3%i$ne@{kn".UGr$.M42_(bM~ޞ|up4ѫ~Ⱦ  RrM!:@hQs>RTi#fe,_ 0d7zd)_xﲅ(zuF'vjdLKY7(ꧢ}C*r@Zn>gV(b=LDZՎ[GDYbM"\nN YP;}J\-֍ZlmK蔠XKt8bY SӤg(VRDSf_gZ714x]6B9~4njLM2s)>kwQGҶW/@Cu	,|_l
nCqXT$Io#8hz/k8vĮK|B\SVBEݥ'ڲ@LtϤj׏[k36x߫
w,N ZpBvsLS#w[
laڲmkfIHj?W_{Zg!SVy|.|m_pJKʻjU;;Wr@aSQ[Mb#7āX"zik%1$9+MEͩY#ZJCtV9@wOM^QJDRc;ONE'YgKKJs>u06IZ[͑RJr	BOuz& q68^?8S#"C1)+$n\z:Ky|)z	pyZf9vy-NTC#Eˠ_O.~ץo&G$Ȣ#y%r9ua]{CmN)m/_\zpe9=qUo(? Y?$JGJ_զc$5Z#Fnge̼g_eOEa-qnLSٹcH3v΢ӶnhZϯY߫IMP<\k3:5ֱ)moDܿ|h@/fWG:,S=Hr٣d58KWgPԷ[+
<+expІ_FwTcX	d CrmpCq:BtM+d[n8ӻ]$&Tptdϙwp {n/Ij7ǭF7O݊fsw.WGYި5ԅ^tu?V) [U{o@֪.OL	Spg!zxS,&Ykӽ!$mƣ'q-f޷ȀG3hY-9A>=ɦdzH縷\n)CF^@v~F~k p-zj#<#elJj94enmRN/:/Kz;#3^$_]spW2!Y'[*J5G-j\iIXm?gpX*r(xՂ*|!sMl]?@׽STCWv 4nidxh0-  
Ck_ZFnL(lC;,]eEgyut{]חabMcC[֢Ek7JNju=~Z5\EgttAUi~I|}~Elm&1v0ִnodIE
mQy0ILxV}4*Vg1K\@䶤(xsW(>lam8ѐjyL=8A-c{a
܈*
DU8tM`H4XT1EX
xק:@ZRYCW^בrOSxU.vT)[x7[, Nz'Njf?&uM}많c*r+kS~+:u6IHR QAkA'BZhC_p5:o{`AV!\+SLt[}F=
Gm㻩IrjoJTLϯؠN+z#A`_?xtVwpwPR<wVD)'YM[eنb}p$pϦ{q+
'3{봍a0y_7p*Y/px.3hn5/u%_dg3<1}` G8:7O]O;-4mǣk;$Jv:<.ŁUxçNq3[ʙLE.9YD%ܩj@jS8%iGcmW@+\~/,4w/g=DWgud~܍$&uŭkz|8TÖ.<LGNn	OkCn|Œn^)~|kѦN|zA?~jpxbk,o!,tx0AuU!dJmՇO\/wza\"c"!]pϾS ݑ~
ގYc$QuӉ_S^MIyT j6$[+IVk4duw/j=γK(;Tw9-#l2:B׷Gt E@S:ЅwN Wy-A0ѷx=ko
Áo%&@=	Y0+lֿ*$]1fkG$Jfx$R&gIm`ƢN:3g`Qq[8\3X6x7SӉq&ڑi"MT
!	Tv>$0_`e"Αꀈj;hңţ&A϶:69.bًliv!ڢ;O;:u{
~~JGoCy$əv<2| M#O/0{ֳk%1g$[.%TM_4
wra]5wk%+K\a=xWtG[pN~Nj=|kӡkZdɬIsmj	v{8}"=5.8c8ō_M붚$3#֖ B|w	:#dX.-FvVkwmQ<u^
ڈd1e550ZnЁ
EAb⿷&+ sK>}x?E. zyg<@p%ʱ/K't惊4ٙ/Hkc\mڪQ蟼uuXyog^'E~5w~%royvh\X|]jSҎ+#-_^3c-u<5}o~LoJʂ cSIT^gr
wTYfs$Ue rlk@1"=jGWo8j:nKl%F
G=cIoc	wp |}[1;e!`lZG;yKn}T\)iJ:5Og#L4ո$o>$ǌ]y-t:tUN)q9@W$^;j2Vu%>맆9zQQt^js0L<$D
In:JS3boc"ͽ@d-@TAD4~mr[W-8KUb:;]Q}qƣ}>W+#tm@DZqmFSLN#f m4gv`#7'k#0q*ܩhhux~L۟~_^JXLk:.n*b
*JoO{\sOMILm ׊2CYO_	0ͣ t=cZGLѩ:;9v_=3̌yD1,XɸhAQ?:L~|=bCR[͖s:V rn['?}S튭]Wq,ojh>w<>PS=)d1ic.nA]SA)`>\l~ V9e/Jw\AW
Sti֝z|=D.JF$
-+{B
IϜώG$=	yg}

LOn *1zPN_SJ%ιJX[pg88Ax9 Dw8E<Z
%[𨭃:TxlVu?Q q:%`sh;W*f<8z#®#	NH¼\go3Dqꕣ"W&^2f2$,?&Ͼi#J95Ņ|ėpyaK*ߕÛLY)Ǜ:s/c*V;.*}.
J7@Q39&>G]/
;n(eW~g9::3Y"'7,UT
㦺,O $[<nڤ7t'|aVm8T_-;RacW?pmwh؁R4Nld2'iGP{IfvOy㽂]1<9xiІ[ ˹/*?J?|L|& n~p9;ǀm[-Q~mk{nGi)Bk3)SW|UW=|rQOņUm}fY8~x@G:'޼
y c^r/3v nBUv8s<C
5b99syq!gte/=W%qt{ktG!ݼh;	xw3dQ͊C7aJǏ;sgKFVmw Oܤi_Sޏjp/bNՈ,kc>RhwFUo"[wXUs;	on8D
I0R"n҈0u#29B*xı/eWp g?'EЭ;,N0[6)I#9n.jr4Qai
gDr+q׳=b}*rӒ[UN5U=`|5`|+iZ[pgN
l4i>jm_-^d=

D@!Z#ףO* H\	DOސ
RP>]WlwkqaRrLnq2՝ƿ׼)o%l>ȶ&:p<I
$	!sޟcǎRLq*1Ȓv1Tt6)tt-J"^A#)3:."K;<55ۀrƈ7yt}M?m'!}0y_ࢋPk}'kOT3B2^
C*"qi#}tCmޞߩܩJQ2m>kH7<t[	6-yS/ݕ x:;K1/ɀIXv_Qgjtn8|>Ȣ7qguU&HGL:uv[ssLgkl
;U4Yxsɪ,פ|J4
s {t5Fb]ΒFiZyW.[`͂V~'D
дęEh	> ϪFq.JR9yѩvP=]P47qPxT>_)MZդ%H@ժݸA⮢F0z֖zr=x	v[PclNoWŇ*I-*IA>JGuֳ0E
?`m~4񺂶>{8Z)tEZVq7ꄬ èouJɅ":9i
Ge0B"xI`ߟ[z.菃	ߺrzKeWi4y
eߣ7IDv~qCÇ5s>%Ԫ*wLˮ)ɝv9%YR?.uGخ/M[+Xty	RoWN$h_ӈDA>CQy)m; 
7lyjP'.;4vEaJ[64o"x5"	S1]RI9Sӥ649.ghV?x\[7:Rtd}tD߂u Sn^ixO\_j@|?>[V D<v1*$/?]Q$OI8nBnJ<eG=.p`R%`e% JjT)y _nG|&iTt#(
:j.؅UsUӑf0̾_7E
Ryw<j!g\7o]tCp@3w?|]>5@n^2	P!t[vvVh]OUθO7!ԣ
@'O/ Aٳpiڟe1wMxWR-"?,39Pa(#C	85\HD-._DXt	U6N6{"w-e+]peIGERa9=|U;N
oQCMhŗhjq	}Ymw-MėW'L}C<K/U~{Ě/ob*ԉQп-gJϚi/[֧
,.XܮՅHz C
NA}.]b7	i"smCԆǕp{zO	e%SnÌ դ˂{Usة:h |cbNs[9 Nq0U5>/
d]HI~GAS3TU+w.bI(]bS]ZYNQ엿0ҷH$^U+5z0kx$;ɨ?<Qe!g>GMt.\)?upF@,|r
[_t!nȸ/XuSZjΟZj&+s((s]ɄAԒo|I"x^,MQ8rU;gۓV (5Gꈜ>4K)6T<TI<'Xvn$Q
j\Gr' Z7'Զz\%"q*+p=~`_]<=%$}>Oġtq-<yXuH<3nEM_Xk(
;tSZoK'MmJ["μT`6Tȕ@̪	\mS,9"zEQrfW}$Do9\H	VR2sj{S\ܽ+bVZ∖A)uSwMՑw#zٹ҂T8:Rh+ΠBGQeSn?o"㧕p+:,b`
cAE#Ahs8j{O:yks(pp֐iy{om'%n}\l X׿t%mLb~
 
r^Iԇ)K%8	{9D[j>\Me4N9n<zʸ'arS0yoZ݋.8?tQd[V}Ejq#$B,8tD	b vjC4Pz|DB͟U#Ovg:p"G^֟ɮ/1p"q^]{!EbwvC=A;0!'ZA63IW]]]ٷYuD :gቦ*=SuÂrP78C$}T
<dcײ;q@
\j8YWy0]uO/ gfd!nCؑ	wT)9K8+<Z|YO./B1`v25-tn>q$_rMS w_x;D#P|M\=bZ ':ydxqs!1M 
PaHU؊δ&OGeK2IvBzA&qת^Uy3#Bw3F{hl?ٱg1 ߔ+ dAeHi/9[!Vyf]?^iNSNR6`o{4%e">,'XGTSv|(~Q?ҮK죅hF+AF0NpS2

nB7_j4wJ;ؒc{?6sFgM{5HUes;/V -(yEowLϨN&{|fbNi_ޤ0RwZ5Gs{JCYX@RBDep8 O(~KMΦCE'KEܳP?v>{!%t$z	ߗ@t`biTQm?[Q1x>|dwN~Vբt	8b+Pɟ߱)$mkd
Q_2+
B r`3H}9ւO?<PJ)e؆z}<H#tRz7_&K?˶}:}kzׂ竕V6xh^"pS +G|
_eG?UFP]aKh;a&SKAPNƈO76%3$Q$㽧rZ~Cǻy#/bV#z}UO~᭸S<u|m!iXql55^v@
Ǐ_ZBbm tO-'R?Y_IX&A݈
sOC	;.0(vjV/>J@SoJ}Q˳u!5vT7t$B$4,8Yf.rӮ"pfMq헭Zox`ORMؒӶYؖB#S=4/0kI(sdc,YΪ5ԋ LDOeWϩȊH"`h lqxepKC{锞c\*(y_^
_Cz6HUAG*G ,U _ڜIg5pTp^yq>h~tחpz@nY凩30mP3ڔlJ4@F/ԥJ[,0t@a2<8܉:%|\
z$-_|ۆeKopխ*DcjD-:U>lJmJy|R-RN ,TI`7Qℾ}-o<`:n?9Q$~({{(^pw $hRl%2ڗnBTCk=52yt~_)"{%ޯ:o+PV}[ۿO[+IyEt ~OE&%kRV\eW%/
Bcs
Py4A6
c.-<}&ЭCL:tfG#/uĠ
Qb5N%qq# [K\kml,{Rw_nj&ߑHZ[N§2IfTW]ϰsz>`mMj8|P`{pysA|Ih-Q!R*/ "6uS{mPP셬f3#qF-P5ϭ ^wTh{855Sׂ[6߭) ¬VCMgF&LN'f0 b) (]A	omrsVunޭ~֫#޿|9֧g lV?Eħ$I%|k,ǜ{i7>5m>'v)n&v g?p`;<YcoMTG䂰=jYD+`[eRv[V_x¹2Q l wp@ FӚu~)?:+´g葐řVH*hH[~nS=J쒲`:|l"ڛ6R9<ltG.R*T=n@pT~w|cҩ\0B$̫6/e B zOUk$!۲N
,U0ɔBk=jJ77IǭP";wyZ~21__Dmsj +^ڍ9hmiw:{9h6	lxSRfρZR70a~D<2y=d}XGZɷVV;*eϤke opB Y봽Z\^`&,<Ma5ҍ%mܢ]RGC5Ymt1].N0OQݐЛW[coBJwf@ޟ=

PZvsi
6~N|%'
/T ,RY:}2zA;abO%ќ-v}tT	.qpj9OOv.7
an_k^,[Ն*>­{FP[=+fN*<jȧ)Eۑ_vtKLBHТ
6Tӓ	,5jHUZ0b2qMqh e
*Fݝ#^6	uz>@	Xf5:l9JEDl+ԧ&ݙEń2^ў7Kc9FN k7Fem&)*z=vXζ(!~nqqxydEtSK1^Eη	W]rL/jT `"k#*q;~^|N:OF6" ԝIU<u;Lt:\L9i3
(Q	7XRVx9:a^,^$'[yw<7!8p &:kBȺS|qz Yl{>4L~ϝ/8lЈ	.wEhw;ɸNzmlH8@o(#@;WJ yK&>6#3PNoO㾪"2n."/8JYZ8+6VimKjq tՒQѨQU?V*>UU=#V,WY߷Sɜ@soy9ι:CKfi-".$ BAl`
u83|l%Cm6+Quk	@b-ܜ=jl	J/LVLᚹc"M&sAe"5r:/_>Q?2QZ#69w\cG^bf {`.ַ as~.2HsT
j[+X
Vj*?24ASrR\6}jp5[FtvTTYa%	V,PGH{VBJ J
Gig^%'* ;VÁ7?u	Z T	p7P
:_8ki>Ah^K^SwvGn"㽎W]TPaA zLk?+	o-pTjO!N˻J{ Z/\Ҍwb9?+Kn,k@?Ln(&v㠣|S}wܪVW_m@^<lU姳ԭaP͏z$Ij]Nz`YU8~vݜI<˃iFfOmpM%G'Ok h	@8uܑ&[T^"	Ap'ۼ5&Z(򀬹nXxqb݃=v07bh](#*3۫Z_Hge>y8 f/@v]U+¬ddQ?zۜ[P엣ʐv
wXQA(2wx_-R)دN
js9 R'%' T8ʇFtɋ?ZH5}eyʂx@ʚ(\Sӻv.r  +7M=74ΠD 
';OC~O!;ܾHLx3alGpOE٪%#8}}piq8Rj!	)YLm"۝NdElz0DcīyfGB5W	?KU)"ɓLlbBq^U}ʈ+UkXg,Sk4-v![BMx ((FE맇aJ'IV$Esyb+ moؾki XE%脷X	`eElywpnGrBir`U":nGBc_Κ!?94>^ՑNɷV-kGe]l;nux_A7@ I$=Y]`(t'jϧGӓ\Y5q2@E#O/[}D	 ͹^ī\^dMjHb%%w=nĉPź=}Fk!!(4h.m@`YЛmmM*7+KƮ0BBV9N7U	T%Ѱ],K?r75E2盈t<֣
dэLd;mLN]ͮm:0K pWV 	S"7a豗SI9$KƟb۲DCʭUadvo'֑VҟK#Z6
9أ3_I)KAWWK%+9R/\	l
wT$ګs~hfӪ3ŭ=UXQ>"xaB	vO^*
U5-Vlm駲^tNp)2;QJ"To^֚O?wVjW)<眗פI2g"U]	MϰWm~+/go:|֊]IpUsJ
Mu2O3FM68l
:I7~@o/[ǎ3P\QZ.C(yEdwv^i,teaNwv3"7)ULiLGDdG/	+~i"ɍtp-~I^P$(}Z
1j$[	W%Bny;X h-	PMYSo1(Kr&,@{d3VF]'ճkS!h4fj9[sSJ֟.
tiDMi~ܐNVz<';("
5[Gəf9l{nG\.ܑ;p(J<b;L-C=IޟӁdT)m%ޜϦ틔VJCr؉D u[=L5wx\.ϣC{ztڙFT(eP]Cv}NZ+MQE^%MQ1V<歩PTʎ=By;*܇* a ~} ;5eCacw8wfcfx(;RA
t
)H:U-f5`^T F+ڮ7'Wzt0WU۰h!nI#x~mV|hJ-SҦ#
U%TwjŎё	9zAV,JN^f(²9szG̭-gt4D`H{X]uɗwL<%N-R5$qCb4 BHTOɶAI*m	hDc9t+8DMQkN:P#&'۰e!ԡ~ElJNfQ#"]J,P7qy</Q(nm??UɔH ~U]u8pH򩇫gb3˘Y
uT浹Y5 z:wKgY'GuhWD:
jJ4"=4ͅx¨a+,xY(ޅ|Ov2qczM#3YAV`
jT/}>>tz79N@>ᱎ*Vآ__lNк&O?>u|Aj\Wgݲwj^
slwz4^
YhI!ex_q"o@ൽNjoo;J%[cv2>X	z!sN,ʒjb`	ik)]#w*nnSD( b~	dY')Wd7@OE]8hmpaFk<Er,ko{50dk0A/JS_'{sYZCu6]̩;ھr5-Po_"ݡpq7mY&l']1Rkǐ齷ї<{WuAWj-ﲕM>a)ae
jsc}A_2@M	m<kU$@!9tuٸFwK'G,{ؚ 9q0Jz6&~s8B4ku/{A%VZ{xMjC}S5	-.m5ݪfm(٪w		KWȬǶ8)鈦`|~%iC>~::xLsPk(#LB|!ͣyu.]<@
NrZ| !իg͡yZr[|"VMؑn/\0ڼ!Mo;{j_ UX`)hwj?mⷣl{v(o)b2J^:YXZn\ZBQk|*|,6aڵ3ӹw)I1%	,?G42L%$%v)/;BvvE!_7_AO@Ҁ#l	DK{bKy~Ѷ
3
[z}U@{u,mK,fzݶyCW'	EgToZAc-翥9=oڧBeQ{ <v9/yu;1(wXABj:a›(jx[XA},fe7}񔥬v]sgl[tݓ	2)h)<U?Ǒ*?ea8"gẸ]*Uzՠ|>g1`m3k-T6I	dG}9M+||CǷ1	+iԶK
+ Oh+f_ѱ9t x]c
<SrxHKrfu4H&*94ݲ]C м]>L9	 M=%:8FzëKCb0t(I{,xyǲs>9E$
ﬞ\I&W| w{`ySQo8j"aCS~Hu2P}._^nVȷ>x%Icv_ܣ{Ǜgdn(@،%]~Q
:5a_/=zJOy.Y
<Ω]"4[2H9dW ǐU,<KHJN/d8 4O{}7dsᦹ"zdˉ+2QxY3ߢa,gsXBin¹TjOgxŧU}A"8.ddvQ=
WC,}>jb%C6=Y@hP^"VDU.0'Ve*'ؕV3včwH)V}o|*ɦGPL3;)ܝ,S#qU>{y^Hj؛8=C|vx_j=,տ?,N6	bi+z.RkѹO2//9f|xM_-hh.;afRUgZɄ7S6R?k],@Tz~{6
1
.D\
OU&q+`m}	'Ź W%>@GE 	$x6mlSRR/e{ x
[s呍6ݿ7
hupcq^eN#!&U迓ˊ
hVa6+MxfSmv+7XשׁݚNP}~؉hx4&&gq˪cP;xV4KkUY8VcS6XB>{$_n G,>)\3(*o$Ⱥ{PPXmIϲαJZ`%n Qw -#q]e'\ͣ_fρ)IO_5ȩk`@ɲv^LpΊTqf	-I7[:. bovLKr1b?n/*mOUƨ	֨RG#
PXlpnfvV"!guz̶hZ^/A;<ሙ&E ~}& }ELDxbq
?QX:6?ӂmQI{J+|:RȁGlEK. ߣ-	}~l"wfkw]LxtpPc;b/놧qP"+&[χSGKPɔ+%߰ܲiYJ&hq<8bFpbKem9c>gʋ3#koN鲺m;<Dz%,H֊L0q]rǮI
(J:EIVK?ʆspy]xp#\?<NɻFZB1[WVYwrDㆉՋie59yGhr%x)~yIGX^r16y<mi"x8 ]An7XTƺvMK$cm(\ֵyo%HkQ%+p<'<X>$:ʂ!"XLN8tqX?ڗv<?LƾAGپ%8m)gk 1] o~W]ڬ8_uPӶ`/;+1|{vUZ?>"8[ȱdwegȡ4>4Q
"vV
NЊ>b(x !f|+ř8n\kBԄwܖ=?Z5%ekR7__wJ\{ Hu#(urE	H9^Ix؟YypĜE:5-[:҄wV*#
.o@:O%)VAl)j9zl0P[biky +ڞ*$S@HJ 
 ?j8oՒi.֗A]LV
Z
lHf'3pjUP%9IJNL"Q%주	dlYkUO؛^w4Mmclivn[#	hH}i	
9	GG
Gp8
zyTfnJ
TۧX,63O]s*5Vq6>' Maw~U:6
KHwU`OIA&jew *
q7E}0Z-Z~&$
M_6;w
]?x5B+6	שG˩ܽ* c~ٔ}t;c+';9=먃&>i;gEͺꏪg93op[e
s&B,%/.ѸͮӍР>#_auKs[sW[Z ~u7j]p#)ytb{m$gRxawWr<b2 ^@UW),lp]_;"rߏ ܩx~RD@ VvZӥ/OS(]AL)Balr-WYmK>?vbEEk'3u5T ,~솪޴ʏ<CdIr1Tt(ȋGQKϽJUpbnABr hCbt,PڣMLh|'Y]>?ܝ#g>wUIk@Lpz
i2k=oRpA;;	}={l
to
U8ʲAxx?GCWomѣkAKKe}i|sư&٣,t⨦ȟQi0hyIqM/1] N38+kNUY IS?܎8J R'ZwC&3Eoxubz!doc@%~<p,>o|gwRTBrˋ\
(Dd'5gx:K.3>4?j~QZl.aEnb^x"l%{Ǽe#C{IӄOVN].D*^`jbIMPí1]_7+<{Ԩ)TDIcEÍt9A9|#A"o^\Mz%Lj:w&Kc@md)^춳P(
J4n^i5'~O6V&r'E!.1aw^Z/kٯwXYѴV˜t$5xZNmRF17HvKhyK֢/{k׫-XP}j Xg+c3TJҔٿ^, YB,|!ku_?z 
>f LuՏ(H EJ)Kz8yu"` }31Rؙ?LPz>/sd vSu|_pL5't@5>O?xHpL_j:]w	
O&7|'T[҉~xǱ@fX$,MɪsJ۵3:Z$eyu!Vz^Sˬص)
j*`FD$Dg[ߙTp8:L{mEW/8ـu?/Y7W5D!AGҞvj Yz"ت%dGD%tt[ڙٵ@ĩNW.+Ͷ}s>ƯWɅ$>VHQId6%I[zߗ4JReb#y|sR
|_ɢ-8wXT@9D&M_YsQүoAXYJP<+e{Y*ÁCaSq'aw|^mOwzQ)&z,DtH
P<҆yqފe» owFKˤxWlŮϛf:r^XTTwr5v>ʜ~lV}/X7?aaRqI"uɗӹ
I\jgM,ijaʕu/WߩOGu 	l6,''IY#'q~s7&[]Ϳ֤yVb*ՑRQMg<	 ~zs. W̨d'^;opGh0hPBDQhL<z;jQ:$罥H
#YlfW3Q^  p	:.8A` $Fixrx]g:g^{+9$TV2UԲO4m@Ү$`:XpVHB\TmwXsi/ԪTk2}T19\?Ht맕	Y
'qz~-K;"o}ʛ*jPieuUq}§! ൫ضƨNr?׽v)g |	J˧j#5)ix"ݮ͔p}EǉF16c.GG|'8m@(b4.&q28D+L_q`2l|Ci+jZIRÙ(	\vrPɉC67,⑃uZO.Y.ams*5;oنI&Xy3Dڜ(=I9dMM+ sTx0UTHݫ&jWVa!z֒#:G#u4
^z*.ڀ pOEVcI}vɯ[ɞ:/ElvU(*KŐ׭RwXԭ;voY4i 0 7Kl kA12[Rxe QDkrP1v/Fuv\h&Nq$kyvb8QCG·"7CbrLtHL5$6tFZ<n$<7Ig:1v5z_OkI vؿmW`ʞO7`1G=}oajTuvYCU;dKKC)=]A*Jgm^9Rc.:Un'ST(sGzqF:4 HQg4|nͭ.{EDuԄ\r(Xj-G-TN|efZ"%Xi_bj:gޠ: Ǟ^ԟ
gD?d;^OӢOؼ}e!%!6!	ZK59vy}.^|-r]%Ϡ7E5~Ot@+m{tmݳ@n ٩#f 
1Ye!kzz~JIF?'>raذIl^oFr(rS%VyLMO<u<9Ty 7j9B'tNُ5Us!֙z@^) T7+ًgKٖ^:/
SPPlYcT@~[ 93;yd"[z{혯Gf
&]}jҽ8dp n݋~d:mK.>4˒W3XxVͪ&->|S;T6HC)zZA2I4j<EC]^Y1:bjƟ
wN?؛^yI~NYo7Oﲒ,_pg$O8oK#;V"{Rδ4cFqnNW3kOі#=I32~D eCm iToXR@%/}q*(dO3H'G0TmtP5*6NT5
3,V]5yKxaйvd	ST$i{ntZ)pZFA2A\'j [uh2r8ܟ6^ -Gg5%̴C9GlہɃqM%t
,!ǷjՃ
s
WtK=)+k{N̦j6`as߭mG[*U /ONnʯB6sy+'? .	m҄# ^Yښ>!gЎn6A9u,pN/%ߢAԇa 5pmHщeOj@RY5Yk`=2Ϋh^Ϯ n[F4(uSkT
3y@yw|^G«=h`cZ
;/A9י޿_
gmr;p2݊@kZ]Cfc%gU>99=}6Nշ.#ۿpU
D.0>5~+ &7;qsn8:zm"gk2C^tE.uo+kLS=Uw!<M;ݸ0{#moKBvե>ka8NGH)w_Q'}m6Cgsz
G=U-9%Q?]y/ >H%Z	BOŲmwlA5[M
߶r_gn5_İ}?oNةpwfuS
Q0~o_;|Dp	Z.m[G[@aWsY&,SHcp	I篷
^?|=ZELu^}	5Ǚ}+2䛬Q(o[yp6Nާ􁚒``>]) C<m8T^N詸[u
X琓BJYi{ +ǁݙSl)at;oU٪QD̺<JH-l Yg.[{ں]ߩ}	4
D?6Iǜ8:V$M)ft]bZ_#%yd).%7U"P+:'A5A
r9`|IO&@Q̾l4o-juN?]vר+t2e߰T |w^/e(1vlmC{aM{Rjdf؝}Ao6xJ3|*K	$1jȕ`V砛/K\z''d no9ay;=tPV7Sf9tp+@jxsWO2?[K2J6䭱r
p%RGy	IwDkWXP##e>ޭ~6NЗJir	އ7!l*:<-Y~Q; Wz[oz|mͰfdh%`>ڐ_MHk7倘:
ʽMDy&+(LE0Z@j qVئ(qCzmE w)sI9u~C䣠\qxbuǶ[1jA|d'a~ځ7KF%`n7Vܚ1jcc;KU&[55km^;=߳I #O	 M=}N	:ǏOE'ȞOG
xq}]x]˱kpz"/ˢT{:~ [aZ܆d~)KZ p
qoM	
 GJvuz	Gyw$hDa$I6{
Jyڋ[;[NBJrmO9;;E}:O5ypጟx-V6sxS}^Wg)94)A.	[H͑wj"mWӊ p:X
k
}D/B۹7hyvmj\-ܽ8;b%^`C	|hubeQ@ģ#jw5DdEmQЧh"Q$Lg!cq8'ӑ;%%oTn_=HTEqy"kPH
aw*gR;jlξ7l!TpZ߿9^˷[IrHl)iRF@w3֗{$_g*gGʑ-÷GiO=C`#f>{sJx4
%!އ^Cn7(Zϲ
D EQr>?ZDS$QÆz=6JpxB{hǭ@FrŚC0Ƒcl$w4vqz_H*䅤<a@~f
ǽV΂#B g 2yVQ(;aeu~	yA'ǈ\982+QzbȺ &fo ^ͱ&Fli>Zp j1E`g6mN5XK(#'
#Jؚz
ݜ8Z>:D-KxO`?	nyU)=b1]b}%V@sn:)3`u)CL4UhOnkl&E~k<4i5R}y{/zVOF2w,H_	%x%?6yk(RD?h!B@=xaC@afM+yڷn\Շ<@w3sRgaxi&WZp|S^1 p
bP~ԫ@ZMz|a*^{e@Oׯ1)Z~kqR؉{ -+lԠ`
^5~Z=",SU[k6[8pXμ3?7{ =Y[
0Yy^NeRcMSpdQkj9z,\IXg9v">
on.ӣ*ڀ"T62@m*SHx6kx޼~""l<RYXrcq<~Vt~ՌZ$OPq~+U;UI0pfV_A(G	YW8v椬彏&nLH'/%hG&b±XNpĄ̟7Zq̭ՍJWsM ΅Gsz \=QBkR`	ap:~?\a4ɹᅌG"k+çBdN4Քr$ScSɌvF_զf;pd%݂H뇫"tFIFvM iUFVU6E40hU|G+dbZm7wa[eس. X/ҬnDbO?>LK%ҡuczөJT}9ᇥɩB90.G^Xu=cxHܥK	amr1]\ޚaA*ϮZ7x:>  Exy3Q7x=*8_
8	& j*	<poAX@c>i
:фm6q=@2٩'c\ne#?i
Jv
:F҂X%>zE簜~Մ2)q"Ӿ43)n7T!G`Rwpޘ"-c:4"	[%Vfĥ.u5pH9lX M"N,L9/ߴ
lݿmt9.ER+z~3gwF䨩]Ru=A4k:9
|kIsBƉ5D\Mlk5	s|ZVC
Nld`yQIZP˿BFW^ܷ7WG*1
9P`5{h_~*F)tvu!k5Mê{kbH(Z%I bD!qd&ba"ZYݻEZ+YtݠPW6`L}o5gTVt\pbW=c	y:,2:yz
u'A{:qܱ%}+VSvpƼ*2mSg;_XGGAP-`ڞm'U4?kaB_Wsr3E^γ
Ts/󑳡s5v\j/xu&}Q
gfQ0
 4n<_%zP]YȝVdlɧ"RYc,:X|WΚ5дofS WKu+II
]d5$yWA^	hoV;:0ѓ 2֕fi 4{#xw5 ISeGILE	70mȭO 
eeTC(o
ZQ Ajw鿽yd{zH5BDlv,ƎiKMl{xguCSSWBry;s@ Z<Ty<2o#;#1?ު9'ۺW@͚3^`Mws˴
tQ$sI۳Kv uDx,hF<נeL[QGҺ<_Y-3Ur2oLpdŸmv>ɋRm[f^>8ahɦuYJڢia7O/GZDŠ2żfַze eU#I!TTRʖEhZx|6c@݁yQjP_zxFˡ:Ik>;c@?G$_Ѯd"-DI
 vq(O$}FfDfM)?
p ozbiWtVQ=j?1Zм?O,m9eɹngH.退K0ʻVIsFY_bA'E#?`Vp) __]gk#&dmv``ش2.AZ$V8WVSjfKe uz_>ڼyPUyE91P)B{ZqT-^ç$_%|CSX
t`khAڄ%c{t6YFT"?A5TTj-B g3{< N
8q-eݜ:FLU8}WPE!d;SA $Jqp{O{V;g99@Ӻ,>w{YͰy-㍯$ă[ARgt-JG# Uj?!.\4ƦV?@QUnVӦB3udzq܄ ~S]+]kS>hNVq=НHP!Z9vs0vTz>(YTRI3K;1L$LE;nݐXrסC̭%Ǻ9.	Br|1).ے
2];aǈE}ތU!Y@R0TS.
R݀'oX~?mi|9J9<P} ukI-&KS(n/-j[nfC;nB`~9{-aφ|cUcNg|oz=Ήۛͺxl)Η7_@/$P
4,,Rƥ~?u@nvV+<	K?>3QjX^5ys"o=@}@TN9}_WY@,Vr
'B,N
]=pv.@<5t.x~]Z6}*6Ue 9S0 "ͻ'3gT`4`'-<;Puyjakiȓb
{CsjJX16#Kwsv@ p;Mz Qgz:KFDf
vw;99l^'&Y`rtҠ5;͞瘺:WMxH`HhE|a5`Zz`:(0Mp":i57h0irR
G|$hR
U]\ŵ}@kG~]RRnݜ+u\AsFa\IS	Ɲ	9V&o-h.kRP,D
>@~ȘNH٩:f+W84;\^kAideΥY}yGlv;'xjց˾^N\C?unI?b~Հr:V<:̱xIq2&0t܊θVΤCxC]<6v4De!HN2j|kecs=ve+vqwH)O}
9;An_gX=469S wٳ^{DIN&q
%Fuh]ԂՋ;刯wGJ/Z{*E~;BȾ5uP|LS=&dIJڿ|۶9q[߅Ow]o0j
b
wig%@ 8D5K{M£=8#{M?B li)AL]HX[9<DvOe$঄z*jO;9ú3%ߕW'TMvJ6T^?(1x$W#Z,t)NIY^+̗WFlAc6"WlӠӚ]j3*6a_wpष}k\_mTB4DgˊX8hk$yryj2F}~D;w2TQw#h~60X޸ڝP
	  ODy$m5^`*z2вs1wlޮOvZ,?C	^\>BlQ۲;5Z@ĭ\ius$#RgI$>@|n﮵
l"=e		77YzoFElOg!}vc/V2"GoK>KK5GIwol3,j߸!o񆗟&ݐ
zN{"xwiAi,*7ހq OVj(*;fQP!qnǹ|~'#~Y_ᶥmx8<AjKS݇-J;a\z:<JĽwW8AL+pTg_հt##5eK
n$U'}7K: q\Kݺo7'Tτw+5{~=h@_GU'+81ʴE<^i`/N*N=!n2FPQu4paG6.՗Qt#X
a}lqU	ز+;o1`ɍXvj\nLm [mtYY$3صiv+rO`[,I)C^%\gW+9;`^Rug_ls"wP=o[t?f缀>AGlR!E]ng%֥㝞~٣6K*vtܐmO>E~j$ZKo}`|l Wۖ井
w¯ֈ+7
EϵY/˯A&|U,gйh:*;";狀eK҉Q}ӪU>^뷃Z'>8QzU Ey^=i^hVhЯë6S6[}jAy_mZL1'l i>\?vd_G<%D:]\Q+yY&20z;eg#p$UlgUayM$=6g_ x=I\|<:4"z68
z~19q	(T{9IUOJ»Wh6@t8۰Wի:z(&[`R|?vj5r#AR]WKtUm9UR3XII@פP~K$Hޜ7gCVAPTTsF0Mn''@-v<oq2FnAМ=Y|ՔLmbY_R7[獕n:)kެV9s欲mS[KN*눥*]`񋧜1[ypBH/(Ȼ+ jἒ
ׂ5/[o]o&P{ӧ4\/Bxn{4EGTN0=4e/2{Er5OKN:I?o캧%DM`MHzڙ(]5 )y_H_pͽu
tӧ~egB@)i
t@MOΈ)_x=eM6ʴ0[=zBC1]]ZLBpr`W5s)r$vU$^϶oH9sD3UtQ_j?Ϡbtwd8oON_5F`֫h>ey;82f=٩dDmyīW^64H
aȄz:oZ=!Y'Q32.AݥT\hWtYK	Rr	(֙ t g'*hssY+ *yߥI(؁(=`v<GOPj,*R68vAb|;{gx˔2yVi!cdmH$i|>gwIbx>$O\T'؜2$))xU>y&@(FBz:hes&3g]lj-pG+_w匍> $_}7QFb
HA}lW$j|0;˭"yHGɆÖ"j׫5g1xXMqLQdsN5i(ADnX'QwE~Wb0x3'~%k~d]%e/Q⥽fkABŭ
X:t68?-{#d:Ѷ&Z'|n\Ryns98níXUW}#_qC{Ԗ^2Tes*U	SǿF~{Xxu~yݮwE>h-َ=wޢMY.kUQJ|T椻
cp{(&ee7GщD `jA{	7B諴^ƣJʧc^6փiIi%xѺlS3.IVwPp(%{yKW}WnR=iaH(@N֠)/^[HJRط_T,3rt.Q[R	YNQ]EZw!_%h%`eyuK֣/Wb&6q4!SYQvm lÛP|l6CZț
{}kgDmC<ǖs6j^EXcz'T &8cp@!T`K߲GC)N*`:|;ݗ/1Yw0lFwAX}|L2m
n͌v!EY+8h|["|Gk\l`{	Jd jD}<
p0]KJ&`0 xOwllb=iP]8筃I9 ^JˁɀЫ,IM\P$,?zӂ9=	V[gQE3Z8>R9@M
RW8-}.d^?kRRIF>*Ӛ9[9yc<L\k:s2\TIu3l4p->|g_W.JUu3ЇH7lu8OB}.^jN%@ދMJ[
fx=S65'|u)ָTz6MExt!Pfѭ\9t%y:`QZ0!m)hc'(ftm)|	
X![.NUrvb\U=UPϽt1{jk[t3^*|C)ktO[u:1oF pOy y
0NC_^	T.?vD&_=:#$vm?wv uGya79x
>f ſ>a	XC])wÄHkZDNd#819 hBq"5zU5b/rE.IZ2?,/ jU[c]̯-_G ؖRśvǒ=NaEe[raMӥ.SO=UfT&HX`Nl\6;²5F27yD
6k͞'p ۷hUN<^>2DSUZ@Ɏ]5$Ѿ/
+9qmCXp,YDF5
wdWYW?3-sh GyU@|U`kDP)h!6_r\d;slڻ,[Dy;mUͥ;ݶߜ
Nds˖\Ŗl!@ 7IܓkԨʌ],>-Gwy&5"UXm2B9 ߬ە<9ygg-rM`iBxE٥oܰ9:$EE1?>r8tNfHUWUƠϓlƎ#)$-iB~N:")RT9N	!nũ61_Npܿ+{ƋTUY֥hj-B$X@Nʗqq?q\W+fLANGpF=ĭsr.2D(x߭Au
+Wjz*^km}xB{rF5:{.jV3֋ݑEv8(I 聡gontƬj^/A:rG[P#vGqJKx:G:W:t\ҌV^߭2UdYC'`+siYvUP'#X)xg44#KԂE2Ugỵ2Gp
lg]OQŜ#ޣ_x-yXSe͡J\)ùI{|C:g./'O7r֤Fɥvjm8%
5TM:Gޕ`zH%fO_ŕkpS!hXz0@Kk\~~|KEͪ8aOGκoWa%T)z|_ޛ`WZz$C2W$~&(0l8m]w;ybSOZ	Spv)V9)<Ϯ&{	WQCGk@x8L.Lǁcp%Tk[Kkٹ\A7T퀿P@2	?Ȓ< 43Gk{_g$n_]Yϣߕn#/OTtsm fpRT_%i,R̩N[A%+`Zh<ꎪZjJD=<W#xo܆ُ7Az"wc
>e倿
p6=>.~LLe8 XM2%DG8*CCKdwj@6N݁WW
zm hç@vOT3*F|qlpu%9&"7egY<U2XϜ1r%Ģ;1GG%p;dAr}6yZnqA?7݉"W]&ؠ-ȧBc3)KP*RY(+1Nͮg6-|6\<NTFI3xIkM١&:Bk9uT
<{`[s.G`M~\8H
Yـ@MǛ#M +P5S|vzAEHǁ,mC\ R2}Pi@$v/?JOWIi|@ygV U+$U&|TG%3>wfW0D۲)Vw	x_,ۄ:M*O$& l[H6Êi"nqFVd75.21)`v
z4"Jrpd޷&Mv<f~珷JU!x}6o#ktFκwZn]ʁ:xm[Ժ(==o͵IJXN:G@~ƴ\y'EeYIUR1#9h˓+\иBW٥uu;ZI/^9
Ca[q7$m8eʀd׺\i2TϩS#n/*V^puqB
~0l+x0e/E
I<UjZǤUyo87-sS%"(PA޶ժ3D^:JùN<
liZjz-tG@5
\\ 	B^WH^xN\^6t8Q37]CsF!ytm?sfGv[K#~SH7hasd2i
 O-paTsnio	{XhZҋsŽ蘧'ڊtbG?[|#$v5y{Ss,>N;{b$f$lhz$-ZZr錛v}':^JR*j$|jwJ1ѷ:խg^\2S}0I3bCcP"7[z
'U[hǳ&|/g+^Z-z*#,םNgk&*}ɥ{n@[wܜ?R=Gdc;3 u ??%Qgm ćRYdv|SÁ|j*Bs8Gg4SI
:P1dP  '5ڧE/*8*t2_fZ#ʽ>/G6`Wrk3$,% qK}uSf*J'Oh8xr4 j<1̮^JېQU_iCi{V>ߊ_[+țcmIn=ݷ=*V~Klx.r_q81IgH"a= ][Xl.Ct}J7B]PY)~;S QqW]{):^Bөc!j?QvT/Ƿ^j(:e
@ҥ[#${.ł^.z"sopǆ;/;+6gmf\ACyonbϨzBђllM=)!GO9eӈH;]jr+F~1wAt@:[Fҧt<|M5୫dWi%jAf>]dc_
T]vpLOZ+[s"Vܢ=p`nLJT(smn8յV=[cTmq~ʄ6QU=6pR.`#	rL3J1K>M56LpAx/-)b*(3Lpo.e"tdU)G+YqX{cAU0_H*
n,sͺ)&1nB, xѤ6>璚 ]8'v^(z|x
@g@#8Z͡?KCjr9kr]}5kRul`0D4B"J~$-ۀ$<t'~NB`QsmfMQf*ԫQ_1<ꧽދD=;R0H}`MTG?!*X7ǩʅQGoGG&e
8ep5՚mB̲T;(g 4YJtSIRI)<e{[uj4v&*ˋrtڎ2mpT>4h3L%t
v"uѫ.#Ԙ֧/g*]PO1P_}$SDXWgtyMGu8,?O/ GrU.N{צvS/qk϶	bq(Oeu\>R!<f]Q >h521qa ۗDr=Wp.O<u^}ǂ\YB:IQ'>>0~3Y}d&NG*IޏN^+۬1}~%vB*t$WųS)MxS@[k}]
FG^`ՄE)q-nշ=QJ8'ݴ")=	Jl8TM^;xI,U(:,_`&'ycF(Q0@0iy߫vܛXnO0>hBLAbu'
7;9V{EUhcnjdJ0C}K[Z^@TдKж_h+dlN9MLl>iFz5c!gi	E~.k]MWgXni?Au0|nF-N@+~̡Y+#0xS/~zƚdbطU!\{-Dv}q{3>rȫ}39A\輁m8tYxXat6Xx&gs+sB8,C˃70nHVr\v#r~s(p6YDЭs[Vߊp<'6.rX*>Urf
J=OlzN`W[atKQ-۰E#=mrQ\#dw_TTS[2cX=2qQ&=RS#GMw@e=܎Fƣ.?n
+ eXgiUt_ ysƜ}ӜRg2o]}/{^1̩C]>8wӦxTAEm(G&!'CipEŃ1TH^g`C@,F0Q+Iju8m^|$
qt%Dx8 ˩N6&yqK[)Gq9ڀL~Kn]͎6
@MM'!+k$)}l"v8a)!:];Ǒ;x¡gݚ,7;띀/_RX==O-k)F	f!UoHzķ8W^p."&]9$G8jKfIJfI~8v䔼=`rtМ7]
Q]|@aMHg)fN4?[
|ľ9BD&w1%־(4maa)jK%(%
;#9	ƺW
%TɰuƂ^j76pUBk4~h%jK}uʾ)}￀kz|0ȴ	9⡣^<N_^uc{Hf#܊&
pIc4F=s-_6j緩v՜(٥'OOiʶsXRVLNHt@4 Foq|9=uf s)b')^~UIIp;f[xpi[@ydN0w[1rSȜOJ⿄$FUIޤ;.ǣ.A&@Gtb%]t]nF;ZU+sK5gb!3K,4<7=+6\Tn9G%^#0
~O,"K#:-dVSA#olR; ,fYv	6(]xK> \#G@ӥ?I%2ry+Yktm4I<_v	l{}ᬗi<+G<Z#֔TÛڊ4|DyA9ݑKñvCuD|n`]^(Yp">p*GWP?Gyy8{`yYC{ lJ%:7`Nt~%k	y*1pN+|)0Cp|U]*_AVC-߶t HYnKBO.ɒa{Ů1}W,wrp,T/3WM-^讲?]jZtñ;fbJE91:sY9!AaC;WK'׈aWhvjej±$+C؜m
UJo͝Y.O^*
4R$&iﾴ{
`*QoMdHHw{-sÎ[ڟ)	'Vwnʗ(}_A}"3%{9U5еR&(qPTDV(rjr
:`NaRp^Tyy)f%>qUQ !*6ZNp!߈O2U i+ꃻFYڝ(~._N`ۜVgR9Zvy^vvۜ}l_d笥g9"snG;"*Q3R9~rh
-};d*0s쬠@J~;,	o?9y	Lۅq#r<!'opp\NNy|S*3w^i{J_50p0Pj8}t&;.c^fR -AV}D4,wU
!|4.
at' /mSeTڒH=
?&]r<o?Vp44隥9Yu^k81J@@NtOEnV?7 y1[Q6neЂE*;|ץ+ɿ!(IV
:nۮ<_/Ls\lfkL10t	^%5j8ek{=7D$R1huݙ+5`hj<S8O_pu@㻟֪	O?1k R99CsH|pXb=48!f[?4Ym%R@'JE3-)y.dGRI2ޮ/|BeHuA}Ǻ\A
=3	"4M`N&PZU33=V9Bk6yu({iPB3ZVwSb"7jjtΚ­OQ"m}]A\tl~6JȺn]'_N3(R+6?qY^93}&gۗ}p6' *[u $&Eu69/}dKe4X-C&u*ϣǍ pҵPGqJH*asŖ켶<|6i4wㄫ`/bѧ~{t&tyF_>F?}SDGa5ӣ.fu oót%TYw<"*CŇȯtleaS[r5u6҅q]OCgH|GLB *J	J"<xc4%)@v2bFgj(!B}a g@15(x\f ێ;l
7JK5N*Sl^-Q~w+sGj.MN;^G
irݕr!īࠠ.P?v~=Xpyj ԉcygd୑4	cQ Cwr˝4KXlw܆= x
L	@]-J'qV	@JxxʉR.p.2E{[MIŲfP
!{
2yhuT<Hb`7C4$Q~ۏlb@/r+M~
`eG`ǉpIW ~<Uwxp'GE}Zs-V:  
 mms4zԃJ{@9nKF(NE܏y+-bW<F`kwO:uopNsS5y1^`&FfzK`j-/{8}{hxQQ:.d>G9GtugY"YYx2#TseB){4&zBq$]C{&w\Pi	"MɈqבXYOTvwJR4}<by,oͱ6lPܼl~TEjEQU6Hʓ'e7A|B({E
f(p%h
9s,NVRr xFMWV!>E.SmA@ݪ1dYN%V̈́ӗge0Rqhtdį19z]d}ҞT/ڎUoNnU.QeĹQbF8n;wg0/T~L
EΎnUW K>1TE?ު"xTwkݖռoe	O5*#wr9t;?b	6?<x2^դ5w^Ktz6"\WZ3Eݺ|u9_7T`M{*{Κ?5E/ǥ$N(;[tYtq	'iG
gKm1db	cWO
Oe_*Gx
 p|p{vJA_/mC<-w5J$wtZqR58<>,A.Ž\9	'H|"?MT O!g8A(p>V-bI_{IE /g@}+qQoo. hqB߈n%CvʮW{:oQFm@r936&u}n,vc˄Xjc
mɰ}^XܥVW#sgrώ]h]Bj֊<Adw"Tt8ԝ^RnӽDI8	_e}5@tz@:K ^4f&b*C"+{8957ZoBUF6{!Mw׶?99 j@Y'j[W$zoi- LRK#|4
׼`/uB^:nWZ)n5ȶI#Ngl{1DdWuw_
*v~E"-a?^G.)>C9o+_>H`jSWA{DʜOվz<萀3 c%`]ji+)n45.Wi(zP%jWw!j	g+5<-D-	~u>YLRRdMQZdH{Y$Xs^)7~˚st 3j/(L:&_
F<ZǉK.OiiRq>>ԸH;ͱB}c֝u@w裀&B.ᗫ*?pO3U36Zs].%] `ןp~9@$tWs؇2^r*ukjn*JT0NQ
gXY֏} NZWNA#qFaqV6<K3rU# x4̯wJ/v_w:5^U:3\S.-
}4-^^'5"sP5WQٞډ*Un4X-|G"V!wUgulgN^e77֗5D)WJѯ/\#"5D
=Ր?Pz)&z;]䪪BByvN$wZ
q9KJH-AVRڷ~CCX!\KՊVk=i
#~Q,&MA?M $W,0<s}ځ~76̯+@唬4p4ٚV)?,9T>>c' s	$,px2x:mZ$?G Թ
!
厏
NڿF-wem5C2n;|~|HGhtԆoEF('naZPwg!F&()@5n3^B\-h
rpuu#Is_
0AH]~Ty
F7EJܐjj8vw%VHgЗS,F;4.6~25}"ѩUN|[ޒ*
Ώ.Yøc.7͉\_m]݉pbPe5D XA䳛uz7bI|tuUjSUr
eRO➵K	Y:;|]ss1Vi 9FXۡ 4
p(gqv+{
^3l-P&q[yc_Gc\auVF%da:PUҧczfj:5%n8e&hGS`jA]f>̣Éw!H`vG㸥a=m'$~7`s3!1}osDN^~Rfh$='s'\Q/*V(LK(PI
(xr
x[}ٞL/k|<:ش?zkݏ"=K;J)Z:mcPz@iv?	9?[~&WRj?Uh ݎiTb$K(^h4>{lG(`O =~.Q
WU;kH÷t%@)$]ZE.V%dj2؉Nk x;hs8	M ʠ(xη*ZuGAԺfrlMr^FO6c+p+C4;g[q`PȂ<G׿}wpJ눮oU'N%u8>M>E  q<a\kPn3B-ֈSEgGy{|=zs]ז뵭;
U*ZƴC1D^>ݲ$8R0^|~
Xi&#fD?òp7Ȓ{Pcy[^ѫθ4"Tkuݪ$
J`uM܃.L%иb]Եrp,m_m)/ukw[JEY
UVUFU:R(ݏ@FHU+!.X	oM5krܽNBW8 8<ܺ
D&'2[Ps8跏¤`=#%xi.!-cx6]aFht#k]런۱!82Jz
cCA6̀ǲ}wEK.u_Ap[mEQt

V\h{;cSl
:EBByR:+ nܝ'/`=t_U4Sλ^ΞkAU
xYati_ o=(Ԕ\q<TeZ@0vH-mf$TD	d(Z6Xkj=QZ˳W|΂fPzgGHo&);	f'uLe-d.Y19e}6kI	l
lF[ $o;]e[a37+H8Y^GKOj?=s.DDY=r9͠S(
**-.^g엒,Ϭ[s#1Ìk:ĻLr;C(MJI-U5 Lg183ܕΪ}9L}rC_Ձ# r>8F6,8w@Fہ`tp,{7tJ+؜oGD[-SRW~Ł,D%5b>@ 2'90ˁ`
kj}ȼ~<f.e^gX-KTx]vtyC@Xun. |ؓCBLr'Oq8Rj9ŏ81^<:qVUI%_.}L">Xf~Cfv\|15W%	70bdx{b"V
zNĘ!
QtTuJ^Fqz@Ys߮]5ަ*V]2(%{Mmz#ܓWQM:QkuvSc]CI[ptrqg|,Gǁ@#<me65{#?  r{N@jr7%'cӛgǛ-b&dTy7>0E2޵IVpҭHU`)]_1Y&tdOH?a:4&9Y?
v-':\AVWH ?'f\j2rWrG_<#U$RxLfj P75eEݧԮzяZ1
]\ Zv~a)R>r<`RmR/-26ozڿt:>~zjV#ߠwb:B:h]SLd{ưPCەpE9W`Z&e)u
R>#YD̧\+
A%SE,.O/WfhQXS}l\xf|Qzp=؃R?!nmQ_|X0Ho&|3J6MZ0x^S+e"A}SWdzIcPt"n`SVFgZW3*hoMs bPY,u"A:B.c,s7e6ep_ҎK!5ߊ\Poi]Xޟ&­qގpwwhuiDd1<;$J~;Y:G1-V6щ8z_;]M_3iG01_-lùR{Z uާExoK$;Wۮ@rU8r`a!䢮S'<Xz>VzҬ
OX	hҩ?x#τGsi
#Mf;+|>׵l1ATȕbeu @vH$g9=嬼gĎ2*N*lH?|{+9yA$	ik5>ryT^Io`,,0ቜ15H0*_=-?ɯ?O]VzjU@GUʫjpDL<;JD!w[	b>6vTnJKI:9_Nuҝ#NkS"9d>@?塹ծ8T+P}h݋ƩwxE1.\/h3gbMwՀ'q%r	o Fhz)w린%4w67cg{&FRC܎evȂ*#} YN 芙@
&OZZ-'ȵhh*-4 -U@BM钙27Ց=|D	OZӻ=ʁWCp^nEOWGgK_t+!u]<2:k@^,81c'A}=^U)8$ -))⁨xv{ۧ~!0+bHn):;	qUޥu3a.H$YGIaDt]@͙PQ5[x(1Hkehשۮv~4QdW"&{U[_P-eh3'?fgq0^\ >p5pO-4V-&]<kiIT]<&q>Z9񑤛,zl2TO ].uPOK:$xZwxUgމ*PwKv.,txU8cl*jҐ=-]~}SWGd+4vcuz8J}~2qD	^ʮ rՋPc\\;m|+zzҸq|2ꀈ-X3,>BZK%$IITt_b:˃~"TÝ'q0xHni
H@m8ut$UPY7r(9_\#s	1܂&ad/zמ HE4n/fMxǷP9ߪ1aE|Ǣto;kiBtGDKȄwSp*:1e6
JM_<4R.mH
@w{8Yy0ZK+ʈ
ךڴ}읾ˎzad(?mKS
4t5t>6j!DǑZ,A)o1#3ݍygF݇#iv9ysPT^Hd)l ]h>p$,Rޜ5<sn%0D[̦uA̓54?=aȗ6bJf%,5nFļ4q#&[o0s:;[=h{tjӼv
nZouT-:F.`/kNė;*Y"'P6li9O'l
B*FFU
j5%`8T2f[	/z: L"W"kt
eM,ǊÐe";\=mgV
4AΤzPC
ԋΠO=
Ik!i|?z}]Sb*AppOymu*:VTOl5apw})01pШ)RI%zyw]-|?|_#RGŁK2\4Suԝ4p1Lk;A<%T'0wv(r2
gBcG	r{	w<"oc=w`;ʬ23)vulv32%>Ϣؿ:ѭut^JfY_,qrM';
@WovAxUU5fLbͶ_xRxm׸AoYCE{^X3Jͩvol빤ۋ&9G(Վ唦p%D֦Z>6gݮAJ<vJx= Ρ@r8-ZVՁHS-<yw*;8\ j~dW+\$@w'GmP	͑
HKW ݀(fRrsG5o^J.th#ؘ*7qy&@G
Go^wr9OK0m	/!tAʓ`]#Y:}<3R-Қ{(dv(OVɦf\ԩ!O\ar7o6RMJ@n7	4K*IEFbp䰴0{hܔ\Ǝ7
Z1pC	lf
0X#B*#֪w{3"hKi604.G>
@>ygܤ(1]@rT=	[!WT9@  	D3{0̓~o6_<	^eRy?.<֖8DA]";Yu@@{Znic;C9:L<@VȂc9uBLJ7 cXʓt䙻xY_
l.fviu#=:c@CCj=1훊dM*=p"=uEj0QZH-AKtp)O^͐z4Lv>r}yakH3>g`ʹ쀟75j&<jS-IO`mˋRZm%0g&Z
q<4tR6:\6#{oIz\u܊^O:#pw뜑pO}ǕЦ5T\%&b/mjb_٢RC&RUIQ^kp,`RG)^c׵Ym=y.Ƶ|[LX
mǁXU<ʠj77S; VރYON0s(R~|msbhrnR?nk$ty3R\ϵ:.Y&}%{JNh}#8dBX)g1<[g,Y.,ѥwo(n?r6t9A9xU[ࡦB&}
M}{L},|m6Q"Dt [

;_sq
律/̵y
n

nڅU:A֯zO%UA>LNk8A-rm#zl
T$PcPGN1`$0ǂ-	6sg`AViTcϔ/T"?џq
`NWs	 SMYn[m8Sxl9!W;v#uݕ޺K5C>nj~ޥ+^umn?2N񞶦V0ҤkmajtEoV]Uݹ.GΣ 7T4T-%[Z~ӻ;eS.
Fٻt	H)I|
:#4bI!rɎ{k-R;8NVܱ
yFK9rtyۉj }[C wQ
,:tJ,n2WBZbxoy/zqplY&%WznvXURD>ת烥ݭ>f>z1)]QP >JxT(DbMSЊt-LWlx4VI J@sR;}5(q[&Hzy>\XM5`R%?;(1[@{6\ة,Rr&W8*.oWjfpMy.y$3{ ÙB@tɎ?zJVcQX2rDG-k7˫*7i<]-7e>m>.Zo4?PԅD^9>ɊZ4<O=
'y\=rWrrs-KKwazo/͗J!+|J/jdۥ5˫DJ Qn7oX3"dej*LtZ0K+-	n`<KE׮ٶUWY
q<ͳ~:nDeFpGk'X}U7\ e8cu8nlT D2~*E@ aJpdrX`F}M)қJNk¤vle,FX9rvsLgC{cU?
NfAImi""F8DLGfuxTm3av=J1'˗o [CG-zJ6?®ʈsY=r4
I X\ lHwJ}fEAҖm2yL
]ih5bF?C\ZΙkK
4깣:-8đ#3o}7YHjfhzյ
T֯2AfWD_7`H1rE
3gzޢ3tq.8l|rPS{T9]
.ּCSdj7aЊsi"hN{R;n"'ER   ;14VEzGBU8U&gFӟU :xNiE8wCܨ닽]a/Bn`w7ՠ-oq	yM5]b-+wTis<|
HKwV|7Nl	7Q7/, ^^;$ez##Vfttt<||B3<53~[
e} R3cFqgY7V% ۛ<G7=3'o\es}9㞅N.9Dxv?͸bl
?c5nglq 柪9G<؉Qףa*GRrkvE|]SD75iQ'i^EV]7<e6`^>z[B3(5'%d*b S-pPtcjV&qmU%QEᯩ$5$Zt{#ītoq9} a  8UgkUnJf{IZ^/]N׳yw\\6uR ur֪ivYi7V6.Ω$VW0s45b7]UPߎpt?.V916POr?硾r,I-=v |J$A0#
?-yү
~T5VmA]ٞ?%f[Ivț$D`ٖ-}LRwADq(/E>
擷-SuS@4_OrƜtam8spMC${㋚0'|qхx)Zy H+9NޟGkxtђ/+Wr	Iw-rSQON)%,LqlWy(ތ6zjqò5{P^˯Hfx[^SJJyO/;3Z3[K6| )	I=N5!sƓFזJ
mݣ	@4n}|O!WM
rގci:b1|(S.ZoEck:B`WSáVR-<60TXhv4AA^ni-nAo|~I11%ĩORڛI]UB>*ʙOƇ?jqe7F>y	1[??`bu<tWMS5 8:$}~G
ݳ0,rpУ F:Wj[ "qQyꮫТJ.QҐ[ntݝ^4kR_s։UesTD 䑹`x ,xJ*W\4-*wiU1&3EW-R`H?Dp='jj+ųkK .)n>)X2Al{~κsfܖp!cxRnP:o0kv6enM-FwY!H]J_e!g(/CVUq7c s0LwXnds?;Gڎ=: (ܨ]@+~ܗ(v5١&
ydj0Umq}m"&&/@Pu	~6qZ³x Ld@:w9|ta$=OZǭu'Uf{'t]K|qnǑGs|q|tH
z?\vzsy	ߡ蜑fpI'j'%8\ǐ=]d
˜ppW^jeҋMapc`@i
eW͠7{b`XI!ug`MZ*߮vD6.OS5V}rF|G/_sAnvz~`Zj1vEe9݅H\I7=
T'^遛p34TSBGWMa/<6) 1)	Htq'l묚PM>:{iUY6󂀣s^Aǁyǔ+nDq88UFz+Jf$WK0U&B'v6"^"]
P: TxTZJgl="5[ްyI7o{H$Z[G.[ICG's$%n>\/ xܷ?g^pUц:|[^RMK^c<^ɪtq#|lZ_$wQFzo{3 '?AUQ~9lsn}?VQu^\љ(lT4"#筯y\R^*I$/<eG$ԙiD?NX窃"*
,^;5S/"9_@̝>C)qwdH1*Z%9K8ȕd	8ꑏ#*}:c)/WJ隉|<Fγ|^|ܳ)J4_saIDPpl
 sI
J+	i2)Yߎc}I.ϭiIn4ͨqVIl9ȒИ')Gq}.>yT/*X?/=kS5 d;?/BUo7ѥN2ۮ<Utѭ"MHZ_7Rmg-KBb(	I<fO`H./x}FXpNMAW+_QAIagHse`'pQ bgw֦!$p"oĹP[wp=ё<QVMTj:,e/`U$ nz]؋t3<68;}B$t\nu~ 9[["W-e5ZW~ߩK5/
n@@KުNLq[ Ё!Sݑd~2س(pmtR<4	P.s{q.0D;%w!-$5Ω?}mZ
$M'lE<*\Yee08l^ahtGcpP9P=f̎1Ip^ЎZgi50U}_
T0Z R)
mssx˴,_w:Z`1=Uh?ReH}Y=%~'1,A/ϙ	Э^u 40fS,f9A&*_ KIi6uIvg_X7sQw<5{S
Z=6Ed^[aM#jFV!@5zڱrev23v9vxȎ$m0pHy	$rk΀٧s\}~8 .:zZ)'LNkܧS62UM'=w|0q5M
Zj9;73||KFTY.v(hRG߾.mxCz	V~=]'kw{$Z2:\<GxY:vbEi폛Hyp:F1_tS/Č2>'=|#X(q5t§awM`y\ɠ -^mGGtwI1<Ͻ渵ρx?>-85%7T.oҾ:8aZיT O.F܌zp]4H2f%s<##٬*oA7L
Y$SU!%ǕɑS:ƚtOxt*V9ۤK۩AvU@m'5	~/9Tb?B>nbmgrn?>7;[Cբ3,|ShϠs 2U2pK=uHYM~h\VM:<e9g;1>J{}O4a'| e/yl"LO3#H7\*^%_&TPL8W?BT|nB,}@%X/:zᎰlaZ>Nf+9S}wwAj߮~8VӾ&:E;|YIy	N<uA3ǇWI׫t֜T7mؕc0Av[xqң)IU&I޶n)^8 k=B(N6,u9
k	܎y~\VbDqA
%'+:\VQ 5%uqZܾ u*-YI?<ݷ	6cf?vH)޲9]
zsz'قj9
ϱ<tpkOEJεQ[+N$vzQo_ nIy-ӄ	LV@I\̎*1Yz;	𝳇YE֦mNgavŁMaj9S]n(nl-'"xZn.
VZOQ¯qtݿƏG	zĘ~:y.o% ͧ3nI>bs%WɂF%ƤxRMg[GU+<hWK$}~wՈekiL1iP#4 r0*2qnK["eG{>.: ~E0x-տKPQk>:푸1
D/$6j9z*uwoOpG*[?ZCfؑl>`R6qh4jV OS6xJw:4o
3|mPò
ŷ}LITCpWh4.םtQUWK3u:3䉞ɮ{t xg㜒욳cg?uwd?8(iBM&au93qr;+\89n}
ΨFuX%؍r@l? Բ$r[V >p][;_u^*oinrCU)PxY]]kh⹭(uLUͬHug(ǕyVպF:YݿQM.
UnIqC뽏ĴI]0it s܀(_IA&Wn?ݧYc)sIJ!u>Ꝓ9R3	֑p+
%{.k7S@NK')J329n+Orɣ#ԿPT,ێx$Cv]_/ZC8-Qsꊔlɍ.5TGJzSX`˿I0Q5SBF`;V]y6u/9ܻ kQz Cx)PK+%q+UT/bIJUV89swqP^8Y+E[QJs[oFMcn㏏D@P<8>?Bݗx
(@3 Kъ^ű]PV
 ]M4mim]nI
Qup6g(e|фP[&}Ϙ[+tZhngrjq]_[1
t>#Ʉi<
-_=#no x4a.oܻ Oui»{fQ^>Mw8A?UUBH:|8I[Լ[!~C8*9kCz"|KJ18tʥ3Ǧ=!
xY
(_dBZ\ЏW*ci q@i;2ŐL}pW?Z{@ǣHUQcϪpmћ<+6&:Y!S"M~M
(Ll<'EIk3K_aW+ɣa[,ɐB$*;Nȷ\^MR	lsiGQ, qN8Na݆VkϠIqQ3ixn|`(qo۾3N=Dpbi 7|.(ĭ5}wnRqqyVg;nnZăYR'+ERvtDsnxܿ%e~ݨ%϶0}l%pf)syW-+]q|gH:w"Wɷʤ_}si{-y\3:?6GE95Z}\m7X}U 9
@<>4t;r4]*3 s3 Th*uw94Q@kf@94hWGcq`e`<G-j
nFח5]&8@4pc^B>5g:~*A&$'mA' wa0Q-2+	+H]TWd\I^ŗ@_#A!ʯkpRPÙOzbAр	
~鴇P4Oy_ oQ
	EaqԜ]9gܗwZklD+`igqQFݛV5Wa9WFC
{@IW5ȟ:czFw8ctfV9|b7Yļ!3,@B2bO0(8?`C01(smz49}R8@<?ŌTeZ@/+@~tBo9Si#C|Ƀܖ&՟1nǷNx{
5^G5LAԏ.:xy9菇ܹrT=762mZ_JG'dVݓtShh)U]l<,!V:5n[.GH6, tDRTӴֻfo^Iz *$QFgyނQ}j(BU.t|$gӘUџ1ovߠa:7G9j`-_uy{PT9ps$J6N.	?C V~O\!䲺Ӌα946yULUqvs`[
hwdkQjvcE
&Bצjs8^	Ȳ4B>]6g?ƥ.g/;JI5ss\0@BsP/+'o/9 zn꼣6OZJM2d::lm
/MP̧kCj1Q?}R9i|zz$
كJd|[ou^ Nh֥kN|*uJ6E4oUY/JT];~ݔ&/H;uk<mtk=0śUߏ~l|g̴!=53Bt7Q@|ǩF.>M+g.˪%pQ&vP۠N
y]ll8ԙx-+(FcyDK\ҫ>`^ڜ^ vP2[Rw*Жx@@lz's|Ҽugm:p3Jt>ö J(%mG}{Z
Rmo!@祐@['-ހ!?j<٘'qZ+hŵBg-ܼo7a+:75msYl=eVhte'J5e˩Qgq@y
Pu^-N^Sk9#
f%AљMuhRn3A.Pz98n4а>O
W6nsAVBZPh!<*|~T8-[&<MpIf>}rhI/] `>j&OGHhcً^H ?
e
HP98092*[[2M^`=Sͻ|8/WD4I3Qnݳ^A"<vM*7
5-H2}c/z5:O3NF7pI]T3op*u#k~<S2kj9LJk6#UoI!R<$L-j7/Lio[sz}S -@|;ld4Nm^?6HkJԞ]}t X\/f{M:sd#Ca
Da:FUvF˅B`^
lK1a1pSq
5<{Y}TkϣQG^I6hhiɫƫyA[;%~!w&=vqpZQd|W߯
<GO{Q&C=pՔ7g;ٕhleǢ4*gծ[M+q5KhϗnOض ~7h2t(丢7g5agfB,FϮcdS=Ax>Pơ'Plgz=1luf<ֶDuxn#m@R:oGX KP`1wŭN34o>f8BO^=-7pˌ-e~t]uDQw-x۷>wsX#ig>rSgUM6>H.s(oZOpch{4oUN-ñZHAMy pG/0Wv.zLO47˰q/'ݖ-F'yb	nw4駔}
dӲ|T;dt4(	?ϘL	F0iY1Cuh/x95/㙔MpG{qX۫Խ88
ԝ1&;I!rQ?lLi̨ڽ
p:'
FV<zh@
Jt
	t*B7s6|TމPVY<pwT晃/8^e2')zgwN1h^ESAXeq:nɵi&=h3WO5	&肗vLvohWgҷy$.3
0-	#;$Z*FLIt eR+s:TAuI;+1KV͗VPȐP%4P|NV)o:
1R1]߀ek5$ԫaz굜9xPoWвzP2VM="ɿ+>7U$#7]ŌO{}g`鍩RH|iPСSFdX z t]Gt
\y7iH},R j,?H{\_?}eF90nalBe`{:p]:`z1[<M<$Ώ'e]:!T/R2VKYѭƺCy-pP-xl}D%?epxgZ6UEkTg#蛠OJZ,0C CYYjWi|j+ݮiJ

s]wz_o: }L꺦)؜`ī&\_c%[
KT\a? :NA.v"4T>D
iRA?gyå]DJ{;kBH6n߼ooN/c
[,QTstJq`tk[yxWí[#oQIn[Np!.tE1(ڄyk
5zZO%,J-mN,ߦ9'gvJܞâ5Y'O7HZ>xE ڣ\y(/'xzީxwZLg>*jO倫6oK\WG~==/P'hMP-
tќOg0;9w_ERKqL\twd8JQ2g	>[0a?ϥ X"b2utF֗6Bwy"u93_Xl~9BJ"7^
ekl2 ks(@1c*!\`j0CE6c۪bv+gom٠9ίGp|ImǤ%ةcyلvV(TN>
pSf>{pqŐ,SJO]Jy65վUt_jF]Ԫ:{' uup>ǲ~hN`ިUKh@)uL2)6Px%͎)dui%џ4TK(&kY`ώA`Ӆj0f`YuWfp˹):A1r|JsE'4{+J7O*A31^Hb6<$Pv/kVaT ObņZ9%Eucׯ<% N/ l/qo;N,=1tYxb7<d/MZ
ϻ~Rz4qw[)װD:->Vl-tb5 imNǢy~,0H{l]8\eԂN{< 'z;l<i.o
&@,sP~s]	7-`B;f(]2؛Ce% <iRҙkޘo;'Ԧ'
oX<WGd
_Ų
r.
Qx{o!6}&<5dW3<GU++@rC$#`LnwBUE=1
}@b;mSac=lG6ʩhZT}f=^ >
;𲾂2/@1~($*((2 Ԍ,]˪gWQ-yn&7o=L_'׌izqGl'	f,!T+>z/苞iA|>;4=2o~-Uz$F\{6ƊYbFu3 *:m MJ:a;xZd?kϾ&kH>{Oht%G{ YPv)
AI?<@ٷ8ja0B6>F]YR'xS^;P
\SgԞO	zS>ZkHklQi^PBdm0?P>*[P؜a(ZODx1F1NoLw֨((#Ʊ%]].EٖO`SuY`c}b,gPhԛ#PaSPwWߧVׄ	9uI2>CDmAb?)
Iv:	}VpV@jk3'V	z_C:J_m˂iѼrkƫCV
ӤD[ڟ*1RWY?/V8%ilViۇ
k5hDϺuFg^+ݷ\wP=)\amff{ {QOIӱg
ю0T@LZ#51|lNaIY>&YP>iwԼL"<^l}4j(a-`z#9EK
P6h{g)qZ@X5dPdPSgǱUG*Dh1.xӪ5i@=Zi MW:uP;s]	p=~(oµq|a`5٠ẅysGE0ysHV0טޥ%+iΥIekL_|"p}68u+	0b#:[B$p҆7khT"tu<1Ov` 0!=ҝgë˕NH2=xJ2` jeEy_qv ӡ>wǿO8II[s*eLI.̄+Lͥ	*MxQӓ-V43~'|CӍTEam~rG.wz <
NOro7*GIA΀΀1G'v5hAaM!~%@QvA|,)7mI!ei
%zm|,fܓa:~FWf݈.*LA}`Ce9&d ʳDժC3WjsJ#RYmS|Rp<ZE-ܳ3d8*O
T*G/g3[qc;FZ	{GAy~Kݕ%MQcZzp=U\r)Lp"FnWB3e9ԇŮoFWeЃLPPLXQL|ULӂ*:ҫ6K1oy\oYR UT\Ozk"U̮e
sL˔z0["z<{
j38:{@ǣ;3'
5(:g!ixvmۉgS̨x̖EB`>Tz Igyu
Ѩ:Smf{ryћ )UJjfo67 3Ӭo1Y;xhD;\
=~_g.=(8 Tڟ)
4S8\v
E2.M;T*
cM]R"@Ѧ\sLP}U
xOlRMH:49ت:+ <Γ\AY'n5?a'};=
鿤+ely90ֲeb}Ӣb<nAKzld=a}$V&et`I尀qۺksJOak3L*.>a'&OXAQ"=l܅}<`S!;6xۂ`A|,ANЧZhƇBvIQr*jZsXQa{I}jӦf4u?$w
%2O476ԫhDFU8
u־w;z积~Nh'^ҭs'6Rt*d{ov`e]xYW>-GWca:U{fbGMBt}܍OPO7gv Sg[yN`BtQL5i< !"Q5˼/,l@k\|@iS>kOGKo3pGיLK'q,E}]=uHlh&U^D_FilEr5{Q20疠ӘkPsv.5>ZPagG~\|m
,v$d	Dcy
n	hSpW-#}¨.+Ƴb~teo!MM9CR_4-¹5[D;Nߌ֊/<0jʡ\J5(>0ln'BE _ػzQA1kh8q͚nۻFQ".4%aB:	Ai~
}47Nz_:֏:Дy?AK=cOR_c"FB뗝y{u;Ԕtso;Z6<\}kC?AJ!'zNꍷ~dF8Q ˮ3?pe*ӻ"
FXòzb$WmaugƝ+ߚ'EiNFj/PVP
^6mIY}2Y9-7G*dYiĒB.EG+<,W8]5JYRx7uAfTA
%T@~LVxA$Ye5.~AXi&I1a?.1 Q4[{ 8{!L69eI0pbv_븭̏>e%x#PB|#e:Xt3gin=ز8ܕ
Z݃G.	|=0]0(3q蒨O"ʟ|ӻuɴ*.(ٝÃyV5VYCc\FA*v3E4=:^<г
bQ4®հN wkqWOR	ĺ;5d
UE2anpB/y*[cbRj#ƉS>Ǟܪ-q\few/q`jzA0mPc
<լu:بݥO,yb~\<sBzRﲉVB<w$XÀHVv^5t8Aeo"+Ce?*V
eA\fvvNU?M5ѹ.5y_o6PR$֝WRNd.Xv47J<:@sPxcUs6k`OHxf
Mg>BM {yh/
%h5?lҐMwnHSMq/[

t^ݙn:dzg=_ԩBu5R=/ R 6?NڵBWuúDt5YIkjoGgSQ{l.0{nPIO2׬YO+oops6q4Rk:;};'K4iߧs,jƟ1NSr=lFy:5_tۜ3 egkF*H:ܓ@ _uק7`\c%ɕ|/oy-_Ai~l7<y09Ja͈TintHry
k)"#rCDW ĮQlmu>4un0ĭ3]VhLV}|ٴWt7f9m}!v^Xa /_Y0NIy>o*U(Yasg'G(f
"@OY"^ǽV0muC"vTf 6HQrt7X3| ;ф#/^dPsb=BPi8،uZh|/Mx(ΦdrS>U,FO^\RPѧ+q{GhK3t_czNg 7-@x N Oq|T;I
khP.h	'hhM?' f,Cy<KC>62W_xbVgд'9
o{A
4A6
ZL!n/ D:Mjǟx;}TW4Q|4_ձ9}`{xByD
S
~VcuŰ<
/VQ
:@cn;XBEBt桂QY/IG)8up7Q:"[=Y+*I ŬK[w[EòP߭)3"RNdLw|B{,jMVm1:iAU|CvǾ4zxvQ
lF,dSSo	?Pn5JO>h"1_uh3+m	^otZanFNѻ:jIwg3'u4c-'p'ˇ{ʪu<$:[!F@9 }kc)Fã6{\#/Cξo7]tyO@?MER=l:+j0B_Z>x?_`2@Ff%N?i>'͢sr:
<]3/$(.tchAe7͸?uG}c5֨I|A["FaYj͏:`Р٠?l3(ob
ыN7ӬalŚ4JH7'QBKxSQ?9҂	DZp<h}4s+m=iFEj
;rDmu<G:,[.PU:Uğ+CnT&*:vAkM3Qsm{xN#˒j܆3xZR1{DUۛi6=&/K՜(8MSv` 
X%^'5~YA
3UyBdF	MN{R7˒2I_B(NDWa3I0&GPAy
7ك`MA(fkNQU4vrqa'՞>mRfVG4
pSͣ]U*i5j'~H[}<5F=?Ϳ`ed^c,Z[
W}FY8CCA:F8}܆7-Cpί7L ,(z/jn<ΙxtEtQnmЋ@͑(X	m|4SGeC2hnw*,7%@Y\[-y//BݛF?p P47NI@<EC{"[k)eg>":t{ :ԝl?<^uSrR_7s rW_ڦ; b\d^\O%9s<DҺ\o/IF=g&|)bZY`È&C쎓70_ӭ/.ُoU7slsf>ߣQѿ箠̯'MXkWr뜉<i5vKEs	'WjD
1yRq_C PNz!`/ӿf<KQs'/7>K_ITp@|씭JפzOقGj}aQ/yo0T7kRz]ǔmǏ&wzx
+}zCjm鐕B.mϾnwiNga8I\ܭ~Z=d5|cgMnɋ'E	o.
hLo5pȶRj
<G_i;m,/z-p<
Cc*=u«*|( |18hӠ«s-r_
+,
k w5:{dPS`f*Yr`IitLl)Ϯ?ZC]nsf܏2m[c^#ؽ[-?'bIxk>
O^Iem0Qxa_S=JHq|lFtSP4. td8m	ߍDU]+* 
wi5`2	fIyl<|31YuN~;DUJ+GՅ\'}%#aFtZl.
-9@@!{T7<_(7xp˖Nd숵68FQ[;g('݆[.6ι6CN y.~ 5w~Adv6!S̋Z8II8tQJ6ioD視Z ̴\5S8VpLuH}z,M]txO6EST@{>5!;.5h# ^/&5Z6g^{|^)Zz	yzΏNkF
'hk
-ґ
Ycx ǫSӺޡ<?AuTVQ]P9_)uA\Ʃ;3c51ԋW(z-amkꐢʁCRo3}ʆ@sCZ`0ޚA;5Lv:p+iO"3ʥfv)_;	tR0_FEPL>pV
\*w=ǯ^ʴ<91ސG]Vϟ|>p1ᥱ4m5"M!7H^!LPRsEԤOam|'|P^*eXjhwБCu<(Iuo}alhUʛo; ;|}umKTuN$@wØ]LO(C ~UTK//wp}\Cx6{f|>V ZSº#AðF3Hq<щPM@DF]@L1c}cLhԣaOS8+Y4	xIԻVPfoʣ
Vˀn
*tK֢ݴ
AS339/w^52PFȰ_ӪVNrwI*r2JgʗSgzu3%a@Fх5߅ڃfCuOv!4F˺ޙO`Ϗ
9QPa'OQJrJ1orP|.OSdjCgydvBۥN_=ljҥS,}}jT<,dfM1~%Ke;5դa<0-A[,+U~hUvYOfK`
3#N)T.sfF՜m 3Le }=3SO?c|oxˬsMJ;4@wO2F2	lm2Q
򝭛354x:i9Ԫf.UƖ(+W `N!.z +z{ՔkW׷e]h%A[Ј( ך`RMp~ZyҥiZ6D2HfBfU0۫^7C9Nz_
VWY	iM[Ս4bMP?o15n
Z{Nz?SąSʰɠIJNUiul!_!	d	Q9SԼ&n\- eMggǽcS:Rfi~)87ӛ٧/1&}]Puʭ3["F#B=/[ <R ?Egf-XP8ئ~Tbbʛ!bւPûܢ2gD?K2JMowVd|dNؤ'Vt?q'в<Tl6F;D=W/'PAS4'Xd\gDG1ʊA<*!uQ:d$s׍<)>0ަ۾ /m0}&̒imOuq^%OA:6=iaO  l܊,\ٙ%|3<;4K^
?UGeJzYGh
IGFw
rzjM'Ma'P|jJMSt#td8p9XMdjJϟ{M|m=Sz ztq{R
\65@PTGhik*MTi"~{IF=P6H⁧6˒JR[~JCNpAΤcjjHZ9o {y>=)f-/({&~c\ǹ53ZjumѼtdp
L`gyAi3dS1*3T[35qvu<խ5]n{o#h5۩?>M;܂,W6Ͽ'
$NQ7|6۾92IZ{RlέENi?Ӂ($d&n6;0S	~et<w$i7E:EF@C?%cgtz{@ɯ,:jv*~vAE*nq8oځ
#|Tٴg$ʻ
ԠtpfS.:[~gҦS@uͫ_əVD@:Bmg=5= c4+g75\[2V>&PXq:}a*7ZxUз_]l)pn&SE,[2ܝ9HR&^O8a_cR_{-FغHWؔ[Od1{[sjz*"0.vXO)#oh,ػw,g8ӌ!V8GBA)f"!yݽaf}Dӵ}W=Lw8XI
{B~Bz?@Mls9
}Y2O57ҔXo̽
ok?s p</c{Q-d͕.km;4򟙐sm>?xNst*A_Ș&[Yݟwj&'hYS
P<x@Toxr!^0V){5[hRR-мbٵүG'dFP)E^WjotR*Tղǡ^ypbґ;M,yM#飳qBl? "=zW{;=mKgbwhixUYwTf׬uo/Bd)mqLa68o?;y&{e:KZ&V h;þ~\Fv[		bǸ$[gT_oP_}:4Qu͕d۬| 6)YZJzpnCshHcYMQyG
iCWb	"(87lreQ_n_5c,/;MlPiA<.H:q\_EfU_CfsPZ~>J}sT؟&~2J
A{&֦C9ׂY% w̮iD51IN땣qC/*$R6vvl=|]$@t@I㳕옫&ɝ}CW#f]/vһS`]jYPk[3ө~]S$֏ECL޳zXZx! ϣli9!4uqӁ&ml<M<n6vyia(6|hVg2K	P:]Zɟϴ>/vuV##a<zo=ΎR*kDcj?;+˵(bIp\5yCb2x"@Bt4oxm	׷[-qv޸X.\K
G&sk2趺5rlj"zWkgq{XH!Oש3͠(q>u}f=Nn|G_W[c7,Vf΂)`vUU>(jL'b!Q3o*6&
~@2# Nzx\&
;xַNHvVxi4k 9B8ؕ=&ڭ{.@Iך
9e)ĲSYb0}zPQr/a''j?	+x) 0?8ܬ fNS:4gxx*!9&6߫S%ld$Hel3ؗqqZ=^Nqjy
3 4W:OCw_"᭬ULulp5]Xk!:P~G9Y8d:6{^ie1uÅr?T xk
`LT??MsVkΏwիtz]UH@OZ9u{%xZ;Pܳr53N`0Fq=ʵɾ#$FSC؜D-
8F<ԛ6^:zn	LlN"a9jsgmWƪ(T~΋ϰqJ	ܝ%Md¬<|&[d=Nl9q78d(K4p<AyTm4^ ˯}X-]~g߹`R<LN}/<D1.OosDS;ўqu@zȧM]ծ&YW(Ll:tI)z)cv+8Bwy9e%5${RGQGew)ShRo$SPx8no6!x5f㻻4tsꨏ_> oy]PiG/3XZ'K
^nFBր^ogKӃ_\bW?_P]Ƽ/zc޼2?2.7_bMr6}!5Q-Uɡ2bM_13GfAPdDK2A=>F_\*3ԞM.
A N㉍۔L׫lQ4Ϸ~tP`]I2b@ԁjǘoJFG\I-e2\)6ұ{:Dgx0},;CM/%iG3RO xpecxz#ϔy~j?A|u̦^߿eWS;ZM0*Tm!xBc˫dJ$(B:\Qb2z}gH>*c1yŤz-V>
WuZ流'C))Z]L@4t@5P"@h nXQ
-3%1fQ4YYu6N
B@u"D{y$ 2Ìe(f'B<"Z:ZFĉYJ&@U$f'5s3#c%=J?|9'yЮs^o6#5֨R):WePۭt6<TYY4rK< n1#ixѸwqv9L0s{] '50iÆВ
zzM?}; ](s~"MkIg%}q. !N@A0Jۚj]?ާ0.iwuzbwp@zŲ]	ޛm򎀉S)rΑG6GI|٘{VmvhA༰Se=
Hj+5})l>Ma]yTK嬚Q-@c1rމ圅p13a',qaʟT&c.{iG(k*:N3)0KޡHX;|,ŭ\9a5^G?d
/|ycFeE紂6ŠSKVwQuE\v,#'{!6rL%<yC9WP6ޯG.۱)4B>bn
Il}`ja>\d"< ӱfN8Y:f7tQ[jDXc*DUѩ|zG
<jѼ>,ynSx
{=
"^V0O&3NPQŷϥ0^@i'qtjL᎜Q&tZ2}^9RIdz3 `\+:*Fqh7|R>R Yk-Q<I֪#!j*L({dUAƶ=זjZ'~sZhy*X!2& 6A~LLIRf6qW~.Ue3fkUp?JǄJ6m-Ns͖ e*w o>ʋveyql}?d^tqXt?i
SCchhe} ٜr,fsO:5$q[@[5c/:os4o3w2LOymsh/AەM&xK]B;&93LPgO%^c)V&Zxp-7%3MJ7~6
}Ycq=Gc\;t]#~s/kbkv:A$](,6)M%u&q(8ßТmzuvr:iCLWG<ΰzipJ4n
?}Gc:5/ً+JSE0;8`XzB6A;8ߩl]eXo,iLcOx6G!m?:!(Z0B'{x0)D,Cԟo:񝫔
j&F%MR#/O
`8`+Ӹ'{-0Q
Jk 55i)8s<=} FV BQգ%;CѤ^z)x! -vJw3;{B ~rF?Hc[O:Ur"6^D3d+\c|~9[P;˦kFϳgVA_g4K;ym1WGzCT#@z#R:
UީkY33O>nmTݮĒLjnR5Q˪?g{&ݽ;ɢh&C47 /'yHHw{Ϧ'-mw^aof{E4՗!kȧI6s
3Fz$鲤«ApB]yX|mLjA/ F~sjqo4{T_ڎ\XÙ4h99~W*,*Zv`בޖsΤFwGͿQ8lW3 ;	(s´Ɖ::Tcr1Kd̋>gvKc*U+꯷ҽEͱXz|)?zڵ lFR:Y+t\HƬGMvV@,nAgQ}JCTz#Q_㍪,*jrbUʢ\'o'<bWnsLS֐-ǨdOT^=^jd/="Ǡ~P_k/̈z݀f?8pttA8}4xT7Ctۡ`RV5܃F.TSӧׄ/d9Mtf`]jt_B(tlLp>ʚh
l~V.=KE0	,Ӽ[}Ӆj`Ͻ&ZTHς8%tl#-&4N!Pk* :xj<Kr"pvl$70ꩽd	zKJ !)E
<Oc5]"4ARG[xcEGkJ]ʣ݂N0gOMM _{j[s\ؔ42XVt18Y
tG+6`|n?uu<:kQ75U_FMqMTԒT6Xږ'UMR(M1~:YX+5g<|[xp57]ݚm-?,H!ӳqjIδ)PHs&TȔYL\9[Y~o8
x/`wT-iSS^XKjV#Y+B/e?A#PD/Pl]h<|НƲSVw:F5
rjw:}cS@]'eqcyKˌ,m|Gҥۗ=OK`vNZǓ?e;NxJoZgIjtB:p; bҾa&%47m\Z'Hoٓon1-z+rM/~6,:
N2~aQ9[rSjT A5<kKKۚc^F+4\ec8>qFIP PVUHxŞ<9ƀ
jZYK +CA4]ԠM>FgOڞXLf?@$&\;8"{7)@
<=.=yl6ye-kMoh:Lp(b5K3\?P3aBy1?IH5sQܴ{G_3R:;"ha2Cx"@'34p1&z-MFj߳z0l![۵>##Q7Ka姏~i,mX*|KWV<$(fR44n$	ȣv#t;=W݆f']	z<Nr7(@[=ӳXvM:Jis*tXЇ&A</>~i@
 "HEyWIS8^Q8*[u5/RViG5&nF"m-/;fڍDm2B
Z񙎾͜mwsNkM3g<2ϛ8]z
wop2N~9px6^4U1Dr|LdseG `'ˠ<*a:y1@|?9uƛ9l;ø9irM`; j !nl?~xU*nCY#h8OX/5\0jJU44Ma&RZR> 	Ҥ5}f!La.)}3m,|rg*WO$o4r)|.Z}
^0"|_ىZ>G`W*L}F$!oߠbpx΃r^m]'0p ;ܟhvMO	ȣ*:4Gqo~9wEm§4z2б
Mn/SnA Һ؏^W.3(dEUݕ 8HtumqW{~wZcIX
w"gpbXZ|Eȯ-~tyǫ`m3_qRwRTÐm^'4мvNZ*
Ξ>)>FyGzNwzN5c@N;~u]f5aA,/g>B]=)lt\/~ [N9sdaLʒ 喬y)CM惰#a~)l8-`)%5Rn/<oJye|"7qM[ZLr9HGrXzAOX⍙3, ng:(:%v@@y	ː2mЁZe
+:D2e!X!wi8A~&EVz2 >YFW4sǉ@hj|(b	)74NPsP
6n:,b3`m
'~pr
|ncj)pz7X1%4#?~{4<q	Ing}lXn+7=ϼ3V@*X^5((Ǹ@_8-TOH괟c`R=$['Pv|;[iQ0
S Gԓ!25{l|M:us/`[?.O^.ғE޾yQQEUd>eiR;7c./'42[vm7n=*$#P@<uź|לU{^a#,C^Eݝ΂q֬.W3c6}?Vf3
GSYyx<P`Uӧş'KE
lӀb'GM7;}9(>B
	9zԫAL>< xdGˀ
(
Ζ]y

4@F_ %ޚ9r\LdXױ橸Xuv(W'?ְ#ޘh~U3{RyW7OIj*h9l^U Rmj]#2OJ |o
)N{&o6lzֈ92#JXUmq9u_W2;+zD%Իe{%ֹgGÌXџYD୮M#{wL6@G=OR|Yu1-p)iOj]?lEZf>Ǿփ7.xЬ
]T3X}SGy!^s)UhN0ڱ윉va=QҟnjV _jAM5~ϦM{6dd_{R}4`Yk^f";I7
>#+
w0\NgqhU_)Z}lP[qԑ58Nޮt2?Z|0yC#<zzD!54#}-t(reK?Zw'9 ]>g0iNfS#+K@Gg_t*>f
>
j:3X%v/X@=26r}\4V
w&H-u\e٩7cpQt^&jyy|w1`pAWW6ݔXӎ?s|! Pb4[a,UYi&~Jڱ;WaZ 
g%M $jz果Y/Yc* 
`ܿp5O+߼1V%|cSfmA^6=Cuh!+
~O7
)dQƸ
1b@ycwds8JfR>չw?c~!K6>Y$``ЦNjAn״QD0 QTUK	叫h}KCypV7,/-mN
gkj|m1_3_S~CiL"I(4Ʈ}6<Z?kT,'⟳Mvh>W%*;
cQ\^`kl"XܺhL\2Clʹ=)ausc;sxy<gE870u@ wc ûlmm*p;z㭊OFew͑T̜d񔃟O5jwZ B0cV!ʙǮڻr\w[ҬDUMglz7M{[VZÛwE=S4c``5Gh,W;W1⻝ 0tm5"?È.3! ڏ|t/RSK_cUML,Fںyz^9%)76okO.	"_wū~aC 0Ht;?Xʳ'%KM3Ph1$sScҫy_BM 4*yp[n^Zu?4<1dwSU',ʰd*[@}'N~"0
Vx7<
NۦnLrWM\Mb@S|w7maA'"6puC7 ^}Sv0"G#F
Ћz+nM=wI[ګqJ3|J+vӠj-iZjY[xǵo,vw<
tNuژͤUp;C7c#h_qb	ãra&F$(ibJX& ="TϻfaVֽ6N {pn(ٓw([62n
Tڪa2 7)	0_R(
bហ+c:X;;S#xX6/ 譚m̚ۃVzÉ UT$!NN&2F7͹ܥ i2+_ ;>$
+jؑ^k#c}
y϶?wL<}uWԩHSIK߱k[>zቘ{]jt%ȟC麎̪}4R<f^WS*!-×曚:#HՇd(wǝ%)3Hvgrãu{>hWsF
>7mlXZ6ﾃWNG5{WiFaChւTAUL~镚[hYwj-5҄uKMyph|~VGNcY|PߨOA&Rr]G~]85 b4oՖjF9sst%Csq-ǫ![^C'h`geI{$cURb0xIl(_BQڂ׏|~pN iԽ=-;ds=";T)r«}U{Ύ f7eT:j.oO
?o8ee[ ner9YЯISޚ5	1X-*a+4gלA"$Z![@
&tu>ZY9o{G;g82\<Ւ 8DWC%6yY6.0Y8QPC)M	
h!RLetۻ4,,V:{\@?>(2>GmըRm:Jsx dyp"FyFLvᲖ/JGa@1KCA<{K-D*QdU?bs釬)#(NЖީ^
,r,%TN(]OP'l֬.uO%xZV2?Y޹زI?Ԧ	[+[/U`^ KN/88#ģR"`+̟#Sl՚$iwGJ
:UڂV^ᷦrdKc9'"!| Vee11ؙy\	AC"$ʵ#L;[lb jg=`RGy4	QW!]c 5DB?E2K'Po;MZUv*.8*	%(ttxaSNWpBU>y.xT˶I^Ve2g2?pP줒#ĚUd?NG#걉'[#,	9&>Z$MB֥	RWkִǘ_{`_啦
1g-ECĚV~,C9?@Eq! j4xp엏7WTe*ֻY킭6ڎQJtKtL6J~ +QrPN6)eA9ǐNFCjHn}^69u)ڴG'xt_qeG!qN:޵t?rD"$DRtjlS	d%|WCWf%zm8X:\٥VHѻ1Ug7|u1
=~99ٖ4098vX 5v3q
V\h"T|;#R
Q55tq9aY
thM(Ѿut7#?{q2X.OvP#%Jd1FBN(P#5|'s<닍":(Ў3NN*dQ
r~uk[N
&Qzp,H4d	~	rpOý>ُ^ډmmx[
aୟfw`\My%|gD;!ᘟmVM7|_qDRZ Pl=6eK
CO؏5?_J7`9M经^w9
I\9.gkf!j*.v\=hs/ ?/m	ґYg;{Gxזǁ)QտQ]+wW?\^ZmJĮP~dô20iџE7kcSy2_ʴ7Tg>|
47 ^}%Zn"n-']F"1q[Ȭ+ɂ]x3|>t| WhU[~%RouW
`G
:jM5
o=C;ħ!CfAMW3m?BU^oUY^KAHq:Ӻ<퍯5v)CaolQefbod!^,P';Nw<e~-#h	TaaE'X8u߶~YmxM䌤7yvÀ>âZAFU
cYvET'-e_>cF7L{AOlDH[ ;Q;39s^EI(~ڦV@]t 44z%@	U+kf%T>vxCP/
;BzMPߑH .xc`>!>pZwea.ުMA;;NԫmFbmMDN'Xvb/5섃tzmI
njS;mBeQc0aHg9hr:?B+gA	EԭӓRluoOKTM2KvNCir--fJ>]B`ssc:ړQqbU˲m{ly8t
8M|\6:4~er4w[A^} 3A͙Uh앀T!j|5L;ʧJux_
E#taJg[knU+Zt|tG`R6"|w_:%E"NkQ~GT@r`vةU4yLHZUUycٟ^_zs4	J[xu%|[[^:KK*A_:UVt{?ۈmVd_#C[ˋq+)u184%s=Gn]+A0JFvKm_PޫbF,)HV
hSKMŎJss塐MSFtH7KbB60_5܉|-^ÖM P?3vPmy(z@~;IvtsHϱI`OhQǣӭ/?ҰzwO*P>J2
ƁxdDrS[m:@퓶!(l{v oڌ{G1U.9tT#A+T*9& 2?y͕͂pďm$,
"/Ua}88s8k;
Q2t&Lo$@ATg_˰(p[bZdeEVuqNӚKvM o-8o}HmZ(m9:E#~[,ACtJEk_7jY\нwIha D@Z}q0d)V*vnޔ
	,&g!ҭ+l	jԻw֕r6!Q"FB6PCVmhbS	hYH]~o(藁xNq`wPv 4[CS%JY5FD띭-ll~7ǓoCuܳr5teXzpaQ!H$;dmSJ
6=DEoEfǄOv~K˔%7vID$is!WMQrD}5~9}*o3$r$oŐr|[!x iG7J!z\D<>\db J4hU3*gsZ_X(::Oi{g+faɪ`c90z7 S?L
rma:dGhY!8 L>6mJ/l3sۃGIbP>Ս8>DCH1G$^vc\1d"A*(N}h{	LPQTB4I6>LYtIvxZR_
u]b+5$SLEz=V\.qPSI%ʻ&_UYj,logrsA	ی~ش6ZꨫOK+5YXR9I}Z⼼~0ܿ25(Zo}0;ZFߟ*)jUнͶO\#K8'"VI^!縋7ï"$8l$ nS41&\yKjf4!:[	!D܋e+/*c*4Gh;P} {PE`lC Uˮ٧6)Ns9ЦɓϨ#Pr65k)o 8T9c~z-6Y 1D5JNH4h3TFG
kJmz+:Xv!v-7q7WnK+̷կ'+0J"ČU(ˎv5%=S;M!>}b▓"MuVvE
/'Gls]`-{M}	Q/J^pp|ɠRl6(ZΡ{ⒷFʧ޳0b+
'ڬ,Fu',Bg90JyZʹ~QqI0^S7*@pKtk!ٶd7h[ERokGUo;!}ɺlIT?64Mpic$?E\@Yb]6q\ܑ}vtw5%j%<y{[3	ǖ&;:xJ/`0Z30P#^dZr$xtO0@Qd6P0]?)hCH೩=3)I*Oӧ!P
ѝ̕iF$[}MYN;lM_S'ԪX&U_BI^i"GS1.\yyKD}0S~UW9ds>J^P@5RA륄zM{ZbD[l&!1iJ.EwO	Ԏ;`T8ۃs'Ҟ>_PT'ӽtN$Ϻ	+OpPҁv'b܉]INϘi[y	̧\=kId>n:hX
KԼSIu誚̋c,KORҴq@Ţ@ܜ?Qo? ;VCssԴܟUVd
YWEJGŪiF`\VR+1LUU6.)Ȅn۸_OЩ;Qa7?[5F*ycX]K:J
|Uڹ$P\v7 	b)tZ:JQwl
i'x<O8(Z`'MTVWNyevFRmBWtܖ$Bbf[ʰuacWz;ճh[S>M,,E}j&BMnlę}*WQ0<!j=zA׊S
_y&e<ooom7`&d@c@TOe"I4^5ޞCMf'+c!(
tYAσEʂOSK!xE?dS5hy뀵y>)KKP܉^1m/dQ^
R[{j=,(w|~.V%gǾ]bq(9:6)F1:>ht>_9Tz?X	t^A1P&ۆΚ{_9v{GS5Q
{t(?*]pmf~G]m֋
~Rk!z:&*} in;Tʺt#_+=k⛶K
 N
{~?!EM; ;Nn$י*UfQ2K:,`ݔqR C֔Wd;)a:GhԒm0Krm8>3XyzvCwBf\_Y+_
ř,%v~mS͓[+w/?`m6;h هՂuz
OE9vN߯6Cĝ%VͲtl 8t-M ?[졀DsW&JUC"-:BmG>Yd}oP=[ 	)cCbust
}wJ_T)7
z:Y8.]С~~Ni_i*uOjWS!_rlh_	 |%>v+D"F[MK\S{"	(VJ:9	 x aUxfG^SPCC'.Ǵi+~ngLۖ>4MX$Wϡ'Y$qQeA}&*SץHu*Qy=v~֭IN9=Uo9J}fkxg!Ҿ8o< B`ʾ]>,++Ɇ"mh
[E!ʯeG˜r8͉I,7U!Ew`1F﹯p>RC\"O(9QCH:۽XZ
V
7bNVG6~3BvJ V'^W"[ڧ:1Q,QG$#9|j|S`/>>&gVQZ`KI#pwJo>cB
<+SLdQaǀ_pag+IxeL&p,f($ߑݶsvj<Fg˼xa~@Skϫxʺ۝uT>-wX]SU@N&@a,6$lWE5dקձYQp mZSӫ[&pdh=NQ] [pfDjd4Hk|Z:K8 ڜ6^GTmuթLs$y7o͕-2_:u7ck<*PTRU%91}y7mxHI6sPe*~ST xi-#O~#o:wSL@vnC0%"7nBr6/&RAQuqb+L_-@Ab^D7ԧ>,VxŖF<?nCm&dSZ#n[ؗuJa9a|/%&I^Mzݭ#G}ssj_opJPuTgX!^Bdqn	R jgn8_X-:5S5@*fxJSC|5P6i>`?>q[P><l$WU_ʮ=(310~CUdGwKGNJ

m7( -*Vՠ#r'rwGie?-BsiA,`sE-ʧ?,鸺rjRk^(U ?:ؼwdvZ6ԞD_R
7ǌ
vZ穉esș479B`7r3L'XB
DwjltЪﭺs*1?D4T,ީĢD'kϜ.>+iyf@gb&ĦtJ^ҧ-/FGa8hRj_2|tu|
jvx5E`J(k<˻tv6(Mu BNNv@`_mn(FPwIgIbH
@nunJ'7r?)HW/<ZDؔ7UYfᖣqT/cT7geT	quIr?bB h=,YtxezAH[C!@ T
ڙX(KWOlhiFuz=[uj[J{0_Ĵ	7-HL Cjt< zoe*\l$.=֢֭3M!P?{p
@
HxA>*<aEpm!ꟼ/]^Rt{F*-bA>V9*cliQBJJ{]g^8(16l'yㄶKu7T]bMTlMe6oKE\JH8_Qnm>]y}`\MUaGHBmA.Gcgo]>ՑۙKoXk(gm.h>َᱫurYG)2cME	o|@j⠜VSsq=[*ݛ&s xW2]rޣjX#SҙG=0eX o^葨cۣ(t#3>aZa1O,ն^gCΒnOZ['0-M	Oh",4GL+_2.ܶ=PA?./*M2(	UOȄرf	=UPmE`]=386d[
}z=|HU~8=ɋRñNج]0ך^Zih9ד9ּ}Jn9fnPѤ"Y!{uw3#wgQAwYjfT?W63x3kd'ȕ	6t
p/ `]MyV6ɭ I	bk,iBںCm>fL?XrOѭ)R=(;h 0j0%ll<}O60D*T>N/77GL0ՂW)(%.%U{!;/9uxw_1<[H֗0`'W;yi
\Đb; &ϫ&wӑ5b}jҀ u7  :e jWfxxbdv[0"#\1}ȟV
>6tۭo"ptu_hHw;9Yw b>n<ivjjמgԫ%'EWOf(_1TWrN۾.>[oX(fr]-v<
@$;Y_dMm;ұ`iV`%<*f}l]]vA&w?k JpDYЂTuj.E߿ه
b
+AWXaFIwPޖL
J>_Wϛ\>[`8G4PKVO2V@8EaݏI
X5g)_ ka@7Ij;<x5A	^-ŊJ7+t,ۭͬ{EJ 6:r{	/GyYtc⧿Vrz`v<I=APbE}
O}dZ9%6S6 XЭu8!?GDɌ]D?|:+%"N4XqԢKҌexc	Rmw^
SX<*M^S1HkEuԡ$í8hDeWVNڅ.
,=y	 rMr^Oj`$X4Mc^d[w*ӁX,F
Z`T.RgQX^bRMz(3n	[~^\/Nï5_:|WwH*jxǼ6V~xf&@98NPFs3>w)!omDbxk֓,6+D8XCΑ2_EQO)3Yx~K27϶ڨVo@co'q1ũ_X#y~sL{:z}J8P;nS6ĎiFYj8.Rq"y?*驍 |v؝и$s7@ϮQ5G5Y+j ہ9kͳi|"JC6>	qpNªkUzI:ŪYtW-{nM>NQ@͊4g)\i{GHdPhq_OdyAl姢3Ƅ8؛
jܟՁBE;x*/ٸP* Kzk:5dt]/n%8sиɂ_=e15 9
]Q&w=iROv:="iӴ	{;`H}߲PKŊ*ju2l?3ˉR;Y\^ڳfLRFt95;58uxk+4OxUJ`cl`)ȝ [
	2N{K2~k^FĜJT(=dB^N֥8/6MR2WZM#ݼݡwY);9c
8tLU#4®xG꬜a!;ck
Z׷QzE\hvCa]ʣtmr 	r&[ :ֹEN ^U%^^"[
Mq݆3Bzҡ*Su5C쩻-]X Q->rBes|JW
Ya]gfx{ȟ[5QH@1a:nTlyb@`jQ*=zhi{Νtx'CzZ2hȲۆiHg?rԜJ'B4zTvp*Kd[哕d g/ߎwBwĘ<)K)
$Wx|?U<'vO$~9Ja;`jH Q+IXibc{8^yUZo[GidKLzrpWѮj2շ70'ǣ"xLٶP~#X쮭 ｚɳ9 l  }QkY5؋T较Rl,/~&uFZ7P]:|V0>uI;4؇j
7EZ1=zn[v:W7+{^_??zmBOT:dnUVs>ӒVb+zɕfK9mJgtb@NLpZūt٧Uo<iޡ:*z?|:Ivҹ|895ڟN,YЪ̲C<"<Xޛ[(Щ|&ɋpA>\k+ӗzEHM|9ssNɦ9?Ps@C>T" :Skj2k3:HQLQ:"D3xWMd':kCx;9&TvVARPiǒI0}Tf>gn{[U[j}o{p2!	jryY-}8 A}D:f _yOS 
{c}	'DFe_-DnC7_
9DjW喇&Af34
Nܫa')sB:\=ծ49cQ~]W .?kqvkajC5Ӕ~px1鸟`y_Zc[ HyllyH7a;hzD!U0ֱBRXvo~_oUQRƉQ[9ٱwQjU <8Ok]o~ef/mz:[*
5ra}Q)k"ҚsϷqL
i 51Ud
9$};i^PUgYwE-N;m:S3;EAC_˚%sD[xorD=)%؁	;گo[AH.mL=~W-^Zq꣸W{Q6/cyȗPT\v]+u]vr$mg|YΡ$?Ny`1$M6GE]gӐtaZh=-QR-mxao6]7)Xg-ﻑFgw#:\Bw
 "+c9m~wEW&,PrWYooe_5NIjN0׃WMXzRwcEwegآtqlQZId8jo>ʦ@<:C_w&Q`ETw
+}Fq`U
-x':d;#G	w 59Q:iFVd4k)OSEO ys]ͧ
{#ԦA4?\X>F8:	jpȳt=ӏyXi0qW8Je|ˁw8u;EFG1`{ϡ|S͇俖@#=uOM^ur4G=7aKeo)T
PxK6maԮ"πJ|{~Q۶B]͟
\D9wzr#NR`Q& MYN0*;ti;Tr4dٹmFUu|F	P^4뀾ZV_7g69UI6LWXnrHeqa#YlGo.|aa>ɲm%Ƒ?m^xc/C]Ώm|8EUIYg+EZ<~+Ayuێ,wK`Y(C>@؈
lOW䭀Q"u7~8g４CZb4דm>]9Hd[tPzlNsvFa9A8ߠ_1(}A-WPU#1v7
(9XhZlnf{):i=?^p} *	"m
t'k hӛʤv !u[C#I_2
_v{?_>0fQ0_SRgJ9>|/	kɁ̧KxV[	$h## vdCb}EHa91Q=pގ'E5ZTH;1=c?HӋ//Anm·+Vb1Գǘp5	 (ln_)6VenytS}n| 3jq/̘'XN0!"#s)eї"=j#+18/gOsVϣ"-sڟ*dN T9UQpnu"+F&M6\A)x/2𞤵U:>`zن4y<%I	Ή(E o+jGE=Gp\Ӕާj%oSKrك1J+CkpNKh\JH(,n*WΎ''z xRu
&0E|5<'*?FnMsMR:cTe]<5A3w]+XbEre^*
ͺQe7*ުTϑ?hɜR'ϫ\Oz:
KhҴ(6ZPhjxU;v[rXq<꧓tX
m'bavq[	xWgK1>o6$-j>Os&蔹>
7HNEz,SK6=GNOc
|Z 8y_'	p;P9VW]Env3gT#<ca6DIp]eӭFP,!c}՚J@oZ QPNܲg[;J@l5ë$?=j&}
Ovx+7Tkt?seIg?0}= :Pq߄3l8ٿO=>q:۲viMMViTTX'O\[uW'&O !kIj
&B9y,͐.@weRuu(_jR/\ P0S$#:6Z60ڤIiÒPV\(ՉMe	4ie;P;2ugL ZQUBvP<,ۃ)ym"%f-w
WGSdSىeՑ&>ʥJ;?UkUZmaY?,r| P\o_Ӗ9)(|4g`]ߧG9s{a:?eUYgzؓ ]/qXSd.f;Nd	[ upPor侟M&81^8^oq8ȥM[tEQ@Ǡg4]/W9ëW&g6G	;u}I^늏Nk>ɷU 뷏gS
j
#T	_bK#OpScV\N'c
pTJS#=p?*-Bs6P%fڕ
h9;hkl-0yAI)cÉdXJ: ;_~T]bOĥr֧Dc1pn4ڏG5Bq6^*XaAJ_oT#+lTfk[JyP)EHQ#S2§G`? +a1qg򴗷"Y/T mE_5˚yҩ-~jYɞl[9
8!9Iի I@5|'G#%wDNt})$5Yb^cKQut7遜8Dd5t7%ȣ\CiW <1rTK樴=Dy_Lbص}. Q2:jɟC([Qd(H2L~/\
-;2qW
ěs۔̨	,3@'
G&L,I+)vz7DHkRr
j@N1!7\|Y8Gi
_M;/(!h~;g}G JXbyISTBWkvv~^V-A=bpvzNJ:1_m6}x+O<+lJ'ӗ r?z+@-rId1lhJ0vlAB05.6@bh5#z(Z0ԣ	=&BŎ>ubZTWuG?gʚ1^+Vg vs$	JKn TsT_7VP~kΦU҄GYJq&uQ `=!G	js
AA-^Q!9Dx׷jwdB%ϭ,Y[E-NjєЫ^Ey&D'uT~PbpO-GRqT\Wcvm?|_yK&Rzn͒(8GJPgkHٕ`Gr3aiC").O8dDQ;_r95>m~)5N6R@2N\SDvNw}
aǐE9SUq:O|Ԟ o]qr A)+uVK%o8`
MGs*2(ZESȨjK4?퇇|R{RRhFAHΌ5930+>oVJvw}b)^F*v/fFP&`p%l[9Ix/#_XgX"^cNqE(5RD"",/GOq%~@L#EVb"AX* 6$] Ny..GnB^o0CW(m_[=vJnX_RVJKxXRmc	{=]VdMiI\@|oXj9Y\qN/kWS=Oz=I``)[*h?A ɖTYgr}//Rb![*5.@]фz&,KVI4vXK>OY,mt_%KNJBRO:+Az
۴#i.Z %oԷ֯6I"k*	
|#?U
66Xe{ݝ0ROO+	B#bN
E3=xأ.s0̛T򘄺"lD&#\
g~x?$eֶ>=SW1}"X!k27
O{AY=\Q3?5z4D'C#^YS[ք5vّW!k,qCHuymXSQ}iv
?7ħm6!4,Z{ bGphG&QL/n>;Kݿ݁4aaNp7PK(
0p=
$EɺD?93,Oo^U'}{
.kXzN!2}ǭvFqlr٥׉ǹai˙  W4Jln`|D
fg|6I3`i7RЯk.	$[)mҺ/Z}OGkxR"LPn
qy%usS_|A'rk{4SM?|V`m
_~d0cWty|mьq#>"r\f8;N[ H0蒭ǽBB]Eoppy1T)A?7z@^T2+~cF1}󳷗|5lyQ?x
-*G^5>B tGjǠT,[fh;yk{ǝ=:sC
2d( NU#
p:?	W.~td٭4/kblN տ˞=$E3c5z]=飰of5HV7}V>߽>`P&GwrEJՃl,
Q|q;Uֶ
xUL8wֈ6@r޲~/D󎶷=mvV>Hܶ&b,IMsKV9*j!Ka6f[)sw.ńĝդ= E gѠ~RfܫD
kqYA&;hR+0G8-C<f(cǧ#-i
lcKxv#b*	Wl-MlҔުG8(CWJ
gPgK q5XفqSD̪Ó05j~kifI:SM۸NۂzwC#f->ף)˿K ! zuaޢV]ZGq
)o	_URIPEDZ;TN .i9dؚcISg8Rll!$M)(ѹ
d5{ԬMQ?= bj<˲lȇU_o=:2z;VneT4Z=mŰ؜aS@
El$uc!sD#/y^_P bY1gSp<6ѿ)Q#Y*b"J<68O.UT
~⠭Pz7JQ[([cKާWRl|l*{UI>lz4}ETTf4޼v'Kf=VcQgq	f@9,UY%t=[OeKD
~4ϝ9!W:u]B'xӃAV@5Rl$+ mIk 	EgAiSR dH_jM`ކɒ7Xrdx8/QU@%y_țnu2I$
lg^}SgqCŊn8^-hл9X"*6rYjCxRP7ՒXkۚ]Ư@I{<D?Y$Q{Շ(<'hE^_hbYفGi(L{0'2)ackʥ#!S)W$c	+!xioO.Mm;4׮t=u3m	{
 C*,WtH9Z)]Ԅ/J@а
?@wF'}#nzt]%v;%LcȊw;Pz+ɠg 4L4ɮS	9OJ
i2JTlyF2.?bG#*UcDЖSV$߷SXiF/z&9^d; Ǭ
p*[q۱*@ jݠsB5?۸9k_*/ {
-HIn]	>]NVe>][U:i+P՚&'XzЉtTeuʹ"_Ux /YGeȦ_B,پbܿ^ΌHKhNQdy*{ U+D/][`[J;[JOP`v`;hg*;&`{Xfht$_jzGr_6U7~}|cC>~<B!@Rn7r-{2SHz<6Q{㎄VANJ)QZ !z_6%J^&1YSWԣgxRdm;TP_9kGDMOڻ''@8f/I& Bub/ƕ;}dِ/ \A㱭})'++	:N5uٯ܎EٮF*m*GKTA8A/۷M+1tm\*dT"I_]؀RӇ-O!gC߂7קK"0OmoH'>h\S0/ȋ>
K7o!5=prk󞗅j>/tn~q#1#u5EӋre; [ ݜl]b,\}'4}(=j[Z^=)oCLk/Y}u%.^ /.|~E{cz9&MX/p	Z5T+E:nM¼6=u<flr?.{ԡs6c7S)èz
u`C ]TV`I[
PnA*;Iˆ}yNkUkm=,,/ubF1	zbejܖ\i3aI'2Kt]O+W20
;6'3ww.n
dCXCIC.5uJdμx^brpsȦC-;rւC%6ݣaoԥ;ì=m`ݼN胘|>U3{Dxƚ}e{S	С)ih
Ʊu|'(3ڗ^g/A|Vp+ɐ98s(W-Ї/<s2	Ԥw$ e -Sǟٙ*(&'ئ	LNK:I;6[5hK8P|n>$?et8~ļϗWs݆-1RLv^ D,L;P8s]^ιbyϡebQC!r6t>٬z~M`{цq'"?͙v3&v/=|RBNݚ01ϦZj.M'(nA0)v[TqZ#1+'?F+Zc6;"3'ɂpmьd>&~g߫{x>lVyyw._?V91NJ]@F.$ J?RhU{k#AMn3f
iwD:Cy	u~ȳ49ma&=Y|znN<m I4-!WI@'j<y?mԖz19{~~vߏ3!*vgczAG
˔k6Fz*ycQdEΊz,v cz8s}됵7Z]E*՛NԦȎ/>:,PBm"j 7R
f.FUψ
_jaZ@zvp^&rz~.KAg7?t</fB(U

2PIkЬHQeuϦ95G=> Ǳ۪=w!tBT
"7
9tRקv.y7ۑIslI6XV>6sܤ
8$#(ZN[HWy})@'1Mm(ߴ\ɦ3ckBAcjP
v"o.i,<U.YW0
OQS>?+	T连{3VqzrR>I?-4oE5Oo_ŲՉxVK9BN&MEG~Tv({Va/~A![h >`.9նPÇw Iƞ.F[W'!V{?B+B
Bs=ٜY8	-L$B#wkL=Ӱ4?
GR5n pIZv+s<H&j}mp/~W
,8
$D
p,Jչ9Et GD'pi-WXI4& `	.eRQ~އ࢜cܱl&+ǒ95`zvkDa[Tcף*e*7bkZ حb#ãD4͞3#>GpP|sVrnvIMxoj?,4R* 7XA]8n}SJAh~*>$h$@]a;9NVfc
R5	O*Bpট@
u;·qv)&On_V5RX*>kW%bDD
@\:zQk{pqt8kZ5(rvhO(+-±V	|֯2G9D_[qu&Go\|Ä
3_e eI?G@)JdwrrR[޵FJ Dld%mά:P>L.mUa]׷h~
 ˓o?O9oel=4>	)}
TAyLUK`ܤA;Ӷ"Xp.cYV5R$$cD,@,6}_)Kӎ[M:}sZF[q97ANSuX VI?K9`
ttC)x/6o֮QvYj@e4-ܻ}95 :pC^?Y9;+P}h<["kș}	(u@Qga-/hrtV(X|I!<[BBtŴ;3Bn|ގztm
J2qhj[toJ97h[n/ާ}D0§}zPJցѦ:K
᭓R14ȂDg;@C	uq5ު6]D%Hs'5&DW&4?|pmᛚed0}c۩57o'-md	M+ݴq!ҧ0IJTiVB>!gYmTʕXR|W$R~9I:i7AXӫ*BDMAy2'@7f,I
B-mضDacۺjT~ZXD&W|}nRt2&䰱w&lb{2ēFA, z#}Mv)NOvRSV&٠D֣S=AEQ+,#ٸE8gs.Yҷ^o]!7-viKuo_N4}jq^](qe)
g}C=«j~IlG峩&O^, ϭ>v]`M_݇HH[sLR<c:LK/fdxsObھt,N5 -u(\r^ϙQ7=)pZwgw~)p oI8nηm	s=CGdxv:q0Vt9JN
Nxҥͤ}f'uXyTo
::L
E듌%KPk
ck2AAc)XKãR &vĜӱS
jhR#3&sݲ0B aF5{ytK7,:죥
"iz e^;h 851_DşC_հH<͟#ˀrV!{xn{KW`{(LRG0~y(gԾq0`HE IA~:ޡ=J<	gI6I75 {a*UNL~l`Q{vaksunj TI
\n>ݔ]}}W~]tE)nV"z, iRbX'oOTQ8U<L
13|lL.i?JXo`Hx}Ҍ4Ӣl7"8,ڼDq2%a=b;qٍ;&Mߔ8S_
\YSP
Ƒ44+tAȽSuy_oPs	W=c4cFz^47vrj}̼/5T4إoV	I/5\j9oIlES`<"@QUT!*ls,GGr2O^
AIMJ;W`7(9
qZ֤dQ>⻅g;oj7 {dDl#BOr09,B~uL>gɼ^|.D=@dl6I;fZ{Vw{䯱9q jȈ@6)ěrF׳sTNO=y戨
k${9]n^.l+ML/rA4r!qƒd|eDgMwP֥	)>Ol)8*G_#&cer
wnD
D_ʇnSO~"r[wp.IT\F\ck*FZ:9ŦcV"!\BMj)咜P !"'EZ\:(ն]v}Mv'FN:ﱉZ8l8Av.B_[9ؿVb>$kNDdFsǛTř DB	lth~>տO\,tr,|[a2'˓
8	j`*ۮ2@:9XN	CLtJeb3 wO-
6nSu";fq4hI
Ҩn6G\F)EJpJсsשH%ov;v ~ aЊV?÷^Jt ~oK}lRҘI5]`5jfze}ú'}yHvY	ঢ়m_csOLPhW?|;Y<މp6I
#4Ukjq*#a^^$IwGwgIt~ء9%鞤lS|4]/N D
;3\)sV
ZiWw8U/~g}cێOtg˛jӀ)~PW/Mң?$*{Ys<s-ΆA'^=Jf|>ps0߽WK6TS1sٲUi ^RMvwЫ*3	av%vᐵR6Ia7=rtۑ_Mt;[˴/Ϭ<q6xj2~lMx/` iX?a@ocjF8ۇH*RۙZj>?*&zA_Rrg4e@g^//^
]V"Pَ-9ĳgQ5V.}a4k1b05[V8:,MW@38عҥx9/J%i'nʟLqn--ܶv-	Mrxt\pn`N4$} S9P:ޖ	3.}&ńKZ+qM:`!EmL<HVU9'gjwΣDiU]nX54KBA8n/AKM83{KݥS -2ۂٰRo|,qٯ&^כz
HP3Q35?Xyl* = <
jǱ^IG A@2Myēg|@8Pҕڃ-8Cw؂ڔO@}j*3ӫAOxo&2.(kCp#9IM/>lA7O9gQj^FQ_+K5@pONs"[!ϩCн3VrkjfvW?We:V!_ "Ei5N?Z8ts_U>
AV8._դ?}ub7 ;9P~әn'$@"<>6)XDuK)LMyvx'\lbI
55	AɕaP㙰hAG2rdrkv *<ꭹ"2\wds* e5Jjh;7800O7,`5sHW~Л^2O6޿*<z{{,V_Co̰Ro\P޸|RuXty`BML~ƺ gۑ-{snM{t/65"}v2b0%y2MPaFiCYRYo@eR-v@JpB8JSoB.j>+yx^}|N/$XR==*Ӽٗ]ʯ~ n~3 >IPx2AvǟMZTJ@sg=6Bn,B*Q? xaxE@ܼ)mrJΪ
;= kyInO&>Y%iP?XͮV
6:!a|tXvJ\ieDnU錄 {	bn|T qܩTvN@J3{p4-;IJޗ@QԊ0kLP>E,	ǻ~=b\-vmYOKOV%/]/"<1I5nV}
SNnPν9j#|;x_P8FaRK逈?C(Dww MբSc@'O)8TclG\gk*(2Ч=#Z*TvM'EA 80_Qe!q+|(yUaр )Αa:&	(ϫr}?q44wȹ	ڊs8jyWMcmW%jl!yh_
g1%}noRtu@	 o|횁:
CUT|Kx'v8c68E>FOM⿝>lPVWyrM!YbK\V6Jq6vEY-xZ8vX{Gl~kT킮ϟ!>ex'Vzmn^NK, 5Ajq9ܧ
@9(huKʪM8I+[ƙGUo;r;h[U :Q-jB#y:ӿZvG_a7rrpSGGW#+W]O#-;U-W%kq._!6%'!H!3	/җUiu`-Ϲy(B*q%lNGW4(and_<Jl [g>k|<ҵT<S?듞5I
S¯n
R]AoMt472©/GUGGs:[8TWl!xMɬ5J]2
:ݫ?ٵj娲:a=~אg."5 ]6헌Q YZݸԃyΪ|@V_;=i|bi]5 9=9׊||>1=л:|x\sby)r񸫎D($PW_nqbv~3ߋ|VGڬZ/i܅/-PhƱW
b%='4:c
O:Yc|YI92Оl4PHѩ;W,(.]Mr5W~z/y
C<{݇hwE͵IySd2X\05?r < n$,+
[l ve7l'q;Ltx_G eoV脧rVrʂѶTnH_kx@ht-_ˤQᡐ#`jh2,6q(U\l<!ޢfGEfM*d6	G"s9~+d<L]]M*7^;#3^3M+}K7KAt.ɂ:7[='ߜˤ-CA< +3M̜u	szb[v!NXrBdۏ<G֥1l3%D3ְYn&0E(Q+$J
_r0~t7pHY)+=l:thcT55 :%+HfDN
\Ԡ,ς$#$\	/)<i.ulY=;61P{h.	C~iW劥+8 4V+O'S2'3#zfozt$:9/:tFwV[y]fr2b[`gKk
p$ UWc Iw+|Ab+`J| h(5o]"ʌy	7y[Gz|q"4pcuU0fjDo/O[-y;l'zndh<}$L9Թ]Y3%3U:Ugr2[sZo֦?h07I, NAoG,DVdb-O8\i&Mj.6&П$M?N[}#*wOSN/mtU!|D;7,Q~E {;	p)Et0'"ZӀ%lI?ՍK<59 ]Ɩ>ÚDW(;{
tB=y=5T{7hu!7  SϝHy	Jl޹
?RV2RN\- `C)l\KR-3ٍ))v
t}Wخ
^)UVϗ8ARo
A+ڶO\ܣ057r_`[V6|>Ҷ?:!_^[#i".]Y^K\2={Ujqh-;ڍmg:.	RQYNNq${i]֔sLV*EbUةVsT},(tMxn%``Sxt^/;jO&bׄ߿U'1f@ɑΓW[GKQfҘkmRG=8p2:TSduD]LBuyMszp;~{R!g:+f^G7B){~j$hd\ {z+oۉڏ^P/J{ԟw}tOm7_	G9RY-׬n~brBMņ0WD
SvHϦ2QfKLA,^UD%{RMdǄ۶M4%U\n@s.(DBDi4"^OH`':(>薫L5:
N>!qv

Pq
[gw+Jd'e^y~at+nYx땹Ne n0dhY8ҥ}_ThlV_^n]!nGFo1=J"ÁN$P a Smb소Bד}q`[UMpV`3bdՅ`\_mYKrV|0
RL! Vxs}z٬!i蠫E|EM*MErU_ +T8_dZY[;9p*]rqБ:hpMѯLWm*x
ڮ8z/zv3wř2Ÿ[`	ƟڎBRC~!krK+CWZ
A}a@gZhH/dU8  8#k*G_}jY}m6_.V_.߀z\1.r<gˍx`0ؗxw˷Y2¦9B@/x/6@(M{b Vb2@Nt>$q~.iں?'@:
{a&v`Vns~nĸ#)!4W
03JLv^ac#2yxxC( Cl ^uo.
+BdBZh *$Mn'pl+
}=ׇȦsWtg6Q@"~?w\pPqgOL*
n5!AB~Is8@&mi<$H~|_Ur燂SąM7y}R2dz;ݥg^SW\CmD|`IuދVu?V
`5hmkCh\Vʬxdeȁ*.Dh%5u'UF&蹪
7Ҝz-<~jܹG|bv>0U(͡OpG#x2}=U@v-5 ޝ8=ʭWw *Y9v*[z/c"+RNha> :* A$ $r|7ԜPKxú݃J4#eBT;]doJL2%
K&,MQX)r:*J$LUY7$~(5Zй;
H
fqT(ks^눠)UEt
& JVN}s
!VY<em@;Q	ݩNډ}j;bLL.%^]'Engp3
^ijW:q;Ld =1^cPH8wmW~k4{/,mO8M8N1si_Է;8Vr<Rq xV:p,:rUE;^SoInvOm
!WVgOb& BB"uN&mAOZ薸:mU`S BRΧQt4Q^UȳyZYl[Q1#K>[Yw y\ 7Wyqc;,C}af\N.ԗ\#(j3t؎NR7720~2>^o9fsF|m_aEEy
7Jz[zPG7PSU{{y$Ǵ*ߡJk ͥ3~+'rɽ
I%B+qw;}z:X7ݐJmn|}Ξfm	0(p[]7sW#GKd|(;ciqݮܺ͡hv!v>}MeV;Q(9oO^EwH+jK-唊Dsya *Or&PϟM
Dyh@ѷU=ދxx.oA
^_)? ;NtO4a\u+$M:}]Saё4yNP\PWq'Pp{w[q&#.V7V.p8 gSP|) W#U7gHf`WooU|Ioms#<i
!ή~y_"I3s=glu\9r\=>zP[?S st^%	阎2\%MC/ur09#yl6Uq/qYkYS}%b鸫ƚLƁZҡO6\Haw^pK8Fw]H@]
Mо9ֹK둭Z+մneih8wWsv ,&wҏG%pGV'ҝmCKiz
Ҟ`DoU+]=2NdkfK{T_oY-|]`8oG/UC{E&	q~%*GjWT,DrZ*z9G\~S:
ٱWA~˨
u)֌!B\vr@`~!U8k"})=;D3t$h䲂+jɓxOUch
R
8XY#@{SH@JyTa	Io jMs-yg{<3\t+k!uY͊'?MT.U7GNH4US$ګ)-K-n]m9F\p-I"3m@w1@BϦ1	z؉'qЕjzMp24^鶃&*l
Ɂ[gە&c<RWN$ߚ'RǯT9;om;:>tУ 9W~PRg-x{f
e۴-S~&opYI>VXv;Β6gXsRmOPwM$5ޯ3zU;/9|' dvi#uD_30b׬qZ'|ٚE.wr*p]<UǓLVqѫΣzҖOȤ4 O+
	3<!~-5oxu".^u;urw`S1>='n]Kq7BlOב e&3ؗd9Ssm͠U)]:1XhrMgGiW(s7OYLnM mKuK¤%PO՝AqPQĽDTkr)8ç"qGFMrv9we/YNZct>E*#e",j9*N^= DYcC}s7wװ%̞*+$	sP9QO%57l,q4k<CF,A^v
	"tsP)B\;vp,r~\`%x?\ABf-wfx*1^&ϩ
emr3;eԹ"~yBx)/uQ
]`SyU"1IKvïS&@UʺvEtOr<G~gRJlJskNLeSP~f$%j;?.&,lVo k6K
][ռ;݊O
O7JuycCFQօ(d
Ԟn!H(c"x*MnUw=z*
s{ʮPE>VhHS$4W9 :
nOs'e{6ʶ7Ԩ~'ye7If>#lֻ˯m-u&,!vM<ғNr4}SSux]
{6+ K4][OڔM	Rr(A[#J&*ΕXB<G^3IQѢ՝Y
]`r#CQ2=un1C*עNVNE̸p888V5ظ6ڦq[p-c]9d土[5~v)nO8 KߎyHv#:4Q<W&9UwR
i8H%!.e9	4AO'GRlDNmR'qdDG|AzSנNjg%r^+9s<6u{5@{&*E뇎l:qpI(\ҹ58\+cޚO4ЉLp6DVJG|"?
)~\?x>A6-\eOiH*))2L']NgU~t ҙ!q jQ"k}VcF4nG	yR{Mӗs֏I?zacg-Nڶ<5}"QCx;I b7-ȗHSӱVcC<vCs&M[$اboم]Gͺݸ9D+|78My5iEO@SkzkI)N4Ĳ'B{ A!@@B/s[mwpm;ƣV1'7Z#]Nfv~,'$΋PnQ.:E3}T$Ф8vXۈ+NvMދ N)t3]-v$^;|'P&"
íV?ӡOy
4>gJT9[ #XU:;Ipk֘N)ǻ&y "y~3'9wZ~WzI@r0k$CMw9REnկVuOQzTziKW-l@Ee?OP<TO(ϵT1J>Usr6},}-q@:	Y*Pa#dRԎ3`y_7*okFIWݴPU"bG|e:x.	ҸYTk\B|
T1]U1.d{ | _/UN$l:8dJU@oFgd74bB/ܨr6EԋFxZHZ ;`"[ј954|>_ ժ4Ug[
0=4}#@Λ{
w7d{ԺL/zpYE
<54>%Kfi;zE9P@ѝ$B%ī[QXa_h}[9~JS}^:~Ts`rB
=k=OKȯ{Og،!Sߔ/GaVud.D@ujOMHZv+} 
(DabJy]~0ea[,;lHYu -_%D~UܾZJPZfGOҷ\OPeFHi":9۴giggnO^lTcYm&_JXSDʡ;}s`SkUb$Te}EfBnYnMU%?Zxxay6Z=v]nz&(oOä)y[.@mȨzkAn6;؞.ԯ:wgސp`qZ7}0EUڲY%PG~I;ayPM+4:؜},=s|fJEw\Rr}ӳOaMM/GzūܝK#FIʔˑjΠ."*jxKQQx\e:j(sC S2B躪pЯ^<.\@8OOvX9#b"3d>fɤ2rW*!#ai[
JSeD*|slI#:"&&atV]v;ݝS̝Fkqenh8Gb.sNy^Cx4^4$kG'Kv:cjv|аh&_;˝S$LU Ч	Cy^M@;	OWI:ɣ0PL=1Io6u#5.N`[#nOzz'8##@_PC޻	$"hv!.|H4gH`@;f_\?*b@ynUM&wdݛqcMA@h}yuc
|yҿiI?@K&T;99؟w!|%%\
Ό( BU ڈp`r-~j@?E$Mmtm4^qݷf
X죛]NoWsi \G˕f5PvhM
[;%"&gE'G<^uX 
RXY~eeɞYѶJFZP	Ϊ%9@/74>2Wok(%mr]vPYt{U҈<` .y+j1Tw/
Op9!h*ܔ[8bh$2kSA
GVϵgq]U:_.lɁQ?fgY
]e
j,
6YLs
_̇IOq(HVC0
X*^pNyc$16ªyݺ(O{nPgBiW&:V9}jr>7
v"%[9*Kcm@[S ;Ul`3^6:FWgHߗvȤ8y;8#
' sZj6R Q{ntۏ̀ gTIV(G$
-pt^gy('>RA}D'|uAi6{uY斃Kv+^lڝRÄc >N$%[і$j	j-:'t;N!*?;Qr-»Ҽ"+[.C;n
c5b45nC901nAX_,'	UGZuJKgUw)zQVy9T
?TaX8%=®dgrQR2G!ZUգl$Eڨ<`!HH_NnJRsL_m>m'a
Ko@N.rT`M\.LXn%vL+kIˎ10ڛQ֦
o?ZJF`<ʟq$4q%'7uj;E̾F#ܵ]VK8bBITAx_?{K#khmbRu*FMvUBKy"EhV =m%\^IU]b#Cc?AsڱǏrDX8(h^7!
-UUz92:m	I}iၧ06:zMv)

Prs_AbwxRwҶ]"~n@sp8)3ioqjF+yޓǠ
l#G3E`
]O{u k~W"rCnGyյVnꫭ4R_x,)y^=%z*ru/$:CROONG	ohPMW/	Н|:<po7C.gw:b	
90X7X@	hK=nz֓kY[CKSpJ8x/7-BǢO/uzTU#(yV 6xt ٹ+fb"{j ޹P
u`,w*>ғj>CĄ|NGj&q*Y=xQtpw'G۸^?Ք'J`hQ$3_n!k|#W~i9./ɶ+s?ͧS%#Ƨkw/)kp+*@s5=RLN1RER1˜cUlgK,n:j16ܿ}1b"P&@P& ([{G70mEC(23eT&?MTj[j<BiP3妷2?kB!y:1ZnͨfE3íUkWV~5i[WkٸPyҹ Ͱu7%st*~vqC-=]Aq8UۘNJ.\)E)e/I{8
_آU[g\v<a|11Kf	;
6l5	ŧT7g7wܛף{,W[#gnoK!#K5_)NWX]U[XMD!T[}URFŀ%9诋6O,E͟sFϠK:7.w=a~$o`*|y&Yq:TњDGɟb` Gջ*R(<Z	NJ푖7?F:ȹsm>ܤݳ_A	PdvPpȈ]ZvU4iE?4UQ>񖽖Z2aWqLn}(ѕ$+
K򝜧w;('l24V@Uùf;\IdVT
_Ȩס+$(S> "fh=4xTY%p\YyZŮ.e;_?*%"F.;JTwV	"\D{G]g~矬Uv%%s^޾}AQh>J>IkMwW[U?O!_ZRt5N~娄1oK첧|_T3rJ髐>ՙIZ>O#+lM][p{J4wcw(8s9ڤ0AxG)֨a}z8.P(gvIR*;pq @`)e\W	܃;R[CrT 6ߦ[1	`n]ۚqýDg&aѤa)ƞHpKkۓtZ.;8G=ut}H` [ؘS|v)O^ه椧51"( ȣv)sc
 G;S'h)V܎5hNO40wX LkۄR$鍗$6HaR[C-?8~r"X(m>3LV/QeN%w^=)%TgYFv6{pCpǢC]AJW1v99Tti)Re5&ɮΣ1Q=;eUʁJ	G&-I='k_mw:>8ւՏ돛j4F,yuqd(6"-
gjvPKD)Gil^G/M^y=̝Vew\N0XIM٥զ6C1ʹxǾ'Š${~?&xQ܏j]s^M:~ᘸPH5y	
>nn}GU.m~f}|JʎB&>=L$ mVex"vJC1EM@4=en0?j(Ŕ=pC8Ř	^1Ճ`#	ܔ4Rq׮1ػGEw^"Ⱦ~@c|
΃
Cp󋿲.u&^G뀈"/{ߛ4U	Z@9CdJԶw"gF9y3_6U"+Ƹ/k:u9O3 x9攺*-Q?I0>Goh{t'Yؕ]N;9>V]*O8J8:di'ZqSS@@woݪH|3"ӫ;HskLRhȉz
;٧5,~UXގlUT{un(w5M[?Jm O$w}g묻`HSGiO~ckD(hD?wV&+	X
O& 7IŎ&sOМ.Ch
/;.SЁ1g5]GGIx[ELθUZSuos|dSʜdSOuЭ`#Bsh]a4Z@; |;T^{L_	
yA,ܠVtxyYP*j04x9
T䬥
Jbm4.;rH
޷c-Js\S[*y~ȂA)K, '*\qo#?n윮sS]ث "[-
WT)n^DV̡7QTTr%vynƾ	\H=ǳOa@gJ#ѫE<,kt$קB'">*]SɌs< XLs ]C`n"HqϮZͯz(#nU9[7u+mpQ')Aa`@˸%!V+$w6`f&ZdC֜4Z	B̈$	Zgo~QX ؟%RqGmM#gų<jEֳI|<峩a;V
?|yfaO {G%d(\+$I:o?*%9o	M
 \up~~'yDs/E*i˛Qz+vSq%W''ܧrt+9#w:[eW߫p=OЈj\ro뙿d
>ڊ̀)e͗(ZTp2E\HX*x=8;<S=tPRR	\>R9ѡxe_Ӭ9B:ϧ<WrC"\=}ME1;PC-Ӆ+.Dڸ$ d}_
D2+9X]*+fr9VR/9%Wvba^%CBkE{W tŁ< 5Ȫc|UD S$(r@DR  	2ԏc$%r0B|T2"eIRe.BOep}TE - _?RƝ/W81jU!t`	lqEV}nO^
\ T~2鋋.W_Y1S/CφU(sk+npչ0a5'LQzlJͣ:RWk+\֌h84_tuiI0n6Q.a 
o[(^#)7."z37õAs"쌓NZqwZN@]y.WN%?>U}(.6<"h4ܻ!Y*RG'*pd3K%myT%.A+C4_JNjO /՟rKx6^-yK|"Í>EI	j](#u i^~˹lz!@A=U?Fj2̯&MpoH0`R'| W+NVUʧ"z=:-k@Ry@kWveLnxBaqVԼ4=~o툄01}%Z&^' Lـ󶎰܂{|H
r=@NAכЀ';iӒGnŦ-6gW9z;lzPPA!.N8.]Eލr Tp
B!s a*QpjLDo.y79x瓫:MXOc'$ﭪyef_洵_zeQҴ)L1?3gO* ܇Hħ`jZvT;Q*hI*,uv
2̙^~8)A$[GV"o klU~'E`Ln%d_'~G^d_Ϟ9gP Cɢ|	ԄD$BAn}c%#|+@/UU	 X.y@>@} 'Mه{í<?Jh=vJfD/uPh#9 U'lVw jO[sY 
s+]ά6Irzϲ~]Y-0XS r
<?K^q9b+@YI|ghDr5vDVs@I8GvCN]SZjgؓ?7[u160NWC#b{uΧjcDVkLpp׻TǮ=*0DQ)Hk2Qvj0)Kߡ%+k7<wg]j%4t*ՍrTOqxE ϟcYxlh(qf2Wki۾+`O7[Q==P@xQܳRP6vĠhn277c[AU6K.^tڭWZě'w\E;KIxtM7O
ƕP|:hxX:ndH]_?OPs\TuyFKp>cvz~f'#|b|ߚdk)C]7d,}?UQqU<t(Kl̝̕د6UZoW.
Gz/BKGJ휣H	#_]
M[`أߺ]٫q/22iҗOiۮfY1TG[5\L2V@ow:.Glp:{^T)
aa>O|\4<<]dn(sܫ^S>cuCCxq,Kd`jtXe^Θˮr[w]<ܗP><A#JtIQϩZ_9H>X	$SV( w ퟝ3`-V^ ^n%޵<{ъv4%8YqNj{ʌܙ[6OBpvEcG}^^$oO
59۷h-U`:il?n^!r7xEZur́qxήBFm.U~Q+qgN1?MgY\Vwڛ*0oCEo5=[_bi<͕xs1&TYT6~DXRbx>N+{V1i)m:#yLm (7l:뎿(x'}ܻOy3mWkwF}ۯpǕ1	j}hT+hmWǷv~	]@uX\9)bH)lO'9"04<C,g:E LPowx}.FR*ZT:+'ɯM蓗O_?D[{|Gź{FnP0`	),&?
 H.,cE=k'R{UmT8sME+gi[QnChkJ:np+hMhel69PtB,!G"QP~<Eo1`qbN\k
ek]p청)lj~%l
=oW_R,\0 O5n;ֆ,k
<	ct|f
I_&c>D8
'k}MHE)hʯN$R+da4LPjjG[L2)Hf7
Y91>Cuqkk	 Zx2x \< Xs^B"B*ZnJM{)﫾ǂiowۅ_>"V_jZ4jp}&ҭkO$2t'1HNkJ5 jIE@Op6Q43]zJ@׍+F"w@
`"u8oUd./6prIHg: kwZ?_<RlQV?Y;O5O>GOyۉ0pvQN*s-pSE| i5?4~
~
S$w$3o+F0M)e&@WTuĝ3X]C
:'q
:呓Z=§[t|J֙Hצn}C}<Qc#7}[dnvhfY1^:
pPar3逑VLOBD\Iy8)GXTYZAONV8a~LtT!8|\>Y5e=f?pj5Uh4^;2>((p	|[(a$)iX:6\NaV%uЕa%Z:J;d(ug0܇{r#![(LFHSvZLuFxDD bsmc2vx견vSztJ	~\\t\*rĻuV>tٵa/MZ<GtpžX8E;}э"F`\돞}zVs"!W4t@K+JR"JXI-hƉ*6pWYtntA0"Hf'v"07O
|24i ާ|7ӄNa
_TSpI# &
u_
>B0_!/O9on j,Ƒ,;.ՈUDSmrIa$,ti{oէ;6Y]Wuh.ڰݷ%
^rчX'UR(O}5l#<"na@jL:83	, gG?W'0[]@U,m,tÿ"յHNxRz|;-/ժ[7MlЊci-:E
V)9uBɄ* 9Ѡ/:uEMM`-I0 X^	BjTA#<y_[3X.wLކ,[w MBwsqY"oXuTt=ʓיD!%N
g}<v69!KࠟJnpAWv#I
ت]%K(.3/Ot9D [:^-8` ek궢cC=]^Twt?x\9"ۣ|omb5ZYݳE$ndGe6obEgiy\[]ѧ9=-SkgPTp1'=  ~V(Kl2?b<\049%(9kږ6+h.ḒEt	 fC``PKd1P@,ezyi^Aн6_諥_uHq:UD
}2:CneS ZiY"x@p o{|1G=>^oF_/o7j I	@$Z-0[p(LjxkxU;p'P89x*sEVO:5ۯ✮)$v/J0
IA 67W*,<O, }{˾J⚁T{\ɷ*}*O3<AUuyrzΠIxR̺Ɵ/8Ȇ5xyV	$n}KݙΩmE.=/k@܊6?s8c'E" krh؋S6тv&!Hb=J
EgvH@y礜oZ#A
üH^Ǯ:8l@ob?<?D%tnurÙ\zu"չk ֵ} #=f `sL2eU aR	h޾ dGP9hu|;๮pMU򓦮'5	/4#y:wpy)U4@2) P}T].gan2TEXAit9vj/ǻ妯U߰À[
*) 4?~eՕO۽u=,.s-AGH+'Fj)ߍ.7uT\O'_[MpKstNK'Ka'L&8?b]s]Ʉba0 (6!hh98ë&F\BSv'vDVH.3o<Zsnb]J놾P!Dn7k<6`;&QVOE>dOw
wՈ&iA|v溵I O	͵#U6T
+VI!Cd@BWVR03{
-qWY]e37y{"C11L>Q>ǝ,A$#9TЂ(s&~u?<pU|HbQR{d#F/TVr9
Ae9]@g=x$/ >%Ƹn8j_m~O
bDH>&`OE7.哎at(B%1KssKO0`u'%!YHحqÅw9|
G^@Gױ种7
xmﻭP<םի}evs;_& 'U_1#5c%[`t |U;s~ufY\u8ǗGɜ7p1UP 9[U>%*IJ3A^D RpD>|m'oH,O1nl+InpQAtAO9E+noّf\qwDd&p*W6u΂DfCC
ėFu06|֣IHÏ!;plPWtn.bmEkeÙr9A2z'	ʤ!G&j4`I/NM	U-4遟@z"sWPR\ؿ(0k)xpKo%1a.
iX`Ѽ]#h@a hXK!sԏ<_xN|$.i!yogx *)z}mWK<X}Ra=8"J0?$Ji9u=1
mER7de]{UV};JXTs~͢KǲRb&e8 f0w5\{o[<`tӼN2wc0!h@T=ѧ[1Un9sG7!yZWb$8^RY5̕:cZZ`} 
\Ǒ]>vawVvew{*Sjkl_G¾m
m?-
`eba <o>M.G[C$wU.g;\t2ppGy<pIH\_
g
\xLۙi@p,Mf1H@ErOYבma|wKn;=u@|N\ ūpYz2J$?,E'; @.̳BVߧ{g(+5r$#&E"*:G_\
HtV}J* S~RŻ$Ou%g2*G_49cb8լ?$*iKYd[g2OK}wpo
D3+F%q͏s	7SQ]$LY0~;>e╚6)i֬5*V	`Yǘj.⇑7GEPjaSUP	ޭJ@]˳]"YJ
hi:iWkFRЦ*뒑}vj+$N#wk')RlLGd8gkH.#trz^7rdV}YtָWWi##3։)h8:WS O\P+{	V<LBTe~6C1=K\A$Pz]q+䥀^:O56-ܺTGgs?1PKXLZG\s%4kS8 wңħ	:֬\| "=ur0 6^nP|VsWs9eؽPrr9G]Dr
TCo}EI5_d[fwoBeÙofTN6Xh1@`0џyڷ[@V쓹t[FG{XQ/AԔMpu:7作ҳO'mwGTAQ"E*~*y[	%g7nDuB`;pxjciQձtJ<Vn<
7͞]^ld[Z;Vo, @k  7.H
H~GHo|,C5ǀH4RS_ kD>=N/Jt{Cpul._ߢ
?<1*3e1£[]"'~j:Ds.Mb\ Z>Hjm
FUD{Agq^/S.<RF>u?SץǶTNkO#5%y7}-X@Fs_VD5<^3)Gώ\
IoRK	T r	:?
1_ ^l1P+q*wKރ-:'6Ӑs8H(KYA^/h{'$ e΂ 钵BUogU~[Ʒt|ouԒwq4+~ӆzj97ZȨx~T8pz?@@
":3fh*Y֖){mlk)9	PW d%PD*My壥>ֹ}g X (!
Ja]CJnj4	b?3D
2-h*R@;y"
޴j <Q?)ZNNv.Y	GIt󐵴*G[cS0{z|@rl~CA#e<TW\'b}NKd5&&$JbO}ug3l=[Zg⁤93M2wМ v-EaxKF\]	U|\1sYo=3﫱сKʑHDIѣЈ%&l#8(Lٖ8rD$6{Q<:f2#H3N|?Wr̎{RV,JviEַ̜A7zk!gLV7m'[e[B_3K<7"&p{ҳ-]RG6MDr)W8
;fI
?mrG\nag/Fxo~|\SՑNgt#*ٗ&5io{c ;cGÖ [=zX9ADܐ
z|}{B`]g.?-rpoh5XR歶%#v=>CZNrɥCߗ;^>u׷cV5P߫TOVF;ʟ~vgݼO)ʪ(z'hlϔt|llD
ܨFgmI~ d\tgu!j
ȹJI|tP!79#@G=n|yYbݪ'=d޷b92gVgW:يo)c8MfaʢRXtƫuxN`y]bIhCUv"ҋQV ~	L$_?CO>$Ywc;)ɤ={w@@W]lgT) r u:K'c# 	s7\kuG0>)?wTUmoK?
C_Q vLnL VsǻzP*
jE:Ƒ/Q6X,ǑsԏE{\^Oy$Ýik8'6^5_<"8dxd H^#?o*9Wm<B+R7	o틎+'t)2&
,t%=&]@.PmD+U_]^tQKl^#B3}g* 6jVZ)Bh梔O$ak>0_$пL=lLaXI9CA~+:dYl-WwvEGg8ؔ=
*n;+[@QSpb w3 1Yv;0fU,1;=5K!b=ok9j|u!ޮoO7]V.K`OB?nyZw69h;چ
|4A  $ wHQtnuW?J?eA-ķhvqmlm*ŋW]!,O	_m\\4 U&2Dr(trM=|뛒6Gq28B#8:;akYNze{:Q>]GCLR<nEs|w_n9.Jadz!-PQi[ ?bt}]:ˢe
-s|>ѻp	:\ps3/		P3)2,}{ˍw V#\5=pT]Ɏ1k	C'\PHl!}W͡J/g㜥
+_7AK0]wx\bU)ZW?iΕIWAI*dXPPRۜ@	!_e/jw;n|Z=4y[e,ްu >ypn$;LBP_\*6-㓅.!3oV	PFhe&1I][$d"Y_}>%	:$nu{ZYY]p)Y	5UG]D$\;e}}t9h>g2C{,$g:<z]S98I*ioTr/]Gbř8Rr񿏦@;z#Q2Z~.u&Ʃ}z:'a!r.]KYql!-[A/_k|gx.ҫNBӄ'py3@<sN#[KzqVҾs:-[~ָ;*hIӡmNHD|/?H~|ʾK!n63WQ	*fk7Wqz.r`-9
ޥ.|_cV-s9خ7MShwϗoZFq{-h
f&\E!^tߊ S>!*_"kwHu;ur}_$?qQzV)BD{P `prFG.vVg@e~91.Q^=Pxç6	l~B@_t\L	?p)qb,T#E.fڭVzK-A '`KP+0
s.J
<S;sg9b`d1]|P't4.Ǔxx;͇ہWm~gx5)7ʚ~G=yt2(>U̖v	Jά -ZT*|%m2>p[sݍ%힠FC'()\Y	Wދޣ.ZT<.n5_šs
=:ǉ
-{}(|/gpʏ<<j䣍W,8Ie9II)zY	d-[liz>NKD:@aQLN*Pڀ⸿(2ku
}(ERyԤ·cۄjA#I5epY-]	 ulu&%;>֯<6SD 8fmt`k=WBiawsY5WwO՘ګq\fQ麹v@ti=ܐc[C<2Ψ~+:ބTPxb<'E	V!+ϷYMTtW
:0(Ѻ: &ǧٝTOHKC)2]JqE׊׏j>(Bt:%f֞pSxgXArSvrsPJIʟlJ!:ʭk>zNuq>5^|xOH'%[
fqdX c<m渵G@G09v̿.ю
;\P9z#]ۆ+dJbVKsw
{I?qpUgWx_K:vɚAtW\nz{U4+;}@l6y51|/R3@>i,FJ>s]	><(nx׫T[
\
(ݭ}8ͳ$eK1.q Qokh*<4U'2փa$-@
aXqFzy4=N]_@jCGc#\·sFl-s,Z^-B\mCEនˁZ}}LEAӀ0>8T[B蚖eG@;ɣO$Ʉ`?c6=?{4uZ"00=ĸ{-1rEdV#/7\\zploN.DPqC^նA˭WDB׍T*5!rk*}`7=k\^w_8pO:9Sz;CP{
"&աBߥh9bҬG@ :2[8\[r ߰$Lv<
8:ZUR|TtS˻f>G2A
znW\zw"wƷvVO57nk}-2׵j?qGs|h(6[x]&y,- ^):M$BQ~8>YIFն:Ī9ݦ;\4i*̇2Ysqp@t,}>#cKJrUσ~Hb\]޴OLPFW(.2>iZSǈ	VU=9W/ذF=OJ}GPsY,g3v% mB	sI<gsAG%[,#oV6$׵T|ON>JܹWP|i-)xk8YEk
ٕ`ϚzN _}g9<(Xr%y.MS' 3Npg<aqO|5ڔy x 	i<HÓ
S>nݥ?Y{xvf[tϨ%vֆjŧnzՒ>c9&k$/)W5|#jB9
ly#渕3V3k0ͮ}9Ð{ʿhgtuIok-kYqW8h'GLDM`ZE8GKzfw>7U3-odhJ#ZmbW}1#2ef""iP<&]IcZ>c&^ap4]S ̕Օ
m4Լ9	(:rHOOX7UI})+znquxYl):.s8/iN *g$<8*AΕ*O13}PX%_WDunڃF8+]W
J:ݺ2,T@Ne~Pܘ:4E
QVEcyfgHڣ ~7U|pu*>XIrb@zCVYynP^G.Id	AG`%r>T?NWZE2kQTH`tS8 O'LQ?NpՉZT|rOAq˒EM猧,EWvs`~WwX]əp4]K7S}ҵkϸU(M>Vu vkY+)r&gPTeQ	W7*޵ҟcXj\Ts_V ܺr( .~d
ךVIj4
Z
R\"RF'"E7/ǻ_ŷSXI+CP	Tx]
q6%i3ns'4w\"Q;~ɔ%Y|IfHtQ݁e 2٦81
JKǙ ո-]a}~.[Y͢;/ `KKtnRZ
l9')<Θ3y眙K
MjMZ@xL\:dcɕQY-hҕR<LZN"ZdhK5v)=zd@4[󂁿 '"#qY>ݢt#Yd΋4<@#00XzMD\ vZ+, AgO =82kZC.wMR)^55z,3fZAQzCj2+i-;YL!*e9y"}WU7yz	Uw(6ArɕN7H5V{a&nzKsfYoۮEtN#'˖)OaHGr}GM7ʊF4O cR68~7|_TbHWiF]Vj[}aq0wCVmE@6xO/Y/r_BB
Jq*7
({F 3Dn`-N:Ե5&eFMdFHS}:ZsL~6$@Xz9їso,ǫ~{R՗
'T '@	NE&+
 SQ}O#өP<@<G9bery2[39H)NǽS.^gr+m$`.sN;;5v6=A.
T] ԈN'M\>6cCM
3N\7LJYeߣ1K$-&GA guG;3gSM9K9]BD?(<XW*9\ZAs\i78Gͽ<j"TU_5$ږ#}[UMwQYU=&X<W#\7ђfd&$Э1VUhKwYT{J{l.Gx:nH*v[ChLyi_ g
	N<<]
h۟sTu&nxHpE"!v/}ѼW.K}}:	)x։H6,/I
8(ti&-
b?<~uHj 3)kq}*ݐD|}~<idQP~
D>7L 6
=yIO*'xuC`L	#BT*ޅu}:ew
io^ԧp4ץ=?db)|1sJ891={!Ŋc MoW@?}5rΩp	ޠQ4gi$[>-ORKiTUVPQ}!#vϬA­P]oj6r	~8X6R9Y%풳ѭ:Wr7d{eڎ7d<n;ףߐWnOس>\ Q߼8WG=쎦PǈSe$5@faikKC? &jM*ӵ֯*0놠D֘/}F.lU~Fno]k~[asqt?$i)e	Dν+V	9Mon?m.it9G'}R#;q8SU5DE\1
z)4K⪖i+*xدU]\ϐ?wSU-%A,I2U"OGV܎ƽ:ÑU&b;XJZNMN,FK{F ql;-S*Ψ lZ'ɈABg`
UGLo?	=|80#MۢTȍ# \>u4)1CmN w䵵4
$foNxqCJIvc	m
d 	)ׅGWWh/i{{+u5Zpۖ#AC+2Z<uUأ/w&1?Z$uw4x<Q !>ccyko_]
:R1Bu2x/~hF[zDItG\N:ʪS~o (,fR$MYP+=|aY'Ypq 0xhorl4pz40ŧ7ͭW&_ktPoY?HU9;9f|;:9y@-[.ųx֠7Xg^Taot'¹GҰ	zܥ R=uS2\d Fnao/:@_vnsw |4$GTs;eu$/]O:%FE#K|RM/$ZWSs@ 	˿ki)wp}GH4G 9]y0뤶@$Ql肧6?=Ux[^y2Lʽl'>5B
5Q*L"vYS ^Xz |
wo*`뺋sw"%]8%)[C银P$Er+Nx	lڄugUSo){§!8
{'5AdM@VND##1%=EjAWVάGpSD-"LWB3'+o:<J3AQWdg|rQ&T4g⏻kn5aBH8Cl.f2[U\vO+߻pNcwUPJ{?G (ql4]p#xl(#/Gve,KCU8<H{\ zUYɉl=y7y۠-ݭ$&ꓯ6{j
XΌ%'K͠Wɩ/ITɩƒE^Jg͵@H>ǄN@j\JLC>nELڟc}.x ]i*aǪoB+ފbsNQ="[i,4ćr_n|-#A
NڵY@?k'8PA~$tCR!.Wpàŋ"iа+͋SJSA!\רsEi\f%8 t6~`\zdfh5i7JV$-myJy~Z?Lʾ+tnV&D9`3^8WUg}WmSO:Nw˟ B oV?[Ncmxw~snI|<GB(ޜGZAl=u.y_+49k:t-w_!jpVkԇ6oĉ]n}-w^`r֩?WwtԢ&9IpdVH匕WTKFirŋ)\гcZ H[AV	Jk{_qDb-ȌoOϘ)G2W?UUDz>+H]*
i*ԱwTFyJB;Y҃ή.!б	UEzJ%
<.'5̲\cGa\qgŷw,eD۷e[+^cԆJJ9.`,HxTM޹kf{ܝ>\+
?$C(SB
c2  `ul9xsFN{)ȋzu!Oo%¶zvծBC=h
_Lղ l+r]/[Ǽ *L.pźitQ*T/Eݰy3M6OV^ݖ,iYݒc?SH=le0c
ZJΗU^ dnL3O-
i@
iIe1۷+^d:cK!) S=Ł'BY>l֯ih͂e)|hBUr,wBW8ա_S/OKj=+gQ_*dW?y?'
 X%Z@jI}(=Mନ3ax煮F YV!֔n|e<.
n](`hOnMtӨϞ Reߣp2&˲ȕm%YvJJ@#cL)sBU~b';q[EQp@7Zg;Er&A3aa9'4́ÿ 9^@[=V1#ug[
FQ3uزx]L_%JB|JR/ڮY}]um6=ekg\Xװ_drgNrHA&s9ܴ.>[QsT[a1;m@r=u2S-lu:NQ'WtQyX+Q~\rNa1 y|e>ɷzټހ_̓Sc@TSe΋[aA2QrSX6\v&]>:WJVŗPqJ".F랮`CϗAL(:ǥ컣%W--
1^)v? :ga
:xfF
.(Yڍ/eRn2׬oJ_WnB(sCyW{<ʶgO6
6vG-\p,UiN#"I.Lg+ݣ>oNz"U;=*֤$h,>\gWZtΘt8k6v[)C)+[w 
-F/S=kp*3GhNǘCTHŻt^
3Wâh_v.rJtqJ_,	3^jzzIMt$ŬPvw%2q{m_zTIXSM\vŀsvD~b+H5qUxJQ}Dzz
kPEbv|Y`}],]ݩ))Z_)UzkI'#>xW|''K蟎!7克Fpou{@wqQ=,|S/^d-nk昘z[|PH>AH` Izg-V)O8=P5g=(W4'*DId
-n.1c3m\G/-NСPlޙAh}.t
H5bU?ocUjA0n?@A	i%ϥ?\:z=bifmf:EJh?PȞ8n}$TPFo}]"UzHі}H;KAmWY`&Ҩo։'[s$B{w*ɼFХfpI$<9VŎ;L ?*#_J);vRƴC
0pt>O.X2 3@,:iS	HkhҥT9%B:)Ҝ
o)[[#5Eaɠ *V*0۩ݯ}dmG2yED=4.H?es+iHKd䯤}a\bwj."<ڳç"״; RsM2:j[z-o}5G:
Ӗxۏк:U*g )bΒ5@ա#
3:^U-IΖ:l'%axn<Ty^/YSL職.z{VsR=1M}S&>جv""*5{W[fGHӟvGV>yWLΖxԬjɓf%#蒝83#\ʛqV^Æ.8^͟:Y01U~Bؼ+VpD) )֞Rb9d<%tPSQ%n>()_*N;Oe54k´X<#Pf[jxhbkڟsVkcEs`s7C@Hnp>g:k9z+p0Bzm-ѵ
Pp/aE :6dcoЧX/MmJᑳukou2{SKD-Qul>܎r_xYy38!CBw-KD5.t%5.$*X ș~w<S#iyvf9)h(O\Sχ]%ηzF+'!i>gWu{Z2ןϭ[ri$跂++ĥG`2N[6f`/(୵WkK$wLZ_0e^G(i
p\`FK+{\#?Yb|-&oYŘM/_o_&)yU4%/m`>JzEkļ).9-"OP96˦ɱ  `}ޝ{ժ5ap_wY
eVC!xA17 v7rA^a]myQ?%22M0~ǁoע*Ao<4ad MC=	KzeߧfsD㣊U:P>.?4J
q2X6q9E[KJBN7!R9t	b,h7/E5Xzg}u{UCU!ЧN6"-Qm:"ѓʦ?#EW~}ޟ"4-l|%s|n{?@~ӃztߠU@{k<,9@յ 
$>ޙàh}(uwj)FuG͹[<"X~mNתˆna>Vjz,~CM-2kiVj8X.	@#^G&+K)w0^s5WQA$ukH[7|ߗcU58מּnqfGpBeg]dWinA6?<քfپV0ygn6ʠyXqM-Hԁ3ZWIAv5UN!V,HqAMÊ:LKGrЙ`g9-:l!I"#/.(mw @GV%{N\$huR	Y[+
<GlI%;7ۭ&]QO's
ͥwC)N9ՠ)5uiO$=p^WR=՗BQU
DnkG.-ܠX$TS"k~5b3]и4o&.rfmWsIWju'tfDxP7qe
KcD^gP#daS痣
#AVhT\w,9w"%=aCW1r:`P(m}#;ɓɃĨet\z?TKuԅoߎB.y".Q鱡xWn]6Ц}Ǽ<:9Rӈ@PWh]p6@Lw m0p&-F	J<g;>$ro9ZW`TT<r62yW8q`%<	
&n,_ϸv,%)s9f:l^y.\bB
ig	&#%}um8GOjmdj#üzyOgeR\E7Ф;D1rUUZX;r-Xgץ&
Z]S~Reǧ|*Ц;x'9f%VR!gaФI<4Jԝ7ty؄ϳmٳ3zF=.'F+Pcxt><!YrG!'}x^PLyX&ϼLF8Z	:Urʣq;
).iZPIWǮy"|< \Kˮ˹<greȋRy0?<CFT&._P5鳇E(#ֿm^Q+tWd"^
N&Rї/0pYxQOYϬ$(sd/}
9|xp|m\bsg _Ces+Hs$	a
\$i5eSw3<lHyi skFs E_Pe<2$6{"V"0kzeKw4=/*qjȿUV	mW,2][\aI^yϯm/ ` p tQۺϖDVi
SW!m@:	RWm`	SM(&4E'5Szq~z:E͎J$FUtOHL2	#vc:MV]n$>ýسH.{TFRX=1iT$i&+)g8buHUF!'hC
>)tbpZQ<cIw8%~6SPK)i&O]O-ܚttBǛ$M|2]*>r
$ ܗ+zq?4_lZur  婢pگiVRcʑSkL+R"+v.+/yQ$+
<@!n
+kpi&7췽 ypq{pQHܽq?(.'5m 7`t#@("Mh^ ۝H$m|ْ="] 6R8kuQo]q N60E~.͔zcJl8m*PtwI) z{i>qsڑ\jj~`{t\EVnvu-ɺndTP "94%@,V9jl\rvDeIMRod/xCIN<2O7A*f:z>Յy]E\,$!҅=X}Snl׏J;4I9p	xץ|#Onpi@6FM9+OQO]prTqVd]:~Jc5əU^ snl!'#s"nPN 9O<X?SG(`NM{'{u(]l
.fyI[xף;b5ۭr PҿKh*ra(Ua.\Z54c}R Jqۓ )srY#[9Qg6pϙog@ W7JV,vaH8. ӬfB(͡;Xÿҁ.cn
C5ʲ'b
ęXLBa<Mgxh"Q-vtS\dQo<.vNe_
sU7`` s`OL,꼷]~HFE^+Xѹ
0HZ
?epݞ*s!W8M-ִjGN-R>Ui_a!KM;`r~ #:3) \#ILyRXGAwܚe7[]r-p@AGM5JO(GPx
ۓ [F<y$xE9DAU'وt	Z)YG^o۵&:()fnEu70C4,Y_0ϫ|*	LLR*G/++1[[skl];5Vk16?{'[Uu
ѷTpk{AYkHUU1KB
KiRzs;nt~.2}vxzh
rg"l~rT2}|4v閪ep̭_+ f>J }mE܆fqXu%ť⬋l|X(|jU;8࿼+?vS}m'^u ī~]Cp('-Fᢖޠ5c/qWpHJUkd8Y
sC#\X)o+:YBU'\krze~ԉ4
2bD1%|KNF9eaQѪp~蠍 mW7iL*;rՒHE&ֶ9F=ȃ'k*iqB,ūKQg/#li-m^JbsN'&ֹ\5Y]e9}+;8*5"7r
N%p	4`:[롛vQ՛^T	x N$dJ*.5{O\1WjfT(}@e@7z6hWؙS#<Zޮhh0^;	h߬:?O1g:
EP=N&]N)՘{)J2AMb*䃴]B#uss8
KakPLv)O^)@xd]f	Sд=3[f{xpg1g7ZkLGt/ 0*
wUܞPh
hDH9ӞjTV \Rpp]G
gT~Q}VZe0'/bX.nq jǱL޴Vw׏r9	YChGXtg!0G{l(cik\:}NF;V	+ȯGG#Oh6^`[ӯ&-mR74P]}5uゃFNo1A|c~GcLrIΩ۶*&*־A?ҳ߼KB>&{[+A;Wo[vvnfrsVS(қxz١>o}x"q؁DrRĠbTSwnAs@
Y& ʆE%yNOPlijјIs[657l3^~):^Z^-YA&;5_UGu: 7aée-C>TZPv?dgU{kv|0;ynP	]Ϧ쌩|[q_kYVPM@ě8q4U#074%x'Ԛ'`. GFCya;7JA`g>Ǯp&Xo7rTX^8 ǘe Vo<[)'j^dv,){DtGu|v='7݄ϖꩽCu^3%Tb}9A4AMi&IO4Hcs%ɦq9^KVc̅vsJi.9x-9ɣ y_zۿsZDc:#ZcaRrtj/GΒM*	Oѥ{,LR~!PV's)8#Z`q=@u \-n{uCjL%]$V%#Q+ʈ_/O~w#Tu].Ȫ6=N.qu͋"evh\j+Bw$-k`<Z25OPWuq'IS4aܙrYovU{m.}ܮ5:tJIgcR$SZQ^o;tǺX{G[ТdwXxKe5UTQhUɎ{zv\ת+	Gm6!5YL)!y*ψdţ(jO[RiuqrkH^.Iӭk	x\s
`lUZ;]cOթ_]h"BL0WZOWтZ?@e9YY p^p݃[7p|
a%u^HNU^@CY7LT`L^
GHWf	uk:5	SiQs9
4|$5]F8P.9Bƫ|l`rCdSgmm\.-w+yU
\H%3VŢ
Gqݷjb)>{sWz/
_ʟq2Ky)jEwITU;g?q;UyDr8QVgb+rѪc.7@M^фNv:.W4X4e5غdv>*
Msi -nGp~dk΍ݎ Bn vv#G;q+"	tW+l}/Vu >ѿ`JOƲ=]|SIp=I'M99 o#3 %ոW|&(l)t$`?^p/('r{0ĥ!7
M%ةDUt 
o1|S#=|9B]ǿ'WU}A|K?QZNnpngT+<L
LC$u/QgCthpkh¦ F9wa#urɱI p>m
(>%tJ;cjz-AsK\UV3P,'ښÝrh5~@_Y+ lw
ѓ7Knm+<* /9&̌
o_+n4ɄN̒j)&<+g`5X8ǣxFU녳Ew*?MsX%TM7Cښb:?
~I.w;'qEG%kf8
F+I¼PTSYB7;3G'v&)D
Q2ϒhaw@wHT ,'{,\&
3%^!z>~9x
xi55ʫ)?վ tC>adziU#4LT.ZSŇ ?xb:nMg̸!><z&ԩGLj^UJC%B
3-7[zp(У7&k3F	-+wQtQv] .ATh`܃IcǼDNBRUK
'x7u-]1:zҫ쒀`XUrilC)
P-v\
=/Zfs+|R/))8!,E<^wfM$7=ajQ;tl'#HQUad)f_a:UpZj
іӅQMa.G_g'jk)k
[*<*z.ENR?%Хbr^ДKOI]1*QsѽpP ϬdR+{+ONg|~R:H;<s,u2R_p&`.n-1)-.x߳bm$UU\9pBB:EswKe[
X@vElε=56S1ݛy:^dee<5%dcj}epIL}+T Ucѕ4ScS fAQTc/'L]s[ڝӣDV˞G'
>JS'XMkVOwt_q/_FoT_?6wr8wGwT_`'-ڗSU/d=A5 t[p?̶Փ&8 KXw}Wy,աӿ%|q2o C༁rP%,ϧ:/۶E߲UbYMB"%qe "bj$={ifuA}m?`
ޤ󥛻n<ߑ4Z7wIGt{@H܀zВ'
R'R1ݕ[0&WY&(Y.k87ٕ!w8=4>
2nw}MgVBUO]{/|?\}a{3?ysV:g۱S)[vtL!YqtKbWVUU܇ғZIPdi?KO:r+\]-x_/ɺeՙC>*4

pw$F>,(1Z{;eWqU9R5".y)'EGP'xvnN֧@h]j;]k}&!;uQXeto
go2ΓzULnRy3e'gg"<&0blUKjJ\) ?Q>c@OL
yI'1b[,4@$ooYϚB>#PT6ѬrFJ-#݊ݪ}]ا^MGW}A}X5>t2t֥alϣK?#^zu)/u+4q{*E-i<ssިRU7]Y#XWLe-KUQ1^5^EO[QYTy5p4~COw5E-uɷdOպѓɺy06HZ8QԀњM=!dqJed Tuѣ[O`Yuѹ*n c͙J䥥fCdnlk˓GC'ӛT>@ 
\>w^E{¶lF?$E+]d۵zQwWdW(8S6VQO^+YlwE]}VͪDE4{t|_VW:?;-}i<	Vq Twb#ގInu%̢0<g{s|,RJrG.w|>qUjk}8BsV?DjSc@C0V즟ųZ'"WaPCԪPh(.VOs'̻.(c|9y򑤪n+0Kǥ
Xjn=U['J.8s-O|=(6n
(r{*p;
]uJ
c[{_?6P(Z)_':L<&a<ck8ji""TA+[|Kk/<TFRyC)*f{^n[A;K8P$#6]4]6]bʤnrY
gm֎Yl8EݭV9S'ny&e׷=5|* 4A
]<13I){@I2=m
ɣ3oѓ  -%RtBY9ui&`d pDEj(X(@[
 hݣ#8,H@HgVOKm=ME.mȄ`%sv$N(:\[9r~*u[N'uEsx
8݊HG9
蘽[WUDsVr	)*a*0H" nOE>b9D
#[MW'^1,u
l%31:->.ʷ+ϻGuAh']G1QlOp#*h?d(̽rإӥ8&#ᶚ
XW~g>׆

.$;}?^Sx2TL<o ~,,xZh[
f]R$r	^QYp8%~}TNU
|.4݀_Ё2J+}L?'֨]ҁWQ>ȄxsxΙa|铐OSj-^T@]Dsveٟ>)Ѓ;żLgz̳~mKɟ/_`"HE״}ԓJ俋/-E&J;؞^BB`ʆ]k#ەg^4
8A_qUD,
hĖ[Ru
elNf4p Ύ~<j/x>=q0zQcE
4<mʄ|8#̡%A(ݽզ:͕]9ohϣcqrA9֠@:Wu2IHΒ䆤 ]NPGpkv\4/ܯ.T<eJElrw,MwWbQA]tbA][uQCW?wQ$k+dj!AH96e(&r58Ƅ{<Gyiw'@(;
BשKNk3+B }|w4cF=e^Q?)gڷ0lң7Mun/"{.^exvΑM3r!?P[jj(/7hZA[W7=U}-&[wەgX^\
\H &O*䡜H9WLt<Pf#g|^ ^gՒN?|%J>Mc. ,n}@IKW,X4Bf:K~18i
Hѻ½
įE	:Jԡ kՙtN:}7yd۝G!6zuhD{~LW25'PByy [nY`ɼ
N\w]5ņ 0>
0n_s;+h*q%=C:r_
.;<DPNnV1Nd5)ܷ8 &*a_rgRzvf8P_}/>ꎏzusStD:Km+\S|x?b}ʊ\XȢzo-c$?M_W49OImRAOWO=+Dj-)Ho au
Rjh+hcz'W_8^mTp ēGv5,6BCeٟtFϱB^W~>YB8qi]c-U4APEE3]Ć߾!<6$=T8#	lv/ݔ*t8S{w9F$k#8SCV`[	
/ؔZGH?	7}Yb4Ρ啎3l6hIa<
xK6c׷7g 4 ;T<OE)sw՜\W^|Y'	Au5o>\>;A,842"?:
R;O?:n+5ǌXӹbV)fv}#u~Xͣ7z/|tPw7gcSg}y .N%B˯R`R~jrH <WNoy ]Èx QJj2!iϘ@g(gGHh>,㒑c~Hc[F+fyk'`;ƥkxnRs+K;SVQm8RߖE}NtN1e4[5@
d	Yة6-C^mVKVjgMr)vzҠ^[4?c٧&HSni۹5N C]H*^q
IPm#~WM'hGu8B#RwO]w
ȗz4A1VH
q1_H4ڇF#At8@%M
UGMTn
WzI"}.Vt%B\Ǡ@mEUoPZ1hsbѪZ^}g P<m/E[7Dp2**RY
^c;Q
فoYi R-ԟ$ywҲCNez?MW8j%ԥ{
>~a;X
8Ń	V;kY5p,_d\w=N~5Q|oŧBxA7O\#a%p*&C6H38~lMS'ɺnBY&٫tF,xg{pv5wu)TaR%蓵4b[P*䊬2ݟ#@VߎE#S(&'Jz QD+WGGت{ /{q0[{_A;qZ)~=>4c(p *X^r$[PȿRAʈJ$9Ujm!dᢹd
wqx\KqԸ
im*$>^75g<u4(㸖_>gc 
z=V^.7}W= Zp)=H6t
N2·ݖÈj%iBܾdհ/c 4K2sjNd鎽5U9
I'tMUsJ`>[W-Z4O齧D(h0Qަ~NiUP`ҚZ\TQ
842+Eq%ZKUʩyBqq݇>~G OV]At6߁<w/[Wi]4]-,:A #~Qj&|,v-2jc ms~0ppfw˒Gl'ċR8Y}SUf$*EGGQ́wEk+?^j8q
JԁAQv9mDﲜ/Vj먈ni稫*qQ0}cc!MNcEO/y.WJYq?iy
zoA3?!#73LUzw=oux`*gFvНgO+pN=O:Ҿ؊^k4b~feN}x-eB̀gB&Nyb\<h~y\3\ff}k=twp׻&s|n6-:"+T/qMPLNk9${%;=6
fצwU\F7xgh[i	1yq?N63#xMH+
H9Eۃ*gqF=wNo!!TxrƲ[De5y=w^鳬(DmkԞvʪ҄[AhGaWTmMw7ЫT 95iPL!5a?@~^ʇ$Fi4~;6, GT /T'Dو+3Bgp3jJo]*<>:7@iI&nm9("^,ne)qS%^,/9njþrvƺDxąW_/u2)Xj}4 BlbC[f>XnjXk]m%}ڌ^DZD
[6Nz=r< RU`XG8/=!v^.ȱu햛:|Z"Vۣ؀xl'R	npY
l^6M~q7<w3W^\p_{CJk(ig+ۧ[#Uqpw!.^Εlmb,\ohvmE-
xJ)یrlhC.:AלϠٝlǃP<`Xuܣh؟_b\i-LU-\piojIKŅu:_YH_^5q%9WwTN ! +ƯkB+r;A`8o^RV<ea7 ,$P舗tr8`7h3̯}g}H&譪]^sڥ߸/=o'&*kud$Ӛ_+$@X1`f8|! ҩYt,註@ EJ)nepgލC{J$qV8A uefD@Yu@q	 2uIy3*$NΓ8/NVtW
Z*Zvi8

[D7XL8l8}Wv;:9ESY|"4:D/[>0fӇӖԼW#n|T`io'n;󵬤=SR0CtG6>OnN~9;$$:#.' Xn)
q
w$scTvVلm]Wn僋tzQK-޻q:uuQ"^al@">;Dԥ1ON@tHaVp%l猴%r#V;94A|JR qoc'[Q
ˤ'EBUW|KuBQ53A 
=+֥T6hԧ]WŽ9,Y/t
*~5iUuCWok>~R#q
GߏD:\
:-ۼ CaXkZ7P;eA(1Dm~='P^0
_mn^v=GVQ #@$eaV?9$eq-FЁ_>PDPȶvlU.٪jR)tiqi1:imKPc)/(4%ձQP|ʁpiIsdS$.;O y	sp܅=A1_Uښ6/ڡ$v; `/q 8*X&m^75KiUa%twG[BPa[|yj3yS?y4l` *[Hb|zk@qI5eF)6INzҵS$7;dU+R!`ߖ9UwKt|N)Y	 ڕ"P3e>ZV<#QaCYO Bgiܗ){ --Q
RniF~4;csAke
jMygGtwT&y%
xwԎ2Z	=V=&Daқ]`Dë!EYC5n5qWT,YԱA8Y\4]wVNUlQQb8ն*Ƃ)
ߟ^nw$$("N1Ӣm M[H) rH;@޼il\&!qq,83_jBп
jSޮ9tB|u+?,<tTp$ځcm&BzM3Nt U*'5_@?nR?E`t#8:H-T_k]$&Ytj`h$}TntCxd(`x\tzG-c>7aw~QH
0k7ԋxS녒:Byb44N2i0p5^b=<3lJ9c|jཱྀ87nT;bkN"MI[e~;(ɗ8V{}jHv}5#~cSpkG[Y
7L-,彏%o	}ʾԎZʗՎ<xo*T[GFlys`j;pwW|s˒K2m
UV*.%sg\(,SV;4
JUx>܏4'AknW:S	uJ*։MH⺘r.Ijsn3h~lF^yM8	`*Q+\+<E* &[c#t͙.͋4:[feWY^fW>E =IWtzFmBIې
@&*5[z, <tQjѹ-S\Eyw]1{N(G鈣aћ$j%Ag|>|1N3+n^?ڗv})seNjpV,cTxE? 6+
|#{&?	 1q64:oR0xcw9.q趜euG<͵/-p'Es^ Iç,;<H0Qۈ՘QNkށ|{.fHrѡ*::&DmŸo6G8_xԲ?Z60;}ʭB)ᤱ߱ W^BK'x<v7HΧP[b63p񇊈-١*vs9u}%z [0sAi"Q@ė$b.nH/nLRZ\œ
M2-꺇o3B ΀	f54ʧ<Zr
_Ѱ)-ޟn`(taf 	E
2ʝ.UZKrf G7Qjl^}.YSpG*"YDx.\x91AaE&[iv[:ʺϹ>%u-We ^&A{N(v݇ڸշ)Y7)5<h"k%؃w<oR8<9!&\
,]G%@B2tFKq@:NRT_ΏA'sO@yf\J3FuXYZ*a ibz:	wwdfNv~N2}NUnݚ1RX-U{*IgM>̝C͇񼕓#([8#G;H~=_Ѹ:)lGW^Ԧ%=Qg:6-iJ w>:/|?nV\Ml@5j[jTQꖯeD3Tp~6\<CffGj߻_5wR<)ԇOGp
I-W-Om%IN.n"^UOlV!{n9Wm8}[]wХ);qnVZ:A@gQ5(:o
\j
 .PvGxr ac㶰x=SoI9a$*;] 0'o{*z9t\Y
gC@zOq+>4>݋[s?95![C1Vq,;GEPvbuzƺώi cD*s]r2YNdj[<ȵ}5,	i
w9p'xνPԫZs /[<+ yJ^:⇂<Wʱ$[yR~Dm5]2x?S{0@ίmtgwJodҚu)*|T+
ჹ>u:Kx*WTdi灺}@;8?D2?NA<X0}/7 ΅7ACh%f}kwЦKpG

[;iKpŚR#ߟh\1CUBL\bl=z㒑LB58TtHhIs|!yk;;j)<p]?Q!oߵ&f \X*˽&]ADqF(lRPVt61oBXxʱ	]sAj2b
 ϥ07t~	G0[C
:6%r-Q[V(z]sIOVrvo$X
'PZE-xx4Y0Q*~3L0Qk>G]W:f{061
F-5~%E{WzIgy`?vߡiO7_u0EZ1]UJm.;Qt&B0qB%/=
{"HI]JWouqi@ JYʯ2Nf1pv
ƶ]B-Q>jh4@yl=F (q.'I'ҥ=Z
+X5{4X^LuE{`1b]TWGS_XBE'cqIWA=	K]-L=٪ 
aɊsB6"iwT@:=sޤe̱QRRdq-՗S}OeHpӥ/RYN
FS&:{k<Aqj,I6dk*ÝQtcp|HVN=Wܹ<hȤ'IB75kpV< e\_1?VÑ)ztKy׎ v"Ґ(!(~aۯfjB$IZsnj$t\y6ps\2:2{tj,Іh0쐿^	Gxp)H5wKOL캕gQK_8d۹Rd>ĸ
ޙ\oY!KwL.}Fnrzi\Zߞ3/Zsg7%{if|GU*wp1'X8J.'+sh!/ GI(^yP9c:
w񗕐7וtGUYȗoH%CEE%h0JqS=M@, }ڜnj]ylNB=wM`?%ɻP@c*׹/mo
`꺅Jkٌpjg W(ܒƗărGEɴLƧz'5ϟ]pv*.ZO7]'xŧV7:uOJ0&FO7
,If׀[
)pj4WS|k>|O霮磠Б%FY}d{n
Hw=(Są*A^O.vHX[lU2u{9;P87Ϙ+̙	#ѼOsd.z9{AT3p`s`~InهUtzWmqlÔi`K!T[ÉZkEnGZHPu97
)׸ޓ	\;;
Վ8I@=
sKWft~n:[[o`@) LdƲ[Iə#  nJvB
v1ppd (%J^sh;~,H;k7Ec涺FF l3ӽ݂A7CAU6GE^ x
zo n	}uNsKoi /k3īp0&Fg(*yl!@t6UZ5wQO[}֏bdt ێtҺ	{y!<HjfKWb.P=)ʖܜ&<H8dz}?0{YL5ͅ TP=<d@VI@<\y]βt@4ksH]8əmTC3DYA෵5+	.v]+LOWG(Lt}({(t9R?o1N`?a^rWGp8y@CKAiCCjD#JQe$N6v?ZW[8G\[GO-ڂbiՔR
i|~NtAmHWAZ]vuiLS6F(cl}l,Ug#2Dk@^:,]0r>'kCPjF3QH
}g@lr¶G3ajq{
] m\;<8әN2M,J$DɁgo$Z%gD[/#QVLaR;RV
`+r`f9nԴ6*N%CͲ\]	pA&|jjLus_)XW4o{j@ :=9cH 6%+vo-:Ww=am:Y}k`nndwn
靯|jC'7_/"Ţn
1hVq6c;S̷Gھ$\_ԏv+CCOrP˟	[ƫ\'2]{ =T|3Uia֎+pԷΈף8_\ epIyn2ckl7$M_$jvQt-:[u^KkcI
Pd_O`V/bĚMr]
wWcȕjCupv_qbvAgg;n8y}tݸ!Hv;l{).	<كҜ1PÁK+jel~U+RltߋJq
7cvr*]T
:)5G^Vt-dp3X	$uTz6>>gxjBBoH_|些5-	؆B>+>tWV0W5mP>}{'#ϯWox;Y9GHVzbu]=D9)^oDW\AVr+mމK_W#U⟺
sޯy	;t3t`{]>cu3J=>^p'cW񀣴"3O(z)&Ѯ՜BW]v m5s )բJQ
lZח_\ǮB+.ktr#yGxj=/! =7Cyө.㻉LÐt$dN7%L[CjCůFKmIG́AV8ygMԥ^[MJvС5ɷx`<]l'vavGںDҟygTq&A}b" ?4xes!΍A]D̶Gٝ Ń5<yzrlRF~)G0WQ|ftҖwT ,5=p{5!5XǊG>nAG
Ȓ+C2oTϲ҄a=]݈yWъD0."Z[JbPfn7̩kZ]s}ku{=dꦩU%{Y8tQW6Ps]2o3apV	Ztʁ¡_&z
,\zuڸvZlGu$#0,@_odGIໃ'E-%E^uU{ ,EKI(0	RǫPK	SC,TkGԨg	AݵgoMJj9U4lAhT+V=TPbtӝ zE3>/Qw),&׽>SXti|}h<{)KT*3PԞ8-WmZkarꏚ8#Dy2Ui6r]5{)
ӊBS`nBxxE
i G69kRuq(:>,0K_c'ôG7 U9s~;vUn~+,
9?VO7
\${<jلI=U9+΁`88mae|_Vqevg֨\	\Ƹ3#FXV:9;/wHRBrq%k÷'Hp!\3םizf)7grc,<fuI;ٹ.>@@23h^䧢UG=z*i)~'=jNy?3/:SYc
qb*zJ
q}Vz`7r Tj(sS,jOUY4ϭYg\YKjη.U\5.ujFJrV,\.)ON6tI`E-`󨏖ۥwC7P.6hf5#l9HwnZ0@sjwp
m{eGhZOϯdY,. )Sҍ2SK\^b^ç,M{ ճ>kb$ڿ96iw&+jhLdG
-[K)W(qeA<|κvz\t扐]}q)*'ihyV<8ΚR9px[Jx
O"|d&=WTP<)^.}Pk!4"&=eTksJ3zi^>u\Prt8d	DB
_7<.C"kic5otI~C݉9hQ'/ɓ)S'|'#Ig[2O6<
$g*ŚvV;@ ~ 5Z#'tcMVC.Fwc;(;\/0݄m$Ͳ[GE_ϧO ,2jB?Uu*O$8xc_v::~!ҰRaG[AEu5JFTZJUS';/M#:T4mv7=~tKJւnfmr	xF ;ɹOaFtHC+=o}DWn+MٙaeN{91 I?.G}q	?okQzNlޓjUle5=z=J)B$UsGtR? l-AkfnDu5byjnHЦk X'2z(u'G
Sđ՝оl[Χ]qQZY1Cu@).X"%pu
Rϴ%вBP^M!gϕ?6XIrvmz?T"ǸEVdGϑw%0Rܤe.Di-8*G^O5
jG(x^U9[p4xZmSWWħ
=򼕤}"gÝfK]%F I?
P~ǩT.MN')@o0N~ԥۍ  jȺK;d~!*.cĶmn,j:#&W%P.wi;+ *Dj0ă'܎] TRwyAˠ݀~SVB.%r9o93
3M[0vuI$-</מݪn:QIfg
~.55/F)uCOp'yzFuHkuٍH;Rw3,>6_IZ)DX,EXaouY/bRWάL &[y+LNC}OQb=2.h,*]a_5@:Di-'>r[n
<]m֢
nt/ ¡!K;.M
o
rEwyYwg7OY@~/MȃđCG̅5:z˳:Do-\[]Pbc|f{	u{q~\\vS41%]rv1HcW=ZR
EaSJK*_F>a|r87 0>nYO7r-˕KǩɴlZ"E:֤lzb~ZξEoYAZRVNrQU#puyk+lO.4P=thTsYH^pG:/;/\/e〻U#N%0<0Oʾ~Ri)y>Gx_.RPM=
	Sڢ@';Ԓ2ɶE-jў5neћ A3:sJD{:|ڋrk(Pܲg?AEN@kV{#ښP֣Bvc:iEFV#CDgu7@DICɭ͕cLr	P8\Lm%!>ɓ\\l@nHtG!S -?@MbY:nsؕ0>IQV,Eά(MeIѯwr^1j>dJ
NiN(Q:w@T FSJgmNW7=Zѽ1\$*[j?
>t{zdM8sm"4K/deTZQu$b P
?؛*;nz@rn8>N-R'VsM]%;wTdԧާ?ҧ]D( a>3q߽p?F(刾 *$@ju$o[<םTQ]}nՉ<HXu{1|i`[?ƌ;SgW|jLu[7.[
Mr8QY%=I|Le+#;JǯOM>+iT&C :ƻg9;1 3/miPuiX'(OpuS
zYSv욓xBbc,@]8[M=F'PpcNr]!W H
Q&cs37WK 'M2R0#ے}φL#sm9wWF,oykk&ݺv(oo<UIݞ =PW*6ǲ9~v'7ڽtށxcB_"Œ]&Fªgkǝ5sׇHPIn콿 RL
*U;>@"i`ރu/|f]`ѷWwUqzElWGT}n.H:XPE՚TlNpV|?۝;:P}pnoBVUnjӊcfB֏JGu fdLq +"V~>jTw'GEԭ?&a\7y
߄'Y@(Se !GnL"m]C
p"jDl+?%`g4h,{Uo89c(KUuk+ vF3QԒ>mxֻ<h_G_*^e񱶓+DGxF< vsfMցDk/ɧx`o
byxv{CHk	@;!gz )z\e?U0O}}ɬ[uLV!4n	Z;dW>J\rx\ rhK9|9rLH!VC6~&/Z}o [()ݕ|oX"_ɭ<J0-%W3s9t-4i~b)Qܧ$|/6S!{e_[6eN
֥kw%p[_yvZs>ҶxZAnVWh8g5`;=<kUUaP%{Kַ8N$?(5iKTGDҺ-5{N[uD/uldaO0cyǗyysx8K#=/?ZYndnq;3a=dvnbg AtA_.sHR"7״8O֨:\߯{5OSp(j{:^xe^frv_2k.fve'q?sEx:Rpm
(gNZ^~- GrŃ
TX%ǆ!=M1?z.%fR&>GYEw'SE*(33hbWPy&YEByr5!&)Jtf(xޕ~8Gl6ٞb3[49[n{J6ZIEMcrv h;7r,wȳߕ,jjǩЅYA֜f5fhI( TK
0]".(*jvǣ{7V7~p\3hp|W&lQS\Sp5 bW9K3')aZ+X,ηtX@ݏy^^=RitC*SzjN:AЕf ??1+hqv`9
Z?9>ρEY/9R5.=pH%]fO展
̵C]=gȡ;*擢H]!uQB+ADo]#rn(jYsf뼸&wV x9@=o{0	[8DURzg9Z#
4UANӹ>p>SY52[Q7]5I'K^\RKQ3̺~5Egnwqٞ]]g RxOI=Yw=r#x@ST{<#<S[:d70',xZ#|U#]KP/;*FǕKg8q&V.):MvW[jÑ ɘ fHkEN	ω\FQI%JSI8Kiw&N7.eEe;
҈fV
&j­ؗOmhpSt_A+W0m Z)V:SתOQA@5K)@ί 7H#.QQ] Oz/0 v7<O~iQāФ@`{n ў:hk7A^]v	*
#.^mVEM8PD&>r`XVftrVpTmܶEFAXsMK:}o]
Q79!IȘFryHzSiMK WiGvdOX"QVCZ%ugH454 diq(STF GqYvU=RȺZ`);\!hDjJR)ѽ	˧T%$z|7$'em)EvּKA4ҠͤX_pW.D=GIyqA'-<t40(箿O
-t uy%8Ũ$ԧSm|nX4;U
vpeWz.Mur
$1ZU6mShŐ ux
ssl"Ue}G`Dm^K&SE5p:!=?-h9wYiEZ:3>hXGPv~mQnqh*>2c|zQ&/T!
$xn4uvLۓǋ浗3YDzy9,P>U`A#j'L:,v"OY3Hnbf3pGXQ%S9Ee"?;/3L0{Nyt+RX;QSJb[zlԟo|pUhU\^,-a .){='=xE'&\?kl;
`TjyTW\Mn-t7u`RE- &*k2vܥuWl@Y 8Ėp
~t\ߧshQ$sC!8
HQ9GW2HQS(ٔ}P`ׄ/>
?&q+QS>krv^ǓAP*!S
gKr`lq<||u$mKQ֡:c!\Ps&)~|ZOX-Iag&[{<^iE{pӦ
aqTҋ@7WA#y}US7I6 \0ExmYOW>N#t:neU8=v4X1-8c3L_Ѯ?,&QલB60~ͤU+x\
z_H("-UҖE+Ux9Jpu,j9op˶1HQ|5g7j=ݱMҀ!HfW_Ңѕ:]̗]7AH~["db+Ot[Ac]ek*W"W}tQY?Ɨ]!!0J1u
6L]\C0ur1
]t
i}wF*tj>(sѪuUEO@kk
5=]|k0ڵQXrjq;.|-_9nvX O=G@gc@&\e"hh"u9#<nh	1H^o08R
0yZ]?Ш'/Iǆx5c3V[P]GIM:m*}7wE[PU
z^_AzY{]hWDZH|X,Cߏ=+;	GEOe~}$ʙPd?Cy\oѝs$`A8<Akq.ݝdH(
p8):Lzg@GiKB]y `iUȷu<8jĪi|*9)]W:>ZŝJ dY. ;JIE?PP>׿9b2rK8"{=BTi%U)KH'GaKHCl5X-.m-)jܬ]tvVwU	0d6 vF92gNYm]R]5X{+%k4r3!C]| Y)x~mƷC.DN)$ԹƯg:]i4[6VuAnȳe].ÿ=~m1׵"6IYR N|`@0QيZ-r|
7n9ŧ	guf /'7F㫅G}
@UyO;pA*G* 
Ig#F|5:)>.Eut%zJtޜCe- |v$HoH~_.h*qsr⸩<+3 ,Ooрkcgbfg4T{#q>bmoy͡R_/Aw̄퇴3B$VYB;dWJm`V:f`{ףdrUlLTy҃kcP_ Pp\~ZҐݹil5JCr7;cM
xKyaa|8z<</f(HLuaWgt?7x\F_JI9ǽy><l\	P/x~G>:!adNMP/PQ5wq
tSq}$ї}`Ԥ*mnk^
ȯsOKO,4@`O#Xu p'3YC5ӎpH	8\T$^- &Y\m>y9b	9rtI+c~hEBcS`-ASӐ;8Rw?Vm>`Nh`|	CڿL.<Wgz52GӌKooVLDB$?4js:)ow~-P+]
f2lcK
Uj
8:ֵ)e=߼ Q)] dX)	pc-ISM6轑tv=޺8S5HҀY40p
99^FL3f\穑*E\D8EB&ڧJ2N F <~G>f9w荿Vhi`^'ӕV}uP}*B(H1OWCigB]ReY |m	8GuV0L\_DZov@inډnNݎ|LCUy[p8ǡ:e)?'Шrǻ_>aT=|zwڔVuOcy\4t&9y& ;3uv7/?Kf	޵Ayri\mp5*?Te{pI鬻wo׍+Bף3[+D8.
S@\hN>v_/p,<,+L斏.Pmd*!NV-*:ol,eZNh@	G9"(	5<]t#ʘ3$>JFpw_إR[Z'psW/yۑI$>kj~.]*E3Q7TҾo l6mZ=Kf>Na	pp[6DVu6?~t"& fZD6CS4?W4xC_^1$n~HnU4݊a%ѣBV@ܰhX%=K)`
v=rK
.Yi|W[#$pF I9eN0`R`0gBVi_A$횙 K*I;_N5zF(w>O|0b
џ)yDgXt$k[k)Tп;*Gts\v*NYRQru~Sk"EmHGc MJMHS~`RCwP1ϡPgAQfƤ[rP%$D]U@k^oJf9f$܃hp.V+yE pJ*gƈW-N: s7Stg)^t=5}D(^jMEbKN##Z?@

@boR7~
z6@nhФQʴ PaU]HVWiי{NiSk??{&x<I%~i;ǒ	$AF-lЬ8j:8m..AekudܠlX"!fB}izkltmJdzy]f9u̴aJi.kQZn](M4U<a	v':gmQC3)ts^}L誓$SƴsΠ
/h^Au}OӈjC}5%ph&rb$_A/et:G=is?j/pfT2N!Lǰe'ʯ?\B"wIf5iz{w,25D'&eֲO:Y:
_W9.CJZ.jKhAQV-5 Ջ%h>Q\ y潪AlWAjbDHl\7?|r2}RJgNʝrlEKcHE毺Y`\-\YRT=3++skDmqb%FA{$U▞vS26WC7a|&p_/3ބ:D_g-qlkg`m@p`q6 /#lGu7ڭ
rϵKt'cns
y8}W9҄	\"w$eA>(clP6q( vxR%8K\Z#Nfjs+C!/[s{*]e@WͷRTq6]D6[5}CWuE_5s\/_Aٺ/}Z'$&WX P9G` k!_8 
"eǴIħUp*&Π
P5Eň8"?%;Q.Հwt8wUd{r9iDvq·z6X'&_DNݫ$>"d=K$z*
|`9w%!2H; E4=ĠoUu/w^Md٬Ƌe44Xh@{4]<p?lQůO֖@1wsp߮t|To|au9x[Jj<CħGMPcGV߭P+.ʇOh}Ri	뵚7
\d_3OFmiTZdn_z><:i逕c쪿Z>UTե6`D89Jw}JM)$&>ߖc6p> 1Hސ6ʐ4=%LnB.GU] ܷ(_GC}p9RskWZO	L4I!ݝU fn-0s%Yτ})>0;K--H'9$1.xmШҡXC4tJ>ܠ\BS6%V_@~3K{<ݱ	KKU@᎛
SM( 9Oj+L>^	 =a\erh?RR	{ù˭ٷg\S	/&KE@Бە uLɗksZnk%\S;7%@k9P|s='?;@<
'i]vvcKv[U$JyQhgqv(lOrPdO^,L~??y`\wڄ~0:XIld]Wu8&XJ}AwT0u"}igy@.=?+(\q
.]tsjU)mq6[)\^gd0n::
y]D`w24J{\{kd}:z~Dv4}ǝJZb7 N.oKБPj}		^\m=iГ0;Ř*L:	8@c|uTRs]ޫn`HțH}}pr4Үuw(1BΦlG^t"hHv<;#^tSewgI_6
LX?FF2t/ rm-wZ+W'i6˰zˆV֠&
%u#}#0N6s4Ľܨy{^ު?X>Ag'.GgXh, B(<5L<Mad{-Mn@aϡ[rZ
EMc|sݵ+kv!_iy=MnXǓNwC
ڌ&
Y<ct9C=9-#@y!8#~<.zy$sF1Lo->BZN7̡LmyȳF+3?za{R
nZ^[}/͏8AeQHcVUjNNp8+wN3Y*8/ܳ	ծ<Tɕԥh5Mh
y=wSLxv`)w$,Gg>KDoX1FCӼU)|"HrFY.*Ⱦx~oGMЮu- m呓۠Rdp06|U%ԁá`O(U+?jS]xNrɇh\OY8 ĀG.N!qd':{m*K=U(ʠRWbj6]
"%]ս/[^d-~-Dv
5D~J$6`Ust_9P/@MU֠yQ.yv!hIWcfrcGLw [cxL@Qsrѭūl .Eطi]N9d!t6SZR4D8uW,SrC}	Hs/ oArzFaupYwÁK1_tAZ幙Bx]#k:ZGL[6]$YbS}}9v~N90yC~VHp?ܠʦ
są!-`ZHLpJZoQdp<@Ti8~钞97UcX:3{)8RYcי+eƚ:ߏ.KfztUں#)^Ax6>d<;Ĺh;QUW!_s̩M&n9&M~&n`;-R7VFB۪+G^ݲʰtV/80ᰖevc\	s}qfؑ߾M=fT[Ih׮(OAfɮI&X+϶V?cq?|Pw	
³w"/(k	e#N+k?&Ֆ5mCE:aV]w/MQJkzԧo!Z?z
Ljdw]=@Ư |;8rJN0AWWmJ	T䜻?M
|秈!TS+ >mɥh("	1Ud'4{V۞kvdtQi:qhJ{~VK|T{냗]?\Pj31|P<'_I[S(c9:"$g)3i`tL궘
<[Ad˙ANCkKyAaHJV֬h-`Yc;~6y>\[W"i9^u
Bg]>ヽdUҌt[b-uQ7q߫A ׺rwJ1Kљ5&̋u:xf v_KSZcGqG#Ê5W(J9mFNzݿl7YlT97ㄒۥR'!|y ~_e2PDE3y#)[ٮp׮6z/P_;7_\iGW%ugyG<zw!(əx뷲DR6rQKxj`|ގ%/NRT_49)r/ܚN]wxtObuxMNbMר-Thobvf6ߎ<$g3fǂHYwc8Mǔ|k^ͧẙz(9cCTlOɦKT3
9:*/$7`zf=E嘮q}GdL7X|zRCUcwrpv\ERy&j͏RY3RsXx}Ӟ\8K[ɛ=ʊ	c'!xz@@N][=Q
<]iKB!7|j繜1!#sMnU,,tmaGVo8QsX>
.c`Nuy".|&筊k[σV.	]9$qjzgHYwOKns/M o/Y_XGO%/m<fQyT~B"ds+TzlxoQ1e6NaC:̑=
L7tJUu
&j
MBP~$׉ yiv6,gin`jMzTxqTc2)*=Z-`۴$[y&i 
A/.y
>ʨJ r
%֒em;2&%ƕ]ߑHNfR|'G9N$@|%Y4Ve]SVl᝼@ۘ yV:t|-5y-_b>Ώ²A.P:G5;t<AV}Ҥdtmx\Le=J=
J8	߶ܶմ=š}; 韞H*e~=՞uBC\ՆRRrf߂
YӃ3a
Q\JS-mb:pg!RfR<N}D)[T4.*Cwr5>JALBES@vՒ'ʗŬ)
D.8JgHv	[3Ǩr&UIo±ð "\=|~fI}
N	۩nǛϲ^54GlXm\Y+}QN{IPbF)8I!?n9g߿Йcꭶ-_am
M
vKmؕK3IG텸 Xp#{2?tUf	 Bp>iH=JEH:5+pqcxjA#&L'2෩uI.w%|4 <.+qVsʗ~ 
Ž9(q	Ҡ0P=9G_g*Ò>ʹ/Gpfi]:c	zRVEI)7ژT\?c]6GmmŜyh98)E3BW}yR}0}%6vR-p0Bogxו](ӄ*j]v[oHYQy|pTH:rں){[>hH a3sTO m h{>2Џs=Zˤ֢o.)/"b;>~J$99#U{$DáqNj)C~I%*h#TTb*T"y!V燷b%b,YB kw9?"nUC>RrsMW^K{CCԯo~i{ʕܞ_jyJOټd%JGgy_CG9f(6rAaoWk5Lٙumh_>;|ԙ`|hXER$YApz5p\/VEWc+$;t*|i
Ѝj4.^}>O7Fybltդ?-+ؔ+}epr5{)1KCGCvwa/u4PK
āGŻ|vVtQUR{йrҼ
*ov^j3g]L~QkRXw}yƩr}l*~ARfj/x._
E/pe}}Cا«<m yƎu'Q^xĠC~&%}1>=&AWk,5 &C]@U$~,75#lN6CNw(ch6k$rjÏmL(PzMt/SʂSq&NHS࠻_Z;+N~W_#k]
}:!o \뢡C4"S>bk7:-I*$x\JgSs7!
8X]?6r}5!
R;Uh|ٳh_иYY4u' 99ݓ*"^,oVa` %!HV0fˏ]KkYzfX4t
ݷ;tw|9ŕ]Е*Lcjj7P@^W7l]DZt@@We6lxc]]Ieo9-e[ǏiR*^Ož뱉5nv7hOսd8mgUXΫ]/i[T%r;dS#p~9%NJ,qlMԗ	V£1H6v;n.7Ei%H,Jse$߇ _6)&q.Px2 8DńW7
=&<2jY	sq9<nH<_k\kѦF5臣4у/Ulrsk"
(L6DBl[>t$>8nVҠK&/fmhIBȗ%-a;6<pT5iDsƅԄz
( /w :Z)u9 <i=ɤT᝸gŇFw]G2JuBT:#04qesI4f9XW[]'J
-0LrqPZ@9Yh^Nd]nMX
I
Ghgu#2NH ^-kTp c՝^ק{ZpDrS{p?C{֗d8Hx}?tYwrġZ;7ui?Ys`Ҷ|)s}
\I)ٹ6Ybvu/CAfB6X]rtt
5q8ucmGݧoJ>}`2YB
x}h*oG;wN<_r? K\wa`|iuAo KvXtxzQ] π^>DD<] O6rINps"	ܫesV`\\1g]xC2N .
O)nck>H^	U86&  yG74S/fqPsgTA[K8"Z6{J൵^6 o4_2#b
I(ћkFe+n;<e{9dq=}|<<AӭFI:e8} ƸX¶l;O%ȠmmЀYy2բ#*Emvp	<^Wbp`TPk``7")F'*0 st]3l݆K}(]̟{4<]OW
u;p+'`xh .QOnn:֟W۲(XƱ$n)n8tZg;]]IH֦J=ii
\qXTV?0eA=:ibUiv >S@>>=Y2ܹ]o3(`섞±Wz{b<n,e
.nԗ;ܛl@^EM􊲼J=9vʄ#5
U:ZLWAbS	㹑5F5ǡHz6BrIZ[ڏ]Ib4xꠋTHY\0n;:yo*-9ɜ=	|7	(%@.qu;-l/*T⦟0l9N
9h*OtH#EX:<ggH@`=hXq^1;<vDw:LU+|?/l3XƯiҜza	zMlµ8UQ6mȻ!Hɖ)g	Lz\^qLEW#A,ϣlYuvyӞ@h&U bNU87 euf3xie>	LzJtdY]K?jcCi~voj5uo-,vke!m~8r%I#U zlt f	f	 *4TXyY<u:݊"
@ǪR^؎$Уih9Ͽ)y1#oQ[l2T3rEI!
Ӂ.-R?
`?x&l燻"@*;nQpՕ8zQ^@xEͬHif_8UaӬ>5uԈ:0gm["dl1}'1+4=et
}[C\Fg0]LEQ,{N/z?أm0Hr:6\"~?Og::oS&K㬆|o<ܖټeaR^%v?Y^}|\QShףpby+*wVgA?[x=?& M+8_U[8*tWAedͬ!'(kIJ]"睅35<j [}BT{M.? GMy'lx/r({|9+Kp<&.XQ況kun9ԈVoK}^mp؉%qHahRc892xA1L%	7= L{v%~$V4~iQx.1y}H<LHbRXZ
wH&!Z16al(ɦVs yiyO
7d;):Clz}u1	+<QŶwq4lL=(3mMQN2;Xi*[ֈ> 778|0-%+@nxцn#rVz=ӧ4cy 7`;UvvqǟOgS8±tLkF0pp	NWm9Ŵp
Gdx	EXf3Lʖ.T8|6=}ޣQ߷gOiXsr*>|(:.^ܾi;QU|;OсGc3PFDVa+#Кl/wUp'!1S[AV0t[QO?7/oW"\Q[V]s~]39^K6*W`zꗿb[j^eTh6(5s`??*p
uPs`=]|z!M%D
u ;y^Usr
utV(2pSmuyS0fX.k'(OGrg
f-kL! k:AlwQS!>W9		`p?l*I4Oa.߽D 2qSQdBϝhB=նɽSaUk\XYMaxC4
WU=8~DmIDcҝB1ϭVIryبloGCV6l
~g8R?N7jʴ*rοzF.ؤ,hB_UM 9K7v)nNJs?e(Q5G>kJ+18[!ie;z]d %2E펭4ߨ]!/r[#AmJ}w9G-Ktߠ3wﯿJ/E̍O<tūiܗcG	R;UC 6WkF:LHi
͗u5땜(//24=|$Od
jtg]u^R+A|ʭ-}G>I'CW}x}l٩ J*
Hޔ;W\ҲeNEh7ګ"	/
\ #u GPi vǑrr>\+bO'%ia|$b 9*sp²qI
MÓ^m"B"'+d߅4"':Z=p'P|H[n] 9!n|͖!K蚪xǢN՗Ďr+6jUC>mUUl[QbG&~vƲ4j"xӣ7',\ԉ"<_g) hW{u;lpGa zl72wG9]t}g==m}r(bsTnxtIKt?q_,η;?GQ x<s;:<FUM[u>mxL*I,WX:>Wc4XxT	IZW+4Cw.(vΰpWD<,`?[Rۚwc Q-D ݲ/#n;T:kAz~ī]iI8ԕsGavb>)0×I9m査Or.qŷ]$Wn*A
LGb'|QL%CH9gy&-ƳUH&}=7+>HVPۍᕷp6)r`іp6PP'8)BթsH1B||.KfSIRw=1Ee[\mPNuJQT}8N@OTuc&TOtt=QMX6Z_U#;5k@;W;H YCy`{)![
 n9$%twHJhE^_rXZ)xϢGK[g~Z/x${=Sbd4D\$;`WQ$T	kFhEUS8D:9
6RSKdr%7~KBܚ+*5?:L	 ='pdqX;ec(1:('\*TLÍAΖ99 *5T]6Ś[MGWb
!l99x?rBjݱsS!͆>[x74fe]uk}WK#tuIBy%*]|k0(z绋LΑc\ ֬Nt|O(m썖wspP&T$ Ǚymcv_gq
̮,׫a>nuUŸێ8%֗x>;xlq?œq%p^E|QEѰdA:u~Gd=]KX;vjs_:pb PvYG./"Z]6CC^J)H4&=ކ: |WI4XzwS-z7KˊR=Q8GKމ'9o,
sAtʎfvr68>j7S_Q)M#-Gu
}R(
b^szZYҮWA5b	f*l~V$>,ߎUr%"Ľåu9%ε
Nj4ϧuĻgn$vgw;?Vw"dݚ8kQVgPM`owtyBgG˫+lcovUdW+o4jp[xIX\zo= ݤ).ĝݎWZpEi2Mlh[LπC]p'S>poQ譄+ns{=bUqT4; %a)*YHF*w~Dpu({
]o3=Hs[A㢎qa'Q!c컞e['k7Zr8k9ώ߭.
ǋH[1f$TsyԾ~JC<׽|ح8~&\G#of"P_+)\~@+VgEA`b:Cz6ݡq@^q][v6- U#\<Y7=x}~NOU:PAE!Z&'t5/9:3GD::A0mh--Q"JveFqTwԝ'cD_T?$TҞTH6M_	M* 1% d~	
uMf!	<al|lvԔIT[2^pjX?E´l>tݣ3v<N]9X)tG(zycƠ>)-N%>Rh_%ZZTz>Q0o~ۮT,׎s`JDJ39ܷ;BG97HV|rTo[qs/Sd#xxQ۫R!9ӅusKrҦ%Hg>@S_=ԸrY˵k%ф,ܮ[8'}̞h9pDCUD+ 
ڃmO]{ޚ*w:/yo[==PTAт~H=p^HeXs; `=}wSnoD-cLͽL^>CE4/T
3PّU8`-$Hfr'RXU-?`7:"=S܀BЩz̙JUGg+l@s$hi}|RTұ @(B*-r<ݡ|npW%aBLU6$o|5-9\y,oQt4xUW!etH{v(
OJ[݋A7 X]~Ȫsu֚{PO軆w=-1M˽L7+~kT, {_ЋE\3>9
;Zt$\Oũ	sj"d
;ha|[ڧJ>AD$m>%mgLKg{"BYYZFd U)Ŕ7q";Al_̛Sx`XPf,X[E
(u+FtX]pB~&椯ebnX8u	OuT<6Rf$t07К
myx6aN^ppLЩM⩛|v1NO'	XM	\G4#:PJsɮpzcX"we 	PӴgga%"&3*ĠL $j jeƱKx}C7|ti-)
˙O`Ps5s^:ʂjNxc9I3UU	PL%AR]m1`r-ٿe|kU+_CͶQU[ PxR-;݇H-%A޺rkxK/	S-R~`Iutҿ?9I|y,Y<IkfƿAg!GtԈ|CRת篊BZlyi%;4kc0plP9t8jZn۾
< qq7+,	6rS9;Wnexc82Uxq.*8g
jg{J%^j_h4R[N
J*~eh2$ڱ-Z;pZ.+I&甌0LdެvsrZGS^UWvS{I:8]fQ$5	M99/;7 E.ӏ=P

_AA"-?!NF{śhU
L\hOʳy=~u%ABBDAWoE?e!]nmWwّba>[ T\IW$ݳ?u5eդt)uznox.ݹmRnqY,xV.y Nspǝ8zuW`q(VUVd˙%Ug[D3e?Ѥgr(tp48H5*VG
ᆞYu)?kKD
븎$qArg])>SӼpv[<<r̶Fo_;kؑ}z	WYt*YJ-A!8Im~d%vdCOcٸa?R":	{pE[LZBn/'\0=MAl肀Hx7XsnQ2V]I
/{>]6G^]P<14WkYg#k|D
rLӣZ.u?Sc.[;"uE"(n;3{Y7?n&7{@WR<jSh$eu}%AQh#*T9lt羸Ow=BVġ%Fב;[0OK ުޫ.s֯i):\ċeѷ8=RQ{sp 69ڹh+[쉓uā
sp-:WlWy{e~]Ab\hܯ>0Iu
PrkDҌ!2a	AfWD9y40a 3q4UQG͂xFH>%#^5g@sWɣtA3ReGH%BYɎH0ȫ)1Zc^ܙ1+=7odA?HzZQa*Ѥtf5{C<&L:QJU|	>wj- 45Qhٙ$fI\]%+.-<qOJ>x:.*UY:Lv败_QNEMb+)X0u(bdzq>I
;섋ngַ}݊]5^} l@gu\P%>yxX>@R(Z?ϕ;{$ezYQ"b'	81h&ktkk,kʐ ԗ#}*hBh+f=z'uʼӺ<xzqpAz)\|dw@@?n%^ޏ;W>ANHqj,9@. EF& NfԻqHoB48B8V3inwu/==i3jSz*ߴ\N6-
Mq">*y?ѐas=JrU׺E4]zYBr
\sLp
QDr'UU N}/`j߇?2x}3ΫF`< 
r>Ǚoq"۽_> v[-J5,kl%/׺ٯtVs=/1wz4K(VD$Y-RB4Ԓ񍧞	*0~m)qKzP{%$ 1Ȅ{lZ~<]/hbC*طCiaAm?xd½`	r>ySsVoe=J B[qXrg@+H1J	}~fIyY$ {3`Mc8o(K:2.	L~-UU['p#GF"8GZlOjmW`tc%\Ϳi!͋2>EhU&9ӎyq}ibvI\rs13
@lO
=6;%W=)D<䗈N捣X3ۺg=`۹riѱxO^Ƨ j
+o .ݼbZ(~9Dװzv(%x -yȼfS֤+6!o K"@nP>!!KV0× z/(Atqϩ& r[*Cuf*5\UYZv;`kjĲ* Dj4`qT$"xEX0wεE8yӝ^u;Ͳqx;-/
9N,TSUXrlnjt/pP5^)j#ft~JXBU8Ht?{
{ϢRk
r2X=YP
.>0ҿv	KnRE jOV]Tc7vǘQ%Hj.f/M!<}ƻ ~i⸬@vNf*faՖsQ
7'P_~qg}$'}=Oj)ey	J9["9-/gUFB[69HCt⭚"k+*:ՠ{lEgrke8cf ^-ӥsS["UNkSgkd_]c$mwls> WO_OWm~HM_<g1Н>'芔~AqX+J8w,Ӭ9(2O?;$O_
#/~2Â%P0CTwOXH&cl_=As:_#B]~G{P|£BJSw%WI4zeiek?gUM
_o[&RKz퐞j1\k_Lc6
#kJ+emOVOʋ$UlGD<EMPŷ$¶xJwoxUL9ݻ'GLllknڵu*&VU5Ge$RޟiT.{λ[bD=ϖK;!vVng|!nڛ{79BO+_$%qXrԁv`~dZnjq{՗'^8ȤlgACPB|nfj]&rMkj[CTU_NM>^Mơ?)! u<pʗCI
(	KXU
6qrʁpiWHMDjh$>i
~(W45	
a9k[#c}V,OJ0htg=^OpK[ݩ"{9ѳH0WѼ|rvHBm3r2)`wk,
9yyN382	't8ߙᲡCNYE8c	ǨL*@ʨ|ǲw~P?#!:j%iU(<0`HSfn(S䷍('#j6s&,BM
F.dU68j<w^DE|lc.`9n\{u~&c@$!-RtK.&'ٷk
@[#NdG__䇀yᦄ'儆K ZmRTLP^ Bl5ӥUE[G,6`bso=xxE@PQZHhR
q,f]*?RDU:s:=ũ
()+EentK
X J3un14{H@R
͝pk1CkԵpS7't
L<mL.+~j^/k{׏Gj0 Z3)E=9}]֑#ᬵ̵T±үҘv,{KMQ /TY|.ZVQٔ"`#;dEwNX!
m("1`}3ruy<UJX^ϼrqLȺ,G)@H,^,׊Kw@> ѼCWX"
'N?$[
pJJ<w>f-B-[%mJz<#X֟A	i3V!TwcˡRZĄ.픉퀟[
3Sr\R/Nif:U7
&-!#XJ
/M!r$5:) p+ɭ46ᘝyd6MDuDI*o8tiZ4	-=[~\	w
i8 xh^k.GY!|n5W/!|D߭L`?-6e-⭔yyjA6uSD:>`ֶS|.@۲yBw§L;قfE{6>K.wl.BngVߝfxKiڗx =΅єh*b^,~8jpoH~xT?! )p1_(d䧹R-sot*dRvmdfYI~_
Qߢ
_ZDq-ѡ\ifS/%vfy?f=AMMy,MJrWSBhpmGΏk߼ Vבo
Pue"jMzh[u00`g]8:r]m)pij`}[۷TMIcӎQ-2ğۍp唫[lFʛY>qT@"	0X]C%{zz)EmyW`k [{o s^+E_w)_N+׵mxVٕLu 낑 }]	 f<U'0ԣ&X̰@bW;aR_'v]C=rF ЏϻƎ?WuI|<[pȘemDq͵U7Ay+ |N~5HuC&$KYU3lO6RSJ%wShʒa(Qj9AK h vW@lx
lQlO>:JQ3иS{t/:V4
k0~$%\U$ptWPw<ثQ;ɊV:Jx&:r?C|(^&eAo!,mCm7IPA3yTQsP2ICpTB"cq{﷨74HY0Jկk^[jԽ\zq>@5 /3Ao#pܛRurI՛#e^O<Bq㤣s p27d9(!L[C="ED%.V+6$_gzOuVԵ,מ]Uk[5.xW4pޭNpkȸ$M. $fNguP`=YQt(;GXjw[婢Y&] ՆNS(I`p,%5eG-?g> EF+Uprin)t\VKM=
Lw b$T]C?(qS; PJ]zGKf	PH-\LkJVـJkJQ٧UYuT!`Q>Yuys,AГNB8dEvE-	Tʭ|&akmg7mlʚ=]n:0[5<x㝐tS7-ӭ֬AKwDt4
CSՀS:!*o}KiȋdfR H)6PvЬrK޼*(:(F%̓YmonP
>çpGPv@X/(!"P4 ,!ӚprPּ[; U
F=!¨>S=OFoG-;1z(65B;YrQJ
:^A|๴xVF2pVn_;oCR!Sj7X Md9ZD[Kg`wXsP;aLّ7Y;i9wܰ¿%ֺr6EDLPn#.Ճ:*46淾xD=^l5dK$9U>9):2y}3U2~~;TkS_7uŧwJd"Jh#XQ4Ck6.J1rylU~B	|LvӔ0`Gr`8#׼[*+{D:| ^n괲͉4R;/yNۉwV_ Nymqd)}ч[#K;bKؽO#-+FXՂr}jpNJȅ)L*Moz<Gh
 ?zܢGz1WNa$%	;?KVf
MKdӣ#jYFVvZ4Ai Ng^8G+c}3]Me|ճ2C57/=bѫuFнtg9yAs?q=wwٟ#*=Lut5~ 	%U@`
ϚB>ٕXk܅lpD9f|Di.I \giV*LG@Lvr; _J=*PCZ@_.{+v<- UN{5WU"5V.X9c8iy2N Xu+$ bCnIʣgMtg:gzx^-^oc=!dwa }<a̓iU2zU[& 梚=/b˯CӀ/o]]oKť<u
I$sV!W@ƍ)48uH7npp"L7hfSmmm:?!Ln:
`$ݍt|JLs$7?
|\PvNI@ǭs5 7O:?'_͙$5."Mmtȹk^U8 j/W!"N]Qy R\on
W}y :k[hZ
`[0>xE̑Hߗs^̄O\>4qB8},mE1ץH@{9}X[}+[&1 QET@n2;g
~Gv_]90E6O<tt;<z>_AQ2Qcu%sVj?!WN݆auRUյߜc;i6FC9BNB&v|>^XgRa[82061F[:Ι\gFcLT~^w׶qIC[`=͝o
BrWo^j茺j*£6
Fyb7J
ᐄp;L45&ǵ--7"{Z-SJ8w	
;9F"W*wHzj{<Iy;>%@(
8!76i5tFavRJen+;o6gZS͌	(M3..|n%udUuS⺺;&9}+neUxF{SIo3tWytfJ>6pؤ^Tu4Ľ@\U 
:mD#15̥:iBd/AZ9 Dy$ۓ|4E
IsЧ><gլ9zӣBx}~YW;/ }&f,?t,H& Qh\A#J2D~$wM~$q6Kx2$-`Ӝ-lV~3e?+?عzA5Ϙp66qVJ`õrU!fr-$tD2I hק83	"4N7. rs!@ikFi[2`W<<@7[]j܉p ѥ-4&&Ž_&h)gs̖NC
W>m7UO\ɤp>7 	w˞vpTrK&|ةHsc)K$m^Ip\u#izg_޷Pʋ#]rMJA
Z۰4AODJ0M~+*LJ[8sĿ \Jn/֚hDn7c }g~()7ARr#Pt,wZ=Sܷ	x=ޚ9Zw1SGrvOxzsZRH{.P]aV2o
*AOW*sLt<r/Gr<:J)$O$Oh8Nr2\yO jl kL S2ZtU-i񑗲 SmZ
\iﭏDB#t}>jX[-_U +@߃G;xDE}8-_wGBgZGTw !`OMkNdBd너[Z
|`9C!F_%P@CJ:E<INr?MjE'k.hbj$~! -'N?鞋<C7Y S`ֺ&Dp-TQ<0a8S˹Ki]Gp03<6b+hjjtSRH/L)Vc=*PWJgS9Lr֡o<AKnRwQk;Yq:-~8e4rt1Y!#g\`!0*3sd]i*_jnN%Y{Y?{u~sQ[ҥ> vʸ\0758p:TUuWEh?6&uuMn%AXZ\pc9ɺeր?roPt\z'ϴ3ܮn@\.C\ꘂ7	(dh+ɮ YGNe\lGPud0
_WAlvyT3tv-a>A uU#'ǳGQK# I2!}ͧӗגBU5&fH3.!t)得.Gh;ilZ}-[/*jA"ϽtMjtľUM:͒&@w
$ݡoi,15k3h'VW:}bv25+~IϦP=j@`{'YlTj,d~)xQ REcyI~Kwɣjr%9체+UnOD ̜&2lv9u(R%9%<F/MYݧK<E._@.v)k$QE/(ਢqzZʠp>,>OY.b~]'9).xOOU.黊+mP/25
u?T:~jmsei>&|SAecsV$&K6D}UUBoҏBirT3IXVb19@U=ӱ@c Ua"Ճm<@eXjY,Bֽ]ZszWHLUm}ˇr;H-QnolI?L1GR\6 #8AztpZ.HD[7s0gȑˉqVez\2Żs+^W#VVRJO>}u{deSqWCH\NE-uiQ뗃MҜ$r6}]P
!Gm/]ĝWq=WM̿\[{8Ȅkv"x-{ixt.vôv;$D]%rR9dJojq>qzOM9@s [M
R܄b^UZC㼾"/*`i _ ;NŲoGɲ]ѹG#,MK6
=9IiȽHʜcA>f5؂sˑ&bVU52dD9h
<5&_!^gjBa8S:vy
X*Ό&W`4Aׁ<OpdV ??NA0xA0[F)L
P
_ͅw#LSe醨>|+d6/_V-d
rt㌒3Yd1o*Kp:lV6	@*qU%`\Q\v#jymށ	G{JPS-)s'3uKV/֣ޅxvp5;z6Ge@^C}i dB?'>Tne:.rt+o^\+UK4#e'5ؒl'ץU'Nh~VW<=NJ_M8x|5
T`z\Xٯ' 4L\5G^i<
Mk$P]tr+jk[f08>gTFl/V%z|s'8(mv֜WtIψԧjk`]Չ׳Eu?qZOd|ʒ$p
wV<'0tjOt7D"qk78Yɽor01Z&FJ8˵i-л4ն jtM+ũdKD
Ԝrz#VWOd4gX:ѓYЎdqp/姂'*Uk2 Om++q}}9aniobOslPL]Z?rײWj51j6zuIc`!PϢOг3fἮMG\7h_PZ˷U/S`~jnwYЭ 7_x=Rpl3g]7Ћؿa-]PI~f{zfI5yTZjsN5ogguF=EhJwrǧEz-ca5E&-d}̛"#
1VuhO#S7?4D8ZR@kh*ׇGtl˗Pd}4DНHst벸&8eIqQDoIpL'3t[
=^qZ!?Q*91b50j}8 ǩA!EB~'T@7yF4Mz1n9B(U?W78vSm8(؃3Sk ½{T3w\Cն+p XU`ۑx*=n=)kβw}M@PM:zxŬ[u8]wTc.{z1i'
T@ Y\B$[Z}F(j8Qw亵3K)i펦S [O_NB]?+\B87 E.CR	H蜣[B6YA-mV	+t (jx\ӝa;-3H{*~	~s+9'0	>a=nE^GKf{0tFtAHJJC(iLA z4*jkw~rvNz5CTȿ0ԣs9	;Jh=f:jW|T\jى
S|!$rۂrTЕnTIv$,a&"
fY %jWCesB6/J
,Mb͇4ಶHD"Li5pVs9[i-jqb+ d0tjӀ GT=i9hoF*D:
^(7Az:U-'vOS#I*`nA
(3S03P,eu9B5fLj;)yX)|_˺L`:H-W&q1@엝5Bc5bY|]:#iDí{+Wc9}SSO3SJI-S>O34ra
4{^,CI6߶Kiq^d<wv`jγ%vh?m#4]ƬoZ0۫zs4sKo$W5qNeNk/o?e}n_sLeD(0wȐkEz57|&WR 
	;gglUMC&
0x_p$wFwlTfZ.'uKMf |HZ)N,o9|νv&墊O@@99zeo֖Ù!U:&WTYαt8DG	Gܝ[.3[pIK}fҎ7&*I"5O4'~k@JAJ܄iuZ% @N p	10n{tL|[6dڱ5:2ɮz6Ҷg2U	Ja?;f]L%nݑDiCYQj<P`;4.u!8҃
OڿjmA[ 6;=sכ3`J.]U¥c8fs@_'f.RAJ>x7$	޻<c*>j\QO#Sx_3WL*7(ּyh£N*R
4s9mU2t )ÌDmW#r^x(Uv	$2k.GY?cdRQihu/W;b\騵Aw(([o[`}G7Lcۥ3+Zԟ`q{-r=P':Rʵ/22ͽLrGD,C	',te:+=Z/ط]{?GU#G<W9\$Z]aҹ>;yq}/-anK]ox8EC&$]Ks6ZOdxr"Qn9[̦FU\w퀹RVIcx2&X&;6jmͧc'Fh45s0]t4r*2WX!̗0T%xCͶO~%8w.`uiF,4s}\..Flj7mn
yo&mfstl+! e-?ZVp;v=^nݧt7tduv%^{:BrJ85j"F׮t`A8Ҡ YsTisZB qOl>[XCgB1 1Kq+y,|쳱7@ E)])+A̦Egq	7hGK*V^X&mE[ߛG9GC7r ?"5uXbyqx+DUƫU\YLD2
Lf9Cu|̅
"GсbtڑO#,/m/	iw6^:
NtVAlu,ڙQh[%,kĦֿ2nQ 7|O׷OjM]>i @	FpkpL0j*W7G/Uۮz <ڸĮOگwu|3<}^Ejk#َl6<O u}
̬1Wm@>HO+I>{cԳuMSslAѳx*y֏ BRFq_e
:}4=A_&zJNpnQ/g*p7ǧ& UԆ3rbȵm[>)"%y
4SKޣ qgߪA[ېQTH;&-|[9v&Av@yW#DȇkjGukyɣ1jE~%bUPP1xBRDKgɿ[pqo)Pߘ=6oemrCSSxe].ή<zw's)<`"},L#=cD@L=O[0l3#b͡IM)0-|Aտm3Opi)k(cTP$K0/'!)O:j@?JNTNZ:3hF=Ω6;djϫPy?E2V	A:NQϱ?3	Js'I{Ga~rRSIƩ2<9Sh8}+w Nj<Ӣ <<]\7a/!z:RzLS͐B5WںFvU^%CvbC>8L#| 1OzQ1>IXRH*JRg>і}mBe
 ޶9ugeZ\y 'ϙs׷:&y zmɐenTt#ψ_sE͎=[Wwӹ!
_Kuzt$GI`sbq _~ziPn2UT*GԾrl)4u
LeQT
)$)O\GWyk%a7
o9,Po^ <[I.isoy`U*u݀zRKk)&IK(ߛ4@9>6y=ƟOM*MidQjM꯬z J՝(H+
Eғm=fpɵΒ^G+S%ߍjӐ?0tAtpZ'Sg%9$
/Etw2#H@UDa__rF ؕ%=Wx*4 V6ԧy[}(
Cv(ڟndw}(+a#R\WgxS ͫen?\7?OJ͟"r9X}ɦUC)^;(dt7 ,ed_x	<dZp:R7^ef?.\BJѺ.u
]59g9:lإfDvܖ~	M`k+jlq"XH0DLq͑&:;u&l\[ii;="SUqUa)4q?"EtU̡:Q	GJySon#=n ;9sjљ҂cʭfE?&g7w z02	GKs"c οV_9\BM 7RcI2e%U4U맄e	ֲ+F/?',cG '/
+Πx$'A_[;)HW#ۮw ?08aG
$DKR<!H*h$> C	bA*<-~Umo6ebyBS)no_%=񫏏{
n^lr/![-ts9J@{a)c5{3#q%۽J~. Ѫh22>^΍|`RW3߷~UAnܬn*ĝӅF
+<'qU[Th
<9jpT8%@
{S(
i**Fڀqv *pmv/;ʼ5H #VҷSgC_R7W9|u$Y==8wB&n莐 XH»6N|G>5ǵv땻9)i2:8	w;ETm\TS\c;rH|G]HMGs	j0]ppBE?dw]-N v
׉].T(k5֧Nu4A2Y!_޿8DQt!Bؽe>M(Vzs<{`^o
'Mi/S
A1(Z9<PF
?xE+x>
![ХpM	dݝ3{~
G{cp.ifK#jr<cu߱jkwѮ,}oUn0ZɐH}@
@kq'qSUp @ᚚ\mfZ!'07kC74U2y)wWNtR>U.?]_ݭޥ2l,pIv
Tv۞VS
\<Fdxd7y;mǰ;ĭ\Z.r5pK)KMuy;fڐ )$WfǮg@yzX0p@**d%|]i1b4N'Q[$:DA"FyM}Cgk:ΡptFFU+& +tf_'+R}a<ogVU@2jI	Vywq/yyȰȷCQU	o	Mk%NCU-cN<jP 8WsTs-MVKa|7Kt3ϖF7­;W%86:hQ=\6jLn;۸VBT7l>>-b6%pTo()&d?W;#~uPJ$8qNlBI1J߰#7}(ˌ֞|[2QwSQRZtJ"b+ rV} g|ow v ⍁-/nE׋_Ҷ`KIąY&wڒ*Y>gBqr,:W Mб81cjU2eS5zw`{s.穉/;k o7-=/ǡ;()D f\d
9vŽ,k{eQՕ7.q&ݘv
R1VIN?SZJ0R
PEVFj*v!JCKtPDi죏<	Uo 7O7+-%moƫy(R P[bvIS1X74s^tWd&[hkI={<4W]@zOV[^w89`<mìӷE/@ ',lp88-ij
 T<za_*pC,=_V+IgQFR|8k34H
CoÇ\4RR(K1[b?9S<Q9+f)szn@8!'ݳ fqlI-گjUB!@C\ƿ
D0i vYHa*>
 7ǋH	PD=fn^
%vStـJ؄S9DĽ;xwhroOZ!\'@	d`aJ'A8Dx?2tր;(ꧬj[*AP=ezm~=׳Z4 m8: 0Y.U+ҁ`q,oe׈c}sthX)| Σ%pF	l qPҟ^\Si4u97UPCe<ﶼ>-*%Wry<hQ?
@q?<JP67!po#k)eO8`I+9vm9qPh][փ
~0Qt<**z}*y;v9̸TY[GeSS	TQ){,7:_GbȞj[|>Y]}UBS7PH6f0
$92UfB fzy^mq,s+gs7m.U֝}Ю蝦f؟g>AEާDFޣݫk!I.'AOq>\	q8W:~Btr[RɤE2P{8](]8#Ipuۮ{}uuxu"Tۼn1jؾ
_ӇoL%Pn+a:ms?Itnw	V!P Wmlb	#>
s&9&BRVTQ8VOp0	YKˑ);6}SF@K_7!_vlyhMJ%tnafT
xEEZD9<H$v5S>saJ&uUzNnXȞMi~OJ!_]~
/*q#STI෦W
7[ujGtru{TR!̧&iUxӲk2u℞.m}RJe符B qG犊FPVk{(/`af+9xOL\:^U@+W?6mF~%Y<ߟTS=#8<nsǢ=  +I5˲9trzuяQ.P7ai5YdE:QtcYNo+4uxq7iBLM3tvhMv:Ccya-
E3rةU}~ȕVluz4r.#"WLqThv-e[JDrPZ5#+35~m/M۔My^>_7za9o<$],;Ar8y`,3bNJ#Mm,P' 2bpI,ЛPյ :cNֳy}|k(-~V{&_XmyO]V/ g
<ȡiORr:;bv&|mwjnM'1pC.C+  W{%'xB>v$Sp|Nz 9AjY&{j<wQOm:Su1P:h&+`r1{7p?$o;6婅t6Ǣī];_K/OR"eCZ`Jx={<UT>h56xX+O4VU_s`E
j剕>&(rv(1LjXjۂ|WO!^}/sRPKV)z 6hZ .nz!ovܢ4tU启.VfR1`5IX^;ynH1ŝͷv@]WSs+6W{=oP!?:%<ЃR#7'dRN'Jt[0B!7llZԇw2Ypxꔏ{9GGąV[˝gݱ߃A yѷʵSmXǋF,
؋^MI
ت5|FءcR@MU4/bsX.ZG8 tאnZOƍW/ry~WY;E[?mm>IG[#CЃ;h)v 
\=]sGgX~H=L{+ks>k9﬌@|!^:t48Y(>0@^XZe|0/"k9k<L~=<;>ԛxڼnTp 
b`vPv+0ێ[Rdϟs8)ÍRqKwG&| RS=5kp
 j\.{ݠO+>=?l)pE-9n*Sn#I!~oҷ'$	g\jr`e'^§A)@'4m]KqkP2GN"1fl-v۫3+l e2W'j+vEpr󜥝viw \?]ъ2-([0ū';~z(w.%=!
}b<%תzP4C]pP9dˉ;睫(<p$ :	&ay)(TEpQ>uqCu̪3M~9Z`e
e3]ig\\-kgOXR.Ή7`CLHs
͓:}C'C`{tȭ~#bafVpL/]n X6~{9R_ӍuLPH
Dč
/Cwm\ 8j	OrA=29o"E E='GC+R
9jZIx;{|@E@6^^Zݑ>7Jm*mWNst`s@@*[qLډu<裢ET8ﷳ.M*ӌfpU萭KnH|_$$CX
G~%~#KՠZYr

-:7$pjw@&.|[ro0|ڠ"_T	~sT_o4@4
B ޽+ޯ~$n(PwҦ,GWyxQVM\ٝ
v05'k)8Zf^aM^|E:if4sa7Jm9ӭ&[NKW}rY--:ׅ
DsV2p#DXdـ[aUm:}g`yss¦d@nC39l9
ҨvL'Y_0Oe.mNGVP [kBu;1G?%ӧ668xWZHEXkw"{u鈛g0;-qlmȀ)nly@#¦.kf[CR tU>S/*7Q} pѫښ'XsZnxg{ܕC9lm<ݦIt=kb#098;"%%ߗB~5x? gj=1ӺIC%Ckٝ4ב`
@XrE)%Qx9I] :·T0<:~?ũNO~xD).D<zE]%k M%$=ڕ$O~4?c:Oغ:Ӱ~ԉA||HvG_҃=MrIp<Ej0PYn?!4	Hv/ۚq)
]Uo!Z攉ei	ޤ0x!6~&Ϟ9]N/z+Qٴ>%Y9<C3]GMV9t[r 8jʼaY{j$r{G6)z
J<z3-W#U+Cc>>9Tv*tMqk}߭,VWc1=EG<l"8Y#Z
L̨ 2
$ LU/ɍSP ߟ#!BJVgLg2(9=ȨWnRKǮT$(DQaCEj3p%&stv
#)6U½PqԤ.1oHWwWhجWtS+&}TI:,?@Tos1ӼЖ qD?XA?{u]:ᥬ`aOѽMu/F\˃Bf*Y_
l9b.ŝ]|s:]dqxY\@kaI\sۇV>	U.ژM»8s BqCcTΖ]8/Ncӏ F)%D :Z!tWoRTB?XJ	hH!O'0)z>] dlOvqΖkn*克Сm.7 B*,Ja!5sg\&5A \kO >UTQ9͙.e%ɖ	*Zm';9G>ysp`3lu@1)8	tϺ|#
qqs(pavb9VԾT/G%?GFGvyt{
ȕ0wJ*ԤeF=>rZS%z#$SOml6^i/wöji%@AMx <}2.+O!N(ǗBs>gdis$M}.UxWFSvͅҭu8(2ޥ9gI\}D=)YgiPa
dã0}rTN=ceGuUogML|#t ̊޾;ڿR<=	OB!ͤLvA yuՌRU&p&D
>Εa:9z3SG?g͸NMC4=9U9<H/gd/5wN#~iA"Yʉ{UR~bdΛOH`| \(֊ޠrڽ .C+%Y2;>\~f*<lm*2O	MDi@;f\]VT^EIvFՃU2B[y= 0ůJvhO߂OM^ɍ*^
ڠY%if5"TkӪ&[0>%%6Gs1#"j
vڊW̛
S?\ GfO%h]ԥz9dyUQ}3_=aMPώނ>wʟ[WEu3*>ITI	aT@M%Nā{ߦ0l+G#f_߯&)8z;}NPeJDV0ﲻBeWk<rS+dԃս	XurC+0ʧ5/7G%<.:}_P*;Y2
Zmk4X
$~w-'sCcte`!pI嫟L[/f33j5~kZʯv Dkh7nrwg^$?Qޡ?/8/urxP4MU J#<`IrlgF3*jV(Nėb_iw&]:GߦDjp!T?C^Vp46togȯ*`]=\Bk j:iZm-qXYQ!Ug#D}+n_K!u4:24D@~N!O7\憁,u+pA։lc<n<9e
<]E o2qF>t\ϏPW½dSu'ى||߆ҧУEoº_LM`WOr9`ě	=,Ήl/(F9Q<7ЗY |9-:?\nϰHw9U<S9Y'ճTGb9+bȎ1]Xс] X8Jr7U(dX\3<欙<`i=?uD&:ꈴ#C 6Uk@2f"UMf!nH?ZUħ4ᰵ犧n 3N<:-)qeJ~7?y*	8v0gQ/K*qpC򆴷S@@dً;$@DqM`.R8wUcᣯg  ݸ|7ՕQˋ֯xA@gbYj<
YdNU1ԜS:PbK
	S=j^fm4uB	7<'&D|\W۞s֕a

ꉁKkdǣSSeAN+;4z;Jn5B5u $?^:vk
7jZEJU%08NYRiC_KYלn.Ǧ	`W㹑_B%BKr	.Q/Hw 5oEh9bec)Z45! r»*1-!!P){V25CszkW˾G;I]ԇz(<F$-<]_pIP8_w3~}?7cL >y&>
XA!DnMOPYɮ~ $*8X48"jX78 Am8.gW@V??/LGEm258ȭ($uނYC.ySvDeD8hChHZ`R>=-tsbZ*DWVܤ#0)uƮV Y*st# b͠N]$e4;, w*9y(}4|sV
 '_},<Vro|K `kV{8>	Pupret: `Uc%׹O
6.>s0Qŉ -V'XqHmIݕd]A7JU(\7P"B;G?:uO4 :z*!@nguy|܎Wa4rwGh]$|tx<:YYY+*qHP&⭜AС8t

BޏaʭT3&nÓ8Xm<H?̯huEW\>s玽4UlZ^va^$F
1=:ם+~T<rOw;F>;X։m]9~Յ[ʌl<$]qtӃqiP@Ok(!s]9T\F
a:HVVV	$;Mn1֫RCL,0&t\
4Ґ3TycZdŤQ<Eo1m?S2bC Wͳ"S~]>Ej)?C(6c揀8&3ܶ*A	NvΈDt
 UCz0Gr&i/?֬6UhӸ">}
|]oh?.b%>kvO"JXKֈMV#P@:7KpCZ*>}xzB|NEU1=Pr\[O*GQ񎼮W'.H|\9$`"
1<dUMCZQ&sAg'oJF
l`SZc?5	tS̐'!ΫSV_4M1r]̛I:jbh|>"ўCdeGOP))d?O҃Lxwr	ާަ.d-.cAMwFQC%H0[mro.m<!yDr{rIfSPe#u/8P/v|A򯒊5,QשV>- G"w҃q#Od|-4A820A[v F?G|[ZHFq8lj~?lkMbp>j֥4Ry]ޥǩ
Cr⇖l0 ud!ӈX@D<>H Xnj)nסC.>rݷiG_8/oVDtΖ95pWQ?dӱ)Σj@hF:p7\cz9ͯmY߻zT%[xB
?4]F%І;00DE1Keʒje @<G-t8yXQ-C{!A2|:Ɖ7ZiK؊h)bhWuhrRݦP@hV%K̀%CxҍǗ[{wO 9oN;]>_ g߉^'t6t_㈜ӫWGmU%*ҭnPoyך5LOlzpU~,<9N!j&Dgs^]uV O$WߪT/ρuKڒ"E!rݎE놨p`jb*ܘvvۖ?>H_
`+*X
c^q
 W7J7XAϥCSNmeͶ*-LzMJKDxA*LHI|?ɺ;&v
hD#!idt"(K>֮]5ylQ<Uǭ'[QlBp,&nT@xuZ_9DI8K L1GX?tu{u]yO|{?^35|>~KI$rC#䔝rx9h~sq5v~Wm7]nRDC%-,kFԩaK)v;R*'|BɎ$8b@`Oy-]'8	m!S)|o;IH9	eD9~PeZ8Yzptb鿃um":{0cMi̕o%uPv_ߤY57HR꣦tR\)̦AKz	*G:yaͧɴfIIw2cEP|'!N hYT>^ڄk3<S%$IP#m+9њst͏=Rtz:!1w ZЩ@psLԞlw!%CX-O
^XŐ!jA)_})Y&n,˹|R]~r'帧@z*r$~ܳ扁5k'2)&'y;
uwxITs#JSd#u[^nRwYvJ pߥQox.Wݸ;ADITl6ۧFir.=zlr!dn* !%9S:9Ǐ1kۓ p㾰es ok-G :Wgq-ZOv䇥s(=Hq>R&RIS	O9RYrnmUqAq5&^I'@R.Z~	4-+
xPlb	F+LTfKGoG;AOҺ+\u`4gB]n<3B@|*KO3`[>Dr
П^8.@.]BM8Ze4&ug_*+|{*ȬuҮU2ۦ@ >ݣ	sqd#`N|ʏ7U"#%=wF+IDWȚ
Q|q3`ҰxKݯ|,.͞^.{*oɦ|kŰ||4tu>	~Zr	Ιkl	ϿG*Q cռ:!M^ 4/6"K};6D"|spAq=]m6^\p^k߇]-~sq`*8KP/U/|KYRꚐIo,їP4
ǻ/]IT*"8}]SMPIk WU0&4YXҜhw*{q$86ؼà|0׃,ܐO	ܐ+I*N%8 ʲRz/]"O !P~{a벣(U*.z8c(@XƚV"Ȥ;JGrrwWN
PeޜyWqHYh.K}_^@(ECj=0+4u$쳜vphsPw%3\o+0
r*K|ge, 
s$=BTM2|yq&ɝIujת#0$'5+%1ysi#%[r>5t$G)?	3*n|{#ZO\4ˎ΄kV{IW}#;qEzs
<@f"ѦMY♻&r쬔ф<#H`Tx~)[5d%&cJu\RjQwt[KQğP5SzXpqIە]wɧcv4sP
Dtv߯dYEg0ggkL@KVBSoܟ;íOTO |r
OZ?M2LX"^};4pcX6dT{W:Ȗ\~=3:](#ߙoC͝iδˤuWnZP^f9sUFhT0}-+k,BAt4-TRs#p;E?ֱAΪsxsdjtdT>,U<{-
tWέ13u9lnuxJm$C~՞lwޤ/N(ߪb}sĵ?lDgbqIYL(aё4kyuq5즏7Ti5	%@~Ds'=B֎$jJg`;OWuAN~K*:TdS5aYwW:kJr];rX^Tz^V&@C|m%8RUV܋\]BU_?/ޱ8>Wpg	 <H&&BYL.*xg׭uUx!Ǧ0U	
z&/Bmo݌.d
J%n
FԚ.ha?d38ʞU&/)^@8%@d=.Wޒ݅iiT\|sTY<i;a	>  _se"ݹ#S1_r%TqFfQ8"84.R̿j㕻CAY&iq.	xm@*ʲp3G]|Zj4>3FN48_K#~}d\LE˟	GsI{a#?;( {׃ 1b~?:ۊ# sa
?tD=f~=-.a)߼2>ik*nT$"D
m1jPcձ<v<768_:+3B]&E&9t6
nJts:j_]W٥0d5c" y UH/Ms32nY(}ّV4Fb
ܞuY^SPb8$HY%_C,gݞ:+A4]VClh)TP<\SV=Ppq9jHo.,۪Ul8cWO_=np(~|Cj=]ЉB: lP`lw[mȵيCrySE`r6Mp 3T]+/zu"$Fi;\;fކ'h'5
&k"Oҽ5\R*"
KU%.xvkWqd%*25Wղ*BΗ~}an5/ԷtLiW&ʓ_
o5o#I|ӫFb%oY^jSWJk|=I1C@uqWC6]b"a\~A$|!~8nJuplBuvj=eZz59H\U)Dm-@?s{ǯH&Q扑cg4,\+ &@"{h*Vq&|3J_Vq1⪷#IV8xYrw9Kd?nh(̕MPt+\	tV?j '4jUQpSwi>7W`]|(RDVSm5UE%:*?]ȁ}z\XժvCY꼑R/,$zr~¹vDpqo7#zgtMo?^GGq.nJ*5[WZ^bPM	8PgcB̒yJv7ыrd#7(*2#ZWC!!5pd^DӉY)9 I#m'@6cv~ȱF]c}@8Mz({TNvmG &.Z,ȃMX4^ap75^5I6{#UvFV_\RYA%]s=O5.xJs߅-';joXf>< nowWU) _=mKX)n3O|^Cʪ(A$yshũ@-MZ(~_$jZgHp @U|<$'r>I@juIqLjZ>$0~it0 (m]X4(ɏ ӎn)'5@DDĄ;hCCCq$HT{*m~~I:́wߜ03O"Qۿ`D'wU}h8M=:ĝA&uXڛBސhu_q+:
ZuS}1ͣډ
?ԷB-$"x
04TU~X/vN&z@iSy~<yP#+y+ U}"7"]d+zqxfh#}9N,!·*6c3[ᾜ`,)Y[=[
EEz}2N@5]dؘFPě4Fv/
NUȥ	h,!L-%?f
}6\!Rt`p!
U8\UYE497l}ebYGTRX$"At#;w_9n=WR:W-ݸN:o]i
[onoW]-nVswT84vS~j>xΙ5.?prΞ՜&dOV6?S?ܑ\V k	RV*N WriI? \]óe(bPÉ8Bj+NNTz/CIWȻ=N0hLF%ޫ=8UJI[R"B ;ç 7gZ	$]T*׎M_I6R>V*׈>32]/82:pˈYЮ#JPl)[-?vBh3(qkS])%'QVC=Kx1ol|#F86AvΏ)lj|p^wUeS,%d[.X:$ZyB'˓Y˸OoKOuڛ7حz
$jCik;u[]"a̢4n(GS 2䏪(vq,]`Rq?ѫ(7Hp]s+`\оCM}@	8P\..xl_13^*Xqo={'Z Ѧg=nH-
ёp,d?M[9vSK6+W9^mCg'I^-cGEq-%=y?,*+pNk>NMTԙE70/aY8{%<G\@lOoeKIua.`G+|QUߗ#5X	GJXm|UpB~vuCX
Z-vWE5vPS&|D:rI
pKu`v PDpZ6nجIZk3UY&ET

C(GOaZ.{p hl˷<bѬ P
'rJ8f?Q䷌#ҤU&=,׎Ѽﬄ~u=W,TQ8.	|7n5S|RY=|0ҡ~1Dl=X/=$T׬t[Xۉjmv 	['Z\Kqѯ6'|Z#L8/
da<ĸ隴2y1վոGXG]a[c8KQ1-H}'
R孀WqkUMa)R='Q@^6_ϔ3A>Z'ssZ8c|VrTn@uC|Gm	,UZD^p>6x-HHlEzB|N ]ujGmi?ڭkKDH	vNdW4oROq`@u^k~͹jwIZ07՛ 4|?'Ăm[sm,
9*&j(9jCD y`bUO[=UJ [eIq=vMڨ	pR3H7h9){Ok?gqSO$M9r38V:xh>۵";,`}#||ȩ}*{@h4`vlqx<,ogBMB4	Nt eӧ^B߾)E8TMIr91|n5"ڮF3G(9cn|J:q8fgCHHz:{B,ċm})HwBRPBjo#yw*ꄏ`JAjI5 f8}n*U١oqvjZ@){M泥PZ_P=VsaeqSTgGhF5N"dÅeNeO?<mrM1Ӳɛse
m6}j@0[H!
tWO} bZK7?
uѫNȹdIz[guddQ.J=)Cr_ɹ,lD~^cDdkhU`ToRĦ8SsJa6;!.,1\t\l0,>9AdWWp>VV&Ř YO艆k֠$ؾΐ
Pk8ʉDf>:{ Iů}Z0gN	>.tXLwԦ%;m8|ON8p$=.qv'#A^ƏAoj4醝
l@TW=r[/3ϙVnxAv͢,?ӣygڊ~(Q/xֵݰ󂥠N:norN9NJ8#9m}_6+	E'6Kkt3ܫ6+g囋h9Dsʟ׆gM'q$}5zĝ{+'mwTҜ6"AU{|d֒9_S{)ܚws*;01e>`Q[q~Ķgav$mA
?sd1@|[UH
!8
^AϏO[8[|U}mreu߆\]2xH4i{،vMJ,kA
Nu:Λ8ʐH[PGBen~Lt-dN&5i]
ɝWEOBק
#Sڪ\UXj($Y]cy3rͦ?^_gqiJ~Y^a[z M^:Gе,
  r2ߞHEqxա{Ҕzjk?ShR 7<-B8,u=ryK Y<3F 7|Ձn.+e Sם@%n9> fgoį2ћCC礵쎥K#YyUܣgLCֽÀT8xǼ}Kt/Xiㄭi9$;װ%Ɵ*p@WThֺٮ>^Yk]X?ӑUOzf;'j&?*NQ9&^¨sYDѧn:[WBN=c-fK[PtpֲV h1=D'uܿ|*EPr=onh8IÏES >}V8?\ڄ~!|*7qw/YU?zO Qw}G8l[%
I}RNXiW[m;MPsM>'f \,J1`nrs'nq-;e[xb&= 0_:<,..R\uW9n
B_G"D@ͭOK߉DKRaZ7*[k\s2G?٤&ע._5G5"CoלĨ᛻Nʲڽt^KA"{zo9?f<Y{_.#"2e Y>:P6q6iuȿ9HRĳh߃W+.,Kvu	>݅hNg<jFlzix2K[6H``~-T!bVjW(hYo{OS,FNw0TkvMO}4ߒfڴ3ӫ8YE&.|+,=~SxIdylM(t+ֿjqUu^Zzab $;A48RUS6uv::[Xu!tYnBg$K7ܯj:y%=e>G<5V88<r ŉ@*i=|i'ѳ{I%	EUUL*KnN`<ZVVӱ^߾[_P2U_/EY]JA}C@^xkloRA^ӓuHJd@KB~/
nȪ߅3";',<.楂k%\	N34WƮyU! 4	Oݦ2vΐRBGFYq$oD&-!4zԳ&.]˹gCq6z R#H33ݎIԗv׫*uAĤ0n;3a
N&Aa[Q\ɒE8RBT=	I=9'+퐦$oo/'!.3'}AN_j,lMoh⏠߫gSoJ"ﯰ+SNrw&T?5o1%Z3"*&6[
җH"	$k)r]IgV-߶ݖ ksY+Q:׵MdOPn43r//;g$N.6aWRA/>6_vDIf5PKxsD5N?u#XtIl:e ȯf,+_PJGeV40Iguwq4rϱqguY;؏[e[SMIKC5y?5F+Wjo	1P-w5J)g
z6sVױ5h~N(ϑXCy5!鲗Zˆ6jy+G_g'?@|m	fSОʟǋ)6xFGGmRF{6c툅	ԩx"`v`oq-ϘBM6%089Xt`Z}Ye!b9]}*h$$y ؞edHǢ8mR82-9ڡ,-pNb@T:BVq)vm:\dlǳ|
ˇn;%n%<.:Fr6X),Л}!.4H@GJ\0_<Cy=qx5GAYl1:V}4`z<qE!)97
EBoTw>yla"~[Zr`V:y7aٯTm:oX"K/n8%6Ā}>9}r` /O=Oa3{i\a?I]a9$qfn/'o!v,{eg$S#TmR3aR5&r2O@3!7f}4cQNFK:0"WIk3sSZPpc8FB}5wfWPmBpcY Z/Ӏ/G>#F#Ցh_<9$f2Ľ`+#0gOC(~֣CGi}AHL]K3tx=6M To.o:H<Gdo-뚲CP%팤p-8
UI')Won!SQIh/?xȅ^|7&UZӜMGp74܁C#aRP*:]YdԴvk.lx#4;@:utn|,0>=
s79(7WyOn8Õ}_R2A]U^bnBT+2)ow-<lziwsTLia/{.6WJQz	͵pIx
k"fNg+iU: td8l^S\v7g[ssZlnǚG-oYWFg~9
Dy[s99&XfV<s]S$us>[̈́z\֪GJª趱
D|lKZǂ2SFWalV+\
RoXdHwbs+x
usi2H1ʪI>*RW2#	:uZGQ3`:pmh2I6iUj><|%[(«;g>~Q9V~Fn?"д`?O.UpJ =3rf$`ig咳r]UG0y/DwxTwe6c\|wQ8A楾+D=ֽySsN2_sX
hpQUYgUFi2o)q
]wt⭸n'TZ|JݎvHIX8S-Mj+xn;r5IK٠  !_׈F(8Qhѐ{KfPKif&kqk{g7N*<?nCS>!lWx]kOywsiN0\[O"ߕ-
	l\c9a[e>"	}'?	{kkϭ>xoj7)N<ⱇOtz瑚MPu6`eS>~Ԏ~%ښN.wkV	qe)fȘLP:ѭ_j3yL|%ΪυD% z=D3N?*DZ
EZ*jޮOMDu"%	fe]	|b1k =O|o%*\q,ҥہSgjU<<{x=8f3 U"98v2]S:5(r%}9:.=),0pJ#Ss3~nW>| ' aF<o0`F)\9X3~cm~LC8s﷼.%py8 )wCf
V~|g`>G V[LL9*"vG6>: 6sY{].>5#?J~KMLW2yAܷR.y.Γif
&D [Z.EAXnKO`
AE})BJpHtس)rJ5ʸДu|ȑLH8}p8a헃\e`l_mZ|DmLG.1[vR,ܡC6qqqoG;N=i80"C]\4Ax9]?)9l>ZW-]Blw/BI4 x|rfȞ nإrjOJ" CfAJ|cVG'Uݎj'nU=}+
nl9;hWM
Ni\A-X73y TK6!@>4⊹߬#tV$:	*+9#œ*%ꤍ	@fT d/Mg;ϮK, UH&(uuG|~|UW }~akLGz
[kJTJT rs(~Z\5T[u.B&uT+/*mpNWVOi[KvXSi9^MԴʹc} RBOʛ}TV$Z#GѦ;g@qu#O:v$Q
|TcH	8T֪dvAE1x4GmQwKAbɥ\~_kN Ցۭ# ^|*2ԍL]ʮ@RғǙm*q42#aN
[Aj^Ggw؅ǇԨAGiHa<q4VU,F>K㷪>&##~+r~sY4.;،@HQU49sm5o7E"ĴHZ?I\G(y$Ik^T9f	h#¯r 7ִa^V7
}|$ٞԹY67MtڂܠSw3η^-˽G[pŴJo8T>5CWRgN8˫XrkReAErIۊR]50^U$^f4D)A&Uz5_vo?ӝt שԀ]e)y)ǹ"¡v]B&hmx^4A9YZdo
Nge?8jSCE0g$백%k͑fl9
<ɰ}cz>V*o\@ݜq@'ߜE9حhC&/p4y$K*
ݓ<ؿ'*\	<	J%dz/!NLםf3^
1YݭVIpuڝ%2 )+ q8bm<Ȯt%7e6NۇSF"k3CBPL%^;W}vv s
@ٲ[6~aK9$2OMIQL2R{V{<1tqI\at'T{~
WO+u`|N^gZν?mr
+(%@*NIDԴ
>A(NDRE&<Aٜ\*M,VZ&0iI08RTC}l^^wfX{]ͭN粎}b. v&84`QЩByg;5׫v
*,|sSW9w8MʪNnh3ޚ⸏*R¬xݫ}W`/7˸0dwĕX՗ggp@ݎ#pߥBzpǭ37genooR4-
Yd9sf!v]NVwq.11|x۷Pj':r2Cc2)*aʁ @ˁp%c9|^TJkZyx%WyfnPpnk5I]p_؅ȿ+4<jUaI	/\G7v g(\d4mޢR˜3tP=߫uѭϳ1Z=|%Be  J /?Tp
&Q"KsbYl_vhkfo!2 u#sX_@<x0߻{9RBڨ؟z?'յ2$I=_.cr@͵YWtoRՄqK@ĽKUB&<o-[RY3|GBRS5Mh٠"\gy|q+?ZͺsɕS$~?MD_֏}pƖ*4lKnռx6EtwDQ'I)yjuT,p@oPs[$1vIv ѵ9̪zQҧCC
?,zo)cyp@	نG{xaHkdoqHB2C8P)/"ѧ9/,5E3Dե4E%n !t%8gxsI'r9/~TF(&jޝcSP޻PWvGbz8[(CweқֲΟjUǦaeέ+H~`;ckZǧUֆrcښjQups꼫cMrI~ <ZЯ2
JcUI[tVDRKK@X';"@]dey]tZA9Z- L<1oџA?|W4k[A[\ Q3q>RN
kL:rtnZ7r=+fZsـ܍WrE**OJǒ^Lm$;`@y9|()C􇃹:Gj]l?'TP/ͪOގ8:WPM%A}Ko꠽yen!DglT<XiD7yգp*P\?ͯð:?]#OqSwB	؟y?';Ӣ=Oa>
Y*+i%'9$sbJmwu_ciHS*"}8n5ٚ3ě$JUz@A>,~cMN5il
r*s<JxMHW	84qS /xBʺ566ˁѪFlN&I{dk[`ܰٲv <)ʇi4_Qw0|$-_lS&صXNqꫪ}Cv_v9_Š^6
- Oѭ)+j0ؚJWk]SF^< >-{r+ qz+fVqYeK} qeN^\<{
UtQz8ZMsnTqJ{oK+_W< u^vq!U?
ImeYx[xU1Zއa <0N@3D
_r={'Rao9rmY֘7
o:_x+	:GrG/kܥTYy)
׏βcΕJ-ClSE&'>G~DBZOվRW U&/Ndyw+a@G.&LsoSM3=:jX ymq]CfU t jS?@
"#pc*NV|g#p6sTtGemf8gh(
IV {l
ՆSF)}klv:\xw.&@?s G)CryV`5cWBV]Apl}bM"UxO9,
\I4]&WGf]NC3ۛԃ{!N4tn^	oi[9cclW=_Nq]SNOKoqyIjg}u?z~m pZbwiJjYHͨ_=aCٞgZVs<=t^mKzkIīeΞ{Ny\qSOUTUaTw9kUZqg(g\[Pdo gj{uKtr[
F,R8|*%?"!8pM̽rxAY<M)7]fz~ ]aP]aM3ĉP_K՛GO+9BQ1BҞG>UUIgn녠[pNI>(@<T S#OTpTy83VU㵨ˁ|p)x(#UZ{PYw, 2\V,+HF4"O%*Gҥ;~}Kŷ[]-F>y[v_0g	,õOoM`[G{jEAWVJrCDHY=EV1-T
gg
SҔlrUȵ"7'k&'yȹXNLtpwçz9Z9ݹ(:3R. OKg5Fn%tBSN
)+kQ,i; 6`$m_jEm<+@`3chG~rʴ4_$IHCvnu~Ɂ<.<)#YpOHrz-ST%"ouƏ:@khsҋ3f۸ppyWUFs+!ޏ.wV5ǩx@T\̗JВPWz;QF'-L	9D">`Br)(;4%Cs?IkW\yĨ r
W'kRlef+r<97A˦Z,xvu+?BV۞	3U\=pq"0ushR%$B]gHpYԄ<ˢ|evp^T^Sv嫶	'yTp(+|	T(w4GFΑ8D~e]a^zєT@x09v:߭Nx*:'oU@ҽ{D{%t[ns"7xٚ(#ul;ݹaZ!^>L`|ǆvykP`L!M
g|`Ȭ	8l>c	W}V!j/.X\ٓ[6Pi${IXҲ4K筰"C_]TZ,َۯ.;y40;<$YёwwnSW7!B#ExŇ(,n_×Vuu{歗>l?-0QgC_ē
ie&(nNpVҤ {(l;sbJ	&]jTT1njqER8Bp}Rq[
`vϓPWTŗp[fu=t"(X?NEJjhHgF+l/<uUzorI˴V؊jDgT>%a9,r̬&nAru1
&3`PL)(M
]O>OBM	R@[֦#ޮ.G}n'!gDΤ[h4"J
4AYX5ԎeEHw?5LawL' VvםaqwfZ<5gM;Jb-3@7=A2=r[+4]<oPZo>Iz`vN۵1r9j_Ӟ3VխXx^Q{ו[Cu{Р>ճ[̕军YڙT{(K].g=~SNcf4Pە[y(	|TS.LҡJG|]x9s-msIt/z:͠U'UQ\\n.Yf!|P=	@]pk Pqu)X{qpJ}:/l߰y10gg!ih9wFC-Ԑpٕ-%POud]Z\4~Y6x<9wii4#墀=)^즿?MYz|W6C5K3xErjpv4x
jOeP:2wňޙը׵4MT?u$~NզǼqX[fVSsU;?kxt^l#1]fD%+Ou/?>n^
C`V_R{(6I
֨eLފM)ի鎖GͿ6횀&cՃ-cz %c뎷):=HS
iͷܰKC8o{H)au-sld$|83OmP"i1tBo"T{Ւ6$(e5> ,wKcTPQ~tnt}^,VUf$jApM<Nۧ0iOEC`Kn
{W"6R
3TA%hkt~"$H ܭg<SHO6%mm	~+;|?RyGKQL:A:,3t/MS ll0<Ͽg
v%R>U"${nN@>t¿BpejV.m>E,9cc9 8`A?M$
;9,@@	f,QIUybubDOYܔ3\r v.68Gsus_Lvqt$4 sȘ̸ͪoYHA Vg7%Jl,foYRIVԂ(!56-vs<c}{%~N6ȔO
dW!'4=ěۨݯ,s.Nf9nFY$lnoTRUl"W~$pwZJBE'*ko\M	~Q4JLʽ*sxpv.3mǓ]^^l?FvKUEKϕBTe!J[5偓ǚٶ J1h]*, rBdD3Bke^ƱuM]dUHyuCyOps ~Mn.?/5a:"ӥ`Xگ@|'[bh/(C;N*0zJ )W鵉ڼm<ڭN뀝՗кQ,I޿·:wFOs!#C4K|觝̗o\o#xz|Q)JnPEe(ƽKz>OAv.S9 |;
qZ
pd$Rήr!?ȧf:l
NU4rP^+=@)qH5Ӧ!.'c' z:
ޓ^֧ʩ&HYsP&~ U>i ү&O%]E&Gh@X~hyYqIz}UAq 씴</zu
ϙy|1*ǀU\
 Frtl[.
Il(ts Z呖:W;?ٍLR͛ow4X&KvךKFq;W=xjvMGq9+Dz_c, ɖlI wp:u2~ʝ9#$;nԨUDmmdߚ:6
lǢcgeulM&' \?Qѭ}:nT Zx'm)X\8aw0OPZQ7T<sGg%2-UEz~@J.D+AR?gwxsp8~hVC	ҌD
ꟳE*15Vjewv+]3_ih/vڣIBYJoX OEiבxԵ
Q;)IzGJ."{M"mk@j4-VhV`1r0%jrʆSAӚvDrk6	l`j\pkoĲ9%Jix,"SN$w#6P^UjQ4^o
Vn'yU{Xq-|n$:20Ȼwrֹdu⎶rtZk64֑=wY~6358Nl͙"^.Zj4v[n~B2
ȗ
9%"fٝUQ֔;!!yGZ鈘y#9d 6/.@y:`w=xZ&qpJ590L!9p)UԷuZve)ʺwG}5	U7p"A	p~5>zޤ#=u)
)4HkpuV܏糢l5.CHcqw;↮Z8Mc?\*ƏCuHG6~J$?S<HU2U♂.8"ÒT֬N6[][R	QwC%XiYX7m׾ic-tJ_ʯm[ WAy&8-D;n]~[!{8;npjc0CrvZ\'ޅ0]}o9]DɭjӠf0 %V&);ҜULjfDj.0:>HLU9лZ ngF}i-n?vt	PлAp>a\u`jU.R;l1{G88Kī1%Ur᳻<f}VuY.]S*&}&s뢼T {D.cWu".<JM3QZbQp
6!W	w΀SlCF>Z'_Tłw:R'V]f4^8TUR8UQ(]	& ->\cUB\f<Dg}WP2]:\pfڹ=n|G鎪= Qz9y
7>gפAfz$VR۵VMH9n+M#}ǱᎲ0CoɊ\Fױ\Kkn1f9U:iv&7 g:ny4LGr.8x)3jpct58ʍu3nT58X(ջ+R:6>^}.?UUyRT2ºsJEq^*P2XPӥUNV:)߈cPAV8ٽ@dzE? 8m6LHlP
$mͩ|Z,m$)c~v#zlvrjdb%q*>#[+kv_Ps PNf0!MHBn!힐ܜZVA#"q 3՘fƲ"}g*NS* !'`\
#eo,'Yp D0$6'k*KeAK_!XW50b!p3wMI_&Qۓt#EՔt=Ar1%W>֪t˷ywnځE["3v/QsA~|$WT5>s}'<-yGgOmH@Q?\UP.;.:7+2m2_Aӓ`MAċMa|eD0mq=bX>Z"o\Oin	2옟cuiEvndګx AW]u5` ;9Ej?7sYxM)=ۂذLvwƿo>^6]G6|u[*녵
ų4YwHA	68 8Z2^!{kZC}iGc_ĕ }9xQ @b	^E( vbOQ?[XKgA8XVLvjw*p-v ОFT&"&ᐈ\9KBU
ُR+(t7k z
?q 	}KZ
i>'Bu&Jx/7jkE_0?+9[A\<-d$Oܓ_GG-ȾWVK *yTbY=jC/&
>=\kWTN}ԥ^-"·KϵmC=ޤn
]gT7C?>@悲ͯ>
Eާ;l׹mے<oY_m48Z4VU rm{#~ ʣgҹ%Oe!8Eǹ+oe*`RQ7W]=ϲic(M;BJN 8feאRYе8|4G|ڮR>-^(A
H_oEupyH-
a@ z
hWid8?Dpt`!W(ݻ^P$OuCɤCķ~d[25	8XLx?_rB%0tSˠ,}񞝟9ʯu UXmoLs%4ԫ
Gĭ_&Gn
wYg!i,H^\KĂq+ۯ*.	H;t(OQC]C;kg
\1e{hw8(ܴ˦}p6O,ltn	ZD
-P
ǨIb#ۑ*YZ(B}")Mbj7 \~4C(+G'$4^qjw;"fհw,(qu9;$yDɶ>իMETB80]2v:
Fn)ҝrƜ䂪ն#cxfAFNet̄o$ {jy+*!)%|,ˎ*Zd--QC( 
v&sGEBJq>)"^yKså⒤d.¸Ի>9/8/
uY4=Rf65\&?.`m"TЮEuPlY9:h6dn5Ed}@$
	f+`+T	Ꝣsuf{s!ቯMNb:eU&͜'wU2/YbCfOcrǱݚ3$6FӾgJj䦥|nH|0cD-u]yGE?#,KHd]t|KyI}pBp~%J9[(r3C	yI^: n-`۔8'D& Z,nCy@au/1}j}Pgs~ͭEb~O?$wr`)v{:I!o	E=b=I#H<;wyМ<* ֧tٮs[qh0
0'hZG.),>+[9/Ǜ'(sP#ZImlENḲ얙
 HƱ- ]A5k&LJiV3*=J\ݩ}+~Mv}FX5Fr;)Y[rMڣl󾜩p@I?tM}'GН2B<ﾼ0Ma;~q71AޖML^
-:7煠s1Z>ǯ.Dyl<cF/5
s+GTV zDwb86ߔ] #y۔]
H;嗠EF"caҮQBvRt^<dfA:rG{_{ID
~&{(*H>^kSe-ӭG͈ER|6A~_T2:Y(ޏN	:pV-B@P^o@XO u]5 #UG-4;vv
>BKuCcM%8aM2}t,Wlu
K	3:qZ ӗ9kMOUKn$vbz#Ph5<ZAq9:哮1:O!:`"7'	oTX_E<=`i!|6瑱Nc;K=3.^>~8
rWS(^NRo󩾡]%I=X_<
Z=Rw ^jIݳL ЃlR']*x$\^}iNryuǴa
h$h O
 0AVg@=<߅vxIW<:۶4StA `4p͛#l5U(!3aL`,($?ɳw
Ji:4P&_&2")(i`{8
qN_cvGCS]Y#
)؍xR*z.g8N<!G_UR'(ut{j	z%  #$ ^_@woWZn;NM'))VAܡ_#=	mB4˿2zAp<uj@+/-q^ PGoG<H<SjA$`oQW#]tU3(q#nvyڣL4<LJ_/u AUy_ʵ.$ )%}Nn9v"Zο՟~|
Z3vދ(eEC'4J=ESUQY U/4d1Xߙ! W[nC}9_7.L{82W}ۨB%p}|?Ajٍ\Dt|9è<߶sooj
'vrԗ>*8՚xjj?EDB|_#F h	U2̺cr ?rf6grPcl_ 6T@m?;5ewAs:\~?êSsbZz(ٟ޵*b-s?R˦z_cvk q}Wg@YVksD]vs$2'.C7x+5u+츺gJMCUͮW{7((}tGJR'q\ǿXJ# NWWG=T<w]m}(nDo`(ZMPv4u YKN{TQ^RK2*RxV	+o8Zu9eI,繓v|[,r'GmX MqSzޒ 'Ussy _7R6ҡkᎫTn+JOڔ(ѺgDن0fN Glx	[OSͱG*쬦h	xТJ~?ZwwcqFT{t8btS$/Iŝ3PB88_ uH$=v-]R9k;<}>V6b:!h?:~_#MA]-jxo 	:ijR.A|Οe-3.gu:ݝT#o*1ڊ]\5s:L 7Q4#q=-me=[6C !
v z\!*Lb~W'9M>xUt_odB9[[dhꭓwdGpat1ЏKr %ɡ3=x/񨮺p/<g%Mk?>C8jҩЯ̫p,Ћ~󄟤=]![ XUFzҰ	[
?E#ڟN Kà<
ɕB>rT[Tu}UzanKE,\}g=&Ց v`xWҟIܠ_OCnߗwՁvf46T_u^iID+@qy2؀ 6)(Zp'^]j"Аڭ0࿙Q-Cg#!\^PZ%Ñ״w+J٪?^@Rs:sa+c)9 n.u]ToPb:'wG]l<
}Tq(PJ~Uq2e{fLC#.}9|zQ)e'K 8M.ܙG
0vx	sb+]@&u-ڨrPgjRf@_)OMϫn8
IOGzrh3ttXGVurM&( -$TnaEǇ<8uJ2!ПU_@ 	B9
hQt
9K`g0V]>qr!'Ŵ5mʹ>0i7`,|8N8r`i܏#:ASջ $\V,o>kU.@6MBK-
~FszqRQ!dٚtltYG2?B\ bɽĖYTۅn$5)`i[i>SDfԏPa*6b+WuC|B-5{;Zkt*5hV-|IY9ζ?26jj(p6d$`;G&
Ny+~{P'V{u|[>wչaFj#zwkjSEBp1}#Y&J߄.R@Y|2"Lc Tni Pxc$V-ޞB^m=OA2g,6/6)\-prbDhKÑ!ݽbe[ $s=KHޠUx(D*ֈr3ՃKv'p
[VkΖ8-WɞD׬l<Ya#V+5.nO:Ƨʁ|RttM<QTW!\,@P)s~H* DmT{qdFps'x3G)8 ZL|KVYZȨ$nՏK8wVXrn;XxT>$1GoOkȴp̈}#ļAmWy<\]_DD\y֏zN%)/x^`A{>Sdo]|uҿW_T_Iy8
>IwVǣ)57D9sֱycͫEr7KΦЇ"j'GY泬:ɳo]I;jJTDlWxx㷏3\$0j:qiveQh.
NR.ec{E?ށ$Xt{w
Ig@$HŠǮAVa ~3|SGɟI~r>'({6+;,7سH
?
iWr[;mtjI}iΤQlQ
(#AUTW2{Ln1rR^mn%N;Y1,aH[u8sA>k1ֱWAՍB(m3e"({ͦ3&V*NvvQԨUAG4Zi.E
*> b(B~s0BY(rzbfQXy&@Zf insثhx8{>玀?miBս<2\D=(c˲-wN]Pn.hJPꏣh]uB?e&|ZXI`U>~󣳵1Avα9  xn%f!=K{
IGUx` .~	ZZGs55xN_=wYGÍ/KFGjitx"N:*ivAwVks#)ɫbĄl\T^|(x@jGťtImm& (\%m_w3y_y5T12qڸ)aYsiqpIxsn	2/T%
 9O	J%@睪pTB+=G]kq{lUb}lD9jG@PAaܖy@8%锪F	'Y̺UyXx{AJ/+S]0O"!H8Zu,I_)kHفa`G2cK*8O[p$QwJ7}SM06~NZ$UX<zW.ܯ۵Nn1soVJ:,gNTAԭ	͸|>EM>'J.9,|\߸*¬
	v.Rn5;$'p}ّ/U2LYE<sG,;%,!]Bl7(lN u,
}Q3V&
A=V?1&_jHI*MVzeI`DVjKgHo}$sML~Oo
DnKW/wnA& MVG#p5]W֩ح
b@Aeљ$ u5TPZ{dqrU<3x02v9W\.5,w'7S+P&<]Cn/.1xNvº5jH"mSpƢ;ϛ_=_-nDSPNyNkc%jZec[-_wgHzW 1kXE@G*Ϗ=
n3xюEʝ<9'q!<iNz xAnZaJW 
כVSMHrȼ?vEjAz[m ݲ,^Ֆ%MoXSZQJy;8.À7t0rS8TGxto<ژ: 4+$ˆ=jPT2go} s \'Ԁ7Ĥzn9th[GQ(iI➪
@*x<W2N4Z93 .yW9qK
L
jJ^gkXN@}*zM,
۽ڄABKP=If BBl.U	Fir]PqBKe>55gm DocPKޜA#_b$j)Fii&TR7Z=..>mO&%䀈-vX)N+$rF19&HU\5ԧC}_%̣WeSSCnI`t/J7?}WRk;pӴQiU"X>RQ7	B<FjwF OqrH@v網%9#\0m{i*BH>ϯ#Ys_	]zjnkx.CUL)9E
KmHp\0SKpA7ߠ|Dq\SkV=FCαn x}RUQ݌3=z"|z)J SQOgճSb+%h΃CJ%Wg@0!8t$M9S8yB uÃ9PHWuYR]Wϓ^z!VN
+MQH6zҰzMg>ޭJ$|*׾F
E+eN.£}x>
;%
q?M,	=U	]sRTA*b`ɂUJYxŃ"Bcݠүk,e`1oS/D֩V/!B}]UV[;\=YJn" k.wC8Kwq٦>$Gaפb\V cA+yxbܛ^ \Օ}<5՗]53Q4$jh)u/~H9x6U*LNdir.]:=.4 gWrqN@Zu:Ӷ%3~}:Ly%.[¨_MzCԼR[+cp
K#z;6@JarJ&ȝPgcֿs^ݐģ
8TN_#oDҢďGaz.ҷD~5
c\P#>_@[ gz0*l"ғ	*RPv ˊ$bkౠQ
bs
¼	OpN8,,El[Fo0ɮ5zg&J
i'V+x<j!pqln@*5'jo~a
>hDA2>(>nث]7IM.|:}7wY^@N&LPWpAdԷB'޾ɩ7-駵e.\?")RBuy'5t薺]=9^ >eY6$MʤoGSՓCIGM݀;Uo?|jiIdMSȱzw/}E:,g.gz[hIpX<
@fMMu279vPmr+Rh&2Ɵ=>uMzֹHZٱ35;RWb?vXmhJn/G{PHR}hJ:6|xp%htqG/|	@X90z NF0Q/?)źZ,0Uo-!g񴼭ng|G9\ X|5IaőoKXrjv*n2~`L({֫'o#cUs:9sm#2mshδ;.݋\
Σc-r,?{Ci
]--ڑ0MrԡG}=c+IѪjpPg3sҕ	QċT^]*"z.eιoE~KuEC 
HU6zcUaoLpVeO2PC5^<ɊLaG%M	RWʷTW͂!_O~wSvEf/G\Xui-:^}WRա弢S,[eeYV'^j,Ħ2WЁmn~pY[r1 \`J1--A/Iap@3
Zd $(&zpU^ FǑ)GGL~>Ra4@swhq8%>~ҜΆ\qx}|[ZN(?^T0 ӾEsn$jppqK,yل椹͍-)s*vկ9'stOys,vO:;lsdWT,_$CԾSp@908Y?9fZTRͰ5ZZPvݫUƭU 5Xk8I\LNv-?Gf$F]Y6
ʹsGبYE~pmp~3Am`~1@%fnDi_~Ӂa}D@1,۪F>?_XrnlSjk7p~,lGXw@j0n9D DIhۄ^b,QW:[ЪnmK
 q)"nGSF _nZ;kSӯsVF3~W뷦#N_:dQ%#Ѩ$J"A	c5/Hdcr8VlQP_J,QNC@μts-f3Dt٠by
|zG%b% _"HvXы{rw.{y5q^aw87-ݒ+dy?F`3s@Yw	&.[po
:ѿ.Hdd [}g]ҋγLyn)&6g MmE:Y)NɤMqnIl;6/grG%mk1m߿?g!MN";QxP,~p^/A8qJq_\*we8AYymˍ23>ƚ
0:Tef'g7d+pJlYZq3ع8SœWwT;;_
z0Ҕ\"'Pԧ>ű.	J=X
_2\WXaàGY{7+k;?eRD?-..#`3t}v(y[ǁ=d.\K(V+ fKdN5!62ѱΧؤЛ^%8Ǘq_YzOv4A)Ypq*$BSyO?7:))Q7y5t>8i	҅x	
 Y^>-
Ff})EXϏgkɄm:mq
L{ph##Q4si=]epNK:.Dg]>U; [S} xMQ2;c>o'6\1X2rqĢ.GIrO|3/!vyRVpp]oCEK6Xֶ4RzIkѭ9G(e>g Gcj~#)jIހ*N~^rnMᴾ_:SSϸy'A"9-}G}YN0`l*ǹ+GwW=OufVAS6ٮIMA"j-``z~ѩb#R{lKQ;*>d礃b ȋOi=RU4[MDy:gWƳ8ZÒ	u%E??PKLr	 5 PK  C:U            0   org/bouncycastle/pqc/crypto/sike/p751.propertiesˮnGrSlמ>v=d$>UT`?1׿_%6P*hs{2gfĈ12#"ӟλK??..T̅Bw.y\.n￻Kޥ7wqd.5r8w^\.w%R]1W+/OG6._[r\rPǸ6SǯV<n8}~b{pܪav?͐R:>ֈnCN|}mۙ=Bfyf~ݱ=7o秏Ǹ/s_n^I7|(ȟ#ft,fu?,~nmv;pNq'+}ZBj͍XC:ǻ{;xփ5=mqR({5S;1VgIYr|.íKٱ:>T)pYh7}1`J	;>S<]~[K͘^f9Aq۫bYPgwlT/ey6a|n|2#fZ͙%gO6:Z\T'V-ltcLײmb}6ĵff᭼7bV
VO;ϙ¶9G-,uȖu%3r1ӚjK/kgg\?̻|I0|-{QLC9SN)mf@^5Cu޺V5aZVW_x}֚d/1WtϸbcD*c'vVKmܜoZnARh5={`Ŵ\`b:p
/{ǼԔh!o֔yVcv {-wv1V]_˘5ଽ}Ąm^Z|-l[10XRnvd(]w򌕦+0y)_fYq' NqLhƇHCZu͸pf%&Dn `
59@&8nrӸF{urƟo- I1oh5n720s˵{=N_k̩q_ń*#_e2*pYzi+}-X~.d7{Oe$
`8	<\
nVCH8/Hxq߅
 pX-e6B@ygXYJ˹Jfgv+{0M{1
|ţMwIĸ
*H}xW0BK@qF| 	; ?,Gݾ )텱CX0Ѱrӹ-_?/3g$j#±9[+RZf'3;i0.~&NH1a9%̦3
Fo1Xg
	x(2ݵc\8ALc9Ux3N>n>}:?g<MHrG0 ԉvS$ .s@wu-8yIS(mE<p=??!t8Z#qFJ:C+p<Ko	/tF@0??ˏϯw"J-kH-65jwjϠ[wAh="ur.$ 1['lDJ/3 miB#2x!9P5,p3%yoH!E0b⧠E( wsq7dB|":)BQƝKdߘ _v~GDb6L"pGl2db3
OC~$	4{!`36lÍ6,%{	4
 !{LǠԗh_	r3ϳ$]">&pDu1(Q/Ѻ"
f
\OGfA?N5bP)74fҍdOxX`?o@ 8@iϗ]h&$m ɠ<<4w31pFZN߂ثmP^	s0-e⌻'7] GȈ 9n]%ĵL<.`8<1F6gDC gZ],_.Rib
qYbLp&/xn+Xy80zwWh؁΅ح'r>=Z!"ϧN@:)I#28jI\814dƟpUo4-.xy)c].Ρ
	(uaLH߲t,n-60#4k  mx<=R;ezbͩ|>e$kM>TgFy$FiA!:񷆉00
g׹_͘~
#GԮn:zf	M GjED\8}B),vAa*|\BtRJБi|b
(HNpBpNSn^Z@aCz.]ׂڏ?x]0CG!={:JK1Lx^-2ԗ`+W-Ch%!PMp<a]Th|o
Ժ/9trp&!^T.CgaseS"B`/C	@`DXv<ca_\5\"(%tCG
κd3qnx(xi|e(<Б`?s~`c2{]#
IO 
!Qq̏vz;\ݛ6ܹOzV;AQggXB$ 3z}`i9ԈcH)q;ʱCy͙
bX	TQks GJ/!mhՌ]r|Bp=|W0jo}$F7Cm*OV9p~\rGg+Ŗ:.r)X{MFF>Zr5<3ҝ
)ٽa:vZH;ǍTkI{=iV'$$_CefBiZ9Q:%J$.
k9@U9n	D1ip&AUsa|sXHR@vwJXJCoz̜K\1ڴ
@+_EK	B5eƺE
G 70hV>LԜQ=<|:Xs
zkk#	1qZ#W̫(nX햕F(FB =om5;曖Sv 6uSלb#6s}Hn):2HweZϾ/٭䵊
4	7q5Չq>*mVM	ܽZ-9 }?ʃ);sK7,??eVQ]0#Kp_#\>áx~1%hI~3
+jꮠwQeq$acR,7j0x 1){N6,|so???_EmDQ^K
DlN=3乛'F=F^쵄CY*7@XIt̛	ֆJtcLE%{qi/ݗm行R5W*;_1~}z
Js._jupacw/k_~?ݪT_?;ϿZ~S7W0 )sPQ1]MG[d1$Hp#>)(!\RxΗnguL8/+ɨ84LuEn=yt-쀔}|v'w܊r{ysYڍ`"s5Wl~?o,ʗ_8j~Wg?;(Z
ޚ]@R&[#O,`#xbß~߿
/ 5_~iן/s>~g~š!\_Ki?sퟲwWeXJsg_~%3Gߜ >? O??4УAh7݂N8<yۣ)1-4ǣ2c6Mp,fO;ج3YPU3bx;0yŬ\KxvZ^ܐBs6|`!C`k Gi(FYM}ҚJU鯑Gk-%W;K<[	V|3Y04Rw	==UR]}CbN>湕keψe(gn%`%C.mq=iNxY`K[̸1#l/wNxXrF!]e~~m[
Z::LU'QZ^(*)WJ%uBE^_ϋn,KYB^YNNPPF\$UsBC)jrkM\hZT[DD]}LCJfc{}!堥j L-2398%젽F<j*}T!Lp>^wy9_+!fW9G[6Nsqux:śDȂMRk(ǼTBt&kek| 0S	8%T
@⎿hIx2Aٮ
LtN-NX]o}(}K鋍!
@"`ݖH9U3ĸRt4xcHq |q/}g!_h%́@<%Wۘ>Fȫ*ߨQc0V !4)L[^e^-7@gC} @=Z
}
wӾ=LTp.A򩽮bJaV|0v:s6GsHL]8>P t|KHǨFs P5SCM4	`$UT'ѵYc9kǊoϒ7f}4g0,&i={ZϾwCVxv.dbΈ|N|0\A-,P}/2u-&*.!IMXVĊBt]sYVσψlns*iBk}.y{/|ƒ0v&b'8L'zJԚ=Ə/iW"Kʕ ?v,MZ2iui`|kp _״yWKuXϟx̳Z ~-
,
޼Dx_H"`
DXZP.#gElCT&&TFfx*@thqvm}_&~gM4DNng{hp"ZWΥ6 $#3լ>@48d+J/lJl)zidti
h4!5(oGd}2^rH#2F<!e	8io%Vј;揂}acՏ8ZfOeUo
Rs`ԇq1$V pM_6|`%?,)/"d|MNEJ݊D_U@X&bN=Q P/j*ch8Z`n\J!7@:`@ c[.uS[rW5{e#Rp4ǭ4xj|I>|3UQhD$ܴ*WIfnm\ Qs)[$tֿ{y/^d?,EkC\pڝ6fVD0'5P6
:CI+ :M5=TUj
Ϯ;<׾1to)4v1.p-68pR
"F]@elBV<HBU̔Zm%C
ݾfU?},L<v#zH:e#/˃;^,(r] re_ҬQPl%CtO+BBF/* е̥݅VY%~M5S,Ð	3m>2Ab7A/B>wkVVf(Զ
n@zj^O`QWn;Ϸ#gR"g.ހ3KGI{EbwFfd0Ddx/[=*Ii4%*K5^D#WU	d8CE`[gfvb7[Yťa$wC
*kę1
F؛s/E>"vEv=a_`Z۲Qh+dm;	KD&1`
V!
&clkgE׿B~z؃.Z kib@4_U.U2iSE0KRq;`7w]*Vḅ=J+Tc'ptR戟( Ci-g
;^ƑR14o-v%l\q׾\q]0vu'R֦WhW{VXܼ-YLV2"@ϳr{g}m\qս]qO;N]|d9jku;˦ucѡ3yXHr+Ar?*gࠌne
k^5z{
Fמ%Vŷ#PfT*fI4{#`	PT_
cSQ6zBSJ[[k_ϯqJt6N+qD=
LykQnU-<>IK\w}.V!,H@FQ;=9aWڑo.o/v1o\F&~+3N*LV/[`̼K2q
TR ]SA\UkpZ:
gN'|}?/]r^ho}pʣYR^MJ.+Ø0>r(A¥aQ	N)t{EТAnTQͫ^[?}ߑ~.|Ϥm5N-Un
$̊4aþdL倱F`]uG|MQr|~O~~ܗw.!M2KoBuz(Ď'
P}`b)U]RyʄUEd6wrdcyLZPXXaUte[J̓/ȧ28M!JEU)	Axc?1Qw-\p
n=8࢓ojL`P@Cnn*y.hf O5䈧-v&UN!oz4l^RX8ƈ|a|qz$1	^75W՞Qڪ
pQ<R41ˍ[aа.5&B{̖KR`[ع@;tCZ3eԴkh <r},O{qCڙfU1,"S$'ؕ-
.|R	/
7@z<E	7qnOR?+
_J́g[p¡DS] 
E[fV=w8XkJOeU"y	l~
x*ﵡ3Ģ:'<*&Ն jSF[	HXEOgAgTTjS]6+
!4 /tWﳄA^-X>n
!0rȴk[a"1YUTyx=0n<cd0s&W*\l;Lf7uD{e.=d}k	Ӑ}jǶ\a@{"_<~!K=*eIx/Ă/.bQr^x1u(zx>1R+>{kU.W]NW?Վ-RTy} ¬$-VyL.k۵$C ur`xۚTy77^QZv;+Yjb>Sp*OlpZYQ~+;A5@;ew972is<G=RY9cPqx):+(w=hTwP<[ɭ0nD󡂀d	jsEb1ߐrFq0+Vg$<RrFXBNaޏZHS'RnqY_ݵ]G%lh`1w2[u)ZhR	+DIuXs	a
˙8xN|R0!he8ŷ[Y;"s\`{W=_T#/y4<WSSBOHL nt%bGYYTTajm'`|j3۝[⸕9{*#T?"BRYq[d,c]@i<
Eԧ`)R5T<
cDvI}تuɃl旰J1[gp_ ũlQ z5ql5z%y>ץmI?}\u9N{_1pϧ`OmDpSOgTnyP㡸jHE*ӓnRmjeTcZ-*Ŷ1wFgSP-QW*Ĥ3A4ނbS56)^nPߌ-FU=A8A"R'߮FoR"W%SZkΙ+UZa%.Pki+oZJYI$ r~)<.cG}5W͑Lޢ~?M71ȳS^UOw@NZ(VG_klaZ3bk6Ou*zmEKx|?+
/J݋G'x0z	^@pgD,X2_v$KTM{-zTOHE7Cirge@gc_d!Gd`R֧Jŭg	yPC4V7u
@N[.hAd%&
\y'Y/jD)
<tjBk
'@&/ADc׫~3¼VȰqL܉A}i-PM"rӘPSU&KA r;Ϭw@T(=smE7dCWwK Qi]
Zp	FFUfm@A С+b{:3~9kkKhi9r3Wu;Tza39:|m5$3OAN`SU0HW1^S&0or5H2~a
FC#aQ]5zTS@/%

@_rUxmNW4'B`IWͰ2*ZQy3@"|!(݄/0mD)QL+lbJIͫ'罰ϒ@4<O67U{ >A{=(7ƈ68]qFQuj$d$#]z6R.Ek[Tk5W@VC9V<G13A %ZS?CTnu2h0R^9JGU
r%pwI> }~|jZZjsbN]IsnXY_5u,+:0;750#;'x$P&āj@ 2AJAp`>jjx(N⳼~ fr!څ BY)ZHdeڬQ
1bR̭.4mkξӕ8c*;`qPx'zdV-?ҕx6^0?=	jq7lB k_//8T[ J:&O%[|AM./d&zګҡ{,F_Kuxw4>fe-~o\q_^0-]g)nJR#݊5e77tDy}b1RXIk=i
r:vg<zBz+cvEe\Oǜƥ_:5
/dةi%&5ܑR1*@jK8	!}$>`AʜoW3Wr+E&j=뻀T]
`ʡ~M	9h0ԭkx
"#bg/~++|ַ+,Rh #ph?}V4I%06*4#f84Ud*> e6jjyNȣڗ+g_h
0ʳi7R=Qua,FLgZ_-!&GvUgi(ȈVA$0A&tSqDȊПͨ'2C@pK]'F[QmE2pC6ɋ8?ʆ-3/g@W=7:$r%8-퐩#Ll  
[轩E8s!ʭSnGCZͬͲcJVSWI^* &ċ>S:\o29Wj!Xб
T" %2;MEyK+U*ZX@:DU9uzAփ_?nV?zG:B
+n+ H!}EvƠ4Kv$txP;9m#"BQ~z~L6Qҏ1I~z^u|Ŵ1ъAϡ68^'\-ŗe
E)[ႊCa-?F
Q'.Ƚt܆VBptY!g[WV7p4 :q =WMۅsge+h*iYl}(EZEs>>:wP)k(xyu*NW&y9j-uBfL$4&t#bPջN5T:2ƕaǣ|ё!+T.x{7|sIxu~\/N !O(
&*{AEs7PzjF4T2|"6H A
=). <Q׬]NHd-`N]HqԴ Ri5k7mj	-ȽM(=ZMYq9ElE~yqyzoV{<L
&R	&٥ \/ J:ro63;D#XATߞn?uuI	)0;ikgGF$UTtZ;JWYn41ײ("25׎} ?w:b5opX
dI	ޢj;;nja?.x|!ORT*mXV1/4jYG/!/I-cNN趠RZ\CCF7YA2ZWO󒀤b}6ꍶTؼZe=IזYͻɪ
>K%XV{dPQ#)$#Ŕ/_ bd"_崊kn> 
wЩ>DuD|jkvݶF5]k=Mb#xJrM{lS7`Y&Vvd^|vBbsqʠqm&+d@Cd9vxN/ĲPԲUyi{Fl.1ܭc7.
eJ}]]=Q[F<=Oyi39D\5'G[a^@/$&t"oQbJGIP q.zv!Ց.>K2|2PfJ_LX/Dm8lPbGݍS S-T3uR\Sl	^CB*7$< cÂ KF75u Q35*{-b
;\C6zaSuCY^m+?94Մ2C5~۽T^BbGP%}
0뮢+Ƌ,Ufo<=iWxr5
?*ǲ-x נxAdU|5hA׽1k\T5ԪZW<>r÷'ejB U{׈J{\'_ N])=a6pW-w(cA@`*{-c*5r3*+UpPX WuC%0l&DQoHpg/tBj`4x'Ζ#*vsxzԑ*yE8Pp$\^q4@UX$xe}%XQjZ3qSD$|Z*(|:3]J6y8|dkC`H[;oo}~	$f$9&@`_5cZwtnnW,dQeXKJw-;7q*:ZN!9*@yE UT赭ua>)rNU\:ȁ2xz)iΆ fAwuΖH'p	;.+?=5p g8,&ꟜΥ
7
FO{	 Ol1yҺef.rnLmn#z@빝T}ZUP0{R\D%0\f31E
ݦ=9Q [bY5+38xcS§/
j(AJG$s3Z JJ Fy*|Odf\BGkD:hZTk|E$ҵCt2!muX)X"$BA"!`P>>7isҭVh$hXiΩs
_ZLٵ궘3:?q}y6^ |QUX:?r^	CUU됹!Qj34:^pJ.U۵ͣ\"݄WLݯmee Tf@!J<XoW_ l@uDO8`D(e*w:>uf5/+ҳMLD;msk2f=E(pV'SNIrM.k(`U`ҢCݵӹm6tDlKm?ו-2 URpU/	zPn 
f	1O'S.;xW*)/𘃄H=cxoDF
7(OD*(:#K|7rV{A`.PX2QFG1Cj;2pqJTU%oSϠ  ۜVcJo! 1 ͪ#LPujcIe$X|]-Ɲ~vLt;UԴu
NX&*Ў=,w{ΞR
c<-s 镔B=x8 'kFJp
W =CZˁ#*GZ`n-u<">vo7g;1,eoΑ{TpA]hZFe
͇:~.~oěuuc0.h";xkd0a:g$࿽R~EtX^r]|n~⾼ [L~~
ʈg=
a@ą^^hTVu.*(,]5*NQƨcw>͕]Ѷ_h_Y]})E6^M3dgysфՂb8p:k^O=H[[HUQȟ\W\qt]]ueQ c:0	h-+E!(ahDy(U;< $:ČUH sE?ܟ<z*|1wo?O-CG܎ZSᄶ "
8_exϒ0RҖJPĕ9J(
Y3A|)LU F+le"3]M~qiwVA~qy~g:ۏ9LSc冶aݢ}f|R}NoղiR5ޡv4t8Q_
Ϩz)A+:I9luvCkM 4kqTt:fh3[#_ҸT 	=uO]atb)
8V:h^Iԣ"N{٘"`+~Yeh͂f?{YnLs|']Ek r*Cٛq[#j)GԟUc1U,R	m%txK3kwj;7&~O:*ӆUW4 ){YGM9VCX~ sգmD#e)Ux3r**:UP`TFՒ"fqQ6Q|🏄.Ej%Od(u l]!!j7. XW/h
	<8!7TFdS;Y͟¦3 ;8HSSYG!T ւ"S?K	P\DSc`H[מL8"c QTLHL+:AGX c>S"T\,)8J9 \)M&(%&	
ldrX=	'uA2	D1X4SqgJU/LZjjh~VI?uqTAN6rjJ7LCj*{(c8PNl=VaJ(ԢŤ5mVC3ZJ6pCu)58|y$oRao)̣Tu~:pB3QSR=GDcUc?ts<RRQttա0([Ƀ3Kv7s^8JAkckR4#0Zf	7UE6GtŘlB7V֗55VMkOCygu*wFZi;kZm
N}"S^պ pנ(ܵ
 {Sݵ{Aݦyv0uuʏyv<}FH򪏂~2*cdTjjj\|FNy-[æVG.جWﵣH-`ʹՃm(/D ;lh[U^M$ N[k?A]U"G4
3P=T~ԇ0y13eΫD+  mct{F xNVYL[SƢfx:ik:kk"()(
HuRjX6O^u.n'r%-grPJ,MzmnniVi*'
q$K3ˠ!'iī)tWUuv@G:vN9 ҂j9מ;Sfm3ö@թhW]qը~}U3ўOtODicc^KEMPJXFTj?鼫MB槩SӊΕjc׳ R[1[!>v50"11eǔ^*K,ͣpotsLQ{ZrZj?
*[BǢ4ψY:ARk Q**F2{u-:X@3T_ A:Z'jY*ADQIZAzŋ
j\ehJOgז
Oj&B]a/0's\ENk_zRvkTE^I;ėzj%$AЎ3.Fe1 ROxfq#)stF*%>=ƴUqupQ-xW{1B]u_G:al5Dh
7RC<L<ll`AZ:}a_DFm4= $MwHΖ*Q(i4tk^y[Fgʓ.bDyP S>2:Rw'<ڽK*F	W8-:ء̐AWKZTdB@
4U=?WDGZTx.(XycVӚ6p1
T?lnŅVBTqFC`2`5&_ʍJc<Riodjo9#fyHk,P
m1g	?;%i:zN*u򫔴$߸Oh7ch݆HUꂶRp#(O)j墼F,Y	V3 :iU5?fw'Y-Ju2rHG<4`s	cZݯ_{1Gv[JV37=;MGK:,pi4.YMgVc.:y5cRm0H\eEFbM	0C> j`:[lmyQuΰݞ!`\ tr86`s#?ꚄELckJe"c5
m4T!?jB$qMťc^p2Jm*F>@<-HX)yYjԑ<Z7{r3zWWJXвg (pQ/e(8=yuP;s%uT:jǯc>EY9Wij5烴sW+$(&A%/$ʒsODǥtz ϐ=m,r(^2Ԧ
	]:V]/z3s=VjNk%d*JxClPQgO@*\PIwz	ju ̥ i(\cv3Cs	ZlI'uz$˄0	ٞ7[u|:4mHe:jhܥrf=0#e&-S(
>m psUR;<q#յ+QsiJכ10U]
RՇ2`V+8sӇP:xdQUW
I3ˠU<2D[8
%P"zʇ0zj-q(-:ɂAP8L.k_C=^\O#cT׮ؠ՛E+۩Y:oi$=bQCc!kCsjAoorGH;Su)*!nF0sOyT&ҧ%!Լ*Tͮ0jiN<^էr~Z%1Z:)!rq`J(SbTཕzaӂ:t9J9"^qHVR(
3\T&[Ygn>_J`/	^G4Z\t㻶vP>Ҧ`GL-uJ55!lvұ\4aUٱ/[jD_-$3Q6G)&:U.igQ9sz*"|aM|V6aVվiHGj\|uGJͧ^W+!hSńMi[2a{%UӃS9ʫ	=xe1Bx2`KNTq̭wC*/	VvRg`NXbYŀDl,*%H
jSlS"XQ+uXnڼVeW]tU0\
=̑IRYj/77|2L
DFX	=Aju5P)4Qnud:x45҂'!z`LAZtKʉC\h̕@ghqjMmJS"t6OVʪNΩL䫌o8VZ~Ik\]OPܥ?eL
E;nr#JņaM`=+ylɤBe\HR0aekkÎ	P)1nF+F9^5W!$UՐgi؂gԏQH}i|2`mD1OQIjsu|Z#X}kR
H4e	Mu1oݯy~Ov:;BݫxolhaW:@nE82*^XUz	
b@VD"@m6t%nnDbũye8q#~~ӯIG+9ڝiKտ_n~h#oӶ)JjԡTÎ$бi'`iN2'59 bX*_Ak0ztdV5I
uWTB60%?~W5 ڂz#k}t:NQ.lup֐i5p}m+VI`A>@TCݍQHᮕfp--#31uc:zFZ{|C$vHƏҒjjT}PavQ92ZnP]
n^2QWoԆGfo2xnIFu~
 $,UN"M:ڭVi-wo݅@.mBv#x+F.s̲l?r=W{{4B&iR:2Hb&rv8^Zʫe];t
edITe:Lج7W"6ƣdh5|jA:!r>%,j!e-	#:qwF]m.Gi0	uνC.<E=@U2|d>,gat!)ԍ9!=:#X8(i$2 ܨŢstՀ5ԁ6v:.@ojoOBFa)0ydr:efҜ_TEJTl/T0 _U	W^V~IH"^'Mvp_Ij	
79Zn GMY<deWAHLuc\| :'+?Ci@J*;[_O#ZrKݹ~-U1blf'
)WSNd~#O0P GI͇PGէ;>]&m7Wu~G]m8uiVᦥ |u(9Ah2N,m3=r9+ք=CT ִ^ZU.uk(˫2,W᪨U'1j6K퀅[kc@y@jt+w;^Fץ
I150EݫţWh1K.(`1;LN]$!:y6p=u6:{ 9@ˣMAb[)ڸ6k;ȒCxKF?a}S05Ta&'d'G?WDO)O,괼Q^J>Қ!ΘV2C&H79)C)̇<kSY|^MĨ ^~>\"յvieGoXPNUAA;ԌZq[>ڄe=C]؜Rs-DT{D>^kZ+Rφ3Ы义8Ft\(ێ+_L,C/W66Ajpu%	w0)6@g5Y]*9u&st`ds JNP'Fg]TvH-RC6& ܗב4Sh۳}V*|L!A%}A*Tz۫hjlzzQhtUy|f+'-_4E1fC}w1#ڑVUXjPl%kͦ]6Zmuu2աՙm5Y9ZM<#A\SVU[2=V9XWh ߵ
e E21h:/\8T@Vp:xiPbHYnƦC>u#,9*gV'Syы`YE+CN|^a:L˯V
-j{5akH)oub;da|jHcKxi
:L'V+W1(?>xZU:Cp«` ©a<SU5quT `pŞE:Fɸ}C4gubnޔdQ|9IhYO~P 
}?
==NB	ͥtɦ1ד61&&+QmJmZٴg+-̠1r-AP;^$|Y$ʛ!k0_5mgQsUR1LI얎Sի?W"DI[@eQs
k ӱԽ)/;/9KA>NR~;U[CtU͢L!j|]꒭5t^9[H*2/Q_⬂O;$D{X< erL64-IPZ+Tu+^ͪ^ҋ75U@7jYH$VZ	fRA 1bOxVI\y:q$^b"%)߃[2#H@Ut,c<~vBwS֮[i2{VMЬY{v3
^FFBUw򡹹ҟ{gHGN-C&<+Rlc"q?0FGr[acqV2@dRZ'pǬD4#Ք,Q3sPK}r菭Rim )A^s|6\eRqΩDj*o~.q~I'W%͆u5Klp1,\J[o*(刭: ٜf'*A	U/dǠGV,TvbjYmNN;btx͠Rpmtn$ c(V~bT˦_RrJ'* >DWrGCPf2v_8|K.M'M-	{Z0R1Fh;;C1+mt
|z v'.R]*/IWV\_/{/Hdu@sk~]!<4:0cJIK>$K>`[xpgV^GGs"qQ/~BQ:pO~>
rBtB沬NgaRhݟandiK{
E縿 lȫ튔.YQ1+}GT_(*ěޠnyBR٪5Բ-F'HS1kۮ.,>cRG(A5FY"i)1$]{vU2lkne
%?r8ږ;xY_z<¸眯Ԩ]B:ډF!Z\nvX|xLES ̔
ν4H[m=jR0?GWĥ՚Jv%0pϏ#
OY➮rsR_DC}]9}q
,7I vOP|$#Ҽ!Կʫ#BÛx/9CJ.<'-a[154)+چ"uP͛{$vp.PD_Bk gu:SrVCdx$}"l%ZPSO>=O
H')$9r)n_g'uYʴaTujncOi&nh#6vԺ+rʅ>Cٕ(A"+v"ӁIrkXOxG<7׷~o~]L.!0Rݶ|$(fWt1bjO2v/nJ7Ȁ<uE<&Dr$-Q|WfUS7/!*|[WIG/yDQ~d؁D>I:UD2UwY=(ZL3Usi8sCsRh/ 6iS9U֤Ġ&SsrCwwَxbпn#w(݀!9|z=RF!l=پ6ycԯQKV]jK[FT۫^n_N^P*tN<k#Jgj1Ssydx- ;z〼mhބ@ E-Jf)	]_C[ sJy@..-vRSP>K9U*~u:n1#5X@sM>~g$ /ͳK({/uAcT(cݝkJQ˄$ W92A|tWL23--9ҟM,:iRkavW`C]yn@kU3}I%m-I8bHT䚘>"C66
#5/jtӾgM"G}L)[orr)&\T >q?2Ps_I}Mjpr.&?;O{[38KENŝ>8G\h<ڳhO4! ΢ᯢJ9Ryg0T!/Vfp
t'S#͆*(V՞8bc!H
T\{VB.Rtj^X.1U}
jM!'rL!<7;[-(I탔R`p-I{<	aMJ67trO޻H_*8DyU
y}}Ce>un׻T重D
d1<:]w鋨	y{4e[iy&8氀$JT2yrf%MW> д>? tIctf 5(_\"1+ouõ s/=romYIN"/C~5))5Ȁz+,3w*JClKl=kn0ou2l/9I HWq`Ifa:\j9]5Ǚ-$xޕ+|J "Jg5dIXʿ~b3($xdgPMw'cܵd9kI۩Q ~\"9{vMk:/%<YoeZB$2N~Z*4"Y|OMׅґ:nŹm	5C
7Ўs
U dع(J傰+c	ԛ+yE_k+,٤­	ixgP=e2ӼdqC$""f|gTғ_lGĆOm<(3vԴdQ29|r$"*s[c~g'([w͟gh>-u?x%PQsdp]ꆎ5/S(|[;ǍN˗٨%/}OO;@(Lri?Y߭AAFttXZjY/tmJs94Q	c8Ttoj
!pskH}^>Jy4Vl3Pw%GD|3f·?VZ^5*:NN$UI7#<VSwGؕZ+g$QGC_쐈+T	t؇ܾVvd^5Гe}$ԓm\ ,qeIdQ 涏7p˦pQv)z
>s1pjL:ͽ-PV+I720g!Kyȷϕdh 8!M)3VU\]Ʋ?}\}Q%O73q-IEy\6Og4L~ƲFA[X%7<5֫0A&]4\-ծ\R/򖐩v ج^Y-&﫭`5Ppe+KKGTa.Jv($RB!Ph
Ģ1]]~%}
GmdIz8ݒRݍ"M'CTn^dMuÝ{78h79iLӨ:R,II,ek/
 )fJ8a,z3(%Z.PN˚V	(ڛR4+>˹G7"	nhf >R]|ᔫ%itTFA,?<F;v5x5݊+jq2\TQ]Q!FFeU	v '۷5	砦\n*3
jɥ
%0llg.6
uyJsf0QD\sKQI3KAg&)nbrv3]
(E#n*y8<'Ǉ}{C(Hn:r&v0xի:oGC̓S4wӎ
~r}%^cK3ǁȧp\C[A'/Iv*ʥkiYOqKfj]}OT1=-}%qځЯ'+3KjONGT)zx^RclU>nTS_~P|G=N8o@Z*-4%.VU@M
RJ$fR=Ą<* 46HJ`Idjjt5rVRQ1{1v(ߟb(WxTpe  !jpݩMII#T\JV$D%+⇈Ջ{.	p{,ӇNeB1-F:bsc10 07pual
oG׾t͊gգƮuKѾpǚh0(Xm)Dۺ7Q:mU!.9HW摐I"܏">uG;)LXY
#%"PrgWT-Ϥ5'|"nn1k(q+3y;cO*'UO(ZSC6)T2Ի;?O J6e!5R\uZIޯW8C{YmSa@3τ_j_S`=oK
жBL5q{ Bf#Cju^ڶ8m݊2)C-_I6ālD2*`B\	z̅,R770.*j&Oa'39upCԏ-^B#<M^%@l2\͒֗"OMt1a#rT9BaWI<TMS7Aaqa3/~^՝9I8{ӭT56gn( d)~E7OH0xn,r)GW#-(g)3KRDՈ+1R;3>Q"͊kC;XTtoGYnM RK0"`êZ|xS_Qթn(@ 6㖴Z52?/"
U>&$n+D۪ +Sy$_	u0m2|MXX=h7>B;wˈA
]10삕sveS	)QVFMg:IӃ^)=2O!Y2Eٺ+rgTВ^{y[0/Aiv!g5)<U
c*i8l鐀?U.7I?RȨJ&ry#RGՈݣbDΧxpREUbj?9@vǬs$?iZ+~VθL*lcK=7\;cYߓ=9%)(,ӑ 迏UЎ꺄l|;7Ԅ~B
z^RN|<N$!KXAb^ÿSBRӬ4| P<,\hU*J$K +EEH3I IvkZKZ\\9E
Q&P]A>P_{(7G*S5[h~aZ 8*
ipAώ`"~dk5	X##8(;[xv
5(g0af~˅Ъ#7\sSƍݐ $N^wGVZnqSWp]wv)9@/gPeO߷ m%M!x,Nǎ}svDN}_T-1"Oo7Ώ8<\ധ(P1N<U!3nSIȧ%Dqe!t]b:ൔ6<1Rgv6P`DCnT<*ুYp_iXz|IS&P)1cy/mW[
G</ْo~& \I?jJ=~Wn$ gvndD%;֯δv(%Lq{O<ԕG_Ė<0\5OG]$^)TL	
4sK6-ֿqMy73,6_SBK_8 &Tǖ|q+)DwyvvOR՘(6
N$peQd9,wP<X+罔6xiP88΂
[#`DrWSE@Z>ߏ6gC?1_yUSH}/CNu^dm: ֏p88.hہ̎|љjpb^H~RhMNLjql%7XeSX"_ta:%؊ +cKE~x?,k<IDRfSTc󏖶y}g-_ȷti'	yknIKKz$@xS`A;̖I"-7*Z$qS(6u(K
mNMYBo*c+s}H7\[d	 $go^aO5t#%T$\x+OU5x1%WSd*Raf)x
^ΟX1[DW%wu. 'x9arv7M6.
&^ɜq/u^ETpSꃦp8/[XW·+Ԅ;_t=ly"jϯ?u uޒ-Kq[*U"A(qT}yn vuE5Q@KWx
Ȩ!Mܲ2?lj6+K^~]Z<W
S*Nw$DWt>+::V$ǪjGKi א&hS	\۪$8~5
/U[.BJ  Ģ,w1	u{LMD?tWξ(WM)~3$9um>ĥ`x0 }	=\q{TKݝu}<chjrydS3s`4^5GVu55%A}F8PE#JgeK7.[7NmI绁fR|np= Bq\2&I"`Oһm_VuD%L
Dȑ^se;?a54Qnoi!@R$tkm
:,u!Сlu)KF"|[b[5WE.o~6"$]jgu|`lׯ[h	K6DQv}6#`rw>2ss'=fkyANdA(-[E=U(n^ H^אuU}2A>/RZg4YB;|;:HμSvYf_9kU_'^汏ӇNtܧ_:j%NIi"" 6Z[fK:#irﴨ\#я
 VS׭#%ʸS~
vޯ#MR{oP&$p^׀R}
9E|~)qZiPwRTw?ubL,4\F	v1LS"ݠr,dUXWE᛬D}Oa
0SHh
P^wT3>]I+Ge[8:TZw:7:2|9(q@zZ].
J=InPz)Y/yv{԰i/(":(ڀ;"נ
(
d>(1D" ōg@$1,pI2qcMJWyBc"?A}1_~{C.!#]%BU̧@K')Yy
w*jr6O֗]oIZXxB¦G]$̑ʢJf
Lf欔-Y(߶2UoU%1$+۩@(p6cɷфZhRuK$@4Qw.A`^*h:!e
_Z_LjD&م"q;{oBGjgֆ`CeyZkLxVVm 8~q2-t&nv0(O|I <%<4#deW5&'uA1$/оGq5UADUeOS\wMrVD.z*sB\Dr8:J|&oL>CEߡC"ӗS'^iTro?9W<BǬǦ[==Ȱy?Qu̳r~e[tNTr<15\nN%ݮzd#P$-Ue*rԛ~9O(ND[^	Z\`<	eq8#\@8(^KTXNiWq W\rLJ?ĭBYd,ĵt)4\L
0?&@a_"Re^-뇓'R`C5U6í
B_GC=DBM}'uߝ]U
 f	`xM?*._xQ]49\bQ{YGc&{ܴc孥{,oN-.-nU7MMѤH$~Rklm^~_9jvukdݠ때g-Wcwg	
`wt-CφHmZ|r	7=,`{k~]<+NHvU$7pIΤM!uX}T〼"U%f~uV	DW8N N֟ż=U"N$v'!)	W( rs_^@
'(. h+&ECzߊ[R8"vpeCKPI8[3)'=nG<rc\\1NST98dmˮkW]j*~VZTK6?bdt	I6It-5+&ɕd~|l%_>^3AڅsjI;͐M[ KķҖRsʷun>qhZ/IݞfjQQ]21^. =5uc{	^wqIQ%4yRkjȗҙj82FĻm7&yh
LWϋŶ9w=R;T>?]e2Ⱥ5%?|#=Q07-s
(K@\|O_j *ӮTجZ)a>ԕ#Qnt\!?=p&G%ǥb`Ԟ3N/C0ݣήe@{rƚ~҆䙧]VS+r[_q>ub
ؙmwP DQǞn }ц.5@UgG3$sEA$?&/z-@BU HsjS84ׇsӳ,
g,4:V9YE
N`shhEc
+l*U-KA($a	 [^9qa_46@QPw޾&J1X;iV5AW'ġ잯3%{[$'kȐ'0q}8PjS6Qv^BD۔ojbI㸥.M	#Q*ȑ++f.z䜉Aٛ7|dv}ks=Э]&?iALК&3߮V-Q]&0r9
&|Bۗ!)T߁E뷃%/:8 asT]]C@*ѩn+jBfĵ3L۞k|l}fV/Mg~
W(zbsV/xWj˗re#ߧF&fp.T.-vPb]_9>[)S%UǑZ=Nm:hK/@@R[&.8tGJ!PkMQ39a=?m}pWni7ܼ\yInBջ/m=u&&?MmLCq䞎}[I2[yBJDېSGBQ7"Or0L&NM@je鉘<	"|R fOK+UnKDqSmg,4ߥL2r
\әmZs8'/F6P*5JYbڥZaYpT+rG粂=iVIR [#wpPvW1]e`9uv)~}W>:IikBշǭ=.Yy?T81r9GSP;)\I*L֠Z'USxݪ'<奈_6e[] q0zG=nǆfݤH#=j694[gh[Z)o<Na?=Q=9NgxӔ*VBs||4>%Rl֙~;MZZH_`2meI{\S2{
u5T~+%WՀglJ</Dbl~8|ܸP61;9C|'stO*? NKNxGu@Lr9T͆s$C##Kk,cg5F%dq\F@
1ʫTmƿMX.gݘ	ro!8&"KEr,/%GK*I
YhKH;ڴTb36^#tɉ@d>o:Fe_2?!~<>bL?R#0Ar^<ϗG#5=I?P.pa_D4dT1dS|Yg"Oe4R% OU2XJ	e"sCչy5.+ocFQH*&ZAr<7
w굊`G\(up!5}x| ЅE->ūl;`8PaZ ڴ4Ttg3(iTA%	Xm~sH}BEu!q_El(~ qqQSI8T{0U_ Xg5ɫԍA˩+0*+o&N>rYsO;1ΐ&@~gfuuJA ;\1mZW\S9eGKǵ*~no*9 <юQH$	9c1V^ڑގ9|=e/|jq72бOŤ񭩸<nIB
@J!}hۧMKnrJBj\|nK?^b4fw+k{I9Co+فo0Y_H.ߨ)nM)>8ymR:©MCiVo)3T Lva׽9
q`H{4 աzln)V0.qfA~j ;[롕xTww(K#L?c44@ ;y<c'AI}F^|s*4FP1lZeAb)d'0n৻Z΄wozwfX:m&^bw*aA&FMTwiV2׀r
 !y(	"!
8YvTwy\̮p]	(`δRMHQE(ǀMiSr[3Gc`2gJ&O|FW#s03?S{k.ͺ@vQwM*OyG_:D%qzJSSߛ<py<(jR1rb~UES
Hj^ɔ R}$GImkPiiqMT؟T̿b'pG3Uݥ-ߴt -a.
in%ׁ`	~}7#κ;n)U#?驕4ʏng
5s_p	 [R#&s,)Qj5Q8}hSQ - 306Qt2Wu	ť3*;-8SA︗MڽͥuX3pϣv%ŕf]0?@hDbv~d|)cYGAR%.	$eUBV^![vO{JW^jݖ~Za#4t"w<iL׏.9#m*a$N&IYuP;&nˉ?)V}.bp൘HkVEb:׃{GLԋX5m&G.n"h!O"\F@^i.t<SWʳ$_e32O@qP(G!SL.ݏF"kQrhX rn_O JB_VLCWҊMFq=zFXxd!=ԥirIT~~aՙ|,^*GȸNݢTq	"ujms|+KA'\27&<}h:ޕ5 P{9c#ixH&$(aK<8';L{*ZIuZ4IbS@@x
%5\Tޅ*'H!$qLYAZ$.iY/+MDzPʑ4=@i
/޳Hha^'p.5m]TB	KH*J]$<IkөXJ>9I®kQƘWկ ˱8ڸuU~-u=S?Lԧ|U~j^;2>`2xE_y좧=/1sʵ(ǸK&/vl	's?&emL`T@kpqͼzP.֞pA҉
S7:]z9\kZ3$.^8%=dkXT03
O6ڃȷt)f-!0/
#Q ,ңGcvـDkҠ@yaB'[eaw:"KDHeM ײ1Im@FSyt{7ae\Dm-Wp,̃#[a~D=БN_".*ٴ ,`;6e$sPp
`3eck /<{){En{,
WUp9MK<}e%oļP޻ 2^J2nɟ͍Ab1=	E ߆ޝڶٝW*]dE/I
\_QQ\k~'@;2'ei1yvt(q)evzeı$ƫT»
l=ҏΏQְ4	%/]I=cpmD]\QM]%us/ؽ<<Bm9_bb`UV/AXN4l?GiGa%clF'U7F.Ā+<^
pֹt=c93% O0󖻮V=rxh_8F
-G6|	|ߒ)"-FewcHQ.!kUJW<Ⱦ*B\b_}:;Y2hDF2GmVU.(]uwQdu'L7[%L)R>ur٬;ve$si䑎XEijĒ	+=^N`TǰEuCWau9/om'7=X'OE4q~'C'Q	ERPeǤH
}w,f;E<<c[L6L/lHBRcZ&:F&ե9
Q\k(U_NA\Ѧc2A#
:
,@ZU;QvpkyM@W |J4	]97q95kQ:FN?_Q tev.
tXS
:RMExħtMNf!Y_KEpo.{vmKwN09/gD˧ͳCNulI m"0L_#oMl(LDJOD@%8z Fw=<hH6[Hq^r\U#(4:&~ZK auW!VۋW8,)_)yxkw|(Vsb%XsZP_ܚp͟mydQCh٭`[ݽ)ݾi!Z}cGJ 9W)/e	WY
v${0?eatjJU47 (机Wij?h	ֶ\O|p{Xp-ɔn;-VDz	I`Ckm1HMsw'KsVQ#,	ut]	?
W
;{&i5e$ZwVUWL_n'Lԭx8[0Y%q#bR%mwP
qdR=ȕ g JV[6''ay
Me耉D:]|q[P+yޜ|_tx 5%AC<qyr}echcP΍!QQ ql-DGE]~'C%Wu	 Om{qm:|ۂ~od0 ?G5,ǧ[IY1'VI0L_,ɷ+Y&m}נ~׏5?UY%yjmaGGWp?C*zv*G也= k$kGM]@Хe\R"eDʡf4RbOkSw{`pL32ݠIw_ty7)$@6J޹L?-pժNL;htug$=LW;@y(bT4/Aᤜ`pLЬ4>|uʀ5 s[&-wmʋc@Ptv%~_`3W$K]6;jdxr!U	Y":Mj>*G'G(\ٝ	rc5Kf8Ovŧ޻P{'0}aK6Z×zWY[&Mxz
Vj-vz
~
-_
aݮ3U\Oo#!=?ԉZBU)Lo>rm';*vN?_h>	Qq#oC*~vt2
]ZMrI:!ƿ+]	L>_܏VFwuߣ K=tWx-ުb2 _2sC[l#) [8r?  dv	 =R6Tq)EY7/i`(zROm5(1瓘BtЪ*KJ
"URhKq5jI]P7_ Lz7C]8q9؉tv ?5K-]>ӯDN렜jmYR\+Zj緂/9]EPIv[}M`H:tLDIvk{T[w+ǔ2IgluT$OUn$=%[Ewk	.{ˀVED@?-{-Ց+*
,g[ݻr,QQKEKiH$JGVz0.)BeNYɺ%K@dRuEs~Wwn9)?;C|ޗٞ'V'
5	`5VqT;hT'$>]JmD?%8*NmI''VFwi%{1/
 j>P8/Pq)xYͬxƋQvg*k"$Ҿ4Ͻ%	P|ţklMV(En|[zK|,ߧk#΍-IqnhtK/ck#gBZnq%;pUYG_g-c,*eY딻C?^tZG H9XD5M
ڋFIFS* Uq:|:jӤ4S|z%t<~yJ`DLa+|KE~r?UNo>V 5Cu
@gPHvM-
KǻP;$SC6qa~'idr._[/.&FW8HmpnIM {Í;K/dMj?n(&^8.s
RQ=Cgؗ&ߑub7cq".JGJUn77V`L续 ys5VlBq	c	d{Reik_);mAATTŧ0v7SU=P)lǼj@}N޸5JD״"UXQ,aFFY;+KڿK|CT;ɼzOP㣿C( 'Afc%13VM߈<B>x:V#m<ۃVJi1]W+?Ҍ2粶-+?0y6ۑ1yLgh
<-|20#D֝EEI-N*g[Ĕݶh\$ns
yw319җpl.Q5@&N B_`rQq&"6_3(Ws2THNҦaYJ
YaT>Ds.Eg pfDG<A)ۿB?TI#Z)9B39ul$Sދb%99iBm0Oo~tGZQS"B%_ȭ!"֚lɞ{)tTd P楟(xMeA0?vAM>w[)L`^bv7/:bY>$¿*7<{*f3SP
#q@^w3x
 jQ9`yMϮʙx}s&AJŭf?(*կ߬İ]
T󂃸9v ;% 7}M땆Rn%P[R'i!7;Qp躒7[H
nYOoj,[X6L& hԼxYMbDFVvwR?.`\,4zSI)8 ~$av^1(J9G~k]>{M).&($D5s>O>}Lv%˳6x7/
:v/^#jEb@~Pa}q2X$΁^nI'a@ poJQ.'kW`.]it4[Q^8PmJ7ZBSm

-\ߥRUՐ|c%hGFkE] ojEqk2==|S
9
;̀_0dķ\fSrD~GE$ѤMȪE|'j߶tu3fqCݺ(dhIL%k	3JҨ^IdDxGD|m15(=#g~KKu[+T7Ǹj3rnn(y_wXEXSoV%r,RݿAjˌ6xN$wiTRQv3~QR^y.nAjӉVDY2ɋ֢r n-1gx7Yol 
?I]
F
]q_iG
|I*NnK85h#NVu_KwP(6%B'3輈03zQi|xk8Mߝf?SyrrޠQ(zGM!@	&xz}rdP"3%EH MFy_D
r,n{ndCIi?!J<zW!vܫB`SCEe	#dZLW	W%y@Td.`[$Z]R#sEf ֬Q9"V%D~64 =y[$-ҋB>8ЬtrG>q}UpܢD,ǳי"7.y+ESTx漒&hA\s_(@P`Kf)jy6'v RV1I&|C#o6:l
RRhkԆNTOW[FWm4	d8'E
e
U4.=9M\:̯Kop|p`xqP,gDds9cU$FU8ZZ
FʋߒP;<ҙyɁ@
P#cT/"1Wπ
$݆PVkѕc񵯘C*8(ƨۙ*u8Eܟ>IjZ40hH蹻0!?q(/pJ:pl)olӳXv=xc邽AUΤj|=# Tbs@6yKmG hE͡~{/5{*(zq֜em'Dn3򂞋"DMz%rU禶͂J8yWQn%O./pOpTG}G*%ycϩۿ2ڦDt}ѿ\>Q^>"&37|Hw
pFRߏiָHxZP	S^-4U'
_'"-ě4-§rȮ*{y?|{z"RR
>3\AAjK2%mUFaz՜jґzlc]+
$e^cK݃5_L'*|G^$:)]p,BFXhT[sN%_?cX
MU#,ߔU}䠟Zb5(mײ4Rc\b
cI=H7ݔ
߯oUi(AR]Dі )}co8R
<+"K3S݃.9\Y`"s˕q#3
/L{̔MWj1@3xЧnPTwE8j>p\_uShٮ̳ %p_ 'ҧe9]"AR$Rc}O  )HQO%:<&OȖ'xB@
(436ϚR,ט[t]:OK쎀ZBgGpL!0|K!(Huw7wb[̡R6
oyc' BդeoIv[tЕg"=";!w@ǊX݇Ssun;U\ت;MnW'߂7VO+jSvgN6gV>>^?, x>kn2>QfS(MzGf~wC+x/@yvӎeޗK*vzu6OX{aaKxSi#g ix"=Vx@]"B* BTapZ.)[NhPr0tyYArkѫѲHN0+Y8֤YL=?M&jɳ+Y{(Ո$ f2`S@H~{\oA-葾Eϩ0l< .mvd>Jbͷ2o'
mղ*phDB!U͜0=A!vL>_@ǰsdd4,,Ꮆ%:訔QACKU,^0/(^][tWa 9v"$sM~	ʽM3J&S,0yKK8.T-GvQ쟺>Ixi9qֆ?5	/\["Mn
Ex`n_o!GY ݝW~r>|VS`@$OOjhTݞyn,F][s]2WLg\ݍ[gˡR/6(ġV$R[F3 uQp{@'<rEP$qɞ IEP2h.P49~&UK(
+G2ӭyPV" ں6ʋ^QC2tJYezqS{)6~ÃV'YEG0E.u72t[3\$+?!mv4;)Xdv-t+[I5I/KMnr$#R#&ZW(@,F|LnሂWIEV@ >d
Ƶb$&Gp<+YԶDn1WNϗgFi~$YױŨreVZs-R
.=U.Sώw3Y\lz\ gE5X't:nE׳m|$9Y).ToA	z{OZ6q/ܛ*i(j?@@aѢJGTVwDBHJHGktRsv9kv 1{=֗M^i*M%(,ZYtDcH-.yC_{%}6z㧺pMݺm7}ԝnQlcTk^ug)V[V[n)c̱+TkSs}K=8{j|\ي[@xG~vbq2TR]?l(s	_
8R<.:u(Tn̸s5Pb@GXbVf1e]#~au$Si>:dhSMB$9;(c?㾢۽@</}	38`*pU~i%_ъvD0 |E)':8]#}K+PU^RtVurvW3,jD_ ku)i?pcʽU0ߢ.~KJwYZl3]˶!%[}*x3xEOw$V%OӜ'
m5k4p;lvN#o?*7C U&rk{TO֛	p{欼.OՔ[~G
byt.v'&hs쉧KAE^1ɿzQ8]JwdznVHA9/POy4
q{VVy7e%S8o99u_
Gi_
P@M/!%īy[d+>&ُBOȩIC*%.rt%lTN5͑a$hU U:K/Hv=25Z;kH^I0Еz:v;Fюqz%eDz?l6Hk-]	Mθ-;x]Ct
HqCa"z>>nZN5DzuCet&bI%)(Vx<ٹCDɬYW\,
׃Q3d>ْ2%W#u]k-"6m%_u9g~&
蜏ytGԝn.^bߟe|EK.ӌ
]Ndnb5g;f ajI#:ɗj{/MSFA1ĭ[|7aՅDy$R=֞C	]%ʀn3H	}I9i,]qx˱.\xoˣ@n$~Ҋ
BI
9 rO1G$u{rUEyL:R
ëwoq}/wtdb
KJpLrveh%hQ׽yvǡwNkon+W-M媜\9&t2MxOB Il1'k*gVk/ K1߹jxǳTrdJUvzs+GQ-.tLNMvn8wWc{R	)0)58ՠdaSurs"0Y7/Lj1kdRAfɦ=R	(KӺ)r.xOVXurérwPIaϰBT֟K*
>v9RZ+)o- ,<OtKeF;d~)^r:sк8lR7Mf&(ܗ pP6j'bW8q`+> HOo.ܓ輛O$)(@"|Ƴ,_
-WMI?'ؾ23TtNs
RK4gEQﳩS˅_MZ-[ڴ:r!:n
Rh{>`C=MҀ*g~ۤJ>$KI_-3HP.5pjCq,
1ij'\mm+3:} ;vV~w?`$ѬU^:Ese,tPӧW⊅"&qVshh2Ԝ&'+G! 6M~qӂJ1qy
!KVR#,TMm>Rsr=kmJ-P$Ãc_k"M>'ixgV'镟}gqۓ5B)q4"n㵺 `l믳jgퟗMxbO/vZq[Oy;MG
&=!*|[\ȼM)N
T{JZ&IoFTs;8(vH'0DWر!>^z"BMB'B#5wyڃ[U!\a#jwbuC~}@Ww6/jX{(w.L*xHBr"QgN(˴'U8 G?<Is/&onS_S)>ݫgd/b@_Kc0\`@er@^8p8p[9r٢ 6	Ώy<Wds_@v]<90JkLשF0Jg*I%3АE!j$pqZS6pP9Z:RLlmUΝ}:9,PN'ѳ'c*sW=2/Kjidc!97#:TnW)V{Ne<b1X>rzWOk͹cT{$*i<KJvU\\T@hո]<	ʝ7ޒc)3D(w1헏/݈KlǺօ[#Ҙ AހZ`Tp-λE	ؔi T{~i:nCw#0YyQpbRuY&Cޢƹ"pU&*v/ASdbHXۡca4C$)V
nAwIѮ}=n]Zs(A;|g9w, d98w-~}K9V
f&nLPnڒ4W_.*& JR^԰=Ӽ`
tdQ;']gƫ0BaWEoSkI;`n-
qcKVΊj^ᴧڳޚb5Ux:#T>$EtZbWk> ;X3j(:#̬R *+g6i)!hvs6nÕ/	Z/UDR
=E(C:4xF{:VZXMW|}|+~NMJ3y$ur<[c挍V|wڜ!ڈr //!9DDHT̫8EkYuS90_`,nsX5ERn2m,yS=H.-dӥHEnh(9S
1:{e[7%g?{̈׼W0jlÅec[e5,j;pSTW
Pryݳ?,KrI1 >1Iy/"_S]nF":dad8K;CF]wɺe
2ܡyQDH8"}__$H	rri(ƫ$D×*2AZZ-SכnMQOyG&TIwu.	aG|kI>h=y=K/R;#G|"	zP¯|.}$`20`\WATJu_7_322ϑGPbB0>9(jh:9)6@@1@ަUH6iIע.U:j|^&myeJE4G<)8s;20~6U<߀k'n[8 ~ -t6GPt{uKJ&pe=&m	^T>I:LVY]Yմ"&X#8*N({v,yYL0~f%ӷVl-R
5A<{ʙ/lڨTgUݒJw2:[K2k#j;
8)+xZYȱ~>V53H?pm(o.A֦PQҕ<wCzQ1EK9LlLPWpxx
q+$ȓvMﻏi	>=EFJRή-L҄	C]L_q5\TKnnԟ0lwtI[d{vj.Ӌa-ܘ*9|?CY
ubU48Ǜ?E9Wq·NLeu

\pD`G/x>T^7
IWpKpx'nX=]sJ'P.:=O^騝Q}6+#tOw7P4V^CqJɚ*pr
O ɗ#@sB-I"Aͩ3eHGmv"5&6:
cv`zt[A4[LO{<̚ÉU">982A';T*j_TsU5IZ>
z^Z˯kՈ MNd!,zAT,`x
t<yj.?C<kVSjRplDjr}YII[!&rN&<w!Z8,jUSa/D44
Ov˽Bu7O|S$Iq@0+M5%R)^;CUk1GBN/|෸y= 3W?/5X(CŃy¶:\4A$7=*u-?'Bם4j˟B­L)yZ/V7dim q_N."o.h'90>WD[')95z\r<W9;h,>]S俾E)
uZLpʣ3ngRu9~)MV[n9c6OS9ԦāУ*~l06O>0|_%JGlJڛ6mcҔTpJ߁Hu&6TºvZՁ!b5
,m&6UKsDm%_Z<H>t)EB+Q<g.~6	
mu{nm@V/8hU"L9*sǀo\H5?FviJv9w*ʐv5`69?%+\uWbF)#ǳSLj~M5n9rE-y`OwS?-Pͺ.Vі-z'A|%_pX!&R	lYeS*7:&ಓޠ# J0KUB?yn	IszKK7[%^19YwJe+?R 7kЕr$Uez[
Mar<
Õx\+A#7SU|ĶVmTVTr t*/o<T rh%r"US:d	7;Nߞ-Dsv݄`κѥeKhl='ο,ښwQQr|N'os٠y?'pw9혖c0G80~ԗ@
*Z.G978Joyͯ
0iKĕײ`yAQ
jUqٵ!CRO?
^#>NRgsg7B%ŧ0p0V]<fn(QylӁ7*_{my3q 11<¡b cyuH%nἨ#'%rI#Pά%M\p\_ovZ <椲hkI,%Aaـ4ZY:}c*"-Hh:YȈ]䓿i^xDN[ǭ6yAH']P#62>OMim,tex!*J:'  >xen)|iMÊ7
MN_HwL,ԤJ،OenpL5pn3MUcw՗zw%CguԋO,4,TW^PC1;^Q_H/G#tƫ@H&w{{ߠBiUl>ͦpw-TfUӆ pTze4'V+t7\ܻل
G\'p;g3Oc7;>>*7uj(D
n%&UIjh9JPôxpHUW5[n%½h}y#*Ӆ#q,MǵP" jz,8'e9J;WjIGAPD	\%%k*qK'hͥw(`7[W])ju]0<M1dsΉi)p	l`r<NTﻋ}ooy&△Y+;qJǆum? Yg6>o[.K
輷5ԳHܐOK9&E9z=#a/i/g;%O
#5JGmf5زAd.k!ݥ
VT
ugp&il;5r	
j%p`H9geS,SKHzXhRTp2޷U~l4	0dʹ;4NؠzlL [9
p)G(s yC"}t^jlqnC4?yz{rS)r#!@Qu|Iʮ[7I'TmmU{%)
<t.ܕ]/Gj7-|ag	fGM}pOjvZ'	Wr>0-rxP"dx:Sjaf{;Ֆ&c ({$0>S%ޏlmS[CSVrQ[V>ԏ=Z>O1<r0ARrh9v8
(eO넒4͏o_:=";^.+xLsSiK1ṭi-ݢ J};g5` |Uo;V0R5yFycgsy9%~׳"^)BL*]N?1 AWf'.87C,ukhN[yP_(,'GА'L,ݱw3Y0tH_!=):^^Ɉv9W{A'q<ҹÈ\MљG4mŃ(-C6_]涷oBF
(\Ջ|\RZE_n#.ov\˭Fte'q-t[X
9w9#]ޝ2HʋBs[OEJUXCK$_*Yhʃe>^W#ɏ\Lxai֞y"l":susIT(o
jrs~bq9o!H$O==wFW}/#T|X_uYrH[(LL
8i!W̑[E(p@F\Á$@$P1h$*[>2Iwuܺ ǩ,LmI, ]ږA
/KvJOsXe޶vLo+QuE\wW98)}4z޼?k~O.(fM]Wry|y 5HbR)~;`*}>:Zȧtk{7]E6Lr3χ7>\.$`@w~+"e=8&uDoGujpwE8gpPTC<K.c7'KS-]"4&z
*w
rտnCZTa1G=Yr{VGmRVIxhVm^` B4 
ܭ\wՕiKSЮW;&;Je_s]6O9@hbW0*F+\u[d.pVo61Us'aZ&S(_u5
꛿Yۖ
u3j+{ݗ'[p^ӳ٫29uu+@,н\j鯹=#Y}+^%`NG]r$ J~\q#_.x?Ec zq+2@ST<QG6wpk[!~v9GRo%x~s@HklW]\ v% pb#E8sP9#(~dJHL#2;;`;4DBGQ~sz"oU5T/UsN	[G.GFN*SR%dV.*
[xLJMQCkhJ"]!dG.5Jv3ӈ0Q7|ֺYɟc1ZqI6z_ۙ|
x$&$|1,^nN4$Hj4{kUV7X[.nv~x(j:, P7uVy:95p)tÑnNb`)+ } ;u69 
*|邥Ǘ NÇ*7y*L/&YwqP;OSm@0Kl#XI8]u5j^ܧ^7%7on4FXPgK-#J'fvtΔ߽:h/
͢86Sy~΁V(z\iZp[spPZ)(~V~I-kO]DfPRvno<MN##*E^<Dpxg`پ7iͶ)o8u:%GdJKl?,995ġ~VpM%5cuYyMmLx%
qY떸v\ǸP $Z;뗢fۯ#upGEx)FrYJO7ȚMwsM%x>ܬxDF:7Y&q7Gy@opB @Ho8yˮZTQkxs9ܽ
2Ow+҅+MAT'uI$ܙ]PW=RF$wcn#(lS*6ۺ C5?~]Y݆g{^Svmvm+b	p܍#h?^;xV30 a~ǃT+qƁ..H):簦CG^n-V`,M j>w\!LX}wpWd%e8p7%%ZnGE
M>hDJi"<2ȝ''	+xzqO0鄬KdlV1U~ub#l3Ktu Qd {8scJs@msWcɄv&|C"6/y pks,!\_Dz9[[zrb{)vdb8>sB4p`w+w%|{\*?9$f(\;WqfbDֳw?>:acpNf;ۚ3ۃמ\Dy\C!HnKN4Yz˞	ɥv%ܠ`M][5r,RFlPUH
k|܎g`<d
#j?uib; Iy:KWV KkI|5ޥǶ;xH^q")$Dꥴi%m>|G?j}-{*
eeS΀3|WE2fWC	lG2%.T<Y4am[@2>]=qg:C%^`tܒ(WslXRtQ6Hdv6LGV8[  /%n<5~In=
_9qSЮ|O?n}yi9]Qʒ CO_O#@}1
Wq.82FFv@g^s |>_=\cϭ*ȵ@v-k
7~Z͖:L
}߭W5ZCBpPۊ)fd14(
Y+swn92IWrq;i+UJo? <y~X\cZ ^~@wvsw~hۍqv^׀g74bؤ߫}lG;)wloK*":@;|r	Ϙn
@|i' k %iHu3tgwbJs"fG=oǥ&%2):ucc}B6HzF~]{|xq'AKѧ>[C#X]6ȫK37BLxb`ꗸ\Wrfo!1bfg_AutbҴuU6vbJ:_HuqNP{ɉJzMkλx_DҝmJ8Tm/zOK~J@vInD@`ocwf9z
=g;paV>S_(`i8IZ+4 dJ7<l{nEɄj
!jӉ.&uT?9f>hmwV_9˿:n5kn~kcᓋh(w&cZ![+J;p[,^1X!sg:~nܷi^ue$?B$	Lf
-PG%q !갂u\	okS;^jmZv]OیKqӫ} nID@7#[%b@y9(8֣\^uDD1&5L^w;I~7'Z~
˱h.5
[ZkHDJp@EQn+,4Si,נ]%G5@i4
?!j/a}f+Ԡ	EgTi-fp7CD4'5su㣩Ey\b	qPLĀz<[s>N
ckDi4rwQIs6!בaá
:We:>lvSA33q A-.^5h wgB"zNIM`1'1}מ-e!>5>:2s*bECS}Aub=QfK+I|Ϧ}C+ӈe?pL쥵C?xEjAwqF+	=Vm]i9j} .:;tb4Μϻ6=1?TPsv=yrKpX!njOw^==(ԇМ	PRV;-<٫rě
ÀѐF wdW's(ånb]8Q8\ܭ]^_s[
b)ΘuBtt1kw)ً{vnbZu:jQEг[% !zQVEuxV*
&oWe].Sؒ˰e%n >ҫi2v3	R% NQb ǂ.	娠s;$nT렍L9Nk4Ei
HIPp訆-<3X;Iؠ:#3P\ww;Bu
DՍQmVtwpnqaOQIO>uV!`lvudpQȶh_XGWSײd!`!	1Q)˼"v_u7#:_> 6H[tDN>g粓
X.R?7ew_l=wc#iԻ=W7WU*o?k|WcBS5RlmWVqM;/&GV^V\;z."qHale6veټV0M~A:,2U[*J~eRn'u	)W .p刀F"jrX3 ͻ9fV#xZX0QUgx[⌹C9_3V\r>wrt3E-ww}a꒭*J>.;_:&nVikUR6"|H%#???fKQx[W"Unu9i'Wc;K{Z}syl^fN{Tξ1Tҹ !|rMA+r\W"t1u[?A1|N*e*ɹ?͏vwZа˭%;!L6t!wn\Ƈ/'3Z{T:)ܜ 	lO~`k&_ۥ 9]s	w SsQ,Aǧ^JиDl]^+JE޺wuƂ󀦃ܭ8I88@<;
,uJ>[ ;3a:>`rO_l.NZqe% P
Tԟ"JWߩ~;yU%Q7E'9RȔ  j!daq|]^H&ԂwC启f'Gbt@R-/WNۧ
j(9JxCFnC,ǁBpxrAoE?#ѐ^1ۮxPl|
	w~4:,e7u2
iqWݴ@I|O2kޢ~htִJ@jߴ8./PRѻB0"ޯ[yņpꔣS<ACޛ.s|P8>g;<^5>/2ŋϤ9ѓ:ByhzOܝmpjH<6<u%Ch"	VDFhn-rJ9>G1K!F"轵5w;ܔSr(/GvX/z< u:ÑТ=9ˣ5jUh#Y+ui+ڷfvTs`?kôn%ֳb!Q(e
L]*կt:ЎKbM}u`LNZoc_jAv@MA՚'r̿*}|xy+|;ҍbu&Ќ/}-FQP?خv_q/pJo|q$ο{nOoR}5xMjk{k;1q ]ɗ+jgiG\p=ZkEGlᶬf0r H/N	"]xՙ0_ѽ}]D{[a]BL&M#t|7h.IjCLv]]oYyڗÍ@I]Úo$?Nj݊v)Blhq =RNeJNgSwip8~P)j1A\5ыpuww8eJrlɾ7"[LHM,)ί*7Lq|Td)հcRB:jo^	A`	PqsmTx
@f_U5m햾*N+\!-vƟiVoWWJR	OƟtup"ci\-,4s`3zg ?ozU sD80ѹ:4+x.Gj
ig!Tkp\Q DOQ~EГDۻ)ٯE(D8,~~QTC3@XbȏJ[՚?oA]Zӧ7#5P"N X ĎAt\;jכȯ/%땓ڑŦonY=rNFrq:3:xA<<QRJ_('usl.}xSJk9d3`v:/5؅
IV5`_ 4y7;帙%! 8KDז=v40R(V /<21IM%k8{1NfTS!5Cգ 	ZA]K)xvǬ/#v}oWJBwPMU%{֑w19و/zI1[o
"Tbcգ >o*nT;UtY/Xu}/z>
k^-rJ݊٭vd[vuGP~KJz{+lD吟s17Cp%\\6ݓCCd17&P#W8A?LYq= w*<7_Dm
vOѽ&t]ϫuoWTqI`L7*u1ϱhlk	8sO >5(/&i:88:5.*'^UZA$J}j1p	*3ieV?l .胻
=v%
U$Š/C˖J%w0`sM{uFr.ìߴ:D5x x	J[_z!eι%V2n6his'BXi"%e'/
D4;'	9gF[7噴X &(UT<~n`?lq>kKxPm`#
Vߌ"`[MX=3-	85,>+U4kmq:Һqn"'u6{3[X,=Ѽu-`)z+΂i$C:c'W|}Џc-SrZd"6c:9Ώ,j:;wu+ZOH?g'"+Օ)H=?PuIAxuoUyQjZjꁄGIAү*)\
9?XǸk>9.Z#0Q*;|ehv!;X'ۀZZHjAogT2V}8ͷCnt"ъ".(8^z
84)9w2*dvMxiwN>p3@-
[ŷRwyc:	?R)ts`ov\$-(v¿h~Cvk.h
Wz/wJl'7
cYhyGv9A.〔,کx7Uҵo](+; ɝzXt+oAʶY(ų߇O11mΛ!MZq8F\qj3GWv%JDyS)o\$+YR|~NhcJVIÏ[+u߾+*iGmVrULp=L˳d:*8.ɳ;& X7+
:ܵ
SQ{,!g
O R#8Ru X,[/KWxzڽT|ueF8:r12XW\&n;$UPK]pO?Q~]~\ çYzf<Ed\})B		_5/OyT7:|8<+J^u=0t<pzr֍3F Ѣ;r[NwN] Tx,}o
j Г
ֻoW>X gi
+	su8C܎~NЙ=!)S:ERlfVuӂjh)ҭHoL
<Z\.d ,I~<ItX/4y$]GevƙaNU-cGt8NkRz&'xٞxvC!"Q|+8]t}3	!r*g{??˗Savp҅9TE4?m{>Xq
*(l4tP>!e(k%b,8yl^RM ,m@فퟖ <Tsv᳚L]frapDhRWo3RbQ]ˡL]VqN{G5A1A>n|Ym	˭\!{j[YND
&gäYPrA%$2+m*ğK	z
Ch?dJ<P8:%l4
ir_~<<L%ďxOpoBd^T:E.wfLT]OoW
"Յ,^M.l3v|YvEs雺|;ڀ-VGWR<>F~GWN)XH 
J} A-ꝵHbb+A'iK9+O+l榻WUpLQWɺunfXP^6xxŖ'
s3S{
Yi?;%Hq48e\?ADN69QbZvp{zwSXƕdu69E9Um^d [ԥ/QhתBb)p~k}Nss[ȼ+;lcRWA*2tY wN9h^p~Q¬*΅&nTJ~NU^9h4",v5o< ~Grf5J`(40H_st-'Ob_rTJn.
7L'+]GPa!zpLbEٸ+l⎫|p	ދTHΐ(p=O>[FNSer{,{[Lߊ\'vӔlЭSR<x!z
@J_
#Ω_H4U]T9ࠜ4O]2VNWTu%`^62ݏXO98;#:VҲFM+lzlX=Z<~Oqm%H rb
zM(RV\^2G"Lr	@u:
QNSo#T&^E{42a$6AUHf<s!G8c/PDCΎO
BеNhu}uk·q~"(@6sTl/ _mΡ:6]xr 
]B*JfI9ꄑpqA>ɇw2'+3uVodn׵Vs$䨋}k s(	r>`zw;/630&inNϸժoþʆx΄K1V9 <qem4D Njt,K*]!R}J0r,tOW9?kI6Y:  +e%E
I׭PzX8GӁU?.^hUEu"H
B/5̜}u"V4ڜ2:oi,?3ف
;-A	K#I6?cQS01VY)OХ5-IڪwqXж"͵VpwS/&+\rQb",8z:E`n&Hϝ~(q-X%ٞ&J@qyH_yu|Eh˛4Z/%jg.YQ#l'>ӥ:5tn;FNɨ&L~S^Z^KdcT׷Uך!Uc	ĩQ);Z[W)ɭm5mW>
=:?__
8Nk`?CqTLaRe|v]kҒ}hV;H}LLnds
s'9`IZCHj
`%DilȤ}stHA5$
[&,%tlUv@!Sm_Pu뤴~lyae-Sٚ
KW+gMDTR$qPO+^T;1*&T)M%C@?.揬~Vf&3< {W9<KqVjkV;RE2tj/7:[GeZuVhhE~rHdc*,U[[~Wq>VNomR068*Q{ju?vhR!'aM]=<cM,#a>7-ӐʺUtxr7ZhBpn0s\@o}AZ$U5@}LrD
K? FYT[VCR!TDmό0O@IrD^jMR1Ϋ9l6y
͋O+^nrծY'9#ZC0;`c5ʘ6I|)EHm:請J
N0\RDV2E)$%SLp
7RѶx䗤8MG%>^Z$A#xxQnW#TU{a;uF$Tmn{y(6q>_tQРG5ZJ	`%YN`:z8-D?F4˚pIU9yGΆ|-Yۑ֦-NHt\@
w2?|WٮgU)5q;r\o=LԬJ׺p44@_JU?}n?dTVV5MU 	T~#R:^KO9"+ TN!ט-sD]PGpu#5D{Ǒվ,tTͯzٚҘsbSik) QnTۙJ0-P3*_ӡzq&Ύ2pzt!{^={Smvی{Z,>eh\	EǾ̢⹮ъ;^M!
ӃN`=nUתKTR&$yLzKTC%?\^)0'\ 5=eaaF7Y/~7Z=lW$-Q_25S4OTTzנsWLd8I8(=SX@l.ptdqWEa35Dp煭:helPQdt1ДW](+KW@$Ah_z*;J7| ntkPz9bJt	Pkb~3ڟ5Ǹ[>Bn8Άzz,S >?gB~]*j'.ͯum.xpxA/o#H.~UT,0aħ Yynk1hw*RϽG(A_k8D"tSDBr\<o@2-/у-<Mlr;jVYUԏP`|cPY|p~Ilp=Rmi#HҮ3mQV-(4א&=^͵>ϗ<7?UN3liVN7Ж,7sf&]9s8x2GٷFW>jE>ֶTk؝E7(DS=N7{EGmV6nM7~<.U&l&
hpRPk(FhJGA3$Ԙ _|<<d	x>m8a{+q/mK5\OMN#i)w~J-"#-VDĄ3a`2ElgAv'aS߬yܧB\co
<
`WP/A?3MyV _*D<2NIqnku=P+(
ү
F[+ކ:<NbBBIhq詬╕%G||gNQU \Tқ헳>{DRv9{@_LёP$?5`[	 Mc]Um<KWf-w&foq$ZUxsn2:FX^:[? %G^K.mm o@%%֔LEfgX)k]J17UZ{/.ؒg\԰%bwl@SAA9ٕ&ܹ
9#l 
'~ٙ5%3сcw
A7]i:DpVW|U`*V"CZH2[1ħ\䆤;Wť sKa%t vzAShɕ$O9( wǴm;gR~s[uqW$s*\b	9;~?]{Y*H?}NN"K=,)$pQ?xGvsGnh찠vȝ?BcT)WrPWLZjq^-x!ݺVo/ZDgQ^;D7RTwKzt@~U3#4wڠ 6r

BT)l^AY"EN?ǈ`WXH:A,_+ۑ4E3|3RG~
jD#ji`ƖM?q'3O袤YVCX)$2}N6AV9Gx%y[u7!̯:\TwNZأg)䇋Y3c~H#~a9:qGǺ/z(/:-5~݇CCR?ߵ}I68ݹ"V	*8 7JJ:UEra
wmWV^\eR1k|Mc!w0pV2`WWBU}
 +
O#zCm
~y9DXTÉ_&yG33oWtur<=|*e\5ö
FJK(^|4|[|9ٸu,pϟUO?.)t˫TڽIZ}rG/
!Z[[@0)X}!V4ُYy O7	P.aʻp!>ztTQ۠5	^>$wBN~}G7_ݢ qI61K05Rގ?MCPXHEW_I E]rKjl<<'I8v}"9/mXorGg2+Vf
oF]Ky"|n	Ja@>'xj#كH#\a[=
U&~kVDlM@1{5Âk9\FϺrp,_[AnctŞgxA~tx7ʲ;}Ke36
ݰp;KO~h#Ey1eFlhGeөl-PQx}حlMp)lYO \;*kݷN{|`x;v.*ApD6Ɲ-peV/vjHǛ'ջpB)-&m8Cm'mG7.M^{>(
5]N2Xv\`֮S~	&boS嬺/_|fvx&q1tpm_t \@UZٯKCbuPA.P4תl:V7̕ 7]r\qz .bzQ@4+i:#=ݪ˫U56Y *YE嵍p^+/x͠5[Ύ0۽
!-T.*5-YJ}gHPE/s<kk%29 aOPx.sWoS}v4Ң=8
S=ώjQ)\Ds
i}ꁃ7(zr`Rw5.РCVBe)USXH%;?3-Eʯ6 v*/n_VCBxS1=|Fp~Hɵyq'HZ߮K(εgm5<\pv>*@)w^g9#gA0>i<UT^ 8nu$s3IuU&mw 	qN}&Zև/j;JVp:G<@tRdz= yJ
zY-%o)㻵/v"/Q[.|VΣ8'x=E҈FŶ\Q(K.QJHkMaNRٸ3U7*Vb3%9}
CJn?R.wkr_"ܶ3]*
Gw1TJdYjk"l䏧-I
HN΃cn5Q"PuKq]Bu=1Z׬z:DQs7?
{;<͗wc`qiJ>KV {q?}
9`K	pU"V
M`p$&<UY
Q
/	oB.4;GPzPwb}!eM\fr9
E^8ALZ/o`&f٥o#D\&kHX~@fYLv
&"wيѧE$ooW?9q&
fJ [(ytߣx}u&5f&[pש$uq:VMC883|+Rnj
GiU nϮXbG9f8OU ;reU?f
I;H@wnAE!(XXฺk  Q\Eù]!=U/)q!W̪Eeb9zqt_nHbƱg]t9Q/K7mU,;mdI](>CIkz1)jؚI5t֫zoz(;r$I[XVZv/hf	H?]k^v
CiOYnTZ엪3 "	rVj=A~b~<1+ELgsI|p'|@-igRrVt8i(gM 0j'"3
+7\U9{=lqɡE% C=vU*Q|`t2SPpح!.ag,aM~a(ɍ1 
P$"w6S
ڽ4 B7ԕC4իy,BfMbzoú8Z} P[e,1: Ž$U(%ySY%	
s\8Y?ܰpV0}  ?otKZ-0P!.um%G`qDIXpVOJxU# Wԕ1a
Q#bNڗor;;x]
76,Y!ЗW/m
h@`( {J.js<si#TT
I`{X#		9ʒךּ򋛂}/-}$r_PP2Tr0cۀprvdʛiƧ"[݊$oL#0O)$98@}|\>;Z"a(
{9Jx{14겪Q}h[܂ӢVۯEpd>y閠I%&`b>^
^2Ӈ;h{Tf̸BVk9"95x'ҐU{
km'$ǉ]HQ[$wMOsU
F@P仸#<2;Ab=@1bmjQKMctL^@ګKW|Y {β rq"g
"K*KS'l*8ʜQpԴ??mBJrc6X1O4|FƼtakq*ktuƵࣽ.ҫ넳CBƩy*jա/bTK4`9E흳Z77ewApDwi>	y_3e*!#7WU$$]fB֛jz9b֘1Uk4RҭgԪzY8s8PĳIؓ~vPOlcms#%+NZw@بg=mC<zyvuES?qQJP+[!ʛ<ILZpnT^VdBuXߎV
ަ[8ߗU*}\s?E(Ri1)ҠMCM^=,,}[Iwz!qu3WBo%SM
xd Z	oIu~j)s2o--AD [#[GziDWaI3ۅmrJfYrƘvpW\wRl:&Dtmp:
ѷr\ხtd94^@tA>&N!oǯdw<~Cd޳?E_6	m{5|, HT(ԣ@).VKz+6ږh:!y@X$<ԜUԯ[:S< &|B9֮8MuÇn|֔4+1鲶VcU{ԓ"yǭ^2x` U/!$COjP'CōSUlY\E𼵙ԩܕ"<|g6tGMcx[7LWХv9t:YTg`QE-c==|*`#x#(H!ݸ>q=v90mUeWgpMkWm0|ɫ8N\Z	v=>E]pZKu|Q*^Ybӭ=䥘AlE?knPbEME	뢏.`E8Od]{@S.]#a+k8r0Jy޶+!gD (ȴirBn 면|Qh;d
:pZQxq\*!)|WfP]ٺ|񋇠m"WSΖ{GVVEB,Kc瓻«/:R
|_g4AϙF+ǧ@v L'Z/p:͡(evnsJZD`rÈJKE{]rUX@p!5?rCP)8XXMIBV2r@/bߌ"|C-Σ*6Nbm=誺)-Wo3"W{\_8o,{)C7j$)P:!8nq\<4xyO#k
,x7۱j4<0Dx;5ppizᒑC<s:pWz\.RY+뤞^
oIOO~:ی+x\}
!lc\][&qƔ; ˨	\J]i]=V/D1]rjqYCaLK.gi}Dkj68gѲb<Pbh,|hwIZRV.[Y] .rn͍PU?m5x67yN@K7<
FUl(p=,X\zgp,
R23yfQ]931
m 7ԚMI5c ɮ5~Hp~ǠOUM笖,JjT ~U֌S]	9k|.h:α_IUue|Ū$-_td9*c}v֕n9dN/@0LO"Q>V?ST:
yYGZ!X?<5pJxrIP{pMxoT#]ZkAlPb
QuB\eG:y. 9嘸JfQm' {|3zm&]xDVܽG׉}@%GP}h͟_AiK1'1!sބ؀%8fGbbmzysTz/4=IH/Mj,t`b QSS/Ԕj$UçZ)USjMxvP>kUe"p-ei]$Tk{qFǤ.;`)O5B6
@7 AWoc'Q"I{#Y9OuV&q+K+NqzՍ;2pVXK=u/ ITgD½]ӟ,	p8i!հ{N	
cU59ٮl4
:7Qj+gV:g:*Xy:k
`SDp"Ñ;'H]VtLylEq4<3-d):;Ie>P#GwGwq87ܢ+e&q=
jARʞh|fSC^Gr`-<0sV-HU7knqt5&N>\ Q_S\

>/S1Om۳TqFA:qd56U@c)U&po F@[IIc"lIڼv\6KGvGUs^`4;,֛j;ta7=ψߗLOpQydh{#\5ۑʯ&
/ףh:y@.gPThU"ܗGqX\y$
W8-)_Tl'|O
9Θfk!xT0>Wtk	K0ǧϹAԴ َ*MW,Cyl)ys?7m
ZnOÏ;qTB#&Mǭ|4(dD?C5a`yf>5>z%7pBYԃ8Ԗ^?]
qZ
9ƟH9$Y;.XVˍܸ{ťPj"댈f&݈XT/QJnbT1:1^T[AA纇nrϗ{ 9 .ǷWrZ
?O.oRM [\JW7>]YQ#^V#6T|4=fg8Xox
yg%/tS$3<ٸ#v/lZQ7wi̺3쒂ME(欯^4oXnfu|sV4DvVJK@ GueaT2|.)OtjU]on;lMN;	J(pTYmHڧ][3{5$3oRKi%r
k>
uڧ4L4oѕ%CiiDfWUvi&$1<?=UbCyǮt1> 6Jw@7ܲ@sxI'-9Q`/#PvmL*W=:,q%n~%{ΩΌp7#UDJ۪k+k cQKmQAnצ<7rltGx,eҴ{Q>ͳV=BP;SHG%ϺI~n	3-A{_gUGIN7v.rg#{^808"}RӪ?mH/4	faK~o!'tXawrSd:5/7U!u|} mC#x J5JBo)#VHM;nQ}Sw*7ɦL|z^Ϳ2U~[ȭubHxVTD
H7	w6DZr#E5|3hG\Ղ"]PLqCA%wב<^sCOvx/g_;HkK#C
fXI6l<hiK)S.-H9,ؗ9^wR9
Ч}Sm;}f{#wbIMQA8|'3yƙ'{DR9Z jʗszV;HU]!? XKE2{0ǒ^}
4TG==!v"N`\O%$3U=goZKtB)Zl-4U ms5+{8rN!7H=_X5лSF݉b2XJTi*2[믊5X?BSk"
g"ݎ7Gq9v.%v/]zmSzWH@g<=$(a{*1GJo!ֹR~RQ-\i1C36F?; ^Q7-+~K$Kej:Nw)5.O]H_'I9	D#S'
^k鱇c*6Z̷z
J\y溫z[zPعM:Ąl{qDNwi'&k[aH'U.L^^.@𸶹 .ʜ]6eل$tkUGWnwpQQQ!a"_%ҁ-%A].Y(zHs :^n?,{?N;<-m5 87 Z*M*wא,(M66k=@U
pLKB
-?KxNd)Unvz0]fA!^t7Ԓ}9HhJщ	*61N @ 6jEg17v
\\do9(n
gr>jz٭"=8>JYrJ4fWQo66ZB=ʘ*ٮgz95dGcf87bqGGLV<*ZL3~WU&~z;Ց
#84y#L}AN|jtJR{u#|Tdqxԃ5WM1؈
f0	v[@Qw^dUjf
>U&X >r
ay!gD޾׷FӃyy9}=@dZIEQ	!UNp>H%;ͤսM\MufySGшN2t+|)œSGe/lb+TWvAV(|\<]Ae^Hd|.7k^Ƣ>z0r޵ vLqIvi?B|Z>l99":CٕP5}U$8@NϽ]
m85\6zW;ۚ&;b?'['ŬEؐBy
θC[eoC,iw%#ezAwů,`BկZUXP(B/o_^|H"XeSOEr00vnW|j;ԻKifenMS+@R璀m*+9Նt 	bW[mg"o~f *
kL"o`o{>Y徉<(:E!3V_H.+DΫ#}J{mw
%[+<KG׆y+Up|:2rUbv9MNo".lrrÆ)ށe;1#GyX9p|~oTEv#Hv]\_/}nI[퀮\ 5$Le
 P?::whni}>v,3.ed4$}+$y%ؖ6xt7q=<j,e<@Squ:^K:ɉQ[U{*TDU߅MJ~^Kf-/g[;IEA+R}SX0;tM,<2" I^droKҋ]8GCƈ{: ?S"(_
,̍x$Iүԣ+R\1=5}/Z,w	xdZ؎A_5
nqVؠi,6OQY"p "ϑcGy=2 o^WYX3Ŏl/13 /e4XQP2ÃW!TN!U[wq<+l

ax/\|	
M_5,KJ1$O;!~~P9./P4ubwLYɛ5zJBEݎh3UmV@+܆CJrOvN8sJk"seBU'}vXw"e\0~.N;Og|ѐʍ
*~P${r@8]4 4w#;
'yFq<;(h>:
Gu8": JTXFv u31rd
PQq`4,
фnYLYXpHK$g&.kvxUMغVUH?G.$ Q[o۾^rN471u;N_hѫ@emO+rdnr	ZRG4Sc(בߙZR)|:p35N݄&6k БU7}gCƑ=j˒E
/>kǢAWokj8Uk	<oQnG-^`OY7[?m(Lp<7gsNj4X
FCk7I"I" e'Ό<vJ @k\SD6Zq^˶*F5'Zq5b%h3?1]!&eaC wnVլ%Ɏ/OPHzseJM];vW!u{JNYAfhMZBGyzM1}d#c 3$_.dCVEFWvhKsUP
G%bسujS4#-\-nǝ!ջ	um,vrZF>}lKuO	wu&MZYV7Q@_#Rc!ע#IwbMsC[C: c8IIϦ| w궅VsْB_'I
@yjt	r<<ךnZs5nD,N	{X>]EJWR<ʰ`9[.ei1 DwO-ֶD~pnYā2}F.:
?{+M|$xrv+mVOsZ!TgS R9m~*iEPV߻H@нۆo7).`)j2"uGjPC{ׇw4/y@gGjPid
iYNa6q2(x9zkUo>_?)jZ+pcр `ꬲrD*n譭&XHkÜZrkG_Q] RJ=BӤv͉Kam@[#ýt4f4_2Nnآ'ë?twBLn|Q*PɁ Xnέm 8Aւp joQx!/}Nڲ]z pg*eܝ/ӻME+QF|Iy㙨ą<Lr2@6HmMLn=CC1uR
U;Ǟzkv5)5ʥ8sױ,kj[_v#S1kcYx":K50yP>Kwxʀ,;@חl78IqQ"nဎ\MuF'b n 	-ط84?Y<:Gx!UFpNG^qɁq9VϓU;%(rv3RBpuA
]Ց6GB炝bc i濢P6UhJ=/נOkipy
i'!Q>Z2 \F/ΰo_m=R:1ΫunR#f3-v=Z>-&8?gAP,j,-cuдMR( @}qPK
@9(\Sk&eo3f.+Zi/.T*i
)
4ȍo-既dyGI|E(S[z}W mΕ<:qiL 妥}B޶1 {Ͷ)ɰdiOW
:Q.>5eWH0xrKolngsSY	#iTny$!~3h?8tCYy =ya!*PǀcnWd8Jߌ@R"jkn\ǔwr\	4{"))@b?9Ui|HE>r֣#[w˦^p=C.K^eTg+*BoesGȃBlHI@2)gƐ(DNVTʒ^W{gp[N0r*.r8
=m_$,ƅ(
G g9Uv"B7K<::wkƺnd$G'Aqv̈́Y i@:UKe0h]ׯUjIPTշ"ӥ*Ne\0
%vpzؚA`N~޵Έp)z)-q'
4/x4	@֮ӼAP	.QpT6ZA[u@-ܬWWg[
ńVx!4_߃X@Nn :Zjo }<nKEK;;3౶Ѭ
\ԩ̊A'
OڽbDġKnb(nf/B<@U~]m8 R):ӫ%v@]۩U{%[WjS[/` Г5ؾܗmuXs ˘O7삫ՏI1GhRrC9)?9[s!@`pI*VNK+旚S7܅dE\VdsP&A,F휹-E )ZY&5*1?Y]BXG~Q$=$]may!8׋ūbKZ9zxUƯz̙Vdv˹p#&f[jwܽG|heJH5
)Cn.Qx$v|e&=6<ŭhG9/{-~UUG@՝ >-1%yNfQ`Bna͂&a<_L&#]q!H/gp̂W:\0nRkMenA|8;*#D䶚ɉe/Vd'JMX9_D:}B+u|T6?C^X6]?~u@'F'Իʤoy礹_&8|fk:<4m5	Btw3 ɳQ$`pS/1lʅn7*֛#/&RˡB huRŦ%\K^pޅGow"SpZ:qxkaeZGz@57{R-+kg~oE ֹxɟ ;m "S-84I\+VB\y-.
y3v;94ZnCnqgBQAVJ;TO
KOq1D&:)#I $Gq'5;}HB`sJڕ7}5|: 3/r7;^0_s4C!
|/}*s͇dv5ZVOt[3`+T0UC2.Ŀߞx
u.GFKM
sjM1czB AXZ3%,Y)	skVaF񔽇MF7B
W9<_#
vS9k\;C2 ȣȕnǓ1t-Ftx(t9Z0,2}z̶=gipRN4I)L߳l\%TA>pv:[Gr?6Ṟ.ୌYGBEO>Bu-uSLNҐ<;:.\N:^X#wЙ>36&_ $b;ݦGeOhZ\lQX+[ʁzr]ojomBJ.3k?IxQ'Av	U:\R߯ohM@vn414`[3eGo-UClqp3ιTjp
6>NNdTrY0j
*@pT
+W	$TDZO&hӫ& 蛚\Sq×m5m"?U7ݷO=RmQ=.A>_=R}I&l{$+ޱi
ΞWٍBL#_ kSv'R}p{b5і
g:c_گp1t;[876볣w2&8U
S3KBi͝c%x.ic^n]+gm\8J+kj]."A#n%UۭNoy:\Xo'O˪^jQ!ãZtmνr:XjN[m).IvW$K0V5fwOǞ:-.vc49薒4?ͮn>AOX-<յUkj͇k۬6WKo|s%%Q)֝̉oK:xQwf\[W
˶oϮݳ9	|S-zYKH9jE
"uQr!Yㆫ7>@ՈWMZ7?z3eWE<81q
>UF^ǪOwre:g".+Q[jӻ< ]7/ͩA/Ɲ,b%l0|ҫp$x	W8\D@|u7˃~l'l!S<Z.<
zªY)I`~q}!Ow>VpNp@H^gx
9炎\\j˫ ˉ|ޓbVAarliGG[靬5ş
R^*W	4v8z@b\sdm[[t8 I%gH2 T?.r|]v+QR%7GWn-ةqaBQ>ї;N!76v)XZ\PMiLpnz/v /ȧB-yߝ!TӤdݡ9jl&^ bto קOQ7L|h2<kw]#,{	.BvԺMTQP~r+To9!\qS@oY SK@dF!N.vH,CNѯnwUu1>z|ONrZrZgσ wUqU" /c\$ZF ]li\]qHL>R=Pַ	a\CuE2ueLɱ-)p1Q!ڀ⻼jwTK.>[-_}kL],|rg&XOw"U8(YS,Eg춀V$?Uu(78HǁmCɕ%3n)r" IFv<[O ;.ν[%a"~FE?`Y:Lw
B+qyj{yu64ǔoDLu"DAe]ߖZ6mhYh}T{W#dz.#0x )X@~g#dș@z[\8<>SּF}z"g{?ږw|rْs\.恋HXr>COMY+x>N\'
yS
'7<p;9iIý!7s.Q
2ge/jEWL^[8"ʇTj)Dn$x迕=psz\^6?_jt/x.E)U5XR:.,HrNZlqFHn_|RPy>>ӿ\"#AzAta*o5zus&L;|AitվEz-=ʠ?EOR3rΏUa/6HHߧ$3ￜ&N+*,g׳Z%%/wzljz"T7JnUnO
 {tĉ]Y"`42Q(}3%Fؐfpm*D޴" _i넄>> yz2Ɗ%s 	IyGNl޵KUG35m*je*p+vK''
7VSUգmIDZS3/G.v񈓵}6Sv!v(qѧVC'\ZĶirɋ?.ՙhzmE-.3hHfѐAGë.hsT^pĈg>(SJx'u^\|*xܱY-k7)&Lid}F82aV8کC͢M\֝|%MJjӮ
:7YiF
wy\6UIs)/Tb+;C
wzTߘi	NŨv)ǅO%VʒEkpT@( W܎I %멤, 9nMbs`lg?0]^])g8_\)$@^y[M)I`MۙgmMgv6'_l)Pe~uB亵?)	aC
l;z_nI?aVkȚ_Nmv@l0wkX<@&M}fUm)?$Δbx<#
ܿq4 .zNTC#
cƜ[2D^%Нm<[|	}N(G,!>mmGuX	c_x*-ĠaYmGyLq
*4hLDR&Z<BԫYO쨞+Zu\}bF>ܩWEJ@*rյ
NwU~>.ѷ9-nV9:tr%o; tϐH<eG8
Dkt<g5_Й!jpa|0R@|&EG_\>	gcJVsss0-m AG
K@`YPXdc1sD]I4`o
/x#+bnN$HsQﯝ)tCpk[~=?ELz[vQHV97aI&|%E1ڹĴg*e@#8-N:^"~KRmat.k
%AM׺aѐn*(o7NYcJ"TY1m$mڌ&xh]b~,PZboS<L !)s^| qCkXWlN_=4`W+)0̭ '%5'wĢk
C:L){uqzI^Ҧ|:RPuïp"B{ y3#Z>=Ś#KzZ_!2u%_klcq~Rϧ"N@֓ wo}3.`q 9R!%더ise/qD9Rm** s(okQvz,!ZֶMai=k|7xYt'³*AϮ#cؽO"kH^?t<hLinut8T8E9u hmeAYd'?e)ÂuMNK뾁j*h~Љ^X/ik-Wd܋z>í ugY#pB .{=_ns6#;;(Y8%MFuZEyqPN;+?s/͍Q vH` >*joR:L=A!cЉrj[QՙbQ)l6qy~G߂brߡo06TtiRl e8%?o7bSL IrWZ
0|A2_J?`8)UG:H޹O(ny'NF_ZnG)LvfN~u݂Z*H ⒶW/t/NGюgKt#)2JC93LNuF<RBg>>^ GRTW'yaI+^zP QG>y-ȕ}@Y.6% sΩeza\ܔ>U&-yV7+?!t5iZ]x1C9n0<{f"' ܆OQs^'VlzcqUՍ4.)3
&$JR)QϿb~L0!~B){d%_XS	7}MHTq}IZ[)yUqop+ǭ%=;	`uF&Y|9w^:*]T2<)KrGJoKH6/j6a|Wiy?W7íCi\2|lM=z=vQaZ&L_.mEGW "ξ<PBHo_ߘXkĝ"PGPtF}O;@ᬧ\fm1!#{aHYوMG
f9r[T$zzB^g\:
QyYՖ$\	qگ |rQ|*[\zrB^m[P\x`#Y+oy!4|Gs":OUEMkU˹9(\!jS!L ե M>M(ژ)=xGa"9ӴbHB G΋*~}L&%ԡk"eq{)gҲT })l7U
멯?}}z!35x$_}L@VNS;>o[*\5G[%㮹ϣDA@F=tOlN\k*z&%cAطç]b\ 5uk"wxms=;«4{wU\VVfa,:,é_<:D:Rg6(4AF#*;Wf}61adI|\$ixTw]Op/yy+E0:kHr|9\tDB.b;m5V\T,uyɛo
HolF֧ 9bƛvPݚUwÖ!Nu">."36 MJRVˋ__!Թ/ᷣ+VPx>a33tI\=J'JgYT}}A*]-щ6:7l&eHNT
E{^Dd+ 3|rtM[R,\,\bCTzůphZ՛+v!򐝒'2IHPV\-G$]T2_tGrX+Zw+u%wֿ15~OG͵94*U`ܘvצP٠CҺhm踵';[Ϟɫe`~;6 1/q`+w(u :7>pNn^*Ư>/,wUn!}<BҦts~l`.E#c7WNa?ߪ~< Oj(#n4j$.[ng`b-*Pk.H
*s?QP  m"0c8uX[W.[ Bz-|]tZSzk,"9$,^:&=9
`#,ʗ]m~_r%1KԦs%R7%8!v+N~{6Rom\|x}|$cAcp^,߱MW$ij&p?1lj㟝mYg_E!` 	FHumj@1aZ3ouJR=_IPiބE0ЪF䭱_<}4 E{ǜ<(Sku"_6ҽQ_)2]S{*}:5ƿW@I%Z85M.
W(툦J%MÅ$p+3궆7gJC3w`|yBu|;ITW6^ڢXE̴cuS <4Y.6OP0cP2~<I>tWƉq6}6&ӴRQ0rktRO>52xtMX9[{PGpR9Onk9ػ[%(0ėdSp&i-nE4<&EpBzH<
|gu7	pQ95MГϻ59
뚼46un,FqprsLY-o	 먺GߜbB%~..J8H
dLa\1B,-GڌSNb#H8Yp;Px~PNo8ncü?(rb6nqrNIuŦoK>KαSQ!śscEe#q;	 
v9קxWt!GTy#T745X>ݺ5zUtDT4\qT~꺺u}"qYT5|9A"LOs7Ӄ&oz>M !!{}{,igC4LyGVOg2
/ࡧRwc
=ҫFKݗvVjY)q Qn9RZD_ȁq"yp[^GxK+:J7%EQ9<rA-<<*U.j0&ϵ䝒ft.V`AU\Ns
ݮjm?g1WO&} KXuOӑ]@e|_[iýp>Qr
#KWf\N<^)o[e9soTpf4</mHe|ۮ%AUKPgU&	EPdp~	opMj	Opť<)~dy"ԦSғq.>X@ ܑ+PKfߊv-{!~=I]sᑿ\GI8ttKF<M8P\0UX}qh
f$-ҩ>ooJv8->ETʫu}ꅛS=in{(4M|E-{JUpqns
"M4̼@f<
3mq8Ŕ&}Zj~[,PU!OVih̢N"+hּhR ?פּA8@Gլ{N}ѯiK#c6(>>X.Olܖ[.>M+?BdYG߀$iu	9]
bf*+;y[N'7PFU%㿚X\0?&˜7
Z*(
SADk©8[VP+]T̎-7cYTH8*Upz][&L7[TwNm+\vڤ[[#q
sMz+㳊:Wd0mIk?y.^̨Pxj형|(>AM(~~_5<rwn=z*Q8=Sq{tS+񀦾Yjd(gkbLs1XhR꫾b%JP|0ϊXz%~Ys8|<.rQwe4~~}dYĝj  
'{_
q?6۸~bnYy[^I<%زn1z*Fv۾[Ah!:t
;ihM'1WIE(Q81Ԟ^Xؚo-\>^RH=NNgo*ҕZ:.@d/o5RLҀku+amq
l|X}a% zRKIQ+bBw.t_AOH-9릊xwFnD)}"@**V(j?Tnri rܿd,爐$"}b~t O[ 5`eh'>{iW*xq%+XU-!@rs\2Ͱ":Xrh]ɐ|)գzV>F$_?geNIQv6ڲb^ji)O>aRq1?ta8C"خ8a=BD?;בf_yH5$1뾬&< @|މux])9}
ڕm΋w)'Q?4Qw@3"U9ŹL7;uTR`f
0( J\CSLB:mu~-~qO;{Zwz)uQ@ǔ:9>ғJ~p5t.,M0!߃uLsKv+7Oy$GEN- 	DY#`7zS,[0Lt"XNMҸ
	No&nHu`PS{܊m	s!%3%$eV Wf:}wP9@"`O<oYZH.NCȷh
J
 otWrm盃4B,`ps.@U**ZRd}$#P MoAbee[rVgN@Ο+T߬+/	EEgR&6A
ip9("ES9gBDv;!ڪǖDbښ`%d{
y8vzk~}^ܹtR4L,~0ph4CB	І9z|vWkhMw~*mDtn# DʮRtr|>Ay0P}#4?'NG>^O%5(聜
Z
y-Dg,Aشh	xOr+N20,+}54,t}+9R&Ec98Nd9^*Imz_MNU+Ҟ.]y458~$@ު^䩀>QB=J'rZwZӼ/0֓N;mpH;P]s_v4|i8Yw$.rL姄qEP``7%d'C6@YawI{}tmx  SqC3=ϵ+WVi1^%Kx[/P.
sp^o}ΥsDM0guG84B羸3k:yH(ң;EOqW(HyPW$;A#@_,[(s 8Ww|FƲ۟.UQJΜ=!(9eαݒSL~a'x\޳<Z Vrinqdvx\X=ȪvJu5 .u}4ܠK6<_^?n@SKYt ^P(q\d k2_~~fl>a˭
]\	s*;8q*,G|h|V8K$=ͩ;[#'=1 Q3/`*y=pHwD\:p6.Vy<,
rgjCW	ucÜ
4Ϋ5|fQM~Qs}ὦCU'GC& 0XK>{:"wTu|~қ `P1Fm}gFF؟<RPCWUFEϟ;^kj>\撜avپtu!G 9fuHdoAb:]2V9zlVQYWw~WɈu{6{Q% RǑS&`/5HCn&`a}ϴh@BZzʯK;"gǑ|T?g>pT{T*s1t,c52T>KDra`yB=uQ2 \aE:Rn^qNd57e宇%eU2Ŵh☺uOyׄt;;2'<Ӫ-A?Վ 4nPC$t w5y]owz-;PtCί94~̚u$7yx擁|uTϑ@qaW	#ݑعš)\EJݲ٩-e;xoh@)Pry#	
"6r))@v
w5"[/۞d%Kޗ,)\k\ݺsy_Yc	#8uHv{hng,tԕ>vo-uf0WŊp$Ĭ{ѳ/,!d'G$QKvE -;뷦nA|ORԟp rc+H8\|x&D,MD HR+"@숤Ano1S)6w
10"Rv'ؼ"o"*tb?_WCEjD>Vڙ\~Me[[9k;	{+yf]ݲ3ôjDBnrt[
֯񨭒}rȗ3EZ_B⢬q}v-vLY^HKm.ԿFyʉ m2<ө-'xzLGyGP
Q0N/X$igBMy.qg?qIX~i%ƜUxR
Os*ew!}]x8̟6[&..l0a*A8%QSUaMtdذRcM$Nz7`"29˄Mr}RA
W)بqπ@G~{|TZ(r$Cz$K_dTk\kF5X
qDȋWK1ܣR[jB-ǃtaGOHt*kcԽUZZ?Qg	~uK>]))AtbCfxIkgw׉g4
\<yj(.P\:8ɑ"8tq T7/R}ZlX#rOΘB#+j|_JNgZ$tӿWU#J$#}l#=f8ߎ꯮KZsKi5σ:7
t֖N߳&,U䞍W?G!)l͏y9Oxm]0J5SK {̠
6t *9TwnY3dnI<yKnxy<S-R'OXJjꏋ*Z	4}.?w=T#
 uj` wt0!&<OHGJHƛk;Py#|1bpS59bapb+]lEx,kqt:'d1ߜҫٿ8I֥T0y9žrv-zdo~n*?AֲB;;HE9XN՛&KيZy?9i켄WBAO>8
Q)<d˷bz1ցOp
	_SGI|Y\/Ք'8)7pUѫ^jwG[3ųJI*N8e5YV }yӫUJ?ct_iPj'lDu{IΡ8zr':gxQ/9N5\yDM H9T7<B@|pבo+1[ 15{|w)VۮMEԂ/nRJ"&Wm&(P@å;Y&cHfwtMRSUģv}upzvSyy5	0F/
ᵶf8J-U+Ck*4|Y}Au$f rAև7[mlt-gb
ytP	1GWu[6;ڨu˅eEzM*ȁۖN	$<FP@Yf
e+88)UZTfv|qҞ'Mè`?_~vZDpq7
T0-VU+77)|u+.-%]+Z@:ڽALVSWl8*Ǒ ur{k<VnO*IәE*n
#qõ^2s-c,}Z-Xg.-fblQUƙ$ LyѺ?;hn
,:nVD@\MNfd壳֖䒩lZtf9
u8.l[}:1@-8>{hLwq0iD )P!.+JohzFO8<Vx/uԴ.xkbb#*/6fѐ624Ca,6SwI.PF
</ءH5_ip.;n#(~N烞ena,dT*N>wy>k\E^4^B;чug䫇rb7aU͝Fvbw7QR(޵Gl|AÜH8[kr ]yDOPs)##\"+zqP(ir%rlU;q[IʮܭPݚ{ew;}pǕ*.$G/SDǉEoHA+p6ꚕவPf;H^\JWcAUsy\B>*)S
y]07
)2O+9ģ[=P2|.髊gqΧodfk7I6^/`3	<d}P9WUj7X?U]E~Tu>1钹UW8.T({+om`FZ]&qAf` 0]0
3t;wwW)->22
`q	~%vAiGUQL&N2eQiFh({m{շx\*7=tҰY;qL# G]rqLi	s%u̒ߒl5+\O0Hн 8
|f}l@$po0Y<PS t\0)UE
GO	C4R<P$^CiRqʝ`9YJ8.`~׻&Yy+D>PKt5*$nkT-p8d(S_#&w.Mi6~7.JmN)h ]&t="<Ҽ`>U]J,5|ϷڀG &piƝHV_؁q1mq$*a@ue".+m-,a6XդN>א'$C	PC%MϫFܟWE-r9^2oc& rmk=;[n^mCL:5ѓ*jCr	&!wWDb.H-.oeCumLn!j:$rYYѨ|	p`
UO|],~Mڱ@㿻wQop2t8 QNvi24Mp
+PK$T.mߎO/۫&Y꒢`QҨb ӹ	@XK,X}td#$kšk 2q~ܹ8ςQ8P4I=	)qND
OTaS H-]Ɨ#c6z[o9Ml^ry
۵
V]1oc_:509kiqw?z{VV	D+LKNu͕R}{!)9
m~˪5^L欀ͤ֐@J󒄋߬uLqHp>5f`\iޟ*GU2Op<
S,QK6{9תzt [P|U+V<;g$+ ۠7/JT&?;~zy
'0r>7kYƽ@E9+ kL|%|9w0UK̓pD~U'G.jW@CoCRmrS@$mq	Ȑ!]Wnd̅O4t!
׈\᥁LÂ>\ɡFp?RᚬͭV&3tºۑU%;xő>I[uP:_wRK`YGΦNU2s6=cGLփh
pnw]>L#_i_T~g,&d'BtH̷[hfP}x_H,'ˣ3G. Go5wy@o߂F'̼)5IלE<+!~{-ȟ:&@&>D$n^1l烴9관؝PYK;$Jw.dnoYM
 GBWn5//aew7x9rt~{Jjo9}5جˑ>H,ZҠ:oC
Fv}5ɚc-gvQ1pWjMT9b`wvs|98?GK	zhꑲ ,-ٗSQǦZ#f٢<%83)UEQ9רJ5l>1*UZ'%v*xW+"_USsT|9+lylJJCSCM F>7|}jO.T>/e˱(F	SA H@{<2XȄqd:YYoJ\@QW$Az\ߩ_&I((|g2H"XKR^vڽ:$󤢣+='γvrAn
ZJ9:spWu<ub	Z.bTߘ5g>#?!7Kpf8Q5>Wjx_*v ]N>bIn	y\=[NPKgDyD>.A*%,^\)'Z;ݮ+%F]\j%@;3gO,T{toYvȯcm;MU! r:꼫MȎAPR)l&7rqjcSҹ^xq\7\O9q>^Xr%Ft^Jh	{^y;c=<ovCv2Dwf>v"}!<K!kacw &7ۡ(C:_#(Y&+?*XRSSۊrm};;B%Yh :F ͰۭGi%tgM`pf$onn>	t!E'5²<}A[5_FsK'G~^S Z)iDHhrDǢH]U^UL(X4B.*Ia''kq44.pRpzVlO(t'Sw4TSNGw\OӧntvJxvu 
]4<B	=
auTتv^<<Z?lz)JЦL5h
jæ;4E\,ev]طI FjXkFW8wSĜSmwm "O@5Ґ7vӊ{Qv$Ao6-^BSѪ4;I>L
KLKp/k=]2"r*BK?L\ۼzUGIh!8]U>L.K!o]
.-KY;#wf݀z%{o)t5O4&8ק,AF0	{lY&5M_̦Y*}dE>q-AM?!xuys#Q}~ ܹ*ƿ]O=b١drl(ZzLeJzK4ZN^  ^Z=kھX5DjCul{Ah<Ġ}Rsyt_5i˰"	'S*A3H1iCԬώNe6?GuzeQΗoB˩"N薬gnvS̇Znhsz}HNNs>8;x~ypi8b}TR\hѲ}dQpxcO:LU`e19kRJr?۹MkS;鐢XJ" (>ywޫ=ݸͪ'S53yˉ_FhZJKN,.SWQC?4c;FU$Uco `ƺ4<0U]|>++S^ԟ1*.㜔t&Y1Xb Axʌp'3UT0ZSA}kg7:̋Cc	x`PRÐV]Z4&tgAO1ǹ5ȀjXz͏Òv3Vtk-цf3±x+"8v7PJ?
HB?*4*E	eECy'ѷ=j\|T˕)BEZm19`*2}^/}yD8ɴc]iN?
wT%ӹ;)1u5<uVG;ϐiU8EQsk	iǂ[é#`TE-n\sO|]>wշ<u<t⍿ZFT7$z&p G{sy+Sn)U=ǦdD!߶EѪ2,5\ˁێu"+̼RvZZ}up2=T%<
"OwrKƟ*Mf3ow,~<RzQ0r74Sk>f#yڼlcZ#?F~?S_^JFQ<sĞVXDlbgU8/G+
p;omVܐS]Mb\';U-ݡp ,-:>iBf )6:$Á?nt r 3DD&-ã|mjiN:!8uķPqMyMs'JWhb¯uw,%ge+Kp/gAtͳ:81" -Ҹ7/X&,N`ܽ
P.9KxEVV^ ES9ׂ9?c3 ϕY.bmbzޚr&3@?x-?43	쀁!rֻ/wx{ٖT^k7*4o
'F}X,5ȂHFϚYc׽Owg	' 3Υӣn}Gϔ>q` 9?4&T:J!t]&3\MNg.	i>.YٍJaa86urW-+ysڲ`n#ʝj'rZH,S'֝W8	8KGr@_țqETͳ,kpo%6I^w<jL?CXarSws[oj{"yi>{p>#Y/U"&	r
!	uU7r՚ZEIwN5ͭc9.W9>}uo	JѝW1"R9R0rrC-^NΒQ7*x
puɜO_H>i8 
e=NO~ׅGwAogDם
秝/qq``3U5Xwк+;Wo /q
9ԑߊjPRo&!
)#@:%TL`!\A'~I Z3[m <D|:hXT轎p:m0rMN^Cۊa<A'tף,Omp̡{8hˮL0&.8q= ^m?nRFqhPnb_ wT7/-(e;;܅x=Ek\M>ZE0
ubۡw ֫DɟHX8J2I;*db,q38q%Hm'=>%]jp}HP];*qKlᅠ;sSf\m/
leljƫFt{뺅!gU
˗54blrꜜ~GKe@TVX'8\S57[Щ&1?b|dڪLr@W
WE`\vW{Oo+y\0q^:bkC\ctpNI#\κiE "`PB&UdCjBNr:l۷6h,"lt.R~
ي랩
vEI-WKYtO.)s/;WF XFRz! mVJϦU6+!1W>n+h>}y6UzӋ:_xT偕qq	LZ&]R=_M&aps#ފz򨡢U.Z	OF{O>=AS%%[!ʝ ãUEpmwrKX9&Uܾ6Ks9]wvn퍤^?
"
 2]p"s+>$6_0u[xpH!lF%b]㿺5۝/x
P_QG]/GJP6~lwx3cmDmr^2ײ82uP6|@$oRZt֒ZxDp.\Mkl]uRȓUT6-&	N/ӟRӇgu޹4 y"r0j.wy}Zp\'\qr}ف)ڊ#|̑k' +1:EeƝW>[&=:Sk+5BN\Wm*kBNȷ:,IU\{Έw*~}^+ۚZz<Lk݊5p~Hd*1qHReͱ%.PP
x/CJ}	d7>g/˥z5Q@ݦ8@\vzA
\tWT\!G淅#vVEڥ6Uv6nvQq;XSMM}w44"QXiԷq^?RRY(\5XAۣhfNViU'c+=&BCLM{cK0Vta"(l -]3y?E^o"		
M:J<8J;Zu~9:+eUq. SU(L[PgWZYqޟXRٙvcݧ;
Cڒi5hS	KݴRqHO)B/;+wxwGq|
(aRQL^tMx]b TuS<z:Mn'Ν
'(CR͎sѴ& πGcTnC~9E&D9JkU]U%C-[y#@hOѝk}ݘ[' ڈ6"/yK;9kwh1<QRIǸӆy`ri6oזC`aM%'%iskLT
Y eV醓m_!ej|Y
M'5CǨ@Zrz@hSDk8d`>U񆠫m*/K";	.
W]wCeW᩺0'nKws۞ a9K\^W;hzIew_MjQMw;ԄF-ϥ;`j
d)`ќ{oNvu7M1KȠ)%}RaUͅzyOO>rL}{v _)[tn+ijrZ({<xDkTpf1V[id%ˮR><b*
865Yב> HSAֶ1$>
Lʅt~^h	ExҭhQ[iNr_v*y(()_悮3j3t	|ZpiEJf-S0E e(7
L)+ӻuɄYZ_v-y]]JE|R.'^E=28]i1eCTd٨ۏBq:d˰-+apdCge[ݧˇJ}]swc9K߾&@hϨְa

{v'i1`P'ʳ~En'7tK=
ჸs/c[<z=3e԰QOG"wX w,L50CKꖮ@ŮOq_sɧWVhWLrIq4`] 4D[EFծd檖E&={⭴vC55s ]VWb2,S`ݰ[^!VQ籛_S):bCZe%X#(p &BvT+j
xQNE'B-G
D?q!-2w+ᷤGݿ'DrA(<κ6 &wb*n]0uH|\hϛDEWxD@0/Dc)S<􅋏vͤ5wb55ȖH`z
vÎ`KL.-^Uގ#4b
Ȇvz"P\L<EqsCpR钰od)EE"MX:7vYE.upڴeoa<>i?1L/Íi3܉wevgXI'ϤvK
F&'A 02[8IܗÕR_"Dod¸SCWbU-B  % Q<J*fțMjQKs
Yk|7kćtzO~IUD=Ԍm <(c* $qMyQY.M+ax:ɚ?^|]IjKCy&4Qi;0
>9PNԪ uhe9uetfs9<Lz
">M[1U~at(epvV!|,i7ɍ{rѤ/i~>i5H؞f[ 0ȱYFH\0ѩDϟh0X
n-> [J@)PIr
z?&	@@|"8,` Ul8nW8j6`vFc]CGblӋssŶr$W-*[7ԶCRʄ)cT#'}g@u]$yvpT$ԳP L1ޜU=okH}Cfr.I];<ǃ$^\2"I*hA'x Df>~;>uII<NkM9ByDgiw aȠOu3G2.tHR',zB\LVzѹ{GTb]?b۲ݝ:ʳ,<
vٺ3?U/w^,x'~rM\	T="NkqKI]ahD 嘉?Do؛Qz$ 6\Sb?rZq4ܴ~?WU$Coգ8K.Kϵ
/]HaX(6GswiD	bT;C||MuBųTs
څ@AJ>i(W8ߗwю(=(?U&GWJU9d	r*_Ky& ӏ,ehGȿ)Q8^MPWU=#|ES˄\F5<M)wԝm^pKS st:W]*$:Ż-A>VKegӬSEu?]֝<38mVֲk$3Wx\T%yqZ!l`j\.N&]iTW"q˻[V$Ǌ垪|r#6U{U(=^l|Ui
`{,,roWۙ;##; !XʲYoVbt+=g}TAP
z#]5ॻ !DB
G╲_qY+=V~, ~~(vFцjXJ4e'9Cz+$sԒf"̎yџAr,~賓ē<ʰ8X Z[:(4f{zJ/OM{TYߧp
DMEdg}T@ɍG]c7UݿOk7caRpǘ쮫$C,DY$a]4*|1
CÁ8Pl!q{p}ՙ r3D~$ώGSoK/Pp\@WvK;>|P'=R+SڪQ?cgS GYB(Gh-x(=HG[87Oy-ɡ连T^WQ&2ͩTWx=m>-tkWX>VSH)gPeߵ?-8`RЂCedB|@@=J&џ94SCΈJq|1xz}.Xnie{`q&1<_'u&G)ђPazg
Nu=O\൨S.ٮOsb.Q%m 
py=y&!@=G*1eS[zط׭miϕ ip"!걜m:	 ˡ. ~eY6PXvEQ_T,?oW
\e, LS۰ޥs4Cr'.)u_9CpIdqA/x9Z;#.]
\*!?I1rqiTHԴ
bܷN<{eS꠸[}ˤ\̷eZq`vfŘlObCWj5| ><=ӹb?,Ao%tWO:a	 yti7lاb]JU]NlX_h5 :sfEA:tx!7%㰤@^%0(X=uGfKe)s=bع+9#Bpk*;

/^hZyhP2e'SuM8%r*%'LY܃	"
sPT|UqA7kŚC]#bze~!c
8ʓvK?qU^6оXrYy-'Pw:[@$k\}{ 2,19Dcu/57wmGC޳
\(1Q:m=}fI9)#z>}mǑ_Pct6*BgsEJptv
?Sp;*^x]_zc|_uHtQW
[1gɷnsrR|;l8cu>FS N:/7<=PKdNAdx5(Ħ2T/]b/|M!<U_-/E5?=%h2:pz ̭Y2Qt0+EUQK*) ޭ]h< 7nO9"hC*Lp3øK#@NU:욼:zgWŎϓ˵s=v^c>
o -NaA [nXhgG)x_ wW&m;~hEG PwE{]p]qUv@ǑDaxΠ%eGG
)n'ƿk܅(\݉c$Ķ9R :sWA.phP{[wd4ʣv 6<ւekUP%?jybrg"faR"YQ<{nuVJ6*Q2zC{O=9<DRFhˣh#QpD^R'ܕբ#[J63=<rӹ踷Rnut0%qO?
*ߗSwDTJt^i9CS|Ҡ,נӠ:d9oRg8lC#!zoHv~zw#vK]K2DF
ed@Қg3AU%	>e˼P Du-o5M[${R{^K}ۥD` aaPx
JVApgl<i;O=VtHδ<3t伎{'f0/! _ n
f$Q?&9WFK_G u@c<S]T:nD[O}j2ʔkAML=[G6y옭S͒'u5>p&yi3Ͽ6W^N>:v<K e$J
3c!YS:"5^
{dAjSe֏KqR9pn_.EqNn
eRk[{C+{کdu4~>g
t@59}M
P`}rk\tiQ9Jw:<t$g1$T9b@vZ$sNG\NLUmgr5Z
?
l6a'EL꒑h[txtS#t;?w0î$:3Q[c:GD+8V.6v8޼2\ls<rKǲ&ͻA45}F5CT<[&Zc0͡lGuhs>..wd@CG
۸^u9 -gjyfZ2OO04wogx_cZOg?'R*<u4Z}$<<d%#ޔU  ~ӣ >ǈe&=<OBS7_frS_Ps~Kh\Sel|Z+Xw^	k;&;m	߯G+x>\n8[I[q<A
=c9-͆?8mCL*/<
E6Q隤:]*dCГ!E4ïD8=cn]m`ê;ʨh'@'?_O(e'fz[Veul5z՟4l Yi38i;sӪtyNR5(Ș+Ǒhveos+8}uFkF߀3Vȗ~U)Ox5zn65	dtǡ n,Nfg
FVn'r3͏qBc!؄%S#1GwCҨe Vp/>zQA	hV.usL˅K~3͞xP܏gtxX[&R N~Iomڑ U.!IYb$Th<򞴍mepf.D|h<l^t6o7݆aK(LM`UCzO8dmTA.-u ȩ&D9T%U}MF\`?8Yݤ5Ezx(Y)fWP仈z4=c;>IBym?nnҺȑڒV`ͣkGz50}S-9`t)v&NS8_*+zAVmDfSqͨAP!e%&*V
t8WgepѯW5(hPe~5scxi툢G{SoKI`[-ppI 9S
àAZozT*C2޲l|H,pճ~@$Sv%#l
%hCK#xj:/V	+sɄ+
vx=]Z2r\NEU>@<Jo]+P=NX=`|ƒ;pbCu.͇x,EWV˕nE[&?2fVOs;j~Ԝkhn8Ja1Hi\u8JJ 2Mܪɣ~OVTsU~.NΈoYIKOG1<xܪG8#kŸ9WLSvŦV&7Tԡ j|j'u$g3.zI⠾v޷@$(v5
fdn_/
"J%I[t/]v[3<jP"BM<.(,sCYWfxw0Wr(Ty-[$$77DȒ?5j?WOˍ8y3 K[vqS9g"ìv%tsHKId[tJc?G-iRDp:uJ"Q;1{E8Tqժ`~SSnD8E[[}wwsfK9}iaW}m}}NAO3"P
sp$@ULY]B;@i(""Uі;gL҉~yy/ߜzo%ѕ=z;J!d՟[$M9zumH=KH TM1&>p:Jn9Θ<7[x2W(]k6h26s;ೃ7$Gla^F4~ɎF'.p;.0e-9D<RAruVP5V$z+ZDu@&7߷l^+α9T܇:ؼg0*`!4l5wZcLʢ"^n*Qs
Lv4	SC¸S?Oau)u
n\nw˫]Ld>KGK$o'ַeIy %[?("IF^m
2P(LY>wz]"8!E8-*8eHα^_ҍheظ-np>Z#:cw/RitA8[N>s
.wmٝE Y]=GqZMPB:?pf\5 "  zʟtwku_.3!ZH]4~xT'<XW
:J_67FKCvkpt5bɜe׾RtD#3͗kEyW+"+CjSDQm"@7v
ǁP[ݳZ"^8gMH5lf1d^^WړY9P0*4G@sQ{)|}n&ݤN0<,?jWDȝ+Чw!r^`S[(Wہd,ы$8?Dm!Urmuڱix)֜2^ tj|mc%jof.q%"v6ǲ=a?/ɚ6եuZsE r޺HN1`$q;&ybT*T ר7*%Rj]jMZs;pw]O:eemOR3cM'ǒ7OtnҩgԽ\I}ő]>ZyZW	(d8Adgі[=0~:/-^j/Wi[WEg7HVشKnaaY#ΐ(}l.p*VO/ORo{Lʕ{	w{׺-'ґ cDjO`HҐ G*ql:?+:Ry*?Ŝ~Qo-Il^/x~r%AV<_9?4ȜUqn+0D4qğSGć)֪Veqk	ǐ)rYnu&KsѺKnUSAxNt'ꙓ̓yTU:c@`o  q}1RtM͝j}QÞVcC9I?A˾CwEoĊ09`ZZϰdb'k.2	籋zF~\J2[_gl%~JЙg~([fI;1E~=x.Coޜ0$<8bMoͣЛ8rR5]"3l9|^Fa-ۑ=+Y fR%#^lG6-2[MjT}u؀zs͙tU
~u~^kЁ[}~/?ƶb/C3Kj U?SdcFM2ݥ<_%7:7Z'
vBlǥOѬhݾk4Qh VTfa'ՂYbIVQ~hU%Te`ԓ
GXs<sa
T*.
;2wvz`Ŕ! g:iQyPWӂާ
;6vxjx^UA 1)"ڲXǀ^f[3v4Z:IΟMxcMPY}?&'fy
 jO<SݗD
hm&O;ZL:Q4)f;NIQKS66p8@}ݽ ԚI\GyO)9}ъ4guR-8$5;zO@AwRYrnպQF.PIArOըOQ <=|:Z)I!#0IME}vVm2LDP_kM(;AEaW B%?e׽i1FȪrmvŭ #])/96
k	N҃Vpk5@P6/}Zn`QKs8y~?+oNf2|v4x8ZZ_4
P]IXx>kyJ{w5WER添(J%rbZ
N<L-p;j#㮩R	u9]Z
@ŢϜG%m;V-{AAK~wDDAWPPЯ]pASuiI
8vEOEz@7t \YT&rKBNIHB(pwf`}aBQӍ}=o#CQKű3G'#hW^;H:YnxF;A8~-|?Mpf >S}?; 
OHbjG7~h|{{\O{<:`[NˑHcLF*VjoJ]DKS $3|7x9u%9zڑ!Jui`e;;Z{kИWyr4=)W32S9^SE#d<9fS6W%w@B&#7pKiX|R:y?~8hFV
J&X
}MsG'--@Ƴ'>-&PTv8ӻϦ  "V+Yoh}H =luL<og|UUC	BpʒOsxrڝ#LFK-9{*@$a
(Zh'PV$xX }-QZq8,ù,jPׯ	L*!uV}%$-[H|BP lR!X4>vWG{'Ӷ2O'Q۹vAA-
m&.N!ihuoJZ,4ꚳ}_[XvҠ*	T2isPҏ/܆:=B.Avv{e!@TV2aSAgzE_t.8Afz>Ձ_B.{7qLF/Ȉ4EzIJۯiȹm;Bo+шT"*h$(gE LE1=%9:QʱO׺ҦV:	</~^*vdZ$7KzB"F<;9#B5{LQs
Y<BD˾UQf"=W^s`[sAbYM3Vj43b|`gBǻ(_.2QJva[,\tH巖 !rh:;=vB"208ddf[Wx9
wv>2!7o^۩3 JHkрeHT;4Β#+iwip^)ABZ_SS_jM;40@x<ORj$߻I'q@2M>zt27 ｐ[[uHS,k:8Ev/)T)6/>E_rZtU'8-{nVAgoqTl[%k?_w9o9Vq
F;E.p.,Tg&T֕V> &rW$sn(C`7ûo|G-	w.@_W;qչ W :TncN9n#0d;|_6XJ.dSի!^ȜmNc]NYhWK-`UcL3 HZnw60	ʅ Mc%+n)neW-MO!
)ሚ[el?]kL!W*OԬvFnхTǀǮ7hDQ!)	%Ȧ!S=p20k~VՃ	¥tܡ4C$;AWt]n43d7n;Yzh2ՖI:yքMa`I%G/r `}$fvGwp
 "^nd
S&@l~Z$3[J#
{a]fSc@&i9b uC`(Rf$QTQtwUCr;r4Uf%#ttRCnT<Y_wvYúo)-J_n-w_H9tvRrU~<Vq-y|%g[/WJV콏rpWC
ωm!XEt94]6UXB?;<YmFE
0oD?W۴<Wh{Y?`/`'\T(}ۃ	ETHjXvfŵW\"%L9kJEƿbUq޶ U1Yg$ܱ.A
Է˒dQhDw:G]"0ϐ!Bu&g͋
*nF"x=X
Ul>-T)@Gv׭<ᬕ{F8Qya.Z@LTA
)o>0m2=5o]r`tYV	:V7JJD\EV528p%lo98BX@ip"0}`\R^۠S5ǬUhT8$PctQjQ&ƙ"rIT}rJsJAUGxmp< y3rfo
xZMXV)^8փDC&μFU3xkmET=?BDNIպT,f9"5Guv85 {<^[xXXQv9$G=븦o.^A
rr/-'zu~sjo|;ڽsq/oW9ʓ"
H(]w	DGR;VrMMG0wOٿ8V^LNןq8^C>t2Q#ׂ=I/z?"NشZ/-pwҫ{"6fպvȠTcLJaS}f In=RU k٦R6i-
PVx4-R^7jr&:vh
эcd\O3	Jp:GihVm
k93M~H|.K#0 !
Rm?EkPK뮍)Ezq5Ѿ -
a羬v\"<v	jDSc%S)VV8OѢRQ872IA+yx`|rTs+垅3|5~S
5 s6^)1hkgQ>ys:L9Gwtjy }m 4-pbo5aT]vp3o#~M}JL90{g
'Ͽ	
464)d/`D_U <m+ʰUGNדJFq?ݢ!t5|
w\~!V9Gk9=B:zwHt$+Qü+{\Cr孫kk|
§7q*Ydgwݐt1/Jٯyp	ZՔa&n9ږ0Y'*&[r_R{f(G:HYd<i]r'0}Cq"nsX/[1YaߒhC)2_Z
>*ϭԠ@:vO2w+o]'pTȕsaIҖoJ/Ѭ|KnAvBAP0C\VU嬊QxЉW#}Et#lhN<@x#CwB,8T8%<y7{b*جZo˫TQLlL)Zw2=qT %Ѥ]L$[B9!EdI?$qW/
z}80-R:aa}X;S{N9 ѮMH
KU
ƹBP\
yR,G+` o
[[=Y緑x?F,QV%/hp*&8?/U\q0HdS>{|<+SQb2;w}cM6-ʍ=B[5neznv7:PQ=T0 kujp1qӭrENN|AO*W.U4kñޛ
<3$Z%[ePf&z\\W~8mA1Qh$A==QXoJ+@Piմ܀{&>'93wk*|.gNv+uAgiJ0o=21A4xU$Θ~f	W[G 5׹(grwkV
b`=S,~IG&G?$K?/<F
??рf`h#~t,a:]+C\\Z{pj.pYEV#Y8qDr%T` eeӻyؿNDz**=B6	íaS/zu*#-<Wi\$|WQVO,z&f5	<nrӖᆧN_8\ɴ$Ȟb@G@A YKkH]oF:q9Wfpɣ=?S2N	٧L+G	+~K
Rg>%yQib2 ^DK)( ,/JoHZ⩵5Ml8́rQ.bA3bzNOMXL _ـPC-܋w\:mu8-j&zIU:cmKW;رQq (eظ)%xuS^::;/RdW>~,T$3XX8
Z!g,|&&PlLCP74S7tv\t_M-wVG[QIw	c
5f0wwxD>tg<&n\ 2px63
''\3ߒ-Nf\uT̼}G88Us属hkJ"gUvM	j=?0Ij*:B]MkFБ9sOJhAT5Ng)1A@(p1ȀdTSNYg)k}!"|j쒪x?W8᢫ZiCݎ%q=j)Iɜg1UmNf#]7昊oТ`F&rwhv_랼 /$8BNzG%zivj,]N^g?mppތ MEO-_ξ1wjrnd v.6:(|HޔPP9w-5ճ;G1ͬ
pTm!. {;/A(p
,~v(&Na"gBG\䕰֠7ٴƨ26=S/Et&Gem# \HE`By) F \:42+]2t{( Eĥ*epfHg1S?S y7!Xjt3>y׼뜒(u9@ P>jݷY^}F5H@B	imA-5gl8;4
 qN-x]V#Uq32;OΙԺRz-Oq}ةT/ NwÏzL}?%KHm'{vS|SQ&>lVtHK/bl걵LF_	dWV&:]Q\TlZ]_Zi.CF^_'	HyFHr>/ADf	'lD6<Yu~|pm"w:蹚nnXPu&5Y~K_giTD]3ӛH[Cjuߘx/.t:҈VXzR4@.Bj=[h `jV½hURDx,=isP^Rٖі;w$ҟ]}OFwɊDZގqEqhN h'f^%̋{BpYf,EyQJ *b'F+.TMTv5=&:O!TZx?^RPwv01`s(MX&p"XTREP7eh8P@#5'P7PfiWhi:Kvu(p.:cHs
~ngr9c9=8N6E΢A
dv)j_th`\:N.nƂN$\:Dҫ+ tǻiCD["ު@fA~UEk
M鞖&Ggw>ϥ987#vCIISrM֬RvyMsGR?Ė"F870\
NVu]$a5[Oֵ!aqާ1)[;']ɇ;ʎ4cn[抚N}MB/@2ɼȶ^G 
}z35g| (>o-YWc<>TfSa40!3&)AC*6t<˼fɃOKPZig7
F5';lGnՔ5#Ɋ@=d>z:*1hgSCƝPL9rgHZ~7
O3ma;mz~g9_0zӸI9-+eUu9oI*vN 58 v)koANv`T.JD~h ϝ@9>uugAbCAx ֮9
;@SaK]3d"L~p YB+MI|b~6%HMdHTݍW*)/DVKޯc~&2o]]W+I;x7=x/:W/UOr昪*y0.y$r.7p<t3BKQP%HwJٹ (YSvQ	j-=D
4,ߧp&]弶z-xeBk*4'=0Q2hVoN&~ďCb*M|d/L,UUHg%xz^¥(7e!.Lͷjq JdnV@;Rs.e{O:x6_U[Co/m[ĳY<$D2OPsd
21-3[ӡAv=O]Q} sUU z>?8VMILKP;/$@n	У6H7L] i(';,-&qрaIO\jrF"GBl329Iv8\u
kZMm6emF:e"GdcnJJt7"sDpC5Ky
>Ֆ6qJ%/іWD{~Vvpv!汓74V_~ؒt8O Mb^Y=t:c@v:*O+p2uTK^oeշlievpC ܊k?p{v?Uݫ%]Q-l8 ſ:{;|~(SNNx'&_8ՉIl5Zȿul`q>:rEEA,9:!PߔmU?2~
˳nh|ŉDI!<8l bR)SwJYho19
m$Ȟ!grbؐ,I;;09eOWrDOsm-f~;Vz~UOAסj'OxZ@mU0ʎkǾݹq'Ʃ+ՙ埔KW5ڜp-RG%5+ߢG
, uWC7cM`"͛SIeSW tLog"=I*ZR\RSpvUvhd0'?-fszyǖP
N\/tα
Y*Ԅ}	j-gCj (E|ɠGCy![SĦ5P:eIwQ'rˊ	QX}	RX=~Ay8d7irV_37  /25-N~HI!bʗr|	SiUfG3ZqAxfIy k<STv*}ESU%,=>mX|}Y֭pkg>%|}ɨz	=u=9cՆ>T"@B;Wksm0</z
J+
7G{hq,@݊**QspmkMq%N<bk1|rw3c9%<:9'tFwC*m(Y.*x|Wt1ϥH*}$έ$vг&1²׆]>mJtA3N^gWA
}»Ed~}jD[×LI\Z]׭%yOK IUϽ/=B):rvૼ}吸mO!Fs7Yڰ')I$`_eCوZWWpCu6):3Z
~.SNLM>FBf]-!w6E_y7ľ@K~v6&1_b|=iÌw͔ժUxjg?JBf2c9B*hn~E~s" CS-\Dy׍^l<g!LN@gTztXb] j5T:*pF&JŲnNK<TGe]s1Η
OzeTz4\".T$G6Sg96t^/.ӀgЕf⚎w	&6_0vU+^g*lF(lKܾ^H</]:YJ+;=d-U-h?Vsfsk<BQOl~|u1 r;ʼB_OܙvsDZ;B ؁ӠҖ&j
V~n)oNU7W"ˈ5[6iYgQ2_-2,.ba!ѽo(v:;jJnWFrR?-!*<9uS^3<5
 wWEhI>w{v>*NrǶNkHq_vպ-rЍW88jK\ilŤ0::ZͧL!l;4|nߞ8і.-:aķ6POP _.ewBxtY΂Éڤ3s#C;8c2p3a Hmmp17|bШIo
6|#o6x',E A#+>
Ruؾ\ ioJy@x/*2t[ 
w	YNx6$v6Иiͺ+н;Z3TJx:|qͭ
IUry<"*:<R?ojZHj[qݿAD(Խ
h#ܓg
lԙGH.%KMg9*hdEeKhUln9~wWD2]/,@kŷ@Z{\ ^ǁs_`isT2w8V;VlsG#TnwӼ|&`8ZFTlw[a#ΧR,ouXXW_]V_onTNp) .\r%b@fZ+*c+	|%	\B>Ys@xqr`N R2&"4 LceߥY٠P-uW?=%_%HA.rsJ$S7]:eQA\<ӪO
ݲ@5.M./CÔg>47>8[;ֿKw;qk9L}?\4 )RQxSݒM&{[ӱKYAL|,CJbFG@-Y7zyvAV5IrJa!IvgUr"OThovT
p
F]6-(z"p)>x5Yik -<qӁ.2"i`mXO(.r)m}nAUoo){E > ?r[9nS
cgox?-qqc[O!tEjza$dG'EUȻv߼=x\^&l}dcT: 4x%B2\Y\NE}c*f
OpEL6Sy7g^EQMAۧsD Z8voK5g08Ssx4>q 
/@Z]я0bYVp
aiqSLU&gL\䣋a'$|y*	Z\.#2-4;n|uٗ䗤Pk9^)H EG7"g<]_k6Yޡo'9"P%)+a7m>_cwq+&4!"G*
c\Käw!O9JlvWXju'{A\zrA
iᓵo:5s6@JOޅеjYh,
sVjZ¨%#VZ$L=f_&kC ,Όv[W+Op^0y h؉;%DS  hW_Mՠyk $Maρx@ī\M`IڝAmp1J" Iww?dһotBG7'P\PF}~nܡӀhZH|zzv8]gE.*ƿ&| zI8\AEDZϱlkcܘA]8Ԋâ k
l@W\S@n+ l;^tkZMב('TP%tN$ګ>>H
U3ykӅ<>lEK45vzMku$`r~3lgx79j|._s|.<B_+}%ESmm!9pȳq= [YW5&]" k[kPǞ]7,<
w8!M%ۢ8`,3A
";hP 8ml)*֟	NajE%?AI2~j48ɟȂڴW]K[[Y4ڮ_Ryl}!n2UDsDs)O9yU
w?ʏtrIE8+wtQqZ8Wm4Ne7yA+ǰ|o3KGAb!O?Rw3PEDuфK;fNc>mglk]>gڜ6]^|ꋈ " XieNqEL%iC+SJQ3i:jr'LB#ɋGQ+g
 N@uQ?ݏA9r'8V-W%68S1<yg;ym,8ׁet4K=岔}T?Z/%dv"z*X:}i6R.*G3{QvBh'Eёu|߇6ްGu83smh30PF 
-b?[G`XŴKB0O;<Zo4l7+Gzڧ&f'GcNG]IKx㯵'q+<E;z܎=D[f}s٤"H2@<mVr"$`?򒉝_JЉuvQݯ_n0V M+:i} qqu%x=;ONv Ptqu/2cjKtU1JqM"yi6L/={H+K~}?{QFN{^zw#gK,nݹV I!H_~ԙCfli;7՚fA'ߺ7ُ!>S{hpl/rl!1z?/7egFe e(\\zyk,"o:w܈Ato/$xvWF7HGr	m&{?ΞwCFݲHB&`Eu ='QWl"Wvwf&
0$ImǶFjG,rxǂ In|3]xV0
Z$sM`ˉld7_\N۟5-Ù׮juzVMϪ)WQ ZL9}J XEuh,)q>w@@@nU>Z! P_C(|qz;  U2;UFϊB擎5$ß7Go{-8̀RvI	WaSuȃns-jW-<jĵmZ)\rlW餽[_
hDJvaK߬p,s\9@THHҒpա<3w{{MNa.ZAw})XxM
'[$tqp\,JPS{mz0.*_VHvNUu6OGo^E(OikM2U:b<:G78u9IuNG:C@!oiu\ėP)H>ȯhiN@	BBr'5GӝM)Ni]vBb6}+1_du
j#?lI=8F,"ϼox]oٚv.V|V:l[ﱪ*7ת*:KtjKbs@dН %&o	wt
m#q
T,RFܜqČA/|75ė8$:$W!^eLZuQN*hM<!(g wuT;1;Vm?ua9Fi)I귢Վj s)&E	'Զu!YyEC=,gW9KN7 $
ȓ
[gxǆeL|uyg[mKYmQ=Hj}Bdvn?O+%j.>γQK# FnSKP8`|SY"59iW6"ȹ~ M5/Y޸Ufr
*JZ'IסH@KKr~<&^IG5g8CR8ڎq7л U>*ߥh-hB\%G?`l #[jVv۔(;>[!BQ˥Ba.Z=	GQ6Sks$#s=G<zӖCiF/Mz#9TD
JFZ8O?r W qey
<F\խVNLp>*.5/W~+&
$-B)5.'8]"XWIbU=%!gz=4xLP^y=6?.^=hn[rt\79 cZnd]NgVUVd -{ ƻGᱹ~#gtb~ZG%"]Ϯ?)aXuPXn&B%i}ꨪ3awQ"qwr_=0J_E
D
!У! 
N
:	ܭv$-lC'-q3m_6`pŌWeWpprhU)j9nI쯦JEmKˡK3'f&kF֢oNHrRA+Cl$0L|]cR]!1B|;H
 U9t~zܔ/"#Zf)wmc&)gKޞ[B\]!ӛHͭ=GTNttucȺnzy(/iS-hhl=wHxb w	G4k
/LY ܬWmrbO ^Xy~94G- $TIpGdyt]짥VI=HIuUn7X;M8}u
zVC>|
z:o(@s6Ȧ
3Zw NV7d+޻d)o>Χ89i:JU>=~9s>g.lc_$n)#ܜL4犻,n1`8~?\OWphJEW\*Xq		҄
_F.K]_R#Gm8$q8ZTAU sB8ǋ8o +(]]z#hghJiG朋U 6xnww
'
[]kAr\͆&|@ЌU=޵ڙr&Z8>4O
O0EIK-v9}f9c]z\6.x@.@Fϥ	IZEƷ~1ToG$(ȏ"hNjKdQe.CB5z@2\pP$tX/i9ۺ. A.SޫM3y6Zu~sվ(٬]5
8YQN|lsJ{<ġ'׾Kwk[;[6Xb_]lX.̿ޫCZ-(R$8IdnzN.(
%$O'`;
Е(jܴ>!n2I}٩\!QVhF(5w-p(on2zJ}82"5k[/LXtSDώ'
>b<|]V]{4
:05.:	@z(2roM4o2*	NV ] *!u !|iiw;mCk&;DxQE׫ˉw.)Һ)[&]CU#kr75ݼr|?	VJW	>U'hƦynCp{|
E7ǵV[}xi\:O8߸^RTe$t.DTb[ܰC-MI0[>27:0ͫ?®jo]~r|7p͗?e&F\
O;tpoUJ#qvK*3}YTE~k\/ht7'G
-;W@Zu:!8
կs?/!O9/-8xQm[oG=99t弨㕕U*\t_ǖSHW,ZL92ڟ̧pu;"D7G$A~]$r58Mq
gNev^p[sմ[8;;huv?zM7LU<p|6_u~ʖ2%"V5t!:6lO^
?t(:įP:Z?wӈx\U-:Bu\މb;ԗ9>
 /b1QᵤlZH?'jy$`jlSu	aWTjo!+U{~|br'"ByHKIp{\6gVBHtAFr5ҹjROv''5,34Jl7HqB6'4}U\%ӊ7.fg~s}Mۡҙ]Y`x2!w9ȋdqΪ OCGx>1GC]n90p=ecW	9Z!|׸)	륻Bc8EJϯ$o[[@tbӊ	,Y[c\?F-9Gb
|%]
Oegs-v-{:ShoRa)mK@l(GZ;R \>#.uct7;{e3!p|xRбo%ljQM<oVV׳v>$6H\Z\J9p}s+sos( -
~pv@,QyvٽCGx顪:L2{Ig	UՅ;][w莖a}&Eךg}Mv}V?**$
BbbzPNݕ"`/u
|Bq
ronFKRbe׊D(Ķh|wdz\HJ#AUk<eۑ(aV*D|J`g^Qr[M׳'"Ϯ6`֯?It付`{<W(:[4$=c	Y
6sr[fa@HM?w߂3oXRVdo.Bzt5*ߺjNUEb89652jS->Ys'K'%k"ZTA͙+nѾ0rsP⠰ƙw\jGI
O)?᝜7 A"oY8FwYl뗻u*Bo%uId`]rl=)R@֟nRR.il`+\  <YEZ8	_Dq=5i^,@V78TYކhq2.K >pYib[Xښ"US
<㗑jf:8yWv)0	:xo"msɝ\5*pU}+e]7Ù yp@ꏖp,
$?ч3f]UE 	Zk:TJpݚ.nqL-f-LmG(ľ!t,)V{ί۽B|[WzսT.EO(o."X:>Tq+Ѽ5OԭcVZa(QG#S9^oV!ԎF5Ύ)i頾[նm'	|c#Vi@ҫ{Y>BQzu|?I3N?\3ܜv1Z\}m?<Gy0UpIO}po~W~C
)ﵤq~|w?gD=OjsՔ^G]hdYsr&~WuM>{&ퟖ-fQOI_eE NRtUW?ə8QdR-
Znk
(fKQG"VKf S*$;],>kK3(. J^RGV;S^QΫ%d&mCV!Z{+3<n2cjv0-pz1+BKWQe/wnbV|;^W--f>`;tO7Ƿ.bWlcssP9jU5~Qg'ѱ j^p06gxtb^:Tj؉dj4IKaxvsIM<v\j`	Czh<LW`*5j.7i0W?28o&+ 8 j~nsvmWAm[]WP]^gZLMXvڢ#y|J:8p.*b.nМaz4@C n"[P:yp*]Q8{ohJ@=#nSkUNc;eYv 'ZR(h^8	7?t%Gyupe7h<a8vfRV)%lXʴ23۵l=nRsr+
b#p,tRu酑Y&az,4g\C_m~.>`k땽Qc5p8_om[w%|up^G#XH.;;VE\MU:_ͬӖ{.msK201(J̻5G:ќ:!9*N@JhMWnT&083;̎CښvVIg\z?/:^LJ?GW>긠uN+^)ɺ9La[R^K
~zͼ+#i[P}ml=yXO *~2!pV =rLN}">*z@HsD0iNCLk7<'Ywr"{>4sQU:Z埴V/[>45>bL^ɕ_fۦ#:Q%zxH W݅z^;/9u視a"؁}Tx$jA)[_r\M{],6HPh3aMpA{B+{nr ̙h 9	3U({^UT߸@	PYGȸڶ H
vpG4ِ7uqOp20tC"4"<bM;LVNelʙ?DŅy/jhMu5Ýy,>nSDj(f)2lM߇&[tŵY|T'|8mM`eDT|f#n{/fr-CwtEȱr|-N&ǲ10xk6)FGwGL }/ c!~<ZǁudCyU@`n^bJ 	_$$]\@3ZD&`hYIL$1ͯΛy	\pM.
m
๗<L:\A
P}
njH?KV0G0wݐH	ywS "yWNT3Qk##ƥ@pI
kӣsF%H!>dqP ъ;<[Gا[6Qrc5%8FRUj;WYC.
Sr{d7s?W۲(	J/u~y0V329zKQYKAǍũHl_Ϣ9!H+_(Ud}.B!̣=kTnf|A^+ Uܣnߧ*ސS
j6	V'{II9ryLy[zUQI턂Gŧ,YT#PW>i8|B<%9K:)9aV\'Zwc:ڮG]OWz!xQMى }73@HlSB#d"7wg%h,LvkUZ !LGPBhqN"Gg!Nf"+ؾ^#C)N^Nnqu#|imA^PC}JNQ`gAΏ
ŀd璠x}:YU2L'qW&P䛋Ntd#}<v>Ϣ$9с+>uW[g%ϧ-Lvo]i?<ҶvSZF~vt}hkGw@NTIQ>ˁ̷YYcpiDa'h	jo	婂8=VlNA/v:Rn'b;Ijl.KU=Kf>5eܤюz[誼]u3ꞰMv(,
R=QyxA!Ve(Nw7|y:rZ-U[Z._ ߮,}mMU+kpra]q@CZ&^z/UqSЎģ5/owл!9Ct4ip>ܧc7ٷ]LˠG-b/Y$ufُ}MY!4j&A9+
CggAbT?-W&=<S6YrйOԧH#ϕ)ixVCGW#V;ҌI0$^P*D=H|'!Zu +O+^@B[RB\V&Ŵ?$L?x7"敦*ԝr@/<fBXWj6jT]6|R@agӛa7ܿ棓8
yPS]KhF7םw}mhE,_n9I!vIڤQp:*ȳ3w.rC-_kĚ/:3e77hqDR:_9kbR~m)rNiWTu!&쮠E^KoGO{.o(q}f2p#^(GXWճ>U$8/xlۃ mGPhw[~3\Ee!`ӭMnE(511*-!%
4ַW^TTJf4z*Jr.kym3-DenI?%ݞ<xYBE>n	T/ekÌH.:vhR;40H N|=HG*9cJ&a/d<ζ7.}?u'C8=Pi}i8ꦵBYNkaJ`
 `wBA G>g<%{}]xx_$,CI&Ag}///UsA.iYv9a/yOډXǡ& I	f zJi8$DG圛K-S"G |}v5
|.]v$䷫£n
,rCZ.+Y~M^^i|^v~~[X5EЎE~4\
.߫.V?
ٔS\hW 
$'a
\ ̰2T&TA_	IOgzabYU44l£8,W
gåះ2i9,z&׮"58	t5dµk]p iZq8uGյ5];BP >dNd.bj,S9I wUH	!vꐊULT.Nk)U'rT
G:Z9,te@2H*:)+-'|>}y9hD??灿͓49R8>Ex)*yV@+"pL5/}VˎX,$uJ,νz%I$ojSݠT~c .jQ,Fy,6
DpW	IƠ79nmy:wҭk'4-c
ɗYzY6tE_8"nQI
m-92Ɋ[Wv\҂^*p''_9X~p$ͱUod&`ES?qwR{,U)M |YICQ`:U,ӱNTmlfXPcFBeKc65iT.yeNjNd>k[튡zl,쾆@dUtW	@WKƹQ57"NʿnݣʼqsH,Wf8#ɦ8st\ib:\Sq)Iߚh8bf~1?KEa>?C=]ZJY|8AtWu4V	Dpm;jMq`*<6CeY뭳δbpl6n.#["\r¯4 ƟfMNL͏!ԻO<#+Y҆RDg9%Q \Jºl&?5p iWPptқhhG'Ey.n1pd~RO4UE@0)`%A?c.\p $6xM8kf֡/󷵨v4-l!T(/rujnxX=K5oW|ɢ3GrzAgjAЎ
3J*7O(PMNZVITncLܨ+P9Ldφ~,/
ξӳfį7 5'OY776f?ϔYM:["W
5חy
	_u}c-s&(~u}VUA`uWI䖛vFPߔ봜Uם<{ϬemWZE}V}yQO1KreyQ0Ar^|__p3V9*AweQ\sJ"Z-T@jqmn8(,eat}J[i[?&*?
+Vj@U>ϼddL\IhJ[U@c-9?rz\b.Vs.xvuijp5]  od\:w
g^KǭSk]QwZ\/]>3cHg'GF}ǫI7Wg
l9=ޯm$l)v"-`r݂`5[̮mAT~=ߓ:m[DӲp/%'eems'Rp|H0azCS6;hzoA\rL״j'zR	GSp"I.JCKC/KBŵ<6$zZ;WKKtWeN`p7@[#I +yqU*Fvk边85hμYtט
9鶺Ascݔ;}iK'X kYgER q:G#ql(8gv3>Y}7BFaNE:ӓ8nI8Jd5١ޯ}K-0vڔſ85vpl`=-iyt؈H-٥qX1UIp>~*`*R+tB84}ŀVk&EҢ]8Sk[0'D18i	l-@ߜ`yzrߑҝ^գ;i5h#}8.e8pC뛊>'cɨߎGNh
[.3^J3eIt?%,]sqv
p5>udB$~c⎋vf$.(pj.&mgT 	 _dPwFMAWwOUUSgV(T nXˑ&*F5 0}~|ej2XY|>f#8^m ȴ[Eu<Z@<Bc⧧ߞ[GpbYyy<2Yw;gl^Qeyȍ^"y&
"aNЃ$&wWꎽS!	L\ج5Cxmk_vժZ͊Ä0]yT[{6v
d:p '	;*n(yVZA`-d/}6 לɘg3\+0*ޭCNG`f-3لHO[z/I=\BUd/ǧůGׯӯ
\҆	옧[N"O:|~wCr@<oZYwX#}}%?6/D7<Aw"Syҕ\^̢ZnlSV;pc54_l@K9QG8/]0={b|A=n7Tͳ,U{J%ɞ,*+5Mwy&ݼm:'U; xr̦w
?ID9n)mW
Iu@;Ԃ@Y!i%HCP;p!"W5,~Cg7b
/MҪC>x'xpPo[Pꇃ,8f2c(hT1&Ԙ&2_@>ZH%>3_;=aT.9>% V9ÚYn839U$[vS5@8EYo,t$Z/O{$WkL愂U^cp@B	Sg۽&9=/Gp\]pf~VLT%WH¹J`4!9, 1Vr9D 3hIQԃ[Ti&'{%'l;WkHZI(F
Q.u=GrO>gǲz
yĎpTV	6IˮIT<0Å?P,,Y
`ʭIzߥAwq	7!|ȭ>nԔ`r_LWPRĉSS}D?ᆕRmAěL]stu<f:F~">lJO)'8ár$+󼴔'&k
\W(/ȈV4aW(X3_K9"ɭ^KGF/YBn-P;W&jxx:&EWzEr'k~gY+	FQ۶O	Vں^U?qOJr`ݡ\ZbKpfN(Hw9;Zא$LR6;=|̛񨮮嗪ctЕerֲ?-,]Y%o )QqOaS:{9S<fU)
`QԂ{Q;P:ѿ'tr`5T	MI5#-JѢPkWݛWH8ZퟯhK#nВ52m*q'p})m|̚,րz%R=+QSNA9<oί}X{lmA.㓞Љ\igPwy,ҫ-*r۝`n?$5OuX[ @;@|c;s@Q"'>NQ=נ9`tČ3o0zz_r|WmT.QrUcm.<'wྮh"Yk;N.rOUb	WzD%7Y7 AHjz,BFG#ɡ{3L\bzjK3öϧ?6M:q&;GhBr-[ o|"6ا2{eUލuJ\5FYQ;F'2s'!Me,%@a~WuJ_L2`d;'D&NX5U&ސp1rjSyIQ}n(?Q
og//`@O<:tXC[o7JZE@ϭosjL?sY5[Y%rVd(Ev )a:UZzl.́5$|.VmV`,Qj
zo?y:ʔs5_SCVun=~z'#JGc 3#<v;Gsjq"H'>u|qą	޴$4Urm
*
]SdMT$&G,
o(^dZ$l}R};~
xXتelW.n3J1ڥ8q1ǫR	LIOUW7E[tSʳVO+vۜ9
zHhJE3K43V!3H\&oPlxKbj"t.gk%SpӇppVh᥅_n~5`K> EQЯ'v:q/wj,Cjtv$S_ҿaͬp >ǯ|I/VeWjcXdw
Sqt		ITsAIϗr[*Ռf9
[T/5euO@X<`~R*/e{ʶ93!R$_m#:g= @y.9t3RZOMs}ȾAkQkռa@MI
8w|+~5^*YDZd+JGPZ"
=<P7_wϓO	eV;:IvIt#\j@B?|"<Ь|. +'ioX8"%=ll	G)!re?4~Qtuf{6 `t6+V?s0jgu.Nd ޏ5T1- Ƕj|.uUTn3R/x̱qٰ_8_Z_=ɵ{#Ln`ՎPÔܲmx<*wp:g5:Cfv;k][Vjbܫ
 1Jf#uf8iR\Hgx	2f<a:˯]
ۣ5])١І))UAn=};lRB,P'\WX/slR
-'C(
R/~{IՉ^Oq<Ԩ{<bbPPXG$RG#==Jid
#troo6}
Yai1ׄf?򣗍WmK۪8H1zyNl.\	D߮Q,aǸu}y5&ѵC[c<@oqÑ ՟˝StM}P	M /I_7 ɟwTUPI7\@[m*[+9ՇdLvt)`Z|q(JM\?j{)~U/8M<}uzڵ'<rk%u_F}DC6]r];?I~<[Yٮ[2Nȫ{'a]:E%b=mReΆӥL\[^a0*`NEYmˮtlC~HbK7kOgS8+7Z4Pɹy 
`D"3	Pـ
p!QHbRQ)o1;nh'er7Pl,CQ$cnn-'4,nkR0Е?0ʶ@,KuU+yGp
'rúk5(gw,邖x>E4uI*zXXb#p%$WśHl=?}N?!.	X|pm:;KHU~vKIs3#j@z
\ ubi-5}
HZg7َ(8Vl;Ev3847+Q/PPFZE:
+?t'#w+ l+Z|}ξq,U =)>3T&ŏR׃v򙎰=5)Kit{,X\OOi><Mf
0^oµ"vx(C|^BDrw[QaƄ\gl),pos6|u9"sC;U x}Ig bDShٸ>멎+z}IǌOJ܁f	|sZ<b]?wg9e.tu_fƆuN|EwsRPb9UbZMZyOb}}(c
<?jT@a}-kH)Mj,0P'4Rv'_g]
jfbܷ|JS% L烩!yȡM tL	Mww,p3^$ЀT%~frd!hUl^&խ3ީ*@+ō)J{aH]K̦EP5sOF-f\ί:6\vC$19Kt}*T|&')'Zc<!`):	H<6}XT\3EjGlh{D!r՜5nA]#_P/MfU.lYb1#urf񵭪ləSRi6z#f iw]$_	l12LwA؍Ϣ@Dl7uV<#c*
N~W~ild
D-3afj](0ufsumّm0CmNˁ2BW3Mu"G Q+Cݻk~XRxikK6ySyQnzŨѥSdm9.A鄌ׅ-
jr069zl/gYVn?y"vEbTB|4xq!!@˴Or?

> a,GnyCOʇZozYR>tIg$K:HF
q[!QWE:4iQT`r["`ǆZJ(AF*cLڭ^̼_=R
$*羕$#{:V!|So {moݹ4ULslq^6Ý^ ?I}kؿU	gI=&reXBǋNǆ	uyZjKjcؐ;_`'Q.w$	[=DF.\]E|#d <p[![]_U[}"X 'e_ЛhpeZ\%],^֘bSm)FL  y3LAJby]-ǡ`2iY>Ub8ǶBOC2WCBPAX]2	0]]	^Բrqbu %^C"Ds{D(0]&YB5%42lx.+퀜4iw=暎UTgT@-
_=_ؓ.⵾OUWǎ9qX=3$|0CV*W([_ɦx] 0.|Ш2{TJa[e4Py	ʙ|W' xl:b/oiIw6 PiV
c-z"1:	 Hw8;@ݜ˺| ggŝp@ٍԝW7/v؜NLPTvDpN[IKLM*_qʡ0yaJH%NSO^2nzZ̯ĀS"/	rPn?V4.7 n; Rv!4n>\ĀG[4)"e'xa\θE΅ad^&ǒk}ieߞxܣFBu
4P#\Pۚ\L;Ub@ˡFGWˁD)潺:ZSh,.УKV-\~ڠ73wFSPp&d0>zy\:Ǻ2ϩ{}qQ(
Ԅ1$Ņ pY8}dh$( ]Ӂ_$OPWCIT=5g8cV[ܿ旕!wP/Ͻ?fe;lZwj(Ѝ"yzwV֑ix0v'760:h?cDz&֤ǽCWY|4"BgB
Oos)xs8'BsfMgLL&]g2/L_YDtZ$'N)1FM̢]dur<^NJckY
:#_H'wo5cBEoU]a]JrL.]4%D358G0w;,NO+p<oڣ䝻ygjy}*
><HFnl[-|n)GvIya/%܀Te"	HyΪ3bZvsl.)CaKZ@z_ݡ[_! }:8]\
O+E  hU$9&lU,ww7U	/(%
<ݑz
1yc ]B[ED'\وg(XYI
&r	mEmǣ2jru28t
uK?-T_KQ&|գܝFUpym!ڄ)7kم^ ;^Whr]&p\HE14 sSМ\3t~m/p _m=a[}x86h
D~p/YSc6zxCJ9BmdZ0D0KP`7>	)U̦!զUݝr5
 3^hSo8%<yzjir<h&elEIM%qݼe~/DVzy$|_gGл'A\YF) B .DlWii)6gQvA<JhBCO;ܥי<ԁ?8`+"IUe\@McALn5p85#REvksĻ)C.`WޞJhrT:jwey5~Fnwj*>
BB	ABm1
k;i#Rm _fi}Kie)w+	OCkL"8ijli.f%@nͅ
KE-Ue]ZђwJY|r5ap;:.la)M=*h5mqi<o5+4L`\پ6I</XiOȒJOWbB]zJqETWcB'Rr~UWl?yNSxJl:@F}*̱Ԇj wCK*͟؄'ฎ8Gʱ#8h&J){mDn<gGBv"l=cgJ'M*3|s}#Crf5;= Ż2E	h;'QJ,=Go1E&>
e Y%&{ZbUi
}9S^t{;9MIю"㨭$/Sr	M|U%ak𧨊	f{4}D/	I⯞>-+Q-(='"[&#Qv0͛V?崶Qj滝/\( kvl+irFUI]]y^qz&>_)ۚ*-;&C&@2:@OOu(fm?J7`1Srթ|9[kQ\/ QT^y%ETl_D7/)
~u]B.:27R	WOphy(rPL8jXLgQlww쵞ܿjŵ}q&[%)il79S6YI?3ղ\ȷU6,G-v@Y%\ {;vQ4h@ehg|%!wLT?tZ22&8\i[`̵4f"Top|zq	I;4^'1hVuQ/)
Ï,qG
NC/iuy}Os$!h:ĵ<dKiCn)	nuT^S/0AǽVY)!穟YC.7+)ՋC]'=|Wch*9~sJ* 2D)<6tPk*[P4aQv]Xi*4N.ٓ3$7`:j  绿>l\KZso^˶£%8sKR,NT֘M/]E탪
w2<]Lmk!l	CTw<ڥ,9Th4wBԙRCi';oUۏ֌:[[^:x幛 RɌ+z
Y^VU7yz:*'^ʺp(sTO^n	+77{jk׎/
!t|nt\;x3m8OLo#
rQT^*vUCUWU Iu#nofNE9lVU]TB'lk9FQ	̗3]2&)RW>0
fQEXǢfS"N8mqY( ;Q^7WR	[C zt70gVDcW4	m*FoH%?
 ׭/l_(d]-r-*ܦ&?[\U!	?[уF y<ba(&_5b[kWA
kr=hVE\'ߧҕ@zj_d=-!OTq8h
GUu/3{I	3?̮7YE!_J\̗Wv4g4!^fiΙ>
MW5-XA+XY>Qs;zխn.9:W3՜50johasFqo҆qsGd]{6?uIѲVW KH@C?4\Xᷛ`QI[3& Bl;L@exIg9| CV=]ʫ*ߣJѾ&M皃Y7QR(ߥÁ8⺭j;6-]
bfcao_	TG~$S-z:q6Q:#O[X/Ju/%iwcLrs@Jzhp]K[ѼtHm '26M &jiSټJrjoc!H7^>u8`6:lU?YRۭj*WGU7y''
ݚ+l!%n}١PGmY`jA|
0txwնg&}z/&1^2JUXڝ@kCpW++&.wHA9ɕ|6ٟ3J>$xZvKR y?jLn<l"(wTr$vZh%$;Nǐa9\ ۀّմ[Q$[Ⱥ|49ٷwEߏ.(`VCہ\*= mw&iE]|5\MN~xptwtW#)#@4ѽ!lO3U&ؑ=;!XdGǧ5Z
)W>%OQ6*ԃ^h}?.M>Bz:1Ɂ! x4h A*p}Fw& (نC
%n<G(hJ8c嬬64x8q`xS b7dutk
AD	 b#Dwyŧ
j:]&X%F B"wS3HIʼ=S4Wq0sVPMeG4D"l	!&RɃO?Fim@_R(<V_St+G`|_L	Ӏyrht1/OX }{GwӁGs+yHchH5gOqV'x-i2W-WB+?*)m-txw
[g1EHZFA&iV $0i+%Ζ5I|>īS= 4ځρ$&
MulGq﩮E~iu
Gz!(t
Ⅺ0)Ԝ
&KxR Qm	VRoSيj_mMU!zQ|9_!+EnQqFpd:pim&C>w@}<q{z$\|:X{St}NNz~o)wciT(&xFjf.jr^t%k֢|+XQ
i28	b"f*'guvV
nTW{yҗTҺj$kKq~lL'xRꡜ,1? К+k[IU/y"؅7\`g:e^=lU5O~M-.ZO7a6K[\B=<8D8
Wo07
9u2ea"ezGMr	hMxlIRGlOO_tN*߷fѮ|XY۱bxlRe=On
4ģDf#se⒳q۾]lЕǼ8%J<>f<o~L[-XPMq`M:% w&9c@{Iz؂eG	KI黒{>*LGòlAry1# 
hw]/1.:7ht^.+JqK{AyX>rv \M8^XD<a Q$՞%讣u+fxWbiS$})q^k
̀u;*؏TQOR#Y/ʅ2i2U*pɠx$&GY^}&ا
(ɰ@
eR_XU{WY97ݮ+}$)Oh=-B>9LyjtBݗ@A
Ou&T> Y|.5Zw"Ձ\
r
H3?))Ʈ.YxQHqYRFaa11|+RU * yn	V,r|2T@ O5 RǷslD	
_VzBfos{ZwzW\VP!iEb?@T(KAF2[!cC+,cJBy%o&Ó>J܏qbL+^>hZ1rg)2Ьfo1rP\bHm1_ޚ<R}kgLkopq GCTBEL+hUR@2D'x}*x.9縸58 ?n:8<Gokq%IKj(AR?}m?@ߣʬt"+܉7+hgݩ74>\<]n,>6<f(H:U&V%4e"ut߫*MGAڼǯWD*˅\s:䪢:-]+ܶ$G$Cz$x{Q=kf9Uȇ`g|A
hjonWiq>r9I<_EMN !K})(%zb W,j8yKx
H\XCZ&`FN
K).]xp,nyU^"4^LNEIPTq.kv1onW @Q1_OnYuqϿV n_KaC4'6\'#l%zBAz&eҰS*0ޓ?Gy9*M=!`]@5YqA$vm E\k
YނH<HS^A㜌pU:п
%;lV;/-WsY= 6r9Byx
=Aa,Ã]<2見7aޯEbu"~} peWpvC]/`߭aÈv_K
oۄu W9tWI`v 
GRbA|T{mo39Fj#pxkB1VpU<TzTeuJ K5Fߗ3kšf;$Y'tL/4U2u)Bt5^ddqP{]ka~um8 yҫ)өe[9mN |*ms6n;M#m8Y)%9 Ur-&6vu'^jqvϾ}jȵY
4	{
pߨ,HdO3@:XTi3xHbtrwőE( t mƭ%a򮯢5P`@VB{nߜoN-ml3ն7j3xG=(
k%rƵ
xpIo
ΠCóҽ\YB$Y<Ͷo'T.9
Ҋ>m6yq^V:ְE+zJ^̳kB
ER.eIIPh#ǌQ%W`4",Ba/+Ad
Y޵ڊ z+͎oG$
Zv24KG/2G{v@PT-2Aڼ3 i=6(e;ETWNro&Hh1PFlH:1~ad
bGxfl H׃*_ny|"Ba̍oE8R[% >ο\Ep$+UñT~M󬥊>`"]5mrD(DwyT>a	do冟bHu,?5Tn:VEzX﨡L}Qgj{n5Uy]E7	R&
܃V0Q$viY5.ge4 T²u'Uzou0)w}%	(9ѭa!^<ˎv@wqR^GǞWp'?qլ	>;ܜV$b˭-Uwn[}#IBp{'vl Ħ0r}I+#9u -P+y#f7pnax{BȚξ7EHlsR<{;dW	MXy(WV<q5J
N |+熘]uJcC{]nƾֵZHr~׏KXAz3?
/#-h y:]ywR<d솠*~8p/$4$;Trji/	$+RƿV-mǛc0/}h/hȮL>^?۾/#sVB?qW׆&dɽʲ>D(NP3=GOM;hA57}+R&0cb!q8{FvlAjq9
޿9fN\(yprqvw 0힐!
]w1Ow(F;ZqBnM(:u}iJws)(VϕH*dHG隨 d+ Xܲ.'};Q4K<=sϱBϥX,׍|_H~k#VHq̏Vov'S4xڣD/h0j;c$G=#ʜza;DѩJj2gJl\GM(aQRGL˰NHOuvq$^|.2=43h$9 o#"n|7Tx{
4qET=\Z;9ǋ"H槲K;@&{,K_ؚ.\~i
ưdYAұOFIE$ңSPaZ`o ٺ`]n 2#4S~RU	RNg'Ԅ
Lzu{ba1ViARj 6aZ?H{
KFNE/^[=Q]9)1QV;$0Ld|fA*:uΫq}M z5)BHɵ7Y8&8:6IV͞SBazBRsի
$SU:9ӡ5s:/Ńl:
[B 䝬z<j6)O.fۂ
o+4ɝJQ?XU"b
@F܅)&w
f0!1 n[ᗔU]ŰX*tpcsT9UZ~d5^DS9nn3)Aq1@"Ĕ 0$jes°KN[N;>Lx(
p
;H@ҩC&cuŖdۍ&|bnM]n`CĢ>TV[[x3Z*Kt >CvWߤn~Og[,mPA,	k8+J-N.Hу08 tȁ }ǊnHK84bfޅwu:uW{7/goTWDz]"gy\T{
Ni\'Lg-T'䦹{WԪyjfyMihOӮ<)
x-9b:p2L6GVzgEvǟQYh!mӻr)<Xm2踨vNT
Ӗ*tq.n֝YxEs Ki	Udknl;r
>4WYQ/e(&b:Y6fǈk Lv-xx	;N<6j: FC1_4"a(#fC-?]%xs wm06;U?nT4vSȐoro',xUEg'O[rg e׏N~p{9>p>'Sr"Ռ*
V򵾟:6"
%^N\aZV
)&'Icس"Ǯw`W>Xaaӝ!eȎ=[J/N#?pif޵.ȥ͍chpll4◻tX_%-st֒$ؖԩ]CpZ_QPbͩz4⿪Cnj7 ~WE!	tRNrAb6Aؑw<_2GgW[rz&~DNΩ$%u繫>
^jDNON0h%:j58{ Ԥn	:Mږu7M0~صjC)bMa.oWI0qWj	p	/{ϧJH$[  F=ʓ=%J9jWT{`ͱq!-y
Ǵ_e[{	N '"y`ڷ^j롹#v0tI
DP	Q}F{wNLPYtBK~BYxurc{4W/NHȆ `ӦF5x6t-bRV~R$($YCQbJrW:2N./Q
1}L
Rm&if_On&Zv#^ŭ4Մx-*Eh?\#Nϥ.+W)`iNǍMO\EV7YK$Ok$OyoTn~UoruU@NS
q~ Zm5R!)xyf0`75{s6Q֥Ks?-:y}
zlX5%ђVOzevT"F:ޑs'
ӄ1jZB8nӧ3-KB?D:m!}T@8$/wؼPqܴ՟zJbbNrbfbG뷏|z<zKd}[0! >L}X~OWJ{pNTz#IA)Ό cmݗɻjaB?^ Pf|Q52-bGaN umzPߢGo
g׀l?r Q\T*CIw+{,oQNeLA+oJG/`YZXr%(25-PU-o	pTr>6ir:!>JWmzZsYDdզbĲjK/tKT>ǥYѩƙC!4ܣUϫ0vRJ봆CTeUqEI5<}+Ώ_):
	yuUq
ǇovԽz=$^|8{xZgNsԜU6jq-3lqW,XO!ЫH2ϔ-.goMNaMRSS f2.5'"ᆝRCk@NJg{bOdd ?:JX<v]s 
ʶ$=augtv_ogN)B[.bZٷ	c"}X_NC4>[-9t>ki|EU1Rp.؄-C^b\k)=j=mg\j2ִ"x/69Qh. J =׶7lN]S?utDDW8@$%E&şvSr R$A$;a:Ha4؊F'

׈zw5
ԙ"!Ȼ-SʃBܮ%xpVk
e P^oȐl1m-7AXY(}J2B_դ˰p1
:bѝuU|1u(Sܦ{Tmr*[˽[@ONPEBw!'Rg,P鹤EM buW򘭛h񹹷IﻯIĭӨmFBU*[P;ō7rUUKeJx]+R5A$?&q	@5syqmTxaZQiVSէ3,A)mQ#6Vnm)J^ڐIܦ>Vύn{⩃z529@|?m7YmUP%"̞P
]U
?v`Kwrmx*P(q.қkj
nGth㘃`4y)kӥ5`J"WF嘢µӊ"hKVM/p
H7F8Ϋ/mΧB&wU7,vAh?n;[vI3&.2h?TKg?:7˵P:5go(XC|p<UWbKj])쫓&+T禍yWbѕ~
W,<c4m/ަUjgH
9Ӈ1eBg΄`4@*U6Yt)Cvܥ&)}1<1	jV~D<öXr*aW5u,uPE5,U֙	
O@DхS]ϝ5ю"
(K׽Üp\M&*71%֙dɺ}*Fwc_u_Nů_B_'XƓ:V8A#	x%5N@L61l{B0n)+@gZRtOr w
~bK"G~ED=u)-_~uuvKg#Y9
;W@Km-x/DE\UeW2F<4NKH'u}WCmLSO&E<Ypܹ|pS\eN!9+\uSYUfZF%Xt\y
:DXo&ՕxN-]}_(Uٯ|m=Gxٟj71QQ_sü{Kwץ;Y-c
Zs
*7-|09UaP[;Q`i;?4
YZKlW[ԆhPPILN^z5=?|
Qݛk[(o3G)@_~ב$_2&vgS?55 '+XRӛ6^V ejÒEg9ڴMi"v?
*ͅO+=!1w[MXZ O XDd
 GP<Lҥz௣y.`wRƭ98="lƇ[$GvIsדU]8Q [!:վ' o<nm] ^?F<wJ~7%V]u?H|h)
^ك< .*i0%֬BYSa\I6u]>hۍ<UހbY8R6}gW>}Ȓ:9cw_l.V^=r%d
J6u5A3rty:'ͺnYw0L4v镐qLI7;td[N $Qӫ)ICvIIU2PvOtZIGSWڼ$ ]ߟۭM"Bՙ$SٴjAvʭI֥,J߿Z_(e8`_xM&w Z tM^oZu"qѝkF!14xop	U`3 ϒD&}u.?H2
]~
:|Ux[1rҼB	m&-l;+hlsuHą{|>1mԸNJ3uS#L;eoK<gN&|7t$:+Mr<~V_l
@%<ޥmk򇵬5<"yzXrCeR=9f9N2Q.Wyyܜ'4-R2)Rr?/-I-{ے[6.
n:G3ԁ:94NsUFa]ST]R5]>U:q<^ ADVՑnVM+)[	3՟@U*9SPwV
Zp >Dǒ+Fm͗}XʜqEv3[6Op!tGXǾHIc9jX{`:r)jrsYo2v~$+β("Bu;7U%#'Ti8Emv/&_cܯ$pI7֓	JoרGPqKڲ(ukr=ݗ:Wx)Fѓ>45+eB,);`},cB]Wks:HJfwǥhSq`rTUmBQ 'ŎYSufj0@~')59BY>,_wE,zġ܉k]A5V9J.wMOASp.Ҽr)o1 Fׯ/G"Ȼ_ã^ӈ}𗚳?>=?
2J.Bj᥏̥Y;7)Sɡ׉`k]KuG:W=u|6uyZ!mt螫~ޭޯH=: [i8jzJmҸFbGwmV48O/=~>>UCh(du^:/n9%q 	[w
֘[sTn09|W]-񫘑ӥ%͡iAPHd.«Rac4׊p sgZI%M\x'L3y\P-hDk2)6rp@h/:v#wg}/q5O[s8.!am.c+%υ[?"J^*Xݬy'gM8S=?wK`Q
" D;ч ]{WU8]Kei\Zw4Sr:RSR#ď>dŰNa&i{E5δA#8dQ'^]ЅWEd}F$C^-~pn
*h%NV%y)gJs0,9 Gmxc\1yX*{Z[}OXq8c(Aѡ~6L*V~
"v},Hk_jrb&sGP8vUurVCVX)UാN8_{?-
~Y{@Hx
<* 5	֘|G'jߖTlySGb`W]6RU
tEeFAO
 d%TcV>a.>E
~AG_ԙ\{Ruѝjt>WEnepIDd6XgLvE.'SfdsR</븦ڂr׵9y>({|Vy'Kq>RE}jY)5uvfV36]3{9>gǀta=V%-{_}VM 5_=~=WF8τI㎡C.xl  a{ S>"z zTt+=hĩN^d7e^yTKp\pgtiE NuJD|ne\9|JgËR4 _4?I.Z˕GHh\do95.{iFjײ<9דp֮JwN{-ڃұ{MT;w(+WGn{+|o~	xKdifrve݀)sgoT=['=QZ@2C:ܓK"o"Ƿ:>B *6榍\WF>ek$V\%ݨc_d?|^g߭Vf%ZʍwqO,Xvm˹fxTW-
0),[.?F
UpgaU80ww%
:bVa{pReO9 0<Z{^Q9!ikn֭	`FhoX`N>C2j4!S>oR`37C &ݝeMjsl~t zL+k˵){kãgn__iss^
_Z[^Nw`{tt^j^Goտfr~gH\[XPY+RY/'	XsZ>"2SyjfdXnJ*Y ybT9.9ܛ7,K_q+k_EAVAGb˥Wȭnz,Zȷcz?i^9?m=|tY]Ik-v[sV+9Hknc&9 ~==ߢ
q].R}~Խ
Q'Z
q\;d~x֣R	 4j&Ñԭ)z!V>at5݊xQ/w!TT쌵Ix 8kJ{UAy:3]J*RQ%zwnTwFˉ3E}O=]TWTvh ·|
Gܰt(Ƭ!vë|G,{rW
gT5&]GY0u槨q
2|+e#s[hvhQc鏡j_Y і?<T!]a(+!`h]/f2ËguLDLs jT[Nߓ~67ΪBJoPot pDHr<
RUt$ds7:`SZ+w_ɄƼ$G!,tH-99r#ӪQ^S#Rb@u_8W\7: P<x9-1T'b+lx:V/z4sOGUhåPx%/%Vw0pڄ"ZV9Z;=վTNPB>%wWTdsIZFO`<ʧ~ѮKx֪Fn
~SnAUY!=rUK׷!{eEG4A%
ɼcb[(g	[F$g-rJ'|ϾBYfg	v5>_iۜ|+|_J&q(vᴟ	>g,r%-qġ'V;nyh~x$ %4Q!YE@ߓC R
 itFi"ښ
=ԭ.fQ&F~--ªȐR\)u-jI=ot_,*V<BZax)3:ʺvRqzv;$[wp~T6ۆz
p-CH(Jk(Z% ![v
oδJ܆d(5m>7O[19wJgګ z}&-uB89Ow{-Zٲ./wr~{GວɨSo7j[@փǛRAe ~ϯb! Ia,feMg"pӉޯJcpN%([kY{-4(|[7?vp(^ŒӉԭt<`"C26ѬGPtuD"& MGI}GfMJO9Zr@N0pq[t9颾hԞ{vSP?,ȣXP/Q=F&'M~ѶS?	YŶ:P\wv\hp5V씂..'_%Mlv8܍"HJr('1FpfP2ԣC!~k
pxO!Br3)F	y~=|N5t*_	@u1gr)W'RZ;
쉐ͥ
8?a?3ДUKQ^髱kv
ݩ<N,	2$|$-%Oh9leyNV{)7jwF1sHZd»*&k跤ԎxxJ^R\Uw:{?Pl]̜_ZfJ~dkSe
lA7}5}7D㚡t<#j\IGܶyBնsrϹׯR8>A80\CC|j<ڗ|u#ilf41:技Lk@^QVnvrz I\lbȮJSO(ל)28ߣ4bCa'q'LXNa.?7Ts"Ӷ@NV7=NǜF.FgoM -E,^dҽ$$"pYJo
UMwG+~f.PcŪym:}'KB9SSQ2e,,C牣
(U,Uqdkdu~1Aޟb5eEYu)
>D8iݳ{bBi!FQkc?gbsxGBQm|6XSfB*}Էȣ&-+8\7K)+prwND
^$W%_sC%N Z5~!ACkjs!Zƭpo^ .|,ݢZ~
('ᒉiYes("W:#Q*MȌ{߼N#/oɫYp-% QUOav#8RCcM_@( \5&b)흸ejq#L`W}j"՘6,CMb=yv7ڄۯ,(rfqwc'.r[Tq?;.NJt$mfU'\ˇ{(| 9;?%ao)C懬7}hWtp[xTEm.OT a]\O-qh*<yd>inj 2t#<\.s=Kuw1M'!)蘄(> INl>6"QJ9FNWfvٖ??HuE N\uGǾ~#hVʡU.8-oxWBpɢF,-Ο[Ġg aZ
ea(
lNdr^Z9Rs$׼(#w%-ܥL
7!'
53-ej\q@@H-o*XYb<fNitdؔ鮪+{m{9a~<ި"e𩁎.Ճw(~RAF{<3 ou2X_7l؟j7Xᮺ2Sq5ijY	8
M͹?pe-=riV(TNUu'1=Jg0&f
	mp
Ǚ[[t:N$=/~ڤ<iuyn9lOx3?VASsA-(#g~G'k0(JQ@֮F<
R6~{IQ<-ײ%4Sok
^h͑ܭpCuH:RҰ|1(U1moY\.}IH$\Á̏xOP
KsUggoL+0u__2`I<HE{ﶝ<f[C?fD~Y'i]2/!o}̹1juڧwQ,]/oTGjYF<h/G-9?AپA ٓ:2tQu<~;D"mPT0ӥXN*ޫ<$
NF_ے.ۂu
l}ppbK``}~db&0թlpMm^>0݉YbR/0-w騡jS> TՂһo9RGW|ڡ,lT=pd hmME
Ҳu;_ Z3}OGG66!TwEp :+$xk9vټVQ.sv$\ K׎c+\rJosYDm\Vڎƾdiq\ھ_B5Vct /z Y<òCݶuFar?j8`<k4wO`60sB_|_nfu&=u;tU͏qKQ/*iT
0FT|$ryIC!(ۓ8E*ឃ=|;%Bn^{ÝrTUmմ9܉ېl}=~8Uҫj!n-@YVӫ!Q	Rq,sV@g'*%%JHˉ\1 	U>: {MzÂ+;xWr3^%ڎjqBu.+g
8{8t(񴈕:Օ5(D5vZt9OۤŴyJ9+!!fi"wX
hV%\sX-0씝.P$/,#D:t<:0+&lޚ17[Onn;B!E|tBC;<|2^DPBHK7ԻD{:|#oŌ>.#|tOV
n)Zqsb$Ltw>F
Ie#qx3ġ>ɸ|q^eSP1HHJXAi+bpB~KnX4}vmpsqP-
fT=Mmo^|$-
bOOrH8#>$$iV]
< b:s6<՚Q=^NbHOr#)n~o[OI uFR0YJR|W+=SY^պ$o$MFrGӳƑX㎇75zՒ<2Cg,M%H~kU=*,O.SxO'C*]#`s*%N=CIRۺvO;[xMM=nl4lTHGos[Tg
@TݏZd<7ȶ]I^4.wWfHơt<G[K'MNJp<DJhxO-p+F`I'3ZQټkY!p<::k<e3h]ʦ]ծʪBFOA ՝صi݄ٰgKz[71qnR*T6=N~W.r k[a)nÊ;ChN`7 x	^tI+-yHͼfHqG$71|?/#b|䜆~Ȝm_eUKP@Iw۝a[avۋ㾇k2Z>`\\ /,4P/Lڣ/I9cssi͝OԶ>n+E-sIC '|]lJ7dgnJ+>'T
"ٱuez㒏<Bpj
]KAW>:srW*o)J<u@U"ܫk.jVe\_:Tov.JσU0CIM3 8!Ib45;@4d*Y$FB`(eզЃZJH_8o8,|koS5oK
ʌ/8N}4X%q Ƃ~Kbxs97(Xey:	?O,Y2TK=v=gҧ Ӛ甕̃Wάյh.X54[5q-CuK
pŭqin&FBUO-\B՚ܶr[qNO`!
zPgƯ/F$.5\B10첼z&	{C%헐$`70._QDG3dDeyiHrVY!N_/Cϰˍ*MCGVێ._iW^|*D~ӬZ"C~QpgWśjqoH%'(׫.r*5v%>cKj< =ٽeݮtD]UutB]\5h3A8hï(zV#'>pa{8-sR:֪LP^MnvZ)4u0y߃eԖϑb
GɀK!tQ#<<~[t3ZM]˓ÝO[U6(U񓬥+A27@fל;XQ?Tk_gYf$t%}ՅK8<f26|˛M'6%%$F`nݟW[.55^w&O7&|9
h&ls:"g
.*tL6Nk8 ϳJv^yK/-T0}^o/]PSgX{x*HVTGDEC7%>/DȵDBv@H~h*.[SYlD"Vߌ*gy/;.|/g;zQ,k\ͷ۹AI\ i-V]s:*$}߸m\ƛ5>w~ݼ>2	\ÕO`Z)7Jnuts͎-L2Io3#rv?^]X- \:иvprۃ3_ԨF/#833]Wޭ{WBsGߢvIJy]mĴXWM RV%A((Ip%@ي?Io㿦6!Ixه-لror?IYvMu hm|t'&am6HM{wGfxu&>s
\MnG^CW	IejCa6+i.vhP	7mn
މ"!J?y3*R6(&(Cl)\r}*,##;k VDpBD3ʃXrJ0&7*:۷vWx@7dȾQ(Ŝ覰C*-iȄ2KI/sQ?<ϹmG,A&<8]stE4msUu;λ'T?8eK8ՂO@3FB5%sM
!V+{@!u9C4^;Sq:lG3FRp% 5pZUKQr^a,~}ƃ{ѭ&Au(RqHSŲ4-vEͳ O:z\erwBYU hKG>Lhx %0,y>2f`_cYQ|pť5aն_?'Z$.Gҧv
p0tl'`9#&) 
H0羏a}H2s4Wymzݺq4];%*i[1[F/Dض>Ft^)u;"d(Gb*tCe%rhpV)(ӑ:lMR2\[T~uW*\!@\^z
 Hg<|SMlD5OZ6\.3NpH*@zcu]m4{J9Dt}yF;S`4}!+pAPF7YtO^"O?;OB\;
R:~[0:E[R,BGAu#nD#8VXp@Nէ5>Qr,DS10do
"hԱtEj21*&pN`k^Pnސ>wW-`]/.uv<r_XrIa(^@aUs$2zse)=À|:
^[ujO B4{Y}`f.>tn8T8N~^X5_Uyi] 9NN׊|5ajn+..	/z]]u7j=gDJP_Zg_́gм2^sWI"_3y"Ok$,c^,ʗ,Ioqmz}x,C?xxRDvxm
Mu	xќY:P
'ﬡޟYSx~U*]3OU/Ej'zux@WgQlG{ӑ*آ{FrG2\ovDN$,i!\v K\U@'͎,DXMy4Q-ΩtO\VYSh
l3*Q4/ū ԿU/9aTG}y'sl9٠>>^ ۗ#-P@hjc>Vж/"O|CۉUg,AނV+J;Bx!GRjS9Hb憅c2U9ǫ@"nV%>C$Ӑ ݹZvRMcLK$?@*[
I4:9z_?g6Bd){eVU)W,~խ$weZnGukT__pvH_r B{yH]HCmk
yQ۱GW>_
q 6l H$fm>bKIU)mUiӶG.f{u"KO}#jy-Ox;*.uXf?*oH#%׎풮0Kex(>ɼuʞp&;sl
WR)?_58ɹŊs-8-ٖ8DZA焔~|ɑHW>ݧk

+ZV*TbIexvnF)lBSQ{KM#X,bDph2kIMǗ=z !w%nA]KGB ݀UGg
0rqd, kWwKTˊ>
TvrIDU9su@*Gk7'=8c;X~.T>j5SYzZwmUch%
,vJ
0;L\#Oڥpr:6In9ÑeX9fqjA,{ҩWƶ)8Bïc	6	׾\hԃ;xڂ~}fT^Q(HI3&.N_WP_Í$
)\IvV{85YoxL^TgÙvD;YRJOL+dxWWPr=)sCKB!r{yX:&WՈŲt/1(jtuH㢊y0jd\	b|S5!y!jT,37bvwM\0+ԕ3fMz&"?YO]>[LpjGe.@巏ܫ懀aʣjk@18PPV_/2}͊XuD]ˇK%ȭ%#gk}X@{;SؘN`1H:~x
.?2eH|^$Zl7F8⠖dUؠ+̪LwqWm֐RX3A4-TXpDEq(D 8Ep#[
~s?nx5Mn@piNŷٮ9ެXuث@ 7Htu/G;Ǿҷ=+P[Ht4dFztk`5&;%AJ!B||>i5A:LgO Lm<VFvZ{8a"νM7Wp'k[j	dq@UӪqOw=k$7r`}1keqd%T;pl;Dc4Y!~|5
rDtix3'+㶲vܥ*S5iJy-)
+OmણЈBQGZN#֎
m0֫C;s݂n_պ[Uˇ!VRe:UԞEOg"j -|)M\ZܰSv]
G\Gus[rkzdu_~
MkNl	M^q촸hnb T-Nhglnm̽ T5sfUQpn!ۿk5Օp XRtW[՗*0rVAWZRE%]Gv<ZRLҴr`O6ЇJQakg>{_.2*xغהV"jphT\>WpG
f1pςG0x2[K|
ʹS^#X3&uߢgVg!^,k)VWFoK	9 EvBҵz)+slxT*m8iUQB"0tżi8ET/5gdrPK=W@֓VUhNFp
Ǒ||k	0*
|~=ԍs-s+	@CTH>sy
> ܴHA>Zz]8zJ5I|ۏrvƛSAQzB}.s:8nY$~6^NpĀ[qdԟMɵ

 Gĝ}r!pS<uJ<hpss*e*#-z40Ԕ?g'epo wX);&w[F5ܝ.=DԱayü58/]Y`i2H5LͬN|C7$'xP\1N\U|u7|0Hl7.q9ZKֿ=q=?kK` 	p6hwHa
JE}w)QC)[#,Dz|ro,ߥ&Wm؜C \/"|DT*DVK؟&S04XGSu'8ȁ/5?Ј@.h9J"iB*o@@E1[w|!˴J=!h\eIϔ{:* ;uP~&m7쪶rSCvҧ$6] !6ZTgܧu9̯Y	$&eH{ ZHC,mcSv,:@uTe>dnt[Ob9=hX x\4 {y}M\aa:D<$w	PfKLXlzd_n;^^kw,{lglg6H@Y5\L{3]i~帜2oݲ]CE7Q/Z]qFHyL^s_۲	šxz>˷E+J\y
tlY;ZFKy0ӥ[O=~IqXSS!{Vmwڱ
ˉ4:
&6 8t1X44TOz`G>`Pg@S]JvNnIV)NCz?I㳨)o~HORT$*}C`OK2F޽UzB4f^:<REk?v$ڭe=u債!AA>eGr
YbhruޚjEꡁʱR_t~VrG3(<udJ8@5=Z
TyI$S7.hW?%߃&%l7@ɳ,8i=z=s#@
\
껠̭r</tzVzp1kkөSA&$\Pun8>TΏN$d{jnèP9^`$%cp~xqU.z'WzYmoȔr
	U[] n;׎B?F"Oܞ<e7;YiĝL!-tL
̭TMA;[)d"R]v#Je]2I]Oq@}~+Hү>xa^ѴrwbrWeQB
;qjz5sG_l!"/;K
 H.J/J2Ŕi'rҎ[nUmЀ_xR9Xrx.Ż#.9h&_:@Cp9GP9B`]Ա7_:cV<
u-
F%"p&fEqpGƭ=?9>@ӵgEULZ}ZV+b),®tF7(0^v}7
70n<ZzkfW]\gsɛnZA[8*Y=8X(`D9ӭ4zǽ"s:(Rߐݿ- l^H@7G"%ge"xqj7XǃoMTpz
]MplhjAJ!aILS6NB#N,rT\Sz*t9cV@lMW.ݩ+HR
o:ty:ȣ:X;xMܪxƑfYRhX(1$7tO i#&_QXxL)k1gYU-W*`ѥr7ｐ\I{T8@  1h2ܳjx?;+O|b9WytXPOk&TGW8
N(
DgEmؔ?:aQ(p	)6/ֵA._,0k J~!8#ba@jI+P
5;@nfl;m}2U
]Cа<A2%#VHN|ڷX	x)耚~{Y*WRd VFr4 j#nKjwP]IrMǫȐcO)T#᳹p>E `CӸ(Y$qdfn:nIB43]ifW=4zaf|_}sׁ
.ɪa*oXD§`Mq_ZW5H҆8A\Ζj\*S 鿁.9U1aZ_<& ܉0 	t;Ec{TYJ(X͎z='έ:Δ3]TRBni%gHx-g\HDSNv}.*xuvN˴Q*]]>X8r׈da7SE]ZǊpqLz𓡈녉>\{9Jcdxko/I=.Xp%wT>B&͚,vԦ\S?}o`ksM^7r9=`#HdU.kFfM2$I Y[ TEevMab $q,@RT|>3bԔ)q~h$%X~ɠ1G4(SWMvgcoe;Qc)sCA}Yu%;gPΨ@%rxwtn znAyQNUʋ!z(8DaQ6<G&[2Hs9+ҼMpPXL=C\	XV᜾lKqؿ};5/mQm
ټ
L+gt)QBy3]QiO\Iq
O쨜28{9@9t.Z \v"l
\3Jp:5QD#j[7dE_K7|q~tN՛F@>9shb A?IDۼ#Jw⬚as,KY/i&h3f#rwL= sveͯuK]3iP}r?#OAxWTU9v4 4I79irי,͑-Y: Rh2#R7
4o\+)rDcWu9{ƽ~ZFjbu`k5FrWr>.7.w6	Q#jWix@FJ&I'#EJEHץ(n_;CلCxZ8^uXVw5κRQ1QztSde4Hh"%?+DCIɘPkK߲הY&
a	oVekYeQ{1&>#DSwGXwyP*4w(z6P}[~o@$V\d|ߢZ}*aRs*vh'
pS:, -@M:ZjJn{I	g(A\tz4Ѩ|m;Pѣ'j½q鴙k|G"? w!)57M|6/!GY ãovON
X^
!E(N> s#^ଟ֜)$z?g*agՒ
h$ZwJU-lխ`*,K1O
/f0 hU]4:k+!Vj>"x>9qNSѝN1' ̠guMu-
_,^x:1Q[/Efh1F.k-\sN]ӭ<Y@q\ [:Ueu:lҶ,$?[iq9=ˇ>+Y}͗p䍳q]GwHut)<A)b+QMTۈt>D梺cZ̺M@@t?DQ-Cr
:(rg j\@+/}CpC+f Z#*/4!s?;_5.1@[ȁ%@{6lC,_/'t#GM5ST
4[V6 /e:][BT{6'W^yVMevޣ)Pҝ$7&Tc3K05"x>,7cՏO3Ur[Uqo>Mpgj\HOOyD:W!VyWK;\̾-'߉0&[u}U;:B5$4fi4kt~.(3lrWkY!k.p7nsUU&Kjz\o^x79j{)g(a@ΑM3_+djpiS

;U Gv8G%o.a oJVR^A^D\r xp_9;&~u=6=hdBsD-
 Rڼ%&W0}[6q:Җr#eV`_*w<>p;Y	p0uGlBv""qdp%%zxMͣmN>Jq)AQ
vZfȀr8)g=Еբ~sJa>TQSx#X.	Kp">Ԟ~z%sT}]ZU~<_6ç]tt#z[UN3a`"Aއ*L绀7Z:\H8!R @H W'f\<SUU8<4{N~GDQwiVWxnp|U,
)?Maώ~tղ,uShΩ
ۻΟN0Ȓ{Et/W#C

2ApK"sHªy|ܚVrNꊻQCIsGe+S)is֕O╻37/
i[WwHEuuujBtFz9rj(n #3_%5ΦxCǜNNt=`pv-_n[vSKEH*L>o&R^SKǚn5\5
m
P$tB tc0=d Vk۞8\ױ&F*wa$9O j/#ũ}{E҉$NU,jܟVGD߇Vu"g{l}x/E>~1YU+IK&"^,\jn~y̥/N	p/xW}7Q `%@eGf%@Ńc;7-< %Ύp΋n3koxf\WPڲ_X>,ӔYc^c@l,L24ndUՒK"#;z5Ӌ=nX;@ҝ:c/yΪꕴo)x=>[}
Hvih]ݎI$%T8)r
8\CT0QUdFiv79ud?4{NQSS/q5	k4aNMV-ާ8$P
 zhT^,M_h{|nO}*0JDaҫ6_D{vgf;{C>8w&8$s3ӉY( V1^/oIV[W^4i_q[y/PPu3f4r5JiA:uqoy	vݩH5V;gN?	qsB3\2d ;̙*唏årYHGUԇk;c.\`yxq}J <XP> L) )p
($_VE={|vᙚ;*6lu(I5L.
wxm+/mp;͘TB@] u>\1eiFT7!j8}_93tffH,L{Rw?'X9mLY@9@utԥi$pNSo?ח?ې
A;c'A3n^r=
x{3입
13:vѐC!*/Auf'
'J!;؟;)[
ST5neLwNOzM 5NA@ҝ	HF\Usy8k+<\$0T+}z=`fKZ"iI&ȻiZ :e$V 袣+ĵ|+񶏪njyNge^g1U_WMQǿq4w:\
r{ח*HE Z;`s݂[[kNM!c7mGڸ*Bd[6ɜΦ?Dq̪.9& <Z^M<
hdu.=#ާcPiB.
P
h+Pv]uB&	QAZy_MIWAGh"8&4vZz1rȁDwP6.DW(,k@ONo!)ؐy݌^ƭ)}gmSfVB>n`4#\Zkc#m8Iܼ]ڕuB{|[7BAk{;y??]]ꄈ۾QtΖ-2Pr\oW|oҷ`nϳ1]p^JsmkM{nc4Yt@bvWCYwj~k~y@-i[Ulib&yVD%5 jK6 ˢ^*5iNa>W(Զљ0KE)%-x=Ig7KwR`0pl
3n " $[6yqk*e`3'	4	{Um7S/`(T;GDb$.P~7Oj:v`rS@mb]ڤ:Ϯ7e`+\YAGԆ=^GՀ b#9YvFxgCـf4uˣ]ut"<zF
X!tMTʽ(}
WW`Eo%85x{Jف
p=knȉ#/{G.g $#ͳ8tH0DLnJǌq/.||Ԥ(dR	N=q*♏ҬQq&Y+Q-s;rWX@0zc
{V5wx>hD7t-bvu&t
A1yHn&#/(pYvRy;o`e2~U9Ҩ
wQ	^lVl.7d+͈+pOkTgA#츩79;TwT_u։$EWgu+.sJv_^#[Nq)GJN[Gx4{^8-oxqJFLbwN	6-`!#O.3VQ 6(wҩgط݄`׸Jȃl8khr֝t:^w;EETF!ء(@FNմ
HDLM5Y	jw\q#L=H~#ܻ4eNsH5$Q!Gȉ_<[E2\l-d# 
F/~7 P`;;&T+- R!-KGkjN͜8>$K'LdD%Zp'|q.ר<>[mrpHajmΎU|#I!wٳPbBJo v[\\rhiڟ˃r`?9"jD0{*切@q ܃8H Mʇ5V
JN,o:AwO:`U`e	Yvڄ
T*	`Q$͐:Ͷ(x?/jZꠟ	$3ؤ{Bjpr+PϦ
R;=pV^o`ӊKA7ӵvfN?]tشɡL{{++[q걟[~~ܯz0.$MkuYѶ%]<tgZڶ^ZDp\"1~~5G~863ԡEP{L1\͟0Z}ۯ6Ltx EvDNLxt
jyn^H;"<?H߱ aHƑ3+>PCںjWh gs>VO/i"9ZT9hWG0o34Ή*:ձk:(roRzJr`γv>Srl;Vv_sF\s0ijmP nԲ^un|1~>:Ɏ
H<>RV;ai5Fm*Y-hմ!O@"MA"aX%-prՒcZ;>B<
E3nLj_G+)ש>.UZp`_nPEר[-Vآ_+~kn)ϸ_CԤ>Z9ZJń0-|}Td-ŒitEe@Dٗ-)wnUFwn]= mJiAyp6㦺Y9uC&*OBVX嗦6rՍqP 
^8/MN烂Ղp*M-P݌TOK+NYa&pE5N՞ַUd
>,p [cV<͆kKv;PVbI@,}+ɖCُ{/xBEr
9$gq+Zoӫ߅=3mn	]vAƬhKpW-Nې")۞Ds,sdoJU3٫4E>.mvmn6}͞4VȊ"=iq~z7Sѫ)kv߅+j3:)%4M}*=eD;ELUK_PF|Gu e5\sSYCW#&/.qUO?ʜxMVNίl˥<m'GbOO'h>. l8	"ds5
i^7
L+ul!o2`ĆYyqwfv~7ϑ  Mm51UbsLLc! Lek㞂c18'tziU"k]GHVOH_m|:;c
0"if)!GDZUͻ>*l5MTRmڀXj
7uU! y;#8<_Eyn`S6LL@q^ܫLҋ}F}SbW
Л**A~EyKrd-˄ɂ7Q'p91f.g8/8+%U$Y	\\ۇ;U1:M ^
\/н}1L\kC?ch.v9*(N[4m0o2XV!j}-
y5T^,z3	v٭4EoxVhoVQ>!D8aA4P$龎`_-_.iH'p0IѤy+ho:ĥ	Y)5st;3XU\Β'Nu]
o!M@97$U8{+V$|kHGśKt8~3ωW1Is\];nZ@X.,@gxA`);:u۱zny9xt/Tu G8#ԳG΋xKLJFNA]Ɉofh5a:?ypZPD^hpQ=u-<5R| gpYGnaPg{~>]#z!\0\QTKXÕv^a[azҦ}\6]OR]>E˗#%@y,pR)3;.Q9ٟeIl6Az$Ҁ,#n2_ja+n7{
_
yE̩;d~9R\9!
>-ʰTQUn"lDI#.W.姡vZ[nl&;,]U0F;}|^a}?7AxKKN%>XǭЦEF
`"O~nE7
7<i	auЗG 3稻Egth1;BU@Uy*s>:\}W~8QtO+$5h8@g3YrHk>]Q(OT..e1[Bǧ.4ss/7U!{E\܏b9V+X:(`gUpd7I{K6pƞ1늝[GTW粹qwo9}P,S1QaTgQk}:Hd[>*
$tق.KO^"߻w<߼|5I@\E/^2/'XЂ+sC=wq?jrM
or/R*V<KÃD$~5"9.C[Qu҇(PMTZ]Hݥ  #d18vr.^^xgZ5TKu:լswxԯK虢Xbü$ 78	ڪ܊F[+|NZ;uh4ϻ(q?M+Ww\֤\ﱩOg&VQ ǁ?QĘ+*|[8:n`T&۱mI]k8Rӻ{*U&
ȯcX!wT~8Z}YNռmrݨgj{_*9cJDQ	X >,l"hKeͤx [yΫkLNX0u0$h{E蠾w3|oF~Քj\dT4h3b!gHc	`"gꗫ:<H
2
/KlroU_
HS,ϵ4u:+o'gE%[{(
B2c58p)[V*y9;Q`QQ";&r#3AR+jI~7K7Tp\5 0,j:s3rd_N ՟UxMi1t;$[R8aT$?6AV29>W>ud4wYQ{V;7rJ8	 F8hB5_?Né
xAAW2f
g_E?vK>|D~=E}=fGFHAd
.V< Z0'V첾XNsϥWf"T%[SQ3κnSsFkH h|9UvU߶ݤf\ pGy&gG Aa넜@
Wk!X%	I0Uv|leE7}GAJ9ݎPv,
:/us:2;J߷bcG-3r>V{5NT1
v%_XoGn^7ڱ/ui|KUo:
޹ .muS&d:M<UNs}LX I? 3E[jph̼(j"poAo`Հt4]"jPxw`<G2]ҫNL88dO0ր]s^1O
2Gm%YbZ={gFĨ'϶P
5$?T}.`%"~_BN4 8B]}Gi*z*2ڊ|sȮWϣV'6ۼҍ{ZYHSX-|{ :"x6QPѢݯXqŝcrCw/t 5 viyf$ R?G^mOjy_mrգ%֝.(&Vgfx*
l)!˱P>WȶiP"s^ڀUIY`O?;u_.]h7ӁJκ~
/U-vYs(pArǦj^+@^[rYXx$;_PG \Wv }<G4XJp0,w20Gn!Cq} qZoE,g_G(jT]>>;?Ulꄓ\=)odvm,Q&N$w֒sCTj/j#'BDp7?8+UE
zdn4h,Nd	ܕT&O
XN\67sX%񋂞JC*w:xv]
Fx-g	ϟ4YEBr߬^1h8c:ϻPs|8aՏ%4>#S _d~I˧Ո  B<zٔE&AxG&;|Xj#	OeB.ށ<5 a8\R蚅vJsipZ2־]5%Y* ^db*;ѥ[*s'ڈ
P"zu|麩B>
qCoؓ$Ԁv=.(yLX-t٧{<QRN) 0WO)|+9-eZ0MYT,K/iVqd9. U|ҏN-:;&הiG펓[GCp[Ք!8\e'E'5ņ|\S͔k	u %{g|"t,;*]Ix_K&7}r8AbxAD!L> PC#z}.6$}-K\B9s)k#	k^t"[gk].䡡rW}8u?}KpeREvW`2[~^'+&;{bT\S.-!0#F30+H=$~j|ghM9mDk`Kp1p8EXlKt:q0W'VxcAvťS}u79arH'|MpNi$7@̲!R9@sWϒg)?mHݹ抐5X LKY-T]>`gY97bN$]+8X:WJƠy\SqxCXж+"l)z}k{v8ƶt#>l|P@sR`ZU
ta)]$MPIdv>J'r&.x6S3tX5\u{%` +7Uu;Z}0}GPe}Sܵ _ ו$WO\V1Uz59bv
5Kţt:V>qڣ32O5ak
*+`
&]܆%vmӮ\LB%AyJ$ϭ(>wBA=:^yH*n69!8Je&2j?v [ow5& ,/7
iwf(n9P}lpgg15i!䮃P!TZU-0'&"9&fSVkf]su9;6 qג±?rc]-KjXYdR#$9AkfP>z#SYY$^O= >k}vQCu[/NdNvΓv<"/[%Kvd\VmvMs` ^ĩC!)q}!PT^xuN9ɀrF.id=f^-D"Ay?px̓hS-{I;pR?]!PX+GW\^}B*=-[%J <xj7B;C;yfI'ʶ9'@]OQuYTpwe:"vo8Y*%A1]XĠ҂	UE[AwVғʭ~r*]k'`TD383#w//)}bJ~ŦkKi
qٹ}(:ӂ<mw+)r VmɠjylMkѺ VArӿF,ç>."yF1tf׵u_Iv<^w&8	HPq &|dۓ??u_sTVq.M~TZN{@ C*9+=)+]w(ER> `^I
9mgTSG7mz	kp$s86O<w(vjS@]{ӯɁRMcK=LQ TeQ	/zZ:ScԡxǤ5zմApEdIB4<6?TG~T)pЯUhY2wN,Y1T ZA]H}M<N@8><g-\rNhVLqWxsA/}n#DF6I;Aqu\0@WHT;\~Inюl	~ToզeuãXwX;q3sT\fm,4"GJ{I:n̬Su_Kǣgt˼AKF'19Tg9Ma\i@$!qf&9LX `%DqrKX]sjUa0~i*Χ-/I5lg?ᰆwcW
9UZxBiT>Kk_8:Qu8mq5׶C5uI*PaAKsvWr| G
NQpc>KČ: ˷O֗SۖSsXG~jNj8L$=v8'-vsIMgNY-t;}&K50Hh]	z$vX[	>OiDX<Ev*y~,3p;I
z;'ލzuuuԄJDn.7.tt]j;i` 9 q*JggXŵD\elO%>^bth
t`v^1@ڼQUq/KF,NRwMX۫z.3io;mGqAPE^?AqL`t a$=T~{|D
hQ{Fϧu}D\ͭH
qPIV#J^DBb}p)T~-?1Mw?l<WZvIlUacz}d։nfE~)5IJnHCU%=KimwlzLZ lb
g]_,D9`&~־䴯#HZUQPIxFV* TKIj1/yarY_z!o4Rdߪe6/\?ej
!1!')({)(WT<1[
KyWOtI"h?=X\<dD=:C-Ñ>b%ek[D
><7ab	V=R宼 X~.N)eRǫ?όoZp;uϟWvH[XzKh
TA~t7rGȎY#"MB Jnna,j:^<k4#xA%Yǫ"lT%!̂IHTl5`$,m]XY=K@_V̻:e%N\P"^z#hqb,  uݪzr}iXEܐț
 d*^6<A6)JuI]s$ΓAyݩ`o_g5Բ=oZ@\%Oڎ`|k;I(xD-6HBo`-q;6u20j%E5ymS"%>ܕkܡCp $-	D8/@*Bܺkt-LUr֑Kۤ5C'tKk݄bґb^آUDɼ3L5 Jc+`
V	2\]2p
nֈud7|zw؇,sUy,Nm_Yŵ9BU	+#&`W]77o)IVʂæ Y!x
iW+o^ݟ<D$au^t9D!iB9E>?zHd\n0=qǠ|p}OT%q6BQ	*;Cެ`V0{ůꖮ S}k{6V{+v"J	2Y]-m_=t.	uaTwCxvɚt2{Q
^'ZgO3ז`q$ P΄ul^C*dW.WGC@Œ	Z:$#6lB]V!mv/(h{/wOg㿒]'.0's:N޻궭^Sϻ<\ǯSAFZrȊ;	ⴭV%(@0xm!uZݗ2,?n|!ɗB:;]?~w$.!p;cAOrw~3p&Q{N0J.=aWrFD<D,Nmk4熗c,dsM0Ϛ +1!Q*:]B$6{*m2^qsp,;.u*'U D Rʜ6v拞CyQXRf5	; yuiu׹r=kZm+AvyXY#$ vlwStǄ or!g[QXw+$6HtS\*=NZAŜ1S	n-]gNUe וky Imz{wv.S9X=j.u5@=v{e%^}wLD^m<`%:? ꒫GR59W}߂q.y(CIK^6ހx$X욣-Bd>crA:OvdiH5y%rVĵb * T 7-	2	/UՈDGu>CWD׭e<GX!2l"&EPTy_^gIWܢz bKCek [Jbk3t߭:vV!I:ݳ[Co7l }Uusv+\F>xIx@\/[
"@t-<^TmG'KE
I|v$oP>k_MT!W[점}:Cs}/KN%Y]OWr\>ci␓+4?~'3Z4QXy
騉^Qet8N %QBa Twbpp_xe>T%oi.wuAB>:>Swg7!NFZ)^So9d#"8'}ԏn
Zr#E\Pj
!G&CG췥LCiX};t$
!ٿZokpP1jG<%`tNg;'UBy'' wHWj!] vk-tU-RPX#бN_%/#kj5_8|-N$kqwSejLp xqy=evˏ]wzt5
*Pݫoz  [&Z*7(*YG.} p0e΢UMUz;xS'F98Q
h^FK]EPSg@F%p4mtEvgB'(՗m.PR<kB([Sԝ;xj(".O/EnP:)
][x >gT{VzGu/h4
#[GQV*;t٬{MdgNj,_րW:mG'ꊷT3wh[YHyߝEݶE88
lͻY A(h{w
q@@hCvӝ\6#{f{93$Vy+jP{*Ii6h3X74ZX'*q$"oGIWC FoQT)18d89,UiO}N^z:CN}|s[6I"urWD6/4J1ӅȆX[
/ ?/rL@u&;i*Ca/<qgzO?*ܬtZ.cqYJM0בi>V,A4ɺpYtuer>()M~
][p>=,B"izZjHr\4'Ao!lCK#B)/	2Ц"(w|A]͙*Vŝk),M}
VzW݅C"9(xz2:!-46u`2oNВ4oO~ޯD<uTxE-%2T!ޚ
Vo?>}vYMbgiFK~%O7V$L,?&œ=2 Ӗ}g*~9LW.67/;ʇmb9oI($Ei3Ԣr
IA [:~Ϻ-ģn:B=yK+;_J\ؓTo:3xstpOՊDKm=gu05	Sb1{]W;CEI7Vѓ⪁Z鎃opݙKfL%1|9eq;A(^=4yGU}fUmV
gn0Mf$;kedGF^mb`x늘LVN媒Pdܻubr[j~V.M a\d15ue%oП6\gsgx#g
 ~
*\>d@e03A|N9<;3f`3 X.w,tp
K@g<If47c߯?io*	ht:r4]2Y;S)Gܨ۵&| x2]jN;%<Nm	?*vVqi`
RS]* 7#jHn=L	N}T}#_bpj=+2ˡqԌCka_vQCn3	3E=FnRKh5y\Her`'íQ([O\,yԅs)0u7)MB!}
.ާpj'
6眣Gʒhzb_UHHo]{'n=ת:.F
s_">C Lurq>6$w<ृw7'[$=kiy.,=(/<f*H2Is:⁹ز?M`CtӏaD?PABpBJGo;nr55Cz@'ΉZ&$u6k5
uE*] wt_wzTӫzsH0Ǻ$PI'ȂVN8Q45PMr-LLFˎ0BRݐ$T ?\]NzkɒYQt_b0&#j	|;C/d̝cֵl\]Ik_Ib:CÆߔ&ʝM]G͸T(h-fy<Ƽɡj(Қ>uiP~eJiQ%\K
7c^OŬn*5zlOXԱtVd±5ꓻ\]\6:dQ_Sg
Jb
>-A*sM,1<Î-7_:]K1(kE yqIb4[11F[<'ȸ|P
X K!1 *CȥQ=N[PeK ד![I0KdQA)|
M[Q|}V]~} ~7%Ͼw
_F`*ιm)^ё2?]ٶT1R+WXۭ:貵woG\Ҝ_۱vxuk ThZ [N\cs
:79
q.ʪWUnYَ檛oV"Gg}kYzjlY{]Fq`a
-ɪm /
\['NaHDFWDh-<ps^CsN,gXB[IpVc\
[Ujh^ŮH>DہuԝuO[Hߎ;Ґ9
ŭ7Xj
c\͜
BT[<-i`#*ٰ[.7=!Rtrl?#T&{pp1:;U/sDG!U2΅G$3
 wu`ői^-I8HGҙ [_}Z8Ucv'ߙ[[Gu62+1t7J۩A$k詙!#o傴n6U~~AsJ  YSH'evWs:5&8F(7yoPe!_?gc㴿n-0)+xgZkun%9o$93p5/C=芣9rFl~*ޚo??@t1s''ܐapj=%V"~P]"9ͦ; %www!oNfJW%3^|<<Ң b_MJ~:iɞx(
x,i^ƿ/FgղlJAbՆ[y*$bm#DOhMr̛g
ZSă&(tR#M4::͐v
(i@ϟjh-
h~slL' c4XNPmP}p䵥aNף
|.*y&;[WɳbW\yd2粦vP[@C5̾9I#D:s mKfs:Lٚk8ocf{o'I?c`n[<\
jnK
ݯp8Lݺ3 a%th$y
q E'cmA}6VBL1=;*
b89l2(wq
D=M,i-P{Y:'.LZ;Y͘%[^qv0rgD:0S\sw{1#g{)ꮐ0x~Q*૿ZtY}ӛWl]Y;NVS+-nuPw移m2򎪋 	 $:}|Ԩ䧹vt)BGBZt=+[U8t]ee48lriLr6`M
Dn~S/gNK|TSWuhxAs\;g[+/Ă-rI:>}n{ɑ0ڶW7gQ*48J}b۱)M>ړSՅjѲg䧃G{,B%.e@o]C}u5xoFU IըRMc
\ǣh F4<Fr)U7ۛw%j9wֺ]#@{@ӎM@o}n%IqkV6
4,
m	?%5S~׭ږWA^W嗪|35!6ɣ
]	xa'ްm|O&;cG#܄ہ
"fF-U!&qԗu$(:9|$!S}I X ژIV	)oDu{VR^U4gq$w ǸoQAJ,whsEӏiߩNIx3LwZJՔ(c'o@1j	%+IERϽ9>Q1DŧO<zzY\=+Jq3f_[Jy!	
yYJ	4a|݁- ݠ
/tbbSkpj^<2I]	N!Tx/Bf!O=re68`
({[V \{j6LhK<BfCrCy~Sz'[:ln@$뽒Fpo5TTW
 s+)*0aP
/DgO;<Z>tY*zbftC39haO<g"7mM-_!.kaA2~]7ѶKsuTb~:1Ӆ[?]H
C͛nB
MkZg KQ́FV@t:idj,~ONMdpA/">,Jx8_2
\J \>jpɪEanH֥Ȁ/jr3 xYra#(;tbR#qp=@9L2t{b!<yX u.ܥ;֪2G|OJ=<t \G̉lӂ3qȍTʪͻcJSrX;ZE,؛ÚϜU9m]\\%%|.K5&1WMwG-՘`T~;.ze |Spm+/g׫Y596<qDAUKl;PyJ$ˁlG.+C#WӍԓز3/|
ǯS޼#Gb5\Xysۤ'dRStjyxhcHfrn=EsCh3[pxsڜ:C=Rѧ<ܬ P<q<Zq._n;/TRZCvڇ|<Ohvq4,RhХ<;{r+κ7&xnm7SД~M`YrڳI|Yxu=ZErZЋ'i`h1zhFԇdS:(6EiO-)"HotDGO<8yNIGm޵]], -7}{9S\^y+Arp]+qu>*^qS
ڨ#'h辔I~j!q>N8aTKj
_Ji+N_h>A굨2>[?={'O`o@[Oe
}io|tp5@űU/}ÉGZЩV-awe˧kI>eoNF]YMǛ.>ppU'O8hixe)vU*͏A t4JqJtMekqܳf7=
dRTũ.M;USYgi?({:2z3SqB®y߮~j OX@@N._"0Xps8`
z;nz! 75`v@$3 (mI^w	#_)?nZ=uCx笇7lDLMݳFC7?)WATɰsSEmsL̸E-F԰ 4GLj%jhgertgOlbjίg)%yJM|4s%:]mSf|r:	s|gTF}fw	;n9m+(<j/ziD#Wo
u2@@?ޣGWZ\s9>Y:ףq
ڴUGۗ^7T(Iy횫O8Z)UsY%)|P(fg 0 Ip٭%د'9iWVWOMh
I }[3ОmN~(QoN1x	q((PaP+I7ox[cir'1zjuBPLRЃD̡<8vo$u$"?N0㍿/M_0]
'jG´+)@¡^axϞ
[
U TZ21v5omt*/G<LmA/N48. %斻ƭR2A_{~ϰl^=B$YC=.m§ވSEcv4'w9bE=}pm5^}g
,]`'UbT,m\k0urL
TU)RSCڟ:2KRԣ9:_>~:Stk߄:^P~IՔ)v⒢REKk쥋a[?lre5B>p
p%TIHpLK}nG{9#pKx%R4#Sku*36믏Paal%n&i'ds/wβL돂҅hY@2$FM1f XI`T]ѮXw\ gq),pk=}Fv3Z"feA* ;PwKIH84.ā
`L_S&_447kՖd)%9&͠Й$<~'T%Dt	JeM5de07h>AمVFX#	:*]Rr'SPUw[jvU@G<wK\bFF s?<#0*Dyt`"A^?=r	񚟷A)oڻB(㓈4q^'Z?v!iݺ|â;V쓋]LRQbWU_
	E5JW'8y%	6qX8c

C]u )\#e6Ԣ3:,W􉜙GUE'/T(>ř.ÊQoh%xUWq #5Cʠ^y/aNfL}Wսm9:ou)
 s%R5NrWB"<փk'-YA<0Ξ갼o&{:[x..mr$9AIU^	l,w)Pew}e~_}4幎!L
2Tp$}r<z{i:Mr:\?k$-M,y3x|]Qful>	JT#%n^KkҔp -JK׶h<G(!p<+G΀iݫm^kws4]
YVFuG⒐<$iaqޏgg+&5>fީCJg7Ej*iYzͰ
նϝuН_Tc3rz(h++ϟIG,mNH&nh!\~POi. 򈋦f dڼ9pkhB׀E9 $Ϩ0^TC!|`M!ZX7vOn%A2i<:>ySwvԎ.+!~y< FF?g}0~UNjq,o;vY:W?ٞ.TA].ŝwshPN?`ڦzYBT6:=H~Aa7z.SwwAtw".~{|>(!-encɇFj)#G.ұW+)	|B"}f{W@*pE2Z\	JQQ;qm߯`IYd:W\C<Os	x([%~.!6>?008(
XIǩ4Ic?&|z>S$4gtzms|}Bڶv\&B^܆J(ac`4CVt: E6әVǪdV4|7鵩YUʛKSEV
"?
n
( '<*5ܧ(]Z0)X<M=Z}ğтGdl%XS'Nձ"hV1&REJS-VP0Vz-Ҵ #97k9m[|0Gb+;Yj07"pCκʒ\-;v	"yӏև:q C9
'^XUU97|ʐsLޏǺy#0d9i)*wfPFdq>LUnufU׬7k+Sn_PaTIVڤOF:-=x
^w8R)
'
}(5U8³G2t9	u-ϱ?QΒO*vh@|v~Et7j$y	 ;sF{rVvkY/ͮsW<
4Su[5P)(3זoSut8 2/Ś,V	q(s-@$|esKGA |/AFHWWp7|Ǹ\Ѕ9ꫳOHQπps;[A)Eu<r*C^
+6Jdn-;Y(ZYo>X=RPAt=Wqs<zZFm_ڣt=%Ik5e蓐!RpKOcj
Egp_|hД: FU=΄9XMqMF2pF2f޼[	MvnG$^|~(ͤr)*ҧ7tt?%$Y0;4l%K.'e6 ށ(
y{j$fIi@cCn`tC۽<v%5KK8JQ';6|qkӻ~Vh
:В3=?bfR/@0s(h2K҇ru܆;3oBpGUc
Kv FX%Y-pyBۂԥ!Z`W'ڳOq
Cǎb~
Ʉv9Z/BUG3Ձ,vVݎ_/)6#K釣a߸tQTv(m[Lgn|xުR+*Kz-h@ CVjT;z""),|KN!1]5]r>?ȡ^$%H-)w\QfvVܟÜ~}minHu\F$K;} yk[:F3|+!pS-%- vQ@QU o+E8@
 , A&^ΨW~KAĽ=7]I26g{zL>8kag)U4BI'ڸ !^}]@}DMzF"LyפKaH	ջn]5ƫ3Uu|bl)y_ww aOU/-^0byR	VC>h%V @9aMN
(A{|"8P',dSWd~l~v]r,	tupbFRVn!Tח9wJG:XF7a/'yB`x/f>Ip;+\M@{+oOß\z+2\ҳRt`ޭⶳ@'
P3/#]#0FFNJxcMڊޣ='r*f"<gM:ν:_+P &ojj#42 gC<L3q  ).N@ݮtwn	SU
OLOYmlΠ%51뉼ΘV
y]Zaǵ*\+rǬ*h)%~BF{kwx?r~9;:V܇V6.GtTy0tH1
tZrAoB`mУ7NRe V0&z~GX,w]ULpJ5y~:QwX
xVahOfOˋ1*?;ĳ#+m=ǃɏsѡ`31nHYBsUn]ҭ|;J&.[|:-pT5jA95)oB\ξ^~ud3m &um2yf]S&EOx6tsSyNMMt$dhKlq:Wa=YP5hv)˴ 6[noAI	%3o߭O&(W:x:.ǢGu\9]O_*gNr]$z{cb-h;-]4}~*Du#On*ΏE[<ʴ
k[ W*:(ÅymV^I-wA0<tD4w"0pߛ@>zCJo:w$lɮ:B
ԤINGF !(M@s^!ھu
xMy6=P@'"ekʛ=iZTEĠbw8=x|I \Dӳt(O~Z:f>^aՉ&e&~0}@QpՙﲦM}Ix	U
rmV"$T^pJvu	eXެ`?_%(QN7"i jV=P
ׂ/x5盤ީ\բ[.W=h-NWw@k
ѵ?R?&kݺ+Q8IOCktƤi+$k&hU_3'>rWx݇=& gŽ>6ei+I>XVM-/T+[E4\څԹN~XPSu!kݕ^]-zQh}W8kɪJjpk"xo-s!
:}-qJ{{<ei$tؑ1\,WЪ`_y6?K)5՞doX>"
mƺh%~Fqie>nQn bWM9
V]OjqѴY4d Z7&~a̰ETɊ%4.g3Z將p Z~o"_Q>@vc\.Nsp)ЧgRE2!XE{;Q#SOoV%[R Cg'i>=ǽDv2B
H-DBLMť,{Yg?³c
r-QN
ڛπ{סt!dh[ eS%H%9|
Vm!Ⱦ|PNc} %|p8i<eDL)$q&aBSts9Խ[Bvݩ4#A4r-_u"܂#):pت_
ɉ#78t/8ԇ_T5KR"L p+\J!gԧsͿuW%#, YڮYw'>+T>MC,Ω'1	O}qT+C)Jt-J[9HׯRҽV2\;uJG ϋDKa2)l-+2őƓM_y[ާ~2	U5k<\O8nu!e6Ϭ;}z0[O +UE]AA/Y.b.Aa%5<"]d0#u'}XS[#;&N)-}{k>+[<lXը[@FA
|ȯ9ManxI6XDOL:iS.<;,],( E J:dA
BqdԜ 8`$&[
zo弇{]PA9NDWlfӓkũ2$˯5AԚ^<1#nKUAn'lIpSt{xFM[~ةLണI`{>u~
_
Ur.e	8'=21B,^"	VafV52A@'?27Gm\@^A),sqұN5y4g G0A-n8|K՝GĂE˱W0բyC Sg
	OQW!9+Rѡl|
v+[yV{oDv\lA?tv
QkS+zER8]Krr0DByqE𛳨-on<Ƨː=C.Z\*BWn{^YtHI8Og@])+2xh.8Lzs48 9a^Nّ])y~ !QZ+1_xjR]t#R-/zJnP+MvK'7jg$ b,@ z3lZ~=ŹJiQt:V:G̪X}B-;?ZՓ*e:~^]&'UFsX[:O9I\5[|9!H%SaD`^xD).J6\A:̽wp_0i|^m5
t0݁̿F^\JG}mu\l75Vj`(N!O7zY&BmFO3)h55>^Tvڗr.Oo
*(7@doŃ?$G9a}[yQ^hKh+mc|^K2&9$xH`{7XO̦.p?2\V|y+jdt/>8a@RPkm{!+kp*
_>㊈
Ϧ|"'^RnʩۂZcE"Z\soR'i(zq1kGeWF:dZU]?Ie)A!:p^85mnZx]U\u-Ts!sԱK
`ε\ǀK$~8BRjT9tSyDc>*4]xr"i6`;d341ty4="w*kz>G5 j 9mNl_-4!GYަ/Is~.(Z H6v䆿&=UAȖ?
>ī&^O [6c׭c&w1Y5T?oy}K0PIvUl.ϓU"`ao*`<N5!ˣKy*vbӞMgt.v
M
ajbWVn` XMn	&5V
- cnUw ~pg׵ǲL[3 %LBi n	\3|`Ŏ=3\
v
ٖ>Ť3UCc
ί\LߍK2k"LXώEst=ͭ 勿pٷ<g;D	'
TkM֫cA1>&哣HB(٬"Bи[ey,={ʹ>uj5|#t-PG\'}4Wk`q̑?^" 9[IBNī-N(ii
|@klU0̫к@apI8+mp#LQtor}4l-$|jhN*s?ē~%ʯ'BwuTmmGNI}\' w
|?*! m+9hHz&䴺qZ$-Y뮱ٶ$:[nP*dTW&xjL%KgGT_TǢQAnk1K*G0h;݅D j晞S\*(
NYؗ@[|*?%R%?onC5G:
|
b|w5)vu5y 0zn?^6imL )i:GB[|k@+W$2毺'h۩Yӝv
Ɍo@<<
>UeS ŒCP)EѦ|l
oqonvF%v4ۯn@q		bsT]պm,9 v>/{muu](AVwvt]k؟vgRMCJ@ g.6kfgWtl^WUVd;z#Bl{RHcߝ㸴YI My\*ndei+
+䳞
ixۖ*uy-D5ߜ G|^@<eR(%'%	tVMh92:AZ .\
͢*!jm"I!!<4s3p=DMx|Gyy^4I겥PStD?;77FqG,B!FGtK/zis-E^_jG zw<GzR?¬툌)z};vu3쐃S],ȤfDfH`!nM^}ϫJ;E-ϙ+ք$eݰU3t2q]Z5jMӘYuG01H+7S&"Δnt|ꖦwحď!5ÐTzcrN$kl+H6x=Rӯ
<סD5-OKխ|'T	 L܆3Ԡp-~% EO)J_qqϓ+9߮ F/ }9"q>*00H@Mƕ7UX6dߢ+I,ۍr0j̩#2h@֔[v}g:brZj[D7XB`rWWZ՞=4gV_Y\ݲp!:~<v71]ů}UYVT|9m˛+RvunҨ;D \Kmi:Y1YG^冭~}wkCkbioΆXk
PBbǱMԧG̴ֲOLV!s<\E?
2ah݉\)|).N)/ߣYim*Eg]8O#IwS^69AVT;rH
UF}pԹ/s[(s̎Bv"-- A!\59
Sh~ǈ\wF7[onjf[7QIb8+we ='e\#\AmgAS3'@VB2$]Z$zKq第/=lOao qv4v7lDh5F>}s}/R@5_N#TiWuY	ʤmCnTXa-hwRyy 'SFGOJ<k^~`

y8_O >A=Nյuof%MQN0Ô<Q\m`/o;pzwPf&9t}xxϙz2D&J42ϡ/[9fHcX63SքuqH8;zR0>X4\x%<V8$-j?jVշ8>wp֟N'lD*Q3ߟwQ1hg^e>`]o<*5 pOlǹ#DMC*G'γ<N lVUTꑐR`ޣxDO"p_͇~
c|JTz&ȩUݧ۷d->U艤Ϸ	9AV;:߭ty	UUUgQB#FoHowxU(vR;)ك*y
ނ/I<uxKvA_=
.aJyD=&Oe2d|^=uTzxŠݮZ+`͂C[- 剈>>P/@U-o_.1ӃrLh7r-լ" K#E"AsǭtrjrD օ9խ<S1;뜳MqU\8{EC»yK}qk&xOU V-}&A^	E2~E
0;Zce 62B\PAv9(=n{>G7#2H;mSW	>qÝ.V@r+qUj%XxH۪3F*
ivjR'T|1NwxP(LK~S;^so'ܕY)w^Q@
GvGف=jWS 
HRw?r6jT>;ի~=}{D;*_dOYgG܉>tfؑ#U׭֦.;ʓVT/$ڿH߾KM>!W&@_r84Nd޵$=f IM/͎]Owh
a0UIuC)gY<#!y3Iu ʯaq)yC,,ݭnoqm@Or,]PtɟPx5 -Ȍl2\á	. zi(`r]p'L뚗Qx,mӨ^Lhg
k+?A
MM!zurVa8s[^D\^riΪѕ rP%F/$"5Y/,ܖ}5јkwE1ʋɻ¨('!w(\$,Lp
z]M?xŉX&2O.݀_=}T }8	ɏon&q26Tk[ݤ_n´/4FVi~>R$8k(}ܴ#rIYoY=[寧6('wp>(jFsa q%,)_%8jD0
&+k'_Q{y`%O3Y&	'NLQI|K2V
dާ;T+"aG#
hRVVIKG044;w/Q2fB
?u PSnuAswȘQqpI<\ܟ{۷>3/8-0<o}!Vd	}%>Qr^u\MGP&C&\`k̕C	%OGΗ'TMmVx=|D)tB>$4>NDj:;AW_A4VP$)Nu|f=Fbݯn 0DU4Y2-uS3;USG:Ə56A3Jrd
vp-MWShSU[K2~\uuD5kc)C$m7J=aς':	7MyHk/fNƉ>Q6
t&)3:-
R,9)Kj>J@esV9{90vAQ_α?괸t3TJE-7w$q_Zܤ0I'	&0lz~Iì/6x蜹vs?:	ݸ7ټ+3&C]}q^;Xy"NIhz3Xli(pzag~?ณE*?*E'8|3~s+DY^dU}k|SǸ)`斿wwpʥdVYq.`ʸ#UOn
zEJ5hoӬj,TsFAZs EV#;3I;l /_qL`@
A\l'QUmQe/xL
 <ե-˾u;]c˴qG;38xsJμ]?å	]rcj(y6>kK i:]J<WU)pXmKKc=HO;õ/)0|+޽.N~;h{c΢".|^WP틘!vN3L{ `P_[GǑhY,&_a~`y"Ncb?u|qZm}!@G@G%g[btp@]tBvqjyct}ELw"@kvҚV 섈݇G(`h\Нl,K*m!^4	/
}i1yRwJ})bw
@GۨT2]ƗT=i'E
ǭ#R=
3Vq\}ѱj{rg2Iv{a&w`Q7}t#UC7oږymzy=0ZژgRS2<{$*O-M\^U)
8D{}~EǭcN:zeSh /S>ZXi2R^;bwk/e]rm=|8)}lpay=;g xY  Xx73K/ueVdU [ԑ9cJc]?6>!ɥ	0L.+W`o(BGtIv*vQɄxg=J9IƲ[O9w.ϖ6"sbsX}khCV㳝 
8Q.L+Jztz\}}@ǹ-w  좨jg˕Y JMI6j5?'/W Ε:#\7t Iny/^vjhI<m|{̀`}:Z>;bbAV9cKy9S M}ZVZ܎Pߥ-U'|T(S%Z;4Hĳ)ȏ9m݆{GQѨ"6 WL"P^ K?0ޓPw㟭>Aժ<nx <_ʴ9{ȎBptqpM%KraT`+XSgA^vij7;ˉmiVa_)R@r朣y'"M(0'\<Ѩ
1=͍s#fUf,ߒ͊`|U|-4:*A/DX[)Pbyg]P#ZѲ.)${;5(L4CëO n8(сh_G? "̤Sz|~x2:a8tPGN)Fc?U:wlNGv5φ{+xz6IO(ON#8Isw^tMʬʜCp/h#1n鏧lNu6hU4Fk@hSZ$,7/E	8ڒu؈-: OVXs:ġR-C"I<G	]cx>Q0<O>^yYQS2\3;TVfji}e+fޜ8:+h|3JTr:(kk*}OF;ʼ#
lQZS~x I
U?,8Jj1+(ʛ4YgۧvW-T71d+5RHX
汴_~yzK
]d.:ͯW3tWGLU4}TҖf3DJtM8܃b@QHMktYYȻ7+AۓDAMC%@NPy!c9O7UGHܢ:F pb.}PVWlJ"ߧ϶>{	E$[m
{&N=}'im
-Sڧ0tmq-@?MHe	EA]D	J	FPۻBSF&6eg1|T8 !\[F<9j$Uqr'9?>8	td
v~\.MËPd0 ^N~Adi:Ș"Ly^er_f~=ȃ@-]_9 o=[$r /Q㧣ho?f2U;'[5pݓ(H[?jw8p?BE @]AX&~EEʮ`؃[m	_5M1<nu!~=>@[kc%v0݄`/(jG<%W	MDy5Zt^\i;n$WVޞ&{txL<a@%s] (k>j_
PlG9Pw)#D'aۣs^{5Ĥ oӪes}):'[s$[r,3\(seE=;q, 9s[h/Id Z.^:ax	z$NXINH$#h0 +Šp<
CFrGZzKpS~2]Nt7ipnJexF C oTΡf78wS)))S,=y>qJ3]|7 ڏ\NY1:`?4ڣ6էNawz΋Bs/<)]B!$t4qTz'"իg9LV;/#yy_m;	㏶]q}:kQ-Gߦ.NCkgźVfTPĢ5Zwꖛ:*![uv2TCD}+gXYE&,7l'C9U5݂	H:KX FwY0\llٻ#$fWHAk˥9Z*I-@8K	}M8] )OH§{!Nw4~G͕cd-zߎU^
uiX`~j
x)h^; Zpk7ϱ:Zqnq
W8yL+q\dHiتCL9 hkCw*؂H_ ӂݗf؇z$Ξ`JRatxI3DR	$TXm$|򹽣p	DC6wp天MRD'N2s2e'nڅmheyD_dBѳ
]PGO!r4\ς<
נ*iuxBB#gqʙU#1!ן#x+rEDDd9aD8s>smH !$nU!VVyQHS^Tah'd]vLIAЂjL{¹Qv;W]g.&G`Epq[r+k3vGs|<7D)~&F5f[ɷ's%~J{SJ/}Xإ4?O#j䊢_5Fm$PC^+qb4QWrp{*!OJǫxճ`}9=zlr9N!)Fh*s3U<smq*jYVSYDvֶ3vnNk&\)f3 "o[~_u:n'
T	ԃ iR\p\Sw?\;rd=!g_lV#}
͢F^yy[=*sżouH.a8DnQǋr7 ѴN?B4\
-83ې{qPJv+ݥ<rLzm,	h{8V{ƭ2yNբGN(9%"rX/^=Kˉ,܁u6as{a܆>phIFq=)UO@	ovwP^:;VOɢ%nE%tkv_~DpGHqu9>/H+mr9]Ҫ׉*@n
gr`;8֛$}-%r)`l}8a	ҫYV^X3^[`kUQv$OAxǷri:r6Cs{"F};֯/zX3Y%`0iSS*w)"Og!=ۂ`8`Yy emaYM[l*}BZs)_!\I68$/,lkIU@-.n[P:BΜ?>H575(d1+?
laIDv
#(^"PWM%X
\(!*$]Dz57[ol?GC^iB=c'Yvs9zŋǕ;8UmJ.UI3tO(AJ+GH|
Gd<\ljV[.`m:4˟sfm籆[KAr[&p/́Bu~qPMOoc;]O#ۘ	Bh{9)J~erMT Y?p<3/)E-?bU<;~&6z׊^1 )7y[	õ4+E(N mbtEŇJ@vW>$^
\U-!4RhI;<c ͓ȗ l/9q( G@ \$$+#:BY1KϏjB2k=w)=Z>ۛuW"O_s_c
b*@*;}HCdˀ9T #G]8n**rտ&]skfqxQ~`'Y=6pB=ځ5g܍$[uFz"𗣡]1numD#D9W~)EϚRs1۷oђH.ABuǌTj oB"&~e[z֓$`;\"imkxK5{w@Z^Ck'^4!D.J	
Q0Zې!'*=,#hZ6>49Vu /}93n 
Kh4Srّwˏ[U"T
O7Vi1Q[rjK@,WO>mFk573(7p[^ӂ1} cYZr	+j+^Yٵo=z$'),(9Kf$ _GZD￹q|\¯3 o1q%l;ˡ9V]sk#RW!p׶˿>WZZGѧ( )`
?L-(?J֝.@r{c|0 r&cZGMzRl94_Zy+hAh0.wY;r ĊBvC"90s~앴NUvgW/_f>GJN[2:AeP2._=9 hQW|.Y*F3p	':FY.2j5juw}:#T~Lx qJ]t^֫=[uLƩ>;
s?돓p}sM]$ׇr`^6

٭3-lOmׄ&:Vs=|MY'Tm*D]3D0	WVX%q- mLxrwk:q'gu/@ I5ͦH	~0͠ {U/KmJDu/xx}:'ϧ+gu?MnoMԾ3 _.E>ʎYV Cb@(Yc+>ǣ5}(rEjs r6yyP崜8GYȚqek}ϑJ@1hILߩ	ܖ:S)j<] pB/%%`)@1*j?ֽir>|>`v)5lŴJ90vҵ5IZ=Y7>Om@w@sRk h%b (U#SVNo%RH@=_*lXa%ٞ|g?`5
.Zt|j
A51;O\DὛI
;29r
W͏	!:靻 ,/hz]}QCנBTSD?u4p4#TwfPJ	<^oQS)D)xH<"YML4ܫrAܘK$NTռ4RxlMw9Lg~zleใ*ͥF:TȴnUI$|RQ
[kh!v]v	ՠ Ki>}9SYD]BP>V"@]pѬA17jѵn]\{DK8b[}ٳi٭#rťcD//{l¬P6GTwx=Oor; %ф~I5A]*KFyMI-xܱvN+L״
;TJ%]hL;ټTά:WS tJ(
n]NAs|3U)ۢq'yU^	ڣ# v&z߃@}~E#O~UvmlfWlfz:Wdj#&pݫqn@ [Ic9M|Qr
vW ǒ_9z[[7 fF"p, z
_eP5D9b\mK˔!,_ikg]6LAցCNUrk!]d>j:j>y^tu!N[Q?[+^;Nj󳆸wp\M:i/ɹ;ap_=V5 
ɭ"Z:цvP̦zqƋmESO&ǛOYC;j ~ [Jґr
%uBM1_o& `a݌%=n3~ڶQˤ4V]O#MNhIMLT!HN[18nT@,l"ZgV
ެlɉ
)vWTK)H[I&ޅ2?`<'ɼNy^22z_?xPZto7@`+5աmq|ZsLB=5D5n(GwoOãyc
QIrgHg E3uX7B}r:uղw lzʼD"EDD:&h Y ܥP$d-'kSs~%*";M>	.==jnltr';SQEpՋ_4A+
҆kAY#D`WzȘ?!prGgZ_
\BNnsR)b>rJ8}to{l:X*[T}N5c!Q-]j5ꎔid!xz_\)?^.#/'vbU:/}QPYw92`e
h<=+84k9IyiEmmk:Z&OsA[ Q)񸇣9|*Vmw1UǠwzjs%H
^mno*TwIVN	xc
lzc 'Y z&7ZH{'Y0J+`- QE(ULGA­Qn49OuH
\QAFkr]xp
na8|9jۭE"1DՈUy-.>J"0P=+?*8 7Wbw5ohگNm
%ʁ||!nD2"]w\zѯ5T<uJ%HGK
~*@[(jK,"nQ`nΠd6܋f$'޺(rM~$tZG^Vʔi쒇r1^
TDWr|*_
U\\ jtpHHG%Px<9?NSg.l|'rROZ{x>|`)lRccs^(*#ѷDw_vnBV6OE;`~e_>ѠV7@WENg<ՁTTJ?P.[{xl[+{SE//9w|4Cnce3"z ]8¦C}6 I2UM쎢֦JQ7t.Iײ-O㦓")
]%&\Vu<C{/N4!$N؈ls /ys9o6+<u(Z!Z q=E懊uh{owZDq}UIN&x	#XWRyqDsJgv7sŃ~䶞wv<riX)g, nm[*qDڧT.t}nw}~]Cr(9=P󕉣vU9|V k J.;5(]w[\g+>:K};+NBAIQUޢj9ʣRb#1`oD
ݗ#ٰyH} ]
0NϹKY9g,VUU
g<2f?3wЁl'@棚3٨;zWarHց6ǝd*}Ue8Æ.&p$ĹI7-rvjQTo-] =`L|((*9td*_]Ն6Q\tZ,b=]kmlH
8=i:lڬV9ҞܩzUsew:%C!|?:d iL(^Γ~|b˩hE8˗*,ס$kK|[4aT;L]\.x~uCXB
yvۼm	;'Za~Muzj?[u_\;zp{S)Hr4uTL56o|04q3M¥2P辒>$|EkpvZ|nGr|`
/^vpGg
/s[Y_bsj$^vF&^Vl49׿O`ۙϕK[QkߗbQed=eAV?VpUf>.*U	t27wNͶzI":,j8w*l	yY6;{8ϊyKHQGc?񐘆z Ĭ,.yPTz&A3E|EĐutK|kZ~_!K
GZ^Nb)U/[tRɇx^;6yeSX]V%ЃD=D!z\IO<EQ2M`Yht~I:y.+}}YOF6Jdf?[^\l8 wp])^.;$$ʜVfv
#oYlUЭ:(oy/G[j+Ivtk&	|fM=@w.ͪc_s0͢]Vȵet,d@%`;`.}鼜HF<~׭o>qZ1{nEL/
kl&.rg&
l^դac1I3H
%QʞK	Ye=ߦRtNrZ᧖b;3}4KwaTB" 7c7+T%|'DJ
mgx
ԥf,7ᢟ-	0J^"ְ>k(3ʭ6f3؏yV@!WQrT!Jm54s߾X=Yu4,wv5_ XH";9׍;&.yo7z[eNM-!ݧƭ1umQqPs+:LtyubO"U-}klG:3<}|'HZ%[F:>~Oâkw9dv$Es}v[/pDb@KLji|-))ufqܳ`
TڜwTH?šO#b8*O-RGKy?P"%6b:T5s_h+obxvxr5L2$xĴ薅g[>e޷dTp'^A*'2P!
cQ櫻:!~Չ-jmG[|s/>pK$EI!r4(-:
Nd_-V
sAyKom1ߟz(bLPp.%\'u_im[݂d㽎!O/ckn'?W3RNքM٧Ag]E#>9ܶ2`˃iM{:$/T	Gc-AˢY\C:	&u~3U֛)Cl""v'l^[UHg×`5.z-"&)HbIYC [75 x4?jƬNH%8ǐA35@ǹH`mrF|	]>ڷЁenoݘUkRnN0~tjuB(/)S?/ݖO<yaY"lq1y ?>*[%j3,a4+vƷS]m/]d}whm",kq7RE{qNܯ`Wv{W%͎rY!VnزYUlpuN܀_/2Mb+ PZylBҷ8p B M֜$ y`px..Z$\l_,?ygJY1Bvv
	l@U?\7Bʹy@iM>(ua|dxjUۍL[GjWtjr/+MknkE%#a
r27B"̩_e'iMwV/g.ȎVX95q̪ AhloV!qVd˛{,;9i{YgėHϕ ;>XӅr-
^{iVFrr
tsWi#oI	ϱj*Or`փ
n_݌;'x{amhR~sgѫ6ha$2QFfY*0)eڽCo=*4Ƕ:
PE7e;8c cX7T/i^O\E&XTtnw?JK|cS2)f؆qހ:NE/~G qxV7\L*+dӳo5
z_<\kl*YTgsY
]&@#C*8injIj,\H
t72O/ܼ'Oie/ڎ`8-u}OtJ5eᅎnhMlR)C-/}xr+].e]Z;
FvUyjQWUk%1<x^z }9IQ+<<Yg irE&2]ŉ_"la>/"\ښsJ|#WBGRW-smys	n#Lڬ41
Tvj7TJ
MdjNC2o&Cj9Pyܖw#d[Ff:<WՅ{6e63o`:U09wCb*rxKgh?+o?wuOO_QAT'ʽ5i-Sn$5.-mճ/O -AwQs .3)ك_T|IHb[6ՌHӲjzUz΄-T+
o]@HΫ݊lk>26߫{Kr+Ĺl*#={W KGw*o A@Vu{9~Mj
tR-L$A=:cmpG~Q>3Zwhd
/l+F2Zc{b20x-nςgGΛ<HPCL}NO\)2Y# ?w8vI@&+@gϷd
5?cf,jfFEs0)=XAu^U R8w{?L7]KP$M28D]g5ZHn6lƟ9\(qc:5F/*smUn" XyRb,߮l"GZ@\a}`{'=QNvI^氒}x`n@|`.fG5Q6(&WJ	K4ВNUQs^*D%>znMcѡT-+l	eCޤgէeۉxc+- ſ4V=D\m
-yl%KCGa<\[d-A!Itiʊ`0@V͚M{rtCh(NCwq0vJ~]M>KY7B̯?.# 6>4.+9In549`:BtAHiE(AWYh_b
 Y %I[XdWI8GVKd9Pvl7VRJe)Pm3|G+O*RrћT[:̗n9<*B@Jty3[ᓶ`3Q\ o{.RTMVmR꼢Dy3hGxH'Qv
outeg:;S$[TRh;is)o9
J9qՂ@ruOx󧡪{0nX0rr~sGC
B #w\!Ґ\lQi
Z*HL=ZxuGȹ	u\X0j &%{hw͛MZ/AG7@!J|h&БD7'uE=*UypB
_6遹qraA<L m+ܱl} %$ZRouy8=,wܟ (߄zbU*'(:;f)Jz#khK[I8y=CK+ra>$k,M	p\g>}hqJo~qDdU"on<]~91 l2&}CGo(W
LFkܸ:,:~z+oJ	}v#>?/K~&Jz 9Y%! Ǟ)`u|:s%_rN@htB -qOWEu13Z>\@RJ6Uޛ;x;C,FG
_J>Zvs A?Cot~ZpC	_kvrG9~[1:
+nA8>GTZ2_S|h>xYnu[*u%	Sā;O.hnݿZ_GCغjDf5{Ckz.<^[Q"%zF v.蚍G
TuPϕB\!|*GoZumw:
cwƒ6ծ
A+8
T$|)?"iu7/B5 n7iI=.8M%J.F
cWg(6;4f^J_-UܥՉwvrVI<,ᄑM[ˌ1	F"KB',QT5ř}zn`6/&)jZ9 .PUU~'$Z
wRw3TާLݗlģ<KԠ.fI:~pyz$?xnG4wu`SXeq$GKHo%	v̈́s],k-wA^	J1Jwhj_O_>Dډ3
_p*yQV(ɻ\|t߈cP_U<
`^87j[nqf;q*,BteգI=j=rX[ys:i&mədW
<QUVsKU!$j-bg>OVVqO?T+F3v_ MJs[V)Q
Cm4Ψ6[[VNDðXhPq8ޜW)h1`aə@o4`pOb<k.=5Rejz<Ca	_V^	foZ·Ϳ 9UJ~k1]Ҏ%24$@~vdox=99T\KOK'=͛FmTiMeqqT,Ʀ9qeEG/>3EN0[\3-rZkpk5Ӵ T:WR_TL2Bp|y]nk2WttM4&t>]ZTc_١\JD<37xM1:f~N~LNHR㙮'1̯W- >M޾"[|h=¶ڳQ[Xnߚ@`!ҧ2;',:礠23l2(+<Y
{5 i"	z6VY19ֺn6!u*3x=z2*a麙5j+Aeˌ/Qײr}wuwF	xzgh73/iW*r&}wnÌプBb
Sqv&l£ 纺Qt@?a\:͓0%cA.Cx6}f
Kz>ðuJa^A3sP3k:C>4X |kr	5x~wego gJEkš-?10O@,0bni,}DsH5P(32yc[45:?ZY85RJB/#YLc>#ld
Ш:iӢ{Oe7lF
QѼgV7}Tvy֢JaR|Ft2ǨE^_2yj
[2>S
ck57P}3'$Nr%_:r~]C[	S:?ߤq
KY@vZjyu ۩a._S{,1	uF辦 V/b	h|b^fwSmG3tJ0@{A5In;lx`?Jn>N(9l
U,.g;?-؊lO,H}X/:DaMxf~-E) a4|ˉU5M96l+j|MCR,.&(rƾ2̃o; Lo9?=k14uՃR1~錵y95Z*N.WX.ŴusZ+y"u
֠[?Gm%śgI~Sd2Pؓs9o
)(
.TfE6F6n@g^ZT0حe<fN{Q-zem	r+p@i~A'd(}KW`ؚ)Z,/)cG}@#wFJ
nu4ywj:dujFbLpvmNw*$;@ӻLc+q2TE kWUm*0@ߊ^%WwI̧A,\*k!*=b3BٽJ@ VYoSn`7{\XZ=`;yp1QB)mB_n6L_Ns'&}~rR
MoXp
9[/l3*3I9t:2LOJK}.܀/Si}.}٭6@v`6C_cEkpiDJ,
{gv̱,^5{Ms4C\oS%FoNͻh7&|8|Aʟ8kV -֔U&XҢ7//'C<hk/Km|EZc߅gZqnT!qPU{{44.~5*HFl^CS
+<&+錜5
VݷA/^m<]3}"7ma={F+g,ќ{G,H\O8Tlyov4s2G7%>a;TH끖XE)mܺ
rN<$
> ^B:*[
FZƵ|SkN}ۭVp%8`ڤZY$+ק-wܯxΚfbu~AXW*|,:k;2e6e9t':T~.B>TLs<)?s;h~>P!XlIqoEew	nŋUZ^{
~>oOzʬF/Iju$:I,oRUNk*6m-$vfƫ)U_aOa5zAա]jK|k)'l#7DKGp8Vf/(iNOywEC,MT|S,c<(3kRχi-	x5[X՝sݦby59I5gdzNCV1	,,HgS1^^&3~/>e4GlG
VgtS8`SA1x/ùx?6tkY]r#K{_K&3Y('m$u6^^%Nlvd2@эe}'NOYhmoj^^A GAW7x4i2".hR<ZmlkGopǴ>ͳo
OhGvTHLY>O
Q;6"8v.ի3V@b=߽3CWFfJwU4
\7
jj!tQ{jYR*u -w[`oG̝Z(5
'UaΪ>G% %~O]ب+jfn>hkzokRrVH;d
 gr}Ӑt!g~G?I
I]
VbMmM6d|`s1-*fDSUaS0j܃hchǚrdLSRBhzQ;53St?pF<mlUH`0XG;x7	#"Gx̪43<im@)XY}y&c*N_1436Ӑ4^һzLCH7`33.S<M~̽,;l/[@3sὧ^uCǇkWuf@$GYS["N4	;s/#6FE27JƺE5Vt(Qay-	P5VkÅY$`QݳOIhI-yZӽ}Ɖ;~Gw,^=uz8krp$y, ^:Z&߸oAm</hʮ:Rj7h]デ#C>C3IyP=^ϔ&1duD5 aAUJKeO49%fHv0ake>uy*kݺЪ%6Vۻ`"餸+Xgt|If5_o!Rk?|a&*ezk}Y|8wgQ~H& iٴ:]$f]@T3|ntUԎFƫۧ\r?XGfz
PKg` iHx́ _ c4]6YY^Pnǳ~5e:՞`Hi,@wC:-DmTK.zp_
C#3FݫmH6]}(#2=MIɲQ>;+vK1{ct*PAOV%rxo
SPI×cuSgtj0ra+xpN%}e 
UjۄJ<b[̾YAv l	wtXǔLgzҶ-51^AF_8o'|iy?_cݿ WߩRMS{?Wo	xW FQ>^uG[G!#V:|GbԩO oI"ە_'KOkN<Mrx4Kea*KG9,j.qLr&)\é*U.}mqg!}ɼ< /ǪFw0Y>(aI5o9]oW}ZUK\Te9׼0@>oT5ء
P8
\/4#msIo	Ö,=ׇٓpdӻeO7hA+/
|4}Ϫ^S9ʟ &щz7#~]t~FoyU>5Ys)Χq[0n`F>NkӀ*z 3t@{7݂
i,brDg<lZ3L3gϓs
B8u0
h[Y^XZ<9	'^m𶉢VՊ"9#3OP؝@]\Ȣ-vyz\h3¿yMv9R##J{2YGّ_O|L%MsF8Ve%b@8TyO
<)-~jmc?
-N)xA7w!7 ixZdĹzv_&B}uu\]K1VF]-4`伺oͮd_AQ
g(n`~sndTL§.2Q6KI5U1X`uׂ^|oi sdmP5ϮJ54xYEfDG
fN
Uׄ
-wm,-5<M}L澯aqâ8C3q&?ˠc)m,PJǿ@#,Yt1UyJ^0 ִ;-3=46Y49b-V E/ߣq.K+8lo%·#YrUX1l+BaXM|Yr_)J92[9 KxLf.]&\N>ehdj
PDQ-a%^b6j,2+VӞw֗=9wL.cS_0Vũ!&s*Ri8q/AaĳsSZ[)zl=f5sP.RpW9K&ӢCN1x
>Z'#ݰGL;J[64b* юsUc1Lqґx`v=u7UkFglQg=§dU6~ߏu
T;ġQ]ݹ񰌪^O+IxD~2b57qx5h$t"4VuI!;FP L䩳̦W$u*t6NMD'
)?3;a
W9tjԧ9`uT֎/xӦϝj   ne}M^HG=ϻ=9[a:A
̟ǧۋ	COBT];ފvomy V X#xl/BlY+@|~R[L_P$Pb61Kvi6xO'

*Z;;ԺKv?VC0?\8ﲎd
rSU&!]ܗ:x_!+n2C4F{,=ï6ͭb;P/^aSDqx|ќ6|tUb.1q{2l(C	WЅ 2҆E7VɃOoRćyͦKot8bMZ
ὗl53v>݀m';)p*ʺEH\@ ʪ|K_b%|MdS"42.x9=4]Ǣ i!fb
j>\s󷺋kuZe$?VEл~/Y-Gg{{<e+/J0f<ݸ"ZX)nEA(}]]mc5ocT41-IzzPXPCWat6bK
~^)zRЌE`6 ^PѲ	6+rP/@YC]$V|4a$PŌU
o*0h9C?sKhyZyA6kW!'n=O,D7㞷p)ߥ5Q9Ѭ0{C iwMoI"KWQ҈:Vz?
n(,*$ﲼ6N;溽.SJV'873BrziZ7+!^c+vrl'BG:k93z6xT<t`t͚yz
26dΌ~p.
YP/yY756&not\'jcs H;<:tja'<FMc}ƕe9z@yA)mqY8uFe\ ʠMA¤],]s57~i1bi7yʚW>>(.<`Bbh;w^!ùЏ\nfW4dm4YHQMx9
qG	hKx7LSr>5:Ul!@ɏFK"ekXӣTu<yO][r,A0iԴ}ͻfpSX@ 39Sh5/{ߌLRrz u^-./Ề#W|x2 pFW>{yrW8Jgfszm{~Onkt>'pj%ٍA)NΓ$y,-i787Ey˺Ҏ6A0Ct@)]?>灲[)K=<Iގͪl V&e:,}N:wag6iP2ᧁW62cm5f:e=zRxPkYb&
U
ǝ>آCvR1鞱;4˾6yA8kzzkH0{(
Mo=ۛԛgapIw4t=OEY}+ꂗ~iSOJMԡVeIRtp
zϲhPG!Q3?o h{Nr۪8|JLLqz,59Y1a599{<_E4} Z@f Ϣz
c3y=T:=('_W<sGh#i(>尪3[^֙2oXJk#S] K
T<wciaW5pY3tai	ve"ʎˌ/{ g$dv1XoJ'zh2$_eS3R<h =
$@7
*MSl6!i
)CSX	ldb0L3-n0
M|y5]nŗ0="E]*=^omפdmm.hF`Ey:=I؋
h_k5V =&LbfBk c7y#=DkF~
39>
~A	Ӻm5CcIq2SK^QK*KM3K"hJX]u=7TlV*X6(<)|%-_(dǱhϠUk298u{ܕ{s/Q.7JX1	۽g.KXaS;{!EYT3ooKt6oU?x/hGU
߽%:.f( պ3.蟦y*D<yDWrk,sUxdK7/\#r$ "NP/cX;ޮ8
c?/}t{?-~뉒5{9-ʣm9B}e<Zޜ?A=UI=1}!nD`H֨7|j"䴌tͪ|pYD ŤtזcT4 CU߉\HB;+rVœC":p"ad`(
S,̭g>y_ %j}C,mO
& ;:A
^K2	2|wTs"Z^:cnϔ^ҕrSBӊ!{,NWƧa/ZUE1_zocV̐R!f5
]jgؚqjYZ}aeݐUAjAUXוuQؒt請ZgocvѬКJ#0E3옫a?n;^{--q9L6Hڞu>|W:b
kJtsD`	>e?A[?Jеsrf8*IRd#*<(lVj2maeZt܅Н:pf
YuGheH7<O$K<U*,j&uߞW󃢗|z8LnUCK/}QLZ},R
;=pk"t5ے܏)C]B2^[x+Dg("__X3nųFڪt,ui>D	%Q#d?BzgI^5-c=	=
}>y}7=3J<^xޛ'T<ŏgTsC<B'wnG/AZ(+fXmxQ5+b^fAՁ
D.&-Ós|J!&4+2Wۻ#nذsRksA!J.!*y?k|{4:;90K`~U7466 ﰞ5>M"b.	\y(zͮ
)9>Xw(k)Mguⴍb}ZV{ɔS=+ F;uS@X$4['$at@xx r/+DC |o@ .V:y|6]@z(cN"ʱ2/9Nl
OYd)0Yq/=;}cd@l!杍a wJs:o%^o?w󦧜\_pO!$B5$iR(<MCLƿt}:8)4͂2/ǔskWE\iiS~+	o~*Z	4 `͠K?)y@j.Vf:jld['s:e]yL4Ojtd~F/
ޅ SFWI1ѹ$ˮQ |c+O	o:|,bUgxzkx9Mz;>.:O lw'9ћROO6ݓ/OU6 
_xJѻ=2wRx+==>s\a'U~~N҄7; ":gpLlL ~kǏNK88Uc8hW(Xz\PKKD*wQo IjZ rQgbdO0ZeДYAmCX.(hvBwP:LI/SmʕMs5OAk:Uv&h;In*Sc-Ć3̲}{*=*3yf'iDǩҢ~y)-4KU[04m=iUlFT)08<ѢHte|)85tO##$vrϮ
ИPg1ꐶE8\ȴ5G-;KwIznu}cL)Dqm2ҳiL5^Y3pe	QbJ}b "HEy С8 9&KiUȮLe
țK3v0Min M& X^Ta`@jRl.ڇB=!#+ϡg> 7/ɐ?9ytWI3rZ4[;Yqr:q4TjySEP|wi;LپBbwGNzJ58VPi}9U{yG AKG4Ŵ5{ؗ;Jo~;!
Y0>BǽT(0~X`ZS
TCxtS/koIHAɺWy
`o|z@4vB=O'Ubm8MW?SFDNlRj zW,O וЀZ
]4eB
8{yrP`^Y0k/UalLM3RKz[X6iuMYz%S8QXG/4=5`"$MuS3'N3_߂˧y'5+֑'^f5QX prK9_Q3,Ҷ"CMm	  4
Ǚ2P}~NзV!u/^ϟdr8wLEBSа#s,cCCTRm;Մi-TE=Ҍ=8atu~aaKQLvwF}.t1u9Gq,"t:گf]So>du8[{=:h`)4ل0хj9
A, G:^[,O˔'?a$/5=Z9&)MxrQ)Bgmu}[uj]2L;dM4͸@cU>řPȳo6>3xy	qLfȰ@U scVmb	`oln[: GL;):;>4Mx;L|i*%
]7v8g^ChZODXj	oG7,:R	/];\혅u|䗖yϤ͠tR'3^/̎K1G[^'q<"͜0V|cD'[yEY+e?hi(ߦ^"F
\?S1d"x~)^BppZޜCWYtk}Mct	 @T:!f)Y2Y 8e9Pc\K44s
Gy3<Ug4W69ITm-OvwHzR!-@m[fg?IM8P5>Q3QHǬM=RA6k%[ A;(8N߉t=&];ɾ<|\U0Maݧ}3?Qbsi33Np;{Q? =eV3?-4tU~yo/zo\
h7!
+XJTb-k=xң\ :/t
y=ܒ}"#"zW5#ՠ 1t]~$/LyxNzQXfIh^*w;yzhhSǴ;~6lS!K	~EsޔJy:з1)޼Pj<M`ZQWfPϾmyDkOIog)j	:UAҿat
?)׹!cwg:X9;6 B=7m@x)jӷMLVSxkdQ>tJ{ d

x55J9^o`` 'F縤.	:70l:>
v`W8}ApfӗID&#}"'ef{A\ڶy0
Op(y=xr-6m67;Ȕ?j$;9rvF ܣ~;>0 v{=iئqNgW^|)^GyNO[I(-N_ p·6uI
Z Uh+D< b2]H㋅&^glW:9 k< {ӑ
#ʱuK뼇:"؍q10I%'=CO#?b<LBSϠt˭j$6]:t-.&XR&Pϕw8R
ydhz5M~ɚez$⃾0]5^͘iHQoa?YQlkW7ҏqm(w4Hl,f`z| V
hN:v:L5E/|豎첁o'w6P,K *[cቀ%xcoy~MNYϗkgd"IY#3wJ~]<sʹ9&N{E($	G\7^>_B*2$o݆{/4AmY 'P߽Uqr9Œ}8)52ơDzzk<eA>0e78d2ulۀϝXe8$q]#H1^(9G2S/[:v'VLHYv+d-ޜ(rּ
Ь5HٜT&=.(&3W6r?10)TA=.Fal@_R|pi]8 |S~BL=Rԧ)Їך1
#0E` b@cf¦J28p=&XJ`Nݽ~f/p&Yw;v8B;mhϱ8pq:zhBv֝զup"a~3xx	yE v4fc_\Gj0jOYqЛ\)SZԋv'!
w.fnpvSku_B>Fݝ@d5:RHٛ{;Ӑ 3
oTmRx7!9CцXk>)MQ$^:\i_s}T~
7hke]s51O]'X
%@Ss)>hP_Cr]a5졑'#MO]m0z<&⩞$}c"Hݡ:^4
<b(5_/?MO~'Q6xU(^P7Ry4I4|{eޥr{2L"w{|pU>chΩt7?o>͢?zص{:/mFo~Yc>qJ0WO˥}O(ҁ>/RvӚwG<Ƞ6 .ݐ!1>_'(fRiۃo*W_Wxa-@P$^qny٦з)
	\!&l푵}ʱtY[wl2Eo)w
	CN:}OF<LUP^P26i.q3<S
g҇nt;-zSΐz
h`3A2sh@ɱRtzq]hECRQm]5 atgv	O{¶N6E?f9+lY
zϮTQW
{GҪYS@.@9{"6_M)D$Gbg
xyi?s IfL_bN	gCQ躆uړ(Ot^zcI[a*,0"3DN^1nSЃv$,YY&԰˳0c>rϞB|#Uz98<45z&IOekJG﭅ۊ\Мm(@W:WCu`z$܆ܬ%*M%+s5/hh&:f
>VZ <O% NLV,4c)'6|Q|Q&\{ys2=^4IM
Z++ZmǴZUoE0	-*6S20ȱڃGm.>&P8|n&aPYh.Q3aN(<]D6~m'zNձ)zRi)'竦j sOF{B* cʨf"!Fm3Y{.<.MkWҟRZ4uHG̟yD}sdJR&Y@
)/>)aYlol^˳PKVӿ:Hyn׉aSz	e:xe ]^?CS%r4uO/b7n]$ΣI>Q(MJ@zkm"؏rɎ|2?O{Ԟ{hR!aNgX]>^U[ΝuͦOԏѵ:W"僵vb`5#31
@}y
ƶoEf<o6:j"'ig ]!9ƈj:XCs>QDhNxU!.4N9sV74/XȖ*rH	~uAT;0UȻ\9 (<Xѧw68B<0
vP{ɡT pe', wN}{zi]w+lVP
׿]` Ro˰=r";UG7xc1`5>wf_?fi85S٪TV_topY@R
vt
4]UjÆ9i^n2DۋdTҰ`
TрCV,E 'mz\Y(
b;:O?')g^#_L~w=J}|5-}5糚}52}
ЈِfQ\םhrdC~`&gU^M~P%SsW7<
οnm
vg
I}i,au}t3rT&!-V`NơXY6iQ[
Q_Dzxfqog&HL+yu0f*JxwTiP<:-0oQpP:LU@=4v^p<ۅthaꙙoc9tږ3p Ja@_^+dYCkд7h:h:kHK4jZPŤeFn=K?zjvRwGǀۚ3j2.X `6UKByQw8,G׌ND?	9l-rE.PfI5SAk0э4Ю߬#LvC=H ]edѺ;ԠxL	H2A֯3J_o8BQk- .ա-"8qn4k,P<,_/>1wX_˄d՜sk`Ѽiz߆hMUG#ijV9l6<V7:9oW2FvT@C"@vC<{e.B0!PR};\D-3PM
|GڏyHי&{7e`&f]K'uz9]b#k}[<?M#Z``)j;FLL% ԁG7O}\WK[c@ueS?ͺw,2pY3-D<<$PWQ)poX!K*jp O G4'S]a:>w2^y{`'~}	.󃴋~oZ*|>@{l7*,ʩO|y'0kSzJQP2q@Ϫ{!5O7èm*=q$/ӕhwᦷ4׿@@7OX4̾ਬ]EH.Y?P #qze5gD">KYRSP t;♜^ͧ:rogҺdmV[u
YO3h)5M%VCˢS"DJ&'I6 U?VZ5LihXvݴ[ȇ
gktꇑos}-IH5	G|G%l͑{w?w	'	56\8G"W5*@
TxnxtBvA<7#iv>3}NIr0VمI,Kiy:~TdN`CHɟjSc	kݔ(01Ac;Jpf;'|nsΦtf&Ē0+<|:I.%.9ڣXKґV	,<=$.Vz`Jaz8u@T=2e
ҷyBZlW5yo
}5&Mj)sUVk~}h5*.7-C60v[w,hVt<^_z8s͡e[Dͥ^o@J(W^ۤ.;
<7bE@ùYQrъrd!.[cx-LUwdZ<C>_N3yT$эB|}oUUI6:/	;ߖ~Ц߅o ~g26ڽ{>V	k{|=.7jT''knO&qL/	aT˟F1XGjE{{o*e5|oV+]8ЭHaǲU/#?*
y)VNXop?$N;uaES ^Z|D5)5uhS yT[O"+._
Y"_3vjP y!pr9hAw*w_Z=Ȥ`N#/jW`1ҮńZ}ҟ!viȊ+ھܦY eճ 	8MuGۅvTAvB5*MOuҿґ1tK2`}SLKI(jަKc~LlzGg؉vߝh3hSD-7=)[a4{RF_Q]| ~xtf	
)]i/J=
vkh<@,c:AGPxIkDE9$Ni;+ u*?ү/<jPٷO48t&!Jy:Lkf[tR9BF7ҙ2)-y+n me_mS_eL.T'fG5O#׫SaDa6 y<#]4V"BãgbwPb'+1R% _v1ŏ-e*XH7a"Ja9agtxt/Zu铣,;@m4AgM3̾HX-U@]!z34EzP/?WV >sbxv>vWBΨ6>̧n51ΩE5Ph:W=t៹Տї&k踎G!Q|9U޶@~sF%cb\,(
Ɵ @1ä3V^ACl 8WoګO)wbҿ 4&<bv
p[X=.lXv9kJA|T*
*L,_J&WrOO_̈Q|UVvu4\
uæ;W_4km}Ob-5x\zϿ࣫|OMvzM=|h&'
KaCU(r
9tfІ;=)S8j2Ͻƙm>lZ2su^r8P0YU]@4HqiXw껶	dnp6X7+ ''~MƖ
FgV%XH6 slߒ
զJi: Ө3#YMϹP2DqQL4zk&Mʪ
-m&O>R5-^Ҡ.vg֭>٤Q+k ,}>+p.q'yɗ4
%
2ŚghH#ROuE6+%܊3,mR HM
2acnq{oPؚXUJIz]h_aWNj6iIzZӧ˨-
=
Gu+;GH]ɣ15xwydP׌>I7o_ߗ2[T[{}y]or'z
F/m^SaC&]Y>&'aW~%7zm⤂?OT`4!tg^;
<z~g{s/Sg,yb6z8ǭx{q012fuzed=&gFRgqʿZ2y(Ńcf1 D._0|Vx
JW daj@Hy vpѷzJ\l|G)l{/,7 #˜xX||YPװtӂհ
n^;NԠ:{CAqkKd'Y
goyni?jun/ێՖ*@7kxyyECh8TpJgMq֒
3є
uhT#wz5P^['@eo{.Ywq"YW&4}ߤ[ށ1kXe7۰p D ?h1="EVTCR%ۣzQ8Z],[IRO}܀w|Li`oy?qv*M(qF8<ZGͽ3:Q4ӊih]yT
Cjr$7Պ=X.AM4YKҭq[ER~bJti4M$Ι&nͬCU~>g0etOtZ]D~
Ofaf6η{KӓZ!JD58?i̱	6cы|z+)yZ2'CҀK\yeyJk<o?
CEͮQmtsjJs(Uj {BTz(2IWQw-	ܾM5	gaN
ҚnK]NJ2LKQ7'0lhP=N(kn$ܭav685.Ϧ7B]Gl1{.1ӷ]ksoThz ^%yGChwW5ַ]',ɐ;gX xy
^
W ƯGߵ%)e!tg[SUC[הWyWPl΄hu\<u~Pȥ*`h4>jԡn[Zcxl8sf9b
.Inbd
Xb->Iy64T>gnĸ@J*/
Fڬ'&4vL޹g~FRѕ`0'^'[=*@aL5ƈϦA}zj=3[Mv9Cyxf|Zqk-
OrJ7ai轙=Iu끡-=[,m1ST	7rbJUs5xׂ|{ ]GP.Cs<Nr۵v_=*U^M}#칶ͶV4۹3 ܨ;
x,(;C=(~|jYrOZ&_ˆ?e4ԨepT
 j~>0uC >.fGM%3RCf7dxRǜ'I?o9L,+FQ#^9\qKJR`Q)ohB)jX
 Zƺ.eTګI>xz]c:cA4Ls4É&
^,r7kƮLOhY2_Sz 
\m-V/9>ljOŮ, YF 
."7uq&}{L7.
#RU
 ݃FE{IMo=<LcZ8e8B+#N`2oU	
(
YEWTX'B:fZ'(6RjYţ/eW
u:=1z{WdWƬNkHu śAl)Yu2.3`)U[O BBzNo@Af[!}lVn%^k5AfAôɐ5
 &0TrKIp˄P"zr9	g2]1<@c7׷`R5KK=(uE+J>w&={ᝰD wM/ UfR.
VKA5c\G4_}mrKMr%#tGѼiG+?z| g`rsr_EXe
-ko-4 pPb1ș9iqvc]Qj6E:<Y~ ϫ$/
ёU3>"Y.6}R@o×2XAњ؁)'zJh+&@b4Z.AMI<PKpD4#zeZixGt"Go#R#>T A J([wvaۅn,(Ţcm$<s70y=Pm&{RI
EgјDt9
bQ[%Pd$҅.)DYrHƊ'bz2MǞ9o&z=:3z|դM݉&2ߺSˁ1^nfPor^mUseoUňW H>g-GN=|/*
K*XӔS45g cyBAaKúU*SrA7 ŗ+֗x-g$ne<S/?4UG7P&2N,mCKg2~rCkeŠ@GL"\onŨw0nZD'\]&S+I-p='=-^=]NVP=g3IOΗ΁M]t
Nbd$֒:ˬ7@`Sxuw+݆]m9SBӌPL-_Rr9u=n)l_k3UsZWv
0sE+USw2'˱-ˀ
dWKǵ}`y fSLU8J\7&/OWjpzӔsSG}v Ahpm(;)_˱gf nEjWs{A9|zܯSX^8
PSk<X7n+wUߒwAW@J{ S>w}H(zyqjӜI,bh,p*M@28x"(2P+ CVG9(և9KPjs	Je,?3jiro	Tqtue
PtӍ ,=$+u26捍.8 `p
R%zQ'1\M
B59eՆe,EAql(Z͉אաkrXSiT" fK=âgxkFQrUi7H)=͡@5&hݘlAU&ͤ[7TM5 	_tI.ܵHxBavPGq$Va-Woǖݜ"dר:Ux@*SrYA٥8`1]rpN
k M@w|h/9-7BWt
cO|8(ӽsvSV\ܔMuXNSAHsj|ks{ZB3u
.tQj7
t;vnَŹo,02!
Ym5]d0}@2w>,?FNzg+ͨW'
s+,J"ԝNUi( uY
ECt@G0\:
l4F^?E	!.y1Zo:/]f >bozjHMO=o|3$x"5%pVIO1,L6zL,KS;#@Z%%UL3U*Iiǲ/[=WR㩺ެ#ϧbonŎfsbPt{vT¨xulyu0tG?KRe?)T1+Zʯ3*?+T+8BTKRjn#+M-PI$ Ԣ:=>yÚ`pZ˞^=C(ޚA(pҔj2:XF^U07Q`^i;H2oz=,UNG7
:;S?tLT/~Ʃ/17Mx4-VV͆J%
G\MOpvji^N*S'e8flP2SUYg`6:YzL0u)SdvpN$=jҮ3&EB2EG6OoI
:=Y$oBeY"ZU~Uˡb,<nv蝚1w\/ާ{nk'=ǋgMi1K74`%k ş<[lq|t-I~^
d'W}xNgQk.oOc+ܟ@ō;	mo<hTʢ>]xi3jjc4+Ly}M1YT}shݠ*
?]
DZ{Hk
)-:om%9/x͂K
:]Л N^I:䩃v$ͱGW OՓNP=˼Jh"
hE~/ P&W8jRr*N!X
t2"lK4]q;¿<]4#h`Oh6XdMdhcY iaV똯
c&&kH+DLXJ}m_n6O~hw0ʀg)@o^v$H!9Kr&iY+0'bӭxrNe6f(f@HG4=it@^j AB=wMlIq̭ÐR}FTs^0߫Y3&Ki[
_7}^vyƎD޺hz|`gPV
yUX߅W?>Vb?Dw2Te
%υa龨汿<xMᘂ^-KEPΜ4=)PMx:UnHoI2~2#$p7s39 ,7̤y_1isA`H݀OM"J!;jۖBj0kv;b6C]Ejfa#syu,?J%_ѵ:j)MTb51*+X7F3cςv>6ߒb8ڴgoOΐDo@A6݅Oo|J/gA,mMV"Z$_@]z۶XB,\v*m.,O~)=`VM\`40,˫K>3g%I<Q:>kp

靕1AwU+{5#F>IoՖtv:!2[i;·
mżnx?[tLqZRU]Ȗikslp7c#EE-֞mjvjӭxdl3R'
;UjK䣓SSuƣG~c
#y?/8נ{dl`YOM=J)=~<DhgfG0ޓ2#
фmn
ƊjnD|KAN[33YQQi7ģe
z ]l/OM6*U/O5濁]Szꬡ 8j6#zLּĊw{  >6(xޑ&I@N~5@[1Ǜ4FRNpP'ezar`46zeiM(W YQW'* ߩp:x[I7;6S-+PPɠt쨝%q}6"0PGy/.'Tԓ=ۜ~{8+%x_
iy&0Y}'aC|#=db `_^5̀U'(!mX2LI[cLOF_?1I~U@jͲwTj}T(I̔:x=6=I3+/^dv=>>K_:Gc!+|zkj籍I30zCy2U{nvxMQ'Su1LQM`周#`=k{*lb
^'LJgQA#l6@^*AnZ<
&WLnozfL吣-Zk.s-)z^Q*v<)|OM6ґtG2DJԶhjߠˉ
VI{M?pN1A,gdY8

W64^]N&SdhښA疸;.@{ҺɘZ| /{pDUʷR@:XSwhMK뀌Ö]Y;
gWyZtdGlNQTӚ<$YCB?FsO<9_T:u|KweW7H`Iy&M~RU*J\ꭨ^W0Se|RjG?f1lɩG{GwGiU+oQ4UznwiY2]s&$KG0~K±r=&?>Zs[^YfvqkfFa;oOOݏ1< Kd
Q),i>|>K2Aݤ
XKa G>D7-&[	|e.8_y??6	j.,
}bVdy,Um/J i.NxIQ~O=i.?^/3^z"pt
`=c[	@R槴
l"),dzao[}:˫7
w:%/]G˵:e$\VVdgkC>ŬϧR|\vhԪ£zv g[Ѵ
W	{"D;MoHmҽs.]A0Lڦ}  f.-gWîc\c'>q s:6HZzRdIrX5}`$4񈀼I?ȥ%2p;\rL'nT鴅S/O n~_ǳ5uxU-	&:_,@8vG
銎h k}qQ)3Ugѳ^BcuwoB:}!}^H]wdU?Ɵ	Fr8).TXOҕaL,ѽ%yM:!޳n/yY >*zip
 7TINhD<
ي?ީsd힒\T؟=I6~Hƥv|oZՌyoMSl	ҳG:XnWyurS9Jb75o;=~nd,9;i`c7Kp@yOX_z
_^X<]nVlL?rEoL;t
st+]~pRf	dFbD 7m5:NM<9֑+5`*v>-|p	,1$ܲoakwiDi#Ro({-Sg*yr\Q07PHpԄ@39ŭKB? ̀B\6C8qs4>^-2$_tF[^<U%f^u3oi `9@77qۄF^Hߝ'@*˗Ɗ
[m@oJ7Pܫ
]C3*4Hg:U4J%സ Ujً8u;
111X\ҷؘ=N鰚ػQpԺM21A$7܆&}0WƮdy4JM_2
/ GS5f(e>4Nw٣qV177*L
6r
$)QOrضڥ; 2Z͇}NI߆WU`'q z~ǭ>QKuti8<s~9#ˌcsnV$Pc0/2_tgc-pR/ubDУ8yyܟdaFv6N~
^T(y&m"SYltO)8htQb GѣćO~xEm&ÀMLoMV^]-W'Jsyk65W{[>Uj8F3\f-NCm'EdSZ
 J`
ET8_K	s%a%V8tS/gXty]/Ǿ|WX\kL@
OdcHSxC0<8y2OD7ZpF2!yVU")']stnspK	@ly/l땣gP9K6r/}g[^9mv451bDJvJw'*oVd5s|Wum'h<We)akQO+~wpwo@o$KB/S:uȄb5|{`ַ+Y ,XLGOnyx1ܓI.iYFbaOv{tbdз
̒IOKkysfH7
z;<#STJ S³y= T (:6lxO(*́1W@*2	1]!_v{=
|s߉zU	`9{v%jYڢP޳8aWA~^LR!y>ԡF(a㣟jW Me3g07^BM.u9&n(/Û:Eo ͝M^컢}?{J75l7K10\ؕQ ?}\j)j7rB|BcZ^Ήgzs@MCEa'gE37 1^^KćLP}4JmХkupe<@uHKcf\ҥ*;2kAgY>Y)`n->
p({ŝeE@WjCaB!ޒ˴zNzs	5ÔL"xGۓx#Fj:AK?}kti,_艩rc=%~#η	 !z4W#Ppdc`U;~X71kU}[$4(xb4V/U&'#{ԕ޲6 xE_ŧFyOـ֛6tw?pu٬ol>Ͻ{ir5x.q?p^xTE+va=~HC)m7!}&'֢p$WLO!ǣj=/nyK<GP_
<:8b ےz;hX㉭6Ycφ4VHݚ
N/E+ݴOa9Ē[+S(+ENDiAǂ<1#j@9+3!zˣkٍu[v-M5E|kZazm{wøYY^p42ӫ(
"˅:>`MwCVAq\'la_f##J4n;wm
q=@SMf'Vq	/}a[V> :Yi9^S"ܿ/*8	Lr:|?-g'&a5Xg/Zww@:>Wb	>bC>`3+T<噜"dn
zhӖ|<i_4W/t95ݔb@{Min^=]^Kmj$J|cFxVPP|H^;Ux̐ⱋy6?)0hWaQU
V6cY#rJӒ:,(l~>KV8ǧёLXzW?k`!հɮ#5]owy;D=y
S٩)A6
ʗy`W%YhyDzȱYol;<p&7֞
w#3
hߧ XoH޾|:+3D$,;G!C=!xf~	0D3
ex0[L WYBTP!܅bPRR!eB3	]%8^vg}_w &=rӗǠG~I6-/bjޘY΋qm	Ȱ3:dNG4Lr;Q3#mjduyDy6T[m)PPj2ޱ^Jkˁ~8Zh<KA0 LI)i&Єuď3,iÎ5Lu}$ f[SѭR':ԮOm7>Zm i_y
,T^OOeiտ|^&n8x6ts%&hӵ!̇_73k;I9Ӣ:iWTF?d'Dcu;9 
>o:	ӆ''KўBeyYM^*2iufx?G\G  JfĽ!~],zZDZ+7Ya+
~fYS4&kjMsFى=FJW_ųɨ-B5 P
5D}]>Yؙ\'3;qۭ^шz_ƕ#[jh@}Ab]'Aɦ|^0)QLz&㠻Ěv=3JcշvBY0avI{BߜY:VW98`qOŊm3#SS z1>
	0DS=N(~4s=bm<cЁ1Mvx}czAu$G]{-Nm4p7H~Atg?Mrd@LpL%f;@Fق'8>w_9V|p8(-U6G/aa9vvZugy-j<78ÿxXӏQ06ެ
i)/93.
FO#thVx2ybXSxț 52:HCxN,X%^yj@xFEOmj ,
_-`t߇xi4\QRqrU0HrL@p\"{ybϷ@	M<JTfat#J=>)#?ޚ`RھC"\ƨ.}H5W:N/2)a] E=ܫH[
U+~U6OKWV!OlЏ`})hxӃxa ?ptEy5:^LEc\&{nQJOmU*\0MLzu5"go
/4epK7je+:f
ѡ <b~x*[wȣ4-,8~ig*'m:Q;fseyJٷvMR!ןVrw뽫>`zWRGeS\^2+K:@f5'ta??Xz#^fI*[2**}L`
喝z RDxՠŎ| TуաDT*]=Q(93'MugRuuʕ^A\iIBoR~5ӟZ=CQ#w|1c;0Wv9n4ͭtS@}}oEQkV^G0*.y5kh BBA{}mЄϔHxq@kdMId5; )zaI/? ϔ3?,N[mG
uJ59.h-e^EkTϪP%4ݑ56 RQo9[wF~|g/3 w0Ӏu4꧁W`f8\:],A0q@{JU3]c2󾒹`HG@-{T\AY$CFq@T&OKQp
]S
</ۤ=ve^K-3/Q#wSYhN v?B#
Ɯ,P
mG3Iw3S_@OPy	5"PQQI&.0w[E"zd{St=r
<;m$oM;Q KRac,{\'3}9»ezK;ʗd'@y,ڱvm<9>d5.54Am=|:S۰K!`{ow:0
;9-T!hwXRjx߁Z0T{TӺb9X1 >ypaV. j-%Ǌ0ǌl-x/ÿqPbMi5Ѐpxȸfl@EsAM/'K-E<͚♸;d5H>,Z7%k>BIܦ'dS~M~< OoiXsv2m&"([\k<M?I9t }j1S8@k4jabkY=u'\
u7&ouвh&5`"߹%5/pF(\]ѿIT[/9Uxs@Qqsc7~0AVV ֖dRTU~ApJ$͂
((\Z|u3Vw>ƾ\csj'F]}-md
yqNib,4?*^M^f}M%"nJ莺> _:IKֱϱύ S͏,|?M BW
Ib~#&:A#遻ӽTY5+cJo*@8'4ajzo. ӔgUNs}ڪm+XNyJtb@|SY#'0-DahJ6~"zhV1PôέރquS9bۀJ.Bή$ʃ9
ݳ(}>B%v&֫5knR/Ӻ"`uRAˋǄ߹eP`e<9:q@Wge9 Jķ^?cl;^'ZY~|*圵57ҹ6UGlFY̍xoTС`[V֦/a)7{iٛ7¢V^Zv\5-
OV
Vxy9Abot\/y->O4Jʥu.QNr=Y[m~.]_Lt}_d
@IM%w9P
  >8x殨z-wŕ*0ZWKtΔ	`b( FO܆4%OXahѠ{	{1GЪCx~,ir'pشuUJA!^JּE%21N|7+:@|,{].๡0rD}NIU!y>*]y"eavyFk̩7E$=`u>)̷ssGBewΩ@tQ*u{h<EŴwuB@eK:jyP`z
TvK8Nןv.  vY{)`xĪa3s!#|	+.}}fzZD
e:[W]pA;uhqjb% {Qִ֫e	tuPԱ,á]KO#kH8WƲ!#|Pò{_jՔ7v[sSp/q8ߊM/5/@
~QO8\	xy:(FV`G`ѓ5'"/u@{jQYGxiM=DH;W-#1ݖ,9yWA1gx&S_׫WH9fyPۗeEj(fk73rdn_V0wG&	F
yqDFv"^=g( FẸh륲ANH,KWnڼL~K-0Nzzkϟh|\,^-c;-c݂# y=^
yM'#VqP:M՛E'cE`:l˰#F($EQ]9Dﾒ~ƻEOxv:W
KuRd3isM'cUi@_h·F:+-
'MZWQSSV㤋=G/E` \j߄}*IvQ]=hιZB0;Q: 'z0u^.)UjLXg%	H=zjJY
9{UZ`lFI
ǳy#x~&RG7x`Q{4AR^5k2(|V2*FAJW[i])QqvOټ]Ľ)`qSS6r{wo_ekXd"̩f6[Y`|
38HEFԁE!9AG39awvAo޶AXRbq&:(
@'Q$<Q:X"j±-|^3+8bȿ>9sͷk˰4uIK{@Mbc
|xiHkk),`ZB~5z`47P+UZ4U5m{bL4etka[<{<D:/ޜeȿpk/NS_ɑo\Zkp!	b45MtbЕ\y!;E;nQWk[V89Gt@2o
uPAd}|9%{EN)K6}@]bRfރ^O|Mӄ
j
=
۷(ݴ=@ѳ)jC>PL$Dw5ahCF|.8To5笝SCP6?B@z5@Xa*èk Zhs&uq-|O:u5^U~̾> $7De6_[lϓ^nr8ސQiܗ8&[n^Ыe
Nﱴ$\u 9xJbeeh2^ Zgvj̊e'v 2
Ax@n*YO[3މc4{)i/ެS5뇓um[(U㩙GtĲotP9hȮh=/E%st#uXUZYO:.8ԍt*1)I& <~@^CF@ _-X&wIhuWu}<XʧM;|UUFv8Ocᓼ}i݌â?86_p-)6(V$S!L' WmDjeJfc^A\Nfp
OA{|3Ze؆
:6 .UPr{كåc Uϟ5}G6c!$b5'-A9kDgZDVMu#p8o,jn3w~=a9Bo1.w㗛Ke:|HE~nzU%ҧk!5I]AW ރKIV4DLɦAʟtD?G"=xk]K?yUCeܴmbԠϿF5bJ+?<R`yP)l w	#Q9P[ *d73l?2
 _4'{wdFGJyWu=YM(Q\jU{tl³k{ӵZ֍Y4@BGba9.S(֍qeI`$2>|;;DۀŪ:i@a> l=OQdܙM'0}v0D\8n#SX hGD;zva*=qt#l^GSv;"MdwS
g1^Em8}sn8Ҿb|ik/ Qz(OPOvE}cZٕu29]EC%
c;sriP5J \&- b/gS?|<&Ģs1b;>w`x	#]^J;4T@/VPNj8
tn>3w!H+F>(x྇iʘ7^SjcSp.iJo_ٕ\ &)j4p:Bp6ICv׃=wuDUY֏-a:яOA=5)߉k^8>p!-ydן{17*zOz)2Z]m}@_x`(C(Wqb QBh|ULbSMCEB0[;@F]OFkfwoٝ/ITc3{_nO<:73{tbPKNK x2_
ED~
Sz= QKy\R4"0- #eD)6IԚ)}l{ЍckEKͩܨ[G]69QRx]Y)}+&D>ӼHaFuq }?v$*â:f,=OP4vbS5HKy	:B?hw>
bNaEYpjCmM-(u`6)R4p Q	3z)u_ilCEUy.lZzMzD́2-ʡhQ0}lp8zV/^VtI24izMQ똵sy=S2$0@X0a_IV}id|C{- 8]g})53>tvDV[pOyPq.NʌReP<0l^ƈ&FVo?7gXZua}^6`SC^нmTb 㕦񖻚MqC[2424<y`!084
 Q5 ?k6NA(_.k?oYtj뵪簻rF7{,⽖xrhZu!â0%.0솏W
o[\<}[۠VV򲖝5u	է	X|&U'V%hSѬahۓ)"yi/Kif/OAb9&o0ky@+5YRTظN2!ZiM~Zk&
*fLc]Iwӓ8cn$jwP%p;[W㯋Nj33FtQك&cn8VQ2B_,k	¦eOA+r޲
{0(j^?z OCB DG
^ڙN4%sΒ9l[]h:/*о@Jhߐ&=)xjb1)	5Μ5Sb{?aՏIU{o:N=xTd/m-yfATA[Tf ^նgd]|csh0B$ZyR=vk0,AݨA`	<kzǳ4t.lmsJpPQM`8
iLMKS3z9Z+yiu\jV21{pרp4-{TۻWu.>/g'HmED_Nb7;w*a̬~	B{2Cf1>w94gubQpu\<˙t8dnJ{cx{.Gd<h@n7[
Swy`Bw%biR4-Up~*7T0TN晴S^Y#g .O5Nu2¦#hRl^^GQwnAٓp`:*E`xrlPP*=`w@	l3hKUEytFuzUFV7l	8Jɩn1|RLh)R
 ~~JŖbq(T	
9ϠER'tUoN,ci0-_mOj_ߥ}!S]=Muz,Ǒp':YΎQolm_6͝}+5y.Y￾7&,:E	d37Pi7Tξ
zTGSLZ;I
^'ohU'Ҕ{|Q
#.ޕ-p^#Zq1MWꈀқE[߇&|y~-|C$%:4[)s.޶GS0|6gPS6y{R̎OxQEo{tXܓnK36M滞bP*$$X|6h32NZ6u[l ? /OGZ-f( ۱@.T!gǂ
9gx@2ޡqݼd:'mk)(w\Wƫ-񧪁~`"dqOuXh_Q0S(هP0?f'wwN028D_e|gftd_# kCL=?
7{OXzêfwa~6ĨyԠ]{d6obklseԕU}ו1dB1L8`'srtz=%LVj[c!;`<N)hCYbG^1_[xQ	iĩJ}P
zב?QjKZލW{0ލ^.v;*D@>g]
Qꆿ,B9x5UGU&):D/:LReOÆi͋~ ;Z%
"vtB

OQq\"YNO1`,KF-.>.M
ྫྷ]VOң^ {Y!I:Z
Wd37x;`k gfWgؖϏNqﯣ`3j7gAiတN}Zb
jv1Vieu@h\wj/AE	cu5{ބz:un;@74FPLK&S͠x9swG5-	La 3cb*!duskW[J˭%!2INTnCmep0XK0*ٻ AGZnE0o?5tV8f[Kh0cdM㣩3t8D%ܦym,:F1}剅V3y[ DԼkL8>V%kE3guSך)|J@'2 ud`θ,w+GTT4;5U2>e:}~сPJqZm`
lHY]-Syͦ#+rFu9㕪 }\84JTtgA_Ƨ7r/!Gݱ:i`.O";ek뎊fsw%i^/9EFhCM8(%۱502Byc_@hz!O9ϡ[\)-vAe
F=<I6G ǎ_!Oٳ@I2	2ꦖjXoΫ#Zf O^ӈ="JÁ uP#V H0p3hK!6HWObT{	?oy|H<:֗X{<ZG|>ew[/Xv53KQI
0]>Ș*4AXK>f=Jp=0|6jBOOJ)a&l;sdacZux{RBm
znr?C){LlVczw.o0>cN,ub˻i\
tf%/Py+̬1k~W7`թO=jIwD{=4. BBc\p;]x}^XUGybNF(fl|@LvMOѦZAg޾j; 7u2yc`/Ϸ54*ZPUXV0,f:FSup{LO8xaYy*<!&<-cĒu)MɫQxAM0-~<!e
/l1*o1xfx*7oλjmzZFEf~0Bvw@PimW
9~Q/v>m|9b(ܕJ ΨJwX!(<1TG^ɢ*<rZYyuzA{F	M/*īU>YZь%hC\"?4V|Baٸ뙽7mS,[݋ң@:#͑̋i_f`ob~w
KEmƊo `7FytV7l,LӍz@l5'{TfN!s֩*^ro@(su*IjCs7<!h[̈́F)<hJgBˏԷJ=pb	O9xK}jWۨ|g|~qgg.tpuǑ$>
:|ug̀!ᖬkJfa3ki,w%](?.O=<;m)	*!;O_=
%8?=
Zݎ4 xF(>jt~T\&d"~cRgx#4|+Ŕpa8(|ξbC Ozbc<
͟V=MmRbQP G2rpmA z>ScQN;,R9! 񘍮ցIsmfԏ|ӧmӡ*UtmH<hR"8JtuXҳU<FO*4@  j[L?|MyV'yS<%+}'?rB |5s5
	|7Ŝ_<3;OeWsqV֪K;
 S>7E쫪_+Rmbﵖ>#44UdP3BNJps1_oijDsӵ D̈́䩋56=}h0ˑ ?q*{ zz0);dFR_ai{G|TS@q$@iO@5`֒9~<4;DcgprbD{~0z`viMUSCW:pHk40cC;gjxǍ 1jo=	 [<tqҎ
Nǁh
0[ee*r`k{BLıR+X|m{4_xY)A
Hѹz{͇SǺB)'[
OHC®+msl5XϝVji4 rE
/߈
TcaJ3tPi*sD6`מ~gH.||(yIb]L{zJ߇=f]Sj n*Zq:P;nK1 ;oR͸zN,֣Y}PR2gu.y;VMFWEv:8?ҼAQ [#I6ŧ
hC#ra1\,USVe81F^u#5}Ԟ%}uDyj۫ѭ=YlrD:
b+&܄6V'nZ(kڜ}E} i lNMg `/q4[ Oo`y
;{]ʹ΢Efܯf'B4XN)|=_ˣ9u z<hN*9Km39	F/z 0λQؼq2݁DG(
&N}5 W8w;P-e<Z+sGif{߼ AWUv;K3 1m0_<NXnS3k:Cw^l矡C*M	/USun#.'ƺ;
;8fIUjx9t)ouLMOPX@GIGEeX7_Z\JT
ChyGRxbTzgv2|͌7؃ܦD2(,#ORCRDK
J;(hBIOOe[ISXqkfS12WB#~S
ѕ}a_	[x-:%0ݧ4	.= ƒgOw9A
HWs>ڧ롊ɐ"`sis^nPZ
tCbC|1^87[(os$^m+ 14pЏG17VOo$2W?KAxh3~m-=t=!t
\f7TF'U;d	hoFs8rbǯ $)YnآFҳ6GA[ǷzGϧ{ 
ۙ2-i%i6o{]J'B8S|+h./5c(_ѡv7ꐳBDgZ㹘-nCآyoAygӃG=e>qDGm
ߙ>'Xx#O:w)WUTs*+ :PXLxB>}kAΪzV
ZҘvYxh{;J. 1`uj[y;(t"XI4m=UuUwid?<I#Re@Xaj:jwhI':S{s>1F>'/-/,`ܻYgN^:
?qObqΟi[dzFQ4xU!neyGyy @n%2re-(
5k|JTeYMoqV?%߲}@	; `gl^
CSψ1tf@fOlsnjh:كQב~L:3aCWt Ջ
lDV}tyI]ک[pxxQ3;=Igh嗽l~0; N#x<X
Z9|&K
^w/%0g٪!mA!Y﫭*Ge/+sjVLܹ[JrEy 74c$џ|}P_~ʠKg4Q`Ⱥ3W5FV5~V4g8(81D{ْFKܙu)Y28)lCs@M=։5pjetm
椀A{uk86"I.͟s}kU
`Q0gִ^7sa,y{^X^:{3'~uV4jT9>S<{o,<b{)܀)s$>}&,3OY)⶜ >3{h<
fY~}4E9e4ly$^_/BCk
h,2;͐EbC{:8qzNiY:}4+g8}34QhMQnz}lWM3# #[ܵINtyL|=Kog.
bfBMf<<ҏƚN/@nz9\ʍ/4Zc
<;zq?>cjurr) .CۙնAqlTv]r.$=,jK1k ÷Qd5IXsmxDS%WME`VFk闸i'M=Yzk_5 ]vƍ
LKFZ(i.G=Q`BjC忙,T+L9Zkt2I$̺<^G]kGte{|YN>oK
*@9^w يu'Kj!r:%Y<8VHurkٸW/Plo)K|2O6V8&	PLri]Q?lc@Y`jJ=ՠvGfa}Ͽ
96 ׁ} os?$޼?QS/7t28+b8jr0K\潼nܜW;<M
}ETfNh6!f'/w
XMUY7ߟ^;5^@ja~#'8b\{l$t, CmJ(, 4'71=]%jQqA&J!+7CT.q뛴
͈C8LY	w?/. 
H#fd9v2ɪE1"Pɪ30)k
Tr%i~
F]}e&G4)"9I40Feh4v c؉aM=>Ngk O7A<n>	cUeŌ1i($|8'a=iUH<s"k[<ݺ.,M3C:Ч%{t3G:S5AO;Xrڧ+%~->Y5<ZWj{qAfA1u|pFSȋoh,ܜkʺZÜBN
}ޤ: h.<
EEwT }3 55X<:̠H(rt|Gؤ-GmnTT`V^,˪XT砺œ?oW?=_vz9f3£CG%&F JOj~@'T3X՟nyKF1)zkSӼI'7'0U%([Rj xбkhJiorߧ
ܪGF\OKq(zyOzȷ]a,%{>S,_\tf.Vą8`\+qv"} 
$W`=۝^s	x}=z@Ը9NxO׎5
u'J^;eFDksGHѕ3Z+^0$*3µq~$ECEؚVȬkUDנxp4nF!0`:%5ѽadE:.=eq_g)t^|վzoZFs.t,*ț^jwջ3k7L3;uh˭M0n1ل|ԵӰ{!ӟOlJ%dfX.S'ߢs%)WьǇUA0XzQZ) EJQ'gIe
=GXEfkp	s lCiVa`ްd$k@vE,(yglhi]apBJِ#lPco$:+-4YXVyuKN?Ӝ7ﯥ%~FtֹuTeקm:Xw|oCHWpꕦUZlz1QьÞԀ@ SZ:aQS@(
gZa>OpGK3nOj)}}JvMȊbIyZ{O,&Ā5'SνO40>b{- t Dyp/PwyδO_ ñ6A֊q{G7P(2(W2[75;I욪n&Y0M\DiAZ12jէRdy;4/~nFݿ<KLir-[vҌ<Q	GY iʛT:krhiQ
O4ۥ3mMfHtys,ZZ:<S}
Mӗ]69yZ7'[=CqBusG}>Slivwg:DO/o=>-T׷[xqGއa3yNfwgpЯ:|ZfTA$J9<v?h|P*ڱ^#v@mTצys53js˼WJIF>c:2kfl{UWF͟7_m.E3Pj
lgGZg!mVɤù13@6c~ qK8mZQgn#~2=H/Y|W@ϋT+&|*]g(A-ھC29{aBf.+<ߣC[	c@^}+{yC!~:R@kd%Ft %ϯśWS>I[x~/Lԯ*w([;;RHel{S&7y&#9Jޡ&͋6EM;yJ4*W~ԕtu\I=cA~>< %"Us:\oSS~s~;L/czf|egxIx<Pr2Fʮy5mRcY
Fd*fK ~tF]P(U;|vV`iX&}|YEi#EEJJ'<G~52Kn@a1bv l}Lq/N
*rrPYab~
B7O*ڨ_?AyWVY<̥3
\?5"||>FCz(gK{Ur?/ۦG?53S <?cnwfGq%,X2I
DSb<2~q9`o4=$Ǉr	ay n	du]3\âcIczKPÔ\F:Yj졎C3tYfEdtog=*дQ^E߀j8mơȢ5
L>aCL4Jv'zvlbUy!_V)xď6-l7otfЪv&5M'aτ[[~2Y:%LfEum#A1得AKCXV IƳzί~>'F^ŽZ%S{l6{Z>-qtu_"h214O˼i_5Z4 G)6fCybs1
7eRqke;%oL677R|EU-~ݼ5:Zo<:}njvu8{TJ]LL&͛.Kep,v;4x}%͏C kߺK=Ih}(0QGP'Ay#E#.5~5\3ݔb^
]oV'V]]w,'K5*'-K 4׹H5OqG{'f R_i8D'^^
X:+z^ikvG:EvveQb<D>=]盻yӍzbϓhĝ4vX4Z)2c
Dj<?ڬypOS{<hWLYE-
@L'`?I)m9[LO'YCᱲ59AU磳\6.jqtఴg/ʌv.vv	y?,D&}?PCv՞`1o2-+[4#ǩUNp(/.%-K	VӔc M?jFq3˟c
xtK`Ե/g=pY_ߟ錑tW
YwiOϵR3g̮\3F%G&Z}{@@p	ϱz1c@Eeþ/O3V
݊
Js~.%Zkq`H5"VicN LL>OUwo撂1(P8ŢӀYMey0(˩$#oJCu1ώzm<RB<S14#4xN-:l15G+	tDtPɻ0󁃼b<C][nC5>yOEXM	{eq	~OߩЖTة
n ,d "OUƿasJQZ1~~Jaѽ
5*3/Ȼ{]t|
jakNmjCļvK`Ǉa7;hky`Wֻ5H73Q`tI#t%KUx+|Ί*}̲$Ǒd!~O-;Yf$*Hoɏg+
m6st\\2} ,uAgPx<Ӑ
vo$[ANp VQxQiV9@N@ h\a8ԏqf9P%ۥ<jՑb d_[BG8JNoC|z`6Rț]7r<1_n-M.u2ҧS\G̛d%9?Act#/,ějZR_yĸN`qT{-juX7  Z"?J!N'~ʵ!PH7\=unt	uS萟vV{jtr93h{4 鍯gUgI[%׽ŉPG>9:j(zXOIgSy	@>pP#W_7z}:CwmQt禖@hwL|N.)͘ܑ#>[%i_sǝ6'='@UZ[>RzzW]
d@4\3g"#q|83, ^ՐSg6hzMɇZa@{ ?_	廜;4W2#iM]&\k@leAUE6V-K9>:mj>wmz$q`N  AoYg5\Hu~3洇LBLiK{DȦp(ǁy%}2㠻ZtxL+oT&ɤ|ҒE'] nw.F*￰ᨹ\w[
O]%u](/b)VrѓCRD.p+X5[]䡪`c@^(3x=D.}Od
	
NNs|?EdrDQh>Knw+snsSL Fp
q&Ywb^0!TK|P+N[+cI@,Jp]z#V1 +n)ɻI9cz+
%inHrv=rGDYWv}}gtˤꚕ 	zq
͟Gg';N;sZ)MҘk =f4uO؂.U.2B

(uS!|%¡NM߬4x&\^Zi)\vozgӡ 4Վ\[.Jl.|(;RX:5c
HÆ,y EpjbbK^Z:[8W^OP?Y[>K5Z8ѷi0/iɫ^Vz ֳwLO6N5j
NwSz[HAUll!
}:θϰyY+v8f]/Z8YEiU\Vp!9%3Uy\r06ر{;Epr7[%B٥JxygJn@&%Ia}P.IrkPESԷxCJt&XК4J:\=d#bo~~J  G`g^(m>ͨ3_ЕaF/?s<\x{Pd䵿xu%	)~߈Zuwګƿx$
J[9)`GUo3B$q[.
 `ߥs:Sid/Z5s(? O(,ƪoJ&h,$k:CwPܤe]R]z|'?ϗ.:wgu  @İLR=*V;k(F/6ղ%08NRw5N(
@ui&X}?[l"N8DyL[	n9jxqELF_nXe²C/\#xe.z'$UmOH3;
]Xn8BSwЛ
ͭWc'՟{_.۪uƈnA
7>6r:ھ=6ny	~oVYlM++
pCb*ese٬ <8H[6Dʌ>z9?*UZx7BV*hǧ"TUNOc+TRAA1`!Lz#*E#6 |;V]$g9Z @-G(
{hMeNٯ_IZ~i1A@	ڶWWHNĩa\N܈^ͺU>7dd
 ;GG>N7Ψ9MZRT\zŌ=&lU?k4P!nWu`c:)0#SLvKU !Ψ$d58\ǽT{om4߮N&- iurASy-vr7v̥MT@,{9ґڥvʷ
.ސh)&L"Sz'st==)nҜ~KЛGڒ:Kz۱R|ǩjkbLZt&뤃{ji dF@|9J@{~hxEۂw Hg\00l$]Bnw{'+G-ƺ6Qn{.5|H,K;^=c5whA2+̅ww!Y%sxV뺸v@W5)J){ێ. !d^q~zYrm!BK30S:¢F=]Br?hإD閘fPnli:?;uBgkIgczapUO~w0Վx'l
ݓ*P9qmtX l2B%YTt1ūI8(obBO?Y]9Xqm0A[& EOhw<o8::߅<&-EiuYMz n>ڬsEΥOzlMNׂEԄWD6_Ңޤ^}be+[xS	UwOyJ_8*T^4A	vCt.hxN+w3q+==HW܎YJ{qMVp"E&x\7Vx*ħ[w] 1>ЂKJu= =3	uǡEnZ nEՏR)*~s9zuP:|* X~~!toGYڡOա4q#s{Z5Ւ܍S~;y
sڼ!g7PU,%:gםpe>nw~CÇ#C68ӫR}d}UPG(dlgXF3_}l6K\
j T(')98A,[{Z>!#
WW2[h:r.\{7oڐ-cuq
8f)/V>}HtdzUYpy)12rS$ z~j;q,`GkOkGC%ZIJacnݗk*7癮+ڣۿF)93ޕMre#ԁsnx*s& l{:#4#\₮Jfd]Vn]7\]1}UsL}3ޫsPMGBy4Ux`UmUϢ9p>f;[ҝ4j3E?-ؑs6Nt+乒6̫j{Gw7
|E v5>Gx-
PN/	$ I&#N)YIaNm_%Hsis0X|
H\hPST-
v(6٥J&eQ{ɹ*HZOWCixsс_OpdU@]Z:}[9GP4䢐	!ME[Z)w[ՠL*$~>Pm)yo({` kԇAE5tG9)G0Up)KUM	VޱFGȗ
OكZ%N̉O^hOj Z@8ϥSq2A.8/(90
4tMi
N2粨|tF4^Q
&e3w7W,*ҝNkx#>/R:סíNz ]=:xPv<CsL8ëc20 |[ȗJ|59 ah`/  \w34!?[ײndAw[ġez(=\ͯ]G\xg_^I_{06:ݶ/ڿ700G(OğqXl^$r>pC*uE8^|,tzSiifg[0+HR݉]f L²uIk("ޑSz]jIc *(fr- <\Iz@xC֕)!&ʝ #S43[':W^
=I'G+ }X~N"B7IN!R(*ݤnH'HP=i(v.!9ñ8s
mGg
j+
g9k[In*[6VFIvӝD|{/%ȴ]\=GJXwIgrH?=[[7EޫWE6Q,k ̺ќ(Y,?{U@=)axRqa%03Etm--
;+`Źm Dd#)8QuWwcr9:iO5՝\zTߜiGश<h L{n|l]ʸX6ra}K!@3s/\\YQAzՁw6T;-ߙ|jn
p@ >[>STZ{Q@-˕1 $c_? 	Qlu!j!c}
0uu\4
d"]n';o=օ3zB-8
L@ӛlrỈ^9}2ozev FuM?];7Gԋ7v]ŖK+9)kjuO]`Q>DOo JU[/]O\x쬐+y"a$\j
Nh. "xTn`>Ma%S=	=
KW\OI0sV^
R2A1W9Y']^%6RB,WnU9ܷN۠g]qRI*9`H
rTOy`8|UG~8DEqymw}f|#8&.=
$"[\1+EJ\B+Wr4*}ђYē#_.	GDC#Vצ:py.GtxэC! 
)T&q*I~y?׋sDRDiŰo{v*zV4tA=!ߕ$ʮzη><#"sJ k.hGS?@GqȾcyv8h8 8)$˘i/Q'EX^ÑbfqU㆕=/yo	"ؔCA5.:+(ET{="g[Q>M-cUxMu<LqWuc?MH&9ՖFj=fTxeH)fu'5U,g';xG"Õ	gdguU [X v%_U >$kYt	żz=0GP$:e1y2W	-Gq%5W 
E}jeon}"
h&xy7`yScyTWZ_Mp
'UPAKzQY1>gɐʔ.k+~q"4f@9@5AlKU< ϱ^W}=dD-<!l"X]<{]QD'cԃ=V=+lvsٯsV]]ωu}W. $\Vpg;;x
vk_QkOu-"0lY`/2VQQGc87@"GS^.Ny-:L㚺뼻dCW&Rd+"Jp9|DhFrx>2sɨ8KsΛT|}be
Mգ(2(ViB'Ky@Kvyp!{.E[ZXkz*+Os]6<ټz=Dd.Ӗ}		܊e<5[Āpo7i\|ܰf+J|Jwm5t1}8±'9y	/ANr><pb4vGtRE?v7ⶓoovb @Qu	UVL1Iᱧ/Y9]zλN8KӝSJA<֪$ZᏃ'|ul~,2}78T3
;pگmf>hMڈPV7s-Uiqp
6!'Gуe-ړgnÁ(xVzsS˿yw?PFX%n;d;" kvu~0D ]?q^J\Uԥ<VE]!={DO]'uZKQR!^y%)+smRBUR>MMZ hp0v
E>"rZ"cjGAGR؛~(|ݸ}G$a9
kym
 }uRhŹ>	UB6cxֿE+
݂~]RZ`!x Nh̑khw\,95C8;jS^ÉN=G<Fuďg#٥kfܰ@L'8h19tuFr4ABz;Ks{90L^@5C7./3MYƛ8;IQti'SE()uMT5w:Zq^8XD+ͰM7Щ~MۥxYv}]z#k8T7/ $aGY?WDULQ.{VI}4	cZizV<eo
pQ'r٣yץ\7ENw͵Wx"q ?`Je6Zܼg3IL&7^Khܗykt|<Ŝs(OU?ƶpɣ\7 #ߪwEW!3Gp8=|,DV_)v4E\߰x1}4 z+K" ~엾a.6BkE?w8\d`'*71|pÝU7)Ea(n|q[{HtdA$&>hǱB
U7]qWT)1w{y;ʈ\OWL@{~ƣ-ל@Ge|tA}	&t8ۀ@6}C):a+HSڸeWxw|U&8U\3Ku'{	vv|ZrDcߐB9w;RURZw9owU4k@Zg9zBpܧP,׵RMcn`PIpe]-[Jϭ){6;)V-'у5[Ӑ5JeTm-T[]:>,
űݿc:polP
7nn9\gz'jۙ8}Ѕs{$_i$wNU|yȱҒ,O~j	b`NNV;	hwO,;ZPrּ[♺ɮ&NG9X_y+&D$DRqfN. cPm(*l =
r$F;[əҟDHi $ 4@}<fYگJ%V35xjo-lcy2/\ȥRM`EO5)$k|bLm}µb~德.f՘(IG>h-(gԴ1L5bdBfmRKmeWZ
QrX
p'u*-o{jsNBI=}FYS8wt];^z$	C?-TrCWSzm"*Fxx;d0[y67߉NBoq\/srPg]ifM ha/`ջ8ЊourYuVyڞ_
@	FI::D"\.
Ols8J94r靫DM
|?ǅS-[\Ze:_[T!料1kO^)Ypo
ΐ"TQ}aOV֑~)iS0S_]|/ K8
b~ g0B"d?tR4Dc=ǳ-++O]iֱumP*<BI[tbPMeRt+IIMuMhjqWBIڨDْ>r|to	:KQǺ	CW"8;gg:9LZk0: &/=nBmrkJuc>E|ovȻnm_uyW/7BzS]xW" x'ͺh?u{_gu64"a)^Ϋͷd%.s4ҽS+η60RTӒ;pa8H

qFOiU@V(Ϯf4My_I%*aD5c5Tz+$_&Mp:u)=U&jȩ«g?1֯_ٚts*G]~=p;LQ\<[A]~v4-
wa1s hAUU)`~+'e8k׼dD)	{fફF^M*\T
$~^6ަ)*Ep-Nz'G/dxm=NWCmJ9l1Z{ro6)b27L{+-tt4)o|+)Megv|\'fzMxV Ed1aWC*=`sO;i1_<aۺPGG׈5:7c@.X~=Ӣ;:FBiT~pUM[YNVԜv<,7S csINz`TС˸S]V_ F-1@n C+  ja}Bv
0hxeZTAW8⌑O89'=bv,[' Nz^~uWIW^{Lg":E(>P8TtuTԳY&X!OIoue.򫖜'?uK݊ث;$t:}B<
Tzdf&l1:Ur5JpX?C%<r~޵gߑ

_@,ϻ*dϼz6nc)?u.x*{tBd&%y#8SP	HUݓUǝO]F=iJo,ՖbeFXut;@.#[pqN5i"(<\p(ߊ>,a\_zkwݜ .ex
7^|}6MtsѤknb):gՔ;<߻Br\{*djFJuQ.
8M*)'tK@#CXoQǘ)9y;
%		mXS<Q4nz:n]~
l``bLA{f)47n=
GߊD\]Fjb@uzr$O,GUXXWOZ+I3M*V##
`r[<P +qH/2+tmmP;dݵ?Dkd/%,;GHv

<N$uvW˩~nQfU!dwW.
͜7^tb}ߺCMN;@S\ 9ƀsZ*Y
D;.; jχO M͖mVe-rV	q$B^jY@ٴ8ޝy  0S+sݞ?|H\:Eحl9[>$.M:8Dq7Tgq
dS0r@rwI"3	x AlYeɾRP$H6vSlz&<,*
^Tqػ;rơB{68P@"59tF- v&	|/o.:DdӔ9͡idTX ڌ%"7 ȁ7GZ`tZlu3 Hqf 
nv6_7ht~/|d~<ɟ<Q׆!YЙ? ^E"nIOtGVpd)ںC+Ho
ԏmΓIm^.6|Z|oOY+z@;VP?pɅvX# U?@9ˢAzUұMd ~}2΂P4&߸-Rcم!pnzpt<՚U]p.7(W*D; R[ifJM<c*eZc8ħGkMHUi0z75 /=./}Թ88tnC;V϶vv,A !|.yR1!Y}mwOu%4@n=C
F0`_
咬#n &|xiUc-+Yգnm_8j%D~q	&0r%k7l
rθ4^%2i+\]# ]id..$ZLiW' ϠžMHMI_~&[d/z9RZXNc䇠>|s^K}T<XQ}tG?=9! H8,_j{Hl58:9WN&k1TX4XZd?\P*ZiZl+^-7CsM4pq@Kҿ\=(EoZv
.{u
ek6<hץ7|LiAǪҡߧG';k:nZD6T#V	))i7^~{Ra43M&L'鷫_8u+#
"/W>ֈ`*^ɟ}_r9ȝRU?P%hv6ED1ŽX2é-l8ur؜LG]o7c7Xiw8 ]$g5%gpJǪ;v%!}? +G0'jOq,3Cij00&RvDcypW#8UrPKXn6J/p#l0J["s$5ӑx'?Ɗ/I_/&k
/}T[B2I▭)WSQi"_Vyݏ0n5Dߌw)״)\s2suͪ:˺,3$7<oۮM$p며W9 )5-Yo`
r
j3IQ/0.y^
*L5TZO!	~)7{UUMy5Wivt%P%{'U~X.yovA*bN_TpHߴ<'9LfӜ
|ފBr6*Kw欓Q|t7<jޜPW"Θ2F&VR"@ժZY7(pRBVe7Y
)}VHVӕ"#-PeGΎkCy%(\TW a֟^ڞU-C&T߽\Qr/2	PuJ_ᕳ,R>^[{XYd˝ip{zvG '	j^7z*^kj?'&)SGg|jܺus,Dٴх=+{-YepوX|~KQgBΧBB |SDN	WKCYP:J86STn~h\nȵfl $	MH"׹v4q?ҭB~j}qf|Vkyr<U8ܓuQɚ2_5#vzHntEux||$<GwZY]ԣuGW
9dg-|ZN-AQ|oC"SٱzZ (pJ]!1m.Ժ 9흲7"jV7JR1G[Gaa3n}+@K\9u}PGNq&rk։>9q9Ypm&蛏Nz)ip2#T{SQu 4:	rnz!es
A-}vgUZex;Yͷ>	9$?CbR}	m力D6hί}ly5x[]OQh,b"'X ՒR
lMz14&^3)]G>ꭴ_x+{׸]PqVbfo 6lO,;N&~7[ܢݱa#'ujP%wHut}AVuhYh=8cZX9RRr䲲,},'H/m.gPYUWA(P]͉I	u[IzK$;-]<:u
Vi+$%jZJNo{%x$7"B4攑b"`!^S
Hr]28),W4ŵ:ݲhI #@+
mӧ&ìk FZ	<fH_7m^R@]:
Uڟ*^"MWtGEEHZ'WoבVT̧=98Z(2e"ZɈ6l_\z.{45%+2p;̤)Q{,jH>12?gx8a
ko~"tg̓>~.{*}8	R҉x4۰iRbӫBd=G'.KSTɷUԝ[ѰZޯߏ5i53(.9 ,m:ɚ,҈"8Îu'@(vkZ*óѓf'O,|AW./WkG`[cҔ.p9_MmKJ5<W4fw,+㓗*uWTv&Ѵ~,䊝OԀ n[@ 4 |9:I5;|D C][Rˤ:a8zZYAՇW_ȪgO	5m9yѹI]mqޠe }-|QWq@XE窶QKOh{z 
6RGRޭg^)X~s}RLlĳ+ܻw|R"\l( ugT2Q4~ !#jO%c
,Vć3`v.1:/eȬ!ܙw09:{- l. :C9=2]7
T[ېR	O}G)}nūM.4biCODNyL*V|~#EQe{t{𴭭W<v|(p۝L5J+yȮY]"JV<3LC7py:nlLvZH܏WߕIECNR{TNI3e8Q"b?/w9
t֒k$ڮrD7!11r~{ʻyl@cSu'tjZ
qW$ò,=knu$4uVB|#%V6IӇQ©,]W=Y.vGj(@c@%
ZyqЧe\5NK5o*.ztP:_CՌ3Cvet98f\,JK	F^eËug>B/'7j TP Jt>|$ I;n٢rқ \w4h)Kn] -Kνw;R:7!˭e5[O%{t'#Q2_I^R}oZN>8@Ѷ	};4p#>{fUG5A:$Nl
gdNT7"?~
Z);/E v 0*2Id
	5"	oβ诤P2LoP%
)4Gl$',\q( %?4Hu5%YxA_-Ȓ9ZM>}*=3R)+Nnם!U]i۶.H-S	^
;գv-$\u31 A֯짡^[J+e	aꮧ%{<K/@kWXR̂
ݐTTwa eޓ^AQ ܳUYmv)t>seoj5[QIk\쿙8*=;(zg{e:>Ey#
-b֔>h[<H5S]KsWM M$ r*?L1>kua[+3(߃y:Lb=&Pw2IR,"6~$ǲRu^NtNQN>6^N7uUESdXh
܀m&v-\˯)t;[Yې\f/f3%/ |ʉNFp#qk{r7=vW\rJ&`: o

ZMKTF8{Y
XxKJbP
nݸޛXIηօyEz~j<:5BYGv}}-jX2%/ʂl1#dBrSeܥݟ轀7ĪV^G}:m@])a{I*d?
Q"ǂ4NRb-;A׊/22&-d"8=kGݪ d7h+iI|Yqa=`<1Sl@5NVxQ9@oG
.Vl9%_<&)4ЉAkeAIL\;b	^?ck	*'i(nLnQG?ǫ4HSsQ Zۺe$wwⷅ.A->cfR`GS T1DD<yLtG}tg\E(W<߅{}\Iu37z [RSHOR,Bź5\u%_w8	SE)]΄)ND^=.<BT\`OMxoMiCUG9k= 417o1JX>iX	uXA须NH~:wԸ6-^GO#4㖾:щdfu6Ywa"_[^||
	500iH]LO[w$r82@oggUnV̅ NrvW
XX_g ﱴ8jW-ǎ
;̱"20ׯIi{Dᕛs6E-$SYIs^N9l|oRZNYfub_I []mvXa\炗KRSxagݎ.
}q
 汻Bwۄ+U"?Xp5@g;ix
G0A 5bz,kᓊF	f@ٔK'L\ׇ#bW3+{YRGϩpPn85}@\KԹҜˀ#j4UNCV͢7h'T
5| (@E){Z=
	(kܲL3O94R4[t]9c||]\_/ۤ$l}޴	a\-]	vlȮ5:	ʿ@{QJE)ruD~-S-D%4.]Y'hJUg"f*1v{&Z b?nGOӔ
]OzSa1C^=V"ƯK> I
\g|vVO	Ǣg":+#si8l;c}>h}Į^=$MXxbO|twWWqWXB;Ii
X]WZ<HmJPʫ=9O@{G|
{*@<Ʒֵ8I{-\N j]y:#TwtF'7AN`l?Ea#gKOox
dTj+HZǂk
t끸$h.t0?}s}B0Kǚ/|;	d[z%3
iSIߕ=Ŏ_K"fQN-ݤ{CT4]mw	.9ѭ 8:/q d{\gs o7E@
&Eswf9c@D@1
v'{_*bnW;u !n0dѹ٭y"l ӽ&PP%M6QD4! ?/BCSmQszR=Wr]<ktا:h'е|7ɷzAJݍϭCoiUk=2!ˠ>HҬ`wS5#]N#6nw5Ox(@?ONTd_â}gHE j}!C7;2"8~VbUSEz/*X/>d<'OZpe
]䎥a=NV	:h
iDD6IG{#]~dδل<tt쏞 f.Ztc;X7}\z2Qtwڃ8DzvsCZO\z>eA]$lpM͵󁅐no5u9rfa]9}$/}6Ǯ@ ׫xftx,?ZԳ*[˕O6%ֶe˚{y@Xn_yi	5-+ٮ;3`ȴ>ұk.funM1ER=&V~%\
˄['¹J0%6Xm
R#P&ZlAjZAP_o[.j-/
VJm:-~3X~n3z͛ހM:q>K?v
{5L⍶7?Hʿ5Tj;>Qx.8|}mQ!xUjZ7)jޅJh deoʎ89w=T=RҴЯ}Cs}$F怆F]v8fI1>p̕Y-gF5=:.j֩k{m7?{Mω6 &#~a)5׿:9r	QII	іZ:o_<<o`]2ZT~kQ +h9:
ݏЦGB9ǙttrHv%":ˡ8sA||- ͇{\,(&X# tvY+g~}m<LvmpCʝ_7zl)e~pEZ]:UM0mws)I1bbeXqCqLq|OMkTEJ naM^B?7I0ӭT,<}%=Z~qZ  >\)XJ׳cjUJ:ֶX,jqP7,fSj&7E9`J͛":Czj	; t:[)|@97]i<!Yke챎tOA'+\
f}>t[oDQQYVGdOmq2t][^5)<^~qe'0q+" 
JŢO@mg"ԛXCwϓK-2)6t)jf¡次Ĺ$էkL^\!Ʀrt{#GE>:, C-󏡁?eO!
,*Q[K=c0=syM)8k:5v&'TJRPEU^EDk)S/Foɜ,գpg<jl~l92k]T&Yya%^xBȏ񊤢<(`,9ژ+]zEW`L3*!+
>r*_ʑut{fTVxT
w/AbH50&Ic'K)MibA?c(d88(s	-+wW#Vt3;Cm,kK-rQ." ~ w*8Y_fwAJ\pϓI[*`w`IH
8>!SOw4{UՌ.k׎DTs!m{9Z1Ub^;VP|8§-@hӥjf ?DT
!X.?PhCw+;E3 s>x~Tm%ukoQn( pX}<Qyn# R޳w2NwRr/k0JW$#5ڬ$u,)i	tˁTxIp}'}VڶqrA# S5LaZZ?E1ɎZ
Vy?nmb#<O"5X0pzh
ƫ=h$I:B-ihA28]?nY#sV/H-}gaKw#H58)HD} `a: + 0)sҕaWxbXjd]];մtW*[?xtAUT,AκZ@޲L*2#H}[<&-TlrVĕ'vSa%+Q%GrT4cXer+rޒ݇dBؚfV~9,KO;d1ZvHN`	0Ir3_.G?\W;\}9kCIL1O+UZ`5	t	,
WZDX:@{,ePTu8|-l_J.v;A! kt&d5pʫs+Q'eEN1-?x%u.9d`afa[V;"Sp8#ZO9]OcIw5qE'gK.x{89ib9JpOs7C̀Gr`u2܂'&5Ki64T[b>@Vckcm $^NK^w{}qildfkmg*~uwЏj$/j=$s9Rp<rI!tdǠ ܇'htXnjN.+pyWuvIOQDHN
->.VvZDj \4ÕJ[^&pJkCSR8CMܾn󣂲j66pNA溡%$y4QsGkEfMw[sX(PpB}e#<*I-:ӑzphBٕGGbaޗߒn׊ )j_WXY3)wH:/~%"#鼝
]ȕílۅXّӧ44G&PgxhSDMmK'2 0rruIU+ qFfg)3hyk{MRЕ_mbujJ-q2keT1[ZLߣpv+
TQוxz/\J畩6 a󳉷CJ7Dj]FwuOOG	Hh]\ik!ӶR(
&!ț]w^a	Sr_r+h:q?OV,ŗONAT8))ඈеW`k$-
+KZb_^g܁V5(_ ]>Re/UbTLF*D7P1ψq%H}T 9\MhUsoEEPγF:ql[Àru:0|,괩?nicSx@P(Kũ:1U^_αuT4v9dT
+nm3xc|46-Jmҁ;.%i>	Ik~v+7H]9"{}M_Ӥ?IlrA-\2xio
E_vV#$1锗G,G!ecNi;lއKxK
fǓ1x"Ѫk[;mAm3J-i.a~,NJ
jIa*ˁ.g&
=8uR_3{9͝kv/z)g lrZ^"MD>u@9npjz; }.4. )Y,_W

W')E?'H/8^

Cql}m8~
IE[\s< VTɽz )Y;tf[ G`Z
LA?$KդҮ@0n֗B$?S350#5ŭp$6K*ԡ_:U\xX$Pr	Le3W1u~8jpSp{$~U{ыFl=YHZiQ'r5P~"^;BmFQ,'RJc05kGp|4/(f;|GPSfGEsk4ix?.ewG_.{q֜m瑝qY};ĨN$@CeOʓyo8oaO1Zlqba|p"꽲?D|UpM.1Z j/^W"zWϻvA]NCNw.Q	w=#X$96]ݒa4mLLqiÙr%k%JnWK9ܛ6^U?{5.Q["g;`aC;{l<z`;LCORH^vVyi	g=*+?*&˚V%ysܯcU~['ꂣ
ff*3V⣁o\xHF"Xdovy^K;`"LPd3ٔV\6
ѫoPd <~_Զ]*N!0(R^
abRkոp6X]Kty=4]! (>w^|Iҧklzv,egzR!I	惝Ϳ?(/+!oߡ,/2Qцh4cfRP:JtpZϤO^cRڄ~8+Ƹ	@/lݎ>+az{5w )~ڬ{n.AwoP$yZw'>!A8<oQڊ"@^ P8#njwE]Dr_	`X: 螹|[/PްȯNi=axxmKНs5w4rD^4IǱ٣a5f1[>_ҧ'#5,/ʹ볁sZqiу:秡jGK05.:p;^FW;Gl9s;0dmň2aqi_&|O { cjG6T3|(bאUCcpaQ\/[qv6,x Q \|tqOJg:Azs\9unquOנz|"ੇQuK-B|{<+
qĺQ>"%-O
VOOwx6d_ڽ࣊@9~Gz_|EuxsӮiB+`MS4	~g2A8v}|+͂`G\s#qg*:OȰn
ܿYkN泩j?jnX(څVvUAU R
<pt5M;hp`&`KG"ђ)ݤжjCK^xCt^(>̣i}ߗ^$0o.iRjqB?*b~UP3 & UW݈O{AO>DAT_<W@V]q%xXL-x|djht>#*r7qM˜\A̗1xWlYgmQil_
 \:UdԈoP>]e]:ƻaљ!3Z&}i"l$$	V{O+kٲNps ݬ(TȞ6mz'(*vusqnhNC4DwnN=|3~jgTqQ /4kaOf,ǩ'gx0h㐍5u2&<v"1QӺ
lQsyD2Q7w~VDt6__'N7 Q)iq$;~cߑKUQf98?SnmfGp}{dF_8Y-!X
~%)sZzUH XpU-NgUy^9yK(
p\;C h2GVH%
jt3(
xT$Rprq)],:ZI,0(>ufcoU!
XޝREs<B	pKGUf&XoK3'"m7&Ȟ<=Tel=q(ˊ]ψꨯs!*B,R8r(:/s0,Hm[ơ_nߟZS"쥥&[|ܓI6GITM0?w>Ĉp:x/
Oy7{x;%	GA9(ZTp[t'Oimo;̢m
AV:)89RKpzhuMPLbX:!	p|mpU.0r{Y/xx`*o4UHpC8(7Ss%@"p$NkCF=@~Z;iI5J\'WMHTw^}iK
?KW7
ؔ޾
QgaD[D~(\(V,IQĶ`.CMsGݻڲkIvhE6N
t~TThuE #߻r'4#meMdo=L=M@=0uW(l`Aи_*,õxu}:mIg)
Rjs.g^2F_wjv?^ױ56g+?#Mi
[\2=6q/}xSzem>zNxS>̂}9j֍"LadΩ7;j4 :oC
 X=ǢTid?oaCynICE1,?]FM{X;d|{z>1y5}96B[ R曭6ZlΟ9"t
-SP?Pu"ZrZc)`z[vԈ:cS* G0fCm44X!|*}u^Kzt54=;H0L{?%C,NZQ@3v3v_
UaM@Pc*L~|hz`ϜŭՉW ҔUycY*{68{~&b猕x4+Wq i &^]]&^ 
~dEݚ 0
yVv8CԽKUa//-
xab|4CpNl
6ۓma?8<NȓJ٫"?^HˤEeyhYm2bsmx]֍]iQ#u;´EaT:	jUƉ2Y1;U6ű'pWJ0g~܎kN]:BPS@ӠSPۉ4,Q^O?Ø*Lf+qTo{gtf0}
X)8J}i"Cj2	:/Aokf
(&̩}P50UI	 4EWM*n ]7uc{
y=&)v꣕>;.vvRƝWw9q7\wʏˬXܴ8f}1聟97N@_ck?Bz?N
O*l4
kVX8^?nà+
bӎQ39yzF:Fk;f΂IJQgBms8J}mE|kZC<t#g"3&/χJjg:'-w/Hr)6qbW!zXz!`9?C)LxpwqE+)_D,AFfeح+~e߫y_E΁<xw:e}
	jHwuB6?g.xΏ,!*̣_x2V1/a^lt݊gcu^],M"%8&ho8] dZ* )7?Drf=w(HKfm76X}ME\'0Q.>!=fk@GNM~uD%"+nջ4QAOdDpVD;OyPW^=<pٿ;j8To!]Z}D4vJJo)94'i{4l
0I!AJ/!,a4s6 2h9jF7TtQc3P|TFhCОcu6
j'cY5Q|Ήi6
/*g}t: ^=)%Sy`=G/MSѳ2 Fוf%H3w}}	G㤔P6W
L{?/pг\Tpi1*x@(0TZ)ۯPgk`@cM̀y!U?;4
˨JBu3O.^ydüjl)/r|V]Ȳn&@ 
Ԝy@-Ja`alD
NZeFN>jm҈ڽ?UHIikPpf8;\IGOrÄ	ۣ_ev)yom^6z(X׹V_
'(Mm4n#M}s< ݾ]8ŗF[7tvVζO3mk 6	QԵwLW9>5Rצh\_xPӭ!T[/<r3YP劖z40c}WlH
LAI3em`|[<[t&-0=GsNpKF<@^-*No4PMϥx(^17(](z"47c[!͏4!jAKJ4D,3א
|:2Q7jۆfDJ84GjG-{k
@)F>t0O%FBmk/mXkQ:oE_.}cōX0<r|>Jm`bљNE -ςVpO9/5`&%2޿QWOIuj$EK4e=N^ZZ\9
ٯrߝ-}?^#O#	
7Bf*PF!D`68	9/Ic{<'
Mp?;1;"?6Zk-|x&g4mmޞq}hxktu-m}rĖj|he~$?U3f3RtO# :NI=?['0E~rJ1vfkQP'13v>9olনjO=lu'̔k*	[*.-~w|2=4יIc4N/f 2ǧwٿuhv"vv.A4>fB)9yna.YqVмU*x{j{輪
*~{\/&Ӽ	4SR5MCXؙS^DIm9yĻ-'kHrb1@PZ0A	ȁxfݦoRofI9W^K#o
;
!ƁUc~/WjK'oM7|:_Ti<h6ub]΀ "j%A@q!M'䇥Ti6w,o
}=ipJ㵲զsЙ/s,E9IimYo
Q8Aq|L8?{I/Ǿ|^|vj](q|R<ز~'h-7RI]|O'oX`kk19Ό1ԁAhyԟvM[2
Ck\ݧ)})"<ƹmG'<
lZ>yZivy1$xC:OL+ʿt
ym)3ѩaYD;/Kjx̞C
݄DT#d?VR[tݶ`KLK5 NЖ!>[Mz?3n@
	*\.LY)
8PJd3ֺ\&8#g.pv} <^;OGÒ2W:.d-jee2_fGjxg;׍@
ּ֚	|䒾2OI%7_`ފ6]l␿\MiZEAk]/HKk7A[9	A>&v5O-9EV1#qXי{/YGg<L8{`;O3EbN<*gi0~`>DՈ.UTuyRJՇ9m5<dWe* eߥsg<
fRS1.Y_8F=hR2Jf]tя}88>/¨w֧NV~>@7+)rua9"paCҜW^	Фy`jF2ĪM0LG?y 
|(E`^PcFSɻж%XiZӌjyTaNpݢ<gPfFo)zzAUY@9+|qlPrbR
b9ܽ:o
~ə4++qwj*p٦Y-e+_`Tk	2x'\0ڹgQL?{m1G
!kMKsoEGBĺJKC&xuvrf,y엷ŀ=6ZlPa'Rq[%6tW"yhD(ۑ9v`srI/D@⫄:]7}:aYmS$tS-Ɂ|6m]Wk0FWJʧWWF MԒc5,3Y3vRz. JM=qo(WKCR
<LSҦ\T/:턱(^p-(8<I7"x즮M2&+P˼G^h
ǲUE㉙R
ЫgOWfR@CmH;$rEviPxF)n{g2,OKN®WQzjkֽ J/5P6
kcXw֘USYא6n2D1jY@xϋ,WecL ^ަ˄i
gׯs|E$C? e a6rR"?:&6E9|f%Gb:KřI['i˛[餆:.vOZAL?5shGC}']zPH G(xSP pSyE		 gwhLwVrC<7`fj'TvS%A~vJ_Rh̓eS̗M=1x(E~z뙞lz}~O
h	Oׂd;q?* XQN#p{U28^Psh{U[vTyu{3ޝy-qӹY":W2+6qe9z^<b,jO
! K:&J&1,JXRoP/G#nmyi-\*Ꚇ5'j+y@Pe˞5 Ҋ&MS#^}us<>'& W]T\J5u_R'Nbj.[)U}?b(c(u`믭hqn֜P=ǈ.x:1,3OϜWRA]fh~UT|ɨC_(rrpMMϿ;S):'Rd6B3p
^Tzfxp~P簠F8%6yL?S[(dT'V13By+J6Xx+<-؛ ~yq,F;sl~"^ytSGBދ@ֆ~NokaU;%x	R*oR;uͯޯ 7`2,՟B
U:ϻ詃[2߹q>GT3{2|(Hb3Aƞ0y	n}<T6k+f(
g{z+BuZtPApy5*v#?|U.JUϣ`!)_o
8S
"eƈC`]u,=JiJ/ۚ^*!Ǖw[X|!IT#J;7fNPyN.eͱ˖3E9q[;7ZҘ-¾r>~I*MoҢQ'P&u-ڣ1w4
bk Tw6߲tղ5) 
!妗n΢?<Sl`D/=q.D߄4@ߕǤMko{;6qQd7 8~\zb5kUZ,tAjާ6v*yxmg=36,_9Ƽb_r=x8Y?eQ<,lٌCGi!A}Yn>F轾0[mhtqQk/fJYQ^7U?4 RBV2l'1L2dR1"n,U78C#&g`
&1Im?IGЄ=]Θ>SD̀m9bUѱL Tb7AY-MAc$ٹ4
F
X'.tn^ y^S!<ilӔy4e v	db0H+cu|H{z=V' j^xB$$!Vw4Mm6GC'd-}G.F+~_wጙvtuB4^rŭ s8xkXbfH4e|1o/Y|@C2e@YCjf]$lRgRB|5SmMV"YwNOi#xamu ¡Xj9)ɦJׯ
 vOs	D>lSh!Пs`/mGsy0Fd7ӞZ:|fʟ	:$H^a={)X{'Kx$063IH5-6igg[0Ά|p@^aU ?^{*T|;uB/U.C+`e>~p^/4[kCQz#9mt{ekLuo):gn>M#OX{P|Hj^?-%`X5KLkrojz˭jVl9\M<:l#Ÿot@G69w^W׉%Ra%lZ-/޳q>6%@"
<qO8	{yۭ6oR7ձ윏N?݀ojjT֦ݙ$y<[I+wu70oTMUؼ Uӓv*!iʬC6/׾E?C#Q&Кv[_2Ѥt;agאUzW>fͳJ0b$KQLUjeKǨ޺`6?Bv`X)lRCA*kd	ZǑ:5VLDړR=;{>/^%?ok
!2F  2
XFNKs$]0}g'PYDHz㣫U0b2>|^a~R6G׼o=,tu}[wϤdS,NPE-&Q3aT._<ߥnQ;)mt<ݛ: G6(9قQwuXNuŠ-&::PR->i!C]Eu69nM@y[aڸFpq4Tmyi=F㤹]<5{>WB#;k|Nh"42vN~PiM]A#cb#/ᕴ66֋~ R?ev%ET<xB(+p&z_;`FQqBٷC]p3eiW*UMh=౗؎	nzKs¯
,<csY;rrfWdZ)D4
IXϘ	PL<mii(^leo.+6E,iwW񿭇i^3fЩ 
h^Wwt
A{-ьyUnY~9Z7_sym-z|~ 
F?|ڛpzi[bv-$<l &
//C
Xح3C)ӆu g*C[=Ne*gsl<|`snd(͸a("ZBKURsHӕ@T*5)VgnW΍${a2΁NOE&9?US?%T"evG]"y Ei)9}_wi2Y#ARU\/2gUތS8ʶ&/+oO=ߏQN6%496爀oQb
'|v(P9Nra{Ԁ+%)$tIت@zs_@-Y|iP^-F	9
J,wGĎhXITEp甮]O'eNe닺-qQv]k5tl\Ѽb*PevPIoQ&G<ljC!yjZWRpX:!G
v-|}w@jLt᧻&~+J(5دc  䙟[9&w@vKa%ϲ{Yen_ʰb^+qN
&34Ee}ݞA%w_YPU*CؤMYxB5ih=Pg篂{<W<oX0ğIm6$9]ؐ^l*2LrP i#
`bvTJrzR%(uOo^ih}ty!]O 6<'#Xr:ؿzohZv{}V<@UMўZ!}.fU9\/TUU4JXpw+2씂k'L``u~>WqgؘaI_"jvlOn5t+( PUplHSQAS%/k.uUա^'w;S}B`.nh޽ΓCx/WrV̀b>Ũk<>(LzC` 0#ALa.qNZĺ=wg~VK
r\`Kd;HE;YoUKV.<̢ƫjL?o8k	ԋv4mvձ6lh[Qr&ZDBMM{z4
?".uP\긳fl_ߧ'=7upQV☜Wtq];OK7
78L"*oxm0 dvL>E+';,NL1*p-U	\a9p ظl͐>7*KC#ƫ~YS$FVb[}+NdE:ÈKa8>{j7ډiVf[͎`_47e<A~b;[{ߩ5C7!'tTH_(r
_R^sNA;Bh!d`~]GgpJ=ԗDA2ZY5woXUώ >%[~uT\1u~5Oi#8f]Sɨ̐7 Ijމ4}
1MƲiZ^qmv2R<}y{t(=T}!Np5D(ze J=[׬h
-F,*1`sx0)dXTV@7yzr|4^x5e`>`T*$>8~ݪ7<6K=56c|8
3O~k/:Ơih,)mn-@rvyrܼ!b8P3#f3|Pcr+5>e,U{I1M[V\Jk'䠄iQYj0`¦xǠԜbM#Lۥk%@2*hja@<iB|XAv18sJ=Se1*8AevS)͌v燝	]=Bp&2?#mt{̧NEGPіu]-?INiD=@w[N (=~z=̤&w`_@]#>V	>ȝfBŮB[<_Q
?f-T#َ%fqS,#iWɦC}ЊR-}/$>JMz~hzlCGWcfңgUV>%og᥹x~Bk"L5xb@JNRFTxՐWM+pV?^XXoF6\S'U4NhI$PrfU|UW'S`xgQ~vV"2ܺ6= Z<ݟN}.9uEY\<Bg	Ǆ^s92ƍ [[]iɒzP]hnk3a#"$lG.np宍5]YEOI
 ;)0B.wQEׇlf|@
$^PSY#Ż#n{j嫉dRZnzg9C
{}SM^|#)ix=$Vߜxz
ESi#j0%FI^j3sY>6wS>|팊[ӈxښYQDT#$O1ce`>I~\ԕʛ2<V4yLI}iQMqh6O$@oۡ\>KzK͝jUhYyn'@ݔX`5iUPW<A$x>Ԋ _EW(<GY[κ(`k{ǻ;tfnNomFjweMVPAKM>p)pGӠA3MD?&੦S)-`#jmV@vPˣI]FKp[Lil-{d^1x#h2Td*p0^X7r x&mp΄pItZoI	a6`X{0sn8=w<ДAa9q[+]	1h
vá˔u]\~<Sn6D_
>C򯕧rOߩ0~izp~9؁T2i*pzčgozƺ>  PN
KTLI"N$Uo]xhuhv'ΙuWI)40|27"g}4duϐ밵#`VO	XX#Sl,m&]NVsQ@- ({f
ur&NEX,WU0R&])6:iMヰ:C7Ki
7C}3h
jKg
;1Ҳ-dIIA&NvB
_7w62?~U̎wX<¬iX_äf3UI}z(i{n~uDð6OC}T+U]v<`麚4VQֽ
q2vD%q3|ik{0۷YgL,9\=4H3$8K<t߬-]ˢ/>ٷc'NHli() ?YΚeJvI<ƆUOȩkখ)E[5#G߭v0 hoF̡h:few}hxrQ"`ഡC_
̪NhSfƏ/\4b|8\-E7[ֱ_1y1ejqV۱ 0FU6\B?GjfSI?J͟*Ne;PjRkk.*1XۡO7I18W	h%:+sY	efvegu7C&8)j$;+09Q[jKcA{/
ՠ>F&րV QCvz(3

jh3GhBB)ˡo941w֘]/viӦ!u12d(rB5hf
)#4tIyD̕yszoyҕj{2\]W#[@kʖnZ='z䓏cVSz>ҵ3oG`{Wo缛4
d%'y`eGaX13j#+y֭яFk9"@IVgݤۙ O{&cM8ژ'pUxzw۱51eS}oiw#<LXT˭@H(ѳíw7¯t7P3z'O㫫`V=24Q+">Ini"2B.UhIy޴aoсeM_1OsBeXEwziwcZ@ rlFl%~T<
>vGA t"$_Eg&S]/l5
K[{To?&tQ`1%]B&/?#kHh /TʧyL?/`]q@Uzx?ԖW L @Gc	 }n?݅~>`Er_^{-ſMU
K2m{Tx0.FYe!n2F6Oshj(.L9.'xU$w|%wzVhilVCV	@&Ġ1٫/di78O<L$ѭxd`QM&eWi;sE4HYc0t|5@`)-B?@	WeXHE*lVrsoj sz}C<EeՆ?.(9ñ)ь:DU͙-dȻ>4Izcct ʮb
	[%%f賉Mdag.:s&k6^:R{!9&)S-.$YR=r-L&fiҬavUÉ 0e.vﮟzIUj
|X7{2$(UZ5Y];=|Sb:"3
|5(A_k{}>.H)bҦ,_Jڀi24鮻7MRy^}X~^fPm]tZkC$>'hNT-- N /RzL[?08Yk=@Ͻm9a3h^5Fs6۟])ܲżǣ%]R|[:J6Yc58u߀ѕtSR?{7Z_qnn/33wAj,jgz̆Xҳ|1W=;_f9%ySu<oYCӪT/,Pry46XڎUr=5^j;"琊YCs+ߏRpAql^>d)jIDy֦͘jOcJs<V3*2,ˣ"QYwܕEqy^~WxN<<[ETa4=
g4t&s7'HUҋyUϮ\[Iܟ^͖m٘`Y(	y W9j
X+5O	^	ˣ{듡󶕾ma{>뼴gx\tkU;}QX{?ТDZ
@fECȩco?y/V-|&ډtz4["{TSPϺǉToT?_& ĳiˊͱP/]L]XvՂV?BmJD e|
Mes+ྯꀑ;Bɜ锜L S@꘍~>0uBmç^Kr(;VMQ6kMސx%+*~n9aPuӂ6AZս9jk;P< <BIx(eOVO4bxV=ST\d}hdC=[%Q|b]US:HnJ ::xZ?c(SO/	3
A? w3#y(l`4N,˸fM$օYR w	ď\5#'-xCd}@_Zd%C:jQ2#KCOfă$2 ̙Φ\CblX,|	ٳɒ{ Q'tmQ~G]AV;6w{Auz`'#(^ ûߟM~&RuH=5]w#yeyQXcfQNvN|YcQ|ݭIN[A?{
'֫y
KJm|<Ͷ584诿8h.46_ٖ5 #6gW7q͠PWQ$60RU*|1%u_ J^suf*{<):̾W.`-kVhrxq6R/fr,4ǉN
H(3+d`{^8(Ƥ*	
;crD${
0oIh[N]@M:"jxkT[lQ̀s[M~C5gD'S>S[vg!Q!ñK3j?, ]Ǭyδ=kb2)n
ό[,7Wy14ʠ-9:%Y-Qw0T#5͓8~Jג#Ӡ#[c% 8l Jz}*?ӿFδ?Cms2>|5%A`I\ǌ;zxE^,üe33FBE˛dF-G2ja=QC
h;1K1KPM4m}Oݶv&իJ@hD?'Pra
Ͷ|FVS'$VmzMM4Vk8cĄeځT0.`cc4Pi><fMv^S9^hkktT
qاhR,>jls8`um[vv?D0a;'e<ӄ޵r0C_#	~V3dB2|5dٖ4*!b<oSi-SMT).Oo.
u3
]R%7Aژd'NVpl˼ǤZXsLpsS2f>3h$)MgXt0 !ԍ MG9m&Ր%ziіˍd{L*eEab0v4)lExd?XHQqŊrdw5\SE[H?ӃU͉G&AG<xOgv%EU=IA%3{YN]kJ]]Y5*nI4p,7<k\gw'j`8*\puPy{J:o0=ޮ|ym
GpxK??mOz{3jH-dtkn\ŇQOt	Q\a<u):avf>J`]OVeiZ2#a4,Щ':9Z]ynfҕЄ =8`a{%K9Nx#`9@+fg
bߨ	yta|ɬ۸
6hFkylDJh.dm4WN:_[Y2y e>?cQ.{K# 
n555 Ӏs+mVOSp<w',x}pcV鴀URηOtÚmpQQ_+fxxfy-_]^'xF;y~ST83gxp05z_ ^
]38FqinI-@*4Ť(弔2ȘgD|A>)&El6R,N7_I|dVK0գXQ+cYYc<HIAJޛ2jJҵz.kǫ|<'`htBiߝU{mn܎{de<z$ߜ V/)#=A=}q]9p1L*m:;#Շܕ*W71|P>(zpڨ@VƉgM;xXP4qq5lfeDn(
J5
mVg(P>Gp[VunZ?jf?R0ADGP
|ad"N@us5cNB|߿j*	_, *#u1$G9Qtd$e]*cq:"y?y;H(Hǥ`T'֌jvU&}C61pR ƷO}<`#$h`޷+0@#]^$[f3Ϲ
n@p8jQ^^?o?kV2mb:;=zY.o$X~D*<4iktAع2MC&!|HMM5aԚbV`ͼ93T6/APrYcڻ
>/:黐FjH&<@Vk!R	uX.'
7ɛ8ٯea3V3]?E̵Cs=@&5 1R?<-*`(AwL"m@ÝIVwyx4/,:d!p`[a3c3:2Q5biJ-|>j1F7UlP+G@p4@-sAbnn+G@#I x2~~ď?;h'0g{ū~}tn5
Ԡ`.J[qi_ }'P7)uKf(u,sASA7F
_gtvP
qS-?zs ׌OZqw	Ԗ,
@IH?*U_IYvCѦÀ=nGx)#alhU<yk*$&FN똢# %Niq4a3ݎK	 [- a+)\ҕgB"tv<^ٲdMAf*J
$cAAz
B5nDUm[58;[5HbozI1ۣ
ˁOASSBPx@~BZѬ,-0]2 ӻM'ߙz]:f]YJjSY䪤`N_Gs<>:Rx6@Ro Gw
ţ_csy<mPa?`xjzM:
E8BVQ0\7c=YE
y;-](-	{jȸ,b`㄁=3MɊ^z!ORB:J5jE--J}<4qIh:e)`
QF6y@<VCdn\S#$~cf1S
plڢNiN{ϋdA㢨n8rjx<N\X
@d	=Da7؉͜{V%-tWw[M
i+м)Aqֻ+j0H1V~y+d<}-ӚcennSOY0|jGW]=o]\_@:>/`'Yskp^}6!ת;!``bFz}`` 'Y%~)m|Wi
}/]MDN+)p`7^~lp#2}	&R'ufXGݜ|
ZPkhpri wь6n{=ɼ؎֚ ,Bo:}]L 9}Vw.K`s]4ҹ'eT)m%5u|eIy`UI3u,Pp_EzE
D(]No(G Qgi. \>N,;N֢	.{~xeCy0LB~'nsj^2ә]K::=N3CM~lwC^' `eۣx~6&*`urW+[CT;00i^9y~^In>NG
yC:'اjsנ<C A(gn/#0ۙ*X4eqMM^֫eg橱=jzS`YWD"y3MiksNd!s1M=+f(8 @Yxc}MzۀaǤy"Y/w;UJo
˱`zT68Xd1-L	TwH
M!G=IԂ7og_?o(
Ob	 wY5xiwj}NW#gVdGJn`J)c,VqtVjBV̊i-d?|KSW_ }Tc:ym=(PEy
=eK"8ԏG+"s꜀З԰Ѡ~+cBtaV9_KEG?ٞ<}plє	`
W 絲fFhzUG*o2Ҡ(ZD5/fHHyǛSQ#Xp8I(`P|l/aPT@waR2aME_A"/|>GJGLEfP_JM>vqѹjD`ȤM4# ؋ A=cw&L:O33k@_Cj>^d$0ESۋIxY
\?IozO}G{|iE/8eh)/`8IShEެݠV
0d_0iSY`۩9-dͪZ҆ƥJ@=&2dcgl88[6)_a) x]ik8CD@Q+N3n@=>رw'2+mQR<f<ڒ^3-}^ARk[lhJA!n)mU}wo'sk?!,$:~[oM2խSSJ<*ZD{?AվAԽ`?Кpnv|{,&[^m'lB]G78O84^%kK.i<+OATr@ʟ.6Uퟦz
R6xBk'K5@ү>Zǯ  %H-cޔc:d?ƥG49ΚrQY'mʦlm5dyM2hzmd~ѓkf&),VOԹfͽ7fAkm2n)~=dPi;t>{um|Ur˸hWV沷N1[5a>:6EE1LKs/]:Q1 b~->/Ͱq,<
!	ZCZb>xd7<M5=
pc|
{,
BPv/ΖyU]N<	taj =+?MB?}?Ztbi^FL,z9
~뒡w([Su&zrk}G듉s<lYp<J1e*$5N<Ҝ:Cy򉖲Tߵ(HLhr8
9
|+F5pO_yoqO
<.L >7 Ŀ痂ʒ4t$;Ѓe(ݠ0)`LJmz*|R8`?pڷ~kZ,8^`J:5ǳے?ힺy̆`p)A+fuozP0Vo5Y^dF2(I>jz׫nn68~3:N}sSҸA_9?X7u3#l!/Q:٠)ڜK]gqit*O93]iP7N@vx
3liNtMy
G[FoݟUw1"]Hceu.PHWD%ME1ե}Yx_?+r9~dx3e
jH:g䡹$2FߺDDNrR;2ޝڏWޟzPh*@u̧Uب/WA
}
w 6tW j\gSUckNG`nm87%P(x$#|1ct7U:c}7|Tm# zi<lΔ۳f#\~t~Q;w^r**0#m9~8Kk?6D*KT҃&=~3:g2|MdOFfh>@ǥKO37M_TzjXzOԐx3P'ZdyPYR2gַ7Oa<95J{cx;+041:UnڮɈ_]ˣ櫻z|tڜ}9i,A̞jz(vлpyiAZi0[U8	z+ί4T_~T[7/|5ٚ,*]c~}5.Jl&#LN:~4sTz:&M>K+ PY{
IvЋD Ies_\'$C(rty`̻1AԤo>7T5ގ>j7oU9EJm:ߘR鮦Q@>zӄE|'-;γt؞Ss7tN9l6r@V
ºg0xNwg11UHp?\\9<aNIzU'@yaM1o_~^1' ,w^u VJSARq
/׷i״VoOg_$f;~=C;+nQjEdT!pl&:^1/4jv l!W衚
eK:s3xKN,B*^4D/O}M jm47wE:.SF_-؋ZUu^T76!z{k `S ߏ[ME n;ңOȤR~7[>_ވ^ɜh-0'TNt
z K}AjpbZKT&9me3=g^{aϏ@Q{86/ƭ Bf S5bryrUU7?{.;cZz$ڣ0єХ>
T>wFitj8v6S}+}eD4rLxn}BmQܥnI7h<cw;w>X:x
׮w+i#i\&)EW%V5ЙW#PdOQ;
ZLpf},;'uy5f+pmnPψu}54٬v||
a8y7Qѡ}zv׉siAX'"4U-?!K8	m	T~R<aw<LL:>~
ݎ	UW:8lMa:|(ЫAPȱiw4);8uC[B |2^y?dW^m'8=o.M5:
|I A_Ё7<)>=+qeˢ+2
]̇fǫ*DekuRA`LJcŕ}W;Ao\&)KUq֒6fҽ$(0S)򹾯&x
j3Y<O	1[?s3gDQUlJr4W~x9qx*Pxj0VGdH|^UPO}Xb{@7zHϪY35hSuW~Kcp;7NS9tNM8sq(+J}Ӓ  >BG%Tjv^c;ߣKY9z:p@[	͓kTktóX<45cy>~hS%("]KE]ټGwh|<
RP`6 ^従7Z2+h<QW81sSLU^6}Ajr=%;pTc^]<SQsbҟ*Aɐ;+C0iQg
"4A̮u4v\,MkQw\]O)^z:6@,([G-fKDHYq$QrYG0pxELP=Pz4ǝ	R$=  HN_bpBj7I\GqX 딣4 q-5y]@b'UG)[12MЋ&9^L!P6{i|5*yk- \bg 9@Zw95*f)gg1ZXlulz?{	F
hѶ##S	^UHFo_.^'QI3JQsKn!Vefu"EOAx{;#w)?^7%5CqUn 5YH}N10wGu~<hf/
[5Wu˾[P}74"zx2xh^dk),Ô?^>^S`%jW;'#tݏ'AV  |n%Q1ap~#9g"tl|tuD|pC&W:@=l]J
1R<l4g d{.tFԺs{\TZՁÙzX[2N8ͰfEmO^`<81(){ӊ7*"0{XK~o/ja
sԔb^VЭ"S710|
-t/ۥo,ځ=G#)1
ۯL=́BJu7"M
\"7 
[s2\T+{F<e#֔VnS%/<*z/3vغRMMf^:IsLA^燁,x{X%|&R'ܿ/??,Ҫ=n16,.={FO+Qy,'.rA0GQey|BX-	PL;-у|<'A۱a58,5.ꘐ甿wuk&x&^l_6lP>ZOq&܈~p¡Hf>9pA H7>BS,t5WLI2iD@{!E&	}(J:
y>$0tR)ֲ/׶90/QA8#Y̛U"RML,w Ɋ|G4#}YLl5fЄy8*b^h'D=@Ptf Tl=kRKߔ޺.J}P۩M 
ǰ
YQ;y4yԊF5w\'h!Ӎ$:c4k6ZKT:Yh |i_ > ~{vA(O~=)D}O
ς3qx:P@^ <'43O׉lJ&}TAal
#?jB+L֞[4e]f_ lY'wB NO>:ܶK|kWsBv s^ˆ=<X.ڸp_%1M%<r=1YDx nA(}鴩!O|kN|n}4@^&(nӋ>w6#TN<EhPlͷz1Az`F-mz^[8g(@l0Nx<g.!sےA q{I73̜ʌ/f\:ms])n.85(xw~1Ըw_Nj7ө9έa
qY4uW1~٬ر
#CyoT	^Swի
2Y
*lϾ0z83y|)J%TQY^8+l21h/[=x$Mc^pN:]fv+Y$	 x%*,X|9focKC fa*fY@5Z# YAZՓ2[~%ԯn1XDZQ%]
I8ICY@΀5M*DGY e2%5bbG}V; >G	3AF拻w3X~ѝ|8q<ǍQe(MnwQ%7qyuƥ3q#_J_^
BҊfQ9_9V?ڡ
=ٜٔPr2+W1W<&np.#
rk
2.n?J7y(8r/_V3hy&ddjd7@]k77d.C	:`W1]}*xo 't(-堾zb8Gt4qiSuD*W~RAw\R׿P?:AjooZ#GɆ0BMRDz_	vJi}z@qU05׉FUZ
VN}ʱc<c0g8Gz%gQH^Je+|ˢ/<@[DX:C޿^!$
r_}zbCė]Lv	8Mheæ:ҷ'9I/Evs;;WYyj:o,65W領2ZwSfnE VV7v]cKI.7JQ<~h _D53Y$U[|ۿH j1]Dڞڢ:l9dnn눿Rp98L<
9ԣ3axjqL
_oX1"I"&u*<*T& 0g2X<U	pWQdWU{P򥢅2Zk^Vm*s=)٨& 5@\a#F־y<n.+֥xʶ}d"l|ffG;@beˮW
P~<_SI
3$QJg	jMCy
/윬5;SI.6<1;	]?*k7Ha7<-xO{]<^+Em=MҼ;:%m 4>%W3:nF2^Z=Uu
_ƈĞtgW}6+py 6Ƕ:\4_?g%h`U=sbԸS$S[lϭw9kܡmL0^K	\*F:`| -h1S.{5)	mp)@:q1[ ÛOt1OvUx@aE誁V+q8 x|\lSv[iB(h;7O (trBㅽr8`(ՎQaD2qKG%2B6X%HizY}=KbXãtO7v-u _0Elov}wnOU]XX.@ܦ*ПT3QOy*I||-*5/7}) AF챎I"B	4S9@1JIn+P^[|p!y{
T+/!'ٛR^'GU${UXj/]Ic{^w{|[]Z?*_%|mb $4'V5Gjs4S4Zj8ϣ!)L@zxX%^];t++yX$mۉbΖڈsx[Qbr\t'fh}jJArw.vۏV*,!BR#Y<J^fWPw	WS(paj{4|҆r5wfww@ָB!5#Ee:(\Iv1KZ0]2NwQj:=`oD*{m3#)U1TS\PR\`8Rec̉!Lx]
[nx^iqVᜣЦ4^ʵ(%RJ[j r_FU$(MxTZugwNE;(i@z5t&s!W\*}KQ=Z(x"MM1cF
~\Iq~A*|.W{u/7u,V{\\+6ԺۢJWnൠy nk$u\5WRt	x%ooEpk}>RE4&^̚^
oA
g,8cXܝbhUBӜjM@tm/zu^~Qu,\
o^:)	3-w~(.	6~s*'mHگ6* rWLoRyeS7.{qT rdBrUGSW@PӓT]O Z'tR1.)
:,B1	 yN_R/xU]3@CO]ZQ+@EpHu{މqMʗ
8~DO6:6Ur6*'2
Z:w<=$a׹ҭW72I5׫xk2hM+}ZBI/gbQ*L\n]<Opb!-'3dd>s?<` YJZ>]@ L݋9˶·];^N»GYUu~λjժd^U'dľk8-NW'EЀK45H5R[Z=W%b;sEW> ʪ:Exl"O'&o,a# O3Sisw@$v
teBۅA	UȾd]^gV>ՎV=gy:|{Hf9r4\ф36o7@2^\llo*%q1[i<o LDVf
p'|؋Q'1{0`qSuE/SeQN%t!vkfpkҵJkEmMpN rix+Q9ݱ}"_0QT(*wZEvCUxr[	B뉐	}ea3gƹ>o:Cz~.9O-kcdHӝ;"4եR,G忇CwNgYigBNоWϹ~\`:P@oROpV8b
qsqh0M1oq-:'U/z8w.%6wF:׵7M^{N/i7b^Yx]h7'ܲKR,s2 }2@-AIun}}mWWVE?d=:wy蚎ѓzNN^ˍ+$ע
/&AEKmβd|* dtl0|^l	N
v,q
?+gc|[ၟ..fu4ƾ>+uхcYu2JDëXx;\
98H<QٺC ivYtJvUuiTȗ8ϯΉ
0yEs]̏w
TOh3cKT6/."Srtg(43Ti؇ w:*'$ԔrS"eǠ{ND}1ʗR z\gaY,S:(PE'/䲽r'	
Fm#5Am{L.Ϻ%dӘ5
eMd-I/C SU.tc]
 ߺ$l'Wc4ZQ.뭷|ē`
=F	tVLCt7q٥z;1][_P/.竞fIi>V	Zf0Z-D1J^ ,
Ym[d/nd&;Dxq!q.PoeM2dQ%[]K-B׭n݃HPK72QkWL"í,TMB{~㧉XzpPU
0=vMH>e 9U'5X\Ӫ熽Cen)}Mn3> 7a#kݵTg^kN9/yI	%Fҳ>]S,֯vy<;[\d8.ߐle2A%y kEGI
ޕ_yi2/ΨE/WRqs|NiX
si7^ЩUB>3'滷mPK4+Sm]@@f.ꉻKYB=*a#g_5Q!p"r8	{GG$mV<s:bo.AW&׫cRpD }{Mvb^7SjAC+Z՛,Wzeͥ<u>Մ()	ޅhxd$ڨE+JZtg{D;l_{ǆ7Ty2IR\Tf"_ڻ<1)k!"UK~v ˅چ9 ?!Ϫ'm2.SA
	%QG['WKkx3ntִ
S%k\pb!2bxk[pd3,9~
Zo%IsVM?$"lJ~dH&tz.+@..k]Ӭ3e75-5:WfAEc\6'~ K!+jSҕ #p,U86xN*yo;a6~HRfԨ{$T}/ %nwQC-P\eLшA׶Nڋ8˝\y GLrh^Qg/uM%_DEXv15::X2 vnQ.ۺi8WougQwY5) BfGDe#y#XZamq[gf}gh,Y6-Fnd$M@$.sV&ke ` {{[(C-fG	`q^*꛹ض:Y}#U.*L8C$p[
۳*l>BW
,:
 ʪeΟPfiLapW ~8CH|?]OLXM!Ukqv@PGAP)9/Uٓ3Y/s5NOϗ0V4[զΧ	NW2~m]"!ֺKb%˿I(=yx1z	~.F.
dukU]E:6)=AN9򹯥׿0/7I ~]y^'8KZp7.&	l5r'M֣o.(te'ǲaDoNIt_Uد=jp<21o$#d8|xw)uS%궞
vI^	b́K^Z߼cNDz*z ϑKjLOKԝ[s8s4e$ʸ|	Jg%́^eM
~[0"+7[s803N> wˊAqB
'@<J~bT$v
\mf%3
^me@Uﺥv%;MS#ۑfsOJJDYТQJ?ƼJH>̊P E:VBPHn|ۭvNĻ}Hwomoe|N h
w'p8){szK7fkAط$'FHD^ *ognzlVo;Mlr77R_ɪc̢؆v=}19Gak&Lr/vC.WCQi滉^N>N*b !#XB{
U\QE;FrW
톺mH=<f5ckQyZ%dզY_KNMAݞj@ȍUUrBpk
ɦ@<}Hٮ"Q܈t2J /_xVyT=fX3X_ӂ t#hZ8;J
ڮZ.΀xV %:#'4c@urq\1\oLg . )1%qY'yʿ\`<DngudpcNx.:tTu{i5lE3^xjSkdݰ#-,񉄒6}*%.z4b?m`v 6H
\"1Xy~ZX!<6nm즈fsu"?O3;p7<땹I9+<s*˪'IQC\P$RuӻVIልUƙPNJP.b=C$-vB;r9z)^ފhEǶtņZ0lˤY;W$nN$,8F$$dD;@2VW`܈DOu,'hQܨ)Nq.h k^8=He;-A5PVTar5sᇫl
U<Kzz\Ar,f1I_Xө ] )!huT:$-ݵ!\.zG+T%H|!*ՕGߥY_!ɟU
2O1QT=8&u;:NLOudQ[ GW>ϋ{ZUC*x6;[+O=+?DרP`X@\Ux?G/̦$(q<~˻,#LZ|:?n
MvDCW3	j´RqhI*>QX>TNFމzg	ЖgȦ@[qy4ΪM$o5ܹ	9kQN{<5~Z0ЍKh[#z9	y,t
mNګ	s;8!sAShSW4YrYQAE1<oET;ҁ˼C0]==;q̮GhVmL.Mn`fne7,`b>ѭuz
	+[\(6`b_e]
-^D(߿Qg*\Q>rlaBn}({e5MnAcx֌hWzQeM<mp=D1?QxC0MM]hCU/PL\A8=e!~waRXxYJv`Oi￺C#ij>!'
CxZRAV9~<F`1M;:hӃ^G,띞#©ů{;x;:r`L"*`+Ԣye@iPpVUxrA<Tϲ+(ЉוYGx&#ԁ[99{}<
8
{{Z޳Nkˁlz}\B;&TE2t}(<E_sWmA6wĿ8B7xQW֦|pQ8̕C~ş$]E7+;<
FRDJНǍP^d+ͺbXz݉{2ȎoDF6W[8%vKf^wP~*.[wLQׅ0lZs
Jn23C<T"⼓uqqC}z\VyQd#7%h
rQዹk=UǺL#QN2d%Gl A/aCY@am7_
EUf90>D#i8Iam{j_	.ZHDW=۱ץ[!dmS^y)wF	r<)k	Ux Nb?($%ʹiGMѦAW (
̮S@?搉H|g*owf_9N~=hى6^NŒc f^^#xCVGOD`S2>$9#,?Xn]T;á%_bkIeɉnH难nWmM<+:HP0<& ܻ^rPR)F+* <[UڰD{_'ƫP"+&6<4PPc@g~S̼TV/ųNs %|~d.RPR 9pjTk|
R$g Cmsm3a%<^eo~#접{J$\VaGUS&F=9vܨGy[N|[Ӧ6FϾq-븬hiY6Lw[aKm;lc6@psHOٝ1g:kݙ]>gH1uFSl`.ysJDXyÚ,E0P>t&6vu=+Bw<_YX~cgMĻC|0+b)޿ĪZrj(gUs-ӵdݣppBalWmɄԴ":MEgٯ=fx7<R۞'|
}rD$pO8\ wϐ"y/pOoVeZkJNq`գP9c|5
K_&K^ʡ2rҭLAH@
55eHP~j(F0[jݠ$aTkIO/l&4v2>B8pNLsxz8zk])}+ԡ,7AZHL Cc^3F?4w
\c	&zsZ}n
۵ރnV\tގ{w*n$%TZV[RSS`7.KKx'ɗpIX
.ԏNRhIvrp_ɑ	ι߉rPQ	CsqKGDaL/jO]:Y7[O?DqQI]b`SYI~or~iYmQhg/% A;mP]#jui5GG"VI60U4u4B!3eKB[R
Ԭ)
Fʶ{Z dlxNF
Wly͑O S^N'@y>6=Cԏ}$7hh*I;hGp%_;N5&-շ-+Sʝ
ۮ֏C6;^pΩx$p}Nwŷ6'Ld& C_<
~DUP/bDr )k+$ [Y7YI><=VrNO9W]3"N+wd$p׷:HXs*DeS^RApC%oh52[[vj L-mD+y jrι9ri\! =3Ƞe3-z)>[Ǹ_7.*YuI|?v;ߣGyAĪg̳;Z+gY!rS{˞wR{r,A>OY^gTԤi-vRx z:R^KM|um`ɁI{܎sBf)dKU@g̡nתA-/1ֱT\3'G&@pRҴn^~y1fHKiXwP6T^Nʞw#E޾^#OGXIyCRqǝLIvPNlrwܙg\FP>UvWHgLolB)Ѭ BXhO?O$Qը~7x;2ɉ8ech10gdώّoUئnN[n7jKT
۝#?̕].\&'%c<ơpf-g&}xw'ݺT~ pc$\F[l]:"4YܿE<gQ"WYfQT 4(-Re],9%& u`}X:I[j
jF~*M3bT^ l9A22l
̉XtU~NÒ@l~\v'C=o~(1SV'y>S58nv5S7F.ZjoUu$t,>; \_=^MmS:mæ;;
l-ڳYRXG!&65%Ҙ[Z@]u@޳VñW4Zi%:'D60h)qCրzls֦1ȷh'.:a<qw< 2_IQiL\.CeyFeOjJg&!9?: _]$1N-hw
tַb@fXWH.Eߠ^gN潜Xثނ~35A/I@;Zh`Xeqm<u~PSp{:##SЛc]GyB`kyoUN5^ؚ	i|@('usuN{[Qp'p Ćچ҇}9k\3WeCAY
uq50"l^T$ 1|[I9?ƷU>!&B\ )U-%xޝ(i9D
!ʙjVs[`U'|J@:rvo|S\dsxHHkXph/-!%[k9Wt]lC._A[)<'YٴG]
K}+UI`ӑJʜ촐tL>TRHy)?Γ.Ǐ@G+)+`
\uOmp/}r}Fi9S}Xx5" uYSu<:ުXl 4]U(-?n1r':7=&$>џa`O"wUVѶdZ vl:_h"kSKsu<Qxd
7?}6CQEy_ZBPh}$s3/TC ABˑQ(Uf&KӉ{Eb>+52HσG/GwH|w/jKl/m.|+
aˉ%e:_0ۧT!K+cA:A֢xqorUS%ǥbQ8NCR
Iz@T $/;=dull#WmҥEC&ོU<AI=r՚w<,ko<g1!K>Ce\`w4٭[&LZrN>7g;/05Zi ڶ\"UR2R܎NhUr]6\rLǋytɑCO=r8gwo-Wmbg蜜Lo*5snNR~Gttmigh3r5X" ,e6[U p޺x~F2pj,Gul
ںo92$?arsV. k8 Qn9)䯭/nڿSEJe]asCsFf;	<mVv`n):ṯ8zæ`bfXͮԬ$Yggw >upȂŞ_}LJVBn:h"]hM0xu.7!ݸBjXN!!ΚQźyFY%b8z%%̒܆BhhL3-GͰ+mJ"r.*_㔽+S2xӡ4vSTDט>E@(>~Xm l×G)EIy*?ϒlvyKP@Ļuu6ԞQ-\=1VvPudSyxPmF;.z,M=N&G*p7ܘwk
m}hPSHNdӻ;^VД|*9J%}=[+`b7T|bP_[DNIAg
Ixt*Si
qKQ5\6@GiQ ITxfSB1ΰ{ǉP\sw
rxMJ˺*t%"l
Gą'5Ubĥk<g'A鶸N@+J*ŏ\s(k&,q71سtE9j{qrϹ5c'l+u9Jg w0u,:怾+IAbUCnTON:p4YQZI'qfP*g1~1n%ק'$(Tڎi4zs$vSHk$tQ bsD ).#InwP *&jr(O:{ߌ\Yn_eNl s'&\া#p1__ax؞3XZ䪿*>6w__Pj{蟨hĶZ;Q䎌kS]fAÑ bGjCLk>iypRW)+̓OB~Ȟ*m֊-C9r625\ɽ
dGaҴ䖞\Kxj]J^v(㿚RP}m~u2BjBXMѸ4Ω %!r*udOR=
SRUxiٸF
_팊9[xidӨ#gWWvK@ gW=dpx:&FJWs/ٜ
 IB}=eIр,Fm:6h5?WPJ:B05\\<$Gl傲+=P̝WӚ+j QpU'	9/9Q,r6A
#%t#G*aum±
ZRM7[),AVP![MLj.59M:d#C5,2b=.q~*/~[Sa۾#̮LdIvNdx䘋GƇ%JU?HOet:tL8o5J{=Rm0H3oT'e aiDp4mq.AqͶr}!*~|A,Ҽ;8ĖJ$JGgmav aFo/I7x9tPm'Ҿr*hyl'Tخ83pXeM4Co V4jJu\ޒ#ؚ+mT]C|.ŀ׺Y;9*RuŨ*nVDΘĆotsw'T`#r(lB2>.KF{eUz!I]^WGߣ 05QU	|	}\Q&J,ٯzqh\}OC:hX%Tj\'gLQtY՞4b T	J<'Q$m֬eD&M xY9./kR_qB}zŸ"
O
"Y4'.؊f\.O&y)ntvǘ O>Wv숚ƩkTUԧՀ2VIF.jp14kM7!!7U%ɷ7|:@Z?(^!<С'~~| e"aʙMR{<+$%XXL<綑`>f>gXq_x|Zih!S.ST0Ǝ*f$2444W~$'
YR?6o$XQVգk	ިn$&:ٝ2;%KxUƳD<g/6Uz˥tഋK yjqcPU֘>oNΗ>?J.ΐ|=ˁT]-kΛ8Ĺ7xݳ^Mt7Aƙ#BTA*	sov@Oډtuer]7o7Y%aUry*Sx]baCA^[f/;op8sڧ/`f%"[:=3Ns#yUҊ0mƃX>Ϻ
w~][ V=dHNUח5;U_ѓL
x:w\NÀkNrKDh *
'FK[(0]-_7;ݽSBXl`:Н;, 'vb0у/੻Y8AyEdE,GW jQOWX\^W	czIF`]0PVܑPB&ed>-M{oelC~DYZE;DBu!5ވI~-+y&	-8t>
Q	mͦsoPiիpAB
 vp	ٷZC+o;W<W"';0rrT 欿>-G
iQsqb#INA\ #?ݟz:(Ȫ6GoQ<@o`a^)OrZ4y;ʍjQ:sBq[Wb{f&܎sl}KriIb=c^q{4>gW :nGR*UѶƇF0*fjzW?C	cni<Ҁ5JiWXq,S]?εp`E˃<tiK<&c+w'LWXQ6p&z\i%!x5'?u	*8
Z
'Y 4o˃㳮]>2N.MD6,G7S'0^
뱫r󭛳7JL
/2x[4?]3ѳ*XelI#Asަg@9:Hao众pdI^A6ym+Zp[xC37lrގy/6P[LUP
[!iR7nE9%pa푉bz]#QF&	xNhwھ-wF\˅cWg9R
-֕3N-;Esu{9hAkn [
,˹r}w3״
S^UV+c?	@Qu4 >ܯEUPٷw9A|TGQ~엓djϴNs\~ho~L#/g/ZS,oj겸.pl^i"ݛV=6pO:Fq=̶*O	8uƃe27T&F"
w鼫og齢Ld{ rRtwYauʙ|iycTkjF;'zA"l1?ߌkǓp֓"4H}q&ٖ*.T
ܨh}=~{\p>+!TyX4*9!>qu\8yqsLYrS |ʇ}#Ij\R9*.ϓVLHN^~^C@noV֝jtAw'NM,
bOgwVlG7I	UNv)8DJj,vℭ΁Vε)9gRZx箅\ys|۵Zoqzs͡0>KnuК|Ϙ!8%_p;!YMp[:	n:VxFgL0]b	B?o,'
*kT
XJ}֖|ű8m m(i<*InptIwHq?OxPr,AfܼpqMT%/.9R{F0Yy7t6Ot+!@)T^@R6?50 UJ<1(gQZm+iq*9>*<\ji8Ҫ׋nx6IϺNX5ms+''8]VIM9K%b7<0P bF}VvGj^o {!G߼ &Rhz(:<NV/|>H zwU [+75ۯBNC
V]:aD)xBWe;]
a{B,-Av ]uTsPv|K
uY"ғx+8?GIđ\
%OI}1Ӓ+\>Nթ,ۈz-RkIϋ2#4XiH %CR93~JxjmR>ogԑ[WV=xtn%k|OGN<lNK/Wo<Z]7FtݑݼI'Ê=(&i,PG)a	';Ͱx|sX:8N9wC= "4ؚQ_IKpЪAlһ
	m^<JIӠщKA7H<W39%YU;yb8۠iИWq*ȭL QNrG4ܺ%ic
_ί1_8:Ch]uMx: 7zqJ34^TIٍxwqٍw}}{CV2,_r'Vi`OQ3^v㔺ӾOOiGG>ȕz-߈nBFjIv}Q,*T'և7gS|P-II>q#\ȐBZFw?Zh(N֪GCI>YI͹g&xQ	lVhʅ6Mp_%ox9Z}ZZ4冭Bu EQ:vFO؜(fG  HðsMsdh+{q/5W\Yz
M:^DAC3C7:uob%@T(%7QPVH}&2o &|EyE]wЙ*4q*nY*dgnAEP +'$ئ'%;N#ou|"OToTBgPxlĲuהPsM:ϯƫRnDMb;Ssϒ$4q{yVR:v<! iTƿ=iK~{p#i:auݎ[#ߜ *pyeQJ骊NwS _y.G.e@ 6bbK^1a!v<?L[v\Dc.Pb	R-՞(j~P2ҰYySN~V	j[ ?vWXg5``[-VPE+:跶54*CR?.笀Obh^kCЏgY4%Їѽͮ7ʳ]̋VIF*D\H^=F*"V:hUآQ%ږKWlf i)1'$I:*ܛ-N<REcr2J+uHƧ'+A`rN[uGy>TǺU'k9G<T}`Q2͏
cQek8 \X^P 
mGQΒt 0S|\
.\Y
38؟cRB>#4ER1vҼԻRh;ױYB-|r$GC"(L@9R-*L`)xo1k4uJ8!\Hw/sq8؀5aLtvS;7z"p\*#֣AY]lv\VHUb6VF\{³9DNӏIZH%. 5!P65$}GQ<brjp+Q,g:w/'9ŒZS< -ת<Ȑ@ZΒF<K$n/W_}㜺Yo%-V o딥+"|vUzOa`dс Vɪ,@rAT ._/rB`!'[2 :nqw'=SƱ]j		;64{h`IMLIg5Hi)yWGpuST;9ڏ>J(]8 t~|,5z{j;iyfA>Jk[ى8:CH9A1g|1X.An&U'3\Js& 9Ю._c-:6|C+"hgE0!mmHѷdU!=Ahr*a+}x& F.r Fdd)L-I1Aqq]"͇~ߪWUR`Tr+Sa)@W\AlH(Z7y֑oRpa?Ax_+Cu* b-wNR70LXG	dol0_FLMQb>V_W]վ4'r9V(]A^%$͟Ờe=,ldSHX'U |Bj[ 	nl9Rpj\ 7
plr8ș+~||56u`2ի7I1|IP IUx,d"n8ՔZzv CAԈ-iU+U%-ӗ)|4
b5ŋ$;
/Ā<	;ѡѡDQ6WjU&1Q9!h^9M]3V`JN*LJRj)TGT{tRtlMO#@+˝fF Y
&.WUc

Nސ쟫t;&gUO^CX<Zm<kVMwv,Z937FQܑ9E1W^̓58xIl<n?*4~=nDqtQ!o\Kr㨖Cøgޢ/׋#ު@3` W)|d4*fI式>s!`:UI/
V79f:+ojWycDBᖩܷ]Z9pq믦Cy.'S~.y<M9	@(FHtfnboގWG<8صIaO:v젃Xʴ&}0=D&. uhn!$N(>Ķ|ԣ|*q;AyUH+OPNaص?|mVr=^AGoNҿFQI{TZgEHmuNRUywd:DV	"BS!YwJ;}klVVٟ
AB6fg{ZquTGDvTB
}]Gl }YT ZYx_*M}:B{dٳ^7(	$ڋcH^CzΥ FQizR%x)[LA]kp-cԋ,;4UkO:77`{*\p[nԁU9{PkV):96S'f[Zo]xU1'"^7h-MK8.n=/W`mxo5&O
/EJ=NPT .U>#s[VΥ6ﬣdQlNs+J>sӪA5
<Jy.Gf֐<7qy#6TM:MQ*ɀ;^J&<wgmF`/fn0OIo,mJ>pt7I7Sԯ @_X#҈٭gAWZƣη\KS<	ʒaz^ nx-kz*(RuS]y~oC7UjxQ[]4YuPm˶gu@cJ0fz9FEGᚬM3t
R	ZG%8uѡ)\
_r	wpR*CnX@r(Se[ދVr3Yɽ}AGG"KWM	1Ƹr>V.g&QЙɸ,o+ZY*>-Dn	4!"$1Q_W@%8{JϭBt'@)~i^0wrK]ԍ`5rJ?HQsw0|Wy7syghIjTs>/CQ@$(`[8ɐB麈{w-; .hVY#~	{% $܊ǉd9eo֪y³1W-_0J//"2=!%>$ K9K'SdfQԋE3?QV%
@7aOLky\DxZ/*Y,xgP*dS;`Q\9 J %׾\t8.aGVPa| EԾUY[ݶ488 ng>yZ#zp{{z}%hMmq^98-8Jn#DT _hzcw&d-VL$^@ﻏǆ@5'Cwg?yS@=y\|?|PK[sO6:
p0T050͉Zmz"ǵ̟,N: t+sI?wu[/Sz;0Ⱦ3С
;oVgZ9Ϫw͆ ʅ*ĝf"y=~:5˒jIN_QΕL(TΊBppJd

4'|nL,3Fn{iҮEK^>j5K'&@o$+4*؀җy;[
~70@4fjHnΨKVڽ=q().iKM__L̥HW\,%tr$l@Rȫfruqc}źV u8J-"XWy^!&sYyjpқlԔ+x|jku醧x7oڞd{dt>T-{)F|RC\%
T$Օ(pa<Gbu=ƣ=xGʱN2%	JoWIZ>8O=+3~eѿh
r|ی+?*=Jw_.qj@>6YZӈPȋU{@{Iq	
2Lg]=BcG%Q#,**GDbN_ޏĬBW%Qu>
VB6!%JOuBx'Dsw]EIS<V]]_-/S
PYSZ]kffVF0_Z]^ FQe[{s]soI{AUsjiؗ'
ԉe9
&6e{Sv$f&U[ȁK~=eS8=D:ԣH&rI#	UP0Ȗ5W2^:^l	՜6۠.g rV*QRIXJ*|PVID튒p"Ƶފcr<[~r^}"bH,ɪ5z*`"yq
R $ uz"?<U AXm
utTm꼎M<IGX`MD/rOׂwє󽝟xv~tz:$畫.A ^UMYrUi5vȻ}6YLzR>z,u*m]d}WfcՂ>'M?w!]/uBA88Ǿ<\ղj w-Vüd7J;_H>8I6QP}y
vtVW^wQ\ȓ&5!WL.J'(8ۦjeeg;GCdoxZ(40@ne_s;͋+{/!7^trZE%10li4wH Z&Umvw:Γ^o-Z-qsR>PmХ33gI?onǣ\o7A7qť%FvtczKd7d9Ø&Q=}*UW&VȚpNMҾ[C:@pQ}t&u3h4PD
,<ΟtD!T?/N,rVf8I
zKZRL(ř!c9^AYNK52w&ldV	<4</g1Q)c( ^|Wy!Խ*AB9O©*_R	KH|n=ARTq ~3*
L>wi%B =ßEm32#h$=
M&4W;uնky=?v9E3\\ғӬ>1hrO ^9|H{
]VV
%RxknG2%GVZW<-r	
zid&~V^Jp"d?kVCRn׽dnu#+v>CUW{G riBw?fI]ΦY,1WpgԱ\*D }޷X垏$0J+G¡"1%GSvY79ܝu izԳG"$uФ횒Ͽ^q,FJ)@ٿ9,qr JdkP:Kn~Vc-0
	ת-ɜ{5p/VQf}?xlUڷ!=*\ji#@щIME8
!q׊`πfVGι'QhC:vfePςhSfڼvJ,[rxY
$!ԠEYnrAg6V
>EycQ
;0 IkM
~EqvL^[4ŨakX AXUctՇ8{v!E͌5c]OcpXZ΂P}Jr^`1Ϭ8!i0W\.{[vނm§dCʠc32	m~dU?xfQUU)D)QT#L$Ǒey!. @H-~2"ILծ'WJ4T^YM}4s.k>kTμ<g	n=,LN':VBw?{B<i(+4.D⁊ʞWd/i|%yvq96+a>*,wd	;#t jvv?zZyi,"D9[D"4x+b4YO㻹4ϯX=MKū8-r_\މӍkW;pH4u8-V$#W/gZ [}V2aiU-}⁄M^?/:tN*ݪXM1W9ܪg3p*!Ě\k2x,v'j}	U$!]>llԚ*DЛZ<HO'c]
隃;Cb[@,&!۷ up{Ve/bLY]ǾoXBl^%ˢ>&Jǒsʝrv	թ_((o Az:H+_v)
IM!UV)i_{hϟVg/::J6Y2
<c([gHRߥwhjͿ(okJ"T3ev>{y9ITD|wv9Sv\}MMIyL.XsoG" 疏b5?E"Nf1FQfMsyVIwS*puQkJb:gPNwK,ɃcB^0lt8tt%+=;gjNq;$7eYwH	iG}E]
W]k
NyCg8
.OSvxUuo@\ѽ(W>QUJ 5G/T:*O#Qؾi~}L<yGh|Ӄdŝ?l~}|-1^=ovk(n
ON*AāSOZ=,;Wgʫa*
q;nMxz;ME>ڔVڛ_] xX\tS#4%H@<Ǚ_矮;ssR7u +pTۨl+Y=Q&UԒ"
*d' ZX.0h]Gk&1hvD%N.c=F&4inf=9^ų] 565T^YJK\!Lĭ
:RKGe.rߓs'+!VIU'<;,1rn?KL$7(X-Be&_{FXUw ÏF-ÎAkƃ:V$!*t,?jK3ui0E$Qe$o8@X7iH^9Xϰ_Zt+O)GՔ~10@L
w/5_nyןy
Rt9c5Z)P|/_97}Ի{kI3]39O xX&M}b~]>j $ozpp|D5ϙ7'+`sV*h XDB<	:}٢^J< +83.m1w_`\|ARqq1;w' |ny
@b_M8ӍPb`$k(vٖFw^rvT+UL*O* (L1}Pt/H%jj6e}		=WcG޽@ǿ\9u}s9]D-mWD4)/ŋ3sH./89Z>1]<U̬ #\9uĽWNJ19Љ>Ys6
RͭԵƽ$VuY7kẃch+47)63 C%mtWw*Arʵ8l)Iq#uhLW]u첻8SO3aˬߨ% !DOWvRvaRU̓X;YV
0hX[qll1LGT`:D@A:xX}jnZA#	^-X+ݡGKnxsdepE6yGV{(uw<|	.j}^Vu6j]yh{KEۂPr/_
Oxz@f4¾7R}Z86,̀x̪)K&:[
,928Ej&s=J?h=&Y"C#ʹ)<NIZa/84:w4#$3g|ߵ9S:΍G 4
Gf?_b;7BAR(R5&ۦpriio9k$xsglvgIۓ 3j	mYumB,}|I1;.Q%.?!ܜU_;qEQq+ HgکҎoSD0Q>;uhwWD#!Z3,a%vs:uqU|è Mr-P}ƹUr'MߎQS8w6}/@
pqzAuKծcphF_EU%cI`:
4?>AY  **ҵ!{Iy`fn8q:}.
(s>t|v_oEJOs>AM&b_|đE,L|8t`C
ve(P91wwq
hU|Ar6k
dd6}xĮ:P_vYp^_tz;1i5=`+ZgtXtL;y#Zj|Z
DңnYoEoZ
rO"8WF4bl?-,:Q$4Y9))_Wt|X_r-y3w\9~RiX`nlyBq(>k<Ht h2<T"CZyz:qtIX]S+o~=O^YQY
>
qA=EE0l`݌љv9ȕg!.Z)uԡy>miǽ0wR]xI.4"nb9m5XVà	;X*/,EfJ}&[9Ըcã]\O~^a*؎{h+ɗ%۠Z0^4 
C*I~(ծ!~Nߙ%WT] ZU`~ `v% B59kMy UNv]K#^N6Yt[?t8odoU&1<g%R_a86K^BxAͪwW6|e'^#$|¿~#i:+rrR71o;	Cd1PzP;KKxx~ӓJ
Xg{SGubqܙ#,UKZ7t]5MU3ݝ	t'ъWt@獂U<vq5]px
ͲE~Zjy?7]:`dmrqI9x6tK^2chR;K
cHGV	 KD)t7L6|~*V}yA*d.#Yy
OamG.mu8^a_it=~uҺf@ܿ	@e[0{GNdQLǋK^U)ml7N#H~<7LUEk`)PN]Zqoϛ)\t׮t)w1>q7Ixuc?r
s>iGh&d2n (r/7?v*-t>Ǭ"~R95 YPFÃ?[kYvSr©`^s;J  zeG^'xK8v@BzmS A#-}:p	6<:9_7HN}c7#^Sיj=uOe'M=vqPSPvggyߣ-!LO>bP)V)GɭҠՉ^E rӚ%7|RՂ3]eKj{TW^uO
bއ}o:8kmWj㲍*'K?	:167|Y!iχz$P4ܒQA*H#(CVS5`uߠ!t;!iRSB.F+R(\GaLBdeey^w4>Gi8'v+n2mRM7;
)^7WUѮw⣮Kr.<y9Wk"G.8@Z,`	~+b%jGL]Z8T7=HyI%B?giTb,g'<I+p/(.,8Ax:3Gʊ~b@hK}$m?b)*:_4gs r)S1Ưԧx89`LxNUmΟMaq^hM#CIL.qU\ymCʉO}EB,d'\.jhu}q~l;dΗdQyQ<F9PC]EjPry-`~3oEaם0xژÖ_8b7ԺZ#).A400Υ-X\ݨt!?VhP7&QSxL[ѐ+M(vOO!(\Pa9c{cjf۫	+3&?C/):'['PṪׁŜ ߖ4;W݂0(
-lCzt#,\}-]3nD
.<A>!,8!;^%2O=5z 9=;W;@`b82o@kƁzS@t<
@b9;2c:yge&e
ש򱹧цBt{y8\)◾No[&b:'4:{3	-H Ҩ|1#`m4	=_]:]ac}=G^hh-8z<;A
LaX#8j& MoJ9u̗@S(hX:[6*>C6v\kybIT{}B4#=1tU$V2Y%9>'l~V!(ׁl q7	92 "K@Jx\G.u>0	g\ϗƞ38k%W	6_1|R3;'=$+yf]p\׻;QG5lC_We"}Jߙ/5(y??Y<
9?k	M4|j-<Er7-gIuBQmA"G"wnc&V
rD'UޮJjPȒ\J\JH Jd
f7uZ"&̓DI]\l!ǅe:<w9V{8 V,ՂK.B9G:{sΈ%_B7(&9BÉ>ݼIN|դtV/Gy_t(Pϣ_?wzQ_
e%Kgy{ׯ$4uEƵ>-ٹ>R5֑b9nn߱DA2t׊ciPL2!'͹U:gRyDt'&M		:wɞO)hɹ1,{9DQ
Nx`
՝:#'	El5ruc҄[s%ÂJ̳0Gnqǥ/ ?Ѡ)]$)OZ(PC!I2)tE$Cfa
Im|b.7#TZg?N<PApFl|/<\i[[/vM>yq.6s~qMtuxZMWY)pr~ऽr~fVZ;
ɂC礠 &ൿKč,#lcNN5GYiNO %5eWH(r.]=حxb+y:|u(T{
Uk&A5- 0DEpsN@[?;SǾl6M=hpAc8naEBiY*Jur.8$:z
hBMB3	wbz:[e,DtP.5k噟  8SHAk(za]ͳ濘f?̟oL;g>:׮mNqk뾘$+JZ#4Ե)h/iGpv#pGJVa)UJ{k
<< +Ҁz(QzčWlĸ~جy.ka|O62e37*.̓O}U~߀]埚?fH'q$sT>VkK&~RPC܍pHMN?0	Kp1憗Rlʵ'KQ$m,0	y:&OObȭoWx/AbOD^5W
["Jr^MSTy/B>o\8{]+ewF:QQ!
48
XGo&]|]V5k:(NgYO-$JȷYY5aJq/7ő`N͚dҫ맠=|$n6_
x9\Y6u+3P>f\¦inVmk& y0@,'ݎςAMz#/*
BrSw[w)(oNd0m;jaßpƧ8vM~[HVGTB,rD:`RഖPn8B8"%g;g̭ S5^*ŧq
rݞ 8nfIˮ|^*$bc.>N="\

jBkGv 3:	[(sD?/#LG%9イ{S?NU' :gن^@l.,]o]xb݀2» r$#C?_=(vW	Z*%SҒQ} UC-i2ܨ.\; 䶻//Hhȉ1к&@HkXہAj*G맮24=V7\0H{ﰭvy7#p^	d=2B-EEw`گ>zsr>(IIْh521x"Js>${q.QGyV`:@Yk	Kwo5
y a񇲻I'㴪|}ps	M)yn֟I $K]tn'.c:5=m!\%|	pv
go45Uҹ\aA	Jz;AbeƁ2;퐉y<Go2hrn qtusQ
?&䒮߬+IC
-UAW5Ӌ*6`Օ\{⎚ϚU#ںXsQ m6;45/zϊ}mȗX>U8G#hb/+;I6)5y&h/
6wU8ˣՈnji|y+VN蒱3F: tGzqoN~;."Be.Tz5m7?BM!:ZTb2\<ΜMx)FCɦ>먚r.K2t=||<}Ujk7d1F(4v8AJ	±V'q69`Ƌ;XLQ4`$z8NU
8Rg]ϩesaqQ&1&gJ"-ԣ_dàjW:  *>Rr9)k<Q3.7z]7 ^U#T*NɽAPAK>
V\ĶWrug=%;GL\:!?>\]'SH4ى]1fuQe>Y_(I+ ƖqsI@a*fmc*SQ4?Iq϶
~2Vs\lRd}zZv9 ` :Ŀ\<Gy,X
<Ͼ	Nm0Hjn`ѱ^h_N'Cwn.)5)sQ'BK<MozJcA
$иv]I?05K32xc%8"揯c܃aןyD
P%n+pHk k*o[{
Eޜd.Fk5WBn]M݋pz΄NbiC@G
Ԋ @RVp,7@>rD_5ww55X/0vĪ]ų~=?$DE0[:oU7$@W6It*XNn	7oѮHr_PSV.	-Opu`u)b͵7jFnQ&uX@wƺ[GӉqa
Qj~(k@5Kg!цJ`)}rsܰdj\!GL/DQֶ3f;{NV컝Tlm8?(roAon>PwwE Cjn
kRMc
SD)UM1KsߏL$6go-9O(-Y4(,a10!rAPoNis $#u3)3xWCxu	9݅KW?HybꊓHd'@\N7\eD4fN_xП5~p+{ֹdq~y
sLu4Nc(a!Q.É~Z;PIYMo6iWP.(p4A$>%B:("uZ\I=-g(umN4JA}*5Gr @!ppA=RD]9aF̖^M="ʙOUHBϚ
<.CŤO`v(9`1^J80*XGT1vx܆~:&;jNԢUk
f0ﷴ	Q]g7u?@xHΗԎ"G^L;c2mk{!]H}U:r=&<OaQQ`pWf
W',VfUANR,v)=[^MhL;0Znk_L`BnWQ4Ͱ3qV[ ߫Vk%; l8nt^ooOG˗[~N	_r Ux	Csmt9{z
'yˑS
hyoP7ʃu$ 	,w>kY:{m035;441#=``QoE8#!=xw8=FJ^}:vGȯ[0tiQ~4K# tź/=N&Գ/bϹumeTTP.LbT݃L˯u0 0C$5[7ջus[p$^bpYe'Zc{s.(DXjA:<:hαגv}QU@'Tw^c+gX9="QJtrϋ3 ~wy]>PeempoYΫF@nрMU}|m9
pcDi ^*M'^ő̉-O%^֛99wsw/ĊM"!@&pB+?S;8/LH^Ew	M]~Zx{@uPM˂ y5v	]iuN7s{逧)D	G6Ro?
q>gwC>rmR0:itevkL*DEbn63O=ݵ/tYkr;GPǊos$;ԟU>Fa!a<~J֬(NjNuP=Jm*mN!zcpzyR
 7ZmQWΡF	Pֺ9y-bD FvSzo
9~XdC<DӱҢ#"A0}kJ6UN>Jw8*m׿D}I|H9Q3:\[)d/o$rx2=!D֏2w"tG&削f_aKYP@v=w~se_8f y fD	+ ';uK\uŦ_B^Rwt6ZB߁-r3]J/0DQQ˶\w?tɄBoNګA0$ \8};g8`e;j
2ks HAŮSuWY:q.u уthcJU
8ہ:
g|b^XTFaiu@&pf|A%R']{"Z|>eC$Eej#/z
YBɡM<1VNJMvvA*Xq!H'֫=v?V:8㩎,.ռ)^Qw']t
;k';@_0Clq#rB;9Yիuتv
R|גmHQO?
]GORk;1u؆ EW򂶱B`Q*JnjSIDKhс[x.'y\#E`HQ4P Xt<V)%BmBRxr4"?tX,VU5Y
?1y~drMqkS<5"4H?{{ٜvYNi5%쉲:f΍CQ8B,Ey1sn`Qw5A>𜜑
;q8&A+w:Oh/:+:_^B[GvC|QЮ%tgNMq(uqn{&X1,l0 VZOW]x㴭qt&7]U;7HۉVWM8*j+y,▯VM?5`7XU#%\pӨ_p*|'8awҖ7PrKjj-lxl8.7/2KsCaTiucK}á.B&lVˈg/O#5朧hUbG)]D;vTT(dwU[s¥6;B&tԋ8z+vv[ Jnc@K&D?EjS
lDGB)
,b,wDEn$@n2A뀣^TG,Nx(ְP~[dk pm)_H^Mw
|&ͼ?'
"|Q t]/UIxɢZ8&>KUb(঳fޠ`e+E-@Ƞ!FaIĀP ʪ9xZ^zO'NN\n|@~ekZFK1/Q=]052rߛ a`Uђ2$E0=VϪ7ljYJxK&ыH2p&'YUZO8"Tc֓E,zGex cN"pΜ֟w>q tDg5G?\OW'K٠
ty⯏iZƙxh`mH1@P-oj"M+J1G
$;~<dkp곳bޤRiygݎάNMFΘIzٸo6a}gf<v^n]ԕ ΫbCU]<9rvnVŦbϭsb{n>,g=PzjHYy>p\_M
ܦGVݞ4p:
Db;|7֟Źa(8q,Z&ќ~\
@uBsTeučZoksM't:)=&	3v
q}=x`!j[	3͙H@Ke¦ڥq=x7ez}e\w+{!He]޻L,k}"|`gnAuvx2ɂ@pl>筸V.Nj)M[  G%Pw?dtY<OWx
v?Pp
=\t"	D:hjHݖ,UItأ?0Ym=&vXݔ
	v<9KW<<r U%P 9Y7p8}
uнls4w>EI}~wc<F`jLnȀ=YT\_9]!kDص?-HZ㔤snI'⏋Qn/(oNp4, "q7=r S
ZS`mN|}y=nYeܪ#l=ܪGrʁ|ԝlZsx/
ܒ'޷Wb׏X,*Pm&& -6ރRVϞa(q=8g95*w'kxPq䣾&L ~7t<!>:c?9_WH|?vc^ⲧ:8.b8{2.oJEgbQ}~ۉ7_9ڵ;*-nH6rNB׀֓\PFD6-]<^v[tXS:8ݠ1_w?.~۬(j9J[n5ѧδ8Fg#u4T@`楼,sfr0Q+
cZ;
7cs{;9#*5^,lW/AۆArg$CȪ(i텦ͮx}Pؙ	:9t+(܉$hWk,VPZr\V	NDHNh4trP8ݫK*ȹ!%I[3ДJ48&nc\;RA^	K:
gФáf~rv/*NK'U#OSe:c
6,WTSFH5VX
	IXZEqUw @l:;iiq;eR.;6JLbKNa+-O JJyT$̦MX뽘恚h✟kTnҞhgk(Nn/5Pd!&:K:ڀz}VZuY<:{$K#g Əh\oTFG]y~d!c9))Ul]:9zYg5 rt>%*9\JD괍$8Duvw[KCAYijkFK/p
g,-Li>Qf^o*h9u8[|5
=o'Xk4]ZߙW$G _>&i}PCBc1Wn兴y$x%nԋU6^×;VViVmKI>a{՝K&]<F@z
>4͸y	g;r/;G8  VU_]Cgd8$*7B-NLwRG]{}tS;S(3 X($tT89Fn{аϙѢ
ߤ$`=NHf7Zˮ%4?1CeAW-mBZA=qA%Á$`3YZDfu pl3ީ?`Kq[Ӻ8+Yyj}C~_NE hBVIe(LUv0ԝlO$GZzVQʂ=Q~
6yzANN)hSE di1Bv|AǨ-V뮖~"%&iUTr\[4.:#ބbl_['mQN;q];9cS]2DzibRd+`(ɥ.Tb$Rj11fq8gN\\/h59vkcyW=M0YpѧF˥UCH		; }Qa1Geeη>#?Ne$VE4_m3-t<״#E>|DB6:(ʝУ 82\"Ff ,O! !w3J)(1*\TҨGcnn%9
U4W;Ӻ9E;`h"N6il:;}_٩_;~a:j0BS<-n/aZB4УHC	`vxቒ4ŉzq%׀g<?}~eeOV?z3g!Cl_mF
6cW+6d"@.z"ϕ_2yVcOZ7tMܗ
ڳrv54 gƼ8C>yjV!`^z?pp0ó
dOH}9/1/ҦWp(I42}wHId6bU@8"6n`w-ٰp翝Do8ؠ:e5$Z>fѮ{LZ\Ys͔F⇊KÅ%vDD5oqN딡?r ]"2&cwkO8-MA෻X:h	 4aB\gr1O
0~&XᙷkMu᳿O<^ST'jFzߗ/ϺM(wӮ\HS_eѷ<7U@^bP^>*|-o%ɿ
څL jX@lr؉j5̩*6vZI5Oh k byʣbwѝ[}}!.Aq'NȼѴUAt}
9sɎB&a/SMe7^dk]EgJ$oY
tpU@glY5we*1Hy:V,7LFm[w8@|p# !&OX;;	9p۾uѧZF=oWA #Q>]seZ$/NomXj 
WS(à>M_[_ >CrƹRORJBLnA=~9pX(4zjrUgZ+ۿY8}
*|'+/&ގO)|U!@/ʟ2 |@߲k}b$ȔOEM$Tkv
#g&Ñ^c/~SO,u7wv)U2z(p!/@nN! Pm#(Wـ7h܇,2	KTgY`3Z*FUڪ\!17fnUY,Ŗ9ÁXݮ^q"ʎhz?g%LGt9UcT' $`ףԲ²$@kQh	"$G&6" VSR@W%[QTorNr,>YEfb7	P?hXn #
a{kAUc$ydIW'!U05.
',a9 h(WnݷyVVqIL3D)8AM3b"ns{A5/#x<Y,Е35Q^&lgfwn`EA1I"cᷜsBE6wpW{Hu.Ū
s:w7}l}EHêTxvg#+~m#rm3=@g_.rmqZQKFgg`[jl!4!xr!!VE.tF 1k^b&2n5֕	c8&"%Wfq{@@iҊ
vM2<Pd뤘y`
O<F5UHJ,DϥTwhsNiNcSiCSj)Z{6=0y:RWv8W_@Be9޳pu4_!Bc:j}Q|"zPmM՟Q:^Vngpx@cOkhkbpQLн,Noe76^8jrx@ځ?]8^ҡuZ<	o?l"Q]_.3e]"vD3"neb3EQ3-WY0sz:\V	=A:	Pdy?^tY@Mp,g<ͭ}{VgĆA=@c+BШRSl0݌6U0^ՠb+oDN+BOjW)+
bt N?.eȠwo0ه;?wjǙip)Q?x%Z" ͎ymebڗn*=?L{kTuBqNkCξvŻLs|T]CgTԊ%&3	׍B7]5i'hhS׆5Ș3(uiq}RVqq@˘5	JQRrqRܒ..֥ЍF\&=Ra2㜱h AiCE%N-J!=\L޾6W80:|Z /K9-.9+ΖM}s_Ttئ#ws3{;\{	[^4Mo>vO!Km'c`f90nT+"%iSa1ޡMs.-IN
URPNW|Z3!W#t$tvY!X@=JÓ70c	%ąu*ccՊ!HŪHlΠLL(x/aŚM
zQԬg|[D/P=C0ƙBVcv|tJݕhK$9ZexZ	b	ۏKR$sd'%IEIxE!g:5VzWE8M;!2VNjn$sztAepi
r QiBљ6*0̷^sPOH3uRMc>Ҽl낥7٧M`rɴێ{̋K L\JVxv2	]IdK'Ws== )ݎtG4XQjDȷ#:W6^dvM%iUVx+y/8?vQ6ՠEg^
<AM=X+ 8r,j9'ؚN.|HgDtP|׈_iؕzzR% d`>WܵoIJ9
z+uknJvFHPN
J1nguH{uɡ\2WaW`|\ڃ^VvR\xTl?`ߣN?xJx6AFHvACb몦-Z.}k4(s]!VZ4ߙ,VS-'h5Wͨ4Ċ/* LEvESLG7$v>ޮ+\6
&iIGrZH-)
^+F$`?_bU2^U$$2W0h8๎Ls Y)o؏-r-0ˮvJPD%tJv@Z덷ó->_nxB58DNV
t,{u
NBݴ
f}(uJabUv0>Qm7l(3@V)V\u4SrĊg%|E^z￘
0'細nan
ǣ	7w!I3m!ECnۑE2j*Uoћ ]"Y.VKTHr$kK[˩+
[j,%nk%P]І;EI+5a[Ӧ.+qgw4eՆk juvp$A?`pYM-Kd@  <RY px?cOnSEaCr*ZT"]
k骉Wr0[-pчo~*Kh]1K
RMv}` IgXV.;q*\
SgnKRTY	lO{X<)n\ s^~3qP!xQJiύ#	}γ.ʜqT7@;5vɞ%wޏ:/豫nW?
wt1hAEl;Vկǡop8v4Z
*}~ [K_`MuSp)ȧh3h<_uXUcG@Q2 RcIS{~.>|z\_ZV.'"Fj۶}gg}zOCAo2NᎋN\%hcHyj@XZ9&+ST	 RfBBw-~-.
/ZvQ%9VwDf_niw
J}n=CJHk2\)5XF=9R*]Iۓ=.5v9@k9魥mYVY=A0p+W _?XǺTS8\d%f<gOYv:B讶o\?*C7-Kg䫇LH(	,S[q5aՁ3AUG;?Xa
 Xϗ&$Z CYr6Q3KD_LhE9xH5[r s8_Vp)e)jl|%k-RҮ,.,8DrrzHIH;?\d׏T<=>2k<	88ܕx˕P.Å[ڱ}TMϮR;rÏ	'7>mAN X>KyQHa BIATiz7dl-9@[saI	n<pEͷ=
z|Avc`h}d ='h:	GehtA8VBDuhiDGBNykJP?GL9ﶾ,TS>.~um30D{
T_yP4[>_m'c֭l>Q	E(F|	Oǽ_ӝO'ZWB|k~Z

`Ezoی?%WV4TΨԧH2K*S-sgAֻ,Y$.}D; @qHm+[#\ޒfz~rخrTe+R
Pڝwr<f؁}~j^YI	OZ6A`V<Ϭ>X-}
\%XRCWr=g_$vUv<5i@t%
<s7	AYXީtf]?	۶J  bNNn?Nx҅3oUNpI\"Vy;s+ԣ%s'5#ݻ\	~4A2}+	ōz.]֝P#&!6) \NLݡ_5&l%SFOo}7mP"󨈿*g2݁j=BʗŶn\js;$02sLu܏̩UsMm	pqsSl
%	7k#\Ttk3 凋Nr6hoG*x+Is+RU&I_o%y4*;PQ<h.d2n,}]7t\yIsMwb ?l{U3v??*aHMYNsXyU7XYP#JԄWwהXktZVw
L\uzBưs@m؟}1
n !Tp-.%l *p+xqRB<|ݎrGH7nw+\)(2B#Bܐ)|@k(;B}Snw_jO>{0V	nr4:)S;I?@MSSRZvG;+[2A'HI(<(	!Z#f#X)뎁p:Xɪ-TQ=~X~\ɍ(z3s4_q+Wvփ/s(:96F,r)7j-LB^7qu=obNȹGc@&q?3r 4,A8__L=@whQ1Ḣ]eZNܼxY)9 äxvȢvbNk*KV\^f/ώe=',Ej3un9sPEh(__ nvV;ןC(rS!9.*k%vpLb	A3݃3o>fY^%1GiV;9X<z>pKН&(\]6]{|urP|&+pRMG	.5Ვg{\-?{9ثv;|_j̃K ?(vߑC!K=+t+Q@pys\ïw*UA	^qϡT*9 []"i*>{/aXVEQ2xCPAyxP	s[:?7GzoVDyf`
[a]lqB=-Ooeljrn}/V<۵U1z&:M!wTz%œ4a9iXl'EuWFUn@!mBҰP~{œطѫ,ԞړzTgE!}HX,-ۣ<[W
>}ޞ;* J]|6A~|&M7 Vu ۊ V'2!ݠ<Uu^~pJiDŚ
Е{pyޱ	n`mκw$0˾u.?𷾢G p;?2TʚU>rkUl7Ԯig c!uTs(65].wDf1ԁho˽ Jj^NRClK#~à%%_*@ޭ&nb@2K6"hqKpTf?{k **[o};Af
aܼ/+:X_t۠"о?Ҵ=2'31Up!- R}0@EҜ5^%[AT˩o7ϑJW#MZUh@;s+**iW"dtAHQJH$>FʭE]w
'A[vCKJ@8fv_	 H\W5tg	:܂Éګu*CiMq@NݣKpW*LzS|(n\]Gצ.}ֺu-ymC<¹wuG !юA݀*I82|[}0$ع	SizMOo܉Wxs6(_^ W(elr ;Nl4ɴ{쇣߳Y뵪˧Oc1;en<N# ફ֝C3h꿆r%#K\،)drJzO@ձm߷ +%_ӝ7[ܒtϣ hzD!~jUf(#VՓ&Y#Np0f?-u~¿p}*>6	Sr_ۭ';;ثN뮎W;2sJ4ŝ۠plS
Tʱ״b.aM}_,mHS/Y7nu%P:W=RTEv^vslz4NQ֨pP8$	u=,Li^5u08SJAHQl05@_ }V~o+lDSP~ݖ o;yηh4-)7x)u۵pɺkjqRt IQ
+e}ݨQ	G^;FZ-	"`\9y~޵D:Ye:LJzin3^"^nN/hb%I6~(	+IT]j|u%+жѕ&@91ǐ |qcw`Jا$XUo0`|Mgrk6[ɇ냐fj|^~ġ#yKLd8Zr";Mzՠ\L 
Ԅs>@?8~~g&1KŨW{ ɗȢڼRt<1_ԯRS^d!8rN@8XodzHmu
U8 8EtsP7MJVʺ
;o_;M
ncwO/qsd{U˔g}phЄo82yc<=^C瀵	Kz^qh7u=#VN,W/YeW=;qtlqzsd}5A}7pY_\M] S'U$=cmc㪡zg*w%7=_S3}%o	m:Hf'I<֨ޙ6	`awj 40<dZ8R)XaɾriqU ]zk#:Ӥ
~DhuhTBy4>}߻pY@<յrr*/YLD%vڽ}+veU\+ު#CCDpyru侃v+m*O<ۺ2]屘v^
 c9B	<py	(Bfstl*!ΙN0ix-׉m;/gK-j@5^&):!6-(+2QR~3{і{):
G<­<kv'n71Kw}֟<RdJduJ:W5p	nK|Ϩ
%2/A܂I2GhP*hKxN_xx/iخO1֕67'ΐF7ﴀtNs˄VG7 $Mt&ɫ3mHJ?
!EL>Sr1n^rfやMPaPAP":zⰥ m*
1P4Lw$FcO D ήNѤo
AHOI$.q*)l
VL	OӸ [0RE}y]p^l$V)T Psgd	`j$c4+({|:u%bKgl|*\MSLGa+vGUj
qO#L?JJ`l߮4wVՐ֤XZlH	vG$H*vCC@bKsȨ	܌u/jH:yةpsj~4C^_P,f4a7OٯC:u1 㔚eC̊],K[84`@ec`(L;55uYSY hPO,۫gmax;|иz1z-u3:_s,.l0wxK<ĮS!^bxk(#֪V|.kZ^ǫhsEޖmJ{2Ͼ},VPZ9$1A&vN=/<WLg^*fo(b='P몐c-ӟPz{6꼵?S~ZוN}_(,)c}@w٥0_cpؤ;l[9aKIwTY7И[kwd7P" k=gP.bRrq.g%`(:ѯL-Ȼ0W,V
		=܄5k{fޫG5	M^Nz3tp I"ysۤyjOH<Md?NHNF:n
^Mlnj
Duފad0tyOxSfQ޵P$o5/	O4ZMH_6iFuOq.ڸȤܕƔ
{ɞuϸTlfwkuB
dkP5d 7zyyI%c	(GB	ߧf$^",bٷun,@%4!6<(W6u=w[4E^4HJ3EW_ڟ+j@Ty13Yo.ap,bo[ΰt׀^Kly`
i=pTiN٣fa1O-_㡟CXzmy:ڀ<ӛؠzT|[RhV	}gC,m2	f@W;$NU{Q^G>`0eK}6h%Q.}sYnfae[R8I<Ib:3j?'ĩ16ۋ/D;Q
Of&%kvS9Si
 \@3
q3jp xBђt0&3ʎ4OjRDF楙wΔ4k6E-7@T@o9E
Jx4`<a/ԫrcvFEWN'e	^EW*f_+MWhqR="غj`J4pۯ/-Yi W't	"Oǭ}Ri{\OWԱg
AhPkwJ x ApԘB׷XBSިM`민y>Cח{Afy4I4x?

[9.(T5 8 kͿЖM"L3YhϔDs>(X2v߾;l9|o'#W=ukGd*ځ1}YEIiq
Z_]Qt0G'gK~*_mG_7/ʼ&:#p&tmGW4xdF#$
Sm{-;%NQ.$ğ~yLgp҇r+zi4Uڏ=*<ya~F10x? G*f+ HWS0JP
t2B4Ũ!cEtg؃L;m'^>c= cU:R53kȿ,b;!%[>rq3F
e(g>=أJۜ޿3%=#]poRLn˫'2;Ǳ5hJpXAfC9pA-ҵՉ?TPͫ41Xc&A[uSTG:`Kὓk]=c2%cfyvi^{kwz IAFKpa3p_f0VGcU^ˊI	+TՂW߭u*p>)E3vx?cjGa e	h&NY
zW)Vc#yπ,SyU=9z|fGt<x람-of!US
rzvZc%c`|815Q'TB5AxDK[/h!Eo`,6?],ɋ
磝
sQ!oYS%7|.l%*415uH_F"ȕ9dMPM$y0#?|pQ'"ؿ>k,]_SnoukN˦7ڗLRhǘM?h>hTSʱV+߆g,m!kOgAޥu{Jsa8Cm`p=>5ODo2s,਎Nyo(!Vl2܃
X6oߓ$h3ESoE쫱UiٸLLP
ˍ>u|0c=yB|#*m>[fԤ.pQ%4ws\ͻ->GsJ~nB1Vaw :e|Y-w~	1"U5r3Tc4rx;XكGyaL	VwnaKcPebH;0{sJ{k}Vv/r=ߡt$vq7y廜Eka[PM:|lmUi&#հhAiT_ZUit+*!xwkYS8#m^U=V">sjR蚠w!k㽇U<3k,O1cu=RO<2E:v;^Mc6df^Nivclnk雄|Ϭ9L:X=7_g"CjRF1f(>wzjzQ 
b/CL-5ę?8T~w}e[?]89G:?s`09EIYDb
c2_Q|t
R>(ͦGW>IA'.Jsr;OfWL+ }N{P@<ϪBnjCϽ/=YN 9vMƠ7wAJvd=1
3x*]o}.ԇ=nzRl+LbyXڕ_-^G>ay`U<lx}fVh4_yv?<f*MHAHŅUJzhbǨnO` IuJ##7xj02c3)6r&EΨ?:YF@ şt\?=VeG^kE}JlkߕTafx7EWS*Y0^ۋ+nWGdlژuNa1У06鼛z%V	z`Mpݫ:QS_tc9PyAVW7?ITdcTi/ngO?m;j:}M_p@yEmrqywi[M.Er{2)~9ڽOt*/wXdUhhfogօ'@;3C;ڼ
"@i'Tof|ovAƒ9xrN	u!2pY1g6<`%S(< {D&|cNflj ?٤B>W ٕ/h(ϞRNxxpnc'%dh-ח@nQ7Y;ū_H^PCW4x\B],^в7COe`.d'C5 /-Wn91瘎ȃ})՜XWn~ǿ\>όC6-HjOM/?iYvL~K]By= Na]<6 e?wdЭBR8ZT\WGBdTP6@Q/ar*Mg4<P'L=94Y NIz"| <(	]C 3X~Y=3xR6Uev4INR樹wnئk*J/Z2߾&hX,};E=4]L9>([\|;x6A=#~iK-[v}
O-=MՈ\Z'wizX|ۛ­GDm<1R+?̟ȷ*cpGhiGO9z[7Kه4 ,vdX)|e#=Ft|nL}9'G.g0<3
*
莲l_41Q|:_dmʿo:kI\fl7〢hyޔB&qIL;pR`>(_i 9@yH(X6怲X QY}N4TďD!+D3s|{F(
4QV1k!(	Q4)#G9t7(,ݶ&UiyNXu"<1;I#BT3 Fܣxm<OpwNɛ
4H4pU*ۤW&HKG*ӆg0|%9=c%GpNI՜P#A^n\NӉᕐ=dXK95eAF59qkѭbyϠtIGgY|OeJ=ά's$byo+gLYfxI
bMrt
K[WKcmR98bf5abYUލwsp9[xtן-JT5  |Uy@:u{)Y
WPCk^j}E#|Jy< -Mc{hf@__CXs~? d1ZiTTMqy#7iֹQZa%}PH?B
HR{ɼWzkmΒZj.hT5]@0*mf1Q.-5eywp0+F<>XP7eyn9^y5Σ-
C+^<JM҂H6N8ɩ`nQ_6@e]uzJtZ[SUf4R݆L9t[^ww}N<`Nf,~#
BW"Z7L^8{_JTyxjԱ%&8KQR'Yr<
b|R`A+jW$5渱㏋
5:Xe\ з݇۷g8ΗyB5	r*+?G0ǃSMkXh͆-TVr.6kgبR@WExqS8|fMz8t PR*[M%eY2V^('t2ƴ=ւ^RX"AΧ(3Gk`#/~dP
~t68>Ĵ)JJvgՃ
]9crUEѩ!oϺroU%-lkK^hؾ90Juo
=dbFռ:ceeۨ/D]LZn@eG<dǏFPy2;oYX\{ˈ9^a'l}XN8yC7ч2V 㣫F<N(p:Ө2/gj3E}ElwzXT
cUd"wƈ&9I9yOHx&<?+c!PC]ϻ)ӥD]t)@y֑DOxae|HFA"Áϳt,-N vWR£3.ۼ8rD:u{N?:~ŒO5O#򒕡ž{fy^UeoqF<Z;%
;{WONN4K4j[>i-z(DcGJM_g﫣?}*?
|e'sH'chou ^~ϗ%vinΑc^,Ep?}
ɊƦW hnHP;'x$G}u(q<q~T<POzܕ-:8+P3)YK#[u*Ckpg{3pX0cA:akj3^]^T캨=,_V?U6Pʑse0i|Ui=2pjyXcigo_nx\j7sR"n"F:שmGDh,ˢx:N2RezX֟ڝ} 37:fYQnVަoa8bFMlou^
Rm xs<z<H="liN^6Hl-B>W[lOiH(^@o
MN}lt:߬S˂Qފ9}|y⥞-wgOSYʉ'+p/0U
"WӮo6@;z00fA+W'Us9apjEV4uz~<vi{	>U#_ƪCZӉfyAfdhWhy3]5wGP_ӢtlGڮIid?h-&͈)=gc/Ul̈Gc<1KZe9tŧ+FٞN6q0yL	ΞWN2=tE /V蓂eCV(E韶/{
sdV 09ټQP<~MI&ߴT)ۜwV
B%HI'|=HW6MZ@uX:AqXv<p ȹ`P峚Nw1%_\AO( u<VnPEgOC_8ȆҢ\ѶYӷ{ϜBkr||D>;:xX1M#

}9?%:	JXM
6L9^4WǤ\<m4h'(~&AFEGP,NPA2;s	!ߚ%e<0h_/S,mҠ2SL3nm0l U](16|O
҄z5 Y\vG}z  ]\_h/uh'!B:4 ,kGWw[)4P||6pDڝp&#:aǊ즅&P75JΨz
wRt$aT	8	ڞU8ܵ!%8bnRu.f	"U~S5+oߴ85|=SG7!=瓚1>#C.F0]+"odry߬Snc8cY^bPYE0tW'
am_Vb*W[
fST}&,j)X_NEYDznYRL,JRzΓ cQX偹,Ks@݋[G,v'+,v,pqF;-JI1S,0^rPLٰ訍rh͚6lj:/D^Z5TƵl=,%w_L?իS7c%sϑ7 M)_{m̳ط^>CSlM(:=Ço:{=T40M^ ëBdORuIB5
NEﻜVHY3ݗ5,xhėٸϑNQ3YR|8asXPܑa8槥8tS͠ȩfnk6<seUKLZo-(YAc#B&Cٔ-S[ksxn](阑g{U 9Zq$|7U->?Lق6#=EM@x"snͨ7hmx=5L11ltw{uzU,N(mLZe칦LRmܾ+:E&ej+^jZs(%)ݤYWQhQldNYgߓf
kkxl@R'ݍ3(eB4cPG0%0l1TY*YP?D;UWs:B]ojcݚN`r_N,`"^("|J$8"<uB[;\ 4|
aF6/%) NKq0cs<Cǩ֔U!<YK^rfa
$S+o}6ZUը#Hxg?6&vx;qMeyϣ'^WbI8G7	9/55?#Gթb+9
=umectN:v/cugWδ"ϻ,۹w{+G~})zɁx(^|v'$.:Ln^4[|I<1aRZ냷*W	r1+5eǜlyBxm
!cNmm}45Sc{:{c,P7
^x,2+B1p,XU)F>nt.Vj~#1rSsV<4w+OK-pHs?u4}\5/|iEhJA%JV}3qdٟvǞ8}KƝ/M>>Ԟ@9#Lg}ؚ*oXޟ
x%,;^ߙ*5Qt?0.:&/ ,
eΝ.FP-U[< t@i^E_Su)gQ0[
.s)yȥNWAzo&xyyk:u sY!Sq"{{z{"dDaaH3	dGfhK}ߧρ"%{aUy^mcf펍wjJ
<(}䆥c.	 czs	O:^͹JD[j)x7SYB&=~XvFHC*寗Q3!W4zVVLqK2!iu{п<U]qQ:?k,Dk\4n@fG0䷞rxʎ2iI8 >uX韌*p&sS<@%FաX59o`/[ձiT
Zf/&ȼ$}UG32b *2TI}e=>Mdo;fl=Ik$/,"ޢQYt )*,CUNcv{+%덂L`Zg΢Wؑf_uJvjCKֳLrX'_7 WEU17+m{^-Iyʧ<>6wXn1_t_

AVt4V򊃯$'`Z}RtmhrTTRD.g*s(1bE7IDFkz1-~;{vƤFxlb+'lIGTDcЉa3oʻM
;C?w&4nqj)dZo3>~`4ƚAī@lA>JrI-mNY< u[دGKY)fn(*4:sއjW@W
g|g`uzh=`xEi1	֜7A[`):u2c4?xΥkSݎg zu BUP)vfw1yoe 
PKk,iS&,)~,vX7e
`P˕)t=&fp{cn빎mJ)`Ƽ}[SLB7%&T]? U	&@rh)еb.pi@bFG˽hMC]-:ĒJ+ST~u
J>?dz16̅;Ԛx
n21<)/{ %z|1Yi'li%;]+
6
ggi+o5۠&; ߤj94D.2s1~yF%0wu],s3y,#Y L9{I/;T<7噐k5k'o؆rT_mtn~kߚlHst^.WFIP29A7e=F:p{a܁0%%]LD0+C5{&]\4dzog*:mRs3Ϳ(xi>SnFIV>QƊ*.VPgrdsjpaJlRzQ	>xW0ZIs~LxsfC)3/VqO	EOJjl|1@vPO97u*" Q2SnN,gW~zBa9գvҜ{%ɖdj\HoTxJ?H,W?d3s
d⺀ZrMe.^KA=S<~gi?_mvYt6EwHs\7<CD-Tf0cK"e5WCc>_/G9jCvkm';Ǯ-9X1˂#19h9zBIm3"0!n՜ 3"`Zxp  U X.g4-Da$J/@q@`y\jy|tyAf~޶Zfk:3
^&Y`< (]aǰ\/]*)8dK?sZem|&S.W2ulL?f5q.UM]}R~S8ڗ6uqkz2y;vS`[cm,;_ٖ-yPECP"~1gO#s>ze'yӂEGZ,4n/g. ENk}E!g;1W#+-ͮR.zW]|%}Fn[] ѼZQWs<ٴ#[G~ɥ\i&8}1&%B
(|οuIg0m-6i+mHMDyID3dSCenioI+?'Tbms-:jxթJ3XWBH5/fިuJ p1jӒ%XaLq1rFw?:H
EJHј>9=]+
/j>u=3%<K	:hOV2l^8B;ݔ2VQ1t :=[%m5YyJϼїH9[DwW֬(ԼŠczgN%y{.urx^YK.]
J7T4r!ŹK)\&w` (vztbZ	6*
͌z! ![:&iyzU3`ȚA&
<+>v2ٔ[`bmC"PA$އk?E3Hj47=%@xy/M&h(&Cv=z]?gP(\=z7,7y%='
b>~ؒ="&i'khhw{&U	m2M:g/iYY
`Y>F*lb@:ZuP8aݕ.W lө_C'13&!^Z2SgڢEXm[)U^pDǼkC3\i_:zV=r;nݯ	/nBm'/0i孟u՟F'N5{	օ?HjƜϡ&r
ѐ.zGJeoxᤙx>ڴ`3No=x\!ڥ.v
?L*:?*؈YO7^=dgcycy
@@v?ne&)?Q^up݉CW2Pia;/0gZ4,U~*3J 7nGBPs7PrrmCs3'h{4G lLP]Yח.R4Ҡ&sAN]Ы(NVL<gϪ|UʾY?Uu8.ݚgxe Hk&۱ikI Q^>'PΠ?rf\Apύl})@isX`2hz6oI:L?O;h_U$!e'-2Je~P(dykzDuZ-096J5v!Jm~ƥmp}ƑԳbٵjK 3]s~>Zp\|i0Up*7yuN]餺tۗ9>L-XZPiK4`\kEIh`~8s'<}>AJ56Wưl}ϥQgM};sH{Gj+|n"TU`ah1&cIF Sl8f٘KySc¤8cMr6ZIey^a&d,\ك^40Q	M|!CW¨Q.!>)%*Uq_SO$c{kҎ /Szt{`| g݃Q>$)ϣ
qf=1fxef6oWos|uph
4y.1x"5n PB0is: O糉TA<h
͢JK̫۫@iuJn(:w<lW^i+UG|1;W]zGyМt9ζ7rwxD|]9Q%12?k|oCWvNgG-p&d,su$S^bcrzkZxf;YC+l͹*`|6
zyzFwpu@=X{T夋͵Tsg~
4^#fOBd ڗBQEWN(<@T%4hz̀2 
<LT>s]zNHx;,C4-<)<UxY86Tjʳfk?+Mͬq4?jtf'~iFIb{FsV{z,i
)PW2ȺS޹*dZe:Uk; ml̞ |kΫߟnF 6CW!IjJ9)C2.O8ٲ!uN`G:9-kPHdeY"#q/<'N*\Cf?PF#J9Nla\8aF8J7UR2bZ|7T/AMnn>FSW_h,BJT,ik,O8r i*}IaJ]׶׆k7@anN{N-kbEڭ)=I"jd, MY_acK.E_'u5v&
e;Z4o}!"4[0o-عc9[Ǭ+<CgYziI^:®^EtTN⅙!M-_
 &<+J;_Y8f	(74C9U>&:̡q+l+(5ߡͦ.{AŴܴ^K%8O\;=
+zSר~ZDi~jW/U,-xgN
?/ys
tI3+

ws7[n>WpBCj RfLЕ0ؙ)lX52O7O9uIl ϟyU
4?<7{Š"<Ūn &ͷwYlxf0Oɘj^rSyAR>yV\P{@eFM|)>TwJ)O_whC
pz!L"_c-[
X)ڽ3Lk@7e}L~aE3v˲z4.ӕntvOF}"x%$S
.Uٶg!Zd7L5r=,
ӴH,*}zTyF-JAPOJlwuy)!IxkdH/Gi(,9@VK,;fyVrFu<9n;n&(h; *pLû
vOTj%{`Qͦn4-]μdq;٦t:eN:AtNˁ(!@;@:	XZûڏqzEj[| uNf':F٧%t'?99d q
&X@P_Έg*J# /;
ā|1UuG*=(DPHFܗ'	)/s-	/i^Wzz1,#toxwѪB&<$,u0AH|Lf7	"RT[+
~T"4Ls̞xUy)]ӓs*ƖBLxMf'JudgB'(P'%4@ KBmQ&c:XxagF<hl)0z3%E5eH2`{3 g{e^rs9.V*ȷ
Z ߳)#ݲc՝`C^D&^0l \7g+~r/Sb47Tk2nb9V=V'N;'&2M&Ty|{jaԙL{?(nmRs^v?4䖪<c=l,)3
3u`t$V/\IUmvtĒG3SOHK

V2 <zg[?mZz<Y+Xh2e7!OI	vnye\¸,*6rwCcDTTci(,%^'֡N2%NdO )ÁŇC܂RC)ׄ'~:w%gql^V%/^믽\n~	2d:)A?cuE喰S}~zjTbz>1k}BcV3뼁Q-m{y<HzƩwjIdp6|IR\{#
/*LRAѦG=\t9OnuP唫FHB-c{8H1fh|i̱$BhVPCkl/b|lT%cqr:O|UUcd|gׇFr񍏢Xխni$i1mVJ @Y45X!
u8:W^<cUi^'9釡;4[K[X=.iEL
D|:!;Mw]J?xo:4z .j_CGPČ>ꑌv3.~:ϫ ڮxxsG]O\~J}]G7~1|Cq6*}=A.7<*vL5y$ͮIkvw4E2/
iƟUlVrjr)>7KeC&%t*ﾊQhq&u	t0{JZ_3kѥo肃e9,;%#;E^NPOC⑴.FjF=`˳kڣ#%,hI]x['!};L8
]oگOg\6ffVKP˒(qU`?v.xAm˴(5Cޱo&|
BGҚᄱuц/i;GI0W9#ji#W2tFcM$鍊5{1I@hn`}_5NRRl{̗T&d ;<&<Vy,YiաI˧Mu֞	UcZgsuO	>oGc6iW zoM.@#W%M?v`N:4$
WVdEֳӲV֏=@>Zf6q}tw\&e
5% 4aL`+x괁奯!s~JG
CRoA%Bt0[
v}PAڨfKm^/GΏ-1V|yOF

6<RJTO=;l̚^Bn |G<goû.'uS'
$^VIrƈk̎rjOq+ZJjt`a22\TTA:CV
΂p7Qu`jf@I<h A_ 025T?ZJlm?1bxOT*q)R8t,j>u|1(ss'Yqrfnҥar]/OIj<
QqDi:Ym*90nzǾ.FayZÈx#m洓ƠUzRcM_lP?ي5EԀAJuSx]ct0Q˥/?<Й Z׾E05dW<!E*78x?Ibm^ljyH-V_Sn?\F}>}bU_Jio
]Eq(']GJяQtEdcNǬ2{c
ɱ6tV" MQYlվDvLB2A,q(/+9Pǃ㴪S@uWtav2mģ)@.by=;yXdoW>rXzwGx@dz^kHN:G84Ӝ{KbhE-foʣ*癩Ȓ7Q;)	<u<SRW-%X VGof?5ßQ
gB\0@Ji_]8VϴFVcSptXF/|+$
[a|=]u}
$OZa/G	SAEn6iZ[wum3vJiO7$4-'>17*>o'o*]g9w]0T %-Qm92c	5z5
Soq\EeW?>mӱuRF+쵯P_$F$>kʩR8%Oj@gBe|8{IԢGP4b KR$
t嬃p::<@EhFJkMuS>mZ:]Tj-}@kީsˡ-ޔ4'vu:.󺡉+yٻߎʹU	C^t}yv 2W!7BWi
Įi	q,wkS_{Q5&
DͨFcZ>Z:j׿sc5!
$>ռͳB59mPS<˝)z$5KnGtPjɗw(;Vt/`/-K)R^9fT9,޷i\)F෢<ջWУe7qVNwQ$O>:5`<x|KC4<L`#ZOS睮~'8mӣR&g-`ʔϋNyq{^%h ?{EɯjHzP3f<Rp~F4ΰ-c7(q:{Wzr	G"m>03(c>`>E,
4L־NRws"PI32-[ˤQy$*
il uaCRfr+
B뻸`Sk
D~sxlMaz.*ZY7WjlpŴOʫKbOͷ//!h9tUœ_V5Yh0U>Қz`sQqcJ<iF}<ղv>dFnJZpin5Vx>91{d>2Sʧ^aOP%wB`1dG'Fxǧ#{mloJ^Sa`[tɍ|]>Ԋ>PE$۞\"yL<,r؏3~&Mf
[ȹ3RSR;b&+S/~Ǚ̧ٿ iJERUᵯvaЛԟ?"I֎eP;/cQ=Y-]4Jz{v2_E'F?DoLxoOL8fF [ damglՌ9?u>K3z:2J,m~%(ə|xj$u6?xi#hOJ{ØGdM i|kޔx8O僌5gd+J_oGX)bcQ~YiڀÖ|	j2C4'8N)q[l~f~IᡏǥAgΫSczLV+J~{ƪd-}vqEgz(\RgSґ7y݄苷
{{Ekw{ґs60LB}\jǹF3qaoN ]	q{|dĎi]b_35X0t^B`ǑߡgY= e{,*r!IttS}q~ ^E	 h-񏖜M֋1iJ\T}M=mUs߶F]?ONZ/*ygD
PȞ>n/:!1*(\[_A<^g0ndT{M֮gF5EkZo,+i[oj6U[=()|*LE__2ˉ:ǆ5'ES
:PWShU_ᨡQ:K|f.QP@P @_ȗx ;+Ъg ~''z6b9(0{h	bX^Je6%?.JT4ئw/GHMN]Dy kR&Pg@kTʁ:TUW :rd 
dÂ'K֦iks RUovY'-%D{1Jn| V)v{.ė\LeJ%(@=EBO"kG@0@co'P碮UC̋L;_3$٧<d&zE*~G<H3=<v1j<N`CQOƽY~nr)JPz
hM}5z-Q<ĺ7^PY<fnZCV_PfuS{P)Ud)PYsGod>QvpڱAf9uHAPֽtCpIB~FJPE0y=;	R' GyMܲ؟'zyHr8h[WGȦ/Y(%yP[ޠR#)N?;\& 誂c5`xՠ!.V}9>RW-ܭzL]ædibi,Vm	t
ߤm2(4JH-YT*!{՛Hlixtԗ}kX[Cpfyxƪ 7Ŝˏ`U޵:/E?-ہgFk0( 0.#)^yWM֍ʤt|8l#5<FKؠͳ}L<ueV4̈́WgJ>a?aL^_k-0x#)l'\׼1A!,i9)DVj!LM:6i҈ef^SB#YA?h3Ϭ
;w[ʟafMz+ARa" 9a,ݻԏë4|`[TUו*d!G[ÿ1#?F2W5X49D?MڔB5(G/N.uP_hP6+
$=+:*q(
 bh^{T ӅM;|姱Nf@lI:I,Gw:Ӟ0~_P>H*i&;HQAM.Ra
ź "{ )vY2}\1G
T۞ԡtER  +2rjU}}Z2JAUc%>9Dkfk{i'yF]1V.)Һw3ԤM62=Vi94sI~'?,wr<ƺMy)SNOCmcZKH]P0\t4ԹV˚2kQ\k7
*n)&JDA`h-}:JvL`TN=OQ(omU*s
Rue![6dB.
h(In 0\5%"	DݭgI5^JoV=f^?FPծD%ߡU/QcS8PM+q`XP+,b?&<Db!(WѼF`U.>^'WD48n2̑|^zѽh VjZF ;-iÀgJx{}&?C'X:: *>朙F<`/S0(F[+ֹxs}ӽMROQQΌ&v\sPGǥ,[UO|sz*L1n;?o|{Q3)W.;VvXߪ<?VPKnXųףc^A&z<:Lg';ig4Л[F	Ǌy>E>BAgg<`rmO SGTS¢
jqкR&d5PK_ϹhVs%-1f̉ݥ{u9&YO߀8ǧ*3}a/e?l5?\I:d'  /]I^ON^uq* 4|zS6(bu%|iF.HzXkՔsR^/ dmҢ+&VF@>-:Ya^EDOT&q|պ5>:v/}(ʎG ~꘶pu(mZ3޸0ޚtrAC:~BZ40`Zۈt/z)z_,JWr۔
on:[~'PJ[_(i)4FpM'l9~%*klzG*ͦvԁ*+LX.`תo6Z/|%UvJm,֧x7]\rpēf)k7Szx^fCv,M"UO>G*xYTiuCpcO/|
o%sGݚ;W`A'K>	Pjvv
JKG/cnOu$ w-ϐVUNOMD9*?S=-s$
rS2E,|il2I˜J z1{B<)̪^>a̱'n,h8{[wny8߼!.ƙV5Jj]ѿmy5Ci~;h>@-tzХ_ؤ|:_` *<k=as9bv|o,`,9x0lh{Ƹ 9b~KTC$
y4D d|'Vt;_llG:PPYbjrYL:[7}O)	K+2iYŐXݮKZu
 ?s_Qp7'{h䡀$Uld3m>8PR	)-ؓ@eturF.JMou_,eQv>0_X	h~l#sC20pG!Ψ:}4Gb98VסsupY1I^iռ
~^*, r+66d%e5nlrR{^G ]eO}9>)6, Vif->M<uV vzu'II\LCvxд=(s:)i$bZ2Z{Μt١20?z 4-ߴ	P>J?l#7PSxz9O@} MhH4ͷxk(ǲⱲ)'4
0䄝ji.8 GĂN+R(@JSr(S!WNu+3֗ @yA8?5
".
]̖Hƒ{oZj1sx=&Y'm$iH:-keCA=94BىNцLEwdM?+zbFZƶ^sg^!@Яk?yݝYr Klog
ed=:YH^,'0֙JSPoq:nG,moQ)Vq0VU3h	ROS pa&z dNFCT;>[]Iv4xx{*=W7nxuJvpq՞Nzf/'Ӹ˙0`$ԙ0_<nn Zh4M@χ'_UN2+̿Y pEoǔN-NA欙^*@P)Fъ<GFCz䴚%'3^'ʢ:
o\f󀻋ѷ]t^<[ۼm9cJ]T7F pq4C3iQ2Xxߢ!:Kc|ԑ{
jvK1s6TI}yMuyLKnZss4eۻ{:\7
׹l/?A&٨o	Ju	tsSX~>,Kw0`atD~RS4(N*S<-	d18:	*>6
\47xCKPHpxwuװe+H;VW4.6ְՠ\o6[ޛ͢>!2_Q DPxbBW~1$1X/meXd\<px)/
DΎ7r_ut#h/k=[c.|S%۴I4Rb5
r%2KWi1GcP*^fdm[$ic̀OGO*:
gԢ L Mkw;}+ӬQ3y]T3A\VVKR@iQ2Q&Q>43<_u7'f<$Ǖ\!}OT0<VeFK@D1vܝ,	/b0ֵS<gnfh;1N",5(Ѫli+Ԧ{PR63.B9WXK:&tOӋt/oP[nMr' [~	{d<NlRy|d^ylpx<7e<ݶjCyAVڻǞjT=7LbZrNuռ3@Fz`%l<QVi(dmv=L4Um6|Md_`sS/_yUW=I!VGf /KDCg:6o#״1Dp03_nz
)rcxb;:lBn}$g@iFkt\f/Uc gY7P"ݻ}8uC֠52?1KDg0.ދx;Y
{kN 	h@i$-ac#G.
6YsįM&ck
QgJKbT(!
+5n_NC*1eY'(A'W_BBzWtiz$	O?7i
(M/W/i18%)b\45W1YHϟ2K&j,L>XP4\q JS|υ5SoFP5kVs)˙ږE,Ob)mC
@/
Zg%Tr 7L]]k$Dڟv.?YkQuP:323\w(WYy4v_مcJU]˥[fSM$]ټHh2bA1fUoOjՠWN'У^̠tݎQ
'i 0ɺA Bj:8ǿ=˧bV-\XsFFXٽ|:7:#fp,@x}EmyvKS-ޢgGgoZgѴK "_&F
g9ûIȵo">
]c{NkCQUG`*scGqCTNQY3n* TZ~n81q:ꔾOj:LbW_	{o 󿚼4Eh~NRơZZp[,M/x}TT}܍|u3cab"iI^ִU4ڤ^!
*r=^Wvs=&?ֺ$ѼWFEgo]jyIz}頢LJtAsbѷ:b}oaR/ej^&u_fx?58WϠҨ5~i,;Ƕ)'~oK=tsÔz._w;kZ:~(ДȳJnnG<j,d;T~~ny`6]]J"z1ؐLZK+V\Y[kȼYG	Vf*_W_*)͆Ҽ[L1UqӴYNC`МLL2).Ah1`rJ^F2jK*I+J?^Gta?hoKiQ~ukT9\= H*!#O+>wdY>wic't5O7,˰84[ܡ)2OB<+jSex3ϹhQN]]ߢ٪YrG
ָƩ֨D[?Ϲj=	?}u!B=2O;Oj嫂Ao}[UnІĲH?]_f(>[9vDO'F{39E
wwsVP-j#%>'xG)8y>NW6muM!H%Mcqڿ `^xP~r :{`I<;dѓz{PY7U-)Ĭq-t0tMDЍO5	F{2Z5xYC_qUv_nt$sOY*[k>gsa^Ǎˬp\hu{̊Qupg 0T+:o	SQT(=m éy&Rlo*
7i~Pi_૊pxW4]GX'
M
ubZ(EN߫w.׶[Fz/a>˫@gE&5Tgуf5$?jPW\L挚.KDyCMy}quyRzUfez 8p])\45
^9qXσM,R}%̃et
*su7Lvn'y9ݣS%yB	R-%}](Ug0G_O&0E}>HӡjK>)~˪b4yaxN| _~ǡA=!KjN2z`щRf'G~9c{
}Z0PxJ_JhTz?;F 0 )?4?VtGkCbqeyN3!ISAF#i;ǻ8a]^GN3+>mUnU& <zztP5 :Z=ifM!m.w{vRGI`_S>tW2"{=99KUB׻AשLkSi*LfӘPyB[aVp;^޺_TMR	brZky~΃dT҂o&#ȝa#Ac'=ل#{,ÏeW9j|@J2/J!AGl
_3eJ 8MtBYF'׆c`E1yнa*;t(0?t8FbcIОUlz%[{ ҿԹ@_L4tzX(oq/yQ:3xN75&;k;ʂ.4E7#;qC,һ翻wص%n!㤚n:Brβ3|xAZǝܱۭFѡ4=Wa	T Fi?]>ۼ	w2h=E NK`4vl
}I7~~mvOs.?&`VzBvr{I\tOhٳ9	i)$%/e)SsY
YPH\IZ43@zzfx^ Ɉr/ g4fR:ُa3i-|͐<Hx{CQŅOJ{>X ~!$_gRQ(2*A9L _Yɫ1gۣ}zDR9y8%xA:'m
#_]3Sx sr2٘EH?h`5Umx+:<ω?-eSƺ
sù/Z^l`96XQCzzRy8kdialэe_?
{h=ҸxJPsl4 %+il7_΂_㇪Jǳ)}X(Sq,zGd̦#w]ⱱΞ	zKt0,mjbSl¹.ڏnX[
o-gtf霯KG?
	1لtkS]w']6r
CG[R(G)V(qiA.{T}Ե؝7G͆?-EҊI:íҺto@wףIhxI$'PKGS茲wYlFt7v2l1"E)RC}\گ3]Xgq>>Fƫz1XYYD=~ 7GK GN@gg>m9tyxNSu^<ٔ;-e
Czh|[hpQ9x6 _&+NQj5;3l*Qd Ij	gxT ]{l9RTUg,)
m3\bЀt
Ķ1ٞw8\
Nk<KcdȫUn+<)F,iG7@8
ѬE 
cc]*:zD좞Q~tԏ}k3Zf6Iփٮ'4j=+BSYB=1X]&UM(N=с@mb!Xv}Ϡ` X/&,p'uа9 1Yӕ?kW7\ɭif\[ksS
l\BJT߼=QJa&9tx8vЛ'z{0)ԃߨs;꒺oG|_`G=j6f	:=Biyl,j9tx	u6BӻT I;cRė+ZAgrj6r)Յ nӦipY*o N8msf	0H~	|хy7}g|),OOo9ay/d,G)jњMŔRF]1;Jb`|Ld`;_BZT3}TO/WJL7g
y%!+6̊S!	k>J4Cסj`Q1xS%J$ؚBc=DpԵ]085R;IF^ך^oAbrЁLצR4?Zwy=AJ{hHos]ssP9}B|_@3V
id Ly!aSw|r)FMWUex~K5{fo>#s2u7U0RZRtһ.E(ރ;HՎ/wE'v-">> s
@	߶h](R IbV1ۘ_#lw)^TV-Pε`t\+yEak&f)5LC#DoXɛ!`iYhM_S_+a`Eހo'h t <půԁy<'B_GiyβtQSpsVJ<DuP]6Qxʣu(*TYj3AW)/8&kfc' )[@sv;l1r)N>H]xC;+l7{14	^㌤຦inh}U;Em}Dq\3kj,:Eac9^9v_[Uz(NBzعN#Bh4SH(IH0Oa)\@Ԫ}4*焮݆?jRhQBs,+CoX9jui/M0
V?x;h

J_>Els88[Y` gDCT՘AzfN^/)F8A8Ӝ)K$Gx	doN~c
#m41R/O\aJDSCr)h`7~Q2peZRTd,*Ci <!$[ѡZthN8GXʳ:҄ϸ sUKcGv*<Eo0k]Vt?+Hݨ-_]zg༰|Vhp~N3qc}^rũvzŨɧ@C Qq  D#lzU:RW祎`j.;0Fq8]"҈AqD$[\(_ڵy>5a1oCf`Э\Jgo>jI]א,ƶڋCW	,wAަs%tؖ\U6cPcxCxLrlii7 Q;/Ycg#^;y$rGxߓb'/|eI}hـ;L.45|Qr
=4gx@ݚ7|.CޟZH|>64@n\A4}si5e.ƺ[nӸAO' .LWYC8jJo)O@hsA~h6yC]%Gr>O8.a	 %Al^G$ pշQYa

Zt
zV(TuyF,i[%
a0C`YuVOunr7g!Tj5V%!
Tyg>{1C,$΄_-gyVvm}X~UD3S{\ݥKtW6`T=.H^1Ƽ:U4Q|;Kh6Y z*M3ډ^I;jrm
_>STU^-)%P MXq`L
U	ԏd&C1sjczk{v1
{̮
Ký<c]]"s߭OR6aa
 %͚tKy 0Pw_.E #X=wjix0Q8RG4+쌄Z=3?%$x>h}'̹;m۔դM}7
ڳqWyk8[ypA^}Qk`ݣDY)O
/
gByEC}f5NLL%yƿ{{"0j{ˋ`=|#X1TdZĈ(
g^Itzvz}_wcځm:/hf&VRQ+QQy1eWykj>F;7{~n`݀a!OhryMu֝JYaL^S"(OEv9*s	j8?UZY}o`5NOҐ<%~G86`N
)	9郞Z6ntL2ru^57K{pG?	s%*Lf}}~.q"|%'o9퉷GI xiƌZ1J+`9AS;>< H q?H ;u_*LkޤMn4O[.8qG~wz#ǃd4{E۽	kSHzBBntV)XN;O΁Oǔ-8>̦,:/TqSԿD]Z@uMZSDc"iI#ĉ6J5/ n@
;LDOj9}/.@ꔶ^lmk\tJ_$"e> jfMg,:`O]b#t
q!LEbfjSY' e;#3Ϛ=SZHhlaЊ*PQri[זö~Y6A/O9zSVM%U,hm}b8)o%<]+ny⋺!:4#),h}l{dZ$4hfC2`bQ(3zq^&Ӽ=jq7%JXXy>WTױ;`=CBɕ,
0
Gg|O`dSL+vNsf;b@ ¹g]IB|BU)*Xz-.2J=ˍ(y[t[B9%Z6HQoʩ9ja)ɔ| *2
	FGN{Hs5#Uf0C?t% ,=-tD%ZL@tmE'Ɲ&{k[U6'G9PL_j_$a ˙wX[u9>8EP݇ڧi	i>p+w[i~8Hdp7=#G_Lu@;,hyy@Qujnq(q!bF̶n)<p#Hۛ+ock6fL=g=s␠>7	|=(F:$GoV玔:YO7]	Mҋl@ZX)8
zެC^W8@L40abܾl5uw_h>~緑H{kTk1C=.U
qFFCqB$RtEZsVjG<V%x|Z/}n?5?~yX+K4m=A{
V-\=/T7>v7~q3N@ڮg뼜c/=ӸqT9`qe[mҐ~(jeS^Lw|^TK6=@-ÒZDEv(?,\R
6Oל6f!ȸ$&8F0z;%7$Bu=&ph >s
KC
] TM1;h	Ό/D3PΎ n4xJ{s&DT
0ˑVb=H>KsL%yY? A=O_LW)QucA_7[H.y^|gJEl]n32N/xU@щV}tr*ݿD?A7
^ y2E*9pͤͳ?-7H1`c@j_ՠ+F<~jw)t OO5ͫ(C[+s^qiǃ3 Jr2>yPJMs85=zzbQ|eaiPi<b9g0KqEo_Ua_ad}t< Vj Y-p֘WuP>Q5IMt biI@'ρ2]>h̑`>_t$6E}:*QJ۶WuWg 6;g
(ck[+Z&)dS5a{ų,tYcehFcz&=4~,@	v깭3R[eƈ'{ j!AeauL:Mѹv4`RhNI#S,|hR#o7aS	H
_ cED	s\<3ɤ]\''nXVZ~?L[ke'#Iv+J5FW󼜲
㙃`#ryBۉNG8jZHU&WA:@`4w@'2BB!]SQPJOd4'ccI7b/r1\njiG`3#$
j?uiWK{-ɍ[tl<2gi'*#h06՚z,zo9EKnszALϔ|2Ϥ'ł|C*e˰sV6iכ|RN|"HԺy-U -Vҕ<E~J4.*dZո#5,N#
}
L-:a!Γ0\6	c<KEǱR)>q-iI	x
1&__s6ʑU1H*]#xPVa-óg-<67o;ǢH๙YN'V9FM۾xk=\X!z)ƬzQz}H	o'
`)C	vMmrK7)x0d6i@஥ t`uFȀ	T{Lf.\
{wxԯjsE_f[S	wT~(0uz~vsHĺ/l!A}~tC]Wk``0n6t[[O_Ꮧ3tԉey]>$S'k4Am,[7y>?\̓N
ф>×:Z	(YݴiwhRqpǭ}^s<y}J49ʏI_ZW#?|iqQx~ i@ul-yA,ˬ*tߢ7\ܿG\TMO'=wDmϛjw7S ח6ε8MZ	6ǎMýQ.{lf2#~А5؟	Fni뱲Y! 4ǫVޓsˬ
5S۱Y-'|u!htC|.5Ay-.
;t=.:M#Aox,:o>ӛ\Z ST=&t=;o5+Χ~_dW!y7V{bDp C(syuwS.艴S5JeZ0a8-Kԃ\ӱTaV_~T+2IF>` NDmR
ر{uwĸؒ+a&a]EzV AIs68}((Vd&JYݏWi3dSM7*˿IcOѽԮQ.<dV^&m/o=r?ΡÀ'j~.ՌW]!f|R)&ȩIg`jt+-δ'Rmr(?}Y>̊Y4Aqqi=k,I^Ua3+|1dIǵ欛>y1	 @G"^>*)^'kQ ] G⮸\f
\]=r3ЫOk=?ƻcW坏>Z˝? jdW?4$hrFجkT~CPq8Tȗ7Lp93ڥ>@T'+9?lR@>ݴ֧q:o]¼yAlf;'8WaP@Ui5^'ů> ga|Geݙt+YHi
l'HZ#Xf.
Cvv첋}^۪25oΛ	!xL:#MbF1n'fǠ+d$:6omG^ 7WVzC#Ɣ郱>w2T-Y!ғFM"fr*ڧѳ㔙BrS	`QOd =?!c)f-`>Dޟ`P2`Pp"`*T9ʴ
ά-Tۿ؎hz<gȢSu͙m\äN7OgUYCףqp81RFtrwGxUՁ[cߪ.y].y
?3?WbɴfMx
Ǧ~$E+}jrKը诩9[~6WIf:2/S3ȫljR<9_7o7s(񂥴fx.{5w-stzd)uvJ$TihxsMߝ
g`RXI;CK	(7ҷ3g=v
;@mz^!È?>i~-VۜwBWԸ؈sٲ_#ҋ4SƦhaFcUl!~LW^Z|@<yK/bϿA]Tqz0ڹߨ>k`bPUu;8A}!(^+͋)/=&WoZPSP%{h>X:;1#|P<U $o|FPv55w?*36 	l5ZKE]=y߂؆ʪ[[cBRBe$(ӁK,
Xd/GR@McWrqXm\ %hc9Yaw\&T 
Bi!Rǲu>VB\}xHagP^ݛHI{o/I;:Elkz-&ǐݛ!ȝ2߾o-&2g<,MV44Qk84 	6O5ƗNixZ݋T/#؏Ȅku2]جP	LL˪ԇȷ)J<t9="		k;/d_aM˺R
vv?.拝f-ڷ0Gg52ȟ/8vRꏮٵ9@Z+m*,ZYi(AScp8
<(**>K<oʇUBH-	pYg3/@]Z#4e5Z@?$3`)%VܑVD-p٨$ħ5ݑLˀCHQ$iye?dWHf/K;&m~1N׽G~E?

XfnцzLqPl9ӲTboK]+n(fRP7jPZw͹3hԫg]v4x `e&9QcM2aèa^S~Z@yەȦ,+^X.oU$l'uNXw?3kWzJNKM:
 wgwo	,4ַƩ5\և).)NiPbp6aK)ʬd
(ٱ
;% v>;)	 2{<Єf dٰϳs-zBx@s翳qH䩳^SߟL^졏O7DG?VlGe6$L*]ë^~!ĽV-TG
L
)\~M p%XU"`Plx}(B9>qb1*	nZ.G';Qj`7mt
^Ay><fmy6̩\zouMGzm=0Ћ1;?9&]@̿l[^,tg@.7q{Py 4Y勐 m}*~?=#Z1<297=.3zE2?q|e_6t%
fS~{|ݥ[wG}sR}ϔ4N|fk9t8;Ϭ5ׂkƎl^쭝Gy_Dv7\atftm^A߹dӐX:i5GRi};%>7zmdIS9=rķ	1{_CcHQCg~ĤrE]9AiWH83ŁM2<A{oE|4qـI-LKGhCx4*SD< AtN
ˑ?}4d22chC> ÃU,֦mƬ"5\\dP%|n<*3`8U[tA2@#^k<k-MyC볿aXY<fRטx]R<lbXAŞu雼(s-
8ޝQl4O?a*9F6D'UA+*,+A?:upĈLVs~Cpr<?ӑMo'ssU
>(<iY>Dt󺍽7D\oVԽò{h(,OWh4	:˩^T5!8uڧ
{t kj):ru/6461LC,E_;ӗ7<H3V/w=TQͣRPts؂N(JNg]|	3e-9Ugi 0~nd*ynKU=) lU^YB൤fsJk?}2eZpZN<A@7dT.kq+,5H0dFp	.|V?1|^{	3ǫuZ~kNq2X0;#ŢAaz&hr
Ŭʢ>4Q
.>q9nXK_ {PdclRq$N뺫1$EfſTllQ埗<_ڻ0}]COaf bvP/b
In/xD`4/$JƜzHeg倠β^+-1,WjTѱ4OGSlw:֛5Gwj$SBƨS/^R/h8\'	R&MJ^WETMW>	+2]є8~yuhHp@B5U5SQ{2U[y9K  ,);4raoUBcm@9IatW?qˠCH{N,sԢVQ?C+h0}`!7`-ܲxi&ҼjԎεaA'#;:[٢vP@61{OZPRwk}|aDJ*|0
r(6u<M7uxή0`#MQEDUi3ZsOaLCd;	.jtmH5옌8Q(g[uM:屰G	lsOll'Ю4wV?h@)Stֹ	¢w8vȈW6~F)|) w}}Or 5Q& }ek
欛.f˨Ap<g
T:
4`-[d
erc4EIh! iC/ RDi
^Z{]*8>qWyѹcp/; y%c
	*d$/ P 3X{{8<U>vS؝ƈ:{j04
ʬT{N
"z5
ur18i5$Dl>HёL=yWfy2o>fjt_VeU=%ǁBC\rZcE
K3挪@`%φ;r8g$5aoҠ
DOdUQel^ձ>	AOcwE?O{ϑ6;2Rd4glsᩴqBCA9Eao|{%GNM,9j;+*rJo@ey;\4J6qcGx$;^9Hs<W@b쯹C3ʾcczp7
INvʦ՞3>#0're3؃zRkҢzAK tiqЙRF2'gYחN5&m<B?20ٕ0#f$`L#Y&E}0
AÏY3찋6UϜ^)7=U;U5˚Dy㲄
禠
iޯLv
thfWa_ܗGfx eɫ9l1ڬA/0l[-}Njwy({od2D&k?Y_nBn\v.`A4Ov(6ǟC
MkÞ56T\kg^_kF4
0՟u!SKflQn0Jfp +Y(l5HPW_r(z![jTYP7^Wv~F'tӎ9i^J\unrԤ$@^.5fmX	`y7<?>"ݽx<T+6kB3:4Hf
Lyd[86Fx2?Bctu6olf^7"WZZgS-
u@6,%wSr=Ʒ.o8iD,C`8(?^ko@5@Y1@HN!:MKLET\jMcLMD~JIMx>U]ڪYѤjx{v}	u[@t<Ps:,S+P&VXE[fQ,ƛ mKvyZ/@9ݏ&E153}A؊ѓ+yi4x(}ؖK{
~;]=}{<τXäG%.=`E#+0=hu:6C0C.TK_.WUXDsE橿vٟ
`@B#}Św]vo/QhWUUŔmlJ
0!0CUB++{WW&F(Ym؉)r*Xͬs^gb3R;:V!ػzU.
&\Np4M6e21ӻgƳ#{"L'Ѽ`e3Do
93²/zRYz:ד)qq!r}@[B\*.Vz]%GHqA
ڞV~. ڛ.V#9䠨Ra[ gh.R%⮷K.i7hZkdOZV
ŖՌ%?ר;5F˧Vn=R*OW}<W~
/1wuMU8=
3(GmZJLz_^ƽ|N?u\uGڕvLbHQ7	M=:XiNGaneg{"2{;%u=k#D3
]%~}tM)eV8B7zTAM̢	w.fց"PіP'
E'F4=bgX)<
칡+[
ݳEyepEV-c)گzKЅ/hkےg4Ǒ=Na2Rb9n!~kӕa{xBPsV@Y^BL/.xМS?<r"l'oc[Z7_Ieq7@VMW~:ߚ6A7ݵ-WHURZF_ԕj^}BO7
5ߋE\,"879
(?O|˻dGI[Mu: Ycz[h*5<0g(	`'L^_߰u{i?	hx
B3~_0EU+Qe+ke?Qf*l)⻶Oы3#jzGu
r_j4ؚgTֻJ+PY`0?S~sp;ح6݆N`yѓ
d}YPx|R2_5JdO"
t$U
sgR`IOUfxy IV(#{
^|x&kߦൽM`}uIyͤy8矁 Vpr{uÔ*Ec(,FѼ|"62j]&"
ؙzh
q7Lě>2]
zuYN@$2J\TZa*W{uY?}rTԇpMsJ}Ol1IZpuH/'jxK焖B֍a:(1O	GDEE
q+TmZtr4/RaHrys\ZCg9?m~v [:믷ɰt.5h(*
L6F0`,UK}vPM(%%,M*h&!D١0>*]5m<wA'j@4m3MOoY祿>.'G ^
CWvkLiM*՟>=S
/G`1 ާ'/Br;E*cȟp*\MHf|goM@Ζ#Ӷz} c+ߦw-v{S85@Qv/'8@*`ny35<!}Qoϩm#_ώh t ׹ e\0Ӫ\O~c	^ 49NuH=#g*x.'#[A SWV}#W 
ǾNLwpm9xt]A T5GJێ|gŁ-ToR #' 4ͱRmq%Ej
Rm*3 )M||u_p V8v'VV
`T
,ޟM&ɰ(QKA
.APZm"!Fpx~F*
Mfyr==.*	l4F<_}ߟksLKΏC5C}_@CmEhz4x	:"ThsU0Ag~aK#|zVǤZL'Pcjvo$h9Hm2.:{/qzY3l@SM=v(eho.Y[V zU9@P[v&~@?04\:oi;O!uB_QZ/u(.(
#f#ҵ	 K
?3ZY43je9\L
k˷(@)N貘>Tk~$"ꥸ i#2ZyXdbmj<~|Ji-c8^_gNK['~7w>v<F};Y@(0.X, 
Y%/Cƀ lm3gOM / /: Ũ	}f;dSox-l/( Uӑ+g_hG-_Y=ݡ['b<	+y4'AY/oJZ}Jns~ɇ(.=oniA8ʟVCMФ5Ԑǁ%pɆĻziHVcMBX6"#Bs(KXP*xm$ҙ&ݝʯ>2 pMR(yF?_T.+ϰ[lju0`!& ycp=^%j}]ڱ7U*ZS VG?b
R<۴<1XORArp}:`:
rdZ줕<ju(Ǜ`߬AN2@IP"Q]^2|ãk6!fC[J{Ɩ[ɽW v춥vl]e-@AuiӹwԻyBmӂ6hЀf:+,+neW.O <M`U=I;΂dRǷ,``EodGCj|VuEs'ߍF 04i$^p㩶ϋ
g6qLά$O *z:P;\k<NNx4NCF{eUu"k2amxq;'$GՔ/Mr6
]촒x
x=_vl(hjճnMR-WT#0:`j_L(Ҏγ=MߠnZ.]?>E|dtMe1n6vjps[d-z' Ƕ~+XkƗw`	E~&9Uxw{!L;ǅ6@=F.R#o&QyfQڢߣ4!ZuGw7ӠFzϼ+cyGE9&e4XX%D:A
`>|:<綠@
+
xlxxHw>lZCKI3B`
_5g&LOlX!
j7c	z쫐	G
cHy	\-x~f`<?hzNX
(zM贍!.5YN팩Yˬ7@In]Oq>:Gz2_ۗ<lEZf憚;yX]*0rTgawva4C
l;ÿpQrЮ&:x?LuLe[D/?ު*;NV`<fT\:2)yiQ|zӏ?j֚AZԧPP*Y'Fk<jq7Qdgh1t7O@CpYU붌l/DibamT$T*Iq2/<	VTǤG<W3^jJh
k ;hOo,3Oz_& qn"ZϲGuf
fOV6_i5ibgKEsy(aTak'ԝdok l>+~űoIWT?gk4s&ʩ]L>C?04ގ!q(G#tY(1ԡyilA-L:O=Q>PugL4YG+5@п5xAK1;БjOX7B sn?]t\{в^bΐ?*S] <w	T&
m7VӐ''#@
σ(+o*`WdMW}Xhp
2znuG3RXyX}HT6> u;e=o6XROMCX1M*h:哇"13MP	~gGi*K
ִ 5թ0>koYc@Jn>)48
eBZf6n?hˢ~yϔ*6:$۷ڰG2O~ i  `JthCqpt'/Smt!sS,"__^-_s*<MMN2tU*QoLmU/1l0(\L$d&Uf7啎NP6e}ܦS_rgJc4A6ƠcG;l<Bs~%ZgίA@7mL3cŧY=ξE~܇GQh?u@^ *Cg8V{{ރC	ڪ4\=,*5~<'#Z:_Sz#>ǂpYҢ0#U=Gbzٙ|Fg		^m:i*pjethSNA_C[R.h*wI|<U$x5ꭕfJ~s	Xqu(S&
c n~d
K*2"Of1M`qjDfp[p=tKid}//WV͎՞_~
`%eT;$]h0mK)g/Gv^Sf h3/ xs޳x:|ubw4U$K5x6ItB"z҂cJ_ш0*x޵=w@*zԟl̘c6UyB ?GmSn|qj`X/_!<=~J'!8'4\ӧ1Rfaj70_f21Rڳbi:ŝF|Jh:@=y y%f~ݨ0-R~,J&a͠
Vk^,Z,ݽ?Ozś&4{&5@o^L[vphJX8d7p(f#(E
Gwv3L0ou=
G9_TS>Ӆհx?ǫ"ɶ-pnjH-K99(.MeЋF>WxGB٦Z6TD~YnVM}l`+];ӀAvyU]ޓ8aqJtkR}|@!?|>YjF]B8ig~J0NMz'=ʓkݎbBWO3{^1IK-RC(~=uX'j[T>7/C<M,3>oRE2IlK?nH?۞H3(~WzjNsh皇r､oRfqP'"6%~śD']y(=:o
QIB4U
`1Pr@}_hAhf@Zg|)KQĚyns?6/->OАVq2֨gQ99v<T
gSj'=e?
n^{$'WYkPF7lLAʳxJ?uԭ/5ʫ#ܺaI'$LnԏzT@n5GrQlvxx
{XlƨLekڢcԉ~Ժ˲L~	/QO<C	;}ӘMVW9|+LA<j*&N^KЭǽ?0yϥS'x
iP`~$2{4>R\um:!k䰈>^¥NĽ17HlY`C)""T;4wMmc׉,
{PڪFfIѹ.vmύէ]pi=Ɛ:`;1 vۖVb4jmtLͫgQLXhc~g m6w[vZC&q}!&]_!DzldZ*7wU(O2.ߥjY?S),{AWѠqbJh=<
4{tq?[rҝЀY1;YA/
A_c1Fq²P*'_?[U-w椋ihc(43<lW\H{NOxRw~{-9<PV,s@i2e=nܤLi]l+0;PI7{Tbz	 gA7#7lݔuyBEdCͩja'im$Uu7m7cSEdQȟl]_~YABl]Nt*1~"e9jMM͏~[w4_V4U1Kh{<ѷhkU#@5LsWаlZV?aTj.݆ ?sh%S|5cT1Dzm$mEZjD,
'^0Kc${ӽPUV6 ;KCguk&߃oȨǚ{͑v&&<*,=ZܫGvTSq#Xni\/KJ^]<bͅj)aiԠg=+ÌC		4ޞB֙-F{iSyZc^o=ZLZq~Z5e5H{%=Ym$!9v]7>G2}3Lpn2+LEF.@ddʌs-M}b<,i4e?zM)'^>.cʢž0}b GP82=ucS3=
ʲN
(*/vcYMMѥ[59J{R
 I9H0;:^Kn92^33ku(}{j<'
tYѯ;jL"tVcɱR0eSEv,"F|00!a
,i@_>4*3Y{w#`T5NS/3,POkbS6^:/_u<:R	p]}2MQ3FOY9Ri*ېEI5'lzOۡgX$[)d
F4R8;ٗbKU>Y8s3?8lrvE|C*,n<Moٳ?,۸?otA³5~!8Mkݒkz*&mPWɤ᛾^i#]+?Dy+[[ɔ88|uqa t2)Zx9u
|L:,
'xkM 0wlˮ%يl@@  -N"/qu,)J(W=g"9=;:S"hwG/7^ |&ᏚҮv#GgZ0Bx5E}B
謹cj[yuo3L^LŉZ?2ĲWlp3hgS9x\ NQ1ߜ9\+'aqW	B<O00GErlu#ϕ4ybP(h[=8)fi@s1rFߙ
ξzqk׼lThbzs S{/,\Ca Y5{y] U8&͆HvԵUJ
E$MB:SM\Xx1@[.	h#!S$:EҲ"0;yj*t
c]f]#s|K9!>ZƼ8[85	-2Ź+vN^ü^9>	
_[l$PCXg:JuȉN^{Ǌ\NǑ-hԴXSv4A-`νr*N9D<VEP.H7p߭ґ_gRPr/&?QchjnMRLE9 	{g$nյz#*Y^']0Y	mon^ߪJ̴N\%iY:
FϢu50,NоE*=:K|LmhiA~Gf+ =6PW
N[[N >0)2R<Q}*KΎ#|!R_L\;x~;ȭ(7}C8Wqp	P(aPl3V\rnX}J{Fm7YIdI^֣2Pe#ri&8*CW{~=C:g\2_Ұ#UO/{uҫr'P]e:ZNc}hs
*8
.M {Jkw숰R^UwdaC:M/i (pūQmW3V+9nUg~b:wkg~ifcc)WD!eh; ^`X#p߿%3m'TcVL\=h_zAdSq}K<wmE#&TPKSus153 %(WW'
ꋡ-t;e8A׉Cup!{}ME҃4h\W_@s.rxi;"ч
C{el+(]:-+dZqKNG=Xݭ^&f~Mp|(˩KIuhq9UX>'$݋pjw_55pa^sE۞ >\PK6]Yh,KW&{P
*'$8O&n~cPrj_JꭞrQrϞj<(5`opURQ*06@sggw r]擐{dmGDQnB:;^T[:#E (H<ZNz\!td(d]}@!헧<SKv6`7kZl-a8u+J/M栀.ITpH՞\];G:6{.-Q!9IghuԸk$꼃brvսJ"Juܪ&GNEMܢ^"s;@D	yQ_I%O>TՇK|,AqZV0;w"0 +mNRV%lR8|;w,Ǉ']D&8Uﭙaׂ[;bmWw`ļ¬k9Px_u&C}B#$ҥpt!gu4̦^ u^-j/d.R	ѵ$KΑG3k[iܓo02i`ȇ  VJ8)_WQqiKw])mLw{A/BמrØըgn3q쀊18sT$nU`op3㡳NyF ;
FhRm`:^K
BSOK!eƠ7[DLSnDvUS~9IH~;7HyT<ψ}\_z;0V9nݼLlڢ]4}Zo$v' B>"P3C$"|q&ķ֦ܹOZ|9Hk
bIm!@ﵾEqׯ$@nr3_Kޣȟ˒(zeRU&0tp{auM2PsTS%fr1EQCܶUq)!ށ|k=kSB8;@dxw/[6iűFY~=p7N.c{&x!6A5m
Z?FRյK[BK"Է!CIQ+wbqn;>6-"htIsN:q1(AB!qz
&Ƒnd5ܭ]j˯v2tP.,7R[ Su?Nx<= ]݁UI?1ꮂeoVᅩtvrS檪gobG]@%h<A
k+@,PRK^q>vV镳tȍw#.>S["$`)7]rS%NJ!I"0
tNV2yhv6F0!_F:;:^8RPwu"N6vUBίf  
' %H{~9Lk l
lqSHYaZ]N˷Ț1|7aJr2x9qMëu=A>뫜fs֌y%9 ٕYfE|H.[o)彇
Ͽ9g κ= 6HJ\0":<MfCI'kEU@)^Dq3.#?eHLwߞ-W+C^rJ@u-x]NbKtCbߐ>z\8
NP1hhSQO034e8Gqz~Ze?	 Y2"uxJp82m^+wBY?(b^W}%у9΀Z!\'q( >u7N3[~?ĲQ*9Ys1xzrs8R
4VF9VzU_5^˧rR/g!)-5_EuFemǰ^fq]܆tRq=2WDyx]>:);Efrk9\MW)M	
Uڻ:.MS:Bzzp	rj]7\T}_ym})c!DG`ޚ"(
YqV3릁UGo͕گ#jAo}Μa}(O&'ЫYrۓGPt_꿹贲;2`usDjSttlc'2 ߚ*/z}+9_vuzu3 x($PЊΩq*^9\'}urHUt<9>3T-5) {ס`$uݨ|"@3f&
YϤ^!v^ETҦ֚*HỂpqĊq.rӖEKiJґ=(~H'	UCioli_Fx5QѮ^Qq+Y4FwgR5ֲhrM{;QɅKHx^OP)V9\^-~0o1AFPs$-0W}T:o٫@>T`YZN]AT3R>|[R}H^AfkDL|JN5G>`:L3/_ON䍑
jA&hyȀgAL'p/W>+z$ѣ[HQrBh$DN/|&xT<]*ł9ۜ?NCL:]W=j>~r zY69nq$-w[S_mϱ$L2/
%P[WwXU%5 $ZL>Jw}k1ݴSφUJpesDc.RCÿ[,T\x&.lQԽDF%(i#߮i-Fk&nI\QK{p5yȷvFlDo{&Vb]?:piqGrG+U C-&~5X>>U=ׂ(pH#ePZ[Mu_J5tGA rF\ܪ]dU{p%?u<ck&uMDUࣚMⰄ?+ݺBsѩ	B@|{J0}`&:!8>9=X]5ACijdf{ KX 8vo.^tWߺ!.$x@#>VUGQ	=7ۺ䁙UWv't	Jlwߋ<G,Bc~DT},s*d2sU|~wchz[ȫki,	C'e=V 'sfVdWzjzݪ2a78(PRrhGRС2=b?R34#C(W\gG<Y8VKi?!|%oH4~Σj:SzJ%p X0idIJ6({vէpd/9-y^?Wנ^ŕogDų[6b
\VUBj	_{`8;Clah*Ӟouq\CM߮&!!00M"|";;lx(vuޕ97 [^j4\DzjJ
f%9gQW%x *VGlV&&yv!<Ek2yYˑ3>Y3]EJKp(u|U5"jg
9;$Bzwwk;|r2W@Լq9י\`g#1YkSו+_TߍOd:DG:
"A5IӲ|X$J䷸H"s &o_bHlH@A4#?ԙې|lˁ2@%ρFPlHLbѕ5T!.rJ+.ENb=':@huޤSCˮ@[ gRe]G7X/t*a#&I5(D˦bAUӢOIto~xI4\3 a8ocN.(Ee?=hXW]96#k\,r+8Uz>5O%
޷;aۂgsjXx]NB8Y=HaP=VˊdJ9lϾ9tG[-!\ VxZ>Qs
q.UʥG:-Wꏷg	g\Cy
LA2u?'1Ei-7o_M88X*=t!TҬYss:U
r\_n|Nze=`ӌƁٻ-=µ$wn &G^$6_8%3SaCiNW\ȗw~;%!,](nGtǦ@]A qE;H=P]98=Wnioŀ"BlL?\A3z7A߯-G,F
x=<gZ?UW-SWOLv}4V+%Ow)<3uJF~
mYY@ !.4<Zpgߞ8(/+2[_ @ёTە.)v<r81cۭ՘VrUDhCZ+2]Α|5(S|\U9J-n۔S 
[ɿRIaxH	?pġm-(NB
}#ӏZ|+fHM\<T봩;/ZxzGxDp[pAB"MÁE eڙ~dv("96.8~A9'Ұ]JB㟥É~@
CU4AG'gX\Yʂd,ɚxF3_.XU͍_9FA͙+B%
j#yxe>jPߕ0U=;v~תѓu954u*WkfPhwȐmcPbk]lw#>`՚CM۳xjBnjW^P-VG&}s*߯3P$gQL/|kB`.V(צ4ĥE#Yڮ\9I=Ҥ	6yVu;*)}f:K|RLz..u:>2ݭŏG)^$0	Uݭq@$[pXWXeui*`9իKsYdi$W#WJ@>zɆ- ] {BEV]#Qċo~]rHLnK\a/ ',J!l}PA٪N8׍E/Aݐ0GtQ0ҵ u9o)`NzzTĿ~<[ x{uD-3?zL'Vƚup*DEmU:-_r̹8-/ű|7 mmu2c[ήg>#SQOϤ-6αh)
xיxK)P̙T&m#tNI9g!&.g^6Z-qp9]	G2?'xI-M),rwYLX0)4D[=l==C>=Bh>E;rb~mDܝOǂ3&9#.U^o0㥷-IcZ
'}4=xOu&MR&HeZȷzPP$\|
"eA9٧/<@.P8" O~^P5'4i59QPZyp8I7S[HMiW
,V.ydU,*8Ei^՟6u8%|$7IM 8:sϽר?,ະ薛2g'=쮫)~۪u~Ap h@*ESt258c%{
|Bkת8K|G6`Lƴn@	$M"?HMZ=[W
PbW<T;ez#|Z)L^MNڍŜ2	wa9
#Qz_N.|05P	T2/ܤl5Kļ
&W=8^N O77G@i{T GI!Yzg DܝKǥsz7۳GJ?Iؚ(`yu @Szok`W{,xזJY&^C&4-lQpuWJgzy	\BXN|]iZ#h9+u{r~Zt;=A #i:*
κ["E+ziR<U@>
Pi?v:&,zwsMS|UH.8nMj )߆ԽJ}ȳYmA-AHv8x-7=ԣ?kFwBT 4tgpGoz߱~.}Ex H.#t|9 Ccvs9h^r{U<pJSo(Yz5A>,T# L~ HJ!>k_}9/Q
o5 kmV;v.0}Q8iw)xP/QqupuzauqݒǜY|DV,0
B\S[M*>eůl}mOjrޚK#̶S0igbPG hVT?D[rǴC_:{LMhȣNГYNJ(;nOc  N~;h<`g৚j($n-B:qgVDBrlq:= o_rug:^jAF'
s)'Hs'̪-3t=]ztzOehnN>'Q'29WKL%({KQy&f\n Ut>=jvdfE~;42Iݍ`O8|oR&UWTqFm\aGܟ~Idt:27*q
jO.N6P4V0
0x=EZ:~`o3ߧQVJ%EI<[6Cg+բ}q~YDm\nݼtjtcPhU}nܘZžWQջ@,_[@͡)v@,<Lo9]ՄI:^pS\Ks`\ dՎS,8rf۾^@)%X Ƶ<O[zK'ɱY[k
|sFyƵO&S{W\ZZym+n(xkd>RRqkT˥j랑x6~{|	ksE68T0b$b]<
kwk~G'
@OԦ\=+xN
8L:ᔛP櫇62BuoXNnv/K]mhanrָ6RA҃{pR.ua\2}	][`~;ނbuGz݃F h fqGweS].|n4RH+;z8owp3Ǽ.u?aBul(L7̹gC-8Rlq7t8H]̙+v7EztnR>p䱴rM
f=#ئ=JCT<@ N藤DbPCa|:JV]ʙ{RGWy>bjC
#JX"+uP\;:þĠhNfަ!ԧwkT5u]Yޡlg,"	.Zz#*=cW(*tMG
b+<:^gGF/BJ$XlZ٥(*wR&72(|guubU6wIkzl /Fs,Rѣ9ElJu鄑6N3l#=aoxdy'nm}kvvii'gUN>Ւ5Y92 LZ,6smj#u)2篩WqUӴj!( *bQ!N*IHS*.`k~i fVk*Apb hBMO@њ8@AVY@D~#-Ur=JO8Ƨ@%_ӎj,һ
u529HW%W!d174|Y#V ōS岌Rv9NZ,i"ys$7sJ#{ ]x?i_4SoP;SI$`7%i<G`dRӵp-kݒB_	tNw`%gD#,GpG7޼.?\KuwϧO$+|YаE[LG_pUGN~*/YGS%PG^;%AťPh;ʓ2
8-$]F
41<M)3<On2=P~F&608{)j3DeZOתD2}[O4xmBEtPW3T'88C7w#9#`~"FdwX~>FX4 [Zm.Qj?<Q3j^6f!sph,=:9Nex8jRSi~[zB]Y
ibv<Z?|E#dOu/tKT
&S4n&͟yaW7 y;9JSYg3暋RuP,4cERǨ:"p\~1Y%{Ew4%Z-ܪ$ƃ*@lCS>q&{
?=Z:Z0ĦX,
TX7/aAokt$@ю\W}ov4j~zEfK\Oc>qNlzƶ9f P:#GnuɳZʖ2^iQ|)qSw'M^^u7[%;pO)$4xgucVmlZur3ӽ/q@_ݤ1+RIȭ.HE?`IhxFǟKXݱN$OH`,¢Pn?HH'ިK	an-+\[YYY0W&ҠU'+4NډBD){)8RlZ
Ťi۷G;>EÝ.gKpMjJGm53d h>]|{Ar.s8us
/x+c+Q|dwmt	J\CU\v(7Ȓ	3	cGUa.P']1<J[eOi ٔgu'bg.eq@TRqk~+t&p<&ZL|Ep[	LN`4mx9PV=߭Gl"3Rj T(%ʴz8g_	ĭ$M\qa+[9W4:A5z:BL~T4(ju@_9d7[#	C(ChJRW!rp+
sUO:n
{LAA]h泌
P'"xpɷuYaP&R~osnŎ6DiO5rTj2١l!Ӵ Mݽhީgn~xUE  &=;2z콮W^TT.bqFҞ{nNw:=vk
ns*o.MI*o:CsquQ;ÈAH,P
蚢_TOH1:TBGU>]Tar$o7aF{iRaDj#_
~0uG_u(	"G?rkh8\ɂi(ǆ7Uj 6~NUƭpwxp/ڤg|]IFط_vbڳD:zzUbcAOZhVTw&lj$(ѓ#7<}3#ͧW|KݏR77Sv^m0WEӭ2/ޒMHN7ߖj=q,wM<@G璭6 -U|QU7O:;¼c n/my@;i%-J.J=$ /g~dn[z4~\\ıQV^Bs+	֡,>{lj,QR嗣lǊ~uV=uruP+V]$'p'\{'WԎfȣ	qSw @͹|SX a*k9UUڊ/
*0AKVi`0()IAlDw+]WH
_8
ޭ81h-?4l`]W;Ql!Z4=օ 4lBT> i1]M/-ÇenPpG	N嬢MB)#9Cer)x/y
}SVwwm^肠V5lHǆӱn:}{mN0ޠE~8o**RyAm@nY˙ujRy
K}L;G#W
&~GyqփI,p@.>xY	>֜<i[0>N2씌r4u
*Md$W6wӑZ-f	nXi5ㆽ٪=pT:ZtקE	7=n~2n'
#JpM(.
&]s,e6u>{ŌmF>n% o \s(jiNeuDʭ<HmR)*%L6\OO
T8&t@wA#
&m~E9oɚ6UIMH$5Z6nA<?~r
8
.}_a\vd\vs׿r<ՁCU38atb~)D<-V0*Fzs'3*ؙ\"vj
q'P?ֆ)ھ34WPA(pͫh.
BSFҠE0e
I{ۉf/͎;`B=U}6[`HU~w͡{W|YiW-<Ԩ]
_0 + *2Y^`r7Slۤ~fCCDj`c2xS$Zu=lu=\+I`}E7c@#_?/O;<wP^6W:ިQ*Z"94UHʨ?ܜ\Ae	֕].!b(i84w!sAtҋsXyrጮ ,.Rƹ\?s @J571
nd%tgۢ>)`V8gٿ'y10* 8G:郧5\ӊ^+zρoJL&!撌6 xJ2EOL'76]zCQӿY3w؝!{m6MCڞ. zqMG
+~
Ft<m\\}&߅p=Ss9/ZG_*/Ys[]	^TBN
Wgx$A(q"\5#\B{d&pXe2뀞k4Yar%9 +=LjnW%<k!T^ݷOȃYfoJ!ˇ@Z::'k֑烲H0Ou=lrW>hUgs67}']\|=dYf2TX|Zn>Zw7hPb1;ge/n;$7G4V%%Z5A(! 2t_YE3pzNQ!,Jj> :c#eV4n<ݪ|Og?Z~@,;	ǥ=e-Z.;C^9[w9_kjAWb]=JkKwuL\ӳZLxJW&#lɗƿNȠW0g+OIS9T%!	2Ds&c-	
9Pn}0懸xgIHxҗ"GՊUi{y& 9rn8<7kV:ZWnAHq險VgZ[Jh],O,@
'\Bj[Ko7<C;?=2^R7C"uZ8Fğ5#~5q!f&vxNC.!&ẃHǥB%I!fiu E>v:~ǬRKjvtO-Iuбq,[t^NG*IO?Ԭ'-&48`` Pu

/=RQ]WYX"EΆ8^]
^a6+?7S*VU{%jwW>T|24Y,S]aI.┅tDE6
*BT\t;],s>^^luV[lodh}{Iw,9)mrԼEr
SGtw r ~;d!cP*.q_Q|޺z~ȣѬM']2
`I-͉V| P1Mnm` q?Cd@KmruaĪklc3B{W&p_e<uM<>\nwDEy^\qV)ԌpOHVm^kWyױy֗뵧d5^'
rJJlSa4a2B͙0,^ן-CAt>q:Uv_4,v{OrE.г}c&:%YaEA.]Yk|d}FI'%v$HG.q.IZa/,jO"6q(NK+wq6AݝG%Nڠ鰬V
`"9R7BI1K
r[ilrIU~ > C|l4TKt׀2_uqoHG=w2֦:Dur)1#<YunИSj>)Aoe%Vc6Vz;P4ۤqy5Rc$XꜪ"ɖ&|NRyQA)[Nz
&wT`u4u4 vSU",TURq]1hqPdPM]ȩn6O3Z`vE(K9l]k:jIvvK`
2s]yE5>_jYU1+́,v'VNMy.LWV<:2Pχ&_H\ /8}VͩAGU
($k;T2098đQ7.'ҤVZ%f 4ەny_=
S9\gRm?f*ݜz2 Z 5ױ~`[=/ cJ9&Sv]4e=q/lWYΔV-<q(Mn5D1{X"ڡSJ+RSp/5RHA9U[5fjz:sFׁUtxֺd{^P@8p<GIo{#/ 'h01:Ƥ\NAҸ6:9zف }גos4­7q:
ܚBV_$5J.<\ 9Qj/hHdT)qH@0tR+vXzTx|>fg?[y顙:~z@w[Rе>7T	"ަE\ʑ<6o{
6uqZNs)خ}- {Q>R4)/c@9ôņ~['dŻhwqg&q)^iV#Qtt(grb!sAv#Kb
aߺ旧p\Y^".s629襔U0+Eңj5=M=Y#SϩNP;AZ/̺}*ʵ>ՙ볟-] UW=ڝ*?]8'xԖ{B[6E}ҧõFᙄP$*sYN^wL*XYIZ#'#Rmzbi`^u-j <勯4(s^SA H?n/X(5@Bz5Zc'w.i=Z(ġS)Azt
k]	r;N\ h0vL<:pi\VJS`/z}?uBuvW(4^q\ҐO'rm$r/I=/R?oXipV	.**?tVu$SQn:D._?~ysOvG;P5
ک4$lRGv^XOyXyIRD%bLɼ2gH*<d!Qרm*k~?-鉰3!i-u~\`:/WII)-V44kX]_c:x6U|@R;X*DtAJV[̬?MK^\u\X{+>7U:J
zY=sW9&aSYqB17lNS*9Ԋ!%>%1b&*)W~p&39^g6&vc ത^J(67zjs!a_Yor=Ie9
9Ux ӫ0<Jx\^
t{2jA{-cKg:jTtyIܟΣS 4,0%viv.sԓ/K
+Vm4k֢j+B(6Ak1>N%<yV:9<Ӝx@׮DReL=]A=:[	
ƥTƱM1M_d~yhSjÅyHt

r'F3<AΣ>޺~D_>rr{=hdb/z,bMou\Sj}g7{HkKj"{6.R;/27. ;Crɩ#~ڍouft)C2ڔ{;XGTa=$'n| NB9uFQiۺ>GS:ruF,xkBQ'1Jz8\ҜM*>J.-8
T _+̹$~SDT^̮mWx[uCA(/wݔ-^dr">\pu1E
[jb0ݷF4
 0KfJk-*@r%lU׮ⰳz01iđZmEY'c9pKK>VZDK㤿<͕(8p-9Kr`9ADg{ѣhsJػb<t`#M֞z@-RP^Шe]?bKsp^*KkYpZᗫ7EyouC"B67zs'rIT-\+"lXGj]FFA:3F'*G1
yκe'*+WO+YnV(}wMA;CK:q;~=:a	\U~G$T`JS"5l?:Q}]7T&t@²Ƨm_A6lq;ߑ4oUk['BVh1}o9UD­[u<P
-YQ;bn)769&::BKyoG]tO3qZ/~*=ʜ#Ko:_`+8y}4BϊF(xvA7EJ47S9tX4#xcŧ굋[} 	j&ܟ˶4ؾ~Hv`ݤ۪G8x
-Q'wŁoΚRڃ0dn
b<\9>95P;*.|o+_pu9vSS	dQL9ܟKh1|8rb=YvZGTSp""Nm59YU/Ҷ ?WMFY'+?ͮB6p,p)Gh+(9 wR>3Z|\Hfap56Bt@igܝTy%K3vZ^wO}<ƛ#:1q a[[`n7גعpxJE]/N:A8Le29HwuTácF#}/VBp-JD-Jk5ǒȧZD:%qXdYUP4tUDL	zߌf)ZqvEԏ,h(zTe^\/g-XnСׁʿz̢0`VHHָV*Df0 +h>o W֚`Cd	TԬY Р9ق: KP[rQqgbE^g'Z&,tP0FsH&l.j!(9Ԅ{E.t%s'p[5h䋋/!}=D]:ֹJ6!iV&uE#e0Hxz<@Jф:hZ :\Mĝ80=E+K|."t Oxe+&k.,UN]tɼI83Y+lJ\XL{݁g2Tiƪ˱Թ,.
	]3w=NkEh?~Ro">[xtID]
RlfT;o)Cy}n'tb>5aEH0>Һ[AV(`98O0Ц"bsyU7ڗ˫i N~yWU;>m̢6>B]$+Vdq/zUS&84o:8MV4g8uĦyL*.;2d,ΥH.d9֭Zg bŅr38<ϛ#u&4.ťQg=lk=GX BBe\z<#% WspF/NrG,\U'?]C,ɯ]՞O:ɺWF;(aqR;%+A|TI8c<\8s"@̫
-ʞ)+/ArJי5Mp[a#
jZwy:;NaBQЙE˧THa[6(u#N^FWk.mA8c2D|{Ne
lh'V( ` xt$17^@,z:*&yK`cp8l~d2xVyraZP>QMrvIS*XjVz<Zd;o5lW6#%C(ޫ˥_Bm6 ITzt+7[~ ;{LJ{P]"Np	,GEw$e&V9_HA!Hw+T>,70|B4\9%<xsp>UA5cvG
ÙcmIAK:K5G@)1Ө%?HȻ3=Zת.s~yݡ*)yVI8nL9yr//9˒K?OS\E>]R6	 V^9yy/-4 Wu~b0T|i\}<<J.sBHlT­ _gۗ-BHul͝j`\iVM]V@a,FB	8(|XOW~Uk3KphqNH=HmѢ<W"8tD[XzGNv"4vҚ΂`D,SNc_W"nƧY.ښc7%{/(ñ>;]z9Dv/;<5RB͝vAR/
^QAc~aJYuƖڷ
t~`IR忴
|~3h; ~c:C$PN/<\nlg,yi f,pYIOTI;a0u~1rôڱ+᪃S诩xQ5Wx9鮅%c=QVU(Gn7gU ˫0Qjf-Kݥ]T!QRY7Yw8}UG̉TCv\6u@	\VE4N|R"q: +5l>Q,(d`i)b:Uߊh
l,^e%_5=ħw>sU,GaᏣ}|44p !\rPJD09CÕca[_{a<73n(
%C4]L>؊@^$ %x)OQrox	{J_AF\$~F:9Ē:l"Jqr ĳ:}s z_B߭wt]
b&6.QMP_Ss0L!o.|y?PO*=@q.))9}Դ)vy q-=6uNLHiM^dZFB|s0ݏŶM%z}_Zo-8Tݬ&XIVz;b,]
2N{VfCΪ5ڧ|oeq,>˶zjN<QK5{OVƧ/KKvr+{XpP^x|a
{s'\U!Q%?I=uN
LI]IK6QwCDK1u)|?jO?Wd[/Pp8OQK\\a'p9=8={G	*|6i$c@M+:cPU4(DbCk}t3 5!Jx Xka
"弫)WډC:Ty6=t]ED.ŢneWmWlu
}XV6(o0y꣞93_gEE
I [Q7
UIowǁ.f!>@I߇+8aWKt0|I}ˬ!/('t'-TTYuZu-;zNEiMަd>QgA]
B}S{n'wQ&PcPx6kǃj]lrty}Cc{Crg	"%K͖*rXMB{ '"R:T9~HI]
p:Pyw!YH
X.Ȥ}PKc+~}E%}+|MpމZ0U V`ZKGy	 ;x=V:&hgBr_>U$Bg"ֵYƇ#p|Nr]y0 5q
_R-*`PACb5	MMl驀;J)vvwHSa7d$g*Pb(|
gHNU*tZ  9!tV'zvfoIDF&<=<?,HB(poE\x%$kŀrچ\>FS[*<$qjOKnopuƤ^'Ukq)xf9'WgUTH)-Ս(J̹ o역LAc23~w%NDnqѢ!wtZ .[>TkÎ?lXKs[qu67(3Zx\95,p_/gcM,dybD4b؛ŀcyTc3zK1eh,D#iPxV*hZEx"{;W7TI{K\FX<tVAzrgək
{qSNt.ɇZFt)l6f(Tہ>08@yЯ|Y?8YW&[ )I ǸlrWIbALQV[HbW:(`mshހ{i/;| <1'v5ݲ< }:rn
)4>;Sj:^QUn3.ZUvL0=p1F_M 7DSwCoEԫ:	Oǵn)F(s^j<=~zT1h@sy->i˽	/Xz"*v@c+s\x1>turtaDolx\jҗVz`O:]E=]r 3M4x\|3ʖ(SD58W?MꚎ?"?L(~5Pttuh)`O?_1ZUmku]Z-r;2jCoII94geB[jVYBJ7~2X۹90j<ToԒdZzExPd"
 LҒv;LE .vKTAs8``-է|S8*Y֯`<2CHTer 8
y!+)]SԬp6H$2,Wlb 
|e*.TW@f 9
T"Tkp9C=ʥUV tQVX8@D^Y˽Me/][U4R_Zi<<9%.n,ܚlźVx ]cc$wh ]ޭgj`wJ%A7@]E:%6m*=l%NԯA]:A^W/5h02Ǳf40BnU?ֿeUK	siGxy7tk;ߤ˭2Ѧĵlf~SWCvR, m';DMf9	~)vnI μ*/HثF<%L udeA6 "Їz""Yi
uEAJׅ
Y^Hix[3 &I*5qoFԡHHB}Ut :CӖ YoOI*ˉ6@*Nt+8XRr_2o[<y sD@Ls&sW+&ua>A辻X5)Cљтh$.qrʯAw^vv~{*d LQiD^{NO^4OKlI!
[86a̧ϣ%, 	Ay]:g<f,n$sOBTn%Pr`KAI$sI=_`|ېȜznQZ5ѵz6`@wZqu&8$=Ij['
W4L`ڋRU6io5硎#PI 
˚MqyK'Sd03G8Sv~MRcQ>3ewQZ+$s3ܺ
0,<ϯTNc|Q>kOm6ДD)GKLwmryS*(jc NϮ
Iߖ6>yښ3;n^߽5\[}*uwM<S)`XJ(˹Oؓ
zcI}oSLzݹT.M)a>O@9DGP}pmKsS@ .H=#EzcwꛥV*M9[{	(TZURL_gǑ,DAUQ9.h^ۍS!~+NQ'SDt'R-\'	%P\6%ʟZ|EAS^M*kGr^\I[M4@snzlyyA6ϝ N`DV?:L|+Wv}[3˒W$|b^9Y]^f	 8Ejy Cj̶Y]6猒~KA;;%*/j`| 
`ga^9*ҝq	ȩh)x;p:)ߟ{=)5o<gN*jZ	5:j@h7FQs\ݍɧi6 \8Y1Gih;n~(R~|h6YU(JJTsu?TeOYv>3 f&TX[*ʢPj,V߆RtZ"np
٧;䨺U@")UƘ4%b
tz>Iq=(/s|8w;NqLrL<f^𣏕RyF%r[$~1༦^p6?xҡ4EԌ'׸:7)#r@..WSM-)T@T,.vWTH`6%H7MfT|}zkik<~l2vEB	m+$q]xm,\~*^dww:EqRs;\4祁-?4N+f.{
21wS#˷peU8.q8AŠԂQ7܌X*
=4R5Q^ۼJ6}h.y;F
+dOazB8r^K&Ц]<}7UgB5p|$iڶ&H_j:N}v&}j-lo=+he([$4`|	e=	O-fh_pRb!nm=Y"R,49Bìnc};ՠEy@T~K85q<E46>
*܁q0t/pH 0Ԧ"X`ߍh?sderdn#U8R܎;|ȩLYVJ#3K韋m%3˩MvmY[92IM~CO :ܷ@
b4<i`7(X6"n^n >s$]i`[C2˫xšH_=N(JE#:wB+e
pywon5csJs{mM_HꞋkOx3|>
NۄɷnK՝?V}w)S,<_M)6OZv5^"n@uC&/S|ɮl_(E§kྟvN3K(\J}Na ,\C:ԋ{dxh[NvlH.b~	U!zu ddR&"06
lNAT
urw
V)	s߭C#>{bLd1~g1F'A{{DGz~vUC@(!H,IgQBkW˩t=i! xn-TTbpOBZs˴tʂ%vRN|껏x;QKoWL^`, uݛ7;M?rLkk
VuP$G	s<n7-eXos}CK"Tl>*(G0ru;$ЍIZFr"
ŭnfnvL4啲u{M]r[5%l$wR'g&Ͱg!+\79:4۷x;= _g+Q'?wڭ9O`aZڄt\UOFʼԝ9}o|J`DF
G@# M rY)x΍ȩD%A(6j9{,qX$E%TtEQzAC@u|HԔ;zF-_'ms۸<:(z3b؋inmVNN"Am|c3BFHϗCGǖK>@amhBߔ2[W]5Uū^d +摟YǒWuiN2/[&Ї3קmwQ8D	Qgy^\eƈcqˢ@mddDvCe8P?'E'Dieaph)U!b_aZoކ!@z*D/.1grPȆYa*Ue̲xYRwLY]8bi V2T%ϛw˦3~]Em9c's949Wqz>
μ)5-UkxO/y:۽;>bf9*g*\U|C'5j 	>]d
Dp((Ipx1gᷙ/_5V8DY>ytAyTf_(Tq Mv68}
-
r`\)}´<֥HQlptI9^v0*X</{ٜG0,|ԙ+'9p`- 7֥wA*q$	V[YIoQ/ߺٝ^߮mY,RWCy\_&7$BC{9)&`U \'YOB$>>TzFø\->~/WSP#ӵpv:w_Z*FbFbX$Red7Mz/<ylB+cj*;!*nE߁QNT赐~vȆO1@\gkHS &:~}XT9twC.B:n*%^+u:d*UYnkˍm~*Zy \
ڍ$ %ϴ   7:+Wpkb!RK=(.@fSf230Ƌ')ept!*PrADಟwg	xsW*nx`xڼ=qSڬ&^ 鲒rw^Rd@3`|D|;Jיf
6^ҒÉ5$A>5UV>AszKHYq 7TK@UL#O+Xc(	YdRְgI':$%qqV䤾xCR]M]VX`mҰnhg[!;%SDZOoޜ-:VYlC,LR4TSH:@pv9~N@!TY%pݲm]:QMppcn%}Hj|o]SvS8Q*lhǫjrtzt Bl^}8wC\ņ>9HzG6^&b63q[P<K^n_.qWҾU{pݾ ;.濏.0ڰ.0
ƵU
Ysf?[qK3w.GL,| #wy~ynA&6^(ģ$Pl&B<s
iۣ, B`TTy;rw_ܲQUO}jdjCWl?t@2D KJʵ3i$^\G.Kz;7Yt}G[gq,Yg }Dk2@2paԽU(WyLfBlK]o%s-ERV1IV#,;ϙ2w>ʱA,35"YvHͫD#ߟ*=Z)nV#9D{k"_Ls@&/bkb{M]&#3'$y|.;6j?ziCWqV+dΕrzPfP[z9;@Y
`kq+$]v[*`"M]3iIr_OqȂr,:*
ZeA
I=uɊ3vx>#,YO_o H
tn)g[-Z)fzɫ.9~"> JoP/e:xCלɪ:I
ͥBAyvyM3>8aBfswa܅	EE'@v|+jym7!ޫ%_vғg
<rQ]')G5?\_q'cՅ
O{ztЭ&Ġ/vxqU;QEZ~ޯ/5_-vм8wپ{" ~%rpE^N}b0V6މϭ}) te]Z<V) ˨$O ZR|˱"{׍k-8+2ɵ	
^~
 HURt* i跩U 9 {`:@IF/{[Ј
\$Vyc\Ug)MO7hY3Q.i%D{
g^pL92sG#{N
js&+mo3FhD͕*	"قi[5kyom
G,1b@fW.m /4(Fm,]P]D!Oz*y /NlG=^kĒZ3G{rHt*KKFjC骡W;5}E߸s	7S),N{-&LgI@Aj2YY,'"dCԧIPY降/ڋj@G}wj=Tu2'Kkm.PlCSɐAJ78bj2lЂףfK
~[,ɺO%
|8}6=ц7[7H<"okTc6nKuz9z.!<=aǯo!I|!Jsvv627pJ^.hXzQmvYɻׯ$U8J81+çL{G9)	:luQI9AXr5.u{jN~X_&`B1h<]"8ؗs#?zo
JщGl5S[W^E'^%ѝލ]קY:!Y&Az	U9 N%	^uP*C>vv#
)XDdףXhߵtli߂HPhir\SE}WAG̡i$W
5SѮd?߹
r{RC%Xfv/45q@س
f+cS{tj+@xR${бyzFܓTq
sQLs6GJ1ϣ^C5Q4w3|LiqϖKJ~_~usFP*Yk{%9 Θ+2D.q7S5	ȩt:ί8J
^tS$hzTqP9	zd?K7sG Qb;& 	i ~ɲQTК%6<D2IDLLڱsiI/G
mXrd[E~AqUI>{ONK!K4p:LuOqs-Iuaiϭ@C<5_^p@t4?rV1ktj|¥&	%e)(B0w	>UI@*_@1>}IdA@qOr&*sh_u) %pZi	[ѿ:40öГ{iw?;=@#.͎b͊EQTs&&) mHC
c*7acV\#<8NTrȅ=엖9Cn
tA|>/FKmPe/gYJ<qnF;}p#/!#@rz\Zp&x/j>{	ГUWsOm'*eۓKTzn{?.lF
,SsY׭jt%fu3mBGug.!k$O<?=#.{
[HNOt4R'M;`eL2gH=Y
**]fBR[ѣ8$
5TE7o. )\:]gbpYK#JjYљ2׳P{njg3BzLBZ/7w_k U4][UX]`T!p29Z:6}}*υ#v*MGlu鮡4U~jV*ɧ%
ٗV:MPQ.`pl[#QlNDV~t)B+ `Jr7[^tɎX}jC,bUUepKQBM`"t |APܦ/q.D<lw2ivs<Uu^xūY*[" a~Oƛ長(*IN7krw:R ^}:eJHbJN*_}rR?Oei}~ǂnzY+t⿎+չ+28©WY?BӐR62N(@9NStۼͬ1ډFѿȿ1m+5!A~"eo:F1,9xUeE@΀ߥqZG
MK,8Ϛb5jsdjuɞq  WA&qLS5(p#(i;"(3Gah.v_ŷze7818B"\[]?b#}0~½@<͹!ܑ>e\ʭ6QH(	b+K֤yg][%rj;Փv+8g/d4VӜ|inw|hSgM5'C)0x0e/299r\)$ۉB
j~ݝ@jaUD>H$ K7ՓVOj|^{4[_N*KFw%	n=:
΍3LwԻ݆.:)^v`DFpIWu.4lUχ5 x-*A\Zl>,=qIZ0!,~9[N_
rc:iUG뇰U"5lG#;D~hN*5K":ļ=/|1Й[X뺈xGEiπ>{1\1Ul|)B(r̳/7?j: -b Dt,ZF`kV7"gyuP/]\ 5zc1mgH+,XPg	KQ˼I*.kXDW%kOleʗ" 	q"ƚ4[궾!<3Uh5,ڨ)~m~Mf4 '"i-zFsv=qr솫 (S" 
<Uy&6W}_ǭvI:*} j3ߟFAR.J?3uBxҐΣÎ~^\nY+e{c|J-ް7]qU'H]{we0 Qt|ˬ(JRP;;NX+c@,9zye51^mKH:y^q`hg	-
z{9|@ouZuw+)J@sdad"|_B/x$?( :ײvZ) mVq<oOJ4dj?	:I6ړ_?X"pdC @i$O#?+MF}AJ@SxnVǂ3LՈ8<dqoizCx1__1~0dB%=19mubsG_Tg[\Si\L
QmI#GW	cJQ{vEܘv9
b r V387swaqtq7TPޜǍkɉ@sFc=*K<af2͊2 D
O1`6<%:9f:&'1%g9D ۳1EpGVuhh#9Yv	}n<@5N9bKVbG~[zt4vr7>~@j#l~H<4gkp z}9lE; ×p^1/'m<ٌm6YB4GmuurA4Iޝ^'fa]w5?//4qą-E
dD7@fě%!zq+"n+Bpjw)S!jwm*ߜ1ei BNH崕n_durno+ϗaK=:4{k]TI{K:tǰ8d>;Ej.~<9
ӥ.:x7X.k̞՞rFЯ|rolvxc5(%V}ЎH\<QVҊC&T].;JCFg"Atm$w.~Z)ć6?jr,;(C	P	?X&
@/qsw~|+5L0m<S3v(@(\C}kifvuEج":}4mM]|869'b$p:zJtpت\s}GpLG˵c8oYWطuǮL `9IRW{aD8ńp=~;wUD؎+~mq=[w@{v+s5CYmŠwX'ԿK'5XKHI6+lr!][=EU|&򼊕oX{UzV~%[?pJ5DhuUijH7\[
O;C{)5w4jb)[NZZG'yG]i@)ҦǮ2DE\5UC1ɏ55}|OM5(VI;`):)7uCR$}
,peWF_%YM
MБkџz>5Ȉl7aj;yTtx\H|pE ?M?_a2Lt|#נ.Yj|ǫ	L]}~'qOUaů)d_\S/y$=ޛgϥ7`<^¿@>jr)x*U_/Z+d`C1xCQ:oah?Rs
=i?ػSJe7)j?
 ԱKz%mpYʭF{~@rup3=g㕡<
=3qu.%$&WtA
KGiuЃcyDxdiu/-&8ƁIŷ/=^ɉn
tv
3NuJ䗿 Jਓu^r^com8J:`eۏlLv~ uS-0V]ӆj@Rtym^D}?h@|>䷠$v4SGr5s-\=ŇUIrWך"mhDf<vyC
-T;$R_zmsnSi%MD;&@1!QA]YttI]銫"u[Hpa}5:YܢuK #3^5{^.l!>['k(qƈL=;c5)pʑ2ő{xN>QS"w֑
jD
kGnm$L,c\HC>,AgZ((J1 ǎzֿ9[ܔU,{nC)ۖ]!̊¸@5~><bf{4Ze^>r(\1ʈO4X_.*:CV>0Դ7Lu13ki1(ӫJ=
M׶`*N4+ɯS4;``w31;{bqv26R݊uJ=` 1y {w}l]BT`:غ6EGTgoL<r.:Ffo\.v!SW؎gŌ4 2]چ{yME?WGV>ǯQ7x
.%i;)w dIg]53)$|:4&s	p)`v 끈W>c2l:[bp/7ZvݏyՐo[m&%"Bi^xrqU^ߖ@@<Yb_w/
cʞXmuoas=O6dwj1Lѫ(D#΍9 7s9>.ShCa_)>67t[.
jAcmHlv, RNR?#$:Xe8^>ϒJ]fiЏI25NnQYaKF$gc .k+5V亞*xnE&ƱDTXYR4s
v
NE`YOvnp
dU),=oIjyPnޜaΜMd	BZtb4Ɉ7$LI0a~f"rݘ%Hy+~}n(TMWįпBVhWk6-F>)z.Åj[5Avb"(b<"·Y*\-w[L+
?ͮyuJ='8MCG͢SoNc<D!UK~( 0sOPU|䴷9&~nۈs:k%{P>'0[OMtV6R_΄GY$%<*~rwIHж%mܠp¿3߼OKt>X
 z_;<%D&wn5>qNGdKSo$cmAQzUrKpRRo@Ja/<-O06}5fnf1pA^rtI$X6vRUWv$*?QEV64?8 3|>ܕV$R?OLSpϺ7O~TN!vY+V·K$$S~Cm]q	QXJn8VD^ʆԖ׃Cs$]q(#t`kXGޢZ<\ęt$^:8oˈb^%6.2#4V-@*֗bWeUݽZb H(v:Jq%ŋA9p*)
"z*%/F随tX@1n"8/V5Yfd\:vl0TÛsAuzw
ى?LLW.,&Uweb2Pc7/@Ӄ2eE(~DKsmՀw@$:ƻ>E{)L^$*nd5
iOra"m2\"D:H#KҡE9wKMwۋOH<*D"PI 	j⠅mK=YO&VSZN',+&_=qvV;&=|ARNn=\BvLG\pia}zwr$<[`hn2+llG_Cp\tMsP16dM&Om(?Q%ַ[` a^mr8*ۛQ 	7g߶o'Y[L%j/8]oX*@9y()#)AyTh2zM2$wiDId ~iOE7ۡn#h(PО3fLtGsMͫy%n\zd9V\u95^W8zm'T0j/qd#YGͶfZ,3|OaV/}r<cM)+
`Sˠx;]4&QNF6ˍm楣 ~VQPG<
nT}.tDV 9vұ[ˁ
O?u'㓖S'F[B;EzBp@Ia6|j	b 9TN6U42YbuD鋓+oUU$5N`*Ng;7)إs)'.g<~θv} x)AA^z:?{կ0<擣#@Ȫ	8Iv&9zMMo$VVQwHXu肱h[5R797(9$}'+9(N_k.yQ [877gv_8ڔѹŧ5ƾ&} H1$wu.ͷ\#/[5w!jkηK
e6<I8Z$+BU@8!xU7woQiϪԑ{E-?obmn:J]P}IrM的?#tx 
ZهH]utUG<V۵Yj*yjT9+yڄ;+ӏR:N8Dj.tZ< 5@L&/jY*1'737fyʎvpL
21gSǻ!Fx|} ɓϨpWFjY "Vw7uzmu 7Q7d *ٕ6nܑ Ae5oO*۶~ Mpuz]sΞd4iNBiͩdg9g(k?]k~h{tDGR?magT`GKNmEgDF;zVn4 o'ZC)TL+@Ipn#$IQJ!V!hXavu%</#us}Qj|QpN]}Hj@O7RbO%ڎi
Qħ0:k\*8lt ^FrͼAGU[ ,gîpw[~qLr $W팓+nOdMcr
&;ZU apv;s
v/M}ZRR2E
F";دSdLU品PE7iD'xɹ' 
;y(C39nMdlS>0i'5U'1:EpQd˥)U[gCӧq	˃ˡʒZ|~CkAp@{SST?#V<.ҟaXF

,oS<ly7j|Tj O%ՁcRE[}mX'Aa֥YDZv7XAzuf kbN:>U	~u?KAàurQ_W$i]SoEi?-0%$1/~qJs$s`pJ|<L0 Tp|8ʸjt6UC؄M~*;r^yu8 sYkZ
¯gtjW6 t	o1?<He:X	sNJn볒uC`_u*8%
(>,J~p
gUwm)i0
髪8تEsw bqD`r3U@h"4-ˣ dscV4+pPto[&}mݕB2+UG0dI s5%李Q"tM;5㢄=N]o*]ڊG!E` I 4E41<m<%k欅t4F9vNm2?Rͣ4ѡW
xWwSDUx'u%d|:Yw=;0a@?![22=7Ϥ{#m5ǍG,oG\!۾}|ꕤu;I@#AƩ\"FwQ|lds>}f.`_K8A8d
Ld1#~Q? 4 -wS/1kAo߀\*}τׅ؎qՐNy1 øJ&j=Tv(akԒu OMauLL:h2龍mUO_WDquu<[}96M&r\KJ)1NN$/?G+j"-u^ZEgYytBcPxe7_߼w/|/~-j]ȫtٺGO㱇^nK8,t{6r zp׀9ܐx~0Fr*8 tF5<9@YzgntIiGp/oV
f
_-tc5"r+hvOA"7Hscl:jf)E+Y9{;Ⱥ:?3A-mƵƟz3_8uT1ENK7K*_/^;Hs2L% !蚌 P8 [ZJuyƪ=t^{\;n)OmѾA0.OSul{N&-W*	u+lX
0Ӣoxkhv)4J|\7|OmTLW
1`Zj,8Oh)^:aϝys ~|Z%HFM܆e\%\:|ɥP*v6-
j<c
~i|:}"^G&K{اEU!5]ʥJ`꥘.{QC	j=+CQ
v^YZ~@ʍ9YD~J_pG0}ya-RȢvn:)iM
Wj`A|>b4	G\ߚ֪aۏi`}zm_Ps0l
%'tk.
^ΔF:MEPu Lj!&3E|x4m,~9Ìs}啮$RƉuՖ*w].'N.󇓣v#H}+
ԗ+MC,Ηku!^*S^Ip=`r=%ZjүƋc3̧pb5P]dt;\9	1R #<V4B`ձ$+
7@EVil-"!qՂn`+N
o7/9eEgPK	f(trn'*WNHK~3$ʩunҰpx/ݹ;=I/'IuwV"nڶQ/~a/H-a[R[%EMX6	g{|)j_ 77Y;:;%ctmfcV+b)IR]A*H8j0]Xz<ڈv5HK7KAWB>IT@ϻA6!ȻNJBVy<Fda27˿%6weJ{f/GnSzU!\C򭪒8o)o~`5Ad XDclM?`DKU=fWongjKvSIP}svw#>.mj1uUޓ*pU`O>7wGlx.V@ЉoO.R	
ϭn:y<]'w)֑@(A>
9\C_	GA(a[%6 G8lm󗞢nHģ9q:XC(HjOC alY9F\u1ۉlSE3b6D+nJOz~Y'n ߙ/;]*.])G5t_.7Q!
\Y{-8$)Ajȵ9jDI>'8DJu	}*=q\	$]W.e
SXAP[G#T;Һ
 .U{+ n-:ߍILl)R߾/IRSM}VX$;QsZZvP<Ft>Ǔ߭I"r)KxsD=$c*VioqHx<[6A_k*IxQG 8't9;ob#qJ߇iNc?tZۗK6
L @*JEZUW\.KO>J;V`"y]&:q>HG6j	w.9걔oP=7@5!˲H۵$.|5]$(!Iƙ4
,ʁ!E｜
;Ro٤'y:ezn<bJ>֒Xk84"{r%?d
dɇa#p|/Ty}?bϮI֊Wq¡Ny[tsUybJ۽WMmUUq0³Xݽac4O<Sd#>N٠зlFVt&Up2tYd#o$5i
+'@
vewx%Jc;ኗVc!/Hnu?.cC;qU?J!ث%lXt%o>x9%8CWǝWzN;o~ $fYR'vL,ybX{SXV>gb^N~
m׋B1ӫ]ϋ"uװ3ryw@>4Y\~	U%M\zΩ礄t{<}BԉK'݊O<~K
MW<}ߞKutOWRG+Χ0s[G&Z~bYWq0{{}덫ˎ(rK	E\J[/(4pTT.%V$	.)ZNÐ|>JQ;
4~m,zzٞ}RJ
ϫA`nqJu h\ŦY?avזtW$WsnڣoF#驧7ԻbKUTgAUd4VSħzHN<IМOs"+[j`X*ZW}j}Qۡ5.hSϼ5o8T4Aלx:o'	`?4gۍ ]?.:	ʏn8Zc VܻKIm8+6*V AJd#D3InxԙW󂐁hs^^vx~#[[o_?2'%ͤ좞M>'ZpAJ%h*ok@efTrĞ.W.=n]$p88/.bqj`䬤T%Zs"?g,˚:
+S;V-y˅Qp0Ǉ&5n"J~ 	igUFl3 |TT@,Ҝ
UV
藋qvxmwsaP-ο3Mai6@лv3uk`kPэ s;NJΖ+_]y37[_4N<x]*z?ITA_VYB
;c;9JR@]	L})36ӑ~[W$G,W7f9\<!4M+]kv0ýOVyZVS'z3@Iճxʬfx:zI_J45eGXJ(qІ}Mj$d2AT=c!X| ^3ӢxB/ctN3~]gF<'oprp`pP'U.z)Tcc>^( 5Aj}jvì-6mnDx*. z [殔,@&N o.N[UNν8pUywI)PǦhk.VOvŭY
.+bRs>ok
$3${KDN6dU՝mDO?k0H^JZ=yϤ_E1BRTg۴m
FK#)ѥPwH⸞_m?,%r>QZDBM`aO1-*WKЄug$H?囤dx@S~'6`AX~[nQ\o6 }EJdB|t[q 8SIiwyA}<pͻ'UՁгNknhd?bF4XIwt<20\^UsEY<ZeGFa[Ǩo[jꂭ60}ZDCZRvg"<ꛒd	F:*&%uVA̸2 6|μfHjI6XVxd3XmּOF&|3\Iw߫R<H}Tz$.]2irR)>~۔KʊW=F'?)CuDC(QSDJ('1[br<@FО[}Z%hb~3:$XT	w˳]Q|\C=ڥ.	^q%TNpAڄz4ڼEu͢T66"cKFYSdbA\qn@@QЈ[C6m~9˃fx=+(_]3'?J9[F
47x`kBjEǁYkxGyf R{U3.oLܪQX-X	HL"˙S ľƠªz)+|?Τ2)dUNgN.?'5K~?1%W
_ z->=fE{yc3h	sS_IN_өw1,N
Nzd۵>⑌NWP<y»MAAT
 v8dH(vX]Eg^[^cj\Gs7|iN*7LYZ^!t𛧸b&'ՒL:wk,~cdݏζ/}ۥ5ctd1-=
.NݞM|yJUGnH$RzN%+|G;\%T^,\kLjlp.(`4 !	_Pg-kŴSÀ-')S[Z0	N	wM!j$6Shz
\bű#lJI#TR>w˾"=|?g\IcCdQN~AϣwGj)B8D$T*~=<
 :펽	.HlJkT8_	tt>02=.vJG8vllkQVC<vᢸZ`Gkb!gD,?h{$ͶjjluI|k:d	۲ˍJ	?}x֏e]UBªYY_]̸r4.[4<.I}qU=f!c~\9cˊ$"*M_EH4{*'UUU
w
ﯿ>M&wܗ	Xƭy#M˯ހQG1U?8R*R ϵv;U}
.U96Lmc
9!%o툔ipitjNAᶕ]#Xjk=[ `<&An{`U\>l e45pכ5Rnax6!3س%+de,e PSP߰B:Ns֨t̂Mא H|_Nc?z8ؑvߞ"|nN5rg[iKVvZcP>޶a*Vӻ5ϲt'
gkw#pB&vm9<`<9l9,>'L&i3(Z/
*XjgNR9Ni]̜$^
CFLϯ~iPh闲.6 W9oʎ8q<	<p>˲ [Z*W?h}
Sbn_v?7궁kglʣ;,R*O?=}+)/91ZէS$-49P){tǽ].UMˋz?'1R+*7;|C>9$;I/NRU׀l`;C|p_x;4Zj(XJd[_֩*9jStU }|y{䐢m;R~\R	ORR{_;|idugRꠏx:
~\bgo[\8ˑU{rh 9AIѪƣDKlŒxםl
../p9|}eh<{vڒUKy*g9>΂z* @Dxҩ?%SQ	&0ܷ4i?UoǞW?=2QvĽϏSe=U((ģەڨ>ZIGޕ^L~)u	[vnp^{%+|yʿ4TBό?QXlE<NVD
?!SO2G|I@|u٨dS!9 ^ח}Y&j9o
-3"<7+nXǚ]KW`{Y )
NPۅP$~͵	-l<IaCeA]-8Tbs51ռ.e*!}N0Õ<YX9Lg7`ʥeVdnI1(ڙtY\6{Q}-8:hXSЯdB25byǥb˧S\%PғDф*F\t:	7Rgk
Q~
֮ !!|x"*eW1Bq΂*lI$Ywa}a$7E>}^\r2,vkɐ?Wh<ۓU}tK4ꕈa)#bFu'BʩUi>J3ymXs~%-}lrע[IKnc_V氷O-T
"z-}ȼl}!T~1ҺC,_nIb@PW|z r6LɷzߜϕxÊm
5<cQB1(=rӣ&K(:]Ѭ'珅J|׽;}@a
*BVW]Fvk*U1I <^6樦69rtq&V|D~3#6M=ie$}| =[M7@,t{kr m4XCְF!R]G uzRt^K`RMQbi>)u"q;#\'AappVUd{?˟- 0{[
J2
C)vr8Tez%ȽW;Al(QO
:wحQ(q/%dgm0?SI~kxz8CU/i)c s	KnEVxl^CȯAj_7+<E-́ªն 8P{y?mEsj da&(*$b&NG7o٫[
)
].·:tX󶬞y]M|qöueQM{: '~8gϬc{¡=vIBb"JNv
! `B8f:dwsim:j1P
+tHҔrip7
tm ʺ<e㻃k+lRpII HhUXz
ň~zu'TjhV0G/c=We[\w`^4LS>w~U>ШJusaV-gLĜo{CPIwF@=l߰{}DEii<8N^*nCB"'cp;`&I.ӍtRʥtt=(ฎI%[IC(Ǘ}3P+i}IYOܒ5:Xv`:}uUή̨?Nؚy#u~8C-XU"sWTmҦm՟Ujࢦό,-VUQOiwK	@6w-MUvd ;c}p|7(<5h12lbJI
l PpV>'v.VpN鳟ZOzit:aégɟɀ<R3,vˏsٙh]չ28\ bκkp®DsD`A>^>16A2g|B$iTɲ|ײi2ϲy[";UHe	s3rԘ5< ;Gqɷ
3
qOW||Z:o_-G`/h~x0\GDNgi-U0o{>WuۡrǗ& fH
p&U꫿6.s/jj?FU:~
G֜uV.]oHzn7xQϋNU$Vzok [y
<$cqdB^rA(Q:۬xlHbz/4

$*Cǂʑ;n-ÁڽɅ2PPZ_O%}bjw}]Y$n@5rL^^UdSyj}n3VX`Ye	EWg&ՀWժ)w޶q]uƮRsE/;!Ny8.8x+|^V~P<*w}Oy67-\E#eIyu.kx=$.{ᴒB<B_7DxAx$:p0M.ҁHbL;YtqՁs*Mw/WX'˒<ů{A'i𐕼t	*h')}WXs56x9O]g1Yivt1Bӯ}l)W1 `諓_ۙܺ4UUyT/}c Sbalj>]ύ"IN8ºLW>2m$Ӵ\i.6lLy:HaO9RB|D 
L ׀!)/EiI悗u7yr5!ؠc9ꣃeH,jFK z{GG[3ogШT.<Uh^E$@8|Tt{j~!5$4"_&pY7?+tσ31D|rPeMy 류T2]^ߛMyxP..00&r @aI}ȹy>3pGULmqI|G}i"Y.NK^h޳>9f\vڗx	řMG#N5:ȣp_隍ymy@ئJ 5`<I串l!!0$/)ρ[d࿛nF"ڈmR)ϙlf"	\ G$gc0f;:hNQn\uJŀM>a͝yEDHIuwv;HF?
@vʥkL7闚]z{>YhDou&=۩kEa8`|Rq=1RX Ws84B bny`~-iA٣8޶K[Ge
.i0 4nk@$+(㯅%&$9$[R׫	ZT,h!.f5ئm,䝰r4Rg+Л5U\j,TQ&=]ИwtB874w]ȷ
Tl}!Nᅷ{{VXoM4] ~>U	pv|',:6x%߅:$/~E)V&lhWQ/A^:neo@9ǒ$ˤS%&^c&φVB񢼿dp*ǪklQ< .&xc /ǹ|v̳5͂;:gSX9-.U"17]7sh`jUg#Aj$,+_hWsh>s-ZoHw&y?ox;G'#xsnZbTLЧ/rK!1J}/;/lC.7Yu~V
]/+]	d9iSM:4Ok7?h{P1Oڮ| 
RQ
~ FՕ=wrzpFJ8\`uZ)@}
EUn}zSYY*qo6ywݕOxwPb
<<{4>Sm1 ?#ǴUyKG/w!xttQ_ரz%y^@ܞ	&+urëZ5O'RP$ed1COrNWΰTў?rGxpϝD}%Tcjr;*.O5wjԬOx; W[ݕ?*_/eQTtjpBR|),
hA:pf1hRFzIۡ81Ir6u\}Au; ʓ`~+~w*k)	q։TFQʱ5ᙒdԜ*Ej3F`!JAM	Vxs{]j!|<N .6`z/hz]}g6_xx׿GԫGARƤk\
5z<:rȲ.^2÷x<^tSNʎđ*Y-s٣L 7_
!HҤݠ9/>p}p#h+f.:Ui7ocBD#:pk
E;WM];4	'=cb/8Y#<gLx*W,SyM)/ܘ>j3uut;5vԬ
;=]緼Ҳ"FW_o5alI;uAAL2.\~PuV4]צ|mbp|ႀB./p:q;2
&u_mHHrr,[nڇ|*?gg1
ut%=k{E!mB|uut[ Ž|*+8.8ڄ@TRM./)1r!ZMK
qV(	Okn{c%6r
1Z24>zQ
.}E܉gG4UIu#p+[]8HuMV

75gPVf |>Ο"}%0ygu-!G%Omk:Z?֖
J3{k:+?n.Y+7
kqs%ܮ疻Gj]U?>TFqdh\]T9NDCZ<r|TcS7+sHvsV{TN~3I	ERzp=}bmHk~.lfIAǐnkKUh
yt')7҃6nν(Vl~^z2$#!ki<rUu븡QniWճZׁȄ<yqϴ5CE~jm'pk^C5p,_E
Na*3Zr}gIsu99M"#.\A݂>UAU;𩔢#\5^ZI$IAZNLTR
T[ LYpLiv]s5:M{qՂ`z֨ o_8_$*"$~'zUO:>IGJ!:Msظbg!y`߇gvK߷~[gXXc75Rs+g#kA5Zs{>8|j
ua{g
F%ĕOQfw)O"_۵,[Gt{lLG̼ο Y\N|6	G􁬺0o #
n_&ƵBszA
8(0nO^44
側`d(Gȿme眝m)eK?ͩ3~誰1Siq	S
ۦ6<nwwtt=6q\IcL(f0
y]MxAO(W ;;(Gnq c	
pm1R,rNw[,8f ~R^mvE"xkXxsV࿑+_֓]9}0LH}_1w]ȑ/m㣾mQ&gݑ"{ַp@"zR@n*xo
w'ۧhjp&rq^7i'{#װ 87ِEm,~S>(ӑ3	N%~n5UCsi~Z}E?ࠃlbL)zPJښ0Ai Segi93[ٓ,1>7{yN-uiv}"߆,gܢ*SS,_Œޠ[kk~:]>ՔEMރ)}0=57Hr䠳5ӝ$j6_G28Бm/CbPtLni iK?Wax'Tx+xeV-}	⽳໖%-JW~860(}?ЙQI*D)Zb4,ݑ,=Vq5

7CFXDrە
kk
[^Ǳ4ȉN{oª8AJ,_I1'qaD6f]U\Pg%`$AҠ	gi}BmB(pmX+XP*7uo=G.?Zb>c8TFzSïBQ_ y2޵ry.}>/^Z䉨7^5?]~GR
Tv+8±Sh'5nu#iV(eoxE|CķtW!Wy911D:K/gh]/Cۑl|5ӫ^BKGƄ!Y+~6~'G)EB_xo_-io~R6{ʟH~NVգy3M!b
fpFǙv$|M_ сkYZ94HЋ迻:HsA	jdZ.M'APm;1
5
lnY_Ԅ̧"9?o</K\eB=F7Y Q
*DTY
V3[obr
I&9_x+>7O%vM+UZW
5QV=}`O,',!^\5c'믍Ҧ9vQNm\2)^^wn/8iNkMeKuد.-TP`r[DxہT:NjzZ~4D97+J<?oiكxZ^
aꛇk\'̞SiD{'mD-HMemŞ/(s#řE
%CBPlSM"ULg)$UG6T"'Y>xQˁ!O57g_4ƸU9pe.xG<xQ˵9
$VC:aw Nԅx!! X,T8Xuį]6(O3h}=ɏu'YFě5W-Gpj$0A("#\	lZo]\EY:Q!rgjNF!"Q#:$E(N?Is} RˊtPSJJ)Ѝ3&Nx.^ks"tA6K7tr㏝CϬ[ &1
IZ*qneq`zk\Crr-Ha<[5Rw.ҥ;HSHi]0nԳdEWw$7>J񬀆 #C d:49 qpupw.gIP̯^w[K\3<1Ϯs&h
K,,ӝڗtCJ$a%C=pu|VT.{q\q/;s+ªS?5vT`U
&$
N[JK@uxuJG3qkxoV P	+N[®>4a|Nϫjܣ+[S#ݵ.O8seњ0Ꭶsjt-&#{ys8<Qj'; [_Zr ʍ񚇂ڷsPibݫ^f\f{;Q\u1|VNa}=*V [\hko
sx#º-P\5md4e߶_LFE>f?]IGR
W_
s;w.Y&uG!Wx|]`^
 Z4^]bvr+wY^ qWgS&v7'iplv;o	4
`	+DM&y@"KK.z,"D;r팻0WI|NfǚXfK׭c}V򢤵R-瀹Ez\sJ@kUߠG
svC)S=m.ShR?. ͟*P-dѡrp/ǆLuX$Uh}jJ}}.v^`t[^K5_]]D k;&ޭ4*W-{+ynNģbE󿧗xq*	Vituxhkyꅌ?.ٯXWo~ E-ey|
G&k)M }AR4MtӔBh~\SEp	Vo-2շt}LȕV8j(~ݭX>@[
ƛf?+aClfKZ|\uߑ>^1H/r5)VSrl"fw).<'Ap"
ɥւ(A
.Iz2
ylʻ[H9rTtw{
Ek;((Ww!08׳U8·ШoR/X@ܤv\j*GLANia"\K24MGz$w_ukW}r8T>UR?G=
6S
AUYWvc4P%ODs+M[ms,-}UeKh@rՙE+X	IDX/@WtG&?Uu.elz8@y!qMS$l=Q6ɧVD)!3_!GG.&BQ*(]!^Fq=6y텐AZl:
-rV
0hM%HEsMӝ>L^@H+O% bQ6Q}zQЕ	3nK'cuQVyzGv;ut [͟hx>}Y@U|7D_U0h%0u:~)JbvN
=PZd&?OAH1Ų)kMG)W[ȿ3VHvYGKCyKgP[
>n!DidyE.oO.r4
X>Z!v6I iWlK]dYigh^}:&ݿzCSX;@Z.ت6k,n_5!4qs/.BsPxg<6k9/"¹=M7=:z)gڑ `L]x&YɩȤ)ZwhԤXGM'8QIUAm<;+p1]c_4đ}j*
+#d|gl?N`^o몟XzS/AqP3@SOUa!KP\-hHĄ-=vy|yGͥ44.#\;(H's5wև~MPY]!?n.VtzI㣆:`ղ:jXtI+<4MNYܣ]ɠCS'ѯjlsn5t3;C.+YKE z!ە5ns8əZyډNpO?%G+;	ƥ3hH(U}G7iu>/$XhV*lb(24] i^mܬ=n!xz	e\U@806nu`kVz*sh@58n/;gKy~on:%8|DZxTn5IZ4lV͟y(].Mٶ"{{d8E%sbQlzwA+0suujJMUv9GlD̛Qrv{Sś;Kʹz?) TpUKRB4ym+pSS=0Uǹ/>ur@}e]`gٙ)$7@Zy2Ո'"lT0ϲ4R{ܻ\LGf%8L3>rWK{Ѷ}Rd(J],L{IQڞn%9܄* QIk}P/%aHQE0;WN :M8OT#J'u?gYngE%[8:2`w6pYүz8je-=Yzi,rjQnI #4'C弜"Ɉ5X.z-ښj"87?01sF0
Vσ`\v-M
rà5er34t=&9/,DPW5/nB$
l< vO
_p7)NvlsS~4IN_Et_zs}3ګ6'ypLjb;z)ִw7:FP!hIX\9{ILdm}5hQGCg2 %|[`I)Em>vJL
W4RsK?K803#Ф}gW,WFMN}`t''V<Щ85J.iTn%@4@ Ω<NPh~yI7rΕ{(PxVyo *ZmR>qUN4^.=|jZ[]ѻۍTaGGoypb{iK+!&lBb,`^|uƒ@NRi[h#l
tMtxq^#Xxæ,j>ʑ|"sKgAbص_Nx=^ZλcU	F<R|M7Rlv
e:1US؊;5ODIgZ&eϭqY$IpCV>[`c`0hzu֚.l
46(Q87HErsu8l*..l.+jwS/0L8+i9%H3L7<= EMgCsiUV@ٝUǓK
A!Ϋm'@n-Ks3ӫ?zﱮm|_/a;AiJB?Te*,Exq5=#X/Qt ,קfJA%³#*luWaq+>Zʭ전)8^gJ:~vEίnU>hs3u$ŉcYaqq9ݡmL :IO ؾWWQX_YЉu@uֳ;iO
LQ>ѕL@	^ ٳJw#-y0VRc3vKqnj-nW	x˩%LyQP$@J_8sWc.#j46nHTo$iuu(p8rh~fpQs_s	Z+bp^ۭ*QpԡMòI q+  LUxI;UZrWjvؕ\($u#/l:BH/<SC8[F=vo1y9'~ibO*6Ky\xy¡M܊wSZQQiƩ
q8Du	TC(js|9av z|r7lԧj: ρD^bєcTK
4PN%ca%Xj7La'@\-V;L%s֟{pb6J[B'hR.gK
Ow#d
SwvfCl(~8vC
H
fBu3I
vhgiâ:=0]vup2<}d	sl:G!	0WjNhB'i-%v TWrRcRs[zA\vNeۑ~膈ɲsORO糴aIGֈPX#>rPk	KWgY|.raJQHV5, '/ܟôs
B+{[Op-`_av`7M0cC {NcQ따*86ufGq6RN"?LoWHmf帘cSԏU0%FwwϔP:{Fak&:6z6"#1
OL'NԶS="w'QG	*#qaU'|'R@.{z|dBSb\Ǚ!ϭ[X\¡#JAd3aMcMq˻dQ-f Egy0ӊ=>@fdrEg4VUw$K&/t
ivc$q9\So=Oom"zڸ:ufPm[l8SΊmu6܁C9ę-1qIK 
5-DPbUD_ O\TS%S}%Ö~2?L;f]/	ʹqep7WK)C'&:3aKܯ(0

!y~ji8X	:@[I<uh}-T9s<o<M1oWopCJ韚T$ \x|5o0OI[OmI5HvE0 oA^<l8uȣ#?U@)H[ {_p;
  rTіfnh*Qh' rf~zJIo!=p{Ne]ovPV>Sjq])ZRr9GϩwٽAn]Qq#ilv~/RfjMC7ws4OYAԇ
GxkV1q%(x#.Bז#-U~҈|/	VByZPz4Z[Vp7T/G<}%v?E:S7_}pt}3!<f_
^-'TBj?`G*yn!jx+KQsM@/j]ׅvj!s3J!6kۭ>?Ȳ:W/blAռʫ
q,UXk
C=	$W/
ϖS[rKtu9{_Y<­`<2DVՙƣB KJMe$mmuru\\6A؋dT`7%ѨW};i'pM퉶~W,-IFiGב<,ǓtBM';R<WW'uםm}#S+pgѧ=njDfy]$%K5Ux(|	=I8b
/όP01
S37qj!*ZNrAj%(*Z<* 5
@>7lxt˔n<|v
?fz\?M3kCdybz[`*gkw`SԢkٟSMxP1QB Кknl/w` .y%`PH|I?(5NO\vJpm0(DqHܖd6bN8G:o]9t'
$o$N&L5KO緂<6SnuմU)D]pf5t:.1<7: MǫV<.\9MqשjΎRYвv|0ͻ%ʊ7n@eztGz~]
D<i?%esi)}4s
*I1pxA]wGqjJ:U94wj ~!haE]uB5+1'
 ☧ҶKԡ{ n ITZW4El`zV3 yTN-}VKp/e:zZvph/.ԥ+pˉ+or:Nw4h٪je!sA]ɢN|):	I+ȧdL |;}uD,||FH*Q3ȓ
&L[[[HsãPX5׈
u-LCn\{>
WR8em^(F8p
ThCi+/*9
VbH@jVffy씼jy9ܨH&O}\]N obY#'ic L?-i:^s)8|hS"zXpzD $MסE
qE$.],ٺ+zj}@,Μg;+S ӥ5Duu܎WҢ#w:
ֈasȳ.G3(Kj
Meְ:QjZ9>:qgʸ	8F,  OsIr15Vf9+LǮlmdV!.cw:'}R	9P=iEwSNP=	$3&CbwƈWQlT,Rh	s @J0Kĺ;KL; bL
@EQAʳZ,) xS
_iaaJw7~Ol=N[@M邼%<FEʧ,.yϓ5|BA_.?[[{حjLȵN.=,|ppu#_XVrr$jƬ ?>!3v;!+챬2Sz4IUHtQýDY'lJxsN^"9R|%g5%rJJ?;l$'*3(OO8ӊ^ w}ߚӿn- .g, x$bf
zAN֥#V%o\\%7mK)$epu*X<m5^\T 4䛂0F()mN~g)kU
zI;Á%.0\ˏ4}<FTSG2݅M
RYkp@w{OB:ڧ`,'Q=pJx@u0騊(8\m+rK!Z&y@Lyk+Uvz3+\%[vs)E/qƔ	|rڶk/_Pyصw%l3e-ИwW&]Ymf2Tr͍n+N &w<j=[DD*UG+
U	VnJM@yl߂.0:wӥΙ/D9R7+;wջcm[jҫhQ ,+%G_xC g_3oؿ^?1xB$X%xO~ok-/zZI5SUlr"h ٬bsw۫	8@Oݕ&jM8.G2)}l?: 4/q_p9N6v<ߙ0\IGl`nyE?E/4ĥ$NUA9"cz9RҾgw7mة,~-p8/˺%Y[U4q!:@uKyۧܶN$!b$qN-xe)=ju>sJC~+Ŏf7~[XHDoɟdg--DPd %: T^fP~<^{S,#<w3	
nb(5k D:ӣ<t}AķuTQsq5;5AZPms⇖D`7g>6HÝaTp^-w8Oa/WOfJ-W9,hM*fj?ԛ|)V]-MUBő|f|UO`%)ݲ}v._f%MPe؄W*-';Z(pT8@*>kף!0%͊ij;s
@$`C5}Z T50uQV5tCf;rՅy;L}}U!%:jp	HK#\߱Q,nGi|P^=:!si$P-umf}%܆<yXJ3[$krr	&Kz˩yxTE	lKw=īN͎ְ8 fylǴ@qqlN8Lبx<;Tѕpɍ;j>fu'jqjֱgu=;iFz"Ejrjw9/ZҁvzibFS~G[D{ݴ8֊6EN~iվ/E@e%9`7:D9kݭ"׬?hn
ܽzT lOtѝ!=NQ{OnT-2	"N*2KMI.`YqTWEO.c ѵz ?Z:=_'i)i	4}}~h՜aV9l&_plm'u%+O?>ء]is)XhcEL9;cOy`~*Bϼ9<NQz!UG3MǢ."`҂bqk xlr<nglv:XR9ԝ auEl챯.UcɎ=)oTyV.=N*"^ۻnovɆ6ְ9&&T@?ڥfh`ks
gԜs^>xhv%,"\>~ԓ㖪])8&;w=ݙƛa|\5bKP܅OZ#7;puezQZN|x7O5
j.;ɝϹ8QnN@鋗Uڇ/4@n\\&ʱ@I.!^v	D/<)\OJgS:V|_jj|xUBx#<P@cs..DL\oh`n7]|"pՀlLsbޚH;
}M]!Rg~,\	xX}5hWxd#sy\>/=357?P+8XM/|L{lhd3H85^֬DovR\N1sJv+M)DڮheSÒ
'b/SY#9JTPv(xA翩Qq&I$NiR;iJEEo'qBOV"v>|}$J3fU!(=.\8ۊ;F798k[t媓P>Wμ9xSrݸ9A>2G{5@iuYr,^8{莣Gw-&@GCT<X32׭[]Gröu
s}\q,Ld$5Kr
&c>u	4?&h#[g.r8"r/B(OµUmHyYȴܦF_qh/5~ *-\-6egQkZcPKJr
U0=ik(u)> p"'@l?nzuA6hM6x`$>h7l͑i<u9LҸ\.-9-w6N*lZ8idgg}GV+
	^밼s)y	D3ʷwRg.>49M]mB#wq*.#G
D[ȋ%##5s[ } `'k`}۾V"+b$빁_WN&-;CD:b\
"V_a<*SUƅU 't۠@vp73PzB\{~K=4%>zE擹o2aQѬeu(Jx
p!uXwG&%LX 8S>5\m~|6v싏*V\hW^jʋ /0qv]SﻼT$>}nO'O+55I h@+ ZMQ7\>O9\	Ԃ4 [5NoPۜJw0<`/;1w"KY|7ҫO{7NIl i>Tq_3as/Ѳ8Dg귔XR;ߋ|i]L[}{-%66&  Y?|.tSrB4Jq&HDmb!_H,p^} 
j06$w}u}9HђubR|<ST˼rP1Kҫ¡-y_ʜT˶t50*gD`}uJ7.9H_k2 5i*?m]Hd@sOt^G]`3frR#&.;FGOF&;Kql=0OzB/;@;C!Wj]
/az9;d]t>3Njk}>IH'j%t8#ޖJ"9pAwbڳr]*̴[) *u1wQT%3/|jV53)j)[T[>X}^"yɪӠzt2ҟ|*y9T֋ӥ_H?.z%4Gls/ޮǨZޛC	褿{)p
9Thzغ"SԶ
R*ڡU/Yk١\uaj ]rSXDP%`y80Y.EY/Kq*6bQ7ۓ`k$a3\N
ֶ#Ml&/'L-Ws%$վD\9Aj
(r6xPՁޞJϫ_RgK
	0$fF)zF`&|b;rsTog&g}Vx͈vYA-/Ccn˳V"
)SmXJBMe]زq<mqr(}In``|H6aFH{DJ?\2CD yx8wg5Fn*AB9xףS3퓍4)We$y,gq _{qym-p`gd7P5H)ѻU-<UmO ]50Bp \4{;|7?GYsvxn$m{D8Jua7Cn"UvE$[s:}<^Q+~Sh?s9Xw;6x^
rJ@[1KW\PTc3S:V!y}#/H"%w3ZQ+qPzLBk,V4ה
ߺ1ʢuTv-8рLZ&٣ɝ#}Y*"ъP#f<ｸ'\	
粂PB1gfq	ާ Y6AGÍB#CRhWS#	:mA>E ax-c˄Lj7Z%n3/1^;q9.v9LNh.W^	YKkE}ѷ*=Ab0Pz	 ♫:u$R@R%Ҫ
`B5"dɮBc]w!(A7򄦴#e#*AWp9Pb&ҵr7
]0 :Nxrlϑ<}$>Q>j?|uT3<Z<Z`(7[(!FK	sk~DRs^~>]Tyf]Vڃ1
s`r٣R`[pt)@70$=\)?pv#(Zq|oz2`27tHZ]6~A;ճt{z&N딷	JGQ&
kNGH}WtYlr Fs֓,(:\NU]s<XݮV2MםNOKU'HnStnup{;:9|==V^ <q8p;;<b~$rIbͻݡ)$W>%2P65|c1uuN!3,+׎w\E-;#ۥuq|"89[ʪc[	#DKچYoz
+SiWޢW	w%
}y|Ad#U҆'RHuT^eꖑ5
vj񹴏FU_
vUSskr%f_L\\o@ҿWWY>vtt3G꺚/Ǒ:0RCd;P%H (݊W069W3E}5.2:,ۿ}dW>7ɺy&Q2tm5MpCgz9e,l]T%`u>Ǒa+	T0k-׎zI!^Goy2r-Vq~Ze5k~4T<^zɤt⑛@EX
γh|i/ޙ毷O.U``iP4] S8Q
Rdv;eAh|!`|+Y8kt೪(}<tN[e
S?%b6]S<bu܉ϞT흴c.@-mEXwj'ZuupLaECR^{7=xe7	w,+XVņD
fS-]ISnZVQl*8A~N]ao]+Dj he!cD6패\UPwjqA4~Ljs@YAT&pNI]o^M[\fM(&M%gg%75i>m5x+f'o
ߖ\7	n|][5#q69]3oK/S1( %yORMm\~/;{ψyʍ/R7w`fWRK7-G1NbuC2썣QM3E#Z<?Goj )nsԬ(Б.[.>(nПp$Ȟ T~dݗh0EsC	zK\t*(d&}DIOҮ З͛mww|)*<S̣W*>>1
\ @"WWg"-F*

ﶮ>p-ޣ^<9/g GNe ZD5`ݧh)<Pqll1h a8[A1c*K'qO-_į6>4
^.kB_jI[.]:ȫ;C%=Mɥսk鬋ӃuKU	
#Viro/_gۛy[<ȿxϧ/RGvG%57>h SkNp~-`
5]AS)*A(R
e#kC'{tVwF<8q+u&%epDK<$b2\j 8H7*<1w0^#5W" lAkT?#0 Ҁ+ለgkn5_>k_ǦL}(o6Zu~{I, 5ڙ	,PٓiT#Ͱ6џK#uR#kTAqJfy"(R)eWC!X;H[ڡaYOq'Z<&
 WI.lGe`MpK<@If[T{*n~]"Cy2SqEl=(XIJGi 8C̵80MoqZSE|$<ɕKG#Y|MJaT͊J\׫w" z%dj%ֶ0]NΓ߶; jѦ9S/cc;3IZ_x]/D'⪊BvӟN)HjYXs"y$|h/}nwvp ْl:>zK54R*mSnە(;'~"WSo:qN+ִ¯}W.Ϩ$fuh H}|I@w !9#m:+:@ zԜE;@ZR;XWE^smq8ڭ#8'AuKgpLOmsݚSIvE"﷿z"''մM3:>D#T(aZ*svbr4+iVB:t+vBt1S
L'!-s
aAcM̛AXf$4K1OKp 0L,-GkxMk&Y̎v\Ԙ0A$%rm3 %$}m]wgѠŢ,
Xwų檺t qvWhKӶ+tٿPDMTcw}e7%M@\'g Y[-Ti @wL^YUo:⯰}k5%u߀qϱW	WVHDbW$9PèkAz}@1L\fP؇M5a
s=QjDA!VhySV\ߋ'oA(crwrAec
b
 JU8@.|S>튔c])ˇnEdep	9~cJxj=r!GGkEB\o@SZu=;\^.cS<cnYUROC7H
)cۊ*=KJ#rRRT;mk)fzJg-!{.(ND:!BnG봕sDQݼbkl<hN^<A@rI`ô	 1ܲ.n~vN(AaE^ ̾ kh$s7('%VlO$`ɤZ<{~l:ZZ|RWSk4/?tF_U90r!S!GIBNhosDstOe>
udvI+eXVyTV7_sy:LĬps	u. GY5d|nZyV}VG7U
Х^N:͑8hҚku{8HIV!\nw^i3F_!Nk7
. L<U 5,vM$ϦV@'ML%U#
 xvy%ÄL'G"XS1rYO~K-&P/o \|ۯ:Ģ"wk8nAD1zAE+Y6nR`eXtU[7<'ZojZ1\qO$.n{Y_x&3r[fpi
U$Zs]_xOl^AгM2xrqlW3*bQNη'l"ʮ
P9iPjӏ/`\Tg  A'z|Nx"V[#FWӇ:ެ73\V=ޫ{
 E=)r/_߶^Uy'#z?P*Hu_:@a(>u:u"rث*(968R6*O:b_EuĠNHOzw@*\uhC|T0ȫ+e{'[
ģ ?ԩJEu>[D-e6ԉMg+@sc>XGuJ[3pLd=[!1>IӡN`xcЯ/
CEOGj3_[H~~NG)T{[kI2۪B7ݎ;LkR>+%d-bTT{(:뢅sKH^n)hJǉa6Uz*GX\0q!O9>o_ʹ}pct]C<ʛϱbBy8Q
sIC?O~ccaX
lmK	X_d65gc|IΝW*d=nLo^#
%uߖK;.TIL 
ݱͺ.*NS7	<ŖUSMPaHIܶ&$bۆ.zNZ~_ZO`
lx]nEԪm"{C^k')::s0t7?#Zh] [^pg<XߤWRz/!ҝ3·[aAӔu-ۮA Y!}q\e~'$HfFIy+<?K\ ү%jQEru1Y:biAi˓RKt+s}t<'ܠRNR:]>
{MNshtflFw׫G{kZGꧻ9,.ȢR1 WFbe}̵n";*~>!ԇG=QA)=kVТ?6V7{W`ʅp.2ᵑ*ϰWti|scª<&C8_&W*/oh䖸'hnFGZ=sJ>BOj8"#uFo?H&޴
k9t9 kb6BZ(S%}aqLS#?..X^R+&5%y3vRGEnoݎ;QL?T
F{91s^M$nauKvRW[Z
dCl⟯}Ֆ׿_wǫzR0ǃs`9XaE]EkQP'<:[]\PTzNy%GnИZ6ۡEչg%qVwQvdjA/|ߎGt)I'@nB",$%/љ0*FyQcdcFx/>A>} Ӯd2}x\V	g
Kjin{qpL	lXB,[ %lj:D/+^ז{[PyMI"WL#*{IK_ڤu+eBh*h9YYkVSJU}mmM2B*gJ䩨e}@H|RnHr *?D>ZfSwyuUx8A!-U!jr$6zUz:\}pͲm@!ȩ2ȥc8PI'
ЧCN6ƴ&(~	z!Jg5r}gCӅ
Z'-)?CL.ܙӔF
 9Ǭmx[1yxiCrh
Tۢu]w͓\)xMTx5!(ުՠ=v!lupĶ	,];J~Y9KtMY,w;w?K;/[*>ŷrV0QC2Ă)뙧;9cߺ3k
]37*i1MB୒K_Nt)fZO&x(:Ñ0$g]$8295f:KǷʝ+-KVL]9,J2"3mr)
0l8.<q{.x @W!*eNSMAǪDά_F:3wusi5\d9zUɭyq!Ylobc%ddwR+ikȧKGՕN0qۈ4`FQڙTv
$8V\l3ֺ~:agGv ._YF}U Aъ
H
>"(4گ$
4]Ӫq4?\V0;;b`9U*DQj^ o}تlQ\^|(A#Y1eg'`9췿x哢
L>uiYߗ{鄢Jۤվ%N4KݶLݖCfIh~~vvrJmj5
GM iwL-C?Rr:<!B$	tYz?gfm9H#u7A6Ryj\G,]*
k+Q3mss3DK;*g\h[	0?APcfY/%]{OM'u7>p;0)67Uv/|pm'5ny"UmmRB"jEl#T!3lCxV8zP#ُۢjSw;Uևs_wm*(eCT?mKrTI?GI7ճ̙]!_̈DE՝a j4
з圝%L\K[Q@Rpuϸ"9DerI3&?UU3{rsWT^N JM9G`Q(4A\%y;-TumIe;4ycx)b-WuҖwCg4bܰEaW&p	hn6L1C=+[W&4&HvT8(Ʈ:gSMay{C$~vί\KyHw ]E$qүF,L
>v/9
@{hjnj"p/unt[Sfau/Un`4($;x'&U#Zs'\X I$Y~V7s5?uXo 3ynQ z"dow.68Tv\C
ڜ}jɫ񀕈wOX,,-!D!],AV	3rəw N:3uRӣ-pI"f(\@ =C5`
C	V/-$+J~	&@U3vDs}ȝ1j.4iG眫v^=_u?ԢHN85שNRyeߔ.*aϥ5@\#iq3G}X#V[˾>v&hQ):iWIqU>V.Q#o.<,忒% $r]nWʾr_:MIY	q:e	p.E`MWQM=,YMqE
 l
`:uR]R$3f\ })u}plZ}$rFoQbEuQ&|Dޥx kA1%|h:'Lv2<v"lx`|@ANN>>8yՃh˙Cw&.#iEH*-tN>nIRޡZn+-C$Dzm۾(rRKKOR/ߦge_ :^0wt:5TH],]rޥ+tme>?Ńu?{5qp!'F,na,2[1D{i"Uh[62佖՝݊?$-!|
n6~V r-e} .ۂa!ǻ!R,žڌZBhVF򱽱z=<ItH8Ě5b_;fQoI+	59@<Xjd~ǈ~qWR@*Ʀ[<1
H\N8ED⴩ҦV$
 *Y@ AN{&p l{O'|O8^V*?کr౹>D-۫v^wʩqԋkGmU&=.m^>aU1-9eu葊QeKG^	~'Ӳ߫8'wNSS纳Z):OSQ
OAZ5_
/ǜ,҃Hc.]{,gXWGs{0bjm]`4cBU[vr6^hd5{(e vm$WyԂA_WmI66e若GjkM+daJҭW-<۝*yg"\;1;ŝШȷV7`_j}*ǥt)妵m
AK-pk x?JDo%ɀ]g^+nӡ9#RH@bǟ5}/N	nǵogyR},;g%}V;C.M |u+P<"02{k39*|jL	}S8}@cnt^o5pV(Vzo>Sp-Uy-h1`7r6iɗ_%պ?P'W~ӝ8ݾoZ^##mqm^X#IEjeWlh~T쎦\	\y.C ȥВor4ɷjo&BW*&nIM\~ɣ|r$g86M^GD&|UYݧ#lu}TL׫Y^\~&K	BG<"b""(>4(7;$tZocd3/h(z+K[~o	kQK@ Z>ּmΐFQAKx:WGLҁ,\|+Q󉣒 _2?'̜9"7I⋕sRmG	nJcr/>Q*[[>.>H>u^"8i3B%TwϓJ<v#+u^H!Ο3I*s	#'Dra^sgU\n9@'?aS]9
5Spt |R4TԜgR
]8@jP/ӭ$LxĽy? $gqx*ܱR	fE݅p.~v%i-'168Uh'[ǭjal-CU:g@
s>DmA
5l-6uI(B.Cg`ߜѻnӭ{NX5ރ:|9\+6O؞pvوlHt9+Y1+@{_6?I1=2L.e:tk:UI}Mx6МWQ{_Κ$s#$- g49%uaQCׂ$Pn"!.ْצloxklm؂<{ ][s?,+VcAh脗n=ߌY:tR71T:l }[uvp6z[2I#_ڊԳkZ]Qm*Yg{[x\uG@_bKxÕܸbɍu!\|7ݵqㄜݕܪ-7s`]O]ֈ6u&OyQ|A#exKz?%}M\j?pBeQįhHVF>"MwkʝqLTڕpCi$Gk|ى  X!Mgج#8";ƲA5߇h:KW2YZ
<iz@w`h>wp0jUȢx5*ʀ٩ip๭̣|gt{	<Vl5f@n$_N/BD?Ufݱ*d/#Ѓt Mu{'eTUkO#[.~`LX7ً, Ԅ@ ҜL%C/ۈQ0@  нŵf]X2&iqΘTBwW
6 å$rt~<nן=0]\
DK]l^5
Z؊R
Gn ok9Սɺ}N\"]jq*țxb,@5 jP8;	-yWAX /# ypn霓,c.SfOG\k\z67;:=nIqXާ0
* HH<}}!_*/ZU -d`<4ń֪S)`. y;p]=W{I'VȭϺEGXR&EJTP\IJ!)q6l[Ʒպ:[]3ӆ7خۭvo7:)pq |M9%atV6
!"y4r1S?$'iq_vS#\9I0rߡrg<<
>[LD+ϔ
?z]챓*[/GPي/eM}ʵZD>O#:l
*6ewn>r xжUenzgJ7l}*sOG#FC]ah(teȋ;Cd
n]S]h;#a;B>B[)]9snAQ:KK: ;FkQt;Hb^liAEW0]Ã.ih㐌Ii}9-rhRqd%<8֓pI}8/T˻/H=om:5	l|_׫9@u(F骀O6T6Q)%`vbNb<U5!*>fˢk5y4PH$Q\Ųr_[]krkIV|S>DJ+$APBmH⥼8ZZ).ɡ-/τຕD|c^
糛ꄨ+iᎄ65q
E
n
?7GYcx7"g+r9	\pϷ:>q<ń.@NwhB7;_N_bvU#r.FWrܑ EhI }}N$U'
Ntlo>.+@Rw
Tč#%):l^ݎ!=\ȀIvu#>7`j|i>)?.nApٹ?ZfA/ٴ=
ˢ=!6
*W ٽxWK<l*/QUA͖49䔜[Eٍj֍1kea-W7ƘGO;3Z耻ŲF(JvwQ.Lv˲.tS򒜹IpBFoJ$rﾨOzVcך-rƣksg( cQj#KK gJdSˊ\7xcr}ӱڙp	
$,&b-52|D^g55E=B\+H|ο9%Ρ:M<C'8cyA)O']8LV_UټGR<*Ί5@ü=H\w,/`浲[+WXtס>B!]Ăc*7%YUCKNTr}-O-t,=\Ϭwn0]^կ")'+rT\`\r(MRIHW+5C~ar!y.
|r"2	Y'zA߅'+9T$DZ~|R:XS
_uJ 	"6ՒbM^QZ>Я+^N^P퐈zPDJ?M=<9"c)mh.Ueey6PO30@Ts_l]<Oְc `5jqfܢ*BR]~k$8sA48ZܟFTjّx4Զ.<B3!j#W]bb`;{Zov4ɼ$ް-J.Xo
H`MPh9l4;w^`uYLY]>
Z'QqZ:Tg&Oi1/Iޫ@H?vԓvCB&,WWh%G{90wVgRDy'POb2dיG2R#y~j:٪erW'jnBTvG1#R hފR:5c>[5wÒ8hH8v=K۷ё>b

NNȶ1 lzsXe;(ywN+Q/=q>~}}{xYs+EEM5Y
S,."P#'t0|0.~fN5-$M+}I>7퉏[1:Xʣo}h?:4&W:P8\{)ܲ!i6Zķ?#K;IA|`s k}ͳBFЌhՉO1[
m,gLSfSN𸄗XS|L\{
jd{~U*pY_ר=h
%G MJrj45$5&7q=S#_PhnYP7Ǎ˧=tfo?,rEDu_G}OᓾQz$
 VU|2!}pkJޜ^ݳj3'}y
bŻ־J`\2/|}xPAH~M@^t'%e
	O
LAˎLvaṈ*z|Vcq	l< u09}q<DƬE؁ebt6JFCy1.<^i)ͯIT)27^y]|zr׺/n=MoaK#8E_;?M!]
FS
hᡛt?;	Fnkۗ\ 쑣j!i͠N
FA;Z{K;VRge{Nt8+9ﻀn|ˎ&Wx>Vu,m_]['	P(hF6̷{@[s)k^6>-ޡ)ȟyy.XӲ
[	/5ɎM6Uqr_!h˹)kϲms6LTQ|V
.WjD#U4MǾ'ALN܆%+C
뙯<]
Y&sx%V$
A4>Ԋ23VRkMJJ`a=17C92:ή|fz>v>?Tx{)[㻧>Y	Y<i4f{NYaӝ
U>0?-cXB萷	:nT<
/sΡFsF\inr¸uWրE	-NoDk嗤gK_1-GyWWov^&,hJFJOtpb& $q:c(]VBaGmtkk9)&Q:4%{(ެQQ5xk><|co~Lq#ߚz8OU")6d͈KE>ؚU7[[A3Յ")|E>0?#Jq5q_ds\Sψ-I[hlvDZv\[}Pʡ[CS<(@(OK1`)@o*بO!6	vdt3@UM\1rt&"& M
I0@=7n=Ii稹I<m 
Jy=(7 j3#ϲ,lhx2Ew
`#*ſ()8}<n%/WƮ.qxy=zJ׏yӫ^uxe~LZĸpt;VpT-Bjcyc(|ѥRɿ8:j''lOɓ_Q>ˣ$~4"u9P+2N_Uk
N=|HNs+ø6RU<ZW@!#wH 7n:V~v8LT5sZdq/:߼cv=8EdQ(k˳{I_	v jB
Zӝ@"6BV
`N$z
+-'8;
4TNW{ o_$ (XS3Wb1-Yį}9Hѯrgxݏ|tBˣ0ck0>~-4*IÒ4	0įMЦLi8we͟?.Z;q/ekY*dL~ydESu/	W! ׀%pƀ%(!Hz<$l9K?iO,3	;~v'f
Ij$Fnv".3mTc6Uxtߗƴ^,|`[O`v+ǭxV֬Ӫ=-}A*$'!`r$`C9-)~Ua?[xNx1i>6W1QᄩYrZ0{Q(t#jwT9rgCL1.CA DtI	9b(Z=ٹD$[WLs؞}zmAR2uUᄯBywD
9j"!5n5W6wfZJPX;;z<.Zjz]'}v>dEQ8v2iQ`:y^Y l?\U&
P-|]H3Tby!\<?skF xo=rti#oC)V4\;KgO;R
~
XS=%n`9'߻]@M7S s9dϼKWu3џ"xn
+V1	@ux!wyzk0ʡr:!sQm:U[߲sp	Bn 2NZ+ 
^JmbزJbW!uJm_r?upp	FNbFGr*hĮ?.`LYX§[kzK
{N򸧊D%,^:W*$\owW"=<yRquՓ1d+SF
aOgX>R]\-9J2;__]nD	m:6TXc\Jy&!	:	Ks?x/s>4[ܖ޲Vnʽt܀ROm*SiX`nxZM	]c\k݂-Ub]:ѽSGOUb;NOEpa<z&ath-m7Abղޔ5aکBLG6Hz`}<ۭvu'խ:$QUWvoCd의@>8r<Z.XBV*$OYG(g*eɟ[%9 ,uW_bGv4&	Ui_maӴ]"5O\:z<[ibr|
܉%_Wm|SUe?:C"P!TIX4zo(eK 8Bw&jv[K"%gauycW!Hht,U8N߅dʧȚR]}XxrVfJ(C4
@d>	
y(&!GN,lK\NBų+p%eN;jy |.D}<:G&E m܃vj\\"%@#&g[p%x$që/OխgC+C^Z3f`z{
5J<>thUXdRP8r)wpg*rV`^փI2%:C5c?w%+	fƧVKsT.bdunE.ߞ Z0o9ӛ՟r'U4
ȌDnѦl?agrzBIA ؇`
Kuq$aUhyCp;fȗS.~Q?ݞ1&dLQ(I Ҍmn^?^\ƃtY;k۾bg]Q>)57DWFyt9_'";iiYf,@
o>Os}&w+
&~Ms9{tQ=6^,nrw)BK~(ɳ
uu.ma|C;n|QP{H<FQH=mY@ZW}lX,
wc8z>fخ#'
r[kMP
k]ю|?4}`
$O_k9@P PNjHzQlm0L1B1V㨞k.>HR$`eN9jpm%, ubIݽFR$Jšjm7_=b[D] $SV Vg+֪M?oħ?~znuY&?RkdKɺ?oG\%I\qwO_{7/x
`$$ީLLY92K TgO*MԔ~
{-k>V?_%e뜌l.`+ec'
ܗr@veGr^Kh3hޣk>zzs9X|μ@4PrS:m7JƏn):#_@
8Ra;Nx5$	}G	qe F:km+l϶U9à1Y]e+@ubmK"Zxcua.NKDj7wcjm^G'?_]!R¢UMʭ|
W?70{a=j

Soy9xUTe5Y'CcL{Aͻ
])OKXJܳP~GpkpH[
/4A]ZN@6_NѢODNtκTSGGjrYGs~+Qڡ5kj1MJN;#z;
;z~	=MĦ銂\E]!jt}S#3!*1N?9yv`.Vq5ϝ>gayw\nMZ;
vͤ~LS~yDi^_z缌 ܊قy".b[GwJ-ql]@)c @5f粵CQwY9>iWL컏{%	1QUW4?.d4KOFFeM	D$[Clh ~8-KzT
ǒ8@az:5n';	^mI݃mN^<e{
qQUm*n ?(I1[[OQklP%j͗jLv7ccQR9/Qu%|9SחX s	:g˻T㋗־r؝NE(~Kõ5>w=[q}R1ٕf1i0

OTnozW=]l[L[ㄚe5EjO]nK;VMyaה,;MJ
s?]]A[ `yK=UQK-p;vTeLOՐ^Dc2&\=$؂|vc i@`*VBp*.p)S;A/s"w#-\亗e6oec*Q}]zh{jWnkF(}ZP֧8k`W>'9ʦ;gOm$d1co:`LX#ZH	xZɽP`'T+>H#%`1e}n,QHR:Zѱy"WTϓUT7i)J@)Jxr}@pAWX=]C	na^Ɖvʧz%)iIu1;-ոP3yCspB+A]BZ 7*
WWf(gDT#(1foGy\d_9uZQY\|MRQu(v#*|tZ1h4jasSykNCڲTK/WҴ/?NMT~;F VݭM&9qVkJ`A|iYnuy.+5V%O(y},[TQޱ:ݗE5ʭ[)JKHw|=Mƭh*OXrfw]7x3jO *|\/Ы
p]ǭ9P%BU_Ј ~}ᦽ3(+?nvIqWTA.O@ްpul֛rf'zĴ"Z/
}.L$'Yւ96w1=jDkJ;RUvIXI\su'Ǣ]zیҒ0[UuBY@q:¬XKz3A4"@df}%g`n*&Nc+yjU+w<aG3Ɯ3Y~\}J-m357ng]aRی>fs`pT!96]OCt.t
 GWNLI,˶@Hjq)Փ"PqH%߷n4{4A׎6/ynvou hf}SCMURi܀!ZK:Rs"w}-ovHZ6~<0΁z/WK:::-Ģ*t+7|XJv
%rdl8}`KY^ɡgg>ȈCCt>U&(]],We.n"cKǜՇG쿞nx@~|.lt ;:V1cŭg:3qf|{е|/S7]q!ސfh[TЯ>Y˕L0祴++vU%kFq[ۤ,gwktdӡxltˆHv+7)vݥx%էEcDUsrpb׵("NvDM?z3 Hrw	nHqI-GMJidK]lvv%H@~ULZ$:c\QWYP[)*EnK~MxJ'
8tH@U?5w&ߜ6?Rw@5vЪCWꔚKS<o;W}C Lu<4YzIÿʅR)(r[8MĤ**!M+NWDx{sV2PpPMh̪caBT]>nwztuؓ ~iC	-pG]= %mxɋG\wG3m ]
 6˄+T >tܑXO}u|m|\"|о6A Pk)Y8m_]q/z3x#\A/ܵG-dI!5KfXp+6F@&O0;fGKF;n9 T.9|0bڲv$<L~GOyv\P|>XSW7hu^NkQv.4.)&JʪEg7r\xxYG:]`/j4KTEwBxG	_UXWe"i3#|2ulީV!Hjc%Yڳ!#T볫\;}@7q~n_gAT!̤&wxߏnz4W1c6n\^|ҚoeaJ(-T} g.j\0Eֆ
)u;-a;)z{)~9ֺ-sr3[A>7NGyG+Q"nʼ8>Β<SsY28jN<CVɲсpusU.Uxؾ"gMvE_|7װ(s <ut7-fwlkںvXvplʛ=	#֠J̲gA"ݛ68tLJQJtοH@ߵ%i{;|yGi	ҽ˭Y &"v5:@Z"_mqBDT^ӧ'aj@
%8k&VGwc|Ich8\{)=N-x67:
. 5.fNH\DWčNM
u2nxyɼ[-.2Be+':28ƥ}䫀M[Bt>JRD9ޗ4A(/K?]BpMZ,ȗ4_V8Jh7`mSO:7|tw
bM	P-{2jviCN̨4pLg}42o1/KmȮcPX!Eߋ#7юCƽ-zB
r|v(3fmu"Bp8<d4',u ,Z
 c*䡋0``Ϫ`UM<*uR?!8UZc|~tG'Xi	 p_U
:]yBCdb)!C8@VlB'E/|N]|4){(}'<oՍH	
d}6 /mQAj 8"
%Tq]!:Qϋk<o_RI䏯D?zsh+ųOxDum
o̮eՑl>_tErGn:51ƐvNj<ͣ\܁#K[ެ@">/ ߮8꩒v$-YR1 eDr9I<wMQ<zJN|&D߷(~HN75-Ys+}FPPOi&xtf`"1xtE:ȾA!yiFś05ҧN|esg(/QYv0>Ȯrsuǰ/'Y5HUR'k.}m8vK{tw6L/';v˽_vum!K:yO>nl\d=[4p0ͳ_%
C^L}D>VGy E{WO}m
fywϢ~
k5}D#挑-YuY|]/v?'  niyỳ/i*B'.svʊ7':ޝ$[wEl.sYsU~ ūz
$޶3 y ^ڲO&\K||r }atXdԥVvQzy6Cq1|F	E}+V-%GbjЩU
nPc@\^DG_
VC5AG@SZb` Zc`IkZxC+JThwWKv{78
|+3H .8΍A1&3jT,Nr1v5&n*oP?B~lN#	Y)Bξj:"qFl{grU-r w~V7Fj3jd
fK'd]w3SOFH[U?K-eA@p.1]'K eI$rx(0Lz	"Gq>rR1l,Ju' ]Cov<\Q[!kJzvkZ<p{":gpRe\/?M3Nn!"/
mJ/-<ɕh⮢bԢY
vǬhr{ns_~<Ya9`}h/)ꈬ<im8V^<4^w}գ2_M[rMV;|U)l!|QpJ$3a4+U|0vűW;γAa O?~|\Ԫh#:_#T{dKAG66{KC-\||񥌗q,}C mԊ6>gXGΈ˿9=9@Amp58明lk
\R瓀JNWfT"ϻm]Н<v+e-Ko$U#x=%xαyBzȄ]8K~CJԯ,ƫ=rZ`3h9%+Mҗ5MbZ\9s0Dx6l-5U Gt.J++3`EW{"es,F.kQ1tPVr|]޹E=3&$?%9BÉ}f><*gm˶iQ;s)l@OyA>l-Q6{.MNd8?-+gNvzMݍb:w
?y=yJ,]܋w<~K2tb{D$kaAEkJA$UZΑ\$_ ݢ`-
x)&%͛X<0LOw1bXșPr\(X"o]K~z@i, KIU)::`D5%l
@
#MNrܷx!8Sx/UKuyIU3 |E9=e1= gjc@Iеf9Ou߅0&hKM\4rڥ.x"r{?=GnV"W@ocd-:{==_jr.-@peӐ	NjI* '5t
+B"IoRp%`U
'OMom15xU52ʥ(4]NyVrs*_F+
mu2ea:8dx>k\Ƨ'(5󴚡P/ +j¥"$rM6J,?5)?[	aTBe& '=.]V6ɟ3Z6Y[_SBzEIKqaVw""|׍h\U|s$:[ciF܊f5n-^N#:G}fYe]r^-o4-Oh@|?6إkAbb;AB;^lFڕ<{u~Fm;>
w 19:r̂EZ)iGGnz'f˃l"?h9Nrw	a:ԼI]Tx}G4d..;y k2;TǭlZ1DtS1֫'Y*zo{ƴ?p-(]BW7[CڴX&䩸ĭ{ s8*޼	֣3{珌AIEF0EGj R
^5w-oEjN  s)m:|XI6~mzؕ1QmzRLhO0$~@dP=
-& TL\i_&ewQ/@+9IR'өãGٟ,p@^tvhkgEՁoCX&ժ>[wT<:Rr,݇n|Yw>^ssJYcS{Snwtת
Ԉt	[['h58[WInյ@hOTr0E3'Tx[w_ub:TYN*RN߲{'k>6aw9)pJ#LQx"/%$ÁȻݚq'yH%P7p۵ -²peKzd'yԍ+w|M8]ӱz4
@]~|uiF{8mpB#mNwfA
+H2N'kihr6?:ޜJkc%֠(6nTݚ

Z>ƥXz<=CJHkeA}^y}%'oKDPN$
^wHa gu
37=6jeglۜ=a4)ì W"unp
'n
ƾ65<D`XzIU$}*x

ltZ񃊫Igzd&E/2͟t|b=\k[
4G;~#ldwwK;[W?I(󣦥6ۗ$Gy:m\k~Â^Œ|rH+ THIm %%nXni`p
^gb<Z%+P¨jRRkH2<T.j܁~b$Ӣd[%	+Bd_>o
՟7_[톨uj2hts	զ)l08c@{9d}~Uד	P$o r
4oX3%T],8BewqI&m^^tϧbs@
:/'NYf_"Vg,(C˒&s71ZD,*V/ţ
Iy)Qmh B>auG3dI7yRT"~Qpw@tW9e1y5)Օ
D\IWջ(cHO-Ҝ;{ Bj wgE*$7~ڃz'Mͦ
JO(/6~~Wh \ٮK~r\ٮQ>:-N@`l6߼
Q4Qd7KU\$_H\%cz{p|fQ-omҝd8.8mfաT =h)$K>'lmgh?j2<+}	|xkY})$0O'pӥ(W\i ZN$:\|!Qa-0SEqݩ>CG
,䟭(
$1z[x-X{
n^<z Ӛv̂6` 7bG>rb/Cit.?2<SxƎNGK+튪Z<@bUݕhPc՗#W(y܇jk\OňpSAczOts']w95|؀NIBCVo*H|u0DH	<vr$}Wr;61N
OE>YDGTwѹsc Wo5^Χy6/&^L 8sΉC]pI֔Ǉsʰ늿
"yvHC5V9LnJ!|p<c<h	j#vvl(MC$ŵK)moDK&B2S!)NɈ&^W׵JUseWtHHQvމLTWS2BFil
y"
:nx+F֌'ڹN	$_ 9Tt%ȚFpAR4όKo=-[;\2PjJ|pI%=2~K/d	Ŀ\`Qs^WAP
H=a0f1
 aQZl?zپlf9|<px
ȨfPѫ뼍:Bf~5<|<Jro}Xz[ϼ*nCqM?|sow%\hRTLעc>E<>[	<HX]
EeBFAǵ`qԯ28_N//7
%Sz.8®yvŘ4Z߼O7ۊhIVFhq?5{XşPk
o3bBX֙k4OP|r68{_z8Wq}X۬7yN\FoF
wVF
-=K^|!qqDRr ?pвiFK	wSh V[d&hRrDmW.(Yd\-pRn_v8p5~(7[MOhNQȻuTFlۺ¼LVւb	 w\@\kh
)4'^]yCEqGu
b4%t.LF@` su@:(
&?嬖M0+1b!I2!mm@E\>厠 rĀGs8~`(`p FA/!Ky[s}R!2ZᕗREh@4SC\j^;t 0>1yZzY1L*Ν6ߧ4IK,BA1 TH޳i3n[̓V`'d!@oz@n˾/s̹f^jU7'RpS-]E^S}|>m}k(G?N(J?6< #m{J~T9@n[znEf;K"@W#tk
hNՉtsU(l{GܮqKwåkVbXO.d}$ *0LGgNYeMRRp⻃}c[u]Ko_O@=}I}rVVQ=+`!]JeހBI6ɷ((,O1nAzuqmɷk]GeE!w+Xoe'@>ܮafgGX\"~U
oOrK1eNdU'~g|= *9 hII@MkURLEYZNOP,&< m^
V].+rAeRXޠӢb7_I/۱p4;c_rE!E4e  
[
R`"	9E2guE7RsÛ +CJCN֙,5+`6).]g4ԁ/Jpd"{VFV IVxu6&9F<Q'HrZm9U3ZN^?! ̣qӌP^[u92fGdDf1L&[tXiDD4n	JUKҜWz|5wHVLgRl6UYTm:)]@ǒ6UI7\w}Eh
>q-Nȫ8
ԇ+	Bc-\͋zSQÏp+j'Ϊ\0w{kj7S)FK(u{[^]FȻcLn@bSs>5
NTJv8
DAgTv~WV5i^~GVp0iQe00}h^Y6*M%K*~,[<
IrJwL	z.{o\o7KUc|]JaZ#Y)=:[(v_x*4GsG9u#>ign!*	?_]ܕ˒֫&b/<Ϣ'A.d.餺3NǑiDe.J=:>+"u-E޹w\g+vjCBg^άR_zd$<ss0A֛La5TH%e̟nֆy$FK,-^Cs9נ&JyP%xm\J=r0SݎLDWD[Q3nd]ݯ]G\t/uz?JD
࠙~u
hT,p`L|ͮDNc4qs"Y84đ8n[d#XJӲu$@Z+kz샹LI6l}dG"D߰r.טܾ{	ezKfpu-IT%~sbu"L,|Wvj|lWϽGylWH'`X9 iqisݪnҳgޤw^rQs#y)Xt("+r
pw!?ޡ2!G~C8	 :GKeTE&"?Z"ۙ
,)|O2ĝϊ.tn59tvJZ7Fb&/ݺXk8>[h:ҩj97!JZDoKPwq4pf/"OUImX\>ׯ)Z8oys6 _Rt]}^LR8m|OGgt tʵkf$9lϡxpvaFŘ}Ɋ<F^~ŝ݄g%+g tXҏL5aΪX8ݜp74M>7s2CY]gX19GUA.q{w=rDN(yS?lJiP
[sP
kAuz;ι-ΰ?uam wƠSKţ/v'Tҽvsw$z%kS,2aL+GW:jz
7q.3i}At|̷Ow	*JPgO(p? #ܯ.{Uգf.
#s;~9f}K*Eש^-n<
s6֍8
V8N]K}IWWpdqUpaLc	[]E<Jmm_%>9Ŏű-RR&8F*ǒRh%8;W,򞷑H%)XbGTC9]@	wKdsg*~[K}WEWP8tG'Ui
"oa]TGJ ܥ{fn켲V [4IhVmiQ.w(c&";gk)nE<YHK\CuN#hEpiVZ<
T
%"_NJ~gV؂*Ͷ;#{sAv+*ex
Uc3֮y1TTw3 |V$wI\q/޹β_<uv)CyUwq+su60}<X |^߾ x-;6j o#t`V԰)٨^%#j|^@	d $*Wd?hĊr
AxJr.=]>,V~Eŕ.P<Qcܖm]Q,_b4GRoAE&\H="/(|r\5z!*Nl~z9oXުÝzp%qI,YeHlaEjA7SovdF!i9~	Zn8mI[1DlAL?D M.SꝺqSyH{UNH4ۿAxdq!Hr-#S
`AKYÁȜM?z;i6N~^<y,>Nα
|VJprߺ<=-cG!9}?p|Xw;ЌX{I3E .z'%	nE.N[@DJQ(]d2O eXņ\H9'ͫcw(v-xnVN
\.95Js4J!rzLwa]z^5>}=Ge`1x]n7L͎*%yV !svJPϯ/:vCU陈koߣjNj
#rX6:ȩx_Giq~(*!x+Мl[ay͵}	Ӝ@19k([u!JeIVs]X/Ut@H`)CW{J
	XLpLzu I׿(]Yڥ~+P6Z9$Q,j[Gp
/ivm8݂1ο8gZhXDj#uSDtY gl~](O6LJɐϻ,%nn%/	îQe9qO꽉3k2#Α/f됗i3j}.= /d癢^b}i~z-TX`ȦrH_ U놯|?ԬBLEsH*RxKRّg}/~.O3DJfsRj,PCq2Zm@
JVQ=<f~Vj) %';{K
x}LzC1Y-lC 	n\
uj
Q,};i~:8!o.oZ 4+/}y5|oNJC	cv>uCrPO|KMit2wbWwюSH*sU#i
ǋj*ZGV8`զ*iC%\U-K8^C;)gaGn CK!f];Im8(+
m\ZM pQU;|
;-aO+kχW7R0-{NzsuUvٝ07M]o.Ea|yץvR5%UfNM'JqN[>c'/;O<*l#lHe-yS փ{yI,[`'SSe$2Jkeퟋ1{qVyyGgNg&	J o-R&&Y{QQM/
gw]3r?U6U C'e=,uڒ[k":hug;I\[yg8Ip⛾  F$m՚0&@>>ɨ,}<V
(gz$9U>yl+g-c)T9fP4"kB]
hm7ekYp0LVM$dt>5@I
VcwG1x妞q'Wm4SXܭlko,	5z<9dҫ2RҐBz{	1rPs[zP6nάjEls2lY!6\/DWE {QelZ5)] hGl䓇:WyKM>K͐-4|U>,cm)~kh4r~C%N7d-KWP/R'm;Z'ǿ+ qTh%2сX$.qd*{Ex|r޷5>5&e'is\ȽGW <ۆS?9Ra\_5Gvx׬Q0CO"IP qۓ4]ԏ0~c	mxUk&ׄ.m,v[&{P>z|v/vS;Ad!}cCoK7.׭`]J~ d}|J]T`@+@{^?uf~PqgpnKCVIʂ 4#1Aio}Sls~y/-Bx6'.<}@s&Ta5-5MCˑ3+VhBvDئд_A@gpn=o) y
11vin[L)9eV7y5zpgF lKYxCmFr~_,GLF~3XR`\
?pCUY|
g`}Ĳy55 k+ٮ<k$_*(qـ1NooW{vv}uݖր\@LeZ}=}g@<_ޟܡΓr_0/>Җ#då,nxfVET2OT'n,`!wkÙMވ*/D/;
:%S¨{%.qlly%a2x4Gwb%hzFwt[-ȻR[	w;`>KY~NxDB
1"S5Smt&T,w<nV
I1Yj@OYЄ2jG+DY򭜴x @ޯI'g"
 ga8T
Lo ;V4(KDxyWUIޔ4{'s?t"#WɴvVtPǳc]/;nHGQ bvGb(szz~PU2'W)-Iﮫ/ŉ)ぴ"%
FZ<Ǽe h׮R+z1JRo@]tbsj/V^;
X78$.5cC,\W+ukt`ei5MC*ORJgn٥~t`~ZUڂۤ:̇ۊ$ZRay׍}|t8ypƧAG*n 5)U|8]B3m_l #>~EUA8YlJ8hgcɈLnhVsCR,)"$M#ʙHW6%~e-4ݸ]* ]Т<~C+צ%m7UpAXqŕ۾SCթ{fGoڍsOekD ^,?[U*3vC_sK"1Ii[{?@U7S$=[&Os-gJD,WSyG3@ه%os8Y%#Oך̨{/
G.JD.Y}*yν9)
эxTg;#:y=MnLlOD)"/Se*yKw;8Ng î

`x޼N_YXN1/`NN]E7qMWnu.0PQnխC._L.~xu8|}i.h3ҁՍLrl,'OC"ҺTPN*柮U5s?{uǃ-Zs(
|`
DWϦ09U?Bw `
h&WF/.Z]k)NsA@)Kqtr{xnq˛~~Ԅމ#;
г#~AۭG95s#,xQ[uߊӳVe?箐OW-zC}4sޮ(EքJ3(vCDwt
ORȭ4s/b+F}n'>P&!Qٟs r2%v=GV4t&w[
eN
6XJ:)JUVIW
1xvg|B܈B]p$@'0)
{9Ҝuv`(,neD_rIQ
5$?%B9|;rf({]mqdiԪbxtI@m~-12uA`kP[5!Eɝ.૱L
CL#ɔSmҟ7'۱"tD6K*@j-BON
>y_9
]p]P3׆TwFN1jW1Wts7\v~®V	⊀z|bq48l$B>8M_d׭zv#L1( r|ׄ׳gL8o/ET:Э1"٪4p>XQAexN6.6BU=kY c9+;
]!ߪ.(Y/J9m-sb<o?קIǥ~BiuB\
Vt,Xh޿ww/+ѷ7 i'6eMP7T 7uU')9J5ۤH+d^G'e"A,[jĉTجK\zBPt˒Zy;]b@(qj>ۈ2
,}sSmk*xǼh\H鉾{^gx1t|N9Ѽ.Np7_	f}oHpUzO8uڧ*	H]Y'4aIq89GN	ި/'!yiziH}ꓞJP8 .d& 5hyl4M޿+7dR<>|ㆠՓz]%<`FFZLU*Il+;`ꌻ< [>DNUOJk#M̴RVp̱FQe~^
j^P:TehIۉeݒG/dtݺwħ2س4t$ wЎ?>רA9dݭ`yGd]#!sj=[n>
~>~*,qzomy+/iq=OL@H @:Wa3Aˡ%̚ Luwcăxū,& ᯦
uܝ[G\q'>͹K*n2W$ojȹ|qG%ܕ'^<dI)[] W:Gh86&ckPGDRib˵䃕 /T 9w+qzbQ^G4Gs!u">ެmco]z5Q[vΥfo>C^A<~[Nv?,%;koog$OHFXt 鳏wBˉE<s1D')
l{ l-BSE]
yq]
׮|WdT$3rA-|BhG*Eۛ#v;uٮf?--(]bEOBй2֦_uA#9]%A m8JBvj*+ewe{{LD7>	/.ZWoO]@-PNs?dqN  FUޑK2cUHbfhO@4;D:4uf .\'%\8+)lG7CTk2[]}9IM{B\ckOWR%pA(|
6s/mh@0y=	S歓V:k-
gN
;e[p⩪׹sUgPztQT:}#Vi\fMα=NM9rC|V=5`[$rTH-ˮhpE;yDg.Xvmڍc[?!k^mK{EV!\9]w6ؤ4[d]/Cmԁҙ<ɉ&7DeYv'neɭ1o%xaklsh\4$RY6ĒYDϒbsM얷x5ϑ|<Ma@t<<nUnNSefǏ ,%w&aFʅ!1hKfo_'d`[UMQ#q/\~9MZtqTZ =
'pH<mt<a`͢};4d<*Y*u/`z:oTؑE{VsWXՠy<tKRTh_@*)?q7*I
5f$C	}j`Y&.[l	fQ٬7RP8]F
:@R51o+='PhᾲPƕ)Y{]r;I^q KPS6 !u^
MkةW/W*Xw*={eM@ěq[y V-M`9 И
Q	+rT]:$PHo{U&Rޜ۾m_94眸+ɤ؇4"&4OHYZq_s:]tٯ::pmקBߴOۦ&b1zSO'
@S9qm*MsX?.۫3wۭVF7t׸88%LT09RwW}~ l%GH):|jݛ\' Rc%y@4ME55=M1Ƴ(T1/׆%sr)Ι-WބrhB]ѽHU1e09@گuﻎ\BҸyvJ" -`Gv(#PϏoەS$zc*%>N$sCV/^0p6uU
Mщ̯$絹=u.+cCbeigP;"ٴ*kKka}Mr/~ 4&CXļjnnQlF_@>M@OgyGX6 T=, Dw+Kr)`YUp<MS=( |uv/M6eѿcRC=#̃]w~9Z܍-,Tsw@O-}>G]ڷ)uK=Jo?k&mOSEݏڝė}\Kvdß !t%pT]-_u{4!p!n=]N5	<U(#Vx;+iop!ڏG@J nBlaeg7#ڏ~Qh+^/->, cᅬ#ຜ6:Ւq2*JescTԌw7'Q]sm0G
GKAN:%2s
Orj*^YY
g⏑No&8 #9$V~=QH-<>68'}ڄ?g˂ϧ<d&F4{_u0_bViƎ$j;N~>>,SQ^%G}ܴBUݺ8=TPjh`mIݳcS7ݚ ='nh>_D&JE#).(f9N5q:|r^PЧm#IVvUuҔ7'n+𘳢Q|<ӥPsaU,bpKăx	*8bUPʩ6G$x^ݞp_gB,JT$ H R4}}U/:aP?.޾9Eq|4n;[c=oR
[c_s	vZ[RylÄp+l`|C^IfSH9H}]3w#J AkEިwv>9j	%> o{:*H5BCtam22JؓVXccg1$^
R-uMh>7J'L7)>
AœKP+;Y}@raMkݔM$C-$~&F&Ijum
Vt!jԼ&N~6!},"8<]F+6&}V\Ý9yi*J!Q\m
{<VUH#yx#Dп@YDO?z[󁂓J*-.@:ߥwqW7.uh!oZnŝoO˵0+Z6KidT6&H49ҍ~,+<)dU
ҐmmxAn|[޹ik^wor9~tҢh>nm#w5?}/o] }50Kř7lp̴{ubbekZ*6;2@#$S$$ǩrө)V夏̤|oW4<d-!N:T.,d94KI>jZ-md8b!`o?q<PfmgWZMvϐKԥUV UUY5qkÆwP<
D8+bvEy"dzx
R}q$ڙv~`p*@ҫ * ɥm8Qq
٩j3-*WjCoHhlQ\qE_sv鷢\
jaЩI۬9Ǌ"-PZuj(;Vd+r^*g=/)L)%ٺИ0P@9BY
gVx1]O7~fV6f_qv&481<<AruߎḞ9 `вF><M*"0${}`di@&yƷBqO+qXc"\7Ǩ"ձ.dm9^]sFVf]}!۫Sr1mb
MtûϮ[3cc2{3^6u})zvKs)H73Oi{A015X}O#TM&]IxE^Lw]yΣk{k5EPޫs'bq$~N\<BE`դ<eP K!\|K'8\|zY"iY$y̶^@MW=Hz8&MQzCKBʵJc`2Hv(bEKq5tG H?#vT׶tY,/V"G.-~ʝL&$T{vXV/Jr~sJp16dEhB\u Cy0y #Pqe
2EU._Uqz~:X^B!aZJ"osnNHn[uvFjm%^M9G~5wIj88FZOa
4%&x)?:׳e,i;GZG_%uƗzUV˹`mh/*Vgε+G0jWQu_?usrM66<űhU7C6wqdC=<@޼sP )k:V0nvgIܿBӉL2_PQFX
8	qwx\d8x>prMPG,OHA4j@u+8lPܬ8.ٳ:hZjYb?U=7lC_c
:Ur۟yc:͞?[N6^6k.q`,`K OAhk|LE}:sIwX8+ck<*UYsQ|+|?\֓b6D?̹aRpZc%#{}JN~2,x`a2--[!y͡h25*";jZzGIݎ
D}PqP%_ 
VZ'񔷬ڲ^R"B.:Yc>b@V{ KOE𠼮<T\|~/.wʱ ɶ'Fו,rHGycC_GͷzgC6tTL˛)o[v^-exInrgGI<$`]I:	RB鷛lJEةzJhWS"DB2_@ki?>0꧉rQa|Pv`ժ.d 3*bÿӋC}y	iX}ϵUo^>ُo>3rW'5rfɰpX楍M%߆Z`xӞYHC-V,	*M6`H@*x ɶ<n;Utp5?DmA; e]6%)9.&9$-+Öv9_
`;.g@u`x`mqF?;czU%HW|N-{}]pMo(¢{8ixQ{GZmbMyW
sew=h<#b=]}Buҕt3EnC"ةf]-n	%Lm4ħh ڼ7i>GB[b}pYUJN:A%)dw+DWЎͭt+7e	סKT! NܒM\4WsAuQȻL#'hp!bIz;-A\wL+7Xח<SSsN.Mu͹4}7$VHkV/`)VAyq&HYrOnUV}!:(Z._N
nG>T)./bA57luKuTʺH6}2_@:9՗Wpj\4tKȁOޜ9
Jtj/?U9hOy*+9q*W%r:IcNé	J!K	c"!&C4n\ؘm	E|/79aUp%>[Հ׫CW͔%ktWȪ_y ;`9Q2o;@z=BT'@ek)oyτA>EL$[SKMmU7xe,Ypk@1s|U;c;,#=IiBJyͯɽѵ߳GGݞH)V| >g:=_Jፌ
cW]Z ,9);J.6~ǜII2<6a}GLt~b~T
<lOkÅxCs1v4)2!:^$$SdITPZf[sNch&2<GzNEֹ֊-&U_:7}	97ǶqAuvbU
+nC#ɮzJBȋZE)Y{ɡIv;K|
o7@xuFsbUU] ;9ekĐyl
҈]܏3}&T''), --rJRxm$jUI3Ƥs`TSsb@XSA& yWWo18#nThlxU?Ur<9s*_œ2C$n<Qx]Ӳm찣Tգ2<yą.E}IXrڮM0΂A^­Ɏ/ <Bu/T˺ZGGD Tg
챬g֜OQR=KXm dbBe8Zom.U.b:vIh7#oOj>Rwjiqmpyu)R=N)foeٗ)*JKx8qgTGC{u|/ A/	op G]}dCF_<`#ܞWz@YNqI=#Q<z82n'ۄtW۔}rݷԅQg|0Q
=Bs]*

@E^QQrBA^
j'导,;%WbwI$M'
aX"tS/ԭEzi޺  >\a:L'p_$8*.pL܈ac!$O.kB)TI0(ky{j0?	ޥ!2XuE9$W.i˗0Zx|.)O֨HE抛L޼t`: gn0k	GxM~ٖaOTߴ	}^׈-u<˫m:\;}ʣδY8۪]Y%C^ |RƷ
;VY,g<xrDR]
7ɴC%^O;tx)ird
"<a$9g}	s8z齎o[xZ}9>Eq_l;3OƏX:|,W!f5G	lCv	ٝ@OlZY`FiuX99-j9mO6
ӣ{StZ*9St}T<kﭵZg~
^t.`skeG\ 8ɖܛJ>b~)-}ґtxNhN2q5=$$iE! Z^
2-ni
Lhmm_E]$;yW+vDVˎnK=ON/v{4L
YS[avݳ\ Ӊ/B*𹃷p,w@
AӱMdԞ|F3G]pAņ.^um|d泿" LrI>\BEKB罾q\#1ndX.K]v҆(2t51$^2uڌlo&l	ﾀYt
ӞEWsth}ck[OiZNpYKJ]C?+UE%O 88v!jiX+H`KxCiܻ?wQQGOړr|~<1|ێc. SC&" `W8 r>Q;\ htxGuM O,9yE.Y/7VϟvL ZFėO-ʰ 0\An`P?ݍǚ#$jI;tP(ɯ*ɖ|n.x].nZDԦx^0qᱩir>SFЪZNC/L~78 hu>z=w
2w+wiy|K T^N٨0m枎l9\ye*$q^gL-4Eg~{l	9NrA#m6$+_*o}Lv?WR7	sm(r)+?P߽^&0Rɠz1ϺNuQʰ4Q}
f\Nκ䚮[*4y	b±!$3N[R<0[kiўwb:gC
w;绐O\(y@3UI-KDi] ss1 Wĳ#6Vǈ
8!{p6f`0͜Ǫ<)V}/\S+mV)!wzq+:mv%#t(ѩ/SIrQ7-JǮ[W##ЀT./U5*SI$W]7ϤtR8_W@;a$VHkV4mӟߣ!O;]\d*U[_bW}9"67sV Q\^F[2
v>1N7ӯq4V(`.qB[.dUz;5~6B#P0m}:M_5r5*^7nS/)t0B%.'kN
E	RHV*U{]eYhxp>57G;ާo1bW;6@l()f
Ts 'o{)/{F_n;Zjc%\{Ϣwu6JtCcBW"KֱHk,uwmg:+<4v!ߊA؆qacU$UO%y߉͇CWɛ!*VB*g!q@eQ$}
/Vu}ʡ&7cR6Y{Y
<y"WPmH<'/i6NВvŏE~#9x@~et^GBl6U
b};x\RQ"o<5ۣt[Ѷ.o~r7`jSSg<g_;+߇;u`#\0=kR_P"[耺z^՝;UgWO?"p->dnn%ű݂-7% kYZ'T~Dܽs
;^gcM_XڒAd GY2A
f᷾S1ҪE	48i/hL=_z8CG:*	ޏ,ZFc4<W?T=0:ь
*D+>7?wNr=ܗNdKA>B%{.>GfnPueiBHdb˞*Y,2Z'Olw}Z(oaTە}<C+1Kt=`8E֑8]nQ5T>:L9==igzs) fn!Ng׾k\Âbp!d^Q Gwsq<)a:QYz@C
iE1ʏ;.;j >۹e5.N|Q(][UNrw۾7vGاϑù901;OnȁfPRnnAco"B(GL@mK ~Cl*O;E-˭t%m⸧T\ (v3ʢ\;\sRE9PBQ&5Pa_VTw0+'1D#<+{VX	۲QUqTbIˊ
lVRg{:@uͲXMt%ev}ݕoB<l'ϭ9>2pi

5.$q5EiBocS{X
iӲ䪦pt{SkL.>y&Gi^AKڤ(gw|P42a#(d9 Sh{j}! W]fe\К>cYˤtq{/Ǚ UO}//[f>q]~!`ݦrR&0 9ꥒoq̦'U^3~v{u(ByB19ύzيѧ1TU˓<,dõqgokuYu	V&v=yUɺS׃fOoĊأ\m_fp0ùi9yAvF/.A$滨u;xУr3F<L}6&|QMG:#M7gnG->`U-@R6	#:S:tP3ߣ^pˡgq4@ssA5/5pYk^&`	[-=sr@.qn\u
%٦[r}~e;)CcqE[vq!.N_]8 DY𺟇O"usV{DFJuOjnBUy7[h9_讗f?aIj8Φ(;x^s&ͭG:9q`Nd*{~eJ{uw #{ pkpUv|]/%,x\5?p5%UGσHdNpn}Bg3Rp@5/-O	r賺C#7w7yA@8#P_I@r60
x4	8AYR,*Zq?_0bM5ҫ
/Yp'ېɶJ0@5[)Q8(Woǭ3+	6^\l۽b\5(_9~^ x^>حY^O"K{ڦOW5֥Mc}{~${j'ei83mS +s$q)2&\*M=ˑ%%My9o ?õϺd | u忈||^}-LrC΄,CX<XzN{ӉxEx$m'!Ȫ7Ŋdѳc|HrFSvk1_
أ޽9vW	q#/ʑ!yJUrHMo%/qR4:O}vA!l9(e&D	u$	'L #8؁m
!N:Yu@jz,(PbG=q$`@WnU!NcqU<S
N7.Q\|p8~js:믒<P@gz>6R 7o˧ǲ9sWXَp~uuʛZdl:Kn3|!xcײC:Qnsv
^U
jP׫z4Gs4Ox/H̍pef$-ͻؚ1{7}qdTN8U=d\Ǐ@)wC+;gC(}f~᪕_L_ My_ZR4.߽P0.IS6Op4HO bȠusvo{ʏ9`$zCwilq2I
ߺ N
WUWOIԜeA.ow3D8>
MI4/N~&\go12syb4Yc|Nhj.p
T^ZAqew:CX>Se!U,vo.
D)9zJg6i[j';9	b\؎_nƉ>m1|{i6bAUWy:Y^pԴsH`]LQM+ iAN.M6ٳѿ3-%Elʾ9k&g*v=jy4؁$<XPAΉn^@rdES-k\C[ICc('T	#cgtz.?Z.R!vюi;}{>,AS/xMrl!8p"[}9*q*8
s-[pX>^Em
M54^n}@Ѷ&JhH_C|گ&Ҕ,(0Z(c=V9|ǆu~Gck<"'8p`Kw;蚧zǘ'悼*5tmHPC}f
j_;Q6d\C7ƃZHk5ͻǮA?ϔR=J@v}pROn1B;n{?z
Yz=lid^|w-BoPnE!nq%Eb ǷÑ=K@0dWzE? ߬Y3؁2>*#5@둸ݶiogqYY6'N_3T!!Jz5_Z
;ﴺ?
xTLN4B!o}q޿ֳX@[q۱?VЉ[HV|/ƭa q^e,=GP}xpqr%nmC`@8 "_½Rr{m߬2-҃	nb>'y-G'OGc; ]J@}:N𖳒N(Ϫ4GZ[茫
u2}xmdJz[rݿ?.ӠќSP"x%AgRvk?}jN2=Gh %xM,VdB@3Xp7Nseo'*4{Ί@B]E-@ilL_AّFb'`/|趠T&0A*\xЫwI8]bӖUOeY.<2*Rn%t>vۏڧtnDh]ոy@^)ɒ;W6!SdhWjܟl`	RL:O_:Gһ4BG  S<A羬wQR:űO*6EsEf[_6d3\j]םr%7]zmsLډU-ZR&J~Vkt@^j6ztT,t'ה!Y') 0T$"At?4!s7[NДUȭVjQg5XP-k7/ʌ@PHq>=t
[=P۸>]3K1-RpuhVuȔK&pɟ;pkyuzܪX![7}vŖKéeG2WyW>J많%"  @ԘvG6
JōFgQDtTs;*E<,RƕQ/rKru /U]7..Ri3~
6]+3C
SJ?n#s^b
IǖhN!h+iL&8e
N5NcB=6@+EWka|/|Bi,'n(>f>LW4(3PᕄvYh:@ofvިkU{t'M袑ߌckPc<HwJ<Jkdɕe'.;$﷾3n';|CLg=Xp=g.8W HXSnO7uca>~_^&uBW-xj9nS߹нy6*LBGyŲʜ"bX?֨-1.#Uj҂0=96u*GK3+qb:0":X8
*stdr>QulEa^zס:WFq^JRJL] I5gݺ>^^;
`]_VVqryd}w=0:O$z\Ԥy>
`I<IhɣTPn/b'< /U^>_4ً_^K|2tQ1 ͯH5k`@^kSprdj*uiB:cWCJ%.9>>jo࠳⪰
|yB7mЉ}
n-)y[6n>)<$]4'QOsN,Sz+¸o"GG]LIm}ALC=+W]p\pU2AȷPW3ہyc{jQ܎^?A*
*Pxn	:ͻ%68Ep1χX
8mijEJA:}"USMAhKp%%r./lʣ`<|rWr&SAuàGEi%IA|0B(%͍&lk8/-a
`$ˆ@:rC:E ͡d,KIt1aKd0n&9WnėDy]tl3?poh!0.%CSԻߎiݮ24ovoh.]}gPOK\ĔcAku7^u㦮CS粷@ߜp9fRҍa3tDp=^.k4zc}L!X[@5`%R'O䩠\ w4K-6	_=Z>reIaξ-W	#Vdqꖄ}-Jm}*	]'`H~}{tmǸ7xQU[iC!0;rY3+
#WὋ3l~"o~)7ܳjyRơXwxh֌Fa0<s

rzֱWEvXPlrJ?:?mGC\Z̮vSI;q>/BL["Dy뷆c{ݥ4##La~ׂ"ԕ䋏~n
X	G1paZ
:a8;[}{x<@ijU 09'pIV.IFť=b|-ZPm};k`9 OoFD~
$Z J!zۻģؼH5
X\G_SO߲gӸR#ȀO~a0t2?'4W9047\`a4ϫoޡ{y"pJ!'L~~ (Unx7:{l WSqIA*+ysh K1m0{p]g?Ƽ<YPM9xp@,V(~@_T{oKZTIhBD{OIDŖrsp3l
7N'':򀅂h, y*KP{jgQ޽1:^T$Ky6}+F5Sk3|oZY9-rC{IZ+ԇg-Li8YRՑ+j ]7)ݕ"G6DZig.m5JJ39J4R}1ǀVA88s]+pm/n3;83uD6	)8<yw=@"Jde,P ťlI҉Y?Wo+s!@T#lKKnwv{`Ev|: tum[)%OqvCW؏ܢ]ұWO(X|ZAOOWݯ3 {,}̆ZN+ϭ@F'ԬTZ<qoX]YU|w<|`JYr6\)y8AwVE#М2a8Y`k/-(ͮj^}圭a\tn\QFvoП|ҫwkyEz%z>wj%kzwK*!m,84Tr[#:p/8[_ XWx4:Ze
؊{o'krMڃrf,].[Xd֖H7.^|쯠0j
RsQcShp!5cs 	bPR4/	Kܽ'Y7/ПI5FWYc4rw1U^sL"Ĵb=1
Bvnj:ys
{zÂ`+r+$`>#.uvNybzCr)kR15vʼKgYnW5.gجB*5n
#tgF#Sl3o꒙!DRL$OFYBUqw𴾒0ےPv&D"WA_:ĤKٍ(@OuCa_W(a^7Cv(ZN@dw=V-9t]ڂg*;wV$B:'?Vm
`neWݺ`m&tWڝq}\NhtwԇˮsUEʋS~;o|*tf^ɍl9&3tU-!35S{Ö)M
:6pa_rj8x)	ۦy;ogkeou_Y7't&AV	-UFHD&ԇ u是dqO^3i$kUvX#~\QUfC.Ҏ	wfo:O S//@FA$up["!4Eig`W  thͪQuOvpZtTJ֏j:>6
:;~Ѣ	rQ
գ/)}8)z<tv`&4rceymS%orZ^6,pc#ȣJ*>h
w.v*ovI͆^#qPOe+]4 >c	8K]j!¯zcX ͜}Gxmmar6#4wwgd"Egv'0oU:D`Tu/$!邎lwWyW"sKF1D geW׹A{Os?*.)8@tT*PB!-qEQ 9k;nGUP`{ݪ>b۾>`xYENmmk+Vyt8J[bs5 ,՚]$	0yIa.GRNy½4IZM#P׹!ށSI[v@Н
>	JVmhǑ9`-Տ^j^T؍.xGHU>Tq5U#(I땅hO@zO*(= ҊU8,/1ǅ}a]9)eÁgQ5U`lnD8`0c;~urϛ@c)\L 
iOD(cM&6YϞs<u΃gFU@-hW;rT=j,	p5{/G#߯N8I'DY@NX; Mx"av/+-6Sҽ_Xv
IqLki%*Al7Pp;RkU@d֗΍ },\-ǢH\K$uNP\ly:RY-!h/1xj\jI.|bPqWű$ 	!%CZYltG%.g0.u[:Agoȓj<E>Ix&IG.-%/\9C{~Uq)}YkF5d
m2ţgs&5tԦGa`mk(hKyu`iC'ٖiɠ|Zl.lE
C@P"u! 78N(:x6eNmwQJ(p uTL?~_Ȼ^yRkQGްpi1M.ťfq@^ܹ,sǇaƼLnUw@؁aQ8r%Vqhpr@DnN;8YeSվXNNoc'1Cɀ>zOPzJJ阨ydtj"IOpnڤѩ9;Q7CnMeé|	#hi.ҋ>UL0é7ap>h~vJDoc@a@C$$P}y	pNۭ?5&:h_LV^I$JjZrIt? `V@m	V̉GԶ
{åg25Ϸu@௤eޜ"OQoJ-׼'8DR]UG<?j0cMEux]!?Z9s:WGH\ٱ t+[TH{>n\S'[/M#V|TWqR:Z%
VyGX
&0`ag7~e_\=2AiHyyF
m4T',)ǟMS\lVYmj{y+I^zP]H
Cۤe\Ie,h4	u; u&@%{;ĕH?h0KQv[1=VHwq`I1Hşx[綠sVYOgߝʘp"Wg̥KY#>n	P{ނO>ֆysw~U7]i}:@55e&C?ψaO=O67[@א{$37n r`4ᲒV6JĶը/d٣;(TP~8Pc3O9zJù#vD<!+N Xnvn ,v)|asKWy2[ ronG7tJa)dn%7Q;tn2
_qh4gS_^G@<up]5g h\IzSUZQpTŌ/QK]vꎽUZrH|sѳp ]Zkg
gcZ00QVQ7WU-y%`˖ }ͱM)yp6eXꑥpթunF!=H n?kǞ}z*	2#*"im>fГ1S6y>E/!.uVyZK]x@	.Qx]ֲ>&yo) 2@D}mūY2{tNU''oHzl[w:XC֜J;ls;[io\ iuGM.G'ُWX&|Ze\L8UV<h1h\	S=|ųGj0#pk5܍p##OP8#,"&\EdK~I	}S
<Mk^eާv^^\&%A|#6讼}IphpY1j)}/	y_&ِE!e?6rDKr^>#-~zJゖepGBz(OܙSԯ{!2pֵGrmjRy#l5zӕ77qoW;ﾕC04oM%wU@AC1Sxvm(,<G*u4Ifk\ rfw紜[d3d_Y}u4x#sTwvϒY5Q%}ä'dU
_U#=!KSkr7 IW`F	n` pglQSٛiaOu"PV|c/Eg2\glߚk>?}/t̚GPku$@$p®WI)^,sCWgi5>!$`Hp]OP;^
xN/R9e\&ǄSA1#gRГ'p:݆֜kwf.,p6u!/Ƭ=˖J䬞F=Cݷ"	8KF[Nk:lΘtph#ĕIID.ԑY"3ez`ܐw]!/w[:mqla.G-%UkNÎSR#s/\헎g#:Ϩo?axS7E'nGЋ@ {H
.ɯ}Wtw_6> 9ۨ<GGeOq١\a-@ʻ(iȋz<Ӆ{9:BmD$ߪ+(n6V}v>Ëleq*?JrvQ^5	de2.yT&AÔ=qG{svӤ&߶Yq~9g^IgR^]nR''98ND]DȏmLRJ8(sL9_p$d=%[5y|6-ϐ:SQog.9碘WFB$"v}pVm|h98 8j%aw;2.=A9nd
븠(]FOIjzPu^/xNmy({(aUC!_^=q?%#)#Dׯ{v r}1CY+y54RH5
xӲr/-%8·Bgrr4!]P,gorډh}b*W/FN|x&g]4B!qjݥ3xrH(1 /rqiRn70Z:z*:u ۵<	AFPVi{qZ8y;VAeAqSgt?!ht{
OZ@

~L䬬G}~
A	{{$gC$(CsjD F5ľG-7+k<LAcߜ*"n:.StuD/"-tL"-ڋELԕLNS>r.}RuZX
J~Ỻ%rJHv~tI$ {5 r
]ۭ}G{Mp)$puڔ3%>ux쿌χwֱ;{'
\jT	[n$TAn1^03hinFb6ynLwi)y:3m95+.6?\xs-UݠGaә >?"m@8;@`ͤ`ħZ2R(fɍ^ц??q򼖏[.c/~'yNM +>(Y|;}A*y[ۢLEe_cBxg4،ƗVK#d_5i
|r.&S^fy
/֭v6dS>^sXj-_[ػ 7]0T-+;;VpXpߊhkzGmn >m,p=7@oo/t9Pe#Lo|?BI-}ޢSj9v
Ci	&u6">Pab[t/*|䶍3=ξ:O1I˪*@Hbo'ע˦Z@X&`zZP6PUbCBc3r33+\ ?8%q8+ׂ
E֤]0GUde.*S{y|@S/2P[&9⭔uJEj:U^[JSL7
GUQk>-Aa3R; .4)|\S:t.ň;j6t,tn8f;}d築)q+ScH/~qI]w!۸ϹO#Ԛ@V2M}lv(R@8#ՂJӝ"j@<߮*P
Geݡ6#G5c|y?k'yo-ٷOgV){7ѭ8
]E@ao,Ə,?
ʙˊ˕.6N/kӷ{K
q]9g!f.u(ARWJS);:EEp|-N= E%
]3p8QԵHJBq5XQzץD#?]iՂ>0	رyRkYޙ	lzC$4\wڳP!3Z5òb7P@B>_%Ws_mu SEdUGGxok]K'v~)ba7(_]к2{tlU{6S+QS>MuW`j}|V1VKk= V-dU
S[8X L[&f(/+n**kZǭS\Vߛ?8i!`/5vZsJr'rE>7)/NW{O?u
t媸.l06\ j;q_%X Ky].M*GHx%9-7iGณU
\}8#@oRKG8aʁL+[?PQu!+p 6tqy(!nBpo>, "t,;!K*eno!|e@ݺ7Hm+Ha['_
JʽNcA]4xR=Ay~yd]vOp%c'{|𼮎BZ(x_)W3:>j?4k.;1-	ip]TWtSRVP& K
##/J7imS Eg_lv~D]vaHWRvvJDlC(ВSko@	kΝLѵr(fziʼ.)s}:9)"^ҺOt&+̥s0pz@Dx3n*Kx@xɡcZy[nC틩$*k_83=M<4vfOE{&B`WwTHobqpAHb\dR
 Iଆ=Թ˕839:媪$6+iES{.@Up9xQc܏Ð"Y_倥@PNvWj[_`fDlޒ|ξuhejh,}&;7*EB6L߷s uMͯHT~ռ쮺]G࡮ҧBQ'*rRr:gU'< [ULPjRX>oYxMf+.Hο6HںVΆ@ps8jkݹIY	Y5\?UrH?뭡K6~RN_]^ou9;IxJPzJ;X`GCzT5-s-tzs,ػ+y:-?ųKuR,@W#g^҂:yUjZEkEVƒ&ߗOP豇܄bu?ٽwptbEm>+!j̣Vi	Q	ɼ"0L$.ȿX bu*=xP*@a{=upiG3Ч~#wЛPS/;IFPR\xLC^~4$D׫hP˅Ø'\[jk}9ckg+Tܵ@Kcgi9c/д7^0N2rRMC@h9*V)nvC.QGuw&	`ZM/=ȿ=qݹeH&`nNG pOMbSҦrզ_wl}}"&
|n0![8 {vzЁ7t=DQR^~N`}
?;wlâ^ٖԾM!%Rl)G|n6"AQ#ۭ`8pFWm*~]Ohh8<d%;A
n¤Wm=8ײu5-=PYOMAlHO/KlKXw;~dϟb4~&Q,= vb$e+ץ p	q>hHc{brjl Nɗٍ+?Þ+ei_8
a)\cZP]nօmw`b*p?AN4ݺD<;]85e:$d2Nh@E5
$ݬhnߏ+ W%YIxͺ,)PNU̚%8v>'(3mz+k/QAs+\L*%ͭ~dTNjJ@!%rUFIX>*Y	:]㦱^ޛXNw+T~>r!(mP<@j|L r#{{ͯvs`HHU^X(PUmwq*ĵ;8k$>s
lB(,̒!%M6ѽ^ѾapD~-D m+6~@ o;{vN]-Gǒ{"r"bͱ
cTJ&͕n_(.W^}SM
>֍:p6}uaVK[wťE#uY	~H-ItٵЂQUm.}FBCVt@g}''-1"[\c,oLU%/18NR9G auA[ Ԃ(X7V%R@e
=H_IS<-
g@K<@MdN)]B8Lm)꤇٩5\~'g.4*ƒ|
9^ v]	gɎP.bt|͂ kplRe)a`0&uZ< Xdǜ7z$mb;?al
+\rrtlxAB *qEϫH4"@i.=O,N=ATY~z&N~-0HMG-IAkqVꃜ^Q
pq_wC*T;_LdS)USf(4	~&>%BP`WN Ч(]jk98I&$U)_.Vg,,9qnJ9ZK֞UsJ	ZxBT13NKmT)kmIҸ
~U{6Mc^eԨ9gI9ÉRݡNSDPvZ.ڽC4"E[WC`	jSXB",\6`Փׯ_p*^#3 Z4l.8Y͋3/X_,OsZ%Gik/(6Hgp;:|RrsyJӻ6ةNimorj0Le7R)Ϣ)1*IuU)o3s*wFOjQ&(C$,*)MV#
.]:Zoׇ鏩
*뒣zӹC7>m3mScJ)VJ`nl82̺vEU[U1慠r;|1?ZI,QYm檭p.8=)(|VPi/>xünb'9A'ݎ<f/g@+Ҧ_j_ Hʯ=}գrc!m̒Yh3PYdGτ|{8tDI=@?[c(}}Z8}j]Mvմ^n5cKƻJ`
uҧdjevxŧsWlND%1'	w$x;<5>~?r]'ogUw/e/′
:O>SK.P7Z6~С+Фru1rCzRqt;NU<䐥(N7"MqI=Gɭy76omw<
	F,R'8\t
g%v]	?IPʧk(~s)QCnwmL.Vp9+\9ʯq*l-0%[TR6#
1<nٶ-#Wc
vLmp'Fs``ʹjܥ"91֬U ݧ4wn$亏)
U؏Mm,82Q!*@k%b5Ħr9-J_c˜ln	&`(40J+K^ޏ$myǕԛ~aZwvQ\2߬5KD-ldSWJcqoz7lnGV{rq5%t
idqgE ;.^F;-odn]("
Ɯ#ֵW[GeY
^ex0˒~j} rٞX(ǐyj?H\!\^,7O`uC7@~,IDtϑYhJkL)Pͩ8
 I?HQqoU䭞|[>_E@).lN빺 7Sq=cvֳ뿺ܩv;-kێDZ	Ю6_^74 ,0;c $fjs;tOStCxݐjıs+}2偁^h9 xI~^]NmtF$[S[	H
6Wc~3~JEVNQ`۾ӿx'X^l̽D2{}m٬1>dm-h)ӥ2M8مH#WIIGyú{+h:]u$yUb>~9t}+d:&|dO?Ѥt"=K5%(wr#k>s=[3NG ZYdbӠV*y%#y:R$
ǏJ#mҾ蘦Ku[Q#;\ⶥ| e tp5O =(]('9lHP-kGN7K'< wc[n8KnQ!;#.Nhe>v\b^׉
,q?k
t-%>{\8,B.],#i ǀ߾$97T>\SG
J nd|d[ c: QA(2a1
Be	E2OwM~2m5.vx+Ҡc}\}] :xpZȿX3๊
'jG\omILx{$'ڈ[aX&RE,-*#+V;f"VjLpVբ@TcSGI+
W?&k:U{t4u҈ 9NEre60Nk/J>7v|L r~.TJ+Nk^ic&.&\ݷk(kMMaJr#.2P(
i;YzS 3sw#e4]nny~a
4+D:=)R֟)
SC.]|2lG2	"D	vlg)oXe$H҉b"|:縚YzBMXO{5iek_^`Ç1,YRS)ċ<v~
yBtrNu$Ѥsr9hU聾ܶf[<\ ڬvM.^+Wq=	82]BGڗUݔZyt9GKO}teG^~HBbpWČ'*6e,Heit?}EpftL)gMjh(~dF':yuwp3 #}V2<nBl[7*iG{(÷3(-LSkP%&s/pS?N8H =ζ}/r,Gdԭ<UAE$lzCdG֔)JvP
9:	FZGG?X.0
sMqVMh,)uPnj,gYʗ7DJhw!{rԈs_ͶmA)z
HwEӠǺ٥/_#$1|_EАxD˕Ǳj]rӎ	Cۻ<^^}"8~'o!QupXXqp!uxThbwY{ď}·;ZG>,O:V|8·E-=sHͼ|=Nj9SCD#Wƾ>xjYxRT]0LY<wkFYar0g]AA_!;
VO$J,
Nj T֥;b~s?C?gK \{:j.G2.~8s2wA#RnBl߅¼8!MKv!Wz6.i,sj^AL	tTn/Ja93t=.bA8MOPvpnmRk|6P, /R{_OKw(luA[e;DP@.[ibp yתX	6Vd[yzAx.d#1$ّuVrV4۴`B}ksYEYvEЏ  Fv=ÕxEg RuPG*mgG/'4S8Oo\QۮϽ'n|\68^I
s-8q?h8M9'h.hՅ~`fxfrcԴwO'x='+/8>G#CӦ]9ovt{ٷXh 2,DV>ϸl3푫yN䟞{p,)ah\ueU޿5,k7QGfO]w;vVOIP;j` s6Xꞏ(|R<
JL7˞AG"Ozvg^;oCgALJjW>}LEGD5D2fmO՟𬼫!\-'C?ǧTSCO*ZJ֮"!ynD~<pկh=Apo<,*ȻD~|
j_nbuSg荪Wa#-E9sGܓ>WYycHsR.:XnB{&u+Su&ۥg*`Of fjbbYC.
\`^ITKAK`^I 5*S+~0q\s*9:g)Q
Z>>r|]WtsrӰpذ'"FdLltۮ@34 
hITMjfށR -diZOp85<Z܄\u6SlIҨr윇3Ъ6>+SSW	OI}乓|Sc.NF怲ߵ0rDvñhZsf]3;j17&}iDOY,LQ~(w
bU:Z'W:h ~W/;BX q c\SqrU   xGS5tfm/>c *g?귍/Ϗ_q,Άr Nie 3ڛ٫ 2Et
;k
X@hs(J
뺓}oyЦW2]PKWBJpAws}92!ʮec sh0 %9&&wnd~-!YVc)~Zj<YUIAetbަ[c6F˗BEyIF̭x'|Teqѿ	0G0pR4eNTog5#:hxq.KVo*`TvN jZai	fV˘ `gԡJXC5{&;#t>*=_6-G*<yLsaN6u<}r@HA4uG[88/.座T\bWO	9Bb^P:\J	ڸD0':N9| %9沛^K{䀊ΪY)x}8 V!ej H852SgazAO[/ٗBجӄ.	p& E޸CݦZ,IO^mD20	ܥ?\t}b{)a6y&㼯ښ2.n˫#WjYrl}5|1[{8;𐸶5\#S(\@k0=tǿæ%/7.3*6gYZ 7f5//iEg3rJsR\+y"gp3quNu~YE!Vܩ  Yaw$MjT,?.k\G[MbHoٲ6:BꊼkՒGݪ
ZC\^_W9ߥ(RjlǿRRX=4kCUU:?gTͶO%J=ÅB74+tшyi"th`3ͫ`sYTG]h$jE h N??Hȩ7Q'2~UW8=].i9ff7Yw̑гIWRtثV`Iu~8vlYP?-A۞k)4
ϑco>°_~iܾe8@ne悌J2>Md7t3?3gOmfunGAO!6`c\>bLypɵ|بyR8.7n.NP\A	}{ea~Y
}o/ "U%7ۺ};SVqv}0"@7|34V,*nѭ	
,uk8+hZ|rvh!Lí\uִN+$raZFu/@Gz$M'Gk8X+
j9y{8prj-PR,SlZ4<A9SdU#=ȕ9`6qrUH֌	d[3][Wе0G<"RH ]X%1~L?A0Hp]MS>	yM.~1xrHzAoT=) eZՔZ@X_/\wၤMUVAc*)2<F1XDkǚ
HzJV8\gS(.YzӷWT;U Y/K~Ksu%e|7ݖmU/!ϩLpkߧJhXSb1U'-;iΖz|ED!Ԫc"<cd̚ݗ;x;~,]NRw3"JMIΛ@\Q%WcH/=~|x/Os|9ȣ.~mx$[޿ޗ9d* ;	ˌɦopS	 GљcyK]/>5NX	mܼ з;?A!Uyv5$&YyKv.EvzwGP=uf~.En/Pa9ݛHER^xV6fkߩhyvmtRYq CV[6d 1#Vx"K@8~X
Pys
Lߪtؗ q4BEi.\hڹ
sS\%V>E]_mܔ&'~8'Z-H'~^!Q}fo5
6CQ1M"9xv^S~!]`+L|^ua	
юY 8BI3䏣<NH\ۜ+[z>ͿBҬ'G*)2M#i:.3#(-m"_/=~R8wY@ZuEƐ,v 29 tzQ,:
W*jr3-wEӃ7p]A-%ˤ]Si5._n+	x+u#l1q!71 {uP2.鎟9tOTmvؕ2T
ڵdA=t M4ݺkFv# v_|CêV}PqI_n]@)ti]Cj2C|(/3r-(3]~s.^4V?N[WOK[BPquMP	GU6+ 7=.[/m-t~
ܰ@..GAKr=]-ɹ-ZN=񸂘?|Fn+7w*ILG۹djfㆤR!sé8Wqug^,dy}%UVA~upBmӋՅXWѕ,$ơ.XԆ=IMu@.#f}ogxֱFs:*wGv~kk3iBfh:Okw`2f
q(v/I"%EY=$uܫ4Hp/U!3m(dGt\a8XS (+ʑ˳%s+!JuB&5"Fڡ&}j| T1B==sJ,5+HU4K
"ڄ9pV?(RXg_ݒL螎f:ܰ*U%ґѳM!퐞QX}+ [#fEFSiVlqCIX
YȊ4ݲ7?{7G4\.Ym^vmA ڝ׾Iɷ~:σA4U w'tP`OŲwdD<kt9s}\
G[?b[uM_Ɋi8,&xlr6݀9Uo
MR[Z(~Vñ-GYHV1D,zp =bw9teQr6U2DSRq#>rޑ@grnF/v8XFr>K(Fy__0O.iӻM"\NgvqxB :9*˫bC -kcࢳtP!%Jkqt8zGs<@r
;~pAimq.fܟf7g{vPqMjecɁc/MSpW0}ۈZfJkBh#g_T'Ƈӹ|^oəPt>#52"+MXWx^$$3 D\ -%;|5`XPS^&wPplnmw^J_ƶh6uhzq6a~8Bę(hPb43uJ6@eY~{5?L
ϰ,lep2Z[S~JJhH#WBꀆ:c]
8[08dF> jDuk%sہUѵTNja쇓׀
G`8`BLPMoBŝ}E<	9nq_hRd3A _ß5is[jX%:=_˥saΡ8=4:-lNB\;l
Rח=D AXat0.`[ׄ){b$'ۡ-+0K;@̬j=P[q[Qϱ[%iKy5`TBn>wst1!Yo3SQ30-t"
xB]MՍ	vl\Ѻ9o"#-Jdlz;tg$<~_72fCu)uYa	>fk|[6^:mb2\1@-jkuY!
*uY(mݵrE3șs?)eLե
t!#j锟"J;-awRk7 P8㶃\P+ԓV|42yw?d6\m%dxO8tJ|3W"LiKPq9j7wk[dGZ ë*\)MqEH|
ieKCƜ-g:\n*]%
|vh r0Pe;Nz rzϭ^#2B&]-dE҆ʞg3	R`R$9癪@6\sULz	?Mt?SU^u@[	'K?C&oBÒ6$%!	MqF0l'qyp~Es׬6xH&Eg~1z_:19|w|bmȯ}pvr
]^f 
~nG{;1ݤ(*.-|DK @:D
bbk(nӄɻnb\v{'^)mEy9b(bĽKr١Vn~H3q;^3\)p,𚪀5}Yv*@uʃzSr׳vZSN18UYbE0EiIE}FjW3gQGo-ꝃ\ZIZR rmr'Ӻk1,]@Z9 ߧn?m[I<B7u:uוIkrjjeA
ƫG[}ށ J
[V#nƠ<ݨMvO+8ήX}%+Yeay,RR4j~ʞ5 kPK;ھSqѕT0b7Tlтn¶.9^Q"Kuq|fSZ(_}]yOn# Q[Il];ܐQTR[k@S08W`λ!]n,ˡnNUw|gdƦsbz9'=dQ<h:9<FԸ?A^>z97-hzO~v}~=ްI\pdz2
'"Oj*N\?qrՃ{z<A(:K̴-H@1ǣ=7C)>^ȵQ}`NEݹ#W>Wk*>@Uve
*MF!F܏ޛ-3ԭêGZq(\A
20$E9k}i[,z\n-3}ϥKYRU!{75]dgWIw/AInm0bVj㪭E5\
p]z;"A=/ܡ}S@	no*7=	:WHj[-
\ .14-
vsIJ9**vA<?'KC;,j L"מAUN6m;ry>-M^ρ\\;KYD[b!G2^|r]>'lQ>d_#$|:qNK R=#dZ	 Ehx8&~!`Y+|ٷ)=N3(3./#&槍Yi'rQHV]~>a5u$qGH%ˑNp֧ƽ@ՠ0\K')d`Hn/Fo ,8rzv5T]B'fp.0;J!g7 SV4GTu,G=x8I  ; ?ѭ8@=G+9iZ14"aH ܌9SN|qQdThS.ygdմH[XR	yVg,Zx"d-S!tYz%bYƧ8Bd%;5>U9uit4A3NBo,bT]H7T6|^6+V$gx<N#۫8C퀠Lr% {D $0	mq)"x;0j`]pbox)ݗukw׬Z@8[pJ4OEmpC7tRrZ12oՒO<
rprkNK>WE3[DQ]Z1S(ўH)~*NE-_`WI`aCD~[uRBZH҄@zۏՌK_[.$4Py\ͻi(ţ%}3$%Kq?@b\iluZ,#:FJ1Eۤ"H!quXӻ?>RnDQCJVC*9SSd#N΅\g'=rxCRQ ,*pT4!ǾJI/b4(hhkI2Oxjl5?ft̵-X0HrF+:yIeJKD2vkB[X7l҉ 4Qc3KDbN8w9A$
dt'9ĭ̱ϲ5,}η?@l|/e£ VXvzfuϗRDb6_6h:SA/kKDLVu,4*ghTt銜tk
 M(kuw	9<`IX' D(a_ﻸzt@Lgl,/_
C|RrԎ:_w[qKF9ߪ|#Dn̗k!?jA4!I)V>fcg@k1~&]˝jMHZzj	 Yw ׵[pYmBfF%N_nvrS;{m %bwdYQ."!vrU3=徐IA+zƾΜK]Ќ3u::=+]ne >tMU?da#Ψ}9+VPj0<`ڨـHk=_;/&& Wz?b~-\nsPD:Cu{oBLkKK-ܗ~XlæK]6;}|ǅE%S?;a]bATbѼWLkvAߥn͎>$oEDLiiJ>w|LYV5ί
ț<<,s
b9X"mj͐g'SQO
.A
d5ﶴ;kEKK\&)cݏ%{+Vグ6o%}Ժip8oqP#Qu.E=<`՟϶'ttTp:0?yo79dMMtAߧŉ1a%@Mz񙧺=2xHpDxڪwo'Kp>YoKV/eԡuBtߕU[x[*pK0q(l;0)seJ8̀X7xᜓka|n=iu5z]VV ǑW?yc)z	N%Hsql`Z)U&G3W3Y\YTvsJ|1D`wd+s|onB.}QQu%4!2w25rԀi=Pڣ)!)蝈GZro8$_w]Vp#ڵ*=MY7}*aݺwUQ+?szFA5A{uN!fn0-mgZme}1hA2q\{:EEz<zsVQ%E3g-Y9ѭ=4/6Z&q V
.vMd[Ndg+>ޯ2it, 
 R?A܅=B{xW 릗IٴSIDP#v⊻[EzY	$zQrf/+/V_v_^ .^k5(&A7HF.ڬNdj2Mr8r]=LʡIhbk u(Jimu̺1eV$ŝe)!`6iqSҗ˚9ף$cSgL&T2OHm,%O^&"0*f{βW-nwKMx9D6ߧO*8
j֍`)sU45f>rL; 1̆GZ{'`z0L[kI|mwq=DዴASr7{G
j_=X^.Hqx V\3j:(ğV+<p]
L[|KǵpG`<cʕuy$E x,6a~ud@riZC.{)eBWj\%{wZDR2FFs*۩Q}k"N2[Is duq^ >LַڟmVX&ͣ]OǂΊxOI<&)%7gVUi"b
".+OHy-&6_!'8Z)"<뎗I1o
YAh/MJu%~]n򸖆08	.9/
hq#+\e_>}nݾڤ
ϻ(5XJɝ6Uq{ȕlTc'B-v[Oq|~N]>/X砎q ܪp 󱂷=qGmJV8Q	|xXҩm9_»>z*nۓLXJ
qP@YL#aԓNȤl 2AElkshJhnw5 f<_ՎmFL֊N)؎uogf\kFF#+ՕȨ LWd_K;X
_0V"e,4AZ ˯n1ޏe-\x*uϽ1
c\!uL*S<z)L:#-vJo{!8z7mRB2eX\M`׿g~	+Q`=T귏Gp5$V:
"!buVhsZN&
1lXI
^;jfrcZ\P@ѣ"~W;wLvLo2J\Hz>%gGq$:lfv>"}62_t(^GKXQ-NFwx2;[}/s,rn%.⟫Jco9:G ouӐ~@NHK.T8;NF/v<
%~,Y囼u}P-o
C}h>8\V<Jih-`
'NR@}[Jjm8>>Kɝ\--5"qky+zk5[ϬXd|ѼC>I/tŇxQYsAEzZr\  WZ	>:WX; xƁnsƀl|ҝ7x9Cl`U^'1D\@8@"5`Ȧ'q1;fPO#{Vy3x[b&8T {ï
|{L̝Q!ANbsհx\rOEQŐִ]F		Wܚ|WQ4U#f
	h"90)us6]کp:,I*U` h*]"1+vDGxTMjwt0uu%XJ jrD<݆݄e6Ww46|aF^.qON]92Uܮ'{\BvkRadBMvǊ$X&CTS!vsGfITcs%^ܳ>2SݶySOAzo@f
O$Qc'OY&	xy@K#YՐ
dw]Հ<<Exw9/\7ة:ܪ7Y5A*.3Sgm"Ĥbkԓ?9l7STT>"!#7&ͦVUT	i.ZfM><
~~\3+קQVyRe.Jte8bBɊ/8mf],lr+i'X֧l(|A_}i@xP\	BXl}/\mTٕ5
7r?9,|@\u9=tEp	b9U otEUrCv cõ[4Jr o$<*<14"H<WXW&#WّAy/)z	j)'tTӋ~R^}^{^`I%AqUMݗr݄a2.ggo,,0nm>U$tzފ 3ӥ
}Vq߽CngܶȠ!`|Y]#_
V/UK"Q5Ʋ[F>u~}
: k;~GGy _SmJrVm6-l	v se؜W]0> ъM^+ŉ7z|+'q/u0VIuLczTS LJf|tU$xƓgS*'
Opr{D#lpnHR@%kjɮ_
^8ź/{!8O&"yIr!+)@(wD룖I}j݁$u&T9֓:J'c!/%G8U]Bu	C
TaH'?_,O
)NmJB;֬n@RՂAPѯK^>Oon=K@ɮw@},jH>*t1<9Vi|' EF,pНSviWCdz4ʦ\uG<y;H]ڈeuJ*p7i| vin)g9$}:OnB*ۥuT*Slɬf#iq_ K&Mtd:bBv~@mU#3lJuj$~&)Cc|Ȯ
 8H:$	V^^cvvϪ]H !l~./mEP?5xEɜYOXI+tLkNr<.s璫7=7`?NդLz?Q2LtqH#߂`<qiEcWQznqu.W*v(WKg=IO%pTN2ږjF{
m
8qs"9]ehoi[x
o4Bgsӹe46|QxE֦vr
Z}Wuv$:pHE[ 6DP˕o!JlIIᤓ@n<3lo9뤿Iܥɀsst [cTUƥ_T+L$=ʮjv	$գ`#鱖-<R7G{__^/&N\wck0grV?>ATaQhG[@iʞ˖Jٝ	>?91?pEȶ\FzKfY`mخbvy3wtG:#WC|}|Z/?SfE+7ef/.BIckQC}AzII:@N&
vMi|kr9qվ=xZ=*`+]	e;+Ib묽_]oVG-Uy80-g%:P֫DҀիY;I=w7ϲC*;yg-JޣVOLOtZP0ޛQ_-ut|}n'o׫XNh-9uTzAu1FjJHK9V|V₥_ĵђMJZt4:;UOW(Av}kc省W6IZEРLѫ}|N&4{ç+
~$x w8nF8Ϋٌד

;A!la7{Oto
E-hvC4U=y%WeXvIB8gyȮNm0K~;B@LU?6sY@$:i2ly,MRq`"0\;8
{45kRn݅A; R `F0񑉯zM-Fäq0J"#ٟU-,ixFg'B[Edm6E<K:\ن&(k$:^68ˮS@:ol

X_nkʭ]ZӅ;c3??BW87)=
~^"ģ3\Ϛ	1?x
"k"Buf	Vyq;9=8ȷ8?GMɱ#fi;psy<d;O7dGӹeI+vBė{3<OOUfD$[3H˯Y
k-U'kE9v4x</A@mMdu+|9=Id(
@+:=vخSƃ6>q}:r<hͯeM\(RUX~V7	hy"	H=aA;;Su4:ry/Ǩ]}.&wQ^&<Nqp,Y_.!H@j6Ɖ硻޿Y4ekkJZ&RӉY;8,Fg5	IɁ{z^!-MT},9^`uFK{UxɆ8̑}iEut J#S5'w0OZb3п5&Q?}z||ݨ|r!pO79Gjp||}'u?;V$EՄU㩗Chczu J:ԕ27|uuINWhQzD{y=etяOSs*	\JYGrtyQD5cN
#:p={{56v疘i;khOe*(qoN|ޕy7
 XCRX)&wy1Ԥ*AuQAX\:
~~:]	WY6te2aZ?LѻI[{1aA/~
ҕ#RqQhq62F,(6c;^.5F񪃠
MO|SpoӏYn#u2D{OuuB]03tfC>h\[,[mN*,O5aYnB]<Y^.ҌU{$zriśEz~
hcHY==VIC3z	\+QLSuy,u\ͅ'|O?iD>M-wڡLV}7_*da)<r_)ӆw|U̞G;7
Mhip*Ӥ=@zɏc>hZ@Pkzv w?:n@tpRrv=rhuOrҙ rbπtك`)Sƛ9KTZlQtTvzޖ8Fjdܡg2,.mxp-b>ocLB]]xAq(jJ^!82ir_;=)fh(s
g\GY{7o*e3"T`!ŨIоS	GW|C#/Bl

Ӑ[Wǰ#
쑟dJɮLZl	qR]z)6Gf8Ie,gU>;kF^%ThS,~L7=TK]|!*vP^x>|&|A~齷T?tDFLlqpX@:`<qzƼΑjt
uZ;tTtnUえl؍tH'5M@!X~p
R"|7?k`|}36OoiLz@Paj9<`bzUƗe8e@`sݝP3SZcqy8	-%	~t<BGY.[,"Q̷Iy1/En	 p7Ary=v+dmTCk0db"Ki#0?IW50ehŇ"\e/	5OQVʌ9#ʏ7#偹Gw/UgYF};Qx{	͓warjjN5;C,Yc٬owbWebμic_йX -Kjӎ˷<Q5ftB]9@ ]ci$љm3̦/!k)L`o:o,ufh^NRiƯWM;d
fxP>|ɘ;QnI,ϾsFϖoTR+3_֢KSp1̬K͈XvriZ(d<QF;8y|U̴p;d`1Tw{/3
EqoReͽW'@I
*7Mϸ,Yfj4iDL-ؓi\d-7|ޱ8Nc> /'TG-ؚ0xn,;vJZ?[٦=/6iI匿{/]k|y{LK=H~}>Mt"1vz |WҁKS?<+.5
h[NhqDGQ|EjdΔ\oNWpB>
:tZy3jUq74)P1' I9fsd|7X<g+૏R/x(<u?(m
.sfzjyO?Z]ᾛuNmFΞth9D
dMMAΏ_)jКa^i;[2͛=
3]|b<cc%xٓb{_0yԵNYgHY szIa18Wrm-t1@zM[<{{2
^8K;~0`gcgvxʕـ$I5%>Q0'v;T$:*w9ld
Q/[Nl23,=̪IDx|nl=^mXZs tkUOx
>c>Oԡ|jCɾV)R|p ,:Gl+F-}@EH$e'F#;!gb9-ǀz>CV|hѰ6^Z#7^
͏8?ȧw Hoגz/I[X^uQ0e3Y5Fu97q_lmŚ渭3N]TDT
0au׼kƫ9nʆwTcSV&(T)00sŮ#thׄ+ruߦhw5[rA^Lsji9f5I`b|CD`**x`mÇN1	i	 O;POt+Y2Q lh3h<x3*MJT	U
+Hy@@l*LJnJ^.{<Gw_[ngN2)ֹ$c}$=߱X1E'.0@D
jGՎБ.l~76
X?+!߂9%V>뢥h)
7Ct7SAGh(3n0.䢫uณ\*^>3p5k &'Xwh
 MЛ# r.Tp:)L^v:^qSAqʨw(1.yOin|D
+  D댃d HikLO3jML0~O*iz8K?a8Yd&eNjv@Pc<.>NZH
\<2-Z$EEQ9StZ\!	16DcsODe
_ml(#,{Cp&~ar8AM}r!?/H&n[ޛڠj0-?)ǈx
Uق:ku|9CbE'f%n AV7EN^̧9CEM'ueN< iDs&ԁ{ܕXZxDEi]9Ng?B/YQipP ''<=C+go3`xnpV#m-֐28LS ޫt
jLC~Z٥ʬ?m<y54m "ujFgzoiu-f`XR'~iC!U]PՊ^;Ӛnܲplm;=z֝\ݾ*E@/aulW* ,Tɏ	ǡYx(BǞUViEۗ{;ԦLσ29yk4t2C-`MW`;ȃm@[V-u^ai'`pTZUgiySp7-.?V%߷K=Us{
L RisfxϬ4I**jyh$0rh	lZؿڵF
T"cj[Pb5OQ}fpka:RI~֥@o	j-5M9%.*sXAo.g98h]-860޽+w:ɚ?o7=3Iz*K.iɗT^6cg:u+?%oQ3% Ye<ttz>=lHorF[6K'Vq/yOHhi	(gp%uhLUQ{#8@,_S)6NJOH(9egIM3Q@ ''Ka|co@3

K1j õ{d-|Qbf;px=Wv\&<ySI7u`cF>o2ŢB>=kË4Ȝ+$}?B7MlH5h
sk uO/fmoc5.T!?x#@?B>x*
ExyxCl=QA-W	҅@NvIW4|z;<GFRL#x68p4(2jl'Z:}&wqUT<:Ǥ3ZLY/ T~\Zh)e雀4XRMJ8[
m} A@1"=[#<90&x!z
W]{+CQFocj7P '}g{]=ûxg$iUAȷ>Ήּ/
7ͦAg>N`4@,Wޮ%]7,<kSG9Qbz
G%_0E}ultEXiCDo=1j(ʀaJim*֗to,sAm7[4./qMJ. b*'{񄘶Lɧkәw{g̈oJQǭzcD5{?HCC2~FX> `UͬxKU8aKh
^3ٞY?<fTRtXSw$ݒ0p<saCj0.|b&,]:V;q724N,dlS+dCSzY$1Pi<ТnA0j7n테"o(~mYN
hi@am0W3wAsX3ؾzx`hw3Eǥc}E;_
>;Mw%hFT
Z?Mcc/1Jtp)7ԝv![IR݂Ba3úqDLՌQO/0Ƭ*xCwq0΀!a[@+F3*@ k%/ED3qz|>;*;!Stݡ纊~~|w(Af׊j_fBgufY[C'~ͲF
5ޡARi'-aw$^
*r7)_H~{o4I=r@r2;(۰3= :bH]
`&^1N^DZv\U(**<uns0Kk~R3s<ӫZߺa.h%5~#5N~/+9	Z*u-dy /8>=L?7|-|Q/n lz:.HuhR֤d{bbwN&Y(<uӂS&&Ubk(sUY	twkYDg[zz
ȉ
p*H x-EL5ċy>6oGôs|l23!>l:zYMYAUYDJQc8-QX4M3{\󎤡zI꽌z41yzB<2\sv'̐W,xPTw4	PPbO1FXk*SoѠ^ɖ+
d||r1X4Y3O="
;7;=&_ b])UR77	;y4^>Uvq[u3@3)}kȻNPN93&TөphсcS||vbHڝCIw^4S-ﶦQyRXÞgclׂiw#Gjf/^
;'gb=`eȚ=qV ҇'嬀BB@t~g2c:q򎐚sL
5k5HVpsV/{7iwz Xޫ˧Tӥec?!έ_7o5pOsZEɀJ.x7QmAcy;ލLZS/e&ShT\HWu~QR۟Kaţ֘:Ği$jJ(iތϊW3֍jg,ER:tJY	gC̥K`#6''l|_iJ崝L ګXJx5yIr)C/y8Eyuz-
z{a_ū;>%)?+h*ˮzkh>T`Zw;)=c߹u'QYdi^F,ʱzMF
3 }vG+X/
H	#@+U5#!D8Qt9ɳx^ :WBOfi']CXͰsf@!n
;>G⁒Ruv/o7E%=jI}~C E_G8.٪}
Er[xe A_Fμً$:l7=DpG$sf[aW^ţx	*ИMFyl_` $getMVSE>4
c8;h$2Cŝ)GsnjN/q_GLve9!GΜk *YC3gNqn;
TڟP5!ycNNf.@xy^BWa|>G5+@bjF|.l
QBIG=1&8: =Q3IsI[-(Sr84!j}R.?~Fӗ5ЏG>Z;hz֔/9ku}ƈo,2n{ =z]:7;IKH ]i[6=1'vC.W|H4uRMfy]+D-Ǚej=t8YHgȏC\<dsF̣dm*n$U>I	IWV=UR]ߦ9͂j6Hi~G1',l]/G=0>d=TܝJ3E&Q.-{ҕ6yq !E,Ǿ(HKHC#w_t(;Agozw= 	qzݜ3)0+-'#:Lծɯc#L@ؕ]e6U
0S_Ḿ <A[
xxzLCL#hk&+/=2ixzz~S?jUBPh5f}@Ȃ.iuhEw8/>
X]C_unqAXu|OG`|iH]˜8w9@{:f  B?&]*y[Rrt(X>pы#NMZ/#2Ѡh0qz@'~L*N,y5.dYC
`1c)l?N66X
p|IjG| piDt]^C+^'V(H?-Ij)d.];GF
Q
J6{SORdUQ=Zh?g<+1zDu3dGDwZK8m<gަUqll 8'P綯@P(E'cf20e= K,
|v
oKpЕkS΢Re9C[#59땒ݖU !ym~BSܺiS͏-- nNR٩ɯ}lh^Y %N[ C듣 @݆XWL{a{X< ,[J|~!@6"ݚ=D(fY*1ekSeTfAA7'0%^Ǖ_` /<s8]I)emA/E>)]БBd	<)֡CSJX ,]$OFiɈc(ub($ѱi{$0+\v 3cNGG=e?7RN:=
D
fTnP`{n~
f)$oytD1ꑝʟ9P /gJS {bm-Iak-z!ׯ(W׊*㞰!𹕵/b'>r2c KS[cxo$4T.*X/-{Yۛw_;0nռ#7٬l/&2OF-
i+d7@i-#e7{SD3uUhzfkFVX>lIy"x>0kT.P>_5EPshV?NUO}߶ fWYj8,)?x׫4 k}/|"/l⏬H6Mh@~U ^%? 4]FrW - JZr9m@f(QJty&X
Sw	dKE8 <A\RЀÚjti P(屈ٷTi	*NԬMwm1']Q1za8ZvbpxǑ_co٫
Z:s\QUlqf+#s
yECW#,nTGj§>ȂrĨ̇2N??Z]4w%|s-w@|ޒ	p!#d5t
oޚxyZj>/#g*ǳVRn?OL 1Qvg.VlZ޹WE䟗t|GsᐜR4vNܿ!;1$yڟ)=!%#{ s̗ N )X05]٣;U8U"`<G_cy**SSxԏ9qG6s<mK0hIW<:?]רrl@A=%wj0|Fsh3r@
([zf}R9#4gƒ9qht#'%gy g>J$6K˭/k2 )JyOk`~JNjB	oZ-D]Q̯T<l~0'̘vXm;;Lx7	ۊCFzk/c'}s8ӎGUuz	X}
7ڴq6;Ϥ6AxfxM碬EHM`U-U58: DÙN1I.`i]FtR't|	dhӍ;9i,6A1;զP,GS'Kb`C0n],JmwQ9;&|JD'O#Nj~t~>v:Sj+ Wǜ	˰"kP1 1&PWjZ6X0OU¦q `Qz)\a=Ҁ?g-zqRe4tȊgz>
M^z]92,hj|R ƅRj(".Dcф:A
T<̕/SJDyB.^Vgҙ[HܞKZv^>@Og)9c(񣍲
Y7DR8^Gs|WHX|nG&K~tF{J:5M`}̋Vpp/y͆+>9WĄ4(6}uAw|	hy/ÜV#b4.s|hDw7Ma4-բ@myY=?O7^ħ^ק)		2=ffH%-To/=2K~wC((1	8GTd 78'՟ҁ<})ଗs\߲6@Zb9[*z7H.RW,]Ve=ؑmeM41ݽG^woJuYOKF7K=&mJfQNlV2 !1p4^G|5<RkVYTLg=.}_S'ϛk؄ܸ4MH=ʳBKw֬)Ɵ-*ߙ3jD gP@D\+"qXm-Mt6CTF+m&B'<H$}j U|e<JNX_`OĿ&$R=E83S|,Mu4h-l?sWB6%,<I1qj3J2pTN7͊^r A9DIA65}z5il~X#SvltSEev⥻GZSnlXN (< ɟL]=0nvj]'ƾ͸
H9xGC0̈
Eum;bI{k2`w5{7e#)9PK|wɃ'OzS1`0h^Qj/d2C
 8СK\yFuc|u
.R{h w9kpRlzyxzG5¢vI

>snFqK.~gr)'ho8{(__<8tx
a	pqK;¶۔;XήǾ
+EɮfwP'^z^(ԍ|&}uO߁hS'_ q&W9aʖ+PT@Oo*Mмu
N	5~V$(|
۫I^>hH
sH.}N9FG~m?#޹aIzB~>ikSTLjKϙhm4oo'DL	3|7N/561# 
jrH"W}"][Z,BVt
JEf ^q;
{:|m$)@'46Ҁ:%/o-/uŏUVY/Ļtzq1OxgMh1twķ)}K ՠľn ý%b!x[`:C5N:B&6}뚼#;V츾֜@HCMxyK1-&?x51HG7)3ym8 ̼0J=WƼyhD|qG+M<be;rk˱,	ƐWM	hG8P|7OA=!UЗbmǥuq{ j#Cؒ&LK҇]u3͐<4W*5Sch3Ǯ(7fytJ윳x$0<rD,e`ME-2G5J21L(.9 #l 23ZM4_UzЏWbZ$j	Hq_MQ(C2)wbҵoᖳW`ȎzM =kd0GR	9͞k[MŸ]ո~~V|Uj$cN^c{<ikLϦs̔W>	ӢhUYs:tP$e~h-~ru\kxu)5ڎZ	gCUu<"^ pxi'o--sGB:EJ
ݫOƽ .tg=?;tWx[agy0}\(PE *FJVǬ1NVAK9]$F=BGL:E;k̳Sܦ @ML_4C:w[| N?輍KWVq!2^nP+=GO4L\}g͋9d{L W<ݼ-'3j	L5/i5W	 &M24;S˫l8ShVOݱ:^|zu:n:$V')W#-?at& D}7!vgcq
`Pdw$f,=,vJ
7;ry{]C3XgDݞJ<b(0$S6'Uj0r5{ìH,[f9*0xqnpȣ<qczgQzr*_*:;<<cC
<-=fn,%GC
W1@ʼxկ˨yƀ$g?3@`7/S9
,ANR
(ksWλi,T"(ؠhI
LHin6rd=/~;hXSUU)-gE.Oof鸥R @W'/(;~v]7`q!eQhm5y}%ML+|TJ4WZg=C7]ހ&ћce'tV7PpOaCα.SOGL!QO
W̠Q><דaS+Z`մ֕?O4,IcWOo z^Hh^zy^*0BZ\2ڹ&O;<YYB	@PxPt3lEQtYH^R{YG'֓*?UR/ޣBOhs8tX)0Z8>ð9oD=*ek1BWNU8\Xt9vC=.}!ܻ^Y}{+aH	ßųuw9~JYh{ĭ:k
wҨe*z%}%]>E2Fݞz`}(`<D/
Z'35),,N<孏VA^f^R0 o h'`SÒ *u t)(}
<=)ex"2}S=o7"|֥'z4߹|sm6$gŸJup;W;!LRn⨿e.s0r3Lͬ`j7d-epJjo9 lLk6A?|)<
~+?əZ$Ag$80sitĿh>7ݜC)Gh{תJ>.}W<Ne<ŲiگAxT,
oq軿3=I1+І~cF\r\`
"兦APO'UAza?|TJeVeZV[`i
/:^t^S):zWYwÜ!٫}|
&lNs8ڳAP&M  z/:iIyz?C5|hJDcsLJݾ^:T=EǺe{B
W o}hQgYx#w	ry&>p!hn0g/
Rg:IOi8?q;}H6{qv;{.c3[.km vOv9{"h5hR+~x{	b6_qy IzGEG&cv0/wM͎_hqNJp=v6FKQ%e D=eg4{xPR6Cs>[P#K,u'{7cHS>jr?Y^}y4Pu	*ϣxAd& 
UXuۃ/v;{xic|j9*B=P}U˹6fx4= װv3Wqx%0t{Ӿޯd=0Xc-
7AHUy}4!+B`4yNn.OԷΠXMV
2״4)Ǌ5fkD)?'YVZ^[<s{fYA/=غ吢mZ	7O-H7CG*PKcN?^[tRL0Tu4[n֩>kYFTv2aڴh&48j,);m71)c[3BPPQ[l' `toG]z޲ 8O;u;Cj,Qy2<r|{[kzxM[ike4}D1DTO
oHyqjR_GLhӠz8㦮A*[ܓ!AqJ(]^ENib(zѱjUT}I<(*2hsp>bgJV8¾eiR)QdtOyCs_*28<}׵(.L
 oc^7vc㭸sLQŞΛ
x{ԊAeT .&o!:KoӣMHF͌?4|T
ٵhU]"lK{16ّΦ'AD#fQ)Kbtm+=zbt4y)g߾N2ЀAUwyh{ܰ:rE7?PcϧQ%TSw]Il
 |iLAǷ_2Dc(BCO=ZAM)pV+'?N֐t[/ L=m\iz
y.LZiAuEIo}PX[gH_^SEtbы#bj4&\?o
܉p/o)w`Z: 6ʁW}f_Y@ۜ"o'=UCnrgbWGN;(d  ثD69kдX<z2@Gv#(|./֓&>,w24^@փ<
Ã^ ;3>K[>0d.S]"ty.~rK %y١rVB:]zF4Ǳ|ʖl8;X-Yzc]Tˮj0hA^0qeXj!u"HyTu< v]uf?d3V`@zkWOqe=rʇG[lzh6
"t8?Tom
WB? 2o)N6姚9z1~IHCB_hPuputlWc~'1<R3OR/"W`EKS(P_mZD {Nep9'7Z6WO*3o`
SwdT:WtN]鈱3PǎyphGwҦx

] uq493*yaZ7C$0DJ+h|:xcwD
WOy_q4C7yɥ3ޮwOFk0px OM}֯z,4Q&5l:]ږqb\
PzB;>'
>Yq/R<ӏR^-<t}ٓ۱,1#
mHG=sFR!G ?K1^𲽯-p;7g6sN]81pmacuX6x@~̭	AX{(
 ?2pEʂe
,3mfTp
E+SIrQԢzPaF8T;(SUj(+pA\"*8߀S1d.'<5;

YNŏ/k5zNzƛ/@ۄYLm􋾵Fmy/<]&޽ o ywS3#%r -@]P88EK* E}Et@7E@/}׬gQ5g t`&EQ-V3x ³M}Yڽ3KM
JƈaEx1\e4*GGq3Re9K4n.'iT(N7R&$
Zy9a3B5_U)Zz
^JC_zu2fo;$kƨUǥSUԠWF}yu璼4h#*}a ok5a18 LTe{TgH
O0o1Ϡ<0[pit7D09%P+?OM5>qZ*:k	B<u5WSMKy$E|LNj7!]ťX0u{qd#DvJ.'<;c2k llu}nm>^aSvAHK[qn~2NCQu	HHH^O/mbua cj|I1iHPX*F%}/9#4rjBWs/:'7Ӂ~ s
J;:xh[jh񫠰R
nv'RN|ִ5&
O(ISҲSsr@毰OwxDF ǽrHXmKҢ9dou/
54&9E-{nӛ8>Vu%WdҴ]θjQFnwz?Ex+S/1 i	,5F{OXք#
8w5өrO.n0ÐKO=~ ',keAc,&2@	¥3ҝ^F! 
v1@gΦc]DۑN,Dil-5ncE=ߣSn+ѲiTgjPX53_*4SSYՍ(5[lo^|2~f0culrK
phlLE@6pI|xt0ꜪHd2Gb(wݗ#řqrwmd]ȇH3@-M
[a?cDPZRPZC=2;$zƨAQ(t8	ԅ4?yU䙶.Ӥ	
%M:`7
W SFclv%B٢3dAgĔTEV,t EMpY8>-h)w~=D-bA.;u0@<(v:=m8ǓtA\zk&HL@>DzF.ņP[:4`o7͍FJ982ɫ!=@4ܡ"Vl	#k(XFLӝcyJ)pd %4+km@c;]MӳD
t0A-Z>Cd6
N\f:@g"N34yg^Q[	N^}ݎ*T;QcgvW	8IMNH~l:p9zfq[,\2/eoqi~U@BVd?(vN39*	,u>ixid=
Räso
`|^,?GPfqիRxŖ|9(kz'`,fTdfD
cQMH4ُE.#jH3t(PV̩U^(A rfX;];lvsD`윙Pk>WEM;f#u$s#~,kX -(#oAA7t¶z%GG @,a-m!3u9m;|E+3B8=OjA^3A/+i1tbYNPie6)U>YJ˼:KeJ@@lW_hE7X>Jg{jކb,r{&u>L\Vfm%5^k@,YdE	}7襊ARMˆv< oa89	Tn5`-goҋ4m~uR9!lF'¯:jY/A^4qL^naI&:hIZG5xAe6vv"\2-Z34<<\Qx@ބ7%h>ߗ R6:Tc>־/C'y|P~9b:y2R'HOou zcAh6;:A?C]@NZIJ:M>Ns٭c6#J(Oc/ίЂ;_'/zuOI=
\G*v@C574=	|vZ\0g-eɣ-7x_
wdG|'<-wA%}t`)%
/0i' cnW;NȎϭi֯ ACicWWo*|xTaL:
n8e1R;/Qd_&LP Fxء뛱Y%u2`j	X0 7UNr Ʉp.Go,	}AӕԿb_Ow{5z(3
_T{nYȕ"G1`+:URAEMb3<Z768N%";.Ћ^9"@>JR^q+ܫD)C+qd͊O>ZT:]TƯyW!+0Γ@VMԹő>=:Tx<y"LQ]ƺRvV_I+i)WO`ui],GIv/T_II5m<d}egv#xקG 05]j
"_0s=M.:w{M/,WFzA/'9|i<Nαoj5P4Mj鯽DBo(0e7ѝ]c|SK6Uh!k'b

xwvs(\|x"}mnn/3O̭:k2Uln|vvA2րM=M2PZݎ~_̛]ߪ..eE^PS6neFփ>yp,?_
X6x`6W~Gn+d5Jq
[ze*k]D!14ϓ,nC)Kq'T	/]3_(e o-2
h
PYwzk>kֻZ7qbUOJY2A,-'?l_PHVRT?yx6$d2ˬ~Soh-װ.:o7C{pimtDpG~wo"ryш^Gԍ[N*jks@ vh505O2MN97P(_/@8ɖHJGHqٝ +3xYKVioeژrwn}7WO^UB#Yָ͸O}AUoTY9q9,6UO^a~kFog(e|rbpCa,AYĒl|O!	J.lgЯMz	F!ۀ
/hpO4`M
+U-zE̐	X
|0 .+V%@Z{ɦ0;hs$.e;>j1|W0胪eO ]!ț4g\v%:w}({vq}lPeMZ=FQGk%3I]\-:
޺ز_*m`m>ʘ
i陗
(/Q}As#|*qw~NDA5d9ѹ5	I>ŲC`iz`}$EүAw/^
wۢATnj̇:׼
*e銰GTO?𞡀BݧY˹oTe{~3소4gNwίglK᫴Dc{
fbYZSiA5`)4zcZiV_j1Mcxc@.j)(vм۹W5ua
.?ϻSD^Fj{NEZ*
8AŚes7Q}gT[=h^RpT9<,h0ka99.beÎg4i@#ɰAxnpPD}si@l[á4e6]{TWGa5{W8';YiÓ:T\دk؁ZL-:yɘYV1~ξN
v6M!EgZYKQarb{y ,t2,}wڷkyIc{;P{N΂u  {YAuq\qK#Iz^Ư
]'uF>pa*	5-+z=㑱3<:~I:.'CoCTԶN[TBUe<67Td6<{Qc]B|
oaue?ecۚ"DS׻^lZ_=&Ɗ7rN624?{wcVn~1^m$\ĸ#'z,4Y/a :Ր66(=0+
bá։29ߪjp@ݒqsKq8.z4>z'KojsI4x7
Zk	'_}4E,:7/Gȋn*EԪh,ow0 ДZ]nu٘klr&ECm(hJ{)4gLjxi7(6ZF~
SQ=Iף_
szwx'*'8U h
IgݤZMMRhO
] R맦.Ej:.ziPh@/[+(ꗣ1Xj`֚N?);q7eìh|\ۈ;0Ewt̖>%t}'veVz6u[
1=nq%[<4/;5y#u>p}#{Ob
:x;(ަ&=!+,'JLG	 }yjܖOQ>>ΏvoImޔԮmQQ:>lm&XC=39(\ъ"ho?~R<+I,seh?JwDk]'DҦ7ZJ^X4P?)WW
Qd^Sӥ$aqfECԔ+5s3?	Ft+%頧?d/{WM1D&'?zfP񼣙Zl-507TJn뵗~	e(#_x5msX  <z~y*9>_
R`&4H񪚺
P9Sl|d8B@4!^mG:lTF>=uޤ|y_M`:8^fMV	d}H"+=Nt,<6p^eR?f{<qKC(3Jc;~`HU2eru]٫%m )SX 	B"74
E-2~*Ȅ_P`y'wBHf-Όg4FtЛ 퓵:)u'yfh[(-CuvPծyy?J6]JY`QeޢUcۄ5_'H.xʕtʧloo\v$1{${B]Z><m/OtZGz2)mG2T1: u76n{4Y69MPg5o>I<9Y|;`׌H]rۼA~13I[z:/;]ǥu@)Iuj8c5P!}UO&6ǲ>!}2^pg[O<Rgz~ٵT'MH@W9	:@l*.ٔS"iAW50XOf9DU4}z!ސǧFٺrS  )hҗtSCߍ/Sӝ5iȮ5IXpT@DcB'F뽝 AP2biʢ|Q?E'=ݽ<772M^Ж_~mw.n
Deq!of]
Ic ">ht5_mϜi;5N`6UY:Vێ_qz\ں愯.4uS~FHhcIzW|O- @_NGP0ٻOT
_|GhUc(?xzhL&zC
: :lϳ8.
hu-Fm".LTdVE;R4e&EqN|XM>v!ެ9(R*8=?σȫ5΋۩gҦأOͧ}-J[oP߳_*%Q"J۵t4a[C 
G.gGXF[8uゾBb}FƔI2&b]uK[u
QY3)56]DKZPQd=NQ
^7'{ƚĞ7o@7C2uPʶ
h2{z#Ck9fxa"C	^0@P儐K#a6j{Iuc8$rVP9 J
p<aNWQg_slY(:j<M`/|wϾtZe5 y(e-PD,ڈjw?ݝ<`/[kJ ׍*NNʌ~6a{j=r0@yU֬x;@YkU3jC`?Ѹjw= 5aɕsv?WJqjuM>2q,btK/:7biҔcAG/? ڃoM`bz?X8v64Ϳ<oJśDf/[QU629V:I<`T?6,Z*ߚY?6ls
>qQAl]vox`?[)seT^\`q
2XB> h9 h6vWɯdx1Jy%2Úޛ LҒA3TÇpPvK-(ϡ$@%**Z]eFz	GlH=V+	8Npt>5Ru`;	pzl5T܏fjWy}-J]ɍ4gipy1ˣZa@
=k]}eu80(x#fY}}'^bmsU걚D6K0MO:s&Skʿr>G丒)e\
N	0>a!CY$yÊlŲaKg~?ٖ]YӫՀ2$>įԩRd%5+EZ	{ٳ{Y{H =ᮅNXOpo'a#lHm6<sJ34ѵ]=~{F@vNhW4֬JV1n[yHfs|X~E5X t*'r<+uObU6ӶA9
OQ+S	83iMԴ:]y+JVagiG8YhȠyItX!^C:ZZxZ^+SWZ
6g;.1&D`k
1#gBQ7u~tUc^ެmm~[VlHӗ4q^r%loyphu:^3[%zzP;6[6zx)5 ًb=	8T$
sd1Ӽ28&ӛqܪh~C뤚]VHG́}[ɲ ?G-g~uKpq-7췓	;z	:[ti-o2ʹl
}1-1ӱب}ȼܛ%$vVH(e6>D$t֤ouP({yX'ŏ4rcO&vCbD/lNtn:J$IEH~SAHT_lf(ED~::'[RjWgwl0;"y1g^FyceO+D=tXmG 4bzwzp}c&G%G/B*c2kj%&O_Q)8tqB6L7tEG
hZE<v7ɿydHf}̴ڴ`pmz G+Y`rJXߔ*s$*WdV,:]G?E-hgExk]٬1б9 )=IW6C?nhYb
BxA#Zz2pi \^V$u&Mx5˭}gifQ~UZ`ާ֣XPץ9fzn
έ  ]iDGrX˼@λd;K3&{Ԩ Ǻ	52
^OS,Fn%tP>.&5es*˟Z+Tit-G3
}  &=EL^j v qhF@z<$lFxyԣ	0/_(5aS%]*'*st߼ħʕQeToA%߁gRXR+0:Xײa۝ˏG2n\q]k;tvd1Lc~ʲG-lc1woRת8bm+k>mѲpZiMcVn"8y7q*l_%khPyn5
|ͱKX-_?6G ּklamó+@ 
٫\>"
Xt:6
Cq~H4U:o!{j*CB!^@[;In!;#¿ޢ93e^ӷ	/f<qQ¯C-j:_

}9AǐېuԮkq텰>wuu0E"Ozr "
Ċ( UPMg:Ѣ|!^eIKD6ɉ5GWf>le/(f?!S˽})IfWw ~.5բ-Mb5[b  j*0vq4(@DKޚ{I#lKu%w*@0\T;]V578=mHcY3̆nȁs	[j@ +Y)VA>V:q66q	0 @HmN@̱oJ<bvV۴߼̕
#כ@?4\vj'ëȼ}#r;]AVRR	6%qWsI?%	g̖h09C?ȝYt Lz	7˪IW!{,ڿ0|׷(>| #r<C#{lp7#\wVл95UU%v
u"|"S"IYSI	Y;8EXto"g%E l֬mַ߿|u!',v4- AOtktN N1T~m~KNTݹh΍RͶw(Sx{L9iU&(_-JXPJadbc
B~:U
mή
4C-p/z#(H2tU(Sid6Q8[D2"vyvQYTE3]MQmu~\l㡻<Ou|$r94ӛmꕎh<_91,VS<Xǅɵ9-ZD	@mz%Ct#/Vn<&TBqڣrX?5Ұ9('mwxe]k9um~W҅~bK	u_	db)@ᐕ籗vAl%I&[WO0> 3D`F \u,1t;Fx%H/ۖzV]Dy9CB)%Tt<C,ez;4a4PTFuzxAK𳖠F"7Oނ٨ȮwXzh\X7]TهSISSEmUWO4	UN3䙬qԚ^!Spç<lS٘r#XnN\bRo`g4
nk7{d6uN~=߀mZ !??
U@S0KX]~↠{&m.{76O'ap$U6B)t9POځXWQp*I% NHo^TӚkUg3gzp-l;Mp߲#Ɓ԰Aq%T@ŕzN#/ Jr'9ӽ<&ǅdMPmf0Vxm'\-YWR(@Al.7X$WXAT}|+ccUɧOQn6<G~&I%o9v*ïo4%SeJ?r֜9^صy7EZHT`q$tG<^Ϗ!
Hٕv*H!fzD}ǊƼon16M#̱_
j@>S`gÝ?7gMkɧ#^aKۂ̬{UQw'~wh%-:ؓ|^Ż;ΰ<l-tr؀. !1@ptlsBM,Ʃ<ﲺdpouOJ\x[Ji(4ǫ`kAɾ4&mԙPrXϷ#fLfebl*o'W_^z {4\ugO0YCp}{߃yB_:}5zy&
t,e&uŊ.;(1˱L {Ȏ"kh§{I0BZ&IAIA 
zթ|\e[GhlM5% V0/?Y5+Y=
2]B8ɼ[U
5w;%imF6gd&Gty#<e:eC5PF!M#+ՎJN[86@[?MH#v	OP?'9BOYm̙,߮u4rjoӆ.
LBh=WYURJ;NɫD?dD(!2?_d[_8j|	G㤈Pp04'-:hO*>[v=vҳܯƉ6=ʫOkG"hiǟ#M`iH4;sm[o
ۛ3W@SALC:m48Z~wQxUu"Vv3~|=D KlënFDqn'ZUɹ5XcUUg:hʂYbq
^MHԀT\bWJZY$Pj/&sp5PNH~TSXI}Q/bbO+l!^J.]gEEwo6Ay@e$/7/qQN{P.^޵W"(	8uu7!l{YQmr(xkj`v;S	PǢAD맶b
5G
z0}8^ݼ	/ҳ&o#>=gu2ڶߦ=$CΣ0EW'ԭ:
-bG9]b42 BªS5N`ۄ}H#6V.U@'6:ޤpHnꪳ	{x7o[Br^V_~qfb5fn2M{D3v>3ȏ{ݥ$`-hi>t^Sԥ;9#ohy!t<וr5{GTԇڼٕZyA.
|jK紆2ح7hnIw	|ZWYUW{iumuyOCqقpO$hf9mQNk3#dɷ{O 8˜ϚQy"ҝuO6EBEc3$C$ʅ 4,C[#6S ;[Οږ--f7+ۏhpH^dV^
*	hA**Y*U3kPMp_[K0Dv9=Æo(,`70H+EjVX_k&ec`_bxS
_m-YRD~jVESe"wPv_ǚDk*l YpmTVU6YhL~a9Ӏ ̺ƃUΜ#S>-D7U]R=VP7X;ӴHNxVKol2<TҾ%V\A`:RuH q ;V-Ȕ.`
WÜk̿(q)	,c/RQtn=f"^dq(lmAa|F^-:X[2FQBDHM,՝ۄu*=,.A		Yv@NbHJGBAMџ0o},guKScJXIr5zG,#B3_r]ӂV3hɰumߨ$	b5&?)SM3	Ѱq6B+t#x.nQ83#8*,hɃ__P3,ޜ
M՞Q~gޛe\u<4j8߁n>
Ly%VPHvT!}=:nRc3Gӫ㛍$}ՁvtpzOV|_>yqhmUThF.^
@y/pd15%|Nȱj@ZӣjS
Z+q.MђTelHCQعqng;9/$2q~6Ucן6&غd~1Stl-06>${1:[QM]%Ek,8@d%6TɹnŐUպ排 y&tJ3Uq$d:U-O6oyڢõXT8Kw/8vփ
d
0|]|DR[#oeCwZc U̇9"	y>Bp,=#hJL|)CX}=b0l$ǝy_~p ΁^kTFf!FP:&,":Iw	[b/ҧ4s~CeaozX6B4nǡJi~h:Y`dmӇpZ5G{~\Ҳ#v[\W}Oe\BA~ܲ>OFv|yU} t0/%.	k]tv_쿣)r``cl׿zN/;j3rb(W [M-)|C6:[9INz|ծ Il啇ATU>!QC$ZA
#`_;w8Eh˖zlgmwoH8:J޲<)fv=`8PA(KˍvBeG)T(-xK#wj}ZTO;()Hl:-6
f~-+F+,_aU90[1;:WA[dҏ)ؓ f(	5/nXOR\]שi @VI-,QZAeFP3Nė
'Ɇ*b[#OȤJ8.͆9eg2H:'U%~V@ c}"+1mkd9kY-G@j,(5F;XUsyC?xl7Kdw;Su;ح[m/GRRD&WMPV2
:́( jos+9bJ<7z>7}+U.-" Fѽc=

,h)=)4)i#;.t5!_:Te,x
/x|ZדNRsH+dR:L<t3$E-[Y6ۑ?z0/JLz4&'uT,d SS<pwz=ڻbM
B_miK݂ٶ[SySđcb_[ȃOn{YO)^6n=맜%AXjk9TW!RptRTVlN,Gnpe|tʚE? _x-uHQ%zoda靖#_~QҪٟgp񶕶o<M@49׮TsfSjW%ފA+&*
Gjw]"ļ4*ha"&g;s/fޤXGݠ`PT=
Kauj| i~Y2N| K*"jUl>vF?A=5H6d$=Չ
VG 3^w;G&F=_t`BIICë	@Yf.D+ɒSRTܧ2kb*`aX3w䒣&z*bcRd5_A/ps<K^ˎ*$paޏW)Hs\
tJfq̶^ٽ*:WT'$?	tt5&nZ1SC~{IZWM8v<Un/
ÒdY֏.4E%H@?<ՑNq'9?g	K/,p#*S2A8C{j=[ilԙ|gvQ0.>&@ĈU
(ۼ E	o6c=[OC)M:"/?ey

c% Ui%(6?4-Ɓ;Ikcwmgzq\n٤\ݭvmM]Yѭ#NٶCAWSr񐖊NU5\N=F\#_y!M)zޞyMdjXB5?^z?YӟZ9$voV8.YMϰ+~Zg{M)W>3 Ʊe_P@5|E5.ƙx7Y)!R]ٿvs
Y xlUƪg]ȯ} E Z=8l;}cU	R]ڄO$5W	<S&ߟv/ď!W=uя}읊L$Q}E<eP;,AJy/6Ur☑M4>vUu+n.9EU6O*ǹ	8,6c$~(R:o^	"l
z*=:ɷAu>;;)X^ϯ`/3)5u}4zïpFASǥ6P2QXhokAT5ML[j{IRJmx,-j:}Wd* Q3
O%QmK{^R\^ʢ\qdVb6 | o[c=H(ؒ
>I$?MgTʯiO
znm/x%*ԣR44Q/JM=i˂}@vmodXרT02%ޤjciJ:7kAyq^{&<^J9Lrn>FLOT.>}PN+I'+RP
aT$C#^*#ռ[NPx{	lJՍR:&ۦتrh	p
7ߖϫ.+v^EzeBgzBZ'/ڑ 粴>ߩ$;(|v!J_Uu,u]6q8Ҕ>z^9xWrZF9AF뱼kP</1uk<_vI/f>P<R&j?D<RةbP+x5th*t,zN*H5qy; z/ 2껿J89DSm$֗cԆhY&bxP>ޗ*/c[rLJ4ݟe`5UCKASlBȹ:y
b\UtN!wA{`)Eo}׊nSnG	{.jF*GЯO%Ht-w4̷D4'tMx޴lGU(h{Ʋ34ֵyWJ@<:us~mOTqT%`<[,IulD\⯯o'4<5uUeUkv
0$M%LST4ehl e6,z_|
<uִ\]bZں}>iRZ|pS/=zwhJ-N
A
B>  jYMo">:qiHOB/z"_IxU-5X @dS*^bRJ
Uqů㣡ymW7
Zy姞5G-k[::~<mVth?z?'%(צ柾ʯEHňYM{3?u/Eusgt!GM2^>#䨤9FQ`<؂Cf=֙9
ܯMO}P"$t4/A$USWh	1,SOipWxq~0_LSHPenA,Ff]j{׳4I@8r%D iSL녣fD[빙P,j62IZF`0\pl1<wzcGz,㟆RD\;4(Im;T,W'
2$ ć"k^_6	9-TY;y)x뷅jSϪ*][H̢Ò/{f6鏝ynP$^h+?o*Bcl<\|(d@yI飝yG+5FSrR9\~֑zGAIr#Xְ㿫	VOU^Q{,8GwVCMh*Ltvha4j*ȣJ'z޻Fnu`5RzQE6鏀9n-Cg6̞p<ZE,m? 	ek'c$^/Ziᐥp֗Ħd$]1'?րtlR
6D5u>&	NLνv"x;Qjȗviѭzp,ѵP;6>˞ŲsZi4߲APzhLɖc&>W@ouI|ћ>BK,cN(j/~/ȃ/b~m~[s
/8K5
4_sofdzVHxNRԔ:ݪǳ~Z}WxIkY%je\t	dok㖥$Y>
k~'
å&a	`jCE![K/n窿̣r^}FbmHu,&n[6TZ{U9>
(4b^Nh/gGAo:
䄣	wT8`B>kG<֞eؘAmZ4;qKG3'`:m@ݠAH8z-YEE6C:j6RpC.;c~ jvX|fixRgwԉp13001{l'0(0]`%,.jz~<S}IO_.ysdR`mB6c*[7Ay'55	% .97tF7eju9!.2 1lRJXjYа{^񘬂zya)_ӣD6
44؂cׇzI=VUR"$z/.(jZ[h/j$y,4
:$_
$6竖N&	iVUJ3QsX `_B+hL"t.۰Yp{~s:U{7SVC);S >(iz
79¥FN$X]4O	"Nͦa(<Н]Ӕ~)%l %o8*<WJlT]g"WH8~/fe@Kilm؟m, .XuxnEB^FLfHP	/GĚH应WgѦ\t1^6=C#4da'&9O!-$	6uF?zg`^Ar+ڽe>R:.Q>tq8
Sj4a<e\vJ'H;S'J}K*XQ[lРUE^X[
l&&>7\}ۻ]bPJQUK~		l#(-w_ϻYnPd̩(e{''_
%ƴ#ܤUWJHc
[+HS1*iQY9nqgv"a8e
9@czw=geqM{/遬ܫX*	7wH𢄕/p97YaA)#Pr  ֐Ljcʞѹ]=1NQͺPOjRK!?}A󁶲ɲ#%5]d,TwnrXRvWo|&^vLD"L`.H#>9rL82-vw@ď)> f4)e}Bjme9!b;͚D (n"ݕZ
YsAj@pqۇ^c&XoL9яt|գZ52an}z[c_1 A\_I+cZoHNQrʴƑB&3GI~_|>KyRduM/JO<o[GkhD+||Dt6y8}͙K<+]ؐ=]lHvz'
t=@lͳQT|mRoh@&[#1dWHoQ,R^vTW~1`=I@*ϑ(RM}h>!L=^3_lStv*Dqk~|;]+	UZE+OT^(+y&α7P5=:΅a;p|FV;
)/z@,fZeߍv(8Q*S 4~ÒZf~}ZtØ[%i[D19%0oa_G&eWҮN/Zr
2nl[΄%"Qv%@3ߡI(+q6zݛQϛW۫48B!h`z#*DLOOa;kΧ;d\^Εo]@b#*-"wz.sHSw´&ƆcsZ{efvf~VE;)R"AoXpb={0hm=Uopx|=`i{Mbξ7	&+:[yd5_p1UӔA:Uԫtѽo6w8Ȧ/Q
?.v7CBJ:_yJvq
F*R74??]/klwPbbk߷S@jSpnupVw7{7[GO<NQÖ  ITJЇ_r'h2w= A
R 5g,d`)z~HTc
+pxFْ&Ǣb
uWy7U9+w uݛˈgVi-{H=
8~̈JŅ4o][<qA"	ߝ̚ M!9U6J\,"`6ײ]?=x9=z";b'#0嘻֦qx)3:Dtb,+H2z*f++Nt@v#>#XŶ@~ [+;<P(ÎxM. 	NN
uY bmX钟*?1eJ-6ƫ I:mdOt>|$h>oM/^z:8<Fxs1NFPB.׳cS*@,W#Ѕ}co :a
T9g8ד~Zjo/߽d6b8']S&)}{:sUǽڥ
*T=\"5)2A#j/K$˕Mo:Hf.0O_~`
>* @,Pkޒtfr^ 9cV6	,OwnP԰uTE$gGmߏdrSJoӮjhX|l@ϱPU O2<'EV]<5/OFwTpmoԩ[8
["{\fRmӲumW-͐?"L}[;PY+֞E8	:d[evCP)>ge9܊IӨ~P\Skuy֝::s0ЮP[JŔ5vC[~>@M!Rg{jw3x
CuZ'㷿zai],ڛJ	>'f9Ѷn뮦hկU ΀ E8
p^	aB0#EYIRL߉A6oUqmزkG/Le"35bF>c o#H,8VM:dN[]	}/ B'|<w?AP!NT8:i:)X^|o!TV/	,f6JІu^n
j7L(zط--+V adC;zBx[GKZcm͢G
hZ5	DK{ڼ~m*:p5Ep
n7zf~N͊j*D~*U{þIr-3>윹-*ˡޝ9Gk]Ȱr!
!LaFUj,p&% 8O7lkk1o52F'ډzoBx14{A# >$<XdiJɎ'̜5A2O&?@ZTb{J7|VpW7օG&%uB3M_z2]
5J:+O;;,>QB/AM^_-~a
Z[MtFWh{U|P0`9nH~,Zw?t	H?pb4z°e
E£
@kFZL+鍄|C60t,lV*"+d`\ =୔s[/'ZdBJ.a<)|	jUDmQpr$񂗭N-rEFC_`:,y_E4%sl>tt7ׯ@QJhWn@Ӽ@!x%qln}AmcK	ਞ!BPvc%MW4=I|-Ff5 ]lK4xmEP,e 3y~lXe}F9~?sOkrs0V*N
BVVʘvNiNrC^ClfR:o7?:4;u.6T@tUakS7&!l:^&%los̫?^uς5ڄ
@haoS	o5( QgEvbt7LՁS. hdcː[GQ(JSnQ$pwlO-6	J]i6,' io냝muG΃q+ͫ񵴷D^}5J}8⛖cϝﱘs99'P_@
|zn]wo&ٲl0@J'+`>Q[m ;p[Oy2ڎut ߮;HgYK!=/%9(zcX?: kc_}J1@u` T~0tڮ΋~Ӂ'UyB$]7_P/ h[՜/A_'ouSsZot9Q@Yq4MϛΜ6ueo*~:}f|HN\Wi+x{pv{hS^@󂋥H`͉ #u ;_Pɖ'@7wJ9G&R< u	1яA׭Lq#8QrkQi-	QB4F=[)ۏk^|Wx"$,v
oh0f׻ d0͙:aBíeQ!y}
 a>ǠFl0vw9}wݪRoe7q1&t9g%*Wy|'16Z̉ #ڞT߽Զ.{ޙEK7(NO<:n4Кހ{B.1th9!M:
+
'AWH"7,sW[Iv6;UDV쀌XOC}v?:KS[>+FՐurƦmifsݔPYnuP=Bw*>U;^ oG@#[Xy%kQȚ J޷8m=cr6%<	|c[ww?Z]~ncZetP2Fs9k"Ngt'%)qM2t>ß$u9:Ӳ R-t출Q[TôK˪;r֎
SLז0D\{"3}%yRR+] ״MYDO^E~Ҋ7,$
vZ<AOdxCmn\{:&Vc9NV;]۩p$eq
?9ۮ** cB9zL9&@9w
vͿV mk%pU&f?+oǔiî #nԍ܉T.NOWޕ>_6㒜j @zXKfk9nP8wѵ+R`$>;Te\/TQ2dA֭Auy9UGTM?IۤKsҋ+Ye<[4˒^Q!kPM+s>%{0v?Z%첟r]]ƻE%*j+ Wp:/OؼT.':$8ȗ0WM~!%ئ<i"ZpgkP[FgƶU[XdWtYȟh;	/)}ݗf?=hAӲO4˒
;Jܟ1a_:س4 grmck&ezI$ͪ%kJt/brcg/mgM?̯omeA=fuWxq<Tq;TUP8shj(MǚEz]V-*^i[gۚcԀĠڝʋGzQ*dХFUԝ]	X[d`fŢ}eA}U4dt h8|_vB%jSLكeFV}eNJX& S2\#ũO;h(`cRАSkyW6BNYk,dhgTJǞ1-qa_ʮbԒPsmvћ[Mv߷;Sg
~v􌩝
7]yϻ*@@Z-/ 8.$ūԺ*ĻzRJΧ.ܰ";ɕ |{4+U
lhn{k_FґgBޔJSPȿ@^
x?X>vdno .ǳסLvѳT16@RΓ+h$5p-B[iәg!i=n2ޥ\pT_o6j~f#t:j)TO=
TF9	O]y[#ywL'ɕl[؍a$[c+[?Q⹢IP6?5, },g*EbPuZG:jeѤM<!0N mJ5m P2Ua%Uh)^!s$li>'H#UK智TwK⡐;J=kɞdƃjX^:
ě^}WL^>`
5-$[N(R}e8oÕI?js::֟ f@N İlGj [RC.~Î1YK omǠt0ހF疎
 ;FRk. qoNc3«#[S?[&-ZĤoȵ()4ٛNYF`/!]2=%{ƢC/{Z݆bsB^_"DwL	- $â}(Ɲz4^<
A^\u?@RINt^]$֚I>sQyd>h\I[^Ub|)ſ3\v1uY v.Tw{rѻid&qwy\ʿ-^=k:gwy+g_zRw[$
V&Jg,)r6]m'6jɲ~*lzr{io5_}J* BlYbwp $ CU30O/<]M谏i-e;`N-wx1,~SwBB,텗~ yD#F5ڬ39!9ʰeJ*Z	څ}G2yQgf'bَg;
*lFvgvܓ
8^o\
\'D(^
T-SwȚ4oVT]wrF
Nw
<~FU@d=sUIozOzl-מf=ǺNc_ݮ*Ux%ti'^ (SRN1Ct?
w*Op~.{y}
2&Y]s ! J_pYL%qhY4ά6[Μ0xI nz u 2+6yݜ)RDy7=$Ŗ9Vnab(Uه
L]geZ_E֘tCdj9_NLbR.?j⌻ݾ@UvIUpw
qºalJr&mަ!8lFEl9
cJ
 ,ޣ:^2/ۿqR1I7vgmk[2sy`oX@y%K^j -b2yNd$dKsjIs|}QYK>79^z9OD]y7ͭ!č2#x8OΚΓ\?H	{-92E0Ba.XѾ+q{snm݊t"іSiJ*	flYE}uT
W3jk~
	°'mF2
.?ϔ^σaI)($9=kfjd#yD,h̚H*j|j5RY_)AR4_rYO?~Z	"_cYp"I£?y>>P$i~zϨלYmcLǵ߶_^qL/ܶ4o+Gv|eRoj	#e`)k#'*R3gx^r
3E0eqa֬Na9ǯՋw[FKZĸn43Q["28XYslJS=s*	0^̳R9vrܿ?!z՚eg2߭'Scު=0<DuD`WY|dZ-JʞxPS/GH h-ՙZL򲁞u;6BB96%Z/7VGN:昒0;6jhkWpʰ=qJR/Z$Y<*jG^O+R|R}
S۴\bu	ޣuXSkRW[xwC6ѱU4c|ڭ>D?cS[ng{Y!A!uG^Q5u'.\.~Ω6%ӮOҍ8m!
`8f*Hʌ&Zʧ&W']RgG@=l?UYD rYbmfuΟ|CQG!ol&Cy]젡UMR횚Zy	.O@#&?SAZbx?;8xI+Z
k&+&j`rĝ6kg :AdF.8Uu`	a8'Ԓ'gnnfV7H9l
R%͠zlnAȣ	v}Bg=O:?CM#Kg&	G4Di4o\;t0i.{%hqJ,H=X$W?Mz}	+OUG- XTw(^xɨ<$'P;j
 a,[:yT)!չ۲4ak ?jbI{^=T^YRۜd#go?꼌
Oiw\y彩[+>5I+>pa ]Ѡ@**[?Ԕ0
;/ʊ]Uc|ZpgHeUX\ p°w?Z@=柦
T T~!rؔ,Pw;38t%G
}3'yZ3G^t»ݖӧqi_@az8&nWГq9u}zJ:T|{з~3;?OʕLwdhu
e;x4XBlogǋ:j{uujbWn?מz\l5d? /3HJGkf
$dV5	ӝluJAWO(dck&{}_WCR	\vfe\+ù4I7̠OTrB
.)vqUgȽ#*yO_WHio@T/!=@m5W7Z4DGEΊOVJxѬڵDOmjcbh\&Lp$ɶϬG{V>Uz22P^j_'Y۹y83xlLN	\ 	& Kba"*If><ICgQ*~m5 CNqfT#]556)ΜZUXU,&{PnUGMA-GNYSt1_/zIQkqGz"}uMSM椢Xp8;:$' sێeqxgn&nݽYoWRUjw԰*+ x$҆M
zrޗ>Oc)źiOj*<c^!Geũn\ W6J޵^K/ԪΫz;n3vel1WKC%*a٠Ӑ_Rawz~/QFWƶ	|ӾxLξPV9wnY2y,bgKZэiׅʖO~IsL8³x/n;8Egw2m2)ާ]{B	lP"X+lnY".O?+٧zz'{urS{ith~K'T@S9gAX40,jk>*b/Q&BER/C.itWPq("v2bBQ~If*49 $%:]?E ^1+dBZcuuF;Dyh B"B/k+2ĴxE$bQɠ5bX/ߏ2.Z5nָfbP)˛J-c>֡	[*>N9T44.%U*ƿgZ-J>H$o3Igu9v}{1"]iKFձ
&_ptb}L)_t!zqĤ
};#0~(sj(+.S??~AաHF,zz9)d$lK*`TjrNK.T\zLf)SODAH.!Yc/a7
.8겛HN:dY7/.f
}81Dp:D%Z9?m`eJVhI2Ѡ;xdmx>E&^>OjOAR2 WvIG`3EJ)k>%.S{\ MOUf):U)rvKⱾ\	M%3PqNK["]j3't{Iۉ\ȟUNvbN(%S3[G^aSaGbMCۊMR) ߹  ^'ܓl)
`Q'Xlp)@|'<i%7^``5t*{i0G<ڶ:|:EB⬩
Ѯ0-h	⡟_GgMSg-0lp6KůwYB0@;=^MֹSywY
,Qh+b{kUKqsژd r5^Q(xleasHu_S	azyetIڪ.bάlO0:%K/Julؖ{qT.l><骗,hCxhx|TorzUf3^:3~DnS6@GSSKFhQ+=dIv2Rt9?H?%^ûc*8,[O>1lqF|E}9V$޶\ U>m˲0S2ZIrylciHiА6YQkj9gxUv}5l6@;ϫ,LTc*HR&SRޤ=9wBcqvn02!;:-BH]5C ^eޢovgeXru'cb{*QQ&쿎U;A+e'+7ڏ#^QIoM:͙P(:ӳ-`u</AP|( ٬o
J|#z]7S3 }`pdI|WU:jں
HJrۡWB`IެM2B4l~u	-jj@4"c3ۄTQAY5Rfԛ|`H#<_u
6t݆x Թ 
 EޛW_5:+t'H^LQB;AyV5W	X\J@tEv
/vY[zr"evcq*rzwKmxRU-pkڕgn5C[\NC
e6.{.axz׸N|(gXHF(%c:Inޢ|14ydAAuR3 -Od%y-@"0 ^P~c q Uhdl~lv
_'W!XTքo_@8rj,:q/!(?km-
iP,0F;!5PҒx77Ptbq*I4%<g^NA
:ah.&O]|˒;wJ:1u#_k}Dg$Ǧ,&52$t^Pi~I>m(f)岹(K憚Q`XKN:r_^>wRZo j:,l{:K a=:_TP4LXnX݇te۽
vJa9xO
iNk;<iV68IpЀh1dᔱ-bs`cR]ݻsT?NSէERN+A/Hf,Pڂ-qtfS<PPin1.'6ka,P!"gUzAug@d>&3pԮ,OփA	\6AkzH~Wo=w-6t<u*)nTPo޽츕G7@CeEFs^m'zq^`74,[xHǴ1}{1tAH{Kyι5!/	Zmك\ms$jG[Ǯ~ڰlDKd؛d Y"~lI0Dn,%T:t	$ADG9G'Z`!5Yɢ*QJ1ݼ?YG=߹ji1mq"}?A9ƱXp<Nf6 ] F8!3l=^Q@pL*C?s;9A_PH^O!$kϣGF¡a^-x"/,<fgy׶m]NKxCV')
o&$K"eEy+:ڕzxK'Pu`uMy;:Ʃ_jD>SNm+>9fkQ7hҥEm]-;4d}~XgU.o-ArTY҇ z-2㜽2#$p7Ss
}×n@e.o_g7yա%;IQZ>JД#VD`*tT&(C撎Cpd> 
<A^E
qp+J0kꒌʾ\|~i@o#kwN jݙlw\baY\55q\r@ާďk\ fw+pW<Z&nM D}
{y%kW^7swߍ8%~ t
O߽Ow(v
i񀢿֗?S+U=̈́q;<z,$c=R9E'& z|BͿCY6O4;!B|"hIsvOIc9'4ib2=C(RFhc@5M-yIk:)?YrfTHbKc@@d
PpC9cNG
J^_75a9d8H~aMgM04-h\f.zD޵r@[;r-D`1Y^Cuh«
fa&`zvۯa{5\lo52xM١O/Nژj݂"ZMku
UgЂ*Ex#{zV!޳9w]MyC)VRGwDZ"4wOj􏿐>TuOeRnwݞQ4+ޛKF\&,t?v*M8(l
҆f6ڹ@apqp.٪Ԣd殯b~%:JF,*B΢Gt'FުH&
ڧ6#oNݘ+NO<@fQZy33(+S.R3P8t&\S; bK|jAz3MOEr|dI\9Rɜ0/;b*妯$[BTR޷0"(ꥠcy-1@U<Ei(-J}G{8˒'sGQf%8r)[t25FΝ{	|jo ۸#?A/ŞyDCS	04cXPl[5M%RFW,
8=uEԊx9{h骬qk4^cɘ6`	[):N
Ti!7#V^Z9|bm'Kȵ%͚>Hr+KKMmk	#rG)	']NUA>J薚Dk
(B>H&$OT.4m	"
HsP*ۥ.|@$n
-\Wp9aE4_ץr =ieї\C(:
`!׷ iz<1=qvЏSDR78!aQdNn:Q#S\'eUnR7<\uK
j	5 ݑ7;*>Rjb\e<MQ}fE-pjܗ֋_yb]Z]ֵ	#+^T~^U۟cbz1Ԝw8Vtk4,s]HZjBwD.7X?RrN-61t
<7k>:qj}Hǩs4]U9prvJQ+%hl՗u,[/mA",9Lt%
]Js˟i41&zqA&wɀvWKn8%hΚ\m|uGxؿ\(
G۷y"+HcJis2ch0	Î&xR&Z]TrM@
Ա)wt\&Xɋ6/8Mу?$Up 休
_Wғ?XIn@Nv9zB*ǥ;)W崼o@hK-K.OiR=3M7ʫ<cn~F0?P͆>0=f@WY{/ _Ar?ߏiCvx%v9.׭anBJ)ݼxZvnHFeHVXU!LO62Df'C}GH$ޏc2.~'uԠ`[+oT/ 93W.6QR7ݐri"A2BHLvwY,?\yv#R-3 e]w-n@J(sלPreXcIeSq3:D \9
zjjN"~z)[H}YEz.r*w4UUЗ	g$Ld8쟢bh1,i\~>s1dka#b:R*	
xhp6gF°[9:ķ2Wc2qLD;zNgDks!4bXYG\)R;Xˍ=es󫔲ФKțWQ6Aٽ źM/Xjq,8<K$#qNT!K
R7vFDI$*}RA	:ovudvk
mŔ eD{RN/:PC,<>dQcq#5*R,dx1|6/BWˤX̟Iz]-G	?Ð@AUa_/=ܣQ!00FvH.I8&rFzQ4:#yT?'& smJhx%vQk7@JBtYT Jqh7}&?bȂ+d4DTUDHj^3K&
(P"`ߖQmnɺ?$=K4SEEU.%8?L t7pC1+l\
Z<~^KfPhyoJk]e1RRWZWAY=$ΦH
a£jRx:[@Bc81N1^j:[fR
2e	KS}]BUo#b;rvy$p&!_.ǎGIZK/dIm((W [8r}<tI"]NْK7q+%	ВfSh:d37r~93mGfF`]Kswmpu`?qf[v0UXFyVl2Y=2rVH҃+tչ5'>o
ݩ]Io.4,×#sJ}}u>c>NrIw	a۬3Q5գi@`ޒg|Rɞ77R	w$|
}|0Gx?%bX!_
M濛MPSl߷~
q@D)@tR)&?
וu^Z&,99Cbkrs:kW_dRPKPl8gt@ M懜٬5w X%Y<5ϪűqL%7YA2VS"-T.X0	LkϸIs-}HOA #isKsv`Ɨ2;m79Ѡx!
}al(,)꘢?^"V43.|eJrET`B2siNkݥ"H
؃alZg?
x;5B#5	[ovvybc B>V9'G@@@>$rVgS|u)PPB9zbnrExbƧ978Jmk]zcA§ܖ\;@er3ʛ
%h82טl1D\wB-BI}D1hgcg~p З᧷Nvy#&*ЉoNp|q:Y}snߚBѡrE3t6ɕC%-U9)6P'H:du\xaK\rQzs"lvusBvDbʮV*rP/^Sr2 Q\y8
apqt
b8O"aH@bzT|X,Oֳ|z+p\H+3%&~^G4 AErd\g̵,:D*O/VaozH:J 7FnWtv\.."\J@q Iɼ	W394˅<,3xvdk)]#y<}ۉ-SVD>Zg#ITv:h)ty+C\?5+W}D^.@Vy@{U)%gvI2ܦ N׫]ray.$ 2El??BJ%1u)ri	p,>mqg8𛜂hqTtU.朹Ϯ%&vPer3^U:1h\g/&nU#=2|iE^牽6Nѭǉ;i haB"#nSDVyz-j%,-hV(8w$o*^q J$AέU1;k]:|e6}$K_ϜW
WRݼm`TގIPl8ߥ7W ]^@:u  9be/y
o	C{[i$g*%^#[N*S1}C`"t10g5*yhLV-nV5jJv6u1'7Ȟoz˝ENKڃufy%[[_VzӐO_J9
MΎ8n7m<LjÍ,\>8zk\Mr桻DJUDUI
_WSt Yf|
_49웈_u'Voo7o
$JH.f@|Q#9åsA[9~IgQlf+漧F@Vuf1|CcZJQEhÏm80oYKOhKNriV[K"Y43,NT5mlZiuiMN(^j˭_g}J$k!vllȰN"Z7@kXҐZ`pB|g=~eE'S HVV<rUgǟIΠYl"-w,'[3A~ҷk7U<I5|/"	Ƣ=t%Gtn?uVRZy/>7yA( >89_,JTEKy9ޠzr̮?EruQ!V&2lm
:2 P~ DJZ=HdeĬˮ.P7-(%lzW{LG}<b{@Yl
]
 j7^GZkD0UJ̭)+SA[:fzGyN	Jsa"Ew']oSm~O^Ӏ>`I
J	B>-7BO/+cq[|UrTUlO{	ݏK^"!8NAՍ+Z%CNH͙.a6!}:7]{@;{yآ$&-yp?EI}n&:M8X^lw"Sk@8op|+
>Y yZsIP}~-/G˘l-iRиVAiX/:\ZNH{4͂ɬFQ
VR 
l\6?6HMDƭVfw3r!T.wT櫄[Fdu-=OL<){|0xԈ@7S*&!p_oC|Xt?z;!$7q69]uW丌rβT|>8)2/yt@3r8b };ia+
}>3]ۓT͍^:Ky.L=<LkZX^; xC=+3[p}p)>?jT#TDU׿-]#s/t6,1{t9Kves/gNZZ%X*g
RjCvhڳ0xuǘoT}~PrVU>>ǚUF<! b% Pp7k-q^]i9ܴpJ[CΑKObbZ/^e<Z d޾0]i;X dI7}f!_I1MkJ^WUx\v":USz%*Hc&+bDFe}FR2ihš'(,SQrQk8P# V;{䦮::SE}kfApa[@8RYq&0Py*%/!'9틜(W4Nx-(נ_0.
9mz5Ƕ3Vwvov嶄Xо8dvV4- 4BjIg)ɂ
((zIwsh(>QJ$B$}@J9pLdA~2yT0IU؄{N=6+`5fNcog;l#Uk:~;%òo<u`WY:= qt_`(a?{?HDm =܅Ŧ?ۧcKۖ!#b}ZlP	/WHMn~9Ȑ
EZֺRg>n9[]q N
n7%=xtÓq9"LnpPvsg3e @>cxcӘP[*9l3ԩQW
qT)P.{_s9eht,1\nR9`
OkWG7ۡc80/FsR01˵
xy5W$][UJ.)(p{5ʃ{
Nq5i=R p;}̿D]8Tzi)99m@%r.=DTY H8l$_]xshrZ\aGgD<?vj}wI ֳwpr ݺRKI)0)r^I3JbQm!s{ҍXUp4גzJc,N(	ߐ,0wG6%(C&	63+|uV2a1)*OF~>]eH˵0I
 ѡ;ih|ReU0[,[]$7
;.gPor7݇PB:#]I迩Hp d)DԝS[FV
WȔ*K\yØ[)~ODp;M;]3#qa-He-!Zl)
7zGanp>tjҐbTnI
 lK]~Ⱥ;٫VZV?b=guq9z65H%jKS/Uus[!9$9>)t3C49V6o0>{9=9u"nvGVGJήij-83r܊xuu3c٥+Q
^J|z;V""\y]?Vc<9&uN>I|T桤WȁWsy]"-z|10T~EJMdyqE'v6UW?-Ƭ3nhuGGJ}0
n BeN@l~gJ
nS-t!Jn@.A<p׶G>4n~]$
j`ZY~cP%ORAΎ` eQ)H+6F<dTWum]kη<6Fon<%'gb+|(Jz.AIß:u/ 9"!U4"6Ϲ&6;A(uY}Z>3<z[`?7~כTsY+0Y@چYyyyU#L"/9٤{헛x2+N2StRo8a}CkCVS$
E*>@~;czkڧNGz#gUkbA(X{!ұ8W9-b6O
iVM&#E|nN.pc"Po7]
:o=GcpdԖ6KV:3W0Hr\_O@Ѭi]HSC{:9r)n}]
tH6-C#6	.^H¼ʽCX͛V!F aM:[${l "coT2PNEr*> 0X>I:҈;4\q:Je£9"kҎib*?|d]^-VE=Qi,{>%fγQ$RAQ	Kb}
J6EaB6N'h
,&*.pRԯqhQK#+@:#iG.:L!wf&'KZ|
[߇Ϸެ#@e{rFkܰiunF$Szoi8='Wۧ0 BΚ2T9;W( OIC;gN4)NB|xxbB8tQW.eA1si,F`SZ9ƥ
C0nODa'S"E5vzu`qc;Й+uا5S`?"rj;V[c'g!Lzt7IE#gƞTKPA+.BP tT:vZ<9"҄h{\,li9tU|]ecۣPU%%8ۓV"{:}?]8qqtY]AxNWW482W:|-ɣIXaa
RsJ#;Ӵk/H,{ua4mjΞm;e9HdiR>|0`/Vyw8̠нjؕGIVRNV\*|B8U`V/qň cא׵wy-:ါAu:UWtңZқx+u~M<gţ#/fvS4Ih84/*q
>ng㉮ziiEjt+H'h5\yn]G_VCL%h.P
t
+a:
qgI>Z_.xS½ύ峱
R̊@K75Yjaրj]`Q޻b8]`'G}/n/r35pE	B0<n'7pyi0>N@\.Q$a"~ږ1[ɩ jZicK$\ؔth_na@D9x`ޱ)BFyI^+I]
zGgXr6k-_aП2RAo̭~͑Px*'yU,:HY.R{/崉NF  %+Gn4*!9+h΍R_̶&sbΏ?GEgkv)  !hWI;{+\-Dp$}r׻w$_o*0m۔<ݚ E-cNu[%On}fT'̪7e<q 96OTZq
1qB`[v,z+9Y4?C[+=UM3(gOz	Ŗ/'y@8<dCKmxj,^tlVa^Ca.e 1."YKנ=!)8i!}|c@MWOF(t"LZQ'kL!{X@$yPC3]w>?]B8ΰ4[{
*&	'ɡs͗]සmڒ2Q́ jG[:r@JETy,5ȯlbu.@$4	
-ā2Hv0R!ayiqV^uު v8S{l5tVact װix5i`X1B?C	W{ 4~2^g*&%-TFs|j BnQc 8t$Nd䊮eɑddPnen6`wݔզ|RVɮ9	DI˖?CxЪ.G7re,G
_̐ ۄݜY86	
CQs${$p6n
BDEaGlҢ>Bg?[%('E pJ
ʟ eߧz`&@	77s5ƲnuUyI-><77W"Tҹ8d욑/ Cqbf	8iK_tOFNªxPF;f
C{Ğ+'}cQA4QzݗσʿZnM?]nR%/e5E|p];$WM`W/Tg~QeK'kvemrT+WE?޺z񇓁瀶#T
wθ2Q$ϪӔC6ۃP}UN<.Mŭ(J\hP~ݯCޕl6-9dySw2τ0mә;3 xRDSpK@7h¾)-v;o>R9&j9*b *`5&+hs Q_g	nDj8rN$ɑ@onu#%w2{p#R*d;V &@'q9ceON8xL<ʙxQ5R@U}fˇiM,|i.h	Rxӷ&Z_aUmJuy\ICg3xUoZj__\&M:[7.<Ň-UWÛwNgYa:MR*q@wx.<GGDa 6JQO&_Ae{R> g]K1doh~ʤ	,o;ٱt\U)Q}p9C8JF˦e5A{*Q8$=A32 VsR7~qlݑB'19p~a]o
amt`/9]n _\^7S!z[d>Ӆi0)4;|"^ c^m)qކ{S
[+KJCq	hsrwV4Ug
:`dCLi(Z9y ;>o8!m8!NklwpcK Q1Q8xy˹G\r+!DͿ憿_u/ |F1<wS#y>X tom^\ͭ_y+ഞm=ξڷh)nTٳ!aadB\5ߜ)Wqj`<np
 &\)躩lZJ±wi&ce57%}PJ؏72	$}zJ.7I7?"+dkT|zC~|Ujnn$'?ś󒀫@T*DS6wqb'%N7(t2DCE$u*<	k8]'5SSnnuaP(vu#J1f_/wSϱ,6a ك#.==nkC"G'IpeĬ=Pߌ=,7#MQKzeǲ:˞sסQ G8q$<.bYOw	IzV@zH)G4D&9*޵U|Nsk`Ǯw7Xq5%/nZqCQ 'H/q%ey&*Z;4a%b!-8/e?Al\	 	Ղ9#Ȋo_wASxBҚP#9;O\DO b]X1'mzQ=挽IY	1XGc& ="(d%;'&Ly%T	g~goByW\$cÁvWMF~5/l/9C
wv	իs7@k:]-VQ8$Zޓ3 5-k[rr
/;spyY7%WAXx\<jEʹ.73kVIT/mw#I"ᄣ&V!,.,<&Nm`,R;ZVM}kH0	f܆{tA!Uɠ$#xQl*'sQK ɍ"
NY$_'Cԟ5nSUp:NbD>] Q}L[Z]Cs~bX8pjq1۝g5B;g7ƣvcV km9j_'5:s[>6
Q!a)-Rݸx0i<(0nQ=>M4W#Md@^мwz޷5f}	hsU0
܆o;c[ܪ.V
TwEt@ |N@^!rR1qB@;cIY`mɶ4orHd[ 6
epaIbFT6D)y%OEwLtߨM7Aް {MWoȸjuGf\5(k:Y=:	~1ǅ8]E KB)|jO5ZT}{Ga<Ӷ4ȼd%9}39ĉywD8l³NVu
R̖vA Țr\ֺv6V!n,j
GoKd*ݮYjCL)9_'{ h/gmOM)Kr̗vÿCb_\~B:=8:Jc3G׹ |fNggu{-7'(/'9&nC=4KURt'֢sUB\ʋ
!ou/n<=xE*L(,Tq%>nE59MwN\v;yۢ^%4ur{SrxvV\W-%J(!+
4_`103_qdR**L§9Dbb
j~p2T?H.HK|1
b(<t专dZWn|m?2$l]pV[2dxmmr]N2<1ZqRCDHl1ȫp]ϨI̓SW	?S7ܐ%7mʍM	8i9Zt(]Ijp9MaR~ZMG $(OUpή4qE&HR
W'~˩`үvsōo2>
2|=y- ?je#W&U
E!0ٝ(<
N8H,JkS^3(Grk*Æ؝>Q2nwx>qBełTx].	ϯ'Ρm߂W:-#ǜ/Ȳ L֝U! b̫'LN`QϡgC2=,+<	8"`ulU,_ТΧT4ސAĿ2,w#A 3}\Zz ǕH\KNmg }K ht.($֨+:dpb $\l>09N¸rYR\uŴi6֘Icm6ۏWkb1K%tpP;.>5=wKIsښ5mNGClj)묊u%TVG9ri{:;ΣU/WN"\|9
}vX[NKpkI^s|*-,+H3ʵ&Or &[Wp[^SDp7MxpD+=ǖFe/螮Y+mEQؕeCe]R#z=_ӊ_g* Mǉ"~mɵ8x94BTxƳ'S x%n.N0.L&Ϝ<HbA
(ĝ-^(>kl})-5T>Il(0/a}ۢ"5ؚ.k6֯vusس¯` FeyA	]S 0cOk?;]?u_ל0tUeE1MṕY%tͨy*M9!p,9vE|7jyɇUYaFB}NG` چɠؓ÷uV)0'Xttg7n%)%x.aW@V92HR\&'qjԅWq[us1k$]b2!Jv--$n<L'~͵Z;<͢AN՜KN;檟n">]]:
r|KѬ3qɻd8vTt7Kμ`smM9·<|
o?o[6<;INmun_#N UtiDrM0k
Fр Cћw]bp:*wUKz%zJmSVdV+2i	`YwsJsHyY_Acp %?>8ߡ
j;#VD̩- ?KR.Ǡt"4'k*=n&R}/aKӣpG3?&x0ik5g_F}'NJ
@rOw֚D7MIY<᫇,wD2l<nJx`|zߪ$i'rjycKb	تE)jvQF^SՁV
c	Rf&=Bt}.OQ]q	Ժ|s*Q^;"^#^y7w`&<f)fDQ@IT5&zܯ&8R%H͹p^? /z<YHIT .~:/[r0Ho0K),řP*"	p:<\n9^4 0y/U݉@|D.}]]7T(л2#j'UHwhsUCphNJDV`C_ }G7RKեDiy@t^NL
HѭrG>nIwحY筓=lߎkB~I^5/"W0M_@ƓbΠM'	eYLn'gܶ]`o*J9,FY
]Gî0\Y=y`(Wwo̚*&uE:h"+,W?l0:3(
&T49Ǔq||NX>H5-Ռ ~6h=.])@5|0sR[l
|!w
VႻQ	v;֘η݇N//KxbG`r܆y_떤~;CU?K3&'&Ґm'I?@Vbb=*ͣ\\\Ǚ+UW֧+~\)*b˴
b\6ԋ%t`[Y(_zppm!x}+7]NRt_sݢp>5Lʣ䴖BFRl_ abֶyە(j(ٍGtH*OJ&n턤Ghj;C[VE2cREscQ(:=3PÔyDT80hÅiSgmEL0t0Y(ܡ\)v	'ۇSVhX ^%/.ӬɛOmjKN.u`Bafnkηc/P-]UKn5t̩vUH
]<bn&(@i3hKn d= )vhc]9Yuܴ U:70a;SgQH659x*Y ul`9fqkt73F=2*p	K w
P{n9PKY|U{jHw,>l?1*skNm
5Ȅ&u>D;gpp'T
OF6U2v=qOa4}g [ݠC^q90
48]$|kh!&˱g;tgtH'x
|98w)@
;7xbeC]D~mthWS5Z=5~P떐_τ0
Cn)zaA
t4֭2g]/EOW>]	CQ
Y?וwqp͏
ә~RtIYN9
x6(ǜ+%T̕' }<)mfqb%@/=<-cv[\O3ӧ
	XUnfAmN,[hSp"֫Z;Fx>ZA=fzymK4.B|9'W@}^{z ^u'yIk@Ner&7]A~[e5ӭ89kʀ|Xa{冠f}m)]/jOZ/_MWF?#4nX&M]:<{bXڤGK׹Ti7MO9ʵ ųkꎬzYRJ<1~i3Swu=5þjqڈw7q=<߮ɫuX|D.xM9_TRl<3'1yȤs
ϔOǔ|.m!9Kft]Fv{J:ǶM~ǡ%Bg=DDP{uyc`3QܦG(0
hI!o*ԄIv4A	Ϲn"Yj Lϝϙ:藣D$FKRDBe4.{٢;uի$mw?=F9#:E6BճxJekC7Nabe@q[MR(K>.V,~kdŐf(nW>Мv;w="-P|C9zYMWscI5Dc^VU쳧=*I.ZI-9VM;cZn4m8I-?y.[Nr-hƥzƭpmh(nζ+W%g_S>  i!mJL;XIVL<> 3zrZx|F)g4~wk <v5ekY;}9ݹ75"(8( ZDKO,NYvm`OO$|!j%V3zdf;N&@|Aȿ}SBKNxl`S _'\)5-(ע:R? wzu.񉴋/"@RPy;7v0uu|'r'%THŠ/X'[ Y
"Xz^ /A1R)y]hU2GWJ&/Twg`)ǘ:
; =w憷V_}TxcB (Nɽ#pEXQ9ct-cwReVvJe[yk4OF N3Mw1BI<x/-Zͽt+U6vpYZNk|6fT?z]7K/W޸8!,*_8ΎV7	Tށ^\up~+Y]ہ{Qt}̠Zߪ&G=<.D2b:8$JeGH@|n5STs38Օu˙5ᠮ5!ŧW~յ(^?iuO7C hV 9l8dN顾pְQYg3_օtmB$IaPי+Տ7_-"T`xHN[AUG=Xa_a|GOUuy+]H)2?#>lG`ל, yʤRW)pmoxq׷^
Gʤ%4'tKHj+TEZ!D{%>uI"\[.u.^tY='+
Tp؆v>|;4䑜[bOIgg*U M' x4ZMψ6,z;=џgJ$y>0YIϱ{.]e{JoWbLo@#b
.⁔xv|
I' 8@0ƻ*x<دG
kV@DZ.v0#wSXJC  @rj1r<_`d)L
 {;gl5@" Ufǧ*j͑ܦMR7mķXy0])WriYu~zK#1Փ\1JtbL 91">Lwl5`KV9`_C ŭ
,,/U-40Uk ŭ'@Q=k 6W\b]O}J{e-}ӛ[	0[pBymb}VQ5>u0X;Vupyf#RUDf qSz GkC
MH?m(9>gDq[Qt&x]i,s~0,
"PYY53;ŰZ>d-x97!u+B=j@8WsmHS'6h&htG]Z.JL้`x՜S_eA։"SAYxAbm]ϒLbZ2-W㭆xxՒ'm"'R:~JL9f??qIRGK{rF&(g
4T)Gc&BOP>Mc4Y|u>>R$şX||PN
`<QFniG/K=|&pќ=ep Uӫ9lC7$ =tҀ=\w"ӧKwgdV
4K7OCtujJ^*ܮL?/tV8Y#H<ercX؊g7ﻨ\[As	!>\>)ul
qA6X~%u竝`6Ǽ+lvq䕳Գ%kf}+lY [ｘQ&ǐ;0,WS9Gq5& +.Y9N{9N`Evk^02?r1ǾN'z;?;-U| BpT;fD2[[	wڧЕJ!Ki([J$6TH*+%ǀMtCbZq!W) Y>xigf":*4K%[{vO(]"E=0ݾ |+%J|*Yt8
Ymv5i~:whW+
s<33OkKKZ9R7p9[gLZmԎ4#`:Ly |Ab?ةf@L+t<nk0Z_⃕^ɵ$.DK;^e.CT0k=.A3|}N~Ej
(d.
:ɗh#:+AE+jPK%"J;^n!.l7S>&+יc7J"8 Nph@C`EP䈹îg69&Ys_e$=xEJ+Fdt
2TI ]`	ytC'ފXg(ns8g7\DlrAGx˻SŃwi=P%nKg$
gKi&69@̉=
BJ
RzJ7Ī+Yj2x:șgSx6dFs!FU*B쾺&T\n%hKQ3"JU*j%l$;_ttRNtܪ|5t<FmNdW<n<fPzs7M|ث/~7VSy*0>3K=B*Hd_1<*~*V_
,ET6$lf~<q|[>zsUoa7v3հUW#Ia!y~輮DSrQ/EZQu)80UwLsdZv\vD9n	`! }Ja* .weh#]w:aH@~HX]N5qqEQHvL*A#
t{]Zⰾ$JJuI
#/ ˭nx*V{x"TGm/ Sxt
4kJNeQUޓ^͉Zv}![m)WˑCȋz׀ p$^Sxt[X8eN\ke0_ΘZVSM;<B;0i'rۓZbqV~b8
6,)[\Ublm|YZW~VDE=j=Iϫe[ΰrA}3i'-ooE2;BN,T9qH¯KW:B
8. +SՄY-O]Sn9Tr} 	6
}aȢӭoCmMӲSثְXʭ3[fKjZouM&PϫN|݁e3b#Z#'T wH VpvQ`8nlBǳ4Ki#E0QϹ`[Bp`zC[;?Uo еt</+T(S(Ity- HnD7ߪo
7E`V7<iz(aE&8pbm`IƁ6lt]dlю]Zt;"in@v4!xH#/H0$~:1ZInU4V[P
.#$4yS491ml .CR
GiS|UAl.z  BK*k6x3YN<W21OzR{aۅ2q(ΨYo>g,71UA I$S1d9f}(ptߝ۶.4ǰ=,MX=Z94g9Mgdo^պ3,
O8\U*6
,]xOʕ>j(a=g-|Hx
-4K7OV?@ȡrVg7@l<&w@.ښCv)> +C@^O%`Z7*su[t $`~țz]pu]/WԄ{Cݹ oH,۳БW!$kܡ;U})B_MIAj~2)="Lfr%/A4zCv"BoW{9r
TO{e?\?Jagg0Mi񜻳.$n"ʂp4zw5C%詚I֟=	ѢCh)4?6H|lvp-݌Ϩ"OQ1+0hCF#;p9yM=HUͦD~<u-9[t< ?sR3)׫Y=+p=2v7Ս>LkZ1U{ȹw4ߠlmyي4wP [G-]Wh\f"5H'Q'|
b&Áe,wkȁ8gYAQVB
|},VꯄgF|K
ӓ4ZCÙy阁Y-?lE IINz2=evr;PQP.p?Ps(|Y\>>0G3>QߖJ9moMoCvhU
Pm0.U!qhχWAN"P{͐wX ً$j䰯Zok@IԜV3jOPRܑu٢ߚl_ "}ys*uݺj
}OH#遼׫v,n*b[ڱzB'[6RU[ĒgS/+`	gbwIG,ߞлv^.'Vqe]q>zQ2*R[鏩x>$ev
(iFrniKRU??:Za&, eCނo?DRDd#`*'~;@2_FcD^ɚsMt4EV$4Œ^9B%!Osq<_y\<ɰEzۉʏNɑ
ȋ(uKa	ƑPNxsb4$z*͹7
|έ
Ə!
[޹C9+2A|eJnШ(T.ו$!8n2ZYJjGk]};);> Ⱥw^tW	+	(j޽*liX W%P[_Gޕ~k A<#jL,n eSVnKyQ1'n%ȝ]nUBjn[Az׻!1GiΎ&W)
#['P}xܷgϝcUu?=Em,+W ij3\BLb/>sl]܏co^ iror}	XG4*nGYVA9p<lgVCƻH `qmz?"l{k*D󰜵^UE{N0w1[a`[0q~/7q f~JGX״L$ΫqѬ%=$q͵n)^B͐L<@Я@9\~^*CkMľOl7cz8`3!~jXvHmVL
մML1ueЋ%#53+	ÃUL Rn)1r+j;R.v8@<WW
XIܾ4=&`9>:5bbE֕Cs
(גeeZWhZiA*[[g&jM8ZzZejnCAIGMM.O1pzEDꍛ= &q"/u,I<J:sŅ#GԹeY*KCB&9Tqn̈$p7:H,\-fpWe.&EI;xH>38͗~M&.WhJY=[hǋRHlbĿEbVg5%UY]!	
\?З@@N'5@E|=AZeq7Xε6D7',|S=fYBO72餺wQ:~֟"&=j 6$\SQʎzM)z]|zi%u~̯WX,8%q]xO>.g6UdfU	W0E3G i@끣F4#/sNzD:ŵnN}]IgO@
" BY
|^<1MIMPoavUEiE5~_r前(7@E6e8*P+OV4KJ7f"VUyaKCgfVVPN~div	#[ǵ@-S3/lt7aFZE|Ҥ
Wǽj"pSeGwST$ze sF)p޶$@Je*]ܰTaw&:oܠc˧WHO`hZ*_)JRuiub_ͳVtY):I:pK PIG> 4gud:DV_oޜegsZKH\ZǆTv.}Tv_70?:ay!:(:ؐ)ztu[IvI Y9on`ܫIE?3_szũcalWN",gZ)M4+;xz[Ns/ո;rq%T"#dl9BU@^Vpi^kT>[ȏN~^jwl	p&޷](.Gdszt6'#WhuR,~^_''}(VB[tEAZT쬅d_tKބ<}>"#NG-[elt|:7=sD`L|ƓՈ8/ӁxM>@l;\_p&
/,K+ߩkHR|+R9>Z;Wep->827O2;v[x
 ^>.fi Gߞӥ~تvQYt'

i.lԆ?:u9 1Yܤ"WfR:2p
+$ǭ5gpUͤ+%"HW|R3?m8|+|pU:d>qk9v] ތ7t.rj
K>\8f{U2+*fU7[rܑ(@%f͊tw=e"?lhGvE:}#	|Xwyit)}<?p=3IU ~s^[iqƔH3S_'4ޑX-7S~sVF7Tb![(4?3]:sojkVrv?/ *
zJ9x~S߯U=+P5*J}5s&á%K4PExPB$,wX$kC ;dV@YkZb5y+60;H6ԝZYBwqjWb?{K4?ZdJ2s6X/=dID%hoA8)uIemP31tMGws	ncMc%EPrͱ~"(U|/GIH>fڣAv+Q 'hLt
Pt=:B:oZ
-=!Êݷ*zd*μݷ7L; F%`혝px>䭜j|H O>NH28"f@%L  &=|^{0A9)ΞmݕH|\z,6jHXB¸xg
MZy,La(@
uvzPp}rLf="Z	X
^*ZJ~ճD$T/(Zm#@3k<pvn05HۆIBHS/W~s:&!G%ZO>pg@FGX=@'nˉ*8bG4+?N%ί74qq!y
Q{wNV\DBfpURY&?^ITl`ͱ/oLۂ`ŽSCs
Kva^[VQMpS?J
{=,)D/T!15y[%%rcģeO9]Po7;`t]Wt
'=4 J4
<P́ovǿYu{
|
zQJU}/U^=p)	${|.y͋j둢c7<aWq@%`	њDWO$qFDK]h|+Rël\Ҭ(^=)IZVXOC`cKi't2xez<(Ɂbeٕm&J8\+ܶ$6>r**}BH
ObpǿKtMFnsmh3 Գ?#
DOlS&.f[K?rce.K]=o!tfYjQ3HzjY -b|aj\0wXa
B^{ُ-	Ru抑BӪUVၻ'DkR}F-DWiBm"^vzq,@Co62
/@7ш|>X}a+du恣jhOb|SkG^umܬL:rsJ,@ւD}YB4#sqV+At9_д_96"uMvF-}X}|d/$OٶZxc[rx{2֣y$s+	z[73lcuuuJ-{iEtl548l
8FUV}mf0MZE#	tMMD&aL,JnqGcq!ѧf*~M@t.4T]vf,3|N;Ltd1Lensyx,^\S^mڣQ'R zGn7Qt"iAbAR["oйI(-RA彭u^j[6OƟP|1zͩQ)OL"9!TG :dY19nOF&sd0u1>`S\@7ϘouitV1Pa}ńE_"
u2po:K})#` f?h.,cϗJtzRPyDأκrp|Xfw:V|c
qD.9Pʝ%0<8m"q]:,@Hβ3d:s0ʃv:S~
_ޮujlH|E .R@eg銻EC%sY+cX:d,=ۂ%=D
a\#8^	% w8([ QpTN /0^\YGD{`3=1
;;oѽC͉l|2/|9R$!*O~Ha9M[%-(UK5R֭qބ_+9Si.jM>!_Mk.bw=ϣ	ϭk>5?T/]WTw+S3[u8.?c7B_J"tS"%ԧRٜΫIٲSt<t LtW>`"r]WWU%H49`yLqd6`ɑ
'dwgR`E>n6ה|}ӌkq#ϼl\	|NpD>q$=Wt?
1(MzW^P[R^Al|6`K-yKw:ȐJܚKz_}3gNYyX#&i=ځ^i89P|/pt6y nMyD\-ح&|͕ 6)x.Lܝ<CT~xlS*9LxJƝsB\).F~ɰ
MSդ  +4ouavIAD+FR"}qdG"%pjKz>38Mx@}DemNVW$A}f
,ZTQZ$(~;jm5pI_\=JݶlVbރ)J,xeǯ|sBn(ԏ)x9'OQ+[IWK꾽S1Q⤬jT	66]>}xa
£qqwGVJ5<Bc]3:+(

;d .r;@٫S1m׊˺<Dq9r ia\&BW Xní6S]:@3/F9ѩpp@^%(Sp;=)|)m,?uo^?Sx[ݐWji:H:SߋWG5 +*DP7
|[Rbu+/;à1)p)/w2a%E]61"^$&	9{y JC?G w~yTWGOaf \
ރ0E8ڽ:?pixsƨ?	az]9rgrc{|QL!hKͲݯu|wK]d(a2GV 1dՏkxlbTRT{tϹt'X
viu){3JqFQK|m0U	b1
ϣ>|!TO%&3&\ǎIu Uۼ.TQJk@!%W0WUR-[oGaje8?}`]zhC,r2<GxT֑#H4Vj}ۦS rLUjr1,YS>ǡ:ׁԚMĉ߬D 2pX4\5m*>J(JH&rMN:kgwYM`kEjUٰaS3ӹ6bF$qj=)m)^.&S]
=\uV~>^=y\	X&r>h(HLo[SWXHHXwQ	<,A30u
P3VjeC`U}\utWYp1uVuߺu7S@0^Yp- tTuu O9{ݜ X:t	&P8.bWvRwaޠpPGhI+*0jx;:褕r8Fs:;APF;'Pq-|7gr8iНScR"o`v
֥,q^jQ8$	x9	w>Fbus_Q؂_5ب͵^Ǟ@"PY8ٖyP5Ee+z*E̫9_;}hywDUW
m℈W#͹#u/7IZ$8qvdWSNб;2OSN 0\9^ՠqx;Sm;7R|*A]Oq4{ǇwZvϗutWW["ʏpmVU8Ru@	!o^]쳭XR^wFdvGP<,VS1;.*սksț*5Hqsz805{ֱpthE62&5;[޻o={u[Յƾ <o0
 }7.,EiWV #itz6^p?*_!ij*y'NrӜ_Yq$*B)ZvLE&Abp#TrD"kD2qd_9[@*˝U?Z2{M\}Է\ҺdgWsrr  jpY*X
ɤCb@Z p~˛{p5
qONPe^ka9||c0ֆw	x/c=SgtNdOjS\]Umx6yy
9 o_X|:V̇3t0-wDqMϣWWr+;Z\^aܕ(t%tL
	/_h&r^wrtT$ٸ.z[Ls0q1?:W"p+@,
"7pbTqZso\ߋCk!$	c^	,g{YX>
f`_ǲeDn)mlxxtPv,?rjW1rfr^RVPGAx!ނc;fJ187n̴V+_aNCi	qHߊl
d+[ZH$]NYc
.TPYJ͊#ɶLi'-w-\T+ڡ49' /3:ٶ@ĠR/)Ͽ9c`GZ9̫Y2r=8THcǡO 1'H`~%Z>ѕr{R

=#ca>|AQ&sTIa[|KUy?"dBļ׋ÿCx5bb:Z͎4y`FsMEq\|A$ws)k&:C%)p2SȦ)j Oȍ`ݥE789yIꖹu#|9ZO`^ҼW_p[Rו0"p~k.Md5O"(8SP4[皎}W!5ꎦ F-Mq(RZ@f,-/:ߖ.	dO&wrb6ҝḣS@]Ǿyٜ-/81.hqBhh:|gg<"u8+7z]!ɢzSY
bB8IEKN
ח荷-"Shl+o(ӹg}#S3glv/'MfBc'Gmvd9$$sk8ܜ~FD,oFv9!&d	Z.d#b6䶞s?J oyyg1mj|UUUrB誄?0C+t`8?TCh5W%^yp>Or@{}Og`^@}E Te
f"a4]	n`r|9GaVجZ~
ǘ/hApK8MG77s(~κ*٪x}ʑkT65	LxZ0iyϲva'aB&Hql
zn6eAЉ<GXuΈߢcqzL	[*nvEb;9߶CcnDvLkаtEPH(=ImmÁ)꠹o{"6
tv٪ +wIʡ)U?oNIq|<D]w]Vᨌ
MTr%)+ujF.sY%LF:bY%IX5,s֡@Vƿj#Ђ[vF9*e<"?֔f}-ε0\!^ڎ۰o;
tT:n_jɵZ_j*Ay #ǒxY:XC[Vێ	jMɉԹT[ઌl:!SQ駾 "N.4TV$/`h$gu{4N ]g@~%W4ۯ[BXkoW9)@B.%I|-[Ap0@:;@Lo1Y>f\*
t
sYxR4eҤ&5\UDc)k^~={EASK:T.:W4KSR\s!@Lĸn8E:Y|xt>*2TH6{&FФ+!kV8O1ͨMombC!
H,9ks_˹8wٯ½>_KʇTHl;Ee Ϟ6e`U{vhFY7iǼa|'7)-<J
D\"_+)vXr1@7`	6tɥKCgtBtX(]t%hJ\&
 V]/0jj^Ղ&\꾪xCOdБI隩r
]x
aҚ0Q(xqኩtpjԵ͏/9=GJRiK0kVV
I+(v1r&:
]1^R>m-!`P\.c%ºҸLAޮ[
% GI{kLeGGZpA2CSS=?ۧvg☘jw'wvMx@Eb"Z+5mk|[_r_yN
a#X8Oʴ8bҭ:]+db|vEYͺ4@#wjXZ=;UHltزk%zZPERދtwOu@Jx*&U$߹|Z$
9_4eT#/E|D~8HȸiUr4阊2[9}O\1ɥ	sE2CyۋP0Z½8mr+w~8jT=usk?ǺHv<x̻-R
%[yP٧JGVs	p䉔c@D^dZRM>cSn'oź"uCxd^jpN<ܪ^dYSsRfoꭷ;,hOE_'Vu(qat#~W]՞¥hmn^J=TqMT%/e}ӔOUIOȿl,^֡pڵz9)D&IjEʷvA:ǍVXyPc.65C8ſX?_iyα;,q)
vQ<Z/LF-xZ[돗S:uuj$8)#Tb/P1+<4%(ݺ͗E_OD|ȔkٲgߚB_1h8ˆ"]P
֣ngUt)£{A:)a)IIynV̉ktis?	/WVrH.TCks]b}Vݤ";0ɹ\wArfɭ%{+{HJR9$2KXd1|xx"ߕϠ4U	8CnfZ<-ѽU}gcrPT8nV:>LF:bJ75_y
lSq^HȓN:^@DݷIK>Y"gO]mw.t77w:+$5Bz0ÿ Nkk6ZU5oTܚ r5
fsn^y{
zCQ3Xɑ[!8,veYرćKp&<jnOc(ϣ4VirGόX웒j*gZ֙&ADf٬Ky-cͦ%Y|gh=5*GG BV*qHgp6Yİ>)K;y*@;;O|:8rܡ.FU>Z UfD>@,5wɋEvFҎ8#=M}fpZFůAq{~ۗRomV$ռɯ % 87Cn>T$py-܎jx>:Ln)^jtfm`I-fKnnLP͈UE>X
<k
v%lF?Y7oщ9Q!?;heè:	m$&6+`jM]hML7j8Uc#9q/|UwNkOT?w¶ZJUw$
WaQӕU_~ju(kbul>\!c_*pn5ݞ0Ujݫr$HJ=OMݢ1WGCh0/Ŋ;X3 ZPbNkU(t[`I<9_t.\yﲣo@y!7k5&49JXհM1-bkjQ&U11C'HfPZ<	*rpjΡz])y׼4N:HTk /I˫ݤC.gH'W/⢓,Wp6YM!Z:WWiGiY&<'jG-2GS1_705%
8<APp߿q^.du.G4yQ	ꪣ㪒b8sYoQ,(rY;r.!o8TƆ̺ei)F1u.YWLE&%9r
t9vUuMp*KiV15n[ sV(J'h#:&0
#^뤗	rm£sft]~
Ɩ:]u[rg潎Ә{CgϵVKLxGC"I(Xɱ4/Aɸ3B52!gMrث8ls	&sIa7_·ko NCg#BB*-JP64rn: ~)1!|y: 1,p)~}RsnF;AwIVJWHn3d 'V*Jw6\]CkCcԵv)(R,4_57γA%kC2	H'.:|9_TR͹
*]H|#EKzqDd'xEdEZ:]J[qon*9[$|<Tĵ݀n_uʭ>>Vx~QE EcʫK{yJCID+|L6
&.C "CoB
i·.LGWw=_vHWuѹڬ>f'Hi-kY87wcӝ-?Y8SN-Z'(5>B,`u5
.-uvWӮ2ۯ֗>uTGޟy*d*s!
a]̓WW/_֢hI6 t\CqJ7MItBk>\Q׭"W[aSIԪGaOS8jO'URM*()Pmsy	"G0HF?OpYo
#~F@M՚ruDЛh
UAe({@dT?i$0*?Ͳ#oZthSKAp -m\;Hrt|tm7˻UB;qtYuc[g
%Inq$%ָb-;F1Hv{ߏƑpcU]5e8\4}5%
eQ/Klg_(89G{$\鮱K n(Vid(T575ש}pKC``kU(ϣpuEd8Gy@`_AR4
m Y|tބ\U3=qG+$]CҎ,p6F{KQc"}$_ø[{q`cIJSI[bhV4j'7ݻ!˟ġxgNa%UDvR(Χc'C]Y [â`pFOQ|Y8GaKa&/TV*#s޲@j)(=xv=pLxXK:9d0** I86R*ˁ,Μmgmkt&^嚓y-ӌNz=$ژ p<فv]
9ſ~9wCX\w';qsGZq D`iS8WoIM$m ]2Pr#|NH,46{ ~I~<@T8jd-Ҡٮ1i#K#%jN3o2XR5buqoG?")ҿ6[цo!
$)lQ&TW4<7]@vgRLU=*m-=׫|yl.Z'S
"*JO/C;·i9Aw,U>"a+)2 PԱT;̹|D4*/<,Mnp݊ӗVQ!g	
{}j.{3mwqG$hΝlgŴc$&_Ѯ#ZnDw٣vj ?r94aܥ+uFfQ1M:<<`@ njNr	DQ8vP=G)՗w>0-xe'Qm[?"ýM,UǛZM?^qZE'1'hZrj 
#}_.|<cQQzn>h@c|,`]Vlc<l}*ţ
䪡|z*Mvy#fս}r9hqy
ϚJt?z.c*RQug1 }dXCCj89r	\w	d;"\{l
mE=!X\56SFcdwz)GRt!mEbxU5g+JP9qPo=+ɝz6A]9~ImxSer3!4lkhc"$Xx~+
O-Us3<ɕl+m+ RsJ-hCg'76Ц-|yzwJ--`IܿYAIޠ8輟]9	pEMoNrY,!Qk؎wˇ/OUW`}_6ܝ%K7u-Aҷ{mw,f%ܪREߣ*uRT9_Μڵ<ǸYpp{uTؾ[C?JqB<Y%ݏ R]䫻%ЦBOykֆV\ŋŋqᘉM$gzTEA]8{@ԕM>&GtaE=DIO6GXխEC+[qW
&8͢5"5
MG'3|sϴW4\ mU2a; Q94՗(jw
_ e8-['Yd9/ B% blTqgBYJ!̗O:ֈiMUr<@qʩWhх`3<};:[6F+K*hI)C #^;wR%5[RH
X=G=S:dPnb˳wKmoᄚr'fb9
3wD(#V]U%	Mgt4OP$0X	Z f\Lۮg|s[<P!YuCQ^祦s-kt#()/G180DtVQʯJTzHS[*vwqXUgjk@$:+WJeu!+bvǳA8mR_&C1|u
qH+Ca:e!ﺆb"Ǡ5W6^2~z8@q DW2Rx_׏OO|.Ouʓ5% n
]dD֡_]%8Js,)rxf_.W m1fچSqyaUO7d ۡQ5|'#\δF
hk>u/#
-|Ę+OjVOl[
N/vy7xO3# TVU? ]H(\+	$֕R`8G:d/cy$S6Oai+<Bz'nn8{][5Kٔ35}m9QMC~Ζ#j*,Ī6cBʍ̜j5k^O{2َJ;?AHfRY\F 	wKzlPP;N_E%Ҧ3ws,32f=^-YƭWga}&Y;ZB7`!VugʣD\%-n yJ=]..ݪC^iW6.k>"j)Eǣ'cȝ(WPwiDW+kDNF7oI>ӯ}ޏڀ&HhUODgѮ1뼡E㪺pbvS>^h8	H7%mWǾl^ xBHRq^<E{hw܎v5.9h,gleRtSCZ;K$q&WΝU>>E9B0ek
:hq@:
`'l}3%ΝT#}Qɍc"p4O 
n+`)},UL>BZ|
"XZnrRvJ@nˉ.XĦ9]b1[e&;xAaQL`wq`Q#]:^piEJ`svO|Hbqx6u#9h=ٲ.*)s涔@:0TmT(% ;.4\5r\S3ܺC]8`~d
**_cGZG@B"
͖N>dtPiב6_	gU)
.|w_xɟnk5f^%dlXad6ګa\1z^**׫fWHơ
-i2VsSh9/[`}-tHA 3`B枿\iFUaHuYC	uqP߭cX0{C-RCm?zk@}	=dDӔ} 3
A.)D?JId-8E2PgŦB|=DPU7TA
GH2E|I5z[R:A*T\%4\g~oNCe¦ӳ^X_v=X	TлT/(_\ho>w\[9UDE>hYQu	ҭmGQ(׆]ѪSX;ZwOc ؼ~k
ݢ>}[ck>켺-
"iX}`U$wGۈQ{Y_aC]cݚC܋ K%	;ːȫnhq4r#XMpvqnO/٩@O%kB$z懦xPpkr&\HG\xJR@޼A{/4)*LCxݤxz>UuE\[[TqoiU85*5CnPd]E|WuCD~VpBгĥ6kJRBpsBܺlEIcws㶔$'9]orfp.{{5#p!X(~_QS(&rcp, S
\ub_To\ĿpΩn8>n'@fg}$6-ReiNy2
GuEt "ڳs
1rh6:2yT4Խ&
dHKҨ|YM}8d<U9F#D<Hug[1/瓠493)yj)ϙK,8L)K>PY#3l㶋ѐ9~u9'wN=q{iteQNP[("8Nj5ޜT.)W.48r@Ujp$g;o;wh@.PHݞoUKNF-	z%#'-G&vo=1]ｼxc!W|'K;D?5Uq
!K=M7@+o*Gn<~ԿԻ<Yڧcp0nض\hP~Xd~sx
w//1P)<]	v<<A{$ 
׿%fFۮBG.9
.MSmnLN,|۞6xlZO|d
;0OuD|6&r y&|{ṣUEg V7"AhItݺNv34o̛AMza:*i'`H4}~T q$
D~K&Eafù}:#|;{)J$zH	[5X1r}]wQ{0*w;f_"į/$wS4_\LE~6QOjV?Õ[(Rg{jln
?twPW*~ I5fYTC*fw|&9zObx}Ҵ-+u%4{"8=a.TnhU{I4}80Ios]X(J
yYfWAA/
Jժy/iwaR/D3MR;UfIJ[dpv69 
<0sQ]{G@6%vϊ8 ^G8:S3jzU{\Ė[QVOӭce =yo"܎^O:"ܗb	Z(ԻRQ>r59a\S}.$9ExptCvQPAx5V^yﶇh\	;l׊V=.%ǚ~jnƐk8&}BRTl(S3zZɃ*IG!|q=+7+Mp)W|gw
.ƫVl7bBu}RWS
R{tY7wϨ7RHb't\еKEV}J`By~?_$+b[\lVb#|-FZeynwn98Or]P>G,
[I
f(μ
g.S8n7-2{gӢ!
` pwsbiiW%\*	^NTq9
)`y̱?Mjw`*Yg)%|UW+~!Sӡg}׫0ڶ@,0d!#{y?^]_~[':	k?VEo3
uW%NlңL=R=Ӓ6kk՝z7{uܠsBm
3&hq!H=ӪuH=T'QY4М]:πPJ"4#HsQr}cS懄+ w(l@ŸֿR77[ҌB>!-Z>sDs^q~zCgjrrGYt+Nޮڃ#b7Y?ؕ6IsEYpEmp]8$kT@p\IyZkHr(>V9jp[

ڟV'ṹ֕.quEe[w5>Nsg	:49}ہ~U	Ypv߻JoaE	~.|]nszxEucvMo?<+qUu;98ضt;Kx_S1{m<Kxƶ(7
"6>T8א
 FjN~§[Bej+nRۅr6-x`_>QiGlNKYD򭭒i,fUv8=6}F!60Ca
e8:>P
JbVS(]ѹ
8CDA%..) *t+20cN̷*-g!vy摆Lܣ*ma74eWv#?Ci#k<)t xxK->G7dn{x:BkYJLjӕκǷ\%439#efŬX0+CS}P<VtwO̬ˣ[̡
Dd%kj8zP"߰W-ŮRfNp@ 	V>e*/$#V&{v22q&P"p-2DBV>WMgAP'Z6`OwD crA"[m[˓#:I$Ebr`AGѸ+&ƕ;ғ(P]зkLÓ08@TC3P#|Gqz7zAR(-m&~ڃ$2;k'la
N֔s3 Y~jB3"NA|*|~F'ʫ
4B 	lxa3%>|O3"zjQBI	LVy#V Wb(Z̭Kf؆>ݎQTn(>f:!5kpEydŅ*r_br.u.56vTPt`fte,[)XCSný`Ek5k4-!⾓3Lv((zү^oꌞxźkr硾B^Wնj]RI?sَswt $w2.uv!4F$Lu1xGeQmBk35A*a{##HEѿOfk}>xJJݠYqާ<y0I? u
wtX_axW2`QksN`c=̬ (IWTN|{I_}WQs\1֘'rMI7\i}VJҴ(Ejr2׾ja8nt.w
'AWgC7('0axEX5}>
p69LMj/ɕ5!B$!BP&Gp)-6n HU5Bgzs'46^=.|{U_@rWV'dYWl\v@</_yn?ZMzVXeSyO
D:߻ڎ".R](<+h? g`}$ՅI	&g]jJ7^kmn}>:略D	!&]ȠhN>S{6ݣyx"ae=P=~oycQ|x PeoVvaSV*dEMc.LTgtV潵{/z{nŎ5-'asdY0{!։-ڦ@}dL
;K0>oѬ)μ:_3 iSPdȪBDe$zb[3>oOvh堉'AyYƷ	(ưr.w\R:<::W3k /'"2  ~@"]p!f)8?s=c@ĸ.	3Bv\zpW";HWv գR Z#٧nL}1k%OY\Ѭq%Y},nMntɷ㱷U|I1)ԝpNt0Ω.gUn;_62
إmķRN3COmKY-U s]
) >p]ڒt&"^k3c?ݨf~"UooA.B-Ki$Bp'gT:4GyIEPt9Z7-qxA)ЄwHlJA#	@M-MB~_y;j
`ѭ>riB8O8L4o=NTp|C90[wiMu)ǽtC'y:PŃtgu+KNG(Z9:IԧFǳ2p_?Dd䳹<⌜SRZBN">U1=E$lA
8<lsanIb\ݭ![qhnA(VHW:~_
zm^ti#o_,Hun8~0nS@[gjx;o߇(N[ovPܶk:s-ᗸ|f/AZ <N=fw8ܴ
R({h׏VrK9wHG%uꮶüo=xϚ8Ci<Mۍ2ݲUo}=owpm[UȔ3H Tk]%58jTN1g_morNR
H&AX}i'e+$X>$,hIOjpfzR\SCFjz>IBRX8 o"V:*4~ul@lhr[ټ&hWXlsFWy2Jo,
`>f"bwh;՜hGp,:#Il/X``:ARs}*G68
 Q0siibKZ6=zpw(AytU(T8}w*nݏݜüK
D$p (eĕZ:Og 	@j x*GFq*·?Oc\LW/gYpUnm \Y;6>P@Q[T\>. 4'F}	 V?X=KCu)ŴCVaiiP&f8R8q.4J>6#YB|;02tPgX0G_2C33A/8mžVY^H@5r31zvt9y K(N*4O	 QF#Eey]?
p>>KPt8VbV5m%>@+mԵHKNr+ҟ{pN۲QMiꗬÏr"3G[~Fn$v
ݰvqʷ6nA.nMSЉۜdŖ.QSE,B^ `>iơkϯꗾ
Z:Qve7hBWtD
>78xU~H
!i6 N*Q_K
d~%ɹejCOG& Se/?N/3%^@5ZguvQQ8ٟb|;Qu?JM=0G\{k;KKT[jB7uͻ*ڂdy8BlM%}ק%CRLg?ˤC5hpt-hnTץ
 G12AVԬP"&*L,8Q]Y*/na]D~P<B~J؜**JK_]Wqw`Ie.|W6p.iAb!&h0O
GW;D 2(65FR6 Um~lRs^^0FTW%{P3GKNcT=1(h0%g1;wZ|A}3]`u{;CT?,B6OBOr^۔IHbUgK!a`X1sk%)cD,2s}Dg[neCr)6uv^]+|C /m3 ױJ{vgOAWxa(N:QiK󞭻uqt4oDe¬Hsc«+ըb}CvMT\6=!-ɒ.'3@h+kxS5{
n嶊́~!kj]"Ё;N,wsDۜ^AI.c HuwP{jqqf׏hɞfōooԄ,;Zz++#,N):0Ӥ2_L-G܄
r愼y?rPN*NiؒdI}K׌Ϩ=]QIw3%"&$T.Ek~e
iL;FSz>^"׽Jߪ<#7 ( ǥ\cJ֓ ص+굹%{=ItBg9ϱH_mПw!BD?tmȓ-pc=_ h<Y{RmL>01Y	W%jk9wҺQI8➿ svkhOBΒW1pj q符IϵԟL6TYQ(ki
8"gBw9O#PamӔh``d%r+tfsՉgWQYsqצ@I«z\4 ^&}g3EJp^6cqM, goMn(ʨ* 
=
rG7ie0}*$amGkǖkRO{ZSFN(̆piVCIz+`z!sdR$LDrtAxWN2#A
y	D!
  5)ʧiŕ )`ԴR!؉äe.dwﻸ 3w>ۀ|}n+]Z`R~N9iqDJY쬍^Cx[`"ӍxhZ\y8r(r"OS+@~ZtB/5\LTTu*YX,J+ƓL{~AU4xy1DeX1"(L+KjQHlS@M&+\
jnf͆cD[j\(!.Leos2KoMz\bmiGe.X/ZjOaR:I:lSc*V-TqМn- PUw	#:ICuSxU(WX>PU츒;z%Rt,< 'i"fwUKuuojyFf;HjE=OG,<V\8 j*FcZE[<9pfp̲$Ǒe!~1|b Ax;ʌp'3UTct6`%$wO>
!py{~^1{k}ɊڤM%y[͏e<¤_#
'}ESlUܸsO<EբURهx|]a-@Jx>ʲva8]
H$ZWԄ$Dh+|-=,OIE'?ʳΞ9<1v\$U'75HYc['=E1 5-rys5oҼJE.A!$7yxX<Bl";D,S)L88b7&`DQnKnE[**.²@gULN:Kɍ
nr2\C2,9  Q |iocvd6"픟0|q3s:	NӠ&${RL6Վ1Q"dR AAޝ-^r@ՙV;ad'8ҷmNrW]ԝJuh!t4J󨞩n𷏬pU^zS3:0)>{U8Z)) \pvt~97˫p
v%˽墀)Qq}c|pUVZkIF᳗)puͮĊorAx*)ԢsOl'5
Nz>PJq\^j:!J䦥*VB]{jIh:> B~uΙi k@^^EA=K
?"rC
#`#~@oGaAO	8܃KOy5S7ѓvVSrBHOSjTq-aI B+c-~:I®N.*3!Qj֟6QJueQWdI{{Ka%oW4M%A{z7Q4kWi(B/ vyqo,euT8۪ڿk|KZ;8ןZ	k@FOe|cUVoLU}v/^U7EĽI)@Yn=／KAǤZ]
.is
ꜗ<?/rv+2p!ոP	u*} nO'T@>rv
ӻqpNJrJ%s4C=n7MySb17EfWU 
XId/ŏ_wEINAFlV%EcTFNB3r[ӯ%XaC?olV³ꍿ*#jh7ISݛ-#thCkky%y\ӷ~ξܐ!><֣,h[L*NBɄfI@	>^_9 }ȱ$\Ըn8'Ԏ%2=xm?V]dդBtl)Π)ucU:):*V~͍2xhdā!pt;
@;<,geK!Ԁ>Q6?xXGliemD:26UnΣx 켼4*\Pwx.
&:CsMq	:\"9xQỈq5J]8_*<<P]Pg3/f#HF;yEG 8ɻ'$*VGUo.'Zɰ$F/i1~bi
ǉ',BGE
H
aC	x'F_clpޤw0G Ɨ;I4N"\6MU/R52qoSp̝")(xja>WD[#P]GW7dyk|
6]xiN7\lkhڒt8\MxLBcLئE;d0\1ʧBFK$$ak%K}6u6%w(
.-P$~oNMgeSa_Aa(LE[\q^]P&Ws"mmW
y0 $	Y\Rz>T`Orl%eyOVswxv3,ǷI>;xPҩJ_~h諁2Q[% 봇U!WB.%rJ5<bR	'un6	q2o";Ǥ2}s$:vvtQ(.w[U$U7|u(9qgfDT~tBDwպٯ̚)i=']jY'TI,BgS
_WvpޮaU%[-6OA[m>ɠWΕ>3"7Sv
k+nJ \-ݨy֓^l NmֹD.086S307!e\gk25ՎxO7xTU0>qZ|Mg2|}>b̳~g	X2p9ίsAYn oJ.$cZ^3酻oHgN
S:E$o"RFkg7Pn7&r	?p\`OⅩ[̨|LT_ޑ ?еfitqWHJ{I
n_XsM&59Sү#R:Z^LoUFHuBTJmZrָBwfB'y"}=QQGAdGxm9U][,؊è,%л⮦!&8IRwA#qpr9]38ۢӣoӯ;C]9J:I>m> `q0\`ښ)7UXw<reH4Zn(0JEl跊7lC㕽T
B#0EP;ƣDds{WB(=9rL=ץ	4u>QXY7z4I?!IU:I'QQ^S)?4Wޤ9#f[QGo+-3viyKdk?ߨ l''a@r% gϛjmw>ॢ}!ӴV0jqHY#]v`[FH-<Hn3qj7jB#.m#V6E5DO41~uJx (>8+N<.uު:#I/IkޫOnH+K'{/	+OleÝ 謝7gxI!oq` 70-SF[%-gTɵR
&syƍTn~/}lپ`3UK qA׽S=֧N+!kXHl$tQda5dә'zv1ۏdZ!x6|ofuSHkt1VX[g	hmb6V|G5'zt;SPv(rp"Tq9_[/B~՜܀F@92(nĊץS%7Ǻ$5uC`ev"n%Mtx|qy*HGsJȽ0ӏ:8p1CWȎˮM8O	fgUP~֬e\Ybꊬ
G|]fkF5?ي&LL7N9J8XRY >	km7&ǌ ױ*Ge^wݰRN␀DNAۭ#MGIԆ:XRLT\
0텏>T͟-y(dOG?42Z?*Y֔27.i 7\d3OmM[
]y2|@VA;)5=/W/oHoro!jdȬҥ[E)SLYxS	#7,h]V1r#?Cr<7Mw?ٜNEIZSr%j+P"hr㽪Pu 7
7rOGy",W`0[^)vx)J$K¦ˁOŎo |EσO8n͍2[Hi8Gܛ)AQc&KZ5}
\7ZNC3,Q"<s$SX14?ۑW!/xyA]u#^8K9.g~'H`3~Q<pʃQ]N:"BoEag-GqVXZPvX-^g]w{'ձFyٔf}&zPD#
Zk&}^v*53Zݩ$=_V@hg
<Wo%WK	vl\kE-']9W=,rG.j ls𩺻A\Z\O펷ǚq
yq<EzYn
E@0z,oO;S,\sF:Ow(+-$|wcBZQ)Jey4)6qi"	v^w@I0s`e7fpD {]$Jy5XTy~UNFϰ\Sh_8-¯mCxF^yn5MSV_e7y4CK8?7K3b
Lzs>_+3j<TyRD-y5{}=.
_@^{h}#$$vӼNљᾨT[k݃-Er+lXZAt]-΋H?^"tpEFYv0A`(28y_g8Bo"Q|%"qzC AVֵ]z^EťfP0/9Rb]Btb
u]{+K(($OCqY( 6%Jceї6 3COۋOqzf:`IG)Od>:A/XhuϑR(՘@wS=I: 5N $fzi	̚/FtE>7`U0f*T W;}qO		bo㩖]fZs
yn@dP ߛqQI_UKaAXZYR}ۙ*;r9K,@0U5VHq7q6y$,էtKLWwXAk#ߧ=LB>`&R[DJl01wJPN<..20+Yl Ⱐ1<FV`9
!grʢ:/NsbAAtR9o&27yApq+m3ɏ(a7whpv\. `3WT~qOlXCCBNV6`k&j9_ZE'Go'	O;
OƛRok9/^読ەaegCoN	ZV^*##H"JT Ҧ$[Hzo}d#>|Z.dGsy5 y䩃<q!y=PLJ-LGfʠ/@A@KqS@l!ZVX+O	2Pai%(	Vc`VY]'@ˇ/A	2cf[<B*x)&ޥa5<lԕm;@J_L%L%;
P&W.TjLw^ 1GC*,z@氓idll(veQE_VtB,ܑ^u~ai=tY[wX7w!:eou
A3'H)Mut>FfqfT!uQ CD?jSG*ERڣMi_+}019."np%ys t	{rm0UCWс{ղM{+><qԙyAby^Yϣ
mȊWy'jI"Wq&iD'
@eԥᡂ9<NyJP^9Y}h]Ġ *V`4%N8t٦S-G9Dg~NZsy|-G>x$/%UYdH'Gtshߝ WKYyht[OL4bZTl(sLRo<id} w&/rsҍ-2-`1U#Q g[=GFT^fz)֠`ۓTn!6A,4,X(.lUr]RM8k$bJa0hhIX2:=Bi@o~q-z2}ؿ珬/wJ9Pů)jyvXMԵ+nXPn @w{1'5Z<=
Y
;?zQ.MU²qT,Sl;5!簠7Q#\@jJ|CV??E\GϱK% ]uapVT
~e$My4	?fT7)vf}d]LٚJ;cGR`CyjæDv3W_bz;1LPU׊]^ߐqR`sqq,՟1wT> 8{ֽlNV.	auw(<
x<R}#yэ3𪿦jM#J5]JxGKr/T
XLu5^ݞh^nVE\Qi$Up;
\p$Es}ƴQMnV6`k/-Nr'_T.=L'~VuwZ.zeUmZS|(P&>{V9yƭxjGv`gT/q`WTPb&\^[9fǶh|)41RK~-yL|%Ԭ^{G]
.&>HpH󏸀_>/<J Fj9ox/a`peaF)_]vo)}4đ-fPOgBo*ѹ}"gekHlk|u4br;<dx}BE]\::kK=l๺$<T=v#~enIho-~^ZސYkG@MIݨnq+ ;/qu'PuN~qp5||pxü$u/21)$Hp(u;ު_~І7f9AǮzԗu6G?mɀoURdEњ[HmBƭR_S^- 'CuvlU(P%bR\/b	9uXz	u5D2pir%H.oci墌:պG6>h'YTnGQΕA2s5HL%$ldWWilO Lq]r:0^E@}=ԅ 6~)e`<Gժn>#Le8U_bAKϞ
vrW. 1yng
zb%iTzFɁԜY)tvRKw|ѹ qb딚U Gg!Sp
&Vh",~~d4oڭeʸ[
^m+ptR sT~ftv$yr Q%<CcMPG`__NP"]>;bԕ>w" ,q뽠p
$G@d}4T
&Q|	#ul%x\
(ED嚂x
|u\+7dȟ/4UѪve$ ]c-1(tq	:@׮r84'Pk!P@|ʻ.Mބ^:ܕ66SQOYJm`׏nmsy!Ygͯ+N><?T4e 8SB؂	l>hi^0R,䌭SႪqZOa
1:i3|k>ێN._CY"t}>y<8.7's
AݷSl.ݡ?GS(#i4>@KcuX}TIT 偷Qwv?7/1rma&prL]1d9/= i+0Ȯ1>PH7fuO}oR_m_U~
"mr;5|4\KLI=RW:7pC
evg	j*汫}W]-9dʑ@z7f0y)ЕV҄tF&(Y/EгEf3]6Z3q2jb4smlXRuT^*Wl	5^$|ɯg!~fQ104i]* 9ʷQ3H-Q<UE

CqyL
h!
`U#}kQ*	a#ou<F* QJ3-{YB:b8Dk{ʚLG4@~Ǩ8],S'Bq~0i6*p<g
USl+fZpw}['Jz;阆ڮY7U/-ۡBϚtMGxJfTB bɱ(K3BS|!pO>(K@z~Mg X}!,u+=	TE-GsL`|q9	)I%y@!ghr(<Uu-=pw	C:>
)C!Y(pIg'SEwrR&c}r;@rϷEUN^2PaWO)Nb9JC|?NQggE#ue<6_n=F	`ʎ$e[]u b I/qN5D'u3mcOt-+ZӇ݊he<(%5$p2,J[>mcv}\JUYȓ_qs#۩:dW ōQ\[RAZvĉX2q>9?]Su,ߪ>~nBnP
x#D&-eуnLN U"8< :vuꏬέ,nW*_?Hz)@ق:y:+Jileq'/GL<$JE xPW8 v9պ<Gfn/Us/&!.0]>t=,Kr
G4\H\(ǯj ;zS#ԇ&]8.`1@z䣤lUz~X?ZpG_۰|RTBu,
W*@g܏FrUHÊ4.]qL,ǂtwlbIG}Ul؝WuxΘrn%8;ÛCĮ"M3N,{85^I:WH)x6~;(~].xCE
Ǯ)D"m{.	(T+jϹoQ%gLcyckt ߴfQ.ukֻV}[H3)	>$>UޱQ<	RWz`=/(G#JTuS잙#M4n"<aJ3!ZXԤ+8Ԏr&eH2
jW^+"kRXպ}OX,4<5@9
D;<1VrLok)UC϶[T>&ypL T2Y';ף!h9HZfJy	cN8tў>+?E$6iq*j}JۮC8&.GBH@>'du0xsP*:	ދ23FnF`^%֧S*p !;~t/D
)rԼ6K-~"/XK6mroSG:lEEV L6KZ+HHG\,V3YdW v+ A )ܗl0|
}` %Ga۪!6? 6or>SP>k8>uc	FOC\&q^[(1'8ޏƝ$&x :Lf)soqVהۆ(!:5;exD@>8rg{4}w-޺akoޟ4=f)q9~MޚuL.$h<n(؟Nodp
@U:ӒS&D׹:kc#XgSOP@v[MyO8hA
D߬)rU/`tza\:7Seh!Pt֩UeC$qɖ	µ<NXo!@[u/Є+qRuuJEq]uIQ t| Ǒ.F
l	qh\.._.e
]e9FچC4$񖃏U7cʤx6_g
^G[\W㰝M
Z,tyCq^#e>FUifRly#`zIv>sե?#&\J0Pvʢ:ug)"X->Sߖy3Ĥlp-D`#.]yL6}: qc>i9]%-f2OUwRĝKnhPE~v_$uZs=NT:
κX}M? ST)A"&/TYkb61&h1߳(Z*/Uuh@&
X^_Ѭwn} 1~Pd"Ʊ$)=j8e@᧱X"*-,I?w)CRRm7)6 v	9)/SNZㄷ>ckti ]9d"쿘LtQ9+9VJoPsЉ9eŀ0=h(Б$;lLzR#:ܕ{96CU1LN)rBskn^x Y DMW.xjj.;r]8R
#f!t[騅/sGMqPL+Vwb'(W93BrkDf.8/G5\,vw'jjS8CN̯!^f(ȁО=OgLxY0ٕC-L޷GWH(\Su]rשeˋCT?QǎUش3I&=IH.& |+ngI~\0~8sIF֧GI;4-$p/5Uc	"vd &R=	]7#+Lּ낃W-ajAjjQ/qVC]X؅_:ɐ^
Xhdw[<@qP>vhbWΓ}M uGI"u,D,=6GQ\jקӶLP9dܧ԰s-*JE55ݺ*{{P,v,rb
TΔI\O].V*a:rvQyBT	ܐ;I@fUU9}U[-,\*g',J.8<?3]ˋZUmt&mkhow[{iwܰ+p `ϔ1/cR8\1PE4rr"w-M h-Й73<.n=7PguMР =-w%U
PlQHs׆>u3՘ln2&֝
ٻxU
1i풽cfXͪNCH7`"w^Fzⶹ
acI=Å"N`Δb#U	%073:HVk©6%=
񯻹@J굁-uQz{ ( 53Ƞ'eD	Wr秵1o*Үƭck\ho/1$O eZwCfqZ.WڗXNZo]a6 fR4ORVHNm5!mDH5Wok&?Cw1/Utѫcw$.x#_4`{wL"k9sRYv": &[%޶MN훞%{h}i"1fW>$ULxT@zﳷΕ"gZj|dG{7Ji5[ Yd6kd=lc볳	U^-7a6aTЕ-2{miqЬlyKkZ|2 A. WsnXe(-qU
X&ȏU5iY+Nق^u]_O7׃SB|U39E499v!zjU F1Xy}=Js]eەggo- /A傥Qdn*38)[\zFd="ᾬw+v8at;xgSX1ѫje&ߢf=Tq+JN>Q?nt.UwᦟަАk07qWEYVO۞f
uJcjHlZ^ꥢ^1K_RilޔrQ}5Ky9d3pP@	SS&IO̟ބ*X| å(;zݕ (.ɣ$7,wCsKO8r1:a% foxcYH]^'E\9cڬp>rWF^j
Z>xld5;ua~oNu9Ʒ.OH
)\5ɴ|	~s `xN^Å_QZwW4
ra*$/oH
$W޲%=}jkr˒ʹWUvS/mioi8
E9vgx {%J@Iޡ*y
kkh]OsX
0uV(ye'Xg:`вy3c=
4]&^g}3Lzh3ۃP2mixU+G'TnG_O6qcȾa<Y6}v_ýP@gDNk=WĂ OqDr^cp]I"f}77wt.U`zz8 mv}ۓ>ϤF]	 ":Ŝ܁`kojug|߫ߑN|d$WWX03FUVM6A9MuAG?*h%i :Qle.ˡM%MU_ [T};kYty>=xd.?O큍9V:턧'YSNtx[MǨlI-<TT;oO&Zx0 T]6Bz@0CpV|4qRq!qQvڴ6׫$d>R|&^)_.24hW#;p9l=9%!x_v`25i􍜫 zcM~ruz(ա,M
U:[^4~z d
g諟"[;j6vU0tqv
AtW\UPN<Z;G{~?-5F8;C8bKs:z_<O
ᬞ|'1f¸s.fsu`'MOg{O&**h8OPt ml
R	Eap._%Nr}op3'b&[pqXfK x5 ۡftMoigy۳5:\!f!BQ?m[bYx?eg*?oźאַhl3	u}Ks&ݼԸ^HHrgϴ)Dm)JjE/rW^LgF_pS{wUfR?*EE$2]":I5fg˾7չ9׳NvʫD>6PZ[g9Z]5zW8>3\c.DNiD&qɀ9PUU/¶rBm @_򃛜z=
~`9hVS XGb]H:TJ?#m83dSV\ЩiUGL(EPo7^x?A;-~K=9$ x	TmoP%=n<;_-0oSoCѵiTiBg,oGVm|gM( MĲ8 ~N[:sL'Dt$9 3i
'gT4@i~ T^pk_&xWby'p3lw;]MMe=g+PojV/8ƀ,S
OǙhR] o"*_Nn]
`-3TQ4*.:Xؑp[cEp⯼؏vJ
hTG<t[n jHp,>*vaw]B}?#w_8MNWUN,ϘR2?4.8]6!@
׃|A<a{ת>o*Ag ʕm;!\u)ȿ)^0gkG+.5V竼zIV-n~}1H?+Yo%zbpUq4KӛkLՊ\YBHEҚ@սn$i$"ϣ@_ry,-eV8rf-mAGUG t_{d>βQWIתHHBȯUmc%pm{?;k͗mP .V	ƭXg*um'v>Sm~ږ3<
xDWy۲ԜiE˝LO
$+KYG4m&2e9NDJ -]R\Vz1S.Y!zN_ k2M݁Ή.;j%M~ǧBwjʱ(0MҒgcQ!4vWK hRrovY"ƅyǙ`
(G|^fk.>R/D&Rcs4 \ﶾ\4]qAqTqrPjbyJ踔Ԑl] P?;rkqGdM
鎝@N+/WGis IɓWj_x1~<T.ir/ZL]9~
v6ɽ0#=
|lMR%Ն	Iȝo"pgͭ^O/Z7#?/hᕭɫ͆Z}xJ1nv;|xZq[jYDD%qs8'ATR"wtdbh!K׮rWIҜiIӸ谏Z՞	^ܗLN neo֢77hr۔s<>C_9{cV:X"s8v'iz]|y- nK}F?'K{<Rs凛6xJ{yV?Uk35F 
&k}77m٧
{+.疝sDl&iy隓ˍ~&2^^ c\s.3k1A:1䱼.^W[MpU1 .ud
T9cg7J5Y8ίGڸF[H\cx.:W\=lX/F=>AUp<放=߄z
nYBĈ66޹f/!<M"nTdlxZ\Emx0u&RJvp홯ߢ?A(ćPI^h˫TPyb;DSSOdVt *^k{ؗڦ|/xsVç[-	 R`!!x UIRHs!e.L7g@B)q-=whpWd7=A$gp93N=u+i0FН$R։5;ʳuORr[1K]u\+)\q<Ny菅mԵL@V[kf0tprgmL^m
rVYcr/{RsLS^ni S3%6#Lak,t ?[!Z<p7ݴlWn׆}* 
]i{@@yQ<gj8RMT~',XRwހ[-z"ս	_uRuד
G<ȏ>;g\cķJkW#rMJYw~R<ttB^?XϽ j>A.%j%}#a.Er#4Bx=@[oߣ<ϟ zǢ2nHLϕ>$~|єюGwtM`!Tj}Xv]QC
m}g|?Ƿ̽هrb[OjLG]i!Kr+zMa+^;8voLo T-͸nT@)C (Z@o\	+9F_ޯY[."o0ޜ~8֡W%J~/UmVm4
cfwmܵXtģL8[T1YqdB'эrh"QUS2*$)xr.@gTصj ΛJu $An/<o I5lzD s&
V3-m.'hC)%ǣ2@*P(!ɤwKvV>mN>.m9#ʚߖPl͑}!?{T>
qBhZÁa801bXU8=:HCI]W~(x̱MS<i.r8wr`&8,t\!7YR^bhgV8r>) +K
sx(]
x|9BduX!oڥqY:;ë"iDgVU=si'^JQw#2KA
DIPrՌ A]
2`eۊ]N+vGO/7Po>D\0HYr-,;,`YrDTlr=B*Xo$v(<q9r
ŷ~ș3Re qD\Ր&ݗDJoN|=r'Ʊy};8`8ӹh΂^^d;6..Nt[opU>,2w2
 ([\ǌǿ@6vHӥ%C9^A"65t.
$l| &#w!*[6U7h-þ-Q+֬dj6 %h}~}dHwo( "o3	ɡtrM%dT$oB
HOk9AMSK'܃zJȝR<ǹɮu&KeV2ϭ0-u*NS>
~2r[uWJ t}-g D)SgqVNjlxKDzO,pS:T}*&TdǥJ(p:
߶.Jk
hxL4Lw
͏a++ }CWIq.kVPX|[n <[q@% U meAXўfԢLM;8z
7Vz6M.3R 'ﻸ|5)4M͆պm}IӗꊛQS/\]JU$;~7܀&$sh:o
z8D'7*~T,eYu4;>&Ӻ]q$Y*BZjhwOY
JA[4ql8@M4҉;ϝ	p#˓4E.~jm8QAzw+QwL`_;]8:+Tʟ$Q7خKw;F!Y+)\ݠz;mϬAi4i%8nk؋J֢W18pm++y uOVIiXuX/W*a\۟ɲݲFeU"v[
iX6o0/֮ypu}
yU|@{Wn"x5L-'7U&8IK뻉~eYΪ
ucyg4K>DcH
˂g#lh$RuP are?_1}YgVRfKyNnPe<z>Ap8^-߰@L/kɛ-RHvvɟ1Ux+"xIXn`.
YN1jS/ᜳ	ڤ?҉s9βF*κfitZKyգt2~u`o!OK&G(ۮF)<qf$VvaLΣ)B(un彝xRJrS I궞M̸t1:c/KʯAPpv%:mfC;ܬd˽\ò1\ZtMKjwt3:p0-^^} |]7;EIm5Swə{^xq'Z:i@o	>Cy=*rBEEn2(WO}TyȈ`9oVfN\:$-5D:#Xs<%UخX^N|[p鱄3bBR
DǾܩsFbsᱲ4M!MAʺZTMHiA1)?yCeZ8MuHZa#^_0y9 Dp-c9p762X]s}OZ)s?4x,NU[9LΏIbUO܁X$xc:iT_AZuO}ekW̨x q#*Z\; Ex&.I_/ӡC-eGN[V/M(''^X=\xħFhLP;t#*,{,.(&mMs{'[\#+ӚFj	6o]ui|.p}Zش3T
݅cEJH[!*pCNu'@bqUR{MM#>!qc콄jh}n<p?:oÆSRI銨ByN~S1<Ͽ?n}|L!
VV>+fQ0$OQ놀n0Ö{PP@-Ua.r<8}>ܫ?Z)	-
@$s)P/z`HF'EC/pɴ3U`#ls ʒ[7OgKșkc|OSG&u@rrMQMb%r)Sb)Ǖ(&[Kn݀ }~-tuGv盅k#Ԁa/Oa0 o.Y0$Bn;>Xr[5q*oվJ%<s5~O𢡊R7%}k-s;
4Ծq&	ҿW|"=j.2#΁wAʿ{K~8L)1  b9
6Ǒ	}~H7$Q	*;2eOExK0齴
:PX
MEu_	R"\v<"X剺3;te/":ޏ'9V
y'Gܟ.k-Wcy]ӦkX:^itZ¸\ NWTֹرy>2씜C*_dM2RJj-eqTP~VWJѾyy@h0-cW	DvVlq FJC=<
x])A*Ԧ#Tj4a4VCB>ű5ezlL]]I:$hͳ"jJ<jk:k:H`;;ggTH<9`6E~\ɞDrA:R*{#ߦtN
 nC	B\ (ϔYqMAͪF&O.G5q:C[}&<v}=F_+w4? h3׆G~ܥVA4o벩+@tQX[vgwVKIQYNV9991G
ȡ$#%N~9p~= ɍ;	짃1UӐ ނb\cE(:U}[IZ]ZZeb1pE '_(gڈj[-7*sDCc+ZFQrwg3SI寔*)<;&VoUė){
>8\I4	w/hҊAYg4av-/w_S/4Hy!0хr0>*HZ0HJ';ێ#e|^iNY ДT,fEek}̀ɏ_:w
MPcG e)mt2GR`sѣODz+Λ]Κx0J}KeR%&+%2v
v{"~Ҳl >* ^|w޹+9V.]9uZǸ}=36$xqh~%)CSX@lr"})M>+FYS\FZ>XqcЁWҢ>;V&$xP̄;=h#p;aF/N0oڊ%GzV*cksecUAF=y)Vp
/P{n_^LpC_@/bIwS|ERq6[^ 꾥n}sJvخ/EUcy%I!pO¦4RAv:^MPʡS8(9OfPVq"-z_UYZ<\0Ɓף$&9<;>6t"iQ_
7<ZnNFJ|~ly^&E[SZV;5n?IUX,(mG{xGa2(ң>)^Wl5{Z HZ>J¬M㰾Zؾ:m8DLq]p>Vj=յ2&I\	JvJT-|N}@9+t
7㟮vRI@
"@\6O=:q ZbtH(ͫnwyzVh;rD]x]..9\mooerJUԢKU&,LtC$X	G[ĭ<.H[մsE_J]i;:r"I W% u}!PJ%*]yϟm1WDxN¬3?8s|t'Oϩ̭ɽcgְZK|2;N?aY6O
I
!li2W-AUMZ#0L}U`T:;z	Q6yr^m%tթbCK5,WW^e_yz\4;&OE-0&40 ͂kݻ~ܨ8q92NvRDwaCӱG K9	2v)<69h<ӼCs>[梔V.z0++sCHAi=HGM{S1!~ 4Fpź{Eʳ0~g,=߃VOq:[|}~Xz~偳#zx=ZA%'JӞnKNc|ڎW_ yrGGh IײwJ.r!ѿw$gIK5u0|ߗr2kuG=I.0.dA יϽ>4+IN@zuRikg&uy,#yW4)M>r!ϫxx(9*ծHlnӣΑkX7ϝj!L]BM+#:]zd8JRGb%#~չ<!/&qMaQSt̮QT$[35\mPPŗzknH6S+
2ħg|v ptm(
R%"ёJx<B^[E뮰Ou?%(@&ךznuMS%u 9̒^im?/~VߍflH=7luh@|Љovl晨r'7PO&[:]So<R.
:jf^Q\BsKy_zbȷLQ,8$BȦ!c׊n8<d~A;*ۜ\Nj~3aU1Bߝ?AH*[Vr.xR_s/#s$xՙm|MpgUB/\VjޒYZ<~n~:0²oWG_!@;ԬҮ/:\f|FO@^(,&]FwԩR[(mCugQ72I-f\km;xi=*B
FU {Ög<2.aJuuϷj/ejl(}\81qϗ7Wnj@`eoexW_LFʽ+P#~;[( t0 A	?#O4@uN"/py%N %)HE؂*q8*ђEhwsexZ yV I3i/o?-35sպ0#h0=T4NߎpPa~9tA,Hj%AouL4&ɨZj{@Vowg|7H]ץS$/A9K7Lv
PSj@>[jad1vTK޵Lzvp`?kzu;.WI<n}UU</` aղq:Y⾐*uC*ԹY#o/V2&eS`#"qHTKG>|Wa_	Mȴ[
l2ݷ6t;D ԉN \U0]rSWhkRB\E@[.)9CZ*^>ABuľ>rh%god}QQtLϾ>Q78){9A"BZv67_"֯JߥO	Noۡ#]I vCEJ5A(#sd?=i`:oVԚbuir*UnycfuS&86^]n^3ZzĆh!NqsV`'9B:C+8rw$uˠU!߅l^Uz{K#]iA[U?<C`yu("yfcWoK6䧬*@s7۵d{Jjrafd6|OӹeIvB_"IJT{3<]TeFK$` f_ޯ.oT>mf=Ґځ(ˏO*1-I} rkFgQ[Zꮟ6qt@
Qӫ$鉒;4#Az(4ۏ3Qgv%<P=.kY3cl54p͵
E=^Gݍ*~'Ŷ4b[.S@yaO[#hb圸3tE*9l1̴-{).^Kj-(˔UY9*w	G!47wRJE8/@u%B
 YD ʤꑠ;WWڣ!0*释1˕Vtrnժ۞b2u&J6G%~vQKMv^JkEeꎆǷK\E[8.Rm}jGw̓4tad@hrm5]G8DU¼c=pe/"sS<:1GofUޣʪ꟭P#)Y]fqWM)UiV}$c7%{+
ӿj(֣U`7ib9ň,p^WTlz\nQXH89IF?Rʯ#\;08` 0%Sz?g5\ʫRdmrXeqAwDȲqJ9)57Sxz=C(xxr*O I2')ԫ&Jt@'	`Mj-гM8נ5m^Rr+.'%--CVx\;[F<g>ܔ;3I
6i~J?ֳL%d#EEURvI^RG)$H[94U҈1'rx.{<_}[9ROVD:CH~7Bʬӝ=\Wpݟ5_ѪbBĽI.R\
mtqԴ8Jk݆1"[:yeitH?cGk݌m
󧮩(bzEյD;փI=q-HH٤
NDmm'~Ox(޺*Em^5 ]ab 4"1n~ [-Èb񮉳-h#߇ʫcn
I۽5})D0'͙DrW"Pg 3`qusn< hO`W.ϯ?cieYr	!SZ T<lBO 9獳}jcggR|VU5u4bκhrpJVO}R8xUլ{ɀv)$ZR~0PrJ9&2un>j6TJZAG:ƿ] Pqzy?TihEJkY0=ͬhsdPETŚ?nA[L-݉$j1p9q\:Q	G"`OV~3Q r%w=>N%Ⱦv+t\H(F(wxIvqְ]Kgƃ^BX4*,u=SQtKaPS	[-D98oˣs':hzS|g\څ|]/JȋDECMI"QW	1C2h`8$VIU. ]:"@Uk׊3]
Rph	B,{D}9*8@!M/ہ;P~%JXuGHMj囦] f=n\r\a|}c`=9^USbGR9 iOxq1QA~3<Sm}N:
uߓ@T>p]ɴ1P?t+.JamPY<#5[q5wU!pb
OnoTV>w_\Ո<m|Uȟ 8TktP&Œ%ǖ«0kP:g u%,M8ll<;{rW*i?Va)Pg?Q SD~;_Fc]!=QL};ZSPx[u#!weY\i[.tTwn+jiF.)OE% ʑʭoTX 8wIVJ᪛:iMw
1t~/I*?((wPOg]l'd KnQ~zi$#bm&4js^:x\k(Vo]{I;yNw%w||CsH
L"j,I	Y'.
+#H?	nX%B 戓*]
*pz/nMHv4&@~8Hy(>{>6*BKry	P	@qoI u?q(:}%i-Wrx/IokC-93)xOeUq{;-?V\ݎy|	x_QjN^$,n$;Oj&0"Yu,҆w}9fghq$]@T/O:+wR6:Suj2˰9+W~sd۴A9t{oƯs߃/ɵi8Lޛ[8=p
w=?rQTdH<+<- pZּ/uLSWJ"Ԝ}G/ Z}[qr=YxTrt9|wJҩݹb9YYO m4ɻ!:}#Kyq۫!0zi&WvYXQ ظ`,tw<(I
jYWm!8(8s2׿;)|vނMw8|;%m+J%Dx
=Ack'A+!ډnz5֜I7U F|9U_GQ6OJ>r ^@|M
fƔ/9?W^u &1l~\Iz͡wE?>3;{fAxR q+Cy.lWDˡ*+6MZc,+SH\Gn nue~/%;O5/]*!
C4.ZdKiQT|I{
M*6K_Ts<"p˫ү>s֊>JLq%; o7K"⺣y\\1jrQqMQ`G}1]硒,WYX:^4Ty-YXFD'0B0
B;V"b6RzGt y<3ER\
/ޝ\;8ꕱqrWz>QnPp92 ծ|zn$.sxB~ux8Σ_AuTnݤlr^(AOdtȅڤ)ڀ|&PjkpW̖UyWN0
T.ZjTY3\~+U`?C2r36rA?Y0,Y׎u&KK7
QȝzvOls	Ѿvt T00PXDA	ܡ<Y) }K2:w/Wr1o؈ٵ,7uP辞J3qt?" R!ڬ=yd182mhrßP2f<(ܺ6]c_^KI"L8/aIVQA*KsǇ|U8ԄZ^gc;/;]oQ3xC`<5ez?]ucIaDw)|$ɉ͟8T49AɫIzI,/6"ʢU4IX$4,"(kH磫_d 5r<[-F^ JJ]r:HW8jʲ2(U+Vho^F֬cN[׶g0(.Vܣ Ru)K"RG	5I%J8=n'TC_ܼ`GFY
ZUSɈ8KJK0E|ۮ4`T*K?M1O.^B>*PP*Fo]u=-T!=5:'ַ!w4\ձBZ/
>-LBx
	$iܶ|d٤*HKvg)L9⢊9$ҹ
V z)Z "XEGqFecBn<.Y_Yv}=o;4v=T`ènb3U?c!,<<I7aG@s!sL}MG[=6|]r(eEQNIU7I~0@ҿ
]Fvw?$Z@ɠqE7E*+
HSE
/Qyds8>_]G7%eÖW!RpspʝK,%'NܞwQnr7}.(t &Vt̗~MҾͪjWhaTԕ>;#)+Dkwy]dS|E	8+X+A|Ig*ap )R?ݥ"Aal7O )89=]{`eM:$?pHnx%@+=|^ڳXysuA>AIN\ɋBDnSh6LŖT4sWw0֌׊;%䬚Ӈb-h^YS[tyý:C#%.)
Nv`'+
x(_ԸJ[J[SɛKsU;u:6b+B&g TS~v@_v(2;dp	YG5pOh9MʋxڮF˨!ȑ|B+Tazm" zq{W*v?uA)4t:I" +a%?g,KiIŅ&lXWcUgvfC.5I~zT'#B#%O]n۪~sIJc<âAI+#^AT_,H-Ԁ>\J`[(-v7v?\g:jj_YŘС~uQTzҜe4'Vꘊ9Қџ7BZP//H?<V(+ǳ^Cw/$wE-)_0el<
	+m] XXVdcS6};eoK,uZ]՚I;5E%cyZ*TSw9֙J^u^br/P=v{HFZT4ruuu#>[
k^[&G]>X?*6z@P'DrUeE"nBjrɯ?Sq 
VZ+?H97ӂ+g yۊ΁o.):]NRS |Sg!Ij5Ip6&1dطlJw~!W!8ݟm%Y|YMEvѤVI"%ONS~j1R#AY$#@ SKϦ"Ljy:WJv)5T[<S~g5HX*8uj1'oҴ>r6p~rHG14q8r#̻,$r#>9-6(޴%xAhAKM:)@h.4g'Ej<Usqbaې,:tg/<:,0x36U\j-%V;ےW
>.d|GD-tEt(kd^M[(I29TIs,SҸZ'u/	@|s2[jw/Ց$^;(MeYEjw(W&5'	ccvX<vzXw~TiB5F>"M\
ѭoR+qdRlv5+o?wpIj2%ߐ!gT@RxT~',:FTc n_Ƀ5:s5S2P R.(17SV+9굦	N2ح
>*:bpmM3YtD}LrG
w|֛;JIi
٪PfϨmGLHŲE(GʞMH@]Aĭ^g}X4{4\?eG~=XNL/V1DwƧn]ztz9jyúB&YgAR+"#qItŬ攠+$vTLdJ}oeߞCOE4d*%AKܜ0Jn:JN^kfXDƣ<<c!KY
&w؀ZUHnҐ>^[A&tF_	:jS L9{j"K6<ṟ|Uc8Fv~M5|u^bc\58jոQ&`өnz9Sw]2[g~xOj4׻!~/MMAҫ2xRacN<]<5J:?-4o׽ܶ\
oF~jaS3bRcr4-xMtq;AaTf+g(+:J@# ͤq߫r#eD$5JCYSosu#:oZyiWȄ:
ү+t!R4}x9A@_.
( :5`1_ZP5QVD3i,)9t]<G阦JS&J7%[U|j
^JAjTc?3 [ziDPK+?@5[]Ũ+uU(
QOՈ2+neӵf].59Ws,.)<T˺tN4	vg'NVOkjڮ|t	eLڼ:{o[b~ IѱΏ aG㱫&dRFdiVIzJ%(uwю9$y)m^Eˬ!ͪ)OwT>d*ݦDK9);-ɬudBP%vrW{?UqH+G^S}t"LQ&QԳ1G
OCSo۵)rIk*ixy5(!p>W#Y%]$ f2=ˌ gM\ \w{v)~(@O]Q]vpc8-7\nx[y`%Qf ;w8-
,mT#)AmR
 =^<G8R`]
%<#vu)D^yiF}3ԍgek-iKH9K-ZȍMjqW9W]I<E :m*r?*Z&%nMښk8b8*IK7͂}@4ORc,ST/GA32؊=bi*$FtH?<Sq,05CU"Еoeeyw9!Kzon$z<Ӓr%8
NͦKHD3^7Jd譬.-K⑶UJ
\Dۨ6vI=e+Gq62v7;F˽QDKW"ӭribܧ]< ިn|RWNXv4|U#w_
D9 PT|tʕĳue>U:$Acn^턤ӹ&+[TnI/j_%@P*gծVnK=I "}YNaZ壦)z?UTN>.Ptl?=\
):l}odU#,95	ja>ţ
&}"w[	YmhcV5Z/R{)-GE*y[oO<I-D՝ո
VfxHy/|XdJQX+I/Z5Uva&Q[ERGFwrSe/ݷliSG!
t<K# {hU`Ư7\*1sUX87JguXnf8ڦ+iP</
p)o% lonp@E8T3Yv -c~uឋbW<SW8)
y
$NY5W)hRHLdV(\ҷju?GMUY%nqJvJۥg.+RRe4|rge)>(@U.U{7T$@6V8>5R߰HVӹ]vB~UxJ d	 yN_(nќK,ʦkpTY^	kU V%E@{1]V獾7\ZL]:F	P6I5VQrF0Iuϴ^
raϽ}TבB\)I[[E8O)2/f}7űWg
mD
Nk#Cj;$G1&nDi| 6-a#}s8;IKkm{JpɊܷ@*jLjnRzm
pQoPs&ZwK&F#湨Wx -Q>=
Hj;:"tZ?smes!8_X	7m7.a}j]P/Ҿ䒒$N?#Hڽ^Ei?KDiY5DSecuO%^R3Ϗ-f^eP*բKҵe.>.`}p=1o*]IV	\V	T*9׿%*@ShB!#]u^wt}?Uu6uҭvs=Xy)çԓ^n-6@L$dşCJ{=9]EBiګ+=s*)lG|׷A埂]uzH[9U@\ne5'Ĕ)S_CC7->܎z=GHh?+}5*ٓ7h`bsCmi=^*r"1%ٛlQ$-A¸S;/WOFDi*DTI['ZKFNϾ6$=Id'D}yNroiM>(g4ۏTmJܮgReI<<~AsPWh饧Ƒu"	Zdiz#Ϻ!B@hubs	ZjT9gxex,oG">Kޤ#)|HK.j'a wU`''U'U>(j(8eG~4~󗦶7NqVwe^}}0꫐B<xQt#+[[F Zň't0MRUp]!WYd|ZVXAoKG@Ϋ8QyLNJRoPqn`'",{963GcQٯ͌OwJC&TczڽP:ZߋZđVn /ˍ/{kԜq	R>!(oA醙3՝(3'Q>.Qt8n+羔~P&!l:(sUտ?7Cz$zWHg6jdw/Stu-o}݌Y1ڈhٍTӢFW{qu^V35]#Q
=,߂ "HnO{>fwD#l..&+u3<NgzȰ ԩTtg ֒ S(=sg7:wN\.}rYNVȺ	ڒp%ЃPDHe*R^}gS	rk6߼})ȫj(-Vۆ	ehrS^a^)vvI9Eƿ( J2'5ʸST| F3N\Sl.DzQ<{漎UMn,
<.r_O޽Li̺J|r<ZPJH)CpFʧ_V7ە&!|Dec{7	a]HXH5\J=)N¿^@{Ӻjd.xNRtDפsђ/zE՘K#LHu^%)_oR0;TէrVtuPQA<w,/jYdTcUUkj@s4frXߣTMA b:orF!!4gT%@2E]rUV{AɅ}7سyz׮eǚ|]j41, S5}<AUT\WV
\y
@c>E=.sEp`J%/馟V~vLt!)hjΣ.֦[g
/Un`CUԷhoMf;be\|Lp%E&Iذm[/g5b<	u-!R<K->v=zڴF#
n#~)6.:Kը{LF__nT-vNl悐"Mu%m0]Mr`ˠZ5Zu9juP7t<x6Bx<K/ =~ϵ~_,qj"Қ^/<EJtkIDUr*u0#6''I<0gzҥT!.X_8zn?{l ,|?]VpZB(Dn/G'o
%fՠn50/vl<
7=)-y,uQ"7529ٍj^w3q(x H0&iKjoTZJ2u1	$݄0G7b?HQB?25P36Gu?;pn]8@m,lV9[<||jfMvVgQ
Tfр]`FպrmgÝNΈ"x|kd0>ҩ*QKFQ9WéʱiH+78"[%F2@JI	LZQs\|dZ'@m'{`pzBRJk&y1U%[G)r|,]|Z+?4R2`P8ď8Cq@P%r#"RflIF8^T]\b=2LԩP\U)5,P4ܰ'+.d[ћ..z GS]LC/}dHTΧ;]Y
AAhrq`BQE2 ;rtl=PE۳?gxͳٕFȰGI)FM\!t(ŴST9{>}5a-,-yYdY>
vU:V5*CT5Pp-W	ܰO?nl?AY1ߙ<9yJKϱ ynH)؋hWCj9+5aCQ Z g `0@}k!-n[	5y΅xu9e!n+nɴ +~[pSB{}Pسp),J {j`}Y \U97d8EAp/ʾHkVR1PEnGq>5_0Uo:)̟o6vɲxu89n-8\>I(횿FQꝏ
RJIk|NZ$ֵ_C\%+Fj.uzmUҒ9N5'% HHzUZCX}L5]D,RA*t	xTw4ql;ka\H$0$)~]Ϻn.~F e'.~!>qG.F')6e'?ÝaHm"ݝٵRj%dj-\Tka=HӿAUoKx@=u%^F]t2UH8BzR)zm¯býA^WBd"nQ
KX8*{3kx
V䋔|EGoꉲ,5)=iq8ɂx&<ex*C<ꆨNv_}A2R:"e)̀?g*.uٮJ!*IЕU{J2NxT]NG߮h*8Gej{ZﹿĺrT@4A9\٭$t<ϰ̄knTJ١D(9𐷝vmUFiF;?d䭂\e
]#nr׸@:kӨ=#F!2DY$Ac?q,+n-|DU.9.OֵӔ}Q#&_RY~,*Z5)9L<NK/xFlZfjnxA%slS!6MTҟ'^7vk~yX>lÉ(=(%C 
V!EFal>Ӹ	bkj]{9)oU|bQ0$_{s]O=\¨t~xTF4;A+WH[tcB3vw9?/b8L뉇~:20 XK7T(J@5.y_	Hܯ H
:&VG;-=saS?8:<N}u]4%\E>r?߷B"ʂA%-M"|r8Cj&9ǬƼԷ:/%uYSFGD_>+5)(SE
q2p2/8|/Z&EjKt2K":-O#dU6gޱ8g7n!5e5q}æ*~|3yw8kc%$U4%
l,2>^ݜ|]_+}Y#+-G3!}snݷc)"æ:hu!<KFJϵHQU|tez[ñe:J@'%G׻GWT4[+p׃^w炿KbKv_4
Kr1=9IlJgԐӖ'^Ѧlu06#qjTQX-Iδ֓N?9b9 vLŻGoAte+HQyXfu<zˣ_2p_Z#xFwEVw ͽu-IrmUhdtARxzX9CX^<!
NܨKyu	lD5x:sKn`@Q}$BOip4z7nƠ
oϢ%dөDDYe,Y Ӣ`UVݶ
E(h*#LK=v)ѫƸl3ߥ]rߴiڳ
QEh486V?nQH{EvCn{8QUNw9q*Y,:YʃmNr~5
"&]=}uHK
8K@E|BXm!]2k.SqNxdW9UNg`R%4Tgǩn\h:,Kܵ$z-p*mET+"\:Q=CwSmg~]Y۶HH-'OP)
`-84Pjah]"C1ӛV&YA9edCQeK,jk]b(HO7rn(DI[ֲץwIPnsHǹvBE3qx(-?;ԅ::ETXքȫmXabʵ4s|wQ%QǊotp}vVs\+gI,JzV^%	s8Б@1csdP6=XROԓf-h{įcTq:\#QŗK}[R?iYS)TMD"<3mT=^GJKNt9RЎ:au0zlhI0KBN:PU}|RٔL"
w0k"TAz(ݦT@ fIea[;('R
Tuk?8*&7p2D6
ě?n%7O9i|q|d=1\#p]i<MB
Qcgt"aHYJ}\{IDT2'7,Dm+odOLX<DmͽN$CU$/kv;s#[8 Biɮ-TK: *>.SԬ2灥Fٱ6b Uܸe}fW
յݫ/A?@,4A01WL5)JM2HYfY&%B9}5}T>F)+p>
Zh
TWԑt|:dqnBt;k:US|l:T>~~'H\G?o|m">L=Z6H^sU&^T(zY,(9S^F\d`{YPdjU={ggDE1ezO3\?XV;I'Ͻo+1 SE	2u,@/0N]~Q^KkwnnǎDMY{}'i~|ƫ?KOԔFW1ٗZjSZ?-~ꓯN\r		* fʳ	GÐ㥤J.
 Y\	P:RG6,LI@%sIoZJz+Yp%qvV~E#tn: x$*y kF9cځ?}?eA:fvq˗HWX0kg
b_^PK(.VEHo VvE㭯W|tuѥ<Ixs:H.QVŬ}~s7%	%0 CM5#WSe/O=:Q߮|*ol?RɸEv|&׷{<iEpyOL'x/z1๖Ej*u;(U&02X3	nS}d״;Q/3;RD֖N]oܩ9*?^_w%!Ph̠2ԗL
{v<WѼC*0l\S$Aamo|Ϥ,R@ˍ{w@u*¹M+HgG4˦F^vtNwpՃo9U|Ulshga7o
'g:uzɲpݶ*EʔFwζPh*K"	8QPZ(>2_ooˡ7:)w] duV5+.Uz?5Kӳ,ɔ|(WyHRIJ9#:3&L[NW*x=5\+p$+}IqTYۿ=膠ڲnb(I\BZN&˺y@L`$nyR>ghGLQCm~#袵XR*R{dh^9[7*7wSԥ+^,(gG~vbf#J$uОߡikPO΁dy'qڔضPM1g}xJscTx]Hyt>譂//T{")eeM07eRX!uҝh8Jכ'XfsJ3e64P;+WoЪᬑG=Ss{HA3WlYEEyPĢnwZ۔^[{ 蜾]P)lџѯAVʐʩlJMMz
 ]<㯸BwJbxH.oڮPr)X='U]x J/1]jO>DAqU՞9" LWGt.8ePk(Uw<hL[v<U<M]^pKr	c>^'VԻd;Wҡ-Qwۭv16~[P
USqU]><4MϺ;HԦ!Qt*uJ~HRG88Wyq KNI^4yh5WH~3qn: A!ld"yJݤKJ
IT_>MǏ+5䘅&-9w:'N*s{S>f#[Ey0^XuRwԽ^j2У}3:eKŸۭvQ3Sms8u5z$GEӶ
Hѳ"
v4HKvGkbZn]%vM;_o_C8:ORLd:gzFz}5Ԫʱ/ EDЅ-@Qɒ2pɢUExItss.Px	ܨs
ג'38|-l;Ёi&lRGpxx30QdI	P.7y܁"\Cw#Q-L)	6-ۯvaqKaHY"
;b 2ı%ĭ}=Qjbxy{Qi"0W$P`pӧGHٝez_4iM,"ݺ^WLyK-ޏ,NF3k|L`j5ˉ$ZypϳZn*ozL_%FL">Pe阣^p$llP(}DUoَELFm@"f >?*2
|KIj8@9+iiZyN5k6Tc˕@g	Q'7/81k[{QGg]4$u=CnydTV,b\cw _4H~$5y jZ;] "[ڴe_ѸnRhb^nDZબfП(ON]dy$Rt`ow61>R̓3-+\	1z~\|/5<;
g)7Rogr9bpPk[ [wzQVOrO^pJ}҈(E͈*J%Gqb8{ <S* PAo)hN#}WpxC^c	ɉ c]~#uuǧ@0RKE3gPXM+yQ٭53jLt;cell
Ah4ktQb kkEKmc۔ۮrh||OZ28xq	g8cin;tD[{{*LN׃
?~SG`j(`jMhiU׼N"aw.y% *At
w ;R	dIҊM~檧0l._^vQtJ
}Zg9ȓ8#]A^\_g;6ظ|R	 z֔SUxUrU4QERPMQra
&(=209|EܥṂ^:Gj$^L\2ꦪP"
ے{9T<xy[p``dY|·4:Emq ˈZo%ȶ"UauLO&h?:Ra/+:	]nm·o zqвUIS0zz7;ίxgeCY0̡g̔de]*><gU`Б(ݮ.M_rgk?ZK~Jy^]<bzTlR~X{|[Y9\SQB^akHMRAe
UYcEjfᳩtb/KNsc}:tk54.*V)3@8Jdm@pTm -~K>{8LF4@:*}ƄS)|:i&9-'u,#4k}-J^߄š#k}eL5BO~X;|r	`eoPz~z)p
i)5 gO/m7d:L߲Fm0g/P&%h)@YZG;R:2@٠\
7kVxL4 D~	A׵!yzN׻8+bIƬgj=I>
M&aLǲ`Dɚ\U}oRg^FBCXG"w
hYBoi9j竜UY"_an@
5i~n|#k_o6 "ؚ.)#W_ksqߡ9)j"pH!)v6k~L	˻8<C.[)mLwܦ${@'Y}%,ccyD"w/|qfMęйEQJڷM,eDMBjn̫q]!'6̚&`UtELJ﬑rӪVM,
#;x2ұ0E XlZKmZSHuG*`)إ\U\(^5*OsڃZlyeQX7B.c%Tˆ**K}S$O]@<ʋ|,5<K)ǳZ
ߌ/IvN2fRf<.WӺ5[wUWԊ9ZtvD@JLgM~;%iIbrK,"4T`S
=yj
gdc~$pU9 \;KĤRa,x׾we'vU<EXM xŧ>B3=.{x|m]S&NGCGpvjd:.9좃	\Lը>	;u}qg jBN8@*۶*Dfu4>uMGo/uJP{sQ{(uGfqv%w$z(%#ڕ|
vI:"tz9RIV.		zLF/ڔZw(O֢x"ߒSS˩6u'~NAc
\ _i:TAh+H!X'S g}p#	m\hnCXLcfoBp׽o*4ܥE{/~mз͑0`*=9_3j
O#k5EAmQ] 7vCeM-?y°
rUqҷ~0XKxF<.[CrKT\{v3RPͽ %.z;u'#KS 	P{Xi|TT*Ҕ]u-L2ݠ VR?m[80EubG<=Z\KUh"^%flj՞TV.<fǨ.B\,4
ƥMt}m{|Mu½sYBږWXjVwzbQy*q,˥NiJ#-Ov),}__]*Rd|T&8R;hjiIkޠ|Bঋ^n&), Gy&&9M@ǵ;Z8N;w:tZfҜBjkH	MP=%U3qE@@M+s
B{"A^θS6wZy,Ѕ5[
z<w-?G7qxUpJ'Х/F% -UUe4|;ElLUX5ReY~%}L
5:	NI$E^0r
TkUdUVOG/> 4U@RP	YTsHSM=~|]p
G|Гw|]*R uW#i}A?vN[&iun&S-ڔAAdх_UU*NH b:ղL\vdԽV:ζ~/COPrvoJzáKHRJbK6#)ӹ:hQIv;|T1[NeϬrW$-i ZPV	6vD&˽`n[q%@6
S/fm
(klG\u8c$W;rj<2կxQKޏ>
K= NHUZ"ϲ#Y^}<bdr3K.o4¤ C,SG;%o%@jeDziZNtNKPVՙJIFفH)u au%	=h>勒,3˞s!hRˢwb wX	ǔEQ\ģ ?َåbY
o^
#WZe/diV||I
n8%DSsE)+vsģMr:yףfyp)3uy@ə28r$'h~\8.Sм2G4"RR:5:YX`^"vn|87/HF~iOH1|˻;ގ⿮%i}$;/zekI4Yv~;wjw&#֊dm`r[ǖq^Hr8;Ǩg<.MtӸ@Upvy]ϥU3 )1uRK"+=0@R?"沈Z+m͈)B4s$kv9[Ǐ|`.o	3\Mj}lIe^rRrdR.>|Q>mDjjrHUXQ<(Iw6Ez'/vYX
Z'rcJ[g4R0MƶDD guRrؒQ&85ߦF^UۄVl!y#g}*\י~/,"UrJ7PFP&R!]"I0e>@%pCY'FR8t7|Ug1SN@"K>%0X]|e3h $#z|wIH?ch= tnq\!0{	 ۝qf!%}}@q̾fp у!l͖1s<.O
`bbj%@}Jhf$X<v9XTtQ3ǣlKt晸Ӈ9QuJUP%)\.6c֡4z֤i|JT( dݞAx9EGNRzHʿyv63˭yOcR4)'ݪT1.}&72g}\꟝X?
4/R:ױFknB{^DbYřE0Ƨ`~5_
iٍ|-ΐ=ȹQ
s|E-ivyT&$H%ѸPYmrϞ+؋ޱܡthtnxTm@O8Ԥ>SzӥI|js_ToDܦ\s$NRZaJ_ߌ/.;I	9p˫MKҗ8S@ivGqK{8gԬ}L/e/_K	5tv*FD-wejIU-/O{PˡxDQKD$	Ww۫JJ{h1v>V-%h.},<}'d1.rGxr#:Vpu߻NRuI u3Kt_eJBjk*QRzMzi)h壩STig8eVH7`xvXQepԛ$C]:v>vC$dɕj]?!9x\d^/ ,QZH[`ڠWuĪAY;>Y/z3ѠvRg`N!.GjUPTY4Tz-,W1mïA,ܪV)]סa{
L4I#,pWciis,QuKW&U%EFʭQdA}~b?:9^5VTn"pl
Ndn{IA;́s4ZK^W׌A٧7?jn
Vr.-jN4:)U`)/}	IQnw39pEy>A		xEUd-/Q9<Gp7fқgky|'gLe\>OEƩm>N
.A.*#xS@^ (oWq㱽5ȵqlW@ɷpLuyQU}\/	r;:2eu׏FL_@Mf!/⺡)CAE$ȕIB:]	ì,M\SqќOJxx*]IN`"P$W]-DCAe+@ݥ'(bN*PRsJx<Sk_Y}Ժ
4Y=!mʙr+9ЕzWsx|nIhǞ^^YRWZ?c|jSCѲ,QPOe0>))轨^l5D0k޸Uy#5-*TMz.H*5z71&+R O5>\U~}~=֤xI磑:#
rWԱ]m־օǡsqlf*\`r3/`R娒
B(Pr.zW]YqWCMg߂Yr]BjIQ[21[  }lim??:esz<my6DzE&\NHںafq/#j+ ş#*Q`-$7*HO8:(P0!r|nث~I(^]rgtQ$,%
@8ΤJo/sGJ~-*ݓr-EV'_Ը0s |ճ:f J$L5S
Er}='7+S.Wnh@:o_/[n2cpV5"ZgP)}ٓE/7yPBǭoW6Cv(ϫdof3<![Mj})'4ewxRTpio[:]^$
L=Q1erUݡYL_s/ZզN}Кٖ*) ~0(.GRD1օ0ݝաU;B \Bm2ixlˑ߶,UE[g@:_[_ZA
o'V`R|pⱕ.?t)i^npSpN4kT~Vxt3kfRjyZ;zC;fc|Ku(N;yU<n%GbhDkj,A9mm{ZbӪbzJ@&ҵ+dz5+H w^-$Y;e[ιp5(8Xw/A!$!8poj(Tp	W@Tv/ͻoa:,q$YněA`Kjg{f3#ILL9Ȳ FaGd`lM.cqYO+nm|p ɲ [\01ڔ -)]4bF2@͓n4Z
G]8
s8H_nKvL8ByI{Wb!tTyA".Ԁ 5p4֎;7ctu_Ujsmq͌ՎMpYX
?ma>R6rwHTSnEdߞie/feq V/C]I&bN
~T)aǗfO2LG*]7r`Jd05f乽e$v-˝.*UoTH:cUbm'!+ |$~W4
i!ywaS
IP~5pGmjĞ˕\)SߢZUi	UZEۿ=&nqa;hl)Nv+ IyvZz(JV WiG^;USʛ, hWb|aiԶ/.YJ;@ !&E2Yw0WTd(~G "{Dɐ* yAY<qZǭN"{+Q[yަuyQap"uӍE9_̻u54(Vzh }BF~j`  (z"w	ڧMs>Z`"EE:WkPF}}'ЄSY/ʺq\Ϯ]/UTkjU>hܩ)?}6>-#;̢y~!PUzu]^ݰd
6	k5rtP<g;NpѠ1:;G6.RZ֩ܯO.#vh(cXZO43M4}dr٫%\+덦o!ByU5}n78_Q)$LUhѤ9uGm3/WYz
vTMrے|է58p'![2`:~rD_mGv׵uei9TϚ 5[f^n)@?/ǗWv@i qHkmC@
noR
iQƠ~ZIȉp	|+e#ZV9!YOu8=aN g(W<ąRAja}=/#%)U&tt}#ԕݠۇ^ܷ#6)Vk<\n4zl&)}
}}ZK=յs1Z[
M>x
#9HYj՜"shQ|6$	tqQEG}T7MRJ1	l"t_LNi(JVu%]sThm@HqTwб7^.UC	"~Sk/XNE;r_@QUj"0oRBYqI,4uAu7tj#=T(*.ihc W֕TӁAUҡ2r 5Lph_u`ά9.O>>\YʉԐ)Oz7֗la%5ۏgs{'d qm M3G5De\ެY7EG0յΜ5]@flN͎Bg=ԬfnA"\Sܝʫ̎	)Kث(tp!0a7B	ց@N1
r1R^_sN@\4qZɴ KE?KͲ˱PkZ:&GjT4GjM.ˊL@Qtqd$D\,۰۲)軫Bnͭ&UI/Ti\$'tAs+w2e4%pPKt8 o߁_jZ|eSGaK.tp Ag_VSqUVY2<yR?xFϋ;E*UB: [F8@9M`O:(י4f\+=u$!/{Н`e*$rdP>M-.9\:J$
$msjBs+Ր/WqWG#AT_\+6w4װ$}}p&ޙ|>lWh[$zinECWzYKt:@ŔcZ<b,ѣ}+.5[GA"|CDjSZdD-YT8ǡmOCe+z[р@ϰ>y=
Zڥ'pm^\wݹJaZ zzrK֡k}T=0%iB$lE'Ky;[B/1رqʊ{=O2/PD._e "h#k  5wܼw64e%vJb#]3v9J9Nt_6HEE'>A&y$a{i)_@e,Ot⁼9Ky ׇzv_Gxz/Vj喯=|`:<QL
؟Εž[Rol9zk7H7Ɵ'[%Q e,rz5+a?Μ7lyE	\Pr}Ԑ͝Iyvn9D:aӝmߥ.'\B
{A2&
+=:gm
?U5
}kegbbg|N s1\~SWfpq-X_)ic8Oq: 77EPgk
c)>
ӿ`Gp%D)sb'_hnrpWyʏtķk ֣7)hyVN4$zJkbl?H7~E5z)k:<sWޗSqYnYplty	&n	\޺t YiR
M%4~Դ
ŉ6 Ɓ˪@|UGanz s25?g,<.$4>OguXB!*'sCaY^p|CQo|)V+g1pxG%E9UL)]4U"WGzwyO[}<SζZ4IʳEe8qZr|ea	/fI'[UcJگސ4tk#[;LRG7%(7Ws#9flƍmw5WZ9m7FdR^Uğ
*=^@*p]T<n稚w}Zthϝ헓<ES.7hᘏbtIQF9W7ँNvFyò6nU&Up	/)gp*J+{~uO|iW{qrUR6+r)}Ld@D'Oh \d;Is=^͠!T"Rq;ɪ_Zv@.[s?}uG4\:g볯FV2cUt?U86Ӊ(#T*L
6G\W`xJ</4KuOWT{ԝmka| OjHtkvBݘ{l&sT&/}lO;]L	:L9W2ѧhvNQZ^nU`.q8!Ҷ}3-huMZHq}> y`}~q*@{38t@8_>Y=X,ɿX)rMJk@/HrhԨ^9>_ҴNe*HsU
](B+9@[~ɥǰP-{?n#(6x8O`Ez>ԥ$\&oݽ?
]k_cZ|wbF󪻏^ڛnk͍'!`i5Fva*8n?VT|#~	ןf-Nap۲7%--2'8Zu$|aHQw}f>)DlʙOey\yK5xGW@lՙz[]ûyU/ ڶFyuz]m`38N<Pj인nW·4]DŔ5/0ZJb\vN@YA0:	j"GP=gmw*]3+Vwnr1Ϥhmppw:8G`P6UUKHKeh/fAA]#Kujuƈ@]!]T=.f͍?*%R?AXE-;!(d1e95켁I[mrN~l:1
8A.4sSVdfQjpad̐%mE+ZmG4]q,[t*,:T٭L%<$mY^'aj=" 92rZeP
})27cݚ䏨6GNum'ir~]wS UlAoT!;
j5}hp$	dVo@Wp|T4t9~+g\4J&]|Vj6^f*8E?Cw9ˣKӈcDq=r3%Zû`eAW ]g/zOؔlә'OK
s6qs8816H:#S0Qmt"Jmuty-sih`7ȍI=w_
xGPc{	Do|.hj2$$^:	uCt3	زL"gگ"t<)!C=$d*+Ϊ:URKSC:GKn7$ƞ*}CZ#&8F$A{QQ幾9'0+:Rp0Գꆦ>`+	(߄5[@(=<-qNAcYn-_V7#y?=K|Uɚ1Og<gS^V-sV]1EWwt~C!6y=	h3MM&Cv	9JcW:X+a=CWlú'wS9n0L вbɀ	hjU&~qu5&Bk8cFNڹAE]KQn!8*X"w =@eΠ6?'NwNDw|V;ݥV>P'W'&s[/O{Eނ.8\SMk|	EUrp9/	ʰ"㕜OI ؛zqYA:$@qӃ=L2j(@oj15i*wod^(
L}@WM<Nt[pfcj\W*X$飯h	/paS
AH$VDԩȍ#-kC\TT{?KQfF[1rz)]KKGPK5+ 	ϔ[GM^-KD7s桱gpm|0KKWNb
Vo5?UVfzVQ\^s=K&&	gDr <q	S_6&?.Gm]ȁ<ek
JXYeP^ rvr-ŦU_
TΡ4oDςc$[/IΆhXb\qWQ4h!:ۤha޾=I ҿ=^yGA_A'*pJ{<OܢQSPoX( (TɝEӿُ[@6`céɩ>WPܽơK׷J.?oHOSe꠶W	+:Q` HqUG4ev<1)Wz=s雳mv?Skʅ+y(Թ
#rYU1{%;q	qy?hYy꫆_s8A|sɭ$@۫UQ"}iVЭ6ᲡuWHI/_ۖ3pPqKQR\7A
G-O{PG0
.򼸈$$V{v۳
gUiMLr7|l0.0=.+{FmW݅;!I=ѿ`m?~?M;Vu-@VRy-񗳸.|7yIg8n 
pQ@+3u}	$3]msq%C=YC樂qV8[
y!;\gfOT3}5KE!p8gs mW|tTǁf#E0}3̷(3XTt:4CNx6=&#As}QUOk$
{qB
nd'^\Odd
G0HkB&ktaz?]KC]<T:9ORkEz;~*V]B\37UJ1+
ʝv+4UOD⢶Y<h[;$}\y>w.iy\qoM^}:dc9?1dPImX$`~~?~6\ e}5/IZ,MqJ-WM`g&uA%<(P3L-۩Xp*$KFocI-1(j\JHs\G3Qt4c6m_x 7_Zx8T
[XnͫsıpWP)Zpb^MMq[sd)㔡)ſ7m2ԖQˊ
탆Rj|xK+r&M.Vs˯jonNM4=:50]}3$0ZnQ^$r˥As4B[{{_f10 wvײr\/޴gv@LN& H7
=Zg}npװPGO	M7ZpۼuJ&S+abZL\u

-h}ܵٝ|
;.;aK"t,G[kIp[j6h+rtUT^ÈGՎ$i	&>/Ж'.G)^qd߷<GqYJBݐ0qԓ$p2gg#)]k72u{/A1_Czj+qa`J;-:^O[
7OסyEEPJq`T?D:YV1UiDtuKCHvgO|e\bU_Qs`ȦH&H(SG}'pP4qzۻ8z<tm ]] ?ƺVH!R>G%xq;ԲCEߟMȞ*_Nt:~E
`#bS%H*ghV=<S/P^8~4 6]< K7h"yTћGlxUP>#2?H7ߋ[3k=*U:3%׬c
EImED$<,>.eP.gAsUtiR c8̏:ͤ"f~LҒ#%pckD/1NِNRrȢsJp ["^Kת7W=<jޕ_<o1>Q"Ev#u\Gs pJⷅaaƫʬB|c+׏W򷞬Gr";'jP):=ס9d:g$*+:5e'R%Q75USVDS-#gi)<p'WL.w{+$0sShz(B	ک|6v*~nB<[*_2G= 7FJ=-ͪmnpgECmx g,?ͳk95ɃVCn@zmww\{$sPs^|d8;Fjpoegp#2Lh{͎Bkm3gu#OȤVJ_NTn$[%0ݶ-GAr\7s<OPoHVAɷ.㎨u n֟#ǚgm,\I\@x8Eswabg9~̀@haMZeхAmwxT2eY?`	ؔJHdצ_l;E\apߘ<r>vg#Ξ^OmjH_<iO@z϶
oKHim Զ4*rWdh@(]a&_m|(.l?B;[6.X_C#	"OCqr(tu>3]W!'`T.TK*Pڜ[CL') Gփ{+"{,୔(1gʹȶC$vW$Z+DQ,{V*¡-A	8	/R]T<Fm{..aJh£vyG,QDM=y*ϑ}P~tK\%VU]Ar\킫9,rr?dDPA񨺧cPOGT@CtroOO[< ]-gjhgY@gKۥf1r7FcvJGq5it9͗SSeS#]~q\|	TKٺV-ou<*3/ta;8OWqImxp\;Vh]o:Z,^}yΌQ.ywsUTqƨ)v&sm]gKl.M/mWa&L$USX>aqol..ۡ 0LZ)/uK6l7OO`(oiZr+Gȵ>-`NW
vqx|Q}boڳЁ:!_pʗ?$ rѦ2JUM/YU6t!ͻk
DO͓sf8ϭ>wh]%BZK7'WJk!T5vџ]%Y ur6>MQ`׋59 ѦS#Ht=2 !Nέk^qqG'Vʥer~cϳUKlmws5*y=/.q@]Y5xg(yt~^xl(>'v)vPGWȲ'l_gՆ\ό6u:I!х::jJznIt[KpS9?lKח3
A~iׇˑtn\\~CSH6+QMZږ@e%7U^>ҭ`633l-8{"]t66ޠEU[CDڜz}߄U;ߞh\j
{M_d:U*O*ś 	Urg7,ڷE76\]8w?_n>˻FAPWO5`]'p2O+qG,tynt,Zq6?9'ke]`I'w@/}Ҧ[{a~EJro
e6E%;q)mIuYlNpHOr+FOmc1jJO%S4W妐yĹ_<{!dh,~`(Rpug*G`71hS\,[vxa9Y<PO?i*sbTZ2檐7983p8oWcxrW}2\2UmS9%dJSE+laH
(ުu|qe#ʠķ_P]g+NM>NazMӹ_>]\qBD=:CkQ;kw-U6ESMXuKR\|D)@My;m.ܚzi"o(
fwҔһ)SS~q@HMCEuo[GIiH aD qB[ԕTSЙQm?BַG]t+nNt 5\J;4¥*2KjMr/ٮ}挝İ]Cn% 9їe*OEGTӊ8Z`Ы%:ے^?Z:<K],ak%dF*
nǳ)줽,S5,o"꟣puM>sU}z `i-^*/~>s0Iv[WِAP}%Xr4F.2~*4\V;#.cN'jֹpr3%eSusт9^kp*!Ww|aܥ%N/%N;cu
>uց;	[_ah"8r;Z
)@_(9uUT|R[j2*:,vHNyjrW*HC_
a>`KQ_d9azuOE
`Zˌe֣7S1{q1EMrɯC@--;utǻ$WŘ+4>P?ygps9~tgo0l	bX>UG܀(/geG`KP02aO8k	{1P"lQ$nn_AãNy{WwZ4DMHaQ<+jo:o&;YN0kj7fc9}\؅uR<6YI&evβmU7uS!JCj邽pƈˎOY:)j>ڱ:d8
ADUB΁v/)2hxY؁>QE0/,AJz+Bp⾐'5o%g~3GFW&8nFp%<ZL I:u_m^ef߉rfϕX%ѿ$W5cPuؒ)ooD8MmmP-T 'WOA6`a9+(gz彴e8$fJTyb;K/^{Pj-k[蠅[2J*jeeل(pEϦ>0)2;QQRx¾^w%5a(ڕ%zDJ953qzz$ۊUs<J^|Q:NT|׸ԙ6r_#x0k]r.hSY߻e)]D I; )$}R"o瓒ntpL_MΪR# tY8MGڐrdDdҷHa` *nr}Bt:dQ+G0O8ہNΪɺ}
8	u,Ec=YU"O${*w0=G X?ir]jWU8>`g]i,>yqq_4ԃ(aUBSJRUsNxj!+l$h	V:<tF^D*rw)ԡbcD{t>'CWw[rkAɉѪ-VރB$ڷ:Q=QBn&2t,Klũ\	"ѴUvݚ=!
Jj$wolYd"cQXRO~Y.Gps9
џB\h8yirs;@!>V9}4ƐOJ	 ߶NV? <wM#FM81MTt "(A̶|=V8.pXZgcL<|=pmk6W1 V5,]fuxu
}_^B#	}&j8Ɂ=xMK2Gtޡx{ҶӺT)g!Tӭ߉QQ*ܻ]!G1\*^="p\*dSj^(Xխ~+jow5ylUgS@cd7 ۂʾCpnG_ṪҀvkclqΛ#Vy;NG+pk؜buCЈCCRYDw
wAp}tGA$Pg[D1>Й=7!_
gAL@
F)}OG_rǆ>gKg[`HLˇ޸cq*`	;:bsR`Hܠ<1֐~qGnșKk
jXNUQz0=gG&s^gzA:E_Y~j3j?6X2&?42zK9Mɧ~w}nZm}S%8{Rգp#AՀ+6JUcqnÒ;}[?IhѬ۹i/@@	x჆eKz-߮pJRF(A8
"B{3m֙&|sd"Ows,Drpqg+ppya7,"Ζ-nN{y-`gc!9y$Z@GՔOR_5GŲow8ŃyG3,n`#+>od֌uap}p!sFB>BoeUIkzPuD$uNT=x}+%h-S՝jjJ#)Q)' QI,Qn`oTāӾxs XhBfD"eMM	j*5"9AU|leҲ%-
{9\i{ykNt4o
RE~9n%P"*^lUK͔'+XCȨq_5$l/H~:9;QtxrR~
7	5'~:iP-|n8K\)-AO۫pY hUgEg:L`J>S/L-~*q	3AOP$mi;Yٯf]ml	uO;ktw0mՠt3~ZU..Qjz_$Yˉ"T&*e}ωoM߼-r.ngD|ui~4"B]TPз|tT͹`{f}p+< r
u;UIS0!0MG.Ah
;XO_wQƩV8.I}*_ʷ.<fSZxuő$:sL9xV.<aG>4`}>u:8YQ ¬<8Sȿ e('rx]`<WL:`#Y4sQd_9\`zOj϶[n^SDNǏ8?\g&ԲӕaV{RQ
]^pY.|` &!}m
kʙ `uy`G
ExV>ao7uS* 3_jZXj?/^)NutNz	^ ~ƵdWi/(UT
Dᯀ
	XeB[k<Ёxř4zM?ʆă`+z);
K?<6AӅe!XcjDveŉ*xdʈg\[$x!*}p]Qx׳u|xHO2 E٪0 [KTCV5ZT_},Ítd0ϰHU/XbaAqOR ֫뫯-_b:-gUHa7QQ׽VYM]OE TKz߷WU|;uaV~=Â.(oO
|0&uԺѫ7WǟSຳCi*socP]s +$(+NL4[_J@*^x[-+Nu
uV=0ZЋy jBi!u'~r8G0	
G&  ̕jqS1Y*{I^)p>
;-*7Jw:Y<D7EHE pYPYSz Eג)B"}]HѦ֨
nUŚr]@̟A4 h=`@z:Y4b+}l7cKx^dlꬣg}iR%5rVjE*)Dua(۸5Z(y_J%$}IW͟ 4Fixv'N觑g>(U6FMm_m	oYӓ\ʠbzs֞[G~@rMCUY"N.֡ͧjJ3oߥ4趰֑Lz@v%|&) ovj\tx86kPЎ'}1WV	]
'aVoқ[	E8@AʿB̶[im]  
+aK3;ʼݞ V{x'J҇:p*l%'bH9:]k.MT}!* ΍(57Lv{ܯԡSNyLP"SKHl;	^n_N[L Qʯ<A0Ca[3Aicb8y`oOUvxs⒒6 GҮ * ?lE
]	S.JlDc(:fUUHdjyh;Čm:t:z
7TM :T u3MJ*\}__
d'۵ѾlKDpR~z2Q`Utljsye$>y}TJh9kGm

^Vhr<$0v}6aFaV'+j	{E=#Mv4EqN/8NaJ@1xI8ǣh[?[?{xII>R_%ݚ/Z#G4omޥP4xV9׵fUS4k_ymgIWp	\vRY(_zSjtsϛT^/IUx^
8Ŗx:N)#_.LHs=:WY\C\ãX6@8UF0`bR	Z%@5P	d:zQuB(3SptuC<b(]U6Z=.Q󽅆v7EpcG!mY>(E-MZUBe _c*>pﳗd'@a;@R@
!k2^!g<J<׊$9%</|PMl/R:mA?߷b%s(6 6X;vxL	Ap	\YHt8Y-95.W+,Xw`:	J
^8SoEWQ3{؛c,,"+GP-_j}:$骮z853:M^NB9ntX>cEa,Z. ynq)*5p,-88sgg,|qm8
okтܹ{:m>zb[:?P߹9YD5wv|F8iA't B߫h86|)Or=$sv׋ss ߓ\В$a]csZMS&7FtTGZ*֗9eQ Ѣl8 6fܽ,PzTřiXF%TDxOOD@m
 f
IHGf*+TH('(	O/7zc{_ۤ\n˚T]A=k z1].i&Q7A:^_5r
P6hgLP"x^)`;-HckEG*ݢ/<]
Vn"qGt#u?t.9ٍC85oErMrǭQd-Stc9
hKKv(+ʋ:6.rwpu!s*iv[zǭw>ʳG釢.F:8/몮-Kpd`ȡJ˂Vy
e_QEhߟ^`Sh

D܌@IķS?&;u<|s&< ۞T싻bX{`s=pap=wMG*2?O46@\_PUapqa8VՑAK$Qv;_ cFQ٩_KЕ׈Rr
;+D0m}(X6q뱸C</J`."<}/#ݢ
v:6tuzߎ0*,8M
M 3TeYbV7%Pgv ~+y?{xq9N&GJI@V̯o|fgo7ylCRڛM>'5K&rk4罖\OV2Sei}$}Pūv
ǐ4 ח#p<~fo
iHeg]jԪv]FT9GM0D[c]iv(3Pw.0gD^p}\ppBw~}BhnTS0No6i9KGu(;} Sǐpl^`0]e]"~jssW72YVN	sTzXSVր9A:קzR>7g|%%i&\_qgQS:\Wi[==3BM] /xݩ>^Y
!8Ԅ/jUTZx{zeHWoNw7#Ṋ7M!8t'W}z8TT|bR2ut$<$
]GĦE]Ra JzpY$#5DT$7)GO(-Q-XqLS*V˙Ve;
\!ǟHԖq_nV;(Z
r	4땎dҖjcs%hOԏԡ|1S)c	-ɉ+..p$?Hds`t*mwDܸu;.+upR]'#npP]bui(~
hK^fuO۟Ќ[g9$iqx9kh 
[[2Bk__ ($s")ڦ9RPMaӶ:cXiLLx!*
r33 	*RV{rJ8賥DB8;{GU|5M\=0kXXIʰSh c(IPVΨ#év=F/p3SÆ,|uWP,ɭ_
aj6ax~5OV](VnIIJ0e+qb83Ylv7Qۇߟm
1*j$!atqYBe	
*"j^\
.灴U((4e\]#)Z+jCMگmU«J36PȭgZUN@=E/QEm߬.RO_nWlFAw,geeȶ!LJ-Lp͡$-x\p/⡶7ϭZ!Km<NG\pVCmE?фq*.;R<dW'VLKo܄v8@ ym`b֫<}D쒚aw@=x#_|{&}gӤ:jYh6iYiZ+$n*\_5[-xR
Btϴ[TLY.NÅ@fD]-䗷(ڕbܣ˩:"efG3|3˙?;Xק}lY;ѱ^:	di`F*kl!6#ՅM\h	])e)kR5[.:^rS9.#raqoW$~`8PB8&`+)L'

WuEˏp|XLiH`KÒxT}Xr!]jg^	q(Ń6]mINo=	%F0mo\HY`MzUq(q6$Nw.sܒՑs%_U:iRO8 AI

nI#
7?1`uEy, ^޼ /rc֪ჀBEn:`NNSEX̍JIߪ6xu>G.X)ӆZB]B5zΤMoZe$>?~|Eo>OYXNiF]\GHb07ZD.;7B\?y
[BFLլjo:g`k3{{.5#ˌGpi{+!!Bݷ IP{}ZnMuu1ZSJ+dnw0 Z] /^Ap[%8%{zŋTtu3T(T5қn¡=&ďM $ By@\՟Z\G+vVMNQSqLVU/WG{==
uޮ;Mҙ"E$k%yO]ЈZiB	7#V)ӣA+;A	$ &O7'V8R^W'ɶMϟpJt2~K<Z$Άzݖܮ͠\d/ZKr˰zqyG,X7% hBx
.=}E8sIy 'ۤc/1*'4Æe-D[˵gdo/i+!ځSUs°41)9`@Cű/r%G|{ۺ|̵ٮcü+vkvt>Eyy|A^qu;˧{D1_la	l?k?E"YEԺyVIeݳ!FXA@Zt|o]ݪ2t<,cweESk?^j] Cw>s\Hn_S_cu/I0!vnD8޶nP_6۹Y=7j?YNǸI93ɓzIg_데Lyo=LNS>vgkђj˪fƝa
5uTS`^JjtS^e-3Gۀ-HhƇ@}IS6
.e%x Zjiw5qkA5
l~+vJUʉnRAu>=2bfTF+NjdYa|7~G벙43T+9a|L/8ibGNM߹<c>unWv-)>=]H 
m\$@[+m=U>=>"jmN-cɶa{|7_i+m0T9/7,<'ZHͨi;\)->_ZNs,Кdy
]yI)C j FWt4u^u}~gT3%:Hw;/2?	-uLTwue'?Xm;KjK0M\:SvpQ0)\b^7/:K{I!y5(B?qwDۀZuC\D9K?.ludɖoi=N;wΦ-+~Kw%#!s(OwU0qY
l{+uAPsz-H`k7RG;dl{RY־|sٙAV'[f-%+\h.BSzse8%7Po/nwTA4^;EE/9<*43h-Sr*x´Bmt ^..@EfIO:rB)^\\Sy#b?:pg\PBq_+yI@}*ShxSPϼ\ƚ
o.zC#)\ٞ
]=99O ǟ;womhaNlz3S] [RMkD게sPr<Aj{ڢZ%
m:@h[WNWuh|b^eUWϓ^?UėD\붔m
+:@ӵ#=\6siճP鑳]uJJar5\8jlr$Qu{s m=/N?b6?m-9R3pm6 _6miY`0<מi-aM=R3 2PѿvPVˢU'KmOmtBH5zʏ>mL@S\,}4	(91IJE4-S|{{7b49IPfn\uh_q-^x^$|j{<6[FM9 mpф.sȁN|Έz}/bO}=3뷎.v-37z_vȳITu=b??]de
NnDH"ɇjI][I zj%e!
_+ﭹ0/í@S`ŝa_) ܭC0BX͙DGࣖZ&L's2Xh!<]~A=or9ux
ODǬ쬏*S{p-w`ȿAvn8l|ǲ
JvIT0\ɹ_GNsͮ\Ǡ;	N%'D19RßVQsP{K2He+A_owYnV"F>I%OsWSE#t]&@9s:i3;:y.
JU8-\z9}4aC	#O-@k5V~\up14[Sh|u-\M )/:Fs6lg	dtZ(=;Jxx$":E#(MתOQ6ycފ7CjW-!
9hVd?4 9s:i$)vf%*mZ{M[9!:FiYtdwuFɛB _)=9!b}%sHp֍H~
<_F&*'[eYBDJ"hpR'	),[fsH<}dhMfL紳CdDÄ8>hBOTzxe5b]ל|_rn%e)g7Rݼur{ˁaɖ91o |ӬYdU/Q֩@ `GO.(ffբeG;aS4Jq	+HE5hwEk\aQq?Z<< 8Q#KwPbA7F$lu;QY֭CPU^>g{!j
1vqU_O)łRt#Q&[#wZeJN]%j.w8,28'u6Zx[3iZN58IH:evtНrlEeΏnPԆBYH;npdCxғ~UF!g]tAX5\CU%[qxNQpi4;))tqV@7E^2P\Vr[AkpГpȄ}T}	t04G+oV+-*b.2 v`u1N~oߨ\^k2|#=U-՛(jKʈnZ.7p0.iDDҪZ~t9ϯoӖ]l.Tm*3񺾑R;U_< 徭  
}}ӸQ#h5%oYrw9۷sy8쐀AdtYFԖ˝9ZS_n	5#.盪{X">:ܗ;𒦉\W]a l~P1 NV$tA
;>aKPz
drt
:-{(QڨlSP]&g5 <Oǋ NzEH:^w#zI<S@lӇU
+BhS@6V{,@%UIhNXWs9qwa|y^od
pUΑ1tAaoF}ɮ:\&*-0.D'2F%';j @΢C{KC++H˝Lng-> Jb3q%Yt<gw$q Xa޶v4_9ZpkѸy㰼_>^+QcSPDHpsev'[\_EZM1]D{ 
Kts*ztK`6?:
@Srz^"{8S t=WLФV
"D7HlT~X躝'j#X کWU׬N#_M&Qpn3wMZ-pDqV5UFxu,n^T:t<O0^fыתT:<=x NRք=JO:^T@5Q\S cZb<*}vE	*Gy"=P!=\OGSŠv^9XakUIC+*l.[2.89Su!qNUrE:wR0ۘ ~0UiR$a끥CdE[|ï{9
hB q#H+xMu[^B g5KJPG3cA3@Ai\5=m9GDmxf%tY%љ`77]tݐF*3AI7}*U]sJ
jJPɟpxp5t؎9*hXw_<'88+3ìZq6c.;#822'?oFߠaF5Z+_=OEȂ]6åuwB6w*._;D@'|EE"VV[
N߼ #+Yo`b	h\&nNr@o~l]+	?
֭e!GIׂ_\
bRO$&fچF.:sGI
{l-ߐmҕ_Ug:pxrK=ubN$̑Q)ɕL"v^ߜ7lgw.3e;^4,'{ڊդ[ؗf}}t&I$ T!<Knw0SA[r\.@uhoH- 7ʾsVek\7 K(*qfD/y{]\eF@o/PX!|`cIgnWU(çLIVXwъ7cHHrݻmiG;.E@`]QmeV*MD@ڻMdn3sܞneiXBrVџh..ͅWP7bQW)|dpi0KQW"@ʝ=:Su+<e%=9[Bw'vL5,xO_n%k#wB-Κi8*=.M(5"ZrZ5K.yG}:n w;aw'$ړhvsV0UYI#=޳paM3 g	@&0WW&^Aǔc_d׊{/-aj{Nw^5ISJ>"qB],IMjXN>sU2V5mD	dB_툅< q82_L~_hQ~^<1B:1r^	Ӛ8鬢Nl2^h#-hyzg]ͲNFYuÛX<\[w8PNTn,GR,#ȋk3lqA~>,P<ΨʡQo/0k'@EQTQ׮Sןԣq@4v΋OYض-` 6u·%u-UyVk|04~/ٰp;2#y^5C@g+qhYow/'){eU3ɺvgT)шs؁g7+Ms 6E_/RA]2V9rF\*,*TA(rʤ2X%(q )+7!s?X57dWy%jWYxTWԉ{u}IQKm&V`)orY޺\lu+yt~rQĥ	C^Q5YFJ @wMuhoqN!RųzSx>4t`*+V?C[;
*|ͳ׏rv
Aڀ S
^q NJpv]K2o.^%2m,LuP6DP<.룉6|*Y.k^Dޔ%Q_{u{Bek!?8ħ.HH O-K@!qz7y֝^_Rʻ/Ol[h[s8e7=y'%tng\fm=E!VQ)t/ϡ0dê!0Wp/-'Is@.s3\T:rsV]s8FTFZzq!j>\,-5s"2Xj $]@S,k*q)
~θԫvr\_mp:Oa[]UsbԛX&uېJY~MyTl؁39Wo܆fhVl;]dA<NJ*AƏ!S3:`7ɒ24Ḝ,´F6M7$lay
!ۢFv}Zf~4){	}H$	NJO:vU",mv2K{b[y`c\pJ0!GKA2̨?OZc&f^N>jXeKnymv]áo/ifiKѹ*rvl*;y;(JO-Pq]Qh.תWwuIp)P1N5;w,zȔrgEg[Xg]?ɿ~?ȽY%H8I3pHHkX xmM뛐tvt-C]WaȼS*gނheAT 
H[;ToUTƧD9o82[zcEKTV4u4.O;gzҜ_eq@ebDWSIU]VSe[ɱ#J<VZN:yQ78HϯN@9CV2r	T2?qdz8v0'	
v*N3I?ѵoJ$g	0z;&;TMdts$L|k;7Je%>4+Z"$W`X:so:g
^DuWP"+($6\#|g ݼxʧ`Ƨe\,^R$KqɄ!6|
ro$WrsIǴcB(m#7!{=:tZ? ))UNVˣP44+̚xJGahi+N=ZBO=A'݋UKmtegISuJsN	'\%&Lح*d:M"Osb]JKr?Z%*E>QȽvLݒCu~Tv: +'s}Tฆ#X8Eq`(փk8mLka
Ӆ#]աWO`E+U8Ú&XU:c#}9JL1zwqWsJZ0 Tjp9NK8@-Q 4 iTAp=g"^b̢g$|S)KJ	7'Y3p,WO/zwדܽsϩ)PAZ好0夠G qd[ڶUD5'w.`+8p\ '"ҲhZ붴]np`H;R=T㫸fUMDF'3ʩtm]j9쥖-~G'.aKn˫!WG	mX:2vl:-AkB6GHeQs,h^m/(;^
H_E:UPAOx_fE>*E㫟h ǨxU/ne&9rE7S}?֐K9AW%TwkOpM<foM}mGH뮾O/1$ .Y	'7Ds`XK@%@VPbٱz	TU-hbw05]7
\&#<u>`@NN؉技i"_koKS=4U{ذm|Nvi77^77jYU|tVq%_M!@$y_ݿ/
`V5պ2CD#ω	,X7ʥ׭~^7EEVX `K"5iar p!N03kXl28+t헋z)^wA1kQaI@=`IaHN$RznTT
J[OÇ_	9-)@ׯ2DیSw8?@3[
FMkp55;A8U}^2!B>{|	,`X+$81o}}>mgn9yVsA.DՔV&|I2HR|O>˄{8
@-x<_ȡ\
##mL7G+nvm"+2Ek$͡k5".fAB+}pPߞ8lLu}{pg_'skģsf]Tjk|7o7իV/C4K;ԋf/}.GmtE
k.ǡn
9Qdi_Lr^#y
(ם$(BAF"G6V}kn)#L4@1qᘖ[W"$y*[Z*6omQyg]s浫Rv(NbUƷVV8550G*HrNI
:K9M	j~2i܅Ttq_Tvi,}`
tՖb~[rtӸJ{nb8 T@
ЪfcN٧B0A}VP}󆽂LtAQ'tS&EKQLJvV@橰{gH IA>"GFXg9Iͺ)zOr؜[
Fȃ}d˕Y>,|5=>?E\t6`jC1ݜF~P#Bl^כi`[er|
컅-<&B`O<qm]¼>Hʦ!5-ir0ڵM;GuT_>Jn
(q6#RɻF}jEǴ{ GR7mst7fw^vk	QYGx؉/|OyʷO&qZըmL*KWT*)A١kmOI-͋Gn}?ݞVuvnQtD<nq	<q@]&%:u&t*7(aN;O!-~$c>^6PW@Z_cwpk0mAEG Rʏ~Cm@p^@,َ%ڕ>>*_zXp4	N)a5L?ѳt"B.A
)9%3nt9ѐ_
do.KL̦9)V=]TtvЀeUtO*p+؞4[#yDqSu3vIo6[;7yty(PTs:+-;wcufKE#8%<ˁ}S97'C쪗/Rx>ģifɕLP64tuI
<7'_q6pX?jV"6Yk2PRWF
hv "kL˭S({C\:EG:s	6R@َ?C#϶b5$a.NTKFۥr>'7~i'sBQɜ[F<x׵8jt5v؈ש,V׋?>f(*j9ܚ&HЀ1bmt8;_q29,9lKl !j[E\g]^~tj}
Ǣ\s(*~'Hluě@$Jy v>R!X kǥ4 @rl
 <gр*
jLt$2ϝUK灧>q3i%+I\j8T XTz=PҋG.iRqt%u*`m$?G5&E짹#ORl%Ov8MoZpY 7"u?,0?KvgSg:=)Ǭ!ƞOjI޳ԫ&͔
6hL״ }}s!Em^<O }s;`&Z]i^
`݉cdaFW)U(m^zEϩ	GL ]uV
$Ž+>eHu:M'T5")Oqu'ʅ+Igp$*f=P|߅0^Lۉa2UYR}Qo?F)X:n4ֻ 2dxiǦgh;FqkG4iPBrMnZﰷasi<Ugt^۷LڶiQl#²?УHila(/]5సpȭW
pUN21ȯDLR-TEûz# aj}'yqy!ՈJBwg6+JTjA9oP\2W-wK9f
,fH9+_\p_t=81]U,ȹdn:	1]q[_:V<_s;$>?XsEV{/7ŤqsgGڶMZ7=|/ւؽ).4u	~w8*(V瞋Ls*I k	 PuQR(m~H}D5vpoN*]UU? F,uhZr"_$E0mS
VCMO@Y=tg6?.\$% ?|
]ru*O)gB+z}"Z%A\8+rsd_?dXcz~&=q>	f y><^ϰ1o_
\w(yhW	wk9mxh/W3g_mB2m)WvY	r+y[YGfθuڿG,@=/~v<#eYbT fR^G#;|p)4[sƵqXjz8ǻh"]ܫ!%J2Dr*H$w;֋:~w'璅t jomԿqrt
o.;wZކ(uxzI9uܚ:8ɣlSq𹗇+ɠn0A}ͪjTfvf>?9㵨/ВjeSyټqjxFQA-BEdu9bژFXLYVIEM汐2Yp慊k_X7ۅc{FjO'ymWlCL쓘@= %5Ђy&5j`v+wBDOશK?2hbzQuiO}{(l}-\)-^8cgk]Re-b\J+
`LyK= 5.' ViS:tBUS(jSGݗ-`ZYe<gQIQח]@aZ:"Y%IR^,9NT'd؅=*̽h,[`A1gBT1M!~m>RQ<%>D-iܑ
OE|.<z.:(
?:LMޭ>࡯ä9F{fqt۱@t(M>P,{Ė%[ߤt`[[ɠV6=NeSG[˩[1DVm<xy*+3|;|WkܛNTQý	g_W#8yI&dSI	!Bm9<Z'dfM<sHh	C*v f8o\D&V5&vÎT4,t
Ƕ[VZM_pEC6Xˢ
:ؙ\@I	 f
L6XFUf{$:?P&|N;/W@7p'c
Eqߡ~^ı׆AuJ]J [!CRԸJJ;	
 \x և*:cn~}] .7H/Ul5B!W_uWO~	Ya1T@Ϯcwr*C:u	I%}4C!*gg&<AW[Gu|n@ k]W{H"g̮8ܤftch*5*0Lyp捰N&o~ܣB=BSi@ktwV]}ڤ6)+9$YS/+e{>^VU~(~-[w4W]+	$qu+gևђzG5l/&Vܱ\ҳGkhx(b| V'l6dYM6hiO"I>7PB\]pyE.W#iu4-.-/+BPxkrf]Mup
S~U$wMߥi3WZ-j5/ԑwKzݪʝz.(wogxiBwn ]zxƗBD|v͎I}735%<R^OJߏ*Xⷥ	aW7LHQç8'5"N*%*NEB_[);@EgZoNR]UMvE}¨%/f{,_a	ڴu&ܫnܭ˥%B'"^lqg 鮬O l+-@Yf:o!(!MhQ ^r2IVp6j'7'#A =w3peq.VoAi/RTzu^܋$4Uⶫ	md/<kKGMf9N"vN9-wzfLM*Nscx΁8ɧΠEgz5C/ZU0,,s|D5;ʺW_Ek:I*aZ3?
4Kr[xti`Eai@'X)?HAON5=O~Nb@֒"{uخx#(V޺vߗ<!+ ծw)Z86-Y$3Cˍݭ6ສO`|ܚ
nI-@'h'g#OB8|۱ebV3M~U=Zorą|KF
VÙ@Қj Dr1*N*֘X##9O::C0LҰnNYc
(GzQ*ᱰqb:[%
gcR0
ҹ3<n<]n3dof?ͮ@b}0+{,|ꪻ
zW)_wt"x*lҁnRS4i۫vlQ'TgPJ@*5L~zb=4qI}CN;I>bR2|_}\ޗ
t=\)*\QF>nn.|u7".$?
,ڰۢslڜWFl?11ځ@Eķ>pNLNXTS9'-Ur]Z?E-/.V=O:'/ kv1gꛭ0ᶙ4/|FjZ4~Xo3QW;u7;q|<{.s,IEzzuK+p(: Hkw2^g!լa ?O.x^O3hOs))ux	1:2SqǾE%՚. U%AߕOZy}c5 b_?羒G-_|bKuV<u:sUyY3F@O,]U_xUmRqUó]I]vs 74llҞ 
,j@>,-&,.%\Qϳ^+b)E4<V(B 3n-c8 uen,ψ3(55\]	|]zrOky}ČJv͉̯I6b(t^Us :>i}6L>-	ᑵFggz˓yy11dOM%+ޙJ/P2(Y[g=ɍ
>z"<&(xoc r`WzAP)v8E[3>9)ȘǸɹQ(6k""GJe;\yfjC`qgG λJ\h!#xO5|*\yGْ$Vm\<ii>ݙq(.W(
/e>U\qug,Q:շJx{I/wbW,$'7]|6ܝPxSݪZA0`3'CCx
ĜtfcB
E7A=Px!_3I	ȩkRMW֢ .r\ y

:\n.5Z!<]hdܰ i>=UFٯ+%ЭJvٍ/혣'r:%CURiǑ	b5!T?΂Z@K˺{Lǉ[x5uDDPX{9j&OŅWp#FE8-ȎK  y/#}O{1@6߻K8~(g<`*$TL8*&\87Ñ\pLrִ֥
yX"dЎff%'3cNS-:ݶgPio6X
\(QmT,
+}фM	Y3<qy׮ U)pxylW!0!L/@Nf(@f5}\{%5.:ԾN~ڴb=z[M\\o_&a)?@9Z!n]wU4e@>"q	T3;X>Nm<c=`algDZi;v(Epp~jb-VWgy,7 7|~r94_N{ձ{ue?R~+4ԺT E<///pC u>KU?H`POwyp3
K?AգI'sMlpH|-Ejh#ʪY8f<kpg6;>ZZ4I!lwbPq`gn[H)U)d	> ;P.hkK[B*̍S5`8tՙ#9[i l]&j?_[&W
Q|99ěXH 1pCV-9&'üL.P8<N qFNwC^l૞oS)s5Yҟ8$..
|W7Pn;#U'p* t8;Q쩨I"VGg\ǜJ٦ic'Cw][aKi$
b6r[SdEs§RD5
RIß&D,5:Au={|lgH|cKq-*Q'/M
tg8rd0 ;Zi#9\~2J/i:[KaE%gqEG5{r3I?bj>e?l4 D=~Ŝ_,wK
`4Y,y6W?"eiZ~fD^xKDѡZA]ퟜN7XAukdFvɭ+;A
E" 	xUYЍt	5*~5K-::OM3և_piS*ڸ?ޣmZL
 	{WVWfz
)p0Z͟[q[))?/TVG"@9NP_Oc?ț9`_sXyҮdѳMK!9'Sc-Z=p/A<u<QWGL$1kXP>7\wf|@̡H)=p,Fޗdݰ;8yZ}	OJsrxCjY&m=6ݭ}X ElkQ˷U!sV8h+AtXç%iԏ0F_mڮycT!Ҡi+l[Do-B80E;#\uB:p_W'nK<˲Ss.ǹ
` uG^DBwI	dqFϲ\6z|Ey8aqɻvIT>qDܕj*A`܏MrGPXXJx)zR`u4ۉpsㄪ|WRɹs:)1ᰢ U7҅0z}dy\m/!7t:|I5df
pLN=ߣe
m4'V@htC2R @V)ccZ17i4nŴO_kò&35*)gI|t*ɫ>[Th.+73Ӂoryl11h1qk
$T#տh~rx	G#.2w[n]W30&(#^@,]QdGbr/CY	dH`bWcy*Y)uU$.ڒ+C?4}-B~])b
qJ{>8鏪96fj
0ק5r^3>MeM>>gCfk9-ˁm y7īQU_+_c l4ʑך:?U5mwѕr^%XIڀK%+
""hn*<u9/9}5Λ<OڗvGh&	::r!ֿYky
Y{F"ED1mJI},8욐u-1H|.箆W<-+HU(o8/&תliZMxm*ou{[(;放Z$6RSyZ814z(#V$;K܀A82os}e5#S<(zvFh
7*丰ɵ
64,ӕ8?h
o#*>A``}u?WA6idC~O)a2+"5r
@Ǵ}+~ʙH#i%}n4 %iֿȐeV3	S[rH\}{rl}݀g"pDn6PBwr?]yF}3k	#C'pܐzj@1Жn*
SR}	N?ˏ-h$*y؜׻'0XA$xvkK=N=܍x:>;8)e85B\Dv"MujV
vЁ^z'*#.FPU?Ɉ{^dRI/&ơ1טoN}|hSw	~65B60_õDg-iJ&Uy&>."֤z
__v_y<[eZq
\P	 GTq&{kC %[@FThAw-/Eq\ZuppS@92A]4$"u,1'Ż?\@vDbBAlcq:k;W{^uQDxB2d
IN<rhЋuǎv>ZIdO}2TP㞹5hK(D٫
$)xuՂ%<~%mlס:(yMV #?y}*acH4zĨGJӐUQeɢYv|{oOYEwQ grP[b@[͐tAlt?v1\n՗k۩J"lc7Mv07pNBɀg)~l rK3A'7R$i6Nzt@m0'x?=XՑǞd` ngk^U`S7)\ D`[ܺ=X:(:&ұ1 yHsd>|Jrmn=s4T1;Jt'͟ruY	rafW,%me.[Q.BȀN)6@VxbdD7X> y+gаwpUHtn7*ʋrbm A
SN[gȺ/bEjMM-ޏk78ayݪN[y;ăp>Y
Y/!2GT#Z_2뉯:0>;l)¡w}Btzs4\å0!OF]8S9巐&}  b:BrdwθoU5"P{H2Cb[}I:r`e+:Y{~%dShm7`572&fH2y'l'
.n

.""7ԆG\hb5wT̒zUpAYB]XPg
r-'s'>(
[!N캁4|ϯ'Qbk9k{K]IXoCqUq(kTظ/N
y5	~p$𶢋 GfWɥMgVUk(ڏ	$maPNQE1E7dɽ=~<!hSMQaGЭn.tuir 5̭8_ 0pJȼ(E^L8YLw>bk_=m* s+uǵeRGZ"oUH[0#,6Ծu7n
|YC)*@
ptWXN@Fu6	GgHR-Wʺuq&zhb.(aϫaE%` hv=a7x+bܺ ^d17Gg,;YÝ~Ǻ2c@&M]M+39OtmWDn@pbP4ZJkiC;JhR;\}A^ F^q|m%:}^.bȁ4[|Vynt/GEOrl=Cc/nhmRZ2¥X?ͮ?*sm]3][=aHazrf('2xU	zZy8 ]'ws\_)	nUeWU#
C<Bsv Db쭬/JY8NNOAvK6E
$\A~UXJ^4G9V[eIGTQ' q.꺨CZ3hܮ(u~}ma%ě&W|̻FԴk8GI@!OG.;y*w{r$%@ǩU
鿧ʬ\rv')[M+rT)5&Wc>[l,[%xrviK}:NjO{\w
NG<YY$W1W8YG	kl,rROuf޲k!?:!oV%@V磙-||9r&فc6~r誉tm-٤
A.vZ#ŋJsV.\[w`⯭+>x<[H[EOz$E]ȜJ#%gLZu]
R.9Y)H-c/nq.
JA(,Q+γjn
U%(P;cI (rqYt5	)~wzz`YqqA7Ǡ|BA&_BDzUȀͬsˎu(>LwJGCfk$t&YjlkT|!ʻ}H*\!D6fsH;KxJg''iͨ&o`1[Uts=3&rL @2y9-Q v*5 \29Wa!
Gw<5:PͮQ!v%[ӥp^Z =AOPpu%rM6:?bSL
c[;ĉq'H
\?7]݈ :jiJWl0/8A㈰]rpTÕ8g>P9:WP#"NsJ|:czX*%\m\V/RXcRSUmmKw_ﵐI>N,5Zn^`)yd pU6`&]DVQϦV0	/Ժ%Uީk_ugWE?bτXUgAbl[-b}}tGMmYOL8aMuA!/P	F(Ρ\Kǋ*G 1+39)y$=⃮'hSy+[$䯗T\z«Nȯ]oF=,Чdwn Z>jz{ɀE#~}{6СDP:ZU]ŋl+Erzחbt[C['M8GvfĖ_L5Y~o~
/puΧ #[]WJDOshۡmǻϸӟlAI)#ECn͎[<w+%"0_wZcm={VhGxk{4U82|=9Chp?C潌*iG aWl-[BPakӶgOdIiK}a!s} ْ";\r¹:&Z04>}bި
3aQRTU-Qۀv b.Z}\Eb\"%ٳ6[WY  d9rs<I!ն#e:>8*?:ch< X:^] ?7}$?slϝvTmD3G{|{aŉNr"3Wǈϝܼ8ᬯSS]Vb!׏p0PmFsrEv[1
ZJN);p)'5-I-?BxΝ&%O9
>xb+MA3BD/׳%恗ߣi"+߯zUWI`dqqB{y;rv=z4B4~cRgP}mŢplW<}wQPFD~j 	9I~DXd+bEUT!xR8j9t|Me@^5R\@CRO _Uy5zj23 aA޸-M5րѫ8̀hk<:
T]M*kip1E:vlG,WtlyqZڰ*[뜔v.uHEW >)쪬v:]Ay(	1W{HVyG\8u2qBLW܅&qҦ	EJn
*X	":QkH8P`MĀސiqK
|-lE]*~ޏcPԤZ@?[s+>haKnQNB?럥W v!zx/؍"O癢
prH5
옚 c>ktE l|թ:Æ굋<cȾ#X.~Gەͱ[7Ry#3 $pNk4@MMT-T"ͣB ZWcln5x;7
=R2EzCd2:un(
?W`F@o[#P
;
294#5>;jX*s24)/9HmI;Vӂ$c?:(:.wV5`~"H/d(+j^toz_bgUdv]/!6&Bm^gOץR۔e7:?e*Qu{87ouz׃ CϦ)̍ވƁc`(rj"^zI\!5/pD;jVư$4飮vj^gO3r/(8͍ӣNAbk.	i
LվȚXv5H-)QS;hgٔr8ISPȄϷ<޽VŢPEa9D?p6E9ܠo7SGxTx,&г8.Pӏ鈕8@뵸vQVw!!v4I<@-_b)nOPVWR,*RqtHZdT]]sp
r
Q;#76Apm/9msv}vmGպgȀjU>絵J7[%=薑|0L"d&y v%Hq]uи+` ᤵ>8_ߥ{yۃ)fDy+4ZjT4j9
8)?]|%/>~d~(]R[̹d`Q2\ۆKal@"A+I,͑ڊ`9cܕo,65Z#P1],Pme&<n21ACudл0ܿk!0EƱ褕L8Ip1wPs6GrgOJoTUsd礷~Nww,Sx=x{"@ {b;"Z'KձO+'2B]8AΏQD	En ?F{udG^Tص!q_E+U@xi\G-\+fps\~3۫wJǽX#Xv򜅻*&Wc_|QkN3xx9o hP;Q:PF*S/qOM@7nŲ{n-Isv<
-yYm4ޞB`m]B'g&1|a( Eju~:2(?j}JŪFX o;	F9$jD~om~L,\:r
 x"\ͶOs
ײjUɸH;T0PO]'b&Nes[Q+art7Н\9ϛs7?֭F: QDfuTHuGkZ0Grс>Psj'ѝ'zzP>}[>Z3hP7w"n@s0ɉ9
/&o5.("juJj;}햳C37WCG/VΙCY7LXsԦa+xZg?.oשӈJ\<y첟=In
L[m+3vFWe}tp8N)/5C5"rK|@kPARږq'mxPM趕fӥ
ڼBKER'
L0Kq.Boqc?MC7 VΣi+ ]7m }c;qr8&>Ge0[;PD%ݺmCg%_X4}ʜekN]r=W<N`@ 3u4vm*XH6R(8U;4Ɂ\l?3,r)m|p~DG~e9$эMt=:d˃hɷY^QgWyI'{79*z7im*u"O)7Aͣv4 e{g|C=-EpPi˸G0C}PYń
 ,7
k^^vxFV>˚Yy~3/FlѵrIѿ$l6cn)B9Wr1وcOyњ"w 48ЏΒܡ<_mŻigs@l:SMWTt^礰vnao
ǅ;Ԑ 	֪nE{?:'6=ﭢs9y(dp>z+6C1Zfƈg9,/T/pڹUr^t"Pq"+k*s:gOǀkճ=s硧m
[SYJ,R@l%4Ō1g6ʮB
8gQ< Sk$Eo'#KmD}?߮]`Z.aM>(7)y 3`wlUxpɜm>Ǹm/XOO	65OXpL?_N=.9ӌ p*8tn%+ps>ݔMcJ!rΔ§gAkj;5_8WC7^η]
0Req빨Ф0
|s䬫Wr
H- ]c-|۲}:4,~懳4r4Q{- g=5nn$G͍a?֞INpzl5OR/VlY].^{u2z|a&"sMI@Dk Nd6;Y6rl5O?L4eBD .Q~:WSb)l[CĩE$#B
(/R}NZӝRbc
` 洁Pﶿ
=&Ν[uxK^F#Ke~w=ؐí糴#޿BUcY6jPYDø
m+Ir떃[6]~nӦVk:,h
7
R
1k*Z3-ZTj|hh]L#htFV/Ozso9d6[ >ƒC~>zo^Ͼ/<KN
GyN9~pTAr?68(LEL-*q6+ S/
]0)YZKR\ͯQۓ,f=T׏lqܢzjG~Y*`r1-
PzЬ3
yE-<iGx×~{B̤^jv /
j!,?8;BiD^95G.WOˏxhSr4my{9ÃܹU>'_mmK7Uxu4DvΥw=MO8ZHV"l0$6d/B2@Sv~R%^PHu޵b"Yp"(לq]4_rZ
$^srvyG6jqSE
^?GhM'J` ǒBţj]pZdўT4|*4S-޵DoܷW+AE#.,MlupM7<d4t=I򜓄oPxCN_p%K@+~l"D:9iOHm|1L꽠Ȅ*՝
[7Tن,$P+ܙ/M<K,[ȒD^Wfg\@ٻ_VP?fQgVL\o~%4\xE	T
4<pvL޾ܮi(ԸO#)@ǉl)<T6醤v@MSU=~n!, k"6=SJ3|S| 2D#]
@nԋ[>y[~3׵;\M'Yu*,mg'ئpk>M~ʻ>} 
2v=^x
<9\ERYZJs\..pʄOR-\%(v}Q!%águ8MoAqU.%2ANrXt+u-䎂fUO?Yo1\>9FNG3[S@l`ߏo<eNG~;Ml6U%CV
*ƚ.+?y̖T
瑗T4QY0?֡?b*Bum
6lӕZw
z<:<nvf5~mJwY|䲐9 @H";$:"Q'؂PJ**i<QW7ڿ1WԼ|#
o
+fd"bĉnP-BwxʴןXj_0q'C\$y]}ůbm8	|G_=8UNO?kvHxYewR3/K,'rx
=mVkIg.=:W`0wD?G#4N%?3-M̉ZpCEs~lFgPT}w)qw@UAwh4JڽVlqU":D|ro""7gӖuӆkI.Nݹ-H$u~oTH(_l[~ WͻjA<( |KGAk<e'^"|cD(˅j<<WDuQ<IGp0rY>7
L	dG$]ӫy:%Ҵg/oe$qtS%[|OGAA<ְܹf
g&䓛8Q+݌aҲ[9?ps<&¸ /> #^"ҙ7O mt o|~U7glJշiZ&O8HmC$j"@X7jJJfz6PT47	/#
vE㶆Wвn>#ZE$	<s}ne@}š{ONN)I,Q>HuIwK
Jua8\ɄRd:-=nfCu)֢E#J"Ǎ34k]}
WD-p(fU^>WU&;Fj1RCn,m"q@	ҐXuy/V>Qf
ZWN{޺YWZA
t
^:CSjiܭ)$<$׆I A<M	z/Xwd)Wo#
rWaR=zp7SBf$>Va	|pǩsvGA%¿c.97<"ÅgE5+zWCO']ϲ7Y:KJyv_4giW#с㥧Kk۩A\e<^ WsRY!8螙j:*87c:Ws|EUlG0g(#oqA]ZNiCvW_֎bQ2wOjIq5_FrҚT:G5Ϲ\HBw=>/sV/s[Ϫ$v;
{]<Sv]X(Dg!Y&M=sAZ>ގo)Ҽő'iɻaS3KC~R]8K0F?,nzZV
k5]_-\[6.YvcYsM$4$̬=1qec ' ɼVO0`^Kn?;~UM"IEt}WYἏwL[Qlґ9aW[=:='>GPEdpW]YrBjH:FԳh5X*/nk-MޭG.Yy4Թs_}PC^'S;4t^ۮN,
LGȞ	]!Nrr຺ոw[`
vm~?.Vzw.*tClJ\"Ghm[ HZ
f]DVəHXYIݚAuI	oIx#N=h8)Զ18릆l?0
r
aŨsA[ԙnuNG88x[L H}($¼}@,nP=w=ʄy)M\JuLft]}SeI]h6׵详Ao#x:,q$n$1ĸ%p<^uuf	 bQ]}ul<G}=USb^up'\ۣo /XQ6䉭cB	+
.1V4>XogvenuД^uj``n#IQkO%~yU?]ϣ/j#ZZGQP4iǷ/<* Ul/Fdw%4r5gev}|"QS,㧩^%NWrv-W'9kU3ZeiOYSop
A4?lm1OY\<1uE{cLY {R aM);ܿYNҚ^Z՚q5Me%Ô#@`:]gWtZ׏lV͢	<j;ٞ=xYt<%b^ś+bX2M=M`9%t&9"⬁MlM1XYvȣ:k/ڼ7U
|J>?=ȅݏfXok|"}#g:Q SiR ($ݽoVv2O|5}jQZDXҎ;3G%!j|Z$ۇ>B-aTғYG'"+d`CឆqM WCՔBRKYϠlq*$c6N=zuP5vO߹ҿ!v?7u.g*/;-LԼ5-j<wIڸ_Cqыx<7g+Y'qSc)lH&,D	ǕKu(q-?@~iKEΥ֪. w9O	(m?ɶo: ֤z/ݗcP G,5YɒۢKN}45RPgiw9ßT}uMU$
8Kr&}΁p}Ti q $/! Gx0>¹)э<Y/NR̳/xa(RMW7BjՈeT!q*(+	qXRźf0AD͎(^|WNBuO:nkIȄdfJ}nн!F
щӨ|Q)։յE喞hא-C)w/`>"09tpcj
PLB+=d@N#&K
p@0}Cl@txME[Cne#?|,Voٶ尕4؆p9]|cdwQhG~|@ZP)oLk[^eϭyj
48G^n3
{J˅ЧрGەKGxB2.p_ϭL˾Q3>$12w?ifkR)[@ޓOK?0b!.خu+C`UG$LWToY)ht.(yj rL*plA7vɌ	~\,B*6%\s~9w"@w#%,KvڢMe3)I[
{<}47Y՟a/vX~<V*qC 皧¢n[1r5'!>gYE@V哎ӚF=YpfCcSFIys<V#ϓxNracIN$^_Bn+F{6qzc]jȷ+ qvGƠ?9hq+Cj򞲥X	Dk V
锣?>陓|<4sġmiƝtKKp`낃s ].4x(YN2+BPo!VUx<lX'N6ޏΕ>-=JRBk8t-6d°oi5`,|G:*Id{˙q+ܡ<4䦓Epax91tTu)0a
N->=I.qV3-_3lE uqPDbX6+/f|slO j㷽B"mBz<|iz<515!Q!"G]5̱a6}=>};̻D%ԑr)]4x2,]H\G~(df:G Vs/R{lql-Ho A!\fڲC5 )1Aιݺ9ʣ%3|_ǲ~u^Q
*FoZdQR%뒥8[|R̉06_ pV?bɒor6&MM`8%^fk|1nfuz@	/L.ia/Vz/rJc)Ez;+Ij]Ӫհ.ז'vj>V3G> 9{9!e}yjsp L|ܚ@:ӎz%+$%53
,-p~yg1Q:um-AÚ@^ӹjf[oXSy*Ěnɇg2C}ܳgl-U3fs{rTK'WiT(/q _O'w}+y(Pf+%,!И  ,8.4u$Hspc]^1t=}Vi>po֢a}㺫 V7Re)4g+C	Vz1|λk)S$L=qu
pQ1raZ=vy;.Up mfxO~w% DkivSyK;Gj1Ed7O/t4'yNm+Ll$vʄ7XHC|=Vڒn>;y>h9bt^"пijRED<a?.fhkI2\'zrIeǷci>
)q1BY1*녪ZhRxt?ǹXya!ajߴtf>[d1^]1?U󏤻thER#9zaYp§:<ʹr<ГMTӵ[!AAU<E.,`+hCs
LSE-m<r<$:!2Ѫ?F<5>:34w3[_S	Fn.Nh5W/0SRZ
.lo/V '?/}KEy&!֊؅\ɅqӼN$W7pB>GBr4 zrOŹ< ڦ(n;Aψv|8$á+XvR-E5!6:H<LF!vP2]^:N@.rt,ڧG5Wvݟ߫MGӒHтnlM	rіvYy16*/WCk^c=Q];9\R}?.W1M<&9lXhY~ͻ뿄m7R.'x+4O$:(R7G&Cv	|-{zN {޼ABW5ip7|Z4s4Ԑ{q_=@v@E *˧rW(q_
Qg^a@>ǯ2AH']ѡT5ڴ GXIݔquߙ$tC{MKu+po:9jy@HugV%B:91m1ǪK>
 qs8Sr=h0ACzrk! ?9~B:*;q=[ˑkY(|3DzMc.[E|ķcЊ}8Q [NasHf_#BZ#U0y)A6oj,[<
s9ژIrdaV}9?#}D(&ySܢʳI<5?F,Kr6@8
gߠO's-;/,XӏCkK!R^",o$+J֡V O	jٮdْ>ځ3e+6!_@H!x8vx6ɹzIG0BG%]˻Qm%W_`|=%<-: _K
'N;g]X@eN$X5wG|xO܄v>uͻ2wCDJq{ak+ƗΫ;KJ;
SxkkazEق/U1z_Inl-287p5*ܓ4;-׎KS*8BV-]*Q 'juRbU6;naO35mXowW	=6[(OFvFfi 4ov,#T{p 9xo{+5M"$nXn:{O"Ƨ&]'	\R3^<[Í
eS#J6)	FU \KUl-~z[JI펇8' n-x&=i0>"-Z
+9:	xYo_;Lz8KPMeTW"58[%adS;`g*scr~U
:w^
1$Ζb:(@r\Ko9Z Wzȩ1˻ߪv!b
]y{[G}G[p3sVK".&~t*K6UC<?]6T)ڳCs^(e)F0y&zW	u/N_N{e+K0?&陼|(\.v$m}TÓUYktF,*BU
5f{x(nĎHlݶU&VY*[f )v4gS
vn7NK8&,y;w57cB!%{*^~u惈~-$rf~gIrKg%NG5\
:
#s<^wY>	J̵,/+N'<,tZթ;ըڦtZ'~I`.:NäSg@壉\-UEbx*f5V1#:7It5?Hj3ɹo:Ƒص㪢ZS=F_."щN.3PǮBS}ӝrˣ^!:
&A!'idcw	.VKiځ2U8J*k߃ѿŎ9+hS`Zږ	ھ"C%x}-ALu] E.w]  `p*r҈	>QVZ?4?<g` `<U3̜Åny>aw8N;a4`8mhzD [9K5ӏ欎nZ*pzh
){]glZFW uÏf T':<^G}WbgwbI~rzZ.Q&lo&ztw
v#tT9^VGVmVrhw=\?SG;;&8	M#J.H
9;H '+
aMye;u<lUa7mUz񭭕ECU_QN|쓢uf]?	|[nihzsR
$xt4y)?WW%TTO6qL%&+' CDP]'{	
_IwC%4gKMjW&UN~x+a2H*@HRN=kO'=.o利p,	NUZ+Dn-msRi7MʪLW͢nIQR!<jgy6U@,~}N]gf: ,Zr 
vta9C*^#R
eӜ]U)Xz+8
 v%bQŅV_eE.y/k*B'IX-hץ.WBqG:O+U}հ/ ؔ- ϼn̳sS۶087
tOË|`Q[f׀ƶHe~Dιrc鈻mMU8jB(TvVBaٖ5xr.mZ\:FvhoO
2ҥ}aX0sSՁVoQ!~hᵗuVJl8Oϫx@lNݢ:jb'Q5szZQ+ xsp:uSekNhTUgt;
WPHG@{Uw<2=Ʌ~ؓ+0|
6ʪIbU-C
R#dN8+&zxI=K۟h
xJGc;s~V'z*}8_وXl|4Ntekf;{J8	¤IV*"9vͤn
4"ztΟlUKOPHoK
e8\
zX8q6՟gB𗻳7w4	}BrǔTˏ"	g0__XrJwP+λd#G"l<\f&f=d~i]~MrKgTux)IVzk_:Jz##嗳]O3벲q0SF ^놖]DBo(VTg9oO `AUUj^B|_a~"5|#)I23.1
VEX\V	ԫ(Sד)Ku'0L3@2(zjOBG{.C-؃e	=G.\6`U&!^4m^>G[^OovԎW蘁"8ϑ▭@sJ2/; Ӯ]U^8X-5eH@=V&.ԩ7e9}w5=ejǱtm:kNv	8 B7>ɩW!{p鸹J=}K~ Kl7rKjod^_>J'$SQnPӟCq\LzkeLQh=+\4;8WN5X/Al!\=v!>: xb%.P/ILY \<9l[~DǒR	>^9y)鵽F|soU&BaÏ乂VO/>ZDyE+myd7/[M֪N	O7@ GRx)g?Moj1YqjD3XW4`}Q'wmkְL0;M?̯ c-oh;p4v+r_4&CJ&Qʔ->V}**=yv-s>m,DZj,r*+@EBDfjAYUR)BoBV
q%%i( 3v '$0~{6d{M9B4S Hnmj -9?unj0ٶ>}׮)ÐMB^vMCnOY3s!5¦C鮩eŗ5 m=/y!j*q_-W2Y*)nH/x^`#gǃHÿTQsZsQb
*?bIhv?k;ɎkeS1cj!ZաB7Sq	3}@+dAx5ƞqƬKɡq}#P̥>0rHxlN ۵@dH?tU	ZqgW %+)oc5j1m_ۮC9}6x 7Zx+#S""obq
%Yܮ/zGٚ-^N.bDר\t?{~L{sqHCvXoՃ2ҕ;fS_[wN
X]o;
F7iD cEYa8Ym#G9}։-zA4FP*@>

EF=es 2EQ}8u&ƹOgܲ39i_Bpu_KH$}4cZ
h>Xbi~X
:?OR]x&9*ڔ,sDZ<&,:7n5ҪG!/ktp
94/H+{7w3&s%H}6$<.f,,y\VE4o6@c6m
Ux/Σ	=
x?D8\o~dodt~0d|yu$}&Xk~]GTWt+wEc'>L?Ec-'xZg)׾8̦q]AD|(QsJ,-9މWOK5ܨ(~4t?5R;<݇ב7Ij';~)O! pn.ZI"qI=8vYX|
u?p^.JqfhޥKv/J"6HEb<Z`6u>V;B8!&CNj=rQbn_PV,jݧ5_8.OH׎
$&Ώ+
`#h̉w2T,q38wm۪zVE6@㖲}zYiq)xm $f8Jn_- v-yYN(ft[FSݝh5۪%{Z`qn]kf8
cP$è*J!Rg'˥GU@C|npoya6r @PqTi$G':|`H^C_.P|rF[Աh5{v^~-\P!ykt[bW>2cȻKk0GUD"uw]j^?}4@'Og%ٮJqA<,>
M	^(/o )! ԧ>J|F񾒬*<F(dBTB>5Cc=jNpTZhC򕞟3XVuq"pZ]uqw&kC5CqrDގWXP7es9Ʈt<^
`p7X;fIgCw:Ԛc˱|۱Z+׶V%yc:3${HOMR՗Kҭq&lNRe>eQ\vniyqhpZ֓ST UޠU?NfT/hE<H*%<(ͫӧ?nlJ
pAMO<|h/4hAHz%=|n/eG7קiȝSP xpS-|SxI:z*Q8eKcA0]0;vuBޕ fOJ*Z	D+Z~%; 4Z5Dg֬wEY/ۧLʰKuŽW:}C%.u$u)25ZOcΕ"@6/3 gkU["\<Eq
Z&Ulx`wo.*li. $('~h3YX!Tjjś[`iN*7QW4wYv{͗7g[ny
DE(C*4q"XpAљs6	ƑI̍r8j6?xHv`zt!4ҥJ`Tبzֱ).g"k
њsC7G*}{;bY,2]Փ]ꪩ14	Jtp>vdـT|M$'G~Uk?c+@ ՞el:|?{_pu9-S-EëW?=%g4b0!M|WɈ~o\PN1\xpȒ4_-Uq>
aީ\(}5LH*ΣݑHê54n;R_*n?˭*QlnI:/d1g-+j}R~g`eεԤ2/tPeN"x n˒A
}lQWfWN9@X6Z޶]%;%UcU?KD~XsYk57p>fFMwǁ0Չ%exa"$lmg]'sx.K|݁yDzzW[ɑKMYȬpTUIo>Ht*Wi=0JƤƮFڞ=^&'m/[:{V	V52T2Mp\UuJl9dk~pZfY%80
]iU]lKi&6ۊG	ϊ,TV>GuڗAS^AoW/	>:״ט	#P9tY b~4{|{99+WW}c9F[6KtOHsj"]rNdAؠf
ozy
LiwY5Ƒ[EU&* 	pSnD1[\8W1Yx7%Όz8V![o՗@g_O]^:W)O$(&޺>Y
%Hiu#?^ϒ|=^J}ՆLi}qqj)mנĊ&[რqȫVv&rx:ć[Njl+
ǵP%4ܷmGCj\} }uGq-B?d|żeg]J P!|A+kfH8G"S-.iEз&u`m;u2̪%lapKF;K$gO؜|T?up'xv))YGVSϯgT?tET=5:FQm(ݕ>g^[zUr\ Jۋ[Hs(hBbmVlPQ>Bpsى7<pփ%p_L
UgݜU ;|ŅOxՃmA(:["LF7L1	ΜVwD{*bLU?xI\MfJwfC<jNMP7;J#a'>W!v~]EaM\]tt&Cv_XubY̌E>}w;? ,<Kp[Lb/I[U2^T
hӂ6#UkptOѬ|ؖeП#8S$)aë&0P`/6;4NjЬiO
AA ۘq+ypu9''
 ke"4QW!s{4a$7}/bWw	DWJQ5NrL9hkt;-W(&GN8qq`^Ѻe{*ki~[vb<PT ?!B\x`S?_39%"$uk߾M_@xl-F.G4 -Х+,>gO	
?[σ-A_Gzg;V|ڲ ;)j; K^7_KWT`qoA15);-f|Ec$(RbUn+x*Of/5E`j򳳖d
e߶ي0r#s{¥7Vh%N^Ά
=mWTa<A۹9^.z|!y74II:x}sѷN<%:	__jRg?nFŒ޳eGaGA-UIWn
3%Jz>qm7STRb|~0--q;0S§^.0I7zIZipW{
iAliwfo3ّM?t[S敲At>0t=0:Jw
DqA(-y]"ҏ}6X`,X
Ǥ^jH5+gey6JϪzlysw)9i\2
;@ Ai  ݲGޤ_-=oǬ̭ᘊ)*&ǟzَ.9SN~ꠝ%Js78/ 'd2<ɫ
Ă@isug7B');mi>'?a;/'Rq[z%X&
EK,P'w_maE, )o|oԧ\l%dI;ɛ#`U=r^S)"W6I.3w"8u{ܞ\	=ޜ;EqւgXQK7rwOڤ]$'˟ndy[s\Z3v޶?g%9AN7{oPps#sw)
$t__e)<XV3q* 0
<۪,rMQwZ36nEҫ"+Cl%]τH!DC!R6;$IDH>\XTϧEAW*{+?+76}$؟5Ǧ͆η@2NP\}yH5/x_w쵬U(k&9:[]'mmVVRBrzWoNhxs=>ЭXJjP,:X=6fy.1L&]ʬj~޼
?Yi	gҼ֥!FIM\FNI^l.<r&yr#Ÿ.>g	I)5.r`T偳wW^GFj`\k.}>l]*Zu`4͵[UّI3fW1[9Tro!5nwr]5gC"}i~/I58V:^XIg\/pV:-ŭvn{ tH}:->uίl-oNmѻUP#f`m '!Vܫ\jUc)Dr*=Y\RhbzG1+|@ܣr2Ê%Wds5|P D;IS55~(P4
\ ԯ?p>םktZO:mk=>x0QrUV%=idKf"[9.^WHVW%"}DlPO
7+Xp5PVPjU;N]Um7 V62Tzl7[dltPES۩ۯgAp:3mr
L73|#~_+%
H_Eb,UT݀;Cv,q<_ihuvȊkk/=q O' sx
c_x&Bn+jp AwDRd唍]-n_FBfz50xk	L֥e/
_k
4`҂Aw-f=53dP89A,Ĵ\m h]t~r4^ZpZ@CB%zO
ʒRZhZ,jtWg706SL9`pl8H˚(`K9rzǊ~p\ZeLr\[~x/\[ЧG%=mV!h=NBXX4Lp<>;w,4VgJ2o{[Pp;	Bqi#UmUT|K}H.=,|}xs
p~x&}GRJ~C)ْWO"oϱAhSi	OtU'n"Crk|RyX!Y4)l)Mrǻ8e}iLPpZy"<hh|Āq[cxS)5f!7'ĦR]w^}1O-yVϫ!	ee3K7k-,h̄K=jn I}[86`)T!N|3(XUqz
J;pI,QչeX wDls9sEz`Q\y {yDfJWQ37l:lk4"9nU7ݜ~]v\|Z;s'tRa
4iU)G8do0^W~wYNʸ3= 3^J]
֩LeCo'!٭B{ݕ}{"A.x~4^s@eVo	~il[p
TP! NmQTzKST8TgDZ MPMpﾄL~y,]<p&:#ˁ6YWe
ųr mE#bj0^8аԳܛ<(38SA;wW
U#֡E!B )ŷ%FSŏca l@ґv&j+wPB%bQu#eNڬq609@(9JS8,оDvbus;nGkv{u@Vߖ
M&&qY{[j*3f
?Zƨ	-D7	'ԩ\VF(v7ƧКcO@ć}A_st ԯ#hmmmyQ20o:2Mi;,M I*LRGT^kkI<AnP+\popk]FQ`w {ͥjQ%@ۥ⟘jBvpAkm"HW}^ #mvJ=Ų	
~Wʌ4.w:7^k9Bk_޷ef^Nv3e9<^5UT̘
i-.֥%@iA	 )ޓuCf
 rF>!V5ћ#,yn
NԎ`IW [m x
*8p5*
-y_.#kǭ3׏WjR'GiCGh
1ktH7H3s,	_vc
umV
)Es٠q/Eڱ}}~i=:(D,
z=d˃`)
@ېP#1pTHru"^ :<[/N~1Rahb%lh t:\ߋ0NeήpKGraJs8իsU!$ܓ~:d]vۣ]
 b~BPA	*7=T 7FPZ:TX3٥1@pVBdi*J֚Ap<D-ܲ2eM
^RUx\JCF7.x{\BӱĭYϬ(H_!uPgrllXtqD$yXtFi|!ngT$d2\i´WWXB]cXUڇHǻWF՚~~~'л<;ޮ}C{I8V-G*'[r3ߊpNRiB9{Ү52 u,;L|pw*lW~y惽i9oQR="kכBnbh ['6WSRG+Eh5f΀s_C˭&tWdL	ЬefO=h|svCT9u'mJng͢@?<v%1n@}`Jw E=Od҆ E+`ٯjoɱงS~3Ɂ&JMY;}>KϫHfZܡOZ}^ej/?}.UXq縗|&7$YCq7I԰O
/fMsmٓyqk;GV'rs9AEiagtm3ZlBo
n~cvA`ܖ sUݳhpm]J!݀+T
[[ծ]e/@FTgFd<U-E+@y@3rV~3n{ʧF}brj jAx{qyzz>trt5lzOgRH5u-r i/ap_Mhk#y?o7sIRyB_`ﱟ+F$ۼs=d )廮3|B[c	Z,eTgB֦!tK^Q|%;l
	nvW6wW7C<d;DT5?(I@::EDJ+;t!!qt"&O%:j?оi۵&S9'\TgXp`{<8WN+:9)\3OAx$ana]r9i+ocje-mw}m^T!os} AkR`
%Y.yHrm?(0YQXtl}$vޭh c~	9D3X091S'hԢλSh<qlC#7Wl29
P]-`U¹_ߘl!%wq7o
}7lI32üIccdT+rU9Oq$>A!)5K [}Ӧ43_Su;ɜipӮti@A<\-I xڴZL":Yu30 x@=:\¶/4x}jC-=B"
5%rxfDWA4ҘNHagV*\jv|hy`fzvw[#:JT 	ty  "]]UHdG]>Խ.MPff*HksJwS!oa֨<\/=BEZ;"O,S}i6[}|n|\*,
\OT_ͦg2|(kQ#rlYE6yZ,*uۓF洖Y>qQ'0s%{8OI
è,gs"Q !ٔݲn3iPXدduIښЀRS(-xF-@ya,'+͝?+uw9^+{CrZF(7x]͉odcUZYx6㔚:|~U`*lWyz%/:Q'Ru*}$U&ltZK$E@r' oTMAo="+Ӹ
rL烸Ȳr<B Yn:u܇!{3mu-S0@5abOi-n_ŒwI'f``x	QXo۫a~lS#]?+wO7@F8(EPZZhxCu\M;/޼#$(ICN҆IC+$
7*[^Ļʯ֩T
-}K7ZL! 0d㜂."9q3={.n[|9Qt8ڼŌ_!뷊oCHN
v*Bq}EG
)7uim^
tW"vyam!#pV~Ywwqhҥr+8		\^UN^tmD-qg*?6Bє{mu{Ur8^HQYg/U1mC5yu%\
}2\J d۱C Eltf ,ÿG؝7O[׭FB;l W9hK79>f߯nŠQݨD@83©i"Zò^sC^lqٿ((W*\qwQpYzf#U8tD 'X@ӭP>Ȃ/^=2۹wq-4"Dr@+s>a1gy+
+O?`{|jh#$p Gf:z3%okVoIo"1JN͌

x醳;?~įm|ubWeS?*|%u '磇(+N	Jӡ`ES$XhRF .Gkm+j<b'gOIYӾCշتZ.N*:BtIS
w
itȺ"./VȄ~"=VFM!<SD2ߟ	ZF6hl朶Y@s̀1N}f~{i*/<"*/PgT
u5CZ'sbC?;xF i@n뫔\tZnݠOgicѣݺY]jnW &H3&#pp*kUYZ:XtEKZ!Wխ@MUY:H%W򏤰VY]T=~ {F_
,*ݸJ7^}VT]cl/EӔS'`1UmcM̫#)Z{m.!l헄$%3.gOz|2'[""'7&uϡxZzrt]
WqPȡʫV}mUl5_MYJ EtIQSzݎC ʛӪnޝ' ֥ Fb๐	ԧy7!ď.#
>dBS\d9Aּr^,)La[:Iڻ/ka4 gˡ>n/rxPQ}:v١IjoC*Ə=Ӄ$xT"4񱹕kSl##{{%e6_r<JB$^
Q>gHP,?7]r{ǎIM]V==?RVu}!b"]	ˍb#gRcgH<]
u><!D}
Pc6NktgQxLu ]eᒞB[rgU{=j+G
iW,#3|sCQB;
 w.?0
}*
 ]Bș15ՎЭ+:NgE,ܖdQIoj瘏MC\[V! {Ze|wj5E$(wlMӍ ], dz +}bGnjj?CRAr&^猔Rd^4 @zKw0v:͋R]!z-cZudKu0婗23te!xÁ7䥷F=fUm6F8峂gتndX
aj;wSON21VRs
:{tOuv0$KqydBh]bWַy4k8|@JVoxR ?+<K%Kv8#*pܕy:ru|5w0+tOV,N靎L,/JH![t[Se5VݗܗsDU eȖg׏݅I;!xR!aQpI@s6$FTXA:o Ǣgr^N4{k/[H6eS
kYF#vm>#fԟ5^~bș שr{<ȃ
SP#S%Uans<،"rS.4H<S6ޞ[~p*C.Qޢ?k|uSxǼp	gqd
ԣvq矡lI;KO^sQ%CP4GV_`VLL{BR
ߔ	>AypIoKfmj
Vp?*}Vv86I j!}ǚ;7y %/OiҦm<]hHP]YT X9ӹ )}:q۹3-o`^ZtG\IYɛ_^7[Mr+æV`l7} rF<&2Ti;
 xDx5x<Qj, 	qп>v
);bO|谠>x]+
^C,GKIxҟW_j%ةGz2wq[^-*boC8
Y'C[[)K峹?Mm/@D礍K6r,QOBj8çN
x2="a)
^ַ6ӒwHM._
Zⶼg'Lm 60,IAC,h(or&9upHߟH\'wHZrNF[aٹg: !tA<B*]綿^G
_صhQՓ]4 ZYEsOna][YX`d8j^DJ"|fP%6}
p,Vcnů󉟿IY&jڠ&Qsbļb2Ŗ*@t,{ $'SG`W:$FPA){{#s-o6Yɳmu%<!5"hF\S ђ+;Wق !C5W:; OSJ|\k9ݺ*TPL@A7囼޴Z-b(	V,>#^QΑ	2(تyo qOȃu* D=^][:웾vc~)g: Zث Nܘ`.-nNhVnJw~<ux3Yi	9ͥsk5@n	"鷏¥k7QbɔRqrȢXS .6ۙc,i.Y0)_WA+2m\345Jܳ*No\KK@+[6|3	nN"؈> OSer N	zK4=NnNe汬3}?5/'y.S+x/.g RU#rL-xݰaTC:T&]hǀHz#{y5fx˫7CVMj4?poŢt[rj#!ڶ[%9q׾_ 875e8ܝ	x'v=3)je[?nRȷ
.G6O
ʇCx{[+l	[}°f_]F0.1
w-D9/dJ_S`EWY=+&@!ұy6须N3GTn|)/]4]&$c.1ꋤ@09ծͯeMk*9f_2u3^JjG>
n>SlkHaJz4~wkI$^xQIٿ%$;XYoi@f%ANnpã6̯9mqE
g:nM1*0M?@8$`Js><uz^Z3@(VΫ>ZM
bڋ}D6Ui I4c'Pvv*z~WºƊC8`:@58M1:t/NKyX5s@(J $wC]}JðXOs	]T{;`3m4&6RSD+?Jt;$_ cMP>ήMDSv#~Pl<831`k?uk_ޮP	J0Smv*|}~0+ecy!Xٛ X:Jʈ-!vms1SS%ve. |`p>A椵d@ryVIzѲPB8oN)|}bj8~\OG@90!'xNE/=A߀W4
_I+&/ZB͵>Eˎ\9.!ĥ&ߴII螁w*'&ڸ]R*FUAuاܣ+&산=cT{lYZp	
WBShV
<*,-tеb-RO1.=G	'@=Z5h(A.蠵b᪯7)@V\_W\^	>Hjd!@LGsOȏmx<]2">$25h˺Tf;:䪄ӶE%{NiJ-ؤ ) CZBrovXuvW
q9v!NSP+%aK$hܸ+W`y\2QND"?w .6Ŀa>QS mNz <GTRvDIVh+νmJM¢h-lɞPt惈R5b!ȻʁZ.**H|gvQ}|xtʋkB.ۅ8\sy]F? =<IFkgZh<D}
.[Qt|Vk:ƨ_tHrFnLy.PVui]\AouK&Ch1M4	hv!*9GV;ޠ,OE92
YկYkuK7PEHݏfXA4Ёߞ8!;]4MNlpU
@0VLT>(ԏ4цƐ;^xŷoĕ{޴ ^3*1N%WV!9%7+'{SUb"`,K.B\QrrçCSt}e]ZS)Hf4	2[/ЅI]Rv"gρ<}b<K7%a:iBuz>u)W:H Pes
}(

7[<BfסxqLԇJp OLu5v1cǽZ6zܮ DxkvQY}#9=O㙂}g7/QnjZSE
MNAn\đ5V,(Uu}iz+H rK@<	¶Q$䘊+x
A/Ȏ3KF՝S}
eR[
V;܆o;.uR
6]lBݸWrtH˟q:FGA.\aWWktO}k~sY-Ϻ+W2)9@-L&rח0?㽜»c-Z=J V\] ^umM=ip;u>~BTkɷ+dEq:L&m5f`j/r=XvSuuwc7YY㐔 shݔۦAF
Xck. CB4?@:u
'e'Clnrd0H&C4@]ZS(
pOK`TU+׈ә$H+KB\	bG*gu^Uf;	ڠ5nW>.[ZR}rzI7!~:.opq"C}V$n=s}=>\jG"d$95y9nlZCp.;uw]In]0v^<SP^i !5r^g7$ Dn@pH3<y+U-CwYC,GK#5I-Nƨ*b*S7θxT ] oݥoAI]j!7d
^e|`Z[gG",u {trD_
c\|t#	A8Ts*w/-FdXpn7:Y΁I"_=-19U{VvEn%gG^o˥^]N:*}[r.fse2X0TN1]`woޤ7Ӿ0%:σ[꽔"Aab<Zs{O9oG5."*8h{ˡD2go~jhJ/Rk?j޸x<6?	C3K+Ӯf\aBLy	E/`+	WvJT_;2zu4m+bI^5cʝ<T"LhQ2{S4 Dqe>w{!
Zq{9Y"qe	ZA>7jʩ%nW/|ޔ3ZJ%S݌Ux_rM>q״99<Ճ+N{seEw<egGT:ѵѱ=bƙǑՕM
JnQ<Q( +x\0HH gx
}K$<=@5 k2s
j kk,CzQl.9d~"L5h3:N\|}!8O2C>6}ĸ;
M] A:Y/q
%?/ŤՉ*339{ѳNO.w?j	߽-0N1`hYbsߎrMU!&%RXKWX=͹{py4=/cD(]i1$>m쏃f:iwdH@84Tq`/jI^MV|```tO6_?pq'n	j5CEhzW2_d##i),p Ud	nRo8v鉕ր2o_wnƻǐ*VQJ+^ HwW@{ -Weu <y&Ƒ98`e6YڸqUVFjV-
ap	_0>cR\mwt"ؿ9gHjx?e_NR 阶Pu  |M կ̋TLQAJtJ*#s<+ q42벤wﺭShv\6g{9*$5t|bяdϽRRZ @q\7i^/HPWҿk[ylQr1MDݏ	k cV}wd3$Ify$EUS⚒!vtp%青rO9<D^.C.?z
<v xxo5|eE%ɭ<@^8ř^h^dH6E0Z'kkZ0,L9.f*/b_i i7$X>ױ;h߭ѥи̩(XhLeT8r1 P~A'Uʒ[
9t㇆J+F;
k3U71oS;b@X*_UG{\`ηOni(L}saH x5i&q/>_	aVykW*[9j#\畿].}xAAht*AOu}y4I?zLCj̳$#n)5~34TP&5QuRYzYЃ/M&fA5c5#0h:\_eg?v^&'uV 
gY6
_ٯ]U{jY7I2.+o#ȩRTqPX(խ&G 愈55Wl!N
TKߩ^h!dGۺrWm钐{>{6uOwXL<!7gۜ8$={U	p5r	Ӄ0ۊ-Vu[50;AdC%҉dЖ]OѕwU֙>JY	ܠ؜#z><F&w`xG1[i#ssVK&R)'HS2g>/4>=d2UCT}i	:@L^~p/8'VKh#:(1!n
.@`D|oB7?܇1 rp<k9 &[8s}*{ir,of
Y瞇%vjsӈ7Qd)U@W_ѯ.3EЏ+wp!Z㗝4wG5M545Ӽ^PzD5O[/xx^vˮsT
\[rOlk{J;)[^(?}P(hz˗F3WWwt
Co'Mr%l0:%nPvԐ:wSAyu
'/=1e'$3+n'oKRs6ۊ@5w~K+EqAj/u[U46du&)Dwo;G.؟X9
"?$}U޸x1jFHFnǖ=
N.uJ&[<Н遖囧Fdۑ4֜9 K]	u@LzëY
S[ҵz%AjiG1$Uo~h@IXii<LH~+~V;`\.\"RA9,"l\@tG5h'^Z9{Y{nWGx7|b"NdY3pbX?qɝ#@.\Skiv;N8
[bi2^<>~O24'^/xCksUp<Vc.G&vuQVϾTt-wI(ǽ1}3EkO&4)4||nKӡ99l֒O+9D|mk\}gzd~uf7aHgsӂEp
:8vDx5Nqݢܪn;FD
)'o)3mԿɃ_-sG9d>2CYv)MzgbH2E̊jWq}Ln*eya3LI҇Cjp@L+k6b;v;p%UyaqwlRЬ`Yq
gt7(&zu8Z?{JO2^ps,yu_8==A	'FN:C4a+ן߮<~՞29&m198>Zib&kY7TV~YXzE.pͫf;$hv?7QuB9jn8g7~!q,{a{`VV(.u@T		r>٦%禒źKט!zOҕȵ!-|l턞u ~sWMS;q6B:8O"-yn«&V4MvrpV~WdL
DEywUf"FvVP	~]S,U9)b1]Vw)OދG_
rnѽN]U:YX>nBKA <.=ڞ8G% :^8c:\vU7pTg;V)3'Q5u?ZYv9xGNNދ=k~9
&RnQ Tu@z\[<"i}8<{<V.%>^_/ܕmp$bBOO9sA$L#>}S(2
i&^0;hjS88ґ=׻nÛr*mIR;I˒Z[Y̠x譾
.r%Sov4,ggr
Vh
7ck>'*C1ƣER< p/ULHKMqAyؚJڎ8@JM◁2R-Іo=ϛgQ7 MJ]"~8 m*t ,$>;:Gmvb kBb\ڼT}nK&PhF.tT͠PxڍY^9tJTSz$[i4af_rO..+Cke<oa<2,pJjYPZ#O=WTI
|19a<i	^llq,kCl D@͡WDt9_B.nvuBĳ^ʅXjQѐ;
	UӡULs4t{\lCLtuhJEȨɞ.uO[.C"nŢ^+xDdċjCK\Vlr_?O,%$,ZWYEi-%vA=&׺ftEFDK1r1.*]ĚSilvP%;ڪ9壟V!E!I_ZnQ~XR@EhӣKX~=cz:OpDX-϶7p	޹(pLg0D{l=NuR[?K rp~-XQLպpR|gj6xuC/#^YSx;_UQgU	iq6τnH7DE|{9E5Uv往⥅l\l]rUrp-~zJg\WФ(sNWpm&VGsL
q&rSo0[X#[Rң$׾=趜e}lp#ܙRڶ*gs7Y7Яubt鄻t I?bjJtRlJJO'&YSnROGV]|bQֶ<mj)7t"Bt*Ρ4r17r#:6:<2W~;2hbCw7jTI>_
zLR&4<CG/	BN$Ԉ
IhnQSsc4jԒ]7YzROۮ=~#0W!	d.nژjY^EV#ѿ7q^KsN9?>H#nYjz*lhع	M\\yQ+*9PX\#Ͽ9XCPw:VVo~~VJɩlg7'$Z$έHY$L$v?2o]Z(?z9 rUfƽ ۰To}}]XvZ(?j~Ysph1IdQgpHİW{5*
'RQ'ʡ4wE!H\K0uҔsD)@@yuFgɝ	z
6[?1`{;4a`
x<ɼ)~N$M!˩V(yTh'$nW@&}j	~]uT/NLNTKr9Z7bAR<o2*g0]K -%,]{KZ'rj}M(p%09:S&̖	z
$.`}jE-@,u;S7E-uARVih#S.90é:F攨׷jM#<w}W@CxV罣U_UɨO	C41ESеpoJj
}0[
}N11ln-eSWMUL5:w:ZB~je.nGNlئܻޕ~'s'%
a ݫMBɢ 1і[
ǅ4jc 0Iw-i7\V휓4@Df&rjy"}"cp63s[T%ĎoQ,<{V9YkANZrR#N")O9CyJWN8nX:Ln.<ShI;s8lPUUU<rOߩ&>rnKgRtGxg(CImh:ncptn3lqO[T_-'m-Cra "ѝvc[
uS|rXy*99&'8j$(,P;~_= SNIw74*rI\bP.:09u ĨF6vskEy>w\OO=IoF>XgNLot{r2/3 a͙6ߴR"w֗_)!ē/WʒۏtF K,~9<l}Ie@&(dPI8;U82N~+pnt#{"F~$P]$=!ҹW-Kw\!PނіvZl}gUk܁+dOaK ^íE;b/+j7)
7PUvfխk7@$@gxie)87*Μ!S\d
ɕҴa?E;h]eο<AUCGQ'֏DՆYhmg $@}bwe.OeՑMX	Ph<-.C>qMx)T}Sܪyc*S$K$@`ǧ\|_]/ޠFis2o5EU XpIҬ+3SAd5/h:ë&=<>ۉ Ǘ-*G:ŵ{DIy[8A
G3f 0mA<G RKsl3$8(%_&>fa喖-C|
2\tS1.T
vNvZ+{9,/EҰKFQ64N4,fǑ(;C\ sa.^H@د6FOIZt9\7|b*TP\N[eYpyjvB4)J[V:-+*Z_d+/Gѩ
忆9(r0"	&c@ %	7Yc I@`^i%(T`̝ם	Q	:Of6^+5"}{ѸNnjR\SKʒx+;)1A9xpv^zT$IB})21KW8#BnؿDFdIcӹNNܡWjBηkI;~ZZZv'oޮ/푚Cz:ﭟӶ"DDu^sXB]z<C1☤Znz@^m.keW|mgش^qmЎ29^׺יݗIy
[n_6lq̺2=CU0&OYtnwvlvɁ -ݯT|[J>&=gwUIP9,nQހpST_5"?'
vw@[=U9{|-k}p \tVCTh:C[VUPۄXίcmkiew /eʦ9%'#ՓB~"uV@)<kk]62P%y~O/5)NU3#! t
D>A=zU%$pNerM餤ᝯ
/T1k@%ʓ_Y[[qbDB_yvޟto"۹(7}l:§P"t$-F1"ـPE]אytؾGohVD˵=rѥNqqVUwŽBRo/IR6EޠkBÕɹnW,<Iry:RGwlB]Jp4U\W璑[ë۩,N8fJ(B	j@LqșErߺbsv:rn/Qv,Oxp[r6+^fΦ8>@G$wl
ɕIaR2YP '٩ث`o	8s0;Uj
Oȝg"?T=R\ƨupU-`¢~?g8 ~ְ<.z4t4[VMr7%G|_[pdYO#ZKgWlתU|Q锯uFڈ
'ojt _r i#oa	úCʏ*7K ptr1_+Nki4o2u2vum\?\=[R3u>2oqЄ)J7o	SRKkgѻxINM)@8@tosN.#:E | ;|'8=!U1FZD`i]yǞZK|cQxH;< W:+;D0ͩk`&kPcU/G/?6>] Ldr
sO*t]fE=2[
hj!փ.MU't ATGV\MbzT!@ߎL*޼f+V ;NF/i
\[WOQ?sĠ}[U	fQCPrxdP֊ZE`:+ˉ-h ]88}F-}-w7i^YA)#}y^mնRAjp$wT-kj2>@M& g{ԯ>d{HuAh
5¡kS[uP:9N>ZZՂ(*4\j=sT5pQQaƍWMfs`MNrtgA	e8^
.-̧W>Dw~]y"&84H~bʼafq)!mOP'r,Lb:d¹~P@-oPE֍0e:/G$qIrupPx,eWEnQ|J0o:[yeG͙mAw)܆)'s]}!٩~/Hy0,{C@A3řŅ+*̍4in;KjG\s1d˅8#J[c3n.^S ]h'BnWB'Է޳B#|3of7ڹ.Ǳv@|NZ(WU4Isr굩H2A1b3$
Y~jߙ;pK8<5;Vݥ@{9NZnO͓iWj6cщN8K:H.n(MbuTS?603i:
R@7'dс'4%wt范 x_NmEf~sruTXukXEr;ϕr<<[ #W3]B~`R]
(~.?Np9jc!8&lǒO6_oJm`K+j!_e\vj D7yǄ{T&Ξ8\38E	Яo7C/Ϲgr	ńݕ\8;5jf?r(\=oQU.n-mt؄=qoY
w\ي7y
Wέ*TjM0]s5_5r't'.	}xO
 jisX_:i%\sd `'M'#sd C\I 늫djo!g4'q?'p\NXi	2d|:<I,m:Na G" S6Z0E-cOߒ|ǅ( 5QTT@Q	ǃA<ӯE^5dckMT_
e ~:yx>;4⚣ԝv-EkWA gR"P]O{/-vJ@u⦂Uc::;wFjD΋uPN<Vz^<km
<~DP+GvnvufGE2_4_7_Hg&	Zh'`f7o
*1:NV-9
$i[6
gգ5k:=2q~\,͑lk\<A˜^ ѮνO}ln֋U!u;hsͧ[9Qg'1/73C
q@+ģ`}|nns؍ 砀WO)oL7joifU԰l g}t#4r5ǩ0sN	&HkPҟ)ABs|owv]zyAl|OmwRK
vvd Ƀ+]eGY/%bm:k>1Mg#`ChC"Xi"ȧr|j!r @Z-`[{4If7g`:-p86/юufҌEI]wu"uHiMVT̷csq7G)[2G9s 3Cy-2ITug̖N8bUu'RYP$)I"	H,<0~[R˛^-dQJ<MM-b8߭lrr ׊\;C#GV}wQg^|I"oZ!uoss&LE>8\auତ̈́,bjSEZzWTqwުL5ey*[AeB!+ ڕDrǁyҶip|!req/52NfXYvߔQ0q cNreۨ<}k@wL(tGηJ!4wh?-b/W}&J!ÚQqREK]}IA!q;\ײr|x!,͔63U.-iȅ?@\F@,!etw/p_VQ\N@^U54v+1ø^^m~Sj`nHUߞb<%,u"Ҝ<%IC _
`@ P482>O[\NtTT+eҴ?ӗ"&rTn~LϿ&v7zL8nNs \ =qU`ܓSVvCg
I2!8k'GFGO H-4eirnV%)qu]?wbK/nRv=-^[TuۭE9 p#lb5>^.v_L)V隧*?P+˽ Ȧ\xb1s_MD~~|/(_zDKDS❓u4|]vvW
@u2IZUǈCݷegEp줿K*AU0/{m:~P16- T8jf=TY1T&*[TZH+q]g"NA"xUy[`Ua\EE}Vmjw(t÷Gl*b[.>쓵~f?EA7[C5qx;}k/ʹS@m95=s|U	 Wy[j eQF/ 3tCݯ"q99G#O2<xHN{E79o<4d*[/#`&\j925Rv]Sb-s}9=OwIQ*li!K6%zPrh ͰIZV@e` &[{ ,)Ӹ>߈D,%Ty$EFiW!w#hӶ[}ZMBPPRlE*)T&H዗
OCj(ZI~Ƈf~GϜ@R8vxsh6jg'T3
apu m=ù<
^"̛Y:-(5grUB"u;hA+3(7qK#n "~1*r 6299
k:9ƣ!I>u]+"ѵ\w^2qRE׉h#b]Q сWBzr<a{4sR)>bJ̓`Rk>t&DЌN됪C-}{Gȫҹ7ATt!N6RZaEנs=UbI-E
A/NAW貾	5>9r*@|]fl4)Dw=tD=ENd+y@ɠ(S/PTRnR
~Vx1+]م_􏍛U-Si)2*ꈖûKiH*,r*?UyisE&JQX%@ףp3dJp2Õ.b$u
MKP

yg%z>NpmNr8B?\&
<tHO',+ۏּ3boEoylCעNJ_\mR,f{/<U{<ǵ҆:/Ц+%\_Fg&F!p=oђ:G;Ax>&Yg
 \x[S:Sʯ9~B\ΠX	\l1S+v6UE5Vnj<NkUJl4&+s]GUHܟX؝c|4mR)ngV)\ɶ[E-?*Mȁ58<b`5߿]Y%D N[߯ӇyjaO	W̙0C˸Nָ$Xs&㫖kʊZid̍5`	e8MxAeX.bxSWh'ݍNAOC<㫹Rv	6cKʔ	_%՜!NUh	 M8%\̄o!<k rx{qv9mh{y&6{C:Zu4g]g`儠zn%89wX3阡C3A(-^_6`OmĢy?JThrTyYr卢Mm*1qDF_Awj^Y_pH3;ʧQvCh\jb)t)X?V#4;ؽ7G\OPxB31kv\]Q=W4Ũ*JQ7qZkN,ROPu_	CǛ&FՁ4a'{U?5Նȩ.9%
Fēu964~A"\D	uv!|	
;/'PqvUXAu7X7[[5[^5*g˓T#rdjP:[Aйdß?^y[`}`ɞh{oWO@['q5	SI,:;wy #][^Z1THbk8Yܖ둮ۊJғ]̉jk=]U1K2F5u_7gݶ^gsdU vN]6B6~5:ƴƧg+ =+>'cɚה;Qa (<`I}^y\ +Vzr~@^4'-5FE93UԴ&ҸNZRƣ	l,#^Df[&iӱWu& c><1Q4GqpC*Q4Hܚ[W6*~Q+`xWcZ<
Ljmg׭

9Hx FWSMMx)mX5P!~I78,<#߮t#pIgfA0Hh8>$OwxGbKo
ns@nsta8n2г$_IJ碷0ST*ZsnkBXvrAZPMu0FqsEg/Ţ

K1>-=*)wAn9h;i#_}=A	*	dKPJ쨳ˀ~b|.߼ҺW7n2
-xfbgMLp5ա'M&Bݲų+Zx8y95^KU`	p]Z By@іXOsxvSBиT4SjB":W=_2Ŵ}1ՖZqpEB8lT2oFT=SL6,~@VVގ29	.55mZPJ7\}tZg>й*
j;e^:!n]v
>:CRa?«y`F"]tJ
.Y6X:NJ 9W 8/!LMLE#KUq8Ӂw%`]; {i\5<äo&%T:HEܼP'-H!8rY5<S!"VM-v6-x|1ropkqq|ֳS)z0-/<OB"uГ+?|!7;P2@ܝuWeHzR#}.H,A(9tΞ%ñSR r]!`$V3ox~w=|"~Y}.\6R۱*T;"%^b` Ǻ)[RMG'olaz 
t,t0qJp8~F4=c!gv5G} )7h"	hC8$DZ0?Hϋ|$
0r GI]R^o`˼d[*c:m#P^AWOQ}|z:%y5EwR5OtG*-h\T,r/7HUMB*p&8>MͮxA+皸
WE/4u)5Qp{Pk6wx
Ȋ5T-t"=-c'^/>hcpK5'T8W?W)]`xI;J__?[f~H[SWE_M4uHoK[5(Mꯟz/>Jja |pSmshy}JD.Qs.'( ]eiS8e(qVRz5oeѕsq>DyWI6CY&|}mg!;x6NۭI½]1ֹGj"=SҶ8:ݭaSN(UuԸ#YyقnHS=.:Wq~m0[\_¥]$=ZtR|q%m<mdq7@}WOJ٩$#7? bd}iƉcDl[
]m>,ﱺRꚟ*0M%=l/Իj"o%yHs;Pܢ82ڟ.'tB6mp[=SypsL=").# \	"fjS k9fjb^v	.=۷ηCea>ų64SP[nX뿎Tݫc0AO--*qE؟O"bUwcw`'r3O 9#PNO9ca@jb`Sa"+
i387|dYl~DPǸoo!}X'ۯT)<:FnT@|DT~:n(PÑpD (8 [#=U϶\^`YkAwnQQ+q[} Sr24W.T(1 P)2c'(lw?X&yq}v@3\46l*o`|D*!KGGMRMs|.W_wwD8EO)vs&IAgEߝ iג$bPs(qyc[UzhL^wǵ١iP@jm}+<BW֧-%12,⬠e0hjI˼| (I&R))ō&	dGw_r! >5Dk6
9xHm}kJd8B^MZ#[xxw(jIm7Fld	/W#aщq$J ~hbN.@?S<Y7XUNl☛^~f2V!\%~~kּ$ ,t2+᰼<s%[!3XY "w|Ns(븤|PĶl@#Pg̎NS7ZUW*qzRa <	 QLR5Vb2/@C%J):lvm5#?4P Ǆ?	3y=+WͶK@߃óL @4-p:	 (fᮥ{t
~199B~TZ6@_3+3Ӂ=N{P
${(><<75+TW!u,}UGTɅk;p/e@rI iu._d!֠mhNج9qCc]ȱA)Y-n^fqP[
|޾  u8SVco0gEuGvSb,'㯬qyZovw
jΝ)bIfSWzdJFG~׫l1E{Ps-|$S +j8Ze.Ezݽy5 4U6.+?bR$r@4ϟl(Mq"ju%BxV!mN{nB#cpgv[KE|MJU1&X **׃PmN&W]G{Uݏ/׸3IWI2uc܋t>O[^Gunp=!r0?)#N,lC?\/ֽ6-,E6v;:#5q|a4-%[orା]NE)i8A)4_R+MB-fk\P}P|H^Vμ@N~ř
 Y_!KWNx.hwk(`ŲߞN닂aԫ p&t\
ۧgo+ul]V:@Kp^UI, Mhp	5',+P\lUOW8T6&_p V(0N*kg u_Q
}m1>j[jsPl.-vJ6!͗&9>^e	QƁU#7EK1b:
%޷ꐧ4|>I0aB̸KI=9'ݝ}q=0ʟ#]ux2 k/lՕIk:Vv
.\V퟊GcAS#8U
SkOo:=tq^@^8ǡuqYrTu݂
* yRRoJ)p\7w쀘Wh(SC'5C{NdJJVR/Y{"9JN@MOK #SvIna}+SZEۤ)%\}A޾X- Ī[~)99[9`Ƚ4[ N\h99uۿ T}WטgxۡEzr4򪷪dKvԃTzH4ۈM3-}vYzaiL^Neb,9n&4U.V&L\KrE$B<άYj˥fZBr$L-~+m@Ę\#-l` <y>n݄g}ޭ}WF״_k)aJõ+"p['G8  òa%/2&p|'nÑZx`_}tp~n?*b
]ߊ_QZ3_s5л<G~ޭǊd
#kPC)WI>VݺWN:RVӡR3	z5;-%ڌ~yGLۛ`DLvFRΡ5Nsez/?))oN lm4ۈՕ>T5Sef֝"y:Ҩ>j\	i-10B^ʧN\'ۃuzvIK7[ZԤ/?}1N
J
nȕ9&'K.0r_9jACweҀ6-g}68ۢ_˔q\wџaG<|鱹ȕ$hRjPȄysp߇yp~KnHN"Mz0Ajә=PՇ¡ٟ½U0\gIQziw=yb8e@hݤ_/9vT[#s1VL`D{Vߎi#Eg
!zo	dJRZhk'6#bؾ{'&xƪԋcjuϏVj\)TA[1p؄ wq<|Ⰳ#Ki3Z0D>RxՕ݃\#ͫܭ8(Cya{taT'O{RGC\UQșdlsɩ	_ޟTqw'OU!` 1wN˖oT&ܠ~qYsTc9F4&(WV1xԞ m4WX023(h^#7
	H0yM5նJő?#,
HYC7(C#u{f[[BN5i!T}\L*J%
2~p5I/ƃ!Փ	$WH~/C<gD{W%j1',Zepn(ۓAS)D?[m@@8 VϠǟ$ȁlhk6jIA$Uՠ|7A75cVTwA!!*
IZkd^% 0.=Uժ]d4%ҫC7omfw'FiQf3|914☎,>[zM>@&PI֣<&$stk&؊tq
I,+"k:ؗm2Y`5#mj*%Vg>/m?jl܎V冶
&	-0^"f:^[8V9XE	GXkNV~<TDp!cWC
A9w4ia8ʷ}j%X@InXUt_Aldֶ֎\LYѰYl>n5?dNO`Sj9jQ1'V|vȇnjQ: Vжts>#D`9L|dsQ}T-X
ۣb2ÊQ|#2-HG+*vI:_Y_΋&@rZn.lB'Htn-71g$xL]#4WXRHgBn-*_>U^h>%{CZF{pGO}ڜP;]n: طU]*v!&*2Yi<7v4ʪrifiZQ DZAtgD)eGyW#FC8Ʉj=0ͣM^8b)9}M5@*
*
ep3uh|فCPGkvc*AIo2R?Goė^XnʓcuLn(qSr{2>gY\γ{l=[>hUjaI؋!ۣ]Vp-		j4{zcy{NOLA RЖ|)]7IL2 T\T8L [j,~:KMO<(U_G8й]\9lfӤ*ĕ}DRS:'kx]1L^Vs^9'8OY1ޡ](Q'.%*?xI u	
ப| 6*CZ]d?[
r/\lb%[sK>ׯ]]yo]J4wi]-/tw|o@!R95K9}䡻ӫܝBueUzr`
;bq4cU&ujC>.'8Ek6lmX.>эC΁KJB
17928!w4me.0|9mXwΔO,˺Qzz=A,K,}md
v2:BׁMf=[>O
8=|Z%)/'pQMDG9ۡxp :;i8=vIy^:
l~*IbGqbqH̩֠Xy-w \3Xqpqw K5DУ:i*>RBr\W
	V!	[
%A!'nWZ<
)Li&3?tJ_K)_o9Z`,|TFo[uLiaY	۳8@I#&{*ںveT>veBe؁6t;:ԡANa&
n0B(ÑFϢd4>>iТUK&z\OMMl%5ś&:aiWJlqF<yi	kS-(Zē;/71o՛beNaO^3.E1y9:M8?n[`L'sq0b/gi1l,Ss3h.c%ЍcCNdY֫P?
ve̓a'!l)h4Y##kSu#xl*h/FHܫh(W	@8 nnSd^>x	T#f^4_tc7{e)DTh_|ƹsUբڭܕGbJjsć#ebxT3i:|4xL?G5*XGi8Cn$pDWz
)oբo5醼gz5.;rmr/[J+0 P-	~q|&"}[N@/وR V=U+Hnsl6  ɀL~)D^#Zr0JjuBOs8IޅW+pNbǇ9ڧIz:e~q

Jr^H8ܱ`"k |kF;0oPR?-;W.C0SxݪOb |rJ[&IiO]mo}kၱon{ׇ`tNY*~uzA&vY2ZNEtm7{?nAt?s(O 2`6WDjzUx$h&
TVkcWl\?#rvlYR@aJף,2=: 7
N5o&g`v}Yuox¾
S6 e54p7NF	`la&dpa<	UUܤ=>k:iJ՟Fsd7P1d%+@q8P &DK}ߊg:@cΔ8W59\WC`dO?fs{5ynrk!rmw_n
<Tq(G:#6~\PFVr~L$TȇAH\VMm9-
~j<g_,gz?N#8ztY\fw爹,@G9 ڥhN]^h~/%n˶%~sJ(kݹV'])A>DS<f\fqX	0-NGP ϳyY2=^3ʙtOm,@=GLS%HňE2<=qw:&ۏ~P)=CRwדC>@7\INfUt{p[&-9tP.::DrTPs4@&]{3$ߖD7OݝQܝ%\`6 ofH	J[.¥O$r0ܵ	}i
h%#t%TT$;.v l UcL
BpeEIuo8U@ILйd<?aůsri'
c%_.HuEWc՝NiQxhc܉i{/UT+PgԪgZ+'H@W1xxMCWiN7rjAc=IS&!⠛P-ckT#bd0ǰEXQtahx!E*
m"Y8?NH}:y4>ZЖ3T3=qhlLcMJLكL
)$(9 }*َ=%k6<:, Y?l^;%8/H5c>Ӑ3=CDR1GN7QU)qǅQbzl﫱.TTx6At.VُJG.+^9isCVܚ2
>+Vd-vm/zmm>ߖ^.30.@4I>; [Rnj.ΫdֆeZ5V}eL#ceS UV:Ʌfb,MKAJa,ʈr9-~ -8 ҥ~kU378D-U+M63lNg!Ӑ	A.h94
`$t厧kޢp8f?|5D*
 k]?8ȡXh$>{Ne;: 4-8wteΚsyanC[UP9$C'3JvU>@_l^XD<q|z![L,ȎO١SlLPQ)lÃ0hl0U$H؂~5q?V	
!P6R~YC«')WԖ;\P`kt:H%O۵Ӫl"O
.Jv
lyB!+.ƷRe)@T#MX9le-&rķwƸS	bIQs+6py_Q!Oܲ$q$!}H'_R93ՙ	  iNmȻrWwI#=uX:^jz*9ʽv%+k(r"hL3ro4&")RF!keQ.u3P yRyf_6=2=*.jg{jYw?`HjMިPr?a/p=nZӱV~8m:V'>1MHiY PRa(~\N	C: uA
`<cvT5<FKiTgj3"tucTp8sAIx9Z?&} SM`sÝ{B]HZ,>Zt7қ|t!+9$zьRX|❌LJn K߷~lІ"Q.JTO:7w|R0wNWk;ۚW,omJJhGhR߄\;.dm=: 3*ADYdq8ƍ`.X#b౪U9u<K*yy%hÝV-㏍fxg\H1;)Aݚnamrdt`;W pr:QeL@AFRzeai>ԒS
4͡ 
WU5S6"x.~]wVnE"V0{˃Q16XOJlCK]ƣM)OYI\mz_5Z o/%:oY
LaUcEb䫖ʮշI3[OtrmuMʉ]\-^XSB8l8Ʈ@QЛ8ZWk(5`u̒[a✥SМ:Hj}=;UtSeQf5ЭA˵=YNx.\ϑ	ڮ<{ZtKԀڮ[B4C:{E5_wh<p@DmkO4;XQ5!t;
IeU׃R{3uN}O{6)nsh~C!e$.݈_]"Vǳ]Ӛ#eX7;ʊPBͨlWRF<)\ l|?.6W}xE~Pl5eTQ^=%cHҙ8lG%N ru|)&(6nnNĖvt0kjP.
LN52X8I+>˖}6)r'!\q>*QBWlC{oq+  3ɀ=N]}Uɀ߫5CmFR#SZеE,d~P6Dj+~Z+0ē*:,_٧lӖu6
Ŵ,Y b׍G/D6P%eYhmRTQ_)dt~
/=G*ފ+kGFgvx>薙OQgU> j.G&,ݮr"sTk뾊3@nuDAr[UuOZV_An\PX>1?+>mH "gx~=p>YQ19RQYsSp*r% âdXG	"5L%O5\̮> 
7jc{9rK#_U
t|KZTC	 ~
iDL?luÞʝi]<$@h06O(o2V<)aöG?賤xS	RTbaO'Z-6	.6 U՗fy&0gx:t;݉~uI*M3%Ԝ* (4IAR=ۉaͤh#5%&9]\z+y,AU2R~lF'C,ȁw5{$A!kxy;ɀ=5-Eʡ?g}|i;
*B̽ϯZ,4H	iEgP48#	m+sYQS_~qT{ֻe:	ɎkKΕ5D}V6@9/LkXږ($pd:td	lH[^jd$D%(OzӴF	Vɮ"G04H犒` W3Ī'PRRy(tO"E#*W%ğFQ`sK&bahJ~PU*Pp}Ox+D/ߙγdEa
ie0^ϩu_,0?eKM_s=
 S˫[`P%	','uWW-/
ǬH~<[mB	8(IQj4״]+)?ůG7ۧ< `^#9rM*Q(<R.;q@xdߔ
^oLPBԒ: ~f=U?LO>;CtΒyupʎ3=_I|@ME5>u.}QE̑?lJ@A$`ji1O~FELnZetE,Um wZQ{&x
<ci{U7
_UOGKg/h'IoPYU;&+*#߼f_qXGufl'fr$!9fG^œp֫8şfڝd"zٽ(`߶pk\XTG @OY
*&ۑҼQ& )6aR!YT{*PN*%/j']
Qr`bED){!+|#K_ltv"hWC5*"j}r.loiW?ѮҌ﵏Wpz
5PҟVM-r	}LuH8w@I8r+I5
KB Onn/Vܟ~PC<ݰGU/RϠbRq@G=ɷK%[m#& d?rhՍ%k86xTVlu5weH4q	\R~TvTUΥ "	Huߪ0)s!sNtfzuAʾ}dp+p\nvR,DrKq9	${3sA+[, !$,ZB]}\_?n$QGq>e8UeYߞ2.ԕ*pگ~RV44
/D<)Am@ɹY<ݐI G ."yS,jAk$LB.YVUV.6=v8m_5~HHfi	8YZWkMYisTA5<{Xv)H,yvS nRm=T.(Wɚ&SWK؏`zP52I͟|,%FmR).#tSl3mcw\Tܗ}'x$W:Β"g_Y͐橺-2T­bqZVruYx8a]of[-2Z*Fm_<Rnf&T&]a$fiZmQͪ*hQ-'q|"M!F;쨆US)ch`s;:U
/W鏩`ܰoYn1L_ק ;@^p.xqѝϑrFNYYD7>Q5eğxlelu+ykR/G*
I7As/Fr\8[r@iE׭vxRdKqө³׼V-=Tnu=wU`CY(Pz9YLbIe҅ܗt7!NqLmd%dWYs_Lcטϕ_g8Ao\+K%WF]U
~R#i:R3(/WZo/IeAǝsPuM+Ӈy'hRP-5%u&TX
..G]~ږJ܆vt*.,
cP
@bSZc3 *o&?M^%?cv	o8sBʙ6U䲫8eTf"ӋqjzFzN^NT 5e#U]݌ѩɲ}V̟̗:˕|=b 
xwvݲ*憖\
ǥ,*%=Og?HrUCUﱋ)͟ݝqz\J\ՉtR[ml
_yLaPfi(;u|ʷ宕Ү$򕰝\J. ЙV!J[ KqdJ@G394.+GM loJ:u+ oO?K/&q)TZM+_#Ωm)SWSIeQ?2Urr)J:?ΈmRjr:>ZN. qiFPyߒonVS~
e1R_ܮ2(*X]V*v59U9SOc/gϺz$
9ï|pvPerV9JutV恾J;Yc97 V5eUNE58.Q#2N1[L!#_I[ǁWéi!E.आkTj*>Uͳ_T8m5&8MMrϤ7/<廬ߝŶzħ*JԶSTڣeŴ*$4N 4dQ\v9v\
'츙9ޏ̵(Ӡ(7N !hrLjc?&]6PHe>'_>!%Xɦ+L/  ߏ) Y)Mu
ES}$Wr9Ujg>AaM!aS:5un[bHKdF%nF}/1+O}ߡy^oK嬘
uNy.pWC٥nw)qi]^eS.1'xSmyro+Q*%5mS%\nQV _:Jvqծ8Z-ou&5n	ͮ.-'xu+x+Ǵūj&X(*Ow޵?5JOjS>=&wToEV4&r'apg?aѵrSִYU-6
S9LG%!Ĕ	iZ+'ScU⊸W2KD&O>IшN0[7nwto-Pm=u7y?\kRݓzRUBH+H	Z\JXHK 48 rlw0J%V@R!{6i{{lGsia?":&+@`up%ؾg9x.+VIÁD4>[qq|갎Myܞr͵F!>X	i@N"*`ۤJ4l?8u|WybP@#+ebϨRm=gv[5^FCW}=IWbw}8{wa<JdP'ȂmP4_.~Ir|3Hs	G2&Β rk.A+%4BHF9acTM'ey#lߚ"[M@xTF6>ONmO]pAߔ]mJ?T.
௜:ڛRT9tV1ʋ[ˍhV0PdϝA6(2FQVDLD|G],꾘˒Fpߝ>M4/oJ5[Q^R{jXdկiz	ܿMDĐʺ#g/n9|7i@ФCrBfO[F,.<EϛCS׊tq`y77]*nPM_2
)?gQFB u}x/Hzշ:$yJpԀ6TvRԪ  
>?ǝ1Фݭ^	TαcXN9\qHj<y麓^9?Jddww8bf3'y++v 5Qၝ$jKPKA^\].Zо9=Ï$ֽLIsE|t>'K3p)@ObN[;(뼶E:Av{b .6edŒRVUuKs*|
f%!?7\Qn[W!
+_~9l<Odoк<S涆OY;Ӣ|Z"bd[k>f0{mM*nG,o:㷼B%XERЭW +L.ϞN0YTMj 9#_.tF]/}\ y5
sNk
jKckSٙ)rjT&o	"#	g1툨Ɓ2\6N'xR
~7`q \ ?zF)r+<j'mMZl+b|wmuS
TpWE1
傎(?n\V6+]KW^j&B$k)J'd3$TYN$WI:z  MS$V%_(
{uHH[߬wm^{磛sB7|X̠sWIM%Uj%T\+-ZnI1Adݪs۸b5𼪟<I%nE&u^ FI3%ӓikL'l7GmylVxb;ZN\֙Z֯A]|@	]^*Az 6T!\?NNgNΈT-E;)M*%
49XN1k"
KRQβ!JX
ⷨfU%QHt-QLaCՅ#T+s,RVږ|>k=ڥʠV~h%nrQJ=>IᐍmM|~n]',5~P*tS j93 ׫Y]inUNê!vԦۥh+g{4H9[Y	@u
8T;{B,+P}!?rYH'G~})_ON˔
 S@1!JtiMPȪPOUDZ/Z$9vv$l⺁WP?Ma<6e}7C?W㎹8JѾepŜ|PUҡkCHBʊ2:L"5D!^^feΌAG%T~c1trv'aޥ	*&o:`-W>WĴr9Y9RKQf|]<?{j@8](XTS6]++-ݭ{]E..xE]MvKrV}}F\
Yr/ǣT?$ezgT/cX:e"n)grhBU^nt]`y/7I]T] |T
T6#Q#U4 r*#p
g;
X?Ed
ZEx>ҳRgZφAbT|~~oQU4W3Va~T_r<Nwq  ]ʻ^U=rl:{slErՁ/ ܲ`TAơdTV6y]nK%swg*?yU0o<| 
9i7W\sUWso,] IBblh:4zAO}Qz)ħ~4]?5q-0.gn8A7G#v%cfwҹyßTTwd(Ir%9MMظ^T.RX.7I?\YfzAkDC߫ZWSj	Nj |iBUJ?>/sߩ,d=.9:R%}28qݕ^dғ,d5Ji'3	Aߗ]/TJ@T
^
ʢUHv鲆#M>7E{wQ>Ap})m%_DV>%OHDRm3o(S~Z+V#eXфK/?=Xqnl8~ݹI/˭fM)q/K8#QL5mEM"՛Cُ!,H
7ɬG:-+X~l%XSE׹Z ojB,&mSF|ƊO5ѝj\]**UrCp>ڶ|ia5Z'"#{'
umO&3^ʕ#ݾ&1J%H&#|x팑S(rT/4Ct(K
Kת;~:Hze4v+r:]%&gHXwO驋֬s܆?l믢R[?ieu F1
1P:K]6D(͛uVy,?xX]<TD#.TrQB`[QX3U֓};񧌫_
,]m)}{]$".z\6Q	Mu(rGɡ~\vhjs5:7z];@"dRN8X*T冖cR(t){ܬ;]\WDX(o+R=,Ǩkd
;X92?yWꊩ<u(᯸]T<ҋR6ާ_돑²fnFLx6gl6}o	m:0LY$K(t$q~Yr Yگ2F.7yHaoM}co<67)Ms=OM5+#
nossN[OAu.{ྣ"L
ԏ}E^p⒓ۓ+%  JW	UqqkOa\|3tm>u-PDU6J8JS4J/8ޮ]k*5̰9/폴m+_c!|wZ=%NOmgƐyD͂YRoKy~4?YGX}.mj((ՕѮa[s,4K:QUߩ`[v5uG*Ep{ΦtR[H'4OނlCpL!l)c
+iA"@n\
28(
+|u\X^^ҋRSpMp
+NnwtM$$R\+iç'wj߳hB~2:j1N;.vኟ&ӳJи2[y~pfPkR[%Kk|O?>>E-%SqDS?ʦtS+>nBdT$oG{D9눀~COnV"(H:\mڧUk,\ZqҸw<GQ|oᘎel95J4~7aoqk~pJ+
&n /p98@kJJ.
ʒDq8[v|̣zC<);Ky/YLa*y'	=_8R_-C눓Yc'OdaKٟ*OQ]OK
:6c4l/g[fT֡DܜowvVM$%z
]:>j#H~@EHw˼G6Jb!@p;}QjwTV~IkZpyn"Jlt鵝"i3=
ZFjW#<tQYT
wRj^oVL0{/Qi}!Jh#QQ"[Vt2ItAjiNXWRa\BԴRBuCţCUIoe܆
j,o'=rHu'$͟Gj*܃q"מ]z/ND97wTMI>4yхJ˝]fJ2Ľ}N]8sYnTY9N}t]jt]\
)8>߅
u
sڃ:L#ꎓNPISԡ5"A )29?lNVJ>u1'EAa+dd3aijaKo=ms.iTMNABGUМ2M5}mÿ܎R>'.ˋ6 j? 蒂P0^;PuGW i͠Į"^jTJ`U+$׫uZ88lⳳRQ5:8)
T|cp0bJ8|]s?$6h|uCMQ\QJY[wNwfM!*9ѣI=:Pwo	f{+j ժ[Jo}کӨ
|M>@۱̕w ͬ3oO)0P#h5_R:D?хK~fN	U2]!-s(%>w-
[]6Ｈ[4i$Y2n#]4"p|1:j=kǷ$L)~sYE.aeʩQjPV׻Jy)DUt e嶦巑b*Gэ"fuKlM|G.z}_z cݶ*v黑ʮC 4\8`G~@Gzx%.)6hT[%d'48%-OJ$.)!I0N%[b#5SI,]ŀxBƾInˉ5<d9_R
 g\M'Y}K oI1TwXPg|}$d#(QYŪ]I]`WN5ɞj0w!9KglDkص#rmNY+ԏ }-No?JX$wtdan)%IY֞1*
bpwL\~+2=uiCRIQ.G;>?|*~0`ȥmfd}:Iѻ+_y2_KlVI1MYd4[YvЄÿE)}FrC65A-5W*~FbDo@0uDxAy7۪ev#>cu^K(DGƣ]5e#xqNYW筼YY{޴FCujNSA׿M
R:I$8ߞ;A`|TafXr@l4FeAcw+)6˟d(gbf;6`Q.<H5E	޶DqNKr믾k}qn6qJN-O0
֐)Yn[NY0h:v/7M,%u-kio`BxQRK326%^E8A ܐ=->R28+
	AݕFS,~Qmʜ>8j+}V7lʂ$l; s|mu;q'JtG㞧̠.q>gI g_.B#ZS=_-O_f TY$*;J~(L].x&b[O՚dk
t(D	~(T^Atqbݮ5|UP$c 4"08tba@k;Jrj/iۇVj^fwn,'ӅB7қ#u/!|a_~RV-Ӻ{IziLKe2;QV:dMh~t׭G,Eq$mn=-9@)<_CZqMZ3x{+D!z{򫩡YF7p֐Ҷsiul˾{I@mʗ2i>ʟE}Ma%&kp|YUˏQE+zCjs/SW/JC=&ؕtDXTT[et}[oJ㩧W?Ľ@)=WNF?]U+&7i-gP .hzڟ>[1b9U5M2x7o*U[Rߤ5!!-C[rQ;*	Ɣ˙%k| Wu₇s%q%2A:~.Ҿ VO#
bSxML(JlMޝj~g,BW"r.`ݤ9
~e5`iܒ5Rwk2Uc>j/Y(W-7B1zW ,F7pթc7졨ؗT!mRE{M3fGak
Sn^,INlK·++8 ݼR_7ϥ̫*Z7{rWBv0e0
C:M͗#O	k[|yzoOrP6lH\/'+JlleZD9It[.Tz^U[7C&OD9E6]	̌>-F,0s)ր.EFfBuԑ~eM,ұ'hr<Ԣa)}EIͼvfC)ه'ӫ0[0oTwWT+)1:CU`/	$iG&UFJ	v߽J,,|3',ɡh¥u#C;FԳOE]!ܚ5	LA̓q¸j+Jn:w`lU-\Ǖ4zbsUyܓ	ȔōTNϔ[2FΜt}*՜fg9ʜٿEI WspN.ʵZnTIgY/]lz.n?%HB(tnD⣑Wf[}w_,BDBuȏHf<xR)*Ďѹ&6)H"fkO.01Y#,H)#E:K9KIWNtBg4Hژ+·Uip	{]&_ꊙG[!ue=xn&{(F ?gp&kKp{T_AX7;.8ꦑӝ6"_"ǲ3|C ?rtRfK	-q2qOU1?>nSw~S?;dlWUx 4Ѓp\G;ugt^;7; vebr9YW4! &а3}GXRO+6LB	a>HJLlZZߞr7ldTwW 'sNv7a)lXJRJEW=ۖ\
&уvUFiFfh> iX@rh2<E>.WP:Dl\h>~D pSpeƔ&L,	dqs2w)ޔ>z(<.	$j;A+תt`+ĪAw-q+Dfڇ|֯5'ۡϊi\G#@o^Iv
T-k;=M)?yJ#7طXs]!s.أDROGؽYӜü$j	񤢫Y&7A UBϪ]~X&>ͼ)޳cd]])Qgs:j#1Vir׎7d)¡n
AyLB+"DLŧto^NFRR"݀n}i"`P	$m Tz%W杓9H{7񹜫Mfyerap 4pl3go|ivN Xo[RBHM#=8
*jane]!щKv΢cU*RBMW+O!~qP5	ФΒO	GEOk0V=<;>\?N*KUs\(1愊_.Aۇ-鸴
cWbpMMnUiiIXvjtRDTGUWG-ީO@D(?Yf%@Z?]]jKضtKs	m7ZڢV:.Ǹ.>)
0P!SP (L'#!Dt]TO)Upm;UMv0+WbSzqcfXDZؔ@:p&nf4:aw(S/?NZ5(8sսxWLPuE03p_]@W . յW+ؼE
d>%u;RI. Kz.+Ǫvf|mB%s?YD*%ԏ'6ۥqՕ]P%$wcڞ(/W@}
9m'(lN\%*SyǹRx("_&Qpig3CԜTk#7u
Ժ7gLWER^38zKGJz*PӼܺ܅4Mteayң'ZB,:u.*ꚞuav#v|=E:U^QIMG|ΎrQۂi5 2> IGGY37Qy2lvbM뭨sUy^SGGb.`U\Wn]qWyTBѕ*j"SoOg[WT%'Zܛw{UCҷbD(Nߟ-<@f&>௽P`_ATBg'Ocln3+^0%M.1lJGh|]
N	%?"_ueҼ̮ U,R
I)AB{#UMxJ\PMt')=T$U*keJYH$Zjwr{ΰ=T	~OHÏsiC8qǒFRF|ƫ9AIa9WtyYإrl6I:6&$F*;k[tBneMd3r%UIGel鳻<ӈбTd0szRf*v>РϮ 5	kW+r;`2%0 NYփV,ʹPF$IbL#$vCW׫D
SS+̍BqHj֮=k[Bp>i&uGK'Q¨ZE95sSNSj$8QqJQ{qjv[ǖ^-=P"uT +x꿾ؤ`%Ks%߮k*j-!b(q680ʹe1^oʮ&7f+~SHbPHnB^tke|MM[
IWzTs;P'$A@IP2pU	.ZyW	ktJ>椥n#Ǯ˙mGJK?M p)A
nHfz%i*2'''0{L:~'zߤXVX	R
Jyǽh,E-b"T8gQQ11pݲI#ӹR,3eGI([qkc_KKP9JhMFVk7u{ZӬJNݤSo_4[x}k?;T#^CQB;`HR~)I">	J-\k>7Q++.e-ƧhwIv<5"ݵ6iI~)C;-$\z )4\pr	H*h[ti'ͺqq]US *3C9W
@/%hׇ2A-	}U=ǩV0;~kCW^PXK\܋O^ߗϑ/'  t
{KThQ(Zu(U~6wV2/_v<V%"Kq}E7U\
sm ?BMiS	H7dYrgye;eE2>?3i Yu_[]RdCRPOrع W}hPDK@[OO
U\w,HͶm)ǷTÔ>YK{=X$o")c5q3BKgejFUt KVIORo!:Ϛ%rF&8f)HOҔv3ʧi=[<N ӴWꄿLgiE~=|wr̳}CMktk(L1Ѯ6>Bb.E]s-7NK}IQR[iEwy2G"5P!>;4핹8r^yИ59z̩E`::SL&ۦA*Yr-#pe&{&P<&[^2;*9 `KGwڽ_r>0%Vtu~vR)	YZ%N?]2jT%r)\Fbb9lg7޼G ->//[&+,I5[5_N;ql.aW
uf| 't(!5X^OTi^
hҞɑGRyJQ"JN$gzyknJ\|DܮхBf3
|ڛg!۶1ϳ<"56*Ud^#?G`ب#CoXhwGe|b%\2Aޫ>[a'=yiϘ)zkv$>9%;d%|x]i3e
YكCw^K{F/G8hlNz-U`΢0UoLn0dys.~z3oG˴Db7ԷV@RThrLE˃*{;/_

JJЗۡ'k%.*`Kq[fj\7]H fJS9R)JORj|z(^X΂.U!M7ÃtiN@).v
9*NT18'G^Rj(hUйEG/%K^9[A5]b/OS\3*{ˮT\)YS3eqpv 8WJ*h(^ZFU;-O&'7P	pLU4"+J%P+AզF1;)M+ګvP'i(T*
|Ϊ" SmR윿D%zQup)ŁǛ_7OűSH6EYnN7/ԪI~nylv=x]8(&٧LkĖ1x)HyHTƤY/FidjY"9w\ml]ģIFMdd*Qn+fikqp5tX9eSԠQi.m49=ۆT>Cc.Yve!* J[uOQ%B2ŃߌO,[RI#!~լ tsn>B偺nuQ@	|lE3ɍ$~P-#!.l ='⤴(Ñx)I9ےIGǪp_o<%@C)>gGu2CuV=w]M%gBp9Knjr8ɋixY(QtoѸ<;|}j
vU,NE,G!]2j&,O&t ϊUa)Ӣ
I6x||u rWkwԿ:w	l721H?AaRD7$^'ʒl:#m+x[ݜKyLJ(r/ESAN9BpNh+>zf0صO5+uoͽ]<T@+ $}*ɌONm	eZdfSz9$˥ӂS|	Ҽ;r.ikVQi^' #\RK}gM'yx4j`'䟒?|S
=] 5}T
~6]VO퉻(;p~:2raWϒ~٧iq>~rY,ɿ֏sr%z@BѮ BuףK3
fR.GIAe|?*JXꤵq`ּ>9'h.G:B¬0Gǽ5 w*_qֲV9?EG-I"G=D2DRqo+N\Q-ɺIoKOizG[D/vܞw	yX'g	[r*ꪶ}rNs~]!7fy<Kѕ}W^J_Y+чJSr9MJJX9iE|
@<{+qWkߡ	-ΒA8ѝإ\Sxc5cp{/[9m%LPrRxVW
xVe1U" F?7oxtn-ﾀH8> W6RՆbx)^OMq1#R4lC1gJKSG{[;kiJWSEPUg׽9_$nH.>V2ki)D(_?s~;#%^W~Bb*23:V	@+R}W[X:s_JIVȴ!L]pR̮*Y9\Q
ju~>d6[I-`
=cx+%"T[F@S_*nr3чpS_pC]yT$Z%+eE:7j?"(`S۳eiHor)^PcKUIύ4@xe--4Kkum7%bL"Tg%.Fjϭ\6^ק搆Re,vw1@UDQX!LZhK<u<uԃ
KηUգIjQp++$;ykGVHp*[[ Hq+ZéqC^`SEv#S?j2Շ`Ce>KF2w5T=~{dNм#Z]nz-.Rz} 2A qypAr:y7i%s*'vEVg h.*C
f|wKcQb^ϭZ.ĺ)#ќӁ"^&y)dLßUPS?S۔7qw%-?&u(ѭ
uP2#O*h2Hw~|$ךEJ]3
^cajN^'Q/58^>+Ӡ݃t8Jۤ\M:U_):'Y=[W7ﻎY :yTTy\I/bSmxh (6R

oXOfM#
#W~kOPiJB[Il)q& XVđW돂co@7VY{ܛmynpC_OIhGs
i,	.e'}!C٦"ŻM`W)pbBk?&C:(A(+&G~ ~RQ%zy'[Gv<n<{Q\ķwk1l<]\'l(k$%uóCYLU3{\5lg;Eڎס[bSV-}J%7)VRϣ=A-z|7F5=lߣ}u2Mt gbXEVNeE9HTs^dr>g3NcGhRI9'$]~~[_a.{
jS \8<Oxَ@6:E\|ӷ
DjYBhjA"Zy/V`\
 ?[Itշ(6Rg"z	|APw`8@(
/!X`PXyA1=Օ:uGiQF!	Sn]v̏t=oc(b,?RGR)El)WaϱQReo{cQp6tǍe	U`Ulss<s<ڜv*Dl]fdΑ0Ω؏v 29@j(NѪSRyMŠ:xOq(ྃӶmwE	[zrI2J~
[!h?SgWy77-Ӟ0A9d\SOk'a2Iѳ
`H 7ܯZTI#-? 	+z>R7QHhl:f_*(^3|*@.w)!Jo1k*SZ()/+ջWnOgIX}~ TKF.MVeZޛ:#TBXJB@!E'WzT?BZCѬVrw?0rldR5"S5ouo- ~Vqy8ue[UVK&H@AEaY
z#+[{Ǩ XBrsw1ek캠gE镊Sl!ՏOVSUgEIGL(eA)A rb
purHUQ5CQҡj,o!nB
8$Mdnf:h]^ߨxꬤ V:2UY2&2`g*m Ǫ6R\#RΣ9}t=_S-.)=G*\38</|zս~%>&.L^"GGS | @h@yn|D[s\V#R<{rtҥ|~}#)H}
+Jvli텗49튂`.\rz40&z_Jr&O9*O:\1$wɩy6"y

Д\/C+i1R	tG5}4;WZfXR@~<%vbHlma.C
e؊TRTJDO'iG%N~gS-Ňs/吀9m|]0<GBZATJ$c:,XIm2W@H֠PJ',",c|[VbW>1J^L_GC_@<Jgg'1
YtӜ^y(~ ?dGwgUNhvR~k١ƭe+ʻjMcjSR,w8
.$g[[ŋVܞSWlwB$|Q\KFzn֯l]"d7@T%?
rFxLr&* Eii i6앉aEιӇ¶sv᪼v*1] ` O,k3EfC]
(938ݢ;B]|zJRyҴv|^ }h\*ekd$RuGb5QH

L;YMU%bzN޵c)ㄋWCx\Ҭt'szsxVj-:gC[U>	6 v$gjN s-p
KGCB|Q ɷnk{nO'r~iw9m%qlV)g^͟t|*G1=Zߴ~yZ~*"|otLUM|JH<QյwCya9	#e!'Wßl'VjBݭ8bp4@J}8< s Eb~^.OQN7d(~OXщ7,#4MԯqhBA0Ad
u#D(ȵ(cW)8SR~_)s1)OꁨW|OhEC6
W`)7i&GUKL/
eԇ	lrW+lkordWQ18_,i=_OXՄƋkO;pwMM*8Jduux>0u%upz|pN,*q߅C	`p%KiNkܸϑRs,W[O{UkPC{KUEI¬v&XZ|7ս(B&t"5,\DrI/โ%kRA%X5~;OuOP*șhb;>"B1ۖ"VEg}^˒zMGb;߷mG98¹	[xNZ8Ĝs5@%|r>rO/y*#}[|HXhbSerǵ9H q'ICwF5NM/'ڞsQvuq]>,Jׄ(-{@=)h4(f{8_~BwceCMr>҄`l{3(.#Ǖ,+|aZ9!Z+"D/g"IX}\y+]cI<#pփJ}1Ȁm~z{=:I[$^\Zv,/.=]?ͮpeW%FՂ߲{iOGlnuլR=8KH8\Q3ԧ^b
x̽jgl8?ޭ|
h!q͔wNr-?}ݦnJߏ+{5qesȓ*բueZγ	"|v|7F={6K5sʺl+)+\Bu9_qG!J	42nPLp9z$hfv>_~{gu~TyYR9>oQ¥Q˰|(S..#* tEΑؒ/: NYƟY@*jۣ>-pI!!+>w_NqUջ࣪t3@IOP~U]t7owC
2-AKTnޔUsYuhK&Bjq?	%jDK:W!APS);{HmSIME)Q|*RZv|\{Ca#gbIQ u\1zd  8(Xxy5k$|d
SK[SNiݝAשVC5~ $d87u>pԅ؏@E=R]ǅ;}1[~-XpYtB];4@/~*#VwCDTVq#;u
rɅ  B,$}*	eTy:` $7P<.~
@xUgchW	WYBߡ*
<q^ُ
xߎysEaZS4
jdj:zPoԋ
ԕ=U萦MIPZSEB'EGKz*yObRؙW(w_CkeyIj}]ʼXmfevՉ{+u< MJ>ΰtsy2fЋSrfMWI.&ne
qS$,oJyj/-G0sVkjϛىNSCçR
k;LK-hgrKv%4{At Ua67G{dn*cC[][JviW3ʨ=-]l@_$ȗ+S4:Eҥ"ske1B`B{@SUD۩{C܎9Jm5c,(,>Ujyw?mzof0sSSu+rb)7xe_.+;lbgO6jY}\XexǇwX2,:
k[/oɳ ]-P}GBx<mH:n_:OJKXf(\ؼ<~domΔ_4@V/ znzGAGQ$%dБ}
%˖G] prfP;8/Z9anO?AgKB{-ۧ7b	^CF.ڹbxc'#8gRN^b^;Vlr_rD,M>g}Ua?mʯfRuIxN;;f>ew|i с.c2GC*W?dJ{0Հz5ʉZj@yQP*h|6	8A
;ȖXjЫtSQT9!񥧚r
k;8~Iwo8nO/iy'	z!>.!IXU$T!P!/ĝe><
UXn}k/z)~h1}ixr\CVYTآ<i~&CUnYu p+ol=f94_ǠDĶ5W% #`\VZ~GW.(̯W5n{^Ǟ!pzOB!<nILϑH!w
jzPqb'2bSVF ߜ aZтj9KG
<`p/X\10K3:-{^{@:|t=6/ƶW
, 
K
3Nz w{& .TP\L@1֐ڂgIb/,ɦ+|Z+_Syu>tr8ikNau׫]_s{:,\~1ktסg^Z<qʊ}jZY
VNmMo?3(l<
!SHVI4>58]#D]!},I_}N]ǜk(`ىrk$9ǁ0l\Ga睵C}&*J(5 gRiT̩{Iɑ͹X^ZD;QN9>w;ȫJָ
cT{T׈'?jn:sw{,:8Q`"HwMs*<OT#3Ħxg
l}b&Fo0-[e<>#C銽8`U([%Z{C&D
A;U2b4G~x:~֏KFˉ^eV0-{*$Tf1f9(<if[lu)JBꯓUZ&]b&Rߟbf\v]GU|";=5N>Oq2^
>g7 Mio
J}$89+VJ[J%QeSJ(1o8c;Xįd'Y*B"B=\,KIKoZX|oQ^)9z
٩| GRz~bWF~H2!1OM7;z\;]S2``wql@3%[/
1//5e$O(iF<BO#W͛w8}
6aݣͬ6璒~pi2ߞ2dVF\oC%~Hr(Tgfq	iUi'wjz)dR< >Gɡfv@TRD6c~886J,ŐER
1ǢcjY<D6gv>{R^;O7m2
K.o=~fmjڜA*`6dl{(<X]8G!`d:Iwlzp@'Rʀ)M_e!
7K=g'p zP UZ*"%B
mݼvDU5Upέ7/ gkىگP {~-)T}>BQǙR-vSLq.y^:!L/<#b:Aoo.#@	'I=,g;Wj)O#	hT+h^iXz|Ja%,2kHP^]xBAM)zlgX8 IiSD RA	/I~lO>J Gf2c3T[hlh*RRTW?A6Sªś#K˨N~NwK	9LI =Q.(k/U#zg.`C'oY9N;<KzMv3]lz຦Cn'*V,q4bKmDyK^ݡհFU{Oi[C:As:r
&븪Q@	!*Y~W:ꨟb|.MsT+GJw)1(62V?+UODw;7\CÞGBa:CHk
PʶR 2s¸qwɴSU!֛Q7UgO\U/n:aAh.rj2|W.^[erh岃sKC{ubϏy?@U6/ZpbG\% bMp&O6(Sz%xDxU/2ҩ+K:+|eSIR*ڀ$)^Is؍ Ry GZ ʿo/>eמs>GίvFhѤ7.</#[jQS<Jɏb]խ-2:ط зM*q~]_xWYT	TNqh*E<5 㾏'=']	i{pr 36ؚPAѭ"ԑ)ca!X3Rv-x]ԃURU}XVǇw5O3{,	ujFjSyX/ޭ]`\RfVh	q.ҏ&SLv.aGզV2F4#_=z2DDRcC-Rrʭ杠f]cەtnƹ9*5y9v>e-?Ěqal䝒|Kb	589#F7X$y6[~xy;nS.֖b[fA@!uY	)\>VYS%&F}j6\v!tU
[,.1`R׹F~_KM&CwzӶl;YQoҦXgf`2nC㎕HH:MzGH:?H~ H9Pz˹RPނ UEOniw_%69/<v-QN6WpZ?-fԭ\#SI̗F
`g-
Mev\*\ 4ks=v)!n	߂VK CN|)6<ޡ1Î05=¸Zk:	Md+EN8F+=hw-g!6sK}GW`o61ЏGe2حc}ޯZ6P]S5@y?,~|o:]ޚuO'z%XVێzSNhZVq3D踥ernU%oUwu[;-]_@K>!xε;H>

/(YY9c)ٶPW6;S
_kCpy	Ɋ=`/DH
񱣁_>Kz
>*Ӑ$+d
5x}u=ءKGnJAM
*EY|:~:m&}tl
+T2c>YpZGAʟMŞypW׺ػd<"Y=VupsY7Y5 6;j2N3A6"T`E~IC:{_zJ/{&t[PMmbz֜ _)Д7mHrZ}[ tCH+^9$ȷVlbV֊lJn@yvMpGqh.6	(ڕ_ȺOڭ'hd
{1*Đ9J*|Uql
pܮ?/Y=W}9~Gvidr]XiU9Dے+x$Yօ2a@rW ^Rgkqz
dM6-W8ӱ|9$3n^gUS魢cN,7$}Mq=d>~THNVyH>ͺ K[W	A}~M"/0)V?ͦTVCiN8K<Eb^R^ESwHAr_9|N}a?NqW`-Yݔv9(\Tm؃Wu:d ^'8*4ly,Cwyo0tIN39>%E|vlYw$c]mʸ?IcMe.J<KRO:@rT41im
ۘu
57.PZ}w!DbeB͉~6auxK%`[U_ruҰ-f[CT^Zc;i3D::ܓ
X'^*s^
9wӞoT͓9;b]*[M*?^1z/QW/ԕ^k5yօߣ)UB/D̖B^vrrg\E	R7$[Ka'ʿ
\^nQfIbPPC N<+vrNO5tN
_va~KRG]aᔧݫJ/ne$vЂJ%|v|ף%]|ENH<H,V/ˉd:d1W$0R
x
YI~}^*zYNALd%6Bi0Da.ޫl^(ORC],6gP2U@ϙ6/
x^ݛˆRJo0TKe	!Ls+q:Ua4(;`xR}c"5z
:#
m$jQ@!22Ǽ*Zj3ڧ#!%\w:[=J4j?UsԬc
TK 0LbArDqy,h=1MBwFM%Ci샶'Ԡ4Urz+w: #YGur
8e_Bµ7܋ez-gPy|W<y?۝7^t7&%X8':zzI|18n3Av&9
tT8~y9nh.}=8OvݏXI
Jr0P(rT.P_{KUμvRzI:h:2aM=,^tMNg0Q;_NQ-
JxQPA0T04hqԄheR<ԱUXͳz!ZjxlRVvU.])@xٞi㞃ݼXEDID#4*8i~{؂l5z>b=-4z<-$Pj%'d]$YNlt{:˙k9FN1h^<Z%mr+׊Mh+9,(H֬j$VY|S:EꀕVSJ܉{зrF?k}޲)lzbkV]
єpTKs}mJ6T !37nIF;߮s&~:{{5kdUC#*C@ބ{M^G
 8{۪SZ9ݥuĖXvZ6@]M3o A5nr7KGtN諻p*uJ!{VXX˯Oi)|Y[![4s6U oƑݕ
i-j{Q{Z5^zi00TP3ǒ ]Q/0>#MoT7y@>0yՊ1ݛ}=VǾ4rxWlO쇨v]}da_aMyWӊ}<=---d:(CluێtWcXPK~2??)ɺ~EBez2mYlZ4qNQs,;7HxLؘJqvT2c+]]1U)oenod:poN- (`oQ_\7m'R7Pæz rSSWL@! /'L琾V`V`~mux1*kn4QrrX8՛@=@uruۜOgMˡ/J1++%LA_rYt	ԍ֪ՙfpt){kMA~i/$ 7J ;瞈A| q, jyUyd7SN}8oS6*Bu{65:>z2A1ӨpV]Q< ^
Cxq5'*r?MP+ey|j@ٛ`'l*[Ȃ8-sfPhke'J!ɛ	"zbzG]x~w}/3V~_Jt+j1/펙lNá MڪI}IAtA}fl { kO&kR`)y'y5J5[@_|yM+;DcT
ҝ̤F'H	NN[gnuB^lJ`j*Y:	wQQGWX{i-
"1uuroTӋ]&}EǨF:.Ю`Y}Gq󳭻;iWr<kVmWCx%b^[[(eτ,'{nR_z=UഀǉHo_x8s*c0QAMUTe29쾐\tbXf@a& ^e9V 	2& '} VbB§oG5؈?IBd
Txh~4x~"x^xރ6o,:\m7]{ߤN6>sC q&g74c˰~\-W$)垁/UPM35=]38miG{TgW)ѦFu,O x?eGrDҟZE=!;Sx|
Yu.Ng7boĹvڟ~f bՔLCzhٜ+U|_ \Ëߛ4`mYN ώŐm f?}ZVЖΊk]dohƑL?_P E~o%;]vQI(S	5¤:˚qKg?-pUz 9q*0a`KdJ^tҐk}"c *O]?eW{;=̳9>wއ@#gwv޳܈m5}6l7[P˕}	b6q<vM!=m		<<aRQV}b?"c2HUʜ8ȶ~I
zH]0ܠY^n3YG[hJs+-0Կc_<7	M]dU&Uo 5}yܶدP)͙sT :@ogU];Q|G5<J
eX`F'Ejy>:'|$і6)(EmY\g-]-E
8\~b}N.nNCv3Itb#?]k+K%IM(0󮜔dclJ4ĖE
U&1N4jVCxKkJ嵤LI Q'#دbINOwllg|N#x)rz WUڸߙeLR!8Zk.|=5WUh'綑tPr#E7tӾ>8ɵ{182!khweqj<ڶ:4 #8bW>_3mqJUa)Et_GT}>zۛ!wnZUpMvRJHSg)wJ}肝}ZqpL]Ϡc UNt{$C9O=$LڹlcrFʑ'+slZr`8g@ׇNiEDORѠ_j_ Hw
 t}uAVtܝ >Uªӵd8lے"ed~
Md_>{^x\Vɯ떵BzPLIL]`[CVĝEgQBפQO(8m@J*qhmUt`Wpjݾ#~$~׃"^8{kA{-qԋ#LNb1VRjDg^c5
AgYL'ܣEyuaO"nO	8)ʫjgOP\sĭ[JyvԝQGeRZV#i
;=:U=54yOӼn\m~ύml卖x5u[e+ /]6Œ{^6?w;X2,`Zk7&yrΛ;
>cXYH+eڪ*nxq
qoe6}ʱi)gŕh97KG[\g>LroO7k-p(PfJv:C!:!{O8'4/.C~Ac`=NqM{luo*'qz۳s*e4}Yөa?c<ʮ.r,20
nIZ{Q 5e_"
Ѻ& LҎq>p	}9aljJ.7Ѷ=EuKnAɩ%d
6n_YJWDQɉ>޶Q뚯fǴaxg(wXJbFGO2GKlGl6rCV~*&S;IC"tS#X*d*0d>˱r +YYWGKmL	d)!sud@*>hvY~^~+>59+tW#FPCIW7'AIlYȽ$ϪtA6yJ^k¾6)mC©Q_~!`4|& 3s5?m	 CjDR::}Xh~W7)P䡴͑ǃ*jj !(ky5"rk{G/@ޝA-ͧ%b$l`yͥku
r
Ym"g8u窓<D|SQrod]q;p5E}ddw.PH}Rnwy{З	$68&8Q!IgKB#lߣ:ԋ
#ix<TFR5/;9>޵''3:aW^tɁ/GgE놷 +GQa^~꓄BD}Kv&
]I-
*g{R?K} J!Y@rnjmP7;u;	&s&qUGrN,4O )蔭Ӆ#C"y9
Q@q-^!8AsZ<ڭP"޼S	
->y粮VmIU
~cVp̠/϶_[;$^ X_F`ZJFZP(=^иQ)(=]%mV<[d?ݮ)f?wT
yERYuzuq&$ë|Eqb2mjrŠ:O O~p#5SX O Ej0:;p49
Rx{ԈpP+GR%(_/O׍/vX[;/UɎQEAl Wdc!%eKtZX:VՉQӴ>Gh?^̷w8=AoB|D-X#o>}[V/7u=#K/o,#~m t5XدKE#ݻ&'lh"]~֪,|j['}][OuQwɳ;UOiފaE(I;'RRҔF=ݤ{×:ߝ ԺxwYU%yHDRJW]|YR`
`,ku-u,WM4?'Gv hb3$D:9tKp6--:3l5<<UJq>4Rhzp͑v\_[ }z4^髢KrLŢ굪ZB0x2Zｕ@0(X:N)p IprP-,eUx@ډ/͈|TG32;NMv J\j[;BuDrS/s a,&?	%jC|m+bF[9
*d厏*[W<QKjU,a𒫪GPgOzY5,lOKτBWW^,vr&V6m{%gmb||{IlO4kZ:7KZK?aHaҪ<ǭKNB<4Jܚ|,Eg\~3y<½??t^7ϙ_7ω7__?[	 jHL!^)^	v5AuF=SPeXx=1_ eo S(Vvl6d+$81sP@TS(v<;-'-clJPQqOe
ĎXmdu_:BS`ۦ>^:v[:-&^=uUPFG踲bL.͉PU)٢V$>'v5#eKfKmr,7}!@bZ<>	{;Fz)D<op9a7!mnTB62TIbI#I7xw *O؄K(hXQXw$/LqWUO~
;=d_Wz<C6ЅA3xlKx高G̷4Zȱ䃚6zko!VoZRt---4Q]i,CJDQLE~Ǽ8;:ެCT4f}eKb-yYkёY&LaT?_Y[{$: +jQ
afEٟwc U\<+HV@CBRݞ8y'kWA2qh+[IyWuw\|&FM	!@QjUcsz*wi{9^PZY&H
i6yԸ~c% y%ip)NfGW
:z u'8rB.F2c6U;'^s&Y^zTd?6-7d4;D\EgGȝggYS.:L<̈VPz2[=Sw\h2۩rSq33kWl1]DQ?vvt9dJ+ŞۿgaGn
Ծ(+Os,lթJ7S
1XKՈ^5xㄇr=+~}W(yU$gśY2ahRD"̧W\0hNs\G:ײL8Ma	q/S[mL&#
}LV%${X:bzЈPP_h>M!OP%cTf(ddUr$^E-x"r;\%EYOݗ&^L×
|;(xŪy1c;7еv휐״un0<}_nu۸Ȅ26E*2HX}&IUn*Z Fpޝ= 7v
&h`,M:mC yp*!7NwhG/)*'*GM-1sriFDXLm橙fd9>*tVAꁕ*| F)WW	pO$lmԥ{Ο$G`ކПYBM?$3	$E3d mk`:fꭋ4& <w*,)Zxy70B"9%ie_rB? I@'sϡ:~䤓/H`\'D\.pȟΰlIE:x? lpCEo+-coM*n[G'
y_
\#Ȥ~9&6Tez匾\4(
^9Pa'|U5i"tuA}{0dN(yψGBӤ7CY͋BeaG&+5xR'P(NrŃH'84QeR71
WBElJ_l\9v=oQPN8=dPD i/[VqWV^ ĺcXsY;H@?gk	&54sWb?!7o0ן.MDM
bú)SF,Z|kwCh 5"Vub6<w"0\Z߲݅/Sb&\JPMK1؏t2L#?dד0
UѦS JfX48.b˱sylDt-WVL1HGBS:SА6%K$gGN,x 0:tG
]ym},FLjU{tbln'=3.wKǯF!t<x+rgKiKh0.'~ **v3۟	l %ZxZcgPZ^RPԨϽ},oMZoߌp(6=C!-AZMy^5Jz=|y0 #!-xڱzle6{fCNd}@էf C0@iRU4* jNl.]	 bwU#G=E̥yz(TkPٷ7q᭏;dw	Q{
;Tا>~+Dg)#;7aUvj,2Ī}S=<¾sB-8z{l6Vu@3+.sKlP~zc*V9OQ%ڠTھ31Zl{9nbQWrmc+~5*^H:/e9;7ޢ]\w} ऱ=o
N[\yZϱw#dj`^Mm"G2]>O}L6l+u.+ʤtI^%.9js sqp`R_sկr";f.UXf,?Wsrxp4F;UJZy]5 o*m= qѴބl[dS@dq{P]
JLV
l%+Bq׼9(Ezy?iއ4o?NGXKOa=xfr$̸Ue]JUʛ
NG_ &lx!ư_Дv'P0dUPg~DRVV(ziTS	I^kRO.Pwd')n>,%?`_~]پl
`oؕ;U`,*4t2Vg-xWm֯|o3>F}26P^zH[c$N}|ĬiuPwH6^	_/+zJ:>ǷmݾABk&պu[$U8bRcCEw
5,]l}?Ȓ3;Β,+CbsCR=e)L	Ox'%:r*&}罥U'B4e@͚yc)8)g8!ʈ2󄆮"]w(Ccmm\*m; @tgAptf%`cngֵ5!	CQRFO8}7]o

Cy#ȩ$}ԎW}.l$&DtI{tYq	E{ Q:j+'"xcw9Ն2&)|Ny5'niv$RA;u!HwUE%~jK#&	.240ۙ"*z.~.ShTYgaAr؎Aq/T"F!RZ-_k˙@5-ҁ̳Q0?i%K$A{¦5qh: (|;܆qm҇H
5?x;7
+`W2cx (B;Qp8PV\po-dI/YpczwuҜ04zSnW_{Uxzs]1swF)	$Dڢv1lSC9wc@lmNrB݊['?ʽ{wyRāLM&{p'ЛGNX2EKG^$+r'rFURepv Z*H%IVKɢV%Mǚf

{:yrT
SS+ooTdӱUPy~n}ߣx%__)j4'cW@3qȬzx;P-UTj
%(6<I1/^84(ThrGWi~Fk؛eW
Gq]9N(mS9Q j	kDC$j`jDE!=Rnù0,%>!ؔ\ӽw|5u	2+6'U.}]spQ΅|pä$,ܛ]_hiP.,Csȫ AT>nVseN=nAzk~+uvA!X-;ƆE	~*s|}9Ke<qc9VQݹYUuhM9LdTzwƮO&F{P|{oEǮT;]
>2ǫܥ_)iA_N4l,E_LpM,ٴv&[EK֡ϮFxۓFn[UiH5f\kƣqG=,(kC6	԰<mws?J13ם~q0[+Gcpߪ,N9؃^8ꓢ<}TvljQw)3}L9]1eH>!.q~h*.=n=몷J1Y8m3U=]f֕ H$EE-(^0'\WY2-Ɗ6G
ɻ}]fZ,YawZ@dW|&4W/ <bկv۵On>=O*(*\|\dHRkĤ:`7wUYD;H}uȻ|}Vkk5~P~T;Y8TvLբ|tZ"G]Sv߃¯w
PB8c饪}"(^&ZX~kW:])&V֘5.gm8t3mm=TwjP+)!*?Wt^PFKd@H@v ËPa>m㷥,%z2rZ^?ag S5ǞgG+S 1:w}>ZaD[}OZzfee~<y+F&}92W\9G$Y8zOu? ~;5a{ Fc{.W4u|>k|yfX53gy~Hj,f_b2/޵VbہCf4X;`[@O>}`)NG0ؤMY}ok,v;yw?GؖϢ0貀קV	tֹD,h*)sW*.B/;RD{wz%͔k
yo^8jP}789vpELUfC^G'eh.P
4"q=JQYUBTCR_WmSщ a'I:@alm;ߡ_J

VŷK}f[:DxOCF:ճbwOY&gszkR#|:52XGNt7Mo7
gMx1ˢzvՊMnʦŢ\24W 1$ES<^ZQar$EFhjىHyj! IEB(t7Nr}p (CV^a`CVaѲTn+SErH/T?nV8(`~QǩEډigh$gbVR|JͺK;\ˣK,&,vXY>lE$k,n'`FjUӴ.$p|^cu\bƼGΊwg/uECڢ&a["		6N	py=Y;Hy5dsAfnYVD
آ
sN/ *b]-u^M>%b$18~n)V7W;))B7Z;cqڇ$z@#2ꃣf!).*TM`0SPr԰xz[Wق
I5,nr'ʎerh6f_EQ.;uERnC#j=FÔKL4"!޿w0*B6SO̥"w)SV@kR1*)< = eXZ;@Ya59e+y):mjMV d_ZaV@l$L_-F yT_=+߹+|6v'36_TjmF0iH/T;(o	ɭ+@tĻpN!Q-]NQNN5A)K2"zά:`Q'u柣70qAL?Tξ!sPAxF0PT+['KLG0e'Y,'jEn?~3h⭣AE䭰x1L{ݵOY /!_Q ˢ^7yE[5N`ָ"~P8w:0:r  sS*Xu1G{Ԁ" `wBm{. + )F:|HWw/
`<> guWGFgJyWQ@sk_}22$kji2s/(aceǡB1Wإ4n3#
]Ci?"8i9+7A~Lk|lOxiЊ&6ݒF8֋6	f[
W*^m]]ǂ.(5ԃ7q0X\ >v22q~O2x7?o
Rw~e3ty 6O-՝Spd6ZIH΄W!8NūqHoi M&gX*:wb^eUgP,:几{9jkvy<9'쑷<B\BzY4UҶ'C$͞/!CZYT
MOxGLzd_";Hdsu?p'ψK5^[i6xtXFԝ4QďstZ<xH?8-=2%yO~IevV<K**i|H])>yJkhukӲAs!UQݬj}7zǑgs}/wp皶[^IY&N+_̢WcΊzKoDw@z1.v߼bk>wi-Q
BwsdKgᒘW|9:d8@Q!D
~j`X1;ѻ	FGٚX,Y6LG|>bdBŹj&@y:ca8@Jb+6l NjfIih7e)ÒBllsNng˿|	ix ЕxZ;nkq<	3U58c^Mz,
?;٠_pjέ$ OWbDx%[G;0	XԃOؒZ/{'P$Q ai7y1#&?\NDGmfpI[?'6韮zv5I(lͪ!\^vL7n^c:Ǳ1Tߺ(z
ܫ"8&3pJXQEuSoFOgb v0?t@$h~DBjIPu,m|3+"8Gpb[9 {~ʸ*ZJݶM.] w~ { f`Fq^(aj8%`[Us`c}?tőG!'rtԲocԨ;qH|N^k3tweW;7z
oBIETwj
g+[u<w㩖po	|:~S ?#$z/VP7<w:CQ4ȳwuRJ;DRl	Q6HE'(>UgU6as9j$}	@zB
jѫtv?;%g	dL"nf2Yr_Ld 3l*sA1hsӓ9kfG
W.Ajy5?6
xPIC=cgݢu<E_U|!)vnl_n+pT\PbJ4YAe?v?jLp>!CL~xjӄ#)Z/ m}h	70Mp:*y8~=
Q7euI6`F6;l1%<N\rپB˪(|/kyIHY ܓfqvěx7K)pKxo
r`5iw!s}prIkA#bԎt`\=AY8?\𱥲b5pda;Z6Xh+uE/lFgX.sڴXj20]'x%}faሏ#K=)yb[|xilϥ[ȟRDLjKď7C&
~	9zmM0+)/2>*`Mw&f	lGMHD\#]9eW՛ѝg}v:Kח2ɛD]!=De~k
K)lZB+
%ւ{ӱw4ɓ̖3lV~puĮ?ײZkhqP]j.O8s6Yifc`~#S^ 	[[$2J7"՘^^\&Li:f7pVkCo{v&,srb?νGA&8(KQwԟx3}lJ [;+^,ã40I\*`ڦt~]k7.䔒,GHpgX5mu1XR#~܄i^haokh>֤F6"
d;ЕnKDUkK*^gӚ+pT
Ύpt1Q_u_B* <7_lvͦTy}AP@`SK;Vӭ7R8[Nj/V\Rj`#6D-Mޅe>?.zña{o|߱ቻ0oLt)d?3$	E,%,Vrԥr]X%F^0J+Sȇ30'f'Dwnf(rxN~:+o5ObixY]뙒R¦]9ީ:N:-Ўʫzs47!CVb -irs[D	g,Vwh~&&D4@~xQ+<J=9BѝW*I"_5Z `'d_dr 9|Qa 9>O,Vgh
j}x"˺G?*/pJ,B&n$ǯXE4ْ?TRg#ҽxtr!y3Vajs#j:Y1EwLJRؼ;X{+TPwQRzZNMb+N
yT\_y-NPVZץ%}}vԩYcu#vsumx/	&ϋRgpmv qȡkţ0o^N$_Uz%q;ҹ_MsځX<2D~\8[r64tx[|{ *>N;$\qlWs5>Aa2a1;	녈FN~QW666`m_4mO)vMVQ9ņCwT\Cpx-{<	>ĥ{>l%V١˙?}&p>XgY7k6r&UCH*/Go!׫,ИL1%e6KU>NL C`UR_(E^SK6XѦ]k!'U6l=`OurJzI*Iv&`/m^t.زTxs6mYMJSᇨlPC
ӭX9sbSYt@b=0Ԝ~>LɾtոX&/8$yJU@3V%{0U^f]3ZB
U@IɳΔY%qvтD
^HG6rOvpe)3VuxmT#-	,1؄f=/Zkɫo>Z{{hYm ট@G̯7x7L/g˵obf=ktP~rg9'8(
K)$W}TboR(<2kW)P9fwڗTzio
z_I'
8+q|R^%rԏL/[+[
tg &؁NsxX(֦mJbRϺ?%g5:ߺp_PMjY؆4a=qyyA]Ŏ?v<M 03_v<ah($lio
Q

3e5ٱB繶{  R؛z`;}TVRЅp!zjnExK'I&z_G"֣GߊJ,ĄY+grNPT=*lY \d/.t+uQuH2hpohHk5av4wY|ƃՉAg˯vs!V>o93xi7}9xkЊ|߄adZivu2
hAomP*6R@,\Dl0ʥ"p$w .Omꁱu\sn68.7hS{V|$m=х_3)ܧ2MQ+c0OgrUG֛)_En2,ࣺpๅC}ghJ+}D,{Ln'+{
ptQ:W,6-Y,XL2
۞q
B͔XӤ_u)t{⚶}<E1'hڝK\G$$	xӝ҇ygcIZsd_osc69)S>qǑSmc>
8Jʎfߖ^KW[n%X 6,}f<@	g	
BM`yXXk
,G[ԣLtKoS=N9rpЏaL#ϣ	zEdi#S"[4~:M.vչʉ=&䮽'+ljUXXڽf*eH
qx's!lZLq?=%brɏBq`:V1)$;r>"d%mO<`G9ږl~M&J
N~S%#Ξu}{-\Fgȴm!O]|>7{̷-%2ޣ|Ecۑ♬)nc8֠m+o_@]Aˑ<[*I4_Zԅ9^i5³ 
(m߂!׫$nr&0C9Tn?=PmԱ]ӫ'
HZʤa5}UjkTXRp&2e϶&=ϛ.{z-||4 8yc픇!DXh j`.0!S'Kϣ#B@NQ?!u+!mmiu`csNue'0복UZ[R}FOG34=9_&SCł{_%o*hcaH /wWr$M|-`>tʮ԰Ӟ_Ww
%Q<
.ЂqK:7ç95O
xUiӅn`+r>_=^m"D+.>?
}?$	UmRGFފwwv⻤~%b*!CՐ5^cf?HBA5ׁD` 1jL-6>ϱݠu3`w
r0y vX0j׸%`dPTM7+nvqW7`
ҭB;vc"}UVF2Ҿ~p6zS5cUlDdBmP_v3yxVBiADjƻ`s>śDP_u"2;Uo7I6طKr)Xz^BN %<Y8l7 O-OW]f$*y\3a»Rܝ=f39Ӥ[Tl2-ۏ*O15l@IKl'ݗO;#J=TQF%,|r0 3f0jq.Ft
9% ePO{+{Z;ȮbT]bEJVX.b^65QVr$IXD'vǍ@ZMť[j:q`UbS}d Q0@:(|Aqs_FUF]
g^eRM9>?mH@ilR/0Az:QtNMLpΑ@ddc4G%2\ƭ?U7]ooł~8<. Ǎ
]ެ͊:,9%yRM Ā#S5,"?gVH<jytUxvt\ܺQML;1n/+huxЃ%&[ڨ_2AHr.Z;O!voَ%+^K PYA5-gHLVZ֡ƋfK 
=?\/(<5Pyô,c'@6뫢6k?7:3`x6M
ibܐx%ߗM)c&-euvUq^۠焻 eKu:mUɣrɨFPl:Ox3XC|٧ٴl0vnoej1P':\WmRtwGy3'@|8svQIm6D1&N/C9tx>y	VC@-\?AvIL.*aK2ۅn*6Σaht#Uͨ9u;Ndv2'0
'
ׂ ov,#|+8v1wZT}wajų/֔OopL|{|~lC7YեӰ!j_" J88TN砨;Fܦ~/(Z[:RYbgjKSLK|?n6iN.6e0Oi1߳Jx?#7<+ u)^[)խ'iK;lZZXc$TOLke'
%:C?4L?| u,#Y㿝w5fLR9vAԿ+W)\d}bmZΘ?^7Q
%wr6΋;ǁ|I	0"pf=.:9B]f;;D%>tHTWS_h[;`˔Q"Js#m=.KU'H?\CJj/?Iӈdƥ4; !> "M<}VnR_+3׫H
$Yz$ɣ9"n[ #=K_. 3GyhvE\ݽ>2#?eqvQP@˽fW!UckzM!_*]dO]0y;qI.[>n_XNOv.?}w+_r)CnHC2SU̇fusZ-KآlU4kiI.-kNEsI';
wB@o>Mf')Xˁw-љ
8
!~wMQORh]{sZM4JsQs#8ZIQ\$!<|GZ}^
g4O[ېun반w{ԧX*ްJ;Em#enMHP\-,ݧ7 CO"LU	n7!%Ȃ[t*pݖK 농]3Xv<+Bwi7reYYvWTe-1>^)::)!Y⧃/h~NnZJtwPgڌUm9W2 l9(I>ywܷ-r#Xa?KS@28zhrylѥ}Mx;جXo?f.Bğj=
$pP5Y f\Cn9jAiZU7^pWb~
OiMfBWpk >eҁIJ.?aX4TN.]\ぢ3\!ҽtq )=Oђa`H2^t(N18/P^6)dY:@l@819P],pu<RԱWǅBSrg

c
ݡ^E<h)}+>iMgpU?^"sgMu F:Eڙӂ>H!=TPrwnD!;G\zy!W7>^v2Gm*v[-(5h;g ֶ9xE}foYm:ݡ)
uO'8y̚>fW8|D}xv+sL:vT[R@p4]<ї{s$`庭OOڤJrʛa6^nnTFbW.rd;:?a.JyNnA:(^'#(ٷZml8{ח"z1@;]d:PP$gCutTge'"Y7Xtz\rк"),e0l Bd4""ϳ(ܛZNĮ0¡<!	_t;}ĦP\Vlvtgﯿ+
S]-Mog8S|¢;{`؍2M8\nvӻ}s|^m*<&]`z>ɷglZ+p{u3e|J犹Ҫ<jfB,;*C'MoyqX'i99lکʳs`矙K)W1F"
YKٜP>zi)V"`+@gC%z:r%d>WPte|3T,'A[V:701s﫪=^N3lkU83]r[j
qPO!L'Oҕâ[9ئA{=yFU34R3y&ckLd[~6]w0i1N~sɍSNd*JWǒߝydo-.F\NoQJ#GEr9$Xbd(B;opz[ E7G~ՏEJSSuOTn|9գswUblltUIYHxmD-q3x"tiQVM"}3cr.Qu"'i.FT:$Ͽq`w&jG(s)ߤf臃~sޠ
pVreŖiS*CS@K
>'@nS@&.3!nu;FN1OU5!MjyP+]]TIdӵA3~*PMg~[1iW;DÕnΫ_\oGKl\Kg\}-^`	r7NXQ)-uDxI'>*oy}+YVr9&p<nne`GBVOoʺMa.,N;!
pаSxN-Bp9̫0p>WᇲF7׻N̙?;vsVwe3w9/op0$+з	EFthy	jZQ~4tH.NE{t=֭`U'2Sb\fWxQaĸA)*_BJr֛.J }&yƫi\P+$0Q53K!u _hq)ݲa8\o+~?(C	A/oե2*'wX~U#}+ˁ6X%oo%!`BPȄPMcc0'm O&N'a!Zou2ݬni#p%.~ktaߧ$+LZE+ëhSv;pSn8L `c*@7kv]R7|Dwtɹݝ|w|4j^=
_NFoG|Ry]԰Qc=qnCȱ<{kZܿQU
BAP7T<n>& ^8
2me
|^iʏ7"Gơʂ%4$ۛ?W
FS7\?-=@\43'E8fRL@'\QSryI
6/[֕CF<0-;J>5
SCP*Pu	ϹO5jjaKF@v~H	FRuue"Mʣ
$_Q*r
@h;n|Sa hq7>RC<$p4jAMPDF轻{Jjf9޺8
x==Bⱛv&nHX䟊Bd欂[`K]`p t햼/(EUKU"+{kmIA`+Ɂ'wFq3~%2Bj,گ
ӆkowoUֈ9&qi=D*Ckq+6!؏
o	PiRy:[@K7yo8YS1vC|mw9-k5w烂}G|R'(OMh`emӮ(_a0g97擴>*nUI%(6h\-7ƔU	<Sa@ȩ1)qI	BRbˁ9Y%NhZ %LPKNz)kV0>mZJcȭ
+)ɉSz-EՄRHDq6Cj$͠驳uVuS~B$Dˑ7%*"X1c[d2_$wWBy5*RٵN[C+'7@Qon/E:>=\
<uX#EPM1gw-_Fu~)Ǝqi펋ϩ[=mL&J&5*P/iN"-9jw9Hz

Ʃ}qHԦyڪ%
>nEEkǆ*n
|?'݊/PT
y::j`ee@ܥڂ@L$<k]Z5G"TpZĶ9_쟳iS[ͭgB]Q!o;N5Y<ftfYvkK1=*(uH֞Ҁ)r 郬܏R}ح^#ILvr8R	4k"07dH	}Zo6bx)dжZt%-L{8w8*N=/fT]l+VU2Țdd8gɪYd&|nԑ틉!82:_mDx+woLēme'7n
V}bݿ3+,L_rygq;
PJxm;@Ag"-[gz.;=8nz#XT-(`,Jw%eU7$g>n k	Lu´i,3D!K9rnrVGxC] gZ6 #֛SDTsKŪ.D-XnGa#KĬ9'	赺#w}+pţꬅqy4pF4LB|LaNE]_*0!7u=SdǧZH2"g~li+ERHRӥFl7,ee山
Fǣ	Ӹ\}z
ra(dmC\rEOÞ);D|\<Wr։}Τh"+)SR IW|y۟Md>PX?e?L̀!٠A9ܱ:nÍ^l&p78tv7A<h0f
%j<j׳ Hz-g;XOgNv[iNrQ`]gL?g^zm6JcB
8i]*qcuWK.A3Twkn[0w?;X|9*jhooH`z={*I3׈]2+~6c0}oqq"TyQuL cQl}iE֣=
{tQq'v+3FtL7Z˵f=)::wlc8|ےzS
vm_W\TsEqӏUu"!'*Fq~cnɕp $j&#/3iؕ~U~ZYjݻ#Cڣfmfa"/MpdGI[ˁ=5y
ogЬ%Wp-9UʿtS`z]h	=qbseiV}W]Un\rx9Cջ9`8-iVЩ
6ĮI觨KB{	%A0{9PVl"Rw`*Y@X w%VSs*&=yS KxS)<(w.
CChTW:D4	'Yӫu*B1\g;)4Ca:Mf
ҽ]ȵK7rq})o
PMLpMdv)@5&K39@rї%v/nFćHudH҉!sԮѸ
:Չ#! {b?+ .9 4!IpVIѥhJu*aQ~mQ}Ê`:_Q>ASkNSA\6TCz*rgH9t8(x8a#Yȷ-ދsƕ)9>}5|bnWmvo7t֎"XufErڧqk ~~<7tyGv*^?)	1jS]/Uixt9z]V;zJ_q^ؚ.T.2S[7|17hAx.ùj\u
]uL{X&ڸ}nfFAhkZMj>?2_r1V<wP7^$fgcO\O;ZTg4=Obw:_hVQJar)Fe2*gU_2Cv~{~3uU \!myTv:?:pp
Jq-'׭
5QN nĠR|ҜVD<<|aZ55\p7>A*့sJ #kV]
<)NP$ֻyW:(tL>{,)D6Kzx/z4.v)E/IEVUU-M-}33 q\_pa@`.'UbRS'5c\N
,+iU}kh=~<{A]X:q`j
爵O"hw=#?$)߯VQUv}ps]{ 4<Z>͔WD}G͛|!t\{*09IrJ	rKW7VU _-vԜ\$mH@иfOf.y<h400s
RVۘxz(@4sekߜF}-QѦv~r$>*K2om]jI?AoGL}f??q۶"WsKms	}Yy
7`b45Oȧ+cܭYkOA5x=KԒ섃Oj*di\bE_T?R<ڦf1[J" x9y<=\ps8ڏlN)Oq\7I<TQj:DSS>+
qs L7HTHY;!9(x_ 8+IM)⿺C4&\ӄ\lQ1ߵ5LƜiu
T;x]6k-@]?Y;Jr(h/e y6O5F|=VH=\JT{d`غ6M#aֆoRE.Snqqr$OkLEo@>yf/D9c d=5ȄKN^`voo㈷bXCpw7i}A_:D@JRgFVo;D!¨쬲/<GPU8D2K+9RPz*mݓ6.E6<e}B: Ի,qZuoVo](E61ķSWqՑp$IJw%ojl,'+!/^YGr4fr{ѵBٮt?wٷ  j@{:8(\7ejWY8>PAdFUe&9Mb}攷kieBTyүw#ep;:PW՞D=P, 81ͻ^qXAO,k8mj4P|ˉ@AfUҕc>H\$ 5*YW.^K<}Ϯ<MՖ~VxjRvW_!Ѥhޜ83#ʳt#c~ȵP`*UW}_J16 `G8Pl	RUUch/MU;3@xpYc]Z;zwre
\1
m;2L)NVVՍTi>{$KrρK㷳{zsC'Gm>N8_(x4򃱃r?_H5& ÈYuݪ9h[zQ0`5EO3%Kx
\xЭw(OFZ뀂V$ב⵿1X/xjOn:o%x$Hx]>!arU?JmW5Y9yu[[hX&:5@Xdk[z+::)(d<UЀv)(v[4ܭת}bTTbێ{܂⋂%A.Wz<KY6\L901\CjS#6
JdWOex\2aMu.W	ف*~XA,
xzaJ:d
@@dE.A:>JoJ1iqzyjQHz\傻?<ڿ"*<nvZݹՈoḤds|5c!tW#IW8HQFJgn&gה~^s rދ]VNB4Ŋ u6pMy;Z ]Ƨ+Ӱ
*bjgE-j}b'X-e%=`[phy٪Cry k䊑سGN:6ԥpds*%EX'ЪGse% 8귿$
۫^y'%G@s'Ln÷RNP!" H:}?;7 
jh3zh.磗RCS<|Tpܠ[6 PV)K${[TTdf׿4%$uBCw)x*wE
lDwp vTu:hϫ%0a<yAGlrWDs`'MSluQ-6	x+VG|BSrOh
,`8n{u
"Vr8+\Qk;](y1<`Pۖ߽>mDE-J`U;yF@|)%v/t~snm9%!8-@zLٮcŚ:WLǶJE4,F,t]Kj\{/." [^轆qWgwCa^ԴUe:fCn:	oWTYr!iKZ
&ӧYe)xUJ	`~,w'Ösl*[D,RC젪܈wHٓ[fMyY`̋dx4uώ3&`*WBB[I\W/G2	S/15Is<~#I}%:M8sTآUbdrhgџVazxzGem,t>Ko;{O{~
O?׵c$:w0~RڃhY@^\Dw	<隳u9[y4f
GsoȽ	 1pnf^< *n[Ws硻F`j)cs9e6uzL$Z
gfd]-N$.TmsSA4o}ItpIKWHH^#.sj\xՉw
Hotkx-@^x]
9.N?-<Aj߻i={!{Cuۯh	zW'p*էꦶin}ɏV5Dƣ(	 v[i;Ep{mj
8:ԬܡG)K\JB`9ML3Vy5
r#.WQIxr|}v:R\BaDQ/TnSp}
<5)ϟ|>U)Z,@aP$`O:[aE0UujgSndE$D??_a ->grӍ3!Xiim;8Χ+
}V?+np#n7[b@wt-;lFCwlxgJI9
h9
<py$x{U\9\Yz-\A_y4vm|l}۶rFflEJPt;I("bO+1{ÞEv¼<:9[M-a,Wox.'u}L8EpWt:߀1u_7
otb9 LRgRg(	1a[E4 6}2\?ɧK̯͚DE1̡΅N@¾G)yy[v$6 [eܸå|E8nzia6Gߏ364;/w,Ȯk]\"cm
8TaP.;CP8R
6a4&_Anφf8ȩ߉
D
_ {s;J#ȫRwá>:^y	
?.dt4Z[2>7P`'`]pA2&J)_}U-rп~vUꥨZVVլ*sfɕMjF%m |tA#>bWVNEo`dxҚI=>g\I2QjY1W? w/FiYӉ4:c[T/J^;<M[0׋K[EGI5Be}*=t,KafT<m<Ȣ8ylpw\?HFn,}*Wwy 1v~=u
MuCb=]H[в[c d͹>AW.
)EgJDIofV9炅2ܶzƩXJ"'%sN?]uӷtݛ_z4)M.mױjp`p|ҹxm\m0.qrN[pJ&+|__gpwc +ܔm.Vܪr@Bk+<l
\N?_Ѡt+yB׏K }]7p­_*b[sTRTG-|Hw]
Q>.L)u!PTlp]=p\iU6-+$hl߬Bp78vauku+IΚ{Mqkd5$rvvQdnғk /}uek
6"x7/[CorԦM^>s
tnC6jP2nx*aOppU>]MDrL#%>UL؎V8#%=	 1 <
n%J}t3_K.qaʿdN~5OhrA*(n]T5=/5)isݖ,v{5ͱHڒ=Ef@d-gmM${f*NvNq0jJk<?-Jg\jDEGؒBzM$8,92~Kn\ȵAbbP
(>i|FBg.]YNyK/qYRy&Of$栁>De"\IF憊 .Ȓch	:#8<~ɜ;gEh*?
@MVcj	n+i 8nPq|0_}pW
||lu \t]4F8.	^	Us_ਰ#4{][)C訶Thw3NlmC-y-_2S 
N`/6Y@Hd.T(|9_O!c
S6]XM&-Bw=,ͭ
>AU4uRW5T<2}dNb%O2]G9-s2} #-ib2yB$\jQD	P6&;ڴ/WAyy`|~땵qוFXB#l+ͩZW3g@(#ӛ$H0=
ԸRc/'
tM {xBzz|P[xLu@\yy=j[T
>Tޗ
FoQUD<o?pgygؓ	ۆ7`E9$E-vDHP륐)GzT,q<X
V0:4s!	DhZpAYMG>[
J̫:2+N紸
H:qx׵Vle4k[q}j&p<fӉ^r>9MΆbocCEt3pQ,[WUrΉ !9]j		1UU?O%,A,cVC
AY`;>RqH;`X	7}{A#!(Cl	M[rW^nn  %;(uMh w`aoQgO7ar ֎;)[%EfOd<90=ySCSm^#EDrT ;\{i\;I
mݼ#NPJ"6+ݼjt
Oy`96s6ڃV:B$Uy0S;J&qi5hHx2A˲PN'k9T1̚l.=0i\ :̙zv}/ݏ[q=y0}*I=MNꬆ.[-u|̦倫p\})ox-~;ҡo~h86	Q7wyYGi@3uZdCt7cs)`;kWv5W'֫"m6M廇>LkNhz`E7(7pCEP
Ab;Va"rg~Cpv>4OWR?*胈@m!
8Q 7(aQ1Sd< yDU0(oNSn:bu[>`gE7@^g	}Z
 <~5|G+UEU;-@(MяZ8y1rxqC=^Z}'(n(>/
\d7f<fl/$,HB$x~Z$kn`f%{9z1(âQϞ#Ty )v&W\>PLMdT@6ןX(AC?FuĹA2"`vG.l	(Z_#NS~sMT~Yˑ'4(
pY~o*d+ڍn>Dkg@7=n,wb5y<%"s|
<ub
`xzT,[
ȂNˁg{ʯ鮭Wt4K1EnT;
w=]o|@^;I.WdZzv
qZ2h9evjCaaqplsYQ@^
Nd71^s\2J}C-fiۚK229ou}*>$hnw߬|Ց;=\p:e`(Նr	4bK.āx+JXbvK"I&aN-ϣu%%YdҐp#L&i^y4BnZt?~| ?c]+N$;V@R6>"ieufηΉ:	YyR()L+!aUj>BO=>3 Ʃ)-$lh'+(^Te[1f$"`0vUV\C#inZ׏A'@+cG3Ӎ<fP*dO-'v
kcL#Hqiy@xmCUP뙪[س*v܅<ta#9,UgVR"m%GǅaC:-G8cfՁamo`|%&8uWDL\h2V;yp|?yz2i΀lmp~;
Ȼ#9&awX{4ܥ1{lu['&R,jm	"5/
u?A]"`[h\~FgwW
KeCEvKhZL$ q+kP~G6>dtTӇI]Y9ȟKs =G&Il
0+jUte;r$uC+3=3:{X鐡u˶=e&Ep^up\+&>V&Y.[_a
#ۑT5-b,{/9PۭEkcN
%]!:zΟN!3ɕ	m16IQPҭ/+2<si@lkw	#и u!;!᷅\WыȲ&%3N7/;D9)X*j5ZM#0
U?e xX/ǜ6g;.<U6˕3B>}*(톥_h578Ңs^$ϏX,3\0jS݉s:Z>H
f*`>.tBI@oۘ%#duuڬ~3A 唈F4Z;Ai'~fRЫk	ki;UAk$f.$8v镡#^
ܡts09fgC-/RԌ@}KusrGOb?J
Rk dcy%JQJ)3H>~IΣ}|Jw`9D>Ȟ6اPsa2z0rO''3*'K80dĥ3{ίnaS.,B( ݚaNȶ\JUFY)`I	Ok;.\ a$Csl@[ȣu5,ԘAlC m6Tԭ>.w~8'~Tow+\VrhFܭd-99[-9ټ
yO*eIF,~kDF)Urc;2!zG4U=mg%GfI1#kY%ZpSXs6R@跆2dm9JSv/Ks0HV9mUP-e8~р1DW֍^v <{.[o-yu
"iM<!v5-
S[H+
W{hM]o]aJdi9(_r,0)XH:I}xf 䧫jpܣ9S$q*#Q[MXǅB\@-6Afq5.`{OL/O]uG8dq,S>q6eI&\g.Ź*lUBpki"=.PsўqjΉ5ogffv*L@oP؄ObMLVwFJRREV[Phco9ϹN ]lڒ33*`4\ɝcO%soME\>=K6s/_#)9赺\[[vgIAdę'7ړ#WCGtmɻtu,#}&A3]S%O.UX $|3
јIboq]ԲG@<I#e'ڨv+
LKR vQ{x xP
\	P{)^U # :qTWZ/W/,
uG.y{޺}dcx7k:ad]	"D:m)VkiEHK~S6DWʼ<{͹Og;_/|82!-h7DC L
wl,<^红2gܡCQs&>PU5n[Rι%8u$E~u7
rZG,įϦVGՐYe'7BqVӂAybK]'0˦zZËk5V6} D_:UłK0ڶ0{Ň
{_KOߨH|r
P{AU dB&A3l>7}nGYQ<5(P_:A
*E¯}l!B<C
o"9=^G;	
\|M.I5xk<LkT4$u{8i7NWSY*̠3tz6PDko^Yb;n:r~IA޿#ohK.JߠQ9EJ=ۡnja,7vәE~`[4uuZ; o+0(`²2_O͕fp+ࢢYﰬ[;T_-f/ۚutѩ;6etZ4
T7![-a*%L> mEUVq#d55
sg7o}wMSl7A+UCL׶dśKRͭ4 7Р@vkդ}/H(~k\.g
^TwEzD\.}%4Ѩ%urZETTc6nbgEv'!kK(!-s+@(n'јG["]Ϋ񯓡6ZPQ[ 0%y%Dv}}Dp)4%@,IB@_5zRs_-ǑFM6UɌ	
9=z}zTCqF1jo;KR|c,ȜwWmXsjw>hRi?W3p`M~~ﻼYTn:i!
Ys$	~/xų~\O+(?aͺ^J(4<|ȿTw%Z.&9 \¡q'} ^g Ս\1l4䗀lN|gy8ZhtQ_%JfR `*<ϔEP%#l
OIU@bEZ3ZʦvRL
%
 n;
pB.T"\5TΉq\|N92D<Ey/'(xҟ)YsHhdֽAĔPBMPǐ@c̜~~pUdqu
kB<KpIV̱>4Qޣ[s.(֫|89}yx( >[4ND-vcaezUN
wpd~|-nפƌC O1wIub*KRu7#[vq1ܶdwvG5ԉW:g_6ھ>q~86y62PҮ]r+ߠ#d0X5P[ѨuV/g6wxpCU}~MMJbq RΙYiJT܏ٛm
ҶVi87>Z⟻￙O{Z9	D(3p%gFE n-U%;|!# 
bJM2A8xHLXauCu'PIds<72Cv/7 zڄM+:̩Kz 8fo\߽
p
LP[VGaANsQKFJ'	kɉq
>[y`ujd^y<!EEW<젫=r (]Sv,i%͕0ߗ<[LĤ Y: Vu-8vlQL잹|V<snk)*'I ۬q,6z2= ^2C@ Whk
M ~|:1w\.\TurPiEIXMZ$v!^<wM%:²*)SSED26׷?td7r.(PT2GE,
QMKދlh 6'础zsP}|N0 VF⭫_?ygY!h#U߱"1HqHa
>8t_ͱKЋu5Ym^%|^\Vqu\
TY]`s9k"]5F,\ߢp$Og:P-'Ҭ&Upէ	i~-W'gܑ]mod2DҲȧ
TݺrD'- X۩mej]S ./ߖ׼T]b;:\tpn`{:
קw
5M
FT7d3}!(6#X8]zK@`Qr)-ԤNv7.CݥMaZx }T~tHk"XQkKǞi_><pJO(NB/b<y
c\XA.w#`.n@vOȧ@~2y~
GXrm6^$Kkp*;
0ݧ>+ ׭O)VE[_͖C)v.9sJpaiBclnQM~%%4J4¯=JZؤ_rL߼;ROF'P+ies#h|pWkR@5&}-@;y
)㴱MvjWi};<+N*e);Ņˊ<%
Wա>c7PG{8:,rKIt54j"58$]DJE{%:eG#[&!:<lME-l%s$⫦]_8Q>R]K SОd Impn顑>=`h<,wSv
A̕$"r {[8B[n˭yNn`7)aC-_I,tLz/AFN)0>~"6ո`I4aNR:x+I3gG\Md*pKDR]T2i ^lKAq#qk	>Ec
_۪pyMUwiN*_#e:O,p!b1xFe24Fmv[%6=x&Gn۝SKM`+aN5%؏uT?Fa`rbHipbcUb@ާ1tY*|F,/d/ڭy>Gݷ/	[U,Z^cW!Y?qhcq6X ߜW
jp)Y2HO["RL+y*o?ZTk/A*g*j4mkxKZdQɸSƋ)U?yԎ6Z!|<&-r5hN} 
.''Z91NN-)K a{T=p]nQқ-
#r36.Z!8LB[,aYu8~]BP7Pˋhh{<>eAg:zA
_H2	߄\_@
!xȖ%L	N1Rdz§^.g3@KC| $нm^~k+Y>afG_HyuOQ3zȚ.qk]S܃kzr=@p]{OvR+GUaX/FShQ;U'^f
g=`	kw4oUObl,$'uʭ/Qe(\Ŵ_UfKUKbH_.nYȴ'tM1◠0/h:ս}3]`y`~ne8dâ!dwc5sU
<SycRxʎ?Wב0.䬏k'ǞgllBDbD@!%rU[/ Fk±j"hےbbn_>].
5)`C
Ev[`~  
pnz@uX@_O<F!
Ħ[
3@PiN!A:ta~µ{Aw~7g
N}(fͮf9Ԛ[.f3_	a{-'->9X_I˲&Ϯ.J
wD𼶋6WLg|Ǉ\Oy8l!I##W}yrf?up1MЗ׏=Aq
i+뾫PTiy>e,IG􏿜D
r@fn0 ʂABCUBG6*h[9
A5 xLN
.{{>m^-@=P
(6Tqv.<c.vImDU
FyDM.'Gkw_QCBs,%O.#8uqYk{Z؜1$log+,UgHI5R:eU8*|HU(/xjTn5CzA[Zu^L9C(ǥ:jnR \UVVt-lug!E Hczs/CTDnڱzz\j=BL&z8ASC~y&dBaJ`u3XmT5B0jxt-pGOb՞[tϓ#RN>Ǹ't~Tn(h@[uײ7wʣt^$KUTsYbMGg
4]8KLjV䢒ͯ|z(NB@ZVnr
]P8J`Um$+5fϴf?_K	N:h@POV0kyڥEM:on(;RnE}}XS%?'	%׬%ƄD
&R{=lv.I6XPNЅ\p2(VMܔ2+I{â.BVe`yQU2	bIͤUGif^yqܺQsnDq9u |I'%VV7qJƧZ>ʽ	/D0RH
*uhRr"RՏ8V9_#y]|*,c+s⺌YA.US<rfrX.2zZwS_ W4*Gt k궥]x
	Uwv;UWq1d&	&N{^URk=1+v} ĵS5?*Xuydanw20X Llu?М0l\3NݿwGT02=kzb9n5e	Wi!\QsTPGH@m1wj6icxI_>'\H ;΄,vGp~,|włb^ NI Un= 0
D3ײs1<n	ױɛ{eftu)"De7YYM-]ܿ*~4e_[m'$pɂ
b#CgҝRQZ[Wyt]z-:q_]h N}GIMxid:w%Ty
UZbvgۯ5s^97]'%.wݍ JFmY9rB~(Qdl4T	a$xcCM2}Bל DORpǵ'7_
E-Ɋ6Y9m>i__W6ERIR0
?dJUތZHG7]]T1*Ào}R_JTU#:(w\wiKjF`;h`!Ǡe=whPuY?߫RqG/G XP/:$Rٗßp8;= 
ְ}=o[=jq`\$J8rQ؝ŪYbJ<]M\V~Bvpug9^j_<LI N^Q`9 4aQ	kZe}/LhC+e	<82cc~'F IV}6;_"NM ̲LVzTK
bίo+{/i~=DV~=2g;N}#r]<Q	/Kbv:
*0h8n:kB/(}qs|J+@jUV.cY'rx`5_.ZM͜l<I !)Lwݳ&V4?Uh*nCrh=.OXv<Xd%s//njV=~Q 7^P~m#bRf֫lqN
&c7R1PF>? nF@nneU'BqHʌ0D"%gfoE *gq )
Oiɭ?.|S^5#kPl9Է)z!<r%;+1ߟ(K|XBh!^[&udرޝvxd(C1\vDۥfmC7r8*nlVjk3:om|0sro	@¯2mLxi >yC~w% O=S75ZSt;M}d=(Wsڋ4>|(VDGЭkq|=*׬~[U>әeI#vC 1ĸ%pwuUf	 `hi>RUS-Xؽhޚnh0=3V/P02[~ !^t;$ iTLv6\Ii</0V9g0RZH@0Vyhf70?\zվsu+iX[YT{wa"x  2쥴|Ps%|Ӭt̙Ǹ[)"IrMkՎ?jSq/@܋v  XIғ)EJJ<%=_~C3[e	J	`EUu_rf8nol-!vv)M%ۍ-67nm¬6-#{zs6પvDdeZܢ{8i&I>/ӢXtcΪ?PE(TT¯vn>~$)舽3#K{tg&E5Sʡb~6Up*Ɨ#BF]~	T6asq\U]reӿ^'/G?$E-J*>yo@ėT<nuL|N]d3HեWc"YضCUqŭ7yQr@'M/=nrNHͿ:L&Ws?HaZ=|uPzRǈcuRm~`SΙb&haq%Nr݈@OYR\њdDs2:VTAƣ4wqYwc@$2\v	>0Vډ
ΞKbpqE;¸dvr%)*, GPBrI='I0&bfBOű2_L^q90:*KNO	@_~;1; Be3:l>SWٸ%my~ȸKl:ss
1>Dg&V	w~Mitkåp4MλS{<PcD
,+
DXJNߚ{g5}B܁piWڇyVwh:̜\6$ȒֈO5583GWl
:ӯ{oiq[%پz7 4} i+`[$5x-<׋J`	VI-&9:l.5Ss p]3w:\x;wł*ъmfͽ߯zcoL*X&hS/B_,e^酳@ZN,we[
ptǣH⮨n3,퀂4ʨsVIVMSZ㖶K.
.6Fl2\[wtA(FױŹ^ R+0y<P:`ǯ>ߖ{V~?l	7mYMeXש;gfCp5~s	,<o}A8[N2Ѵ&Y6խ
d{ڿC+f'Tܑ	ʵ$tf}CR
"))m\ǿYWj+7MsXC-L'kf</HVirW 6G{jI78}q3:}:+@~L4u3{i^\TgNy`L0Is[f
}m󋪮nUC>g'`ǣ́>[,I-{um9U{_j\5T
"E7NRÿ?&+9f_NK#Tm&O'>w%ʍr)V΢õtym6F8&ML*?÷lFkH+ISFh}ޝVȴbmZ<>
[(BRg2j5tY{]~R8 ;_=t+}zZoƚms(hDhѰiG!v {2
p1:Wnu(llNrԋo_8;A.jzT6Ae;o\o*=1
懭l"XD]bre(	^ڲl;=7	;]H'5b5 x90rp{h|U\R?wh: j(uV)ȢWXBLhrd[17_Sox]9\wuV!(O>:(څ(I҂9Z%q	8FiߘtPpM+[l!W)k7FyD
 -_V6<ZFVbY=w +<~IP~g bGsr4T*uHtV-0Ѫ5+8rjfAiج/h%mߜ*j3Q=\@+9E?UjWKHK6s؏."Lҷ:ޢU6q8q%
iY^clI8#
@0E(jCXDQ6]cM'd~y&kWOф*hZ|]`5ې'گY(c}_
J;'m%ېjsqt(@pHJ^Z+8ӶuG7"çEA6*Cs)fLI|s+Iv4$/'Du'df
 7^:s*-%\0[qi9jN	y(
@K7o	,}NMS lU[21Bn6u>ͷll]'z֠QS謓*sƹr0T%
ǽo=*+[+!VǱvҨGܲ;-BrFgA峡|uoHm[r.ACLgM͊e9av~ [QQpp8x*$NJBdcu?EB[䑯@vӠ0ɭTEͲVzIm~pmW/MZSP߹(`xgjL JQ̓!0
IVȦQdW	#l$F4Ykyn%,%|;UxҞ`$pn{~242CTt1W?^]&hu?"K#k_-z\0V~ʼkpѵ{@srw7oB
$3>[a% ~RRN|^<t-뫭zf0]ky|
QjdRrBuѡ1+KpW-~cR Uyo\2)Gc0>bQK:~ L(Nz, ibtERяyjx>Q&["׫yjJ^H&$bva#|u$FZEO[B0^_$T KUwa#_麦!7N_n7^%	~86ŽגR `b_OߏHBdgG"yPl\	?ͮiN 
Ջ]Ǯf|3RגtWS(V1$o]s)sR7nE EV|pb_Gh 9shh/~-xứO@ELVBsC`Lz56
gG9:dt @R}7Ǹe-ШbG4y_&tDsY߼%wdGn[\,	P&]FtS[t]<rF#9$4>[ogm1JL=|Jx0jXVmqw;0fnG:Yd%ދ2 //"yZQC^$膇]]U$3]jMce Z3ͯD%.6O8-G慾cdÎW'>Y*N4Ulp`9Зodvh!8j<BNj:획[QFaC|!g";W}W'+vӆɃ.UnjN"o5sh*$ټS5帠yT8R7oe_	"nL_vk@x|8+"3
WӊȦ}mX6~؄ZrMZPS2Y48z=HM8ݔql9S8@(|++b |/Xw[Q^G$r sa#=	K'LL6fU>Z3}0p]\^w6 $ɋp_
VQ+
	;e*#:nR䍗_e5,gebDW7Doźr l-7Herg5!<3o^]<>ݐZ0jdz;Knǩ2%o67>k1Y#{uUl>B~؍nD{>4GT	IRtPT\O>\H\XG \^vl|pRg^嶒Å+*.XSw*6q7<Q8_v3!_E"	v,jt,i婟8"}`s8:>Fx :l<-9泧+`d=c\%ú {W3ҴFs>
R_1jN8DuP|)+\ӷϭuy0g7@mwH7\rz'`=D
lno;9JQtV4mMށ dA$;d}/_c˙" ~Ns!,lE<48|ȱR7l~Ĕ<~COPOS4pī&Gals(4~I
pCo%SpAYQy">£ʫ1n"+p3X-8F,]Ԯv)gK"7ik䫓^)w֍ة""YbB`yK}mOFׂ~W{d-ΧnN{LKf'%92M
ꑮ,7<CR) 5|d>O^] lal@X1s~;!)ġnvB yǾswe(Xə:z.Rݺ9ስ mޝ PzC0y]MU=m׼;Pi'Q`lc9a+K'^CMQW?CgVOOW=akpՔ@$v43Yɛ*JۇoIZupC+&#pK-akLXOW^*O.Ra E{}2i`Fķ=z(+mÍ8N@i*jHXqIG#ùH8-q9g-_?$rWr\moGKE;X}tVitZ`hܭhsA'=wr%hڋϺZ7l'FIKE`8nsI.뚮^|)xm#~_T
g5v!{R&C
nGmz+u
jNnԟӝeU
]y'F;ޅwX4m:c;Dђ,8}6q7/xEq>ByeцJVO=׏/݌yCUOInU9t01kp醬6O))ytUlGuAc!BLhɥ8k1	ɶϽ8NQ-ܴП3KoxdJ-XHHvQmt<5iQ[:Sܖ:{:%J3*49T*BMK=(mFIKm.]XΟz5`^GzG;t&  j_F9-N[k'P
iiǧDa1{>><Gk&⬇6*i"N]<Mw5*ρ>^
վvL{OQL7\s,<ߞIvk;9޲{x=ֵT'Ydcyu{(V>)6tg@h!t{k
x&Фu[#[E9N?3o u!4ʭ j;H@4Ãd([jI~HalaDN«$
&:_$k8?SкAmUnSW7xN?IJܖbe;rDZj
SݾpT_ѥ΢&ǖΤ,	>ptF܊mm ˝f%8\R
cikg=ڝa\a(dEc{Dũ<=1] & fr 5gÎ1b>gB^1Q,s8<|u~TOpK9tϝsՑ:+y\UYt'oKr$ك"~c%gZ:s'4DHuV?ΒUࠁx[IK~"t?*[m,>wlSA\n Dn!/hѓ?tg&b8 ঺`	8r]< 9*^<<
QTCE	w^.,:l{ Ct9NFϫ%a]
#08|ȧ8˦?}U*wX.D;FQ;gКt>nm<sԮ)$x\ۀ/Np
vhq;[$#y]EԦ9_;10syfrHqYȴsl|qҴԵM;I8!NĶ
=k.ҫc1uUj2|C:6nwq럮umruEEzs=cM׹, &> Qᇮ$JJO&R}'%GrV-ݙy^ng+MI ´4h/cU
7n9z`p E.e{&3{-uwybS2aۨ-Kc4Ps_oGT(A!u
F62xU8;(n )}7Zq	&qYgi:^qrU\
r8ppM暥Z-,\\tÂQ
M&`sl\a[NN
!(ӵ9j#PΕnX>W6tɂq8;Tz-AY5LY!r~8zǘ/F~HjS\K,D!!Od<nT_)*E}|R|ΰY"%0VA!}iH4ԖL:k.ۣERR
qGϨ0>WY5;	xU5~ ZV}
dO||!M4>r+kǷ vV9ۢ 
7Jr.CMߔm"y\:uY/F W]fj9;g# mBWttIaX:>Qx0ofVˇQl_R$9t7LSWM.-VAD8KL,T#wqi봑+*5e5[]ÇQ4 VcXR(O[{:
=7k
K#P bMpMvkqS5j{dkEn%G<4as;/8^̱3NAVgNU]rJkcwk@B4
gƱ+Hm{tƝȀ4@(&ByS:Ϛ80@kgJ'cV:eG?ߟWG ۅsRca;9{<E;.>߂qNWAfpAZz=L]J7#\seCk]9s%.5r\Zgb=%xjHGIvg+NpArԎSGӞ7.)l93m̡#t<	 {B5caRFqz__'ZnOeȖx騙QH
ۢQU v+L лD1FR,- l%ӕ֏pܗeΥ(x|x=nHωukHkʔۀv!1O~؇k;]7I7}YYAN҉tZ:vtrnAEp9I>V{UՅ6+m4tضͩGuO*^RrpLy2|[95KfA%Nk| 𲃱.[Qv	_"}K?%=N'`0L}ɤQxXU&w_tR{V%
D8PՉkXT`+G[˯ʐ>Ky}k k'A@
w@l(a$K鶹92Ԫ7Am%Ei<6"63Zegy<I1VT{`|рs.¬d@^UF3/3G<R`HuMznqqhpB󒴊S~ӥxrsN8ɪ>=iVxuN
]V}Zqc7gb_&p	n u彩rMD.ŀxU$a|{1b7X/iZSߥ`ـǪd(|kkw,x,#pogHTR=\ɗ-ցTc̣O%'k9U1Up*mEu&pT_q
܊R9"0FEb4}D"`.O^ Iå_v.PezGvuN}Ǚ<Yko#>9!:4V\0J$)j|"t;:bYPY?} ,SN(o!8[}͝A6lr1r)7BW/(tmWԳ
_D֣/ﰃ;-#hM*8"jŝ#o+d?$tD!ܓorBW,GnzC+	ag?`ICXV>.|)7~hrI֯&}PA=yavMJ	Nuvnv/Ԩ/8tQYV:~'m߳憽
O`-=4LzQ
fLyPtY4ЯmzUǿ2TjW:MQu'^ ! 趯S6)/3pisGUVUL/Rb駡)-(߸Us%vwJMFc `j Il WvZ4th͡ݦQ[I7
f`OmEޖKpAbte!JHߌ/4-:t_,!˄o¥[Įl4*$f/ۊץÍ>!iVٺJ(e5;u jYJI:+1 -qڒioh#Mml^n$ OSjKhuuO
)mС{
]@	) uo3p,^U R겓7:6Ɇ
Eg
qC;"ފ^r%ϳi\5xEQ[\d֠_Ơ5R\X}.]c{+!QJ/ye8<~pf9d[>
mKI OR0_|rzz<5xՄ
5 p!O.gi"(YIE-̊-Ix|k;ؠw N*?Cv+T!HdV1ѻm>~Wܠ(qCFk}B	@}9Z֪+Ծ.qYd?(<4]5BXׂ"o	:L_7g%EP麂9ܢ֮kZcEIKG%n>˚sb 4tJg'\Օ9u_R	p48x GyV%>-Wi&7pv@
tFLh2mɈ3rPnʣ0(g-Fe0Rfwmչ\[:pؾb-y|˛5[9HA-1f\E/:2zJPjp!>FS[p$Sm;fLnhvuK&mvyޖ$Zv#F58Y|=v[⤎5&+i//fX-
DT{[#i^pd7-ݸ|HGF(*aDc>|e+0ÜV;c)XpuI4%)eTiԟKykYҙ9w^[1n#%YIO:|`qutg$̄hWM~(֕xQ$䗻T#J?<6eT]֒Q̚,8ͣ,~MxyφX4\f.>5ua~n]y[xU[f]G
Vc
M5Wno*DΈS*aiOyMǦp\!n\|>G.$X(G	 6	
,jUV\]8G
"\Iwȉ{*g{qmEL8>:97},ͫ-BkYY>L?e29{UzD([F]zZNEu!#>
׽I>㬈zyk3&{l}]OD򄣠װe9IPKptL[ZE\jȧ*)
<禴Ġޟ*˙U
WTdf(G~"+bzҾy3o;*1m)u.ˤh7YÓ{FL^訬ͶEMtpp_.a{]<A\6jwtx@-yQ1SmW%jAAl/8{9p4{
und9Kjx--H܊}q;smxAZ Wr]JHfn=V	p 6s50t[.TwQwߎ7<6oWB@4T3xa6|<p҈۩ArQOGksd vwVyɣ ԔqŘ}}gvN[Y>Vrt 4}z_kϡ
1gԪwpFT$"eZl/$΀¾əmzz
A2kͥy~3[=sBuj+qӻZ)>N`80쎾|Ỿ'B$î|}s'Z
L=I9)Vz+sÖp_uc>GT_͓lħu2bdS8G"RvI\sQzDF6{<y3!	3MDCs\y
R
S/AK7ӫ7#WJQM??NwĮ=߅.>)qߚ(Egl=MszF@-%]S\Sl\ɺz7uހ=Is/;q3
܊$ևq;4=*P"{7o
R	g2cۧt<	Z ^MMgAåJ\nظkrCI[	7.~s')Ub',	$JpFR\~:$3xv!:[5ImnqF:+ p9h2Ircv[Z֭5wu`Lcg/{$`E$@䆝HDy*j=92|*<VFPV;n~^K5yFD[)s
.2ǡ?[tu+D֨=w~:U<t:gZD?\?9Rwn3>uG
O&}%5+9c3Aھ6𤢰x.RͫF+G%?:;Hf"&55{ժT7\ ]-WkfsՓ}M&m+wM N"&.e5Ώe
y1}5s	TwWsᮕS~OIy%]c7M3(V<,zq[<ߩGb\:Ý8C6l#TpyQ2P=WaK"۵b&${NqP:FD2Bv\%~D\qx])w9"pAi}dtHԒ({-
 26:\
lsj|GS[JGeg9_:\lI:yķO6^ZKIvG_z=rXV|=JP(n	i/A}m}gG&l(pbqǇ32o1eWB󱮵$ؾGkKk.E.)l{oYgnU .̢@15T/z}?s#4nX~Ip`r>
Q$$ރO)hZo]N{ YsxR	
e<'qj/c8pcn]KZaE\MںƄR^m)lJ}jWXG5r0hḯ@jjX;\	ݡfE@ 
iR3y&9{d}K> l5p	$ ~:zpIvvKy<qQ@)nK@f$Kp[% G\-Aٕk,vY9iFws>П>6_-|E"iwqк\W$gܟ÷Om\ASmڮNTt(QdCmNH"ًiJtrH龢w,)1`1v/M՗b`tZ<7kbbPzErqzvSe-ǅ4k<%@L,W4JQf	 EMYX7Uck1>@-ip	lQ&|TL$W܏:?qw[~^q'
yi@]iBEB`ruFI[S)r9Y<lX|W<fIpF7U'+e'1u&;vO(gޣ*A~
Ak<.|a4fUIMM5U{WGt	9S6I͎j"B YHWTl,̐c=nfٯa؝yUI!T:l*|Juu]:d$"4[zm,/WHm#l]gOM~s٭}TuL=QQA(i6.BQTyATNv
@x+9ʣ=$G7)8 7J^kz ޕCF=AT+]'63-"Œ(ǲzU[15-C_W
J'=r4\D飽f;%;ڛ/n 
q'f7\f?Dp5G/I9q+waZ "#CdY<KcL=4&)yC+<~E9Yd2v%Z FM2.YGL_!O߇BϡӴw-i-BXr.˗/p"6ƳʟC5dWubX/U◖8n׻?WmO&:*wZNi]|m/h.Cc6fw@_"/W	bgcsQbXa+=\Eζ@.^QTO-21-vW:>ީŝ[tB[ΥO>R',~ʥ2գ}J*q` 2ӷ$28楍0
NFU^_u9
NIǬLS>E]n Q9[9ΎGazKz+0MN&ڋ=Ogkz=z-B'weR@nzjlYڬo+}|6>EQ|t}4_9A[/aD>[
[&Zo=?1xG҂{oQK("K1Sd$WWjuT.IU<^YEvR+xk]m{o|6. olT'y~;,	$B1܊\kS5C NX\0-;Svxqsl#lUقur%
k0Qh/7ny"ޮqY*׺WUtI8 7M¨d :-d0WiWtؘ&'ܶ8OOpPrՉbBVC2SNvNY͢dB `^Q	cudUY<mt&.W~ߏ5dDMb<fTNxEF,oa)6RuX	Ԧ]&Y(;(qKrcݚ0FonT^
X"J70[7"X<{+^%skۏ$0
BU򡏔(E~dyhNvH0\2g._s߯n_9U._unyF`0z( do%qBnʰ;ڔcGE}<8'H#d{tDVr(e87L.| -t`}R` mo~Pzv=27aR>Kr>9>N#,ЬYPqh]X0{TnSi~ןv-n!G ߧ,T 
,]|4<LSdDu]$6WwTY$f/:|[ylQaKiw[z,[;@W%pSh&uafBQ\\`h;7WFPA?PS#u:%LӨɯLrzsZ݀R$$M۹Fj6rFPެ$y?ƾ[>LjW $UR6Saۮn`)yr5:)sWX	RO}ذԕ)pEIcx[oV*Yj"#I	ǱԙwQr^Y4ٲv&
"J`\SZ59Оd2|[_G@#p\ 84kK]@[W(.<ɹpfz]tMn2+9m: |Bրu}FxƮ04L/q$xW_C޳cJfyũ>m]R^h@tKj}+ VE1{E戺~ {-xʧD&"?۟ʀ#4$}[jE?wԍQ
+//ؔartgU(Iqm-
qF\#s 5"헮ruFfE(wϐT󻝅tN9D
UxӜӉM~#CbUZ;k:w[t<&3+/g<	'|Kll<kjYE(0j$	;,;m7D{gc;):fQsP4+C Nշ5"%U%l p~;HY~RlIOlZm HTy*}1>+ =sE: KRgB?QAB%oNFvb^FH/qd XE7?ktk
|P
>=:
P3
Y>+9*ap$=&>N^U|jK)<\qFȿRlWQ
0%rϳٸu:I^Z@\Z|H(;.|ҹgu|}U#s	o(?$SNbǙz;s@4sZX->[z
Gݱ%j@."۝&oƿYBFۗyձ:nAeň|xBEltwώχp} m"Ccox?ǱrMM P<4wS$Z#Y!ΩW7٣$eEA<yN@
F{ַTl<	;%ĥЂ.&.-	|DYm1Qӷ8#50Fq\4PxhK:Lqܩ#IZoGiu
X*i3Ww9,RŒɵwLJQ[?N1)ѥq T]
I^wD[Aeur)WQq#S4[ *_AwueS@cWz,:Ü? `ƭ^tmp׫8byVuqKA=^zZaQ$,_ŬK#-"t9V&QZpE;C^8[=9>ށ:fы60HPeZo=\e!-LEN4VUN@HtޔU]v=,Px
'%|~\Sdbe>6U<o=J!QX@s-PsD6OOj{"G5AKeiD<f<鉶Sh>TR$l@)mf[X8-/|pI1v2S>n>. OGMpu?=1
q
+Z
x2p	1T	TmhY=\P|Bc[Xn}CT}$2THv~|bŬ`%Y9~ЧD*#Bܠ iii,YH%3ίtE~D[<'fJ%b{:wV\}NҺ>z-r<SwݪvwמqW
q*Q.W1Dv_oP.*7p-͝75><3ť;׭>6+ym^Jm2w T'2,v#Q<,O=>pSEYM]neASn
WM@>1$s{~	JF'EH)t-P[P+8A58vD+jp6GUѠt
1ywSv{M{X*Uڭ[»rL^+
thƲ2[6IV'\ͯ#ILΦ@>ED<:/fY'2lxDȧ3!Nw|4dr^:
^}4^Y$9Do#%:pD2 aVl 9baߑ%h:G~edUZ$[{¬+Ｄ<Fs>8N\=UN	46*وmLX,w5/
oAΘ# K-HRR{f>daAIM?◺Q\g;v:*nl!SeWI	 ߺ4?M1ʕ*?d	N9P	
640hДuߛ(%ܥ4pǑGF?dMrJ`Gu)νP(,9XJA_Q.gH$Rc
6Xݝ;To23 VV]Hc_	+P 8*@M>"jי,@n.j7^ᙟ`$r`RۼϖhRC@ԤW#/\:[%}kL^?~!]Q,bSXUl>6LkY%-Z6Kv6.nchk@"iݻeE o'>e$0 MSR<x
݀ 	(U9rȯr.-[,8WKQ޵Є'괸NyێU"rЏ_(O>pZ\/Q]^8+!NW[EP-%Ԩu#铛mb1GiDlx:yyqUh2Ww
J}m	SoP&n<J{9Rȿ~Y`f1+%LD}FmLC(TeNa{	pfG=;U])Uq|VwyE
pfl7_vPh]vx?
u$|%7izR
|)d<vDJmк7
ט5]h҄1
]rڋ
{p:mGgYVO}p<t )ۭ$uG ˮZη
GpF-.}QM9K!N?FึD`UªzU;P-[-Zk&=؇'ӑX/*ӫY26l1;ծא%+m_T@^_ve^.wÎxv:OA5Is٥j;/gI@=	qI,\F>:JV*EW٤ql-Ti]ۮS!94bГUZ	.+'bV?o^TNH
tAPb5bKƕ)Rqv7ђ:Tq$1w;tiand~vl"}	k$=i0>>:ܹ5r&[ $}A6IQ{w%4^̕dWJ/j3aM
լohy;:(@|},xMPpnY3΃-FeILX"9Sud]j)fgOo<@gHMk=!|:@\uHI-NR\ahI4v8ȉ9n5K1a8_.A	Ӛf5|5luc}Yd8ֲ%⯯]5L/I.tPRgS#4F-.ڶ$bHUF/U5i㵼gŝ+;VLv>2I{gBG6(%Aq9U~:ٲ7*6/){A~I+HC[OaIhL [[:]0:F$Ĝ(Zqf
)82-Rrp,vTĳ	s@[$+k[NrGJ0m󀞖T*kEbOب#/)UW*Ĵynמ~g^#h}y1~%Fu
_r=O=nUx$XXBq㯁yI5u9\нN}\P-Hw\.a=&3EW8SC}a>r&b2˅WFĜO
>~$,F
#.v`ZGyҥ91BA?MSY ڊAJp9dxw)}Uŷg?FH:~s.A͆Mz omo@Jpy!__,TYs14%;\nNC`'|}mɄ_QZO=rμ"Bsyx?'qqP&)fms⿒T_17)xq""sx'jT;Ra
B_֘#FVAQ悔cښ: r1Wr<.fDkd|0ЌрX\-.t}nG-_Lǩ
ZN@yu l.x
l'&j.͉=EXxYBYfQ,Y)92--i,$Wn%t3F¼*(@r:Y2z3sj* x<G/|.^\OsItrbr(gm\C1W"u{EׇFū*<\VYx@Zқt;/Z(! d=9ܱR=7yN	h~`0cخ~z~sP]QVNھaFv#CaZUW_TA]U瓼(~;k`C>ZORVxS+`Et_QTt!)45kyTQdBlyGMa ٗlSDNnWs,i!d2;4,LmMds#,]Udh
ain=Zxj}o%G6ȯRZA:t^Y[?/N
y9\iV!NSr䉰݈EM`YQ<Kg"Pv/ӮMr'b=~GG\U5J
_jA*.D\\%{/y*`ZZYF1HAZЮAsqs2ATAT5&%l'4j\E6@|(*3t7VDMy񔲺ăE&
5
)˓ꉽ9GwS>
;{
>pe7>J:Ni79H@G&RX9->5V%yh,:*jgs>G$Ƿ
'{d0|R}oYECK"Ay	(".i#3JK:^A7f?JeE#9M0!2_s#^x B2,'~hMo+]j\7Eiz2](PƛzxuēZ]|UM}y9ܸDQRRHOڼde
ӭ0NCNbQ7vCY0gDRhvB|N<3:u!*zʊWZ,k*?wkptn~]ݠ༄<\DҜU](.
skB$~rG܉w1{rxRVpՓ9Cp%]'Uq>B:  jn;ȭPZ6g'__.žK#<uiZ܊%Nꌧga
hTnzT緿? q9| Eu=Reߚ4F[gQo sS hrK:{no! ק<|#r9I>gQ'ݍӤ&:m^v䬒N)Yi} )e
81[>	(>ǽDE\߽c>yM-$@Â.8fX7'19=}m~-Xͥ<TsDBW#CTj%79p.T<G,dwWH
<(<e߬r5F$*Ua)͡w|t~׫mC^×4+=d%ϿjHl!MBMFy9,UO+:n
i\8@tS:e5qT :N5Wnrp]Nٿpo4{8O
V')glh/R"~7?_:RcMHy\Z9~?~SbgӞj\ 8Y/.<הR:w9-kmÑ3Ιtцˣtkhw$;jKL
 [:ɽ9rU>W59GϘLYd^B/b]R|NVL|EGk'j]>*/J=coۺv }>ubc wOrSaپqNqfSk4ZߞG
;d
IxؕcVQ?PBmҥjn ŕN44AXtX#L]T@0eT2@բRi<sq-*:@8c*
,#Y7n:ious<iݐkM֦D)ip^6@٭is%l%2O]iFsZsk2`O7l2vt@i~eq8 I=_>
>r׹zۭgĝD՘bvjUa65xA͙yyoK6t|
Z}\ %5J(yjA,}:|@>kԯؐ[oBr;W}V?Jv7u˰K\r6Myytp&)0EX$?=QrLPqLYƬxzv<1M{?7C+	+|t<ТY
}k_
x*Grk O^lT#i[ڍ.>!OUMi^;[îÁpLNNt}S-pϋ>K9`[=@ܸD(a:x;5 ԸY羰$8$"pOD=d+/W';2årXogS+.^_'$ _ݒ8ußNCqc|^wB'5JE US: IG؎|2'HEm#NG\ʑZ<ICj.9<jIUi
oQAO?n~/B&QH䭓[*{+5\D.G8ӧھ4@AF6%H^_sG(ʍRA\n+bmWֺbVU~sz&PQvdp'-3PTݽ\!
&.9a C@CJo0 b *S"1L-r>&W݀[̣{EYֳ+(
6W]RѽK.>\H;~Kjnه_(rOcMv]w.95]fɧbO8.wВ$Тm&KP=l@AIiB@|m#¹~``'s<9=V2K4jKevSϦ(:". !Q]0j#ɾMЃd 8Rnk;"|Z˺
Oɦ99A{d
/
ߥpC4c*Kw	NnM^\@8KN
NB6?K\(w ޻L)S"?7ySx;@>yN{A9vWzv=6BMNpѮC|4;ͧos:
wbkQհB*sT](yOe)\aq 3,,ݡw᳐*Jd_ 1W=_U+\*(U@ҟnuTЏ?m8IOrfX'5?*k3˒VAIL_EFO*3|0kpT.wM_-InP2HѩӠArb)Ҵ%($I|;NqSʰRӉa=ʫ
Hէs҇oZ#+dU
k}P$':W)n;Fis'9aR9}<PV]$Qk[w%rvJ^=|5BQY|)FKz9љT}٪rܘhrHˤ2i#a8fQ7ڞv3С	9h{3$p93h*;lb-8!`8&Ŗ^ ~zHvKxd>nf3S@ArkT9qf]cRol+]O=9WF!ͦc猩ӟОhd#<*fHqQ8sǂ1\7H	*nZ;ԋk0RH.wYAwhaMcoWmXx	=uaT"8Uɿ~I0R6;gQ>
g(D+2U;?8ǄfUK_V  Ђ3m3'{J]nP229ݗHII0ûz2%`En׍׌SnhF nhDΨ޽UYeRe"FU$r︸%GEA7w׃GS4ظAZq(Up'XA:ӬמTISGĀĻ%
!ODpæIGzEYJN4Kjh12P(\մD1Ia5v !lʶ%{njl*m?'tN
	Ek|(U4cl:h{ +wj*.#C4^G<W%fOsx3qe*]7Yz}h>iޜꄡ.
yvsS;<>;7(y?CUЎt P$/8΂KO$Et(k[Oau`Vt{-oq;'8E|eft7hpkӱ9_.8յCJ=8Br}ԁ
߭!J9/֗ioPS9nȯ@ww-[|Ͻ˔NT9u3_ǨmS^rڹKf[_ǯUo#GWGgȻ}nq2oG3c=wR]嬩iqӴ^<)ÓґlR+6-\tQI 1~c
u,6Ss=oG՚JB}HKEuw:5rAMTҜa%.Aۥ:p_TkŲ+I=+Ր=A^[16z
UM{IK|H]	ߛoɕ/Dqc>4Uvh2Bq,Rn(
Xy)pňH'߲\;U*
1\LUIH\Yyo;pxρm@!%"ԲǷ-V˝m;˫hO:<v=p'T~)K%t)l߅;@NT!6-c`Zx@x8vGzޗ;+h^J0b%W]I,ʙ%3"WPgL? j^;m$`Awf櫃N>
Ľio4ݶ]̟ޅP,JW_rf^ù6tha11$gwߵ%K7JJdc;
qG+h:vrxm9
E'RD=m󅃣K}$o]y}?3Λg1./tzvE4[J<1ΫcScĉ;AASqU9PG^s{ۅ7	H,aJv{4C1ǡ
]O_VDn	ZO?O}
4&YـWϱLmXt||+W[s+= (J߻*զc}|s}7Tu8G_c[o) bP?-
MJS%L{n2#ꡞ0u_wQڗc|ɋ`UkY)8/LE2(P~u~-4wA99ǭ,>Kέ6'ia68-ʅO|@DOLHfPn0RkCM(s }<:,];gEv$UO9XR_ݶl*/țIS;ʚ	SMʠgUzb<@J8 q$A8(^ܯTlI1"jYxiMW5|^s,.ok}OB.p-?g+B]{蔰Ox^+bo
i5)zF[I Gu
R'.SV=
2b^݄rϫ{kqݧ1Xt.qp]jr[_AǃuPjH p+6"CBFG/`Q)N IR|2huӷJ:)9a͚Ykvr23q|p-ޝlsǚs`G;L3ynq$
m(G	,9u%Fp-kMu	TOgG}N(r?8|%QH0 -?Ps_AwXw]~*j
=7'4vzt@xn2gK8lHeRBq=B踝R|^*EiKBJpP	^58  $&]wN[pRpjZ8yRwg4ńs)o*B;ĬdrVVLۭ?O3k`1O9j\Qy߇yDXsVl0>:&)$f-7,g$#0{2E]g /5ǥxB	P?!"''d&窫kn~)i⻷| |?> \_y^l'Njeg+nsJB;)ڷxv\losQ}`VhڎI4 }p+栗1NҖ{$2X&WJQbvE\=Ȁ7XݎP|0E)d7C!%JRIoCU^"|-, px`}%.
kmI
;o|g.	H>wr[
KٰN%V|1ɱrdYM,Mk&=σ41\UQ:00i g
bS5}q]z}|[o;3;GͰU u !Im䭰˔=
#^/e^Y#C,,gױy 7?CB>X`* LQV,9M
I#).-mgo{3N=xdpGcݢSwν	jN[vr`['?t-8Mw<Oq2~(vͤ\\⇻}2f	W:TӼE7[6O[8D9:
Xum7[_nWj.TDPͶ%&_GA|[˄?NФi%6>J \\
UV`	y;p*#0;%5 IWeq/[pWC\Zi݃ltٳ`861iZ%
\go䕬9`odq9d$+4.E닽bwv	ފש⤥Ih˕UVA@]Ԃ#QԮ1UB}) Qnuydy|wbO|A(@}'w
[\3֯/[]gK92Bf)N);{ICNK]?F'L?tA|yltʝ=q1dv#a8=<}5^9>[
ns|jKvA(cZ/MڝF"eOL
␞֞a?SNoY>L;=yXGw!	f+!ĚɈӉCZW#Ţ"kg%!ݽ|L)%G#ի
<;#IP&ɜgmQfwRX
ѴlpͶa<8	BCdh[gs"ZQVБrDsַk%ODՄ}tHa-OQxrruHJA>#p	PӸn\2|כVc>w!:ʏ\x
,ow92>36udʜ#nP)~n_f@>W*яqp+UTѸH.Q&\WwD/MWE{`ھQfY`:r(g9 ez<rM:Q,[rpk-8
\.%5jeps* h.ksY(Cot$(`FPmLnuU-ZH`c8;s((L,&zqsv!5zϭ̄?>ۍOira8S7/ѭ#iίNltP|xU
E=I*t-rZ:M9-s]Uw.MF .pg~a}SBoC;3s+§اP!*VQ7'88GM x;{NNnR}n~G'TݢWPxov^fКu?pa~.ѳk)^Khȿoq.UuqgҕR*gI/@Mr~⩹cs,.;12Y^x-|D}~y޷[5iN.ː+xpٙxuUZ*֚>h\LK/M{PO4!ג0	QN|գ`2GGޟ_|);ܔVx	0SE3J@2Vt0p'pt6E̷#ah
){TUq<;Ĵ
J%\{)G\+6f#n*NjL\)髎sY
HX?pd4ǎm\Y\2{>2; ϭm?v}4T	mq:4aʓU2yg+N[9	ǉ{SAzNz΀~\|:ɜvU77ĉ==xaq W
Cx\Zh$GQHeq~@uwlL4	 *qjitl\i(u&!_Ǣ TP"5ek^Xq9o2f3	Y}Hr%mhg9V3Js`kw]Ӭ[c9"9L{%H;"i=Wp\3fv#8;뵨hә6q{ZW`
0r|T \8%*1UzAk/{kbY쭁{FӕI*?5-sFzo3ZAù;LXz~9^
oXPs> r&@%<&!X"=*8l
(ޠ S8/
i~UWO(l^̦MƪB)Q9UP#>tgl](iwCJ2[u^`\S$_t<@̝PZ.KA/\Y7~v}]ת!'߼s{HC=oo<w9!n0k}ֱn E8}}S^<J{IIOA}[R
'/U̄B6Q4U.4&曌m}G8 t;=>6P{mayVHҁptSlTh@O#}pA	nXns-?jn>.Z@3uG S|H53SSN1ӶuUA-Σ)dIW!9b	MPˢ+:z_vLU4}O/.Ũ"]@P[:}		ԉW	FȊcx5BYv\Əʁ*5iC\&cx+~˒b+GƝčW`~gv%\$(w+G#JTՒYHWFʳiXw Thf?w+ҏ|^6еv
@_Zf6?-hM^1
.X@ c刕གྷDW%\$Ω~w"WL\TTq맩BjהIY|h~59TV+9N{V5Wu9GŸzm:i-E",*(Wg
fJxAnw_/ ;3O/UKœ[餏R	೟MEíe*DLÙv;|
aMZrkuv;oUnJH"
^$8$C*! G)6g+8P0)6Bf J7Iwnju\)3Q<i4iJ}Bt*w1ϷzڑDQ:7ndX9㠪Vu>-+G'{ȡVz2Bd@I{3\l{yOڒ4˥{;+7;mRV/iSeHpT#Tg[i"&RR%JDzriL	d@/c->š]HؠjE!ͷseFM&ex3g1}˕.ZN%\>:gٛ/(%8Sq5wR-P7u?`zn s2l;*a뻗3~BlykëI4c};\O_J;wߞ3&_#|4*%˥:	vRG屮0kg*DH' <ϕpkE*sUR1Z:Rz8jZ
鉄ɃyX,}3L:[)nٚN1^ӎJ咴eO䙀vV$	]㯨"pn㈦?N]	e:_
n.|_K\~0MFģpPIY43..نjpuL@xoG`æb`"ہGјHNgw{
qvg9AVg=I8p\i3;#Ghx.prtVYVS1oXܐkt[Wz
QE}ݻ)Zp4'1i転]EpnrhU^5B5hǂO
 ӏ}ۙԖڜO}띶!7g6ë4	 t4κ%
X󜗄XT1aO6W96j[c˫tE="MWSo33k^hW8ek-R s8]9	vF.>5~'eoHC)rUpC?펨536KP6tYvsXΒݱW(2IJbPQ)W܂*oq#|}K2a|Zu<3xFuڴRsKyvӀ%gX?+>VFn9AIE'beY}{utLAjMH|42ڼA988xpdxxu^zaL,߯J3 L6
OX=૊
sDգX\LCHV_ݽ64B_i&&TKjܗ)xBQpm఩&ȶTv#~K]n7ќԖE	xDpԼ;f}Ǹ;~BY9 ƻ9*4La7:8jljįҗNErzҾ-ot' :?K:Pю;{\Ngu3
Ǝ[5HOD}RWGZ,^W$
(J$q] "IRҬ0&
_g$hQ
ej+k.8/R
S!)9 'm57~7mP-}%.0SCUwgvzw͢Ԝ)fkk!qRZ$;ئwoUT'彟)y2ņc[
.㿀Mr"슶V6)}`W!jnsCTJю͘y2 ʷKHfk񁮐c$+Wjڃme%"aPv@ȗkCtd2鸳j9i"߃8r;(Ɛ3r]BJ[=̅#J(Uݧ|_ˍbK&d( TO+_40nՒq1"ٔzC/yS@zAW&eL7b]MOMn/@~_Ws3eX{01s4h&`IλbɇT@0GmH5D.Y=X4Wi0
R'=Qw2m;	%@E>a6-
΢?_x۳(&4rJI~u_tGuWM#:VBA'S{=ʂ&*}r]PzU::?-9K}Q%c3,*Ivtׂ oKO♫{;,<}si%>
	CM=b*	2!ٽApʄ F xbl~
w3$t8j+Zu#:ϡ4)}+̤d,(A$Tn!n;VZb$+hy=Og4:_ƌΫN. M?+03(Dabuudh-*,*JdkZ.op߰jŸB?J\O{pƣZvt_o<өrR :~ߚʴ_vl~[2KYo%^<UK$yMMCu@
BrWu$0OY;pkI@Y4"o)w8{yXXNT
>Q7ǈ'0NS'Z&QO~gKוWrzqm߫Z7%s%9N;̡Svm3YEf[{8r؅iU}|Ҹq5`f\NGTXcZ<ڥ?)_kV
s߹.+\}t51bbNuw_73ҹur@ߩW[`k[ f8+
تB	xk<ڵűG|E\LN)Jdw"7O)%]kci@piRגzJ|lr$ rC$'g}$mt,Y$m ]qq{ϧ 
aF +UX[nM]axb#Eի	*
 ^ X'o 4βD=q"&+,DQ3>
>5$*D9kfd=sQCV<*eO
@_AJRm#ʏ߽%*ҹ+..p4[Z5po8x
Yи+?5;Rf[kR37j\p(՗u(eg;n39>*U`<oьOTkBbF)q[!!uHqH>NpN"&8
T$ۅ{SS""FVglvgjKL_)9}KjsmUlFQ2UfqtAi3-W5?tsMpYM^Gs(A Zu蚽W~yPuv<IdwX{ZQC*^(O<7γ|+Kg߶8C-wT9Tlg&/QQW}a%}eFA"Ŵ{kS/]*C1(C0Pc4Om+	4iO9/?cFHzNf~  zq> C5t.xbܷIjAPKZ <ʦ+Yմp(榊cĖJl
geAVTy+<aƐ]]EE#`Waͷ.?g2Ό-	v:
]SObH-F#o͟鳪;wZn5
uPriݸ+vcMY͵, "Oסac8?Ԙ&/bw-[e
h!n@+')O#AV
KOzB`T_2ԉ Au<PKs_sz.I0%^jQH RkC 9Kar5Ci.?Ԝl6"MΪ9OY#7C>gzCR7ΨQ[Ѧ5o/ɶ 4jBoKBdև{YR@(:6|$~hp+ZL.YCDtsړsK^U@3E<^H%o6 q妺֒_IslziF2--Ih@qhr֭4G(Jp͑+@cZh+J˜G3
ܚwW	ǖ)Gylo&NV]ECr4ZZUHk XE\cvq|$|P-HEN.Tz|'F#OYQ9礝 uj
5o&	ix:~DNոv[6juNWUHjvbݑ\2
G
}"Ь1-9|/|7]&xE?]̿D1$EZn)t%9
OI  j0~#6hK5KLitLv4֙
 oy@849&2lZ¦KgBg7B(a/Uw+K)XIDBL{cWӹ*oB8tUpւˡ yI]P]ݍw3i|:gҬs1.pp-h~oUC]ˣ@>.*I_^hrtr^spGD8θ3xΐ쮙Ÿԇ;g;LAjO+qǞA¨ąKPvjIf_V.<'v'q<9~8٬;G۴ju%g./`Rf=o]_ &9q=ʑ/3{ ,G%KEsm-rSyGw#Ty~=_z`Fqq͌ZzȪ?~piA/@RS:
q/d"ܦ'%Ymhcs5aC~nVv$28dr%vyLI~\<F'#6jK8eI.ܼc;Hız
_n4&u=Uw^VWjl9ulIE
t!jv+Dnc+8yXc y
 5(¢2G7 =4>[rWLl{[dK<C=S䲪#աD-t^vPg2kj	:6?mv8nK\2FoOt<aG;[kLpdH?+=sWU3"}꽺FKsMPq+
=\e~JAv.0hV6;-RU,HH'tRl.Jj!uy	8Iuͷ9nt
k޺-"p~- }e$|Êf
:,<֦ԱbQ^pR*T@2NCU lp9]B tsMK烐|v< 1N ЃJq)8/)}ߌwK0ןʶv^V<33N~k\BuˬrS3iUsq7N4j4T𼗪S[e~RЀ/'.Pzǿ`q+M-,t|HC0cWy7yZaZtV7]Z3HV؍p}D 'Vob!>\Ւ2y^Fcsh4\Fy%	_%Vfsuzelduk'qi._`nh[n&1W:(.]HpR;q|8Dt	rS:R(2
} uqij{L̀yb1{(OZ;qz^٫Yh%@[Q^t0%
oU@޼az|dbXB 4&%XymE|ԫ~*GJEe{+F(qc0kOdp2E_	XTf#+7.19F&EH'M~oe) }*\W8"~c9tS.)ܪ5_n:gA9הLCy|u\9h^I3ɛ"]z~?c(7'N8>/+F^uJU_b|#
!$q;
V\S^6G=ԸKF}; #x61ҿ3VT
LO6!Qi7IS2`ũT1pN++VTu"^{bƯ7>W!N+^5ҷD%Ӷq'&C?!~N::38o<SX/Ь=c
b\pݍ[VG|	s?2n=7ӢUA@p͝hoIVQ$N%-=H.Rj\9w{kρ1DܔiU~)H[:e$poSP3	U]qOޤfQ1
Fj}2.q?TbjYuQN1YCzNJd9=HBw v"4邺G`2{y(uM~SrQv)7:3HKe"pAvxb,U_ADlKW-~3cf)ApANkQ/iwb($$7|Sߢ%ŵ \bE]-+Qs;zZ\Ubh%nIKeGn;Lw4`M[O|wU]9]$,d
@|P0w(Tbr8˙5kHoqi $ι,=6R KDCZn
ڛ( $HJX*"..᫽**Y (v4Gma{S72}uHO)#iﷹ*(u]]58,&)Qʵr	я-X@8=e_"ǈn&\	 Kpڥd%g^ҟAn@mVT3XbTP6K$Wg.5gR-WK:$HIVp[c`>{7G*T6rSRI
y:irDR[u}{Qs4.Gm$DQ^:cŎOD7g=fVɭb]Hw(AgRț"*u
U'vy#VVnNVq)VIFPbm+ȇAE	0![tǂ{#eb޹Wt<7E줐)qT5t#:AnEVS_Qt jbyS{WrhQN8DfrҒfp<Nqݤ4nttp]WOGءbts'Q#6	Ug%A)>-nTc`a5WۦwH|kq8q7zO[Q'<GF?WN#*z9چ}p/uo>٦EwbFEb~	2[RO_=|Z+h,SIv6fT\  ttH	Q,8UmHӶ%kkQtMQz+U[ɹ|ϼzm^ڰ>0H<(@]y#"wUykr>UHNǩbᛮR@$fRDe0-FWtVR?Ǜ\NWgqqH0mO>KnξT TeK_EY+a04XϪ@D1pk6] yH6~0ס*'
PzdsL]UԝSQyeHtZ	{IF>(/pI2_umSo|@Po[P#ʇIXǤ~PuS\ WwoNV>vdQNOsIͦpg.cd (|*QV^
>j|VcM	 ˯O;ɭmX19`*+ci;8;'FTLX2s$_[Mz!I}^ n]ax{5>_iǴq
ʥ܌IN]̀ҋ=gW3$qIQPlaZٌPybn!+vrKjE]XF c_q2&ۮҥ` (
d΅OGD,ߪ	8<SkyƐAg!a:xn	\?Z4Ylq©>"ٍC(=x)\яt\<|}<?Ruq;Ryxm:Ͻ^u/>b1y-|*(i!A\ַls].6V;O>]!lvb"Qi=0tS"jsul|LŞ6{ iJ|~ڽ-
Q6.s=K*gG ÆXvaK03rRP7~<[M5X"|("]kM@ -\;UYcJ\@~p]쉈zR,f$v
?FVz|v./KQEnϯp֕~B/|+*{T	?^%(Ӭkrxꧻ́-
ܰtSƛP)3_Kt z]>^m#ftR]a9䜁ZEjЃbY;b`CpeD.iYԂU9_Q3}>85L8&EyjNu;]2N{>?n<xNr$咏It'nx/hU&0 8u IU#	|(&>zdJ͠q.:l)Kt!%VL89ާ&0z\&]U, =
rQ#k#y:SWI;HQ,=9PLj
KJ4 *6`@ʡKskNuP7>V&~ptKϥ
G' 7Y1[-W6Aܖ2
1Tc(SsYe%+/!ZeFԒz<ĠϙPdA?]/rkm}qJ\\TmpO H6 >
'U#A&R	6RYaWB"N*sI.ZS'\`a H	 YnriNR8gZjDdo o>~ILk68Rm+:{9ܶ۶I|i0ۗb.g#^D=-=I<sew"ׯ$`H!;^p>\$jnk$D`?[ur+@*m£TY
8UոCњc;%L҅gBG~6*U4uQ닩Hmxgar1s~7_1SǝTԵ@[Ϗ.PZrxG0#,}"IlN=	4J-8ol^QiuU!d['?,2)HJbWøcICg	=yhQQе^(*ټrTU]vWt)K^<qjٷù­wJArr uR^!"y(Ce7U1q°jT7
:$gEk5:Y3 izsu5/rVRIGP#[ʃl.i(0	{NU|i2	i}hG`Uѡ}!E4%eDXKZu:"7crlZ8xMQb[fXl}NǉVrc ÑLUv(A;n}0WImi,f`ˍ|7Z7Ү9fXm.ry-mT$Oְ{ 2>9G,t~N!gP̍=pvsG2P9;UyڄadvsCsmYġZů㽪-RlD Γi 	ЃbP'+Zd78{N΃[
kjgeյh8dppDAl)k`x:v+	=l+v?rMk OhH:q#@\Vq\ZfN	a`j/q(7;LU^RK^d$v9$<4}%3I;nT_~E	T9jR'.֠p8U&)$IJ*cv00m~;̈́[QP,%?Nj~N:/FSgYߒKO.[7yD\eNgJ0IaU[}"(K0~;VjǮ[@wSRQkXQvp$p]]q'orRz=VOU_ǙEnR9 Qn,^Ο5&2UEW*Z'Vskp.y:!%^c.MZk#\W͙	m~}$hO Ks	jF绮93zΰ[jFkyHH Ra/ldUdnQxgS2K昀o^VO?n42j.,=
%`xgٴRgw[
?>Z|p;1#8|xKۦh9Lֈ~t|ctxvHS ɮS37<kr=CK[|
9jxS=
	{QRRxr`/gt<XC>ջ-*LiT.,JX&1ߙ[̛ӈr㊵ϭ4kϮdVzU\fHUq!P]xtYM7^wncՅV̬ŁUeצq&,(|#E:+qYqYwoa*Gm|9BN_	,Vh{><U~kWؙ HdRjvC7mغ$XI1P(_e֣1?|h[X9n<vxI5榦3VPbE:*J޺R
.Z
GtP獮,8r4W&zM3qbhUսЩIW#T6!Q; %šgZN՜L=^ۘʧ-j ^
?e'ؘKKHQn9g-w[)vUhZ烼.~wa%*n0/)tk@JHtOw`в]&]j,K	X1(Ad%wJix:A*QY'@gKIUGWM"3 jH!)scQ{d~5ї}? mY-jLEw)OpJ<ӱ: zYѨTQf/:C4$g	L&l6'v2>ߏBGVS˙ܥ2k!A׮ơ(8$R_4ߢɭM\KltPY(T6>!Dnqy=y	IChx4M)~r
Maa!ܱK=4y8t}x*ӝ,jakl.
p']-ӂٟe`vv97^e_?m.q`䆂rNW&)BhV}pkGqetvg4Wrl.ȯ,o*H`RDާ17'9w51V/5ܞ1k#Ilew;6ʭrOg=|s\<RE Ȇtff勜ඞŗL.|/+nd?cJWgW{z\9duGk=H^k{q֗
b76'
!cD`f`5=s#vI=sW2+zh"%眮ÞkG6\kűIG,G-pͳ)ј[5z3\8,Qcrf@ޱۑYKdoOy45
c.ZogϭsQZ;9fW{U2hԞQ}^iA32pAw$J^4	l%Yuۥ@)SLfih5tJrW hrv*.up][-y.Vm
Ч<SLboQ|CU[ȱrV۱Vugz.>X*-h_ҢYM<x@:&
P_:8L>2X(x%pi<\I  WQv0Y 41RI϶`6
nSl]w<`n=.kXofn+"C9+Jd|&sdY^027hnKE-s~]3W]kY-Qfm3aiGx
n؍S؀o^uy#hHN*5yeo
j}Уq|lMPM{eެNra)[C4Ye:&	8buTp>DB!.'xM7R(A[ϺlqY
ԿxK[՚
fIqѧ/vNC{[Y}ҙ_BRP~E-OmU׶ѭ޽*J
AonmsfN'78>|M~;|C	" f$R#~C>EC	 \g⇫@81jd#`DiR*O:MU
Ɵ7؉/usm;^nmw~wy:
 !Q<OmS~@Y5qe2
7}3]J?
n|
)ͳ#nL
nn(JN_Z?UYtjNAoW9ޝ~TJ^ėu(Vpzңr OGs5'?%;)kqcGU%U=u-P]J~brnmrOõ2GzMuf<JʹęfŽ6Yv1Y/emĺ >VW_-91Bai'ps	ZXdaOv>sj}
]
P|m!$]s
TPGxoS= m#~|]rY0
5UiՓ@ӂMmDPV!C^nR-չ,h28_-lh'YrM5MS>ma*=;*'2B2=<s;ݚ~mf&^ՙM\xsn%+i讒ۗyM<]y:_4xPW5O#2A}
k
WZ_d@ͧJưMiA}uMy4s8Ջ{7qnT
vY;j Kr;rSKTDq9V;])w濻+ ί/s>/ryﰓaC^?#~pAŴ7 3_ @R]R/vd,Ҭ)_0k੮V'SuajTL:7%?xNgpx0.><E$#wzݶHz!Y+(ܛ*LSEPg~pի~j\#	fc`<\-!1D
DEs5O?z{NW
m/KO+ޘKǇ/WY| js?,I9CW	[oAWꧨ%29?vJkخg45OY]!B_ςpBRR5f`uk@DH:q{'
a-h8\T[RǢHX둣(~jDoqj:EA6u׽c(젲"_Kàc;=:Z~Ы3#l'3$qa8_[E+JU^Q^I~Nylg&gYֳX;a?Unrt]&Uuj13+_3?zoO/6?{'c_?ggg;l^YWnd7+ψ
JopS5㻋6*ǣkZCmjyq<PUy\}Bh>n0Hz+ H&6a4p<0vgK*4e*C~`W5wpNoB'SWD6
g})1
ךYeRsOgFuzHU">
4AJiƫgTG8e|_(Roxe4}-R'p@}c?F.zlR6Ҟ	FSngSur/4jgT_WUU~cm-/}̳_n}T0"']78.vg
;QB_Zkh}o}ܫ	^lj{\JS̈A'7." (4 YYh^_y;^Ko ݮŴEpe3:rThW}&tz2UY$/C(TEe+C ln\?UnhI<k_Zp8{]'a.Gy{8Cr^[Vfl#FzRN[QmNq[T <`%90CzUǥ\~jv
n +TNa)o>N0*i
eW
-cNe z?-F[odb1TMkȭM2!E˅oz֫suO~A55'Y
}W=@1j퐧 4:}ž㯞L|Cg}ܵ&qi994PH6<DZj TL[%vڻeAϭ7\_R{V6(|MG+5<P]J8tDs>ʂUG#䦳k#Yjy6<`
[v)NVKqi6˂ۢ HJ_vH,Z'&| lD"@ g+FE_Kb:4D-M)EwЪwV*>Z]d),}fW9dz5:K[
vRa8;.+	SQzVCPDΠahatnHpRpDWϥ(0]x<t=:Mڛ^R#<n*MAvtx3!$:6y,Bt4wpa/2Lv | rOܒOr%(Nntk&D>DKQ <PmGzvyj*Fyx37XLg;u^zqUj *P<Gҋ͍T'S޲nBj@q7|b_5].^6`D;WfLCs"֘wڸ<f[骉YABAUsDxY6bQTuJPsYPҵ\\5~'}>K'
 1n5V~FtRv-ΩD9
rC:!Y]?r'5>9WV60^319a	Z`={8u()f>7_.ZVOkvqq.,USC[\a[i6n
Ղf$Vu>TI&+FfkjPoX\̱m;D8UW]
!Z-,s4!78Xy_^teCYTݍ7.+ab&꓿@i:)`m:}lul=p
"N8m݁6b/슗9Uőon*Ʃ1CVUZ&:7cMV>Do^W%Kj?!?p\sՃIjg.ێ}'p1.<\]3ܞ#͟O;\:U38H؄L;Jlt:):=D3p;mGXC5$ Vz
hΈt}ëfwM8w8q5Y>ѝa.w!*QE?laIrzjPd&(ĩŭj:JN(>\#s?e4R	꙾ں7soMQyb//[ƫ߉|B[iϴ]@2hmfxJZ'W:#jDL"[,$TLUu/=KiA s};NXPӖl)ihZ>_>S㘩	̃?gqCP-|9:?SYC8
׽Zr3Y
|&HQ'~JvU]pncKytEu.!mKs\^/ s$Ϡd^/EsC @Blgzu
Zs+ec]}Vj2`w'efXr#E}P9$ /$Q6JK3w/D:öWS9ܔz$Y	mqVuuCRۆ)u

\p J'mG!Z=]irJWu&HAș`>$ 4wY9+YJwZnc<so7⽲G/48i$=^d")(?F3ӳ i)HTŭs_|Gt5[8!KJޠ|IhJQ~C6x}Q/8,%ZQ^+IKn$ ߖ^-K=`5į0ٴWr)ww{z*u̲$Ǖ$!~	-Nzf$*<jni )2|J2Y]E>|Pg7Ƀ쵇=/-Z6بGl~"'؊_I,$Ls5P	;W@Kv?v# "ڔL0%qtRWG{9]%۬IgckǝKP{v=񻉧.?4Nt/괖u{>q qAO*`.;F?;T6'
Gܶe֧ҿC#Il?^>%
|]*ǺVq.K$>xx{$cwa QYUǁ$Hp^*o3~7=CI.oN>q]`qd>>Wjf=TD(구W5^\r8PɃ+vxHkS㱘4vçin=Tfv#V-ֽo\%߫7Րo֝SD<[qWIg0x;slrtEh!S!:)X#l8*7r7<u
8xn*u؀Y(Z/A.d<y-ʝul-V_j*0pmQsr}
.v9,?]Hf)qXM+J'"< [qޚw.;&U8~WmIMRHgU]?}6r[;(t|4IjB$^,"])`((qX5˃0yٚ9[6yy/V@؝o&
Q
x-ջt5kEcwx7iSq
&G+6UKֶx!5ݺ_3vgJ<?ͿHuQfU/Rru8y`C!3ԨHt1
`ijy.˒ri@	pD,	<J<Q+~Sy)Lb%wC	@B+O#p$b7
ܘqM⮖A	_kL(Dy[',C8׏kzwEi=(i#	I8f`hbg@M#%ߵR$qpD0PUİHNϲفݍ/_FzMT `$G$q Ӓ3E\~?020!t)۰AMf!)KI?qw9A?dU42 h<˥oݪA:2D(}B	t_>VEBբj[*sT{c^=	_T<{t/uaJb3K{M3*@]}E^!	}t*\-P$yu;U)of{v<L(٠w$]El4ݒY'3\G^$_:cS0ܸ_i&j2[SgL'甸	ٴz=uQ^2 d~Y)'
YT=<gȡUmBku<Y_}!<7Uxc۹HԹj%wM@r'w+H;vPD/x3U\ד<xikBS{^~a[T7͹(q = {/+.c*
H&-XQS4zi3(KLd~_
.%Pd5w;C#*"fCIc8PHM{̙lӄ2} 5_Mscm][n=CuR_+zW5oAoI\(w@L==OL\.:*d,rGY_5&v:N_o_gkNzO,DZjd}5' +dGz]E
hֻSr&K\Jka$\ f?zvQ)p )?UItkFPZa Q0?fmp	3'R/>*WT;n
l FnA͖sFUԨ=Oqhq/l tGHޠ4sH7W_6D{~8yNoK1nTb'y8].$Lk]og&Q>*Hʯ|HmWEON]Qpt]n~傊ZLݗyY(dI{~=Uq3JǞt,5H<޽?9)M-=Jumo=ׄ[%7-s	8 AszFDBS*@rU`W!AG]wXm>֯Z#Ihow`[Jí(D0vG*@z:`"-@ps0:ߌ.y鎥avxnњ<N#\<[Ro 33}, aI&i䄿|LDq~]OBޡD#`{Y/p#++)s[+Ք\*1X]5D `M0"r@Gp'.
F5ĠJe^Ig yq~/T>;_;WM5XBuX7|9P<4>z,hN`(r&-*VտW߆9H~3e/T_քwz.hyA<wCe=Чv<
'~ђbLϘKzYƽpQC*(Vͳ9]LRGGG\,L<:6,xvSַ"񉛚Z2'M~8ˡ}_
J"ߎ:99p)VG_d5K:;4x筴vG) cgp:cƝmnE㚰<!{b |}.L'F[k(N'm5%.
|WtrL;@G,&GkMN(IE7sP@:$߻;rWu^
ȯSY<%1t(T@Ǚ6'4%A݀Tln"+~Y~ y4 x|ʟX̢e3:L N:hwEMMPlE2Eu6s.O)*@Eh[[;\,:m
XGOs<dܛ[͕^m|A7]9!Jg§%˃-3Q9b3Wɦ<?!\r:@'&vj!)u Ucl?{vyT+|?m[{ ҼZ35ڜߺCpifC9ܩcZpAuwDmV-놫3,RoRĂȋ""(ksoQ]tﻨ7H2tɍO^4wz9}rYΑR-obw5@/TuQc&Yѵ}/{pow++9V3#8<;<s.0(Gu{RA/b/z<n0nAhw6(fBw/xl=sXRws 6
=fCw:Ug7Bdj"g	N,3Ԉ"٭Epf*jU'*=D_]].nc`rr%
|D~%
WUxQ)LdjKֽ>ךzr+&'y%&8
x?\/W
VZ-Z,7﹉"ĬǏ7Z[͌t}~Եl_	%xNЅ[hvV-u&5/VooM~qЫaFAy>{QN	(l&*4#)YUu\P>|ގzfAbej^nztI?zbyhK;\D1pr;-B^jsܭI6LڽHvұ)k-$"L
c+,ʂ߅ImTǌ; ǺyqXpNT.Ʌ/]gIq:@tk͐kbOMz2Dњ	ᇁݢ'6zVYm;
2LyKeѭ8h['N.3*
o+*GE.RЭҙ=Axu:x
tι
;@:aa_mTMR8-wpqfQ::ĀlkVJjrŚ| q!UU@CΫa zAo[
zk/dT_J>VMԆyh)iV_lE=zZ8ҌJoǷ yv|B8cZR<6>{ ީݏWN+)N[/vc+g}Z#U8A	 Xx]:L)UG-U"ѕ̀ eaHiw˴,\!$%t{uྺ]"0aEU@BxC\GOaMSrc 3x%刣#J3sm`L[wM?4xMr)v8o֛"Le/3 X nbkC[J:6UjlQErCs'kKIS޷EJs㳫jq)wdS: ܈ď簤+`תC\N ̹ػ&ӻ9\z>Kx~^]9
\㦸t]8Q6#r֏Adۼ1!NFŷEpoi~tfA pkfcYer,]Q(b#ΔM.ҥ;nB05o.]<IvsJG0%uBE
9qXF\آQ}}v=C1J%
M3!_ }x>/hrhJ@]*M"o!W2j=#S#9U5졦醝|z~uu$YɞE"n:O,(zJVGyS.mNf(t08偔Kj~IЍraG 93xqQYf[<n7Ůy{x|m ROUFT@{Rٮ",O*DļDҩŰu,R儋;Kj&
 Nu]A
Q/] o%khcǺˁA<_Cs^N稗#I	EW!`I#eӣY&NF[oesȏ?~Smi&4׎8s/OBv"*2a|Ӯ4< z-;ނ\ȩ-INyjd1mN?A?=
(1*98?NDG4`HYDgNZid|Urw6iM	\ЧH1tHˣv%RCV!0BMwcQ>&Rѭp<<v:Fb)]1UmK7{I19
&PΒ >zta \@:g&YHRׅ:5Q((تskZAp
HMB3W= j	Arv0>A^w!$TݱyJ*$KQ[αIG58]}N7gհZ7Q_NV3&
.N>:]Cy$9L$:lC`O1xS!fV J~?"mI󹓾g7`if_#FZl3$ęr-؈
 g!#4!idRO5t[W
\y1r&ƤGJ!%+laHR6p;KŮFQ¦)/(}r/&?rMs.8O]4rcbl8^ٙM&RuO'WkTʑOMp]vZ=n.#@
5}$bP39	Nv=A4SXAk$(;
]z$o_:Ben
Bȃ>J`3>G6=H8AjߠAJ
bQi+`­K'B.b8^p@9%.@ C˭*Byʣ3M':p9E
Ae <FΡO5@8nhu䐗hR8DBW} ׹}݂	f]?3r땕MmuoX ys[F[ǲՎ17٦3hFF(slz(P$M,T;צ $W(ş#rD7GzUv9 &Fez"NwC]se2uq[oXml1MZjB.cҼ[cXեZ*G`OUZ@dӕ^_Um7t[IP}ǕXUhc]Y[ ߝ	
A⛁F4I%pZ =TC[XiluMt]īP<vɦ`=lNjhfA9nS|DIՑYWWo6A	_ֻAu#-J;bpqtЧ	uW[:q~ٱ7K7n<]ZGW~?K$(fuWD[Y#~NH)q&(35V_	7\}y+騀Sؾ.;>/xLIlN#n11Έہ{`)!:k6	ڼ塜8Z(1oMp8!
Tvw2NXr<dHt^{Uϰ|hn>}f>Ӄ羔@n"78<xtv?FC 9()TvP0b5)W8
cpIͻ)NJf4{	[>W]gyتn\!l;aAߥmB2?/7o$%>cjuDn"C4O'w1HE/Qb@zA1,|i@H=O⾫oLY|~d鲮
S3vsiamJ/溒eW2PsL<`F- l
.]/v%}.L-;QbȽwٲ9y`>
jBr
<O{0 W!9'mH/xvM5QԶ:~<%s.)|<(KGvB^^P_Q*s1Xnth?)ݤo< 3^"c\	H-`͑dmn4Mbx4bsܨ5[R#Ǥ[/*erVk%,pSċӺ:*6~gLi:D!AZi |N70yVí0+8*yJ׫-Ⴣ׿nt(c(7E	>5LxdЙ75)˱;WÀ6l׏h%|K.IR	=;Zy[pV<^U͜n.u*v4\M<Vj @ͣLߐXVS*:@u+NH£Z)Cinզ񛯚g*P m8PYƛ kX>+~:kгո#ݭ;k>~.)ViP7OvyBXrRlj{FD)%#5wTuT:*zWѯ䠹'Y
;A"-]\//za"^Q"xKJirfCbF"QyP:4
Wz
5, r4>ukM\ܜBQ6EXX(0%iGQ5@Y'\~BVgs>9l\I~{ZC%j~Nd8t@NkEHX1fs캩FxN$lj
^AkYuX'Ͻb*vF0pwS]߯cyh.jX؍+t.u[C8&k)Ep]/MF@$Xojq;sF#$E]#ЫU%|ꮧ5C%]!v@:g9An(Nu%iMȢR\)Hcc	QzT<ai!H#utp#5.`  VΩ	`.Wͫ?t޲괏q}񌵖ygMJlk5hF^r]Ĳ;}4
p.+]@JTpZ(J"D+;*sYaT/UCU\QWN8|
\/
IVt;mz1W3%*QnE-8^!M;vw3%Tw9aq[q!ٚƿ䵐ז}dxEE	,r	ds/l&D*K]Wwq;Z%ZT0=&$;Kx3 o4QlA*CQɏUu<D4zQ 9	Kwl-1a2A+3:N|{K!}m3YTWA!o,J|{pgG7VsItBj!K󳓐m]`pxi_`oZP%BQ
G
Ww8t7U=6J~w{
FJ7'w*<
@v?MZجSJDc=C)J%
N4
	6amdA#4ސSWjHTVh<ܨKq(YA@V(B*@VsufZʽܛ<rVUȇ@%4ߥ7Df z7THY q&=`Ur6L~'߶d-d*F+$ģt\|_m|Su5hD9/EDzgKQ:
Lُ֍^׺U^<Xu:N^NT HH_{'s-^a(^
:hEE?<)A~v x+H<aMSԙxeCIx*47r:pUG Lt]5*;N~rJO,,v+~xw4!]K4P.0/IwqqGMfuB7xV4:m<*vo+mޮwsX+Mw;"\*&;v)EhEf}[}vȷt?2zbt2:[U:Cmqt]:	].~} ͊(Wjj7Rx͐)5h%t@aǹԠ78ܵvDP7.U
zg[f$F}ɺ~._Ǳf.dM_uXQy%mpi"ߗčVզ9;>19 N| ΩȂΩ.ZdWU$V $e
܊
.}Txn~i;Q[-‸#Bg	%mXs@rR7gqLy,7$a'$4
~u)ׇsr 9=mK`nŚ{#DJgIC.pSZbã]j8\'e"ctq2az3َkxD ;7r ȅ.8Gpջ,kre(:iBYޭI&:msNݏ(ߠesU'0hkr+H:QHuzKVY=ȟ1FҹT;~˩.:5/N{k#'u.Қz|
/PdYɤTݫGfba^:W6v@$Wƀ#`#`=d⤨N
#TI.=U]#8ܑPNbCgqֱts9ow5rlgylP)m߿9%KS]+wRs#}F? DtreOp/Je1FF8.iMpB}`i{AY38m-
]\4tk}=SEEoj?VY9ix):Mؖ;jP'(-w!ȑ:f0.M/+,XoeysGWD"znnA
X!x9msEHG`GvTF}sz>5v<4CʑrS+SpH8?LEq.ˠ+	U~ݧjvCgy
T8%YVWV~<UFnՀU>x
+=ɅOԸX@
ھZ/QeWuN5BO,0j#{hn˪
PO<gN1FԏP?MG|2`kI>n>Ky ~TڧB̠H)yB38~Қ6cv)6Y9prtS9G^&d/a0DXϜ*%cInWyU`)h0N+'`_0yv,"Ft2[^ҒN 6-١ו.ϸWs~(yt5\jp"7C-}rߘr, o^v@F[BH~4_=RC-=n8ӱj]/'U_; y0qVq[TŹc$5bqWƎѢlTb}_mQ:MNkjUCf3ZJP沔xyHUڙCq}*Hwfa
rRV/ɯmeHʗDg.:ƗA%rp2[:
l{<X jGz;+Dr"8F//Bis: OQ_7(L
]WAqp@Wrrˉ|-#q5P\|"ՌYwQ)?BϵǹpvӾb{a0Z;6Nhg{(ܶZsX]`Kh꺣HzBpK:s?jO/X(xthv(wh1~uˬ$IdB[W`-.`
3\CU0",V)-EB
xOVаxg$ S.ҡ9d_{-w@qS􁁺?
ܔ:8Ҭ4kmHmrIVޤ9*6*
$К"
[6{W8rKc'M9NA-,q7{jZq?A=MŶ&[46ՍBb4|DX=.`?QQZ/qbR4X^Jw:Vt;AC0%d!J0gl8u0zUkҮ1ekѾZ)<EGʯq〒]Kǫt.J8Wq.nUg=3n
r(tS甲b| 9dq=
@I!AB{}6ɻ=F<?qJr͗udqz^9#p϶1; Y_K3u\Bn͵MɀX]˃d4w:Cz,іhZVg4NC%وceDhӂJGHLHJ:cj2fgEm8qw<#kf:O˯٪ױ\vRDv'?*O>IaTe{B\ OB:	e
](NN\!Eu.S}slu|)m#pR+3oMU[sϑ|P4\m;pYn%cLoߝcއ<^n >K_
jT;K"G=9͖;W&lU,;ݧs+G]-Qϣ抩Vֹ+IoqM4)Ε4i\6Da7R]ǺP;TzX$̎MTǶ5ڷCm;-ΓQ3_Oui-$!OP]T}s@B0-3/W7QI`RqnM\Gn	Gݖ-L][u:ٸr^Bp۱ Q44FJ'"|ѾHn&)H:9Q̂a7G^L6^kM|u!8C8=S%锟EI$ %7(
 ]i&sU<h^s}]%zjEr
D)OMRsޫ
޾`r<Ns]:
 >WTcҵ=nhIQ;=A&["<;t:`s'<LV;`ysw8IպqD289]VXA;xq>h*:N?X]ӔbD-v'J
ОrC
z_5jiPu2WFPI'޶2PE;@bۧJO"~
^,E>-U1l\t}XC\޽4B$<q>5,s]	6`&e¹܂:P:AP=X2n /]f!2Ӗ>t 5JTq91O`E:^FÁqoίr~*o_t{90:$z}
E;cӍR;mߖ+6PJFA"KOFmEe*QluуOUI8>[i,Zw9T6߰AE-G<( vHs;qȶ0Hx"&Fٓ ~h7	ǧG=s.A|_R)uvERl0ARH@*
 uLWQ4UrP2Z;I)1
lr_P$\q0C[­UЄ8sC3W'82zc4eд\q!:%J߈: pSN)bͧy9@hN}pS3¹]N@sIrDMj -v=WR\ѧqiK=J=%PV2__0ݴ7 3u4+rpn=9d}8=q6RNTa_[d H5!5VЍt؜q}GEkv(5c I/ZPW+voQ?'^nPp2&-R phd^_=5p0[7?.;Uid1gɣ\c̷*%(pqRvcU9 !G#op*ș?^IR[w_j9%]V
f- %-	9HЂ0hcd^|Őn*ZIݥ\ߧ<nխ?MժU^"q*JxO`u$8ayуkǪvQkU`sɑߢvPvzOG/|1;lc1Z}{]:`?w%iW[?zJ5S/5  Ư6h<wCͷvuR*v)_V42 A
PLnM̪{ZTRrq ($] Nȧ;bJ&/P=P,fphD~Z\c@,\6oH[?\k۫%
6s 9:MM'9XN癩kXGZ5yTG&AYnn.el
H-͐?+Ckq3 9$- E[!<8}&ث>G0?9j&>to6eph4sor_SOh<[#oCؓ#I>gyZve~t45%#A^A=1ǾB]ݔ_Q݁ǫXλnG_.T;4:3gWe{|yoxQ7xܤq}Ʋ6E!BFT֔iVoO^Pxs喌pD	Nac%kV().?Wd

kd#n,Zww#Jić7u?U0En;BMSv) ,,[S?XhmK
dW5rҖ:ssA93bm-wV9lc+#*p%1T($.P>+9+`h8!bxw|6X?5׭W,_5Y ˦)F1'Q8	{/áO@97[~i#O p\?xL#8੢.gTU'51¿չG'kk,MJ `%Ir]\+-+\
\nl91xQZ_+U&~ܔR/*W4LU/ڣ<O^_rж# ԓvx3N9iVuD~=M*T˟:I{`*Zny/nJ.(S_MHa]Qvng,o*njڐr"ֿ*#kJ*=09qsАHhZODO <|oFUeOf3#@eI1AuxA
NjtT}|#Z|R=_ݎn-=US>5r"
ߧf^[FmQcp _ۊǱ1ZxdE[[9kA_V8(#8QOhB l;B:ۗ6	j2Ays O?t_.T w
|s@nRLJnݗb9G@0~bWmDL&+]n<RCLtײBqm?G^Z
X6mp5F|^u#>Щ˙=zʻzŴr;5Fa>y!/Ъ1POdhJNB[j}81+m>@WZNUxcd<XD3*<:jܿ:LϘoA C>6A>2c
's[jݾ?
L 梪]ujF<wv2}qs+mG ؙ%5~Q}[<:DZGN{;Dκݹ!OP#@LHk[A7T!sû򶋠P>	( ~^B?̋'Pk'N'}XpTBcpE.U8rQ/(뤖BwU$C<M|;wlT%VK!TY/bTm;5ZjktW]w(bD<s'=OtA^ rd#Q]3_CP}jnEtg~O)7ǙA\on&Y(;pccr)I LRusmD% c.hJ!MU\eh/hڸRkǥxҴYֆqgZ|(q*krcV'!-/9ZUg2L)⦥akks᪗)QjV}LWoE(koW+UAUO)[{``.PzQD)̧%:Y<F:r/WUΫ)${Bf߂){ {M}-
Ac)]y"ҍ0!a3bg +h2M3:VF6<v:LP}Ao[zԟrj`+U]O9#5\(tFOd4\"O^G{ѱcτ>!)}>ʻ]ݫ=*2^͐uLRW]Ee{6kOdwͧ/t+90{tr;oA_p(f\Fijraŗg
hT\{rHo%EZns .] uYSMyk9 ;螧N;Y
	HCl$UۂNJ

I;e'~5[BYst^T^q}my@s0r5mjoCV6\޲` ]xDI<Рl6c	OMUGt}~ezGRxa	ԥ^
8D~!_|`%cTb{{dwؕF:^.ԟVm ej6=rJn$8(0&621i b%MQ_Ȑ3e	gNk-[Jn%#ԓ5-<wRmD"z>,g<@g6tMn9o]>E%tA?qr#vc
r}q^n%H	:;9YˤT *sh%We/׀UVs V}SMI˥au^t;DZ8ٛN ,b\M$lr@׏yWr)Eos7]Ԓ zv^c۸$zkN FIQ'5E]ݩ9hBmRe4oradRGZ^f@3HvE6w.Zfv](9dJ ,r}&_X&TV%MJ-9= KШ&U
W"Kǯ ACmr64ED7TG2=^O	}
m"|QSNFG< #I%du_GnhU0%+j
[;)ا+9GuFn3]Qf57kfĆ^OsQhbV"/%;nę{z:me: sGk}t!}W9%!O[@j| 3VUj'@}m~ꞫY/H O콎>[[s(±{]V^/VUX{(MX&#3:)'EuJdJsi0]apYK}׿Z)lӂx;	sC H}j$x<uP1wG\_)ڮ4XpȭTmզ8z ]i xߒljqJ|~U&B<.,^~B)\ₔZr7(UshP΂˦&rReIƣ٦dUCr:\DYϱie\yS:t^Y:tUL' _-}ȲD?+ UW]y3NYry69A^a;}ϴ8_.n/ߧ.ICWl+%7ѷ&`z"tڔ\rj?P2oT}Ӡ&$)M̕sG#I/T٣)antM`+RB$'ό=1O>/+u-
0/E`
蝣]s!G}.4vѓ
tty)e]7}"*J&a4i1"]JbXӦkpqwbߖ[xו;!&0r9oW!⇷\=TAkp|@fXr;oQu[+ʤpv&95`|p~OwK57c>^hvlEmUܜ:ڹ:A_9	v^_>iyqǠLw Mu-Sn
GR8{еc@4@.ΐ=PZ\z|Rm:<$2 z_v_]KXFsU5`]Xn`Sr/;9=
K/R/Zp2E.kDf`LC;_2#Gb/,nmEлup}Rq7nvszK;l|e
׀zUlShh;J~f=!4U8Eiu=
:4![Q3N2G;vY*uZ,%o3)WTquP:pʬE;y{בժ;/{uҀa;6B|mx	()bTJY[ sՌ!CY 8wSBz /h>
ߒ3\qT<G+UˌvnMqrev"AjG;|&Z1*Z4k8;N7JOut`.G^sȟ2dǕA*ZUճ;|%I+F0]2( r8.6]B&+T_jb)]O+s=5E<'~Alc -NATEHуPW1nj+
t`flsx-N^~AylP-:]~ 0 |y.C˅+ЯhzyHi@Sb9~%/mp;^yoĜJQq]"HI,zr<\r1ؑpS쑛eqL~\AS׮m.xʖ
ZRvENY 9*yԅd.r>B+&!_rLpEt&kKCfUt!,5\Lr{HhFudٞTOD܁Jhd+  oBU">ǴTY̷zc&qs~~9?>W#oLt|<!D5n::
`'eE w9׈qUɿ! 3q=p[IHqty,aA56T
Z5
8Ֆһ?77d9mQTz̗%̫cޞ@iO#yAwsj*]յe{R>OǴgtjς#*]{i1P(?HY]yV,a=ܮ	*sgYvxQ+HKX
Onh4&L}K^ǡ(gS੻;UQ
rPa1
q2HX&Qxl`W
 $w:cѺshZjkyFw8R_Z@sr;6R˽ySGHr߭h A8!Ej)ypsOz79kvn)ky:+yXdlnm9RFā$1Hg`9ӞV oj(Mw;x4)K\,$) ~W1l *ĩꦷmG)66j0'9aӏD菱h:jwJ0( OMʵqkWsnNO	{rujh\4'n8Qij >Ir)mlB
KH4p6[-	(.q
MixplP%*-_
de>qn(t*91yY,36E?6%7 JvW燃`m)Q%>'G|$Oxmϣp"ZL,bsUAbH8D8./ĝ=!M/_*=E,o]!Y.YB7k"ǐ0xIYX8P_sZuZ|㶉\A-y`'@#Raܲ,{M-% $1`@c8N١xOs}iz3[鎘PA5`Jrq3D#޷>xST*XZC;/F|Ui}BGS-_rֳglx4,J$78g^Ɂj'޹ȿpͽѵ('wura5SFl)M_"h>P"U!WFa*v$>+]ɽN2ID;8| :>AmVrP{;JJv$@YI}[9EM]=UoCK"<@@ļLEH)m0o	P샓JA)ۂ7l@1%젎E}/nm^i=htwxC\X*f%/O-۷`+-ѣN%"8ɨېkΌUcwvy@[i	}{̈́-X*ڼd$GKU VW2JW`a
6dBǫ6ǂnp_H ޢ9t1>!vZ>!ܠ](T~Ief-w8ڔj뒝KVs@Tv"b묑TZw&,N	P}*_7PKĺX(7zփ??+Bxp|9.k~|084kԍAmhG5v>Wx]# \+O
y.oB(ijwwX]au~5X}r.*Oo=KC5QÏ{7{VO.LMbџ6lh`>d{8P-%*d];4=A]|xv5::|GN4Z0A=:h̋mF/إUȵ]u)QȖǯ<H~oQ6W=Mg:! j\;^z/pS*S0/G!-JHs.Ծ맥$B2zYGuK*W]YG4+&YUrZmE>V-Y\Ο/4i"cp,S븇UmaB(W<~k.;5:>BrslM?
0hjqzTs$'L?_mY (gy1*N4?S8}x$"|SxE>G()dMnkW'Ύ 0]\҄vkݗOi{qSP2t75q6.?9AsV7w`ebWze̠:Y?up+ 6V%OT4rw6hVJ?_ X噺~4tUAW-fZ@9,WØ{&zlENv AX~Gcon=΂2xv]j}nsW5"5) p`i$67dͮGm˅RGOpT|} C.5U؁'_N(I+$Éԇk
CvIMqX5.;MK5
ST9io
4٩X㈱zjAP̶ޅ?B{~2}pK95
Ldp9GC%ECZ82@k#z.ٸޖqڙ)3ߥ8>҆~iw~ĔTY`ӄ$sI<$gb4hkqvcp\3eLUľ.(pC]}>Hh`i'!Ă槚_Ztٴ;cr|s5|ñ!;C"|QH UY3ۑ0NWQu8<Zֳ;HN)rkE6y5	GP#-	h0*c97nV! .'Pjmב6~P9|9	J
xd
~>WeAy&O@lB\[ W5 ̭,<$|lѾoSV%9	.ųaǗNx]4.߇ރL/E:$`]/7e@/9Lٺ
|5JkHcKowqw@ӭJ+kTL&Dp;PHGBRzj]囀U<R#oDwn?*N0Pt<y ҅bz)9ޟ
l6,sܟklh1έz)oTO<QV,(@Cz5jKS'ײod	95짷irSauXГ_̞i/`S-	z	H p
N6M- |Ҝ!ڛ>V_K[&uzG7{:ph-W|C킕oIO#
:'o}qN39Chv|?'QJU[z^åtƑpdVF<@$
p2)(JysoS[o]\
KH/z fW}>~jU#S@@K?u$T5ԣGgT0y:ZحB^Wݎ{t1\
.ݡ׶UQHJ8qg.k<E&(:WOs4[Iʲw(7BN+ANXGq[lW&·+X	8MJMJj_S lES*yS~衺ʤYC(_y;@u?"ֹ-JbLTV<%A!p/Nqt|rrQ*R4 k\lbB=vv<oEG]t)vIx;jA(,PS=E6vA:*{
f9E}t +
>ߧ8-m᷷ſ:Pɽ(mFFP2KGjs Ƙu+zJ_e_mOvPS9
f9k{|sHӗF)jO/ٔPB;+<-G:F߷{'Z2ep	
4VWOJ3V͔t܏y} 5v؄#zs?3<=%w0!Ph6ו_C]~'{O)*mJSVeR9g_xUGP/x:,q$nL~n̊p7#UDrFYx	:0ׂb2&)SS!+,Zj{#;X_[SA	CKu-	dl-8=Gãՙ4;	з(*$hG Q\\&&72L'RP{E4p@A٫q`A³RƸ59j CHNI唑jkOúeTG_#X*+hZ}ygkPKKQqn()!pG7z 
ΟA˧: ӈK&o݀>n>3Os!M8]GH!<v;ÕE{[I ^QC;=R V!zؗՀ<ey:J}~.@K0\kl|).
ғ}vl ǽvW/wIEr_S b$' @dW7L^*#n6[x
S9=D2DTG]vfkΉAg&{*],AVV_M|kjm@^wgN4|<ͤ(+8Z*m<Do*:,+-\dΖR՝i[]u6<Sz#|V[&0A)v@͏9op
?`Z
E+84Ag2??9Gu<g-Qzo3q#sوӉ]Dщ~?չ/{JPК&c2~}=Tnw\N$Kl&:0hgh{IrJuBKR6c8t`uLp\imч}i[%o>{|DzGVhEFǳlykepU
 .8vpI&+Zzk
2/.Y 8
UomP%伎jJp{`{!hӹl5m9\5˻!EںvQ&7[im[ʑE&HCGǤ b{Wπɓ9mcB'T1m7I2-$>fNO9z5Cc4'(=5oDo68>h;]$ɞE©jWO)0-NG},xã:4~Ӥ_!WKjczw5jfji:LjPaG+;(AێքK>>6E9+H-HӶHT񽨩*7'Pp,+_Oy;m&]\T] M"9@fm&?liV(t=._s@0<Gw' C%EtUo:sc\?Av,Q]7TwJ
=qovv^rT%痏,O
J?|$	xyzGQ 7۝KXȾusKL>55}ҞaM4ey[{F\^.uڊwaC qЋk!DvҚ.X
g|uAWix#	gEj|]MFs^{UOOks;eNw`WxCU
ssK5*)~|uvܠ^Xq63o5Lu# {(]M5\9w\*XR<z\?C0 H:~jNG6Q)cS
rj'֝KnqoxVW#kv'6qP'G
8zOI2lMdož5={ةuߥL'ww;J@NVgPr-fN.~Pyf*|Z>Մ5]Ewٶlt@eUmf9)A+LxDyH6+xG޻#0Шmi&rҬÈjX>T H7sU`6?kMSpbW(}ĿSot0{@[.Bm߸Ѷ $撶dT\nrjKʯK^ȏW
sW4:-2S}壓7qL/;͎ZgyڙwXDtpy8+ZFv dD]!;vށI|
E!#)Qo@ؔsv*5Э|)]H_/b8?YTJ+Yb]q&ZN9jy>4֍1;N;b(3(?Hk+|RsU"#[IyN@XWbGV ɂw8o$2Jv99͉l"Nyy(y]ᖮCjQTvqo~z>5Np:3Jԓosˬ[yl>6\m7g*'	 䩴Cc{8X2:^W	ldA2 -Gp*JfxB
**OBa-y,H'gԶR$|hU9>VSǿH&K{	ZAV'U3PQ&:vwd^}N V A\D=|TY8eqgǢƀj
{tVn_	Μ+L!<DvŪ($WB'QXpSs@%U;2MI}Ec୎W_o0yDKK̹S$(^6פe](n[Wsa5|s:WZp#~i3oY6%*5Y35d9q9h0mwkcpȻk8]m
紝ײмVP$+eou'AtǦ/d{ee:1jNB oVp;+rR{`xcN\r:SY䂽*`nh
)Z_wAcs;˨)>8f7T?ZsZ?qw5mټCe|͠VoڛOAd˶l%hUpzzWrS<
ǅΕ"[r)7t:/<	p&,ՆN-%^.AtBT;%u
ȥsbOg{km׉dR\ zUM&D}Ts]`~m	ϧSMΫ ppɄ$K'Kv^m\}֊?d'xmSSI;uo-JʔBs{J`_Á2vZE.sPǂlۇcuE"vs_#t[ھ<#&5L6	Uu0Ovq (7+
IB9;LJX$r䦻ϗ+չQnI<^li㺥zE_+niBʵ`%o@Jg!f>%VNryx_ޏRz)Y:^G&Mz;HgRR^OľQ$#D\"b=2J2K#ϯ雲ڻ~!`ߏ>v8Nݟj!}Q/.Ĺ2'~"vR% [8WgvliG`8.OY*Bw>:<R-ae+J/`r_,G|ggVR^aZ*q5Y^, nu[I?qV@^S~euaWΕu s)KWᇶg!_e ixM	59
c8zqtyF1]q$o
Sw:E6OC^kJyr"oX:I;h\_YO)~c
pqСq58;^IQEW9{NlƥxYTPv~uK%YS_RA'VKѮk]9re#	O
&a㗝#zC5t]!%AGF+=Wl++.qδ	-ڵM5{r r
P<
Yx|9sфd{qu+GPnJ&
gYNZ8rb۫.Xj|ٞtAuB櫷/80*}j&gQ&iQ;|j(c5!dS"2sȦ+#vVo-WmꦏvD&Vi3ѨmC$O|7Cbdmo[¯/<g8;I8
^ [&Ύz
8%	*5Qw4rϒIBz #;B0%C-wdsMQ릃Ʒ[;M
5nGc&^#vQc4w`%ڭlVh٥Y$.5Ud>Yp
]ALGM]a`i&۝}H
|`.]n|[ ,q:*;yLe:Y_m깈(BfpbCP.K\$Dׅ}&*a@{lW=ـ%U>)d:I܂pGT2r~5e
ܗ<'aekҕ4-+Bc2+[S2>c?O.m|0m-&4qkj@&?CkRN0 Bp-:E>Vx<\6\ǭe݃^<73P3ȿ7- }a3C[]we.UIx#ܘ#6tJ:HJ2_8B$+W .gs	Ȝr7V}]1E2NZ0ey0oݫ</ bZٹQ%!KM;_la9ҵJq]n&VHZʿ)Y	
XQ^zW@jxoz/FX5 i+A`	YI֤A\(h)Ac0ܦz9[==rKHA4[g+*|yJ#Xl]?X̿$X;SKFHSmT]BS~CcnwE(j˙o"  9MIR^|*QZS6b2a貗uhg& w筗v=e:ܥgZ=nYn|'/e}5h#h8Bmr5??0<yЗ-z
s\mO,~NܤrG/UUMҟG6(yvT4ҕgf;lnW}r?B쏳]?D=5u!;7Y#ߗ+Bs?nzCLАt5vU L~H'ܾxI8ohv^ P{dUbV9%oeq)%-Pԣ=y~R<r#/0g"#jsSg/hzkqO1~+QNp3\"B)xߕβdIW
fO^wȓ~ܔNh'P)FQr)*1dwW#^X,asɑ`qilqzR7M*IkdV5bؤ!X'ŲzQ"ڢ-nAm\-1z&-uyOn`sARgwhjvJdx\H(p<1kkXk4*H*m) |kWn
Mw7
Z)N2ysy렰(۲Q!3
&l/	V棚Sɪ9;ϡ}UJ)MdE j#U_l;QlWa,ٻK{RXp2s9Rt5sȶ*Bi$l]`&\Z	HB]hgV͵ݠYXY3~nB(},,ݟlX	X>N}f=GU8yn_h{mr
I$OzJߤjg9q{1@z{` sg|cv6Lafv)XuƝҡo
 %YI܊xwM	{pTup
UwU`HJ?m垊ҮM LdbXߟu5niƃ#,85|&`
.!3QIk5o F!u4ڏ0&H5$r_tM,>&09ob1F	K0&B
,l˯^ؐ2jz`g$C+⥀ d/Ra38~Tg%b!2ma#,z^D[]TWl7֙̰v޾`#!8Λ!uH@кV]2^~!ԂNhP! oSڬ1?GuG{ThdUϬOpM	6N}DP6{)( ZntaTk|pj2誒k4Vd<S£dVиCG﷨p/asء5El,3Iw	N_=<
ntTߨE=!?TgZ\T䆗?^EwՀ.]Sx=ݛk޳(/+[a~M8Gq(o\VuI_+N,YH~W{"Obt<HXM)9WG}H@r[hVzw.Ro?"	ʘ_e*~[
0(理w-,o;oV
j9vcx8lBEaECu3\Cf{ᴑCi9US
] Ro>+]T'/d:Ig@SJCnu^~lg⛭yk宾bL~	t#Kl)Rqܒ727%K߯W mY.p@qy?[Giq
Cc2>f4Q99qQs֣bF_K*,7lϠ9c^{_Ӗ0vOUҽy<@4 x۫l
S|/P
@zSq]vM~~
 
>6U6@qS
L
/?.mkBﵔCЪ]hM[Ř`v~6.jα1B
v%mSF.Fuy5Z%k}9Js7l)s+RY;>
қTƺ`ڬ#n.~<gTnǷeN->'G[-\85_Uh2
b

FzXOߦL}5,qxF/*JRuBq%M~^]@%O%=;XNe(̍]h#IB\6|9AKS7SU`hܵS>9zZ2֤^^rD󛻰쭩U0&&e9(:U59Bc
DT.	9/1m/'f.A_x@R;9歄JӃY3_vL03vU;IzK5]J&s?[%NL8QKG$YaզM0j`95&%CVM||*7?SAR" g
P{V،忂%rZ%e08n?zr%J t&\ |d~rs=@eUz_|r\J68)Ah=V{a35YSS֕(Υ#Eq&y0=,Y2|'
YٲIx
۴tK+ =zANI?D[u~K@KKg/O<r}C[U*i(.فKb·\Ob7?ut
%~t-Cj:

֥ylUIչ3TI;$  'wva<o%i308֡w[uA5I ,kyʳ\AI]GK'xpqbHQ1o
Hcտ[Lu$=3/DH~}RܗfYJiD}.sok#{o%| g@dJ~흒:(X!#qd.ۮM|8l;-bO{DУ?aR5NSsֈ!\-ICé~Ҝ
;)BSY;X <&*e;_[#kɵSN?>uU¹WdAsNYO9)Ū"$ĉrG4?{"(&Tiwq9UFtVRۦo|WP;<L?ݞ V	9 :ŧSBav fn x7&L5WPkX'fT8{6tխ>hd> 륞	%e+;h}e}TF.tu&$p0(ݕ$MNTn#:O9 LEVb~`{_vo#~:i=4gOiGQ"qRIPsnp獾Zݚ@
T߫sYm'nRdMQMlrfo
N5$#rA|e/,-jxY~󜮇i@5I\+L0}g<֏ﾀoy>4;D<r uR%V3w=A5QtaMim 8j&~M
.+4?epZ!6E]
%WQrade9묡o~&$`
*
CQ#+U*'Hm-)TóSM5bQ3%< 5JV W-x:MkH=-ր?Uyiw_cFΜvω$ḰMlRŵ{הDV$sUMyx;ȷJ_Mz75#W
=xA[Ό~L IA,gog l./^awQqwگA-8kClnaqYc]F}&"ͦm	t%5[xU>{M$Q^EeKT@keWzY}(QrFIМ2%/9>Wo@Mī[CY>p:<z~Mԯl=! 7JU+U}9QC@S&14w*SHY|=7Sm"!DQrIpAOe$"ڻ0ّ7V+RP=>0W˃'xt*c }āe\`zHL+u[]t+T.nB]5Ay$]6%\<HN:pVv8p{'/w~l&8<եv	i}~&Xf_?W)}.)IBc:'+}KBi=[n!W70M*zq1\ybI- S8e`.:K%Ϫ5XVl|AFu^'h|/=㕏%_wYuĺH>ãmA5Cxskru
wXɌ*ŴngjucL4ԍ%#iM}Om	
1SMQ=JȿZMcA秃e@x vjͣ#ԟEwY)tIJ[@C&֢OjeթJjeYFՆ!77Ǧt86ˤ=CڃeI3*PYox_P+iIդRt7&Xof

]`Js13IԸȘXg؀-ɋrwH:rOuIH]ףCF{&BE"\Ɇi<lpVH\V&%E<^XB	/{9K	
in.Uێ*zXʎ7+Eq7b.Y=F~s뚺/r/wTX95l* ڝʑrEEK[T-]B`!Hh@MDvY xC|N-.z0&WM󙐪tЯ0t(z#NRA0W?q3 SHT˨7G, GI1HMPȎNGQ`{n8G??Ev:KT3l-vKy'fO	M +D+;op+[s[Weo_H:t(M kG|1Ӝ&,Q2snQ_L[tUJ9yp@7*!#;xǼAg9~ q
u'VŐbIM-leFHD+$ш/j]qyJ6e=U]IW1c\SDb|t14n ѕX.=EСD<1uB[;䃭xk笃ہk&	|ICbMqhtMōkeǖlz!b~ >!s)F[ɹγK&iM#sՂֵtHAj)[Tٙ&2B_YUpSOv@\K_Qo[KlgUfO'"Z1S˘`Sv<`IP!G
H'btiVG=nHId/WAڟKU	MaKd\uߛY$$`22_vmp[3suBD	-´ 8r %/8I8w*_}MkWФɎ"~O3<xUO;8_eRd*nI%O>Pѽ4qRXJ/2βnGȧ{x#]M>2XjީjcN3 .oғyUej#UЃFD,[90gCK~-Ԯy-f!N!W~|]-lсH (MWZr@Jn7r&hJ+8E\pS
L;-f.SD<>4 |cB&W@~	
458r \ |]((q<7EQw'.LaԔ9/鞤n6t$h:U|T^%wzş{U&VL8WSxH6wur-C*/ʥН:pU5#&ǕKӎÈ%s:FO릐-´=oU}Q2L!|tg`uӆVTQj >uOʤnꒄ`*OjRr&_innJ?l'3z/h̊D37DK7$ӭ3S67ߏhV?jpA<O.i9.sZw޺j}<ll6۸MV\ƨa*J4iP*
!KqdGSY,/96{؏lT3SU/i3ܹr'm~pkxN1Um̧őDn#%MLI'4.;C!_{ʺsfmWv
!t%#,JIa#>m*EqRʑfǳ흨5:%<5q/nt΋yVAC[ OH
r.!?WWSnSK͎_q&WHO<?zY
/puχ"uE[쾁aւ_Sv_[
hhțێ\}qr~oi`P>]O ,X!qISgR#̥έe xt͏;T'%@ VԸ>SYKi
hŘѸKI?=OputgU(T\=!sr>&s2*|l	{7kq%*_rmhB> ȡ 4!VBsp[	wnJzp|BDKf_6#Q{q*~p2fjXbss7~~<,>޻~}t8͂{áқ_Ԩx+YsT! d!dJءAZJB,t   D@k|
ɺ~33p"gJ<L.UDyA-o$A.Pj_jˍxI\#((l"Lu=fyPR-z>~zp>/AbŒɳZYr~s}`ڏK!@Z^=HR-TZ!sJk9jh0(nD^ኡE
Ÿo%[Ur$季9x JG[l^ yS1.OBOltr
c];GlmtA,dBKWi+'9Iڳs$xDA`GU.7L
 Бte 
/V>PY1ݥ"qu1h=[ҫvk1ndה,|"8[8ЏH*sHEJH`!.jh
4Jm^]A=1]E
f.\;#R})j}QV8+Ȫvv	U\/]	!y|XWh'wz_ɒΜ4kbJ#qrzRv! fKQ&w?AtTB! `r-OȶlZOGh8e5_ݛ.t U vTdС*l: %7$uҷJ$q!B,i:T]&R6p5mpP+b*XlIګ
BHjpeef!l'`@"ȢyCj3\Pgj(Z
E_I> _`*TuR;:▮Y;Fkh6eˠu9zҴFV2YnHqSUGY^pdt=A+Pu]9\ 9kl%ړ\jr`WUoǓ+G	ZEvGaqIT	'<qMr.$ a2y9UAun.R
b54uޗgZUY?=x+͙9*ZLOw88yΉ/I$|ڛVoBVUحp{ETF
rXR18*#:9'' :P{
H`	ZB9<cA%b>>S19,6g5Or{;(n.RpuJp4T#;d~a7C@ӷHnίAd͟+ѳk̛ ͋Y$?n|LhOoT/=~>=?R]0L
wXL
˒jibTnٿ1RQVcjx5K_)EUfst{9b9?=Ofv?x'[(,.TGMN;WajvzT[h3۱ڲچL<dMAX֗5q	Gh1(fX@>GZr)\.ne+MXV{+}		kݽH.4j+͹5lǋgW;ʅtv\8Y
OE*G8cٜ̿PZA˂*A"XJ9u@39n:&V^H:$+U/\V*n
 gNC4U
/Wb8mrz1dKng5*Nv>ecR-4'IEu`	rݱX@DVQIHlQ#t6Uf@*\[?_
֊D/(_@3P(SUʯbխxv:uv!B4%|gRPgGZXQStVIF3$v
,Zi
] d-mrooe䔶dX9I['E}>	1EC	.9,tNɈBy Tx_+Ĭ˧<:z.+C	ZѦvz
WR
"<O@ȅh48K}L)vF
ARA	 -qZzŜc=C0n1ѓs8*6G.ۈy%>|!goRw`Vbi:/ǩr 	
ҪӤi<ύ,`0wsnѵJ
 ̤jɍ˯hû]CMtӻp~@IYsp_ɇ(V.fȁum1\}[m|#^WGy	>anQO`H3b/l
ڝcu>s%שҭ*[n>6D\:w!5H)?JuQ{RCdNt[q6rReiZ=fii*?UUv
i@v:-BV9FfϠ|RQVc1+7	6xsW*mL>z7aRO7_J-~p?MnWf\ocRE#JgG!eiV:I<y8RzɸtTp?wu5o8&@@/Ǣ,`Վ; 6j*ҙAÌe谥'Ʊ(yP*5qXnu(+)U2`>@{L5)#
-U˹@)!9 j$U|_=`@1Di>5c^{
7W]5K|\<r%w3_N>,U
]D^{N@NiA vFH|PsIvnL~]˙wzENcaŊsÕGGt~	[mu\3D)n<;uum9AQ?z(@~{^pCǬ3znܨ~X@75=oVdwФrߺ}֎,{iʳig1PØchZmք҉GzƕqBtKֺpN ;z'JM1ONfrK*.cm,"%}*Ƭ%q/@F$hT=Ӵ֜~ʮ;kjCM	4QG^EjL3spĜ_컿N3 3K'<MB|t[C+rT?-\`'l
t@ɄËvvDGIG:qʕY+#cKpkK
A'PGݘL].l6N*P,tgz_&·kԮs݄\[Imvs. 3Dj8_^
Y<	ҿrPJ'sV+Qǵ3"2xcm<g2Q*T	4{~:kcӣu%vg_9"=KMn]vXvV	QQ|Ml9XZ_DabnO]}P|
.Ԝc+AzƩ4?@AڜB9@Yr/M>Hd<pŴ9M/f*7DdH$"I+Uȱ~CSҫB67oxpa+Q#ʟStE	SoX._$+T!
c:;}w.sXUgBߵ,6T<C)qgR#9R/r/$G[gKΊJs}dvPi
W 1q<;"`R}
*YSDWM*3K^mn?;>YUخPީR{Ep]AQեN?$@1|'B{՗fĻZy^>/py(	( BL
v|:.Kgm79vEk0֏-6osSZ_"ՇMOS*W0B+W̸,R0Hng3BƨWtdP-Ig ]7Dp U"I[6|98^ osí ׆gf=ym^h&k3 Lӯd;g7UGXk{	Qxi|ЪN?A/x
)z0axNCB8Ľ@5$Z.<MToZ/B*ǡE\pvݽ%^je˫A~
ܿ_ (p
ߙKgZRXzǳB:/=ww-F8y4	*0B%s%i dra_K
 RC2|7er}tSspd0OR|Nq́c5OեmR}Ap6уH-/|nX۟f#'p߆OxwUVVSU> XG>2cOx-Ş
p }[w3THlZ.Ի2bB.,i|Gz%Oj:40SviZUq#nX o-*iWY+CPȧK6J	B.	3k>ew1~.Q/hg#9Rav˃
11MmС3<jF]b:+6UbUCZ`6|Qt5CNZCQ`<5x'[S+$"k"3`]LWij~WwD
*>	m/~)˲ņ'<v4@@	Owf}2S.qڱjM䢣@*pJ 1^٭{! &j|L7?=v4UgHٙ|nb3vI3D|w$9(v:q]ns&ǚzf<UrQim8|ͻ[8e\ȱY>[؇@٬P\Jد(\aΩ]3QDF=x][c H,$Pe-|ERmS}O

tBߊ}OV@
'P"<%ᔐB'"fUvA8A6<2SѥfF.\ vj@Rމ-c&8d\ط'M`E[-m.<evVxU':嶘oLiyĭ٪kWI)
ѲZÅo)锧%u ܛ[?y‿6nǇMӮ[S
4 2w(NJGU: [spҫ,qG﶑DNSK^H ǅ)>c0ī4
-VS>ߒ9qHO;_QZCS*1:T)xD͸gaPc[г^3RbU)DJ.ZrYρ;qQ-9dsH*ki;Xq^"71併UNN>N߉*Ӧvr`g8yMzxa<:uz!H兓mC*ᚉR7oo}iWEoֲH!RUzкZ7\U K{\QݾJPA$"r%`LS,NQ>A
.Z,y-H
<Q] ;#tYGq [{ vR-f^~Zz1ܪmr8{]:)?b!~?`uӵ~#mqƅYM_S<du1uUT,t8i=W189d9bpѢ=f!ٛ_:#g?(S>jr͡p&o6cL :qx|p{;Vr,2ŻYw)GK!Zr?+[@*V+}9tUqS{"s.W4]̾zIn{GXL?y@듓N	4Iƭƾ#VUkEE(HnUsjqL@-.^M\ {]xH`WvB3VKW|8_ s)ev):m\Cm]R_HI2,沸2r7lSA4?'z/dM+C2jTQg(CT"i)當
4	.5[RɂwWuڻn5]Ad[{|!DE۰Q\#/t8ya	GI˻k.~l,q]|d	ZvF8t$2`<0r:l>P!,d%r6S~j2:mlRNzexuܬ
s=d"6fQ[>8(g`:EYNE6TЄ?GsE#7`*I!=YG
^Gm9&kVnj/{`aD5!mv%ζĎamtmt(5?Zv/sJnּ֎r? CuٮOmVX Bv:nYr
H(K}ڔ){mGG]!:խhz$} :dw5+|'av:_Y~Qs}DYp=ڤ/6LMa^ I6jݭ++D|$Xsv	!_L:/w.jwtvrA2wub\mς%< xBH$l- w0PNęѭ=zoᩤ@t蹹~*i⢚Wӵ%$~׳8yjgz-DD7%5r4/?O^ϸԚmuBH˷wFkYwͩ.KO7[\sC-1|Ο@Mh](jLpRc1J'ZRR3d ~?[[d,he&WSkP9ܲY Vi"mKGV5ߒcbsZUvgfJT
y[ 'q`%O
8؋B^iuDùgY'EG=[Оcp92+ٚ@ ngl3n^$  r)]Bg8zujmB84W
rp\a*A	2L5h$`2Ys=TT<>%5݉d#>5IEWU<7
5
:.-4l9o^1/QWMQvw}+r؛SN p3,\!`oF
"_anI:qnukYŶ)d5 4P:N^Nޥ:NSa}%]Zj	JMogw35VY\%kG{;ǃ+yv15
^×d}]K;6) 9&q_=M12
tQ/aƻzq%FB&'; T$j}~+ss*+pNcuK8oO|p''xb|jJH
B8=cʩ9_ρ=Bq٫v+pDç!5ىI+U1RŲ/<璘7(9*g;ܗ-im(%^m й5,4,t4MV	Ktq^fu
/V/Oώљ	l3ɰ9:6TOؼ\VSw	jHɁy?PO1`*ʨe#Xy!;dL\?>K
.m;WMnxUDPMY]5v88-G`}$w·ye5tLhZR&_#@w._'E?߀J<R%vX"IpQ擲Iz;olp$znPy}8zr8V@^n
j"
{N.Z.R򲪎Llgtm<^~Jk}ز(E0"jSm)^SlHy&<z?.pYv9͟ҾDMfxodK7g/êIJ8)v彔xuٌm.h[3$`v 7k9}U	5_SikⳎ!Igw
J>T-[ Pc@\Bɽk[ؕ;:`VM[EL䎐4\-k#&kh))N?Cqu80pm'1uor$J]lr'GGAs{wWM(P~Zѷ\W0׸Az^6NI빣f}\m]WˡV]Gv7oAPLЫ5zl~sUQSPW"v_g$}+uױXapS+V҇HW鑫[0g~b@BLL)Mu̢2Vf4r:nȢŠ,g@~Uu&ذMj% ʙGB >sӔv8ܼ9%C
[wM{biIX֫TwL&T}|XP #rPί?ka~6\3I3:؁Fdn7Ʌ~V	|Z:tG
_֌.t&!p]/Vَ.p߮(qYBAg5]6+w?tvRF$>
^_wX%< 9ʯ^<+"nÚS@,GF$)jw#薖 <H4֡[oDl,Mի;r6<Ns =ZA\0咭 h<u:E}8ds֞qY]}yv #`tNRFy4
Y8g(o<4 YHw]tN(˟K9g+H^E<Ncp;Kҷ(SYᲕ(}Fm%9؊lPvmhOr 
xV`'wTgzzg!E&mk;7Iv₡Wwҋ$
JV=ҭ'^!]F0v@WUd^!	Xx$
t]Ƿ?otWHE⚆403$ Oŕ\ӕ1t߅緕%luu:Or֒\ՊÍ6.QSy
BCؕ=l6<uJ׳x ,.4b̘1-Y]U7aeKW ;x 7ex#	@˶9
1tש
⊽ tR'VCǷ#.&d]6%bW9x<MyHʤ^.>-t~}*tEÓWh ̟CׁcQ ` qRr.8i:0%+/쬩-D6|
{a!6n1<0Y2d꺻.)X&.TfA|$Bl:bp=E.zbz")dP%q}HqP(sIdu	=_ٕhWNܽr7T NZ,Qt%4=
ehQ,+( .bl%Uo+wjM
?9ޕl?)5~QƓgJ絓BIA/C.ݕb
mAJYxvt ߊW֑o #^ (5?VK5|ϑy!cq %8ݔA_lSx#ar:j% N&x@CeVCU5Z}c#`;P`{*FfW^2uL69AD)rSZ^8C{ ]r9Oͺu5-oWT5alkڂYsB]
.Hz#] VR:7IvVnr:ѣUoxģ浈Zp!eBށvߠ#JBxdۦ ǵph8361ϢƕyWit&|@Pg;YKp
p
ȭ]u-uf"Yǽuy[#Uֽ\c\Iɷ
q/7y2/oJgxYӿ߭	;֜_v_gAF
.kR;]$%ܬu'ki/9}4+z}m[vK;;祇mq>u7|͟{uxM%|BY?-{n=YMJY0S<ߪMvRS?(`ܗ]ն
@	ܝT*gd4ZQ=~{I\m{xL0%[ssIS' dr̓@V
o`J{g8/EzV9K;	dLrJ`mw9[A⟝鋜~7te	?W\ױ9 j,>!ܾ#dfmUrId#CPۭנ'uRmͷrT.ϫ3I2mG?v;8o)IK_s`56+y 93iv/EAdAYzSgs$''%%M\/gV)
{	ȃ~[ʝjq'j	 L=4S>>J=vqZZ:*6~X%
,Q$IV~{T7*9Fp;
L A,o`mI^U9U<6vtW?7]aYNyE3]_jSw8Rf]PYդx],6vL\ENDxhܧ;C_Y6j
nDη|>T&¹/v(f,@ tnV_}z9ßRLYʻ ۿ?qf(hj%[r$]D󦳟F`q;ޡZWτ=x`8XB_:Ӊ`l7+DeV{46q	2q
nl<R>GR-hgVKz$/?r6V;sJ6
_WSqp@5zGy8W$cs`DNp`馒<V%*ҵ O|̱$;Z(?1:_X
kՒXJro5eas|JXQͬxFˆ4 [[͹_g'WK헖XdZ7}e9yq:M1ϙLK:A_EPwdA̓
N1*^ =(l\T-ͮ/WB7dB,`h,pl4nUpAvc(ٰdǕ%
$/)E~_U׽"#ILUbvjk;1-⏈ChШRø:\ksoF (*I7pܚDD:Tg!%eΤ1}]L`K2~ad
qd36YeDq._U+|#H_$
%%UbjGl;(Խ]
+dm rogx6ݜL$(5eW*[JKw9/"jrqR^N])/(d)j|+0q1ݽ\KS߹$YI=~doiv=5tNg"( s~Wr$S9A:h,U#-/[ nY~{eAhDfpoC&(gw/Q	ZNH؅$g݌Y
\Մ,D`:zoEXuA^^ֹ{X1ҵt"PQ4|RMӴna_;&{=J$._YAK		WrW"eI@OQU"k\erǛ0\{/&yZN6v ZN)iH( [Mh8 +mǨUl5X0֝L_/g!9AAJr3OLevaZVD7˛Z=קkRσ7
^YƏjp8Y=	w($@]c]L]0<	'`4Bu8l*|y|B:KiT4ѕM*+11+Vu]m˝v. dPhk%nMuTD<FK86t
Gjs2*2[q7jJ#k#+46_TFWZѨ
n\uF?@*nz[țT|ȽJ]{ R4cA/XyFwZ/>"B /):A7ubC$cT
InmBR}nY82SLp`FJ ;zgAf[j
FOiY6:V'έ[m011H\*10VHj \Ka'i
G{RQlj?4[pxglm=|s^۟NW^wmM{|ܻAnNAR<U`rt=Q7eZOh0Quz7jntOwA; ̤LBi
7u[! XRdt[U&+lopC΋	)#r,P;څo1oA%;Fy	JѰeM'j4vWthN?jHrLhcßFro^D3tkWHIW`x?M|h٩TWuUt6}J#'GNVY:ui_y	[6]9횻01~y~wɮ/xPAaV-jn.xu7@GՒ$!V2dMd9Om$DϦud*
\o2m7$xE;g(uPHYtpR
}l_D@+x*IEz
4;A3n4ɍ}N/uuh
+?FTvNΡ<ʲWR4{3D.N7iWl*ӯ5o'۹
)X:50
Wo7IxzDwYRg
9,3`Énk-M[9$A<b37&+wN
`\=f$n^R":uˈmwzQЁ{s,JG&ߥP$;FR||Vt8!լ4
	*=E)ƺ螺BӔH"R~9v 5άm/W~q,'4v,Kb@'yn `	Y"keW/yX,cV/gOݦW0v U'`c%R<.t\6R%oG47BP x"&{g84ʃNNݲ\a&nw`H;j[!qKI6"bI_el]0dF(Fv-qGhuhHuBC:ɎK8_<7_FdtAA
0d5HÁH%z%]W媽Ypr舘}IRVcr!$$ᐒlg@TǦw!X _v+~so]L=.
lҊT٢wB,ď(
e
,Mll|plr,8=0pu¥sV%[l"; LEa	:5Y(^?}S=A9Ot}4k0nr,LʙQ
ȩ,Pu&dg	KԏJ>&xƉOt!il(JyrcPCUy(|gdZ؟ot Љ!p[!"utϝoB%5tr	q}@;[~{Iptu;U-!ZhՅ\	Rv8NXv{7=Kؼ!:M]hT@mA1֪ޫJ`mw2=O9g+Y_G.%'GlBn(`iuVzTگr*Oj&N@tǁxF5	fRJAR-B!l9c;;ϼf R ~&2zc&zw$`|iٽWB{F@oUD(s;+>Oz}w#U>6W'ʎ<NJ/B%/-@'+g#}j"w[`e[y~Y8[]ΰ'ޤ,WTJZpCG^qMh$ܠwwb8n#%Ͼ4<u%a=#Q>eZYQ}4`s{WxDzѸ1?	ɖxr5}؊Y9
ò4]#'Q78qnבK.s>bߓDztߞWr#a\캝"]qfzjӁ
>|>'%UZ ͜0߭m0Uy+?{TC&<5Q,nP~Zcw::$!å<fA(^g0/>js_Y
8H,ha?}uI%0WWtB+}g4<{(\hg!{ќkpR7h}@IǢseAC}(L@r+hhr2GwU'̪J`> )#=t`ά5y)HtH{I5*ſݺAr]TpJة5-?~P圭O;epUud'cVɑw<7^+'>wq
r,^_u J,C֑$>+i+(漸W#] )yqM;ꝸj5MC)DB<_xo}j^AO̗ߗ?`\ԻM⼒]B#t
Em6^ܢ1;/a`
TvTv_~;*vF@,ֽɷp]	h){<|M^*`Vܫ	nW9:7SN𵉞ZN=p]:ns#Oq|~Y?+1%'cɺF:}60=wX,ʺPՓN+Ȯ
O<Gq!p33u=P>Ĵe8zkI z[V Xi7Kuo6XV&;IIH'hG鮛͐yr' !\;Ö劂
^D@WdD䮪?ūŰn]^07xQD$3`u[t#8|0 ܰ%#/;ny{7]Vr_%^^VR;	k9B<Ow>KܲyWqgi#L1pD,٥M@j-85EkAZ]$	Ƹʝ_Q9pv1:{͖D`R2^
gW!E#kp]h1	M\ W'!e*ɘKeP{{Niȭ>n`mVJ^nWNǖϱA-{J>iR\LĨ:{pN8I[FQ)ߪo}ҁ Jo.WUyӥ2I5
ƩD͡N9|uAx(JUӎt,^rM'H%
wlW n|ON舘cb*UA2qs j1o[%Ql^ֱVlB@`F\ n-e:'Z˚q6{Ο3/S<J_	M*#ܝ*͍adݽhԢ}t:0ً5l{U9:=#ţbۻ
;])-33@!K7qyP;Dp;KGd?`D07q6,zs'w5#*l~v2<zY!=_L&q%HG'}hJ^$~bJZ^5
-ٖ$[oVÍ!=; NYą'iBLBߝ=gW6R8C#K>J~eFtӱ^Vps䡁. ̛U6ĉxRD[!Ry}tqWs
Ml@̙֥^|gw`|f +5
BBDxDڗ[qMĥ/Ñwggx<9wB]ԃn/\oֺ8.mZ4wAr~4^O
?
SiSuU5Co$Hu:Z,XsۙVه JdEPxpskoMAzHxW^:~ťgJJ跁`7RJkO4Od
dt?i>4ԩ ]Q7\QeWwjsT}	Lv f#\֛.%Vř/OXA%}HW~!+_ό&fQƝؠף#vI(bÕ=6'<E6|A>
s G+^-!|oֽm1y8םg?B
ޔ(s%SM
GA*>5[ۘL29*`kOg&!vh6пIA{Uk%MfSk\N
JobOܶ#V.ĨͮϞ$rj
b`LW*=>/HPz8\UX.*tBFܼXR>BW`g(`@;_?*|.}Y򻚱ɦEy֩O*)@)dM
g;][]x-ru[Opou/W*V*^DQ*&{H,_ޜLzJB$_"iq]{u:걏$5SukX멧@BKv&Xtk~3h nӫvLc\.UP;4)dW%쒑.>ִM*?υ[+\R儗R71s`+9,W.
&ξ<a @\uI5QPUt"j
avv菾^O":	 =q8og"VAu/,Z
rPqyj+ĶzݒٝvA)I$Kb?x\PGR *	uȯP+ϜTDVwck
X{7й۬M? LT+67w>r-`BJ'`&tVqI{if`kU
aSή?r4=!1M@R,,4S9v$7Թ d5qٷ|E(r,"GǊc\Giw	|ڭ10ک3+Objln{;}G</'pV.{m?:7a>2SoFm8uޖ@cI魭
S{)y,4_BW^r_]Ng!3P#D.d@x"Eݚ˿;vR׺(ަDd߿%PL4jtn]^
qRn0,j˥?tJov[[TN>#!o>8>5TU|]}d9š ܩvyonu 2R[)#XYHggӦ]݈,tgo93T
>wz	Vjh"*Sςt& 9ʡD`$g}PEzmfjQ"dBHzWI,w;55ԡ6"j1('
Jsb!Wm^,P2LyOܱd[?_GK%S2p߭oK0P=ЌՁx✎'\7ocPh~J]/16LȦng[!+9S~	qt&q>:Nk`5MpN=#}BW|g~ ZUK>{SRnGE% 1tyi5w>kC3<5fpL3Q0D=YaEi 
y5=#<RouˌU}ªegk(í`wO)ΤG*v|#r4A[k#債cfBZ|`	'alJذ&rOʤ_tSWb|$7-(CڑMBI+1[vigشxo=r
7rO)`A[wq52a+I,'rQδx('O.)ao˴>@8Xc%'+!ΠF J ۪MOr0%̩4\co!0Bi9[.E s
9@OltXѼnʵ	{X:̛wf2^FzGΕ7Ja۲1WW/ؠ|=!Zfr!~DnTK?L]7H&qo9k#>7$XU՘7\ZtS2وn{Z qߨ˞[}s`FӚ"uʢ݃F8Fa;#E2qt>hN~,>\*Yt ;: nՖ/+-=kWSdTJX-k?˛
ܦd`ߒ,cA\ zVGw9@|@'O;&Y+ Uu>Տhde<1|	{Z,KIYi;0"_[eed
~	I;1f?Բ*E?hsڿ=[>Ex%NngU:l?ktPgTFr|e%Щ'<+:?@2|aV<vV:ђg;}쮚Ԃ7Hu5&eG[[yK?Ӗ&?U^nڞ*=OwA%
Fy>SΟKck
Nph&niVpY_]A+3h =]+Iџ_LYI[WF㛗
i/B]Ƕ2Iv10r`y(3c3ϭ蜁`נ{rO'h5}y(LlΩ[uAýyl@TKrq0/آ`
>^{y/	Ki~*[S}{?d5ysRHO(U	izwg#TI6Al{SO
kvl[mGogˤpHyd}4ar4SXvj.o^tdUReWl8.+Cew.i7l`$יzG ޽#V#Zt L&>[yy@ꖥr(7b/p⩇L$(96.DKVS5
̵^]y<6ӝK:TjyҫklGGp3 IGX7bf
2Mv$t,:xYCĜxc[w35؏_B$wNwH_NL|S ¤D4GIjHfv+T/RaZ.!d5'&(@iQ$8<Sc<SEN9OvCjUtK8=:'{ɥ<k8$Oݝ
/;8r)ڬ
:a~Б 㔉1ݣ^ՒŇy\盰Y!)ƱYM AJ6d1Õ $ymNBQm?v<En7T)9FҜ`V
26Tz6lik
gԟݪj(0|{2N=3d4?\{/
Qo~|:|Nސ3\+c/S7q;{\7Y4ȱ*OQ8\Øħ{+rtm؆M%`hb	
Ty.>.PttihWtYAo{Τ]:⢗ ST5=}⥸x([aখ¨q& /691:?5κ3mWwfr!xQ"s(v/Rc-H>K5CկVE#z'ݡW,xu[@" Z847j9N!*MƤLu0E\#f+Ut*׺Xc"ufx9@5pNSgc!?*<Νu//V%Ū Vo6^`Fpc^蘼+I%G%ٺd@]W*J6vN
d%3Gf2uga}uuLөf=/$j@Ƈ,+P窐%շ7'u7
*O^S;kЛO~`Vͦg8 Pa5v`89{^S!=Ky:Z>V.oXyya/qK"@<-~;>KK /8˶鸩îDj_tvm/85OSu~r#:
N1ML"Ȗ,L.8\3?_TS6,g}m[&8;Sb6HX=yܢo(}]rQ7q_gi*DtVV H+gtԣqzez4똠dvgxST7oi#~/BK!sZG1qgɕOPdw_l
FGw4[%hy͏$RbP^gѧ46PSn071|"o_Eqq}F%8j8 ݦbh6&/99z.@5s{^17&DAd/ZD!s&vbLpx7pr|)Rv7-_Hq|aYs'	s־/Z~ue`onֱ]`yxhaaR4U0M5=a;vgIkpX?ޫ[rχ@<B؄*g·UwbDy5D}X@pf<)
ȏ{FI?zonݥ愮a*Z$Nz{;kLraѦW
(}n~Iܛuaqvٴ O}쮐b$u7΍'s#{+,m1S9|]3qR,Y!/ 3\A_/?ajsjzem
c}Dg籹B#0pչu(=د"krMsZ	vGrJ4]+C(75ֶhmE.'ȭ!0cE oO74cq}j
qKy1<{kZj=߹k'd١ж4ԼDy:	7x.x9Wb(&is<;-Q%(v5#*0.wv*bW l8*G-/he|GW?>Pv=GMK3wADsjsukw4i{r>+w;VG8k.7Ps5`DgKW&GshTl5(S5 !&XpL 	Mw~QjcWn<vA9;XqQ`ˑ
J=-??cK*
r+nSٙ>p]4L[$rP[~$CN )줾	,Chq9֊Rt]8{wp':ppCO9o\cBL%ΟD+
9$}ѝuæFE(M=K] z8d@RNne:8ԫʥl$e$p>[ז&LI	$WYigӆaw]"MPZ',;2Y[fga/~=,}ז#;뤄Jm`{&~/*YTϗ8}/}S8ۧ)jڿ,wU.)Y|4>SxK%@m{Tq9$r䅜;==}	&uq(j8pfGL[{[ j	uiVHdգzEW.>u\JHLe'g}RRNw(uAj@k-ߏm;6 r*<o]pwh	&YF?~87@Sܿ80AlyN-hr&CQ+աkt>J~2
O?\n/(	`yv,^|tia׉i!%rǧ
v]WoGo 50rg/  됨{⏓NUcFȧ3ߙmPɺ'V
O<uk>Y7P˶kfз~f6U:zs1I"<lMMڟ6TN-"2+vT[iN%!hTGcz>nNR|'TG]"MBɯw$,V)ħ>'jXk%r5ckupp#Z}E/u=B^G}U؊w4#RGMq2nryc%I.(ARD[;#{>KZ.Ս3!րΨt$uF\@u&B}{7_,.b ֢.eH[9*5q+`B5%o@D̓#ѳ wVEu-mv F@ƒZ
uy7~t;q6+`cY:Ц#>S@vD{gϓ}@'
ó5 Q2Kq=RpW:>4˸rz=vR`$vFz9>^.UPEα Ry"A	A.19ؾԴ.Kkn.)Y;:A<Hp&9e:L7pG7s_{@#3ȿ~o>bA
}a4V<*#ý`{0jS@<:ʶD\Z]|TV_e\vo^i7l}VK&fCI%8(T<@X
=UH|Z2YX}TrQےӜ,q W4vNǌWhcr!"JfSmg7܉N(8u-QGKN*cV
"5ΰaDTD8%AzX/X@:LC؄Zfqt-\x8宀?/V7e'3%锧E?YwLfLV_ߦғƫr@m[^n#;I4S;,*Љ?}ahdmԬeДT<w2uR/15TZZw9ɭ>kYд?] ]DR8{tFL
cKO_A#:6(kGMZx֡4"ԶX%!<]nvL\؇W N?$䃶fd1i+~0<:mSsj~Lf%@t"ܑMUݘQ~wqVe@+f8
tˁd-U1SHglTXQ ;Jcw_.-8Xztׯ"<h5_ߪͿ$9-V!j/GjcǸ+trD
Yy{v@rcHDz`+8˷Vb\k/kbRȥ@j>;)orJ(tN8lwu<żZAlgQ+ V1^^B>3-0?4}}\*CV ARpIʉMg=RUoFPn.
fF$^l["z	uExSv{KϳAyLzϏC4Xpگj\q[|
+F}B帲pl>3WPȽU*ޙ*qEd!ffSJvA뺨7agXhrNu>kS[9XP= /ƗjKw%M
lufWU>n]SoCrj6p'߅B+i뙺TX][B{"SJ^uq(qpS!>sh%%+xn_O\w)eKP(޵9&
DX _
	=|p+sn4GzC\$^=%<lc
9.OȞ+~~
Y%p]TߎH!w7 !mwG M.#7M~j>H.oR.2a)ҁ5Wx${+(`.>Ӥߩ`k3j}=?-hvMQg+KԤ -NfNw?]Uؠ9Oح yr`:LxjU]rJr?MaAW:LJ{/ַ	ۢ}ͲݙTCQ{l&Ni.0DB	o@̑SH`f@B4$-A>-@DKIt]T_#mȹ,azrے,PW1UBtedТ-Fk緬TRl,qys9dU"g=Nu/G茫%'4%/2@T"u>Siĭ =´~͎BjV'RSdD"F򄈚lp@ɥޅO#CVQ</̏~;ba܏jOqm;,M8[U<OoE+z(Gtٕ4>}trM%/Poe.wVN@ʶ5gI|~4TOF,kIbj'%.W_	%:pt᭟>B,̸<J|?nԹ9MiV #5P5ӧJknës0y}4٠$lAS
.{2.::3}?x%kba]DNJ tQ&1pX
8urj@Yl*!?elYǽa>;24QcpJqz#Ga/;8(9ʔlZ._O&u!h6׫:2οV*,\N}}S*:5S!!Wݏܬ%VMAZӆXfy
·Cm,l%Bll#6ie;ھek=PuMum xyy(~
ݩF^M`teOd:m.|6P]ZtUҭyOj,k\h5zQE_R6>ޤ@Ԯ7qpUʩ.ϻv'RDsL::߉Y	Nj9:CyZE$zp~nz9&
U<BhF_%#kw&lOſ-'\nHs29]
~:QO Q^ zW")	Ls(#͒#
T1Kj7j%[=8n![J&zV3tzl>љ[ׯ|ToB.0_=^rO3&]m
)կ}N1㼸 Gxvh.e8K
͒U)PqވNe^jSӆ[s2V}UUMBocC8CW!zI
#s
Z/E된v9LCFltq[}Rg\W%lrЅsK?SS
AQ#:
5k*o.79mt!"NՓ]EX
oU
\V.ms]VT
ƣg
En?eVte+"Bقy6F.|vƩ5#I/&V*tPՏGC
'VYH|z5WjR<]"Wӫ#iF`u⌜hѧ؋:||ֈ_vYb󄖖C+,dG$cKx.*SG!Y:h4g~\`5 `$l9KE4;+XL`$Qf0I{5fP\ YNzmՄ
$ӸяM^Xn
p}GkNtJeQazܡ;G@q횠[)')>ؚEkʌBλZ'[2n*|O'\&XȴH %j"O[#tx+ί].SAҲ,cV9<b]-lA0~Ś] ݭ@UTe߉NOwzp$][
W=`GZZ(c.܅GglK&\*
˅].wV^_W82]Ppt(f([ݯĐBN38T.oZ]jZG3jeo,ϻPঀmHdj6:qBsaG.%t7]ʾJ7}S}]+
=%J @.+Y["$9ANq0$<~`a<bнϵe-cX
aEcϖJh+ڴ/CGK?c5Y
(*PS z7h:I
pQ TXt-+pNt+1q\l8G<2 4P۶]SzCFk,{Mn9TTڛq-rĻzHOd@=0;,cӹ)@\Z:gcV"UjI}#맡ʽ応}$5㷂uT#9˯)8k*
zoʿ[R;ζNUpwqѴ^V5 'n|K#"DvhT={XaU_5gRtUj-nۤ2	c7S% C	D殴^U@880ǩ3 5lUi>H@ov9EW3Jun]o1gi,&膝ÕWj߯K3Os?8y	zޯ6tSoڀ	xrDf+5o6Z
cP<e5\mZ:NV?>U?'AJ`(ixUg?{-Th^7Q#=r]=Cn@:_^1޴,Q-Ѿl #!W#$s!_~n$u-BZ?xN,g+1$"/p[;:}v
 24#g05;F9a_)&LP<8@g	qlt*"WW[5t2_/(Z/kJ0^/E?@A$ro|}1حze)uSY@ Ρ8c&>҈6XttUZr`P#{"᯲>{S%żJ0$gNoY,7g~ޗF>ͦ2Orb\r>X-mvgʝB_Z*PJ
hI*KAB?we~+Pt
QIiR@z6JKgn-Τ9'>BjDaI<du+];Z7B޼#[dVJpmYIqIcQw~tKGn쳙>k(+QD2*0ǫuAMBT]?#S#@aTzyc uUPzo^}	F|
*UNgAuGcըppd2QeMb\XNF~utO;Kg	:{<VLN8g"y*Ԫσ{Ay
BtmGnZ|d]UsE  yI]|Cր*EM<@϶Mv19 NAgq.TJWu"+%%j+Id}Pr2jIB:*ƙ&Ȁ$7HW庭=e +&<v6i9zvs;uB*_4+~+pΟp"Sճ0 mi7t<a!
V^ӷȫA5#h{84$|f:)ȭ/bM
?y.UwUzQg"Ҡו;z6"J.P @"YH}M%A NT}Y*5
)Fz#j݀*=KyDyd[ws;pNm GߎufS_S,g%jMdn&[g-Rkt$jc
vS*C"Kr${r U)ڡL/)Ld[YU\)(14rDOIe7\t(@컀
jJ1Uݎj0'Π7\,4rA[ΌWRFH Nd]<[#UT;ʥ#PQ8	7ǝCmM~n6AiDeNzO]3ztJ!᤯V0lF~=5TBݷ4>SiWy	uV_SQ` ȁH+m	M*$,+`5uΚĞ~uYu-^uPbcQ<NrʯІ&<rVKuKΫ.湫uh 7(rㄙӉ-z1ZF`vTa>jihWnjj^
"4RaIe7!	ዺkOf@B֧>?bq1qItI3X?{Y쮣(,{qf!482HYld
/Og@n,1{C}Y%oRikUoSq FJuJ/Xӳ:S$n6
[(M,oЪ=̈/JZ.8 U ]ύfQ0!}/W9)d_ݜ>0zߣrH@JYAU]jˀG	ʦxO8U$W&yA{jJ.Jr,Jq̓h9-Mm>s@X01;.Wn{'>ӃMDs`!v4t=i,䷓=>3&>'tuʮ0
2{ط0hrOì]%]	ln$7!(]REԣ0~cmvȉH-^뭓WQgu[bMé4@pCW-|o'<:DhyrZVtz0×Tn]Wd,Uh/\'QwrRF'h=jGO`
J
SHӗEG' R:%YVt=ջ;V-ǈ剛HSsxmt|
A<K@U]DzSYO&낪Xn&QWCu@'oMVxj$O`^.\/iĢKE*<友A`rgIc'8Adx>ٞyϣM.}#:`=Ńx! W&#K GizJ\B˴m`#FNɠIVvdkwoۦQlAEC*
Eۭ; `jɹלӽe\ nqc{Q"Tz?w"9rȯb U+Nv;|4@niH}Q޺++*;`yeq8{񷰘#Gja^0*˴G@ܩɅQguq ԗn9j H6g3+Y jMp>$|YI]?<[[ic+Du״D:X=sU}ht'5/q
KϣJ$!VY-ס	c_xkK>]>
\S[Xs9NBv4ދpMj1@8@ AJ*Yjsս<3GfȨsF"v ͖bX
a VnH&B 399]>3a:ΊmV!w
C}-H/g 7'?JxEs'x	<|Z-x
f$5=Jz@gLP4b!!nl qP`'Cۚ:Wnn@їqȈk#;CW,n]_̠SKلо~5 |bmv֮\i)ΘSo~<WPSr[r_굺*j}gMrHMyKQdExﾾ\#A7V❎ͺTJ.]>}IhWM3Ɍ]?`w:pN {2>&ꊚ" NgM.iuGXza=/@G2 Y-p&I_-R62T$! =2[[
"DzAcCa1UqdNU63v!\m~.<h[gG=Gߒmhu
CEHkKj<'p QN}
[#eE%i.f.9oy>V2;ƕoxgQM4#)GRzސtl dl5O2*U:{gJs!h,/Ds_6f	gV}o}O[Nu:KH[pO %&2k b*v\P_\7@[Ȉ;{z/v!`<?oܭb}FǤT4Y	"}:>4~0K0qȑo_u-Q>;O13<pg_ܥcTRpB+XxQ8A.wxd&BE.F\5]pNi@{D]d=KQIF&IE>W.bh4|B {u3gGQ895KNP
.3ݫ%^Bqە90jr4KQz{
8-GH +6 i6>
'VPĄ@ɶ5Y"h;˱~1F }J"vE%8Exnwks5؁40t.=DN8n8N#D}6Vg8ziV7phqa*BW Iķc[V~2 ݑD:tgj^utSaeo^RC\j'$BڻǏ
Ǔ&$
'j.=5\$o>BrT;yt*>r1L.N;p
s4v)}֛q9
 U_0u-oм>_s7Q(ϛ,I- K'-Ep4qs
DsutMl,UkZ;
$~ˮ2<Y}npdw'yǰGE9Qr:4_]nykOxc%㒻NN)'8	aY*hȫncN!\$b֚I[.w:zi./RTjV/Ubj)'sD*Qx6!{JK5*ڜxnjzn.qKzp!\8vN}9>%KkX*;s" vbkW~pmyҖIuՉwjG]M԰WgEbZT~m>Rf[=\xPbUh)	dz|O6dk2y:pc*r9P=';[""cWE핬yvdi)}gxLۍ[R)45P	|kU.:žS]}q
I&{kk+K$味իvJ.W2q:j>WW%*3։l/K^vG`[nR_Q#Uꀈ~:%.{nv땼ڣ5ϽyqlոQ&$Q
]YVt4N)Pe6Ю eQZyN_;|4j/t4Z/gVl"|Rvsj(
p85>{#wfiރ#[<"5IK9M%ڷ4 	zHSUqH?}:4d]m61ЅZrpFh-Wx>ϩ]@tv8֜4y#HTa		72Uࣶ;[
B$G8́S͍JoV頃:cnPC"G1y-rvE
NU/[aw=BzuzvS]YR]	  . >.my(VsaAj&)jRsrtM<{ǧV$IKTj?2uSk7k8f+45:jУ835Yj0BG QހK类'N-a.ՙ@5,?b~-dKvL,/5 gɫGKY/oi
~.PNg~I6=ْ%UpY5>OFjP<2v(1%Nǉ#;,O^[ &D'C{C#˹pRUϖ\}`E{'K	
%k]sX/m ܌߹@O*}<ؼ*B$7&m~ar6cY`5IPD\&K &7jdMG[ᳯgx B[4d
$cCؗBkݰ9ENxb=]' /9:[cRq٬G^[,ʛnF!EMRE˪Y3Zzv}ˎQi<cMv0ժBi70<D7'( sCiȢ]9*
|Z
ij*PK;JWV<Ez@ԵИ͵\% ߤWqru'Ye|;O~)pf8OhU]Fϻ܊>Z(ю^mH@BDonAf8y	B1<O|+DH zm*40D9SN!_㬷jKCWxԎxqI	Mo8MlN:NHՄXԜVNJ[n~~yޖSUt+O8"|y	ۚE[חmzJ.+f5_.UAr0P׳.Zh ]0[uGo
84h6>U-.4Ws>!锥uK4Ay¯aY7p\Sfe+@QWqB'QT].`26CN6/OFkRsM\_Eg&@aѦN4DO&ЦO,kП낓nYx
XH&tÆMw	ӬX'vXD'y=NVj; h{܆
a:tQW]$oCǪVHGѧ^`T:yCl2|pJ9"c;N򀓮U:&py?E#{%ec¦C@hTߗ+k7NV1JlZ.G'9jYF=>JBM3An$	ܡ%
[*(P廮_YLDIV]P5sv'eJ)NqrK.IkΔ쯛74IQKTkHP;yS횻qWk1TqKi>gg&'"¾ic9iXd1 QisũUֆYm	YbE-FT8kqum&I9<	~Ar+\e?f.v''-GVt)|.^/$H'ڀ
 NFNRՂ$>.G'4 8 ݹ%:&+޾Ujtŕe)MCnrqPx!pKf#AädVuHqΧ:2
LY>۵W3djrqZ.][{NFh&%
jc❬TX%\vL:q.}CFiSN&sF#t_AQ7A9޼
U_J9^ίp*|1纝T'9RpEqp a,]k( 8eF&moS杸&6o,]Xkf].'
Zxˋ?gznڏ2G5:V۫zt>I6qAlh_-S'YovNmܕ0{&a8!A\?
DtTGgy/P*fuڍ7x

EgM.Ml8	AyEJ uv"@Ϩ9ѯd+;#5KuW[1ht+Z7}͇$YL u<r]#g@ q{#ƣ8WXnYuh>r/|
R-R/BAx:4qn I|ĸ%9Ȩ~UAf>}CS7W{2jhעlTSK'u,h=ݿ)+>	pP|W;.}E'=)+1ɋ«b,i8)ԜDqj,~3$n)W޹Va|mIyFR hXǦkJ#'tT3xU$y(cUVn
M*f1Gt3ج<
>j>j3CJ~m5PVcE+%jn!*;[
#jD`83iGc-1{YM2@)8VW-bٚXbxqdйB
uHD4RʙMKD4i	ٱgCqⵇʢ6}^nH͗B7<T.CN)rNݩ{W>{#^΅PGu/~)glv
:U]eR;Nb4-"_?>ϔni$;tcsK'_#oUjL=2Xp̳q+ɅekVu_R$M d@P3QۍoÍ(!9

^w~E@0{I.+eYvu՝=ïKaS4{LGp <&ãDFXZP]FjF0_OUHz侅׮RCtj;B?ePk!ꆴGe?\|Gt^?5]
`]BۏökRQ<vFBA!U^[B䝷tS`乄U	ϯRY@F1Dpx-6 s$_dp#y3?TvnM>ۦ`{P6mgAy?ͫ1WQq=9p ӈa/+v'Mx/SG]8wUJ&@P/Z#7ʛ˝-7OXOQPYd|0y5]Ss @`.4ce-̎	XۓM|S
WNQh|y(֕fk/ugw9nRۭGJRSGwWtAXuxr֨8Z7[	[Rg#ܫfQlʾSe^oOgkYT~[yNZ!댌]^>͑D(󞤦r?oCD]s!ZfNbKշ*
>:OVr5e`eoJ,T!$%K_C2ID?ǟ4,NO:LF֩Fh\ͼ55]ɐ3srDQc.7?yh,L3OʭES*
$dl^:79]0E,B~VslGd?Թ9
t}TwiYz9i+!%.#J	rLnkkr_x|"hYUO,friG- F:o	9>:Y8]\)b7E$`D݂
qs7Z[HAGNlojJǃ>Z&eiD-.:0ƙ$Q3,?+.Z:c|;Sgqu@vYWF郩Stl4JWT5X;_{i_.rv VX+w	'Dgsp|Pu߮+䳍G.
.~;6ɣsےP<iz-89уJ@y|CH_LCu^gqљy`~c>/=ͱtzԠr2ߓǃS$謠+ڰ
NK2DpY6WXqffALNs7`5YEQn0A{aAj0Kb" ɧd4seiYLz`ʸLX
LV4*Z̯@|isJr]UjWQCЎ<܅pT&[	aaaElHg?p--Y[5sK/麆F~y+Ȉ]m =hqLM8Fzθq@jn].Ay6Jn56	#&CN+YYe}/Uq7!VUB"񁤨ŨHUD辷
[L-\u٭v8
z)MZi
hxo_%r^6UyT}*YWoА+"xBbBmh+j|qIѢi?*qk_y&yr7qxuu52k8͵[?QRj?(KLP|^۪oQ)8s}XIBi[+>nΈډ s cwLm	 rG81Yc씚S]C??q^dup$qM ~%/q"[tWhPޯKE/
OQz/]=tQq	^_/wEe/:_:P]Lm|9uHO#JJn
p@手~Z7jTm:6/CFK,c8 B-_>>N+4c"s_B`1[ǥH@S9DN+$ϔ_LJvqڒVg<N}ly&yR9q
mr btG\s9;XyӦURi^ ::!9֝[)նsɈ?ɛ[Nʖ\I(.ѱuu=F!BVQo7}AIZ<ʚ	~=:Ң1
Wk+{q&\uM{8s=rr0
Y DsU!4E^ST><PyJ:$GO5g	29!e,-Uܮxl8vUiTWXW"!\O-鍪GkGyP/(=S[ssw:tә4'oWMRhAt[m4(X],AHѵQ,39Hؓe+4ɒ_$Gxgo܍ksȟ',Z[lN0w:\G}u,(䛤i"ړ!S;WsPN9	1sLtx$_7Y%?0LUG%բ2:ߙO.MGq`K!  `ށ&ϭj4!QnnC1-%g֖'!gjp,8^!4r5_.w9GFdrR,\nmM-jo*\o8Z#N
P7sv+p׶>$=v}EE~ϙOr(UDB>d 	6}Lk!;Y,%tJ{<-	BR=8
0BR
l"-)LWBJA.)-%>a~IU_y3sT=,\%jq ̗[__gej7Qo,ݩEM,6n'|krpބǇLj`J_$п+ΧYkdX͇9@&hA#Aݏ`1URecU;Ý''_[ϬptnTQՠgsVG}?*88jE`nXv@йWv_syK],w.TNqbouG?*	R<.B/^ 86#4É(9r
ii

_GjUhAPyOѧpӽ+{r}O`wz96Q TӫRfAwlu:)2%igrodDl^:goʙִ5|2}qmSlt6QÏ	9u9+AhRp'4kfy:Uyi~F=>Ϋr[)!d<DϝQ><?J˃f畈<\=U]"XS,+?0rsLLB0qsLFy܏=ۈԎ[,|^	VZ:sVLWsv,;,gm+hϯ5)8[%vVH/4-V\VǉDd_~
7W䍈2NDײL_uNwtWj<wƁ&.VC?G]Nb
{ 
b X=B쏾Iz	nQRץNWfq8$uc "|ȋܵ[e^QpeAm^3Vª\Il .Ǔ/ (]>_.ݷ|\>]oNQ:VHG~T<d&Pxd{n'_fpk24byv2E˂͹)A`C7`2ރnwdJ?;v[izW"l˫tET]#Ha@P.=S-U_߾Y`Nvq Zu }	=
b$=#餓֛Y?D~ Ci jZƃbqFn&UV&X{{|訂&Z8W7tcFrua/X|9n͏%e+m5s_4S/\eO.E)yK JGGTJh8mh&] ܞTuЪQ\֩`cJksFf}k(a#0#fS
%P
R?.FlqU@3ȟGJ	CYêֲYt m_K$+Bt[=	 VMN=TԌ(jB`%׏knК,R3RD*9Wy6:Ev?pkU+7GY	Qhm|x.߄W2L0Rɏ1FI(d+P>C/y2S|697]ʊYqkWO6:5F=&GTz(j\S= W̩M3GsؓH7 %O<OuCgli]]?1gFvfr2@ nx}D:"Eo?M{DpDUoBl& qR.]
2c)|q8ě-C!VWC;+5uvJ+sL1=Ī9F{=?Cѩ'FR#3SK>*VeIހ7"$
a(dsE	W tMhيdcjNw)AG5vWp=8hսK	w#?0o P۵2bζU;1f1ImB5 pX@"*v> OPtbl磁:c˹Y\|
k90)<⣪7{5:vs)]DakiXx%V(wڟ
Mt4)1{7Ɗm_
?=[ɷ-]kp\s@l
kwl#vRc+^>x{~5b툺VnU?59z
pwqQ
`fzW
O{\7u7o2M?E0
}n8!6ZFBF:JԤ	S;%g@u
٠81vV#]01*0n5hnݞIxER*vD6`<ٲgGbq9PJs݆;oig34tiNQ9wڀ҂7 B}{(|O@Wf5Zzjn-]e#AD!I(xRQ-'w(uH8[LY=}j[	Yӎq 2	ϳ}q)f/sdW3TRT.js
NG'ż^D&i9o8ȐGh>6D@@n}ӹWVl. q,~.еcXf8;9>sL'|ЀG8}8ٚ[wAUjKR$`7Tpp,vdpzufaYvU$mo@7^E5]T}}mEꊡ
NcU5
\#q:<ggg
JyfORo
#M欓Ya_,y9$\*pa׎O|N=;eaFY؊7J7D_E׵8_Rh1Y j3hdOgfr{
L$uU٥{\N<z<|Út^N)<:AfKw3!OC"-ȁYӥ;k<>g;R l)C?q׹\T5RjKmruRT[y	\l)dTU3jL}mQ؟ XEXiG;ໝ/qGO2IS4llQ4Ǒ)
*Xm>+`iwx!B	 :}}nG
$m8Wȋ@Z<)WgWJd9=Ũ*܍qbavwGyIh6пK˯Q.ukirl펭繃&?4+#	hAvdg#h4%!ؚ
dBLb_9+)]ioZ;wu
}DIv~c2dً󪚹0uꟘj܉)s2ʐG@ C&Qu,	׽y%5<C}9縺@#{hKrW๹< 2,&@G]$>RTz|Ol;JuԌ	Xu8.G(mAZf 8mPk?Kl7 rD'hI|;[4$b"85*(稊9i^\3K` s;8FuW/Uz/m}azk ^QrpZ+7zӌ`b<mbTM\u(KCV'N74[u4K"WSp|%űn2>Hwy6ms
+gDp_v&y+ե9B]Sٷ'qo? aj3s z:;xCK¸+#>KK;ch`3	XD(sx*-Ez#[	4RKʢ-X{٘8z$kpt'Psy.d?Pη\Ơǔ~7dɣ |5;'5\	Z	>]ęV'k
V޵mĭVPūx>b5̮ǡnYoF*H
,
1	J85;UlK`Q)2y;*i7y׉7F
kYbQ׻y`_^7&V CęԿqq;]fAbމb'Hϟ.\(mnrzYDж*y&hЕ{ynq5!/ɱ]@{ÇYms7%JSGl^(Cގ|WP-!o%R춰~3DJIi~;
=.)vpQ*7>Kqo)5 Jv)P"g`!7q AT8Śڇb1RG:ʇ)}q	Zqs&BDH:WQYgk :߸9
3	렏]ol&E"D3"H ]Dٲ8/+2>f;[:-,S|@^ʷ@uG\P2Q݅
Mu3G:q.O17mv5(pRD'CJ%}}MTͽh\z况
-T>|E֮Q:[j7oװD؎w=^O8KEI-v7X.8fך6WZdJp=R]߷Mhg'ƶO
 Qn`)9+\d0w<]Rמe\OHLȧ*XOscyPhGH'ӛwj),qMr3F)2N'8ºDX,F MgR: Cr=~o4eJ?Y`nZ3t
OA8:{ŗWMs& oF~u#'g ]\>pqM
ftgN؅|5͎ 	PWHP</4*:onQA9]yt!:+|؛7x)6W.\Rj|~HVMco[	Sw<{prsPnwNhpkM[0*K*NݨTIFEl!C#{t)"ؾKۆPDkR绵"	pu&&G}SVYOmXIr4N<
]}!YtW̲G|F7رVg&{t Zi'Rj},^wBU ?F&t,V-{#l<%kېmg*mT
oVWWJ}+Fp#Es&#Ԕf#ǀ!\d|,@9mO<t^$xwW!H\䵩_AtN]ה~ȗYM}.1\3!?ng
S¼<l'\
oUTQ`Ty4m<LcmcZS"
-bk]zKorZËVl.f #, 	ZQa k/E'Nto{NeT]uZi6fu2;a}?t6Iݯ8v-:Q'|ޔ9͎MGy-+gq\7G
?I+d}/ʱV5;*nQ?[YBꀆz`{+G}f,MמSxҕs.(륮;e]Lm*]4m %}KC&wy9RΩGl9%*
`-i֝u)!1+4؂WO̫tydpϱQ㉚uRąq>M:!
F}k
>O儛}ygd:&lqd+,1~·jf]N:AvI8Zt,fc@b vˌ- \Dү5ZH~g|Ak]gٖXַGuGNlpա@^cEPɝ"eߟ旫[MʗX^=Af W>K\PaEeh
IwpήQOQ7	)r*K0,vFNLGzaD)cU$yOĝݯy:쳎[UVui"YrlS-p	OP/Jꆚzz,<H|B`]HDuD%ga	'q9YOnGT-oxu6X"d(RjMQ^?J-9
ߠP ȽKA2~QŪ՝n/!oF3541 ;zh\/#?zw>\,Vu(غEp%I YQ9~636Y= yFu5xejguxfGci	 &$'898mByc,.0.G]ӱ_ʵ^gh_%{GՇ岾:u9s+%Yv/V=ZAH%ĳR?]yT}zj&Ηl||Qdv2*(]j}- x@ġz9cܹX
G~>B"ȸkB
/GJ|_Y\*ƮFx.	δ?;q8`h#qS^9OTDPB*JB捸U&\,L8VC{&ϔv
V~IP'CH]SAøbl.%ePV E5vbgZJNeEt`_|.T'Ys_*/%o>o绍C~uKp`ހOؔ 4j$hQaK' Xv:/HYhU}ZviB6	Z(·
Ox0m|BH-8>4DYujxP}-}@!tH֞ ;\'w26bd!<V=`{ɵ72nh?5U(9mSfCwڼ=j<F{5XE837۵.߰ 	JBϔh%6-AĮΞ4
yǥ/y#wf13jSچi_Fҝ!iǜ5KʮM>"O	bZW9c|Uݮ\zv)<㗁4T~!fNgSI[^Rg2#\-բQ~nJpL@X4KztG ӮQq#+=za2 ]TRo<vPrIl>zj<Vg8gM^h'rܤ\U';8	$y7$mHv(:nN;lY`E@gLe0QnPȱũՑ&Z
:S+sNGw^[+_a>sOA&Ã[nxƕ̭^q(S|5uwYs.# (xMv`8R߮K͘:Ȥ/EZpȢD犔?ZN_΀%u) x4r:0<!_P{yjCtN*TDuK
ݷ;`֢ $3M
+6

~WW^K/[RN(&'XHukGXI8;q|JUWnChk$7D2ɕ @K	>^y)i~Qᙩ#32+`&.>o \Y:S
6'̸[%<	A9}&}jfD>vg{Z6|&xjE͠|99ؓ*앁#RH:>eyE_Ezh:V;ܙ}ͯ5<
Kӥ@z:ުW:=_eJcqSKBl]W.:GIBD!.SELpn@94iE'{r5)zkQdpbGK>|-]:_xjPX	+gI"J\*(yǟJwM*'  $[5x
dS.G8nmb[B4 (Gw9}Knl]規[2O^	OOx gmYd733xg[~g씬%KZ<A%Tpj:R"Np|8ġs*+=9TO	X6Z5*0`Nf`kjV}ԅ b^ʆ70_7_.p)lڭ<
L(.E)Nm0'@ֺ˵4g%%NV:o#\^ʇW.ۊk\k1Z2'N9y6 dvk_i|bg[=P߆wQ)c$h
*FYd}|[GX;?QݷVo7w*_MWAtu`@Lُ۠p.2p=*Y,fIOIE]/ߑ74	cHa)rjϪѕ">.V hYssT*arc9a`@R+y
L 2=DG/*դ'BM,Ght?Nqկ.=ԭdd\;\zXQ%bru.}|+8*
s.
.ĴOVeӝ} M0k	|Ok6] oɊ7'3}\QVrE/:ǌPMŒ
_:y"e'6Lp`6xԖud4"T8K1sH slK?xb=e:{w
mu.A _ssCRY4V5rwe΃d-4Hh~ww'GWDzk`9mv>txӊK8t
D\/Q%CdEG~%-/VjFBG>C%J>:*p[ˁ)/ULŠ^fM]E,GOnB;&;Ҽf|oS c
4tjh`ojfuJ5R  "N@蚊2^wA4"Klk_Vͺ8JF0*Dsߡ/1.N}^wI5V>2{q<)gp
S\ :sD5 (u-͍2>@iL1nD{;W~C
6
Nh=3֥5
Ԩ.(2~zr`SY0	֟oG!XռM@^w+(M' lѣkx
}j!/bzG;*]c@e9#*2=+Q7_,Tӻ 'ߋYCKr|}+%Vm6&I
zCĭ\ji,xz 8.34$k Ϯ" َr7]*at[NN]~"ǻ7X_qEL%TrJwOeh.0ݺ/1aگ=PZuiHJ]UK&`XV@(ٹ1=EȍfO~8hp~7*&/86g{VZ#0]DX9 Z'ȥu!ЁK֨6`1XY
n6_0\:	W}fݿۯ{0O}$E;8 /+k0Τa5x<
?7ys~#
}jS[ɻhr[ܯ"(0u*u:'GTpq2̷ڭ7%tPi)k3󃂷'F]:԰HZ铻{Hs	dG1K5O%GIYS&2^PKU=JKIxFťNJ-\sJyb͒!2x!)X2.YNȚT]O[.wc Z9MqDP1
8)K"R.yOc-,2Op; <'^[
ߜR
tHEQ.NWu;8o*wPRy|5=B*Xiݛ_s'EjņP Ji@BrQПFV83o ycمhʪyڋëGN'kIeMg;s9Z2#:jwnU.$"sܽT'^n*\mn1u
m9ToA۱^׳ `m]&hfJ=[+x_j|G<+ΔJ\R H|)c,"P,>#8Fvj?Y"hPwtl~G	jâW|
oѮn9\UQʕC
`.E
8ѬZօJ Cy0I'S
QBE֕Ӻ{{JA_QxE 7Lu\A~=gJܧZ.TUA`솞}M~;Naw׬<u)?õ{5T2;vG-"Clǵvlq,ҫf5ձ5

QZV?6sN0[rS.
yIw&31H'iC;gsԅքFsX$dxfʲ>6㶻+{q=ʅ13EIZp@T4g|rTywu'=^J3Cvr֖nФHeEwrU!p4nt9ev[^Ms+]ep|Es3~Vm~oסY~4!_.%J"Տo"^[O[%0}־s]#B'7SUjVZN9-[ù>8J
d-con .-5BP߮Dt+ﮓ;ul@tST~rs㙏~ao:%*L_-ԫVLKK*FǞWaҠ[Z+U:fbN	X̋p:x:8QbHJ9ۅUw)`QE~Pܤ	:Mr8 RHI[miN£jDڹI
sB)Z.J~Rl:!3TUnإw˛!롣<+Xj?
嵧Э_/S+Ig
#5Ȅ.~<sqP2Afڞk`))Kw߶c6+OEdsU=P\AYN4ǝ25_T|<=a#pB\Tx%vkyl# BV5L|LjW	+]FKiHJPg6kU}"a<_T/;U^~j*Y_{[]E~Zzb`Ax
ZB8kQogx?8!@QXm2>\iLpoɏKu@~^`>ء=p,cjEA:unTc7YLwoy-yO^Q.ߵg5wR`:4[g6nk<VʭP~r=+1Iv?{)zfʤ`r~@lLP4rж&rQq\1]fk1_O<r
qQѧ)
)~p()n5S% )Tn6/-,nrW.B./k?[S}6ѫFP]	+E'n-_LM}9׎ЊQkC@%$yᯒcI輒/Z_gyHhVΒ%EBL/1Rϑ8wﭬ6ۭ1*VG7{iՒ[@֍#<)'mƟL'IJ4B=c2եh{tt+ZֆȀ5Z.&(}:M<+3Uͬ@秂6N_rQ2
Ǒ˙F&>VzIoa9GB!ueMK}D6^Q1
<6~J@Tð{~5 ,R@]-ۦjYkb+an
PؕhzBcEN"яA+X*؎7t˧L.	ѝ1Xqgo}v=|6znͮA&VZr
F)||1ν	0(
_'`'}n"T3]Q)3B4o{'W._j(H6Jȿߏ:׬p&Z[kS*x;$b
&ݕ"wpWCx.e\dWRckQ_%?ґ#1
hʁybm<ptSwsR|=*9gCpXSTR8a)?8(w=d	{G* $I9	Ǳ<Һ+͊xJ7FYPCj'|_iB['7=Z	7X32}pꦊ}.	Me[ qx/>.d%z[-52&J'L.!y?IIOo\)#t+p35an;BtINypWGAO:WbQWZ\p:2Nݕmq0+ԐDPׯk~s˅<l69F?ei?xs	W8	P
'X{MmMn`loijW g|E 	A4'4|@Nw jDc\zHϖ+~/z&畧̽
U%dWWaxhާ2:8u@&Xը-7	m 744 ~&--^ӓBWQuً5$ș/#u݊7c)D8#
Ot&71
bcY,f&t_o`9sQCQjz< rI*@)1hK4^s2JGO.Iyy)	[&Y6XCa	1td		).&݈4D;Acy*M[F%~rqڠz5ku>6DU^Ai9?߮'	i+G΢kjDE@?vΘGJ ^*`!ڨ(J>t!	3Zԉ#yːX3Pʶ+|UF(ʦ!@D$ʺS#.
icZA, XFytZ%Ϲ|Kڦl
N9nWCU%}[3B!ACfsLSkr*cc+xǢʓwUyy~:$n"QZ.2RV*ocj|j;ޛ,ܺD`T'!<%E:C=w[i>xi}^}_"/@4W=W3Di gzvLbJo XajP&1&ڊhqpn[INOF~'mпM]5)@#OnmаpuB;`>jl	%r@r[Si]tP5Dɮe@LX>m+ZaB;RБ`xM7Qe.C&Ҽќݛ(-q
Q|E9PjI!HhqfB#cD^f
h,j*N6~VjnwhXa<[!@tS$\撀^hڜ
ѣ݉M%7GR[_R>CH)8Z\vPxհsH;8 aԩxۑˮ9MUgRd4[̮=[n[ZYCdaBgf/KSɑ"m8"mA.)XS_D=utx9[n@1uJE+q	yl|7avMIQ%;]E3@GW(]l7\A"=<ޭNN>3Lt;QH 05vV-*[i'<Ǻ9th'Jt:3Hp]0A44"GR.ypY֪ 5߯蠘Y^i<-90/eΗKoOTqt{J)T8AO5|<Nku|vd<BɆMWC
r{(mVHK[&}^@m=sn;KbQq<;נ[
Wl7 ~(ǻq|ĶYՙE݅a@9J1~'V-uZ+ l]}P`=[W;U03b_~Sh^oj|kܻ3FwKԒ#wddÇpWLmDh&o}5c-I4Ngz0*ݦkO;-mkmr]`%۫5~%/k۪CFPpӻlHva`1c9O+CK|Vs%dy";rv	Ol<ס[8h^˓kd-I|UjrhŗqAHK[Xno諠ի\v@#s9Cxo]c	\êh|;B]ɣAnPKK壌ʀX;)ka>^q/+n^> owݛ^@z34u#h*9sn43I|!ΦhDZMbw+3o% DVY~UEG9m}nݝ2z]GqoLg!HXjkC-O0.dy}5qd&mBCxWu-D0'M	ő!BsmZ*^M[UŬk6H'n_}ެv*O+l>לp|?VaC*x?7U]YgO}-D^Q,^P
@T
Ҧ TC|4T <b\sLLj-HO<VGs?9~q񬬡rZ3jP9|o']ۻnOМt\^RI#.τ(j[U6G}[ 9Ra
V J\ͫ+pҴPp1[\:q	Z5;1^3عMtW
ӏqXM6Y_DpAk$\埗R2@Lϝ 0;LC@WnxYx!}*_j%Sw{zFK+lt'`ӯ
ȲgpT0cٮ~_Qx56hBE[KyY{}ƒ?/d{ss&I%\9ꌙ8s~\`~ҡ q)N/ٝcŽX0Sȑ!`|2ՃF}8MȂA5)Rb	:9_/hS$
f
-kjrys"Jr}&{	$ݠг_Y 8w[k@6,}щ縌Ƙ\.I{lz?nۦՑVt/dP8y栤U|
,^ }YM˶"Slk*e?hWu[7<p~&mjQ?^"a |G& 1O_2PTLKrX6rIHU%wV	cjuZG(o6]*MF.WO3iZ$x /ykxzV; ;90(.W+@o|ܳďmsh)8]k7iSQb($ܮ1`涊::`KIk7MVr..6Mt2z7j~Z1d`dO&?=
'',g|t/{׫ʽE_.1(o6o2G6s[t89^W;WG(jy&l9 Em"W4Z 4˘O(P?,]H"Ayڷ:gD,w+>U +"RBYW;E?1J7@i8GnOo(]]93\P Ms3Q<l3`=l@W$pg,HZe_-gZ9>ht.6 2nL]'`ayn;Uu'0emh@6gJtˑ17
5*FLJ=j#K~SBkBɁ>$-#E;yPHd8WQ}e;RNA^
Fo+V/Mukqil&+o/j5V^B $ңh8,XEK$F[6{Ȳ6z7xUUsaܔcΰ~C}>])pa$Sz;.iN}0VK'/{T)"8b,b6.l䳃SVGޝoc%v)=̜:n( b ֻH
Gs;g:1!N)ssR7|
I  cõ.8HjjUOG&9u̻%M{`TqPBY/~Dq:.e"!p}hk5h#~$Rv:s_V~n;eL/]uZ\uXtq}^C喺҆K
i[ZrOHxڮ>ǛgLUy)t>,.57`y8uo!.,PN=BjGnUq9]c%\X*!" )(P6u١Ԟ..΃u%> ,]΢} Yg/,~J5w%?::U-\Uq'uQ͂d'Uq|ˣ<ܠ?
j+zMt;>	:vΜ^dŗϭiXU8*s 1gד+)|3esiPd6;
I[)%ɋ2ˋ쬙ڛ+\Ycl_Ǘ<w>n]&S %0Wl;Plr'%[pʅ/
2t܉TJRSM`}pY*^.&P89)b?N}W(qr?^A֋rjK[K_f
j>(X*2&7Rt:	06DVA`-ę%sw-"-E"KmdpsiVk+Wx*mA5~5=V]"1yW <
rܥŮ=ܰN
ѾEFԣJpN:Xv%@.nb;4r	l!.du#,#@~MEߏWvqD;qk0sFp4]H|tm{d 0`W#:y.2D7@N$EjQip_}n?Qǖ	bSu:p^!
qSxڥK.Բf|U.L;;@>bezXUƏ|KJW@a~<S_ەV	g޾+TZ+jV1C8ckXPV
SE ;'V	o44yAvgH5z\nh,g{NmmY *K;^ڱYYt	e]]-5~zK%հ"ſ^Gvx:;iۿ&;bl.D/`(7	q"0H
?+RO9=)e_AT% ӛcWh-Bx1??^3'6|I87צ,s۱wҶ %ũLa|ޛ)FM-"
>B+Mw}&{""ĕjDrq&k0@;"]KO5w9@RyWwGy^RJXc
6Y}+3z-btFZ;@#OX?Jg
ݏZWG#0Ewz^/Aɐe5{d+xVTv&uRxK_P7tʹmV>Ⱃu"l͟A0*BjJh3$:pZOGA<A\h:+/oѥLilNT~pۺCVkzrq@X/t
;[3-?Fe;i0ωڢ_|,EĴ>gTxB]S%I$9_ P:Ca
g_k%ƮW}[hfQ<{J43"<vn8Hw8THoEceǭ= ŗSV52Ol %Iŉ͡ҖuO]aHhS9;BSنg) FP벞L^^⟎4_&nIiU5b²5)3Keqr9¾6jL]ngy|'qNHv8ʫ;Eկ?<+.
GGsWyT~L!)=zГ@OCfzw(侘~|n&Ֆ{;d*,:ط-.U -ziA܊+h
']Uk}
rVqm/RAJ	0tYsJ#x
r8?)ԅ3>'
F͹th9S5f5&'|/ﻆ7\W pq+%g C	<B\,}@KEQ;%xD␤qzVg`,~N:#X9_JM;hyJoVi8ca8 V=Tzz}3{_W5'
9сG82amu7!Md)i!ip۵ :Jj+6d#]LIgTqx1lh{g5@u^xh ̜Zט܄1iׁ_0X',EfgG{koQk=):r`^3"C<7l p3KqhY9Tӵ\ܣ=?AgY$/$qȖu`AvNv5]0iE1઺ȐyͨL|\~mMg:iu;shk$]n;N&*޻3+ϔ^b[1CBmÄJp歝)QTw< O0ps}2w
\cm2B.%i(FwPON+ΥA%{;P	IQIؚoM6$U<P
:ӵR#t'_/Bp
Bl˱(JܗCBk+rQLU[w
ZW肗Ө[H4\u=7<.x.wP[O@f1>lI;X\gЉGb^m7C֯eGSe']~T|<v9pg>꫒ңcC|9_]	_lL=^4#p Ve4nM;ct$^eI8IQFFҎ>.iFVXM9sD"@Hy.6<-P.'C <VPyD6JڰHϓN?.mU^{{Mw<:̫4W/⎬9N͓+VIYtRwËQM )w}>!6$<#U`zm{ZߋKd`^4YծchhCW	BhrN,ߘVkt,7mT&3?]I0GMGyi|p2PNC9H1/+MbcӍC"cpڟDsi@M*RENy-oyq-<ιH1GOE|(-ˋ3xQ(?¯#ӻeIJ҇IT{3<t^fFK$` f鍃nP;U:S܉Kf=Q:,o<qߋ⸮LkB$RQoPdҨtLvg5x*j)V#ӌuvm`asHjj_oÞgYa_>R2Ru}ج/"%M9yS8n>G5.ERKsuBP2и/ ϔ*U~HnBɡ^RGR1V6![A1Vy#AMC(*@'7#(g*L܆NV,_n2 9]kյzTJmt; z@zɸ⺱TS4mRE?N/Ww-3 l"cM ڛpyV
6p_JnVkY#D@OT/SJI*NMWj'TqȴbD1HBwiy/KOa`1a<s[o$5	e<v MeߨMvx6j;x1\B
¹ݖrtKbv|tQ"? ۛ
6+J%#5q%"_#\-9>«+C P%Sq$\[ڋK⪸fJ8EL)յKFLշ[[N={.>&mjs;U6?7}_U·**Dqy"	x+euCofE8	򍏫}7Co
KqQޟ-C9'k}jD.<hCN} Պ	\"Yqxl]J!)xsJTS<Ԭ.ic{°#D7wrlRˋkUE-qSW" kRSL.E9quZ'ԢkW(~{eY@xSKpBcUhcOYm>eM1BLXe'(HTëԯSe/%Ӝ5zC35OיRXg5>_mNPсJ٦)8yP4V.h	)Ƽv)%^xά&G`3	X݌-/HDvRqi	rTՊ&_|ydRKvŹ
rqъHqljN.IGMZ_7(>R85U;](5~IMmIՑ0	H/;)cD+gfP>Xe`oDe	3-)dp&RIP8gQ8)}M*%	gjxVͿM#iI8p:%VCwA*/嫒ȉ(؜־'_ݒVkEa%5jAlKpg%~.}@܏"T
-JYi
{EڛȨ,%t;hi@j28_w+I@}U[ZnᠷNrzJŬЎg- R3-I|HoZY<wBv_,ȫiK'^-$b
[u%\~8䶎׳U4nPw)\/7PKuJRh*V5hݟuk!%-L#fw7sRteүYi(Э3RV#q"GVW@ywEUPfQJYfǌ<JYj\" *3IoYogdyfV-Ubڈg"?~nM!Yf(n:S+m95Um5@@Ч-Zu346%TBz$}-=Ua>n@l> a]Xx2_ |_JoBH[][
lq;GȤlG^!$F$@u]vfhpO8._Dta>q7?$01'ɝ]6ɩ\bwJ2'\Ι
*k=b9]8YqGyn.9PIQi*YU~=(8BKkaD%m2
G XzY  N ϫwɯRNRMB$FR󭼜}rkȳ%X[xs^yp]yqm]'>\y=M'VVRZ&뼵&"ZʝueRj8!rXS}yxmN(MyU5梞9¬绀xOIG|bWǻ"KWXmzr"iDsnZ9D=ߛŝv.=9,yݼ焏B^8=		lp4#<5~D
.@']^d?"&piVtuVi"cFi}4x)Z+%tޡwv5̟"awh!+0rwyF~]ASAyUYJl~(]Q op+p	<`ɦuXW5jdu+(zC"wIa?k_ѮμUzMI$xWk\v,7	y^Y+B*MOk:?]}geV7c7;hSYDpSNy(VGKwBPOZ=s	m%
D]SNxvJp,s«-~&&=>@!׫<B$i4w*~9TgxnaI/%=N!lI2&SwrO3TTX]xѿҙw}$'"u%#r9rՔ5|Kv!>
5.L}sֶ~
 ߔqǰP:wqGDmsI5%ů[ }Sy(FlvK.)DT҂N'XHQ#c}Rf(|$ug"lRQXGc5ȹ&\q͋?eSU'ͥwv4T>գ<V#<k-ou&S8D.}m}ad>^RNp}egxLg9
x3\V_LvW
WHZ\Ք#j8ߢjS^ʥ]}'+9w{;\`m:;ʐP SLJdr>=/HnhM&YQ;gj~?.\{(݉\Ȫq	dU6J!Q5cGucM{[vӦ7jRrk8ʎ.WLH-5~gf/fnw[dR$r	'ϭ;FｼܪOK%{9jjótdkY-lFzG)r)\GRvŒNv  	}z_Ѵz/{	zHJIPފ*Dԑ_e˸m=z3<A'^V_8xA抨Coͨ"M8;dxp겨xog |+36z0bw	T=KZ7WS,Vfb~9]PZ+O")E[MK󥂇n /rHIviͣ*dF(RCS<<C
uת."]Be>ț+8Jvp4@#1&lmIp*[cJW6ݴqA󔣾Gw.֋}:)lBYe7@5t%b:nZV7
~A~Jv4
Qx-\c-vy&<ip!ۅSdab}l-]
Rze @A}RPyzclPշ~
.) 59Yihyb&a*YW-h" ˥>"
4}Eu~(m̒3'\2H[v:g~u!fQn
$4[~ZMRۣ
Nl'5~\\f'zr
AQq~H)cla}^L}ئ]d9r<m?,Z ^<PA<}샏_&Ȕ@ޟ֮>dKˤKA2	KtVp^?:h2JP R->IKڧg!z9WsE<zP
:ޒwSzt0*E@/``/vydzV5C^5r*h?r8j.#5DGU˵{G]z-2RՍ@A׶nܚtjD申JJl2reV>ց?s#q-],T'K&Tgen20թι
3y|ʟ	D$4GFwY{L=֍Qc& 薟6pI[z_BU2vgtM=ގ'DRIl"ڔRL!9Ù#q:*Eτ1ӭ$!˫ɵ*)r\pJ.]5[ZZ1[_[#O3z& ^a9X-E]>x	hO>%i
MyXKT7?zU rd7? 6}w#/r&Wx;IɄ|twOS`\|rDٳL}Cҗ!JT%6	ֶ8dGqKW
ܣEBiՋV}V&UD[97<ɣ&!&y
\9.Zٚ6r'WW/?5}XHJ6ZJQU-NMnGBBd/Mr҅~UWwשZ"	0uy@@a͋**\CI<^(W8鸮@zH޶UwOMr8Aem󢚋k$h>$Q"	[%=WtՋ>\tUtQx,,{Xe|֬
۹Z|wce3ԅTC\(o<Mo4g}fı|-D?iNE\JG|$6%q3Ys]4_0="m!|hM"lZyr{QwT}^xcQʧZUeyg,ʧr~cQzw{͕UD
-CrkPLקNIU96YـWqhۏ qE~j㫼@9/Gb-੫9r܏CBsG}lBݏUze
F
Meo+^]eRZ/|kW Uy{$DiOQSBk~D
ZCmpIw#}>	(ۄy
R-pn(`_M {ȴL㪲U%eQH["Ln4(	qKr£QDW:_O"RɄĀ+V%[V]w$\X~;?$
i4P\SInں$R]w;;m{k-U5]4gDWHEe9Wk*O5\LZ:jJ7 )*8\ 
ӵV
R,$ۓY?bSHT:!x9f%]i}EݚG*itϴVYүιpcŋ8k[:拪oZ kq/&'7ͷ<5߸AY&&}W"+S@F@sNz܏脝LxV\ 
Uoj\$%ec

2^̊!7)Ц 70,NQH[9YHّZ̶,\7(JѭrɊ2CӾ㰡
+]asVM*bi&y|oʇ눘H9%jXOYU)m98n:_q}cIk$QD}E]} 媬)U(\`Jgy "pivn8Y)C}sgwU|xdȁG"k+dX %sZ18O#&2OtoQ.m?oM]ZyFq&f8[κF%钞ԙҜa겂nT1\$=ho2P:
XԎtnbn5u-L5AЛEHJ	"<Y|̃7u4pj
?]qy?
ZjJ=.Ip&KMhUWȒ8WƩܧ"H+TyZ)dٻ(Cq?+fF\[WP=J9Djun·
lI1

&R	'EՇ8t嶿tf}onshF9lgKod]!ސsPG$JwHCv%(.Tl~hYdz("`dxzu+@i9q<\p"̢`w<l*ލ+uRjjΜӻ )۾[
zǏaCh'ĩ^gSeż~ݡ01YYͨ_d-5D/Pg$Kjੑ/
h\OЩ' d"I2t~r] @ln]
'}_hw+
q Ywwj9ԫ<sqP^u~ԭ*҆D-=
jW:s_y	[DM
z7>4?|KyÓ>
{H/?c\TS[iGZ?uRKH1O]a)zs~|.j8~x)rN3_L̃&'(&YY==O|Rm@GrX5+ym.qs]Z,5^WOt8ZHko~V?(Ϻ:?
g{kX0V%RUEt둊֊AʀFQ?|/I>אp%Qo2 g:'mB뵰[l,in4%ȬZ$cj7/䬺Cind'WЍy
gG$rkPt39W"R5WRs*Ce%9(q8zڼm ѵe^.^rW6NP@cޗnp12F.VQɧdws$s_dHx!gdaJ;A|<v0"O}Ld.=d6~x ?yFd]թaD(Q{I*!K{^T61{+>LEJ{
[^,h&I66(<ՠidaަq/WӋsm{}&wL~]Ӑi(Q#R^y
1
R,RPUK*f؋\kK@%_~+Ǎg%sDۨ >`-),DlfK;,8H0v#9s`qZD#V@&Gƛ$<Hڣ<.fE[rՈvou_9~:Z8-๚qku⊥u>NTE8BMrLtTQ6Ur$j͟fi|gEF(dgIRd<Q[,4U	%kŶd%.,>"U_KY'|f#vk"=Ys ?-%֯:
`TGbGlXs큶:\/2|stI_g\D2'T'xOͱ.͓7 :+P5pb+*pXt>OYr_n
]H;S ͑%Xb
D0i&3(g7!f0KTwHY䨼pOoU'x2S75_Y剸:|☕?_HTB9@IG]dzQ+"@{HS-2A*fKmpגqW4q;Ѽ5yK)3ǏC+̾ɛ/vVbX&̕Q^S9[5w*@C52:}rKj$o
we_nG<sWLKqHD.HA_/ ^hDh j9h1x7sDl 4'Kqe('8+*a
ەOz.I=W9KҍɈ*!p
GuĽ ݟ:18UfwU7,rq7aEYF<1'h;ZUʀt*m*HC</AA]Ǥ<S-
 J	g*+R5rx
b=xV̝MMYn7m>hgSD6P}9[=٠:
vTjgG
49\s=;@hM:]$5 w'8vpztD͒\G>w@28W,L*BxWwhDp4	<,<nQ)N)=ꮒ+U}g(Jwճ-/4ZRt`XѢbKrVKIX	0T'|@MɐXKL\x	RZPkG0MHWb	oLjujwU^\-XӸt?~ZtZ!eiUo2𩩵9Q'HR$8Pn).H<):/_%vfrM9-jI5$kILގ:uIiCZplg8PC=ܗjҫy24T~*^_[
9k$ے+^g*Q':)Pzfԛjw|Ɵy (@vXtb9bbm<%Q(9ӈ:e<܋gy-7E"R/v>JQ-ʳsܲl}F@<ޕ$S#[A#s)W|FSpoiIn#Ϙڥ0Hr	^yl2xj
*8y|w7r`2?N/1
h^~׋Qu UݛvA*CݡvUۨ}# I
U|WzCS
ZS.e%cRes'TZ!l?qIh,}PEkBvY0u\~티6ĦwI!/~$_ga}xRg(G~WAv)Kg~GZi7y|b'OѹR^ώv!5_
Ej(49-;}#7AW(gGvWS1^vGBmWx63Wp2\|9[x\Ǐ~9-e~8ĦpG4 FUoζQy/..mJ1,MIO}MVQPN]\> wǃmgI
_i߬:E?}~v{äd,Nuiv)+y2I[jR"9=ggshi50/J4]&<O\9>rm z*{w+r;_ U7fE^8h_pMq}U}<?TXж 	(0]UK)_'*°! r(NrǤ'sܜH_1Vc0Kǩ4w
i}UեVR|)nS\z], ẳ
$hF5_.ݧb)
C+9^ 恚iЖ.#:(ck-jUTӽ>:5CVU'|Ov-E5RQF"]NyszHϷ|ޯ[\:j0S]
.Hڑ<mjC
Q횹kcytvIHQI~?C&P1~Ŕ @İ
)DM@KаRE9<': VۃN$\(w&$xgh;
øоE ,qkxEn,qՋݦͯ"$QEE̸:ʶ{ƲUuZ_%΁G@-|qR>
"|+Cw&"o7tRSO<JfY.\tnA{Å~O^-i['wɖH=(N$:ߊ{y*19wst=A֟8Kj!y;h7xZ  \A\ 5>@z^nk.zp\^w
qc|oW|aO7N-uJ[Iɍ#Gu5	jI*<*JP]''?s* MJʟ5a4<	g1.yULI+'%~UWPr!JclӖ"	`P 6.
|@镫VL4FApʬ<5  ^SWz=m
~t"&v:=;@7cx4]H7}LOx+g<$@oDs;djٟz|r:"NT"]1SWC?ݞJUIk'a+X5:l76"Qjm6XbP[t9r"CW$Hr)ibDMA|lQ\d(Īl*Ql$WY}|o4%ԊQT:p@PTbHj`9.F\̏mAE2^Cғ^j'n*<2k/.}e7\ǒڌ'@rk,T錰
ռ[LzV#m3@V/)%,{OLvLPx&S)D*lT]Y	?|V$ݞA05%꧋<"-<Yy^ТXIѴRwz2y<?%AOHHQ*eѺ=v{DpQn
:Knq:pq(9vTvN.{K|S.>	D!<קE]̈́NEa*BI!!wJXPGzT~i>dR)@J]em?	T>c$*<Fxc9[kQw+!QLqU)TLG
)0䎒-᪪җUThMDMQtI#je;%}G	nC>ƥpj:_1s=(>܌MTVM94t1<*r&5GC3b$ׇmk.i,3|ڷ*,y" {WfjMu0T{dN`7p,uߟye+u.X6ｈfՐ&!f1`Fl0sC,; 瘓GD
ea3׏cW	m7@zr 7*R,;a+k<Eb%~Aw+u~Uqtf9Zc/+TX9I!O{ۃD?r%(sw
.FqRg0ٶ/*=
[҈qM'q/)So*jR
ɔC~gNUhwKap l_K:np>?8mmK~n[H
^nEAp҅:B:ÝT2WlyWxH]EBw^^h{D]Z<zեOdKr4e֔sl 	vOaDD~mӫ?'iLk,pjvt,ӱםA8` s/81Jj|K@GT<>LXjmW"̛)g-5V[՘IUIG^)ܱE)Nu!HE0@աZT@⼧$g_K`.{u@.rcxv/ּ7=Vry~K
B:^ٝgyo?P)\Y;.s9Nbhz}J!3M|T<(s/B=lKAzs͋WQ.'
+@.6ұw)F:d},ڋo%Tb,3ȕ}ѲN,(uʭѱIU kxeAisM%2$('FQ 궚|ځUIqi)5k5K]勞6[Ln|#9VrKJZ{NBέ! {/yK˝CŅk=
{w<|U$균rĢi\+^Sr7N80*纛S>_`q?;F'yū.OM&dc"ZoywEp<3I;>6w2ٹ"R]r3Ut~Rg yIP|bЁ莭SwD܅z2en;,c`U (99RHn޺Kr.h$Rֿ>jwe{N`AqQ#iRHn/yZلd^1u)x_cGDJyeoZ2ĻADУX,ɵzs
ʋ;7C5އTR ~}>piH#R}t
7
D
U8LZg0d
7JOnAGqJ˘625E[7WF	9 yUEMN,m^>Gt@BT>6V4+ek~k
J;r,vu4V &,_zidm?-9\-:,Fe*Y#d7TSj@jMSpC CV{qr$qI~)9sĜC헢}.	
I_`H7?q(;~52o
/šބNa'!'ˉBX͍*hڈRSb !M7At)e:qW v#F~G1hj%mMIˤ?y7pZtabroQH&BWIrywposx%t,]ZnmVF\RpL%OX	9¯]rJǱ՘.P
nI+ѹ(UUP׆JEȏ)3;\O 10r4I_TZWbcѿ͔,_.~UzƐwDO;8N遬SQqq.0LL9dU^p˿wxgC_ڴׯ>4$wYTܭOk:H\b9JRUDw5dBTHu+wS)X@,T
6X#=-5NT؇ی54Qd (3ۇ*OsĥR ,7m	3:G4@vAsLeTnu\{TϮom>Ǳ8۔'~=XB3V(xAk	RYE6'7{)4* 2Wl)Va@*tP|,G`H[J5{PWK%FݣUvŰ#Qt??.Vʹ7cIhWaO[>N"22L.K*
c׮G"s[{.=}5(~"p4hIsF
١:~F Zj]ݨפ͑9) {	c<-q묩EL[Z<f.c_)G?w|)Cç缔b[8n{ptߢgpC
q;IQ꘢kÉow|W߁aHy)1kK(%IKgܖ甃wXiQʯMAۉ<6$⧺r)8VRiq'GeR#HI&8|']~sOJD8	|\i3РK&LnOٝ/QشObzlY#о{-VYnro}.;sWtɅmϥ<YoO?禷jR-}eBGݰA$߸v-b?D\s+Odn]PBPR&ޫ'+
TL(:JˑR;yؑ
l
jn$b;ד.j^>[Jb}[ZޟHƭ&8X^v5<ko۠AZipYPX0+I
g"X1Tmsdۋz]d:گڣۦѢ-S@h]r0_7YK%SasbZoIn))QB	~ɂ1*ݩ.=09QyͷdҤJړ F/Z.
4ÉT(._rKT5 l*bnҦ[,;sQ:$BgyJrB`K t-
z)y/=|wT;$TM1Zl{O:z(Q|
PȶDK[J ճ_Q/hlE[lW%phv4

F,Pk$9E)TZ8ȡ>:m*"TIw9?'d?GԣM%[mޖj%
}<Z_Cwf#Uց-H&6*&]du(AWy2?^Kpvy`0J
X5\~PXXTar>dbs|#;آxͼ-gb~]:gTK);R$[*q^}Wb{Pn8icO]sX8zS={@Ԝ;[w%uD!{jk6
;i#.Kt.⺷FXaaiR{3t<)NVšm6ْODtLT96"@^n4cWࡗu.okl3f	X9k|6c?TS&̿vPC%\^ϔjv+$o/lK`_}yjT:8lïZ{I/q3߆.>Th
GMm 7_g.5P^7ܓ4] ~k򧛃HKbj?)3gB$Nu8Hcl[n05
D"%)EIkg6|eivq0VDe, 5QCR^\ b&$.IlMݭ~䴫C>">9BM6%kIL tR_Z7J@OF UU$&^IbG0GY-m}!q\dժ#lmӴ{ۍ$_@בLs\W`Ck*Zݖ	oඓ(؈+X&H]V^9F#o >ߕ2
ǌ(DiRdTݹ`j[!i%18kf6^d(Ģeqo%R;Sݐ yv%(WGUKj'C
O)mgsMct|w3<ReO)#jQp>%6UAqh<X j<toR ks>EIux
r8pb%/gN({wyfy:<Ex|P"ղxCTxsO iG,:*4ANPr+ߺF<?qӨIPRw#f\HNtV̀1<q5lfƛU~2q.EStQӉ$wٔ$/MۀQ-.%<<:h&>sӺgS1qpyhpn<8B(]NSyPܾ?WxیBO:<ąbX"?2-SԷ  .n?3!J4?5=Z.ﾨ!u+iSͦBOg\kmʕO u&<Fo:mv9
^`(nlfUൎ[W Ů-w]TҎ*OL@PА{LE_7쮘uhB%m;pL<6qNw2DI~n;)ӤϹvE9%UMmai0M2(d]IqH	M1 +΁ylLA-EIz|k],n;Ypw:_'g"IXGIBgq@fvן_՜Nsu;fӳ9;o?m;/)#
 WcE(9G%DZXRP+m9m!EU9a7ዺx4ܔ>o[${]QMҠ?ʣSesڶ[360Uiq} ;(C*;q~Ը۳.tO9)5ˁjMJR%G 5Wl/v.д!K&TvY`?YyFP)%f[l:!Q<L7J.'noSG1F|	erkZI3QqW,&:Lt6y̶.+B&[٫]0$ٶr>EE2>" InuMRWa]*aRȞH%u	mT'lT݉*=0ݭUD`H3Ŗ~)(=z"~|?ݏkhS!{x&綍]V%x"h0~[2ڲ7*|~szw-_>nSxVHux
~~`Y!>{7^XU 5t*j+?>??]dc
tYy&<nn:z2=9u!gVn>w׏>Ԣ|=svڜLMS )[_/%cL}zvpzB/c'2(qqX(]]wGAhyoWWKĊ㴪Nt#&$nrr"r#TEJb)HKDxMQtFpFHE?e90/uTV9L;V_|ۉh88O}.fO͠jD~kîvٳU&b
ML.N	.j0Ђm	k]yIJű9Gja㳫w/Db/ɝZG`Qю«?%5˹U/u+j0ֆ#߲T|t{:웽gpO),TP.J,"z7ܾ
G\!p爀b]id"Wue
pd@xQk}*`X=%֛@z,{W*AUi>xՙR[6|$5iJɝJTA3튔1 zec@Nn\oiDgS+:ܐ4u{e@<+	WǏ}hE ivà0O_3j*jz3:MP@m$s7_1-Q\OqM-qj7S˄Z%3#5uǦ3mkO_\."4;7,\v'BEWƵPyI?%ػLh
ۈ
oVgs=֢JgxJi)Q9< L_GRV83y	R&(vؗZ Me)CAFi޲=@\RF_*AczNpWv%b. {Lr60=ar0pzvB-pF<Mf^+a˕bյ
OS%jz}DٿPcޭ6كmN[k:'v-2NQ[sԔ.mXtO>nZsGjvbR$HW)8nhL
? KJ1>:<
Qa&rnkȲPlt
g8&Tt5|rZ`?_c94N\ŇK*\ +P/?v@>)'fw#U]릫15W|yʼ.Ç5مSWi2F:q 8UB#mR*{/dM_Y]G٩!ʽ;N7QB[2fr u_E%-a254R0ƐD!U)ebUnTq?_ZvEr\w79=>6ڡN)'6ﬓQ2+Y-#ŭ|VHYt"lIمo]
IHUQ4PHhGjSX,I6(:5} Bh,r=Y^^nQ}*͖dTdG]VSBvY3hdÿwu_i
A3&IVFH\J>b?WTt$3'\\trY_wĬ0CZ<
\	.-8`7M&Ԅ]r#l7}S2>[55dOݞݍ' :L#*v@7Q=GJ"DmMi^PlB4.#XYHTVWu͓;$iz|l+n]Qlkގ|f#ɧ<~/>wNV< e0ԮZL
g\bܔVz{7[Z#MA,T5 nFRROrfK@9Rgcp}-J<G
}>IMFVJ5b"˗P5t+Ӓ.QV^SW=.rvYQ?m?)9W'NFi򵍁&zOO `gIQ*:Gt/<Y<<K'7-l=|-3"MϝSC
쟯LlfgOɝڅr̝-%&AR
Qr!fGyOh7gu:;57Ծz,%~9*@ͭ[U^ <_@;NneI%9q	tttBy&4ʄkqIThҚOtIcu<#AU.TO_ѽLhxz"׋*czcui"ؒtH0LOuEgDR@Ks[]@8é#k㭭KrA5Kx3ύʂH=C͒kGM:WKFWpůjGĭufs@FP88ߕ[,ZwhDu-rPn]v#gSU'YS{lw\;r3{*|(3\8([mv^
ܩ
~juA#g,H#,!- )\ z#rz[Y gIO_ZJpE>u	wCxgÎ"nK*hpX\%j.1(W80d&3bSOYDe)(x첹WAd~}iT]lRac+LLㄪ~t
e|#}(峦kChY{I -9$wS4W7rȡH'Q 0B FzpNii*$Qy6sT$qEByw@v[Ǵ+Jp`UFǥʰo!;:fTq]vyw >&$Fn'lqMo
12̞<]]J95a+;{T'>~{K[yP如|RL&/:PcE86=ɍ\q+9ڀ­T>UuO^Rd{vH0#nPC]ץ[	AS"m=q5+~d?؁6ke/Bk&<Ȥ^-o"
RnT|J٥Q"(dn_~QHM&kf/1S}It[R]`|=,eo7Hp#9<gl;=9H;@#:8sGyQ|]MV̝34|Hu*yDVpKK6~4]oQ܁?#EF19Dm~.f{/M6 p٩r")DMYZ1Ioz_g(x=f%wF9i*Qm(@"~D5AeaKlki5l<05vUVit$sP
Cem	
6Ƈ|9A5 iB$#^?҈u4ZٺIsj:4vW<Eaf٢8}g5Q0щD_#waPW
5nj9k﬩y!.;5pO'<G;#IE&&_oڼzycsW̚6#nȸ
$9馲!)ힺ48*\NT4x*dK8l
V&L
-7+ -zui*6!Uӭ陵Lm9`*!ѓ=H%r5EjvIۓ`ެW$@q'"z>C/j/*W!	|X%1kqEv6ƟPR7@
!4=\L䵧'$4Gi;ӻG
gK0]?b̝{L*І)}OsK4Ɋg6߬
8&SJ=j (&< v|thE2vr|d+Jc_EI@:tlVmI-Q@[Rj5t*ђA3@u#H5Eg9:K-WM֝
x'Q?C\K9z{R
?q!@)xǤx˦;:P(<m7[$(Ow}HEA
y`a<Jj`f50QtxNuW7'C%`RBɯ(=H-lkxj= XY'ntp+?"w>"͟ue$NK<E }EHPޚAgDSӠ,YyGtz$<ٴEi|Rp5s^$+9+D<}QoO[k҄
\ >=N5kE')h{7wBM"/֟3ޥk#PBbϚ Nr\ǜk&f>>Ug	z5O^V6oAG+mVLo5uj=ob
V812y[K>RH.~FQrm3!WV?"1Rzq'9]F̭lwjFP?{n_70I)Krq5lS<Şri1\V_9}Fܕe=w9𼤫S
⹶j8+1sd*7q5
zؠ5SJ_zD@Q[GZ IݢO-^w|&iFܮuEO<)Cܴ/><S iFKD#Yaf5;+Vwupy xdٹ@쿞7Wkw]EYCWuT`ňC:Sz+6w\ck>]#doWܢrmk!d'#bnڱU
w9H_H/yJ}Ε7g`U*mrbQ\7wIv.OmJPjT4\KVa.\AŻO&iT2rQ[^u+651EN8;wf'1zk)Nzju%ǣ,QpdC1pmpY>,c&3Q6St.mYFS9η,V
juQkuxמ|G5 
ͣ!_%ifu!vt͏*֤_WTq)K0HQn=HA_xl	E
m^vUI/+B|J0iO+Sa-()
\ȸUVB
GM!.1VfSB3ר߈W]m詭(K۶wzm*f؅0eR3-tr)rE'qn*YI09&~KLS.K-ԨNaAgxx3nUr61W3VvkǬ VMyr5B!D'R5~Wgbk<oٳF}*8hVN?VzC.]Hk7EDDV_?ߜR%|罼|Vd}<d]hn(/#utn:({[
dUZUAKtE[&նt sv1S"<.
;~Q34?CnmsH|Y
lLK0J,u#w%书M	 Vm2%n$^Ei֪ႚUvG2=g_2:\LQ|RB:f?.=N#)^58|/v4
Z,%<vW˥UVr0uI,+N
$Sv~4@Bi_Nx<SXMǇ	-n"-ަ3 tP4$Km(RyJd2ʛ8jץJC1bʉ7ȕUwLIj&$\ &`47^DUEep	]~uRg5XH9u*
b|ٹ[I02`\$EP \ߋE~jPCQt7@vRQ%ERm تR`)-@MP:Y!]NIup4 7}ͩa\P.*au
Qj%Tcp4R\R,}ޮq[
l('%ۯ~!?n 0IGdKu+xd1mvJԬ\gO-abh qK_dH/-	Vزϵc;j=MK=*plv4N]jhy1zC<I]C`|avY'tT=%ރ
]jv  E6TF-
4
o]Ifcڷ]lvEpp"u&+ -V)Zܶ^&;l[$R;`h&<@H l){Qp¥5@H(I-bӺ7x6ݵ!.8WNVt[ I̯sŝs.hgjgRV.ctf#Wp|\T}s 4)eՖ*
JxEn8}{[.yvF|T _*Pݏ{8\rTnw4u4U%Qi^^g7[ç^1P1ץPэU8(w4^ys2=ATGtɉ8h>
#J$˥Twt'~*'9tEĕN;m.wi6'?[nXrXy?S9C-:RG[	}$= `=|N}MaA*_ys<f6:1dr0aU[BTD`0iQ46R_*x:QeNH->"cTeF9f_Pբ#{w'΁s ZZSyqxPӇSE7^fj9xk#ޗ|ҔPz]֛/S0iGp>am1]2qD</`ewa]
xe z2a, cMVOٰL⭹=\G9yYTV=J+Pei-}<
XUPx>'
5!\IPA`0.'J15P  F0`l+p+{
?Aá^7RVߚD{Up"YX^ᳶ15ӥUAzn
w%A$.8uXjq94BbǪhMAMHF>bsʆ&ͼ˹TM ߪk&UUsPm-)YH@
kx)
SӽE/eܤZiN5h*i_gqTN>˕N^yP*[*
C~.V%I]D^Tѷ&W
(Vsqv
Hv t`(
h/
*Ź#q~ũuRz氁^<ľ|-'P.֛{eAkT3w**P/tjKC)i`u˫oÆvkdG!ٖQfD+l$fƼGfYUE[T&:Z*?UVC@G13 8Ll+(x-<_K'}5`CoM/VHYaz$ J?-33oX@p.蕝q<r<9JxX@([	J,(ϳ|7ehj(ӴJDp+q
j'M:=ř?5.PϥV\T}C t}֡;Y5,\NnJmp73\gYö.c%sҢxYOg
wgKfnJ:aV`)Q%{)rj}a@{y7`uGl8|A&՗@.-u8暘!9,`|1G{NΪgPL?GP`zamIHv+TXyAUԛ҄,olul\ݣѴ+HQ\t*{A!u)$E;O_2NKfR|E%>;/M`Uӫn҄f@tef
G1qH*M٤~@Ze{QO>`$Av*+iVJPO% 4;8|ʯ
/Nm[O
Nk
`{جiZr8z!%% Y!*@_V!;wN NkʎfQlJϏYkiRvwX]cQ)*$Xj0epHYɬ^ҙGLBޡDaM6![ޚhЛI<F:fΘ?}ˣ4b-9bgĜ&(1oc3CU©aRyq	m<S 1^;eTNZ
/rǨz}\ =^DMO.G{6R3#j((Ԛ^MNp Ex
ZC?;>R~G-{r̼@[䯏S+8LNc?TM|H^
z
pl3_AlXqnu'ca)ZvՓm	
,v^4'@l]ۨ>î?tVH`3*\o2:	>5(^yĂ"	rwE!9@K:6FwHsŚ|@jrȊ?ppb^
SMЁl.x&'3AUmT~ΙqeEዳG0-]aG9*Os^II=O>Z
<'\N[mhV%w|f[Jh>UR)AB(^*YT[wʚǛ[`qym[K]ԡAh>Λ.lurZy
mfUX(oԊ/vKl=A
Tٮ7,lЯN$56yv'~Ysʖ-h`9V'&\]:7'HnL6]bVr!)\Z;%,'utW6M-4UOy1V=SHN`^~W
c].wcf+WWʏu4[NRAs_Zf]deSFB˝vt<P. h^N("OŲׇRѠpYj*k_l-[AÞ #c[Z̐}GI&FڡEP2gIUUw2
%z
ɷU7UT
%[\PXN-{>x<Ĉ,{ګRRɿx}7`W8:Y-au4
첡ADRi1ivOv-W6]UۢelXaN
Y2֮۫)v9߻ӈ(NO	IE
t;ɘEk6p 9]+&oMR-N+A
KУ
T;Tkְof@Nw^:
H|缄ww^ 6
KZDKG
80M.ۑȚl~ȤZMм5V-9kK}ze5y,+SW
GEaګnϣ2xmk|;R}O=#*EM_Ԩ=ZԨ2nŘm8O[ϔ
h4NxI%K,DS-N+Mq˺+!S\-6
Մ^}w
?UxniAy$Z
t?]'QA]I#4GSM%YI%ޕ<UΉq1[99`5?7Ѧ,f$Ww7 $6fcC9$h$.VvxQ_?U)ұs|0;_!ֵK 'J9N"-L(-ò|Lͻv{}e^|[/ӹ+vp
ɛUp]v~WԷTHqtv^SDy-qP'mߡ2uou|l_4Z떽(zC>l%2`85q?oC'[86+5Gh/5<хc %8	kG41P=lrhlJ?p4#zIf
f辰ȱ~,mRܛܳ*M:Hb%'Y&*z+Ţhsxl²OG V )^^0l>B%/	jI w^ 5[o	V(nBz"a{켿rGζk*)Ea/1uC*du&_Pap>&F:V{ hأʮ|	^콀=ޟoRV5xXM*F'[*г7
)^=ˉTP>]*L4Z$	-@ӊ	s}씵zW@N߆2M+P)lMHrjTvY#;q6)j>V5<6Ӧm#bQkop92D/61%V.q&G]	0<nx!y[\xvF	櫜i|$o<wT,UtZ/:QĴ?&e u*,]4Scց@myFv
E8k
n[R<&E%Exv. އ9f2V:Zنפ99&%H8[cBv<',K[҂δ+~{znP~:fYOPse^f|ZnZ7ɓOqAV'89+WkK_Wm,ؚ L}l`ƶv$ d4\Z7<};B
TV[p["NE}3uTa+`lp)TY]t\gҚsZˎz=yB' 7@QHUV^;{.ڃXQ
.W4UJZ` \doRWCX,ִ>s4kh!=++?Bz/deQMtky\s,x0NȽjyk[ B޺95xsNy-Rcd[BU--T4>)'wY@$ױ89+QP,G*I%f]Vf,IY ص:M琢[:>;~ #
)KV{_8,f/u[jt.]Tӵ5^M?#Ql/ƈm%vOO7DCyj_4+w[
68H6kLbźiH4QZO~Mo;x9S)IN܂<oV@.jN[YNcN)wi g~);Ѩ1
#dEhK./7EǄiX}`U` vاT*pgvcM|']ωtn[FUPQ(<~T$S4anQRl-d(X_ʑ@soOaf7YJmU`"+*=@tsONYNle%4ƂyXSPrC'+^Cܖ|#.*-*[8V:
Li483DP^|Vm&?ST|vzuՈJwB|NͱǬ$;pP- !#_vbK[BEHւ/Gk_/a_osI$}'tβA؃]a÷n鿳?/g@M%p,5
Fʐ6M?gkfW[	"9~kLO`
n_'ҶF21V/zgq;2Ij,x۞f]]Xq~(z9_	@v1şNcFgs=3N|^^֑u%;<ETGxZgG׳ ݂U uUXc׽NPW|+N0=n7]e|>jM]X'ȁв})̛1Xg{A|W8#Q]g߲[jbXqnjpOsλ,cny$st +*I_ |imQL@S!{m^Uz_wiY^ڨAi{qj۽tw%\: 
>>-Aҧ`wvq'	Gi6%=U^  |P˩bR'Zh{- OPA<, (#NoVvގ\tv-CA(hO:Tඃ_GްBϥ8R'Tc&Y) ?d
+FCeW8}VK=|l۸4r:4"m*5iydԤ$pҋGBKk̶;B(M ҵb{H<W}ڼ#A>ˡqɁEf`##)*NT&
iՂm#ClSIlmg3l7AmG8a2Ug5)AOϚzp,m>+ЯAQW٠FR)7c
}д3
z+xU|J*yt^|)
<ķ>>t!'1#?`Uuiu
5еqpL٧]!?	VybK.G,߮upaB^o5׈SݙJ3lKv渊rV9l
V9Q2J= %ق[~)CI/W&8[V,	_WPRiվT@ۨ 2/fڰ\JH,NotNlб7;lQAl[v߷~|jU}y=+d۞ͨMD8y<L]!t
?	)C"o ܚ`Hnuqъ_W̚e!ǺW=ݶYW1k'0ʷMٕzu97_I𳑞xor4NԨm}_rm6M-/U䚯7SHvfF9>}M1-R`}־e'K,UTmrzcK)s_=ف5a 3w\86*h|N WvSkXRd46l{7lZm Rn[NǶt۫z6|I.s-`;hr!ѭ_z#qjס1*<Uy/^&N 2H<rZ"J8SߑY%`,?0̞|4'n6TTQvK
8Xdi򻯜JeP}W 
ѣK?	J<@[G6/ҫiA3rrʄm86j 
6[_Lv^pࡅ@Nh	XhY}UXɄ^#ًsdQP!h`
~60X9ny(HaW/aX1iN:ө߀2kWPHƢ:PZMHetRv
 $6l["L393ͲzvYFz6ckpeOE;3v 7bן-];v\_PZoy^Zjn*^Z`KPWZNf*8BWk$Bc)KqxՐ\|.tR%>)ԫƖ$96*k𱏛-GNb.9bQu<UYJ@oU+y `x+8cnO jJ@bqv
|s9'3\
t?/ƭ0yӭ<p}WwyifͬhzXxe嵪im+FՆ l#  }wgXO!ڪ)	$9סUu6ұcE
SXyGqE}٠ݛ`54MŬxW<hv,B0>@1j@t?$#cK}mBa$0mgWVh	tZiyߑΰy"E,6Wǰ"xȱl*f=:A"/uhJw]o +
;4Q-lR?FPK:ɚZ5LD heӖT3b4V͖N>
/[
3a+5]73,גf OW9Aۼ85z;VG^ٗR]"8*=	"{~Z[QNV$4)#& 
~_jNԣ6\iC F1}o5|W]9-& <oW*NTJ:&ϭ#K)j$ezԶdW"o`x*tfk;2y|㍮)){hR-vMQ<tc	,|l17#ļӄVk#CoKUG^[#Ɓ:HZ|&>fRH YF-cAUWfLYAؽ-]b(y mX?ljهW8x-`Q9Z⧡XUYmjl80P˖uBxl |in|=6[5WJ
~xj}l_>HQ ST8n>gO=bG++WA$uUaAa#
u\^A~g6zE84IjM
@=/ޭ^TYq 't)YSShi fg(9be Py)xi {!8Ga9?p=A
4J45RFk4T x",Z$-6۴F
%azT?DVz_rkR7=|D6@W
ǱHd*z/lܥ촳Pq jU6ن6MeO#H'թx\ Ӝ	+m]֖|^U~n*kzz1d/oyE杈0лW m"A: ̩kOfV>I<~7墲]:P.i[@U8zK+F>wFzq p"ly)곲r;d;zH%?-Ǒ1˻@^~=~uʀZh	LG#a8PfIW׽QL$\I'4HFUmvP/H4ڭځحnws>[9xj!ok׭i-!reIN`QI
oT,*EUѦEFzDաh]qjSFh^Kd;/RP}SSy[$$%G!rvft+ u]-;ZR?%/stWnR|}[GM(~u{Geymw'yz`0Y^l:

ȉ[K	l2[s ޺oN5gӅFUؤ[5~GAi`6'u&%(Wu%_A6hݑQtV*۪zTXlFv$Cc`>?*6 $I"D jْzOUX
'腡f@LA2|,BY9kv&O]-,56 X]qa$fk6̸un
e[ܰxTkGsd{C!o;>M:~ZK2-zb,#)٦àmB$^}ބTotɑֻ
K
?&ky	:! _!F2-C
o (|R`}4_5(ineߗ=E؇O !;9 \٪|f1R 9#h(lVRmՙT]U67p`&+BRa*vjz? ͋;v<WP"o!QJ>^9O5Oc9;TKЫ8;Ee*%w)Xٍ靈1:vP.P*J$Q5a״%	MBk
Yu+(]?l$
*|Yk&gQۊ$a|d.%(N>)ͯL?KGtv<mV:iO/\@{W<y	9o2y&eٚSg[݁>]5xłIOa]j,N7赱맭ޞ:$\E_uHmHz6^kg2Y<'gן귗E{`lWőϋ
n>lJoҨDp	VRX^]*A+DǫT.cHdjWP<f^((Rj
P78o nL+<L#@x5%
,ϡ
RQE &9tLBX^룣xoyH{
A+Gf[P%)N$}Y}bkk׆kM;_ƻ$^4lHcTJux94 tJbK}K'\aFsڭZP}l|^4:YuI稯Vma\0m	Exg۟֮z UAeu
mmņiZ<P}/ɕ@(x$.
kl2)L|eo`kԉN2YN϶]f\Axy.|t
dl+Du^·~#6 =Z{xLk,&V6"AI>mcٱݚqxv0O搗MÚjӋ%KכxJJli&@Wem	|ι2FjDCP9TwV-.PFҬ]|\^"680[$7TY5zRő*B鴤0i7}xwRGZ	#Y$˞
kz@#EE"nlc:Fi;(	^RZ~:eŒ21mu~t+YS	sNOPۣxhǞ8`DB`p]sn$	 JqCӵIM{;qTI>xb!kAo}`83sޕ.""VZϕ9a[Sw<eV}HʬZ%@6+Yd.E3cf7(ymx/ P4R>8kWK
(Ьb9%3>M ,_7q֞6!XG5	[JbjXG,*'*GFoU+ӿ>XN,a%BKe<h*\=Z+ynrVm<^xsu,{~Q.'֘R*>dVA'#KAUC^}ۂM[Ϳlz mk>8
Elwhq>_U3?rZN$4o*ڔ$>Fr57sQ<wMXI$Ju KvڻG@$qNA_"(D'rܦU=ArpƊ	bZѓ3tu^^1+ ީ8 cH琼6?E".[[wb
Qn)@ć޺eYTw652%+9v/Cn Xk^dW<nD~Ϻf>#5l z^<lusk:r7_אIkG.fr_y7[~6pS]y5R2|^jV4ppxp3U#E9-o:|N[SME@7HEƋ!_~!T]uѡp1BW!{juH6h` ҳZqÝ&蘳ouW4C5ɏl5dUpB"[a4"YXK~RssZ ~)8USf]lV1IVBdI2o[#XR>~lUV~Z Noyf`=͡5@MNdJz`!
	xub_3;w%3q&bDX;SiX|o:Ks0.x*_V2|?u{NNJ#QyN}X5(KfcQ!o/=~ZjE^H R=0&ی@L'V=*\kTdꕶ82Ҷ
(<,ha'KreXG:p
x̿ilWb+78p	53U~\֎} t,x6ei} NI*6ZΞ-𷐖&RYRK^THk=-ў:a1CDB\vlg?z 69]Ö!b0;ުOo7	 :O^z;&MN :nWMHtZY<}f`-H$&~Ż/B#̒ϳO
H~OoRNucr_{o+%P&=ĭQ%)){p:	SgY~El=
YYiv>_<&g"'^WJPlȡcVHū3nkl/ܧ*Z8VuěbGҟmcsbtq3iRit g{W݆]t~*5z[f]ÓwfNXTD4bx|Z3&:h@FG%j6%pH5*B,dA1SN:dvCqp/9Vwuy@<Ys)w~V$Y+g3'\.p\Fr9e	7!m8[/){P?NA߽BX<7ק|}Ю~nw(9:{;}\ iC	k٦,cKdrTN)LчW+[~)${M5!Y$-PɊ⣒ɒO0{B#HOz0媏
z.9N=&EzN+3;mnfr|i Le5[ŴfV6Ctgh\.Irh,z㝍 W5FQҍRF`j+O,Ep1^ ^gV=Adb	:C\ޙWͥ*
nʟFQGCg`{kN$(D۝jIy'4Xm᤿xEDg{|VRR{U"8^S
ڰ(*R_JY!P%sL{d}~ঊ$;xE[Pm5lXM$buz]A0A pu{Ry8
+`v
kuH\z9|50pr9S[+6p~NN;I6q$ozZv(˗N˾`	1@,e-,(ڕe.jx1
"v+C2jl9mJͿpь9m(T<6x:*HT@0<OVM;D2#Ivu@:2vх!rtc??&>♦($|S/qKپ#|
_
E'Z7i=ba-fq(i*>J_q)^N?~g r)_¯J$ז[u`HW]}JB#X'"efQ\)q#~Y7UGH^tXRލ?CBvr,	&~ݫsZϩI^06X+;tx;]53 0s K_,/FZ5^{too*7vT;/y2}H6";ܔIc(B+ЯM$k=1'T_PwEϗ^6~8JmۏC(ůMV-ux+OՓOivRqus;,P%=;bkO*7 +Qfb;N%
7 ˧&GT"ێi-o
XJ,_Ц^RxǮ]NҀ#(iAQQeϺ
N[Oy~l5gHCwT"z@l]z49CsfS*+1 ͋'(OAR*ފP6iP"y8SP<j?Emy;h,;hhQ9ϑT!sOV=Uz,3w17!CvTYRգDՕ+gs+P8@X&u*>)FW @3I|SE律
@(I.ZY,nJ+ACZ/C݉msQ"<(`k}4b-Ϩg@":d5\9]LvspPG9'ߣ=GaAb8mGu*J^o/Һ{]ov$ͬ~{u|TKz޿K&dաqkT$qT..
vMRm5lߝG>v+ ߐcB>_I൯OxS8Cܗ.<,T%O-Jgvj@ֵ?Nw5"33? 7~`ꨤW:
m!{za
em7[SSkÌLf"Y]ExԧlU@تItzTLp9{*wUn3:`.rKѴ#A#
:jCj
̴TL`QA;B#B4nG^v~_/UUK1`$\u Apթ}[">㜝;2vUI=[~ԩUNZjT?Χ&{cXk3+xdrv`{bj-M.)8VӡmY]g3e	v}`MMtVfqs}z^x6S[gdl<[%&$z{]lkfƭ PK_";x	)7M#9ߌ`\
-9Ϥp@ P;}:Vj c0w&"֟!Ɖ,\	MS*߀gFPc%:9
dEX)8|j`Ne&av62-q֟SǇtrI=Yiڛ5VI.`]\Y+]]>}	Oeheq=MHGfc.2ĹC,O][}|/xx)y]hKRJ8OQQAn8{/#ɠ.:z 
_j-Nkw
^3l/d+ּN6\4~"`eJk~EGC8PNӋCo|TCn#i
%PIAîԣ
Z
GyftJRvC&6im H`w֜ a$yrGِ
BumJ$2eQɣ{Nj9/kѱ_yi[pt;J
'Q߂/kX%ХZx5sJ,_JȵSF?l[|ڃV#nknW!%rGcMyO_ڴ܄Sp9G1d 9wjuL8J]vXOy:+}[F C=5lH]`/Mo+R<kUb:L"a8D~U6Tpj9Rq̱$NPC== ؉tWJ
sAJUSwg1ӏ[hym
x:Sτ0~u(7'։!<*lWYZ?Cg>ud_b%ժ E'T&]J${jVLO/&xVek!
u]y96Xm[
V6:[3*-{mi>6WΙimےR9.3dQU8qeg|=X ֻz>oetE9[
쭪*QKšKh"}MA"
 hPN
RBw_FoTYf
zi"HWh@p\dK=ԩ"<وA!L݆nhTIu38mL y#<ō)YΝ0mNN3h*ֶi_[Ahm#}Nۯ4
"/tnJWX}@W\
Pm?g?;>d%OùuJHU'!ä)	5*+yYRogU\[H1=-|W,4Ж%΁P]ݲu:s5m~ͻY'|NY=%Оc*MUG
ix
^zVڲһ'U?2g*{֧,/;OAG5-Z-q<bQ\/0żMHO}˫#v
@|m*&vT =,[=Fzt,߱'f p:$[9cǯqg◳uҟZk*VMPau3jCp]}[AxByU嫜g Y?6.lSX_5R6@,79.He*}r=:wnMdel˄tճ2|rMN#O='4d=R>˱k1x'Ĵ!"ƙ+n#Hե%&c0
7g ~tHUݎv;D޽hNwxOqbzWs/%]]<m>jڗO3~+H]xN&ǁqYdOjv̝"[9Y!k(&D
BH\qբT<h *~F۞	l-۹z{&Wvxo8M
&%hxtk}SBZyW0!¯Waix޲ao
?}A()_N5Y0Jt;#;aes8d3r+{-wvRxݦz{*TQd;wiѭ4lkD]Lt| UOD,ߚ{tRc{MZ$ABV继U۝A:<ѫCIrkZࡲӦp )K9<n^-haإXf.g2V7/֨QC ^Tm3~6|)}M_فARQnǺUiR|oZ)Y*dXi.o*?K۸	A,5JY#aZ"7^eyoll/4R=MG&U'qol-\CCE<h_ےJx ٮN~ܒBv:.8:zhΞL:({)}EU+=,DzD ǖAT0'"kg#-T.7AJDV.*$\ݙ_ݒ!E_4P/-HoW,M*UyvemYQ/S~bM냨J{c+:i7.
32N%m+tnѣ`GTL4P1rcD0ˉ;jn3.>zv)dtjzn-mRTkt`ι	|4:Je^ѩE}+ko@GvdhA:~IEL:onC[w"-y=IZ_};Y
?Ϯ6lrVs쳩C{Wy@m'"O;Ko_N`&cyƥ'm®sͼrCFZ#G5xgZhm"{Caca'}7U;XI@	gvì.@b_gy]dz>i'pU>m	x^Pj<<֕d{UxmHY֏kl`]g'PBPZ7
uMvr+L2Tc¸"gx5tg;;}HexujB
j<Sqܓ	v9͈xٷEUeOxSA.aANwj5|kj)n%uo}VB}Gf9d^W;kf"TWaYw\|}֢^
R)J:͓Dgm
e{Zvl0_v:ws<!A>N3(~k'G-IW3$T+0w^80vIkf|OTP9Mf-]r(wbVQ)Q+N[rWN;Qi
xur=#xK)*|[xVj(<eԙfıl4Kw^wU41"՘WyL@Lk͔]vQԔ^1[H:Kv8UmN(URc-vyIuo lGrչmG3@t6YfP~i̛bS~M8dt_!~r低tw1$jsA~yJ}#D}J_y m*iwȾNkr:(`ĺ=y./mTU
&9{)Y:H38_'Al 3YU}/?M{
N'T?
6:PG%bo=ՍOV=?M
tݨ+Cv=:#M`K6oѨϤeInQWOIL>n=dI*N=2Sw渝rnoT,^o,кOµ*s(PAuDU&?Q E3ֶpm!{x%9
-ڔF'!A˓27h+Q-EZx{ÐOVR֌МEmCKoNzJ8N8N#iijuMUr!TSR
|hy_suaE;m9ƫ_Spl[g,D
Asf*%޹V]@7:$xu˃[5:d`;`U6nG@M \Z.râ٪~`gʳnT%/2W=S64T[nt{k<!`T#uT,(̦xF&T*$^x%aCxs7<JSAݿ}gt|eM7!,=GE&U5h7gݚ
75eEt$l.`Pwy7"0P͕<)^	J)!.@XpQJzf?z͛8]VO^ȒKj/Xg&Yhji{
Ʒ;@7 ŝlmYw(m/PEQ"	 E_ PL*,w{R|pvG@Q燨N'W5Bڭ^8SɈpOҲ;y|?%SO<
 $6GIHZA6ŧ/YuDEvL'wŋ_W?b'ŶXu^*HfldqsNp
+eb5Jdz,Icu:![rm2[z.9f
~}뷌Jbxv݊3%yW22$_f
x٘,Wuk\vM͌iɥKUkYN<@V´STeg@G	&=dG΋TKlVE"h^p;ͤI)$
G3(hlh<u^[stL)l3bV@Jr(V~A9:Mm\ϡ0ZQ
2疮2ܗbXQċÚ8O)j2@1밸WrѮ"6W*An,'`?SǾz7þmgb^r
HZ܊0B7"n{g-IVǅ
ce?5-Բ.e3&MLkB& ٙdk_ݒNw'YV(5`js 2@(V9ZPwT4_W=ʯ@qRcISX"k&K*ی6Auqb7N '':G}9{7j؜zMM)ل!bꄪtkU5!hxK{rfϩQZ
#8gsNj5F8{iVӟLy8dPCƂ\_/@MRU"A[ΐCz3!,@sxPx՜BG"@%%X?B$'{eʛ_VVWj<ku^'>!dsK<xuc@XWӻ=4<g5PGt]TObJsw(e]R4W;`	bn^9@ "pĮ#g꾊p' Zd[ZKwWpOckjyW%u;7ob|׃6Kn7Rp>bH`츋AVXUcⵡy9oLz
NN4* w^cpQ7-it=u{`gD{vCUۈ/`Il!A9UzՔn4'tka+#[`̓wU)w_WKv3}yLPmؙJBb8tp6	khAicezPAHg9ԳlDm*<F+Fn)`B1xH~^H7WՑaEXթ q83]', v_UU+PT&`e 0˔$ cA1 gY@ԷV	1_LXjXUXTƮ];p
`n FE̪{) Ygӷ:|XG40b ңSԼ0ŉ!2KqzU~hF^Uyz_9"\7id:iެzc`(unT`+1/r 4PTa~R`9J8^N^D0Jn;iu҃&5AoX{`> Z7&	L^#VE
x:#+eiӛC yr`rչd^|TneΓ50X:ٹ,NL%ar{ϛ H+?;}n6i:ťJFV_^șN۞C^8}z}q:;8?=r;GR`YޢS
][h,7!󈚿F݄Ļ6أ9]r[ic PNJ"SGXY4V tW*Ջ\Q@hn7H4#|IHpe۸UDdoT?~ۘƴKfz|գ\J`K;Rio [ˇ_~;E0ʼec.j ѾJ~#bnH6j8V>vh9U<	[gğo5,ب j$r
7xd~*RY@OyCS0ǥ%+lg;髷]7!L-:';=-
PJJ"`gyfv:MŜy=)OXxXr@7\ZeT%(MTxk^AMW{Sվx5/="9em[8S=氐9 W;Οv(yq~H W߭uF5wŖG!Z
ve

A'D[_+?Lyҭ[gEⱩ2p7a,
^58OuIyO_XxX<F	;uX?=dvl]c>29KKOxW8TXJZ2,9|_ww,еJ./ujڬ	<M[v-'x]jpH*\ԁT"t'_*r?{ۗeJQE-jusCK9m<a+ʉ.7qS/5mw^VYqt罴$O:jq*<GyQb/;Nߛ_a9)OIvxޛRG({{ήy2#-dƎMSfj)K6 .MŗeL8:ȩ{>_eD=W+fAORѹlKmU}6oCbÜ[%(rձpHОوᄨ$t`/͑Y3C-ϡ*3y%ǣa_j=
R:Ok؀NʶR)[ @Cط`' ?TMۇߨyj&}GS#@,J8oR5tgp#w-QioH_+-Dznhﴶu拀S@ ,0v,E1)Ie&Lk6pPDL-%{|.~"Y%e=8sBmZIއS#Moh=$Wm^qT)$E8Kxsv<y%'lV_ۉ?>Ȍsroͱ}tMPNPV	3:ԑ3)bTo[	c rn7)-UQu\XW?
}A%[w2LDPiapj(}<vO_7_^يY.vmx
K8'/''0oR{%]J#ğKv5qܴL:g0Ohk_-ǑxMZ9xGXǄ&,Q鶉i
sZNEj]­>k`d4jYӂ_M:9Am^ƪ$]h&]7z0luj!֍麿_JFGS'XRʗfݴ:ГKxmۗݕxA՞1)ppTaHH0K^zũF~Zt?p/A ۻ`q^"YB eӡ>[fc_KNm.~&gԖ63:I`YH$$zՃ{_i}'0prrTVJHtgvͦ	|{ױ]&דN_Ζﻵ#tfu ,+A&i9\/e#</]a㖺!K"el
,qKXm콶rG^
"ĨhRAJP'XIH",:^:ăCH'ElX]~NnMQA4xP[j!.놀c 	TV.ˢ_g 6(G6b%nXH9jgb\b-
Zvڟ`}ԳZz{|l[c2/ZazOH%Q
g[Uvl/P8=*
#Ɖ*~`) x9Al$Ѓ9EњIwKԸT9,@Gn::ֿSI"fTVAߧc];=^l_o=̗D&BIךfϗC,[7T*9d7]	߰$֊￻$ht]3vMoO]*n;2*"uyoۙ"=}x{m7,h>m&j^O4<YL
Q<a'Ao(7J?_7|۫#m>Kuq;bȯtWUU虸)39xA,azΡц;-
HpBq1Ǭ]DhާzOH&BίVG
2 =bvېi}G#nÀkD\bS
G
+U\#O넼7McΪTt./ՐY\߬
JtoEN($2r,[]YrKD+h"f-/ի{3%8'D|?8UÍjq0
D/rXg=%<62E-%k24`:'tJzJOw^1zcϧ=c3B<UUPYZ{t.v; < Zti#UWVJNTΖ(U~|ܞ\ 3P
Gk;p4ǃ_juzuXxV	jh`O
72^Z,/1sRh"͛ūh
RP'"В /U"euTUH(,$-N`
tl&zW#}:!gJN30&<}fk
M'gf^Yr>?
|Ze>
?l|o
2'9ض#κTU═6^P:7Uߑ@quJ,ɉ	XnBd0ű<
Ƭ,f֗S%C-;_.WS1&JtMX5OeEDyp	(xKTvbhZV/;C1R8Tk"^S.˚P=)6._Uft=Y$hp'֢JX\&/O[js`ҝJ3-J& C2WثNy93xjhldp7 &_M:LёuJh05>,`Ys'(9lgwѹ)&˥mu,ד93Q'8&Or!{MKhl1SF #,դ0(ƾczKv3AHhLgI{*vvBa៶Ǹ|HlzYhsS҆l|CUjL7k.ugg:	tܱMIl̘dq.HyFg
iqР-y{fyrz~u "pO>T㡢8{Dgt=&ZޮWDǨ"X?S͎
K_<oУ녓6#oGn-B k?֠ý
A=׿U5`*>>(U ͟mQBBPEܕ{@)]V|(/c6-=)qAʿ&dІ #$K:'L*B0kw[ft+{ѨEop;o'P"޽:wwUpN;5Wl yS_QwjJ<J(ޠ
n(n`CKBOW%<	qRv>o&( iH'+M9=^ɮ7`0#_tb|ђ@b%CrFEڝ	 xy4[yT)m/[I}E5
;EnѓQ>%ڀC۷e(q*T
2WUed1¥2+Ɵ>RJz!CtU>	VyF`hz@d !u=Jn6'GFlc&#k6-=E._@GRFxib
JokO+fG%0@o-t
'bDmQF/n
9wϜO<SXXW
EԷWkPke#a1Lw1$xT3
X/JUAӸl}SLdHgjYIJn_Q*6Ct]ܗ4]1a8lM2T6ab]j&<5G2i+aTem=fjSi={wüVǴ"
9ݏ]8y@!gÑU@f$P3v1ciu/BsR`6lt};gХݝ\M4P@EI>wX`VCQTćJmԙ.%QԼ}6Yu8<bTumO*ok&$rR Sf42.K6C</ I4[?U=Xv{%u7QZ,cN6r
ˏDo蟬pp]7J:#p3|}zQ8Oc=4ZZHh8eYr-:=^MN@<LJ,$
k5r9{>t=B9D 1Wߊ1QV|npsJZ[kw9ө<Yh 4 Bf~}ڤ8'
l`uME9n*!O"K$o!.Q^ZNC|9ee84&@mV
@5P(gl<͓>4)LP.Q3
ͪvDZf$_R%zuhM]<_"DW*i vwj(dZ?M|Mژנ9c~:
	v'h=m9{uYD}O') >}
W?QG3=,:UVjPrZhnQ#xm;$t .^Rd?<Z?P_PS Gt.Se
l``b|y;J)O=m͔lȦq`7ɄXB4쟚QL;1*][o^zW1M) *t|Q٦GC	%嶾TG@{h?qQl6r6ߖΕQ3Q%oPx\gsx	I -|07nڝovDq8V[0}J/̃ V60!3S-
F :"9yY%F*'Ƥ~ŇG`4Wa0,
1PS:'9П]My	kj%]&mt1
[NM3@Vi )U3 h,:aoTx6!+>`4"M,t]F<	(쀲ZIɃv %Hf.fqZV^\	pWdM@:T[d${н!BA
H->,BsGz9j^ko2,O0񑍱=ZjzNB_0rV٪nF5f@~np{[1ŝ}"<z;3tUd˦Ʈ02G{ghEsF=kfqx^br>-<Y>?O"cw=ϝM0SRL-=t<M.i:qG>R&ޘNmk܏ CO.ڧ_<Ж'95󘼙fM4Jga6&Z HJnf["Fv}~#RX@}?cK5xÛFncn-옑嚴FkVwP=(qUmLbwfw1㈌b=6Шhzu9TRE-3釦4
_޿Y
]3ŋ^ mSAP8r0yԘ:}?A޺Պ.'(ќa	FLTYl34L~b50BǆGb REu\PKGc% ՙ PK
    D:U            $   org/bouncycastle/pqc/crypto/sphincs/PK  C:U            7   org/bouncycastle/pqc/crypto/sphincs/HashFunctions.classRrW=WyH920=-vWA%\<y<HhƮx&B6TeqT> ߐE<G#9U&E43{o׋_ bE[RpO@ɯ7V*U^J0V`hw\
SEf?n\} f]q=#`:,e֪1Y@?<k;o-rͪhsO,1
½F[2G֎UX^#vfw۳wm:Nnv|""Cr=ۯnJoѰKgS]MO۠]veq؎8^KTTqR)oȨ>~}ÔK\( dO-::I:Ցbs::& 8f)\`J1,Jl.)JPMM=0;y\f3Cm[6;1cOEtOoyX? ,cbiWpmsrsdOղdğc9(M=GC}((|4A^wh{bk(P^Yb(iK2l͍qPjk)⫿t9#?(
")_p4E0b#@}PDB91ʦNV"ṁUZzƇk5N˞hTFa0$Ɇ77l!n̓5TG|T)ybTǄxiN
|5jĢF84ODSPKd1K    PK  C:U            /   org/bouncycastle/pqc/crypto/sphincs/Horst.classU]oE=kwm2miRp\6-M4%Z<nbJ$J /yK_ BJ$jn'ġk3̹3{z qQ
PK-?;:}	 	˷}kJM]zgz&;I"umj|![3oN3DIʄ뗧'i^eWJ![-UrJ}߭a0a
ZZ\ֲ<V=7VSsùJ~5Vkt~yu.ʕ|5}ԯV^Tk<iy*uiyr[<Q ޕʒN:._GxU&лE/?
_e`cZ-tB&NcD/Έǋ&6я6X(RVͭnw;ݥwnH'#	 NXX3t>ԂC8GZq±]~F:ͼDVFj#
q }6N81nbxtIP`w+Ȉ8mbḦ́x(q<D⌇rv<D8ws=6[eu4V!ٚl5cr9U	y@@46x$nRecڪrkbNC3D_:A0Cc3j&Âkܠh<#0)=FI"E:ƹ}
SF+2ަ<dђ0R~.):pѫoG$^'NnGcQޠWY[IkGc⒴Pz"T8$Tߥ:hVLd;f 	C:%b	fkukkl	)e'h'KIR8; 7R[h2TS#^G
%ܔ	"'#Yz8!f͋SFv-NusW8FzOry`Ͼh){2'|$;Sfܦz'bd16L{z;HX;|_*7t_jЏU"}!}ݢx[=huhLS]Ncv.6n?ѧ}ZPKdVz  `	  PK  C:U            1   org/bouncycastle/pqc/crypto/sphincs/Permute.classeϏDǟ3vx-l| vET"RKwY	"8YM:!qV‪\@z_Ԗ77|獝_ >94650jfCVk4w*ch6PZs3M}KzϮ}NOw5ܚQumu4$dVq5'd;whzI7K~|#9ED^ݏ(~܍FQ7ta$PؾwRޠPNFztv1ևwa:3ߞ)Гׯߎ:Q gS@0(28n.^hsAw<Te.@EEըo*ڰo)y~ V$4J?Qݔ}
v?*=Nh+`MQ,kS$BEq}
ڛ-QUxPH)b)ߧHI93!~ܟpcdW͊1\f-]~`H~9 '9?pp /y?Rx~P(E,fkGB 6[&ڏR"dm**k9dUaK"*u@G@E+p3+P|bV+0ƬV],-tg3_2YByQQC5SE]FL%W6߽v-zyx<őYg(JM{葠STg(J/]fˡ+4P%=Jf(9V-R69RI]H(H=,OUK{+,7s0[>9'Beg+B
UV9<qV{'k뾜ϯ5 PK^k!S    PK  C:U            :   org/bouncycastle/pqc/crypto/sphincs/SPHINCS256Config.class]N@ Y"41K@C	[H85V,!-B1m|O&| 8%0;$~|~@.	KW=A
ZG5WUEnNQGz!2Q[1NuQZt-VOںJT粬vmrZX$u41^
qj8c3XG]:4g/hW3g1"6nndyA|?Pϐ  q8S!}Kq3o`L 	(@@:E'8v:G90wpYf\;/PKO}"a  Z  PK  C:U            K   org/bouncycastle/pqc/crypto/sphincs/SPHINCS256KeyGenerationParameters.classJ@'1ƥ+몉X7]Tbb1ĈMd*CZ.gfw87 p8C3"u)rStE(ruK<ER~F	%$d("3!ʳ8	sO`77R5LTM6|܈{s
2Vf.D2N'ݾ7bl{sY{#u,`h4`¶`PcBKzk3VYշuT #P2X>'PK%    PK  C:U            D   org/bouncycastle/pqc/crypto/sphincs/SPHINCS256KeyPairGenerator.classU{S@
Q[j@}P(Pu&&5	qtFZo?^NEvwowvs|
"3tG{n2=SAͶ5OÞ"7|{9Ͱ/-pKY	@y\*hQzjjY3K{	|rB잚d*/7v'<;e%k=]s2Wu۫:x
wmCOCĽ-6sm
qml5?WzTK; v0df6?r[ߣlُ[lcYE;!T6-rV2^h˔aY{CI1sR(AIP$쒰[BH^	$K/ငI8,ሄǲ=Ȥ?ͶUY$Aj?vN/A-B~;b{6܀"٭T/0~GU:-V\j05{jq"t0`|
ï`@cPY`
Х sby^Aȸ$ઘ]S bV#H	qC2NbL ¸aL82"+#;2HHDF&X/NcnLdL:tYsU4 =E
.BaXU1CzqeuA ȯa*:ai-avO:F
5!ؗLf}dwȇzא0+LO/IVD<.ԑ($OxPã:DbwQ=%)8B{PKΪ9    PK  C:U            :   org/bouncycastle/pqc/crypto/sphincs/SPHINCS256Signer.classXkp+iW"RhY%	
8	8`'Xkyc(CH((m蛖B(IPJP!4f:o/f:dPϽl㜽s={9 kqN1v
2Wqz Oڇnnض3M}We#q
.sus47fUxF+q/+ZJ+^K6ސ+vtflNd	zasΖL;;PѮd%8\ɍȌ\YlV?mx[iGhvk6hŪT1kY:[Ͳǲ2$|B.V862vX.ݤ9[,Wl(ՙʹ]䉇+`^+oƺykTc[X%Ydk+cZ꟨zw	_~.[7o(|ζ֭ќYVXp֬+屮";1+ˉyKk.Pbt58w"YjTL]KUpx+ltmoȰX_}]n֍ Kp$Uϥh2Qо b᳠x3֫-/P /ڥsX\pi+6Pb*>/Rx6:mk/fnjpĩ X"/A>joH%IHhp.	pHX+:	)	$\/	TZw\2wv9W[Ϛv}\}\)k"5״o_8;ӿ"fAZol_OO_ROt]~q:ܻu?|Ȇ
Rj83!܍Yٰ}HPᤛ¢V
E9Tс
hU9FVAWq%, ¯b9KH"FTlbd%eSqr*x@E/#`O!QPq*nEIMxɖU,Al=W^!?vQF1`ࠂ{_ `_R0*#_f;
v*#PH˓|3-F~P0HU`#(t~FVab+|S(}xyQԾ=QzfbэrbtYOEy'9!`;Z}9]\-,:43

)|1?Y3M_'ōE/[L`Gr
OH^DchQJD	;%G@+m]{V2w凑L$|8OOX
OU5"W\})-
%\g'q$u:%Ɵe'QxwM[YĔ_k
EtRV'joe(^w7،ͦ{
8[]ݫөuY<rϾn	&c(j.Z<;c
[\S3LI0L-n54x4ҞѺfz}0	qP$ф~?(=(i
|WoYVci J:
cLyv	DȒg12hxZw:!#?)<ߊg^	#X^#0AZQLb=QYdN!wb:8gi{{ʧJK,5Sgxw)EWt8W˞}]4[S>ٯ*-'jjJ'j:P"8: *s~z`˹ִƋ d|"_hbPk3S9Nx;#$! k!20['B\5\ 05]Q,)}QDeZf[+N@x~XLyu/YNK5H3ڒҌpZx;&፛F;3<x"~,bzPebFTirv[1Z|FTIrTHqVxS83bZ41Ng,Tk9ʌvi16/0<]i<׊8tM|E^CnF'
=+U
btO#crӎ;ՈL%!5AF`DROGՈK"꜠Gt/<C:C~ޮ"";hV)FP+lhRk8V0FJ9٨ƓPju2,G^m5܍օ	ssOg:CHA	zwjٟKĔG,?
cI۪r_ͦGy{W=T"y.(YuȫMB/*֟@{i3C*D4 Dk@.ʲܬ:EJwTQ&6jQ+ذx1U;
^&Q{TDPuu?.8Mt@5(W}%,ׂcTk`tu~&HIfrX{E.&_i89r$?NbB8ƄjinKTFgy#]Є&Q\Fλ<d5q2B]v;+,gD, PK>r{
    PK  C:U            >   org/bouncycastle/pqc/crypto/sphincs/SPHINCSKeyParameters.classmP]KA=eEO$C؃Q/1mú*(}	60s=ޙ`ڰ>`H9rflx`m$)R_R8T6ZBVD
':a?I-gx?r\Kq;NEѿ

$00oŽcܤ}PKWjt}G<b`,Ew#]UZz S-Rhql "bO<JQN]JXpb3ʏCߢH(&O(?PKM<    PK  C:U            E   org/bouncycastle/pqc/crypto/sphincs/SPHINCSPrivateKeyParameters.classJ@mӦjomAP["{ZccR7BJAQ< >8ID{;|;m2Pj
rBy/P^G>Ђ~X*G^D=tcnKx=>9
%*a8UDhk	cP)&&&,s٭}vnγ:6*((h@y,Ylau:]/ؠMdg<"iQ^X+W4<8f&)
tPK+    PK  C:U            D   org/bouncycastle/pqc/crypto/sphincs/SPHINCSPublicKeyParameters.classJ@mҦjVЋ
{ (["{ڮKƤnBJAQ< >8ID{;|;1ְPlsRBi?a(mƑbp}eNTz(`pnn}>'LHLNrӱy2
"A7 {_hq	Cd׀?&&"MTV^PD>D^rVPFC	
òrRa,6
7([@ڶV[X}FM6ܞ:`=W@:A9/PKm*    PK  C:U            .   org/bouncycastle/pqc/crypto/sphincs/Seed.classSmOA~Ђ=^yѣM 9ڵ=< GI~R4	}f癛ٙ cٻ5g͹t lU9ĥR5&	)ln5͠Eΐذm˵|}CdiIqŶpܢ_,;ai/Cw[-/[_.Ek!􅽙qJ3F^D`e
6}4zz*/$u5Xv,UfGM+(/XO0C)zYB5Q}!jDR]as9o	qit^J~A/Ŭt9;֥
+mZQqE$G3%ٜ?GM[մ<~]gerkPyuA.
&E"EuBq\)
ĀRX:pSC'4taXC7F5ආ^ܪ5H1F7,SQY~Ƶ@a!=K6q4Aћ!XAħ
Ay
4/%Uj%$w*xӈ~ƝXsLq^~{&&6C1/,1LlG!sp\e48LҎ$ԂX594O%TJ)Εqn>WѵbDn.֎=<ahHj4PK|~  -  PK  C:U            7   org/bouncycastle/pqc/crypto/sphincs/Tree$leafaddr.classPMK@״hzXx"x7ZS&fB`<Qjzx31fG'Lu*@c]/9˸x.Rd(/g,2Y%\U`srUT9SS*J!f?$xj駫.G^
&!\8!C4
@cmD(ñe\)&'r-$Z,h[}=ul4o{6#oQ|l+kt
۬طH_7PKx    PK  C:U            .   org/bouncycastle/pqc/crypto/sphincs/Tree.classTMoW=/372&-SSq]ÇHHdOib3|X2R,E!e$ QA 6]+	HU+?{;y^98Šd.1+gĐ:gط#W楡moN0XAXn[8bWAaG:}տ~Zr5m-v8FMGJFXT(njf!jjT8G=!H}vń@ХH!_,9ьG7Vd"'O.ecRrk8R&cY)н*w9˞DJtiɓXAoh8Cs&>jB3!0b&idLp|bBg&2񅀋i8,pG&fF$'0)!bP50
?bW׿[K>]o)!CUCT/z o< -K;?'~ֻP<mp#v^I.]WsR6{RObJZ{BekgԊ7xWĻH %CƘ1;iD|/>g')CO^v-|U*u?Ӌ=ES,W}319wԱXʅK%\Zw,h;;6S{cI
MrסrX"H?ZW_f	Gؙ
읞pD*٥ -^*pf GHKzpk\z7${Gܙ|9vtz)&WsS8R+ӠocN.APK*`b    PK  C:U            .   org/bouncycastle/pqc/crypto/sphincs/Wots.classT]oT~NlخG\Vo&MttQ5)Z]ĮkPUǤLbW*.E\#q%84l}s\Rnzn-)=h؈+ɫ͠^c`
9ZGk9"DD*+ח>~\ĭ%HNZeFXp4^d0oۮr]^{!\[[㹽۝;uw:au$	vc=ϚJsCR::mWDjMrA^"k	Dx6ؑXd"(R8Rc)n+GJ'J
7!WP5W
$HxQNB1:
:&1c
]ӰEaA.7|JA궶yT	JHRW%!~bE\gC|7Y¢
ph %/>C2OGUc8WbmmHQt-T>;H};Cd3\!7OZ҄NeiA4s 
qf,͒F2KZ o[i /d
b%O4xm__uGԩ1<t!4q'7/MiRAT,QB1/4x7StU.lLHb,cl~վR^YPىFqw˴/)1>D'Et_M;zo3--b(ҰaG
rlȄyg=Gc㘉Dr<LhPXP$KpP``gZKO PK]Y    PK
    D:U            (   org/bouncycastle/pqc/crypto/sphincsplus/PK  C:U            2   org/bouncycastle/pqc/crypto/sphincsplus/ADRS.classSsW=+I#BbZS6aLfw)qwjL3}a09sﻰ]"!ƾm'z(sa&mP,|pvlkn}NèQBQ*IaV.7Kn6wsbCµJY<6\Pm&8
OlX?j(f\ٮSTX{VӛAg@#vS;y2}c`gKN6Bufpږ>YDm߰uZyTIZXG<)z߲F*P3siYȌmmpK㵡vi219|Хn;4<kLzz^啕b)!Aow[Ϳtq0:ݟuFwڼ_wlmڼڦ_}+BOHN10b0`   ō(Q܌(p;S?[cO6S=Ki'H$ʸ"22KqZ%QFE<zQeM5sma:o8V>
	;l-ؒ#F\ۙ~)$S8+s_?ĕcc
053o*+gߠWiJŴտшd zX(kLsԉ/\Os))w0Sɐ/,G=ϕ:ć9򜻣y<`%%tu4иQJIFi`todt"f)dICߕI	IFI	FI֧CPK%k    PK  C:U            2   org/bouncycastle/pqc/crypto/sphincsplus/Fors.classVSW-n6
~CFPBUCM"!	I@[Zx/C_
NNg/K_M:{s{~5|+	xdo`neovNf0X;DEFo'][:IzO2(v1pz<sˌE|d&2D*$sPPgO_VGH<YK;NEy+E/J)8bV&	p>.a3NZD-Zl!گeuYX<8ZtDc4Pq)|9K|=×q+mx>u'R#V;#QYCP":AT:8ʃ38~ޙRkuY:H5vORUmlxNfF:P"F)Z9:܊4N#sX
;Op..P)`lx^`n@@@@^	Mk/ݕg6^Y>d
6vx\Oӓ.wnq%WͶ]չ`
\Dl>]׿A:6`xWQculen	 먆ÄS~
:=UǋtT8:^GNP.Tq}*Z𦊣8pGC g44,C!`ihF-fx]]dihHC+105gH0\bІaHH(
gI:B{$zICBnA5vں	?ȑvIGrg\=tk2w.]ST8RDQ2\R;)יD~h#/)d
L'Yh%*䨒%meb܏Wr"ej\l7xsGbϣel>-itsRl!4=GYz^?=q_*:~tM󷭍(uYdM6>	8K;h
brUC-{iTLbڒ{Y,IJ~)fd3M&+5~兮==S<ZLдJAS,듆Cuf9$(Q-ʟMla".qgrp$$x9-
TyI1_ZiliP5IQҘderSS9]w%͕
ʩb*ҪA^݄Z*es<jik\1<SLTMUp
K5T\K5U_.'3"ݜd6>aNR2ܽ "eH}&r.]J)p]mjWeIJ;
gv¾j
qeJb8'L;i'iS^>Z%G->@=t!?PKc>  k  PK  C:U            0   org/bouncycastle/pqc/crypto/sphincsplus/HT.classVY[~hMzhƩflXN&H,6EĄ1IںiSҬutġm'<^'qs>pH9Yѿ?y&G*!r8)WH[uJPhQnI3`XXk4M
IcUg)4?#ǳl$(qvp(9M+e/&bㅙ|z.x+^Lҥb|+fX*sT8.|
8vJn'G^;3I	t!vn~䅛ip	9ԑɔ\ϓvKqpbd>J0h9rz8N-ZSO
SdypfϝX^tLKN,'b/i:qؚ)gsl~g=6̆Ug7G'R'%Wӝ/(#L±US]AwmnPXQBRəzqRaZPz<Jq*TQ;]Dv29d7Q?Տ~T^"=/y7Iv񨒃R<%\~"}-]li*T4_*hU񐊘_l[
)Y^ojInrn3\B1Zɱ]jrKaݩmv
`7P~us% ;JYVd{ձ{MŧLcxo!8&p4q1b
&0qdB1yMz&(cڡn3,L^ų=&3|C eK6q72qgL|FLghĨWu$qa!paBG/28:fpuk_7$rz0Mo1\6$CCp1fmg>Ëq 9|{/8gfAݶ^uSe'=5Kd$)@!J6c""O^F3+L
CU4]+F#xg!1e[,r7lYwa_8m
%ߡS%Tm4S~] dzxF) B45[،r̄#ebɄ/Ji*⪭`j%HM|1:ʙ{]>/w؊ock;,۪,aP,[zݰ[uѶn`7H[FN"]DSѧ$$#oA/-3LiD
G~
ꇮ/!I42SA<Po%(_U"V.
;DomUplfsJ\ꯔ$ef*kX*".l#χ(cf@^G7LJ$WҤ#2y-CMOûШ&L^p3%Tj"NIe"fR	kuli9vڏZ:oLZEy<ϖeqA6g8.ŵ5ښ\ۛ6<"JmEMӿOj>\C]j|px$kd7[ڹUkk"os?]
~>zvOleOH$2TԫD,EkzU_lff"p#
8F?
<_/֚
yM4I
1jk|
ym6FqQ9JE8ۨ'uƸ$UxjEu.[PK~o&  A  PK  C:U            >   org/bouncycastle/pqc/crypto/sphincsplus/HarakaS256Digest.class[OAC[JK"VJ*hb>t;mX?>HŨw?R/&̹fٟ;0|֗@.hT-
kѴM)_gf%S,2=7
mREQ eis!Yrɪ:)k5^]zdV/ʮx^!~Yܮ
%Z򪍺pشߤ/aBN0x\iFྴDtr'`?5N|fچZ
?jtꜥܧYʡkD<RfnCjmGj%Ohmm*R1nKE@WdWO5Lz]]`z ?sP>M|^\(Eet&ЍD}J p)%.] =Q+V"
dA.
w*1uV"KՠKn</YG)p~(H.56z!3{.ЃnҌt}n{7>ÈR0Jj
#mA|z"[

? uH+D
PITR/
C
y::`*{Z:{l(
qɅ봪zZPw
PK!z    PK  C:U            >   org/bouncycastle/pqc/crypto/sphincsplus/HarakaS512Digest.class[O@vڕV,.x
xK FDf˰mmg닉/>h-j/w0r5mrΜoNgNx	Neˠ!UVT*]Uբϑ6!_#%NgvC!o~ТZsaA9w̺ݺ:rq7C\gs_ً1WE`0~۷Ca+.ꕪ:wOfCx=[=Ot+0)aa+5-G;lүtplMBp^MEǳmFuN>whU}t("A[/k9^Д=ϗVMX
?\5:bZRDt`KQбUG:vfRיcZŋo;,MR[E#g`6ha`(y&gчJb`Pq8GA%*9EYA)^ڴ%+4c褳('k;8Qx#1a$4#d/`'R͉Ip'IpVjW̉u-F?st"7yT4BL$)"i_@ORw83{r
ЌO@0M3K78
9]vK34ײ13ARİ0WCdt78Vwھ#cnѥ't$[ PK    PK  C:U            9   org/bouncycastle/pqc/crypto/sphincsplus/HarakaSBase.classmX|տ3لɲ.0&/g#+/Aȃ $@3Ҋ+R-hmjR`(EZKR*?>hwΝ`s̽gWOBH<s
,CE A#$.G.'.O)\8<ᒈpȅ#+U-\ZV/paWP@
RGQiSEE!KieR*]ť}KJgwRSKSgD$H.TnKK$IHݳE g֭\uC9@V>cZ1qa}k-͍u+ $
sTwiH\;W>dng2̶euc[aժv	<kM]{ݺF}=Lܧhos]onЅ;ԗ֖κDںufH'^UF7uMkmްpOU)mm_B7t7ut67ۮm7wu;44t5oy-,뀻jCgSs|j{{]7D>pXӴsA&'Pcv;^;$?_o~;xwO]_.TC{sn7-.kC/3܋zZ՟|ŷ{cυ/Ї.KZ鱋~}~z'"ϔDۢSl]M<{]F;<r$}ʽӿzc37/jyL<Y~r
f1>z7t\ͯгj~Az~nxvu9q繧^?n６w2jFͻ}z~A=n9\,B?=^>S_v~G︂~C;8\ϋ_~sϑ*sg~ubs=Eμi.O"˅pAIΏG(Q%Ώ)ΏmΏ|G34Gi`5W;t?4s/onk~ݲhQmTso7lw<Nw4qsޅwҼ:ZD#nom_eѡVӛWw"g?W[o#dNE㐂h춮cTFVtuԽ뎜=_K'lG7{c*%:ĉ'vuDwl{QBgkߊo{.ĞcbՉk?&zwy7>7,6,|Yj-ϿvxO_-?{`hM6o[:ߦ-^s-t~~&ח=V3[OϽnBtDRb+dBfryL z\Ad2 $d"
q$/@ƓA2@2\$#I$@2	R e24$s )!C$N4
h$%HJR4X$qH#d"IH@Rd2)H")G2
t$3D2l$~).ֺjκu77|Qk7EHP#!,Сz5#k6h{Dx4Df'DCd]ȊD<5$)
L{5r
`+_H# iG"?Q oN[ #"e
x|E ~ T"D'xI5ǉX@5
/?
 pɉ8Z_	q7GA	}ɾ+1	B3 jDe@1o1O<y|AH_9O &uy@ rbQi,#MTqTkSNG9TyXWN/?XHG9ǤgX]wX#
A-:CF]\hɥ9b\[]A%

Jn׶T:x$F~%ϡ7$!!Gi	Y/(Gz"p=@Ĥht̜H3Cqg(m8cLFa]zQR핮6m4a!C3e(>?Ge`s	AFFNm_+Mk	}6e$יB/ޓD
0_'Tu2/b-b^^Hz1A;0h^dz15y.ԖJ; (k U̔)n)-нBEJ:GRϑM))vJu,NQ'I)JynO:]tWp9zvT>fM!q>ȏbIΠ41xCiM:s& (RLFQ(}1@R4_;$T'jR߃R=?O/yXJAa1i^+]d9%1[2 3r׶H0Ȳ^d-$E?)oqأbZhqz"U+-pUV*_ `Cra+,+;MnAޥW$%#JRMR2~#ApEҹ(04ǮʅYl,39/eb:cq_1vWSMnRpEH
q|<g
	ƅC)%8F̣ͣͣͣy̝1wygF0@%a&|xfrncC#|)I]2]T1ë1C=1Ce2Z`l9Т#1be
? Ųfef;[F
@p6Qdac[F?D6Ara\ˈBBl@(a,;iRVbcXIc,㓆	)861Y1M@m"a$qM2`Ҙ&6ae1leMcQΦ2-de,c6fZFYIf1U9Ic.ylmLU*6?i$XWJX [Ic[Xb0.%l[49jV[F
p5jXʮD2v5k2`k6|P|tJ e2`AF <4.xf(x i8K:FQQp4b גFe,gle`CY2j2X>-Ph`X,
c-cef:55ZF+`-c-ul9kfVl=[ZFC
#YF[Z,Z6ZF;[a-elfX2:X#kMY[nmAjցFK
6PlcMUuUuW2\{uU$+E'd,}<]zs<$A}ITP vqpCaK"ɱ(ly9?
mUaG3jk0+?%"Lh *Y+l< lJ?
Ec>T|BɉzaXoa RUQd>8(,`О+dwt(PǥueqBf u QޣC?VE(0.rNڼgY AF@QEAAAAA i©WCw:|a8<=e7;P1f=rTz/EHC.;#P<.B3G:Ioqgnn}	T	T	TN'P&P&PN:@u:$&p$
 8؅<u+tmA e3 RpTmAh2;`&ðm&$$W BR&Nxg*"̐i	S9Hgt"GTHA2q8DASp0%
&%
3	e9`Fg4wBO	G7Q8̫QPQ7QM<`E<6|fA>Z̽YkfADW.ym`m<Am#:Lq<0Z5>6aJ܀8 lsB>1RJy8eJ\s259Sfo-C|p䝨m|DE$enymn|XL$j6-̷ގ|#j;n.~=`N>6o]]`S^}|_ʼߊ|mwHw;ۼCv7N{]yޔy?ym>lA0laރc6cXI֬|P)aR9J	 l~RĂxaʜp2 M E KK J /HW(e.x~\ίlOyKl+>/ǁʹ'x%kOI6Oټ6r|/lgt~6)|KImum_[nᯆȏm/9Mm	dI4|:}X	Y\"QzD'2$O6/Aѓ=dn@C`
OOć6S*,?K7e_	t!+|I|>-]Zm x% dl^l
*?6>L-_Ӷks&e^TB\EEJ.JJg-\CEJ>K6+%l";uhF!C9@W\p@"dו.?Pǥ
 ɢ5kUs"[aM?J2$Cnۺ>wL;mxN"O
E5.IN
ө|7#or(rQDuD/`Y	YʸLhQBU!aBi{F	c#hX8wVE#rhռbf9BPKϵc    PK  C:U            8   org/bouncycastle/pqc/crypto/sphincsplus/HarakaSXof.classRQoV=74s[1-vHl4@A&b [M=Ӟ PH(uC1i"9{|}`c3H3rjJc-EXR&ݑ':2zփs_{TȻR)x>o^Mfcu7i<,,:
нY~qŭ1ḿp>osE~gܭeۭ!7ɛg{~-;-v歠dm5j6Z͗-
Ug=JCK98*4*zT|b>5v򣤁_wkVϳ;(GGC_iСihBDCR6h0
T
iHvcTwR؅qÊSW>Yuԛ}oن!CЕaa^bF,ᘾȝ_L|"NYi)	+#ejq=C{(t qdZ]*JR9,Սwm dU?E{M:S(j(d~/Fb(Ft`U=ӆ,ϬnIkɒhPǆ4凴c0x2F3Y ̈́@$_rIJK*JYCǻJ"q>߇kFM;"NcP
Bg4i(sՍ'
$Ïb+EBI3x
V^(o0ޠ
 PK0_2    PK  C:U            ;   org/bouncycastle/pqc/crypto/sphincsplus/IndexedDigest.class-N@E&N-
t6!@4t4)fGmM|DQYf<5?_ npJτ`<gG=b)7p6RX K/QhkcBUʧhn-Te7Z567zRכʖ޲B7Uld\$fm@Qm|!<;uaυp}P&
1nC<J]zt캎Oyoq PKF   $  PK  C:U            7   org/bouncycastle/pqc/crypto/sphincsplus/NodeEntry.classNMk@}c4ii="(=X
޼xZ%F&M6D'̼ރ\ ^1 8Нl;Y$&oZZ%!<_)Rib=he	vS'׈L+MgE,YeTdiS-%TQ6eO**w>-j]^  p@4ɇy&,lzOxa6d0a4: PK#      PK  C:U            0   org/bouncycastle/pqc/crypto/sphincsplus/PK.classn@Dg@ġ4&5SH4	lY>3H,
GEJ;v5{bAp78-MފvQ2=JJ%;B۽LMW)mtZP4Ɉj({{Zq@3`şcG\a{#6;:'0- .?PKS      PK  C:U            1   org/bouncycastle/pqc/crypto/sphincsplus/SIG.classRMOa~^۲VZ>*1~4PB$=v]ۭ;?=zD?A1wR=;<3E25<[`3ޗ[N1[5͎]t2\bٱ|fuC%S<74éWܲVQjU-ypy%;v֓,8cPwn+u2Yu2m/tۖ)LK/sڎi^f-msr~4ܿ\z5waݩGZMhml*j[wk{m+V2m-H% "઀kJ|]h[s|wgm睮8Gss\Ěn2zсK\!# 0-.F%DЇ~IDBB	:g&C8^Y%B|p2"DI'g IvtorgqK~/}C*}k OYIQ<"FC!_ZVFԐ"0ȞjwH)Tv7H7I&<B-ґW4USJ_RO7_^8j |zC&FAr[`'@e80Y_c2ě9S~xa]N/fPKg$    PK  C:U            6   org/bouncycastle/pqc/crypto/sphincsplus/SIG_FORS.classeJ@4Mӟئ4
¥VPEŀ.d:$5$i3V-X>%1Ɓsef?>pGuw43$ZtLFyꂡQaQ^2x<i'y i,+SPIrUƋ<SYIYpzӍŋ6l`-F9u%9R:RBwz;-
&\Lzo!CfaPK5  Z  PK  C:U            6   org/bouncycastle/pqc/crypto/sphincsplus/SIG_XMSS.class]N@ƿ-RRMփGc"ԃPp0emʒtk[i"1PY7;?_ N`;Lֆ?RITfR140،*5cpXݏa(7ax~;bK(Kh:b8	U&"*UYpX*e1(*yx}'kLll.PwрkO6GSib5xO[H
r0)RO|`'8\>McZ;zYO_PKeJd  \  PK  C:U            0   org/bouncycastle/pqc/crypto/sphincsplus/SK.class@?4\@چQ

$TaY(YǢ@H< b3_}3]QF,ɒrND!?XqAɒ^lS&/26e>J!.saIӓ?jں{pQа‚hmkGVa;6;vvxO1
?&7tPKRu      PK  C:U            M   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$HarakaSEngine.classU[WU%ÔDAZ*b셄B@(MZJ`)Pɥ!4L\jm]>K_U
˺OZ 7{s?^,	P.'gкfTN6+5&]=k(]] =L	
[I&
c	U	9qrH33ZkU*rT^Ж./قeOvMoh&o5]-Y۔\%&,;#li`[¿`UVtOtUk[C=N74wF$^-ZwH#j-$ T#R,gjd"rVT;S-DJ@^;rܯ붵ާkc={uJܽ\^RX<5NE;_%]:I7&SzP
8T)^Z5bZzN~^*:TTU|KEу8okr>_gzֵg?nG{ m1p}j'ޠ{Q{x/ѭZz1'w#V7tb1pct8:g:ÀV-tpPXUuD6::1uEƼG!p
(UkkmJCfc5j^L2L39LhCJ#ìORZпZOv/ZjPFz*OZbjOI-\ƓJDO/}:<nHl(/pɱA"/ xʫX 9:x5WqԘVwH賅!WPwOD̉Oa@'L7hV&<`S,NQP?ݤo	ʙ~^iΔ1Xa7@ޔbiu]i$08Ci4CbW1aJ$)aT(:
o*	R!Syzeپ
l*nwLyŭ#nL,y~˔*F9FPQPI:ެgrf\4N
h5{ȭl{o:[u,vN5ۘiR0M5<Ymd|/3|-GQ3n
2u|ꊻe7LLnɥ@(L۵,)5y.kemm06b>$kp4p%L";dħ˹H̙t"h;ȩwdH!j#dHR+$硕NAм;^Р4̫xPK!
	  7  PK  C:U            J   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Sha2Engine.classV[~gwvgvwAQ&a7[0RMr բ2nv+IlbKzK6@bVnBizEB}3,Bss{9㣻 +wXx\TyT3Kʓ֏J{K}kQ6 r$ҒmT-)~Ktgx Z+6jxvd(tR!j}*k3	Z9)ž|F&cLFSI#XH:9[VMtd-
sF1rں&x:cff_@ JF&@;6g$GiRIKFͤ!ɜƹ_"M?=ƍhyTPp'9sVGGjhkۏ eEl%v)Rpj"\G3\*n&Qͫm$ɆkR\~NQvvJtFφ;^̜لM,V/F&X<ͦٰ]zG2f^0czX^$GI*G?fTs3'Mde'~Gq^#Jߒͤ'x,gVmٮX91My	sI!Zg%Hp@S$D$C%4HxF;hppCMk,nhR
E)$*7OB6Z~7rTة`"Z| 
9ӏ`F69yh5/El<b	_	*\ǆϚ\CG)zIb-e4=BW;<p!/(hdbPAN*㔂f@PPP%p3*c|V_.fxapE㌂qSN<^a cqIC!Ðe1L0gxɏ.n&÷$%@}G?^2uoy\f78WQ\`2%80|^T4#I7HK *Kst{v:b|VOltV3JFgɚwy[}+x	??!pjgcy4&V":LWU
Xgn^CCa}ĞAg8}.ܜ{Uj޹CE?-Y5vΌeWKdޟ/Lzvcu4_$@.YSzyW(f8e3f^XyztЭ6V/Vse*F$<Wp^$_j]lhqQw}vYtѭ!w0{KnD<fnIp_vp\'&oL<Ω;{ܺg%GD=LTgzu^[&vjzSkOQZ`{u=[\ClwZE
i[Fߧ1URDMy["uVeMr$պ<"~Ϳ$VUR2fҕv29=0U&%z@%bo7<nGڨI_=X*ʪDOW%Mi2+<)\W"e,/[o9Uɇ=E{[ʀr;L^ &^.GuWJ^uN`	PJY<qlzůyf+yWH{<a	vķ'=a6WA7q*EUUW"nm"?OppyIxow9m?;ᎈ\-5ko
\*d_C:HIqFˡ!*4H4xuz8
血CbpyЪb6bHuDlJ
9ĎZ)Xԋ.Уt<nu:\B^Wzg
PKŻ    PK  C:U            N   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Shake256Engine.classTksU~NdCe+K)TE-F]7lJikS)MIvDq~qƏ8;_`@|fZĖOyy{{s_ |ܝ9/uO2<t_NJwcR>Փj؁T0"+1ʌr(/zI1Bmij~ZF6# ͓V#l褅DS\qS:reU`GXE[(@[t#o-[tj73{m
.˧ם[NDdzVwoR
8^,5wdVsN^rj^N^,_7mw%ӓ#g&7YW>5=j増UJ+|Z`p)/~im/=7Kx+=ZW=^vnfBԋcM`ߋsN6M+\K^ufaJ%)r)ӰWC74ᐆ4
z:_6&/ٛ}/}ǑQ-{o8 Tpo^wsv0@an^f ^ǐ>(CA2@3@'cI:baecg`a2` 13R|0QEpg8Yc<#ynuj.<tYdK.(Mf

i˥>E.t:@oNS6S5X}K;ⓟAwr%gDSÁ32R{0z!>od%K"*xMKǹqPxޣq$/v1SK~'U%KmAIHmS#D8N68
酪'{帶K6@|fL5okhuSFa<}/3BEF7)/h@=S,Êeu37Ïp2Gpc{nHL#66%VfySg62q3w_3T!WpxD@POmʔL
ZAzrNӿb&H1-k
[*]ȼkK5CfreZCJb*;huXH7-|lk,3Oqdcpn'(Ri͢e$[5zPw"nG&'O uPKb  t
  PK  C:U            ?   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine.class]Of؁&m]12е$%^yp4r)Nmgz׋}JE6i]sLA&u?<oo s*.	'?4=<ߓC;~'# *Q	(f}\R\kROmרBL5hzjj.USzߜ9dګ4n9
]'bWoCPGPҧl@"p]l]0=m^9lv\?:n7@cסA.l=yQ칅ϺqP[߉^/*X`ɮ
,9RmT9z&k.4.~0EAO8j>(l3%Nz*P𡂏
>VpA@/l=ǵW[zɕ+k\R7d`XN>ѦrwVvx.2H3FqFq1N338'i\gF9cQb\g`db1n2
oe!hَS}p#v#Q.cƨm؛i+It<Q-Ӊ%NTMx#f=)U" "m²qD6҇idUWT"?d՟0bQ/ؑÏPzأHϣq/Q;a)6y(`c[D_ԗkg㾡Q/
"Mmh:e捔6GZE<
f**. KOp=0S(H=szC2s]f@y6zkRt
?PKM6eL    PK  C:U            G   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngineProvider.class;o>NFf
MO Z$sR2EIyɕɉ%9E%y9~@k^zf^j@Q~YfJj;;+#نY103 	 `b:H31p PKƹ\      PK  C:U            P   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyGenerationParameters.classQJ@=i\ꮉlU*҅V]
tv&f&BJA\~8@ta¹s><>AMej01Tk1=W%gLyEEy șI8ȮKg:&a*g*_]3/Ԕ4qHM;pH9fAp :<>\4=5ش`mvec1Uۭb-+=j7+PK	  5  PK  C:U            I   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyPairGenerator.classVYsEVH:CNr6'X"$@XimyRO?kr(Go@ѳւl%J}t73=3YlJ&w$ZN])rŴL@	am[VG;n4[ufZ\ɚn[嶳;w[֛[uWkWMBHH8?Նn[
n*wߤ7pmnG-Ac:.'0ijmCwW
r٢٦7[unK#z,޴_ F}3i
"/rZu2VK#kd|Ra%_Hwql%Ħ^##oGǈ2qCtcHj4[JzP3pU^gx!0pÛbp4-S5)D`%P!++.{	6w yaE)k*QfN3PM`ZcUj CkE
\qq
"
 `Zw𡂷0$"(
^$	\RB@
 CTb8ܐ>e| MF7e$4J2yȘAQ&7"*
2LnK2.`YGFYEܦ%\}R
q_DՍeW2;OtH/%Kȗx)iH;I@8EM0ן 'R|wS_pn'[˸ܷ
Q*4kjv^J?oa۸wa̅St.]PgC2@g*p<+cZFE\Lr:JL%=2]|.υzHVzXˎYO^^ɠ)a@~	&I
?rw	y-_*L,mzѿ PK[;  R
  PK  C:U            F   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyParameters.classK@צMj''$褨%HС[<h._UP (k*x{wL1}YyJMU&RK8*T\V2L	i*]BBVm5䕪E~]\Z=[X1J..oQ7q"]<&pcFL6dcmt|4@lۈ;} *ŮO 웬h3@]h

X=	PKP     PK  C:U            Y   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$HarakaSEngineProvider.classS]kA=IӍѭնjl7Hmmlݴ?RG+K83߾
V'75g-T&H	}GPP'%=p 0w{3CuPG#(n?d{q 0~<Mb{]_a`˩k^y_Oݩ@GO%tX_N[U%
D(1'1/ѐD֫glAl4Tgd3]FB	tiiM[5,Y"ni_7ecNc#/u5 $217XXfVs+s[lfT_إC(RgRrS(bS٥.XWv%EK2	!2y@Y}g9R6	uBac^I.С]*
~
PPKJY    PK  C:U            V   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Sha2EngineProvider.classmkPOٲmn:n4sB
+(ml&d
%#|W97s~C<(;N7s?^Ԟ:L#")w
,S厔8!iQ<p{DgJQMPx4Iܮ9hw=_AS6C͋xqtX=<wAĉ_wZ&	
,Nb@c1ϸİQPAQE
M-m+hXz8ObuH%I@'d^YUH;SXm+9]Z=ByAҮdؒv5ækZ628Ke)b7N#mH9ǽOEn>r
ӈ
\_PKNN    PK  C:U            Z   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Shake256EngineProvider.classmkPOٺlnn:wHVYwiziu75I'NP0 ~(ܛw @ o7Z)Q+(=G$ԣؾ
}0?v\g{<x}wQ<Tx(h4ZNuJ`ozgGz5qv=
F
S08K[V)㈏T,Rvěf@c1˘cX(( OM-*6c^F2pP3՘-UQ._]*իB:XFAWZʬΤ6O G]YKh@ʕ[*$ؔV1J	2؟*(/343]wa-&i )I[ѱ]}jEPK)    PK  C:U            C   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters.classw|
$Y`3jTkb*MMDdI$agz	;"`wW|ݝ,C^w޹3svzI ?t3|H}H}H}H}H}0ׇ>as}\0ׇ>as\?1׏~cs\A
bT4*6Ơk
4͠ZZj2 2hAkZk:
ɠ
Š[
͠
à;
ˠ
GDAy%ԭ\jAɔr\ECup53"x[.%#I^9:Vq4(q(>'xAH9UfKg4}@">JfZ斦HڠUieW7cMzTzʁg^S*\fGt5%VZ]*JW%p^%VZJh,YcS<01Yьp[)/+%#蠐;6aڌHm2U֚6	[
-zcdƣuT']OԗMjԆdSefmYmbNK2^f4DcVKSUVU9|ȪJ>Cb
yH2=Tui	c-UeVj\K6Fg.7kYǻ2\ϳE>(J-!wvІR}1deWYU[AʪZK8Ciom(*s@>[ q\[Zle8Ύ--Μ|Cٱ"x:ˣʪ>]XcǲK{RrL="dXzU Wk<
, kƣ8>5:K +XZ {}ȹ~:)8;U dnu',~j~'qV9ϭ?N✳s[qڝ$9;׹qCY{uϯs_y,=?
'LdZ9yZExFh{U}K䑑]Jȫ;UJBmwqA[2,e]<1R̿=ɡ%>KiݞTR#R
	T}UJA?]llqvO '=^`<
<<<< 
	
| ||||̢i64HKgAσ4(0hf ā`#	lۀk:z^>~A!aQ1`'80ʃ & ͤ
WA}AZBϧ?

;-a} |݁ ` @P@O 888( z}#1@?8xD$d Ӏ2t` p&pp6pp.088 \@V@(B\X@__?#
Gbx!}_..!HAy#uabȦeE.^拽S?~QF_QotԭJUCJ7)ݢtJSz{ޯA+}TN)}@CJQǕF+mVWUڨt36))m/+}QJ_U甾%(}MJTwC+}K;JSҏ~V'UҧR[+}F)bIP%kd=&^KݑJM	_"v[i'9fTq8.篚CN>Mߩ޼Es>qTebOwMW%puҽ'ŵ{-NAiS-ߴCCB#w2?`ghX*_(9/nE2?ɏ(:>4*/nnTR@gy'r/N2_%!UIe>;ke~|w7|7b7ؿoP~p7:pro(7&_"1nm2?ȼ7ȼE'y<!Nv~'-278ϕy'O~'O7~'oI^)7ؿ%R'8OuϒiNqsd~g\<S7զOD/u'uMfwW+|SBWA5fט=N3{I3CRERLSaPaR#fzpQfoc>RǚGJ0:<ZjWe1Rc^b:<Nx'Hj';v掣3aj['nNBNbNR^i嚽+5{-hHmDSmLWbfklJbfbfl^mQ
جتٰ-h4bfآF[ll-fjv-Z4;ERbf+m1[X[$4;4;m<^f)1C=4CK=4C+=4C=4C˸=4C=4Ck=4C=4C[=4C=4C=4C۸=4$7fglfjv.?Dl+wfpki^,nnq+ߠ<!=_KPKd
  "  PK  C:U            M   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPrivateKeyParameters.classUiSV=!&4&MyA-K1K!&n&_Yf?vSfQiTp	s[_A
$4ɜ\Т۪ON90ȥl1LFrFQ:nڦ?))6,:6t"n)ܟ
Kz|u2^#faK:uO>*L{/u.šwɴg,%Siv(VY5r˺mnsM
$eIH9^YpQ3oq}ehWs}GmT\Z <ufr~>4SȓOoM|DcZ\{Oꛖ<Fuc6K습vC%2]N^I؎}c36<79O쀦)58 u
A$dϾcx
GݏsUg:mH{VDxgԵ6\|y<;!YT9n⎂$*E~ -
.UAKh.@{
>}}ߴc&1q[S2x(#i(4JaQ[f	x `^@NƗ#2C/]#]7,T7	]b.ump_)-bd5oCW{Ibx5Y&${PeZd{X%F1QXHA#a#P4D}dEyGj]<?"ҕ#H}wt4@/Qz"Rhx/;;zkxZurR#tO*EX PKlb  2  PK  C:U            L   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPublicKeyParameters.classTkSP=-iC@D*DCRRCfZ"!i__wI;ANv{{? D>a>)))vi; l}'H539s<U7
ơC5
UqAYյQH(1'cf)5@~C'b+avRnNҥΆJ)5I^!wE֩uVR]3|Th&HJ3풼cV*eGg^Uj9\v5C-[z,9_\/eWӅ<eVm~KH4/^&k_8.'m[yEݣ[d&,O6ǪU3Jt"F~ۛL!Σ <y1#!L9I?s-861֤й6i/H-J_EWef3/ =Ѫ+)"AmB\Us5Et  "BE(!.E\5B0)`3@kŜq<v(xg4}Sp`(ֆ3jN"C# ]
𓟊GX\$cnpGHcl+װ&#d"œ^#x^!<hT~XK4]^کɻ_&R))!`8vl
KXa!{'7PKc  S  PK  C:U            ?   org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusSigner.classW{WVC.6ݴVvmMNX$>(Zțؒ
]J9UnRGqjR?>ZfvWv4ͼy3ͼ鉧ϭ u Ǻݿ~ol`63e1.+%';swE)Aꣶ3=4] i>jFft	:0C&vejd3J1W3g$w9ZvJI<ksvyb'F)
떥Wsrg6;\H͛v$DFѰH54Th0\0=łY$ncX̙߯a)LFb4ObT"y:t<!3bzЏc4ɔ~T?'b!y`樑XڎAnrEXSMf1ф	K'+k=d:u/Taö=Òol}9%
8=s6.F~#$Cx:[ֻMa`zdW6C|}؀ލ[q:z=
lē{$h#o/8\rT>FG|l*͓	=eN(ӊ(
`ʕc$[ چkZ}EHBɆ&i%]jo"@l
aGh6Y6	7"pm[n*M`kH	
)C`k)C^ҍ7|SgK=_x[
tckb/Re,EnM6_>#L߆Wu=GnF>βNy!;/pn /RrKU\_zbC}G>6l^hrPE+:T13=B5RE? ^aIQ:X6bLqTE$ףI
f1""Ͱ}،fI!T.DSU
Ts*(%7bw֫
UDSx'û^a	c'idQex[vw10|0<!+#
Mog`q>)÷L_ap/'`B|s_R
Q 1@]>O_]<ʳ;69%B M\BUt)ULTR.{i=0YhUpk1<k{p.`ޅ38.tfsgp<7):BxHxѓ=Xo5y8".;5!=V&~5@"X9eLLė"IlᏩ`\rRZ"Lb6eKq*Ek
Tj&kbukH
L/f֭6HmZ ,cr"e~jڴ;z"ծ+Ï"jрutvܨEΎÚq"Sgi'5ZZ{V#?~Ddt$.Nʒ]1.C_s$@دB\;~sPGw*s}2HPͩ}j?HmTPFwT4"OZ#O
ka&nkd(rjrWK#wPix%hiBS|wiem&']/Q%]?~{PKJ    PK  C:U            6   org/bouncycastle/pqc/crypto/sphincsplus/WotsPlus.classUsUn.6*?Đ
?l
)VRJT
mِIHR 33}s|uFg|spQ]_;xٶ@2={w=pK9%AazP
T3囩)"Av2_%H)<>>AoL&36#OG)ZϷh[x3yMíTzTSМ[ܤ3ncTJeJŌ[n1GoZs\v6[wϫdU	;di0.zyVlpJ]fjϸj-(TJKL=Vkl|=TZ)^-狙jTHK88AՇ;UU9QBǦZ`"izϋ]^8])-9b0%NڪAyθufn&e:Rh馀-[
xOF_>	G"N8|z%3Y˦w_i~+o2QW/}Y,²ΰak3F;,hl!.oAf>{pBZhc؁~ob@CN3c8krD>ae8paIi.3|fRnaq\``d	Ji5]u-Os,Z]=&>dx}d{܃{s; o0hw\zNrBqAz򎰵rΘ#(&uߵE.SurF9I?~(
)A8
j
,ޥ%$lC8=GX"68%F8
=w;³~*ݍ:IQiZۡZ4mlh%5w%
[ibvaޢ1ީ
BN8`O,BlB[4fZ{1i»О
(
#ah:fTr"d{9YQv;*&-ߵUcҢ%B]>{Ǥ&n:
ua
^~H*Y[DoGG=hPb "''rBI]N^[F[V,t;fKGIC[Ve7C^o,MͪwSY7$*eC)Zd>+)[B It}hO*<ԓqͱ5ߕyǐsf
땇.I_Ϳښt|]ѫ>EX&q<%1_PKÞ2  
  PK
    D:U            !   org/bouncycastle/pqc/crypto/util/PK  C:U            8   org/bouncycastle/pqc/crypto/util/PrivateKeyFactory.class[	|ߐ#à&t!pI"`Dq%{
>{c=EnRR=<Vmj*U3{&Gb<=hrh7&KJՂFx[ngV<_9B
fkFPcsmdZ%n_[r}E]Kݾ5`ˊ)ТRp:E6row"7Dݻ]ԩAuvu>.n&/$ݩ78Nobc[J߷K0iճq{׮wth-mzP9ܢ=l[]oZz0uqb⁭K[bɶ;&ɭcʖEKpغq62},y+{BzE dv=T6?O㶫ɊXt*}	q{>v=+;I[a3Yr6==z256}gGsɭu聠IsUPrG&cc]!=4	
FL2?z(c}B\
q~U9t?шB}>Tך
c5(l
z4ns5tt%?'-`lp;v8=zL崻I(Ȩp[S1N1#*xUc7OLot<+1 ΞV=l!?uU{ܺKr9yO&J{C]U^*9h3؝A"{~Q;d-hNjV<bf:^HoRsָ̰8j`7x {!.Y^UtcͶ&nLq5eONWްa!27HlV-Yp=6ok$еe
UUU[EGgUEi`sb"
SZѰQttbjiuGspuM	Cs 749j=]!fCu*";XY˺.}NL+vf=:vJ,m*J7ֈ![ڰ8a_?DVf/ekyZyfk3tҼo$o{Hu)$>e:xׯƐgojl-v@:

E?GĐTj.v0LЉanFXv)ie:>޷"0|htǵp9Q~p--)M;$lkT*BFAFq7s"hu°Hs2#{X%Q2JUBzv0vsiz%,mlb#@xةBtDExK6NQ)SWdu;CzojvVX6H1>$[7GL8ƚturnOpqn]hԽ-8p568`e%[6'<haE	fXd
1`lf/vlBM9kuO;n*BmqAA/`&;JnP#1ۑ|0&Ҋe?w'/ex$w!=޸ðbUEP>n#/pPL%U?s4^I6JjIRmΐt$H:[SR$6I%uHrK!SGWO_RnI$햴GRs$+<IK@҅.tK$]*2IKBҕt$]/I7JI͒>' 鋼)srASmwo'j'Df"L%֛O'B۶Ji=$`'r?Y*ȬmVL̎ RXmC==ݱYt.g4xZʖ2xa=VS3X.mYʭZ^06#vqJE׫݁Q3(*M[^˼uו",OTqR	d.I/$}MKg!EN7=4~]fAiu3080SÁ.e@a'd̔e׿erSn'C#hObv|^%+ÜHx6)rjUu,2h:9Ku=nv5യ[[5>ǕcxvOφ'CW^K^Sgfg3yl)nU)PWZJiN+l\|3r%搤_
,{Q:~O:aPhc֖B+ͪB#t
MsIdJ<4-I_Zu04$b%y9g-vxgFdBP`${.:R*#ًe:#cp#.	U4<}󡑜
VYgՙe"6 U6:Q`	jY̠(c.h1ãXw9VߝE(1R9bgvf_|m"6")ԧI^kt}t@`&x	̀/n|5 

M |C@/4Z
X8	PX8Pg$Z
hFŔ|@	`PQ!h2i5Xp4#~B5*i#@}DItDJAB/NF(N9}Wj4[s[jli
@8xI
(80
pFSt[iS ?,f7a*qFŉM6@hb6PX E+v	`)``9$
@FSDF[+5rU5S4 *TitXQVu}OvQ)TbV;ENo̧D` 46 Nl8pp6	h m  7|hP_\~qJ]*Ak7 T>qW*/|Q_ J/ ҃=(~үėU:$>xH_aq#f^oTzDJ=s .V	/A}ߩ{[ P1>&|[  Bn .<= .\x\?*=)SVJϊoJϋW]3*M|^W]*,+**~kG*.WE?VMq)!
%À' <	x
'Ӏ?<xW /#^R)W[k*-~pnO?Jz}_ ҿ*'^S}qJW_qJ So[ 5>0?7ɻ}>p&KK6	zwzܻB>)FHy}ʤ>eZr>prߠFiAO7ƱaRMi4c慕ckwq{i:ӧLާUV&*Wcae^:^o
r\2O9Wi8^H )g*ܬ7s,dTrMm0M/	+crKdɁ>\YBҰ/Rקlꔁ>>>1ХYrurzYN?\UA_Ȝd+}@WR;;Ntae&w<foVNO;ğ3\/ܭ~5{Muu}Nu<2O)+G/˝fSs?lUxnT'冕2Wu5u3)P3(ɍb<F9'VUNݗbb\ĸ
 pn;;KP+^	::O:_~3ԿZʥ7R1afrFi
4Jc12mxϬ#=Ƶ7b^(bA$kbmc;c{Y&F%oR^έal6ck*ej,mŃ206(؁ȍ~z{.-+:h/Ёqԁ{Ĉoms|uYn?z[؜>٫۫Wp]V.ŵ*\kEXʰrqYJQFiUXp+
u<+>)e[9pø?/Q#!⁘Ei'ËY[b!E<٫`Ұµ<ZVzRXم늰dI̓eadyēs
OrtsO` Orz"OV>sg<߉mUwyҫ$%8y&>>M'|LvIHz6cIS?$|B$gq6@0U	UnNDMeF_X`vT0Y|I?j%uUyIHd3q
hyIE9fQ|9@g~ӊJ͛-)#oeFtS{G@FHa\w_PKY%`  <  PK  C:U            <   org/bouncycastle/pqc/crypto/util/PrivateKeyInfoFactory.classZ	|ސK%@ hD
 Ad!	
H'I2d/v6Hljk-n
r-Rm˶~l2^)	w|{ޛ
Ͻ~ Bp%9PW;9|s4ܠ6Yk+Aõy׵_hnp
sl)ijDmpǧEK4ە_	e PMጓڰC
e?&*]&>nFϞ2מ́JGM
<*WVˋKaA
R'|*3	RvcoU9H^F*hSJSF6EIp%
"]v	My@[0CWx;!sҮ!X[eo[rt*X{UK64yU<8]UVəԲ^ײ^f`R ^dذZ״QNzttuF4xqhp^CXnm !F}hiA)$䰦#]FP)tt5n^j<ݲG|^	Q&nNO*0p9rYڼxVC C[~\ݭ-.{.yq(m;$oǎNU;:ҁSmŁpq5oCwUs6\vJ%p6
Rz%+jc \K|a+wHފPGצIhҰЦ֝g4m)Jگgu=fɞ@CiC}"{*ʏUM"/P&ánSd{!g/	:*OGR^)
wRmH^y#4ˏ@Sb7-5[*s
m!A1[k`Gu6mrQ~Ũ	]SF[Yd|	Nm
Ǉ!mҡ]1эU5T՘ïlef'<Di\eE	:Wc{\դv$G)N$;?yI|MfUFH)Q;+]M1r=><"fn}RnG
K^9ձi#FBk5kѳV{XW'YKh^)Yʚip)YB)hyÌʹED:NX,ODщX7Iؼeq4)oڂHH"5IePI{aYm
wEe͖1QW;+⪤`ǜdF5OCC=cXa;"9Jtjw)[ToSU'^R,LG,va4ҍc)gZ0Қu%'Jt(x̟zƫۅw?\㮯V3c}9IL7ȚTU<dIfN!X́z%vb	jz:r1v
O`>K&~N8;ںK`vD+
={6ۭM;1 ><NO/<aZ8\Zploa'.^>~A889p=z8]=np3r86sx?p9|Ç9|G9|'9|ç93>sG/ʡ+jt~
[K#&8-Q2NR$'ѕre"kW8D+M4Ƭ3 =XSfVm*VYtf+R(?.S1Me3oi
^l,L1Q|N,_zcqd7m-n&Q<ڎMPɲ?flL<5|5*R=3-[ue"qINWHvȭ!ɹvO8Ydӛ䐯ϩJ
֏AAK#q$5sxYSM~Ț/,Q9vݞqI[)rK@UB(rVFwi:eh̓X\)˼c/jJ[6)R˘e:,Q꼰:^U`3Ka!e^t2ЎşkLeF֕;)!h#Mkcg])frΐؓ尖{'qXrye߰ 9'̿6'h%^+a%A9k"'hr0r0D;'X@`1`	2Re+	V#"&!%XOPG"H@H`36x;l;
rADIv"Pi.)vvX?Z7W	OP?	~a^xJ$	~cJ-~O7H';\
/4˿a5I7o'[$*Lelf,&"j@`eCleC1˗~C/6_!74;|M,VDf\dl&fB?8.!(&`6e"c׊p.Tz-A!x}Tc!$#YG	c׉a7I780@OωpI"d׋$LEX#&CM`	RR2
ϰruUu.
"f+	$XGPAC#Sd(SDx%)sl1A"<.'=8)8΂"Ȗ"XC`'r#pdtE8MӬ[jPvn^f$gE>A^[Gp+mw|C&G	>FqO"B~#X YYYvP+q:Q9G-«l.A	=7K|j~m2q5&ÒA
6S}2< 
+	u~& 6E>!da>Mr.ɻ7Ix?5,J4@e <ڂ
h[">|K
my}a GTaFXzc{%~VU?qeBiEYEمΨ6{!Ej_腍(aV?{U5Wg?˳IWQ6)[D+ʊHЌ'uQdL/Dgп-?B^R^XܓSsTO,52t/\s0y:*g"a2x8~<)rC6@-\/sF 8 h\/Ǭa
-Qvy  $fQ0Ec߬_1B%*x<A9?ǁy&F#^Kϣ|`KS:q5*ؓpNy3[Ts\'c_D$#DJ_K}7C-bg߈3H0UOW_ҫBv޾uX{y8fn㍼_=gdT2lj
˳]'t1npT}䋽Ah*/k#'z&4yb+]|7⫿d13"8a4U>_=_=_}V^T GtxHODfdzV2guγ1+QR/\Ʉň[az ;pC÷9|3[pyLƂ	0pAf Ru 2'JKMXNL?_Y?_{^FX˲fe,,3rƕ.(-̊
w
ۣ%w {..-OF
v*
&Phȡ<*
QDV>hb}'9x-gw㳟}Y4_(Ț'n9 OEE&jxȎN:>#"5uu9~ ΃#Z/qkNF4uv$~WlZlq0Y#w¬x}{|$&GXoTOE({E=e(&
M<S(PKJw  P4  PK  C:U            9   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$1.classA
0_j5U{Co-!I*j.<7?
e'Rhiq;EE>h%;	rV2Ժ{IȰ8G1bXi[ӜT+`r[-W\b?2"mj,PK/      PK  C:U            E   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$BIKEConverter.classTmOA~("҂7CM!4 !>ԅm	MQ& q3o;?}`/wF<м*}^12X캡X`Br cش)C+q;*bn1ަ(u%B:>rO\.8DAg
,E+ynr䩽dY
e.w0+~!+fwf?n 
<
_KonT-YZT2+70wgHQ?҉ٹjCح4u05&ZMX&L&Mtg"fDy<U<>]_0^ʼTDlMZEMLTk>e;ķ}s,٩!?T1\;UZj6_]-!Jy2xF0&l4ᱍn<ѫ!}TaxfdB"Ʉ^LZǘ<0iX詳*oճ}(ш9}uhn`XтQ}Óg6-ΐ;zSRFo1miJ'
47McUG$ԏ>,A߇Uâ=PK}aPA  *  PK  C:U            E   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$CMCEConverter.classTmO@~
RxA@@(Ǜ@AL.@>Rsמmp?J 2ޑ=ev3;~	`;%`h^_0y;yC+Y7-=a˷
<~@^h
Cבul3ۛ'6/s#+ yJE)^ɵ˶7M'KF-wCq(`}\=n **:YfXr1`뀫AKpeOtƌnQg<{+G-	ڦFE
ME
]EvwU$TtHr罾ޮtY&u]/
"ǜ,gb-j@ɛU!l>0M	]M*
XnިlF]-\'A/qMiWJʅaQ[CEutф':`D=$5 %ŸbRC/&4cT iC_d ڵFg]
N`NQ@F4Y"4Fs8;7TG3>E5<<qs̞bf>ӧ0|Y}V*;!/X:hniU2G!Ê??PKEe8  -  PK  C:U            J   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$DilithiumConverter.classUmO@~zTJAAOP9@('!z'$$O,gמB į'wX%^O&y~	24&7<CӬbkvl.M+W,09.NIghe
ZZHfC7׋[m-Rs7
32kK/snz~U@807i2cVc菶[-}r/*_yFcFpfޱ` d,ga7DeX~ <9Po,:-3I'k!i	/1׍dX2kT;_o	U[ҨTUhSqVEs*:Tt8KE7C"\.%-,+Wg
`& dy'2	IfS,'
Tm2LIh*Rn:JNS5ׅaW9p֟.7QF6_xGw0A)O[LJG#3hС⦎n鸀9KHCRhm)Ft(GRi
=#ŌЋ	)&5\])iØ~Li
[Y𶩫wT!Z[g\YaZ{sy%zkv\}!F4`}BZ1GiAߥ>0h>!*M3J\+x0/GC!f1%a񝴓adWU\Qq	OBW@clKO鲒DF}a2Lp]|PKX'  @  PK  C:U            G   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FalconConverter.classUwE&?:e-AB%i
K(Uh*VWBS	5qnLz9	=r_MMipg͝͝o5~TcX*]^`NL3;#0D(?I
Nھ|ܴܦHzLJVIaKpbX5ĬZ(fA	wk~ȧ lBp
~m^<}l)d,WױV" g֦e8a^ڢ.cW]:aYn>57'8]Qݲta5/dð%8^ajl8٤,{ċSFsT0 fHUӫ3a˻WCQn!;ޔkta˖-uA{b.gGGuν{"'	">КEu+hn11q3g9x#q}8>p&U-NԻOt.ynU\M
<%Ձ!}= ͥc.\yA}k0ORI;7ݞ	_ !a_%wvo
ct cQ'qqfu
1#j6)CÜ	|2(IBU,hHaQ41a
K2D5,k0`jS\ש9kēnz]0RU
Å-PXEQHc4M-<r?t_Q0.&bXq6_aj-ouL4ƃ~#06Fs9
C#9ߘHs\yKF12FiN
e(-xaPK>3    PK  C:U            F   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FrodoConverter.classTNA
ˊ\A@ $H&_2vN	M|(D2YHQ͞3ۜ3?}`әwtfCJC灒rS^1ڐc^-
"C-saCͷ{#*C乭Ǿ(@R,~"]܋,_w
<tmㅙ%^+/BB1:ޡ/̅a
羪qJzZe:(*lTcF/o^Pf*jcj|K^T$j,Z-Yp,ܲnᶅә:ty.x]
I&J&W1	UR-wk	ވy~[7/C>{5'kdd#
l)~jT)IwXhpЄ̆#C4㱃FlŸ!S6zqC&lbF?lAL۸&酳OɅPk/mш:}#<N+GFiߜOMć'O0{MΝ {g˩}ߗ:D40/to 4qs#T`DP?VR6h
PKKc{/  3  PK  C:U            D   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$HQCConverter.classTNA
UKPn$hl$hb?e(nP&>e<SHЮ2=3gfssίXKxC,dh^|O3X96@zFl㻂
zi-=(g:
nR9qtթ+|@^Pݲ*/IQs3.ή}+G vJ{G½6<Kc\T'ww&%yqU wƌ&"S"Q]@`%q(Lm,0i@7=x<fdWw"\ݛ҉@ۘQM{wSWr4KjǷ*%wt؎uj(r#cRO~
˝+Ja@*͚-4YhF[O5ЄgZ0j&46ыHh2iS&0nbMaza*ا.gVu;a(t(D0LG#-Myc.13P#Sg6-ϐ}MckB$ԚFt@s9/Pj}DЏUh3iFgPKF(  !  PK  C:U            F   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$KyberConverter.classUkS@=)
, J<g8~JR%)ɖ3~FgIǻ)1޻'wOm,34'FYcGztzxFˬӱxuHSre	.|4_-狶+gns=4wMv[:[<?u%A+yXE$tn9d	v
~m{J23Q흛:wasȕfBΆ0}Qڱ˫+BH!y>A^F7-z[
c33=!^i<D-8ψ/OgJ0S*T*N8⬊v*:Ut8⼊Dvd1]7EK^~#p]@9J'cNܟ׳RA2e~KIh*Lt
FT]$$nK=YY#ibx,R|R':aRFگlSJOIhӡIGu(qr#ҌJ3#Ҍ0!45tcRi
WpKUܖ掆ܕ枆>Џ)
c+wZ<Y!([CNim-1\襜O3AVb4}DiAOTи6=2MJ\+x<WXcJ8ǓOC}d>PdEm`ߑVqMedBecvDcltsJLN}tHR{h.[PKN    PK  C:U            D   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$LMSConverter.classT]OA=PTKiT>@!7,uwKh'4>MxP8ܙ;w=wo?Nb!}fEcG׌!ޒ-l! p.n->CTjO\-o$[O\P͏V-]^|˥@Fv*q-*̚=d	=$k",/!vkWS7ZwR?MlLV}_sw̝1c	廣uG[.ʐ{f]qZFfy8/$
w="vnaD(UЧྂ
&œsVa!z]N-lV4KۡoN\[T[sW$Z(ݫI
m`T4(j@HCNfBLI3	^DB^ŤU<C\sGn١WIxfH!宗Yҽz>	qWxDСb'Q#%>Ng1ڗ<3u:f1H+:(~Y=DN&^Vv"#
m?@v4M`z1(ٲaB*Fd8PK[d#  *  PK  C:U            M   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$McElieceCCA2Converter.classTmS@~N
A-,&?aҤ&)CgQZ,uH@ٷ۽ 0<CK"%˱eA6]
K\L]^1Z1t?l0HbR-cWu ;PW-WնG/0L݊cT
l꾓RgFP.wkz	`R<y!ʟ:j7x.M7PPUˁVVʫafM1]sul]RX,]i=1PEQ_2x-7KwY|8H-ᦄ	$K%a(oN!U2=d!'tfT{h!qsu'dD.k*eIUr8U6yյxy~9ɍ<ںc;d1ۄ-z<gb^gŔEj֯2LA`- 
HA+Q(hØX+hGBLɸiClR0U`s2x*>fd<@Zf̹ʍC{9[}Nˁ ~X89Q#Z	v_Qd$i_)ɱc<;E#h1O|W_j,QF<AuKuGoRAc+1qOoPKH>    PK  C:U            C   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NHConverter.classSmo0~ܷ,c::1l@Z>
Hkbj'UBBS2eNHܱH(J Q
Ӣ:Jwr?<F kW~ o7Yx	O (l$%
zK&A߭=C.ybQ/ΫcFi/7qY,}NY,tۮ7<ٕ'4=-̖l]@\FI(*Ai{'$@z>^3WQBhjfN3G<Rtǧk@YW
ܷACԾxy/=b_RvvGS3ѧIPs89TTGyw,@,ZB׵lb7L,উ2LTjb	i99h5=VK5}̜#lmbr/A,2UւbN*>=8q(zuRI峔Jf׆8ͨXVE?j5. PKC!  $  PK  C:U            K   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NTRULPrimeConverter.classTmOP~.
"/ 8y@(EX0Y\>rŮa?J 2ۑMV6=󜷞s~^3C
V"J]t̻0]3ti\):Wv,q?1OM}a{."(;~`x$<sg~]bpnnFme"S{""\cUp>y ʇ'ܪw=5ҭOG[w;2Fgⴔ5[^PaX3f<ðywTwFsOy dﮧQ8y}"nzt(Pt)SЭྂ
RBLD>k`D>$TY(fjbl\j
Q9[ԫ	79p\6{H63ִ[veߏf
+%2ߔV0
hѐ
x*wc$I
mx*bJYHx$*1b*FB(h#jmQUkyA1ÐˉذFc{cdhrEO
ĈOR0AF<9sK̟Cߢ92xC,}&Hi)yex,W0}LB!'TF/PK(yI  ]  PK  C:U            E   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NtruConverter.classTmOA~
ǁA@҂7C
MI!"&8zջ-?J 2RTCr;_~ Sd-C,]ch^񤧞1X9V9?ԇC*GMW	2zWNA(AspǮ(*ϗqRE,"È_nuB	eng#*daRyx`w(K3gX(~rs}zf(hIyy^t\ecoʒ<҉ټZCwP:N-Lm,:27i<ڈ(OWn3E)HL]zEULVk1Xm
V;2C#r4'kc\BF+cWrL7mB3,pB7Ր>xIBYhŰ;dD&"ɸ^LǨ<61)z}zEkez	CAl?5'"У
s"<N)	f0}	gxw}S} 菑qm)qaO1na=Gl3iF7PK  *  PK  C:U            G   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$PicnicConverter.classTNA
UKP.
,I#&Dïe`;[w&>Cnh0Mϙ3߹; 5yːJg77U:W*z]dU
Nv]-t0HB$עVp|,`9qx~+*Zza*:.	*s{;*27wyH
' ½L3<+G~=^./Di}$xUo^9ҍ1YQ<u"|g>u/S5ha77jfy:
Xn6c@!N`N%lD@e剠7FUL,{7Y[Mvz;^ؙ˙&5Jd%vk'pDje
;V0hxGІ0aC1gbiw	Ō!̚)#xbbFnymV	AfϕM#Q-a[%,F}ԗISMmgϰx3.!{goz7;FyFt鶙sԃIޣK1a2ގ_PKu`~  <  PK  C:U            G   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$QTeslaConverter.classTmOA~ʫ( E]
hjLJŤXqWKQ& q b8vvvyv
V[lnk!lj=jJUr~{l%UȐz:+J0dO@I%;>mR1A7gG+/_VUW5xŧnJO̊3. Z6|V / bX3[`(uؔ+ʾw :Z>>qJoc
]v~_͵z[܉NJUnե&De$&2o4p̀eກ
2gs@a韖Q-=82 r[L$u5|4`\Պpr1&-}!/}w!z,Уz1iawܔ6qobLbLcނ-̳J%*'+P:pēRw)(tK"I'm4F2gx'i	7[8B!{G:֋ki-N=Lc1=ԏdy=&nt/PKdռJ    PK  C:U            F   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SABERConverter.classTkOA=Cˊ<"-Ky($&OenٝK!Qƙ-n靽;;7 K"豷Q=$h[ohy}SԱX1'8A,θO/ʹmb="}Gkdvӧ+qu&\/oܲcU,3čDv'drvcqYv\f.ϯV2<	 [q]+ұeX^]ç9D2!f2FE-zc7GN	f?R4췌f|#੫D=Tۮ\RС@UЩ@SpKA
(UGvؤ=3"k~970E'2BhdX
Њ~2g2R@C&ƔPS4ZNި5m6R3KJ9IcXPER0F¯EIO" hh#
Qim\NH3S"H>fYR190W1Q̨x,{ C~
Qia^@}IyGED"zG6M3jO;w,:lkl
*V񬊧;zk\~л
$?*w˂z"3ljAKH?PKbzk˻    PK  C:U            E   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SIKEConverter.classTmOA~
ǁA@yiAXʛ&
HMq,uw[B~?e-ٹgnf,^2'obCz`eZe@y^$Jt7Ei	P"#靍SW=a?}%	UNp'R|5*[̨@zYzsSW@xJJ0@$0ޡϰpQr7(Cy,x&Q5TdW`WAaΘQ:u;҅Uő[-!Bej+8A(*f⺬B[\,h2l4b2j=qVDǔüa4ȼTDtMZMFMLծ4k!Xj'ʣs,LَQ8]*voIS-5gWR\΢mB#,B݀>xɠ<Љ!0Ʉ.$L<DR17ы}xnt'tۙZJ{sN
[ ^ӑӳ@RIx;\.]ORF
0}3mΜ!uKo~82rYמ#0vK'KDR/z`C߃Ihś~PKF
3  *  PK  C:U            K   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SNTRUPrimeConverter.classTkOA=eE <ZP`Ѥ44 VLe:;%4G Q;N;3;sO xOg{k++U*>:hri)">Zv\zc;qP`d+ynv#S٭dcVI_fk;Y[+yeP% -qfF+g{JCzvwG/kl䥨]v=­1cIۣq̥LmqZdЕQGROT!Lj6L,wtk@7#l rUq8
!_ǜn׽YO{JůbSEC޺>P'Yn+rENCF\~o^)×z6s.e٩Tnu,4YhEYcOЂz1f>&1чHh3e&1abLctp@OYyHVF.y7~kphov=c4N3<a`YS̟c-N<ǋ͜akByץ#^F馹斩3,]aX%.
b 4	XFWPKu  ]  PK  C:U            H   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSConverter.classT{S@-C
P^AV;2Lp`?P<> mn۽~0W=!Ƿ-ˎp
ry#ZIM%7-i	3eܧXcז/O]ڷ-ڑÐ猬WvѶr
DXl$H9VGKƹ.ph ܾp2-v=*D]Feަ7R(_K{3d|$7-=0{cp!ysT'/ÌnID_b
J: =s!眎}r@UЦ@SЮං;
b
:t*RpGNϵD(ה_FWY	۱.'˙@z5-ŐWf:%ұ5hH/μֶ4KAL
0
h
kh
4D1΍hQ
-Sуq1Ô^$TaB *Pt_󋋪RKkAxQƪ[fa m>4kI#2Ntu'B'>Mc3$1{S<?o%2}Qꎅ{T;H6l?bd4~ /*X_PKJX  C  PK  C:U            L   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSPlusConverter.classTmS@~!*o / )XCm1#C;qS,ILRttrܤuULvnw?&CLNcˉCC{@h25Ea홺ckiN5VJ5u s߫yJlox5>w@?VƱߴ-I-)EbUC2WtJ)v*^]*1(fBx?V5kfX$|2í:x2<\B-nĻy(SU|\moUkL9Z|ֶKr7P
.iդ]WRF)y)`n|ut#\}[n#K@/%,S62Lɉ3oq._xtSw3A.6Wsë*7Bmk9u(izH&ݿ+O
&-  .a %Tp*SBB;% OiAs#1q̋xYHB5kQ;/z%Ywe8}E6ܴdl#1З&8Fk4;WG'~p@ζҚ9R
'x𪆗5,/ǿc@<)$jX;%T?NX7-Nbn!K (eqjPK
p  }  PK  C:U            U   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SubjectPublicKeyInfoConverter.classQOK0}ٺuMMIa
JE0l xj]Rt$xĴ!BK/;f뎠x	O]4F\
7<MaDP) 3gbD1wA[#:pE4xt&4VOU2LV	n#Ŕ&EiOK,m:;9<pz?{~{̟d"z%P=-
l#9HNZ
ÎϢkgk=md!ymkTv@Hljr+k6` 72&Zth)m>PKM54R    PK  C:U            E   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSConverter.classVRV]lDAIҦ%m4%!!i	&	F
`4d`dcg0Lot67=,^}Ͽ <DE=o@,ѿ2)БXxc\T;gk{K)xrF^B\V@i7/CK7F4Pٞ#
hhvQ**ق뼐ƍFFJ:YKWR W-t}Jl;\ߣ+|\i[~7~s*4Kdf^^`ͺVNz]ue `CȔ90V};GM'bd(Y+l*Ͳrf]xvg̜@fn-(ೳkd4>Q+Ya!GNhMra׎a;T%;eCtlw̣!
5
W5|#
iX'kTgnh0?׺~f<قLQ+ANREW[AKVIu}$J\5Ä^ǧUig&ic͜pʴSgџ_~^Tbt7A%B['I#(tigɯ;2g u,iN"E"8@mx1]xd_x4bCF
\AGc4<1cp\8&&u,w:ᅎ~14ò9:Čx#4÷:!ðN?.sblo^S5,ϓTCEMr.-qg~G'7~CmZ4\b?=ݘu\AͻURŏp`*~ϻX;$i
*rUU(q~be4ƴX.6w*<C;!ŜFW4pLD6zvY P&IC1=l ~z:PKP  H
  PK  C:U            G   org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSMTConverter.classVmWG~Q[[lm
X\*Q,,[PVJ6!,$qw?/SG?zzzo 9y}ܷx)ОjT XJ	t$Rvs=W	tgsmo<%ϖBNK5^V'h8e"yZOly=GF+3vEa$%]$ہ]vluޅBFJڅFǾ@ʝM]mM+=Ȓr}Sr)UI[~7~s*463sõeTzyk6n]k}`大eWL9*Y޲/0QzDg#	W֭[nͲrf](? ΍#sGg5rĄ@Ǐn1[xBpF17GiȩR\|D~5ܒrO2t43G\Mjx_9
hPC>>𩆋>p110Ӽ<قLR!n%[ܢu6=TY?aYYQ:I~UQNX
6*L<8.z4}%SLl/oFMms
\<[}7f,?ّ~zIK}aH
LҀa`@
0f@@7nė>8(YyXo@Ø><0p$2p,&t$0Ͱc 3:1ǐqSt|tx:1u[NW'Ocx+c~n z2@Mذ<O;%_.2:]Zv%p7H;4v!N35	X}w
4뿓;YZE<7CU*~Ѽw47_cdVzc[(l	7^E+UUx?Uh--x9+ы*c^#Qf#}lg|pk)6/!
7pnLipz:PKh䇡  y
  PK  C:U            7   org/bouncycastle/pqc/crypto/util/PublicKeyFactory.class\ǟS Qqtnj!!Tk
kdVCkk{޻%Kx~|wr<o^aDT"}I$Y0L2gZPΒhDá[C-ך`TkHw45_~ڙE#/t|jY"IkWd8*v$Bj$Ft|UsN>ЬZGu:GGgڋK87s<Z+Mj]
5G鮬	5()1N4l6]I:WI4$sJ]9,99Q<QvlUYOݚU>2{
ƒ
nP"J@mK|
LҚ6]MtNXyS/בXYشf^2j `m^bǉ'тY3tD5OZ4}gw1_Lo54)uG?2ޯE?MTx__S}jOFQvJƸTbW̕w-r&S\Ev{YZj\5!rP:3F:zqQYT*\}.#c%{0ac%s9}Rvʐv\(jk
u}>EUrO&*8f༆ТRxSYM>[Ee٭}S,Ntj@"pO5̭LY+`#<	z_	5%nE:P{9/112Q5s*a4Ce]yكaviO3;e!́#)f
~ûxj<	Nuueyi?S}i|7.8/uxi=
|5hUݯWT-~뇰,KTaJ:gȓ4;tD0?;}v3G35
o76xoo?@No:8̉D9iNt&:8k	VK<ް:5ܵpќ,psҪɜB2'yg.qpElz}@J&8n
\d7	N{2)	U8^%;FauYmeQ%FQfmZЧ{D1Wo+"J1IxQOLj<;3o%$ʈNdo *SLSd*DT+SL2͓A2-#SLgtLgtLe:GE2+y2/WdRdj'SLL-2&&byKXauegzmةO(Ry[OA[*s攂E[<հ<hJ;YVwxCIhwA6vfь)DMOҏW	dm<
.\ŰV]8dy@wJYI'	dV cqx  L&CCÀccitvp %p(Nf 3Y)@9PT*`pP
 s? @KQX
\t W WWW 7 777 w ww 4xJwh=c#Y+]LYpzp%+A/[i4j|zJ􆕖ћhQ/wwOOπρ//oo ?~
5 	Wo߁ _.0	d рdY@0@0	
	GG 8E/_fѣ,z|ϐ& i,ZEoYhTlBaʀ,t?܃RPb$VJ=&Z%fYhTj5Z` l6-V`v.NJN:6헖M2*C*W}C,sw1ZXSjүpIs6)[<<'moӜo<&}C=n6:Nos<Qe{|~y9iܴ-xV
"_.n6H^8IGvKo'W֋48<9q8G#mlC&#-7_OA#1zp!ϸKZ?7jpeRU/]Y]Ҧʩ]=#Y꩟2Y%-F辅ҪRy].ngp+|,|Vm;e&
W(\|sVcc-=Gze$eu=grh{$F{^4Gc%[.[!Ȼ/FMm1;c
+pw=w]5pMN&	\"p&p5h=./p#p7O΋NM
+pܕW+p^Jm{:"D..*pT	w]]pϘܵw(puw$pc
.frup;MF5	Yw+pg\8F[.pA	ܭ1
&pw"p1Z4-psZNjm&W.p
pM;3IzK\.q\
8㸞[7p|Fr=9q8n!m?⸝wpNr39~α9~ɱ\cs{9~	\PKs^p4  #  PK  C:U            B   org/bouncycastle/pqc/crypto/util/SecretWithEncapsulationImpl.classS]OA=KePQ>"킮| &D5Lva٭SC$0?xgB͞{s;;w X@D&ᖆLv;̖)Cv^-ەUiFhEŻyE.T+"x+ž:,	
%&YtQ/]:
*RvRA=zUÚˤ{q x^5wM.2sIE5.sxUfPM:}ׂ@xfsLi<[oh۬&+vqEi/vѯyY(]a^Ƒ]8TQHsHV5C"u:u1㚎&,5\ɬfAWnHĨ0ań ~L\Fn&.C2GV`@n`*A;
l@C~q	h$] U_+8n!AP{_I^#l;
th5V1['Lcs!fC@=tDEd5u~ų
V߅&V/ZX6Y"\>7.k"2a -nۯBQf|BQxDHQ;<Az3я6~PKk  e  PK  C:U            B   org/bouncycastle/pqc/crypto/util/SubjectPublicKeyInfoFactory.class	`' n0a6	
l@"jLd^[ShZ{RfE]{}iogw31ϛy};og{,eLT1LwU$uCbzR׶t*Xk:iT?]g(3F[08
	/j覠?4uKFtooE:}>Ckc-AψQU؞m.#`X~=1zLT4aD1uX`]-fLԈjշDkmjLQqTê_$SC*n{N]b8A<QZTt*C&uKNwXӝ5ow4{}~wP5McTn)B-uAecnME`SP6&ga[tza Yֵ@Cݚ5öd3tMhj
Ü̈́]X+H8jGP+/
h1M5#>]Q@RNNӷhb=,vmhڨEpGF@΢f^}84\aPZHAXbPhH3VYsR׼p~Z8̚J	'gn
,ovOuSƲ= <56bj3D&8Ue-oMtf෶{6˩le{w1.f25I*[Z'۾D5O*;ښ
̈3̖4Ky
j-_(ՊuP(Mɋ#:'ND/}Wiq]@-+tAͶQpp/;*(A+/.ڬ/B|oo2pVr.ML^_TJ[!4f{DCF@*ϱr>ǃICYlo7~sRd;1sp9AU[vt>6[ɹOU6u7z[m-[5g V$ -
"KrQ9<32ڞJ5&f7V=/H35fD%V;.S`NO{sTr,Xαc%*k8rF89sx88986p4spcGc3[8rpʱ69`l˞8Y#hH,U<5)}Csr4ɉK2$ND"-}sKefVNh
]rǔ.*OMdsv)+7І9yɺ|-ssytfg*0|MW9h9U+`L\Lc%ZWŌDfeQYrb"vLS
!lTAgtlhiWa[E*[nס<;g'aǃ.[pE:QSݻHgZngv"y8
E='ȹ]mN;<˙IqnWYSܮ2ܮӪH<lEkpnR׀׀B;B~wNkwp+<¨
%$
I5I? 1M|H.'d1	tD$\Brɕ$I\ER2U2%x52H8^CZwuTz=HH&ɛIBV2NxKnz<J$#y?Hd\89J|P'd1.c6>$c)>,|1OʸOɨ2j>*2	Is):Ai2>Sa|ee؍/|K$_&~-oKX[	A\B!fJ/BXd]&!?K؃?Ip7~!._%>M~g$pn$p#CD¿$a[½ɳ$.p_#	G(pJT:x	$I6M)*b%<JizvHx9 I$$$HfO2d.<H.$bKH\**%!og#ΰR	$6CɷH~)q	$?d(uRވ
nz{21oo;$怉tI]XҠQuØ^4ł%Oᡶ؁}Jqs0Ζ>*Ra@8̞Um	8GPEqViO7Zas_[5Qun!W
q{*"b&Vl+>=*ޖ4̗
gXV'؝6`'02! .dOݫK旜<[uGpRjc~)y_rkU_==1K\J`Պ`马)gFqHx>CM!aWxwc,d]%`٤ &3\Y]*GR]T}/qV1L>D]G!MQ,I[l
L@KR		39:eؚzl(pБ6&lA+	OLӕ܁rSY['ήHosoYɗTǬЏQ$H6%@Џ[qҀ7c!TLymZ!VCX`B8l	hLM	;eqv͓be^EW/_v?FrD9F8g)g&ߔ_^vW<MnwRa~ؾ}PK@b
  f%  PK  C:U            ,   org/bouncycastle/pqc/crypto/util/Utils.classxEgF%rM!8Ee;v%!T$QdV"Xr {pf	zww#ܸ\7씝w+st12a<l6F{azo3I5Wr1gf8m&v,k)k[nyuYumuT(TCFOϩ,vHKKT+<PYRvvAuRe
kA50i&
dsXTkXQeRVxMYHK=rutmp1sUVpEnI~akڎ6je#4j&Q%kv84G#pƢhG3uAi0i|ZdfFrʷj*YHC(nmтfz3
WKU 4J0Eu6D#HH3~{0VUшZߪ5̫qԉjVwaC2uK)6*![EYTR}W$q5F[DZS4M͜
eM}%mFMhc$NerP3E$]3״/oD_VӺ1/2QF')^ʩ>ʷB{+\<O%hjjkD[+CzqkBCX_ECYI#mhk
BWe[zM$H2&ڣ-
I5QތّCE!,.k7\4't7WƫTV2R=$ϐ\Ve#oeM)X)RBJ6Z+9\FΧ@%U3&T1
1ʊ:d[CUgd[[YEIeUEr<Ӗ2&3mIe+**+R
u\ɎU%@UJLӘӲ&4I4pvZƔʚ2ےh71KcoAĺr̓-^ZRVY^Rl>PVRUQYJO/Q*F$T)f[<%WDeV6vp5ƫ+o|l^ѿ%!'b(Ϫ]0"yTzwbMI|u?{Nj4${K4/]ȴEZhAwohK
'7\j;}>/VƷ/tt=:	 A?$kTޑQC%´sI*1	:pn
2OA-¿(
2U*c)tU&}[e៿ۜ>&֪e+6-\L-5*mO)c/E-Ѱ_;kv>J6eVchK8눫Uz	=7?+8h<a8Z=|P%&wۂE[W/n˔@CWW~%c01;ɎptuЧ)[0ʅGⱐV.HV	wЇw󊸁Qc*AeAAM\07rˍk]ڸ~;k[YNT.Fx^9e8TJe8L/(&9dǍj*0^SG
+o(qy"cO<PwTaz6MY`D7+@)V֚d1,2luMd\iFn71ոJޞD<hYҺظ5Z?rl1	zH5z>6f{層f.^}@s<ҥnfnfQ7[fk,fWn77f׺unvf7Mnvu-n&lf&7fnvmqn7`aMp:,ɑtnɣjT$,2iN0Tfnet03&)Xs\.IJ{,8ڳiN3vI~OwG9ڣiO5Os
<fBǏ=`ą0iONWe/#'$DŦQ~-s{*!&#ƻvۚA(2
ӔAtc=!X;MҿO7Qt
!GKStӳt[nEXP>z!{oU?+]Jom,sem%K-i~ֱOu87٭;m[w{_,pugY֝UܴE7.W^o/[wtǟ7t+{Tg+֕neZ?lnt[sḿ֜eD,޺5gA[neB<>6ocS?0f;<`' :++W|;%@ (@Pfs@
`X V{ u~@X
zhZ6` l NNNN. ...... ^^ > >>>>>	 > m`"a{L|
 I>0}&aL3	cY,Xc,1bLɘ\1`6Ml4i
f̦MS1baaaaA?FЏcA?:XN,A'KЉ% 7
`| 7
`| 7
`|XXXRy)ƼcĘ1AycĘ1A9!
|l +|^c3x+Ƨǖ*xJ_|}l1.spgy˽}/G GGG ' ''' g ggg  \	n$
ln  ww   OO / /// o ooo yy }|//O Oz 9___
||||O/o^> C"܀^>L > ˇ< ( 
|( A``Cap`0h`0ll& I^>Z)T`J PcD(ʁ
`:P	T3|^Dh`-h@H z` `p pp0pp(pp8!1	)ٜY\Kbl\
 Yx<Wybl^$ebl>Nb>9rkE铍cPlHqVngt)H҇JYVd[wVeo[YVzδ4aVz^i_YV:J+tNUV0A9J/cś]naa/c0.^U)hC\o_;Z+YgM 6APFvJר-3WmvM,mrMEL^r.oܪcUGyqwk[Fwy9"S)31
h^R\bn%!89Jlۧ*XFGolz4*Pp2u0
qk,it<&'Ve76s
#׌Kq3gϣ`dFYZÒ*dovxfFQf8ZDPT8p lY9etgJX^0yͮN5@*Ӗۮ6mnv
lz;(72PCYVC;M5.ŕ{4(jKdulV;]]EM\dZMXASeF
Z3GC4esPe7 Ђ,N).fGocuwf-\[ki-CN\6PnYhnn6Tws
tD{nh _t+rD{tF)72`Gwj6FtpDۉtTnCۙ|--_
Wnq^tvD[W9r`v9_t+pD+VF(/PG:06RUN7Vp 6s?ѦhL
Pn{N7#^|oW
Sn o"Pnt4ōeb)n1]፮]_ڍmLq!ƙ:ClgoFsEvn˲sn;7
s>;k۹vnb\˰sv.ع;WhڹavN9ʉ?ls;
v;\U.o,>)-EVM*E&7JNhmR5y	MnCwJ^wH4[aliu0MS4i2A
d5LaܟdOJ&NOK&"ǥ[OHK5YG5dkro
}(k5j+)Vi)b^4{j[)5k_R jDRK4I+Mƨ%<Z=%lhtj&(Y$RO8NxM~&ŉ\4h)Rɏ8ZHq&)	B@
fk8j&fkDj&Ofkj&fk(j&fkXj&OfkdjQ34giW)8O?Iq&lM&Ź]BR՚<9T&ϣ5y&UɳjMKUk|Z<)^ M(M$Ł|Y̧T\&<+!cRG]LzDܝ̖A)5QM/EDIѤGXhP2RpMF)&#\M\k(&(R&š|]4kM)+RW8DB
K5y\GPpML5yWrHq&ߕbM'%|_K5hm).Trk
K)&/+)"n[ZM+
M%2M#rM'J%]kkr2
\+)LRܤ%RܬɥRtZRAɛ_t]zX-ųK&x^Iy&#M>O4(cPKr*  C  PK
    D:U            !   org/bouncycastle/pqc/crypto/xmss/PK  C:U            *   org/bouncycastle/pqc/crypto/xmss/BDS.classY	|ב>6d0G#81#?Km,9:m$m3=Bz	u	I14&IӦMnvwnhwS
agIXt{o̼7f=ɯ} ,a;,
;j>;|D\-p;[saa>jWܳu9O[=]ć-TFcc}#^º@ DE۵`UPpmG4XtiY0P[HUX@jPV5nTߺ]7J-aTK-m.v}ƍaMM{jBM>Z8V`""0sN٩	.y[mA(F֪ݺz['eeҠuEb;z5vDK
h!6'B>M/\ $ccE6ai-66HniԨyZ]M
aP[բZu;:Ca$SAo(Gt0~}O%-Sa:X't?($#젲P,Zj-k	ł>Z`rW}dfrdDY'4,aB$6aXPE[U{:9\	`glH[&'&XWO2A5iEW]%gX<ԅbcӴL"LcM֦E)ZASSJ!?MZƤ9;*a8E$}:>Ewk>LfBaVL7r(6ww:ARHtiQW&Uln`n:5dZ:dPM۪9^5
hj$8a$>ig`[
wwFC]H5E?Be6l:pè̗V6*2k9pjTn̉?NrTj%RkU2U9gͻ>Q+IjIR[,>zDܾ1o 2d~F^FL'uSӨX:C<qX0SU	A_ =d66=Dla#OHV{{LDTd
ՊMnLѫWhSF/{3\#h)~G Ōǎ_=|	,u~mO	3)-b~IiOI7BP%aCa`ߦ{t8Ǣ(52˰Vɰ^ʰAF6ʰI2lvdC2la;d˰K2d!(CHN!,CD1ȰW.eG^OiQ_v>2w"6dti-xXX~&`]ԏx,Qc[3=[r94_ٴOHQJ_2l^Vf.Mdg:>贮?&u|"D/L/?Lib-R6aAIeyǦqˌG:VBZ@++}5|mVB$.Y,~X$.KNZՎ3?hUTfq~IvGܱ05Ro+:xL+Z\M&dW_lVg`#d$;&Kܓe*Ve*V7gY <VMY*]on[ns٪~$[;t4zkZK$ӝY,R:G\>eH,S=Z>qŇb.Wܞ
ڑ|Y<`;4O1<
(	f2|^Um>Qf3*0T3&1,BJHY2|a)+=Zc(Q6ǳ
|T`&P63|a?u#&ÏY'
L*~_(?_+P%G
C%[?)9g>pa1_xM/2<@
Q?
aRßm>
"(p7b>`Ab2d;C>Aa(tQaDkЋuc<8XoxO$cxFJ9 δ8NcPͰayk)uðafı%ef2baCq<axSa	j5kpeOi=ͲY˞nfXͰb1`
2fXP@
C7-1x8y\a0`sxV/8Uxc(/q*CU<s1,`a}ǅehd F9{BW"$~TK̑	W(n溑sa G&Ga"  B@C.1}v
zWN5>TӇjUr=4_Opv"}J?igoR
 Q;]a|>/N{ݓp{JnsK}Z)O:BTNc
U.?!J6jkGumNk3K߳NğNKTm2g-ey5vc]чlNS2>e3z
&OY;@ <T׏A8ԏ>TOqvbhXVRi-piOye{/:&mv.mcF=H_9x,eGJ7
Qt|X *ck[Hl$BnlqTis&ۈ"U 꼂0O4٪{yDz&{{5{FZ?*"wLkt^	xnvuGHmsU'9/@uuÑȍ2#k.a<龬3]
J42\_QDz=Hd]t*g
*Xฤ~<sPe>*]IxWޕ2{\Bk<;]	ç51'ç*i>;VbA+%jn
ZBЦVуV%h'[g[F1'cүXEo7D*߉ 4+*ɣ=&n<~\.JUxޏ᳃pz*O!8Ccq|zq|tNJpX|yN,_^Zq{hHi]tsxOjgy2qc:ʟJ9Iw V6vxH.weGy|8_'~5_7\K:
\8~N_cy8~d[Dž{Np#WnW&ߙ/b[]	g;>ub ~$$p7)t$;M"r;ExAx:\bfr9.KI8!g
ZuW\岻'vpXTjfDzRsb̫ͅBcwmoދ;:UT]Eom2E/0|`_uŔHDjtDH@x=TBP	C=bm&xFEIj'uʝ"$>"#)j􄵎6t^x<]L2՚T]Q\j<WFZE/,FqKU[*Rlܕ$}(Ŗq%QHTbl_Y__Yw.ӄ_؝vCunJB)-N{ӆynJ8YAB	n@
AjIaTk(k't:eK씓}=0.{j.0sfl`}fL2:trƔ^":Lq2\0<X/B	z}^|G[M9_nc骣oEt	&OL_"cA؊o
w{Y𱃗~Gs`&иG'Ƈ`u=`+%mv"(2̤<L8O֌9LQ&|	BAAhI
7A
ݶ{OK	+OcD"P28}t	n?fn;fL_?
o&	7TT%J5(.dxVw\$wM%܌;_5KIWԏ9f1x&P0Z-<an;
? E;.zկ'_LHGK!m*cyWZ0#$ypNx0vQPH:1"D6%U?ߖpn7MghE&!)PK:sCm  /  PK  C:U            2   org/bouncycastle/pqc/crypto/xmss/BDSStateMap.classW	wWFkصJAY,(qk@DFSKta,IdɕF]RZZv(CB#u))psop @ͽO1'Jil}ߙW_pvDxFMSp I,.zFgfLV!gHp'~A7Td>n-
f:)-iL녴5bsFŦML()Cx0S3:/׆>$	^Vќaاm==sa=2YvD?Vfe&tfN̐a$
d8?R4D7yӭlNs
GXHs,/!Pf
dgg%l?.X5wFrZϤz>?2mUh2RZU HL'A}nUb:o,Cl%%rFDw_6
O}ńFxD8[|>LȮP-h9L<%srnoVE;aj9Аhm
>
!1Jݷ*TPtjRNŚe3)	j[jǉjr,zʤ0--nU.1<M25#&Qj*W2A<'̔1cdw:b񯿝-k
4{+ثVO{ܫ

:t+x
(8
ޯkzJ_.)Qlw0FCpюMl#u"A[5::򆼑
Fce;l<7"-אOrf'ҸXo[6@x6NC:Z#,୥inbK>ii
Fف;Mp
	?ĥ k&o_6CC'T
-xXC3$
[f
8521laM|pix
;ְ.vcJC	
[e5|3(ikCZC ̜pY
i؆Y,XQ`$`(>1<bS<÷fx_c1×8E<Y>,bdxƋa|Yo0|ǋS<+%l^ǳgq~Q{Lȉ/QTkTkd '*HqEL{?'9I'^tZCkxhrbhU,?R63pWpqz值W%,$\G)D\5Lv*^w
~;1PX
B?YA~1¨m4gF"^^T
ڟmN+ ߥ=Vmg}NWfۉu>-dǩl4N5sY^WU+Gvr
x^=aL}.u"^*W1OY?,g7|'/ \xW"~rvErB>4˸wۊJlkiE4nӮh!sym	{+g(j[fe	!V5)MZ^׫{UII[C7(ZDv
!Q|IxMgbװZ.+6+M0UQ=e֍"]Wknfֲ߰dW),6hl9F
Z`
wWHⶑEe(?.w߻T"Cu&y砮y$;9,;I{%y:ee82ޤ>c]f~';SJ.)%'QAChxCPK/hR  @  PK  C:U            2   org/bouncycastle/pqc/crypto/xmss/BDSTreeHash.classX{WM]ftEhln6BK*KDGd;d&lGH)U`AQJ&wժHxFwɗ{={y/ ?oƒfl:	uge^S("??j A"}}1mPlF9Yh`}XVDzʠ惤e&Ub-+;R#eu=Mѵyu\flL$2iJh!L>fxҒ 8j$AU9(!@ӻԩFbb[TLQc'9	hSw3E(ws%=K4ܳcglHϚ15qAt5D:a&uXR}<Xȼx͌RU"Z*S3SJ+xd=eŲiވ<WӖ2$\X^7긢,RV$gu}()X\1vHY[VS:_)P'-fSX*kħij$}$gV*29aM1'2VWg^~Ni5#aUU
W%_G	WQ(ꬪYn	}5+mH(*%YKlϴzjЂ.[	KSYvw6ӪJݘNyd#:b)tT#M*6l:AF
iV'2"-)o}VeYQ`UZj)p
*P`8E$p@@*["-VV	.p@@@z
xK/9xuw!P7fe4c[IB3SBO[]{Gw_Mn5^TYő5y\JݭoZwU[uSP47ޘbfݑ,_O\Q[^~t'Om_jG
%kE\OMx'v,.-8$c)<2V1,ca2d4AxycXE2qX ]2>Ȱ
)7"-c+ȸaC22a0K&'혔|Hf|؇G`xcc_c/>|Ə{Y/1|᤟>U?aGeça|c8
(q0O0|aGh58p[c8@"7#>?4|;
S|8/aZQ@?+,jjf@WLS!lS;˃b.q7N@%1QzиS5.rhCя,Fo i7N,C)Ut+<,M\8|q΄=WE1E¤Afwq߻Dc9{m
3YćgˠC;flbs!	/a;\r\yy3s6~:ўYEW90/9Aaw=`Ee2!iOAI<_=NSpƏڞWG6~B͐ՠ/(.,ÎG(ggfV-ZOn}
pG%7sMN6+:)?L~Hw'N8,'S9Ұs2NaJ (e9綄8o
,HrF^+rӒ6:x?!5qJDru!wMmy:_AC_y=qƭ..09hH;E.+/|6,a9,{Y]'f|zO
v,m),3tLRaMw9o"{M̝^s\JCFCUj
FtG7PK
z    PK  C:U            7   org/bouncycastle/pqc/crypto/xmss/DefaultXMSSMTOid.class[W1!sWʢtQCeTЪH+%5TLL&vQvQ<Oo}Q}zgL 'm͇3wgy37O h8C? paQ021e88q'N1L0<$iI3g2<pNB ;>	l,e9&!4VZHO
.
V&GKOoLr%^쏋"iִFAktmѵGhzHGR+Dս4IpM/SUykukukukK޷oWO	|<߀n,+Fѣ=egFfATcX/m8B)=U=nt|Fl:kMc	_6RbN?trf&}`ZFNt)Ǵe	ZKhҴeۗbƚELxY}'{Υv!ZKy2+x*uJ>?e,)M=.졁lA֖:gdsF8zI%2+h]e\qQƜge<'y/%VFĦEX}O>zLnRG'kq$J绢J_z[MI8Hԟt?d}T7FOt5N'7pK!_V(xQp	*XwsC^AgPP0
*+^sa,0x#bx
0LƲ+Xx
ne\s8^MIGO]Fy
KC
panb5$qA|+:]@\[b(ycnƏp?xk%dMX?f;4W6 %|'b R3®+:Hul`in3.yz򢻼+O<NR(=U\%qm?xSIG7ny2CѢC9x`ˢ/b|ڣλk.C	B,9ZaJ.B*+7X$!)] 2o#0V?e(y#T,P$P&ؠ6h;HwGhb[Am^]wPzet߅C 	AJ=&xOP6;I2DM*x7	>t?D{>Xg,jPKC  
  PK  C:U            5   org/bouncycastle/pqc/crypto/xmss/DefaultXMSSOid.classTkWUݗM`IjZXKDyBP"`)$a`I|v~B+k\ɓd|4=wsL_#8+W8F8F9rʑxukopq-$8JgxM0قm97'*ʝTMMt#h*:W-ʃ\n]:P*UJյr.PK5v-[ql&NնiFd:{4B4<s<qM(QW
6AYC}
6f_nA9l9Ūeer3Uϲ%׶4*亅u}vݣ*%!W#[Fަ穻增wN`T<K
z|R\qg}j{bB~o<,
poY*d:o	Od[.ᦄI	)	J%aZZfڅ	ٺvZ{gIv89td_<&BMzۏ^nA/DqHvukE04^1ed\ưYdE2ƚ	˸
ݔ12>(2ȉ%§1c'۸B-l_p_Ű(E%w>ghJgI*
epE|{U\-!SKڅhΰ<CS?@'i:K5c~GUPG䵑ѱx8<2 bb&umEs,Nq2
#(h#k$0e︄TdVFk3~w'>q	5}G;=":\%(ʒ&ϑ	3=vUl:QcmlHYP!|ӔT)nhs5D7ĕƇ;|+*
qtS<*mtou%M>u0oP'k!PKTA}    PK  C:U            1   org/bouncycastle/pqc/crypto/xmss/DigestUtil.classV[Sg~]`MCCS@
DKXMJ -`z0˲겋Iz^2!i:2Ӵ7ot~ `t/=?v pu#N8)`T@Tu1P8mPBJT]9_Y6XZ]-{jYzM!wZUN]LJTV,!\RˊIHJ|.ԩΫ?ګMIv1~VzڜmwiKz*E5I/GӚ%mVWZ~&+UK5tF"[]US2uU+)5cnZtE27JU*~_f^Z,9F5Rpzrhu,D%SE٘SKDŪ*KtV4z/ȵUˈp~#c mv7}t+Qig-#.-gltN׭Z'2Z;[kluL!Hm.\?Suy|y}%c!a<8t݈$
+sݓy;@8ޙw79/bqrpoCR	IpVTK}$Ï9\cuev3Sa2+pX65\]/!bXW&{.1a>=i".cAg(gp^>װĨeqK"S|ky/>C=X0#2·Y&K)Fb0~|o|WQwHޒm H)nЗ
;_ocNj$&QctrtE+#46?ckB{=T^IKr$:HDkcq;Z3Ub+u{PR20<q*=P9.:F)U)x!`ިr+jOa'֠	|ь:E1&"!"EKxvwN~!{~n`oM Gx72Eܴ}Coq:'W'\1q8NPK:  	  PK  C:U            8   org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$1.classA
0_j5U{D]/ĤGWs<y 0dyH[chWp7:%)-ګwmpq!;Ik.K^fƑp&[:Ԯd~c$|RHSX<PKӛ      PK  C:U            >   org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$Builder.classTOP=mte'/tӵ3| $Q4Bci_&.MTMu [r߻={z_
BaZAJݠ(<!eq('~ 	0Qx><l/:9{)]W"!^~ąϲJjMVfKeUDKotS{Yg]{׏y*鄾8&?qbl.L.$
k
ʄ,ڗ1vn <u5jO?M[nes{tٕ͖o:**0gjw%W၎*{cNf~gkmtPD;WJ!.'J9Xk*a徢B3/EjRЬ5En\LO	E1&,sz?P}g)O8|)8cc}cwSl1
7<Ec/jSX'0-$cY0aaӸ9.PKpH  e  PK  C:U            6   org/bouncycastle/pqc/crypto/xmss/HashTreeAddress.classSmOP~. u8U
%f6qlS6،^O%#}؏Zvn5Ɇ~yyzsϹ'23Dsy!T~PR{CI4 sR
Iuò0M49<k3^incEojkvM#-[kwӎ?c↊eac\ItlQ,gX۽?ϒKNK'F{)UܮѥNa4iHpMBJ¬rm8WӞ=ڣ+_Y20!㦀y71Iܕ= +`E$$*`-;XϦyMOsn|hu˺~eH-T'JbƸE<~/ -&?-|hZb"de%úCA؍obHBJXBѮj*u\yׁ<I|6
Be.ȰSA8MӾf&]&q PK3W?    PK  C:U            9   org/bouncycastle/pqc/crypto/xmss/KeyedHashFunctions.classR]SF=kɖ1uȇ~A>[!(hN0LJJ"ާ<屯LB!Sf-PH嫻g9] 簐p%y_0H}ڊVtDZ-JVZƠ݌|Opv2A_,JI gm!i($8D ugNLj}wŧ1\K9gƷ6ֹ=lfh{.ioxrBGvoq-mp׌fKJͤ"]T`ᷚ9>.Cin.zD>B?{(:oqs֪DCUwNt魐m͹m	%65{3LAskkG:vt[  PpR)90'Z׾&MŇH¸
qGPqOŧH3*>ƹ>h8/J BSm|G"\GtUϤFѼi:22%z' Sѳ`F+\qWK1ۂXzM\)0\{CfMAkt߯䞠/ŧ~Lɕ,em˲T-*R#9+TD%6j2nt1.m	߻ͩ|IJ?jlVbҎz,&/g-̼,$Rys=g]j8vbzm|#]3NbA۵6Lz=җ)bm'PKq#0    PK  C:U            5   org/bouncycastle/pqc/crypto/xmss/LTreeAddress$1.classA
0_jU{n%^@ąi(j.<7y`@ѨFZʆt;_ݬ`HW-,wGO*OlAdH2&㳭No%6b?d)y"HPK      PK  C:U            ;   org/bouncycastle/pqc/crypto/xmss/LTreeAddress$Builder.classT]OP~QV _өmL=gm?yJ?e|O׍`g/y=~	`
0HZKmsb(ݞ׍gPðnYYИp8tQpq"1lA<}bwhͣi'GoCsįS?)^y~v{RVY%{#ZÏܨLF*cAFIee/V
dx3щRε/UOM=(*f5KT,
$L9
UU0u<Phu_ANN;tՖ`w
CF*5"
r"Sb̓~0)>#bH0_	c|x$,FB_&zl	槄p%O+cB(VBP$*R~`x8ЈN)z/	`	V0a}c7@r*T؈aj5X4Ua*ak PKhFf	    PK  C:U            3   org/bouncycastle/pqc/crypto/xmss/LTreeAddress.classS[OAe`ARݥڐؤ&$4DӺ]ܝ&?
?xf[n/߹|9sf?԰/B Gf!	~!cJrT"ؼl{ײ2PF$N#gqӳSYmt<1<t~3{rO>N~
Cf9}*xzq-;`ۃj,K厫14=nѣƜ3m3	s	nIX`xYhMth&{ӈǓSVj2fqGۈɘA\5S/AwH@^z@`Ej+x,`#U<wyىoer㇆ۥXnz4\#s4RHIQKȊvϊ# |NJQ쪪aKQ$feat⡮x[WPkQ+k5e<P!@>y@R(tGzD+b!;O3U%Q~&M"PK(./  
  PK  C:U            7   org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$1.classA
0_*=D]Hz4
%&5?Ā'pfx`	CʻFZeU`עt7z%)-]pq!鸓Ԭk"2`!|kqtAUo$Ҕ-0F4n
k$KPKY      PK  C:U            =   org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$Builder.classTMo@}'u44@ ۔:A@JT	HERUpt+8TB:
K!yL f4}[z0>Cy|+bٶyjJo<dPmgaH<r=ףՒkq7͛A82oƎyxdvx|w/g휊&u$h	6/Ty5m硟O"wnz"un
K2*2eTe0SIbU:;ϭg/bnz_j4d`bs}_
UH(Xuj;
+}=-!=j78w8D[B{iU^$Г5C:#C
CM3į5HD/
V	ZJMSBB"Q;S(T	`%6"p/	,g)	1L͔b:vzآiq
[^nPKuX    PK  C:U            5   org/bouncycastle/pqc/crypto/xmss/OTSHashAddress.classS]OA=C?,WvvX
1
M0
Ovn;MA ζh܏3g;3?~~mX._gU)W?Gss&ƛ=ٲm'Ri-(vrf3be^Xa{Xī(ogS~myM?hogl+8`v;}م攊PVS0lUidu1,]8_qg7^T	KHXpa'o?rznOA>a
ֿ|驅&UT # %QB`V8n3' +`C&e"' /@6e}Ek~ӡOR[?:]9AcD{ƑA	H)
ҢIӢȦ"$O((!xg00 >_!x3t)W1y]]xE]]!O</x _< !DV&ňVłC:Mg*
zgxF*MBe",n*qPK'?.    PK  C:U            /   org/bouncycastle/pqc/crypto/xmss/WOTSPlus.classX{|&;3LB^\HTnECLkdf7BB>@+VSkQj}X
E־}$5hB{s|s< ,N1Gƅ2*=2IFkd$dHHji*/ 6!M
b9+dE75,4w6v:ԥ	dg.'2J~%ޞx,ٴ.u\>a{"A=Iwo60aC:8xD*I3U[.աeA-Һq>ܣ4+.gh4gh*\eAe̴jOFfZola=PNk<7ߚgͺGKk6`Xo\	P;ۛϕ@Q*1k_=fui]/VczPSN֓l=wm"qxvs:}SiV"udT
F )Л&$2-OF۪&d3cZ=I¡>}Ј(5EJ1n
n`u6X2W4KuAaM5zwFAcX,Dk{:
w9>U%pm &R1"64
CHɘf@2ez@,ѯ%DcX416ұV[p1z־jdZ)zJRR['"BK)Zv"5gR)g7y]@򭜫Sl|*6_ymlBX8Ğ.58=6-nZAC[8تSC:F*(9}EiQШ̔&.仠'f(>|gSzے4MSߒϫFlXted-m^
9(W.LFEF6RVb3JW궒iRoEp:JEKˠiUZLgNSTy<`H8Cl	opN	$\,KBITeK\	WH(J	op8$rg#kN׸DjUdLx+6[<Uj,`63oSsz~u歝EFsi	㢠eZ{Vϳj7<N^|y'7.-Mg"=9%,	b[!xən^SZ5<eQTLz	ϴ]uҶ	oÒ	2Otn)n
B!:{u6|GE3
>gN<a0,b8a9J^PlAA`-
b4f)hA ޤ4WЊ(x3> ,w+8(8Vƽ
.Gx`WUa;éf<`P0|gb?ãe[>\C_|чYӂo2|g>܄a1.<p!00p>f>Ë?`Ï~SeA`x)}
?aė.|enCm,.OEt&zzyBd
*{os6NMtnp "j|P|rV7*; Իn]CϢr7nWOCJ('Ke|#l|R>#Vңd.3C8A~+$*іglO{qLc/C
y6NϟnXeN[JVXV8>c9ǙژXqecKk5]Ep*Zb4j+pq[xX-[J{P_-F"ArOTŝP]V	=uXo	O6Uۗ{bؽaG[rGNu޿r`qU?[Ǩ{'h0cW_ɂ<"Tª\A!أU!:n{Z	L)w	Qd	Y{2|9%	Oa3xTCYyBDzJYt>WE	gB%("^xMcء1iaWe%'T=o],MQs^ &g@<÷O@.CTl3ڔMj]mb6={՝j[/Psw^"jg'ŖMw56q hm;<k.GۿRib1Jw&MiVnGqYeuE|Oc2U}~[@pǺ>U6K~:!j=B>YU5OLcv	&?&"*<*̄;fk_Zs#݇T-b"Oc"6Fղ*F#*݃R=Ti{ ^~: h{*dKzDf?YqM1T
{fMmaרYΏPE~UʙM@ˬ{P5˾ۛ0EY;YՋ%<@_L6;n}^{vPX:KEmx/Br-mdjBF=;*Fq3B#´TG%gwg~ʴHPivt59	*Pa(d1D)dݣИ|6qMsBv.ZlR*:ZNUA]B=mGPKa    PK  C:U            2   org/bouncycastle/pqc/crypto/xmss/WOTSPlusOid.classUWf~HBu\TƤ"n
I&;s;ns}9vo(ئpsso~EXb B!_ cK8!ᤄ!	N1t>lA4۵iZ¨B,]͌gkXj)҈.eBbPזVDfxX$f0RlߵN֢e%n8dרT,DL2kڦV@%S
1ܲHM˞?ȴ*J`ieR:T|-_
md$bvq4u|Ψ_0*=u,:w90D^Y16܈M/tmӨW~2u߮hZգ8a5,ŨT4@5UR[^ɾgsCYLYDDgF-4h
rl*|Ӥ9Jc|+T{|(oh;{mHB6|mm?L$SM+Mx߾ːk3{m@:.8:"sLle|2N㊌$㌌1|#Fx!Gq|<<\c7r"G%x(2tx%-|H~[&G_AI
$Tr@.B8UtJЉެvqKK6
7_d1[+̢i/!b폗XCï1s*b(Qzi,5r{um߫;%C0%;$	jt
tjbYԆ<%ڈRV8dYrw^S(34r*SxMk**ؘz+5
|njP{kVPKzx    PK  C:U            9   org/bouncycastle/pqc/crypto/xmss/WOTSPlusParameters.classTrD=8*qj*(T8 MSH 8㖏*(Q$#01do0]ˎS,&g|{޽ww v(ɔ5H2q
˱;Zn8U+8/,*՜Ts=jF×4t=ܹ.QݰlXHv]!nBO\vP#e?F_2!dF3Y0zY&L)V𨵇˚GkpyKNSl1ն
S<c8}ݨK˟0vR[Ne]Jg9武eWy
61bwfMҾm7qyʆtmCNVY(2j*jO;9 ֽuUzԿ{;FW.WJv9kǖF!u|`#?wyɡb8xQK^WL	x]xS@^:
"djw璃Q^%Q'%Bf<wg	+ۜg H_8YGṴRhЅ!"*"I8d8xOe/B@D) aTi\ qS>D[cm9>1O81Lc9R
w§1d(r"F/|)wûs@mJxV_6lRTZw@c3]{k'RRdy0XYý3C$S9tռilaU[V7w	+mv6zBY@#Mwi{E&g~<W
4S#[ك`Or<|UͰExCP{Cf 0YFv'<u>Hإ/ҕ=JD(]gB77B;APKV(    PK  C:U            C   org/bouncycastle/pqc/crypto/xmss/WOTSPlusPrivateKeyParameters.classROQRZ
hK_m.zAH@=AQ>Գ'/^5Qk4)Gcy+zҸovvv>0+:8ㄎ|a9|akk'OpAU۵F0a:+7(g	"\A
!ۖe~*VqʞJ0Lln8ܵew^k
_uʶ:킵0%ÌXFիft?6
3h3vkahY[zX	j2*w7ES_jr[W07?sh6hWd:jCW;oDyx<4hԐpTÐaJ{خ5a.SǲH!D2	$qzI*x8@	dC>)s>	)2t_
*VΫieeu!fb؄1	nYKPWc!;L)*n~l!Sj@VK$˃/E3Lfp1
rN706qnCy+DPK1)>    PK  C:U            B   org/bouncycastle/pqc/crypto/xmss/WOTSPlusPublicKeyParameters.classRMOP=Z8"30RHH@]AHQd>k2HܸD	,Mc
}s}/?>U'TRѯb@E!Q(.FvP\`h/QǠF/lr,9GQ4lęB.	5_)Y	<UUr1E&}^mOZ.UIGGㄕ0$äzխ;F=6toxշkAYY`&`0zնqT^rr[Z6A~v6O1tx%ivjC<ӝ] ccׯqKO"Q)QVp\AFA>R<؊-ǜWcӝg]IhЮXh:hFax#8 .$JIbg02C5>mU"h{kj~6!^F^Z9B.SŀWjg>!fM(@"vGcb'7mM{ly%rDHN!<^-QK0&
,}j.`DNcF͝zlNFZz1PKmM    PK  C:U            8   org/bouncycastle/pqc/crypto/xmss/WOTSPlusSignature.classRMOP=Z ~#E!uABRD՛N;oqpEƭ&*FX3ƈUč.9.)\qB)}:uRBlZ
ōy==~a\ߕTi|1A#(X
:"L0t<ѭ/E0ɟpc.xp7:-[ԤФHΤ`)l0Y	ݰy$=aۦ6j20QdY^VzC^40b.u|.!=צKu[	PSEOOahA]OJC<W*'t	>оiN>iyUNjtID;44d5ЭGC/COa1Ӓ;j!Z5'a@cʴC3Љ6Uz
#8 .Wf4QP*Sfh'2%^[O`ha5#2eHQJ;8OȯgʇYS}ԋ 1l̽l܄"'fE>OW_K4;tl>Hi0a tfoh.MKo1Fs^#~PKKwI    PK  C:U            +   org/bouncycastle/pqc/crypto/xmss/XMSS.classW	{=c+E9IBLSdR8.vbҎyǐZhtciŴXN1M%}7;3ҌcV󶻜w}w_KlĿxG7Ķ v+AGBc=hY@˹y:Δ9[4]nT
pI͑ᒖHhła
ژj[ĄUTi8Ѕ!A͘Z*äUd	+ٞLZ4Miԫg8QjyRq-!
l]I!LBYI6wҞ38Blײ´rn+f[y߾w_r W2ʨjxkyi-QuLMT=DVuR^֎(ZZAp!ۈORObO)(h%@'wxT%)%C&IAUًtת0M5+"[Ftr&!Q0BIOOUʉDژ(ZD9۴0>Gx8]ϛfEeO&%lK(r6c痠HkU&
F{TF5Kֽ 7gro^=^	,~trnPN-XndJ/%tPw['(zVuE{JCp0F,ݒL!H^#T^Ml}ŠtAf,*YpbFJq<n2G:-3b"""s"e躏	C;8+]5&Kc؞bApH7swv]n5UѠvʁe62:dtʸJFBe\-e\+:˸A&et"cuQ~]Hťg_S%&ujϽ&}Tl5p'kWErd}e[m#2q=?`$z==U.iY_yS+z(qv-T*?YR7ɻ"CȅjY[Rԟ4KA3shV,+؎C
nGN+聮`'

#`EXr(
`xÕ`v4+X{.BQ:V`*[ބ(
w)x3YmBQp+ާ ɰ6kpAգzޯ(P!3|gBb8.|<χ^<8Bq?O2|#a<B,!d1'B~>IB84e0|=,ȲWax4fAO3|F)zT_mB+ˮؖSMS0L~O	:d,C+87n)C얒VH|Q/ƋWTk4u&XOxc
^ A	tQ*##JVf3tjg3Nx9"Mt%gceLI";I:Ne| uNqi~(i\?#.A2
8ob(*Ogh7ys'ySr@úmͮSsVuTFy4);׈O1cĝ5qm$mi/̥poB)o$CȮ>rw]щ#S>?,;U_v0JA0%g;)ȣf;h4Ѣhu:"2m8㱪WʳpJ[#[XOs1<,pq'i7O3Tu4^`(;A!<E_Y&m/TRkԧBZʉ
*5W6B]^.9J-hr%6˵;WCu::?*|7P*V&}j1T/®ĭ.k|DըF#ge,Gx5*.hW.[8Ga+ePK4/    PK  C:U            :   org/bouncycastle/pqc/crypto/xmss/XMSSAddress$Builder.classS]s@=K4GZ[@
xPLH2N_Cءic$O:33>QwCMLݳw7_mV2]I+fh!ig	X:Ct<+AlAZ^Q5
Hfvxh8CzguWSn8с>3յ">0T~huV轵
ۏza&f3LB/qa69OL0~;ˑbO{bʼgF7{47.}Vȍ$O'$
0<1~tR
ں* -̨ b+9EQuX4F%5m8jZAyXKO4JLĹc8z6	C
]#]_md(^ֿsr"qp%zwE^⦉{{,cY?gv
BMY<Lʩ鼬UW-q]V|>2PK$:    PK  C:U            2   org/bouncycastle/pqc/crypto/xmss/XMSSAddress.classSmOP=Faڭ`1_&h?lh!&|*Rl;c&G9/ss?|PG؈ARs5Y!a߶+xHH0L~P(.EilyXuZiܫZbξ!FDYN֬3eCxkGh1w>c]}`u4z獩^	\k_Yu-=ſdI3n-xPTG:K2ʸ&:CEm^d-/m@AS
.i2b
0

XU0[Ӹ5wM`	jp/龌޻(uގm>U2Z@i&DQtFm0lQUD򟱙(Pa%PAG bBoVN5Pb}<}T()j)eҵT2CdFL6QL
!"_Ĉ.OutH46a2ǒPK<ଔ$  ?  PK  C:U            B   org/bouncycastle/pqc/crypto/xmss/XMSSKeyGenerationParameters.classJ@M4ZO=&QXZxB1PۥDn݊y+EP&(DQa`^^Gs}L1ӬVhC@sKA.VcQ
)4b~?zveQeY644	_]xt5/tnKUB29U(??C?]LBF]恚
]w"ب\NyN\w&.0n? jCի#xPKc     PK  C:U            ;   org/bouncycastle/pqc/crypto/xmss/XMSSKeyPairGenerator.classVWUB|TmՊ@ڄ>h
K@(,b_mXll}zݜ#O8%o;ܹwvU"5*_0\?lZ;BDL'%N	Kغ+¼n^FyApBI붞<H&9n%	2YՄac-LH֔]Z7Sq5sµnIOi􉸦o葴n"s5arMx vĦ/dT$[F7-"]ȹȨSЎl3sޭHIdY֍fq"TZ94[nh2ivqIFO[PJG2hm
3kUF*j7MFYh{#:.u/?JVJtWOڧbWe&㌌7d)# [[28'㼌e#]$ߋC<^^
4٦ĺK C
V)BSnOrQ
7KYZ[?[pBa'Et|;w<
7!D=r^۲U:&OlV+I_Xw9_岪
aPE'$mhQq*N1fbx>*с~|$nP0ʴ8T|q2B~|0ƓU)qaZA/fASFB%|`(BK
pW!Pp
}(9yO>S0e/Vdk
÷:}y|c:eѣr,;p(eʔdhՏ>L[$}:>YId[o7+Ȱ䙾
{>=Ho{Iw^}x?eI
H=<$z"{(Lo#VaP^lg^WڳR-|V<24n'3rA_8`-hဟ9dG[۸|ۈ.`@t9A9 ?)a7*M}L1,PK`{,    PK  C:U            8   org/bouncycastle/pqc/crypto/xmss/XMSSKeyParameters.classmJ@tSz][`EPR
BHo$!DfbJA|(񴴵PfemX}3$ϑ'q3n*YK?EOM36秎ͅdhc
-S!׬ I_
#B2p&>.yԍy+vsi5!%UDUTU$擩
MjGz?w>Xu7dP Dr(=w}OHӓ}s8ءM9*P# K.q|׉KAPשf7"*M7k6wQyd1$Q%Ȳ#oLPK=H    PK  C:U            -   org/bouncycastle/pqc/crypto/xmss/XMSSMT.classW[e
2 %f&,yKLД&haewU0Kfge%Oz.eEygO k0AyуMzك-;l: @&n_H;
(9/ݤtUG5mjT@PRX'kTK۩MJ%z9h1p佪nP\'6Gb44BѬ^PH.3Hl*|PDxܲ]Z!CӶʹ\Hga2\Nǻ{Bht\
(4K3>9˝Mвq\%FCj "hTQ[m<%,=pwN;9w),)ja>2pЭ@O
,6nU5Ѽ--P<OUӊj1-iv=1fϲHgL3rEBZ$۝A	[pGIj*Pr[߂6~jXsChyN˖O
s,G[C'WHJk9z5MNCLu	;CIMz.=(oZ7cȍ,zYMyyM933c/܊MX7=Cpú5bAuVH_J	u|$4JKX%! 	MZ	k%^t=u;"TLM_e374!cf\Ӕ;
aͩ?p6\x\ e"|sM}_[~˰.Oj746#`{?nGf*y{+wyKy+w3x&-iJI4cPzU1qKQP2K +IQ(
BA;*<`!Tpb*X!Lbr7
0+k
_VDQ
/FYz@cLbLLL؎e`SF'c.ˤdMҋL7dbdrHF/3yɫ2B,
4~5&`8g c7^i0}/N2+1HQ45V.5RR"
qE{+^cCv(7wBvM˾)5Np7`4L)m?oϦ&/)5#R,[.	ڒE(K!vNtgz})|軈c(O(]޻>FW@>:A8A97iM䚝 )x
aΤgv3t2WȸSbs13q/p~MZ8Gg	T?k~`M4޾L3,%Yp-f׊WUbe?,OBh1>l7R", ǮF)ύ\7t]*PIl;-RLd$MZخwE`jӹlT%HHG;r:Ņ
t+o˫1w
-iF	<#^2W3el'3'PDMïti0?PK.L  U  PK  C:U            D   org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyGenerationParameters.classAK0_u'*QO]<qYexY4[)(} ?Ł(2^{<.C$21=TY*UzJ\
u>3/$JQiѫa/
ht*h`7ܰsƅ#&'*힅c \+z&aA~.S58/vʱ`Ӟb}[3Z@I8h|:%Ԣ'o| PK,5a    PK  C:U            =   org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyPairGenerator.classWsUmfe" jbiJ*PMb^n[~Qlg,O-&鶴f3f&{wϹ{r?Hhu:OB y0!%t0CZܢu+NS%=(#,KG4ݐ*1#a%v$	$hH+Ô#5=.gTRW˧9嘵"e헰+q$5ءgi%ddlI>3ɖLWp2Esł ;';#Z$3=DDK)R%Cʑ$wD綼8f%ʖ%"#/rJ3r*D5T^F075}c9ӌP@$tQs6lu:͜؞N¤Mol:%hu᫿
nͩFԧ=
R4*yoF?¹'k-S^vu,wr!qF҈]H?=F<P4*nML<t*^-o`еn>C2vŔqX&c2q2VɸKjw˸Gƽ2B2:eet薰lh
n#Z:B%XyI؅C@AvRrZb>MxQ6T
q57+84>m
A~\C4oT|פ;<5qy=]#cLOpl|i-*.=R*@R!&Ѭb1C;ÍKPqZT܀*"xX*nBRQk
x,;~X˰Aƣ<q'17q=6<b
6a!ŐVU/)lAAAg0LېS@RhW`xEbAg8PTЏ^U0*x90	=,}ΛAH_V3Ma9>݃f4qUi)4hbAکm	O_	b2CԮ캂pp.d8NNUSMVdj
O5'/mćC$8eGw/v{@:>$^n+x
FSZXw&f I,[f<589񃍯akkh
7]l|;<c]x&NNtDl]vu7O8Mhʨh'igs<w*^τ(~qlTȏtx PK]o"  X  PK  C:U            :   org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyParameters.classmPJA65M4"zmwO zӀ!Hn8,+ه3 ?J!B3FB0+2wDڍ֧Y#&W]j%iL]RT܊c[v&SgsiC.[}ȭ$,wZy/LH8HaNhNP|x'.3_*XƯumxkOЀ-0c+~Fq/PKyl   f  PK  C:U            7   org/bouncycastle/pqc/crypto/xmss/XMSSMTParameters.classV[WWBI PS6D1+jI[RnAb2Ae>X[ZmL@s}C? <\8£.p{"@?+ӵf9P.wGDZ1
9V$T/=iF255%Լ154WDҰƓʪS`ik0hlNUVjk_ffW6vEQN4^F.!YL5}/U՗ȩ
q}FRIZn-~#TgC5^RC煙;zSYVN#&}$(Դqy%f
-CUnfn1JtMfhau˶\',ngbDAqmY>#c(mj\`rjJqT,(H5jޙ&erBƔA%ZNGV853ûrY#,5:+VR|pL]T
ٿY5fTjvB#XqnfC"t&%YYeA([{R:|C|T&Nd[iY̢Ǹ7_+HIxDQ	~	=NJ8%Wi>i;8thgsMT&CՑkJk'*`uQQB4?jt^5O}O55IKWJ`醥n{/9j6>-g69!vɪ`n>߳]zBж֣p+Jp8&K2:1*M7ClØL?.hB/66l\q2i2eq!"cI혖рd#*2㪌>\scϳy͋l^r"\g3e67<9=8x$ny0(Q,Q$,y00Ì30lt6)F؀'fk@	jG3q=t6F
%Dü
O:*'UĦY
P1i41󻙸.Lfݨ?}o[E8$l@:nױ|W&<K{Cۄ5+{Ir	8iD?
;~F[xήy5k*:E]3*8-`R7ܾ[\^Zǳ;0"V]?%ʌO3h+gq)G:ؕY1oGe'%!b|TbJknLԘ>V;7C|UpbxYL(<xc"PK-\GC|\loKe*.-G
ہrwFd;eu@(DdQ4ڤH(EmRDk""- RD`(ED)"n""o""lRD(eY :E)"%JnQIâ8b"">bպ%/PK/  5  PK  C:U            C   org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$1.class
0EoZ~{IDi|TKԼ( ?J	g90C_ )]R\n[ތnb_ZjG,~vrW6Syr,=1Z1ѥSg{!,3q2F~GPK,R      PK  C:U            I   org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$Builder.classVrV8
M BK)$Lq[q4- ˧cB@_iHPmweI(28Y}{;GO ДЗHsk	G\Zf_ ;n²F^)2TARP*Ae*\*Ӭh붐_ު+fC4M-!^Um	Gi]зؖ0DB8iQZПި7AαMBӬͭ6tˮt;#mLooZV:wU[252
Btc֞Rvьx
*V TcU׌4֨lTK9	ڱR^icsW?| [F co,8YyYܓyh-FV?%=@i8##	\}Oye38Xms~DkϐF&;NfG
o{zգ<<?&d׫òFhwqD)sU02g8Ug* T~FWWU^݉c
y9
_2ggaA8(bL`IepdciV{
au5Oh,z.)
(T?Oo֑\IsyWrԕsGsu?aI>bim-G0vPҤ<fXcXaXe-KB7ܐ'(dIY;ុpop9׀h߱ux6kۤYm.k|/\slO?٥Tۊŷԛ_N	
("#QZk~ƳnƓnef[%?~NĒ&ƨۮIHz٣̆ІG]{tħ=si54c{ ^cGJz nкGV^zvv8Sp>&MvPKN
    PK  C:U            A   org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters.classXxo3ٝMȂkYAK(D
 $dwV83	Z[}VZӗ-IkZ>ӾԢ93
Yk(sy3wDdhFFKeȈʈd\)Ð^.b:/p]*஍]K[DHd{D:4b	/'Y)-bjqRcccnє85qZbIbi9qzřZ2FČNS55'OgԌŭX\M
̏dƖPoJ!cBPch6h	D*uuPM%7i.[Y*s}oMtg)d_Ll[KHR0u5jdC>OdHmftjm2iUBsxfiIƴ[]pV,NR:b[5S
gIģh1bh֩Eu7l<GOYK״5>0mz}d
m
T.`댍V+G϶P*mRT:#Ca9w!E}Mm"D~3,jBM5Nё2a<9H"Uz_z4MaRqB#HlHœ<a}ϕZ37G4u򹕋UӳX;]v'AQZI(UxpZoiP<iFULh
WE`jj
jjW.흝]ZiX̲md'8铚VDv4SƩ$ԫF)uӒ'`02e^megˉ̞V%sw=HX=ĥ[
B1&uRcrk(k4m)%	
h!ebN3Y%y_%6
)r4g;_2>9o:cTbNK_b4j|E2~OtDWH*}Jx42o	vtr/D%,p,[%#ΕNy$K |	%tJp%\$b	MWZFUG6Svd]f=a*kڎJgΜK
oBzɦUMݍ$t:vڣ^uKsN5O)b|Gp$Gan~L]9V҃XTd
QoREQ̐*A0CZHڎx-zuSH9mTVx.+׾G}3=wvn~r~LJN'xCß|q-Rp\p&Zܨ[R*XЌ2321KA/
֢
0["T*#	s,\8*ޣWJA&g<CVg-
p*v*؊(
[0aIIܦ pCnWw
tܥd|\A
V=
\O2)>z/1l^x10˫?B513ԋaԋk93<3`"Ãg1o0<M'=2`^\/1<İ!0~
/TF5K?rWy$tkY-tR\K(;.ȨBhҴ+2g[iEJ Hc)PGDi?<ݍQaa	kw,އ48
&hvW7{f^#r7	Q~;]Q<ߎ&3",ϲ$"Y$[<˒J,(1"
eD(%T؇g84[6%d2ߍ	Cb%H4Z\A>]{v(a?A>ofnq6|=HOüWjJ9^(
Wi>%9۰o97	7K!jW_w'$r(?ͱ6=H
]1jS$Z^B9Ni?`Z2N3gնqqPȞèzq,w6:IKHg_!GigrخEDwPf㴴fUEz7[vt;ɑ}ΪnvUgWMn
r@~DnnݯQAU_#bN[C7"	!C9Y'K9`Q1wDo${pu0(O
1?hKiXtBv+9xShED3#Չ̎wmRqjl5S
B <lNlwќrR_ԼjV"@\gy9L2tEuWҊ9#b.9q,+ȱ?cyAiDDen[Nm[reР1/0*[TƝb;܉E<eC8]3.¼hŻ!,;B6iKLdj1:4F؄(>dv-X}=4\ZU@f.:UT\f_ae%#Jˌ@L^Vݠza5#2(Oe(\tKx.`/^4t/kp5ھ̅{֫&g(e_Fqpp	tHxLPKȬB  @  PK  C:U            B   org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$1.class1
0 EjU{ 88upMc-iRT<-<_ V$53**鱨wkmJZN3뤠Snih4Sg̰F8a,bD"f;ť*SB0+%V2kM!ď ww7Փ_PKs4       PK  C:U            H   org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$Builder.classTn@=:ubܒk!iqT<ЪKQHA>9r`;?$>BZDa.;ήߟl`aJ0LkBƖ96CBxe<b.:pѢV̐9>Zky	#~plgǶF.7lF䛟O|_Tuױx\G<'KK+b{<`GJ:r\kC$ӍnJPۮqNߧ|r>fq)2PeȘqb]6D&̶TywÏaukwD6x2]u_&R29Jt*T䄸&DTLP4@+B<T0G
+	A)Ҏǃ
CbH
IT*Z:ٖN)&N
'H/xl3
Q0
gX1^2ס(F񵃹1Sa=Lwz,;la2)$imL$X놧qw@n850\W&ޗ|JbPK1  	  PK  C:U            @   org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters.classVsU6.B!Hh
JTii%*v
ݰ7|tI
3B23G8sKd&߹1a|`w*N%.$Ds_%():>ÍIƘuPpU8$Q*fE#nw!anqozaƗ<GӽԱ*&,ݮ
F´AL'13-r;n ˦ 2ٶnu8?iTK%6`
˛"vSv8=gؤkMͪfɫ9TZ@uӜio r&ՔmDZ^SF]3Sj*AMCEm-uKo<[guQҢf/NJSgxCmg܁G}_x
B0+ܑnkmAKpl5{E
N]ߖy0%~['}/GhuHJܵΤE)!ރ뼑[mUS?ZDɎ?N-ԟc.)=ex!ϐapa}	&w7;!?ٜVZqumO_~0*JMGp$&C]J94ɯToc*K!A8b"*zFT.0۠؊M*#"ITbB9b3*-|-ل ӂpc8*10s\d>F Ő\A>yA>b
rcrז|^4'y扉mthբeq焩.˒GÔV(cC@e-T5=诌TPow:	_ō> :KTCy[gH2
x$Lʙ8GV>@Ep9櫢J_$9Ȥ}g«I~a˝:r[^eYSlϸ%[C1#rB~ބ8CAHlIt2b#8F"FXi};DϠs
b8Ψ)(pX0MZ DJ4X@|hH<$U5yKˤx-|+eEIS{TGHD(Qz<EZ6/%}E"ro#>hBg'ن,&m?b	=~Z"mAB8fν  ,
7{20wSI´F3Wx?p*idA~PKlo    PK  C:U            8   org/bouncycastle/pqc/crypto/xmss/XMSSMTSignature$1.class1
0 Ej5U{xqp(upMc-1I*jCO/ 	9(v):*	&\W٩(X9IXQb@0*d3tot[ͽ>c?,nk$ϾPK| 2      PK  C:U            >   org/bouncycastle/pqc/crypto/xmss/XMSSMTSignature$Builder.classUkOP~\EnEэK #QS,-h"hGӵcK^>ym 9`Rvi6[殥yU`3L,6&s|cINլ"VӠi#=퓦T4kWygCvvjǺzC989>lhu[[ou
2,v*C-[Ϭ0LҸKp9>*ÎQF>/bMzmDc~r<0*1:zyR7<q	DThYt^%Tϥ"fdXJmtFe(
_!;]70#mMkZy3LCEH>	\qܖ0ġ$09nqSx$"'"nⱈ[Xd?=kv~Фu2溆KiRb|Oz|Oj@!~| q3dcSȉev7*7K	"F	'/I4\ýah9(DS=PFR$jPӛָLBCFNCg<`9,cEy),'hr^
bKt!D~NvhT7jPKҔI0    PK  C:U            6   org/bouncycastle/pqc/crypto/xmss/XMSSMTSignature.classWW-HղP (bHm\*9n#kal4aY-beGN#}MnȱӗO=I=>3BݹsgΝsK}z燸9}L@09PD<B$"amɧ$uZa DY#onh`AY4qV;}iTs9rohԶM-3f2ǭZM7LLҏ
"iqONO;+C_pnay=nivN'a<X9}gz2[>ZPg>Z9{aZ5=W{ǌY
QΞ˞2es#٬gTw%)^n̞ME+GrxARW]@ԧդa'3'/hk}T|2cz^5YrkZB#;#*chlâyj4Z'.蚻15̤a!n{ReR[z]'yڢ:'浤VXs¬$A<Plm'fdVNؿS}ܱN}.խUmUO?KI)SJҴ$ϸ\n6Wl*v\->Y}iPٶĨc9^׏Ysbc|Q5ސyO|OVd
wfkPCDt_E< "%␈EE8,b@ĠxXC"uxsmSxӓVfYٺAz`;i?+7Нf6'd}@y=Ĭ C;xVB|J2}Գ7-`(;ٶ$(?VnObûf.fܹfG
zЮCPr
CWp
2
AR(
 +HI0YA'ZUC+3k(	
ރY;1.}g^A8
F* x0|c2N21S2&uYqO0|kߖg)	|o1'Yda.dLsgx_dR_n9|yzQVnQz~wdƲQSu=5΍U>BC 9m^KZJGtjwTKľ,ěx/hU3VhMgl?ZS:0jST%3I̘II`$4&S឵H5D{*^ј=9,2^zʒKdY:T[x)f]*~Kgu	W[Ic+x3D#MWր<D&q5N:7hf^.Eh&D4H.,ơ+
"E:LEYX<d#8%x?H#PDH[CĹC&BrL٥<Ajp}b~>V_kf9Ӈ7%x`k~Tr=3`$Xn2y_Rc**a5-G	p-G%z 5OUn\"dZ*+M5o6/#*]7u b)}""C*G懋}VQl	e8orn/
Pb*~yl揄w	*iI:bJPKvpM;  R  PK  C:U            3   org/bouncycastle/pqc/crypto/xmss/XMSSMTSigner.classX	x[W$ٲeKAH$6;qؘ$֋,%#iˑ HRz@

}}@Ӹ3=KygggvfgggœO<
`hcbGa;#jǠ1kuM5ܮꚝE՛Y@kI[`wj"(;5"dfSG*L6maa
;L$JmI<֯	TQ/VbȠڒTۮ(QS$	`&Iְdj,i"Xiߺ;M&5 
;%r.}|2&S2ӪːqRSݛޢ	RKI*jZh[UC<۔X(>HKaZ
ePkR#gTg<nL梡n?Y-z%ݓT
JwGSug8>\QB]njeRHm:fz\+ьoǥ=]LJdsA7EGwwa<%uU32'Y*#?I}L,D\
@iv3T.`'\x[	DX8a%ڒgi	 3D(8'/љF-@</pij?9Yg${(Lfґh`k$EbA577c473Zy	}'רCd>X<0D(%-uE<pT:Ct<-eT;ts=5)մR3b%q
_4qe5II
l$!!nZW
 9j,n29f>/4-[p(O1>x~Mu&:P4iL*񢹪S?Us9\jʔ;@9U$]MFvEԤ3VZI7N|+NppH(lɼ;#G絬M)F5[J*RϋRھUJxҟ7
Zl*Z*4cvN>ddW?FwMʟT/'EC]x`
]z/	BlvsT
6^IkE8kLkO\)cɌE)w
?'a,u̾6P_NN-SΖ^	m6JD&	[%tHp.	I&[B%lCz%\)aIx$A%(궚.MtZzz5$fZC_cZfE$ԧxkNqh\~zOwM8wW#4+gd>P,iWRx%54Hɩ'c53on7'N-ͩWyfTf[4͝Vi>~֘Z2\ob**&]38t7*N;
էs^	V!W` ,__ݯeSY4:kV~ZtLFn-1m[˪ӌQAdLj/ssn&Ƴ&Ül΄5/cux+CŽ2v}2ތd5+.,R-(Q.dXpC2VBFnsq&83d,ee,e2 >&#Xd,2%8ʳ<"aXGea20c,8SOȸ2Đē2xځ;p8çax98q=~
72܄;?a_`ϝcX ~[1މ;dKN3Y0Ӊ9e0|`ß8rY 	K_gG0owҢ_vN|͉ء/37-o;19q?d}/mW=F=J*f,gP5/J;(7C2Yk)Zk)ᵖ֮Z)!FUPOP[T;*쏀Ň4Ya,`:Ka}LX!YqΈ=Yj+YnA="vDh%<X*:%^@8nu[Ft1Ly㸡4v<{wy/Ӡur0+
y`
؝zѦxfC1hlf'Ed<}pVk<huB1|Ase+^˼dB=+Vd`DskXߘIȹYǁQQᕳs<eYΊ-誧m(}vO=XTo~f3f5*JdrU|wkr"_yV4id#+Y:X#qǭux㶅4qg+C.Vz]̊×z58xkmWZnD3L;<s
VMv}UǂyQ҆,{-)I[n}ZFrgPV6q%䝠CpPW-6AplWC6,8.8;/a*a$ѷ>:M	Nx (644-IIF13
rIV|ϊzXdjj&SۦvK4掐[;tbMCTik
Ra$EI>)d3`}\8KyW+ɞ1.Xfkpy\DTYkxq w&self
;eyS7(aҸFPDC|c	6ReRѥ(
-uO!^sT差:[g+wz*a`TƝЀ
$ajap-[k]uG5y77gK	TJtq	1ph#qZݢGxhPKzexC  '  PK  C:U            /   org/bouncycastle/pqc/crypto/xmss/XMSSNode.classPN@=C),򐈂sQIcҘ.D]	NJIm-D&H4. ?xN2s{߯o '8dF'zI1h1Π)l9+8c`eW05lS2GC>*G\yg\\+<3ڄSĂН:~`}h7u{ދr{e)[\0ȳpJa
VU䠨XCFE
	Yl>,*bkh\u;8&ZPE	iH$2EԛR؞$i$OQ8|;oXw_J1\^iw>oPKl!b    PK  C:U            3   org/bouncycastle/pqc/crypto/xmss/XMSSNodeUtil.classVw6+oʃTĮS'ı,ĸd-9
bʣ@ڴ<^H@iZ~pNre2sgg~s]fcJE\^	r}OBr_DIHݚm]<g%dOͤm]ӇS]̴]:2U*uJ$ⅴC:ˌthJplY YYib2s<
i2s-Asf{>=d#g')	ѢinV4ƌYi8f潈#Fј*yGI+J&-8+*\,ىæĺ*-2ȧ#e4kXe\uMp`gyڂRx\I3l.隃ƃFe3]ef+ay9m
8P2쬄8mH!bp"eNm߸`v={.qiM]fw'Cv.5w.ʾή}A}ã\j&{Lymm=M5Zm6/|1PmfJSWLW֢O<w|]蛱Ţ1CP6Y1 x9UsUMz*FVX!R:uwD::~,%Q'6)E.	Hވ	gzV/|i.;HWwyFZZW{،ga${bz޾_Eϱgqu?7X&SgQ~tÍ711°V0 :֠Em=h:Ru,Cq/pu=:1#؊_SR=8a'l
P`08aiC!!b(3<ã1<aE8)4C!@9000<ã1Pbx~aR5$0apX^F%>ϛ,T2wI2Ge塞>#iYϮ+t
_Wʳ8z:x|mrH*-jP)RBrP't.`x|':%<oEަe3\B|M tWiScSH.(jPVLf>fA>qz_oS*T$INw'ڎB_<<9y2;}e]HubHZP	=qI`To2
ϽW?_
KS?gT3IV_dO\nߏʝ_"~Ý1T)DYd"#61iR觐2F!f9xb,gxg)qR;x|DTHtpKQZe֙ujZazLUjZgVSyj#SQe*LE0cTT:SQg**LT-~%mmтZ
7ZڦJ䋣G56	tTDտ݅P_|"C]F к2a|GB/nk_n\js
{݇1B%8JYYPK3h    PK  C:U            .   org/bouncycastle/pqc/crypto/xmss/XMSSOid.class;o>NFf
MOFFĲDļt}FtҼ⒜Tdʂ|b`n̼tvfvF
M9k6Fv6`ab`d ee 	 PK
5ڢ      PK  C:U            5   org/bouncycastle/pqc/crypto/xmss/XMSSParameters.classVwUmCi-m)	BD4j(OMnmt	ɦP|+/ )7x<M!4MO~ܙߝ;37o vjX@5a"ˡۜpZeRIJ#:ġ>"GqE!qh WbyjP76daQ&$hWМiTc2&G$~6Yi,RSU-&&J&͡IJǠ#S	M1q3t)Aʑ阸c⼣|FjitYѯjP)**h&.a)	:ކ&jb}b<÷4ƦIa:j]d? 07tlDLR^:]f(J"1!֘kKBx*Qsa1)_Lh BgeU9G=(%.\RK$F'P3vd${g:!%
bfKWrգ4)zQݠ1ɬz&)zߖPZұDFUiVJcb2)mmm:iw^{"̨DĸNgE%#Mӥ9QN՟Hhţyl(<㱉<<ƣv<v5
Z;d5Eq5,i|Õw$w/]3.g6*rf]YB%OfOklj}/+k=8=zl*IͶjHw	|lU(.V֕fkt8-/:y\rMv	Чx+IEE063d`7FĨ c0ƸV<#0XÀ]
1dp$G<(`zk0Pk04(  DN:`/>dNc7'" @cpIT91ZUo)@"n	P_SN}ZCs*<KIѼ%]7#TL
L٦xo䂍^.sg9|}'Mk
9|_GzBMU9w>ueqKf_eqǧY\]/kY\z_p5s,γyCkdqUxڣ5 YE{(@\{*쮛9-7d{NA7iY$liff5Yt\n(}1Qf-siѻ\v)>3P6ز@y~Uxɕrc={uop㛻
c rP
Knɒۺ}> w6u]|gäמW7"5o!yvXH,+Uo9m[yUkZxzc㣟pѸPK'  Z  PK  C:U            A   org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$1.class1
0FhU{ 8]\S[ڤ&ث9x %<Ƅ!D'x-TOyE1l)xJRXWooKӷNGc-?'Yԧ˰\`!!󽒵*rW}a"dc;;ꉣ/PKF      PK  C:U            G   org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$Builder.classVYSP>,(BiّE)RtttxJK[ٿÃ?4aH
{%'7I & ˠ%y͠-&p1}K3NP$Yӆc_'tƜθәp:NgL;rE]fК;T
yB(/XM#Q(=a;/K:;[R\(U$QP 	Z)%@ӄ7[lFU҆\Ɉx 벪1tpt PWRVvl$0WP,j4YRej$nM}Tw9 4
jnGچ6v!ZfT<E>
n1ټpBc1f"A,#
ƹ\,:F&SjJ"zU-Ҕ{ߔ=>Gڹ3"nFMjƭA+w#ncZq	ZMYsa D~zKy|qbQVa(~ ƕZ5li9ߴž
g݀_WxEOao
*ϪN&Hl$h6 ܃)gS0.X#0n
zMA~mj<Iۚu5)[3\Wfkt~$I[xq~˳SxahB~hISӉ4WشhIptS}͕^h7,.ʉIwҫ'vp<>&H-PK6s
  
  PK  C:U            ?   org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters.classX	|ݙN Xam¹J%A
xd;	n@bRֶZK=V6X֞Pzff/4o޼}ofkPP$'aJX-a	Q	1	N	qMJjD,+jllஉ\6g &1O"&$bxlS[x2n.07j4/B£vwk3ZLw-Oj5IlGO<AYQ5LjlQ:S*&U)&eE3|4Jj
	ES(MZ'FS}}f4k:;
lbq5՚$R/`ZQ#Z_{Df4qYV˓TLRZ]HQy$zm&YFeIrԛd^,e\VtYt$&z]*NҬEYn|MgV]ӖŻ4ô)2b[ֳ:mJU0)α(SIu*dO-q`fuZOE,jf<E$Œ&dW҄j)s̣Q"֥&Z#Aǘc4$kS䯦s5(eizN'iƷl1uL#WgBvZ7jGryV
M5k	SIN]uh_T5̄V}}.uޭQG%(5-TcSC,S	5fgCചW5pd|KFǷQNڢ7;^@&il)]㒰,eةFz3P5C:?R2f߶]Ӌ3֪-Ծ9<>DYXIҩ՝߄T"au/n"(hDeFa*k3BlR
e[䮨$	L)]ߣ&)4y;4
A>3OA&)y8R#QaCȠ&m2?sOR^:k+GQazLT2ER*\D5"֊xu"ZDX/
WJDsW-Pzba )5Om⋬5sVڮ))5oOvFz@k:]B珆!;͙TV KkXcZz]<j/tWwIMXdeh+ܮC|DVwƘd<EsFLjQru-+5k"grVG}N[|^c}]6z[ƤRF{g,PV
mD'e,.&L[>;we,Nq-u^(q%ox0AFe4bTȨ$`y˘)2*Cm2}2.e0
gsa^~v^!||L),|\,iJ|RFC5[q$Cw8b{d$ic>#CGt|Vf|;_d×⅁^=8xgOq?W~33{zqcCt1|Qxq3a6gxI2|)3?bxzq+p2؋]x!M
O&TL5uz"GIM!{[VTn;)p**:gF.X'&(9]4^ǿ<=p1
w?~?Ȃ4E[KBXB%!<w@|~߷k@xi(o^=
&s<ˈDKtgd,#*Dxn]o!7F°+aa@Y/}*<`0Pfr?✰(os_ۂJR]T\v;1y9`Ea7XD3aw\w[js_{R0ד6CgG["sW"e$=Fa) HV1Bn{Ou;4u7V?^Leb6DnT@ϧ񗌏.q?SxMIXA}BfRiދǉ)0VA]p'qETe#4A_e0Q_E%M$'WX=L]@7v`
J?Pl[i0Wb]C7X]c
Ѧ1ю0-X{۷82d4NYG{>rWhW`Q&i8!/8A(+4aY\v|݀tԆ6f}-Cɫܜ¬s+-%`+ך撽ڡy2nXhy?5hO=N-
yikzr;ي^)PF s6҂ci8-sɫlw@oi<-͎ݻT:ڋPAî܍7"ಳ[;|bܡ}V>";pv&	<Mq>gN5<NV$&Qx	(؉ʔp6%SVT\U_wSnYKIanN.Ԕ;&Sve$3wFr4#d$,|}mq%s@Mc߀0
&\V;(B
N:.xԣd>ӛk &TUV+W>h'ӊ$'	9Eؑ}#\q<qqQ<%Eǲμ͘0iEHv9usvӕ<~ՅIj:݌4❖:PKuRR  (  PK  C:U            @   org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$1.class1
0 E*={UD.i%MjPbߟw%;`cl
i	&lzsyGgFzirEA(C^e\TZKS9ƈc aMAB
$PK喆E      PK  C:U            F   org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$Builder.classTn@=:ubܒk!iq
A*U 5"丫ʵ y@*IT"Bsz@U)aZۯkdl9=bH	OlaR~NvZ]O0䎬Zޡ<vmˍ;۰N+ah~hMױN
c dx8)h2<\Ci/#ǥDj:ۊSlzvs>c0ˈqA*cFƬle3I\-4&R՝qftu'`aCRQ9\S1BAJXX!BqW<)X@IUhr_HgPw=ۮ<2鵑U +%uu]=GNrZO^Oq_g'X,Ocí>eOQ7Tsse$`.	&	F"0?Fg0\ir'-0i+4n	qX^ÙrDcR=PKI,    PK  C:U            >   org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters.classVsUm]mB,jJ[ih6,lwgx'}+9X.MЉ2s=sa|`w+$ș޹q	,S/^̍*DL!	9nشMTD0&tf:Jfe.=l|umS}'仺ῤNT?aN)7Mbډ]}BVL|quˬi= ;5m[ztr%W}!@kv%W,^ѭ1R[ Y֌C[ܮ4gAnd-<_+q߬;ZU3o\Z+.QGkq+S{s՛FpU--z^Txכ+i)8\KZR^Cu8ii+aEq^t:7ݠ^moZ>.a3q*u3ȈfSOJHwv׵kvy0$Ms$`z:0h{3>C!p C&gk{ ;٘v̫Zq]\y i)V/$;i[*H̛#ڛB{|*DCpJ;0*vEvlQ	IH
n	b+>QMNA-Ɣ d&1Ac.8/eA>O(	 _
2/I\3A.%0YA.aһlOk&4}1W
ZmtX"ҫ ep|1ȴ*}?t+U-X* 	u@<ZWp-+؇ٟGo8v3Sxsgt>ǣy$KB6}R/ɒUxQ|x21I2#پ*nAr^Wtw3;!nKxP|(ggHNНDDlJ,#M?V#lu(	lֱ!x@5pYa?"Ì k.HG$k"i/tO)D#␨M髍X/2O5FFr4'MMwSy+C1HD=kxz>_F[whK	kYdl Fh;$i!MN`["UCĮ"&D
FQhy+'Cs'$Jk<{`BC(HPK㌍
  s  PK  C:U            C   org/bouncycastle/pqc/crypto/xmss/XMSSReducedSignature$Builder.classUkOP~:.e*;"	
:SNaO+ߤD?e|X1d9y{. E+Ig^*O2%,خ/)HVk'$ؓ2-KH9f*v%߮X0fu}To9
W,{`p|g֌ՍMa
f^hkw2,owo﷤4^?Tj`jMd5i-Ima5vͯVW֜@هv<`SqZgUJc0VlWdi5^')g}OU1T9tg,u	$P]/PXB
=BA':bj`GoJ7
6 >εF%4pA.j%
=P4hHl*I,fXfq'qMaP½ebF#^1S4N߫^#%96(9L"D$zpi7ȞqRY]CEENCG2apq̑|FGp=4ψbp51xC$5CЏaҧFVqwG݅;CLIڨHPKu;q  4  PK  C:U            ;   org/bouncycastle/pqc/crypto/xmss/XMSSReducedSignature.classVsUm>n6Ba-bJK_6mi!Tdl|s^|i*82H=7ii:/{Ϲ{>/	`*M;/	`hLhh,/-+veYG/Muh\\]RdҰ흭Jh[Odt'#`c,fs'&l٘v,=Ti~¾>tND2sHI~2ٴa;EA"	=W4N'rE\AUtV?sz>rFZY⤑wM'5mBGܐ;U!aY`p$7XE'Y>ӟ~[f4V:<nən;9#\JL1ӓ^fRj֪H:5H1S$Iҥ4bHUxHz;cl.eX'2Q.ezBO֜T]b/o݁<5-gn.Xf>K)/{0'KF8f`SE=pp91Xڍ+ʰa=CaC;ax9 C3Cy]+|_{?鮺6+;{H_
ƛ'_m>]O8V6˺`<"f͙ k_#)[YZW,V5xl#
;VVW6Zp`Wu8?K
^
4xla7?
!*h㤤I<Mx`'l@BAlqO}8ai{~!#ʡYxMFtgebø1u10!/ R~tÄ (J<79ݶ
z%=yn@/;~ ^WiљB{}8mǜ98xBagǾ:a-Θ[YŅ2u)!w^{_76d"!dyoWޑ:[GtDewį54h2:>H2]Wͣgd^M5C1wGUQ=WQ%3sx>v9`^E|~/*j(!M$WƆۈQ;h
|HyRPnTHc%C-\g,PsLA܇.gv- Vg= wJA[!K_	dZ\Z׊gx>8_t#*iRy5JmxU~,"^(DH,
Z^n#~B,.F}VM~ +M,Diw\}IbdiSxy7Cr\X:ނ~jc|\v<1OPK@x1  &
  PK  C:U            6   org/bouncycastle/pqc/crypto/xmss/XMSSSignature$1.class1
0 Ej5U{g
8tqM[bRT<-<_ v-sQTRuU7b-YwL=޳sQe-H(FƨB	GckFGgq3X#yPK      PK  C:U            <   org/bouncycastle/pqc/crypto/xmss/XMSSSignature$Builder.classTmSW~.yd]PblMcm  D5llM~hg$2u~LTf@fHȇs9yyݓϿ`F0C8Ol} 2ܬiȺapםJRAZ#hWM.4MJ(ê|q]19w={+^qE~%nɢ.(ef^3JTv0\AY,ݮiOUǝ7<NeuUM5t׳gյmʩY/KÌ}1Vyijɬٺt
rMŗí#L2RzNP3-#&嵢nHLQj}&mצUHj<Hb	1	%| C	IpIH!4\dby.yiײպIu
4<n8xNNUݯí C-}QxxgOOlvSwQ0IUDLⶂRpN#
FR0`wEQp
)Pp_sQhx ˸G2ZF2Ty(LAM<1'2Y¢0_HKU+΂.d㲬7ztO"oH)i	d7)J!Zcj-^=lE5@>\R/	r@VFb0"ɿ17ϳX}uR9?z	JD&|yb+#łd#LTMƢĢЦ-u^7%"mZ[C}Il\x=AH;Lj<au0
LHmaߎ 7X-cbjt&br-PK>C˝  1	  PK  C:U            4   org/bouncycastle/pqc/crypto/xmss/XMSSSignature.classVSU-	ܰ,XhĊm<M mV|l.av7>3/~hglJ~g+/:Mbc;{ιwϽgw} ] |{%)ѲHj%^PYIz]FuSw%HĬ>%PͰLmuWBfv.w] +0w7TwHM	zv$ߡ8bj[NQ^T͌EH^9ҳq^/F#_J/y"zTݼMNz1XnKVRN]7jLb\"Ijf62Uoqӭpjnftmؚ7]Mu\rZLwsr<R]nkjV{Zf9HbUVNtUEk<S1u%ᶄFR\uK5ϯmr2jUs$tے^ى%>cA.Q٥2;^e
&ly	Vxv^5'$ՠk;d:/2dxeW^e0t3Dz^cegKa][7#kEHνdLQw>1Gaw	!ЈTGR6R O`b>=[M[OM?*o
bG`~UЄ:π)8fUЊg6+;@4bX2^ǚ7pN0ޗ12F$`Y*c\&E4Y	ؐ1|(c+
8> yl}GG2MnOpR. jnI3cAS-"}"2Hmhi>܁m>)`{+sֻ=Fbt~
{n%w>&ꨳx!I(Mzd<M`!I
KecmE.(`m#/r$ֶwx]^`C,@j<bdς2 0}q9(-BAyF^dwrP5#X
mx{,lyB()5^f?!=8Z(In=|xBC{VikdOжʛ/qDPKAs  
  PK  C:U            1   org/bouncycastle/pqc/crypto/xmss/XMSSSigner.classX	xזz	mm6`ZZK%] 4m}7=hMQƲRLCB}gzPvז],(̼{oެx' $/6zɋ{ˋ^P\lv;m+\Q@Yp{3+s} @bD$#dn|֬MV3N&wm ;%c*z:Xj̣i)iCK
t $̉i 'ŬAUqjZ	5mi+AxHĲQomtL}##@&EUzqmꀵC0:튡TK5LNjшƜw)阞"Wde+1u
<"jPy}GUV[jZ vgbtXQkoMv)<;TYqŞdt$$׽d^R)x8z$7|:f62ٯ)I5$x6Eh')q)Xh&&o(+ޯFi?sC	CWtڙhҒ$^7M>۬j7dYۃ'q|UFޣҺ`hJA]PMGi%P@453jH(YsB
RT9
:;eeb
L3D)?mFmSVRQCӲ(k/uXȗ|Zf>a׽5{VX6/1B%ڵ"uEQwlTԎW;~eQ.TS4`t.JS5M5IB4nniHˌŔJ'123.*c~
O]0P)J8-@ɮhMsar$NKtHTc~Kob"F-ޔi
ٞ~,ܯY	~R]]2]
 7;O3ǟm[)׉X'N"֋x"6"IV7&Yv;Dh&bv7E

`='ə;\${r!rU%^F,򭞿*[&>2w-f-Py"8W(`aLNŝa#պbTm}NO^E#+rAZ*F<IzLH&q7ml$2SyĈb7+Vѧ0WN׮(O"_-"I&eحo.SeTz@zB[dt2vU2:jKq5C5C-|2Aa-*d,,a2,gXBgaa՘-*̑QJˋdF
$c%,c!"Z&]x;eƻdDn»e0{e<G}811|vI#'!1$Xqa	|~	89	&cxA,#!3|!	}`]w30`8y	z<1{%a/I8'%()G(c^O3r|YP>?=/rs	7'Tg`Utg E0H@"J8 j)얒n)n)v݊ħ܂ ԛC=ڲa|>?*x;Ȣ3եC8S]{}Cx~<ĝXSgyOS9X|"rgc#d2!AvMi8RF|(Xpa|uԖX⩮ևmwmLOuUrB<G1bg<Cǝ,92;0"9|'{_/9g43"xeLpq]O@Xa<ǡ.㟤o'~o{9-}t?=K'hf+Fɝ.U*a*Z[!\;"/zw?
7(^ףbN[^;
VrWۊ^N;!4*ϥLtHjU>:W%W}U$,~Jv^׹{Nv6-6gbZښS^&S+Frkitϸ]:ucgP"ט]ݎB˶9E]<_.shS%EK6^"3t1@*AnPKy	  ,  PK  C:U            C   org/bouncycastle/pqc/crypto/xmss/XMSSStoreableObjectInterface.class%1
@EhLD6H#XM1bv݌^x(Ęǜ0Φ2)ݭrƆՙǥaW \6϶J8T]U!p00$L6XV9#^|PKF      PK  C:U            >   org/bouncycastle/pqc/crypto/xmss/XMSSUtil$CheckingStream.classTkwE~&ie{KZ I(JH4M-Ro͘.ͦ~WEir|Gy|gtj9yg}os WǸ	oqJ;:Ցt|̐y/^`Aǫ<nEcHm,2omn<Y+	V77@q<as/ 8 OPwL9+aTqV"jŞo]"[1ÄbK^%mzDNݭnYXn["nʵW4b/N6ϛC'nF+vHzZNtҴevaa|]6PQ%!g^PgBj`ve*jV.oƾ\ˍvqhԛMk0:2M!Je)Uڇ6i֖Z[joS^[;)-jIf$-:ugZi.j֕lV>0ᴆ3jik(h5|D-:#:%?'o!4˗n&yzԵ?>/,7gsi25'11osqěҜ-,8r .KinHS4i"`|Y|us(I0|tf\x"JJ4JzVyR؋f)/ʛPFAcJV2]&iL>
ǸU~wߏyT")74Kx'n=Dazw	:{Xý{!IB9GX|Bhzw~#H&<.a,t`d2_<bv}`d'6;SP_ASA
<ֆ1p1aPKOl    PK  C:U            /   org/bouncycastle/pqc/crypto/xmss/XMSSUtil.classVwZiW+Y2r兤,qI6&EZ;Cz-e+^)M!鋦B$&o='=?]5Vݝ3̝ͬ; /"ZEDEl)c"zE-S"8,E)S"2"EָGZqpF[g{Hz=Y2=qp'c/qf!D3Dgp{ؓ7[IIJ˕\ʾM<RvG>gKkӝj)'nY+d2d=

\NMY~\IgʡnbPtjL+oB$
PG)5=c>d^58xj^ͥL$!锚7*Yxv6Y2 Х֪3FNI;'3J5z3)=6iTK~3؈KLƵ:SGsj)%?D)Ӛ\iZlфjL3gy@GtCPeMM)F8ΛIGbP5Cނ1jF:A_1T5q喔#t3i\-#FNU	spח{fj䰾8&+]cj3jߝQT#͐n<-x&CRi*ͨeшAY*TKv6Šx*:SZKT
ِQ18aȆ.~gFFOuP'Rk3~^HMPeR$ynYP)*,e-3ybOy#˿_MXϥ'ډeDn6kžк {,Q2`߶ORGv%VVȬ$)QdcmUKIAzvd42s*Ds'KTIVqcUUV*Ue5撿(m7Lh4d)-5)'IzvU:m:e0$Y*U|<'hةϬPN=&`}0 `Pa|B'>-%0.@]DHy> kmu#`dW7}VK(e
;\wJaYU>fPORUUrx,b،lދ.֋L)laPE/4|ɋge/ev_"ɖE;.Y|S7$m\p?pb%
[ǖHŏ%%N^pc(qM"Jw%\O$|ߑp=^c˛4nMC45gV%Jvr
q$$=Es4p j8v4'Ǻ=qiޣU@}pxMcxv#d'_GpS_zu4O^M7@^<[@G	1f\jpv,Zwۖ~S<p9~j-g)L[3?oN#E\UDDE3k&%*G/@ol>L:=;+Rw5u:Φ5gA:<<s|ߜ*
7ʨ8|ToEj̮'<|G:bm܉U* 3>jD9+z^0"ƻ
8CkEC:BG3j(տ"Q <%8z
OZF)b]tVBݫp:m4qqnlVf?M	AϢM$(u{*
Vd'?oA)0rnw1bzۨE<Qx|[N[$2)Eg/sl94]~Rʱ9f5ǚ9X[pjkœSR8C	|1"dӊLjΛ(zjhS<xne;D
JKcK'enq_6#X"5ΒF௃UxoZV>oRm@,-`
\~y>{iwB߅FoNݰ&NvVRhVR^L&J8< -K(-b~`	3cE5]p+7M?ӃObў%c4>cE,mZgyZiRX_܍:z]ôӮA
0pcvQ8E;3Dkhhl>ɟ
:}iquEFUkxo/C3i4_ۯc*-6܇H	a8ټg>s PKR	  &  PK  C:U            7   org/bouncycastle/pqc/crypto/xmss/XMSSVerifierUtil.classV[SW2D,xWP#"rqagf4\Ly5yYL(I*y/U&(%[wt}7 l~lc[%j"iL_f֚V	PKwPֺ.Nkhp̞wĘㄏvG$d8qG˲)SBs%,#lN;*f%K9f3ޭ:'$,y:9άGO47gvjc$XNzbXTO5	gY./SmM\Q	qm6/+U2&$i:I\IZbt?RÆj&l'cMĴqWLZʜSw㬛SLFf1*zk17$FKwHQbJ%4,Z)vJרRZ\<*2fQF~6{MBC]YOcl)}-쥘Ytx2d'ހf#fZeN^}wMY[5/l9Hpj"ASNеZP;T
5iͿ*Y1TϪ]aY5ϩ"݃YEz)݋ٟ2E`#AGlx\	'B5O		<-h(:hb}6ںh˿*q&伛,^ ~'BN!ܻ[
a$:(;=mqLs;̝

,esߡMVG{˻WΚp~/d/Yb,@^_fr"wץTI
T1<!a-j(Q!LrDYWP
1a;(QcPA9U
C
v0s
VyqL^2qBFKh0Ca!0*g8ɐd8paBFtfH2f CEgPp&e&*qCF/0q rO߾+@f3T-u؉nu_64G[_ѧIZADcI4vA8k.k4VݨM;XU<nɳieOcp|)|3`>ʈ~
`cuwfОq~7#ޚA[O[~/
=eڀ?Pz
jyUi0Tj&(fV))26IK|q^^]Nť8π,Yb,5P櫥n
|S-0dA6pwlVr_Ep{n_^LkY4;9,zAnO1':'6@*g)	8$!i@@3tn[8/u'mbz<n\)PK oRUi    PK
    D:U               org/bouncycastle/pqc/jcajce/PK
    D:U            '   org/bouncycastle/pqc/jcajce/interfaces/PK  C:U            4   org/bouncycastle/pqc/jcajce/interfaces/BIKEKey.class};
@EhiN
bg&Bf\8\8<_ ֘*r	grt ҃LIUnN
­+BgRVMVwL>b;dYLQEݕX}4Cf<}豟m1BU(LPKE8Q      PK  C:U            4   org/bouncycastle/pqc/jcajce/interfaces/CMCEKey.class};
@Ehi2X(3dIٚpQr|Xc0%MK#/K2%U9eV8(K]ncX&b*MzLwh5F
1~¶
IWѣ0_PKΑq      PK  C:U            9   org/bouncycastle/pqc/jcajce/interfaces/DilithiumKey.class}=
1'E;Vn[;O}<ׄ3
{5`#6v1| 6)GM%QNșr';ocO;֍/(o{6!Bɱq,d;@[[x]ZH![!mv&f1&J2iJxPK1      PK  C:U            @   org/bouncycastle/pqc/jcajce/interfaces/DilithiumPrivateKey.classP;@EdA-i"WX^d]f<kd>y/ Lf)J#7LZYdL^`Q%SoTL=wuRUN
[VtFL]4q5խsm@"
엫S]$0F 

LZ/PKhj      PK  C:U            ?   org/bouncycastle/pqc/jcajce/interfaces/DilithiumPublicKey.class10bxФ/\NGem|()G|ae`
;:^%l&TH'
Qۗ(pAv^\:Y4/\-Ee1K,PPKEFA      PK  C:U            6   org/bouncycastle/pqc/jcajce/interfaces/FalconKey.class}=
@gjYX6

x,1!W J\n>fcI/T91\?9h0TAEh9궒N8R
9a'JEtg
R*!=`5!
?֙Y:``PK
3      PK  C:U            =   org/bouncycastle/pqc/jcajce/interfaces/FalconPrivateKey.classP;
@1믰Z ho`y<ÆeM W JN7ay 0X:
,he5+*ڛЪԛF*+kG-*XVtAoR'mte?/$FX\&)Dt'X@`!|PKտK     PK  C:U            <   org/bouncycastle/pqc/jcajce/interfaces/FalconPublicKey.class
0E1Q FΧ#e0BJA+ޟSybըRs_&Vz9dO#jIx,Aiya/J},o,:҉8'ǿX4ek

ZX|PKቍ      PK  C:U            5   org/bouncycastle/pqc/jcajce/interfaces/FrodoKey.class};
@E7.z`ao
&g835A+˅s8`	ak<Xo/t9{\*}T"aJV;>n+ĆX*7Wa'։rQ%يT' g7VRǗI[CF)0NoPKqJ      PK  C:U            3   org/bouncycastle/pqc/jcajce/interfaces/HQCKey.class}=
@-hei#(x$f7Bf<
|| ƩE֧J%V,Hy8@|+Yhy-a^)'eSH+և\
;N"ޝqAvX->ԏj@00oØPKJi      PK  C:U            5   org/bouncycastle/pqc/jcajce/interfaces/KyberKey.class};
@ENwkALϐ83fk.EV6vps¢p^4;*rcےEUWȹFwZb}hp-MB]"Fc	aZ>u|]F0|J",-PKS      PK  C:U            <   org/bouncycastle/pqc/jcajce/interfaces/KyberPrivateKey.classP;
@1믰ZFvϐl{5ka3	`*u*8.Mo2uN[
{H+|2q9٦9i}%t3lJ*j/jXZJ7:8~UD#֘*_9}Da4f*VPXPKt[     PK  C:U            ;   org/bouncycastle/pqc/jcajce/interfaces/KyberPublicKey.class=
1cFO^!y<P"wʁaޟ;7CęCWY&W]
'i
R#76۝ɳ,bt5,f%O;i(Ac`PK[      PK  C:U            3   org/bouncycastle/pqc/jcajce/interfaces/LMSKey.class1@E-0x	#,!	W ʸW//
gBht.Ζ;N%vT_t!ẟ,bC씇DQǇ
\]7ruAؠ V~PK;E)<      PK  C:U            :   org/bouncycastle/pqc/jcajce/interfaces/LMSPrivateKey.classPMN1H0ݰ1 ` x~m!|Ws8!&l
Lf|}	׺͑%?i=} taXpS,4wGVax^d^J*sm_pRI[EguZ8ڏOp%j}_Y4t?181h7쏎yh.pqVnjK `,~PK5p:1   I  PK  C:U            2   org/bouncycastle/pqc/jcajce/interfaces/NHKey.classA
0FlmxA3L4TT\xJ*}ˏ>_ g8B-<I{L8L8W+n<?_^ūŇ%]9Рሽ
PK*:p   y   PK  C:U            9   org/bouncycastle/pqc/jcajce/interfaces/NHPrivateKey.class;
PEh`W,AVa	!ї@f\.y 0#5"SgτE
ۜĞLT.aGm	%6.BZjp&j«heO^"C`d)`:PK3ud      PK  C:U            8   org/bouncycastle/pqc/jcajce/interfaces/NHPublicKey.class;
PEhAs
cH&/Bf\"X.~<1&yCDOUƺ/i"wTab	v*M"5Մe^DUJSM9QI8μQ+kuz>a4/(!| PKE4      PK  C:U            4   org/bouncycastle/pqc/jcajce/interfaces/NTRUKey.class};0-
 @|Y-QA(8 BXh螞4y/ K&9IweA23
iwy5iLZ5%L>b;dYL^FݕXٝh4la?aDAc$ƫQŅ/PKI<      PK  C:U            :   org/bouncycastle/pqc/jcajce/interfaces/NTRULPRimeKey.class}=P)Z6tz,4jCƩLe~<D\}W;*cTr!s* jV R
9a'JE=iJqtY
u/&4X ~ PK+      PK  C:U            6   org/bouncycastle/pqc/jcajce/interfaces/PicnicKey.class}=
1'E;VB
.x$5
{5 66v1| 6)+I	"I©Ε37CK'*
w+PQt{61Bɱq,d}֝
K²Pc]|q
|@e4'PKiʐ      PK  C:U            6   org/bouncycastle/pqc/jcajce/interfaces/QTESLAKey.class;o>vFԒĢbFĲDļt}FtҼ⒜TdĬT̼Ԣb`GJv&vfF
M|zR֧
Y1220 ###	 PKXV      PK  C:U            5   org/bouncycastle/pqc/jcajce/interfaces/SABERKey.class};
@Eh5bV0y<CęY %Z].y &q"A\˚T92+SmJdX*;Oz=EB(,g?ǎ/J4PHb"Q\xPK[-      PK  C:U            4   org/bouncycastle/pqc/jcajce/interfaces/SIKEKey.class};
@Eh׈DP
&g835!9\aQHgnepyL]9Aa9\^se)^aӸ򦫹gC%ޙ,BeuW);h4j}1`?aDAc
$ƫQŅ/PK%E      PK  C:U            :   org/bouncycastle/pqc/jcajce/interfaces/SNTRUPrimeKey.class}=P)B1چNoQ"ze^4jCƩLe~<ĈeXY3Utȭ7[WP{_)uW!+lElF¢=e񜺲Dsjf,`		?PKu      PK  C:U            7   org/bouncycastle/pqc/jcajce/interfaces/SPHINCSKey.class1
PDg5&jj<Z(
)6	&?Bf<q1}1!DuCa)\J9s0ִk
sVusVw*/eԸ57Qk9mQQL#!	?("BPK+ Λ      PK  C:U            ;   org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusKey.class}=
@hjFQ4lϐ%&qw#jC6v1| &D[}/6m2U\2#	r­-|UVw/E5WVaQEtgTlwMz6?s3sbA
:($PKI=      PK  C:U            B   org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPrivateKey.classP;
@WXzJFQt!'<!!$r5ka><_F㈭vaӁkIb*RE&LV`R%+b[+]ĕܪy0wdJH%dbg!.Uw6Щ+[w߷VH]l~#x7PKEۑ   &  PK  C:U            A   org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPublicKey.class=
@cF6`x]DG,<!S<_ X)y:ᤰTz'vCr#8}p5,p<8u瑱4
ƼTXb%4&PK#       PK  C:U            @   org/bouncycastle/pqc/jcajce/interfaces/StateAwareSignature.class}R@ǵ␖>ʉ2PNl6cfNWЇbКdI'8`?L?1X/T`*oTyў$qjfУG
QSpƠCk]ШU:>'Hh"'Bl<Ai|,Q@OEB*̪~*laёϩ8-Iyv#DDE	9Zj0XUei9yMV),(BsQu>_eOu'J>ȇuY^*RꔧHM:/23THAMSgEv#E-KW#/`Ak,<"oJҮ,5HF6aAZ
5ȻYm
PlޓJ
~PK:  i  PK  C:U            4   org/bouncycastle/pqc/jcajce/interfaces/XMSSKey.classE0 ]\4jpp-omCj«9 >Lr}}7%r("!a>܈୰C2s7A޷owɍF֓I=?zGC$ÄaQY흶j2dH1&J"0 t~PKݑ      PK  C:U            6   org/bouncycastle/pqc/jcajce/interfaces/XMSSMTKey.classE
0/Z+>i)%4
}5S>{O +LEc-iuv_NEGez.,F+jU.x-⇲"ec/_WRT6IHj1Saa0_$.wV! :DܫPKU1ư      PK  C:U            =   org/bouncycastle/pqc/jcajce/interfaces/XMSSMTPrivateKey.classPMN1HzTEBp(cCL\j&3d6_ qDhׄc]Ȓo^8=yf&i+#k^spnZdVJ*sc_qRI8[DgeF8ڷwp-j}Y4٧qU?E~vƠGlWjw] `[8,PKF2   R  PK  C:U            ;   org/bouncycastle/pqc/jcajce/interfaces/XMSSPrivateKey.classPMN1H	P/&nG,w5CbZW3$ǄptM8m,Fs'a[Y}a|pӚ7l*0IIe}n}Z*	UtvZiS^}}[עևq>MjCw`Ϡk`zdt.}pTS;?Qq
PK   L  PK
    D:U            %   org/bouncycastle/pqc/jcajce/provider/PK  C:U            8   org/bouncycastle/pqc/jcajce/provider/BIKE$Mappings.classTYO@Lv[gZr]$U$J<!YNm)?}j*?Ghav73 ǲ.IpYBR"aBu	7$Kg>	--	H̚Z0%e*`X^Y0
k
v$aW	йӋzJl{
J7̪
k-	fVMnՊ-nV#`vjjnYF]dj
nԱ9ǂt7<U]"~|P8p
pLvC]kFZ^3+W7i0MeJQ6p燷<njh0qcL'?H87l߃jg4U&=Hqc:'QJ
P5DqG]DܧnݎǙn3&MyOsg|?O3HI8%9/ɐ1*d\*cox8c6|3ye2,F-U\.Lu	Wje( /I@H K_zY1-3 FVNVo(ĐS.(h6ă![xSb"EkE`+^uA^
9BtS&h wPKJ  d  PK  C:U            /   org/bouncycastle/pqc/jcajce/provider/BIKE.classOK@_Қj[o,7C(&f?'%N+E20{|~ 8>y<:d2~$r&I#L:
riԋ:U++uI1/,?"NȪLj}=<t<xf,@C}B+*ЏJc4n.%AlBZ-!Ap&O
h}k7Íړ7Ȑ{uoPKs   l  PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$1.classQMO@}Hq08 7		6L0{nʒfm!_ixӆW6ٙ7o^fv~\Pt@i	'Lv'o9a"%T"2VڙjBH$Ri g-X/IC<=g!`G+عn.<
On޾}%OQN犗0P2cl`6ׄF;$L:w*طP Y(®&&,JnKBV0Je:|uKL@Y'k3{Ĩ8c;4_.jM3qD^rIK<P'yPK*u8C  P  PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$2.class]KAӌ&j.xR7BlS'ctnBW
-QgzQ²<{λc	
63Ba/t ΍ hB'ҏdL~S&&TcUJXP߶0tWoN122;fK%4~{JKka.hfO'}5PFU<(@Pk=Imwf[3?vc~o4IaCas&K(E	,M*2	(͜4|JXOe'a
xݠj}\v2]a5ڑRc7XSlL5c/Zt\SVO9)gXĚ3rPK:n0d    PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider.classX	|S5y+T"^)xW労ii*usBRsvy7EwCg;eݛ{krRO?%yGp-T8]gʨPFd,qsd+<˸@Fe,T2hq.iHx
񁔀{Qp	/z7$~Bo<adoYXN$ƣR%փ߱'л3$P\o__bXTKζ-j##v-etow"e4Mkq##dv'[zһuQyIDۻ+.h,jls+X$'s+Iu%դ,s		ѝnIqwO׺=Wd;G#$LWc=uҔܲPt $)q^";6i[5_LBF2!eDDTj~KKD%(֍z9_
K:)}(ߐhOķI#(*\9-Ŋ$uнxݛlyЈNh:i9?=FX`6Z	f}['0ۆ"Uq=IVJ&9t,v._SC[d+29LbǴT#3	kY6)c2Yب
]vr%QcHaф/еb{D4^n
̚:&<_ʪ,S@ʥBUqRGk$;]tm#F*ӎET[:d;OݘLlbTy&6eo2UH&A)f/m61j-Vr.#M{ۨj̗$ΈQsedUO\7}F"9gn4oh"hO˫||>-_󇂋2
q#!.gI0ٞw9-r*@(m%$22n.vtWܬNټEӔ|50w$5z=XF/z
U>H-9ݗ4/m#-Q즋ijvHdt_Kx+%M&OBDB]	6JJ$a-J&a!	opwHxwٽ*:0:6psˉ4-݉DYDˌgM'bE?dً	ThgpӟnX<TSKBinͰt@;:ΰK2*aW3mڈ-΂Cs?b:~_N2{6XiqrVpM-&򯲩TodgȤc*MSF&RI)[(͐<Lquiz3wMLs
Cv8miMM/>nC,楦yl6__z1aڮ(x3>
X *8SЀ
ep9Pp	> O(0t`I
!<a2X2#
VЃ=
:qSWpFxTZ)X/(c,{P{p%(O320xWݸ	d-7nOݸ
Ϻq;;5ekqwn{#7>aЍc7):0%_1=?0#ɍ7ĳ܍o0~9>ye;#Ͽ3/":-;	WrL%8L	P
7@הZ#sDx!fs	ѝ*N*SRMpѝ~/^ő1<e{ Sõ98Lw:o/^,y9X:]ؤzpGxh+sTKEi:GC~aKN=j]#i^C5,IpC'KW	7GxL{rqY/O6
wp"BTg(3k}.È]9\U_dcD{ KUe+	,;!9wx(Q	2Gf[i:}2:7ۙ;ohY^uIbhR
%
M#6d?ayp135n*ЯS
cf.UM޸ؗBTLGD>JۆS\䚷QL,OeT8bXǭD\Nyc43/Q_lh< *X?ŪixgAX-S®[,C&%8]æ_}36\6EVgajVW=
 wⶪu5:Mgvc&ǠHU7g+Rx\o. ap
;8w6n<ho&f,6ό{t-1sI0Ƭteek#xupu4<
n #j	FMCU@z'eFRڨ:6IUT,hTRƧPHu7
7mCiSgТ\̘cp8)(-2G,CURwGev
W}xA-ۇ><Gǰ#PgNU
]ju(\	%6U%,U+JIe`:[AУVTr,3T7
2/f,f	3fPK,^
  _  PK  C:U            8   org/bouncycastle/pqc/jcajce/provider/CMCE$Mappings.classU[OAݶ
VFt;ݺ%铿IJWlwl|gf9;Ye\qQƐaqQWe\q]B(|/ap^]LD}	X tײ'dfe6;qɲS#^fYBDmQi\h2`fEtmaV
a-a޲+0'=SYUm
R5:y7b,"f~(QHX0}glsLvCc9t-_X/UtŶ뤺N;pe
AY
WZij:v#AYw1׺ck484󍼲j4u>4%1Wr{]`>v:Jٌ2nXv-Jøƍ0nq+a	.l6Mw,+a$\snzD4kAf
eCM/%==ß5}w<,ڢmQ(vTp
aJ%h
F
`F}<!fǜ'x'G^x"Es1LI{~s_$/t*:CK[
	- DVUBHj4
n{xVCjؿ8A«oej_2&Dll[8_!5$ PKf2    PK  C:U            /   org/bouncycastle/pqc/jcajce/provider/CMCE.classOK@_Қ?޼	lYoJ/KEQ(^%$Mn~,O?JVe`z p#Bl R	F\D.3=a\TI,Vh|nYǙVfYteX?#ar.sUM\fFV0W\F:hKhbe]YXG3kM%sqp'1x]o;4o8|vCPKE"   l  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/Dilithium$Mappings.classT[S@B%D@+RZL&hKflSOutWn/i8ةys۳_ GFĀI%"DqKm[Ԥ@2NJ+Ds-GxS7u0Mb)v	UJ$
˦}#lIܲȇN)qXNeQ	"ef=ѝV\vvUPӮ[䬲U4E])}ԔF
u@x^J˖.xUF"ҩTu5bP[C1gԜ;nt6ry4qZkn]' v{٥E5Tuצ7RJ[v8|-v0!5\WغAWwhޏ;~~kB.Ĳf6!ʪj
QRLr@"1
5Jmv	imy]ۜ:8_?b2,ʁn;Ha#F9\p
A$\c	CP$\*aOx8sXbX
b
9D9, ᙀބg2ً(/0&</n['HV
Ș>FR>D^_g>Y#8GX9zy,U<`N	GXY>&kMo&5iFWfdBH#PK}<    PK  C:U            4   org/bouncycastle/pqc/jcajce/provider/Dilithium.classJ@o/im7o/Q(
v
qIP*3,	9wjgn..gq&RҦfi	hQV(|YEXK*JLn"BBkYƦ.D7@'@/@@^~Wdh>FN\$0뼴~.Z]ŹtN;B.V 젍!1O-hL	aX	
SPK
7   {  PK  C:U            :   org/bouncycastle/pqc/jcajce/provider/Falcon$Mappings.classTn@=ӴIRK)iY҅4"	&Lv+oSC+@B╏B\IRQ{ܹ;,
b
T\PpE
1IKzChN3ݱ
ɼo&N+|ݴdeIq?jeU&*Ӓ!w,CL3,ڎ.[4EH^3:'D-u0`!ʰ?t+ǋS8B^+|/yБ%c׹ke/5axay*CduN)=8
>^^÷<YnssSx4 G+MܕؾGVy!-
.a$Spe%af¸"~x̟爹D;Xm׹e%2sSi>ӏCCr٪ʶp*1/|EDEL#R*b2{x苴/(`*QL/Qa*0
Ke~M:w]AoH<'J1J̯IrVqҌ@rO>4$~/!k6
iZ(Ҙ`f|ǻxYB0fshlr9Svd(FPK<    PK  C:U            1   org/bouncycastle/pqc/jcajce/provider/Falcon.classOK@_Қj[o#{%X((Bݮ!!$xiU~oϯ c'sB"3dsw5=\KQHE'*veԋ:.U++]gK]OPĄ3_\0.~pŴ	G7,3   atDhzOh%v	sYxf*)smbh"b@Ȏ6wx3>}+PG{;G~PK   r  PK  C:U            9   org/bouncycastle/pqc/jcajce/provider/Frodo$Mappings.classTkO`~^l7BE_PhE۸
!DpD>{7:v~~QȈ99sn۟}0UE\1$bX,⪈7Eq[H"Ҽa"pά*9\`4v0Hr!zl3Ml
ɴ-hdGɸNCeJk;[ZF[en[t8fU-1jie0,NU)MKo\i|ҕt::AaJůU	*jy%K K8 p?&dE=j5t5_(j\a'<LvBgZCM0՜۪9mL?Fl߃7B7\ٷѪ-ww>N%bUS4glpC]@wz7}r%YDr$ɜKcWYO&z{-~ȰloY=K<#=ҖfUl*e;^0M	0%aP$\	S	㘉aqL`|/H4^ő x_%,zSs]N4]HI.ӿaҌt4ן TB9NQ9Ҳ tNxp:@f{' dYK_mc98Si6rݔoHI
bPKujǭ    PK  C:U            0   org/bouncycastle/pqc/jcajce/provider/Frodo.classOK@_Қj[oZ!{[KPPuYCBحmICJѣ{30_ αOh	tHr-E)M&nVpj]/ʨ%+_xBBuvOΦ6&iŖӚ&>en*D;@+@'@@]>
P]	ĦO4~.RV6QX<5.oo}6!PKO+   o  PK  C:U            7   org/bouncycastle/pqc/jcajce/provider/HQC$Mappings.classTkOP~ʀv"T)@/0y#`HLD0v$YaDIL2m7<r׷ R9	K0.A0)ᲄ+
/r{KfU-\wo1G޼/?oYnx
1^39:a!4AЦΝX+
b;۫Sd`VE@ܰ]^m:LdM5SږpZlrSUv2Zz&Sf5ωF{o5x$;ߏq$  ߧQցr-P&VN+ZQ1[0㻜9=uiaRzd33ݛ7۪u8F*A9Gt+5NB<ۇJE9BԝC*w=lpCɳÙqI5EqS-kw.ۈ<Tzw	.2}t(?کTT9̙:,?駤4Z6]e9^PMw!cD=L˸ U4<q8QIf7O|4)KY̎,ϑW-z%Sw]FS+u
@-8C,}.bs0YePCVVݐvl`e=(bxv$A/oc3YBtݐ%	ZHPKs  R  PK  C:U            .   org/bouncycastle/pqc/jcajce/provider/HQC.classOK@_Қj[o,7KP,(u]bB؍m˓%N+E20{|~} bP&yf2jLr!E!M*V0UOܨ:._U++]d3]/#YaŖ	ѭ,̤.D3@#@+@@+"@%4;ӄnb,죱1J
vp{Xx]=7
hc
D;<wPKw   i  PK  C:U            9   org/bouncycastle/pqc/jcajce/provider/Kyber$Mappings.classTkO`~^l7BE~"x B$1麗ѵHÈe<m7@J>>w 3X1(⢈K"DE*⚈t#ÅY2yYU
JhpGa:xG-[Mludz-hdGɸN!i
۩S
Z
CBmt8XMTSV4
wmtL4>JMj:{Ϡ0eU+eFH5z8@qpBL2@ 8֔Zbi\㺷Tglqf#aBP
ǯ:[&_
g^ozVicᆏ0;t0Uq
{`i]^
pxp=PѳC6
pCMpG]Z;)l:<H:rd.0=*?t9j#'GEeu_D|/?^FzJϽҖdmTw`!'Apx,>x'I0_<$}[/bz 𔡿dWK$-YK溜+viL2tI0iF: 
&;n8b7sr,~E!|ANvNq9՜' )2Ys_6r,pfsdcm,tSH&Ig$~PK
  v  PK  C:U            0   org/bouncycastle/pqc/jcajce/provider/Kyber.classOK@_Қj[oZ!{Л%(Exl61-cyzCJѣy30_5s'SB25bt}3y!2"&q#Uܨ:,T))UHg
_1+a̴K-i{YI0}U\hzOhELQaMe>9(jKq:D}S>;rfq@{w`ﰎPK"_   o  PK  C:U            7   org/bouncycastle/pqc/jcajce/provider/LMS$Mappings.classSmOP~.ڍRAT|E2s JO˥twvl;}Qӽ0F1J?{s{^*6TSqAE*tT\UqM4C*;ax]z2`,Qp%-|ͭt~DL։$G@zNp	ߖ:Ւ=]M~ JBl{!ei+aXvkaJ(*?=,EW
"`Xմx¨ū$AdqJu✾}^ :<bX!
$C/g?ZU,۫
+ڴ})a=~hkj;{
toD5aVTmm=lO_2T#gW\WpCMfX>djiJۧǇԅle{6M2'51r$d>Vg]5L!AÈ;0E
Xrwad03+x܃9YMmz4Em	:H6N'shk_Z c,t̟"`Qox|8#W!m>ag=KƳN2C9 PKh  O  PK  C:U            .   org/bouncycastle/pqc/jcajce/provider/LMS.classOK@_Қj[o,7KP((v		&f~,O?JVe`ޛz pcB}8Zי
ۻ˵FT/r<aTTi(VVmt|QqdV:[*6.&YaŞp_l*2
Wgb*B
A]B#)M
뼴~.͊hl#ӎo @8AkBvuě7H{ oPKj   i  PK  C:U            <   org/bouncycastle/pqc/jcajce/provider/McEliece$Mappings.classU[s@PU۪jUzzJH/(Z[uYJ!:҇:ꌯq@8"gY~u8Mq,89(.RLR\Lq"J!S\FqM@tjТfh=VV|]}k\<+Vf5ѶH2%LbiS3lu1`0ū+LM'jj.;S<fVg;D[3?ݨ fr[LZssJhfx+5ɮFX.ٻEqTF ;-_#,=&ҌrEs"EH**V>5+ZUYyATVP=Mċ*rsv(dlAMo7/Pқt[ɞUžQ˻Hr[/Y7tJ/%r_ȭuq!.ׯ:O1_WlMjE^w55>
QƜ~lf\9n;[eX	7ߙğ\]/Z,DmAq+A	nk>ZΉ\{҂>Zk9;	,87W~eaZ$iBӕAJqǌb$E<`
+Lc1Cxcc0#5{X'W̜&
eHp0ev~} rnb$b5_	t^0#a
J.xtEaQ\lai3Ix	O|lh餋S.
H'\'I5(pGذ+ PK    PK  C:U            3   org/bouncycastle/pqc/jcajce/provider/McEliece.classJ@ƿ鿤5ն޼	Tp"^*^BEQ(^%$Mn>'CHѫ|3z p}BdN\6W,'G Sk%seyȌQTX+_r>7|"*,b.M%S/ ?r'5@Lej  n~?/#4@=t'bɧqaWU>Zk8WG8h":஁m|9x2>}+P#C=;G~PK,-n   x  PK  C:U            6   org/bouncycastle/pqc/jcajce/provider/NH$Mappings.classT]oA=SJw[Z(n14AmcK1$&>˰8`Y`&&-(q޹sϙ1wst$ut:u,0u02ov'=bPrVea,/jWh_RP̑un(]_Ðp|)ݞ'>]v}Zu9a[Xrx!U}"r.SY#${}>#YvyT ^o茡Wx/m:*Ú<lx|\o	'<hPdS
0^<?znnWzn0  MI) X64pS-
5p!8eZU
WS-R}3348tnsϵk-NZ?YrӬoJ5}
/Tek:6$a3x*XC&ulpiߠ96<r'_676dբ2IF2=Ec@<!g9s\1̘4f#ߝ"}¶9ܘ˦5Ir
oPKaO!    PK  C:U            -   org/bouncycastle/pqc/jcajce/provider/NH.classJAEo58$	pEvA1iq\	. ?JD.ܢ>? I	d\BTLr<Vi<3^tq\\<*6і:&2/yË//G$wdYf&u!Z{_1pꠍ.ة&tkƏe19iGWE lS
!;ZM_eϽú}7PK'K   k  PK  C:U            8   org/bouncycastle/pqc/jcajce/provider/NTRU$Mappings.classTRP]@FĤ顤&)3 ?Oe_(}eЎyXgg};{s~@D\/b@E!"n% _8N@aP\TeCsQa"!yV2-jkٵ"fֈlp4-V(P$6ܝ]
U*,薹m60T4Euӵ
]ݩ8Xrf26{nL"NgLoβJުzM̔G])ZI'Ѷpz7+HFs(Tg歂[nD#>ɇz܇9f\j&/1^'սpj3M6ڧle|y5jک2j~4-6t6?t%Ywd&Fw#^VJnq7
eAS-7~\wnݎZt7RÑwtMmJw`45$Si5l~9?43w:49sۢT֫)aq	}Fp			x!)!&`4FOrnOPZzIw>[рY0D.<5*3v_
#h}
>D9ؐ@]: +QK{{(}}ǒ[#c閘iٖi86PK    PK  C:U            /   org/bouncycastle/pqc/jcajce/provider/NTRU.classOK@_Қj[o,7PUv		aSw7?'%N+E20{|~ 8>~<ZdrDr%E!M*nV0*mʨ%/t|Vqdr-UL2,a-,nGrLB442pꠍ.M&q^?Es41FۤiGqu S
!;ZM
&a>@PKySi9   l  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/NTRUPrime$Mappings.classU[wD41J!P'Nicrq\BY8reɕ䀹D=sxGqؑdKs c33<K/3pU^g%70dYk%LfI8{Ktg
::vF}gnyw*$d6ygM\FQBMnϢ$jsA쪺}i4q	E"Tk5~æHjq&!Y^o\PTPͺRqmݬum	Sk]r`nrKpsc1v-ZmSh<ze#]\!7y71gOa7	8sUU_=w&/?$+4f>Wɚ;Eu̬RՔN5T㦫v$,7+ݛ?b&j?]P
N䢥^>2C>D^-!7̖ueI.tLOJ$r{G#&FGx#77
Z`cX!Ín(~*%M͖GRnF*s95yXBW~ᰂI|()=ͣ6J%B9e3('"%#H		nOA`H"%!x;I`$^k!KpcO|J_|IOUP	5n MSX&VM4JdU4T?YUqIl~ QiJb{ϞKiLbBi_29='n+-ϞbUڲtoyq$'ùc1%郐!ЧiyR ـO

硜^a	R+-vXoGPK>  x
  PK  C:U            4   org/bouncycastle/pqc/jcajce/provider/NTRUPrime.classMK@WҚj[oa"xx	
?Ju]BBMIGJѫ̼3|~ 8.Ch&$# +)riqȴ	_Q/J:k^>+))XKm*m9'B%B5p?Zej `]>--EhEKՏ4~.hbq.ӎ!xc50졉ꀺBRءp_52ܣEy7PKk<  {  PK  C:U            :   org/bouncycastle/pqc/jcajce/provider/Picnic$Mappings.classrTicШ-^
Mq\.I:nښ\nAeE"x!Lgʳ |bؕlˉ3NfgϞs?Y$ApNy	$*ᢄ$.m	H$]	%'}kF-
Ɨ]M\(JEsg8H
GFca鎥H|v|$C奙
YVzV+p̲e:Z>RweS뙙tmdL]:Iݳigm'+7,±2NX:VU&O44ubQw=1+)4MeebyTwjEW땺V2<_`~ <ZR.F;]Ulc3Ooxk8Gz | O"zbUk4,ꑝsvOt^ %pc8qm@[+ܡpl~;KJMkz8nUH$p5Q{ZpQL|s:R4S-S9ܠ#>j/0=q=
ދ9.%V/'),H3e0rYFqc'O8+
ܑ&d.{I>Xa2
2Ɨ_n[wS(`s7[\rhko,u?LSsbqz
zz0@-;c#+%ʈ2rZۨAZ"6}xd%zjdR:Yi唒
S64>r;V,wbi҉܊叱4cYn$U#yPKqj  ,
  PK  C:U            1   org/bouncycastle/pqc/jcajce/provider/Picnic.classMK@WҚo~x	
ŢPnK61-<	=Q4R*3<0_ 'sBXonτa&RҦai	EƋbeի:._T))U6K]ťQ֨pθ.v8a^
	w??
P]	XjB?)W<GSku96
C4yj dGۻ\ތjޱԑ1PKہ0   r  PK  C:U            :   org/bouncycastle/pqc/jcajce/provider/QTESLA$Mappings.classTmOP~.וPE|E76hAfY,LMD.ݥޥ-$ Q{EF
p9?9,)8
F*SpE
1$2-HWKD
Bok^WtW+\sRu5j.OP"q"m;kZ-8]C)s7M<66jX<aԷ-fEʪP7Y˘Z0hFǉm\'ʄ#cv``͎,q(uwB阅%B_ZQb}1	Y^+nԄ
~;hbŰXtn-hcWCma^_@O7[We5IHfM@
G21昏y:\tkko"˯gv<qj}֚b;M'<ZQ)=hI
"aXKp)<SfT8"OTd03e,zU/j%~rEMV:KM}`QyFdte[Ӏ2m5t~LO~r~
janψS{''2b%##nJg?PK9{    PK  C:U            1   org/bouncycastle/pqc/jcajce/provider/QTESLA.classKKP֝;/r7)B	
M{[g\iV3@ٔиNLn<<
oG/N*WRd~jy|iԫe:,*LL2_%s]m&C/.?y8'w([u5
7yJT@-4&Ԣ|	(7I2[eIk%8&PEmru@o6bCPK9   r  PK  C:U            ;   org/bouncycastle/pqc/jcajce/provider/Rainbow$Mappings.classT[S@Bٖx!]Bm"PA;4 /037iZsܲ?~~`k	d		.\%FpM[M3DUV52h
ʬ%,Ħ,,gY_HՅyߒJ$HTVtbanPgNCil1dMK=Cv*Z|/r2YIV=F\Iv-gi+fnwVئ^[iN57i4JBiP(*9X6z簊;;c1906Bm#lέ˚K-YɎ7g<5['?J!FCDhyny4َf"FEqWĘ{Hm{%^%ZkFw1	i=>U*Еﶡ-=MnbvhySƖC,c9VϙOlJq".LuJY	1$`.80Cc
0ąa$$ϙ%Ky?
m9a;L wr|ɵ!
|'++"1Yg}rȓ1_X kx^ׂ\j5kgjXW$ay-<baNC*B PK+ܻ    PK  C:U            2   org/bouncycastle/pqc/jcajce/provider/Rainbow.classOK@_Қj[o*I
RxݤKHqw[cy<PⴥU~oO g%4ear}3~"J:i2O856S3k&T\?gq2ck͢)[YԼĄ_^0/ּb	d]:w!Z:Go EJLKV6smc{h"b@Ȏwvx3\9}7`rnqPKN   u  PK  C:U            9   org/bouncycastle/pqc/jcajce/provider/SABER$Mappings.classT[SP
rA;Oiz(mR>2㌯(M>==Ϗ_CVB.J0(A0"ኄ1bozpS墚*Q3FuW*pTz
+Q_kH!њ0Ipv'8e^(;6
Ua"eŚ-FJ|kenkf1]3a3,YvQ[5SqB~ՒK:g|+f1A/(oaX>Zs VQeP(w-kf$t7[kv:̛CY~-tb+1N^srꕊ>w`P8͈lj'5̷ߋʶog4hBGmN)E\9aq=ac4[aܦܴTL{ϒCE q*	sf&͟u"wJ< alo?fs6F6kXʞ]2`J>cq	!<Ȍ{x(.f#(1Gy⑧Q<Y<">L1Cw*г)gMz}2e8Α8].0/7H'''߀2@m!:R/X	!(рV">wĻ}H(]J;8Xh`%W$Qzl5Q:KD~PK7  -  PK  C:U            0   org/bouncycastle/pqc/jcajce/provider/SABER.classOK@_Қj[oZ!{ЛRP(-&f?'?JVe͛Z !~z6'SnLer%E.M"L+G8/$QJZ|QadV*]*2f%iŎpAej# 5Pmt	XhB7*uҸ̗<ctZm	6	#pTώ6wx:9|Y;XhPK#a   o  PK  C:U            8   org/bouncycastle/pqc/jcajce/provider/SIKE$Mappings.classTYO@L ;-KK3-9.Gp4Ii)R%,ac>HUu;	ͷ3|_ U	$\0.ኄE¤nJ% L}0--̪3c*`,ܕkXnx
8!FؖΝ^|8XdRLý:
fUD
զL]3u<[|XZ2t3l5CuNnY'kP~y%`'%
KG8L;ġtךʆ/lkfy|3
u=HuiA۵B}l,M-uF2'{[g	C{V휡伳;)aUz$Jɳ.ⶈ;"'⾈4Ǒ+}FVD2+ms~ƔT=gN{Ef
_\ǿs -=΃*Pvm*9^2"#CƘǘq	hy&fx͂o^eS>«ҘS<o_Eo`HRWÔ/EqolihIbKǁ>	Fu;Drd%hgw!nd!EΎ "Xl#vB6V)dc;D PK   d  PK  C:U            /   org/bouncycastle/pqc/jcajce/provider/SIKE.classOK@_Қj[o,7P!(v	aۂ˓JVe`ޛ|}\P?qjRwir?z\IKy#*	Ҩ7%uX0S2Slb.tE!/,?bNfeY&>Z<۩
PuFЈ&tX'|s(jKqm S
>;:M.a=>@PK	[   l  PK  C:U            ;   org/bouncycastle/pqc/jcajce/provider/SPHINCS$Mappings.classT[SPx!
(Ж[(^hT3N$5	8}FqW-Pnaͷߞsrd	$\pIe	W%Ip!Yb{SMhBNK'iư{WfcdH) ٲi;[[,dj´-!ݶVI3c&V
KFIOt^IuMQ4[Y&дLh_@g|PBdx{v}LmS@.Z'T5x+e1d}e5V
ި6G宕Ts+%CEĪ0a&niy",ӭ<G1Lz(C-Vp\bhIZoIL"GA\FA5Iݬ<Hofm?šA$:W\-sT5efw/vnjS)5zN0~t#K2`D]_E2zq20&CA"P}0
#	_}1F8Cg.c/-zre]#iS!_Kzievv[-
b
Gt#@B\a/+JJҥt
ս'dDc-<VF1P͓%CBPK|^ڳ  j  PK  C:U            2   org/bouncycastle/pqc/jcajce/provider/SPHINCS.classOK@_Қj[o*I)v	aۂ˓Wfa>? `?:UHr!E!M*Vp\i8-F(i]Yb[lVOQ6$1/yË5/u|%{2Zm-atvj4@=t'r	4I&:*mb;h"`Ԁώwx3\9}W`rnp
PK뿀  u  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/SPHINCSPlus$Mappings.classTYOQv\7p l"Ҥ'r;eLIx7'|2KBy;{?GJ"㊌2ɸ.[F[2nKhDK$'y-QޚKlg_ˤWRL\4βi#3U_*ʎ[m^}!bV'$rvWؕpz2j4lkI!!e;y-k-c`W4GC6ضAԱxt4Tᖊe^F#qX'z?zZ?$SFg5g
}!&Tδ<MgɼQe+'ȲE3]]нpwwMF}\#M180ժ+w+b_>矂cϑTuԨsW961yvbt)) @ ig=Y==iZپOgd(^dV^dtFX~d3Э5lM-j/tS֖M왎w܃+x$ీ)PL
h
z+x `TL0x)`Jb)^HH9zEf\פ&4k$.M#zl@
t_j7툫\eUemU]j ӇX HTl^؇#,A>DRmйZ˄("XA/PKa    PK  C:U            6   org/bouncycastle/pqc/jcajce/provider/SPHINCSPlus.classJP/iM;wuF7A1O0P^bBIr%|(qZ)3|ϯ '&yjEpy>F\HKYUM8.ğQ/J:~LLE:וo˧([	G̈`F0b͈88bp_dVej!Ln~_<@1$tb	à0ʼUKk5㮽%vІu].+ZrldR@
sp<APKpc    PK  C:U            8   org/bouncycastle/pqc/jcajce/provider/XMSS$Mappings.classWe<mSZ^A@D
J[тZʪPZ2\xMJ${ި(S8Pq
?O^.)44Ϻs &o±UijtL,lB
x\B-aPOO8%, HXHXDXLXB8p2©K	BGfB&V"(!Fh%$"& I8p6¹;лdBrh!-vwUPSn)ֈv`p:u]ti]U1qҢz۩vA׹&W;ŉsu6gFyl|IvVkm⋅#mn#M^^"ԐQV9F[ehrAwXr.v%mPew64+%HboچbvUE
QÒԗRll$r
lM,u0.shf~ m(--j@/ZUK``hTݲj'֤T<A%xc-֪jāp$n|m>%>wOiI1^I77牷s6-UG'Mk<r.qޏT3ddxqsi>f(*J|g)GF%ژ%vq
;ʮ&9˛\CYC<I#\<,>Y`f_nV7+ԭ/sz9=J4TiyU54X_
Ŵe[Ezw-DO
c))AgOL=枪4zflt{oiAOUY;cN![gpбi761MʷV jlIO,:eΏ-S#u<P,lM8eiǁʲjiXse֎uⰕy&)u)JV'N(Y>VILU~;
щN\ąN\N\ĥN\N\!__*rU|%cڏR]U&WW)I͜a2A2yz'MNkSNܯ;leoqMhYXRYFbf
.hxЅ&a:53p#M73p+m3p']w3.\\P<W	6<ΰ-[1<˰yv0^O~<\b'ë3:֭o2
ۈou/RjB@XTQU~)o`Z\W?n;8Ј
sȑ5T1[{oQbJCCچK6[h:vv|'%{1+:nOR>L}C>T]C.*u|hȅ2bw\
1GX	5Y{j#*E)4 SCL%ƚR?1Δc2"]FfcQprpԐG
_&)t|s(EbY_#I21A&_a۰AR?b]
7SǪH˟u=_PK  X  PK  C:U            /   org/bouncycastle/pqc/jcajce/provider/XMSS.classOK@_Қ?޼	lYoJ/A`Q^%$Mn~,O?JVe`ޛz p#Bl4'R	F\D-3a\TI,F(i]Ib[tڐ0bX{X,fqL87{:ehzhxhyocW1pꠍ.+MFN7`j\Z-	Ap:>O5h{Ǜ_]dz}7PK|   l  PK
    D:U            *   org/bouncycastle/pqc/jcajce/provider/bike/PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/bike/BCBIKEPrivateKey.classVmWG~&@EUjkH,[_J5^4ؗfݰA7[+~_zzgw	B9읙̽?-heh'}9ch͏IB#͞0Do鍐Xrr#x5i掘X.=13eO-#'&E+:JJZ6CGV,r{ xv&;'6Q!7 .N`r-l[,2e*',Ί,B;SJz2Bg;HQ
-vZ	']FEU%Y8@HxngCϦ6('i^#F(Wc<6UQ5[.du*Weoo;9=CFW:wKzip/G[Z6té<[ϘKBQET_l35g;T!dQy


Pr3+UU[Rkmg2hFWh)Xթ9<pL^#J;%oS?:HMMg
W
b
$\TTMO_JoaxA_?E<%շӡ]@bҽN7%(R9\1mn8>#u<pL{piV=CP
kN>VcE6wc{K[0i8	
:hhF):8&
EGHj{EJqLiôSЃx4ccx,*>)Vq
R|b_Rd*ndUOS)ȩ/mۛ2EH¶Ǎ)^z341T0H_/%14jdk}?8DhTo`=n4YA%yAO#y}&'ְf<
Tg&LnRTԸc7ȯ~aO'*i
Nhlo|܁cHNGCN*,$4^AxzJR-	l0 
v_W' D
9͝yY
Ig!Cʺ)%z
l{MQuq7	klb"kv!PK\1   M  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/bike/BCBIKEPublicKey.classVYSGF
 |$N,$B0ᰈc +VbwkE@x U	"Q c**gszfϿz4ԣ&љCmsy.<1%iM>%hv2&Q CSlРقbR|;WZ1tYsbhΉU^2f} õh8dFg!/U	wX^`i15+'r--IYqZۼ@$Zhs+b,:wU<n̶&nm Y,.Ձ͖
]_hpsM3XEUn:g9B+Q)QT^SWȂVָB٫nӮwFqSS5\t-uEE鿘ơJTKn25ײ){u%v]U=&TݤV&?f)mkK	;sD_P,ftgFlfbع]qhaXR>s||Em	w$ܕpO>p_§>@BBB.'SAۉwAﺹsPy|čD'7g*kd/q6!YB֪Z̡*^Tܟې8S\7|VGr<'ߜog/T|1UfDvD )Ƹ|
YP&`VU)o\ǋc^#ȒXȲ~Q i c\S$E|/c+2F#1\nh-=VtI]mLKb#C` _C-"^4WWi%Z"YF9~2L
-6G$S0>y!xF0Dv'7A<u`t>ܝ?mTDy;Zhd46&s3n kl7L: Y؇5ڃ;EH.yMKVӑCq̄x(W>hTkqu.G)"O!}]ȟؚ(!%dBpsbJӻ PKZa  
  PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/bike/BIKECipherSpi$Base.classJ@ƿ5icW^%v$nMJX>%Nza
3?_ n0#dFConqpU^f˟m-l#UhknҶFnMx&y)E))uvW~QۜP.5˩*~^|;&YƋbt?!3$scK+@茑#?Ȉ}}7rBROqJyLGPK[
   c  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/bike/BIKECipherSpi.classX	xז5+yJb8sPBmL*Dkic+WBZ%1gH)gip&->8..ЖB]ݲ߾y7y3?zOG<Kd4ȠRX&88AF>Ba
iq׽9QMC%q-$AA=CP޸"`%8W\Myw0-efmvcA"=b ڻ[6΍wJߩz%Sx,aba'fHqߠ6SѨOCpD_)aEg$>%,Hط50qhK
Z}jF\QLMv_<ٮ/lO󥒚@޶<P/	dF5e*5KD		jzXBXnT=|tWjjBBe(h:}(>a&U六kI#4?k΍jTՌh,4\3@ΌaK`^!eSF!7HIJKP9&LWgƶ_2L7gi|9W4jjFt-Ar]x2._3HһCz
:&nk6GJ!M2GNiKY:-T9"Vzs~*Q±!65
1hTWԐ];v,[;"mSmQʉc
רJŮ#yK͙$[12͒eyEs\ZB>ϑY^R|I3'ǂ@fO9[?x>JǍX[AZy"V#n3v2:Gò<A˪uIVvnsZCi\)L,jh;ǪF窑QԆjԩNgfavun|iwWo~Sݍ%b)=4RFTxlZb{$%7iZ!ܺ
J]Ʋyų4L$lKv"m!u[H\ݵi'/Wjm.uY38
Z2_c-mP!hݨ);jbO?
,!sNy\J%P)xʈDX_@	@@{"S
d 8vQ)*K;}(0b>
@dA)-W}Kϗ43k@`1Xf,X'^`F6	6\ p
\$p;)p!&U_ "M`P *0$ӳYEug֋L_i!N)Fvb4W=<}j=qE).h,۾gO+鵍=E*UPWrKTD7ϻ[Y(1k.*kMc΢MQ˚7
>
ß~k7̄@a,;1P?[n3&
F	J4RmO"U%<9OVҁ\[W<z7/%O3+ϓYNG%GxLyC
x@\+؉(Up6+X
V2YZoed-8FA3*hB;3i".&I&q&)x>ŽO+L>|y>+_xDYU0
q@it^|ɗd2ǘ|ٍWn\q-g_{&b{7vn:&{؛w3[C7ncGnν;5&OQ1!;&ds7ڍ37/ܴ?q?~
&b]7>2]%J_eW}60)ZG;tͺ(pש|z
@A2	1[41[T>0ʤEԫ%~qyODț^N#I\;?{*fq{~Fb}9ឲ븙$SG5qXF,G'b=;f%6<=w
rYV;/IS1bmB;<sM>qLxy=7c4oH@̖3je}WHi핳PAnhFPwxcx또<SU>wgUwqS餭q0wB(m=yMKxn'>ta8R:L5B
;DKc>7=xuKQ<?3&ǫSA4aK=FPg
X`z85IgU	28Ur9{lQۺdl_Vzj9xu1[A&>K^oh.t
:%.@
B;Ej)E|&qMGǟ4>s	[$-DHcL3;	6DLs؈Ux|@i>ZCCz$eLr7S\TwLRq_u8 f-wR@/N+ʽT㗽bBMXU[z)צXod
]IwSAkX p+[jmw[nxnj/v>`;;{ƤqI\NRrNHcW.V;MsOMLABIK˽29ZcR\ػ:l"RB)sT_e̥h/9ۇ貳R ELTKK8u(	PKw#
    PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyFactorySpi.classVVG͢bEB@acGRX62 f䙑@Y"琯 /OCj- $1RuvUuϯ^4yE^q9s`3ߌ)b<6L}гfցٻ'2NRƎkaSwL'LZ+k#nT"LR0ܬ%:ģ%ff0Ŭ0b6ԑ
yj+am%;/21Qښ$J
ڏd\mZqF0(46uk[&̙:Nqm%-p}WKkasӇHЊyiB3j3IL+tLsmÌGRFb[}y#muLk	cv\<&*ٌM!4ke\(>ţʕhlScÓWgtqBsD
ǖF(k))ڨń9sbPkciq5gPWYڮ.Ԥm
ʋrv2UZfZPSަ\$_Un=F3W6.g],+
Zhq}9qP9s6\XНj2[x C5J$|"$o6XεpC՛*PK"$&*',d:{h]ij$J$˅K=%<\̑!R+Ჸׇ\#Ňn|mL0)ќl>Y}x&&ú1l(x/cM6B6_*)ɑe.G\ç
@W
LA+BV&!Ft[B/昫{ZrUXG)K7z0ЬzF}c?C@`>'<Gx,Wp^x,vr0UG}{,Yv0gaH-J11Z ºiZx6[6*D
IIM)~>"ųx'"s1j:]D[iG'Vt~$Y=?;<Y#<;g=f!yLڈvTklʍTn
4{b0q[	JVcLw48sԀvg΢k'sH狧~:TPK?k  z  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyGeneratorSpi.classVVW$ǪPKl xA
JHhS[ar8 A/V%mY?GC=YM}>3 V
b;
⩾{
{l-,
Fto$7HK̓iKW nY~,G^)I<5M7RA֓=4
3Jӗ,)H'tixŒmdE1[YcY*"E
D9Za\ipFEcm)蓶-
Ǫ)(≆ƼS/EB4OEiZYtVסd 
&=l~\UYRйIaS$(RҨH(Ѯ]3,[7h_$oSB[r̲i[nqrzmsN7Y,Ƣ)ض0QDԄi
l];PȬ`-I}|rjw`S+-m<]ү_a⎍gl'ɾX>FnRo8ywPYrN,@!=G>H
P#c8!HӛG'VDVI Tt*gr
>jrW좮樞Jc3fqmHLM7ơj@$e2~Ȫ޹4?wPۦ7^/O]6*E2U^c27"w
i\F5'ZװI;hѰB|*cL5
kL>ЁIٔifd2b _drU!w*!./UlT&ߨ*.⾊Uq	qdܦo+nb3LO4cx[(A$]\ ⒄#U
hF
űתc0׮TE]g$3O:1Gϱ'tK?G><ǈ}
Hv.dY\{`
߇a&6 m	H?h?4>kp_"39Z.T:1
#m֫
*XiX$1kU|F_">#Af"L;	lv~_ҝxFo`Y8bh\8#p
ݯ4PKLM  
  PK  C:U            G   org/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyPairGeneratorSpi.classVWW
A&RRՆ(FqA,F$"5.]5L&qfb[v_AmΩK?o}C49޽sw{o6FX*7ZU]34C@U{zRKptJ<ΌA6¶4dfYdƌf0"`b^6֯h&0L	(YTgXT@mԯJ Fɋ :S&;^3&|]*e_4lp38Sw5X;*~]1"]gE4#(33*Zx(d!	Mdgcȝz$FP4AlKL7FAtb
Rjft쏙@,acb:X܎;(ebjj@13vVFBTfaͲME)57HNցz\z-ˍZcz9g-qmZ@U:**MبF['#l9EΤ s%5ep6?UhrEfDH^Fe\t9utePmǂ(|7m]XC1EQ/~
"ֈX+X'bDxE4 b&DElE`Iͽ
Itω!;vPbn)m[iΜ$oc$RoVdo<=+qg.+e4[{x99ʉ{]Q"d|w/+>Cj5
3,=ނ8q,.9彆gMm~Ga>Ȗ),n{Yż.wRpeWJT؎>[qXF3e,#2jpDB8 	<e܃2vr{qBF-2VऌexLr<	uxR<%c	 7Q90>e:(Ãpq0A1q$"!
&K^+:l7bTB Jig$tY	=xNh/J9Yj<9Fߨ WjB23! /7*Ttg^8#5
5O$Pė¾p_LM-|6>.pãi2hRh
U% *UIc[/l"q\jkBWO&Ż˓WI>p
m{u&I|0
'/Tm"v$V
A &+h\+M!$W_}w?\:Ҵ\#~2pi~qN˓t
xu
RMk	oLMI|y-R	SC%.Q*(m	.q~FYio"s9yѤY=PK 9  
  PK
    D:U            *   org/bouncycastle/pqc/jcajce/provider/cmce/PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/cmce/BCCMCEPrivateKey.classV[WWNL7֐X^JK"Hh[&&3af7[+]"]?!PϜ}g&_ .Ű->,C{|q#8%
t!zʹLo8CtqG/VyAsUOGpOLCop?K+cy1ϫ%鹢0<1=
<˂A+oT	PfӆU[yʅ&l̉k?g,P>3eRhwѝpra[]2.iRGN/qݴsCT<Ӷ{r2V<Rۼ6]
z]wʦ*Vk.Q
J
mQ3땄]^yjև7a+n8gFF=.OcŝbYj7<ۡr$oX4x4-Ji)Kf^8A*-v6+4 15+Z	;VuO+fIR6R?@S0VpF
>PpVA\s
>Tp?ۺurSraiFSxvS2"P[GG[O17{%V7ќ"$89\jE1m:֣-uL{hviF+C~O7cӣ2FcxsϚixKE7
0A-
1k薦G#pQ
P4|]d5Ƥ~Li8i
ǐp5⁆.C
\'x$*4ߨ*4sUJ(*n`^ŧXP44
*nKi?>lg?,/Ui?"yx:+\I
#
} ?/Kx)R5Z.hv0k؉+ޛרtrVݛHbDr
Ko0Zވ3NQm4M&~CGro~E_
R?P\w.r۲O>UD9A')<:B#qb=enB6Am=l%,$\\/2,KTVa]D6f2pNG[Y	Y}	I,Go?>Jv2{JW
>Ĺ58SCJ"n;)L*OPKj7  M  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/cmce/BCCMCEPublicKey.classVRV]ǀBN 7\ڴ16EАI4&6А@
daȒd_>@gZC_Qn]Bz}.{};H?0j+Zxr9ֿ:[v7iNj<&D*J3YB|04r)Rӛ3)ZeZQUʚ)&Cg^]y`-[6êk&/Y%A*Δ^0	Qbi63)Z̘Vv,-^"{-}s4vUG˪rop{#E
n55ŞhS劳P(q|ũS:7
rJ=gR#_gR+NeJJQk VA^#JUᶣ2ayNMn|"MEVj1e{E=榞:|hQ.3\qLRJ(C`CzQE
T3(uW±e9:)gqmjjʲxj.+ZuV-KTV꒗'o.P 	)X'
Tg		0({g˾*['C\gO<Y;4C5@fFb;x^(,ynVbN4l7rfCt~p
Z%ls`xOcBŖ9RZ,	K@0	CZB20+#<Ѕy	 p0E+"b"FB#,GND]&	pH])+W|ބ\%Wh-!Yt:/Ecd2D0lѓ)a&OsZ#Y
҅hoO7YFY4ŦyCfBxb6?O&DDW4$/&0e?iL>7E#=^#;N\C& ]@MWn*u@
õ3؃%$Jwrtf:@
J{xk7xwt#:\!j'AySp>ǎ&L|IrN{(<PK ub  
  PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/cmce/CMCECipherSpi$Base.classOMK@}kbU",}.Ɇt7&,O?J<7o7||~x!L6e|pQ^nßm)-j55֕Fn]x*y-E-tvq"6纭+Z0^x`7 Ap:ySsڔ7E{)F%QwgQ.o"I3r>9=<:%~PK5@   c  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/cmce/CMCECipherSpi.classX	xTo2f C: HG@V}L8K RZ[wh7ŶКlvͽvjy͚B{?{'Oa 
9
)S@
WD	
NTp$K
,45">-cI-MZ\ӓz<C/e4e^(_vq+7_\'W]٥o8Wpr\l^uimt~60I_"EI__[	]q-۩4T$ӍP;l,Xqˤ~-mM@$ZRF+ې]A
4WXtklk~-ʦ߶TBVU"	e&%
-}(+ԍnұ4ՌCEPD塨m5F[O$Z@7z~NܰE<xlDC;+a(z}amL%cd!7J	JOdvԓ+3c/Xi|9WNƵP2:-6G78ɵcbT=儣Յқ&hs,AH$5#ġ1Bf[S-nRVԩ'wPp\J{Ou
_wB1}\8{xOO7v̳I:wM١k-ʉ&Q&T8^l$آpr%,Y/0C<Q4gE!Eeiʗ4#{R>oC4
f/e	wXic-@,miպsVuŪ̩Ѱ$Oвj:󤂽T-[S۷9.OƴJbA
Dz-m9ǪFjޝιS[S:=޶}˥ۻ\%iMHFw&!=Y	\,Oag-TPr72[)un2D07N&aDK#'Hi;BN;y|PzP"\U9c+cE1bh
nmc&J5Oٙ6oV{̱9-O	ZB/@d8b, 2 @_L3nڬTSɨϾMC)PJO镰(+dߒ%e@,p;eu 8,K%:%6Hl$qf$.*v.$.x;%.T"$-KlK)0$1Qx۬1ECR:&/4qLg+'";1Z]53CUOBϭ_V́'ru_C3'M	*]PSt&.T]!4owPb\4ѯy7mU869g5oX=
ß~sO`/9o(	HYY>P?]n-%
OFE|M"UE<9OVԁ\,lGwq=΋dswޛЗ'e4'$A1tyrLO)S/T|HEaW*\1Or&kPLZcǩhd^͘b&MX
S$d!>!oçixgT2s;b88C*VqFTǨ84p/KL3grcLUxʍ}7ܸ3y/ý=	_1{Yx/crLndMܻɭ{#7n'ݨܝ
o2wL~nܸqo1oh9ދ2y>|w^-#fR]f/t8B;;>=n ^	R-eR-eR*Q[EEB,^5Ku7?
Cx L)F,S;]ck
㯍
/#8cB((7pnm$:n&z
>ao8Qa{+0מEM,MϭDM#KJs'8q;f3GQ@(9gGs *:Ȑ?69?@*%p<ufJI\"WB46#yXT:1*<ݕ>fUvq>S阭qA(tT`6Ŝ1TuyJGDĊPu?ao:"lCxCT|A45={CmC3I]]^ǈp
A1}]^X!0Sc#GqN5ˮr9'%j˴IGfumڳ	,oT
A,;sLdC0cJmL||l:@ -D4tJ+$#.@
)11\QFq;2Ή2B4L1nS~&F'mKC
h:
34N
yy^po0S\P*;pGW!Q#0"Je^[vH/1yZ:,ÇׁQQWrT*6L*Xkyӳ7yT⮤[Q5̓w5-q|Pm7L\7G:Pa]dâ|D(|K@
稨_'[26I>i41	WpkC)*h~WFwu6Elue}"sT_e̦{g?9ۇ芳Rٯ ELTO8u(	PK
    PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyFactorySpi.classVVG͢8-;ǂlhPČ<3(_Er9Y^IyHR
!	t[շ{~
w͍v7:tgh3aVvXL(nMc0}-;`4UUMcvaS)rxcčZMi7I0q)fz4#ڂfhh떞;I]e*%-%*ޢhR;IPR0ZA8h!Rhޙ]#QڝМHRmsj5bFEvC%.ٶ06O0\S2ܑD`hł4	
u&]TLu,Hz2YiKwQzv\<:ټ:E!kE\(Wk QR$:]fL-i%3mYU&+1.3cTj_R㢱k2ȍGM2Pu{jr23:EN;zRكUFFֹHTܨ4G"+33W6.g)c]A{9p<xGcccCkAζNjpqaBl5|. 6(.H5qot5.J\68'cV:u(Ǔ,G.qab^sWp1Gp֟nqM$18l^|(F/D-y>M<MTIlIx/$LaS4[B4_JƶYE.F\ç@q	!|&!%Df
3_#-[y˱=(/V|t
6L74릞Q:?g;X
	1+sehWpr8:Y=E06nb|X_ysah. @'Ÿ"hPi3G1`oIB =7^"uX"5G1eT:Ōstn]N=(d@tBsЎX|͐GꄴaE)xEkTlmڍn
{JqmO	RVkLǼ-y$ULC^SsX IxwSQa-PK[  z  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyGeneratorSpi.classVRFmфK$8msqHh@54I]ڴB,)Lp/'L~3e?GC4=+2gsssv[uC@둄`keBB(2!b;cQ]2æ决9۶\u$Ϻʹn{>I'F|M\@3G.,int>ej\
ёL*1n-Gw2jKP|ꨙ,%咣oRn5oYOuuSOF<4nU<r+:yr-GsS5Tǎ9 m׊b-'aZ}^	Yjb4{٨9w-vߵiU7x 
5svgtlʙZ^SxL5ٜUuM]x17+$AgZ-CɅɩJyLy$ďَ'&~gp,>z:9W7b㎣IuT3eeʙ>3p"C%>d
W1D(#!&DB;;I @Kk('\G7Ӥ>֊[n-@R*I/VKEpdm};#'y\((åțlu?JSJU+K".95R=ooYoO1i$6g(s1%vQŨ0>QP3B4!M
΂)hƧe\	1wrZ`FflNA#1E!$_O>яL_@BB|)cP"6	!|%*cOd;X>x DBM1iE,_*5LRmcAeO jDhV#ZCDWH~GF%3/Lͭ^ @EoI*^g,g|4E{'Bs{HEmh/pB-	<u.M{"<z|率;K6uPXB
}A-_Oİk]%iZӽE7e{ޒPz<H^l<dSM|=d1Lo')[_ӻ;,%hCqC_zEgnp״10n2\pk<MFDPK#  
  PK  C:U            G   org/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyPairGeneratorSpi.classW	WWaB]UJmŀ"A-R
C'jֺVmkzzzK3!h<p7~w=u@%΅X.!tZ=`M{DgT}S2	pvP͠!affʹHod5ZY'z˭PǨYf&	y<L]ۭ-8'fĠdndQ,
۰ZÆXN[~-Pg]F^K7¶
JwѨն̠SQ3aTŗgh=ކx亀?Dm].U+J˯/n
A6ޕZd[0"'WuF4tc^WUI&L
cͣ99JU*Rp*%Rc*XUU9iRYBժ+*jqƥjqҥ櫨-8Ն(ZdP4Z^	!o]efxa%>GhZ
ԍH7#G0}K|X)@bОKB:i3uO|MTGԋ}}K"uaZN]$65ֻ3)K9 .stK6%HCw6P2N2s%LW-0vmv8JWoPchakvsi&)шQ<2&ɸFdSd\+ci2d̓Q)c*ddTX(FFE2X"ajt5t]7"1ω!
JyUd9m|Iic+E,S)-eK.eH
/C{ɈN#U_"ؾGLu#ML)|Q/+?Y흆nהRJKJR#6M^29J1U&&Crb]n6,貤/eT^㑫*n*ܩzܥb:29snb(a0PΐQ*Ơ]2*
aȇ_ئbL9dخBE@-Rq*2!fKaf^gxAfDv2b<(c3<$SO3<xQAcxmwF5Zf`SZ2+
6uB	
o*ybo>`SF%?cZmMNz=`P}7Sl`4Jꋖ6hi_6	a$4 z@P+ ZbG<'p=}8pTӃ	10;3IYf4:֔_6N,5ps~xP4Umhd(ǙY8ݏ/c<sT0Yr
!OjMR"9fQ;s[`g[I'둤Cuё
&o<by܏8D7Xf i.f 6p!إTɲ\@-pR$~&
sL0;	f'&&	|`N
ssJ0L|?PK,)Ͷ.  1  PK
    D:U            /   org/bouncycastle/pqc/jcajce/provider/dilithium/PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/dilithium/BCDilithiumPrivateKey.classVYwFJ	
[-MڄS=PD$
d$9n}c@@)IN9G$;&!͉,o{h?Mhn&	ά/'$4;Jh_2Ի&!vư>4T ]$@:wU	u±9fy1YK^Ù?sT֚%+8gY{sWhӔcYKP2m!b-bXB~K<O\h#MZ,=D!>aiRϟwrEKTw4id3V#u.uΤ%YRslieGo%aWy67kK^ΣQXFJ^r45M6EYUح+&dvδ6Iv\s.xCw;[c[k3_lPMW˗CTJu¦n{Uvb-gU90ݳSp8vG:lVa)s7*r.:NUH`VZ(.ZO?c)a!bxZhuc0sr+$CqHa/xQq222xI12dB#
w#aa|G߷hw>݄-^;+#篭!|Ú&4?$.9d@}+эЊ߱
Bh>;fC}Rk]Ie,
)k\}>$QRZ0us-3="	^D)Gr=SUMhP&V!vQ>!q 1-UzB8cLv8=$P.]bRюUfd)3ЅUpLy0uPs)p!VBy!

.
b^%m>o%+G}jZro%6ir
8C$x
KNQB&\!=MJb	$0[]"i"lU`#Ȳ+CDr=@)\珐`!UOdW46,$Bt$!3sh,㻅O>T=ADD6lXh%4*Cދ8d_y!.\}ޫҽ4h.%|]"OVR@v+-AƇi-JTC1Hc?ڍk!BGHns",J;#(:0*Be 	um0ܨaw[P2>~lcdo)޻[s>Xėx_PK.  
  PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/dilithium/BCDilithiumPublicKey.classVYSV@Vp!K6ƦiR҂IEF,-$_:bc@)c|gH?[֊vT_ΗKͩ	ʄ)HefhCۤkκVSh`!ٵrKpN8RΨ[`஖UřwWuM!EX3:wuʋs>RW=fYfeWT:z$:$rP̢Zh1mZN4
%"huUZ
Cqs,yby%a\\L977FQfݵ Qu@a&\AyW(YIYF R+lZ%ypʖmGWen7t6rt'YT7Y
T,ݖӖX3Ԃidh\7cZtFOJn>i^VxYQeָ͠3dOZVT'Q,'t#*\͞c~ŷjxE:lҸDx}f->L$n	-C	#c+ %O@Z@7aF*T7G\I6
1_MGi_3JD0u<[2Mlo<?wȒGdtB/ۑwyNWXT"U!ޛãKg~KhEOtz*Z$ .!A§ cJB7K	 ':
.bVI6j,x⥈GxoE♈/EaYİw"FQ 'VD|D|%Owo
NdM,qݥXKs/pUWU]m"×!{iУ.NsZ1CҦ5ho[p$D`0.	utWҙ=sXhI>
wQ=XM~p>ULyTid4k۾N\t15]b;atrF/a|f<!_=VյX:|LApv4uct%'	EOg-~h|IȆ$ȲI؅ztPKSw[  A  PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi.classViWFqٜRhV
4mRƐMɑd_+;-tڟmx؆ZhܹތF˯ -nF>?C
14Bˆ\tCw3n{y`i>;*nS}7;L#U#LRc^,
BKI&5#Хq5CG[4UZeOm'tdvL0xuK1Aкc-K~{zx;9b5g
Ռi:(J:t;hzPMpuWI+nքb"SKԺC)XDL[SSd#$,&ۜ:E!zE+E+{˹xPǹLYޯ|>>w״2ԌNBQiJ>*r1ĸ`r}!M.GRvDyć5#vUeWeuʋr342li?m"R	yPx>451^Qm܎Y؞8nsqsq>w88C2L\	.LL._UU8} l<yEaCZ}vQ>]/<gls\344tRѺir"JK!=7_%K0!T/ᢸyۃ^\-ɃxpbN=G =bQKoSQD$JǦ\6D)/EIlIir(>ELc &!%0Ql!ķJn w]GQ亸vO)Л>}8մ`*^'Ռ{+hȻCp^w0_~
'LGMO0ᅷ1@,vYBS{)B& 6r9q1M֊fI?B?Y̋Je9_QCAQnqF΍tE9?W$'xk0OO~9$^^qq^`BP\@3oݼsFu,Վ{!d5Hd۔C┨	
m3I"OW	@)ߣNE-8$`PKީ    PK  C:U            Q   org/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyPairGeneratorSpi.classWWWaP.*E[-D1*nJ!Ѹ4v0
Cg&(vۺݫ(97GCH\޻w{zB.Bl_YuHBanQ&>5)j6-2=#q#)AS0k|qT3ƫnj7jhČfGakkLM!lJ=vz8mXh3HtX.ݐ'lcde,1xcSҴBa↾B²nW[Z4o,#Yv$cD'u#9F!6b5%LӠ34>hF+uWO:.S+*9z12(	״-ӵGK(?fGDT5ǵnݘLlS.NCȰ{Mpqm<NǼhp\rOMDh-`8Ry	NdvONlݺ֭Ԏt3=lM,ILf,\[͒r)aO M$lCfYjLONzf=ǟOP)S؍c';9z
zƢcTLnY2Q!ce22VxHF*>+eQ-c52JX+fpBW ɾ)o8wMsB퉬yOΛSmv_[Y$W9Y3;6OeTV_Cw̉x}eN\`&.G|FOsr+umn]dQX݌ʌggMNldLm~cféT+!klv7Y$`<|9YQU,B
hSQ*֡]S`bal!ֆXbm!`{p@&Tq/(EXBQ1XPWQ'TlQsyE:Dg0TeTba2ǋ.X!pBA-VP^cx]A=+
x&xMxFA o*hfE3exNA^TЊ
xE@}
b<o@>BWe-	~>hD~ͤRZb(F**a$ |ȧP+7p?9_ ^#)O2pY~Lt"ODE rUDy<`{?:7B^F0è|>+ė+ >O⫛WE$a&[az:%LWӘGBߟ^Do Q]B;2+i.:RPwla%,\?dO׃\=4~7mJ{i
Ja%'ĮLW8_0!ޏoz>E!9|,$y$	;%!y#DHPKG9XM  v  PK  C:U            F   org/bouncycastle/pqc/jcajce/provider/dilithium/SignatureSpi$Base.classPMK1k]o^K.*ER(xЦl7k-TPė[&3dnoкЅәX50JNr:}c'Tp>W|\ں&"w<9t57?j'fR$Ik:SO@	_Y5*5kTf(Fð{<8E,	HtfDC%?һ\8a1ڍ:B4;wb8d
PK+Д    PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/dilithium/SignatureSpi.classVWW¢* 
U tkUTTԦFP.kX͟_З>T8Sۗ>?C{:$Ӓ{|ݙs~5T88.qYBkjtQB,5"*rR/2%fLoQhm7-c(ފQY'幊'G%79ں#H#Q2%tc
ӭضx(!|V%,EJYy!%=Uܥ8/	چzhUJͮx˚YRӅ>R_]8g }+cxU5gnheHqD0}H},ebU]sPuj{5jI)_j5Qاtҏ5hQ7')ʮZ'-̞б6p"lb16\,
g,lCCx_h.iֵlw:uzV	%=z0KmsʹޚI;(GrMT溢dbא~n7%jmoń2e8'㼌Aȸ 㢌!2F$xq$w5/DUd?\_h~jT*R"wooﴍoBWKVk@ˡ<R%B*a0;70fS=8Nux3,-
ݣF 6{P+on;ŴP]hS0b
>E\)$xԩ@`wQpYgp_i<`%f;pX̱O
fE	|g	\R	bM|-,xE&)| Rzc*3vOogDət2WhU4}mVheA"NDZ¥QTҝQR9HhvG}im\YL}Cf#Sqz7L͎oͣZ/m]۸ۂ$YZ:$*PYHrpxۄlφAܧ &1Aī?pcm%^BK!6؍PeLʸ-ង4W_݄hvwrv2x`'( ~/<!oαS]ocbF-}$w^B;g2͢}ɇ|:$CSdQ+'۸Ӳa{apݘJW^lR[:EǿPK)fE  b  PK
    D:U            ,   org/bouncycastle/pqc/jcajce/provider/falcon/PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPrivateKey.classVYSV&G	daki$,!ى$ݮe"d$niI: tkTJ1X\;=/਀h{TGIZPӣ{:#P-S0JNa6c r8s1mE@ߟe*aY-R
8ݵuWOh Fl+32 y^sy2jȼDaSZ|egq~t\f3l!HCzެjv2cs)CW #Y$P6/-e薒~jYW)<Kٜt)AE[-̜W
83Eu;*ܵ["=uEekh
s+J({7ZnvIUT{%ZʜW_	y=<`sx|>/\(
sefU 
\T٢)I.1UsJpEȬm-i;0XJv
ExJ|e߶
&.:uf̘¼hHWD"D"⼈"^񚈋""EDE\"oh䕤v+(&9:9f^i4DGb>-nMM}TBN0҃ 2b@ΐ̆o@9QARzy]%'(: wLy͇O/ ]VY/Yɐhi=﨟|(?8<dN1+
2"Q	.NZF3-QQU2d´Vh-NbVYܓqe4:C%ż|$).t.L	7 A⡄0$Ò0%R\,JFFA4jrgTxv_tpeoz `h5H
U'Q[Kk!NNRlcgp~?3C+!:~UI@!'`[j}=0xKJj/cj-7~Ec|C?lK~*<'*&ܧ:M@Xݚg'1(*OAT<bG!bqge}9:j ̈cO6[:FE~wvNMms{2b_nވ>zr`.>Cm:O.m][C&ف }6HM-!
< PK  
  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPublicKey.classVRV]ǀBN W$mF0!	)4$$0rdH2@x3-aСNd0cskG_AҌVxoʗ	ؔh
Ctİ	M%ܛ{3D;f-sORq-kbq44Ru=yf0\
^;7쒗uΠduoڄ3ȴ4;g(ZLN34,)E<hXm{T5X喈al0\-Zguw,RV-yTnU(oJ[Yu;oS2E+SaRj;YupZIg*wuH_5¦jNjpޕ{V]%}$z3L65vJ9<?Ki<aQ\\FO"{N9I|Aݨ9;/Qke޴cpsL*ZjBa	7%ܒp[>pG§>pWB\B>'r=xܬT^q%ޛw|5^+uW͐}ʒxm'#vCYub>Ї8?T
:i)=<yv'9;lYncBA3	.U4).D7
bÔ~L++2j^xBxWBX{_x-w2Fe,񭌧X17B|M/׭"=bKKfM@OD(v2ͷi ~\fIiut{l$A%x&E:0HA;BH:#<=ann23wb't%06̾`؇Ӱ훊H4&z`:Dq3!bjvT	Be?"6aav:c7MH./G$uHG]B\~oN<q!IuZr2,\Y~w.ѷܱrHY'Fdb=dO PKD{Y  
  PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi.classVYWF&ƀBp]1	!\I69W;-tyOC;^
'>;#o^4yE^q9s`+ߊ)b<
ݝbY7
ҽ*nw
'iYj;7*nn|`Q,K3v:5#ڜfhjVȓ	]eh+-#*yњN`h޵̓H¶м5^@Kµ7ф8
gшaM
Ut'8zP,-p}OI)n+3GfЊ9iB1rVliU\[7⑤lԤiyH)	}v\<&*٬M!kE\(>ţՅhl3cÏ+qM;.oICM&4Yq9[L讞j}Ց	'Ʈ r,@",>S=U-L9	94W2j)ʟ6UzVUiȑlnPb0}uEx]3_w8rrq!#w89C20?Xq&BtU_-Z@\lQ+cF䜏^dpa˹vzSv	_9D%VٔB@sWeƯFO\|\nfb^3Wp1GHV^zpM$1fl·.|$F؇,fч[X-|x&Dư)}0ulK|%a[&"$F<ͧq1z$LA0	a|.!/$Df	!Lt
C/昫K&^#$N=moiN=?_ ~t`u9h?c<	OR+8fpt|`Y)7>`:3hP- 
a4r<xcbiVf?F̑JfQ]Q5."qέ鴣k:?Nc<;g#+a:!mDhy^;z
~OY6֎[F*7QslobvQ-)O1H&6:H5৳),R')ߣNE58"`PK/!    PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyPairGeneratorSpi.classVWW(PV)jC
eEƥgLdbwݗsZ!ڜS/SOO{YH&AHe}ohUpZ%xM'$Tua^	~ԣ
XYcaVذ3ZHFɌڶHXf5bS#a0s$ȄZ3v4".o4Z$N47b"q'͎j/&o4TȰ&;(ԙ`%l&5YaifDYN'`Qб
+Lބa1Z6$#4)`sx< Oe!%ɍA0H8ㇵڹ91G4)];&T̉{S6>#6y}	2{Y(qֈ]Ĉӳw9O+Q+
;g>狭-Iе	vtҠsG2_	dC_t1CBˢtĆ8u$ޏ'3w8Uº"ZZWAJ˴'\5Nt(z}Z*Й3&g{ZX+ch^x\Fd<!+IOf[d4KX;Txo ]jCfz"@Y"%v^w-P\"6
U^-/Ys
Ig7zgwF'	z%W(>f̿J^)ᲜLSH&46Wӝ@S0[R$OCZZy
^nyC0A."YYB{[?d.^"y*URUqHVPpXE
Ujp*D2OXZW'T㤊9T)!<b9QQǡrx栩؆j`Q9q`pWc *hCT.,/pxQA;Ё 7ك8G^teA7qCBA?&rtQL)(`jЉ^oپ!j1mdXO;~)R슖,Zʻhx	
z)})t|i\yqӇ.ex>Rh{x^yT0n[I+4wEOM63ҷC)`ޮ{gI{7Q7Ze\iN˦gJm}`j}"on򾾃oo(uԭʄ.]F</k||2~<:h--I\Oa_9kI|P້4WH.O!@)W\oR.घyC̼I	PKuX  
  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/falcon/SignatureSpi$Base.classOK0Ɵuj yea*PKa1fKMMa?%-ɋ&<y7w #2xᔡ{s]1b!S+9?CY&g&Tpex$uQ 2ir~Z\Y_TTRfg~
$ʪE.S ~ ]O:`ͱ(Dk~3lbfd8:'r	>YvU{(zwK/&H;Cf&_PK,
    PK  C:U            >   org/bouncycastle/pqc/jcajce/provider/falcon/SignatureSpi.classV[WWB&AD:J xCdrafLA_ЮaVm_ԇvu!<sη3?W WPH#E	'BI*CGEr⹄0i\<7
phuˤRٕ+̂a{]mCpLSH(X}pוZ`)lflʶm9K Ur瀞0CknaHAE#/Q5mSS
KMV\18ZRnu!5}5 uK6I䰇,	nEMZȓ@3AslOCpr
j*zEJnQS]KMpj/uS]}y*Do^G~c<ɹ=#tmMcmy&S~cl҅Qe$_\н׊C:Jtca'([#J,\
Zq-j1,H-֌~	bRIcyFj0/}PG7G:RgdqV912>1"cTƘ2%DJJ]})sȆLC]~7
wI7l羸]V7jAIyB]|ۇIJwUܚ]؊cAı=دs)89q| 
ѡ`$
>GDIDy֥@`
K*AJi,(8{lbb'n%6Q\7lɲyI_Yo4lQc6OټbF1DJz	<
;v׀JڤkL@닚H*GhGfm\o؅%V#HJ[XKlr21_C01&To$>@kPqe73Hx籴
ubӛQA&`%>Ub
?
{"H{\'3,fiBѓxۍۛ%Co2fd\f' U$gbyZn!Ol'x
琉|F^E>:klƵz~
aHdZ53 #r||8["WNʢ۸۶OA{~pݘr<{H	oG-:PK/wU  
  PK
    D:U            +   org/bouncycastle/pqc/jcajce/provider/frodo/PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/frodo/BCFrodoPrivateKey.classVmWG~&@6EE֐XAI6^4ڗa3d7nW99cGbєޙ/읝8c^HƗK)T*4Cif;o3\ΝA1G^dP9r.7D//:zX͋[ׄ1uwʨhإy^ڊ+6n{3aErŬ8ayr=n!
^(||+#آɬrw5M;&w:M[,<1D3mȶ6('c+^#F(Wm8ZE6UQu=;.d*W0b;+2AU^QܵFC_hoNzAvD=#oS۫>zlgrg;TxAZ2pkMR*pCA>{w(;NXf*P(]>;58JEaN!qcJ]r's΁Bh
W
N*x_
N)+QPTpZ
0e[tn~4'	fog_{^&jѡ}l ftoCB0I&_9oG]i#5W[Lؽ[Pun
>VKcU6xs+ߢi[k8
0AǬ:5Jq@0n(>BFkxY
0aaA4m
}K{])>SqJEܗkx ŲB$)B^T\ŪJ(0TKp{;mWċZ>9x6_.
'K` FFpO%4*Q#[7I~OCQMH>|Ϗt8Yjáw_"Ga&[XN0IT2:7#+/KMxamtlICEc4 0ƽo7{qiq=K	jE=g,y˰3TQ
B}AM[f{iD Ccoh 9B}IHɐ~!=ŗ8Os[p^yMQ$i}$"K&lj|CPK#W  `  PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/frodo/BCFrodoPublicKey.classVYSV@6,mF0f@kbRvY2LkE@x3)aСQ-	L=s%D-hehH}И]`hJNx4[ajڶC"M3F--+
C</
Bsk"mI{Vxp½e[wfTx/
%/q#on rԬR"'VMZQn"hk+\a/sg}"Q|秶4Qrud:
OfnV)oJyu3gQe3[r@NLTTCTΫkAhq
rP'2PcQTͮ\KyG
PMˣ9Um|jGLs͵l*k6;4e3/h	U7)ׄ$8|Eɶ6R'&p4k:AuX6oR]uyaX"j[^R9HM>L"ẄnJ%S	I-s	_H#!!WBRBJBq9)3\Od{)'ύ#$z3'<_Mz+'ݐ̓Dm_?y;pgK:~pzgRzԞ>BVǝJ"߂}ϙC:Qcc[TЌFmhU4)FTAVЏt!3
>3Wp
.[cX1X<*^xeO$c#QcpY&˞A8dL'bnMZ]FWEkgy_3n!CMzFE0_i^3fIiut;'S@=xf4u0`Я9Dwh%ڃCGxgo;ohjN_Ocl6.`؃ݰ'廊H=4&U䁁GnCp턥R~<{2];B2=
6+ku\G\1*B\q`oNdB\{kp:BM4vHW'e=&P8v4QB>~L]2JPKGDb  
  PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/frodo/FrodoCipherSpi$Base.classJ@ƿnV| Ad\EA/ӱRgLIPbڃ`B%!_H> c6A+6]2-i%ւ{%;
Y'뺰T/oR5º?ȍo^%$ήuawRkOnWF"pp-LiS\.V	lǘ"a{!9!3$({q^#EG!0OR{Bq@yL廘PKI   h  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/frodo/FrodoCipherSpi.classX	xז5+yJb8s@mT96V"j	^mmZJZz]zhKK]ݲ߾y7y3} S92hA2Dq2q[d22vHXz Ǉj$%M
jfZDHN]BeE/j^vQ7!U5_\7̗
Y]եό1sn_yp^ݪ'@*L&30j	M{&۵IDczr	˺cͰMڡcքa$ё3]	uh Ԭ[Ýۡ/lmH4{|x,RC(@&Vgjx()ұz4@*TCBu$Gh:}(9~FU六j)Hӵsbǫ5+l.gpfGk![`N>m&f17H)JKP5&k-fǎ_-7ɨe|5W2
5bbs5]3HL%WkfKPzzIIkOXM2U=¡Bf۝)67c)+ZR*wPt<{O/lcR@ǵ~5i5ײc36?gCSNtMㆦT"TFCN"lt,
/fRlQ:*?KN,	.[pqY<OfiYr
%ȞP[#=
oYd]vXvWGJ.5꜃DNƜf'(eOu%U,.
PJoZദ2;RXYմ9q]VSޮ
֨SK"س5=}Mu7awlIPDMq-	kƎXDKmc0˓B8buMmfgQ]i
=̭SIX%>Ց)!	%"궈f~M"R",Ya&:V1%d];QVQgE9K1*RW
BqhwnVaq]jJ+LX܊ԑd	t:D0P~:$6#S[jyZWL+^7A~T^rB΍ɏ@bh	d"	wڹ=v
f	!T`:($p&'pEoxDV~6qA] !07
q3^:$wMGuqZ)bCqGxzHYoDA~nrn\~=Q4{Kn;?.WS1`wXb\Xق7*|)Wmds/ʣА~r/a9O;o)@IvJsRw\MV.	I-ۙ$Qe|9gxnm\gӀE SI߹§=)M0Of8IΔ'2e4
ބ*0*RVp9>lU,g
¤j&qV&g¯d2Ĥ
t
z,ǘ<$>34?|>˰_*<,(aTS
:q@i^|d2ǘ|ɋ+W{^\{q
g_xq-ŏ»Yxer#coLnߍzq;W<E˄ė|O?b+/ϼ?Nי|wx?~ո|LV[L't_rng鞶پVMnӃ mF >UpNX-%RfX-RX-uQQ!-^=+-#xz? -$DtY4b	5}cjioÿ&Kgm<0jOCtud<r4{":hVbc+3s!o"ϙ;FTZZ3B>81gGs0jzɐ?Ks&T
4XlIjVEJ?
wrX&
R0j.k/]orj*zVnc)p>N#V:wK1eu}1j
Pw?O`w&"lCɖC#Fhk{܇ƖCg/»13qcxuQ<&>bG0,L>?'9lQ'x=679=XlԞ-ڟv_(ƒ;B6y4g ͦ	BTNC
Sʦ1IzJ	\I'h̞JdwX1n»,#.-b> ^"z=z@KèBАQI(g] aLV].i~%Y/!v[mP~_T߅q.(Ÿ4/[7cR&VMLϲ_MQn
oGч0OWU<A9s2q^~q@w/JċjG%s]bw&{-Zփ
!Wer1.A_Jc*lK{Q}2nnvJ
*g4RRy/	,ԡ$PKj
    PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/frodo/FrodoKeyFactorySpi.classVYWFB@P&Im(eminBH$_+苝s'opBYo3;1E^\͋v?GxlE[1ei'ƞa}{Zϱ4UUMcκ,˴]-^qf,F=7&Ų4#Х	4CW[4uJN*C{I.hQa,lp%CmG2mm&\{M* pP͸F[h2o8bd֮;afikJZuS_9T5KVK^J*pҕ]MuOE1֍D$'П8u7#i%i;b譑*kBaVdµr:r.Q.Dch _<3턼m5*d1Fply2zTG.&<;&\{H˱T>([|Pc*&[)/rՓrke4?mƅRqC57HtVBo`^KXm뚅2q.=8r19FŪ6\X]ZJ[|*!su
%|<s%o6TɵpC*P"<&4d:wh]ir$J$7HMapQ|C/C>f|ŬЍh^4Љ,p+>O|xD+bC86%&.M|)$LbKPȃT#.F'P%<E\BK	Q(n#o(-[suoIé
S-:g7ď,!Ms?\|,Ob'1>F_w6f"n'qm^@!lQiw8!ߑP!zcHHjH#)<T5&gܼNV脏B;³x6cFc'e}\ɲ~ܪ72X7Ќ۷a{KE#ĵgHZAb0ٔCQIzڋ~~ !}/=zTԂ#|P
PK=I    PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/frodo/FrodoKeyGeneratorSpi.classVkWG~$,KUT,%VC7
Uj4]6C\쮛
^~H=S~O鏨}g77Lwf3̾ tv`CB{±3"3b.Fh0,Ûp]3l+j^PtxbtkϵKp+gX&D_䤓<e#WK覙^.˱\%|5P45#(ƴ]{_\hW5W-W]cGWkNZV1lh[jjVN7M̴'pl	*{ܵjTj{^$h%uL#[wBEȶ%ǳUBWvӎ!w9oa`@$֭F+ziɳ
0z6y)**:u*Aݜf-k{qܧ=v8"6tmCul-jqvyrkm%^JXcݵ:'d(v^&ZFU9ed[	'h^S~2=T]W+3jVT6-3pC?igg,Ç3%-&?%ax 7/x'(XlpP=װr>k֊xckK5Qm+#k466D~'+%{U8{-hfp+Ut_x
:'
9$L C=	^g?v~Dn*t|^ x{L)#`RaL)@XA=(8!veZq]A/n1XTp˝HaE[BH3B\Bŧ2.!#2FQ<q
x(c_W2Zv
n}\\Fko>w9w5AR$6A %H$X!
(	mG?A\']gz2_|"|Ox9ֆ8zƥП,GZ:]\Ƚ%|v[ lPK@
nV|F;?#'aK$v1ZrbhVvq5K_A>0h-dO$<šddLO[E_9;ȿ8^JbxN2\-H.F¿`//`i\pW0cW.BbIJl_PK^  
  PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/frodo/FrodoKeyPairGeneratorSpi.classVi[W~m0T.*Zb P
!a $q2A(UlCg9͇sy9{ Pl(N0߆6,.lxHBvY>		y
IV $>%9ī@ZӃ5^?tJf:$
Ma2ɣTTW)l$ڐbrݧЇ5äytKLئ
EAtF2I횩
[t1H^$n!S|=LOku2)#B7HӞR]t3חJX֧
j8Z^ݣyMOh@Y[e})N4|2=:mR9CrLDnz$2??ZIZɠH,hւ;)~|!m,184@f,촌&1tփZF
)a$K"=;V	$*Cf|L9Obϔ-l!-ϭij
:DQ/.iHh;m;5yo^HpD
YR)ai
k­qT eĕ8; όD7 6:+8KS%GQ..cU2*dQ)JN2ʨNF:eh%W775ᒒfSBn.J\g܄kӳf*敕&_/I䗐8%)kI.-kɀ;,Ir\]6-iqSx!I2KߘKxXߥ]}۪/OU%N3]7%uH73N6)cũO^^klvsڑ,?`vZt5X
ܡUl*6s"<ab0WxWxW	T(**Th*[R*㐊e𨸏AE/}*6_E)*e3qaO2<}2X!A#8ax9^P(؆^fCͼЂl6ى7TІW
y1`Ro+}B^R»h;п&}ؔIvZ,{nNG\(*%FjbAN"Ɏl%b)K1"ƧQ\9{0^|	'[@l1lqG͘M Y¦bؾrcmc5Zkq`xW)U\=]D]cF|Sl+GE_	7./$携FG$jh\d'PhǁVr%Oq)PDӥr}]ٓX.0NOD8qt1<1^VEp}{\\Ǆ尡 ֖Dq?ǰJp
SՊ8y
Rv0NOIa8>%ɴTxa|)44t+9Lhi>h3PKSp    PK
    D:U            *   org/bouncycastle/pqc/jcajce/provider/gmss/PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey.classUiSV=	UpR$4uc
m&c@Mg#%#KˇKg)4v'u}plR޹.I?8%HpDq	/H8) ApTdFv	[Xq4Lh0<NrmMù;Zцk_y09Xvy5㾍{NjlPľ1J	q.Vr`e0EilڴpnD@M
f҂(Y\e-pԝN?٤J+LwFIVNK@;&,;9h1qՠ	J
8Bn˸#I@MzMU%~+;xaM]"]ږ43ιg{
J9afJFn"EHZ7egde]+:9jEsXݦAIXecd^*ҐcqzaMݫoSԘ7ޑA$h#M)뺶ҶF*y[rJE.6ɱw5rd{!+i=6vQdt{.eWن["aqu-5;<oy1葓˻KC"TDxCě"΋ ⢈D\1"bT_/dJKCiH"{?D#?'@fwވ7Q#ϖxG2g#B}pc9d嘂U0y5t*AWrӃSp+-/"*aG8v
^ƻHv$2bPFL8_#79˘)rcȔ!c|
7Y|ͺ9d"u-hJ|r4}cF+,`I$oy
.TqYKġvVaGb3:_Ǟ}	wD*>_W.%iP?؏n?[~MZ_|v0	|xW{U	TP^u*'ΐV
q|-58;
#"".pID7X;J{5?-FUܭ*w0鞭#|+ș&Z{APKo}  
  PK
    D:U            )   org/bouncycastle/pqc/jcajce/provider/hqc/PK  C:U            >   org/bouncycastle/pqc/jcajce/provider/hqc/BCHQCPrivateKey.classV[WWNL7֐SBF{9Lab2g&hz}⁮UՇ.}fHD(}g&_ .(ڢhgh
|9ch͏IB#͞00-!IvTi^{c.=2`>ˁ*e-]Yٙ0<CczbS*".:vqh!gn!5UZ[YSNz2Bg;HV
-NZ	'SFࢪ,qw)I|H2M[O͌4D3m6H'e^ƣP=f^fYVNON۔EpwnA6uW(Si*Vl'/Q1]kP/=3\}ᜯÖTJ/єWe35MpóJehF2aB7-
i5fV8~cm)2fROmad'ldFWVSUt1yaI](ujAh
+@ig|#g(+H(8༂-3oZ=boObލaZ	 >;6yp^+
Ovi刦*[ 
`#.9ޣM:he|V&{b0nH9Q#?/
ShMk1!f
]R(Z4B(>FJE>`JC/5Čh8HC'0R|
H񕊫kx*łBMp#R7[XT)Tby*"B/c|S;xLk٣_GƳ)^z
DtcM T0@>+YQ(VGQOFmIiiyJfBno5<
3XF[va$7ɪƳohi^I_ѓTu|ҴOQNTGid47
]=w0!`j:VÔAK$s/ҔOi5MhiIdCa`uB@Cy
:tAKՃp+l$vNX3aɎQd)l2OϭvL5q7>AD|
/`<!PKZS  :  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/hqc/BCHQCPublicKey.classV[SFրB$B.mD0$&撐@
-bȒd_/i	Ӈ}b0`a?ԈfxOڧqǔhCtD7u	ឿL1)7!i4r[LФق(3Ă|i%/4wb	Жd K!o]QaFg!/U;f,­dZNY]LB-?m^ {-s4|Qh-,wRropUĦ&nn~,y@afKn/4SSw(*ۭJq}#טA윺B*w~uvM#wi5UERhJ_]gW\T+Xru IM|TVRsk<	U7)U	ٯރEгOUyRrCuAu3m^zEavaiuscJJ&i@a	%ܐpS-	KBm	_JJ	q	=z2ả`ػcnTq%ޓ9dj8׃/5Cu3GfǓ;`^'r:59\#γz>$c׈><eu)ȳ}8Ƕ1<Z]4^AG<r
UI=L*3H+ƔBA;f\Ĝx2^5a2#K2c#2Z#,zGNƈ2xd2eaE8z[zw%eOyky5_1n!DA
"^4W׈i%Z]#YF9k~n0L{r$00o O:<1hLFCہp6}S]j؜(8[6\A:]Auv*u@(ճ+܁!$KyMKZ
ӑfBa,^+.@&ĵ#ԔOAe'5}ښ(!h&BpsZHs5Aq PKf`  
  PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/hqc/HQCCipherSpi$Base.classJ@ƿ5icW^bE ( lqwScy< >8p700?_ 0"f&9RH='X
+hNVMiIV/oRA[pn]ɟmgJ
Wk)jIKPW4n+V3\w|#J` a8<m)y6l:a+C;]ҿ=Cvory#WG}0+{T1Tԧ޾/PKԅV   ^  PK  C:U            ;   org/bouncycastle/pqc/jcajce/provider/hqc/HQCCipherSpi.classX	xז5+yJb8sQۘ Dic+WbJbRYZnz@/܃I6-%-K.{[v훙737#?# (dd̑HF.q%2qcd,Ô]`@@D	=>P#-iVoW
uP35#"@Zߦ'v*,zW	1.溹eLPz.},|G}jLK=՛֓vKۭzd0wj2Mjx<D4/;ۤj<
lI Ii=ӕX[Abz@
Z+J8~=!H6ktJQ Jo"e19^db{F'90"A"AMJh KGZ 	"qM5$TGzvgClP~2-1];3qVLW|xfvme2Ch6dɲ֥d,f)EI`sCq	=S݄5sKq0tojF̰14Zlnkct~qb	JbV/5x	iSG84ClY9f,eEkTJpΚX}϶iCE6mLj#b֯;=;Zvs&[blUqʉ#sДJhIMbוţL-CYGgɱ2!:¥y..!,-+SN[]c
yktd <B-+LQN CI3ѥFsV}]ɘӰ@жtR]-[
T cYf'1W
ˠ["k6:δYj,EԹi4R3~{7lxuO_~SMi=2QSf\zj=R-NnH%o{S.cۼYTWBdsTVOudJ;BB{ֈ5ٮ_ݳi;N^ɬ0@ݳ&T]7ƌʈ"}%M]j$ԺQ-#	wFo	wT%M9pڌŭG	J@@aCT姳YG"n)$2UYfuu3=DCa
'2XrnF~RV@SN sUIν;]6K8k
X/pF$>.x.X "
l
	T-aVR-=BRz.4!+ELN,I!)o9+ۼ5r%@3Ggͽ%J
PvJTŨZ0ϻ[^,1M .(jgV&g\
rj[.	|b]r^l$R6B1Puzj*Xt?/ !B,/rZlEYz'ܚ2<#kpA4zs}/vR^Ya̟?$(=\\4e(hƇ
V`~*Pp	>`'>2|L`!)Xt+x;.&,
Z
vW6,PЍ+ab`򠂳i}FA/bYgs<*X}

NÈF11KL I&<+^\'?*Ћ'ʋkw
~L.»\d{#nbr~ŭ,^؋۸w;	/}&$w[L~ŝ	xq~vG/o L;&u8TkLgja]&?psu[]濪NWUw4Oȶ5jr#h7 q~Psj)A2j)Mj)"
i_AemiShi!$'e҈'oW/QQu,9n«":n"z<>	QK᪓챘΢Y̝9FVTd#p^gD;sPikyOBsO\f}ώè%C:.͙d^R)Є#)%ɊZf+<x4TM:Ga]~(^%>kwմ]9UݥdݴR:(}Ft:D0gaN|cRƱ폢>,LD<˓-QG(-mq^ w]cg
	ydx M$}׽wa4X}>1OrvUã9J,{<mnrn2{ın;&=C
V?Q3X5%Aw)>lhLilWϐYMG)xn{$xME	b"".>E'ϓNј=i-fb:܈X3.b%> ^$zߺ_KCBАQIk(g]} aLV].~i~%YOA7$j/.KuA/ƥ~y	ܘU3zu`z=zn0tgp{Ux;>Ty̿߮s9)㆗Bjܼ~~Td>t %T;*`UKC47k´ TP-}/3pm=~1*U0ʳV./+.GvlS}.;)52KnK=$S^Fx PK
    PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyFactorySpi.classVYWF&ƀ8MjPĐ&pFr$n=
b.I}h{6@Yo3_QE^xE#P`h6"!CНG=ƮaZNjT/UN%h['|`QIbԌnhO4CG[4u%Om&t$vL0tD+b	y2"G[Bָ{˵79фb

҈aMf
Qt;lzP6-puGI+nʳK҄b׫eI,]T,9n#)=Y}y)Kw2VaiL>=UEuLB3֊WQp]|5sD1'5/ǆ'ݸ7͔fTvƈ-P&tGOSRQ]Ֆ	'ƶ r,@"N,>QU)/rrie4?mEZ"ѧϢe4-qg%ٹJ똅hq]{9p9y	ѩW	B\	.,LNT\_q_2ǐ`;=
ɛ
Vr-P9v_W)ZyFl! 'y/GO	8㚉./lZ)>>I>tnbڇTfEͼ7;xûx.D_kư.C0UѬ+|-a"$Fgq1KxUclI	|)!
E4MNד	c.(JE@.}pi~Kv9{˫G^x0~'c]1ë,vYĳ`4BZbCb (uҴ#}0wm TkX./&R}Dg:O*ElFuFt):7ΧӎNHz!;<Yhx~Z|ÐC1:dX;n7QSlcvQ-@1H&:rH5觳1kG)?NE58"n0PKW.H  t  PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyGeneratorSpi.classVVW$*(Z
EPZ@PmJk;La`'$<HˮUH[*OQ9e? Eg-%"]%#]Bq`ԌJhosGuulr\&#yuFnft0᳜xϛ&oʷܤ5	
4sTMrB/i'MM9Cp!8E1ƌƂ%(>wQuԍ,墣obn5oYG5uSMϨF84nU4r):yr-GisS5t9`!Lb]+FuKh=$1{)td_ҨQFkSnM<5sv'LlʙZ^SxB9iNŚi7yYNOwVIڥW`?JyރJ9EO(²kSOs3 sM+{8qjKꨲιs5OQʹA'g3,>C;>`3\f#+3\eaHsERLCBB;tN?2htUput3Cj.<^QrTNHrxZ\jIÑAq>"o|O+9o,yoc<~ॊ=s0^oU'pD le9$qLo

D{Up*EPA M)hDF`
Pd\yL(h䞂Lٌ*h|X 2z^A၌H$y"2l2XeKATTFR=n IA7ĄW.?"٥S[WGq $3 4;#JTCDU~KF%3/Lŭ#@EoI*^Yg$Bgt4F{'Ds{HGmh/q-	<v.RM2{"=:|煡6y PX@
uA
 a>sNr g{dvq+@mzKBk M_Hx.zRMg
{W`cP<<=;R/0s7W|HXe!gfpCk<M" PK&>T  s
  PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyPairGeneratorSpi.classVWSGA^xPb1
(TTƥ1
b.[ڽJhsNM==3$!|ss̼ hův(v,cwqlMG$;6*:SGthGH`f,LbĐfd`p@EeJcFBj!B1	

8yJ|8h¹czdˣ'tז9%5omHBk\K|/-hBIk)
#<NHHYEA1m\sp6[O,j%sF>4?7#jYk?;>dY.%S]A0[FݧFkQ	UssBwG̀{8̭Q+M(=Ft2<b1sY 1Ԉ=Y&72rʜy[wʎك*1JaSGl/Jӵ1D32nЁz<9v~j:EK EIe!RryVpfD[tYEEt+ԣQiEh1v:2c
G c2qu2˸OF&NdlᒱI[f[d4h*a7bfcV{s tz!9$^N⌅HM5P]<e#N}Z^q2[m>z丵q^|/LXV"!K{DO`ӭ©<t13=nSΧ6~3#!StQ[ρ|g9yg"e+*VRE;hA[SQC*pXJwq*%8bTT,*VwQK98UTCS*jb&OpU
}pr8~q8!!! L1NRq'9e]|a^Qͥn ݘP*8I/U(ڋ
BJxW'2B %>VU>Kӏ76dXC.W"(Tq1RH#55O9a#	wJ	|LןSxyM6WR<-'F%NmEP&lSr6\Ƿoy
P%.8Qk02'yv4>0~o^q~!tʸ%~&tRin:*+/C
OqéKX''$^/6ק%$oL$]	|M-'EqIP	>
je~(l83O⍌6h֓x[̜ɚyG̤X=PK9]  
  PK
    D:U            +   org/bouncycastle/pqc/jcajce/provider/kyber/PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/kyber/BCKyberPrivateKey.classVYWF&G(YI&mMІ8҄ncY@I&q89=?w$m 7޹3o 5)Z᎘'gT;fTgRz ܦlBI9=6?#<0C\WsQmژm}W9K@CRcýTbQS]ZNY44g[I;`[[H	ü%Ԓ
F-;ň1q,4YD󴚫Klv:0t2!Zɳ&ERbS#OU-)9w)AE7M̜W81y;\:,{^INͪq
Ma٥TG)ܐkEcUQlڵxCY3eC~:6^=fl\ڏ%F^Lu-v2x0\T٢)I.1Us
зaڶ$;8Td{󝂽C%_)8]defY_dzGufPޏ
9|s«	"d"^qNyxCa"""":E)E[ZK@|+FM":򛴵=DScpKnM;wÍR/}3Њ%V|y{D]RL[s_Xս""PHW8e+@$˪bl*Plwgߵ?lJRnpI%1!Th࢑qVȨ(ezMxS2N`ZF8 Ōf<qd4aVF=?a|Ňc.$\b^B>p	.t.L	7 r$&	$D|	.% %ai	"/!{k3X~'.2uiﱄ@/ Tq?Woc+<i\IHVli$0whfWEmFHt<n-osC'ɪ郞ZDO8o6j/UxdSV63~[1Fa-'gobeɮYOA
;7:CR{F͇/_j>|mT	+ւ'@
d5'+v|SKDsBd7 5ud:n,PKymp"  6
  PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/kyber/BCKyberPublicKey.classVRV]ǀBN Wp!6mM#RBi҂c\IcYY2LEO<$3-aСNd0!&{^{G7x-'Zcmi)HuD,1Yݦ!am=SCf*CԟTE]s+Y"mnZ9}WsKR.zm3flVit%SF"VAeԬh1c%N4OM-"%hu]^)C~K8V<PD9..W^J[Lڮ~,W@aFO*n4WwE:cH8e,ᴪU՗t6j󺏝(hfWˮ%*U뫐|ozgT܂p͵lꥉw4K|yQEMW&ŵ5ia,mrtz,k~m^Avrt5*0j5k$(nH)ᖄ>;>𙄻b$%$Rp7b^qJl xj7_o!'ә}</vE~gCдsM28jmAݺDY߻&N9yOC:vWmRЎV]Btqm
Vs<R"
1#\ǂXTpK
.cN+B<1B|/cOd|U!~2r?2&LBlkB<w$-mqBkFϳȊ˵^~ʳD4
BAsa!W:k<IVHQf<'kG94c*k%0i=Z'`bO[0D bmn";Z`7D\?kBR?ܧN#3^3<w
f r
RC4J>2d^"^{lAVךPjQde4P^G WK\wk8_{'(WEv/<։	r_T{Ée.߇t?PK,WX  
  PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/kyber/KyberCipherSpi$Base.classJ@ƿ5i"xKAQzndc܍I1IP$2KLFl0k]+p^^O6md~SfM0\Ymlux*y!E!tv7ΕK]ʥfX[{v+001LKa2NzJ`7	C)K!x.{"uDF.&{!eH##cb'PKt`   h  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/kyber/KyberCipherSpi.classX	xז:Fq+#lAPۘ Dkic+Wb%91w),-7=AۤGpޥ}qR`fwu~v{fg޼'? ,yee̓DF.qe2qd4蓑1,0 a7ޘ񪡐Oz77:%5#BdoJct	M+&@iEWtQs2_N `v]f>d-<=G%`[
dsywKzx<f$Chj;zT4P,WJXhҰ[b'	_JOw%xeWވU3N\oB{7۽q#2&5^؄O@]_R/	j0;@.12j?fDC(	jzXB=Xz8y@^E(PL.uQ|dO#I#6BhzDΊը5^%;`0r9+glMfԭX2d<,f)AI`qq	50Z%q	svn7sA-dh~M"`TeMr"1JBVM1qY9RA@O$U=ġ7!N{~
	;(8kJ{O/ǸF>*jjO
izk;_ӏT0^gRNr&r3Zn,*\>+LT$
/5gQ$9 %t,
a#L)kfd筋S̞roEd]+
,2FɘC
 g<{	;JScaYU:KT+;R[֘'czf%1W
ӡfK"㽚Jβj$s95ujS,΍].o1K顑HF:fԌHHKl#0gҰ3Ău͸fgA]iI#s[f0K|.!"!ukHZ[ EBZMG4͔LtYE4fάn8nĆ#TlN5Oߪ#P7\S6usN#=CMhҫT253|HXTd
:B[z:$4#Sқ5{JWɐyG w(A"CJJi	?!d;ބ,ИH_Δ}CWZ3%lrl8O`@P`lx@	C\"h["[C@L .p=jz
UTzz
ԢK9Mzb8D38cD8DVsAS1;̱iCA]SOeBԗw"k,T͛ݭ,墶.,F6ZΡMn2d#QcHΏ]J".$撩('5Jչ[ꌪĪBYH_퉑!0XUٟ)%<#֖l0b۸~Ec>;ٌAJT'2e4
ނ)0*VQp9>LWdu
Ƥ&q&ã
lc2¤tc
$,Ǚ<|{VЃ|FY,>ǽ
V`30 qbBA7&cS0U{E&_b4LceS.\p5~5xSL~µܻ?a+&wa`Lcɍ{nfr+~m,ȅ۹wIj=&$w'L~]1_p7~=vo\x?[L[&8PL`*f&?WstpȔN7Yw4Z5O9?W9a fKa&fKcJGFzu/<4=4[3i
S;kz'gw8B82OQoսS9^e6of'L5aZIϙcͲ	~۞;Fz'4?gڧݎIs0QT#lM37hєْhFOJ
`r*X*
mR(jc/{{z*玬)zP204NF8Pp'%ٶ<^wT1Fq|cK#v!ts~Ԓ|A>{CCs~3]ǄT9Gqv]xuA<F>a(MJun1MsY~URwXVYWYi$wݣw䛠L_Vk(9mqSA.>K(14R:@Q
J\+.@+B;E(E|pu[4!sIH&[bl3;	6źLsI[%°ڽ-{h=j34N
!<}/KʸZgD8m{z	Rpx*JA:	~'$Xf8<#<LJ~#&y)ܔUұzm:oz5Fv`X@
3*E7_+^~Worr>o2q]X|;{ƥ	IRNRrNJ5W@dH<TkNĤiGZ~y
rG&0ru+=b\*c݌n%_,P@Wt"P}.;j})RsRy	,ԡ$oPKcޅ
  *  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi.classV[WFր&\B
MƀB0Ij@)ƐM6#/zN9'/؆b|3J ypՃv:8|~&9CϿfhmŐ0gtCw0m	<0ZNit?Ý
NRhƈ'n4RK0q+f5#ڼfhhk;I]e(E-%*]Eպvd`h۵pBи=^;xMhO\s"IŶ$ӈa+
Q:t;dzPvMpmO(nڤbRkM]T:ni=,Դ;Yy(I=F+
ySHG_nNQӢgUE6 ab$:U)AG{w̴fUvƘQ%uGPQQj˥Scdcir9.T#N=>S=USѩ.rѓrkTg42mL]K.L"C2Ym7C
k`x|	o8fqrtr1q}9pqsp}S\ݾzJ[z]B1F| lB-jC_TPk]pF0U>u>uQˑ(<ޠ {ڰ0JKD8#CQ	Ey}"zЋ[bsB7E>!>B,yq^OxτJ)a[	bK/J%LCPx.ħq{$<*)bB\B_H@b I"tӻBȶe%.^ 4ON--4ꤖQ2/?gW=,<8
+89 9n<j!!^~>	@)tG&ǻ`L =ױV"uP"5KeT:\EFtz:7/ӉnD&j$:#vrЎ!1YʋSu\Ͳqj2TЂ۷a{%Em`3" 1j#Y	Uvg8ݥ8WN9.l2=zTԃ|PPKT\    PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyGeneratorSpi.classVRF,(	@IHq41 SRHp
CR67F $E	Atm)OQMJ 00gwΞ[uEPpsqTB$8*5b!2a	ja[Qٜخd\s%4za	n	>͉'IF|K:\PO3Wӽ$].$nL|5'35?*#Xcخ-ik\p5W[R Zλz	LCu,aX5Ԭ:i<IOйDZXʥ(Wh5_3A˫ֺf2Tˤ]lw<[%t:n1$:TĊ4(i<(r޲z?صq0yzUrN/nF]s׵g8RN6FŊ輂 ÌfǊ]}v*u^ʃYu5]uZJ<=yy3/v\{Ha`>zwm'0tcXw_{gjy:e5f5:^9kղ_ZQ31gp(%>b11N4$ń?'$GHH]BͱΙ1Ozae}.V7f+ݘKKʩT6^6 wĎ8_Q}kPdS\BMOI`

Q}E}qTWH_"u$_#^ y՚P'
ðaiDDA 2jSЄOʈ 
គqA(hƤMٴ!9A
2/WɸL_CR|!_(6|)&72p7H 䞝W\.H
wX_՜ڒq =)Q %G
H*DUXF=Ƌ o'(|3C@:!o'DSkoKoeb	$x$[M5
l[.)?.@)(?A/<&la E˥M6­z~UA
	iR+l;x ~M&vp\NG{ug`-L\z[5!<Q,2`d`p
Ío4IPKެ  
  PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyPairGeneratorSpi.classVWWPTHm!TЈԸ44$LP^n.mj*
Jzzz#	I(99{{{߽o_;u)\$=$IyHBISjRg˰$HGHbF&F$dF	CFİ4ctj&B#A&H<5iE$Tf:5K%($~bPƋxW0e"l>"NL-lW~iw`7
}KeZ
k=6BZ
n30g\)Xf$D攬;6Gh:1P=}dV]Pk,QR
q{4gP1.\5
h/3?R^_ AMOw6nؔޡ؎7j]xD5	^9Qo=G'Lgz+sI-|bV~#dڎŮ	zڊ¶W7|B	ͤ>$o.Eiy8o4ici*ҫk:MhI78GBaLv+E~~DکlR˫[JX2jV<SeS+*R܉'
˧ԆJ鲧ǢmLl
YX(c{e,DF2VxP[F2VɨZWsFvl$iOq̄+D4m6d7]$(´z~&	{yUqOkc͖׹'5jl|f?\Π͉8f5	ukNcDQbn6w^]*fML96!?Lr72='/7o*;(U*btP𰊥د>e3<
nw]RQ*62ࠊ*VQqDUQPGSqpL]xBl2h]3*}?Y31D1e؍Cp~X6gg8`3RЈS^exMAol
6Vis+h
|xCA+ogxQ!(؃r4`/^*vax>}nz*O`zqVM?NZWؠ<&@1JQH#QTTH\	!ZyPړDk0g
5sׄ=ux<Ov.`+OnetQ$t"X9_;D=q%7qؑCA.o0~"WPDS0FӪa|ruMJoleij-IE"z*<U:^pQ**iZC)	ٹX.A-6#;2]{iv;;JgiJ$ڂu	W9k>řʜN&Ru\%
}o
GBn!9%,$dI>$
[c_PK,iʳ    PK
    D:U            )   org/bouncycastle/pqc/jcajce/provider/lms/PK  C:U            >   org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPrivateKey.classVWW
 ېPB@$DhCg&H쮵jb~s98K	ɐD8eft*<S*tVD^tmzΦc=W$Tx	L+.K<OĭS$
G52;.LT1\M3],ˈO-nJ,>3#>eI	[|uk4,	
*Z-iADƸիǒ>5+VP<ВQNt84fAV>y	5ִXBY@a%r:!>E
h7G,$b7̩ !1	lIpx`^)+LHh[fLVĢP
,tfCIK:-ޝW	:1=bQ4mY&Ҕ?_#JϸK|^:F?AhLf4_\cktSW5fdRVүϚH-nYRClLJ;;$˴.v0iPnHd#gUpZc$xQ?,e$QnXcjk,#F(zqQbq.<`:w[It-;yqb1sNm͵0WWQ2xVs2<2:dxedqP!e KGCۮ72t(­n*Z
ZvyBex<.V(M[*.Bn
0Ob+`F9YGĬڠ@)n<`	p2?R"*&|*:=#H=$Kn&V#e?ff.fĵ[%<M˪h1b'*U	Y^ATThEV-Qqݸ .؆Uc\E++b]x]E#PV0& 	$ ~L)8A
2 1*AD	Vpb^!1Af1AGcm i^XcLOYɽXKhm&R{e@.qBw!W!H"֑@ZHVŻğ'I	%|~Cnq2^2>_vNEu"9gӻ/ڇ7_qwQ'v+.[3uώ{sG(΁<4aI@5b@z0qf">[73H
!wҶ
c wlUH=r%_,!f4=JHeNzG~
a;2]P!Z F~\TE~?PHapo<J.E-U!\ a+){P
ec
=9xkHt\y?X(JyciuJY|~o˸XWfvcԱnsQKoyZ;ōPKه8  Z
  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPublicKey.classU[WUN0K[
*Ր@^(`R	`Sh[=La$&,P]J}rO⃺d.2\}9O?RjH_HCCdiBn*4lq,=6MT^0wz[M#+M<]^	Ý+/[ADafhˈ^Ggf=vcbwQHIgPi9Y0Ȑ[ZLNBCTQt;<O$!Z&I!$oxVCZ'CGopݴC].0tV#Ke7RLAlݧ)-^qJ36Z.dqmQ7Z(|tflZBu^ n8E֭|IN 
\
D_qkZ{k;T1
Rԅ3n(n,/:D| oR=޻Η-zMUg_ӴcrkF|>uW{
kz_~W)ࢂK
z\VpE{
z\UD)*)g|CaIkMaY%1ݕuYͭѴoK?U(P/'O[̐]xi3O9;1<
"ihMhЍF
-P4`JO4ǴHi8
`	cS*LKTKa<RqR,OUGx>W	;/Ţq,HzmrU[S]nxlg\!a!>&ٍkhC ̖텑$i,40[ȟ&MXڬ"˛=_>[k6Vw0RܳoC~hd4+5UW(Z6dlWId^*-Dм,x3uUj}elԻW?#!7hUbo0c;KIaLZAo\$1$(?nz%#߆UI*$UCytJna% 'KcPz
N,o6I>?BXt-,>hPKچo  )
  PK  C:U            9   org/bouncycastle/pqc/jcajce/provider/lms/DigestUtil.classSV@CK QDr))[." RJ0Ҧ,O_x@@ą7\$*7Zٳϙ}99<!qBP3cHh'QÌToOz)d+^2v%9wYe4HPc5;kKKP]AP짓e櫢;"%b>_2{-OwyQ[KM%kYYYZ6l7Z7.ulߢECgiRrF@v
2l}M׊e(ZN*iu*gs,;}Eb]e*`p D/]G[A|n~EWumQgRVb-|\ʾ:~M%`iky@g48'ༀ.
`K]ߗAx3A/x3L]jv>'rnq(ВYr0_-8R/4JhpCD$D!HȡJe\>EB=sIRB-z8V}npp36܎Qt0aÝ(dp![;NժKZ~N0m;f/TJZ)o#T$Rv+*0I"Pboa<yINv0'M&T|*2
RvF?$`ra'H-< d{majzɌL`Tpn`q/0h{g۸__Iy[x#WKPKdg1    PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi.classV[WUtkA-P	ښD@jmS
ÐtfVkZV_I>FHL֜;{sfLG7uCvc̍q9꽾G
^fѻS6ວsNh\J"
mA34KquKOQQ!Onu(vt$-/ڰÎ;J;Zв\zµ;9b
ֈaM
QZt;hzP<-оY7ŵCUK8iЊ9i\1brkr*]TTq,݈z|[s[SE#mqֳ\8zdPg:)eE rqr}).D|296ScZ1yLjZUl'Ɋm8er_w%WSmphrm!-.G+daŮ쪚̔Nyvz_|-æ,GmEZ&oˡJ3Mf.mIv%v|Q$=<0tH(>IN&&s6ĳ}=oqqw8rqq9py}'.@k{B\oНj|[D%Q9Řs>q3)皿8՛*\
|qoj$,@\92)z?#P	-@lNEW
EF|\ٺ݃Y.|Z)><tIG9F0/dc1Z'\ǒhtŃ{Љt#"
5JĦ0GעQ$Ls	B $X4O$p1bpؑėBJBh0}^{n8$6D٣ೠ}
qiԾY+ơ,_ ~55/@`'\GW+^ oWOdl$S,v3ggoc4`/
=81@޻Q/M98xIBiVVĊaXR]R5.bqO|ZYO$%	5AOYǤ
	-k'NKq9ځpFP@#o8ö
cĵgHyZ~b0mk8uԀg*΂k'FYsSGjpH?PKd    PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/lms/LMSKeyPairGeneratorSpi.classWWG-$YbTBUDE406ږ.&.(}kT_[->o?c{gBsr{73wf
 [c%**Rv	ކ*tCwR3 x fF|#ICTˎr_E',:mnZ~	 :qӽH#CMŁsa܈:
n6'nJX6!%Aրm9xj4)HHT?vk&?$2G.AyJWGBra\R}QՈQQfdr3z ~#KDi_1Eh$F83 5ِ@M#jakLmm6ZZHѝnkzB֣ǸDDF8*)]a-T	ѹ;J$Y\ڊ$Tj8x %o-,bE^;^xIsxi.7y\)DbΨ6q36rӁʷ
Ch녦?HFV[$8xZJ.qі/Fƹf1^E,sUut+Uj|ϯC%AfX0#2cxqz62<$&
MfIXȮՙ'
f@2Z|ݡ`ˀCB(#	7/" @X|*7	S
,!{J!aGw9{3Gd*Es־3$T/h +Nb\;s9]/E\a*o):xKb֬*xLA++X#
Ymk7\B<SEePTaDM
qBcńax]q!N
qB.l!&e)ndk2^!NĴ"cSB1$pfvB|+F@N_⩯*d~5~Dr̍2='ZD;G]i$V#	kxq	|6Yk,_!~TXq<[Cr<vxfچS,~xO4v6`"ϣ7<oMoNY~Ke,'pWUq7	k]5niUup:.'uQ)'yp
%SJ"/*@2Ձ9|RBVͣ3\]7]9x`]q!M{N.O-N+&*M;{	-i"+xrRLdf$"zcFB@<45['-Oa8nN%iדS.=VPKZZ    PK  C:U            F   org/bouncycastle/pqc/jcajce/provider/lms/LMSSignatureSpi$generic.classOMK1ص]תM"Bǘ
!K̮IП婠GYM̛39DdIП+Uh`Z[I5gkA]7yG[o9/qiYJRh](io(Ep_FXcǈ	.yVjf$-UF}6Yfa	D٭	[9'A]St.H0 aN#a/[Q4;PKAz     PK  C:U            >   org/bouncycastle/pqc/jcajce/provider/lms/LMSSignatureSpi.classVYWFd#!k4cChCnBIf{!=RISoYްMBpG3{H# 'p[ǉzu]vu51>6t;uKHc<WΪꜧf#iUg3*[,s%`Kv1Nؤ3KWL(/_ft;c尔pJɸ,I'aDwkn[Ezi1;J+l`S3ۖӄn	WtɅ3Η16+Sjmd=ZPq=PXkKZ!Eb"md,Y9YSSDSnNr6;ع(ܙV-aFFWv4UE1^OMcGf4-+w)
:G*O6kG+1f\+rdӊ<Ыe̩)f&bdb5U3ǟZ3[qG6C;&i!(f6[\钱d=eEd1Q
l(t,gݘ׃FL٦R#HN1nAn/񮑺9&b"hqHs":Dt-Gamu173tD!EB$t]M6kJ.l!hyG|4e~[~m)ыZڠlCeWUjN1+ce9zpdj^nx1>9
oWGZ-LN3;+ q,ፑצ,c^Ԙ>AltƸJT .Ae	,%EFI8" \pFH؂Q	$¸ !a'n܀Kx׹S\t g89\@*~t 20l#΃qqt#bP0ۈ\Y3`2bYGtOhi(3òyW,USGo>w|#e)46Y+hG֯E~pCdrfD4Ln7'#^ŅeCoȬbg4Dk2|
5nw@59)0!N8LJ7Fc?q_C!
>{?yT|JX 9rRr춡s/c/+ԇ!?漙sg(jhl`&ҶoT7ߝ87Ai{*c :kefZ!zL^Off
W	7	Jh|.>b@3:ITo!l'Yc;18%GVjw[+ʇ_J[j;
D7{݂۞7W|!pYZ){Gt^DPKd    PK
    D:U            .   org/bouncycastle/pqc/jcajce/provider/mceliece/PK  C:U            L   org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PrivateKey.classVYWGiqMFME[HDa`dQ4MO14,v d11I\ͬxNyC~M򒓓[=O@9̭{]~(萀<_f
zT:VCg7bo^9ZLY*FՄafj8le숩,-,`a	n21Z1b[Xd̝af~EfN@ Q-b!Ĵ9Jm13ڎX<r.4F5(W5ՈH{WHC_ :h1$qz\P=Nj,n뱨9v O6NkvԢFÊP-'FJDCYK 頖D)'҉#n
Jae,jSjST+ZOjVZ :;{>%@Em}Tg e¸kLIغea$s$]44gt>B2*}~7h:O͜1ǳ9mfLڥS=N܌M!f*|Ti`aUJ;1m$UNfQ)e`و*muA6eFڿD^fFԫԳXDW
AD5 qC%3)I!
5sM>?A$bGElMvQ%ZD"vPDQ+Njf0UlM=^@M8|׽eR/M7J
W= k})?6ףa2!4<>yK.&k*B13u-;^fO?뗫4#XzVCehJAdbEez #KѫPZ|+1+ _v_`$SKk同e#2*8&N
'C椄ȗ}2ఌ藱
7(c3zXc2q,<'(	PlЊЎs4Nr]BN&9ЌSxAB^І%20I':8:$I
rZB c$tY'uYuq2	=m?z%C ^<>[oɠ-N#D6)49؋<!4/#YuCT5׫ƙRxSbx.:2G͕4
4	3']\.V3I|tET,0x$X"t_AT$f]FLTcވkiգ7JA鍸FPs\GTگ#?V]x~7I4=4HӋI|>Z.w9K]J4wI|:
1&rovboh?}ܔ	f|MAcnNd1W,L|_KlJHݎA0?2?+?$??m=ww<#^[=w4fotW'qn&HcHP_8(53>K7]θ~櫜|~~Vƛ`7
YDծpc[BUOv¿PK5(+    PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PublicKey.classVWV1:jGPm#(ŐC2&ުl_iO=ǾSOߝNKo-I !BXVP	"aK
uᛎ6>bZ?if3Wh\]s"<XN33"}]I:%ôMQ8&6aX&3Xs,*aMq=L8l#gws@BE_fp3:Fdz*92FP/dg\gEa
-Of~vH`6#JdKK#	+=_
ǽ@\NIet/$頓utxg`Y^	ҀAM7ݯKYpAivZY;D:gfŮ1)fgÌv+gZ)53rIT:(YЩ7VƤ{4ݳ[	*Vw<l5ydm\Xi=H0ɬh13an!gW.L%i4Izd/boV'.yL[ug(+E
>ڤ8Lu.T&m`ZWlƱXZ7&JQƘE	hi3rlյ#s1+Cqgl\S(:i>|!	z(W#d񨌈]2eDe4h#EFd앱O2_BS_o[v	[pr\^X7w)|)7/+?77Lk
9/Rkw!Gv-4Ai8%ֽ?Dr̖jNG9:Qsd~KEVھHY
0}bt$8x|Y~xOF^roI[FC.UI0bTpaUUC683*6⬊1:Uē*.ew0R*փ@+DZA9d`s |9
Ⲃ8rxAq<+ǋ
59qp8\0` &1RE.	|Ɯ?[9Z+zEq1gO&s&A2ݯ"*<M
֓J4^k?^<ܦAب;JVWE:	"&Ake}T.eʵBjWⶰضEY\/ZP[,(kwxGx@PzyqIEB&%y|-EԷA*Jw$ov	A)na؏VBMPUy;^)Ta5l!6(\\Ȕ(yS9ꡆUw4>|	/M]ćx9w)ي8:HТ(i++yJ|<rPVsSpJv*v?tMә~!NtiQ4K-ym<^;PKP1  ]  PK  C:U            H   org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePrivateKey.classV[SVaGi 4MKJ\"@Ib@ChSȒmB >-/y43)v%Lq3rvH_ЏԄ@8+%	ʘԝ;i	Mqmйi?9M÷Qd3jd,[w9	!MJ40sؠ`-;dY2)wq3d6݄Z'Au>f\5eY!.lx-SBsy`fF[rU6_TN]Ψkֶ5Vp٫7BI\$u:%hv1XjTg].wM:oiJOp<Cxr>U&`Cc4^EN:1xi]wP}׹Qʪnr202|fD_9[iۧ4Mr;0wƢ5+`Z9"TFnWID 
pwd\qEƻ2ޓd\vɸ.ch*{t%LBr=z#$#Uu\
&W"G']!hl]Ύ}zTˈ_.rfk5w޼jvd
|<Mk
zxDH~_Ml]p,V{KOWcYRp1$H#(hP(hƨ91*h+qd2O1oX݈"!z!N2#AR,(R2   )AY<d.[%A
nHpCOl23%fl90m3bp2FzqeD C7ȮCj7^#-th
u_|a*8/{J*lM?ch9	 %䏰*?b#rDIh>)FAW4{*x|(aOXF,{
&6]$eHʔ^4=I%졍u˒\<%zKe^:lՖ7
kȕYUQBZJZΕ]-GV+s@w-{aL^8/yY	U<?CcBڧj|'8х<
n]"7mQadRH\Ƽs%Ϣ)[<eHSPKN    PK  C:U            G   org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePublicKey.classU[SV!2(@I
h BbPH!H/-#KF3-o}fZ3Sf:kRv$Oxe"鏿5Pq= nHBzܶ-;Y5G̰,S
@fṟL;v2<@?M	͑sgImй%ܨl׊)Cזyi8l
ݟ$+ss6Ȍ%͝l$`
jâeg
K%oYYݮxɰBf\,{TRGϋHpo
fTj&:ULucMkEXRiQ\5aN)hj%`GZ.MGׅWz%U7-	YՔ*z9*aAVcYJj9Թ:A0xi%UKy:Pc6;.Fh24OL]ZMMm䐺":X^w[$dܕqO2"2eHLUl}er!%kVI\	]%xO$^{2D<O++r׾H%D{B*3ǡ 6#ƍih/Ej_-jߺ;WDt}O1 (BMMaVAb^잊!qe+&a+!z_	)!x0U!Bǋ-b#I<bYt7kV^mYpl2(,!D/DY=M?%O{1GҤtDkh/?cG@YNDkWnW~N}"SAܹ
 CUE?Zۧ&Zng3	ZuJt,*${$PF+h^|
D @k,;&^c:&~2i
n.#rh]ymG2&Hբ
-I_]?FefdJ5i}S-dLa|7M}SQ߂JgB[*#u"CvC*c\ϊPު3G1_yW_PK\Byf  	  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeyFactorySpi.classXyxWM1oH @ 
MH
M$,B)L$f^fV.U6պUKUZ%4ZZ[]vuz$M|=w;wsﻓs 2BXBXBmkBxykE	(QuZTk(q{MTvn].͍,ڣvT
-Z!MHogoCx_RS	s|vE |땥zѼMzqSwHz5U$m}LqȈ6.q^ACW}5i2qh]*nJ&-Ն5VkI(h
x')ɤffuSkLͦ zX(<4;fXP1HZm%Z]ŶT/ZCknl=%=JLB43SsWD:mfP>nL*Aa:bC"N8J<W.W~^-!uqmDʘխhU-H|xbƣGk**?ںoMƐfX8ǣbK,Ϛ6Eu-"l99W ((0p&D(IDT.K-;R:*khQ1-}=M%O̮S1.+tHcYQh>1:	)h.u
]aЗ<Knu%=thl\]0*êM֘NMmq	r,1jk	DrT=lX˶|Ad	*g{(V[t\
KZ56.(Ap
Q!!]VWlV'Wu=~;.KI!ZuR*$_kkg&D\)b"J^D\-Em"ERDW%[D"zEqXD#"-`s)^!bu%p}В+JGt#95ܞ:#YW7/E}6]dt(Hy,{rOPl	=5%EfF\h{۶nv5OxO 2߻p^N\I @,J%>[
ٻKOUٴH?3~]FŔ51&`gjየ&ǳdbns"d5>1~0XʌWϹx(?ʹO?;seGf.5q!U!c?Nh,vX*Qͭ26a\N^F= c;FG&uxWzװx"co
vшdl2.M2')bŻelX|>ĭ[Y|>I&8>N	ŧ$p>NdTVw[2cy	#ŗYLI01vwŽ,>	ZYa1-a_`k\·$a0Na4}3Oqb/>2}t+#z8XST
@a1icIFQ-P]i?WA'U$PIc
B
@Nݛ).쪘4Mŷ4MAǦk4eYf
?'3XSh>4wjH{?i|
C4ܐƃi<T#UPjB-G=1zIۀtG&5D7D=F̩{3UA:G'p1NG~ADy&2<KXu3l4JF)'X<IOxůa[l,
I,npK^G|뉥	ք7O#<p >C6l4OF!GQ"(^2k񞌷[2k!nU6@I|?T*!PHqSAuyg=S@,<x1;ˀcYY #?ӓMB{T4LvV;T&l4kh) PKq(]    PK  C:U            S   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeyPairGeneratorSpi.classmsFGDTQZ C@NlB
@b8m#.7Rr%SS3m3L^Cu''Bv:q^nw sFFt>.Ⱥn3/\dsū'QU*csDpO:R4.2ԕ<$zieU:(uֺOSPuҮpvnږeв&-l,V_JgD _hҭ3k8wA7F~n89Kw[jj˓<'Z®,_&=_MNCm
Y5.]r{wS=@၄8qJr
pw?< ,˴/*6xP@P9DP!RY04$8nuh^i8
j8ᴆq
i8c
>4|ΰ2t}g8m{ZU3WԸ~b|6ٳH᜙OA	{/&U̡5rz"3
}5?yrCfOד)'BÕO>xN"c0HaĀ]Q24ps+cn@W"J|M%p:bE9,x<r:.ࡎ)u\7JV⮎XaX֑Vi,;n[>>1/ʁF4I>S4ϨצO6 BqBtfBaf:\tdSjooDa"RbTtQcL_S ݴf)fC?[dյ^U*ۨfhEK;V:d(wpic!	PKwu  	  PK  C:U            L   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeysToParams.classkOAߡ-"RzIcM5FPb	ӱٲi~)$^gRk4693s;Ϝ=g|.'0/f{d9zLyҩ1wUΪIGYoܶ(ۖT(<js%s2XU-*uHt	e}~ 2'h`0Qdfi/HK/H0mnܩҩe!bH][N}eٵ(Ҕ[*09mn[5:NHOYfm9"lizo!hm*o,F:M]WƄr0ἆI
S50䗶~:쀷 \~^$JX\Ӌ17 \suMW'
Yzqf8bt\4`q9\109qBs]G*p34K:汨#[A?߉b{jK, K	C$!?Fq]H~JoȼD+2[?a~CLt`:YC}]&?b8MF%|O~PKKl[O    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2Primitives.classV]sD=Q,+P-_5
N (9	4gnP`f#/20S ~ ^^]dFV~8^{k=G CŉgjcN7R-5Dtà+ݖZCqGspd1ԅ\vG0j
^
vwu;w*F]2pvn#QKFVt^{e2M.O'Pvf/=a5u=94[;s,+R<-oPb-.ź TB]ubd:=}#e<QNۊ/&<VSG.a}`~fns@PWVg*\FÁBe8T`9Q	C"򛒫g0w4R?AZbQ8JY
4<
5%
5\pa8qbt% ]AV@;	 @&}{ɖ=BJŉ$,I*qBHo/t-;fݵ4x&ɇ><~O@dg|?+%٧kާ+O8=`pƀILᚁ,
)m2pກs
^Q*nx(*W𑂏uu(E)(JAQ
\EYqR-,(bNEY:ohdju',r
4^젲9=v\1OcNi2Gp{`YU{p֦;oL#|NZv6slnf̚Λ93z`to4o;!stk'c6^5w/w'PK/|  
  PK  C:U            ^   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceFujisakiCipherSpi$McElieceFujisaki.classPMK@}Ʀ'CKUV=Il,O?JTJ܅7<v6E%e$J0-:gF&F<,աC-CX"mu28~>7P'?"¼\1h2ew%[:$\$C8:p3mX6ll؄m~ۖ>$,45]"-8GA5,V<j,MEJMayW~8jA@TGXaKfcr޼PKis#  f  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceFujisakiCipherSpi.classVWGm|T[IPUZB  RnvǸanXE_@ϩ`KO_7yzzg	N;so̝p?6cG3z["WDF@4>7Ejd2ܡnePGlT]e^Oqpt&mTl{%.yY1AM3ף4kT7ܘYv L(rRc<8Jy6Zq0gY*83\WSGuryJ2W+nPAYPdݒK9Rb
`yzȢlOL=Ԓ{e9c.(EZr
egF5|iʔ.>(QJ6hn+XjD-{҈9deUq=ɊkyՕ\^Fcי6x|SM	So#ʎΰEo]gM~Pmqo.M+fnͲrAU
*5kAט#U_zcT/X>,%u6^󞐎m0Kn)\$]Z9Ul	Z2ވ-068U\Ffgn3ݖ9oZ̮".UhNGtIEqX]"Dq'DE$D$Et8)┈"dۖ~srw$xb|hQ t`_`ڙ~tmse
*௞\i?V)n26S%݌V
C
Y(mtjh1uY{r~$CLB+J؅6\Ђ. "#D%|9΢Y>qq	q]B;&ywJq\b6_pUaA(1b}.1u#|K.T.s9Xib'eLI2̭O(3J#3\F4A~!N"-qLQ
ɓ/0\Ņ/8gNBnK
eX?Wͤp/TER"Jz#4=eqiMpV*.	~EKXSZ7螿!b
ߑ)BC$)t~m:q3<H'_%J}Uf;"V~<q6D .S )<@p}/]߀>% =RbIZ #ToD>L: m;o Oj=cPK.  V  PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeyFactorySpi.classX	wV%ȊICNeb'q$$]qčP7"DFK7fki%-0vҍP@KwʾN9<#ϱ
۾{͓؃.
\ ^ j+"SUJCuIyB@Yd
Mjv7657Ҷ{wPWIH/Qm?n*tZcZpsX6=Tܱܾ{w]Qgq6"hA2)5Ul}Jq6-iIQCW=	Ӻ^Сu3e7x,fٮ6ؐpc"qV(Xb9FMG35|>o<ia7%1[1}*m25gl+1jDU$HrDsۍe٨ u;
!ԼJh+@vj<L,fGcbʐeв5W1Uy739I)_jN-S=I/F&{)OIwG$B f\Rº=uNb䨡pɵّ#Jn
nF:1&gM%a2A1t%-$gsXM\89CʡggL҉Ih	fّ7iUq\C+nlNjqɗQ^x{4ӥ#,BI]}(Q		gӣ<c}=G3	kBp<iwP2K4ht̵cɣℇmM+2jmMUḫvg:(uZFblRLq8_<_2k:LBSQUK}$Y;Ǒf;|}Y--Ⱥ2
[22=+J;TSlgA*UwN]Wt9?TX>EjEqv"E8,W"D1(∈!׈8*bX1G?OiڿOP]mLCupߒB⹌K(ԙ d($ W/%Ҷ,jb)
ز<O|ɞ;S_Tqφ
zFm%2Ў#z{WrGppCw%^Z-*1@LGg'ǧP|(}̤	hˇ>V
t"9_N9^qP,K]`XFG:w:3H;f\$'~	ZR,+ue7JBB^2p]X#c765Q*nQs2AQ	IFoEƵ,^dlǍ<V,jpe4m2.gQh;d-2h;e\wx0>,>#vjQ	iwIx>%8X|ŷ$('ƸU;Y|B-[-,(AgY|EB8>'ag%213,aqŽ,c
s,XX\0HU	.+0;+p_N>'s=qK/JJ?9( Jec (IHԦ$gYG@uY|^_<2DS}O#gpKÐ@~2_ލ}eTg|cH	x;^b=2xYf3G*&qzdW;{a@tx(G,FR6QS}$FlCiT#BZ"N"&Z}`%e{rC bQH*A*$?l]BiʅGSyi:BgIRrzœ,fgX<׳,~E<
7Vo&yk&@	˸QEN4TNcT@!AmuEC<*F/f4k}|Dʛr^^EP]3,PFWY2T
exJ,}t@l'ZuS`h=~?=?byʓTg<ۘM<2\>9%BgLPUR؉n#0vWPK/]    PK  C:U            O   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeyPairGeneratorSpi.classU[S@ZbE50(xTZD>9!`40?h;cgQPj);>;9|{ 0x#Z8,eÔiƨ)Z"-\+"fX.C !(Bb͵H$7I<o\d&e$Od6czFepz[ɄMԚ)	w)ϲ]JYtU}tMWB-;Euw&M{7mfM#%nYǳL6E9o9-E;|01i{֖p)sG,vfk&;s㈡M1b:+ܝ\K#JUHf)&A\"0<k)c&)S-Dut8sp\q2GN83,FG'i?HI#c4ĤVtj#H>pǵSNP~gsi,fy)dJoKF{Utd8Y(e;>tXx%Չ|WIv̢Tъ!SqNBUp*Th] I0AzPAĔۘTA7f`N!g
Hc	
`@D´
tC۔OF9lIA`P%ZSiw	uZYoL9BPAcyVGrXEx9}bg C7Ř7|;Ÿm+XVC#9D?#8'FE-Yu7mH1RBFe9"C90% !ʸ+^@O|$H<VX⧉?PK1GD    PK  C:U            H   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeysToParams.classUmOA~ăP@
_ʛ=EEyRR-!y/KHWqRĄjl<3;; 	X2-sm$pva-?boHXLa뙻w"'R2
i5a[x䖮z =^N;_xXWLaQz	uyڱSVֽUKENDAR^md.ùuygPe|ϴ%$0J:QrQ*c3,:^^:%^-
};KE!KZ6jư2I'N@M^cI,F^N31/wT0
.)AWGcGNhAhV647e]K
/nB;VL[Y뉕'-f'W(\$Z e;[2L[VnW&Ub}fp7=0qnbwl*L~Jsӷ۱-
gѮGBNi8zqK5	j8~5hЇ	
%t㶆Ӹ#)7@C)EHSCxbK0+aN	*F0b/`ïtg|nKqwg-AL_W/͌xB.p9Am4OƿcdoY/c>ٮy_[+2X 
_ɋ.F5`/^ c}ɒ~0AۦI4h!æh FcG-~PKntx    PK  C:U            b   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai.classPMK1}֮ݮVeU*T(^4Ԕfͦ,O?JV=Ry摙W G!>|,#iN.ׂѻ8=$5xYbBsFS#C#G"1SB7'?l-A'\Rؗk~6j4Nd|'t/:sΏ1~Ah^E	Hv P˨`ERuH dI"B==d}!{i],j'z3/閍Y6*PKXY$  r  PK  C:U            e   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai224.classQMK1}iknWWIPzU\SI4ԔfMY*
 ]Md
@Fs@P>gSj޿:o;-PC0뀻L%\1%eZϑs'NJ>W@pss.2p-TQJ' Z'X6ZoSL5eqy`_Zu	Dc'CgAAN6lf-Ul<90h󘠾T/!MM1=dPk=cջvy֍͙&	PKO*  z  PK  C:U            e   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai256.classQMK1}i׮ݮ֯a^*z*<IݬT؟婢G٪V
b777 !(z~t"bO	\8ռsy8:&K5zrTG<`*KZDA[x/(Re9y`!3PG*1	nnn\U4Q=WD[t">,ra}%%6_&ؗVM-Y((ъeT栂U%|y\"<%{SE.LvaTXEv	65cs(PKFzT5+  z  PK  C:U            e   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai384.classQMK1}i׮ݮ֯aA*.P$i֔fMY*
 zj &0yy3yyxyAѫJ"eSͻW'MTߗe:>SY?";"䩾LKsd!Cfb?b<ܲ}h0- ZGh/D<,ri}%6WM/Z[ƙV 7GkVQuPƆ
	pAsՎh򔠶P/ O10;ۇePm<c)z֌u̙'	PK+  z  PK  C:U            e   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai512.classQMK1}i׮ݮ֯a ⢞
Ol7k6gy(Qb꩕Md
v%(XS)N5\7	R
,c4-QʴTA8CNX0dtTQ
FGv>WG
GTDrU'wV`66=(~\X߆ecFɆM׿	U@x8?t.
 .ps`Ue9`j>7_1W)O	js|Se]X3_Q`sojXǜy6ʟPKtw*  z  PK  C:U            O   org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi.classW[WW&	(
AW(*1$83Abַ@ת`KkN_jLB 	%{Ͼs .tpտ,UW?͑ޟBD,"-$⃪8FTXPeTV}jʺ.'X<IƂ$GkCLѓqx'̀zaH
3$XbcZ[uiLM6YrGWeN,<tId!i#f(<6Q*hMPI9jSlI٫ƼIu$:ZY{ˑI.N),n1My@0	5Y$)	]5^nW$h&,-Px6.OEG
'S^+C!Ug-r^I]q,>Qʛbz%4%Ȇa^К	ǃL1!yFASlﱯ]K!;oʏPl-$ e1NRNZ(Fˑ_T<RM!{
^7|ʿ1RP)ZVqUkGs+m-]aV:GF]F2JWWɠ~zLI; ,GOq吀"*3iڄFԪZmf%4K8Q#%jsL[EԊ&bgESDE4#+ID"D+yjK K7$beYFHѺBD^_K~Mϴ~[<Sw)c4[V9wŲv7;yH?B.6,ի(cɈ3ś;Dt똟]C
UD~jWKOڥK'rЪ'%)	}(pNC]-a#Fi	U8#g%N;'a=d	, 9spP9 AnF.,}|{rc I.Iqt7%h8Hp0
~rg>QJ~}0m+Mfj>:yCjU&0lXp08x},L#,A"
v@3<s8<:7JW🋄[w.jwzknW22oPyo;L|J\E<ӧ'5m~L</96yZ\pM|>O7ʷ⽇s82Zdpݗn$n8kh^+÷V40C|aO󎝗K dsvZ#Gܱ~rqX__SW&]/S&yB5^:Tns-Pl̫G&ڞY!P1a^Ά?{02Ww'u/8»-82vj#;iSDeu `=o&{C$s:Ts
5?/gp/jp6:kSTP$ɪh!CG)Ax0o>AGPK3">    PK  C:U            V   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePKCSCipherSpi$McEliecePKCS.classJ@ƿijcbw*xh쥧*zX<
BcuK(<* >i=(zg0oW }noL蜚Tg/2#,+="h>\sZVՌ'3,+j֦7*a
~Ef2MVꢲ?kXvy8AH#D#D+/\Ҳ+MJwtw@rv?ƾ6 PK{+     PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePKCSCipherSpi.classVmWG~DF⊠$EI6`$TEja3MpHIA=GSiw67I{gs%o n`$BCj"ibƜeJCfY6aI2X^A2\K[:"6/ሂe͓HSQBZȓIXeaCbI4rY7gsbK薰ܶ!KYF|+MzEj!5\=ЄmXsyM MUgfu?ޢL;߀;д$eY2/U46Tvv]oGgRZZFN^_+nFgI]^0\]uں4TNڞ)Pc"TS#jsCŪbݠS2s^ݨTXwC@Tݔ-r$M'Mϴ\8=0T59qu98Ys9z8z9.p\x2ǻq\>$hl~T;OhV]iv(jףOZ	W	\!;BSS j +jS%ic>Fv?Fꛌjp[1QjRj<crj	
}M
aiGH%EN}&4hR"p
w;0"IEf;N(` G0T:"AZ0%L/2Y̩Belzp]I'(-5K*9CqҫOqD&m#=wOݘ&A	7_#'¯p".dw	K;_~Gօ;
H{G04ШZ:@dpе
C+/z:	RHqr|H_0f7Oޖzq+x,{M
 Y!?Ao^cB$.8:"0VmӶiGǿPKt/  T
  PK  C:U            d   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval.classPMK1}Ӯ]]Z?m/"H(!MY7lZ؟婢G٪V
̼̼yI
vjC(Hǵ`F/N	u{E<,1Ncap&{"1S9`ـ[Xvޚ[%#b¦BcI?9MBk1rŒ_]e5"l/Ok:>r yZ񰌲"<Jp+e	YP#=d4n.r(MP`雺egs6'PKc'  x  PK  C:U            g   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval224.classQMK1}iknWg=xR<,*PӡMY7k6-TQlS+1̛zx,#iN<^6-^#
|(ld%tp5G?|$,j"A${s#:3pddĐ&<d<$ݍ%bG:{4"ty+Z7Ѿj3j8<]yȁyКUT\ᢌuBd2H!OJ%l1k߱},*gl|7[O]]gU>PK*    PK  C:U            g   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval256.classQMK1}iknWg=xR<,zVTBcL6eݬٴ?SEUOL^2of2//o Ő;cIs	MPttϿWH'&$_46gG9(2\MG.iAP(܈*ѧIcތd!HAaVM/<t/Ok;r`2b%(c."Aȓlɰ,7[Zn7iJ(ߍ>7uzYrOPKK*    PK  C:U            g   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval384.classQMK1}iknWg=xR< kEEA(<thS͚M<U(1[JA%f&|e(HOh:GM}^"
|(dd>%tp5C?|(,j,{A${s#SpddĀ<d< ݉%bss{"tqKZ7Ѿj1k8<UzȁyЊeT\梌UBzd2H!OJ%l1k߲],*g|7Om]gU>PKi*+    PK  C:U            g   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval512.classQMK1}iknWg=xR<,*PӡMY7k6-TQlS+1̛Cl1kCXFҜ0xB7Ծ8=?`h(0	:FQbι0JWSQBFKJ775JFFi@}X2+7#85GH=.ҟAwpPpaحկK&à63Ӛ<-XDE	+.Xf(K/t$:[2 
{F"x+wcMݴ޵{\EPK
*    PK  C:U            P   org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi.classVWGmַ՚u!@D*ZݸAbo'
k&OOl6Ӄsr̽w~s3wi؂(@(|sPD8!9tsН3$ <~Н$2Hj9k|
Gsj.f%']Zy-Y3^t
E'?Yn;]
5Gfܨ1ۛTOX˼4Zj;xOU[Ltm2I8b䶭fihr(v,X9dÆ'?Ωn*%,K-y:W\͵;%%aPbL,5i>:7<񂣛u+lvYN]kT<H8$499f&LF7+pTc7DuVVIEC+i丢FRxj<=5'ᆣչe7\2u^NΒ5K<md\)>TEQRUiR52&rfUᾦjFC˜3RwoRx,JL]PJt	ؑ:J	n=zlm|=Q	k甘]9tR)mU.9UR*4:wc8u&ۜ.&ǬQj5BP+0eǰ Aw0exC!ad8p$-+u5ɱWw2Xk	i{(\v(Y|nLZx}wzjsrdFC˛-WE
+#h5ĀX^kDvkJ"Z<+2P*d
je}
Ʃ:k"/^3*CƘHh-Ɉ
r
~$ =h؁qa7!c&elGJLdlnõVqC|$ȭ  wX-~
b < 1+Ƚ +.C$-HVMxw/~	A_jۜ꾏;=ju%pz
緥UTSj:)qƇp~o@JuHfd'~48;S#OaD?BO! ȯwۿG˂g\;'#Q隰_(XħB*Ozi%8IE}T="6_.*@;"QTD#K;qHg$ubYp=|o9bKs0~gt	'	<n|%gxpeD] :|L\"*UW=!~ٿx>hg{["><roKF	<Oi)K|w/%??PKH  J  PK  C:U            9   org/bouncycastle/pqc/jcajce/provider/mceliece/Utils.classkS@pKxC*
@-7E:Y5lM?@?Gf?qI>9sΞ??~r 7%ԇ#o$43< "rݡĥٹTLǇ-#&bqYAݔis
|9ZrBA{_Z#*Xj~?&ɓ
2iR)(l2ےвoʬvKYa1Yff:chvҷtRrMRŘ9&'-Vrtv>쓖I=7΃M?l][+Լݵ-	u]$б7VЩ(W^k{c+[mBtY\HB2d\.C2ʸ&㺄?)=?Wr#|\׼+8|a
W佡|}%GuZ]?Vь*.
\hhGx PUш*d@P}Aƀ@L .0D4]VpC
=$&(aD<RpcIqМuqɪI{<xw>-ߍ~P̻K
a_ ¶'<		_	K0U^nke+;x&U\*HW0_, PK*    PK
    D:U            -   org/bouncycastle/pqc/jcajce/provider/newhope/PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPrivateKey.classURG=@+%/K$B"lB1FF\l@dX
҂_x U1"TzvWBB=>tOk
!"}IϮ(MCZACt--}*4[UlK<V<UP0K;KsZIb|z
4&k/*h4]{
k[I{QК˜e7){/]Kf(b"ușV,UgjM'3$3(@͓vQ0~\ܜb!ir#9V%("HBM1ӿ ,VQ5'BIM2;OK9<+R]3U[N 9nX'gsAee~t[1
+ǰS	+ܥ}\Vf
ǥIj$nle
f)
F?*ήn%islO=*@PnM[ܵX~jDW"9E=e)*UtQѫ3TW/T|"OELAwN\*;=+EGC}Pݧ=ڗ:ۊF_=[vj0 R=
%KXwOiFY8^++VRf緭1Q&yeVkc~q̥$c\G#uIs][h):B	":1c 	71Ott੎hEcfA,I3i^jƢo,ҬjAZ÷X?i]G
4//Z<:43Y9[sRaӄ:4; [0i׈$YV7	SG{3O	a=|L>"oWcCwx!wJ};1(X!ɏڏcl>'^"G
Ai]9BܢQ)VF[qZ 
)AtaE<Eϫ#X)#s"P@@3[ݮz	w'fDkh]G}PAn1>S&WL fbxX?{'PK>  	  PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPublicKey.classU[SFրe@B i.-mD\J'Ґ8)ȋ-*$Gڟi	Ӈ}C~Tg%\6SurgV^0PbhK
[dhO
2tgB-SmCli0On@5n1tྸ/vjmcKJm2
rM$6y^Z 磹Ǯd\VUvYfPi
$J,
wymEpo{!q3$
ǉ
*YHfşqtr!PcޮU6KNk1iqg-yK٥c [7g-s_譓;Ĩ>5tݩn*+ȎK=[MKo;.9t6[ҷeݴI&7w\1Y<3Kmlv6{|q]C9W+nO&&:G9Gځh
*xW5PpS{
W0*a4p-U:Ӏ zSCF/g%0ߴnygWn0EkE9ɚՊpOa*:r\]g[-D"rgmZ=[M}KyR @nizE>iאa2\js8T4+*Fq_TA^ORAUcXT1UybK,^ɬ~[5{^ύy!߰nR;`1RF'7ma?R_
]"_Z5o(߄%OKl2={Z:s1ֈy L_P3bgtf1}|76(*A}KD0e1ЕÍ`\L:γhtƑsZ[F8>+yKqE%]l:V9lcTkSQV,<9-/Rm|3ILz|kPK~|  8	  PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/newhope/KeyAgreementSpi.classVRV]@$!`^lsQHC	B8M4me`ȒdKL0LIxC?}139Gkp.H]Y@{(B@ ^8p3{ږeA4J?o13m[A[u<cԠYA,<d{Vscfz|8jI쒀>M5z,vd䬕i9{V]pcFftYFe!5T9TlG˫fTݩ"-k*y
 r#w)[٦CziΫ˾P"gpCRL(I`9H{t$WǈtXA]eZѽ4TCƌE|!U+j
4fGќYJ:o9^~΄䔌U4jpsKi;
)cmY(j=PԫzӶNwƆ7KrdyFeya1曏Tk@澹'Ȍoѐ5}yT\L
8C;ז뱼<s(U{t ⶈAAC">qG"񥈯DDEDD0t^F<lӴğioD-5\Zi3oy=SͬU#Yհ])gurhu47?v<O]υ7m[Gi,ӼhQçk[nr(^3Zksk3+JzȵoC;WIyQz/[Hϵb=1!1dt# 2NAb\e|[q
2>HU,cc3X)).~'	wqos.~0g\r&~w	XJKxxVRY^=Qj`"`
gL6)y_S9HxHnitEaM|OHЮ;F1W{D^#3|22?q=XهS	(xxR5}HK_kG;	sU]ůC(+}m`o#FtYH{?[a-GF"Bˍ#Lٍ2
vlDj$I#z ow|+*+L|^[>zx7X_'Jk2GJꈔV|PKuX*I  ,  PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi.classV[WWN8D(j*xkBБV
MREkm@g&/%e^^vI`I57 } D 'sDgJ'Sv0
.Ssô
QvmkyeN3\|jy۶Od:#N"-tKO2k-À0)S8'9F:"ϯ.E1ETBUG3AIp|ͱ6EOGl'-Y%s2(41u+#a/MLL7FVs>-pj]+hasg^+Ҝff՚S{&\ߞ={f67r0T49a~L%CmY`ݯnr-~k擩Z4'nn]jMkj<4N4<@ItFN5A}E|%ՊhX|fkPm*59577n̂\/67zaBM$fh3Lݺ;G2^mgUkEaK9p\(Gc:
&U}8rbtmȲ7z .XDgoP"F `*8uR1̵zc훪XC0
Z͇f/dH:HI#11oK#x8#CS
aq"@C8&GJ(	bAg1+Gs8e9<-|x,BiXV>+S,K|`
+
"&G~<ͧ
q9 )]=dP&^܆ I5O/ƋޏSo,jnA/}pi~C~=el{KUߡ|Oq%%XcᾆW«]KX+]w1.Eh	C%BQ- 
_vq$9p17݄sjjf%ʗP<ʨY"ιc Ojt~$Y?6C6ʰwHZ^ohf=ֺ֍t]8i3XI\}J?AtܞnN)zk~j~"QةO=t*		j?PK}{  }  PK  C:U            H   org/bouncycastle/pqc/jcajce/provider/newhope/NHKeyPairGeneratorSpi.classU]sF=(Ji+(i !LC'N1_}孢 KBݺ?/L3xxbzWƱOftW{9j sy0ɩ'wl׎6Vse]_MdG]1!)ی]72ܢWbHZ㢱
y1*g[Xw{܏leBAmGU=V]\r,ۥM#0J<Adl??葃^ʮY50rnU?Z"6Ӷ̓塈txPMnq F(D+a4(\XNрU׿:c;&}^.Enᰰ{A0,|LF
;܌T׋Ԁ~AcerR9W^SvJ\Q	'%0&ᴄ/$|)ጄI8p>cQVm %k,G׵R$aƻ:Q^_M$FsCAOBx6Lw<rGf.`wSbj'0w9XTAR0+
cH+PpU|]W09ø@ƼMan	0#w2Tܕ1!$Vd|%ܓ
q	K2.cQea24(cI{EKOp.2(8g觗Bx(&D>dȓ	m@rGX^akZ.2xp[$1un$?1\!Vku\D
=<
Hu}1i\rѾzN;ن/Q!	e%g֩|F:35<C_i
G8PKdm  H  PK
    D:U            *   org/bouncycastle/pqc/jcajce/provider/ntru/PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/ntru/BCNTRUPrivateKey.classV[WWNU.֐P^JUKj4\$-ar83Aӛ}⁮UՇ.}f  sξ|go/ s3feh|9]H24RHy-2av&ggnhui{Z{c.=21=q_Tڃcd3e/Syax'B#Ħ2*ڼI^ZNx#M~E^eY\h1n;ENXGi\[FBLs)Je J3_+<dJd2];yuSSc
QLb8
IYJcm}c[9}]wҦ*Vue3F[3NN_$bp+ep/G[zjS)ynyNYPǍET_l35só*gAj`MRZp|}nPr3+*-v34۹]A~A#+WvVW8&/Swݟm&L[A\PpQ
>PpIALA>*gJow{Stg,)_GhwB>ۭu;aߴrCQåsZtcF8>u<pL{`iv=CP
kN>VcE6wc{K[0i81
:54QC'8&
jh#4\=
"&4taRyLi8ЎZ1wI<s`^U\ǂߨ/Tc)*UK0*ncIŧXV	QTR|Ekp˶Bj"aKƓ	^1t2GEp/%4)Q#[3V'B
;xw|&R5*zs]Uл=XW0
p{+~F~E5x)
M7HN@~^_0lՆU?ɟ|r@x4ݪsN":NdjxZ!cnY)[@Aa&D9n͝I#YmIg!CPfO)?ۀ5Es 7H^0lXcEu<_
?PK9  M  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/ntru/BCNTRUPublicKey.classVYSGF
 |$N,$B00"V^=0zͿ*TR5?*C @639=3?0r#F43%3>]aOt34$=@#iМlPK˄zo!4rKvФX*wj!ݍ8)$&CkN,<7UKs
3zmiY^Typ[EbE@)*rmyưn(/=\QŒ0ĪY-noMW
e͔3sZr4`p3Fu?-s*]_s#/OܶgM5rU[N ,[U\*EY>1lZyy,(eێ6]5(m+bK)We4*nU/RuM?e+iQJwJXzAE5j1%Hd;ZN<'NeE6bMyNj̲xj-+ZUV-+TV3j'	pG]|,|*3$tH
H	ax3NdzY@y7ٳ-Oo&s=xMY3d_3df q>!YBU#5b}_m/osaCZ51j$4<f:];{'7ץ-sLHhDz&$t"*!AB/$k	H´BB$\ż+Fu,4a"a#k"c#"$	V=a|'"-AI$^6DG'0x	c:+\wi-?VtI%G"&0A?~DFuiudl%S@-3M70WOvCL8B	yh|JFgC9pv}S杤j؜({V@&]
Au~*u@(ųp3:%$KGfuHt0
~v#ZC\jgayjrS3ɞCNmMh&CpsbJtPKs.a  
  PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/ntru/NTRUCipherSpi$Base.classJ@ƿicW^`u$nX>%Nza
3?_ .0 b'Tf+a6oey]M&hk.+m\KCx*y%E%)uvq\˻͙nJF3L<^؎я37<NjHN!RS2$${Zx<N):c=lSuDd|>9=8<!v=PK?   c  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/ntru/NTRUCipherSpi.classX	xז5Nl'Q
9(!6&q`9H[s'RrzMZ|qh)i]zw]-#of޼ͼcތpsڅ.,s.wXVpǻp.lsp!徐bZtاBjm
nVteP5T=WC\S$6
	Us`^YEur|u1 mڈ1Im
[7wHXءhZ%xL7|PowJܷSnihԧjX8#Puˤ!%	t'֤JugVPþS҂NdF|q=2*/lmK&Tkl9h$TA6+a6L,aT(1))TZұ
(Z8@,U]By(h}(>i{HՄǆiUh9s#Pm׫F{4\43@L6Ö4kS҈'|n:7@ [s>MP56^Lm[L7gi|9W6t%dՐbUMIO$%WVFQz䳺HAcMXN0-ġ7Bf[7e)+ڨ&
wwJ{O*/lc\@F~%ڦ'U״c=41`2F)'Z&pj/_6#4t]{2
󆗛3	(b%'4f-(|%L1mUfdOuǂ@zOYŹ[;x>҇F]	 k{	;JSaEeU:sT+ۓ۷8>GƴJbADz%icUsHT
gsT׫ԩNgfavvt^/Sm)	#c6AUDX<˭TP72[)yu~:D07M'aDk#$H);B
vR|PjГݽ=[iUΘ~Vue([\
EXonTy`f5ȬӲD׮$b	T4"Q3[#aIhuejt:IĩEEimVYIMF#泯yzP
DT~z%,ٷ$?|	3sY>#6$Iv[3 %lJ6/#"pV	\(p;)p%!*]_ "C`@T`P@	.gKWmZ׬
I-难XtkQ1BRjmqԜ=<ujaU1.j(۾gO)5
]UP[t
TE>3ϻ[/1k.,kMe΢M)e]ÛyR,,%GE3!)+Niu[*Ě|3Q">ͽTÃs'giӊ:pkp8zlhL<'}	}/yRYYnr/KΖ'EL22Aodx@e\؍ȸq6XE2V3Yoed=8FFhb3iN&	&Kq&x>ŽOL>#|y~p@ƹxDY0.c&d᠌0ƽ"/19da&1W)=?<)&Z]0{^&1FĽ܊zp?v݁1y҃*|	݉0&{p~܍yp~ᡝޏo0zq=*'|÷|Ob=</,9%mCA#smF ՜+0[J0[J1[J%jDZBPiFAZJi4bI5}suD2OHÛmo76$㿹:n&z2>QIraОG[;Ys,)I͝DܩzPjNj|AC#OW;&Q<<GPEiBZ0RRfKRmWIi핳PFƺf0nh*FPwxcx또+}ɨ79I[4b#^
Q<r'QW]:.IIExHx2rU$_|͏P|ERxW1.GΘ޾j8^XQ0ZSZ_St]p+5nif"gK'j`ߙeJL6oY5{g ͧ
RAC
KNJI\Wǟ4.}J	[ -D[IcL;	6Es؈5x|`Ai!CCz$yLt).Q*;&qG_AV¸T/:޲R~;]$R^^qu`BbBuMXUZz)צrYod
]AwSXװHWU,A92q=Y|v@w/I㒋cS)H9!UI_'[26I>i21MwM>r"g@8^bL*a{?{7SY瓭\^TW؛/ t#p]vS*P:$
ܞH`%}upPKtT
    PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyFactorySpi.classVYWF9!$6-iRJY!
M
H]Eϡi9kRF6}4˽߽ͽwF_0hً/Zhp
f1S6y{3gO)MwtUqtӘafTʴm6dSZbL<J*
mF34KqeKPG^]VRWbgNƉ
(ZN;:ZĲ&$\	͉%fh8eFh2k؎bd֦ԦiJFuS]:TX&#!<TΤK[0t⎥hZOnkCoAckjҝ<kdM;p~SGwlZQӢ}"E+w I
\,>^)q
ѡ	7i%-3mYU&+1,GÔ}3`mTjOR㬱c2ȵO2PS,vUeWeftʋvl3FOyrzV1+-Gc+kg&m\t1q>GG/8s<x#11!sQs7\\jĂ2B}%Rp>ruR0Z<Ms؅/|<es2q7VٜLg<]D9d9?p5s]2L]RX}.>x}
1|>ŔØ:͊#ͼw؇7"DF!]05l|)a&",F'q1zJxUslK3	Q|.!E4[MOoӷ
㎢-(UbE/'Aw/}pi~Cv}y{+CПQxr0_~
'r]O0WB9$r3-J11Z ºiZx6[6*L-,HHM)~^"sxU !{1"j:D;iGVKt~$Y=?#_3:&mThyQ;r~+Y6֎{#F߻X("uw	?A*juC3G
ka~j/(qz(qxwSQ
 PK=$  z  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyGeneratorSpi.classVmWG~$KD(%VCxYAE	/-(XЦf /?s
i9~;y9wfsٿ 7c-j^N	X#	XҘHliL,k(5Cex#Z:<öE9Ǳ]F7J`i\;/[%LN<9M7R^Ẅz%r!p+4e㖮9ٜfW	E1F͌޳YmKPjkY
D9X/ܲi%+ںQ'Mg43	:w*V
Ѽkf#hyuZL#]w	
UwgXGM:} B>AX%e4Z{vmB3Lqbk}K%Q휥u-|?ǔӁ髲XѵWb6#?3Suv Us9uva~vO`S+	Cm^7
sƕ<||[VeSu]-O7լFW(gZ+*>C+m>`2\f#+3\ecHGRLPB	$AScrkXbUsEWlx䨜Je3jqiHM{(՝"\Ma2>	dU\Y?б/]em?+$S:ͯ?w?CRxwwTǰ0,>QPӂ4"E5
΀)8Oʨ c
㮂f	A>SЄI1
0SA
P9]BF =\F/R2}|-<Kb֏%HodWh2DFi IA⮝X.?*T_ќmLT$	( N#U$QѪFIp<F=&f o;(t3MH:!G]X?\sHǥM/qط[<I5
~ښzl|С/ a.۸rLWr[nfj@>ж
0h!D/$ęDd]SkRַr};Eٮ-8p)@k8¹i
kB>9$W,U20Ȑ`p:$o4PK"  
  PK  C:U            G   org/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyPairGeneratorSpi.classVSWEAxDHL4j`""52̮3(0ܧK"%?oJXz^ hŐ<5%a2ރ$HGIE5H
!aQȰ[sXfd(dd^m4J]vdDByʪOGB>%+Jx0=f5Bl`ja1(efuMkUºv jUk/Y!_W8lpnD]3bIX<pm
LQg:Mw5#zh$Ad*swO'7B
B!aڧE%zڱS_м%]4+hkilLqh!@$fcaçcQ7pFh+a'㞓CGMp鸶F,F>h||Abd"l͗@sR=ǘ>,9?8֜a]ijGFM:{6:|$t͕@ԔP
qbZmHVgJi\e}jєz1EvIkub:+2U=X.n+dqU2V˨qe^2e cZd$I
z^Oڥ&sc@S
J1Ӽ5[N-l$^Z-Պ̖Iʬg9Oo!wys*;kǙ8Nv#|p-_JקVhm5٢řRC:P{s6ߘa29mi꾓eKӸ&s$.Xb[Уb3C
UA*{2`PEUle(B@E(waTQPPJ߲XU,b(1'XEcUc~3g3`'BCf	a1D'4!6<
ZA^Tγmc<QxIA'?IS
v)B.SЅ3
9rų؎g^_dQJSfeWӏK66({7N% 
bB#F*a$:OC3[!q;`_

|6s^8^|j8-#}L)X[Iз|Gp5
0:[H.rIP0UL
`ѭ/%(
2WgZZitan?}e)tWh{W(4-J^:<]+dNa>?ChnI
u|Pq$rL$LbpߤM!yKH^M-$Hק%ӵPKZ    PK
    D:U            /   org/bouncycastle/pqc/jcajce/provider/ntruprime/PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/ntruprime/BCNTRULPRimePrivateKey.classV[WVp	@Uj0cMZA,:2(`/3ɘd>@תC}>IF
E9g_}I@/~nڀFxOʗaT*4l~LoaP3fĝ Hul{\y%OGpOL2C[0v@mX䥼7#xnjaECk{V6,:v!%mIxC%MrYJ1˰s"G\h1n;NX4OY-#D!>Rh7
O8٢0-**If#UQ֊uSScO
QLbh餬bzTmU|c[KHnƦ,JV
yeXg|+v0wйk]ՋW}87ᔋ[S*:
NcTfݫa*l;DLbCE!*~Q^VtU3'Gf::0Ag98Le/:U7TijQOvn]?@SХ[;
.(]) GABARe+ЙljVx{= t>v[n+{{һo!JHn7%&q%K9FzҎ}GAy
G ܊:C!w&7}-cթ6V_@\ЛӠc\Cj5H*ii8z
MP4|km5¤Nd4Ôvd5=
m0R|cI똗7<bA
&ADN-,*<P1%R|ʛFlׁ7%Z-@7M=&CA~f⹬͟ШwI@SQMH|2dyrZ#kgŻ+nK$7Dr[`oLLnRT
PWÿ#Xـw96Z͚O'*y
NhlLl|܂HN'BVL
{+I=&)zeX3*,fBxwnt&Fl=u`:4:	cԷ1{DO~d&W<	kF96Qd!
XOPK{5    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/ntruprime/BCNTRULPRimePublicKey.classVYSV@6,mF0%-	ILR]daȒBkE@xHgRC_:=Z ih<w{O 6ClF+CC7eD8CSbmh*C43ęܼVV	ϰ[jv:CbQUx0_pK̹뺦"glu3¬`XnFU&/Yw:cz$f"eP̂Zh1iZeN4
%"sehеUZ
Cvsyjy5aZ\L97QԊCn~Ψ΂Cu0'uS+unm{Ƥ,\Pv9,NeKG5fM(RUmc@ޡSȣ3-EVj1eñ܊EG/wAm}2m|輖e<'%~Mt뚗^RTY3(
vM~y'3XVP3uRg:ƦNWCϘɎYR)E憵٪q}M-;5!0n	-|"஀O|&^I)}a[аuP{|ĵDoU!뉳i׌"&fz/}r%~Z'yYha$[]^Rlk 2yN&.LlK	hvO\GnD% HI	x"9	=I˘p	HbA,ybUėXĚ!,xO(b߉H{4~\~`ߋúq<ķ
^eވp-8\y1+|]WqC|M2-`ئ'ZK5cK(&`3o30Sy ~$m3DK>8gO{hjM_O`t:`؇۰SEwy@A#5yh`q
t95\aTBe?^m>|jګ<!_=
6-u#q̄xWË}XwN'!=5y@{7,W'EVz/;GD	9H#Zw#ˍTr=OPKiSm  0  PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/ntruprime/BCSNTRUPrimePrivateKey.classVmWG~&,7֐XXK) R#!Dآ}6,&qwoW99CG",(ޙ{nϿ \-P[p!ޛCc^)~/%
4gh6-a`7;ܬYdM0Ĥgw
/{c.T<22=1%<瘫*m-+EoV0<Pw1=lr"mYtR(%l-Zn{aDbŤ8qyr=n!œ/BˀfVxɗlQS`<F;PeZ\7m==3eϴ-S[ Uxy*BawlxuX֒>V䮛)Unۆl뤯rQT3Β@FW:w>p3[~hS-{nyNP7y99/k\ُź'% 'jjW
Eub?c%Ja`?:0Ag98Jel.:u7ɋsTij;qo]?@SУwWpA
SpQA\AK
Wp;gl_^xCo Dt6v
[N@[D⻵ICD4Hj\~#Q}=ioB}߄I5WXq(QGs2ta}GjsL>U&*+_"~X^ћ#РcRC5K!	4i8f
P4|+md4Ǵnd5Sk8:qGC!R|cKܓB0K Pq
\ňԍ:U|eXKaÒq|)W
>c
ז^yy6_(
#A0Q4}8Çx*kA04jdk-?8ab4X=x&KTz	O'Dw&xf"MԸ
HWԸ_ѕDj:V]

|ְOS,T'hd4Nl9|܎cȄ!=S	WkI=e([4Rĭ]! :
|Ɉ0bo]r=46I,,d')7O'.my阚	ُOH^Tc+yu<^PK]+    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/ntruprime/BCSNTRUPrimePublicKey.classVYSV@6,mF0%-	ILR̒B,Y2LkE@xHgRC_:=Zxs,\ǟ Qm؊vXƓ+ͱI)H5pR34g0sKمEBa+vmrG}V<W(P5cd̫;*{ +ު9jm36yٴwKՙ&J-ӆb<E@i*qmyưn(_/@KfޮV*-R䁪քjpY3|zWQˎf=]?Q89@aFO+NԹQS:9:cH8]ޖ**EU>1lZymGWenC.D(o+bUˎ)U)[trmwZ_{ל׳Rq48i8E&i(#EUk+]WީʖU.TFΣ3^ūTp9hsѪaji\_jSK-g莼<m-?L$ঀ[n#c+S	' &_@\@B C::`f,+4>n#q-֟=}Uzov5@4ñ</cvF~\a6DnVɷZ"I7*{  vDI|0gj0;ۃ>GJB+%t"a	cZ HAFBf$|g0/2$\7b
ȉxeW+X1%E;Iw"O"{1޳627
ţ7"="9+/fyyo*BxIF!
;Da?\V̒B47؊'~$i``Ǽ_3!IwR<q #c< Ǆn^"+ZaD}5yzT!dSuhl=s'!.+U*u@
e8MC{%$JwfouuF\K~p}8*xt#:\!jʩwruSdyOM ҁuOp8LQG_PK"Uq  0  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeCipherSpi$Base.classJ@ƿicW^)
"B)hvI6q7)<	| JofopACg83t5C4}=Mfz
+8]ԦoR/o_jm
غ?ȵ.^$/($ήB9njT6#rJ3Xxb;D7Dp<l^(xZ;m<F;VAH{cKJ8AhwEO{f"vPKX    PK  C:U            H   org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeCipherSpi.classX	xזV:Fq+#l1Cjh+!;rm#CKIKKm)0e~4y33o[? *dxd̓DF.qe2qd4,Ð]`HR_H}Q=2SC!-f{Ը:Z<Bd_RߦGwJWLzGڸ	06:eL@.X6VKuzL[{Ϲ淫5|d,Pgw՘o6ӓOCс>RplH[.mW#ߖhTDKROu%3+hSӂN`BzX<]54^؄mK&4kl-9J͑pNFCQrP#xHR$jr7KBMK(ER9lҫ4ZGGhMښڰF$xqfEm𥬜f(:mfmHM'R(k`'һ	jz%ф93
n7sN#kAM$Au	ApQJ|V5蘸	) 'UqhM@mӚ9<eCDBpΚX}ϵɸF[cL@DA5Lkѱϯ{*h#l?o]mPNdMf\W FMF"h)vmpd7ԜIGac%
Tv+#\(Ң*y2ŬUJ=!
&CC=e)/
ފŻVXvgK(>3-m}֪^0w>YZ^4G*8D-eKhu92gVs0j$ޫIceU֪6eιMԨSI<dfavv]?SF-I=4RFDKc6A-=`byLvXQAތX>oxՕ4҇q&	'ZR%\ 5n
i:vF|Pj݈'fZz7vRLtXE4sVec0,;mK=֕k5GcǼM3mGh&c$uԄV,YJሙ-#aQ)#TE}ŧ9L"θ]d:f YaD}CDDa~I%K2B=OF_}.<	gҾ]Vb	!\`@sz}$~.x.H $0 	ll&1Kӕ_uثu\iN)i.8F:8ңFa#CWCxA}!?j)CJu}W?<jNk{IPVKr
Bsgy
g&4=2!́(P|3JGήD~M|CT	JSE-GDbU,aks/0isXUiE<Ӄ
ţ;DcOwQru6cyrpIb˓߈2eC
ނ+>*Wp1>`'>R|LY`1(Xd5IN&qF&g`2¤	
:$,'<l|{QЅ|V|y^+OZ<L)`\9P
Z_irn|ɗ`2 G|ōWn\qe_q5O»Xx7kar=܌q?vV݆3y܍*|	ݎ2_q~7n܉q~馝э{[7>o26Aq-}ǘ|w|c=>o4%nKB#mmz pN-%Rf-R-UDZDjPn>AZLti4b)Ulk8:LVo}S1^n{JR6kF'㓐La*͞)ɚc͒I~מ;\/JMSP@$5GgQTt#jM3/ñْTgFd.hr&XP$uR(*c/zgzr箌)z%R06NF:Qp'%C0~OT6gFqb#K+v!tCAT|~45=AmCA5^Ǆó8}
=	<]+GIycxn5pMGLӜt_p)\.雓Mnwm'gIǰS5Frţ{+M2riBytRZh[Vjw\]^?)RM)S4+=<mVJ2D,f1SXi&[c>ek@߸_OC0CBqIfKs)߼_0!˼lĬwR@e/N+J~T嗽bRvOt*X+9s2*vѝT(zP
\
^A_dm
ËuS{h>
+7o''$cc)H9)UK_!1[Ʈ9_FS i)Opȥ^8Ɓ	wyŸTZn%_,;_@J՗t!P}.;
}	Ib[Ry	,ԡ$PK

  `  PK  C:U            L   org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeKeyFactorySpi.classViWFq	I
Mjc@MiRJ!bHtbpFR$_Ai9~h;gyΝޛ߿
.~ӏ.G5~
Ck19e#ixm5Eߵnl9pmtӶm9hP`,-ROman03ibZ<ꈵΞ^O:CW͊l0%G3AбX;'Ѽ3Yd?)xJs]nmRx&3iN˺7FSb6a8e4հԙg{ebhǂ5IzjuUַ1\cXHmaqv/Θ-elP5G1t5ئ4ݳJ0x++\C-\C\&΅xb
V{wnXNR]Ҧ5K	UsQ5JmUK'sbPchs5.Tx"*+oXk[PmT5)5fwvի2nAǟ6@ahLIPc幅ET`xxQ1LJRwrU<W9qsp\qm89"C#*\Ej0W\ܘ=F|ʅn5q69C-8 
j-ƠJ}_|GlcګܰZ:}ltt"s '=nZ׏)kVpR@ȑ@/pbJڦhF6ĬlgxI(􁱢V
cY6\6_(Úq阐#c\O<16D>S&x  +z{v$<M~K͋éf3	3GK->nF~/+w060C_`kۑ9ls0$6Qm Ja?4ms<x_j~P[5I>HeAT:Z\"G\>YN7zTZD
 xJg|Ő}@ޘ!xԪlo@A)v^rڋxZR{P+(=B
VmyDmh9*<c^)9Dt%GpxwGz0PKT!    PK  C:U            N   org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeKeyGeneratorSpi.classV{WGIX*XKlXEEJ!%Mim6fO9˞SH[)яQ{g7/69};3?GC=:-!z !ZenİoT{w5ϰe{lql)MXg=KhVڰ	ēy#U%Kh^.4t|5'35?ک4*#XcLۮ=,j.A	KeKY#K5e-K:׵MM55+Θ&Okf8tT4Vr)Ҽkf#hyuL#UwL:ɖyǳUBW&CBqO KEH2-=Q6&OUhZ+DR	5;gy]z&?!thsk,um]lGujnba5~Z=i1PQw<,9eVۙwPđEko)VSTݿwJO7fGgjy:ufaϬw1g`C"0\b2CE?xb}zߠ}HX"ӱ
\JL+.ӳt-(9*RbrxV\9Fc3;N\1DB.^%^i2~PI|e)L$`M
Ra=\?!joo/+)9#e2|D6uw0>VPFAZQpVu
N)h'BeLqgpGA 
NcFflNA30EA	$OʸL_ʸ \ƀ
`U-<+BMm<1e`ױ,HBrN/+o,h}mHT	( N#U$QЪFIp<	F&6 7"x3OB:!G=X?5޽m6D웂-	n]%[BDl	 Cm
Cl
PH@
:İ{CLr w{dwq#k_ACm`zKBCa>'"I(﵇_>n[It!`o,
)/l XB"\F%-#CBbo|IɰH_PK=Y  
  PK  C:U            R   org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeKeyPairGeneratorSpi.classVWW(PTHmŨ(U(hDJ\60&db}wkWWQs*?oCP{ww; 
c u<47%'RCn}@ 45&
.
kf)ORt-@$Tخ(9mEV]
ɺ,}X"UjjҺpdɃDFHSd\7i[kfMMm(_T|:"-Dp|@3SfzxZ)h[&LQK\jtN#!_ǤH8J뾁T.&eLnJG|Job
(9"öڲyKk\l^l^mwճ/j}=ѸJ̎h>2964@'tկ}:Ƭ~gj֠jn-lK!=3,cZt|7|%B	MѮy0e$!W
֜'4?gdeeW~VtPkgkC!T`9^zGt&2Z3L'v@^h>UVo%[W
DOj_Q*ǐ/+1|f`"G
+E+b"D^ă"*DT b*DDlAo{U i#5@Z!IGJe>\i&IbhUu2^RQl$^Z1SʟSmlfec.&;2ohұ99<n>|G/th̆Pw@Oڍ3ESvvVd̹PrvĔ#SЦk2#L%1s#U'Y{s9nL4.K2@vtʨ[%C2֠[F9}kgxa
 y7ȻX e2㐌RQqTbQG!q5xB]xR"B(=2h2zm00QD!"Ǡ33/D Cf32P%4i^;xU<Z?ޔx9	xQB^
I؏gޢ_h/}dzmE=NJOD<%B*
GrF*3RJ+A8B+/<4ʼBxJ|#85Ǟ:<I-#;G}ԓR:st;~
c/l"zh0.T<L-Fp{Q]@lMq4R0
b'խka!6
+1JK>TH2M4Ѹ'P@ @T׮ajPB"NCٹXO8=l^'vpe{vwc#1_JN]IY*'q|{>woGeGK#y%đuI>t$o$9w&%PK    PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeCipherSpi$Base.classJ@ƿ5icW^)
"1]
nM},O'=8a?>aG3ޅ6dӽpR^fŧ6keqUbq*Uhk&ٶFMx"y)E))uvqӸ6#Z3Dxa3B/Bp8[P	qY [1HNAH[cK+8B茑 ߥȈ鐽cm=GROOyL; PKZMQ    PK  C:U            H   org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeCipherSpi.classX	x\Uo2;4KۄifM4S(&iiȤԀdɛaMۀl- p
jd)(RE}WT<7k&)~{Ϲ,pXB]XB^\XwNt-.$\N!:oPս=<UA-jxzԘ:Z,Ղ.oB߮Gv+&=_Q6n+Nnovf~d
qCh^Դ.]'HG4@SHWO^MFB*LڡCޭ)%DKBOvoH))M@7P
6ݶE&⚵@ޖ,Ėp(W&-Q 2=S#14M OPI
;aM䊂aM	#zvEG6nUA-n"#tmmd]HWָS3@RN1h6bXF4arS$~b
xj7`z<5d9=f7s.#i؂AMb D0uɕ僚"U.k1q[9,_!Nkvmq;9kJ'bo 2lIQ}\(pkl01F.>VjKr%crYUsPiDQ oΜE!c%,9)#<`]^yfE^L>mH3'f#Dp(E̞SJ/cwc#Q#Ҧ c,UѐԄԩа<hY5s,T`je[b,faLˬ$Ja`!R֫	ceU֩6ι]ԨSNxhx}G~Sݍ[Dzp$ƍ؎PPj!Z)Ib
Jf]Ʋy33&:̍!oIv@-Y_߱!igG/	&WЍXna%׻*j.wwEv<dikOk걮\==-li;J5i%ؕߦƵ|)OSlD3L@k,PN0Ah_A;Y.T.:*f;![aDӁ^IVa~[%^K G7nԦɫ8Lz1XfH -QG<^D&%6KM_%.$.JHh[%%B$K%%tDTz
u`Vv"/ n:sKkfJ##MIS+yxaL.PTBj;3T焲6W4kw*1ǅo\0Y{U,pmh#,?x[od[Usߗoț*PZixj?HQ]U?WtU&X?VqZ<c6
";gEcw1ru.eyrpI|Gʓ^2e
ބ{qQN|T>2|\X`	*X$d
IN&KpF&g£br)&,VЎO(`b0YO2Up
Y&Sg>W_Pc
¸?&Iq@A+Rp:.^|A&L1yɗ|ōW0q%~U*'ʍw5~Lnf&0
,{#nbr~ƭ~/~mܻ3y
|	Ln܉0wn܍_it7|~%_/1F	ޏ0.z":3o_[ެ@|mP}|
 @3zfKb#fK	cGfKIEm((ԫ"~	8KAt)
1f
O	ho86N?#%d{pSJ,ud븉)48QٓG-LΝ9,(HΝLȉ}i=׋BSa7PTc̣߳(JȐ?5Ni#XF-23j[$./&A+g
5Mo(9<q+}Nn%=҇m҈z)p4)TWNI͏Maw2"lC$cC |>45=~cB(cxngLaO{/OPKb65rLsYvX\^\U\l$!ٺ)ۺdl+j~++h}S*y0SD&>C^oR2@KP
{ĵWK[zڜN*J)\__4&u
Iv&Ƃ4vp#c_vlKglȇh< etfhs{a\n3Ņ>no> 	Lpx% G8KOzGzbb!M׾)ܘUzm:kz9-
䆅t]FwPXWP]/wxk_2q>yR+7'&D	B:xRn_QKOCz4'kєi<HR>n'w
=.rFMB=r\RCZF3tG2{nk3O7R9s[F>_G:{(PK6
    PK  C:U            L   org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeKeyFactorySpi.classVkWE~K&ݦZJBo&XP*-@"W	R,C\MJZGx
?;Nisygy}gf@?~ޏ G:zP1Wd0
1-[lvagX`;eMضxb2B)Kقb%WI%>Ͷ,̘aIa
GĂc$"{b-n
y7-RQД5-9	Js=ĨhԯNP+Ǆ7\AfԭuA
Rgt=iXᎺ3IojIM5,uj>[fXSs"\C:)t`zaF|]8+cx)uLjqcV\Dx	G[mB=ˡG2E2EU0=!f۽wKq-'Y	SOŅf:Ln*-Us	')sbP+cwhr5d #G<(kPmJ5quMmoW~e&m[~јiUB[Z\YXNa߆'7<2o) g4hqu79nqP9z98ާ͔!ei.g'ts*ސg^cWGO`!?n;3Xk*_T*v>?GlwJK٘Bh䩢uDI#g 'ݯ_%S0aR
Iq   m8#[J (˘
|,m`Ffe1@e%DxGT\ *Ŋ,BźA|`X:Fdˇ'XUe}|b
F4XS0	!qz3ѷỐ^碞oj@AѢO2N5-ʗkQ]۹g@"2?0]	_lg+<4ݛ;Jwp]G:
+VfvBS(B?%TGjI{>?{jXʉz!Q|$ȈJxEUYErZH9Nӈf<lT$9]60vx JW|ǰo˳CorXem帕.t!-W._;">ɩ%UTPpaR0T@T:v3HOs"+}|<ymzT'$R0PK.  0  PK  C:U            N   org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeKeyGeneratorSpi.classVmWG~$,kT(%VCDQԈ6]6cX쮛
'{N!m9/ПQ{g7`sg>Ν~p7]t?t?<1
FݻQ]2æ决9۶F3H`)u+/i&|OyT&$Us\sKΦ擦ٜzN[	gE1FZfIp	]V5@\v!^έ-hYеnqC5YiHǖm?ՊƊY.EBU<,r-57UCOz˝*NaלZqBW$l]B[U#R+RQ_F͹k	צT*<[kSO*!n93f]xD9؜:uM]x!F=3򲚟\,vV(R#wgZ)urg҃+bZg9og^A	ێSgl⩺'JMUZUՍy:
jaZͰw:3\`dC0\f
UC7EZ=U	1=#z>w~uHBHn}.Ri;]K:KʩT^v wE8_QPWb{*	,?鷁U*l
Rb=Rl>CZ #d[wDA)xw
T,H+B
Ѡ3D
2aB,Qpb6'f
Z؄,	rOe1|&W>ATu$eR <sb62n _2n㉌a|-VqIUƭ=r;=Ƣj?PW
K)N:	Qo$BZ(	n ~ATQ9]&[uH"tVH'@hl=`cp
.{@%#ـ>dk-;`	zaMV

HtQo413Rv`cxaCIZ,zvAvi70f:$>s	/pj8XD|#dq\JGg>{c)ֻ{8X
p.:`#a	pW1031`U&#"PKS  
  PK  C:U            R   org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeKeyPairGeneratorSpi.classWWWaB]UZb@*4"%.vi8ؽvjUJzzz#$4{޽N P|X	$A2Z}`m#ÆO
I˰5khMtÑ vklWCCV=
E
0H(E/hz6z5qdɃ͈A(3SdҴi_&
ǰ}aCo*~PA
A#[@tȰv̐%a鬒ϱM+@颶7Ub'Έksk0P"$&[+(=}!R(
Q;>-,hV&p>k'hu{$ܭ!6u0y-<b^#`F[#s,+˱a.l启1WBiyLiҔ-EkT1KɚFTwKGFA]ijM$6O;m&%IM	[oN2փ4аQ2%c:-/0S' 7֒g[ǫ]l5VU'
fuY	yC'ۣEAӳwшQ6]dqU2V˸WkeʸOFu2˸_26(A2*ddlƛQh3VoJ IWgNRʆHZ&Ii^~xYy7xy\)<Wͨ7p)8D\[>|cg8%3qepy]Uy\s[ژ}4W)$8S%(O˙(o93C-bJ?ohu&.9}#qY{9ڭ*h:Yyސo+*!_**_fP*fPP˰
>w}]<,RQ*pPE	(_8b)(fãP:<.<b	C4>V[T:dbBa؃  0p ^!0pBA#VЌ^cx]Ao<7lVi/(h3
<xSA;oYtE]xI!*؋Wr4`^.Nfx~{BMT;\s4}h}Ab;ѲCl&Fʣ)y8cr!f@D$18\~\c8{US#qd>&/ɍӛ	~cгiuW-Do)t.0]eN?f
泒q|i_yU hZqZZT"0ИC*ן^Dk
^/Q]Bǻ2+	.bP֊^<ύLy=)GwS=,]1:Neu
JDZNNLb]p~_G
\a!$$%I>$ə$ɇBv#!ygZ2oPKj    PK
    D:U            ,   org/bouncycastle/pqc/jcajce/provider/picnic/PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPrivateKey.classV[WWNUjkH#jz6.09`2g&hzO<е*E_$Ĕsξ|go/ Ws14D\`h,%K	Th"CM2Q6E91
4"2;bIgTy\j8{bZcnb3tf
/d{gׅ1t鉒Y
eűs<'UeWm[1e*',ΈBIqjyr=n!
3(||#آɬqwmv %O
xfgé6('i^#F(msZǳugm`e*;\JdU0
DMQ#avVe0wйk
ǆW+|Opy~A#TrrU_~S|3yNró*k Y\9RuB7-Ji
3)}SHޱ7̌pJ&ƫke& ՠNs^$ޚaNapcQK yjBh
+xO9D()+T𡂋ڭ4J!<97wڡсT	!cZ^SX
CJ0>\j:?k@?zX]9OH.YAkj:dE~Rybs_N]/5r~<izptLjhAN)8&
gѬKHj)
"8f4bVi84t`	<sװ(*F$7*7He)[*FnH
C8VUR|EWpp-ljc{ϗtЃ!G"Fp/$4!Q#[V'B{;߃o)̒+40Y{}ww,'/a;h{/~j`:E5x!
M=]$fb`}`0͆M?ɟ|rg)<:A#-V
n߹ǐ
N
]djx\!cioؖA`a`wuBHCa-tFl+z0;Cc	OCχӓG?܁kj&a|L2>O5Sd.ƳmXoPK;  s  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPublicKey.classVYWFƀBN B6mM#8!
)KYYH F,I&O<礄Ӈӫ`Ǿ3sw̌ (7CnF+CC7eD$CSbmSJ4l!:;fik"S3V--+2C</BsK놮!mnXYKL`VleTxEٰ</%'	#gn rԬR'VMzQEnIhk+쥢b*/&w6(u<nM]2* Y,K.Ҍ-*mhp3Nq-dfێ t*Gh%jEY=1j9u*wuvM#Nx4UERW7f{UU^ru㨦]>#SCy5&5Y=ͥh[zVؕj'je<ߡWvp󫛰m^EIK[2N͋.TH)ᖄHPGJX'IHH蕐0/{=p3yBjwG\Kfj1_OzZ&Nx<"\
8~.ϺMyޗGOȐSFN@o08y.nbJA3yѤQ1H
cFA?TЅ* Ot`Ae,*\ųcICĪϰ5Cx.sxVƈ2FeGV<	˘KO|Cm̍=bK.^sn!!D_CEi ~򊧹Bf̑,"4wL~k|#,Y`a+_#!sJ2 #GxF	@T45ψ0>|mF_0m"Rͻ=ꠑؚ88~v\C:]A
W؛T:F/6aV&Mo]OދՍ:ԑ
u1/j}҉LkqM.0GP>	{7lW'e8%?5QB~L]s#Cq?PKZV/e  
  PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi.classVYWF&ƀB .P	!\I69W;-tyOC;0G;{gw &/hՋ6?Gxl[a1eC'=ƾaZױ4UUMc$-˴]m6F%M[ZbL<eiCfuCV\mSԑ
yr;mED#/ZIͻyNZȶ+hW57PAᬡ;1lɂḊYGvBE))EMyauH,Z1'M(F\.x~&)õIW4e:E][7ᤞlԤiyH)	}v\<&*ٜM!kE\(.Q
b$:Qf	J}ӎfPӪ	MVcDEWF(()(k_uBケk2ȵGM2U{je)"']=!F*ZFL#QSަ\X/*7*#kso䠸+bhq}9q931E_%l
q980;RqŶB> kKELlkhOUop*Ž]姺hpN0Q	-?U6g! +E2OW#Q'Y.A.q7S31K+x#CV
eq=&FЇۘasB6C>|CE->m<MTo1lJx/$cC4R4_II#S	\=gJ>"PD݄_&[zЋ9*b,>	CSO[SϨo3XA]N=,?
+b*6nb|X_wg ^q@!'qC,#m蹁Y"ŏGx/s/fTgTMHsr:zO$G:Fwg N7YX'
-kGOKZecUndr#(lwn;&lk݂ϐ`"ѐEQZX=T??NH䊧~: V?PK;|    PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyPairGeneratorSpi.classW[W=0K4JDQPD0:;bzjzĒ(
(˽XfE!;3{NP?!gcB6J,,,!ܰU7eHBDPMP
F͐讹l-\MWLXEnln0Ƴ%*A!αZɋ^mIӈ9fjbΊ|`5)oP+M
w5i,.0Yo
mv!wnÌV8$atQX yL*cdҫO{"W0$2,IT-?-a2#be~Na'oBFG]N[
+m-cUVd$CZ7VutR,4T+ ӛ'jAh8.RqU=}(ˇ"_VlMpE秲*5򿔃T$>}"C#O&H((JfR	Sz#HEa{:Osz!`y)ܞjbmϳӿx
Ɇaװ4ٰ
3#1,
ׄwN+[395#\e\!c21ET2Q c2q2fʸVF">$LIjlݹ5I
15ȓa9I<R]uAz%z
jR}d9<'Mg)/(a两pP`]$8kQOLMǽ&pZ@poޝlnY@*ŰoK]P|H4~&S QzQyKTgI ۅi7-V1*ʰQE16*lQ173e0!PPʰ:@cZk5jXVcZY"[U,a*fUMh*0dPIE9LaQ92lgaŰsCe12bưv;AZBa.a>`x!axT2<1<aJ~PWJ6YgSO)k
xx^Pj(/+q
x)"/CUJpF5>oF4r'ImA-.#5HDwWZI3 7V3_jq|݁|'q|8xL#[zuH1LGلM32ur_nS9XW8;ANH'.FPBօ
J擱8;g:ig8 oX>ђ_^ګ794f8w{F}
('ф/^m7}2;3D4?Ԏu' _vczFMm]6hZqq.)vmĶ%مTϏp;Sx~̻C0y`{9aNC`0G9&<qa:9%z¿PKT`N    PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$Base.classJ1Oڱc?KDnq!T.)B2a2NIrUPb2R7U&{%yx}p=b#(Ds!3jϴQ݌.HrtEjJJGQe	pfl,(ד*ڗ0NW'ρTDrzKWF'?CΆYƲ/T=dF((X
Pokӵ*
 >`-D
	JNڪ$rCPIގ1 UGE.}j*Sl:ٜb%oq[]::WPPK^ǝ.    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$withSha3512.class]KAQss,"ԛ,@4H6/qXGlgkVWBB?59as3
;rÐ)=S
_k+є/B]~#W¡PrdܺlZS犽1<%\%4Xqp#1@H?C#_Zbh];9<21` k0p[m)Yt
H%.e&VMb"NS$CA )4vD`m6)C4PN`v)6A;SDTȶHn} PK{ cVE  7  PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$withSha512.classJ1cz"AQ*B0Rp9aNIrUP♑sB8CZk1OT)NHiM?2J{:NB1=E<mHc
.GgbSу &+
B3Htz2)$^Eɥ
f8ի,O^kKӼ\i"CےsPk|c$IBt1ڹ,*6QQai+*E:2KFK5jPKe6  (  PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$withShake256.class]KAIssﲺ,"."01!)"am?,VWBB?1sü3o/ *b݄̉U|ʰq{.HBvѮt=Me$d+3:E_Qܕ\ ּ<w+Q'1&%|%(8ep#nGPjpȍP:b~$N۽G-d,XfniY<[e#fܔqs6l,aF?UݒGOpF4[cDhpLa-)
CM< <ʒQnS4֑ PKbЖC  :  PK  C:U            >   org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi.classV[WW&LJD
4\
"-
((7i*5e@g&`_З>kUXҾGgf&h>۷ϙo øF}}aw&( \jW:Tp "$9<=US̩*'fe2?T59+ ʴ)fɦlf
8.&FJh..,2S}/S%ĦXNr6Kx ǪNl&4fv$HuN);,ZuyKNde-|0VuqpҬ}lvSrjImKΪiԗb|1Nt3XsWdβb
[OLx(/p4,7+?r,c]ff:6Lu
L	~'լ8EI]mcExgj[}t׌ce}l鮚7bwa[O٦e
Mb{
etcZ9u"][,'⢈ED4h*MG"Et%[D#7't?O~CN;o[ Z/_oecHwo(/{t2ftm_-{W5f9C|wYL6
	h?~u38X
RZso3N碄또PI		<ЀszQ!!"!*>$jWK)	Z$%4aZB#fx\Hq1BEwe\r1=,q񌋯#V#D
wS.>bι^h\OL0d~`JI2N-+31/fXUEL T4
j9
F
!ئY#ItE]]oy/ :E0ZL]"zhw#1
b퀛c.^3Z|景"n1hhBho*¾hN4d JrJ3M5w74!:pGxFloѾ{x!`O5ؘyfCK]+hA+uE¿4
/H;~lr,:<:- ;K.2^aTy:y!/aև<ΚK[(oI8QPKG    PK
    D:U            ,   org/bouncycastle/pqc/jcajce/provider/qtesla/PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPrivateKey.classV[SGfYDE/ɲKĐhX YrmavE$_[LU*JT*3"Ŝ>\ zU"	OHG:%GRz*nIn`j4+!$k9fJPB厄*</OƺJX	u)r{2]	miM.J"
-=)
#{A52K>1lJV2
'*M
ZOr
O)
\bRQDy֙fd#g]#cIh.htV6&]epvd-l&Mfg"C	TwP&Oj{EVimsn-;z6kϺ-f]<׏a$v4\ٲ5rthwc^b}2ڙu#mm6ɴgY\W8Y޼q
!I:	C%Lfzju]&Zތ-(6ˋaZ3g7m{!: [9?I"れVm2e\qIxWFDFNIh+Iސ0r%##
q.;x~tVKga=ZAN4#,ET9ndop4Q"YYR>FR*ԑ%z6W)<Ћc%7?pFY$BE\e8
e*N
Q+D*
тrըPqg*q[EF٘SWq*qGE
*NnpO_+Y!scN
n &2	܂B K!QkvgmVt2βwقN#|2JUC%$<+,n<3Q'jU1M		Vn!G	)C=}aB]t[n6F4
g{vuA$gM͋ ӻ^*L6c*lŤn=nb}
_p">C
wB;'Na_KqPW@Q|F/=ǵƃ;'}m|r66ȄGF_m!AVuhۥ: _\CᇃD)gG;a[
BC]	ŭ!8	PK  c  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPublicKey.classU[SG]T[4Yv	#F#`]**B3,23n/|S|T%@%U)󚟔JrzfvђbOw\z0o!H/Yh8CcT*4liĴM& 14Hl3wDj-C#'2CO0ϖ+-XAX`hˉE^} C{{䘞(dvƬ|K*-SQȉ킳0ӶqJ$
-\*9=pYa(T9I%PPyKI
HM 2uS/Q̂]%bzʺgm2z;UJvnwҠN_>S+;'/Q6YB=]`Gq
\
z3P-yOXUuݗ
lݴ=,rC̃T63x Sxf愣yµ>\=wh (0GAdIǐf<7ʕzà3{CVhSFߕ<YCyqx"ή
,Ŧa;gS*8#VpFY+8O| OA\A! p*y.oO8?$|"V4oy&}Vj;s)z_ƤY\Ξ]1ީ{lL:U\>r<mU
{gzaLC74(h8"Q)%E5F~06|w[ZC/&4ǔLkpF0H1P* *fWq
* WcVN
|&KHŗF(K޻kI՛Vjeh$/>Y⽂|${AL|F5ШƷO
F"Y`P0/%Y{XyU|lpA'_`lbmFB4JV	چIlȰ
Un4oTձjaH;Pw"	H~Ǎ'M[(n	
Qm!ELBҊۡy8zOĥkLuÏ
NpQz	%
zduAT
FF߾b΅)wԭ.oi~ϮpK·uQr1Hm,&B2$CpC[s1AZD~?PKL  
  PK  C:U            <   org/bouncycastle/pqc/jcajce/provider/qtesla/DigestUtil.classTV@C)mP*ޭh,
^ꍛZEP"
XcR>g>or<Њ='{9sΙei<CHKf+x!eФ=JVFj _bhx4H_fȝ<	U6Q|lCsâ=a{;˽MLKɉW"{jt/C,tU_]9gmi
G^Xah+%
ƴ[v67LItStDHŎ|c,XA=9Xb^}ר6jFfw]TmENMS[Y˘̒;'Ƭ=\)/D|7:ÞS[p2

v*إCn{UO~ѭW!%Gn=;zV~M$x.|13ɇ]Hٌw_%	'rf3k7яmVW]ےYvh&]64PVE&q\r'T`HIpG'_	g8Qt|]\0(a(#&'tdHa c8'BݸHWڐ{%ֳ[fq9|R`OVF}ُA*ݕi<"mj2IbnKjٶ}
pGV\%t׍v6[<Fqs׿bMԮWthϸ52@[NRˋ;z*&Sj$"dn졀 /"}`SZ?PKū!  L  PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/qtesla/KeyPairGeneratorSpi.classViWV`! 64NƄ ICXp(%B,IvtI/Wt	8icl)yFoͼ߿`?B o	g<, 0c#EXШnԲ6)z̄n2'd[,6$+@$9&DڂgaMz5Ս1-mE\N-eg4EW
akZ= Ԁn˪&솚QC5ʌajۉt}\22Q})=CkŠզq]ӾߥDYv?2:*e+PVe5q
hv6ZʸMR$E:KzD%쌮1g%tǵUHmiʆnhVF_c2Pd,:^%
=WQ+KCpRLSn#nhb
{D^ җ׏Tqny	#X>
U]BGC
AkuinдܠY2_*MSwHC3`u9>񒈗E)E*Kk""Έ8+uD!⼈7Eo5LS,q2.aMk"LwjуC3AVTrOWճC3qiH7':̻Ngyנ<F+{qL=um$r%=ݔPUR#2N" !2$#2D4P0%21m7e ʵYMцy/`A	.DbQזd`ø].\p>.}	\D[]=.`U%\.aI&aL8>0p\UU{jsUMBKpOt|VS⭔ody+e;),vaHmu9dysx<؆m#
:GG_͗t]gVɞ?1yۄg=#zwS|[]\܁s!/
?#Hnԓ~MU*	x<pΣhά;2ڳ.zq5N|P7OsH\D/%rKq2oO5y|C?Y(2 PKo    PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/qtesla/QTESLAKeyFactorySpi.classVVG͢bEB@
 8
C13("琯 /	dy'!IKgzU}gG/꼨F/8jC?f1x3t;ovtekXh'I&ʈ77+%J2h07Z3L1-LakXuD܈:CSAΊt0D˶f:q~˶viWl[yctXkoL8

'Mİ&3jNfMr#fjq1E0\RjX.20bV̘zLRk:.nleh;E]0c6CWV=inZ1SZؤ9l>ɆL6eS
Z"2E+Osri6GPR}ˎVӺqj9]5R@eTbGw|㌹e1Mf3S,um[j¶REMF\
9]A*XF,3%)oe.{z=WPdt.tƜ[9(a*ϲ%Eu\1r4sq>8rprqT\əs/֤[Эrb{Z!}%|"k&k[5w7?c%.S]08'c)2u᫑(ē,"7%<\̑!\)Ჸׇ\#Ňv|mL0))
ьl>}x|xeU[bU|
"5|%`]Tɑ/d.G\sL`SA_(Kh٨c/=}Ћ>jμX/Yt|tӇ6Lw4kQ_}_ t`UY?0C<	O|wk8fpppa!'^=7-3eh!!@#Ÿ"hPi5G	`CI[C1zn`)Oj?OjHCt)^T2Ōrstn]NXdԿ":Cxz2x~jW|piRsS}T̲rJ7S7P;c{yĵvg(9ZAb0RsT5S?#P\;Ah5xQx
SQK~)PKH{i    PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi$PI.classJ1OXZDm7وQB)HeLC2i3<3ZAMޓ~Sdkڅx s&]6PIO8/(WHIvc߿kјgn
'^_(:"u=0+<ѓJu;׮tbZP%gnaLe!oa͂e`HP0@RW+/MampW6SeF:vll`F	e\+/vځZ>"K1;3tQ@Qx3LNQy^ &&M(~PKpG  i  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi$PIII.classQMK1}ڵQm/UQRǘ%efY*(1[f^f
7 '8$=¹$<l(S<,Ҿ\%#ҾD#ڍ}f	ΖGcN
*ȾPtE3J/`:VIR!Zx-yu;׮౒:i3-P%^ade!g!o`FP;΀MYQW+x-a}/KW蕐)!m(bƶlQ!ȵþRgQ$"SM-xzy7c
jJSP6iofmr OPK)TI  n  PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi$qTESLA.classPJ1؟kj%H AV
c,qM},O>%fz曐noLPL9S^pfbj3:0\'8!8M8K:ˉtfQF2N͵֓m4&8ۚDx=)B]	j<(asFKcY-x0/oy8D;%`?@&AuMAx:P1cANRy[5ǀvE8X"tp0phPKE
     PK  C:U            >   org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi.classV[WW&A.ު"J54VEP\jSBE#(0903AZjY/}OruuFygϷL? ՌxOBSoNB4p1K>{ !#eR2v:Hdh7t)UW/\	KݒQ5	xT{v}AV4u/*K~%H.L⯐eJ<OiyN(W,MӓO4MZ3)tX
l1[äP< =\/3֚jyU9R)*&8izz.XZQS=i-:7EVM
: Nt5=_Zy{EHC4uI#յ׌pӫL5=6zw21kSj{JPX0
-&Zg}Ô0&C^C{Qۢ3?RvvX0vYbn\	:=1/4vw
K[-pJXńz'|;QuvuT>kCP)Lq2NqRFB)o8-W;28+#)OFŊ(azٗ6B^z0ٗ!nPo6ow{7LݦJZ}W9ׇs䫺|Ԏӭ%N؈㕯/;ٝuCʵWdǭoN9|
7*hfEqGQ.V|S
'
ᖂ#a{,q	"+2AWYeq
SCZq
,>vn{|B8ҿʧ>hJƢM~)h-=m֖U箺`
ҟ&DEH]QAhEV~?#<d	IZt/>E"'Fױ:+x,ŦuMw5mDEz[MsC09y+3xԟZWbP
i!2)2<>?l-FkiEi)hz/hwz{9DPOo(4㦶1<}9`_p/O7ˤ	YSobhP_bR桓km^ ɺA	+\. ,@Q9o|tNpy;k;e+!%|Ka+qqPKHn  4  PK
    D:U            -   org/bouncycastle/pqc/jcajce/provider/rainbow/PK  C:U            F   org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPrivateKey.classU[WW&	QUk!cR-H
4h00&8Ӌb~UUUrCGvRl>{{=gs?W*5ܾC<΂DR@3U$II˒-IR)*Y횮4=ǲՒDr0o+ ;&kXzV3қ6&c鬮9c%R'd%T`W6V宱C+-ʩ iB5éTM;C$dDW8}MicZ6dz.ZR[kL!ŐFI93ElsrPK:cji]@eMDlJU({eʨJ-'j/

CJ){e#gP;r,M49gN+5]ܳv.nX|\M픦N+hhW˖Tm` }ؑ=S
F:b;RP̌,_7IVW{DWlِUڥU$N8EFUgTCSC&n(9?Aē"|"DE4hKDPn!"+b_Td"tI+e}pQTHORgGü4[,@!R=+cetȶr'Ay,ZiOvp%<Z	ը)H؀^	<"a'ev\c%lax3DxY[ÚZ1Ix(Ca1R.Dc80aĐݘeAfcPRD2%ʔ(SL2%ʔgi/b̋1/Ƽb̋1/I)/@e`_OgmWZϘnɩ,ϓgy㱍j9i`#޻4
ꁥSW,ޞs%u$Q,m&4k%Hrg9ds[y``0}ᵡ~;]$xEx4ޟǅcNag4>KaI
$? {vөrpg-n<WtsptFMv	%+2Oy:/&X z.sd!|q$v_&[jg|s<񴲟M|x{7^>26TADD8,l.
/jOIsj1߽oF^J=fXWvŇv6P_pQ/.Ո]S8Wmb-\Ab=̥r\ex:o
-[x*u×-IS.p2wӵnk]"9Qls(X( PKN  -  PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPublicKey.classUKWVmA QcҦ%1К 4>"L>7e")Ӝ洛.KzɃÝ37sG
'@0Ҟr@(Ҿ8䩴@)r$ET!M)".tuyXup};dz61!sRgXv+tVeju--m8*P:b(@gfYK̜L5J3t$e@INg}4a2GLjYFYTg1tVLK5F84e%X*l*qC1s[n)ו[xXv.
ZTchq%ovŇGf&!YOΟj/].a}C^C4	<+ֶ6fm//><RG7?GZrz49FZNQq.;VSi;Wq;ɼ[d1	VD.{W߹	kԃns
xBB&	%\𶄈v	Q	1	.KpEc+HOv~zڎ	H8ⱖIMW?,@ڱRxO|=^/K6[Y>'(Csi=$␌8!
48&,0,#2DPFB2΢RH2XԡJTxa-aS]-7ej`} &XLb*n̆ыO0,X̳7Y2: 	%ؗ`_}CXdII,c>I;+F,Od7hݩ xH49W]}eʡ	Ky:h62юmdECPn-s =EkMk}kc
6i9a|&A"2[>L}m%x!b"k~{Vw=b.>O3ڝKHx_ER~*V)wj>#V\u";±0*[_10xtqǴ]8ϭeVS{ ":ZF~	ʅҰz0϶_\"4"TЊ}'Η{ ?S1;.S.<wwX?PKB  	  PK  C:U            G   org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeyFactorySpi.classWc<ftb	<lx%!%TL&$ef6-j-G>h}ew9sw{ϝ;ƿ|p|Շ8,.	Xk^@
J L-E8!q+aC66L>۝eh餒IvTF.Zn_rdR7%l͸aGuSUW?a3k?504	n	~uVM'AtCº	ۚ]}UnWnn7v0:VZ#)ur8hjBIZaTΥ됥
B		2]65k\鸪`asf%	MRӺx487ձ~f)mRQIM9Mf<F[S5Wƒ+4PH4-;lMI0i[걩wD\˦Ҝ:-VFe.Fpq3Sc}u/nxvqw[v<8fL-Ѓc"{i+M1CҜ`~c؜$k^Tޖ,fWeLjꤦ5cP])HN*dZNխ"y^>u$qZ8RC5;x%bWm*ٳĂ`/%ڎ^͞4/kyO;zv	'[`{		< CB:*>:cUΎ(˃)zC/{)|$<QwDZal_:pE˩?kvzBZ:k],'ɡ@A&(xzx'w_u'w_E|~v!aO¾C*TJ=Zc:;gڻ:bRR<;X0+ë`XZ#+YU@7Q Z;Y|

k(:[Ь`+vmhQpC'CC3*_V*xqG*81wAc8܋+
O0
6#XIcxJ.7eG2w'cOxo^#f!CpOpqb36Ugq"Ck_gx2F2|O2HFs(F97gcx^F	bLcp;2Wd8	fAb7}j65&OO:G%FPKu$ZmoSX}<uY, :!|Yϑq1;y6spr'dY_~_~?s+mT@	nC]HG9@P)ݮd0|^YRՔcMY|B,Хड़W2hik<;iS/qyN^gT8~<4vH9s_!Qce&;Y|s͢/\sWkodʧP@]:ȯ@]=wnߺh
d~
vz {HȨ>_걦Y*	MkYGmfI~O^'{Y;/ACډw0{l-7PKNTϔ  .  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeyPairGeneratorSpi.classVmSU~n	lX+(ڊ6I
m -S"i)Vl˦a7.8
icf]7!#39{yr]? ,y0c2{)^J#Kmݲs=-n.
^-A6ZeZcahơwt;Z+x`Eyij?\A/'-2mWCڏ/c3Lu~CZ9{~k[)UŵUnTd0d[p|W'{=
`SܓkFu%bBυWD
yWFӻը-2f
{ǰ:VWÃ[-mZ vPbbGlǏmq4LǕn/5	KKޔpY[H*m	ޑaaw~a#5v]mSE^Φ3ݳוi$:@9^tZٝ3Ȃq$ѵ>  V-V<(:".E7TO'uuXn{
>`
Ǽw@M#Rp!1▂W1|U,*P`\|*ĲwXEB$/ĚdࡌkؑE%2f!CŶɸMBlʘJ:y˭3M_7oGz)8  (`䃑RFȞ>i70N:l
*T'BbW$4/ ca'Ѧ0P!c!ud'/Ԑ3vq^&bx'GN
5
$)	XTf7ۍx~F824u$(7,cGxv6i7FloP/1PK.  #
  PK  C:U            F   org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeysToParams.classURPicT@⍴/"EJP1iQxȌ>㞤P3~sv9_71AchѓɗHZII򛓛,K%ΛVA8$ݏgq_$މ?vUeM#	EiqzVà틭Eᧇ*Ceibei(2mr&9ŷo9,X	]fV8Em1M5L≓H!{
X5n)b0}c
W>]|p,̊gAܶ
SLQ-azE#V30yٷQ`&_55gxQd31z<EpԘEazAww&P=$j:P'8TpJigUPЫGdvǐGy4֛Vݠ˖Gzx1#!$ܭ&WLiX6@qM%yKᘍrm6eoʺ9='Ѝ
qЃV
Ѧ]	P4tI8*ᘄ8b:pY	.H㊆U
*K)aBE0)
U$qKm	#J0"a	$Q1*q^n^#=x0s^Zy[-?-`!	_үҌtk̗pCpeL~"DR
.W9?o@_@R
ӝxqȪ"[wJ:^!Љ DӈĘ\NIb$s$9$$5,̝l'_PKsPg)    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha224.classOMK1kEЊ(=(Aڃ'
<ٰMYv$TG
b3y7o :8$6[ڥJ"8t̆$&	]6c7v.`c:{VLs)Ur;2A߳'SeGሻEIdEZ~erKjU
5oїaE#6E@Hn4;"Qww+w<W9v栎f}8KPK/C    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha256.classOMK1kEЊ"H{PB4)fMY
(1Z<TAL`=2o
	v	VvR_idYYbisӳ#XgO

W"i*1U|dd)g*!8&1bK/i|T}x>V|wEm/vRbё$nS'$Zi	wD!Vf=xSlLAmM%qH
?PKz9    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha384.classOMK1kEЊ=T*O.<xHaIjٟ`Cf#&o?^ qHPmK*{Ep
I*
M$m"Kc
o;#XOWYER3U:̦,TqD0WϞL#!hȘb~ɥ>><>jͻߢ/vQ5P)aG@m
e$nS'%iwD!V#xs3AͰ%?pH
?PKQQ    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha512.classOMK1kEЊ"H{PB4)fMY
(1Z<TAL`=2o
)v	VvR_idYYbis#XgO

W"i*1U|dd)g*!8&1bK/i|T}x>V|wEm/vRbё$nS'$Zi	wD!Vf=xSlLAmM%qH
?PKr    PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi.classV[WFdBB-)lR7P(RBV#b$E!N/C}hiB)=[z1Д7՟;[xUXң"g\M	 "$9|ݻB4g mN놚Čn̝WmupLiJKefOETJegpre.K|U.KVZuYQ<Оaifַ=d@ln=k&y>)o)%^6mUɪFFBcYoITJN	@vyHi9[wJVz	`:1Ťc )K5팲n-ef-T&ukŅ;A<`q/Rr6ܫkʦnj4m=lVucQ
,Cl(/ԩm{vh
u`֙>7#g#Gɲp_TVaՎ?S)֍rlf1WD\N]"E\#}E􊈊9|
=6Fd%J;/Fc3s]X/E+=n;*n"oc1MfL6,Ejѱ8|=G%Pͭo2W`%=a'mMF=:ǆq'EqWp{6,21!LhCHF2(
Q9pV
H21qe4bZF;\qh\-9'$ౄA<00$k	r.K	'k|U,r
'ЧGdLӵ!M1fZxOrҠENfUa$֧\U{6Zzn)xKkT*]+*/Bj:CMR;}'^<{Ɓ-} ;=5INUxY	 uܷ{>|$OPg<1]lh
*2PH&%CNP̐$Esx_Ǖ="G\_$f3
cL%0f?chݸFmXXIHqH3ͨc11"%1"&|B5&a~4ُt#i yR@KwcrD[wGcߣ_PK"9l    PK
    D:U            +   org/bouncycastle/pqc/jcajce/provider/saber/PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/saber/BCSABERPrivateKey.classVYWF,!$4icl4,	vu0KpBZHA@`KFIܽpC_zz`crН|s; ס*ܛ<Cuw1P^JF-02G%Xl|!qKoyAcKyG%#&E՟ZJ&CsZ,|ƙ<=&4%=tG+k-[fvg"̊I~YFwYLqC3"Mb´h0lZBrg)JD3O+arB(dV@&w&WuSM̌DM}_뗓0ry'#v۶Sbni}<-<QSPHg5u m'#Tnjn]7U9j%a^22tژ^E=SӢVT+i|MnPJ\q9T_f,^V(m2>|(+j̲x8+[%3D+uCjH#=	W%\$\+!"!*On0t%+Xj?%!o'</CǪܡxd Z׽~uc`zH}	7GT8j^+thg
MQI^?u31}7(?F]R~VI$[KO	mwø
P-UIGH(#""taZ(hGJy<QЊ
0_3wdŢ+qsW,B1Fq2`U&dı"!pŗtncrgg򴖋W#}S֧x	_=01T&^\K
H>!kAg,|ޠHO5yxF;x
=FqA&#UEh7ToEFWtD8}ﶪ$BwRuFFcCd?-of\@2p:8UAb@I'd^X
Ԃ=e9?]|S[4vp{u`6067o?	PFӓmz5Ւ >&9OFF#;x
?PK+(  `  PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/saber/BCSABERPublicKey.classVYSV@6,mF0f,	Z9d$>ΤCGuz ;$0.;wϕϿ`Vȭhgh<_bhM4[e3YRg&K4;2!ڴrK$7+ЦY;♨2Dy-YdFn2t:%sRb8׳MQ-4KAg7	Qbi443'r-fLɶ)vV[D$Z:h
GX"[n
noLS"ʥroqU7Br[eG7
]?Q8x4uFySWܶMbj|wAlUz1jZy5Km(TnC6D,ʛYղc6
KGksԀG/35Ǵ4*м׼&Tݠֹ&l?i,ʖHԩ2;ڦN;A|uV^eū[tl\[X:/.-/RO_]&Ap]
	7%ܒ$ܖ/$ܑ/!.!!a8OGI@WbOw]xՓnȿnp/eP35$I|?MR83)vgР IZ`:sǐV%YA+:]q-
zV.fk=H)ìOLA\ĢVe,a#xU_ak2์GXqO2F1w9e<1erdL"+c
/]wcd^2/Vh-q8\{5y(p=@d*EϨ[<k
.DxhO5̒6}k5r} {01vOLMcB7x'
-;1+}LBEq4xm{BR{wE#=~``x;q t1 5]boR n=.7iB2=6'yk
\\G1(\i`	"H |ui@퀮n,G?{ph}H=Dr=Ey PK&he  
  PK  C:U            D   org/bouncycastle/pqc/jcajce/provider/saber/SABERCipherSpi$Base.classMN0iڴ!q $Z6ްATڨ$ĂHݻ8
v,8 3zfF~-Ct0i9C?],Wׅ	lɦef_VoRUκolc^
_WRJgwzbCgv\{«!p)LiO1z80BBbo?\R
%ZGΉތ޻+CcPK0jw   h  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/saber/SABERCipherSpi.classX	xז5+yNb8s@mL*Xkic+WbJbRYZnz@/܃I6-%-K.{[73of1oF~G 8Y˨1O2hT28FƱ2,_)#%czlدZڨfjF(%M%7Z|	vrd^EӅus|:Z]X5WKݡ7ήvIߥz'SD0Cwj¿MnX̯x$+ۤj,o A)=ݕ_]A_Z+J8q'vxam?rRh$&76L,cT5S$S$	cTHL'ҁ"\E8p\.uQbxÖ^UhIӈ>յgGu5&X<-f"[ՆmyֆHL"%)	ln".A|2f^;~ γܜ&"\4԰Ft nrL"Q\Y=YN4N]W!&=A#`%
zT0frmw:#ܴhLAY+v?ehH|F	}T4X1t{'_ˎTd|Wv=F9ў3ytVscPYiP:SX7ԚIEQs=,9>_&[GX4g%!%eJiɗ"{\>o}<
f^/Iw	igٝac8a;Ոsr֪^(uvp99	V4O*4H3eKd,$JalKdWS`Yv5:[ƴH:6mhFjxgPwWove7ݸ1Oᰚ4cZ;VҌѰ0C8buMmfgA]i9-IX%>ٞ.!	mE[ְf~mT$4	گ^Bv۵3nj]auzIb;,{:kܺa-iG9fө&RTJAʌƬG	@@aT3H"n)02Uqtf\t(%bXrnL~V@cV }HS};V\6K8l(p@@H`ylx@
S]	\,h[[	t@BRz<zԢ7My#)ňV!gCM+JqAS1_/=slZ,k)qW8^R ^мyBncpAgpZa@Nig	?ϫ@C:y
J<Hd"e'IMb:wK]15\U~(JZ"$lGrxF?V7>W@u%p9MF|hL^'},8<8IP
:[\t8gʔPЄ)x>
T<|DN|Te31_b,Pj)xN&k,Q
Z6,T0V,RЅ+fd`򠂷<<y&{>gag`TAc
PЁ
NKL )&<+^\'?*Ћ'ʋkw
~L.»\d{#nbr~ŭ,^؋۸w;	/j}&$w[L~ŝ	xq~vG/o L;&u8TkLgJa]&?suY>NUw4ujbi7 ^RX-eRX-eR*Q[CEe"Zo82b".HMޚ^N#nĞI\7Vo-TՁ'qS^k:&'ⓐ,aIϙcdYYz2 'uNƈ3׋rwBx}5i12O-Ҽ)%82[\!W@ZmLAus%kBg+v[J'ш\(FL!kDM_mT1gGp|ۣK'+6!TsAԐ|>ECsA=H}>׸s#8ujxeA<F^aF-LھZ1OqvU£;F,y<mnrn2{ın;&=S
T=m5cgbSjm1WA&>C^gh.tuF׃FW4'NQM⪾Zyr(I+'lL&~7m'e3iFǒ?2 VSE-h=*+4n
y9^1ɻJqRqN5Kƥ@UunjHsDO/\jOLHs}1j;V/cT{4a>vkQ*\2~ݚ8>(^"C;s>1r\0ӁR$9.qK|`drPy;rL8ʅqĘT(^n%[,P@W)sCNAlT|H?.-'NJ{)yPK!u
    PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/saber/SABERKeyFactorySpi.classVVG͢8-a;cAa1#ό9|yN8'k>)I#	tV~0hqՍ67q}M>VٷC6
yлaѷe줦껺8iL10T2iZSqdzjoL\J2;]
mN34KqUKOSCQ턮2t΂o^n) (Zw- qe)4nWO
kN$6DC5w4bByvC%ٶ76K0\SҊ̑%EbhƜ6qzYS(kW4a.pJOhCbkjҝ<oC+yKGonVQӢ筢E+jqu!,d|Xb|q5im3eU&+1*ˣTT}Tr_B)⼱k2G4M*%j<TeOeur3ի1F۟6]"R	c+$Ñh(<V|\;[=܎߆w8rqs!#w88C2m|4jM'&tV+2_cPa:%|"wKmkPkU8*|qm}|y.:1LVC+kO9:wl]ij$$7(%-믒a
.WpY<A/A>6f<ŬyЍDo^=bAEnaŃocMD_1	ؔ>^HB|)W&%aJs!>E|&)T	ϰ#!%![$B7=kKzEFE_R~On`҂I~KNj8Gѐ3&:ƃpea.

NG'gƆ=a"vYgeBrKb4(
Ѱ#1.?;6*H
HH)~~"ųx#"s1<Z:D[Dt~"]#?1z,coN<!kXXy:v^Z',z!Aahs97T`;B\l 1o)@Mhhc8n/*ĹvP,pInCj0PKt    PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/saber/SABERKeyGeneratorSpi.classVVG~$kD(%VC&D)f3ewlBz_JrNҋ}g7_(9̼<3oюvIHW&%Db+b&FhaX7.]3l+j^PtxbtkϵK:7,~["夓,e#WK8B3Wӽ4].,yn|%|5P45ڱ<#8Ƅ][X6%.jQB\t*a^,fMCbX65Ԭ:k<iOҹT<_XjTj{^$h%uL#WwBEȖ%ǳUBWvӎ!g9oa`@$֭F+zf4]Gkc*Aݼ^ҵg8Ҟ^;KMk:ACo
wuwz~rkm%^}yhӲUK2{yI2qM#GA䔟GxN<@tߔ:Z6Wr=LEkݲZQ8û}'N13fx!p}2|p<Ca*}Pb)	s?㝠\N{aI}"֬ckK5Qm+#k466D~'+%{U8{-hc̽Wz^M*40~U$:;q7[#r VQ'

jɔ8>RM+8,D"
zѦ(XL1X
qG
:1߁'Ģ>1,Ĉ*>q>qi!
11Êx #JF_˸Œi!Ŕ7\{1Sy͹eM3Io	hvHP
HЪFIhef*? `8%x3GL>!p<>c/K/?YR_jIvWH+TF~WԖ0Ӂo2Ԃb
B-)]m~ܟx$m/-emQX.fu*à2֒a>G$2]}oc%Sd>P/$$}`"o/6"	,"K!C(H"iPK0!"  
  PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/saber/SABERKeyPairGeneratorSpi.classW	WWaP.*E[-D1
n*(X:1$N&(v}֥liszzz#dZ{}sw}o&s3rFBvYGB^ok$]߰]tH-]4>#K(:lzX^oCVUWN*7mfnOf{60)
nI	[>^2}d#iզZ_XB\i	t
0nuo۵@
Mouڈ2:N@?MJuMwHn+Gל~-s6OכHv!$̟r[E;1]:mux
k<Һ/A*Ɠ$"!sާ$Nrb]7|ݖ6rdΠsv#W[~5BVY裍uf"i5~ëuL4ONhxWE|D"Ydn
j&{Tg}Imj~)צUj=^~z0ntϬ>YhM;dHȊ_>h"j&0٪ĚO7+,e3'tWRek/B)By)QltQo^:He,qe2(qR+dZ=2dpX#c
d8eA2WM|?;`+N f92Q=)]@Uxܔ^k. e.uM²,+L/^)̖Ҳ~٘J7M4]YDׇ|&_6$i\f~	uz	٣{Mp^Wf'3[ĔE`6Iɩ?H$^$klv>mK'nM
b1Tl*Юn
(*C!Jf̰a+C<,aa{X	r1G|T!XC*!x1󠩨F"xU3䣋Ag*}؍ Cf"G=~>@>Zqa8O0<(
YaxWA?؁E+*؉
A^bxY^m-xK!G)hÛhЇzc^Jӗ^nK[iױLӏ*-G#[b ̅u"Vd(qKQ\v>w :3!$%܎zH/}PQ2>d	^h[3k-7X;5c9+87c;:bN\(5i?Fq%&a>F.MѶa1%h=BZ]dj"mn\Lآ<t.:⺁xSX%AH6qa>ڋcmİ"L]NIeT$Ce)A|<߲qP0
$|Ĝ$;||)os*^0%1_	83%PK$  W  PK
    D:U            *   org/bouncycastle/pqc/jcajce/provider/sike/PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/sike/BCSIKEPrivateKey.classV[WFրeHh¥IcSTHJ@q0	i!,bd$ĽME@x4Ӈc(7;iV/ 7sruU'݋c51W)HНsS㩫=`zgd8TpPY;bJol242/dGgV04=eXPȲefxN0(f3&e2'L4BIqUGa;Ђ(xP-
4V*/4Mf+*nى;i0irFbn;h-8eNϘFFr۞1.ݰGVV j>ݦQ(VԸdmOͯizG|뚪Yżc&T	}:DirlI؂gcZT@nQ%`oEW55a{z
[憞_*- ZWШe"+[eγD)uǓ=jH%=	W%\$\-!&!.Gz:[g45ӗQӾ~BGǞ!qءx@/Dj]a(nd(LFAo
F'3fԨ\THp78i绕8?g3Q|7?=]Q~I܏Y/2>Uoi&TAFW4j#PЏ
EREL++UЊxO4`cxe|W|-]A|!bB0W7X)Vdqdd×W7ۙEHõi̗]h!aUhCj#}BW.4CBV'D{3&̐}T Y;Jޝws,clb{G?#0d2L*cz37~E[|cӱ?
vfզO^tC]X|܈HNVP25H`Y*"Уyo%ٖk`AaGA 9?6|SK4Vpga.067oQ~P}-2[':ֳk
 n XO\<0!PK  M  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/sike/BCSIKEPublicKey.classVYSGF_>'a!pb8b@a5Ү]a?'HU<k~T*@139=3?0r&0E{]bN04DW'\D#V;O)B{?rU%J<ЬY;bV"<]Z	Y,uIcdhˈu^;/,x koQa6
ײM^-0A
g<5	Q`i9ehfFd(ZLVn͓pC"xI͵
GX,7&UnɅM4:+\?Q,9i@aFNJN's#NmϛETn=Tleie55n;yrPwh;rVU.:jBu(CӨV8O\xNĎj4ӄ:ׄp<enayNLȔtmj댒ոe2լtlUV[X:/QYK^%Qۿ9>@
?L"ᶄ;J'c	H/S	Ix !*GBLB\B/Óewv4Σ0^7wNσIny|3zkWN!%3ѳD</rVbֈnЏ܆$SjucH oju.ȳu2v1<mK[TЄz.isM4(B0$}VЏt"3
>¬v,(EWxь1e<+x%KOe;	w2Fe<O2Xv2Ʊ&c]-=K4YǊ.p/ky{dh!+h6L!g7y+kn,D{XhwafHR[>
	9H#tGVbH<<"%t_Pc ?\whݺ]/THyid4*

7@WP5Jitou-Lɼ҅]`sUtb:@	W
<H |qYPA:(!w.{܉i$ $ڏ@3؜0ic(#{zwPKLb  
  PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/sike/SIKECipherSpi$Base.classJ@5icZ^%]q7&},O'= 0|3kdЛj;0[<.K+:lZYWxom
Íu9[)|S)^I^JQJJ]rŻͩZ3L	"GEƏc+ar5NvL  	)]=C0F+sty=cN]w#C}cb'?PKJ   c  PK  C:U            =   org/bouncycastle/pqc/jcajce/provider/sike/SIKECipherSpi.classX	xז5+yJb8sPBmL*Dic+WBZ%1gH)gip&->8..ЖB]73of1oF~G8UȘ'c4\*Xd'x'hU!#%c@bztȧBZuonTfh`\I})}@%7B	wp`^Eur|:u]XsuDk$`ksw3|T<KXXIh;j7
T4P,VJXk	ˤj4m%L@$Rz+>Et4Wp5oSODvn۪RIZ Wo[(5	dF5e*5KD		jzXBXnU=|tWjjBBe(h:}(>a&UkI#4/k΍jTՌh,4\3@Ό!K`^!eSF!7HIJKP9&LWgƶ_2L7gi|9W2jjFt-Ar]x2.O3HһCz
:&nk6GJ!M2GNiKY:-T9"Vzs~*Q±A65
1hTS퉾Ԡ]v,[;"mWwmQʉc
רJŮ#yK͙$[12͒eyEs\ZB>ϑY^R|I3'ǂPfO9[?x>JōX[AZy"V#n3v2:Gò<A˪uIVvmsZCi\)L,jo;ǪF窑QjԩNgfavun|iwWo~Sݍ%ڶRzh(&ĎHHKn"0˓Bbu3MegA]i
9SI%>ٖ.!	ECfk]N*_ʄ+2]*g,qVue$[<B`;:ѺQSvQ͛Ğ>{,#sNy\J%P)xʈDX_@	@@{"Q
d 8vQ)*K;[Q`|5O/J RZO%Y!/if.4df3e.caX.N`l
l@B-oHbwSKBaM`@@D`@T`P@	.gKOmZό
I-ꙺXt[Q1BRjuiԬW=<}j=qE).h,۾gO+鵍=E*UPWrKTD7ϻ[Y(1k.*kMc΢M*eM㛀VzZ*E,%GM%3!P)+Ni5[ꌪBӅQ>ͿTۓCHcU	ONbt>֕p6'b;Ec9;Mɓdlt<d6˔PЈ*x> xPe]+QgcX`%5UV&L2Yc43Y
V,T,RЉ)bdg򐂷S<3
g9WG*8c
1	|!&L3yɗݸ
Oq55q&O1?a+&wcaLcɍ{73?t6~~ܻ_c5_aM&?w.ɯݸ?sM;7n`-&u-Uz{U&O0z%އo3ҫz9::s_XJ@Kڬ;Gh`̧> <+0[J0[J1[J%jkLZDZQnGAZL4b	cbmoÿ'gd-673J)KoO@2uTu8jd<r4{"۳shVbcs.gee鹓ߞ;&3GD89gGs0zȐ?6K&T
4XlIj0VU*?
_r*XT"
R0c/{g򀹻J瞬*zQ2nk*>N#V:uKG0i51b
Ps?N`O:"lCJɦè!zhiy܇øg/»z15qzcxu^<>aG0LL^ÿ&9,*R'j].6'9/=j[lԞ-+ZVO(23B6o9Էx+g ͥbAC%phtUC~XhH-OcӤF~gNZ9ad2hi,Ncf7ݦl4wXOڈȇ.j6{894{qTRF%z3%J9~m=(I^[qPZXbOq'$Xj:+K5~+ƥ^y	ܔUұzm2oz5Fvܰݕtgp{?Ux+W¿宦v8ʙ톗bܼ~aTd>t %T=*	EKoCx+4'k4"_+3qe]^1*1ʵsV./e+-2GUv\S}.;)U(
RnI}$S>zPK6
    PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/sike/SIKEKeyFactorySpi.classVVG͢bEB@acGR(1me@3#E!_A^OCj- $1RuvUuϯ^4yE^q9s`#߈)b<6L}гj־ٻ+NJƶkaSwWM'JY+j#nT"lJ0ܬ%:ģRbf0Ŭ0b62ԑ
yz3im%;'qQؚ$	J
mڋd]m歉Z	F0(46ukK&LL'8F6bae4հ.R20b^̄ZzLRk;.me:]06C_^=mnV-ilюS%tײ)Cypk25xTC<Oy
|Xblxw߲ꦕ69nRcerp%%Pp3-6W|
qj~ŎBMVƠiHa''(_%˨ef?mE^1vcsg&l\z}[iYQ^* G;}8s<x-~   1L%Wm0.WK%k_ Q"y\X'yrT8*]'dpN0Q	-?U6g! +E2OW#Q'Y\iļ.bZ)>>)>tncڇH٬]Pbȇfއ[X
|Ûx&Bk
ư]P0U٬|`
"$G<'
q9z*x]Sl)3| 
M6MOoӷ
㮦.hbE@w/}pi~CvGQWs?9ă`-
nG'
}w9>1a7C"F	Z)=!FBX/M99X~KB蹁""i"Gx/9d/fTW`TMHsr:JΏ$>Dwg qg'H6"=?G,kǭr#Aqs97Pd;L\lR$k
H9j@];3AU{Ogϵׂ勧~:WPK  z  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/sike/SIKEKeyGeneratorSpi.classVkWG~$,kUD(%VC #((E.R㥩²n6Hz!'{N!msN_??\M<Myg3̼ 6
3B3m^Mݝs6-7ٶ<M>UGKXy	ǹM~/rɾl)q6$jnk7}MW>gjXU	pDcXo[\KWUGR"bW}GWskyl;e3T3[0Q+ph3^Z3+TgZcj
TwS'\vb]+FJuKS%)TĪ/iԷQsz솿knt
M5svLlʙZ^Sq<59
*&NorV8<W:5޲.D|~UʦoŹjy^I7)Ak[Osws❝gyOX_ՍشyIj-B9sӴaQgzN1fc8C,Ç1c< eZI1w		Kp'"Kիt̐dQ*bu暾rRIO7Epdmu#Y*hLM:ONxuUΕS. \?4rz<~7vYoFŔ`c(S$d	o	QL*xS
m*!=hUpL	|*LQp
qC|bvKr;X 2aA.
2FkcH
@/e8ʸ|#D1G2Vue$)]˕GE<j˪}W]38}"
@Qo$B;(	i!~A|I"SR+6K6&@Tthkb'.Qi3#KBF1O|@}[@_w;P 
4fxH{^"Tĵk8C{!RĕT#@޷6ЉߑPF<Hӧh<TP |A^bB_MQD'˾xsehxv<XN.zb7*-<
1$.3\0*OXPKDY  
  PK  C:U            G   org/bouncycastle/pqc/jcajce/provider/sike/SIKEKeyPairGeneratorSpi.classWWWa[pCQ"5Fao[WQV?M==e!O=ｹ}{w^	@.lPXS{HB6gMUB!A:B6-441^oH5F1֧9W!FY|iF$T<i62GɋR~L]8]E|fȠdI/54
۰\ACZ-aՐ69}kowЍm̐\e1Ӵ+lZjxM{yp$AUmnMsܧ%ĳ3`y_ӵ35ζebz4dYbp֨ٖFmY1=
ÆNNպ9_yͥK%?E܉3i1͐n)ҵ!V`Ԥ==rKHAB[\[
6C8UnB"ZziX(,Q̫`̧L`.o%`ScQ=0h1Bs}c@
	Ms657$4M#فqjB|JĻpȨnzKe)c2B2d#ZJd+>eq22JXѓ-R{d͞@֞sk*R6L֔[3"٢ڞ^M5V-K3.iequM\H>n!kfVe`
Rb,>9B+E:nB&Bn6eU5&u9Ϛcfi|vY{ogi:}}uWyU,B
'TAp@zTa#&zfyn湙fy(RQC*0㰊JxTaxTEC1c8B*6CSqUg(0b=K~ Cb¥00c)E/F3`c8$SO+h
fxGA+؁wYS2+

:N~щ^R*k
}xS@*؏7ʰ3OSn]5}>:~b'1H%
+FŐ:7ɁBUJ)_Qtz"2SYG\zj8-!]!ǈSYI(a[;ua=ǹ 	w\xWp~"wUQzN|_Y0NI7.87	KQdl[N J˦cOs=4.sDi;CiyצŤ/ڇ
ᡸOC9"yǩi$&8it4FYT{=uD"%-v-g^,gh-2΍)q|pqXXR,_')oTa0|bFX>M|',cؙPKߒ4    PK
    D:U            -   org/bouncycastle/pqc/jcajce/provider/sphincs/PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PrivateKey.classVSg-EZ!DP
Q<Z,$n6(mwK{k:N]B4}= v"AWY{U@|+4Gi9MZD3	Ӣ/e`1/a^y\E+	%,@RC(VuPiͻumGCl@ISL	u3Pa5m2nʃh	F94"/lJn8GRPBs$n(Y0rM1K%-][*93N*NvX6dhH4%NaeTjQb۵Gb	#hP~Hڇy]	#dȠV(tCR܊35A~yC~RJ3{[o!1fR
Ɲ"j3bոwa2cyJtbWTKoTF>N+xUQo<6E([r>viXJCiY8FTBA.%XQpXUU"Ҁf}Kbz*V_КQ{g"--Q
cvF%=.3]S½)j6SiaO%WOX?ADM"6"bm"]SD"DxEQ/A'voP<B,F-c38hrB@`"*=i^\-TcΤf;mgOy*aFȺ%2u;h6p6-Ul2VJYdeW6+Ye)O&Svk꣞rr/gj& Sl'ޖŬkjDf|stӟgs|y*#z[(9\^tJt؅n5ȗQ
NVq
d+X"A#czeqCdT✌*d<ws䒌j(2g*c21P#,F ChK8N	$!a	|%!3<K,W9'/J89y!ɨ?K8W$2Y		}Ze5/FNm>oACQ/w(D:ҹܥ/k:/ͯ2#ՄR#D6ƕirM>@ 1FN[=B6wc
F;]$޿[| gE%	Wq,eo^}pvA
?N}:\⦇$ޙ:Z'qc
3~.f8?]".umj9`]η˶t}7titƯ+Qkq~Y:|Fϭ|YWgqOiLLi|1>,|iEQrT@2m&oت_ DI1r¹k2,L
8k3mfe.*mvӜux*qGpv-P}4ҿT!!p~*%7ܮ$Iͅ PKH>B	  +  PK  C:U            H   org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PublicKey.classVWW
	Lw֥ZC	֢(ѰhEk0`ę	]mN=ǾRwg&!@ҖC~s~z;s_>H>6	.v
_"=itA@M׬vI5ѾH||@a\ӧjFI
V
X
hpSHRSIGSlT$3LIkܵsfbM:c)O
hڭK[IjhMKUib)	(2Ikijw>h0֥1,s<BFN(SJXKU.`s~Չ93Vܢ)̆U$f>$KQ=QdnF{djJ

+ 2#dAͪi%YX1pG
-tK՘!4:kPbpқEh
,v`
nQ`{IjdV*l5]5؊%ۣVʠ*yNjKP	5UTVr:i#5%QH3wFTزĈla(Y*EU-d:jQ?v,XUt`j͟J8Y"U6E񔈝"vxZn~M"""B"_J_Q/'eOrSn]L(>6c)Ē^rb3d_nZ^(PI2b6e(_ؿ>_Nc&5Kbv:{f
Eo9Xu^mgƂ\Qkyݥh(rwIXxx7gO@*TkCVRqVBjъ2rhFTF#<2|ʨPa*elЈ*e2/c3di{FtKYmѰ
 c5.XR5j2E3Hpp	mP%vLr98LI8QW9XIpCB'8$%DЅ向9ht)sf}ݳd_
'~[zWIӂd
8nx(TC4}*z|ƷyYK2^ fsu`{í7гCŗ[yy[
^o>-!8gݗv
h0*33~rxc4'!1!zi|G
^!ZEW\W;%m^+;z~Y#u+E
oPx'U|4cwr?CpoY{ǆCY{7F>jCn2Y)+GIq%:Wsuo6
82]F%1/ބ%ķqѓnt7o2^ySECxpNڛ%WŽ PK).    PK  C:U            L   org/bouncycastle/pqc/jcajce/provider/sphincs/SignatureSpi$withSha3_512.classRJ@=k՘4*Jl(DBDn$fKAMU*tffgg	23]pG~YTras`-+EXb'p!_/9r
BH+LHaMJ@DUP8):%U
`-FUfp-By37co	7
4
}t\Ov\:OvA߻Jc4AW"1,F
3Џqmv3	Ҿ`jeb*99DLSΨ6teȞwGL<<o:Hhj`ЬI9PKqs    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/sphincs/SignatureSpi$withSha512.classRJA=ZvdQlQa?Z6Ŷ;X =Pz*5CHp7s3g
@IPj 22r\&	b̹e+dr_ok7l*-uqBma8QlHlQى?mvGlvokx\[j.όBޔW0Yɥ>A_YŶ*sK%>5kt`#ea#
Q'f!3C|߹W:o4994	`( &Ŕ

*bQǬ1ϚJW-Ωoj7c$1.A#ڸ"g{ՂVlb-ċ-Ċ	&;M,5ܱX!	PKd)  ?  PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/sphincs/SignatureSpi.classV[WW"/xA;^*IFUEi%AMFxCafmm]KaQjڟv!$$Ծs>Ξ3~
a| q$Ñk$k=hUZO䪄ny;)FI1{>nN@"qQs-,ձPzN	UBT3Mad-Plnhy	8+A&#,	k햦-M	K)9+wVOE.frenT\6#J
TQ!,Jh	'IwؗŌ-_"%> 'aø6󚑋Flڱt#SYӶry!ײ\-2EKwf)cZYʨVbJl ۞ IhG
E#3l'/mtO:/
Gu$kt
EIW̩"6t#c:2T8nxFP*L\ɿ'zaҧI	=83nR3ǴC7t߁0
fdt#Xt<
/x)xUISVґ1anNl[dU%JІ5vR2-c2^OFv12ˈKh[V]]b}O_WLՐ(hr-hzSze̖]oZ_Xwye|@ҵi!lZ+)IѧEPbb%tsLX|.N9}4,m581_]5RX?TҜۃW鳜sdHSRЌWy;J4(d
v `VPQpM
q
6a@⢂V67\gs!@..l
!Xty!`"d،!q6KrjM66Y6tU,50-ѼFJ%e6<_y:H;Zf_3/i#y~<T^顥R@$EWǢ-$7	W!34vctoEa*πq3.wi G?SY?Ǯ^@,n{+f1=;i 9X
aw~"o[񅛌DG3Sjiqf}+5$<E~*fb
2u.}סAW|VA[w@
}+tC	\y|R+Lt{?S3)T<6͐a^!ɴRv4{]'lѦ~ʼ~qnLh'0/;mwZGn2dhR.:OkbroPK1	~  -
  PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi.classViWFqYB
Mjc@B 8Mj;@)kcHc&pFR$n=
Ť._/؆bޝ;wޛ(~ɋf/Zh`34FzDtncUc0-Xo1pspReڮYqf,j-	%Ų4cS3hf+liH*C[iIațVlp%CmF2m	ZބF0HԜ2TsS#Mԙ5W1T֦;aԦiJZuS]W5KfYK2\[ɺ.CWsmHDRzrSrGSSfY#$MZqaiL.=UiEuMB3Q(w ^
\46Q	n
ᇕۦ7̔fTq8ƈ-P&wuWOSRQ֎ȅ㬱e2ȵ4K2'#>*۪&[)/rՓrjȨi5hJqA#XuAI>CY+bxz!EŞf~orsq68>rprqt#c2քНj➛CC35vO|gnܰr^Tᤇ*ŵ凼8aZ~ƔB@Cg./&O9	8Iļ*.pF:ߵRX}΋>x}%ђ|ScʇLی]DfEżװ{̇L1>-ư&^HǪ(D(0u	-s	\h}/$<*	6%"&<PO/7c,(֊x碏k{8մ`*^;Ռ#{˹@_NOx0y7cYlC1?ˎ,vY$`BbCb4(uQ#>?{6*D,DDM(~>ųx"sj9]$├kiG'V
r~"[=կIN ,<;'2:$oDxy;z~U6֎[B*QSjbvQ-)/1H
&
GHPNx&^,\:F8<B0ySQ
^%PKvN۩    PK  C:U            P   org/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyPairGeneratorSpi.classVmSU~6l)X	R!E	VS_p܆d7nGh_)13s7/&3s{=gϿ(ɋ^	hq]5{J71 tlh,фwɂiMg|W24ә+,+IFif/	J~=N05oEOY]j2vSK3pRKYȚ㰫Q4eGA4hJFXUҦ22V232ݞSmjzZ@Yxl]"LE2ib*Yf3KQ/4\+' @0ӡu#U)>5cLc)
Z1r3QB6BLMj
f֢hju3w4Y+,MnM,,RX!~E4tlv?[mU+*m0Ju-y\ɟnrP.hCMUTij;Z5h<$`,ՠ,Dr@k"5KL1kYIS9U}S>ݰ}_;JSC\bB&"Ί8'E*₈DD\qIe"
op~hni<ks1h)E9짶߿nxeWV6H6ꞹǞ#bK$QSfI&̹!k\][ߤAnCc7U]dGM7W.!! u/u+Qu\LeY fdFTFoq120+Ë.D/]/b2z 2`I)epm.bD'p:q\Ň\$+!5	CD0I9Gq\$$\&{&
0
	|JOQ#EIR+F]	[QܪaHGӱwm)H)rF6<-$&mW"/E6Pd/va~<١2nUϐFpܳf')pDdo[況}D{ג&=(`:X^-cS{xhD.[)<=!,"7tӿʞU ':hqv=<\>Y1F%Lsl%L9",EPKP  
  PK
    D:U            1   org/bouncycastle/pqc/jcajce/provider/sphincsplus/PK  C:U            N   org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPrivateKey.classVmWG~
@`5$Tk[, B Fj&7qw7['>s*p9=kTOnBrȝ;};sg9hWʓSuѮ;C;CB)QK
}dƒ=lrj"3{%n0um=Wr5Q5jcCJCK^%ýdnNS]@w]lD/hʌ3fMbXLSZ|e8q~t\n6/DCzVs5;[Tm3^Y&iAJHKs|'t+yjEWLe],ܬK	(MܪNoL"ipǙ(n^se3;%cINbo	^(V)@La*E5JnT%aeV#a_T-4W-gyѶf(UV8ڹ>Cz9ޠmڜbPw]u4;sc0H8.	'$$%!&!.[NKHHx#^ى3YeHmFױhzjoF@u{hWzcUfoo!~ݜ!~^BNG!aAzqV%i08C|}h6_Ѝn=
l2e9Vs pp0wt<Et
䟽>[dta?qyNy$}
Ⲃ3H)NABDcBtAA$gV7eL*8N\UpYAp])qK>VІ;
~#8.32~Ѕ0e\*]a%cd	1'c(ʸ保:sQ\yw)r8/^9CqbChǛhi[x$DG"i6\7H@VA,G0Wi&}O#dvVН-_'O`*kv4DI?YR{*
u1+0<2>U|X9GU#~Te
[Vn~L}f)O0y1^ţ4ųfKY34]1ڣO1r).}y7_|S^e|o˸C!޳ЎkdK0Y/H+2}rWzw<ֽOn!{KAjr>[e߸PK:  k
  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPublicKey.classVYWFƀeH +Mcӈ4ISЂ`Ɓm-G$?'sZC}b0X!
}g;wf?	.^$ &Вr556ЖZ&jg`B![bYf튭rWSAP[T[59cd.U^\¹ɸ1;ʆmVxUeJ;L"
,EӦ]dAPB+ZۼJ|
.KU:)giʕe͔sS/r5`\<[
kRFIqLf!Ȧ]	l+quUq[~I{#GAȊmXePK9rKoLi.4>j|`6״jhyEE5:I֖mniE>l4IL_dk㞰mMY[auvrT[
%*i9ƋCֆH*>>R%0?0p%nG\H
䏟bji_3JDs7g_eؚe5G0Jsn[ ɣRTT9'*l->{z?90			JD'.MB:!H%ȘЋ	Iy	g %R;H
x&xXXw"*b[A`k"ď"'[<Yh,ztu\<NDAvty0Щ/\s$]"]Z1afIy
3J;?@h)كC<tk73_ֺ?#|7]TfNˎܖOGej掿r7.`&
A-ث0TP9D|ǰj>ҫ<!Nyo8ؼ.EPICe2T	{m֫yA.u6cTazo!3ΧP>5qB$edCps:ɲI؅z|w/PKj    PK  C:U            O   org/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi.classViWFqٜRhV
4!Id_+s|Oꇶo
',ݹs罙_{/hŋV/8A@CC ahGD
2x>f^5vsѲ=*n=W
'mYj*n2|PQ,K36:4#ڌfhj˶X+鍔2b+"(9ls7um+oMVNВ&57RA攡)lNp\PiXGOFJIn+EM94j͘#)YZpm֥mMu:OMq֍d$657q45mnV%oҊb讲M+kBWdZD$j8b4Ok =5a
5*d1p|q2zvTG.&cƖ r<@aGjĶllfFiWOa'QJ#hSf(jc
ձRiGD˳E*wIUZCLe<[뚅q6GG/8s<x#11!s+N$*cpM	.(7I18Xc3Gp(Z8Ջ*
|imE|/
8cc1!3ELcQ'	Iļ*.pFHV^qE$710mƇN̊VLǜ(}%'>K05	㹄1bM_+	X0!3Q|*P%<0>PDф-QzC渫;"^%薦 N5-oN5?A"@`.<̅p^ap`&Kᅿ>P9BR)B& sD9q1
H?@/9̋J=_Q]AQNqF΍崣+E9?W$'|.? OI~G^^xrVʅFߺyX("uTw	?B*jSԵqzhy:<WN9o=zTT#W	ƿPK`Ü    PK  C:U            U   org/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyPairGeneratorSpi.class\߀²X%K˖IX$"\eY6NqzSl)Nwzd,8$Nq{]q8
D~7.=DItVJJɂꙥۭu;lO7J;C
Qx܎qÎ-hA؎ڞ#]q1;!(Oz!AUJ!_ZsAe${#%'m+هh9g<iqAJ#vV47UW(
ɯҴyRB!~VLyXi1#oӽ[9bf_\/;a{qV+hՀ9l#f4lDi!;seN,*r&;90W̕v'H͛^Xs'1l5q(@8;%sM.1Ʉ	~A3.bF`{cɨ5b~"b-o$[!v9Vȉ^fY3Bm{Îe'<3e]k:ˏ;QˏG~0,tqK^̪V,giv̡b\@if޹ToN,sv̪;TlKMt+cۺ㎠(op<qCP|+2/w|yGJ\ٌxϜ/}fSL̴3GTfWayVfþ2=uVfþ2<4hWt
j@~ijS W*LN _
P$XGf>JJ˓]b5\+4ZԨNz5hVFihF4jhF4ڬ#V_-:Y\ne=s\g\d9i)\|?^TWߑ>eyq]eoFΩٔںsFq/M.n֤v5c2yʜS)V̭\JV[ޡJK9\~Us*l>rg6%afqZr2 k'o-?>`ke<6J
jA4dVS̠7hX,.ˁKJ vV`7 {}@ A8tOBrمg]xvمg]xvمg]xvمg]xvمg]xvمg]xvمg]xvمg]xvمg%4Ϡ
(!ߠjJTN7t)bP%TЭ2]K0"zA2
xB
<נm2%K/^	
xj5k{{ xf-[oxn={Q?=xBEh| 8< '1`HCAC`x0ǀG >	<|
4_}E"eu:G:݀֍9F S:cz1K_qNaK}}IAn9D~b}Zm_k	kވMqh>?|) |+ʇZ T}@Hm	IESb(	/xt+t8%6<d̠(fQa4E4IVJ<IQ1.v|S홠6h\\0.)qYFEg	境xKiѴKnS?.Z;xdI뜠OgmJ\3A{S"'2^xyQNϽuY*4N=%ڲrxsOoK}rq	Aa%>J<-ʟRUQ.rSQVK嬢ʟF*QZMQVIrT(koER*+J=A "Ei<E	JDQ6HTQ\QV*ŊN*eT4EiJ,sTQsEY(_*bZQJ巊L*WJLQEY$_)FQ.eT0L_PK&    PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/sphincsplus/SignatureSpi$Direct.classQMK@mcEzI/B,qKHFTG/
`,;xþ8Cן2.TàЩ_TLBK[JWY8|_S>\2MG TKpw& 'H}9c[i!4TZ
p88Zwү7x؟zhհsѮ'(Iފ	ipZVFXݎ%K-)| PKQ    PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/sphincsplus/SignatureSpi.classV][W~7D6ŏ(_H hRRĢ/M/(<>EQ/1YBB҇\9g;3̙'/ nu!'.֝	X(:~*G$h'G
H0A3Wi'8gZF^7=Ψ*\aK8YRfMVN*[^6Vv*E)Zi"'!<Jiʩ(/wCش`-i7տcZ^0ŉK8ɂjwՄ&E}K1P!m]Of5(N&Z)s Zi瓋f5q"k&tkIQVAi$wN3XYKZ
ͱ
E'Legh99OkMmsM	X[_JwLWły#IjZFQE
fֵu#/hk#j2:E]3p:W_/ͩ5ﺔ8)SG22.ɸ,㊌2q]FLF	{:')j ZQź'w/eV>#ny5;mv,%&V˗$Kj AzKSk<+T}8v9xH;lĎN|-c4NBAw!	'$!+hE3Q
(
eȘH+h=`d10>ac.LO40A|gxbų0Rc06S|"1~]pZXP~.W28V;O˦j+SH],\C Ξf. R&SVmT&DO=$[/sK ,Hc,ޠ%+XyuпG6nE6}`</L2}u'B)t5<×P'7M$RLbI,V\/+6ңxJjI)D(PM"
;<oۂ@5[hto؂eU2xFr`-sh3ۂYYNJ89]Dy˸BX(ZdL;1[c1/WĜy"f.P<>j&\6"&?-t_H{1 S[	){4P;hPK0Q  %  PK
    D:U            *   org/bouncycastle/pqc/jcajce/provider/util/PK  C:U            E   org/bouncycastle/pqc/jcajce/provider/util/AsymmetricBlockCipher.classVsz&.6 %GҤ$!vVHMhY׻ʑBߔ<Z(δaswQlLw=<swuKs09aLE0[4=CQ#6nZ^Czahb
hzLf*L% ]2Ce<0[2+*MRf,)EXY
-)۶vL%PSzA<a2[.6C͕"4(b:H&L˳
ˑ

~#D-
VX=7E(@_q}Ym]7Bui8\e;Mq:YSSo6]M!n

aU$QERN=o9Mpv͵h#C2m(HK	Ii]f
+8Ȥds^xlމeXhU7jl%-ҡpN1Ÿ_ۆS/rMˮ	_v
R~L&iR٠fkd32uVpɂhw˛Κ̍R2HV#]*ޣ`r;%UYك]:\▻{΃"H-HJunTK_/-MlFb;؜߰L\u+}j.5j&M}wâ)5C.u*o2%"gͷu0UԲT(|*kMC +/t7
Dhz5#ֿF*T|EEQŔc*UWQR񘊯x\ITÕ=ʽ,H{0Y$)6Nݮ:haGpjbivd.y	^\^tHӽ#{2%ʉ}؛u^p4e405<}hh,j1a[fU
`QWAm^.ixW4⪆I\xcxL`XaXcep< (cp2C`12!CaZAߴ\t:0.ޢlRHy闊'gTI9RmxXPj)xsK'x A9>9\GGPih 3?G_;<pF6SnN2;ON4 7wW*v"j
G*ʠ^}eH!'"')`C)S?}[(/
ŝ[Ҹ*LHE_E3yYQwb'eѩXTbFc~Ա_t%g_'NFI!)	
!Fq?K"\E>{ӊ@O2>1塉6D?I;w39]jAit_luFua_N݈ϖn}LA:+EݶbZ?>&?䶔!AC487]Jp㌊l6ImIQ|X6?0Pf1zTv,KdƲ?	ot="hZqո
ی
2f׸f:9ΗCmaait:~6D&_aLlJݶȤ&m?]L>ytV44jkKFo~D'vʀPK
  
  PK  C:U            F   org/bouncycastle/pqc/jcajce/provider/util/AsymmetricHybridCipher.classURV]2F1ͥ()i m-Ӵ3B>#|M/yC3ӘL3CQ-	`2Sfξ># 7sj}	|,!HnP`_"9W(dI?o[%Ajͯ|m-\wq\BiUݡ-DӌJq-gO'|zڶjh[eLöB]TcQ7j]`InE멐mT(*춨Z\1nh}4aS4/
5.9{J5-"N˾fF0kv}CvY/=_1O(iUnю%KޒscN'43@T*Yv4a3Ȼ<zKNܩ8%e}˩f4<"惡(}ޚ([;m_L}4vMt}$\[}֫\˼WrR{	SKUkg!SbUt<ᇋIz|,~PnZ2|
(}|#	响PoM晑,Z]89Cf"VkU+LU`NE(:K#c<gkT1^3It E lPe
ØRя/Tii6#Qfz)n2&1$t6ױle3f7l)$評Ãؼj8}|bT׍G)}wJEWi%d7i6HDcw? ]5oǡ̿Q?~bCD*{R&,R810_ћ3$xy\zS"#
x:ă7/G 
&,~, $hKc!܃p
~n8җB}aW9;N9c3Q~:/DE
Щ$l0E7}ǩ-mM#4_j%rGQOG+
CkCC/x:K˩tVȾTSNt3Al&e[?IǄ,'*`[PK_XK  i	  PK  C:U            <   org/bouncycastle/pqc/jcajce/provider/util/CipherSpiExt.classU]Sg~l!,D@0jV
4X(G -jݘlOwp!
3uFꍝf%S{<x`(R#yGS#kI:v|QcJn y>7pғ92s~S eZ+6HEn*n,6ߴ
fYty<Uz̳j
qufkaliVR
o4{*jwCE,QG
r؄K¥FQ6jU)!H)Y)XʺxZ.ۮ3]k|CydZv6oP8c,׷<KU+ۺe
nBE0bڱD#|зhjW/x$55Z{2meg> dN/s}VRo|gFy:ڳgDr\*Sf۪R
-[~f7TeC%bЋZ%[uKZ<}EjΉ}XtHBY	_J8'ἄRF$%J@W75rϙlٔT&ۜ}R|^ BpѥT
!Wb-̙vC^XXq?>h~2!!'!88$Ye)b܌,qICNna;q=&YRYLywY,Xdq߳xb
XbO,֜s,j+5QM`+R^R8LStBzd5d|%<!҇G"ZZ=<(?D~3'f^#qM|˫b:]4	l%t,JJHIK;NZ 53m
¬ٲD(zR7.S,fD=Xã7k\OsR|ĠH2:ʯO_:̃c@,q{N^.M:]ǳ7 栣.z\ARxQjtڍ9Fuݟ\1
Ĩg7~zc?Ğf87nC	J)"dZ^̺nxЌǌ[A,UʩD{fy4sKͬGY	0N_m|;K>-ӸEA?-z/\XgΗ\(C\!xsF25#O3=}lrר/xNHs(3!j{qчS)]ܙa_ӊPKY    PK  C:U            7   org/bouncycastle/pqc/jcajce/provider/util/KeyUtil.classS]OA=VJQQDe[СhL	Ն[%OP,u;m_QƙDc{ A'"7o>˽"ЫL\۫
0y9;v=UY1[4xjYԱ*٬.D/,eϯҲtcjQfE+`FF7=XDM¨iͶj}+̧M*9'Qr[Lä)
i
\>wd)Kb&a{7F1tŻ
sϔ%<6k_[ɨYSR8L3FBа+:#EeuUǒ22ܜ,ʿ R}PJ
K JSڻ2H?և.`J*__#$@j%`FFze('>;%^OG}^YV8EL~Aw
k'H
rg(}8PKjI0  
  PK  C:U            :   org/bouncycastle/pqc/jcajce/provider/util/SpecUtil$1.classS]oA=bhkm@]vV6MML6A}їaK]]W5Ql|wJ)Μ{~_ 6$$C̿gH<s<'zΠs!dJ(+#ihaȐ"/CΠ~͛a^~2:^?"z;rg[EVCf5
@~rʮB)ځ[q\inl=q,xj}VC .9UmI A20hStxSi`hHkaFCFbeXxH֎kd6Td2lQ|B7ӕ=$za?nN EDJVl*2Fk0G3v|luq$l`
7\ªnqۀ;),!cEYU=WQбj1v=O~HZxy2艑4j>o5WDdz1ICBY߱VP,V>akŃJQtRa'*B	'>jd<bt+PK=< $    PK  C:U            8   org/bouncycastle/pqc/jcajce/provider/util/SpecUtil.classR[oA.lW.5h6$lIMf;L%NHZh|GώXd;e__hƐr<
P?eXkowː'W߶w#?`$NOvT8
#b ?ϕ0&Z$SVa0W"PLQ$Hc~DG=>';avMqʎEk[(X(29hZ̽:j{	t(dt|ESB4+lLqʸYγ+iE<n8bA,]n;ȣ*˺X5l0d['ic DMUNSӬσH֒A}	3_wtHW!Ƀϸ˧caȀGles?mX.z(BαE[aPK5w  o  PK  C:U            8   org/bouncycastle/pqc/jcajce/provider/util/WrapUtil.classRP)!P@(Ce w!͔!	i
x7tFfkWq\cfi?|
`
+"hqUD"24¯ZL5L1d#Ϸ^24W"1ej[Ѧ%a:fW2	-o0H#4쌺5tPL;s6X04>%vຎ5c'˨;Nu-[{'k	_0iyN$YrZ:xzՄz	ˉ_Db9uwo*8'vu5kY\90FԂoZ#$:wN.`lA8t.G
7
pKmBճ]0:|a5C(zٞ-G%LwJ%"8t"-%zN 5;P kD 2&%CT}<0ȽALs3#a%x,̍bF JcIŵ|MϽ
m2h1ʟ0>;٧I#Y)bsIЊ.(_h"#̽G1F."^G|WZ&XF)eNZ!\F"7T\IBR*9)rS-,cQd"e
0_ēo#hwȶC-=y7PKAP}  G  PK
    D:U            *   org/bouncycastle/pqc/jcajce/provider/xmss/PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPrivateKey.classWWWm`w[Ѻ@Z+ Q5Vm#I ikj[oڅ@?{g&!B@8!۾2? lJD@B)^H(5oP;K2;&b0$V<
uPV):NEmIPB>Ơ;L&%̍^-	-'t[B7i"7Y!xC6IbF&P/w$dD{fQDDIv%tV4S\N-#Lș3^&xtbmVwӸ;LSaK!1QQ
Mr]~ڈiVC9Hק
j#vw"eɄŹY7D*ml],ƵD4,kND
SjM.`ԍ3r	\LYBOST2@Q|EQŴe;I?iF=䀞5ˎf%6ZC7x'mT׭[W;y|O]#i((EI@6bN-03
7Lg84`Yźu6-.jݧk}	"j!at)39hD:>|ݧ&LqlV2|EO%LCR-鬶m[8tbr[Cs΍ʘ#'I_FwX'c2If[d-ʸOV$tμ8
=$lbl̘yv_男VX>Px8_S;&22ODoe}8?
ZO\ºiEMç81(WLhTrE.h]Zyenb¼)ou._pKn۔df͢5X	"I"锉I9)V+3@1
0V3wt+R*Z+\gl7)MvTC*pTzSe*3aXrTkPU*ㄊV<dME#zT,b>"*AX^+USqa@\$dzB&`+؃'Up?d8 
q8.fxe7s++o)87;
!0 !S2/1^W fxHӚli+7C~kwEKK櫗b&KQ%؁jHYJІ3&$9-ezP4ZJRjk<s\ab/j8]}ˈAk-ߜ'#8OͧY|>-Y|WP~q5sr3G%\Ch}(.
QwU޺|aJel1gkQbc,~/W<B<ke"Rn[Ű{~tRd>Il6RRL#v<|9+6G^ط7Fyp__wZG)N,[f#!}|(L߻»'J4ׅn?[a;\yrr9o=iHH+hHscݫn^q򢴈B.}߻G9n*
bvV<Y/XC7SE^PKaO  <  PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPublicKey.classVSU-	,]胖־lkHb8RۦM J+esI6$Vo3qꌥgq<wwI)UrW gm3fc.u1̙"tN7t 'D2U.9;4J}8e3U	bƼ)=bιԤY&-4sriwv&c$:b)㦕Wo[h3lG54YxTK0EVڻ|TcCμypTjgF( *&/YuQUtSM-i!@e3
E'P(ɢS%<
sVFrmOdHUn[lp%r
zaJ+sdM+i䘢F2L1uf	Pꃗ5[Q)U*8Rtz\w:|UԷtmk>]j垺YMjL
ͫ+po``+e.)fyG6pf^^	8TsȲ!YUf3KWs3 U>h-9\r'S5-w1G{߉EqLqϊ8!⤈DDtx^iqZ#ácgr9L'<{dyou͐}HPhzLYz^wEZ88c
(Jk6TIEz[%Rsuk1	fvW.llUe.)ykcoΞt2<OuOegdzd%0'h㤝h"'$^$daB!Lk2du;'oH8qp$8JƉ)a% a79yS(R$2q U91$\d^ut!Ό+YFQZVry4⼀=./ ;I֌Y_ a
?R8V8Ox Z%z$d?ITЧ|tW80J6a*>#7qI?~P#\艬a<AF(}V}L~U|qbˁe7o܌_1>(rw|WvmN˶>ZvlnL]r|_#j:_C+ϺX
y* $Di3
@Fn칳F/nx,-@A*QAͼ j1	vSv}kx*M9}h%Hxf?PK6    PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPrivateKey.classWWWm`*(\(qY J :L@HIEo[l%p9fC@8a}{fCGQ>dj[@T\שF>$RIvia#@ nޑCMۈ~m)!b3!@ՙbC,.ԮѵA(^%2;oc)`wLL6ٙt2uE5Ʌ/~r
@E
-a5g->v AS!V0l4EW۹Ug&ө]=SgY0&(m}RWP
($r8@P'hqA6HvAţE<!EM-tLIz?3SxBaH?w
Fc2hK.1R%g*6TbiJdwDxzhj\U3<i¦֫1]@Mfr_5<V;evO2vM3Um#ؘL-D:#g6áðf.vKF>USGWQY;fAt{Ʀts7ߕ.Kif
a45%Mdi̢LyMGrADQ#-VDGDAFDlEV&b"v
k{r910
W'NL'#UӚ~2^N2
1ݍݬ#Xb~Vf]YfjZY}]tjd$A
2oD@!=.\2ێ<h!}eZ3fL7+3$j}C<
F|55U)fD}Ĕ'ixw{qLF1
XΡjʐ'cRK!á2@.<.cNsPd,F22/c-*XɡAdAQ^s/-@'r9Zx	^I8A/Jhy8
	mᢄx[#xGQ:p^DpKޖЅ%tҍӾx5E;٭bԖ7?~+ߦD;1KJt³p>`v?!Yh_AJ%!Vq\5wucrǉXNeM6gb6${M1\>mHs>WS芁\g>`;QtN,J7/ݲ֛ ̆楴nosl}|swyXÜYqa/Ɠ{_¬eAJygp#b)O	|J|4JlnVLiv6h#Z
kX_{m|u$5T؛.&597==!T>oҚO+#|^/vO<3_<FU0<<)MErp=w	qH+:$	n 9$G%Uz޽&%m1>r:)"j)n%~zf?PKؗq    PK  C:U            ?   org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPublicKey.classVYsVD$,@EвBVY!PElHr??оvJ>uڟїNs%9qbLtr9=rѾ'"Ѿa̰ؔhM泆i%R8d}c<f	cwJZU˼ӥySټ"iY>e&=`màd;Z娑;ei9fVg(Z\hF鸚sl@vjsi-dG4'7BAAymAS
KMN-ɰW4%7=THzdɭQy̪#yq&,*dfj;Lu{[KDVY]ظVp̲,e]s<W5WAnƜm"5<wtUERK_낦M}OXIָ/GX{ȧQVz뼮\5L2txܟ̡h[F~uaNlkD:7!Tlܾۆ⨯yʭkײG_)A_	% E	$𒄨>	1	q			/K8*AeHygͷxH/z?{7^@bG/h0os#f`MؘC88B/19ncx#y
nVFݡ6db0Z ZeOM|jޯ:T`O:gLxsz70.*FXB CN!vI(CRpGJA/&taR>L){VW5@1V-!n8we{Bddm!d-!n8AeaFưP	Yc0q#=NkH~{\+^f	m !TQ?Z}`m47H~I^	Ӹ-n,f,p.C4ʾ#||MO,Ovߪ'_FyÄk	-݉F#1z$B((;2OŗpA=\y74oծ̇@(t5ruFhǾCSq<q0,a>zJ?L2)="Dv3fڅ&Kd"yQ8BUI/Tn
>ݫ`Am>KڻӎE@/3P9"=wVX\dy

x	<xl	,PKs.6  Y  PK  C:U            :   org/bouncycastle/pqc/jcajce/provider/xmss/DigestUtil.classUWWV]`M4mB~E4Ih*bLԘ4]]'Sg%XkOҾoe+c83|wf̽p
DD' &@p/1sCD-t<S-0}ݩt溫eRir@LqT:i(fhɺA
feas;Bny_k4
"t!B|
J^zPn뛚Sbrx*ʖ"Ysc^nV5Ӟ}j5[Lڇ]2nh%AeyjUi؆&+
3%Ov\:#_M6-rG5ے{aZ0&oސN}f=#3UJE%nmQypR	lӬkU6鞔$qUqgz<2+<>)x$xx$yO>,eK/NvXb8}W.h"qL{uD܃z*dv{=rܞGՁ#Dtß!o霈%q&.2"N!DXD&D|D|Ib4#>0u_&31BB!/aZL,3u<a9LL^7
61ܧV~;n+EeШ}JZV~iOq"qүxԂ>WvCȪd	)3䱃J?bOr`>+.%ʷPZP[Xw)өbT·SvY\ovhgxƓCIvR"2sqR>Z%7y/m#&/jK?C=l\H{CX
meg 7@w0@0@hmw: PKoɷ  ~  PK  C:U            A   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi.classVYWFCYC
Mjc@BY&]B)kctB[r$_A_촜?mز1@Yo_	|E^^y1!C?؎04#bF<uCw04GI4cG3⺡kf)f靄2΢4uEb	u2-KkUq͉&fh8gF[h`؎bd֮aㆲО"]JFuS^X;RX&#.^$3ξ:gcF<0Xؚt'+/%Ҏ+v_#{iQuZZZD}_p9(i7e:ɱj}ӊ;fPb;	MVlc\V)I3@}T@e7q3#Z\(VD}UW59e"=!l2QJQh#6["Rqsm9XX3\۸ğ!tu[aYU^, UP80Cc@t{`6t*enw#N6EYO<;m;w9H>q>#79! 0bR{5W%tV*8̖PcNIO\dpa]F*P#T/W%s2jhPcs2V.4u=xH%Mw0w
sdKapY|C/nMaτlއ.| FЇ6,fɇnЃ|碉I)a[)|,-|!/%Lc[¬PȃD#.FS	OJx]	a|&!%Df3_#QSV/btE=XVR" gAg=}pi~CCy$4ߡbOx <9Cï`)B#9a.Ƨ9sd4A}1Z ix[6*DO;\R.9"ŏ1Hx/9d/fPdTKHsr:_wHF :cuzsЎ/!	i#BˋډS:d\?n
4{vbe;F\lT$ӛMy$5LCq8Ex3GP<%[Qa5PK~\  z  PK  C:U            G   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyPairGeneratorSpi.classV[wUL:LV@@Qm鍖b(-
mJ%U	^p:9L$tfR)*~+<⫺h2k	\.\RÃY+g̟;EyՋm^y1(/ćæe#$D&ݽ}9[ɱ(=Ñi20-ƅŴw$l5lelyF3m	Ms'i̻glss3鹸azf4+LHhYS6μ&""-92agHEL-n:,F1fW)ڒkAH']Y5mkJ6-CMw9`,74Oh`.KXO)槭\p$idҗuq,9VW270̞[`Q%t

n/d ,'(0G<Qd!%Sg9f[[#Z81'NGYXA{B;Ww6V:Qz륗LeҪJ=
ȕp+*z*uAtcvԊy#r!	RI7ᤘ>ZИs	Ta=)JZ{f;zI;9E>e<!「'e<%i>22:eqHaGdt#㨄S
QLU/`dI}RJm`	sojABꠗv_Ty,Wϯzy+$N[^Y}m õX+"ԪrN &qqJk"=q7,)'~MUduʃoB~tT?U`qǴ=8Q{9<aC/fTY;UM㜊݈鬊] {qO*pAN[W8\jN@8\j4sLǐT0a.ǒ.=CZA)'qY(S+k
ta+8+
& =ML)~"{9j尖(m&64$Fʧ)4z ~G3?Hb<g+x+>\u
kQXUֽt]Cku4g1mݜ;:#<}h߶Jx6:
nhM')2`Ap69WrFq)9L7*9-'~A]Y&av7Wߓϛۄ*[ƀpO_ϟ0|No+ekw]tMY{.ڻ^U|p0tdoP_gqFȇ2*w*H7PKj=CD0  !
  PK  C:U            C   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi.classVVG͢A@q [$$0v$aEنѠH3HsWsZIpҙ^nUߪ鞿w 7FܐucCFCϿfhmŔ0ftCw24KI5#Э	5CG[,u]UvRWbgQEEѺv`hݱT8h!RhFzDkwBs"IŶ$׈aMQu;dzP-йdY7UK;iЊiR1rk癤~&]TLu,H3z2YKwrUz"pqSHG_lNQӢ6µr:Z<\[DJ<>ܘ}\oZ	yjNUl'ɊmɡU2;z⯏J勇\*8y\0vL>B;]UU59mY"g=)\*Qʖj#6S"Rqsm9XFx3_üÓ[m1ېQ3}O;1p7cؙtڤ]'ݬ'hx6$q>? Gc^4ھS+@	/+J1 Xgc_dp,
Wr-"ڠJH
_<?dS,d:l]iz$$˥(%-գd92땰},ox7H&>Mz09!тh>
Ytcnh}E$L`S{ؐ0OD)/E)lIB4Jb	>gKs	a|!!E4-xMӻ֨{Jz]\ 4ħON=L4렞Q<x/?ⱂ{4X!+sypWp88Z9A061?c|mc/G"]/qEe5GF;`HD =X+/%RD@*GbF
EFtz9:.AHHD't^k(O~7H6,??ZG,:@P
wn;֋Q@}`3" 1y<sԄ6vg%?%?7N=*l2]z譨xPK~1G*    PK  C:U            I   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyPairGeneratorSpi.classVwU-mtJFMS0
J(mhjSKm	HU@|ߠ~G=s7y<<n>ss;	`? .lvӅ!hm<+aM׬"\$L*sSԬ <MtƅK%a
g:3Mܴ̚`Z|*!%ҔH6,73s	MMXf6TR@fs^)vě"lV|MIh&QaׂU|	E+Q#I2tJ}#֬/g`l4O|>9JY̨u-ŔHa_ʈR]ͩi%O1~/̞[`QEγ򍚹$fhj@K3ECF"j*3gX
14b3}U>f@}MOGjӗ2r4}L[J,I(aCpNjof9R4˶kAK^PD#b(Z9pF(0gOw$	\ϊf3ZЖstyݝ+ǭ,KhڑdUkSD'E񔈧ExDG^ψ'_Ā"E3TD?P~+]ԏתWYabIw'8{
9;SVI=Gܞz
~q
i{b[4juN;NP5b.q
ȕ
;7*m;=$T;Mդu΃߫3ht uڬnqWۗɛ78320xVFfdlK6A "2v`OFOx/x/x&W8(8"x;0A0A KpK#,F0$pt	0Χ09d$L0+BxMBHSM|Kk#b)┒USH3
xHd8{#V<shEI@-G|o{G˸mYү?+F KƝt$A[(hkc黋px
nv	+x&|2S&-+ @|W{l6oCF}I}Rڼ7@7Ƣ[ǧTMm|!U66Kok)~ Ѷs9Jn-i2tRg|_V]!;(_H)`ҖuR!?PKyG6@  j
  PK  C:U            J   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$generic.classP=O0<ӏ4!|^bi%8V($N+*QBв@aOwNN2T:)C}S]\䆡gT.E4x#e˯gI2?2<=XױRe[$jn̨ "E3hq`;XOD0:߾`w>*)aσ}^	8`P1W)IVYg3+IWFE)tkFhln<jGK47BzтPK    PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha256.classPJ1؟m֟j<"HZ/Ǹ)>Vz1&df>v
dA##iW}-vvwpHЌU@oqM=M(/0<y4<jMLPG*H_FnJDǾ{/͐
m  qP p((ohƠVR((bͅ*	J!Zh빨d"v [TC2ڬ93lڱ9Cðmѵ3PK%    PK  C:U            W   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha256andPrehash.classPMK1}ۮz.xh"H=(=ݰR5IY
(1Ex3y1׷ * K7l{g'GD=]5X6K3mj:21
Dȵ4%~Tѽ%yӚ%WMU<W߅̌F?^LGLGr	C&C%dt藐R+.Xu&5l'8A\Zjgȴ暠hpP{M[ՐP-973ڰ1CSPژXTQ|PKMW\1  .  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha512.classPJ1؟m֟j<=RAK1mʺ&i`ĬU^L`	2yy}zpzc@H#Ue4cЛxySk
ibb@h8O9A8>
ZE:A$Ag~g'껑,K3dCn[:9;pzo'<
(3JFA/,/x1(!.Xsᦰul7A<nȵz.j(Yi6=Ր6+dsvlPy0l[tL#(PK]L%    PK  C:U            W   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha512andPrehash.classPMK1}ۮz.xh=R
-(+Eq7lMj?J̺zd{L!
d>A-00uzW`/V!ҟL!LLrm4MA}tIﴦ'BA{!ುoSODw!3cŽ |'1;>ӑA wlɐzF	m$_+h5%d"V]	,c ۉNP:2&,5(9^kiqV5lTwds6lP~T,6&UPKX^,1  .  PK  C:U            O   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake128.classPJA=fY= CCaA2!8ضk3g$$}T4QK3p9{>H*rSF.u/dw^ǣțx\PPOM&6wާVk:d	E\x|YnfJ;YAAt|iȣ2d4:<7<RXJ`Ek.VP Hb_ۑBж0[qrvMە(Պd3lLQ|0lYtmMF{PKy)    PK  C:U            Y   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake128andPrehash.classQ]KA=}heBOZR(AXLH>Nj_IHY͗^s9{?^ B V*	Fd5`^^?лiQں̏ZG6Sa[rU)lT~\t5{
璠ߵY֮򻐅i_ȋQcw\|Jr)@Ҁa e M]6dVEC)|%.,	r;8"Ejĺe 'VNi_1"/?ve"ztTDB{@a/G&0;Y<`3/_FS(6ҟPKd.D  D  PK  C:U            O   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake256.classPJA=fY= Q(AXLH=N:hY=		}@fA{.syy}z,JGܔ4.c݋:;=:;? *(&&S/0<~ix՚3DB4xx,})ν4}7tqq%+s((o0Ͼj/XuÚ7ҭvdk-m.2Vbeqved,J"!w5-S?[][% PKa)    PK  C:U            Y   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake256andPrehash.classQ]KA=}YS&ՋI
;ٮͬ?'!Џf5_ziνw;s}x}pB
	X!Iօ/S=zyvuqx|$BMi8"ҵom>l9PY3, `A)k %A})g]w!Ӂ z.εS@@)zlĬ>]Rn[K]XrWjNqD`̈́
bSO8 5gJqE_cUˢE֙5計ALavu	rSdlMk4"	PKݔB  D  PK  C:U            B   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi.classWwFvle8q8F@dYpH(!)+	pm,=cˣafdݡ.@-t%mCMsNs'pfŒ;{ߦ pWZqG+>يVjhWg54G{
dۖAfd+<fZ#ZfNiLKHғ1Ii3gih/Hǜ^*9{jmx2! TToLYÓ ;sҒ0Av7I':YN%5K񩙒kNqGJTrXC's49dN7(QV	(4dT5Dްr'g=ek29#h
ľ2bS6O {ҕczK`,qT)Ҡ9ZprB,eDYBbȴgS*崧t8XC5ت*rgMof̰y
Gk3k]7\*NTIj-zye>Z?1f32aZtH7J6h8FζSX0GZϺL7v/N͌>t~A&<3[˙RMۦWm]3a#Y咞1~X3ViG&;pQJv͈9'>!iU}7
8iőj)Lʌ
^Ĵ"FO
Vu%uaoњ
VzdN.Elue6">K
`jO7@[pǂJ!q
/>@@LO ._@BA~	8,'8"uHP>!>ZSõTYiy)GjUAjoJ?d#Zk7N4Kn{{}kg>۵e&153_dzo/z
nÙ͊G6\<vTvJꕦϚ kq:1r|),kLlP;&&7qouc{rtZn=(>	|NG;aJ=آZtM]_alэYlGVGu쁩n`Nǐуy,n&Pdb0WX|5,,8oq
4X|ŗYak,ak/i"ϳ/8<,mGfKM/P=iQ|Ss3s)#(\	W>&:+ѭW_]FK>z!,qqr+M'0TIBCHV?nm&ݮcx-*.!w!GFGO޾^}!_bU׮7t\
~vۮ#9Ѽh~"z[EdFMG4^>jt S'2'Bc+y*z_8ǩ*͕ThonUP)kx+j'\wQ}{:]h
9bWL_N2$M;UF*~xRvngt'BfH`BIhO}NU߉p0zOP`t݅8
K5;1,.ᜄm߿,N]Ar'
dh>~}C>P`]O^_hKnAh5z !O^#U|R:6F?*~1}R&h;wj?~%ϑ#I"}I#}HKӤB3PK⯕  g  PK  C:U            H   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$generic.classP=O0<ӏ4!|^-&(RaT:V($N**QB@-;w-jyS]\2oaO2s)l(.</2H2I8q$ϏiTXX5L4*5'Z:h8h:pq,f'"xPF߁o;O|԰U
G=Bߤ$%ZeKхOj1ԅN]4A->,G`pDQZt~PK#h    PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha256.classOKK1ǶU"QVB(zLw6eݭIڟ`>|23|`[%	rfx,ciN*7WӽCVBO؟\HP_MF&6^Qt	vGNke3BU}>-UXBq*Film?EA1Cʌq.yfCK,(cŅAN2NĵYuxVb
a_u,j*|;ST];PK"    PK  C:U            U   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha256andPrehash.classPJ1=iQVB2	3)5SrUQbBl7&p=yx}pzC?J3*<?8:~6fl6%:dq&40k"C<?chd&8V'#
[P67o1Y\Zr<n#N\EY-Ul/Y972XJaG>Fm% (])Gm1T歍JN⮳tr;e2E~)|W6&(|*}WS*PKDV7-  $  PK  C:U            K   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha512.classOKK1ǶU"AыAPݰMYwkgy*XĬDl/&0߄߼= 8V	y\#(Xcpo4'>&WIh Ci}p?ѽmxӚfLPGsC}KU2PmܤJ$8yApAAсDot|i2dvrR.XqfP*Aq&pEfk,nWˀZJf(N6kէ/æE,;PK+"    PK  C:U            U   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha512andPrehash.classPJ1=iAэAB(LgLJ$\,~ۍ	{/9pO?^ a,AO.Ϗ۟{h7`pcz<	
e$5tFv3)	N{HBq;Ԃ
$iLs8W17C[o>WeVK5ۋb~FRXQĪ?ed[I(JWQ[}n0yk,nNLQ`}
ߕ	/߂CԢ'PK6%-  $  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake128.classPJ1=錭j\	"H@e:
ӴLMj?UGnLs9{`9	Rj {(#i
7Wmӝ}Zڎ?6LL;2hz=ÓNG<
wZd:A$Lu=RdG6nJ$8yA.	dd8rJG<
(3JFA9>Sx^mB.<x	,b ݈; Yi#Zm۟뢌'kGY\]ˀRHpo'X³euӗaݢgk2PKn9(  
  PK  C:U            W   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake128andPrehash.classQ]KA=}heBOZRAXPlH>j_i!Џf-8ޙs̙z pr)D!HVQHrg3iK{p?Ee0`%&7l0HcFq5W<JiD 8e-ڷT*1+H0s	n/DNM>0ez`.MCFCWm99֢~#б#UyO5|䛞7TJ&	J,DMYᦪ*H(z)r!6~5%Q-dPK
*C  <  PK  C:U            M   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake256.classPJ1=錭j\	"H@e:
ӴLMj?UGnLs9{`9	Rj {(#i
7Wmӝ}Zڎ?6LL;2hz=ÓNG<
wZd:A$Lu=RdG6nJ$8yA.	dd8rJG<
(3JFA9>Sx^mB.<x	,b ݈; Yi#Zm۟뢌'kGY\]ˀRHpo'X³euӗaݢgk2PK$z(  
  PK  C:U            W   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake256andPrehash.classQJ1؟mjGVQV
Jcvݚl},O>%f=ۋ	%2#TrjA֊KL":'ء7W'/"n)=oҵz06SQ[rUrHbI)+
$8Md6mp$.X48'#YI10	zFh$E6ڋ'z4bHŰbĚVM:
4gJqEPN=ve zjg[zUEFw@eD0xljM]cmPKHjqq=  :  PK  C:U            @   org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi.classWwVv|me8qx8F@dYpH
+N8यt--ݕ>y@-кJiZb79
'pZfeɒl3w7s;s_g3nj׌~

JRh~Vl=&lLr=!ĈMZ9ӒC;a8ƬaoLCYZW
cN.]Hr]p< *7Rse9iIzlxE rTG[,ΥLI5rnIGJc$9Lx9Gi2lf'wT(+GQed0lc"OwLsF"oXđi{fs5˜O{4@b*bl5+#6O e;ҕcz5g,q-Ĕ)R9ZprB,dDYBbS*崫t0XCت*`OԨaeUyOeV<κnT:ZrJ=U`MtƘȄiQI##݄*W߼/um0gf?Pɸs.N͌=p~!<3C|WrfM
yڮfFÑdHz>
#V	GNԆ0;ػCQrfC?/mP
gj!T	NMt%G{HabZfU"1"G\O]9MnpD4{c?앮
w0oElWGfB6\Wf#^!.i*ܶ9uf&MN/Kn=Qn@@\`>=8 pP>8$5?H=!>\Uõz}#*Yɬ<sҔ#ß {!c·GWA?d)ZmL
4vEkWNXսomkL/+Pkjt8tXܵ93kH=	C#܅Y
F!Nw*Mɟ5 Vul})0o->N[웬t^+tXK}ۢF
6Q+Cר
S:k:u0&t܎M:BK1-::hä]0u܆iy]ea`Es,Y
1|wwxEQB0N`ŷX<Yχ1毓x.Lῷ)|7Y<MOB1$W1=,EM-$̤GN^.3׾ۻWޣ/CA>
gш~OJSJ*"O6H7zڻ?Nm$ݪcKx9έ w GFE؞^]=#_b%{/_oxKylx[2~zinyEۘd
FIG4^,F%|2Dht%o^Wp|<x#UAjC%U
<_WRމ2!Ev
1-loaxO]c
4`_x{ISb~_L?"8M2^4^U
L	A;џ!1#$+`msqBvLk|8)+x|M[O rGy-r;2dh>i(.eb҇d!ϣBF.{@-`{Kbh-SNGYƯպX
 m;}Qm-gO'I_ =NO3Nˤ/
wI?)PK
  =  PK
    D:U            !   org/bouncycastle/pqc/jcajce/spec/PK  C:U            8   org/bouncycastle/pqc/jcajce/spec/BIKEParameterSpec.classSmo`=PuS'0L`%YYR+ֶhWTKQ(nk¹ϹK?|= A!J? Ԗѝ2WZ6WuZ
OxiGJ[u͡'En)T*ݔ]Kwzmj֪'E:G(!v%o*vbrr.uܛdê5Q{b;-M6_jLǐUym9_ESUڧ%\'[w44lqCǨo5(c<&xL8cC:QE}R&[=⒤k&ɦRi?Oԑ-gj!U= ӇSmU>ɮJ8sxIx3:(8B$g"($DJD.3""4dF6Y	,Epy**
sTяЫ>QtcgKP!̑/p+	kñEm1űs"M4,'h+OQ|Few)а{v7XA#zd%=np{E(b#gX`eyPK8vW    PK  C:U            8   org/bouncycastle/pqc/jcajce/spec/CMCEParameterSpec.classwdƟd]M7lj&
:
f!ZڦKSpOaN?Gy}ҔО}{7o (྆NiHi0aFì9
$ҙ
UQk
?mm^%U_JznݵժM38v׫{FƹF%ӼbyT;
&Dnׯ55nEǚӨ9T0bAMmoV:T(.bO'iv
X'uXX,f.o$췸rόw+sRo7ĺV4c\)_[vߊuM[9W5n޳pm^w
z(VšU0\8WkUisDKmw+=+[GńIo8"⌊iJtJeڦJ윑TS\1D:3hM+/مt5\<o%w59`q/\|#:DI[0ex#8OubSic1ǘg,00c+kUq|Y-3d\`|-"2ecg3.1.30c|`\e\c\Ob73
$o3"~n1~vheJ-b*SaLg80.佧80xkn!ctgBOT 0mBH!ԃ/{bYfj4ըTSOGMKwE[B4hIq[W
[BJ=A~ >vhՓJ#%pPzDj8@#RG4#u4@+Rj 7RZvFF*J=PK>+x[    PK  C:U            =   org/bouncycastle/pqc/jcajce/spec/DilithiumParameterSpec.classTOPJc_C2Dy()R貭4Q&:TDQ{Ja,Ѩks{/_ Q@6
a\-eݞ2-
ۛz4'fJp<}CC!W.4ҼRҘfs<RP^+rQ)bIYZ5u{K**OcEdḻ4G[<XY!TvN2̼nTꖪXvQ+TY5*A%[g~d7nؤ*Us:9qMVT Zm#cixq)]<!О94Ym~}3hu6?[gKc:glCߏ`?,4"!ADRD&h'D	Dj) ^q\UN\psB	n A&8-	".^>L,7%2fZq	w9mlhLc_!.Ĉ%/{1Dfbbt%홣
'w(ȼ}8'`c9wN9c敻Y*Gj&?.{]=jm̻d!.ye:d%䒇wme\
x*`
>kag|TÒZjȹ̝~PKY  `  PK  C:U            :   org/bouncycastle/pqc/jcajce/spec/FalconParameterSpec.classSmoP~. n29;ll&c,ՎAhWTKQs[9FM~s{@"2A,iͺQw6&K%t65X,gsgs=7$fҩuMwBώ4TrkLuUږ)f$Jr3D܎So*j1|0I+]S͎u54uz)ݵS*O]q:͐YԆ{Ԇj<^e.Ǯ5j+Y[Z;UnWԶ. ,)1L3ĪgkUdۗ<R,K(fXD[HVF1u58<c.\Aˈ⦌+%Cļ F0wvWFd\ÂH"A$ᡄ(8ı,/#VB,V<f0 }4n,'ARH8Q8~f>ůxkiҢ$ɉg}tA|SPH1	/SA6i) jGk`n
-ae?pYGPKg F    PK  C:U            9   org/bouncycastle/pqc/jcajce/spec/FrodoParameterSpec.classTiSP=`%QY׶ J\qȎKMMJˌg/%qvw={_ 
&C!a?]=BČ6asQ	mXkfi(iYۮTW5sk,)	EHSCcQ(ZjpGEԌ6(njtøT23	2GGk]-``<R4V+^),VKusL{w[zu^k7ICSaUhWjRE
	|T=C/Xp]D3S/xpe:ͱӞԫ28.ㄌS2N8##[*8)a|H]'Ggw!F܆nhi3
~ĐVEJA 
e5j(a/"
`Vi1 8ηb .\"Lpj+TLL\#Np&0F? v7Ak9d	'jZ1q璐v[:Ǐ~1&bD#j+Ŀ@$ɾx@m1%[1V[qc~A騋'蟱܄P='C;"S $jK_λxcA<2%ȢGz s_?gt\,fubX3l1sulT5@ͦZMPK=t    PK  C:U            7   org/bouncycastle/pqc/jcajce/spec/HQCParameterSpec.classSoP=-8uS'0gmcNt#@R4WTKDg}wn%lDETXԚv.1Å2ZOԖNn3.l.?\EnCUڮ*OwFui'ѵU{J5eY5ZTZںMivjU!29<vL,VU5m+枦hVϴ
([˿w645u<QضzJ=%~KӆmbӭD0. * .଀	xeVcRFjBXیT5J{ʥNy>R@!}2uL8<Ʀ{x'2b,Ȑ0##A aYN	*_]!⺌qpBI9d8p-aY	I[p	a\e㵎ڛ!/{Oq;N(q|9z|t e1X#V;!1NPIW)PYɽ:DrG%yd!CLpojg}ЏX1%PKL'V    PK  C:U            9   org/bouncycastle/pqc/jcajce/spec/KyberParameterSpec.classTkSP=i%Q>򬂨3NN3ZTDf?wo
-qlg=ݦ CxYA
$(#H'I	uAymemDqӖ :)ӵkKIӠ`PrvAeMCN3Ķulӊ[Ohv"깭=+iZ}C;<f\|@zptR8:2vc#I93V\FsvԲo
Ͱ
Y;&g멜&RyA`䤡'
g7]'NbHǩ7[qw6O3{Ӛsgd4hqAF.	/攚=sD҇}dk
7vǟԉI1a=Un*S*#"*|hahehchg`!0G
s4Qd*nWE=nM%{Ѓ!aQ1[1000a00񢛡^:fӟm&$B]zgupJd;JEX/l3/l
\<U{.T.._Od>gD?*TME,6\	TK=>Eb}y$ȪC9AV2/H!YG.`:hvgn3-b̤"ˬ2+"Vf" PK"  -  PK  C:U            @   org/bouncycastle/pqc/jcajce/spec/LMSHSSKeyGenParameterSpec.classR]OA=S
P@>n!!B,d
	i:YLwGB&?
$*$3w̹'ޙ_?N <=QkQh^<oI~JF;T^GɎ"/;Ld%>kؚ8Ɏ#o	ÄJ3Oarv
<#i޶H.Ef󣢞	H`mCPJfptC1>tUޥ-6l;#-LX(X(
:n+ɜ$
V;vwK(!_r%f&0P$`^ *n}#콗-MXfn<>#O2Xx3?1WC<:|3)5^Y3YD[V(8߰t7PK*0    PK  C:U            :   org/bouncycastle/pqc/jcajce/spec/LMSHSSParameterSpec.classQMK@}ۯ$j*x^A!vĆ4VR<g8ؓta̼7~ .CQ2ҧ[?C>H'JQX^HH*^dJr*+
ubB]VV$EAf~K|ygqRv73e,e0P50`Xap\_4C]o輾&6*`6jXkb&LlfCzFBeB!chr9ShPG
a+>ayBA>gv}3=I;% PK-    PK  C:U            =   org/bouncycastle/pqc/jcajce/spec/LMSKeyGenParameterSpec.classRMK@}hkU䭉"
A<xR{.1!5
W
?%Nк}op=eJnKÑ{;dÚg?ܷCwSU)OR+߉=cT2P;#p~ٟE0K>x'Ĺ}׽guuts=DT ![暓IΒEKfX7
2ԳUA+у1QO=kTϔ5ؤKhpu4B!;ԦQ.ZohLsʍI?PKb?    PK  C:U            7   org/bouncycastle/pqc/jcajce/spec/LMSParameterSpec.classJ@ƿmlcc䭉B)RvĄV[)X>%Nкo'2hMPf0]*}	iܼ;NKJ1L<5rX
&p#	'L:$3T0D2_gQ:h8#SH'~//ԹuߙQQQ&(V)s/cyǤ娿dsehY]:6McD,0˰v%q'D
d6@G@-#;2lSܧ=d}:F"oTg3Q.oh*}PKC    PK  C:U            F   org/bouncycastle/pqc/jcajce/spec/McElieceCCA2KeyGenParameterSpec.classS]Se~lBO֯))`-6|bIBںY^ݸtK/xttzE;SGgP<g@øg9}߿ 0t(P0 	S
>ЭTzZk	h޷kd mJ'>l'_MK蘛e.>,4ū$Z#aL4ɩ |f&ss9[p4DţͷMam-;VbCxsA>Fq4H0bEKpvJfT*ݭ>J]]4H-KujI.ʞzIBNV<״
	~"kzt,t2B;eJ
%=5b~#RE陏ITpKSU<K_]]E]CALl榨-K0Zy;i˴cj!ߡrt~G9n;	MmUr̃()&,Qw4[*QgC:d)W0`(R|2\NU	VA~a$Ϫ'(%[cx1|f$s1Ggo";l8ǹ6lglnYbS`s+iE)nG	Yes7Y,z]YǮxiV
ZyU7A:gh1	Y01G&|pn#<҄~	_'GB&1Ui@y<}O411Fv dfz:{2<|ze %`WǌŀQ%F|!u/Stx _>9}7%"dfjdc#5+XO]&d:vCH ,I}	݁>ꄯwG*1|dœ*ì2ѣ`q*!(\NFE">vBz/d.@U?MUEI+p<p~Ζ/}e'f%~D=:g_lH> 1QST~@277+L%轖FFF[?PK  1    PK  C:U            B   org/bouncycastle/pqc/jcajce/spec/McElieceKeyGenParameterSpec.class]oTnI60c0Lx]6tM	kaҐ`8g;Z|
]	i7L98n "y_p4
^pUCE`
76D S4U2&P0Zn$alYrW,+Z>ܹ5(Pw"Nw׺z]Ez?Eձݦe2}y7z擞@Yya^-r:>C
JO
&۝]0maqVsB۔V0w~'F0v{@`aR9V3vfƶmoÖywg@V.󱻖Ğ5Ûs
zUӜBa0#Hcr?z_!p.NO#0nB:o똔j9,p)sx%W̔7-"Q-bxI)e)%8"^c\&"Ky[;R-n+PT@K@
zrkac|-b˼ŅSq[0k0zDHߣ!9L
:^xz ~ğ^ILb5#~D2y4VSȟl)-S{t1õ#G3sS=ĪVǸh%G}(3䭨_SÓLYW;DMkx2346$2Ǆ:"/%4pB#iTI8	.iKl;/q,SP%KF>Je+LT+dW-<ú#n1s
|cBM{TE>%"+|T熖WOk'C˽2PK^H{  ;  PK  C:U            >   org/bouncycastle/pqc/jcajce/spec/NTRULPRimeParameterSpec.classiSPߴ@6MbZP Je!N4G9AEd?$cd=99i~Dt
-G@/ dRR8d4Ynq^TߪrI`qtnCV5y7s,dnNn*%vV9>*Γ"ˬfr49~R)a&}HM%}HOIFjj*r&ka2dJ.g6[i!ݰEMw'nP<pu2<:\=`N4bN7՚Σm<y\Vڔy2ʿOg_bnV%59/OOKp6~u.kaOن1{AjZDaQIEMCKDQE%Je/BDV	=x$c$$$$S! H$$3$$0na$C3|-<"yˋ+-c,MvG:vlg{=lctF`mBFbtZxX8K`c9	p|=(nc%'	bnn<A?Elclaͅgd]xK\Xt`Յ'(;VXѠKd#SuZl|l~PKmy    PK  C:U            8   org/bouncycastle/pqc/jcajce/spec/NTRUParameterSpec.classTkSP=ڂ(b[ԔZhUTԂ>K;I*g(ƽ7+qvlݻgy;VeDdDed0㉗Q)UKClA~XkIEEc})tWړͲiP2!$4jN\4J"Tw3u*ڊn6CgS*&uU=eT&7>.LeM!ʥ'Bp\7"YNQ۴jUc]bj[C3]۳4^=A!ݲle:4xI9jU?&Xس
֎uהJ%W9	bEG0t])3.I==]zV23[XpMIN64ҲV͵0OvUtcD\QUQ1="(FF ]kiLEU!"!&[41	i9dcR !L)e\tqCp	4џDw'b{DTNc|Amp]U}KϘa|FY"؞"D#=@gtW<< ~`دe{=B9F3XâOfY]A>dcu,q8Աd:MVǲPK{!_  X  PK  C:U            :   org/bouncycastle/pqc/jcajce/spec/PicnicParameterSpec.classyS@hD"g[MOwMHSco?㾻S3:3ϛge7N7

z*إOn
*R0`DB"%A0j%.y߭\5*k*YQxGxfhQ-iSsedY>T̺oKZͳLSr-T
˟a:yo=Q[bx1URKڜ[KQKM<۬ڦ6˟5jiMKlmUFLmkX#)V;
3:;N\ݏ%ؘ_٘ol,46V61٩n}nF͒If[dl]Fa'8H`Cs8ܜ6XfMpw;{hUcr\jڸkڰmUUWC%"v	Aa0BHCNY:eu)SVNYѮ:Ud1"I1q	I)i$,<B	K˄"
*a0MFN!H!)%ǭ̶aIŞUc`?nzGu0CQj:=Qj_T:kΌ.:@V[Bw/О[F=D#ѫ:YX][>DDiv/xقD]tJm6exGc.U!WeQ.y.{\l!<T#.!s\<!7]ƳX`W	&[-b1T?65D%D9DQM	&L~PKwe?    PK  C:U            :   org/bouncycastle/pqc/jcajce/spec/QTESLAParameterSpec.classuKO@ψR@T^>P| a'1"aAB|UI\qԒBM4j4.(-61Ql2L{L@
[rːKz!^6ӣnsqi秭6Ck5,E_Qvr!w;b`񣫞2F~4иo£4<0C,~d Ň#{RvNmQ^0.i;"O8HHHeu~.fjXre^,i4ī%XqXbX²VRȠ0t	ρa,0NYF@uO/X<wE.ɒ2ҙJvL,jM x#V3}PKB;{Ct  p  PK  C:U            ;   org/bouncycastle/pqc/jcajce/spec/RainbowParameterSpec.classe]OAkW6&`B6itnm	7^KvS݋3̙ߟN`t*Lp@4
b@,"ےeBRPK2mӿZ)L;ۻ=`]wR[GO-<RB.oR/zD{kEz7?\dn9 1n[
I`{v`[0
U|n1з,K*Futl3Ro	'x5u˖`l	_;(6āiḆ^w6stk	-Z\څOu}ˮkg&к^-W^M>^^T
L*pAi3;k|5	Jē0&9PeIG20Ai0W5,4KvAR;>wYg-sHK+UAxi		
oaA>RBjc&.".Zxox_p{Rv7^̲ _rsB8
%"`"$2@#?!A1F
)C3!A!`hqHCb؏+oB,~jtRZ<JMIU/PKΠ    PK  C:U            <   org/bouncycastle/pqc/jcajce/spec/RainbowPrivateKeySpec.classRn@=qS\R^miQcBjYETR6]MQ(_E?BܱXUm霹{fڿ~_^x~p6&2yFa0KL˳8Q|\y:bUK4Q|!e[5XG)^"Daߒ]Z6r2Md&TFci4*exPZ'aL+Qtim%'JW=$a&SBqp5:c8i0E0tqK.\,X1
躰x'4e>e<2VXƼdWv.6"vc}e=b~AA{ܳlsSynU3bηZ^CAjcB^o-<jBޠ/oW2 PK  M  PK  C:U            ;   org/bouncycastle/pqc/jcajce/spec/RainbowPublicKeySpec.classmQNPS >FӍM|qu\jBi5MlL\~q!M;3sf~}|8.C:!lݷD9[00
$B2Z+	WzÀw=[	#c(ƓA4纮?0,?U_'0H:)}UǖgFH1Ha\qL>anrOAoI.,XPDVCsidak
TlQ&ەhR
RH,GLS;q2дGzo!z*D3'oԤ<K.ϴy$gPKjUZo  X  PK  C:U            9   org/bouncycastle/pqc/jcajce/spec/SABERParameterSpec.classRPW^R)rhĶQ@4\m&PZۦA>Vex9qFҙogvާiK'V%'Bs'%4Nx79Ǫ*F?7:K
P.Eh
+Af:7^Z(eeOU,sɹZlT!k3Y\6VZNnܻ
ڜQ\09[
kݗLzJAjV6[+S3kkDLMϮi"!]&oys,3ud\'WʲmMqm~c93FŒȈhq\F+;};Kh*ˤ>V5\gZZmďq'|Foߚ4eZSpgpVApDN T2dVɬY%Jf*!)+⼂CE%FL$iPHÄ(ap0N \atzp=r781~r3},		aa؟TMcM^lbc^lb#a:U[Yg<:*&>cKl,J,6$?BϗC3h9<u^U|zvpǻ'<bQ\qBbI9.2BbUY.еVţ],PKrM  	  PK  C:U            8   org/bouncycastle/pqc/jcajce/spec/SIKEParameterSpec.class[SPW
AZ"(E
*xADVQbimK
**3(ǳIE 3kϭ;$'"fX-$4MIkWL˗ 3
+olTz2`<r9ϔ6Se}YYB{bYHh9qP+[m_t絩ۺW|e?{FC;JQ2-CbGǚN[ؤ
ZɌe$]q\󬍚a|df`ia"=R3409Xz9%CPe8%-w/LIhgVINxŬ'Kfmd؞2o١Dk8<^:bV
H6GUьs*Z1"*6B;I"tbȧO#F>|41CRф]Tш!q)~.t!Mb IB0F	I5u
=RKǴj7f}'f
	g@~v顣Į ƃ vͱFblU~@KjSß@D,J,6>"GL`Añ̧`+3G[ok;x(].rBbI\1ł\,
1Ųx޵=w1/NPKw    PK  C:U            >   org/bouncycastle/pqc/jcajce/spec/SNTRUPrimeParameterSpec.classTiSP=i%T,E*E
ek
".,T"CiÏrFȌgI(̹n}0=ab;Z.V<
U*+*h&ûJ[E.+Ղ_T١6y(k*/:cb>S3,̡ۮmŲ֕/f󖪽Ӭn}QUUn5FUfr45X|vks;GVu%U)I#qB--oj-`m=ĄGƓILOMęjf3;XRWxtqGP{9"̿Ϗ6oYsk&rAMH\b\+l8{Kэ;"aDDwED(+QVDYEюQ':08$t QcI,A:x0,m,<f_Jcns	!wGm;ڈkîmfll|t$Kn#~/Gݲnf9f[㟰NtA.>?u*vn	v){cyfCd!69d&kyb)yU ䷰~]?vXz,<YXBa<PKʂ    PK  C:U            D   org/bouncycastle/pqc/jcajce/spec/SPHINCS256KeyGenParameterSpec.classmPJ@=Vƪ/qD$P*XQTt+8)mT_)(~%ޤEs=}x}ua=|O5tکOu
흭dw
<\)|?p}׾IAHS#;n݀XwpC>J t`苑K^={BN*yˡrt,_
tE˴yՑѐ`hc(}RO.f'rH#,(X@ Taȴ[Ih~:?ؠ

K)U(IK'UbU`cTP*dHQ41V,ytj9c&334>PK< v\    PK  C:U            ?   org/bouncycastle/pqc/jcajce/spec/SPHINCSPlusParameterSpec.class[SWƿ45jkmmMthBK@bN{Yѧ@Nr}Z}\.pCmD44BЍF
IW͂F	tт+TA3	*t{UW}f	-h Ej

XPPPA!r(
D.VA,g~T:ij|]kDQFFB1M2P&7]SZ6k2iڬ0?fuM@uMf8`TeSIiȖ]E&U$*<ȤJbwoYug>y.b@+~wJ&dj5Qia70h)EjաXgh
/y|FIE3K*ʃ1r!k|E4h1-+7nYk'R
<~7֖LmSCe-XQҡԐVqd'WY6-Sq=:-ԫݓRN\1bړ6=i[3kϺK%mά=zI;ʓTYR/HKIl
R/XVo'1)Hr2Đ~'8V'۝4I7Lim,rPҤIJNmX)
yWkE)Tf[?T`3EwУ.s8zE,,YXY&Ld2e
TY*Y`2e|*,K5%̲%"Y,1,X4`Yr
sQ=IS.zv]l&5s,ϳ"K,/*k,&[,o.{,|!G,|)g,|%W,_|-w,߳#Yej&Zϲ!M}al~2i9
A濂x#sW@yJsS^PSVQUTr+/Q.ǔ/Sި|qOR>Ey	W^|ʧ³Jc4GQ駼e-ϘxLw+ot&3jz OQk^JQ'5śܢafF3(izڍy/R!_|ٍ}#D|rȃ!_|y)䫑 E>|+#F>|ik"_|z6tșۑ D܁DDNCnG@ނy+@ކمVW6uDJl {5ҥ 4rF=O#Ak A9 G5rFN)S9rF#@i9 '5rF΂yrQ#m mY# v	S# E#[Ajd6 ١] $ PKܾt    PK  C:U            :   org/bouncycastle/pqc/jcajce/spec/XMSSMTParameterSpec.classkWU MBlH4@:b)
cH	M*[KY]K_~qy9L#|{޽w;dV "~P4BG#ЀE̒u"nڨz7-
Piq.?]P驼兩|QvjdY\w,i0mwݶyuw<]TCdyP?]֯et<]8,Wn.ie~?75	P77_ޢV<u^qDmр<U셶x(^s8Өnoք+Kn;+M鶶8-g[xUevUm6w봽ws5שBPO|Q/x0t-L%V?UkUVO`21I/-gc4E1$Q1znpHC00 RI`N38p8. Ke 
d,p
L 
Oy < ,K2/;+@	X^ց׀=u
M-m`x'JOMe!f9
oݩ
y33rƢE</kHM#}J?_<%`Mdc=zu8()iqsX/fYYϰe=z2	֌	վڬݖzDޑ|w$nܿ+d}'7;O>	M,OJ#+`9c
SH >4s/<ѷлʆn65eul<¾ۖq=1;:ǷlUG+Vv;Vmѽ}@G+V ZOu_D+:Z=G:ZOhhe:VsѿPKjۧ  
  PK  C:U            8   org/bouncycastle/pqc/jcajce/spec/XMSSParameterSpec.classmOA@iRRԶKW "Mj~":YڔńdM(㽳h/n3ޝ4O xf!naB Bg6a`-xr,*DPFKLQv)8ؖ[3mΑ9~),*ٓ4'Ly53'؞R}dn_
TnhZu|tWdU/w*ڣYjjQ_'m{:Ѝ-+8ojޡ6{vs+'߼('Rc<;J)hko@cl
g7]m%p	\D=@c34c1a22Qƭn#1یI]͘bc15TWiWfւ-z)u qLPAZ|T$?#Sm_4-:,:*Mf5Fho*:1s&?'#'0(oJ "g/x-MSOqIqƥ-Jgq3t3taܼttnI:#-KgV3tkPK/T    PK
    D:U               org/bouncycastle/pqc/legacy/PK
    D:U            #   org/bouncycastle/pqc/legacy/crypto/PK
    D:U            (   org/bouncycastle/pqc/legacy/crypto/gmss/PK  C:U            @   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSDigestProvider.class;o>vFFĲDļt}dU~Q~R~i^rerbqIN~Aa~Njzbr~rQeAI~znqopKfzjqI@Q~YfJj;;3#)Pl, b PKpA      PK  C:U            I   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSKeyGenerationParameters.classJ@FiִڝK5Q⦋"Vu=N/!dT[UP>%NJEA,ÅW 2'iSvBRh%m	Q\R;#.uYXϩRNZT߉|F'dx/F~ѭܐԖ|\Tehp܋__MB4Dmo=71Ԫ+j.3lva=c+>xBXUw rPKz    PK  C:U            B   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSKeyPairGenerator.classX	|eOvvgw2IAҚ&MhBٖBBK.tw6MwgKQQ9 -H 
"(B)M6'/}{}{}o;^((	e7<W\sKhKjEscAoEZ><
1Fẘ]Yww[Gd)O$;ۭcwL&N*cSo$D(ᤶ=O;V|u4f+eo#+"vWwTgsYqVIVIlIj%3h_L;VMhMeFj^'YՓNlJYVLI#4sJGdSFf*eE9L*e%sI'lw%hYNزb-]VH%w1+EY)BJl:L:cLjrU3Nt⍉ۥYr*r6kdyOEXLC4$z/a"KB7XvWik$_ebQZKezڷ}V*v)rD_~f[%(=LĒ=ٶvBm+PtIYcJ8z[*htG
Hg;JVL2Ll[,tXgtc#/rmlzGڱ5)r0,&-n3UӾm8VI+Xivjܰr~M,Jګ=+ũ*i7WE5AY^KY?ms3#r&fRygk1CM&7nF+jedMaoV֎LXhs}k8nk*DyZVheBP
QϟSܹ0fLvrB,&o2t#zJ8e*b鲛hցcGLpY{&Ǝ3I7'b:zϗQbDLEJ:n(Uc,Pp
)8]
UФl(hUЦ]A+8GAX&PYLqLu5%T"fof%ճ'o>R? iYYqZuBQ^19lZTe##[< 6{$7g>hevZI>d؁PJ3;sVۛX%8}*-Ӧyt/gy
HϮ+_yUa:B5sKL̈́u]?
(E~PO[xHgeL5pzsR:̰Gkc4a(
3>
g{4jh45Ѱad
42TBPp22Y8,:Pai4(p.>$|P
|X*k8P1|<z1>֧53ފKYix>a	.W_dJf×a{c
C*cJFRǍ*lOTI*i|aN1ܭbp=
eد"{T#10p+m?`ݸvb᠊=6(F7^/d^_%M3l63;ftgٻmQe:%q D@t}g)ՎTz6g)TQR
yYJeG|\I* ?Hi998_=/X9GJ$7Gȭνa0caJ59edEw}WA!/nTQlmqde9BJwAiEh={̢|DH+`Ec
y<wTaؑ!F5|,c}#}GT(z9WǍ{4]s_D!]Ō,s~ݯɧ.	9v-D>j
ϡ}8.htMZ;iPj{(?ZO%yQJ^<a(Ì<GdY.	Ry!iqWM1c?7;gjYD2HGᅐ6WC,]Yܐ
3op8ʏ!-T2&%C!-A;T
bg}hآCСZ2!p0QFt^Aa(k!F+hF簻դF}/vS6O,!0ֶ j/r*'bbSA!Pq8݇BD]6AFrF&K
JWvB^w5<
PYEL/䙮_Cl/:o!ЯJ~!~
2?	?'
Ii,; xPA9UG9S^5=s̩Ds)cr.Ofg(/O{ɮEr-|M_(/bSűElqY(B{

mWlh|"4ECs<zg[!rX`!ԩd~V5u{aAzVԈLmɢkyEKF<n!uoۇͿY,Lz
f"ڦx|; AerK_ߌ3xh4xּsm\').2;cA6Gyl_F[ώm=G
йŇ}6x0|n o:'7Sճf{W-Cs!mקr{L
b_gkTA%TͮӦ
=o(n%Ddz}"SļC.q*1
8hx+Ɨ+} x~1PK[l
  /  PK  C:U            ?   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSKeyParameters.class;o>AF(0F6̼;FԒĢԒԢbFtҼ⒜Tʂ|b}\ڢdJFFK}9ɕ0#s}d`CY44lEf06N&FN.v^`h;秤2(E؁ln ) @[Kz;V`
\PE@Hjma f  PKfCk     PK  C:U            6   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSLeaf.classW[WWL21^-(
@*UPZj+c2B4dbh/~Wˋ/mW]Pև>u>g&V}(k}>׍[ c>?N$H<U
H+;Ds^"gjSC_Ͼ>f^fC(l4	3a4]NɧR0AOlJe)oH$)o,i-,3Mϴg(cڒ0uZf̊rqaoJ;8Acƍ~\ز$L$#jv}&;j0mtd2;u3nuPq		*dH{D?GiH&6=)a}&n0D#F~`*j&5D2ntflSٌP('yqg\ad2NwE%Mm0A$+9dulLI#KgSq2HX2!u,aݱlޗ:۬|ҐN;qE

|=z9t&&t8#+G0-E9oD:.:NS?4*l3,"aV+3O|]
J)X`JU
4!)X`Z+%T4wHX5HU#.?Obq+,|/~?QXOz_I৽l#vx\o6y4<bJVkU452gR3bEЬU,**0Q*梘W'X0U2ub
^bU<lE{ec?W^c8ʠ3b1mlDW f$+lmqn7؆q(CdH1`2 q,&'6C'6:zSǎ6]S{@1dq]
|w}k]^jW	iQ-K4>(ă֪=5CѪe^KtZBC8bGvFkl^WpSZL u
o]je^v˭#G2_CNj-Y6~-,
ha/QN).nߋڃOYdk8El[Z'gVߘ/,Ü#`+62e1T//C!L_eh3a|)'G"Y
).$WC|5]9akHO|Vt*Ns"d~a	^ܒjᅇX<)'!s5|·qs,^7l&b{I14C?M8J0i3fn=4<=uANf7ꉸ3rVp渤ܭFVxyk^L10&1,5
eqMۄNryzG#٤护ƖQlm"aWR=v/xwoķ$=.ݡ㣿1=Rد9'eq="4u޺ك(.Dyʏ{%	}Ƃ
!ѥhPrѐ/'
q)7NlOmEXιNFF"!n0>
G]kz~+pɷTAOg
)Mrf{|/
2bKM^×#x'.czᆞ|)*eDhrZ;Oѫ`tNAt$PKY  
  PK  C:U            <   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSParameters.classmT]sU~N6)4SYl%jql)dnN`6 ^{/JBgd/|&y~g# WPKAMD
N2!i걼ɠu	uifvHC3	ePF[c8/9"Au"[a{1ʃ?*_ᗹXU{v(Zyq7ʇ|1&Vָ/#Ou;/rVEۻ5oBi.rQnc3NqS/ɐs 9:Å}8g;9k7
?+zQ;ARc.k3
۾0nd)={+uQGؽ{-+C
(no'ϾDD}-!O=xy:gtuqNyyxnf:Lc&פRdgP)LI4%),h1,xZA5݌uw-PIK1	NǨA2YgL[{b˕w|Iw%u4;ILJV*e-$%jZrI~Q}2alޣqRӤWz2v'k:}1ʫp*Z+v}fA_WIL
o$NhBC3ʭ'313b؁b49+Zc#FQSh]|S`Y$7ɈzcCqaNSB?-i'QyࠦJDHXտ~d9h$D:򒾏 YqxvNQJaq2̸ PKg!J  l  PK  C:U            F   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSPrivateKeyParameters.classY	xSו>WIOmML،6`cll`l(q -%#,)IHcJڬ3LiRҴuvtgit2[KϹ>IOϹ9{ߕ0	%ewqZUo[FIY^JmIa'j𹤥fuE}4\}Bƪeehl(#f,bAC@?11:84'B7EmC;c9c>h}UÉPjHDcE#c<6f?p*;6VUvh&7hb?@˺-{Ch*5}7!4S;CCf$ Chd0#7ݴ N]ñIdtˮf)"~Cg4Aiņ4X)QEfBČa۾?T7:6N0+Ǟ6No^|jۛBx+M3?O1:"A(n#{
jg)̅X(ɪ?hȻ/cfLoS=¡6)OyaDHjyPrg:/qbIlEp]{SA;̨^;Rv# ȭa7SRe`@ĵ1|!##nbryVB81?hsHpCAw;σtZ"á0Ϧ#	sʨ0<⃦9Oj9?vPv~ZpЌE.'vO#bLFIޔj5em>"-UyDZ`pU?2HF>Ĝ?h$gfАM)\q2+beLtIZr2pkno[x7_s&Rj ZsL3KN" b8X2	B(h".)TciCa9=l:m15ιęGZ
`)w"TŐ	5&>us?Ip%:R<`iP
n`4X
jG;5.
>$4G481
>
,/鷅IESsL.c4_y,дM$/Lz)KEnL.{iz	~7I/gQgK܎nxr}gқ'KRsibs%Z;:~DMA}Cfҷ[5r];˻hrzpj)yoEͯ?EܲS_suEzZk,Xo-L'l]7GpKc.IɄoVqK[MF#xJum:$	NT"	R!0	j%$X	e:D	Vb7tX
 ,G	zt:BV| ^a:`ס`7O4[	4Sk!O:p
m;* _C"x(!3t:|ff"+:|^$Ft(0縨D:e7H%:lP	C|Mi	7,|/y]o|~OF=?'"k![#{	?$G~3CP_gO>e\p G1'A.E.x	Fp%Fpg6@%84<B.x </%. 
	0_$/&x-%(wgNPg3	fvygOPϰ´6a 
lTҨ٨< %0X}\+˨X\i5#R>*ePEeXelcs%2^)DVrl#gpa)|{[P(Xʾ
04i.73tfl[Bujxd+}ƜK1I}^bF$f1/OU\ٛd4{'ɪ*&Gͪ7\IZ+SDSt?g'Zߊ$E$[3Id8&`Ex*3\-A՞J{E8*OzBp7sI֜D23v	p<h&An>e)osc|>CK>Ùd|;6=Z|$kNƬ	ؖZ$2il^#T[*K8beg1;֤6a
h+w8}u$Y'_9pc؞M+;ƶ6=2gΊsS\=>$(|t5
n"ЛigYG"[^#p:3]o,7B.g!z0fLpA\3%x&jN|P,\hLE6dJ1,7Z1Divvx0:)z?+&Us(4%^`	נak+<?ϧWS	#&OjLpԫP@~fRBJ*IYJ54_Lm951њ[KlT釱'6;#^2P
ȧV)J@ֹNӠ"{z֓NM\m"u+0mT(HFe5FnHjf6vLC0uHP2Lt@^k~Qv܈DAhe0UĿ(sIi$FIŌYCAfbO	!+_~Y4𩸇~xK/
s/{|,Y! jpW-ltA"C>wU{[y`l)f(vP!k@y{j/6yGU) v4haz-"oFn/"Նj0Ta^Mwՠ^4b覌Q@\I5/pu}d4(`0cl;mF,!=ҫԩN|OWy+Sj޿&z޴Na>L#*ě~.T!:IQٛ9fpY.1(UFAFՒUԨbޢw6%zJz!jīJicaDvV|
U.@|E|Yאl*DZ5x
]yH^mW['0OYy^'f2a:޳,k
zX>pfqSQ*5+R7w3#K&_*J9*>KDXKn8M(YA/,%5
~dT1=+A
nyAY$\L	>`+۶VQmkRKVQj}gvM0?PKHE*mQ0?_R uPXݼ+@
+"@)ȳI,S:^4$-GRX2:,$jlpxuDwģuܥb83&ygD2|n|xqhp
y(M]" pMX$v/g<Rw'yJI({4t<Q4HcVm޼Ur⳾.tkMo%:_`-_n[ʌ3	(Tʖ_g0m{f)c},*7i11օĢ%&gyjN`3Lsn8T:ݣKf<7L4EO\;.Ou.ZOàL=cOJ7\~+0
(ҁrB9"4
=lqaN9<nۏMJG20e_߀ȳz WZ5'{m{ppٻ`_ztv>ňa\X;RDT-"38Ҥ6{K@~}yĆSD(é+ydrsRlvIڞ:ZӷbX
_'(Lo4a`ҫ*Dn7卵9'	J
NL(N`W
,[mMof	r5ܖ5Z+HPKa  )  PK  C:U            E   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSPublicKeyParameters.class;o>AF
h'F6̼;F&'=$4)'3;7=o__\X\_P\\TYPҢXZZT`O^l4|H2
nf#FyXy88x8xA霟ʠ .0(A,&0H
 y@1(v~-|:XJb``,  PK}G[     PK  C:U            :   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSRootCalc.classX	xT߼aHȄ%a2aqVARDfy$y؅f6Pj[.P@ֶZm.HϹ2_+]rϹ%N yۍ	nLwƍ A%f	\!F	JU-vUJV,ehcvTnZax2n]IcGB5ZIDkU:H"~ՒZ	e<-P0j{=}jfrS؆Rqq@qΪPOVQ0pv6сh$e%Pߺh(wG9gT*n{"EH,֚{EIEdLiFF *0X[OYKMc}<T($H]=, n"wz2jTMҗu/#̗l"~;Ht+OnS5':HfۜVˀEזt<gPA0r=z
Yo:uuJ=RE䷖JسU쉊x2VkAIkE$STxG,-j˳^l|-5ɢ2HIb4Ivz77?^H2f,n	Sj'bgw,kMfĊɬjiDܽv=[]ޫR^-KR5s3Qm"q>Wygc=.8ġ,J3%]0U4bpR/`?3Z$~bIӇ	
S5,5i)Z7Sq}TI'Jedyri[=)x9
HVEsUXUxkUxe*:U,Wq*WqK}Y;5Ri~7xy=3&MLn('
凨ȸxL?(sٴ3O~a&ck룇Q^A=t/
<b.2$T

EU)`-
Fjj
1\0a	BI@fis54dax;5
^
Qp<ZLå4\r
BM$
oax'C8GU>Aǭ:>
K~
o4,5&
7CV15
!|By4}]}[>|	%[p;2lcÝ܌ oyЋ<H2!xh?]03ϰa=;w3pax6{g݃(:|aWR&e#z5cx1:"}#:(N/}{bPŌ6^H⃐D!8B=";#$GHb?!:rcT|pzCA	N:P@SMpZBpl^΁?}=4T́֕a:ǝڧLIbŧ6L'}n+wihXo \%*%I8Ip%>T$rlH)y?7
u$Ɔ<|\䢐ǅ~ǨH
*8o	(i
itn~WX~ylBg^ũss4cgk0#N"0VGPNOPTzW>Zvc%1^<gFVJJEc%=82fd&J)\fh;~pgJ.4G
ہAT5>,eq`B=Y:߉O^uc%}[0lŴ ʹ+g=EL%H/jI,{K`v!DFwH>nW妬>8J,6A5ǚvᔂܙr,("m8+OM=Sr.oEOق2ގ*c&
7z^uo]ln+74*guOSb«CGN1}]M f02Y"=Qɓb֌ӨQC?5~hE)t1Ae99JDv[Ǚ^St`v|qdg͵_u4.h<5e5cE4_bbǇϬ<|Xv|¿%lZ'%0wG_j7WrNT$ݎ?VH&#pCLfg]]ޫZtzSƾ&.JM2D/T5ݚAPLJ+Rmt
STi͜Kog:kQl^={"p7t_8XʷY8/!OЭ2ڌ$pЫVsy^剚9avA'=bg7tA33A\f;2&'ct_rwWJٔSOmi\3'V3b!B_`ɕdRa؉X}ʕ2>JPZ@THrv![\
PK@
    PK  C:U            9   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSRootSig.classWsT}o헗@$B6Kt""XY6J]&ZkDBjW	Zti3muFGt:-Pv7Kfs9|{}܂wS JOܲ[S5!	xHvgN&[1iyGmt*rEfWs_"uҝ
D2PS]$TI9L#K=t}N:tu9.'!G|{K)xOwi>rT{&SsպnIՓJQR.rVPDD[O"ն''M*|IkD|oc,ZH6S?w(-ӟ+;)u\N9/N`>A|qz&NVLoWA*c?{do6inl}2t%e].Oۮ=,/ku$ꑦnyWͲ*rW{sm:}loD޹ULZN,Mˉ]R9bb^&tL#΄x9<+XcuDtѦculU[uܦܪ`l/W
]~ qݾYrĈ5zjztU˰u"iWe`,+l00D3ɰaCK
lc[f<b`t7a- d&Qg`5Ye4	
܍EvQ7`?cwr<7!p!0|!!iCI^\{L{q$ axA|
Axi>~g؇xυ /0|n]SMړKqq
ZKJ#o]Jťwt;O h7tKwtK.w.]zq1A+z#߀qo}l
g툺n
vD#2jGD;9eGD/eQ}`
'l>s
脯/ٖ6ҡ{)[
S[5"V/WV3vAݸiɑ8˙2.$85,lYwsS45APMTӨ	kƭ`fwE,wjJ;5̮xC@NBbc'>ssjU}P+$Ԩ
O1D}YFOp
XK/&IQ}X뀟jɧ<84|hy-EƎF5o#/>)zv2c

ωĂj4d`(K2xK%Oe_ڤSJ#ghKt<0H>]E7 oVvۚyX!P|5bר$j,[$:BҎL&BbiuV0Zo[!wy*Xu)%epQot
'%F[\s{>묧oFWIq1&/)!d6U*w[{m{|'+a_˗]qqp!/{˔aa\I>J0fMi%xrD])4=f4zɺ(>˃sz@Q?W!8;<G_9!a/eX0;W4sn[umisNQ#2;]N2&;
ƏwGָK&݈x!%%3D{^4=.>3gL|d=p?&+<W0smYy_2cGq7z`\/dE}1(P"YOl}ƭ҉n1%=OcEo
|\_.tub?
]WJ
dlV&vElv}Wƿws8&QAֱ9q.KJL\psu/*rLRRsb#&lhd#eN	:"^mEXfz9WJU-ŝOBbR/-bErsygUz\Z뉠!Bʒx2`u
+Ԇ.auM$9WA.Fmܓo.ѯ.!nq?2
Ә~¹FҶy7./Q>ډ5ٌ~	[&~vOx&a~Nܠ^}xXxFaGvpL	bH,/X#MLT|ePbme*K'R%deŸ}"Є{oVxUx]M/
oJU\x㯣	A!f`iA5Nf$Q/3X $E>|_닔ij?\xoʶ%Wj5Eƛ<U^7C"b#=~@Z?|ql^tܯ]k_PK˕cJ
    PK  C:U            8   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSSigner.classW|5Nϲ=P[^P3qUdC>ZtnEhB;h)!!BBwI{_;<]7oxكE<[ĭ&nମٱ"t"[7SRc[j,uŅy"NɦZ1mUZR3VHki{*Hj ŒL $j &U]1Ԩp3";\@x<%a[a@յ9Ww IZZ)`JE=nܝUJ]WrT5ӕjIaՍɨ$TFRԵ,ϬIcmT _TSO
hQU|DS${q:[TCBU5Jrl0=]IU-gtUD<jIFAel&ZUe'g:v*9U/Tt%^Y ?ed4"	tek,mU1ϼT)ۦ%#5Ȟ{Y,txyafQ]u+'0aKxWjWrjZfw)JjRx
yƕd%WcJ<lP6FԴ&$:zwc
+*qs<	EyQ;!	5GNiKfyIR	hLT6Eݩ1FqIª>Ef5e]!kgӰ	a64$84.GeZ[.栛gFr
W{ô	Gyr:/EvlbͼL3B|,Z1W,iWykZ5\zSKkOۺ2#R6)PLi^J94z!.[L{rtLf}:EE,DX+bCD6":Dtx""DlU6rOJO'Z<$r9O%=E9Nb]1]c0?ېխsJ[?vrAH`'ZK$5To8PuŖYZL2lj3Jӯ9	;-4t[prɬʖXxKϑ2,\,Y	;0 a^)6*JXHXWIFB
n`X60a5!J#&jJx+Pp#$	/dhBORB5p5Z	$o711*Z;Rvw0]w2cx?]` Ç>/"{/T|KǼa
#GnO2|ڋa)03|sg8Eh>E_dϋr7%xcýǽ 	/.C2|Џcr}*JroS]Jo\IѽBJ[%G&f1)uI[
tSObR'R뙔Ϥԅ&.3)5$&ЮN:!(<ݣmy<=|0x8gc;3OxM6(
Q2$ڶx/ԝUuG<0ŷn2Ikæe(BHXqf.p/ʏ#ڽ1o_~$0|/yvѦ6Nx-sŷ<w픘Lw=2gYeakdG.vr$<:Bn`'ge%Y(%aGHEw ̅,69,Y{qCnC<ΐXi׊$zx4n1VGfA;	k "DE=zU"ƩE)Z
P{	% %ףP5h)эV9"_P:S~;zz<.*E%xT.i YeL~]x+Y,4{(+~O!!~)dɎm)B-9a
jE8k:$]c|Ac'Gu;P2U(x̒LGU4HA|
Ry<S~^JL2XI;IiYл\Ng.rݭ\:lICeN']_v}2*;kԿxΡ^ܿd_w?Jj.u|_J#UŖJe_qdQ?^yJI)K=!#T!W6b! ye+}7"^"r{yk;!0YQ]j)Qr;vr:<?6TAA?}<w\}bW<8}||ŮN HqRM:Ŧ!YYDD(,dDƱK3RX>N?2fs]]fPKɐ	    PK  C:U            D   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSStateAwareSigner$1.classMK1ߴjj֪*'ATD(#nbJA=g8[-!yޙN^ߞc!/2tmPm_+eȜ:Jr.|ښՑ**>765jV{{J
CFP@H7XyawP*?D'".[n5DY0oG[kw+$.4=S&y*AA)j?}l2d[|냐|6
1ۦYIKVpC.\HfEc=Dl&SHc4Q,	{aHwn0Ȓ.
d yD?\t@I{W1W|@G0	Ng;=b}7M,E`9R4OPK
  t  PK  C:U            B   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSStateAwareSigner.classU[sF٠(
IIJ`re4w.)1dB'[!%USS@<mf <u?lǡZ/g/.]Ik 3Ճ0$3;ݙ{{&4K[skG]WR%a.W(eeF({Ɩ#,DѶ\#ghD2mDF`oxCbPD@~җcõ5,VEz^yd
?=bDGZ[[IɇғQҷkVM#AՏ<}5 ,-[lG4ܒWn58ͥߌ@DhVؖ%K3M~P,zx:huDϾIvPlGo]ѐkҮv<Ao88%Q!a8q|
za#zDʬ.f1
Y"3*+_﹟p?(~cԥOdѸKaLmn޶]"t_mɜl'ޥ"Y吽b **Tq]*FqH.5
r*K] Ψ8+ceQpd8oᒂq)w2\
0ߋi|O_DR+>}T`?,IlTeHP*#2o~7NQ\m-) Z
+~]d5,aw`(hԦ^anRCHpLrm@*txf1&o1=N`u㯰Z>^bq$-.$Riʴ	L99avpG;BRImJ
%%&g@5/A*%5F
TArixPKq+h    PK  C:U            7   org/bouncycastle/pqc/legacy/crypto/gmss/GMSSUtils.classU[S@]E Z.i
hȌ)XmRwO>/:29 nK!mgOvsvn`	ɿd)2LTJqWdD̈Y*[c$Vu+Wt2S#*溡e45mu%JSzT2$-S&ie1jz)Rr4R hQ]Y	nXUj*f43!pkqYhA̔U#,,
gҖ h>:h'jL#;X6Ն3xڼfᐮ`4i5}q
ǢCNPOYi9ewb$߬4))5M-g)(QQ\`$C[jY:@[vz2\ 3[kIR,kY*Tg`U:
u!H:֘S(Cg9l9sWcКT/ċTxQP8A/1E-7c"zqC%L'67wD&7SLjapM+	[rNM.qln/Od{Wo{[J&pnTU7ٔw  dC@<6jq\y82P:D0O`Đ+:mŐp'GC'w
 Q@oN&]&'-Aړ#+@	wD8ݹpFIQ8Rq86|;5y-lSlc+cз=9-OޞσtPKkM!  =	  PK  C:U            6   org/bouncycastle/pqc/legacy/crypto/gmss/Treehash.classV{gd2MaAa7miR(hH(I)V2ٝl;HZ^
j4,%@m6 K/V}?93JHxysg|}Fd!CƝ2vB|!L
2c6|Bعv'@ȹHgM>A͑`}P:C㹄f\4CV^4sB3--ג]OP̓e&LBYFѪ+OY8HgQDbgJO"r9=Chym2MR"	ݴYeduGe+x6Az>OQ#oZ}6rޭ1nJF,PT*yeD[l[Rm以Y'9UŽpZdP3RD?EcQ6gldTꅭ_KQä
sM#ZIcZ)-RzR ,}D\YF6#`G"cIj\Ѭ1*jH$XH>nl+<iZzLTl?̒TcJ304rӺi:}㩣^
]S@f<\'c#L|2NRz,Y٘-E1.M|,LfeAUl30O$z"n8#7c	4E	t:L̔>MY3iϛb`$Nle}
psT]:?J;yn8$Vf	J"!	[%|B'%l]BOI^	{֙."zowYNwѰcY7k=T^f-w,Qkxͳz^[~;p:!FU6Թ:=W
UDRc V8GF^l@FOzV~;SU|M*>`#ZU܃%*Ѧb2wNxz,W8VxO؁Tg#*|GU|7p_d%_f_ep|s[`'h|WA?V
tD(FS~
=3_0%_)d~
pBA?m09rv؛0{ܠF?<TIC'b.\6~ŏ:G
w_l82Kᨿ{gQP!
œh8[J9v.*Wh]U
oK(*B3`8=J1Q(W˿q.P1 tjrBƲ/S.F-D!J8,pHgnIxknb;z|Ք+*b!pLWE1\7\9Кkx6ak.ʈD/+jWBU'0ɞ?W
](c-PD>S6?KËxJΡ}H[e!8uB) q&ǡ߶%\Ls'6vR«Op[Ʃ\W;Δ
8^$N\7Ԗ뚘(:[q,9()T(^"[+ׯM޸__8@CUpk}EiG̭#0e@88zI8PoTjFpoS'!vrn<?'ۮRH-!"IA|3-ĺ2iy,WyEY+rՉ: "	<UtVq/+1t\O
.Y`pf]%W\э`]2;:K.b=PyRv.ᏼekgy%rCx55ӺO\{1Q'NQ\ʸC^{-MD="lgvDp7$8棽ȥJ	-'V5wWM;[FHϔsLdS3Ev(坑V''L~;̷=a.|Q(&
w-[8ܙ`/w>޾^%ׯ^[$_K2Ї<^CHH^E/l}Ky2lG=$YܲPKRz    PK
    D:U            -   org/bouncycastle/pqc/legacy/crypto/gmss/util/PK  C:U            =   org/bouncycastle/pqc/legacy/crypto/gmss/util/GMSSRandom.classnQƿ
CVReHfQCZ!4鐺
2.
nDC0pnZps/߹s)3(jXqET<*MUΤSOn;(3$TxO\AhCHK-V&̃扰SbbxXB8^e6kmaa/ϰ{c79sfYu.]vsx HFb!۞0ct,aU#8	h:cA"HV+'wWn,kd=ϡHZ_xΛMbW2Dr*nR}H*GH136.#ӯZ6ŘN@l&1Ee
^
ŏa`D~<ТҒRVJZZ3Q\ƕֶHRFI:TtT>؇QM r	IiuW)iU.ȆF43gdJ?~PKǀ    PK  C:U            ;   org/bouncycastle/pqc/legacy/crypto/gmss/util/GMSSUtil.classuTNQngSJVmşRƘ&&ahTÂ
6,5} n| _Ą(x "M9;|߹&! 3t>3urz
~ʹL'G;JŰڴjUkvpdIqMk,n[y>g.Qi9E{W-:D{ޮRJ3rѲf'0tBeZY3{cP]-vV#9\WFI^mT[-=Ժc[S]r:I+)SԼs۞7ӏ6CȱVd8(㐌2b20&[lp:3Q|-pE"^(Iw4ss/y8A(NE:^
#saFdr/۽aGӟNi6[6p?m`\+"J1&0%?|"TVHtabVLDC/}_JD~0oo}N}a
( ORDDCQr_X\ݡ}Q~Ry,;K\}\ԘR0|L'r2z8 dS4?<-le{:v 2m8
u ;pQYǀO%qaDIY]JOCud블%4HuS$R7v F_'
wtq[O-Co!Zv&WFUۀJ1"d.`\űdbᤸ03|I\VwB~!RWRH6&ItąMreGbR PKEmMM    PK  C:U            F   org/bouncycastle/pqc/legacy/crypto/gmss/util/WinternitzOTSVerify.classVoEw:g8LqhYC?R
%RDֱ픤jG*G$NdDD)-%wp#8U:%NXɼyo~{33?ya*@LNYRb+ĹI#Y=n&Kʹs=V>L^zI)Fn,e52ȹ[Q/'K|9S9OW3S*TB=?E2Fq:Yf/
^0.Q)O67f<|Ѱ]Z/W*٥hl}֬m}M#BTN-U:2wY&9>'_FXFDƠ=pTHYkKqtjU@Q
n^T CR[E**؅}ϛqH}7> oF5+>41jr{	;DMGcɘ%ݠM=%.'"A*9voq	?Zxg9ɣkcCERRRndEi;4ʜŋ7RdTz1Gw98rHJJ"t)ɤuI̽ɥ᳘L_
nxxE]u_qu!~QטZicV,6Nv}La}sgVEg}eBr0gl'BQ6Sr<rm#NNݛ)ӬLuc>7&nJPC,sd4Qg|3x(,..ZAOq>pD?#V`Wg<l]VU+'C91ճk7],d*1o<_{q*Zu`}6G(03k<da}ޚaa
0%A6GY1^@E


VW(` 	*L&ĔHȸ+Lbx1"g_ c#>dPb?s@7R'Ƙ~FyyUi/Yk	>7햨юE%eVޘzBf#FLᕱKs@?O-k|
M0q_[2_[S77D>*\sҤ&
FH6۾Ux@/2}C>ӈnx>)-9ؔIW~{t+p3gk gǺgXMZy;L:j?,-N\5=~sNIm)6c}bSJ 8DsK{:毷bpCdPKI=    PK  C:U            H   org/bouncycastle/pqc/legacy/crypto/gmss/util/WinternitzOTSignature.classVsemvͦ6bK#LSjF
RhK|H0t줡iS`:2tƓѱ8n^0<8L5>-m,08mw<u8	b{̢oBiQ
;?4!˄?,p**
Hb#ъssB<[ƧL~~6ds";iY8JBx&mřE`09ST|0?Gnl>$ZP:`\4"i#`bI`c&OO40okiXfBٹdd*;/č|!mFsB6b;n0Ƚͤ_r"B*=Rz&sL\"EVjb%%} Cve쐱S9$Fˈ|BOϋk/-'Y0_CcuDd	
*:lcd.UtGEh-p
!
k{U4" ̤~&Dga/^#E?C
U&LhOIG	n]`gN	c*mb'셋җ3gTqSBt&k6^$zpp
F?
6N(3G=औ+8f`QX-&+b]`x]{?
Qwkn(9.ĉX-,U
퀫##$  Kt@r>Fn VVzvOːx>RbP%MAҤ`O-dɁĐ"=bϽxSB-)RZqFĹv
lawmdkC+ ͯt|PDݳ~^gwWZk^QW4^K|\F׼Wu<<NSgq	ʹ䣴.)D+N;(<7>AGZ:|YwS vxRWď	x;l[zʘJTugmafTj~OQT)5%?!|hQXhSmg
J냒J.[:N}~dOQWlajMRWWO[@\Vu];Mlbm}K	6j%jzfюFʀ<IIoZ ׫bW"Z m>JGwèTnmJMЦ*_G@
WW8oS}f$okK9țXXWN
kۚ ?!
UI[(-vk[[9\U[=yeYPGx2ҡSE*::9v/EU:z8@Jw-`IQ'nMioAK=	]UIQO
ϴ}P+ɦ3)Zf6]Sa4J*z9h^_oҀ{0P*\fG_̷Zv^pNԷ9W/=MzU.GVf
}PKҴ  
  PK
    D:U            ,   org/bouncycastle/pqc/legacy/crypto/mceliece/PK  C:U            =   org/bouncycastle/pqc/legacy/crypto/mceliece/Conversions.classUsF˖?X
.Pp)PALZHh Ӑ$@ï"Ȓ0[22ZL)?fc{{ow_Ƅ]22Μ+&Ǜ'T.wߟxsr,czm)Et&y\7iՒM懇Z!`FjL4[[
N~-W9â5ii01e)]2ҸG;ZJf1idl)ermZ(70U0+:-r<dV7eglgf<a{VŦ N7IR&N8Ql3SS
әBu⹙r-`fNΤYQp5]SLj%3_5\,6}ͧOy.8[Oyfz֬&T{Ugs=Yv=GGlHsG*[4iM~q[uRO@㑼	q	mޕ]	I	I-}	{$epBzw&AUƴm<mUs o[5tފ}Ѹ0rPc*=* q`U$8tpPT! "AXE7؂*S	hǀvr؇0
⼂C\Sg8ry.p(8
zp9Cd1BIixF92jm(bROOAH;hF}?!xC	,o%T@Ӌ(fEMZ@As<AXbl0:t)LNb!&^bF
ջ4^-ΊRy1c[VY?Ђ?Q<B*qvI[AXB qfSJJʵ$rǏM.wEV|k/+4qC$(Tg|Owp]a}hAlpUu+ΊN6Mo5{TO_s}pAA~v
kNɋE]dbdb\C,=`=.RӔNKypzY/!h@zy	Fz٘fJ`tV!-cIr4EnifҡFyʕڡ="odL-.E23ZgWzEx1ŦΣdV}iJ2ֹճjxP/9X|DHB}MY@!բZdע-!)#G|#dce2B-ʂ\Y+ubu쁴r")6l#%/~c7H3} MXy2:Xϸ PKwK  D
  PK  C:U            U   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyGenerationParameters.classJ@%5fJwM] XQTGRP>%NBEAt!p?
`.1BB4g*W,KU:'TQJJ(Kg?FB!O8G$ʃZ*
M-kq+xAr"]JЅHY2<&o1^OExxm,9`t`BdSXj˨&WM	o{Ɗ0g=}=PK  G  PK  C:U            N   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyPairGenerator.classW[wU^W)DDmҁVR
-MENt`.d>@2
ˬG˽'i&a}g_Ι 0&B'`azF1q˵
֛IL誂ns2@@:"Iwf$/E \v|Y7";
:[^켂iJD/|z@Nɪp+2V19s
_82>;O-焋)izҚKlr[n&rB^9溪sK0lᦍ$q%M!WZ\3ol`K3f[f,K=
j\(7YD+bh<Y1
[_SvLnH챮ŋ[v5k֭֟򬚻ԴܢmX{85֨і
r%)iZ6ՄɈD}Y#Id!ޠ> \ϡatVxR*QqHaϪ89ϫxAE^Q}ԩSNQ(ɬ4sdԠח.:mB6nz@'i
U"_-pahZ'Sn\ټ'{m|K7R?ۙniI5^̫GQEJiqk
68yƶT?6N6L\?nM7j3:u`8pa?:t㴎pFN(:v1f8C0Egu<0c0c/.EttaJG'Nwg,e9<+\pi
xKòFo_gx[	\ax50NBjpC4:}/q
;Gp^"ҾvoO?3bі8DNPp//نz(ᘲ҃zB
ClP&n_8hhK_P:.s8'N,~}ȗ]E*It>
Y.WJ4UZ;8U*^^[m]Bsu~LpjXOJ_#ە \)d_=|6}{<i]6&_#m>FcjD]#%d.~}PGF}ڗƴ-D:#Z/@scT5ߡPK]4%  [  PK  C:U            K   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyParameters.classmPMK@}ۯ6VD%AX=)B= =ɗVȿ(q
B{f0o 1`&;؞
YlGyiMtUeB*䤪Ӕls4T
LW|Ž	$&MROEc*>{ŝzP2Q׼53[~W`C>Ǌo\.f8npü8w_0
1\OӘQ0v'2>PK%  o  PK  C:U            H   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2Parameters.classKK@OڤmҪ5&F%Pԍ"h}LQRP
.(nܜ{2sg2o/ ֱCVB\> G\(fюZscھ'z~г/ۮw^kw}
Q`_W'AlZ:W"aOBYhY%ǗΝcwgE$忖k|
zթ#er/ 4̢Y&Yt44ˌ1Y*,UzVhPoޏɹTH
bS} 
L%PU-V1)c&g27$Q)bx1c	T&ǐjL2!,Xk߂3+15I!SL"а/Y*&'ORGqPK-
X    PK  C:U            H   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2Primitives.classV[OAFZnTt*޷rUӰ˚eJO/4i1jHeٙss̙i
<aɍ.5Czj>E0FAR%Mp,ݸ^U^b/𔷥Ge!FUOʆz&]}=yETR[-%J+%l_+"e8˗XW+(i;3bGЭbSҮvm_V[DvJߓ\S)LɰɖPrYK"T}nlP\0?Y*t亽]n2е$㠦4	uGwb`(ҥ0p!
8b1"sK2w>h8rIǊBt(3Yi17bjnJ\fTmv!?{1?ߋ2X.gĭU`Oޜ.V8L\p#G؏q!\HacPq
'pIL8knhᎆgpYLk11L=qL8E,/CI2鱏i==Bic
,N7褬}/QI$ߒiU"s҄^yǘh`X&.'cZnZҖ	E'kel+z[|mϭ춚9/yc=OYٵVz
PK۬  Z
  PK  C:U            R   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PrivateKeyParameters.classV[OAnAtȽ iXƲ-B쫿M,I>giHZ9g;v 1Od"c&3Vm,|˷Q4
[Y4_7lvNzXr-nd+ynۋ#'/Rqvj]wZr9O(řeP!Dٲ/eĠ{uv(ZXv]r'R舎ؠ0۬kMa[ƢT*90/KA^b8Vx<kdnb51Հ1$fYd"}$&F%
.+@ca#-|o-O7舿Yxwas'gΜHOD3^BD~>פ!%z'9W)YYc4ZmhV.ENTъ[*Rhm螊0˨WaH@HHAiЍ1FbI=,MPbr(j
<x/TqJ10fiփ(qzWw7ȏ?Ȟ#zHSһJӻKJеP	I](C0ĹᨮEw1STWQm
" اLUx_8(]d*QܭB0 nA
gOVT+9U2?PKΔ  g
  PK  C:U            Q   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PublicKeyParameters.class[KAckzIMK=ld A4JP	QFMaݲƚ?@?TL6Pqa8=<5/3]ߍ00:$šCIB2a'^
lJQ<ů%#d˰y&*$BE5D(j*R!+rUϕ6ޢ_r5x:SPQ~A[Sq#'|RwV=mnc\k$i$LiI	 &|LaZf̦142e\(,7NQ6HL`OF*Mdϵ`Ϸ6VZ~h2h,=;l;w׵_]{XXxPK?i  {  PK  C:U            @   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCipher.classW%{e}Ҥ݀IVmB Nba٦6ZՑʵhKz}Ǥ	9҃%7P;mҟ[J`Xf{`AG%]!'$]Jh>۳}yMi#ev=7R`M#32²Ŭ-AI?훈甄:>Erut&/agI*+gVg\Ĭ|6)	ͥ=c=jH'39[R3V1"ؾ1*2Ȋ-*K٣Fbڞ1;mIhsVU¦y:.fM¤CT&LF|{Dd|\P4Dz˴c[zR'%
FT<,qG"+#d	աRVʮIx>L=LS$tq+KRtDmRDՎ֕ǧRW-De 8csmd8^I}6bF*R*/3*{yLD`*K1=k"K֌Q0oqߝ$BBTZwp$4o<[r/v|,,	1;"J)iuդ*7ehڷnOL#%HL)Ke$&)XC4"d.6(\u,V.Kl>In4+24]N;xd%GF@>/「GdxTc2qP ~U}JO%ӍYbf1|ZbUE{?E{?~7Zo+;^N{ogGw!MZ6\ۛQw`8֥>
"_f4uЀw¤pذx]D
jP@T:Io0$M3L#.U7ɰ?+Ex~9&×^)̆]ZoWj/RQw.7*bgbxUƇT*[E'*44	#*Ј'U
*!Tlex'*0*YᜊwTHxR*ڐVq{VX*1AQ9223|L1|J0CO+wgDwfB?y2|M>	/2|d÷`7q\`	1\Tpdx_a>ó
>LSp
_i0zʞ͕+ޫM'v.g)SP(䥄Qʊi&C>ʭ3;tw9Tzp2TDi4k#*㫀#؅sMmso7pbķe?yWhX/.߷{;+U=pNm71>-ݤׯt4+k86*KenԵ4,tYe]|ݤbv36٨K
=ϣJ(-yŮռj*B+䲸 7eE4]d{]?Zu5dq^"nCX[s]^N^xFRrdVde]O^]~W.c7VnEݨt #*uho%4'򤛔!_	Av7LXzl$\*y
sp?U{vIkԚ
Xq֬zMY-ZRxUk@Jqp3ئ5hmLf"~()$:>A'%~)_t:C"qݺ|_4WhLKEt'4WS7
Ԣ4VPKU{  U  PK  C:U            H   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceFujisakiCipher.classW_	V,+ltclK[02u\9Ց-C XVyXҊM7I/Iڦw^ܴn7ᐂ6}sәy-8ͅ]8!8(mPmeW0d5MLd2j,*4567llj<@ϡsD~7L:"`oSaÌj
sFZ͈~dx_ϱl{C>t詖&֠#J8ã]D7Kڬ&|Q=ji:&hDLcA]bNnpj	C
x(\-'@#k%jú[FPL,Lzܗ՗0lb8iL7XXXMѤ 7}<[FDOR9:d'#mỈ>Q`YOƮ
0S~Ɍ~Ǧ)wCJ6sfW=Y6TQgT_T5#`mIDRӺiul2{),^Fjz4Rnz2ZJfԈjUI4_Ni
KHO#FJ	{6X
¿B03"
P9of&}<_hL9
M}2ӫ=4x*=zB aÍ5^S\VN.k5QCt_[̜)jDXvk6mrrm'34tI
ĉݥ&v2L1ꔑMeqCEQ:(%Ib"d*f|¥a*nS">''b&_qX"qDQOh*MD"!+A?,tdI>kWx#f;ʱj jOG:ѺSQkԳRݳiRGgmM䍞_?[aYZEՖo&Oloط 哞`J[lÁF[ϸŧP+ޭ϶Ňo*Ï2c8eY͈xNg"2ECQ.)H2P!cd8-alqFFd3T"*Ãib2ᬌF$dAR},%329Y_c:7Џ$-	'	C>02Ï$O%|`0.0*adx&cHPs	$hx2xߥs}wӝ'i5FS|[]O_m[Q2A	E9ջ
aFJЍ:gF{ګ?WpsmzNH>%niꚭN0#3']xsnbxu
70SoWyS_!!24/a;Y:p'kr &P%O*cvl]]Bp#_9Q)'0~/bqo3<.y\yO	qړaky+kuҫu2"K
Wqye	0	/VnXR>">
8It(ױ"cW~W긎s7E\
eޠ-O/ .adx	4p).jeTqP˗S)N5{(	W>"*7S
"zEh6#4h%*T(by7bvqo"T Tq:vb8倘!E\9dHO-
S|w7+-麫ݻ/EvjVʪvn;rEK^iPv(w; R|lwzhJH7+/_ N*_	׷JkxTPK姖8s    PK  C:U            Q   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyGenerationParameters.classJ@'5vJwMf"H+B2N/!dd*Z>%NBEAta\8;wq_^YlzKEJte0	q(>2*N~	EBp*)Iɫptb8pȰ=߉3_WD6U<0ygU`⡍5\x]81NԔc;-Cڲa5úM[mi]gl{O.59zPKF  7  PK  C:U            J   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyPairGenerator.classWWW,ð6VB@@QS	R`[;0:w7o_9%4G~Y U&zﾹ{;o~ t'	eMP2]ms['=[;61*HXo_Fu;b,sEDs
}v"rfŢvLy+e[	ic!rTȨMɾ볦n,h[i'\aMCn\huX}m&$(aap$#=7;0/]Nl(K3p<2jI%fDspɻ:R"49mMg5GڶeGDx?C3L8M}=|f}$]wE&ZT|MqKOZ5OwQZc#:#Z`vkmgg$+̽iD>S5=W",_(heb0=%pc
75XiX>L`ŔZj$sJPQ-`OA-Uu}Hi#d_@H,;B?L:J_VF
+̖:R7D-rג*˸G}2˸_h,+EF2ddlAm||[n	1Mx:4tO*[ԼõM[A6lVdiAegn䬨@bǐ{#]>b[y)^@=MpSE 'u7+H4m-(.]<شXTZza&'f䫲zK{jﶔ?'3q+rsڋpf3tKRWiMv[mQQJk1t2Av{T,br;V2T`(Sq'<zHE=X!Ű*O+
Fyna*(<Mj`jt	'2<Š1L1
`(؂
TG!`;!݁ a.IQG9W@DA?+؍cҟc\Y~͌-L-t߄k\ڔ)(ݴ._ Cʌ).G;s.G)JI&ZI6("3o
/zfqg #zNf]FdOHilH^F^$函-WoK/.$Jo<,s<,NyJj)?H%ȴ9AizNP-ĜmOP'ZZSfxc_[ZS322/U9WT'_aAWMcMV_M#^d]|e%XSM8YO]
ؑjiiTyH=
il{Rx2Sejhxv/mweA:$4mL+h^{=.*P7PK@E  o  PK  C:U            G   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyParameters.classN@gc	-k!B$̱,ٱ9ŽHDH< X̯DGۙo}y}z1Σ;=$SI
lj^iRuU.ImsVڸʖz7jRB&g쾃ɟ\uUiМgY]FFnc.?>8VU!,^5}55c[~|9X\ZȻ!ݦAxg=RIj7~
PKR     PK  C:U            J   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKobaraImaiCipher.classW֒:V>da'6u `("dIH+6i>4$&ڦGzi^}?_ٕePLΛ7of޼}s V?NpuN< Vդ+j_nYL+9MfDf[YiqBi	e55
55+YU'5Ӎ4Ϛ,skTa=	V4}ZF<^O5OQc}jTWr׷lhֽsK-^]u:vnmjkmݼB꺻mH֒ǫX-zX?HZD
zUc_֡I5zj`ㆺmZȈ'Wӌf-KD'*BXPcq!-K*jTKM&P<Oqx%э6-1	Zs'yOVP?a "1z(4S2ә{ɾb8A4-U$fC;V)^%613MFC.b-E.}o1gɒm-uXv^N]5RʈB6.a#A ƂzkSd٨	s>5Uc@kmLFҽZh9ҲZ<MˠN(ܳ?Ee$	SE)CQiZDK
X`S@L]pu@#h{Tj<Q#ZnbM-R`MxldR[2*ŵh6 fShvnaRf3
^Sޙ3Ϧ`ٮs6k\$UmnbZR
,`ٌ{?k>%~UoHZH4c}#
t#innJrr͓:Nδ&MsvgoWy[?o=䢵W-7[
OU7x昣iM[(S(ey)rL{@t,N$HџS9S(vbrD,Fĝ"֊X'."D#b6":Dl)^[DtU6EIO3z~Jpt@N9,He1;^_tR,KLg/-5ʖ¬G)T9%Kk3֜w{l&|N?CLwQ~#3/7s[Wy&Һ1nAd^Wo_Lo&W_[=HM%4cd9$,@]x<(a=pV0c*&%%)-pIhe	;!I
P a
%Ex>,a	ЀK(SBWB'A%܊Jć$T.cLg&e1&g	&tC×$cnÓntc?q ݈+nX%*	bU7)&Ǚ|͍fdH	&bi&_te},cY43nƐ8LN2gx3A/2,їH
m~mSi]|>$BDը4hpS-ĿByC%/Wi@`%<O1l{%Q$_^1UӍ;df6RpAKHeZ>
b_D .VU=w'Q_wx|,MOHss<5SwecYETV_Bx^:EݴMS#vqBΙydKZA=u[U~qٗq_
,Ĉ<Lֿ~1k/rtҚyu8?u?
ه$pp'qgk9GH·a@\)?F
գr	գ
r>48dGٞl73謶)N[hϓ&uhEG=;F1[qu<C ,=yG'oR#u?*{% 2xlg,aٕlgwe7%7.kER<)赑Y<,2xmJM)vNB+JME,)Erq,ORO,bŗφ`	Q
Rr:,8D#c;!bA Xμ- YM3
<?~9r~9-;0Nj"(<ǰZvdrХluAQqΓp5ꠓ'gՕݺ+2bluJBPGe	x	\?="H8UX$+0LUO) Q2
0,3Zn(T
9"t]X)	}WbgS|W_9/~%W,M~WmWJx#[:2oBrQ*Y.%>tQj"XǋE BsrԥJ)E=O)+INQ7 Raqxܷpu4NBPbWQkj|MMKB-<_,S|59<ez7;˽\d|!|<gPKǗ	    PK  C:U            D   org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceParameters.classS]sV=rd;		% @֥@H	IĐ6}h+G K0_L:L;zЙ鮬N	ܫs^?\fKT&'p^Vx~EHe
!nH.8DWBXPl'mf$$Wֿ)v$ڣ,*QNys;	*/ۖ]r?tm:$Zv>Ep4ӭә+UO,Qlϕ0!-=I<
n/v=JByu;ӞRUB5T=Ig=bmjXf=paZsvmKoVE 7QAͼF}gljrpla	h-Inml
ZTD7μne1AmԺ:<_[gs_Wh$]
:nt5W6^q
(8%h+oմJ\L%=ǷL<}7ޙ;&p$.1TЛ	1~0\eD2L3\g0%̧`sy>MY[Mye}s[L70mzT4k&}c8Ek
ŀb/܎C]E0dGH^)i
&ܠj1ʀ>;k)DQȴH-|#0mEWu"DW[.mikM,cI}&%~BYAwѹ/?mb/SUp%֛_hbE/	am
rD?RuI]-S,-nuP%c51	c,\T_ܧTjUedN-Jq~%JPٛKPa_bMC^}L<pq-yMR;d$=]y9:y`{i^m?}PKEDc    PK  C:U            K   org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePointchevalCipher.classWk[~	VVItc(ad%8mb\mYV'bm5ni$w8Խm%OA<mݙw3sygٳ% xσ4$֏t0f]ypYς3q,v+uM-MmMM<Բ6E"a2z<0㦕)=i[$H\AJ? 		e#L"<YƴgOHtxR'IzFO&xF>짠N>SOJ H
3+⁧R@\m,	^#ea#aGq?gsv<K;V2$"O2-~KTI\ԭusz2+GtY+T&}LMs%Jq8Օ=].hoCnS1a2bYN#ZNUSpI}J'u+NrDnRXvCsM(Y?Ipr=^t}JL'E6T((+1aǴ-nsSNDf4DHY;g$c9VŽP@prX@VNq'j6;޼\lxM{b-JgBaaN[JB㦻ط\6F5i)LYS#
q+}F#tvGJI)HA7L϶Ɠ.Zv
L6&uNo$4J'mnPݱMyL{6ä,Kͥ)tO\:N{P%/cd,#"E~xDxLF2qHaGdWw Ww룄f͎&n5=@Gz,5E-,o`8F#szmMM9ǿ?x3`M-a~N 'ۈpB>[t
nZ[/`˺TnðCǙ2wABE&T|V&A&LQèP!xTD솢qxUnT܋*)HhjX*b鴊&dUa؃;0nQQ3*82,1<|mLWya֝`{
F|_#KL~`02g|K:u:t֍L~8
L^|_bM(k='s|/Ʃ>=='9NkI?j2C5sd*éo-^ꌩ+)Փ_hD!7.:"]~
5^bhyj1Usmhx$x-
8Ld؊v,w.:;W[]-
>$ }EG
ñyuaZW?R
FYuH WXE.8w-ʸgshs4qi:9c>?/ᕋEojͼV*zvɛdN[j'x|!K-bp,]!g9JkT/By\5<DC{ ZKXw%IeOTvd%م48G+E=RjnͳrË81/mT|BKucKC<~jSjhi;5_m	Ֆg^|V_3Y7MhU*5/ef|uq=2CVɣ<(ާO4tଡ`ΙupQZD@n` ]hvGi1fԣy\Cv:lW$lv0*ɪ=4m*>g>)ԍe9seqdM֔y\udxV&i8/ZvEV&TS|9wP%Xea5=$0?PK-8    PK  C:U            N   org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePrivateKeyParameters.classVrT]Ǳ#[Q^Ң@K*H($!qs1SN
%GQ2^xᡝS f>>p1adcO?1CTT22*1Ē!X207RcX^Upwam6f
Mݶ{ܮpܚŅZm;7M+Y3of:̦iq߳,>L.Cj\xer)VɌ(?	x-R1N
ik{funDu5ۤ]ZA^z0m4L=g²S/jozK{.5o9~Lkm*:qSnӫܷ\Av@/˩
OthcE&0,!.ᬄsKxA^pAE+_]ܩES30YڛxS?2?=;15Lzrp1; zOd):'Wˑ Z~IbgIz=?1OJ
 y1U2&7\0
^ !o	4 wHẀ0' #ঀye$aI#'#-1/CǲzgcE;uaHNMF* )"L)/utT!(&f	?UqN>7k▖n&nkĚƚ(jpZZ>ĝ&meZT\S?&J >"L
=BM'L!ƕrXY#
ZPo#]V[4,myMM<	cФ<*[\ Qy}bTůeݓ_~Fx'p0"!Ř̀ߨv<}gzWC]Q+꡾UdZW.v{׻c=.jPKԖ  V  PK  C:U            M   org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePublicKeyParameters.classRKK@5jֶ!
H@<VE|K$`(ۦzC
dfvgg=Wd;e'\g``6Ca!TIؿNpalWʼʭ57]a[jzǅ.S{zd'BP]JuVM^SpmQ
,x`sGÄqơǰn*ö~2D?Nz?ЋkT(%0LC$` c%LH "I	iza[y	z
ET,3uw!UvcCa/6R57$^0[CcŒuEe2
=mwb}h]?-gDPK{    PK  C:U            7   org/bouncycastle/pqc/legacy/crypto/mceliece/Utils.classNA-,E
ж-mE$hjwd].۩G|ie<[1L$so39 *U0@U0 `^-l̎r!xW,1p-+WͭUKehp[䈣tf-!ٖH̡õ#,n[gS\_0?!۵ѓDKoz]<6tnǾ0Nɖ
gO$&S'S#y?2qtm
J;"+]7gvGX^`m#ő±qcuNs#j4.S9Wʝ֪eM&6%U,CWq+(BO<Pn3Yzh6P`=Za!
+c4Aw[ᘢI1C^VFk<GP {/
|s$@xD u P?`` JzZf>J?)&cTPK܊    PK
    D:U            *   org/bouncycastle/pqc/legacy/crypto/qtesla/PK  C:U            9   org/bouncycastle/pqc/legacy/crypto/qtesla/HashUtils.classRoPSPQ),fIL4K(!<KiX2z1aO>W_ q??x[aј
M|_鹽|)
\~ iRS1,iZ^;c]<`L.rcm=zYݫ[E7wkZU-Rm=.hՔzy^]i#c1gӶm1(vXVojfX	=mti0MwЕ1Fm`gܱ<Y+J*PQ!f񈙞Me=fAڻ.J;!~>I	IW㈂C(ǑB$[H >dcXFƇU*n:ۧD+,po"<q)Lp3$A7Ȟbć	6Ix
"cܗJz{f8	9mQ$5eNp&=>O%J;1Jbk9?PK
o    PK  C:U            9   org/bouncycastle/pqc/legacy/crypto/qtesla/IntSlicer.classN@W*   z,5&h&&Z	|	D2NKrf73QSw&m$V׹f`\*kA"eh2H]Kx\Ofr5=CPũ=hm{l#4@hb1F&ty0	7HBVB\߯V46dl!)CsM"v]SL!R=z[	yzY*<@*y5*f:GC`Έ\y:~OseBj\<
÷Ď֨Fl.٢Ĵ{wVʭ6PKJt    PK  C:U            M   org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAKeyGenerationParameters.classOKAƟqML$J0nE2</ˆ(lKP }hty2||8hzن(0
	3M9 S\hOL:i7*aRV"?EG}Lt("%t(PbLTYIL>Q djG_^gN:W
ƚ^މKyP5:!F*EP+bUm9$dmlmmZmd^YMHcyj\	Cz/PK^9vi+    PK  C:U            F   org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAKeyPairGenerator.classUmSX~n.Ġ("7*,VE
IHSw`:wF#;{NhLis=<O{oI'\dvs<i'Wts;خ^qj8ej&_5RYpl@+wjKUeTuƴ-,nmE{-	ҸJ`,!J^P%H`4-9Q%J%XmY/LY;*2YTU\jQT3ե%EVk7ZDL=MP2`YU18Qٌįm0msUFLJ-D~V(
 H/Uct>諸]wwQ5`.HtIJ/q@!$KIK8*П6p(l0&/ooߔmmub^
VFţBܣ-A[3j;=.o}$nܪcۄ%tS1ӱ1m:val4FCq#:z0?'~Bٌi8Ng
LӐ6hf\C

i6gp5
g1$r"i=6YsQ&)/D-1|;ũ+lyd
?{q$XHL'+})ըƅzˈ+|[5s_!c1,8LW]CޡomL*Nί|
e̬N
Olz"S5<Hodi
9#@%ϊd;|uFFPK!cDZ    PK  C:U            J   org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPrivateKeyParameters.classR[OA=C/ۮ[,7"mm1' `JHa7+evڸH ?JT4l2络Jʐs]Y5vtFCѡT(PO&tq$&}d0JtT(S+<)Eܗ։2cр} 2;!m,tĳK;>n#턡yؖ~'"
a,}w/G^TdMmY'"5dx66zvJ!w_mot7ۣS2<_X tRҘ3n4P50e`Y9guc`ZPB:Q"n喉y1&jM,a^zOU;xɓm
ܧzT0"hmRa?yGT0zY;JuVUEf>ISO]Z]*)2PK)MU    PK  C:U            I   org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPublicKeyParameters.classR]o@k81_6Li"YHBE*rU	tc  Q󣀽<!K73w	hq4{NsgMF%N%Q30bMJQq$T~\S'0
TJq34耇's;#&Ng?!|a'wB&*#qx\LiMx@4ekRɔ;6W\b_,˭uosz"ÓU1
B<'JrP6`20m`,Ü<:x?ln[9PF%zuEᦉy6[&M,aD7S\h`^}>Z)=#\hp}R?o5͎ުb>Fpb
m``6_&S)ʌr+QYYLUR4b7PK  	  PK  C:U            F   org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLASecurityCategory.classR]SP=Ԃ|i%-ZO(t$4!	
Z/0#3rfD:{vnS<OCP1j /r,KoՖWVwJykCJh{4!^anuąY	@P-YE)3{6wLjۆeGT',סsH+e7j

;UIToyUѴf.khMo1$;WFS;!ܮ d;[GiR,(xmA -HǑc$QBq.h-_W~8
*+*g~
	0EfRHaVIp/[DkJSH?Smȍ])#j	&1E@7 u,~'#KB<!i:)|T:|靔Gϐ>C~2}'P'xx)IRǝh.%!B!ln;=(i\j,3=5v]^Bpm$vz\Jv56Ct|&r_V!B?PKC\f    PK  C:U            <   org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLASigner.classUSW-ٰ,*h
j$!-jh@?l²Y7jtCPgJ`jMNn6tJ9={Ͻ_xVI_IKBe&Ҩ4ᢄЌ"wL$4	sn%.x4l\.$s:[eǘ$4|zu=	cQ!WN"F-K8-r9Z2,pum0be,q:g:w<`SӣUSܹ=(繦mL+]	Z5B:+ztx-w7La=QQؒ3Rchr	^,2bQء^<xbx.;2{yy?77Ky;E	A8-uj!A-h(@:K]ڎ1=`|+F2Pop|Rw"C9o8/れN]2.ʸ$㲌+~ߣeDO5l<}VSR
RإZw߲\RyMgx\/{w0GRSq
7U\Ň*G*ΠISh,NFDE*-B*8Uъ!'qWF0*DZ1=P=US!r
cRGBL+ø(~W0|BL)AL.ŷ!1}m93lBk Bh$\Yi6>{p`~Fa!ҏ;~hq9z/0z-n=/\ Iis_0[M\Ȭ0W-s,兿':h
9{BESNHDR=ݪ#5c~ak/ѳXh*<X
1{z-
ɎAqDZ
¤݀(zRnIM<^ȺWSÛ~"koPK6s-    PK  C:U            A   org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$Gaussian.class{PTs9eأk1^C'FXWU@qU˲WM|ŷhT54m&IꨩcG:m'66&MdLS緛Lw~߽wgpu uawP)Fe[>Κ0'sm9ͪ1?{aa#jr8~l'n109;j/f)b?ۇGnL7ڿ3J=f=Vy,E	
,Ew`Ec:_o}}W9qV9?Ĳaf=h՟|+\ry'h-ɸ-ZujobMW}[(ZcPR]o4cȲtl{aT>Dv e_=^;vվ"'/80 ?<f܃G=7ؙ={(/q
奣(u*_RBU؎Փ[P]Ǜ(2ףi(w_A*AytϟQ?bFyy"׶Ԕ0Iw s5C,d3ss:1N	BG_
FBAq`PZ!&ӲԲbAɽ%"6Մ":.?OܯyAmZYu[mVc^ƲLgX]*Ncw8>_Z~~
GG<Gmwۛ˹k+qz\2pf nnt=Fk:/A8v4vt:nggttuN.OetH0?)	>xVKc݇IT1]*ح}*د*8=[Oa-셭Qp^18pZ)	"^
ev}>'/ow_bk)<1HH$xI<oÜw|+ȽxQ9ǝU懍&ĩ78T\VѠIhC>NïȣŰB:0uR\%>G/"
MmZ#M:.4Ф4bx!&^i*1Axt"6M-VqD^~z8&x.xxPd:φQlP6ã9QCr`uXgW_8*BmB<h%9I4\yW$I Ay FosGyհ/ɯXkz8~YcC"yW	V4Vb8%YjFQ)l4ŰZzQ&CYl,q)%Ǝv<`
4@3	v"bi!@l"I4M"6d"6)bEl*=Ʀb	Jdө͠h6YfS;l-cs)ͣjHO5lei9[D4ZNqV3h6;l,Jcgjvsi
[Lsy>II|jdKH˖5S)2`R[N"rR [I.v	U]JnvMedr2+#%X-`W]MVv
u4m^&Mکm~Al
Nz]K"6YEh3vJ`=KَPIخPr껩	h2[mz,IpBQi+e[8=Em<Ni(;i'yDNCgiDNGt6r0FQӳI#tTc\~gV	.'<PKP^cI  n
  PK  C:U            K   org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$QTesla1PPolynomial.classe6<31kotwt7"")ݍtHtH
K}{y3sźֵbx=4Q
hlhwhЎfai/:=qOׂ^|K܃^0+.1FpGg·QY)56͝.0V&rƾ0n5	 Wu)I@pM@![y?*lftԟ0N0wsjX}te#z~kHd=WZ(u<E
X'߆z3XovĬhv$k`g8vó`-:vao󶀽};>px1Iz	s>|p6;g88+d~
Z/WErsKSe=cdx㫳gQ*=Pn𦭛/[Mxko_?wdޟm!%#|in/Τ
ҽ魦UW߰iwh8~Ip{U;K:gi:R)_>ӟ?R>E&_lz @ 2rM@ӻ}P
5x`%/.h]ps!O"~bS3:`#"}<FӉqS"Z}"ϘBIP7_"Ū-v!y>EtFW}*WFxO oDIv4[#`B?2I|"i؈Te!Ro{DZ5v4	"sEڐ.Ɛ 	
BBVZ!ھDvD*2%D|
 r3?V*5ּ"pi!p;3LKrZY#
A%8K4ЬM@s}:@ҺmFܬ:F7Ѝ.@w|z;'b<7~CL̝U"t5dTǑ3U$dgl\Zbm+qŊ|ҸbrQÿ*I|ȡ:򪣿=E[uеC<KT$P{m׳gmZiՆgrۭ٦Uo]ުOݺtײsmZ٦B\:ֳC]*+ST\Х{gn*1o\q]޲j#ڹCޝ۔ںC\:*vе7ءk_]ӭg-j@^|s=Zܦ]\9Zнw=z9.t_wνt-j](5jt<+K#%ãQ#U'^|g֭Y 9lPڥO*aanסW\էsϒ/}vhۭg?׳Wi=On^Ol;Wh2l 4]3a3@lh	c@KВON	-UoCK=#á?Kߎ~h2Z-sl=h9:􇖷o^h2V}Z95V:yohe
7`+.OU@c:FAkV~n
nzM
nm̹Mmr)?	14r)mnJ'5pfڒBmp<3/~vd*
C;Wvd,S=vvh?ǎK'ƌjnpx3>[-BRhw'e2ڽ;=qaGhO<.LWY0taR:axsur=n۲X=Г֠'=[zyCOsz.eBYgawzVZzǑT?y
+@cJstU;`GFW4Y-*g6ocz2nyPs2Aj݂>a*c"O@J3b9nc5CW}a	oɷ۲?0}mWOͧkd1
io4	OuGmJ@7YC6_~cf"Bk}跷~Z@X Ñ&ПdO>_6磗eXq_C7XjoqG'q
;~t>F#"v#<2/6`Hp+)H|ǗH`q%,g~aU0r⸷PA(`cFњaX F`F`TQqa`T9F"
VQ0.<Pᤣ0O͡t0:uSF`SddƐ1:1&oQc'=c~17tg߅0VtT8cc406=Ƕ}oqtC{<cK81q;zqX?.k㜇cfb8]^X{+a\
ݛ<0
F0l	<5yb&՘|vfjpS{O|5QFN2G|ÙFS`yGuy+
(v-T΍V-WIZ=ojZh]/*iv/0(
<6rҒs3] L4ff^\qa<n!`aʽ{ Gq3|!
NxLge8ڵ	݃5u_GǫN6+
d.}[uo돿nnP7fnx<=xg0xl łv9j3{}0p*V0m(`:^Kar4m{Gr<ċsL)'̔i#0fDsafX?uR]W,r.0ì< *3ì6%!ZG;mf`f륽`]daf0;$X:cf5a>zvOپ0hs\Y0q0R0gl(s0g/(sÛ0L,F̄M]ߢ'a.yI0lsen0$9s0sC%07fYmS; wvkzy0ߧ*
x_`(5e~<y{'0oㅺr̻˾x3/]g
0?fk Xy[Ne_W`ܗk*+jRsJSj	tycX£`hVWO<'UU0rXE$UfXv΄Ua-I*ƫEe`5dոNa5V`uV`u}p>k`nePsNVFkT\l0waM:ּ
`%,ʵaZsaֆč`m3y8֮cma霑iX{=`c`3k:9[>.WyQUXuu'<y{sxXeqJФ={z?lEIaǴyًFa6va_^v10
w3	ÜLSnpkl9\,nnmcD~(	}/쁧ܠÞi	{~W&}؋:Vn
^>mpk	,g
{_ƾC`gJ#l.I2g9?Kj/eql?LZZV }p/1;0|N}y8і5 '6[-8FI~+8)g[8i샓'i17b*8=S8p
/ᔺNy|Z~+
CfvCT>'ré}.:8rM<Ӣ;ɫpZ%3p:ľ`0N׭tN<{O;yW̓3x
7lv=8^38c~ΰ		u8Hj~_V!9G8_⣯zu}C8Nև|8k3fzΆl
f?OuKp1w~8g =]<*sp.JR/uKǢΓ,+FVb÷<{8omx91z>ǜE!x	^fǛ</	'Hʐl3<ΊS{Iw7<|}.ۉǏ́%Hx׫OiOywe9<E0l8OM)9q?<?MO##Oy[px,é8DԂQFt]>aBxϠ]<r6gX2<Q<q)SZ3@_nu5×%>0y<COYVb*|=ϊ&YY<?g]Mc3lx6fo}]lU<G8ϱs"wjx~(sv.|x(zWsgpxp3<'7y=\
«]L[	1&O o"w&/4Îtx3ܮ
o{osnx-|iEZ7xo[r-!{G-ops_VlWrroM}EZT6Uns%x;oעQZ޾M/+;`Ax~H
<;hx'xgð'gwΪ.	Yb gޕûaxצP뛾wfnY> x&C»?v-{"=S|*xo-[RxU? 3Rcȟv+xrF}z-+}ӗO> 9
<
_B=yzm^R]fpJ0|W//LzBTWی
_ɻ+UW5-
z+FWUe'k܄'_)Qk;%|=a~
O
H%|c7?1{>:êMkxp5C51|٫7V&ѯ,6U?o]:mص͗·c`mF2^
߾5;89|*y:OԲw#O>58|wvn;
ݳ?8OE\+ڳ-wo]i^4lݟ[ 	v?Y2ß	=OZӬF[Jy<7y'`/[_0U_"Vb[)+^(X[Z{_MԭSrܐV*w߹=ϣGov|=ik.?hglsB.^.M
Y8k2VdXRuMYjV"oji}?R,Ïz}=ONg8S%y6fT'R\:;n,[~vLY2&Mu͗1/yq~@ڥHw:@ "ud*re{2yF ﱡ fIX@ky(6ŷ8҈J32@*U
m@ZQ}
-Bi {Z%*@3h;hwv;=BctYa ϨGw^`z>#?Ng~.#FC`T>[B`\?؆'-SGK
`,̐߷xLv 4/߼la=V6:3,f
aCpӽ;rʏ"w!Wh33K 㽎\-W`oՇH<BiJ~"R}
/DPOAЌF{&/|uODПd[FfB0a	"8ߗJ,7r+r'V#m'f?Q!;R<+3:`uU,z-_Cd\+*`PGfw߬Aan㍭lqmZcx9#%.<`?xC>FY*c&Fp"N
Bpְ&.踉?Pe<#8]B\%Dps[gBpgZBpwnލFMAo<JO]Ar_%u,rSo2Cc/? !gY)<3z}_|3lπPABEC(b.B1{"H(5%2k veB
BwFK#T>e'걣aBY:NCkB̌PAWsBC>fGhxi7>GhB,f{ 4qr"\9#4Qhs-x˸!&Z-7p1BDhK>BƲ\v͐2B{|B''@XqS7 tFwΤ+ЅU1BWsrWi5̉OYDE2݋O=CU3/2mP|Z{OG C3|<pyNV&c/"ϦF8)g܅* Ljp].*%˼܎pi9.׾$/eÆ \bukfC~7uV76!."ܽkfm{﯃pQ[	\5=</FxϜYG3 tJF^]U2몍Bx}to=S!o|gX;>zЎK޹>c?6лֱ4.͋«7O:¿]9g{'p ׎ |BaG?7'#~;!b\3p"!oDIR1C$Dh `
"=I'B$ l+"C?HєNB)㻅Hŧ%4="4GV3l_Hi)":=CI۳4 &4^o#ҹRDmHDzU#;<>J uD>QyyȘg?-#2a0D&Ɋax_
S̻oEds,/]X~Uc#@fD֗>Ű."/Fds>=m
:9G;!r "d|v,>>"@|\VY_ r(̃o[1Ø} dFWD^_ț&5yߦ
"U.AxQoIFzdCԝQ&21[h <CD?_hd)4x*fxѢ#ZbDK7hO?A⪈֪цZѸvm9rvv2zVz7WM@_G')>
ѡGtew:#63FtNηTGta~FDY.7*=ѵIo άs{02EtguoO#zcD/{
	"zCs3<=S@D/ѫo#ziwD/W!GÈ<Sx'D?\~Zp6' 72ܘMK>~iӴ
R-9>_0
p:gZ-8N-fZnᖫnXSܪK6í7=ܚ羆[+}֩ynݥ6<6Vہ:|a.;ڂp~;X_wȺp?kOOс;hm?{{Iq|4<~
#^g~p-w~**Uy2ߥw1|;C	=Zۍ{Zr9;ŅOI=(+5½^	C Z\
l pOh
|%9!9hv	dP%W?y>F6 E⪀6)dMr20([is?,ʧxA7 TzBA|*|4ˠY.8P_l~jx.iw{6g>$X[7jb~gkڕke(k:ίh!?;@ro8IotJ,fq'h}̙"Um
ZuAkbY~k	Z?%ujk]nro/ڱgw,7^'СQ@G|?Ҹs.c37QKq>DLhI 1]1	GGLK	^,b'I2 &鲈ɭGL|>3S
11E/BLN?"?SmĔOt1s5BLfqJ2t9Ӱz7ĸ; ՠ:bzZUkH#91U:9pj:?G{hosxGn9]M@'v/hkzX@ڣnhO_{uSSZSS)r> PY@UG~+ӭ|{Tk6=tիM/]sgSڽZu׽|QV-]ǳtO#>j:iVm<zH{e}h!(ߊtow 0Q`ll130KH힚f4-~Oվ;VKf~ߏɶ{?$Zs:s:u;w9eO=uzuϿ׽>O4eZN-x
;Bhu9Ѵ\ZZZymX^&)0TO+<rи','|̃Vœ.zÃ&Oi7˒lX3kŚI[,JfwȞkfɜ{X'½zvuuFYÍŖOWH	5fͫ5ijG;'Y9:DW4qN'{{m%7߷(D"m@R|_đ;x}
ͣyfdJF߆HG5ϪkX+YX[8/J"{Z>aBk%l%2;YY/D"D},rAXR5pYf>ϼSmmz5fpK.vVʲ0mL5%oYeG'2Y+,"Ŵܢk&͜$kDvOI6zoq?7ߩK2'˒,{d[Tg
]L 7~܀GȺFdM&"Cըz[
/si4aoUCgji/5rRDTWKɨ&7qSm2_-<QG-Һr6++XX"-P=wG&X[iϳry@>nݗU6ivAzVdzk#ڳ,yna?Ǜ17֑9fo?M
5ciWhg+Jtc_dhx?S
).KY1򠑄e?޺xV')E"pVohUoh7c:
=
#ct\Fn:F[c[n=Ɛۇ1g.cu2[1m0&p3&t0~cLgLeL^aLbL`LbLڌ)\!ii\1{11۔1cfwc
cV-c67!cvc7#cNϘˍeFuI	?3s0w1p3t0r'2vg3q2u73sd,d-XXmXɽXٝXXխX-X-X5kk+kck{빭뻋)-;[Ռ-[9[=۸ۺ۹Gۻ;y;;;'0vu0vsW1vw0p/1t2rO0vdbߵAƁnAnan
!n&CSFan2-@T!NFqBcB4B-BIBݚBBBSABSݡBJB݆B3\LNBfBBsB_酾twO}^ZBk7Bw7<En@h[Rh[hVhCh{V[7$m%M"-&='/.
w	mpmtmr
mv
mqmu
msIh;Yh{Ph{Yh[BhA;=n7OBO
vqu)t'tܭ(t);E褻P{MY7Џs6	BݹB2BBBBW83B_]s^&~.tunل~#]2#G>A-z>$#BAǄOV<~F}+ e/>"¯%oɹ PO2.{OzNHm<9ȺFhDStLzYl$3"l9M&CvaՄ~}d~^1Ar!
0鲪z;=JF]aBH!#p,YzrD
5Oȸ. '&G6 Г!]OFlU=99"=YeS)J"gpj2v	!%Ӓ	#pzrdȣ8#bHL'g%[Us
$}p.2&S=9dO8?!(\ ;T/HB~+B,ᢄLV.NY-K-VU/Ej4yR
!pY2/\#K@ydF+%W&]ɱ
	W%]L^N{kp-r~Mң:(Kzٿ	'pr
K7"3pcJ	oߌlzs> K̑GO%9VQך׆ CoKPݎ JoOwr,dDW39.?5QUJ'{!_EX!7EUN/JGLޟR6lȾ+<{CVtCT3,p2u#$(2&Sl>,5dG[}<ٯ'}"Y'	O&S}
ÅFz/<l3Es2"K>1_!a>\VK
'G߯/ ?_@x!9兿!KٟEd^L%~!P_FP볜,ܷw^A!e«,.tokHWvl-jRe6]xYo&[b'}ٽWxJ϶G=I"[ٓݤ}j>{	%5>8R}?jHW %1~GȾ!|Lߓ1=>Ng'@e/N_ə)|lΒG#K"'	s/"A%e2z\!KɐE,	vd(=Fǿ:Yj ?7"u@7Cگw	n)<Jn%cr|BORwzFgRvʞAĈKr$_+zoR~-YwdGd*l5d'H@jhH mdx
<"d6Ib
/%_G;O!q$C0FQB-aLYȖy1dJjĒ!vH@藑1ȔpHLC#	/FRUȒ`$'K St'
Fj2G!S#-ȑHOR]32._3)Bt+F62D9ȔIV\3r-zd!Od#Gl[ ٢wFA$1Kk&SQֵ(XȒ8(N:F	2?`"u+MZ2{`%p9V	'}0c9I)\=3.ߨJ
ǌ$]QLڄu{`%<G>Aрdq6"{pc%0-hJN;fd)}kNqd)=hIk_1ڐіlIfv(=jOiAI#okt&w!]ɣ+nQӝ A\/$0zهF_ȒO3|)vLPBCi#gp<GXx$jTz=1d0HOڗHgL$SٗId+g/~ɘBT~FIW_뙤KVk|N"YdH|mؘC,ʎ%K<2$3$K c>Wd^@|^H37d?2%q2XJ$2]NgƷ}LO%5VjrTkk* PHx=9J	o$Cc_5ya ]ٻdvv$_5vw(=CPze?ց:?@:dHe"]qG!|,C	j#G8YOI2?E0NZ⯍sƏ+;st%R<d_3.)qly`\&Kb
YLG$.0$0%y+9]']dJn$[ْoT7r:!S.9P~S%2Kk<"Sd*}yB+L3$48W_?ȒxIe_2~K0j'C>YJ?>SE8tY_hdٿ0Ȗ%^I_E~!CBp/v^J	Ȗ?ٲ%v%@L+)"dJ|(>,y_"CN!%]|WMH'd> 9?
'&Sl$!]
]!ɐ<
S$E*2yj%DD/ q7ґ_އ "l5B_?Y";btLEAn YǑkGAO/
.zdG!2%"d@QK<dB	J%Ru)M^a#G:8?O#H/|$\,%G52ž:Ql5պ"~Pt/P,GdA2_!Ј #v%AS2ŏ9bwќ,т58rd%'hME2%>C[ZuHUDėL_t!CɓyndK^+Acd)}EAo9}Rz׏lOb0ރȐ8ɑBgd)}Jg02z
'Ko꾑d(`ѤrԸǒ{A=2ρgȐɖSȒ_J4rM'Gf.~
3Q9Y1tef.sVz9j%Co#G,$GI'p/5!~%B22."]S,&[&#3,_#"./%Sɛ5Ε˱jޭ!c%C'>R@;+{lydJ^jo%KFo;⏱luE`wd%~eg+#p5ރ!8Lo(=~ 'G KK|d}oVJ?ďoΑ!GWg@g\$KD\"S\&G*gr_ݽFG:ْρn7z![.?#}lɟ	/rS+5d+9 ]2% ^krԼސ.A u#[yIĕxOe>bO<.N$}E_!{yR&gԨI/Ej2%l25YɤNMN8*j2*I7R&H13B:f,)z5`MTח5RL_J5A
'Iݚ^
dI}H)]}UjdH|"	_K8)`!td6YRg@^dK8R&~Աɖ粒%ZR\NdedK;YRMKg)Ed$6եM&5mN)&Եɑ9%[dVgq2^Im)$n]ۤ4ːV
d]
7! %nrϙ{O)rG܄R&SӜ )Qlf5Դcb7r'X#nd8Yd_-zd79b
Hވ)R&C	9ݥM9EԾIZ-đ}NߤKU"dmȖQ%]Ȑ ړTQw$t:8DgxN-)Tjdj89EOٸ|x#!lp*.?r&]⤋.
 e Yg.NR''nJiɑ7;0DpU3p,4Uw`:lHT|,♵qd	Ѵ	Uf,WDPdzr$Ҧ!FFHRNDr䍃DXdvg-o6dB%8W%d摩j_!]Oj+biUk2|877dʛ%mhIX[Bz~)BLU]N~K9s+K"C<,5dO
:2MLyq.o&2%s6rm!xm+yTџ=dBv2卋̵d*9"]<tUt5=dj^8!;@$S*ɔO;B\(9fB, {`dKƠ JQ#$]sL!G" =|=dr92ՇoΓ3pU	H*_"CLg	j=!C*+	է	T:9kU&9ٵ[o%^twj\wVp.PO!l>gJJ8{`S2uܞLu2$" CK2J^
Y끷dLޑOz=AhT#hQYٿRV\AXWVQqvâwC{HWZĪr#HdT yT+HPYX!GUv#J?grBd˼8Œ*(jB!ήYI^U *R䨊|
%B9EOEp.LU\*ZPdJ&g$KUS~U89rUFd'GUr)هz.E*Zy	Gg*>R+d*"C_Ua-vQ*U["7ݷ+\كf*%3˒*V
Ty>%KU+![gO*ȕU *d˾ٛ
a5U:ꋌdk骒TUɪCPdJ&#]I^ހ5_bFdJzc%rכ&MO^޼ߕ> C# Te,-ܚlU	kCL\ɵYdKf%xUHrpaNUÏtU&P4S2.]+(Ed
2;̄!2)sc:Z}}{=ydMMf*-Jh~:&_IiJݧ9O۪C̷Sn9dU !;ޕp]]USոp?x>/{ȸ=59xF::吏º'q 57M{?`Y>aJ"y=L羏瓵r>J+	<Oԡr
Ɏc圃d$qNOPNR$5>dMt|RUD8E~y*}*8u
!'p,Ul
h8p$  ip
O
r @C9N߾L}^	B$˕I]
F{ej1VNB:Y>9) 4AFQsIr|I[4xܦNtSsx
ܭ#߫qO5r
	p$P>(<$O\BIF<N"Q9T}8p;9$P'~IUO3jֳ9M8gOS8pEuKe-8}0S}A'}
}4,IslO6SaU.t7`ﳫ}9Y?$lN99898&?υ!Gb1,ax{U S<̭xG0	|ͫs9'6
$rG4|G YXtT2AgA¦C8?ƺ-^X-0"j~Q9IO %CAW/A
do)
Hϫ@,}I#kx5$ф4>ƾZNb
Us%ԯ}վB%٧-|>yOyFG"hAW$?uOxWl5UCG5 k!k~,9֒A|Rlsudɓ9ںp=缔:.˩'lCu
'Q<m
Tnʺ_Pc~%'<u8	<뵕
Dsk
6m ۩C~#wPVI2<
U9*
n
{r>R aWBA=CPK_h9HR<M`9CR?Puaj*#d9ّ{=ZF9F99Vu>N$g=I%,NW!gORTp
tU@?u,
lU{=O5Η<j9Y慪KUIZ$1PNWJ߇Og\>]N" ^Bݠd7OAoR'Ap<[EFUsC)wS7$yWߧ~
O'OrA!MH8=N5Q		'}
*	'5r4a=^>NyVyy]{Ao^|n/Z?)?Dy>Y55Hj|jM5?KM5/*	m*g?e>*$g|N
;Ux>w@-KH!KF#?>s@C!C> >>j@F?$p'.?CP>&Ok@W| .PCR!S!ˋ \gb*Y__\#/9</}×R6/	|&<ꨇO?eYꩇC̗A
QągͲr2$4VP(!WҀ܅9Kxʪoq!!iS4 9ysk@g<ϾJC嫫BrPgAC!kX[=XxSgߓCCLUH'g]X_
һj+
g#
Hj'I9Ox?ɕ5 [p~9g<}:D{k;F
y;5*k\gNuguH.}WuTU깛ɗ5RsP!Oa/|{GB#2 @jCIdzH~!CTI)cFr%?uďQ͹ڏU
A>^}$D5>$dd՜}$G?:EN<U:i\k>:S~lu=G窰oBs<D	.A/V#p}sLd+97xٕ*4xj9uѵj:y>U9
$y?<uoUyoSu{wj.YGO$?Q<+#?j_u:	4 oQ߇eGTH<N$*IHj<s?u<Niu3rhs2z_zIu|Y=<W49gjЯyMFu$GTR%)Ld
E,;d&PK	wBvM  q  PK  C:U            8   org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p.classYk`\q}ݻݕZH؆X!!ഺkid\EqȦ
}ԤaHMZ7	PJSJCB!mҤI_74m3͜syW^Y"SW&VS85L"x%X|7;Y;^MJӉ{RZ")R/N=|h`KpuVf#8Sp@1,pKGYyx z~`FpYOj 	1
LK6\C<7Ou(6	xa2[rSsmnCc7NLb}  9>ֿȾǇǆ&bc'v{_8E
N?wdp=CXhX?UMƺ{' 8
C'#|wIQS
F#9G܍HC
?Mxޑ<)m24>>ֿk[RTwh0YryJSS奥KJAiq2pl
35S}tane~li.ESK'JLܑ=C{6ov|9L0]Z..S^#
<#HFg,U<H$1zk8R//ʎB$al,OUfa2;_X;[̕gKJwJGFV_YM@KJXi~z\bĉy&lUPGKKތ4-]X\c#/TK)ںx|^*-acwL͕VWU\q2;^[nf]t
%w&ˬM,cM}\XYգQ0dizIɩEG=<]Z>"
@go]X.''YclXiq"Y2V6\<++GpDeb2idcd.&L@
 *.XX4
܋i
&ϠT2AStA4gQeѝ7u|^",U{[@lklz^ji|t'mFɦ2qr4tZl:N6!ϦCf$>&7~6ڴeͦvKl:FڴĤda2Ӧe6nr`MɦSMcPNLXE@h}t֢_sL~݂Q&fL~g|<	&O2
&O1yeOb'io2yo1f,c}Ѣ_O1y _R4_9X[l=<wpXb<;^W:6	zT+]C)HuSߓw'B{ oO?㐷%d|=	ÐI	
;ݐOB~^ 'Cޚț/	cAJW&䟆|UB[Ϣ	Y'wx"V?ˡM
?z<n2F[\t}ܦh9ŸM91e:Sx.8]R̸]YURfp32N:oV3qNzV|3Y:}ǳ<})]^ZAkÏhS=W_!rI#+ܗ
S?
FWP&(= Zw)ڌ15rt8mdF6ln#RlTMkL/]O\Άx%`v:ݛN3`= ؉
fcđژreDna5y\{5~yxus/:X^1xvկO~p1	TAݼτ960\o:Um)-jWvY"wYȕMY$\_Cz)U{k*f:}ɣԒu㌾lY6,G#Fe#G):sV׃՝C4lX/s"՞Nr.(g8LFrۈ,.8ȩc(rnݜHL&hE޾ف
ZhmwC>ٲWƹjs.o½?0H@㫴UkGpޭ
h*Er&W*x
ꯊm/a[W~OĆ=Q5@]0媹n>LEȫfJNiԎgi#鵲VR\-W򌲧j&W_u:\OՠhZ 
uZB i`B 6kL0Pc@k]=Bd"BPf4CU(~oK.t߫?\
 UXuDL B΋tvIe=H
!K(5F
Ή
$96N5
e'jFv-RC&)5!t.b!lCd@jF:7LkDJS)[B(#m\5ꅲ'Rz!HBMB)CE(7pGʎjʍBWUZמ,`?4ގ՝'=zE^7܋h݂x6-__TppUj/DsY/@!	llzt7lzY;қ~d!;rG-H1Y$lJ1bkl#8HE{la`&ԸG!-y-~:O1,M[IÍҤll1H&9?#&y?-i~&~$/V4X4jt6~M[Np9ENhx~ҤEWlp^*Mn&ؤÏa[t1&b&֥IزF?ՑY5ξ8Y6u\ptP]
)*¿xY{e'^looB{o>0eU%M=WMě)CkTj#[R>?;@ 9SwLo1zjWsTz<!`dIOܯ jNP#dijSeȑă!et#\Y;A7$l:鸣GX:CcXx=D;f+Cb	%8K!ZCUsu@9Rw#߃"S{:##o##bG^EGLOp/f{XEb4>&.	HM:ɘB

t*Nd`,i=LB!2 gb7_N,v
-<&<AY^u c_Y/
I_|0wjO'e֐hSNlAE{F?|s5UɃ~U|}O)j>(u\znBU\'E(vU]S"fF=XpӮ
t*gkwm%++pD7RNPta:Z6ڇr똿\b]?ih8'{to1̴g]m`]wa 鵢w^`-a&:R&'=gl}j~_r?QtG_qPAj
KH#\I\`ER_PhQ.y> ;,~ ]|PS}iF9rf';UDFŜA\8iyA}UE(Fa	z1qqI^܃{43yAҫj
~Q;[{$y"L;^[ޞJƩ9XYwN_;Nߗ?o5!B}1/:/BhjL.XsQc麻D׻jU./ӡS|7/ws)5j(L5m$Xð$*(ەwR'W0p4YRgI=O*#jv0(0iC>}.-8`/~:Q_[xiWEHX;8wNSghKw-PXt-Mpk!X=,@1RU0S0`/tZǣoZ0
GMJlSDxWi_
Mi
6AkxɅg>Rv3Ԇxd iʹ?Zp2n1ku;8,+I\$=?I_z<(#iW$' PKLy  $  PK  C:U            A   org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$Gaussian.classyX̣`T4!0"3h41+3S3+3,А4yu2%|kO_|p~{wk}(zNʣSP'
I42>AK5Ej]XPTP1 w?+	iɣRKN'1~LRfjCAIOFR#;;]׮]AyeTd%xVA#0757,w<pa^qYAE񃓺Z00TlGl(/69kFnveyYŕEUَؒ<GvUlvYUIEqliEny#=T[c=J@nQ*̒*ZO(-Jdق2.!Mz`"kNĈ꼌xd435_$w;m5
WEz55Hޕfo$Se"	5>_d껍HP굅"Ah$ҟEKïH"WF4pg\yHSE)VdG#w/Y}R2E
7Dn՗	i߹H'Dq@!FZ$n$yV>όm='c;x?H$AS=E=zHh?yz	TޔkځF4d$rF~+2Q^EzwɚȮc獴?틺nЉ6?(pO!v"ߓy-g"?b$n|0rψ	"m$f"ޜ!rkHQIEr}QKK%"g"S&OL.խ0FV+inG1=HߦEvFz9Fze-%2l>g^^}[}y|e,I?Oj,r,=#e\iid`KDpAz12xXw"'|dlȐӍķ=LrDOzH65Ry+?Iv>%߰eꆷe$FFFwYD02p#"
3/ȢFw|Wdψ_ENIti7uj ./Hĕ[d$5V&3Y2C=kLxg#7e)gJDpDgzS6HF˒2V0[+ٹt%IDJJN}{LIY%YbJ^OA_H\	ǉh&;eV&(g|V8ߋeWDݐ͉Usb,[ldzMD(w|-7$Bz~SEWI`-lfLK[W%o̼Q#VQQ9
7(r$QŬE.X'S<haDo+e$zE.-/ߕ rf`3CDJP[$ +k.vSd!9*br:#&R"12'qL朥$9Fr$ι(ݨJ;(+^խ;Ⱥ{E{\LorV5A$#Ae2]3y"֊lӡ2xG2vM\{9Fk0*{^΂ǣEm|Xz"L<9;"Ke-)WJE>VVK8ʐo(y:I2K"r~pD"g=)rnΟ[
cD~,?iu{S獎2@g㓒ǋ	[S[yW+#loͷRm;uVݶr򖕳so햷\ɰruӬ\s
+69]ne-2-;2-ָe[C|[.FᖛnqO=u.
QA>*G5Qw(Qa*D*UB{n_
&(z	/.*pULpVR_rZȞ9QoH*"
P)~shNe߿Q/T>uZ*zW#zE
;ytp4C9=	݈} +4R5i=B}eoj
Z+iOuw0ϰiaR<B7L8_U>at@i0]zX
u.N˺]:m'zgM#ealq7;~^WV:T8,']jSmW.@ѯ.`tTwM.E/)?U_Gw<Wy'(O	&BCC@_J'{ѿ7Ꞓዪ>%#[Mʩ?T `B  ք`T	M6BP JhpUDu%Bs_B^VfZ!$܉'BkTڠ'D""܅F B[TK#&t@Ep	a!
B4&=fb]bQ#tEJ=;ck	=x"EU>w	r}PM$E8E)?
	Q!#F50	k	<!CQ5:BauB"/	#Qӓ"	PkhTcQ$u(a*{*yB@xTPL#@:p?jo$kɨ9PmiK,lːԝ}Ry'cxf gG(DA4aB1FB	8B)Ba59TCȪBjTܥ6N <"Pr0Fu(f-Eb ,a.F|1T3G\z	̥O:\~SQ-f@uTӨ3W!b>|931נgpIWP1#`n@eƹs2K37{+̗bnCe
vv5WQ
c@`|N4s7*=|:Y܋`aǘo2V:f̷P@5yUf T3FuyswEX<*yY1O|71'$¯Q7gB*Ө3PO0?E0Q`~KzyƶE(d~ kTl7
od;Q"jOf`ɶ_Fݔ"3WlQc^E-P^C0u~uf#Bݙ7m-&.o#qxAI; j^_Шx&Ӷ{tf9kP:9! @`6AbCQ| t&G3Ѷ}2u涽jD >+l9o"m]9>f;_ԊI4/dۣPsӘtVs^5=O]m{7U*cӶkIvkf/}l}o>//*'g[@8yt72	~0`gOYމ9֏ $#PLPs :?gNt:MMS,t9 l25Frl}t&P-`MLpfeY:R2Ԝ_a%&>Uը2"8gxȖ[.|Xh˵,<mQ,G,',Z>ڬ2[~r
f|+miUϠVY>5ZQ}Ζ[n܈d/Yn܂ڬV[~r+9v[~rk1_坖,w6yn-aYgɟlMzz>B:zS?|PKW  6  PK  C:U            K   org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$QTesla3PPolynomial.classT۲5@44$!J܍Kqqwwwwq}{yc8d}ZfͪhN޹`7XPP;0ڎ=J#&!,1M~̳6)z$֎)||cǵE	}}EV{Nѣ41\bjJzJv1#[GLяE?^+![ݒrĜ쌴	Ms%׊T9cFNiuWZNdT&)ivKOk991;\==)%>iFLzsAم?م?Sһ0etKIOUf_fD_jr^n23|]R}EoFM)C6H^h qQ'v)4vf;'%/lѭմԿ1`fFJzv俯e$H!EIO-ДWL-+aR>;9;a)\ S{ NP9 lyu K :	l| V%wgN`tcͺ9
|=s!@ly -{`ZN[@A5 u `'zfd }(0cl݋[`^m ]K7]?a5dX$`9XoFAMs >	Մ 8oy;hG<r!t@i -
G B
Y otReK:0;
:-aF`h؍ 'y	P>aÀ
V@0f@+
>\jz+g4Ի<~f1x!;`! 
&F [L0uDY ̾?`n$m b,oXK^z2+d'6d\62n81.؝2Tޣ O ><eg .xx?>sD-c~\8Mwl? q+@	"5
?h
u7
z5
Ԕ@, c@V>0TLrx |
*L(Qa@ ezupXq`u #X-b's+@ -K6hBLNL~zS`Up	y@@ Љl|-ED
S&)- zl0`dHaqeLy1`vؼ , X և?vTG	-
pHLKy 'XN]p<Km[.h<WI n4C Bp4@EEl Fo#ǨK ?;#pȠfX gX`?H½ _B`=7HsNZAB +#l{x.7 |<QTP1AqA5Fj@
33BdƠR |tTJPzI 8"Dw%C/{M`=
cK/W Uw&DT&puL_
ނ,?}8H,g/A އ--=`َ85L#.|#hï [F v68< t&2Bo y&k!I<قzTI577< (eC ׅ|;`700f
 &a6'9]^= MAC2CsN	Pqu!`U702kj 3~l~A ɗ'"4@Z4F/
8	3NL\H2'`Y%y (f |JPRxLЧҭo|K03Ak1{\_ЧUyXJf?\p&s`y8-sP82sD5sԂ cTp˜'6S`6欕(lTs~WXp{9(-i 	q:Xr]2ݮP}<k%F\/m'0NX^,&ZF-BOЅ o؅ڊJ=n7?-#1̂aDO<Ye;K!RRZ@X0b %BüKu9].C`"Lr,I"par~Dd7uG8& (KW.oaU pQ^nAl76L:ZM[+sBOK+q0cJVJ Yi*V22+{y>o@X}GWYޠ,e
\b
>>n#=ָ.	'=b^`<xl:!Z;9%k{vX;=&ptk_.*PA¬cME9>qr!J鶩 gWB..'!mDn4\A-v(fYf:	`=ZBϷ ~Ϋ oY_OGX |֯} 6+;(*36Ͷ	?9Q氅e@l1O6π-qgv8w&@lu`$v
vd4ؕ[1kF\رm i	tɰ
i2V |vY]W,<@>=4{>B$G2 c, A6=i]Ki^-C95G.Omz")+m˽:+[`a^@V|p-R Pd44si@7 P<bIX x1a~M	2»"nc(I73;oØ&~Cr5T ~p$s{\Ә9TcqN%0KX7b>48,XN0 LVr`UN`	Nd0 	ؐS>
bS: ndNv;'~9'aT7'i
RșCzqD К3}|(g=bM%a+9gRc<Δ	F3g)\hp3%i-QqV5Eӏ޼g/= ys4,H΅v	|+߼~T
Bp 8CΓpeEśr^Ηy	!pb/2	e'b\yne x_\~"W腓pE%a^X
˕Ǻse~\eO"@]bQZT#
'zPܲ/ӽ*>Dϓ[#
415	pk߄u
m	LA6UIm~j=nTXۦ'~#q3OApU&Q	\C`I @>`A~]Ar`5wbtȹLtci%iӲhQw-0>w14~s?Ǹ smF
`y[׊wM#)P<r7zi-6[lMߜwk;hqw<yrwGيn*w{24Ǹ	( G:Q=v=~{r?ydS/Aqs
q)v<M)'z%pnk1C< u>;M{hQO.ۄjJH ),өԂnxB@]x5^wG+%Py?WR-&<L@Gsy"Rx1i`H^#h6B5 6>i>% p08@!܆1y yU^kź?믥3o|}KB&&'
4,^(y!%Dz͸NͿ୬c j84	ouMu%P6D>@s(ޮIA8T%}ૼ#xХ]ng	|^k}Ll*nF7	ϻ@8<7xce1my>چy??k|mFㇰDYx|@|t&]XS~IH7ҧekIU*"X ?~xdFA`?~l}4ymB ^F,D*wpwi N5D2
8RȌS4эᏛOMAw?1E3nC;vKPeE{0,:bg-Esiu>:.?{593|
W(7w->lM}8,^ي1Rm'c'I BC(_r\Bd%0	B'#Na!hdg+	!l"((-uAtTmxLzv	g$00NA^ȧXJA-~m?W|$lGTT{ق8S!n9 c[=Mг-oX_C@zam1>cH'&&f&Ce'``V$)u,Ǧ`E-0`uwdehG6C*lZIkԠ`:-{"؟@~OD2^
5Atłg8!xa@I.xUM'Ht\B$2'937}k	yr0B>U(=Jd"By	9AnVPM,[k	K
",ZTX䥰b԰J{SUiXXLB,U-¦h&U l5#;֡N@q
#L5&Щ)@ {/YQ	oҕ?</(ʨ&C"
GT	'bNN &07' q!VpsZiHK0-F8{8"\<q!\C\H,$p!fb$#ܶ쳷t[ri!8J}N ;g!Op R/$k\F}f&H7»ȃ{gqK@+tC!OCf~!_22,,,	"B'J	G-Ec:"&WpS1+
]ylӉ^"~+puQ(E?cJ5a:Q轋jE5
<"jlt X@*Wԯ8\4:Q^ߐ͢BxhZ&ƟMKwhG/T>/ʽML4?Eh#aB8R7D@ ňɧdS H[ᙢP*DB:^N=\Ki'6Eۃ%D_v#DF]AUe0 #3zX_*NM" cuX$q#KLAj%E-.[\8R.>-Ch
7M#[<ĭav[P'Ojw<2Gܹ?n$qjVN)@](D:..Y<X1+p("887Z<CxV/%_ѹ/[	GorIMg 'U )>ul
zV/ S\Z7pC|FG$jc97+2.ߕ m$?
?U"˿\&05dO_Pl\Fʖ0 %A)g	%	lK@=PD*Jd`~<#eX\!Obp
.D'0
ZbKؗ$ULxA	K"_ r%QM@)p?I%jtH*@TFS`;HFҴ#9-xOA#i"_$<t$i=l˜To$/AMKIdCq@2p;Dd>pJ$ӎ̬X̩zGZˡ$MHf#v$+a#U2,YS"Y;5d)PEErXɁCKYr2Jr~zVKQJ._G+Xr
"1 AUw.mD$**;s>6$/r䍏fFD3PRXR",TaHL0T8GxT*?'Roڳ(jf7BXv:E
QhI8*uKqA.B٤ Vu m#m}ۑvꄀvG`/%%4''u=pi?ZeL$;Ȍyt);3u91o>tǮ ;3QI.G}*=-J~vТ\.ͫ
Ɩ>0
Oǟ\YJ(}:pvҕ'p/|+6. x+82=dXpwL06sv5%n
>@\r'$hp{p_
UܬtfpA8ܲb9=@v
*8j]_I ӿ
"'8tpp"9WedAd>[nHmC!5@'xD/g=BOh
tM!/L)/=,u 
,ofZ&|(>u(	- cGh<%4iqoGF(`~OF#H^
.𣒒1b2b,Lv%S@=(S{2W!Q,t9VP.Gle.!rgp^WYi(Y	H
5[и5ĢŞf g%t^4JZPYo,VY/6Ar!e+bdasAC#]6tl1΂(sٺi\Gp-َ{v܀L}B(aٱr9Pɮ}ETn9C ԗ%%8"8=#3dOߡK#{	zҙ☖d_S!EZS irؾ^嬽Prn%rnӛP\5U/Q
]PȍArәS~`'B # ɭ	"-H4@Rd/xmxp	ye#Z^űNJ^6y4z=
&7N-ِ=U'K`-2<0*OJH_ bg@ȳ8J7
'@`if>$B>M>ԏJ>VXOH!G
":+G|^q44j/Ma(S@6kˑ
7\GoD/J9x'ǮΕZ_A7VDr	 ?-
PwbdK5'{S
FW`%f;wWq]
}5hYaj,0B)lS~
GWc}^TEH7Zsp[0y*9qEѤv|#%)\c+O[bMi%P\+ԙ"KSdGӽzZ(zϠ7Jy TUVLvubpl+)-bbf%rbk
4 ۫;Pz=󊃭Pm)Nř+rWBx(FWܜRYiO"C=܁O+(o(9$v@+>7)͂U2&Cp*cJV "NɿC)Qj2toDtfaJW$l>CY^<kUu먬oDVtҧZu}),)>Ck)FPSU
mȌa- r#l 	J9XT96VNxSʉ(|S9-륜!BOpAE6r3)r!_(cٔgz&٣<l<䠼Iww,6#7VL%x
A|"]?3uM*ѧ~B*LMbRQqaU\ԕ*9W\`QUrCVR	"be"UůU(P$
]YU3h#j΂UTՎ#dJ
T%+'͂:BJtʮ]3U/؝T8PaOկ@}ͣR!Ucq#ت	/h3o#ժfMͭ@$V|:YA(	~Zj̫xj_jPjgb?E աZHcvVs1?թ|4TyX) ő=DA=$Vk(Ջ1(U't#
ԭz@H!T2a#|򄯽ت Ձ1&5S	BS^!9SAja'BQ.cj	ԲbhUraLB7Q/jsp
Mj[gzƳS]UGrPT]E]4N+aTMJ]
:Qǩ <#Ė97J`-oVѨ"+huuuJk WwYDVޓLEgr	Lש{EJ{wzi_1l6d1QsWǧ6 f"/DgRzQ>ick%+ԫhu<D`5K۬֜o0ԹCx  SBSN}MMKp\YP?|CyvyG1].xLi	Ysed,$hV0Ԥ	@{x?kzFb@#X#ը&aQ4zv7h,h̟b҄j,qN8 ?Ը1SGF{4Q/ᇚͥ5@kʋЎTDTTs`Q4@4Ǜo~@"EbD-+b?})%4˸<gRMFt&.ڂH؇Fv>~2]XZzQkkF5cm4 .4PiG>L43AZkfPG;A3/3*f柮Ev4K^gj*[6ܷ 85gU2Gs/=
ͥdSD<A
ݫyz&yCE28ߙXAmPiK˺1k9ltܙ`~-߉)kEjš0VAJVݴSf1 R:Q+Gz>]\uFGzO}^K smI
זraR[B[~	N[]cHVC֨r\[Y0diL0Z@:UƢh@UX-6m(-fBiUJ"	[	=Ƚd%|	Lk[ֵ[6wِ4	#+(o e=F^*pР Ej߄,Ԟġ=nt}.յFT^H7BK3چڛ3oQjG#./#\F$("od͕'.4<䢿-ℒxkqb:):4LtFp >³A:c芷F\tuU,DЕ5;Z$6imAB:H5ͫ3Em
]1]I;uۄrR5$ˑBuzI0]yky~SI 	tc' su3>mu4h@\vzfA5Zzѭ܎ӭ/QҺ
вn$'肇A3#QmNnx@?^/l._]TwsMPnͦ7p'eOND^6'KɆƊ`1ެgLAGό"0g_:@%; qtUe!
Võ[Σ	!^9>2ԭ/~\dېZe()M㰫irN˖H
4}"T(X}G>eI"צ}NŐ}} =f~]WdqP'xA駴O@`I`R~~G-/^i	wGKGT	?ԯHѯ?~Ƽa-ې4۬	\CWDS0
c7;@;Ǉc#L53U%^31T0iz&:j=8	"ӽ<h٨JŤz
)o/~^/Hc<H(pQ4j4F[Џ2H2#(UGC3hPS/CD7
LHtC13+H`
CwCJ{t@Pi:P/NCk	FP;Cݽa5!CӥUZAYڙ"AMX,㱉~B:V'0Ֆ!ͻCz\r0.u$DC&1 s趛t񌛁4am^t0'"EԀ-kD6\~6{~aN
l]!*,Fx.:>5\X61l^qljgSP^lIK}>oCc` ލͭcȒ3 lGa%cRvQ27bFMe#F8pQOC1	|Ah5uŐw'4恑eZ?!pb8Z^Jöߥ2V5VcvzI]ScCc)ho%)Ƶ`)]'p]cA7fBm~Y}`$$BwB6L1N<6Ndg~Fƥ' 84t͐릂;rk<h$2jhoS1kSoWa<J@pu&QG!-<g^&{&q,o
NdlDI}Jh٤ʄ4M_6,03 X/Ջdleh`lS2P0eS֦P2jklzAݦ;F05Z-Ы	McJ)MJ1u"o>m"SNC0i1H,8[MɣS{Df GfO4-Zƴ)Yl[;QǙ6l
l6;;Z#M L{BQMWsbFx>jjS
toAZgGiSb'+$9\4=
!db:,
C"D2D>enHHc%bE	q{lsGZ7!ltCJ
FT|fHHOHyp&Qم4FsH!p!!BtE
IC7M?ut@
ɉ'sV!} 2>!Gg2#t1v;dt	@]B&B`?|(c!NCO$Cg2ݖ&cl-E7ur'ki!GrNø_
Z|욇sg-^?~[z<p},q4M9	y{	oi/B~U
R0 e@'|0\%/C,1+"_H[f0hn<e6ya	h߀:n,lvGZ7!w\7s!HjJL6<A"3>WsY![:hjCSdBPmsb<<8y5X6r:霕yh`s΃<s
慥ї0/߅MIʺHU)i^KǼ.|xa0ߏ5c|-j|
:MesAoK4'jf6BP_If\*_oRÃ	NVxU.L"6Bu%M

P%6!BKrC]Z;<*fjtGmP<:q*MP
m@	m>5DWh\~B]C;C;Q.-h<iR{)^hϡ4枣@B{_EX
$tp&2Q萳(BG@QE@v:?%t:-6@#{&88
]@36tiӇZbCWzM&MyjZu-@M+7A}<*1CmAˡG JCϳ{JŽ'CY<:BiWOC\EZA$f	ү^")T,0miv;4r)`{9E,BfρâҕFVa V3V&V}X}&ְ=2.7yX
;,\X>
F݃
	bXnZUaS67`(K@m]yTa@tn	;Wz>R.(7Wj~Qz-
/c2a
ȰǇaMaޡ#!b9S `>tk}l=<.䯰!S~bPM>4U,f`-_1[3`1f"RŐ݊bmc1;"-amhchYXlo1BS⚅X%#YX$n)izZT/S@kEbKL+^ͮ!- mciE]5K!4ӶvQsK|$K{k(sNA#YX,_cɪ="2h26,#8 s˸͖=QIYfȱ̺D7}ncAY@ٲHB
k$
e5b
l`l@ԒFC}p8r-8=bgڃ rclN#1Z5BIny$nyNFx1mp˻ۈ\GM,-_!6|#oy$Qδ%pyplJKEq-r:27	kI`r\^
	^D3OY#c ܱ=(<r@j/'rzDW kBK	"
oUvxs/(%<N	^
OXJ*<g<*|`{N	Fyp2|tWH
ᓖg:<TJV]y-OF$Y~M(Mg7oY
C'|W\w ~CNr*|&N~-	(|/ ßN
6ś^(Dn{._!E0hs<"Ȅ"4w#"#D0Ji#kqG{V:y8<" EFm.S!+s4FP
E$\#E$D#2*!#6Dd?-GtB>14g1}QJGDf|3b@>3bhvE, X\+XS"VvF2bgPJĆt
"?G<,q'fJtkILwgDn"
""ߤx2
%g?rQТ1=8`eDҴrKBZy ڭPVPx-A&o5ӡtC{cV;xAg.	\ꩆZ]S'XKZ2-Rs`:kZFU)Xk8Z֘A0a&*Y6رځ 

ZXnk<(@Z.X/ki5
ݢ. m4в@Rk^>ok"O3=ќch,X/ͨĭZ!,'+X X`	lMֵtMLt#@ʺu5Җuu9}pu =@tk`'hYO9HpRD(kwBR>ۉm}qMx+1҄}mƇʹJ``{5c:5l chٔ4cm8jQfXm3yV6=slwڬ`g؜	9ՠz@[sid*bkjB!fk6gkAֳ`֮*V[uh-[~HǶdu=eCjV#0t OoWб^ۘ "ۄ2攟 |X.l3XAY?ױܶE]{mK8(omK`?׶$mU]-ۺ(Tm~!wv5ۡp-ۉRtihv+=sj)v&$c;v-=sq0RmHk("ۭZG}>@Ʒm {\i{t􉛖 ?̛۳h^l[~ý]]i;0]nMb7uضG$nVGC=<a/ {=쥟+k/o1nBk&yDb?ܸҍ	,zzu~Pۓq1Mi4{t_4.7xg\-ۻ5GMmmF_/I`}v}XK}3FV}rda	'λϯim_0{.凰am_-,]R[蔎}
7٠A44ԃh`WGcGh?U':^טP oUB	DAr:
 3MNg@C8DYؒpwG!;#;akaop^@u	$!\R:Ee"/ "P.9G:zтsO)K`:]yMhd"GlOmJ$@y(sHjԑ5
Ȯ#'=Gw)Gr=ZW&p
yEG}sh
H/

Ú:F-E*q_1|Z2:|q~r̗#л=pu?'8Ǣ$opJG;,Bpll$1rױ1
u_t!O8dnqa'qK!8WA߽c!)8.Eh9q9l;dB6;CexUkV܅-ĲuwmB8۠30S r*v7"*;6d _uF^OEz9%gL%sgeg_Xwgg(UZB;zO`u+a(g`gM	<piLөwKl )h
N58;Ŝn?lltkylpqd4g\ Nt ęrZԙѕnYtZw$4nsM^=ס)iakyƍ"{b8]0WW@`$sr1>B
:}'F%	bc纓H%)M+!\3݁dݏ}Q8CRp9<zmf	4w|xL#:|U]2R(GmH ѝڠ=Ũw|+
@F W9dF2
y'AL`=dA츤H
.ĠK?{%ٰ+|*6D\ЮqY7!\R .{m岠s{]#CI(oB	1#8@
&iOSn?q%7wjR识2?¼nJ
wuOCJr/p}|W6'p
gpkd88kL.kgOĺ`5E_˵D!Z[1K%(ε'qmyK>Śkg>k8p>DTNY\`0ŵK6hQ\JZ<
ߒ}^#ps}έW/<͡?-Ae4M<X-	ME j$Ķ[3حcpJ"纍M^n3szj}8?l?vM= ۀ%?ՆA dܱ&8m I*6\@s@.?T:~N/%pgd^ZN[tz> q+Aιa=5y׸t	QR'	s@`	R{H
-Z,e /ݫ#ݫ{[JOPzeA_яrs_ނ0w_A`#6@6#ߦ|>t0}YkOt@<Ln"a]|CaCzxN]O7.:ģ v<#<9ǢC-SO.hCz<_ ov<C(a<b` Oi%XS67"x*BT>K
gO+OM#򗧖S8zGUA
2T{cV.2fl#'$atPFdEؓ}Т+`OoO	MQqxLeX3C3BSyݞ1c=L6!=S4P;Y+{̋%{g,.0,D#\澪V	8Ϛo`H϶F<;gxgz(<G?!xBTzNNG9J|!ysM1ma;<wut<<yW@<CW~ϧa< 0j!5W
#o70S/ĒW}	^WU= ٛ@#W_@`zh^Ӭ*a-t	:[Ax}Q	ǉV4{J`o5wH:a:oihy%!`-jbVf"כH_M~z;cHC)Qz3?o* 0qG	uw`-4^g#yGF;&wAzE{'\wQw)̙pzgO&wv}ƃs@ {&S>T'K49	, ox 6U5'P)SZu,Ĳw+Җޭ
	,'oN˽`{X.x
O[0i5˷(r
%
Hb
HcM8O>=ҧb;ƧOR{,xBRQ,=!|>FT
>ohﬞ/zb[8cX@רҖq)ti|)Zo"yǆXBuR~$pM2K%	׵ė3	Y}s?Kؐ
#F41 3D7!盔qߜM|[
[.ۤoqз2c4CGԾ	^;wN&@!5x{-!<|X=.}sߓOA#ڏ]<
UGI%uY'Wpj켌w\`>/?֡_"_ "%CC Zzo/&;N!~
8?t/ /_LǘągUhb
'w #pODv8`[ĎXz;w#ۙ0\J#Q'N<?e-z[V"?D+8
cЗ5KCXG-_wA<RͿ\˿GM "0
q 4🩁?
qYTS1,uSP j(~wr	/ oFCޤO}N"Ұadg8$7<$H0Ruzd:E!*HeHMCU։dO[##-ionݢ;#"]H_qdȨ(TEɊ,G)"+M!"k>2E6lDi@d\8Rd.w"ӘH݄hF\dPDZB9fđȉ?PDF9>JXkǚFnXO6X$h YUCdِsj+	'*.n<I*|y'E,,AkEyFqj`S)JNDDAGE7ue(9(glmL` $zYTx0Y
PE2nJQ+LAjԂb6EfQgb-t6:jBCDSTbVT
1*y;}UuTpGǐ
3̈ܨ^o,
^lG
CSȹQc@-G.qԌtY QKXSZ'HԺhLEO#c8LK9Ҩ#ިZQ'[C?GyLp34dԥK#G@n8wnBd7"
{QjzǄJG~:Ѹ+ُڳd fZP0Ps:apf#T2TB臜$dhL!YC`	Z[02B!2iCi`zя|s%sMa1E?W~яE?̵̪IaLzzrYYYYY6H핞5ɎOR/>i|Bj2\xJSdF(ߟ_8Fm!
f`9l(2p0x9`S
ALN4+9-w7E JRČ-rJfXdw(Y3LhPиF)1*Yqcz_+9XT22a
y
:?/|u/+0W9]d9
slPkk!!.NE"fZB0P٬0GT6+>kh==>^LF
yAѬ¥-6.Р hRLCBFy%{S2&ܬ$>_d|
e,+_h沂f
&BjP|gTGwFM
?pJs+bߩb0',o31:rEC3#;C\U)x?&wX
'7MNwrirDA#^_` EFQ7+sad\éW|%UߑA뫸EcѳGM6E0:UXV0蕅Cޥ
&he5Xx΍FͭsM#'#J«Xx6UNsZZV\E*BJ«E5pq"s^P
t3+ro7Nvs}Mٴ(ȜzQnnyo
%h3i<LSUx	CD^ƜAE"Vm?ԼU\;}^ @B@ ݃n=@pw;F^\=gɨQ64XfwΘrr|nrpMjlo_=
~ɛm:퉓M1<yʴ'.d0azz#ǯ17v`ߊ{5fO^N";|KOk_AO4rtS\KMtF$sHK%WKg÷5!NJ-eЭg_v.]?,x9%ם[&R0U!1I5޵6Oa(Mt%@7׊Z_Opi'nvR$MMEbJ;OH#̺p?ZkM3d&+E1Ңz#TvzE*U*]wFiUwf?nw11*Tv^9ȲsOvO1{F	L5&|¨11eGI<?jL)uUbb;&&EĤ,bbr4NLԾ)i&HubJR){=18)1Uz@'~
\bOLi71.-G	F&f@xib}.Ht3Pφ}213R213|5132131PJ⛍LČAb栲sb椛4g̃4/=3S3?щY,HnKgK"''fQ(YqYYc),M>[ebY%ˉYYfYϕ(d2=}*͵mau'f
2vQd,=k3]	YY=}]'f=^bP$f!
KX1K&pMbѺ?101RmNppb=hiݒc+T
61϶%?,1Z淧f݁xbv±LƢ݅]ٕ΋ٍ;AIg؛!y?&f_*'f?X|]bxި1e`Bo=f'l`pJ=f{٣h>khjSCWy(dxҧ=fOٓȜcd͞BPi8;=o3h7{&Ydu߳h2ϛ=ƪf#/'/ ^HfGM1{1ONKKo22˚DP2{9]^AeAWnr5ۚf.?S1{-HY~D7SZ-܊|Fg~]gQf]TǻI/mzxzd/Gma
}هqo1](-1?7$w>EUuyf!fY(<jyW}ڢf_}ff_vW̾F^yxHoP<웄s}^`wDf{_4(Sh(S̥f?%:T
gG|47%+wG|CҔu~O$?]dG
'L|_R/~H55ÅP4.9z6Sq#̆f#j{7&2?˟7l9
_nt"-Q3qt~̫flP~rk)mA6qomS1\<˷ۥhu{?4SJߛ!c`NOl<@G~i|HDANF;6;;;IApIEgٹ)O]{.`مO5>wguw<-F(Ӵt m}.I٥hܥoZ첤U)*+X߻+QWcLM]*
íc̮N];
he-bqwmw0fק`
(nv,t#=oc{g)nFMxۜxҪoDVt׭m)_5t8g݁#
U_T]hovWRnT)
{'C^Ԕ׽Px#ӑ?2dDAz0uuq()%0R6o	GPj=lf&V?CXB}8R)OO<Oם@:
O9_;z&g,M{\_͞GFןOS8B꫋<t/N%<^BJ}})AeIdœ?^AF	U7{5s
u-:7{mF꧛pUiPRJܽvP&޽.{"~Lfef~TσpttGHtc{ewO)/O	WOQy>MC}u'gɨቷ@HCieʊ͕W	yhA^6)
wɈ7ޣ)Oh!-G)N01]zO)(U}c{~}E7г=;i.@SgJmp#+NI}Y̟N?Nзy.=/z><i6eu"/Ƴ8KxG/KrY^W`<_x%62^Wn؃ëё_uw^$oν6M˷!m{ץluz4^޽!Ưt-Oalfzٙ>6Y(TYlzQ1~fxG޼99q7(z޼d|䬯\ )Zxdۜ![)m_Hf$Vc-
'o<e\h|-@@HJ_2=JƗުDz5{ou
G2
(
oMƗh][G8\[_X>E;14
>RKlۈ٘Mh(㈔Mqf(zևޖ.9+?[.!9mkmGN':%_}#NǼ	.䅓]ɨߒ33Tdo{}-MQvr6Ǽ}?yQ)ew  vm|B"Pa?*SWAM<WE[x?w{,wOx<+Bs'_UJ;
Wu:pLƻYD6߽i_Ρ('_u8|ں7(.#>Hw	cRw;tו{W]CQ:6ȫ.7ҷyD?fj[H'FK<u;Eڪϝwݍgs̻p/5>vhs{H~ma791\q	l{OSW=CW?K
9>/U_HIeeZ6W(_%9FN|_MZ[lަ~z.i{i2;}HVQo
p1	9{)Y`*9;鋧~IWkj7oɨ.?SR?/c{)3u/W:oG	Pn$'_Wx
!e'm{(ٜ}~@
~DOӴŵ9Ӱ}/"Y˫_"sT
7~_>x~-NM5X>&ÿ"ooSƻ~GlsOs?6os3z*T
_0,Ltmoo??
oe}V62vg'eouh?'񠟜mfH<@O__caiñ(=K1zg┌%p
K10KS2<*_Ri@Q~Hd{We2?*
'ըڜW'<Axg_MZ__iY.uu=z073R7~7*mL7kc 7#~2ͩ?
g[Slsߊ愿56s(*	;V=w$#mwf<J[؍;Y=h=	MAxۇ/9i?oA`2v!mJlz8:λD_p4=6ƧTǑN&I)Gع?u63hgWNS4/`fB"El)P?^J2|d]rJ+h^>Ŀ}
)u)77+7+O7ӕ_PJ$<ކ#~@qASP|tn=mNRR&Ӑ~"ԿR?>D@a<#珒S?F$?'zWx|)wi\Rgi>?GoT<HM|TWWר^S^ M}mʶ'^ߥfS=lNP>/>2xcBͯO@sSTMZ/Aפtoh￥k!;z{<#Ot4~2z7ql R$.")e<\"eQ0>uCP!%Cb2oµ:i0^	2 g}Xy|IPkTlOJ'2%7
]P%!05r?AcРh4i㙠M/г
m	zd>}G͇`LG*`1:3R_3ѱz3ӷ-NZBcJ ?f#,~0́c{D0'}g0~X0}>T0-`~ʆ`*6_iX_m{G.Xͅ`1 9n%KRUi<wz+Tɿd/+2+ҕ?+ѳV-WJx<XI:U`
 OUZzm\eT
֧m!6glHOKh}$`c&qMih~1u[P޷$o|lEUxߚ

ۗm
Q$؞߁R#} ;SyB[xޕXuލx'3؃\'e}]w޸>D#(~5>
oH=8W8;GpE`<$x"@^}8#x+8ppM:C[|GOV@Wq'$Bw2>$_u>=u:9d3ig&'8|.iyTUTs'Ҵ2y5$
r/WW__IUCi+km\Gx޿&U[Ȉomv
;kwҵ#n=m&<@^ 
~xabף4	ϏQ=AM}$]۟d
&<=CU,i͋牕@}"yз=6xtoRޢ8ަ>}X.
E4/~GT)t'4>%?M'|FCGuWk^%>|?0_H=Od)۾BV~JIN?_DC"tC3[BwP6!#<LJ>Kț?a',3	'm㱰LhX!sB<1d~uR6yax'l24
aDW=
aX߆ӑ:ӓ<3P3܇H+)3)ɟg,d+YIφ1sG8;
{L84);;7K'✟ }aAB,Jx$\8Uű5C䕯(KX5|ˑ]p\y"Xpe*4~Wl \[5ppM<a4U{-Ҷkӱ9C0kzd1T
?1ڼ7?S9nBUGZyؔ5qsx'[-\&|nCmKWݎ3/;PwjDY3ebz7R1Dxo{5
"'&'p_9GU؟?p}  :Ʒa2UC_R}:</	mSQ^z/b|K|'xb\D"]w'RN<JQ?r:?W?Or]l9wQV瓷&r!"Ťm')/_8@_FEyDM|y9=dO#?\CIx-yx|@`Dx#ꝜUϛ/S(wӖNJ.݄z=6{i'S.#%>HWu{a#dGc86OϞ+<?I=EQ?MYyyy@})y
D
W/QLW
|=;` IK|۔l~~ޥG[s}߇lW>&}BYy_uJWJs4_R_1|@@uHOYKzG2?~&%W"7<w:dwrCx;rp,K%ZF>U;D}o1G%'QLx<J24-;ʐGD9ʆ(cDB㛨Hp/Q
YATh}AŨk<iYG
b}@~6uQ!;D]6A'ovhX(۾MO~@N
c=}403%;xֿ,tTlϋfõ~fjmF4yќdlόµn<CKpGpOd5Z hAzz0?ZK(uh1\]80ZGq-E-Mh{Y<oqyj
ֿъ4h)O+3QWa{i
;EkFWĕIkGжyKpcO;CS؀!5ۿdFzco3Mf܈SzmIh+86v8_(턣LB<ڕpW;psOC^DG{RU|Җݏb2>#8ks-:p(m0
\p#DGRU
1l%'h{tt<tCD$J4PW~O%k0:Ci~ANx;Yl"<Ht.}=4dF&=/P8pE$ҶDQ]6+ql.DWVa\ϵudi@^H$vn&na@FJur']⡻oKzwTtm/$zH<0#W}{cѓU杻gO!+>{m5W^W/ѵ},z+4﫤QO4T7ioR}&9]g}@GsC2v~>з}'XTgtk|AU|I]O6'߀[w =,LZ<
}+x7l/ mI'/⃿8c#NƷGg5
qHGl?cZ6oӸbYsN#>4wyӸH(X23:UJ6bnu7:E[ o}7)XqW~';.5Aܣh<x5gHψcgLha=3+=C<gv*#woEL<7E=ͣx^
[|xtd):30ƋXEiċQQ(?ϗk</E[y]5^X_x8^T<%{ȏiZǫj4)~AKE(^b<YxmZ:w2/7 o<oHd.7"<mBh{O<PW)ޜLd۾oIV݊5%yrs[|vdmSQ@xGwx'\{g\{
Ư4mĻNw8c<I$&@8Kͥx?|Ž?s ey y J6?	u!CIŇQ&4~'AZ}~$
QGGk|Kqd	8Ӊt$zSʟSO#V %$gᪿ/\ry#1/b{I|!mEtl	oPW?_J.czO">w9w%i*";WS)O_G89۾@VFj6hOn[[@|q+ymOo<AF}y'.x=t/'QGZw?)  h)/!9?JOuOW?MC~Ysy6(_/DJLOBJS<
zT7ɪ^o*oSOCW}{4mߧ.~@OuL#q
-cz'Tק	S?*y;_RWMQx1ߓV~>OijnBlh+9}7:'/"o?8Wyh+7~kWSWF?)N
|K]
O)O|RGH&~o
OMI_,~)sOSo/3V
|]
|)~4uo)k{K"~&%~j~)+J+~)M)[JJ[
xٖ-E);KERGHzX
R7ߝJ
\ ~e'/5OWo ~)sJNw} ~meO
RW?Rg>IR/pK]\
IRwzwח*7B
)÷/$~G)+ägco/`c)So(~4Z
)+_Kw?AJ
RwSRsRssOM_
ƶRǯJ_^^
)}DvwbBAC	lCrgL 4sǵ9MPH"}(R '&s?lmsb@_JHѝ)9P0tN)ާS9LNR6Ic9琓\JR4@@/m\Hǘعӕ(Kh71d'gy9y +KIўL`J6	kچ$۹Xq@YHJDZu1s))o.Emx>9s(KwђwӔJz^"{2QON\䕿l81/,<k
)h5)'P^|<IE?@XLoyi	I&xp/V}^!
ypm;1:S
y:oҐ?o}ަ"|KEuxmt(|H&m
ۤqP/|JE~O,eg6>Jor>o
mXηTH	)l4Pi/~ų;)Oxb})|)X]")s=R4q[?1))
S4L:CA,Y7GK
<Y-Zn%Wn2mv[%'E-RSAltlr[wnO=?RӐr@GJ!RHOGY~OOUFJII8Mß;3e=rY	Sx$})B "rNb)UwnZRC[yH?)3ǓRsD!R.LOEhE)ZѓbwqR.A(,EV~,MWu^_]᪎RWi8vW!J8R#E*4$_:) 41\@ԵHI6uevRv%kGM8Zc(PP6	\аm)7&/%&x8Z릤lw7÷9nNWuOOdK%=w+Tm.nGMX;+	\8؉p3pm~Wznt/RANJ=({Q{)U}'W'R]n'n@| z}0|)>9X|G+#i	G+/GS<KO=w<U)O{"CRc|Lt*42x3(Og(gQn&!#ET?<#\bo"KȈ?. <\FlsĝDZ_@lJB*ŁKUk+Q/\O %
O27S܂+J,F,NK''pNB]lpU%~̐~I>zi/$m>DdQv|Q<iR?IC8}i23TgQ?O$z"KӗJOy|p:́7+7q*o㩞PVGW|>Ii$'p
)?"'OiS+d_9;_3zCJs{'?R/D$''pQW~ANOP?EC8Vg!%ťKWPiJ!\BzRE茩Hɗ)+tP0KO)k/(^/JZ`A2rRWh_ګKQؠ'%m-:RIء#Eb_=_
+h#7-0"ÿ7#3K9в~F+/Rf×brvZVo$e7M)k}`
|)禠CI^Ji )B%BqUEI(ŋ_KÒRDcizR.C[Je	]ȯ]+I2)ZWg[}#ou:R|AIENuMNzhJRE&!ץxÓz}1䍇
GR4^3>62v8B])U7*%|oo\%[ѳ_m(m)Y{Q=E)pw<HVۉ;ӷBK](K=ĞHW{z6}	2."P^`BUqJ,a_I}8	Q <M_C[KzGAu;O;q"KI><Gs*4|tڪTU3)*gSΦ+\2<Χ.~|!9۟Ȩ.|Od^B>W}{yǼID˓^A^8޿PIpr
9ٵTד9e
|F
MÛqO2[mAZucwލ:CWJ{ȿT}dUV=0pmQbcxR?N^e <EG_?CFq&stH'^ĵ9D]Py~Gx5zuzǛԅϷȪoSj˻Gux*jM!T>)mg*M~qsRd/ii|Eh{5p
EǷ9wSU%_x'şi)__gs~C/:tPӡ#KKB>)JR0dЌ(J1)
RA))8RJI)%f2< ,/R@V񤘅5RL&xoЖI,%cm}C=bã'w!RRNGSJ	O#/DRnD ̴0NJ~΂k󿔸W>geNVȑ4䍷9ۼ"g<
c)Tŗ}>2E	L/%ĪBkaZRX/BSZX%]KёyiJR/CZeK!W<+PQ>]_^+EtK
VW'-EG8\_'ZR0M_.eó>ekYtjRnH<%u#dMy
3^7#'%ԍw*<lE(%ԥ݆p-)@Vi+ޝ؞/.ԤpߕHq;{|Obދ7orsRKEڏxUd1N=s(|e)%|@#uߣ(ϣi(c)cGS~Oz@QHWq'4S(S}N#NJ3KgQK	}))%G,O,?/ R~/,EŤǉKUKm/DGup%/WW\MU
k@P|u=8
T	7
Ooœ6|i
w*W8{ɏ䄟@ϿxrARR?D_H~X()1
)* R_Bx
4pY,9O@]}"]%/~_ns
W:x_Im;˻H>udˏk^}Bl?~t_В_2__QҼ
[|;ԅ?~"'3}͋_kJFQ&_5_KӒа_YhIYӒ4` u'%`Dpԥ L3M36/mO<
)gRpIKXRhVJy
'8R&) 뤭AMR>'ݧMQ))/xR@K'2q@Q/E`XÑBzFRD_
˿4#p5<_yI^9HI:'i){a}M_~&_yi<棯OUZ^QzazEE]ⴕ%ȩKx)Jԥ,]Hbyb)W#EhI2Yo
j4^kPU^GJi&:p))/:]XGQZ@CW
(HX
6 ؘ	-k}Szfdhߜ[дylI[{ې&c<$Ilrr8g.]_v#/Elo=݋7)_Jؗt+RѲyL(u2moF`O;}$)#MJCM8OU^$ ꏓO&N'|JY}~:rm}&)Ϣz/{Ny<>{pr!pxmbr꫉UK@~^JW}. -{%9)ݯ"R^
k	oW>'?l
n$'nn(ٷPJEyS<zN7pp/]d} _x~\Ctl(G#>}x	ۓTtHO
Gҵ"xK
׋/R/S^!ms8xOu~p:oޤk\9m;4%%G_Kχ{ᨮS؜>"}BM|);3r%E+rk:oEߑ}}#3=/`W/NMs
ޟȊ!^ο})]|kQ'ou	ZR<&)#)cR^HK1!`YR~#ӑr@M
"
)Kd,2+#ax!WU듰NaGyUئm0А·KM)qLВuk8y)U\3P8FHx=+J	?%pRPf$ExGH?{8'3sӓw|)t(E|8ROG>U"P$E"DR/
R.FK
)~%hH$e)-4)):'粄R.GF	X^+)Εh/%*d]X~_ Xy)BGS>פ|,<E]XP%^3ǳ}%@݀ܐc+7&e{N	=wپnFJڜ)nAmIp+tmp׶?Q5'}wnS_v"-LGy܅+5o7/^M/%>WS}#TR H(|DNJ	!RJ_(8p<Ox8H"w
d7ǐS]S~&T_O*I8ꯓm	O*E`{DxtZzYtԟsqd+3uж}/tS&/ w(
WЕ:⭫R=gs*޿x:*R__ก⽑um;))os)prMu;ENJ]Tŋw_CN@uLS|p?u4Omz#TG)#+'_pxOR]yi32p	G/^$DK29J4O^ur7~IFu~۔Psi.=zŁR)(S.PU>~JN~FN^sҶ_oe5<-;jq??~b&_Wb2oDu?WrW'+CVdK鑖)tRԤ(J9r2EI4)3PM9z(Oè@,Ej_)oRT+a24[Gu:ƻQ'jKA""gx:xRVvє"O
HECԤ͝hzkjhU)Jgbfb`Ls4K4;
Ѭ
ltJ99PJ9II>'5w.RPMJy(I=/m;__ϛ4Z 
{a<oϢDb䥼]KЗbyIGKQP~&c87p,)w9*R%_ޕK)2Eſ
җhu"=g
R4'oMR_PXk*֥&_:X:W$C4DRPoDV8W~nBIG^8ٔuhs<yr4 ߒbk~RoKOJp+O;P>vđ279˿
]ivNMMhO|)"/ޤ>R|KM~4iHY~ @AT>G_48@0Ҷ'DSjor(䄿c(II|,y8TNRzHNDJ|iƧdx>L,6*ss)(9/:ps]BƋEk3$Dj%4>M"?/_JRU4ŵd
|;Fn /o(޺p~39wY)o%FzNZt%)勞<E]
컉O*<&	P@{Py}_~_Uգ8h/|>A &Sx_|yOyyEzRDNX|
e*5ͣȨo_~yX}>)x=7>_T^DO}:1xOI?9<}KjW߯Ɉ?a:}KAG[yg2i7~GBK}+h骯'ߔH9<]rі'%a@>Z<qD^
WJM#N30CY,=W#"5YFVq#wtLә AKpv!8,ŝCpw,-=Ѧ}{;.)Y"'?@P0L!TKLCUz3,8hԇР&8JQBI^k1m8eIEI.Xa6%g$9csREy!1	ι)<g^RQ$ЛPh]MZ.7",JVr~1򒤋S4]baI;K.Ÿz2%q"yy	)j
%W]v݉Ǖ(kʴ${߼haU2ъVgA9NXZڤnuHO"{%g~'п_OaFFiƴ&>02 qisGa
mԬ-KnɨvlŰDjے:=gaq^i[;qݝI.+ڍ ѿ;}Q=)KE0{:`%~$m'HvHK *`Ň?7WFz=D%v"u)͠$1$%o?OmG~?=8y?;jtitп3(og2.U;=A;[璗>~O+h1o渐}io&q{)a׹\A>竨אGג(IZ725&}35jЭ$\o}SA>~ΰ:xթH/wӲ%/_	3KrGv_>罹n?@!|8>Lޛ)Fx8=F-gOPo$k"m_>MKzz,i<qn(KHY%4Ӟ7M*[`}͠zi]{|}H-C2Gd6|L{?SJ3z98#_H~+Rk[w4恵k?0b$DR!=3QR~'k`,7ßd_|Hi߿4tfNѝ</~$)υ׉	ݩ}PK QQ   PK  C:U            8   org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p.classY
t\uOw>])Zj026^,dc˒FKAvEup҆iiViC%
MKC)-M4I6i {ݙޮiHwܙΝ/=ݤ4DJ[UuT
Rzգ |^QVUHM_O!-=p݀Bfz` 3l{4Ҭ$ԁPv:"$ ()A(A|dG6BQLotrbWŌy$xPi2"FƸYU!?9'],7MDx,[82"֦驙6Hwhޑ{}w
ɘOg9з.=sHphM
|`W];w޳kfc=cxν;G3;0:bzBۡPJĮ+ 3|l`׾p=c;w߁IjxNlhg֯Sa/SRbqڵk\~a|%8e|0~졩B7KLF
sdٹ}}=;n\wԡӅú
٠C|0>;Q?0=5rFKfӇ<RA:Sg@gj,dǡԜBSLb·όfg25S9U*Mg&ߟ}ebpHV*JYu7N{܈*[o)<P](
;}`[1wOft]45^~^{FYX[Vߑ/w>2T|o35upbeWE"css"XRzh~:@gJ!8 =sVl;kc}0V<+x<ޢy65Q.ptәFw
f<=d07uA30XɠAy 4YvO^`pԮ|*~X"IH<@HH<@H`P
xz눏N*˒MaN4)gRޤ&4iҤ)>hҽ&!׆Gwކ}27W`uz(.rFc2=:4N	P
FɡQ9Tfw9jqh:tQC{ݡRCJU
SC?C?nf*fhC1*5rC)!ΡqhgMWm"}ۦ
MA
.|3x39`^fW^aaӗk6]W
ew^c?2MI߲9>~쫾ٙb)?Sڗm307/&T{GJ#wA| jV
(qP
T>!Y菃~O	зg@ZGmu"uIЛcѧ@޼]Fo_FQG~ݽi|.
ui^[G'yyrq6!4b"׵>/EXN&9h-nkPBtHscƒMD쮔sJW%ngMFu֖U#{Qs2ezQt(
POWzj9,U_	z"ee)W+eb#'REAmIEAњ29xFQV*b(v^ߠ
E?M_^mx7s		8M_7F #mɨl4&&+]fRZbmg.0Ԕv
qIPF`L
MzyĞBBVT%夢I/	LŽloo<j~7Mz+՘Ҙ(T+J4_$cH`x85@/&e/51h}E%`Um"Ed>+j60"|*}<WEƷDOeᖿ0S	*ܷ7in"_R߅/ID0qޖ4HIIIIcɤfIo8i߸Ή@
ɔΨ850ƎN*L5B0P*%D\~+¦l[gZ/bYN l`9
ΡTG1݋ݔ,O-O}ˮ&
R%1F15kYKIgyFngtѲ	2YafM7ԔWɋA\W]_)_giӠ[e6FXxJ>\h#(ii:'ͷ@h_T==qk<Z]pL\MrhuHC.9&K0a5>`	%>b9Y>fBk<GHD&5^LHي[Z!OH#WF^RHm&^Fy~5i45I"쑚1
i	c>m8 e-K]"*v-65\$CQ@BX|aDB1~HEl
fyi<cAj\d'|xn@Pl*F(7s!EMFPnBf[ڡܕnPp1!Tb59dREXtk*\*abjlGb^5hƶJTjlK8=5\mHFJ,M!is![_dfYMwO*kڗeS;5TQI,QR?T75R4(U7*D{Q`O>ڹRZ]A5(
qίR?@i5Ѿ%*BT`׏3CXQohCXMPxH(6S+XY[0V
?/\ߠ)
F
yz<&{\Vר1ԉH\Bmc5.O.*iVȌAf-lc}7H/͆kL: uBYݲ]%-LwZ/ 'ȉIR>%+S5(kvjdYFd]Nd]~9:]6v;p6oլyqCk8@6/b51`9޾8W֘Fv4lY"([lϐ{"M@.Ai/_Frcֺ QFR4FrыԸN΋鵮 Q8JjM)isQjxX֢ҥ]Q^BK~;mȟQKnx|/'6/j\>K<-A$_Yv#"j	;!ʬxYkǴ'af>e^	rþrD)kRdm}{ɨIoH.2V֫)5"#W(<e}8^D|,\'<oو=[`$#g$#Xm4c^;Aԏe4EVJ\ImTGpMB3mx)Y`[敫Ib
yx"#?9UfIOɴHmnܐ8.]'Jto%?z^r:`Y>EHU~;Zq3'"41.V?Ea>FʰO<TH6;=(Z`ȧ)hRIrϐ]wMC+ե1od9(#
%}a+mte5"Ie×'U孒˻$je<n3HoOD{éOa^Ҝh8ZDi[<
w-u<08
ʷ	~}6Mjk䓍.JaN
͟j8W7jZNiпNTnn<#S["nF.Fmm
,V[`GsZS'EPKw(g>k
S_-=P\e5RQb)<5 YS(pOҁ9q.ts8#M?y)ؒu<P!dO0}]6b܇<ɷ9k7HI\-LBrZ@I{]K #G7>Eȥ\k-R+Rqse[~9w@)Ik_L[;
X~=m&{iz]NE}fKIPK6   !  PK
    D:U            +   org/bouncycastle/pqc/legacy/crypto/rainbow/PK  C:U            6   org/bouncycastle/pqc/legacy/crypto/rainbow/Layer.classUoWBI&~vHIRϤdc/z'UB8DEQVVU?"BMgn ̛͛7󿏾	c!Y@,>Hd5Ϛe22&(t25/1Ôrb*Xm92x\1_Tϟ-sW\J@XY3v2+XssdViA`S
7_e9YAŢ=ZT2K2$IMiZm-WVdљv;҂[kK+v*+tRMN/P2|pZHT˹P+d.Xd4_$V<S89l-U/X+R^eSʘ ] \9SZKP9[,_|7}:Ztتc}:^ב0c6'=644ųbCb`Z
j`kv3a8
|؅1
~v4 Z3kkXBb8pISaatc Li3g12u|)30F/e0J_MvfJ6C:||)6$5Dm
I]ZFҀ	d
O\@_khkڧ+H'J$ _XsD$DD[D"\}?&=HDrPJB&IkOpϬ6e ~Y
{5S3 /.㈿W7ufYnYS6ݦPgoڟ7?ϔ~i򥘺2$&d'II
75O/{pkFPG: "$Yb*4>U7U*:RLp.(0ͭQ}?|ӨAORF:`2XLhjOI0~r;U{%zH<}>S&s!9~pp%w已YL\IG]jT,Glptskt<:h>,xBp;brdw}lm< -RSgCwq{q;{n==Oq
gbI^4ݎsz!nӣD"8G mrI\}G:!:`d}XG %YtvoST(rmˁY.d\-[ǬkLz:
1^2
?PK?%  W
  PK  C:U            O   org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyGenerationParameters.classRMK@mT&zkb^{
mHxGPa̼fe_ KPn>A'F\3&\qZ1rDbYR54T	zƳSpT,E1	阏X}%O5E{eԂib"I7є3^XIw㦻앫?,V8(8(V
UlXE]q D}J_uG+&{avF;zzB(2}F{DPK'܃*    PK  C:U            H   org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyPairGenerator.classVYxG#i$y0)V	
DPJ
1P;P+uk`lditq6](]a1']m.$m/ҷ>k}}?R;#Y&Ĵ|sΝsvϽoi Opmv	pmgID:2d0O;_UpܴZE"lZ3%%NخsK:7H5n /!,ą Q^p7vzclj83FlH*1zp,rz:DE6ry)9kl}|%Ѫsv#u(o@O3.cؚ*䍲)O%fQ%H0rzAN|髧8Ӳ\ WF8p13pP(ی<Eq;K%z_^)> R49ʷٞ>U>i
98㠙4Uwb3'
	9!^ȐB\>2z7J15|0Հ;a9bw%u%k7g9lywu"}T\:Ք8hJi+v[ן[Y I#7NmFoz0iKmf	KXfRԊ2ݟ-ome놬,Hy;ncy.=T<Ks߆-Ӱ;|:k2쎴Yna`玸rн.ޫ>˃)=͢
!-2WVL6H
$|@
lSФ!PS4+xXBM&ݞr.rdpVdd,?颛ζ.󷰳6~ȃEByR/ͷ^l+jU|Jo;TT܅U-TQŰa9.VU|+T<n h`æn52eȰ~*"¡"Z?5pg*BUQJ!xUOzTQqq`W}8\8̐ac230a12
CO0eQ<G	}>ct`sg÷=؋o1|9$0|a&qxdxw=x_`?W5g
%/ӓ^ɼ:ܪ<wg`'%"cƍ@OUﬠRZeQjAYr橫zK]^E[Je"$~qO❵t
pA&y'BИ¾qyi<OIe
wXL=D.xƙIu
뢓E2
b)LѺH*~i?ǘž<_qK<X!̭ގID.TZ"u
Pi$%շ`'r68Fh߶r%_G}r®ىφ⚝~GFd?Gֱ~OfDq4S[}Tz%%]"`^gnebr:gt,t99/tz.!洦S;u7fc/[ˉQ!Zlc$~_<aJl]a+XFkeZ>P
]CRGjBfq_p	ȉw*'*Wrӣ3ռ	\wKzt;dBV}Osڎ	'r"4(
:4_\ǵ@)x̵z5h*4_WԢhP	Ѻ*[+x}=.'Ӄi=|֪x3Qw+1uZ)\G?!*P.UhyC%p.V|P$ﶒ]УAE؜#XU+"]XHݥꄆO{'CDň5FNF_lQ(ˉ*/Qd^-esժh(x[>VWٰ5QOQ7ObUųjDMz }|~:Ñ}W殍)T@A']Z\I#G$ݙ}-][1uw6K%͠wg
]{Z?ydO|gIa㇡uI?nǢ[t4BL1n^dCN85'UM	SS.E.ͥ)g_
39J\sյaӂs`!#
'ᱹjk.gEd$tXE^ βILՋ3PKwy    PK  C:U            E   org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyParameters.classeON@#Ǝ	IE
(&QP\NR3C	DQ(kG$ݙH	?l1cżiY.^iy3D/c-]+.k0juU)r7LYe5U!0nAa'Bb0E /iBhPF"S'wo CD=W56PK=h   <  PK  C:U            B   org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowParameters.classRMo@u\7)NMU/@TE0%RTUq[&;*QUTHBcZ$.vg͛ BN	z5ֺ۵]ڽ'5.>bSf@gaߠAjSBVhL@V[{:tUϪr%0|;U&j6.3anXwbβu+^X+l%.
wl7G[FB7,bwqίC>i0^o۴*<40tŸk۸=M8b%·֝ZF`4
TH!-A8$\`
pI2+^lfgMp88
΁9߃"Lbat+,ՒIYiгf=O7!_*!@L*2
G
$uHP
_ 9|XUfkrWQCL6$d׷(Ed t}1wH(#Ch@nD9aPqɈXX}&ܳdgdPKDOr    PK  C:U            L   org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPrivateKeyParameters.classRJP=Ij׸k6%Iq }>SX_) ?J/93s2g.7	`~[IZLME
8R-1iF{r2m?XFnVhX~xxo:n{6.y+
cZ66\J:)TQ<&_V:b3-,W	wv;wZf`w-G	{trn*Ы*&ѣBE~YP8!BYs9,pXԋ),nzuKTBF:f%ӜLc!bo4Y?&gzU6#1M49BiWG y'nPxI!dȫmykJ[ڽ֖G0E.Ѹ)?PK/?  z  PK  C:U            K   org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPublicKeyParameters.classN@@~deHƥqAܠ$.t5CӤ01}+M$&.| xƍMs{ϙs):Q~`4>Q3/s~OVE('YǊG`L>Wl7N+Օ6\jka8ȗt&_\$P4
Ž`>:7d2?H97{e
-u1aPǶ.;Q%Hѭu9KI3tHIl+ړZvXѩ)DF44vOTm72_PKPS";    PK  C:U            >   org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowSigner.classVsgJdݴjDICe9JlJqNTv+U..еV6Wr-.R5@Bib.34f` O&NG#=߹gۿ[9pcOptؘH
id#=Gq$"<g
VvMThҮ'
ӰdOM'F1h`1յɬF9Emlo`"+d".#KHVhr$](\dHB+녃|;lW$mjj8ԨqzZ@gF7fI#cjVS:2PN>YҦHH5xɴ
:̔lBsnfڎHR!vX3xVft̸fN?I=M68|*eԤRƘ>G99dLY-Ldx.-#G-HMZu-=ba#q\3E}T/>zQ7I1KuϔV>&|<Ycc#&|*KR/i8gUtDSY2zڰ7kcO#dafPS82^[tNYCQi2ks`z	ђed#C|G̣ڜm[3GG}l)3b9W[|ie-P6nמH×JZ.DJXc#Xl̍`_gYc Y`L
5^ %JxHB="JI/င'$%Km{G73:ւftܥpBN&In9ȯ=0	sza{@^rvy>ٯ@GЩlUpÄGp*CC!Q6t1`IAací`PWA >~C
Ǘ솦 IN#0Š3L3dd$5cqY'u'27d$a0\`Pq
e<!Pd)#<%L^bc3l8,rStC9hiҲ%k,}qT˟{Hi=M :5jk PUl^"6C(,UW:B+x-Μ]{K}B@/^KIģW?{Opr,Է.U^	_Etn
fv&SDBe/m"wJdV7x̹hë7=ct
$uax6~L֯ǝe^zZQEW|%v|"
տ4=6ϫc֨<
Oͧa$mhxu0ܾM.rNotP
~owg눹B@
~ξT_^>MO\l#WDph*~r_ 񃀸GHҶol	HT)|ST?)cMKkq7'c;I(ꋾuE>G̫z߁E^ur]=ű|? Z	_FWi	JN9F*uvןvtl',ؒ"5l}mTU?߽u=6ZSRAL8}F{o
jmno#15SEY׿ZJݸjD[u~T*UGTр$"Mov}?pqF{=V
3uƗr-

L$CQRxgItI^;9θ_UYu-`Rcj;aӯJ^U_{~IzU7TE*ٟX\*'лM&*O{?[`/\Ul2=[P[)5^CzaKi!zg1^kOBc9SP)G׫
P
6PKCGگ    PK
    D:U            0   org/bouncycastle/pqc/legacy/crypto/rainbow/util/PK  C:U            D   org/bouncycastle/pqc/legacy/crypto/rainbow/util/ComputeInField.classU_l[W^4ɚwkj{uVخv.	6K6-uKؙ}$yCb(BdSO4iHW*sνvڂDs}统ppl<h!'l8i#&NBzAL-J-\]H_%+JlN]*mZ(刴d^ČLRzJ^rjUj@a57r6=\.I,/7-7Y"elSsk5ZK%r|[zkʱYoQZQf}&\-La)UTfkSUE	+klf]k/+n *%ԍz)_+կ/jRm+yͲv<]!<Yz~UW_æW+Ql	tm~ӍRc^(Z^ͯ\3FXfZ_j|+Uk[o.W8=h-G`oZ[HXxipFI=dXԯ?^88<<x=H9QL<OuЃ&{PdkS<Lx"t
	@Qߜ+JOP8 D	Ch`|4>KO4<te~&ʹ7`L;6}ۘobx:ioa4\4##/1G
u0',+l;(f-J?w4]ܞ*H+;.lq;0w!#87a B8!63e7>W|CE]	Md$s1z#1Ln`Ѿf(5<Do#qf1dP5qd|Am'|(l2lW:U?Ȩį0βCdE.
Sa4tâ0aaʋ^mpK8J)JE)GYo\|Eiyx:CkSpDZƵI;qYjMdaC"-z~`h>$mǎogdv"	Pv`RmRګR[
Lgt@
")X]#vIsA
<
iWÓTvܨL'~UuoⅢ!N#^Eᢎ#N$H~A:cIǈ/lğ10B>:f=0z, oS>s41=Scrj{^P7A®6}H?ňߐEYS107i?a!S׎x#A=曐DT550qrBw;Q6Eaً]ei]7({PZfe))ukJC-gSYɺ;l`à7\sdihhWK?獠hNg֬;d8&wLA<OgaLKߍ,~
[6R2,j$ A1Ge{sj{;2x@	y}v5d&	rNY!G0#y2߇(h3H))F?"[:AkiZQᾡ	dSAwN159c"ma`졿C!(>O/+,|<s8)D~.`0&PKH  C
  PK  C:U            >   org/bouncycastle/pqc/legacy/crypto/rainbow/util/GF2Field.classmyuǿnzZr
5!!r9t^Q-JH($KiAS1(2-eR|>k\yss\:!Ij	I9!I1tȏ;$C O5wH$G

'3
'}J⒉):*:1EKFǱW{'/W+P?%?:>+
S㦔K%yűpz
a.'KdqT*D	JuY^I-j҂TVZ2>-G	='7Z60+أ ,Ik5RUx|<NK؆O&~sH$f 6gd~|mon*lK$1aFIsrygdd!m)Q`7NbIμPWG"I/#_ٞboֶWNct܄rrHnDrU#)Z/Id}N u
3@E'/.vBVHurpNj;d5-AVw	Pɏ@M'ZI4ekEd!3:Yv}@]'zN;yhC
\Vdc'M;2#@SE6shM-t z'+8!:FBNm2[3m
އld?p<ܢNv :9y I[umNkddd/'? w8y	譵}%CdO;"T]N<(Az-2푃y@yd0Lr6@ې8Ȩ@ބq'ǀB's{'|>Yd90JS*2!'R,sr'`mxm	N|Lrr`FNuQt'o3f:>,'ki&1[hxarȇl&
ڃxc#:xj1M'i+bp\SN.r|\+OhMImA,Ի'bB,q
6"38v\c9%rM
mN񼓵_J/@E<"WkmbL8:eDwr܀LnRbW&WY[>8Ug;|[73$9܎;	I
|G':܉sJ]'v9D&hxOG{>&$;'
v#`	+!"aG|CD:k\Gq/t,o%2%=W8Sz#q\8%78'8I2?wx3)'r?-iHYc?dqv؟OqZ_Q_qiq	\.	K/݇qH4Q=WShT^/x/8kchڣ[l:U޴QuY
{#ttM4GX/ֳ
[Mq|h]M=M6dʁb4Gc?{&kG6)-Sz(=?	 eR{vྲྀWq[[0u{Nk[Cy7uAߑ+O;g:rŴHo8	ӆ6{eKxe8)ޟU2A:Ц ?r{^Y'nduo)^|Ϛ^|L|S|uwZ̻jǠpi/-eᱶu\m(}x{3Nb34HӭZi<g7,k`6||~xȺVdpSakj_>5X(@|606;d޳n(Ǔ@}2a
:A8]gX1ٸZ
@}~ʮJ/YqKV챸yN*b}]ʊgUEn/f[oú*xef+~{/62+z"7=I_wdd+ny/{:bi[mc47WAXn^"?Y֛XVM~yU &/?Q_tU~Co*qQNX6	g<oM3>^S@}Lᧃ2v׸Ic)u.t_Ш^w*6Ӟ5kI]/PK'Ym:	  V  PK  C:U            A   org/bouncycastle/pqc/legacy/crypto/rainbow/util/RainbowUtil.classT?LQ^G\R
QƘkiHiLC܍A'!7G\18޻wMIH}
.2hy_,55vYYLd1+NM@	(iZEr%D`d#@,
r#<G,$Vugdl|T*m8](3k(/nڗ
[%s&jdL%cYse5cKVbfJr,YB\/]G5)6vN.n3>q0 aX(.fZgVmkeJ糈 įL0ߠCVx%^x$th4^62mtCFr3[Sݏ"C\{9B =DC *K]z6/~7
Wq4N%1-׶%.F?ʗ:.Ghg:WҸ!%+9ULhz ;kC'ߤOҌ]g&ߑ:*"@ɐ49q<M$&GѧsO<Kl޼;OI@@"@j"
_Qaa4+*aHF< .|F7b.h-z/v~O?G0d᱗tmsrKTvk2xG1vUa;}	r)WR7TTI%[Ĕ~J34Gy'7#?PK3`    PK
    D:U            !   org/bouncycastle/pqc/legacy/math/PK
    D:U            /   org/bouncycastle/pqc/legacy/math/linearalgebra/PK  C:U            I   org/bouncycastle/pqc/legacy/math/linearalgebra/BigEndianConversions.classTOG~c/H6cM)Y&P~DɈVH/,R [mӴr*嘶J\DNA-r+*Uz?B7mry3o 7`B.	t?Gǐ% sӹl|C>="yr
0O7ǃi<&m	Lzi{rTUU6-^-Su7V1뮩Yȍ,.}qqi$Q@Aa0rs@Eқ۞ZN XѳE)dgJayqlX:c̹BvvoyE+-Zݨd7to=[K/łZҳvcں3:;Vin?g/psg+5S*C1"("$EHWZJSnKC7t!
t@W#
Z 0DlҐk{bΎ%O7>o.E@`g1F^Pϖv^HZȄr..4qYQp8,zx
ue.= ~O){I^_G҃gqQ.?(0u]{?iq}	H"cH-Ls糋L(ej0ׯXP<-@<ϗ<>%} dbJ@Jɲd\$hha<009e	pN`Z܂$em^NbӬ7 Q
:<k_޷A
vQ8jQSZM<nvW}|x?<R.$2zOdIqbNb$,		]:=DDRS\
>3S#&j	e3w}aꌲjRK7"drTtC'H_&G4=oomϺxeFmW<HPNĚ	vggK3
b\i^ƗnuiPFˇ0AEC'<_"+[Zmn0<Gy7_BӒ<r^oMLCC{ T"G?c#O݇ZMX oyFio.6x94Walqγ)"#\_/3PKw    PK  C:U            @   org/bouncycastle/pqc/legacy/math/linearalgebra/BigIntUtils.class}SKOQ̔2 "Gm;2RW*!YݶC)N;X0.G7lX wn	q&9{ǝ`r,gJ,>70Z,qIxśx«9wJvM傷@v--=~e/:Cc=ΊжWr.9LuٳKb!]]JnaحRUs|slkerUablOqy%@LUR97?ZE; ꪘij^EHE*Ψ8ˠsM1[=  zb~4|ݏO9Jt*6DnScAџkhӠ	@pNihE
*hh0z`E:bBą0H¢Oe4˳xTHw4#2>v=	aӔ1f7^M[=TeI{$C3cѩާ_͸[:?͙5`!G=Bf;>4{;G_?1I]$A:pOTQQt1B:
pkjM[55H覲)CL!҉1<D#J*;u^x'x@:Jqɧ~DĢIYSi!;H!dn	՗ƌ$D&MlRDE]_PKZE  9  PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/ByteUtils.classUSemv7 +%PK5l!@KDAjD-dh$88a|3j/3</3Ա;OmMH/=}w|]GI 'P 901)hIS䲸kIyd	-<dXfn:Rklk0]ɭ	af/y~Nh#Czu
%NsilFaB/-34Xճ%\[zMSfRt1'scmv<{~4˔F	PΦ^3DUՕl(}xT6.8/.ESd(K-f%=C/%#Uԣe#Q^@R!B.J)sMJN/W}i(ǖMouc	JlqL/Qĵ|QA
Up<!'<,51?A)w\arfaHAFs{߶z{V&Ms9/5ƀm8^E^/C#6{i/:12aθчbIcL&<Az0&SLf<Ŵt`2I&ODn	P4ڞ\YO>T)ROcqppX$9GoUnn~÷Hu|̌4UpChpš
qwsuӇ>N7uNAxN% JA؁bpøC{>c_ԯu M+;1C!K(:s !VҒ|҇1Z&%2iV#pZտssAšV>^p<pܦOᴚ 6c6!l_i7qZΫ	SZۨYd3İUKj"') Ö[ms[x~Jar$ծh:rM>yNrnC$H[ۮtW{eO6&t$魗K6kɼsi~q,<j2d?(dT"lHL\܋8<wU%frXƀԋaNM$o BRW(o[xag.^. N7
?n'70?#rm6`v&CH+h;(YemT\Z騥=JŹ$(aOu'>m*\Th;ⰼi]h."C;O~nh.5O"J[78X 0}"gTSmƕjb2Uˤ*w*#A?f&~إJ
l<B3ax2Ϯ
54D7NGDk.Bb4x7AAO١ql	0֌zg5
l+qi~N=Qf]&\5y?awCkCEb	H궜ծDRRO%K$jw"Dҥ$S%}D]inGՉ6)^5MQmR
ėyPKu    PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/CharUtils.classmQkAL6ISMn
zJv	PS0Ah,h2.I6nB.rK.=I7۴*0o{3_~~3:C,Q+lT+5RV
VD}9AخsJwޒ/^zr/p87=mݞ= pc[ӖږAr=Gm;-_Zݨ\Us;9e;b4
sR|_N˫qS`)đMb8m҈kߓl<a%Dy4qHၨ'\6#PNY@͊zucL4+$SP&HjHCٓBP'BjE7wNE̓}ղ
@KY!:e^rA7ͬ	JZɧ&?$OǏH,LE&2CrD-I=#]4B3|J4Jn+[h|Tn	"1AGlJ&5P#
PKf    PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Matrix.classYyx\u?OY$d][Ƌ<el$X64Icy4#FlTQ4BSZۀT$z	HC,5MӴih|IM\soIż9w;zK xۄe&4a	
&1a	&0.LVְf6.ޣڰff
_Vi/1ܼE~qyBo\{3vNݲ#7n1n.xb} W7ҩ&:9~kӹ@"Mtet&M:S@z#
d:3=遨D.
T`2Ku$qNkk5KSGdm:җH`\Y3} 9VpWAmݒv7vdӝ;dc_gcO;yoIl;ّM4zKLa7]];23PD__2ݥۙ;@;=d%;D{'Gk'Dsw5;C$kHɤ
TufzsfBu r`G6@phUg6%tWsnwA/w800+Dπ,9C8Zr[@3wK&۫"1=ս|ѝmMwf?nKw'iNBcKB;Jw+Pm[MliHdJvJ2vdh+Yf"H
-3 4[oiA؟ؿg iC}aMTno2:ԙ˥2iħ8ߎ7ۗDgOzh]2sx D0@sinlԧu'AHHN75,9a.Е܇nUFPiK)\_X[-^7ϭ(\ylIptw 7t<^?}w&7p4roAY*VE}%у%{+ۛAB
b@h3N1`{׀635 Hm!
jִ
3Qʅކ-']>LsrOe[컜@Ö4!˟ ml
'_Cs#<~#.qχ 
yl!7ɒ	_ToORsA;\ߢf5;!-P邛P[Qs
,1F"\K
XLu.X
... K\.HBMFwsuZjbԬj,-!t|yj/Ps>cǨ5P445; _u@158RG|?	jԜ$5_fg
5_ǩy$5O; N1PxIPe{.y5ѷ#E=,ZTPO
P<?Pր&.cPyzv0j0d;"	9|N0vHNDVr^sE8Eg9m8P"9&d$͸fLuc7~ez!!m2L(ՔuՐaЃϿ5+gϠ
u`

0W+814T.)תKV'`@=[%QXTpWGK\5quH튫4!'̴v2u
Bia(R2p]LnpVdY*]I;:˸J$))J{ig=>-lg;>;ى܃ڠ;	84I8,"qIG#:E	C
$!؇GivI0L,Cׄ8,H^Bh-GS9ahoEBEbх0Iڛ2m` sy<Pfǳ-5'&9+m_J[\e*͌BcmTEI}ԆEnP`
̹d(Ip^"2\k81?R'|#k|0}_"AّE([lblLRz#i7㪟^ʴ2m"!$zFx^3(
1}i1UK[!7lbѢH1!R'c%LA	%Upxŏ"F0L#Pbٙ><j1fG(X:bb#C`G G~!fE"4uE9J! -ڀp
<
6fCпn	c &;^x	נvu>oGLfz`G#̘D̌sI_*{.aЀo}'q+Z&<CMr!ıY'mqsԏRN́{i2ӰO߶"͓[ɜ9h\̉T2P98}G%XXeU}¶x5frCNWQH~cԉK;р]u0d.$_!$Y$tsc*UΪ5+A>QAF]>V=N =|@Uڰ(ڼOQL\˦K:cv_y-O̧(<ڱ71
nq?p,+DH1
7Ee*>jB^P<Y7aJ~XVmeӨbz_6[#hAؐsc1Gea^5ZUdT@>W%v<ċEEV3Oat۪nx|\Y\q&Jq?;18q 
q1ĝ,輝{x0$NM5h2;mtfkoD5Sy^
5:
,j);BGNQMhsVz̷ޘ/z4ըTToP",t^~ MR4lUfFʔZJL=8\jƋё:^`~L`*PxƈhX˰*q%*T";qtoui\2+p$2OydO5C6dKeBV9zjF\?WQ"T6ZL[kmwf7`&E}ÅϨ;".b-mAl՞謳ơ^yR[D&jHd.֊E6@ h/im)bHr1UGm%20FkXxA^[L]S&}[F:n͗FA
'eVpZ^w.E~z6((rxt'RP5ɔ--ʜvEZvBVHLJ`zo*-[7%J7+o%xajЭE	IV>+#!|(ԫx?\zXhQL?6S=L?@N%M,*Ed4}Guq3TiXH(_bo	E8 +0BE{B>
擓1N&S?cĴ$~YTD%,P
Y,̈6a=4
?&фC߄H8k$zٱMTJ;ԸR#bƤ\/B^}9dCU8^WQp,-T~vn$ANb
77<^<N٭<Ͽz"I"D769Nh/SVdoBӰ^B
,$H*7Iky0W]A	^ (msKJN2
e<WAQE0X~Gǋ	(Cx)K/V)Q$嬒?fSeiL:o.Bi0Z/em0UZRlg,,v0;!1BwR~Ļa=Ѱ,]_/wl@EIyxzHtf,v~>ڒ¢ܤ\"IU)EW٠9K"kiPQpi(w~=z+UVZYڲb.,QQoTu2gJWWD84pt켄.0L'õc}gKU". 	Ⱥ[?a/2\TdW%K0bm+)ϋNYQTy0qekoOGˣӺA&#eI}eյat[Y.uwwPt
]W8>T~+5pVvRG@\:B&+U(ؤZe+&ibiX숐}bq91Ơ)=V'-D@x{Ti_m+	"ui^Ò_bdzEYK=/ӝf=gYǔCo0['~$X)u}8,~E+2IRPEP:A
e#bs^]}
VSQI^egG\X~x}joSb1^&^w[
|8HOeha8H[gI,usLWj	0/OKw߻}XI/%.ڀ.Jk%o܍"^;?'g\Wx(9F[#p*>M+[`g	"2S/ IH
ynmAok"{;\GBo>|_!
)ѝ㿊?^ۡb
PK&(  _+  PK  C:U            B   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Polynomial.class{	|Ty潙!ILP4BH $Fh%$Ch].-]
lQM}oʒL~~{==n&_;Dȸ6pq Mq   lHH.RHeCt# p )R 	Ɇ@*B*Ti9:HlsܡZ;PCkZPCu8*.wӡ+Z^kҡMu;fzPAFAᲮkGS
̙JC
9sׯ*$zIN5gh%eu)j~Y/E֜R5U<ќJ*\.eUJʪt*ݮJt*ݮJvZvg'W6lȖme=ekFˮO

Vt^PM+/^2ؿ}`pk^]ߟ)5Пkdm&V]>\Ѹ٠<m 8m꫺5;oȠW48:нkx?5o5S]m2#Iu
u6
u"_
tbll7numۖPm!r@ [@XKWpwzSHSlmS`lD`Oߵ}=,u[6
SGPkZX;08Z565<PV<ܬ75ۇXXµt
oY9*o{(%V"iQ;oxPgoS?[}WoXGR-[S#}ݍcݩm#})_Տݚɪ45SERjHTw,0hDՊѾPn#J&ƊU#Lёykks5Ϛ~(Пbj:
l\IWsAZS-Z੪Q}y"ŕ0\ 56.jΡ,X[/PҫXAXSۺxp5#})Dkb3);$=w=Oqٕ@x=Mh(o@FJ
{J]Nݒ^鲂k.$-\^!JÒ<3]ybt-Xݰ
ڶ.Yw覑n/ܪ#a~#)W22xqjOivgd32^/(okO<8ky
yS}lzaAB`Szl.6]e6۴զlm6Ŧ6n6æw.ڴϦ6}ؠ뎷9sWOXB-GCYB59Og9+_Hm=33քf]X:߿Nc^C}m<eaY2ma|jTlFrƗ<uEzJE=O>4
F#-BGnPGhp-:
>0ˀ7Ҋ	(.
 _.ӥr`unDh5GN w>K?C_ ~W_ág#t?=!1<?Dhp%П/]w>	5D 	߀ x>L6wщ0=xR(	S2f0=m 0=C\3#  `  B|@00  3 3E8P
8p\+ $ I@0/L?0baӏB>qp?Xnꦮm 	5g*KyT49,LXIyJ]ga^sWfxdÜwfN6Ɨ{2=Ƈ	?d,*/~Ȩ(Tue󬶐\©B֖ɬ!+cZi&LL/<돳mXZOF2ACԝKкd"? LFdt_u9B<BOu62V+12>	dY<Ɂ-J%^8"^Vigq.yaj3̢@|hk_4dszvQhT134{R*y4fZc=fOwbf2f-T4Yg7TY:cQsMZX4
vX4M@Ѿ(O̺&',Je;y3]ZI.w)08NWS
iK븿C;>d4XEV`*.qjEYy(?YrN
^^ψ6{6TY1S	3{cc^>v[>JlI7W;c;L2PO2POзsa[*F5O7z̖9+iᓴƩV?QY<.Cg [hI+BP`&&Nc 8]G X.x-c$/)tur*ΫN`jV?V%zW˺MzjH}~v2};Mrw݅흶qwAv0:!BưŘnb݌SƩn亏ғ:uVt`|]Mtul?ZhG+<Pt>c8ZŘ].d]85 Zn~ب1!NumE&6Q/V[-ع萱ws*3O_UWs*鍼HyRcVV+VtނtI<}WqO_%r*iا7";<&SP_qcE>{^^m@y]\M`<{5q~T[dxa㼽f=b;GEuy;ynom!a)KՃ=9bVfQΒtÝpgp
Ϯ)<J\;v>AG@qA&ۑ͛75}3u*5^rj<м`$۔wBrKbMneԷسRȵsn21曨LLȤ?7Ǥ+_m<;Eb٬Y4Xۙ;	V~?le'?nė(x!+pOt	&P[If2)(E+(J|)`'X5y^0X"Sk
A;1KW{@jyccw=:,!FF\gnVdUVE\¼O<Spȸ/}^W/|0p?rv>s;ogV`yљnzz+{3 }nYvƇ|y;{"6j̱FG[([SH[Yg17{x޴Nvʉ2!J-T<;!A>-ཌྷ~Ɋŭd_QY,>5E:Esy-wQjM~<s8l,XV=(>llսw)^{A/gҲ}43gKBa
>+&Ji>*R}/QtSnцLAEM(z_d<l\SXR5f&Y%DV]d|Sw	!CFoQF";d\ANB^&B	J͚5x5{ռ0n#&y$<Ppr\bur=B*N"Q0%QP
FN|	݂]I,\"E9_Y"E.9$Lgl{$LMУ&AQB1
E
ˣBAaz>@BTS4;Ĉ慘!5ĐfhyD6TVhtHKHA","q
G$Ů.wQA<P(VD1BvAn,t6t
zc"/Y4GEփDփ@L;Y]dtr'NIEB:PVBY"eEʊ A(+o(=}&Q	9_:푦#=t|!ˣOG2=ұ#P؞',;%[t,Y%SЖYlP3(]`7'ixo3W6^4pmUvzFe瓗͋LޣDVmޡP;atߝ{;8*tN>s#8Yˋ˘07XD~`glJwi0$D3_zHAdͰ}HJ7Mf9(^g)v~VᬰCLgg5ᬽ&k^cFHy\HSi0_a9VX)OQU
Sq+mOz彚W+ ofWWfqՓ)+Jd敆	,aմ*{5miN:+3۲D)ȘmN:/'N &uvQY]ML׃nհSE	dJH[eΞ3=VnLb0k$s,8STt/oMZ5SnVV@eUUX/͒+fłtoUB_&Nl])2Ot|1NR0B	tvIU4|uN߲bv!}%ASnW|)%0W웗gWmIsz-VvczmouOqY{ύU|{JkǱUFwxnPż:+2C%
Af+9:Ά-
}D }bS|˓qKj/MyM?BOt6=<d4o?عtFqsfz1x%UkIV_E<Iz$q1"z}<*s]gfsl࠯&cAs#_zc;)QAXmnq`Y0X4dN8;o^8Yx(kʊiM:&CvPJ%aŒt`3=vEw>70}#}]gNO$i{~gUbyU_2q9Idˉ|?7@3&޴0!ɔ#H:L^>)M>IP4@YTd90,oȚYPpR^n_=Ύai=ZA+Ӭ-)6G
"3!NeRq5sP% 1]=ދ#YՖsܽOyi; ~wgXΎj-;yƋ{8]8fVµ%t~y%|~[[w5u*oe`
7itM;Skڙ݁oo  /酪$\|!Y,_ƽq_9?٨P~MI'ҿRKqt'ThC) 
Ǔhmh-O<H<HكH̙8H
煃&jj5ÙAf8i5_0L?c9_0
UV/Ei¸Dbg6ɖ5NMĘ0վV0T&ż|ݕR?q-/Д]mp'EjJx-1wgAx#ŌwSb6'1)LwSۼ\'U$2/epXysX3
OWK
"_~Q@xb|Jƴ~G|W^oqa9{5;I2V^^ZTl1oJklCeM +
DanU5V[lX&]z!a*nӓ3팳aQ7}U}i&Ί)]{8ѢxƹY-:cnɄ%!:\tq&/_M
-6|5%;rBn?GO{+ߣO&&OPwi&1	?/<;|'n=אf\[|(Y37K]OqXDL_!+#|!2O $8Zޏ0I㈙{W
^g'*LVyNڬIν J;s<,VNҒz|u'Iڞנ/[Fz-?/2f:{uly5MI3AfFS1|sfjܻ.?cͷNϲodɊیϨÌwxpŤVqޮ>G9>g_<B_skϓ=	ˊͻbXs"k-Lou?HSd&|NR}П{xTeV)9<(ݯx"u*~y{:UCxK/#Lc^[5ir?E)x.=AAy*?A1'$]~V鮎)M$aUZ>{4$OxdoKƚӢNYYI|3ٷ'7ysJyNc`%|{foC{('?#(s=jK>"o?KQ7s[/~l>_T1'b,,}TyfMN|9"kgȠGNaFx_L?9Ǩ|$T~v{S8BMhsyǽVWon/&wi3x3yU^Cbyt{^N@zeVܕg;p̀<tzKK=Y)_\CȾz!,%kw6GrGL;Sُ/]Q-%iY7tC4˨XƴS? zzwK0(ޙ@4:-dEEu !dÀ|d#@
(@օ EӐ-40ٙ"dgC*t2ld칐^<E@6	R%`!UAZ X"H!U {Bdk !2HAH.K p!5AZhFR+uȶAjx:
^
5+BvH)Hn!{jd!m4 Dvk 
4
ZuȎ#{=t9&onooͭo͛,D~o|h."Cy=;E~? ]͇^}/E|Tc'Dsȟ^O|yPD>$xX4~Z4<"GD~T䣂"?.?//E$e|EE
)-]'h)/h<&P4?"DE_W"ZV4|V4	^4"IϢo?Dh#_</x\4'D>))@F5vwtZvGg]qUx/u;
BKxց?^hgt:'J'Qe0;M'`7LWhf(<3"ei2@We,eT+S&f+|g+䞣LLB;O;_LU&ʕ	2T&*	Jeo27_YR(|EbeZY[,],],(|)|Ke_\YS.J傯AaF%va{qDR2r*˔j%פd(f%עZy 9Y)6׮:߫JS)]+
JJ5JJQKo*_*_*_Jo*_*U>UT!VW۪
7
7
MwoH7bQ1U1]bS1mW1]b{oNߍ*|Quu@KՙHoVuݪEzSH_
AŐުꐾQ#}k@fU׈6Uׂ-[U]ҷ:UC;UKUG{UO^zSU@]^?CAV
¿W5> UX5GTP
Q S
q P
jOW5TTjU?A(F?jUZ5
gTQjGUUjϪ\T^TQTYWTUT]7TST[wTW
T?ZI*OVjU?ZjVjVjVj6j_6j_6jߨ6jߩ6V	sMڄMڄOMڄ/]څo]څ]څ_]څ?]څy.UPR).㪽c;pgl4f~6w]Of~ږ5i[hNÏONB*In+ILQeHҌ?0 e7
3NFScQ&sG333Eqx8ZXxVҨXh~XCa>ñF(TBYP%Hq$0.IDR:.,GRnP,	ŖPBJ2EB)P2MB.̔PfI(YJrr.BP̠PK:X#  N  PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Vector.classVS.Bb@R-?vm6X8vmԋ:z`i@	NSҴ=ĝdN>3~j/ͷҙv1]I@Ҏp{9s'XpVQ"bF1*E1^ G;쩋:g"	OYwsw_xxwBD̘V$!2ǌpY1B+ȅa#<ff(|02rakXPPgcFbp$YGF-\NHdG&D"̘˛Cl>ocSy	ƸV1h]$T:{TasYVieZloD&MDOm/	$gfNÝH̘2a34ypy3e%czSJ5ϙpڰĉ1bλ/>j;d~TUIAxWL-#-Vl(ٛhq^$t)\\̧u+A;jz4e#)|kfu^Pe(]rH674@	=o)$&j)ef=tB7>i)P-=N]rU;Nn"g:M@	kңn_zw8ph7JM0֓wvLXS0UVĸediqo8:RszИopdp$Fp>u2rNAP>PUSТUAv/*xIqHw&	H]*jY#rD:(oWituu:S?	ۨwo^t<B[dd;Kb_]_%o>.::n+m펬nz7!TpA^@GyQlV:y'QC*}c/Ca7|8+,WpQ<$}	0yY{э=p	/
/HyI.7xu/cʋ>X<yq9Fx/.bҋK5Pw	,=z>rA4Ep >biUEk_W'\t_8{RZa>yM{~/p~EfH˨&
5pn( l 	fYoc{G
</Y$s\NNKkZ&Gl[A\"-! 	_wx2hG0٦g6f^cnWGqkx=fESsxQ<ϚzPc2/Y!QH%{^6LO*-\'xo8[u!
38kxOja%\v %C8PKQ-29!heb<Pw` y[m
-XZYRc<+<m+{˵w脂M[PŜ#9;iq<O
Ԗ9}pXpHḎ!yhnsڂ,8<c.?<ڐ<ܳHRHj)	1ƿ>,1dIzJMe%41)րS(,ܮg$*%P/\KP-6RrQߢ!//[6Nv94>* q&va
3ڽHR')n倄0쀼$@O}ϹZ6G0rh>S\bih1s޲?9=qUzPU,R1vUa9%z}ڴsN\w6@ɘ3;$@U &B!"ύx-=C=m@t-t`U!uHEԧ+HU0JrtЦJSX\D]^\%GݎͩBCSCJm,ShT&|H$!D(/斓s29MY SG$gBTVI5*bs'cKhn

T)v{H+`|FRC6v.82%^J{LvTFF7+|G5:լjnK`ƴ)jk^+Yp(TrniF޽{qr%ZSW$I'O,5=n7.;qFmP[.@(ďf]^VWv8=tYӭ	ZEf HǫCn1,*1s)HY,&ܢEXdJ<.]
x%
z'x9<PK,	    PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mField.classVw4dJbK"!$XlFTv(I3b4r6MڮzN)oX$$'9'.Ew7
o#C{}Oן| GHbkےH'1D&III$~ľ$$@>s=ef0׬{Nm1jb/:L]*q̊H{wѼh3^ʔ03˯qh1g$#8+rgg"v^BW!'uq!0:j̓3#ξ [=G~kbEf9Ƚ)V?M|n~H<s[*EubtE[v,dnū*UF'4e|]iZNbպNKQ0	;iS;wsRݧi_ܪ<AI:mg"X:N]a~VvC]\X3QU)ѓ/Y+VޱZ8f9ZMVX==-^
GD]hi;UF-۲UgN`ם2-)UE^QkEVZ8,_[<W
kYnEˣ~WZe+X;,rjlѷ'gƗEfӵdd4Vm=ݥ}@/So(/͇OD8az85=Q


&ข
(8)aH#>¯hS=͋!_pab:6JMGOH)ԄEXqYxFC'5<KN
bp04`XkWqӐy
/₆CxC䲟9TUq
*NG㤡Ǩd8Yd+*Q䲊T8rrK*^]89z^RU<k,z=O/^pUvYۋD@38e#_2}.fuh~#G[])(K|1tq0_bVaIB At9CJETrLic
f?B.EKwRPBX^% 	u X	3@2GB}f[=W
u2JEC2[-;mc T݈"۶9бB&~¸|W'˷F4-FP0n`!_#&&:g|vw;܂D&J)=pH)-&nZ;u,
]rgAZ]IkwDL*lxCD%"r+mCCF]uk@agB|퐼]aJ)
'sn*_c@$]!)0?˃wFJE^LqzN[SzbI!](eOLl6>9})NL:~1F:Zk=b]:V=w_/
}O|Eп
D
jKy},Obt4lSF{H0	B%h>[3J52[J2maVEʙXi&35/4}4$_="O@#hGO&Tm# HQ6Q	iPK'    PK  C:U            ?   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mMatrix.classWml[g~}{޴n4ct5M~%7'ݚ#q[}ݤ06(c|DQ	M&:Z?&$?@@!
9^F29}9uz U2<26Pdt #
HG*Re0/i`RI_`db4iKJh(RO@gpY<m3P^2BINMJ7I&֦M&:=ucA~=6^$<~6
Pkhhdr0'pN2=;K)HNN(x\֊dse&`sT(-ɑdP4+di¨b-҆sY8e+zHx,t5wt:ވ]XNQ+[*%KX>]Wt#W=32ʆ^*
x>ktp%[xmN-SK:^
~HMjtZ%3jyC//L9	x|F>)SB$z 'Ҟ,UZ1s9y-V2c0E-]IJ:v|4^iۿcXdxйsg#cgETKF"_.	A	%|DcJ'aHA	0(mT'Ϟ2Ի{tO{<=E۞
mNpD
Jir?qF D`n
X[wgJf yԽS¯ v+IalVeR0m
vO0TCV!Tp=
BxV<Q 
$kY@
c`e8idXY\dQYe1BcqEEEECAuY\`gQ`9Ƒk<uN̅ty2M_R&qQd&23n@x a.tк)Ñ;bB,Eo=zO^@]r.pԽw+^,;%*ZLTAM?@-p
tFI|?av?q%)!:nd	Is&dU,z@T	\%'2-95qz{$Z]w="II>e
[ x`DXAPX&o{p?,n'Ν%9<p<跎#,ouc68֨NW0-O5hV51#:#F̖m CAf]Fer4<dS}u߬W~~46ywڏAgBb΄KuY%- 林fĸP/_	.T[kۤ%y.Aض1.V<Չkss,{\yۤ@7fpA:{Q{^#2y78
7:%-amqXgo@me_v1s8p[x@<Yw?oE:pIb7 شҋ7P]oQkaWx-USE|&Lk	_Gmm4GUw&#4cM .AbrGb%|)#G-͜侻HMq*pUlhh a݂2_Uv}T-a_|<a5؎i#;>g1a""i
e+}05ÌRȽ7=~"h)mMQ^I';Mh
'ڀ
Yܟ i83v4Z=wqbK^'ۗ!Lx>}nUO1Rcf77y&6jXEA7 @;~6׽{#W+w
<B6pº(?ݕ3j5G-Xg	d/,*zjYJL?F߷[xzj	$TkpEK'\'Mb/&bvn_{	m]B
vո>W'i`/
PK-JE<    PK  C:U            ?   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mVector.classUKoW38'	1Pc;1py@	
Bі}cGPJPJ@vM]uU+uJ]UQ=wfd;wwO/[p7vsp[ҔWM9!@
MZ*Uo:ÓIn˴4\N
,\H-RS4KfYCYVYʨLp_FiiB3ӍF)XJ%x;8BQI	R(0Δm[eE+ц&.Ì3,SdtX>-L G5/,fIdUJ$Q-%ΌeՒRK*qM3jdsPSCS`y]yRXF2hORY7pT;lU=3Xaҥ1=cd	njAx{\̋3|YOͥxV*Α95UgJQ2lE߂Z6Kd\1TNMz^d\Pfۤ+~eB70jIB%c
0sj§8F,d4)c}2xKFXFv{dLGjc2:}nyy~^6w>5oK^c_x|IK)3(o:t
λz~^@Ӌ]b7^v΋Vx^4E3qE')/\աI.]:qC$q.pq̓.pq\q|=8K\\F=᾽x"eCI<Ɣia/y?~TH{!3$uNȤ#"K."S>wO
~oE*{wl/b7Yoi1<ScL	IL8Nژ\917Ω_n:ZqQ_q{3TB7R@DSF.կb
+T/s.3
(G	slYJ#v78X]}oXE#G(za;c's>Xk#LYrwd-:߂A;@=i
ũq uq}X1,m[|F\'|^G!2[8"P2	d/}ę_	k3kǞ H~'U;PzKvNA9!)!0R9@HJG#_t܅S|PJz -l5<K86 .gvom#'$
|8c_J_k^/Ǩv4f,{}Z
.b98+ v!'D@=^Y{tsS1sLfwVruhᢍ7ͺyv-"u֬}zo|zl/Ȝl"}ߋbОy$;	zp;a 1}XQ' Ow*"uǨ/d~8kjRkMOGFf#!A\PKr  	  PK  C:U            @   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nElement.classT[OAn[W,^ۂ"*"򠶆xn'%;;m_iB42$˃/}̙e2LBkCҚj<*$ȍEl;"Eۓ:h2P1zv(xDy33.pcm
vMP([)WDN(2t#	ko߶<pYr[zKAJp㮍Hzq̇!WxP61RR̉l-&N9Tjd
%"Im]g|X50gmt3V^3̵ڛ^*)`-A6֛YsHrg<,2:sO2qL1e	&L<.WфU%O%ɡ~tMThR	BASY@%u?fI37,c8U*Ӻk[Z<fX_p*ŴN+uE\O+<Jw-jϧ&R|ձGsf$}0~PK-?  `  PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nField.classWmsU~fiRZ @eomZK)(PhA_&B[
pF3vg/
s&m-Iyνrsf?Ѕ
 j5mO*iݖm}
tȤ%ȹ	Ø4i	kD:'a)Ý,䍤iێk#鰑 Ӣؓeyٴ
λ3aNfvf#rN>;|Zex˂:3CN.w
vr&i݌O]H3"m&gYӝg,[9393NUPkRcؤW&3-M:٩+{	(XWR$(J$'Ybr?B̐KMLOGO4K
mM_A#RGwrMpR_씘P/qμh3I2۸:^]++M'Ŕk9vy2ɑl9@&%$>`gƒL{*0][})
X[L*7\9I09A
#j(押7s ^1\ȸ4<aCs5UCC"YYL|cyC+;}ֶO=\O'OЏҝӽP+SiG:%$}JNVӨ9Ⱦ|{
[i{jEg[q{j\1J8NE4hjh#n[aM@e#ch}:^OG~pGX+:bu2բ#G1g
' ^[or
S0`23$R"xVqa"ΐb&{+	.XCݨk&ScxFZȰ^dU:%QF#'%q&%(V)4
\:F`G?l}ޞ
ǈ܁u@i9@<NtҒijr,(t
cF:Ԛt(Dl{H\#Q;w{1fh]__OM
Stλ."x>6bXJj)h	x3Wѻ?kX⑚n5$iXHe!hm8<O;yKT+rE{_&s9/7xWdͣTcCjQʠ3#dQOMY.u!wv)RHf{+}k2o2!π
a~TznRlGtT@
۽mX4nS;ԿjTyDj-i/UX[v.kZ1r
3I".5
^^T \'+9JazsX]@OVp3	Xr]%ZM_Wa*K3rֆ5f&5D1yTl6Ogc4ϣ;Zs$(p`Vjj-օ`3Ѧ>d|rЏJPKkt  3  PK  C:U            C   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nONBElement.class|Tݻdo!! bnX@ D^%$y,P (j-HUe}[mmR0=̝ Cgo枙;ܹx8 ?
<`z`  8+7232	*of9Fݕ2clZğY<m]Tz!Skӛ]ԲbҲb՝Veu[==iՏV_5d:37]>hS}GncbB#g=vlE]ݙ%m}$:zHBK%'^|ƶ^֭]a:-j%rT
+-Vn;ZV44Q@t'Xgrsqo;z h<Ճf,HՕѺSr7'$c]ɞآTJږlmh"L֯ܓNu[c*ltCͩ.~V d3֐h(uPKնG4[EkeѺyJ<d`tuw/MY]ThlHP]fҺ[
]irE5x"V
kkl^oGlc架@ˊ:m0d؟-[:'p,.VLL/~}ܺ94Å?#zXlN')q$s`֍,Ev@ĠTGgזކ]emMĈ{U.6ˉbk?QTMtUBPU(SrUSzUR]z18T])b(L)JSJRK)j6MaPS)RtxT2+N)JR.p"PS)RtxT2+N)JR.l"PS)RtxT2+N)JR."PS)RtxT2+N)JR.$PC)NhJѕQJP)RʔR:+eH)V=p	8T])b(L)JSJR֡T2uP\auաQ:\C:SӅc㛸rzSܲf-r\wg6%7o|\綷x[VW_C^mF
rˣ`'2$VAB#;.`c'jjGjeyRd[7O
aη|L
Vz`L
@.
B(bPz
@xPMAXG
(_ f.#"&\ \ D ' Qȥ;  J7`% 	Ev' ^l"n Lo2TXl@I""F0LxWlw^>q#n>BO$>Iq(mԮMCKx';	]	%p^}'|A;aᣄ!>G.WY3N&6i=Ud-ɾɍ]T6:d=&SbB-I %lOsCx;^7q:*>S9,UU=#=,TE}x;?,w.,b~(#XS
$F=m:$;-L'q@BY(M.6TP\R9=*$#۶[қUEQvDRK,7T<!62Wg
0rT|T|]ǥl}^X	CKnR'IB^vr-ULӵ 5Դ䘿R$-5xZav(7/tN|.$؟}'#L&'Yj%<
]6?i,~4lyq
}z-3a2 ^
s,ri7);F*{V|:а^'rJGq.GJ1޾!a¶tou؁Ozv:
6 pfpOݷb,,RaZ?Agc{^еМm1qN&Ĕz7z~}kxIDS(Ul0"Ĳ1S<i<X=KŧG^_ڋ!#'loY7Xyj-M\~qܸB݉IE!GϊVq3~J={^F{AU<~GhɆ{;y,1vƆZ@n^bgh19:kTqL!;W[cya:ep~D|uACd}-2vu;O'ԒY!{u{iʘ-BHM8(.W<f#q!{bӉK\->qT<헔~nLEfpqr+Ly~]|~ЂE$LџrKPcn!fAgLCA?+fa8L͂g!a)g!6uT<@7/8d4SBnZ4{ψ'd23D0b59hCz&
8uğ7C̤{C挸7dbxY
3f}v*ѐ+iUuy
yCV'Mza#E)hB=Wwgף!w7lW!L.x>*$j;ZCy{ +ʏ
#/CmݭPQlGUG#uUԉu#:U:۪n5\ FTk!=TRS^n	z!Jƿ|;bׂqn--eBP&hccY@
ߐcʤzܴu:	>quY83lWH<<Slq֞tw/evՙ	/ǱMrY E´4KǾ^ncB~<Bml`kȍ
1=xHe_$l߲*Ss&"c]<0_sC4!"dx<JÉ-;3ș?[~1ƿv
?QFgP:#|\`X&3</gFmVݮ㮐!h>"^8!ښ;i;>Is5O4mk\vr^xj؉aMHN\x|+(~LmW71kxϱ39*c/rlry&S~=MHqkgJf>㜢]69|g%x;%g'3k]ZZ$+"k!ͨe@La\/nňƯ4,JlY=1B498Vxs`&|^ۗ=y6j\Cxωd8BGϲFP+(H'
|WͲ+eKlrϰz_i-+pPKz>TBTVcHVxF@/t/?*|B*.ѫcjU;(e8x^ r)g|qG xa.iQ.LsU"M-NWM[6pMvihF'Gqq#\Y]1_5ߦ7b&M|'8<ʚ-.*#r
͋;;uSv6cӘ&$\5	qٚnYIn#ԍǘW }F76"F2hG2hlZ3EsCwSNkF;9GQ߹s'3A	WNP?u	MPoNPoLPszoRͮ!{~.5{
_#:N-H;&ҼNk3}?/	
vBX$mM%<kk.qoTjHw޻_&~՗NTzr?&4njMLhoMMlM&t&<&r3!hP܎k.4>MM14&܏&hhFg>4&<O1M8&d!4&<f	Ϣ)2bNlДe4aԄoȄWє:r~b/\loL5h.1h474&B3ķh¨2&b
)hMaa
MEhf"f)6T4SD\nh⦘s5E-+LQf)D3W5EhEԙi|{	F&_m2|;en{]2|O2|/	2|=%wD92|{Qe"X2|d,W2|o9d2|>\|B2|M&W%7Co_\oB2|eV[+w</t$4qtA]|%~BC%	!O( 0PD(&L&RE2B90p1a*4¥JtB!B	31L,le9	qB
a.
<|B-aa!P!	W"4&4	+-V5UՄ5k	u
	7n$DH6A$7n!t	=^BVB?a&l&l!0HFx;a;aa'a\ۘ3w3w0|'N滘w1|n{cüy`> A^Ċb~>Gc>8'20cd~8	!̧O3afae>49c03_`p?/0|%旙/1_f~Uט_g~M淘0|;2_g~}?dcO?es/dW_3-wd_?0G柘f/e̿1<4
(QNLԘ.3=L/3f.34y|fdI"f1s2f2/b1˙)̋S01/eV23fY͜1g2g1g3/ca^Ό3ksW013kuzqy%s	s)s*f#s9jfle^\\\\\˼y3\\yFM$s#δNfy3fe1oe3ifۘ[m̷33w0w2<-O?PK:Fn  s3  PK  C:U            A   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nONBField.classW{xUvGl7iEaI0IFYHKmZ
N6HQЊDh@mq}6)DE?Ŷ93m}nvs=s~ѓ> BjӎXhb;ζe[Xg&naݓ=!Oz8EhCVnSf$ow7{w^I?ux$A;{z\esK|3{l
&b#1hkgXKy4O(24'xI]hm&x<`bLO, RsGOwXPѴOE+
$IEgp̳gvnI$̓L<8R<'Zp9%hXLjeX<hѵg!)(jo5gB!N¢EmmTʭ62iE#԰3IP:[L*
RzɘRz">*Y0Z*\,(h4xNQ#`n
$CzRS
Ea
)GXO_bTz"?pzX@
}ĆD/tD{K[PO1D9,?[$SO&F۫5Gx;ʥv&Ѡ>&XRԗ4VZ&DF洔$#ͭRv
c&6A]bᵞX&e[K{:s13fdB#Jb\nͼc|P.%2댇P&tFyW{IR!N%fUs X3_b*1ͯbY nzXOn	Lx}O&Aw;%ܵt	
f:RÑt>d(d$s-L=0ϊ@deɨTFdq6kelv2!R=22zFfmϩ牔^+{*'>0x
y&=]ˏ77ዼݧy4K!3'=,و
*ocVۘ\ϹJg8d¼]J*WMFWjvʷUZVG\:N\Up-#PUAzN
X2\*bh@TA(+ކ6Up!)
V1lfx+b
<+؎aأ`K+؊ث`ޥaL{Qp)Xx%xex?/I`؈873|ā!3A>aquJpb7Ung84nsb0|K9g>p+a'mw:rҺdç
'_a2|fn{s&c"DoP5,۵hdgz-ٚւm#KwTx$I?"o/F"EHz
"?5s jqe=c|I}#Ĕ]o9&o !_L<(z\]lL.$vԳxnjoZfGƭB<Mu˧WZ!G[#o9|?1_MC#ÓҽnC+n,UƐ j8%Xf_hHwS{>PZJM	|Fs4q,\DtS7P϶.9[]<ۦs6xMQo
DX*gbCup!,nld?/WGzMrImVզnQmj?y.=&g1WpIDyoB%[s]8upPd:Х_&
F.-4+ۊvg38I,esHFAFRޏ6.[4Y㑭J΋
$>/d9sle"U,yY+ZrmehLK}?ƺNurx}
9]6P8G|f;coI6Z FB~@yY)cU2,8%0BIgCɦ'DЇhD>]pJj-yxdq[a3Coh[EU4ӵt}|\i%hDM3mQt:IeФ8yäQ׊?SVv`*0~ue*Jd
KͣR1Uјh3Ǆr>a;e2vї.EaC9SB--ޭjܭwצo鼻Vk̺'q&:N4ֹs{Pf
/ve{/ۣC4Fq%x~H[qROCk**eiI8A8u(wʍi >
Nu)o>#ؑE]JN'<~AT>TGRUVe@+UI$GnJVi\<]dA$8n#=ş7-zyHw@S¤htPS E3bQk6rx]MC塪L1]"SJ44fĒ'4B)`1`z
7B	Gsp'!cytjn4q$߂s
=fwELc?4Ӆw6^x³%3Q#xZVh$ua>Anj'0Gƀ8da
	
:8'PKx[
    PK  C:U            C   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nPolynomial.classW[pֻʊ6 ;B64.D!"`7
ZZ^%#]4)&Qh$Ӂ0ͤt/L}hg>6j%ig9v?m><X!An<$SB
4swY)Ab}RO2ܤetdz`l:gR㡞CZ6ddMܸ7#ClV	]291l<dN
Y&PA$a<CKt34_
?OY+d]9ؿC{stXn:Mj3OOgm̉յIcy-f:%<VD2!kZ-fY	^P0كz>'aMi2$hW2T1chAճ-[?>e耜NnN[ZpB+LyAQmFkht<yR7d>e
ٝOO32Ҿz--ΚƤl'	d@~=5$]{!JuvTpN}wGKLY*gN=UciȴidtxOLCsmIȦF&LC*	cܫӸNG{Yswa1&ܳڙzn^E
*>!UlRYEXEDETEL*>b+{
W7ZfchɁ;e^Uvj00
cUi@J/SաekJ <U/ի(WWa]|9Y5_pjR%*pT 
N_m-l!އ(<%QkXY<ʢnP}XbNx|h^Hìœ>~§}X|x O'pU8,aE X{UZs,x9/CŤ=01/bfaqEYf1%{1:qi,GYLȳ<,fY<9_bϳxO>[#|҇G݈%%Qm,Sb)bDEg gi4d(p
Ʃ^w
bKt_Ӳ4tJ5YD#>	C^Z6jV?LdzƅzC:,w7[9¢ 8v
Wᷔ#ƞ-칉o̡l+Gݱ7q,ߴϾ]VI7KlD"6LU dj0;GԯU,Hid^EjF2@76@Or*j
^DSK
^=---y"Ck yR| `m1n+bF_+6cv73Pid&|XT(W[cY)c6-ptz*(d́EWbE*,աujqF^;WNΣ.:jE>ؕj$DQ9G0K\mwu'9bWCP'H%3.Y!=Hmh]_{& 5n[V,d~r"W~,!B@6dx#1(Gna0|8Eܞ/ʜ?@)梬whL10E:&o#E;-]%F
<'^A daؾߵLde0Rf0Rn0zBG0E7Aj>B]qFa3AAr[fAi.2o:(XW~AI!mmWv_.a_PR9/\u|0rh-I 6pq9D<op6.E"<Uɺj-`j5^ۺɵHYJigd7zK{F_0:{fxNtw8'T:/SWy/#AnusN5Deu}%k@Iѳ,땿wߴi?[Ĉ=e߯k	kb p[oBtiMv.#c:w4G<֒/]Q)v7B$qﾂXT.*D9g<UJˊXve#\D"Fx#Z"<^+X@k`<V۱5vT(JoH<XTmՀb͡ZЦJ	d9uC򲇚fzp+[LHO=wWb2L/I6	:hmU
JqPK`_h	    PK  C:U            J   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nPolynomialElement.classY
|[U?yh&sm0`}:	vC]Ҥ$[WtNa"0S"C*(cCQTF=^~Lio;9s+O# plQ/@"p|	PhFD pPgYRUݢ:e UUkM5-բ7(bjmU-뚌>b⭣!Uc5βeKVƣcn5m*JLP½!ާu)NU}=OMbqh2hP
FhF6jgC&/ZOD6{c͡`R*u=WJ$\Ժ8%F#ʆDIksrakk$I5k)VI7Z[0y%.krUo0sJ_O0^x"D$`)ٙ^sZXDU25vk9ɮaꪱPB	&+]nMmTF4[	H|W+371OMIoMMrT\cƄuu+j)=1(M_n%K٫ѺUx7zp[wԞfFkl=>=&	L&-Q	ĠiR4BE%)%'.b9{2\joRo	}G~J;OuL
7eEV&UۤR0;+ʅ!E#Fy	;¤-h-٥vbfuj:e>Jti|(nT.
A
dL
ȏ|1s[UzeB0ńuUF˙|9?&+=f!fXkJRXM=M51b
kQOmR#-T-.V/+s6L>D_<4vCaZfvhJ;\`drx~UխӾ
4 UG-cUs4?c枦$P)
SIzjrƤ9лMЯ('Z7.T-0&ųOw
q}E&J[:N)cd|1n҅b)㔥ħp.a|B+Z"a|zJ(!@PK@!|@!$t0M&	tCAsd8`-	+\ 3d2PL*C&&C˰>#9Y%ke\#pz·2,"T
$wTeX7ɰna6|E3jz{K.W	vܖWp4	~_#`]	&Cp^	'8@0D w	"8H0<F}<Nc<I	~>R~p;p	AMoCp/^	R<Jpq<MS$39;ѻ|!	u:O9ւ+ۂ=k
D> ȁR	\`X ^5CZ? Gkj5aS>#5!V?YPq)C0L)x; V̓*L?ɿ^bA0_fq&$!2lL?3fc^7(=0}XkT W9I.%*zl܊V?*lS|!/=Hhi@olEɡb#$|DS3|;/c
o{DxoX:\q	p`6  oRpL"ҀN|K;17 br\Tqq.џN:+$Ŗ"h
gbM77*$Ra[Դ+E,"Xy!Ghew،EPXŜ6y]yc(F~q8bt]aq"B2gU(4kE/F,6ưbƐX)
)V&bU!&
QX,g- $vHUC1;RECU^|(>.z!8218:]/	˩["WJxk
[K%z_o
Xۼ6mjK$-r3|/O=W5`&Hx}baF{YV/6~	wiբJj:dDl,%~=D^Y_
/."q?4OJ^]H16~ۏ]*ќ9[7G|۬lexCHڼ`CnU{:c\31L_dٰgngm#jNm}NܤB|Y2rG.BLTn9c]/u2{Y
2( f|6:!2yJf!q-YLLe,pbeA9uw_J,K)0)Ƕg>p$`9h&>{ xr
Ke^0
INN΢Tǣk&jځVl;ˤ;X7
imex 7+j6#jyY(/˰ۇb2=^h*XTRADib*ϪQjj
efTƷ1T6Bq(aǈ>*<!ȳʬA}-3V6Ka#Cl抴|+znRO3ОL Of:SvKgO)N82Q9X=x[CxfUdC=e86kMJF"xH)3x=`Z<
<}*V.P<%}3Ka.(
iS^Έ\}WaI}]sK\[|_!p|Urጆ=PF*yKt.|aJto7^ʆ}F@_Lh5jZMNSkb5~'
-6 إ_%d6^{#?z| v=~+y-C+qZ#ap9Bp'M#XJV	ö<-I7H37cgYQPU>Tk
-;Ҝ<=UYG֒Vm8yt:N4Йfӓ*O`8|J_$NpRQp8WzSXݷl[p(	k&l됬V{{hﰻ\es-Fa+67lr985yn5EMGM{15Dǂ2.rMzpA׃+<<NbObGF,#y
=T5Fa>K<?PK'6~!
  !  PK  C:U            H   org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nPolynomialField.classW{xUv۲.lA0MZ `HĖdw.G;[
XOPSbD
-AQ">PQ/33hL)f>w=s={'Ͻ	 .TPBgpč&nhddX)uKRd*bz<8Je
NHۖwjvzFd4hf-L=IӆNBnu_K;ymw@{jKG*=<&#-cݑ>E9KZZi-L`l,$;c4*!%n-ֆ#aU#F̳Yf̊n	̟YTkKzvgt,97峃fjF0q
Tnir9ԍݡ'2"4vSRTRKJ[ƒ_L{:G@\7(>Zޓ9L/l)shq-9\פٵ{#K%J&XB/Ѯ)
{3gH63{ЭF,ޜ?]3WIJ#zl܈
)yrM2͡ ԭ@VY,6+eKַ^6e^Z_8D[YfTQvgSF4Lu綈u܌i=ŒQϕ3#]"?ugvvP *3b0h3n
S%HaVxRȌ

+hVp%
*P*X`
V*X`MEe]"roqoCG%^"180%`~wW:g7zE=,fGQvblb]IY5>+sG^()m^`|_uSnPw[c}7bP4ח}y2(ó;{+,rO:L?3w
W
<^n*ϙTq1U\F&58CeW T\*΅S*3b!EXA*DQavĘVb*
z$xTC!kVшa0/{TGTP*.Kqq=M7qG1|FL3__ڄxp5>pí_b2w0| Ý=mw0|C0d׃-`+>pp7}b6`1|ሇ4g>93|T>=?飷":^.*NN2RVp!c̑j +vAP~raxgCBw_<GՏXh&6M1Lɇ1[p
M~%퍇i[q`|

z/> >anEn8i|tnHƢq|^?9SN0ũEcx[$EʡxVJCi<Jλy1<\QE
čz=eBF6yt'_w*lV3hyǃDZW92v0-gϋ(V<id\^]xH9AI۟mb*
l 壃C;x<੍1ccUSVO/4%4or
[_*>e/.5m}!201߷J%&	~+-+R&cR075W;P~ӹM	}dUɼ3s$wuuJ{{PSXw(akᕂoOq`$uS͔?[)#r^&g	IzVRrOF)l XAXESȏ}|q<pn~׌QxW:+L>Nұ	gEꍰ9b?}2-[Z)VOI3
%vl$cOa]>O?RRO6ύ޴<͎ZBKD8^M<Ax<c;;!8LO{2<'i|$b`&M79kfamQf/Wzg?/%f*yETKN:>c쎬7RtÔ˩dO*1YotR]9~b,MX-Y9:ioθyu6(*L[IXh)YubĜ1"&/T2]s*=bkoytW1(_6R\Yߎ(oݎ|ȥ~jW~(t=#󉔖[u:p YPo+УNzPLAEPlNwB,ky}h-ᜓ.>4D^IDU|ĢX,@F!9:PB`}?z̗_.$9ȁ.|Ү}zƬ|̈5r!d:GIww k*MO]-کyQ«ZROlWL9[_(~ycE詒b7{:x`*ކJ7PK
i
  4  PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/GFElement.classRMO1}.
P -q؜CHRz'g35_Uu!#=~<3{۽
4_` =U)0jkH`+h,Rq=#hi)Uzt+kZk[e*膾YTګNu}&>X%}[tkJi)8)I'uF}'/#M,wNߚ֗=8'9͊]M^z;e#DXD`#nGx|`oO塯I)''9C`C
_7&OQV/ /6!.Q+l
G޲<^ahYSf""o0Ϙ^po`.vU]_PKoIǠ    PK  C:U            E   org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MaMaPe.classS]KA=gڦVVjЃnB% A>ú~@?*
hsw=.w>? b!/"E6e!aY1]OVtFMtl$m	ݱbH,nm-tp渆pz׹'-uuZ˖f.pvt4҃*9.-/hQof?8x|/Kg.DT8R
`1$ÚPΌrm-[G=SB$2,; (_Eo{6 x3G>2°ӈO3c:)tnLoS&ľPK㈷l    PK  C:U            H   org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MatrixSet.classRMK@}cjlGGO$
A(XTB/=mSb(_)X 8Ջ'.;oggcvv?^ AțVP0^0/=$2\*m4Ky//W\I	{a~x8CG&Dt_^~,E;"
xZLckLì]CWՓiZӳ{k`ETA:XR	 Pq˗I
lp*_;dd9^lWkyb`noP{B6':IXQ5f׾klKec'PKȘ<<  p  PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode.classWs-ZJ+.CT[g$`c)qz-]%+Vn)iCCB&Sy/<B/Z=geN팅hV{|{G pGC"wp<+1^ՠƙ
ђx(r331%u¯)
c3|~.WE*xԼW\Ηh!U`^U0Xe^*O (^LJ2asbX^GjrSUkJ L-"EXX-kW*/R#^%E/YPw&/iH^PWH]󋾪$Y5_U$W."Wע\KbH0+5
4/l_#)vUUC
׽^>*U?Z(+r`t#?ɹHŤ*։a9?uɫB:]KK _Ǫ^1b41u_F-r= ܼItEJ$1X0ÔS[`B1m|`
D}]ބw$y	)E	qwT\fIzrqOlVA3>rT
*1KH{f
L-O|ME
hx.7~|;=x6NS6M7b\stҩn[~9)V4,XǭcvclV9澓IOƑ'v~EF}88hZ7ι'\IOhcmo^`` an$-ĐA~ᄅp^,dYxy8magFXY}_eǨg14}L00p-a.db0o2\b6Õ4Q3\deCĠ1ӝyo+U	ZMAu4]S_(@(AO44Fj&V/0щכuQ@zҩ~R3qN*)aJI10(E?l>ZR#	ǐ|NI1$nK5bbM84
0K23(uiJQj6Il=EŢ?zBYVh)arL]]o/9鄓6
ғap2wG%N츋~gdN[!iuXߟ\ɲ7+Fv
ǦmwS&@8u!4M8B%!a/<D5z(D34~^M;/$Q&;pn#ivz&)kpW}7El`O8vPSl
QG0\#IZ2ݰ)ye\ۦZ}"^ptEuڀ13pc`7ǥ8FU>EEK>թKR_EMC7>5h6Z{nN+lA^M%-ꚶ?qӶ;Cﻖ>pv[NǠڦ$geg?vN*yTNiV)[@vn
'_b$Yܥama쿤B`PKV    PK  C:U            =   org/bouncycastle/pqc/legacy/math/linearalgebra/IntUtils.classSMsD~֒,[U 
q
RB^cR<<L0lVY'`
3@/tzҡ
Zr;
x}ѝ	3  _1(bܩ@#S*eb$1l|%Fi sCC{zC!;>yk~j.;詥KQ]8~\e
®
~{ضXݶ9]=я^iUwk[	nS}70r\tmQaFT݁۾B$.2EHdӌLPŋ*r*TPWT,0dn0,vR4T#֓m!5/lٍKU.?óxWCaBq\*J:Qq,
kx[z,Q✆7pVÛ8w5hn:s"}S"ģ!%JE^Ѩx 0L/P(M'rg3&WJʯP=ϵtwp߼	q[?"%i>g4UFj$I5h瓻6JY#)j҂D/(*1M9JQn=ΝE_(f`y
k\c\uM؜N^1ap4Ǩor#?y{3SI`v2	0 _CUYir3'7bTӹyEKWroX9RUI&)lf{Oic9	:GXb? DX`g(KГx+$!'7'ֿKQ}_H(EuݛˬC(*^')1>85PKNOlk    PK  C:U            E   org/bouncycastle/pqc/legacy/math/linearalgebra/IntegerFunctions.class	|T3w	l3dYR!&3Hd@UFLH&,jU\^nPTD۴
k]ZuֶvS!s$.sys<yDrȈt\4E'*(N$SўxW;ޓ*Nn(^SY"H)`e<MZ2{m=cE%FV!fjj:sX-'dY\z2hs±DO"U+aKQjkvy o[ӂƳV64-n=eѪ+uAǯ}fi8c$z:7tűdw@*ɾx\P,nEIGñv8hew4>ГwBPt}?ˎ@qGcDO;2@O
96{:S͌E{عT_4*K&ͦwFS-➁>AX<՘䱴#_GShOG{Q֑ؒJ+z:ZDO<*Ѯ~V.\V:cxЕV$db쌧ⱁ>IBh |LZl)|ƛoa<?ng h}n%'MJ++Bݺ=T"x[,ޛJ${`hR]:x+6y,SS7вxƒR}W@mSq%o&sH핟mvݝiJ%z.3uQbF_ބҕ鴚fEUN<
=[}L<[;mY7#^{˴qZ[w볛+ih4s	LuVGmxeo{o*YD[oK"ow&1<P3%z7*bE:' :XH%yh߬Y~Qq-8U;bqL1ߘ؀AD'F1rc\G6Wzsܣ{IdT|O#Ȃ8YplF9lEV4[q$[ɰi+ٶg+2Vfl(Zpxمm-[8m%VfJ,նi+[mR[Vm吭lB?!۟O'd	lB?!۟O'd	m¶?a۟O'l	m¶?a۟pڟzHNII[=gIX\p1F@|Zl#?#?+#?3G؟'WTX?%{Vg3?kZ>'Z#z-{s^֟b^p,yM?͹aTw\iz%.hD=s]xkYp;'.9s_xN./ zkVuwm1ʸ[|B[\ՏuU?Xuf^4u[ݏvo^wɱCN{뺋]^{zP_>=sG]=kWuG^ڰO34I%NeNZF'59I-NZSꤘ:,w}NqsJ? xWgn2V*o[~捵lXm;?oM'.}Nn
pww08[d`v(vhv5Zϙ(Ur¸}pteJ&,6_̄]2Qſe_ЗҚ/U/:/M/5(^*f1=b'b\^*$6KhNcQJ^/-/iKKY(/U>/~< -^:&Kb'sayN

.qT&.|,YaUgH;tKe^:IBr/mtqo6ﰸwY\7y:ōQDZ| Y~$eqYb[Xeq+XŏX,8',~b!,~zDb7Yaq;YG$ԅI>,g,ā!=z{1pbhKEcQN@Xt]4ELGSH&w03|?Y/ޢlK_mn:E\~-OTi); ICMģS$UWEeijHi*kwˠTk5jE:s~jZ;!Zț*IF.2?͹8Q0]ڀRIݦ.Onn*.qV48}c6\]aG]fA⿐Q#4tؔd1+;p\6NG'`A:)X0ݕy2TKYVcƅ5 !'Tlհ5me=Ma3kbX_yjMApKjf-fˁJ^* YIKVR)2f?9Y+,۵HC婸Ŧ&􁽔]^XZ8ѶC#-%Qr9EL|H95Wc:	^*`P	K!7hca;@
eZV*-+9JX{)#n㊻*dhEV~u7 i	Dw8D:7c1ciFEkL 
,բ|}
VE#Q?a5	VՏ!|lc3\W#i}~H&ʀ 2Ʌj*"fN532㇙FvYFv%Q9jcOsL_=o]qŝ䰃~tmr7wѬ{ņ{Ex?$~OXAt>$|0LAHł]±/I9Js04	q"uv9!:{vg7Vݨ ec(rz'8{*\Jިtg*ԣ
i+SEEts3OYQM+kɰ_8Va7f[+Z{C0п1[giyF|nWn7&[sbo.QU4^@7
Tީq85:]^*Іěj@k*k5<W%O;ƶv]hp#eSS=чK<bĥP¥&0cFüTPeMo8`4w1Ses7W9Q~k4,E|Ƹ5dWʭYLv2.YguiqDmS	ZLw#	omU?/n[9:v[S!kT1	h>=n^$O,Ss'2-?_rk{,Wpxs,gڴ]
~&!/8@ߗ
)~_!M7}{!X$4pINMt5_X{y][5WKs;}Z]vN_6˗Bz|S 'f@z}!3|e}y>_R"Yپ2kC8	m!}!|CNtP, t-0MtI73$
̔4̒tP" 0[ORIe%=TH:̑P)xIN0W;WDDII/ @8}'I""IQ  )8R|
8Yj`z)8X$Z`g K-vIA`_KkbI+f)HX!T)Jq&J)8M
j) N)] kcU)ΐ]L)Β:)Qp`1
KGA:8.(ܳұ 8[:8.%n.#gIN+	`tp꓎@t\ Ԁt\
lV.M:gm[s58W:/}]:Γ=K"!<xytyt!1/2/2/`^&ylK%yT
WHe6R)c^)y̫RTBoK%T2*wμF*kJ,uRf^/)]R=|[*3o-̛#RG*Hg̽R9̼U*d&ߗHT`P*gH*f|~,K(sT;f)L]R-`jyTg0HuT+?jR]b!60T͸#3J5ƼO	R=T/`>(U3N?wIFRT8=*ջI~R}yXf~!էOHOOJ_JWR}TxZ#HMaVjf\$&H-򘿗fyU2Wj2_jfR3_?^YWfWfԮe&?IfRd!ۙoJ7oI7oKA;R{g]WqҨDeX~7'ۗX/]đOjN^Xb\7X՞>NkwzA#c~6c#? hN}CYb$:#zf^O?in(&C>yMAW{[mf'mvuB;΀
Skv5@aju.1y.32hTh4<hWZooCu8ۼF_/I69qþcJ<ng[qwawsne
^#J+\s#yڂp/h"u;r5樻h)U9sא4ŹNB:_uF98r 4+W8hf{k
NAӫǄh.x=GljΉ|*&5#Cκso#?-Վt~0K>Ɉ
lzۿq4>(QHxbߴuwED|TvQqrCb T#┣8

6WoM;T&?>\Ǔz">c榇`ȳRsڴ{E}¡imb FncNcgYrc8sj|/7ټ\tOTW7쳿`<8k\'B>/_|.N~GpOTX!d5gV`sIK3o'_E_OeIgYl%֙dFdC/ٰxpwG188qu,ʬK,b8cqg/F0G9B5prX}K5򊙓jv̜l(nVջH沙Zf39$5峡mZ5svڙv/wwNTHUc}ONp*Q{5˧^OA
5 Y<e	bA8ٮdjk;<]7iNClmw*C  pb1)$C,XdlZ ag@$ lCx s<C(
Q
1b:4q@!"CS
"84CtCd3fb20^ 
J
ePrC8
C0Ǡc@A!pA/+} h?y0ߠU8ɠ?
&2u lk@ĠWZ^#pA/z79`AؠK5UW)=	4`A
zh4aɠ= t {S
Z
	Ҡ*t'ڠ}h7~ 560hpA7gXg. j
zb]WYN3=|op/Uc{6Ū]7H|^=!V磣Tt>6ڪHqSD10@b%,Cs!f>8}R|[iNi`-NμSQY5^k3OM%'!|#>'l?9raqX{Qqeos5W(@D{ŦCE{_
R_tGviZ^_=&Mok:TyFoiW]-|cya6Ne^ظya37xH`
S!`3
[QPK   -  PK  C:U            L   org/bouncycastle/pqc/legacy/math/linearalgebra/LittleEndianConversions.class]S[OA>ӝPXmv+Q#$B4YVZ[-II|/ȓ~Z̎B9sony(P;ԼS(MNiC0'LLt!q,I"2rG0'T׮Z0-YQC$ƏŸ"{>sWhVS*KAݳ?)u[#7ok6z[l\-CJg3TkKt+6n@<h8~ 6*C:O : {/qHC&&dr/9&@g-?>^pdZ@$P/pdCC]/"K97WK
)C41QBAlۄfs{#I/5gIeʤ	X'ETv;3\@8N/Ƞ }(JvYX^dkW ;8;p>ě
۳Q}˘URk4Ōj1Z%9~Y<Q#V`XR֥\d#ҠR2P8픘4I܈ߠ✓BG:w^n2c˸1d߮-,3^rfD˲ z1,/a`g֤O}}2mAQYO\6#])_ThꢩxڞLo7	L	T+`JtUҦtl±F T!E	~ v#`HW^o<Mjq|iZ	'0(XOItDpPK,pI    PK  C:U            ;   org/bouncycastle/pqc/legacy/math/linearalgebra/Matrix.classS]o0^f+0؀
l|x@ R*ShQ*73Y&.3		~ ?
qP_Z{}oo<$Pp*^,HD9Rl6;t~4:gn6ut>ﶼC&p6(L%@)d.yĎhqM4$ڗPϔĲ'mOX	9{)ш'rElcBw(Sh,؍>vy$UlۤZE-ǹ+Zƌ=

lD`é4t;1=%ޑu%ӹ<`*N5Ց KN}e ainwK p~Ih*tY8c
2uE  Kp{%Qr՜nbBud?pd_i>73di'nx
v3^BƗaoʷ2zW঩PK    PK  C:U            @   org/bouncycastle/pqc/legacy/math/linearalgebra/Permutation.classT]se~6tӸ6 *I(Z]MP-evMz87\Ҏttx^:xΛ-)c29= 1KAhAĂD"d%=xPCOQLC

K8tF.BM=._o',r	N%د	|囦rtv11ƌX٬\õJNl̹PδLP?%ǔ%W-\SwJ-浚aW	^0'WʛTLzuEZ&˙3l+3h9*M%YճM6\1挴m8nfOW
YqGregPG\nEھ5TIEjj˝OOa3|iVB{Zl֪n8*yrT)gJ5'73mriO-4*]0g*F.3͂Y9C	|fpf2K'opI\`бMz~l2@{,FiM
˼Ptjky'Ը=Q;RRЧ 5+8~QpTB8ٸ"u{2ѻ~,mz$*B?Hԓ?'\dUN;Ъel*"ʢSE^TыWM^lWqS*,[Z1!i\a!.aa03MbE!.K!ȅާl|&\#wu(7flR'| T,$?N,mpje,Mt$i_voE$௣>p!_t]^SGzH$ȢMr	6ilT6QRp5WhAt%WZ/ڀ&RP/ęrXn!
I%,2JvAnHp`Sd!P5 I}٣]n֣d(sOrh\B{*LFߑ~ȿ7,/߲ @*җ%A	}م o:;QkIH{!Ir1%//#)ji7͌ʍy?_v- -
q)A.Gɜ*o{)AlՌ0N-[˿M*|3
2iWDQ^
Fo(;81GsS?{M߾Fnrc4
q?c;ɟ0*yXLxɟztS(v*]Xy@ToaISpnGwzG6.`N$_O;|(ʀ,=D&X_5Ɓyϋ5Un(8)E
PK~     PK  C:U            I   org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialGF2mSmallM.classX|Su?OIIxH
2y͔Dؤ` q2@H[,Y8M5skd[ڒB6o+kklPtHhֱ4i_m%&wÎ>s}{9ޫo" AKZjPA
ZkлΠ,#[B1;^#b15ɎFRΧ;)l*);ٗgb_e"mkVhIYVi|Ď(sR/Kؐ 
E^>:冫R[wK!eNMzr{rtew-ѩA1+P":RaK@v4[Cv Z1Rzas*s/E
"!{>!`S6(1zޱwK_;vlrWW[o@o_O
a\|z<-춑鶜=J
JCm9OSA{o1Vu t';V5(TS({ɋB?46;a&Q02?s?]˦s#c%{=X1ܜ.ک#E;3ٵj&{ %"FcDm*a{-Aڥ
>:16gi۩̼`vKm"G^
z{c(5:ԅ ihl=G1<;*cF:l,`̎ր y0u ՖK6aMo=GJIVǻsM1ޠfRCuRti`g0n!kX6'lZFolf <[د>tg,WʎL+U¶b*]b19d*,X6<KlD 
*Ng<NCSM crP<B"sA<[]pX^2BJYNP4.lgt4TpbKŁ֭STNqZuѩW>}:iNi2::	1WE/в}a"lCcyc_L~[|nZ:_^D\u{qri̈\r8G;`W3J`zvob	'
s0\eQAHt/KK+q|%|*pURjk:>߽:?O7~E>Pnc`i{iheU~v2x^&SO0B"짍Lar]㧻hfS>$}5e?ӯ0nG~OۘhO<Q?yq]&d)O|4d?=QdU&0JtGL>L>L0y	&'|4S> f5}/09cL&?dGL8?f%&_f2Y=Dۢsc_UȏR.3{g)~Oj?K85c~W4rksE5i=]K
=H7~
υv5MfE,34ci}ЙxoNn}/򜈘{7YVԦ5Hu4:0MlrMѷStICg|q^:)+BȭӸNE1%k$"C*T"ƃZ_\JŦЂG)h}29s+>Mtb)O;D5+'v'*-'EZSNyVR3:ץZQRkXk	, LH뫂hNsDb?^G{2S䇱19_6$-a4)lf:jBS՚9Jw	O>Jm4Hzw#}89H߄283Z
pBvBq>2u䝣uz@jhey,D &6  4383r	yh4<
uQN
Ҁn0:<^CqKf\O[=.iTIK\"wlN?v`٭rI=.{<]ްv)ʃXA{OѡuS<A2!,
6zNEz5H&XZpcOD}&uL\$,HKٿ[C*&tTly/@жVb aZ*S"[P&^U"5*6z\ʽR9V[c<K"P	fQQe;9}X2љ ZA]q56s"&iyyQ̋%5Sma
E>DjM߄^qiԀYk0tF%j5`(=1F>l<[68^c$H1,gva7MϟRot!mĕ Z#
))(ahFî#DH{p"&j7BƁUSjDYZދu:o@BSE9?	%!bp8,59 S$R[	)=d}oWz_jE:*M0NȸEK)=cAmOBC;^nӭBᝦ~g2xEUh8=FiJ!SC^bNrv8zX3,)9ϊXX_s1UIH!EHt+o^%3ǋ8WU2"7(y2#nV28M
gLG4`M}G@`2T-s|x{.ESV^y7.f_X;Fٞsl9  ۄ20Fxثg7ӫ^ ͅa^5˃I}agL⽂h~Sԩf 1WM׬=Xso)|Je.1r2xB2zF3+,Q*X:bdU84Ǎ7Aޠo;x(I~	5|PD|}7дޚ~Rq-dt+p$~x<:MNi)k9y$3IV="%1K..[9Q/\T$KFˋFc%>lSj"ʋHh5w"Mh\G0ń;cE{zDYZ"Fv{7ђG5b¶W='店P$ضEg:C!|Kŗw4i_ ϤsKs
k.	]ؿ3B@`kpDYr1@|nw\J㷬(|R_.qO%86Z΍ǊŢƸCcvhrů(.s`]I	h4Uo8Uڝj	|q\+{ŪYSWS&fhjVz?Y$ ]\7 C(V,.$ͩȆ`tM	dS|K8(jcɫA׎sIipOΝTNVU$Z}-栟A0wW%pڤZZ^C@_\ hʨ*XPI[nzS-_FZk@:u7ɹ_xy_0  mʎ+؀Iaì|wFϒ/<;s4#C}ac5-d PjHCű-wPHns'6LT\C#pE|G_pE'M<8CʓKqsp}C_>Zt่	.xO,}H
|B:)#{5yWIșQ9r@x-	E^YҤˑj6M	\;63E<|sk@<_189rQoԀ|ſ5x']NYzWoCE`_Ú+$H΃RcjPBb'\PK3;  #  PK  C:U            F   org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2.classmSoUkv:Y7]'kQ iiM@Z~TZQ.>9#l6Q,H+$hK8*HABҘy4J;3fofp ΡE2(S7R_͠L-̞^f}rό,
/1yM7wuc[Ua&a՛UѰf2G
Q}wK-qGZ!XUK'͊[ZѬv!n<aY_܆{®3zޚݨ,ĵ:Vo:W6k^k1DW^5_nn6*D~JF+|W5!lϮUEٳ7fuɧ`yn
GP{
V"ℊ1vzZ 'z)V]@& O84D@Vqd tOa&838-sRy)hզC3Nv+uf
q!	fSW1溱DuD5*]08c|8y-?G;t5;ݟ/)a1>F_D,&"	t!^,pMimmh\*["Nk
ߖ}4-(ٽޕCgG=#\NH]dGa-}X40L8Drɝ$Srv0KAYhCk̦7
zc41b)fP	|c}gyhJ.eݔT3{ӺsF1y#9i4{Nh90CAtC)(ĂVr$:#hK6flQN'ډ"4_&(k߃ӉYTRxi祢쒞3wìVNG@W`kA%½a/vo8"
we;BJPCoCaDnRoPK1Ћ   
  PK  C:U            G   org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2m.classU]Se~d7	aH*!FS+TPhKXM6$K^:\Zq7mg$8֏{g/8)x&:z6s{s}ݟ0nFf]. EfyV1`:)Ʀ^2̭Sp(9e5gr{e2ōl2rzv;Nq,zIrJI_킝7ut"5?*Ф.fY+k狛6`,ٶ3v Pkuf֪@kpҶffMPY2Latߒur~w2hwzxtcfF1kŕ;Fm3i9<
ʚN[\xA0/0U1$ F>qgz1m[Bُ~t~t:7S
:jdQf>
|RνO^-LdQlxJ5x5Ҙf]>6
b!U(x[i 0C+<
|*243@RΠBfemPAq	}3>C"3	AA221\dH1\bRI˔W]ܒqzqYGGt-4+î>k"V}%.&]i%$7|\s{05WL̎EC?wދt!Җt+I)zo21̎G<:b)!?9"Ru<q*=CK<*,jdUt>$/j{Mj=,fvGM3U
1		msո?)5%
<7)id븏RRi-ZJ;2*=@S!0S\'P
f2TnvU&}Z*G(ua_KqWpHQ/ash9DM $BN	ѿyBx)tj$DgU"
%h82ճ PK4   	  PK  C:U            >   org/bouncycastle/pqc/legacy/math/linearalgebra/RandUtils.classuM;N@M8L$lCIe	Dze6kl.w ih@ # @{қ`ubAy/Vvͨd*G@pM6_g~ވcdH`+q}eh;I +>lRDO*c%Xd$TrdòQal}eEV׌_R`9'H.15ӊAbyP1,{	uoyu7ۇnzVxٜ10*PKp2#  i  PK  C:U            ;   org/bouncycastle/pqc/legacy/math/linearalgebra/Vector.classR=KA51j-l*bX!E6ra	O6 XQۍ;7o}x}pC_sϐY#s.C,*e\ Jb+t͈<xҾLbX<`,CdDS5g8L@FI>\Ps>fUH
 GV$KX+;ZCXx:]2V&ź/k^|6N7uk(`MT.ݶ1Mz):ULTk2 GU[~ޣU.hrKv-eZ+amPKoKP    PK
    D:U               org/bouncycastle/pqc/math/PK
    D:U            (   org/bouncycastle/pqc/math/linearalgebra/PK  C:U            7   org/bouncycastle/pqc/math/linearalgebra/GF2Matrix.classYyx\u?OY$d][Ƌ<&
1 ,bPcx$Ҍ4ٲQUJDI@MimvDS@% 9i4MӦi>%6/p%OϹY$db};y pkRV҄FV΄fvp	]&t+`k\}+oy{oS@m\{xጆ/zʹD×n"ؼ{s[ݽz#MM[nّv7R7yb{[.7ҩ&:9~kӹ@"Mtet&M:S@z#
d:3=遨D.
T`2Ku$qNkk5KSGdm:җH`\Y3} 9VpWA]%n;w&r=ɦ&\'N&dG6tm1zLtulB}}tv.ggKD+ے9ȦDVrٞ,+ۿ	̱-Dgݗf!'N*Pՙ%	pˁDz ád"[]͹do_p``WѓXr(p$ DgLWb|{{;ۚt%C7~ܑMMR8Vt+v>W{c7*
?j/٬ܓd+*$LUX4D:<[Ah[ֱ?1҆M=æ[d.չu3ٗKe҈OqLwoܷ/͞Htьd@.`6d 8NO\=\`O.׃2zK?gKVN75=,y_.Е܇nUFPiK)k	nkݙK)4--nMwnp'A	`IvNf{s	a;&cᛵaEnƏlWfK/>2CJ	}0c4+AB
b@h3n3`{߀635 m Wt3Qi-]>Lsr饘[슜@\,oۈ`* y!^*8Gc@d9cxZ`^='RU#U\׸෨EN`TVjfTvq\hQSgVA1bDap>8B	w]5k>KKFy(5C?|?<fACyz	jDsԼ4i,
A͋WL
5_Oy?(5'9I͗yjBר+dIjq <MͳSś"'8^DQRٞKthMH`Y
KAT?σO ՠ'ǡnT]$Lg!wN_nc>37R,|:Q\~N|N}Tgi<I,n3:i
fgcFi@ۨjx|SĿ'kF5em
G10.6x3(`)AkYQ?v*`Tk%`3-l]G,*8^+|%?:?vU[\cfZRD:҆0Va	hy
V8@.U@W9Lڀ]C߮I$|݈\e\AD%I|/h4|6.|gM띄õA|k$|oa!`TE#M4M;g$idDk&	kBMa$A
!mua)_}q""A1 p	B$MHhY0
9}@j:%Tg
Id}$JcWJ3cǘjkUQav)X@'s,8@pWd, Zf̏ԉr4),9fW"vo!7
 %#N}~s8)h%L*ӆ(Pg'
1_[ӇPSսr&v/"hL}2\LpQRZKZ'\Ya 3p@!⦊A2nvfg@Ř(a
smņls
BA(Hh
<h>I+LT++ߏпn	c &;Nx	7vt>oCLfz`G#̘D̌sI_.aЀo%}#1'pk&<CMr
!ı'mqs4N́{i2ӰO߶"͓u[ɜ9h\̉T2P9Y5NQ	Ba59Xq=Qwb?ɿ;Z7F~
\ sJBU*B.EBǑ:W;ƪz"uVeXA,8t-R}z-R|oԝϿ2qzІEbJ]:
^ykyf>
~EVю]ipPgXN$*?vD
܌WX
(=-P9mP'Yoڿ	SXBTj
^^]nULf+}-c_~l]?FT@hv4̫F2c
'v=^=~V[xjqF\w{!/Q@_NgEqphm2CΝÀ>pHܹ9cuuܣƃw&qr4nHFicsX|#%WΜ*el
Ii`dQK=Z]q:BtlBcRd|ѣ^FlR_,Wux8xH4~S4Ddx@=/EVU`fLU4㰒ålajb	'n)e*+ ]{
Rd'NY`wZ4O8oj<'˚Qf2JA!+szNnXSV!k.+(D*-]R;
_JOpXD}wݢgujr}Ɩ6^̠]SjOtY Ǽr-"5irG5`NPE獗`kBayE4W Aً6Jz1$T*t?
O񋣶ђHƍP	
XO~Tw5, wZnحnDVz.)bgӾ`	v7-#aH7rKp
tX+8-/;[
p?=K
wqy`jitF
V`ՓQ)NdJTˋBeN"WpYps!|VHLJ`zo*-[7%J7+oxajЭE	IV>+#!|(4x?\fXhQL?6S=L?k@N%M,*Ed4}Guq3TiX@(_bo1ȯE8 +0BEB>
擓1n&S?cĴ$~YTD%,P
Y,̈6a=4
ՂH؀C߄H<$zձMTJԸR#bƤ\/B^C9dCU8^WQp,-ߗT~vn&ANb
77<^<N٭<Ͽ~"I"D7.9Nh/SVdoӰ^B
,$H*^5"aa:̯< ZiQ;\+Ne.yV&aƱOUQ33^SPIY),*\7KQ9x(hgPO<*u+{
R]`hi_`fK]`-.n٤XVYVnavBbzw05]{aY(Z^bـE"f?8Y<I;|5%EI!й.ERAr*ER1+> *<&%|wQ7zX1Ve]XިBdΔn3qhy	]
aNkh6ϗsU". 	Ⱥ[?a/2\TdW%K0bm+)ϋNYQTy8qeooOGˣӺA&"eI}e5uat[Y.wwPt
]W8>V~+5pVvRG@\2B&+U(ؤZe+&ibiX숐}bq91Ơ)=V'-D@x{Ti_k+	"i^Ò_bdzEYK=/f=gYǔCo0[/~$X!uz8,A{E+2IRPEP:A
e#bs^]}
VSQIYegG\X~x}jB^c׽xo*d>8":<bHA:{wMd4gVL	xu^Jx!,qFtQrP^+Ae}|^$qGA?Y<2%KGiL`yŇ"n sUVui
|]:;)!xqLB@j+pSƶA_=苴9raUKt}	A4LFw*xm)4KPPK͡!e  *  PK  C:U            ;   org/bouncycastle/pqc/math/linearalgebra/GF2Polynomial.class[	|T>/޼7;d0	j2@XF	$Vdѐ`
"v[[.(V龷}oe|y3c~s]s]޽MzGhq]fN 23 A
@2!ِH\H ]Mn4.YD<HH&$ R!A>ubZjuhCkjsݡ^u:tCZЫzCW9ѡnzPC3(3(\5\v]WhjA9sW
v^i9g:Yd\/	W"Em-4ȚNÂ'?TIRsUeUJUIYnWUvU]nWUvUY77R,@U-\65553\6,uhW
Jk){%Z
n9]ᾁ^x6nd5Xupefۼu+ \qںUWw]5kwڑ!".Xjpwсm]#y[ힷkd<v!5ߛ85/ǜZ RǠc`akԀ(unyxwߗRZfZ}#M]ponA]Â\or*i%\ށԊaPƶrWmZ5p>nbaUjwd35y I)}+R=}}ړLF6oIu7u
tv|%poWPHVJM](7^fgeTkFF:p'A3&r+oIm1PT21Ifj[á5<kF٢@Q7k:{WZp'-X\pZ\SU/N!mTWctsd3?v_?4A.
nZz,,]<OS3a ݀,.ųYikv=*к6WOJmvRބwRץSkz7W\`x
Fˮ/׋W|X5LFa^C>,]m7z'h[,1gxtPW
nѽ#am~m#)+22xIjOO_6gd32^(`'K_uY=6EAFc .pSzlg+6]m56۴Ŧl6Ŧ;lzMoNn;lzM{lk>>dPt%ƻo᜹&n ydsVTlN3o/%v晙6k¶E&L,o_vP혨AW y3l
ϼ13m,I&ITRb/þ:q)(wQ>	,S4}~{.B]TQuc7 >
/H#&"BFtuInti.C"t+5E赴:B9Bw)D0
=~I@>BCÀ/?Fhе	/!:J?aQoc 0})FI1p<L3Y#9:zG$`| LlTLL R@`6l9s 80 $J0}߈F8L?4
ȠOaڑkʓfGwQ,aJS0(0a%+6)yikyasR\l9S~X_Vl!\V^l871旗?l,kSjLSC˽뵅LkmZ[^2Y%kyѕZMtms${'Eƪԝd"?z?HFdt_9L<Lt24V+14>qdY<͎-JŝU;"?Vn8<qQpfQ f>j4p5/¯Cx46RlN>1{,.@3cAgGb5cT[0'f&cBE;uv}%+̞35wܜXEc kgEX4DĬ{hr2)ˢLnY1ݜ	i%BUI1zjN
,x\/sC;x4k"+p7Yǜ`eEA ʏwTSm{ò3͞EV̔0!1'86@#-{KWK_jG;	$	$	}V;bTAcWPl9YIrO<:N䤵:Dd-{o%y[2By8tѣVb~쵌
a:ɭ7:
/8YuWv[)>8gq^%6!33  cVgiU흖3.lE흎
Ռq/`2.|w#cf0NuS&}D_iFsvk;hbmMvщcE3UB)ESkW5fu?h顮by[M&*Ūt;4nZcNZe橫{*SWqNY>u'/S}~Ԙ'<cavŊ-HSW)<uU"✲}N^|bn2q5/m3Zsxk
ڥeqޔ #nݰ^
OEfg6;8ox3oY.#*cug.7
KJǬ2'Jv<L;Ck~vy2q/i.*8Lv9K@6Yߎ߽IyS)߇. fB8C.Lwle3wSQȽ\bM˨b@n/y^rMY]]Ty]LnȤ?7Ǥ+_x~R3⁳zi`Yg)NH/y&e~7|yN<IGw/:ڄO@-$@RR]yO`qO㬚"/oc5ڐ~HثV=C56˼ϏXD.G^Ȣookk|/2*Mq+GD.ja^'Y^Spиcߗ>/u٫Q>~>~>}~Ϭ`yљnzz+{3 }nY4DvHE	v=jԘc&q:"eC[WL-xZ9=/'ʄ{l[xvB|[{1[v#-p2Q$yf7"F7MOaT|[-G:Q,>dlQû
~)/|NQ˙l/Lْ|ԸϊRZ
T"Kݜ[>SdPnѫ3Ey^=rK*!dR5V"$*"q.!Ău-
H<u8Y䔘c!HIKrD:NIYfQtT{x
s:=nr«)%OPG\gM/w2)tr+$Qo?85v-KTlNg<U\,rD"9,r!g<Cd#fh41hB(liP=f(PX=

ӳ
g%z6@!F4/|1 4DGGd}eJWaddd)(͒-7pDrQrB0\ӠנQ
!J
Q7Ut:Jݷ7"Pd=DփYY+gș;Y!w2!w2!w2!w2!w2!w",BY<ey A(˃P!LPzNMУJ{r<O!#M{
ziBG2dz6}
<C=K =Xv49Kfe)X4K&`){f)A͠tM_EZ^X{UߺMUO^6/
.{2EzYyBӝlw
Vo+<9,}Nd
/
N.gNܼ.c9rოm*J;o8zI\Vxu~Úa=h-ͲlYJ/{S,Yn2n;Oh	c/kY{M(8{nfG7xۑ!o=[a9
s&R
V%cWJ{54WAdy+J4K4+a'SWȪ+
XJ2jѫiejsW$ hmYk
dt^N>ŝJLj좌o:I
t]TF%)aS#m9{
txLa;IX|1j9FǨ=F/~ސ|C)?b#ܬ6j+P1s79]4o_yɥ
%1sg̊w 2G/)LVlu<I8AQ%ؽe{=pWAӬȎ9y ~م囖M]l\\BӃoYmn[.$A،A->G`IjfQ/OO<3V*[{TKjQKJnAt".i
}m%{+/dx{dV	I۹%n&|۴B^n:˞H4YՌl\D0o\4zj$/nNfU('h\S25FUAO{bNߖs̶֘B"Slz;8+{XXnJ|V.}gh:[^/1LyM##vy`2o=NG|Z	oi=,ؐ8eRd[d $bm@ڮAn&ﱇ:Fu4?T2Pwl*],JKo9'y9H|ݨߛ&$rqZI{ ''n&91+emY3
Nȋ7?cm'0̱1m/}PsB^+b]zPc%
{l-2bD[&pbe,_d^z8K6ؐ};:FYGz05M/ϰǝզ[wKwp9Dc1p̬ΏkKbZ:VoK'=8mlNW:qboZv״35ͻ*o5<@.A,_zf6pd|v>MvZUd0{QC|K)?7'DOJ!/Aw9t'TQxmZӆIK6OTT}AR$LGy EbtpfЯΪikgj~E20>|XALb(s`U0K}e3sZ/QԱXMdrӿ<1&L/aL,	x1 nwTO\K4%~v?kUm`Y	o%Zr>(on
^F91n
u;⣊x9F9t4x]Gkbf@OqpW<*h\SO@Sɘy}wozcyMM:Zy{hQǼ)E%77G(AT%Xm}5#"K)Uܦ'g/$gâ|o:|҈MӣSy!h=Es[tDx/ݚqK\L^.v1[lVMkw
wp7%O[+ߣ'Z	,q*4n"3&}zsɇx`Z}
@KB%Ǎ1A-܉5ANT?z)/@)9|Ѭ59?w^럔ُjq(^ﹱSjjԪ8dɺT{"l<þzZb{
l4.-	/{;ѼL}.5sn9*@܍Axӓr^MS{ҾdYlGd93|sj̻./ӛ?8Of,H:̈}WxWLڱ*r,۹#H8/q,vX<FŃܫj$~萱nUBb^:?9֜Țl|wK6[:	T<yޯ<')F9UmJ˿EGG#^E]~,fmnޞnpO[eBٜb̴=k˵&EZ~53~Q
ˎSxʏk	Io`\u<ꦸ[v/<Wajѐ?mJ&ֿ},kN:ee%=d۞NjP/}q*q8!o-
~wbl-ZAlwW,Gwtހ@BnzjHYS󊱰sSMޚڒ5-:yzd.쥊Q!9=je~1ivdJ9I?p*˄ro=dG-,x{?)/=_veMf8M3f 2GżǳV12:</=dͬ+{v `3	y*d{nS@2*}7BYDK l$e6'g_[JҲn	C4˨X҆S/zazwK2(ޙ@4:-dEEu !dÀ|d#@
(@օ EӐ-40ٙ"dgC*t2ld칐^<E@6	R%`!UAZ X"H!U {Bdk !2HTi9`
!]x%V"{rdWAjЌlVHk km*d t"{%`!k W!ЅF@7=R6zCj5Ci 0VHB#;iulCkFH; 7qV͂ w
"]"* (7	Y4|h&"]y݂{nE>/='D~|DEsȟ~OCyXGD>(xH4
~J4<,D~\#O3"?)g?'ϋ(%|Y+Du!7%o+h'h<*@4?G"X'Ds_"J_F4|^4/N4"QOEh-Ѽ(xL4E>!I@CF5vwtZvGg]qUx/u;
BKxց?^hgtwN2N`
w2,N
nL`Pxf*DE ,e*p+d% Y ]2WLV&Vp=G;W{2w2w27GL+|	e/LU(|<eoW,-P*|_DY@YPYQ.R*|˔ZebeNW.+|+1s%JJR%R]d.W2v^[d_RkdR[ڔ_RP
|R
|W(NwR[+W+(U.U|ݪ|=|)UM||U!T!VF_o*߀*ߠ*Vߵ*!߰oD7bNwoLMw**U|;T|7Fש:NUg"EYHw:魪N!}+DUCzCFUWMU]#U]ҷVw6oUu6U/wzwzwzzTVz{T@U߫jAj߯#A?cA?> P
jO?(FH5
êQQP5
!(FjOF?1(F?	(Q-jϪjϫj/j/jjjojoVjVJ
ӪUQ=*ϪVN
Q*W*?T#*?V*?Um3&?Wm&Tm+&Vm&UmjTN	UA	UI	UE_UMUC?UKUG]v?څj]U{{Cbwc΀iZmN3-kӶ杂T0?8W?
8ʐL}`tAFh48-a,NeE̝2Έ2Ό`,1Ίh)cIt6YsKcY!cvLv
Rqb$иxb'qO
œqb$qqWlq%$+SĕqE+ĕLqeR,%+g+<ve?PKm#  vN  PK  C:U            7   org/bouncycastle/pqc/math/linearalgebra/GF2Vector.classVS.Bb@R-_&v%1lqbԋ:`i!@	NRҴ>ĝdNܙxiyЗδǌ~ٕ$퀇ᜳ|_aZE}*UT8[+RgxE촧n뜉$<Ag1)ݑA!yYE,WtJ؞63cZ$7Ft˜0)#3b-|O±FxTOHuf><3tȅQ=CCA1O	+#mL¥'t>6fdhQrT";6EW$Rٌ!:L0P<ƍq=PaLZ9=a%qJg*lnw6ߞ4-/ě`>IdQ>	E 'YSGh)%33d$p =tbB	)gFNLk4mXfdn	J݌ÝL2F$oqAk򖑖P+FbjqA$t).mӺ5=̱Y3>/(2z8i"RF؍Da6̌Ԉ1ӛNj.xo+:S4oEpѡ*)X&gU1-:=Izf\zn':kl:0NHM"	ϓwvNYUVed>ʒ)ڹHdBS\əN(Β§OERpXAgQp\A6
:E'P"=܎]'Vn`#u=u=0]=/E #;Prc;L%jlQ~JVZoxWl	aIْIM#kMoMC*}8Ϡ̇yQlNxPC*}c/Aa?|8+,2pQɟC<$}}0y9Lzу:S^^đ\1n-/^k^\x"r<{
2^\´렆&O~KO֫]eF?MpZUњ, o
TJKx]{ӟxίhiئ~.A  NM@Q !9"k-75WWE|6o}NxV7߭ .Vo8<~e4[#бl[2V\ɂXqţy׸5Z<-W)<Өyg-j=I{g)$كpbd&lh7vGr#lŦ|X>Yݷ*)387E(c]rv4$yA2AұP<Gj,\Zr3]~ָǏ;E#l۱*pE
6C>~rGf++ʀE
uD>6Csd9pԆ枇gNBLǜLIm45Qo܏ K#TJ]({HЄrV^ql8hNB\µUa=E x:-g`	o}P9I:l;lhęUlGhF Jb7פ¨C?}'*6G2rh>S|rii1s޶?9=q]zPURvUQ8#8F~jsX`c=/@?Ɨ7tL晍wQN^uVPMasvBk(
I6wPrX*萊:$RLR))5ҌWkع
p޻Ë s5w9UWHtb{j(Ucm"UrJ߶I~Bprڿ;DErrQ&)"<4yÚdr\ȑ:ɸqZEpdlI}vMNYc|J*5n~ryİ)(1ogcK\UTeJeD-}ɷVgZT~)L՘V6CmͫyY#keJ-)Tuѻz.Dk(+P2p>+xYOOzd*q㩝v1wyNAo]
M?"/BvzY9\e+GIPlargmL&5Џ<Gz8p=^}^|o؏Q$oAʲ`1H]/?",|W≸Gvy*j)r__PKs	(!	  P  PK  C:U            7   org/bouncycastle/pqc/math/linearalgebra/GF2mField.classVw4daxa!%SK,6Q1Gv,=\MH?WYP6ްH!'9'I7]t?/
o#̽ݯ߽ q$&-t}Idؓ$I$'1"S/5{fsV]oɶn>6+$m̬px*x6s{5쀠L	<<ӱ
CzN<4|i"qv.b%$q%PrRKmNf<5=4:|qȭ!A:H!];,2|0EMyYsE1CܪV)U3j̭xUVaC`ޛ|kMiPlR[cIaz*
&am~ζOUBT4˖["(	;ۢ3{^[4sY\'UboЪnvc:*e7k;[,_kr
R~م+u+[M6mʨe[L	캳JcDKJe+AWZ~kՊ˟
kYnE}ã~_żc-|+jztIT~쀴Snն^Osej=2j`KN]_52=keϣ%a`X	PpRi$*=zGu.=zrGy[ߔKl<^L =Biѵ|'sa>"|YƆJ{2<o-G<>S~Nb[Ah804aPiT+8}/hᢆpI^0׹g(X*f8g#pqPUc,rbs5sqrU<*T9n\=
Kg,FTn*|fN9Ie'>̅L},w6Yl͏Dt+b1e8.0Fc7?ae%5mDGJ:DyZTD%(ϕF*0{.H	o[/)JA	aA |.l.0!)2a#N#Ap]>Xu
:%G"aAu㭖)qnD~߲9ضB&~Ҹ|W'˷F0>q#(a! $YqC^X{NnAOOg[	8CyGVBV7q؏ۖn -nƤ;hm"&=#&"Rl(-!S.o:~۱h0	/fB|mL!q;7葹M'S'I%bA{n#E^L>(D'txW)?әL|b01]^L:~5B:Vgְ%Vĺ|}<拑_$J?zW"W@5Wy}Obt4lSZ{H0'zZ%h>[/3J
2[J2maVDʙXiz35L7-4=4 _?*O|[$2HۆGӻ~$6mBJP?PK    PK  C:U            8   org/bouncycastle/pqc/math/linearalgebra/GF2mMatrix.classWmlw}]K립slYi֗[u#s[sB٠2ǶER?P$4h|| 	B/($sw~a+<{^~] qEFM22zed<"@pJTfZ1Tz5X,A)isBڨ<>\kIO 17}$ჄP|t}6d#dXܴ)C$4Y`nScAEcy-&;ΒB9͑h9m :Y:U'rY+̕ɗ͙R\3${@,	BZ:_%'ÎfӲt=ďXu(t5wxNoxۮWG,'NĭWh@>]Fzfd!
Th}2ײJڔz[JjEC/hm/^
~HMic	5tAu|i	~!gJ)
GKZH=q{KlV\̤F^(P@^/jJ:f+]FllO<Qh`؃4btVlbr3i(YKBPn	OH+!.a$0,6\Pϓ紌qp{/F!?}{`C><uk<1[]f>q*ƺLY߯8*m㠲9Ri&9MWl m`~$[AN*c((G)x<PO[Sa(9GqL(x̝fn)|L>dƃQ=8gaRdrIՃgf2d,,"L1yIIŃ1<GnW9a3˓ia7ӷAȕs+J_qA2Gnc+	1߆RS]ywp|˹QXջs!8h2N|5U\7+ͩg
aY~aqLU7q&$U׋xޙU9ꎫK*j3J8Ne;Ro*ŖpZ{$\Uw}*oe[𬄣 xbDXEPX&w{+pяY"O5wyܪ-ZiptSdcJq'G&mpSW&aZbhڑ9j8Jƌ i?1G@N$:땇C\1OCTſ7:礙~'KW&.{Kmhϻ~95v&\jilo~?5[&UWLu_2Yw?]T_Qo^,Akp	¶5qZ vh7F!c USVU8(B>foTLެÍ꒖pxS̈sסFᶶ\[春9-@< ;IပƮ!I
3vYE_Duћ7uBeתx-]W%|6Dk_
Gmm5GUw#clWox}P2MLVH/{ř۷\w)]W[
N`m
Z- [Bf6= #;n"ҹ%싏}a|"[ #VŻ#\H _Bݪ_[K*M

}Ml7Eg(r-8\GO9UqVX&	g/ &`Ԇm@n/exglG;htzTO޳/1:Ku[k .V5sx"?E_'H`HJ;-l&ְ֋To\/A^)X{s~Ѷ׽{#W+O*<B'lX	wWcX13Լ`n6<2cټ_~kY5
ղ7e|,]%a-p}.7%\J5!M4!
^"EȖ҄6.'m;I	 PK/3  }  PK  C:U            8   org/bouncycastle/pqc/math/linearalgebra/GF2mVector.classUoWֻ:'	(ű8p:$@(h~ec뵱*ԃT=JQ\D% UB{מz꩕zi()D}oo]% Qtc>7!@L{մpĀD;eLW^UW>f
RJ%e6Cz)zBeB3,mJ+e9´Ij,tQEV%?hx98wg(*SEƙ
:vhe:0a8ò%FZaE۔nsVCRB]5K"ǜRΝ&Fl02=S6ޥY  xCQ⚢g%噡oYPoӾӥnyᲩvy(zv2=͈Kcz|E3Ԣ6KuE}PƧ
==Vʆ[x^1rqMՙRR,*)CvuǶYkZfA+,"++b5c5fW 7'mZPYF^_o9)|(X"P-
2v8 㠌C2^&#"#*#&*޲IpM0pS}?-ӯ[SDl;m8 'Mqh֠|Gnj0Lk
0n/{b?7;":/ZgyMqNyG?ߝf=Hq7zЅk"s.psktc\f=M\oaă$=精;.Jy8Li?B sG@ΐ8!:YYDXtǘ}t+xPǖR.v,XE#?<ƄĄ賈9.+8%U;~OG.kԺxvocS_}
P {U)GF WGXWXơe*9h֤Yf#9$eƂyYU\_-*Uq]AZcamcNԢ-J8оξn+ƚ>mψqW:ɣ-\LPrOē_k3kþ 9H~'Vě_zKNA; )!0RҜGL$ez[[:)>
?q=WvZqDz@Ek37pIky>/m}%5cTvSΎ?3[׾\Nk)u\ejvA"'{&c桙̔F:8VHEͺyCv-!u֜}zo|ـ/ȝl\Ol}/}A{Z$$H;<;S:*RW~B惃*$xd$h<t
\$2}z/PKO    PK  C:U            9   org/bouncycastle/pqc/math/linearalgebra/GF2nElement.classTn@=&qLIC	Pᙤ7/ TRETnG'|
 G!JYs;M<eowc.֮VnLpP!y Fn(r`?>d(ڞAÖTsGe7C#ʛ|-?p˧$P/mq\Z8 oбrl)OXGǶs5<7<#!փ'|P<SIF$x;Ð+OxrRDfט})|IfM*zKOzꤶ3RLCE],,X2p@{Z?/;2
o~t1߹2[g9etLX5aA&*YXez%?9yBM0
޵(SI>&o4#]|g:3Q2+fؿAϢl|JiЊ9
XMѱRg+z_C_lK)ߕt˩XI
TǪzͱtSI"a{aPKsg#9    PK  C:U            7   org/bouncycastle/pqc/math/linearalgebra/GF2nField.classWksU~fiҋ
[BEZ.V[
mA/lt!-K՟gD _g47b}߳ł$B9<{gw_?ЍO
 z5m(
,5[T0xX}Δc_y7iuf051!v0L;mł2mqqa&	;
N=]XM۰k)a8/>dN2f8yi>'kŧ%]nޚN^j/޴`B{~gNN]K7+SSNƳ-̼͈+UPkcؤUP-4T}^d&
ɓȊIx~qhfɥ&H
'RBj3="uWDGԑq8!de}ft35L|xHmˊihVNN)rEj'OsK
kJfT죞
:+aI$*P-뮐Xwڊ$a{㗣0(yA/|ZPY^sEչα ^*f]
u԰])
OkxFóЦ]AY!*-Z|;+KHMk=UL=oʏϭRmۙ^~jn^
+	%2ϲmS_}Z1mUR9pd)Qٻ2peĥ۪}ʷWzZ16USz.h#m~;6‎@e#c耦u<C:y8tD?0ױ!t4`m/2"aFF p!x }1py7LqCA2lg& awpMQL]2U:%IF='[Llw6H B6b'kdv$=.~׈ʹ[H1"]Xy:9s?C]t޼CS
>!eI(3(t
G:Ԛy$b`{"CrE>c,zr컽5$ɸuXax}<χ--lh-xɣ+{?{H≚2DO,ѐE2vxCC]Cj〉Z|o⛐m5u+E٦98?ԐavCBJff{+-ux]WA0?fT{+E
t@
mlPZvPQprI:DٮvC,5GKxg{X,9OI$X	꾿lNy_WvT}:>X{X-9\KRU%jx)*oϢ!y2!xksNLނaްV>LC8pGjjYօUyȟ$hM?Cm6|rlPKI    PK  C:U            <   org/bouncycastle/pqc/math/linearalgebra/GF2nONBElement.class	|TսgْILL!3aX!&$ .C2$LJ(hZkvE VZ[n}}}-g&@$${nxݧ@.] Q*^>VV>u]44,oXWOeig1gpմv&XJ,7-yRyb:DW;_ߜ(mKnܘҾDo_ST{niwOt *Mv6+hu
:JmX̍\ճ#ُ#&Yߟl&	^9vLܸ)މK}	*rT3+}澶DѼ>|2ݘnOuu;a[dwk_"ޏIJZ#OvcsX#Ru$ydiHg=/J&zi!LԝJv%Fe̕dw	gJ<хS.&K]TG>ހ^jD&@d%%+m=XG%q߀ҥVٵ$lDC},ZEyEjo]M:STKO'S=Z([R=4Y=}
=[ZDV9xD/ٞ,]2;S}|`\;:ϊV1tWlJ%;1p`N͉+6_+d91GB&V`ٙV|SATW%yS=C@VgIgbKRF3գՑꋷ&x9v9,vTBW	JUP(UZSAةwPM)vhJѕR_)RJRZ)eP);V_VB)6ؕ)EWK)~J)QJRjRATG*B)6ؕ)EWK)~J)QJRjRAT+B)6ؕ)EWK)~J)QJRjRAT^)B)6ؕ)EWK)~J)QJRjRATMr8ؔbW]).b(D)JUJRS)jw[PM)vhJѕR_)RJRZ)ΈAu(ѡT:0OtX:4Фr|4{d_˧6f޺OPҕ
.X5 ^xcVa9j5V{o`lu^yU̼P-W_^zwm">9gf=^GObhCjco~k1_jq&>=h:ޗG̇	>%>X %>XDXLJ}P'> *	k	,J*lJ Y>VC6"0|J\\D'ˉn\(z	|0I|K	*2BEb[$ a'&̈́]!­nQG=jyĵV|yqG݄{=bGRVq'a~h"o'A;	w&|pᓄOv@G"~0AN6=C|c`֢T;&޹/54gL[ohoL@6J7HDr?[0abpzesrĒ?ŧ#{GĳC`Eœa!"tXxCQ!(%a}A1'A&-G[bxw'Q(30Pa(#e9ň<Mdh#04]$tQG¢bDʚDN>s#ۏ˞Z}ٚj-jVj-
eFo۠V?JOg0tDrD|G[j?#+a"nڧVbr*F.
@-L]nXMEkz0J(Db0JGZ[[
Jg]
]' c1C#fuo.:^S4BG!p'Ïƒ?7N
/tK/tt:ltFZE!
_4W൙dNf*б}PNm#1-6
}sM-C64X3j}AjYbL)
7;j6F6[t`S	1W[>ж[E.Ƕ'oA}=װ
e\`05yLSxL:'q]^Oy؃_
BE:AX0T#-Ӎ^q
x=BՉIfE뢆?9`m5S9~YэʩezĨ)+jPEF~,GF-;"KjOo5{12\aZNWa*T6n0CAYzhmO+9qvӡQGb؎q4CYMa܊y@_B\ub:ˀ>#O<G%/Ho C.!K/8'`Gs#Ek(J'Va8T
W!n!W!&8"|uSgׇmKi1X.5'cs2ңNQua ,=RGy:ϘmSF]sZ01r^|,t̙iӢ+EpMʍ2g|v\QЦ>3UKZ%M4v!=IɣhݐS뭾wXw7g3IWќg333
@n٘#YZќ!sdxl̔pb	suTyVGT쎰LG*UGU؎U[#:T2S*5'Uj%7d[^;	gM㿐l1kޘĒ2n{#P`
a{G]kŹʄ:<u~&;,2ư\>L%lg>>WO'hB4sf<fXG
,z:	:pEy:Jj-'+G<?sȅgc([u<Ue7ut8F;~;x=bxh=Jg91SlN1WkX?*AMG0Mz<((]kmЕBNסxHGMZTË|p͕sEku틐xǆmjNًkāĐ{U",/_tъ??y{W;^Jt/H]1釬3Hu4R yƌ)e{!ccNY?k*p*pX'Eg#6}[{5'	㎈أZ@3A[4+֋k##oUZ\*ۣApw,Sd_[Ga|FۍUmo"׽]vX7]Ң; 
e-bneaeʒ,^d7d[ϑ]ծ!NKzj)wq@C}0߁JGg.v

R1SxA:'Gf51h.{[P?;9cI4'b)k$agmrqQVYwW0]#KrE0A>c/`Jx6#"Oa0Z,Ϗg+9VtQxк8#ߨ^d{mCqW4cØ:4fF˘:f8(R7.cm\q؀,
m$~cZpԘ
t[3jfwTGh|g'j/'8/'''7N#36*O6ٻ!.{~={_'%l]?lqk^%z[H>͟gG3j_	>5NG,qV.3>۴6~8ELZ,`5(Z/G
Kq_%*zQw{Zb	׵&Ĝ&tt:[b.z[pB4(nC6a'	Ch&܆gGdp'lA7h>&ǄhrMM	1M8&`A4&<f	O)0(BhhL	BSl\`khJLxM	?CSf[h&+4[4ML)&&M	'L5-3*L	&l
JShD1EaR43M1,S2ElSLG5EjSA35h.1E<S\h曢SBSk'=}}}׳}}}JYVۥ>&wt߽}{>'ݷO}H=.wXic}/H$tw^tOޔt߯~/G龿HMt߻}6>tG/[/W/_ot}HUHM)+ݷ@^ot2}+H]{$G<1
_]kЃAO?	#d	~A!&!@'L 
		E pPJ(#L"\HL0p10PAJ4B0000PEM	sj	:
POXDpp9DXNh&  $"&!\I#%#'\Mp-:BJh#$	Bp=B'M!n$	)&f[v9Ay3ssyV懘1?̼Gw0?8N]̻`$^様ffa1?s_b>f>|0 G22c>|$0)WO3ae><|yI|_c:̗00W?`|C揘o0	̟1|[̷dߘf[g;`?1e7oa	?'2Gt`ژvt0Lbcf1~a2&3gN`0E yY,cNb^Ȝ̼9y19Y1J4f9999YŜ͌2s021k:q!y)s1s	s)2fsrf#la^\\\\\üy3\\\ϼy
Zu8sL072ۙ$z
Nfec3SM00[dncng`_PK=Uc  2  PK  C:U            :   org/bouncycastle/pqc/math/linearalgebra/GF2nONBField.classW{xUvGl7iEaI`ۦm胶FYH6-Lv'}	*(>b[\ETf7%@  }~v=gfB3M~s9{9{g{ p1^i9v̵cmvc s۠Ɍ'3M{z,졁 wi;%@v$og'ϰ{w\Jlkh}fJƇ}cpC@ˤ
=Zڣyс='2IGKi3ٴ'%Ɍ_TF'}r wvZnNEt4(D}t?{G<+{'kSOP7rwW2iOfָ֡lEb?R>W$c#d<VO5))Orj 'a"A¶6jUS4âhzPOyٔg K-Z6N(d*DCf(%٧7@hP5-sJ@6)OQm#k0k 6CCYX#!J3=1
?wHfP@=d'rD[PhL9E9"S<[4KO%,VۧƴD3#Zl}*nC"I=Y*S\b_5ne
htKl*i*U0f3XYT;P&I!^g'_<F%x>r\)=Yw{T9qDb#=
c@'hq21OrO2eڪЩ%R%5Y,AM:f!6Ux7$kksw[&=f2q$ybK8hM,s.}Pj)LFOf{&irJu22d4X(/c2VhZ)2.%# [@C>(tw~.HxwiWVgjf4}L5C)za)]Sw*pE7ZkYڽ5+J.KmdxּTs<NF[|~3~,'Q3j$HkPݚ^~՗jndtQ5/߬Pt0\ʰa**hu
604!3\PE^
30\Y
30[2oG\	;d!
 ţ*X}

0F\P}
.
,~@|P"|$2lćF> FndMeƼO8q:j|+1|Ӊ>|	:я_`*!Ny/1pIÝN踃;NZ3e×Dd9o0|w1pQ| }oL;n#}dDf˒|O֌.
m?zԋ QyAI]G1kKL#B'ͭG/D\/ݶCUQ0{]lƑQ~o:rńǓ
x(*Az-!qoc4%8jr9,ĞI\[<m<~P}y7	)!1Vk c	"MC1F\9ĝ0ZjΛf9n$9I71HolxoW:	1Y"ϒ|u^&<ĺe<Ç1h^ǟv%
B[Tj?Xܯa~\2Oz]a&hrŰK*st>GFRt~4o4ua3l+ٝE8v>/bL9Iy?mֵ
&u&RlPq^l"<~egcLvuO<VeKl_1ܖ//UhGs\65ɇ
4QO5zр93>*apEblT(,tW2vU%ZS,^jtV*6!J>L$z%\JRO@*݆HƮ)@3eU,.=fQ[kդ=6ʴ#F)$A6񆏐F,/|Snkusb*AcWX_R%SXl5J͆OKpT"gǄz>a;E2v/](N"B^Z[[ո[o7M1z1Z8c0 pyޠط=@DϿb|X)ǍYɕFBÕ8JV4Ժjj[fC{
NA.|ʿzcZlҵs.w@x
Ivd;rh(Q`]:6VMCu.X*
ZҬJT%q=}UrQt*⨍Jش!lM3ݍ}-m~٭-Mъ%rҨ~Sm1SUc;*E,a
VbYihTǲ'WKJP)ߔCT+Jt0=˂BW$.ӹs	8SX,WNt	$nߜ=fwEߦ'Go{Bytg}/b\Yݙ(1Ui[v!ܪKg0fSAͨU۝`?2%' 38Om@9PKyAe
    PK  C:U            <   org/bouncycastle/pqc/math/linearalgebra/GF2nPolynomial.classW[pizgz2;dI`2""L!!YI%q]`Q:3I\Lɪ{/zEP݅eWcYUrk^*_R}0x=C3VY9_ӝ_OlQ	r!!}'o3̝$V;0/!x>3g
-o;׾0fȥQz&>ݳ1.q=FhjO#{b4_sקXn0Ә$Q$aR;Ӣ-jY3:Y`^ĿCdHF9+]9#tx~:IjE3wMLve5s+ctexAb}mVR)	uZ$S3ZhsB^
w2#%x4S7t~	n8ehAsO?9e@N'9LZ7N[~pR+NgNEAq֕rlV7d>e5P&BzqV(5JƏI
]:83LԳL	\ꠞN-UT-M5\j,TcS*
kW:x{ka<`=m]"t4D_}]AjF.$,)&5"Cz'	s>Az1c}Ijx'pcE*֨GTUNz*b**:UlPѥ*6mm_!鎇\v~drJm>T%^]TQI[-:co{cvԱHYlU+֐N7U]Jʽ*.C^-x?[kZ@&  n՜;H h
OI
!Xj+YleDA`DpGcAD  SA,eXA<b,8zOӬrUabq,]Q$Yd3>`/R,,2,N(xC` ,NȟbbE$qS,
,>4ϰ0ϱx6[3|{~Ԓ'1m<SbbDEggid(3BG[x]}/;[yrMx5>34[
0Kr<%4AQ1(+wM BEaGlIgBM1$cyG+¸Zb,<O.FLOv_E~C9v?컀N.Xt˭ƾ[,*߲r+}vBnj-߰mCˤìE]	kDU;do}MvW#e,Bu3DIaekV|^o+Kh.x"kglokN?yRt8PnD #Ky(fb
`VUvr	*VXjV,5AN>xaqz;I@Xܕ:tmN-҈ygG^CTRaq0zB8quDXAT"vFdH&<n;ZnW^	@V;Z5A+V1쏽@q6;p0+έj;.`K`
=$#sQV;4n308D:.oce;-]#o:!w	^E daؾߵvPY<cÎaaaf]x>@}yFǤ}a:$sコYPZ*?V
%=J-gPR;*_a_=
񆔐MP崒	|awc?G[y,NzYtwj|Stsa{PK|KV%
A^s${m:o(P2ҎOn"m
t^#_.3=Yf3\sZݍ?q/}K|IvV6N^ZԎ_DQC~]^WG,]BV
z͎`Y컇5KAzFm)~G^EP&.]
x)O&,im
2CnA#|)b.rȑ9T1MB>W$	6Ά|WʣqN9!wYд|z!%wR ^gX;WJX	p3U0?+-W:Gm@.UHLj<?1B	P-bqHa:bFF-N3=N&
#SuwZ\Ĳ8=$2B/I6	xgU
{sNPK	]	    PK  C:U            C   org/bouncycastle/pqc/math/linearalgebra/GF2nPolynomialElement.classY|[UNsom]kVhte{k:	vC]ܶҤ$[WtNb(v
*Etl" "جwϹ7I~;=߇sXm'6zYM#XA6F+$'Gd't,&/1p#zSoi%Aګ65cFsi(E5}9[*:V]lƺ`1vQ}v\
>Skj$h|Z龠I|Ad8qH5uHEc-hh{(#j]YZx0ҡnPKY0f!SKP?:Q7Mo	&@"1zmW	FpCFkЌX,@F~Wҋ`jsn̐iVz'!n63i3<?
`صV5JilGxX@FZP;WKM^ؐ]Kp_uqMRu-Ru-ePz'k]jKG"ut.bi.{a,T'kݑ.)׀'sƱ.*"/Ϛ`֋}MQ]P+|Nۦ1↟>tg.2h\o(D]|1HVk]v\
j0	bO:Jtj/z=2ϘZut|0lU/	A
Ou\ޱR%uz6`x],vրo''5Ssid.0ZSа+&rXv]ǃzleD&
#[O5kڪXS
-#T9+hq:`.fpEvxVUSSu(2NT#.+l7:_X4riE&Cln[J4Ҫ\\2Q-RxѐK&ظG,fEǹrDD
3$Ä練21<2\vMax6OW}='Nmccr;O>:'	QB8SP:CMCyPE	*P A-R|*A;AA'FPh 8.(R`!+0J}s6\F'hr"NP%O:gNbp54.p3
U`>A%\J+p.ܠy!JnR"Jf6T-
̂(pA
Joo͆>*A?n۳*
nsw\zkw!`/=%Op? 	".	!	OC'~L&5o\KB\ .Tp/7I-{	#Op? AQ<A#g~J3"x9<O{Z|; ~O5z0tEK{CpKDȧaB`;yh>HT2I8Gkö6c5AVt EX$Xd!Zx&/.KA6}ZAӿr?/fpQp:5QfrNȄa{c\9s5&X]׆ FLE"qIx3ɦ$BBC$h6Y倠eWà/7G\m6.ȟ YTlGxj
%ῦXG~,L
{bG~<$CnmG(ux1
Ocf#N
Fب7"QܜO#`E¥"iL㹩4	E,Ė-+/d	ln3|Z$Z	{.ִrsAc/;1XTtE,GH7kFrBc_0YtE!}YNG),@M6 LI)#Hz|Il
Ȫ,SFp <slC)$Y|ܾީp-Mbrp
e*^#"{T3VSXWjx~;L],KkŒh.[
;q-
I;C|>ʬ	3@냌ym)x2^ai2zy֢J(j*dDzQm,%~#D^_
//
.$r?@*
!7d]7Y5wC>:G|d6oac&2zaGO ߜ?h=c!.C,_9;c8{;8mb
]7
D|9~2܁#ccbƃ}CYf)7r(^/P{U
, VH1<%Q*&e\ff۲284Ysa˒]Y4}X*sv
PMV}} xz3밤+*Խi
'6˿\T7 KRN:MC!vFK)͚ZVx<l`ܖe\rj1)ȸ,
rIpcJʘx2ȵU-E᜚a5FԪ { .⼙rc6dbvxPG4dxVYV9`mDJr0l}eXoF+CJ٩4t6#Ua8?e}tuwZڑV@
.[Շ	,8jqlZDPT*x~=(>p-U6
˸ugpQ),
a!9啴}<pid5ׄ;}*O'Yu?g-y-$w LҰ۷-z⵪tM=`ubS֠5ycpT-b5~'
-
6IcWK&,G~~@sV" e#8 QF"\H/.X.6<y4~my!
veiHa_Xfax#\(~ך[ntFmؓG֔mH<N'4љf7*Oa|J_(.bv'}F1InoQftS.>o8&ɭmv96涻W :<6ٞ,j\&&ϳ|okCxq׋xS;وӼ."obWA,"z˼^=A2DAxY?PK^
     PK  C:U            A   org/bouncycastle/pqc/math/linearalgebra/GF2nPolynomialField.classWyxT{fU2T"(Q"`	I
D2HFf	3o,QKjmXPZZɢQj.ZkZWNyBČ'${{s<rU.ԸP./hhl3q[ƭm<5&k se,3Vl|T|8JĴ.CYCsmfc[kLPFc;vi=i@Z׃Z24`DK&SF_FRiC'~j:7#ڲS#pk{*=ܟ&#-c]f6cI]Kk?5S W4.'(f2thhTChKZ:
GRCFYg,?`זtjXr g/͘9ӌ`\}1ݿp
=ݮ'AJ0DW*E[y>MzH-UcIV>X-֣H?-ɜXeYjiq-9Z@3nwD2b@UQx]٤K%5Eapyɦcps7Ѽ~ֈś{s*|\	vD086O^vq*HsyY*p^m*t6VfёM熵Οa9땦dUyxWgo]1DMڕM1ӛ3m"bJ	-Dэ1uA;3AoUi uCX5L$8[œ(`f*X`\U
+RZ
O~8ޫk~<yAx<;%+yV"68#~0o0sଲUΙ
J_mm(ӔWp+V˱e[fu+fg8m:m5URV%=]R/CeAٝn(#ϒ>O`->BYȚ,Tk(rW.zp6n2l/;xaT,G+¨Up	NSq)T,!~W`EpC%~ 1RaC'<xlahtDXeU!Ե*`'Sq3#Ӥ
RL
XFdTyY5N||\Ykj[EVq!wcn`V7t;ndnf$^Mz>xW1|_cNo0cpȃ^p'<{=؊QSw1|w3]1CA3Pe%/3C'_҇}0VvZdg6ԣf%)(@_j
n$s#9RoXrN8?j/C119aySꭓ'1
	<1"r&/kΆCv`ɯĀ0-+ËB%$;T;0vQ>8('Ϟ*X<K}0g
=q<8xptr$^9t=L{qdJ+9;WrB)7;b4
IiS|!ܥ;WQ[6N-Ijo\vajiQaQ|,/nZlsٺ41BpT?nrj
գS;x<ɝ}1;cgUSMgQK|[Yzy79ma*Z2Z\^t5!r01?J%&	a[-+R&գR75W;Q~߱M}dUɼ3s$:^=)VeGBlOq7d$uS͒?ۨ"r^&k	IzFRrO
N)m XI*P{xcx}tz0_apUӱAs"VP['VߗO~[Gpak+%u	\=Gdל >?w[s9ꓻpFW'G[k	ܛVWBձ:`QKI#)g:hϛ{y৵'~tibO$DPYsޤIx u^5G}u"̲m9:eEYibKU<ϋDJH̤&tR3>tUAj5cr9uYB9&Sw^͗9aSC ݾq<g-%[I<vk$Fpn4vG튛W7_oSBzpgy=fnEOcWU;s|JX(Q%t]ϡ십ɾ]#4n\FןK!iYߎT7..jǪP>RW~(t=#V[}&+YPo+У6NzPభLAEPnwB,Rh}h-,s%Wއ&~"?蒰ڂ[Xt#Ҟ(($G}_BJ,"<Bo+WɃ79K=cv
vLϘӕϜFR.6TN siSEkD^*=Vߕ+S6کj_gh&J>,Xzn܍^{_ܰoK-PK85da
  *  PK  C:U            7   org/bouncycastle/pqc/math/linearalgebra/GFElement.classRMO1}.
Phh6UKO*R%@Ofk䵃׋_uH?{k{sqSFy?'*Sm
	,y%5\Ԝ2<TyD<%gL4Yr*=Li5qRV
ojGc]_eIV&yV:ɗ?,w~59v-=/{y:pNro.UGewdGXaM`=n}gx?o8aoM䡯q)>)!dƥ?3P.`j5x
`:`"2\v8ˮftJ5T5^Ļ{&3x۷.PK    PK  C:U            >   org/bouncycastle/pqc/math/linearalgebra/GoppaCode$MaMaPe.classR]KA=צmje
=V,}QP"A>;F~CAGEwSsνݙ	\0mS^2BMד%.]Qn#4!Awpڠ5Muud8pܺ^u:dpOZBozˆn.riy	5;%^e6=E(f޿3:_OtߎϹ)d$TCRE ,8R>,Pkn'<b*U Eɗ8F"mQ"NiXvh{].
=>3K?N!,Hguqs@PKPŪh  m  PK  C:U            A   org/bouncycastle/pqc/math/linearalgebra/GoppaCode$MatrixSet.classQKK@cjlѓ!xziJ"xĉ^|;;}켽E.`;a }Hens	Ձ"/iVD޽'S*1ĕԗ""%HюCي/gIpUpU)b`ڀiD9XIسzkaET,A&ʘB	X(RI+iR88x%YegXr7F#-3Č@E	I`p+¶X,Va~ PK#$6  M  PK  C:U            7   org/bouncycastle/pqc/math/linearalgebra/GoppaCode.classVsWmݕWMݴ4n؉fݺqCnMWZGZBR,ʤ<Ky0^ ֜les>>p
?Ӑj4	f1!^2;OEvbv6Ne?:ae!7ʅW[Yȕh1eU`AWܥ0X)%^*M ̓ARI'&
텰TDTɘ^F,RpPQ^FrX^0
NzQ_֐VF"RP]|U&IjH}7P^S:yA]kMb]FàV*W5tsN5U	5ny+/Uh(ZLקo?P#4e\)t),n M|%x͚Gra5Kw0y|Tn]YRap
7M"s+ɔ}[	ѰHYiYȤ7]"^D9#ӊ|rׇFUJkt5
7V5SU󩨮ΫBQ8rmFHxQ^@V@{ͱMt]mEp<8Ԃ-s
r|Kia~6cCRvodGҝ,vwfb9^In%G7E{} o~'o":W5홖ܼbx+<ߎB74= a.$-ІiOጅZUdy㜅0Z[eC,<qV0.>5<410pa.
_fUi`1
_K#ϫy\`Yw
CA1\gXeAeM˪2xժqZ2w}2ӑ+|0W(0q3

?YQh
o
&:zcY{HNQ;.ێ.?7>٩ĐR:nM
.8piCgit\u,O$X쯉ؕX1)ů0l'74qd`@ҜXX7VMR0V{:DӀ/
c<|gI'6.IvXc%Ǡd~i'E)EcHoV3jc'~S3}Xû(~J8
!5M8Az/>B9{8#ġctO4~M;/$Q%f<Mtz&)pgz-7EcO8uXSl2qG0\#˽I2߰x%\ȌۦZNAAb xJ$EF
o1c\jOA?77)j;*n!#?O);rEJ^):mSm$ki۪{nqiTng]%ٝZ"M=CjvrSsi$r;ynóTgb?&즣=B'/ PK˳`O    PK  C:U            6   org/bouncycastle/pqc/math/linearalgebra/IntUtils.classuS]sU~N+٦XJSRINLGI J$PG;θIָ6iq/AgzÅܔv\y0B}R<? jR2~ɠe*@Jf=XU'JhL @	m+J'oCLDQn	׳NwHvsHlvAmSv[k{37mm{-V4玮=k1T{x[:Uưacu7-jcv˩l_n)M+ѡg=ՔN/S~<g;r;!0ᰆW5aAԐְ0Vwba>^~rp<S?G'ϼI%P8xKJuL'q$a%1I[qgudCBtpӑCQwxWǛx[G'w0}ͧ1~bwdv7HMvUv/0H C[ y>΍"ݕK|,7ҷ`t!.Mކ,Tڒ6B\ʏI.BI<l7
1QRS>ի\I|<¥QR#K=Ȥd47V;PfT(XpjIds&z4~
5n{3#JKSv4(~E*<B)fT<RX)PHVRؖʶJU(j-<kp3VQ8F'a
PfMʍD4NEWgYU*||"}L;8#խW0IP4d+xi>ʄ@dqX܍OgT6G(g?]B
ѥPK/Φ    PK  C:U            >   org/bouncycastle/pqc/math/linearalgebra/IntegerFunctions.class	|T}dB&/,	AIB
1L"a3@LP0$CH2!XKj@QmVTRڅjVZXmֽ$Ay{޹{߽7O{Qɒ._N]b.Vb]l_+NcxW;U\U|
g\`39SL]^G3uayqNWo]S5YZoDF\n+,cJ.b4\Dw"US[Q5ьۨט,^kmŽD{
uƹy[f-Zt-匸ls%xt&N\6puq"D+Ntw,N%ے]=8'{MY65%|	4-5Xjuy];VE}$јXOO;ԖلƮLt'NSMNwEj&źɹTo-UܛL@ǋV{9E<6}LآvzK][o<7Ǻۓ]Î·D{lK%BGM:H٘?{tkUg2Z`^#ټO{ms;Ռahg:CVrkI-O5D_}7އArFLmf &LВ+c+;v&֖\,R=
~uwMVwőTs7{Rd7
ߟGNAގ~]#~!F.hZ&CE-^?i{-Rq,`QHM6BFuu%;Sj,XN餮 6 Q:vb]It{},HdGtw#K?'|TCzJ$90p'{;W"6xy[咽T|xD[9ޑ@S>Wg]9*Xo#7VnkNC\TsD/3
}|oofn&
SV_ݷ:
|{L9ѱZ_J1С P׿Ҝ).-#۔ϢY ,f>ԛMԴOe?QdGQEuQ2%Q8J:XG(S\%*_v[%Q&;Jw(JGQe8T9T9T9T;T;T;T;T;T;T;T;T;T;T;T;T;T;T;T;D"?ǟO'q8D"?ǟQ-rQ,>"?"?kQ˟Z9-jSZբ?\EM.jQӟoTjQӟ
}Zg;ZgɋZg(~j%GZ-JL|d%wVC]~Vڟ-{]?\?mNJ?+O{5[?:iVZw֢ƼATOj륎3v]tVs w/j5/ι2ѯ̝uo'/'.~V60CeZd8ҦV=qcOjs^*ߴZxOhY=qv]ڠ^ql]k7'~jROi|<PKWi/n۸5Z_Ѩվ1(ϯ=yTgJtV25IguvΚu֢%:;CggCguoih˞Т?L;egմ4L]ٯgKiBsw(8>h;z_rw{腣ܣEfVɣ7"' C)e_i_//y~hay=˧Q1cJuӨ|5F335FkW5KAZZBeY5{IL%d$zI,g/+f^yez2/;ey٩eX-$D1zYo|.^v":,F֑/S^6Dor/;_Aծ$qozY:8
$IT󫽬_e_e~G:
n[HDfV<|
kIZû=$%1H{:]IFv;HHOb7H!ă$"0GH<J1'H>$H|ďIIįHēə2;I;dbC\ϜxOo
{&^
mlI6zM*-Ż}v % 6DFN`\ineE_R$!h58cpSW[Ռy*T

{楮0E7*JJH;X.Vcu2*U)e~Ŵv%{3?oyx7g~*yߕeo5Ѝ˴]9ۥ.ingťUzY_o,^;ex#ع̉;Oʌ%
2DgY?k1v*O)"<V81*GiB8Q2B	SdI~=r1xA6{
pKat(K(J
.Pb5nndUv+f
>vCv>l}'[Q*ٰ*ay?1wU*]U<K*u _us
~R>.>ra5n'ߵM=>r@~=
ʰJUjVgzm~g=KH1.O׍so&bk
ow'e;˦:ؐ5@?n`t.ޫrCy6#,ّQ6T(QGY3GaA x)Yt$@aw"a	Lf|$c=?԰\(Chlci OW)Yl:*7b_Qmumj)asgo_K"-(L,>=I9٦ضkP1ĊÏ>55GwptzGfY:lˤ̥?vL~mxIlHPs{'8 kZ)%
d!ecFҟ
cPb [eW >05٘\D`,4l,z~-EEY%7lZ?Vf3b2b*YverI˳>.i8\?5kŕATiW@ eN@_#d0s2τ̴`f+UЅl#aϺ,ڐiv6|rܩFLFTיc [e@'ԄG+ ){	)w0(:Bv+fʾ]8F7by
j~g6gf0q!*R(ABL:9X]T(	LO9cZYS.,+uEEZwg(Xm,BFV(:vZ`(5POhE^Z^C=5oMՇps,ݴrޑnW1\3i1Ti~ͼ+}\uy:i]^.M
ykU@w>JԺ[B
O+ƖVU-kpN`r53_~gP?F#v)v|!:\~47(5ll)f4X~>f1bzd10|m.gܢuJbNyJq.;Mcg~7ߐsģԻYExy{li0r4PSr=[0YV놱Bi2@ڞ?LKλ~]4~/0rbtU7Odسنj9
;-ɊHp
# S
i
 >2/89@YL
_!PD7|S{R}>piLNk5z׎ÞVYmjUVԪVݗe64}9._>WMBfJ !|3 }jHBffCCz\_d2
YA}qȀ2[uAA.+e@`	v
p`7 mD&	6 L^``{P"πR~		v &@`'
7$58Y}
#SXV
T	T"
^*x%0Kp
aق|90WsySNa;M$P/x?@-rAkF4	X,8t4~?"gp?	%@-bvs?+yX!Q &$7RHH;_(څ4X%$K( D,`(.kDqRKHRB:H
GH	`(z%@JHRBX/$
!le&!	/$
ׅtp(!GDs	.KgB2!$n˅/BJ!sU&\9ī\HFSr	Z! ^'
B&~[Qw<x (V!/'$7xorq7	w|=qo!&;;|/qO;|xC['d3Nk!I?$Pf|~$O(qPtBqJ~$> =BL+2⏅RKPf	e.qPꉃBi"T(f9ćF|X(	#BP.!>&3NFτr	EP8B()GψbByP|zJ('F(+Cħb
U&>'T3.5;
B%(|j%yYf~"rz:U.%Qf$8B5/B5PP.ԛou+oBw=ķjAyP##'
̛CB5OqyOlZ$GC%
Y|/Uj+:_̓XC>X=P2?ZA{f`fv,|A?@
k6~}m/I2#l.=3Cgn{3uƒn`'^`Kqp{Vڥm
SkvCj}f@J}Am1Lh7Mvx	L¨tw)6o5bv;zg#f%~`S7x	
ȳ61"B+\U\lSrml>Uyzu@qn6HSf*y:l*_r̍0wq{t;=y*jDNqX1it(aJv+>v%XfQfz %]X
v+?(K~#l"+{hk-;";Վ?wi
Jl؈̸׬v](a SuIPzbnHZ8*>c'v%o,NMԲݛ]7<{'u:e̳`0ϷޡS5Cgrs&8##xa۸LRsli%WEgJǻ#cV5Z5?j6^Jww9o0K>jHo)c[ۼSb:Dz/(<It^ AYݳÁ޳+fC?Ljxr;N#eL2{]8>ޙ0obbUA7t;~h}C1Hv<7Q>TE3'f.9iD59sK1Icj[35)Y?e{CR/GLTT3T1Ovrkd^T+G1qYI=|qG䇣JhuEW:I$*Af_,<>w[V+[ͭnn
e𳚱2 ʖ (l_xd|5 c>2x30x
mc*0)@gy?7t'~O/!O

>	(2`O 
^3xpCx	/ &<dpll`} :j6(1(5(3L3\N48N21` _3ada3
	PaSPi*6ػ@`oQ@ N5_YPg?
*0` s
0`/8`{X`
`+` `Q`-{XbA4؏e@l`?6s}\
g
 bXi@57fdU*c*J<ӛ-0
<k*]I|.F4{R[VD]ҳًmxU09-Mw`apsxKd 3
,4tl* 17Mi3eyyNm}CKm3ui
es"Bt|Ԓݤk?j(QJGGL.:2t
|mo2쑳aWc,/	˔>׵s,q~]ɠ*aS	;;?1񴵬˟1Ŧ[NmVԪ҉F'6:ظ<y`6l<Moj^ǧ"S,(
LCK"32YQoPKs   0  PK  C:U            E   org/bouncycastle/pqc/math/linearalgebra/LittleEndianConversions.class]S]OAӝ hRŏvKP	d	X
6X[-+II|/ȓ~Z̎6s޹ܽ J:󀀚3)zO<bfI54yIL@faQnfڍ[&C͏ڈ,'!~,cgVw9[z\*xnVk٥^pVJ)y!e+eԜridgfoŲNWRm\uWtzթutVs	zbkУC't8ǀtA7(|]p:8$`B/|I:]-9قT)& B\q#j}@2}XhlXT 36-է@CJA	"NMΥ왿'̦fԜ
|`Ih~ 3a#tQF裵:m4~$ 4aCH ý/
Jl5ٺ:#:	ްz[ HF<Y>o7ޔ^!^1fBTcqb,KP1,`
r&"q|>5hcbX"&k7t~s
U<D{ˌ}cnHI^IfDM2&dQA$K	b$YZar\3kg}}uAYTOp6!])_o꠩x:w1Tϊ#t*Sic`|}jW#D?C]ohz߸=|;E{p!rˏ@GMt zmPK檅D    PK  C:U            4   org/bouncycastle/pqc/math/linearalgebra/Matrix.classS]o0=^v+0؀
l|#
TJ"c
m5Cf&˔%qO !!G!"]sMl;'xȐ*NyCY 1ju7{[ml7挸[mT٦.gݖo_wg=5'Z8XD`(Bץ
V20x$$
AG!	O3CN7P|2S(Wx"Dz'u({q}h</\GG'
L%^SF9َ@@E\bX*?mNLOSx&4b'(\Jf9>G9&XCuXX
1p-ܣQF[S2\ߦ[E䍕(/:3ARFo.e5}Ex"Čxq+v?\/|L[i:OǌZ7WK2v|+勸=/PK7   O  PK  C:U            9   org/bouncycastle/pqc/math/linearalgebra/Permutation.classTsu\rJKm@THh-4mBTkr&KH.aG|QڑNW  g|AJJJ1dfww_
 x%-XH_?ޣ9%A7JŔ>3,nsLg"S (OPr,wzvdNZ!qo7eKeT*B̪Ɯ3be2Ws
*9y3*B9Ӳ3B*K)aK4W̛*9Z̫5î`N7~+F8B~	3oV>f2r
TpeN-Jhgl$lip
iݶ͂ajs^˙	^Ə&݊}kfy8vH*d<k8Ҝ؜U3qT;e_RHϖjNn!gT]L+m1aي&yA)f&$RO<ojr):-)jT8ϛ#=S@/e^9U(5۵-[j\WTRЧ `
*8`@aGg61~#]+?	yihx+Biy
i&N/p?$k_ыS&^U*^VnlaѮ",:UexTvǑq0 ΰuc8I!FYFC8,Y\`1*ﳸ\Cڿm5rWƍ9c6u"K%BSw~
/v';[OJ9?@G{]oNF::S0&CZ>;E"Fm˰Od;:
{վF\-|
pW59gZx髍&òv>TXN*aeTtg&C
:pXCLt!C!{|WBO&Sa2@8@ayE.(Rᖾ,	J.Gn	?߉_Mm]C@"CȽy$M(tk
*xi%8ITKhfזQn,akOi1h0%%Or9Z N7x]MbKfpl}ZlrP[C#>a+\ʤu_wD{o7^hOMm6m]ɹ蚦7No'Ƙ+F0wa?V2#%]L/黃+ﻃw`eAMP=&INiE!~<a:E|=>okC\ KGڊ<IZbEAS>'79v{%&*PK7  
  PK  C:U            B   org/bouncycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM.classXxu>3=1

y!d/`imL!hYʱC&
vSLqG455Zڤ
ԁ$6`C0?ܻ{99sٷ<MDWiP=2-/x2yȒ+X,L0Y,&G`P
fB:r`6vgL>3bl&ްcPP&(Qs9K%,=HY(d.7X/ܶKm)m+.nV86U"Kpն|7JCڳ=v^};RZă>VB*{
~i}vwv8[]b6eE1Rd>e3R3XF4 ljƯ2J$nY辣k
o^׵vӆ;nJlItwun!Ū_}S߾0Oå\}T`4Оd1(&۫ȳ/7a,Du݅{*P&f&P04
r|F"=UܙMea6֧
C#L1eb&YlNӅb1Iew2N;tv7$: n-l)1s$h_fw27a%l/0ŒhC4
v#$ceYʗ:Ѝ"¾	[
^]Ta"
*#:lIsek<<agIb'chp
X]\2Y̖3ljÞTf`hyu+'sޠfRCuR7BU2,a\ڑl.)Ξ<:\ %5I@-qg
fL
^a~vqj(/FvixdG{$WF˃u,$Z_8ZXLJD# b8{wP f.R!Ѱn'*od,NSSM+`E;-ád+59Ylp:\rg02pƚiNaRNwcF!E4jԭQF	nmhF[5(.>QN#9qm&J~47ww0жNyUumz\)mg7{`k;e5Pמkiyk穰]|W}>Ú'лa	s#YuysY#j{v_(]\v".:]K
봚~QRN70u1YOtꢅ:噼Nt3$-}L6D~&)fr#xYNklcar]-T26&+iL}\8+	:藙|RkWt@F&;tZK*1,Mh7h=⣻lrSL/}t7=㣏&3y0C&LɓL2
1sK8?a9&|f/1S&3y$)&G/3y1}:~]!?\JK[JԇC[(iAMA	&KIoo	r\hYSV	zr=A-	z1<wN*De~xNPCm
7$L%O')$}uѢ3I?E$}1+BHhF$!_
%-tH_IDdqz.<IPbɈNbL&f~`E}}\rkL|#rBRObқt)Z%MG*2Z~6$>XyG/q?khV7y$c룤131=DIͬPG)rL5TVkzncn:N˘aEÆIW5̽{17d~gD'_
ScBrܱe䝡Ʋ5SB 55&%oL ;a'l6PAC{GzqV ҼZNtE
ǀUa:?TMq_*KWKB,9zThuL||:ڜ#*Λ]h,ǜ?yG. vRYf"x<.iL_zz2'(+D D,bA=nS%k߬IܧIk5 bª-(
h.븒^Ӻ$W33Fu%^N;}Ƒ{rz-x)~T;`ĉ]4+#]|:G%54Dq.>B+0ļx!㊩ yĘ
_q)Ԅ3O^++Q;QO
,t@
9Gz[|SWO	))U@wU~Dk$p$e%bM i}:P&/ne{J7 BƆeSjB)jdiڇ:oc`qY̏CI~9 V'(Kq5	yy=y/yľWݏկ`s*"NK;=|h<FP)Ÿj2btXr
$s̍YNdø;{RXqܗy	+nΎktkj;`LaIV251S"Li
HiZQIzva`Y38Ņn'n 7#(2aEyP)ʦ\0: X3ω\j!@+'/sV_WLYy(߂v'}=NuqxaKNn9MUݧafb٫g7"Õ-n+^ kqeznvg'3TO)^A}NPe>uY'>eSuGeL{
*Yo6p2xxe6<{͢g6*7WXT4FUbRq)o..Xo<~Dkz׋UDOM?8qL5Y`nfhيDBSFϘ35X͓x17n⧕y)=3(4Ql%[q.NQRvh|uhVIOCۻ;lçMH8^m"ABiw'b5q[Pឰ>so -!\mrʋ+vmo{O~9!}64:S ї/H|ϋ]k!!};pG5E
;-~q6yvM0e)rHF|nw1snY!85H}͙Ʋ+n+90FlEC3ߛ[I
_w<r`)fදxm!Qժ?bnm\K=XbqͬIz~J2?ܭy|
6]yWuS:
Gĝ!$9k2q3翗/qCR05,y3gǉpMTNVU$Z})f>TOmJ;_"V2^)B$x>=sO	WʀPOO#Ԕh
Hp3.xymeW9 HsfcVҘcL_:FӴ׾ J{E~BX:0-`AvWɵo Hg	2i(x+;E|'"ȿ_ss4"W-%qCɻq}q*yu>ߴt@|sdlJm:pÑ<I߲;z-nѦ>1gfșho9Iu x|Eu	EYҢ9#9Qn[Xr>Wfq\MVxbpb'^FuKazy_d<-p/\n~ވT5W H?%exϖ ]O[-2hs'o
0;)jAT;?(:`571>5'jm[:9@*@bLGTq!0=NXQoh~fP}: V'B@}4(ǚ(4N>p&@36Ab4,jÔCQh3}}	-}¾]B!9IÜ¨+Q
QYɀ Axbt? @v@L:b1w`&KWs>
5An,:Muv@еTfH.QԨ5Yf(_EP.-^0HPK>\  }'  PK  C:U            ?   org/bouncycastle/pqc/math/linearalgebra/PolynomialRingGF2.classmSoUkv:Y7]'kQ iiM&6jQ%jEilD"-W$./ 8p_@ q	qJcً +̛yw8b(fOMdSKK}623{z!B:/=36\05ߴr-UnY/27VzBXUozWEÚa
6D-Al! "SxjcU/yp6+n&5kF5Tad޲n3s	ΐykv&*JktX\ݬz>7jlTZ{ï|W5!lϮUEٳ̮7fuI`yn
GP_
v"ℊ1vY ԕ.LL H'pJ"	@M +8b2OTb:g0I9)HqVQjӡ&W|U{MOJ8YI3ʩoqށRPpHs:A:QI.m1>E<ǅ#je݋:YpޚO֗ŰHr'|/"ovTK/SQ66f4.UMYM-g5oZbbN _ʡ#c1ar.IC_cNO㰖>B,KyRt&\}"SClz)9; ^4#5f̅d0jnW3m_r˱3q<Z@%nI\F=BiݽDs4='4ġv?k!bA+VAMAs4WWSli3uRSDzX
/xF5C	Ă,*p)k<D4sh*g̽0tᇕ*?:ZP~I?poXzjHwmَijІ%P[ua CPK    PK  C:U            @   org/bouncycastle/pqc/math/linearalgebra/PolynomialRingGF2m.classU]Se~^
aH*!V|T>*v:u
Ri/OLozkg$8V{g/8)x&:zQIfss}w:9a@Eg=! EfyV1+o)ƦQnԝwn+,֊m|{)f+f>s?c\ی62qm+oEΚ+E#~ݱ睜eWftΰQFcuuY^J'WtMogsqyokj5˴WZ;kkV2.%Ô-@NVKx͕5qgE]ϙʘroWҗsܦr;75m9Vb9siTg#D (m&6Qt\ ]ANo)zcOt6R.-2w.?Q>"'ǻO¼Q#uߖq/2Yo$IY_;*T4SB@E
*2414CRƠAf}em@E#7q3|p!э  z0pCQ1K)AJp!})&UzE6]#ټQX6c@i{)? #[,ԥ'Þ>3$V#ŕ&L*Mp_%$跘nOtӬe=YX4#zv0I?,mIw~.ț)Oo7'Q,c#G*[}Ra+WB!TjVF}RҿDWL5'v>9t5*CN軘KT/1=q.IʚL&{8-%ai-S/j#4?Ù[b3/&q5)McWT_үik_4!L Rx Gu)e\g+ҷTEyG8&M3G>xSBACaO^4w@C*lP4HGÃYPK5J
  L	  PK  C:U            7   org/bouncycastle/pqc/math/linearalgebra/RandUtils.classuMN@=
E,Z٘XNLܩlX5јv:`LFqG?ظą	zor}s;T	Fӟ3Bq/Rn>,ǎ6_ncd@Ѿ2$ +1|cɆW
`q$OyܓAY&=Q<a(ذ	MA \%TXC:I(	OxKl"deS]3$+焒];w`<O{Ozi>~7lgߟQyDPKҿ8!  b  PK  C:U            4   org/bouncycastle/pqc/math/linearalgebra/Vector.classQ=O0<R--l	Y؊@H@BP&'T&R?xvA{?^ ␡׶l2|X30ш(1˹W*HF5}B1T#Ep
E04{л"ФI.u<s$
=?U0xpy2V\O7+:i
*h2tߨPqO!tFފtkDܥ]R|җ!
@	+5lb6vif#bڴojtQԵaO-?cѨEZ:e
-n`bJB8?PKeJ  z  PK
    D:U               org/bouncycastle/pqc/math/ntru/PK  C:U            6   org/bouncycastle/pqc/math/ntru/HPS4096Polynomial.classS]oA=,E(J(O$D}@c$i
¶eIhh/Tc?)hnrf9w6W H@ i5RbMB*g,VUwAY%d[mnWXav65{Q̶[fdMb4\gx^صNîWCQM1k9mqq\,=`m8EXб멎kkrk4N1,.wR糏u9ct9sCy"aOpɏ	LqQS.7oYndl̵* d0ދ0FQ'1WP!iUZ_O~$>!n,JD[l'="QV>8H+IcRM{ΰJ-)к{]HvHGj8w$2L3W|/:%;7Ye쓕wkg??*ő&P*.ݕ^08R| D+OPK|H/    PK  C:U            2   org/bouncycastle/pqc/math/ntru/HPSPolynomial.classVKoU=u#I
0jBfLďVEE,lXw**b5bQs<qAD͹s9]C gq^ M!ϸ6G 2)wpTMq\[)&"hVbjy^\Ыu+UJKzf	b
EgmAwUj9*ZTVzeP/9@E֎]*VѮٕjbwy G}j?<o/UlÕt2KaLteocGz)Nk6Sjr叇ΕUPЩ*RM0vstlO:ܫ'<$bZgU;_%i<gqADps P0t`bss1
spq%MOqs7gt/xInYO;>cfL{O[`vͺaHmWApH3T}HD_7UȨ0,TXTjrhIS
l4}˂tY]kQILѧ>#℔E&Ņr~ŪB
c4l(~4gԴؠ!cX8U]jLNɆkʜda"u嵛xL-/>ɵQ_%/ϗ/JGv{^}zdDA/?}mAąM>)씥Me=0{c*=_̤uCӄilUԢeO-FX24ղ憝ȤWcZ{0-z \-byS tZ5xD4ɪP@hA~&/CQn]j2ꕟ^9?>VTB7'hWq w S/[DJz&^
CKr5E|]δO/OGs)<&Ƃ/xŘbwPK_:  4  PK  C:U            3   org/bouncycastle/pqc/math/ntru/HRSSPolynomial.classVOU>wޙAnmm
#Va%.,,[SD_lPSF?㚮ޙٙ&	&2gws{f `.* {Z45ݽ0)e]WGWVBZCh[^$@+ej1;p)2? @KS׊7֖2B.Z͔rFssJ@~;~w=Sʬʹfjv2pGhg>^p3$7lক.L}*}s@ޣ[2ÛEw~60_xC]p
NhB`];:"*=uh!*U&/GYDN/Y ŀ343@yŀi)aNCg0]a
'L0)a^0[aاS,ަ2|Z!vd?
XI@Ԟ}+Z:~e <g0<̔D=0-vɲ2Dcg1A'1j-vooV;ܩ˛yŊ3<5g䚭0K@vJGL>a:Y$G5͵G$xٚɛmͅfj
t]b@n[6aKbj6W}_Ē kЊ: %A}B<Rnq}?4@e"߈	(^Dc}NB{"5lbUvAh~ePF̖*|U+r:-#x+SX["C&y
1u<>
m9c.O`0nk^[pl
TwŽdX7kV^>+Va/߄<V>xyč`^ƨ'< ex
 K}ëfc@vXZ;PO	Uwˁ	!R%V*9>ؤ@ƾ>xڦg+C,Nѭ$bŐJfXު%::	c }2㉶]/0c*z1f>,0T+C`Ծ*ATgq&fM$fM	"S{0*әe|bT:'?`YWW|&hԠC>	*L
v"WMH{ui9Iisr>cNPK[  %  PK  C:U            /   org/bouncycastle/pqc/math/ntru/Polynomial.classVo;K6.EvKь#m$k[mH&DZ-⇍*pBUO={)P `crh6H z,4r6(*@q޼߼7;_} 8t
z_|X,7b`
/I>Lo">A	/
yj<dv	:+hq6ߘQׯLxJoSlř:"XevB0Ol47*%R2.% ^ͦ+3K3zcZΤRܨ]OUʕ<]FVON^|yYN1b~lX:*A
!'+bi\>rwתʹZeahQ$\dEZu2w<F}@wkQnҬ*Q+kKS(Bkh=UAv`ԋ=ʾ}'g{Wwr}_?WgCBO<A$L$B$z'b8!@ Q8}0QH!	'D<Gy"/"rY"%r.)6y	 T
8{&8#|?I4`TTJWq54=0l'B;pN (ݣf*
ݣF7k
4,
T JSὑEw;bcp>FV .GI".Zh
i52B庾)ͮy\;-:+`
BI\(ݪ<ӎ܅۪'ɑXOө༠gLQ"Iǜ>ْvr`A`"G_:[˥n
#3sׄvBPwMpg*k82\t2ހ}V;cExc|> ~ǘ8/rgQ?%[YJX|`]KmW]Rgf[nHy糛Ŧ?Ys>?a>"+=c($9S$ᄮw˾kMu0p3`@u;&wT+s~Jp6*Tiiq=$c/B]N'1Y:XVV0eue/%b=&	q'^ M
GVLK&[P+`T3Je^tqG,0NS 9STȏ˜.\1rgY*t	|<CPr?(XH'2oşJFg3~oв.X~7!bq.?]ϒ]n2A+hIYL?Xn.2ZQrꐥ-]N[V6]X*1PBJ7Sҟ
gUyXq"YA'ac4gmW_z,b\yd۵jA^nzkؿ[;W^bǏE?.LQqTǛӏmz.<WC𹻿GzN=$Ni#GB![l
72~/G^;`84`_0i3f6
asVrJrJvdi+DRϮ'n;K2A!ٰN5%obMw
ShkI1_b٨p_E*^x{͆B'ig^<	خ-=u~WFnʖ*
PK9.  X  PK
    D:U            *   org/bouncycastle/pqc/math/ntru/parameters/PK  C:U            >   org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048509.class;o>nFf
0F
O 1l22K,K+KrR
sK2JJsSKRBB=L,L
,lI 	N-ag`ag`a`f`b`g`d`qOIePd`rA$'gZP`;FZ PK@,3      PK  C:U            >   org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048677.class;o>nFf
0F
O 1l22K,K+KrR
sK2JJsSKRBB=L,lI 	N-ag`ag`a`f`b`g`d`qOIePd`rA$'gZLKPb;FZ PK;j      PK  C:U            >   org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS4096821.class;o>!Ff
0F
O 1l22KRKRs*s3sK+KrR
sK2JJ=M,͐XRXZZT
5Ȑd0vVv6vvF]
Mf!lAH9~5x@/#s~J*"'L bFA O
b`d6P j*E8w3pDjmg V  PK     PK  C:U            C   org/bouncycastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.class_KAϤffiAo*žՃA$D[;sN=KBADu{fwa^ߞ^ a R4冨J@=\dz5mzvze;^ׯ{ƈT=1@wY0O7á#ӺMdHoӓ~=dtDuKNSigv2!s-G
C`\9ϟ?V&IB($!+XӰU!Y!9
	ǞI@@O|j	JS',O'NPHO#7$YmŜ1xPKS3ֱT    PK  C:U            ;   org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSS701.class;o>nFf
0F
O 1l22KLK+KrR
sK2JJsSKRBB=
H 
N-ag`ag`a`f`b`g`d`qOIePd`rA$'gZL{xPb;FZ PK7+ߣ      PK  C:U            D   org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.classJ@ƿiӦi֨%œ,iqM6MXP|(qFԋYfv2/o CPэ!A]fa	jn>Aǉ: ]Ժ:4cϬbd?~	ј8nFK'8߀VBcӳ
`罌Y%?#exɦ=c+hbS6A8aҡPZB)`l.j IZu	)҄杹D@"WH7	U[P	PK]
,  S  PK  C:U            @   org/bouncycastle/pqc/math/ntru/parameters/NTRUParameterSet.classR]s@iCPVQ}P8U[%4gDg|Mi-39w=gϽ??<`]J~\xbڦT	Y8clg2K3-fwcnȖyl	r
M=g#%XeK>.qOm-'c~W'2Ͻq@GH;_ENKA߉\""2s8?LI3m	~>N	v볞k[>!o7F.anŔa>XeoF
(
,IPl)Mq@ OP$(, KB#a.p``4a;7	n&[w\¤-W+4GQG^G|Y`t4<M[CM+cjvd|<>Bl	osJ2L3iMЅag	:?
44˱n4դu**ֹXP);W'.Hf+x@#ʵH	6j~3(=YzŝPK0g  7  PK
    D:U               org/bouncycastle/util/PK  C:U            +   org/bouncycastle/util/Arrays$Iterator.class}SOPVmKe`AnS_0ddeh#_|A`$e<Lڤ;s?X@>hq.=]*-1[n2ar&WiZ}@h.i;qS[v~4
}
Ov~qE!V4j&`Z<[f-'*leDmJ*8zV2feèW0ݎ1݆m['pgXaEaH̆gԳO-kmp*6*~)_UrjmaV*"PջSOږk#A	V*T$UP1bX
\iNh9xz>Ȑ~ŠG'?(z'*)o
dWO&b	 
%ܕtסKaifH^&+80dJNLS8+ufmW.8eN6BHBȿFTRu+"Fh
ړia&||i"+iB1q1	J3v!~8auk?t)3h3XHNDNxv!Y2A;ke0XUI2I"d8ԫb?PKWz  t  PK  C:U            "   org/bouncycastle/util/Arrays.classX	`ծ+Ya+$!J1bCl*ĀBhR,[kGA,-nHB	usH#q!qZzЃ޴rw8/1?}أ  8P+PL '@Ţ"_w4O4_r(fQgoK41I,1_O78u{Z̗ВMeU2E F-R TZ
ՄpT"-WAd^bH0If
HC)Ff]e0eLNk<7`*pL[)FeUWZ9STt)̑VOU$ӀQz+R6pE"Y5ě	E2)	q@lo1eHJ]mrK[0o!\	3pi
ijÅs7lF¼0DbBZ;rh|D]NRV>xmE<O7`z
k̊닦7յ{Cɴ֫#s6/2@IǵEdZ4L$:T6q5CQ\h*?3ܝТ)V'qM@˓ޤ8ehZK 3i0MYHxp{$hmy]`kW6E7?>T+\6L4>%%uD7TPL[HqJƴkۇ=-C`km5*KTN4ák֝>*Nœ<eGKu0a89'VҐaľ82z뺰'[vb!M4ݏ^s?S#4}2)mµPD+t?6!CDp*:eʐaH-2Oke*e:>$
2|Q]\wUҙY9C
Onbw{'Ϣ$F&B&UlU(Lɹ̵ܵ@f,ܿvҒB!1K	Z~By_LzgwC9)NND/pB?Hx*'Gb-$QC	׀"jDQ9D՝O+BuH&Cu$Rr	=H'Qx~	]0
>EI조dm}Hb;$n"q3[HO9wpiw~'C?"3?v_"eI"1F1I!qox$C$~B$vH|WI|ģ$I|7I<I{	?pI-՚ם˕FG,ػ~ V`nVYl\g*%u<"	} diH~2 MUކ҃\+u6?Ae$d\;hsY]RQv\.FťlFJg}%Ql#
}^2XN%.Ax,췱Ԏjef7fflWuP_WuI~L26p%V
. Ϣ
Xoi#a?wmG+7Voz㕱Ts
K
TYJl8Q~˦574ZGl4Ԣp
OR>Ϲv93L:Ϛ%֐9І;IX_0Il
c0-7=`.g
N!=~"iF~:Qs:J즐<O'vjq*Ax\(tNk#6yTĪP=Y r RߦjCUDŅ!jKh8}$,+q[Wut15qQaJԼ=l=12CxѰ{^2<!bk^5<^3
MYҦV_,vB7o{
n1xXm֋U[z73x/~4-u6;3]6Dq7mlbhs8E|hf(ǽ;aK"8T7Fi]	?-
Ѫl
삙nP=K\+u`ZjOAkg;^AM(Wu-Mu3g1*w&ӺTϬ)S}g]QʸJKK ZɁ.@5&ٝ I	},sCXm""M _1$p1TqwtAAxfn9b_-}flˋܘw#-	؞ŝS,W#/nk)	9/fbqnbq>w.Cڧ
?NSOQ`*E:b7p8\P`9J8gL2E[G`\~Ī{h%dX?䀕hY[@7 z`-zMZ'R=}XZQܳ"KsV
:/wt^(|nsYA|g{Apgw>+k3ƶn=,-Ǘb^=ldĹ)Ys;P\Yً}y\1(蠏`<`2y?n<\+<ϱK@xօ%c ʤFѽ[G<SŠ_z"Ap2weCŞe9Q3(\v3qRNܳQ9>'#N<^DKhsV
33&){ztL	,;m+ *HPtP{ɠ8h_
$P?0] ~RYbNl0x$x*
^᧊ U"xK`Jo#  ~]2=@zP8-F*[J~VӲ-k YMp<j23^r1q}|ئm2Ώjo҆?!ѧb,%x]?<3..Fu@YӍF_ȎGQ%6E<\
ΠWpd${\lD\AؗqNC`8lL}ë-8	 v)ZLX3
sr۬zqqKZz/r}N5|-u-	k:p{g^ALPtwl;P<:z&#Mh]GBe71荜ANdXApG1{pF@⹥Ld!:0AW PK[:I
  #  PK  C:U            -   org/bouncycastle/util/BigIntegers$Cache.classR]OQ=CۏEʗ"JUPx1XcbQx)ݒG_|H1ܥH왹Μ;3~i	ln%'XV#+	GbK^
lW_֥V#t.!b6_XG6?HS/,74}PS-@4	5)6	o=3
^6Zm
ϷA̱5ߘ0׹Hӕt;tK諒BWݳ%4z5Ч!_ a|y\_DS̟dGAlǹ{FvQ=ΛӔ!uࢎAh:,HG]:
1+QDi\UUaF#C5־pQc8tK<[[U["Ê#CPy.^ݼ2`ئ]4>c.fv0m$"_p~SFh"Λ
4(a.5^M?ʄ_(bDm$(x ]x)< 0KG1ѣ۵7H(k"EF8}!,ئqw
PKp,[  =  PK  C:U            '   org/bouncycastle/util/BigIntegers.classV	wi$e
HA	.9qAKj@Z2
qRBBӝ%iӅqZǐ@[Нt'uɶئ4{ﾻ߹Oo !ݎ
vvxh;kGv)u;9U4I͛WU׵NfrtL{sy8]C+x	%mT
m31anL+@lzIb~V"螭-qֶM$̥@~Ab`L)zJ*!-RQ`wX!E	ǃ5U-R1EZ<

xPWBPJ
hj*	FH*@ ٭c-i)5k15b?јǵ	E`$zJ	S?ד۟J*zPջS;㩘Ljد!EOFH<IY2$jj$fd4H!,E:i{*e內/N-Mu2erGIf4U0S7\Z|%7ϥvw2Neb+f{㉑aƆzF4{&ƈrG8Ub[?0JĢp:BANOب3霦MZ/sF2cj1!zy
P+VoVShgQRWNQ,5끣J f*?yX)hyJwl}ri1Mە|Dn=$ٴlgYC/\mI(?fT22aB#^ZIzC!ҕ%'zcbR32)lY'Y-d{I-gT\[4<颡QͣIŘcٟrܖKeZ^PkR#/ҵK{2iG
NZ5tW2?KM+Zɷr+^?|)#2kD6^	E,NKe]ٔSa6m):RͯQ4-^=_)ۋSI`
J/C+WemW:N2%Gt`yǊҿ%Ip	p	{$_¨Wmmw6~A.93
\zV9O0-
]Z0墻m:5K۽YA'SGxH͗yM췯R*G37ZD뻰`]\_K5<|~|OjOe\2}2n`j7F.aV8d4^4FBhdK6U2n2GEC6˸Ge0>"d`pCɈIO1|3e:N:f8g2|8ó_g8Mo3|s^c8DO3<$dxN\/*\~<V*"?PcwH9<4+O\=Z&m5k-I9Q]	ߦSΘہN|+h9,,h-E^K<uf袀!\uTSTYYوHPǂ$3Ji-jDtS>9U{mu[\ɨۺbETڛc .~lۉ8-.D[[HZ5tGJ;U\K\iqԈknvI-[tY}qXץ.]E.ճKn%jKOSf9S>r[)b33|ٚ=Y/:G?p-<6Du[YӰQӋotQTUE\--Q%/ʖᲫ ]<CDjgʭ p4/<NK3Ŕ,˖:Pu2%h-.̰9:̽z_V@6xhUExx`Uk/}
\Utג,zEoˢ(iQ2׎/yƒ.uQEϟ_?d;faعMԕ:Y#~Rk`m.R$	OPNAO/9IHԾ3﫸̺єuBjV/\#e)ɵ\=ka/5:{$ITYC_ElyVŗã{K\9[vsYOco>,fO63384}&<j*I4hHt96	&wEژݔׇ=x~VJ,5>|zΦ9SOCXD?$t5&Iq:ѦX9!<R43Rv'/INc%>tcv)-xi<7-?KO$/5bRWw?>F$jw/3E0PKgw	    PK  C:U            !   org/bouncycastle/util/Bytes.classM
PfZ6FS[ܥ1BjQ
y
|衢S9|
``!Jeks>#ssCX&-aQQɸyr*lS+QLpltm: .<mWA,*y%0E_0`0llqO'jlz3j`-hPK      PK  C:U            &   org/bouncycastle/util/Characters.classmM
@531+M;&`g9ϘH.bQbFfvfv=N2J#"b~^<Bɜn7A,"<LIB%+U|KyR͞`0ꄡO^,@m086hL?IL`U3UFЭT_3>ss>koPK"{      PK  C:U            +   org/bouncycastle/util/CollectionStore.classSnQ]gN)-b-phZIjL>@4b0S3~_+&*A_M>\gk_QLA7u@Eoi

C9eԏ|[aVw4;>yf3v)ԇڎndm1z`eɰ8
R`[֬Y?chgVMp7*#NIede(2dd,X$#+͛B/R*Ts[/NBs
M
?Q$*nM\uLܫ{lI$F9o)=uڴs'QYH
XW0
xpE[
d\D
 60 a7Xƍ V&DA\uV\e*ĊBVȓ^z.	51._Huq+.n{o@$
)Rȗ0/!RG-2nǐAJF,s#ӡzɆ
!.ceS*P)J5TL'%鴗 PK) H    PK  C:U            #   org/bouncycastle/util/Doubles.class]A@ߨZ.K/nE7miv%'QbۈL2o7? LhM,UsGH%AH*ډXz>	\g)%EU*?;rj`1TlBwS\:"YCh)7_ѺHi74%PKε      PK  C:U            %   org/bouncycastle/util/Encodable.class=10C!4	Nԁ`J(J%8"t,{x~/ ۟D:6)Oms7}&X1QCO KE9O$3P4QPKgq      PK  C:U            &   org/bouncycastle/util/Exceptions.classMK@ߵicbVmǩx"qeݕtǿSA1jg`g^y}{z6AuFPJ]U!%OK+spk#"haO7QTB\^4I4!XiB#>fC#9͌siu1KtzcIJeoY$yh/>3z__1büM
sh8cVpjP
FXy, /GqN3;C8XfY`PKc  4  PK  C:U            '   org/bouncycastle/util/Fingerprint.classT]We~6%Bj6P?B64 @[&E).uYBv#WX
8A=<GLv(s܋gfyygw #dtxQXh=Z3kJ[Yx
¾tqF1V).;e:1|%1dTS$Q?BZN]=o3HrնbظnӰͺmͲSjZqrҭUiǢbi1+Eb5
6yZ-bC@xdHr%k]*Av9Z^76g+E?0>3RRm{V?wsӪ#@=&-X&8RL}mͪ	JBVʬmVJh#'(@s[SӵI};ln˘W%\$.
	q	zӥOt0yg{
]ɳv]Et+x=
bCUA?$/M^(B
Ca3@C*H`c

x20 BRbxvCd0p34i39o(
7fa{S5ˤYr
QmN9ylҺ$({@VD m	S>QD,&.=uP  ɼ(󢏈>Q G.ENfQBFBR $~>Gw$OmAW3.!x-ǘ~%4/G3җjW#
wbpZn7BR¹hD]Q*{wQK|;2ХRpK:D@!R>խfm<GϠo1vIr"{Ի;zK&A+ı;AZ)N
MҔK{қj^ej}9%-'+i؂'.:׃j:yUuI:VuPR8az0a@&aD-a9o"/PK^0!    PK  C:U            %   org/bouncycastle/util/IPAddress.class}T[S[Uv5CMZTTQTJ-5:tpSHӆIN:>:jgxŗ?_ڹ@jfug? Ӹ 	D2>.*蟠>+qwvBV㕯r[~+e岒iWN_ߦ6d[-04ȴ$Gn"my%'\ᕖm׿xsł@ceぷQk~)W?M-Vr,W^a˿OFR||"z--y岀M XlMXi@40$;>|C:ey/9Y^
"2}fÆnm<agn0C1^ak
LF."a.34c2->baaނ,{w7ݝ;F(/&?
´
Z~Ak'1neyz U9$^`PrNY y=2VP`$Vŵ=hʡ2;&1H2JRs8xhѪ~7:$w4G1ѕSX0j/꽤m@Ԏ8y=EdpV*`

@!}Dd<7HKhxb軆+R\,ޫt.Ŕ]Oؓcd҆\V;ɳƚhT`yݓa|
,VrMd~4Ӳ>(/ ҵ{Am	AU׵c<4RB;>#u4BSU,>CϠ!L,5Cc|"EdJ!5tiۇ娻lRY0]*̥dۉξwՕ2B(ByaQDjCp@Iĩ@؞9?PK  ^  PK  C:U            $   org/bouncycastle/util/Integers.classmMO@͗㐏QBЖ6Zs譈CK"M#M*S	ġ??LlK̳z{VT
ځ@L~#s@ѱb88?\FVԯDԡhB
j6/N?zjA*
J^D:<Wi2XTFC}=ICf G&VD=68PYԹ1&FUC:?FPLd<VafQ`l8s:XtC<¨2j:XqUkcdes&0V*)(64
(Af;Ew*ior޲dVW3uZn[MӝmZjaF߱IwN5PKdԤ    PK  C:U            $   org/bouncycastle/util/Iterable.class;o>FĒҢTF̒ԢĒ"FĲDļt}O`RP^ !蟔\ __\X\_Zhbn6!!v֌bY%@%J@=3##11pY PKD     PK  C:U            !   org/bouncycastle/util/Longs.classmN0ni!Z
+Z&q".ZU"$s#%n'މI. {iXs>>>
dk3Z|ZZ}׾DIW@nDp{W*6(^ˑt=jOU8A/zxSQgVޅX`!IF+a乽p}@CZ(VdԸ5FVr!BSdd0TA.cقma
EC:A8( ȘAց(1ʌ9L90"VU
cdlX
qxI(:6R3X&
dÂ8ZxY6Nj.e?3HWD;h:޾bIt)uzx9U&nwh"?ZzWӛ,XPK6Њ    PK  C:U            $   org/bouncycastle/util/Memoable.class;o>NFJFĲDļt}FtҼ⒜TҒ}ĤTF֢v&vfF%
M:5ccd`c`e &FFv  PKM      PK  C:U            2   org/bouncycastle/util/MemoableResetException.class;o>.F6̼;FĲDļt}b׊Ԃ<FtҼdLN~iIfojn~bRNjPjq*B9;;3#̼tk0\,,)@.0!syBL@c#X PKr*      PK  C:U            #   org/bouncycastle/util/Objects.classmON@n!	D;+ql$>ihhDQ=c		ٙݻO { i0JPa&cBkcmHhMb9NGΒ)Y,ⲝY,Z_v**@@s`YA}w2ݹ~b 0comfb6w:e{s%wqtK?+_&Ħ8&ab]XPKԖM`    PK  C:U                org/bouncycastle/util/Pack.classU_oV?6$&
4Hؖ6ۺZh/!R:Rvqoy&5O(`d~j;\y6X:>{~y{ Wa~qkR%ǁgP"E4Yb%^$+E])V)09xjAӢ8:j?/Q#Ja(Io4ZNk[j.:L[R>CVva4M_nV[靽,䰭30lda'9wonڏZ'CH?47C	0E)=y 䁨|p8(@%1fĨ+$.H8	 iB
Vi$VI\%qOH|J3I|N~~^v:XvA׬dJk	8*-\5
@L
'ځ DU?Jquǟ͜ri
А,?~1׸1k 3jRj"nt9sz(qh~Ži
bA\G 7c1\LAqw#"px	ᄰ0}Si+@&%ׂZhԀCOɮCUO ?0=H_"FkԚT0˾5
LMQ!`gV;pBĴ'"]|g`j0a?/v9ɶ0#cWzq.ҩMa7RzΎͱCQ9eJ>E8T̉1<6PYL-&`MD7.n@вDD7S7ܘ*dQ# OIEu]xgٮ{f]_>/|k'kA1ỈO|O|@(;1 Nj$ ҟ˯
(B+9NN7&vJeܟ$1~mm s%%65 UK`L3gɉ?NƟY'[gg>g܉?o;g|$ȟvi2F1*'=~`;ΎƟ	PK&mPk  P  PK  C:U            (   org/bouncycastle/util/Properties$1.classQJ@=MFkZoH[QpR\UtSbRI(. ?J
3g}cր?gD/',36܈IjlM-ӵ<Ǽ-	2;
O6:=B®8Џ<{f[p	iJBƑl"d}jIZu,(+P	W}p9!VwS6)
%,kȀ4dah(BGU%r$gZl]z:,ġ@XzW~^&+ݔ&q̨'X@**Ɛ-Q}`K98KPK5V  '  PK  C:U            (   org/bouncycastle/util/Properties$2.class]K0lsݺcEES^S.Ԍi:RP/(1-` 9'OsrrV{@?>%ɾLȘ\
1tFm};3G~Cwq(ل92ϸ\6p$|@0|'vh(=fG{2B$cUT6sFt^
0
K4

EJoH)Xvs~&#%Ȁ2U5X'ufw TaL#z4Y#g`42\St[y5'D>y#A2Xe'_*2QkeldP3=)|PK&l]iY  !  PK  C:U            &   org/bouncycastle/util/Properties.classV[WW&	$
VE[oUHTkՖK 
Ћ!383Ak{m틼mRɮ_ҽOB<|g};9s?@  K7<-pX!.AjhIm-9#دM%EuҚMsL\*Sv2u'uB(ۯ]Ȩ#d.r5i1l5ӥYw:'i	es|Rm=nXBCVWGPLl.[qNTcjcy嫾#紤ߵu3-z50fkj*a%UCBXP]hɌӱdRseetN%	WL	OOum3nJrV^ubOhS1s`.v:`LvHASrłmX39Tвɹ5Q!=N~	[eRj;N7i"ƭI:説=AQopJ+(uuQ*_#5sJ飺:b𭓱EVOxJ6e쐱S.O-czQ2dP(z~}Cb$wuz/Ekde[[&嗡m?)B9cw1vz 4Vv
O]i1		,K·|s~k}"B=t͡e}D[pLA|
B(Q~T!Y*PЧ qb8(x'lfc)GP
1 Cg<W<ׂx	o·Ќ7ChYùZy*0B!8CFtLʏ3B70H2L0\`XN/n;&=	8Fj<=`;l]NjjgU(XYA*Ccid_/لwVE-,M%襱{!_R
.ZJ@gVUlr>xh$z/SecjWnoqthi7Eu{%a~bpˬ.vP$v
Rӛu$g
Fy$F7x[K{E{a/	<ޙ ]~m$OK$'g*ӳuHY(CRWqS6]s܃lFS%YeIO+5y5FiLl%\`hG<'Shuc)=x#̝m|Ct'Yć$"S/5fUB&Zn[F|͙+T9젳ޜ?D/Tyl;G,ku`0cKegeOX"~	u-}꜁_+*R%yN8^qLp8yG0O2,x|S@	)JQ2Zb\SٗC/aZ =cbPKF    PK  C:U            $   org/bouncycastle/util/Selector.classm
@g5??Nk
!&	ċY >"]fCGQ>Ki*!Jq./RhYb&2LG_D>8IYY".B]<dZͶra]2Zl&&~~ЅBk,n[XCz/PK
g=   !  PK  C:U            "   org/bouncycastle/util/Shorts.class]JPiԦ]&w-.,]."XSBMҕěP:0ÜssX%Yv
2~"+QAe0[H?*|׆9`YBqP$U٨gmTwh98;a?l9=Gҡg^YU-	MnY	5LxcU|K-PK,ZR   ;  PK  C:U            !   org/bouncycastle/util/Store.class;o>^FĒҢTFĒbFĲDļt}FtҼ⒜TҒ|n<ɩ%y,6!V>Xa
12Xh0<5"Z
,蜟DHMH9`_ ,L\@002p 1
!,N PKE   l  PK  C:U            *   org/bouncycastle/util/StoreException.classuP=OA}s'BaHL,d;
Ckss,9wͱǿcBGǋ	XL7M2~@_jSzX+K$E&M*n
􃚼$ik6O&yMeJNgblNn}LXL]M:f^?'HF!M8"T^Gy	-
V<q<|G{
njroPK   Y  PK  C:U            (   org/bouncycastle/util/StreamParser.class1
@Eh4ZXXX[)Y	
`.!af#z5ĉ|f
=B?')$V0*\*dόya+]ao)g%1(BA'Q-VBͤ OPK      PK  C:U            2   org/bouncycastle/util/StreamParsingException.classuJ@KKklUw.
neq$d*A,S	ޙ6ڝ׊ɔ˪VKKT9m
ajL$2S*K+Q9+,dQj}|	'[W7}If<Y	fgъxW4	@v#5kO< g?.ɹOpO_1xjޏhX#@;b\
PKVٳ   Z  PK  C:U            &   org/bouncycastle/util/StringList.class}Ak@j4j&=&xKz),zfO,B?C@TqZ/| 1fh`F5V5M(Yj*#4iՔ6+o)pʴmYStë͎W蛵rgxO.{~f&ay9rP4Zux #zjvG
t9Z4[ PK4     PK  C:U            %   org/bouncycastle/util/Strings$1.class}QJ@=iԶַօQpWD48I!~%Ncڊss}1v(-pקRӱdrtOFLPyc
=7/(	Ȑ%׉ۓ|Cᙯy$!@Oz:F$wO|O鐹ג@vwd,,,XleewvNN~d|WvV{,<ZBYd8;cVm,bFky44X~)q]4$8WB0yzJ1C^љfӛ1mU'/xФݔMB^8+g_KVJ
csS
Mm#PKm\  [  PK  C:U            2   org/bouncycastle/util/Strings$StringListImpl.classSMOQ=o:0P,t
TN"~$Ċڦ-&t741O&~;}Ecy{=wUlĬ
RsFY *usUVWS[*Vʁ@jAUs[{|"Jn~P+]?[VQ2ٍLwϮ,vgmٯ-V>ܴ
}55h5
<G<APlw\tyHL䤮48[]qwnǩ)%,_e~!r! tĠp]G/n0iC0GsC6q213dlE]ݩʍe-~?ww|$F
@MUc7	ުLQ6|,d@H*Fk6XsiIJrr&	$ajHOq3FǩF);uUR-Wć߳'a#BO~
妤к2KcG2&,نVIRLb'JOq/rL1ِv,)4?
2f' ޼0<En\28r|㤴8PK{  p  PK  C:U            #   org/bouncycastle/util/Strings.classW[PV
IP1[VI Kii눕"--ۦ4%M/}`J}tC//}k3zݕx:e_,q t76 /|^T{	/8)%e1|sEkH!b)k y⢩I*5d:Lhт%M.R%SIoW&C.{r4_WrZ6<:lٰөK&.'F.ŬH_S+m9Ei6>d9uVtRJ^UbQp2zz&U%Hȇ
50SPõ^2fDQ}qNqv]˩3jZ	t8t1?{Xm5lM:kOzs`C0B
|[A,ŠO
̨CSk˻N`3\'vvS9Kgؕv 
BwSԌgJcVI5c-ɨR2<g-6F$yT}ƸJQQՂRTL7Z)_iR2r`Y-7s=aXj@EpnUVrM襤-JF^VJv Zծ:U:C-&>bUGo0`{ޠ"B"8."&UħDvs":Etq8FzidYnޟNpk[죩5{]_ϺFUu97[ab3&Ȱ'NuHm	z`
g"(	A|YBn&!	pXBG$_B5E@S8*L\'!'ج%	aLH825}	U)LK8kU><i|o0 S!D(2qy&"20fЙ:!L,0ʴcXKc:5$=[fU(*)sJ5JaDVvb=,@s&;>"kC*`V>@SѻB:][7qhƣ^}`g2phE$dI"hl+\4[8/Z20h&1i{#:SmD?yo52xߏ怒g<
6-]dTRDLq5OGUE=أ{u`̯{+mx22,,>-hq~q"ū4?{tbN|\rsGw wSRd#YvL~ij=eZi!(w/?Fx7t}F&|L <(ǌicbɴBz3~E޿ wQwBdZ2n\*'?[+ɸD6/6+m&~yR&+ =(oE4	v6rEEw$6!1[S.x<e6\h0d{?[Vg)醇3J,tOFX	ߎѠOQDo+>F0HMl5;3+oCWMe,+wZfr[6m}Se`@8ԃ#-HǍs۬_Z]dYGh4zYY,v/36[d9,O`{1"+=js-H
Sy?ZFGq?Eܲ
Y'W=1+gaNiȣ'=! xg>j#qmIYdm7e
skx+6oF^ՙ1QSrxi
}=us]4yh~jaawͯ>1އPKL1    PK  C:U            !   org/bouncycastle/util/Times.classULAǱé D)FAl.+g7q{((|)fޛ|!&GU;BsB|3SebM[y"ZhU'IsIfVe܇9C``uB,Ab
y@ﾁSrژѽUű+zՅ/PK>>­      PK
    D:U               org/bouncycastle/util/encoders/PK  C:U            +   org/bouncycastle/util/encoders/Base32.classT[wUL'CJLB5i
[ڴ\ii
0*eX0y҇kARJQ>&b=vo}?>pk$| el0[
Y"%r֨[N9\j5*T^HE(-4jzmF_R
hW/SK>4{z(SՌm^U@LnU*\E01chiӖ?SضuQzNsle̞7;:'誛V5^;aYmu-1ju3-h٩v<ͻ" zmw?g:x.m)=ixV&pz[NC-5cMEE5T6q؈p1+bNOļK"EUx$g9;UIvM?
焊/Z͚amTrEF(6j&szxlun=h鿲SILCp(PT>\
٧YUl2{X
&PpIM)ħ,c
n3!x #eDqOFwe3m&r2Bm&qy7O63GLd鉻ϟ&y8t';Z96w+R(;҉}M*'
QIn/-#<{5Hs`eG(cGxjEy?N4B6#~'H.Zxm#T\᫄lT8ƏN<k	gw}{ib7>G_Qu/tL*T)"(HC"X>c',6Z'پ8}1Zaif(u=@puؐ(|A] 9s1~\RؐioDMSX!O/Xp <w;!P#2
[V9)k4lnT6MgNZoLzp;yk=!4MPL(PKO  y  PK  C:U            2   org/bouncycastle/util/encoders/Base32Encoder.classV[o>+r
)$MV,״i|itXvB"mTU*AC2
bhK>?!oIѢ?IlݥHF\%o}fΜ3~' pH(E 4Lt6+^%^ڨC	ƥPIC4*R\Na.!`4>>1ry*{}bzlf|rԄ Ӷ8UZ5+wpeRlb9Ĕd*[lI<5JdjSCf%-KM*93Y2B2s5hl޴&8)Jn7V6T/WG;/9޾#(/$F[fu)I-4IBHKfp`X Cq+oJ\ =
̲l]q[lq(OJQ/6VoitޠͲ`fD,Y&.X6W,x:?<eX^ Y@gsեQ;QUx9ۆQ3z*w,^.բezNexUd2!%Ðe :VI}َ܍qjNrjtSΩ V!n~ C^"2 !
Q@C~CQx0BFp*gLj;35xd?i
ހ489
N
N»#"xA2}c},l]1Jkd[EWqp6~"f u0 =A"]xF(-HG([8`ARв\<h
ps"=`4ƺ^#$':u_]"2~]Ӥqǽ-(P{<`k;6as/9>sa>O
oXPTxd8%Q00r\Y\.q\zUI\U\
{wFFL!:p8ן gd%b:f$&Z,k7^djeq\bac;QPAPpZ~s{vJ{ 	4HW.:cR-J:z<.Jf"qKL]a++\wN"H+\UPF:j/5&*%,l&mnD14S*`gĄ.qfC\zy]N\M+Q/R\'^kBJB(}Bi;<DĘ<k1u
wŒA)&~[ѵsk<zУtYW0ƼG[PuPWY}%gӖ=z3=#hf{Daa5_P"[p=<@EV u^aWߦvSȻ)n
m7o7\qƕWk\q_kէ"- l
gنbJV]z[%*C&Ojn'!u؄Y<Pk.ן9zbJFn$ӃLOӋLo#`D ^p^>~( UY=CJ]ߚ4Mvܟ+b{H:|-sLX{ӽk<2
~mv9z%y۵Kl.ze{я5^1lV
38?=9	e.iv܎,?>*/B|J5z1A#b9ڄ6!eM=dJYsjj<XgE+uOE]Q 1u fJIHಳЖ\rD+/k6~LB3KӾNg=w:YP3xv8b2xT:~:
݀֮:LCi_Q4'žџ>APHu	m=З,XyH6eٜƲ9gs2v:c;(
DT[;cS~v1l1. 26b]DK,.#rvEg9(8#X1Ύ &Q=LGˎeל/7PK9~    PK  C:U            +   org/bouncycastle/util/encoders/Base64.classT[WWېq03r$jrI5%6I	Â/;}Cڮ2QM9̠QXgϾg/l@scƍ57`\
pC{id-dt&%Jެ[N9\j5T^HњCE*memfM)msCmJ(<gCn5
՜֬$2NGQS75^㣜bhum\b޲6f-~=Oic0w֔a"Zw1ZkfxG~SxwE@Bqw?g>x.m*=mCxVߦprnCݦZnh+鱦*	eR56"<"fẺ bQD@Ĳ"(`EĪ`b<t|s$&CsBEgfͲ6.c~xƹ"cMF99T=<:٩$C2CKpȐ\2|٧[dkXM&"!̛1OY%gBH3@B_H➄JXg:L%D&py ыWC&>g"GO}4Iq;6ʯyXaEؑ&NH
p.=||'/FI3b"lxqBYQ^S:̈?	?(.G}|pGىa-`4zog=|Ck~g?;zxJ!Jga{MNAAD:U#8buK#|sf2X<C		G
1̄cO15on=O wFLm06"WQtM;i|b"A&y@``(oP )gs4Sln\6McNZoZL
zpm;wk<4<S{0ǡnSQPK~l  w  PK  C:U            2   org/bouncycastle/util/encoders/Base64Encoder.classV[S[^sёX`6 K!F7!$!) 
&$tpRxh<ԸzNgڇ>/{['V}"̔}{g7xDK7-[PHBZG
9và?wzSf}M Ag{~Rm.K
)}

B1?](*TCJtBOS*OdsS0e5	[(V.yP<QThTùQ(ObE<O)7U+^Ho|B<`._)ε͗!m
OssE:=JZ=rwstzpB8S)MjЎWf+*z*WHdUWjTXxTzrqbtONqgy${~rg}9|*t{7͙\}X7[Mb&3iIm&IJv~I$=#"X-Ss-;}^v`mޡzjEIsh5PYI!)Ea)9	8ei
Q\	$)ElꢳK賩tNC'$|Ji	$K(2k{Csk\pnc4 )tTĄc
b'³1t<k|X쒢Voz)3Rn oNoI>C"A)3kTQ:gG
5RvQ6x hŃ*0C@~`=d pgMPu`3lO<

^<LppS`O yo-[|6O;\v4g)g<<`|x^><ʇ.8OQIv4<L'4jgu>AYo YH$\#)t0W]X2
~'&%K!>U&[3m~D,aOZ2)DKyW睝@l_ pWt5*ݩٯ&'׾J^XF_RTQ/hдuV
2VnB2v+SZPMÈSƦ]40^M>$]]+Ϭz5񈎰+{J3k4HZa(Hr\c!@¤ߑeRAc^&29L8=&S[%M U=4YC]YIy.NR][uà'sڛV|= cBKNu7<!nD8nTD&"沷 `),E2ѧł%"pd\"`f0w3X械Rwm{J>b/nhPԷkL6~VرAB4,m^fȷF]=#1ƤIb\3_EBFcnX*X"5bRZC18ϓ:(c(JBUos]ݤ\T>!ZC9zi[jBQB_b	jGj
0̣awm8bku`k5;ZXؒ]AKa#'~,s'O09ujMFRhB_jgz7U|
@]΀b	4b&8tLrֶ/VzkĳIk`ADo"'N=d/`\Hʘkǔŷ/Z*{Hsk0xP@gcӀХX9H{cׂQ7yAL`jkWVQh~{K7vt<[ݵKX!)[$#+ʿ)\_	zJ
8&XDPKYϾ    PK  C:U            4   org/bouncycastle/util/encoders/BufferedDecoder.classSKOQ.SfJQRZ>H7<EM4, d3XW
.\|{!<usw=3o?? t$zDIFV,<!P:JY?<؂登	y>A?l.00t8v^hAU#%K5j<vp6[wڑ^%
@**u.CEyG-7a=_
+[<=~24-Uֹ'ΔM7Dk{nS<~3njn^}&BXݰ"Fy,Mmʚq
\0pрŐ{.3VDz)IFS)D&zeD\5̈́s%6э.1*ØR@&AHaݰq]qĂz=6pk>a
	iF(!Iꆾd8Pr\vS.&ӹ}bhlV;pK69KM.艹.>_H_B脁{Z!!OeZBV^cI5Uq[qx{l},A,2Jٯer^+1iS-eAK1d	SY,UO[FyrӶUcZHsi+yf[IHmdַ~SxPK,  ~  PK  C:U            4   org/bouncycastle/util/encoders/BufferedEncoder.classSMOQ=ig2 B;2Ji+tÇEt:aʿAKcbAZ_M(9)9aAJϔAI%'JD^p</1L-47}0
Ϯ!x7\۫	F"Cm6TZ5RV##P鼰
^Nõ
ի6,J`n!zx=cyXڳ=e7{CMkJ&f-j[fv7b8]0^5Of4ړ5N+QpEƐ]gy-ҳ>/^o>2%*u|%jV1
	qC$
"*.Ah\E?&HaR)n&0tc@3qKirֹi
ژ }"PD8'7%àxU%:cfGȥ'8'nΗLs숚#dS;C`HSRR~ѮSȄR!9$!2"eHnP!#1NgN`),ܓAaEޞ`߱@	|]vWyW*ȡ]SϦ1)ƣ-Z,U]JiJyQjrQ-:lJt-&~也Nv^wC%PK%  ~  PK  C:U            5   org/bouncycastle/util/encoders/DecoderException.classu?KA$9)$Nah!Eoe]Yn?ʀ"XPpZbxof~oY
Fxf
ǄHɺ҄aeNz#ΜFEA+}l	(XWJViQe%Ntc~	:	"Weq'WNOy>Xz3͖$'oHlDe)}"tC$3Lk5݀kݘ6 ?xv~h6ЈX	fOPK:w   l  PK  C:U            ,   org/bouncycastle/util/encoders/Encoder.classuN@ !EEFХC8%:^j< XJd}++(2sa\,IAL=|˜SAv}C>Y]Emъ|Ck.KrpٖkWVnM$EbO,6&2(:^u|
Y2lW϶oO㵉&k<'@ǟ}eOC~PK   V  PK  C:U            5   org/bouncycastle/util/encoders/EncoderException.classu?KA$9)$NaHB߬˺ݞ"XPp޲;6u	]|cNz#ΜFeA/	QFګ%നuB{U\I$$O_\ŝ\;=bJ4[ƓD%V)Z zHcЙqȓoB0Ůt=vc۬O@F>6k|PKQ   l  PK  C:U            (   org/bouncycastle/util/encoders/Hex.classT]SV=6H9	`8#I(MĆP_(R#yl
/}a=?kI8)vΞ{k `qY0C8	IvݬpdrrT,[.SzsBlT*OξYtMlURܴ[qT&WEZX.%k,$׈.u k7"d]~j2(%-Q")/_r ^w+u4ðϭhٰKz[it}[nmAPn0˦]r_(Z]<,5lu*{;M?cI;sޠ3[=:m@Og"N˕0(aTB\q	W$LH)			Hg7od.?Ad*߹cD:쎊1#ݜQ~znWփl^Bށ#"jԖKDUDT(S1~!&Ȍ*b:rȼ
XR0enP)
4ixMN,)`U
ntKs7dY1}όg3
(\0*!\#}ȋOheoZc_Q!UMO\=Z>"<ۧC>Z9F~O<!Lۿaf!č&4}}9x5Zf<r7-}1JfF#>bL} ?Ek<j$}]"Xoz8y˃ѠwaZeQkMdu446{ohA_1*5#D}]Mye^v,q}U3_5{5cfdF"_{.qp5j໣|2-Pqe+A}ۣ^%jCq޵NL	xr^mM_xҺ3xPKa[t  j  PK  C:U            /   org/bouncycastle/util/encoders/HexEncoder.classUMoE~Qힸl\$c{$;$CB> vB]g׳fОn͎g+(_V.!A (9^		@᭞xz9S~t>V} s	Ā&)<֌܊_cw.tk+ժutl*hcd{>:O$F#yhf'3ɰq.E=O(8ﻋhɯaRڂҌE5t5b46[Y~%MZMc T'q#?dɟRHIf{4rB	r].FP7ȯFMƣ*.Ii+5ܫ%ӡ
naLzí&2)9_Q05sy.QFYWb)<~m0U5O񾝬kUH$̽rͦ5T[u)9ڼߌaa%515Dҭ!C?p)0<paa\A.iD:+WNYS_8xH8t0"a'`; }O=o4^p	\LHQ泸h㤜yEM_\Kt'awNYf6+/'
Ôy

==l)iI-Y=4< pOi]Q6[?Wpqv[dHp.&֥Ժ`Z$8_,}BtFȡG0L~ޡ~:̀x^YVO:?U*X*3\lӥ27G&gm9BW3< C>>_WqIK%-',ɽ1{0ۀƺѺYYM"{X}7ֿ)nG	=(r$S#	eћ<GmX_+Zۡp%wz_o<Cqx~Dna3̈́ߒ36[_۷YB5~p\)v]IIqA`&4ugIemJu(1~țg3=yakA	knQxW{{̋$韔KlHrQ,zceB[|>̚Z5
SV|>2$!7ET*m*,U2Z*^
(#2p24R(vhwLq=Vؾ]63䓽)uyCyaj(nJũTa	so^OŴHbJi9uTթ#IIY ѝY#ќL,ħ
&%w$_J)%cw]rS}HmךtIM[n~Pw<õ#?.2#R\=nIb䴷<MhZD&
LUoS+'Wl?v-Lܮxd6eBYW PK?'  
  PK  C:U            2   org/bouncycastle/util/encoders/HexTranslator.classQo@~w/C?pIT1"1B6IZAJ1_Ȓ0 !C0@xD*{{ aA~}Sa٤%%mϏzq/πe$wؠ,~	Y~*2a|Yպ#xȋ;֓Q'n?W7L:Iz5`h=#/l}+((
(`	xTPe2Pg)${ԁ
raU(2GG7\9"ij-F|]:UTMz֚-ΰv2MT؈M_j"{Ѐ/]R(ĠFҋn&CfjeE)qzLђ6SlJjyK6.U#t65 uSC@E@d`_W*?h@e:1q?knkmUrWjxqcPu%4#\6a}"%	 PKcS!  \  PK  C:U            /   org/bouncycastle/util/encoders/Translator.class;o>nFf
MOF.h'OO qRRSR<C8=,┓YuCJ,KIKOJM.ad/JO/KLN,.I/-ч^TRWX_t' d0200iV(g`  PKU      PK  C:U            )   org/bouncycastle/util/encoders/UTF8.classeOGxb` .$0PviBؐ
i$/I:6ŦJ%D84=69pШBǪ9W'z"oߛ]U˰}o;͟ s?	(@\f`
f,Y[`G8kT)WˍIDhX[-q<iss*΍O1}a13a>CŵXØVqә .,8楘
b&d/$G@UT*oKo@Rz;RzmZv\ImTK[Rllly:
5̌U(תjv&[Hb$Nb$"IAO2J2E2ORǡ;ލsp&6q8FӆIB2eveIp_~xZeMJ_63,uA7>G$rKFnr{?@N!wDx3coDxe3@:A<[>|*.rO?DD?B~;xwYѹ=<+<RFFp	/|VQ|}եڒROuvM{pkm<~vK\&FZx9\;TPsk]S|/p%\'rii FpDҁS\=Z֎kKבCp:^Od_s0#;;Ŵ/#S;_E!EYf$߉wS|rLG1#W5&0^BB:hs	Y8b뀽#̊#ZדhןI!DLb*3%5eb+SEKOTDPtGp*janGP[Gmqm
 %Zb=%z"1 Eq$}MOX}U9ZѴ}KV+G:sAhb7AbpGUPS^b6}d"!w]ck⛗Is}
BtCgwA
<}1RPKu%    PK  C:U            .   org/bouncycastle/util/encoders/UrlBase64.class[SPiSҠ@@"Jh3rq6Bm:I|L=dϞ= f˃+Jp[@܍
PvOf3@r"|^ϥHII#
++1팑L.-o˖VȖmyN<v24NicŴn閥о^S3=Ev`oئc+UkV˥:ku='ӆ+ p-d+VF!<LjՂɪX-X+nJ]	K8efN_['pQ7
m;afae11\c333Yb/ۥY;H0&`{`eQRr|Ҝ1UʆX6Lブ	A	n	h "$ULH)	PyN㞈aLsq_Yv,rX(Dq`ڋ;?` Y6l-y79%01IN$cU=t_^qu#ǿ!r?o>adFUDtZX8pOP6K[Mp. vzg%=m/ZC
Q.*u9dul5RJ^/#N?9UPM=v҃d`
/A! PKch_    PK  C:U            5   org/bouncycastle/util/encoders/UrlBase64Encoder.classOMK@}ӤMVų?R"=M$C<Gw#1yol 8%8gB^媞("t^eʳX,$YZUAL2㋢ɓe"ZKJ/ˊG_JȟJDjy<00t2t@=P0C>}ܹ6waİ;8./lip17
^0DpޮPKŤ   ?  PK
    D:U               org/bouncycastle/util/io/PK  C:U            4   org/bouncycastle/util/io/BufferingOutputStream.classuS]o`~^Z֍um>tPt+dJ"
[Lt7RXg*Qc%2cx?Spqx_u)$ lFr[;
9^ݴ(DJcmuv5R''j:n"8t;A{[`jxa趫+_V˷ݦQ=x.ÎloQ(z
Mcm߱.X&RP[l,um#ҳ}KgL*Hl]`67<{;%.Q'é*CBDVÈ1(*0"
baAbQd0y1Ȱp!sVb]gubǏ@˛
CiTLѷ!!Kp/d#&BGNii.d_GLYJd'	*E~kQ'	Vk0_O\]nZR>%e&j3&Z'+dKsZqϏ[O+~pr?iAW) S"v-Z$l,fÊp]	b}
}=-<ߖXФnON:Zo*+̐
*d}/PKr9i  3  PK  C:U            1   org/bouncycastle/util/io/SimpleOutputStream.classuNN0=N]L
vCl eaD Cb
G3(mh%uu\`Cl$'Y:{Tv *iWmn]*f㣇BVV`8ێ[[vbkO	M}^,ZU&jZiJX@bP=8sm:$w`MρDp/.gPH`=m8?g3tr<ڡ
PKޕ   f  PK  C:U            6   org/bouncycastle/util/io/StreamOverflowException.class;o>.F6̼;FĲD|}O׊Ԃ<FtҼ⒜TҒ\Ԣrv&vfFQ
9y y֚a<@XXSRX\`C6 MK{;F
 PK o      PK  C:U            &   org/bouncycastle/util/io/Streams.classTMSG}ÎX>Mli,1HD 9B8ċY$Jq?
Npqb
c|%CzV$Ttu~oz6g"ѯx$b#t:(ZfG#9N0u[ˬU|Iyr%,0z,&R1V*Z쒡0tәYc6h{4z2sSfb[쭡f˖hlTh2K0X,-')lHm7h?J֨1fY-i\1m#G 9Y
=U~l(bu鶑*Fi\^1
6	z!xJI2_,#(E{2Zeh!+2`b=I_jK[r1%/t^uk\Hus)nZM5>26STL1l\%R2 )W$aPdo)t0wА*+H (q/"qC0Q|aaFDOiGsbKO3꼾dEJܕN
d3<#~$F +ߴb؂wNI12r
_ Q!9<~-FLHq#
jq).$|-]L+B1N˙;oպR-oar'7T 0u)8UQ~j@z@EuQƀK^< WFc&?wPLsfgfaanVOM.xz%\ѯB*Vyzm7*W=|ʟWt# z01WlD574#'7咼'TH^gG{v^8mыN7o@nk/@PK    PK  C:U            -   org/bouncycastle/util/io/TeeInputStream.classuR]OP=mօvEwAn[5F$>h|hO4Zn׏b/A 1δ䞙;sܙ{ Pfu$c#[sP!y;QeTQRAC0eQ
BevKoF,Jh2Qc\F{S8tGY3 iQH0P`^[qSnXKJjzP븆e:
ftqLf6CG[5Xcyfӓh{(0W~
k4?%+
qХ]5
;,9ǆ}3'x"0 Oa#ӂqD%ZMJYxj;5"G,O(&]ea~,,P`R{tZqEY>U9Vjn_Q1UԢrFe?sh1Dfׂ?PK
I    PK  C:U            .   org/bouncycastle/util/io/TeeOutputStream.classuNP
Vx)xI
4w$&,4l\!VcHM\ >q$j=9s`qP&[8?dWɛ2ܷ{@W],+'nrifuصVX;\n>u;XfםYRՕIC=oRR(D0laY
KBCEeA%΢0K>
,EE%e{IcJOJ\HNݨ<:t3W!g-Te* [Q%/J7h+JHCUJkQꦇXe/DC:EBA!V!$C*#PKik    PK
    D:U               org/bouncycastle/util/io/pem/PK  C:U            9   org/bouncycastle/util/io/pem/PemGenerationException.classuJ@Ϙ&OV5Q*n ((O%3%V
۱3|.>:с6
MI^|u>٪#;3C$9scsJVZP`ԟ,)ueԨ>?)PKidKKt`b$MDX
aB0@g_]vޭlkO/@䡟<@sw<
3ڏ>PK{     PK  C:U            ,   org/bouncycastle/util/io/pem/PemHeader.classQKkQng7iMVMmFpQA

YtMzIN&5)W7Y(\n,D<:,|3[3C-w8L!_D4dwd)}{$zdejhT"C@ q'x:N2bA'hGqe[H$^D6ؗHq9`(շwh1,Qڔf{6l,ؘW"f
lX(b9C+9qY+9]Uv~-wE+XO}55K$[Az(1*>:=SC܏(Oa>3:*=L%WbXVVqJ4kXgwА.RrLcHB?Pp{JM[T| 2	OYB)fe3=L_PK_  U  PK  C:U            ,   org/bouncycastle/util/io/pem/PemObject.classRmoP~
lwʦ[)`훋#`\2b)]JKJ1|#M(9Њ$IϹyvO {S˯遂}u<'|`y?Z/'o/
IߑP#z湴2蓜6a4]eάZ^|:6ŬOA 
Ohn}%{`:fxж+7{kig>`/l/*nƼ0*tdmc\#\H\	dd:)1	ˋ}==kf18$Y|iM<>W[u\װ46)(lJ6kbs=6*rQgS@Y%Lm~g19((R"WGrE{ꁼ ]
>]IQjukJfbS
F8nFkKWT>FZLRyڈ!ND.tJcU 2I~Au* PKN[    PK  C:U            5   org/bouncycastle/util/io/pem/PemObjectGenerator.class;o>.FԼԢĒTFĲDļt}FtҼ⒜TҒ|\\w<׊A.PEL,Z>fdY @cbN H10  PKk      PK  C:U            2   org/bouncycastle/util/io/pem/PemObjectParser.class;o>.FĲD|}O׊Ԃ<FhNb^RVjr	#N~Q~R~i^rerbqIN~iIfHgAj~@j.Da@bQqj#wcg`dg`bg`fd!kMt7X32pX ,,@fe`  PK=^      PK  C:U            ,   org/bouncycastle/util/io/pem/PemReader.classTmsU~./eSTbXp1BZ-ilQBj$)Y(,NS[XǙEeF/upx-;6;{s{~"HJ K1VӞ5VO]frڕ|qaµ֊i/i_PKOW)ZO-TJj0HdvvLhZUFaz_L̦jFۨ^7f89r7Vm6-6tmmӪ2QLt]lhm^'BhV˕MQ7*ĞiZVW;vbXvGciwU2kaO
Q6m
EM۱r&:rgFn:@ĔiD<'"&bF"D(?RxYm0,h|,v%e'DixC'rIz{"5<xHy5hJ>f;+gr\ȊgcVy

NB<E/
g8
8y[
"(8Yd9wAA9w⒌sXǺr.ssx
6d$*2TnT)#WqMd
a+4ޥ_ª5ڴwczKCM[^[7ràH)&,}bxUH=l0bhJ:/0F>!9<e^A
.~j1o*}uQ1}v=E("Sh >NBF~߇Z	80(Z#ILmj WZT8Cz%?*17I݌bbL֏hsxk5CcE:(o#^
0#Bz%5>{0M bj}E$EtQ}?̍5PKx  Z  PK  C:U            ,   org/bouncycastle/util/io/pem/PemWriter.classTsU!ٖC41
%hU6Ml6k
|G_:⌤L'q?DG&-;|w= I J t]'֗q%xc})	lI?[&X&Ô/BM'2^	/u nfr+tnb4g(Y0ݹ<,TBB$LQlZK0m9-H
99L9Vݞo
72dQgrA
"tٲ(JUE횖+T}~^TEbzZTFAX^1%tVZ!,%n$yJuNnF2k57YhniaiL׳DIΎmF+RrR7Kf­
:vZK86 ycKD=6ED&KpNVvtu$(M;ۢ9nK>;WٔYSEJub˸Ѩ2gdqPƳ22qH2 ŲeoX_vc>\aC{*[f~н)DJd{@X|~Vzjޛ!ء`zS_ʰ'C@QlSAM(㴂ǑQa21a^`Y{U
v61ׂt#acЃx	Z)\bo0ǫWJA*p,C B80!A;漌llj7v紭Nj֌6g짒4u7v@m:"yHgM$C#~PPã}wp.ޜ]j;X\F@%~{ʔ1a:֨qdAR	䚅%GS_kT&̫?`10=	_⌻~_B.qHh񮄟166P
dyl^8kE%~C^DѼ58@w(73$Lr
M<Wm꽥[jS-k,5qGa>!ETiF/٩]TH|{F٫_7WƉ8iy)O,&yA!K߳Oh[ԑ _	#V`vw4`AXAƹ269?E<PKF-A    PK
    D:U               org/bouncycastle/util/test/PK  C:U            =   org/bouncycastle/util/test/FixedSecureRandom$BigInteger.classJ@VmMVJ-BqpeMW1B$N H},W-.| J-ts8s> \@2}D MP7&dazKG9F#Q,N9Θ<adQnp=RZwe	}t\m0pXJ\lrgGe2d(2Tt^7׊\X4	Yp砛ƺPGEC
U
Tlc_*hH{@51#sEK8ϚG
$둸P9?
̲o*v.`0%J>S"RQJGCEpPK]P  a  PK  C:U            7   org/bouncycastle/util/test/FixedSecureRandom$Data.classM
@T۱*xPDBEp)LAJp<8\@
u$2T~9d&"CDDɆ":2a/FyL%2PP|φ+))gBk-pKt>j^Ep߆C:= PK-u   3  PK  C:U            @   org/bouncycastle/util/test/FixedSecureRandom$DummyProvider.classOK@ڴ15B="œ&F"d	+M1˓Go3jj`tGW/O,UVZǬ `nCZ\=͋>䕈(,eh%yJ%+%R>?[eYBU%4	
dEpZc:	'QN%+ahH
Nia'$/<Qf6j`?PK܅    PK  C:U            @   org/bouncycastle/util/test/FixedSecureRandom$RandomChecker.classRmOA~/=)R_jEi$w(?Dc{nKz??e/L;3>~_ lactː7.3u"}97[fH7r<xG	C^*H_1wz\vN+gXb
@%NG3~HCL*auǪ'
zE;;lP`(_{7OQxP&Uo."
2P`X~bGE6jX{:PxўjmO3	+iv-,`B,RLܵ0U},専{zo6&<4Qyk<"jx!/р2[oE}.1%P%k~w3<OONcpIq}BTkG_l.b5z
:?PK7i  %  PK  C:U            9   org/bouncycastle/util/test/FixedSecureRandom$Source.classAKQϝQѩ}LxZFEF`"~Tt@{8 xxDhW#[-!ZM\MnNRۍla쪍ZښW}(Yա(U`cM]B=nc,]]NJ$8D#CJAFS6u9\MK={ŕ8Syd$bD®Hq>yPKȾlQ   +  PK  C:U            2   org/bouncycastle/util/test/FixedSecureRandom.classVs%βLAB-H`
%ؑlZ->@>)ɑB:m)inڒ2'i݈N_føPϾ<ϳǇ+ 8I.#E>L<cYsLB,&K=tY:u *bBkv/Z`wpH![RM-W]uMHGc	M׌ň}/FFBj}hIz~<̸Vcɸ*mZ<j\Mi3:lhIbυx`*c1j khfsZNUj,V#$gʆ+{nd6SɱB;б.h8XLdA:NX2eJ&cI:ZBJ@cLmyVmY-cOն/eDFV5LƒV1-Wu5-jTU^
[AYӕtRSF>
pkɤdcjܴ-25MiKzIZ2П7T3둬Q#3\LMǔ&d=%j\NY:a,hxM4&SiF>rT]?]ȼYpR[gibT]L8[Mdgf䬦p9]dYLSE[DNDt8(␈nEqLq_qBD 
ፚ=\頑Kj9u{y46l <WǳT}	D58w6X>hJ}D]
4%!$v2; 0 u:'\804mu_aW&κ1wޅs_(.0L2S1"CP8	eCډS08FމadNWKNo!dx!DQ1ֿ^@Re#Oijs'R#Qzu4cԘ<PG)9@/8'_Iwd
fR*&:\i4v3OV-e#-kٲuwM\/ˤ؈>-|Hv[_m9{U	k5w%U$9#/nW4)CyD'e|o'^yv-Vk=83|ow'jjŮt;<Qi89?ZwRKxsa_X=<c_euFXYߖ/"7lSTF#eI:Iןici'-ḷQ٬S<|jc=yXz2޾/OGTvw¯q+D?.	3D]kwv"A>Cz*Dh}UBkY7ȎUTS:veIug	RgN;ȅ۶0ѳECd;w؎6{}wcŹ˜Tܱ.nRrgn6z}$+l{m]a2KWV j3];.N
@/nS~tcg$	c^#Y;]V]c{9N&ۉ[J
ӕl~WPJ-ow%^+9^5M5
nivǶZJ1b[ n	O@E}
'{7Ufl:pf29w"{qm	WarW}nr^"R"DF4JoQ":NPKq`  C  PK  C:U            .   org/bouncycastle/util/test/NumberParsing.classJ@֘T[m6Apg T$jjd*4 pęD(j]8Od
66AP)	K]!q*&ƨ{>k+j״5Y@3Y}plÿ:\*AӲ84mf۶8u,8AYGBɽQÞFi
#
TQ5w$M?x`r 7: :ґAN)iLkü0Y9͉;)S&H9u.im-L	T񬉷lȠb_0|q}t1SOX5,=qNu14B_If\~$PK-\k  |  PK  C:U            +   org/bouncycastle/util/test/SimpleTest.classWsUm64FyPE|PX@ ՂEeIHl
>Q|jPd  g#dP<g6%
L{ysν;ߟ/Xs
*(U0CLu
f)Wû5ٲYB1lV%a֮붦2zVT!ђC',-dW5zx3hTdve%TL⺡zČt)#L4̶a6@kmq_Od[KDEKmZDжK$vi1ڲ]Ӎq: Mk:z&'㕻L{ɱL[ʠ(m5ȟ|2,Gۯ5ŒMӱaut5%
a=JgX"XoE6cCksw:y@jֈś~=z3׷$t&F>DOJC2״3MDZƈfk:
7uĸ$JL7%ؖ`2K]R.Kf	唞ޕLSnBVjjѽi-3WFlb)B1K:%7S-+/# #(#$c&w˸Gbɸ_2)ZK%[k1pn^ezfǛlfFu=-=47;b)+oԍ	7E[\Mȵ
/u־yOH'P)QP)W)rɃllF>ٺ:iω5T4CE+*pX0|T3T<NEE=haGU<m<RрT܉U܁'TNKV0U*>*`sg@	piV#kXZax$R#˰߁`J/0*k3&<pĉuH3tb#wb3gc2KGFߓǨ]KurS搃ՐHI#eGU(X?Β FΚMdKW0Kh6Ʃ/ֈJA	6.Epٹ2H.SGh-Y`R5`P

`ovWkjNBdI4Y9sԫ1nT8
2sZEYB
rZWvڡ|ab7/fy
*Cm(p2KeCKK'Y(k.B?Y,AΑ2lCy'P\$Tnژ6iV.Zo+uD57O[b̷$ੳ|b$~m[$]χ#/bMy>-û&~Sc%V;0%,cSUt~،J"N=;q99Sc`2zY뿀!	AeLkGoXt
dz*Պ{bʂ'ED較Tq?վYdn.{	'Ml9|s3iB2᭣fSpMwbjEΠ30r(m~qD2e֢>tJ
w^FZN¯l
^=CFr0rP7k+cUzPKpΞ|    PK  C:U            1   org/bouncycastle/util/test/SimpleTestResult.classTkSP=BBhQZ+<TP</:M|PPf(&dgnv `E@QP@SpJi	!zFN$
yD*	1QZ3V:u$TSI+ܓP;-ԉtdIS'Ǘ%HD&I9'ɯD6afJHRɴ5ّDtkK{3jTtn-U"e;yAamM%t${/93o:Y::TtJ|LchI[^-ۉ9K,rQJtuP3ɶ{tvq(N-My2.ȸ$#$Se	ؿg0,\z~0W-A|+|SZW}y*KurGH4/:-ZcGk0$=;W|d-y#P5ADE&\U9D5t0t14:C0p1X#Tt㾊<`x0BgNgN$cW)ØlRnr^ŵEoOœ'JvW=elchBamO"al~Uz~Ԑڅ؅E^ĳ`~Eķbo>v/sSGr/~ȋhbY\C.bDhKv\NՂ^!;e:@[ X]\x(YJ}LAeVg>CV"[c|gMw+Gtϸn
P=ْw/PK_/  .  PK  C:U            %   org/bouncycastle/util/test/Test.class;o>NFTFĲDļt}FtҼ⒜TҒ ^Z_ 0'(3/ݚA(LҜk6F6V`bad  Y8@B PK4qɍ      PK  C:U            4   org/bouncycastle/util/test/TestFailedException.class?K@k,L"rx!ʚ[ʺD[)(%yof~p	S^٦L+߿5F{*=o;{X{vu ׫Jm(JӰe5ۆq.
!SBE!/R@1&P!ŁLd-R퉏DF/@(W5~ PK &u   z  PK  C:U            5   org/bouncycastle/util/test/TestRandomBigInteger.class_KAϘ:i2؇#H!z
ħImCgawX=mPь
.Aù3;s7 (Dʍvm`<c[`yW³-䧮ˆ;v>fͶBrEǵg :diG3#'3w3p]Op?9pץ1>10k b053@	2|zLXfSz?oVw5rWQq̀h	iIƒ^)B*<(hYX

1\wj0ܭq#c	ދJjֱFw+Gqh"5!*jwïHf^h`UXBfGnjM週&(&{>6ҔjPw) ۈ}PKi  #  PK  C:U            /   org/bouncycastle/util/test/TestRandomData.classMK@ߵiצÏZ
A"VD'#BiMH6R?%N"E;;>3;C3v놡p+_I7$V
0Q+bH;~`K>G}!{EZ>sDJ(/g؟F}&`8q$r5LV081Pmvă#_
&G~MRR3`rXHEEMX6QMºTJF@ı駲4!d)jSw7X+JgTF9#TC
T~ԫdˤ*Qjעs
/PKo
7  S  PK  C:U            B   org/bouncycastle/util/test/TestRandomEntropySourceProvider$1.classSQOA^[N[P
*jU$DM	Mj ^^7eɹWo71251B/ٙݙooo2Ϗ_ 0Z}#yvd:M
)3F\jw6.u
']ӀkOBƼ/-"J(KOxSPFk6~ {ݜh(xh$I+r/'CyØht#-BL*_aE/nSߎZu~Xjda5I}yi3\x̢h&L-3eG]}Xec	k6r(#kc6e;Ta"Vp_*IOb/eFJKO>ݒ{W 0D\6 y6O+۔}D5d0GgrcBDϻ_|Gaa$
!֛r>op럦5ń,NY&qrUT΀+IPK	  /  PK  C:U            @   org/bouncycastle/util/test/TestRandomEntropySourceProvider.classRJ#A=emF3j|e&7eV* *H[)BK
U!|%ފY@Z9ouۿ Đ)Ww#[JVg9mHK:6.Q0RZ$Ӕʝ'	o%ΥBduAa]&?%"%0ݶӼmHrFceeڐ43Rǥ-u̓+'D>`X{v\.?ǿ{
·j~a#1BIBctW7$CTSJVb(tSh.,3TgJYq+r'=`9.`7a !z(^{Hn0SQ̽^|$xPK    PK  C:U            +   org/bouncycastle/util/test/TestResult.classU;0D$~'@J*7t鐐H*:2!xjC!([hfVO| V0qgWNTfNJeiY-΂kє|[JҴ%/kM
KZqG,ܯN!ڪ)#8p.eX5Qh<	B-േGuPKcOy      PK  C:U            8   org/bouncycastle/util/test/UncloseableOutputStream.classuP]K0=quݺo77oP0Pħ#5MY8Pwv(̄ܛs|~؃A etۍo3yHqRV幜Ӂ%|O0i/H^Ȁ#{:L8K%s;yX2NyK6jvE0t"G
%N$w$
󯷔>`udtdu:rE6	jb&K\*C0Q4	
8(b`Q5G@;d!vpJ*nWKjvgͧDQؔ$zxC@&h~4ʇRŚꧩk?i4_И6VGS5PKu(Q    PK
    D:U               org/bouncycastle/x509/PK  C:U            6   org/bouncycastle/x509/AttributeCertificateHolder.classX	xT,@H !U`23a 	P	%\"2y$8&bi`mM[[SmV(=罗lL{S/>|bs*ʰPj1iO'7=<rtr;[ԡ49
Ķ
:,ڳcv@аo>XjFu<MvE!`Læ=;a`8Oh,h7~a&ezHh>mT']("zq-(P7
'V
GFZ6`8,CH,e|
QYMTfذ3Ѵ:ǶȨujQ};
EDe(MMCfLvOg
w!Uib-0֘T;i܆1-'Z9ѸX_GX/գQm$$
LeVWQt
͢ް=^GOٳ+>'L'H}J⣃fwk}a{#Z4;H[9@dvk}=;X,i1 ;y)wSWi?F~촶b<%>I:T+f?S8 -/RW`d\ 4
%vilyxfa8}"mbG2?=kN2-[2b&գ]}km}XhhAbQ*L	aAwaW=Cz#"GnuaV?U1ݨ|*PڦVJ+K#Fi0/q1mf))"}~=}8,D*OrHdE.8}[r&(mkf&(:
vt
J[Qg古v*e|lTJ%.P"Klh,EbK$.&)-qeKH\!q^>$^*qDn%V:JbWFk\M"j]2nl50u3t*##ujIޕ	|F,"o8
3s>=]Q&ee\Q<wE5ɷjhǹ:JL$"wCL%kRӛ(/9s-u茠!dCg[A*s\ޞ=Mdhb{K6Ӯ̊}NȬW\yv'-E
XLG3r94QSޯ2'ΘrJ.k▒PX{)V,]O	%=PΡ([%߅6oypw%o]\k]yx,WXy^/pd-ab6ZE*6020N1( UP2P
QQ˰Ua
שN>Wт7pM*ͬm*;ثw]**\
ޣz{cGT]*~|@E>ȽXwÇUapRE>νO0|RJܯb1TtS<fE8s0>@)8'8ãU0i(OK
L!P
nFBA_fxiQ<@b1r (bq<uLSp+bó?`Ï~S1QA|Qp
o3|
^?1Y!vx%N2<P4>y/2|?g%ï~{?(^LW`I~Q1<KO+J>篒>q*c6(f0WAPBRv>tSۨt'w瘨{? mԶi:0 $?Ȁ7)lIѐTgZLXڈ!yl'r8戶wo9%qєnf=	oeQ)+ muMⰤ:$驃/<]ԢݴҖX4kaoV(ˍ%7ME;Wތ060@sR8q iIΤ(wkbeR,0H棑vA<OaKƄm%LYmpcJ&%"!qT͔o >/Kl0w^Nq	WX۲(71qI^R{7!*9j'F{sYLEރ84b@BK58I8gXvlMt23hoNC6j9r'yoFps"z[=VOc4B0^<..IT;%Gﰓ?{`Ȇ2\wxs|Tȯ
+*W!
{ML^v/3fr/1G07F8knxKo_Dčlmshn&O8	̭>*M
_V,&ꪔh%`kNIĦ6դBIja	/)jqx[x(&Wl1N$̶zz%T2z1	}*%LZ
Vts'DS8MBhBƹqzo/n|8k<u$]:IO!p%}.=
q)F ϭNI5Ce
k%g;*<B3$iT	k0<x3<lDk,}A9ʗT6STjf̬wujd`$!ܳh9u7PKy6
    PK  C:U            6   org/bouncycastle/x509/AttributeCertificateIssuer.classVi[W~'(VԢ!KڊkE
a!dbE^쾉mik[M<_᣶L@H1OrYs} nD1d	vw]!Kpzyhcv-)G@T
:z}nR>؛bmXa]O(SHDIQ5$cG7o
ܩԄ
+C*aJ_^/:RO}5|T7LCh<CMP1JRmQ֯E]mJpvk,SIm)-bI]EHC	ɔ 7gc6炑 [t45w	(é^wRF83}@8NA%_Ts:BZ<z4Z<&|fB(S[
͑*	7M?&K89zEy i 3EM2Ғ©]sc=oRA.C$QM对F (yfnT[LW8a4C[SJU5J]t9V
&#M٢#nFKY #ST?%#il1Hj(2=>#vJ\7	X+NfZ^_@FM
&Y`9iuDW.XIiٻugw	m|VeS:IU;	[3f^gCǲH*b9
z~ڂJ+l<WXe|vx7ӏYMLh_A_-W
B,`nng3un vimј-Ͻ7`]Ae蒱6YB.c<s((~Y'c9XnuQe`XB!xXPx˪"QB@Q~
8DKЉ!gqţ.QZ01 .F΂wmOp7`!X<%qk.4\,^`{Yi'R,x,^/E+YaJ)3`'pB\W~Uҕ#>.T5&z<kq)͉ChUM6x2xMsxga!Va=M';g-շxfzݓCP72<ۜ=$(yYq	XĳHth=D|>`B[߅ϰWؔsmY	i|	b}c(kpNbgb)w8~G~y>#
U]hEZ;J/􇆃V 5@H|no\%'WzWm]Xࣙ	;9g9p"6_5	4*il'ƻ|DI5gӤY O8]lp^~5S!/>ˑDc$:9cy?ʋ:"ƧrN"Zsﲒ_)4>Ecpa
>}aU[6N4pDUZ:vI
[%eLy
zNzgNux{J)(6ȴYJ*hd=5Y3]CaJ/\N!}PKN    PK  C:U            5   org/bouncycastle/x509/CertPathReviewerException.classS[OAl;ЖK)E..XPl^
DPV]rȻDMzf)P
q79g;3|.0tоb=t<G>b`E [r!Qrt9mIQ'(E^Ul3Dc?ڴLjfuErƺ¶-6{- Uؐs~ë[P3ZoY+`
ua7GJy'6.~P3Wc[u
әAsDZc*m[Qmdݾ7T-ThujHp$99z8z98Rz2 OSSp*WpYuVDX_Vm[E肖DI%сHZ)3ޅL(3G7PfSq2:]_ϥ7Ϭ%%Y**B/+#SdghӺ|(`}
cQб&j3
m"zi]-H/pH]2ZJ1Ͱr+%*12UCIE9F882iJ֔NRЩ
ЉO//*z7A>=N)1u<5><0x>PKL
^    PK  C:U            9   org/bouncycastle/x509/CertPathReviewerMessages.properties][oܸ~& '=Myq2'Nf"i[#xO/EK dȯUEX,ReESw}.ؗd}2\sxtO>ےݱ?VOXkWd_zw%_g
# r;F]>/nSt/w^}ڦ`]Wkۦaݺ鳲+.˾gob|K]vѷ0fjgnl6לnyUy8РPT;dV#NAkإPܰ󠭣cQ#uϚ+(9EU_ǄmSԫQZ@APIOPf.tX]`1K7XQ0_,Z!Ś6ybܦԳ) xt6A:j"IQ벻uw&e d#y8L&ƭlQcCY˘j1|H-wC0N 
	
ޑQ-Jt&@Q!T͸)4BV`m9"DoJ
:7o0R5a.x'q i~HSf\|O8>
>A+Ձ|˲;0޴ʙ2JO͔f°	&T߭/}W=k/o%tά	37/8(.#V'Hgf3Q h>*JEۼRqVkN=Ts6rWTWxbXj5VlWmLXF7hM6[M<pWe~FF;^DK\/I ¹	̍Uۼ*A!	Z:0!,_je	>/,,?1ȱF:*v/>78`/RA.{|CJca!^bMo *k૶WE=_؅O]v,}>t>$
SB{]4<iW^#:uKFľ)iFQӇsÁ-{Pi3錱Y?]MT!kI2 0
'5]jAGt8[S8GeޟKܴJ3 +L;b>fK^*PLwM\aT`2ӚaiU@.P~=l=Oh{P ~5W<՛H.vFSh}h@LS%2[B~c5ToW&#;̕CI#ʥBrxk,Ƽħ4Lq`$RNk-6l|z7/2F~
Pʓq6Mwv7guưP0ŸȗC%8@uXxƚSh3
7!ɣے}ɇ쟮6-~fW
zm9
0z*^/&Eyu
+5XI"j7{RC*E
t nwU-c}x'ݳ-[Ӭk=Q/FCu8EmY0aD4&.fWnqIMm@JVNȂVe-}N)-EʂTmRV@z`R=6X鞠v[Ϻ1ݷAK@,
MO\bYd8ϰF3#|O
]1E9Χ('rC}6{vΚ{ZT9y3>,lg'"`8^N/eo~,#OFs6	WS2Dm׫^r9 It?W0`yy#$?|9%{ٺA 柠i?䴪Xށ\wri @C A-5<|oǺ3OmyW}%=t;
)pKVVκ+yfQOKa`_ˁG(ribT3>xe_~ya8{y
u囥XzpV$eʆpcdO+쓻rmlEa^W̬*9]\uW+y[B{}AŎrĿM::*cSQ[VS4bQGD((ZKZI356'5ǬgMd:465$bѡ+nxE0:MH*TVU}YT&(u"
*GI$чQM:#Ύ,*MSy?rUEu:eGFy2W~$W<x |4[F)0af!lHz¥YÜWMҕ	m{ 40ҙ2\|6lyÈᅑ ~
ޓ-mk1K
r:D\
X$̄1rADL\4 B9imo<{.٢.!ϬYz AH]YؐO"O
"U'x`.Cc@}"`D>pRN#tC0	P	Ruyf_R!ct3aĄ6| Eoe]~Y1EϗoC(4V!eK %#t0WN,:F@f	ȈnjoN3V?W" ɱp\Mni!"K<ڱ6 H&	A>a9:a0hm#(Mrlmmc>.o_I^,\ r/E4 |=~N}|/heCEj=|Z%E8s=4J|_܁A|\߱WƘj`ȹ7i&Gt
/1:Yy.*8qvِ~
G0j9)KbiN(-lTc[͆ᕽCD;hx	㫈G[R4;b+szNaP&,ѕO{OE-5:BVxrNhBaFM_ˊg#"|wUh a:llq앭C͸^auLPd@,7dO1?AqZӛdu>G	IEܙx>Lpusq-nFrU0P/[&"&.xXnHG$l3㗼ǢwO4CnN@6a+KQ|̘4s-q? C1-s>w$D)'H-e|Ő{3.aL

NO垾BpRx땚| pL$Kûbث<&ņZ ߍ́
NTS*"nŌo0HZCr<Xa6U6옰V2% Us9Pg#x5^!u
oEx
Eo{miC
MpVpĿe׷%^''[>\|AUY()+a0_ИjEm3zJ̆>2jG)tI|3cB원9vLrQi39o`?(9t LLo"_(F669lmkiK՞5k8m+7n1i- ]8Ε-m>{A#B[wygB-+vF0

QQYLgZȍcMMB7-;,/q%9CfP%9li(%·e=^{lO2a۝H`/!6gFtY"y &S2d!qVՇ<"Le+ғ4
`sf)'dc
f1T:ǲ5Lveu
ƼK].1$g2aTże+ ޒ^Xt+T>Om$!ko˂)LϵXn14M2R[S'Bv-0
a57ɮX@kR:@F_ds;ĕ'XH;-i#xy:z8G7%6
	' \gBzZGxKɞz*FIA~tԪu߉[8𶁁r4
rZχ`qKAeߕcHa&.IG}aDf㒠SmU$c܂>LPٮfUиwO
6=1a%"MDy:=#rڒw,)8k"RҸwBtM}2!5eHps]ݫUS?n BtU\[و]L ^*<>b
'Lħ,#xV|pĤhF7e7\#Zш7%,rJ(U${Bn+t;O -"|a)WYܿ6֢]9@i	l1LGߋl
7
}kbTHw̌?o ufD&%fi-Xt?]Dab4P4vj9f(/C/&pHI'1ADO'`i/}>>cF,!>TEhA
8HQs=Ϡ_*p<QDTmA Z	l<^}dy/#jAS(=+ilHhxz7DVu
JbzS
X|ΣSFQ;8Xҏ(6L kF8mZs|p_=l'Vݭ\v=YfDq@M7JǶh
CQ}MV[}k}uh'm:N!tTDoUhVJ}bE*1m"aAug2mF=%ڳ+GbVhQZWIdݹN/JTuR/m d)/9r6%V/4Z
^`֋eT񣘠TȎdNVrn(2kk2Q{=\M}3~CS%Oe N?wvvr(tbQ̝TKKS?s{fF_QWߋw;x&w_*u'?6*ؗM
,Y.M>T#5uNܸ-;	x$u2<Q ?
2iX
0{ѡٳG_=9yc6KD0;Rfh&|OiXswGA|٬K^M+"%~?իW?z\_" {U!u '>U``,W-Ծkb/tU͟
IKU~7xmho2*sdՂjM'ig%kG6o9~;#f)IXp`KP(;`G'w	c>ClpD|?V*/2_RN
Z"
U	Y7EɏZ7BF2G,K5*U~7fG].j=ޝtZ+YǙ$1[yɎ7*E%uSUTf1M퇘Qx*pe4"qrPF,n_7$2 grde;7252VmDW%p zN
2*dJf ƿch;c-mYphe٩/zPe~uUBƕ&9L?Ӄnb-,x|J(c^jD)!<hٲeocA}࿇Ffhs^\=̆-%	9Fs"]Q>-uZ`yO: PK7Kq  t  PK  C:U            <   org/bouncycastle/x509/CertPathReviewerMessages_de.properties]_s6ק@/vm<LFvVGV,KgCd֟ap
 Ag8ce+F<zͳT梘`Üo#xE6Qbd|71OO8O8e1Hf-FE/
!--$~G]u$`(NWhuDqKٜKW	Yu9vO,NYl:s`OX*2H~QV;=_% $9H^ʶ\G $4r3YKw S6GOnbkvs%)',4$``'ŢP;!*I2)yh$a8oW ;LהU̠D(Hv0.$؇U0Z,.68l ^x6e2	wKJaH|uul1|ŻMVm`ir:Fʫ;ԖhQLuƀS!<,5U'.BVj.vW TB.{T 3Ba~c!ihi8Pt05!hRG}7lçbλ> Av7Fcz
zg̟ȟ#
;X/t%Ztlz<"̘]E3W︈ȡREMv>ֱZ.B9@Qw[&k~6Ya%P3FtXg(+/&H|:PȽu;#`"QDA[@zί+|}˒0Mƫ42m	<i({sL%5}l5Fz[BNxzLt}AC-X%zT-#2Z$AzeԳ^QSPw_<];j,=aipHcqf:ݛƣbK,~1ISNsn0YV
3Fu
q\e}xmճJ~Z{TZz^#CY%"X%5XO(RQ/|ʷF/V
>FO@ME\Ne`'yVW(Q /˞>tY쓋A`.*j>Wo){bJsld.^N1"NSdbTsZtƯĕ0b! 8Ўn6lӖN5hkƳpV2գR9˖keH䨝+{#ctWW/0fRԌ9h1[Nhk(Y|O>u~D4%󾡜ъt|8$Gڍ6FPc0{ƶ{s''Q_8Q>`XZ[L8N_
l?HδZPɦu>.EܛX^/@)|&҉j4EdY+;"?Q|W
nC;"R+gYfV(n
_JJXZ<]+P+ZQ2)[f c6+rj	
Hk1|!8K0W0T-s\X8tn %&)E-`#KyXqE֭wᖒ\f&ta1v~,h,ɷ4?]v9[67˰:3Yx	fQ+P	lBy!wp~vU$Y#)}Ҭ[ /YbQ91FL%N)yY\մXtJ=Dpv{ifW/P^@?q\:-RyTˈd)NtBΓ$?]7$
/qjt7!kݫػA2=Bz|krѸ*u;<T
Q.Ӧ&!i@[>leopthJfB	h*LD'%LD 0Ț	oE(h7EӪʛLpMagZ\2BTB{ʊ'`?Yf0eWƔl0OϵOWYe$5z^db]|b+8*Iͮ-!ZyDN4赢`8dOV7~T1^߾?a.6
D*b+ *+h$D(u-IA	!|( 7e6F1_k2JKPľnXyTឣqVFXl8\6è.VjW4oUSW7' SK͸F/ЀMWI,WF.$<wZnV ^hm!@^&	$nkq5E>vW뺘>XB!]Qlqx썆5H/$dlq
hƦ5*}۳8xl__ʅ]9aYm[V)@]ݛn&̀k-h8 0FɃNs'
Fm@^3NysU/$eU"Kheׂ
 젤vIF":SF!FeùS(>Ӝ5_N3C_`m:n9,.#It:0RI
Bm`گnnN%ѵl${li3N4+kaT[w	{נܹ+}.:Tj<
\ʋiכC}w4xgd{9pvCoǏ)d4}$ļ;(w⪇rIMiE;CŚrڄ+87y۶,fHCx
Xo!ko`nF
7F 9(V܂U3e.8QFivL B

M5D[bXB;ahuH7jmjH,Gu-1n1蔪jbEFshiZK+t-ɼ CH;2XkxmgT6nxn4KIm8waSB'*,.iFq/̲@ݝu8o#U8"H%_(BӀ>:Oi^Q½I^C|jQP)ızݡϮ'`(nh&hQ=-ڌ}7ݺm^|pU<]&T`Ѡhh.l-`]!2ýAO
."N.bIrOU{YhpBa_AI4BE{P	T` a
ǂVOd
Zk-J9RpLT,/7'Ɩ\I anF
d*dx'ᤸP(<(1:6Ǵx^W:
2?,GA4]vսM֬ۧN4a}]<GuV'MikfT;zWtC	ܺPSPYu.KhK:nX`sLp=F,IW?4/w<$TB*%o7븐~m&1x]/tQ.TC(CSA!$8IvQ՛e]Lc̎YyxI
yTފh0D4X\G| p5.ˣ2_R:^`Yr4VgVY'a0"f2S:12,k,BN+4GڪEP1 ;&%Nqm҂ _x7t	j+\[E?p\ag*v48R
3l)Q0شawwzȎۦvýdAWڎ5M֌=Kv4Qd7A96g9z/Ӊ̼ϻ+0%N'^mdG%;s~laY͏	¨~	ö˦:ڍ9PZ{
~]kΗGg;T_)dRLnPBHQ[h-,=/rjR[ZXUG)}כl&3AIUBj"K
k;p.֎k4ܒwඈ
1$
f@ST=*zlT8{i*PSS,b@LMaLj=.0iaeX@y@1e$odÞI4eiuī_MuP0뿠aBDr
.l=G\/i2OI¥''.N`k.x\n(tZ}l9nI%7\q5y(R]B}~j]4Qft?g&Zє(P-%dϚϱ6Ss:S{tA窓,ZL-<yq낔*	=zBT0>#TV#6!۹zmD'Dfj'+#M%A!5DTI R
4|T);e"tZ]68B:\m ֬p8XLi毯Rvl-:5&bB򩖚,x}7JJmA I}'bI)Qqu*jC13m4>q_tشyd<{&\=5̹vVy{mm
+j>%E`hʽ;軃~PC[hd,2uOS|
}JeToէ~X 3

vjwێ5C%mӻ+@^vtovmDszneD
j4oSar4SNt_*P5'z+6ޣt#JTj0c?pwLB`'T2펢;|ps5?\?cvx(GHoלR@ c"LB	k@#AB:$j;w$9om3fky<+N8K/Go0
TΣj\
rHhjҧo#r;wp8 ,7UwCSp:"_[w,Nvs'ހq@M*lち xʿtn`"{a6ㄞU[]yÁ-ف1+AX&Tt۲Y#\׈2,&GmN^ͳAk*OŞMQ]:Gp
xj7X<'lN{h:5T.KBL%+d}ܓ-{uBI|_U"-CVaM<tlQqvM<]x 4'JY
=%;,
wXp E#j S6˲Ak"	[69Xu(3RaZIxXm)aq_kWy7)6e,y٩1"&O.t}V%T+tǣI%X%٢Z' p
gLpae xnI;r;'SD:ƯeM*ӵ͋csqY
f!7k
(oDJɔpT2Du9}W~=<"'*Tr<xpl{|O~1U"]Hۦ$gŲv~nKBOyDY-9Mݬg>s8{B=/DH"ġnd%^ž`(/DKX:ZA+_
~,%U5Xoגv񚽌҅A-^?jP5E~iI}}Ś\7wDg0d`YU|>%}Q{kن60 py9=WT4A{5 Gjb{Вke)^S|czQ;tLEz9.bH$]f':vze@l{d+roե1su:b7I,h[)1f )M:
zx.~&+uwM2M1]+wRwSaU+ھ{hk!mHO|Vl0	܍O-;`}h%!.RJnЯ㍮| nH\!}jdQH]r02x4G-ֱQW87ZY$Z.c0^Λ!q=IW|o_]CobÅ*\pϏpWWZMkdXP~YdϒE=_&h-'BqH솿^L%
]
8|q}""n55󣨮G_c?(F+GCuqhY%P$"{%&<PKWL    PK  C:U            6   org/bouncycastle/x509/CertPathValidatorUtilities.classZ	|T?e&w˄ !+0%0	`@aHF83֥jkammmk
I.v.s{3&3׏ߏ˹{.|) XXJT;`8uW:`&lw@v:jr‿;[^[}
t_]5Uj6VZG+
7
kcqζ@gG344"ilo7w6fS;Zjmh 	!lcp(нѾp(ǽ`$Mxn=ֻ[:R[I
	X_O1pWz`,AHoK+D8`w8m
Ak#	a`Xz!hPK?$Żm
V-m7Io]m4K
D(ܵg]m[36f4[i:D"Ay\-5nf\27i\OxCn`/AǢ~^қW?C	ֲ
]S~Fo<Ŭ\92tYFRw8+N#KGR{32?F掶N|mt7y yC9[+r(=F
H7)7
{q}HOuL5SGiU	ӘoЩq'MMXG.IFRR{.	5fáh"H'ΡPGK`=Fh|{[FMq΃;lTh$AEa<3APϸ!ݭ%tI~r@b==z'ѷ[qfi%zIpޝ
$}tЃԖŴhFɳ]^#)GOD}_OLo87sGz	y8M0@"c}s9RkDNj=bN}IwPT<[t^R5#H=鎱_;M(<$+(湣dzzwrfQsAnm='fdH-{Y\v4wgunjW[&X`l찕Hmt[{1N7юt$nP;xMd(nkK^xq2S²p_wڸԪ ޡUbһ3W(ŻфZZ7/=:Il~ݰZ̰qC^r 2#Pri+^3J.だ!JD}d(KiCG|Sp2+ͤJMzAi'dpy3>
(V7%X,8Q,GX5s0a/Nw
YѤ.Hu1鍰M6yg7_
9CCFh}d[IP{jj-f6|Ij
ˆ(ڃ^iL|Ey(QN5ma$]qVNM`a4e5r2KMf@SLB҄siӜlaY>
ѼyRNŇBRB9.(mf)=dPh U%hcB7#=lƿ@sd?U No{et)Op4v.J2ңcG)XVOETYwYhf,$Edsh rP0ӫȚ@T",P	eĶtF|&)ęP+ˈe47QSsG&V6V[~d^rbYMS'sp)pP:ŊI.[Ezc(xcH()!iP)kVCbᐱ%¦\Tm**ι<%A=pl-KuDF^6P)ffA"7sS	%~ҳSD>aHϳ$K]h?*չ_|Mƒ!$kT)Ͽ [HQz-31
TisqȻ41VC~ >L}c#3w5	SI=b(ͨ0GSe4̧nJ]fYFj&upD`q$EG]q<#*]37n>Jg?DWJDSe*eD4ŠF8;sP'az8$UH/c
 P(Y6o<(.xGO|@|P|XG<&>&8!`D	N
0.N	xZ3>-3>+Y	/
x^|YW|U|]7|S|[w|W|_(o#-όD>tA@%<٣k&0(;783?ɇRouCOe[tar*ƧEM1cq2y'YڥY-2d2k+U2?Ej%劬rU%W*LRe(-(.<dZ
:)\ 2&='
1A\*--¦SRnVE|/WNs3n>"Kh$_hњgr]kI 9|8Wwn]23u|/AoEL,0G@W7U쨰-?yr#%aVn,-|Υwem_"nUP!erKO)Ɏ#^ݴ֩cM/dO/2u[҆g}NJ8I 
)%"?_|_ SWzwe5.wO*ӲL[ܙ?ϻt8=gd3kI</spwjosNʭ)3R44fI龼9+N/
˓QV\yߎs:JV#OE#GxEkDXBY/j츟ǃ?ȫ.:'Y<XsR[q13T1cXp9>ݰU6Rv=o`x+ÓO1b3AXp7,`\^d3X21K58[48pk
:~Ї^7ؤج!e52Dqw0kJkOJqI-aWN
tlī580S0pAܣMw1W[q4
Cg	nР![kQv 5
iЋ}`e`ޤ Ƹgd8pDQn̬na]λF]zocx;;1<Nn8
v^^zF71pGT`f8")PT,1mܵdK*:Nep*T_VqxSэb
wT,O3|Y1|e/TTϲ,[KYK?\?T2+Qq%~*T\W?+?bcXgU\ߪb
[kd-o3TSI_d
'1?U܈'fЁs<<43.axޅpb|#p	(I/po%O3f^$AM
_͡CL;ҡ f"ZıT~}n0uw2o]I_THZXD
K,)(S{HJ3Rk6d9e'E'H7k%keOc1pQWAU5gpq"B3=xɣxFUX(aUhlԻ#Y*[x3hz-W"
<fQ%C9eʀρW)=i1,GylX*;~SRZ14m<P94%ǎSh:\;,#ᖍ*ފӆFa&7.< ,ЛCIǄ)6Zg[B+QSY[N.L},ϺJB)d
髟Et-e淒`}6m\9G,yk)Eb,8xQ`0٥HNeYIrm0a
 4-	(*,shN:bm+w]xjm%9%S8NPÆ/g-K,מB<9ϙ[uYA/#m!ۺNGkZ1*)-xDjGs|Qp~ w/ul;VG`c++PS8\AhWPhm1?k/8<|Ƃ
>U/_Pq+$bcwIA<w&UP Β5ʔ!I[rܓ)YQe1ؚ5u,YUV0eu>p"aCҟe+sQd\yѼ2E"1+mv}5;\7/?KjeD'}$FmL	)~]C.,>Tj:sqkLix&8</\JIn{cJ1sNe)uylJ_E
|qԒ2o^HZ	RD"^{a\	
SQ<'IZcx^$6ny(/UfLPQ9/T"@=("x0AOJ+
TB;N@+ed2Bǖ❦q?OGpqPL]z^yv=e/tQng!ZQ"	Qs:KlS<gS)<r:Fpw8CLO
OLG α/ WHME-o+t7I~Iٳ0̍"|:amP0`}Jár0v'KQv\MTՏ*XMOcgvw+0Yr:~xq
8q.NyF@2,ec0iI'uREv?<>!G4`1{\a(e	]
qTY9i1ȤRZ}&߇PL`4QJ zꞣ#YPֶRk8Mw2Xtk/IF%o5soiLIݼ2jy/^{b.4uWԏc(ǔ't (P
W@=駋>v83#MjY5|ڤ*n*#
|8fCJO<SK5l+Xqf9N5w<$qU~*gdTkYU
x]AB|L9PkO-K`=W<QNpXͮ8iA1E4}Ń4=˸3dHG1XΙVLn[|ia8z
7V7j!XX"a{fàY{(Pv:TinTqH4Blݬy95s.=2c,fʠϥFp6`Ȱ4b"熯-4vߥmO^y5 ³@j:vGefп,U:s9E/MӒF͎q
u	|17>7qn[SsR\q(]bTUTzCRI):p炕҉8H9y"V1}':AWa&
;՞QL]E7bz^OT1]@` Ƴ/Ql<*o)lGLo1eǨrU*ѓəzE,rZ2
rBEf#$q$OWG$AW
׈␍9#S6JFBp(v٘=L+FE6f(B6GY'(estŁB;%]wIkV{p/$t=N|B=;2] PK	hN  ;  PK  C:U            &   org/bouncycastle/x509/CertStatus.classeQMO@}*R
	
6iO4xCSffy7s0V/1Cɐv}W00ꨣ~C~vǃ[lg.4uD;V:
6KnyܟẔC3OIs狳K+>i{S
Va*M_WPA%{!\ϒ+hm^V]kbvUdʣ	okOrvb̽&1tZ!*rPpLU
X]&,H"e(4
S+P3
HA5LQ2u{NRiLDIyuFzC^PK$+J^  J  PK  C:U            ;   org/bouncycastle/x509/ExtCertificateEncodingException.class}PN@#IHR(Hh,wtaYw>WD!(PPݝٕٝs#B.<)R1t2oţ॒U݊KU8PҷZ
R#R,zp-2+)J+^OOyZ|<ë`.Lo
$Qkp
΢9xw8vJy=tB0tcإu| UOq@hLEabIшv`܌PKR^U     PK  C:U            9   org/bouncycastle/x509/ExtendedPKIXBuilderParameters.classU[WUݓBA-iS!Lw{UJM$6:Lk2?C벥KֲɵM.u!9߷w=? 胪P|.'[Spu+\x/RP~PѪeWTp\6M߬@QtD7mZ4P1zAAxP0(,^e5eJt-Ț[9˄hREfI
O)ixԪj^\Ԍ7)t)"6skjbh	T}`:vi){<WPfR!Hrw7S>xY?xI6,/a`"DI-{2GfXmY/6k=Zp9W|3߯Uf9õ%UR?Uay]jݯKݭz%p?P1bTŘq*8bRŔixLm$]\yV73u>mLDS+}${&
T<mmd/TK*	<I`lb7ah[5k.$S)tzz߮7c8)Ri=89y<c!|.8RGW#R|!NaYÌXM)niѐ'+Rܒ"-ŧRd4K<nkX@7bf|i57bIXjc\@&.P<sU
1G@,_~g1d QLlc)rOB|2$7ףX5,#<	Y!U|NGm_tҌI_7(葓l<ɌɌK#OD2k$I	ڸG#2I³}XlXkS2;HgT^>	$F0	vk"QzF5>_s|8Laӊ06dPK:    PK  C:U            2   org/bouncycastle/x509/ExtendedPKIXParameters.classWi`TWnL^I44P%(E[ՐD %)%ŗ#y0	ޤHq߫ҪuKU2\@n$R"y̛P1߽ls=O?DS1b:%loY2q
ZB(h̃X&PtՌ"&5QCommh4 Wym\KDcaE7"겄EJelg"cĵ i_Zec[W#۷{]Gg9OG^shS6T
h1}$M,bb$" Ӥ]6tRꊅQ?-lrdD<È!5]0Q9ƢdzP5ڲ,,]2ebe6ѕhݡ|^(ÚYha٥&Q7hD|Vu]T-͵0L
3#>ήh	eZ%D9Aݦ
Fs!_LrhTA	ly^%n"lj r+ibN|L
Jn$O)cݱR-
)Zu!Рm$1븡}*rV;wpDPlPw$ͲHTT.j5j¯j1ŤW(4tmʨQE5dP6v#lI]iDІU2ʹL1j8ܶ`C80S%Lnu]l)StFW=6\~5M+8ܸZqe@m,W@UFчzTiTDbY`jFoSA,F꭭:~4NN7
\-bMl*@9#9~Y;^eǥ={;=f_Xf\un_2-x=\줺;IN{uRfJ=/Fi(FvgNDcdݛ
7ɼ9%	gGJ{|pHI%HB%tHxHX#!$n%anCntͼȍ(M]_QiYҕ9DmɦLq+L6?ؚq6aQb9SOkꟳ( ~D&'%fuLvf0iljUK&+&J2l)T*z;dػeG)\YGyFvzZ|s|VVɈ/52v04M2"xn^(íx2˸!1<y3pJe
C	ooтXp-0C!cQw؂02n>/ed4cE}Gfkpg32^00XȈ2F1'Jd8ç>Y1y/qFu1vN|k?a2|CId830<n6/}ô=Lۇ	Gd8
]2G~SFwK_-Jz`x{j^Tz%P:WW͗|wPag	i]*Y9RcM4n{FsC5鴮r
Q.zZN_	\iGo>sYC8NA~ZE#A*P}]C+G/SkGoiIQ<@
8!BFO K)YG+2+|`HZ?'B<))xsR(_IQǿ&EK
ǧ2طwc_w`8a1$gNA1_83D;7KNiy\ZA	'6r\N9IsIIDm)J>0OL-'B(a]FgN^&|ʠ*ZqR
taHbt6$ӎ:u06O9xD^zDTGuf5W'EٺuR]B.RPS@g\e=,'{.?q}	昩RޯK(27lc>w\lNPN<Gᶴr>DPcaYO֜b:#dyTcMR|؀U.ye]z鼯(b3Nl3W!.qe >l+.
ϧTK;N4STu+l]N&#^sXs{=w0vQ$.c#bAU+.K({???5 ߛEX	7e;=tx)	Oy:c],ݚrܚխFt[.s5?55}Etk֦靜=E^-Lk5PK:	  ,  PK  C:U            1   org/bouncycastle/x509/NoSuchParserException.class;o>.F6̼;FĲDļt}׊Ԃ<FtҼ⒜T
SK}䌀Ģ"jv&vfFQ
Y%Ey֚a<@˸XXSRX\`C6 MK{;F
 PK̯bv      PK  C:U            0   org/bouncycastle/x509/NoSuchStoreException.class;o>.F6̼;FĲDļt}׊Ԃ<FtҼ⒜T
SK}Tbv&vfFQ
Q%Ey֚a<@XXSRX\`C6 MK{;F
 PKN      PK  C:U            /   org/bouncycastle/x509/PKIXAttrCertChecker.classQMK1mWkV޺ădE`PzͦM
/$xf7o N`AuAUΔL1؟*u&%,6^p#)O<Uo&+J(WpW\*<!38	'-Z  nS[dr%EF\_/OM|ʅP!a=
n3h}jÇc"c2^D*oM'X'*QրaZNhx)lQ0S@tj7>Ӻ`hR $myPK<4:    PK  C:U            '   org/bouncycastle/x509/PKIXCRLUtil.classT]SG=0 b6>ua(QV@yJ3۰5	2"1Ti|d"=YaXܭ{g}+16Rd!}}5{ÓkʏB'ZRE30[aU8ru9UŒiQ.OeWצw2V%E9>
E éUDWVGTz쫧Gݤs`;w燙;"I{L̺wZT+%Iwfvi3UBad4Wܥh=zz]'~YdFJ(Y5x($I{!"Q@G!1&XUKmN'9Nqstp8q3_0tfs[Vddg*4RQԣ1d_M)cCוl]iu8E,gZ
|`H{Mv1w4$A#>P/67xP|>G_ь66a"g6ZqQ{6,۰1bn\Ѓkz1fGW,+1na[чzJ/TT7gPR{4'EwCR#f`vdڒBy0(pnab7&Noca­ׅ?(I:+4ti)0V|O>0Tnl-ͧƌKfo43,ݷdJgo0Lo|o^Ƙq3Ք1&rx!p3h~ωA,b>T݃m$2LRH99jpGcν'UWPK N  i  PK  C:U            0   org/bouncycastle/x509/PKIXCertPathReviewer.class|{|Tw$.yBI	 $l Uվ[F[*MkXڗQjmǏ|ޙ3gΜ9s朙OyQ 8O
*S<R*ЪB
UبB
Tخ*tУ*DTЫRjQZnPF	>M*ܬ§U
Us*|A/%nQ*ܦQ]kT1}+f"L'd27@.}I#ޖQd2"K6ѯr~e+0Put8m+46/_A^]mkc5ͭm-mX75.omkزvMSc}cַ4mYچeJׯkha0>GwvW͡H7^ۻ+ر*u
]=]AwG uM]WogADͽICZ&v
{
p(`Z;CWvǩH0w:v&aYt(rs2d0!-v:Ӎ7C
EHۂAÞ`9mDTJR)Cp6mHcG(I4".i;uHpWmotGcPmGI6)Y]}b&#XD׆47itn֏8Ha?1.rZ*C
{:=Dκyk8[sAuf]kFaˠ"yLi5Gp#kh}O'Jn˿+
ppHDf7%3}	g,u]=ѽVi~rm8ݒJ3й9DitBwӚRg:`Ea03+﬷rFtpq5\Jlchzy#0ƥR 
vԇq8tzZ$ӈtS<
4/hj|m c:Ym.my;

w$$1-3P&j]:6	]ҫ'CzPG	pPuc@s'4vCKATKS{{t:IԝGLXK0S3ȠhJUrGѺ^߶`|SO{4Fan=[՛թgؘm@X՜¹P95FY]owZ!O?^8`2>:'8x	}3S0 (q	jlYI	
{ ayBk|,ڬO9
54nyk06f76lklRnDA7Zaklm]ؼB-u46U
[ַ֮h`vuCr^FbQ)W:+]]dv`8DQ9䚅k׮E!D[W

$AvKC-
[{Uq@Mm
-͵m*ŕ\̅SSpI.*CԅJ
-`iY
vU5.eU4۫DUHܪ=Oƌ"qP-hs
d[t.Z	H[>Z;PTE2M˧G3 1±X++z5tEp
tOT?F!ɽf8aP/%Wщpdbk`6-M)jXW#ݽ]؝"KکEǲ14 kE5bZ;톅:vWcX$b6AGrqGEBݨ%n^K;RE(bwW<U0jHΐH3~@$8=A'`	nvwۋx8>ۅE(L@)+Anlu QIv2N_-*0+Y].f#}ZiݵﺽaaĲX9ٖ)9c<	*U*FB=D~P`{3}gL#&Z8f]~q,=5ˬ6
-esn񹰼#$x1FZ$%QeZ1a%^ڃ0Bՠ5F,Ek'ě9 XI+C[NC!h{СG%X(W#nGT]d2|Eϙc`06CʌGäT)bs3.<#5FOC᝸9	#aQ`f*ՙNc]9hhF5k
ob3ƛikpbTka1*,Pfg|v$JAՓ-iNnS̘IGC.cHVJNJZ4'rIJⳑ'
-l8KYQm,:okw3^`ґez
p_44lE^
3ӵ411aH2ٶ#J
s"6򒅶1[o.Z>
e` ܽIl|ｹKhK,!3g F{pAnss%8p|A{n#EZ61^~\ea!YWߺ7=[v)PEm,(zl=Xw4M0GF_Z
,9"u%#+H)PuܨCTJ:ʱ)FMdB@6(		[b_R5"]p0TfUݸvmɓ(Y&
(5(m
lwՆ"ll鍮VG$U*.VllPƤDA3bCL:lO(]4w6 m;¡+SBQ%nK7NwU+qaoi7@!Ha!)jhS61ɄCxjk<>b󪄁UPk1*@|`k0cqц8lW634Za&{44Iz\_+4i(D|T 
O@)eu>ecNE
PGvK)x~1ld'
'ۻIo0.sObR<jض؁֛+{+ލXQbsӏ!awrD6)d#.t{G&SpCtbttBQyHtƩ5zŽEe(~nPIG9LKP<W$>1;3Yc|iʾ
MtimJGXÖ#
gWquejm< 06^В$ZS搑<]=.aѴ>&Vgfbnf#(Mr<\ȍ.d&X8?yl6B¼(sbU"Z>+?G L:QysX'FV=C{ }J4¸?E#	=J_aؕv5:
Xovzm.ܻJtm]MN]ieh;U=fZUۍ9e[sM(I6xƠnk ղR,cR
'-ubz)GUJ-m6	S">n"SX):4a&LFb3 l[D$WDOWЕs=ponnj$̫Ez_67^r%ϙ"
YvEEaK$m,yg8+DxwQ$@Tbٹ#OoB2ȋİJ(VQV|Cl̓̒/6-
k0 wٗ#,I9Q#tT ˉ+9wԞdN|&ofjlc@aX \:ШE*RI*4Fu*lPb.Qa
QRp
~СB
p
;UإB
!*VJQSz>U
W+*ܭ*Q[
|[{W(]S{
kRj5+l*lZ֪6WmT
kW&]
.U]0¶*Ca
(l¶+l
\a;֥]
VXHa=
BaaEUXv+JQ^}Ra7)f}JaVgY}NaWE}Ia(
¾)
ۯ
UaPm
]aw(Nݥ
[aTطm)ݫ(
Oa8+
_a(<n%y9Ml!i3R*8-kEOSr8ȼN-p{.*G1%'N kƖoRF)lPTh/6
(L"_{m婥kMohjo|k+O-%6E滈>Mi|I}jq:eWy	PY3씊lא2;ZH/1#))+$=MI'imLMO:f'汑pVZӑFI(e#xJTe.e
L)D`g`;^gjz\i>({i^@T0VD╚g?4{O?YHo-iLӸǑH)FEHz-Q 0QБ-stܜMn(z~a%X,r
--lԂD:*G#ENTKb# %](LzvFFS)GWtƬ4CYiAB YoP.4,҆vR"L!Eyp?8R4P!VL4aeOCI} CЌ"8'.s2Eڋ 56sd>B QͧlȫF6OX;m'/ʸTG,nExgK;\Ҍbᦑx&VsvaL?ⶒnm4&%)!s4vX#idZkιaK㹶tف+aW Ȣ\Y\ $Ýl7!Bߨ -rwգβd#( fJrV穙ei4aTLʮ1%?xJ6gQ%'~vGAoJ'prItGD72FsLF1WLM&YY R,	#X3/
'¦_cil1|S:ީA=Ar_%:[	Ap;w$x4s!Mc!ߡ_kYxpƮGҠl<L(=585&@PBPA0B%O#@-,?&$B`s|U#8`Ar+	n `.ИDG $XðHc`'1SX{3|Vn
!={4x_k	C0D4>js_<j2߭_N|N`"$x_I}߫ίQ
^%8
<ǯOu$x̯4+Ac4V?4oCSi3s	&F'g5Ә^4
_-/kiVFPǿ1οYN `A.5xy	<No+i#~?%C;5xߥ~q\`?!X!<q,?;jp?}=kpد4APcY1*G3dXDǏi46H!8	~K4H$xi_JcG$s{,VcUw^cG46_ bE4O<_q?Mp`A'[%N ,/%k
7	"x]=O_ 8I!)wI.IxT9R#A{|ϗֹxTTw"Pi-A.>JK[.>Nr%C0K+.s	*O$~RO)z&>)M&J0`:`5A`^%-'Jprn	|gK	vx)
T:`>N/rZ	.! IE"Mp55.^NʥWSsi.AKdTBPGp*Cf_(- /E&bi%A'\BŗHtR׻xxuTGQ'ves.Lo>M˥	D0+bv#.RC.(}/	>M[tWK'xś3	f<k[L𨋯n$\\E@p1sz`\MZFp]|==m.tmY$L)/|+_u8*5a+	n'D/t-R	|eeO\/=[B/A`;J
Mp/wG}O !?#xi_<Kw<\J R%7&,rji"B7Gtn`	'A'D7HKK		-klq0WS@׊QN  <0F|G3_&9I|)_
"/CY(KŨTb8J)b`Co$FWCQiϟ/9V*^){
+e~niYLwXo)OK/ϯ2EG=n~N~;JcҿJ~ya?_?򓇥Ka8|LwpwJk(cp 4wi2drX<$rA7TPz~MIS}fKf׬*1$8-&rͶH˗UdLx$vNc3pE2ߐI)D,|('yx
у ~'TC9 q7s4?-SHhli94D#L̘72y1j<ckn+VO)??_MTaZX.#Jl|#|-ҢDJ&,(/UU_@{?/睂$0[Ilt#3YQ	}}uȝN}HM쬑|󀲦 Ϡq/Dj1yut_n9ugL^_S`O5GKGF/ɗEEUZ+ו|j
u{Ø,mzFݶ΀s[iD!8@s	r'AK5Y^/=m͊ɗ
{}r!Vҁd6&˒E5g/'
S"I4Dh΄DA
|̧ d	N%T{)w@~9I]o]O;Vs%'&? (awY/Yx_Vd;kc|Ͼi 8x@
JP|$sOAT%~
&c)Ptp4J_%'jFs&*|Ӑ<Ѣ"/$[ra^P!5H"k-q;|syj%oUSg)CzъCҫ8>gL	SR-yéy\djcLxͷFӫ.
g8a@0>c>Fm8o|Dh_0+|I(>JteH]LV;
ЎJy_rklP
tfSi\yg1g>Yȿof.IllGu֒3FP ?Pl>_Vvwc
ȯ0pVFT僐K?1y1-,|.9*tiTkIKf:hƗ
-+
k6ʒ2oR7*꿹bhn (_ЎARlr-Ix%:IIȡ
;a.?~\;7$iJ'3MSQU$A.J#}Nh)<ah-<Cc}[2swָ2s[B
nNNuA/RL:)Ɵ]g{ݸg[q@'8d6Juh /76M:$&&䅾l={z3&o}9zNLsa}*y£ӺxV˷`;vŬj>km8V_>G1ֈ~L^C˒k\UĉdS
N&0cAgE>6erJј!!65APr_651InkGcbGEP#昭4K۩xU!z^G9@GZNu9G0f"^-PeX>C22"G^Xsӳa
\ 	cM$&eZۏk0: MŦpXybr&;S6\J6Q0rؤgcZ&GC}>I{> Le^6Osxgl>.[ǲ-<UOgD'JKOKC>UWʫx)!	)\SmCp1
F BST>	sX">v)(DB7<ul&Y)|De§9bW@oOCp6ӻ>u6f
_
o"ޫU8kQ!F,.;s1(0lTҵYp'oZH+p}3%MVUZpb9fZ㙕;G\|kl
ML&T|Yꗿ˥j
()4FW5?E;N|(Wd6<us\Jlxll-$DΐgSuAFߡŠЉf_$Ov
=Dqi76{pg2/,&"7 ȗGS=?ѽ]{|o>d%WWIoq}:-]="k	sM;!ktO:oBAYkl}8J1lR|h}bz^b^Y˓h$NA- m1nchz9Fս?E4cWdRbW$Ռ!.}c&$">]/|
r͘c2K:)J1vPEMT>0qLgߙc4ܚ\oTD(>WxϧP8\I!'bs,sxH᚝4\^4;/f>
'h9yc~!&/9
ChY%k+,	AmMvMk0G"%PdqA24˨I<.FKc>YiaPlvg[;V'CQAbsL98+mǘC̏y83d]t[!7"18IP=".᳇HFhjlLKO|^vh#/lp/s
&Tcq^653>oFx
^~!~CdoVR2PsnHZWq6ZĀ|qL@subozrrPԸ1NcbIׄ$2J>4R>LfkMBtA
+@Ĉ(X S31ӟ=Ju ei66\s;kHK)El@>XI I2l&ǛCroN/Wx#
=qgfΤǃL
;< ܗxi-؇BRiEKP
u"x0twvZ盝pb!>+#cR;.ɬ p6/4R$Iv[Z(SRF)eq11
=H;Ӟ2޲Gt
"]љf ExRb_yX^Ït<gǧ8W:rSRەFʽpv[waJ+\f'{Vt3/00#mjb2:蛟OA8?^CPyS*u0Epq45%$s3:v6^y4@rw
+{xcJ34w'~3O8pyM0gP0*5ԙa JzKK	Rf<Fgzw31()PqC0cH0U$l2-l M4eSaXJ.e(V]ҝ&Y!pS⚡;Ԟi!07t	NfMfPüVHu[;wxLo2N2Dr"ᘕѯdbluʎetל価7r_/'1y|k\W¯w%y^VIʉmfct!G)PtXz|+Zo&_M<x|xⶒGYU -~10ZHO*o5^<U
*6ͩBs*Ml\	an*E%,gSTi&
2
l<w>Pe|
kƍϧ@./;kahcqM2zt
VYOp=|<h)Y	>5
Rl0ta*،e.҃R]+?ҁb%k	tlf^JPUyI/iǤfC	C3t{?tsLvq@f;/1aIǚ̻<}lVB+K{!'[MKu!|%ȗb^N|>;s`"KW-B(gױ-<hqRxI`ۆǘV<D,ň+T#|@_e~9I'.ǠW"n0r1/!&uS4x
nc_	*ЁS`Ѥǈ
8hUӣ	ݮBu1Wÿ?^M֫rNQށcxq:&&[WZ/I#EҘ[]E]s.qˢq9)ir<mzx$&WY3p5ٖq&>E.qkͶ:1"쯉78ٴaWLZL"GdFQRMcr/Kq1[2%+iX12&ѬcJU%
䚸|ssqc?ɪ𪡫l
BO$']"Ѫ_~̸#u\F	~MK֫C&]	D|+}ySw&TgSA%\F#_cM'꣰T/}*êbt$ϼ)Z@μ)ӳ8	n=w u߷9,1[w0܅_J:amx.9ZG\:CjК˵A|<Tk.grIsu4':{Q_N0z Y^%y4PH^Ԉ	խ/d+^mmiZͶUkVA.E鋃Bޱ)P,FVDKdm"dy,wM\uqyI>.~.zmɿGSX;,j|pd]4b|"/{=ѩuڰ*~PBJ
7I%{WH6}!Kɣy6v*6uny/<qG=[^M1%ts?JB 65n&[dz=
56f
GǗ N腱܍ދ
ogS|_?OЯ4Q%it.A> ߆	w;f88xv\w;縟;1qVHwc̙ͫίR$`4!?K)J+484P:2OLWbӘ+D48*DB4ĉ0Wc$b{fחca2~䜝l+?~IՄO)a&%!hݜ{D|aYBLϭƒ%' 	4sY+全1(L
^㏚ȢwQ^^e,&%J+=1QJcrh1*SQD
4ƙ/{㾘S)P[q" eĻ;8kdg`/Rʎerנ
nE&D^j8$ZI6cB1d	,	#d`[#fw)8LNh/БAQq1^8B^/czPyab\<ٝ0
a1 O"QC1]-
;ｫ$>3t>Z۝i?7CvǓ m)Xq'@n<ok̍fd\nkM)Gc(egkuF_0줋b>(ǝ@Bac#&o5iGb͍rz2>t4)	!+qRYBl~y-$V~
[C_ p#|CkmAX82|{.Trt:uqI9Qainj!I9$=/d?PK
4    PK  C:U            )   org/bouncycastle/x509/X509Attribute.classTNA.,[9V@YPP9AXB$^mcX]x{x-&>x]lfg3 H0԰[92y|FK,vkzЖ+K,e붝ghp{̓]tg[zviH;Uu Vf)14DqCYYED[L69X_pSӚڳyʌXV;'?˛oL.IhpYB+Rj4=u]
խ
+CUq4T5Lj"(Dݢ^B(ζˤS@**J^eA:`EBZe8s4⺂v0>4(hB+ং(0*"
mF1]
M0!ܑчIS
'>ݤ\nyn6)u)AE"&O#@0~L*>.-Fh(ӎз}h	sGݎPBB3UsRSFI%E,1{!=> ␖WE<5|HECE'?beO[p,	ojmr
ޛO\?_PK7  m  PK  C:U            :   org/bouncycastle/x509/X509AttributeCertStoreSelector.classWyX\Waf.3< el]H$4I-UH0!%&!T3o"Tq׺/{2@
D֪u_7off& νgs=3؉H(o8d1OJ719<G}_S^-ISX(0PFP+*!#a:ԢWH(!LDXXBqѭ<73}jĐɘkZ@1cJPŊj9ь1G h2--wǔ 
6FD	ԐQ쌸Ń}mP[#V(8Z3ؼC9G
5bEzp@PL4 "FG4c
%	4Q#gi	q2VM8dIbD[ 4JREv hHԬ5h4tJ95q}4
JMnP	
;AuH	Fb#jXTVJD"d(ưMfj +}4EԁK7_ݠ[7zU<F	1Cu ŦiMlqP4#4TrІtCfO=;:BcDTeD7^"p2G"ڈfhghnV(yBCy^Em=pÚDB:A=BLTMIuYJ֡)ImR0~&3	IMmf7T7ɫ&G3LY4fev>W4xMitucNf*jQ!/7OXiPTRP%	4
4	ll!,pN]nh#Wy	<_mujM{RUe
Xy>,7gQ~4JmcȤsu'vU}6_F٫O~v=%IeGl*2̬TǪɦNu$XG%~oSכwm}lGພxuRG\Ѯ]rĽ`cRվ!wk*|ڰm5_u׭à<ͽnkmY=2nGq;C)2^CFb2pFF	^.c$6[Q ٰ3\(
M+d2ëd\{dp
^+u22pVs70xb&x"c3&QwɸfxC:>3|C3sa'^i7ć>],
_rc qCŗh4G0pSdu4vc
1輔1|1|a/da3|<Ca~MW+;!1.%|?ΔV-!''LMJ`Rҹ
äGLZMl-4CkSwwNI<_ Hc	#[A"(8[@0..Ic_74[FUB&q,'	Lb?I
8J
QtaݦF(9>'9WlCw2;@o4\`ߝ·xb?j\[5dngnQ%<qTBOa?nqvW=.leF컝Y4~婳pʙ][.=}&=;0IC7(j\Q#gkv]DG!	܉(8$xT?8.i\-*'zʴmNN$.qb<_"ӥI,1FT	lkr\|g+,N%%oTyM+fqg/&L}N%])e(	f8̥7lKXцQ蕈^HafW+sDExkSa4s/%ͩ0Kwչ-y%~f[$M;Tq*/3%x_MYf}¯ĳCePimc7sF9*JjQ2ow(糵|*J%# B}V+zEH{i`-4ǾaꑍDG
p~W쁳X<~2j^B%e>PK+  -  PK  C:U            4   org/bouncycastle/x509/X509AttributeCertificate.classTr0]4-må[nuą)dO;ig2d<98VLk<|ZN)v++ 3KV1UXOUS
'}Jtc#!,FWDQ3m(>iXA%uE1''p6W
Z{*h?tuc;\EBJ'ȵ6a7	g"bN8J:LyMKc֯D?,+9XF=KW~/YeoʡP<s =v2i)w/^6ǚi+RvW!07(0xd!M(SؠIDPJa5
	lYC}.|'J`t)"1%W.}.qQ~V7,j7V{wp
?Go*ye-BOrY}( k9rh*,epeexl0OX1Xpw]h݃+ƭ߀ӵ"
۰+J&>6PK=(&0    PK  C:U            0   org/bouncycastle/x509/X509CRLStoreSelector.classViWg~ C⨬VŐ@#.eB0:`fbjWT]]hk=5p9]91=L ~lÕ6pH@qL2_$ݪ{t(`YW'dM@l%nv)cPu=fօl*uGhд:Cєma-+Xt
󷦘Jǁ.]єQef	jXcׄZ<DE=ªJ6U$t A'q5Jnʈu2azXI
#CrT1x2:S5̸:0c_LM$'e
%#
Nqr֫Ql[RP*Uát5ѹx^Fg7D㊣	9]ae5\M#y,7iJDDT!wYJK)*cv5M%E؆NUs2.oi>?;3<FtdC,	zx2,dCo	Z29JwG)<VYyb
dN5hIulJ1Y7S'%⬬ñ2Rfٶ*8L
c2#3o/!ήᴞ+z.X{X&bF>~M""6hEVDl"8.M=}H}sz!NP
26d7.U\.?ɥYnsd4V\u4]lS?:< 
b=0p1g^%lV3ukw1Uw苫Q'[kap%@f_a'_y]PpI}̻q@ᒰa%D	J$4c@jCn}aPBRp$14cXBHjv!	Va	;!Kj(GܸCԍ"c*Qc8A`/CaQfx9܍=3cg8`2<$33"+KbGl>+3I	ѝzQY(5â6|
2^fu|UL3
m^خ=N=(䶀hvm͑lZ^m1͍-^(rFwjW0ZC.÷s5Ksp7`#:|ʇ| ۦ9ě-EJwb_Rᚩs
[J%nF'}qkv:"":]T3pù%JR;p*-nuTݼ$9rk:\.⍟!tx6&%{I|u	ݔaN3=tObT*JVMB}"
 C"J1cn
ؙNL2dzi.ѰӣRXtnw.Tzb|:N9t|
mym^bǘp-nJS9PKɿ*!  =  PK  C:U            5   org/bouncycastle/x509/X509CertPairStoreSelector.classS[SPNK	-BŖ T/p4E+ 3ZftM'[Kvf7߷gyc3yd8w:tn;O4fU,37,fpEM,+Q0$A/cAѻh6:v]>^"*{9aT׬JIӵcrZ?Q=A]]T_	ArzE;s:0tބv};ˍL[M$$A%!.[Btg/)4/k^z6=UWg*ϧ{6}vOΜբYю2z	cXFLFȈઌt`DFL~hC0ѓkTafcHbRRPfmZkEmfrP .EyH(s=#%E=<gp}8A'ȷO*_1
[ hF/|<CPPjE.{fkud
7(\guo:Ƹ>JV& OH}D$\U*z-zaEtdnW۪p#\cǒx&#)!5#Db%QɥDq^^:[9_PKҎ%    PK  C:U            1   org/bouncycastle/x509/X509CertStoreSelector.class{Ui)i$L]P$mH[)"trI3aR\*ϣzN2m4~{{ΝϿ
qX{%0/~8]qhNt?iNi4D
ݶ/jRdDeE9.M6,ǖHuܨiGR2WSQ
my饊ް9I3j,\ZWsuE4%]Խ,د[f<3zeSzh4Ct۠S8Sѭ>3S-,_%rֲtox	T\|Lc<c5Giy#XbJԭ!#n%TZK=sTŗWu^Z(Q{kXQg4e34>'M'3fȂg:QKɌeɼn|qTWDY5|hZ9^ņRFI4h{vl}Ndm}аq!hㆮ<K&i%+cTҖDnSsO55k<Ux-jj\VSjYMͲjVSuVg4Z}¥!\6!BBCkbfGl\VwlŔ5LɼtiJ[~6ǢcL
ǫLSzZ;
mSr[:$]žC[1uivKfHw*ba<Uk چY-W-Rv?*u觬1~p=1)A<64	,|K+؂f"aA	+@`1nhǍpN@FzZ,pG_`)
\UE ؊[3ZXHbPZ2X~kq:8 ؍0R8°O0#Gw0dCq0N0c2fø A#G=09deÌcQ`"c1θq?!ÌO.'Gp,}df=8ާ!K^z4to&DPx4>΀4 ݎ4RlMhjHCW_|$ޚ(i&6Bk)MEhZ/' 1E·kӛ8]ҴPpȭcY>&gsp&>^}|mp|i/Ir|_9|u_q|wE<ifx۳C?r|q>87}Ljt6l୵q?BCm®U7/PK Ŷ}  9  PK  C:U            /   org/bouncycastle/x509/X509CertificatePair.classUmWU~6YaY*RXX oiy
M 	֦huY.bfCۯ?P@C=G9VsMZI MSdf3sm?w `ÐIIޔ s:Bsؙ0-ә!ߦqMmY/$}W$(9,ZFqn:$[>KtR~|$f=9fђ0jӒY;W =lpÑ7ʶn;<s4tV!]zaí'	E;m˖qKNkzɚf3IkdFZQ<Ic 1ke,hsKdP/@sm.[n\9;گj
5i~!)R(,
ltAگ iZP?C? C,o0pa-oKziSG8 BBUߖ0
757kZܞmH=Ϋ%7w6wMK+)j+E%q="-
oЬ].F^F~g2mwP1"(UAVCt
E8N
Ôw3W>$5J*Ȭ s
.ຂaAF`Ia('
"&
Q*aI iA>U0&|Ǳ@
/O7=G7I{bxnI]t9Oct!HG08z$zH  >gb;IM>C|~Ҍg\!Io֍*!OS8@2YCnt2凜9B$+CܮC|Y[OȜ9AfX#ĲX~_=^>;ͱ
3D)ɔTL3 _3D^fN3|Pk}qxq˽-͙fr r;"+xZj=ژ';. #&C,fc!Ԙ> d=C&I]zU$V(2[zD=j
=eKԮ' Ip?PK[yO  	  PK  C:U            9   org/bouncycastle/x509/X509CollectionStoreParameters.class}SmoP~.
lvʦss%?ґڒR4QH$я&(\dYq<繧;-싘!D\1$iE2ttNg^1L2,)}0<mQjvaB`FQm;R7cYhSGGM4>'cڴՓchّEGvqpi5837`:iT6͏g{;nS;[?ѵg1Ep6W
,@0'`^EKq͕tr~&Nt0ˏ<~*nHgx8@?H['y>i\b
b	\nEECCv

rq[
%aSBI&q]	)Ӡ?<V43R[ֈ\zBuZ{&g{D<֏l+cxD82BW
mdCe '`͠*5T=<UhÖJ}zW. ]dF.^^]MPK!Ą>  h  PK  C:U            %   org/bouncycastle/x509/X509Store.classUkS@=)@OK( /)0	C)4$'Ȍx7Mᥴ3{=ܻw|+E\P8;*c`µlF뵴mu%T
f&u07&sH,AӞ-ֳRtUWLb>qUS#s52S)[5T3_b\Ӷm݋ƭĶ9n$-27SӻKg"9NF׭mST5XtՍrawy`pN[A$x.-4W_DJU"Q#V}uΖ)[ams׋%Xus5]p'\[7	_􄯓jv<HP3MƲ=ep/U/IOZouXt]_J1n'Rl2wb$tFuAQVx,#!d2DF1|)
![F	zd嫧h3>< }BB#^J+>Ih %<FZB0@Ӥߐ)FO_azP?>i2{P?8	W>n0"m"Q"DʙOf!{!/*A9\,u	W#:O(i]!&H|5zQg1>o;"tÄΧЁXۓs%EH ; r/4SV=A*9#Gxi,\9¤uq%rP+ir
oK5^Ɂbڞﲡ>xA[(PK?    PK  C:U            /   org/bouncycastle/x509/X509StoreParameters.class;o>VFĲDļt}FtҼ⒜T
SK \_XZZT  PK8AX   ]   PK  C:U            (   org/bouncycastle/x509/X509StoreSpi.classJ@ƿm*zj{zPP" BE! ^qHي>B>%ƫ?os
$ѣ@Z[Gdkm
Ւ +QUN­mQ&gWCUgf	Lʫ
"u:h#K2|b4o?j̙H ҙ{{FK ~q[Ϩ~PK#3   1  PK  C:U            ,   org/bouncycastle/x509/X509StreamParser.classUSX^
"K[Xݮ)"bwj4M:I3
:Q;{NB8=;9M/ CoExb쉄,-Ӧmw$t=qm2B/-'\	mkeygni+T !aM[d)7$/f,b?lIyTDIؾ-ٞ!ZEQu-1df7}1f.WjMtyFtb4QqM3+ui!U*#Q:\qubȼ'	k@:h4c\c}d6`pD+9Ҵu4Aon+dqFF^ge'㼌~dHV)_kX(B%Z5zcv:Mxʅ{Gw9J
ŵs, Iȕw|HxcJB؈8IhR,BDߕұr=ARCqOQhAR&U!B
M'#T~Rъ측T6mm6S
.W?bZ faV!}6C枂Q̳ɲSf s)05kto6uKa"#!})uz58{J?&p3-G[gRxůJA%y$M*͛ho(x3\	%)]`~OӁB.rL ]O#;H@ь#rHr%3\Jjdb\~VL3d$ӟ}wB즑4'?VF:tia!!.|ƥ1!xJOxW+#!;F>9]N=괗hPK  +	  PK  C:U            /   org/bouncycastle/x509/X509StreamParserSpi.classmPMK0~ݪsM=xzCa0P׬%#&MY(m	$yK1lGCr7-i2e<J1elݙd&SǶV&}ME䋫kLR<8W{+4ߘ̝&D3Db$+HNxeIXѾjM<].Jj{]NQkj+?%o^D:$B{4PK     PK  C:U            3   org/bouncycastle/x509/X509Util$Implementation.class}QMO@}WT@ 1<"=D/l%eKڅȿDb2N\dg̛ٙz p&ClrWB
uMKOHPIp}Đ3slߑ}7qW1gt)O#%|	ǽc.D 򓤝MCzao錸;
۫gRf61VMWvo -
0PՎ5L7J=)y(wP=B%nw4&&Sްk['4^IbL`d+I8ʆpc(boPK
u8  "  PK  C:U            $   org/bouncycastle/x509/X509Util.classX	x[-;΅JB#Mb1C0iq_G,sܽ}Mi9[BRZһhi y$?Kʏ# ,E:xS&t)`N]l#,}8[Vpm)]0 vS@X.D	
	x M=F|@< {k`DI&Kf4%DlO8&epvFFXj%j)*LGTV<[sVn[ϟ3Yڶ\aTSLnj$w"Z666Р:ڲ;iuC:V="gE]c}=ukf:yf4w@+4:z{u&MMIO&Ƶ^sE)i}cӚ\n_ʙgy;Y-}alZQu<]56N.ϴM6#{YtY)!YeBm{[*fC86{fCdY!2M
Y!̶-)IȴBdm=/amgmut.U jHiVqDeP#QEN(`,GMhTa`8D̚hG!5)Z8zhJ8JJ-I
lxL(	TJ*[i|F(^j$w*Sr%Mkr$9JI`Zfx-}{L##HT![ᠪ<FfUnoSH%r`ΘBGDh0RimfSßbù?ԔhJ2B?N9I@44(\e,}Ƴw0z46kIj{LT]à]8d m@uv jۗL$

 VB20&DMsb	EQ%7wq#4D}ˑXK͑wǴ
|ڜɘؤK3R$*0gft -jXl޾K
jYF'kEhp8IvG(pN-ƊlX`83{m˝=f\(&&Qd7fkሯ5PF:IZQ]'̳4;#ߨ$wɖi
=f˲@'n_fpʰӷwVGhDhWnPh01b΅MҨ7sLO3eI+-LO`xGkƬz,m-	*I-dnK1%QMŬoclU#H5,i(PVP[zb"6\hΝnϡ*.^fǈ&}=]QbKqs$@S##6Іm}jth]AB(L]b<e7El!C{w[+i$JIKP^uk+i]vq+YÏKg
	jWrΓbQŶ/Ѧ$IQ<E#^	|A{$W$_Q	 %<$%`\		H|I/K%xToIߖ		#w%xR$xZg$xVI}	y	^EJ\C᥇lygV%Im
ܬ$d1jegNRT ,Ju榔xwUS=vt?	ʽqHoH᫚Iy'iTxi+)N_6әrʵ7K46i>ʺhwګDC!=Q2DfGM?a8ԁ|#w+tcRncoLsͻ/v搰d|f+9ɛn-e{do{NǄwдr:877|7bދsdx8W<.dbK.er2|Fna6`.2|?dÏ~S18_*@cd%Fhg2|>\(0\d5F<\bq2\9\ڥ2
q<A2|p
7ٮJkq%{*X+Çq?zV4eJKP
%(w0p&N.,ug72ɰa[)Abe,<a=CC;gZf73n&g冿0eP
W0̰
5q'ðC#n'27]Q|7"Ӎx(pKn,8Xn=n>!a*#2J(|hׁ;ke*~:ݥg_|戹_:yEifŧzy @7d
|K'?!'E
&n7G>uf4zؔ;`(NbQ?9<ĝ.}m) >_ ׁc~!ם)Fw=_M_@C5E2OG)yK('qpni?_ SCYغ52	1'dy'4K^
L1jڗF.d콍=1(W6ﴸAU[7bcx*cNx\c8YatA4)
=f(D9k'ɖbO!)8vǕ!tlvBp'StNڂI,}qh$qA=eu1`D-ј^LS)}?N+U(F1|G^,ZxSRA9Mpwk?=E$Vs׎ӣԦZט+(yzy{,6qLIx5kի0K7{ e,8.?	.\a{RpR,nߓ+G(J𧓳ŕx.$&].}D	|H5vƒWBY9ZBX5M(wxJXI;7  W.65tR:keZ:|k5]. 佞vΰsa/\0	oiv$I.*YsRx~m+J+->Ɨ*o+RxO^c6^k-ƛRxOqo
?m6^m>_mSx=6~L
?67Z|/N/)'Rצ27r,.lbjf^l6^,>+ҜH:o[m6?i6~_nE7^2.^VW̝
G
%_ߕk*R~Pvf>K	CR՞MA~ =f@PK'(L  $  PK  C:U            6   org/bouncycastle/x509/X509V1CertificateGenerator.classW	|Ola	GrI6q`r(Ԡ=&ːuwZ{jһ-٠iޭ޷oefg;{}FR8Ë^EbKBPڶK	
WpB4$J8ןL%	oiKDdoi?mDMʤM
J\iKD[""4Ҩ%¤wHLĒ"%k1=,v-Ih5l9"aFRuYA,c%n%RD<Ď)3jRaazp	Ĉ.0ÌwlSª,dt.rO:gu\I67V<#G%dWZW23#*i	gzao
IPhs2uG2Ix6z,.ާׂF"3j62+l0םmwuGc
./BZlc**---
1p0z@i(Sz2F,El5koǈLKDyx=vslY)0dbFrQbl {V<p݊pKqR~9u#-LebnϜY:c"kf$A2F`)?XTΦ)+R3R@iZ]]o	mT48Șjisupcx`[]w=Jul~WcXnT1D0g
VP]e{UC5Kka8!@Z]j98Gejtm.NfFqAsz+jV2iI^srM-2Ī]nK*DFBWuՕԐiA'NkZ-73!♴~͟L
/"tJI	W:t:3\o amc=	[uϠn&0`ny<w80KKY96LͩHg.a>
)M.
i_3toPrGV@3&oLb,]F@FN蒱Zƹ2ΓFZ˸@se-ce<OE2.AF=2zeqKe\&#$cel& \𧉎Ϗ5FbûDZ*U7-)+%;v[m	V)ZG88?ZZ+-Tc.v5{z3mSRwX
|9/Lkkj<6iAsBqΫZcVnuR}CQ>Wt×TDOa~:6O}/@~
-
{SUvW}
eeUV:"ڹ-]
6=*Kt&a{U]ԓwIV|O|ֶ-S]0O)MBO3mwUr׳Xŋrs
/+U\Wx1^LFV,P
*fx	^ǭ[x*
ܽm*VvfENU.Mŕxxx+Xla,],jQUWq>l|Pc*Z!nݩb04!5f|YYܣ@Ǹ=PP`pk[<1/BUp G>`)\c,WR|MTpqq,>3,>s,>
1Tpnd7
^O*o6(WX|7Y|kR8*ӛ3O$S	=/ևh֛)v>^_jx[+o/*<H\Fꝋz'I08{<D1j?	[}j'nuP!=n83kţLY%$Yn&3Ǜ3a2SϤs*7cXMNbXא;Y?ew$}|1.n"a<b<
%b'93?dwdȿӈӉkwոt9y6^A1>ay	%)!1 Q !pKC!0q<<YyǮ0<=G?şCf"ȃB+>814|<Gȴ1諛$hB1~%%=^OS̬XUk;Wo{æjXKdޝ(6w-uf#ݞb*xz!;w^rߙ䄿>wN>xwn~Zo*9?-@Mn>uJuTA	ֵ-fW<pC1aNw$n54L?;[<txZ%;A]e\-#-:S)c
;"S֤@~dd֝Vd{Er=. <&#ht"h#hP(|8%hpCW9u9*_
tҞ35
iIT/vNw,~;gq)ę.ؐ߄!n.3X)lg
;'l~SGrœ+g PK#X	  I  PK  C:U            6   org/bouncycastle/x509/X509V2AttributeCertificate.classX	|&2	6.R4Q0($Da@lv,Y[+**^hR+`uF{޵i/{RKlwq# [D4'qbhuU5p	8\U\|/ԃؗ5n=Ԃ_vWo}^CԃB͚
-ڎʾтMp[DzhXhꈿWzݡnؑZXNKdP$
䰛6ݵ]hзvs/@a.gj5SHyӂpzZ֨7@.L'%01*m{&)6Somހ4@n}=oZF@SlkᨏUGc5P=A
>K7]!о3AV8ܸ|-ץ$Z0Bl^FWV證M@qb,IE-Q2!$įٱ塀Gͤ
lH$%5A}kTk^F	!\[(8/`(Z,sh8hQj%+bCVPxo0+d^Aڢ]lH6EY1%%x;T<V"zV2)R'ڳ	&ԙ#BCg)d a&B=hhe?gA^Û,a};DjHSomZ=TU{w4Fּuc`wm
8gaR*4(]IuupTcTJoy|QrbGm
mGY4m'ám:JNRܤ0N'l.M$rΩ(0?;GfrжpD(ZZ%olk
$)^$_NUۡ3[
 HAL1d;BeU6tͣ6OTjA6_1stڴкi>h&΢PqgVfN9=Ts1F
U\KS3h6,\)sqEFMI_gSF$[ )Xx,9G~&eH$b	3E'#BBqɵ^#	5Bj͏M=%Q.Q!1IrU%HX'qDz
WJlJjk$]>	&IbD@W"(*HQmJl I\/SiǴ174{}O%㡞?ǻZ/>(sW}:6OȄ^SۨwdMy1@YL
8pfiR6)IA_
׏D&ӘDr5g#5~]$=-Bv͓U}AgfONV3$w)hR2ALC?
w9,笜>5۴ħzf;R[ݖ5WJKY^~
ul̸\Uڐaeq:2CO:P?>.'Q32zrVge,%G
_I*zi:JV73PUdΠ*0h`
1q|%*B)^VэP18b10,bPE^Uk*\`:*fT񺊹Y0cyWQ*.b_P_T _RqPqj|9~"|q_SQ*f**[*nTL@PyZ~:/g~
܉
¯{//vJ˷/$1S|d<lQ>/<!ODW)8W4! ϰ}ψbʠP'.1DSLW,_<+2(b0&1,o	ω<3|
b7ϋ2/
x(P(2#rEj& 0g LfpNo $ .:Ļmg2/qo/%~v^ߖVoj4.bE7@O(c>+:
k[jbW vwRgL̯	sDQm,YJ$- gĮF;tvAx{Lu!A:`qM\a[XX=;:kDՀg wMҳqW׼,\d*&cbbVqc[1A9f<d49Ct̑xQR	4{T?,~IL5cR5`L3`ЦD'쌉6B|ۦA0] L^1<= z,t/$96=NK̦-#뺌׳S­G=W%\Rs(#zkh=QهY2Q,(ҷƽp䮾!
~+(yfI|Hd0\!6P@{7Q`J(a*bbk)Lc#6ncGMuLbb^LFɣn晍Rw	bbI`0"=TT@͎D;%V;bbZvov!81"[Е10
1 .8jʘhv<<	u1p?4g@CĹ{;KsqVpO}LFBx'ۃR(6zҼ\W(J8v5aխXS<&.	8xbTĊ~D$%2<G*Zi6;xNҚҷI'Iu4QRwq;&|u
aMЊk᩺<w.;	y|XCo88Nbiϱn[RjOjJJ$޳(/B:qS5VգШȎقj|זBany
>fjL-RN:Z(xZvj)*&ܜTA|/BkԸM%VAQqLJA>,vP͙N~NPna%	a		зI۴=LwM3syIlc8JA
U
!}b*h-3s'YzwITw+˦NUK=$6h1%*љd7qPK    PK  C:U            >   org/bouncycastle/x509/X509V2CRLGenerator$ExtCRLException.classPJ@}kMmң<QX%zR)^q) ?JT0ofvޛϯ h3TNc3+L2T#ip^<pc3Ԇ~ʱS:ti(2HQϥZT3e
C{Pl;>Q"{-U:^DXァ^C
kl4AzK'jZP Y&3lĦ[32jS,[%[Cy|}C{E((%sR忠4/o:kb7PKnpH     PK  C:U            .   org/bouncycastle/x509/X509V2CRLGenerator.classX	xz
FØC&Fl`bC$m* 2&g!GI惡ڦm6
86ݦ;tf+ɲ$L>;yfyo׏ ֋nT1ÍnwڍnL[גV]&PZwiy@I[vo4CZkDLn@8j{FFL4y8yc7a!jl߽]<b*#Q {_pj1O0&Sv&;qzFP-^4k#5/-Ռ`$+5i=GHNy=U6/LYWnǺ@lbv=n
r;ׂ46i g:7٘
Pfnw5ϽHL7wvv(4R3RAh.vkCZW O(d-UzfxZz|`Ԥ<u_;wnq䌆F?ktifho'5-6,DeD&3ԭ͘yCm	=bf*<Vk';@X]ecruEtwŖ?+QphQ*ωSRyL:y4$HTsif DͧnO	S;vkጝ@7Yr**"H߿/0ֿkU}am/q*Ӭ_zA*共F4ak R;CTT^ZgU@[v(ck"u:Ntd(p-)ҰboSø32jR$f[;ۂsM?CxC
s-N;\+D6ae5CO1-EYA2;ө'8vGW
ɷŞhȺ
x֥"0'>I)=k_itx2sg4H%k$J4IX/,q9$6JHJ+qHl,.!EeJl&qv];%vI\bDD	zglϽZZO p+OPYWL%bZj'eWKvn+{p:Ts&<㗤^S mz}ZjK칼m#,;~\ǻ	7kY_[麺"lH_ZtRh*0ivVҖ
k󃺩i,tnˑu9ZZ9+{uC/+jofcq뢵H2 /߶/kgro9x|}yY#=ȡ47SY$	l-4'(2d[S=gVNS)oؐSΜOr:
 ^[O[V~dJ(Ĭyu:-S%l(Īokd.c$"y=SL}gA_d7OX>QE oRjYEoQoU1oS­b>LWQb(WцXwPqYܩb)Rb%V1=*^x%PTeq"|HE/>ܫbc%}\Yx	I6?NrkLE>ɭOظZOOQ|gY|Y<

 O7,~ CC+X\ɸ+}W
WYP5kuQu<{=~
n`#l~,~,~W,~/,
nd%_f8_xBM<{3/y~
?;B1xOY,,VxqpGBithјW)}*/oqӠ=_f x`G Ô e0AUDbI<lIlf3h^QX)nu'5Ps	<C} 'l%llR/Żlp7\E	nO
XaɎ1a+)\
I1-)JF""|Dm^`y2riCLpCoeC88n#@u
y
#gFi,J%lմRz.ͫ2z]#<)݇m:{tGŜu<%qґ).e;žE p;vSc#8@R:եIQ1*f%cXR6D:Ye$''L;u	ёY#\hK:IJ
HtJ>C^G*.2߫phՏxfXLchftRTG@%3,%ѯDWU93rp+6&:'tZ8oab
_5=S܁cfeUgPP"0nqrDA+n; qn,.j[zVGmUn_}`-fN,K3Q]قs).`w]Vݴ ?+h~z`!a/B?s(ҚK[BՋGOmv:kih߈XŌߓQuZJpktD3k9(9E]UL12zZ/Fm/rҜ|y:mAINQo)el,]2r&-_Rp-SoIv4SM]=,쩷")q/)Rҭ5&P]?+Cӻɡ4:>^=-D{GQQ5"|9*eVI=vRoh=AWPKO0i    PK  C:U            6   org/bouncycastle/x509/X509V3CertificateGenerator.classX	xTo2ɛ/$d,I&!	JX$0Ipyyɛq
nbKQKźWD	vբ7͒57{Ͻ{_{ ~;(cvTQm;j쨵mj[d]Q5] א[l5
jqg!==B[~ͯkkNf{>5lk]	T2ѹYz[^"MѣaեTWX:Ft"[;7o$:oW|>IsjP#J(joU!5,zkUh@n˩@WpAӯy!%^5wrՃ!"op0՞4o04ԪZUڀ_Sר&*uW
s7#bn{%BSHT/'%SVꦷ P-.Îpp0AW	D}&0z]U6֧[},@`\n\iYvҀA5bhr+;7z:%t>>dy|qCN k#[l4ފ/fқttZ=J?62BQN	U=;z6И[P.(@tJ
h8PNӑ(I"Jvu(Pf+vE'~12;MW{17Ɠ%ٜtGۣTc]wgbqS27!W9#Vɡh5FfuuR$ic:wYcJw3EcanMJ8PAa>1fsoDi.mjbh&	*=6* ^kyٱi?'̝x{|(WgSO)Y˿3chb5vG
dh;Y[f	$wqڻ(/}ER)*juA7՞`rgƶv*뼪uB_(2Ŕ[:dx rs2-DF);wqmά8ҧ7AYl_lYQ~%Ңt?FtWR\`įt]1S3aLq$匢CڞH$I.:-O*Ft:xMK7SJjv$q@ʥ,~+	ӕgͽb̱<ɑ$}{$~y\H	dPsj{ET҃{nu0CBVHX)a%*MB	.FZ		$\,a
$lI%6K#a^	JLBI.r	WHRU	rt@WB7ei4rd:$bCjξwV;FI<.4e5{bz~$05RYyk=9Ho96aO3xkS=zbzqwLMMJtᄠˀ0?B,l/	ȮEQuf? ']Je9
X`q6Yw%;XS+S5KK	
K&b6}/ϑ-931Y&cg1xk	s2Szzv$&璷\~֋;iTJ2nW+̾9m7Qfݹ*=xgN5ڵ,C3NΌ|;_`sȚgg4[xCg,M[e0_h~S؋˨Q#221us	I,ǢSd,A	Meq>%-,J0\<}13qOYS2ipBF'eшhbq5|^  c'fqeE%y{:oXo8b+/ȸ e4nKExc}?`C?bc?qcq~S~;D>,ށC<z~2Vفm܁_ <p'~]-8pt087WYk,^'A$<e{3?g
$Á#<zD:p4|"!&b*bqXYp(f1E>,`kC
UHދ;ٻ{lz䌥7'/=8',7Ɠr!8!Z|ju#bv(z=BkE%E9Kmâbm𸨈v16bu?*ļ(u}I#✓U>#!&gm!䠔1b&3\W5#X}7Q 2s11>&΍jՉ2Jq	yE~mAdE쀌B	`؄4C)si/Ur+-ddq"Yj8q+L+ns?!.?.N"ǹ̢GT%\.a9*jh:IL5vԹEiec. :XFЍb:ha(FIM"iJrsQlҚt2k>v]q7a={'JJ쁧Wr8}{0V"Q3{}z狣_"-{hլ!ξtx)cXi:lvn"%"fWa?0)Wa<v3i]fM#&p	,}m`cb	_?$ptv;-8nffF	\HϮ-hUڞŹ8HNab{KA{f%eϥGl)`nd gK=cUb#i.392_5ɔ'1if`oWoM#zێQbsIcQ&B-;͸Q\iH3^Hjֳծ7`yj^7&rqz/zC4Z@ϥG/T*5Yڌj',&'FY00:$LwCVr
 nncG[<b/Lߏw=kh`jNtNtq_)w\ljTNReX6"zx/-[A	6l/Lj䟦v}$|Pyߘښi2f)Z/ZӘDU
咖ƱPdfdfd@EVK(<
VdZ+Dl,v/wcYuQL\ȭX,tU %
'YGq+]Q<GE]Um靺*GJлFb'%QqKrfysSt4K 4y3/PKl(
  "  PK
    D:U                org/bouncycastle/x509/extension/PK  C:U            E   org/bouncycastle/x509/extension/AuthorityKeyIdentifierStructure.classVIwG6{p0{  %f0`l6x!Gm1FN dKrOrI^!/,U#YH,CZ]uUխ~pߵ
4#@^R\R*|ec
#sI;ĜtMKN:d	WSeJJ	io ]pR
[%C97k	]r3w+dȜGa.*+ωyZZʦ\ǓeUm5'M"&y/wmǲsfFA;&,)`->oH}'3iBg&[`sIv8mΚ54-i36ʴjؤ|;b;',ߵwf͌UK2{+-\,;
VjgDnژ5o>TbobrZXp07]/E^}ԭ6h|y5ˬivYS{GTfs8t52 ~RTVA
.C|M[(EiS;ĒF5-53CB
^as
!\M8cK{l*UlUm*xDţ*SRCNإb=*TUDTDUt+m!cD/]~H1\nS-=e[̘1d Ķ%S$Fص\:[Es2#bBJB_
bOm4ز#E:f޺*:/1-oBŪ;xǖ4Uy4OFʪlcژY> )>+^̻z-h֡EGVbNBň8cԱtbT1dyOHpERxF::ԱϲJ;bxNC&5,_48YXSp/iU,2,r,|ܧ5bF1\p;	p5^Mo:LO<z`9WpI-_&!Mژ7vGъ&|E-46ѨGo?ptྡoay|R: YqB?y=/b0O(_*1Yıd>"x?Ok~loqk/Dz}սyUར@h@O.brsJ^!ܼfI?RF0[mE?8bPxXOF,&"8%zL{ҁW>7;RV(`-XX;wUUsPK7  K
  PK  C:U            7   org/bouncycastle/x509/extension/X509ExtensionUtil.classVWW
/LFEXZp
Z1
.H[GM&83A}lX?(T37D3w߽{{g?o.0	![)	ŭY$ThjTb{j%ΞPo^FdsKd"0f6P$Typ⺩%j<%q-nqCW-mw	nJXN2B-iz137fzIMSD=xG,┋IqehzL*1N٬]Sc]I	Ϊfg8Op]xҊC;=>-uG#|آeѸ|yhEu"291RZ<
	l#)C|nXvڐQ-ޣ&+bprgSKQ6}vIQxrh{2lU` RpCuKs׭Q+C	F7L鑱jZqSM#ɨ:fg9IEmH$idQlX'epvV/vkAʬ8#x Yif	|tgS(nӄ,H􁓰i!S㎿3vQCcܠhAZvM|%TE6+yG!\V2ꔞHFܢ;򛓍{a5121cXϰa#&/C=CC#|MgA'4\~	[oHW{CܡΤo>X\坉dNz{u1\ޫ)d*@>\윓ƛ;Ly2Nz;qmbfV꺰V/Er!9dڲ ӂ(/-x
\Up/%
cU(UP2-8`3+qBAN*X!J!b1,)n(XT<`N+PpF!PFDrDB	l9ڡ8/Ï2Za؋}bLgd&xV!B<'02BxJƃx\F2.(q!%aXQ<&n`]n tRמ?>lpQ_S{IFw}⌢x tf+	anEΈ ԫIYBߊ	||Íi|Dk6zKJN[d,4>Hp.?myOQWj),i軮/tm
mx/L3OӸܹeIh	|ٕa))ݚjWKpBLD@qѻށ+K/&U\t	|ƕ,87qd?GiYpWҟ>J)EiƛxFcM$K)}_Oa?qs2<R_)F]P`踅3=jgͿpIg#Dk^$PKg    PK
    D:U               org/bouncycastle/x509/util/PK  C:U            0   org/bouncycastle/x509/util/LDAPStoreHelper.classZ	xYKjm'X$/Vl!	vHbB	dHrJPZPJiU{I[^AKhwfy%KR]3̛7oު_8`A	<̓`$FZ	I`IV%,v	>$%c|p	U#Օy5^v
@Uj⢵Y/Z(խFKzjQKup(Jl@p3*Y_ˤ4
mڹe{ƖNY-Z:;ۺv^ܱAԼb͚Z;7jiu[-m;v7oֲsղu'	jն/?"D,]0荫X(qȷ@{	==$8ac8 Se[9Sw`@@"kVc=`K.5!;ZA5fHA=0Ԫ]hlS8}XcLGDZ7#
"=pO`9qpS SHc$+DhrJB*@Bm$MB{*
R_G;̨7"dlEq@(F:&Hb[_m!Ȱ
j7Q[uN5У%bTw,z0$BH@,TqH_v2"TRk1C$IME2c/%>5x
IPgj5&z(ёmx"ޕ&aIYV2&+JVMG|c#d53bhPVj<
yKMK:K#ID^iݩ>;UFNOk:i)W7v自9ǡj١jN;T.FG(I<fErRɗ. ExZ0,Xa؈U;F5$ʪ|MfjD櫂:6Ec1FVjBP37Qvpovk$Dƈq%/O^z߈ü.*fXg[Ζ3D<s\le:c3yMc*iM]agsx :lPR:WsXYRCq3>q3rT=ߣZ#i}z2_>=ln3cYuM	RJ|L%z}_ QШ~ʞXzsPoD#C4G(ک-T)ҮaO kY|k^=l<?ĺ.4Jh5xu!
zZd{X'\j6 y:XxPkd`0A{`p3]4{'wd)]Nj!J|(PS	¾@m$^柛B	R|)Gs_*20o^̇jIAu]mں&PاYO
sז=ٽ9?i}Z.kM_dHd6ӜvE?
RD.Z4٭-}[:%2ϫO:T:eS{B1;䳜ӑĳlŚ鱦,4.B;&E9.Iש4[N>s|iGܤphG:{?G[DFwY4DXƮ)23-~/?kgF'˧Y{ϓQMhEf3piÏ_,tL,`f&KLYt)1`U-=U͈3y;3[ŴcMn2l![H2f 6l1uS8ҨkrSh8H^MY
5W ֏;1y ;QD=爩+n|ɏӣJÌ;!w9.juXD=6NJq3/
3|.4_7\h[ Fn&%:j"<)E8"S"i>!3"0"³"IDω/pL"|ZψY^a\"|Nϋ(DxI/M%·E{"|_C~$E?g"\_WdL/R<Yv1Jےd]˟tk,@խYiM/˙WD^@i&gJ3gֲDZDC#,ruSg%)37;e[beOjhY:Q$7dAtI""?QR\	gSf5Sc|24ŷlˏOkVl7f\LSX9.b8?StR3Li<K2Q?#7S-=Wf̎\fOsfsjdu:Mt_my*oDl2L?`}Ak]FGYt"F3c- 9QXmGuf'DfGEvMxI<gjOdhѾfR-Ar3h3:8\]-@3P૰RXЄ5W`g
x(+
LWeܬT
P@'V(p#_g؁+/Pư
t3* 0C!0 !70`xN;bxf=2!3p_a+pnP8)p#6*^86)`xíجzHFpbvfaxoKxw
(ܪxW3܄
	+C\
w(
SBqj1-
{3
*p)*І}
t`HvܧaQ`F؈N\2	A2Lm2~BF c`f0aaS1<Ïe6$d!En8W*1U|(78k:Vyrs!p+1K2e#˹V_q1J%kaxýexagxA0#2|1`b Ç>2|I3ax(#XVwȸ˸ܬf%7Y*nVeaee/pߖy_d8-x;eep7qʸ.7}'?edG?1c;?\(3.,w2|.72Ånu;d9x~C߸v0]	0o	72@kxK.0g87`kH v9e2F"j9ǵl5큁mŤ  |cPMD+Wi<XM%
 ^ci]7=]EZI)tԪ :#xv+#B3x!Qq% [ǰ{Du9JwxnS~_6"w^)9굹Rni;-8
KiMr/Sގa!om\GaAqÂkXpۄ#Ŷa<s`먟E^lAg=um=81ʇaPhQ'xY'A}^}Xyk'crЦ° Ni>碵xV!8
"SPUE1pw"{pZކ෍a;vmTxacnn#aCo;.9J1*GCOHKa'thV3D"Vmhmɝ&96Dɳ ~<$Wߎ~ZԘp1,EB.nڶrZ%c6v;=V\9"A{mn#ԍo nq");qX5ZgD#MxPq9['m>8@n9W~dנΓb"u|L1Hguk4-7"Pd&DV5L#KVHi)3FL3s~.Բ(EIJ2?!)Py{$\ǡ#uQf@o]kalk&mLqCǙ8"2ÖCPLw[eWrˆ].])3ۥ[nBxZx!B<.(q1iiuU>
M|՘l#(wp^NL@3 sɭ>( +9ƞ7ўYp>q(hQ^=NWM3~.FGxw%= HdN<C#[QbhV5͊eɣ[-]]tNEg]y&u jӺ%a.NHdP>	Bi]҄?A{TAMEp8=/+/iPccNWWcWB~-vR䋦vؖB@V;4לn\_fv[47S&['CZ869#Bb#t/vDBjΣs=NڱօI?0+hC6c*
-.}
F>Ϩp?yQF1y1
kCϰ#B= =0!Xwuq<~Z_!DJhXG9<f_$xz<AwEt`)'w*<5NC?
`3NA!H"R@{D\D0_8	E|o8& 
8Zp3G^=5"` uNqrzfKqpmzcؓ)MKq)N;;T1g4)ʩ)2:LMqMmy)g$ǰz;XFo1a	V!d~&"%rcʻKjM)*F(@qєʃ(%DF(tj3h:
Nב9N6kWmf=']'nIz	kt13vYJ^+,B?^iy]`{GlQF}9Zo]6"o)={>*p֓jWQڤ8Q^&"f[$ *"zuXY%H"q9:|!SF~!jMפH|)!G8nJEo-@LvSCYP!"UYLE"STT$MMcz_n]Y$^fo2EMJ%-_?)i$8Uz,7c+-_du+BηHlsBY":ĵ+f*č;6^¿_>Jz(
#`c+$IJC!P1Gkp<Δv#ћ½̄B3"~
;OPaD.q *hϑ:4OoLLIJd!lQr*el"
&Up)l݌
; s,,T7uV$9(V hj딱jgbGN*
*^icXMi?2Kǰ|x*ξd('H%țK	Z0֚Mt,֚"A=KA]4=i|uVJ4SE8GxPK>.  @  PK  C:U            -   org/bouncycastle/x509/util/StreamParser.class@R$IMB	iڬV[Ws JL%D|3f
B7g)L#
Z 3"
/̭V碰{k<ɕ!Lڌh]d,%ȃF
GoLk
VB;ɤ OPK>Ѯ     PK  C:U            7   org/bouncycastle/x509/util/StreamParsingException.classuJ@KKkRa*B*n;[CIg$h}+EpP!vr8;	]wvʍ"4&ȹܿR$b{!,s[)KXNEt*]Jf6N8?8죜jڂO0;g BDpF B	Av](yUe$6w=:/@	TuKG<k PKX   _  PK   D:U@: #                 META-INF/MANIFEST.MF  PK   D:UeaZC 
               META-INF/BC2048KE.SFPK   D:U$&  	"               gd META-INF/BC2048KE.DSAPK
 
    D:U                         ~ META-INF/versions/9/PK
 
    D:U                         ~ META-INF/versions/9/org/PK
 
    D:U            %              META-INF/versions/9/org/bouncycastle/PK
 
    D:U            ,             ` META-INF/versions/9/org/bouncycastle/crypto/PK   D:U    I              META-INF/versions/9/org/bouncycastle/crypto/AsymmetricCipherKeyPair.classPK   D:Uч5   d  D              META-INF/versions/9/org/bouncycastle/crypto/DerivationFunction.classPK   D:U3>      8              META-INF/versions/9/org/bouncycastle/crypto/Digest.classPK   D:ULb    R             R META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$Property.classPK   D:U8=  .  I             4 META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar.classPK
 
    D:U            8              META-INF/versions/9/org/bouncycastle/crypto/constraints/PK   D:U~햢    V              META-INF/versions/9/org/bouncycastle/crypto/constraints/DefaultServiceProperties.classPK   D:U\J  2  E             
 META-INF/versions/9/org/bouncycastle/crypto/BufferedBlockCipher.classPK   D:UĦZ~    I             V META-INF/versions/9/org/bouncycastle/crypto/KeyGenerationParameters.classPK   D:Uw(  P  J             K META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesPermission.classPK   D:UL#n      F              META-INF/versions/9/org/bouncycastle/crypto/SkippingStreamCipher.classPK
 
    D:U            2              META-INF/versions/9/org/bouncycastle/crypto/modes/PK   D:UrW    F             @ META-INF/versions/9/org/bouncycastle/crypto/modes/SICBlockCipher.classPK   D:U
-}   j  B             л META-INF/versions/9/org/bouncycastle/crypto/MultiBlockCipher.classPK   D:Uw#   Y  I             ( META-INF/versions/9/org/bouncycastle/crypto/CryptoServiceProperties.classPK   D:UV    I             y META-INF/versions/9/org/bouncycastle/crypto/DefaultMultiBlockCipher.classPK   D:UHy      F              META-INF/versions/9/org/bouncycastle/crypto/DerivationParameters.classPK
 
    D:U            4              META-INF/versions/9/org/bouncycastle/crypto/engines/PK   D:UF(  G  C              META-INF/versions/9/org/bouncycastle/crypto/engines/AESEngine.classPK   D:U{$:    ?             P META-INF/versions/9/org/bouncycastle/crypto/engines/Utils.classPK   D:U,rߤ      @              META-INF/versions/9/org/bouncycastle/crypto/SkippingCipher.classPK
 
    D:U            4             	 META-INF/versions/9/org/bouncycastle/crypto/digests/PK   D:U۴IU
    G             [ META-INF/versions/9/org/bouncycastle/crypto/digests/SHA512tDigest.classPK   D:Ud
  V  F             % META-INF/versions/9/org/bouncycastle/crypto/digests/SHA256Digest.classPK   D:Uk@      I              META-INF/versions/9/org/bouncycastle/crypto/digests/EncodableDigest.classPK   D:UUC
  u	  F              META-INF/versions/9/org/bouncycastle/crypto/digests/CSHAKEDigest.classPK   D:U  
  F             
 META-INF/versions/9/org/bouncycastle/crypto/digests/SHA384Digest.classPK   D:UI;  {  X              META-INF/versions/9/org/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF.classPK   D:U>v  ,  E              META-INF/versions/9/org/bouncycastle/crypto/digests/SHAKEDigest.classPK   D:Uw
    F              META-INF/versions/9/org/bouncycastle/crypto/digests/SHA224Digest.classPK   D:U$    F             ) META-INF/versions/9/org/bouncycastle/crypto/digests/KeccakDigest.classPK   D:UVeQ.    D             C; META-INF/versions/9/org/bouncycastle/crypto/digests/SHA3Digest.classPK   D:U3	  q  D             ? META-INF/versions/9/org/bouncycastle/crypto/digests/SHA1Digest.classPK   D:Uo  	  G             >J META-INF/versions/9/org/bouncycastle/crypto/digests/GeneralDigest.classPK   D:UJ    Q             "P META-INF/versions/9/org/bouncycastle/crypto/digests/Utils$DefaultProperties.classPK   D:U*  e  ?             R META-INF/versions/9/org/bouncycastle/crypto/digests/Utils.classPK   D:U8)lO    B             T META-INF/versions/9/org/bouncycastle/crypto/digests/XofUtils.classPK   D:Uaz.  :
  F             W META-INF/versions/9/org/bouncycastle/crypto/digests/SHA512Digest.classPK   D:Uq  (  C             (] META-INF/versions/9/org/bouncycastle/crypto/digests/MD5Digest.classPK   D:UI+    D             Pj META-INF/versions/9/org/bouncycastle/crypto/digests/LongDigest.classPK   D:UuL^      K             z META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesConstraints.classPK
 
    D:U            1             { META-INF/versions/9/org/bouncycastle/crypto/macs/PK   D:Uoy    ;             { META-INF/versions/9/org/bouncycastle/crypto/macs/HMac.classPK   D:U\R   ?  R             ʄ META-INF/versions/9/org/bouncycastle/crypto/AsymmetricCipherKeyPairGenerator.classPK
 
    D:U            3              META-INF/versions/9/org/bouncycastle/crypto/params/PK   D:U6G?  #  O             \ META-INF/versions/9/org/bouncycastle/crypto/params/DHValidationParameters.classPK   D:UQ    N             ߈ META-INF/versions/9/org/bouncycastle/crypto/params/ECPublicKeyParameters.classPK   D:U>  O  I              META-INF/versions/9/org/bouncycastle/crypto/params/ParametersWithIV.classPK   D:UEt  3  E             Ќ META-INF/versions/9/org/bouncycastle/crypto/params/KeyParameter.classPK   D:Ua^Vj  <  K              META-INF/versions/9/org/bouncycastle/crypto/params/ECDomainParameters.classPK   D:U3^v  ;  F              META-INF/versions/9/org/bouncycastle/crypto/params/MGFParameters.classPK   D:UW    O              META-INF/versions/9/org/bouncycastle/crypto/params/ECPrivateKeyParameters.classPK   D:Uq?j  9  P             X META-INF/versions/9/org/bouncycastle/crypto/params/ECNamedDomainParameters.classPK   D:U*U "    O             @ META-INF/versions/9/org/bouncycastle/crypto/params/AsymmetricKeyParameter.classPK   D:U6hDT    P             ߝ META-INF/versions/9/org/bouncycastle/crypto/params/DSAValidationParameters.classPK   D:Uc*^\    H              META-INF/versions/9/org/bouncycastle/crypto/params/ECKeyParameters.classPK   D:UzEW    E              META-INF/versions/9/org/bouncycastle/crypto/params/DHParameters.classPK   D:U-!$    F              META-INF/versions/9/org/bouncycastle/crypto/params/DSAParameters.classPK   D:Uyu      B              META-INF/versions/9/org/bouncycastle/crypto/CipherParameters.classPK
 
    D:U            /             j META-INF/versions/9/org/bouncycastle/crypto/ec/PK   D:U@dk  7  I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$25.classPK   D:U
    I             ӯ META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$28.classPK   D:UJpW    H             4 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$7.classPK   D:UJ    I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$20.classPK   D:UK(    I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$15.classPK   D:Ue    H             & META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$5.classPK   D:U،Ak  S  I             o META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$13.classPK   D:U&^>    I             Q META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$21.classPK   D:UmG  >  I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$32.classPK   D:U  O  I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$26.classPK   D:UA{  k  I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$31.classPK   D:UD  $  F              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves.classPK   D:U vj  7  I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$23.classPK   D:UZXt  g  H              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$6.classPK   D:U0+&    I               META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$17.classPK   D:UV`@    I             m META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$29.classPK   D:UW_    I             $ META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$18.classPK   D:U~v    I             ) META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$24.classPK   D:U)    I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$22.classPK   D:UK1    I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$16.classPK   D:U_    I             F META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$11.classPK   D:U@3;    I              META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$27.classPK   D:UA#D    I             N	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$14.classPK   D:Uy    H             	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$4.classPK   D:U&"1    I             		 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$12.classPK   D:Uk    H             
	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$8.classPK   D:UJL3    I             	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$10.classPK   D:U5{  :  H             	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$1.classPK   D:Ut!+    I             	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$30.classPK   D:U3    H             U	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$9.classPK   D:U?c  2  H              	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$3.classPK   D:UN    H             	%	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$2.classPK   D:U    I             H(	 META-INF/versions/9/org/bouncycastle/crypto/ec/CustomNamedCurves$19.classPK
 
    D:U            1             +	 META-INF/versions/9/org/bouncycastle/crypto/util/PK   D:U_[   B  K             +	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$Cloner.classPK   D:U]F_\    F             -	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$2.classPK   D:U.^    F             .	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$4.classPK   D:U1_    F             0	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$7.classPK   D:Usz`    G             2	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$11.classPK   D:U`    F             h4	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$9.classPK   D:U'G    D             <6	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory.classPK   D:U]
^    F             q<	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$6.classPK   D:U]y8_    G             C>	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$10.classPK   D:U۟^    F             @	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$3.classPK   D:Ur[    F             A	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$1.classPK   D:UoX`    G             C	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$12.classPK   D:U_    F             E	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$5.classPK   D:U2 _    F             `G	 META-INF/versions/9/org/bouncycastle/crypto/util/DigestFactory$8.classPK   D:U/J  c  K             3I	 META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$4.classPK   D:Ueg7    =             wK	 META-INF/versions/9/org/bouncycastle/crypto/BlockCipher.classPK   D:U^/   R  H             M	 META-INF/versions/9/org/bouncycastle/crypto/RuntimeCryptoException.classPK   D:U$)    K             |N	 META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$2.classPK   D:Um(PGA  %  A             P	 META-INF/versions/9/org/bouncycastle/crypto/CryptoException.classPK   D:U;P_    L             Q	 META-INF/versions/9/org/bouncycastle/crypto/InvalidCipherTextException.classPK   D:U#	E    K             cS	 META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$1.classPK   D:U~-      F             !U	 META-INF/versions/9/org/bouncycastle/crypto/SecureRandomProvider.classPK
 
    D:U            7             ,V	 META-INF/versions/9/org/bouncycastle/crypto/generators/PK   D:Uؗ  7  O             V	 META-INF/versions/9/org/bouncycastle/crypto/generators/MGF1BytesGenerator.classPK   D:Uڑzg  .  C             [	 META-INF/versions/9/org/bouncycastle/crypto/StreamBlockCipher.classPK   D:Ua      @             ]	 META-INF/versions/9/org/bouncycastle/crypto/ExtendedDigest.classPK   D:Uœ    F             ^	 META-INF/versions/9/org/bouncycastle/crypto/CryptoServicePurpose.classPK   D:U}E  
  5             Fb	 META-INF/versions/9/org/bouncycastle/crypto/Mac.classPK   D:Uxx   "  G             c	 META-INF/versions/9/org/bouncycastle/crypto/OutputLengthException.classPK   D:U\@/ɦ      5             6e	 META-INF/versions/9/org/bouncycastle/crypto/Xof.classPK   D:U/   )  S             ?f	 META-INF/versions/9/org/bouncycastle/crypto/CryptoServiceConstraintsException.classPK   D:U'    >             g	 META-INF/versions/9/org/bouncycastle/crypto/StreamCipher.classPK   D:U4<Xk  n  K             /i	 META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$3.classPK   D:U׮   `  E             k	 META-INF/versions/9/org/bouncycastle/crypto/DataLengthException.classPK
 
    D:U            )             zl	 META-INF/versions/9/org/bouncycastle/jce/PK
 
    D:U            4             l	 META-INF/versions/9/org/bouncycastle/jce/interfaces/PK   D:U甆<   	  E             m	 META-INF/versions/9/org/bouncycastle/jce/interfaces/ECPublicKey.classPK   D:U*      ?             @n	 META-INF/versions/9/org/bouncycastle/jce/interfaces/ECKey.classPK   D:U       F             Ho	 META-INF/versions/9/org/bouncycastle/jce/interfaces/ECPrivateKey.classPK
 
    D:U            2             vp	 META-INF/versions/9/org/bouncycastle/jce/provider/PK   D:UD    ]             p	 META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService.classPK   D:Udr    N             7s	 META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProvider$1.classPK   D:UC5	    Y             %u	 META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration.classPK   D:U{  w=  L             ~	 META-INF/versions/9/org/bouncycastle/jce/provider/BouncyCastleProvider.classPK
 
    D:U            .             6	 META-INF/versions/9/org/bouncycastle/jce/spec/PK   D:U62=    C             	 META-INF/versions/9/org/bouncycastle/jce/spec/ECParameterSpec.classPK   D:U3    M             0	 META-INF/versions/9/org/bouncycastle/jce/spec/ECNamedCurveParameterSpec.classPK   D:U$    D             G	 META-INF/versions/9/org/bouncycastle/jce/spec/ECNamedCurveSpec.classPK   D:U`    H             8	 META-INF/versions/9/org/bouncycastle/jce/ECGOST3410NamedCurveTable.classPK
 
    D:U            *             z	 META-INF/versions/9/org/bouncycastle/util/PK   D:UQR    A             §	 META-INF/versions/9/org/bouncycastle/util/BigIntegers$Cache.classPK   D:UX2     :             	 META-INF/versions/9/org/bouncycastle/util/StringList.classPK   D:U'Ċ  r  <             E	 META-INF/versions/9/org/bouncycastle/util/Properties$2.classPK   D:Unls    ;             1	 META-INF/versions/9/org/bouncycastle/util/BigIntegers.classPK   D:U$>   ;  8             |	 META-INF/versions/9/org/bouncycastle/util/Iterable.classPK   D:US&    ?             	 META-INF/versions/9/org/bouncycastle/util/Arrays$Iterator.classPK   D:U1=     F             5	 META-INF/versions/9/org/bouncycastle/util/MemoableResetException.classPK   D:Uc;    8             ~	 META-INF/versions/9/org/bouncycastle/util/Integers.classPK
 
    D:U            -             	 META-INF/versions/9/org/bouncycastle/util/io/PK   D:U Uޑ    :             	 META-INF/versions/9/org/bouncycastle/util/io/Streams.classPK   D:U3Ep     J             '	 META-INF/versions/9/org/bouncycastle/util/io/StreamOverflowException.classPK
 
    D:U            3             u	 META-INF/versions/9/org/bouncycastle/util/encoders/PK   D:UĈ[   z  @             	 META-INF/versions/9/org/bouncycastle/util/encoders/Encoder.classPK   D:U  
  <             #	 META-INF/versions/9/org/bouncycastle/util/encoders/Hex.classPK   D:Uyl#    I             v	 META-INF/versions/9/org/bouncycastle/util/encoders/EncoderException.classPK   D:Uݦ,    =             	 META-INF/versions/9/org/bouncycastle/util/encoders/UTF8.classPK   D:Ua  B
  C             	 META-INF/versions/9/org/bouncycastle/util/encoders/HexEncoder.classPK   D:U^զ$    I             	 META-INF/versions/9/org/bouncycastle/util/encoders/DecoderException.classPK   D:UYL      8             	 META-INF/versions/9/org/bouncycastle/util/Memoable.classPK   D:U <  x  <             	 META-INF/versions/9/org/bouncycastle/util/Properties$1.classPK   D:UHӀ  .  6             q	 META-INF/versions/9/org/bouncycastle/util/Arrays.classPK   D:U=@    :             	 META-INF/versions/9/org/bouncycastle/util/Exceptions.classPK   D:U<Σ  c  4             M	 META-INF/versions/9/org/bouncycastle/util/Pack.classPK   D:UR҅    9             R
 META-INF/versions/9/org/bouncycastle/util/Strings$1.classPK   D:Un*  N  F             >
 META-INF/versions/9/org/bouncycastle/util/Strings$StringListImpl.classPK   D:U2      9             
 META-INF/versions/9/org/bouncycastle/util/Encodable.classPK   D:U;  
  :             
 META-INF/versions/9/org/bouncycastle/util/Properties.classPK   D:UNt	    7             
 META-INF/versions/9/org/bouncycastle/util/Strings.classPK   D:UUL    7             9
 META-INF/versions/9/org/bouncycastle/util/Objects.classPK   D:UD;y  I  ;             
 META-INF/versions/9/org/bouncycastle/util/Fingerprint.classPK
 
    D:U            *             4 
 META-INF/versions/9/org/bouncycastle/asn1/PK   D:U<!.D    <             | 
 META-INF/versions/9/org/bouncycastle/asn1/DERT61String.classPK   D:U4    >             $
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence$1.classPK   D:UZ+Okc    A             ]&
 META-INF/versions/9/org/bouncycastle/asn1/ASN1NumericString.classPK   D:UPQ    7             /.
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Tag.classPK   D:U-\If3    5             /
 META-INF/versions/9/org/bouncycastle/asn1/DLSet.classPK   D:U鎗    B             {4
 META-INF/versions/9/org/bouncycastle/asn1/DERUniversalString.classPK   D:UT
  M  =             8
 META-INF/versions/9/org/bouncycastle/asn1/ASN1BitString.classPK   D:U	2k    L             wF
 META-INF/versions/9/org/bouncycastle/asn1/BERApplicationSpecificParser.classPK   D:U]`z    C             \H
 META-INF/versions/9/org/bouncycastle/asn1/ASN1GraphicString$1.classPK
 
    D:U            /             GJ
 META-INF/versions/9/org/bouncycastle/asn1/misc/PK   D:Ukݨ  J
  J             J
 META-INF/versions/9/org/bouncycastle/asn1/misc/MiscObjectIdentifiers.classPK   D:U0>v  	  ?             Q
 META-INF/versions/9/org/bouncycastle/asn1/DERTaggedObject.classPK   D:UH  L  :             V
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Object.classPK   D:Uex    ?             Y
 META-INF/versions/9/org/bouncycastle/asn1/ASN1T61String$1.classPK   D:Uρ5   W  M             [
 META-INF/versions/9/org/bouncycastle/asn1/ASN1ApplicationSpecificParser.classPK   D:Uf־t    E             ]
 META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalString$1.classPK   D:U𡟶    B             ^
 META-INF/versions/9/org/bouncycastle/asn1/DERGeneralizedTime.classPK   D:Ud0t
  @  D             c
 META-INF/versions/9/org/bouncycastle/asn1/DEROctetStringParser.classPK   D:Uf}  `  >             f
 META-INF/versions/9/org/bouncycastle/asn1/DEROctetString.classPK   D:Ul1  F  K             i
 META-INF/versions/9/org/bouncycastle/asn1/IndefiniteLengthInputStream.classPK   D:Um3)    :             1m
 META-INF/versions/9/org/bouncycastle/asn1/DLExternal.classPK   D:U@   N  =             p
 META-INF/versions/9/org/bouncycastle/asn1/ASN1SetParser.classPK   D:U]\      :             r
 META-INF/versions/9/org/bouncycastle/asn1/ASN1String.classPK   D:UénZ    9             r
 META-INF/versions/9/org/bouncycastle/asn1/DLFactory.classPK   D:Uoqd     C             8u
 META-INF/versions/9/org/bouncycastle/asn1/ASN1BitStringParser.classPK   D:U@$  "  =             v
 META-INF/versions/9/org/bouncycastle/asn1/ASN1IA5String.classPK   D:U,w*~  
  A             6~
 META-INF/versions/9/org/bouncycastle/asn1/ASN1OctetString$1.classPK   D:Ug    D             #
 META-INF/versions/9/org/bouncycastle/asn1/DLTaggedObjectParser.classPK   D:U}8  @  @             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1StreamParser.classPK   D:Ujl    <             e
 META-INF/versions/9/org/bouncycastle/asn1/DERBMPString.classPK   D:U*h\x    C             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1NumericString$1.classPK   D:UkY)>`  -  8             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Type.classPK   D:U&GcQ    <             M
 META-INF/versions/9/org/bouncycastle/asn1/BERSetParser.classPK   D:Um    @             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1OutputStream.classPK   D:U5  J  B             

 META-INF/versions/9/org/bouncycastle/asn1/BERBitStringParser.classPK   D:U|t    :             @
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Null$1.classPK   D:URwѼ<    ;             
 META-INF/versions/9/org/bouncycastle/asn1/DLSetParser.classPK   D:U%  L
  A             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1GraphicString.classPK   D:UU  =+  @             M
 META-INF/versions/9/org/bouncycastle/asn1/ASN1TaggedObject.classPK   D:UQa%-  m  ?             |
 META-INF/versions/9/org/bouncycastle/asn1/DEROutputStream.classPK   D:U/K$
    ;             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Integer.classPK   D:UBi  e	  ?             
 META-INF/versions/9/org/bouncycastle/asn1/BERTaggedObject.classPK   D:U02    @             y
 META-INF/versions/9/org/bouncycastle/asn1/DERGeneralString.classPK   D:Uئ    A             
 META-INF/versions/9/org/bouncycastle/asn1/DERExternalParser.classPK   D:Uo    B             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1VideotexString.classPK   D:UU+\    C             )
 META-INF/versions/9/org/bouncycastle/asn1/ASN1PrintableString.classPK   D:U?
  $  D             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectIdentifier.classPK   D:U<ע:  
  ;             J
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Boolean.classPK   D:Uv w   X  B             F META-INF/versions/9/org/bouncycastle/asn1/ASN1SequenceParser.classPK   D:U1(x    ?              META-INF/versions/9/org/bouncycastle/asn1/ASN1BMPString$1.classPK   D:U9    F             x META-INF/versions/9/org/bouncycastle/asn1/BERApplicationSpecific.classPK   D:U
4
    ;              META-INF/versions/9/org/bouncycastle/asn1/ASN1UTCTime.classPK   D:U(*  j  >             F META-INF/versions/9/org/bouncycastle/asn1/DLOutputStream.classPK   D:U?4    :              META-INF/versions/9/org/bouncycastle/asn1/DLSequence.classPK   D:U>  M
  >              META-INF/versions/9/org/bouncycastle/asn1/ASN1UTF8String.classPK   D:UrsG  #
  D             N  META-INF/versions/9/org/bouncycastle/asn1/ConstructedBitStream.classPK
 
    D:U            .             & META-INF/versions/9/org/bouncycastle/asn1/sec/PK   D:UVW/    E             S& META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$20.classPK   D:U*;/  y  E             ) META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$21.classPK   D:UX    E             .. META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$33.classPK   D:Uf    E             -3 META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$11.classPK   D:U	`     E             [7 META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$27.classPK   D:U|~  g!  B             .; META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves.classPK   D:U>  P  E             0H META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$19.classPK   D:UB>  K  D             SL META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$2.classPK   D:U9U    D             WP META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$9.classPK   D:UA%    E             [T META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$13.classPK   D:U`E1  +  E             X META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$31.classPK   D:UJ  '  E             G] META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$16.classPK   D:U\$  6  H             <a META-INF/versions/9/org/bouncycastle/asn1/sec/SECObjectIdentifiers.classPK   D:Uz  H  E             g META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$22.classPK   D:U}=o$    E             k META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$14.classPK   D:U?R  P  E             p META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$18.classPK   D:U|ڪ    E             t META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$30.classPK   D:U2g  8  E             x META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$28.classPK   D:U%z  

  D             | META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$5.classPK   D:UcMܽ  
  E              META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$10.classPK   D:Ust  
  E              META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$12.classPK   D:Up'  M
  D             6 META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$8.classPK   D:U    D             < META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$6.classPK   D:U    E             @ META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$24.classPK   D:U*_    E             { META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$23.classPK   D:Uc    E              META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$29.classPK   D:UH  {  E             ! META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$26.classPK   D:U`K     E             R META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$32.classPK   D:U#p  X  D             Ū META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$3.classPK   D:U    D              META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$7.classPK   D:UI]3i  	  E              META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$15.classPK   D:U"  '  E              META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$17.classPK   D:Uk\o  @  D             y META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$1.classPK   D:U	 U    E             Z META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$25.classPK   D:U&6֘  c  D             " META-INF/versions/9/org/bouncycastle/asn1/sec/SECNamedCurves$4.classPK   D:U|>  
  D             , META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectDescriptor.classPK   D:U$  
  A              META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralString.classPK   D:U%N{    A             o META-INF/versions/9/org/bouncycastle/asn1/ASN1RelativeOID$1.classPK
 
    D:U            .             Y META-INF/versions/9/org/bouncycastle/asn1/iso/PK   D:U'3'    K              META-INF/versions/9/org/bouncycastle/asn1/iso/ISOIECObjectIdentifiers.classPK   D:ULa  Q  7             E META-INF/versions/9/org/bouncycastle/asn1/DERNull.classPK   D:U  g  9              META-INF/versions/9/org/bouncycastle/asn1/ASN1Set$2.classPK   D:Uڡx  J  F              META-INF/versions/9/org/bouncycastle/asn1/ASN1TaggedObjectParser.classPK   D:UX    C              META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalString.classPK   D:Uw    @             I META-INF/versions/9/org/bouncycastle/asn1/ASN1UTF8String$1.classPK   D:Url3  
  <             . META-INF/versions/9/org/bouncycastle/asn1/DERBitString.classPK   D:Ui*0    =              META-INF/versions/9/org/bouncycastle/asn1/ASN1Exception.classPK   D:U8-(      <             f META-INF/versions/9/org/bouncycastle/asn1/ASN1Encoding.classPK
 
    D:U            .              META-INF/versions/9/org/bouncycastle/asn1/oiw/PK   D:UgP  v  H              META-INF/versions/9/org/bouncycastle/asn1/oiw/OIWObjectIdentifiers.classPK   D:UT~X  	
  A              META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalType.classPK   D:UW*&    ?             ^ META-INF/versions/9/org/bouncycastle/asn1/ASN1BitString$1.classPK   D:Uew    @              META-INF/versions/9/org/bouncycastle/asn1/DERGraphicString.classPK   D:U?>	  i  =              META-INF/versions/9/org/bouncycastle/asn1/ASN1Primitive.classPK   D:UF  .  ?              META-INF/versions/9/org/bouncycastle/asn1/ASN1InputStream.classPK   D:U6_    7              META-INF/versions/9/org/bouncycastle/asn1/BERTags.classPK   D:Uett[  	  I              META-INF/versions/9/org/bouncycastle/asn1/DefiniteLengthInputStream.classPK   D:U
    N             " META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle.classPK   D:U#    8             $ META-INF/versions/9/org/bouncycastle/asn1/DateUtil.classPK   D:U2x    =             ]) META-INF/versions/9/org/bouncycastle/asn1/ASN1UTCTime$1.classPK   D:U˘   "  E             @+ META-INF/versions/9/org/bouncycastle/asn1/ASN1OctetStringParser.classPK   D:U!|    D             z, META-INF/versions/9/org/bouncycastle/asn1/ASN1VideotexString$1.classPK   D:Ut~}    E             h. META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralizedTime$1.classPK
 
    D:U            -             X0 META-INF/versions/9/org/bouncycastle/asn1/x9/PK   D:U/    D             0 META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$9.classPK   D:U|    E             D4 META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$23.classPK   D:Uo  A  A             8 META-INF/versions/9/org/bouncycastle/asn1/x9/X9FieldElement.classPK   D:Ucc^  ]  E             ; META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$21.classPK   D:UYt<    E             0? META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$11.classPK   D:Uazx8	  ;  B             B META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves.classPK   D:U`    D             M META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$7.classPK   D:U9    D             bQ META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$6.classPK   D:U\6E~  U
  D             U META-INF/versions/9/org/bouncycastle/asn1/x9/ECNamedCurveTable.classPK   D:U_O  h  :             [ META-INF/versions/9/org/bouncycastle/asn1/x9/X9Curve.classPK   D:U
t{t    A             c META-INF/versions/9/org/bouncycastle/asn1/x9/X9ECParameters.classPK   D:Ud    E             l META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$17.classPK   D:Ums  A  E             pp META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$12.classPK   D:U"D    E             ot META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$14.classPK   D:Uf    E             &x META-INF/versions/9/org/bouncycastle/asn1/x9/X9IntegerConverter.classPK   D:Uz@  	  A             z META-INF/versions/9/org/bouncycastle/asn1/x9/X962Parameters.classPK   D:Uҷ_  g  E             < META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$22.classPK   D:UB'Di    D             z META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$2.classPK   D:Upad_    E             U META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$16.classPK   D:U`  -  G             ' META-INF/versions/9/org/bouncycastle/asn1/x9/X9ECParametersHolder.classPK   D:UB  ?  <             D META-INF/versions/9/org/bouncycastle/asn1/x9/X9ECPoint.classPK   D:U]|h  '  E              META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$20.classPK   D:U㥐i    D              META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$3.classPK   D:U_%4    E              META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$15.classPK   D:Ur    D             1 META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$5.classPK   D:U4Ȥ\    E             o META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$18.classPK   D:U8    E             > META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$13.classPK   D:UM;].    E              META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$10.classPK   D:U+    D              META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$4.classPK   D:Uu<g  :	  <             ¯ META-INF/versions/9/org/bouncycastle/asn1/x9/X9FieldID.classPK   D:UPGh    D              META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$1.classPK   D:U  ,  D             m META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$8.classPK   D:U#&    E             b META-INF/versions/9/org/bouncycastle/asn1/x9/X962NamedCurves$19.classPK   D:Ujg6    F             U META-INF/versions/9/org/bouncycastle/asn1/x9/X9ObjectIdentifiers.classPK   D:U9=    @             U META-INF/versions/9/org/bouncycastle/asn1/DLSequenceParser.classPK
 
    D:U            3               META-INF/versions/9/org/bouncycastle/asn1/cryptlib/PK   D:Uþ    R             Q META-INF/versions/9/org/bouncycastle/asn1/cryptlib/CryptlibObjectIdentifiers.classPK
 
    D:U            /             h META-INF/versions/9/org/bouncycastle/asn1/x509/PK   D:Uéc  
  H              META-INF/versions/9/org/bouncycastle/asn1/x509/AlgorithmIdentifier.classPK   D:U["W  >
  I              META-INF/versions/9/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.classPK   D:U/a-    ;             \ META-INF/versions/9/org/bouncycastle/asn1/DLBitString.classPK   D:U.u  %
  E              META-INF/versions/9/org/bouncycastle/asn1/BERTaggedObjectParser.classPK
 
    D:U            -              META-INF/versions/9/org/bouncycastle/asn1/gm/PK   D:Ufހ  '  B             % META-INF/versions/9/org/bouncycastle/asn1/gm/GMNamedCurves$2.classPK   D:Uq  -  @              META-INF/versions/9/org/bouncycastle/asn1/gm/GMNamedCurves.classPK   D:U    F              META-INF/versions/9/org/bouncycastle/asn1/gm/GMObjectIdentifiers.classPK   D:UvOo    B              META-INF/versions/9/org/bouncycastle/asn1/gm/GMNamedCurves$1.classPK
 
    D:U            -              META-INF/versions/9/org/bouncycastle/asn1/bc/PK   D:U+  #  F             > META-INF/versions/9/org/bouncycastle/asn1/bc/BCObjectIdentifiers.classPK
 
    D:U            0             
 META-INF/versions/9/org/bouncycastle/asn1/anssi/PK   D:U4  
  F             
 META-INF/versions/9/org/bouncycastle/asn1/anssi/ANSSINamedCurves.classPK   D:UA    H             
 META-INF/versions/9/org/bouncycastle/asn1/anssi/ANSSINamedCurves$1.classPK   D:UX&    L             
 META-INF/versions/9/org/bouncycastle/asn1/anssi/ANSSIObjectIdentifiers.classPK   D:UXÁ    F             p
 META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectIdentifier$1.classPK   D:U(Rd    <             e
 META-INF/versions/9/org/bouncycastle/asn1/DERIA5String.classPK   D:U B  V  =             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1BMPString.classPK   D:UMu    9             %!
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Set$3.classPK   D:Ui    C             $
 META-INF/versions/9/org/bouncycastle/asn1/ASN1EncodableVector.classPK   D:Uy{    @              +
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Enumerated$1.classPK
 
    D:U            .             ,
 META-INF/versions/9/org/bouncycastle/asn1/gnu/PK   D:U-  6	  H             5-
 META-INF/versions/9/org/bouncycastle/asn1/gnu/GNUObjectIdentifiers.classPK   D:Uk/7y    C             1
 META-INF/versions/9/org/bouncycastle/asn1/ASN1VisibleString$1.classPK   D:UF    <             n3
 META-INF/versions/9/org/bouncycastle/asn1/ASN1External.classPK   D:UwJz  T  >             >
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Enumerated.classPK   D:U=&    <             G
 META-INF/versions/9/org/bouncycastle/asn1/BERBitString.classPK   D:Uzkw    =             
O
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Boolean$1.classPK   D:U	    :             P
 META-INF/versions/9/org/bouncycastle/asn1/BERFactory.classPK   D:U<    ;             2S
 META-INF/versions/9/org/bouncycastle/asn1/BERSequence.classPK
 
    D:U            6             1W
 META-INF/versions/9/org/bouncycastle/asn1/rosstandart/PK   D:Ue6    X             W
 META-INF/versions/9/org/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers.classPK   D:U='    @             A[
 META-INF/versions/9/org/bouncycastle/asn1/BEROctetString$2.classPK   D:U*^;0    K             ]
 META-INF/versions/9/org/bouncycastle/asn1/LazyConstructionEnumeration.classPK   D:UN-    8             a
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Null.classPK   D:U:    @             f
 META-INF/versions/9/org/bouncycastle/asn1/DERVisibleString.classPK   D:U,QZ    D             Hj
 META-INF/versions/9/org/bouncycastle/asn1/BEROctetStringParser.classPK   D:Uu9d  
  ?             n
 META-INF/versions/9/org/bouncycastle/asn1/ASN1OctetString.classPK   D:UPx    =             t
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Integer$1.classPK   D:U*    @             v
 META-INF/versions/9/org/bouncycastle/asn1/BEROctetString$1.classPK   D:U˰    6             y
 META-INF/versions/9/org/bouncycastle/asn1/BERSet.classPK   D:U?*  =  C             |
 META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralizedTime.classPK   D:U?T    B             o
 META-INF/versions/9/org/bouncycastle/asn1/ASN1UniversalTypes.classPK   D:Uy"2    F             3
 META-INF/versions/9/org/bouncycastle/asn1/DERApplicationSpecific.classPK
 
    D:U            4             ْ
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/PK   D:UZG    Q             +
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$2.classPK   D:U	!OX  f  Q             
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$4.classPK   D:USYV  -  O             Ț
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.classPK   D:U    Q             
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$5.classPK   D:Um    Q             Φ
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$7.classPK   D:URQ|  
  T             
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers.classPK   D:Ujn  ^	  Q             
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$8.classPK   D:UQ    Q             
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$6.classPK   D:UO  f  Q             N
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$3.classPK   D:UPW  	  X             
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/GOST3410PublicKeyAlgParameters.classPK   D:U  S  Q             )
 META-INF/versions/9/org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$1.classPK   D:Ug\I  &  B             
 META-INF/versions/9/org/bouncycastle/asn1/DERPrintableString.classPK   D:U!6t,  m
  6              
 META-INF/versions/9/org/bouncycastle/asn1/DERSet.classPK   D:Uϱ$l   {   :             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Choice.classPK   D:U@e/    >             d
 META-INF/versions/9/org/bouncycastle/asn1/BEROctetString.classPK   D:U
a|    :             
 META-INF/versions/9/org/bouncycastle/asn1/StreamUtil.classPK   D:U	    =             
 META-INF/versions/9/org/bouncycastle/asn1/DERUTF8String.classPK   D:U
  
  ;             
 META-INF/versions/9/org/bouncycastle/asn1/DERSequence.classPK   D:Ur    ?             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1RelativeOID.classPK   D:U5:    D             (
 META-INF/versions/9/org/bouncycastle/asn1/ASN1ParsingException.classPK   D:Up}-T  R  9             
 META-INF/versions/9/org/bouncycastle/asn1/ASN1Set$1.classPK   D:UFWU    @             
 META-INF/versions/9/org/bouncycastle/asn1/DERNumericString.classPK
 
    D:U            4             
 META-INF/versions/9/org/bouncycastle/asn1/teletrust/PK   D:U\d~I    P             .
 META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$2.classPK   D:Uw  t  P             
 META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$5.classPK   D:Uɧ    P             #  META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$8.classPK   D:Um    P             H META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$7.classPK   D:U$a    P              META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$1.classPK   D:U?[w    N             d META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.classPK   D:UPg    P              META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$9.classPK   D:Usp  %	  Q             T META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$13.classPK   D:U{  e  Q             C META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$12.classPK   D:UEPc  D  P             # META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$3.classPK   D:Ui˄1  e  Q             ' META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$11.classPK   D:U;  t  P             s, META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$6.classPK   D:U~1n  D  P             v0 META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$4.classPK   D:U<4d  %	  Q             b4 META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$14.classPK   D:UL    Q             E9 META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$10.classPK   D:U9  #  T             = META-INF/versions/9/org/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers.classPK   D:Uh I    E             A META-INF/versions/9/org/bouncycastle/asn1/DLApplicationSpecific.classPK   D:UVN5@  q
  =             D META-INF/versions/9/org/bouncycastle/asn1/ASN1T61String.classPK   D:U0p    F             1K META-INF/versions/9/org/bouncycastle/asn1/ASN1ObjectDescriptor$1.classPK   D:Uܫh  	  >             kM META-INF/versions/9/org/bouncycastle/asn1/DLTaggedObject.classPK
 
    D:U            0             ?R META-INF/versions/9/org/bouncycastle/asn1/isara/PK   D:UE    L             R META-INF/versions/9/org/bouncycastle/asn1/isara/IsaraObjectIdentifiers.classPK   D:U/zɁ~    >             LT META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence$3.classPK   D:UɉR    A             6W META-INF/versions/9/org/bouncycastle/asn1/BERSequenceParser.classPK   D:U[PE   X  B             Y META-INF/versions/9/org/bouncycastle/asn1/ASN1ExternalParser.classPK
 
    D:U            /             A[ META-INF/versions/9/org/bouncycastle/asn1/pkcs/PK   D:UCIa    C             [ META-INF/versions/9/org/bouncycastle/asn1/pkcs/PrivateKeyInfo.classPK   D:U{uH  '  J             `d META-INF/versions/9/org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.classPK   D:Ucw  c  G              v META-INF/versions/9/org/bouncycastle/asn1/ASN1ApplicationSpecific.classPK   D:U     E             ~ META-INF/versions/9/org/bouncycastle/asn1/InMemoryRepresentable.classPK
 
    D:U            /             A META-INF/versions/9/org/bouncycastle/asn1/nist/PK   D:U  `  D              META-INF/versions/9/org/bouncycastle/asn1/nist/NISTNamedCurves.classPK   D:U;?    J             ؄ META-INF/versions/9/org/bouncycastle/asn1/nist/NISTObjectIdentifiers.classPK   D:U4  
  A              META-INF/versions/9/org/bouncycastle/asn1/ASN1VisibleString.classPK   D:U)    >              META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence$2.classPK   D:U#׳  o  B              META-INF/versions/9/org/bouncycastle/asn1/LimitedInputStream.classPK   D:U      =              META-INF/versions/9/org/bouncycastle/asn1/ASN1Encodable.classPK   D:Ub  v	  A              META-INF/versions/9/org/bouncycastle/asn1/DLBitStringParser.classPK   D:UR
[  k  >             ǝ META-INF/versions/9/org/bouncycastle/asn1/ASN1External$1.classPK   D:U}W3
    7              META-INF/versions/9/org/bouncycastle/asn1/ASN1Set.classPK   D:UfMǂ2  "  ;              META-INF/versions/9/org/bouncycastle/asn1/DERExternal.classPK   D:Uжk  A  F              META-INF/versions/9/org/bouncycastle/asn1/ConstructedOctetStream.classPK   D:U
  C  C             t META-INF/versions/9/org/bouncycastle/asn1/LazyEncodedSequence.classPK   D:UPPw    ?             d META-INF/versions/9/org/bouncycastle/asn1/ASN1IA5String$1.classPK   D:U|SX    8             H META-INF/versions/9/org/bouncycastle/asn1/ASN1Util.classPK   D:U    A              META-INF/versions/9/org/bouncycastle/asn1/DERVideotexString.classPK   D:Uz    :              META-INF/versions/9/org/bouncycastle/asn1/DERFactory.classPK   D:UaZz
    <              META-INF/versions/9/org/bouncycastle/asn1/ASN1Sequence.classPK   D:UA
x    E              META-INF/versions/9/org/bouncycastle/asn1/ASN1PrintableString$1.classPK   D:U    <              META-INF/versions/9/org/bouncycastle/asn1/OIDTokenizer.classPK   D:UXYmy    C             J META-INF/versions/9/org/bouncycastle/asn1/ASN1GeneralString$1.classPK
 
    D:U            *             4 META-INF/versions/9/org/bouncycastle/math/PK
 
    D:U            .             | META-INF/versions/9/org/bouncycastle/math/raw/PK   D:Ujk.    :              META-INF/versions/9/org/bouncycastle/math/raw/Nat384.classPK   D:UF$x"  M  :              META-INF/versions/9/org/bouncycastle/math/raw/Nat256.classPK   D:U,
Bm  /  :             7 META-INF/versions/9/org/bouncycastle/math/raw/Nat160.classPK   D:U4,?  D  :              META-INF/versions/9/org/bouncycastle/math/raw/Nat320.classPK   D:U#9  A  :             G  META-INF/versions/9/org/bouncycastle/math/raw/Nat224.classPK   D:UE  <-  :             > META-INF/versions/9/org/bouncycastle/math/raw/Nat128.classPK   D:U*    :             T META-INF/versions/9/org/bouncycastle/math/raw/Nat576.classPK   D:U0\L    :             Y META-INF/versions/9/org/bouncycastle/math/raw/Nat512.classPK   D:Uk=0A  C  7             2\ META-INF/versions/9/org/bouncycastle/math/raw/Nat.classPK   D:Ud  F	  >             y META-INF/versions/9/org/bouncycastle/math/raw/Interleave.classPK   D:U/{Y
    7             ~ META-INF/versions/9/org/bouncycastle/math/raw/Mod.classPK   D:UuFB  
  :             B META-INF/versions/9/org/bouncycastle/math/raw/Nat448.classPK   D:UJW    8              META-INF/versions/9/org/bouncycastle/math/raw/Bits.classPK   D:Uo{R  8  :             N META-INF/versions/9/org/bouncycastle/math/raw/Nat192.classPK   D:U/J    6             y META-INF/versions/9/org/bouncycastle/math/Primes.classPK   D:UT  \  ?              META-INF/versions/9/org/bouncycastle/math/Primes$STOutput.classPK
 
    D:U            -               META-INF/versions/9/org/bouncycastle/math/ec/PK   D:Ur    =             k META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil$1.classPK   D:Ut"{    <             y META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$1.classPK   D:U-T  |  F             ^ META-INF/versions/9/org/bouncycastle/math/ec/ValidityPrecompInfo.classPK   D:U	-    A              META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$Config.classPK   D:U,      ?             H META-INF/versions/9/org/bouncycastle/math/ec/ECMultiplier.classPK   D:U0g      B             X META-INF/versions/9/org/bouncycastle/math/ec/PreCompCallback.classPK   D:Ur    =             a META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil$2.classPK   D:U1bA    A              META-INF/versions/9/org/bouncycastle/math/ec/ScaleXPointMap.classPK   D:Uf    B             d META-INF/versions/9/org/bouncycastle/math/ec/WNafPreCompInfo.classPK   D:U$    F              META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$AbstractF2m.classPK   D:Un  	  C              META-INF/versions/9/org/bouncycastle/math/ec/FixedPointUtil$1.classPK   D:UC      @              META-INF/versions/9/org/bouncycastle/math/ec/ECLookupTable.classPK   D:U\_    <             % META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$1.classPK   D:Uo
_E   1  L             R META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$AbstractFp.classPK   D:U<&  j  >              META-INF/versions/9/org/bouncycastle/math/ec/ZTauElement.classPK   D:U  W  >              META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$F2m.classPK   D:U
r  4  >             b META-INF/versions/9/org/bouncycastle/math/ec/ECConstants.classPK   D:UU-G  n  G             @  META-INF/versions/9/org/bouncycastle/math/ec/AbstractECMultiplier.classPK   D:U    H              META-INF/versions/9/org/bouncycastle/math/ec/FixedPointPreCompInfo.classPK   D:U_Iڏ3    F             F META-INF/versions/9/org/bouncycastle/math/ec/WTauNafMultiplier$1.classPK   D:UN  k  E              META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$AbstractFp.classPK   D:U
#      =             c META-INF/versions/9/org/bouncycastle/math/ec/ECPointMap.classPK   D:U  	  =             X
 META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil$3.classPK   D:Ua    @             P META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$F2m$1.classPK   D:Uy  p
  E              META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$AbstractFp.classPK   D:UPk    E              META-INF/versions/9/org/bouncycastle/math/ec/WTauNafPreCompInfo.classPK   D:UJl	    F              META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$AbstractF2m.classPK   D:Uu  >/  ?             ' META-INF/versions/9/org/bouncycastle/math/ec/ECAlgorithms.classPK   D:UM  y  D             }= META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$Fp.classPK   D:Ui3=	    =             <I META-INF/versions/9/org/bouncycastle/math/ec/ECCurve$Fp.classPK   D:U'tE  N  <             R META-INF/versions/9/org/bouncycastle/math/ec/LongArray.classPK   D:U_wM    ;              META-INF/versions/9/org/bouncycastle/math/ec/WNafUtil.classPK   D:Um#  &  7             G META-INF/versions/9/org/bouncycastle/math/ec/Tnaf.classPK   D:Uzt  "  :             : META-INF/versions/9/org/bouncycastle/math/ec/ECPoint.classPK   D:U{    @             . META-INF/versions/9/org/bouncycastle/math/ec/GLVMultiplier.classPK   D:Uv2S
    >             $ META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$F2m.classPK   D:U2Q  M  M              META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$AbstractF2m.classPK   D:Ud鐸  n*  :              META-INF/versions/9/org/bouncycastle/math/ec/ECCurve.classPK   D:U    D              META-INF/versions/9/org/bouncycastle/math/ec/WNafL2RMultiplier.classPK   D:U{ʆ  g  K             B META-INF/versions/9/org/bouncycastle/math/ec/FixedPointCombMultiplier.classPK   D:Ud]{5  	%  =              META-INF/versions/9/org/bouncycastle/math/ec/ECPoint$Fp.classPK   D:U    A             B META-INF/versions/9/org/bouncycastle/math/ec/FixedPointUtil.classPK
 
    D:U            2             F META-INF/versions/9/org/bouncycastle/math/ec/endo/PK   D:U.      F              META-INF/versions/9/org/bouncycastle/math/ec/endo/ECEndomorphism.classPK   D:Uܦ
    @              META-INF/versions/9/org/bouncycastle/math/ec/endo/EndoUtil.classPK   D:U=Xo   
  G             5 META-INF/versions/9/org/bouncycastle/math/ec/endo/GLVEndomorphism.classPK   D:UX|    M             a META-INF/versions/9/org/bouncycastle/math/ec/endo/ScalarSplitParameters.classPK   D:U"A_    L             X META-INF/versions/9/org/bouncycastle/math/ec/endo/GLVTypeBEndomorphism.classPK   D:Un{  _  G             1 META-INF/versions/9/org/bouncycastle/math/ec/endo/EndoPreCompInfo.classPK   D:U[_`  &  B             ! META-INF/versions/9/org/bouncycastle/math/ec/endo/EndoUtil$1.classPK   D:U'-    J             w" META-INF/versions/9/org/bouncycastle/math/ec/endo/GLVTypeBParameters.classPK   D:U*Q1    C             t$ META-INF/versions/9/org/bouncycastle/math/ec/SimpleBigDecimal.classPK   D:U*   @
  D             , META-INF/versions/9/org/bouncycastle/math/ec/WTauNafMultiplier.classPK   D:Uջ`j  r  E             i2 META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement$F2m.classPK
 
    D:U            4             F: META-INF/versions/9/org/bouncycastle/math/ec/custom/PK
 
    D:U            8             : META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/PK   D:U9B0    S             : META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2FieldElement.classPK   D:U8  1  L             B META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283K1Point.classPK   D:Uǝ!  B  L             K META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160K1Point.classPK   D:UUe    L             {T META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Point.classPK   D:U`    L             Z] META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R1Point.classPK   D:U  ?  L             f META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Point.classPK   D:U'    N             p META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R2Curve$1.classPK   D:UEޣO     L             t META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Field.classPK   D:U(  C  L             | META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Curve.classPK   D:U}2|  	  N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Curve$1.classPK   D:UtßQ  <  N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Curve$1.classPK   D:UMx  }  L             Ћ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571R1Curve.classPK   D:UYNE    S             [ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1FieldElement.classPK   D:U4z    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160K1Curve.classPK   D:U
,S    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409K1Curve.classPK   D:U46Iz    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Curve$1.classPK   D:U>	)    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R2Curve.classPK   D:U94
  *  J             F META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233Field.classPK   D:USQ!(
    J              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283Field.classPK   D:Ua  1  L             " META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409K1Point.classPK   D:U+,z    N             c META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Curve$1.classPK   D:Upx    N             Y META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Curve$1.classPK   D:U?D  2  L             M META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233R1Point.classPK   D:U,q  ?  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Point.classPK   D:U	  	  J              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193Field.classPK   D:UFn*  F  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Curve.classPK   D:U,	    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Curve.classPK   D:Uf4  2  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409R1Point.classPK   D:Uic5    Q              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113FieldElement.classPK   D:US    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163K1Curve$1.classPK   D:U:  U
  S              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1FieldElement.classPK   D:Uo
χ
  U  L             /$ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571K1Point.classPK   D:U5T  ;  L             0/ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283R1Curve.classPK   D:UQQ     L             5 META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R1Point.classPK   D:UE  !  L             f? META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233R1Curve.classPK   D:Us    L             %F META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571R1Point.classPK   D:UD    L             R META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R2Point.classPK   D:Uōb  ^  S             [ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1FieldElement.classPK   D:UG=  2  L             Nd META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R2Point.classPK   D:U-    L             m META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R1Curve.classPK   D:Uȣ	    L             2t META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Field.classPK   D:U]  ,  L             v~ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Point.classPK   D:U2Т    N             o META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R1Curve$1.classPK   D:U  z  L             r META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409R1Curve.classPK   D:UH  8  L             s META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R1Curve.classPK   D:U6f^  N  L             5 META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R1Curve.classPK   D:UyH    Q             
 META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409FieldElement.classPK   D:UlN    L             ԧ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Field.classPK   D:U/M<    Q             K META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163FieldElement.classPK   D:Udx    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Curve$1.classPK   D:U
    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Field.classPK   D:UH  
  S             Y META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1FieldElement.classPK   D:UEe>  }  L             Z META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233K1Curve.classPK   D:U@x    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Curve$1.classPK   D:UN{    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Curve.classPK   D:U#  B  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP521R1Field.classPK   D:Ub    J             X META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239Field.classPK   D:UTa    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Point.classPK   D:Us    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R2Point.classPK   D:U4    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283K1Curve$1.classPK   D:U    L             
 META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R2Point.classPK   D:U؀}    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Field.classPK   D:Ug;܆    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R2Curve$1.classPK   D:U+  <  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Field.classPK   D:UK@t~{    N             B) META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Curve$1.classPK   D:U  s  L             9- META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Curve.classPK   D:UoA    L             4 META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Point.classPK   D:Uet
  c  L             B= META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Field.classPK   D:UV?z    N             H META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Curve$1.classPK   D:U/K    L             L META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283K1Curve.classPK   D:Uy    N             PS META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160K1Curve$1.classPK   D:UĶ!  s  S             EW META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1FieldElement.classPK   D:UV߿  D  L             ^ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Point.classPK   D:UK
  n  L             g META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Field.classPK   D:U!D    Q             o META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131FieldElement.classPK   D:U^BVb    L             w META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Point.classPK   D:U,<    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239K1Curve.classPK   D:Ue  
  S             K META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1FieldElement.classPK   D:U*    N             r META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239K1Curve$1.classPK   D:U@%
q    N             u META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R2Curve$1.classPK   D:U4Y d{    N             x META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256R1Curve$1.classPK   D:U.    L             o META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R2Curve.classPK   D:Uܽ<    Q              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239FieldElement.classPK   D:U2Yq    L             Ҩ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571K1Curve.classPK   D:U&=V    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R1Curve$1.classPK   D:U(Qר  ,  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Curve.classPK   D:U]4k    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1Point.classPK   D:Uog    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233K1Curve$1.classPK   D:U}8*    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113R1Curve$1.classPK   D:UuN    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP128R1Curve.classPK   D:U۞C  L
  S              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192R1FieldElement.classPK   D:U|    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R1Curve$1.classPK   D:U'L  D  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP192K1Point.classPK   D:U=    L             C META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R2Curve.classPK   D:Ui@    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R1Curve.classPK   D:U/?  S
  J              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT113Field.classPK   D:U:S    L             # META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R1Point.classPK   D:U    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163K1Point.classPK   D:Ue_  N  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193R2Curve.classPK   D:UYQ  1  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233K1Point.classPK   D:UH    Q              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283FieldElement.classPK   D:UK
    N             & META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283R1Curve$1.classPK   D:U    J             * META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571Field.classPK   D:UVӹ  ,  L             9 META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1Curve.classPK   D:U.>    Q             4@ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233FieldElement.classPK   D:U
얈    N             G META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571R1Curve$1.classPK   D:U3    N             K META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT233R1Curve$1.classPK   D:UKj.  1  L             O META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT239K1Point.classPK   D:U$5
 
    L             9Y META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Field.classPK   D:Uu    N             c META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571K1Curve$1.classPK   D:U^A    Q             g META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT571FieldElement.classPK   D:Um	    S             o META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1FieldElement.classPK   D:U.U    S             5y META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1FieldElement.classPK   D:U5/    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409R1Curve$1.classPK   D:Ut|<  k  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163K1Curve.classPK   D:U"΃    L             Ƌ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224K1Curve.classPK   D:U%[    N             Ò META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131R2Curve$1.classPK   D:U'    L             Ɩ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163R1Point.classPK   D:Uho
  f  J             . META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT131Field.classPK   D:Ug2  
  S              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R1FieldElement.classPK   D:UNCs
  3  J             ֲ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT163Field.classPK   D:Uc    L             ! META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Curve.classPK   D:Ue0  [  L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP224R1Curve.classPK   D:U6BD{     J              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409Field.classPK   D:UY=    Q              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT193FieldElement.classPK   D:UU    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT409K1Curve$1.classPK   D:Uoca    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP256K1Field.classPK   D:U	 b  2  L             _ META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecT283R1Point.classPK   D:U}}{    N              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP384R1Curve$1.classPK   D:Ueb    L              META-INF/versions/9/org/bouncycastle/math/ec/custom/sec/SecP160R2Point.classPK
 
    D:U            8             p META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/PK   D:U4c	    M              META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519Point.classPK   D:UXe  a  T              META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519FieldElement.classPK   D:Uzn    H              META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519.classPK   D:U!|M{    J             
 META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519$1.classPK   D:Uu,=7	    M             ! META-INF/versions/9/org/bouncycastle/math/ec/custom/djb/Curve25519Field.classPK
 
    D:U            7             + META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/PK   D:Usˎ  l  K             , META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve.classPK   D:UfPS
  W  K             L3 META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Field.classPK   D:U7A}    M             > META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve$1.classPK   D:U{de    K             B META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1Point.classPK   D:Uf  U  R             J META-INF/versions/9/org/bouncycastle/math/ec/custom/gm/SM2P256V1FieldElement.classPK   D:U̸]	    H             dR META-INF/versions/9/org/bouncycastle/math/ec/AbstractECLookupTable.classPK   D:UCp      >             S META-INF/versions/9/org/bouncycastle/math/ec/PreCompInfo.classPK   D:Ude  	  A             T META-INF/versions/9/org/bouncycastle/math/ec/ECFieldElement.classPK   D:UA      8             Y META-INF/versions/9/org/bouncycastle/math/Primes$1.classPK
 
    D:U            0             'Z META-INF/versions/9/org/bouncycastle/math/field/PK   D:U^	s`    B             uZ META-INF/versions/9/org/bouncycastle/math/field/FiniteFields.classPK   D:Ul      A             p^ META-INF/versions/9/org/bouncycastle/math/field/FiniteField.classPK   D:UeC     N             _ META-INF/versions/9/org/bouncycastle/math/field/PolynomialExtensionField.classPK   D:U     U             ` META-INF/versions/9/org/bouncycastle/math/field/GenericPolynomialExtensionField.classPK   D:UQ      @             d META-INF/versions/9/org/bouncycastle/math/field/Polynomial.classPK   D:UK    C             e META-INF/versions/9/org/bouncycastle/math/field/GF2Polynomial.classPK   D:US    @             {g META-INF/versions/9/org/bouncycastle/math/field/PrimeField.classPK   D:U!j     D             i META-INF/versions/9/org/bouncycastle/math/field/ExtensionField.classPK   D:U)
O    ?             j META-INF/versions/9/org/bouncycastle/math/Primes$MROutput.classPK
 
    D:U            ,             m META-INF/versions/9/org/bouncycastle/jcajce/PK
 
    D:U            5             m META-INF/versions/9/org/bouncycastle/jcajce/provider/PK
 
    D:U            ?             8n META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/PK
 
    D:U            D             n META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/util/PK   D:U\]    S             n META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil.classPK   D:Uz    U             q META-INF/versions/9/org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil$1.classPK
 
    D:U            @             s META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/PK
 
    D:U            E             -t META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/PK   D:Uς  %  R             t META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util.classPK   D:UikWp  
+  Q              META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.classPK   D:UB  &  S              META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil$1.classPK   D:U	L a  	  _             D META-INF/versions/9/org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util$CustomCurves.classPK
 
    D:U            :             2 META-INF/versions/9/org/bouncycastle/jcajce/provider/util/PK   D:UM|_   N  Q              META-INF/versions/9/org/bouncycastle/jcajce/provider/util/AlgorithmProvider.classPK   D:Uu     Z              META-INF/versions/9/org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter.classPK
 
    D:U            <             { META-INF/versions/9/org/bouncycastle/jcajce/provider/config/PK   D:Un
f  
  a             ՠ META-INF/versions/9/org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission.classPK   D:U1l    V             ʦ META-INF/versions/9/org/bouncycastle/jcajce/provider/config/ConfigurableProvider.classPK   D:UbP/-    W              META-INF/versions/9/org/bouncycastle/jcajce/provider/config/ProviderConfiguration.classPK
 
    D:U            1             l META-INF/versions/9/org/bouncycastle/jcajce/spec/PK   D:UoUH    L              META-INF/versions/9/org/bouncycastle/jcajce/spec/DHDomainParameterSpec.classPK
 
    D:U            1              META-INF/versions/9/org/bouncycastle/jcajce/util/PK   D:UZC@  ,  I             M META-INF/versions/9/org/bouncycastle/jcajce/util/MessageDigestUtils.classPK
 
    D:U            )             Z META-INF/versions/9/org/bouncycastle/pqc/PK
 
    D:U            0              META-INF/versions/9/org/bouncycastle/pqc/crypto/PK
 
    D:U            8              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/PK   D:UUe  R  X             E META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/SPHINCSPublicKeyParameters.classPK   D:U?Ou  4  R             0 META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/SPHINCSKeyParameters.classPK   D:U$0f  T  Y             % META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincs/SPHINCSPrivateKeyParameters.classPK
 
    D:U            5              META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/PK   D:UkXķV1  y  >             e META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/Fpx.classPK   D:UhBC  i  H             ' META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/PointProjFull.classPK   D:U.U  '  ?              META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P610.classPK   D:Ud$	    E             	 META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEEngine.classPK   D:U.kr  N$  ?             ' META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P503.classPK   D:UzFw)    L             ( META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEKeyParameters.classPK   D:UW+d    R             ,* META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEPublicKeyParameters.classPK   D:UKDdm    C             , META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/Internal.classPK   D:UYwBI  S  J             3 META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIDH_Compressed.classPK   D:U3O  +  ?             x} META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P751.classPK   D:U[aT    S             4 META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEPrivateKeyParameters.classPK   D:U$ȆE  !  ?             	 META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIDH.classPK   D:U+  9  I              META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/SIKEParameters.classPK   D:UL5   =  D              META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/PointProj.classPK   D:UT   6"  ?              META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/P434.classPK   D:U}`  A2  B              META-INF/versions/9/org/bouncycastle/pqc/crypto/sike/Isogeny.classPK
 
    D:U            5             g META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/PK   D:Uݣ    E              META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEEngine.classPK   D:UM(    L              META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEKeyParameters.classPK   D:Uc  Q  S              META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEPrivateKeyParameters.classPK   D:U$'lK  >  R              META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEPublicKeyParameters.classPK   D:UɨN    I              META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKEParameters.classPK   D:Uo  a  @             } META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/Utils.classPK   D:U;>  j  N              META-INF/versions/9/org/bouncycastle/pqc/crypto/bike/BIKERandomGenerator.classPK
 
    D:U            9             D META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/PK
 
    D:U            ?              META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/PK   D:U'Z
    L              META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/PolyVec.classPK   D:UG    ]             ~ META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$ShakeSymmetric.classPK   D:Un    N             P META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric.classPK   D:Uxg    P             S META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberIndCpa.classPK   D:U}Ή  p  K             8 META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Reduce.classPK   D:U~    T             V META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberParameters.classPK   D:UEɾ+  J  W             s META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyParameters.classPK   D:U!  
  H             # META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Ntt.classPK   D:UEkM    [              META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$AesSymmetric.classPK   D:U< 
  Y  ]             p$ META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberPublicKeyParameters.classPK   D:UqH    ^             ' META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberPrivateKeyParameters.classPK   D:USj	    P             ) META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/KyberEngine.classPK   D:U7g  "  H             4 META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/CBD.classPK   D:UXe}(    I             k7 META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/kyber/Poly.classPK
 
    D:U            C             
C META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PK   D:U"    Q             kC META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecK.classPK   D:U
s0  n  _             K META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyParameters.classPK   D:UU8  
  V             M META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecMatrix.classPK   D:Uu    \             R META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumParameters.classPK   D:U	}]  o  a             U META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$ShakeSymmetric.classPK   D:U׾    P             X META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Packing.classPK   D:U:1_  S  Q             _ META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecL.classPK   D:U"!  D*  X             Ng META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumEngine.classPK   D:Ur    R             x META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric.classPK   D:U/}Q  @  O             z META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Reduce.classPK   D:U1}  E  e             | META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPublicKeyParameters.classPK   D:Uqv
  z  L             F META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Ntt.classPK   D:U.O    _              META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$AesSymmetric.classPK   D:UI7pn  y  f             " META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPrivateKeyParameters.classPK   D:UD  2  M             $ META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Poly.classPK   D:U2A><    Q             ' META-INF/versions/9/org/bouncycastle/pqc/crypto/crystals/dilithium/Rounding.classPK
 
    D:U            4              META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/PK   D:UG'g  !  N             4 META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/FastFourierTransform.classPK   D:U
N
  |  R              META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCKeccakRandomGenerator.classPK   D:U!7:ɘ	    F             { META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/GFCalculator.classPK   D:UfhK#    J              META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCKeyParameters.classPK   D:UbN  <  E             " META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/ReedSolomon.classPK   D:U,"    M              META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/ReedMuller$Codeword.classPK   D:U~<    G             6 META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCParameters.classPK   D:U؂T  n  Q             % META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCPrivateKeyParameters.classPK   D:U    D             ' META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/ReedMuller.classPK   D:U8    C             '/ META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCEngine.classPK   D:U{?    ?             h? META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/Utils.classPK   D:U2X!ia  r  P             G META-INF/versions/9/org/bouncycastle/pqc/crypto/hqc/HQCPublicKeyParameters.classPK
 
    D:U            5             H META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PK   D:U({M}    i             FI META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SubjectPublicKeyInfoConverter.classPK   D:UI7J  
  Y             ZK META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSConverter.classPK   D:U y    [             +P META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$PicnicConverter.classPK   D:U 2y  E9  P             nS META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PrivateKeyInfoFactory.classPK   D:UA`    \             h META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSConverter.classPK   D:U    Y             k META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NtruConverter.classPK   D:Ue  ,  a              o META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$McElieceCCA2Converter.classPK   D:U4\    `             r META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSPlusConverter.classPK   D:UuZ    X             &v META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$LMSConverter.classPK   D:U"    _             y META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SNTRUPrimeConverter.classPK   D:UM!'j     M             | META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$1.classPK   D:UC7
  &  K             
~ META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory.classPK   D:U59    W             , META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NHConverter.classPK   D:Uը׶    X             Ǝ META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$HQCConverter.classPK   D:Ub`    _              META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NTRULPrimeConverter.classPK   D:U_    [             T META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSMTConverter.classPK   D:U<w  {  [             < META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$QTeslaConverter.classPK   D:UX\    Z             < META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$KyberConverter.classPK   D:U3  JK  @               META-INF/versions/9/org/bouncycastle/pqc/crypto/util/Utils.classPK   D:U#>  !A  L              META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PrivateKeyFactory.classPK   D:Ur.@
  '  V             V META-INF/versions/9/org/bouncycastle/pqc/crypto/util/SubjectPublicKeyInfoFactory.classPK   D:U{    Z              META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FrodoConverter.classPK   D:UX    Y             [ META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$BIKEConverter.classPK   D:Ur  '	  [              META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FalconConverter.classPK   D:UC3'  a  Z             ) META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SABERConverter.classPK   D:U9y5a_    ^              META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$DilithiumConverter.classPK   D:Ue)    Y              META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$CMCEConverter.classPK   D:U    Y              META-INF/versions/9/org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SIKEConverter.classPK
 
    D:U            8              META-INF/versions/9/org/bouncycastle/pqc/crypto/newhope/PK   D:U䵧H    T             n META-INF/versions/9/org/bouncycastle/pqc/crypto/newhope/NHPrivateKeyParameters.classPK   D:UJF    S             8 META-INF/versions/9/org/bouncycastle/pqc/crypto/newhope/NHPublicKeyParameters.classPK
 
    D:U            7              META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/PK   D:Um    W             T META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconPrivateKeyParameters.classPK   D:U(C  B  V              META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconPublicKeyParameters.classPK   D:Uꡀ(  /  P              META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconKeyParameters.classPK   D:UD  S  M             * META-INF/versions/9/org/bouncycastle/pqc/crypto/falcon/FalconParameters.classPK
 
    D:U            5             ' META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/PK   D:U$  
  B             z META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/BENES13.classPK   D:U0@  M  ?              META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/GF12.classPK   D:U`  X  @              META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/BENES.classPK   D:U6/v  0  ?              META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/GF13.classPK   D:Uk0  C  B              META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/BENES12.classPK   D:U.&q;,  R  E             8 META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEEngine.classPK   D:URH'    L             J META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEKeyParameters.classPK   D:Uu?d    R             L META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEPublicKeyParameters.classPK   D:Uz&w  !  @             kN META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/Utils.classPK   D:US.  
  I             ^Q META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEParameters.classPK   D:UZp    =             mV META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/GF.classPK   D:UW3;M  -  S             HX META-INF/versions/9/org/bouncycastle/pqc/crypto/cmce/CMCEPrivateKeyParameters.classPK
 
    D:U            5             \ META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/PK   D:U!O'    L             i\ META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUKeyParameters.classPK   D:Uxae    S             
^ META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUPrivateKeyParameters.classPK   D:U?$  k  I             _ META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUParameters.classPK   D:U|d    R             b META-INF/versions/9/org/bouncycastle/pqc/crypto/ntru/NTRUPublicKeyParameters.classPK
 
    D:U            4             d META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/PK   D:U*8=    =             e META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMS.classPK   D:U2I  i  F             l META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSException.classPK   D:U@   2  Q             n META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSContextBasedVerifier.classPK   D:UPb  z  I             o META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsPrivateKey.classPK   D:UO(    H             s META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsPublicKey.classPK   D:U!2    K             | META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsParameters$1.classPK   D:UIښ1    B             m~ META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/Composer.classPK   D:UɅ  1  Q             ߃ META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSPrivateKeyParameters.classPK   D:UTu    Z              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters$CacheKey.classPK   D:U    J             # META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSKeyParameters.classPK   D:U  8
  D              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSContext.classPK   D:UX(M    G              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSParameters.classPK   D:U&6    @             ڢ META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LM_OTS.classPK   D:U֒    D             ~ META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/DigestUtil.classPK   D:U)Z    H              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsSignature.classPK   D:Uy!    T              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSKeyGenerationParameters.classPK   D:UJqVG    D             3 META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/SeedDerive.classPK   D:U
+S   [  O              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSContextBasedSigner.classPK   D:U
0;  =  V             = META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSS$PlaceholderLMSPrivateKey.classPK   D:U    P             e META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSPublicKeyParameters.classPK   D:UF

    =              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSS.classPK   D:U2+1    F              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/HSSSignature.classPK   D:UXT	  
  P              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSPublicKeyParameters.classPK   D:Uc>)    I             y META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSSignedPubKey.classPK   D:U}    B              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LmsUtils.classPK   D:U]    K              META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSigParameters$1.classPK   D:U%f  w'  Q             r META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters.classPK   D:U8rS  `  I             W META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSigParameters.classPK   D:Ui3B  W  I             !	 META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMOtsParameters.classPK   D:U0^ޤ%  (  F             r
 META-INF/versions/9/org/bouncycastle/pqc/crypto/lms/LMSSignature.classPK
 
    D:U            6              META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/PK   D:UuG  S  h             _ META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Shake128MatrixGenerator.classPK   D:Uk&  &  N              META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoKeyParameters.classPK   D:UNfҧd    T             F META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoPublicKeyParameters.classPK   D:U:hΫ  X
  K             , META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoParameters.classPK   D:UmJ
T    U             P! META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoPrivateKeyParameters.classPK   D:UB9  !  G             '# META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoEngine.classPK   D:U#$3%  0  f             5 META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Aes128MatrixGenerator.classPK   D:UV  b  P             : META-INF/versions/9/org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator.classPK
 
    D:U            5             b< META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/PK   D:U&      W             < META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSStoreableObjectInterface.classPK   D:U9]z    F             = META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSAddress.classPK   D:UH	  ,  F             @ META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/BDSTreeHash.classPK   D:U{h    F             [J META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/BDSStateMap.classPK   D:Uc     U             7S META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$1.classPK   D:UP(    K             {T META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/DefaultXMSSMTOid.classPK   D:U M   !  V             [ META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$1.classPK   D:U  q  G             b\ META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSNodeUtil.classPK   D:Upj      I             d META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/LTreeAddress$1.classPK   D:UM"^    Q             e META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$Builder.classPK   D:UҤͱ
    C             h META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlus.classPK   D:Uڸ   $  W             v META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$1.classPK   D:UKct    Z             4x META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$Builder.classPK   D:U>F    T             0{ META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters.classPK   D:U  K  W             Á META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusPrivateKeyParameters.classPK   D:UM  _  V              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusPublicKeyParameters.classPK   D:U
    G              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/LTreeAddress.classPK   D:U'0&0    N              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyParameters.classPK   D:U8      K              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$1.classPK   D:UkǤ    E              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/DigestUtil.classPK   D:U _    O             o META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/LTreeAddress$Builder.classPK   D:Ucq*    K             K META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTParameters.classPK   D:U%إ  6   S              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters.classPK   D:U Su    \             * META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$Builder.classPK   D:UAmr  f
  I             ) META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/DefaultXMSSOid.classPK   D:UZ|C*    I             _ META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/OTSHashAddress.classPK   D:UZ  ^  L             ^ META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSKeyParameters.classPK   D:U    R             Y META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters.classPK   D:UO&u4    R              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$Builder.classPK   D:UiSO  $
  M              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusParameters.classPK   D:U!
    M              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/KeyedHashFunctions.classPK   D:Uw      B              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSOid.classPK   D:U3    J              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/HashTreeAddress.classPK   D:U˶
  =  U              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters.classPK   D:Uפ  d  C             > META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSNode.classPK   D:U~>     L             S META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$1.classPK   D:UЦ  K  L              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusSignature.classPK   D:U(.r    R              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSUtil$CheckingStream.classPK   D:Uja+    C             , META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSUtil.classPK   D:U1H^TD    F              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/WOTSPlusOid.classPK   D:Uv
    [             d META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$Builder.classPK   D:UR訆  j  ]              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$Builder.classPK   D:U#.    I              META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSParameters.classPK   D:U
P  \5  >             	 META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/BDS.classPK   D:Umh    N             D  META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSAddress$Builder.classPK   D:Uyb     T             (# META-INF/versions/9/org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$1.classPK   D:UH.   (  R             j$ META-INF/versions/9/org/bouncycastle/pqc/crypto/ExhaustedPrivateKeyException.classPK
 
    D:U            7             % META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PK   D:U  y  G             !& META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature2.classPK   D:U$E    M             ( META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicParameters.classPK   D:U4J  P  V             + META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicPublicKeyParameters.classPK   D:UQ  8  F             - META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature.classPK   D:U>  
  A             / META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Tape.classPK   D:Uj]y  ~  Q             56 META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/KMatricesWithPointer.classPK   D:U3    F             -8 META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/KMatrices.classPK   D:U<gK  S  W             :: META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicPrivateKeyParameters.classPK   D:U}    A             
< META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Tree.classPK   D:Us^    A             fK META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/View.classPK   D:U9$ě    N             3M META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature2$Proof2.classPK   D:U{%  3  P             rO META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicKeyParameters.classPK   D:UWwG    I             Q META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/PicnicEngine.classPK   D:Uiy%    L              META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Signature$Proof.classPK   D:U[\    B             . META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Utils.classPK   D:U9  
  K             9 META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/LowmcConstants.classPK   D:UgfW    @              META-INF/versions/9/org/bouncycastle/pqc/crypto/picnic/Msg.classPK
 
    D:U            <             I META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/PK   D:U1(  \  b              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Shake256Engine.classPK   D:Ut&  (  M             [ META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaSBase.classPK   D:UD   1  D              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/PK.classPK   D:Uا  	  F             % META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/ADRS.classPK   D:U

  %  W              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters.classPK   D:U:  K  R              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaS256Digest.classPK   D:U[  	  a             # META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPrivateKeyParameters.classPK   D:Uwf*  |  O             z META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/IndexedDigest.classPK   D:UZM   0  D             ! META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SK.classPK   D:U3t_   >  j              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Sha2EngineProvider.classPK   D:URh    R             I META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaS512Digest.classPK   D:UI	    ^             1 META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Sha2Engine.classPK   D:Uiz&  N  n             }  META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Shake256EngineProvider.classPK   D:U*@e    L             ? META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/HarakaSXof.classPK   D:UZ22  `  Z              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyParameters.classPK   D:Up>%%  J  m             d	 META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$HarakaSEngineProvider.classPK   D:UW  E  S             $ META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine.classPK   D:Ug@    a              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$HarakaSEngine.classPK   D:Uȇ;     [             W META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngineProvider.classPK   D:U1cm^%    `              META-INF/versions/9/org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPublicKeyParameters.classPK
 
    D:U            :             G META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/PK   D:UG.  O  W              META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyParameters.classPK   D:UR[U  
  ]             R META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePublicKeyParameters.classPK   D:U0rh  I  ^             2! META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePrivateKeyParameters.classPK   D:UE}-  O  W             &$ META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyParameters.classPK   D:Uy	a    T             % META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeParameters.classPK   D:U(v`    ]             * META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePublicKeyParameters.classPK   D:UT~    ^             , META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePrivateKeyParameters.classPK   D:Ux)  1  T             / META-INF/versions/9/org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeParameters.classPK
 
    D:U            6             3 META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/PK   D:Ux"
    G             B4 META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABEREngine.classPK   D:Un e    T             AA META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERPublicKeyParameters.classPK   D:UW    U             (C META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERPrivateKeyParameters.classPK   D:Ur    A             E META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/Utils.classPK   D:U*(  &  N             xM META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERKeyParameters.classPK   D:U7F    @             O META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/Poly.classPK   D:Uշ    K             ] META-INF/versions/9/org/bouncycastle/pqc/crypto/saber/SABERParameters.classPK
 
    D:U            .             .a META-INF/versions/9/org/bouncycastle/pqc/asn1/PK   D:U%2H    A             za META-INF/versions/9/org/bouncycastle/pqc/asn1/CMCEPublicKey.classPK   D:Uy    A             d META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSPublicKey.classPK   D:U1`    B             h META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSPrivateKey.classPK   D:U
  {  F             	p META-INF/versions/9/org/bouncycastle/pqc/asn1/McEliecePrivateKey.classPK   D:U	  5  E             bu META-INF/versions/9/org/bouncycastle/pqc/asn1/RainbowPrivateKey.classPK   D:Uޚ1    D              META-INF/versions/9/org/bouncycastle/pqc/asn1/RainbowPublicKey.classPK   D:U/    G              META-INF/versions/9/org/bouncycastle/pqc/asn1/SPHINCS256KeyParams.classPK   D:U  -	  I              META-INF/versions/9/org/bouncycastle/pqc/asn1/McElieceCCA2PublicKey.classPK   D:Ux2  @  A             T META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSKeyParams.classPK   D:U  
  J              META-INF/versions/9/org/bouncycastle/pqc/asn1/McElieceCCA2PrivateKey.classPK   D:U~A    E             < META-INF/versions/9/org/bouncycastle/pqc/asn1/McEliecePublicKey.classPK   D:URn    C             5 META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSMTKeyParams.classPK   D:UB    D              META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSMTPrivateKey.classPK   D:Utj>A  )
  H             ~ META-INF/versions/9/org/bouncycastle/pqc/asn1/PQCObjectIdentifiers.classPK   D:U]޲    C              META-INF/versions/9/org/bouncycastle/pqc/asn1/XMSSMTPublicKey.classPK   D:U  S  B              META-INF/versions/9/org/bouncycastle/pqc/asn1/CMCEPrivateKey.classPK
 
    D:U            .              META-INF/versions/9/org/bouncycastle/pqc/math/PK
 
    D:U            3             ] META-INF/versions/9/org/bouncycastle/pqc/math/ntru/PK
 
    D:U            >              META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/PK   D:Ut  4  W             
 META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.classPK   D:Ut5k    X             + META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.classPK   D:U   ;  R              META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048677.classPK   D:Uѓ<   6  O              META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSS701.classPK   D:Uc   ;  R             ޽ META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048509.classPK   D:U{5$  f  T             B META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUParameterSet.classPK   D:UcH'3  2  R              META-INF/versions/9/org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS4096821.classPK   D:UP  >  G             D META-INF/versions/9/org/bouncycastle/pqc/math/ntru/HRSSPolynomial.classPK   D:U	'
  y  C             > META-INF/versions/9/org/bouncycastle/pqc/math/ntru/Polynomial.classPK   D:Ux  B  J              META-INF/versions/9/org/bouncycastle/pqc/math/ntru/HPS4096Polynomial.classPK   D:UU!v  
  F              META-INF/versions/9/org/bouncycastle/pqc/math/ntru/HPSPolynomial.classPK
 
    D:U            <              META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/PK   D:UA}z    Y             
 META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/LittleEndianConversions.classPK   D:UBU"  P:  R              META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/IntegerFunctions.classPK   D:UY1-  
  L              META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/GF2mVector.classPK   D:U)<  |  K             M META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/GF2mField.classPK   D:Uo=t    H             q META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/Vector.classPK   D:Uf}l  n1  V             [ META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM.classPK   D:U1=\    K             K2 META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/RandUtils.classPK   D:U~HN    S              4 META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/PolynomialRingGF2.classPK   D:Uuoox  
  M             9 META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/Permutation.classPK   D:U:  m  J             A META-INF/versions/9/org/bouncycastle/pqc/math/linearalgebra/IntUtils.classPK
 
    D:U            0             BG META-INF/versions/9/org/bouncycastle/pqc/jcajce/PK
 
    D:U            ;             G META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/PK   D:U?ĝ      P             G META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/FalconPublicKey.classPK   D:U무     M             I META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/NHPrivateKey.classPK   D:U,8      J             3J META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/FalconKey.classPK   D:U?   w  O             `K META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSPrivateKey.classPK   D:U}K      J             L META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSMTKey.classPK   D:U@R      U             M META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPublicKey.classPK   D:Uk   X  V             O META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPrivateKey.classPK   D:Uh:      G             dP META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/LMSKey.classPK   D:UӬ      J             wQ META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/QTESLAKey.classPK   D:UC*ϝ      H             R META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSKey.classPK   D:Uot   D  Q             S META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/FalconPrivateKey.classPK   D:U2^c      J             T META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/PicnicKey.classPK   D:U.LTt      L              V META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/NHPublicKey.classPK   D:U6     O             LW META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusKey.classPK   D:U     Q             X META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/XMSSMTPrivateKey.classPK   D:U      F             Y META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/NHKey.classPK   D:Uەg   s  N             Z META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/LMSPrivateKey.classPK   D:U`{      K             J\ META-INF/versions/9/org/bouncycastle/pqc/jcajce/interfaces/SPHINCSKey.classPK
 
    D:U            9             i] META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/PK
 
    D:U            A             ] META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/PK   D:UMȹؼ  
  ^             ^ META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi.classPK   D:U%  i  ]             gd META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PrivateKey.classPK   D:Um[  ;  \             k META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PublicKey.classPK
 
    D:U            A             r META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/PK   D:Uǘ  
  Z             r META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPrivateKey.classPK   D:U
{  8  Y             z META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPublicKey.classPK   D:U6i  ~  [              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeyFactorySpi.classPK
 
    D:U            @              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/PK   D:U7,H    W              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPublicKey.classPK   D:UĄqe    X             ӎ META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPrivateKey.classPK   D:U  
  Y             ܔ META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/qtesla/QTESLAKeyFactorySpi.classPK
 
    D:U            B              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/PK   D:U ߞ    `              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PrivateKey.classPK   D:Uot	    ]              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeyFactorySpi.classPK   D:U;8    _              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PublicKey.classPK   D:U?ev  ,  M             D META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/Utils.classPK   D:Uot  b  \             5 META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePrivateKey.classPK   D:Uk"
	    a             [ META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeyFactorySpi.classPK   D:UjÙo  0  [              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePublicKey.classPK
 
    D:U            >              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/util/PK   D:U˽p{    K              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/util/KeyUtil.classPK
 
    D:U            A              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/PK   D:Uv  
  U             p META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPrivateKey.classPK   D:UT  
  V              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi.classPK   D:UQ"  A
  T              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPublicKey.classPK
 
    D:U            @              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/PK   D:U+    W             c META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPublicKey.classPK   D:U[ո  
  Y              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi.classPK   D:UCGv  '  X              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPrivateKey.classPK   D:Uމ  (  X             6 META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$2.classPK
 
    D:U            =              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/PK   D:U    R              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPrivateKey.classPK   D:UXʩ  
  S             ,  META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi.classPK   D:Ue  S  Q             | META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPublicKey.classPK
 
    D:U            >              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/PK   D:Uk    V             l META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPrivateKey.classPK   D:U޾ǹ  
  W             [ META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi.classPK   D:U  
  N              META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/DigestUtil.classPK   D:U|  
  U             	  META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi.classPK   D:U&DY  R  T             C& META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPrivateKey.classPK   D:U  
  S             . META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPublicKey.classPK   D:Uj@@  
  U             4 META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPublicKey.classPK   D:UR;    V             : META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider.classPK   D:U^.v    X             G META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$1.classPK
 
    D:U            @             I META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/PK   D:UPsW     W             J META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPublicKey.classPK   D:Ud=5    X             O META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPrivateKey.classPK   D:Uڀ  
  Y             ;U META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi.classPK
 
    D:U            E             y[ META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/PK   D:Ue6  
  c             [ META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi.classPK   D:UZJ  *  a             1b META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPublicKey.classPK   D:UUʰ    b             g META-INF/versions/9/org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPrivateKey.classPK
 
    D:U            5             m META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/PK   D:UzAJ1    N             Nn META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/QTESLAParameterSpec.classPK   D:U~
    P             p META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/RainbowPrivateKeySpec.classPK   D:Ua5    L             s META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/XMSSParameterSpec.classPK   D:UtZ  v  N             Wv META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/PicnicParameterSpec.classPK   D:UB    S             z META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/SPHINCSPlusParameterSpec.classPK   D:UR  y  N             & META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/FalconParameterSpec.classPK   D:U
c    O             ; META-INF/versions/9/org/bouncycastle/pqc/jcajce/spec/RainbowPublicKeySpec.classPK
 
    D:U            0             x META-INF/versions/9/org/bouncycastle/pqc/legacy/PK
 
    D:U            7             Ƈ META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/PK
 
    D:U            ?              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/PK   D:Uo
4    J             x META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/Layer.classPK
 
    D:U            D              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/util/PK   D:UXj,    U              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/util/RainbowUtil.classPK   D:U*	    R              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/util/GF2Field.classPK   D:Upǖ  4  `              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPrivateKeyParameters.classPK   D:U9  g  V             B META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowParameters.classPK   D:U~    _              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPublicKeyParameters.classPK   D:U8}(    Y              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyParameters.classPK
 
    D:U            >             V META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/PK   D:U>  ! _              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$QTesla3PPolynomial.classPK   D:U`M;  *  L             >> META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p.classPK   D:U/    U             U META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$Gaussian.classPK   D:U)1    ]             
g META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPublicKeyParameters.classPK   D:UrB    Z             i META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLASecurityCategory.classPK   D:Ug  (  L             m META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p.classPK   D:U2'a  o  M              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/HashUtils.classPK   D:UwsG  t  _             ͆ META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$QTesla1PPolynomial.classPK   D:UD2    ^             7 META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPrivateKeyParameters.classPK   D:Um
_    U              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$Gaussian.classPK
 
    D:U            @             M META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/PK   D:U`8    _              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyParameters.classPK   D:U(5C    e             p META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyGenerationParameters.classPK   D:U
y^  
  b             F META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePrivateKeyParameters.classPK   D:U
~  .  b             4 META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyPairGenerator.classPK   D:UQ  J	  X             B META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceParameters.classPK   D:U^8  ~  ^              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyPairGenerator.classPK   D:U    a              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePublicKeyParameters.classPK   D:U__    \             5 META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2Parameters.classPK   D:U[T.  ]  [              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyParameters.classPK   D:Uc    e             s META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PublicKeyParameters.classPK   D:UTOqJ  V  f              META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PrivateKeyParameters.classPK   D:U,`ΒI    i               META-INF/versions/9/org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyGenerationParameters.classPK
 
    D:U            5               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/PK
 
    D:U            C               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PK   D:Uq  B  R             R  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/ByteUtils.classPK   D:U$c    `               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/LittleEndianConversions.classPK   D:URix    \               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MatrixSet.classPK   D:Ufk    R               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Vector.classPK   D:Unl5  1
  ]             "  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/BigEndianConversions.classPK   D:U  6  Y             (  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/IntegerFunctions.classPK   D:U  -  [             HI  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2m.classPK   D:U^3  
  S             N  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mVector.classPK   D:UU%_    R             V  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mField.classPK   D:UTy    O             _  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/Vector.classPK   D:U5  ,  ]             a  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialGF2mSmallM.classPK   D:U7Ma    R             x  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/RandUtils.classPK   D:U&1Vʬ    R             y  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode.classPK   D:U|    O             "  META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/Matrix.classPK   D:US  
  Z               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2.classPK   D:U;  B  T               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/Permutation.classPK   D:U    Q               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/IntUtils.classPK   D:Uyi  $  Y               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MaMaPe.classPK   D:U?E  6  R               META-INF/versions/9/org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Matrix.classPK
 
    D:U                           META-INF/versions/11/PK
 
    D:U                           META-INF/versions/11/org/PK
 
    D:U            &             &  META-INF/versions/11/org/bouncycastle/PK
 
    D:U            -             j  META-INF/versions/11/org/bouncycastle/jcajce/PK
 
    D:U            6               META-INF/versions/11/org/bouncycastle/jcajce/provider/PK
 
    D:U            A             	  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/PK
 
    D:U            F             h  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/PK   D:U.    `             ̸  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448.classPK   D:UD    a             i  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519.classPK   D:Uā.  1  \               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/BC11XDHPublicKey.classPK   D:UPL#    n             ľ  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA384CKDF.classPK   D:Uެi    p               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256KDF.classPK   D:UY    p             .  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256CKDF.classPK   D:U7>:    o             f  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256KDF.classPK   D:UԜ    q               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256CKDF.classPK   D:UևY	    _               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$EdDSA.classPK   D:U\    ]             p  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$XDH.classPK   D:U1     c             
  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$XDH.classPK   D:Ut&    f               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X25519.classPK   D:US  "  Y             0  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi.classPK   D:UĆR    n             
  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512KDF.classPK   D:UM    ]             <  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/BC11XDHPrivateKey.classPK   D:U4R    _               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$XDH.classPK   D:U#ݜ    p             t  META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA512CKDF.classPK   D:Uɵ4ʛ    n               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512CKDF.classPK   D:U;(<    o               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512CKDF.classPK   D:U&    g               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed25519.classPK   D:U@Éh  A%  [               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi.classPK   D:Uy    m               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512KDF.classPK   D:Ut    e               META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$EdDSA.classPK   D:U'    _             j! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448.classPK   D:U(-    `             ! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519.classPK   D:U
nL    ^             ! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448.classPK   D:UvO
    _             C! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi.classPK   D:U슛    n             ! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA256CKDF.classPK   D:Ui    p             ! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA384CKDF.classPK   D:U7#     d             ! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X448.classPK   D:Ud    b             ! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519.classPK   D:U&    e             %! META-INF/versions/11/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed448.classPK
 
    D:U                         ! META-INF/versions/15/PK
 
    D:U                         ! META-INF/versions/15/org/PK
 
    D:U            &             $! META-INF/versions/15/org/bouncycastle/PK
 
    D:U            -             h! META-INF/versions/15/org/bouncycastle/jcajce/PK
 
    D:U            6             ! META-INF/versions/15/org/bouncycastle/jcajce/provider/PK
 
    D:U            A             ! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/PK
 
    D:U            F             f! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/PK   D:Ub    `             ! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed25519.classPK   D:U21    a             f! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519.classPK   D:U19    _              ! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$EdDSA.classPK   D:Uc7    ]             !! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$XDH.classPK   D:UʼF	    ^             ?#! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/BC15EdDSAPublicKey.classPK   D:U     c             &! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$XDH.classPK   D:U
    f             b(! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X25519.classPK   D:U$;    ^             )! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed448.classPK   D:U̘  "  Y             +! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi.classPK   D:Ucą    _             :! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/BC15EdDSAPrivateKey.classPK   D:U^    g             O>! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed25519.classPK   D:U&     ^             ?! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$EdDSA.classPK   D:U{/     e             {A! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$EdDSA.classPK   D:UE    _             
C! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448.classPK   D:Un    `             D! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519.classPK   D:UƧ    ^             JF! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448.classPK   D:U_%߿
    _             G! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi.classPK   D:UqH     d             1S! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X448.classPK   D:U	>V    X             T! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi.classPK   D:U    e             a! META-INF/versions/15/org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed448.classPK   
D:UPo	  "  %             3c! META-INF/versions/9/module-info.classPK
 
    D:U                         Xm! org/PK
 
    D:U                         zm! org/bouncycastle/PK   C:U H36                 m! org/bouncycastle/LICENSE.classPK
 
    D:U                         wr! org/bouncycastle/asn1/PK   C:UMSK    &             r! org/bouncycastle/asn1/ASN1Absent.classPK   C:U@
-  t  3             t! org/bouncycastle/asn1/ASN1ApplicationSpecific.classPK   C:U     9             {! org/bouncycastle/asn1/ASN1ApplicationSpecificParser.classPK   C:UtJ  @  +             G|! org/bouncycastle/asn1/ASN1BMPString$1.classPK   C:U
%;Q  0
  )             }! org/bouncycastle/asn1/ASN1BMPString.classPK   C:Ua  5  +             ! org/bouncycastle/asn1/ASN1BitString$1.classPK   C:Uuc7U
    )             r! org/bouncycastle/asn1/ASN1BitString.classPK   C:Uǌ   Z  /             ! org/bouncycastle/asn1/ASN1BitStringParser.classPK   C:U4I  :  )             a! org/bouncycastle/asn1/ASN1Boolean$1.classPK   C:U9P  e  '             ! org/bouncycastle/asn1/ASN1Boolean.classPK   C:U~hScQ   T   &             ! org/bouncycastle/asn1/ASN1Choice.classPK   C:Ugx      )             K! org/bouncycastle/asn1/ASN1Encodable.classPK   C:UVڕ
  h
  /             ! org/bouncycastle/asn1/ASN1EncodableVector.classPK   C:U+f      (             ! org/bouncycastle/asn1/ASN1Encoding.classPK   C:U-{qK  E  ,             u! org/bouncycastle/asn1/ASN1Enumerated$1.classPK   C:UvD  E  *             ! org/bouncycastle/asn1/ASN1Enumerated.classPK   C:U~R   t  )             I! org/bouncycastle/asn1/ASN1Exception.classPK   C:U~J+    *             ! org/bouncycastle/asn1/ASN1External$1.classPK   C:U b	    (             ! org/bouncycastle/asn1/ASN1External.classPK   C:Uq   )  .             ! org/bouncycastle/asn1/ASN1ExternalParser.classPK   C:U9	4I  L  /             ! org/bouncycastle/asn1/ASN1GeneralString$1.classPK   C:U4    -             K! org/bouncycastle/asn1/ASN1GeneralString.classPK   C:UʡO  R  1             ! org/bouncycastle/asn1/ASN1GeneralizedTime$1.classPK   C:U     /             P! org/bouncycastle/asn1/ASN1GeneralizedTime.classPK   C:UbX   !  )             ! org/bouncycastle/asn1/ASN1Generator.classPK   C:U#CI  L  /             ! org/bouncycastle/asn1/ASN1GraphicString$1.classPK   C:UN2i  
  -             \! org/bouncycastle/asn1/ASN1GraphicString.classPK   C:UXJ  @  +             ! org/bouncycastle/asn1/ASN1IA5String$1.classPK   C:UcA  |  )             ]! org/bouncycastle/asn1/ASN1IA5String.classPK   C:U(j  )*  +             ~! org/bouncycastle/asn1/ASN1InputStream.classPK   C:U[YI  :  )             ! org/bouncycastle/asn1/ASN1Integer$1.classPK   C:U X5  8  '             Q! org/bouncycastle/asn1/ASN1Integer.classPK   C:U0J}CH  1  &             ! org/bouncycastle/asn1/ASN1Null$1.classPK   C:Ur[T    $             w! org/bouncycastle/asn1/ASN1Null.classPK   C:ULJ  L  /             ! org/bouncycastle/asn1/ASN1NumericString$1.classPK   C:UkO5  #
  -             ! org/bouncycastle/asn1/ASN1NumericString.classPK   C:U\    &             " org/bouncycastle/asn1/ASN1Object.classPK   C:U9ǥ~    2             " org/bouncycastle/asn1/ASN1ObjectDescriptor$1.classPK   C:Un  u  0             " org/bouncycastle/asn1/ASN1ObjectDescriptor.classPK   C:US  W  2             " org/bouncycastle/asn1/ASN1ObjectIdentifier$1.classPK   C:U
$a  D  :             " org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle.classPK   C:UɀI    0             " org/bouncycastle/asn1/ASN1ObjectIdentifier.classPK   C:UPxBK    -             M" org/bouncycastle/asn1/ASN1OctetString$1.classPK   C:U=:   :  +             " org/bouncycastle/asn1/ASN1OctetString.classPK   C:U^B      1             l$" org/bouncycastle/asn1/ASN1OctetStringParser.classPK   C:U9I"  
  ,             w%" org/bouncycastle/asn1/ASN1OutputStream.classPK   C:U/     0             +" org/bouncycastle/asn1/ASN1ParsingException.classPK   C:UoW  y  )             ," org/bouncycastle/asn1/ASN1Primitive.classPK   C:UyJ  R  1             0" org/bouncycastle/asn1/ASN1PrintableString$1.classPK   C:UgА  
  /             F2" org/bouncycastle/asn1/ASN1PrintableString.classPK   C:UL*AM  H  -             8" org/bouncycastle/asn1/ASN1RelativeOID$1.classPK   C:Ur
  a  +             6:" org/bouncycastle/asn1/ASN1RelativeOID.classPK   C:ULo{X    *             D" org/bouncycastle/asn1/ASN1Sequence$1.classPK   C:UIAA    *             E" org/bouncycastle/asn1/ASN1Sequence$2.classPK   C:Uh)  N  *             )H" org/bouncycastle/asn1/ASN1Sequence$3.classPK   C:U(~  q  (             J" org/bouncycastle/asn1/ASN1Sequence.classPK   C:UN   )  .             ~S" org/bouncycastle/asn1/ASN1SequenceParser.classPK   C:U&    %             T" org/bouncycastle/asn1/ASN1Set$1.classPK   C:US?2    %             V" org/bouncycastle/asn1/ASN1Set$2.classPK   C:U9)  :  %             >X" org/bouncycastle/asn1/ASN1Set$3.classPK   C:U<3
  e  #             Z" org/bouncycastle/asn1/ASN1Set.classPK   C:U]   $  )             >e" org/bouncycastle/asn1/ASN1SetParser.classPK   C:UL	    ,             Sf" org/bouncycastle/asn1/ASN1StreamParser.classPK   C:U,	l      &             Ap" org/bouncycastle/asn1/ASN1String.classPK   C:UCK  @  +             q" org/bouncycastle/asn1/ASN1T61String$1.classPK   C:U  
  )             r" org/bouncycastle/asn1/ASN1T61String.classPK   C:U\    #             w" org/bouncycastle/asn1/ASN1Tag.classPK   C:UV"||  %  ,             Zy" org/bouncycastle/asn1/ASN1TaggedObject.classPK   C:USqb    2             0" org/bouncycastle/asn1/ASN1TaggedObjectParser.classPK   C:UZ+.    $             " org/bouncycastle/asn1/ASN1Type.classPK   C:U,_5I  :  )             r" org/bouncycastle/asn1/ASN1UTCTime$1.classPK   C:U7    '             " org/bouncycastle/asn1/ASN1UTCTime.classPK   C:U.}-H  C  ,             " org/bouncycastle/asn1/ASN1UTF8String$1.classPK   C:U$  
  *             @" org/bouncycastle/asn1/ASN1UTF8String.classPK   C:USF  R  1             " org/bouncycastle/asn1/ASN1UniversalString$1.classPK   C:U-kVH  
  /             ," org/bouncycastle/asn1/ASN1UniversalString.classPK   C:UzUr    -             Ѥ" org/bouncycastle/asn1/ASN1UniversalType.classPK   C:U    .             " org/bouncycastle/asn1/ASN1UniversalTypes.classPK   C:UKĹC    $             ī" org/bouncycastle/asn1/ASN1Util.classPK   C:UHwL  O  0             Y" org/bouncycastle/asn1/ASN1VideotexString$1.classPK   C:UY  
  .             " org/bouncycastle/asn1/ASN1VideotexString.classPK   C:U#I  L  /             %" org/bouncycastle/asn1/ASN1VisibleString$1.classPK   C:UanC    -             ˺" org/bouncycastle/asn1/ASN1VisibleString.classPK   C:U=t  9  2              " org/bouncycastle/asn1/BERApplicationSpecific.classPK   C:Ua.    8             " org/bouncycastle/asn1/BERApplicationSpecificParser.classPK   C:UZjm  
  (             " org/bouncycastle/asn1/BERBitString.classPK   C:U%&  g  .             K" org/bouncycastle/asn1/BERBitStringParser.classPK   C:Uh
  l  &             " org/bouncycastle/asn1/BERFactory.classPK   C:U %    (             " org/bouncycastle/asn1/BERGenerator.classPK   C:UmذR  )  ,             " org/bouncycastle/asn1/BEROctetString$1.classPK   C:UQ  M  ,             " org/bouncycastle/asn1/BEROctetString$2.classPK   C:U2  	  *             " org/bouncycastle/asn1/BEROctetString.classPK   C:U    J             " org/bouncycastle/asn1/BEROctetStringGenerator$BufferedBEROctetStream.classPK   C:UȠty    3             " org/bouncycastle/asn1/BEROctetStringGenerator.classPK   C:UW8T^  T  0             Y" org/bouncycastle/asn1/BEROctetStringParser.classPK   C:U2      +             T" org/bouncycastle/asn1/BEROutputStream.classPK   C:U%Ѵ    '             =" org/bouncycastle/asn1/BERSequence.classPK   C:UE\  _  0             " org/bouncycastle/asn1/BERSequenceGenerator.classPK   C:Ufi    -             " org/bouncycastle/asn1/BERSequenceParser.classPK   C:UbrW(    "             $" org/bouncycastle/asn1/BERSet.classPK   C:UvL    (             " org/bouncycastle/asn1/BERSetParser.classPK   C:UJ^    +             " org/bouncycastle/asn1/BERTaggedObject.classPK   C:U{    1             " org/bouncycastle/asn1/BERTaggedObjectParser.classPK   C:U87&o  ^  #             S" org/bouncycastle/asn1/BERTags.classPK   C:U!h    0             " org/bouncycastle/asn1/ConstructedBitStream.classPK   C:UҐI  @  2             f # org/bouncycastle/asn1/ConstructedOctetStream.classPK   C:Uu.w  -  2             # org/bouncycastle/asn1/DERApplicationSpecific.classPK   C:UW1    (             N# org/bouncycastle/asn1/DERBMPString.classPK   C:UJ  
  (             	# org/bouncycastle/asn1/DERBitString.classPK   C:Uz  d  '             # org/bouncycastle/asn1/DERExternal.classPK   C:Uc  R  -             # org/bouncycastle/asn1/DERExternalParser.classPK   C:Uq$  l  &             # org/bouncycastle/asn1/DERFactory.classPK   C:U9    ,             # org/bouncycastle/asn1/DERGeneralString.classPK   C:U48  s  .             # org/bouncycastle/asn1/DERGeneralizedTime.classPK   C:UyEb  N  (             C# org/bouncycastle/asn1/DERGenerator.classPK   C:US^R    ,             < # org/bouncycastle/asn1/DERGraphicString.classPK   C:U\V  &  (             ## org/bouncycastle/asn1/DERIA5String.classPK   C:U:%    #             &# org/bouncycastle/asn1/DERNull.classPK   C:U4  6  ,             (# org/bouncycastle/asn1/DERNumericString.classPK   C:U&?   \  *             *,# org/bouncycastle/asn1/DEROctetString.classPK   C:U|_NY    0             .# org/bouncycastle/asn1/DEROctetStringParser.classPK   C:Uj    +             Y1# org/bouncycastle/asn1/DEROutputStream.classPK   C:U.  >  .             3# org/bouncycastle/asn1/DERPrintableString.classPK   C:UStL    '             6# org/bouncycastle/asn1/DERSequence.classPK   C:U#  E  0             <# org/bouncycastle/asn1/DERSequenceGenerator.classPK   C:Ua <    "             ># org/bouncycastle/asn1/DERSet.classPK   C:UO  
  (             C# org/bouncycastle/asn1/DERT61String.classPK   C:ULj  `  +             _F# org/bouncycastle/asn1/DERTaggedObject.classPK   C:UƐ_   )  &             wJ# org/bouncycastle/asn1/DERUTCTime.classPK   C:U3_    )             K# org/bouncycastle/asn1/DERUTF8String.classPK   C:Ugݎ    .             N# org/bouncycastle/asn1/DERUniversalString.classPK   C:UB\    -             R# org/bouncycastle/asn1/DERVideotexString.classPK   C:UcI    ,             iU# org/bouncycastle/asn1/DERVisibleString.classPK   C:Uji  ?  1             X# org/bouncycastle/asn1/DLApplicationSpecific.classPK   C:U#W0    '             
[# org/bouncycastle/asn1/DLBitString.classPK   C:UQ  }  -             ^# org/bouncycastle/asn1/DLBitStringParser.classPK   C:UՔ  4  &             *b# org/bouncycastle/asn1/DLExternal.classPK   C:UHxX  e  %             Ee# org/bouncycastle/asn1/DLFactory.classPK   C:U
d    *             ,g# org/bouncycastle/asn1/DLOutputStream.classPK   C:U)#  o  &             di# org/bouncycastle/asn1/DLSequence.classPK   C:UXS7  '  ,             hn# org/bouncycastle/asn1/DLSequenceParser.classPK   C:Uad  F  !             p# org/bouncycastle/asn1/DLSet.classPK   C:U6  4  '             tt# org/bouncycastle/asn1/DLSetParser.classPK   C:Uƺ  1  *             v# org/bouncycastle/asn1/DLTaggedObject.classPK   C:Ub    0             z# org/bouncycastle/asn1/DLTaggedObjectParser.classPK   C:U\T]  E  $             4~# org/bouncycastle/asn1/DateUtil.classPK   C:U8     5             *# org/bouncycastle/asn1/DefiniteLengthInputStream.classPK   C:U*6'      1             ņ# org/bouncycastle/asn1/InMemoryRepresentable.classPK   C:UT~}  8  7             ˇ# org/bouncycastle/asn1/IndefiniteLengthInputStream.classPK   C:UEEm  z  7             # org/bouncycastle/asn1/LazyConstructionEnumeration.classPK   C:U]6k8    /             # org/bouncycastle/asn1/LazyEncodedSequence.classPK   C:UboM    .             # org/bouncycastle/asn1/LimitedInputStream.classPK   C:Ui  o  (             # org/bouncycastle/asn1/OIDTokenizer.classPK   C:Uf  @  &             # org/bouncycastle/asn1/StreamUtil.classPK
 
    D:U                         	# org/bouncycastle/asn1/anssi/PK   C:U9    4             C# org/bouncycastle/asn1/anssi/ANSSINamedCurves$1.classPK   C:Um    2             ޜ# org/bouncycastle/asn1/anssi/ANSSINamedCurves.classPK   C:U1   i  8             ڡ# org/bouncycastle/asn1/anssi/ANSSIObjectIdentifiers.classPK
 
    D:U                         :# org/bouncycastle/asn1/bc/PK   C:UD`x  !  2             q# org/bouncycastle/asn1/bc/BCObjectIdentifiers.classPK   C:U    7             I# org/bouncycastle/asn1/bc/EncryptedObjectStoreData.classPK   C:U"[*     6             t# org/bouncycastle/asn1/bc/EncryptedPrivateKeyData.classPK   C:U/'    5             # org/bouncycastle/asn1/bc/EncryptedSecretKeyData.classPK   C:UQ"?  f  ,             5# org/bouncycastle/asn1/bc/ExternalValue.classPK   C:US^n@    0             ν# org/bouncycastle/asn1/bc/LinkedCertificate.classPK   C:U+k  4  )             l# org/bouncycastle/asn1/bc/ObjectData.classPK   C:Ut    1             .# org/bouncycastle/asn1/bc/ObjectDataSequence.classPK   C:UW-    *             W# org/bouncycastle/asn1/bc/ObjectStore.classPK   C:U:G$>t  p  .             # org/bouncycastle/asn1/bc/ObjectStoreData.classPK   C:U1    8             # org/bouncycastle/asn1/bc/ObjectStoreIntegrityCheck.classPK   C:UDض0  L  4             # org/bouncycastle/asn1/bc/PbkdMacIntegrityCheck.classPK   C:UMH    ,             '# org/bouncycastle/asn1/bc/SecretKeyData.classPK   C:U\:0  
  -             C# org/bouncycastle/asn1/bc/SignatureCheck.classPK
 
    D:U                         # org/bouncycastle/asn1/cryptlib/PK   C:UcW  H  >             # org/bouncycastle/asn1/cryptlib/CryptlibObjectIdentifiers.classPK
 
    D:U                          # org/bouncycastle/asn1/cryptopro/PK   C:UL  	  @             # org/bouncycastle/asn1/cryptopro/CryptoProObjectIdentifiers.classPK   C:UAk    =             Z# org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$1.classPK   C:UW    =             ~# org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$2.classPK   C:U8u    =             # org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$3.classPK   C:U    =             -# org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$4.classPK   C:UY`M  J  =             # org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$5.classPK   C:Uke  S  =             B# org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$6.classPK   C:Ule  Q  =             # org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$7.classPK   C:Uz    =              $ org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves$8.classPK   C:U)Lh    ;             K$ org/bouncycastle/asn1/cryptopro/ECGOST3410NamedCurves.classPK   C:U?a  3	  B             $ org/bouncycastle/asn1/cryptopro/ECGOST3410ParamSetParameters.classPK   C:Un)  Z  9             v$ org/bouncycastle/asn1/cryptopro/GOST28147Parameters.classPK   C:U1:~,    =             $ org/bouncycastle/asn1/cryptopro/GOST3410NamedParameters.classPK   C:U  )	  @             M$ org/bouncycastle/asn1/cryptopro/GOST3410ParamSetParameters.classPK   C:Uv    D              $ org/bouncycastle/asn1/cryptopro/GOST3410PublicKeyAlgParameters.classPK   C:Uy6  n	  =             .$$ org/bouncycastle/asn1/cryptopro/Gost2814789EncryptedKey.classPK   C:U!p
    B             ($ org/bouncycastle/asn1/cryptopro/Gost2814789KeyWrapParameters.classPK   C:Uz&^  c  ;             ,$ org/bouncycastle/asn1/cryptopro/GostR3410KeyTransport.classPK   C:UP*y    B             0$ org/bouncycastle/asn1/cryptopro/GostR3410TransportParameters.classPK
 
    D:U                         4$ org/bouncycastle/asn1/edec/PK   C:Ur    6             .5$ org/bouncycastle/asn1/edec/EdECObjectIdentifiers.classPK
 
    D:U                         7$ org/bouncycastle/asn1/gm/PK   C:UD̮    .             M7$ org/bouncycastle/asn1/gm/GMNamedCurves$1.classPK   C:Uga"    .             :$ org/bouncycastle/asn1/gm/GMNamedCurves$2.classPK   C:Uҹ    ,             @>$ org/bouncycastle/asn1/gm/GMNamedCurves.classPK   C:U!IX~    2             hC$ org/bouncycastle/asn1/gm/GMObjectIdentifiers.classPK
 
    D:U                         FJ$ org/bouncycastle/asn1/gnu/PK   C:U	{<<    4             ~J$ org/bouncycastle/asn1/gnu/GNUObjectIdentifiers.classPK
 
    D:U                         N$ org/bouncycastle/asn1/iana/PK   C:Ukf  w  6             UN$ org/bouncycastle/asn1/iana/IANAObjectIdentifiers.classPK
 
    D:U                         Q$ org/bouncycastle/asn1/isara/PK   C:US    8             YQ$ org/bouncycastle/asn1/isara/IsaraObjectIdentifiers.classPK
 
    D:U                         R$ org/bouncycastle/asn1/iso/PK   C:U[  7  7             
S$ org/bouncycastle/asn1/iso/ISOIECObjectIdentifiers.classPK
 
    D:U                         RU$ org/bouncycastle/asn1/kisa/PK   C:UЂ    6             U$ org/bouncycastle/asn1/kisa/KISAObjectIdentifiers.classPK
 
    D:U                          W$ org/bouncycastle/asn1/microsoft/PK   C:UwĿ  ?  @             W$ org/bouncycastle/asn1/microsoft/MicrosoftObjectIdentifiers.classPK
 
    D:U                         Y$ org/bouncycastle/asn1/misc/PK   C:U)    3             /Z$ org/bouncycastle/asn1/misc/CAST5CBCParameters.classPK   C:Uݑ\  D  +             \]$ org/bouncycastle/asn1/misc/IDEACBCPar.classPK   C:UJp  N  6             @`$ org/bouncycastle/asn1/misc/MiscObjectIdentifiers.classPK   C:UTbtc  R  1             xf$ org/bouncycastle/asn1/misc/NetscapeCertType.classPK   C:U5=  $  6             :i$ org/bouncycastle/asn1/misc/NetscapeRevocationURL.classPK   C:Uc  
  -             j$ org/bouncycastle/asn1/misc/ScryptParams.classPK   C:U$*<  $  6             o$ org/bouncycastle/asn1/misc/VerisignCzagExtension.classPK
 
    D:U                         pq$ org/bouncycastle/asn1/mozilla/PK   C:U_  k  9             q$ org/bouncycastle/asn1/mozilla/PublicKeyAndChallenge.classPK   C:UO  $  ?             t$ org/bouncycastle/asn1/mozilla/SignedPublicKeyAndChallenge.classPK
 
    D:U                         hw$ org/bouncycastle/asn1/nist/PK   C:UW
  9  8             w$ org/bouncycastle/asn1/nist/KMACwithSHAKE128_params.classPK   C:U%  9  8             |$ org/bouncycastle/asn1/nist/KMACwithSHAKE256_params.classPK   C:Uk,  V
  0             w$ org/bouncycastle/asn1/nist/NISTNamedCurves.classPK   C:U<   Q  6             $ org/bouncycastle/asn1/nist/NISTObjectIdentifiers.classPK
 
    D:U                         e$ org/bouncycastle/asn1/nsri/PK   C:Up,Y  r	  6             $ org/bouncycastle/asn1/nsri/NSRIObjectIdentifiers.classPK
 
    D:U                         $ org/bouncycastle/asn1/ntt/PK   C:U*7s    4             .$ org/bouncycastle/asn1/ntt/NTTObjectIdentifiers.classPK
 
    D:U                         $ org/bouncycastle/asn1/ocsp/PK   C:U0x  =
  2             <$ org/bouncycastle/asn1/ocsp/BasicOCSPResponse.classPK   C:U    '             -$ org/bouncycastle/asn1/ocsp/CertID.classPK   C:U  	  +             $ org/bouncycastle/asn1/ocsp/CertStatus.classPK   C:UUZ1l  
  &             $ org/bouncycastle/asn1/ocsp/CrlID.classPK   C:UE	  q  6             x$ org/bouncycastle/asn1/ocsp/OCSPObjectIdentifiers.classPK   C:UV+s+  '  ,             $ org/bouncycastle/asn1/ocsp/OCSPRequest.classPK   C:U!ҫ  f  -             E$ org/bouncycastle/asn1/ocsp/OCSPResponse.classPK   C:UWfZ  h  3             $ org/bouncycastle/asn1/ocsp/OCSPResponseStatus.classPK   C:UmΉ    (             R$ org/bouncycastle/asn1/ocsp/Request.classPK   C:U(    ,             $ org/bouncycastle/asn1/ocsp/ResponderID.classPK   C:UT    .             $ org/bouncycastle/asn1/ocsp/ResponseBytes.classPK   C:U%W%    -             $ org/bouncycastle/asn1/ocsp/ResponseData.classPK   C:UsC    ,             Ƽ$ org/bouncycastle/asn1/ocsp/RevokedInfo.classPK   C:UϓZ  I  /             =$ org/bouncycastle/asn1/ocsp/ServiceLocator.classPK   C:U!<  <	  *             4$ org/bouncycastle/asn1/ocsp/Signature.classPK   C:UiO  
  /             $ org/bouncycastle/asn1/ocsp/SingleResponse.classPK   C:Ue7Ua    +             t$ org/bouncycastle/asn1/ocsp/TBSRequest.classPK
 
    D:U                         .$ org/bouncycastle/asn1/oiw/PK   C:Uz
  t  0             f$ org/bouncycastle/asn1/oiw/ElGamalParameter.classPK   C:U`"    4             M$ org/bouncycastle/asn1/oiw/OIWObjectIdentifiers.classPK
 
    D:U                         $ org/bouncycastle/asn1/pkcs/PK   C:U,  ^  *             $ org/bouncycastle/asn1/pkcs/Attribute.classPK   C:U"  '  2             j$ org/bouncycastle/asn1/pkcs/AuthenticatedSafe.classPK   C:Uo  -  '             $ org/bouncycastle/asn1/pkcs/CRLBag.classPK   C:Ud!S    (             F$ org/bouncycastle/asn1/pkcs/CertBag.classPK   C:Uށ  8  5              $ org/bouncycastle/asn1/pkcs/CertificationRequest.classPK   C:U    9             s$ org/bouncycastle/asn1/pkcs/CertificationRequestInfo.classPK   C:U:߄    ,             $ org/bouncycastle/asn1/pkcs/ContentInfo.classPK   C:Ug/    ,             $ org/bouncycastle/asn1/pkcs/DHParameter.classPK   C:U  x	  .             $ org/bouncycastle/asn1/pkcs/EncryptedData.classPK   C:UigS
     8             $ org/bouncycastle/asn1/pkcs/EncryptedPrivateKeyInfo.classPK   C:U    1             $ org/bouncycastle/asn1/pkcs/EncryptionScheme.classPK   C:U"  D  6             $ org/bouncycastle/asn1/pkcs/IssuerAndSerialNumber.classPK   C:Us@     2             $ org/bouncycastle/asn1/pkcs/KeyDerivationFunc.classPK   C:U)    (             % org/bouncycastle/asn1/pkcs/MacData.classPK   C:Uug  F  -             3% org/bouncycastle/asn1/pkcs/PBEParameter.classPK   C:U֋v  -	  0             	% org/bouncycastle/asn1/pkcs/PBES2Parameters.classPK   C:U&8ݔS  b  -             g
% org/bouncycastle/asn1/pkcs/PBKDF2Params.classPK   C:UcKU[  T  -             % org/bouncycastle/asn1/pkcs/PBMAC1Params.classPK   C:Uז*    0             % org/bouncycastle/asn1/pkcs/PKCS12PBEParams.classPK   C:UcX  g$  6             % org/bouncycastle/asn1/pkcs/PKCSObjectIdentifiers.classPK   C:U@0R    $             (% org/bouncycastle/asn1/pkcs/Pfx.classPK   C:U3&  m  /             z,% org/bouncycastle/asn1/pkcs/PrivateKeyInfo.classPK   C:U-   V  0             3% org/bouncycastle/asn1/pkcs/RC2CBCParameter.classPK   C:U1=P  ~  0             X7% org/bouncycastle/asn1/pkcs/RSAESOAEPparams.classPK   C:UR&    .             <% org/bouncycastle/asn1/pkcs/RSAPrivateKey.classPK   C:UpT    7             A% org/bouncycastle/asn1/pkcs/RSAPrivateKeyStructure.classPK   C:U;,  .  -             G% org/bouncycastle/asn1/pkcs/RSAPublicKey.classPK   C:UMse  
  0             K% org/bouncycastle/asn1/pkcs/RSASSAPSSparams.classPK   C:U
h    (             bQ% org/bouncycastle/asn1/pkcs/SafeBag.classPK   C:U-    +             T% org/bouncycastle/asn1/pkcs/SignedData.classPK   C:U5N    +             Y% org/bouncycastle/asn1/pkcs/SignerInfo.classPK
 
    D:U            "             _% org/bouncycastle/asn1/rosstandart/PK   C:U	/d    D             _% org/bouncycastle/asn1/rosstandart/RosstandartObjectIdentifiers.classPK
 
    D:U                         b% org/bouncycastle/asn1/sec/PK   C:Uم:    ,             0c% org/bouncycastle/asn1/sec/ECPrivateKey.classPK   C:Uf"  w	  5             h% org/bouncycastle/asn1/sec/ECPrivateKeyStructure.classPK   C:U=S    0             Im% org/bouncycastle/asn1/sec/SECNamedCurves$1.classPK   C:Uc *S  
  1             p% org/bouncycastle/asn1/sec/SECNamedCurves$10.classPK   C:U3KT  h  1             su% org/bouncycastle/asn1/sec/SECNamedCurves$11.classPK   C:UlKm  Q
  1             &y% org/bouncycastle/asn1/sec/SECNamedCurves$12.classPK   C:U2o    1             }% org/bouncycastle/asn1/sec/SECNamedCurves$13.classPK   C:U+  X  1             % org/bouncycastle/asn1/sec/SECNamedCurves$14.classPK   C:U	&	  0	  1             ޅ% org/bouncycastle/asn1/sec/SECNamedCurves$15.classPK   C:Uax#    1             F% org/bouncycastle/asn1/sec/SECNamedCurves$16.classPK   C:U%    1             ȍ% org/bouncycastle/asn1/sec/SECNamedCurves$17.classPK   C:U]=    1             L% org/bouncycastle/asn1/sec/SECNamedCurves$18.classPK   C:UƂ<    1             % org/bouncycastle/asn1/sec/SECNamedCurves$19.classPK   C:Uc:    0             % org/bouncycastle/asn1/sec/SECNamedCurves$2.classPK   C:UX    1             % org/bouncycastle/asn1/sec/SECNamedCurves$20.classPK   C:U?S    1             1% org/bouncycastle/asn1/sec/SECNamedCurves$21.classPK   C:Ufhס:    1             % org/bouncycastle/asn1/sec/SECNamedCurves$22.classPK   C:UCli    1             |% org/bouncycastle/asn1/sec/SECNamedCurves$23.classPK   C:UFd7h    1             D% org/bouncycastle/asn1/sec/SECNamedCurves$24.classPK   C:U  x  1             % org/bouncycastle/asn1/sec/SECNamedCurves$25.classPK   C:U	^    1             `% org/bouncycastle/asn1/sec/SECNamedCurves$26.classPK   C:Uؕ  {  1             % org/bouncycastle/asn1/sec/SECNamedCurves$27.classPK   C:U_ry    1             p% org/bouncycastle/asn1/sec/SECNamedCurves$28.classPK   C:UZ$  3  1             % org/bouncycastle/asn1/sec/SECNamedCurves$29.classPK   C:U_	    0             ˿% org/bouncycastle/asn1/sec/SECNamedCurves$3.classPK   C:U2D    1             A% org/bouncycastle/asn1/sec/SECNamedCurves$30.classPK   C:U~)"    1             % org/bouncycastle/asn1/sec/SECNamedCurves$31.classPK   C:U<O    1             
% org/bouncycastle/asn1/sec/SECNamedCurves$32.classPK   C:U,Ka"  R  1             % org/bouncycastle/asn1/sec/SECNamedCurves$33.classPK   C:UN3    0             % org/bouncycastle/asn1/sec/SECNamedCurves$4.classPK   C:U0  	  0             % org/bouncycastle/asn1/sec/SECNamedCurves$5.classPK   C:UK-  	  0             t% org/bouncycastle/asn1/sec/SECNamedCurves$6.classPK   C:Uv)  	  0             % org/bouncycastle/asn1/sec/SECNamedCurves$7.classPK   C:U2r'  	  0             % org/bouncycastle/asn1/sec/SECNamedCurves$8.classPK   C:Ui:  7  0             % org/bouncycastle/asn1/sec/SECNamedCurves$9.classPK   C:U=|g
    .             % org/bouncycastle/asn1/sec/SECNamedCurves.classPK   C:U1(C  
  4             % org/bouncycastle/asn1/sec/SECObjectIdentifiers.classPK
 
    D:U                          s% org/bouncycastle/asn1/teletrust/PK   C:UɡY    <             % org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$1.classPK   C:U?i  z  =              % org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$10.classPK   C:U    =             & org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$11.classPK   C:Ud    =             '& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$12.classPK   C:U    =             %& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$13.classPK   C:U^_    =             & org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$14.classPK   C:UkB    <             & org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$2.classPK   C:U6!    <             A& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$3.classPK   C:Uj(    <             & org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$4.classPK   C:UAB    <             =& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$5.classPK   C:U;h    <             !& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$6.classPK   C:UT    <             p%& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$7.classPK   C:UKS9    <             .)& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$8.classPK   C:U;m  y  <             ,& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves$9.classPK   C:Ul A  b  :             0& org/bouncycastle/asn1/teletrust/TeleTrusTNamedCurves.classPK   C:Uu_J  b  @             8& org/bouncycastle/asn1/teletrust/TeleTrusTObjectIdentifiers.classPK
 
    D:U                         <& org/bouncycastle/asn1/ua/PK   C:UFA<Q     2             <& org/bouncycastle/asn1/ua/DSTU4145BinaryField.classPK   C:UX    /             r@& org/bouncycastle/asn1/ua/DSTU4145ECBinary.classPK   C:U+G}  2  2             G& org/bouncycastle/asn1/ua/DSTU4145NamedCurves.classPK   C:UpE5  |  -             nT& org/bouncycastle/asn1/ua/DSTU4145Params.classPK   C:UL{  r	  3             Y& org/bouncycastle/asn1/ua/DSTU4145PointEncoder.classPK   C:U	DIe    0             _& org/bouncycastle/asn1/ua/DSTU4145PublicKey.classPK   C:U5o    2             :a& org/bouncycastle/asn1/ua/UAObjectIdentifiers.classPK
 
    D:U                         -f& org/bouncycastle/asn1/util/PK   C:U_2    )             ff& org/bouncycastle/asn1/util/ASN1Dump.classPK   C:Ua f    (             q& org/bouncycastle/asn1/util/DERDump.classPK   C:UP,b    %             s& org/bouncycastle/asn1/util/Dump.classPK
 
    D:U                         `v& org/bouncycastle/asn1/x500/PK   C:UiS    6             v& org/bouncycastle/asn1/x500/AttributeTypeAndValue.classPK   C:U\6n    0             y& org/bouncycastle/asn1/x500/DirectoryString.classPK   C:U1n8  	  $             U}& org/bouncycastle/asn1/x500/RDN.classPK   C:UjOt    )             x& org/bouncycastle/asn1/x500/X500Name.classPK   C:UK  s
  0             C& org/bouncycastle/asn1/x500/X500NameBuilder.classPK   C:U8^7  8  .             #& org/bouncycastle/asn1/x500/X500NameStyle.classPK
 
    D:U            !             & org/bouncycastle/asn1/x500/style/PK   C:UMa  }
  <             & org/bouncycastle/asn1/x500/style/AbstractX500NameStyle.classPK   C:U    4             T& org/bouncycastle/asn1/x500/style/BCStrictStyle.classPK   C:UB$    .             C& org/bouncycastle/asn1/x500/style/BCStyle.classPK   C:U?oW     0             ã& org/bouncycastle/asn1/x500/style/IETFUtils.classPK   C:Uu29    3             Ͳ& org/bouncycastle/asn1/x500/style/RFC4519Style.classPK   C:Uw    8             & org/bouncycastle/asn1/x500/style/X500NameTokenizer.classPK
 
    D:U                         & org/bouncycastle/asn1/x509/PK   C:U.    2             $& org/bouncycastle/asn1/x509/AccessDescription.classPK   C:U Fp    4             O& org/bouncycastle/asn1/x509/AlgorithmIdentifier.classPK   C:U0oiC    .             !& org/bouncycastle/asn1/x509/AttCertIssuer.classPK   C:UV&9     6             & org/bouncycastle/asn1/x509/AttCertValidityPeriod.classPK   C:UMiZ  3  *             (& org/bouncycastle/asn1/x509/Attribute.classPK   C:U$"  	  5             & org/bouncycastle/asn1/x509/AttributeCertificate.classPK   C:U!  e  9             & org/bouncycastle/asn1/x509/AttributeCertificateInfo.classPK   C:U=b5  
  ;             & org/bouncycastle/asn1/x509/AuthorityInformationAccess.classPK   C:U&q    7             & org/bouncycastle/asn1/x509/AuthorityKeyIdentifier.classPK   C:UOi    1             l& org/bouncycastle/asn1/x509/BasicConstraints.classPK   C:U)  }	  -             & org/bouncycastle/asn1/x509/CRLDistPoint.classPK   C:Uf    *             & org/bouncycastle/asn1/x509/CRLNumber.classPK   C:U%,o  
  *             & org/bouncycastle/asn1/x509/CRLReason.classPK   C:U*[    -             & org/bouncycastle/asn1/x509/CertPolicyId.classPK   C:U(t3  
  ,             & org/bouncycastle/asn1/x509/Certificate.classPK   C:UNt    0             ' org/bouncycastle/asn1/x509/CertificateList.classPK   C:U4ޔ(  _	  0             ' org/bouncycastle/asn1/x509/CertificatePair.classPK   C:U4vr    4             9
' org/bouncycastle/asn1/x509/CertificatePolicies.classPK   C:Ux  w  -             
' org/bouncycastle/asn1/x509/DSAParameter.classPK   C:U)#    +             ' org/bouncycastle/asn1/x509/DigestInfo.classPK   C:Ubc  	  ,             {' org/bouncycastle/asn1/x509/DisplayText.classPK   C:U?j5  b  2             8' org/bouncycastle/asn1/x509/DistributionPoint.classPK   C:U  
  6             k$' org/bouncycastle/asn1/x509/DistributionPointName.classPK   C:Uc߹*    1             d)' org/bouncycastle/asn1/x509/ExtendedKeyUsage.classPK   C:UBה	    *             .' org/bouncycastle/asn1/x509/Extension.classPK   C:UӍ    +             9' org/bouncycastle/asn1/x509/Extensions.classPK   C:U-  h  4             ?' org/bouncycastle/asn1/x509/ExtensionsGenerator.classPK   C:U{ʃ
    ,             H' org/bouncycastle/asn1/x509/GeneralName.classPK   C:Uޣ[  

  -             bS' org/bouncycastle/asn1/x509/GeneralNames.classPK   C:U=A:~  O  4             W' org/bouncycastle/asn1/x509/GeneralNamesBuilder.classPK   C:Uv0WA3  
  /             Y' org/bouncycastle/asn1/x509/GeneralSubtree.classPK   C:UItJC    '             _' org/bouncycastle/asn1/x509/Holder.classPK   C:U/Vl    /             e' org/bouncycastle/asn1/x509/IetfAttrSyntax.classPK   C:U7!  m  -             j' org/bouncycastle/asn1/x509/IssuerSerial.classPK   C:UPq    9             ao' org/bouncycastle/asn1/x509/IssuingDistributionPoint.classPK   C:Uvs6    -             mv' org/bouncycastle/asn1/x509/KeyPurposeId.classPK   C:Uq  d  )             {' org/bouncycastle/asn1/x509/KeyUsage.classPK   C:U:G     8             ' org/bouncycastle/asn1/x509/NameConstraintValidator.classPK   C:Uz      A             e' org/bouncycastle/asn1/x509/NameConstraintValidatorException.classPK   C:UD    0             {' org/bouncycastle/asn1/x509/NameConstraints.classPK   C:Uhm"  K  0             ' org/bouncycastle/asn1/x509/NoticeReference.classPK   C:Ut$  m  1             Ì' org/bouncycastle/asn1/x509/ObjectDigestInfo.classPK   C:U3u֨    *             ő' org/bouncycastle/asn1/x509/OtherName.classPK   C:U	8  }J  <             ' org/bouncycastle/asn1/x509/PKIXNameConstraintValidator.classPK   C:U3  	  2             O' org/bouncycastle/asn1/x509/PolicyConstraints.classPK   C:UvA  2
  2             ' org/bouncycastle/asn1/x509/PolicyInformation.classPK   C:Ur    /             ' org/bouncycastle/asn1/x509/PolicyMappings.classPK   C:UJ    2             ݼ' org/bouncycastle/asn1/x509/PolicyQualifierId.classPK   C:UDxR  W  4             ' org/bouncycastle/asn1/x509/PolicyQualifierInfo.classPK   C:U?\    6             ;' org/bouncycastle/asn1/x509/PrivateKeyUsagePeriod.classPK   C:UryHV    6             ' org/bouncycastle/asn1/x509/RSAPublicKeyStructure.classPK   C:U1g  n  ,             ' org/bouncycastle/asn1/x509/ReasonFlags.classPK   C:UV    +             ' org/bouncycastle/asn1/x509/RoleSyntax.classPK   C:UV;  H  ;             i' org/bouncycastle/asn1/x509/SubjectDirectoryAttributes.classPK   C:UW]  V  5             ' org/bouncycastle/asn1/x509/SubjectKeyIdentifier.classPK   C:URI  F  5             ' org/bouncycastle/asn1/x509/SubjectPublicKeyInfo.classPK   C:Uik      .             J' org/bouncycastle/asn1/x509/TBSCertList$1.classPK   C:Ud\    5             ;' org/bouncycastle/asn1/x509/TBSCertList$CRLEntry.classPK   C:U|
i    =             ' org/bouncycastle/asn1/x509/TBSCertList$EmptyEnumeration.classPK   C:U    K             ' org/bouncycastle/asn1/x509/TBSCertList$RevokedCertificatesEnumeration.classPK   C:U=+ԇ    ,             ' org/bouncycastle/asn1/x509/TBSCertList.classPK   C:U0    /             ' org/bouncycastle/asn1/x509/TBSCertificate.classPK   C:U}]    8             ' org/bouncycastle/asn1/x509/TBSCertificateStructure.classPK   C:UZ\  r  '             ' org/bouncycastle/asn1/x509/Target.classPK   C:U.|    2             ;' org/bouncycastle/asn1/x509/TargetInformation.classPK   C:UDb    (             #( org/bouncycastle/asn1/x509/Targets.classPK   C:U
=  *  %             ( org/bouncycastle/asn1/x509/Time.classPK   C:Uݢ    +             F
( org/bouncycastle/asn1/x509/UserNotice.classPK   C:U:1M8   
  :             A( org/bouncycastle/asn1/x509/V1TBSCertificateGenerator.classPK   C:U$A  M
  D             ( org/bouncycastle/asn1/x509/V2AttributeCertificateInfoGenerator.classPK   C:U*f  Q
  '             ( org/bouncycastle/asn1/x509/V2Form.classPK   C:U    7              ( org/bouncycastle/asn1/x509/V2TBSCertListGenerator.classPK   C:Uk'B  0  :             ,%( org/bouncycastle/asn1/x509/V3TBSCertificateGenerator.classPK   C:U8h}    9             L+( org/bouncycastle/asn1/x509/X509AttributeIdentifiers.classPK   C:UҲ    9             0.( org/bouncycastle/asn1/x509/X509CertificateStructure.classPK   C:Ui7  N  :             2( org/bouncycastle/asn1/x509/X509DefaultEntryConverter.classPK   C:Ujb_  p  .             /6( org/bouncycastle/asn1/x509/X509Extension.classPK   C:Ux  m  /             =( org/bouncycastle/asn1/x509/X509Extensions.classPK   C:UYך    8             kI( org/bouncycastle/asn1/x509/X509ExtensionsGenerator.classPK   C:Uz&Bt  >  )             kM( org/bouncycastle/asn1/x509/X509Name.classPK   C:Ut  a  7             6i( org/bouncycastle/asn1/x509/X509NameEntryConverter.classPK   C:UQ	    2             ak( org/bouncycastle/asn1/x509/X509NameTokenizer.classPK   C:U"Å    6             An( org/bouncycastle/asn1/x509/X509ObjectIdentifiers.classPK
 
    D:U            %             }r( org/bouncycastle/asn1/x509/qualified/PK   C:U=Mr  <  8             r( org/bouncycastle/asn1/x509/qualified/BiometricData.classPK   C:U    B             ?w( org/bouncycastle/asn1/x509/qualified/ETSIQCObjectIdentifiers.classPK   C:U2Z  $  >             y( org/bouncycastle/asn1/x509/qualified/Iso4217CurrencyCode.classPK   C:Uy  N  8             }( org/bouncycastle/asn1/x509/qualified/MonetaryValue.classPK   C:Uv}    6             ( org/bouncycastle/asn1/x509/qualified/QCStatement.classPK   C:UN-(    E             c( org/bouncycastle/asn1/x509/qualified/RFC3739QCObjectIdentifiers.classPK   C:U򺈘F  
  ?             ( org/bouncycastle/asn1/x509/qualified/SemanticsInformation.classPK   C:U&EX    >             ( org/bouncycastle/asn1/x509/qualified/TypeOfBiometricData.classPK
 
    D:U                          u( org/bouncycastle/asn1/x509/sigi/PK   C:U0	    5             ( org/bouncycastle/asn1/x509/sigi/NameOrPseudonym.classPK   C:U
"  
  2             ( org/bouncycastle/asn1/x509/sigi/PersonalData.classPK   C:UԄ    ;             8( org/bouncycastle/asn1/x509/sigi/SigIObjectIdentifiers.classPK
 
    D:U                         >( org/bouncycastle/asn1/x9/PK   C:U\"Y  
  1             u( org/bouncycastle/asn1/x9/DHDomainParameters.classPK   C:U?r    *             -( org/bouncycastle/asn1/x9/DHPublicKey.classPK   C:Ug  "	  0             U( org/bouncycastle/asn1/x9/DHValidationParms.classPK   C:U  {  /             Y( org/bouncycastle/asn1/x9/DomainParameters.classPK   C:UJsl  I  0             ʮ( org/bouncycastle/asn1/x9/ECNamedCurveTable.classPK   C:UO;    .             ( org/bouncycastle/asn1/x9/KeySpecificInfo.classPK   C:U&|Z!h    (             }( org/bouncycastle/asn1/x9/OtherInfo.classPK   C:U+x  	  /             ;( org/bouncycastle/asn1/x9/ValidationParams.classPK   C:Uu`    0             ( org/bouncycastle/asn1/x9/X962NamedCurves$1.classPK   C:Ub]    1             ( org/bouncycastle/asn1/x9/X962NamedCurves$10.classPK   C:U  %  1             ,( org/bouncycastle/asn1/x9/X962NamedCurves$11.classPK   C:Ub\-    1             c( org/bouncycastle/asn1/x9/X962NamedCurves$12.classPK   C:U>#%  3  1             ( org/bouncycastle/asn1/x9/X962NamedCurves$13.classPK   C:U~  3  1             ( org/bouncycastle/asn1/x9/X962NamedCurves$14.classPK   C:U  
  1             P( org/bouncycastle/asn1/x9/X962NamedCurves$15.classPK   C:Uv  c  1             x( org/bouncycastle/asn1/x9/X962NamedCurves$16.classPK   C:Uє  c  1             ( org/bouncycastle/asn1/x9/X962NamedCurves$17.classPK   C:U¡j  c  1             (( org/bouncycastle/asn1/x9/X962NamedCurves$18.classPK   C:U3%ـ!    1             }( org/bouncycastle/asn1/x9/X962NamedCurves$19.classPK   C:U    0             ( org/bouncycastle/asn1/x9/X962NamedCurves$2.classPK   C:U+    1             j( org/bouncycastle/asn1/x9/X962NamedCurves$20.classPK   C:Ue~-C    1             ( org/bouncycastle/asn1/x9/X962NamedCurves$21.classPK   C:U	&c    1             ( org/bouncycastle/asn1/x9/X962NamedCurves$22.classPK   C:Ulj  !  1             X( org/bouncycastle/asn1/x9/X962NamedCurves$23.classPK   C:UD
    0             !( org/bouncycastle/asn1/x9/X962NamedCurves$3.classPK   C:U|\d  k  0             ( org/bouncycastle/asn1/x9/X962NamedCurves$4.classPK   C:Utdc  k  0             N( org/bouncycastle/asn1/x9/X962NamedCurves$5.classPK   C:U6khc  k  0              ) org/bouncycastle/asn1/x9/X962NamedCurves$6.classPK   C:U0Ns    0             ) org/bouncycastle/asn1/x9/X962NamedCurves$7.classPK   C:U+    0             ) org/bouncycastle/asn1/x9/X962NamedCurves$8.classPK   C:U7    0             ) org/bouncycastle/asn1/x9/X962NamedCurves$9.classPK   C:UBvs  Y  .             A) org/bouncycastle/asn1/x9/X962NamedCurves.classPK   C:U5-  ]  -             ) org/bouncycastle/asn1/x9/X962Parameters.classPK   C:U`{    &             ) org/bouncycastle/asn1/x9/X9Curve.classPK   C:Uw=    -             !) org/bouncycastle/asn1/x9/X9ECParameters.classPK   C:UBf    3             () org/bouncycastle/asn1/x9/X9ECParametersHolder.classPK   C:U'.C    (             g*) org/bouncycastle/asn1/x9/X9ECPoint.classPK   C:UE    -             S-) org/bouncycastle/asn1/x9/X9FieldElement.classPK   C:U  "  (             /) org/bouncycastle/asn1/x9/X9FieldID.classPK   C:U  
  1             3) org/bouncycastle/asn1/x9/X9IntegerConverter.classPK   C:Uiw J  ?  2             5) org/bouncycastle/asn1/x9/X9ObjectIdentifiers.classPK
 
    D:U                         Z<) org/bouncycastle/crypto/PK   C:Ux      ,             <) org/bouncycastle/crypto/AlphabetMapper.classPK   C:UPJ   Q  3             =) org/bouncycastle/crypto/AsymmetricBlockCipher.classPK   C:UL    5             >) org/bouncycastle/crypto/AsymmetricCipherKeyPair.classPK   C:U6     >             @) org/bouncycastle/crypto/AsymmetricCipherKeyPairGenerator.classPK   C:U 7     ,             A) org/bouncycastle/crypto/BasicAgreement.classPK   C:U    )             B) org/bouncycastle/crypto/BlockCipher.classPK   C:Ud    ;              D) org/bouncycastle/crypto/BufferedAsymmetricBlockCipher.classPK   C:UF@0O  (  1              H) org/bouncycastle/crypto/BufferedBlockCipher.classPK   C:U      1             N) org/bouncycastle/crypto/CharToByteConverter.classPK   C:U¾O  |  0             O) org/bouncycastle/crypto/CipherKeyGenerator.classPK   C:U6nY   \   .             	R) org/bouncycastle/crypto/CipherParameters.classPK   C:U   I  (             R) org/bouncycastle/crypto/Commitment.classPK   C:Ujh      '             S) org/bouncycastle/crypto/Committer.classPK   C:U-     -             T) org/bouncycastle/crypto/CryptoException.classPK   C:Uܪ      ?             6V) org/bouncycastle/crypto/CryptoServiceConstraintsException.classPK   C:UF   %  5             MW) org/bouncycastle/crypto/CryptoServiceProperties.classPK   C:U^Y    2             pX) org/bouncycastle/crypto/CryptoServicePurpose.classPK   C:U
G      7             _[) org/bouncycastle/crypto/CryptoServicesConstraints.classPK   C:USv    6             G\) org/bouncycastle/crypto/CryptoServicesPermission.classPK   C:U*U    7             e_) org/bouncycastle/crypto/CryptoServicesRegistrar$1.classPK   C:U/A%     7             `) org/bouncycastle/crypto/CryptoServicesRegistrar$2.classPK   C:U6    7             :b) org/bouncycastle/crypto/CryptoServicesRegistrar$3.classPK   C:UOC    7             c) org/bouncycastle/crypto/CryptoServicesRegistrar$4.classPK   C:Ux~  i  >             e) org/bouncycastle/crypto/CryptoServicesRegistrar$Property.classPK   C:UDO  +  5             \h) org/bouncycastle/crypto/CryptoServicesRegistrar.classPK   C:U,6!     !             v|) org/bouncycastle/crypto/DSA.classPK   C:Up      $             }) org/bouncycastle/crypto/DSAExt.classPK   C:U@E      1             [~) org/bouncycastle/crypto/DataLengthException.classPK   C:Uy'<  L  5             v) org/bouncycastle/crypto/DefaultMultiBlockCipher.classPK   C:UW   5  0             X) org/bouncycastle/crypto/DerivationFunction.classPK   C:UF]   `   2             ) org/bouncycastle/crypto/DerivationParameters.classPK   C:U=5>      $             C) org/bouncycastle/crypto/Digest.classPK   C:U0B      6             ]) org/bouncycastle/crypto/DigestDerivationFunction.classPK   C:UjJ4      9             E) org/bouncycastle/crypto/EncapsulatedSecretExtractor.classPK   C:UJl      9             D) org/bouncycastle/crypto/EncapsulatedSecretGenerator.classPK   C:Ur  J  .             M) org/bouncycastle/crypto/EphemeralKeyPair.classPK   C:U,      ,             ) org/bouncycastle/crypto/ExtendedDigest.classPK   C:Uȱ   V  8             ) org/bouncycastle/crypto/InvalidCipherTextException.classPK   C:U6A   9  .             C) org/bouncycastle/crypto/KeyEncapsulation.classPK   C:U)Չ      (             R) org/bouncycastle/crypto/KeyEncoder.classPK   C:Ur@  :  5             1) org/bouncycastle/crypto/KeyGenerationParameters.classPK   C:U&u      '             Ԏ) org/bouncycastle/crypto/KeyParser.classPK   C:U]y0    !             ׏) org/bouncycastle/crypto/Mac.classPK   C:U)a      3             V) org/bouncycastle/crypto/MacDerivationFunction.classPK   C:U     7             9) org/bouncycastle/crypto/MaxBytesExceededException.classPK   C:U6%'   =  .             [) org/bouncycastle/crypto/MultiBlockCipher.classPK   C:UVJ      3             ) org/bouncycastle/crypto/OutputLengthException.classPK   C:U٭Y    4             ) org/bouncycastle/crypto/PBEParametersGenerator.classPK   C:UD    1             G) org/bouncycastle/crypto/PasswordConverter$1.classPK   C:UP  Z  1             ) org/bouncycastle/crypto/PasswordConverter$2.classPK   C:Ux1K  Y  1             ) org/bouncycastle/crypto/PasswordConverter$3.classPK   C:U!vC     /             C) org/bouncycastle/crypto/PasswordConverter.classPK   C:Uwկ     *             ) org/bouncycastle/crypto/RawAgreement.classPK   C:U4p      4             ) org/bouncycastle/crypto/RuntimeCryptoException.classPK   C:Uk+      5              ) org/bouncycastle/crypto/SecretWithEncapsulation.classPK   C:UKn|      2             ) org/bouncycastle/crypto/SecureRandomProvider.classPK   C:Uslk     $             ݣ) org/bouncycastle/crypto/Signer.classPK   C:U0   D  0             +) org/bouncycastle/crypto/SignerWithRecovery.classPK   C:U      ,             g) org/bouncycastle/crypto/SkippingCipher.classPK   C:U@}u      2             M) org/bouncycastle/crypto/SkippingStreamCipher.classPK   C:U5
     -             ") org/bouncycastle/crypto/StagedAgreement.classPK   C:U? G    /             $) org/bouncycastle/crypto/StreamBlockCipher.classPK   C:UgE*    *             ) org/bouncycastle/crypto/StreamCipher.classPK   C:UU   ?  %             ) org/bouncycastle/crypto/Wrapper.classPK   C:U34      !             :) org/bouncycastle/crypto/Xof.classPK
 
    D:U            "             ) org/bouncycastle/crypto/agreement/PK   C:UDqb?    3             W) org/bouncycastle/crypto/agreement/DHAgreement.classPK   C:UVN  	  8             ) org/bouncycastle/crypto/agreement/DHBasicAgreement.classPK   C:Un8  <  8             ) org/bouncycastle/crypto/agreement/DHStandardGroups.classPK   C:U0  T  :             ) org/bouncycastle/crypto/agreement/DHUnifiedAgreement.classPK   C:Uq  
  :             q) org/bouncycastle/crypto/agreement/ECDHBasicAgreement.classPK   C:U0

U
  	  ;             J) org/bouncycastle/crypto/agreement/ECDHCBasicAgreement.classPK   C:U$?s  L  <             ) org/bouncycastle/crypto/agreement/ECDHCStagedAgreement.classPK   C:U[J$  z  =             ) org/bouncycastle/crypto/agreement/ECDHCUnifiedAgreement.classPK   C:U>    ;             ,) org/bouncycastle/crypto/agreement/ECMQVBasicAgreement.classPK   C:U  
  6             q) org/bouncycastle/crypto/agreement/ECVKOAgreement.classPK   C:UcC    9             ) org/bouncycastle/crypto/agreement/MQVBasicAgreement.classPK   C:U
    6             ) org/bouncycastle/crypto/agreement/SM2KeyExchange.classPK   C:UGQ    -             @) org/bouncycastle/crypto/agreement/Utils.classPK   C:U#  z  7             ) org/bouncycastle/crypto/agreement/X25519Agreement.classPK   C:UW|D  l  5             B* org/bouncycastle/crypto/agreement/X448Agreement.classPK   C:U wl  Q  9             * org/bouncycastle/crypto/agreement/XDHBasicAgreement.classPK   C:UIz  R  ;             * org/bouncycastle/crypto/agreement/XDHUnifiedAgreement.classPK
 
    D:U            (             * org/bouncycastle/crypto/agreement/jpake/PK   C:Uy	  u  >             <	* org/bouncycastle/crypto/agreement/jpake/JPAKEParticipant.classPK   C:U,_uP$  ,  B             * org/bouncycastle/crypto/agreement/jpake/JPAKEPrimeOrderGroup.classPK   C:Uuc	    C             ;* org/bouncycastle/crypto/agreement/jpake/JPAKEPrimeOrderGroups.classPK   C:UK^%    @             @!* org/bouncycastle/crypto/agreement/jpake/JPAKERound1Payload.classPK   C:U5    @             #* org/bouncycastle/crypto/agreement/jpake/JPAKERound2Payload.classPK   C:UW(    @              &* org/bouncycastle/crypto/agreement/jpake/JPAKERound3Payload.classPK   C:U_@}	    7             '* org/bouncycastle/crypto/agreement/jpake/JPAKEUtil.classPK
 
    D:U            &             1* org/bouncycastle/crypto/agreement/kdf/PK   C:Ur    E             1* org/bouncycastle/crypto/agreement/kdf/ConcatenationKDFGenerator.classPK   C:U    ;             6* org/bouncycastle/crypto/agreement/kdf/DHKDFParameters.classPK   C:Uq$N  E
  :             
8* org/bouncycastle/crypto/agreement/kdf/DHKEKGenerator.classPK   C:U<  	  <             =* org/bouncycastle/crypto/agreement/kdf/ECDHKEKGenerator.classPK   C:U!X    <             B* org/bouncycastle/crypto/agreement/kdf/GSKKDFParameters.classPK   C:Ujt  '  ;             D* org/bouncycastle/crypto/agreement/kdf/GSKKFDGenerator.classPK
 
    D:U            &             lH* org/bouncycastle/crypto/agreement/srp/PK   C:U;qy:   f
  6             H* org/bouncycastle/crypto/agreement/srp/SRP6Client.classPK   C:UAJ    6             4N* org/bouncycastle/crypto/agreement/srp/SRP6Server.classPK   C:U}
    >             S* org/bouncycastle/crypto/agreement/srp/SRP6StandardGroups.classPK   C:U  |  4             ^* org/bouncycastle/crypto/agreement/srp/SRP6Util.classPK   C:Ul  5  A             c* org/bouncycastle/crypto/agreement/srp/SRP6VerifierGenerator.classPK
 
    D:U            $             <f* org/bouncycastle/crypto/commitments/PK   C:UrN    >             ~f* org/bouncycastle/crypto/commitments/GeneralHashCommitter.classPK   C:U2    7             8j* org/bouncycastle/crypto/commitments/HashCommitter.classPK
 
    D:U            $             m* org/bouncycastle/crypto/constraints/PK   C:UHjyl    B             n* org/bouncycastle/crypto/constraints/BitsOfSecurityConstraint.classPK   C:Ui  w  9             p* org/bouncycastle/crypto/constraints/ConstraintUtils.classPK   C:Udp>    B             r* org/bouncycastle/crypto/constraints/DefaultServiceProperties.classPK   C:Ufh  J  J             u* org/bouncycastle/crypto/constraints/LegacyBitsOfSecurityConstraint$1.classPK   C:U󗸺
    H             	x* org/bouncycastle/crypto/constraints/LegacyBitsOfSecurityConstraint.classPK   C:U a~    ;             |* org/bouncycastle/crypto/constraints/LoggingConstraint.classPK   C:UT*    <             s* org/bouncycastle/crypto/constraints/ServicesConstraint.classPK   C:U{}>    /             ܂* org/bouncycastle/crypto/constraints/Utils.classPK
 
    D:U                          w* org/bouncycastle/crypto/digests/PK   C:Uz	߅    3             * org/bouncycastle/crypto/digests/Blake2bDigest.classPK   C:U-cL
    3             * org/bouncycastle/crypto/digests/Blake2sDigest.classPK   C:U    4             H* org/bouncycastle/crypto/digests/Blake2xsDigest.classPK   C:U    2             * org/bouncycastle/crypto/digests/Blake3Digest.classPK   C:UXLB  o  2             ,* org/bouncycastle/crypto/digests/CSHAKEDigest.classPK   C:U|Q  ,3  4             s* org/bouncycastle/crypto/digests/DSTU7564Digest.classPK   C:UwAx      5             }* org/bouncycastle/crypto/digests/EncodableDigest.classPK   C:U`?3
    4             X* org/bouncycastle/crypto/digests/GOST3411Digest.classPK   C:Ugu  =  9             * org/bouncycastle/crypto/digests/GOST3411_2012Digest.classPK   C:UJͦ    =             T+ org/bouncycastle/crypto/digests/GOST3411_2012_256Digest.classPK   C:UBUO    =             X+ org/bouncycastle/crypto/digests/GOST3411_2012_512Digest.classPK   C:UD13k  ^  3             Z+ org/bouncycastle/crypto/digests/GeneralDigest.classPK   C:Ud  6  5             _+ org/bouncycastle/crypto/digests/Haraka256Digest.classPK   C:U8u\"  M  5             wh+ org/bouncycastle/crypto/digests/Haraka512Digest.classPK   C:UZ]    0             t+ org/bouncycastle/crypto/digests/HarakaBase.classPK   C:U    ;             o{+ org/bouncycastle/crypto/digests/Kangaroo$KangarooBase.classPK   C:U׆  P  I             ˃+ org/bouncycastle/crypto/digests/Kangaroo$KangarooParameters$Builder.classPK   C:Ul    A             + org/bouncycastle/crypto/digests/Kangaroo$KangarooParameters.classPK   C:UnT	    =             + org/bouncycastle/crypto/digests/Kangaroo$KangarooSponge.classPK   C:U*+a    =             B+ org/bouncycastle/crypto/digests/Kangaroo$KangarooTwelve.classPK   C:U?ug    B             + org/bouncycastle/crypto/digests/Kangaroo$MarsupilamiFourteen.classPK   C:ULCC    .             + org/bouncycastle/crypto/digests/Kangaroo.classPK   C:UQ%
  d  2             + org/bouncycastle/crypto/digests/KeccakDigest.classPK   C:URh?/
    0             	+ org/bouncycastle/crypto/digests/LongDigest.classPK   C:U6_P
    /             + org/bouncycastle/crypto/digests/MD2Digest.classPK   C:UTP  s  /             + org/bouncycastle/crypto/digests/MD4Digest.classPK   C:UNW
    /             + org/bouncycastle/crypto/digests/MD5Digest.classPK   C:Uf+    7             + org/bouncycastle/crypto/digests/NonMemoableDigest.classPK   C:UF˔      2             9+ org/bouncycastle/crypto/digests/NullDigest$1.classPK   C:U\    J             -+ org/bouncycastle/crypto/digests/NullDigest$OpenByteArrayOutputStream.classPK   C:U,
    0             8+ org/bouncycastle/crypto/digests/NullDigest.classPK   C:UĬb6  
  2             + org/bouncycastle/crypto/digests/ParallelHash.classPK   C:U/"    5             + org/bouncycastle/crypto/digests/RIPEMD128Digest.classPK   C:UԱr
  %  5             + org/bouncycastle/crypto/digests/RIPEMD160Digest.classPK   C:U}$0	  F  5             + org/bouncycastle/crypto/digests/RIPEMD256Digest.classPK   C:Uu  '  5             + org/bouncycastle/crypto/digests/RIPEMD320Digest.classPK   C:U7Q  <  0             , org/bouncycastle/crypto/digests/SHA1Digest.classPK   C:Ufp    2             , org/bouncycastle/crypto/digests/SHA224Digest.classPK   C:Uޡn
    2             , org/bouncycastle/crypto/digests/SHA256Digest.classPK   C:U:4/F    2             K&, org/bouncycastle/crypto/digests/SHA384Digest.classPK   C:UK  *  0             *, org/bouncycastle/crypto/digests/SHA3Digest.classPK   C:U[XV    2             ., org/bouncycastle/crypto/digests/SHA512Digest.classPK   C:Uھ    3             P3, org/bouncycastle/crypto/digests/SHA512tDigest.classPK   C:ULX  	  1             ;, org/bouncycastle/crypto/digests/SHAKEDigest.classPK   C:UW~>  B  /             N@, org/bouncycastle/crypto/digests/SM3Digest.classPK   C:UǬT  o  5             G, org/bouncycastle/crypto/digests/ShortenedDigest.classPK   C:UF    1             K, org/bouncycastle/crypto/digests/SkeinDigest.classPK   C:UTP    ?             CO, org/bouncycastle/crypto/digests/SkeinEngine$Configuration.classPK   C:U
*    ;              Q, org/bouncycastle/crypto/digests/SkeinEngine$Parameter.classPK   C:U]=Ғ    5             R, org/bouncycastle/crypto/digests/SkeinEngine$UBI.classPK   C:UX_  P  :             W, org/bouncycastle/crypto/digests/SkeinEngine$UbiTweak.classPK   C:Uf    1             Z[, org/bouncycastle/crypto/digests/SkeinEngine.classPK   C:Uo@'<  S  1             j, org/bouncycastle/crypto/digests/TigerDigest.classPK   C:UM    /             F, org/bouncycastle/crypto/digests/TupleHash.classPK   C:UA5]  J  =             , org/bouncycastle/crypto/digests/Utils$DefaultProperties.classPK   C:U9    D             , org/bouncycastle/crypto/digests/Utils$DefaultPropertiesWithPRF.classPK   C:UPڞ  
  +             \, org/bouncycastle/crypto/digests/Utils.classPK   C:UG
    5             S, org/bouncycastle/crypto/digests/WhirlpoolDigest.classPK   C:Uo    .             6, org/bouncycastle/crypto/digests/XofUtils.classPK
 
    D:U                         n, org/bouncycastle/crypto/ec/PK   C:UxT:    4             , org/bouncycastle/crypto/ec/CustomNamedCurves$1.classPK   C:U  \  5             C, org/bouncycastle/crypto/ec/CustomNamedCurves$10.classPK   C:UKŴ  [  5             }, org/bouncycastle/crypto/ec/CustomNamedCurves$11.classPK   C:UT    5             , org/bouncycastle/crypto/ec/CustomNamedCurves$12.classPK   C:Uѵi    5             , org/bouncycastle/crypto/ec/CustomNamedCurves$13.classPK   C:Ux%~    5             R, org/bouncycastle/crypto/ec/CustomNamedCurves$14.classPK   C:U㭞    5             3, org/bouncycastle/crypto/ec/CustomNamedCurves$15.classPK   C:UQnE    5             , org/bouncycastle/crypto/ec/CustomNamedCurves$16.classPK   C:Uޥ    5             , org/bouncycastle/crypto/ec/CustomNamedCurves$17.classPK   C:UĤP@    5             , org/bouncycastle/crypto/ec/CustomNamedCurves$18.classPK   C:Uʥŷ  /  5             , org/bouncycastle/crypto/ec/CustomNamedCurves$19.classPK   C:UyZ    4             {, org/bouncycastle/crypto/ec/CustomNamedCurves$2.classPK   C:U6Tv  /  5             `, org/bouncycastle/crypto/ec/CustomNamedCurves$20.classPK   C:Uˈ    ?  5             W, org/bouncycastle/crypto/ec/CustomNamedCurves$21.classPK   C:U  ?  5             Z, org/bouncycastle/crypto/ec/CustomNamedCurves$22.classPK   C:Usf}_    5             \, org/bouncycastle/crypto/ec/CustomNamedCurves$23.classPK   C:U<8ŭ  S  5             , org/bouncycastle/crypto/ec/CustomNamedCurves$24.classPK   C:UTV]    5             ., org/bouncycastle/crypto/ec/CustomNamedCurves$25.classPK   C:U_߁r    5             , org/bouncycastle/crypto/ec/CustomNamedCurves$26.classPK   C:UVڵ.  k  5             , org/bouncycastle/crypto/ec/CustomNamedCurves$27.classPK   C:UnC훙    5             , org/bouncycastle/crypto/ec/CustomNamedCurves$28.classPK   C:UP9L    5             - org/bouncycastle/crypto/ec/CustomNamedCurves$29.classPK   C:U&Zy    4             2- org/bouncycastle/crypto/ec/CustomNamedCurves$3.classPK   C:Un  o  5             
	- org/bouncycastle/crypto/ec/CustomNamedCurves$30.classPK   C:Uj>N#    5             @- org/bouncycastle/crypto/ec/CustomNamedCurves$31.classPK   C:U;4Re    5             - org/bouncycastle/crypto/ec/CustomNamedCurves$32.classPK   C:UiF@q  *  4             - org/bouncycastle/crypto/ec/CustomNamedCurves$4.classPK   C:U`  *  4             ~- org/bouncycastle/crypto/ec/CustomNamedCurves$5.classPK   C:U[    4             i- org/bouncycastle/crypto/ec/CustomNamedCurves$6.classPK   C:Ui'  :  4             e- org/bouncycastle/crypto/ec/CustomNamedCurves$7.classPK   C:UsIצ  '  4             ]- org/bouncycastle/crypto/ec/CustomNamedCurves$8.classPK   C:U
   J  4             #- org/bouncycastle/crypto/ec/CustomNamedCurves$9.classPK   C:UcC  "  2             &- org/bouncycastle/crypto/ec/CustomNamedCurves.classPK   C:Ur0      ,             2- org/bouncycastle/crypto/ec/ECDecryptor.classPK   C:U]  d  3             3- org/bouncycastle/crypto/ec/ECElGamalDecryptor.classPK   C:U(  ~
  3             7- org/bouncycastle/crypto/ec/ECElGamalEncryptor.classPK   C:U]W      ,             ;- org/bouncycastle/crypto/ec/ECEncryptor.classPK   C:U(<]  	  1             <- org/bouncycastle/crypto/ec/ECFixedTransform.classPK   C:Uhs,E  
  8             @- org/bouncycastle/crypto/ec/ECNewPublicKeyTransform.classPK   C:UEjh  I  9             gE- org/bouncycastle/crypto/ec/ECNewRandomnessTransform.classPK   C:Uʮ  D  '             OJ- org/bouncycastle/crypto/ec/ECPair.classPK   C:U
      6             RL- org/bouncycastle/crypto/ec/ECPairFactorTransform.classPK   C:UJ      0             PM- org/bouncycastle/crypto/ec/ECPairTransform.classPK   C:U    '             HN- org/bouncycastle/crypto/ec/ECUtil.classPK
 
    D:U            "             :P- org/bouncycastle/crypto/encodings/PK   C:UY5J    9             zP- org/bouncycastle/crypto/encodings/ISO9796d1Encoding.classPK   C:U
    4             uX- org/bouncycastle/crypto/encodings/OAEPEncoding.classPK   C:U1ӳ    5             _- org/bouncycastle/crypto/encodings/PKCS1Encoding.classPK
 
    D:U                          h- org/bouncycastle/crypto/engines/PK   C:U%  C  /             h- org/bouncycastle/crypto/engines/AESEngine.classPK   C:Ug^ZW    3             
- org/bouncycastle/crypto/engines/AESFastEngine.classPK   C:U%s  *  4             ^- org/bouncycastle/crypto/engines/AESLightEngine.classPK   C:U5     3             3- org/bouncycastle/crypto/engines/AESWrapEngine.classPK   C:U)8   /  6             n- org/bouncycastle/crypto/engines/AESWrapPadEngine.classPK   C:U:VQ  -  0             - org/bouncycastle/crypto/engines/ARIAEngine.classPK   C:U     4             . org/bouncycastle/crypto/engines/ARIAWrapEngine.classPK   C:Un'   1  7             . org/bouncycastle/crypto/engines/ARIAWrapPadEngine.classPK   C:U[ P+  A  4             . org/bouncycastle/crypto/engines/BlowfishEngine.classPK   C:UN    1             C. org/bouncycastle/crypto/engines/CAST5Engine.classPK   C:UƧ  g  1             . org/bouncycastle/crypto/engines/CAST6Engine.classPK   C:U_")  J  4             . org/bouncycastle/crypto/engines/CamelliaEngine.classPK   C:U]t  !  9             . org/bouncycastle/crypto/engines/CamelliaLightEngine.classPK   C:Ua   6  8             . org/bouncycastle/crypto/engines/CamelliaWrapEngine.classPK   C:U6    6             . org/bouncycastle/crypto/engines/ChaCha7539Engine.classPK   C:UiӦ  }  2             %. org/bouncycastle/crypto/engines/ChaChaEngine.classPK   C:Uҟ]    ;             . org/bouncycastle/crypto/engines/CramerShoupCiphertext.classPK   C:U4R`    Z             . org/bouncycastle/crypto/engines/CramerShoupCoreEngine$CramerShoupCiphertextException.classPK   C:U^c	  )  ;             +. org/bouncycastle/crypto/engines/CramerShoupCoreEngine.classPK   C:UxZz    9             e. org/bouncycastle/crypto/engines/CryptoProWrapEngine.classPK   C:US
    -             F. org/bouncycastle/crypto/engines/DESBase.classPK   C:U)|  !  /             . org/bouncycastle/crypto/engines/DESEngine.classPK   C:U+D<n  
  2             X/ org/bouncycastle/crypto/engines/DESedeEngine.classPK   C:U&!    6             &/ org/bouncycastle/crypto/engines/DESedeWrapEngine.classPK   C:UV|(  Y  4             / org/bouncycastle/crypto/engines/DSTU7624Engine.classPK   C:U6a    8             F/ org/bouncycastle/crypto/engines/DSTU7624WrapEngine.classPK   C:Usx   b  3             M/ org/bouncycastle/crypto/engines/ElGamalEngine.classPK   C:UuO    L             sU/ org/bouncycastle/crypto/engines/EthereumIESEngine$HandshakeKDFFunction.classPK   C:Ug}K!  k  7             <Z/ org/bouncycastle/crypto/engines/EthereumIESEngine.classPK   C:UO!d  ,  5             f/ org/bouncycastle/crypto/engines/GOST28147Engine.classPK   C:UeC    9             z/ org/bouncycastle/crypto/engines/GOST28147WrapEngine.classPK   C:Udi    9             ~/ org/bouncycastle/crypto/engines/GOST3412_2015Engine.classPK   C:Ub:    M             W/ org/bouncycastle/crypto/engines/Grain128AEADEngine$ErasableOutputStream.classPK   C:US(2
    8             / org/bouncycastle/crypto/engines/Grain128AEADEngine.classPK   C:U  `  4             / org/bouncycastle/crypto/engines/Grain128Engine.classPK   C:UFo    3             / org/bouncycastle/crypto/engines/Grainv1Engine.classPK   C:U_  A  1             / org/bouncycastle/crypto/engines/HC128Engine.classPK   C:UZ-1&b  H  1             ¸/ org/bouncycastle/crypto/engines/HC256Engine.classPK   C:U?\  =  0             / org/bouncycastle/crypto/engines/IDEAEngine.classPK   C:U_Tpr9  E  /             / org/bouncycastle/crypto/engines/IESEngine.classPK   C:U'y\$    1             Z/ org/bouncycastle/crypto/engines/ISAACEngine.classPK   C:U	    /             / org/bouncycastle/crypto/engines/LEAEngine.classPK   C:U(0X    9             / org/bouncycastle/crypto/engines/NaccacheSternEngine.classPK   C:UAB  
  3             Q/ org/bouncycastle/crypto/engines/NoekeonEngine.classPK   C:UϾ    0             W/ org/bouncycastle/crypto/engines/NullEngine.classPK   C:U^    2             s/ org/bouncycastle/crypto/engines/OldIESEngine.classPK   C:Uz_j  Z  /             1/ org/bouncycastle/crypto/engines/RC2Engine.classPK   C:UP    3             
0 org/bouncycastle/crypto/engines/RC2WrapEngine.classPK   C:U  a	  /             0 org/bouncycastle/crypto/engines/RC4Engine.classPK   C:U0  .  1             0 org/bouncycastle/crypto/engines/RC532Engine.classPK   C:U=W  e  1             Z0 org/bouncycastle/crypto/engines/RC564Engine.classPK   C:UM4  
  /             &0 org/bouncycastle/crypto/engines/RC6Engine.classPK   C:U{    7             -0 org/bouncycastle/crypto/engines/RFC3211WrapEngine.classPK   C:U
uN  
  7             30 org/bouncycastle/crypto/engines/RFC3394WrapEngine.classPK   C:U8H  a
  7             90 org/bouncycastle/crypto/engines/RFC5649WrapEngine.classPK   C:U"  	  6             A0 org/bouncycastle/crypto/engines/RSABlindedEngine.classPK   C:USe    7             F0 org/bouncycastle/crypto/engines/RSABlindingEngine.classPK   C:U6e  s  3             J0 org/bouncycastle/crypto/engines/RSACoreEngine.classPK   C:Uo    /             %Q0 org/bouncycastle/crypto/engines/RSAEngine.classPK   C:U("_̕  /;  4             S0 org/bouncycastle/crypto/engines/RijndaelEngine.classPK   C:UPo&  >  0             r0 org/bouncycastle/crypto/engines/SEEDEngine.classPK   C:Uig   .  4             d0 org/bouncycastle/crypto/engines/SEEDWrapEngine.classPK   C:U    1             0 org/bouncycastle/crypto/engines/SM2Engine$1.classPK   C:U'6]    4             d0 org/bouncycastle/crypto/engines/SM2Engine$Mode.classPK   C:Uv  &  /             0 org/bouncycastle/crypto/engines/SM2Engine.classPK   C:Uէ    /             ت0 org/bouncycastle/crypto/engines/SM4Engine.classPK   C:Ux
EB
    3             ܷ0 org/bouncycastle/crypto/engines/Salsa20Engine.classPK   C:U'	     3             0 org/bouncycastle/crypto/engines/SerpentEngine.classPK   C:U`	    7             p0 org/bouncycastle/crypto/engines/SerpentEngineBase.classPK   C:U7/	  H  3             50 org/bouncycastle/crypto/engines/Shacal2Engine.classPK   C:Uib؞
    4             0 org/bouncycastle/crypto/engines/SkipjackEngine.classPK   C:U$  L  /             0 org/bouncycastle/crypto/engines/TEAEngine.classPK   C:UYI x	    I             0 org/bouncycastle/crypto/engines/ThreefishEngine$Threefish1024Cipher.classPK   C:U	  	  H             0 org/bouncycastle/crypto/engines/ThreefishEngine$Threefish256Cipher.classPK   C:U    H             l1 org/bouncycastle/crypto/engines/ThreefishEngine$Threefish512Cipher.classPK   C:U<	    E             1 org/bouncycastle/crypto/engines/ThreefishEngine$ThreefishCipher.classPK   C:UvB	    5             U
1 org/bouncycastle/crypto/engines/ThreefishEngine.classPK   C:U~	  ^   3             1 org/bouncycastle/crypto/engines/TnepresEngine.classPK   C:U)Q7  )  3             1 org/bouncycastle/crypto/engines/TwofishEngine.classPK   C:U
    +             u31 org/bouncycastle/crypto/engines/Utils.classPK   C:Ue  
  0             41 org/bouncycastle/crypto/engines/VMPCEngine.classPK   C:U^z    4             ):1 org/bouncycastle/crypto/engines/VMPCKSA3Engine.classPK   C:Ue^Ɉ  @  4             <1 org/bouncycastle/crypto/engines/XSalsa20Engine.classPK   C:U    0             ?1 org/bouncycastle/crypto/engines/XTEAEngine.classPK   C:U
7  #  6             KE1 org/bouncycastle/crypto/engines/Zuc128CoreEngine.classPK   C:U[17     2             W1 org/bouncycastle/crypto/engines/Zuc128Engine.classPK   C:U /  {	  6             -Y1 org/bouncycastle/crypto/engines/Zuc256CoreEngine.classPK   C:U*{e     2             1^1 org/bouncycastle/crypto/engines/Zuc256Engine.classPK
 
    D:U            !             _1 org/bouncycastle/crypto/examples/PK   C:UNz    1             _1 org/bouncycastle/crypto/examples/DESExample.classPK   C:U|  .  3             
i1 org/bouncycastle/crypto/examples/JPAKEExample.classPK
 
    D:U                         q1 org/bouncycastle/crypto/fpe/PK   C:Uk:η  >  +             q1 org/bouncycastle/crypto/fpe/FPEEngine.classPK   C:US'Ǉ?  D	  .             u1 org/bouncycastle/crypto/fpe/FPEFF1Engine.classPK   C:Ua)G  	  0             nz1 org/bouncycastle/crypto/fpe/FPEFF3_1Engine.classPK   C:U@wp
    *             R1 org/bouncycastle/crypto/fpe/SP80038G.classPK
 
    D:U            #             1 org/bouncycastle/crypto/generators/PK   C:U,Vm1      ?             [1 org/bouncycastle/crypto/generators/Argon2BytesGenerator$1.classPK   C:UNp&  *	  C             c1 org/bouncycastle/crypto/generators/Argon2BytesGenerator$Block.classPK   C:Uy4  ?	  G             1 org/bouncycastle/crypto/generators/Argon2BytesGenerator$FillBlock.classPK   C:Ub   L  F             1 org/bouncycastle/crypto/generators/Argon2BytesGenerator$Position.classPK   C:U  #  =             C1 org/bouncycastle/crypto/generators/Argon2BytesGenerator.classPK   C:UՈgh+  ?  /             Ŧ1 org/bouncycastle/crypto/generators/BCrypt.classPK   C:U/%  I  >             1 org/bouncycastle/crypto/generators/BaseKDFBytesGenerator.classPK   C:U{z    D             1 org/bouncycastle/crypto/generators/CramerShoupKeyPairGenerator.classPK   C:UՄKM    X             -1 org/bouncycastle/crypto/generators/CramerShoupParametersGenerator$ParametersHelper.classPK   C:U"    G             1 org/bouncycastle/crypto/generators/CramerShoupParametersGenerator.classPK   C:U0w    8             1 org/bouncycastle/crypto/generators/DESKeyGenerator.classPK   C:UM    ;             1 org/bouncycastle/crypto/generators/DESedeKeyGenerator.classPK   C:Ujj)    @             1 org/bouncycastle/crypto/generators/DHBasicKeyPairGenerator.classPK   C:U /I"    =             |1 org/bouncycastle/crypto/generators/DHKeyGeneratorHelper.classPK   C:UKqM%    ;             	1 org/bouncycastle/crypto/generators/DHKeyPairGenerator.classPK   C:U>    >             1 org/bouncycastle/crypto/generators/DHParametersGenerator.classPK   C:UVk    ;             1 org/bouncycastle/crypto/generators/DHParametersHelper.classPK   C:UΎ*    <             `1 org/bouncycastle/crypto/generators/DSAKeyPairGenerator.classPK   C:U#6%4  6  ?             1 org/bouncycastle/crypto/generators/DSAParametersGenerator.classPK   C:UBE  *  A             b
2 org/bouncycastle/crypto/generators/DSTU4145KeyPairGenerator.classPK   C:U^?r    ;             {2 org/bouncycastle/crypto/generators/ECKeyPairGenerator.classPK   C:UH^    @             V2 org/bouncycastle/crypto/generators/Ed25519KeyPairGenerator.classPK   C:UX [    >             "2 org/bouncycastle/crypto/generators/Ed448KeyPairGenerator.classPK   C:U=q  	  @             2 org/bouncycastle/crypto/generators/ElGamalKeyPairGenerator.classPK   C:U6<D    C             2 org/bouncycastle/crypto/generators/ElGamalParametersGenerator.classPK   C:U^X  F  B             2 org/bouncycastle/crypto/generators/EphemeralKeyPairGenerator.classPK   C:U s  	  A             2 org/bouncycastle/crypto/generators/GOST3410KeyPairGenerator.classPK   C:UmN
    D             #2 org/bouncycastle/crypto/generators/GOST3410ParametersGenerator.classPK   C:U˲s  #	  ;             -2 org/bouncycastle/crypto/generators/HKDFBytesGenerator.classPK   C:Upܣ     ;             	32 org/bouncycastle/crypto/generators/KDF1BytesGenerator.classPK   C:UvB     ;             42 org/bouncycastle/crypto/generators/KDF2BytesGenerator.classPK   C:U]@n    A             !52 org/bouncycastle/crypto/generators/KDFCounterBytesGenerator.classPK   C:U]  G  Q             ;2 org/bouncycastle/crypto/generators/KDFDoublePipelineIterationBytesGenerator.classPK   C:U*b  
  B             B2 org/bouncycastle/crypto/generators/KDFFeedbackBytesGenerator.classPK   C:U
:L~o  B  ;             ]I2 org/bouncycastle/crypto/generators/MGF1BytesGenerator.classPK   C:Utv  1  F             5M2 org/bouncycastle/crypto/generators/NaccacheSternKeyPairGenerator.classPK   C:U

    6             Y2 org/bouncycastle/crypto/generators/OpenBSDBCrypt.classPK   C:UG2  
  F             
e2 org/bouncycastle/crypto/generators/OpenSSLPBEParametersGenerator.classPK   C:U<h;S   
  B             h2 org/bouncycastle/crypto/generators/PKCS12ParametersGenerator.classPK   C:Un7  W  C             ^n2 org/bouncycastle/crypto/generators/PKCS5S1ParametersGenerator.classPK   C:UõO>    C             r2 org/bouncycastle/crypto/generators/PKCS5S2ParametersGenerator.classPK   C:U2    =             v2 org/bouncycastle/crypto/generators/Poly1305KeyGenerator.classPK   C:Uj    C             y2 org/bouncycastle/crypto/generators/RSABlindingFactorGenerator.classPK   C:U?|D  )  <             }2 org/bouncycastle/crypto/generators/RSAKeyPairGenerator.classPK   C:Uiq  
  /             2 org/bouncycastle/crypto/generators/SCrypt.classPK   C:U0̇`    ?             2 org/bouncycastle/crypto/generators/X25519KeyPairGenerator.classPK   C:UX^^    =             p2 org/bouncycastle/crypto/generators/X448KeyPairGenerator.classPK
 
    D:U                         92 org/bouncycastle/crypto/io/PK   C:U|g,    2             r2 org/bouncycastle/crypto/io/CipherIOException.classPK   C:Uxj  _  2             2 org/bouncycastle/crypto/io/CipherInputStream.classPK   C:Upb\y  	  3             2 org/bouncycastle/crypto/io/CipherOutputStream.classPK   C:US    2             آ2 org/bouncycastle/crypto/io/DigestInputStream.classPK   C:U32bx  y  3             2 org/bouncycastle/crypto/io/DigestOutputStream.classPK   C:U;t   /  =             Ʀ2 org/bouncycastle/crypto/io/InvalidCipherTextIOException.classPK   C:Ujc9հ    /             2 org/bouncycastle/crypto/io/MacInputStream.classPK   C:U+Gr  d  0              2 org/bouncycastle/crypto/io/MacOutputStream.classPK   C:U0d    2             2 org/bouncycastle/crypto/io/SignerInputStream.classPK   C:UioH  E  3             2 org/bouncycastle/crypto/io/SignerOutputStream.classPK
 
    D:U                         2 org/bouncycastle/crypto/kems/PK   C:U#  @  4             2 org/bouncycastle/crypto/kems/ECIESKEMExtractor.classPK   C:U[<    4             2 org/bouncycastle/crypto/kems/ECIESKEMGenerator.classPK   C:UZ~  
  8             2 org/bouncycastle/crypto/kems/ECIESKeyEncapsulation.classPK   C:U{Ê    2             2 org/bouncycastle/crypto/kems/RSAKEMExtractor.classPK   C:Uvl  
  2             2 org/bouncycastle/crypto/kems/RSAKEMGenerator.classPK   C:Ut    6             2 org/bouncycastle/crypto/kems/RSAKeyEncapsulation.classPK   C:U0  a  >             2 org/bouncycastle/crypto/kems/SecretWithEncapsulationImpl.classPK
 
    D:U                         2 org/bouncycastle/crypto/macs/PK   C:U}O    ,             "2 org/bouncycastle/crypto/macs/Blake3Mac.classPK   C:UJ  o  1             2 org/bouncycastle/crypto/macs/BlockCipherMac.classPK   C:UY._  E	  4             )2 org/bouncycastle/crypto/macs/CBCBlockCipherMac.classPK   C:U%Fz  d	  4             2 org/bouncycastle/crypto/macs/CFBBlockCipherMac.classPK   C:U:    '             2 org/bouncycastle/crypto/macs/CMac.classPK   C:U[f   ~  -             )2 org/bouncycastle/crypto/macs/CMacWithIV.classPK   C:UlL  	  .             ]2 org/bouncycastle/crypto/macs/DSTU7564Mac.classPK   C:UATe  
  .             2 org/bouncycastle/crypto/macs/DSTU7624Mac.classPK   C:U    '             2 org/bouncycastle/crypto/macs/GMac.classPK   C:U=	    /             2 org/bouncycastle/crypto/macs/GOST28147Mac.classPK   C:U	`  
  '             ,3 org/bouncycastle/crypto/macs/HMac.classPK   C:U`6  *
  1              3 org/bouncycastle/crypto/macs/ISO9797Alg3Mac.classPK   C:U*\  G  (             3 org/bouncycastle/crypto/macs/KGMac.classPK   C:UONj  
  '             3 org/bouncycastle/crypto/macs/KMAC.classPK   C:U{z
    4             q3 org/bouncycastle/crypto/macs/MacCFBBlockCipher.classPK   C:U5  4  *             #3 org/bouncycastle/crypto/macs/OldHMac.classPK   C:U.	    +             "(3 org/bouncycastle/crypto/macs/Poly1305.classPK   C:U>  
  *             G23 org/bouncycastle/crypto/macs/SipHash.classPK   C:U5Ǿt%    -             83 org/bouncycastle/crypto/macs/SipHash128.classPK   C:UR#    +             <3 org/bouncycastle/crypto/macs/SkeinMac.classPK   C:U    *             @3 org/bouncycastle/crypto/macs/VMPCMac.classPK   C:U3O      .             _F3 org/bouncycastle/crypto/macs/Zuc128Mac$1.classPK   C:UO5    A             OG3 org/bouncycastle/crypto/macs/Zuc128Mac$InternalZuc128Engine.classPK   C:UQ:}    ,             H3 org/bouncycastle/crypto/macs/Zuc128Mac.classPK   C:UO     A             M3 org/bouncycastle/crypto/macs/Zuc256Mac$InternalZuc256Engine.classPK   C:U'  	  ,             O3 org/bouncycastle/crypto/macs/Zuc256Mac.classPK
 
    D:U                         ^T3 org/bouncycastle/crypto/modes/PK   C:U      3             T3 org/bouncycastle/crypto/modes/AEADBlockCipher.classPK   C:UN    .             U3 org/bouncycastle/crypto/modes/AEADCipher.classPK   C:U"N=  D
  2             yW3 org/bouncycastle/crypto/modes/CBCBlockCipher.classPK   C:U9is      1             ]3 org/bouncycastle/crypto/modes/CBCModeCipher.classPK   C:Uzm     O             ]3 org/bouncycastle/crypto/modes/CCMBlockCipher$ExposedByteArrayOutputStream.classPK   C:U;    2             `_3 org/bouncycastle/crypto/modes/CCMBlockCipher.classPK   C:UĠr      1             Lk3 org/bouncycastle/crypto/modes/CCMModeCipher.classPK   C:USn}    2             l3 org/bouncycastle/crypto/modes/CFBBlockCipher.classPK   C:Uc      1             q3 org/bouncycastle/crypto/modes/CFBModeCipher.classPK   C:UŶQ  (
  2             r3 org/bouncycastle/crypto/modes/CTSBlockCipher.classPK   C:U fN  ;  :             x3 org/bouncycastle/crypto/modes/ChaCha20Poly1305$State.classPK   C:UxѼ|
    4             Cz3 org/bouncycastle/crypto/modes/ChaCha20Poly1305.classPK   C:Ud-	    2             !3 org/bouncycastle/crypto/modes/EAXBlockCipher.classPK   C:UaV  
  7             3 org/bouncycastle/crypto/modes/G3413CBCBlockCipher.classPK   C:UM  m  7             3 org/bouncycastle/crypto/modes/G3413CFBBlockCipher.classPK   C:U"9n  m
  7             ޝ3 org/bouncycastle/crypto/modes/G3413CTRBlockCipher.classPK   C:UըG`  	  7             3 org/bouncycastle/crypto/modes/G3413OFBBlockCipher.classPK   C:UXwX  K
  3             3 org/bouncycastle/crypto/modes/GCFBBlockCipher.classPK   C:UJc_     2             3 org/bouncycastle/crypto/modes/GCMBlockCipher.classPK   C:U\9r      1             T3 org/bouncycastle/crypto/modes/GCMModeCipher.classPK   C:U8_      7             %3 org/bouncycastle/crypto/modes/GCMSIVBlockCipher$1.classPK   C:U6    A             %3 org/bouncycastle/crypto/modes/GCMSIVBlockCipher$GCMSIVCache.classPK   C:Ur(  m  B             3 org/bouncycastle/crypto/modes/GCMSIVBlockCipher$GCMSIVHasher.classPK   C:U2e    5             L3 org/bouncycastle/crypto/modes/GCMSIVBlockCipher.classPK   C:UTa  	  3             3 org/bouncycastle/crypto/modes/GOFBBlockCipher.classPK   C:UBC  `  6             3 org/bouncycastle/crypto/modes/GOST3413CipherUtil.classPK   C:Uf     P             3 org/bouncycastle/crypto/modes/KCCMBlockCipher$ExposedByteArrayOutputStream.classPK   C:USM  `  3             ]3 org/bouncycastle/crypto/modes/KCCMBlockCipher.classPK   C:U*    3             3 org/bouncycastle/crypto/modes/KCTRBlockCipher.classPK   C:Uҋ     P             73 org/bouncycastle/crypto/modes/KGCMBlockCipher$ExposedByteArrayOutputStream.classPK   C:UR}:

    3             3 org/bouncycastle/crypto/modes/KGCMBlockCipher.classPK   C:U^  G  3             3 org/bouncycastle/crypto/modes/KXTSBlockCipher.classPK   C:U6p'    6             r4 org/bouncycastle/crypto/modes/NISTCTSBlockCipher.classPK   C:U=G
    2             	4 org/bouncycastle/crypto/modes/OCBBlockCipher.classPK   C:U*Of  l  2             4 org/bouncycastle/crypto/modes/OFBBlockCipher.classPK   C:U*tC  
  5             4 org/bouncycastle/crypto/modes/OldCTSBlockCipher.classPK   C:UM-  @  9             N"4 org/bouncycastle/crypto/modes/OpenPGPCFBBlockCipher.classPK   C:UbZ    5             '4 org/bouncycastle/crypto/modes/PGPCFBBlockCipher.classPK   C:U]d    5             .4 org/bouncycastle/crypto/modes/PaddedBlockCipher.classPK   C:U<ór  p  2             f34 org/bouncycastle/crypto/modes/SICBlockCipher.classPK
 
    D:U            "             8<4 org/bouncycastle/crypto/modes/gcm/PK   C:UH)    =             x<4 org/bouncycastle/crypto/modes/gcm/BasicGCMExponentiator.classPK   C:U@r    :             >4 org/bouncycastle/crypto/modes/gcm/BasicGCMMultiplier.classPK   C:U"P      8             #@4 org/bouncycastle/crypto/modes/gcm/GCMExponentiator.classPK   C:UG      5             A4 org/bouncycastle/crypto/modes/gcm/GCMMultiplier.classPK   C:Uu 	    /             A4 org/bouncycastle/crypto/modes/gcm/GCMUtil.classPK   C:Uh˫  :  @             "L4 org/bouncycastle/crypto/modes/gcm/Tables1kGCMExponentiator.classPK   C:Ulx    =             ;O4 org/bouncycastle/crypto/modes/gcm/Tables4kGCMMultiplier.classPK   C:UoQ  <  >             R4 org/bouncycastle/crypto/modes/gcm/Tables64kGCMMultiplier.classPK   C:Uw^  b  =             U4 org/bouncycastle/crypto/modes/gcm/Tables8kGCMMultiplier.classPK
 
    D:U            #             X4 org/bouncycastle/crypto/modes/kgcm/PK   C:UC,*    @             Y4 org/bouncycastle/crypto/modes/kgcm/BasicKGCMMultiplier_128.classPK   C:UHnT)    @             Z4 org/bouncycastle/crypto/modes/kgcm/BasicKGCMMultiplier_256.classPK   C:U*    @             =\4 org/bouncycastle/crypto/modes/kgcm/BasicKGCMMultiplier_512.classPK   C:U_l;      7             ]4 org/bouncycastle/crypto/modes/kgcm/KGCMMultiplier.classPK   C:Ut.!  	  5             ^4 org/bouncycastle/crypto/modes/kgcm/KGCMUtil_128.classPK   C:UN%    5             Db4 org/bouncycastle/crypto/modes/kgcm/KGCMUtil_256.classPK   C:UxLR  j  5             f4 org/bouncycastle/crypto/modes/kgcm/KGCMUtil_512.classPK   C:U=m    D             l4 org/bouncycastle/crypto/modes/kgcm/Tables16kKGCMMultiplier_512.classPK   C:UR    C             pn4 org/bouncycastle/crypto/modes/kgcm/Tables4kKGCMMultiplier_128.classPK   C:Ux4    C             p4 org/bouncycastle/crypto/modes/kgcm/Tables8kKGCMMultiplier_256.classPK
 
    D:U            !             (s4 org/bouncycastle/crypto/paddings/PK   C:UX    9             gs4 org/bouncycastle/crypto/paddings/BlockCipherPadding.classPK   C:U_^    8             t4 org/bouncycastle/crypto/paddings/ISO10126d2Padding.classPK   C:Uk&h   5  7             w4 org/bouncycastle/crypto/paddings/ISO7816d4Padding.classPK   C:U	%  8  3             z4 org/bouncycastle/crypto/paddings/PKCS7Padding.classPK   C:Uܰ=  7  @             |4 org/bouncycastle/crypto/paddings/PaddedBufferedBlockCipher.classPK   C:Ul    1             4 org/bouncycastle/crypto/paddings/TBCPadding.classPK   C:U'tfk=    2             4 org/bouncycastle/crypto/paddings/X923Padding.classPK   C:Ui    6             4 org/bouncycastle/crypto/paddings/ZeroBytePadding.classPK
 
    D:U                         4 org/bouncycastle/crypto/params/PK   C:Un8  c  3             #4 org/bouncycastle/crypto/params/AEADParameters.classPK   C:UW      7             <4 org/bouncycastle/crypto/params/Argon2Parameters$1.classPK   C:U_[3  {  =             84 org/bouncycastle/crypto/params/Argon2Parameters$Builder.classPK   C:UnEN  y  5             4 org/bouncycastle/crypto/params/Argon2Parameters.classPK   C:U   8  ;             c4 org/bouncycastle/crypto/params/AsymmetricKeyParameter.classPK   C:U    5             4 org/bouncycastle/crypto/params/Blake3Parameters.classPK   C:U     2             84 org/bouncycastle/crypto/params/CCMParameters.classPK   C:UZvd  "  G             A4 org/bouncycastle/crypto/params/CramerShoupKeyGenerationParameters.classPK   C:U8XӶ  *  =             4 org/bouncycastle/crypto/params/CramerShoupKeyParameters.classPK   C:U(ZS    :             ;4 org/bouncycastle/crypto/params/CramerShoupParameters.classPK   C:U&    D             4 org/bouncycastle/crypto/params/CramerShoupPrivateKeyParameters.classPK   C:Umf3    C             4 org/bouncycastle/crypto/params/CramerShoupPublicKeyParameters.classPK   C:U^9  (  2             I4 org/bouncycastle/crypto/params/DESParameters.classPK   C:Ub    5             M4 org/bouncycastle/crypto/params/DESedeParameters.classPK   C:U R  &  >             <4 org/bouncycastle/crypto/params/DHKeyGenerationParameters.classPK   C:U<)    4             ,4 org/bouncycastle/crypto/params/DHKeyParameters.classPK   C:U<%   P  ;             @4 org/bouncycastle/crypto/params/DHMQVPrivateParameters.classPK   C:U$$    :             ɳ4 org/bouncycastle/crypto/params/DHMQVPublicParameters.classPK   C:UUHu  
  1             U4 org/bouncycastle/crypto/params/DHParameters.classPK   C:U
M|    ;             F4 org/bouncycastle/crypto/params/DHPrivateKeyParameters.classPK   C:UG"'  	  :             =4 org/bouncycastle/crypto/params/DHPublicKeyParameters.classPK   C:UE#$  N  9             4 org/bouncycastle/crypto/params/DHUPrivateParameters.classPK   C:U%    8             84 org/bouncycastle/crypto/params/DHUPublicParameters.classPK   C:UJѷ    ;             4 org/bouncycastle/crypto/params/DHValidationParameters.classPK   C:U@=    ?             4 org/bouncycastle/crypto/params/DSAKeyGenerationParameters.classPK   C:Ua     5             4 org/bouncycastle/crypto/params/DSAKeyParameters.classPK   C:U  W  E             4 org/bouncycastle/crypto/params/DSAParameterGenerationParameters.classPK   C:U-&    2             (4 org/bouncycastle/crypto/params/DSAParameters.classPK   C:U     <             4 org/bouncycastle/crypto/params/DSAPrivateKeyParameters.classPK   C:UX(z  4  ;             
4 org/bouncycastle/crypto/params/DSAPublicKeyParameters.classPK   C:UM8    <             4 org/bouncycastle/crypto/params/DSAValidationParameters.classPK   C:U~1z    7             H4 org/bouncycastle/crypto/params/DSTU4145Parameters.classPK   C:U	i.J    ;             '4 org/bouncycastle/crypto/params/ECDHUPrivateParameters.classPK   C:Ucj.    :             4 org/bouncycastle/crypto/params/ECDHUPublicParameters.classPK   C:U\
c    7             p4 org/bouncycastle/crypto/params/ECDomainParameters.classPK   C:UFHWG    9             84 org/bouncycastle/crypto/params/ECGOST3410Parameters.classPK   C:U$qID    >             4 org/bouncycastle/crypto/params/ECKeyGenerationParameters.classPK   C:Uj`^    4             4 org/bouncycastle/crypto/params/ECKeyParameters.classPK   C:Uto    <             V4 org/bouncycastle/crypto/params/ECNamedDomainParameters.classPK   C:US|  N  ;             4 org/bouncycastle/crypto/params/ECPrivateKeyParameters.classPK   C:UH    :             T4 org/bouncycastle/crypto/params/ECPublicKeyParameters.classPK   C:U:     C             4 org/bouncycastle/crypto/params/Ed25519KeyGenerationParameters.classPK   C:U8  X	  @             4 org/bouncycastle/crypto/params/Ed25519PrivateKeyParameters.classPK   C:Upje    ?             F4 org/bouncycastle/crypto/params/Ed25519PublicKeyParameters.classPK   C:UK     A             t4 org/bouncycastle/crypto/params/Ed448KeyGenerationParameters.classPK   C:U}l    >             4 org/bouncycastle/crypto/params/Ed448PrivateKeyParameters.classPK   C:U    =             5 org/bouncycastle/crypto/params/Ed448PublicKeyParameters.classPK   C:U  D  C             5 org/bouncycastle/crypto/params/ElGamalKeyGenerationParameters.classPK   C:U[$L    9             5 org/bouncycastle/crypto/params/ElGamalKeyParameters.classPK   C:UdfAQ    6             	5 org/bouncycastle/crypto/params/ElGamalParameters.classPK   C:U߄    @             &5 org/bouncycastle/crypto/params/ElGamalPrivateKeyParameters.classPK   C:U}"    ?             5 org/bouncycastle/crypto/params/ElGamalPublicKeyParameters.classPK   C:U%y    2             5 org/bouncycastle/crypto/params/FPEParameters.classPK   C:U%C    D             5 org/bouncycastle/crypto/params/GOST3410KeyGenerationParameters.classPK   C:Uv     :             K5 org/bouncycastle/crypto/params/GOST3410KeyParameters.classPK   C:U4'    7             5 org/bouncycastle/crypto/params/GOST3410Parameters.classPK   C:U#+a     A             %5 org/bouncycastle/crypto/params/GOST3410PrivateKeyParameters.classPK   C:U|o*\     @             5 org/bouncycastle/crypto/params/GOST3410PublicKeyParameters.classPK   C:Ub    A             5 org/bouncycastle/crypto/params/GOST3410ValidationParameters.classPK   C:U8  j  3             .5 org/bouncycastle/crypto/params/HKDFParameters.classPK   C:UJg  0  2              5 org/bouncycastle/crypto/params/IESParameters.classPK   C:U'uz   =  <             !5 org/bouncycastle/crypto/params/IESWithCipherParameters.classPK   C:UK]   6  :             '#5 org/bouncycastle/crypto/params/ISO18033KDFParameters.classPK   C:U=  N  9             $5 org/bouncycastle/crypto/params/KDFCounterParameters.classPK   C:U;    I             g'5 org/bouncycastle/crypto/params/KDFDoublePipelineIterationParameters.classPK   C:U[    :             *5 org/bouncycastle/crypto/params/KDFFeedbackParameters.classPK   C:Uv|	  }  2             .5 org/bouncycastle/crypto/params/KDFParameters.classPK   C:U
(0    1             /5 org/bouncycastle/crypto/params/KeyParameter.classPK   C:U
q|4    2             15 org/bouncycastle/crypto/params/MGFParameters.classPK   C:UK    9             25 org/bouncycastle/crypto/params/MQVPrivateParameters.classPK   C:Um-    8             Y65 org/bouncycastle/crypto/params/MQVPublicParameters.classPK   C:UNE    I             85 org/bouncycastle/crypto/params/NaccacheSternKeyGenerationParameters.classPK   C:UNXG  +  ?             u;5 org/bouncycastle/crypto/params/NaccacheSternKeyParameters.classPK   C:U:;  i  F             )=5 org/bouncycastle/crypto/params/NaccacheSternPrivateKeyParameters.classPK   C:Ul    5             >5 org/bouncycastle/crypto/params/ParametersWithID.classPK   C:UTf    5             Q@5 org/bouncycastle/crypto/params/ParametersWithIV.classPK   C:Uo  H  9             B5 org/bouncycastle/crypto/params/ParametersWithRandom.classPK   C:U]3    7             C5 org/bouncycastle/crypto/params/ParametersWithSBox.classPK   C:Ug    7             mE5 org/bouncycastle/crypto/params/ParametersWithSalt.classPK   C:Uݞj    6             9G5 org/bouncycastle/crypto/params/ParametersWithUKM.classPK   C:Uyy(    2             I5 org/bouncycastle/crypto/params/RC2Parameters.classPK   C:U/0)    2             J5 org/bouncycastle/crypto/params/RC5Parameters.classPK   C:UJ<    :             L5 org/bouncycastle/crypto/params/RSABlindingParameters.classPK   C:U˼  ;  ?             N5 org/bouncycastle/crypto/params/RSAKeyGenerationParameters.classPK   C:UO8  
  5             WQ5 org/bouncycastle/crypto/params/RSAKeyParameters.classPK   C:U<I4  x  ?             W5 org/bouncycastle/crypto/params/RSAPrivateCrtKeyParameters.classPK   C:US    D             Y5 org/bouncycastle/crypto/params/SM2KeyExchangePrivateParameters.classPK   C:U֤T4    C             i]5 org/bouncycastle/crypto/params/SM2KeyExchangePublicParameters.classPK   C:UiRm     8             `5 org/bouncycastle/crypto/params/SRP6GroupParameters.classPK   C:U      6             sa5 org/bouncycastle/crypto/params/SkeinParameters$1.classPK   C:U!  L
  <             ob5 org/bouncycastle/crypto/params/SkeinParameters$Builder.classPK   C:U~L  w  4             |h5 org/bouncycastle/crypto/params/SkeinParameters.classPK   C:Uj!{3B  Q  C             k5 org/bouncycastle/crypto/params/TweakableBlockCipherParameters.classPK   C:UN»     B             lm5 org/bouncycastle/crypto/params/X25519KeyGenerationParameters.classPK   C:U'7    ?             n5 org/bouncycastle/crypto/params/X25519PrivateKeyParameters.classPK   C:URWb    >             r5 org/bouncycastle/crypto/params/X25519PublicKeyParameters.classPK   C:Ug)Q     @             v5 org/bouncycastle/crypto/params/X448KeyGenerationParameters.classPK   C:U5  t  =             @w5 org/bouncycastle/crypto/params/X448PrivateKeyParameters.classPK   C:UJ+^    <             {5 org/bouncycastle/crypto/params/X448PublicKeyParameters.classPK   C:USE<  J  :             ~5 org/bouncycastle/crypto/params/XDHUPrivateParameters.classPK   C:Upـ  V  9             b5 org/bouncycastle/crypto/params/XDHUPublicParameters.classPK
 
    D:U                          I5 org/bouncycastle/crypto/parsers/PK   C:U\ac    :             5 org/bouncycastle/crypto/parsers/DHIESPublicKeyParser.classPK   C:U?  Y  :             ч5 org/bouncycastle/crypto/parsers/ECIESPublicKeyParser.classPK   C:U9  0  9             N5 org/bouncycastle/crypto/parsers/XIESPublicKeyParser.classPK
 
    D:U                         5 org/bouncycastle/crypto/prng/PK   C:UVwY    ?             ō5 org/bouncycastle/crypto/prng/BasicEntropySourceProvider$1.classPK   C:U֏sA  j  =             5 org/bouncycastle/crypto/prng/BasicEntropySourceProvider.classPK   C:U6
      /             5 org/bouncycastle/crypto/prng/DRBGProvider.classPK   C:Ub    8             5 org/bouncycastle/crypto/prng/DigestRandomGenerator.classPK   C:U      0             ї5 org/bouncycastle/crypto/prng/EntropySource.classPK   C:UBǸz      8             Θ5 org/bouncycastle/crypto/prng/EntropySourceProvider.classPK   C:U㉚  g  .             5 org/bouncycastle/crypto/prng/EntropyUtil.classPK   C:U
Jn    4             5 org/bouncycastle/crypto/prng/FixedSecureRandom.classPK   C:U      2             t5 org/bouncycastle/crypto/prng/RandomGenerator.classPK   C:U6W    :             q5 org/bouncycastle/crypto/prng/ReversedWindowGenerator.classPK   C:Ua    4             5 org/bouncycastle/crypto/prng/SP800SecureRandom.classPK   C:Uh	    K             '5 org/bouncycastle/crypto/prng/SP800SecureRandomBuilder$CTRDRBGProvider.classPK   C:UB&;    L             Y5 org/bouncycastle/crypto/prng/SP800SecureRandomBuilder$HMacDRBGProvider.classPK   C:U'i?F    L             5 org/bouncycastle/crypto/prng/SP800SecureRandomBuilder$HashDRBGProvider.classPK   C:UXb  b  ;             E5 org/bouncycastle/crypto/prng/SP800SecureRandomBuilder.classPK   C:UU2;      :             O5 org/bouncycastle/crypto/prng/ThreadedSeedGenerator$1.classPK   C:U./_    F             Q5 org/bouncycastle/crypto/prng/ThreadedSeedGenerator$SeedGenerator.classPK   C:U1    8             $5 org/bouncycastle/crypto/prng/ThreadedSeedGenerator.classPK   C:UK7  B
  6             5 org/bouncycastle/crypto/prng/VMPCRandomGenerator.classPK   C:Uƨ    *             5 org/bouncycastle/crypto/prng/X931RNG.classPK   C:U.drkf    3             5 org/bouncycastle/crypto/prng/X931SecureRandom.classPK   C:U  B  :             5 org/bouncycastle/crypto/prng/X931SecureRandomBuilder.classPK
 
    D:U            "             ;5 org/bouncycastle/crypto/prng/drbg/PK   C:Us0    4             {5 org/bouncycastle/crypto/prng/drbg/CTRSP800DRBG.classPK   C:UIh    4             
5 org/bouncycastle/crypto/prng/drbg/DualECPoints.classPK   C:U     7              5 org/bouncycastle/crypto/prng/drbg/DualECSP800DRBG.classPK   C:UeR  
  5             5 org/bouncycastle/crypto/prng/drbg/HMacSP800DRBG.classPK   C:Ulǿ    5             s5 org/bouncycastle/crypto/prng/drbg/HashSP800DRBG.classPK   C:U1      3             5 org/bouncycastle/crypto/prng/drbg/SP80090DRBG.classPK   C:U$_  G  -             5 org/bouncycastle/crypto/prng/drbg/Utils.classPK
 
    D:U                          5 org/bouncycastle/crypto/signers/PK   C:U;D  
  5             *5 org/bouncycastle/crypto/signers/DSADigestSigner.classPK   C:U
k   8  1             g6 org/bouncycastle/crypto/signers/DSAEncoding.classPK   C:U3~   0  4             6 org/bouncycastle/crypto/signers/DSAKCalculator.classPK   C:Um  k  /             6 org/bouncycastle/crypto/signers/DSASigner.classPK   C:UW)    4             6 org/bouncycastle/crypto/signers/DSTU4145Signer.classPK   C:Ur+R    1             6 org/bouncycastle/crypto/signers/ECDSASigner.classPK   C:Upe  N  6             (6 org/bouncycastle/crypto/signers/ECGOST3410Signer.classPK   C:U?  X  ;             #6 org/bouncycastle/crypto/signers/ECGOST3410_2012Signer.classPK   C:U/d  N  0             *6 org/bouncycastle/crypto/signers/ECNRSigner.classPK   C:U      5             16 org/bouncycastle/crypto/signers/Ed25519Signer$1.classPK   C:U;
y    :             26 org/bouncycastle/crypto/signers/Ed25519Signer$Buffer.classPK   C:UMzN  4  3             56 org/bouncycastle/crypto/signers/Ed25519Signer.classPK   C:U+є      8             96 org/bouncycastle/crypto/signers/Ed25519ctxSigner$1.classPK   C:UF߁    =             :6 org/bouncycastle/crypto/signers/Ed25519ctxSigner$Buffer.classPK   C:Ua    6             =6 org/bouncycastle/crypto/signers/Ed25519ctxSigner.classPK   C:U㊉h  
	  5             A6 org/bouncycastle/crypto/signers/Ed25519phSigner.classPK   C:U"(      3             F6 org/bouncycastle/crypto/signers/Ed448Signer$1.classPK   C:UU9h{    8             G6 org/bouncycastle/crypto/signers/Ed448Signer$Buffer.classPK   C:U    1             yJ6 org/bouncycastle/crypto/signers/Ed448Signer.classPK   C:Uti    3             N6 org/bouncycastle/crypto/signers/Ed448phSigner.classPK   C:Uo\     4             sS6 org/bouncycastle/crypto/signers/GOST3410Signer.classPK   C:UT6FQ    3             X6 org/bouncycastle/crypto/signers/GenericSigner.classPK   C:U
  
  8             Z]6 org/bouncycastle/crypto/signers/HMacDSAKCalculator.classPK   C:U&^M8
    8             b6 org/bouncycastle/crypto/signers/ISO9796d2PSSSigner.classPK   C:UG
    5             hp6 org/bouncycastle/crypto/signers/ISO9796d2Signer.classPK   C:U&qo  1  1             X{6 org/bouncycastle/crypto/signers/ISOTrailers.classPK   C:UVn\	    /             &6 org/bouncycastle/crypto/signers/PSSSigner.classPK   C:UfCt    6             ?6 org/bouncycastle/crypto/signers/PlainDSAEncoding.classPK   C:UZ+	  r  5             6 org/bouncycastle/crypto/signers/RSADigestSigner.classPK   C:U+E[}    :             16 org/bouncycastle/crypto/signers/RandomDSAKCalculator.classPK   C:U
    /             6 org/bouncycastle/crypto/signers/SM2Signer.classPK   C:UO  n  9             \6 org/bouncycastle/crypto/signers/StandardDSAEncoding.classPK   C:U
Ծ  <  +             6 org/bouncycastle/crypto/signers/Utils.classPK   C:UT  
  0             6 org/bouncycastle/crypto/signers/X931Signer.classPK
 
    D:U                         6 org/bouncycastle/crypto/util/PK   C:UW
  _  =             @6 org/bouncycastle/crypto/util/AlgorithmIdentifierFactory.classPK   C:U@@J    6             6 org/bouncycastle/crypto/util/BasicAlphabetMapper.classPK   C:URk
    0             .6 org/bouncycastle/crypto/util/CipherFactory.classPK   C:UP  	  <             6 org/bouncycastle/crypto/util/CipherKeyGeneratorFactory.classPK   C:U10Z8  +  /             \6 org/bouncycastle/crypto/util/DERMacData$1.classPK   C:UEE}  5  5             6 org/bouncycastle/crypto/util/DERMacData$Builder.classPK   C:U@  n  2             f6 org/bouncycastle/crypto/util/DERMacData$Type.classPK   C:UY,-\  n  -             \6 org/bouncycastle/crypto/util/DERMacData.classPK   C:U6      1             6 org/bouncycastle/crypto/util/DEROtherInfo$1.classPK   C:U㜜  +  7             	6 org/bouncycastle/crypto/util/DEROtherInfo$Builder.classPK   C:U:^^j    /             6 org/bouncycastle/crypto/util/DEROtherInfo.classPK   C:UU    ,             6 org/bouncycastle/crypto/util/DerUtil$1.classPK   C:Uv|+    *             6 org/bouncycastle/crypto/util/DerUtil.classPK   C:Uqf(  7  2             6 org/bouncycastle/crypto/util/DigestFactory$1.classPK   C:U&b(  :  3             6 org/bouncycastle/crypto/util/DigestFactory$10.classPK   C:U$*,  <  3             6 org/bouncycastle/crypto/util/DigestFactory$11.classPK   C:Um4`,  <  3             6 org/bouncycastle/crypto/util/DigestFactory$12.classPK   C:U(  7  2             76 org/bouncycastle/crypto/util/DigestFactory$2.classPK   C:U°.-  =  2             6 org/bouncycastle/crypto/util/DigestFactory$3.classPK   C:Ud
-  =  2             L6 org/bouncycastle/crypto/util/DigestFactory$4.classPK   C:UEr.  =  2             6 org/bouncycastle/crypto/util/DigestFactory$5.classPK   C:Ue-  =  2             g6 org/bouncycastle/crypto/util/DigestFactory$6.classPK   C:Uv(  9  2             6 org/bouncycastle/crypto/util/DigestFactory$7.classPK   C:UbC(  9  2             |6 org/bouncycastle/crypto/util/DigestFactory$8.classPK   C:Us(  9  2             6 org/bouncycastle/crypto/util/DigestFactory$9.classPK   C:UNߤ     7             6 org/bouncycastle/crypto/util/DigestFactory$Cloner.classPK   C:Ut  7  0             6 org/bouncycastle/crypto/util/DigestFactory.classPK   C:Uu_jd    5             7 org/bouncycastle/crypto/util/JournaledAlgorithm.classPK   C:U@ܛ      ;             7 org/bouncycastle/crypto/util/JournalingSecureRandom$1.classPK   C:U<O1?  O  J             	7 org/bouncycastle/crypto/util/JournalingSecureRandom$TranscriptStream.classPK   C:Uʗ6!  :  9             Z7 org/bouncycastle/crypto/util/JournalingSecureRandom.classPK   C:Uix    8             7 org/bouncycastle/crypto/util/OpenSSHPrivateKeyUtil.classPK   C:UӸ9    7             7 org/bouncycastle/crypto/util/OpenSSHPublicKeyUtil.classPK   C:UO      1             $7 org/bouncycastle/crypto/util/PBKDF2Config$1.classPK   C:UIUn    7             %7 org/bouncycastle/crypto/util/PBKDF2Config$Builder.classPK   C:UUJ  {  /             4(7 org/bouncycastle/crypto/util/PBKDF2Config.classPK   C:UUE   ~  .             >.7 org/bouncycastle/crypto/util/PBKDFConfig.classPK   C:Uap4    '             /7 org/bouncycastle/crypto/util/Pack.classPK   C:U}Nj  7!  4             37 org/bouncycastle/crypto/util/PrivateKeyFactory.classPK   C:UĭsC
  $  8             >7 org/bouncycastle/crypto/util/PrivateKeyInfoFactory.classPK   C:UhA      5             I7 org/bouncycastle/crypto/util/PublicKeyFactory$1.classPK   C:UR!    H             J7 org/bouncycastle/crypto/util/PublicKeyFactory$DHAgreementConverter.classPK   C:U|&C  +	  K             M7 org/bouncycastle/crypto/util/PublicKeyFactory$DHPublicNumberConverter.classPK   C:U\>%    @             R7 org/bouncycastle/crypto/util/PublicKeyFactory$DSAConverter.classPK   C:U7)  b  A             UU7 org/bouncycastle/crypto/util/PublicKeyFactory$DSTUConverter.classPK   C:UOD@    ?             [7 org/bouncycastle/crypto/util/PublicKeyFactory$ECConverter.classPK   C:UQ    D             a7 org/bouncycastle/crypto/util/PublicKeyFactory$Ed25519Converter.classPK   C:U8rS    B             c7 org/bouncycastle/crypto/util/PublicKeyFactory$Ed448Converter.classPK   C:Uo  v  D             e7 org/bouncycastle/crypto/util/PublicKeyFactory$ElGamalConverter.classPK   C:U*  ^  J             h7 org/bouncycastle/crypto/util/PublicKeyFactory$GOST3410_2001Converter.classPK   C:Ux r  Y  J             m7 org/bouncycastle/crypto/util/PublicKeyFactory$GOST3410_2012Converter.classPK   C:U9"    @             sr7 org/bouncycastle/crypto/util/PublicKeyFactory$RSAConverter.classPK   C:UzL    Q             u7 org/bouncycastle/crypto/util/PublicKeyFactory$SubjectPublicKeyInfoConverter.classPK   C:U#א    C             v7 org/bouncycastle/crypto/util/PublicKeyFactory$X25519Converter.classPK   C:UDO    A             x7 org/bouncycastle/crypto/util/PublicKeyFactory$X448Converter.classPK   C:UwY    3             z7 org/bouncycastle/crypto/util/PublicKeyFactory.classPK   C:U:Ĝq  .	  1             7 org/bouncycastle/crypto/util/RadixConverter.classPK   C:UzV=    ,             S7 org/bouncycastle/crypto/util/SSHBuffer.classPK   C:UwY    -             7 org/bouncycastle/crypto/util/SSHBuilder.classPK   C:U8@/  M  3             7 org/bouncycastle/crypto/util/SSHNamedCurves$1.classPK   C:USab  k  3             7 org/bouncycastle/crypto/util/SSHNamedCurves$2.classPK   C:Ul    3             c7 org/bouncycastle/crypto/util/SSHNamedCurves$3.classPK   C:Ux+  l  3             ՗7 org/bouncycastle/crypto/util/SSHNamedCurves$4.classPK   C:U5  	  1             /7 org/bouncycastle/crypto/util/SSHNamedCurves.classPK   C:Uux'      1             $7 org/bouncycastle/crypto/util/ScryptConfig$1.classPK   C:U  
  7             7 org/bouncycastle/crypto/util/ScryptConfig$Builder.classPK   C:U7	    /              7 org/bouncycastle/crypto/util/ScryptConfig.classPK   C:UP	    >             f7 org/bouncycastle/crypto/util/SubjectPublicKeyInfoFactory.classPK
 
    D:U                         7 org/bouncycastle/i18n/PK   C:U $  4  '             7 org/bouncycastle/i18n/ErrorBundle.classPK   C:Uac    (             7 org/bouncycastle/i18n/LocaleString.classPK   C:Up.#{    .             H7 org/bouncycastle/i18n/LocalizedException.classPK   C:U9    >             7 org/bouncycastle/i18n/LocalizedMessage$FilteredArguments.classPK   C:U@-	    ,             ĸ7 org/bouncycastle/i18n/LocalizedMessage.classPK   C:U0    )             K7 org/bouncycastle/i18n/MessageBundle.classPK   C:U{W  z  1             7 org/bouncycastle/i18n/MissingEntryException.classPK   C:Uջ    &             
7 org/bouncycastle/i18n/TextBundle.classPK
 
    D:U                         Y7 org/bouncycastle/i18n/filter/PK   C:U]~      )             7 org/bouncycastle/i18n/filter/Filter.classPK   C:UcB  .  -             i7 org/bouncycastle/i18n/filter/HTMLFilter.classPK   C:U#"    ,             7 org/bouncycastle/i18n/filter/SQLFilter.classPK   C:U}#n   w  /             7 org/bouncycastle/i18n/filter/TrustedInput.classPK   C:U2p     1             7 org/bouncycastle/i18n/filter/UntrustedInput.classPK   C:UaRQ(      4             /7 org/bouncycastle/i18n/filter/UntrustedUrlInput.classPK
 
    D:U                         -7 org/bouncycastle/iana/PK   C:UD{     )             a7 org/bouncycastle/iana/AEADAlgorithm.classPK
 
    D:U                         7 org/bouncycastle/internal/PK
 
    D:U                         7 org/bouncycastle/internal/asn1/PK
 
    D:U            #             M7 org/bouncycastle/internal/asn1/bsi/PK   C:UH  L  =             7 org/bouncycastle/internal/asn1/bsi/BSIObjectIdentifiers.classPK
 
    D:U            #             7 org/bouncycastle/internal/asn1/cms/PK   C:U    6             T7 org/bouncycastle/internal/asn1/cms/CCMParameters.classPK   C:Un,    =             7 org/bouncycastle/internal/asn1/cms/CMSObjectIdentifiers.classPK   C:U&    6             7 org/bouncycastle/internal/asn1/cms/GCMParameters.classPK
 
    D:U            #             7 org/bouncycastle/internal/asn1/eac/PK   C:Uq  M  =             7 org/bouncycastle/internal/asn1/eac/EACObjectIdentifiers.classPK
 
    D:U            '             7 org/bouncycastle/internal/asn1/isismtt/PK   C:U!"#	.    E             I7 org/bouncycastle/internal/asn1/isismtt/ISISMTTObjectIdentifiers.classPK
 
    D:U                         7 org/bouncycastle/jcajce/PK   C:U6      7              7 org/bouncycastle/jcajce/BCFKSLoadStoreParameter$1.classPK   C:UC9    =             7 org/bouncycastle/jcajce/BCFKSLoadStoreParameter$Builder.classPK   C:UO     H             7 org/bouncycastle/jcajce/BCFKSLoadStoreParameter$CertChainValidator.classPK   C:UxH3  h  I             7 org/bouncycastle/jcajce/BCFKSLoadStoreParameter$EncryptionAlgorithm.classPK   C:U<a  9  B             B7 org/bouncycastle/jcajce/BCFKSLoadStoreParameter$MacAlgorithm.classPK   C:UGX  R  H             7 org/bouncycastle/jcajce/BCFKSLoadStoreParameter$SignatureAlgorithm.classPK   C:Uq:  H  5             o7 org/bouncycastle/jcajce/BCFKSLoadStoreParameter.classPK   C:U}4    1             8 org/bouncycastle/jcajce/BCFKSStoreParameter.classPK   C:Uk  t  2             8 org/bouncycastle/jcajce/BCLoadStoreParameter.classPK   C:U3ͽ  	  1             8 org/bouncycastle/jcajce/CompositePrivateKey.classPK   C:Uda  	  0             8 org/bouncycastle/jcajce/CompositePublicKey.classPK   C:U #  !	  /             08 org/bouncycastle/jcajce/ExternalPublicKey.classPK   C:U$k  $  '             v8 org/bouncycastle/jcajce/PBKDF1Key.classPK   C:U7R^  ;  5             8 org/bouncycastle/jcajce/PBKDF1KeyWithParameters.classPK   C:U]Fo    '             U8 org/bouncycastle/jcajce/PBKDF2Key.classPK   C:Uu^  ;  5             c8 org/bouncycastle/jcajce/PBKDF2KeyWithParameters.classPK   C:U\n   r   &             $8 org/bouncycastle/jcajce/PBKDFKey.classPK   C:U|  O  '             8 org/bouncycastle/jcajce/PKCS12Key.classPK   C:Ui  -  5             T 8 org/bouncycastle/jcajce/PKCS12KeyWithParameters.classPK   C:U
H
    2              "8 org/bouncycastle/jcajce/PKCS12StoreParameter.classPK   C:U@     *             $8 org/bouncycastle/jcajce/PKIXCRLStore.classPK   C:U^S\      4             %8 org/bouncycastle/jcajce/PKIXCRLStoreSelector$1.classPK   C:Uo0  D  :             &8 org/bouncycastle/jcajce/PKIXCRLStoreSelector$Builder.classPK   C:U.;g    @             ;*8 org/bouncycastle/jcajce/PKIXCRLStoreSelector$SelectorClone.classPK   C:U&/:    2             -8 org/bouncycastle/jcajce/PKIXCRLStoreSelector.classPK   C:Uk     7             e38 org/bouncycastle/jcajce/PKIXCertRevocationChecker.classPK   C:U?    A             48 org/bouncycastle/jcajce/PKIXCertRevocationCheckerParameters.classPK   C:U     +             g78 org/bouncycastle/jcajce/PKIXCertStore.classPK   C:Uw.      5             88 org/bouncycastle/jcajce/PKIXCertStoreSelector$1.classPK   C:UQxjw  8  ;             98 org/bouncycastle/jcajce/PKIXCertStoreSelector$Builder.classPK   C:U
L  
  A             ;8 org/bouncycastle/jcajce/PKIXCertStoreSelector$SelectorClone.classPK   C:U    3             @8 org/bouncycastle/jcajce/PKIXCertStoreSelector.classPK   C:US֞      =             .D8 org/bouncycastle/jcajce/PKIXExtendedBuilderParameters$1.classPK   C:UQ  m	  C             7E8 org/bouncycastle/jcajce/PKIXExtendedBuilderParameters$Builder.classPK   C:Ub  V  ;             H8 org/bouncycastle/jcajce/PKIXExtendedBuilderParameters.classPK   C:UEJ      6             K8 org/bouncycastle/jcajce/PKIXExtendedParameters$1.classPK   C:U  S  <             L8 org/bouncycastle/jcajce/PKIXExtendedParameters$Builder.classPK   C:U+    4             T8 org/bouncycastle/jcajce/PKIXExtendedParameters.classPK   C:Uzѻ    8             w[8 org/bouncycastle/jcajce/SecretKeyWithEncapsulation.classPK
 
    D:U            #             ]8 org/bouncycastle/jcajce/interfaces/PK   C:Uν     :             ]8 org/bouncycastle/jcajce/interfaces/BCX509Certificate.classPK   C:Us   x   1             _8 org/bouncycastle/jcajce/interfaces/EdDSAKey.classPK   C:Uј     8             _8 org/bouncycastle/jcajce/interfaces/EdDSAPrivateKey.classPK   C:Ul      7             `8 org/bouncycastle/jcajce/interfaces/EdDSAPublicKey.classPK   C:Um7Yp   v   /             a8 org/bouncycastle/jcajce/interfaces/XDHKey.classPK   C:Uww     6             b8 org/bouncycastle/jcajce/interfaces/XDHPrivateKey.classPK   C:U$wh      5             c8 org/bouncycastle/jcajce/interfaces/XDHPublicKey.classPK
 
    D:U                         d8 org/bouncycastle/jcajce/io/PK   C:UEQ2M    2             e8 org/bouncycastle/jcajce/io/CipherInputStream.classPK   C:U+    3             i8 org/bouncycastle/jcajce/io/CipherOutputStream.classPK   C:UסuO  /  ;             Km8 org/bouncycastle/jcajce/io/DigestUpdatingOutputStream.classPK   C:U>0%O    0             o8 org/bouncycastle/jcajce/io/MacOutputStream.classPK   C:U+F    8             p8 org/bouncycastle/jcajce/io/MacUpdatingOutputStream.classPK   C:UҀ<I    4             \r8 org/bouncycastle/jcajce/io/OutputStreamFactory.classPK   C:UV5    >             t8 org/bouncycastle/jcajce/io/SignatureUpdatingOutputStream.classPK
 
    D:U            !             @v8 org/bouncycastle/jcajce/provider/PK
 
    D:U            ,             v8 org/bouncycastle/jcajce/provider/asymmetric/PK   C:U$0W  
  U             v8 org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$CompositeKeyInfoConverter.classPK   C:U+$    F             {8 org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$KeyFactory.classPK   C:UԨ    D             ~8 org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE$Mappings.classPK   C:U+1|    ;             с8 org/bouncycastle/jcajce/provider/asymmetric/COMPOSITE.classPK   C:UsJ    =             8 org/bouncycastle/jcajce/provider/asymmetric/DH$Mappings.classPK   C:UP    4             8 org/bouncycastle/jcajce/provider/asymmetric/DH.classPK   C:Ut|v    >             Z8 org/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings.classPK   C:Ukc
B  ~  5             8 org/bouncycastle/jcajce/provider/asymmetric/DSA.classPK   C:UB    C             H8 org/bouncycastle/jcajce/provider/asymmetric/DSTU4145$Mappings.classPK   C:U@$    :             8 org/bouncycastle/jcajce/provider/asymmetric/DSTU4145.classPK   C:U9p  HP  =             8 org/bouncycastle/jcajce/provider/asymmetric/EC$Mappings.classPK   C:U֐DT    4             8 org/bouncycastle/jcajce/provider/asymmetric/EC.classPK   C:UK    A             j8 org/bouncycastle/jcajce/provider/asymmetric/ECGOST$Mappings.classPK   C:UN7  :  8             8 org/bouncycastle/jcajce/provider/asymmetric/ECGOST.classPK   C:U7<g  ;  S             $8 org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$ExternalKeyInfoConverter.classPK   C:Ubl&    E             8 org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$KeyFactory.classPK   C:U,jXU  n  C             8 org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL$Mappings.classPK   C:USh    :             8 org/bouncycastle/jcajce/provider/asymmetric/EXTERNAL.classPK   C:U'(Q    ?             p8 org/bouncycastle/jcajce/provider/asymmetric/EdEC$Mappings.classPK   C:U.X  Y  6             .8 org/bouncycastle/jcajce/provider/asymmetric/EdEC.classPK   C:U  	  B             8 org/bouncycastle/jcajce/provider/asymmetric/ElGamal$Mappings.classPK   C:U- )    9             8 org/bouncycastle/jcajce/provider/asymmetric/ElGamal.classPK   C:Ueh  
  =             `8 org/bouncycastle/jcajce/provider/asymmetric/GM$Mappings.classPK   C:U
:  Z  4             38 org/bouncycastle/jcajce/provider/asymmetric/GM.classPK   C:Uc7|  k
  ?             8 org/bouncycastle/jcajce/provider/asymmetric/GOST$Mappings.classPK   C:U_
v    6             q8 org/bouncycastle/jcajce/provider/asymmetric/GOST.classPK   C:Ub3#d    >             8 org/bouncycastle/jcajce/provider/asymmetric/IES$Mappings.classPK   C:Ut  ~  5             8 org/bouncycastle/jcajce/provider/asymmetric/IES.classPK   C:U6j  ]  >             8 org/bouncycastle/jcajce/provider/asymmetric/LMS$Mappings.classPK   C:U8\R  w  5             8 org/bouncycastle/jcajce/provider/asymmetric/LMS.classPK   C:U  (E  >             F8 org/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings.classPK   C:U[rϔ    5             n8 org/bouncycastle/jcajce/provider/asymmetric/RSA.classPK   C:UK{!n  
  F             8 org/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus$Mappings.classPK   C:U0l}    =             8 org/bouncycastle/jcajce/provider/asymmetric/SPHINCSPlus.classPK   C:U  d  ?             @8 org/bouncycastle/jcajce/provider/asymmetric/X509$Mappings.classPK   C:Uw     6             I8 org/bouncycastle/jcajce/provider/asymmetric/X509.classPK
 
    D:U            /             k8 org/bouncycastle/jcajce/provider/asymmetric/dh/PK   C:U,  W  S             8 org/bouncycastle/jcajce/provider/asymmetric/dh/AlgorithmParameterGeneratorSpi.classPK   C:U>  
  K             9 org/bouncycastle/jcajce/provider/asymmetric/dh/AlgorithmParametersSpi.classPK   C:U
    C             	9 org/bouncycastle/jcajce/provider/asymmetric/dh/BCDHPrivateKey.classPK   C:U𨁹  m  B             9 org/bouncycastle/jcajce/provider/asymmetric/dh/BCDHPublicKey.classPK   C:UFx    ;             f 9 org/bouncycastle/jcajce/provider/asymmetric/dh/DHUtil.classPK   C:U}GP~  q  @             k#9 org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$1.classPK   C:Ur<  D  B             &9 org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$IES.classPK   C:Uv  }  L             (9 org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$IESwithAESCBC.classPK   C:U8    O             #+9 org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher$IESwithDESedeCBC.classPK   C:UX]
  %  >             -9 org/bouncycastle/jcajce/provider/asymmetric/dh/IESCipher.classPK   C:U&s    T             <9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA1CKDF.classPK   C:Un    S             >9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA1KDF.classPK   C:U>Ti{    V             @9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA224CKDF.classPK   C:U/C?t    U             B9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA224KDF.classPK   C:U2~$    V             D9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA256CKDF.classPK   C:U#u    U             F9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA256KDF.classPK   C:UYe}    V             H9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA384CKDF.classPK   C:Uxϩu    U             J9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA384KDF.classPK   C:Ubl|    V             L9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA512CKDF.classPK   C:U?t    U             N9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHUwithSHA512KDF.classPK   C:U¶T  K  U             P9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithRFC2631KDF.classPK   C:UnS  R  S             oR9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA1CKDF.classPK   C:UŸS  W  R             CT9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA1KDF.classPK   C:U 5U  X  U             V9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA224CKDF.classPK   C:UV  _  T             W9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA224KDF.classPK   C:URouV  X  U             Y9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA256CKDF.classPK   C:U7V  _  T             [9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA256KDF.classPK   C:U0V  X  U             w]9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA384CKDF.classPK   C:UO  L  T             P_9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA384KDF.classPK   C:UV  X  U             !a9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA512CKDF.classPK   C:UtOIO  L  T             b9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$DHwithSHA512KDF.classPK   C:U1 t    T             d9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA1CKDF.classPK   C:UWn    S             f9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA1KDF.classPK   C:Uew    V             h9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA224CKDF.classPK   C:UٿRs    U             j9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA224KDF.classPK   C:Uqxw    V             l9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA256CKDF.classPK   C:UAs    U             n9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA256KDF.classPK   C:UBa6w    V             p9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA384CKDF.classPK   C:U-s    U             r9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA384KDF.classPK   C:U!jv    V             t9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA512CKDF.classPK   C:Uw
s    U             }v9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi$MQVwithSHA512KDF.classPK   C:Uo
  ,  D             sx9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyAgreementSpi.classPK   C:U    B             9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyFactorySpi.classPK   C:Ub  E  H             ̌9 org/bouncycastle/jcajce/provider/asymmetric/dh/KeyPairGeneratorSpi.classPK
 
    D:U            0             '9 org/bouncycastle/jcajce/provider/asymmetric/dsa/PK   C:U7  
  T             u9 org/bouncycastle/jcajce/provider/asymmetric/dsa/AlgorithmParameterGeneratorSpi.classPK   C:UУXC  
  L             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/AlgorithmParametersSpi.classPK   C:U"  6  E             t9 org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPrivateKey.classPK   C:UqIϼ    D             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey.classPK   C:U>K	G    F             Ű9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA.classPK   C:UL    I             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA224.classPK   C:Uժw
M    I             C9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA256.classPK   C:UUM    I             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA384.classPK   C:UP}`xM    I             ˷9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSA512.classPK   C:U*WR    N             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_224.classPK   C:U$S    N             ]9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_256.classPK   C:U@LwS    N             ,9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_384.classPK   C:US    N             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$detDSASha3_512.classPK   C:UOV    F             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa224.classPK   C:Uu    F             Y9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa256.classPK   C:U %    F             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa384.classPK   C:U3	    F             y9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsa512.classPK   C:U>    I             	9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaRMD160.classPK   C:UN    K             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_224.classPK   C:U     K             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_256.classPK   C:U3B    K             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_384.classPK   C:Uu     K             P9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$dsaSha3_512.classPK   C:U    G             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$noneDSA.classPK   C:U'    F             _9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner$stdDSA.classPK   C:Ul(  T  ?             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSASigner.classPK   C:UpxW    =             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/DSAUtil.classPK   C:U!ە    E             m9 org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi$1.classPK   C:Uhn  T  C             u9 org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi.classPK   C:UvG  M  I             9 org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyPairGeneratorSpi.classPK
 
    D:U            1             9 org/bouncycastle/jcajce/provider/asymmetric/dstu/PK   C:U1  +3  K             49 org/bouncycastle/jcajce/provider/asymmetric/dstu/BCDSTU4145PrivateKey.classPK   C:U1R|G  0  J             : org/bouncycastle/jcajce/provider/asymmetric/dstu/BCDSTU4145PublicKey.classPK   C:US    D             : org/bouncycastle/jcajce/provider/asymmetric/dstu/KeyFactorySpi.classPK   C:U3    J             : org/bouncycastle/jcajce/provider/asymmetric/dstu/KeyPairGeneratorSpi.classPK   C:UvF    C             U%: org/bouncycastle/jcajce/provider/asymmetric/dstu/SignatureSpi.classPK   C:U
B    E             -: org/bouncycastle/jcajce/provider/asymmetric/dstu/SignatureSpiLe.classPK
 
    D:U            /             E0: org/bouncycastle/jcajce/provider/asymmetric/ec/PK   C:U~ex  U  K             0: org/bouncycastle/jcajce/provider/asymmetric/ec/AlgorithmParametersSpi.classPK   C:U7  &  C             9: org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPrivateKey.classPK   C:Uy@
  '  B             F: org/bouncycastle/jcajce/provider/asymmetric/ec/BCECPublicKey.classPK   C:U+n    <             QT: org/bouncycastle/jcajce/provider/asymmetric/ec/ECUtils.classPK   C:U<C    U             Z: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$ErasableOutputStream.classPK   C:Uau   q  D             U\: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2.classPK   C:UOM    O             ]: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withBlake2b.classPK   C:U,h    O             E_: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withBlake2s.classPK   C:UVkm    K             `: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withMD5.classPK   C:UAM    K             ib: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withRMD.classPK   C:U*:    L             c: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha1.classPK   C:Uu}Y    N             e: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha224.classPK   C:U    N             g: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha256.classPK   C:UlH}    N             h: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha384.classPK   C:Ug    N             Gj: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withSha512.classPK   C:UY-    Q             k: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi$SM2withWhirlpool.classPK   C:Uh"
    @             qm: org/bouncycastle/jcajce/provider/asymmetric/ec/GMCipherSpi.classPK   C:U`OH    Q             x: org/bouncycastle/jcajce/provider/asymmetric/ec/GMSignatureSpi$sha256WithSM2.classPK   C:UIf     N             y: org/bouncycastle/jcajce/provider/asymmetric/ec/GMSignatureSpi$sm3WithSM2.classPK   C:U    C              {: org/bouncycastle/jcajce/provider/asymmetric/ec/GMSignatureSpi.classPK   C:UWx  a  @             I: org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$1.classPK   C:UQW@    D             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIES.classPK   C:UQ'  X  N             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithAESCBC.classPK   C:U杝    N             Y: org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithCipher.classPK   C:U7+SI)  a  Q             ۉ: org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithDESedeCBC.classPK   C:U  "  N             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA256.classPK   C:UaMi    W             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA256andAESCBC.classPK   C:U{Crj  '  Z             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA256andDESedeCBC.classPK   C:U٣  "  N             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA384.classPK   C:U
uj    W             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA384andAESCBC.classPK   C:Uהuk  '  Z             r: org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA384andDESedeCBC.classPK   C:U/Qs  "  N             e: org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA512.classPK   C:Ue;HXi    W             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA512andAESCBC.classPK   C:UҎZj  '  Z             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher$ECIESwithSHA512andDESedeCBC.classPK   C:UNÃ  *  >             ՛: org/bouncycastle/jcajce/provider/asymmetric/ec/IESCipher.classPK   C:UA  m  C             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher$1.classPK   C:UߥO    E             ,: org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher$KEM.classPK   C:U+hE  )  O             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher$KEMwithSHA256.classPK   C:UC  0&  A             : org/bouncycastle/jcajce/provider/asymmetric/ec/IESKEMCipher.classPK   C:U̇    F             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$1.classPK   C:U|^bC~    `             |: org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA1KDFAndSharedInfo.classPK   C:US    b             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA224KDFAndSharedInfo.classPK   C:Ut    b             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA256KDFAndSharedInfo.classPK   C:URl    b             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA384KDFAndSharedInfo.classPK   C:Unn    b             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$CDHwithSHA512KDFAndSharedInfo.classPK   C:U
    G             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DH.classPK   C:Uf    H             o: org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHC.classPK   C:U٩    I             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUC.classPK   C:Ue"Y    T             ~: org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA1CKDF.classPK   C:Uc(    S             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA1KDF.classPK   C:U9B,    V             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA224CKDF.classPK   C:U    U             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA224KDF.classPK   C:U1
    V             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA256CKDF.classPK   C:Uu    U             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA256KDF.classPK   C:Um'4    V             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA384CKDF.classPK   C:US\8b    U             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA384KDF.classPK   C:UM9X    V             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA512CKDF.classPK   C:U1i     U             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHUwithSHA512KDF.classPK   C:U9_0 v    S             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA1CKDF.classPK   C:Ųt    R             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA1KDF.classPK   C:U3    _             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA1KDFAndSharedInfo.classPK   C:U2
*    a             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA224KDFAndSharedInfo.classPK   C:U==    U             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA256CKDF.classPK   C:UML    a             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA256KDFAndSharedInfo.classPK   C:Un    U             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA384CKDF.classPK   C:U۴    a             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA384KDFAndSharedInfo.classPK   C:Uyx    U             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA512CKDF.classPK   C:UFbc    a             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$DHwithSHA512KDFAndSharedInfo.classPK   C:UQg    [             &: org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithRIPEMD160KDF.classPK   C:U.q    V             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA1KDF.classPK   C:Ueu    X             : org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA224KDF.classPK   C:Uǹv    X             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA256KDF.classPK   C:Uv    X             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA384KDF.classPK   C:UCqv    X             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$ECKAEGwithSHA512KDF.classPK   C:UN    H             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQV.classPK   C:UMw    T             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA1CKDF.classPK   C:Ur    S             x
; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA1KDF.classPK   C:U    `             k; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA1KDFAndSharedInfo.classPK   C:U%^X    V             ~; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA224CKDF.classPK   C:U`u    U             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA224KDF.classPK   C:U-
݊    b             ~; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA224KDFAndSharedInfo.classPK   C:UGߐ    V             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA256CKDF.classPK   C:Uylv    U             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA256KDF.classPK   C:UyV    b             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA256KDFAndSharedInfo.classPK   C:U    V             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA384CKDF.classPK   C:U?v    U             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA384KDF.classPK   C:Ua    b             ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA384KDFAndSharedInfo.classPK   C:Uyb    V              ; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA512CKDF.classPK   C:UE7v    U             "; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA512KDF.classPK   C:Uu\    b             $; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi$MQVwithSHA512KDFAndSharedInfo.classPK   C:Ub?J
  $1  D             &; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyAgreementSpi.classPK   C:U    E             4; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC.classPK   C:U+-    G             }6; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECDH.classPK   C:U>q=    H             8; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECDHC.classPK   C:U    H             9; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECDSA.classPK   C:U w    M             ;; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECGOST3410.classPK   C:Uc#  !  R             <; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECGOST3410_2012.classPK   C:U"    H             O>; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$ECMQV.classPK   C:Ul  %  B             ?; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi.classPK   C:UXA]
  q  K             eL; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$EC.classPK   C:Uot-  ]  M             ;W; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECDH.classPK   C:U-  _  N             X; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECDHC.classPK   C:U=e.  _  N             Z; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECDSA.classPK   C:U[,  _  N             6\; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi$ECMQV.classPK   C:UEc    H             ]; org/bouncycastle/jcajce/provider/asymmetric/ec/KeyPairGeneratorSpi.classPK   C:UkT    J             p_; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA.classPK   C:U/!X    M             <a; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA224.classPK   C:UY    M             c; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA256.classPK   C:UZ    M             d; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA384.classPK   C:U8 3Y    O             f; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_224.classPK   C:Ul[    O             h; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_256.classPK   C:U͝[    O             fj; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_384.classPK   C:U=Z    O             >l; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA3_512.classPK   C:UY    M             n; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecCVCDSA512.classPK   C:U~S    G             o; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA.classPK   C:U2X    J             q; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA224.classPK   C:Uڧ7Y    J             s; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA256.classPK   C:U|Y    J             Ru; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA384.classPK   C:U޻Y    J             #w; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSA512.classPK   C:UɾK    P             x; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSARipeMD160.classPK   C:UɊD"\    O             z; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_224.classPK   C:U{In\    O             |; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_256.classPK   C:UT\    O             o~; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_384.classPK   C:Ux8[    O             H; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSASha3_512.classPK   C:Uz  O  O              ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSAShake128.classPK   C:U(v  O  O             !; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSAShake256.classPK   C:UFA    K              ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDSAnone.classPK   C:U0JB  a  J             ڇ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA.classPK   C:UvaJP  i  M             ׉; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA224.classPK   C:U36^u  i  M             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA256.classPK   C:U(ݗx  i  M             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA384.classPK   C:U£g  i  M             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSA512.classPK   C:UP  u  R             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_224.classPK   C:U6  u  R             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_256.classPK   C:U$  u  R             -; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_384.classPK   C:UE  u  R             =; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecDetDSASha3_512.classPK   C:Un	R    F             M; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR.classPK   C:U$<V    I             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR224.classPK   C:UZd,W    I             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR256.classPK   C:U=[W    I             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR384.classPK   C:Uj0W    I             |; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecNR512.classPK   C:UEMyH    Q             J; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi$ecPlainDSARP160.classPK   C:U#0    A             ; org/bouncycastle/jcajce/provider/asymmetric/ec/SignatureSpi.classPK
 
    D:U            3             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost/PK   C:U"9  Y1  O             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost/BCECGOST3410PrivateKey.classPK   C:Um  ,  N             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost/BCECGOST3410PublicKey.classPK   C:U@K    J             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyAgreementSpi$1.classPK   C:Ui!@  O  N             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyAgreementSpi$ECVKO.classPK   C:Uw
C    H             I; org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyAgreementSpi.classPK   C:U%  A  F             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyFactorySpi.classPK   C:U._	  8  L             ); org/bouncycastle/jcajce/provider/asymmetric/ecgost/KeyPairGeneratorSpi.classPK   C:UxI^    E             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost/SignatureSpi.classPK
 
    D:U            5             ; org/bouncycastle/jcajce/provider/asymmetric/ecgost12/PK   C:UQ  3  V             &; org/bouncycastle/jcajce/provider/asymmetric/ecgost12/BCECGOST3410_2012PrivateKey.classPK   C:U](  .  U             j< org/bouncycastle/jcajce/provider/asymmetric/ecgost12/BCECGOST3410_2012PublicKey.classPK   C:U  I  T             < org/bouncycastle/jcajce/provider/asymmetric/ecgost12/ECGOST2012SignatureSpi256.classPK   C:U,P  B  T             < org/bouncycastle/jcajce/provider/asymmetric/ecgost12/ECGOST2012SignatureSpi512.classPK   C:Uz    L             $< org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi$1.classPK   C:UMT  k  S             &< org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi$ECVKO256.classPK   C:UN1T  k  S             (< org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi$ECVKO512.classPK   C:U/F  d  J             *< org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyAgreementSpi.classPK   C:U-u    H             1< org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyFactorySpi.classPK   C:UyUV_	  *  N             9< org/bouncycastle/jcajce/provider/asymmetric/ecgost12/KeyPairGeneratorSpi.classPK
 
    D:U            1             fC< org/bouncycastle/jcajce/provider/asymmetric/edec/PK   C:U  n  H             C< org/bouncycastle/jcajce/provider/asymmetric/edec/BCEdDSAPrivateKey.classPK   C:UXq  Q  G             FK< org/bouncycastle/jcajce/provider/asymmetric/edec/BCEdDSAPublicKey.classPK   C:U|R6    F             ,R< org/bouncycastle/jcajce/provider/asymmetric/edec/BCXDHPrivateKey.classPK   C:Usb    E             Y< org/bouncycastle/jcajce/provider/asymmetric/edec/BCXDHPublicKey.classPK   C:UC(  Q  ?             a< org/bouncycastle/jcajce/provider/asymmetric/edec/EdECUtil.classPK   C:UX"  s  B             d< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$1.classPK   C:U	ŵ    E             f< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIES.classPK   C:U'  Z  O             i< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithAESCBC.classPK   C:U9d    O             j< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithCipher.classPK   C:UX/8+  c  R             ?m< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithDESedeCBC.classPK   C:U  $  O             n< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA256.classPK   C:UXmj     X             }p< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA256andAESCBC.classPK   C:UQl  )  [             mr< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA256andDESedeCBC.classPK   C:U!*_1  $  O             bt< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA384.classPK   C:UQWk     X             u< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA384andAESCBC.classPK   C:UƄl  )  [             w< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA384andDESedeCBC.classPK   C:U<+  $  O             y< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA512.classPK   C:UBj     X             n{< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA512andAESCBC.classPK   C:U´l  )  [             ^}< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher$XIESwithSHA512andDESedeCBC.classPK   C:U<  \*  @             S< org/bouncycastle/jcajce/provider/asymmetric/edec/IESCipher.classPK   C:UU   /  M             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519.classPK   C:UI\  f  \             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256CKDF.classPK   C:UrQdT  Z  [             Ւ< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519UwithSHA256KDF.classPK   C:UMY`Z  d  [             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256CKDF.classPK   C:UC\\S  X  Z             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA256KDF.classPK   C:UB2[  d  [             p< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA384CKDF.classPK   C:UZ  d  [             T< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X25519withSHA512CKDF.classPK   C:U6Axp   +  K             7< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448.classPK   C:U]cZ  b  Z             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512CKDF.classPK   C:U^ml?R  V  Y             g< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448UwithSHA512KDF.classPK   C:UAW  `  Y             @< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA256CKDF.classPK   C:UbEW  `  Y             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA384CKDF.classPK   C:UOW  `  Y             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512CKDF.classPK   C:UKQ  T  X             ڦ< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$X448withSHA512KDF.classPK   C:U_"|   )  J             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi$XDH.classPK   C:U!>  M  F             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyAgreementSpi.classPK   C:U+   2  L             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed25519.classPK   C:U+ǽ   .  J             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$Ed448.classPK   C:U~   -  J             T< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$EdDSA.classPK   C:Up%   0  K             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X25519.classPK   C:U   ,  I             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$X448.classPK   C:UIxu   )  H             G< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi$XDH.classPK   C:U:1H    D             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyFactorySpi.classPK   C:U&8   $  R             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed25519.classPK   C:U0k"      P             c< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$Ed448.classPK   C:UgQ(      P             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$EdDSA.classPK   C:UG`   "  Q             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X25519.classPK   C:U+Ӫ     O             #< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$X448.classPK   C:UWK     N             c< org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi$XDH.classPK   C:U(  k  J             < org/bouncycastle/jcajce/provider/asymmetric/edec/KeyPairGeneratorSpi.classPK   C:UWjJ   +  K             < org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed25519.classPK   C:Uc   '  I             < org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$Ed448.classPK   C:U Ĥ   #  I             b< org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi$EdDSA.classPK   C:U	'  3  C             < org/bouncycastle/jcajce/provider/asymmetric/edec/SignatureSpi.classPK   C:U6'G    <             < org/bouncycastle/jcajce/provider/asymmetric/edec/Utils.classPK
 
    D:U            4             < org/bouncycastle/jcajce/provider/asymmetric/elgamal/PK   C:U    X             p< org/bouncycastle/jcajce/provider/asymmetric/elgamal/AlgorithmParameterGeneratorSpi.classPK   C:UqL  5
  P             < org/bouncycastle/jcajce/provider/asymmetric/elgamal/AlgorithmParametersSpi.classPK   C:U*(  q  M             < org/bouncycastle/jcajce/provider/asymmetric/elgamal/BCElGamalPrivateKey.classPK   C:U+jճ    L             < org/bouncycastle/jcajce/provider/asymmetric/elgamal/BCElGamalPublicKey.classPK   C:UGJ     M             < org/bouncycastle/jcajce/provider/asymmetric/elgamal/CipherSpi$NoPadding.classPK   C:U    T             O< org/bouncycastle/jcajce/provider/asymmetric/elgamal/CipherSpi$PKCS1v1_5Padding.classPK   C:U9   $  C              = org/bouncycastle/jcajce/provider/asymmetric/elgamal/CipherSpi.classPK   C:U|    E             ?= org/bouncycastle/jcajce/provider/asymmetric/elgamal/ElGamalUtil.classPK   C:Ur  i  G             = org/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyFactorySpi.classPK   C:U4V  6
  M             = org/bouncycastle/jcajce/provider/asymmetric/elgamal/KeyPairGeneratorSpi.classPK
 
    D:U            1             = org/bouncycastle/jcajce/provider/asymmetric/gost/PK   C:Ua  
  U             = org/bouncycastle/jcajce/provider/asymmetric/gost/AlgorithmParameterGeneratorSpi.classPK   C:ULIQ    M             #= org/bouncycastle/jcajce/provider/asymmetric/gost/AlgorithmParametersSpi.classPK   C:U4
  E  K             *= org/bouncycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.classPK   C:U    J             4= org/bouncycastle/jcajce/provider/asymmetric/gost/BCGOST3410PublicKey.classPK   C:Usؠ^    ?             == org/bouncycastle/jcajce/provider/asymmetric/gost/GOSTUtil.classPK   C:U$kV    D             A= org/bouncycastle/jcajce/provider/asymmetric/gost/KeyFactorySpi.classPK   C:Ud.]    J             F= org/bouncycastle/jcajce/provider/asymmetric/gost/KeyPairGeneratorSpi.classPK   C:Uv  /  C             L= org/bouncycastle/jcajce/provider/asymmetric/gost/SignatureSpi.classPK
 
    D:U            0             S= org/bouncycastle/jcajce/provider/asymmetric/ies/PK   C:U    L             S= org/bouncycastle/jcajce/provider/asymmetric/ies/AlgorithmParametersSpi.classPK
 
    D:U            0             ]= org/bouncycastle/jcajce/provider/asymmetric/rsa/PK   C:UQ"y    Q             U]= org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi$OAEP.classPK   C:Ui    P             Me= org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi$PSS.classPK   C:U     L             m= org/bouncycastle/jcajce/provider/asymmetric/rsa/AlgorithmParametersSpi.classPK   C:U    H             0p= org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateCrtKey.classPK   C:UW  i  E             :y= org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPrivateKey.classPK   C:UOy(    D             = org/bouncycastle/jcajce/provider/asymmetric/rsa/BCRSAPublicKey.classPK   C:Umٻ    P             = org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$ISO9796d1Padding.classPK   C:Ut     I             = org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$NoPadding.classPK   C:U}     K             = org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$OAEPPadding.classPK   C:Ug    P             d= org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$PKCS1v1_5Padding.classPK   C:U0  +  \             = org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$PKCS1v1_5Padding_PrivateOnly.classPK   C:Uqz0  )  [             = org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi$PKCS1v1_5Padding_PublicOnly.classPK   C:UtD  K,  ?             o= org/bouncycastle/jcajce/provider/asymmetric/rsa/CipherSpi.classPK   C:US Fx    L              = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$MD2.classPK   C:U(8x    L             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$MD4.classPK   C:UHUQ  9  L             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$MD5.classPK   C:U|  (  R             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$RIPEMD128.classPK   C:U
xT  (  R             $= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$RIPEMD160.classPK   C:ULܔ  (  R             9= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$RIPEMD256.classPK   C:U6  =  M             M= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA1.classPK   C:U܅C  H  O             `= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA224.classPK   C:U]:  H  O             {= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA256.classPK   C:U1  H  O             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA384.classPK   C:U
v/  P  Q             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_224.classPK   C:U  P  Q             ֻ= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_256.classPK   C:Uv  P  Q             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_384.classPK   C:Ua  P  Q             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA3_512.classPK   C:U&01s  H  O             <= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA512.classPK   C:U^  X  S             W= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA512_224.classPK   C:UЦ  X  S             }= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$SHA512_256.classPK   C:U]]?  k  P             = org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi$noneRSA.classPK   C:Ur  X  H             a= org/bouncycastle/jcajce/provider/asymmetric/rsa/DigestSignatureSpi.classPK   C:U"گ=  6  Z             y= org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$MD5WithRSAEncryption.classPK   C:UP,    `             >= org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$RIPEMD160WithRSAEncryption.classPK   C:Uz\>  9  [             = org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA1WithRSAEncryption.classPK   C:Ub(?  ?  ]             = org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA224WithRSAEncryption.classPK   C:U@@  ?  ]             = org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA256WithRSAEncryption.classPK   C:UE
@  ?  ]             T= org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA384WithRSAEncryption.classPK   C:U{x@  ?  ]             = org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA512WithRSAEncryption.classPK   C:UggF  K  a             = org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA512_224WithRSAEncryption.classPK   C:U9dG  K  a             = org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$SHA512_256WithRSAEncryption.classPK   C:U7*    `             = org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi$WhirlpoolWithRSAEncryption.classPK   C:U7u  
  E             M= org/bouncycastle/jcajce/provider/asymmetric/rsa/ISOSignatureSpi.classPK   C:U#a	    C             5= org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi.classPK   C:U_U#p    M             = org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyPairGeneratorSpi$PSS.classPK   C:Uxs    I             = org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyPairGeneratorSpi.classPK   C:U,x  +  S             |= org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$NullPssDigest.classPK   C:UD3    P             = org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$PSSwithRSA.classPK   C:UM3=  #  Q              > org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA1withRSA.classPK   C:UtŨ~m    \             E> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA1withRSAandSHAKE128.classPK   C:UMЁm    \             <> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA1withRSAandSHAKE256.classPK   C:ULR)    S             3> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA224withRSA.classPK   C:U,ly    ^             ?> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA224withRSAandSHAKE128.classPK   C:U?Cy    ^             D
> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA224withRSAandSHAKE256.classPK   C:UQ    S             I> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA256withRSA.classPK   C:Ujy
y    ^             W> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA256withRSAandSHAKE128.classPK   C:UyVPw    ^             \> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA256withRSAandSHAKE256.classPK   C:UZAP    S             _> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA384withRSA.classPK   C:Uٷ|y    ^             l> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA384withRSAandSHAKE128.classPK   C:Uʘ&vx    ^             q> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA384withRSAandSHAKE256.classPK   C:U}    U             u> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_224withRSA.classPK   C:U9t    `             > org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_224withRSAandSHAKE128.classPK   C:U&gs    `             > org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_224withRSAandSHAKE256.classPK   C:U ,X    U             > org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_256withRSA.classPK   C:UQ^z    `              > org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_256withRSAandSHAKE128.classPK   C:U q    `             "> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_256withRSAandSHAKE256.classPK   C:UVI    U             $> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_384withRSA.classPK   C:Ug[es    `             &> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_384withRSAandSHAKE128.classPK   C:Uas    `             (> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_384withRSAandSHAKE256.classPK   C:UC    U             *> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_512withRSA.classPK   C:UI+s    `             ,> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_512withRSAandSHAKE128.classPK   C:Uvs    `             .> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA3_512withRSAandSHAKE256.classPK   C:U
K    W             0> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_224withRSA.classPK   C:U.q    b             2> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_224withRSAandSHAKE128.classPK   C:U8k    b             4> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_224withRSAandSHAKE256.classPK   C:U'F    W             7> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_256withRSA.classPK   C:UL    b             )9> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_256withRSAandSHAKE128.classPK   C:UTE    b             ;;> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512_256withRSAandSHAKE256.classPK   C:UbϨ    S             K=> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512withRSA.classPK   C:Ux    ^             W?> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512withRSAandSHAKE128.classPK   C:Ux    ^             [A> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHA512withRSAandSHAKE256.classPK   C:U0)c  p  X             _C> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHAKE128WithRSAPSS.classPK   C:UYh2pc  p  X             HE> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$SHAKE256WithRSAPSS.classPK   C:Uj    M             1G> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi$nonePSS.classPK   C:Ulz	
  +  E             H> org/bouncycastle/jcajce/provider/asymmetric/rsa/PSSSignatureSpi.classPK   C:UI  \
  =             V> org/bouncycastle/jcajce/provider/asymmetric/rsa/RSAUtil.classPK   C:U9Y.    a             n[> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$RIPEMD128WithRSAEncryption.classPK   C:U톷.    a             +]> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$RIPEMD160WithRSAEncryption.classPK   C:UĻ?  ;  \             ^> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA1WithRSAEncryption.classPK   C:U-)e@  A  ^             `> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA224WithRSAEncryption.classPK   C:UYA  A  ^             }b> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA256WithRSAEncryption.classPK   C:UT$A  A  ^             Jd> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA384WithRSAEncryption.classPK   C:UhA  A  ^             f> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA512WithRSAEncryption.classPK   C:UN1H  M  b             g> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA512_224WithRSAEncryption.classPK   C:UVTH  M  b             i> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$SHA512_256WithRSAEncryption.classPK   C:U+    a             k> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi$WhirlpoolWithRSAEncryption.classPK   C:U`i  
  F             Nm> org/bouncycastle/jcajce/provider/asymmetric/rsa/X931SignatureSpi.classPK
 
    D:U            1             +r> org/bouncycastle/jcajce/provider/asymmetric/util/PK   C:UI?Em  !  G             zr> org/bouncycastle/jcajce/provider/asymmetric/util/BaseAgreementSpi.classPK   C:U`rg0v    Y             \> org/bouncycastle/jcajce/provider/asymmetric/util/BaseAlgorithmParameterGeneratorSpi.classPK   C:U"ך    F             Y> org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi$1.classPK   C:Ug@    Y             g> org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi$ErasableOutputStream.classPK   C:U60    D             .> org/bouncycastle/jcajce/provider/asymmetric/util/BaseCipherSpi.classPK   C:U%/    H             Џ> org/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi.classPK   C:Uutڔ  {  >             > org/bouncycastle/jcajce/provider/asymmetric/util/DESUtil.classPK   C:U2  Y  =             > org/bouncycastle/jcajce/provider/asymmetric/util/DHUtil.classPK   C:U    >             <> org/bouncycastle/jcajce/provider/asymmetric/util/DSABase.classPK   C:U=    /  A             > org/bouncycastle/jcajce/provider/asymmetric/util/DSAEncoder.classPK   C:Uҍ7  e  K             > org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util$CustomCurves.classPK   C:UY7  #  >             ^> org/bouncycastle/jcajce/provider/asymmetric/util/EC5Util.classPK   C:U/    ?             > org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil$1.classPK   C:U(  u&  =             v> org/bouncycastle/jcajce/provider/asymmetric/util/ECUtil.classPK   C:U%٪
    V             > org/bouncycastle/jcajce/provider/asymmetric/util/ExtendedInvalidKeySpecException.classPK   C:U_"    C             v> org/bouncycastle/jcajce/provider/asymmetric/util/GOST3410Util.classPK   C:U,u,    >             	> org/bouncycastle/jcajce/provider/asymmetric/util/IESUtil.classPK   C:U0r!    >             > org/bouncycastle/jcajce/provider/asymmetric/util/KeyUtil.classPK   C:U}.  
  T             .> org/bouncycastle/jcajce/provider/asymmetric/util/PKCS12BagAttributeCarrierImpl.classPK   C:U.5*   (  O             j> org/bouncycastle/jcajce/provider/asymmetric/util/PrimeCertaintyCalculator.classPK
 
    D:U            1             > org/bouncycastle/jcajce/provider/asymmetric/x509/PK   C:UctM  o  `             -> org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory$ExCertificateException.classPK   C:U!]
  $  I             > org/bouncycastle/jcajce/provider/asymmetric/x509/CertificateFactory.classPK   C:UWR  }  F             s> org/bouncycastle/jcajce/provider/asymmetric/x509/ExtCRLException.classPK   C:U?j  =  A             > org/bouncycastle/jcajce/provider/asymmetric/x509/KeyFactory.classPK   C:Ux
Y      @             > org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil$1.classPK   C:U+    I             > org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil$Boundaries.classPK   C:UI  	  >             w> org/bouncycastle/jcajce/provider/asymmetric/x509/PEMUtil.classPK   C:U-3    C             > org/bouncycastle/jcajce/provider/asymmetric/x509/PKIXCertPath.classPK   C:U%a   /  G             > org/bouncycastle/jcajce/provider/asymmetric/x509/SignatureCreator.classPK   C:U՚j
  '  I             > org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLEntryObject.classPK   C:U#     D             ? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl$1.classPK   C:UNo  &  D              
? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl$2.classPK   C:U2  {  D             ? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl$3.classPK   C:UDc  e5  B             ? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLImpl.classPK   C:UB!  
  F             o$? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLInternal.classPK   C:UkvP  Q  U             &? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLObject$X509CRLException.classPK   C:U<!    D             \(? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CRLObject.classPK   C:U  
  L             /? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl$1.classPK   C:UG  F  L             q2? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl$2.classPK   C:U'  1  L             4? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl$3.classPK   C:U  B  J             d7? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateImpl.classPK   C:U(@    N             yQ? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateInternal.classPK   C:U`
Ye0    m             S? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject$X509CertificateEncodingException.classPK   C:U`.d    L             zU? org/bouncycastle/jcajce/provider/asymmetric/x509/X509CertificateObject.classPK   C:U7F	  p  H             a? org/bouncycastle/jcajce/provider/asymmetric/x509/X509SignatureUtil.classPK
 
    D:U            (             rk? org/bouncycastle/jcajce/provider/config/PK   C:U*%[    B             k? org/bouncycastle/jcajce/provider/config/ConfigurableProvider.classPK   C:U%Pe    B             n? org/bouncycastle/jcajce/provider/config/PKCS12StoreParameter.classPK   C:U    C             Xp? org/bouncycastle/jcajce/provider/config/ProviderConfiguration.classPK   C:Uu K    M             q? org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission.classPK
 
    D:U            (             v? org/bouncycastle/jcajce/provider/digest/PK   C:UG  _  =             Bw? org/bouncycastle/jcajce/provider/digest/BCMessageDigest.classPK   C:UEF    @             8z? org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b160.classPK   C:Uhʍ    @             7|? org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b256.classPK   C:U3א    @             2~? org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b384.classPK   C:U    @             0? org/bouncycastle/jcajce/provider/digest/Blake2b$Blake2b512.classPK   C:U\U  R  >             *? org/bouncycastle/jcajce/provider/digest/Blake2b$Mappings.classPK   C:Uf&d  ^  5             V? org/bouncycastle/jcajce/provider/digest/Blake2b.classPK   C:U`4q=    @             ? org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s128.classPK   C:U!    @             ? org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s160.classPK   C:UNޤ    @             ? org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s224.classPK   C:UY.    @             ? org/bouncycastle/jcajce/provider/digest/Blake2s$Blake2s256.classPK   C:UhPW  R  >             ? org/bouncycastle/jcajce/provider/digest/Blake2s$Mappings.classPK   C:U`  ^  5             ԑ? org/bouncycastle/jcajce/provider/digest/Blake2s.classPK   C:UN    ?             :? org/bouncycastle/jcajce/provider/digest/Blake3$Blake3_256.classPK   C:UpxIC    =             .? org/bouncycastle/jcajce/provider/digest/Blake3$Mappings.classPK   C:Uh+'   \  4             ܗ? org/bouncycastle/jcajce/provider/digest/Blake3.classPK   C:U^   `  @             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$Digest256.classPK   C:UAq   `  @             N? org/bouncycastle/jcajce/provider/digest/DSTU7564$Digest384.classPK   C:U寽   `  @             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$Digest512.classPK   C:UL͐0    E             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$DigestDSTU7564.classPK   C:U3
    A             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$HashMac256.classPK   C:UO!    A             '? org/bouncycastle/jcajce/provider/digest/DSTU7564$HashMac384.classPK   C:U^8    A             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$HashMac512.classPK   C:U    F             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$KeyGenerator256.classPK   C:U>o    F             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$KeyGenerator384.classPK   C:UY~    F             -? org/bouncycastle/jcajce/provider/digest/DSTU7564$KeyGenerator512.classPK   C:U<    ?             ? org/bouncycastle/jcajce/provider/digest/DSTU7564$Mappings.classPK   C:Uws    6             i? org/bouncycastle/jcajce/provider/digest/DSTU7564.classPK   C:UH21    E             @? org/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider.classPK   C:Ux    =             ? org/bouncycastle/jcajce/provider/digest/GOST3411$Digest.classPK   C:Un
    E             ϱ? org/bouncycastle/jcajce/provider/digest/GOST3411$Digest2012_256.classPK   C:Uƴ    E             γ? org/bouncycastle/jcajce/provider/digest/GOST3411$Digest2012_512.classPK   C:Uʾ	    >             ͵? org/bouncycastle/jcajce/provider/digest/GOST3411$HashMac.classPK   C:UJRX&    F             P? org/bouncycastle/jcajce/provider/digest/GOST3411$HashMac2012_256.classPK   C:UU>'    F             ? org/bouncycastle/jcajce/provider/digest/GOST3411$HashMac2012_512.classPK   C:UB    C             ? org/bouncycastle/jcajce/provider/digest/GOST3411$KeyGenerator.classPK   C:U"    K             ? org/bouncycastle/jcajce/provider/digest/GOST3411$KeyGenerator2012_256.classPK   C:U!    K             ? org/bouncycastle/jcajce/provider/digest/GOST3411$KeyGenerator2012_512.classPK   C:Ud  
  ?             A? org/bouncycastle/jcajce/provider/digest/GOST3411$Mappings.classPK   C:U}	     K             ? org/bouncycastle/jcajce/provider/digest/GOST3411$PBEWithMacKeyFactory.classPK   C:U0'    6             H? org/bouncycastle/jcajce/provider/digest/GOST3411.classPK   C:U39y    >             6? org/bouncycastle/jcajce/provider/digest/Haraka$Digest256.classPK   C:UKo    >             $? org/bouncycastle/jcajce/provider/digest/Haraka$Digest512.classPK   C:Ul    =             ? org/bouncycastle/jcajce/provider/digest/Haraka$Mappings.classPK   C:Uz"     4             i? org/bouncycastle/jcajce/provider/digest/Haraka.classPK   C:U   V  >             ? org/bouncycastle/jcajce/provider/digest/Keccak$Digest224.classPK   C:U+   V  >             ? org/bouncycastle/jcajce/provider/digest/Keccak$Digest256.classPK   C:U{   V  >             ? org/bouncycastle/jcajce/provider/digest/Keccak$Digest288.classPK   C:U
?   V  >             G? org/bouncycastle/jcajce/provider/digest/Keccak$Digest384.classPK   C:Uln   V  >             z? org/bouncycastle/jcajce/provider/digest/Keccak$Digest512.classPK   C:U    A             ? org/bouncycastle/jcajce/provider/digest/Keccak$DigestKeccak.classPK   C:U]K9     ?             ? org/bouncycastle/jcajce/provider/digest/Keccak$HashMac224.classPK   C:U
s    ?             )? org/bouncycastle/jcajce/provider/digest/Keccak$HashMac256.classPK   C:UCD    ?             ? org/bouncycastle/jcajce/provider/digest/Keccak$HashMac288.classPK   C:Uw]/     ?             @? org/bouncycastle/jcajce/provider/digest/Keccak$HashMac384.classPK   C:U608	    ?             ? org/bouncycastle/jcajce/provider/digest/Keccak$HashMac512.classPK   C:UE6    D             X? org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator224.classPK   C:Uc6    D             ? org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator256.classPK   C:U?    D             v? org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator288.classPK   C:U    D             ? org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator384.classPK   C:UO}    D             ? org/bouncycastle/jcajce/provider/digest/Keccak$KeyGenerator512.classPK   C:U  P  =             #? org/bouncycastle/jcajce/provider/digest/Keccak$Mappings.classPK   C:Uѱ  t  4             g? org/bouncycastle/jcajce/provider/digest/Keccak.classPK   C:Uh}y    8             ? org/bouncycastle/jcajce/provider/digest/MD2$Digest.classPK   C:UgA    9             h? org/bouncycastle/jcajce/provider/digest/MD2$HashMac.classPK   C:U#    >             ? org/bouncycastle/jcajce/provider/digest/MD2$KeyGenerator.classPK   C:UDgt  V  :             _? org/bouncycastle/jcajce/provider/digest/MD2$Mappings.classPK   C:U&-Z     1             ;? org/bouncycastle/jcajce/provider/digest/MD2.classPK   C:Uy    8             ? org/bouncycastle/jcajce/provider/digest/MD4$Digest.classPK   C:UXqGb    9             x? org/bouncycastle/jcajce/provider/digest/MD4$HashMac.classPK   C:Ug1    >             ? org/bouncycastle/jcajce/provider/digest/MD4$KeyGenerator.classPK   C:UPGs  V  :             m? org/bouncycastle/jcajce/provider/digest/MD4$Mappings.classPK   C:U]     1             H? org/bouncycastle/jcajce/provider/digest/MD4.classPK   C:UMDx    8             ? org/bouncycastle/jcajce/provider/digest/MD5$Digest.classPK   C:U9g7m    9             ? org/bouncycastle/jcajce/provider/digest/MD5$HashMac.classPK   C:UQ@X    >              @ org/bouncycastle/jcajce/provider/digest/MD5$KeyGenerator.classPK   C:U\"  E  :             z@ org/bouncycastle/jcajce/provider/digest/MD5$Mappings.classPK   C:Urb     1             @ org/bouncycastle/jcajce/provider/digest/MD5.classPK   C:U l    >             @ org/bouncycastle/jcajce/provider/digest/RIPEMD128$Digest.classPK   C:U<a    ?             @ org/bouncycastle/jcajce/provider/digest/RIPEMD128$HashMac.classPK   C:UO    D             ]
@ org/bouncycastle/jcajce/provider/digest/RIPEMD128$KeyGenerator.classPK   C:UC'  ~  @             @ org/bouncycastle/jcajce/provider/digest/RIPEMD128$Mappings.classPK   C:U  	  7             @ org/bouncycastle/jcajce/provider/digest/RIPEMD128.classPK   C:U3    >             D@ org/bouncycastle/jcajce/provider/digest/RIPEMD160$Digest.classPK   C:UKp)    ?             0@ org/bouncycastle/jcajce/provider/digest/RIPEMD160$HashMac.classPK   C:U-`%    D             @ org/bouncycastle/jcajce/provider/digest/RIPEMD160$KeyGenerator.classPK   C:U}g  $  @             A@ org/bouncycastle/jcajce/provider/digest/RIPEMD160$Mappings.classPK   C:U{(  
  C             @ org/bouncycastle/jcajce/provider/digest/RIPEMD160$PBEWithHmac.classPK   C:US#    M             I@ org/bouncycastle/jcajce/provider/digest/RIPEMD160$PBEWithHmacKeyFactory.classPK   C:U!8    7             @ org/bouncycastle/jcajce/provider/digest/RIPEMD160.classPK   C:Uj[    >             @ org/bouncycastle/jcajce/provider/digest/RIPEMD256$Digest.classPK   C:U]    ?             p@ org/bouncycastle/jcajce/provider/digest/RIPEMD256$HashMac.classPK   C:Uw    D              @ org/bouncycastle/jcajce/provider/digest/RIPEMD256$KeyGenerator.classPK   C:UV  ~  @             "@ org/bouncycastle/jcajce/provider/digest/RIPEMD256$Mappings.classPK   C:U  	  7             p%@ org/bouncycastle/jcajce/provider/digest/RIPEMD256.classPK   C:Uҏp    >             &@ org/bouncycastle/jcajce/provider/digest/RIPEMD320$Digest.classPK   C:UǦ    ?             (@ org/bouncycastle/jcajce/provider/digest/RIPEMD320$HashMac.classPK   C:UX    D             J*@ org/bouncycastle/jcajce/provider/digest/RIPEMD320$KeyGenerator.classPK   C:U6β)    @             +@ org/bouncycastle/jcajce/provider/digest/RIPEMD320$Mappings.classPK   C:U$  	  7             \.@ org/bouncycastle/jcajce/provider/digest/RIPEMD320.classPK   C:U޺Nz    9             /@ org/bouncycastle/jcajce/provider/digest/SHA1$Digest.classPK   C:UI{    :             1@ org/bouncycastle/jcajce/provider/digest/SHA1$HashMac.classPK   C:Uޙy    ?             "3@ org/bouncycastle/jcajce/provider/digest/SHA1$KeyGenerator.classPK   C:U~fj    ;             4@ org/bouncycastle/jcajce/provider/digest/SHA1$Mappings.classPK   C:Uv    G             w8@ org/bouncycastle/jcajce/provider/digest/SHA1$PBEWithMacKeyFactory.classPK   C:U-    :             
:@ org/bouncycastle/jcajce/provider/digest/SHA1$SHA1Mac.classPK   C:UH0    2             ;@ org/bouncycastle/jcajce/provider/digest/SHA1.classPK   C:U~}    ;             =@ org/bouncycastle/jcajce/provider/digest/SHA224$Digest.classPK   C:UM    <             >@ org/bouncycastle/jcajce/provider/digest/SHA224$HashMac.classPK   C:U r    A             v@@ org/bouncycastle/jcajce/provider/digest/SHA224$KeyGenerator.classPK   C:U[    =             A@ org/bouncycastle/jcajce/provider/digest/SHA224$Mappings.classPK   C:U    4             GE@ org/bouncycastle/jcajce/provider/digest/SHA224.classPK   C:UcT~    ;             F@ org/bouncycastle/jcajce/provider/digest/SHA256$Digest.classPK   C:UZ8T    <             H@ org/bouncycastle/jcajce/provider/digest/SHA256$HashMac.classPK   C:U :d    A             J@ org/bouncycastle/jcajce/provider/digest/SHA256$KeyGenerator.classPK   C:U:.    =             K@ org/bouncycastle/jcajce/provider/digest/SHA256$Mappings.classPK   C:UL8    I             ,O@ org/bouncycastle/jcajce/provider/digest/SHA256$PBEWithMacKeyFactory.classPK   C:Uy#  b  4             P@ org/bouncycastle/jcajce/provider/digest/SHA256.classPK   C:US   L  <             ER@ org/bouncycastle/jcajce/provider/digest/SHA3$Digest224.classPK   C:Us2   L  <             uS@ org/bouncycastle/jcajce/provider/digest/SHA3$Digest256.classPK   C:U}@   L  <             T@ org/bouncycastle/jcajce/provider/digest/SHA3$Digest384.classPK   C:U#   L  <             U@ org/bouncycastle/jcajce/provider/digest/SHA3$Digest512.classPK   C:U8]    E             V@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestParallelHash.classPK   C:U^Y     L             Y@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestParallelHash128_256.classPK   C:U     L             dZ@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestParallelHash256_512.classPK   C:U큖    =             [@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestSHA3.classPK   C:U҃K    >             ]@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestSHAKE.classPK   C:U*\   d  E             _@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestShake128_256.classPK   C:Uo   d  E             `@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestShake256_512.classPK   C:U    B             "b@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestTupleHash.classPK   C:U*q   t  I             +d@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestTupleHash128_256.classPK   C:U   t  I             we@ org/bouncycastle/jcajce/provider/digest/SHA3$DigestTupleHash256_512.classPK   C:U݀   P  =             f@ org/bouncycastle/jcajce/provider/digest/SHA3$HashMac224.classPK   C:Ul   P  =             g@ org/bouncycastle/jcajce/provider/digest/SHA3$HashMac256.classPK   C:U_k   P  =             -i@ org/bouncycastle/jcajce/provider/digest/SHA3$HashMac384.classPK   C:U   P  =             bj@ org/bouncycastle/jcajce/provider/digest/SHA3$HashMac512.classPK   C:UFࠤ    >             k@ org/bouncycastle/jcajce/provider/digest/SHA3$HashMacSHA3.classPK   C:UM8    :             m@ org/bouncycastle/jcajce/provider/digest/SHA3$KMac128.classPK   C:U<2S?     :             n@ org/bouncycastle/jcajce/provider/digest/SHA3$KMac256.classPK   C:Uzp   d  B             o@ org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator224.classPK   C:U#Z9   d  B             ,q@ org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator256.classPK   C:Uj:w   d  B             kr@ org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator384.classPK   C:UXou   d  B             s@ org/bouncycastle/jcajce/provider/digest/SHA3$KeyGenerator512.classPK   C:U\z
i    C             t@ org/bouncycastle/jcajce/provider/digest/SHA3$KeyGeneratorSHA3.classPK   C:U?_.    ;             v@ org/bouncycastle/jcajce/provider/digest/SHA3$Mappings.classPK   C:U`At  "
  2             |@ org/bouncycastle/jcajce/provider/digest/SHA3.classPK   C:UTx}    ;             ~@ org/bouncycastle/jcajce/provider/digest/SHA384$Digest.classPK   C:Uh;\w    <             р@ org/bouncycastle/jcajce/provider/digest/SHA384$HashMac.classPK   C:UE    A             O@ org/bouncycastle/jcajce/provider/digest/SHA384$KeyGenerator.classPK   C:U=    =             ԃ@ org/bouncycastle/jcajce/provider/digest/SHA384$Mappings.classPK   C:Ud    >             3@ org/bouncycastle/jcajce/provider/digest/SHA384$OldSHA384.classPK   C:UjT  L  4             @ org/bouncycastle/jcajce/provider/digest/SHA384.classPK   C:Uq~    ;             /@ org/bouncycastle/jcajce/provider/digest/SHA512$Digest.classPK   C:Uq    <             @ org/bouncycastle/jcajce/provider/digest/SHA512$DigestT.classPK   C:U   N  ?             @ org/bouncycastle/jcajce/provider/digest/SHA512$DigestT224.classPK   C:UVx   N  ?             6@ org/bouncycastle/jcajce/provider/digest/SHA512$DigestT256.classPK   C:Uv    <             j@ org/bouncycastle/jcajce/provider/digest/SHA512$HashMac.classPK   C:U-x%    @             @ org/bouncycastle/jcajce/provider/digest/SHA512$HashMacT224.classPK   C:U#    @             {@ org/bouncycastle/jcajce/provider/digest/SHA512$HashMacT256.classPK   C:Ux    A             @ org/bouncycastle/jcajce/provider/digest/SHA512$KeyGenerator.classPK   C:U*    E             @ org/bouncycastle/jcajce/provider/digest/SHA512$KeyGeneratorT224.classPK   C:U    E             !@ org/bouncycastle/jcajce/provider/digest/SHA512$KeyGeneratorT256.classPK   C:U
U  
  =             @ org/bouncycastle/jcajce/provider/digest/SHA512$Mappings.classPK   C:U    >             @ org/bouncycastle/jcajce/provider/digest/SHA512$OldSHA512.classPK   C:U UC}    4             @ org/bouncycastle/jcajce/provider/digest/SHA512.classPK   C:U%_4x    8             j@ org/bouncycastle/jcajce/provider/digest/SM3$Digest.classPK   C:UG    9             H@ org/bouncycastle/jcajce/provider/digest/SM3$HashMac.classPK   C:Ui!    >             @ org/bouncycastle/jcajce/provider/digest/SM3$KeyGenerator.classPK   C:U(Z  p  :             =@ org/bouncycastle/jcajce/provider/digest/SM3$Mappings.classPK   C:U     1             c@ org/bouncycastle/jcajce/provider/digest/SM3.classPK   C:U    C             ª@ org/bouncycastle/jcajce/provider/digest/Skein$DigestSkein1024.classPK   C:U    B             @ org/bouncycastle/jcajce/provider/digest/Skein$DigestSkein256.classPK   C:Ui     B             @ org/bouncycastle/jcajce/provider/digest/Skein$DigestSkein512.classPK   C:U   g  D             @ org/bouncycastle/jcajce/provider/digest/Skein$Digest_1024_1024.classPK   C:U#6k   e  C             @ org/bouncycastle/jcajce/provider/digest/Skein$Digest_1024_384.classPK   C:UF   e  C             4@ org/bouncycastle/jcajce/provider/digest/Skein$Digest_1024_512.classPK   C:U:G   a  B             q@ org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_128.classPK   C:UY   a  B             @ org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_160.classPK   C:U$   a  B             @ org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_224.classPK   C:Uȧ   a  B             "@ org/bouncycastle/jcajce/provider/digest/Skein$Digest_256_256.classPK   C:U8=   a  B             Z@ org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_128.classPK   C:U#   a  B             @ org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_160.classPK   C:U^   a  B             л@ org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_224.classPK   C:Uv   a  B             @ org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_256.classPK   C:UY   a  B             E@ org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_384.classPK   C:Uim   a  B             @ org/bouncycastle/jcajce/provider/digest/Skein$Digest_512_512.classPK   C:U3Y4k&    N             @ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_1024_1024.classPK   C:U*    M             Z@ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_1024_384.classPK   C:U}S'    M             @ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_1024_512.classPK   C:Uӽd(    L             @ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_128.classPK   C:U˿&)    L             C@ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_160.classPK   C:UN	~(    L             @ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_224.classPK   C:Ut	z$    L             @ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_256_256.classPK   C:UCu(    L             &@ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_128.classPK   C:U鮤)    L             @ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_160.classPK   C:U=l(    L             k@ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_224.classPK   C:U+k3&    L             
@ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_256.classPK   C:UE(    L             @ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_384.classPK   C:Uw$    L             O@ org/bouncycastle/jcajce/provider/digest/Skein$HMacKeyGenerator_512_512.classPK   C:U	3D|%    E             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_1024_1024.classPK   C:UP|*    D             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_1024_384.classPK   C:UDh(    D             !@ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_1024_512.classPK   C:U`^)(    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_128.classPK   C:UԂ)    C             T@ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_160.classPK   C:UbC)    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_224.classPK   C:UO#    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_256_256.classPK   C:U6m(    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_128.classPK   C:UR)    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_160.classPK   C:U4pf)    C             O@ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_224.classPK   C:U|VK&    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_256.classPK   C:U%1%)    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_384.classPK   C:Ux $    C             @ org/bouncycastle/jcajce/provider/digest/Skein$HashMac_512_512.classPK   C:UF    <             @ org/bouncycastle/jcajce/provider/digest/Skein$Mappings.classPK   C:Uy'    R             _@ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_1024_1024.classPK   C:U}&*    Q             @ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_1024_384.classPK   C:U^τ'    Q             @ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_1024_512.classPK   C:U*     P             U@ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_128.classPK   C:U>Z*     P             @ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_160.classPK   C:U})     P             @ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_224.classPK   C:U!M&     P             L@ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_256_256.classPK   C:U`V)     P             @ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_128.classPK   C:UMb*     P             @ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_160.classPK   C:UxU)     P             ?@ org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_224.classPK   C:Uz'     P              A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_256.classPK   C:Ud$)     P             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_384.classPK   C:U%     P             2A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMacKeyGenerator_512_512.classPK   C:Ui    F             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_1024_1024.classPK   C:UCN    E             JA org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_1024_384.classPK   C:U*%!    E             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_1024_512.classPK   C:UKw    D             ;
A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_128.classPK   C:U.    D             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_160.classPK   C:Uq    D             '
A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_224.classPK   C:UT՟-     D             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_256_256.classPK   C:UN    D             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_128.classPK   C:U0    D             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_160.classPK   C:Ux)    D             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_224.classPK   C:U
    D             rA org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_256.classPK   C:U$V    D             A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_384.classPK   C:URMn     D             _A org/bouncycastle/jcajce/provider/digest/Skein$SkeinMac_512_512.classPK   C:U]w    3             A org/bouncycastle/jcajce/provider/digest/Skein.classPK   C:U2n,z    :             A org/bouncycastle/jcajce/provider/digest/Tiger$Digest.classPK   C:UmF    ;             A org/bouncycastle/jcajce/provider/digest/Tiger$HashMac.classPK   C:U4    @             s!A org/bouncycastle/jcajce/provider/digest/Tiger$KeyGenerator.classPK   C:U(  )  <             "A org/bouncycastle/jcajce/provider/digest/Tiger$Mappings.classPK   C:Udfp     B             &A org/bouncycastle/jcajce/provider/digest/Tiger$PBEWithHashMac.classPK   C:U[~    H             'A org/bouncycastle/jcajce/provider/digest/Tiger$PBEWithMacKeyFactory.classPK   C:U?I[    =             ')A org/bouncycastle/jcajce/provider/digest/Tiger$TigerHmac.classPK   C:UyߡB    3             *A org/bouncycastle/jcajce/provider/digest/Tiger.classPK   C:UJX~    >             F,A org/bouncycastle/jcajce/provider/digest/Whirlpool$Digest.classPK   C:UXo    ?             0.A org/bouncycastle/jcajce/provider/digest/Whirlpool$HashMac.classPK   C:UOଡ    D             /A org/bouncycastle/jcajce/provider/digest/Whirlpool$KeyGenerator.classPK   C:U(s    @             @1A org/bouncycastle/jcajce/provider/digest/Whirlpool$Mappings.classPK   C:U4S  	  7             !4A org/bouncycastle/jcajce/provider/digest/Whirlpool.classPK
 
    D:U            &             5A org/bouncycastle/jcajce/provider/drbg/PK   C:U)U  5  2             5A org/bouncycastle/jcajce/provider/drbg/DRBG$1.classPK   C:UaG'    2             7A org/bouncycastle/jcajce/provider/drbg/DRBG$2.classPK   C:UP_U    2             J:A org/bouncycastle/jcajce/provider/drbg/DRBG$3.classPK   C:Uou  T  2             <A org/bouncycastle/jcajce/provider/drbg/DRBG$4.classPK   C:U    A             @A org/bouncycastle/jcajce/provider/drbg/DRBG$CoreSecureRandom.classPK   C:U    8             AA org/bouncycastle/jcajce/provider/drbg/DRBG$Default.classPK   C:UO\q    >             uCA org/bouncycastle/jcajce/provider/drbg/DRBG$EntropyDaemon.classPK   C:Ub    F             RFA org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource$1.classPK   C:UJ    l             uHA org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource$SignallingEntropySource$EntropyGatherer.classPK   C:Uf0T    \             YKA org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource$SignallingEntropySource.classPK   C:UK
'R  R  D             7PA org/bouncycastle/jcajce/provider/drbg/DRBG$HybridEntropySource.classPK   C:U.   0  I             UA org/bouncycastle/jcajce/provider/drbg/DRBG$IncrementalEntropySource.classPK   C:U46G    S             VA org/bouncycastle/jcajce/provider/drbg/DRBG$IncrementalEntropySourceProvider$1.classPK   C:U64!  -  Q             FZA org/bouncycastle/jcajce/provider/drbg/DRBG$IncrementalEntropySourceProvider.classPK   C:UBZ  Y  9             \A org/bouncycastle/jcajce/provider/drbg/DRBG$Mappings.classPK   C:UJ    ;             ^A org/bouncycastle/jcajce/provider/drbg/DRBG$NonceAndIV.classPK   C:UxwI    Q             `A org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider$1.classPK   C:U6%    Q             ncA org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider$2.classPK   C:U< >    Q             fA org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider$3.classPK   C:Uip:h  w  O             iA org/bouncycastle/jcajce/provider/drbg/DRBG$URLSeededEntropySourceProvider.classPK   C:U{C	    0             lA org/bouncycastle/jcajce/provider/drbg/DRBG.classPK
 
    D:U            *             wA org/bouncycastle/jcajce/provider/keystore/PK   C:Uu"    ;             YwA org/bouncycastle/jcajce/provider/keystore/BC$Mappings.classPK   C:U{AO   u  2             yA org/bouncycastle/jcajce/provider/keystore/BC.classPK   C:U
    >             B{A org/bouncycastle/jcajce/provider/keystore/BCFKS$Mappings.classPK   C:U}  ~  5             }A org/bouncycastle/jcajce/provider/keystore/BCFKS.classPK   C:Umx    ?             A org/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings.classPK   C:UҾ]    6             TA org/bouncycastle/jcajce/provider/keystore/PKCS12.classPK
 
    D:U            -             A org/bouncycastle/jcajce/provider/keystore/bc/PK   C:U;h,     T             A org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$BCKeyStoreException.classPK   C:U\N4^  
  R             A org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$BouncyCastleStore.classPK   C:U     D             A org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std.classPK   C:UA    K             A org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry.classPK   C:UMQq  !  I             ĒA org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Version1.classPK   C:UBRL  1  @             A org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi.classPK
 
    D:U            0             fA org/bouncycastle/jcajce/provider/keystore/bcfks/PK   C:U"5  >  H             A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$1.classPK   C:U  	  J             ܫA org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$Def.classPK   C:U-&  <  P             A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$DefCompat.classPK   C:U>K  S
  P             A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$DefShared.classPK   C:Un+  H  V             ٵA org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$DefSharedCompat.classPK   C:U2}.    [             A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$ExtKeyStoreException.classPK   C:UP    X             ?A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$SharedKeyStoreSpi.classPK   C:U=!  	  J             ^A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$Std.classPK   C:UY8  r  P             vA org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$StdCompat.classPK   C:U)  N
  P             ,A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$StdShared.classPK   C:U/(  C  V             eA org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi$StdSharedCompat.classPK   C:U;/    F             A org/bouncycastle/jcajce/provider/keystore/bcfks/BcFKSKeyStoreSpi.classPK
 
    D:U            1             A org/bouncycastle/jcajce/provider/keystore/pkcs12/PK   C:UJ*      J             A org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$1.classPK   C:UuD  ^  Y             A org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$BCPKCS12KeyStore.classPK   C:U]  @  ]             A org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$BCPKCS12KeyStore3DES.classPK   C:UMG&    O              B org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$CertId.classPK   C:U  e  Z             B org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefPKCS12KeyStore.classPK   C:UBժ  G  ^             B org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefPKCS12KeyStore3DES.classPK   C:U3We  (  a             B org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$DefaultSecretKeyProvider.classPK   C:UY    ]             
B org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi$IgnoresCaseHashtable.classPK   C:UOEp/  ~  H             4B org/bouncycastle/jcajce/provider/keystore/pkcs12/PKCS12KeyStoreSpi.classPK
 
    D:U            /             u>B org/bouncycastle/jcajce/provider/keystore/util/PK   C:US,f  
  H             >B org/bouncycastle/jcajce/provider/keystore/util/AdaptingKeyStoreSpi.classPK   C:Ub,    Y             DB org/bouncycastle/jcajce/provider/keystore/util/JKSKeyStoreSpi$BCJKSTrustedCertEntry.classPK   C:Ux-    V             QFB org/bouncycastle/jcajce/provider/keystore/util/JKSKeyStoreSpi$ErasableByteStream.classPK   C:Uny
  '  C             HB org/bouncycastle/jcajce/provider/keystore/util/JKSKeyStoreSpi.classPK   C:U8v  `  B             UB org/bouncycastle/jcajce/provider/keystore/util/ParameterUtil.classPK
 
    D:U            +             YB org/bouncycastle/jcajce/provider/symmetric/PK   C:U
-      6             -ZB org/bouncycastle/jcajce/provider/symmetric/AES$1.classPK   C:UQa    E             *[B org/bouncycastle/jcajce/provider/symmetric/AES$AESCCMMAC$CCMMac.classPK   C:U  2  >             5_B org/bouncycastle/jcajce/provider/symmetric/AES$AESCCMMAC.classPK   C:U#{}    <             `B org/bouncycastle/jcajce/provider/symmetric/AES$AESCMAC.classPK   C:Uئq7  j  <             .bB org/bouncycastle/jcajce/provider/symmetric/AES$AESGMAC.classPK   C:U    @             cB org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamGen.classPK   C:U+(  M  C             gB org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamGenCCM.classPK   C:UJ  M  C             MjB org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamGenGCM.classPK   C:UUV     >             mB org/bouncycastle/jcajce/provider/symmetric/AES$AlgParams.classPK   C:UW  
  A             nB org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamsCCM.classPK   C:U  
  A             tB org/bouncycastle/jcajce/provider/symmetric/AES$AlgParamsGCM.classPK   C:UF2  
  8             +yB org/bouncycastle/jcajce/provider/symmetric/AES$CBC.classPK   C:Ux!    8             zB org/bouncycastle/jcajce/provider/symmetric/AES$CCM.classPK   C:UI:    8             /|B org/bouncycastle/jcajce/provider/symmetric/AES$CFB.classPK   C:U;24  -  :             }B org/bouncycastle/jcajce/provider/symmetric/AES$ECB$1.classPK   C:U[     8             kB org/bouncycastle/jcajce/provider/symmetric/AES$ECB.classPK   C:Uk?    8             B org/bouncycastle/jcajce/provider/symmetric/AES$GCM.classPK   C:U%
4     ?             <B org/bouncycastle/jcajce/provider/symmetric/AES$KeyFactory.classPK   C:U}$    ;             B org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen.classPK   C:U]a#   J  >             0B org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen128.classPK   C:UOW   J  >             eB org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen192.classPK   C:U~   J  >             B org/bouncycastle/jcajce/provider/symmetric/AES$KeyGen256.classPK   C:US5  3  =             ψB org/bouncycastle/jcajce/provider/symmetric/AES$Mappings.classPK   C:UOnt:    8             B org/bouncycastle/jcajce/provider/symmetric/AES$OFB.classPK   C:UHu    B             [B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithAESCBC.classPK   C:Uծ_(    U             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithMD5And128BitAESCBCOpenSSL.classPK   C:Ub*    U             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithMD5And192BitAESCBCOpenSSL.classPK   C:U,<u)    U             8B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithMD5And256BitAESCBCOpenSSL.classPK   C:U
0  3  I             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA1AESCBC128.classPK   C:UsF.  3  I             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA1AESCBC192.classPK   C:U\A-  3  I             0B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA1AESCBC256.classPK   C:Uc?3  7  K             ԢB org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256AESCBC128.classPK   C:U#Ӫ1  7  K             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256AESCBC192.classPK   C:U;h-  7  K             *B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256AESCBC256.classPK   C:UE&    P             ЧB org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256And128BitAESBC.classPK   C:U{&    P             tB org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256And192BitAESBC.classPK   C:U&'?$    P             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHA256And256BitAESBC.classPK   C:Usd'    M             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHAAnd128BitAESBC.classPK   C:UJl!'    M             \B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHAAnd192BitAESBC.classPK   C:Ukjf'    M             B org/bouncycastle/jcajce/provider/symmetric/AES$PBEWithSHAAnd256BitAESBC.classPK   C:UAS3    =             B org/bouncycastle/jcajce/provider/symmetric/AES$Poly1305.classPK   C:U t
    C             $B org/bouncycastle/jcajce/provider/symmetric/AES$Poly1305KeyGen.classPK   C:U(B!    @             B org/bouncycastle/jcajce/provider/symmetric/AES$RFC3211Wrap.classPK   C:U1    @             AB org/bouncycastle/jcajce/provider/symmetric/AES$RFC5649Wrap.classPK   C:U_     9             ͷB org/bouncycastle/jcajce/provider/symmetric/AES$Wrap.classPK   C:UlEPL     <             (B org/bouncycastle/jcajce/provider/symmetric/AES$WrapPad.classPK   C:US  U  4             B org/bouncycastle/jcajce/provider/symmetric/AES.classPK   C:Uy#     :             B org/bouncycastle/jcajce/provider/symmetric/ARC4$Base.classPK   C:U}    <             B org/bouncycastle/jcajce/provider/symmetric/ARC4$KeyGen.classPK   C:U?~  	  >             hB org/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings.classPK   C:U2l,"    I             B org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd128Bit.classPK   C:U{NE  `  S             B org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd128BitKeyFactory.classPK   C:Uf#
    H             B org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd40Bit.classPK   C:UтH  ]  R             eB org/bouncycastle/jcajce/provider/symmetric/ARC4$PBEWithSHAAnd40BitKeyFactory.classPK   C:UjG  `  5             -B org/bouncycastle/jcajce/provider/symmetric/ARC4.classPK   C:U.    A             B org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParamGen.classPK   C:UMӴ     ?             B org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParams.classPK   C:U4<  
  B             B org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParamsCCM.classPK   C:UɲǺ  
  B             B org/bouncycastle/jcajce/provider/symmetric/ARIA$AlgParamsGCM.classPK   C:UzO  
  9             B org/bouncycastle/jcajce/provider/symmetric/ARIA$CBC.classPK   C:UF"    9             =B org/bouncycastle/jcajce/provider/symmetric/ARIA$CCM.classPK   C:UC];    9             B org/bouncycastle/jcajce/provider/symmetric/ARIA$CFB.classPK   C:U{c6  1  ;             hB org/bouncycastle/jcajce/provider/symmetric/ARIA$ECB$1.classPK   C:UƢ     9             B org/bouncycastle/jcajce/provider/symmetric/ARIA$ECB.classPK   C:UC    9             [B org/bouncycastle/jcajce/provider/symmetric/ARIA$GCM.classPK   C:U/.H7  g  :             B org/bouncycastle/jcajce/provider/symmetric/ARIA$GMAC.classPK   C:U6_I@     @             }B org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyFactory.classPK   C:Up$    <             B org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen.classPK   C:U   M  ?             uB org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen128.classPK   C:Uu   M  ?             B org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen192.classPK   C:U   M  ?             B org/bouncycastle/jcajce/provider/symmetric/ARIA$KeyGen256.classPK   C:UaS    >             B org/bouncycastle/jcajce/provider/symmetric/ARIA$Mappings.classPK   C:UOޕ;    9             B org/bouncycastle/jcajce/provider/symmetric/ARIA$OFB.classPK   C:Ux    >             3B org/bouncycastle/jcajce/provider/symmetric/ARIA$Poly1305.classPK   C:U{p    D             B org/bouncycastle/jcajce/provider/symmetric/ARIA$Poly1305KeyGen.classPK   C:U
\!    A             HB org/bouncycastle/jcajce/provider/symmetric/ARIA$RFC3211Wrap.classPK   C:U Ŝ`     :             B org/bouncycastle/jcajce/provider/symmetric/ARIA$Wrap.classPK   C:Uh     =             4B org/bouncycastle/jcajce/provider/symmetric/ARIA$WrapPad.classPK   C:U6-    5             B org/bouncycastle/jcajce/provider/symmetric/ARIA.classPK   C:UlD    C             C org/bouncycastle/jcajce/provider/symmetric/Blowfish$AlgParams.classPK   C:Ui׌    =             C org/bouncycastle/jcajce/provider/symmetric/Blowfish$CBC.classPK   C:UqS    >             C org/bouncycastle/jcajce/provider/symmetric/Blowfish$CMAC.classPK   C:UQ     =             C org/bouncycastle/jcajce/provider/symmetric/Blowfish$ECB.classPK   C:U     @             C org/bouncycastle/jcajce/provider/symmetric/Blowfish$KeyGen.classPK   C:U*    B             lC org/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings.classPK   C:UtQ"    9             C org/bouncycastle/jcajce/provider/symmetric/Blowfish.classPK   C:U1=    B             
C org/bouncycastle/jcajce/provider/symmetric/CAST5$AlgParamGen.classPK   C:Ub8J    @             dC org/bouncycastle/jcajce/provider/symmetric/CAST5$AlgParams.classPK   C:U"    :             C org/bouncycastle/jcajce/provider/symmetric/CAST5$CBC.classPK   C:UKc     :             C org/bouncycastle/jcajce/provider/symmetric/CAST5$ECB.classPK   C:U"ǎF
    =             C org/bouncycastle/jcajce/provider/symmetric/CAST5$KeyGen.classPK   C:U]  ,  ?             pC org/bouncycastle/jcajce/provider/symmetric/CAST5$Mappings.classPK   C:U3#    6             C org/bouncycastle/jcajce/provider/symmetric/CAST5.classPK   C:UC>    @             $C org/bouncycastle/jcajce/provider/symmetric/CAST6$AlgParams.classPK   C:U͛@8  5  <             C org/bouncycastle/jcajce/provider/symmetric/CAST6$ECB$1.classPK   C:UDIT     :             5!C org/bouncycastle/jcajce/provider/symmetric/CAST6$ECB.classPK   C:Uy9  j  ;             "C org/bouncycastle/jcajce/provider/symmetric/CAST6$GMAC.classPK   C:UZŏ    =             -$C org/bouncycastle/jcajce/provider/symmetric/CAST6$KeyGen.classPK   C:U
Ic  d  ?             %C org/bouncycastle/jcajce/provider/symmetric/CAST6$Mappings.classPK   C:U--    ?             s(C org/bouncycastle/jcajce/provider/symmetric/CAST6$Poly1305.classPK   C:U)    E             )C org/bouncycastle/jcajce/provider/symmetric/CAST6$Poly1305KeyGen.classPK   C:UY9    6             +C org/bouncycastle/jcajce/provider/symmetric/CAST6.classPK   C:Uv    E             *-C org/bouncycastle/jcajce/provider/symmetric/Camellia$AlgParamGen.classPK   C:U    C             u0C org/bouncycastle/jcajce/provider/symmetric/Camellia$AlgParams.classPK   C:UD̔    =             1C org/bouncycastle/jcajce/provider/symmetric/Camellia$CBC.classPK   C:Uŵ8  A  ?             m3C org/bouncycastle/jcajce/provider/symmetric/Camellia$ECB$1.classPK   C:U[Q/     =             5C org/bouncycastle/jcajce/provider/symmetric/Camellia$ECB.classPK   C:U;tYk9  s  >             k6C org/bouncycastle/jcajce/provider/symmetric/Camellia$GMAC.classPK   C:UI $     D             8C org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyFactory.classPK   C:Utp%    @             ~9C org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen.classPK   C:U],   Y  C             ;C org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen128.classPK   C:U   Y  C             P<C org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen192.classPK   C:U]   Y  C             =C org/bouncycastle/jcajce/provider/symmetric/Camellia$KeyGen256.classPK   C:UE  
  B             >C org/bouncycastle/jcajce/provider/symmetric/Camellia$Mappings.classPK   C:U*    B             NCC org/bouncycastle/jcajce/provider/symmetric/Camellia$Poly1305.classPK   C:Ub"    H             DC org/bouncycastle/jcajce/provider/symmetric/Camellia$Poly1305KeyGen.classPK   C:UR%  (  E             oFC org/bouncycastle/jcajce/provider/symmetric/Camellia$RFC3211Wrap.classPK   C:U,r     >             HC org/bouncycastle/jcajce/provider/symmetric/Camellia$Wrap.classPK   C:U7    9             jIC org/bouncycastle/jcajce/provider/symmetric/Camellia.classPK   C:UVL]    A             KC org/bouncycastle/jcajce/provider/symmetric/ChaCha$AlgParams.classPK   C:UVM    G             MC org/bouncycastle/jcajce/provider/symmetric/ChaCha$AlgParamsCC1305.classPK   C:U%     <             NC org/bouncycastle/jcajce/provider/symmetric/ChaCha$Base.classPK   C:U\o     @             OC org/bouncycastle/jcajce/provider/symmetric/ChaCha$Base7539.classPK   C:UNT    E             SQC org/bouncycastle/jcajce/provider/symmetric/ChaCha$BaseCC20P1305.classPK   C:UB+    >             RC org/bouncycastle/jcajce/provider/symmetric/ChaCha$KeyGen.classPK   C:U^    B             CTC org/bouncycastle/jcajce/provider/symmetric/ChaCha$KeyGen7539.classPK   C:UVuV  '  @             UC org/bouncycastle/jcajce/provider/symmetric/ChaCha$Mappings.classPK   C:UO<L  e  7             YC org/bouncycastle/jcajce/provider/symmetric/ChaCha.classPK   C:U    @             8[C org/bouncycastle/jcajce/provider/symmetric/DES$AlgParamGen.classPK   C:UF  	  8             y^C org/bouncycastle/jcajce/provider/symmetric/DES$CBC.classPK   C:U    ;             _C org/bouncycastle/jcajce/provider/symmetric/DES$CBCMAC.classPK   C:U    9             vaC org/bouncycastle/jcajce/provider/symmetric/DES$CMAC.classPK   C:Uy    :             bC org/bouncycastle/jcajce/provider/symmetric/DES$DES64.classPK   C:UYM    D             xdC org/bouncycastle/jcajce/provider/symmetric/DES$DES64with7816d4.classPK   C:U     @             7fC org/bouncycastle/jcajce/provider/symmetric/DES$DES9797Alg3.classPK   C:U/R    J             gC org/bouncycastle/jcajce/provider/symmetric/DES$DES9797Alg3with7816d4.classPK   C:UZ     <             iC org/bouncycastle/jcajce/provider/symmetric/DES$DESCFB8.classPK   C:UIQ\  :
  E             kC org/bouncycastle/jcajce/provider/symmetric/DES$DESPBEKeyFactory.classPK   C:U;      8             oC org/bouncycastle/jcajce/provider/symmetric/DES$ECB.classPK   C:U]    ?             8qC org/bouncycastle/jcajce/provider/symmetric/DES$KeyFactory.classPK   C:Ut&  *  A             tC org/bouncycastle/jcajce/provider/symmetric/DES$KeyGenerator.classPK   C:UU    =             wC org/bouncycastle/jcajce/provider/symmetric/DES$Mappings.classPK   C:U%    ?             P~C org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD2.classPK   C:UNL  [  I             C org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD2KeyFactory.classPK   C:UO%    ?             C org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD5.classPK   C:U*L  [  I             7C org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithMD5KeyFactory.classPK   C:U2'     @             C org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithSHA1.classPK   C:UlZaM  _  J             C org/bouncycastle/jcajce/provider/symmetric/DES$PBEWithSHA1KeyFactory.classPK   C:U* &!    <             TC org/bouncycastle/jcajce/provider/symmetric/DES$RFC3211.classPK   C:UQK~,0    4             ߉C org/bouncycastle/jcajce/provider/symmetric/DES.classPK   C:Un    C             qC org/bouncycastle/jcajce/provider/symmetric/DESede$AlgParamGen.classPK   C:Ug    ;             C org/bouncycastle/jcajce/provider/symmetric/DESede$CBC.classPK   C:Uej    >             6C org/bouncycastle/jcajce/provider/symmetric/DESede$CBCMAC.classPK   C:U_    <             C org/bouncycastle/jcajce/provider/symmetric/DESede$CMAC.classPK   C:U6!    @             @C org/bouncycastle/jcajce/provider/symmetric/DESede$DESede64.classPK   C:UP    J             ϕC org/bouncycastle/jcajce/provider/symmetric/DESede$DESede64with7816d4.classPK   C:U    B             C org/bouncycastle/jcajce/provider/symmetric/DESede$DESedeCFB8.classPK   C:U     ;             $C org/bouncycastle/jcajce/provider/symmetric/DESede$ECB.classPK   C:UjI  !  B             C org/bouncycastle/jcajce/provider/symmetric/DESede$KeyFactory.classPK   C:Uq)    D             9C org/bouncycastle/jcajce/provider/symmetric/DESede$KeyGenerator.classPK   C:U˝    E             C org/bouncycastle/jcajce/provider/symmetric/DESede$KeyGenerator3.classPK   C:UfmD    @             C org/bouncycastle/jcajce/provider/symmetric/DESede$Mappings.classPK   C:U.2  <  L             C org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES2Key.classPK   C:UW h    S             mC org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES2KeyFactory.classPK   C:Uw0  <  L             VC org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES3Key.classPK   C:Ug    S              C org/bouncycastle/jcajce/provider/symmetric/DESede$PBEWithSHAAndDES3KeyFactory.classPK   C:UrZ    ?             C org/bouncycastle/jcajce/provider/symmetric/DESede$RFC3211.classPK   C:UI#W     <             tC org/bouncycastle/jcajce/provider/symmetric/DESede$Wrap.classPK   C:Uyp
    7             ӴC org/bouncycastle/jcajce/provider/symmetric/DESede.classPK   C:UΑ    E             BC org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen.classPK   C:UqR   m  H             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen128.classPK   C:U\   m  H             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen256.classPK   C:UB_   m  H             GC org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParamGen512.classPK   C:U4xhv    C             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$AlgParams.classPK   C:U<	&  )  @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CBC128.classPK   C:UOS$  )  @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CBC256.classPK   C:U(%  )  @             .C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CBC512.classPK   C:Uw1  0  @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CCM128.classPK   C:U<h0  0  @             `C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CCM256.classPK   C:Up0  0  @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CCM512.classPK   C:U;J    @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CFB128.classPK   C:UcdH    @             TC org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CFB256.classPK   C:UJ)H    @             
C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CFB512.classPK   C:Uyr2C  o  @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CTR128.classPK   C:UDB  o  @             qC org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CTR256.classPK   C:ULB  o  @             !C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$CTR512.classPK   C:UFI  P  ?             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB$1.classPK   C:U|n     =             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB.classPK   C:UF7ε    @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB128.classPK   C:Uě    @             YC org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB256.classPK   C:U    @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB512.classPK   C:U    A             ?C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB_128.classPK   C:U/    A             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB_256.classPK   C:U "    A             +C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$ECB_512.classPK   C:U*1  0  @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GCM128.classPK   C:UB5m/  0  @             @C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GCM256.classPK   C:U$0  0  @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GCM512.classPK   C:U,J    >             {C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC.classPK   C:U:NM    A             1C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC128.classPK   C:U2K    A             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC256.classPK   C:U`JL    A             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$GMAC512.classPK   C:U	oE)    @             bC org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen.classPK   C:Ux   Y  C             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen128.classPK   C:U+vX   Y  C             8C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen256.classPK   C:Uה\   Y  C             wC org/bouncycastle/jcajce/provider/symmetric/DSTU7624$KeyGen512.classPK   C:UH	rZ    B             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Mappings.classPK   C:UAM    @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$OFB128.classPK   C:U* K    @             ;C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$OFB256.classPK   C:UrL    @             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$OFB512.classPK   C:UX)    >             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap.classPK   C:UWD    A             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap128.classPK   C:U-m    A             C org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap256.classPK   C:UD    A             D org/bouncycastle/jcajce/provider/symmetric/DSTU7624$Wrap512.classPK   C:U)    9             D org/bouncycastle/jcajce/provider/symmetric/DSTU7624.classPK   C:Uyj:    F             D org/bouncycastle/jcajce/provider/symmetric/GOST28147$AlgParamGen.classPK   C:Ut!  
  D             	D org/bouncycastle/jcajce/provider/symmetric/GOST28147$AlgParams.classPK   C:Ua  @
  H             0D org/bouncycastle/jcajce/provider/symmetric/GOST28147$BaseAlgParams.classPK   C:UKn    >             D org/bouncycastle/jcajce/provider/symmetric/GOST28147$CBC.classPK   C:Upu    H             LD org/bouncycastle/jcajce/provider/symmetric/GOST28147$CryptoProWrap.classPK   C:U"P     >             D org/bouncycastle/jcajce/provider/symmetric/GOST28147$ECB.classPK   C:U7";  c  ?             *D org/bouncycastle/jcajce/provider/symmetric/GOST28147$GCFB.classPK   C:UԼ    C             D org/bouncycastle/jcajce/provider/symmetric/GOST28147$GostWrap.classPK   C:UTG+    A             DD org/bouncycastle/jcajce/provider/symmetric/GOST28147$KeyGen.classPK   C:U?&     >             D org/bouncycastle/jcajce/provider/symmetric/GOST28147$Mac.classPK   C:UIs  L  C             : D org/bouncycastle/jcajce/provider/symmetric/GOST28147$Mappings.classPK   C:UV0N  	  :             $D org/bouncycastle/jcajce/provider/symmetric/GOST28147.classPK   C:U't+  /  B             'D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$CBC.classPK   C:UUD  s  B             o)D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$CTR.classPK   C:Ucw@     B             #+D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$ECB.classPK   C:UﷃI  v  C             ,D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$GCFB.classPK   C:U<wR    D             M.D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$GCFB8.classPK   C:U"05    E             0D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$KeyGen.classPK   C:UK)  	  B             1D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mac.classPK   C:U    G             G3D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$Mappings.classPK   C:UvF  t  B             ?6D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015$OFB.classPK   C:U@K    >             7D org/bouncycastle/jcajce/provider/symmetric/GOST3412_2015.classPK   C:U
     >             9D org/bouncycastle/jcajce/provider/symmetric/Grain128$Base.classPK   C:U.C    @             ;D org/bouncycastle/jcajce/provider/symmetric/Grain128$KeyGen.classPK   C:Uy    B             <D org/bouncycastle/jcajce/provider/symmetric/Grain128$Mappings.classPK   C:U     9             >D org/bouncycastle/jcajce/provider/symmetric/Grain128.classPK   C:U
	9=    B             @@D org/bouncycastle/jcajce/provider/symmetric/Grainv1$AlgParams.classPK   C:U     =             AD org/bouncycastle/jcajce/provider/symmetric/Grainv1$Base.classPK   C:U/    ?             CD org/bouncycastle/jcajce/provider/symmetric/Grainv1$KeyGen.classPK   C:Uwql  
  A             DD org/bouncycastle/jcajce/provider/symmetric/Grainv1$Mappings.classPK   C:UtH     8             GD org/bouncycastle/jcajce/provider/symmetric/Grainv1.classPK   C:UW    @             kHD org/bouncycastle/jcajce/provider/symmetric/HC128$AlgParams.classPK   C:UWg     ;             ID org/bouncycastle/jcajce/provider/symmetric/HC128$Base.classPK   C:UANQ
    =             <KD org/bouncycastle/jcajce/provider/symmetric/HC128$KeyGen.classPK   C:UZ    ?             LD org/bouncycastle/jcajce/provider/symmetric/HC128$Mappings.classPK   C:U     6             &OD org/bouncycastle/jcajce/provider/symmetric/HC128.classPK   C:UUc    @             PD org/bouncycastle/jcajce/provider/symmetric/HC256$AlgParams.classPK   C:Uxy     ;             QD org/bouncycastle/jcajce/provider/symmetric/HC256$Base.classPK   C:Ub<=    =             [SD org/bouncycastle/jcajce/provider/symmetric/HC256$KeyGen.classPK   C:UE8    ?             TD org/bouncycastle/jcajce/provider/symmetric/HC256$Mappings.classPK   C:Ut(     6             DWD org/bouncycastle/jcajce/provider/symmetric/HC256.classPK   C:U"    A             XD org/bouncycastle/jcajce/provider/symmetric/IDEA$AlgParamGen.classPK   C:U-    ?             [D org/bouncycastle/jcajce/provider/symmetric/IDEA$AlgParams.classPK   C:UY    9             3`D org/bouncycastle/jcajce/provider/symmetric/IDEA$CBC.classPK   C:URA!    =             aD org/bouncycastle/jcajce/provider/symmetric/IDEA$CFB8Mac.classPK   C:Uwj     9             3cD org/bouncycastle/jcajce/provider/symmetric/IDEA$ECB.classPK   C:U    <             dD org/bouncycastle/jcajce/provider/symmetric/IDEA$KeyGen.classPK   C:U    9             fD org/bouncycastle/jcajce/provider/symmetric/IDEA$Mac.classPK   C:U3  v  >             ~gD org/bouncycastle/jcajce/provider/symmetric/IDEA$Mappings.classPK   C:UP!    G             wkD org/bouncycastle/jcajce/provider/symmetric/IDEA$PBEWithSHAAndIDEA.classPK   C:U#    M             mD org/bouncycastle/jcajce/provider/symmetric/IDEA$PBEWithSHAAndIDEAKeyGen.classPK   C:UA)l    5             nD org/bouncycastle/jcajce/provider/symmetric/IDEA.classPK   C:U    D             qpD org/bouncycastle/jcajce/provider/symmetric/Noekeon$AlgParamGen.classPK   C:Utѵ    B             sD org/bouncycastle/jcajce/provider/symmetric/Noekeon$AlgParams.classPK   C:U\2l8  =  >             .uD org/bouncycastle/jcajce/provider/symmetric/Noekeon$ECB$1.classPK   C:UV|     <             vD org/bouncycastle/jcajce/provider/symmetric/Noekeon$ECB.classPK   C:U~8  p  =             )xD org/bouncycastle/jcajce/provider/symmetric/Noekeon$GMAC.classPK   C:U`f
    ?             yD org/bouncycastle/jcajce/provider/symmetric/Noekeon$KeyGen.classPK   C:Uĭ    A             F{D org/bouncycastle/jcajce/provider/symmetric/Noekeon$Mappings.classPK   C:U4i0    A             8~D org/bouncycastle/jcajce/provider/symmetric/Noekeon$Poly1305.classPK   C:U(/l    G             D org/bouncycastle/jcajce/provider/symmetric/Noekeon$Poly1305KeyGen.classPK   C:U<4DH  Z  8             VD org/bouncycastle/jcajce/provider/symmetric/Noekeon.classPK   C:U҉a    F             D org/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$Mappings.classPK   C:U*    C             WD org/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF$PBKDF.classPK   C:U皱   m  =             D org/bouncycastle/jcajce/provider/symmetric/OpenSSLPBKDF.classPK   C:Uܣ/    D             ɊD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$AlgParams.classPK   C:Uʄ*    C             jD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1$Mappings.classPK   C:U   l  :             aD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF1.classPK   C:UfӾb  	  D             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$AlgParams.classPK   C:Ua    E             {D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$BasePBKDF2.classPK   C:Uym  N
  C             ƞD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings.classPK   C:UW     I             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2with8BIT.classPK   C:UO     M             CD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withGOST3411.classPK   C:Ui!     K             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA224.classPK   C:U
(s     K             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA256.classPK   C:U     K             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA384.classPK   C:U6\     M             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_224.classPK   C:US:q     M             YD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_256.classPK   C:UZz|     M             ȬD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_384.classPK   C:U0S     M             7D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA3_512.classPK   C:UxO     K             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSHA512.classPK   C:UmQ     H             D org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withSM3.classPK   C:U$     I             rD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$PBKDF2withUTF8.classPK   C:UtV    :             ӳD org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2.classPK   C:U=d<jp  F	  D             ķD org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$AlgParams.classPK   C:U    C             D org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings.classPK   C:Ust   l  :             D org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12.classPK   C:U^3'    @             6D org/bouncycastle/jcajce/provider/symmetric/Poly1305$KeyGen.classPK   C:UV&     =             D org/bouncycastle/jcajce/provider/symmetric/Poly1305$Mac.classPK   C:U[    B             D org/bouncycastle/jcajce/provider/symmetric/Poly1305$Mappings.classPK   C:U>)     9             oD org/bouncycastle/jcajce/provider/symmetric/Poly1305.classPK   C:UN5  r  @             D org/bouncycastle/jcajce/provider/symmetric/RC2$AlgParamGen.classPK   C:U4  /  >             cD org/bouncycastle/jcajce/provider/symmetric/RC2$AlgParams.classPK   C:Un[  	  8             D org/bouncycastle/jcajce/provider/symmetric/RC2$CBC.classPK   C:U2u    ;             BD org/bouncycastle/jcajce/provider/symmetric/RC2$CBCMAC.classPK   C:UѝC     <             D org/bouncycastle/jcajce/provider/symmetric/RC2$CFB8MAC.classPK   C:U^o     8             ID org/bouncycastle/jcajce/provider/symmetric/RC2$ECB.classPK   C:U8E	    A             D org/bouncycastle/jcajce/provider/symmetric/RC2$KeyGenerator.classPK   C:Um*  N  =             D org/bouncycastle/jcajce/provider/symmetric/RC2$Mappings.classPK   C:Ue#G  D  I             KD org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithMD2KeyFactory.classPK   C:U5'  *  E             	D org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithMD5AndRC2.classPK   C:UVmH  D  I             D org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithMD5KeyFactory.classPK   C:UH*  ,  F             bD org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHA1AndRC2.classPK   C:UuI  H  J              D org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHA1KeyFactory.classPK   C:U8V  g  R             D org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd128BitKeyFactory.classPK   C:UR2  7  K             D org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd128BitRC2.classPK   C:U벴P  b  Q             BD org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd40BitKeyFactory.classPK   C:Ul6.  4  J             D org/bouncycastle/jcajce/provider/symmetric/RC2$PBEWithSHAAnd40BitRC2.classPK   C:U1)     9             D org/bouncycastle/jcajce/provider/symmetric/RC2$Wrap.classPK   C:U?{  :  4             D org/bouncycastle/jcajce/provider/symmetric/RC2.classPK   C:Ur    @             D org/bouncycastle/jcajce/provider/symmetric/RC5$AlgParamGen.classPK   C:U[:     >             D org/bouncycastle/jcajce/provider/symmetric/RC5$AlgParams.classPK   C:U'#    :             +D org/bouncycastle/jcajce/provider/symmetric/RC5$CBC32.classPK   C:Uؗo    >             D org/bouncycastle/jcajce/provider/symmetric/RC5$CFB8Mac32.classPK   C:U     :             8 E org/bouncycastle/jcajce/provider/symmetric/RC5$ECB32.classPK   C:UQ{     :             E org/bouncycastle/jcajce/provider/symmetric/RC5$ECB64.classPK   C:Uw
    =             E org/bouncycastle/jcajce/provider/symmetric/RC5$KeyGen32.classPK   C:Uٰ
    =             oE org/bouncycastle/jcajce/provider/symmetric/RC5$KeyGen64.classPK   C:Uy    :             E org/bouncycastle/jcajce/provider/symmetric/RC5$Mac32.classPK   C:U[ç    =             kE org/bouncycastle/jcajce/provider/symmetric/RC5$Mappings.classPK   C:U֋p^    4             }
E org/bouncycastle/jcajce/provider/symmetric/RC5.classPK   C:U    @             =E org/bouncycastle/jcajce/provider/symmetric/RC6$AlgParamGen.classPK   C:U     >             E org/bouncycastle/jcajce/provider/symmetric/RC6$AlgParams.classPK   C:UU  
  8             E org/bouncycastle/jcajce/provider/symmetric/RC6$CBC.classPK   C:U/s:    8             fE org/bouncycastle/jcajce/provider/symmetric/RC6$CFB.classPK   C:U4  -  :             E org/bouncycastle/jcajce/provider/symmetric/RC6$ECB$1.classPK   C:U     8             E org/bouncycastle/jcajce/provider/symmetric/RC6$ECB.classPK   C:U$c7  d  9             E org/bouncycastle/jcajce/provider/symmetric/RC6$GMAC.classPK   C:Uɫ.
    ;             E org/bouncycastle/jcajce/provider/symmetric/RC6$KeyGen.classPK   C:U	b  X  =             E org/bouncycastle/jcajce/provider/symmetric/RC6$Mappings.classPK   C:Uc$N;    8             E org/bouncycastle/jcajce/provider/symmetric/RC6$OFB.classPK   C:U
    =             rE org/bouncycastle/jcajce/provider/symmetric/RC6$Poly1305.classPK   C:U],    C             E org/bouncycastle/jcajce/provider/symmetric/RC6$Poly1305KeyGen.classPK   C:U6q    4             !E org/bouncycastle/jcajce/provider/symmetric/RC6.classPK   C:UA
}    C             W#E org/bouncycastle/jcajce/provider/symmetric/Rijndael$AlgParams.classPK   C:UK9  A  ?             $E org/bouncycastle/jcajce/provider/symmetric/Rijndael$ECB$1.classPK   C:Utd     =             p&E org/bouncycastle/jcajce/provider/symmetric/Rijndael$ECB.classPK   C:Uv
    @             'E org/bouncycastle/jcajce/provider/symmetric/Rijndael$KeyGen.classPK   C:Up    B             E)E org/bouncycastle/jcajce/provider/symmetric/Rijndael$Mappings.classPK   C:Ub     9             +E org/bouncycastle/jcajce/provider/symmetric/Rijndael.classPK   C:UY$    B             +-E org/bouncycastle/jcajce/provider/symmetric/SCRYPT$BasePBKDF2.classPK   C:UkB79    @             1E org/bouncycastle/jcajce/provider/symmetric/SCRYPT$Mappings.classPK   C:U6      F             f4E org/bouncycastle/jcajce/provider/symmetric/SCRYPT$ScryptWithUTF8.classPK   C:U8QG$     7             5E org/bouncycastle/jcajce/provider/symmetric/SCRYPT.classPK   C:U    A             ,7E org/bouncycastle/jcajce/provider/symmetric/SEED$AlgParamGen.classPK   C:U#     ?             m:E org/bouncycastle/jcajce/provider/symmetric/SEED$AlgParams.classPK   C:UV  
  9             ;E org/bouncycastle/jcajce/provider/symmetric/SEED$CBC.classPK   C:UVW    :             W=E org/bouncycastle/jcajce/provider/symmetric/SEED$CMAC.classPK   C:U^
.)5  1  ;             >E org/bouncycastle/jcajce/provider/symmetric/SEED$ECB$1.classPK   C:Ub(     9             s@E org/bouncycastle/jcajce/provider/symmetric/SEED$ECB.classPK   C:Ud(P7  g  :             AE org/bouncycastle/jcajce/provider/symmetric/SEED$GMAC.classPK   C:UC     @             eCE org/bouncycastle/jcajce/provider/symmetric/SEED$KeyFactory.classPK   C:Um    <             DE org/bouncycastle/jcajce/provider/symmetric/SEED$KeyGen.classPK   C:U  d	  >             FFE org/bouncycastle/jcajce/provider/symmetric/SEED$Mappings.classPK   C:U,
    >             jJE org/bouncycastle/jcajce/provider/symmetric/SEED$Poly1305.classPK   C:U    D             KE org/bouncycastle/jcajce/provider/symmetric/SEED$Poly1305KeyGen.classPK   C:U      :             ME org/bouncycastle/jcajce/provider/symmetric/SEED$Wrap.classPK   C:UzE  m  5             NE org/bouncycastle/jcajce/provider/symmetric/SEED.classPK   C:U8-    @             PE org/bouncycastle/jcajce/provider/symmetric/SM4$AlgParamGen.classPK   C:UIU     >             TE org/bouncycastle/jcajce/provider/symmetric/SM4$AlgParams.classPK   C:U eA    9             oUE org/bouncycastle/jcajce/provider/symmetric/SM4$CMAC.classPK   C:UaT4  -  :             VE org/bouncycastle/jcajce/provider/symmetric/SM4$ECB$1.classPK   C:U     8             XE org/bouncycastle/jcajce/provider/symmetric/SM4$ECB.classPK   C:UFQu6  d  9             YE org/bouncycastle/jcajce/provider/symmetric/SM4$GMAC.classPK   C:U>    ;             u[E org/bouncycastle/jcajce/provider/symmetric/SM4$KeyGen.classPK   C:U2    =             \E org/bouncycastle/jcajce/provider/symmetric/SM4$Mappings.classPK   C:Ug%    =             _E org/bouncycastle/jcajce/provider/symmetric/SM4$Poly1305.classPK   C:Uw    C             `aE org/bouncycastle/jcajce/provider/symmetric/SM4$Poly1305KeyGen.classPK   C:UWS  ~  4             bE org/bouncycastle/jcajce/provider/symmetric/SM4.classPK   C:Uϐ    B             dE org/bouncycastle/jcajce/provider/symmetric/Salsa20$AlgParams.classPK   C:U@r]     =             fE org/bouncycastle/jcajce/provider/symmetric/Salsa20$Base.classPK   C:Ux
    ?             zgE org/bouncycastle/jcajce/provider/symmetric/Salsa20$KeyGen.classPK   C:U/
  
  A             hE org/bouncycastle/jcajce/provider/symmetric/Salsa20$Mappings.classPK   C:Uܜ     8             pkE org/bouncycastle/jcajce/provider/symmetric/Salsa20.classPK   C:UjJ    B             lE org/bouncycastle/jcajce/provider/symmetric/Serpent$AlgParams.classPK   C:U߫    <             GnE org/bouncycastle/jcajce/provider/symmetric/Serpent$CBC.classPK   C:U5=    <             oE org/bouncycastle/jcajce/provider/symmetric/Serpent$CFB.classPK   C:U
8  =  >             rqE org/bouncycastle/jcajce/provider/symmetric/Serpent$ECB$1.classPK   C:U'     <             sE org/bouncycastle/jcajce/provider/symmetric/Serpent$ECB.classPK   C:U-/    ?             ntE org/bouncycastle/jcajce/provider/symmetric/Serpent$KeyGen.classPK   C:U,}  U
  A             uE org/bouncycastle/jcajce/provider/symmetric/Serpent$Mappings.classPK   C:UX>    <             zE org/bouncycastle/jcajce/provider/symmetric/Serpent$OFB.classPK   C:U<    A             {E org/bouncycastle/jcajce/provider/symmetric/Serpent$Poly1305.classPK   C:Uqb@    G             H}E org/bouncycastle/jcajce/provider/symmetric/Serpent$Poly1305KeyGen.classPK   C:UA<  ~  D             ~E org/bouncycastle/jcajce/provider/symmetric/Serpent$SerpentGMAC.classPK   C:Ux0    C             E org/bouncycastle/jcajce/provider/symmetric/Serpent$TAlgParams.classPK   C:U >  @  ?              E org/bouncycastle/jcajce/provider/symmetric/Serpent$TECB$1.classPK   C:UAi     =             E org/bouncycastle/jcajce/provider/symmetric/Serpent$TECB.classPK   C:U8'    @             E org/bouncycastle/jcajce/provider/symmetric/Serpent$TKeyGen.classPK   C:Url@    E             E org/bouncycastle/jcajce/provider/symmetric/Serpent$TSerpentGMAC.classPK   C:U%3ߤ  >  8             4E org/bouncycastle/jcajce/provider/symmetric/Serpent.classPK   C:UV    D             >E org/bouncycastle/jcajce/provider/symmetric/Shacal2$AlgParamGen.classPK   C:U7    B             E org/bouncycastle/jcajce/provider/symmetric/Shacal2$AlgParams.classPK   C:U$    <             E org/bouncycastle/jcajce/provider/symmetric/Shacal2$CBC.classPK   C:U-),    =             ~E org/bouncycastle/jcajce/provider/symmetric/Shacal2$CMAC.classPK   C:U9  =  >             E org/bouncycastle/jcajce/provider/symmetric/Shacal2$ECB$1.classPK   C:Uf     <             E org/bouncycastle/jcajce/provider/symmetric/Shacal2$ECB.classPK   C:U'    ?             E org/bouncycastle/jcajce/provider/symmetric/Shacal2$KeyGen.classPK   C:U}:he    A             E org/bouncycastle/jcajce/provider/symmetric/Shacal2$Mappings.classPK   C:U>U~2    8             SE org/bouncycastle/jcajce/provider/symmetric/Shacal2.classPK   C:U
    ?             E org/bouncycastle/jcajce/provider/symmetric/SipHash$KeyGen.classPK   C:Uè(     >             eE org/bouncycastle/jcajce/provider/symmetric/SipHash$Mac24.classPK   C:U|}L     >             E org/bouncycastle/jcajce/provider/symmetric/SipHash$Mac48.classPK   C:ULE:    A              E org/bouncycastle/jcajce/provider/symmetric/SipHash$Mappings.classPK   C:UpyI+     8             ɡE org/bouncycastle/jcajce/provider/symmetric/SipHash.classPK   C:U0    B             (E org/bouncycastle/jcajce/provider/symmetric/SipHash128$KeyGen.classPK   C:UtQ     A             E org/bouncycastle/jcajce/provider/symmetric/SipHash128$Mac24.classPK   C:Uw     A             E org/bouncycastle/jcajce/provider/symmetric/SipHash128$Mac48.classPK   C:UB    D             pE org/bouncycastle/jcajce/provider/symmetric/SipHash128$Mappings.classPK   C:U     ;             $E org/bouncycastle/jcajce/provider/symmetric/SipHash128.classPK   C:Ut    C             E org/bouncycastle/jcajce/provider/symmetric/Skipjack$AlgParams.classPK   C:UӤ     =             E org/bouncycastle/jcajce/provider/symmetric/Skipjack$ECB.classPK   C:U
    @             `E org/bouncycastle/jcajce/provider/symmetric/Skipjack$KeyGen.classPK   C:UAy    =             ۯE org/bouncycastle/jcajce/provider/symmetric/Skipjack$Mac.classPK   C:U9`>    A             [E org/bouncycastle/jcajce/provider/symmetric/Skipjack$MacCFB8.classPK   C:UKg  
  B             E org/bouncycastle/jcajce/provider/symmetric/Skipjack$Mappings.classPK   C:U.!    9             E org/bouncycastle/jcajce/provider/symmetric/Skipjack.classPK   C:U{\    K             GE org/bouncycastle/jcajce/provider/symmetric/SymmetricAlgorithmProvider.classPK   C:UX*"     >             ޹E org/bouncycastle/jcajce/provider/symmetric/TEA$AlgParams.classPK   C:U4e     8             HE org/bouncycastle/jcajce/provider/symmetric/TEA$ECB.classPK   C:UT{    ;             E org/bouncycastle/jcajce/provider/symmetric/TEA$KeyGen.classPK   C:USx    =             E org/bouncycastle/jcajce/provider/symmetric/TEA$Mappings.classPK   C:Uf+     4             E org/bouncycastle/jcajce/provider/symmetric/TEA.classPK   C:U:    @             E org/bouncycastle/jcajce/provider/symmetric/TLSKDF$Mappings.classPK   C:UuP!\    =             E org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS10.classPK   C:UC8    =             E org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS11.classPK   C:Ue,    =             EE org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12.classPK   C:U	";  C  G             E org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12withSHA256.classPK   C:UH:  C  G             :E org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12withSHA384.classPK   C:U:  C  G             E org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLS12withSHA512.classPK   C:U'a\q     M             E org/bouncycastle/jcajce/provider/symmetric/TLSKDF$TLSKeyMaterialFactory.classPK   C:US  	  7             E org/bouncycastle/jcajce/provider/symmetric/TLSKDF.classPK   C:U$    I             E org/bouncycastle/jcajce/provider/symmetric/Threefish$AlgParams_1024.classPK   C:UH
    H             E org/bouncycastle/jcajce/provider/symmetric/Threefish$AlgParams_256.classPK   C:ULEf*    H             E org/bouncycastle/jcajce/provider/symmetric/Threefish$AlgParams_512.classPK   C:Utm'    D             E org/bouncycastle/jcajce/provider/symmetric/Threefish$CMAC_1024.classPK   C:Um&    C             /E org/bouncycastle/jcajce/provider/symmetric/Threefish$CMAC_256.classPK   C:Ubu=i&    C             E org/bouncycastle/jcajce/provider/symmetric/Threefish$CMAC_512.classPK   C:U+%    C             ]E org/bouncycastle/jcajce/provider/symmetric/Threefish$ECB_1024.classPK   C:UѰ    B             E org/bouncycastle/jcajce/provider/symmetric/Threefish$ECB_256.classPK   C:U2r    B             EE org/bouncycastle/jcajce/provider/symmetric/Threefish$ECB_512.classPK   C:UMV    F             E org/bouncycastle/jcajce/provider/symmetric/Threefish$KeyGen_1024.classPK   C:U    E             BE org/bouncycastle/jcajce/provider/symmetric/Threefish$KeyGen_256.classPK   C:U
    E             E org/bouncycastle/jcajce/provider/symmetric/Threefish$KeyGen_512.classPK   C:U:q    C             RE org/bouncycastle/jcajce/provider/symmetric/Threefish$Mappings.classPK   C:U  H  :             E org/bouncycastle/jcajce/provider/symmetric/Threefish.classPK   C:UB}    B             E org/bouncycastle/jcajce/provider/symmetric/Twofish$AlgParams.classPK   C:U9  =  >             E org/bouncycastle/jcajce/provider/symmetric/Twofish$ECB$1.classPK   C:Uݬ     <             E org/bouncycastle/jcajce/provider/symmetric/Twofish$ECB.classPK   C:Uٚd9  p  =             E org/bouncycastle/jcajce/provider/symmetric/Twofish$GMAC.classPK   C:Ul<    ?             E org/bouncycastle/jcajce/provider/symmetric/Twofish$KeyGen.classPK   C:UR    A             E org/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings.classPK   C:U>h(  +  C             ^E org/bouncycastle/jcajce/provider/symmetric/Twofish$PBEWithSHA.classPK   C:UDH`$    M             E org/bouncycastle/jcajce/provider/symmetric/Twofish$PBEWithSHAKeyFactory.classPK   C:U*    A             E org/bouncycastle/jcajce/provider/symmetric/Twofish$Poly1305.classPK   C:U4	)     G             "E org/bouncycastle/jcajce/provider/symmetric/Twofish$Poly1305KeyGen.classPK   C:Ui    8              F org/bouncycastle/jcajce/provider/symmetric/Twofish.classPK   C:Uu     :             F org/bouncycastle/jcajce/provider/symmetric/VMPC$Base.classPK   C:UG    <             F org/bouncycastle/jcajce/provider/symmetric/VMPC$KeyGen.classPK   C:UHa:     9             ZF org/bouncycastle/jcajce/provider/symmetric/VMPC$Mac.classPK   C:U  @  >             F org/bouncycastle/jcajce/provider/symmetric/VMPC$Mappings.classPK   C:Ui     5             2	F org/bouncycastle/jcajce/provider/symmetric/VMPC.classPK   C:U
%J     >             
F org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Base.classPK   C:UfA    @             F org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$KeyGen.classPK   C:U{:    B             v
F org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3$Mappings.classPK   C:U."     9             F org/bouncycastle/jcajce/provider/symmetric/VMPCKSA3.classPK   C:U]    C             ,F org/bouncycastle/jcajce/provider/symmetric/XSalsa20$AlgParams.classPK   C:U#     >             F org/bouncycastle/jcajce/provider/symmetric/XSalsa20$Base.classPK   C:U 
9
    @             F org/bouncycastle/jcajce/provider/symmetric/XSalsa20$KeyGen.classPK   C:U@    B             F org/bouncycastle/jcajce/provider/symmetric/XSalsa20$Mappings.classPK   C:UE    9             F org/bouncycastle/jcajce/provider/symmetric/XSalsa20.classPK   C:U     ?             iF org/bouncycastle/jcajce/provider/symmetric/XTEA$AlgParams.classPK   C:U     9             F org/bouncycastle/jcajce/provider/symmetric/XTEA$ECB.classPK   C:U;    <             .F org/bouncycastle/jcajce/provider/symmetric/XTEA$KeyGen.classPK   C:U`n    >             F org/bouncycastle/jcajce/provider/symmetric/XTEA$Mappings.classPK   C:UL&     5              F org/bouncycastle/jcajce/provider/symmetric/XTEA.classPK   C:Ul`=     >             w!F org/bouncycastle/jcajce/provider/symmetric/Zuc$AlgParams.classPK   C:U]l    >             "F org/bouncycastle/jcajce/provider/symmetric/Zuc$KeyGen128.classPK   C:Ueq    >             _$F org/bouncycastle/jcajce/provider/symmetric/Zuc$KeyGen256.classPK   C:U2!    =             %F org/bouncycastle/jcajce/provider/symmetric/Zuc$Mappings.classPK   C:U,m     ;             (F org/bouncycastle/jcajce/provider/symmetric/Zuc$Zuc128.classPK   C:Uy$     ;             P*F org/bouncycastle/jcajce/provider/symmetric/Zuc$Zuc256.classPK   C:U u6     >             +F org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac128.classPK   C:Ut     >             -F org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac256.classPK   C:Uh\     A             v.F org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac256_32.classPK   C:U     A             /F org/bouncycastle/jcajce/provider/symmetric/Zuc$ZucMac256_64.classPK   C:U,_    4             H1F org/bouncycastle/jcajce/provider/symmetric/Zuc.classPK
 
    D:U            0             	3F org/bouncycastle/jcajce/provider/symmetric/util/PK   C:U2  +  >             W3F org/bouncycastle/jcajce/provider/symmetric/util/BCPBEKey.classPK   C:UP#  ^  U             y9F org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameterGenerator.classPK   C:U@  !  M             ;F org/bouncycastle/jcajce/provider/symmetric/util/BaseAlgorithmParameters.classPK   C:Ud-
    \             4>F org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$AEADGenericBlockCipher.classPK   C:Um    \             CF org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedFPEBlockCipher.classPK   C:UXz    `             WHF org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$BufferedGenericBlockCipher.classPK   C:U.1  n  X             LF org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$GenericBlockCipher.classPK   C:UiEK  R  E             7OF org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher.classPK   C:U$[>    F             3oF org/bouncycastle/jcajce/provider/symmetric/util/BaseKeyGenerator.classPK   C:U'Vˁ
    =             rF org/bouncycastle/jcajce/provider/symmetric/util/BaseMac.classPK   C:UԯX    J             }F org/bouncycastle/jcajce/provider/symmetric/util/BaseSecretKeyFactory.classPK   C:UaaHT    F             AF org/bouncycastle/jcajce/provider/symmetric/util/BaseStreamCipher.classPK   C:U@    Y             	F org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher$ErasableOutputStream.classPK   C:UFf;  "  d             АF org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher$InvalidKeyOrParametersException.classPK   C:Uc<  %  D             F org/bouncycastle/jcajce/provider/symmetric/util/BaseWrapCipher.classPK   C:U(ߋ      I             KF org/bouncycastle/jcajce/provider/symmetric/util/BlockCipherProvider.classPK   C:U$    A             MF org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil$1.classPK   C:Uz  5  ?             YF org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil.classPK   C:U?  	  C             F org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil$1.classPK   C:U`Z    C             F org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil$2.classPK   C:U-  &  C             F org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil$3.classPK   C:UQ田  
  A             &F org/bouncycastle/jcajce/provider/symmetric/util/GcmSpecUtil.classPK   C:UEY    K             EF org/bouncycastle/jcajce/provider/symmetric/util/IvAlgorithmParameters.classPK   C:Un"P	  ~  >             F org/bouncycastle/jcajce/provider/symmetric/util/PBE$Util.classPK   C:Ux  G  9             F org/bouncycastle/jcajce/provider/symmetric/util/PBE.classPK   C:UvŬ
    I             F org/bouncycastle/jcajce/provider/symmetric/util/PBESecretKeyFactory.classPK   C:Ulm  l  >             SF org/bouncycastle/jcajce/provider/symmetric/util/SpecUtil.classPK
 
    D:U            &             ,F org/bouncycastle/jcajce/provider/util/PK   C:U0y     =             pF org/bouncycastle/jcajce/provider/util/AlgorithmProvider.classPK   C:U'&,    G             F org/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider.classPK   C:UҢ   z  F             F org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter.classPK   C:UR}e  u  =             4F org/bouncycastle/jcajce/provider/util/BadBlockException.classPK   C:U˻ҟ  2  9             F org/bouncycastle/jcajce/provider/util/DigestFactory.classPK   C:UX=  7  9             F org/bouncycastle/jcajce/provider/util/SecretKeyUtil.classPK
 
    D:U                         F org/bouncycastle/jcajce/spec/PK   C:UԂr  >  4             F org/bouncycastle/jcajce/spec/AEADParameterSpec.classPK   C:U,at    A             F org/bouncycastle/jcajce/spec/CompositeAlgorithmSpec$Builder.classPK   C:U>J    9             F org/bouncycastle/jcajce/spec/CompositeAlgorithmSpec.classPK   C:U+/`    8             F org/bouncycastle/jcajce/spec/DHDomainParameterSpec.classPK   C:U*H%  A  ;             F org/bouncycastle/jcajce/spec/DHExtendedPrivateKeySpec.classPK   C:UP"  ?  :             =F org/bouncycastle/jcajce/spec/DHExtendedPublicKeySpec.classPK   C:U    3             F org/bouncycastle/jcajce/spec/DHUParameterSpec.classPK   C:UnC  x  8             
F org/bouncycastle/jcajce/spec/DSTU4145ParameterSpec.classPK   C:UR|  S  5             F org/bouncycastle/jcajce/spec/EdDSAParameterSpec.classPK   C:U~n    3             F org/bouncycastle/jcajce/spec/FPEParameterSpec.classPK   C:UC  	  9             @F org/bouncycastle/jcajce/spec/GOST28147ParameterSpec.classPK   C:U$Ƣ    =             F org/bouncycastle/jcajce/spec/GOST28147WrapParameterSpec.classPK   C:Uj    8             :F org/bouncycastle/jcajce/spec/GOST3410ParameterSpec.classPK   C:U.~    ;             wG org/bouncycastle/jcajce/spec/HybridValueParameterSpec.classPK   C:U+Xr  '  6             ^G org/bouncycastle/jcajce/spec/IESKEMParameterSpec.classPK   C:Uy    1             4G org/bouncycastle/jcajce/spec/KEMExtractSpec.classPK   C:U6    2             "	G org/bouncycastle/jcajce/spec/KEMGenerateSpec.classPK   C:U7ZtG    3             
G org/bouncycastle/jcajce/spec/KEMParameterSpec.classPK   C:Uj'\      5             `G org/bouncycastle/jcajce/spec/KTSParameterSpec$1.classPK   C:UU
    ;             Z
G org/bouncycastle/jcajce/spec/KTSParameterSpec$Builder.classPK   C:U,#_    3             G org/bouncycastle/jcajce/spec/KTSParameterSpec.classPK   C:U>A    3             G org/bouncycastle/jcajce/spec/MQVParameterSpec.classPK   C:U0qv    8             2G org/bouncycastle/jcajce/spec/OpenSSHPrivateKeySpec.classPK   C:U-    7             G org/bouncycastle/jcajce/spec/OpenSSHPublicKeySpec.classPK   C:U/    0             G org/bouncycastle/jcajce/spec/PBKDF2KeySpec.classPK   C:U_5      4             G org/bouncycastle/jcajce/spec/RawEncodedKeySpec.classPK   C:U#    8             *G org/bouncycastle/jcajce/spec/RepeatedSecretKeySpec.classPK   C:U"y    3              G org/bouncycastle/jcajce/spec/SM2ParameterSpec.classPK   C:Uא
  3  0             "G org/bouncycastle/jcajce/spec/ScryptKeySpec.classPK   C:Ux]ܗ      7             $G org/bouncycastle/jcajce/spec/SkeinParameterSpec$1.classPK   C:U  
  =             %G org/bouncycastle/jcajce/spec/SkeinParameterSpec$Builder.classPK   C:Us9  #  5             +G org/bouncycastle/jcajce/spec/SkeinParameterSpec.classPK   C:U   ,  5             W/G org/bouncycastle/jcajce/spec/TLSKeyMaterialSpec.classPK   C:UvNR    9             1G org/bouncycastle/jcajce/spec/UserKeyingMaterialSpec.classPK   C:Ul'by  M  3             s3G org/bouncycastle/jcajce/spec/XDHParameterSpec.classPK
 
    D:U                         M6G org/bouncycastle/jcajce/util/PK   C:UҌ#	    ;             6G org/bouncycastle/jcajce/util/AlgorithmParametersUtils.classPK   C:U&    6             8G org/bouncycastle/jcajce/util/AnnotatedPrivateKey.classPK   C:U7e    1             <G org/bouncycastle/jcajce/util/BCJcaJceHelper.classPK   C:UA*0  
  6             >G org/bouncycastle/jcajce/util/DefaultJcaJceHelper.classPK   C:U[+    G             ;CG org/bouncycastle/jcajce/util/ECKeyUtil$ECPublicKeyWithCompression.classPK   C:Uz>    ,             HG org/bouncycastle/jcajce/util/ECKeyUtil.classPK   C:Uɟ    /             JG org/bouncycastle/jcajce/util/JcaJceHelper.classPK   C:UGNun  L  .             MG org/bouncycastle/jcajce/util/JcaJceUtils.classPK   C:UFO(    5             GQG org/bouncycastle/jcajce/util/MessageDigestUtils.classPK   C:U#c=    4             WG org/bouncycastle/jcajce/util/NamedJcaJceHelper.classPK   C:U6|    6             \G org/bouncycastle/jcajce/util/PrivateKeyAnnotator.classPK   C:U7    7             ^G org/bouncycastle/jcajce/util/ProviderJcaJceHelper.classPK
 
    D:U                         dG org/bouncycastle/jce/PK   C:Uжl  3  4             7dG org/bouncycastle/jce/ECGOST3410NamedCurveTable.classPK   C:U)0    8             gG org/bouncycastle/jce/ECKeyUtil$UnexpectedException.classPK   C:U-p#  /  $             hG org/bouncycastle/jce/ECKeyUtil.classPK   C:U\ʁ    ,             qG org/bouncycastle/jce/ECNamedCurveTable.classPK   C:U	Z   7  &             sG org/bouncycastle/jce/ECPointUtil.classPK   C:U<hLX  [  3             vG org/bouncycastle/jce/MultiCertStoreParameters.classPK   C:UU  3  5             xG org/bouncycastle/jce/PKCS10CertificationRequest.classPK   C:U<  %
  %             G org/bouncycastle/jce/PKCS12Util.classPK   C:UWo    (             G org/bouncycastle/jce/PrincipalUtil.classPK   C:U	ox    '             G org/bouncycastle/jce/X509KeyUsage.classPK   C:Ust      8             G org/bouncycastle/jce/X509LDAPCertStoreParameters$1.classPK   C:U7n    >             G org/bouncycastle/jce/X509LDAPCertStoreParameters$Builder.classPK   C:U
  ^!  6             ؠG org/bouncycastle/jce/X509LDAPCertStoreParameters.classPK   C:Uc    (             GG org/bouncycastle/jce/X509Principal.classPK
 
    D:U                          G org/bouncycastle/jce/exception/PK   C:UR&  1  @             =G org/bouncycastle/jce/exception/ExtCertPathBuilderException.classPK   C:U%&z4  X  B             ѰG org/bouncycastle/jce/exception/ExtCertPathValidatorException.classPK   C:U    D             uG org/bouncycastle/jce/exception/ExtCertificateEncodingException.classPK   C:U]Mj{      1             G org/bouncycastle/jce/exception/ExtException.classPK   C:UD&     3             ŴG org/bouncycastle/jce/exception/ExtIOException.classPK
 
    D:U                          G org/bouncycastle/jce/interfaces/PK   C:UE      0             XG org/bouncycastle/jce/interfaces/BCKeyStore.classPK   C:U
ʂ      +             <G org/bouncycastle/jce/interfaces/ECKey.classPK   C:UH%       4             G org/bouncycastle/jce/interfaces/ECPointEncoder.classPK   C:UK      2             G org/bouncycastle/jce/interfaces/ECPrivateKey.classPK   C:Uf      1             G org/bouncycastle/jce/interfaces/ECPublicKey.classPK   C:U={      0             G org/bouncycastle/jce/interfaces/ElGamalKey.classPK   C:UdcΨ      7             G org/bouncycastle/jce/interfaces/ElGamalPrivateKey.classPK   C:U      6             G org/bouncycastle/jce/interfaces/ElGamalPublicKey.classPK   C:U`_      1             G org/bouncycastle/jce/interfaces/GOST3410Key.classPK   C:UO
   @  4             G org/bouncycastle/jce/interfaces/GOST3410Params.classPK   C:Ul}      8             G org/bouncycastle/jce/interfaces/GOST3410PrivateKey.classPK   C:Uɔʧ      7             ,G org/bouncycastle/jce/interfaces/GOST3410PublicKey.classPK   C:UWϤ      ,             8G org/bouncycastle/jce/interfaces/IESKey.classPK   C:Ujq   0  3             6G org/bouncycastle/jce/interfaces/MQVPrivateKey.classPK   C:U<И      2             _G org/bouncycastle/jce/interfaces/MQVPublicKey.classPK   C:Up$_     ?             lG org/bouncycastle/jce/interfaces/PKCS12BagAttributeCarrier.classPK
 
    D:U                         G org/bouncycastle/jce/netscape/PK   C:UV
  #  7             G org/bouncycastle/jce/netscape/NetscapeCertRequest.classPK
 
    D:U                         AG org/bouncycastle/jce/provider/PK   C:Ur~    6             }G org/bouncycastle/jce/provider/AnnotatedException.classPK   C:Ue=  (  :              G org/bouncycastle/jce/provider/BouncyCastleProvider$1.classPK   C:UR  K  I             G org/bouncycastle/jce/provider/BouncyCastleProvider$JcaCryptoService.classPK   C:Utm)  8  8             G org/bouncycastle/jce/provider/BouncyCastleProvider.classPK   C:UǓQ    E             G org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration.classPK   C:U-Z    N             G org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithMD5AndDES.classPK   C:UnC    O             qG org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHA1AndDES.classPK   C:U4Jo"    R             G org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHAAndDES2Key.classPK   C:U    R             G org/bouncycastle/jce/provider/BrokenJCEBlockCipher$BrokePBEWithSHAAndDES3Key.classPK   C:U}    P             CG org/bouncycastle/jce/provider/BrokenJCEBlockCipher$OldPBEWithSHAAndDES3Key.classPK   C:U	    P             G org/bouncycastle/jce/provider/BrokenJCEBlockCipher$OldPBEWithSHAAndTwofish.classPK   C:Uo;Ko  $  8             yG org/bouncycastle/jce/provider/BrokenJCEBlockCipher.classPK   C:UK}ʪ  r  <             NH org/bouncycastle/jce/provider/BrokenKDF2BytesGenerator.classPK   C:UFTfN  N  2             TH org/bouncycastle/jce/provider/BrokenPBE$Util.classPK   C:U6     -             @H org/bouncycastle/jce/provider/BrokenPBE.classPK   C:Uxz'  f  >             H org/bouncycastle/jce/provider/CertPathValidatorUtilities.classPK   C:U2b  R  .             yAH org/bouncycastle/jce/provider/CertStatus.classPK   C:UYWS    :             7CH org/bouncycastle/jce/provider/CertStoreCollectionSpi.classPK   C:U>    :             FH org/bouncycastle/jce/provider/CrlCache$LocalCRLStore.classPK   C:U4:
X     ,             JH org/bouncycastle/jce/provider/CrlCache.classPK   C:UZ    *             QH org/bouncycastle/jce/provider/DHUtil.classPK   C:U   j  3             TH org/bouncycastle/jce/provider/ExtCRLException.classPK   C:UW    3             UH org/bouncycastle/jce/provider/JCEDHPrivateKey.classPK   C:U	S~    2             ^H org/bouncycastle/jce/provider/JCEDHPublicKey.classPK   C:U|μ  @*  3             xfH org/bouncycastle/jce/provider/JCEECPrivateKey.classPK   C:U9  /  2             uH org/bouncycastle/jce/provider/JCEECPublicKey.classPK   C:UVY'    8             .H org/bouncycastle/jce/provider/JCEElGamalPrivateKey.classPK   C:UZl  B  7             H org/bouncycastle/jce/provider/JCEElGamalPublicKey.classPK   C:U2k  K  7             H org/bouncycastle/jce/provider/JCERSAPrivateCrtKey.classPK   C:Uar  U
  4             H org/bouncycastle/jce/provider/JCERSAPrivateKey.classPK   C:UxRD  }  3             rH org/bouncycastle/jce/provider/JCERSAPublicKey.classPK   C:U5;v    4             H org/bouncycastle/jce/provider/JDKDSAPrivateKey.classPK   C:U/O  <  3             H org/bouncycastle/jce/provider/JDKDSAPublicKey.classPK   C:U\et    ;             H org/bouncycastle/jce/provider/JDKPKCS12StoreParameter.classPK   C:Ui@{    5             >H org/bouncycastle/jce/provider/MultiCertStoreSpi.classPK   C:U "    -             H org/bouncycastle/jce/provider/OcspCache.classPK   C:UNxi  q
  @             H org/bouncycastle/jce/provider/OldPKCS12ParametersGenerator.classPK   C:UM̭     +             pH org/bouncycastle/jce/provider/PEMUtil.classPK   C:U^
  "  >             vH org/bouncycastle/jce/provider/PKIXAttrCertPathBuilderSpi.classPK   C:U"  c  @             H org/bouncycastle/jce/provider/PKIXAttrCertPathValidatorSpi.classPK   C:U<  m  /             .H org/bouncycastle/jce/provider/PKIXCRLUtil.classPK   C:U8n
    :             H org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi.classPK   C:U  o  <             H org/bouncycastle/jce/provider/PKIXCertPathBuilderSpi_8.classPK   C:Uw=  -  <             I org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi.classPK   C:U  /  >             I org/bouncycastle/jce/provider/PKIXCertPathValidatorSpi_8.classPK   C:Uu  h  ?             $&I org/bouncycastle/jce/provider/PKIXNameConstraintValidator.classPK   C:U*A    H             )I org/bouncycastle/jce/provider/PKIXNameConstraintValidatorException.classPK   C:Ud-  
  2             +I org/bouncycastle/jce/provider/PKIXPolicyNode.classPK   C:U?  _  2             0I org/bouncycastle/jce/provider/PrincipalUtils.classPK   C:U&1  7	  <             4I org/bouncycastle/jce/provider/ProvCrlRevocationChecker.classPK   C:UX  J  =             8I org/bouncycastle/jce/provider/ProvOcspRevocationChecker.classPK   C:UR0X	  L  9             TI org/bouncycastle/jce/provider/ProvRevocationChecker.classPK   C:U~f63  =  <             ^I org/bouncycastle/jce/provider/RFC3280CertPathUtilities.classPK   C:UoΣ   >  <             XI org/bouncycastle/jce/provider/RFC3281CertPathUtilities.classPK   C:U2  7  /             ¨I org/bouncycastle/jce/provider/ReasonsMask.classPK   C:U9v#     I             +I org/bouncycastle/jce/provider/RecoverableCertPathValidatorException.classPK   C:UD    <             pI org/bouncycastle/jce/provider/WrappedRevocationChecker.classPK   C:U3    6             pI org/bouncycastle/jce/provider/X509AttrCertParser.classPK   C:UT
    6             I org/bouncycastle/jce/provider/X509CRLEntryObject.classPK   C:UЇ&  :.  1             &I org/bouncycastle/jce/provider/X509CRLObject.classPK   C:U,    1             I org/bouncycastle/jce/provider/X509CRLParser.classPK   C:U?JÇ    6             I org/bouncycastle/jce/provider/X509CertPairParser.classPK   C:U_7?  
  2             I org/bouncycastle/jce/provider/X509CertParser.classPK   C:UtT  @  9             I org/bouncycastle/jce/provider/X509CertificateObject.classPK   C:U>S  #  8             I org/bouncycastle/jce/provider/X509LDAPCertStoreSpi.classPK   C:Uz    5             
J org/bouncycastle/jce/provider/X509SignatureUtil.classPK   C:U_C  m  ?             <J org/bouncycastle/jce/provider/X509StoreAttrCertCollection.classPK   C:U   h  :             J org/bouncycastle/jce/provider/X509StoreCRLCollection.classPK   C:U  i  ;             J org/bouncycastle/jce/provider/X509StoreCertCollection.classPK   C:U'QJ  ;  ?             
J org/bouncycastle/jce/provider/X509StoreCertPairCollection.classPK   C:UC
  9  :             J org/bouncycastle/jce/provider/X509StoreLDAPAttrCerts.classPK   C:U8h    5             6!J org/bouncycastle/jce/provider/X509StoreLDAPCRLs.classPK   C:U    :             %J org/bouncycastle/jce/provider/X509StoreLDAPCertPairs.classPK   C:U3G  	  6             L(J org/bouncycastle/jce/provider/X509StoreLDAPCerts.classPK
 
    D:U                         \-J org/bouncycastle/jce/spec/PK   C:Uhs     )             -J org/bouncycastle/jce/spec/ECKeySpec.classPK   C:Uf&   e  <             .J org/bouncycastle/jce/spec/ECNamedCurveGenParameterSpec.classPK   C:U7S  l  9             ?0J org/bouncycastle/jce/spec/ECNamedCurveParameterSpec.classPK   C:UcQ  ,  0             1J org/bouncycastle/jce/spec/ECNamedCurveSpec.classPK   C:UL%n    /             \6J org/bouncycastle/jce/spec/ECParameterSpec.classPK   C:UZ     0             m9J org/bouncycastle/jce/spec/ECPrivateKeySpec.classPK   C:UoF    /             :J org/bouncycastle/jce/spec/ECPublicKeySpec.classPK   C:UnI   7  7             Z<J org/bouncycastle/jce/spec/ElGamalGenParameterSpec.classPK   C:U1L     .             =J org/bouncycastle/jce/spec/ElGamalKeySpec.classPK   C:U>a    4             >J org/bouncycastle/jce/spec/ElGamalParameterSpec.classPK   C:U$Ύ     5             s@J org/bouncycastle/jce/spec/ElGamalPrivateKeySpec.classPK   C:Uf(     4             AJ org/bouncycastle/jce/spec/ElGamalPublicKeySpec.classPK   C:U'	     6             CJ org/bouncycastle/jce/spec/GOST28147ParameterSpec.classPK   C:U,{    5             jDJ org/bouncycastle/jce/spec/GOST3410ParameterSpec.classPK   C:U0E  \  6             lIJ org/bouncycastle/jce/spec/GOST3410PrivateKeySpec.classPK   C:Ub^    A             KJ org/bouncycastle/jce/spec/GOST3410PublicKeyParameterSetSpec.classPK   C:UʜڶD  [  5             NMJ org/bouncycastle/jce/spec/GOST3410PublicKeySpec.classPK   C:UrL    )             NJ org/bouncycastle/jce/spec/IEKeySpec.classPK   C:U/    0             PJ org/bouncycastle/jce/spec/IESParameterSpec.classPK   C:UU     5             SJ org/bouncycastle/jce/spec/RepeatedSecretKeySpec.classPK
 
    D:U                         TJ org/bouncycastle/math/PK   C:UyY      $             UJ org/bouncycastle/math/Primes$1.classPK   C:UGaa    +             UJ org/bouncycastle/math/Primes$MROutput.classPK   C:UAՆ    +             PXJ org/bouncycastle/math/Primes$STOutput.classPK   C:UX;    "             /ZJ org/bouncycastle/math/Primes.classPK
 
    D:U                         }gJ org/bouncycastle/math/ec/PK   C:Uz?   6  4             gJ org/bouncycastle/math/ec/AbstractECLookupTable.classPK   C:Uz9    3             hJ org/bouncycastle/math/ec/AbstractECMultiplier.classPK   C:U(  )  +             KkJ org/bouncycastle/math/ec/ECAlgorithms.classPK   C:UQ2    *             2}J org/bouncycastle/math/ec/ECConstants.classPK   C:UɊ    (             ~J org/bouncycastle/math/ec/ECCurve$1.classPK   C:U  e  2             J org/bouncycastle/math/ec/ECCurve$AbstractF2m.classPK   C:Ul  	  1             J org/bouncycastle/math/ec/ECCurve$AbstractFp.classPK   C:U\    -             ,J org/bouncycastle/math/ec/ECCurve$Config.classPK   C:U̓ILn  3  ,             EJ org/bouncycastle/math/ec/ECCurve$F2m$1.classPK   C:U4*&>    *             
J org/bouncycastle/math/ec/ECCurve$F2m.classPK   C:UB  E  )             J org/bouncycastle/math/ec/ECCurve$Fp.classPK   C:U3/  %  &             J org/bouncycastle/math/ec/ECCurve.classPK   C:UPH)  |  9             J org/bouncycastle/math/ec/ECFieldElement$AbstractF2m.classPK   C:UI<      8             J org/bouncycastle/math/ec/ECFieldElement$AbstractFp.classPK   C:UWC1  ]  1             J org/bouncycastle/math/ec/ECFieldElement$F2m.classPK   C:UI~n    0             J org/bouncycastle/math/ec/ECFieldElement$Fp.classPK   C:UV7    -             J org/bouncycastle/math/ec/ECFieldElement.classPK   C:U3      ,             J org/bouncycastle/math/ec/ECLookupTable.classPK   C:U@      +             J org/bouncycastle/math/ec/ECMultiplier.classPK   C:UxQ`  =  (             J org/bouncycastle/math/ec/ECPoint$1.classPK   C:Uh9    2             bJ org/bouncycastle/math/ec/ECPoint$AbstractF2m.classPK   C:U&c    1             J org/bouncycastle/math/ec/ECPoint$AbstractFp.classPK   C:U5h:	    *             J org/bouncycastle/math/ec/ECPoint$F2m.classPK   C:U=A
  G  )             J org/bouncycastle/math/ec/ECPoint$Fp.classPK   C:Uh  
  &             uJ org/bouncycastle/math/ec/ECPoint.classPK   C:U:n      )              K org/bouncycastle/math/ec/ECPointMap.classPK   C:U1V    7             K org/bouncycastle/math/ec/FixedPointCombMultiplier.classPK   C:Ub}  I  4             <K org/bouncycastle/math/ec/FixedPointPreCompInfo.classPK   C:UKx     /             K org/bouncycastle/math/ec/FixedPointUtil$1.classPK   C:UV  -  -             xK org/bouncycastle/math/ec/FixedPointUtil.classPK   C:Ut*    ,             )K org/bouncycastle/math/ec/GLVMultiplier.classPK   C:U?aW;  x  (             K org/bouncycastle/math/ec/LongArray.classPK   C:UΓb*}      .             MK org/bouncycastle/math/ec/PreCompCallback.classPK   C:U0U   X   *             MK org/bouncycastle/math/ec/PreCompInfo.classPK   C:UQ  H  4             NK org/bouncycastle/math/ec/ScaleXNegateYPointMap.classPK   C:U`ݕ  :  -             PK org/bouncycastle/math/ec/ScaleXPointMap.classPK   C:U"*:  H  4             yQK org/bouncycastle/math/ec/ScaleYNegateXPointMap.classPK   C:U  :  -             RK org/bouncycastle/math/ec/ScaleYPointMap.classPK   C:Uax  	
  /             YTK org/bouncycastle/math/ec/SimpleBigDecimal.classPK   C:UL  =  0             ZK org/bouncycastle/math/ec/SimpleLookupTable.classPK   C:U0ט  "  #             \K org/bouncycastle/math/ec/Tnaf.classPK   C:U)_    2             kK org/bouncycastle/math/ec/ValidityPrecompInfo.classPK   C:UY2^    0             mK org/bouncycastle/math/ec/WNafL2RMultiplier.classPK   C:Up݂J  o  .             kqK org/bouncycastle/math/ec/WNafPreCompInfo.classPK   C:UZQ  [  )             tK org/bouncycastle/math/ec/WNafUtil$1.classPK   C:U!bU    )             vK org/bouncycastle/math/ec/WNafUtil$2.classPK   C:U    )             }K org/bouncycastle/math/ec/WNafUtil$3.classPK   C:U!K	  5  '             ށK org/bouncycastle/math/ec/WNafUtil.classPK   C:U
<XS    2             K org/bouncycastle/math/ec/WTauNafMultiplier$1.classPK   C:UU&  D  0             AK org/bouncycastle/math/ec/WTauNafMultiplier.classPK   C:Uҳ2  d  1             œK org/bouncycastle/math/ec/WTauNafPreCompInfo.classPK   C:U     *             VK org/bouncycastle/math/ec/ZTauElement.classPK
 
    D:U                          K org/bouncycastle/math/ec/custom/PK
 
    D:U            $             K org/bouncycastle/math/ec/custom/djb/PK   C:U<  5  6             K org/bouncycastle/math/ec/custom/djb/Curve25519$1.classPK   C:U۴   x  4             [K org/bouncycastle/math/ec/custom/djb/Curve25519.classPK   C:UG  
  9             ݠK org/bouncycastle/math/ec/custom/djb/Curve25519Field.classPK   C:UY    @             AK org/bouncycastle/math/ec/custom/djb/Curve25519FieldElement.classPK   C:U(    9             K org/bouncycastle/math/ec/custom/djb/Curve25519Point.classPK
 
    D:U            #             K org/bouncycastle/math/ec/custom/gm/PK   C:Ug}  ?  9             [K org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve$1.classPK   C:U+I  #  7             K org/bouncycastle/math/ec/custom/gm/SM2P256V1Curve.classPK   C:U$  V  7             )K org/bouncycastle/math/ec/custom/gm/SM2P256V1Field.classPK   C:Us$    >             K org/bouncycastle/math/ec/custom/gm/SM2P256V1FieldElement.classPK   C:UY$P  H  7             K org/bouncycastle/math/ec/custom/gm/SM2P256V1Point.classPK
 
    D:U            $             K org/bouncycastle/math/ec/custom/sec/PK   C:U  ?  :             K org/bouncycastle/math/ec/custom/sec/SecP128R1Curve$1.classPK   C:UZj    8             VK org/bouncycastle/math/ec/custom/sec/SecP128R1Curve.classPK   C:Ua  W
  8             K org/bouncycastle/math/ec/custom/sec/SecP128R1Field.classPK   C:Ui_  y  ?             K org/bouncycastle/math/ec/custom/sec/SecP128R1FieldElement.classPK   C:Utf6N  I  8             K org/bouncycastle/math/ec/custom/sec/SecP128R1Point.classPK   C:UR  ?  :             bK org/bouncycastle/math/ec/custom/sec/SecP160K1Curve$1.classPK   C:UݡQ    8             K org/bouncycastle/math/ec/custom/sec/SecP160K1Curve.classPK   C:Uy&Y   
  8             K org/bouncycastle/math/ec/custom/sec/SecP160K1Point.classPK   C:U  ?  :             jL org/bouncycastle/math/ec/custom/sec/SecP160R1Curve$1.classPK   C:U8w"    8             L org/bouncycastle/math/ec/custom/sec/SecP160R1Curve.classPK   C:UF    8             L org/bouncycastle/math/ec/custom/sec/SecP160R1Field.classPK   C:U)q    ?             L org/bouncycastle/math/ec/custom/sec/SecP160R1FieldElement.classPK   C:U_O  I  8             L org/bouncycastle/math/ec/custom/sec/SecP160R1Point.classPK   C:U&TUB  ?  :             L org/bouncycastle/math/ec/custom/sec/SecP160R2Curve$1.classPK   C:UUu    8             #L org/bouncycastle/math/ec/custom/sec/SecP160R2Curve.classPK   C:U`  )  8             ^)L org/bouncycastle/math/ec/custom/sec/SecP160R2Field.classPK   C:UF    ?             F0L org/bouncycastle/math/ec/custom/sec/SecP160R2FieldElement.classPK   C:U7O  I  8             S6L org/bouncycastle/math/ec/custom/sec/SecP160R2Point.classPK   C:U  D  :             =L org/bouncycastle/math/ec/custom/sec/SecP192K1Curve$1.classPK   C:U|h    8             f@L org/bouncycastle/math/ec/custom/sec/SecP192K1Curve.classPK   C:Uǣ|  <  8             FL org/bouncycastle/math/ec/custom/sec/SecP192K1Field.classPK   C:U-{0    ?             oML org/bouncycastle/math/ec/custom/sec/SecP192K1FieldElement.classPK   C:U5   
  8             ySL org/bouncycastle/math/ec/custom/sec/SecP192K1Point.classPK   C:UꙷA  D  :             YL org/bouncycastle/math/ec/custom/sec/SecP192R1Curve$1.classPK   C:U~4Y    8             ^]L org/bouncycastle/math/ec/custom/sec/SecP192R1Curve.classPK   C:UǌJ  o  8             cL org/bouncycastle/math/ec/custom/sec/SecP192R1Field.classPK   C:UT  8  ?             akL org/bouncycastle/math/ec/custom/sec/SecP192R1FieldElement.classPK   C:UiO  K  8             pL org/bouncycastle/math/ec/custom/sec/SecP192R1Point.classPK   C:U~<  s  :             wL org/bouncycastle/math/ec/custom/sec/SecP224K1Curve$1.classPK   C:Uޤ
    8             zL org/bouncycastle/math/ec/custom/sec/SecP224K1Curve.classPK   C:U9|Tx  D  8             L org/bouncycastle/math/ec/custom/sec/SecP224K1Field.classPK   C:UT)    ?             ݇L org/bouncycastle/math/ec/custom/sec/SecP224K1FieldElement.classPK   C:Uʝ!  
  8             sL org/bouncycastle/math/ec/custom/sec/SecP224K1Point.classPK   C:U.e  D  :             L org/bouncycastle/math/ec/custom/sec/SecP224R1Curve$1.classPK   C:U}    8             YL org/bouncycastle/math/ec/custom/sec/SecP224R1Curve.classPK   C:UG{    8             L org/bouncycastle/math/ec/custom/sec/SecP224R1Field.classPK   C:US28    ?             L org/bouncycastle/math/ec/custom/sec/SecP224R1FieldElement.classPK   C:U=JP  K  8             =L org/bouncycastle/math/ec/custom/sec/SecP224R1Point.classPK   C:U#b  D  :             L org/bouncycastle/math/ec/custom/sec/SecP256K1Curve$1.classPK   C:UA    8             RL org/bouncycastle/math/ec/custom/sec/SecP256K1Curve.classPK   C:UksM  
  8             L org/bouncycastle/math/ec/custom/sec/SecP256K1Field.classPK   C:UD|    ?             L org/bouncycastle/math/ec/custom/sec/SecP256K1FieldElement.classPK   C:U74  &  8             L org/bouncycastle/math/ec/custom/sec/SecP256K1Point.classPK   C:Ur8  D  :             vL org/bouncycastle/math/ec/custom/sec/SecP256R1Curve$1.classPK   C:UD
  *  8             L org/bouncycastle/math/ec/custom/sec/SecP256R1Curve.classPK   C:UW    8             IL org/bouncycastle/math/ec/custom/sec/SecP256R1Field.classPK   C:U;\    ?             rL org/bouncycastle/math/ec/custom/sec/SecP256R1FieldElement.classPK   C:Uiac    8             ;L org/bouncycastle/math/ec/custom/sec/SecP256R1Point.classPK   C:U#  J  :             L org/bouncycastle/math/ec/custom/sec/SecP384R1Curve$1.classPK   C:U*	5    8             aL org/bouncycastle/math/ec/custom/sec/SecP384R1Curve.classPK   C:U:$4-  l  8             L org/bouncycastle/math/ec/custom/sec/SecP384R1Field.classPK   C:U0  ~  ?             \M org/bouncycastle/math/ec/custom/sec/SecP384R1FieldElement.classPK   C:U<a    8             h	M org/bouncycastle/math/ec/custom/sec/SecP384R1Point.classPK   C:U@  P  :             /M org/bouncycastle/math/ec/custom/sec/SecP521R1Curve$1.classPK   C:UC;kh    8             M org/bouncycastle/math/ec/custom/sec/SecP521R1Curve.classPK   C:Uf@    8             \M org/bouncycastle/math/ec/custom/sec/SecP521R1Field.classPK   C:U
~R   u  ?             !M org/bouncycastle/math/ec/custom/sec/SecP521R1FieldElement.classPK   C:U"Z  v  8             &M org/bouncycastle/math/ec/custom/sec/SecP521R1Point.classPK   C:U1  d
  6             -M org/bouncycastle/math/ec/custom/sec/SecT113Field.classPK   C:UN+  I  =             
4M org/bouncycastle/math/ec/custom/sec/SecT113FieldElement.classPK   C:U+  @  :             [:M org/bouncycastle/math/ec/custom/sec/SecT113R1Curve$1.classPK   C:UӶ  
  8             =M org/bouncycastle/math/ec/custom/sec/SecT113R1Curve.classPK   C:Ugy    8             CM org/bouncycastle/math/ec/custom/sec/SecT113R1Point.classPK   C:U>.v  @  :             JM org/bouncycastle/math/ec/custom/sec/SecT113R2Curve$1.classPK   C:U  
  8             WNM org/bouncycastle/math/ec/custom/sec/SecT113R2Curve.classPK   C:UH    8             QTM org/bouncycastle/math/ec/custom/sec/SecT113R2Point.classPK   C:UK  g  6             [M org/bouncycastle/math/ec/custom/sec/SecT131Field.classPK   C:UeU  k  =             cM org/bouncycastle/math/ec/custom/sec/SecT131FieldElement.classPK   C:UDK  @  :             @jM org/bouncycastle/math/ec/custom/sec/SecT131R1Curve$1.classPK   C:U>Ʀ  
  8             mM org/bouncycastle/math/ec/custom/sec/SecT131R1Curve.classPK   C:U{K    8             sM org/bouncycastle/math/ec/custom/sec/SecT131R1Point.classPK   C:UF  @  :             zM org/bouncycastle/math/ec/custom/sec/SecT131R2Curve$1.classPK   C:U_6n  
  8             M~M org/bouncycastle/math/ec/custom/sec/SecT131R2Curve.classPK   C:U8F    8             UM org/bouncycastle/math/ec/custom/sec/SecT131R2Point.classPK   C:Ue'  0  6             M org/bouncycastle/math/ec/custom/sec/SecT163Field.classPK   C:Uc  M  =             ГM org/bouncycastle/math/ec/custom/sec/SecT163FieldElement.classPK   C:U(%  @  :             'M org/bouncycastle/math/ec/custom/sec/SecT163K1Curve$1.classPK   C:U&:    8             M org/bouncycastle/math/ec/custom/sec/SecT163K1Curve.classPK   C:Uu,  z  8             M org/bouncycastle/math/ec/custom/sec/SecT163K1Point.classPK   C:U>{  @  :             M org/bouncycastle/math/ec/custom/sec/SecT163R1Curve$1.classPK   C:UOݮ  
  8             M org/bouncycastle/math/ec/custom/sec/SecT163R1Curve.classPK   C:U3    8             M org/bouncycastle/math/ec/custom/sec/SecT163R1Point.classPK   C:UB  @  :             ;M org/bouncycastle/math/ec/custom/sec/SecT163R2Curve$1.classPK   C:UyV  
  8             M org/bouncycastle/math/ec/custom/sec/SecT163R2Curve.classPK   C:Utq'    8             M org/bouncycastle/math/ec/custom/sec/SecT163R2Point.classPK   C:UQT[  R
  6             M org/bouncycastle/math/ec/custom/sec/SecT193Field.classPK   C:Uʕ  L  =             `M org/bouncycastle/math/ec/custom/sec/SecT193FieldElement.classPK   C:U\Z  @  :             M org/bouncycastle/math/ec/custom/sec/SecT193R1Curve$1.classPK   C:UM>`}    8             M org/bouncycastle/math/ec/custom/sec/SecT193R1Curve.classPK   C:UJt    8             EM org/bouncycastle/math/ec/custom/sec/SecT193R1Point.classPK   C:Uy|  F  :             M org/bouncycastle/math/ec/custom/sec/SecT193R2Curve$1.classPK   C:UU    8             M org/bouncycastle/math/ec/custom/sec/SecT193R2Curve.classPK   C:U%{ߝ    8             
M org/bouncycastle/math/ec/custom/sec/SecT193R2Point.classPK   C:Uai  '  6             BM org/bouncycastle/math/ec/custom/sec/SecT233Field.classPK   C:Ue)  L  =             N org/bouncycastle/math/ec/custom/sec/SecT233FieldElement.classPK   C:U6>|  @  :             	N org/bouncycastle/math/ec/custom/sec/SecT233K1Curve$1.classPK   C:U
k>  (  8             I
N org/bouncycastle/math/ec/custom/sec/SecT233K1Curve.classPK   C:URI    8             LN org/bouncycastle/math/ec/custom/sec/SecT233K1Point.classPK   C:U p  @  :             SN org/bouncycastle/math/ec/custom/sec/SecT233R1Curve$1.classPK   C:UtH_  
  8             N org/bouncycastle/math/ec/custom/sec/SecT233R1Curve.classPK   C:UӀ    8             #N org/bouncycastle/math/ec/custom/sec/SecT233R1Point.classPK   C:U   ~  6             *N org/bouncycastle/math/ec/custom/sec/SecT239Field.classPK   C:Uw  M  =             63N org/bouncycastle/math/ec/custom/sec/SecT239FieldElement.classPK   C:U6o  @  :             9N org/bouncycastle/math/ec/custom/sec/SecT239K1Curve$1.classPK   C:U!K  ,  8             <N org/bouncycastle/math/ec/custom/sec/SecT239K1Curve.classPK   C:Ugucd    8             BN org/bouncycastle/math/ec/custom/sec/SecT239K1Point.classPK   C:Uf	    6             IN org/bouncycastle/math/ec/custom/sec/SecT283Field.classPK   C:U*?  n  =             SN org/bouncycastle/math/ec/custom/sec/SecT283FieldElement.classPK   C:UP$  @  :             +ZN org/bouncycastle/math/ec/custom/sec/SecT283K1Curve$1.classPK   C:UqBz  8  8             ]N org/bouncycastle/math/ec/custom/sec/SecT283K1Curve.classPK   C:U}ϡ    8             cN org/bouncycastle/math/ec/custom/sec/SecT283K1Point.classPK   C:U  @  :             jN org/bouncycastle/math/ec/custom/sec/SecT283R1Curve$1.classPK   C:U0  
  8             nN org/bouncycastle/math/ec/custom/sec/SecT283R1Curve.classPK   C:UH1;    8             $tN org/bouncycastle/math/ec/custom/sec/SecT283R1Point.classPK   C:U0K  m  6             4{N org/bouncycastle/math/ec/custom/sec/SecT409Field.classPK   C:UVNZ  n  =             vN org/bouncycastle/math/ec/custom/sec/SecT409FieldElement.classPK   C:U<&  E  :             ڊN org/bouncycastle/math/ec/custom/sec/SecT409K1Curve$1.classPK   C:U  U  8             >N org/bouncycastle/math/ec/custom/sec/SecT409K1Curve.classPK   C:U"4Ow    8             UN org/bouncycastle/math/ec/custom/sec/SecT409K1Point.classPK   C:U  E  :             ]N org/bouncycastle/math/ec/custom/sec/SecT409R1Curve$1.classPK   C:Ue  1  8             N org/bouncycastle/math/ec/custom/sec/SecT409R1Curve.classPK   C:Ui㬫    8             N org/bouncycastle/math/ec/custom/sec/SecT409R1Point.classPK   C:US~N
    6             N org/bouncycastle/math/ec/custom/sec/SecT571Field.classPK   C:U  M  =             ǶN org/bouncycastle/math/ec/custom/sec/SecT571FieldElement.classPK   C:U  E  :             %N org/bouncycastle/math/ec/custom/sec/SecT571K1Curve$1.classPK   C:Ug:    8             N org/bouncycastle/math/ec/custom/sec/SecT571K1Curve.classPK   C:Uܦ,  t  8             N org/bouncycastle/math/ec/custom/sec/SecT571K1Point.classPK   C:Un  E  :             ON org/bouncycastle/math/ec/custom/sec/SecT571R1Curve$1.classPK   C:UH*[  (  8             N org/bouncycastle/math/ec/custom/sec/SecT571R1Curve.classPK   C:U#H  A  8             uN org/bouncycastle/math/ec/custom/sec/SecT571R1Point.classPK
 
    D:U                         N org/bouncycastle/math/ec/endo/PK   C:U|N      2             N org/bouncycastle/math/ec/endo/ECEndomorphism.classPK   C:U|=!@    3             N org/bouncycastle/math/ec/endo/EndoPreCompInfo.classPK   C:U,5    .             N org/bouncycastle/math/ec/endo/EndoUtil$1.classPK   C:U'@=    ,             N org/bouncycastle/math/ec/endo/EndoUtil.classPK   C:U\{>      3             N org/bouncycastle/math/ec/endo/GLVEndomorphism.classPK   C:U   %  8             N org/bouncycastle/math/ec/endo/GLVTypeAEndomorphism.classPK   C:UC    6             N org/bouncycastle/math/ec/endo/GLVTypeAParameters.classPK   C:U2  !  8             N org/bouncycastle/math/ec/endo/GLVTypeBEndomorphism.classPK   C:UAF    6             AN org/bouncycastle/math/ec/endo/GLVTypeBParameters.classPK   C:Uw    9             N org/bouncycastle/math/ec/endo/ScalarSplitParameters.classPK
 
    D:U            !             N org/bouncycastle/math/ec/rfc7748/PK   C:UEƮ­     /             6N org/bouncycastle/math/ec/rfc7748/X25519$F.classPK   C:UC    4             @N org/bouncycastle/math/ec/rfc7748/X25519$Friend.classPK   C:U^  c	  -             N org/bouncycastle/math/ec/rfc7748/X25519.classPK   C:UE     2             tO org/bouncycastle/math/ec/rfc7748/X25519Field.classPK   C:UF     -             VO org/bouncycastle/math/ec/rfc7748/X448$F.classPK   C:U    2             [O org/bouncycastle/math/ec/rfc7748/X448$Friend.classPK   C:U
LnL  8	  +             O org/bouncycastle/math/ec/rfc7748/X448.classPK   C:U*{`  2*  0             vO org/bouncycastle/math/ec/rfc7748/X448Field.classPK
 
    D:U            !             4-O org/bouncycastle/math/ec/rfc8032/PK   C:Ubƒ      0             s-O org/bouncycastle/math/ec/rfc8032/Ed25519$1.classPK   C:UЖ   t  8             h.O org/bouncycastle/math/ec/rfc8032/Ed25519$Algorithm.classPK   C:U:   
  0             /O org/bouncycastle/math/ec/rfc8032/Ed25519$F.classPK   C:UdxW  z  9             0O org/bouncycastle/math/ec/rfc8032/Ed25519$PointAccum.classPK   C:U6  %  :             2O org/bouncycastle/math/ec/rfc8032/Ed25519$PointAffine.classPK   C:UXJ.P  c  <             74O org/bouncycastle/math/ec/rfc8032/Ed25519$PointExtended.classPK   C:Ur)J  N  ;             5O org/bouncycastle/math/ec/rfc8032/Ed25519$PointPrecomp.classPK   C:U̇0Y  m  <             7O org/bouncycastle/math/ec/rfc8032/Ed25519$PointPrecompZ.classPK   C:U)5  #  8             g9O org/bouncycastle/math/ec/rfc8032/Ed25519$PointTemp.classPK   C:U'!  L  .             ;O org/bouncycastle/math/ec/rfc8032/Ed25519.classPK   C:U$      .             Q]O org/bouncycastle/math/ec/rfc8032/Ed448$1.classPK   C:U2DH   J  6             B^O org/bouncycastle/math/ec/rfc8032/Ed448$Algorithm.classPK   C:Um     .             _O org/bouncycastle/math/ec/rfc8032/Ed448$F.classPK   C:U4    8             `O org/bouncycastle/math/ec/rfc8032/Ed448$PointAffine.classPK   C:UۂB  @  <             9bO org/bouncycastle/math/ec/rfc8032/Ed448$PointProjective.classPK   C:U8!  I  ,             cO org/bouncycastle/math/ec/rfc8032/Ed448.classPK
 
    D:U                         5O org/bouncycastle/math/ec/tools/PK   C:U:T   (  :             rO org/bouncycastle/math/ec/tools/DiscoverEndomorphisms.classPK   C:U;$̠A  \
  5             ژO org/bouncycastle/math/ec/tools/F2mSqrtOptimizer.classPK   C:UI8    3             ~O org/bouncycastle/math/ec/tools/TraceOptimizer.classPK
 
    D:U                         nO org/bouncycastle/math/field/PK   C:U2
      0             O org/bouncycastle/math/field/ExtensionField.classPK   C:UnP!      -             O org/bouncycastle/math/field/FiniteField.classPK   C:U    .             O org/bouncycastle/math/field/FiniteFields.classPK   C:U1Ԡ    /             O org/bouncycastle/math/field/GF2Polynomial.classPK   C:U=Yg    A             O org/bouncycastle/math/field/GenericPolynomialExtensionField.classPK   C:UXB      ,             O org/bouncycastle/math/field/Polynomial.classPK   C:U,      :             ƱO org/bouncycastle/math/field/PolynomialExtensionField.classPK   C:U<  u  ,             O org/bouncycastle/math/field/PrimeField.classPK
 
    D:U                         O org/bouncycastle/math/raw/PK   C:UE  r  $             ڴO org/bouncycastle/math/raw/Bits.classPK   C:UL Y  1  *             AO org/bouncycastle/math/raw/Interleave.classPK   C:Uq>

    #             O org/bouncycastle/math/raw/Mod.classPK   C:U#g  !  '             MO org/bouncycastle/math/raw/Mont256.classPK   C:UpLo  B4  #             	O org/bouncycastle/math/raw/Nat.classPK   C:UG	˅
  |"  &             O org/bouncycastle/math/raw/Nat128.classPK   C:U
  #  &             O org/bouncycastle/math/raw/Nat160.classPK   C:UU  4+  &             O org/bouncycastle/math/raw/Nat192.classPK   C:U(StT
  1  &             P org/bouncycastle/math/raw/Nat224.classPK   C:UCr  C;  &             <P org/bouncycastle/math/raw/Nat256.classPK   C:Ug:m    &             ;-P org/bouncycastle/math/raw/Nat320.classPK   C:U
BI    &             0P org/bouncycastle/math/raw/Nat384.classPK   C:Uq  \  &             C3P org/bouncycastle/math/raw/Nat448.classPK   C:U~yI    &             N8P org/bouncycastle/math/raw/Nat512.classPK   C:UP{q7  V  &             :P org/bouncycastle/math/raw/Nat576.classPK
 
    D:U                         v>P org/bouncycastle/pqc/PK
 
    D:U                         >P org/bouncycastle/pqc/asn1/PK   C:U
;  
  .             >P org/bouncycastle/pqc/asn1/CMCEPrivateKey.classPK   C:U2-_  &  -             CP org/bouncycastle/pqc/asn1/CMCEPublicKey.classPK   C:URd  *  .             FP org/bouncycastle/pqc/asn1/GMSSPrivateKey.classPK   C:UyU  M  -             \SP org/bouncycastle/pqc/asn1/GMSSPublicKey.classPK   C:UvN'  
  6             WP org/bouncycastle/pqc/asn1/McElieceCCA2PrivateKey.classPK   C:U<f  =  5             [P org/bouncycastle/pqc/asn1/McElieceCCA2PublicKey.classPK   C:UM,  F  2             `_P org/bouncycastle/pqc/asn1/McEliecePrivateKey.classPK   C:U//	    1             cP org/bouncycastle/pqc/asn1/McEliecePublicKey.classPK   C:U/    4             TgP org/bouncycastle/pqc/asn1/PQCObjectIdentifiers.classPK   C:U¦w  	  &             lP org/bouncycastle/pqc/asn1/ParSet.classPK   C:U|  u  1             qP org/bouncycastle/pqc/asn1/RainbowPrivateKey.classPK   C:UC}  l
  0             myP org/bouncycastle/pqc/asn1/RainbowPublicKey.classPK   C:UR  	  /             x~P org/bouncycastle/pqc/asn1/SABERPrivateKey.classPK   C:U&]$ }  m  .             P org/bouncycastle/pqc/asn1/SABERPublicKey.classPK   C:UM=    3             ƅP org/bouncycastle/pqc/asn1/SPHINCS256KeyParams.classPK   C:U!1  |  -             P org/bouncycastle/pqc/asn1/XMSSKeyParams.classPK   C:UHYa    /             ɋP org/bouncycastle/pqc/asn1/XMSSMTKeyParams.classPK   C:Un>3  B
  0             P org/bouncycastle/pqc/asn1/XMSSMTPrivateKey.classPK   C:Uo$    /             -P org/bouncycastle/pqc/asn1/XMSSMTPublicKey.classPK   C:UY?  
  .             P org/bouncycastle/pqc/asn1/XMSSPrivateKey.classPK   C:U"    -             P org/bouncycastle/pqc/asn1/XMSSPublicKey.classPK
 
    D:U                         P org/bouncycastle/pqc/crypto/PK   C:U֥    8             RP org/bouncycastle/pqc/crypto/DigestingMessageSigner.classPK   C:Um$    B             CP org/bouncycastle/pqc/crypto/DigestingStateAwareMessageSigner.classPK   C:U#N  @  .             קP org/bouncycastle/pqc/crypto/ExchangePair.classPK   C:U      7             P org/bouncycastle/pqc/crypto/ExchangePairGenerator.classPK   C:U9a      >             P org/bouncycastle/pqc/crypto/ExhaustedPrivateKeyException.classPK   C:U
._   *  2             P org/bouncycastle/pqc/crypto/MessageEncryptor.classPK   C:U搴      /             ĬP org/bouncycastle/pqc/crypto/MessageSigner.classPK   C:U1      9             խP org/bouncycastle/pqc/crypto/StateAwareMessageSigner.classPK
 
    D:U            !             P org/bouncycastle/pqc/crypto/bike/PK   C:U  "  1             (P org/bouncycastle/pqc/crypto/bike/BIKEEngine.classPK   C:Uэ    7             P org/bouncycastle/pqc/crypto/bike/BIKEKEMExtractor.classPK   C:U]yZd    7             P org/bouncycastle/pqc/crypto/bike/BIKEKEMGenerator.classPK   C:Uꓥ     B             QP org/bouncycastle/pqc/crypto/bike/BIKEKeyGenerationParameters.classPK   C:U1V
6  ]  ;             P org/bouncycastle/pqc/crypto/bike/BIKEKeyPairGenerator.classPK   C:U
kw     8             _P org/bouncycastle/pqc/crypto/bike/BIKEKeyParameters.classPK   C:Up    5             P org/bouncycastle/pqc/crypto/bike/BIKEParameters.classPK   C:UW v    ?             P org/bouncycastle/pqc/crypto/bike/BIKEPrivateKeyParameters.classPK   C:U.R    >             P org/bouncycastle/pqc/crypto/bike/BIKEPublicKeyParameters.classPK   C:U_  P  :             ;P org/bouncycastle/pqc/crypto/bike/BIKERandomGenerator.classPK   C:U+/    ,             FP org/bouncycastle/pqc/crypto/bike/Utils.classPK
 
    D:U            !             `P org/bouncycastle/pqc/crypto/cmce/PK   C:UC  x  ,             P org/bouncycastle/pqc/crypto/cmce/BENES.classPK   C:UtO    .             P org/bouncycastle/pqc/crypto/cmce/BENES12.classPK   C:U?&  g  .             P org/bouncycastle/pqc/crypto/cmce/BENES13.classPK   C:UgOd  kC  1             |P org/bouncycastle/pqc/crypto/cmce/CMCEEngine.classPK   C:U(ڟ    7             ? Q org/bouncycastle/pqc/crypto/cmce/CMCEKEMExtractor.classPK   C:Ukn˞T    7             CQ org/bouncycastle/pqc/crypto/cmce/CMCEKEMGenerator.classPK   C:Ue[bu     B             Q org/bouncycastle/pqc/crypto/cmce/CMCEKeyGenerationParameters.classPK   C:Uax  Q  ;             iQ org/bouncycastle/pqc/crypto/cmce/CMCEKeyPairGenerator.classPK   C:Ua     8             
Q org/bouncycastle/pqc/crypto/cmce/CMCEKeyParameters.classPK   C:U̺    5             Q org/bouncycastle/pqc/crypto/cmce/CMCEParameters.classPK   C:Up  &  ?             [Q org/bouncycastle/pqc/crypto/cmce/CMCEPrivateKeyParameters.classPK   C:U3&)    >             Q org/bouncycastle/pqc/crypto/cmce/CMCEPublicKeyParameters.classPK   C:U4r()    )              Q org/bouncycastle/pqc/crypto/cmce/GF.classPK   C:U"]  6  +             Q org/bouncycastle/pqc/crypto/cmce/GF12.classPK   C:UƔc    +             Q org/bouncycastle/pqc/crypto/cmce/GF13.classPK   C:U2"  Y  ,             Q org/bouncycastle/pqc/crypto/cmce/Utils.classPK
 
    D:U            %             Q org/bouncycastle/pqc/crypto/crystals/PK
 
    D:U            /             ZQ org/bouncycastle/pqc/crypto/crystals/dilithium/PK   C:US]
  %  D             Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumEngine.classPK   C:UM 	  G  U             v-Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyGenerationParameters.classPK   C:U,܎  v  N             /Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyPairGenerator.classPK   C:UoY   	  K             2Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumKeyParameters.classPK   C:U  g  H             }3Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumParameters.classPK   C:U    R             
6Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPrivateKeyParameters.classPK   C:UIj  b  Q             8Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumPublicKeyParameters.classPK   C:Uv~    D             :Q org/bouncycastle/pqc/crypto/crystals/dilithium/DilithiumSigner.classPK   C:UɌ	  d  8             >Q org/bouncycastle/pqc/crypto/crystals/dilithium/Ntt.classPK   C:UFwl  F  <             4HQ org/bouncycastle/pqc/crypto/crystals/dilithium/Packing.classPK   C:U  +  9             
NQ org/bouncycastle/pqc/crypto/crystals/dilithium/Poly.classPK   C:U  )  =             Y_Q org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecK.classPK   C:U;*>8  ;  =             eQ org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecL.classPK   C:U7-s    B             dkQ org/bouncycastle/pqc/crypto/crystals/dilithium/PolyVecMatrix.classPK   C:U/    ;             GoQ org/bouncycastle/pqc/crypto/crystals/dilithium/Reduce.classPK   C:Uâ    =             pQ org/bouncycastle/pqc/crypto/crystals/dilithium/Rounding.classPK   C:Uըr    K             sQ org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$AesSymmetric.classPK   C:U b    M             vQ org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric$ShakeSymmetric.classPK   C:U]pkQ  u  >             PyQ org/bouncycastle/pqc/crypto/crystals/dilithium/Symmetric.classPK
 
    D:U            +             
{Q org/bouncycastle/pqc/crypto/crystals/kyber/PK   C:Uϕ<    4             V{Q org/bouncycastle/pqc/crypto/crystals/kyber/CBD.classPK   C:UX\%  z  <             }Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberEngine.classPK   C:U{D
	    <             2Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberIndCpa.classPK   C:UӁ]C    B             Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberKEMExtractor.classPK   C:Uw "  /  B             -Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberKEMGenerator.classPK   C:UK  '  M             Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyGenerationParameters.classPK   C:U  7  F             Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyPairGenerator.classPK   C:UmCP     C              Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberKeyParameters.classPK   C:U$2<  t  @             Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberParameters.classPK   C:U]/    J             -Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberPrivateKeyParameters.classPK   C:U4D8?  v  I             Q org/bouncycastle/pqc/crypto/crystals/kyber/KyberPublicKeyParameters.classPK   C:U=  p  4             Q org/bouncycastle/pqc/crypto/crystals/kyber/Ntt.classPK   C:Um  /  5             OQ org/bouncycastle/pqc/crypto/crystals/kyber/Poly.classPK   C:U%    8             yQ org/bouncycastle/pqc/crypto/crystals/kyber/PolyVec.classPK   C:UN'U>    7             ȺQ org/bouncycastle/pqc/crypto/crystals/kyber/Reduce.classPK   C:UT[    G             kQ org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$AesSymmetric.classPK   C:UQȫ     I             uQ org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric$ShakeSymmetric.classPK   C:UP  Q  :             Q org/bouncycastle/pqc/crypto/crystals/kyber/Symmetric.classPK
 
    D:U            #             OQ org/bouncycastle/pqc/crypto/falcon/PK   C:U   u  =             Q org/bouncycastle/pqc/crypto/falcon/ComplexNumberWrapper.classPK   C:UE<    2             Q org/bouncycastle/pqc/crypto/falcon/FPREngine.classPK   C:U4VU    4             R org/bouncycastle/pqc/crypto/falcon/FalconCodec.classPK   C:UAI  9  5             }	R org/bouncycastle/pqc/crypto/falcon/FalconCommon.classPK   C:UW(W    :             R org/bouncycastle/pqc/crypto/falcon/FalconConversions.classPK   C:U#	    2             pR org/bouncycastle/pqc/crypto/falcon/FalconFFT.classPK   C:UVP      2             R org/bouncycastle/pqc/crypto/falcon/FalconFPR.classPK   C:UG/8  O  5             R org/bouncycastle/pqc/crypto/falcon/FalconKeyGen.classPK   C:USZh@     F             TR org/bouncycastle/pqc/crypto/falcon/FalconKeyGenerationParameters.classPK   C:U<R    ?             VR org/bouncycastle/pqc/crypto/falcon/FalconKeyPairGenerator.classPK   C:U;     <             YR org/bouncycastle/pqc/crypto/falcon/FalconKeyParameters.classPK   C:U_@:    3             [R org/bouncycastle/pqc/crypto/falcon/FalconNIST.classPK   C:U+    9             WcR org/bouncycastle/pqc/crypto/falcon/FalconParameters.classPK   C:U"	A  '  C             eR org/bouncycastle/pqc/crypto/falcon/FalconPrivateKeyParameters.classPK   C:Uy    B             gR org/bouncycastle/pqc/crypto/falcon/FalconPublicKeyParameters.classPK   C:UJP8p  	  2             kiR org/bouncycastle/pqc/crypto/falcon/FalconRNG.classPK   C:UQP  H.  3             ;oR org/bouncycastle/pqc/crypto/falcon/FalconSign.classPK   C:U  %  5             }R org/bouncycastle/pqc/crypto/falcon/FalconSigner.classPK   C:UD     9             ݁R org/bouncycastle/pqc/crypto/falcon/FalconSmallPrime.classPK   C:U9_b-  EI  =             R org/bouncycastle/pqc/crypto/falcon/FalconSmallPrimeList.classPK   C:U
b-  &N  3             R org/bouncycastle/pqc/crypto/falcon/FalconVrfy.classPK   C:UꀤU	  
  1             R org/bouncycastle/pqc/crypto/falcon/SHAKE256.classPK   C:U     3             R org/bouncycastle/pqc/crypto/falcon/SamplerCtx.classPK   C:U^Bc    1             &R org/bouncycastle/pqc/crypto/falcon/SamplerZ.classPK
 
    D:U            "             R org/bouncycastle/pqc/crypto/frodo/PK   C:U{
  !  3             (R org/bouncycastle/pqc/crypto/frodo/FrodoEngine.classPK   C:Uc^,    9             ZR org/bouncycastle/pqc/crypto/frodo/FrodoKEMExtractor.classPK   C:U5;P  O  9              S org/bouncycastle/pqc/crypto/frodo/FrodoKEMGenerator.classPK   C:UＥ     D             \S org/bouncycastle/pqc/crypto/frodo/FrodoKeyGenerationParameters.classPK   C:U*y  f  =             S org/bouncycastle/pqc/crypto/frodo/FrodoKeyPairGenerator.classPK   C:Uo     :             S org/bouncycastle/pqc/crypto/frodo/FrodoKeyParameters.classPK   C:Uӡ]ȝ  q  R             f	S org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Aes128MatrixGenerator.classPK   C:U#
[    T             
S org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator$Shake128MatrixGenerator.classPK   C:U=R""    <             `S org/bouncycastle/pqc/crypto/frodo/FrodoMatrixGenerator.classPK   C:UY0  ~	  7             S org/bouncycastle/pqc/crypto/frodo/FrodoParameters.classPK   C:UɔP    A             S org/bouncycastle/pqc/crypto/frodo/FrodoPrivateKeyParameters.classPK   C:Upb'    @             S org/bouncycastle/pqc/crypto/frodo/FrodoPublicKeyParameters.classPK
 
    D:U                          S org/bouncycastle/pqc/crypto/hqc/PK   C:U>f]5Z    :             S org/bouncycastle/pqc/crypto/hqc/FastFourierTransform.classPK   C:Uŝ)	  @  2              S org/bouncycastle/pqc/crypto/hqc/GFCalculator.classPK   C:U5    /             )*S org/bouncycastle/pqc/crypto/hqc/HQCEngine.classPK   C:UTe  7  5             6S org/bouncycastle/pqc/crypto/hqc/HQCKEMExtractor.classPK   C:U0˖  6  5             U9S org/bouncycastle/pqc/crypto/hqc/HQCKEMGenerator.classPK   C:U%t	  I  >             N<S org/bouncycastle/pqc/crypto/hqc/HQCKeccakRandomGenerator.classPK   C:U     @             FS org/bouncycastle/pqc/crypto/hqc/HQCKeyGenerationParameters.classPK   C:UDh=  K  9             GS org/bouncycastle/pqc/crypto/hqc/HQCKeyPairGenerator.classPK   C:UZ      6             KS org/bouncycastle/pqc/crypto/hqc/HQCKeyParameters.classPK   C:Uы!  
  3             LS org/bouncycastle/pqc/crypto/hqc/HQCParameters.classPK   C:U4{    =             RS org/bouncycastle/pqc/crypto/hqc/HQCPrivateKeyParameters.classPK   C:U&    <             bTS org/bouncycastle/pqc/crypto/hqc/HQCPublicKeyParameters.classPK   C:U׼a   I  9             US org/bouncycastle/pqc/crypto/hqc/ReedMuller$Codeword.classPK   C:U/ii  	  0             FWS org/bouncycastle/pqc/crypto/hqc/ReedMuller.classPK   C:U>ZXK    1             
]S org/bouncycastle/pqc/crypto/hqc/ReedSolomon.classPK   C:UJ}  	  +             ĨS org/bouncycastle/pqc/crypto/hqc/Utils.classPK
 
    D:U                          S org/bouncycastle/pqc/crypto/lms/PK   C:UG  P	  .             خS org/bouncycastle/pqc/crypto/lms/Composer.classPK   C:U'߂  	  0             0S org/bouncycastle/pqc/crypto/lms/DigestUtil.classPK   C:U9`    B             S org/bouncycastle/pqc/crypto/lms/HSS$PlaceholderLMSPrivateKey.classPK   C:U    )             \S org/bouncycastle/pqc/crypto/lms/HSS.classPK   C:U'z    @             S org/bouncycastle/pqc/crypto/lms/HSSKeyGenerationParameters.classPK   C:UY	  _  9             S org/bouncycastle/pqc/crypto/lms/HSSKeyPairGenerator.classPK   C:UPԡ  i+  =             S org/bouncycastle/pqc/crypto/lms/HSSPrivateKeyParameters.classPK   C:UHwd  v  <             S org/bouncycastle/pqc/crypto/lms/HSSPublicKeyParameters.classPK   C:Uf    2             S org/bouncycastle/pqc/crypto/lms/HSSSignature.classPK   C:U}n    /             S org/bouncycastle/pqc/crypto/lms/HSSSigner.classPK   C:U>8H  A  7             CS org/bouncycastle/pqc/crypto/lms/LMOtsParameters$1.classPK   C:UfLi  e  5             LS org/bouncycastle/pqc/crypto/lms/LMOtsParameters.classPK   C:UY  |  5             S org/bouncycastle/pqc/crypto/lms/LMOtsPrivateKey.classPK   C:UdB\  %  4             S org/bouncycastle/pqc/crypto/lms/LMOtsPublicKey.classPK   C:U3  	  4             >S org/bouncycastle/pqc/crypto/lms/LMOtsSignature.classPK   C:U@    )             wS org/bouncycastle/pqc/crypto/lms/LMS.classPK   C:UTT    0             T org/bouncycastle/pqc/crypto/lms/LMSContext.classPK   C:U'߫   )  ;             aT org/bouncycastle/pqc/crypto/lms/LMSContextBasedSigner.classPK   C:UHN      =             }T org/bouncycastle/pqc/crypto/lms/LMSContextBasedVerifier.classPK   C:USr	    2             	T org/bouncycastle/pqc/crypto/lms/LMSException.classPK   C:Uϱ*  |  @             
T org/bouncycastle/pqc/crypto/lms/LMSKeyGenerationParameters.classPK   C:U*N  L  9             T org/bouncycastle/pqc/crypto/lms/LMSKeyPairGenerator.classPK   C:U   =  6             :T org/bouncycastle/pqc/crypto/lms/LMSKeyParameters.classPK   C:Ue    3             T org/bouncycastle/pqc/crypto/lms/LMSParameters.classPK   C:Un#j  \  F             T org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters$CacheKey.classPK   C:U*  "  =             T org/bouncycastle/pqc/crypto/lms/LMSPrivateKeyParameters.classPK   C:U@!@    <             m"T org/bouncycastle/pqc/crypto/lms/LMSPublicKeyParameters.classPK   C:UD6    2             *T org/bouncycastle/pqc/crypto/lms/LMSSignature.classPK   C:UW+    5             0T org/bouncycastle/pqc/crypto/lms/LMSSignedPubKey.classPK   C:U    /             3T org/bouncycastle/pqc/crypto/lms/LMSSigner.classPK   C:U2ʹ    7             6T org/bouncycastle/pqc/crypto/lms/LMSigParameters$1.classPK   C:UJ]    5             9T org/bouncycastle/pqc/crypto/lms/LMSigParameters.classPK   C:U$$F
  
  ,             `<T org/bouncycastle/pqc/crypto/lms/LM_OTS.classPK   C:Uy\)  I  .             FT org/bouncycastle/pqc/crypto/lms/LmsUtils.classPK   C:U͋    0             CIT org/bouncycastle/pqc/crypto/lms/SeedDerive.classPK
 
    D:U            $             SLT org/bouncycastle/pqc/crypto/newhope/PK   C:UQd  ^  2             LT org/bouncycastle/pqc/crypto/newhope/ChaCha20.classPK   C:U$GĖ    9             YNT org/bouncycastle/pqc/crypto/newhope/ErrorCorrection.classPK   C:UpU9my    5             VRT org/bouncycastle/pqc/crypto/newhope/NHAgreement.classPK   C:Us    A             2TT org/bouncycastle/pqc/crypto/newhope/NHExchangePairGenerator.classPK   C:U?PΞ  ?  <             jVT org/bouncycastle/pqc/crypto/newhope/NHKeyPairGenerator.classPK   C:UѼ  	  E             XT org/bouncycastle/pqc/crypto/newhope/NHOtherInfoGenerator$PartyU.classPK   C:U=r?  -  E             \T org/bouncycastle/pqc/crypto/newhope/NHOtherInfoGenerator$PartyV.classPK   C:UUA    >             \`T org/bouncycastle/pqc/crypto/newhope/NHOtherInfoGenerator.classPK   C:UL  x  @             	dT org/bouncycastle/pqc/crypto/newhope/NHPrivateKeyParameters.classPK   C:U[
  w  ?             eT org/bouncycastle/pqc/crypto/newhope/NHPublicKeyParameters.classPK   C:Uf      @              gT org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor$1.classPK   C:Uw    L             hT org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor$PartyUBuilder.classPK   C:U-E    L             lT org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor$PartyVBuilder.classPK   C:UmS~X  a  >             oT org/bouncycastle/pqc/crypto/newhope/NHSecretKeyProcessor.classPK   C:UVW
  ~"  -             LrT org/bouncycastle/pqc/crypto/newhope/NTT.classPK   C:UR  R  1             T org/bouncycastle/pqc/crypto/newhope/NewHope.classPK   C:Us!   a  0             T org/bouncycastle/pqc/crypto/newhope/Params.classPK   C:U:
  R  .             T org/bouncycastle/pqc/crypto/newhope/Poly.classPK   C:UF!o/  P_  1             FT org/bouncycastle/pqc/crypto/newhope/Precomp.classPK   C:Uf"4    0             T org/bouncycastle/pqc/crypto/newhope/Reduce.classPK
 
    D:U            !             T org/bouncycastle/pqc/crypto/ntru/PK   C:UY  
  7             T org/bouncycastle/pqc/crypto/ntru/NTRUKEMExtractor.classPK   C:U    7             :T org/bouncycastle/pqc/crypto/ntru/NTRUKEMGenerator.classPK   C:U7P     B             T org/bouncycastle/pqc/crypto/ntru/NTRUKeyGenerationParameters.classPK   C:Ut4  Y  ;             T org/bouncycastle/pqc/crypto/ntru/NTRUKeyPairGenerator.classPK   C:UC     8             T org/bouncycastle/pqc/crypto/ntru/NTRUKeyParameters.classPK   C:U!9  V  0             T org/bouncycastle/pqc/crypto/ntru/NTRUOWCPA.classPK   C:UA9/    5             T org/bouncycastle/pqc/crypto/ntru/NTRUParameters.classPK   C:UF*    ?             T org/bouncycastle/pqc/crypto/ntru/NTRUPrivateKeyParameters.classPK   C:Uہ`)    >             T org/bouncycastle/pqc/crypto/ntru/NTRUPublicKeyParameters.classPK   C:U$  a  3             JT org/bouncycastle/pqc/crypto/ntru/NTRUSampling.classPK   C:U@X      9             T org/bouncycastle/pqc/crypto/ntru/OWCPADecryptResult.classPK   C:UDAI      3             	T org/bouncycastle/pqc/crypto/ntru/OWCPAKeyPair.classPK   C:U9    5             :T org/bouncycastle/pqc/crypto/ntru/PolynomialPair.classPK
 
    D:U            &             T org/bouncycastle/pqc/crypto/ntruprime/PK   C:U`T;x  
  B             T org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKEMExtractor.classPK   C:U+Gcz    B             T org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKEMGenerator.classPK   C:U@m  :  M             T org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyGenerationParameters.classPK   C:U,  4	  F             T org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyPairGenerator.classPK   C:U3ʄ     C             T org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeKeyParameters.classPK   C:U\8    @             5T org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimeParameters.classPK   C:UE    J             pT org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePrivateKeyParameters.classPK   C:UL=#  ^  I             T org/bouncycastle/pqc/crypto/ntruprime/NTRULPRimePublicKeyParameters.classPK   C:U{ra  `	  B             nT org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKEMExtractor.classPK   C:U    B             U org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKEMGenerator.classPK   C:USj  8  M             U org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyGenerationParameters.classPK   C:U]  	  F             
U org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyPairGenerator.classPK   C:UI1     C             U org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeKeyParameters.classPK   C:Uf"  .  @             kU org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimeParameters.classPK   C:Um4    J             U org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePrivateKeyParameters.classPK   C:UB(  (  I             U org/bouncycastle/pqc/crypto/ntruprime/SNTRUPrimePublicKeyParameters.classPK   C:U=x  V#  1             FU org/bouncycastle/pqc/crypto/ntruprime/Utils.classPK
 
    D:U            #             $*U org/bouncycastle/pqc/crypto/picnic/PK   C:UTkJ    2             e*U org/bouncycastle/pqc/crypto/picnic/KMatrices.classPK   C:U҈q*7    =             ,U org/bouncycastle/pqc/crypto/picnic/KMatricesWithPointer.classPK   C:U ]	  x  7             -U org/bouncycastle/pqc/crypto/picnic/LowmcConstants.classPK   C:UTP    ,             s7U org/bouncycastle/pqc/crypto/picnic/Msg.classPK   C:U)y(2  Qu  5             8U org/bouncycastle/pqc/crypto/picnic/PicnicEngine.classPK   C:Ud0   
  F             kU org/bouncycastle/pqc/crypto/picnic/PicnicKeyGenerationParameters.classPK   C:Ugh  ]  ?             pmU org/bouncycastle/pqc/crypto/picnic/PicnicKeyPairGenerator.classPK   C:U.     <             EpU org/bouncycastle/pqc/crypto/picnic/PicnicKeyParameters.classPK   C:UQN    9             qU org/bouncycastle/pqc/crypto/picnic/PicnicParameters.classPK   C:Uɽl    C             PtU org/bouncycastle/pqc/crypto/picnic/PicnicPrivateKeyParameters.classPK   C:U}`7    B             uU org/bouncycastle/pqc/crypto/picnic/PicnicPublicKeyParameters.classPK   C:U|;M  m  5             RwU org/bouncycastle/pqc/crypto/picnic/PicnicSigner.classPK   C:Uؿ  0  8             zU org/bouncycastle/pqc/crypto/picnic/Signature$Proof.classPK   C:UB     2             
}U org/bouncycastle/pqc/crypto/picnic/Signature.classPK   C:UC    :             U org/bouncycastle/pqc/crypto/picnic/Signature2$Proof2.classPK   C:U,_    3             U org/bouncycastle/pqc/crypto/picnic/Signature2.classPK   C:U{  	  -             U org/bouncycastle/pqc/crypto/picnic/Tape.classPK   C:U;8ƌn  f  -             UU org/bouncycastle/pqc/crypto/picnic/Tree.classPK   C:Uq<[  b  .             U org/bouncycastle/pqc/crypto/picnic/Utils.classPK   C:UЍ4{'    -             U org/bouncycastle/pqc/crypto/picnic/View.classPK   C:Ue~GY 7 3             U org/bouncycastle/pqc/crypto/picnic/lowmc.propertiesPK
 
    D:U            "             m org/bouncycastle/pqc/crypto/saber/PK   C:UjX.
    ,             ʏm org/bouncycastle/pqc/crypto/saber/Poly.classPK   C:Uk,	  	  3             Rm org/bouncycastle/pqc/crypto/saber/SABEREngine.classPK   C:UvZ    9             m org/bouncycastle/pqc/crypto/saber/SABERKEMExtractor.classPK   C:U@&  W  9             4m org/bouncycastle/pqc/crypto/saber/SABERKEMGenerator.classPK   C:UYI     D             m org/bouncycastle/pqc/crypto/saber/SABERKeyGenerationParameters.classPK   C:Uk,    =             3m org/bouncycastle/pqc/crypto/saber/SABERKeyPairGenerator.classPK   C:UMp
     :             Um org/bouncycastle/pqc/crypto/saber/SABERKeyParameters.classPK   C:UYf}  c  7             m org/bouncycastle/pqc/crypto/saber/SABERParameters.classPK   C:UuKs    A             m org/bouncycastle/pqc/crypto/saber/SABERPrivateKeyParameters.classPK   C:UӢ-+    @             m org/bouncycastle/pqc/crypto/saber/SABERPublicKeyParameters.classPK   C:Ut    -             m org/bouncycastle/pqc/crypto/saber/Utils.classPK
 
    D:U            !             m org/bouncycastle/pqc/crypto/sike/PK   C:U
  Ra  *             0m org/bouncycastle/pqc/crypto/sike/Fpx.classPK   C:U\    /             m org/bouncycastle/pqc/crypto/sike/Internal.classPK   C:U  c*  .             m org/bouncycastle/pqc/crypto/sike/Isogeny.classPK   C:Uд%    +             !m org/bouncycastle/pqc/crypto/sike/P434.classPK   C:U͟O{  "!  +             m org/bouncycastle/pqc/crypto/sike/P503.classPK   C:U'-^+s  ~$  +             sn org/bouncycastle/pqc/crypto/sike/P610.classPK   C:UW	Y  (  +             ?'n org/bouncycastle/pqc/crypto/sike/P751.classPK   C:Un
      0             ^>n org/bouncycastle/pqc/crypto/sike/PointProj.classPK   C:Uk     4             ?n org/bouncycastle/pqc/crypto/sike/PointProjFull.classPK   C:U-  v  +             @n org/bouncycastle/pqc/crypto/sike/SIDH.classPK   C:UH*1  I  6             Jn org/bouncycastle/pqc/crypto/sike/SIDH_Compressed.classPK   C:Ux    1             |n org/bouncycastle/pqc/crypto/sike/SIKEEngine.classPK   C:U\p    7             ۃn org/bouncycastle/pqc/crypto/sike/SIKEKEMExtractor.classPK   C:UR^Yy    7             n org/bouncycastle/pqc/crypto/sike/SIKEKEMGenerator.classPK   C:U'm     B             n org/bouncycastle/pqc/crypto/sike/SIKEKeyGenerationParameters.classPK   C:UY}  U	  ;             n org/bouncycastle/pqc/crypto/sike/SIKEKeyPairGenerator.classPK   C:U     8             (n org/bouncycastle/pqc/crypto/sike/SIKEKeyParameters.classPK   C:U~F    5             {n org/bouncycastle/pqc/crypto/sike/SIKEParameters.classPK   C:U    ?             $n org/bouncycastle/pqc/crypto/sike/SIKEPrivateKeyParameters.classPK   C:Ut+    >             n org/bouncycastle/pqc/crypto/sike/SIKEPublicKeyParameters.classPK   C:UsD !
 0             Fn org/bouncycastle/pqc/crypto/sike/p434.propertiesPK   C:UZGK ׭ 0             )Xt org/bouncycastle/pqc/crypto/sike/p503.propertiesPK   C:ULr	 5 0             &{ org/bouncycastle/pqc/crypto/sike/p610.propertiesPK   C:UGc% ՙ 0              org/bouncycastle/pqc/crypto/sike/p751.propertiesPK
 
    D:U            $             Ǖ org/bouncycastle/pqc/crypto/sphincs/PK   C:Ud1K    7             Ǖ org/bouncycastle/pqc/crypto/sphincs/HashFunctions.classPK   C:UdVz  `	  /             {˕ org/bouncycastle/pqc/crypto/sphincs/Horst.classPK   C:U^k!S    1             RЕ org/bouncycastle/pqc/crypto/sphincs/Permute.classPK   C:UO}"a  Z  :             Iԕ org/bouncycastle/pqc/crypto/sphincs/SPHINCS256Config.classPK   C:U%    K             ֕ org/bouncycastle/pqc/crypto/sphincs/SPHINCS256KeyGenerationParameters.classPK   C:UΪ9    D             ו org/bouncycastle/pqc/crypto/sphincs/SPHINCS256KeyPairGenerator.classPK   C:U>r{
    :             Dە org/bouncycastle/pqc/crypto/sphincs/SPHINCS256Signer.classPK   C:UM<    >             ' org/bouncycastle/pqc/crypto/sphincs/SPHINCSKeyParameters.classPK   C:U+    E              org/bouncycastle/pqc/crypto/sphincs/SPHINCSPrivateKeyParameters.classPK   C:Um*    D             m org/bouncycastle/pqc/crypto/sphincs/SPHINCSPublicKeyParameters.classPK   C:U|~  -  .             	 org/bouncycastle/pqc/crypto/sphincs/Seed.classPK   C:Ux    7             ( org/bouncycastle/pqc/crypto/sphincs/Tree$leafaddr.classPK   C:U*`b    .              org/bouncycastle/pqc/crypto/sphincs/Tree.classPK   C:U]Y    .             b org/bouncycastle/pqc/crypto/sphincs/Wots.classPK
 
    D:U            (              org/bouncycastle/pqc/crypto/sphincsplus/PK   C:U%k    2             ] org/bouncycastle/pqc/crypto/sphincsplus/ADRS.classPK   C:Uc>  k  2             ( org/bouncycastle/pqc/crypto/sphincsplus/Fors.classPK   C:U~o&  A  0             f org/bouncycastle/pqc/crypto/sphincsplus/HT.classPK   C:U!z    >              org/bouncycastle/pqc/crypto/sphincsplus/HarakaS256Digest.classPK   C:U    >              org/bouncycastle/pqc/crypto/sphincsplus/HarakaS512Digest.classPK   C:Uϵc    9             * org/bouncycastle/pqc/crypto/sphincsplus/HarakaSBase.classPK   C:U0_2    8             # org/bouncycastle/pqc/crypto/sphincsplus/HarakaSXof.classPK   C:UF   $  ;             ' org/bouncycastle/pqc/crypto/sphincsplus/IndexedDigest.classPK   C:U#      7             ( org/bouncycastle/pqc/crypto/sphincsplus/NodeEntry.classPK   C:US      0             !* org/bouncycastle/pqc/crypto/sphincsplus/PK.classPK   C:Ug$    1             E+ org/bouncycastle/pqc/crypto/sphincsplus/SIG.classPK   C:U5  Z  6             I. org/bouncycastle/pqc/crypto/sphincsplus/SIG_FORS.classPK   C:UeJd  \  6             / org/bouncycastle/pqc/crypto/sphincsplus/SIG_XMSS.classPK   C:URu      0             (1 org/bouncycastle/pqc/crypto/sphincsplus/SK.classPK   C:U!
	  7  M             K2 org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$HarakaSEngine.classPK   C:UŻ    J             7 org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Sha2Engine.classPK   C:Ub  t
  N             @ org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine$Shake256Engine.classPK   C:UM6eL    ?             RE org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngine.classPK   C:Uƹ\      G             I org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusEngineProvider.classPK   C:U	  5  P             J org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyGenerationParameters.classPK   C:U[;  R
  I             K org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyPairGenerator.classPK   C:UP     F             O org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusKeyParameters.classPK   C:UJY    Y             5Q org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$HarakaSEngineProvider.classPK   C:UNN    V             S org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Sha2EngineProvider.classPK   C:U)    Z             U org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters$Shake256EngineProvider.classPK   C:Ud
  "  C             3X org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusParameters.classPK   C:Ulb  2  M             c org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPrivateKeyParameters.classPK   C:Uc  S  L             sg org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusPublicKeyParameters.classPK   C:UJ    ?             j org/bouncycastle/pqc/crypto/sphincsplus/SPHINCSPlusSigner.classPK   C:UÞ2  
  6             q org/bouncycastle/pqc/crypto/sphincsplus/WotsPlus.classPK
 
    D:U            !             w org/bouncycastle/pqc/crypto/util/PK   C:UY%`  <  8             w org/bouncycastle/pqc/crypto/util/PrivateKeyFactory.classPK   C:UJw  P4  <              org/bouncycastle/pqc/crypto/util/PrivateKeyInfoFactory.classPK   C:U/      9             s org/bouncycastle/pqc/crypto/util/PublicKeyFactory$1.classPK   C:U}aPA  *  E             s org/bouncycastle/pqc/crypto/util/PublicKeyFactory$BIKEConverter.classPK   C:UEe8  -  E             g org/bouncycastle/pqc/crypto/util/PublicKeyFactory$CMCEConverter.classPK   C:UX'  @  J             [ org/bouncycastle/pqc/crypto/util/PublicKeyFactory$DilithiumConverter.classPK   C:U>3    G             祖 org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FalconConverter.classPK   C:UKc{/  3  F             
 org/bouncycastle/pqc/crypto/util/PublicKeyFactory$FrodoConverter.classPK   C:UF(  !  D              org/bouncycastle/pqc/crypto/util/PublicKeyFactory$HQCConverter.classPK   C:UN    F              org/bouncycastle/pqc/crypto/util/PublicKeyFactory$KyberConverter.classPK   C:U[d#  *  D             q org/bouncycastle/pqc/crypto/util/PublicKeyFactory$LMSConverter.classPK   C:UH>    M              org/bouncycastle/pqc/crypto/util/PublicKeyFactory$McElieceCCA2Converter.classPK   C:UC!  $  C              org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NHConverter.classPK   C:U(yI  ]  K              org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NTRULPrimeConverter.classPK   C:U  *  E              org/bouncycastle/pqc/crypto/util/PublicKeyFactory$NtruConverter.classPK   C:Uu`~  <  G             
 org/bouncycastle/pqc/crypto/util/PublicKeyFactory$PicnicConverter.classPK   C:UdռJ    G             Ė org/bouncycastle/pqc/crypto/util/PublicKeyFactory$QTeslaConverter.classPK   C:Ubzk˻    F             ǖ org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SABERConverter.classPK   C:UF
3  *  E             ʖ org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SIKEConverter.classPK   C:Uu  ]  K             ͖ org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SNTRUPrimeConverter.classPK   C:UJX  C  H             Ж org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSConverter.classPK   C:U
p  }  L             Ӗ org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SPHINCSPlusConverter.classPK   C:UM54R    U             "ז org/bouncycastle/pqc/crypto/util/PublicKeyFactory$SubjectPublicKeyInfoConverter.classPK   C:UP  H
  E             ؖ org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSConverter.classPK   C:Uh䇡  y
  G             Rݖ org/bouncycastle/pqc/crypto/util/PublicKeyFactory$XMSSMTConverter.classPK   C:Us^p4  #  7              org/bouncycastle/pqc/crypto/util/PublicKeyFactory.classPK   C:Uk  e  B             ] org/bouncycastle/pqc/crypto/util/SecretWithEncapsulationImpl.classPK   C:U@b
  f%  B             Z org/bouncycastle/pqc/crypto/util/SubjectPublicKeyInfoFactory.classPK   C:Ur*  C  ,              org/bouncycastle/pqc/crypto/util/Utils.classPK
 
    D:U            !              org/bouncycastle/pqc/crypto/xmss/PK   C:U:sCm  /  *              org/bouncycastle/pqc/crypto/xmss/BDS.classPK   C:U/hR  @  2             " org/bouncycastle/pqc/crypto/xmss/BDSStateMap.classPK   C:U
z    2             * org/bouncycastle/pqc/crypto/xmss/BDSTreeHash.classPK   C:UC  
  7             n2 org/bouncycastle/pqc/crypto/xmss/DefaultXMSSMTOid.classPK   C:UTA}    5             7 org/bouncycastle/pqc/crypto/xmss/DefaultXMSSOid.classPK   C:U:  	  1             ; org/bouncycastle/pqc/crypto/xmss/DigestUtil.classPK   C:Uӛ      8             E@ org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$1.classPK   C:UpH  e  >             FA org/bouncycastle/pqc/crypto/xmss/HashTreeAddress$Builder.classPK   C:U3W?    6             C org/bouncycastle/pqc/crypto/xmss/HashTreeAddress.classPK   C:Uq#0    9             AF org/bouncycastle/pqc/crypto/xmss/KeyedHashFunctions.classPK   C:U      5             I org/bouncycastle/pqc/crypto/xmss/LTreeAddress$1.classPK   C:UhFf	    ;             J org/bouncycastle/pqc/crypto/xmss/LTreeAddress$Builder.classPK   C:U(./  
  3             FM org/bouncycastle/pqc/crypto/xmss/LTreeAddress.classPK   C:UY      7             O org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$1.classPK   C:UuX    =             P org/bouncycastle/pqc/crypto/xmss/OTSHashAddress$Builder.classPK   C:U'?.    5             HS org/bouncycastle/pqc/crypto/xmss/OTSHashAddress.classPK   C:Ua    /             U org/bouncycastle/pqc/crypto/xmss/WOTSPlus.classPK   C:Uzx    2             :a org/bouncycastle/pqc/crypto/xmss/WOTSPlusOid.classPK   C:UV(    9             e org/bouncycastle/pqc/crypto/xmss/WOTSPlusParameters.classPK   C:U1)>    C             $i org/bouncycastle/pqc/crypto/xmss/WOTSPlusPrivateKeyParameters.classPK   C:UmM    B             k org/bouncycastle/pqc/crypto/xmss/WOTSPlusPublicKeyParameters.classPK   C:UKwI    8             n org/bouncycastle/pqc/crypto/xmss/WOTSPlusSignature.classPK   C:U4/    +             ?q org/bouncycastle/pqc/crypto/xmss/XMSS.classPK   C:U$:    :             zy org/bouncycastle/pqc/crypto/xmss/XMSSAddress$Builder.classPK   C:U<ଔ$  ?  2             { org/bouncycastle/pqc/crypto/xmss/XMSSAddress.classPK   C:Uc     B             ~ org/bouncycastle/pqc/crypto/xmss/XMSSKeyGenerationParameters.classPK   C:U`{,    ;              org/bouncycastle/pqc/crypto/xmss/XMSSKeyPairGenerator.classPK   C:U=H    8              org/bouncycastle/pqc/crypto/xmss/XMSSKeyParameters.classPK   C:U.L  U  -             2 org/bouncycastle/pqc/crypto/xmss/XMSSMT.classPK   C:U,5a    D             ٌ org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyGenerationParameters.classPK   C:U]o"  X  =             O org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyPairGenerator.classPK   C:Uyl   f  :             ܓ org/bouncycastle/pqc/crypto/xmss/XMSSMTKeyParameters.classPK   C:U/  5  7             ? org/bouncycastle/pqc/crypto/xmss/XMSSMTParameters.classPK   C:U,R      C             f org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$1.classPK   C:UN
    I             | org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters$Builder.classPK   C:UȬB  @  A             ͠ org/bouncycastle/pqc/crypto/xmss/XMSSMTPrivateKeyParameters.classPK   C:Us4       B             ? org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$1.classPK   C:U1  	  H             S org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters$Builder.classPK   C:Ulo    @             ᯗ org/bouncycastle/pqc/crypto/xmss/XMSSMTPublicKeyParameters.classPK   C:U| 2      8             ^ org/bouncycastle/pqc/crypto/xmss/XMSSMTSignature$1.classPK   C:UҔI0    >             _ org/bouncycastle/pqc/crypto/xmss/XMSSMTSignature$Builder.classPK   C:UvpM;  R  6              org/bouncycastle/pqc/crypto/xmss/XMSSMTSignature.classPK   C:UzexC  '  3              org/bouncycastle/pqc/crypto/xmss/XMSSMTSigner.classPK   C:Ul!b    /             ̗ org/bouncycastle/pqc/crypto/xmss/XMSSNode.classPK   C:U3h    3             JΗ org/bouncycastle/pqc/crypto/xmss/XMSSNodeUtil.classPK   C:U
5ڢ      .             ՗ org/bouncycastle/pqc/crypto/xmss/XMSSOid.classPK   C:U'  Z  5             ՗ org/bouncycastle/pqc/crypto/xmss/XMSSParameters.classPK   C:UF      A             1ܗ org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$1.classPK   C:U6s
  
  G             Cݗ org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters$Builder.classPK   C:UuRR  (  ?              org/bouncycastle/pqc/crypto/xmss/XMSSPrivateKeyParameters.classPK   C:U喆E      @              org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$1.classPK   C:UI,    F              org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters$Builder.classPK   C:U㌍
  s  >              org/bouncycastle/pqc/crypto/xmss/XMSSPublicKeyParameters.classPK   C:Uu;q  4  C              org/bouncycastle/pqc/crypto/xmss/XMSSReducedSignature$Builder.classPK   C:U@x1  &
  ;             y org/bouncycastle/pqc/crypto/xmss/XMSSReducedSignature.classPK   C:U      6             j org/bouncycastle/pqc/crypto/xmss/XMSSSignature$1.classPK   C:U>C˝  1	  <             h org/bouncycastle/pqc/crypto/xmss/XMSSSignature$Builder.classPK   C:UAs  
  4             o org/bouncycastle/pqc/crypto/xmss/XMSSSignature.classPK   C:Uy	  ,  1              org/bouncycastle/pqc/crypto/xmss/XMSSSigner.classPK   C:UF      C              org/bouncycastle/pqc/crypto/xmss/XMSSStoreableObjectInterface.classPK   C:UOl    >              org/bouncycastle/pqc/crypto/xmss/XMSSUtil$CheckingStream.classPK   C:UR	  &  /              org/bouncycastle/pqc/crypto/xmss/XMSSUtil.classPK   C:U oRUi    7             I  org/bouncycastle/pqc/crypto/xmss/XMSSVerifierUtil.classPK
 
    D:U                         & org/bouncycastle/pqc/jcajce/PK
 
    D:U            '             Q& org/bouncycastle/pqc/jcajce/interfaces/PK   C:UE8Q      4             & org/bouncycastle/pqc/jcajce/interfaces/BIKEKey.classPK   C:UΑq      4             ' org/bouncycastle/pqc/jcajce/interfaces/CMCEKey.classPK   C:U1      9             ( org/bouncycastle/pqc/jcajce/interfaces/DilithiumKey.classPK   C:Uhj      @             ) org/bouncycastle/pqc/jcajce/interfaces/DilithiumPrivateKey.classPK   C:UEFA      ?             * org/bouncycastle/pqc/jcajce/interfaces/DilithiumPublicKey.classPK   C:U
3      6             + org/bouncycastle/pqc/jcajce/interfaces/FalconKey.classPK   C:UտK     =             , org/bouncycastle/pqc/jcajce/interfaces/FalconPrivateKey.classPK   C:Uቍ      <             - org/bouncycastle/pqc/jcajce/interfaces/FalconPublicKey.classPK   C:UqJ      5             . org/bouncycastle/pqc/jcajce/interfaces/FrodoKey.classPK   C:UJi      3             / org/bouncycastle/pqc/jcajce/interfaces/HQCKey.classPK   C:US      5             0 org/bouncycastle/pqc/jcajce/interfaces/KyberKey.classPK   C:Ut[     <             1 org/bouncycastle/pqc/jcajce/interfaces/KyberPrivateKey.classPK   C:U[      ;             2 org/bouncycastle/pqc/jcajce/interfaces/KyberPublicKey.classPK   C:U;E)<      3             w3 org/bouncycastle/pqc/jcajce/interfaces/LMSKey.classPK   C:U5p:1   I  :             _4 org/bouncycastle/pqc/jcajce/interfaces/LMSPrivateKey.classPK   C:U*:p   y   2             5 org/bouncycastle/pqc/jcajce/interfaces/NHKey.classPK   C:U3ud      9             b6 org/bouncycastle/pqc/jcajce/interfaces/NHPrivateKey.classPK   C:UE4      8             g7 org/bouncycastle/pqc/jcajce/interfaces/NHPublicKey.classPK   C:UI<      4             h8 org/bouncycastle/pqc/jcajce/interfaces/NTRUKey.classPK   C:U+      :             d9 org/bouncycastle/pqc/jcajce/interfaces/NTRULPRimeKey.classPK   C:Uiʐ      6             Z: org/bouncycastle/pqc/jcajce/interfaces/PicnicKey.classPK   C:UXV      6             Y; org/bouncycastle/pqc/jcajce/interfaces/QTESLAKey.classPK   C:U[-      5             J< org/bouncycastle/pqc/jcajce/interfaces/SABERKey.classPK   C:U%E      4             I= org/bouncycastle/pqc/jcajce/interfaces/SIKEKey.classPK   C:Uu      :             E> org/bouncycastle/pqc/jcajce/interfaces/SNTRUPrimeKey.classPK   C:U+ Λ      7             :? org/bouncycastle/pqc/jcajce/interfaces/SPHINCSKey.classPK   C:UI=      ;             .@ org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusKey.classPK   C:UEۑ   &  B             9A org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPrivateKey.classPK   C:U#       A             SB org/bouncycastle/pqc/jcajce/interfaces/SPHINCSPlusPublicKey.classPK   C:U:  i  @             KC org/bouncycastle/pqc/jcajce/interfaces/StateAwareSignature.classPK   C:Uݑ      4             dE org/bouncycastle/pqc/jcajce/interfaces/XMSSKey.classPK   C:UU1ư      6             ]F org/bouncycastle/pqc/jcajce/interfaces/XMSSMTKey.classPK   C:UF2   R  =             cG org/bouncycastle/pqc/jcajce/interfaces/XMSSMTPrivateKey.classPK   C:U   L  ;             H org/bouncycastle/pqc/jcajce/interfaces/XMSSPrivateKey.classPK
 
    D:U            %             I org/bouncycastle/pqc/jcajce/provider/PK   C:UJ  d  8             J org/bouncycastle/pqc/jcajce/provider/BIKE$Mappings.classPK   C:Us   l  /             M org/bouncycastle/pqc/jcajce/provider/BIKE.classPK   C:U*u8C  P  D             xN org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$1.classPK   C:U:n0d    D             -P org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider$2.classPK   C:U,^
  _  B             ;R org/bouncycastle/pqc/jcajce/provider/BouncyCastlePQCProvider.classPK   C:Uf2    8             3] org/bouncycastle/pqc/jcajce/provider/CMCE$Mappings.classPK   C:UE"   l  /             ]` org/bouncycastle/pqc/jcajce/provider/CMCE.classPK   C:U}<    =             a org/bouncycastle/pqc/jcajce/provider/Dilithium$Mappings.classPK   C:U
7   {  4             d org/bouncycastle/pqc/jcajce/provider/Dilithium.classPK   C:U<    :             Jf org/bouncycastle/pqc/jcajce/provider/Falcon$Mappings.classPK   C:U   r  1             Ei org/bouncycastle/pqc/jcajce/provider/Falcon.classPK   C:Uujǭ    9             j org/bouncycastle/pqc/jcajce/provider/Frodo$Mappings.classPK   C:UO+   o  0             m org/bouncycastle/pqc/jcajce/provider/Frodo.classPK   C:Us  R  7             
o org/bouncycastle/pqc/jcajce/provider/HQC$Mappings.classPK   C:Uw   i  .             r org/bouncycastle/pqc/jcajce/provider/HQC.classPK   C:U
  v  9             gs org/bouncycastle/pqc/jcajce/provider/Kyber$Mappings.classPK   C:U"_   o  0             tv org/bouncycastle/pqc/jcajce/provider/Kyber.classPK   C:Uh  O  7             w org/bouncycastle/pqc/jcajce/provider/LMS$Mappings.classPK   C:Uj   i  .             z org/bouncycastle/pqc/jcajce/provider/LMS.classPK   C:U    <             { org/bouncycastle/pqc/jcajce/provider/McEliece$Mappings.classPK   C:U,-n   x  3             r org/bouncycastle/pqc/jcajce/provider/McEliece.classPK   C:UaO!    6             Ҁ org/bouncycastle/pqc/jcajce/provider/NH$Mappings.classPK   C:U'K   k  -             W org/bouncycastle/pqc/jcajce/provider/NH.classPK   C:U    8              org/bouncycastle/pqc/jcajce/provider/NTRU$Mappings.classPK   C:UySi9   l  /              org/bouncycastle/pqc/jcajce/provider/NTRU.classPK   C:U>  x
  =             Z org/bouncycastle/pqc/jcajce/provider/NTRUPrime$Mappings.classPK   C:Uk<  {  4              org/bouncycastle/pqc/jcajce/provider/NTRUPrime.classPK   C:Uqj  ,
  :             掘 org/bouncycastle/pqc/jcajce/provider/Picnic$Mappings.classPK   C:Uہ0   r  1             Ӓ org/bouncycastle/pqc/jcajce/provider/Picnic.classPK   C:U9{    :             - org/bouncycastle/pqc/jcajce/provider/QTESLA$Mappings.classPK   C:U9   r  1              org/bouncycastle/pqc/jcajce/provider/QTESLA.classPK   C:U+ܻ    ;             u org/bouncycastle/pqc/jcajce/provider/Rainbow$Mappings.classPK   C:UN   u  2              org/bouncycastle/pqc/jcajce/provider/Rainbow.classPK   C:U7  -  9              org/bouncycastle/pqc/jcajce/provider/SABER$Mappings.classPK   C:U#a   o  0              org/bouncycastle/pqc/jcajce/provider/SABER.classPK   C:U   d  8             z org/bouncycastle/pqc/jcajce/provider/SIKE$Mappings.classPK   C:U	[   l  /              org/bouncycastle/pqc/jcajce/provider/SIKE.classPK   C:U|^ڳ  j  ;             ݥ org/bouncycastle/pqc/jcajce/provider/SPHINCS$Mappings.classPK   C:U뿀  u  2              org/bouncycastle/pqc/jcajce/provider/SPHINCS.classPK   C:Ua    ?             Z org/bouncycastle/pqc/jcajce/provider/SPHINCSPlus$Mappings.classPK   C:Upc    6              org/bouncycastle/pqc/jcajce/provider/SPHINCSPlus.classPK   C:U  X  8              org/bouncycastle/pqc/jcajce/provider/XMSS$Mappings.classPK   C:U|   l  /              org/bouncycastle/pqc/jcajce/provider/XMSS.classPK
 
    D:U            *             鶘 org/bouncycastle/pqc/jcajce/provider/bike/PK   C:U\1   M  @             1 org/bouncycastle/pqc/jcajce/provider/bike/BCBIKEPrivateKey.classPK   C:UZa  
  ?             E org/bouncycastle/pqc/jcajce/provider/bike/BCBIKEPublicKey.classPK   C:U[
   c  B              org/bouncycastle/pqc/jcajce/provider/bike/BIKECipherSpi$Base.classPK   C:Uw#
    =              org/bouncycastle/pqc/jcajce/provider/bike/BIKECipherSpi.classPK   C:U?k  z  A             ͘ org/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyFactorySpi.classPK   C:ULM  
  C             Ҙ org/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyGeneratorSpi.classPK   C:U 9  
  G             ט org/bouncycastle/pqc/jcajce/provider/bike/BIKEKeyPairGeneratorSpi.classPK
 
    D:U            *             ݘ org/bouncycastle/pqc/jcajce/provider/cmce/PK   C:Uj7  M  @             .ޘ org/bouncycastle/pqc/jcajce/provider/cmce/BCCMCEPrivateKey.classPK   C:U ub  
  ?             D org/bouncycastle/pqc/jcajce/provider/cmce/BCCMCEPublicKey.classPK   C:U5@   c  B              org/bouncycastle/pqc/jcajce/provider/cmce/CMCECipherSpi$Base.classPK   C:U
    =             } org/bouncycastle/pqc/jcajce/provider/cmce/CMCECipherSpi.classPK   C:U[  z  A              org/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyFactorySpi.classPK   C:U#  
  C              org/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyGeneratorSpi.classPK   C:U,)Ͷ.  1  G              org/bouncycastle/pqc/jcajce/provider/cmce/CMCEKeyPairGeneratorSpi.classPK
 
    D:U            /              org/bouncycastle/pqc/jcajce/provider/dilithium/PK   C:U.  
  J              org/bouncycastle/pqc/jcajce/provider/dilithium/BCDilithiumPrivateKey.classPK   C:USw[  A  I             t org/bouncycastle/pqc/jcajce/provider/dilithium/BCDilithiumPublicKey.classPK   C:Uީ    K             F org/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyFactorySpi.classPK   C:UG9XM  v  Q             h org/bouncycastle/pqc/jcajce/provider/dilithium/DilithiumKeyPairGeneratorSpi.classPK   C:U+Д    F              org/bouncycastle/pqc/jcajce/provider/dilithium/SignatureSpi$Base.classPK   C:U)fE  b  A              org/bouncycastle/pqc/jcajce/provider/dilithium/SignatureSpi.classPK
 
    D:U            ,             J" org/bouncycastle/pqc/jcajce/provider/falcon/PK   C:U  
  D             " org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPrivateKey.classPK   C:UD{Y  
  C             ( org/bouncycastle/pqc/jcajce/provider/falcon/BCFalconPublicKey.classPK   C:U/!    E             , org/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyFactorySpi.classPK   C:UuX  
  K             1 org/bouncycastle/pqc/jcajce/provider/falcon/FalconKeyPairGeneratorSpi.classPK   C:U,
    C             7 org/bouncycastle/pqc/jcajce/provider/falcon/SignatureSpi$Base.classPK   C:U/wU  
  >             19 org/bouncycastle/pqc/jcajce/provider/falcon/SignatureSpi.classPK
 
    D:U            +             P> org/bouncycastle/pqc/jcajce/provider/frodo/PK   C:U#W  `  B             > org/bouncycastle/pqc/jcajce/provider/frodo/BCFrodoPrivateKey.classPK   C:UGDb  
  A             C org/bouncycastle/pqc/jcajce/provider/frodo/BCFrodoPublicKey.classPK   C:UI   h  D             H org/bouncycastle/pqc/jcajce/provider/frodo/FrodoCipherSpi$Base.classPK   C:Uj
    ?             I org/bouncycastle/pqc/jcajce/provider/frodo/FrodoCipherSpi.classPK   C:U=I    C             9U org/bouncycastle/pqc/jcajce/provider/frodo/FrodoKeyFactorySpi.classPK   C:U^  
  E             MZ org/bouncycastle/pqc/jcajce/provider/frodo/FrodoKeyGeneratorSpi.classPK   C:USp    I             l_ org/bouncycastle/pqc/jcajce/provider/frodo/FrodoKeyPairGeneratorSpi.classPK
 
    D:U            *             e org/bouncycastle/pqc/jcajce/provider/gmss/PK   C:Uo}  
  ?             2f org/bouncycastle/pqc/jcajce/provider/gmss/BCGMSSPublicKey.classPK
 
    D:U            )             k org/bouncycastle/pqc/jcajce/provider/hqc/PK   C:UZS  :  >             ck org/bouncycastle/pqc/jcajce/provider/hqc/BCHQCPrivateKey.classPK   C:Uf`  
  =             rp org/bouncycastle/pqc/jcajce/provider/hqc/BCHQCPublicKey.classPK   C:UԅV   ^  @             =u org/bouncycastle/pqc/jcajce/provider/hqc/HQCCipherSpi$Base.classPK   C:U
    ;             v org/bouncycastle/pqc/jcajce/provider/hqc/HQCCipherSpi.classPK   C:UW.H  t  ?             䁙 org/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyFactorySpi.classPK   C:U&>T  s
  A              org/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyGeneratorSpi.classPK   C:U9]  
  E              org/bouncycastle/pqc/jcajce/provider/hqc/HQCKeyPairGeneratorSpi.classPK
 
    D:U            +              org/bouncycastle/pqc/jcajce/provider/kyber/PK   C:Uymp"  6
  B             J org/bouncycastle/pqc/jcajce/provider/kyber/BCKyberPrivateKey.classPK   C:U,WX  
  A              org/bouncycastle/pqc/jcajce/provider/kyber/BCKyberPublicKey.classPK   C:Ut`   h  D              org/bouncycastle/pqc/jcajce/provider/kyber/KyberCipherSpi$Base.classPK   C:Ucޅ
  *  ?              org/bouncycastle/pqc/jcajce/provider/kyber/KyberCipherSpi.classPK   C:UT\    C             ? org/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyFactorySpi.classPK   C:Uެ  
  E             T org/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyGeneratorSpi.classPK   C:U,iʳ    I             s org/bouncycastle/pqc/jcajce/provider/kyber/KyberKeyPairGeneratorSpi.classPK
 
    D:U            )              org/bouncycastle/pqc/jcajce/provider/lms/PK   C:Uه8  Z
  >             乙 org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPrivateKey.classPK   C:Uچo  )
  =              org/bouncycastle/pqc/jcajce/provider/lms/BCLMSPublicKey.classPK   C:Udg1    9             ę org/bouncycastle/pqc/jcajce/provider/lms/DigestUtil.classPK   C:Ud    ?             Zș org/bouncycastle/pqc/jcajce/provider/lms/LMSKeyFactorySpi.classPK   C:UZZ    E             ͙ org/bouncycastle/pqc/jcajce/provider/lms/LMSKeyPairGeneratorSpi.classPK   C:UAz     F             ә org/bouncycastle/pqc/jcajce/provider/lms/LMSSignatureSpi$generic.classPK   C:Ud    >             
ՙ org/bouncycastle/pqc/jcajce/provider/lms/LMSSignatureSpi.classPK
 
    D:U            .             <ۙ org/bouncycastle/pqc/jcajce/provider/mceliece/PK   C:U5(+    L             ۙ org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PrivateKey.classPK   C:UP1  ]  K             - org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcElieceCCA2PublicKey.classPK   C:UN    H              org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePrivateKey.classPK   C:U\Byf  	  G              org/bouncycastle/pqc/jcajce/provider/mceliece/BCMcEliecePublicKey.classPK   C:Uq(]    M              org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeyFactorySpi.classPK   C:Uwu  	  S              org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeyPairGeneratorSpi.classPK   C:UKl[O    L              org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2KeysToParams.classPK   C:U/|  
  J             ] org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceCCA2Primitives.classPK   C:Uis#  f  ^             Q org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceFujisakiCipherSpi$McElieceFujisaki.classPK   C:U.  V  M               org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceFujisakiCipherSpi.classPK   C:U/]    I             
 org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeyFactorySpi.classPK   C:U1GD    O             } org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeyPairGeneratorSpi.classPK   C:Untx    H             > org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKeysToParams.classPK   C:UXY$  r  b              org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai.classPK   C:UO*  z  e              org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai224.classPK   C:UFzT5+  z  e             C! org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai256.classPK   C:U+  z  e             # org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai384.classPK   C:Utw*  z  e             $ org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi$McElieceKobaraImai512.classPK   C:U3">    O             |& org/bouncycastle/pqc/jcajce/provider/mceliece/McElieceKobaraImaiCipherSpi.classPK   C:U{+     V             7- org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePKCSCipherSpi$McEliecePKCS.classPK   C:Ut/  T
  I             . org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePKCSCipherSpi.classPK   C:Uc'  x  d             :3 org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval.classPK   C:U*    g             4 org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval224.classPK   C:UK*    g             6 org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval256.classPK   C:Ui*+    g             q8 org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval384.classPK   C:U
*    g             1: org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi$McEliecePointcheval512.classPK   C:UH  J  P             ; org/bouncycastle/pqc/jcajce/provider/mceliece/McEliecePointchevalCipherSpi.classPK   C:U*    9             A org/bouncycastle/pqc/jcajce/provider/mceliece/Utils.classPK
 
    D:U            -             D org/bouncycastle/pqc/jcajce/provider/newhope/PK   C:U>  	  A              E org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPrivateKey.classPK   C:U~|  8	  @             I org/bouncycastle/pqc/jcajce/provider/newhope/BCNHPublicKey.classPK   C:UuX*I  ,  B             CN org/bouncycastle/pqc/jcajce/provider/newhope/KeyAgreementSpi.classPK   C:U}{  }  B             hS org/bouncycastle/pqc/jcajce/provider/newhope/NHKeyFactorySpi.classPK   C:Udm  H  H             X org/bouncycastle/pqc/jcajce/provider/newhope/NHKeyPairGeneratorSpi.classPK
 
    D:U            *             {\ org/bouncycastle/pqc/jcajce/provider/ntru/PK   C:U9  M  @             \ org/bouncycastle/pqc/jcajce/provider/ntru/BCNTRUPrivateKey.classPK   C:Us.a  
  ?             a org/bouncycastle/pqc/jcajce/provider/ntru/BCNTRUPublicKey.classPK   C:U?   c  B             f org/bouncycastle/pqc/jcajce/provider/ntru/NTRUCipherSpi$Base.classPK   C:UtT
    =             h org/bouncycastle/pqc/jcajce/provider/ntru/NTRUCipherSpi.classPK   C:U=$  z  A             [s org/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyFactorySpi.classPK   C:U"  
  C             nx org/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyGeneratorSpi.classPK   C:UZ    G             } org/bouncycastle/pqc/jcajce/provider/ntru/NTRUKeyPairGeneratorSpi.classPK
 
    D:U            /              org/bouncycastle/pqc/jcajce/provider/ntruprime/PK   C:U{5    K             ԃ org/bouncycastle/pqc/jcajce/provider/ntruprime/BCNTRULPRimePrivateKey.classPK   C:UiSm  0  J              org/bouncycastle/pqc/jcajce/provider/ntruprime/BCNTRULPRimePublicKey.classPK   C:U]+    K             䍚 org/bouncycastle/pqc/jcajce/provider/ntruprime/BCSNTRUPrimePrivateKey.classPK   C:U"Uq  0  J              org/bouncycastle/pqc/jcajce/provider/ntruprime/BCSNTRUPrimePublicKey.classPK   C:UX    M              org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeCipherSpi$Base.classPK   C:U

  `  H             { org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeCipherSpi.classPK   C:UT!    L             ߤ org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeKeyFactorySpi.classPK   C:U=Y  
  N              org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeKeyGeneratorSpi.classPK   C:U    R             5 org/bouncycastle/pqc/jcajce/provider/ntruprime/NTRULPRimeKeyPairGeneratorSpi.classPK   C:UZMQ    M             k org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeCipherSpi$Base.classPK   C:U6
    H             鶚 org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeCipherSpi.classPK   C:U.  0  L             ] org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeKeyFactorySpi.classPK   C:US  
  N             ǚ org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeKeyGeneratorSpi.classPK   C:Uj    R             ̚ org/bouncycastle/pqc/jcajce/provider/ntruprime/SNTRUPrimeKeyPairGeneratorSpi.classPK
 
    D:U            ,             Қ org/bouncycastle/pqc/jcajce/provider/picnic/PK   C:U;  s  D             IӚ org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPrivateKey.classPK   C:UZV/e  
  C             cؚ org/bouncycastle/pqc/jcajce/provider/picnic/BCPicnicPublicKey.classPK   C:U;|    E             9ݚ org/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyFactorySpi.classPK   C:UT`N    K             P org/bouncycastle/pqc/jcajce/provider/picnic/PicnicKeyPairGeneratorSpi.classPK   C:U^ǝ.    C              org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$Base.classPK   C:U{ cVE  7  J              org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$withSha3512.classPK   C:Ue6  (  I             < org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$withSha512.classPK   C:UbЖC  :  K              org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi$withShake256.classPK   C:UG    >              org/bouncycastle/pqc/jcajce/provider/picnic/SignatureSpi.classPK
 
    D:U            ,              org/bouncycastle/pqc/jcajce/provider/qtesla/PK   C:U  c  D              org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPrivateKey.classPK   C:UL  
  C             k org/bouncycastle/pqc/jcajce/provider/qtesla/BCqTESLAPublicKey.classPK   C:Uū!  L  <              org/bouncycastle/pqc/jcajce/provider/qtesla/DigestUtil.classPK   C:Uo    E              org/bouncycastle/pqc/jcajce/provider/qtesla/KeyPairGeneratorSpi.classPK   C:UH{i    E             0 org/bouncycastle/pqc/jcajce/provider/qtesla/QTESLAKeyFactorySpi.classPK   C:UpG  i  A             L
 org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi$PI.classPK   C:U)TI  n  C              org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi$PIII.classPK   C:UE
     E              org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi$qTESLA.classPK   C:UHn  4  >             N org/bouncycastle/pqc/jcajce/provider/qtesla/SignatureSpi.classPK
 
    D:U            -              org/bouncycastle/pqc/jcajce/provider/rainbow/PK   C:UN  -  F              org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPrivateKey.classPK   C:UB  	  E               org/bouncycastle/pqc/jcajce/provider/rainbow/BCRainbowPublicKey.classPK   C:UNTϔ  .  G             # org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeyFactorySpi.classPK   C:U.  #
  M             #* org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeyPairGeneratorSpi.classPK   C:UsPg)    F             x. org/bouncycastle/pqc/jcajce/provider/rainbow/RainbowKeysToParams.classPK   C:U/C    J             2 org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha224.classPK   C:Uz9    J             3 org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha256.classPK   C:UQQ    J             ,5 org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha384.classPK   C:Ur    J             6 org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi$withSha512.classPK   C:U"9l    ?             D8 org/bouncycastle/pqc/jcajce/provider/rainbow/SignatureSpi.classPK
 
    D:U            +             f= org/bouncycastle/pqc/jcajce/provider/saber/PK   C:U+(  `  B             = org/bouncycastle/pqc/jcajce/provider/saber/BCSABERPrivateKey.classPK   C:U&he  
  A             B org/bouncycastle/pqc/jcajce/provider/saber/BCSABERPublicKey.classPK   C:U0jw   h  D             G org/bouncycastle/pqc/jcajce/provider/saber/SABERCipherSpi$Base.classPK   C:U!u
    ?             I org/bouncycastle/pqc/jcajce/provider/saber/SABERCipherSpi.classPK   C:Ut    C             VT org/bouncycastle/pqc/jcajce/provider/saber/SABERKeyFactorySpi.classPK   C:U0!"  
  E             lY org/bouncycastle/pqc/jcajce/provider/saber/SABERKeyGeneratorSpi.classPK   C:U$  W  I             ^ org/bouncycastle/pqc/jcajce/provider/saber/SABERKeyPairGeneratorSpi.classPK
 
    D:U            *             d org/bouncycastle/pqc/jcajce/provider/sike/PK   C:U  M  @             8e org/bouncycastle/pqc/jcajce/provider/sike/BCSIKEPrivateKey.classPK   C:ULb  
  ?             Mj org/bouncycastle/pqc/jcajce/provider/sike/BCSIKEPublicKey.classPK   C:UJ   c  B             o org/bouncycastle/pqc/jcajce/provider/sike/SIKECipherSpi$Base.classPK   C:U6
    =             p org/bouncycastle/pqc/jcajce/provider/sike/SIKECipherSpi.classPK   C:U  z  A             { org/bouncycastle/pqc/jcajce/provider/sike/SIKEKeyFactorySpi.classPK   C:UDY  
  C             ရ org/bouncycastle/pqc/jcajce/provider/sike/SIKEKeyGeneratorSpi.classPK   C:Uߒ4    G              org/bouncycastle/pqc/jcajce/provider/sike/SIKEKeyPairGeneratorSpi.classPK
 
    D:U            -             = org/bouncycastle/pqc/jcajce/provider/sphincs/PK   C:UH>B	  +  I              org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PrivateKey.classPK   C:U).    H              org/bouncycastle/pqc/jcajce/provider/sphincs/BCSphincs256PublicKey.classPK   C:Uqs    L               org/bouncycastle/pqc/jcajce/provider/sphincs/SignatureSpi$withSha3_512.classPK   C:Ud)  ?  J             
 org/bouncycastle/pqc/jcajce/provider/sphincs/SignatureSpi$withSha512.classPK   C:U1	~  -
  ?              org/bouncycastle/pqc/jcajce/provider/sphincs/SignatureSpi.classPK   C:UvN۩    J              org/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyFactorySpi.classPK   C:UP  
  P              org/bouncycastle/pqc/jcajce/provider/sphincs/Sphincs256KeyPairGeneratorSpi.classPK
 
    D:U            1             M org/bouncycastle/pqc/jcajce/provider/sphincsplus/PK   C:U:  k
  N              org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPrivateKey.classPK   C:Uj    M             . org/bouncycastle/pqc/jcajce/provider/sphincsplus/BCSPHINCSPlusPublicKey.classPK   C:U`Ü    O              org/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyFactorySpi.classPK   C:U&    U             ? org/bouncycastle/pqc/jcajce/provider/sphincsplus/SPHINCSPlusKeyPairGeneratorSpi.classPK   C:UQ    J             ś org/bouncycastle/pqc/jcajce/provider/sphincsplus/SignatureSpi$Direct.classPK   C:U0Q  %  C             2Ǜ org/bouncycastle/pqc/jcajce/provider/sphincsplus/SignatureSpi.classPK
 
    D:U            *             b̛ org/bouncycastle/pqc/jcajce/provider/util/PK   C:U
  
  E             ̛ org/bouncycastle/pqc/jcajce/provider/util/AsymmetricBlockCipher.classPK   C:U_XK  i	  F             ӛ org/bouncycastle/pqc/jcajce/provider/util/AsymmetricHybridCipher.classPK   C:UY    <             d؛ org/bouncycastle/pqc/jcajce/provider/util/CipherSpiExt.classPK   C:UjI0  
  7             ݛ org/bouncycastle/pqc/jcajce/provider/util/KeyUtil.classPK   C:U=< $    :             L org/bouncycastle/pqc/jcajce/provider/util/SpecUtil$1.classPK   C:U5w  o  8              org/bouncycastle/pqc/jcajce/provider/util/SpecUtil.classPK   C:UAP}  G  8              org/bouncycastle/pqc/jcajce/provider/util/WrapUtil.classPK
 
    D:U            *             ! org/bouncycastle/pqc/jcajce/provider/xmss/PK   C:UaO  <  B             i org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPrivateKey.classPK   C:U6    A             ^ org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSMTPublicKey.classPK   C:Uؗq    @              org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPrivateKey.classPK   C:Us.6  Y  ?              org/bouncycastle/pqc/jcajce/provider/xmss/BCXMSSPublicKey.classPK   C:Uoɷ  ~  :              org/bouncycastle/pqc/jcajce/provider/xmss/DigestUtil.classPK   C:U~\  z  A              org/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyFactorySpi.classPK   C:Uj=CD0  !
  G             
 org/bouncycastle/pqc/jcajce/provider/xmss/XMSSKeyPairGeneratorSpi.classPK   C:U~1G*    C              org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyFactorySpi.classPK   C:UyG6@  j
  I              org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTKeyPairGeneratorSpi.classPK   C:U    J             P org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$generic.classPK   C:U%    M              org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha256.classPK   C:UMW\1  .  W              org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha256andPrehash.classPK   C:U]L%    M             7  org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha512.classPK   C:UX^,1  .  W             ! org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withSha512andPrehash.classPK   C:Uy)    O             # org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake128.classPK   C:Ud.D  D  Y             3% org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake128andPrehash.classPK   C:Ua)    O             & org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake256.classPK   C:UݔB  D  Y             ( org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi$withShake256andPrehash.classPK   C:U⯕  g  B             m* org/bouncycastle/pqc/jcajce/provider/xmss/XMSSMTSignatureSpi.classPK   C:U#h    H             1 org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$generic.classPK   C:U"    K             W3 org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha256.classPK   C:UDV7-  $  U             4 org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha256andPrehash.classPK   C:U+"    K             6 org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha512.classPK   C:U6%-  $  U             =8 org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withSha512andPrehash.classPK   C:Un9(  
  M             9 org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake128.classPK   C:U
*C  <  W             ; org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake128andPrehash.classPK   C:U$z(  
  M             X= org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake256.classPK   C:UHjqq=  :  W             > org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi$withShake256andPrehash.classPK   C:U
  =  @             @ org/bouncycastle/pqc/jcajce/provider/xmss/XMSSSignatureSpi.classPK
 
    D:U            !             H org/bouncycastle/pqc/jcajce/spec/PK   C:U8vW    8             OH org/bouncycastle/pqc/jcajce/spec/BIKEParameterSpec.classPK   C:U>+x[    8             K org/bouncycastle/pqc/jcajce/spec/CMCEParameterSpec.classPK   C:UY  `  =             N org/bouncycastle/pqc/jcajce/spec/DilithiumParameterSpec.classPK   C:Ug F    :             Q org/bouncycastle/pqc/jcajce/spec/FalconParameterSpec.classPK   C:U=t    9             T org/bouncycastle/pqc/jcajce/spec/FrodoParameterSpec.classPK   C:UL'V    7             X org/bouncycastle/pqc/jcajce/spec/HQCParameterSpec.classPK   C:U"  -  9             Z org/bouncycastle/pqc/jcajce/spec/KyberParameterSpec.classPK   C:U*0    @             ] org/bouncycastle/pqc/jcajce/spec/LMSHSSKeyGenParameterSpec.classPK   C:U-    :             _ org/bouncycastle/pqc/jcajce/spec/LMSHSSParameterSpec.classPK   C:Ub?    =             a org/bouncycastle/pqc/jcajce/spec/LMSKeyGenParameterSpec.classPK   C:UC    7             5c org/bouncycastle/pqc/jcajce/spec/LMSParameterSpec.classPK   C:U  1    F             d org/bouncycastle/pqc/jcajce/spec/McElieceCCA2KeyGenParameterSpec.classPK   C:U^H{  ;  B             i org/bouncycastle/pqc/jcajce/spec/McElieceKeyGenParameterSpec.classPK   C:Umy    >             mm org/bouncycastle/pqc/jcajce/spec/NTRULPRimeParameterSpec.classPK   C:U{!_  X  8             p org/bouncycastle/pqc/jcajce/spec/NTRUParameterSpec.classPK   C:Uwe?    :             ~s org/bouncycastle/pqc/jcajce/spec/PicnicParameterSpec.classPK   C:UB;{Ct  p  :             %w org/bouncycastle/pqc/jcajce/spec/QTESLAParameterSpec.classPK   C:UΠ    ;             y org/bouncycastle/pqc/jcajce/spec/RainbowParameterSpec.classPK   C:U  M  <             
| org/bouncycastle/pqc/jcajce/spec/RainbowPrivateKeySpec.classPK   C:UjUZo  X  ;             '~ org/bouncycastle/pqc/jcajce/spec/RainbowPublicKeySpec.classPK   C:UrM  	  9              org/bouncycastle/pqc/jcajce/spec/SABERParameterSpec.classPK   C:Uw    8              org/bouncycastle/pqc/jcajce/spec/SIKEParameterSpec.classPK   C:Uʂ    >              org/bouncycastle/pqc/jcajce/spec/SNTRUPrimeParameterSpec.classPK   C:U< v\    D             ? org/bouncycastle/pqc/jcajce/spec/SPHINCS256KeyGenParameterSpec.classPK   C:Uܾt    ?             
 org/bouncycastle/pqc/jcajce/spec/SPHINCSPlusParameterSpec.classPK   C:Ujۧ  
  :              org/bouncycastle/pqc/jcajce/spec/XMSSMTParameterSpec.classPK   C:U/T    8             ) org/bouncycastle/pqc/jcajce/spec/XMSSParameterSpec.classPK
 
    D:U                         㗜 org/bouncycastle/pqc/legacy/PK
 
    D:U            #              org/bouncycastle/pqc/legacy/crypto/PK
 
    D:U            (             ^ org/bouncycastle/pqc/legacy/crypto/gmss/PK   C:UpA      @              org/bouncycastle/pqc/legacy/crypto/gmss/GMSSDigestProvider.classPK   C:Uz    I              org/bouncycastle/pqc/legacy/crypto/gmss/GMSSKeyGenerationParameters.classPK   C:U[l
  /  B              org/bouncycastle/pqc/legacy/crypto/gmss/GMSSKeyPairGenerator.classPK   C:UfCk     ?             g org/bouncycastle/pqc/legacy/crypto/gmss/GMSSKeyParameters.classPK   C:UY  
  6             ȧ org/bouncycastle/pqc/legacy/crypto/gmss/GMSSLeaf.classPK   C:Ug!J  l  <             خ org/bouncycastle/pqc/legacy/crypto/gmss/GMSSParameters.classPK   C:Ua  )  F              org/bouncycastle/pqc/legacy/crypto/gmss/GMSSPrivateKeyParameters.classPK   C:U}G[     E             Ĝ org/bouncycastle/pqc/legacy/crypto/gmss/GMSSPublicKeyParameters.classPK   C:U@
    :             dŜ org/bouncycastle/pqc/legacy/crypto/gmss/GMSSRootCalc.classPK   C:U˕cJ
    9             Ϝ org/bouncycastle/pqc/legacy/crypto/gmss/GMSSRootSig.classPK   C:Uɐ	    8             ~ڜ org/bouncycastle/pqc/legacy/crypto/gmss/GMSSSigner.classPK   C:U
  t  D             t org/bouncycastle/pqc/legacy/crypto/gmss/GMSSStateAwareSigner$1.classPK   C:Uq+h    B             t org/bouncycastle/pqc/legacy/crypto/gmss/GMSSStateAwareSigner.classPK   C:UkM!  =	  7             L org/bouncycastle/pqc/legacy/crypto/gmss/GMSSUtils.classPK   C:URz    6              org/bouncycastle/pqc/legacy/crypto/gmss/Treehash.classPK
 
    D:U            -              org/bouncycastle/pqc/legacy/crypto/gmss/util/PK   C:Uǀ    =              org/bouncycastle/pqc/legacy/crypto/gmss/util/GMSSRandom.classPK   C:UEmMM    ;             q org/bouncycastle/pqc/legacy/crypto/gmss/util/GMSSUtil.classPK   C:UI=    F             ' org/bouncycastle/pqc/legacy/crypto/gmss/util/WinternitzOTSVerify.classPK   C:UҴ  
  H              org/bouncycastle/pqc/legacy/crypto/gmss/util/WinternitzOTSignature.classPK
 
    D:U            ,             h	 org/bouncycastle/pqc/legacy/crypto/mceliece/PK   C:UwK  D
  =             	 org/bouncycastle/pqc/legacy/crypto/mceliece/Conversions.classPK   C:U  G  U              org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyGenerationParameters.classPK   C:U]4%  [  N             E org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyPairGenerator.classPK   C:U%  o  K              org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2KeyParameters.classPK   C:U-
X    H              org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2Parameters.classPK   C:U۬  Z
  H              org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2Primitives.classPK   C:UΔ  g
  R              org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PrivateKeyParameters.classPK   C:U?i  {  Q               org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCCA2PublicKeyParameters.classPK   C:UU{  U  @             
# org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceCipher.classPK   C:U姖8s    H             * org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceFujisakiCipher.classPK   C:UF  7  Q             2 org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyGenerationParameters.classPK   C:U@E  o  J             d4 org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyPairGenerator.classPK   C:UR     G             : org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKeyParameters.classPK   C:UǗ	    J             !< org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceKobaraImaiCipher.classPK   C:UEDc    D             kF org/bouncycastle/pqc/legacy/crypto/mceliece/McElieceParameters.classPK   C:U-8    K             J org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePointchevalCipher.classPK   C:UԖ  V  N             R org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePrivateKeyParameters.classPK   C:U{    M             W org/bouncycastle/pqc/legacy/crypto/mceliece/McEliecePublicKeyParameters.classPK   C:U܊    7             Y org/bouncycastle/pqc/legacy/crypto/mceliece/Utils.classPK
 
    D:U            *             [ org/bouncycastle/pqc/legacy/crypto/qtesla/PK   C:U
o    9             [ org/bouncycastle/pqc/legacy/crypto/qtesla/HashUtils.classPK   C:UJt    9             H^ org/bouncycastle/pqc/legacy/crypto/qtesla/IntSlicer.classPK   C:U^9vi+    M             #` org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAKeyGenerationParameters.classPK   C:U!cDZ    F             a org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAKeyPairGenerator.classPK   C:U)MU    J             e org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPrivateKeyParameters.classPK   C:U  	  I             h org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLAPublicKeyParameters.classPK   C:UC\f    F             kj org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLASecurityCategory.classPK   C:U6s-    <             Em org/bouncycastle/pqc/legacy/crypto/qtesla/QTESLASigner.classPK   C:UP^cI  n
  A             q org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$Gaussian.classPK   C:U	wBvM  q  K             ay org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p$QTesla1PPolynomial.classPK   C:ULy  $  8             Pǝ org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla1p.classPK   C:UW  6  A             /ٝ org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$Gaussian.classPK   C:U QQ   K              org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p$QTesla3PPolynomial.classPK   C:U6   !  8             e org/bouncycastle/pqc/legacy/crypto/qtesla/QTesla3p.classPK
 
    D:U            +             Δ org/bouncycastle/pqc/legacy/crypto/rainbow/PK   C:U?%  W
  6              org/bouncycastle/pqc/legacy/crypto/rainbow/Layer.classPK   C:U'܃*    O              org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyGenerationParameters.classPK   C:Uwy    H             1 org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyPairGenerator.classPK   C:U=h   <  E              org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowKeyParameters.classPK   C:UDOr    B             즞 org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowParameters.classPK   C:U/?  z  L             Ω org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPrivateKeyParameters.classPK   C:UPS";    K             䫞 org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowPublicKeyParameters.classPK   C:UCGگ    >              org/bouncycastle/pqc/legacy/crypto/rainbow/RainbowSigner.classPK
 
    D:U            0              org/bouncycastle/pqc/legacy/crypto/rainbow/util/PK   C:UH  C
  D              org/bouncycastle/pqc/legacy/crypto/rainbow/util/ComputeInField.classPK   C:U'Ym:	  V  >             d org/bouncycastle/pqc/legacy/crypto/rainbow/util/GF2Field.classPK   C:U3`    A             
Ǟ org/bouncycastle/pqc/legacy/crypto/rainbow/util/RainbowUtil.classPK
 
    D:U            !             ʞ org/bouncycastle/pqc/legacy/math/PK
 
    D:U            /             ʞ org/bouncycastle/pqc/legacy/math/linearalgebra/PK   C:Uw    I             ˞ org/bouncycastle/pqc/legacy/math/linearalgebra/BigEndianConversions.classPK   C:UZE  9  @             *О org/bouncycastle/pqc/legacy/math/linearalgebra/BigIntUtils.classPK   C:Uu    >             Ӟ org/bouncycastle/pqc/legacy/math/linearalgebra/ByteUtils.classPK   C:Uf    >             fڞ org/bouncycastle/pqc/legacy/math/linearalgebra/CharUtils.classPK   C:U&(  _+  >             ܞ org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Matrix.classPK   C:U:X#  N  B              org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Polynomial.classPK   C:U,	    >              org/bouncycastle/pqc/legacy/math/linearalgebra/GF2Vector.classPK   C:U'    >             6 org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mField.classPK   C:U-JE<    ?             2% org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mMatrix.classPK   C:Ur  	  ?             - org/bouncycastle/pqc/legacy/math/linearalgebra/GF2mVector.classPK   C:U-?  `  @             4 org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nElement.classPK   C:Ukt  3  >             6 org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nField.classPK   C:U:Fn  s3  C             F= org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nONBElement.classPK   C:Ux[
    A             %S org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nONBField.classPK   C:U`_h	    C             [^ org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nPolynomial.classPK   C:U'6~!
  !  J             4h org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nPolynomialElement.classPK   C:U
i
  4  H             u org/bouncycastle/pqc/legacy/math/linearalgebra/GF2nPolynomialField.classPK   C:UoIǠ    >              org/bouncycastle/pqc/legacy/math/linearalgebra/GFElement.classPK   C:U㈷l    E              org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MaMaPe.classPK   C:UȘ<<  p  H              org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode$MatrixSet.classPK   C:UV    >             I org/bouncycastle/pqc/legacy/math/linearalgebra/GoppaCode.classPK   C:UNOlk    =              org/bouncycastle/pqc/legacy/math/linearalgebra/IntUtils.classPK   C:U   -  E             ᐟ org/bouncycastle/pqc/legacy/math/linearalgebra/IntegerFunctions.classPK   C:U,pI    L              org/bouncycastle/pqc/legacy/math/linearalgebra/LittleEndianConversions.classPK   C:U    ;             Ȯ org/bouncycastle/pqc/legacy/math/linearalgebra/Matrix.classPK   C:U~     @             " org/bouncycastle/pqc/legacy/math/linearalgebra/Permutation.classPK   C:U3;  #  I             # org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialGF2mSmallM.classPK   C:U1Ћ   
  F             ǟ org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2.classPK   C:U4   	  G             ̟ org/bouncycastle/pqc/legacy/math/linearalgebra/PolynomialRingGF2m.classPK   C:Up2#  i  >             П org/bouncycastle/pqc/legacy/math/linearalgebra/RandUtils.classPK   C:UoKP    ;             ҟ org/bouncycastle/pqc/legacy/math/linearalgebra/Vector.classPK
 
    D:U                         ӟ org/bouncycastle/pqc/math/PK
 
    D:U            (             ԟ org/bouncycastle/pqc/math/linearalgebra/PK   C:U͡!e  *  7             Rԟ org/bouncycastle/pqc/math/linearalgebra/GF2Matrix.classPK   C:Um#  vN  ;             e org/bouncycastle/pqc/math/linearalgebra/GF2Polynomial.classPK   C:Us	(!	  P  7              org/bouncycastle/pqc/math/linearalgebra/GF2Vector.classPK   C:U    7             g org/bouncycastle/pqc/math/linearalgebra/GF2mField.classPK   C:U/3  }  8             V org/bouncycastle/pqc/math/linearalgebra/GF2mMatrix.classPK   C:UO    8             $ org/bouncycastle/pqc/math/linearalgebra/GF2mVector.classPK   C:Usg#9    9              + org/bouncycastle/pqc/math/linearalgebra/GF2nElement.classPK   C:UI    7             - org/bouncycastle/pqc/math/linearalgebra/GF2nField.classPK   C:U=Uc  2  <             04 org/bouncycastle/pqc/math/linearalgebra/GF2nONBElement.classPK   C:UyAe
    :             I org/bouncycastle/pqc/math/linearalgebra/GF2nONBField.classPK   C:U	]	    <             #U org/bouncycastle/pqc/math/linearalgebra/GF2nPolynomial.classPK   C:U^
     C             ^ org/bouncycastle/pqc/math/linearalgebra/GF2nPolynomialElement.classPK   C:U85da
  *  A             rl org/bouncycastle/pqc/math/linearalgebra/GF2nPolynomialField.classPK   C:U    7             Bw org/bouncycastle/pqc/math/linearalgebra/GFElement.classPK   C:UPŪh  m  >             Ay org/bouncycastle/pqc/math/linearalgebra/GoppaCode$MaMaPe.classPK   C:U#$6  M  A             { org/bouncycastle/pqc/math/linearalgebra/GoppaCode$MatrixSet.classPK   C:U˳`O    7             | org/bouncycastle/pqc/math/linearalgebra/GoppaCode.classPK   C:U/Φ    6             n org/bouncycastle/pqc/math/linearalgebra/IntUtils.classPK   C:Us   0  >             x org/bouncycastle/pqc/math/linearalgebra/IntegerFunctions.classPK   C:U檅D    E              org/bouncycastle/pqc/math/linearalgebra/LittleEndianConversions.classPK   C:U7   O  4              org/bouncycastle/pqc/math/linearalgebra/Matrix.classPK   C:U7  
  9              org/bouncycastle/pqc/math/linearalgebra/Permutation.classPK   C:U>\  }'  B              org/bouncycastle/pqc/math/linearalgebra/PolynomialGF2mSmallM.classPK   C:U    ?              org/bouncycastle/pqc/math/linearalgebra/PolynomialRingGF2.classPK   C:U5J
  L	  @             ~Š org/bouncycastle/pqc/math/linearalgebra/PolynomialRingGF2m.classPK   C:Uҿ8!  b  7             ɠ org/bouncycastle/pqc/math/linearalgebra/RandUtils.classPK   C:UeJ  z  4             xˠ org/bouncycastle/pqc/math/linearalgebra/Vector.classPK
 
    D:U                         $͠ org/bouncycastle/pqc/math/ntru/PK   C:U|H/    6             a͠ org/bouncycastle/pqc/math/ntru/HPS4096Polynomial.classPK   C:U_:  4  2             Ϡ org/bouncycastle/pqc/math/ntru/HPSPolynomial.classPK   C:U[  %  3             xԠ org/bouncycastle/pqc/math/ntru/HRSSPolynomial.classPK   C:U9.  X  /             ٠ org/bouncycastle/pqc/math/ntru/Polynomial.classPK
 
    D:U            *             O org/bouncycastle/pqc/math/ntru/parameters/PK   C:U@,3      >              org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048509.classPK   C:U;j      >              org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS2048677.classPK   C:U     >              org/bouncycastle/pqc/math/ntru/parameters/NTRUHPS4096821.classPK   C:US3ֱT    C             $ org/bouncycastle/pqc/math/ntru/parameters/NTRUHPSParameterSet.classPK   C:U7+ߣ      ;              org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSS701.classPK   C:U]
,  S  D              org/bouncycastle/pqc/math/ntru/parameters/NTRUHRSSParameterSet.classPK   C:U0g  7  @              org/bouncycastle/pqc/math/ntru/parameters/NTRUParameterSet.classPK
 
    D:U                         h org/bouncycastle/util/PK   C:UWz  t  +              org/bouncycastle/util/Arrays$Iterator.classPK   C:U[:I
  #  "              org/bouncycastle/util/Arrays.classPK   C:Up,[  =  -              org/bouncycastle/util/BigIntegers$Cache.classPK   C:Ugw	    '              org/bouncycastle/util/BigIntegers.classPK   C:U      !             	 org/bouncycastle/util/Bytes.classPK   C:U"{      &             
 org/bouncycastle/util/Characters.classPK   C:U) H    +               org/bouncycastle/util/CollectionStore.classPK   C:Uε      #              org/bouncycastle/util/Doubles.classPK   C:Ugq      %              org/bouncycastle/util/Encodable.classPK   C:Uc  4  &              org/bouncycastle/util/Exceptions.classPK   C:U^0!    '              org/bouncycastle/util/Fingerprint.classPK   C:U  ^  %             ^ org/bouncycastle/util/IPAddress.classPK   C:UdԤ    $              org/bouncycastle/util/Integers.classPK   C:UD     $              org/bouncycastle/util/Iterable.classPK   C:U6Њ    !              org/bouncycastle/util/Longs.classPK   C:UM      $              org/bouncycastle/util/Memoable.classPK   C:Ur*      2             Y  org/bouncycastle/util/MemoableResetException.classPK   C:UԖM`    #             Y! org/bouncycastle/util/Objects.classPK   C:U&mPk  P                " org/bouncycastle/util/Pack.classPK   C:U5V  '  (             }' org/bouncycastle/util/Properties$1.classPK   C:U&l]iY  !  (             )) org/bouncycastle/util/Properties$2.classPK   C:UF    &             * org/bouncycastle/util/Properties.classPK   C:U
g=   !  $             1 org/bouncycastle/util/Selector.classPK   C:U,ZR   ;  "             2 org/bouncycastle/util/Shorts.classPK   C:UE   l  !             H3 org/bouncycastle/util/Store.classPK   C:U   Y  *             `4 org/bouncycastle/util/StoreException.classPK   C:U      (             5 org/bouncycastle/util/StreamParser.classPK   C:UVٳ   Z  2             6 org/bouncycastle/util/StreamParsingException.classPK   C:U4     &             7 org/bouncycastle/util/StringList.classPK   C:Um\  [  %             9 org/bouncycastle/util/Strings$1.classPK   C:U{  p  2             : org/bouncycastle/util/Strings$StringListImpl.classPK   C:UL1    #             = org/bouncycastle/util/Strings.classPK   C:U>>­      !             E org/bouncycastle/util/Times.classPK
 
    D:U                         F org/bouncycastle/util/encoders/PK   C:UO  y  +             	G org/bouncycastle/util/encoders/Base32.classPK   C:U9~    2             JK org/bouncycastle/util/encoders/Base32Encoder.classPK   C:U~l  w  +             ET org/bouncycastle/util/encoders/Base64.classPK   C:UYϾ    2             X org/bouncycastle/util/encoders/Base64Encoder.classPK   C:U,  ~  4             ` org/bouncycastle/util/encoders/BufferedDecoder.classPK   C:U%  ~  4             c org/bouncycastle/util/encoders/BufferedEncoder.classPK   C:U:w   l  5             f org/bouncycastle/util/encoders/DecoderException.classPK   C:U   V  ,             $h org/bouncycastle/util/encoders/Encoder.classPK   C:UQ   l  5             Wi org/bouncycastle/util/encoders/EncoderException.classPK   C:Ua[t  j  (             j org/bouncycastle/util/encoders/Hex.classPK   C:U?'  
  /             n org/bouncycastle/util/encoders/HexEncoder.classPK   C:UcS!  \  2             Iu org/bouncycastle/util/encoders/HexTranslator.classPK   C:UU      /             w org/bouncycastle/util/encoders/Translator.classPK   C:Uu%    )             x org/bouncycastle/util/encoders/UTF8.classPK   C:Uch_    .             6} org/bouncycastle/util/encoders/UrlBase64.classPK   C:UŤ   ?  5             i org/bouncycastle/util/encoders/UrlBase64Encoder.classPK
 
    D:U                          org/bouncycastle/util/io/PK   C:Ur9i  3  4             偡 org/bouncycastle/util/io/BufferingOutputStream.classPK   C:Uޕ   f  1              org/bouncycastle/util/io/SimpleOutputStream.classPK   C:U o      6             	 org/bouncycastle/util/io/StreamOverflowException.classPK   C:U    &              org/bouncycastle/util/io/Streams.classPK   C:U
I    -             D org/bouncycastle/util/io/TeeInputStream.classPK   C:Uik    .              org/bouncycastle/util/io/TeeOutputStream.classPK
 
    D:U                         W org/bouncycastle/util/io/pem/PK   C:U{     9              org/bouncycastle/util/io/pem/PemGenerationException.classPK   C:U_  U  ,              org/bouncycastle/util/io/pem/PemHeader.classPK   C:UN[    ,             : org/bouncycastle/util/io/pem/PemObject.classPK   C:Uk      5              org/bouncycastle/util/io/pem/PemObjectGenerator.classPK   C:U=^      2              org/bouncycastle/util/io/pem/PemObjectParser.classPK   C:Ux  Z  ,              org/bouncycastle/util/io/pem/PemReader.classPK   C:UF-A    ,              org/bouncycastle/util/io/pem/PemWriter.classPK
 
    D:U                           org/bouncycastle/util/test/PK   C:U]P  a  =              org/bouncycastle/util/test/FixedSecureRandom$BigInteger.classPK   C:U-u   3  7              org/bouncycastle/util/test/FixedSecureRandom$Data.classPK   C:U܅    @             ڣ org/bouncycastle/util/test/FixedSecureRandom$DummyProvider.classPK   C:U7i  %  @             N org/bouncycastle/util/test/FixedSecureRandom$RandomChecker.classPK   C:UȾlQ   +  9              org/bouncycastle/util/test/FixedSecureRandom$Source.classPK   C:Uq`  C  2             Ԩ org/bouncycastle/util/test/FixedSecureRandom.classPK   C:U-\k  |  .              org/bouncycastle/util/test/NumberParsing.classPK   C:UpΞ|    +             [ org/bouncycastle/util/test/SimpleTest.classPK   C:U_/  .  1             0 org/bouncycastle/util/test/SimpleTestResult.classPK   C:U4qɍ      %              org/bouncycastle/util/test/Test.classPK   C:U &u   z  4              org/bouncycastle/util/test/TestFailedException.classPK   C:Ui  #  5             ⾡ org/bouncycastle/util/test/TestRandomBigInteger.classPK   C:Uo
7  S  /              org/bouncycastle/util/test/TestRandomData.classPK   C:U	  /  B             k¡ org/bouncycastle/util/test/TestRandomEntropySourceProvider$1.classPK   C:U    @             ġ org/bouncycastle/util/test/TestRandomEntropySourceProvider.classPK   C:UcOy      +             ơ org/bouncycastle/util/test/TestResult.classPK   C:Uu(Q    8             ǡ org/bouncycastle/util/test/UncloseableOutputStream.classPK
 
    D:U                         ɡ org/bouncycastle/x509/PK   C:Uy6
    6             ɡ org/bouncycastle/x509/AttributeCertificateHolder.classPK   C:UN    6             ԡ org/bouncycastle/x509/AttributeCertificateIssuer.classPK   C:UL
^    5             ۡ org/bouncycastle/x509/CertPathReviewerException.classPK   C:U7Kq  t  9             ޡ org/bouncycastle/x509/CertPathReviewerMessages.propertiesPK   C:UWL    <              org/bouncycastle/x509/CertPathReviewerMessages_de.propertiesPK   C:U	hN  ;  6             [ org/bouncycastle/x509/CertPathValidatorUtilities.classPK   C:U$+J^  J  &             
* org/bouncycastle/x509/CertStatus.classPK   C:UR^U     ;             + org/bouncycastle/x509/ExtCertificateEncodingException.classPK   C:U:    9             !- org/bouncycastle/x509/ExtendedPKIXBuilderParameters.classPK   C:U:	  ,  2             1 org/bouncycastle/x509/ExtendedPKIXParameters.classPK   C:U̯bv      1             ; org/bouncycastle/x509/NoSuchParserException.classPK   C:UN      0             < org/bouncycastle/x509/NoSuchStoreException.classPK   C:U<4:    /             = org/bouncycastle/x509/PKIXAttrCertChecker.classPK   C:U N  i  '             =? org/bouncycastle/x509/PKIXCRLUtil.classPK   C:U
4    0             B org/bouncycastle/x509/PKIXCertPathReviewer.classPK   C:U7  m  )             Hw org/bouncycastle/x509/X509Attribute.classPK   C:U+  -  :             5z org/bouncycastle/x509/X509AttributeCertStoreSelector.classPK   C:U=(&0    4             ! org/bouncycastle/x509/X509AttributeCertificate.classPK   C:Uɿ*!  =  0              org/bouncycastle/x509/X509CRLStoreSelector.classPK   C:UҎ%    5             2 org/bouncycastle/x509/X509CertPairStoreSelector.classPK   C:U Ŷ}  9  1             0 org/bouncycastle/x509/X509CertStoreSelector.classPK   C:U[yO  	  /              org/bouncycastle/x509/X509CertificatePair.classPK   C:U!Ą>  h  9             W org/bouncycastle/x509/X509CollectionStoreParameters.classPK   C:U?    %              org/bouncycastle/x509/X509Store.classPK   C:U8AX   ]   /              org/bouncycastle/x509/X509StoreParameters.classPK   C:U#3   1  (             C org/bouncycastle/x509/X509StoreSpi.classPK   C:U  +	  ,             v org/bouncycastle/x509/X509StreamParser.classPK   C:U     /             U org/bouncycastle/x509/X509StreamParserSpi.classPK   C:U
u8  "  3              org/bouncycastle/x509/X509Util$Implementation.classPK   C:U'(L  $  $             K org/bouncycastle/x509/X509Util.classPK   C:U#X	  I  6             鶢 org/bouncycastle/x509/X509V1CertificateGenerator.classPK   C:U    6             J org/bouncycastle/x509/X509V2AttributeCertificate.classPK   C:UnpH     >             ΢ org/bouncycastle/x509/X509V2CRLGenerator$ExtCRLException.classPK   C:UO0i    .             "Т org/bouncycastle/x509/X509V2CRLGenerator.classPK   C:Ul(
  "  6             ۢ org/bouncycastle/x509/X509V3CertificateGenerator.classPK
 
    D:U                          a org/bouncycastle/x509/extension/PK   C:U7  K
  E              org/bouncycastle/x509/extension/AuthorityKeyIdentifierStructure.classPK   C:Ug    7              org/bouncycastle/x509/extension/X509ExtensionUtil.classPK
 
    D:U                          org/bouncycastle/x509/util/PK   C:U>.  @  0             " org/bouncycastle/x509/util/LDAPStoreHelper.classPK   C:U>Ѯ     -              org/bouncycastle/x509/util/StreamParser.classPK   C:UX   _  7             
 org/bouncycastle/x509/util/StreamParsingException.classPK    99c 	  PACK200PK
    ]W            	  META-INF/  PK  ]W               META-INF/MANIFEST.MFYo67 6ci68s%^ȴÄUr#%[D{Mxߤh̷,ӿJ9
7Q6ׄFltG,]gF'x<zC:b3y-GpGTׂ-GrwOэiʣѝdՉK\4Tџ$z,ArjeAd~د
HDVaEM\>UϷу۷oLh<bq*$,<Ijw.؎sa>#z/&e]<2Kis	8;`](.tbh GT-Hn#ǎ
{NOAw^ث[-*s.W#9XA҄O`Dg^66bf
j$Z3Xr̺tHҔL=9Tl/Olӥ =؀<ƽ=w树We8msOlXhT#aU˚[Z=@}Uh˅P
ϧ39ƫ	hTͷ>]8 O8T>!bS\M752Q*oWwǥsM(4n

H1`Զz4O{ARz*Rz1rzΚ#3ũuW>ʈ1|}ɫ/2ӡFZ./H.Or )(I4xx1t0gAr* unvh@j9fמ:D#=kݦl
c:39at6T>}6o0ma'K=>`iOuf4MmJ>C#,Pǹ< H*+Y.@B &X{ZP@1f))k{EamSk=Օ6XzíԂ<sBCM52}!ض:Z=\_y]}8k4կ>
yjW/7c*uZ$`J	9P͠]qN\ἕ9H/&#/ڥWa	l6 Wic
֩ZvԥHO)Jߕ4&US_΋^{j蹶W&o<ݵ֪M+v^l@l[wm(pYO9+PZrZ_7"|'FOYxVvւu]B1|@U3N[BU+re"nq
D|V"63N'2d@	SxwFhKO.:b?+%\͕/,$( ͞-9yM9~L &#c8Za<mo8*Η;^ά(cvO	f}!t_08.ٲdt׶fQY|sSeuY\O"J
̜TŹ 	+Mt88
2O'%|æ74\@0-Ჶ]G0tySZ+meVnd)zΰj|Ŷ[@\Q9q
=5Y֖/?߸$BHԸ%rvЏW֮ŦqB,
"@=-TCUkƕ#.°ճHxΪ{QS+={՜Y9;7X{UfqjI)
'Xiw
%p3NhȌ7xj gBDƘdlj&x3$`,frr8PK  m#  PK
    ]W               META-INF/services/PK
    ]W               ch/PK
    ]W               ch/qos/PK
    ]W               ch/qos/logback/PK
    ]W               ch/qos/logback/classic/PK
    ]W               ch/qos/logback/classic/boolex/PK
    ]W               ch/qos/logback/classic/db/PK
    ]W            !   ch/qos/logback/classic/db/script/PK
    ]W               ch/qos/logback/classic/encoder/PK
    ]W               ch/qos/logback/classic/filter/PK
    ]W               ch/qos/logback/classic/helpers/PK
    ]W               ch/qos/logback/classic/html/PK
    ]W               ch/qos/logback/classic/joran/PK
    ]W            $   ch/qos/logback/classic/joran/action/PK
    ]W            $   ch/qos/logback/classic/joran/sanity/PK
    ]W            -   ch/qos/logback/classic/joran/serializedModel/PK
    ]W               ch/qos/logback/classic/jul/PK
    ]W               ch/qos/logback/classic/layout/PK
    ]W               ch/qos/logback/classic/log4j/PK
    ]W               ch/qos/logback/classic/model/PK
    ]W            '   ch/qos/logback/classic/model/processor/PK
    ]W            "   ch/qos/logback/classic/model/util/PK
    ]W               ch/qos/logback/classic/net/PK
    ]W            "   ch/qos/logback/classic/net/server/PK
    ]W               ch/qos/logback/classic/pattern/PK
    ]W            %   ch/qos/logback/classic/pattern/color/PK
    ]W                ch/qos/logback/classic/selector/PK
    ]W            (   ch/qos/logback/classic/selector/servlet/PK
    ]W               ch/qos/logback/classic/servlet/PK
    ]W               ch/qos/logback/classic/sift/PK
    ]W               ch/qos/logback/classic/spi/PK
    ]W               ch/qos/logback/classic/turbo/PK
    ]W               ch/qos/logback/classic/util/PK
    ]W               META-INF/maven/PK
    ]W               META-INF/maven/ch.qos.logback/PK
    ]W            .   META-INF/maven/ch.qos.logback/logback-classic/PK  ]W            =   META-INF/services/jakarta.servlet.ServletContainerInitializerK+/OOJLKI,.L+N-*I-Cy%yEy%9UE\ PK<   C   PK  ]W            4   META-INF/services/org.slf4j.spi.SLF4JServiceProviderK+/OOJLKI,.L+.e&e PK=4/   1   PK  ]W            *   ch/qos/logback/classic/AsyncAppender.classT[OAEnT
-QAD䒐$v,n]H)>/$㳿nHC;3络sf?b!ĒkhDa5޻a7+}pjU8e!_pO0$-bzBRI54Cc9asϳ̳4cem[esӌhMMC;::\^2
nb9CMġl0ȧAWzp`F]S
w[C*V_U*bՕ⭐R7k
:دa -d6Masbl$-)VlOɐ&ki2LP|hF5ye3,-i!	Zq_r;$(&\Z;Zq,"lbdٔ{Pu^5j/K{$N[xٔu%q}'[dkzۺw&|_BzuBI eUHu!Kok@ɧiU+h)e	tJ5`LIs@:}ѮK羁b_<dZGL#1	E,zhhto}B2mj(u2
(BXDf"Rz$`>EO?JgSwŉdШH/H~D>^vD ]xOHFZ*FrtZD8SSƈGVZ\%%\ĩD3ֶLIҞh\/8935fR՜2Fm 1<5r>(i c>PK]  |  PK  ]W            .   ch/qos/logback/classic/BasicConfigurator.classVmsU~nl DcKD[CmӘb(67
]eRǡ3f\#p/{<_'u."	\niM-Wts?sG-0eXeŗkdX5F݌onTvkj!L)PU\o&o]# mAz:Ƌ?#jh!嚂GEOvZ)rͦ	a +Ju|9"j	7߇Egdr8*>2SBA(#m
Z+Wv}fx˜l]V%nsrX\܊$RA
C0̏&&#
,|BuCh7myw§P"-ؙA
b1GPPU+E?j_8qy=1z7hKU\[9GrȰ1.d|tA4<Ob)(S&IfwřЈg2Â|89ZglspI7MORVDgN'pB9->]W~^YE(H'ёL=}<Pn;gH
^[C)-85eٜenM]zAGlj_$B ]t˝^ZHKZ:#)3`WHsdĬA3O^ }kǘ'B)I?<"=GfRJdd̮uoB~|tvKyH \K$i'_6(M=3lw9e{䯯XMF#*5h$}Lأ|'=Iv}7?)Sd}yлet0G};/PKp  	  PK  ]W            -   ch/qos/logback/classic/ClassicConstants.classUmWD}l!,B)X^JԲZd7%/d°fI,̾1g3N??EyVI>
7rLVqP(ô,PS0Y)̝oC9	Ӷ$0qM`b}]&aQđq-A
uVL'xǮM܂yw-ɳ3
7,èw۬Oxn^+8m0K_N4,`>@KqwK`j!Zˣn`ijCzn&]&*J[2+E	T遏kTWq+7U]K?$F#
K]P5Ú(KOv78K8aV,Gf·E%mT\årU*#Oy_DYgooȺy~~ڊ.	O~4`d)bL`\ըL?࿩iR
ۡ)htorsե{-wity4	 p3gu52WiP[(
{x6KQrAkHˊwCaa7$r)
wՔ`{ĉ¢~$PT4+/,%̏ٱ3Pt~|
=ՖAitZ\ŭFQ
!|&034$n|+:2%/1b֌Sfw;G,#ZQy`R
~V>bUXy|a
",XȮ
?A'O!7?'#XT!~-
C^? H#>V|^0o ?h㌌H?&~I'{c/=pEoT`z~D0PK[VE    PK  ]W            "   ch/qos/logback/classic/Level.classWipS7%@6`$,ȑlIȳl?
IJ閴MtIq866ȴN;N;ȿ2߽J#Lf*չ{=|^~fԇ<as̬@M$ZV2Pd@ƆV('6=`%(6XsI@f*D1ے$A!ܤ@8zH.s@MtR	7uj	PH`q:1Ӎ;fҊ:tU{,2::\`F}4z(ݴS4zKe3;哕V'M;~Ri`|bDښ۳1Pl~@ޙnu6	,ɲ׶a7]鑘5"fzk0C7lY
Nw9KfM	TT
"s2hmNUHhHp
Du49Oc1+#.ne>H*Uȕ6r@&\N (\k`J8><`A<tSz"aٕ9#"zudԴS̔uc~tǏ}2rC2r|inI0K7+u#ܙdc̽Q.W|LÖk%㖛}q׵	cLIfrYc8d3Q_`U^a4QiǧsRcׯ_P<sov7Dwd5JW5ڜ|8CPՃSe%?n-RlL1{"l-lH?8et(tvt]ɧ{6L7BEǅR}IѰh<aZn԰vI{w0NNҘn}+ڼEh΋N)P2ZͼhG~90cTLcC6>OJZd'yܡ @<bC|+)<Q՞hM_r1kjyb{\7IlrF19.P[ܤ9jN_ʏKu\TYݣs4Ώ7ʄWt4ާޒ"\	-;2ap1s,Nfk6c<&LvFϞf϶R+34:R㞹`+7k7DJ6Z)XLlowC	| §9P>2|2	OBE_"te_J,4yp^&_pt4]My*GNM5ݦiTӈ!(_HIKh;.-z~rr^@qU D1Cx+WL妜Ƀ8:{ԐgUod"H-ZJm
|#!\<>E!\oZx'ik.n$nPOF(wDiķV}6^~	8&yE9|'yHw˂4*oyvۏt-edᮉsXʱc-+ظ_FLu W毢q(9#NR)Iu}:Zh;<v
EAxh/OeE-Ʉr&!+0|WkߠRWC$vL͆{*gi9<ئ/PS_Iv|No߯owij.Q3fb
\D
Qzh_%?"dѫ-W2p(ӘKWu
LXV]'2V#ӟfZ2iL<[B,_1%6aK; nD-D_1+;N~31
jظjL/&/A&EN1&$OMnJtYN1	"=Fa-99{2UYedIV1$KM#I
.#!Y
"/M}Nh!覙{E),1G}̬93k̺33:.ɴYm*kŘ:o!_IƘk3/9x¥*iM6Jڢ+ikx00=\<ڪ&q2>P cXF!dHh)g!SxͲY<~9ϓx1|b)E׆F׫IU\M*BA5Y*=&Kç
'Kx<zw*<.QWx@m++U:Ŗ	)Ei:>]F*[\tAt
˰jy->l%
laO+ϫZxHzQN*{lFePK=lx	    PK  ]W            #   ch/qos/logback/classic/Logger.class\	xT>gf@$AIBX\*@J $,0	83AQmm]ͭR-mA%	j[U[Vn*ro2f}||;OyȫOe*h"]
kn7	܅H([]1(_
IgpQ4vm
w4Áx<lhvu1@GG(i0[x*fE8Y:=EȨR&D	ČllQ4Ixqau1I`Z㔈tLSJN`ݭN#"&pKUPFU:M)LZ"jMnqA(u:f0YO֩Lzp[(Oⰴtjo"n3
5Sf*Jň.5й:ͣS2>=*@i:NRkS9&sAh>-hNhqJEp\tej"贔j(.MLޢQӉZa+^F4_4zh$3]ͨRvV%#qUfT~m5F*H+$=ZlWJ:pFsJ0UUF{ya+D:i=qVӈ3]p6&i3maMPXIzLIt	BL3DcFC'԰ǈtD -5lt0R@:ftCN,t'=KᡁqlI"kuem|liAz!(mxҴLyCTp\HTYLa(QB^Im"ȃȚko}:]BH$rP^-yt\FO<K:]In0Nu }Plk4ڳ&bcw
?YAhjމ,XP"a!>L0i2:CcS Qrh1m.ub.$"#n)4N7'.M~U
7'bD&nŗt	RTOiH;@M6Hn4f8JA@ZC,0ytg8+]ޚy8D:}Iʌi*eTeyن
|ܥB.` k/57ܔff
ݶ@
f:CJ?(5 &:Q::6"]m^t&4)"Ņb:#+8VNзN0УF"MF0\0ykbL[x
.(e$Ӭs2ݚtfXb) .$abXgwG5NߣǘNbyuK[ᗬ@_Ssfc		[{Ѳ%ʕI`LW:^>Vvg:@?RaK/~/Qez۱WL3G(X@OӳBf?HCO:^`KJfouz~ =<Ba]~Vc?'UP͢/:*9=Sy~5]5ykýqWFS }QdzCҿmC޶ѭNo[6o2v5GbK0:Cb)MG'[g#ܟyz}LD a{Ty7;^C
4ӳOV NYyu֬xqxK3jyNƖ<AZږe:O>Xt֥X,.yn_"ק<"xJMK׵u>M5lW~Q>LṲ*zÉ^&׈1Vu*l!-n\/7*:cVzK/ܜBny.c!2,P[h$Su>OG~C޺ӫLًb:ϗ{:rbĖE{#.PEr WWxːg꼄b++)p"˔F9)JNxH"8T^Wp^R4eowbQWʫ}ӊ?vF>A[03&^Z>9ډ~^8f hy ԫ]%B~7꼉xEsu:DD!os4>W|8;=~4U2bFt쏆74	c&CRhxeXjrTx]P݈Хfs#lhib╠qΪ}'=W"Dlj椹|(L.W݈5F;`Phj֛8Ko/-ؙqCRܱ:c.vreu'pm5F,d-,\x>ڋ۴pO,"
ibkZ	*87|*nzʽ)4o.3ƕ#<\==&0mug)fJmģt8#:rqCcZ4+7Zqіna%Z肐ܮAhL7>_t
t[̦28F`46uXYAII}f0U:@wM		ޓ.T@BnźFi[Q>Hc~jI;KɠXxG֟Q(3TgC
V#[5ƹg%Q֔TtnMQ6
X Y>ȇ b><&fUoQk=R,qWORF[wi^Hkv-e1%[yQԺ^-H5@]6*#mUgr(B5ZPG?=MD8c%:
5'5A#m{[;aL88ݎ?tkO:,HOf:sHZ#gvoF:5۲XX,4%cˢDgLX%TU=PitTUh9ꪺ|(v`ܬ
<-Ӻs˜9kfU̢ǿ^}CdG$zq*N%3
#~2nBbsÍsOr:YL/kWƯi;~x^(3ð|gonNV`
4ݹBS&Je	!$- 
VVTPT؝}x_4U<w$EZ"#Y<y(Z's0͡<Pom
4!"G\`˱zˋF{2MQh!?]<:Bq1y
AˡbDGw;@ *ۯg
ʧTD;`BBy'MA|2GpVGbG^mՖ	sKF֘(9fH:_B
7mr"ir5y<yI/q,oO9L>ryʚ̚<K%ͷ|^1ߛ$$!L!K-p	N|%IHjB>98HLNjԃ4Cߢr_:?<θr}>=>l3LIaѯB^@1w=F:>BqnݤL]jh_S} r
ĭ8ph'
g*~k1?Gժ|k>:w76{>	W[D⨏VB}fy榻iZ$,_GNZN%86@*t}fw"MʹqHw!IFEE> W< ÔP<NܶNv mE?B{JM'vZoB7^"{'Wd<a3`²>DSg:=BLiZ*4N1-1-qT@RT"
J+ysS|A<яaOp4F ".K&"֔@$w`;~<DO2gJMRO54(ىS2|.O9 )mUq$mCah*gԪbz,[Bn&^WiL|K
x9Է[x^.:H;z0FF
5iAO]bKэx%RT8ja-e"3Kj
E4uJ=4]uHrA8*iKSn	i</L>ź]v}Tbmk?<ޛ$,𽍅(M
q ?LkzǓŰ%f{ITr7 %S5?a# #YH }dD*G }HUU?%+oFVzff!\+%nkC'	)9,PM~G,c
TsN#?8B̋Ϥ0/	L	jr(ğVTqC}*J;B4umV(UKfK=0ڍ
{8*'I	&,J3r]ASyeR*V$<ǋl}_?Z|(ڃ_1Mn~![kWt"u}tߞw_Iϐ6d4Gki"4ivOZM$+u&Sq6~߅4BF-}ip԰98Tý2DS@]FmBpl H깃v86
˾
psKpUTF/I"hX/CrΝ̖vӸr{k챏/͉" з\ºj%Lfko[R-R:wY,L^@!0c`a(_)lJCӬP'foyN#k :`o ؏ G&jMw6`lM6&"ߡ6`纁'.H*lGO+s7gf_yn|36·L,G5l
h%V5M11111/YWAjWJ t>o}v@ݕi-gdA%ы[[dWw}5i*m6JAFPihj|'0JB|<lHm+,Ba),҅*U$wY(G%\D0$*y/G_Ñ=;ȡQ|b*? /l$aEۊLXρx_zU>&*EZ%Ê}Nv	[UD-W7"=t?:
t&AOg*V$ w޴o̶\?vLjr;Mo[}&j}tdu	޾4tNx0{7
p 
R*?WXgl<.5sQg^H
Fr9pG9G\)/$hn3ͽ'~s4GS4Js]hU~m4Jsiu {4Jsi_F4Jsi-?5ng{0iϕvМqhϕv;ҜG1\+v9O!GOs\PT<J::gN:R];89~L)Yz[RS	UYz[sc{NYz[CS{fB|R-Es")RB=TwKuY%TE!Ջ;.Jh<;u4
w4mUch<(߳K<iL,ٞ4x,̀+͕8
8epgkY܀+͕ZYcW+q !kpg;7gMs4WLsByY܀+͕8܅
\u WcW+qm@
\3ͅ{47ə&\#Mr޸!&\s4 bv.]4w\3ұ_刽ܙӰO!`0_u~=x,ا:c&GSW{ci` ~;'teZ0둶zeD>j2>M;ҳfxB՞s7Me<]z0)0Z0X5?5ܟT5[Het- R]Xs;YAn¹Ⱥt&*\M<<nbеp& &]}s?ut-Q{q[p?n} 'n¹?tOi?>-1u||5y16UZqIkzx~yi ,5%՚)0|޵$Z]$kkCR)*XA複aI>4	^-IIt2?m%Fuj˵I^'RWqIle62>lHݔgQ^Jud>˥G2i Fm=ȳV҆0;uR"yOQ	2&y^嘐[{J) D}6uL}/p8i=4{+ʽӨ;'"jVJo
ws_VV~},K{>@=H/g Ԍe/~1G&֨~'N(`(.odm=?MNMJ:
 
<~~yeE_K/Wa=n Q|Q}>_y#*̙w=LPKxO  S  PK  ]W            *   ch/qos/logback/classic/LoggerContext.classZ|\e?'M&i> }L4-&)&iJRNni'3af6hEy(A
HERy	ZQVw];7o;|sy|K>ʯiǴ$8Xq4^4{јY߄h$0"<TW'
O$FdEBәkzG:͠eF<
ַE̘-,m6#fl"LܪQ)Ӭ^~$
7bh[(L*f40US3b䛩mB4ht?p{$3)NX"|4ZmNiD ڶkQtZLL1Fh;f?tAKu:17/1#Acdh;Kt3Ӫuewd.)PiyMַCQSd͘ m6ЩV}13n&#F+&F#Ioǳ`1:˶tZMk4̔h?yKUfD
2TڤI
@a4fuCф2M8 pL&O>@uS_eJ;]6YX7ǋ]DtFFLr6a斍[!|QN2AݬzS!Hd^{ԴbnCۘfqhx*M5杻`!&'AT"\^#<"Nbu@.1aNI4*3}؞-ʻx!ƶݛ;w7n~^6q :
RZXnd֥GB4-KN)n	>4,7fky(SKîu@eu/>4J'Ik%t>{`ijSPX1-֊6`c#CK-mh>G Ұ*F$MT4+##ᰏ.M!itNLPhB86ցZ6]M'Fk 0TE$u!+]5AS)[9uÆJ7bUYO-،θV׽@t]	i7Y`z}9
jH^&mL*Fb$nDŇW	Q
O
"d:qRXSd}v_9Juz0d쑲)h$N̈9XWRbz:=BcLU1kb:=JGPI|3*4E!Aq
vSӣLi$!q>z\bF=p`%T2Ϩ$%YE.4%֦pf^ojNߢo2Bd57(v{C1}uz^E=4E'3~G&Ӄ3g2+]bz~O_QAI>Y%N*M#&NJf/ݼCz\]9WI9:ӿaJCNRn"@~ӿ tu^`mR+s!0'#v O}&E<DtXd\>ޒ7E1:3dvad_ekwgcN=em.kRP6
HLۢxxIQLYVUvl>i=ӋKvSMc--QZ]92ۡ"dΥ\,3Vc8<I4lF(3ʑ)Sqx9hшri|
쎩:/6	<\qt'LZwbfkW\T1i/-HZ뤹L
mS Ud*WqRPb>I瓥$f"8C{产Vf>^s`,'u=ryΧH>SFi_$;-=&exD'7| 1*RgEiPNL#:1D`c1T</)MvIz`EcBh:+FpجL̸]8eշ"ɜ(ny+2ZD#T.qLϽLup=oGA1aVa6AQ/q%;lEM[ۺwlil:֎v47v7SeW/(ϰ#E]!9#I470mLXO"dY,)2W}-DJnpoѓU;#{1GETB(E:bTg+UdW5{~t8b Hr<?aX:pB<|s?Kj㉛fs6߹\:Uժ|A'\sFS:*'Sj2gMV8Y5]nV&;S-RªsCq.qTXfZ-v*Pʔ!̧Bde)͗y݌aJ+S]NfUÊEs_rn6Sq?quk6ڣCnUa.Ed	[ׂ]ؐ3x7$y٥2cפĴp2D_MCiXG#=;TLO?0ņUhU'O%aG.Ar Ņh:)<iwҥ*4X?y5)gA{ܽS*i2)k3Oj\Nq0ɋ-
L"yM+ID[Y{xgZ )9K{_X{F[z=1)sJ`TMxU,0bŤh"l-^Q:]+IT"Akrvq*CB~\@uL/j='
ĺ-[RuZ6"a3-32<y@I(e./jE׻B	IzkۯN9SشjCEEvTB|!Ub"*ws,]./1Pv}5q~֫qirh:!ᨪk<WE)ro bM7)ߟ?FE40Q91~%1Z.CIq
g0~6Qj~<,?C~|1>)
S6Rmy΂gCVANtms<^g~:W҅< )$!e> !_JQ
9N&P`@"3ER-)O^ْlI3Rm)(SͰ׳Iμ@a
+E&Ĕ-
JT5Ѯw%xsvoonT@#^%}5ڑ!%pDf[f?0N#CDZz"GTGy.v!-1qZy+B=iQ'
X7ȗZ]GOцu

,x>yw7sTXWp@8ݴ`sцu3utzYwVhu(|ӡ2ݪ*xԷe]T@@t5-koSFZGvz.nH<
=`IG G7ї#;AsnV i
=EtEoP\n>x?<XÒ£E%3ޥZF>
rfy"zVjmH{]ϜEOvE014fG`?72 n$Y,qPR\@(W8)ZFՉNE}TmtQ_a{EС<z\L'z;<-w-}#e:g:ODhK׶O^aJ@mfcGq'j'\M2-E%_*eŇ2h=H.yʁd_>˕?
lW\6LSaWɧGRaXX˫2ڹ^u09?v'dqrjL~0:ʋ#<vدq?cݞ-Ӊ_*B*j.kI z[o#OnmwblZ %B^kѾQw~= ~GtTx4[7x{(O*ìV@k:fL4zX%ىo]6"peƧWd8eMd?Hk7;:Etwvr{l:x
kgP
޽CK]-ǜ `EA7B0\`eRsiۇu$'8MJ<T^ٖG|߮XŒ<$'_=}ͣ;Fs|ʎ9%x7YWʁ8{{+
\%)PU*jʁZԪlAZ@I
oWw޹N8opoh
}x'AM go#oYky"d O.L9%H%J̓xgbWm"9=,#i*FQ<J
ŊiiW)8@\Pbh!mC(GTK$,ɻT[vXYz!<>]W'rR)vUDrqF5)2l)a<}؈e%v+ΫKZVj@.G DpROEv4ujY?APOUp8+,F鎽FXsbq$Z+9LhP\N;3%j
:3fZ0 ƲF+&h^a\a9q.`7,9Z$.q^qNY;E	smAer"Umx}S9| vKzuQ0+h7kx
Nz+CTλQ	ô7"TQô/NAAU[p1le툫jcg&6|ح]z`sr$Q'0S<G hI&1w@5Tq~2K2j'|N\'?ؓ/We9H'H3w-܉sx4){6M(@h6WXac,iCy36~ޠoRRku):v~D"]u}C}~_Q[*DPKa  G4  PK  ]W            *   ch/qos/logback/classic/PatternLayout.classXi`FWv`qZpb[$
$&M$`W4jP(C@)%á@K}wӻoV?l77o޼}o޾/XT^T0waȮ`ĴD0۶o>n
zJ0Tq{=a@BCOp"Dx,"vLlQ#UA0ߏ8Tf#ɸ!-3"R)b8{)2Y5m-ើpώn:vz0mǍ`l9~,[*^[lurc3#DBf"e	;ñDq{-:L3ٕ QAVay}fuCOĂ];Enn-e]qUoK{?kKx77w1GE+|Qsg9C1540&=5LB}&Nc<9:Z{{wu8?]TZDŐ6oW%N
kh*
GnE%Nws_XyX34Yhfɴj \|8E5pJM̎Њ
B~!LsiHNcbޢkǥ؄Iyg	#Xvȇ<Q·NHJCÚ2G,3%"f":+. 8z5~ezQyd[)Fȇ^C
CEE[ez dT~l
Ue-oQfJ!&YM
<V.1AFȜ&h,}Jrz,Y3Ṫ4HFbigh*]PH7펮WYw/6Eخ}:4LxB!
mjpSyv*En!ۈj;6cK?J8I1!4[M[})[cydQeՇ&ʽKitJǭ]rRH5[}=i1^.cHDEr`[qr},a&ߞ`8r[͉!%mze;|3+>EIhx|j#[97ra^$'9H;J9VGG|tkD$$ҮѤOnEϧe٤Eq
V*q|^ӌ|{Uh6A34|#iVpT>3+eTư<Oc]=r1o0h.Y婶;ŸGijPIiQGFPHغ04̨cYUdUt|g4zN>:f-Ytɢ[AӈxӜ!^/`%L\f8{n|%cF%l|H.NY:M@rnp-sc,k)1V$,s̝RƒƼsD1-{6NHirgS*<bǆ
56!T&7fH7Mϡ{~1^jF6}txu+vE""G>%jTJrP }4Yb(>c$YD*7Kvڢ;w|fvM-io
Qn߼ZsHiw%ecCΖЭA=}ZA-FmvKt7o+;C}DM*LvoǒtZ)R:|	V3~jzkُJN稖r"B\UXypMGŎ' &b'Fn-aKIkX
0FN
pk|P9'<JQxLȟr[I["yF
g񼹞ܬ
4+6.ǦXx?*}8NlzD92s6ɧF S,*Zr%%VftVNYΰUuK;\12N܏	VTf)գ+^uQOo|3O3XEƩt葷qhwc)8 ~^N(
8w=OPpA| '/T/.(8 -'*Qģ9Vw`C9y'} 
89(S/SpAJE*įߥ_9FEfoo+w=
~w?
GX`,
~Vgsc\"?'\K__/+rK9g{>_Qk
2οo(u}X??W/?*o
ߤW@
s0:RQ|HU
#jXuc3tx
[Z2tZ<'l*X c-p:Tt!Ђ4$Υ׊)p m8HZЎļjqCkB'cG&&bMa+;m .dp;]^\W.u5aFՏK`ȕF5k;]{5u #0]tn)w-lwFMcݏӸ=+ݓʽWp &qw
/n&On4OzqGvOwx&pgwyn:I+:<o~o5k{RPKW0
    PK  ]W            6   ch/qos/logback/classic/ViewStatusMessagesServlet.classTRA=
! "F(">
h	UΤtu~n|\Gn,$c `.ss9~|U1тV	mH2\sT/<wJ#Ca+uEKxP]	+Ԃ7|r%^)v3`Z]['Vt]玖++X_f8o6}26сRb8H2w<t6Ѓq5*(V}zpT/	pEZ{Pfwo1\hRm
z=/Py2x2{=``і|?g3CbZΜZ^<S+'Fq003ex^涪e{XW= U
I:Xg޳
7$!bhfj8L="&:^悬EM7n,JcuWJtsBeAcdq|^en2Н)ʤM3+&A\
[`CDlv'5T)gwW,qUY-0*ƘbmfJY(7d-8n8~OWh54M3m#*j(hj b=gg4'"'_1?f@?xFjؘ'Ze0\s6H<FbcUkJR9#N"&KRKB"in'e]B0)ƱPK/    PK  ]W            .   ch/qos/logback/classic/boolex/IEvaluator.classu=0~Z`c\JlC!R		x`c 3ؓcSHu!VQ
1FRvRF`voGϟZr6V&tl0>p[+.?غDC=F'| PK5Kҝ      PK  ]W            8   ch/qos/logback/classic/boolex/JaninoEventEvaluator.classXy`U\Ni=04-6Mh(gɦlMB6M-ffv'*@A@
T(x(@&لGv}yC e~\AJT	OXِiP(izϲL},U+2gȨfheoֲ@U1Muk{Z_<gNhj٬KDƆmVF`InmTZ&J8I5pUۺ3bgXE
*cq4#X^W$eP=ԛ^`X88>
-V&9
gT2%iN	X&\E-NPhfXZJBVA&
a@(AZA7ro#E$~=8SL+9`)8U`y1Pض1#q
ʫiuXK[#mmpW8GzcD7+[)X!.3G:l5uE[[,ԓ˰Kg8Sj֜nRY*9Y
XTN|lX'o7e7)h8yL=U~4a$`kҺV-A,Am";w&[z]]Ι£*b*t,7
uu;Kh(1`XJv.$yD޲@YP3<x5v(TNFv:3=5yۖh{wdK1(R8zJתh{[G].h*܅~\ʯC

ef.;l1+bܞ#g3ZJBLi)a1,PtuKŰ\J
m+)*
ǜF69l$卪cl\RR\&?tՎD	ZTFqn#'-=V?5
x3͗+ fɎ~w0Xu[eWu*ފ{2ƭ-5޸F
&̀STvtZsޗat*?|96Lc?ޥxO.UהM.4>M^;5XptGus\Ēe-n)Av@Y%>|,>e|.%1&AևOهO+.|4lЇ;)̔.<0|8@l>CD8S"Aɛ8Sp	bFg^Nť]^0Մ*u}L3
4
?ZvxgGWwo,13{:Oh >|7#=lN093:gCW\He4ei'lLenln7-,}$ݧݞS687YYawu-c!<c5׋	3ӹ|dGͺM) 2B/KVQ&o`4XBl{Rf{yLDJO%d7)gNf:po@UDcz<ͧ֔Զ0;Vdh9i\yA|';256Jifr
{6w

DM
XP`VOI˴2 {"7S_1*<_˧B̨5Fڴ$bbo*NS"kSc5424f(!]t4f2W=%UdYY3V.㓭52­rTrg_wG8(?4gBj vY*wD|ǀo;VqwFn҈ǡǱpKX=5axB} 8Np:N%PqbIh*\]|u{ ^*
|?8wT b
`˰|cmA>dIN2FS{úqlW&8N";:-
^ۨ^8Wbw)6\<O%4GH<Osf\SQ"(hT/ݻW˂ߍEKh4:stQ}Iҝ~p]	N:qҁișJ8<'E/OeJbTAlPQSqrq'ԮII*	Z^2Ń=ŃA- p?*Bf~PYS(Vj*5cX8xgfy2-?jiUmyUy4&U1gOT*%8<?LgrXam·8po93^^U8kx݇G9k	_q~b)ٿz%_%s˾~IX_PEEI9rO3ioDGJOAJS,^@q\J|>R]pq:gdB?xҕё+{zsJ

yGTLl\@ޛ'i_Hȅ/G>0,Gp3r%6?$fYÖPǮXO`6_ci$|C<8sw=Yw\y<gfL0lĳ؄@q!+YC8т6ю-b?߿Ҡ%7-Y?qTPK`S8[
    PK  ]W            4   ch/qos/logback/classic/boolex/OnErrorEvaluator.classSn@=4!4UJIHĂE}HA]j⎜)'NԏaÊM7HĚBqZՖ|q9]hB@,rMoS)ǝaı	?j7
P06/MY۟CPb0ry<ciulwcN+"[ǰj)8U%,(pY"oQŒ%\u)]*MbRتfȼP[/vG==N*ra&ː4)blk1w#JD>v 
cX9#nyw)G"$x3@J`}J;ة`HPJ0ޜkln\܇MrU/zu]0hROL;A;"Dn7.	L!eip&]l|+`d>">N\KKncbTeNI~=$-$+?œ`j
,kX-ш?PK{S'  a  PK  ]W            5   ch/qos/logback/classic/boolex/OnMarkerEvaluator.classTmSU~n޶	KRZamK}Җ* Bű8ބmtٍ~_ډN??RZ$CvO}sy׿}|Aq
	I
[-#zQv]5wL'XܑvCw[@jr`^ pFܑF#lc^4聮WY0:3A$G'=PxGyf{Џ
ubHc(77rQ-R2+\kuJ떱TtU˩bV͠tK,qz=P':3V`zQcK-?ym
)nk_6w@¡C`h({=؛wuYmui9~Q<p\6r]
i%@zݪ:2hxv;,۽n}h9rclze٦gV!=Ko9AbN*md4* 1ңwA?`i쐝O/@f`~ C]e(m{-z+,[1:eK.7l{յfaU`7L(/.bjI:.!^yM͝^7efmxZv~J5Q.xWҊa	ڼKgӗ
OCgqq-D*	&bgW<Qm!P_%(xV#[V4'&eBcyƸSfLr8:ԘI
M\)=\<
>`1eoq߱
|H]U7tJ"f&jowX=|4H|ʙİ3|Fj/p\Pq9bT$(w	+},dCT@:?~pj#G&nu_N
5]:YzPK:D    PK  ]W            (   ch/qos/logback/classic/db/script/db2.sqlo0ǟ7iI}Q`C[!@JІlUIbqRsH
<ٟgS=_I
Φ0GG
1mf9s.0S,?zn~|,_(>Ozuh_^^~ڭ<(i#26Ǝ!1&:?K9͗LSԹJĤf*T<}Vh)έ'd
Ϥv#L:R<7)du+W4L@2mJC$<jf9U)3@4v3.y;w;34ꪽG'z~lXǱi)̐L}+VR&#lZ)[XPLi F)|cǶ
 )J4!tLl*Q!#m^:[oU 5`xJ9Vx#F}I!k&k6G[']Z^C54e
|إIhMBP!d&Xt|>uVL[d!}
9vڌ,;CI/k%ITZpYyp9<^k<vn w4}pGi;	j	Bx[hm]魪ڬ1?;g\+nVguUwO}U*k*f`h9Xu7p=w?$KV{<ٹ>9l7!PKnIw  m  PK  ]W            '   ch/qos/logback/classic/db/script/h2.sqlSMo@#FK|4Dr2`UۭZ챽b
	&Ѓ/޼y|n.I!pd,!9ڐ!1$_iJNr|)l6`TVNLBkd@o0|w{6<}3L |nԽ>"dRV71J:FX433HJ^$URڍ։"PʺdT肈8$DD3JP6ܝ!hdKs<
γ#AiBj\{CL(L7B\c!C|^/r'ygf@+:Sgl֠Z,'Rb* );MYZyXXRY($WLU|*VXD&[iCU{gկՈ0K(SSpcsQfe|g@m h؞N?q
u$uҹԙWwY֚([~؋nV@xdtY۳g#?b|烟u>6ǉU}<(PKJ
>    PK  ]W            +   ch/qos/logback/classic/db/script/hsqldb.sqlS]O@|G?K"&x2UV)klJ}.@*wnLPp6؃%*` 98@4ee	b5iԝæ)^V:.>܌/< дFz*c}17Pj*S(T:sZ\ߪ<Y#snx#51אD3[BfP?
s0Kt$n^Ӛg^>NEZ
7Vsn1ڳ1j9j}ߜγx|
o;GfO49yުEef^O5[8
/Q
1FQ6zH!.~ҏWDRt9EDe/f*fN
T(3\QD]>AjƄ w.
.X5ɷu8_< ߞ³`md"5>ݺ ]g$J"\:~Ů8Eqph$^!R>_&Q1tQPKQ    PK  ]W            *   ch/qos/logback/classic/db/script/mssql.sqlOo@ϭ0GNBbhb뵳$wS(+o޼uA.Y!(-v EGH6dWN@ie
b9j|°(7ְ
xΜ(s,F=iO!3ě#t'xR\@R(k%Ϭ2dBBj3a/
D
A]7
c0jUq	5xnD8>4Sm%Mª6ɚ&)UITx2SxAm[nbmƺ{{ߤx+VDe6p*TU#Z%4Omd: X)g`3߼ux[BF
>rO9FUS?KӮ!	*.ZhV5Ts@%Y(bBPj	Xww*}>Α2\6z|+{[tc¸ԧCBG?]
޾)V2kC͡YßX.w4;8Sg;x7
IVdv;׀?':F1b[kr2oPK-l    PK  ]W            *   ch/qos/logback/classic/db/script/mysql.sqlOO0ϋwK+uE+F"7&l~!Z6R{y=lS09BD`2xҁ)La*"˸`uA(gV
ݓ݃\N;
F=hώ!7<rBө}LUdeIR[5NRȔ^HMBs
 txi QzևG0c+ídھD0y%U7@4v5
Uʨ Ө*#JBرu~Vi-jylw<]Anq4n	KU|;_,;[G-ꇞy٥4@>yg%4OϧG	+F͘!_b5 nW0U,)ou?n冭ԈXec69e"v
)B`<*:A@ S,=k::%Lrm}CMWZME--l<U5<}CnF?<Z
oVh/vsf߮Bv߾J>B{{OL<ؘכ3ޝ9m/}~G͙k>{=R涬\>N-+=PK!    PK  ]W            +   ch/qos/logback/classic/db/script/oracle.sqlUKs8>V#TyprPK8%VE~D$mq֮FS?>w0ˢ^@g+0EɃ9Ȣ%K-/_v0Q5i`4uAB@PGbXXDίz=Q2^3Ev=LZN3YeyN묠SB KCy*rnnZc`8Hk$2:KAo
V; &G R<usm9!ʚT96aAp.Y@F~T$o0 d)T4(5hX5$Bdo昂ēIFPpx,5,A.q˳;)m֫ӕC{ӻ;ۗs[LKKMC]8O;qN8
Rr@w``nv7ϱ}<1x?ٓXԿge~ 4OTI}zvְw٬SB	T%(!ۛް?60AQ.Syo
v&nb0T͋hS]$Qbr-Xt`fSׯ LF}tBW@ï
5X\*t1Vq~mƱ[@8WEj~/nk2Y;$l$-fV)  eYDpY*kFYXS@+hd؊6f޸صlH]K4dIB:Ձja|-cJ2ǃFP	y NiV`j%2vnSwФh}p=xgnꖯ̙'X')4!sz\γUܺygұPM{d:P?`r';o|֣h֞Jk3y޹5
sxFO7Iԙԟ95RppUH49gx:;MJyPK^)|  	  PK  ]W            /   ch/qos/logback/classic/db/script/postgresql.sqlKs0Lf.HVqRdG׶&#_؄Wjҧs킝\L82J;c@"Tf1D7/YXr'Z6aw:8s 1dJ@sw˝n)KrdBd4LȔA()
5OJ;6T
yRIL(rK pZH8*rAj-%(E40q{cf!%N3C.dQ%K:5.Ï ]\3Wܚ_cՌd<}2}p=񠿽{eck
4E!q3O=on۝)1.H g 3JtFL5G+7e~]A#GĴmUQ`kPQPhp
(T"ʰ]x*:E4Y~Uֺ3~wZB{цg<1gm=kusdׯp#ⷦsRC6
UlTsw3O5k
ug9A5~"'ud9В[)ΨޛD=845p[?PKT    PK  ]W            ,   ch/qos/logback/classic/db/script/sqllite.sqlMo0[ai]ڞuцt՞IĪqR$$
-hF?qK	&
QaX*7A{ 8*3|Msx$n͵nNΚVn#'Lp0Ƞ~h!Bbmv~t$E9O#)BT$LS]ʳbjZ2A"n{`B-2Fnє}?=\dTp$:ĹY*B*Y }lUR2a
'Yn89pGT@-*Ah;?ӅtUSA9vuʗ:\\Nwtʎ3f|?Br	}/X/37`eZ@- X1gTQt !z#gܒMc
 `XX@r\k
ccu>;iРDi)jT!QG%u|kk
A'@}N(RkS!+J]+$P	.TD}Kn|={
d
\>GvyVf*W;#η'ϥ+ժ܍y^
}]Η`|v|67g_-,g9>l\>NW&nIo{PK`  6  PK  ]W            6   ch/qos/logback/classic/db/script/sybaseSqlAnywhere.sqlKo0TKBx̂RHgh0RWInIm_
:<f"?{5.xe"T QbhA-HT@x)wYFy bmt0.Y=`4uA߂E`ǹ
c` HLIs:@\cRs=Fc\R:1v~m%O%Zܬ9<y cA+@P6_^T%ams3"%deOB0`"kuorh(,:vSsﹻfFAJ
X/@PWghՔ"9tHÒd-?91\Aq=d?w]aUo-9k31J1<4Dd}8R:2||L}J)&
k&Z@ɿ]O7D+9y4G:Y\mOgNЁVuyH@=+6|
Zz׸=u?솰צGoS-+OYi۽Jrf|SN'MۛPK3ub  V  PK  ]W            0   ch/qos/logback/classic/encoder/JsonEncoder.classZ`Tՙd$DS<	"FM I&&2 N0$#LD[D֪h}}`UAZ/hmcvnmwm}עwssg&9;M+\"_u"GP_wm,Q7Ycum&h2Cp2m?,BKC
L6 xn%h$J[QS 
Ӝ%L+D"kZEMc"o[g`syslm.B)f:1K'Yi,1k">H8'umxQJߩ,7PZwMS/n
Uuk:ϱw7:655NuMh$T7q:<1܋p󱘨
Oo
.T'pp\V5^=L
uXJRIbѾ0[W1Y+{\X&(HFärf3

;E"(Xt{Bi^\5't[J
pE_x$< X0uXu
	Nx4+?2-oGP@2VZysy:g_vCP쏇CCaF
]f̪ȦJr[C65j%zCC^Z$]́/O9UÕ)|i=Wk=aIOt-{MC/
f֝3Hm=
;42jw$ߚw7IZJ2FN5E9EGjVs£E	NDO8!/$mF1af)7<yШ׫=oJ
7&2P̕[ΈgU$w[\ɘa ].Ak=뚺ހlch$V':M܉[{q$5#Q4&㼊
Unmv}r*/=m2ٵT({5|Py#q^=!ۧ1Tv0]#-Oo%>ᣩl۬:TuI2f(
ǓpB)~L	#v=m!mF*'#,&BCFܯi|jJs'7feON|FsxqOgH?ME8N%|6m>Id	xvVe'5WU~(Ѯ?[Ԉi8#*zszvM7
sW-GE
_R	:bXiIڜa$lM?)ۊzqN0#=o9m
GDlLMQ"	h@ׅzd|Xw
?UE|x7,O*A}ESe79CX9EnB3
Ϡ?4'85ߍ#%9k&
I-j&Mժ6UE
'4`W=khᡡ8v5שL.$aYpX",['4w1~T1D0?Ph䝅aA{
5p?L%y䧊6%.#2NjR􊨷lw4UEfy5)Q4ԋ̓R)2SS Jѭg+S+9	/!%F>/`֔ryWvzz7^$Jd!#CY
:WԒ
aհXw>nI%B
bԅU!Tg@*FZU*Nr!;bllji\.6V(oHA.D^ne4(՞ZKV˨
enqiŅaP)MZԱNVj&ʘ`TF@V6V3%lne

WiD{,K?/K+2OXY\5Sl8*3(]6sWt;7{l#wz\sؘ3gx:+h%
71՗afskW`]KS <5hZۼ@S[rhKv߻ۻۚ]b볷hkJt~gK|kצO0֦
ԵNd6J=Mno+cթ
ֳ==VOpbOS?e>y[s=mm5]AOGw{Zfy|M~ 6o`]G603״ґ,m_kdA(S糉5;>h^OyngըnfJ֕te+b5]S	X;B8tmY!t5:Tswwf3J"w[1PGj@O(QHGkښ5cN.?7o9
}慍aUz	
xBCH4'"\B@fLvWRY1c
P27vW1+kKq8+Nm*8}i;2WEC8i9ce0Q:A3J~z G
'f#I	)_{FeS>EUO?8Y5(3RD\xŲ_8@8J{Ue4BNUI5&,hZqj7BIJ)hbwJ7.1pmE;bfOvUIĨ;C
.εWK
Y(O+p7*|`˵KSk4ʜl(3W`%jRPdKN.%.p/-6y6qW'(_e/|MP~M^G94!K#mvʽ~MQaWml[;m(_P_͗C1<d5_k%a'))(ho|M66ʷEy͟(iӿnV(dl0!^~덕r?5CA}~ss ^;`6a7!88k?✕bCX^[rTU[z*c-1.dEmlTpD#x1;b%ޏ5
j+sa**u*+ؼE5O*hCXSͲ${3>ڒUOmI51VQk1SJ\c)Fp	GF7b3n{p+۰܁ǰO.<Ye8
܏A 
<7AqQ)>)cz A2ԙR(2\DCW+cj	6qkrNbIЮ*v%{p_TsEեkj3ե{cx8V8V>·3-O1|@2rLw3Oď1~a?.hó؄j<p3 bE<BΫi齍scky˭wԎFC^Y8^C~Y8B=&۱b288e#1
*AFEF8(+XW_C>.&J|_"ñNT^ >]0QB?b\)4sp|H>t\GMk	ZORK;wǜ8ġXѿr>ƙn$u^<@܋ʚcؓ2_"T+ڿkmqY
߯*iQXc'jOAHu7~P;0sB*'M0Pwxv*꒭ewH
wBw>SU-e6dU\e5qo2c6=ǥL ďH3)7ϙd~K7~k.781
4{Z{HOL_d&*ex	`#KN.w|\>hO^*VZ"$K_#)IN,;|O܉Ob5
ИؠgD	aCILSEr3o1K*FIYWp0!u;HUy<c۝7kyMo
Ne1̠LQjwYjN؝G,GS)/gk"Tbog\'ntl`P"SaǇe!s"CTm"|0`<'3K^y'O>Gs9g#rzX9^q.@rɑYo90̃i'%3.զ6MJ:0Oug-7ֺge)r71qȜ؝115̒:tnk:5֧ۚcѐ.W0sc2+k9ݲ3N^ҧߤ:U[3.g	kAsTvt0|),t+HP0wSXkq9?GXICK#N嗭W~F6;\'o2\(
7 Wͫx]^Y	n~i#+q|V`qv^zU1B9D.cuip#fm̝X\>zEJb%{QL}sd0A\cUE@;@8I9EP#r{'ңc?1K!ZE-d\^!b5gLLL
r*YTK3i<."Y0>6-i+a0]\	QE9[0]L#L#L#L1yM'R$Ip)^-6xqq䗮yzLV,'.*U+l6XaIUNv?Ƣۘݜ 5Cki;N	vѯ6=퍦m-e{ׯi~f^kwZ<U^*Eu2c~"Vſpu¥,5p[q܆jw]ܓw[v{'vnn]\=\؃$R*u[Es$"=XD׸XU֞5C	#$L*u!UIr
'S*3n>/qirPֳCB<lcSGnZ(="hK&(7nD ǠsUQIG[3֛͢z}ﬃ8"}"#db̞ws{՗19WPK	ʷ  Q.  PK  ]W            9   ch/qos/logback/classic/encoder/PatternLayoutEncoder.classSn@=RҒЦMKZrhKRU$"ѷY`{SG!f(u ?hgg93W #42֑gʰ<_C.]iM^>Cfqϐ{?<,F9\aFE2lM)_\)JB'n+K:q!9-ZWI悎E\J[ȉBnp6w\;)鸊gB|rfPֱUʠӊ{C١]ӱkE}*6tl}8j:hоcVoc:4cYq"gA:O)y;cmqi8g0ulˑO]M
lup,\'|xਮKq-iP_Ledo ȧ'`d3aY=J[=e+hO3ȏ1lQcTcTON,_,Ȓ--aiK`U酬Pj`1b(Ȓ۸C
? PK0  R  PK  ]W            /   ch/qos/logback/classic/filter/LevelFilter.classT[SPM/*.".*bet	<izl$?EEqG|G9ICahl6~6`OB0"FI;]ͲyniiyVp[QsY6˦НJELA\E*C<]4NuQ	Nt<xC}
*.a3Ƞl\&r	`P+ʐjWb,ת1D3MłD?"#Ua4rqJ#U0b5ګ0@DV2osR(n)vQ8Lw_dTd]99ƻ*fQ0̂`xjGI\ g=%tnFe?/mӯvcJ&5mǣyDX=CQ12'aXj5%Id^sSñ-X^!&[\]߲+!(%h9#[uҺ ~tɦ-߅39y:z pdK|2s3/e2M+qdM蘪Q`>D`SI0Ťu"!t%~J@ ~):gP#
Ԉ<PE*B{qQM
~,K$WIGTP.cocvı )'&GR.	Uy?PK}?    PK  ]W            3   ch/qos/logback/classic/filter/ThresholdFilter.classT[S@ZҴ*7Eh[.Q.
qRdFtm$eƟ˃(ǳi(!|;ߞ  OhB Zg9irwr[}M-Fpc0B%D0L751͝eOdɺVF%D\AH-:ήsY{i5zc=a4z\5%E؋U(Bz\PMXB2?Hʤu74+ACǀACf5ekT֚+kdOPQnYzyGAqҵ|XfKTS+Ԭk+:iLh#UƤwi\7ե/]#cBZ=cjy'
-g#c隹نh8e<j*	J$[^v!BݵD/:嶸޸>Kv8٩z9kJ[ZMnB%/Rp*:X:䤨:<D
05=B4ޣ?fL|;EhlØQ8`5G|$q##}C''懊#A"Hc6N&0@ޞz2:H'Oˉ?{X˔6>^bٗBA"EUm4HD B(>"U@	)ǟ:AO=z!*\%<_PKS  T  PK  ]W            >   ch/qos/logback/classic/helpers/MDCInsertingServletFilter.classUIWVH1CR(2`8` te[XFISzfCC6]tE{zd6.t}w~ǟ | 3 |p+rYn-hz
Gvq[@@B$lQ>M쁜-+eZ)ɊV)dT㸬ZZR
vf$+NRTI9PKMGRklG5մ6tS	]2ܿN s_7n7:wRpI̖UŠ2B9dR*)P&
P5ݴp»㤲\;I],cTx 1$`X#(f9?]R{57*6R"Hj\E˪kMJaQ	<?'˜I	2]$TU#.bꪓT Ә0+P9Kw">dp#Us<}bIT4\oU.Ls.A,Tv._J=/*
9ڡk̾s$!8ZSlI?V]Ux95G4sis!l;V5C]UkP#ΔVQk엉LY׉>:0(y.=;y3Mh]7fgh(hj2)T*
2ܽhv_9
ΪUK#R.'7\""8WWlXaHC-=l}6fD`ͬWA䵂bA]/I3zȪDZ$A?n6d:N`.a%dUw4*F/)2WW^2ƣbщ3{1~Cq	IюnF}zm/!wdysqlI;>vD!|6Ǿ7dS!\g[*
i An싞a-Dx`ɄcA
>}:o>uХV=D0u~9qy
eA,O0b"Ap)PsVGҭ@/6DDH eI)U)ԫ+_0*`O}=R}NF}osc8XiG^nl&1ŤrJ}Rfl[MFlVqn::y}t;5 PKp#  	  PK  ]W            ;   ch/qos/logback/classic/helpers/WithLayoutListAppender.classUmsU~ndeBiA@j
iڲ*R?n$nݠ?
8~sx6Ĥej2< &4
d(Z;/0+\vR](aU`0)p|)^h;Wu;uh
S8)2
 -v@ڡ@Tiк2
Lbtf#m]ĬY8Dز8Ylj8{A`?vb xEq`"'7IsC)_SDm}@j[Y6`̈́o/%	BG]3{SeX1p֖wuuAvеuݦH^*g>-
kL ߊ =},{@ֹ,
jQ`oRdvەaϧ{3?RkU+T^OmWm^*u׵gI)}f:؁Q~ez%	V>_=B"0S:$yG$TRakH_P@.mZOir`-uf7/()z' ~V)Ԩ+M}2QVH(_CkEڟSGsH43by_Vg8G	}\n0XiK`؋ae q^X9,cLkCzׇ_RK#_.FB[8Fx&ү$'o|GB+ȑ0|1VLyV6E:EI42 8mArRQ}FSR%Xj@)\6GtX7\yOT7BfnL.	6h_PK?    PK  ]W            3   ch/qos/logback/classic/html/DefaultCssBuilder.classToEMc7$?Φ!)#Z-JLR;[;fw:T#78rB Yl
aK;y{Λ?(MN0)L2}sSrmk>v0Yr=7f8O#pRFx.bv,nOa
oMa8l/]}JGzs
K$+7Yqo08ǰ`w̯T`JnrKV0+(/g߭=ث}R-72̌LcNțShEc]tQw۝Q|4"Frlߤqh쮊£Z]W})ٝe'rZY#e/Ѩ)G}_P\O[OPxSI2l%XXFFo264
Žo`OnW䵘*t^ш6[FŻ<(
?otELܯE\J:¢6*t|c҈teHxUy"]I2-1|JvXDJ[7kͣĺiEҁ;YfQUc^ն)JgHh4SX:>k+ͪh+AOW
kWT?$2LT#'M7R6w5aǥI4Ko	ǡ [bSo1\|-aj,Ŏ͎[;݆FҍHLZ %{QާgfH6ieIk=$	2?[:NOIx)	K$\Hl^MIKw<a`CWqlF>\G	9T;ckp)C\WߒSa~iO?qSckvWStY/ PKxfA    PK  ]W            :   ch/qos/logback/classic/html/DefaultThrowableRenderer.classVWW^L#hQi~ ؒEʯBILX見]څ.}GIAONޝw{ߛ_e<
#h8rxd*UN-ˢ'Ж1-
cC]CX!z*v`ubʭ9\6rѲQ%~D`$o!tf<'JQ_sr (ki[Ѣ]qk590>
j8[V<Q]tϨդUmWJw,5a@8)0uZI]kF~;wG;ozzTЯᴎT71EFݕ!gR^)*guSH;jΛ1כ3-
1NeoW5U%34:8M(sYemާ` n時Me[K4금1yv#7c;k.qY:>.lGe&7-wvdZE&F
`RCV\8iӶzq玹مݕT~qY s	DU]W
!|*pݧ2]SRMC~'QU:T:tU;*4aI PXֱTk*/T
̼gy8m4H/_]Z&ӫF.ZEjz WEj87[u)+}ϑ4B}MwO2U8IjCr	}&6ד{0g
ŷvg{C/%wm
Y)#祷n^f8+f2CvZo<=Y^NQΘ*dD3 n߃/q+~0_/ w ~U/vzC.P4AP&AXHFo_8HokNqz<}q؏"z q='7={0h(X5j Wx
}8mSk嬚Hm`R&Z]-K?aut-V&{6ɯH+}xԊLQo`:2Ç	i7 4̋jLBk71E^Y:.¯6
'Se0q T_3S=<^ns*Tu =B%h66ϴSgdg2rp"H>'8\`=[O2Z^CߐVS_ͼƐĐibBZ&_[bjk|" e
pCU+8ϗPKNjC  5  PK  ]W            ,   ch/qos/logback/classic/html/HTMLLayout.classWiw~%YP`"Lز@@I#D[8aIX[I#F#i8M
tBn&9=zNK@!m;3,qܹs>n?!|G\^x(x29#Y}vZM$uC\6lb$S/%_-j|ƌ
:&	<V7dv:RuiCSSYmNvp߬ftRɎ\q	^(
"-y@:Fj~62alO6f"m6S~lKy@llV.I[fX/e)FCN<(O	tV"ǇLn`SGP.Tj0tjڹӮI*A)a6qtzѥ nGk9f5;KL
'CS#}cm%3G`[%2Ea$'vZڅ4wx&eqMMk-Z&kR2}@A|qKyS,mxʋ
z+Yüb!1R)thND߬fd;h##^<DzŔl6|-M~bȋ
$m\ c`6aǼxNAL&ծj5=OzfQ%6KK?lTZtDk2:OJG}S4>zQ	pY&X&S=?P9%,UB/Hj:u T/$A3:֥L0EXWˇ&lo42
28FQ0f/	ـ,r^(tQ`J_0:}VK̅qć3嘑-)&FRJV ؞z:IX4G۾+x**@e|Ջ|
oyZ4Ij89TZB-VZTԋ#eU_Ar4cт>Ų$V|u)/Zk'Z;mã񩱾E\yM4ͫfD=w(SlR/5j4'jd36z&e{da&w:"[²ʝSP\ZH;=B맇!1]bi\jNX=Y$mKe&֗u[WO;`Z]WdFu8Uߎ:)R
굵Ji麶So%SdXg(Tm̴S
v(Jd8^{[u:?v4#k㊨o ^VtCo5 k!gN+t"hZĆgx66/"a+ovyt,S~Ab5\SȻn	p7t@	Z#Wy^-U,7<C}#q+-8GU#~7rq;0~D%:M<Pњ;
isαAV}0;
/!⎆N"/7{WXK8ĳKy!xzkh&q뛳<p湃p{	<K:TƫHr|;_$c@><9&HG ')<8)L,:GumIYuF"/j'G/I_qU5^o}qQꦌ#-zv=!g's",bwřv]q
ty;`XlH(pz,ᕏ=wz8Uy،"ϫs8@㥙![Q̃qIC4U6!1{tGHU+sO`sƂ#dIP7v$5^^5eNuX*g+׋h.䎖khGH=wٳB6u6o
IZ-lUf;eJFM73o%q-rWZނϱ͋yFȿ4/nc`0"'JVQ(^sbRoc PKIZ/  q  PK  ]W            /   ch/qos/logback/classic/html/UrlCssBuilder.classR]oA=.,Pmmץ|Dhmh4!}]bď?xgY(03wf=O P`	*,H2.),w`]p;dH:6Kn
)a^=˾=4 0macרN#,.CHs^	Ap4vD4ֺn;8H!ǰy(R?m!yR72p_Z`TY$ш}EQ̣
Ԙw^uZͺqdQC7*2oF|>7N9a\lKt-ߑP	NPmP _-|WNO[)Ao?A7m~D&YxI_Y#͛{+`Mg.afI>*;b;2d01iw?91#(QR N1RؘbYDx{yUjpmU6Z^.@>r(!KaR ~R?PK&    PK  ]W            4   ch/qos/logback/classic/joran/JoranConfigurator.classX	x'>(b+$%	GBvqr\d'Cv-WbrpҦ'G!qKB}7++eǼy>3 ؎UT+A-C81̆u35&	#}7jZ*giuYPK34jSV`)^aǹ$e$f]٬T12ll6s:<40l)/1['
 ^̹aզuB
몑
mK3Rd'DYlpF5=<3T\&k܊,SpN k:sbPɰH,R֡:ǰ3sh:{@MVa=y-+pYnٽ7B]pFI	-u#ZaOp=DkB!/2M;Z2py1l5f2HrkGCm>ȥ4 	=@úY̚:?R#{<	!+E
u)FaYV⚌8FHIů8]fD>p M1͈s)y`:d zP`+cZV&d5jZiwCeS,^5qb 8 #dc󺇏9v5Ӡ(¤u1 2&]`|%\^\!H0yKL9B5:bA[J+62_Qu$8.3O!q9Q,<:SNqur}UEvU#H04fYs1옷|͉T+E|)^;*fpLÑ H3/F
Cm/WmNƳ-:jO;R U`	:R'ɍ.]䄲CGM'Upx[yDx.C[Vjm}ι IqpFU,CWiy|%n
|4/|~ة7ɗ$ohgɝ,/~9CKE=	WR-U"*	frQ"vNm.|Cȿ)vPE-!J%:)ȥG5Y(f&T}X4Aj9*"X$_~^-ͼ;"-wCa|rihR䬆ֱ~.[rUV]M$ՍH6ymYEȴP-PfEv,\dE:.m"t"mi]Ҹ2T;'.הN߫J>ћwtRFfJ[=KVqb
ڄqXz|R9BӊG]c
NzCO
ƧLI3SS>//(8)/	
W5Hฤ'+_R?
ԏJgWpg3qE
O6>2ԕ+pXR_6)p»N{rq=Vo#;Os QWkƄ91ϔskz&-6Ƙi2cŽtLm6JGܸfY3""
U4 p~y(C%+G:}Qaz2z4M~k%o_x=,	T,<@4-3cu޹wwm.EwI<fmU.%.y;=$o[.wyvbPڰ6t.B;q"tX݅D;8	tSU蕑_D׍oW:J.lHiBo)<Y$_bh@Q7Fo;tu獵@4FQ]P2tpFUĺi7US8ܿ	L&'>`*\8,
wTû2Pߋ`qS8TuA=3fP0&^R4&);.X8=}=_&}~	RB/.Ewx݄>ᇾзw?~Y):B+ֽ'з~}Я*EwvBS~;Rt;O"Kml<i >Dc|'
OFFF_,R}0Vaя
_WwY?PKoK    PK  ]W            A   ch/qos/logback/classic/joran/ModelClassToModelHandlerLinker.classWsFmbQBr!9p4-m
(Q"KFSҋwKA}3-̘~LSoe8L?Xj;՟gІ%T2*KPp@7n&Gu2NbD׻tŶL*FBV\3&թ؜fhN;x).p'zXJ'
eRBW4m*mӊv1%;'LY2CPXlUS=y<%3hn_B-Bq91!N
oQ:5ϝq3	0tN'2}-q$=C_c|BRb$yEmM`5B ?\#c~UJ!<@	䈛$<f;ư&%v1kAasс>OBmf:\G:͍RH424/qyBUBa[L-b;'R-Dv0"|DkX{PI0R|p&b\jeMeU`&5z+yxa9dӶ]%r2)22$"!Ei3Gne.t3lQ<{u(E 0tsT2PElOQcgXXd%>Y~+$NT$h'-
_dxc(QfqSUa؛r5J@~.0:_I{[W}A-2,QSc)R+ф ZeADf-g=:V@``:ƠTN"N*cc))v=̓7eGVxR8Uc\&eb큅s}U팚*'S(H3=w-J[:%\olJ%BUS4ϔRS
pχʋT
\ArNO%	/߽BI^yD(oM=dXɫG'Ppgh}1s}$;X>kbo3?f,}.|W27gS$jFuHUWpG_8<\ʩ9I7AҌdl.4_˜`H.E5GwϠJVhn=GuK/(tg=oHzQ;﫛oBVZن!B+s084qpU3+^t57qwsxU.\znbYD<ؔ6n"Y3K+F	<@>h5<H&iv')Vփ8"ItLWHkf|kss;M,?n
tSKctA
I-<Z3eG7tFp̛##d(jBmBXۘc#>>jo7By,>˹ ,%Y %XFU*r8%PG}ѴK>zC{>GW=)u~OXPKEv    PK  ]W            :   ch/qos/logback/classic/joran/ReconfigureOnChangeTask.classX	|U^vzdP
-l.B
iҦ$%IdwLYffF(CD<@@Tē*}}あ&dF~ٙ}剗?lqBe(P!`2׏݁>33t=+gx֞`nӳV%Zi;vp@ym]OaTi]`sO@k!d,'趇6;}ur}`y:X1Qv2L'i%]zV4HV곽`0eTL(G똏ܡr,%^N\nqZ2gD)/=X'M1خӼرvlXcV2pά@Ę;vj5XaSpiXo{V)L
ӱ:CSPc$%2%P3`6VRiGNR}mc^<	$H0zNj1Sͦ[WP8SY:9%|&$pGmDk&,4QJtN65}eJía\ pRݒO	L74Đ&T0wi:Z一R2WhxطR*|$
:%M'i[&){eڷ:~ i::Q B3|/xű8Wo'-4rSL/ӭczh+ٶC.Gx7bEE*p̐S&l|Z,?K,&܁k*%pS*U 9a$	t5]\!XNʗjO[%B;u~L]ohK[X''g)ѩ	ec\wp	VO' zr1%PNHlC#f6{ɪKn'TrF%VZ\
Õk&h[.*j
,1?^{Q.70}U.s8B}zSJ>1?Gp# '7o"4.ߚ wMYx|66oŭ!]v^8lt]JϢw
J@uĠֽKǻM|وe9q7R	oi;u~集
=I+#	レTA)sFYE9%eqJ)V=w̿|[cN5]n>gA5hwgݬ?!di0l\k}pR1a? C\,e deVG>:e"C8,pBAT}gpe|.7tV	i9IiG)Fxn}vZ
.pTH	ZoSQe\Q/I5JC97qivR#	h1%/
_g}\}
kck427LkoFP5oˆu_)'{8-K5MVmmmmhoi]sUwkG{oKk'sef浭]͝k{7v6vlZ\WUZiCowGI.{1s-quT%t+`"k<ͨIڊ&)[PvPu|MpL-tr/6 9EwFΜS#k8:rQϢbLP}n\^S$9M$wL6MGfG0IwPӦb(ѹwwۉ7Ln7Ûk"PRA7+2%YVh=IM)%$|~b<jg6"1Ϝ4)!f%8~|X.9Rj
33mV0EmvyՋIWpx#Ka1f'l:e8n`lC\,\& S(TzNGEb&c
]t/^)|ë'<aΪu4)$;i'2Jo~ɳhXD:M2?,_q81Nb*?ďcގp!O}?jț4_3s>yU~
+_\ibl D 1;&Q/C`1*PYWsk-0äݱp.< ?^,}XtǠ¹
n?Urc͝؟g6`^H<.<m
d~qo;hIq/UGVŢx
eV8
q:}w='L8\6oUщ5ނ.Z؇
%p'p6*g9$Sp@eğ=tjt9o\9`hX54pmդHj󫌿l!a;1/FG^uWKťʕtn&|rL"P`tɿg_G>ދe{7^$_&
xsC;[[V?wT,F;ǖTքF{}j3捸'oy]vSRRaxnOANevTq|%yF7	Vlǿ,/b<࿄A<B/S|X¦۫F
/0p %yr_ޫ
5yrnի7?a-DzZ	n<TSA.}|}9uѯr^nbooI_]Ɠy0icdS[˙TWԕU4jkϵ>dpyHI}WoRht3xޣF7>2J*\΍gBB0*Q([Ha0/ar
{4<YEv&e
UAw>ه+!s˸R)BQ.*H%9l`(Adǒ-VoRKШi!Q*ӣS.B(z*U*D#ꩫ'U"PK_W    PK  ]W            B   ch/qos/logback/classic/joran/ReconfigureOnChangeTaskListener.classP=O0RJHl|HxdRTs$n-ńG!.$*u}ޝ-؄:Bw.ȤI86j'l!T*m.2DR-dk%I#&IhlF)=rƄ	!"7QH/Jf3tyag%oFƓxRڪ*"ϋ{5JygZ9Z3缔'`c]a3K
hW`vط
8V
K[E%]O<XAd'PK/  [  PK  ]W            >   ch/qos/logback/classic/joran/SerializedModelConfigurator.classY	|W}Y&>s^W7c6urtI#'T펤vg6J1@&״`rHdǦB)ﻥ'&ｙ]]ͼ~_%z5TlJs=6b$&	1ikXn. 4uh	ԕ:˦xrSnI19S 'e}u;F&,w>˥cX~IԣfNiMõYLw>]3tfi8quvt7NqtG%e:V`E'g3svI;4ֱkv׽(Sf"l5|N ;;03{_pO|n:6KYVtAFQlg+'r~IYc+|[
k,6Ejg.؆nQ%1J掦\Z~UBZ;Ih@Mi󄩼&p|/0XFn#-.=u'j~geİEn;%u܁;4#<j8Vɻq]:n-|M9>3/Q{oֱG8O=`w2d,-bH!sWyYNQApa\h	/)ϬYiюuB	_Dʫ܋C2t
<\h?.h^4xEN
A65a:aFG ҽq7O yb(B hqܼkFΤ	NLޑfs1JjDb彴JYIUcX0d	Y!+X+
Sa<C~<Ętu*{I1!R"3:,ج3V;-ṟTu&!u7@<GCNe;0Z2<iSqq!-xêxV=ljifK6Ra:1~R[ܲ2IVDqHs 1St*:ò=mxB l"1e< ﴲy[hvEsAnn?d8I2YH+xD;YJrƻt[FosIiZ!{u4=af輨*vaTB2D?(pk@<\2e5ʒhK(&DΙ~AQwH,>gs,۟2ls939c'Tzg%
KQ?<>Þ$G9f52=6yJbV)}_%SPolҌ>X-3Mz~fR<MY_Cp",lݔ9Mq^#EFE0^qWL_ܴugtKl<}^L$XLBeǥ~EïxQVmeҫ|yLgwS9Vi$!u/t`N5ֽVAubKY\4dW3"$~KU{pfgU
Sh#I^^S^<&HTpOuaGؑ-çPK7۹NXׂc]Ͳ{{42jac
ejgTx.wTw2;[W
宷%qTjEWwqwM_>|_yi92ypkx!eB
ʢû@{p
V%l͞|ftd턑4XMOqY]u{xK>%vBtM/wk#=|c,KⒹAAz6M2wu/K=rIܑ'㽋{cˑt9[\&3yMQE@d+
朵k 7U1&*S&J|8Ff&geiveҷ&Pk$4ZĊ3ڵxnd+ERlrjY"F/rg)\Zȱxrfoۯ{|N@/olSŲlGao4VkBEƕvy0ݦ;n's!ef2Z0BAjZ9ڣj6xhO'#fT5!!?)=+DeMYQͨɄ$0H(uDEHXϪ*2E%$};^0$Zh19<K5,D&:XVAg0Nܽ{zxK}fv7zfB<˶'%ɬYb>V#Oze1J˞v鼴ܐ.ce2[{l#ϯZ
_>}s54C9
U^oPM.{p%ӨnxzaKŊgR"ML{ ?,>~E>˧*!\h"
QY*Vhl}+pO V!-
Fc|4pv4nx	wt{b
kM+8&.*R"5	P$i8F
L/'zCgj?&JZtbW6[Ѝ:b77mxTGӬ15w]DCtN,KOyZyeg=z
5l54i\oB^
5BkDKeq YFM,9bWl{ϣUJqKzO'fPA.0-0nA<$=E}bbf֗_}|ڇ%L[_OESҫxkx)娹K_ӫx?#hzGR$.8P/ )B8yNLCaZg>,%lv䜡Fgջ=-$~#qqZdۑȐs9x_Y$RށCUߕb*I'*V5{GZ!uf>TO,ZIA]YAЮQg4&xK3K>~VM^`9~
 <}̥PKnci|US醛qu&l$p
5dy)-Xǈ2=AVvyl׋
b"*6QZPڣRYAGkX~	ߟ>&J25=^K̍'Ejz	&_
oJ
66UUSWm{gN2 =8Ux<%M?]%5J[9eۄԸr'r*ox'.<bi8G=M*e{?mFI&@>BgL#b?A.fɯm~nk%Zm$':qh;:DGŎbnkCR&qWװk}Cgm+:)+Ku鿢jx>MV3|R.pQU"*|SOZ%.Q
TZ꽌o|$6P@OKXx&UEeҠ]0Fq7Œ,]ܬh+j&|
ڼSMQâNwQ6q;GfnqwUpNܣ~UMwݧ~Cʾ,|#?uD~PK`[~     PK  ]W            @   ch/qos/logback/classic/joran/action/ClassicEvaluatorAction.classQMO@}Z'o5&D!x0
mYbٍ%,h2nKN2y3of_)vmP`8($8NhW1I%ioeܛ0a.2)sb5Bp<)dTBlX8XG2asFC&MV>rz~q$dжP%8c7CU#=
5B\p"9hcqMPqְPgTR[~g򱏊>`
 	ՑX:xy589('5	K	PK/XL  Y  PK  ]W            =   ch/qos/logback/classic/joran/action/ConfigurationAction.classT]SP=A
E,(E@B[vhOmz-4$e!>닌:G9M۾d{޳'|-E@_1(o-G1ZkoͲrjTꖩpG<P=0X7u	C_rBA;GהtSRZ5l.ݽHQA\
RCUTAc$gҬÛ꺶^iaׄ[FC0,%s+7kJ(fmw$e0IAGiƻ(1t4nJk1\Q,haܐ@AغUnIڈOkxy3
Q4w/ư$q=al9ʫtZ*1uTV毢D)5;xB("5L=jIa8"ߨW]CȔƍ2u}c=ѩ۹:4tjض0]o%;bLW9'~t}f׋I	\tw;>C4#BnIK#u*atP1l*|EVS]60ѥ)k|4m$L(6N!|
䯉dQhe\}(ktJ
O=ߣW^] 
>J pU%M	|0;4ef tc{XlZn<}xHv[xD"nc3zPK@    PK  ]W            =   ch/qos/logback/classic/joran/action/ConsolePluginAction.classVYsGƖ[AZ1>>dceLZW;bw@BSAT	BRyKUE~HRYmc$
*17
{["Ս!nu3OCi9	aZrAaV9oU]aD%xPAK*6M8lъl<y-{e7[e՝gxX@JRDUlfpzz8æ%)yDІ
u2#
$1a^W,wSԽY$Q
.[4'ݻaz	۞!g:T^BGE[1>dVs&f{̗]ImYH#؏n=*z0zB%3gfI=_+i@-lvwi1>:WI5VqU8m3^Tv;QGT12]bֽU=RJra3Il*nYܹ{:eo-tnI3*(m 1^iy/#I3TBJIA1DFBTR}j+*.2
R"8ekFFF#8*F0JFRX5Ry0"*fJy:9@hF0!s3_&uW&M$
'uYoP |h"GeM1DWU-Aicڴy>ťr_#IjpȀ`Ӗa>p/Xi+}Ko>KJӊ$p?YF(zK:̣ ˛-:k\\<&/daj2+{Bu%^ï@lyws@WkẄ́jd23U#Qv>l<V'7rz^½ȹa|pB%i].j4
OcCrP^DW}/\WZJ>3<Vl_-iψi^zYS	>KK%-v.*K%T+#czrIM6eL1Ny5þ2UfY8Eрv]jo&[ˏFvq'`s>kƐOQ2 N3$E쁯x|0D0?5SlPo,;
h's}tЯJL*8S)-X
.Ĕ
c\Ica>u920v4L`"D݀ҿvzt؉nts}8Eh$qr
GpwpG'0C\4%ffvL`A$WSa{ொɪA-@<f6I|	He8CPFV@Fl߄XMC	IXM֪?ejxw!M<@寧3Z|E;H#>/?~/47PK    PK  ]W            ;   ch/qos/logback/classic/joran/action/ContextNameAction.classRMo@}8I]E $$KP%kwnqe5p?]Mrf<g/ `94ڈb4"<NSRJ+!3M!^R1'*?1T='4wۘ'^eYL}©;WpxF_RBUTٷ29Lj;% '.a9t~ҫU@={r}9zyϞ[Gw3y!E.;A71v F\r$'ʩ3lW4³ȓ+x~j	y>K=a)~z>&vmg䯛m̑`O/Al[!yu>2V)W7}W]bI}¨	7_׎qm	1Vc\G{=f#?PKҡ    PK  ]W            >   ch/qos/logback/classic/joran/action/InsertFromJNDIAction.classUKSK#
W'0(VLY3q2=K/\x7Pj(ӓQGi"}:|wN .v:i°Ѕn	lׯ׸v|%e_qN(}Ϟ恸/	ݗ'ëٱ\HCs^ T8Vp8t-;	/Tro~.-aWu{_ad.*wa$[Z-nܫrKZ!c赊LI :xcXGvQl!0qaeHsZh~BE3q*ޒ/x>è,l)	$Xb5,<JTڷW-ڕ9
Q+J\3*%Pp'̺C)q~-8eQ #{b<oa\S\,cHmgg{}e*1CO]S(75yw[Jj;^4G:tj[:?{.HZSK3Mh"yk%oH	I$W~K#ϋcrև%	wZK-
Sg't	UrĬNSZ@?_qe}v=NBsbh_/r9Oh =I qFS0;e\zX^m~m#i&P1^<KW&^g1]ƕH$RV^ih`7b)yc'N1e5ݧq=!zSR @"D/	,')'b,')'dfqnEs PKxV    PK  ]W            5   ch/qos/logback/classic/joran/action/LevelAction.classV]SU~$lHiЦJR
I lP,"@Q0'3aaw7)x/߳*T;cfx~ It[ALE=;[N«{zqy7[Xvak6YL p\#:aE[}MBARcekzѱ}=(DJ]I5%lT܆+|.=
]횾滦]+-O/B,xC6dAЛ#0ɞ謻ba\3	dbYQ4soIv)EqY.*7Lfm#-eO%W0>`gV_ZIKᆱ]
F̖ΰj	KIKhU\gݴrZڌ8&,Q'*<ͤ	nL0P1`<",!,66UcȜ'ۡ4IxKfLAWpKmܡtNJ>HA(n1{*>HxX@3:X*9Unku#6yvN,d/@v.cEo1$cb?+Abj׶p4-t]$~`!fUg8i9M*L%֔K[TӞƲwJjt&ZLO3&)mEpWfhYj_Kk31b-gOĴ[q3t
C6EnFKlD1|>+k(rZ3}AK-ܢdWx
6nT7@[שwA䋂ih~I=7j[ c
	 8P6sCNұɉp\ͥ4ʓ;Nq!d	cV{máS9{ HQp<0O郆">%h1<B;q%6S#߅x:n:KLAmw]\^,̶tppX"KHbN$9J4&H)4+kl!7PKhU9  	  PK  ]W            6   ch/qos/logback/classic/joran/action/LoggerAction.classURP]ҦTc@Ң
#ghVFIjAeFGp.;:{'~ч~g뛶۬si0W];&:
nCpϐ1:Rwy	uRm-<p4tA7Z\s{R|V[8<{"*b\[mni'fzMs}6}nV2[˅EE.c`2#!_]/R>Kd1̠K?|*c!3}_Z暺6/%u$2he28㨁c8ΰ?^TSDEjX5)VcNe@F2
:6{j~
y-Q&T)c
E4o(2xLgS7:ǔGt^ΰ&V^ɒ'վcԂI禎	0,CHZ`OZW*ҥ'vW[6P%\h8qVQau_Qw uD#pnp^p[%nKUC;pJ8G?_hghNoEiLƣшp~;˸9_&JZNۀTvP\`T< U	0X1*Ѩ:Pō/䓢M/iliNg"C
ȠATN{ץ9M` E9E4CMP%(lzs.J y-">Iܦ	<;JZwiǽoPK}V    PK  ]W            E   ch/qos/logback/classic/joran/action/LoggerContextListenerAction.classUNA=C
e(W4TbeR]"/C >ζ-6sΜ{g/ "@bq&0iX=rrۯ,Sw-nsUg޶praiQ2Xf34%V+B=7AAp:AKwM)O181\nK)rGnS	C/]K"+R
~v )MQJ\3]~-ek#P-g*[{C+`?)jq]&*YWa%.[{V0ы6?"Ko2ҞNstz
HOm+Uٌwp7{&cmCsY$B/8eMd0`"\{P$+aoHF`h/HWWJB%FN+A#ؑ\=Dl	x7An14Ha7L"5C)zRHܟRE:R$4,mHnEݜ}*O.ځK
qBt7ЅtCF1FmL,ԎSo"=#`#OgMpv
m_j$&^͑ѱc/)ɗy
z t
dj~ƣ,20OsHDo`Kb'6qK'?cGN	F3)Zr]-
=!OPKL    PK  ]W            8   ch/qos/logback/classic/joran/action/ReceiverAction.classU]OA=S--W~Ж"""$Tb`m.nkO& ζ%@h3;{9ٟ kID#ügs<r*%n5Lƾr/x=)k=X3V-=v <iUfu I}M^3D>b(a)09nhT-
c]Yc[50):7,nW-
+l疒5ctOnW	a4N3,]XKW]jAd8_c)xpl_4Ш&⍧ua)=pcY@1uTwCMLPM"hqJ&{j/([:nC\zvbXbSmGmjIyɢT1]֭MߓdŎ
.*0j*o\XCK'y-$pT0FjTZ$?qƻgU|Ƈ\
LxLı:K{BzjՖSsML*/ל҅IܥKZz5M4z Cc,؜@Ffh֐l+#(!ٔRZ|8@ 
	Lэ8 /6[i.Уq/ЛSnC5,7- 0qo8錀<IX*+DPPWPKt    PK  ]W            :   ch/qos/logback/classic/joran/action/RootLoggerAction.classUr7=JYqqHJ(/64,ΦUʙ@oh/
S`Iv$vo:g>:|{oqh#x& &~
"DmAC)%2/oS*Xiy"FȗP@}<ұL<'Ykqaf\*00Kxǈ+RPBƩ={G!&\L3LJv *nvmy~wxRJڞ9(8S%pd*ĳOvJ
~,,Cainceiq+6g=ӴZypK^SxОQJͳP+%|[e}Ŭ2\P-S`[\3\.f9HShUrN 0hZpbj7Cdج{AGoT`mÓL[	ڦ }SWg6vDR-Զh;8C1 O_dGʷU$DEFV5x{nmvU(El~df6B'~$MNe
꘾m[۱1bb+1pޯ{
̇n5uI㗴F+`w++pk7tpn.s4l?1>\yj*?XjK\~ἰ:$r4^ i<|U-߬5|g5üU:nVv/P,RICX3_^cd^r~3L}2p N,#l'=a=au"qՕаPKY0)l  !  PK  ]W            L   ch/qos/logback/classic/joran/sanity/IfNestedWithinSecondPhaseElementSC.classVSW]I!.>hUA <R
$5%KrI,qwڧAig_LG;[g'u:w@{9;{/ 㱂]'r=ˉVaJexe:.7]' 
B*j	8eLW<tGp[\`%tSwgD}m7F%+/\f^r^S_Ec[8z.h܌;lX2qE~Vw9_/XM2(f~0Ʌ2y2ڕ,7Y'+ҋˍt
IZj[[eM[壟VWrOYIvHuWLnkPQ2]uT2AJ؍PqlfPtgt.{9r;Ʉ0jX-MryY/7bWKÚek	pYS!]Tхn:6Z6:um,Pa
qñPnPqqjҜ0&Sя8CXw]f8صO'tpFYoHtYdJՕ=Rݾ0p`UȹC
:j%zuPqTݖ6:%\VpӺ)2ya{MɳT\gHJ;F$慭>RÚP$/㮬60X#qd _ܬ7%"WdFӣWRcs#STͩf}CUfQap!HbBj1m]}b<&ǷuKɏ`N޵t$eG:P+m/yz;Wþmawb)L7cHǱu=0LFbg}RI?6.NYصZ;'tIײַgejkpV	>EMKaA1\7(r߯u!<`*HG媛ڍx6d_mC>cծqn
ᴧ-T)m/	~g{ޮ"
#KwALS-M#S|pլī8A7n Sk4n<C-|f@Q43hxܦ1jwc*̾'jhx)vOĢjo
Ģ?]L3c$bEc4n@[^כ/pa0	C/pi0Z9EF%!ƘoQr9 'ҫU4Y~M8n ;<N48:Qn<BуoЋo[s%W#DD+iu(ل*U%E@E
AU%rk\행Pp@q5?}~
n-k o$f0WǴ'_PK]    PK  ]W            K   ch/qos/logback/classic/joran/serializedModel/HardenedModelInputStream.classVVF$P4mC fBs!)
N@!I<2	}s?H_V#[c+}ײG\+hhc8^q;?ʲCGp;Olkd0
v~a;B/9akQ5e8Wu`r+/\f]EOdO^o3c8'zQ <c+ʵ}ac
}XYɉj.0Lqqxou1KbhxYIWmضy#!N%q}%dk|$p6Ğd/dV`Jh.w+eou0xPqsSkŶ|hưcN''Clځd"tŞ~bxR!V+],{ۤٔr~IHB}a&_r37֑-n[a[2A70&4d.:wxg	Qlɢ(XwC˶%:|ɴY"_j"jLvO+LE+C!(N$&ᳳGp$7|kc m[z9꬯p'G}X[eRť^"C&NA¬8>SQlC
an%c	P$OiT6

FU΂{;kw5cpw7GȦ[t;$}igZ.4O[4uKWg?h!J^+5m
6c%K+_S}i;3أh־GGkN=U
~So+_
!(xL	+xR|M7<
N)=y/(8eg|?Z] ]щK 1A+X11Fb_"7H[9$~?qaӈ5E"n8Mawh0eq=iC0A:#|RSZ}V)Z`rh{$9wUVbҺ[5W#bF#A=tWVPK)pPK  _  PK  ]W            *   ch/qos/logback/classic/jul/JULHelper.classVsU.iI&5A
HRm E 	,&Ht^mowCvS'?A}8>:?%mSI=g^"6"8.2.kzZf-],bs!HGBXADACnx1DZXA4ԸSW9C"mÖeB2 ^ Qva -\P0pb{"/bQkrɮWy1,3!CM^|qT5.FM!G0RwkM·1
q#ե#˖+zu%]mմ&AB.x$X>SpJiP[4aC@F%U$J0/dswK#rE8=PL
u黠ϖu$]b.'%
Ҳ5]4y!齶`\q꬏TLb+|2spvtӱwzKH'^!KlK\qCA^ŬL>arSgok7N6=yXcek*n.~+
D0S%u-<c-ޘ+<qͪb^owv9KM{JA.ZS荂e,Eb$ѹ&ױ;2*^+RFhzM})ѩbϝ SvO
k//(ӹ0_/ѱAVQ9CmфD/4if;
~;K֢bcAX+x$.>M0׬^^uwznfY+zfpm@3eᤎ7Mޘq[A+jCi` O]&KS/~ku6]U/ CvᮿxPtC<G{(]?+.^,0."6!,ݬ`lN oݑc'!mؽm x/|࿤cw^`/8W2[9L/Y0J 4ϒ-?LJA"'6!Acs4ާqqSJWȔ-&/p$VwNRθEڮ%ӬmLӼ3A87G$9}1I=R^5ږ 
RB_tvli/qsIwfgڅ"}n[;qߔ!*ly}k+,E-Q]/*n6kXPK
  	  PK  ]W            6   ch/qos/logback/classic/jul/LevelChangePropagator.classWW]X0B^EHZceY>$.,YFc˰f,;q;q+8q':8^Wy/vvvꪯꫪϻw@b:Q#Mg^p'L&̌7ge\7.5cb1
/F[vM~buAG#6[i6<e.L֜7iɛg7| s.f:6dqOب	Yިo|sR@˙M:ZLmLhC;B3th*[Z`D96lװCH
4)6Ɍh]4L	IeL\2s~_gv劾f!y֘1CY4<p|OꕫGʨأc/RfLN:S2witiу^5hdOI
oA qg	T=
u<
rYH+/u\BXg?* IVpZI4 X[*f1BsR1
u1ʖ8d8ڐ֒dBB>qJ1Xacd-[})Κ÷\Q?'4dua-+Œ6!9kdWx#L#hIu&JB|JcaFzcDlq7b拶Qv׍tn/KEgt<|AV6CyYƊ\};tLG
Vae+^?M`
KYˣe1=Gc/0EO3/ٖup<:e4̓aWt\t}Mx|,H5+WvO;ԧu$GIV0)I
_]qYeL,hJi֚2lr^7j/ܵ|O믜wҔ	1!U6gݜaKqbE;/-3r#a)5lULXj"]uzb&KE{ޟR,!
si)	;,cwCd(:xW!m[7;꺒UAʞl<p
<	-&BW%$k !c.\-\]JLP"VVÍ[ωQXș'-lJ#
ܐO^-ndWR$I#pdn'
$[MA Jdlx6ɕNѶ7vw𦆿W6`Zμ;c1
Nn'_xtاg6*-LI3T1`({<	ɌxW`ݵEY0v
W3b[xyqU8/^ķ\!xoO߄H	M@"&yiy]u'h-؍pD4_7B.&uMGHB71V{-SFKPTE(Õqb"2.x2U<ﮯuT*IVw-ս+y
)e@,Ri>~XiԾLj{ݷ;dHF
8СxO[|.xzH[qkCh_7)4Mo[C8昐G;:#ٮ꾍AA=]lYx[]V	=ܗ7mqA߻'4CG|DxY&Sgȓ8ȕmS`w1v\܋S1įzȯ9*Pᨆ%#/E;dc?qSi37arQwtE>rqs,EbzFle#=:zTϽߪ\l~ߕx>wѢaJìo9.ȭDZ1q>H1U!?6^3^cTګj#+B+5,i*JTD
9j5Tgnc,{#nq
u][ʸwmPK](  3  PK  ]W            .   ch/qos/logback/classic/layout/TTLLLayout.classWWW$L#F
Tm%u!
&bJ0$g&Q}k}oX9=??9ݾ7I((0ww?
`3

<*.9>fᴙВi6c^jtT[BK#j)#ڡ9zie4-@g&ix4\1;pZ˦qǢte+PRE=.4lHRH'X@Cr	a(hTlݓ
',6G-Lt~4Zzp&\K\R`"."QVFk;BuAְrAtt@Mr9USMֱ}X/`V-BoHOJg6zЮ sFx0fR+YCMNDɹvߪ6:2.`gDP	U,-1J#>lj>(]6ԔkZ\¶)xY
ETG^͔@Я.Kmf,apTJVuKaD:߭bu@r-
L"_-c>쥁a%\Cmk)7 8$PI_Lwq+y.QQݪPSBIE
8phJ gƴt^˦klqG̰6ƺϰ29gF˩8v$m݊ӎ<
AYэLՓ	&ivƣa]O?)>nF+E-UO3~<G<1CA9">\JOxOmEIR3*qM>rX#@Js54Ծ"fd|fB2Q=34ːߥI3e02eѩfr:aiI*VQ\cEMO>)گ$N\r
>$W@RE5!
8,,&TZ
\}132,躴njΔ99Y<ڸjNޢؒ換y+C恻/ s?|^<^
/#ϗ83Gs쯯=egQǏpY}:z
-x_jQ^k|y%()[?a,Vuuxv`tsXE]b6}:FMg.`G@o;ԭ-ظ~Z@q<sQ,O*oֶY'c_9sX
ҽYh5M5YghHG턿~zlal:Icwk!>QlO#
;H  >.n5Cur$y|$Dwƻ}\*?8`Gz_e5tGz~Sm|ݡFyU
;ko4bf	\zܹ
sK-sq)fzĲ'y$u? ;H
ãr&䡹T
P#RL
R@H+H"i
u|HZ|Qڗ\4/4(<6WpOl0OQKnTuZ3OyuP[ȭ_[PKQw  C
  PK  ]W            ,   ch/qos/logback/classic/log4j/XMLLayout.classX	xTd2ofBB5"8!! `%!5TR%H
jZZwB0ZK[nvwV{3a͗w߹so^x QSpD[G)<
3BMT0`6C0R#e*x±լPR;g^4uAW](1RpH<Q/k[޲um
]MQ!Z֬Zv&+t1d#F?e%ñHS
v΁:aOcF=D4J8xȰX{/N8drdҟHf
)L5Ҕe$-0Kᘭ
	#mߴT9Η23o
xQ0bsȌYhq$H^},h3Qeֱ jǉG*wpY	~"41cu,Fre[`w҈(=hO1GˠF/Ѝ5~/>pp 
GMz?XR#XVF&tsK .m.W8RM D'8xF
:eJY車ȝ,3dM9/VQ5k i.FMMx^,9Uar &:%e"NGNr,at`T_q&jumlL#ǷN|~bL}WQV!.062Bf[Č2Id â9=).L/YYef.knѰQafn5cŬ:*IbW?ؤ!#%13ӋAlOop':N\fX=yH>0=ܲJp-bд	9[UĽ
@~OfҾӦ;җ5pt.qIp]isE±4:l8RWF78:ߧ%~XkM&pmU/fx6gt.kMw,H3%u
G$q܎;4ܩ.b,7y*|)<i2Be$,؍u-<̤aœ
imOӉa<QU(hFj8
PKҥP,Oyj"+KZmeau|Iza
_V,\5xV:AQclZ)ak }E:*ʤ5"fF3l%./ӬrfnLIJl[mi|ps4"yHg@͵V\A2sl% |>|[c-Ձ5aN@)<.WLޑ]nZ__8_/e2Ï 5\NSN7
0Ѩ6,3>N8ҮP9)Key(ꢲ`%rFEAΉnӇ]â}'p"0li7E4SmGM2Q0_~aѢm7&I,L-8{JO2A,p_W?fXISLVմ`2dJ#<RxJYI#JyU	buWRE`H|WxW^qϪ2Yc&cCfR.7Brݓft<ވFԬx|`Ha8i"=3CMUe k9̘ɪb)E\Y/~W˩=~f}+7G@}.:"	n'Qy)PSJvZ!T̦ZC`.
gtG5~@zFMv٣R.SmGsf?K+h&zW(bk8Jk,sܜ̂yeUyl⊢@~QB )s (@zaw"	
OĻq@~LfKFpF0Տ(Ǳ(CjʎsS2".N*~r5)9L3}TF$W<܀5,vWw/*-YZz'Uz/ք7ZA<Ւх}PzzbBڰ6P2XF=8gk.Ef\;ܙ+rgz<V"چQ|VRVHOݣxQu2ک4F{l'yF<M,O+@sc3_x1KFf4o`<}
4Qk0Dqb܉qlE=Ij
E
c30U9ޣ^xm.݊=͹q4lU3qej>.W
7Jj=QV%q+^սQ=S]=;ԋKJ{ԛvjxk=vFt5@	o[BoxyR/:	+)~Iݍ 9Ϭeu:ޒ7CKiiixU-,;],p5<gm=X:
SRʎ+8+[Xs!SƝ竫FBs&G
	7^y0NyNZFrOMR
PKr&'R
  Y  PK  ]W            5   ch/qos/logback/classic/model/ConfigurationModel.classUSU=ؐ.J6	):DTԴQ7aM,nt|U_Ggttt|vWg_s7;e:qw??
UGB:"
Wj[ղ<U۵zn]=ftBLICL 珩K6+^؊Ȭ1#
!U=Lk6VS`:L}:mV06#?lTs4j^yT]
ڕmHǰ(ۦ4myMbeIV#R.hMڵq9(h`Q24L븄cֽ@XJg
bZGYd<m:CR ǬFpUYQ
HgyƼu]e,8y7qKoW>16O

ۑ
)g(<IMªǎY%vJ2"w\[3Fkl4rPm*#{vj&	*
]m8GW;B<A'E:ǝN4ɔLUl+&%oצOA^%[4
UCVy0y:Z{S
8Vh㎩BOsMU$ś)9|mxϠ{먻җWyr\ʓ=Mg5ưȧv^Vo!uyy;oֳ3ggDz՚<@R:r#ɀ:[#<<(.pnǐJO{կe2ޤM_). ./xު!i\r3:nTề@~ @ oI2@= @ )?@Iḓ3{@	2r;Z0?,d¿3/קVO/pd.,&j/
)
aqeU,>űN$ b"Qs<\= !2
QKɕs?ٙo	%"3_M{MMsM)j]JV]0
xG	r.6)x@èO;EZ{ѺA[Uj᩾?
߃'GW_PK(e  	  PK  ]W            3   ch/qos/logback/classic/model/ContextNameModel.classQNP=
|/4 mtBblTr#>b[St#Q??#$NKML%&=ܙ=(H )C!4ÆQO5׻B0D$mr)#ð'=Vw~ *(L6wECm.vm,}'\Mzck!O@or'Rڧy:`DaFj	LLkN:(1<u#2j]RN##}o8h	1&Q _,)HӱPE%ȧ6`!dlzXDl.0O^
.w	e^!_1g3C~F¯OPC?*PKK(in    PK  ]W            -   ch/qos/logback/classic/model/LevelModel.classT]sD=J|ڦNSԖC-PIHb)d+VS`~Z&g
^yW{w?&>41^yNw\ㅑtzW2pv*~rK S
c7}/4ք3QFs6ji,1/;tXh}g/~C%XeB׍kM/
!>H/1q
\ },U<qtTW-\Kn@ruBg&JXXۗɶJ`Z;JUZ&-Ա!0s{f?NܾG[ՠO|7h(v	@_AoMz4yA#ON{zq}zM>?q
z	0=Sxqei@a{=M2G2	;/ä+93{	Ӛ+?'vs5	ko\wrZ29|
>s1ď:׼>4:Wk7&Y5=):ջ¯0c1	|aN_o?`0퍟03fIY !ܗ4!4Un-],晒g$sV
hejޮfӋĔ5Ci5זڤ\]F+&=_*tt?=K_n
=\7ʉi.PQO/NiǮ\Ȯ̑}6>PS|oh69tsVlUk'd9#(B{uWvc*=AmAQ/PK's;e    PK  ]W            =   ch/qos/logback/classic/model/LoggerContextListenerModel.classJ@ۦVk "H1HKED/j6.u5ݵI> $Nbzٙ3}x~Pb
D0҈!P/̦LGkܾ2m
υcuZ+ dH%]ha@;-]/|KzP
k@40iao+q$n+Cf
YĐ+S':1Ƀ~;-k{(HcXRV&^s(Mu8U4I?{6O?ߪԱnؗKo^e<0N>KQ0L$eL|lJdd_`i"u-Y#=|{5o#isC*'PKG  /  PK  ]W            .   ch/qos/logback/classic/model/LoggerModel.classV[WULC	)6$(lKojXL:3/<ԵlKW]|vӋY+s.;g?~p$zQUCa(<݂iWzj;дk,̋'Ca,C$;YQ`vcLuj +:w$8	-*WpaȖ_8Y%x򚾡Lݪ41zQXW1(b&R1,vzfxƆ=Lb eHm{Z\]U!QޜHavrG(YLbx]3^3-/H|ԇ#*Qᦾl{
A3-\E	q/="<]rZy$>1#m{Fa(R.OQ8q'pZu l]0=p4"ଊ"QqEe%Y*e0E|S.wݬp5lVN-zQny-Q~ˆU,髦]%?:yu?^|*^
)ג⾘eB1Y[ۙ
M^Z	}i9Jn${umEt4[AqC:7Ǥf*bHjGP#7ۖG|*ke{GxcWNAva8fpFD[sE\[k57*C/;,nv?W+hnЍ]@ڰy:_㛝
tfrwlVe21;{]馩^-YwU]#oDUpզT[ct	`ЪIo`0˱l]Fϋ*h~9z0.S
pWd p4Y@YB.|W%o+PsS[H~ƾ'cŘy6$",Ҙd2aeN̮J'(_)n7c!3|r %kQx.O)&4aKCUR\F%&r*B8t7)`@d1Hl(D2D.f%D"uu
'8$:@7;H
tH+=pAa&RHٙFW,GDrT\[ОbN4I`V:
EH7QQ\ OԵ\ĢC,){Sb\pA28"rDD4)93(xZ w2.Uv9]ّF
<Q#/ҫiyDYޣ'-C]iB,}kFUI0	#PK&PG    PK  ]W            0   ch/qos/logback/classic/model/ReceiverModel.classKKQWGiAQڴ(P\Z^KhPm}hPfQmι{yz{ FB!k4:mpz[S/y!CxSZbfsa#/!"zf<86oX-C0n0aKnօHeUl!QR~M͎=/V":W%jvC؇aR&]UTARsa(Mn$_Qm?Sr`_L I>EQ L&;E<#n|4ٰLcl/,k޲="=]|ϧg4El܇	ToPK߷t    PK  ]W            2   ch/qos/logback/classic/model/RootLoggerModel.classT[oE=_c6sK[4MU҂B4⤨XoGtw]~OS@xTBYrq,J<39p B\CIY?q}v;m|'m
5
$W,
n	ĊV
iAmeF4NGz!A)T74h#߶y'Pl"y%|BC	[>U[SC
7r:U`ZN	߭JpZ {ޒfMᜆ<{eG@\_6R]eps|3lBN~Ap:2)#fUɺX
OEmܔ?0\aשWfҳ%=rkX
Yad˽-=ѰnKSmKU($A6xеxUE̽iXXۍ~s;jFǊZlڦpQ''M1uz0
=o؉.>?'gn3庥 36,tgZo㸁Vu?rx)}O۲<L#p=%zG\
ͻkc3Y%
G9ǧUt΂sszc2<eZ? j|,i _8O
E[yR}dʋ`WJ"dpK!>4U_7p38垒'IA!Xjhej\9&-.~ԁdhJ̇12Z	/dgWjv6ߍØ|7^\1ˡyr^Ui_|ENʏHw˕}G"[Å
?EvCj%A7%Ec&niLVmY:P<UYMF{4Xܐ`=?GUK'1PK  o  PK  ]W            F   ch/qos/logback/classic/model/processor/ConfigurationModelHandler.classVSU.IX>}L_(jxH Zf,[6-VV[oU'0vo77Q(U'3s
|/!ůnܴUY;a-S,
jjNm/ت溶SDT91Twu3DcJnzMSBۘj#6kyGZ5 !)T9@
3ԕ3Z:P;h=Ì8̠f4^׼Ԃi1Ǧol,yUM)1,||*{d<C-'x`ư3V|/I/ 2to9kC'h`OX!qHs8L\H4GlSLG(y14w&mjE1$S
ɲErx-2Z9=5]
q	dXkytt#$ߢxdI]a"ÉJTK^ލrF]
9%ޓj=N^`]XTxIy=e8)yY~Lf߲ɐj*rbB):yA$dcRXRVJUO3xn]q=EGd89΋좌RI)	SH3\2F0e 陦.H1q[J2qB+y.7I&ȯɘ?:(Y]h.Cx- Nueq[bwxS)	F٤@ڡ!5\R41M(|tB,fD1jf
0SBV2:!GR]6K4Uc;y_s2?>4LN0
eǰ=iXH>֜	kIVsJq^{s9\[g9k5ÿʜ>2@aOl2{gKyWILy0e,(zMslQ9PՉ	'ZԲ?1!.Bm<\^U&q#,Y6CFV]ms*CE!u~Xɕ
Jr=n]YwRvQ[ذp.ˌ[
hTMcӣnTяf[{@*qpih	]'#U:
>Dpy?q5PA 1iݏw.q6z;|ay="K6Suj
k}y$-aG?u-m.Y}4E?Hވ?|B8;%k#\!-!y:U]CLLsELuH)(.=St`*^ԡa$Dp~(}ǠעO-L.ǋZĽ}|>$]z>D4Q	>5>'6o_KRWѪE[F;Sp<&Xm`s8S~R;.""Jѕأ"*ڱ_S>Oh
S'*Dۗpg}*
E|PK4N

  +  PK  ]W            J   ch/qos/logback/classic/model/processor/ConfigurationModelHandlerFull.classWw-{d1l",[(PJMƶ,KP:=Ƀ3bfdM$M龦KMdl4-m9B'ɶ1{뽹w <4QAHE¸nL&K<HL99n%cpsDcB}ӱ	Yeh>bڦAkK/\\e}TAJL,+`
ȐXrvng}2ぶ}ZOX]HЖi#،-*VA-U\2On徔W+{~m@!10AKi%B	nG֛^@tA΄()-G*v	9RX"T&[*QU#`Ю {^Ns&xd\en|rw48$(.JW}H(xR~`8$ve]16=6jYJ3t#+Oyw|G2)J-ŧEky{5ҿ1AZrrͣi&s-|țC*Ձkz.7
App 54{>ú7aƶQYDxܯ"^2ӺU%18~~PjD%U|HS$'<_}OXRqfm;1 bAnf)6T_1w)*MYD0C*fؖ7]U"8V`)*DTk:9VigpaK'sTPj|_g$Mz&s*[ NŇqO|&  %z(QypyPAyϻ<7-D<'[`₂IasP[dPRt*;2.[5zr*\*r3z'<7-xdŻO.*ɒO-һb^js1jEG%+%WE8S-%ՔeneST'v-#q)|.FY
>#+TOByagxu.IEω<N8^"( Ӧ3q[J1tkTwM'L2ѪQOSzkwõOE+x-AU4SAUg\թR?}|Wwr'PL0<䭘ۉxMє"
W3ZIU{oq,)sԫfk7dWgҕb-Vď
lzQU@30H}Wb[	%kq*\uJ0aתO!|W/pyadM1b&5x"@caEo:8VRO3m,;Q!2}_[Sm^Պ1[TN:$7qmV{46BQa}Ʃ'0&*VfmmlƟ"3Q1Gк iO;ƕ2!>^_\㫄+ {iǙ,WmuE]}-+k"OԔmsWܡo5NJ_b줆 	:Jb91vV
"=#rI܏/j[
_W$fI<ZU|ꬂ6\g'j W_7<o[V]R7Bgw:)cS]G:xތݳ[j5E$@qOϠ9,85B2NM,o3BbxLx+5\/]bͱpqjݖ2|ɽepCb.@VzvG#[,: z4HG~<G})hu}"Cu !^}(fh^	V:}
&i7]\#\O^E?YK4"}{1~Bj~Jw3UrtٌpX_&)Q
&zd>yysλ彙Re&9O:tVW$ERW`H|!\)q@B(ێEh?7׋a2 ɸMnmYU&#DPKd˃    PK  ]W            D   ch/qos/logback/classic/model/processor/ContextNameModelHandler.classVmWG,	(*y1VS
6km'1YYv݉s=7?lV4vgg>_ >H"6Q1Z8\vƒȒp2UOZY߷[r}_][eRSfUⱚ4ΐm8mPp:c&ah-'D.t3tZ'`8?5r<-'q=Ι8MDiMzUO(l*b~{rp&{@}&ѱv "PWUv⢉2Tʹ$Åf66q	)ZoD
WF1f`Ą1K6.å}9eUf6ֵ0=`3e$٦-ɘx3%+'=tk'EGQe*#Cwvzm(
=Гw6g3*p󐓧[.s.EĿLMO ɼIfĶ{TBZ -c8v:	(eG:XhYWJͭ>E:-(HAvű`q7!?)
!.wIJ5^
<mcX'u\ɽ|}_1\?bܛO\Y,jRh
$eIJ+WׄȒ*hA(ER,Tf%S[~;e[R2`
!;m
#}[JzoXWYK]69	*t)>z,
)ls]MPȉI5@y5a:#п(􏄞Wzu<=)"ɠ]J:
%;H_k!
ğ0#uxX1M5KzF[O7 1á&K}fH/xo$gfwa\4}I$E/0uL1hŕD{)L2vz9C0h|#t@d)"KR[rn
IQ"tȑ "8f0pLNX/iׁ	lлZy?%e	EPKa  
  PK  ]W            >   ch/qos/logback/classic/model/processor/LevelModelHandler.classVkSW~$WHZՂBz-
Xes˞؛moi~itL~o}fE$!t,>圿yAA
C1)ܔ%rӺ12SsBXAD(ÑJr"˭Tw]Fng-.g3hmJȜǗ:İIb30Xmke&3|[+2(=8VzR[TU\M۰]пw{byǦAm9}QOYK
p/#r9D*ah>Kzߩ`e5[xڌig5]|	M4okkbFK(H4ʮ1-q٭{z6 m{c9JMMثb^#psXЪbdnME;a0+Y*'EP=?4:C7R
xV,薛ٔA+u=#+Lh5>66þJwfhRFC$x,h3	CeRrJФ)|/ɝnpSN_{˛YYHk
*qaW5vsH鰊s8OD |븷&\PqRvu1bȽEY`c3
*
Y8b;yNjUӛ]}4}*źz}5+*m*.Y5棅iLQa֔rCެI>º#lsA 
2c9]pBIl!7kL5H6Q9(ae8^7al+8rIz~cbVF%""_>P Qd&Ѝ)dQ5=k?+V~"^c5= a<!=7_	J.+E03dUɗ-ey5!
MƲ.Bx͊,]&WIpY>|WZhڋb&ذnx¡Z9ƒ#nKFB@[KpVW`Q}*u˚0=jڶw'ahݐ
K:+uW{!߮ %5b&ΡMɎGM5nA-}w 8iu5qomC."9U;bגP˲ʈIb:_i:@Τ.Kxj%;t}0[R:^GѮ?tERĮ]OJzOHDh)@H(Eta3ď&JMOH$BhHʯ8CO&Ro1F2Pĕ2z-~
 
;e؄N
Hqxp8LXEχ`rJq9a܁Lg6aJ<yܤsHc,]G4N"7,KDlSDE4GU|Tևdc?	6uv~+h5HPK  
  PK  ]W            V   ch/qos/logback/classic/model/processor/LogbackClassicDefaultNestedComponentRules.classV[SF2MB{H$5.E-4.qL.bCJzky1YrW2SoͤSf?|tiw={Y00`$Se\]1&L[
B=,Ɓf8RhrY!+B9W p]4<!m=4(,TD/+M['
)Tvla{hP`X| I.ƻD8'f{yiUؓm~'
Q_`Pm8(xaOuӍo0zY5-҇ܪpϑ+:DTpaݼX[!MIR¸
މ]\ar準}ҾQpr?>udT?IB]c8♖Wu
Oi&#.Igw'`NR3xa|YZ#3Ka2:Ͳ0cс,Lo,Mrq~[5Z8>$8E"!C2PP%fyISk+{cd8|Íh4;tɩQ{ MunP]T< w<Yq>nQm^MكN#
>e5ZP,CFE
nF[:[[T)؎	>g JtXZY:p]Gjzm?UlV0íqMmмɿe_aa<A6G;EʚE{ޱp1IQԤiJ)/d-BT1ťgR]6OZ5>IK'(a`-wU儹%:iY\&n_Ưi5h42OŎ"G0#58ꇫ2:WbLQϫֱuMmS.B	|	u?9Z~ft/"74uwyGxo5m5V3:s_q}p_'|KMKpB.+^[ɺo6'
n8HH %L6%֐-{G3Voo&/`6ӪFB&5sl=O6cޥPKϨp  
  PK  ]W            N   ch/qos/logback/classic/model/processor/LoggerContextListenerModelHandler.classWWU<YeQѨՔ%X5M#Qe-A(j}#ƙY߿g<'/t~NdY̛;~޽{}o LP!ub𳶘7̩)<-'L)5|Pr!Ֆ'_ӣ^CBGtm-sɔ919ɽ&gwr=OЈJ,=U'X6FӑD>Ƀ>i7Jtqچ3<˙N4l ZUbXvX+^mmKn0ܶ:}*2J%H9IjBx7x2čB!"hEc:bC=W QC=5XrGJ3.ixa2]rd)udN7T e:tt"˰rpxTzDivWr3бO2ئͰs	JQVYD/o.ѱW.Oэ$v~1ڈ\N&IxFƒ1	41+(Hb;WF6L
 _4$¤YTչ)z1nP89/8c#EJN*@.&ԍb0R((AES*^Hqó-u\chfؼ\nr6mJ	11Z].h/0<2,Ae74jY$p
gt9K;ero׻>GaMrx\ވC2'L5<K>GXP|yp],AU&MqTw7Ze$7WY&Á;=5-eWW^Pj[E&#({DM~X+
I؇G|p)\BԔ$ǵʊV⊐7R
g&dޑ\h]fp::ڻըkB.o(` J:w1â%m[W\z3!E#eۙ.Ofg/m9l֪-	}lT{6=N[
XL:|B×r0-缘~v0(R	愘*U7E#Tۥ}m[l CaU˩>\+Ui)A :YZK;7}"դ#t2257Pf6I}-䁋ӆr
AEXd'E-aR:Z߁W P1(;	AҢ&x7&##H\`ɯ<qY튵~$Ù}
-YbX5#~ٴvz;v͠Inc|3Zv)>,\ƮZ@K, _G/
l!~ЄVqJ^;tw$`7v"g/<eҐP|%E:+rTybpɃLUbOolШ5&AY_ߛs|O螧ȵnb0!yz&94ױ3CN:&&'${q*Eeʢd<v
{ym .c4ay@&h>|(86qIUm,5PrA5xO@*|Jc|MPKw  |  PK  ]W            ?   ch/qos/logback/classic/model/processor/LoggerModelHandler.classWkwI`@ 2('d9f,13r~#Mh6mS>&ve]_/7Ym ;ZK}s?KxK2О\݌iLiLv%Ѭo[Y@2
d$ӛ):v^w]A*sFsu	ex'%0+^_x	l(h655LfYiXlXcILn|$U+ph
P3ɶ%mA˘5ÚKH)x;$4ICt):ym,HhtKS.
1/8ۥ`7p*ȮL+a=&aq@B<T&%
]\]Dm
0=(@t*8$DtqXGqD0_KafFA,
[M+30_Jh	sb2cu(78p~hlzjpH\LwhƢ~|}"Y3u=Ϗ8-a_/nϼqcpnlVWMA:m;7VxUeٞ:ըխb(8ȱV('$ɐEks:3%y7n$U0, eYv'0<K#nH	{ׄ*=ByN8&$'Ns<P)~A$.hA3K82uI{a1		1XMf/*D71O
g,Uy=mfIbjc20#V3+-T$	\R0ŭHD+,6Œ;[bMT	.<!sUU4OE޼J5o&40T)/*JD	[JS3MIffk!ރ7k[
"}<1_B'7Bru3l73bv<K$<* ƌy%ܜZ/q>+;IB8:{lfl_"*2>؆e%7Os|ڰ42V9$o^sefݪZ]'1Zz֊>q{_u2~r(krخ7dv=2~1WKDb.9y!t[onBMR8{v
&O8ؠzA(œ!ֻ{jo񔻁xfJ-*	â۾Om޳Z@/+Ej*)(XgIp:Z *lǥV@XOwֶJŐNw/űE=DB@k9jx)CŌ3wSKq;(KQE{!>
qCF~~"i=E	!%y
[/j~6:A.k|^g9t8,R"B6]Rع*"pN@u]h4$ׂ>RU_k:Q8;t͹ή2elλP{өT}pP̦l4x1y4-hJOq(yRII'ϔMO"K8G܃RxX9%|&)"}B<Mɑ;Q%|KS<1-$Ʃq`'vvdpoQɳKFƙчx3xbzz&Yo37bZO<{\6
+.U^9W
_v22Ze\,G+l):]I4{I_Gd˹.Aٛ-Ϙw1"x%7ՉeJ9.*KGs;#`>G.cN4HNS#FNO@N3ք	4>@7"Ŀ?D?R7xהpPKq  :  PK  ]W            A   ch/qos/logback/classic/model/processor/ReceiverModelHandler.classWkWG~6(jxU(*BbAP.!Y	~rNVidvgy/3? aTZA@E5{L&VzRӧČلX:w]I^Leөa^CBezlUbH>l\ЗltܘNa(:xEEk^SX%Lr}uSsmVKd53L'xTFrrMٞa<ksps=c{s
MK'BX˰y gtLz3ɗؔĜm1A4giTX2dQ&42(Yeal[Ulvo̱i`!~$^ߌm94QΓSJ*kgiN`^F+U
q3,v.c{*s/xb2 Q31|Os%1RdɌLV\*^
B,Ö\oERAQaKDCai;fJ;V=x}Y2# ELEPUVa$X,8^úe<TbH|zb.
%ΑYr"y1O<M>3-~! 1 OŸd
H!Ȱ$Sx2bLxRk[e[NR*/b^M>t1MKs4
^Uΰ0YL]HSkN/
b
i #y!EAcXo|073ɝHkQ1sa2ery8>I[t>Y:^|Ɣ}=.Y^GfA8^D0E)i)[ݰ65/4GZ,"ɓWRu~.◩AiCL5(СH@:RFOҦGâ_hq0|،H-rނZ\hR
>ZVy!FHXDk;-s=GRnӑrtQ[b%܃n$Zcgdhrٔ섺ÅVָmE
|;q_cyÜyAtrNt}}>~˚Ɋ'΢#Ueμ]Z6;lx>䎬*NrU*R]s>U Gto t=uH&rl^r.hoid9[abfU=(ۨ'Kj% ȂM	],VTGI]Ǖ60C=XCsܕ`
G.
-@@<KdG3
#vу"yA	!Wv`x4x}΋
8J
=t{Q}XEE)<(@Ha&c}Vw,&zq' D6bhϖ
^#9$x#7IsޯD?hTVG7]
yoAJܥ߀ؓo|K@GNq&x)H	w\_Լ!Nb$BF=]wptV<'u&(Kq"Î"Îzʥ_[
>T¨4S4?_{OPKo!,ʄ    PK  ]W            C   ch/qos/logback/classic/model/processor/RootLoggerModelHandler.classWYSGVl>	GƆ#vdiͲ;}'9k\cSsQR.CPbgу jP!QR2(L^<3/
8snfLvyӦmdh%AaK~Kf;!!ct֖yf~]BQQ,rwepʹ\W h*,Nh"|(Uyhpp(vhaU!rybb2fъEfpc`d,.fr5bs]@~IK?%qb*<_CsG	AN)6]7#$\u^yƣT+FgáJҴ2
3-G	Yoze˚pyaWhTHp\	ϣu#y4)§[&C<NOCVi3XOUk48eϼ1I!MY'OR9c(Q(سb5؍:.a[+}3x/x	앂Y"⛏Kʜ%7ጢ1Dcpm3cZ,D6/pwҘhqT
kpMFd(F7ן_<R?Veqm:3pG8[TVͦ?HY
YvIZ&;@ђωPY-뜢f뢭`WN5г5=Y+7%%շiQ3Pe]w $1	NbV=Pf8Ų42:hx{U\Z(y~T*{r#ՓqY/hbr\JH٤ڡI),MxRAFp;DJ^P3bm>g>Wm:Y<cbz¥뇕}44(B̕q+_eLUm*#UT
kڢ7oi	U7
mw:P?tkmtv,ͶTX.;6d	Uz^AxH`q\!h?)]ICː*.wTޤo
ޕGmcZVD>}q̆W>hOID.⩻hKw/EkЮG}|`ȵ%zZ?J i]$!bumN:4Ѕqd0E#*aJ{PDhQNPO70Gdyք!HrpbGРYGc@3aEh?"r'nW4}/+C>2dqE=NRe"YJTT!zyS@m_jw9|j1y_?ė5Wߡ?PK
U  
  PK  ]W            >   ch/qos/logback/classic/model/util/DefaultClassNameHelper.classUmSU~nޖ,}J+[ kLRjT|Ml/N;Cs:8ܛyka&{sysΞ?`5!D4DcHle4j\eW=ظ0	`j):1W[vbTUp]UnMǮr׵~?~})޴-w:ˋJaT&<	LK/$4" <DFV;qoZ\8U
gqlZg"wn̊5AjIE/+Hjx.sAqWPL}н5Cqlʷg@O.c@*8l n?d,)
id"
>{OF}dt;5EᮊpMu+/&F+Ez2~\3*)h/Ȓ瘍Z^W_|p޴̪I*rA*	
7ĬNכC7hfcvF;y!(WʢĔۘnXQ1􁆻/
XW/,~ =&E
s2Ju'uP"N}sO-YkM@GYēS?NQN/
wF
jXKc}x&;S"]lFY%b*yd;k4<qƍL(P'&{ۖ!x:vHdN1GS0"~Ct0`g&ZH#?KOhU4TXmo%oz:3L=OCq)`y7I'#d0h/*,CClБ4k2l @$
 җcRVHD9
.C8$6J6G8l㡟3"_B-\4ma4K~Gg2B~'	唤4&$d#[>!M"!hSQR%ǐ m/{R nЧ<{	ʷ4--t/-5
iP *)]6wREhJRDҗB4MPt+蕿q
<JePK7k    PK  ]W            H   ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.classUYSK% .uT%B*.UA,˧ΤZ&qC]_*'Qg&Q@H*>s'|M@~$5n{w{iK=Л-H2rVg*=Vj;Ca]%wׄM0`Y.\n+
UfK7rL^P000	{ۨkd^!-+t1̰'+m\L0C5w{YtI!Cpc5*w~(
i&;Hc<vrY6q'
EaM|d~ "ܓ(K'*!]40'
DёI_QU)F"!SR99ҾuاW$f;uhd	`,k2-J|Do+z^ZK,]F@XvmԺt)#d.w6bJ)Cz30i?l*Т:K'0c:nF_S/7'eؼ6'JJ6폧QqJn(r+KZ}SCNtE-Φ48Fi4wzIҿigd$'߂&ghMć8K4 s$Y4CZ/7W̿C*Hs#ҏﱛ
?>TFaz}4LuN2T6s߼!&fE2MRD "KP`D.
L5PIM,6F~PKI    PK  ]W            -   ch/qos/logback/classic/net/ReceiverBase.classUmWG~&	lbA Bh]EXZIi	Ū}9f$ktw_P/b{NTOL
wv>m^:O!t2d݊_ns2NTVPH0tO2ĳk)$e!e6~G:PΊp%J(脍^16je8,F0@Jw|l8/6OJo<$6C0IR#RǠl5DI^oD7dcXUd/8FlC1(m֕K"\
?KQud0ri56Ɛ i|<2`Y㘰1CM<1XT0ɵ."pV)%u'uʠd=(|]5m'[ܯt	W'k:;o&>6yUP	\zB+hXtH\C2nYq3Y
GU{(
;ONdDoĝW5uNQ_רLGa#F-aJCVxQbbLZD$+<mߎQQT
ymI,GIɍ4j
_rWV_^%FKݹs{Λ
'yPE)JYǖfNM>kB<3k/:"Q-4J
(bsQ[ޟЗC={Fi6@oOqd?_9z3=Ox9NM<4}1cJ(0JjnyGF;6.3M.^dY+Z?hdFA"7
`j@S
CQL+tvN"2F5Aч(bɐʴJ'W!7׿a\u" Fi$&gw20J|{}|0?PKxT    PK  ]W            -   ch/qos/logback/classic/net/SMTPAppender.classX[~,F7`DVp$a]f֙Y#IsͭMMzozjh[l{ɓ6}̰..y{f|z\{
0PB@AMɉiӎԨ<M54'd4cLU[
(ojB%B+XE`|jz I`n$1GM5kbD­PPpbgtVuL.ċ5ʹv6#B@[	6F̲L+((jkV Ҝp}^zƅv5Wb@HM
p3N竛'3j4h±t#ŅRv-2Ze؎ R$틛\	,\?dI-&CڡM2ؐji_,K̤FeF*vNwaWtͲ=SɴΎD)W9I-h
L˴f	7-=
:4J+@֩`)3K
Ewn_AK
Tۊ/i
@\`|YUZE
ր"ݯZ4+$X;랬r⇐aHa~fvvl2LUp#4\w4˫5spybBxH	][(B	`HYUeDƴRQ;=dԳ
H0@ҝY},ñ
tFb'DCV|O"`LUݰ,mDDBJ
['Cq[JT:&Ӳ!F9adsG(͐Ӧ;3Ӛ_zґ7-ȭ\qOI*TOi[RuD-*js8/PSFr2
3k':Ync^,[DAXG4KR2M`OQF@KHq/kZ4\ϕqU'ǎc8Psi<ޮzNv


Ȅ.
[l$R]P
m ;9YChZs!UKdЙ%;R%ezՌx0a>d@{NrJ)CRzd	|FVhY|vy}ᢒa:ZRmu\Og7Rv+Aο>V=XWJ{(/_XcpݯYNzӬ'n_n2+eNd]ܾ֜w;Aif{&gq\-Ɲٝ[
4uܖLF7Uz'4T
4.,EYrg|7kQj5gT-^I73oe;8׏j6.KX8af֫2Mݦ؎f<{J fF;[=O[;*It_̷4PfolV;J-Xc5|	04=kvغ(!)p¢/0A2'I|}3
WpA~o{9/8[B_A+WճM9QktH˫X~ױUGZQ7u
Ӹ=2Ɩ,RU=6YMRkq66t_C/D">ϻHbk($>m[Zkipoܗe>|F
s:+DQW{NӇz:"­3#VH4AetA 'P!*(Y4x(9U|վ/r
>~X&||b7)ȱAY~w`u`h{n`Vb]e}GąwuzwQR!cq^vG;}-%U0[m|uq[Έm.GfhEʕӖgNeFo1<OL{ b~P0E*/3
|x+{WT\?/2RedF$#a'oH^~{p5;
?4535j\s	ͼi*Tx[g`Ӭ,ի,̶ier}Ҽ2	N,meeM1@eⶎj6i\y2B~~LH
r" Y]M''XxO))Ìn\ð'QfG,9;y>=Uu_7`ms\؝}kɫ`RmxH>.#|"~V^ჴ1|Ҝ2K5 sNnDZYx`<2	_w̪Z".G:sóW;+)~?4/PKˣr	  /  PK  ]W            2   ch/qos/logback/classic/net/SSLSocketAppender.class[OACۭ]
-W/71<p3!)d`qY)~$"Qxv
^vΜs_ LEi$HAaX0w^;Unz]!z }nJè/J%܆%۵2CB+lqa4A`YZU_·cܚ7"DȦ1 rs`{hEWIA/P/CYcavMkq%g`;x79B53XBv»?]K7$S.pD"*%3$2[^@}L1o^;Sy6Cư-˶/uty2CrkTbUY~W<;ۜTh;rJilRIN7O"jo⣁gw;턍ShFaQ+\T1׋bǴ'緄U§>΅7ɨM<~V
34>z]ýhv?򌐝"=Q*d1X'o9zEMwV $R=1ިW1"w2	q.J7	qO4EA25beZ.WGST[@~zqHt,=SO([	J]bLsu*y><gcMv21BYCZڡx PKWN  U  PK  ]W            2   ch/qos/logback/classic/net/SSLSocketReceiver.classU]SH==ƀ2**$ďaFqU7TԄvd6j)Ti[?j=YfPInnsW>~p22q I'j[vK{N(y"_$C`U{у^9a2Sqۡ6p/'%_kM?soH*2`Rv(zb~m5GM`{m&^,x"Ț^#NsEjkAMI󘯈DĒtM8{p#-gwl9M\cO\<iU
0B (
&F0p|d3VzQTs09(~,ɫ&:Aǉ?
`8@5gzuϸibZ
)yM0MCkWk3&n6C_\.tm/+rcwITcX!W¾VQ(BJATH1rP<Z]YÐw#U=5v%K$lpj[7l/jjl݇<-s<-ÐkU},AwXon籪ƞg0EkFu K2ӯizsΔ{fh3Vx@.އ;6mq3
MYt/kUS8kg#`+M1Ju}EfAd
:`_HS`֒Ve^:-~K,zrkRI# Lk9T~C?'gʢկÜAoymedC%şԵ#n{ iޜlxPI[f^yPKtĒg  L  PK  ]W            6   ch/qos/logback/classic/net/SimpleSSLSocketServer.classUmSX=KAmY[]PA-L#~!kԛ3Yfv?:?j)2~HK{y}kxp0^Κe2l
6"4LRiL~%BSM!uRitн/[np>WڴϪ:Ƽ(h1CVb4~@0B" f
	#Ҫ{<KBJБ4Vp+I;{*kP'߶'Be
?
[{ޖ-jW{0L`Y0++źAT"G	'rIk'\\/EkO,iUSԥxu!'9Τqx[2_Ű阮ٯךu9tuѲC_QO) gB.^"v&1r@۠^ԋiKS- IU6K<Y}_%*V5!*	o[^ْN,lx[4Cn@Ԯ^!لÝf4,HM t7Ɗo;p"P݈sIZ[fZ䲆Gɑ0qd+@7Ţ6p$
\h՛{)23<ᖸ2TF;v*unYtc@Po]umh
}#l30nG:.GqG8ӥ3Gǧ?oFjnSSq{/JNg$gSrzϘ<WH&Q,q&8+Qa10xx!SHC~z\
P3[Uؤhûv	Q'PKǦn    PK  ]W            3   ch/qos/logback/classic/net/SimpleSocketServer.classYxu1 $Ba0/i%X`$J`#1jG(M&Mvhڴyк1cmҴI4qᾒPwFQs9s=?. n>%C\?uک#TL*sDw t#NxG
2n	V4&GD%ہښ*
؞tk	f7NQS0o^\R2A٠o9Hui`٘#w]s8to
\	:Ƭ-hlJFm30Wt?n.pJy&c:z3}l5&"m2.4e}&	6Shb	҇~`{Q/
J4?(liѸf*P`x(^HV]WH`5FulMXCT@U0S3dMgHf|PLL rӎNC6!(ɦ˧;ŷĝ\7P^bb+,<i/,X/)q~g,it:Mt)ҙ}#IQlJNwl0PTnaGj}g<nʙ	>@J䌱C3^WV^Z!nShqdZƓкa8h":R3VR4;p1vӧk?~
,ggz
\NsJe3<[
AY*Gfݔw`O%s|
.<`1C<bBU08_3;\6-R;Qy;c稝tv2syN*h P胓*~qH_/	(*j嘩Hr*<(z 3)M\9zjߴ
_ï1jcjшyģ0u$򸀡EMAeo	w5$b9n4~[˸
ϿZ
~'8䦭^c0lI}([s~;X{rK^;e-Ja~U<Ek=j[$!Y|Q,d㣂:z>&&DVI2s̆Ū
3ğ*󝰮0NRO⬁Ot3ƊF95Z׉x3{7&)%a.F\R1DVI%gBAy7
q?.xFa}7;`6P+,O3k)첢:f'vw0lv咊_KZӝv%&JApejVMktHgDǎ
S+q^S[EGVK:^ZGTd~GΊMo6^f
OB=d]m~&dѽA
-]l
sR`[W*5?^jg4}_Ljblw*z*i]Qi`ߘ|	ec
H=%өOqx
.R'a
lr8wR|MθF?R49
lN{GJp
?rS}kReJTSؐiL^EfN|`UQSfwgv;R4d&Ija׳sTTIVT^R\S|D*bzNP
,TN#{1z*UC1}|Pm`W9tQ
S
 eg^FG1^ X'F'Uqw8'yxۚ	w@`x?gcAcG~b`Djo9+NӑiDR{]b';x73ԏZq=
b#W8{B))a~tӢ6v!wjo)(Uq"}r6UZC-@p{Xaw9]iOɟFm
&dyJA`dMBmL,!?	3ٺA/V?>W)
wn=Щ{EBv889Unؗv@MR\jڭȲ׷G,j)і|<lko5DF9{VՔ[אxՑWw&w=D9^7Ǌ33"
fY_t#t1*4g4v;fp0;ߐ)jT\x}R"EH0/|֩_Mwp,Q?s=
"\,|*eȵ%|I|g5R>؈rle!,4rc?eT{kJno~#\z0OzQ[c
hi-8ZʆX)
ĩjlAm]$MAwʻ­I„)U	X=UBNK=^QBU(DH%K^C
GE`e;(cc<dM2^z7/ᖞƛa}|9l,y>n^iXK3[qvF
զYlyUgi"k4ԥ'Rooc%CHvr2Sx[8?PKCnޥ2!BK-B0/F$(w%<W?_nq956.WJiTsl(h-~Qf{mJQw4j\"O[jDY{S#҇y	sMy|OVc>?T2 LX<*Pt`N5avDE?@zÃix
oru<Ozw݅^EnU-nd-c	Lu2jIi嬄KyF~,c5.7 ᛁAѳUpOPa0ϫr57bƅ![XezJ=7x|`kE0R2~nTe@mpLK]H{9!q>j]N#8bxzGԉӤg_5<pg2]SևP
F6(+<;q?N|i)푬DdkRng4*Ĉl0tf1_Bfа2=)#@D"iXI_ni-VwIeoGdmOR|Uг8<E^i&zTƚ4.ki?Β|"3}>1<]S;Gir
cA+2QJ{
:ͼ|-]#n+YͣEgLJ߼:3omљ"{c6WKCujqΈ-tSEW˕cA1/a$o}~_/KD__)|5iCTkSCb:5l/BEwEłO'D78ɐ^ذbNUXNϿTʯduifǇLyH/J-xdJ΄	5G-> bC75<oܥ2u>2ҫC$u=eVg|Hf1j,(Xn}
-jCGg5CIJ'%DtфZªMwܧ=bk9(iEPKE    PK  ]W            /   ch/qos/logback/classic/net/SocketAcceptor.classON0GC bgT#BVcjlp	v*w%sl!c)ϜinlV;ZǄpa05{
vYqbBQԊ7BGo!IȻn+
ܩ8ת!pZCȧuBNT")P6.aST_A/q0{߆	7x#Hs_PK     PK  ]W            /   ch/qos/logback/classic/net/SocketAppender.classYOQ+-Uiڐ hBRIїLg-~51>g2,%̹s?Xr!㈤E-G5VkfB5T&/z#̦b%CX@"d
H1dO8NsFtS3M
C؛\r34Ȥ0QVjt@a%d5dߔW
nԪ5
H<3DN]S$qR>/-ֹRL;n$na!ӱY-M8עr/bm1WIL#̐-ˮ-u+]"CdjnvC50H2Z4n9Y/]aqlDT򚻼gTooyrlElJJR1*kvWL=5De-լp6%y~=׳=EUkk&z$຋YF!L}:F7ЮDrFs2wCӟ10}$sK1O2jMTٵ<G$?0Ņ<XuM8w22biZ*HUOO( 4vyy>c1)VF|J/Mxg,$r?HǍS (
EIݔz|	Gc.hss1KPK.  {  PK  ]W            +   ch/qos/logback/classic/net/SocketNode.classW_,a6!ILTvl(&$&@
ju=ef3;Xm^f=R{
jЇ>K~ϙ],˖g9wsC l@@5k%23?'S@Cc'BMc0IM%λDƝRӉTT~bMMKMKHeܜL1EaF&`4̈f'H"gd3rKj2
! %5UX+&vb@cŽI/?N{2VӼ4{yՐ洞5q0Ry
qZ'IupT}hhY&j	jM8[wjM@
)?tќbґif;=l=in-&N'&'e ʽL[gٕ%fLStTkUhT3хTmYklV|3Yv)Mt[rp2y94p*r]d%FW@O%C&ew9r\"fb|H!Qz5^zə)ϝ3Ϛ"4VTVk@Rv1Q	|fd%eu[0IU-T;AçM|C9+3ֵ6eb)VP;({)jS-
)+9J'-=}MUƢ/4L)szz4in+?9G@vDU; (COC	6c+Pg;\|3g+jko*r7:*7/e*CM
cݫxN #<,uDG<`/⋴rMH\ϺN0^2uKV	R_fvtq}mYK&^SY]7gyjkz@I["x4𦉷Tf5Vܳf_emQPa
ubdἣsFm#Ǫb}];6JuQ1i;r0?3.3MI8jyz/S6s:};ڜ;TUˀYMfHVKxLesJ^a'+6[rgq^JqENxuYO\NW"e]F}7*#[UE*Y Dc=Epb&qmg֝Řh][DtFZ;V\*OnE,#g{:eۺD5ڠ`afe88Cq++r+MCX೎}>7	a %Kh-ak%쎷/a_)\%	?n<@	Om88(!N~Dx?O)Q)%6R#ӟ>N;MUl-5<p
Gpt{<8y=T@Nir;8hCcD;(@O?Wc=bӹ28x~i׌fAČӗ[U}iqhyJ%z}!mV<&N<J>?:9ӇQ?ƈ;Ar"a|r	8#&+|iS'.+~<	Ft,Pܽ1=D4nH_jO8$˗K?PO*]FbɁGąv^W鯯6MG$O$Cm1HCyB;ǐט-gBĜcVvAKh]|LWu17lWoكYlg@^7u=QJz
cE!FCӧ!ƞ zA?ғ\PK    PK  ]W            /   ch/qos/logback/classic/net/SocketReceiver.classY	xW}=]#i9>bieI61-YZv,Y1V3Y9*P9
RBRnp NbG.RB)J6\(%ޛҮ"KO*vPR
e:Q!!6qH8ǍxG,aRV6f̴&Mw2*vX(mnP)27*h騆.Ĉ̤ض,&L'	~	w	Wt\uSNXOp̱GѴk#v>M8lnLp2aR𤕲%;;2Svsf}̛HP;f;$iшF<뺎+9z4:=1蹖=2,_F,{]Q1BmcS|rpTꗫ@R*i:nf}LSM<׈yǻIӎnkV:q@SjvM
P}H!FuIqu "bM5lX:dI[znԲѮƸaS3lo..`R=^&*_ G*r;?.؎N_Jٗɩ雼+x:^Tڳ=	'eⓀϷ-KL?sߥ)=E[xh!& M'Hu:x59XKi{|]̀8@+OڮNzf\;&ubH&FLͅ#9+etI:5tɞ
T.c*K{,*Vq 
qR_qOR:4	ewqR 4zCJ%
/6;iha!w1"*<esc/5<fH8ΜOX}?\aKy2O5K#@+b|2saa&W_`dҤ1LQ	[<zf:ހ755uEsQ̖j-:ފ<9])Wľ
f,M*;iX77b(G;t
LزޥOXkgsa=F"aO/.(q<AexaYU.
M3Q.ץ%i2MYYIΕ$ACoT/S@<X5ݎ=7m3.SrN=v Әl>w!&6bK̨f9y9G~T -7C>S:H{.̀fYHt]çJZTa|V#U?[\Ћ/8GAG`uI8i9iˆ4qAE\VזAju񊫨wOxfgmEV/f8:w_T*=_sł8,e$]fCe^_G:_n]?i$YXj'r<+'?V4|~-H
8i;g
<[? ے9gۚ2a/2hyQg5|wY{9bެÿ޽
5F;ى<?Uj'Z@vu=0tg@oPc{G{Xh`Fm/+;/;X3{xbIZ98nrp20=
גb7f1QZ܃.YTƜt">.tICߔH!S,{SYD>#Q؃tKt]a`iXnY(K1f9Yl˳:,
S>*zI/hT.[tO,<.|FL!%I4;rcq@K)Ѣ
K9a9'8}3<\u/Uy$j*4kG2rQ4pdR5Y_)qǥРvcf%5i>kۥ oxcFr9TXŤK)>tEsFâSt+S(lrOX)bdmsFR7c9כier%@Dˈ1Gmnzx9VۙBTM!YL7-<oٓθ>+H)<B@P~QO:x:YCJ 0hyTUQo2kgMlX 5:4lZ%j6*,?C \>nR܂p_W~%?wI_󿡖0^J'z<DiT= W}YkCBOeompKwDaio"R_;z7]	ޗ+N#KoƊ姱&"A.`46A>z	m FF&)_f`[AY#`g]hR꽐vRWҎQn*}XWa
^MF	y; z0H}x}
h7ut{he7п(ouYtF6|o{yƫ[Ly.ik_b8G]7ݍݒ٬*ʉ<%	g%@<AeF/U3w7HcJ_vdM\AilH3/>AD#3UТfNj#-X-a-Ta$vހ=x#M}LwmYe\SJ/*NG,P4$~mF92Hr
S Xl呋pJ1%sƕ'f;Ѐw2UR	'B=LZH'RFңw%J	k.M/Jpv8D-ewq4{&#D1nȊՠ!H8*
@)K/xo4"g
h1~,Pg4QzNDf%yʐ	MA_ȯJ,ҠE'CU3x8%cr~<>vJ,#x%|Lxx">#βe|yL̜BfGT*5<|KB0c|k!;XẒm~?'7I|M_[^Ȗ#tGY$?u8+'D>ń<Üy%3Y܉GH1x{);D!|#ǉuӸȽ'<z}\11&"̈ZWs	rh!Q𸓒^2`_%N)'.|CᯖZ`[6kVܥwin5hAx0hl7~)?UiO1C}o|'jT[6*ZUeB<Ew=d}jlQ6U*Ł,ڵMbm$	<e_nW->hKMNdTMNuL~oص-j65LMywgPV*"h=i|]~dQ|j!_ue6X47I[Eh(	0i}+BkU@kiaZsIEhU+Zb*
޷JtJuI]WZu]ԵE][յM\uNIqkE*.,)PK?-    PK  ]W            /   ch/qos/logback/classic/net/SyslogAppender.classWy|f7L 	,`.X D!Y'!Y,3@(*ږ*Zmm,-j}~73l]sywΞ0;6١߫#1"-ZiIB2jr1$5+5dr)Ғ}Ѭ%dZ*z9cicUeiFCVEdLT0	WI8^I<65Ԙ0r71YT$t)(T	Wsi%vlSwtYF<(X
cYCߥ&ݱDOș
f	/(>KP`)35+cx9PܯYmj,[CTU7VA%Lݮ(T;n
x/s&uý2m4uuP,M{)7HJ7,;'CBY7J(aVHEDL#z?[wjI	
2,×HSKDu.~g嘞;-W/kmn/F=nQM 2:}7g.%n4}(UBONWbx6,Ѯvܑ#
0KKքJ&PIP_URfnBA'VJ6&-nVG<I0YG\d]8uCzDf]iNDV! XGLSm2(D"6\ٻMU6Fw
ZflqD$e,g\C&c~?rE@g66W<ڐ56dh0oJzR$ %_nQӦѸ~jT؋"D:%)[HB3M_{q#vbDj
5ŪD9E<GLʸ_<r6S~<(!oMqNvA"(z)Qŋsdsm氂wTbnvRG+{4oSE%Я~QaQ^a$6X
	M1v9}YB1	ƍked0訂cfv1W IHbzT>+b6PYЭmMk;[ֶ߲)m]Iowuj"
FZiji!}(3W3d@u3Cj!3L#%GK]zHL)!@M&ؠfy20[]L껒{{$,|F٦vmgibݙ}fr*#h<[JcE5g-y2-e
1첎ȵ"!mH$son8`s:n쨗tQqSF-'iӸgaTXz*K]qX>ʓ8Ru6Kr-l[J
ft嬃ȢGd۔Q'&SSw+BKO1M-nC̨Vhրgk6ʬG[S={-3N&!'C+Hɝܹckp	#9Cө'ct( xhQ.}-=kͿI,Se	{iR&Ck_	o@ a|SمˇLַ
5RZ3jN6F)(50~c<L䝭QxSUW|#bT#&P3,AE +h+(D!ל\'^Y%!I|TBB5IPR9cܜ%g+焽I|qS"TW=zB|v[bC-xYRqu$KrTjôG?)4t;aNqIAsC__+?65ua8PVAG`8x>T*+z`Y膆sXŀiPJ8AW8AO2e_|8
($/<Isq Ķ{1c'Sl%úX<22C̠
̠rމ&luuq,MQ~VJah81L339g63#>8wv|_zr}	/s1xn/ly Y6ںB|<R2n{
E\b%2&Y2?e$}>qeuS|a`0ePWw8PwWwZITYX%7Y?O;m-u{ni!o>M~.Sb,b̛Q]	>oձ̭_HU85vwVE<|l~6|uS9βASzo}<po+@7BMçpn1s@"ӵ'<g]m pF\z A!r%A҈#=L(5͊kaK9aj`NEű l0þWCׄ&cq$91?vZ콰fƨn QPB?`<ې)cO3i!cHnx~_vw\=%J+"PK[bn
    PK  ]W            G   ch/qos/logback/classic/net/server/HardenedLoggingEventInputStream.classUmWE~&.	)b/R5/J(5
CT=C2&K7qO ?~)z'O;,N<3s{g
|0wZ5][?Hk5 9sًP8`!\(?5U7KۼB-V
jiTҌRrWv~?8aGJFIMH$U^cpn[ (ۡ()$^,2\k;`L0DN	UX	Ӱ>Ū"CTkbOGreۺXTpŴJjMqnG-*n{pŮLI/'D0\rlr/.*t0
3\J1)g 0>	DOt_TlJ7*uw$[c?gh.Y6cw
PCcp6ք+,Ewjݦ(kН&	uVqb~̃]-~KLK8GR:&j6fIp^&@
}p4 X.ΙL`4JYƳlr9|=SwlNOb)V޶Y7g$b^VNb&E^;'Ca8sP=~v3Ek%u\ntUuI~_#ƻ
?_U[J*<^H=7th\ii?sq/tMUݬ[9U=%Ikt+GwI,5<x/|
v޽<q$Ox	._r+._sO]3܅.uiV]x_R6^<?A1&aKA*&ʘ[+7︋T_dTA'Xڱ;q*5jF}X<4"?p_rdx~gc8
C#8[l OD(dq(=bdẆ/Lҡl臚=<+ZiK7r"APK=C  F	  PK  ]W            <   ch/qos/logback/classic/net/server/RemoteAppenderClient.classu=
1F6@pia% (8dM,<#6*Z0|<+*CG2F=J8IsG$˗t0&EAzKv2>BRp%tdHo{µ#?7iF{:(|,5C2'+i)br< C5T=<͂tsB+
PKT1R8     PK  ]W            D   ch/qos/logback/classic/net/server/RemoteAppenderServerListener.classSn1=NB,M[P
FVEi)J<XfNg@(	!ҕgΙ~=T|PpEq7|0QXiBM5U/L$3#RuJ`XyLnz8POxx)#"mт)RÃo<P%<d$Nm8a.@gAL1a￢fe
۪-"A%+JH'\K{)+33%DTl`F"9)],F4paљH>}>aWݩLjJUjN@SԿ~7aT6oo-m*
s˃JfI9,;YVpC+#	NZ(Aw	3խCޏ,paX>.bLr4W	[;[Oo4@X#D9֝5\wwPKӧnD    PK  ]W            B   ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.classTnP=7I&MI(Pmȣ`$CJU	& hPr!uU_aæk>
1v\@(m$3sϜ;_H i 펹㵷,i{L%e6<"WF຤kҕz]u9)}M|`ZfCrفT,29!'/c3lP#w԰l4iO˕jc@)1	^M*Ρr8p$-PIT(qs8yn{RLPUH5mbڦte"r8lٴ8OqN<&sŇ)"	S&8\Ƨa)rkm:ȴd۵4_)' OѣNh`
/HwWI4L<>tɶ@LP?w@KBT.$jmp˸V,E4Qd**#˸
	@*\|Ä92k}|/(y܍/qe&-U܋I3
8wD-ET}u
!/Z^PKTFU    PK  ]W            B   ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.classWs[G֖s:NӺjV!i)qMviki#XW><-PHZohMv 383~L丌ǻ{ݳ9cx74h:Mi+t|tLێhv]  S`r2~3nzJNœ+qG?"/rIIo!t'>)tD6}MNI*o.)1=&`"ƇZhLRD'tZzYWM ~\t=In bt,h0]Yie.A(Mc4pWhDm]Q_1t6у{ve	Z]ڹztx5eJ@71
a/3pI2> б\dG90jH~

ft
az
7	Xni+S'Iś-ҾFT̘&O`G֚\Ie`8OaOmFI `;']Ekx	.,I9q_t誰tdj9QxGvhR]\Ml:!7;0ͺc8j1ΪtP'Lb&$_"5v^Їqg$ek"#S.Gtuc21椕ɔkSzŮxTB+lR|uTUL
lV		NRUI'H
8Tj8ZO<PVkbn2ȍ[pR\5
Ӵ&yg{KHxFo2GsCxϪ9h͋AE|L/vl$zG˰E{9Z%FcUwSLKvH!;!qudQ˳wi2O<(KW Vwy+/'h鬟RK]e<SaʕşiڳM+j]Nfu;_+8MD}Rh?jsVOzLqb}|܂Rj|(TJy߳rҟtS ~}8\L&Qu.#PįX8*8S;DD)k0FD:6qeUt~WIu3Nꠕ]l+)}rRߕpݩBFg8~&'k_Pg}5x2o`N5-WW{KYgHXu/=__
7,ۯkBo]uuϡ9& eڍDو=Dߋ8)e|#Gj%
7_w
T_ԟڱ
^-vVk[+6mGU5=?Ȉ=}m/V|X
.-y;he_ܨUHq^\7>F[eb(DA㱫5F	d(5`lmQAYHg@{O]߇`t]IU?W9;\\aukͮ}v|	 }H~Yݟ̲
MݟE/=/؛d{Gs'xOIb=ELO2CIޓp8ʞE^w|9eoS{JN:We쟔SvP̐[tQ$:LZ3)^÷I;LFa+y^躞{CZh!|#>v@*ggfV.|h
*
N(	m^@jxT7yYs1%sL%EҤ؂p("Zʽݸ/*NK.
@#cDד&纽_-xPK	  !  PK  ]W            ?   ch/qos/logback/classic/net/server/SSLServerSocketAppender.classT[OQ--mR
( ^EXh	\LH6iS#>nvny|/51>
Ths|73?`%.JFZQޚ"WմbGu ,%STVFIXUМ5,DуHQ	1Hܶ5lA6T^\ׅG_		`ې5MΘf0ӌ6%'_gWtnCybKUHG(!	!M˙VrL4k︣Ӫ
ù&:i]rn&CfN2Ua۾9o4BSQL"ie;u>7J_K37Qe4C<WNr1T4!ݎFݢQTJ5_I+3+	zKxN
ʻð4/{Bu{rG8
GXTUUǿRwg%GsfR3-Dy7LXuѣׅ1wp˻Џa+Hm)3ڻS`ZCqwi;~pv/u{Dg`ⴃ?Nnù$R4E819'~<.٤.5ub?΀̵HQ?x]W(Y(f)IV!,IZY"_azG|EW/tf<$ 1S	ri!_PKl    PK  ]W            ?   ch/qos/logback/classic/net/server/SSLServerSocketReceiver.classUmOA~-ŢPTopE嵈B5)PӄǹrWODJ_IQJ1?e%daVU>R2;h%նuM1:䖒wqgk\/%Нe`,^D:%e\̰Ђ|o
6T1O#z6Zx
0AwA/q*r'oұx<UvIgM^<TG7
A2n!ucY\u8I~0|x:+Ug
=sPT-{
jͰxytuqv`H00mHu>pW=)	n _xAa*$2H1D_EM8Dg)p-\RkXծmQSWzvee)5rnW;z#əZ*.=aթd3<2cgQXvv4
4Dmw`S-{׏4^5>A)FQЌ5}i}"oXPM	\Qq0Ck@ϴHNӟ9Rhg%Nj󴶻a,*Wki	$
>D]\ω
6v#N%+81$. Y{G	8I1%^Z`Dψ{V\_,U/,=%i )Nd:n79b2OݱY	ױ_vLYK$e=aW,Z+&F\sPKk    PK  ]W            <   ch/qos/logback/classic/net/server/ServerSocketAppender.classT[OQ--P].r/VXI		
&$ENǲݭ<O>Q*g:Μ(:#G'BYmG}k9aU\S5){_Zّ6d;,mOȵz]a3VtS%U0qgX:lpѵVijF"r:ܫC=a$ErN9Zƾ0%CwUV)%:jp$I0D23 t!\V %:7w\I@Ʋkpn1Q^,m<`H-GmK3U=Of6U
cow0D
za~+'e>*T'yVv
,%NU;rGwW?F:EӤYe}!|Ȱ5#2G6TS%Ae!^w䖐;V%m^R_oGV3H;9Wi:`fGHaGtR2#/=CswoAw["YXOf`dAa:%jp[
ixY,Ac
s>'<..5źY1%~S jUvc_1|Ҡ睧UcU!,Nz苙"/$1vQ#>#9/;f<$ 0	
ic]PKb    PK  ]W            <   ch/qos/logback/classic/net/server/ServerSocketReceiver.classWiw~hdy
Cd9X%m!$XDxt'ψCtemYZe1@8_97h,+c|̽|܉/h@53Ч2nƴ''4Mu
=cq/3unpgHs9C߰o1= [k;\2N^K,UNhVXuwKamc`9!pV!M2HTSю
ܫq ,Tw6"H*6a3&1IdyNlUq8IТm*nD':Αb˰)'՜p.VVЦ;\x\.ZzZi\JE7"qKx8ow~/YUԵSmݕ-#7E}	nWKO3+ВcHs\ CMU^,82u*:U,'SzeWD_}H*OEn[f.wC*x)lnM:]Q5IFAܣ`XE2_$)xaMRhf>pk~xt׽j6pQK˫aZ]7)zr=:ag081V,pOGprڄt*aAueKWpBŃ8pSoeeMDHIMa˲Jxa=^Ks9SxX
&?i~.%(dQu55.|RŔk1׳
TSѰ30wZ%&L#ZDU<
x{*2i<T̨8sDՇĜ=M|Zf:|zLxjC
keGO
fGaX[qQTT)-YHZW'sTj99x6cޔA
w_ٝ+fi<AeS&`h|D{
K-W
1V*^YӠd kX4q7hMcҼC]&xP;4.\k:<)٩ċndI%Wψ4n[a-D_\o6Uְz!
U[:Rq7F%Q}Ap슣HQu+hٶ'ME7iNtE	Vʝ\L,нz8U><m$>
>uka%GnxE}֌3YE]y.U}+N%#\jY0<]5'2"+S>g媠*ȰmeR!86II5iw|n
Vr\Go3>-}	,y4GEfĐF3z>~_ï@w&
B=Ytz'm|~>=Onk@l.8(.9t/%%Z/v{v:ۂ}IzA܋!ze%4ctoȥ2q/JT/o@9'GF4}S{.q)rX*$I$}'"OL~xKЅ#RfOLJ|HҪfg/DWeh4kD4Մ}MWDz9K0E~mϒϋR(HP7k
&pN)t!JCvPRkMWFD&!:a0*$.0}rRVJT[aeQ+Bg(gkDրlk
uAMTWi3!`0
TŋwbM|!_	ȫ@ފR=y G \$@z1[dx"z']).@ >>|PK!l    PK  ]W            0   ch/qos/logback/classic/pattern/Abbreviator.class;o>sNv&FbldĒԢ<}ǤԲĒ"vFĲDļt}FDTF5
̼tkML!ҢT.$k@@h++$8 PK      PK  ]W            8   ch/qos/logback/classic/pattern/CallerDataConverter.classXy|d7I& k"l.DE
Kh0	&C, UjZQQh-XWZ[kE͒l"O>7{Ą WGyf:fvujᘖHDqͶu˨uǵѫ[ț5BܲY!_ABsޏVfk"zn5
(%?2"rrb({XfVc4-ciZuU˙yDatSա-k.onkTʵݲL1NOV1SFuv}JKv4ƗriFWumEyrt~P.%eC)g].iOSq:ࡉx,j'gf#_(S0KE c[V5+s8
RJUn=,A[3a|Kؚa'2QQq.R -	I#P,4lԭzڠ١aݱ~1fK$,2fں-syܶP"\HЩ?]|: B,F:!'.x+u
"
cr*6dci:=lSH|Wլb)M;f2NGiIk
ڃ˃m~SpY!ѡ2+pNȗrxǧGXIb%>$mz䖬\4Yd4͘:ԫv(Ҏa+D[jA,!I"KEIԾN_(c
Qf\u*#Fpi,-j04&gVۭYN0Ultk@vs27/
x7.OH'Oeq@CQľIf	e

Y³ؤ*q-K"^++a:"6)]>',"R[%5QM/u9#!dSdtۤs:YlwZ٘1D~Zb;	Y>)0<Tt]]mфݺ2ȯu=6.V3.ITui̔lvelo~_3͈RJJ}O=rϽҍ97ܣ1CrK>=. إ1br2Gͮ.Ęwlvz(oxBz{\zscЗYfOb+AVTyJsdYsSʲJЇ=|f={%$_~`Milhn
-2n!|8YI>gLk
66ZVۂ>|!@NU4Q/\m¡SBm"8/k	7\FTjU;{b%ؼ$.[]h*:b??tXm/MRNdn3Z]rx8gFh|6DF$y&ec-Ϛo"N=R3	rtr* 2'rSGl\GF3݀:/KќM8Ѽ[)_z$ÓD@zZ"ӇuITQRk	5]P(#*-f,ڐ͍T2 ؄z0
g@)O6rQӤfdf-h5{^LU.6M;a[Zz#;w7
~7l+,~WU>!X9G$wr.n0h?pN]+bл^/}'
S
s^'Z.KgsgMWI!YB!P`t)
3*O,u<QX TQQ{hF܀ߢF^OϽkar"=IB3iF$'No4=y#6['lI*ʑd!+L
[W=bUI0Ę_ޱ_(sՌ/꼏v~!pk1F~fIӿgCW9/GWpm$CrA	( aL@هrn7<;B>rZI·m|M3W|
(Ǵ{q=w'ȝs gJA*<[wT~݇@ևMr5$]Tqdo=s=%pQE _KҼrF)UJJJ}G(sGw`*@3;hi^Lsm{6<#25<a>WpfjD=s|^: Uq^57סWf܉؎eAI86<K±zXDO|O-}?#i/~]SI^r=t%9}du4E/K{9'{o'\ߒMR(PpqT)1(W.(X,;{g/vIT.HFA~9ѧ s v()|s̑RR9`Ad+J+JJ6;B)ځ9SS382r&Pu`Tt12iQR7W7EHH%42Fq`Δ598t`=f=Nn~ZZi^TTK
GZ8j~)Qa~e1VqC(]+Px܅[{:xKv[ϳVD&!OTvaR@Giy>,ø}EzcQ,WdJ?wB٘zͳw
4WŚ#_C.}V+5PzK%]8zOvTWOwTvF%9xۼ<U&vVsnN:&Bi^MDR]`0]b	Såt
ܱ7ry }n~܅q7=3
/܇_xC1IؙN&w	%?qOe@榋x_	q39o*QPoʥx{SsOx<$B}l8*aָ~8ǐw)OP䬇OnVWB71XF&C0xC	2N٩(N`J_dxsb8$<!I3yz*|b[X1NPKTܝ  Y  PK  ]W            =   ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.classQOAC=[błWpĠ&%>ޱ^4~|~ ?1^+QĘKfvfv|]̡dr12v"΅5{ቌ4,V~A(y7?Ks?IQIæ\sl.q7j_g@wc<:7MaѴ(vq˄J>cV*{F{U#	eũ0y,tX!l/Y{'=j7Vr|Իi$&%-=s#8gȼ-\3%hJ( ,5K{-F3N?g|`o
w˛Ekf<o'Ǣd[.
u	댛>ҮLPyޜji'NtѾj a]
l)aF7M<d%<cֳ5,IPK7  4  PK  ]W            ;   ch/qos/logback/classic/pattern/ClassOfCallerConverter.classSKOQ}L-Z,R"SNbbXBb2`ez;SgM3ht҅ϝv8s漾_>	,mP$7Q(	k$w"Me{b (˘eB
UE9YpB,lsV2T3/
c@]TNJE)Z8SeT,X@и`tTO9_ccFX(n	w"L艅%£*KhO3w>QT(FDOEЇ"VF*Jeo_VGJ'cr΃cA3F(6~W..Dl
hrG4nA*|fz%91/l|LS{<ܜ0_	a;۹0wR]<ak.Cr$#YSg<ޜ L_%[XY[}C:[dUPK	    PK  ]W            5   ch/qos/logback/classic/pattern/ClassicConverter.classPMK1}ivV<zS'-
҃l6gy<QVD*
&&Mf2o/ N1B;C>Ñ̦\ZBr=12R.i5j<#Zo^doC?F]Dkdb+E6NSN2t':5(xGGU_6MI+e
[:.tj'w|m=ao89|{C!߈X'-/Ph
PKG    PK  ]W            9   ch/qos/logback/classic/pattern/ContextNameConverter.classKO@qKRm)V=(RQR
rߘ`/Q?V{Cs?b6!H;濳o {x碀2*e(	2&Hfą4Fhq+*rcmՙ\Zvŧv:*6zͨF}7c՞wsjNh<~+G\K8'&eDߘr	r?Pj%ucutuUWٍ8So':26&K3IMfeQ	
&Y^rEܖP$JQ[ڱ `">`^9lmqN/yxū5Vؒ&[uoae@Xȫ*Ykϲvڪjcf|5*:D[aY]
oPKAS    PK  ]W            2   ch/qos/logback/classic/pattern/DateConverter.classVSWLX	b*(*@&%4U,aewOPhkڋiL_3/o&L]w~{ G*JGDiu33&)]m-)1ӘR-aw3ji[CYe=	%62Ѳ͕l
{52ϰW܊)	L)a]12aՌLT؈M)Iϴ[68.Ry
Q"[fTާY6q4GKky34.%FLy^jlOl6bۡd2)>ܹgMxNBP#DWtacKI<c9hEp	b
b.Z%tcepck3S'c?;Y[c$qb
s8îr8J.σZPR:X{=?mc2zp*")\mVtJ {BF/(%*G}G\(bj];nZ	+uDɬE"pL0CjnpJi#K*Gw먄y帮E2jޫ)7?1/Ţ}\ֹ332aW1ǛЩE
R-^
cR2 [*;	3!˽SL].h*mRF4ډI:~e?2RZ.vdLSc5")4Xx/LzF-ޱ%3Eҩ֝p&ps]@vdgQb."Dg
//-ꅽ/oMMӟ!h^䧫n_CUNM*Z^,*>IT>XJVRj椰 )7MnsKɹ+rNn.8nXj|V"3t`a2FI-yf\!. UKnGK3I K}J4YtW	Ӝ+K_&b'5.:Cj9GՖ=g
UM+RWh`Pqyƹ!FQ7h4-A*a6ܥ
4IBVTcj9]m\Ew&ϵf驒g9'*6,o94{
@(m<
<FSSyC>Q`1|+ｍwN[}"#AG#ζy$e3"`#yg1-
Rp/I/b3UtǢEpA40LG8 
	N!Gj7ЅЍ_i&
5K[=y\oqTTa
IV
JERoL=*@T7KI|OIHn#qV4ui{zbC`w^Hs8WST<wɚDGXQCIKOw_l{e
W:ɪ
F0a|}(|^K_3~N( PK{D:    PK  ]W            <   ch/qos/logback/classic/pattern/EnsureExceptionHandling.classVRW]"(D.sHFQD1AL{`iUb^LU> |B*hV\J9Z{}O .^ 
h!)hB@}ȫf6q{Si#e-:jg77tӝkXf=jW-Mw>}>ra Cl81zچ-ЁNGt@R%Dʮw	-:%
궙5M[?<?Rζ~P@x$Ҳ*ތe>m N (㤂S4kZ5̒5/X^%eeMgWrg@pf몫Κ^<2~zWeL-W73zzX@}0Fd)$T\O~ck%[ZU	m,p;0C\*oa| GH*8.+P;%0z҂1OW3#X
H>K%])KS˪mx嗒3KP'||˵1Y6X<\V}kl,J*^OVr@)dUrpwL*q]~̜cgğm.jʑE#k.3#ѯ)	,xJpR)?F+Ю0:1L7*uG{88;2X6mMax>Bܣ~
Hbϛۏ`/7!h4f)\a	zqhE#=h{y6ZGhg8>/&KL4u7q:^oe&P^`떊z֏mO# Y<(<ˑ%}DQUx-|+gk@6?et#MW^Ajao[ $o wd0GhЈ?Bg8"FKO?~GjpU\Wɪ BW̹PU_W%87ϫKcXEU+@E1:]V'{/H+DcI1_p$))J)kw
#vXw
㵊_ qk.ӻK ϋX". On*7;DvܕΒNHB.eS97*W/YdkPK}[  G  PK  ]W            D   ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.classSMo@}/Sc(|HAA&	āB P
fvg޼y7 OpG
u MI^aH8E0JÉD}t6S)KwG>`Ń,%E"<*%lPl"QYBXAxS%N<t,MLЈXRy$3[vn<'0pone6㥃7XV*oG4C#u,ґ0lفOٶKXskDU:K%ޅ9EXύ̅}879`ДU@OM,_*'ymw:Ƚlg'^pmn"۠`

ůܯw}/[]vpB-6K.3Ƭm\]>*yqJ*p
)JPKO    PK  ]W            :   ch/qos/logback/classic/pattern/FileOfCallerConverter.classSoQh XJGD05kbI^<=u-^jxdC5yoo潟xRVJ1,/pz`ٞ"׶F"e[ٹcrx4kGYѠ ТkX1a͑q[x_Xf]X	߱b?-w=9䊖+i_B_CI(CP$lK8fÂXq
q*Ex򟱩gNg1a\vVRrח{'ÞEL;d*颦Kys_2[XSdWD5ls5ci/A+A+B2dApR /TP!a ŞدԿ>si;l281/b_n|F6 <|tIdP!b[DX2E*{c;ls6
\grV^ߑ>EiD@fޢp"ԧ?PKiPl!  /  PK  ]W            R   ch/qos/logback/classic/pattern/KeyValuePairConverter$ValueQuoteSpecification.classT]sF=˖*54!@i#ARib06g2}ZY"igӧfHL[:0$ؚޯsp
#
w%~p\{Ǳǽ""Rp=\{af"fYch"&r!ԛ5ĄT7Z>5qy}}0~.ב7q3]?	xķk:o:N)"ơ7i=dX`e@đt+2&,y/3Y#륶A9gb	7ֽ)T71+YZl
q:RQf8R}X~uŖ욁D/*vit,LXS=1ܷJC5UrԎ5@4;>i:Gt4lFr#O&Z7gF~)( HQh\ѳb4ɹӵ4ܪ	p~䊛82~N ^MыW^01LzH}MrP[DHrRb \"M)V!@Wh7MR]>g/Pء÷SNbDϓZ{&G*X"=4)#]&"/La2XULJhB.{ג~O(.aOU,$ZgN~z3;Y~.K"1Fq9y;fRemyC	B-f[K"iН.Ý΢JNSla.)RjsIS]m.O1uN#)vjInMRrP'gwV_PKeZ,5d  d  PK  ]W            :   ch/qos/logback/classic/pattern/KeyValuePairConverter.classV[WWQ bFhH T{C@Ȅ{W_|/}]kVOvvwf"M ./'/9_?

|*jRSڜek+=fTFm3t1Y-+;oY9)PjC-TC¨)ú_vU]*X)sLie\X@:z4(hTAf}Y/sӍ*6!ȭyIJ6belZK:y3'UlA@ZrgĒCO=_$^PMvS vb*ZGqeTs=cGY+oDtVJZ-h|0/}Pk&'⮮]EztMAQ3hJ:LPVm4=-fNo=pDQ8o(?s\V_Sp\`X[YbuZ
@	՟-	#@e*,͛%*Tc2(FKi6RN۬|Z3G5C^i傊n=3<\1-N *fu7UN\VrɞZbEraT4&Yk +Wd5vdJ5
)5k2+¬Y)o1NՕPt L0X:CNnZL"Ldh\J	lh"~=9rY`z)nƩ̦AS&h3F0;nG[3zޔrQsLM3.ˋE0٤sCzzf>'#4|ݜF+Y@jeokyx޸fɀ5y"pBOrolP 2)kbY#
1`X[+@3d>fr׸,WO4!0C
)gJ佔gKW>\kg,BX{pc9iby

$Qn/p6n]d(vnpvSl1JҪW(si;c[.BBxQX~q=4ya#"/AZыv^N$ULJr_J4xx	Wd!0jSz'ݾDG *<`OMw]KuЏ+c'.|r-%^/nos	E00sG3%@.be@%O^>WsA:OO=-`}KS$<$nE/m|w.I8lϭ"'ntU>{>FHci<Ghu䱤.,}rq|~HFIJ|PK^`\    PK  ]W            3   ch/qos/logback/classic/pattern/LevelConverter.classMo@I8q
M?hTe8EBHHC*}㮜-.z)̏B9R>̎gy?~|4
06Ac"5HDʢб8֪<>4D!Lͣ?<BXC+δx$Yb2K$FjRV>nbC/"Kf56N&ȉQE[V6a_ŕOu+B3trrd)2Ld}lٱ.xcuMmZ	;ܷL{<U܍<K..C`Ѐ{ yo-]:2|U6p-
NlpKj5%8>6Aws嫨Y1)j	@zP<PK;@ǲ  w  PK  ]W            :   ch/qos/logback/classic/pattern/LineOfCallerConverter.classS]oA=S(t[[".v}		X4,u݁o䃿 I)ywd=޹S O":c0M׷zoZ.C2\JxfmrP0Ğ9#"Fh	q$4$u,Ag0fdYoxPx!eY+\rQ|8Cn͖ܳÀ[b=&q:Va͹;p<zk+Ѥ*4\ӱ
uO
[]K%ɰfԋQpUCa*@52ԥPrOq``ϓ㦆-bx^+&M9p͚e\@<CwYky%$-Q)]'dx2tnb[PIJLduh^w6y,TCa8s>֌Bv T`KrLy=jE!{N&yF~mpll.Y}r۸Gԇ$Y
YL#R	R_puɍƜ*iQа4#ܘ0I2%P;EG	e"$aP%yUWT	6GsjHL)LUiU΃q?PK,(h?  g  PK  ]W            ;   ch/qos/logback/classic/pattern/LineSeparatorConverter.classR[OANoK
^)%qC45!YP«.Sf.A(㙶M>ۜ;ٙ}5PP
QF ⁸6HMҗS:C露LFrPy3	YK9f6ϝ\NXzI脰]ȑsVg^eBs|Ad;#X
bR3SCi3vf Ąft{':\VÛ*ez&Xr?fwqeZMj(?_x2
1ϽR<z7륧&M+c{3ؗ[_A8(2.pҀxĞNo{g簍119b}zYgywU[;?pVfeTTO$.ԽgcPKs  ]  PK  ]W            A   ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.classSn@=״iB5P(5EQR+REqV_Zۉ_m♏B:D ;;;so?}TWPPDtq^mxv<Gٙ;a0yJE )X`<Ƕ9Jg:ai'O@tUbQ*ig}'gXr8BAE^a({^5Wa
Zau1<v [	jI^4\r]nDܧpWQWpM:S_je*BvHHs$YSH-7e0wu)8-WM
ɠ8q;5/@/۝pI%=v#O5iώgB2WdVy$`O>e;3$Uy29$j7E.ƿmK@49N=@d6d˳q
f|S,D=siVS:
@diJ*3)c	SJ6RIX!;Vi6IX	6O)gP&"9*ؽ4PKaj-  S  PK  ]W            4   ch/qos/logback/classic/pattern/LoggerConverter.classQMO@}*Qy+YojILᾔAғу?em9{ٙyo3C^f"3AD3:"9ctf|eLP<y5*c:J05X\K;p]*CE@P7[-[01ߥ8-/f(_&zD"VmA2=فüI-EА=\%7O2)]sַ=X?&(lGA:/ʴł#T߫Q/mUFTz"}>oK[L5Hkd2ڕ^Ce%Տ_<7fVlW&RPKLZ    PK  ]W            1   ch/qos/logback/classic/pattern/MDCConverter.classVkSW~I$QX%b
jM	b$vfC7_LtR?cݕyޞ<=Q! "vLa>e*VyN+*Zf2Uqtdu2ua4@6 "Cb
$ߒsrvC>zř*u]+O[2,gf0CQ؆.e33Uuo;t؅77dz^Vz􇎭^GjE+o.gMr[}}IG^Ivh#-U`ͱ!UQUL.o,36lib҄V5!.@\U$n՝j]YJe\_	śBZpځ4)Ȩ8[=4M
N
ĚK(8%znT *@K3j#d0.(Q>lh
X؜ogK*bcTfe^MR2Q-##n=mh`ШƤ@[jD:c\aӪU,
[oݏ㺊vn̸ nʬƳ{[f{.e*>G0X^*4̑wFwp+U >Y_\
VAj!׾1TpME[
Qx4sfV8Ť,wћP!;|wɹP,4ΦG%6[xuxs-#CQ)+jzCJ`P,Kd(S'_Zmg16;VqZf3V.c$yF	x5LS+Pȅ-'8&Ǽ}+V9y9#"ѥ<E'׹ȧA@깢2B~/p}$VS$/M,+Ai:;8g[Ky,w]5*&},ф`iV/
%8 '3|ND%Y%V_N*Rmxˮ#n#^Hqp QAgi=rI0&Ii/ ,߽git"
hu'!ߒo'#wF``Op#+b?DS]+	bF8e
fk'rHqs5䴞".ܞ4{]X]!zŋ\#%-XWإ`P(
Ⱦr5nR!iw6&(޶$ѷϛtoH}+߹KA=PK9Epf    PK  ]W            4   ch/qos/logback/classic/pattern/MarkerConverter.classUMsV=/-ǖIlIIȎ&I8`CJ YQr%93	vL7l:c0ðꢫOrqB]{9\=+ p+>D0(ڞi+\RVQmД8US:kt"f8>9F"BhvP\6j܁^s"e)C*6da_=PcT˄1"NbaauK~?b8%4Gw{DģQQkee˱K䌄| O{b$c$!.,뚓15bWvG1i	_b!Q19M@p3|[!"ݜ#rt60Ru0"gq=˄g}ͳr7<c8/Q}Kh^QV6'3A,3Te*Qo4%ݺ*:ʶj|
Ξa3,:GdXՅ03qkZT]nRcaWa=k [fJ-z;mFnOԝugT-;.Vi-ai1cupP1gy!9L984fh/y9MBc
;%oVQoy,D<ׂPL)B1g:EoTx>dg_b^t9˂?qcBttH@M|u?{ϟ	CWL 0A):M7XBȧ9C>1b
,27(%dI6kK+ȑxq5T,bXl OlN
F
b"|o0FD,KT"~,/?5&9Onp(|혻/#׼@4n?PKbLq    PK  ]W            5   ch/qos/logback/classic/pattern/MessageConverter.classJ@-FFbq"HQtHMbK7.ĵ%i(ŢY[ϗ|} 8F9-lQb^?o
{c{$2
y#:Ɉ*C!lߎcejg}'=&LNu5{Z2/m#z"u@ILYژș 1Ñ	C[9P^<v2̀*3Dp+"eXH*ft2-*?̰0_6;suJD+i!AVcSe燉v6$r0O\ q|
LAsdK"i(tpv`1<
ҖlDKX
3BMWLK
3UCEZ PKI8   .  PK  ]W            <   ch/qos/logback/classic/pattern/MethodOfCallerConverter.classSMo@}q$@hShq>% )"!%-R^8mqqvs
R~B9D03;yofo #%d,{h}B>?Xе1"!};?2Fi~t09hصtq}go"aQ{xjf]Oq߱#?{QE[54
\G'a0#P6K"Pfr !CÈQ-BmjX3P:ÓKt?xh0?Nb]{yC!	$u}:yeJ1:ϒh59K)IۍśuT5l3j'3b-iIT⵫Paa`IC'<#6fddӵKȯ5Bc~:~ti4nKȐ@#"ERTk	]Ewq5}lS~A%ՙUWwP.+1(*-PK	.   7  PK  ]W            9   ch/qos/logback/classic/pattern/MicrosecondConverter.classT[OA-l[
b\-Eb\64)ȰNO|Lŀ"}s;Ιuz"'ATC,63ƮA%;
iMplKn	"˦mUhnjq$4$S@!w4rE]bm
C5ק+'хn
2a-nD+Wa˕*g C}Ї
/H;S*n+6y)CoY0 ٺi8a[ƦϰtLIbdM0tWL[l4vw,T->ԮI
_U:TM畿hJe`e:ĆiYvïAwYUĵΛΞ0Az]]Y{Uyb􈲗3QK)H8
1Buc.y,hX3ݒ"ܮ5n(2|<@XH\UMq	
)Jܲ4Tٶ?hjčjXaJG1B%CZied_>=Z`iM %˼&'toV3ͅX_,];B/ǴIߜpkI^9@!q1+<oL_	D({ȋGr'!b1IF)OD3_3DXwڛ
Ҟ~#̐"HP_gbIaf PK(\)    PK  ]W            G   ch/qos/logback/classic/pattern/NamedConverter$CacheMissCalculator.classRKOQnLPVEEhba;Ёaܲvݻ5cbK1{;Mt;}k wFaOt6MafK)lѱ|Pt d)i1)yvW40k].!%N`6FEir3!7]횏{Tzy!XV
L` }ݰ"'X]lTe0c`Vdu
9e'/'p{qѪ	PcV--v2mnQȘP,2X5)dl)
bH2
9BN!CX":ܦ͐-:R]?CZQ<Xj>Ut(N8Z^ǔŢz'K2i$c$˵Sk/OQPǨ"Y{?
ݦyk3,d"))i:3	'V(9X1OYc!
܌Ѽ*~9JYH9eG$J#XPC$J|zA+hD$#P#{
f!`Ip2g]!%c PK;& v    PK  ]W            =   ch/qos/logback/classic/pattern/NamedConverter$NameCache.classUoTEMvUk]"\un]X5w^뽳M!	$h(cM?agfZbܙ3g @^d燦/-rlZ.C2\Jx;{"}%7@;.m[%%'`ZD'H0Ѕnm27kq͂㕅=,#qX>]L p59Z5K?D~c-BO؊mfd6ØO	S40=[
DX];i)<0DԚkOEWK_P?k`$oIuge*~lF@{(H^#K
%dȰu,Ot]-2p%
2%}0ܶ%aftQz$PMPfWDA/8Ô
~k>>AS(턜<d(EON2t=ݚuTk0l5)(7	TηIYUEpVa`+i焁
bT-zeI
+ǫr2tVȒo;))#]9ɀض7b+lDӳL:ͺR}`Zم#þ2Nb%5u;KM?he^4Ц1ʀ#c#k%N8
fÁڧn;3~()6/Cj=Ha;dԥJSރȦ[)Xeǯ)kce=q݉wn\"ȿxo/zu`M7RrG]TiЄҩfyG6'* :6:MeKt$7p(:n<gǪL8JhQS_]Lm\wVz=dR$h )=d#s=ۈA*2C`{*oiSZdOi|N]L6%'V?҆z`4h'Z=)ә5mJpa vUh~JdEW(wj$ÿB/na_*opߒ{qc;
'X>Y̑SOڠorVk-m^A"(52gvw_T_)qZ+芎b2Gt'$3|+7n6@c7\b;"!PՁq^2\|oѸK;.J{+v	%\w
|PK)  
  PK  ]W            3   ch/qos/logback/classic/pattern/NamedConverter.classWiW~.2fK 1peں!Z	I# 3h [%M4Kvtoimps|j~瞤ϽB`b>]}{Mﭿ8w8\3^,@Aw]ñ
֢p꼨E@`Pi\̴L@mF4ih&e̜gh8vW0$qmd]EJp/:3wNfHݧ~hgfc]3[ FŢQ"rc|rɵ]=b	<X6̚Eiߋ_`fZc\3\Ӷƍ|A^g{pKEטtlθKE=׭\ ::tp=byC?sL2|,>e+,XFO^=X@VܦOixDcStKKjc49i
?Bkċ; Iq+TM8!1(0
BJwxaܹHX 8B2^F< /P'ggvu7\P`s߼~Ѡoetꖫ3$HoaԜc?+Sݎq
2q%fBC)VB>Ă7gM#+&p#X0QgxѰܭS`JiyHI3tVr޿ePV^%g4qi7L|悑H<Ō@f.,
{d)PsLe.+K7laFXl2+Y'/=t3t;9(zjX@F!iBҨ	w|V+z3%{G#H4Ctr:
ғd8݌bfJ/LGd"k 3Z
hz,JLQs,T:OGӉp,>Ex"GG)_M]%X$LSt*9u*QhE&`l2ZQ`DT0
k=!;KQ2JY"%W)1<qL]dY"ɚ%TotD'K)6$vIDbz̴ΐ(y!KVuLKjM/lhڄ BS^p2Ƙ)޳V&3Y(]G/F`߬Nϵ}XRnYqcX/hM;2W\[?i-yJbL0+\6BycneF/j
CwSKcgl2<Pt
]Xb)/[/nmaXV:fiW#MC7>/pE4[/+W9~jE^߬Z߮Z#3w;XGd>'
G_Es`״h.
tGϲB~n&' O;L >5e]#*M7`pM:;  5Wpt1|&=\E;^0NϛhӝUG=#p
Yye*C	RUC;	#I)Ita
{7p3l4yg)1f9ʩÞ$=U
oChĿg
qsCBW/»(ÊU(+x"濎Q7pWh<)]\ڪg=<Zt@p|%2]CJ?&E54^42PXsBx=豁Ot˕nbSH9sz`i&FE"`D7U),7+li_rMUAJUxKF*+E;.z/w
-*5*oWsU	
PYCeRu̯;hWKoTa52DoVG7	_+	9?.)|y,]p
m%~Dj8k~{K=eeZH'g]Mob PK".    PK  ]W            E   ch/qos/logback/classic/pattern/NopThrowableInformationConverter.classRkS1~ݵV7'qt̃C&l8NacmͼMjnV-}Qa%;iBYpI~ vJuQ!MEfӮL$y1+gyo2mҎ5#Pybk"
ak:%:{i||IlӔՎFb-B{hn|j]
IMo˺ۉ/HLTy=Bc{kN]΃.Df鰟6Ks"eG`
 lffؽTɂ'@ +cyyׁ[rU>g(~pQq9')<9s1tcr<j@C&yg
p~?qgjEuJ$8F#z:<PK  Z  PK  ]W            =   ch/qos/logback/classic/pattern/PrefixCompositeConverter.classVSUd&RԴR3|i-%(
VH*.%,ua g}ghgǙ>'P=7hܽ{9s{ny ƱnFF>3VK
ml5f{E2IM)w/ÕmyOd=Nۖg\F$.a]N5ゥnjgmͪvl+d_Vhe<1;#v	pR&s%WlyEla?xڶLTԋk있u2L"Nх"ޒ6<6Ufr8C4JBʢ}"%[DOʻ1,aa.8F_+ťzl~:^_J̉`kpB6Dܒp24X£Hz+v<pY$b~L ""*az*"@qޓ>/径k8C+e=_0MfRݲz|_QM>ck7y#%~(a>ےa2,:@ Tt;JrZSS~32*MW
Z7r$i79"[/{KB^!nFzP;KTVu2PRJmVQ9wR(l2k,JU78)Ƥus&%e/.Mg{ƹlnjo٢.GP)ZVE$Q]M?m,Ex*k7錹<`qd\zM\Ʀ2iDOϩcskK'#BPxo_|p@i
6@P4>*,kv:o9QDO+BAouwP

ESn43TS
X(%B	.a/h5zut]X]%&r|@$zL'&wBc_a_ӵ
i?&0V"$	{xhMlP<r$˓Oi!#Y >H2|9։|/~i6H
;HXfYКZZ_" B1A^cE\
=1C:gUA)G-Gg+0CY䘷ICx@;9e/nG [EO^ʾ`|xVsq;gPK>  
  PK  ]W            6   ch/qos/logback/classic/pattern/PropertyConverter.classTmOY~nvhh_ujC'27etK#
]\`icЖM3{=9yΙۇ Y
1t0,đ
/nWnnũ=׮9Jɠj6~!ZS^S]j
HHY%p_#!T^PW5U3¦pS-+*Ry,#ͼ[rW KXu	T7
d]{:|UC~y15~˄kȪb^%ߨeqr>͟D/⒉~6:(hѩ	赣MSWqĈ!rJ p=wHMRd"/n:"FMYz[Wr[ͶdQ貞[n㎀6gD`:w-9
T_K*veYH=CTVh
.p23%bZjC#x֨
_`gƅ-֍o3
Y,NwkOfT2]:}#(Ն8ےQԊrʎktx	>s[g;\0w"4|[Mރ@߃%5`aB3Bj@CuPY7F;rmGq'GI!CDRHk;|$_~QWzk2:3{
,Ҙ6p4H{/
:&&70q)1+)b\gD2 a
8˚񐪌G|M%W3Dg?.aM\(5GX]םBf02khHkOPKd;I    PK  ]W            :   ch/qos/logback/classic/pattern/RelativeTimeConverter.classS[S@ֶĖP*
X`TZ:2Eaqv@t)_8#xyPGO^&A$39ɞw? !#Ӫ/Y
6MƛM2\Jf)\<%|0tבln-đ@]G>5.Xu vIkJ^o0Eq=*R[ܬq6Wv}p^0dl8gT%\ɠ"vXZEQ/
])^ʵel|BCFpICFǨ"g4weUqL
jc2=f8+Pb_jNq
gϞ4_z euڗ'[Wygn;4kzYn1qzִM'v\⍀i<˕
aI
wzUeˇ$$d[}^ĚMx[%:
(}l
Έ^SP]0uyNЪ)f3"n]t	oMR
4JM2uڀ8P^\kxH {\f~ۙ}:'<fo$2 4ea
e67w;$| ʙ󑆙0K!5}nqcEG0w
>sȑRroPK7.  8  PK  ]W            J   ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.classU[sT֖-QM[qKKmˉh%4ujp.&@DHFC/WCZ`yo'xM 8=s~}{V QN IAQrmO[5j_鵆yVMoozvݬW\[0\ໂc. DZ/©c}ײw﷬Fte$KO2 AJa|0iķ	bLƸ <xE$ێgY?隵YJT6#<Jzz/ɨx:|zGrIeARn\Fȼ#59YqX\H6SMI
o&tI;Q״4UU}Xv Gɲͳ=<GԈc2toa欱z.7l#_WVW*ۄ4EپmC$SM2_Tma/M<SGŐ'(!:Wаaut+@$ԌƎZby({3k_הzU9-R}-!7	~`]V[	jO270!w|lHHxg/iXܲχ֍f@M.a(rk̬$ZL/ p͆ ~axw:s$!c4xx<*xxiXg1<z&Kv.|7 ~'p۶\*#`XcKI|ھ|P~$-!kIc5vSM#`!Q#H.F_,DlBSjt"g\RR31OD>q#㸯cnRи<>6hPsr[8섉C~~"c,#I">ByYs&G^2|\ƨYɸ"cXC~HPK4  ~  PK  ]W            <   ch/qos/logback/classic/pattern/SequenceNumberConverter.classS]OA=SZ|tA~(@R5$5<Bف)?x	T؇s	`+ГD@kjI}n pm+%|Zk;>EzW]UUBq;Id`X.³AC@3PtTb@VP 0rr/;	+I]CRTIaak]-)ӓjps~)v\O4M3k!iKouڔJoA9f>0$yhǏcՕzNECD0$L0\nkys,<g=!%1g`.dԤ0h2uCE%!;ijݴUn eɦ`ޏѢpMڼ}W`\J7[
6ao0?4ݥP}~ H ie۷[WOv0CǠ8i}B'vF{
^bxJko'8Z0RlEeo)爟Hb`5lO6Gyq$=Ia4ITyGm,5DQJL1rk,̊,e_K#tS(\@:zݠ@V)XPK)  D  PK  ]W            9   ch/qos/logback/classic/pattern/SyslogStartConverter.classW[=mX!N:D)`(iefn钮_MkFYM#?vH,|ν^y
[5UP
T6FsvfVO-DS9uT{Xѡzȶ
;
}ezV~DU.8.]&=6A7e
1&aUEHɓ^z4[(7L+ۈܪ`p@P\4n!Psnr&Aoq@*Njl(Qlul^̢gVHvs2@ RM7HvqD`7͍M<Ӷx"ұ= "]u7l\*){a=<̜]Vb
>DaǱϭA܍8֪ڎR΁BqΠ2CyQFMNL&>:vIoPH33gzv=KT>I]58%
!ϸD|!g=cvD"C0$pkU<->r¶lZΆYC{\WBRPe(IqC.r9#L1oXW4Gb.l/l$L
o/yVV}3uTLˉQʮUp^තfbA<|@&B9Ƣ+Sǯ*H|nv&CËNI7R* t>vn۪+!2"˺Fb;+0OM!Ra,rNddyqb9*\P/eEXW)
5Ve.HC7xvYGQS$>}@:[xn_O[{%'U|JCtI?-pp9k/ZRڟkiD޴,ry6S3'Sj,;"e_c-5_3[.I/ϱ@a7|x:|UO<g-ϫ6CUCvjۏ>~@"0cҿXc?QSn
gd
,깢11G¼
B+pzPViG[vaC1!;La$oYi1庲YeMRޝAcwT
$%e6mx7rkk7
>QY(8&MYza{QOᦤ!PU9ӧuʌRI褌SV+&y 
ۙA7C*r>' !-WgP˿
eX%ܲe]K>dTA4N4ӄe[{Og}Z	w%BP-ֵe(=5<=L+Xztm=vk<%ā+4tFH'p.w0Kd|cqbafd$ NSyAit|پe"3Jx5!J<G,V[UAݿR TίU<
	*Nt]%t,an+de,y_6K(r*z6K^`>
޷	G0hclȎz|_/D
a:~8+,r-ز;KR\}	}n'B xR}wyJrW^<{Nu
GhxZkL!_}--9f[gjyg5E_ɶ|ֺ*Mryn2K%|w?Ls5VWRO}w搡M}^G0эyV`qX둷"o_k
Ȯ~*j
Q-z ?oYF
J
*їͲExPK19    PK  ]W            J   ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.classUoTn~9q4kk3QdM6<FAHA
qĝcwSuO /< aTBEeHJTG$$4&iH{9w{|_?<%ZYN9q\c7<n{
%H3Yܮk1M.1S+ȈJP 0$
Sϭs3\;ݪ
fyèE"3kls\{$$N<R,ʭڬwyS7=ӱcn&mBMxɲ%GEi**>,yiW&VdbH1yNouiQD8AMӪFE$C U耟P<N2DW+j]q/"EYwg'/
28EnD*?T	S+ FW	a0]%O/+p!9"MEc;hb^6e^hZ)b
хS27	|dNW6x |HhдuRI=pEf8՚495&:dTXZ㣃BIG:߼0B@׬3H^7dӦ<%]9NC~swKNՍySg5+*)
]qqp	9(4J<>]#?!C;f4 "tjG".@%x
w0}*=CoCﵾ#5DGDCZb-fƴhA+ZH
AȯTI
U_4ٯEը\FJ<{jD
2U
*xw/VB[e;&-ts-§$0B"$Q=BI?aS$P$x3(:.yumsIۘ'gsKڊMl·=[$,!Iߏ({6h	O| (,H1C6$bQY~Hc7>L#1D 7Oq|'6P$Xeʑ?wۭUPK4  +  PK  ]W            K   ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator2.classV]s~JbeB21d[TR#
vMȋWB2M2aһ3_3t:tB3sV1`Z.w{x%BX!@jlé̊/}r,Z <:Gq	
	,箻^vke؆Y\}fKSg
Ϭ9nΔMs2|oE?
foZNmeU@2>e8b#m5ÞiZuOެ
rtAiAZqtL;-Nғ-&p U4cpuDMp1gT{	b;E諸F7O~ѩ7MpRq(F4Ũ@WLi1N>
YĽVfoOkI'525
ө
LSK&^^&l{Gwp"/pIܦ+
xK0%ZB1q\Ŵw[|:-\xyi,
*Nh8)9g:jș=-YE
kV7Vdÿd[!K~,j8'{Q
ڎiMQp@orszl.e+%b؋FӒ/[tG׷hw[,3zXdխ6BhHވQRgggFGHɮXa!u[Yjehy&!6.4-FQ	WPg4"=I21ﶚ%˗}LJlYF/U/O(V*${o	y嬺+f7O1CɘsWc=éڦw+ƱS{ZA|&
m[I.hE1 '/=W*>8EYю0A`Iy3p~DD,|FP<g:X`$yXĥM!J7蹜#{=;zA6D_%IL)>>#8u| Gx)WuU:gP'jcmL\@zҺT'7_RJw*6mWbt !O余!؇1a^Z/b#Qx'+8׉f#&c\s_DТ*1Bj:? B~%8c|y^Vh#"L\(BnejA*zU#RxLݢ~I
#Lrr7CƾT2yljpvH~pP3Dt~忈L9duTɐyPB0I114Q'rCARtJYb5xP|I=VUq%݀IףUZTQEPOKZJ;ϛD{י]ub
WzT88<A;R#d2G1SNcߜatvw&/nlF FP0#	lF%?-Y	Hhg{ ?IEIRB+L[4	f:6]p,Lx*MKd6 JKɵ6Jw`O'ŧ؃H1kE? LS>NN}0	}WS,LtG=FpJ]g+$&D1~ PKn  N  PK  ]W            4   ch/qos/logback/classic/pattern/ThreadConverter.classJ@-mZk_:!^@q?MtjL4I\Qt!}(LE)r!H!m c"w1mqQ X>o%y+2
CH*n2Q0P41=(~f|d a֕M7s!%Cڳ{b '|_!6ü&zcM/[L+漭|yѿoF=ޭGLUSiOV&S?/î5|IgWe
:W"CX#OL յvROL7d)l왂*ds
ȚI)ty-j`0<MǗѸVV:&uzBf'I
#
MEl PKC  %  PK  ]W            ?   ch/qos/logback/classic/pattern/ThrowableHandlingConverter.classPJ@jśGx^,=xlf5&?œ4HDpo7x		tb=t(أXi9wL`,]蹴N!DgJ?X!1*yy)/JOL$)-f#IdFr̭úPa{␰YxQVM*7̬Kg9S1]]u9$WK56\-7?;KΠu]PK\    PK  ]W            <   ch/qos/logback/classic/pattern/ThrowableProxyConverter.classZ
|TՕLa @$3!A&@
2y$03Anڮ[`HvW2u]Z-vw]c+{̄|HV{{ssZ.
n\ݛLƓ=]Flwm,nVdT7芛DwJ4&	Vfj^4u@TB'xItFyϨXZ9R*c2I$Sfw{::RFlfZN#i~3J	
Q?_阁{:+lXɄ*[[HԶgRwp41{̔.HE:*"=n&z2,?!aˤҋ
dT6X(uWXJoe6u2cUۼxҽTƏYֱ5>#6ak˿ؿLK1S,Ku,r{&#32Vw錑)9$}^j <IFdx[z+\`l\'φuhZtkz5ma*Fu4a)Y"VtDAG7=G3~NGӚu&)G2s~b#MkмcSۭ-
%hMtC`8Z|+
;G1I+fGzcER6UaJ&ڦ}f"4ҏ;t܂[2C/j*GubN:$fRRTeu[)Ne40ͦnH~Ka2\)ёL^
)iӕctUmN
84IGrP+'J
uN]45uȬɥ~H#3 ҳy@x.2 5a3Z>@Rr>"j|=Ž=V:tezݘC*AA!+ٟ06Ex5f;X$'2jHL2DvƓnFOKB-z7>!yIWVu|J.9ipGGrhY3R8uw;̜xxm62'X+8\f4AO}fC_>ҫ#F'dI{3$_pJ]VB p#Z$эM76*gVǗwk1i%mCVJ<xOwP,Vѱ3Ao S1엾އRf:mʪfrKy[FO!	y_+7]ʏ?x_DΥ3:^WIkǟ2Bs
n^mVLϾc{cqssC[i]S[&o8+KcY@={:IN-\_$߾/P^86W\V7Ѝ
ñw苕l6iϞdb]fv~&p<nkx	Ar{I̥1췹_:^9`iËfլ	ɰVw2lѱXC1NPr#SG)͋J(:-n/ SF`Lwxq
m
AEn{-҅[xdg3Qg|eЄW>]eNFNak79W$1Nx	.*DcmX	^ky21&21bT`ma8^
vs[Z'
[1]`vlH[#ϪKoGNjX8B#4w##f+!#1#HYtnL`X` ;)g~Qo6ƨ2AbKsNKa(N(2)/2X3m:O0};c?
XFXD,r\ŀ8&p*sF&ĸwM 8fSG?^.* 3q$	n:.79rk}
_MH5.KWnE#FqDM+wRi{!t*M<&#ǸǸJw?6V>f"8NJ&[
EjT\g(HYrH&3hr^b>ĻCd&>򅶋!DȲ?Jzv.G:6H1 n+vT])VMұL]7JK6_1J`͙h*Q|c-pǏ#шيHnD	3p3	RK^OeVؓ1ztibD|@l5>S
PJxP7|Rç $43):j\U^+Bb>B~;]C>	g19rz80$`}$́\~8?$Pej`^8"vzK84W)Y=k\q}].sWCsu{Ex=8Xh&9^jA :Ӷzo{`,n/dqA$=;AM[dЕKi2*DBZkb׬kъc;,G6 a7h(6؄G"6<y/pit*Jeb|B<B$a\\ ebF9E>ilRMmw. 'x S ahD-CeK[v%YUXh;y3JoP[65vizVV
5l.P-&G_ʕ=@sOB;gs)Jr$2n#ݢ<6Ö*O&\ePָFΛe\pS g08HWpxM8pKQ"y
|bNV1,pWARnyls$]3QZ_P	qSZ0y&^R/=K-gPL4Wd"'pzOÕ05 8IocRfeOi	P/Ēgp`)#s[	),>jYJDgu?FV0=o jKf(#
grF%G#>5w2)e~	{:q7I{+>1%q?>q/ȵ_'JQ&ՂJXƧtĵbγ<+k_I :+*2{<&kȾ!c1So;Σob9xQ[~(vrKmS8#-jf~~{x:B-ѬY
[LdT<DF<Z@]~β3pG+,>y_pD=:'YɛӨ
zd9Nsy˼e$Jy̻pA/#*GB.{A?Oϥt <D0}9XnWyneQe:}=tq=͒3R
u2-ZK9Bn
bX2/]DUC,,YMl&xf'8)k0R~
/pEmWIO8CM|pOc*$O*#BrЃ"@sЃ6
5_WDk{˂	]	B@|tJwdϝ(1b鶧EsDsDX
`Q,>Amƽ9x? ܼHê2'~84 ܮqd@m7s2QL2w+|e>uAwoi?g,Ep+~CTLc(>>ru{9?*VJH71gF|rfr2^dx;%֯}:onIj{m֯la.+1?"~L?rT,N6"7pK&\|sVHHeqhfdJو𭇘O{D1V-Mb
+c"bb*
$iUku?}yfdqì\Qv}rb ~JKB^Sm9f挛 ;P]u|A$M x7oWW:7rJ">IdorePɽzP<͛![tr#Gr>MBjXĹ6d#-ˁ[&rMyLՄV~E
l#ڝo
ї{ݛ,(hj|p{gܬlN-M,+0E?PKv@j  $  PK  ]W            )   ch/qos/logback/classic/pattern/Util.classuRNA=5Cϋ ""@ZAI5)'7l$4S1[u9޾_~: pW2H@3DM{ye[oQxB.1ht꺶ڶ'oBlve1lY|YlE/rb~RGڐZy=A!2Omk!eccÊ;5;BK4&aS3V|懦;MnmPXfKi3$-nlzkp<.n{x	jaG+>eCЛ\	+R}7j7!o}<eKP[fO:\'\Z-1m|r\go&8)`9YoHrHꖐZe~Xmӱ煸8O0AL/R,)hO3M9ʘdelWA$ ? Lcb0}t/߇O!zpC[*LxZ	ARyi;BS*dIg 19]!*0BL롄2v$Syt%Xw"rgTS>F7pwUzEh5U#.PKܪ    PK  ]W            I   ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.classS]oA=|,PjjZb54Dm$a;Ynwpw?_jo2;C[ܽs;'2a0Xvz/C˓N,[pDƓYI?TWa
QL0`@v<UD@9;<mwU!R(N!)4q/еZtwv{W	G	!_(62*)dpD6k0?)!d]3zэFs%0Y
9,ȧ{1+i{WfIRMMqNύRl<;VSa닃IKoyˣH!mQ0nȰ;2<&gW	*ǒ|ME}_)ֱ$/T[?'s
OWIQ)-\ci\״#|9V/VZhg2X"2ApiMQ}G#OW"ɰ_>'ڗ48RMw~|NgowS	[@,I쏩^kyFSŁ
b[%eN!e02/CznNq?irĲ]S SA:iPK]q  8  PK  ]W            9   ch/qos/logback/classic/selector/ContextJNDISelector.classXy`f7l ˹xDU& %4%`aw,I$VZkBUت-x#Z}}߇L6a7&μ^} 35'Da$Ɍͦfٶai(ס!,0k1l$2՛رLMi+(^ѥ!"0[
Lbk3#P'RL0[`UPVJffGdc[+yխ\i\1{`y:cY%|˚RP嚻܍k[:5z}
~fm1p@e12O/pFk	vot8iX#%'h`Ls6)w=//i8]`t4K8*>4Rv,yb1PiLtnu"HL
j%dcz˄lKZXVi#B_e)~<a#P%`´+zҎsum
v%	4UGZ}IC)gݮ9(Z%TNE:Vc5]R3h뒬kuzxpq8HMLJ"- -Y=錹eS@k L}&(M)kцvJѐcQjϭBk.XYډ$u
]k.cȵiDX5JdӉ-W\moXVeY 놅~Mt5-QXLHK#x
;t$"l>O,;W
>uPXFY8p
bid_YqWM^[~[IN}en11;uјElm3,W[GhxXԄ%B!UY{IN$@&cRpe
)[@k_aȘ
.
#:ě6HT_E5Sbu=\k9[L?VsVouģ!'fdp[axRKVUz
q-<|(QVMD_XJo.X[æ%Kj>򶫃vܡN{VHTӁXjxh}:ދxГ|<ORbx;~|]5#zyqi>X=UٜI}w|ޯCCQӕ/.ou|3){\c0Q9sj1F$FB> cMJ!(8='58Ü'v$Wg22oy/Zj:cO	<`"u|;++6vIOɩ2,8V 1yxbљ^2T-oS1C҅g̦K6)Sila:%0s.Io1yȜSJT7*ӒVZo/ \)j=+eFo2M3EOrYH"/,]($)Мg,hq3IOŤh9|5Vs҄MeYNs(5 ejwZ:uFێ;'(3KQjI,hHQ82ĝ?28K'i`XgaR.C+o첶yWw-\7%3
"*xt[VJsmY1LNqzɫPzr@ 4dmN|,,̸͛c|<_rKUS[7ü/=4pfFDHkBP oD`ְo&`D`_~g+1K[ՈXd((Z|?_Dt]I[,^ԉmf5QYoZj$vԤ<<b,dv>2Df~ׂ {N"Pw^<W.!gkf3BaO"ZS$T\&&_@]W{/Q/+B5O`ၜrZ=_W5y
J2Gk Ad)SJ7Ǎe{{Eh{KGQMy?p+gkZ#=2Wޤ7cCõJ~ՎBEAskbQ!`,41tl,Uǂ.cta.sk0:t`hb|p#FڙRoaԻȳ\Xm7&`S0q1%\Ʃ})=C5z\[N*ķm&ì
7Y*A܁\
CR,C%oi6

""6]5t\7WfP=J19#yIrI|;?/~wC&yw(킉0
X5zyM,t# <\9 kNMLǂx'PIz'$tFn▆=hPب
~a;{ua/j˙:ޡV37bnvd+m*1<Q+|PȅkJPo2_෴/Lߑ#'02M;K+NfrX,>7L?7S2u;cjzLʽ,}88b1߭<D<X6@
WxaTqM♶_R1ö={_=3iGxP	^*
>͛|<Hqʙf$'^c|f[?sQZݢ1<B+?Z+a>&p];Ja*} h^s,UY_o>z+PX
kbXOk|yg8"hiyɡsEEa"5s)֏1		ȊPrgisyi07'tE	TaǱy§E(΋|oR+DDPKo  @  PK  ]W            5   ch/qos/logback/classic/selector/ContextSelector.classPN0hH
|DK,E G!6%D*$;~~ ,@@|A:oJ?ITV@t\*[,ΰ-0[W%_y+CPy~V9̋2ֶ2O
==PTzNz pIMN6ҚJŦ&
fkMJԚncqwd$ !F@׳$<Nx]1{}i
PK3     PK  ]W            <   ch/qos/logback/classic/selector/DefaultContextSelector.classmOPwOeST
]}Aj⋙%⫻RKvF?BD?xzͱ,k9y
`
D!{sⶡlϐ2mf+fHKȸaU;ROŵU癚:mql_7B5awsvbJ4s)Je<kF3(J1K$JgT"fRPp]
,}R.QW7="-+o#0#`d"gmn<Ġ^6Ȩ*x]4;!>]7m}}We&_w4n5krLG&e~SIz}R߇FQ8}
i)ѩyNr֠;|GtʼCa6.q(y;٠N^wa73
j-@:,t?\dh2=$>FL;Xu/$pSs	:i4۵FU@Vwِ
HV;ǥrA`Aa848>j@~I@|G`#x afu ||,l;\Y+	&譢@	OO"U
\PKў_2    PK  ]W            A   ch/qos/logback/classic/selector/servlet/ContextDetachingSCL.classV[wFq;D@@(:FbY2$/x)GzNQ$+Bk|3;? 
1#
+Il}4&JO n
=:4
lZ
i8-3sz&lV2wHOc#>nūYF]َq#e6l.YjthUYܙ
WVlv$?7Jհk0U-*;WWF$Lgܫ5Eo.i.{~>.VUٞ;ҰKǇؽ*`%_Yɫۚg$"%+$S4c/;*l;SoDpf]&4qt0(U/ǥGP5qCck&Ljʂ^˶[jL\ c)ֲL>0p\ I6YѵH uRgnqҦt]O|:"HPUgpZw묀vI JV	^y.:NHV2|h[33	\G.긄*cv9\q- cA
ⶥUv_?ё*OW^54̐>
oJt0)Ђ,˚-Bss6/7>-ZzeΪ9+ɜgJ玬wW6ow-e,*#(	66,W
Y+rZbx᫚2բεU߉(q~'"&+;>ғ>coq^c{6iY
Ө8i(.QIzʹ%vvHHC˞rYԼW{Q{i-":[1-z
AJ76O'ﵫJ?}߫ő4xE
KAyBVtf&,	_nѱvhk).UroU=.SS./l|
?rUO,No%؇<D7٩8Y΂sb(p	0Qo
6p"ӡ<ۛbs|ڻ!Q{
1<as),c8?'t.'Op30O_`0Ofq~;MI|T|79b>16a[9j~
rwb3)3H	$(Cp	A"by_+Za7j|K.a&hb@1Y
Qc(uK45kXt%F5\}uTr:p|>NǏ PK̱7  r  PK  ]W            A   ch/qos/logback/classic/selector/servlet/LoggerContextFilter.classU]sF=
RS"|(	 (д	6ԙ+ʢ(R>>I#1IьVw{Ϟ{Wϻ 0"2J4Q^6,ó|ǘ[\Qv,Pn<--WAh'1"8
O#gv͝.W;WM/. 2YU(rnZU\0F$JK>.<iV]I9]T&}b,34N
vD=mgE8
Tl	T٬,<%.hKc+֪sh^Le˥|KA]۝r]E=ZHI鸬-Kzld~:4%&F?%\-XRTbQ֢ǙRJb
Ne7:1	㰭ZN(%cun\SNSٗ@Ƴ.I"ꝧ}"(xYk-#9H/*>zeإ~-/70fz+OX>؍uC]=B=I,@^Obe'Wx8N*-+k~dpB:yuz#KO6=Eg8,/,-78ռ_ƈfAmbp.7NM|JU?_3zy1C:x!|x@L>u"jx)tO ]$_p;Ywʤ_Uj<X&3\S
G1ޡ"1$q_BxꩀRx34HYpc(8ޭvl6EPK~UT  a  PK  ]W            G   ch/qos/logback/classic/servlet/LogbackServletContainerInitializer.classVk[E~BX
TܛrQ p yl0dwg)Kbi}3mJ(efι3g_`
%u׭䏮B[Ťz"!:ch@&:v.O)$r;RMґj~`p3Z
&pavmlEKGxPr[$<nKl'-Y<0dvx{W]%TjwB+Apb㼁L\Śd'@m1ЈjSH.e/[\ݗj#"cpf$5P&Slfq.o[痝-یRhlE/0яk'C+z`Q®pɧ bDpBh$#&Fun;
BuP,e`ma; ʺĖ]ڤP*+ԅNv>abRG}PZ\G&>ֻMƐ´OLh4}ι-8Y/"g'Ӑv=C;A)'
?xƵ=cږTx)סrTPf}BNkXj!q"c0d]~s6SW6}&:LjQ
/Gv=KPQ.|iLqϒuUTù@	e]o7]zQK rY7,(5Aĕ<^^j| MEvKڣXaOm'V6(	5c`Zmx6"r\n|yQ{r1XyS}E%ϫ"R\N~ouA9ubۭ1uxߟEvV*Ae.;t a*GIe}&a?I]Eס$>fq$͌ơF:~4fEXam+i7<14Z"o?@KtC,W9>\}:`
akL"I]dчzCz1N+
b(WKXM  d
A[ZkZaPrFW,3V/0\ѿ?_9ͧh`0A4hyC+=uq!RDm(0=<c&6Y%6ad;Mܧ!^.q
WG!sdm8~}j;PK[8  
  PK  ]W            B   ch/qos/logback/classic/servlet/LogbackServletContextListener.classUSE~Dk5R!BJ5HԃAjasن%m۠_h۩3~or߽$%$~wߟϾ{ K&SFw>w|Ԝ]ieH0ٶ0ĐvTV^T(!
A~C#amግaX6yIωDl[]ib0ݓSH,qo2\Ta͉&lM*<`8W%q;O.2L-Qmec@d20v\BZ煙msWoٸ(qp\[,B6&10uN8{@z{C~:AepFxƨQmYpqH44E;gțp,X{K}@mj	h[򲻾,^$#[
H%]^ל#fs"-^I2*y[ޑʑ[?(%JDS}GMe}o_duQ6S'tL3MxYuce{
ވpa:Q'֥zXoN֔Tol6]Y,};2i|/,|ixP&wI.ZmPO7bK1vU_DRfSn4D'="ԂKaYƘ:Qfv*EeKi1|@ioH?#)|H	"~D_v1H|݊mH1ĆehZV.~!^btc/d~FnOd6"=\},_a&Kgqe&4i͒Sez4"I̒<XRFd
EZɥ0Git[KqY"&=.b#<ƥ PK     PK  ]W            ;   ch/qos/logback/classic/sift/ContextBasedDiscriminator.classTkOA=B]`<EDI^&HLCY(uwJ_a5Qv<s;3~`uDАD#bS*ps0W)ق']nʗg֮esi˶C4;oB	
zMH2d`eyixxJ]dHT92JdK@t\CTבf]=A+|W0QmǍ2KƚtTmhБ
t2L\
P_pOCb%bW2UJ>(n&ipoJQ\K˱MQQ8HE!crvd 2u3־(fvI=Ȩ3g2T$CTW9d/kթnO#0
fRϓ/QÜSeɲJu ܷPsL^sRAnYT.h㘻z1yM2,4<`HBQgh[Ee-DL-p:+Kb$֬Wu	ݙ.WakN5łzwΣ8TE
r>dFY3hf47>4|c/r4&k0L x(C_1yyOh=>F)YZ	JgjZ` uz纉k؁>h!aR鮃:c$M-tJ"z6ҽG#Gy駝8q"93}|DgyUG$vL$wfDn'⇸&SD D#CJ>aʟPK	?&    PK  ]W            ?   ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.classUksD='kڤPDڤ@[y$3_F¿31ot+%ysϽo 20lbiygmo5o;~ P*{;jUN Ǖ0'"CT!Qw`.C%]{8Tu
+,K)l	U^ĪjNc&(0	6apg0x%T(-L\8Apk<$!vQ|r^ˮ4
6p5`!YZ"J~Œ从X&$b0cP<ѩ20ti['vn(v舶dPB[<_Y
aB[BvhZzASa\:ͨc`dm[:F]{*<M|l_R$bi`a%gDwjc15T{Y"+~Ds7F;xqXɐ@*YDdDhĐ	{xoÐ0LJI$oa))T"4Aj_yWn\>LLv	1:;?-<S" u":|{_ӅHsu8N6<"*>8f7wڏhfSϨ<12thjͮIQ@0S8ƅٿGb6r>ww0_'@̢@,&[VS=OɝAX gX$iCQ0p9چL4SGEEDĺG53;o=CB0޵a9aGDj-IfLWE.ҕq$QhFg{DQYa]=u'Vf1d󞍡hbPЦ_Fz?PKy`!  k  PK  ]W            7   ch/qos/logback/classic/sift/MDCBasedDiscriminator.classT]oG=c;^YN P?,!-5MNe#A'J>TUowKj643sιޙ@a2,GڏYv5vOVwbt
lm]ClMQa! b*C>fk1lSM.jѫg]
('H)H4YR/.o
TZPa`/\T1#yoT\$Bnϸ!V!3	"9\g1^Gv{[d)1ݮe9[1G)<C\[ku]ERWG!7[#xCar<4sQ4#x=*nc!CTXTvАپTȆ TlnΝnye
:S~82]3Il+F._2]V(ht*-6d:>U`4R! etǙ
Cr;Yv胪B
p1?ۨ믧d.U
Fzk\ٍǺRL|l]p~qߧ!I]L履^q7Dh~Px9&_R/fFDw_mwhzY|E@o743y%ÿͅ[(+";\]^< /"MJE2@>wZ](y~KYQw!NVpWi}4W7pYٟd8ܔzBE
]҈Ƃ)eQDƻsW"U3e̑<)
i(g3
Q<1O0æe}6i>8Py@FWk\	/Z3YS^H
I=^H2(Ġ33Ȟe5l$֊/!b6C=([yw? PKeq  k  PK  ]W            1   ch/qos/logback/classic/sift/SiftingAppender.classU]SU~X>)U[6	U%44	H0sd70S^w?8=%!0Þo<u߿!
Q1[uv=arWYezHl
*'tZd$!c!N:}i[~SZ[ZP8	%xi]L\È/ԊmO6Õ1L'
=qʹu1ab*r@xh"Yj)Y-3q2	pR	b|h'x&>va0_߫ m}bćb:yΝ/l1j_ߝ߷ڡ iHr{]v_qGVB~;+ťͧM\$aք)(.¸vMnS7 Qz9pCX~Ω.Lw{uT(Xv{]	h
VzA:joE$+ܓ=4F՞8'CLG!uymճSq顠=Kbd//tʲFZQ<+q$+-GQ+җ͒㸊+FMKz	V.oU0% "sojgzYFLQt1Sl
ӕhy3M[ץ&P{nu{!T@z+vs_̃ebUjcxZdAWzheR/~M0i/hg[0~8]z%V  m@k g0?)VOLH+2%G@W!zP+rњ%o1"9J&Ci2;_q3}dE~u(ȉ;I_<P
<'A_xDO '(Ҵ#paj:SDԝֶe,7=FV]5s 5ᓣ
;o"aX;|1Ko/PK"  	  PK  ]W            +   ch/qos/logback/classic/spi/CallerData.classV[S~>VqdDMٱ16J@Leb!\DHE,bͲwW>Mۻ^ֹi7If4ӻ?WL[	4;>Ul7k؎'o[YGa
{j׵YU	DF
ҳqѦ@Uю=6g`U+{7hS}MG㦾[ްGc555*Yw5ԝ1H`NIt	EJ yGg_zǰqt/0܂5P|Z=ifhpz.F=*A'/\Ln>7=$ppwfHᐂ*Ǒ-exk5t8#(zm:ѝe}:<j;V5_UݑV3*q\ <q<M[fyzNR8"Z)|0O6K
Nx{
D
Ow4vhi=Bc
!aH[Ee-7=?䉳*Foo͔Q2dѼSH p^k(b4>_LMu"&Nڊ,ɸl@Njݒ9o9+K9fי3秦f5ƊS.NPP|(C""E;j3So]Y1亱
?VI=`&	CVMh'[mң34]YfM-

dt.E*תJػsl	/5kaJ
Xvme:Gi%,ALjk1EX٨ZWsDhGW+5A녟Ӆw<ǨRoHO<_xn۵Ktb6.xٮ9}qζ=6{{Ϗ>C|c	>ah7
2zs`׆`khmvo^[ArkL~e;~uWm?	Oy{.J8Ćb
c?~{4Wܴ>]nys_&WYB|B@.W`9+M)q7ν?dxyP(0	*I;]wɇxxԤ2I$gp{_|x.YTz](=N*doHd,p2Fdu;`B% Wx%[ a{:L6ȟKf?)DWxk&uYLy\GC4*XD>=%.X5/0gQ\ݠ_X1#%  %T
AT±	)"!#fۦ:?rr?sL?$=D3ew`!+2!YK5PC>/&/{}/!kL35Pl?.x(0y*wJcMpdl"d.E3}"C'hlvf
@և-`g}ݎPD8]fZѨt|ĥDNB^&h[
U~}o kK|`Ϸ4?@7|7qT>׾o[PK  q
  PK  ]W            3   ch/qos/logback/classic/spi/ClassPackagingData.classUKoU=?&q&umi6*ӆ1cwOpgRϸB66MT"EbX{Krm821ww?
2ndC<MGIܶ2[eޮoۍ@ 9NpE ^
 2:Ah=ly[uhY4L1|֖n-X%7vkXͰ$8#+S@A	$/,Jlf0FuGP7j_1	ڲPPqKFYq;Vj;^ȇ/\ێr-pYX^Ƽ5ձqϡFHlνݾ
JZ5h\M-h:eVW*ţݙ	S5BڃfÇ?d0P9Ė;b`vl(~/pI?wP8Z1X][^Yh;-3Zb(G^}Tmf46iֽNa/92~e.읶M]k7p5wsu ";ȩ|/Ayec䓗U#F+-sc30ħ ƋPL0%EP_
TC4!w7
9NC-OG
[Ύ)|(=򙊯ŵևoYF#yM.WzL}~B}dYkLd7^I+%%Cz[|9o#QԾ-I}^
fUXo#X'.zXW%[#V+jsxS	RG67.$XjDKXPdq
Kos(=/bZPxJQj'!R&-GB-?A"[z2oHDzi1NC᧾	3ysߪς
xF@ [mXwﲤ5qnX{}c}eYWYs׸E:FdlIF{YTx	PK
x$  n  PK  ]W            =   ch/qos/logback/classic/spi/Configurator$ExecutionStatus.classTOP=omMRA[G\aaJj?'Hh4|2WN `w޾~,r"|rdj6ћ-[q-;-W̊-'AB AX.2/)z!	a+|Y/֗K5>}EħORf.d]Ћ(JV[
K k"q!13=@
lƞ
q		$	yOwf]+KkںvW[.2g2p$sT}x[<C.|cOaڦuS+4Y[?*ƊUֹ~`*;W!s&ܬ+z$YRL^N5:=];ܥ=/Hj٪s}	^*4}f9y?b
{$ ta)ί)@17O#EE#}aAo.Iӄ|4cc'8|~2K84$P:_D<>x+r2Y[`3X߆R+@6BxNF'yq~/@{/ y_1/=d(AR/tlNc'q^s.ſPKk
&    PK  ]W            -   ch/qos/logback/classic/spi/Configurator.classP1N1MG.BI	hp"
|blm<G!6(H4^ʳ3z 0@pdKHQZJN]lu@0ZWjlrm¸-"g^77k9xw帞l_.4?:7iJ(硉\-ɧo
?US]f+gK'	.R;(1'C	*Ȝ~PK-@M     PK  ]W            1   ch/qos/logback/classic/spi/ConfiguratorRank.class_OPƟwSd /['tXΚ,S~ ?ηBxstTeq:ceQhdQOhJHtLOŕ0b*C	asI*4104YF 0:q.h􇠷<nc?Fmʶ4NP`Xv9^۷=wݖ绦s/k6;z@^0}U얠3,א'"Ia(Q̶X牊aEXc23qT2)},4k6~خEX$ÁTܞ[<Bi*8j[5B;aSAi1ϕ93/<%^dxyį@Cp;݊o56X^1Hb; PK  
  PK  ]W            -   ch/qos/logback/classic/spi/EventArgUtil.classSn@=cu⦯/
$qҺBH,ZUH),R*+Rl4k~
*Q`ÂoB;iB	<{9zp66THĒ0ġqlCn[cwln_Aaw/+%uîF'&ođd9sǷLNF3h]/l;mxV;xF[Ec8L7s*&R04f`_io0$B$m~Ҁ9ː1箯njGi>WX6ClǭqF{{T%gu,('&)'gBӿzCqrv[8AF>Q^[0J4vf$bzhNhmv T2wXAHhSo@&M-e0(4=faZq[["hu+DB\C`d8G+f&vSw"aps4&Xe籄(r־!hYv
/P:C1r@i`){E.4V}#W*T	Cz%qif1ǩS~d?A䂼dnX(L#qy.d]؈)6CEJVR"AsBSI\0tP)MP|y7TI{mVJh^
#ZPKm    PK  ]W            .   ch/qos/logback/classic/spi/ILoggingEvent.classUsDqQ$u-@%P%88a"_diʿE	O<71Nhowݽ=rq%<'C>u܀':I;Fy~ND.zB5|*dOH_,4	wzm+a
6`3\`I>Tid2IKz3W-,2GshIIB6`-Ż	SxUoÂDq]4 K;Yaepo^$\U	)E\A\)x{wI/m)I2D	qΌ=J=8Oʖz]ٖdW.WJ4E=x!SJP{)BZxArJ@*WH(ľ䮨Bׯ]:<v㧊\Mu_nu$3c^ua/e&͏o,L7ǰM<
UKr1򽐫>'zvjl#d"ܽqٞ:Cۥ^vy%vbV.kMS-'B7[
E=w_Y#r]k6er
bيz۾9,#C_-0CWq1p$M#oem1+\Ś#!lR'97Vk^;.ӵ3\,(
z.w({,G|B4>U|)$SK62(Za0?Cҿ@
=d{xWQ3mz6H+S㥋6_~6HfC|vH4 PK}o  +  PK  ]W            0   ch/qos/logback/classic/spi/IThrowableProxy.classPN1+rM大Rbj| ucbF67o/ NЍPc8s`=76	yϥkRt죘uSakS~5[(Y04RU\(E䓒N)C8 })2b3)oTFe*/*3DpN~02Yy^d>ߚ4[!jtck?,ѲsC%vi:20p"}u]a;6Ѫp
;أI}k8xPK*&    PK  ]W            7   ch/qos/logback/classic/spi/LogbackServiceProvider.classViWV~.bP:nqpFA*P"XJ/L $cֶG9&a{s>y}YAC^H=ݔimGJۖqsU4IA%S&򩉅%{exWŻfǪu
=ykO<Tء`6pfChHcΪI^5rahωE^2
'2o?]JBBڭaҚ+q"v3Cg=ǰ]*!߯$e$DwNx
=ObR ̢p'hcY=y#爆8кYp Sv3ZaگC/yN`=8lץ!SJNeȬ_[C)MDE7d'CM܎nPN{pNg/CW.؃UG%&ѢWp^Y,|7l.a[C#0E.1+J3 HpEU
0Ȱ6%fT\(sNnZ.8C`
di\W0a3wF#9[n1\OX2fZVFyG(n*@CcT|'	~E9Îc;s;)_&vy؈[R0eL*zǻjRCQ}eu6Fo
KjL
ߚN_ʎN3Dk"8I)G*+'Yd2To,7K":oy˩uJD8	7YṾV4CcaʂpeIY;\l
rnܺS&аDdoUQIRQk?h	Z!,*{pEe=󕭯RQ )$rEc gfxǪYbĐg8X̤dٶz/	`>c_nTFD.__)Z&7tS4U{Y
lP1rpel{Tc0~\uf?*-t榙5<Aju0䅫{joUoVIф}X=@ޟ/?ut!]/WFFcS=n([``F
͗
&^e?Z4ɏ5$qcI4=q)'协s$#vt8L8t_#eP!_@58=sr8OfOĀ\{_OD[0
Ty{A]'_*{Iv牢p_&kyݸ~&q.JtX!|dg؋閂KmC
w ߪ4R7@.:ƝuKXc6k3q24nwmomm#x_B3s 19=[Ri%OPK?  {  PK  ]W            1   ch/qos/logback/classic/spi/LoggerComparator.classSMo@}k>P
Mڄ+HHDHCocc_BKI{3_ ^k8F{m[!C1C_* +CQ*C7|˭ȵw;`;<}Pͻ0pNCcȩxnߌ7b(Vyj
KV#R=S
<;\\7-%l3Ԗ1q)QF8=I|zSFz1gIWf|Aw=ɛŽK7aϥ>-\TKA>0\S\ȠC:<rwLLI=ÞuA};"m΀c<s=9Z*mX'W0,W/b/? KOyYF6U^NG&.
ޒe/=M!InJL:I-N":o2uz-l^	Uu#VCa7v
$DNr'Q<@UkL|@ZQ#J FHDE=GPK"0  V  PK  ]W            3   ch/qos/logback/classic/spi/LoggerContextAware.class;o>snv&FbldL}"ԊĢTvFĲDļt}v6FtR j.N-A1AS#PZk12p%e tm@0201+У@3pX@ PK     PK  ]W            7   ch/qos/logback/classic/spi/LoggerContextAwareBase.classSMo@}q$4SBk'"pPTT !^RE1kp`; W"	;K4egw{3?~~.)dCA̗~ha}HE;y P0d9m3uCePCI8gQUPdŸ<l-	Vpa9M{uݝ
/zpd~^eqٚbhYhϴ/4嶤vk@E	xFKzN8M}䱄eXe[(:4U%o;D{.y*mnN|Ltwg[ez Ac̺b#NDǼ/.SnM:V|FW*}Y9^Ik&5Zs5Z# B#ˈl]&o:!l5RN5aX$C[DrNP7@i~G!}'T懸%H'jTKY@|jcZI.(y:-5>`+
Ό<5x	JPK5K\0    PK  ]W            6   ch/qos/logback/classic/spi/LoggerContextListener.classPn1C#5_58]
HHT'E
VA| >Dek	+9Z/z+?}WR[2,}UQ=.w,M 0کVJov#L@o*ǭX-.&?Jb\5tYw%ηKoK[ZX;MV3A
9
>^w'y_̹PKzJ   s  PK  ]W            0   ch/qos/logback/classic/spi/LoggerContextVO.classV[wUNnӦ4\ۦBElJKJ@@P4a&LXVAkZʃKk_곷̤iRds}o<	I܎"0";}-]Bzqw"iC(ZЪ 
|1}r%W8F>
ݞLWJAw/jwuFkfa1t(؁NN٨-
LeTI[EzfKUmwmA+XgSqR&k*vb@[yڎ~'~ڰCP_~h]ޘQaGT`Nq8庯*m#Ƃ7LFJ qW[)P^sn#L85˖&4{Dfna#
%!T-E!_92-s1tV
d|-(x9v˼:wyT+Ss+6K6O
fC9GG0˺}'ݙ䬑9Ɛ[4(]j+&-N>R=N,sw%zku`Jzabudv]Z\k}~WSXӞu9Elݩ8!YbYCt7="AsӖ:th8-xOvTO39 RImI#Q|(w-
󾵪W7w-{Mͥ.̕XjDe,ꃦ
1JY):gTB6(Xfm}^zy~xAB0O`^qM>oYNKCgP]"!߻[btR;
#pΛ6fo379S~8+%F	n2(ъLv]<$e$EH&F2 9VksSŸ@[7#9=@8ڿ񌧼>HT %htl3XwdAu٦.蟡 rGҗ,~AC@#M`=50`U?H?B8d"|23b6狯I{JEc3}ǈ< E[G@mI[zR+(iʆ)bXDI3r^A\%Q
/~p!]b:=L[ Щ Y5޺մQ8~NRFs1BxIGM9>'x>_ؽOרظK,/iLWvQ,
>vL@DɑcT@4G
|uF icPKS  
  PK  ]W            1   ch/qos/logback/classic/spi/LoggerRemoteView.classTNAEJ9ZA9 <1DR!DIYXvqwwHފ
$%'QVkٙf~E@PAHEm5Y]іKkrm7T+ʐ1VǎYNagijyR}h![|໦]
'Tt!3F>뛎͛^xDG^}g;F;>F7-h&AW\*dl[:n@N8!n	//3Q0,1t5=?B
W=Yc:ZnE:̞4<%x=_nUyxaۗ3dkvT$MQdSES&ҮiFj2y :i!~WM
aL5JeXĿH)S=}S*){S+BK{$!3DN5Sת{F1JM 4BH`OxBLcbhCBvބY/:KgvESGG<ia MOo?9$G;QH%4NH`rw`?	FYlЛ+&MU`HQ	6yD5:ҵCJ+X;uy+Gv1%;tn8Po	:PKYɳ  $  PK  ]W            -   ch/qos/logback/classic/spi/LoggingEvent.classZ	|uf[$˖1h
V+5cbc[Ad$xw$Yٖ!`! 6$hlp!v&Mz&=BK+mJBfvvwvvmʏf{w;~u Kē~TRAjvkḖ
ةG25bXf@e}x|ő.ǍZd<kT,gƒkvIR?+90kzw	4
fҴۏYSPb6-b#
ZBh
sceTaMqIûY\Bj[)#AbUVS?G+03^䢳cG+
8
|	#=]zšPEX.^RjWB@u\߭+i~/I.QRij:-Rq).#jщhe:M
4nslx+%!7db	=7"3I3'6
,Nr$*%͌ƀSZ>,Wq5V~9.H댖H(9A>̎^-
&dD0ءѓzZ=guiDݵXk\N$ᾎ}ѧf
b[cp=aXHfh,mvuܖW^$.̏][@{ :[7~bfyAOVڪbӁ2^(LF*n󘹑kVkmME	Z]#Z<22z~V* D	Q)]BZ2"czHF""d6I&
N/Jr`mMI@[wy{3X ܏}Um*>^/W d'o(ԻPwR6'"
k[Hv6qNA>У=Fj<+К[Q-NkFT(	]OxZעSqdQ\,=a|ڸ>9' 4" b& (?,1`op-GU<Z4R)kmT<#+#ƪ_
KrA30$tܚ}.j79o|*eũy/p[H^kZ&G￮E~?ʇU6ACoWLk)ZAڎ}X441ҁX霆YV.c*Uc\֕*&'T|X>Ne"iF]7ToS,ӜYy\RQk:ged1Wi~JtU9l?mo#`5m&Mfcǭ,sW`dt?S}\X&Q:PncOhq=mEq}kD 3cC *~W?R_+8H;czPkDuvZX瑅<n1k'QMȖ~Uˁd0H')=%s_Tj0ʨ[W
{K7KJ8򹵘3OZT+%B\sFl?W
~#;bAe'RRO%Yb^sݮ^5G鈂:#jTqZ*'l̞Yɦf
?SԒMJGIJ)Pqc91zl=,+A4_ư^*bu9MIs"20)_ɢNaVU<Ac
EJ.sEDkARuz`2Dw |A܄6."Zfs,3Fw2.f%mB5AE\DM<[8d&D͕EPi˻bMWnQy$1:~,iCCA%kXK^bS	4{zpôүxZ\	fyҏ==FvEog87Y
)y*NQm)BHP]P:
zn*~Ǚ(RGrS&[Y87{^=6G`yH)HQvƽ1XT?Yws!'SY\_&<cd-ಢ,bbi&P;DUfl?mN&6^{5aTk&&1*26GtbN͢%~ē"»w~݌?օ`WV|s(;[}͆^5WL2ly凍^0)L=KGy3|[@7PO^,!+ڹZ8r(=̼&aoh(~	nghidtϢg]gɶ!eK+/9l(O_Z?uU;ZJvT)c=B-?f)|`"%,=	ڷ6Eܗ[iC}HAc"8x?*ȘTRzf̈>qH`D
$L3퓭fW`'.o(vuw(صHHy]u5a8Gi|ZbƸn#R%5Ҕ9Fjh\7c|"U}) jm[rڛLڿ"TU*XHse
?D}c_\y.]B>wy2
M|[^i'L[!LcN{%^l]Hk|A/lDZ\NOաc/KLT!#.;$D@,hZ{::1s
|mP̟ySh]2`j
)i|rjQqo<K}-Sj5SXR}D8-է	nm>MSb7Y7L>V<0C*%'1Ђ[цЎX;qywc``E`"0A6(xL8zqPAw|J\!K>%QP)U'T˻+	5Mқ$^ʏH
BsRRy")%71
۹vKc#+Cw|
h0TMĚ)`$<BȎtsF
I۝3K=)ݡU\E8c鮊JI1y%]ΗO5H_ ϒu&|Y
XԎfi)Flq5YBZ!0$uXi˾hsSylm8	(*Ay4)"wϵKv豥"i/9/zEX-cl@+::1<:C*f _A#(p,OVGVV\SnKHy{
P
^##cZ0d
ZV(eRm[Ja
s06
d@ln-O^GF*&nt$mFjt6,EGz^RӘ:O74/aDȻ'@ OC;!8HV,3t7em^M)r-nO=Yl-YUz[I韑?'e?([D6UM6ӟ6j+G#	l7x!d!N]U"nN؋(eJxfq"mnEjF-UnUX1VS͉|vf}J֧.RVRD%f@* "2U#nU7g3H6k'P	YP
YE*Evͥ"OEBxEԓX#ya[zBLQd6k)jsZ=Z",F=}>OݖJiVH4וTIbX,V
!&f֖⾬ Xqd>U'I;yPU~k1.=*VyʺqN\oNp37BGX:9Hf[*3)(UϡeDyܪQQMgWr8v.rCy.a^<K7Q)2B힧4^fNy񑍪DGo*>y\ FL9q}
li۟;/8Yv];$w^y<1rh4~
<G//ҭ:}@QDFEp\$ _NӰǰubv
|0{ȰC{n?"k?:'8#EGɠ4gHcx1z{1<MUT~6%f̴w+9Rܴz	Q y҇9)^s<4B܉[i`a}YXޙ`lgt[Ӣzs'i1Qb=R"oD+u| :$oPx3v ;]Unۢm:!Eq15 
	m']^6<>E!B<& tPKaLk  +  PK  ]W            /   ch/qos/logback/classic/spi/LoggingEventVO.classX	xTof&L^A(KCh2qH0	Ab->&/d&̼a.Tmj[wU)Hm.(`]pkծjkj罗dM޹{ι<{ ^
>*Q=U۴j6rFbsjZy
ݵkhk^Sd$\Ԇ]]XW:#f5 (0E
UP3
SvDc(PLuN>eh(H@4t(Ra4qx46P](e[j
Elf?	+Q\Dqڝ0DTj82Lo$
1E!Ol1Q[`aX:JC)6IDT[ɤe)vZQc	5ĉL&%R=f]"oT(vN(;,fi8	B}0H|Y
1=H"ILiHV,jӨ~Onq600_ghXGIaPC)^q"By*J,M{q˽AjqL
!,Q^,4,Y
dGh1^Z6
Xo,i!\l6xcI4(hU(epHZ)#6S=P#Љ._4r#^`9Dڏ5Qt0BߪT$ڡpN'9~BX5b-]af{'b%Kj0bnwz4j$nū]k؀vgW]Lք6꣆\)K/h 2iJM<26u/'zt4:Z%ԏ4|	_V8.MF;OZ]mDZqC`"PhZ]PORz
cWiZҼK}Gf\ oM
J'gi;z7ޔI\atꩨ<1
!?np\	d|pcHݬ|]P:*8Mz5&e;ό>;4lw6x-7.V5lI}c++C
`;]'vlw0avcv3[},;4-/2zܣ^=3X|,-KCp`l8b7^3ry@CT8G_c0a\1	j̤x"2hp?vɜps4B{|;h؋~iӳXTh0iIx0vt4۳q{ &͋x܏X7"?aԋxHDl=߯V)T%<OarV-ooօuƕ`vf*A܌Zas汳͐ɳ6[$C?tG
i瑘[mO⬿m:ŵ5#S͑Ɓ"2jC8NGϝD8cn5ɱk$SpQVP:dR;Lܩj;kf'nmc)QG,Wa;LLMzBBH$60M&
]x5bp'ʖC*]',b3%Z9&ACo.k1Ud*֑7aE1'J&$[ؽj5fx*6E<'4zw$0QiMi]IVF0RU/>U2:k'7>HG2hK_:Frr(_uIn5\]G!,d
la/g4`,)En$LaQWâ2L62_~1װ
?eM\׿z[eւK/^"Tk]k_"ӧ[m}9Z_>Vz[d`oZ#;jUB=ZUj67;-XMx](<bF	4F	Ut@Sxft@h@@E5(P@mytz Ff:9?^j,[m@d@B@ME#fXj櫲(mr\v܀sp;*m['~ޱV n3wDŽY]ܭ?t\d#\%gG\'clW鮒&^J4E"E'{}S-~_(6	Z騏8 hh3/`/P`;2mo&Nt1lC.u5].ıl]v!>?JWb>q߻^ώkl&d0)䆜Ӆ~6Pj2sE"˽\夙4ߝFW
w"J|d=[Mt%wdvtWx8!:1{X&]S`A6WXah`9,9bzm55Rv>l:9fw<ʭTɷ|>>ڇ۷#t+<j׶#&toɼ
.{5i7#la˒l&{$Oac>kYPMI8fjCHZFc@11Ic}GJ#/)fNj\+ϹlڊݸE	<܆nv[2oGGgJGwʼc}-y7<1S862Uip*gEB8,"ޘGC,piq:{EؙF'>!Zϓ,_RO<TA }+kr|&]"殏߳+V:2olG@>;ob"㤲K8O|6P8'{|p
	4֟T1c
y*/'2)1p8z97(/-RhG*G
zO:Nr:_]s'|5OAe&_b@>t .ϋϋeq^aWWL\f{=wײ؅rϯhh.`dj)XN,'̥1]x*x2/罩Ňɏˏ9BdzŅʏUTJ:޴[T!nU#p*=DQxT^5
/2F[aݞwANr}aaߧ(HC,p*_@c @h`PK$2    PK  ]W            8   ch/qos/logback/classic/spi/PackagingDataCalculator.classY	xTofyKB!a4dDq!$ 	i*huiKժ*Ҋj
}v֥bR7I2DC;{sA 9.[b.2"h<Y)`oP*Pe3X˺pzGg8[5@ȎtK,}[8rqK$Nt2ڲ5L=dcL"%#;8ܨT
:#@~gG*qix[ؐJnd3\֓
G1`3][*&X|2}c&DRaM'"W:Zc6jʥd2eF@9ss1O4mo
'1&#ȿ.BO,	榥?sSF2Å8EҪ+C#3)F~>h"0WYgVD-8OtO&I`f4וf'\6O")D[*0﬎mPƭ=֯u-eX34t,rS'y7@o%Vi8SGVLV@4rg\4]X
ku%V,P;4
]l
sT1%;XzkraԴ^˔YJ(
^LуM bcp$ӳ+IV׏ݻl,QKF2jYx6eܨ%,*3ō83S"dVN^olBqǡq@nlq!\Jɞ+>0d6@bD?OC`TEՃIp&41H1#.UJ&KB?Z8H,^?5ud%"@)hiG6#O2s+s
HƁ!LzN7ݖR\!P˄Jǻna3dPɚxeV皕R޵:އ諔Jd&12sF$fv]C-7n|Mƻ;Mm8#o)&|X:>[H-pSlB,9q#Ӳicn
Cbd?IhL^>1%IAܥS4c3x1_^lJ]ѱDL"D"#coXTOtv[:5<^,傸_ ϕߞ١Yy8(!651㨮Qv/cfl/sQj\J%R.܉'t<)$4H/Iwe|E!ૣS6iFO;Lۜ]&|]7Q\gUͷt|[¥8\7=<K.hkƍmttnYr"wGÙlX^LZI%vI6fW#{Z2bTT~&Q`Ds[On%V&2]pwOڛI=*F\ᗜOF$g1 1#eeSո!\Lܬ$U:u<G`r a 
m;AIգf*Qgq\n4_!tjhǵ<m徕,\jxPHE̩Ȏ5EFH<.EDcCHœm:Kxv}@u.`LQ+1D`dcį뜭}2"jF22(7(cue*kb&>-$,h"n/$x_I?<Qg"RIHe6*I78űY*<$% l)*P	sTh9瀓?෕!{({ծӥN?H7	?RCaL`@g![V߅Y~cq:skw;cpG@hﱇW.I3|48f2x^@]y&o:l+3}\BP~Yrt9zo^与E*
⟠FaqLSH0*9Q<u~4.[{_Q="@""N[q]8{q0VʽCXcX+yK>91Pս݋˄ߴalOvɛ|{tH 
ȋ0Ay68bt; q
6&p< 1lN^Y؆mu܌씻Ij@E\N^ x2DAj5~Cfuc~ߑ
|6?3(Hlvzs#Ƒ>]sg}	Rzy?M&IV8b5pD!IjA5GDR
0B^譜
-+tsr˨i^_#S	I¸N0iMx#L[	oM5uPCW 	5`QbS0 |L(0sUP\;\Hv$8#`X(7{^~$Zz(ǓUr
];aS,ĕ8W1ߥ\]i*;)gKh`L)eqyJ}7Q` 5RXKapDQʭ26YN^!8!t풀uH h
ض ,r.A<
fy{/\Ma^K_Gۯgxn`~?ۍ}9tG\~F%|TdTH$b\qRlG\%GBG-qy9!JYHtI?&-v+{-z;f3xmpP>PMyVuxXRyqM;ivùPH9/|{ta\/ӋIF/`Toeܼ)-hux;y{R"2Nr4ne=淽szzxo~V~ 9e
.d
ifQ.*<FmF#ȴ ՙg
7iME8*EXы<n%'Asdg+}=87ϭl_8{j?wn,TAO`./tԐwY ԨRL=Nԋ*V,rT8BvB{i_Ԕ܉'6۽y{J3J\sC^Gj4U́3_8ħ4˔pFzpK? ls3$gB|oÕ%}Ǖϒ8PMe3:GrFZL)jN1]PxxLF{R	C#c*f|=MZ'z*0&`p3%
57_Cb" tYM/@+ūa;)3E<_SR+X s%r+LdxT@SsqUUb*LWU|w]
GP΄9[3vb^eﺛ"=;p<BM'VQdPKb~2  w  PK  ]W            -   ch/qos/logback/classic/spi/PlatformInfo.classRrP=bBֶRZ\:L4Eg@tRCR.}q.t\ >zq\{? 
[i2OǮK
({~5.7alp צ83>gLhlG!G2~|r
ڑcW@X\XK)72CwIsc
UKX(ϫkLh;{M"/_	-
W(
ɁOձz}:|z;DI_WO@m[L7MvH/#/gF5y,aZِ9&ɈR7!Ɓ<!N"}Ef:sXUi+}*5RP.
)]ό5\mL
"a6gv?C˝V-}C
OJ:S3Gj`JƲA*-zo_g5֩mP{j~VֳZXii+B++v PK    PK  ]W            (   ch/qos/logback/classic/spi/STEUtil.classNQL[(G~,X#Ec
$P.LNg`%
7&F/&>A]3\s}^99_O? A& 0(	t/UTmekU}2R*AZÈDц@WzU^l8/zYܝ~M5+}s駭@g]Q\AmGٷ+io)hZR3΋9+ZTux0z7U:󆥯EP&3y[SM1Ol˥[Ujhn-m-9jYԳZxG7h;CwUT~&5B=')\J1v%Ⱥ]s4}p9=\Ǹ>
 gYpf>@"C^`s!oD ̉\z0/MCGHďMf~CYRM{|q@2zٹ {2aC`ĸFg{X抗,
Pa#=Id@R]iFqӧ^L$p};4Ά)eݢ	G!mFSo@g@?΀g@c%Y.1PKhB,    PK  ]W            7   ch/qos/logback/classic/spi/StackTraceElementProxy.classVYsVnG(q$$1ai .amҐ%p-"d$>)t:',nxFYs߯~pfiG@#D-iW7Kt]0mӿ$5$F7f-KU5V+g曎@R *cHvLIee%A|umZ]ӮHWC4Nc[N$aI3W3ÝEWjR[ү77I7:vaH`''nEnѰW>ػa﬛˶KZjʱ
3*g/m8ڎ֭ C:" Yٴ@~nZ
iI0Ֆfm(fT,+;#-W򳌧$B;8NJ1̲
i6wu*	[എ38˒TJQ$㴆UIYq!q,,ά^ЗkJR,ˢr=rswvZ@\^fQZuSz&UUL*S}sEMϤȀcFkKp:ض-
t6HN͙Q_))w6=+	hӯtxjbiۈ;<@@]iͨM/{"5;Xio$MZtJlQ	\vj<m؉@Usq|wem^U%	!Hu$>C
2h%ÛNMW;.;7[#l&s\Z;).>6\VSҲL_"}ֶ<

aEtb.'p;p󯂮Ƕɓp>çW9&8!q1JùKnz~YE- }FFg
|pF`?\vhHils6P^/#^?Ǳg
ï/0l?߀t
]
|(+y7#'yP<0<$l6"ܛV[)?o?Gc/'Mfna}8MNlfh!af:>Nh3m)ODʉM'6҉>8΍x*![ͭ!?`1+RcS߆:X\x޹A%XqLidiv,Y{bZe
/2yv,d 7(2p{!_`ݥXMkx6$q(\%9+T_PKc   y
  PK  ]W            /   ch/qos/logback/classic/spi/ThrowableProxy.classWS&IiAj@
lZWBji)&`6lt"Y7lt/=I&
|y}5xWF^uKzҢnoT{61'$HBQF	jwp*EByFф?F$TUf(SMz'J1S,	}F6zཾ`XM$/}{~'uč%ܒV}9
e˸Q¬}{^]Ls<־;cKs м^B͎k6^`L$cHh!PA%nbȂj84O[iZf|HB9&y,VHpi_X%=$^503mjnbq=gySp+0ɤNJXP&k&Dˑ^NMݻVNɝθԚZpΤ$4j[/rTpYIXh,s3-K
ZIB5h+!%LͲZzY=Rt"4萱YiVP Xewoڪ T	gn2ljA#jz4!J#.
>Ja0{)TP[2ң{F$bD7ĉhV"S%Pj1WA4-F7q8(eqUF\K=&ZF-,'=f3F0u<2ckIת'L'Lá5p>.4C.(ŏO* eB?YãElZAbFyȳ'cg|#bVd
ԟ\9U:sQ%,~F']`
/K^VjV4JQ<&: ૞JZKN
d|z8ѓc8.	_
|uÝm)2)aQ>h`Q3!>[xWŴ(_Q<҆gI6Sh*<YH5hV%O8=gN+x^֖݁掦-M[] {
^@ֹ$φ`3	@7|4s(+
ǝx	2cdn	Yl1h/K\;Dcۖ],x"4gQ-d;ScvAvq]|7=!f833'+mS@a'cТf̜S!il\<'lgccݞcKuF
^mbC^BӖbz_T5qx-IyT&ڔ3fWut:t5)3SB]֤\:umv9Nmd95'b!ћ'#`Qª1x:bZ=U{,DxP۠eT"2^F`8FW Sfck	ZyzPZ뛗k[|qY:z
qk# fym0J,WtZWo%UtN?7a]R㗍*0f{΢|.m <!|xՃX*^b
i)z	yyPZ3UC5cV2¬qVᇖY"P`}WX`} U]\׏`0tM5Q`;j/v8<Q]kƎA:S5*=/aW-EqmA z)aoeA8=e0}u.{]jٶQ(O`ܱUV!:E?:OPNWqatI7
G	q/ŃaDnbyǄ\41w?s^ܻ;	"DbDD'a
Gpk7xx
;6v]x]-I7N5G̭ToCcfYC	~ʬ2c[
^e~=m92E)L˸Dx
R+d	T^a '|~|ezKC7,PAHU h!R8ꋬM\I==\H^e^˼//<̍2_ěy0?-Ofe>ü+G2<̮\#yyH3wn_%syUBf ;B͒ZjǹOL^E+ePF\AiaV%Z瑁q%|ϧ(	vgX	'Y_Nhi%n$K}1
`k?&Yq}UdSͅFj{}	ZSn_V8늼ؗt
6ps밝}鍳8xv2s4><>GXxXK8YDE**^9ة+ąV]QQk傓
Cs(ҞYp PK5	    PK  ]W            3   ch/qos/logback/classic/spi/ThrowableProxyUtil.classXixT~Of&w&!ad"	h4E1FM AFC&KLfƙ	BmmmӽպR RcWl7k_>>*}Ϲ73<ys9~﷝{ymg
B@پHx$>=όf
Lnnx4(.pUn{Tȸ)P2ff2HsmPgngn)4nNL[TC
E6ݗH7'F):IcѦt2SӓJ8(]@֑JEE*#pÄ>
:*\}CG&'FT`bb"ߔLid\	ں^c
EXR5e錩Oe̤Re@]*z|NjnyPZu22[=怎z40ɜ@e"	7iYjBefMF!\V޵p@\	X|ldl|LI+npֆef.C6(MT:H&Ѕ6o-ýMjnFuX/$,!j拖(7Jeɑ}X|S,t!lp\{1Dl
LM[

z:z;{l::GlB6,GvܓOV/",F5Vd22i&6]]ݍ9	~7I#[.0]MujI^"鐈tȈ@Um0?:LXPUT!J:bܱ=:5X"vExstXd`\bIs1DX3N>
)id7jt@Dnn
CRu< TbNhD2$>AVĵAeDA!Ǚ6i2^/T:'u|
;D>sYtaVF/ȐC΍/ߣLuL)YCr5I/cx,`78
m
!k!OIzp77ֆo,و]SJmz]ᮍ~l=O;O@OOo/q#eC`;OAd,eYKu brntf聦|9jpH>]U>l=E%#%׷ HFR`cb$~%t-DmI*5e.F)O2ە;k={#hʜF%ì,֢=sE-Hzyp~;e@g3ivK'6)F'FE9maQMOo.건ixT8F&{e|*N#je+4oIXyV4swߧz	C7ӗLE9[1?3%
ŴEāJA·8+99(_|~o+2NAP[gz[,׃9av&0
Y%
(9ZyFiTĵ'Z)|%4><:*帑(k9SJ-x5:wR/$eQiv(E1ec}6ɪ[o7ft
Ay,jUOƾq/\O
TDo'̈́{ܢ w)?C(j˄Y
^	wix嗫
?<&Մq̘q
hqVQ}7d+P%i4>)*8?8>,V~"q;Q5TN~zb@6l|k3A]oV~^z\W8*@1,W#e2cӈdS[]aʟg} i8KN4`x=%ʏ[(^ܣ0[GsS:t_Pw@P^b`v/`4jYWY<Jg5Rh|VT|VV]&)/ûgw
U.W0@dn+gvC~'yNb7QִZKZ㖈5PFgJlǯ5pOn
~-4i-xyc/lXqeFg4o/e^-c/lD>S(Qn	κxX0e{	]2^J>j܌SL
aT锒(o6c6멾Zv+KYII(
rPJ8RKX2LI`
{)`<X?/6y:`d,1yS\$#
]4>V<]c|)Uï}\)I]9EGӲ4E_LNA"eUS]@f|#Xsn-4V0lNoq<_x%m9tޯqZ$ifawmbv-rb2T]+k.[ɲ|o糳>x^Y~$ϖSv-(6Vqc֓2jypcT?
#ٱg3`yBeoeTP[Ͼ2}nYf;/lea*{T	ǩ'}ښ}]ͬ:*^{үЋbȶ$[UPKlW
  v  PK  ]W            1   ch/qos/logback/classic/spi/ThrowableProxyVO.classVse}tt{MBr%\,T[TiYfKmw8:MGƧ2/K6Twsw\_X 0ZFdTg
Yh9bWQ`<1ۆVih.2e˖a^ɚ%l3-ٙ|lJYdeV<XzrW]pXz%ݶ)?FْM:z+te2R9
ROflFͣtn&.~IVlU>udJUp]cE`h~#y_S~x% X2zr]x1W̒m2^
{uđXW:E+9,U	Y42|`UĚ(a;c?^r(Q/kn	4.Qڥv>\;FpH <clVInk?ԏPޞR<KYvݸ/z_1IcloQlVOa36W}zI<f82]b7_Æ5JhVǻxOCf
QXMUJ-6J=SzS9?q2+ǜ
R5J5+{BkV.XLQO1Ǡ7
aZșJ /f\+qeuOK
A~#6FNh謮-Yhj䝚kZt>;Y GpV}|/ >{W퍓W\~U':x7H.S'B|>[>L\)=g[Mƃƣƻ}9>7@hi_c.f"X1W`s#}%38%o ";}q4&%wa;+nW>-I@v#*
F-3
UL]KC8t3$S|+/hǫy$*}_+փ|=xѺ}t[d` J#,9pYCcYL4L#öʲFq)dC.>^2~F>CZEIaQﶰD&bԺ$bOhpoRI&7%-SԄIL	LWўJùۈRt^`:*dۈC}̃o%EXIP;EHx{S&<`j!&B:L?LoWLeZ!SZ&L.wG*K("wl(e!vɨ}T nFrO#lPYPKu	\  U  PK  ]W            0   ch/qos/logback/classic/spi/TurboFilterList.classU]SE=_&,qA4a3!Fbv	Y..444ːaf33>ZVOV<`U&R%ŗPt{?_-<"D@)2ۡ
m}_YZ[soVBԸ@|ECu׬[fñnA6~ݻg;w`panZEms
Kg {dхr!UհWn{M3pnn3P5<X=VNi˅зfۃX}UwTp UT]l1w󯺫\;[`iCBs38
\B/]N . g5ѝzBЋtU8$iM誁~&195@jC\L_8(߶eLb:) :+.[N[%'TtOlWͶ7_8Sı[c"\zx2K=ʺef((Ȑx	۫+]ׅasTYHQzuS'Ѱ@r=^\M+H-˷6YC:N=T|5OG!cXO_Rtl^sKH+BODbR>@fnJKb.xmhaDxMG(߶=_8sПn>brCC<|"c/i^ #: Iۓ1qe(Η*|2Av1m^^ec\6	ct.{Ct;}?CT>+~}JcLC<=0$C=@'m|1opڤ-@9JbpǬ 4"[QFVmDl=>ex*.QI$u
_dYGiF/2f7L)-DMbVļ[)q.KtI'XPKE    PK  ]W            9   ch/qos/logback/classic/turbo/DuplicateMessageFilter.classTmsU~n,Ґ1Zkf[@,eM]]ѿ;q<w!	E{Ϲ<9/ׯqÂ0"}xtZx<rn/\]6-Lv_A\ҠoŎ<CUa[T/|7c`ir^Ţ4芆PpunD7U^q$"\ee*}	|Aūx!:æP󲂯X{>w}
ưw͛*.IM4m\a	3nv]
W32!5Ủg." ".Ov\y}Sj}ǠT{zAgr&y}2BT>6ۅ=yP,"u綿ϭXj3Xt\:wJR6I0Njz-6y"Ͳ)2wM[;4{4ma2QFw܎Ynj;}L/ԝNg޵x"|3O5T6^@3(4u4LM%3lψ09n2]ޣfȔۙ	7!ǜfSu7E0cЂЭ7V%V o8א# <ΜMIBkРIp&tuEg&wRB(ih&IH̽ E%HxܢyG#M:Qa}Mvn5s H45bv+suyi#cCJ Iܙ ]#3J]=[BB(3\=	O[DS*d!1F fV 4y(Dm2-BKJ'-\|1baIq@=nxDv,H2:p@[# jP$"XI$1M1l"i"竗Y>PKc    PK  ]W            9   ch/qos/logback/classic/turbo/DynamicThresholdFilter.classWsU^i+
BJp	PX(m(nCtv7.>O> "8"㛎:9IKI7s}wݳn\&@(!KFNXNİZl$34c7m[AS7\n32kcZ$FKs=Z* eUAP\cF`N2hcQ>
P	F-eBϰ(TPϰ8Z\`@Bce҆;ì`E*be,GXS۹-0C@2X**,KO$gwHk Lr񬤣8BEP,3js[5c%jLD\[7-kaMtbSp	=P\Ќ
6(a^2]M7=,}ymi:TM-haX0vˌiMq5uV{	STъm];m۲ssT@{l
Ђ#T˰2[n
R T<89A'c1E
Q\J zѧ`}a喝8Ʊ
E!|0btg@C!PKSPRqGTtg5w&S
;FIFivkyoZv+EMޛ6lpQVL34[f)6[=\*d'5ӑ3hڽ{5뻵04zdW!qC<4KZ$)pf-j<Bs^	S5jZQS>F(sũVD6\EgfPJ$
=V9EZ4rQISm.uzjHKnc#Ӻ#j<R1</zҧn8+RuX1
?.t\&J+m8+xW!F;,u\[Kp7i?2Ա`0fP3'>xE9f,Kds-J^=̸QI<Opp",Ghc@wݦvR(x.wDUt)|(s]U݂䜮r;YAQZE1̀%P^B$የD
XB}hTyHp%8Ei}.WgeH!!uYYis.(7f	sl
ia/rTr=9'5eNe5 >v"uD>$@ҋH].I<DD`Dē/"Kr\$!G=4ʓM!7$m"Y"RY]OQBSD$r
.c}Σ&,W֏19_FG1b	\M	\E%Gװ?"<C'`Ch}tZ\-*]Mҝ#}=rLw_f9:6]3Y=@%<P]`[wd5YY\P6ez_t2P{ ~%~O? b*M}SNb*(ɰqN70.crU=IQ+mx*ٌH/]PUp:(
2[4	E2{5PK
w    PK  ]W            2   ch/qos/logback/classic/turbo/LRUMessageCache.classTSU.dI	-P%&GMR
656@m,d鲋 _/gtGgڎ},J:y{wwϹ3 2/k+Cv[&C`ڦ?EtiAfUEaH-ݮJkUtk
ns|7ny3)CmOUi!7u;5Cgב+kڵ|f5*5YQrSÜag9V\<en!J^
}8qќKunIđm׸C?pn5=6/5aݴU'˸BނשHȢEQ
cg]s㮩[VJH;Y|= F(EǔYgxwRFz"KN_7=<&u@:Krzoid2taë	'I򼩭[ǬMyں\woDs9wrڨKҞ<HPcx{@BuPaF+f&(tK~%ʘ)99=Xi7EqghqqA+6wgEqO%':6~Ac ]HѨ(m49\Äܽ.ZxU|HIZmӾCفldЀ z?ٱzL>8i/bcpYn:O6	&ySh8
nّ=@+t~G"|%6ّ=\7rssܥ1V$dPiDaݤQ/4H'2U}MLɚ51"^ Mn?SѯG*T,]S1OyCMU|t\WId"}*;PB(*@V8sS%!g$NXʁau0,VXˢ3P
x8 rłܔ1APj	+0T{PK}!    PK  ]W            ,   ch/qos/logback/classic/turbo/MDCFilter.classT]SF=%%|ipLbGLhSC(ZV@$὿oͯv:Ӽv)ٕCۡxƫݻw=ܻ?)a )i: Qή2<ǎa-Wdl{ϏP 3絼x^ U!Xӧ#-T^K
Tw侴}jq0enhe噼囲Uqjq>erdq[0ezc)-&($3T0%fMb˘zцu,>W-|)ZkG{hwS3(0k8
;QG%~rGXBsuIVq26qmt')'m^Tft%#^]m7kn)k=ǸQw\\RZ6":xazB6TFmw˽~+	vH*g):75M-V7uVc˧gD'Aqk1')*MFn<YNJmq!7װ@xL^aߐBg\
e->9ǌ6.G+q@s
ׇ
p=5W|/XősGQGbf1)ǛD,w0 $=04żq11#W&R
\~TGx_?T~]C10pg2{j1;%P
5y,a
˚zaf_[5"dJRǴ-f˨23S1t&YGE`$wg_P9m]#"eie4jn
bmk<PK/,h  +  PK  ]W            4   ch/qos/logback/classic/turbo/MDCValueLevelPair.classRIK@vњںU+m̓EPrġMߥ($(tQoff2r(!o"Cqc^9җ	DeOaS%
L`wc^q`"q:yqvjs/ːW
9&9R3SMk<bȟw$W/.#[x pgPs]1S|&;"pxBD?0e{"ղI	nn4+M8jޥQU04s9ɤn
YusT,JX"4@$`5#ln｢k]qvRnM2ccD`ݑA2E BlPK>rcN  s  PK  ]W            /   ch/qos/logback/classic/turbo/MarkerFilter.classUmwEӗln_ Y*/imM6(ϙldNܝVp?34i針>^p
?у^}6`p@Vܫ^\[ʫauW7zgRH"e!mc 6[6gIcyU8xre}2y$c#|6p
\~oq7a-H븍S8pbQW|U*f.&RY"IƻE٘Y5qQ1=L}p4.0?h7}Ҫhۤte~ivB9]6fu~ 6><AI'C06:'񑍏5E6˸b᪍Op>=%#}B%Xlcx9_<>UaӡH)B^mDExNŃÐZ=j[l שy}ҽCZ$֤ț7'C[O+&OOdDBM(Fq]Qg{j) Xjޢ܌<A6Tx TMV$cXL&ӌdSDj;،U,2*C:2p4JoaMᖬʿo;<"KYlva8^uB, (J{i
C-҉C4E#jR[K0z꧱wB[g&=ƄY4ڭ
~Dd)WHfcN5cD9ѵ:}mbϐ^[LO)Eo''2;k$)̎jVxʄfitȃyKD2QjHiImbncx`_-aq]|M0f$G)RRJdy7.=gΐE:tiyL^0
;I[|+M8?PK  Q  PK  ]W            1   ch/qos/logback/classic/turbo/MatchingFilter.class]oA߁mRoE>JGoƤA$ѻa.]LxGϰ4;s3_ $:4sg(Z~=a#@Z<=wR:3?3ċn	$u,`O|Cɣ3{|d[ם&~$ѱd`YTne=5nWܱd
SRB	,pk:Xҹ #>o>eˑpbwn[a6-s\7^uTCvlH Ǡh(-o f4kF=C,t/~"j@muM\;<ʞb*,Pzr9gHC2:	I:J9YodI	U>-G
gASF+Mu8u4>]n0`п!M8|E
(:
hgDax"(<IR	_P07o5w#)EIWcFe
}<&CFؤG,`y<
c5`URY3Cle3gY6sHl%b+[xJll.?PKSD1    PK  ]W            P   ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter$ReconfiguringThread.classXW11^Rؖ 86NcR	KwhFa5MM:2$nt9ޜ=m7 }w}wߧp^G5E@"}񢖓3фex9w̉Ʉc+a>2bک+@6nmkSF:4NSFԢ@tplB&|aڦKm˱BChzmVVg+؇bc}[Q{CX-wONF|'1NqXrJZDȸiɎ7ifJ̕ea|*H&ؼÇ|moۈ^
Q l$#DyZan[qe ߫a@cN*%ݢ:ZDңmnMhp[p
1FS02Qhm[iۦ?ji<߰}OJ-~F'4DutNA.ȯS+;p:3g[#D􎅙o=:zJwq3G2	-2Ɇ8S!ZxgY2IϓES(5	^n}!Rq:]Kiq
;گn8n{Pquw!מYx)F4
\IsV?}R1Tjve{ ê)Ftc4,1.qҊճW:x;:^C`{%5r<o'1++qVu@+@U^X*$a#!D9=_fV&r+mȸiY~#Ӑtf͔]ZnUUdu<Ui#5\U*bQcMk!-|9L1qЂ@ʤbQ)eJl~7(UWjTe]9e:9ϚfO1e"zdZyXzZZHwxbgڪS= <cx ><.EC2-mCYڃ2g]Gy1cCs8,Y,ud$C+ËKIeO2<kcQ
)w>?h£,my*fA+?:'4OPn3Lq gT@{;ͰRxP?Oyz-0C),$4|Qi^Pζ*kF}S̴@.3&ڦÊ:b_֨P v+]q駝$:*+AHLƍl]T]	^we..[+Z]tq[øaְxdceQmpԓK;{uѯaF`:*$ծX}:܄\dTFv8ۀݎ{kdB=K(a'K蠒(Fl2 9._QcDOUxh=LbZ}Fx4	cUKz-1Ǚe{/e.O%/	~жXE&I.A*4İ\^eA^!|Q}-_ĕ/sU
o~3U+|q'W\[u 9C|:Joj3g!bXFMXsFf|bjXnxB--y(74֗V@yܣN^f|t5 ϰ}x6]?ķʷOW;4R((vz9wٟGy-=Cy)8:ҙȻ:\[\\w{Bs34؟,k?O7_&H.g؆(2tNH3>!<A'w8+s5 `xo~|gh΢T؉<mDhPPE40ᜆNoudXDJ3SE${j`MˎyYVXzk14%sOƞ#
O.sԡp܄~phwDX?ğgl__; I_!bS ]tciW3USvUHaWMO:])Ԉ W(t>ϧfB*ǟ߳$*XyIPK  =  PK  ]W            <   ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.classWwLI6" rHp&!Mdd:3WkQՖVDj}AG6&3{}o\(x3:lñyV,a'1FӮ[L{TtX	_:4M"Gc{i^4TQA'+_5'TP054.`|fTm;56[mRZN"WYנ푻.K-{حNڸY&X"]b-XYX:R
5	3 @IIr]W~]V"ayJ1%q˔>4"1#+Шc6hJ״iJHkX-

/qAR<bYo5	aGtJlѱ6\a0 &]eG#tX-0WWjK6fLJ4̶N0i1*QS#VBliIr!t}ZɔC&	)@e33ox|tm
#a滔׼~.xdsB^3WE5ۥFi`nJU0i3Bz9ZՒqnh8iˊ|mpE{&Ѹ@4F=ȵ>ثaI:7}Uym#	Vd)LׯJmO`(	Zv0[j)aPv|zfİ*"D\e*!tŘBVkvEE*1I-ˊ&,Aed11y;)O$
p1UۄOI=%J
`L_ozY3T
3ofsš1W\
Ξͅ\%SbY!Kx7X(awAacbdFPl:٬_c\7C3@p>(ه44-Ƙ^:5pg9cp"([m[yL:GfUeL#2u|56أwX;Z#}Ch{ۣ=ml|2WV
]-uh2VX8|5>Է[r艴v:q[lѝNOZɈ'%2Lvk%t]aeU{%uRgj0iE#3y',bmw)EX</(ݙڬ㸆WΡJɕ"%<qѰv0e4}>"B۲56ϕv`n[Q{HݓJM٪s7԰ơU[D#.%2efQpQK[V`v9ٞ0SZvLD7~U}u/:[Y
1m޼YJouɖɶU&5unL*\5j$1
]{k?ĽJDæ^̓^qkm0HߺA-exS?#ͼ1:JBVl͊JXR_kFoe?]0E62W3λ§
y`ưݦOo]qө"6I疛h5^˗ktڶp[e	EZ?sN}Q&X0%cT9+>	&EXwɯ<LW<i+;; r	C)GЋ
aSX:SX{Bz[ReB#nE
S,W+<6#F+N4.F6!6O7n?'27D^ZdKhit r{WPQTo/绡Z3pzoW˔1>4X밎5!\
hV؁V~xC;
}Fhwv	7)ÃDq+9|ip/dɜ"GOse7ZM3|=+?QQS'|SO;B8!w8uПGxh
LXq|y(G`30WORC&^C=wCIERBA`z*%P5 Q%W 6"A$`jJX'aePRAr4Ekj"N+P}_{xYE ^FN
ZW_g@'/~de51X+vV3aȣX)qake (t9e<qǑǰH-yVQp/*0DsmQ* QRʖ% 햸l
̗3xg.]_]g/%NJìB0-
y]y:$Yy`U@qPlռ:Ϧ:kR249K~y5L!?Vz,b"Lz&۴y)˳RVZ=_nlݫdd!
0k4#r<7 
VKg4'[UڄVSo"Z^U!4C7$B}!o^w.B&f~_~fđ_rczW!^3g
PK=ZL
    PK  ]W            .   ch/qos/logback/classic/turbo/TurboFilter.classR]oA=+Hmm0q^6i&ӰL]Z| 
)[>ܙ{ܹwS<,"?
o{H
o0_#a䶈$C
UɐT;\BE("j޶
birQ,Lv-Ǖ4q(x BbBb|QM'^@NCXlPҴE7HH'0UPkou@OzjT<
60}_iy(?̈́>tҋgAG!t4?apLTԲd4(CחN2JuDSje>_0[zd<IZwʴu~ߐu)N?"k=Kp@=VlN`an1k87p|FS	[0='3L1oisw_ILqN|Cf;U./*&śɴS,K51j`ovCVԬPK  <  PK  ]W            0   ch/qos/logback/classic/util/ClassicEnvUtil.classTRA=mB*$a	ʢ0qdHɧ/Z~$Xy˹'~  \p+мsCw|<ϝ$;PgwV!nZMMMPz|f|tX_я Ckζ-AA&43^lW"j 7M`Jgʐvl*fUAHE:dOvFҶc҆a៰PHDSW`%tϼsx	nKMbsǰ5Ǣj=Q*Sя`m֌)+2]*/͡
vEL24!mQ?",!/X[BS獵MΔt	,]374sqya$uI0²*ۄLK{AMܔ
1G'9tbQPP]Q?f9$|尐|&X1B&F|*vg2},辊L%=|	!퐢^C]o>;moF5u}[7z~D
K'~n0wNqZ!ڸ0N_Gk&0PN-CJhϪ)zS%u*6|x}Wܘ=fNM
{q?F?SGB/y\#
n"5DƩ%$Eiz潢,ࡤ;$Pfh5Rd7!Qy)Sy=xtL(	DtcE9}!wPK    PK  ]W            6   ch/qos/logback/classic/util/ContextInitializer$1.classT[OAllRP
Z`{)X!6$Z]㓿FoQ|0o|Wi6)Mw̙sf_ \t!P4a0Gneas߷X^r|+m=1 C$X ag.ELE\CCjosNEn~%[NZU4GCOh%=*UAI20RYTPhw68*Niipq܀0dO3PEnipܮ8qQ%
\f?Zֆ=S\sΖq=1u#F=XbӆCCWpÈNSnA)Dur̹-4m3eYb]W*21RfH55wun鑟A!t0DGfQ_2"YBh=ӯtwy[l{+WlѪ8</6xyO[sN.qA}r-R6]9>姕m2}tѹ!J襝>&h>?A}Gix5+`RX&)ZQAa4/vAWzwqfoyCh9b}80TxRSE:tjJ&!	@+^^7(-^^qGz	I-a!0F/~Gq$3`"I`$7	YiOHi'UEWoW^u1t
Ƥ%nJM7% dPKS%<    PK  ]W            4   ch/qos/logback/classic/util/ContextInitializer.classY	xy~iY$/!H0,qX,H+Grd'Qݑh#
H8qMz9MI6$Ůb稛4IiܻM;q3V2gv?^| v!
%[cmY5~܈MŒF&u9]V*c);euhT0fo?~{_qXC`ѠA;HMrVwVwVH鄑LٌYq3ٴa[i?V
,2;k'1#ȕϬh(2鍮@4Q5E;qm#;-%vvG{"vuFV=؛Onl-:iw6a:6bJB7eMM
59gp
n5nݵ(&Bo8*[x62ӉyI;Oi325`J%v,URN_7aMhc9k=
5q'v
T-H8zdM]Cco(#@ұ{Fֶ58@;(^@THCek339VIX4LEw)*=pPG	ݝ9_
LJ	^=>mzʏ@ GpTC>DCI,e6lHfR jXۢє>eGRc3%(<cSƤ f'	Oa)	;'GL)'PވǕh9EQq?q1tpf&Ô2	I~LNW&$"dd33ir!@nkbLø	$FEc􀞴5l4NҾ:
ŨQG%&0#,e-@p+5tARhLԴ}Z
ZX6c[SXNʄNi3Odb!#2BGJ)
u?]I
BnOKB:ކ>hrUC>D~FԐgm'gN
?$(C(ꄑRr9t<	uJz:ރ2h'R3rK%;Mci(2rK)3F1x~v:ҡhh$:{4zvFGi0}X/#%`0l3w!Z>&-v8>I|d,@f7ֿF8uZf_i|M21E;\2!w9$r&qU
Y[-P2OF1SM>Ǡ<,1?Іݧb|	~Cy D4oY
t^UĲ鴙Sf_"LdT:R鸌+\s^
<y|.:c$fX^+k J1 7ߒ)%Q&u|_ck5ͻtx`AޡXÑ&M ]K^$SmA!deC:
(KcߒUTR?qwu)'1+=e0]+_^M|O=|H['IH25&d>$5:d!yLjyk\*qyx`h<:I?	n*K<BYd(ϖE#7mtʌ݃(dOq<r6Nk7VWy+0?x9 7hţIsHvbf&ù2+Oǜ	 C	e-:~(gҝN˳xEL,:
;ўHo7-E=_`	X2i,NWu>z;633suΘ	ܻ$(=m01"Wdp,X3
6^o#wYqn[՛Hq3=$JBgᇍtB~>{Bfm7z/AL=d4IPSFJ'o
Mp\ϩ]*cDm8W])^yu䍽1c`Mj5MbR%Xq\E)FapϸehMoxbk"w#|Bҵ̯KOh6l59g<+B7)Ū!7i[.8҃&lkC$!RN|ݠML',.uV).Ye3]Z͂Ә3	+2G)Wҧe$f9XpG`lc5 ^PmTZ/=@1DI(.BS 59 iϣDU8 \G4qIRZ0(\Cvv:X6RkYeEDXzN$%/HmLڲ*OkM;^J9:\ŏyZx_%&:Q*Jֲrrjy~Ь7bYT [*/4\*FJ#`]pذe-w\@j]u(s/5څx
[8 VgX)\JRw5<{8F[f6]ԠK;#D5}g=W.~	}gE
G/ulcsx}z7[8+m9(A>LHEcОL	ϡ0E}.Q9h|y/,\W6w=_|
^E}һkk>u\N_:ij)YT=Z.^DɧP:|FQjދ#YއBÈ~#0|ocx(> `Kw08?L>bXͽ^@zsn!?5gQKTܲVubJzזNʖm\Eyw3WB1Z٭Gȋ>L?m)}f)fs>*	?O[k\\PK E[l&"
+*Ix^boCAE7E3vWr;3GhLi.I/G&I9|{{l]7G#M_ECA|,ʂ4_ğQA?~I<DmQc;A~!Ia"vT;AVUyq%.t-^@C?ik?q"k7+nPKmܵu֭a)[߳׾Z7'=JzO=EDލW!QZG=͏*NJ\*ynn/.pC[]l[se%Χ(
I;
F@#sRJ'bXQWhV,ChaoW$Z&MlsG]v5Wg-Q)lVR<W[ݎ-Wtqߨ"G(1	b$9In%UZC%wyrbggT˸KC87|es7<s%V5.yA_-v]
jqߜ}Ie:V#vη;P.4O=gzvgSL-E[+<N׉APK&
     PK  ]W            =   ch/qos/logback/classic/util/ContextSelectorStaticBinder.classVRG=6B؜xAlĢ8& YlEHIaԈafF|E)c*T7W#%TnBjz}ۧo_;adnCUb\u*4CsJ{z*@*ztǴZUͨ+ѴIpK'ucZ	Gq4f$PikFJi0O71FF-&c3I1Ogu}BUmOTF V(vap;*FXqκfn&G[CSOֺ	"r%	1t!7Dvñ[
:nHhFCWO^\2-\Nbvcˤ"t,]:nS|MINvtd)sf*-jV^Dj\`Q|j6AD%|">GDwҊnm/ާ>c$ i$$b2>Õ䞡liO3ܼdھM1IB82ӜxU+YR
rH@y&:/C3{15$cXi/TC=
F`5A45(⑄/eaU1M!YDgG)IuLRsUn-*:9$,)&~gHE8᧩4ST&S)2pB<Cc	9v.تܴ+૛ʶ`&~D3cdL*i*n&޳ׇ5EfY1jjإE{@#꟮eƐ)
^ q\mȥ1Xd($Wմ9{YwQj[fqn*.٢!0$0Ӗg43|Fi+O)ѝox
+jEdTGR'YgE]%ƒ?;O%˚Ko-J
ߣ*կ$?ˡC4}o
w~97p;T?piDt#I!ңhnEeQL`O0gxಌx|.7p%46Y߹Q)W$׃PˉSFH#{GF~ý;LU\?ϐ`9-@Kp	@b?o uZjؠ4L=ޘۢ1!3XtyPE NFTcHyouPK.    PK  ]W            :   ch/qos/logback/classic/util/CopyOnInheritThreadLocal.classS]kA=5۴I[$
"	}
)>0ٌ٩8;MGwv6QKas/ <}9-*(8p
}@Jy<`(ue(C[°4M<w؆P.04XĒj5,3<|C;A4p<vlG03sƈ2y0YE5c(lGC꨺2'"iBJ&NeĽIR[s%B\~Vh|"|y==V2u#[D:2rOB'r=g.H<gO/lAsOBh+~(Pt o]ov/(OfvM7|y0ph\CQ,n}$UK	xWi:ły Te!Ȧ_aQ&ef
u5r#-ɮ?REm	w_k}7~D7a}FeLm,)MY5&nPK
  a  PK  ]W            :   ch/qos/logback/classic/util/DefaultJoranConfigurator.classY	xTd7I&˨`D"Y,hPėK20yoyD۪h]JVm-=X
[+m{nWfQL2I&E޽{{+GDL*:
Q$P\g"qˈnDI%br̝F\eLe1+,(\Q 5(.xJŢGV=F:\f'
b{bIsfNp9m5fi$}啛6o5t"7K
&(Q\5LdԔ<;43yTN\3j&%(4gH_%1iwȴ!iDb4T83ͬ4i)tJbuֶۖ
[Z;֭ҺJ7nY)pqk[/՛l[p0G\`l&5tD[O[V3Ty~Voĝ_8bjR`~OvMfv@1/OĆ3<FCBCw~)ǰT S<L9;RZ'PJT7RvP?MҼ.fn^#2ٛ7-' .I![
E
˲PqKe*_,p8
D2
X#8K)0rX V2ߕ_Z~MIQ՝"d&<qoL(Z3&:Z*Eݺ$0kLbHze^2^
X/P"p3l	bvmL
WF-J۩col3)#j87Y	,IcJЁ\*Ptt,04t=M6Z3	]N|dۀR=:zHNOZfe S_E6-[Nqy\QvC4g<;q=eI-$u@8;c)jv;B,aq=n(t)941Fo5ܨ&ܜcM[R܂[5Emx+|\[KŰ^j
Vdj<țe	BKVYR'@w^ܧ~`wb}[e6A0{d~C`ĪMW<c/_x,s0*hկw087R*U<=U( mD)!
}:Y}5ɤl﷡/i0
~<:>	L]]oh
nQ
:ǩD1nzH[yBii8LXJ3Rļ=(>AM,g AGñGVnZVt ]B01MyQVl.^8۞
c1I1\DܧvTiE8qɹQqPNqN$2_҉n13ݰDa#hMQn4'30O!GS3MplVzϑ,aamDd7`މ"C$)J)giogpKg[F?_WZէ/C7|'<NzJBR6>@"ksIlyR|iW+4O[N숥bR6φMn7i)lI9I#b:}v7`*dv2䦕!G͆kC}v:-;yy%_l!P&0!МF;=j>d8Y 
9vgPބQ^}H)v4NBIhR!!嘄pJ8]5ʊ(>Q	?hQ*0fzvōFxh]kXq35ٶ%!j'y1ze^I'lTD1[R^7/)%>bMtS̱E|~_ca i>YxO%gYgCZcZz#Z3Ob8k%(C6ltY	TTb&j0O	|2]f{Jȷ|rPE*%@)
*e_ReQ
ZÇ0%\=s[kf05 G*7Σ1pETi	ͩ*.u*?_7=E*^{A
Sɤ+d8)ƪt:ĒcUCkªyk;֚SX7.Ǵ蔔Gp%pW;.嘌tJ{Ѐjmkwq)ߚV$|VhרlE녣Ob)(ʺ:>0
t"WԗOF9/ >,GQYsu
]Y{Q b͊C&׎c:	r܉!\a9bwJæ
ٙ	.C8&ї1D(w+O/S:qnUnQH'}W36SE4fJ4.,~Vpm-qߍ᳏31ejFVifsG:^R**kFfC_M-NG$<1ۇB(~J%\S$(TIp'e"^,>LE,VˡU4DOQ\y/? arb(V %CXU?\i54A9i˝ut&&R@2D~ IL(>R"0vN9+;mø|oFU.Ӕ!<8\dT&*s3s3V4di/<sZT|}ͭj%į<s;{琈WeQIBeh~W~41@zKkcNa`ܠO	#Ku᪊Be'S/>zPxg=(ɽLX G`fQXNm'x)͋tJW)]YtyNZSwۻ0lP~G&l
OD}'g	8@'TKyR=_E
>VgBcPK/3	x    PK  ]W            7   ch/qos/logback/classic/util/LevelToSyslogSeverity.classTNQ]K*"Ђ2\T"&%)NC92̩3 /&$7㞙RBսg=k_z
)@[H0d:\U%IКͭw"4:f:Xc9.XAUZE[U*ҫܯ$+Bۢ.\3|N@&3f:.2!×*+(/Ӂ>?%]WTWj$KGTT^
0``0I%SF5xa<ka>gf仩i\пwrސzC#Ћpz0ۤ5-ݸk*P_=]ģnYk쒧Vw׹/Clےd7o7婇Ƞ1^6KbsEviDr>~N4jTI|G<p(ҁyj3H\D1)S&-4#=SikFĮS[,1jG4*wi~^F`,6]JԪqm*v7R떤t_-xXJV~ZKq,BF>y .z<Ag"r Kg:@Z`0Sq-(g_.ׁ<.lb$3>ϸ `=nàsa,2Fq**U싥*	
<fHlTB,8X]
5$,:n_˔~PKv    PK  ]W            3   ch/qos/logback/classic/util/LogbackMDCAdapter.classVsU=7mIn<L[+-H[PAݦ46I7J|~_3~r+P #231n
Zlv{{׏ ;APGhѱY#nL!	?jZ
X>Ku3?G4
glL'&\4nl2I3s#GmX%E+iE#zobȄk5dVK~N[h֜51̌aeƦm씱^l$]63b@{i$tsJ捔}Zt[BsF>S4©Im7Y٢0.bܶ@τT]Cc'VMWa%OB脞a8.TIԈ>5+QK=u؆q0̕ A.-t\žʤ{d{:+ѪT;I
hȩ
Y!)a^L=#~k8cBNqK:1OO%i(W`=_p'3VƲji
1:}3.{T:i1
gpV egOy
^fk8tƝYɊ+CrE
/@3kNg2r=Hՠ*W4\1nUU
$;K`<Hv2F+%FC	TKaun)j{&IsDcisd9Uh%ZM<gYO$Rp+,.6pq.3."PňmgTnyVO{=j+
SqVx~F釬4U2
JB0^PCasnjtΊǓR.'B<=yh^s9$O&70cWOW8Sw	>`ᶉͼm[
ky5,;xDA92ӯ$D>6]
m^֟{@bhc4GspGa{.2}J߉ t`a'Ɔ~bp[u)ɻi$Hb<#`)EA^C䂫uApGE/r}x}7M GnPW}dG6쒭CҤ(:Ie(x&]^ڨyRr_[yzW3Y
X:&ڌa"m6d*$2IX$K<]{^r,o^^R/ e9@
;z {`<?]zudHݥ
nf[x1&F8Rr;W׹J>k>;c~}B
>,E&ʄsd$]",8Moer]Rmg2nFG03eu긬FܔEXPO?_2Wq3eW
443sܙÈ'r<B<%r 

mQ~EM%qX`A
-27PWn*E)8{f[E:сkܼ*=?1"Js5w?(ZyA9eA^&|>waҚnzkԤ_<Ѐ*ח۫rr&xPgo9o
PKR    PK  ]W            9   ch/qos/logback/classic/util/LogbackMDCAdapterSimple.classV]se~6Mv(`@4))JhEݦKdM
PJ;GǛvFZGQ/0ALs=<yλ`Avt(`\4ҶQʧON]0sVr+hKMT0>tP1錓3l
*ں
]E^)x*WH:մ䧌\1jʥke3qȴQvJ֚)ۦuntiƙ[Ɣme3-P1 T}~ׅtfZ<u+vARmz9[3
(IVcwX";04!&[Bd۶7J6csfٵR'R49Tr/l[DGٞDEYb2ulddcW&2&!=
5j)cӵmkF|n$ֱ;\cֽI[ZT&xJ.AhKc4]הjx{TձO=5ۜ 5Kt@AbU`z&gtb8ۭmDŨ!=Qlym^T˞Tq?wNr?hEqdQHVM_

ʵj܋朂'Z覵qZ&t}k+-7gt
VӨSIY
riT*R&jJQg|pk6myrۃBaDGiX%s63eVN	qqle	"nwgdǞjkOts{)w?4
?x@C([ayIr%Ҧzx
'K1錈y
JSU!mCe)eW"Sk
ru7FdSujyn*̣+o_|pm#)+kaWsCW-gu\nbł0^>wQ};ێm_3%%l#ZN2*oT
BPX\\Asܡם_sYo-;H'-"?60\]ēAu 눲^_ˬqfM2d$A;iwd;Q*]k$6,WQeU+"}>^Td!
3"*GA][pAn
)eYRZEƽA[R
]pyb+[-Q^nt!$ulX޳w8!X]ek;Xwy)ާ>'$AC>d _ςg% xb
Ni>\i^E:=GCk)/I_{±xb^	>~RS pMz.i˪aǋ> ^t}^O52ms8釪NK.iĕQd+v뺉)K
YM/xu\j ,"@)LQnx}pn֥w
=K18.k'TeɅ4?r4j:n<%L#_2*Z׊f!DNd҂3G9-0KF^ĩf	VW~WGP6_Cy\p4|_Qu?PK|6  d  PK  ]W            0   ch/qos/logback/classic/util/LoggerNameUtil.classT[OA-K
 [).^IUL}rڮuqݭc|D}[7̴؇sfӝ/??~p
*"*G!ΟsnX[Ր!1ovXdk*RЍ^}b<^}jTvhc^nu\MKnza0gpCvs|IAaxϷZV<7*8/~h߄bP}x$I*}ov@T
p
#]APrQം3)(C ZM䚇:(SV	!,^vۍNLʝ5o'v0eTcr0|\J":Hz{Ql-9[ޱrHn͖tlv!Uow(vQuFTLCh`{6{=;TAQTY.>\Q^ïZ7mA>(}p_L|ghޒ	y8󴦚!O{tL)Z%{(;GN`
dv<ٯ%1.wAOg^"/fhGvHO2hۈeYTM(*I$ӈnPSN/J1z%FXف$dEab
¾$1H$hX+#%$5	]5jBQ(Ե]}m$7sM?{9	JZAf
E,cOBIpU֓$(TMAs5,Y4{PdPK(Jc+    PK  ]W            =   ch/qos/logback/classic/util/StatusViaSLF4JLoggerFactory.classTRP]BK)7@)Ko/(bfp:S3<!@h0IE?G?Ȍ~OJ\^{w_XjmFЎC,rUTUaXҫd:iUdHTLKmGvjY7K2aN0.KW쪘-эzǰȐm[WĚbKYKk4ڐǴ>2佽a:#pU{rݲL믶~0$΁eCuUGBp#e&ؤOSͦLV4~[00"
Yuq]@+ʶF
>LF0i:!pB!f=^UkaLE6ʲwtt
;6EA
J|lkύ10W;Nv{0rз)Mb7Obɾ۸ZjVՏ;lwwI}DQr%!
NP2knp[2sqv0јH3㧹:Z!Kc{8 yha]:.i\9"$arb.P9
w *G~.=Q2Q4G:}8d;rQc!vzh9}g$.ڭcb+҅fˀ2I70AiR>IBf0rt;<Sr0
-E<9HD]'/LX+WPKIK    PK  ]W            5   META-INF/maven/ch.qos.logback/logback-classic/pom.xmlko8`6ɭ]E&,춨bAK̈́z,)97(Y(Yq^p8%!`hIQ8"4zn׽_ϟ1n @ŠHq$c-9g(QkN-T+^G `"G6z*(p8 jx~
H(s'LC5:0cNdy[Ff|;
ΰ DX)Mid}$þ}bO\gY0 N{Aeܻs8-P>T!p@
4Q
'4'QkG1~ȥ̐-EyS{v!AGK_Ih0'ՠ҈I9ZܶP,[/,w_`2ʒYm=i
UxpJÄ nY:n2c0vR\.OvӳVbdDJdOvl
nHf?oSf%wyaƩHД <KGUUB'	J"
Af<
jсMP 𢀠"9<k~hEz9a}զOvWuGC`xwL-a6;8ʘ^ff#1&<btn2*H  6 PО@$cݓN}CFtڷm	
$U#o3VHs'wV] RTْSdlwG-ZgLgX@pw'vn7i8SYU)pRV (^Ql@Dr%_
i'Nv)f"N yX{;k4
\G[ K(yqRַ-l e.uq&T`|>}2/Qc4mܺ~w]_]NnU"N\@T7eXëQ8MCߦ~+^`Qu."e
<¬9
.5J__:&K5p
K,@Oew󴵨pE-*ՙUMuphu ͺMCjn<ԤV{p:Db bi".Z`YJMڲJlK&tM/H4n]9ɔ/Ucl\OQ$I,J6z?u&(S'<2hRɺ&jF^ZɁE@M'IRB=iZbx39mJ6{PHMAhJD4adedGi:KK 6"ͤCͶzuG߶-ҔJoC,tsxM7UXTAlñMs|^+D-N/sFđ	f"8@vŏ&u7i^9曬tv	N@̙A1v)||2)K %ѽ?ʙݪQ2?[@FqW\jB'
d0, B>%
nh8Krx^7l}nE^mw6|r#lڨG !_Di_?.
iPf:n*ȧ RwF|+(Ӕɠf_zTCH^
G< 'ØV.<$p\
x&W#q)w#cgʣ{AɧW/2^/To[<Ui5#{u'nf8Gԯ5sã#G2sި^I[-$3gQ1SkhfcĿ"bFfڛޫn6Fp̾ yHMmuo:,fTܴ_̶Y4l{Z;B_6wA;v7ho1Dw6i7pbfw6@Xmety&[ByDk^R&Oj`AFlCV6ݑT*Td.FN($RcVu3HHaQ<  d:hI1~5HC,
G=\+& !f+AL4C^!Y(D½Z2УA/sry0g/?<Fpgׯ4aw+Nڂ8.DT&~ ,J
5ģj=.e#m5K,t!I5B
Bܔ2oo?״ɞ
AB6jlBwCAÃk+9<u<dN Yڿ>Y	Kpޙaqj<}
ٞĬRuP1KƢ85#P;:*JoOe:5᥄wFf3"hӁzEZϥeuz%u8]/ћi#0ޣDSQөk2y}]93fzѐtY6CL*wѰ1uigHPK62
  3  PK  ]W            <   META-INF/maven/ch.qos.logback/logback-classic/pom.propertiesK,*LKL.LOOJLMI,.LJ//- 'gAR3l
LM PKs<   A   PK  ]W               META-INF/INDEX.LISTN0}
_VN<h&'㽔Ae 	q !wO_l8.J}{mGƈ(uJ6cq8=~J:Q/Y *=eU[MLphSDpL [$h8
$X`5zL
_ʎ&$F몗u8ߔb?)ȃ.6Sm3^qL.
n02QBi
5Kp5G<[3PPKnD  b  PK  ]W               module-info.classV@ArFPgD!XDPD@i4S%^\^ ^@.wwb9Y>Lv׷ )֒٫jF#В3W:Py$vؔFJw?
L1/CdkD7fi4W׹yӚ6-PUIITCYa1N66P"[C%ҍUt(Z簬f,I4ιw6njg݅4zg+6rǭxNi+ꋃ!DS{df_e&zm8)gHn	SxO!@MXT@J`^
g4{derTw}w2@/	x	E{ 0hQ*P~R=<GN{}5O?<U\6컝TqԞ :Mf.V"Iͥ-0B//"s٭5}#MoG
/2unlg	׾E䣯I,0d	b?eڢ?N/TvjF`,{*>5mu|8.4"MKt4TX!^fv00kqWt3Q8s9ż͜azs\dg.31WkuiW|N^~ʆqd
9*f({2SEʴLV):6PKe    PK
 
    ]W            	                META-INF/  PK   ]W  m#               +   META-INF/MANIFEST.MFPK
 
    ]W                           META-INF/services/PK
 
    ]W                           ch/PK
 
    ]W                           ch/qos/PK
 
    ]W                           ch/qos/logback/PK
 
    ]W                         '  ch/qos/logback/classic/PK
 
    ]W                         \  ch/qos/logback/classic/boolex/PK
 
    ]W                           ch/qos/logback/classic/db/PK
 
    ]W            !               ch/qos/logback/classic/db/script/PK
 
    ]W                         	  ch/qos/logback/classic/encoder/PK
 
    ]W                         L	  ch/qos/logback/classic/filter/PK
 
    ]W                         	  ch/qos/logback/classic/helpers/PK
 
    ]W                         	  ch/qos/logback/classic/html/PK
 
    ]W                         	  ch/qos/logback/classic/joran/PK
 
    ]W            $             :
  ch/qos/logback/classic/joran/action/PK
 
    ]W            $             |
  ch/qos/logback/classic/joran/sanity/PK
 
    ]W            -             
  ch/qos/logback/classic/joran/serializedModel/PK
 
    ]W                         	  ch/qos/logback/classic/jul/PK
 
    ]W                         B  ch/qos/logback/classic/layout/PK
 
    ]W                         ~  ch/qos/logback/classic/log4j/PK
 
    ]W                           ch/qos/logback/classic/model/PK
 
    ]W            '               ch/qos/logback/classic/model/processor/PK
 
    ]W            "             9  ch/qos/logback/classic/model/util/PK
 
    ]W                         y  ch/qos/logback/classic/net/PK
 
    ]W            "               ch/qos/logback/classic/net/server/PK
 
    ]W                           ch/qos/logback/classic/pattern/PK
 
    ]W            %             /
  ch/qos/logback/classic/pattern/color/PK
 
    ]W                          r
  ch/qos/logback/classic/selector/PK
 
    ]W            (             
  ch/qos/logback/classic/selector/servlet/PK
 
    ]W                         
  ch/qos/logback/classic/servlet/PK
 
    ]W                         3  ch/qos/logback/classic/sift/PK
 
    ]W                         m  ch/qos/logback/classic/spi/PK
 
    ]W                           ch/qos/logback/classic/turbo/PK
 
    ]W                           ch/qos/logback/classic/util/PK
 
    ]W                           META-INF/maven/PK
 
    ]W                         H  META-INF/maven/ch.qos.logback/PK
 
    ]W            .               META-INF/maven/ch.qos.logback/logback-classic/PK   ]W<   C   =               META-INF/services/jakarta.servlet.ServletContainerInitializerPK   ]W=4/   1   4             w  META-INF/services/org.slf4j.spi.SLF4JServiceProviderPK   ]W]  |  *               ch/qos/logback/classic/AsyncAppender.classPK   ]Wp  	  .             n  ch/qos/logback/classic/BasicConfigurator.classPK   ]W[VE    -               ch/qos/logback/classic/ClassicConstants.classPK   ]W=lx	    "               ch/qos/logback/classic/Level.classPK   ]WxO  S  #             &  ch/qos/logback/classic/Logger.classPK   ]Wa  G4  *             B  ch/qos/logback/classic/LoggerContext.classPK   ]WW0
    *             .X  ch/qos/logback/classic/PatternLayout.classPK   ]W/    6             c  ch/qos/logback/classic/ViewStatusMessagesServlet.classPK   ]W5Kҝ      .             f  ch/qos/logback/classic/boolex/IEvaluator.classPK   ]W`S8[
    8             g  ch/qos/logback/classic/boolex/JaninoEventEvaluator.classPK   ]W{S'  a  4             Pr  ch/qos/logback/classic/boolex/OnErrorEvaluator.classPK   ]W:D    5             t  ch/qos/logback/classic/boolex/OnMarkerEvaluator.classPK   ]WnIw  m  (             
y  ch/qos/logback/classic/db/script/db2.sqlPK   ]WJ
>    '             '|  ch/qos/logback/classic/db/script/h2.sqlPK   ]WQ    +             ~  ch/qos/logback/classic/db/script/hsqldb.sqlPK   ]W-l    *             d  ch/qos/logback/classic/db/script/mssql.sqlPK   ]W!    *             (  ch/qos/logback/classic/db/script/mysql.sqlPK   ]W^)|  	  +             	  ch/qos/logback/classic/db/script/oracle.sqlPK   ]WT    /             #  ch/qos/logback/classic/db/script/postgresql.sqlPK   ]W`  6  ,               ch/qos/logback/classic/db/script/sqllite.sqlPK   ]W3ub  V  6               ch/qos/logback/classic/db/script/sybaseSqlAnywhere.sqlPK   ]W	ʷ  Q.  0               ch/qos/logback/classic/encoder/JsonEncoder.classPK   ]W0  R  9             ب  ch/qos/logback/classic/encoder/PatternLayoutEncoder.classPK   ]W}?    /             o  ch/qos/logback/classic/filter/LevelFilter.classPK   ]WS  T  3               ch/qos/logback/classic/filter/ThresholdFilter.classPK   ]Wp#  	  >               ch/qos/logback/classic/helpers/MDCInsertingServletFilter.classPK   ]W?    ;               ch/qos/logback/classic/helpers/WithLayoutListAppender.classPK   ]WxfA    3               ch/qos/logback/classic/html/DefaultCssBuilder.classPK   ]WNjC  5  :             ؾ  ch/qos/logback/classic/html/DefaultThrowableRenderer.classPK   ]WIZ/  q  ,               ch/qos/logback/classic/html/HTMLLayout.classPK   ]W&    /               ch/qos/logback/classic/html/UrlCssBuilder.classPK   ]WoK    4             z  ch/qos/logback/classic/joran/JoranConfigurator.classPK   ]WEv    A               ch/qos/logback/classic/joran/ModelClassToModelHandlerLinker.classPK   ]W_W    :             A  ch/qos/logback/classic/joran/ReconfigureOnChangeTask.classPK   ]W/  [  B                ch/qos/logback/classic/joran/ReconfigureOnChangeTaskListener.classPK   ]W`[~     >               ch/qos/logback/classic/joran/SerializedModelConfigurator.classPK   ]W/XL  Y  @               ch/qos/logback/classic/joran/action/ClassicEvaluatorAction.classPK   ]W@    =             C  ch/qos/logback/classic/joran/action/ConfigurationAction.classPK   ]W    =             x ch/qos/logback/classic/joran/action/ConsolePluginAction.classPK   ]Wҡ    ;              ch/qos/logback/classic/joran/action/ContextNameAction.classPK   ]WxV    >             	 ch/qos/logback/classic/joran/action/InsertFromJNDIAction.classPK   ]WhU9  	  5             
 ch/qos/logback/classic/joran/action/LevelAction.classPK   ]W}V    6             O ch/qos/logback/classic/joran/action/LoggerAction.classPK   ]WL    E             	 ch/qos/logback/classic/joran/action/LoggerContextListenerAction.classPK   ]Wt    8             w ch/qos/logback/classic/joran/action/ReceiverAction.classPK   ]WY0)l  !  :              ch/qos/logback/classic/joran/action/RootLoggerAction.classPK   ]W]    L             u  ch/qos/logback/classic/joran/sanity/IfNestedWithinSecondPhaseElementSC.classPK   ]W)pPK  _  K             & ch/qos/logback/classic/joran/serializedModel/HardenedModelInputStream.classPK   ]W
  	  *             l+ ch/qos/logback/classic/jul/JULHelper.classPK   ]W](  3  6             0 ch/qos/logback/classic/jul/LevelChangePropagator.classPK   ]WQw  C
  .             8 ch/qos/logback/classic/layout/TTLLLayout.classPK   ]Wr&'R
  Y  ,             ? ch/qos/logback/classic/log4j/XMLLayout.classPK   ]W(e  	  5             J ch/qos/logback/classic/model/ConfigurationModel.classPK   ]WK(in    3             iO ch/qos/logback/classic/model/ContextNameModel.classPK   ]W's;e    -             8Q ch/qos/logback/classic/model/LevelModel.classPK   ]WG  /  =             T ch/qos/logback/classic/model/LoggerContextListenerModel.classPK   ]W&PG    .             V ch/qos/logback/classic/model/LoggerModel.classPK   ]W߷t    0             \ ch/qos/logback/classic/model/ReceiverModel.classPK   ]W  o  2             W^ ch/qos/logback/classic/model/RootLoggerModel.classPK   ]W4N

  +  F             pb ch/qos/logback/classic/model/processor/ConfigurationModelHandler.classPK   ]Wd˃    J             h ch/qos/logback/classic/model/processor/ConfigurationModelHandlerFull.classPK   ]Wa  
  D             q ch/qos/logback/classic/model/processor/ContextNameModelHandler.classPK   ]W  
  >             v ch/qos/logback/classic/model/processor/LevelModelHandler.classPK   ]WϨp  
  V             } ch/qos/logback/classic/model/processor/LogbackClassicDefaultNestedComponentRules.classPK   ]Ww  |  N              ch/qos/logback/classic/model/processor/LoggerContextListenerModelHandler.classPK   ]Wq  :  ?              ch/qos/logback/classic/model/processor/LoggerModelHandler.classPK   ]Wo!,ʄ    A             ) ch/qos/logback/classic/model/processor/ReceiverModelHandler.classPK   ]W
U  
  C              ch/qos/logback/classic/model/processor/RootLoggerModelHandler.classPK   ]W7k    >             E ch/qos/logback/classic/model/util/DefaultClassNameHelper.classPK   ]WI    H              ch/qos/logback/classic/net/LoggingEventPreSerializationTransformer.classPK   ]WxT    -             ۦ ch/qos/logback/classic/net/ReceiverBase.classPK   ]Wˣr	  /  -             0 ch/qos/logback/classic/net/SMTPAppender.classPK   ]WWN  U  2              ch/qos/logback/classic/net/SSLSocketAppender.classPK   ]WtĒg  L  2              ch/qos/logback/classic/net/SSLSocketReceiver.classPK   ]WǦn    6              ch/qos/logback/classic/net/SimpleSSLSocketServer.classPK   ]WE    3             Ŀ ch/qos/logback/classic/net/SimpleSocketServer.classPK   ]W     /              ch/qos/logback/classic/net/SocketAcceptor.classPK   ]W.  {  /             S ch/qos/logback/classic/net/SocketAppender.classPK   ]W    +             { ch/qos/logback/classic/net/SocketNode.classPK   ]W?-    /             h ch/qos/logback/classic/net/SocketReceiver.classPK   ]W[bn
    /              ch/qos/logback/classic/net/SyslogAppender.classPK   ]W=C  F	  G              ch/qos/logback/classic/net/server/HardenedLoggingEventInputStream.classPK   ]WT1R8     <             + ch/qos/logback/classic/net/server/RemoteAppenderClient.classPK   ]WӧnD    D             I ch/qos/logback/classic/net/server/RemoteAppenderServerListener.classPK   ]WTFU    B              ch/qos/logback/classic/net/server/RemoteAppenderServerRunner.classPK   ]W	  !  B              ch/qos/logback/classic/net/server/RemoteAppenderStreamClient.classPK   ]Wl    ?              ch/qos/logback/classic/net/server/SSLServerSocketAppender.classPK   ]Wk    ?             
 ch/qos/logback/classic/net/server/SSLServerSocketReceiver.classPK   ]Wb    <             v ch/qos/logback/classic/net/server/ServerSocketAppender.classPK   ]W!l    <              ch/qos/logback/classic/net/server/ServerSocketReceiver.classPK   ]W      0              ch/qos/logback/classic/pattern/Abbreviator.classPK   ]WTܝ  Y  8              ch/qos/logback/classic/pattern/CallerDataConverter.classPK   ]W7  4  =             ' ch/qos/logback/classic/pattern/ClassNameOnlyAbbreviator.classPK   ]W	    ;             ) ch/qos/logback/classic/pattern/ClassOfCallerConverter.classPK   ]WG    5             (, ch/qos/logback/classic/pattern/ClassicConverter.classPK   ]WAS    9             - ch/qos/logback/classic/pattern/ContextNameConverter.classPK   ]W{D:    2             / ch/qos/logback/classic/pattern/DateConverter.classPK   ]W}[  G  <             Y6 ch/qos/logback/classic/pattern/EnsureExceptionHandling.classPK   ]WO    D             ; ch/qos/logback/classic/pattern/ExtendedThrowableProxyConverter.classPK   ]WiPl!  /  :             = ch/qos/logback/classic/pattern/FileOfCallerConverter.classPK   ]WeZ,5d  d  R             L@ ch/qos/logback/classic/pattern/KeyValuePairConverter$ValueQuoteSpecification.classPK   ]W^`\    :             0D ch/qos/logback/classic/pattern/KeyValuePairConverter.classPK   ]W;@ǲ  w  3             1J ch/qos/logback/classic/pattern/LevelConverter.classPK   ]W,(h?  g  :             DL ch/qos/logback/classic/pattern/LineOfCallerConverter.classPK   ]Ws  ]  ;             N ch/qos/logback/classic/pattern/LineSeparatorConverter.classPK   ]Waj-  S  A             Q ch/qos/logback/classic/pattern/LocalSequenceNumberConverter.classPK   ]WLZ    4             S ch/qos/logback/classic/pattern/LoggerConverter.classPK   ]W9Epf    1             \U ch/qos/logback/classic/pattern/MDCConverter.classPK   ]WbLq    4             ![ ch/qos/logback/classic/pattern/MarkerConverter.classPK   ]WI8   .  5             
_ ch/qos/logback/classic/pattern/MessageConverter.classPK   ]W	.   7  <             ` ch/qos/logback/classic/pattern/MethodOfCallerConverter.classPK   ]W(\)    9             c ch/qos/logback/classic/pattern/MicrosecondConverter.classPK   ]W;& v    G             f ch/qos/logback/classic/pattern/NamedConverter$CacheMissCalculator.classPK   ]W)  
  =             i ch/qos/logback/classic/pattern/NamedConverter$NameCache.classPK   ]W".    3              o ch/qos/logback/classic/pattern/NamedConverter.classPK   ]W  Z  E             w ch/qos/logback/classic/pattern/NopThrowableInformationConverter.classPK   ]W>  
  =             y ch/qos/logback/classic/pattern/PrefixCompositeConverter.classPK   ]Wd;I    6             ~ ch/qos/logback/classic/pattern/PropertyConverter.classPK   ]W7.  8  :              ch/qos/logback/classic/pattern/RelativeTimeConverter.classPK   ]W4  ~  J             Å ch/qos/logback/classic/pattern/RootCauseFirstThrowableProxyConverter.classPK   ]W)  D  <               ch/qos/logback/classic/pattern/SequenceNumberConverter.classPK   ]W19    9              ch/qos/logback/classic/pattern/SyslogStartConverter.classPK   ]W4  +  J             # ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator.classPK   ]Wn  N  K             ϙ ch/qos/logback/classic/pattern/TargetLengthBasedClassNameAbbreviator2.classPK   ]WC  %  4              ch/qos/logback/classic/pattern/ThreadConverter.classPK   ]W\    ?              ch/qos/logback/classic/pattern/ThrowableHandlingConverter.classPK   ]Wv@j  $  <             | ch/qos/logback/classic/pattern/ThrowableProxyConverter.classPK   ]Wܪ    )              ch/qos/logback/classic/pattern/Util.classPK   ]W]q  8  I             ܸ ch/qos/logback/classic/pattern/color/HighlightingCompositeConverter.classPK   ]Wo  @  9             Ļ ch/qos/logback/classic/selector/ContextJNDISelector.classPK   ]W3     5              ch/qos/logback/classic/selector/ContextSelector.classPK   ]Wў_2    <              ch/qos/logback/classic/selector/DefaultContextSelector.classPK   ]W̱7  r  A              ch/qos/logback/classic/selector/servlet/ContextDetachingSCL.classPK   ]W~UT  a  A              ch/qos/logback/classic/selector/servlet/LoggerContextFilter.classPK   ]W[8  
  G              ch/qos/logback/classic/servlet/LogbackServletContainerInitializer.classPK   ]W     B              ch/qos/logback/classic/servlet/LogbackServletContextListener.classPK   ]W	?&    ;              ch/qos/logback/classic/sift/ContextBasedDiscriminator.classPK   ]Wy`!  k  ?              ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.classPK   ]Weq  k  7              ch/qos/logback/classic/sift/MDCBasedDiscriminator.classPK   ]W"  	  1              ch/qos/logback/classic/sift/SiftingAppender.classPK   ]W  q
  +             S ch/qos/logback/classic/spi/CallerData.classPK   ]W
x$  n  3             a ch/qos/logback/classic/spi/ClassPackagingData.classPK   ]Wk
&    =              ch/qos/logback/classic/spi/Configurator$ExecutionStatus.classPK   ]W-@M     -              ch/qos/logback/classic/spi/Configurator.classPK   ]W  
  1             X ch/qos/logback/classic/spi/ConfiguratorRank.classPK   ]Wm    -             { ch/qos/logback/classic/spi/EventArgUtil.classPK   ]W}o  +  .              ch/qos/logback/classic/spi/ILoggingEvent.classPK   ]W*&    0              ch/qos/logback/classic/spi/IThrowableProxy.classPK   ]W?  {  7             
 ch/qos/logback/classic/spi/LogbackServiceProvider.classPK   ]W"0  V  1             < ch/qos/logback/classic/spi/LoggerComparator.classPK   ]W     3              ch/qos/logback/classic/spi/LoggerContextAware.classPK   ]W5K\0    7              ch/qos/logback/classic/spi/LoggerContextAwareBase.classPK   ]WzJ   s  6             g ch/qos/logback/classic/spi/LoggerContextListener.classPK   ]WS  
  0              ch/qos/logback/classic/spi/LoggerContextVO.classPK   ]WYɳ  $  1              ch/qos/logback/classic/spi/LoggerRemoteView.classPK   ]WaLk  +  -             +  ch/qos/logback/classic/spi/LoggingEvent.classPK   ]W$2    /             82 ch/qos/logback/classic/spi/LoggingEventVO.classPK   ]Wb~2  w  8             l? ch/qos/logback/classic/spi/PackagingDataCalculator.classPK   ]W    -             N ch/qos/logback/classic/spi/PlatformInfo.classPK   ]WhB,    (             WP ch/qos/logback/classic/spi/STEUtil.classPK   ]Wc   y
  7             0S ch/qos/logback/classic/spi/StackTraceElementProxy.classPK   ]W5	    /             X ch/qos/logback/classic/spi/ThrowableProxy.classPK   ]WlW
  v  3             b ch/qos/logback/classic/spi/ThrowableProxyUtil.classPK   ]Wu	\  U  1             m ch/qos/logback/classic/spi/ThrowableProxyVO.classPK   ]WE    0             s ch/qos/logback/classic/spi/TurboFilterList.classPK   ]Wc    9             w ch/qos/logback/classic/turbo/DuplicateMessageFilter.classPK   ]W
w    9             ?| ch/qos/logback/classic/turbo/DynamicThresholdFilter.classPK   ]W}!    2              ch/qos/logback/classic/turbo/LRUMessageCache.classPK   ]W/,h  +  ,              ch/qos/logback/classic/turbo/MDCFilter.classPK   ]W>rcN  s  4              ch/qos/logback/classic/turbo/MDCValueLevelPair.classPK   ]W  Q  /             } ch/qos/logback/classic/turbo/MarkerFilter.classPK   ]WSD1    1             ґ ch/qos/logback/classic/turbo/MatchingFilter.classPK   ]W  =  P             b ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter$ReconfiguringThread.classPK   ]W=ZL
    <             l ch/qos/logback/classic/turbo/ReconfigureOnChangeFilter.classPK   ]W  <  .             " ch/qos/logback/classic/turbo/TurboFilter.classPK   ]W    0              ch/qos/logback/classic/util/ClassicEnvUtil.classPK   ]WS%<    6              ch/qos/logback/classic/util/ContextInitializer$1.classPK   ]W&
     4              ch/qos/logback/classic/util/ContextInitializer.classPK   ]W.    =              ch/qos/logback/classic/util/ContextSelectorStaticBinder.classPK   ]W
  a  :              ch/qos/logback/classic/util/CopyOnInheritThreadLocal.classPK   ]W/3	x    :             k ch/qos/logback/classic/util/DefaultJoranConfigurator.classPK   ]Wv    7              ch/qos/logback/classic/util/LevelToSyslogSeverity.classPK   ]WR    3             ^ ch/qos/logback/classic/util/LogbackMDCAdapter.classPK   ]W|6  d  9             B ch/qos/logback/classic/util/LogbackMDCAdapterSimple.classPK   ]W(Jc+    0             ? ch/qos/logback/classic/util/LoggerNameUtil.classPK   ]WIK    =              ch/qos/logback/classic/util/StatusViaSLF4JLoggerFactory.classPK   ]W62
  3  5               META-INF/maven/ch.qos.logback/logback-classic/pom.xmlPK   ]Ws<   A   <              META-INF/maven/ch.qos.logback/logback-classic/pom.propertiesPK   ]WnD  b               [ META-INF/INDEX.LISTPK   ]We                  module-info.classPK      V     PK  F|bP               META-INF/MANIFEST.MFXIϛXGȢݲFl3ٰiaxfafP_Jqj8wP*耦Ma]}]a><~{I}޿ct ??#pz͇kM6Ax޿{N
JAՆH-!m
BtdL;"
`@u
l?Eжߙ"_o>iXo
8,6G$3i~dRUKkϘKo{ 3	oj0¹jN8jjUALni)ZO;~wiw5p.xn	c
iz1F3>0j9n_ds4{g?.K\3?Id=cL`+_mv@XR.)a_ic#f=WpD_w
۴4pH#	!
uAB~}]T6xjׄž!vr&?:3'e
{)ǻ8s=i
x6ogr珘6/\eWJ{W[O M6Ou~.*s2#Pmaortx(PZi2ڵ!${KrhS|u\5u9{ߺ鎧3V	սjc<wFٯ/9w#,ctOcMSrcŖIήzCövGڇ%qRpE3 7
X-w]7KM`\+o *by #$fŜIEՍW,V+=Ɲ#Ͳ2^vf5`8n(lrU
a}n9
S&RƧds)POYHal%dߜ0҇P7:N]~3-~F?M?uqK1Zlfr[LR:fr딼59j
IʤuE qyBr!gigʂrݶ&ՙUŋJg0S17s7Wy>9z*&OT
CmcELotyYG
fr%gyUK׶=FY TY4PC`TK ><~쁰ƕ&u,`f6HIX"SBbq.WZB[B@NEck'z֏fs'Y2bt5
]^BFIoֻJj+PQzRǱU+iUVḩ"T%^<ے\]+ڬې_FeAG$U(=$
*:"]dkFϝ;	ucgSѰ&;h5Zlr)ȚbOes^&hyR9spQlw6(o#吐Xm4~}%,άH!%aqq Qd٨v_+Y"|_1Ŀ<ln6jd{K޷$YOg[㉰/V)#wm|/ol>XZzVM8ˈY&a}kL
{4W0Bn<].!uG[!N-W&׫l}#ug(uB`|U̦ղK`䒯xh*M3:	uakb]'OeR@Uږ94w&a0+i_s/+oǙ	f߷ԭxZ~8@-`Ht5}uFCwcg'qHtMX:QU*y
tŚ(M3,ZAGGXk
W"H>}
IPaQªmw	nC]r82n(:"``	"ǫ}9bg\/ʆEi>^@RqYab?JeSْv=!Ơ,Ofw++i@m
qJ85%U#':gl[WS>/kK~|4DIJVTn%l*0B-	%WG?PK]E?    PK  F|bP               META-INF/CC_JCE_S.SFGh-YU;a4〳q9ꪾ]Lq7H.|	>/oЯ_g:~,U}{VaRoZ$g	J0OvNB뻓|(06vHYJ$|T{xiIP]a|=W0[\ߨkրO(n~y}	},RGH}1\Nauv;z/o!=
嵩.'ڂz
~bA>ϝ|3w?lvI3ͭcڏn]}tV(CR Y]^!հ+.AL >m^(\eXq&epS7$m,̮YH-{x!'BؿDB3$5MrM^jK?qJGc47;L<n)
_>a7~t@85BƑ C?5̞4j0ޮ[L9QhY*)RO<RL\qExWMuTu=u8V',>bk=P>7,g:>BYqU^Mm?͂
"h4tC]|<;@ȃ6;wJ(rɈ<2OCy-,
H2Uѓlf817)ocMsh40j67c#GM6fOKڞ^pumrc[U{NvB5A9Wn*h-ZYV^Vwɦ"qɕa8X1-vʮ'_o"@1%3\Fc:6hGlI.?(M"Nty:xg':ry˕$O67Toa;x(lVdSѧLt9紗&4n_J"آ<w!k/ԙ)V5K̓}?.?&b##t{
H+v]sMF
 \R*m[GtdeTd!
Rts
>Rzh_xӶ,Nfյ
w$r|qLK\R0h/W
)ATn(E[Fw䕘S5c?ܘ.*W	_"k	qpBښZQ@Z3ϜS
wE:H8StB/zQ:.{\KAԦPM>f̮p浉~5	.+{!nH_E,it^#7аk͖vQ-SmyVݟ<%2%̈W@>sX#C[uK_Buym HG%𴽗yJQ津c{'gK?ׯ
F# A'l#,Fﰧ]K34POrtZP";]Rg{߯O*-N;xxܔuc<v)=KGBFƆyj<_Wzn>`fB.9p5S 0g|PlG~_MaTs.c`>G &um7hD#^_;4#_p
Du:$*$_p5+xGh64QrJϺ1,5y7o<~tK<2˾uP1<yB{y)×S+~Vi_n1'fgE9A!0h6/;F4~1zܢ\?B<ppcH	Kk"D|j)W˩IF?WژpG!
.lS7j1ƆIUa&99U8IS\#e}@>В38
ݫ_}Q@X[Rgxҵiն0RW<Mٹ~*y[DۺDÉ6 Lq##vz)X[;"q^G ~}9n*ZLoGTH!LݜsV*D-H2Vr4u*B`t8ES
ɜk?S-^쎵vAm;n)#*
ߖPKYxr  n  PK  F|bP               META-INF/CC_JCE_S.DSA3hƩiA&5Ll	m,Lg41 LLL@@,X'rp1	38LΎB 0g@bNcNI4HKX$4O73($5X3/P@$-,XVRXn(c R,,"h 'k`h`bdj`n QFH&@XF GzsSr>)lLKg}!DV?
k	G>o~V{ff"NM3k/
LZneNpHpɛ]ߗ+&RelEx2"sDZT]ڹ2iuhKAN[};Yw'eL^Yj}uojL˲e
W-"%WM
Q`\QҘauN?6vvC%zՙ׋̳fMYK)U6NdKWYw[t9gĬ1̺w
Z&~^_z좩i?ޫlzr
]WY_L˴WR.t^EG;ۋG"Mʹ*]C	EE)g$;uOQ@+߹BrP'FFf&v~`l
32ga5`R e	G_N^0/bQQ.3)cc.tDbu-7y]}l$z4O͚^~75/ q$3(Llhj`jdddhbjd˩C}x4RJKj&5 ̪eK4{{7A6]7lTtuP
ikѯsѺA$SZK̟Z@m?&:DY~7|T0ipDoi'^zIYrE:=!_ȚI;n!^m{1f;wVNYի>ܶM遑}D?+dhl)VGCLxyNڈUuj<XNN{҉y)&}TŨb}f}+'th0|Iiq
ա)>{jAlk-k_pXc?ѢymW$Vu~ܗog~,|SztwhY8hU}.T|:_^QU"԰N^$qHKtJMYg؍YY@YY|HYQş؅/n8VNfwYY
@E@Q:(1/[$#$!ʒ!L/%[y(P|i͏KR/]k柇ԊfsY4aƗ*ܠq Ri5,z )+w{wFoWiL"OD:^q{}]l PK,?*    PK
    G|bP            	  META-INF/  PK
    G|bP               org/PK
    G|bP               org/opensc/PK
    G|bP               org/opensc/pkcs11/PK
    G|bP               org/opensc/pkcs11/spec/PK
    G|bP               org/opensc/pkcs11/spi/PK
    G|bP               org/opensc/pkcs11/wrap/PK
    G|bP               org/opensc/util/PK  G|bP            +   org/opensc/pkcs11/PKCS11EventCallback.classkYƟ~䴶ڞ~XVcjv&5MƱ
Ii,,,,,^/^A_ghO-js~cr|=sȷc 6EVbĐİa	c%.I\HJ8-qFĸe	I8GN@fg+ЙVj_	FI!fܼkϻw켛flwޙL!еlfBmcGBdMn&rYn+6*ZT6b~/l().0U8K
ڋfmvXC@v[L;to6eCN;lw4i02{aQvKh	PuT)	wlMz/	\
BєVpTY+I?VٯZX/okytׁi
VWZPZ*e-H{i\^a%ٕ֨AӎFV-(n'fV)׻ޒ}cA||Q1 4)Yϑɗ|+q'F4&OE_9Kg<][^ef+E5b/Co`hinAO_S%LSUO/o)AN=SϨIfZj*ԪMvviաUVڣUVZ)zժO~|#vPKi/  /  PK  G|bP            0   org/opensc/pkcs11/PKCS11LoadStoreParameter.classUkSP=@K$Է VJtFGL-ԄIΈ?7&A|=瞻I~HqXf',sS8-Dы
ȋx)bSDap2LYG-Q<`[fۺ0W5V9V7cZt xa̪ꆳ:_λځA-kVSsċ'#欛Vn:lAi0$)kFU-F#"mST3j2CXμåΐNy9ݥv&UkKRLQ}Z\~rw\#t;R..om!,A}lO$1ݫ}/Uscv#`PnD}AO툼ͣ)	WpU $ƈQIe	ŐVDM~̌)LS&;P%qNVU5u.{e;UR6[0{FSC$%w6cu&@!ǔ
T!w"ㄻ Փ5ZRNv7an"JQ>L0:|s**⹩~;E!ex}
xQD\=fOvr@X/2b¾%XL؇^(PY-b31l \ |]G?{xp>N?Kd')9)bPo{9菽4&i|%PK'9     PK  G|bP            :   org/opensc/pkcs11/PKCS11Provider$PKCS11CipherService.classRN1=΃餄*6Hx݁Ь*Z5Vbg&fbfF	San(
)U	sc] XÜA[(Z Fma¤i
K倷Ep9u*i˦P=q*O'CKaDinpŏaށzm~ߋ!DnXnzz=Q<u۞_Bk^KFM)dLy f!KʨXeF/=ӓiK(_hzq,qfXyeBlEaB#ƪ3}6E>4*tW	@6`/,.-O.cĬ˚Y9
Wȕd;t*"\"E5ޡu'=PK[7    PK  G|bP            D   org/opensc/pkcs11/PKCS11Provider$PKCS11KeyPairGeneratorService.classR]oA=E\`k?DZuCĚ&&iҮa:3xE>4e[,6dfܛ+ ;x㳔,Q6PUw^}q3:2{=!fײ^H#CCQ(ZuCd(v{O9[sgp£Y<d
kcEG5cuvynE{!lr0gI0P5Eb#X]j_%!-sG6Am+%Û{ƛs+twC*!rq`2>P]P#AKVK4	~z55vEY"-qbVm_ۚ"YJ}҄
`@rr}D{
b5K`O7
6
PKL?    PK  G|bP            4   org/opensc/pkcs11/PKCS11Provider$PKCS11Service.classUYSP.m4ŲHE(KRŊ
,2)P%$9GxZ>dr|sn~`a@@+9cv*9
(&$ǭ:Є;w9bSlʻüj1^$}YzVd˚bt͞aX
왚}(ƾSQ)?Y"k޸2nٲ6 /o=9obhHٲiy=Rg8f¢nuJDCq<bfV2n)R~GQie1FecOT<D,"A	D$ю"|,p35Cg
D(.eZ64=TѨSM̙bT5ߪ+)לCh8󺮚nH3tWW%0dB2H-{eW4%gUJ8'4<-u%e@yXE`^w%%ԳM,UV
	2hsO
"4>ҕ1MTT:Ԑ]\CUjLYeګBtѵHl!Iz:t-᣷84<22vp#:qzENP5Y-[/
z:Juɑw |A33Tqb7OhGp+%t[4E8<襬='V')Z8}/Q-#@OC-˻xQC
`Oc	PKXB  H  PK  G|bP            =   org/opensc/pkcs11/PKCS11Provider$PKCS11SignatureService.classR]OA=ölnTiA4>1!Acu&
qXf73~
^|^QĻ&Z2{枙3 cك)5puqqY\<d|!/5^ZàӁ	q'\AhTGB;	)ϲT[+4L7]ٍgJhygv"|܀LuP&
ȴZYjV(jȤ0-H}%},C>`_ΐD~a~-^⶯E(@FԆWJ	N10<	#~e,ca783L7Wac%zYJ,OL-4?B(x+Of'`߆U7q벦Cz(:8GP+~d#p*p*%(Ne>?yx PKBA    PK  G|bP            5   org/opensc/pkcs11/PKCS11Provider$ShutdownThread.classRMK@}Ԧ۪V!
/=P}I-m?JK܅f7|{p
JX1Q*ذPNdG2c8N[?Iҡއ:U)Ci<uCY9E3._0I$l
"\2*6v8j؃]'(yP7Lao_*%Hh-5w'	uGRSS:ԖtxÑjNsiXTG:E5:[nh~A}<_!mO^Q4􌅹p!./DPK4  +  PK  G|bP            &   org/opensc/pkcs11/PKCS11Provider.classX{GzNM@JRqYiȎBCJ"Qp	f56JQ(rS@}U mc-@oZfw%˖b}vv~7Hɧ?
xxQ.zG<ޢ@[%+&on	%Sƻn{}b> A!a	,HHOO)،2>-32>+s2>/2E_/+e	_U_u1oHf箈c*<*1#x@b&Ɗx,(xOxJO''RDbM}v48z@P*;w)D>6-ټ,Tkҹfgs63y+l\/F
kf*8qZɚl|ʎ0:6*(;I
RDwJϗxw<=tT)H</|A+^4D┕)qe&&<"/8FnMVp{`Wdw\ۚϓ`+O4\3]NDyKϜ]}%u}zYuIڵ)4#%]rң
)gG<my7!t
zTx]ݸxJ/VɠslYq)K5MMCAxagf\$-&	"mjÀ/RF6ݹ^rs)ND78{aY5ŞP1i&%H;pFŝxc!IGu33$qO8S1{[d5NmX%/?OU$h~֋5=[*m"mDxƋ~k%Lų_*^XWݼ*"~
ClUeDrE!v	BbS4c:ѧP[^ڪ
UOO>2k3CXT4i7M%j
%-߲w<jfU\VCaiI&At|Vr4%<آ+T<㫤|8aK	IvWNx5,aMRQE45KVgEsx^E	e(K7ʖm#'*o"~O],ںҙm^p/JњkUԴ'&G" v)ht[VnܶEʢSjVx%wR5g8Cmo>|*j9nY5YX
E: o[vjT%78-M٩m6x&y^XPݬ7@	ȮCTO"#~=Ya'
:ŴB5\owU%VQ֩[Kq)ɶKwIt<o¬-+[~n!aht݄p4,ͧp{m毪/]7wjH7{XhDyf4%'X'KH!Ʈ<ڢ_.UKzFc:8:qzGaֵ	(툊
pO w]C-yVͣ(5WIpzr#v"Jv2\>3-bI	p{h$"j%ad/FwUNh
ڹ
_C'n8%fN?Ei/6Up<^BfBh7j
#75 d{ـDAB.
vHGKT0TWy-j(^^
اRdQ7alq')^>7w"ʁ$s]Ny	~QWhۨvWHze\\M	T|	2mD`v-ÏM-`t+UNs!	_IAOb߀$NAWiR{:@ PKp    PK  G|bP            *   org/opensc/pkcs11/PKCS11SessionStore.classW|Sm[i*fQfR`e&6r䖂ν͹GWsS| S9{率{sI߯sw|'O# z7pC%:N^˻yyx/nT>ޏ|?f7Tx0OqV?qf	Y|ҍӌ]~7f^>n|w#/2/N^K.W=׃σ /saDAfpȍz^(81f_Su7Vy\)7
t[n\or0.|<{n|?PC?%~@h)-:GƮ]F2!L<4W3	')D#LKKd("{ZZzč3[tt"'Ez4۵DO$rUgZ2;wh=LͽmDыyz?#6L=jn-M=BtODdRO'Y&$ōI[1>e8+v#xZ_0ܠ6i}	2YzOTO1Ov	=&IHlEfJdbɎuZLWdPwpRW
1R|2#'Se(xV)KQG4addBǣIe<lz6ug4&d^/8%+FYL*)\G2-TlU=*6JW
*6c!*~o?WR)LfS)#mѫQэ+K3M}``<cK/dc i@lU+Zo[>N@\?/x̜VSJFccAqj6SF¿9}m
&=1U
ϫ;!0Y*XοUU?^^d'SxA-`;d`@t:ē]z4p
$w7مԵX>
/xϪB
*JUH@K1ɰm'c-[Kc9@TZϐ-4wyJ)<%*̟N
ɞ!UvaiOȔ6Z(f,D@`nkI|nU"0YS2ұB:
PUQ%Lj\asOSE
΋)SRc2;k=@Ѣp)xQK<Uc&(
vI񊘡sDwlAFNrWhI<hx$ DU҄vF7/vٌ4ȓ@8uz
ZZ	|^*9PJq0L4,Pp"!Q?IɐL\46x`;񩃆FjFO/kw`e~ GJ4iեmԥ^H-g6q#5~-n1H
}CӐ3aAVų
|]c;tj\@:<pZ#'VPbhyFbJS0Dҷ[($'YNl	q$9ZQy7dU]q3?y$FR=FIޭb72]͜ɝS-JJRB:,	L%1~vA\'<mh;rX4ʝbZ=teZ5Z
:DH<
^lyqW+x֣ဍpvx?W1=PYa7a#UPd9xs3Mp~ӳXD&	H6/da;}	z.@IE,/CjrݓQ*3~0rr<|f1}UDw06%hj>OvgW	jvAL+2\KBFnq(-^m&l1ܸMHt<(P!B 	+u.b{7iQq
	F}m(}8cEu(fp>ADs1KڛZUǑ9@o9Vߞü}l~炐
B(Ok7Ka4&]L#k,ZʼVqNhX"̧QZ|~yYJ}.\0ӌu%@[¢򖄥64m!)yB~;UmWY8!vv .R%'DW,D\ cVWy5v
:]| nYB}Zy^SRW<j)4IO$fVGN^46oRVP`U0-I݅fs
Vycz庐L#n
Q[WA$[g(%
`?YJkD(Vn֔ks4b;-ڶ,4mt\*lYwj?z})P٭Ϸ>?rmWAHT˛xЛD	w[rUp/juAOW+xlX97,ZFv3aiD`yȫڷnjj+H`p#n*oi,͸>53W>Go[ˠ+Fw:څwRN"J_Aly:يzg%=a'+i?J$*PK5kʸ
  _  PK  G|bP            =   org/opensc/pkcs11/spec/PKCS11DSAKeyPairGenParameterSpec.classTYSAɵ$Y( #Dj$
Wa'Ԓ?ʲ̄k?1x6B+<!<%X X$xFEVK-X`A-!lL1[\̀3ԸAw*wJ5W_֞p[tn.YqJYy-.o+/3sMG..~pjNFʝccʇfuޖ#grΓ)kJ	ouŌN0ZtcF8\'"	<[Uqi}R0gEuzqZ}謯Q`[H#\2WR4oɍ)*3MEotƦ^ȡ'TMxiԩ!:#SȤVm6:	t'&!%Hp:,xm:!Ap	ܩL*f"͈*/fӅlv0ן^&0?\d
D\X ߭`0z|wk8_Pn-S7molP;VNe=lQW^T{I"^0	,څ A0܅A J`BsB7ThpppU8UF=XV2:>lic8zHA#Z1#f鷌6c~_U?Fk>}|z\MLoGFzTQM)E}fLwo+1a
"PK:H2    PK  G|bP            3   org/opensc/pkcs11/spec/PKCS11KeyPairGenParams.classJ@5kkZ't
{Au1	B_̓CCNҲ|0? qSPT"z|B85|q`pMl	ײd7.	¬l.k=uoã]e&\Koui}h_d<KaS.F7~/^E	,
ޏ,En7	!>x/ڈ@h;A[jN$vq.]PQPK6     PK  G|bP            6   org/opensc/pkcs11/spec/PKCS11PrivateKeyGenParams.classeKO1OaķqX>c\HJUdZQ~qg?e3Tq{sOno`kiıI$`nm3#Ðp>VP#LT+T
)@0+C2L
R=;SQp)E𠴠kJg:N05C?@t=鹣ie֩]'=iG9$0Cc>=Ʊ;GjcZ=ř~
]>v{}~1qX1Ѥt-4@5lTsjQ-..4<exYs!mX "h+`zK]G/`#yL25PKg  0  PK  G|bP            5   org/opensc/pkcs11/spec/PKCS11PublicKeyGenParams.class=M
0_c* Eğ2U\x %F
v0D7B;BiK[d
R?
`kZ*;p50-
6펟Irs$<I^G-<VW"zd20T8p" ~4{{nxnznxPK%     PK  G|bP            =   org/opensc/pkcs11/spec/PKCS11RSAKeyPairGenParameterSpec.classTRAmI &" *EE5*lR;?U>~e7	`":gOwo&
 60`A9"e:-X`͂u5ns }T$NOS=z'$LȰUm
	WASλb^}s|gK[Kuvv?ξ Ilt\9͠;
wqKYO$qrۊbN?r0<lb˚;$!j<u5Fq&R;0fMqFuh15QʓplJBâz
'f8>.ljmVF.-FNUt؆MJ$ϵ6a38G
pӆKfC;A'AA7AAA/f6
W_J+8B 2B:8dVOܫu CgV`.a0rf;hd8vsÿf7lи/*@?v;w)VܣWeWޖ!_TO`!!tX
QrO}S}܆J߂̐éI;)PVl:I`:!cN?lt;mGg#:<FcfFyL1-{yW|-4VSq-h7hYޠ双?6ˣZf&0gz;1|
6/PKR&1  h  PK  G|bP            +   org/opensc/pkcs11/spi/PKCS11CipherSpi.classWy|6fdC1Al+AA!ElZ!YYvgQ{yZZ[+H+ITZZ[{ڻP{3'!J>{wS>8Ƌ
ac!fpxQ-c2B~JOǽP_		OISW0⳸0x:g2xKa#FexD£qY28,3}Q$|Y՘0xW<l_𴌯oxQߔ-f+#㻌3x@~Ę3eԋ19_0_yޢ^d	%N*z	I5ҫ"zHK=KdJE,[Ojt$실m\?CUjGOŌ~ߺ$-lH(1xv>ZFܮet:':{c(&SjZZ$CC[l"&cc1cD|~=	.ʈI[KČK'-$Ӕ\%(ZX3֛@yF֫8yWhIOLqlTQ:r$4e[3#}wEIuiCHft1!vC'6)_3Y8'R|erl:goUt$倯JDRIBՈ
N]|V@ZtE`AE0hDT裡S;
\6)Q'-Q.`˦ddQ(fܶvtuYXѻȤq2B7l.0ɑK@H69<Q}u,Ƌ̢Ջ	Sc7y 	&Oʩ2-VNI)"K9e={(؎;
.VQ7ת	VU,^3^'N4mHtcKәdROZtkAi3!Rݖl0,-pc87Z
;ɣswf]5)Ϻi#CoNK_WpTexˡ*HS7W(xo3hNc=	ՠv;+
K9tD~
K-[HQjU_M#HUO߶$SUFhS9ZFFt'"ZvץTmS[pi6?ק)ǻ֝#)}ofly
B.0+Nм*k
Ҳ(?rzCNe;u=jEJFNSpOޥTGC/1Jj.ؼܝh!Wm
5
eS>b㏨^]"dQ=^
_ýT۵T^dkndpp=Y]֣Ɲ#P6w0Æ)s:/	"@P'Aଲsŷ@`-S=$5.zm0wi%tS/AL5I<[X͖lHp'LO&riE
=@)#qԖq"3V~
xӆ28oa-Kچq{i<̢ܛw|@5KwOhR)=Uq_j5bA+Wfｋ跴LV1Wz+ws\4Wzɘ+=f΀G^A1`\T+FV1<B\NmyF!CAݾ1x1@
:ͣTm	
P}5ct<
t[&ڱeG0y/[c(Ӷ֎7|u1{QLk)hũch:("Y'9қ:#h]|OK9>LOS3[ʙQҶF́	s/wGv
dlI.q
`qh.mCĆWfPBv/QIQaZ|ءi.U{D.>w5rEC*W^xHM|63^Xۣ8C`g|dS6גgm0g-Unbw0f݋:Afz6D[fL)M\$E#xCc
:<rK
O>yޘ[k29yZ{4ZR:
Gq1
U;%ԸK03
Z*îzUZljktb5C,ux	S[-^C,`è~JRܔЄ"<}+L~4M+h9ѥF]G!$W
ӫځzD]^-z*Opczw:ʪѓ2]QtjƒTsKIoqk)<;8qZ+xމaP5qu?JGN::8t\hzy<t́(V>6	{b~tWQ6N(췕%;JlQT2vl\nX}'wf#:/<3vJT\/ɫ{/&oՂeH3ΓMlxY飯N{B֛")}G!.PKq|
  	  PK  G|bP            5   org/opensc/pkcs11/spi/PKCS11KeyPairGeneratorSpi.classVkSW~lX/PjQ Fj[X-E$JJ{5A{߾~:e~L@@g:gY B03{9ycNF#A1\ÐRb(R2$#xI2F%\%,c+^`,^5	h21&ᚌM!ƅeJBu	9	2`HS7dQ`ʰ`H7%jVAMY\R5}'uPL'I+9%SV!b)#性mt}Cw顾LWW!z-;Q`&)-[-SRP8ef\4SGv&Q/o9<5M^h!VQ}C|:Łr>e{xzs_aYY"G7568pDL'3⅏hf*xfb+4ɞ
ZQ+p34]YC5{Ts	Sv$Tgov2aO`hWDOyXPQ]xZq<)xFx9MdVa[8#KXʓ[j8i#-7p[4P%Wѣv>*.^F2TS%$ȟ\4Pr\uu՝Z
B]f:O`-o?S-uO?i.k{Kp.2XyzKFB"8U]Gm&hO|4cF­(%|#%5
|qQd	vOðK3	+ԩdѧdHRWZA'v\,uAC!ʕgdn[WRc7KZYa3<>u;N}TPAB63QwukoqFX2+PjʢUՊQ!jC;+1N[d?$15	t]g
5upsNRކ!Ufx!	gH0OVEFDNzפ'$ݓғtyqnZ{`$:fP`3.Q;m\5 E#s|;EʉQ[Ʀ{8hCXt,<ld(1c-Yl-2Zt2&߰3lw;КC,vE[=fwt
e4U;߃ XWƾPa{ԅcQ~1)MOMgdhm+O<7Agشuw8 ^	=Cz7VC@O?t kHP<e~L`")B͇
W0ih$~BBaK$|7\?PK')uJ  o  PK  G|bP            ;   org/opensc/pkcs11/spi/PKCS11KeyStoreSpi$PKCS11KSEntry.classTMo@}4q:%ҐJ	!n
|%JJ]g	FeoW *$~b	%AQ𡖼37z
:ㆎ94GIEj:jkXpGܖnڒ3dvc:kc9RN`8wη=kwj4s	mshw|!O,U/iOW=K%`RAym2(C-y
DB>exULH`;d.:ݒs^][ha@0?~:1o.j0pE
6"6\FZ[I?uA:6۱^pGjxPOFbh+S=랡:xMP*HbX%}
	IRlL	$(IɏӛhV!_E͕>yק#abT60\EQ	?#}ǼgU>k.YK4I:5p,y:L5`LPK^D+  
  PK  G|bP            -   org/opensc/pkcs11/spi/PKCS11KeyStoreSpi.classY	|u?p	,`ia [	a@Cݑڕp.؎ns`QFvm&M#=#mof/i慄ʻ/ZzZGWPߑ˷r ~_÷
߭B{:⊎2?g}s
c!R.%b?o5 >?j'a\	/"r7QA~:?~[2Yokx'wՈFЈtŕ M;y? ?o4ұ	o&]G MdtfϙUhO	Ѽ h6Z rY$ce,v},hXG~ђ ݠoj4@t:F:LZɞzAU|wScZv:ȏibbZn
к ױQެڨQ0cGK5;:rS52-I3O2CLgz~3k5}}TGzƝ&¼;[Zw6>ܲm-{ui)93k&&3㉸!,Q+T6,]ѶÑ56)H:sEX>2977eY=d:kuV
wNy<n6sdc3:=)3I]
R=M.dM;Sj
7mDn3ډ=1v庽oK:fN̙clHӨQ޳R/6+ǦjǪ9RgZ|&;ȢM}ɘ՟ce5DXc嚓+Kt'bfnOg:GZadI6\zu~tzDltnшqg
L ݝNZ	+jG9'ƛ[6yFVxJ2^3"s	@A%3iRf=l%7iPPSҙL	VtJE}6Ӟީ.X;2eRSCEF#B2NfW.moVQc؊ls2a*
Ֆq[*geٝ
㍹ ] ;͌ceX;H1Yϰ_fKWx5iw5e*7*Bб&DqW>ןϱe	[-ڿ3m	KJIEL03fǉkϪFaXi\A6Œixo>jk40pgrip}:B/R+ams'̓}t&lO
T8J
K%d3
F?t.v3t|lpA;h'òeo()nb}j]u.'iAӠ=rE</sk018	Fbl
_±6٫|:4:h!L<3
n1l"3hdtb2zDArRY`>lH%u8]na87(#\wl2(I}!!Z2!f{zsK̔<MdŎ\j!eȘNv;wto'w-aǭX:.&Y@SaR斍^uMr~kLZzaT|*ןc-$25(GyN:ѺA'lnn	6-[y)!-eG	0},V(^VMX]|>Rt{9>j=xYVנ~NAH>H*L6+oY|șe>Ɂ1ryT:WX"l:a*䫔]eʶx8lqƺ+ȈT>U~%NdF'/dՑUFA(uD:h(Ǿ|̠ӧon2G&>M=eYMq&}Ơ'dN5Tě^kko'1f'@o>`r{gw:W <lqY{ָFLOgcq,">Nt>w2(C|B(fN0V`+hMqyH+/sK"\)W<іL+-/uTzњHg[O!￼紛yM\Hqsr<˥0ֵpb:08NҶẘ==Mʵ0|#!'z.)}f(\yVE3(DN|Fl6oeFi3ѧE|:0xfGH2SYP;Y-s$Yl莺$%-uDYRƱxx\ *H-dҦ@6i{9Q=br<U5ɜjޔQ	"JjQ[d\1	3^{z3B2Z.SZ78cVq9S{ۨɧXŇc@."bIHWo`.'r-ʰui;c\r4*HD)HǅȉES\d܏.s)="-USER2ެhe
ɤ|pFIe7B1K0V'LsD0;RcTe}>$"n4&_b4cҟq'ՁPqeUMTR;쎟ˊ8g#]뷛rypUT7?D&.,F
 /
i>A?OQ-q=W~܃!CxM<٨"+cJ#osj::0K/0|
)
OQ^FT廗K}
^Eu\K0U@oct3|}O:ʞߏcjvP!佈QL+4tvyk|0fG25䯜;>/LzoF+%K3UM?᳼oWt91$bļg {{@3/`#yhG?+wֿ`װ<70;jq{CE,}blnxFB^dK>CXF儨.bvS-)BAEBUGC?0W^ʆBz?N=+C``+!,Y!ԫ$v
<øJBx.iŦ5sGyg:|߆KF
ϾTLܻXϑa١F0#%&k~_vrI HgokgK|SA爬/РrlC7fǙڙU@\//_W%<cr`Khr1¯9<w}oKA/KnRҿV&@uG-~'9E63ԯd>`WaQo-[
hVvJԧWLN!ƗY<6L	yK{l.*m8vGp4$# E;8N
|
/oJ};\yæd#sm]vv3:1wNg2z\~#K잂JXeGh߅t{N*mvx,<giehx=%2c#NUƤuP+Cլ)T8UE+;smK/~' R,<)H+/
̄ʘ4F~_*k+ɍlQ}rHuNb-<|Gx=LW6<6溺`	s9%FVz
pfX$]yY
;K8̛@{0̮!D,Y/ud\V<%ƕ+P2f~"n@at=˯Dp4z#N3 M1hs^s;ʁVaW'cQ_C7⢐o}M|)eO=ZoZIG9T5U3bbҤ*4"o,ƮT*@.*C\u
xKP2fPЦP0?=1!hk
w\2wZWTpV
+|,Y.Z+xUHF
җZQ,#LH7xk>&7JZwРu)_ 7֩QTU\@E,z!|]qo

&:T'IPK=g  q&  PK  G|bP            .   org/opensc/pkcs11/spi/PKCS11SignatureSpi.classV_Wv²	%bؒ}@(!ISB@6$@b	v؝.>HV>V[jUFMlI#j}U姞sgvw{=s~*nÃ{p3g=7>!Q)sOzPz_񬇴?[|s79b5/xzS|2}n~K<!732^GXO?O˸AӼ/$VҜ6zR¦A34-=tZTWWC{G82$h4Si3%b#餑@39K;,G爞Jfb24~HJhHv1+37"BT07ErkIGx\M"T1/P#=bZژ #Ft+MR|+J{zXt@חwIp@P*X' ݏIlno)ז^.m:d^V|;7wbטk%-?G&Z4QHIk!DHcIh	,1El>	w-YtxZ"jN	WX t@?xs)ܹlk7Ϝd*-Mi-@{((9+Z޶`z'=SЏ
2!g(*1`r 0ot;wn+޵|>%Z5F;	FP`54y_ uLDxJ5Rj&XL-
e	Ug"	;lPMwg-r@JTA[uL-nRUަ0rf'l![	킨S1)خH>`+8>W
~UV[\Ls9tCAS{֦]^݋Ii3AyD鉤MdfR]L~ ]?q:d?/
I	[ox_A'ڼiٽy-%KƳ.sH;,eKxCL޶-8_i|Qhq*y
%W"7QEK%XNMwlYP)!@-Ad"z"ZBx^Рuw4c؇Vtp'[\%)JSJ&lĴ%;:XȿEryCaJjm@{'pک|\)w׆ Zz=O$zV\%zJ\jEZarQ;!q #-A/sLez>O`ړ@%BBYTgQf(NQ)Z~4TPz
TP"dW^l2	F 5jBAA9)A	9(ZS k˨;~簖%f
چD[ǩ]z_-`Ӣa}so;h<ZÿU%4Ih>mossk-\6.r!ShwxBWd2t(6gq+_eӷҪ[/	r֔pylvxgnա_س 4ƸxDWs؞.Wk
~@CHl
x1x;3X
>^}|<uqwX>xEqeGe˛n
upIѨ:tAL6R%<gGu}pݘ'\EdÂ}rztw;\
DJmlp0hF"=.&Wu^g=Mɕ1UĿ{-?INZk 6AhJ9l@vǅARMd>"+sX#\407܌Ba4}qL^,b7dm瞘<N]=.REk5~U ~n-<Plw(ѓ]kZ}({M"UPK3q  L  PK  G|bP            ,   org/opensc/pkcs11/wrap/PKCS11Attribute.classuI% Y!b;	Zź]lֲbbHPH#Mi&@pμ}B#7?f{3]? =8׫`5.o;zz.Jb~> 0cz}nXOi,K0ћ^w=6ka]2$I(̊f$OVKY֑YSl &_E˖eBێ!1%`(857{('iYeD9XFԲNKUߚμPp^Ze%9E*GTlCF+D4Cl!!993SĈrɴgL! S$5ԡXNcٜ)CdyUq}Ч~A@d':HNFi,+*BrL۬Va륙lQRƸ)	4]ҊjU9A%1;%C/TĈU%9N)TWᾫo-A	5l'ST0ڀJ"WȔe}M$'mR.y߮֬=
31vt2pܹRwu&`R4@Cjq^IO3}SSOkj N{T
^/M!d5+O
0vIm-#vN6U7p>Wzϩjim]5ՐVwr>M+GƇU8_;-5Ik%-'80t%v
r{S\yVq=(S4xV~C6gKdhw8&9!\kmg
Ze6'PmS\~k9Ql9)M_|2+h՛su6[ͅ׮.hqJ̹}7dt_cnD]F
*tdKx.24L0%
%P!PIex3/\KQC~o$৤c70ĵEoWuaqWn?&`'K`D=66z.<4og})lܓ45OwG`p[cX&k;pZTuN[OcCY!yWIj(Ytmskjۦui:W=\~mYMͫGf{ِw8z\˷;>FoBxyȟe
y;ۑw0N;b<<xn x(Fx/ߏy_@"/!cˌ AdqYgA6|L0D6BbE1#ʸl1ˌ+ӌ#0>|_c !d,rr!G>|drQS|o0&1g1~	瑟dӌA~v?y0.Գ7{Nf|1-pG2ח6NߠF1:F+(ǭ1!}"]߫_K0:.ÃlG3c`2q	݈a(E}5O
5ruCp@/B40nu](
OWUabb@~Q諸>zKc+xS_:MއUǠT(,ڋ:-:0pbɃK'-?pPl_PKD<d    PK  G|bP            .   org/opensc/pkcs11/wrap/PKCS11Certificate.classWWU=L$b{HZZ
XePJPqHt0I׶uߵj[ݾs,[ѿmo&r !ͽ}/:{Ep̉R;ah!c|xDN8LcHNcB@EB_b;8'(I'Z8r2$r@w"Sܡi3r%O:O:('c(l?>>2PwjJT}Xe΁Apg_GxGgWrRrDgNI3Ik>LC]]`Fof+TZ#%kg0S)1Y[[U3=	-H$e5	$OFRiMJiׇTJIDTfpvDN씀1Yo5]T".Zm֕xGIYqH"'{4p2Rb52[ˉ09R:&C<Oùr0J.+'4y<*7tBPy?f	8/	CJ0lV煀dI0/#ڹ`(KDo3ID#RwhN	H번!e~
ϰa5DAkzПqJcí&r s[QgD7DdV9Њ}vj$%d;%_zF&O$x$MdB^|xGĻ.r}pC-64UH@q24S!5{5Ty&I锣Y'xF>#K>q_0l]26Fj2SҔ/zhq`deKb[p$(̧^許^{90x~Qּ6>[DVS1<YIiH(FoN26W-sCG&ݷtFh8i~<#!voHE&Ua}	DlQA8Yܚ!TRFHb<3x\KLkHڮ1%E~ xvwSԼZ|$UT"1Y5b N^Wm3{dvTzUDr:s}niv#n!"J9{|n`ia
WZaύ3k36+,ډWQx
o3-(}8a,DaXi.@YDq}%UWfa*0p9֟5W74&< SmFd`3L}VZ
~vASUQJxRK(^ĆpyT&K8`s6#
v"
JئP	7N[LfUZy󸋸vsݒ
&,nCup&Õ@	33d5e9lی`}l7ٌ@vuބ;vd2V?p	xPnG0Z 
F씪cЇLt<[}.7l.ϣv崛1@#ঙl}5,;VPK}tD  
  PK  G|bP            6   org/opensc/pkcs11/wrap/PKCS11DSAKeyPairGenerator.classTNQ,[,
x7ԶV,,DrXO`^{Q)0QHP9R!GLg3O ci"!n41Q@xwÃ'JW⩆	}0:$Zmn1YL-rɵX./Yb%G\;e᡺pOMA-qtވKҶD$Hf6F_fc=-
#0A V&'F	.3t&Coomr)ȝ!qGY8V01Lo]qY-YP/ѓLQhxNi;f8!%bN`9yWa_6E@q	d2vŤ^aZk)̨Rg
1m`Ny1pWd``v9zGn1/aMp/`/R4Pl&Hˬ^Ј<lFCr;.T^'k\mͭ/Q	G!d|<*H!l?#1Ֆj<ZcJca[Qv5~,'IܔA&%]{8qvW;ΫHZiCؤ_dk$EtUt*:CХ@[c#}GwzVOQ24ޚ}ơ=
GWщIT)t(w?\Uqf gݯ=wߪ]8?ɻAܰ=77 PK՟R    PK  G|bP            0   org/opensc/pkcs11/wrap/PKCS11DSAPrivateKey.classO@ǿ펕*[Ddk	bqqyusA״
+MEMkO.Hf&w>>y~:9Ls30E:iSX20b)qX+H8j06eRij[ov'3oDWB^+ٔ&C*8t;Nm,+ޮo=*ævr#Ǳ{^8uxViΉ+ErTf?QIXec>lO0ѷT(i*(8c~$Ik&c*
%	a)|YHEcbaVfOQϞް~zZ:,a9vGRt1L8pS5,՚qhTYhCnв5-ǘ~Y>RgVԡ\R]8%8T>n 3GC#̛4n61NVFn;02a<PKt^  D  PK  G|bP            /   org/opensc/pkcs11/wrap/PKCS11DSAPublicKey.classNAƿ]Wi#"Eݪ(\hhlp5c],c^jbm7>lFI-|۳3ǧ/ Vʑ7`b㾁+X0c1M%&PH6QxȐefMF
R+TM4Rݷ_1)a;'9ꥳ7ʁ
3BaKd^OVuw%'~૧va5V(sW^i$B[nU	UcJ~Ps<"!Ua`/M/¥߶#veM<#}JEa[ISLb.7Z%!񯘸ik/ۇM#ދP0.ePdFORvzll&f.V
st)LЩ8fq
K5,$ՙqhThw*.jL#5zHu,[qM'=H[9qJ4QTxg-q&K+U?ސqOPK(O  ?  PK  G|bP            ,   org/opensc/pkcs11/wrap/PKCS11Exception.classy\\eBb,&7BTBںaxfgB0UZV
UkZԪ,h[]RVhպխw߻wχ=wfP6RN9upZJN8tNgr:9t9]"NsS/8]JNWqӵ㴎N7p͜nt9m䴉N}t7{9i;8=Nqzӓ洃ӳ9Nr
Norz;9}SN8}N9}kg!r9,QlgŜpVV@-lz7~
c	lzYy,38P<S=c3*njk^ўkFG:ڻ{{lU~'1ot,jhd>vCbT(v"VT0FcT7cVM4F%8u]pԮQbe+DM(CSr":ڰ:#up./<FiUM,&H
{VڛI*|5`^:F0y	:?:QFECIIڞ`)st5-sނlRY.%,Rfy)#_t"ݖejX
vXYztTe
	5g`9DS
q50qYJE,與 crHq7Mx+z)='Dp&ꮕEL%=5-FUիE:ĕ%2G5t_glvj:+QMزJlOdKn0K#^ƸDcKөo>e^#zYzr.GXhl`n:,o@"a^:?+VcNo{\MZɤQ7Xn⦂hب1cM7=2a<4d7mxf]+[jDHV}چT3|񙗰~2C뜰Jd}
z6{V,U8|<,yv=ឰL=Y<zuFe!vp5|sc-1qDH*iRoBzoH+]{eY_ߪvya9z|A/ i #͸n:vY`"ٌ7۴~= +7ОןSD7
>yTo$!)CJvpvcIsMWk|+[<s^xs^UmMĂLXn;rT;
gg_n=\Pч'zuCѨ&VwAIn;as+:Wnψ.i>rYsdOW[ɞ斥Ny2ȣze*ѠjǗ*`Xv ]"[>x}i{Ǫx}$oUU걅l"耎ŕ-K[*Wu5wVUU}R-QU&#NwUm٢֮BvdSZ^HbF!bT#C+uTnXNtlmH
=AѠ%-=*Q#஛Gh"NR=-?fi)4Svpw
4*Of|L>|?g|B/63e_4|_k
_7k|o3
dfw|^o?~߁6G~0'
~
πwG?~?_0
~	b_x0o7
~c~ hG
2_6?/
 3WH82x8<98(
<"p\bXʣ|F@z8ht?IN;HTI9[RΝz4z?t$Aha(>
͇>->-C
KR+2kY7Uз@
C?ơ@zϡ_A[U:
Řժ0Fo(4z2cŻBzC;+SӠkӡkuЙC?
#GB֡c#(
EXP-jCA.t;4}
kjb
C'@wBOm~Ps)B{[}|i*RvY*3V7<_C/P3" C/Q0WURЫU
Vе*nP)&FUBoV$V?)t`RHbR"O
.ERPR%)(BHQ"X)I1^	R-D)&I1Y)R#T)IQ*EӥW_8Pr)fHQ!L)`)RYRTI1[C8LåGHm)#őR%R#űR|WKQ-ED),)jbs"*EL
G
WK")'EJN(԰;gs= ;
8}4oe|&k	Q4bf4E;D}ɝQq7G;h+}_mVౕUG7Qib&jT6M*n<ʭLMj8j`\1\ PK_ܓ
  (  PK  G|bP            &   org/opensc/pkcs11/wrap/PKCS11Key.class}O#Utf]]wۢtˋ.˺ZRʛ*8:`CѬt
Fo`L"&iMsιw9̝_' cx7nC7tmQ%-$aG)aW}	VJ2		Q5S/jZ6U۪=oK{q lMJ35Xɧ'|ԑ1z8˩ꀯT(OnAنdwEm%n5uE[嚎(&siy$=<ƹg56}\\p\C|fQs年~"<8]Vrí+c(Mt0m+U-&+{j*<rJr9SQ=E'ڞwނ^Y7ˆW$TYAѨN:R2\x)WB ].َ3t,V)w*MQd5c;[_YEa|OGCkgƐvi׈+Q𬜽OK}s{4fry_:(ON 1@^?
BFp,<pI-vX1!+wO]):.;fQKqeXB&;[Gc(gX#<Qʙ0\=dis(QtzW}Ǔʡ'$Wqy*5|Sw/`Y.}^7^(46|xHg	|8v'~yG N	<J<&8/(MIoO	|%|_8M<-JX#.Y9s/A%/@J	X"A	!.y
=zІhë:F_0Vȳ Xk@&ܬרO뤑OE[FsPC}_}	_SQ}ާ}oڗ>	OOu,䶚&jQc5/D-$f@9xo<e'PKSG    PK  G|bP            3   org/opensc/pkcs11/wrap/PKCS11KeyPairGenerator.classTmsD~ΖQH(M(Jj;-))/.-kR;ijb!1ʊ(qd${`6S:v%򄔺|swvٽ?w 7Ћcg2>q|qHó/"]|K㸇2Caa%XexP2x18u
Z=_/kF^kzTeb״tj)mBC@L$zֲ~whH5WV;馭ezf~^\eۜT2OGo!;5GuJNLgtIeI797P~ch~ŗt܁jų
DMmk*=Pغ֧}=AhǚsЖAʜ P*'1HdiVUZ]9]JV*':aY<%*pgZN)o3e%RW0dl*BUϾgfxȠ2ɎDΏn32hSc,ҙYpCp.kQvAkOל2O$_?vhvl	D-Fuԣ<{detޠ=uo;8!Qûj]zX樭#m)3jYHȼbsi4txtfW2^J.9(|)[<	Z:]jp1Z}zQ߽S
=sFECޥ{х緙o;λL+HeV3d1>H>AgNcQ+G:{'A$[x1F؈6겡=0;-bMx!D	y#"
\o]x~ZZ$I8N'$b֯/Jk%}c]qIN%n"Yb~f軉O8<nʋ酧xifH3ĺ\1޼7WÙxFǘ݁ 0PKK    PK  G|bP            ,   org/opensc/pkcs11/wrap/PKCS11Mechanism.class՚TU9L^]XH!(dBbH!JB'DU^{m{emk纮9w?y;g{<Re`R_7#IDgRoiCt4I7龤c-DzށhCI'=X;ޕ8%HޝDғHEzq	ISHא%]G4)I$Bz?NCz.^Dz	eIw^IHo }CIo$}8#IMXǓ>IO!}3HM<夯"}
H@&Ҏ-o#};;Io&}H?@!ҏ~"H@%ү~"H@#礿 oI@G?/%EƐ)$%CdzM/K?dLf%3H2Ȍ&3.dv#SBL9L$3^d!' $3L
Z2udL#"32z^tgMOY[dZthJhsڶZepօ&j3XѾsFm<Z^M'ZBPe2z)G
!jԃ	9ݔL4H6!T 2m'#ӛ3Sɦxs
tm%ZEl7FPexHA6R@$4T8 RZAmCDc)^lN6"~>UpebzwQ&'TD5V[D6lںtS*nM#\'>q71|K}lVx"#KUfxA6^/
K%9Vku%{drs;͎!lDgK.+b=堸{O(2퇕=Sc*O
+Lժ?'+?L"c;78fĪuC}a>|:_CGO4:_lR(ʴ6C|Ci5+UT+U^<UhM78ѕʮ8L'E%Un!Q\\\$<iJT$8dD."TNJfÓs8|f[U&SP_}D9\|#|>$)N%h.%wd$pV*c2Ս?k>&+MDe]c?:2먐1_Gd|qK}<Vgz4Dd,ge//{xc4O9Gl 0?	wEe'Ù49X禮Y=,_r3'sprn";v3ÊS>G -c129k$guHqGb~ę_NЗbsP6(sRQ (tNo}~fyi1"bd#h<LMyǼTv>͹ٹ:;c+!?쌾EũD]US(2拨1_E81YF<#?KAӚD:w4j5$
	8zvT2vfVnx3;nq.hĭ<g54m|LUM
uax7.RSpĸ)l9?ޠHg
M 	]MVt	,7Z<5;tz--eJmg>Ca~5
AէddOrQ%ݤOƊdA\*KT}`d.;y^M29*ٹj`	sܕ)f쟓bÖ\%Ɨ͍篺AȦ2~2nXaz?I-GR;Qhȼg4WgG|8=6/{6
Bwi79aL~t~Eg2&?P叉lqL)&Sƣv)X4XQ~"@boX6|
=ASrjezT%2^x\٪tsM]2N7ZonsP,tyi'"Vb9q#|
35sUUSz˽$2":P&9)icYwĿ\BOhupVe≆*|˧9o&_;aDoS꺮yK87;qeSl
sSu<_O9ĳD(3Eg?v/+aHq.;O|__[܃pa#'ᅏ5-Zp$3p1sEy_Eh`dz3x?u6ho]8`t͘KZ״[ھp\s*HtTg뼥uͭs{.n_ܹ7^GߘZ,FF1ԉ܀:o/ Sn,1zՃ!0fVV\8nEG[y:[UR2n֎q|SKJ-jm_j9ٮ.i8C
S*xG>E}Ánjh{'O
~
g
~/
~	W
~
7o
~w
~
7?)3.𗂿w-;߃//
U	V.6#"0	)>ྂ[[ (x ۂ<D<T0p##%x'hccs?zgK ]$xO^#x28.\	N
O\
/VTpzpF4Mft33
ON_zȷ
/
@B"K//.xCAW;Nz'(0ႏ )(т+8>A>E>Cl /|<DrW_
F_AEo.o|7|?0X(1$)O,9σ_"%/_*5&-o.=?!#,?./	Jo[߁c'4~BOh'4~BOh'4~BOh'4~~|Pa/a/a/a/a/a/a/a/a/fg.w&x80Fa0Fa0Fa0Fa0Fa0Fa0Fa0Fa0Fa3Cgg	nxa/aT"~S,RnTUWE*Wx7 Wx_P*|PN*|D~T=B/(*|'Mh/;}AB?Q!U~U%B~Z'hYP
xHEPԠ*8J@ѧ&UPMMn[ESs(GqnH(	GBQwtW(ꎢ6zEpDP#(jWWj(xӠf(΄8gCy@ys<yP(sqpUtO@@WBP(z0q(qq$=zOr=@ӡ\YcERxz1oB/X蕼
Y*&MxzoB7N(^>Їy@BmE3c}	/ UзyoA?-=Ǽ_6kޖ~Ǜo'Cɠ󅏌-h!obAwx3
ڗxg	ڟt0	A- P쁎m(޿.3ǻ0Rp
t+N޼-Sx/oD@xT0MoTQKVEREi	uhC>t)CyzC;yܡx}'^MnusL=š:8^xUz&cCk$
3
^[^kxz#/C/
Co`w.~^Å>Gy/BXs }1U+P^{jgg-t6llg{:q[9s٭ g:ngwvgPg9;ΎtvGgG9Xgwvvgwuv7g9[lΖ9;rg'8{8;?:;=ٽƝp6lIgl5lSsgl)ggg:;gg;;{:vvuvmsv]bg8e.wv8{+]l]Zg9
!C=Ý=#=٣=c='8{'9{8{9{g8{g9{8{9{8{9{8{9{W8{W9{8{9{78{79Wg7;{:{ᝎ
Vw,X5
f&w;nI9v&u7clRwm~
ަۻMo+M;M|OTPKn_k  0  PK  G|bP            2   org/opensc/pkcs11/wrap/PKCS11NeDSAPrivateKey.classSk@~&5vnZ֭&
k?Q,ugnI]7~( 7A	3py^
#e"nsܱ`.ǜey"+U{Jƾ8pe0xYg`0PZCiO?7šbv߈#(
c_8~eJxR9^JOZ7N@yNSsmF_$As2d6y2D+%@oZ|	ʙ[YhLݚֱ?Բ:lPNtz de߹T$q"ID$ҕ".
JL#%eXʔ*P>
N=1N}^+QlԺ*aغy$םnbh>EBs^> teBy=|j)#WMg<qp>)|0H4rADX<CM
R!~PKǲ[    PK  G|bP            2   org/opensc/pkcs11/wrap/PKCS11NeRSAPrivateKey.classR]OA=Sv;|Ѣbi|1BLhDyffWO$+>&t$3w;ޯ?/ xLr(b79nv
GcØZ~Wjp1Xڮ-|Qc0q($TvheOe
}6"M^O[Nё&]^wV'O_r`pܥ'ߒӵDJqcXĭZ07i1gmVJ*a1'*ZS_4>Q\H5g/F
֮6۬w1G#T 9
Jt*dKzwȥk'([BfxKCCs2~>}>#=uC0MgBQ(_PK    PK  G|bP            )   org/opensc/pkcs11/wrap/PKCS11Object.classWw +6}A$-lt--`ڕ
mڔNMGMCilQ #mKzj%dI;ܙsGs6wve9&g/2e&_aU}M}7x,}SƷd|ۇMe=&̟̟a#~ŏ	ԇ gxч9o~!^\a/~_xً߰_c[&q!U~d,	xrbT@U#kyKie-ٌ9ͰтգcDfXUWg5] <.Q]5);5H1vX|b2q,;2-1ӰlհOzAPO$3,mqO$NqYqxl">YJ~(\89{NK	.Pã3	Χb^͹y)ق
PE|Ki-gS!,JkN+vv:Fiա.2h4uM5;Mt\2cZ k]dupRyMREVi T@FӵZ7r)StDXJ#-u"UةK_x@R.Uqs*\~ WBQҼyiHhj`]y6kd*m6_f>ΔϏIuVd,(
(՝$0ψvn{$kdǚ/.u3^ueuҌs{nit&M]޵f`8Bys!Vsc(9,Ȩx^SF|DL;7TwO$nKʸILnfy?(x7ޣL19d$1\ar'z;}pK8gW4{k+<RT3sQkr^嵋B˄L/BY{>̈́3M
gCi],G|ZhQBiΚ#s@],77Tz.DlꓐihVe#	O;
NaH_W:&
f
ʚ)*rfRi3CRƂSLb'S0)ZAlҰe)fM3|J{Ė/so3 ׻},^#q:fp/E--]gQ`ϗqԬNUWmL^kM͑b׏	p
T5Wr
6-Q$jO.29s&I<7 ^G[%T*C>2t' } 4Fh?o[pcăxh}j=BX(Uc>o$I8|!	M		
		
	]j	Q/$F;[#ABiM^UNtm*d8&Cx /=w5$>vGۮ|̵: ut{V1Yv5b/eyde},g].ҿQ;1P~_ĆU)!)(	_P-l^"26/cK`+\CmE0uxO{h'<ƣ2ʘGWe4:euUkO*H_]>2]!]!޾DZYeAXƞM-(݉hMN"/*j=%U$.N s:jC	:9_;ܚe\doc3ň*.5DFMַm;l'v.@SV_eW8ߴtw19@|Ѳ}RVTkꖲ
՞SxUowf'>o].Wz62>M+
=KeTe?`۱{ivn"WgPKќo  ~  PK  G|bP            -   org/opensc/pkcs11/wrap/PKCS11PrivateKey.classV]Se~|-YPPP-4٠1B JjBH
IqI؍Zz^0_᥿y7ij'gܙ}9{duX"B#|spG,ˏDH\~,]R@%iXq+|^'X_lp)>>%`ႥRTMK3K1e+*Wsg#Tr-dJ~K-t͞e
3ʤŜJ943%۩&g\\|S6),;=ھbKzve5Afl%W\V뵴nX7;I*JbkXZ섀|NEh]+&#LRNo]CV:O/a%[rs9|-ak{p1\/CImjz?1ZlmDw8BحY(pm]Ě_I-d-3̖{R"VS,6>%k>'yͶjΖEaْs,y	*$L-jz	_Cv~t0$;d:aڡ81D;bc%UE-)w:8S@+{kZsypGl
MDd$y.kJѭpZK =|5rbX46(UD9~z8e53^$)ԑW7jrmcV
:ܸQ
}[4	GvwE4/}b CrtL=K@e=Dz`Џղv
|c#rvúBtݤ][r(CC6j$[b#w(eA$Wd_}coEO0
EOǴ
8U|U\=k.~ɦ^_@\/j	㺓
=LKu\E~_14n։I:ʿb.bߐ[M+Hrլ:\?RPK_zuE  
  PK  G|bP            ,   org/opensc/pkcs11/wrap/PKCS11PublicKey.classV[sDֶ"*ӄ6%RP'ԉCݤᶶUWHrC%K!3pV2<ڳ{=gϑ?(;2UB{2*d!3b@ƂA|n9,bIrbX#ڼip690p<;&,^2 [NQEy۱Tpkfi9^lVtsy\_]*% ["7Ӻ'@*ʪPt%WH5޼u"1Xp-$^Y=?#cM'Jɮ9o͇=ς8=۩m'$hVW3N>~}+ O%2*JݨXR^0}}d}ߵ-p^Ie18Ož;VPDiγE6aBi4lᮆm|p)Lr5|/e|kp6gUZޭau={)E{a[!i'?zrtA+F%Nd6

C'#j3y(]Kv*Ν١b%C.,>HQeܵr9l9ƾh5-lDu_V@gzvFs+0C߮q0^`F 4 &IF!a!!%N !2#G88^e$hjWhR$IHH06RǇZ.$RA7R	3՘.MH?#o?~;F)Fe2RwzcNޠ#u:K{"@jc4kLwѦŉMO'IXpWHbiaI0(OPKA#\    PK  G|bP            6   org/opensc/pkcs11/wrap/PKCS11RSAKeyPairGenerator.classTR@"
֋X]KSF.֦0*?%`LEM)pF >ٴtG6gg=?~~4$ut#!zhpYCFduhft\
o jjяI
tQ:00<XxY.%k>W.,eΕ6JyZ1Ǜ9s)n|-d3]	3_xW0̈́p2ũ͖ܔ,r7x")&d\ya2o<CgF0Qu.3E>~aVgw|gBTWnfvI(˸-22_Z0za$`GaKE57ВbF8ok!ÕTO\V9x07]j9)w*xR|j3
S1,hNx%Tތb)3\j`m^d6U@KXJJ$:uUz"7ڨÉϯ.YQJ.Vӗ$tkO,$m{,.ѕioaïx
%q6c˖'Ų(3sS\MUI a-*:֯Qț
ټ*w#OpC\鮓-v}0!S
SEZ
ĞIH'#8JYBwLjHjL}AU?Mo@
=Ȧo`
J,JEgկщ1%F}]ơ>!WoH4;5sO|DG"
6/PKY     PK  G|bP            0   org/opensc/pkcs11/wrap/PKCS11RSAPrivateKey.classRmOP~kw"k!i1$ %ʧR.:ڦ_i`#E!x{Ͻyzsν/t,Na,	<x,P#L%2a_Ɖ:/IlA@a*A|JQJnDa E~Ρ:-	x tO~u]F2H<'z%s5=dimZ}%8dN	T;W[J`?TGoS3j#yMb/U҄0sti4*&ʨp#cv{Uq俙\<^Y=>p=8WB˄ΛJ{|^X> @w`b7+٘mfD?੽RЪgTfz^;C3K_z橱y<p-O	wu7~PK;  a  PK  G|bP            /   org/opensc/pkcs11/wrap/PKCS11RSAPublicKey.classRQOAu,`P`jriIV
cr'5M07ƹk$`Mfo'Η履 m,,
\0&Yζ7VV	Lב
I6	(Tu>a"N{qG5avs=mVeW&kqT0Nu;JnPnW{xlm*6hF`m2L+[rWj?Uߒ'%̠JXuZ`!̜'e0ʘ"Cs"KJ.&>qNyT$<0?ʿh5`V[^#ýO<S:I6K~α {vY:BL0GO>!]Xs9;ٺf<SHo@s? PK-fq  Z  PK  G|bP            *   org/opensc/pkcs11/wrap/PKCS11Session.classXw\[h0"^ l4].q,5`І>x*QIә춻ҕ.5v{{s{zz ={ߕz'A<~{.xGY|,H>|S~|:agakȃ/2*}=o!~&o6.>!1)9_%_5߰-߱=?#?g)B _nJJ'R8dRND4fXQQ?;~w@(M
ɤsy)?*fdlӏM ؍с񡘀jxde[I+=gHfZN\gg֬4<39ڏ
d O,//N
yPOery
.$Q
[fk
[GR^ǺQ7s9>TJZJYlc݄ĶҀeSͬU&yi*k2Mf9Z`B`5kgߢMNUEh;uK>ђP4Nθע5ŭ
8҈rF	9hqiVt28.]c+w|>L.nFd+/=1JM\&އ3iCƺT٬=E^	/&Ls9b.:LR1dH2BT)muUCy)~4=,M09Ll3S:%7bZgfІtFg&.| ryLڬ
|3֣eKȹ|63_Ȟ$;_[\q_HtR{}_"Omk$ԞmPbjYF
Е&SJ
M{Z$9B{4]
5vBM43C5YX;* hE޶+jM	PsmF@[T$7[I-W$5F >M>(`3_\罖0
OD/D<Qĝ$~A)\
3[Wk|'p/!%RYYJ̅R*CN?D1Ya񙬒e&'1z@}>E/T!ގDƀà∈!QDÀ:֛1&ix"na8O~$a
2M!Ɇ)*8.R"	*X"VSfJ*_-v;I%sfSy$%%'Lj!쐃RVN9<j~76SQSo=	|VJRDqJZ;zF+[޼ܘs,Tg3=gLn£. 7=cDJ3nQ'<4; ;Q ?(P,?
 >5)Z/iTBeP4v6
Mś|yԁL-kP48ѩm	GqW,;L:)$MCg̦g3krSpklBW)]CK<`+c~	'u.BEuUKXp4ӧ<;Q0o^a?GlWh_9x~:j)Гg<WO5SnmUxnSNaO;oIt	
#gYm)7Q-Ћ¯֤тqޱst1ؠ^P[/Jj
dƂwB]2T%`1^VW(yQrYuw;]gwن$`vf2~ב&KqMW{jsJ@ųe2ֻFw@}[kvtz-^;{Qc݋
>tߵnnoIK|9UZ]<OPV7ժ~MxJNtz6q8ѷ*j%i%56ݱo_JV+.o/9[xqURUdGc2ڜk|j];/΢_Z9]<SB۝rp}s3K2t ά~;1gng6t:}GΪñjX7yq9z[Df/	W`*[fεVF^{Ƃ6/渤;n&G^na]|Xo~55เzTkPKW:  5  PK  G|bP            /   org/opensc/pkcs11/wrap/PKCS11SessionChild.class;0Dg$
hjQRB 	$N`8jC!DKz;S>_1>>z>/vsN	 \Nns$?Zk;3!.օM16QėRYNQT%'4U8`%׻-ald|*3{cq)ϤPsSw6WѯتF%PK$   "  PK  G|bP            '   org/opensc/pkcs11/wrap/PKCS11Slot.classV_weH$I]&@HHR)v'$:3z[UGzhV}߷zc.dv~>f~z _x?oC8@浏0PKSO܏>%lgJJ	>L1,J|_`r?=A	r<\Gqaf?dɼP/k_p19LLL`$o0& =m	(I#aDOѸ1:jV8#>#>-! Fz,)PTDJXݗ2h4|hMմ@uBlӘ#}_ರ㆑Vu+M[ޫ{McLKfo7YACmCm,TjPƔhJlkeZUόbaX<|lȚZ*,Wg+J_N+{b6+v$TM%c[qE;
ӝ}٥JKrbuOPSqS5ٍ^ST=
:cSyyf]cuLK&:q,PQnEWh;4FU @!UD8$ۡZqSs*~	k]ZXrjZ.Y'5^'YN]Aq:5\MNwqYk7E1mؘ2|[غҎԮt!wS7";.>ԔTOftxd7nC{5=oRG٣.2['7l5n;٫% o+X,z}ܫ+ʶ}neeUtXew8d]A^2~8e&t4ID<BO/+Uj-m~#^Rj12?2S ~ND-515{2Pޢu*ZJMri$	A9"h𴌿/6.&Lv
\ڟTC
VUUi/<#CaNЖw6]:iFt@2au=n$H2xek73)&o[d:%]?u>HGTϙ#Mj^ulNa
mRmgs#ugȝ\mSѭt:ڝv_iItJcP;?DcVvukOil%b'MU!R+%rm9MaP_DңNP>9TonN#⌬|,SctSk]V*G'mÜv%ǯ=nSeEAVc,9A[AÑE+TӮvD:]2ZBYH|?<hgPswRotۡ9ԝPB- A9=fQQ&V0m 96@lgg!wx^\{UmYzDL->{%P+OBm.cN
Ԛ٠RņYWjLTOj7[kQ7͑9li)
#(R,VoGU?4F (mSn)5`<v`j|}At7\:9qSӔ,?d
s#p&jw/%0	C~B&*5r^%?h^wUoIUnPP[fQ
0AϪ*Ů=z 1HxMIrWR|&2阘v,al I3{LhZ	x&LXEqCDLQm&@xq'W7f7j%k3qW5gm&NyLiU{fH&nmEuE!^慸sV􌿼 oǝDYYd}8/99zWqiԺTb6m%]֏whʟ5ǻWdexye9Lj->;:_PK-TH    PK  G|bP            &   org/opensc/util/DestroyableChild.classRKO@qq/ʛ`TcD	RQ-*, EPVU{RTYۍ3ޝ3~}
<m6aEKcD6lca0*\g8qz(K
4=ߘ$JF'*;-ѡ,}{ʱVi;X%U^iɨ@h
>|us.h9X󰎞
kpT̞Ņbs9rN21g7ľP}lPZfbn$q:;/1p4{
GwO`5+k`:f1nf̶5%frs\?Y[EEUd-L<z5P]`C6*MHq쏰k:kxݕnŨVPK  ,  PK  G|bP            '   org/opensc/util/DestroyableHolder.classSNA-݂BbTwT`RCw.dwKQx~Mķ%Lxf[)hR6sf3 JM"\'Ҹ`$(r*.!/EAtUQe)(0TSpU$W%\gHTjmza./Un6D0й`U=0~;n_TԌYm11E I˱)h!6D1B+|41$Mɗ]j++
q*.QaVpC(*b%\WpS 5!ݪu5W-
qGÄh]0i
pab4<4p3rf$!2dϹ)[. SxRކ#n<M
rdkаS5..
u
oU9n|?
(JOZJ9oaprwJDΑtAk/Sd'#Էt-ȏ44cJ"3;DKm(XZFw0,(<@%@o Lei4U݆r]rɠUQ%WICd-P;Ф)
$H}@y6P3Nci{(Ȧ~!yr(PK̅-˒    PK  G|bP            '   org/opensc/util/DestroyableParent.classM10BH"*DHP;Y1ψ|(`if~<lP(JKOX;itd;	hj+0;opew!4x0Olт@Ȑr94 PKYi      PK  G|bP               org/opensc/util/PKCS11Id.classeQMOQ=3ז"H
h?(lP$&v(MYܘaC~Ap (ޙ|٤ws}ǟO[ {7$9BaJ6OQ.r8zDY+j~Z+b!9>3&i5_єO[]oάӍ2c& gUC5ϣ1 CӔJ5<cVpj5OļXB.v+=ejfP3&Յ{j:`9<W5!q"Q9`TL8iJ5KXqA+3co$z{ǳ^t\k2;GۧN,J/Ʀw֗hfuVHY}2Plt>Avx24Eh"Stk"Q7#oa̚C5ȡڮh(p}[y j\0
K(Z+
76
YZ^a+<KO'ǣ+2[%Y	p5v.̿CM09;ԖL߶tIՀmn@{ \sOFZ۞
8gm$vIT=][ڄsj2/97oRG{d}ZE/Xi!()I$SMїL9E<?rKɔpB..B$F	"CX+'FX'f_PKW` H    PK  G|bP               org/opensc/util/Util.classuQMO@}C8q	B?(_|R5C"!UJJ$i1ؑ_%UuPjμ?Fنr6m"
	,%ko*KHoKcW2=kZߛGt*-uwVb:6,wb%l梸E}|\0fN"y_N	#W"?@j~o	V7[Sr}W-6X⫝w2ƢO($6&0X?Nٝx]h9'k:SzτL?("nvȉ&dyɚ# _lY]YCdV&]njn`47Ci>'R0KVpS4PKW;  h  PK   F|bP]E?                     META-INF/MANIFEST.MFPK   F|bPYxr  n                 META-INF/CC_JCE_S.SFPK   F|bP,?*                 5  META-INF/CC_JCE_S.DSAPK
 
    G|bP            	            b  META-INF/  PK
 
    G|bP                           org/PK
 
    G|bP                           org/opensc/PK
 
    G|bP                           org/opensc/pkcs11/PK
 
    G|bP                           org/opensc/pkcs11/spec/PK
 
    G|bP                         =  org/opensc/pkcs11/spi/PK
 
    G|bP                         q  org/opensc/pkcs11/wrap/PK
 
    G|bP                           org/opensc/util/PK   G|bPi/  /  +               org/opensc/pkcs11/PKCS11EventCallback.classPK   G|bP'9     0             G  org/opensc/pkcs11/PKCS11LoadStoreParameter.classPK   G|bP[7    :               org/opensc/pkcs11/PKCS11Provider$PKCS11CipherService.classPK   G|bPL?    D             !  org/opensc/pkcs11/PKCS11Provider$PKCS11KeyPairGeneratorService.classPK   G|bPXB  H  4             #  org/opensc/pkcs11/PKCS11Provider$PKCS11Service.classPK   G|bPBA    =              '  org/opensc/pkcs11/PKCS11Provider$PKCS11SignatureService.classPK   G|bP4  +  5             J)  org/opensc/pkcs11/PKCS11Provider$ShutdownThread.classPK   G|bPp    &             *  org/opensc/pkcs11/PKCS11Provider.classPK   G|bP5kʸ
  _  *             2  org/opensc/pkcs11/PKCS11SessionStore.classPK   G|bP:H2    =             =  org/opensc/pkcs11/spec/PKCS11DSAKeyPairGenParameterSpec.classPK   G|bP6     3             6A  org/opensc/pkcs11/spec/PKCS11KeyPairGenParams.classPK   G|bPg  0  6             B  org/opensc/pkcs11/spec/PKCS11PrivateKeyGenParams.classPK   G|bP%     5             TD  org/opensc/pkcs11/spec/PKCS11PublicKeyGenParams.classPK   G|bPR&1  h  =             uE  org/opensc/pkcs11/spec/PKCS11RSAKeyPairGenParameterSpec.classPK   G|bPq|
  	  +             I  org/opensc/pkcs11/spi/PKCS11CipherSpi.classPK   G|bP')uJ  o  5             S  org/opensc/pkcs11/spi/PKCS11KeyPairGeneratorSpi.classPK   G|bP^D+  
  ;             Y  org/opensc/pkcs11/spi/PKCS11KeyStoreSpi$PKCS11KSEntry.classPK   G|bP=g  q&  -             '\  org/opensc/pkcs11/spi/PKCS11KeyStoreSpi.classPK   G|bP3q  L  .             l  org/opensc/pkcs11/spi/PKCS11SignatureSpi.classPK   G|bPD<d    ,             Uu  org/opensc/pkcs11/wrap/PKCS11Attribute.classPK   G|bP}tD  
  .             |  org/opensc/pkcs11/wrap/PKCS11Certificate.classPK   G|bP՟R    6             T  org/opensc/pkcs11/wrap/PKCS11DSAKeyPairGenerator.classPK   G|bPt^  D  0             ͆  org/opensc/pkcs11/wrap/PKCS11DSAPrivateKey.classPK   G|bP(O  ?  /             ?  org/opensc/pkcs11/wrap/PKCS11DSAPublicKey.classPK   G|bP_ܓ
  (  ,               org/opensc/pkcs11/wrap/PKCS11Exception.classPK   G|bPSG    &               org/opensc/pkcs11/wrap/PKCS11Key.classPK   G|bPK    3               org/opensc/pkcs11/wrap/PKCS11KeyPairGenerator.classPK   G|bPn_k  0  ,               org/opensc/pkcs11/wrap/PKCS11Mechanism.classPK   G|bPǲ[    2               org/opensc/pkcs11/wrap/PKCS11NeDSAPrivateKey.classPK   G|bP    2               org/opensc/pkcs11/wrap/PKCS11NeRSAPrivateKey.classPK   G|bPќo  ~  )               org/opensc/pkcs11/wrap/PKCS11Object.classPK   G|bP_zuE  
  -             ؿ  org/opensc/pkcs11/wrap/PKCS11PrivateKey.classPK   G|bPA#\    ,             x  org/opensc/pkcs11/wrap/PKCS11PublicKey.classPK   G|bPY     6               org/opensc/pkcs11/wrap/PKCS11RSAKeyPairGenerator.classPK   G|bP;  a  0               org/opensc/pkcs11/wrap/PKCS11RSAPrivateKey.classPK   G|bP-fq  Z  /             A  org/opensc/pkcs11/wrap/PKCS11RSAPublicKey.classPK   G|bPW:  5  *             w  org/opensc/pkcs11/wrap/PKCS11Session.classPK   G|bP$   "  /               org/opensc/pkcs11/wrap/PKCS11SessionChild.classPK   G|bP-TH    '               org/opensc/pkcs11/wrap/PKCS11Slot.classPK   G|bP  ,  &             T  org/opensc/util/DestroyableChild.classPK   G|bP̅-˒    '             X  org/opensc/util/DestroyableHolder.classPK   G|bPYi      '             ?  org/opensc/util/DestroyableParent.classPK   G|bPW` H                   org/opensc/util/PKCS11Id.classPK   G|bPW;  h               V  org/opensc/util/Util.classPK    7 7   3    MZ                @                                       	!L!This program cannot be run in DOS mode.

$       'IIIBI_GICIZIHI\I#MIRichI        PE  L K         !                                                                        P   4 (                             <                                                                               .text                             `.rdata  $     0                @  @.data   D\   @  P   @             @  .reloc                        @  B                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                UE   EEMQUREPMQUR$   E    } uу]UE $K  eMMUREPMREPق  E}}MEOMU;|
EM8U    EPMQUPE} uMQUREPMR8e]UE   EEMQUREPMQUREP    E    } u̓]UE $K  eMMUREPMREPف  E}}ME   MU;|EM   U    EPMQUPE} u   h8@h0@MQURE   E} uXUREPM  E} u:EPMQUREPMQUPpE} uMQUREQ4e]UQEPMQOz  E} u33UREPP}  ] UQEPMQUR;}  E} uEPMQ`}  ] UEPMQUR|  E} urEPMQUR~  E} uS3EEEM0MU(REPM QUBPPvE} t!MQRhx@EPhP@MQ|], UEPMQURY|  E} uuEPMQUR}  E} uV3EEEM0MU(REPM QUBP   E} t!MQRh@EPhP@MQ], U$E    E    EPMQUR{  E} u3  EPMQUR7}  E} u3  }8 }!E8PhAhP@MQW3  }0 uh AhP@UR43a  }4 |E4;E8~!M4Qh@hP@UR32  E8$~  eEEMQU8RE4PM0QURE   3҅uōEPMQU8REPM QUBP   E} t(MQRh@EPhP@MQv3   E$~  e܋U܉UEPMQU8REPM QUBP   E} t%MQRh@EPhP@MQ3<UREPM  E} tEPMQj UREPM@  Ee܋]4 U$E    E    EPMQURy  E} u3  EPMQUR'{  E} u3  }8 }!E8PhAhP@MQG3~  }0 uh AhP@UR$3[  }4 |E4;E8~!M4Qh@hP@UR3,  E8$|  eEEMQU8RE4PM0QURE   3҅uōEPMQU8REPM QUBPP~E} t(MQRh,AEPhP@MQi3   E$|  e܋U܉UEPMQU8REPM QUBPP~E} t%MQRh,AEPhP@MQ3<UREPM  E} tEPMQj UREPM@  Ee܋]4 U EPMQURw  E} u3  EPMQUR%y  E} u3  }8 }!E8PhAhP@MQE3  }0 uh AhP@UR"3d  }4 |E4;E8~!M4Qh@hP@UR35  }< uhlAhP@EP3  M<QURE  E}@ |U@;Uv!E@PhPAhP@MQ3   U+U@UE$z  eEEE8$z  eMMURE8PM4QU0REPM   3uōMQURE8PMQU REHP   E} t%UBPh@MQhP@UR3"EPMQU@RE<PMQU@  Ee]< U EPMQURu  E} u3  EPMQURw  E} u3  }8 }!E8PhAhP@MQ53  }0 uh AhP@UR3a  }4 |E4;E8~!M4Qh@hP@UR32  }< uhlAhP@EP3  M<QURE  E}@ |U@;Uv!E@PhPAhP@MQ{3   U+U@UE$x  eEEE8$w  eMMURE8PM4QU0REPM   3uōMQURE8PMQU REHPQ~E} t%UBPh,AMQhP@UR3"EPMQU@RE<PMQU@  Ee]< U0E    E    E    E    EPMQUR]s  E} u3  EPMQURt  E} u3  }8 }!E8PhAhP@MQ	3l  }0 uh AhP@UR3I  }4 |E4;E8~!M4Qh@hP@UR3  E8$Pv  e؋E؉EMQU8RE4PM0QURE   3҅uōEPMQU8REPM QUBP   E} t(MQRh@EPhP@MQ(3  E܃$u  eԋUԉU} tTEPMQU8REPM QUBP   E} t(MQRh@EPhP@MQ3  UREPM QUBP   E} t(MQRhAEPhP@MQl3   } t_E$t  eЋUЉUEPMQU REHP   E} t%UBPhAMQhP@UR3jEEPMQU  E} tH} tMQURj EPMQU@  } tMQUREPMQURE@  EeЋ]4 U0E    E    E    E    EPMQURMp  E} u3  EPMQURq  E} u3  }8 }!E8PhAhP@MQ3f  }0 uh AhP@UR3C  }4 |E4;E8~!M4Qh@hP@UR3  E8$@s  e؋E؉EMQU8RE4PM0QURE   3҅uōEPMQU8REPM QUBPP~E} t(MQRh,AEPhP@MQ3  E܃$r  eԋUԉU} tQEPMQU8REPM QUBPP~E} t(MQRh,AEPhP@MQ3  UREPM QUBP   E} t(MQRhAEPhP@MQb3   } t_E$q  eЋUЉUEPMQU REHP   E} t%UBPhAMQhP@UR3jEEPMQU  E} tH} tMQURj EPMQU@  } tMQUREPMQURE@  EeЋ]4 U(EPMQURim  E} u3  EPMQURn  E} u3  }8 }!E8PhAhP@MQ3  }0 uh AhP@UR3  }4 |E4;E8~!M4Qh@hP@UR3y  E<PMQU  E}@ |M@;Mv!U@RhPAhP@EP~34  M+M@ME$p  e܋U܉UEEE8$o  e؋M؉MURE8PM4QU0REPM   3uōMQURE8PMQU REHP   E} t(UBPh@MQhP@UR3   E+EEMQUURE PMQP   E} t%EHQhAURhP@EPr3+MMMUREPM@QU<REPM@  Ee؋]< U(EPMQURk  E} u3  EPMQURl  E} u3  }8 }!E8PhAhP@MQ3  }0 uh AhP@UR3  }4 |E4;E8~!M4Qh@hP@URs3v  E<PMQU  E}@ |M@;Mv!U@RhPAhP@EP.31  M+M@ME$m  e܋U܉UEEE8$m  e؋M؉MURE8PM4QU0REPM   3uōMQURE8PMQU REHPQ~E} t(UBPh,AMQhP@UR}3   E+EEMQUURE PMQP   E} t%EHQhAURhP@EP%3+MMMUREPM@QU<REPM@  Ee؋]< U$EPMQURh  E} u3  EPMQURUj  E} u3  }8 }!E8PhAhP@MQu3  }0 uh AhP@URR3o  }4 |E4;E8~!M4Qh@hP@UR#3@  E8$k  eEEMQU8RE4PM0QURE   3҅uE    E    EPMQU8REPM QUBP   E} t(MQRhAEPhP@MQ3   E$k  e܋U܉UEPMQU8REPM QUBP   E} t%MQRhAEPhP@MQ3<UREPM  E} tEPMQj UREPM@  Ee܋]4 U$EPMQURf  E} u3  EPMQUREh  E} u3  }8 }!E8PhAhP@MQe3  }0 uh AhP@URB3i  }4 |E4;E8~!M4Qh@hP@UR3:  E8$i  eEEMQU8RE4PM0QURE   3҅uE    E    EPMQU8REPM QUBPPzE} t(MQRhAEPhP@MQy3   E$i  e܋U܉UEPMQU8REPM QUBPPzE} t%MQRhAEPhP@MQ3<UREPM  E} tEPMQj UREPM@  Ee܋]4 U EPMQURd  E} u3  EPMQUR5f  E} u3  }8 }!E8PhAhP@MQU3  }0 uh AhP@UR23d  }4 |E4;E8~!M4Qh@hP@UR35  }< uhlAhP@EP3  M<QURE  E}@ |U@;Uv!E@PhPAhP@MQ3   U+U@UE$+g  eEEE8$g  eMMURE8PM4QU0REPM   3uōMQURE8PMQU REHP   E} t%UBPhAMQhP@UR3"EPMQU@RE<PMQU@  Ee]< U EPMQURb  E} u3  EPMQUR%d  E} u3  }8 }!E8PhAhP@MQE3  }0 uh AhP@UR"3a  }4 |E4;E8~!M4Qh@hP@UR32  }< uhlAhP@EP3  M<QURE  E}@ |U@;Uv!E@PhPAhP@MQ3   U+U@UE$e  eEEE8$e  eMMURE8PM4QU0REPM   3uōMQURE8PMQU REHPQzE} t%UBPhAMQhP@UR3"EPMQU@RE<PMQU@  Ee]< UEPMQUR`  E} uuEPMQURb  E} uV3EEEM0MU(REPM QUBP   E} t!MQRhBEPhP@MQ	], UEPMQUR_  E} u  EPMQURwa  E} u   }0 }E0PhAhP@MQ   }( uh AhP@URx   }, |E,;E0~M,Qh@hP@URK   E0$b  eEEMQU0RE,PM(QURE   3҅uŋE0PMQU REHP   E} t!UBPh(BMQhP@URe], UEPMQUR^  E} uuEPMQUR*`  E} uV3EEEM0MU(REPM QUBP   E} t!MQRhlBEPhP@MQ], UEPMQUR]  E} u  EPMQUR_  E} u   }0 }E0PhAhP@MQ   }( uh AhP@UR   }, |E,;E0~M,Qh@hP@UR[   E0$`  eEEMQU0RE,PM(QURE   3҅uŋE0PMQU REHP   E} t!UBPhBMQhP@URe], UE(EMQUREP\  E} ubMQUREP4^  E} uCjMQU REHP   E} t!UBPhBMQhP@UR6]$ UtEPMQUR	\  E} u3  EPMQUR]  Ẽ} u3  hCEPMRE} u3  hChCEPMQU   E} u3a  hBhBMQURE   E} u34  U,REPM  EEk^  eEEE    	MMU;U   EPM,QURE  E} u3  UREPMQU   MkU
EPMQURE   EUREPM  MkUD
EkMD$^  eUkEMLUkELQUkELQj UREPM   3{M0QURE  EEk]  eUUE    	EEM;M   URE0PMQU  E} u3  MQUREPM   MkUĉ
EPMQURE   EUREPM  MkUĉD
EkMċD$\  eUkEċMLUkEċLQUkEċLQj UREPM   3{M(ME    E    UREPMQUREPMQURE PMQP    Eȃ} thBEPhP@MQ|3RjURE  E} u34U3U܉EM3҉MUEPjj MQUREP  Ee], U   EPMQURW  TT u3  EPMQUR|Y  E} u3  hCEPMRPP u3  hChCPPMQU   E} u3V  hBhBPQURE   HH u3   U(REPM  XXkZ  ((Lǅ\    \\\;X9  \PM(QURE  @@ u3  UR@PMQU   \kL
HP@QURE   DDREPM  \kLD
\kLD$Y  $\kL$L\kLLQ\kLLQj DREPM   3Qǅp    ǅt    pQa]  dd u"UBPhChP@MQ>  XRLPM QTBPPjll t)MQRhClPhP@MQ  ǅh    hRj xPM QTBPPnll t)MQRhhClPhP@MQ[  ǅ\    \\\;hsK\x38<td8ʋ<Dtt똃h 9  p ppPdQX  44 u"UBPhChP@MQ  4dhPj xQU RTHPQnll t)UBPhhClQhP@UR?  ǅ\    \\\;hsK\x3ɉ,0td,Ћ0LttE PTQPRrll t&EHQh8ClRhP@EP{YtQURE  `dRtPj `QUREP  dRV  `dPU  3$]$ U EPMQURQ  E} u3`  EPMQURuS  E} u3<  E0EE    E    jMQU(RE PMQPRbE} t%E0PhDMQhP@UR`3   }u#E0Ph DjhP@MQ73   E$T  eUUjEPM(QU REHPQbE} t"U0RhDEPhP@MQ3\}u U0Rh DjhP@EP36MQURE  EUREPj MQURE@  Ee], U$EPMQURIP  E} u3F  EPMQURQ  E} u3"  E  @E    E    jEPM(QU REHPQbE} t!hLEURhP@EP3   }uhDjhP@MQ3   E$7S  e܋U܉UjEPM(QU REHPQbE} thLEURhP@EPD3M}uhDjhP@MQ"3+UUEEMQUREPMQURQ  e܋]( UEEPMQURN  E} u3   EPMQURNP  E} u3   E0EMME   jURE(PM QUBPPbE} t"M0QhDURhP@EP:3-}t$M0QURhEjhP@EP3E], UE EPMQURM  E} u2   EPMQURqO  E} u2   E0EMME   jURE(PM QUBPPbE} t"M0QhDURhP@EP]2-}t$M0QURhPFjhP@EP32E], U8EPMQUR	M  E} u	33/  EPMQURN  E} u	33	  hCEPMRE} u	33  hChCEPMQU   E} u	33  hBhBMQURE   E؃} u	33  U(REPM  EEkO  e̋ẺEE    	MMU;U   EPM(QURE  EЃ} u	33  UREPMQU   MkU܉
EPMQURE   EԋUREPM  MkU܉D
EkM܋D$O  eȋUkE܋MȉLUkE܋LQUkE܋LQj UREPM   3{MQUREPM QUBPPRE} t hGMQhP@UR33E3ҍeȋ]$ U EPMQURJ  E} uVEPMQUR*L  E} u7E(PM QUBPPZE} th(GMQhP@UR8]( UE@    MA    }    h@GUREQEUREPMQU   %   t^MQURE  UBE@$OM  eMUQEHQUBPj MQURE   3҅ue]UEPMQURII  E} u	33   EPMQURJ  E} u33^EPj j M ɃQUBPMQPR2E} t'EHQhDGURhP@EP33E3ҋ] UEPMQURH  E} uXEPMQURJ  E} u9E PMQPR6E} t EHQUBPhpGhUWQ  ]  UE    E    EPMQURG  E} u   EPMQURyI  E} u   }, tOE,PMQU  EE$?K  eMMUREPj M,QURE   3҅uEPMQU(RE PMQPRJE} t!EHQhGURhP@EP e]( UEPMQURF  E} ueEPMQURH  E} uFE PMQPRNE} t-EP:  PMQREHQhGhUO  ]  UE    E    EPMQUR[F  E} u   EPMQURG  E} u   }( tOE(PMQU  EE$I  eMMUREPj M(QURE   3҅uEPMQU REHPQ*E} t!UBPh,HMQhP@URe]$ U$E    E    E    E    EPMQURME  E} u  EPMQURF  E} u   }( tOE(PMQU  EE$H  eMMUREPj M(QURE   3҅u}, tOE,PMQU  EE$LH  e܋M܉MUREPj M,QURE   3҅uEPMQUREPM QUBPP.E} t!MQRhTHEPhP@MQ)e܋]( UEPMQURC  E} u   EPMQURE  E} u   3EEEM0M}4 tIU4REPM  EE$<G  eEEMQURj E4PMQU   M(QURE PMQP   E} t!EHQhBURhP@EP$e]0 UEPMQURB  E} u
  EPMQURD  E} u   }0 }E0PhAhP@MQ   }( uh AhP@UR   }, }E,Ph@hP@MQc   E0$E  eUUEPM0QU,RE(PMQU   3ɅuŋU0REPM QUBP   E} t!MQRh(BEPhP@MQe], UEPMQURA  E} uhEPMQURJC  E} uIE(EjMQU REHP   E} t!UBPh(BMQhP@URF]$ UE    E    EPMQURA  E} u3  EPMQURB  E} u3   EPMQU REHP   E} t(UBPhLBMQhP@UR3   E$+D  eEEMQURE PMQP   E} t%EHQhLBURhP@EP03<MQURE  E} tUREPj MQURE@  Ee]  U$E    E    E    EPMQUR?  E} u3  EPMQUR@A  E} u3  }0 }!E0PhAhP@MQ`3|  }( uh AhP@UR=3Y  }, }!E,Ph@hP@MQ32  E0$B  eUUEPM0QU,RE(PMQU   3ɅuōUREPM0QURE PMQP   E} t(EHQhxHURhP@EP臿3   E$ B  e܋M܉MUREPM0QURE PMQP   E} t%EHQhLBURhP@EP3<MQURE  E} tUREPj MQURE@  Ee܋], UEPMQUR=  E} u   EPMQURG?  E} u   3EEEM0M}4 tIU4REPM  EE$@  eEEMQURj E4PMQU   M(QURE PMQP   E} t!EHQhlBURhP@EPe]0 UEPMQUR<  E} u2   EPMQURE>  E} u2   }( uh AhP@EPi2   M(QURE  EE$?  eUUEPMQj U(REPM   3uMQURE PMQP   EEE} t}   t2'#MQRhBEPhP@MQ赼2e]$ U$E    EPMQUR;  E} u2  EPMQUR=  E} u2  }0 }!E0PhAhP@MQ.2_  }( uh AhP@UR2<  }, }!E,Ph@hP@MQ2  E0$}>  eUUEPM0QU,RE(PMQU   3ɅuŃ}4 uh AhP@UR膺2   E4PMQU  EE$	>  eMMUREPj M4QURE   3҅uEPMQU0REPM QUBP   EMM܃} t}   t2'#UBPhHMQhP@URʺ2e܋]0 UEPMQUR9  E} u   EPMQUR';  E} u   3EEEM0M}4 tIU4REPM  EE$<  eEEMQURj E4PMQU   M(QURE PMQP   E} t!EHQh@URhP@EPĹe]0 UEPMQUR8  E} u   EPMQUR':  E} u   3EEEM0M}4 tIU4REPM  EE$;  eEEMQURj E4PMQU   M(QURE PMQPRvE} t!EHQhx@URhP@EPǸe]0 U$E    E    EPMQUR7  E} u3  EPMQUR9  E} u3  }0 }!E0PhAhP@MQ73|  }( uh AhP@UR3Y  }, }!E,Ph@hP@MQ32  E0$:  eUUEPM0QU,RE(PMQU   3ɅuōUREPM0QURE PMQP   E} t(EHQh@URhP@EP^3   E$9  e܋M܉MUREPM0QURE PMQP   E} t%EHQh@URhP@EP3<MQURE  E} tUREPj MQURE@  Ee܋], U$E    E    EPMQUR{5  E} u3  EPMQUR7  E} u3  }0 }!E0PhAhP@MQ'3v  }( uh AhP@UR3S  }, }!E,Ph@hP@MQݴ3,  E0$v8  eUUEPM0QU,RE(PMQU   3ɅuōUREPM0QURE PMQPR~E} t(EHQh,AURhP@EPQ3   E$7  e܋M܉MUREPM0QURE PMQPR~E} t%EHQh,AURhP@EP3<MQURE  E} tUREPj MQURE@  Ee܋], U EPMQURy3  E} u3  EPMQUR5  E} u3  }0 }!E0PhAhP@MQ%3  }( uh AhP@UR3\  }, }!E,Ph@hP@MQ۲35  }4 uhlAhP@UR踲3  E4PMQU  E}8 |M8;Mv!U8RhPAhP@EPs3   M+M8ME$6  eUUE0$5  eEEMQU0RE,PM(QURE   3҅uōEPMQU0REPM QUBP   E} t%MQRh@EPhP@MQŲ3"UREPM8QU4REPM@  Ee]4 U EPMQURy1  E} u3  EPMQUR3  E} u3  }0 }!E0PhAhP@MQ%3|  }( uh AhP@UR3Y  }, }!E,Ph@hP@MQ۰32  }4 uhlAhP@UR踰3  E4PMQU  E}8 |M8;Mv!U8RhPAhP@EPs3   M+M8ME$4  eUUE0$3  eEEMQU0RE,PM(QURE   3҅uōEPMQU0REPM QUBPP~E} t%MQRh,AEPhP@MQȰ3"UREPM8QU4REPM@  Ee]4 UE    E    EPMQURk/  E} u3  EPMQUR0  E} u3   EPMQU REHP   E} t(UBPhAMQhP@UR3   E$2  eEEMQURE PMQP   E} t%EHQhAURhP@EP萯3IE    } v9MQURE  E} tUREPj MQURE@  Ee]  UE    E    EPMQUR.  E} u3  EPMQUR/  E} u3   EPMQU REHP   E} t(UBPhAMQhP@UR蒮3   E$+1  eEEMQURE PMQP   E} t%EHQhAURhP@EP03IE    } v9MQURE  E} tUREPj MQURE@  Ee]  U$E    E    EPMQUR,  E} u3  EPMQUR7.  E} u3  }0 }!E0PhAhP@MQW3|  }( uh AhP@UR43Y  }, }!E,Ph@hP@MQ
32  E0$/  eUUEPM0QU,RE(PMQU   3ɅuōUREPM0QURE PMQP   E} t(EHQhAURhP@EP~3   E$/  e܋M܉MUREPM0QURE PMQP   E} t%EHQhAURhP@EP3<MQURE  E} tUREPj MQURE@  Ee܋], U$E    E    EPMQUR*  E} u3  EPMQUR',  E} u3  }0 }!E0PhAhP@MQG3v  }( uh AhP@UR$3S  }, }!E,Ph@hP@MQ3,  E0$-  eUUEPM0QU,RE(PMQU   3ɅuōUREPM0QURE PMQPRzE} t(EHQhAURhP@EPq3   E$
-  e܋M܉MUREPM0QURE PMQPRzE} t%EHQhAURhP@EP
3<MQURE  E} tUREPj MQURE@  Ee܋], UDEPMQUR(  E܃} u	33P  EPMQUR#*  E} u	33*  hCEPMRE؃} u	33  hChCEPMQU   E} u	33  hBhBMQURE   Ẽ} u	33  U0REPM  EԋEkl+  eEEE    	MMU;U   EPM0QURE  Eă} u	338  UREPMQU   MkU
EPMQURE   EȋUREPM  MkUD
EkMD$*  eUkEMLUkELQUkELQj UREPM   3{M(MU,REPMQhUREPMQURE PM܋QP   E} t hHEPhP@MQB33E3ҍe], UtEPMQUR	&  E} u3  EPMQUR'  Ẽ} u3  hCEPMRE} u3  hChCEPMQU   E} u3g  hBhBMQURE   E} u3:  U0REPM  EEk(  eEEE    	MMU;U   EPM0QURE  E} u3  UREPMQU   MkU
EPMQURE   EUREPM  MkUD
EkMD$(  eUkEMLUkELQUkELQj UREPM   3{M4QURE  EEk'  eUUE    	EEM;M   URE4PMQU  E} u3  MQUREPM   MkUĉ
EPMQURE   EUREPM  MkUĉD
EkMċD$&  eUkEċMLUkEċLQUkEċLQj UREPM   3{M(MЋU,REPMQUREPMQUREPMQURE PMQP    Eȃ} thBEPhP@MQv3RjURE  E} u34U3U܉EM3҉MUEPjj MQUREP  Ee]0 U(E    E    EPMQUR!  E} u3J  EPMQURw#  E} u3&  E(EM,QUREP}MQURE8PM0QURE PMQP   E} t(EHQhHURhP@EPL3   E܃$$  e؋M؉MUREPM8QU0REPM QUBP   E} t%MQRhHEPhP@MQޡ3IE    } v9UREPM  E} tEPMQj UREPM@  Ee؋]8 UPE    E    EPMQUR[   Eԃ} u	33  EPMQUR!  E} u	33  hCEPMREЃ} u	33b  hChCEPMQU   E} u	333  hBhBMQURE   Eă} u	33  U<REPM  E̋Ek.#  eEEE    	M؃M؋U;U   EPM<QURE  E} u	33  UREPMQU   MkU
EPMQURE   EUREPM  MkUD
EkMD$d"  eUkEMLUkELQUkELQj UREPM   3{M(MU,REPMQ*U8REPM  E܋E܃$!  eEEMQURj E8PMQU   3ɅuUREPMQUREPM0QURE PMԋQP    E} t hHEPhP@MQ詞33E3ҍe]8 UDEPMQURy  E܃} u	33T  EPMQUR  E} u	33.  hCEPMRE؃} u	33  hChCEPMQU   E} u	33  hBhBMQURE   Ẽ} u	33  U8REPM  EԋEkL   eEEE    	MMU;U   EPM8QURE  Eă} u	33<  UREPMQU   MkU
EPMQURE   EȋUREPM  MkUD
EkMD$  eUkEMLUkELQUkELQj UREPM   3{M(MU,REPMQHUREPMQU0REPM QU܋BP   E} t h IMQhP@UR33E3ҍe]4 UEPMQUR  E} u333EPMQURf  E} u33EPMQG  ] UEPMQURy  E} u3EPMQUR
  E} uEPMQUR+  ] U<WE    E    EPMQUR
  E} u   EPMQUR  E} u   }  tOE PMQU  E̋Ẽ$^  eċMĉMUREPj M QURE   3҅u       }E$PMQU  Eȃ} ~h\Ih8IMQDfUREPj M$QURE   UREPMQUBPMQPR&E} t!EHQhIURhP@EPܙe_]  U$VE    EPMQUR  E} u3(  EPj j MQPRE} t(EHQhIURhP@EPS3   E$  eMMUREPj MQPRE} t(EHQhIURhP@EP3   E$  e܋M܉ME    	UUE;EsMUEu3ʉtՋMQURE  EUREPj MQUREP  Ee^] UEPMQUR9  E} u33Ej EPj MQP  E} t hIEPhP@MQ33E3ҋ] UEPMQUR  E} u20EPMQURH  E} u2E@h؋] UEPMQURY  E} u20EPMQUR  E} u2E@h؋] UEPMQUR  E} u20EPMQUR  E} u2E@h؋] UEPMQUR  E} u3   EPMQUR%  E} u3aE    } ~EE3ɊHG uUUߋEPMQU  EMHQURj EPMQU@  E] UEPMQUR  E} u3   EPMQURe  E} u3aE@   } ~EE3ɊH uUUߋEPMQU  EMQURj EPMQU@  E] UEPMQUR  E} uIEPMQUR  E} u$E3ɊHlMEU3BmEE
] UEPMQUR  E} uIEPMQUR$  E} u$E3ɊHnMEU3BoEE
] UE    EPMQUR  E} u3   EPMQUR  E} u3   EPj MQREHPQE} t%UBPhIMQhP@UR蛓3~E$4  eEEMQUREHQUBPPE} t%MQRhIEPhP@MQ93UREPMQUREP)  e] UEPMQUR  E} u3   EPMQURu  E} u3   EHhu"UBPhIh   hP@MQ膒E    } ~UU3Bo uMMߋUREPM  EEpPMQj UREPM@  E] UEPMQUR  E} u3   EPMQUR  E} u3   EHhu"UBPhIh   hP@MQ薑E    } ~UU3    uMM܋UREPM  EE   PMQj UREPM@  E] UEPMQUR	  E} u3   EPMQUR  E} u3   EHhu"UBPhIh   hP@MQ覐E   } ~UU3    uMM܋UREPM  EE   PMQj UREPM@  E] UEPMQUR  E} u3   EPMQUR  E} u3   EHhu"UBPhIh   hP@MQ趏E   } ~UU3    uMM܋UREPM  EE   PMQj UREPM@  E] UEPMQUR)  E} u3   EPMQUR  E} u3   EHhu"UBPhIh   hP@MQƎU   wEM   ;   v'EHQU   PhJhP@MQ|U   ] UEPMQURI
  E} u3   EPMQUR  E} u3   EHhu"UBPhIh   hP@MQU   wEM   ;   v'EHQU   PhHJhP@MQ蜌U   ] UEPMQURi  E} u2dEPMQUR
  E} u2CEHhu"UBPhIh   hP@MQU   %   ؋] UQEE}      }     }A   }A  }
|}
}  }O};  }&}
  }     }    
  }   }     MM}  U$ EE}0  U3Ɋ $ʈ EPE}R  U3Ɋ $' }  4}    E-   E}]b  U3Ɋ* $҉ E-  E}   8  U3Ɋ܊ $ R!  R  R
  R  R  R  pR  `R  DR  4R  R  R  Q  Q  Q  Q  Q  |Qw  hQm  LQc  ,QY  QO  PE  P;  P1  P'  P  P  pP	  `P  HP  (P  P  O  O  O  O  O  pO  \O  LO  8O  (O}  Os  Oi  N_  NU  NK  NA  N7  dN-  @N#  (N  N  M  M   M   M   M   hM   HM    M   M   L   L   L   L   xL   `L|DLu$LnLgK`KYKRKK|KDdK=HK60K/K(J!JJJJJ]ý ǅ х ۅ    
  ! + 5 ? I   






































	] g q {        ˆ Ն ߆       %   	

9 C M W a k u        Ň χ ه       	

  ) 3 : A H O V ] d k r y         	

UQ} u   .j  E} u   EP MU3]UQEE} u   MQUR  3]UQEE} u   MQ3]UQEE} u   MQ3]UjX  E} uhDThP@EP3x  MоЋUB    E@T    h0TMQUPE} u   h(ThTMQURE   E} u  UREPMQU   E} u  MQURE  EUDP?
  MAUz uhShP@EP#]  MQREPj MQURE$  UBMfH  UBPMATUzT uEHQhSURK     hSEHTQE} uUBPhSMQ     UPRUE} t&EHQhTSURhP@EPG   hRMQPRE} t#EHQh(SURhP@EPDMQUBPP
E} t#MQRh SEPhP@MQȁE<Uz tEHQ  UzT t
EHTQURf  3]UQE    j j EPh   $Pj h    MQUREPhpThP@MQ%UR]UE3]UQEE} tM9оtURh|ThP@EP3E]UWj EHPQUzT t
EHTQUz tEHQb     3}URJ  _]UWh  F  E} uhThP@EP03   D   3}MUEBMQUREHPQE} t URhTEPhP@MQRUBht@MpQUREHPQE} t URhTEPhP@MQEURL  3_]UE3]UQEE} tM9tURh UhP@EP~3E]UWD   3}EP  _]U$htUEPMRE} u3#  hlUh0@EPMQU   E} u3   j MQUREPM  E} u3   E    	EEM;M   UREMREHQUBPP"E} t(MUPh@UMQhP@UR
~3]EPMQUREMREPMQUREQpE܃} u3#UREPMQURE  ?E]U EVuEEEuEEEB   PT
  MxE  
EPj 	  YY^Q=   L$r   -   =   s+ȋą@PUjh h| d    Pd%    SVWu   $u;j	&  Ye V  YEt	VP  YYM   } Qj	'  YÃuSj	&  YE   EPEPV!  E܅tPuu!  M   } uu
j	&  YVj 5 (Md
    _^[Ujhh| d    Pd%    (SVW]3;uu  Y  u;uSY  $9  }܃   j	%  Y}Sj  YE;   ;5wLVSPW  t]8V  YE;t*CHE;rPSu'  S  ESP8  9}uK;uj^uuVW5 0E;t#CHE;rPSu'  Su  MZ   9}u";uj^uVSW5 ,E܋E;  9=ą  V'  Y  u]3j	%  YÃG  w;vj^u}܃   j	|$  YE   EPEPS`  }Ѕ   ;5lxs\SWuu"  tEE8S  YE܅t*E;rPuui&  WuuI  ]} uSVj 5 0E܅t=E;rPSu"&  Wuu  VSj 5 ,E܃M&   E;uf9=ąt^V%  YKu]j	#  Y33w;uj^VSW5 ,;u9=ąt
Vs%  Yu3Md
    _^[5ąt$   YYÃ|$w"t$   Yu9D$tt$'%  Yu3Ujh0h| d    Pd%    SVW$uCu;5   j	"  Ye V{  YEM   Etm   j	"  YÃuZEtpj^u;5lxw.j	="  YE   P  YEM
   Eu-Vuj	j"  YËEujX$Pj 5 0Md
    _^[SVt$WV   Va'  D$ Pt$ V  VW'  V   _^[á@Vj^u   ;}ƣ@jP)  Y0Yu!jV5@)  Y0Yuj  Y3ɸU0 = X|3ɺU4 tu
 AV|^,  = t*  ËD$U;r= Xw+P   YÃ PËD$}P   YËD$ PËD$U;r= Xw+P   YÃ PËD$}P   YËD$ P   ,  @,  ø hyR dyly py ty xyËD$   8jԅ!  Yt<ԅ3Ɋ
Յ%   -ԅ܅
؅0  u	=  3r4(5  H%  2  2  )  D>3;u,9
D~
D9
u)  @'  0    uQ1  YjX US]VuW}u	=D &tu",t	WVSЅtWVSu3NWVS5  Euu7WPStu&WVSu!E} t,tWVSЉEE_^[] Pt
u=Tu95  t$i5  h   4XYYUSVuF^   @   tf    N$FFf e $fFu"UtUuST9  YuV9  YfFWtgF>+HNIN~WPS6  E6tˋ @y@ t
jj S5  FMjE_WPS6  E9}_tN E%    F^[]UH  SVW}3Gۉuu}  M3Mu39U   |xÊ(3HE  $ MỦU؉UUUUx  Ã t;t-tHHtY  MP  MG  M>  M5  M,  *u#EP  YE  M؉E  EˍDAU  *uEP  YE  M  ˍDAЉE  It.ht ltw  M  M  M   ?6u4uGGM}l  UЋ
zUDAtEPuP  G}EPuPf  %  Ãg  e   X   x  C   HHtpHHtl  fE0uMuuEP  fEYȉM  u	
<XME   N  f8   @@E    M@;ʉ}   E      fE0uMfEEPt;0  PPt6  E}2E   )Zt2	tH      YE   E  EP  Yt3Ht,Et MEE     e M   8XEP   uguE   EũEuHM@EPPEPdyu   t} uPpyYguuPhyY-u
M}W4  Y  i      H   HtQHH     E'   <+  u	
8XMNt8 t@+  E   E   EE   t]EE0QE   EHEE   t;M5EP  E Yt	fMfME   #  M@E
   EtEP  YAE t!E@EPt  Y%  YE@EPt  Y  Y3E@t|s؃ ڀMEu } }	E   eue EEEMt;ERPWVEU4  uċ؃0uWVI4  9~]ԋEM뵍E+EEEEtM90uu
M@M0E}    ]@t&tE-tE+	tE E   u+u+uuEPuVj   EPEuuP2  tuEPuVj0   } tA} ~;E]xfCPEPC2  YY~2MQuPEP   OuEPuuu   EtEPuVj q   }Gۉ}E_^[} S n    .  UMIxEQuYYEu] ]VW|$O~!t$Vt$t$>tO_^S\$KVW~&|$t$WFt$Pu?tK_^[ËD$  @ËD$ AQËD$  f@Vt$j & <f8MZuH<t
H@F^U,  hSPǅh   HtxulrjX  h  PhD   3ۍ8t<a|<z, A8u퍅jPh5  uIdh  PS@8ddt<a|<z, A8u퍅dPP4  YY;t>j,P3  Y;Yt0@8t9;uA8uj
SP1  tttEP}Y[3j 9D$h   PP t6$u
h     Y
u  u5 L3jXá$VWufS39U-(~@=Tph @  h   6h   j 6vj 5 ՃC;|5j 5 ]['u"HXFth   j PT6;u5 L_^h@  j 5 0uËL$% % j
   Xá;sT$+P   r3UMSVuAW+yi  D  MIM  11UVUU]u~J?vj?ZK;KuL s   L!\D	u(M!!J   L!   	uM!YM]MS[MZUMZRSJ?vj?Z]]   +u]j?uK^;vMщMJ;v;tcMq;qu@ s   !tDLu&M!1K   !   LuM!qMqINMqINu]} u;   M\щ^NqNqN;Nu`L MLs%} u   M	   DD	)} uJ   M	YJ   ꍄ   	ED0E      
5TH   h @  SQ֋
   	P
@    @HCHyC u	`xuiSj p֡pj 5 (ȡ+ȍLQHQP0  E
;vmE=_^[USVW<E}HMI }Mu3uE;߉]sK;#M#u;]]r;]uy;؉]sK;#M#u;uY;]s{ u];]u&;؉]s
{ u;u8  ؅ۉ]tS  YKC8u3  CUt   |D#M#u7   pD#U#ue HD֋uu   E#U#9tU3i  D  MLD#u
   j #M_|GMT
+MMN?~j?^;
  J;Jua }+   M|8Ӊ]#\D\Du8]M!1O   M|8   !]u]M!K]Jz} yJzy   M|zJQJQJ;JudL M})} Lu   	;   M	|D/} Lu
N   	{M   N   	7Mt
LMuэN
L2uɍy>u;uM;
u% MB_^[á
VW3;u0DPP5W5 ,;ta
hA  j5 40;ǉFt*jh    h   WX;ǉFuvW5 (3N>~F_^UQMSVWqA3ۅ|Cj?i  Z0D  E@@Jujyh   h   WXu    p  ;w<GH    @  Hǀ       H;vǋEO  j_HAJHAdD    FCENCu	x   !P_^[UMESVW}׍p+QAi  D  MOI;M\9|9]_  O  ;E  MI?Mvj?YM_;_uH s   ML!\D	u+M!$   ML!   	uM!YO_YOyM+M}    }MOL1?vj?_]][Y]YKYKY;Yu\L MLs!} u   M	DD   %} uO   M	Y   O   	UMD2LUFBD2G  3C  :  ])uNK\3u]NK?vj?^E   uN?vj?^O;OuG s   t!\Du(M!!N   L!   	uM!Y]OwqOwquuuN?vj?^M|{KYKYK;Ku\L MLs!} u   M	9DD   %} uN   M	y   N   	EDjX_^[Ã=XXSUVWuHXh    j 5 0  -Xjh    h  @ j Ջ   j   h   SWՅ   HX;u=HX uHX=LX uLXLXF5LXF0  @    FFN~F3   3҃J#JEH   |Sj W:+  F;s   GG      ܋'h   j WTHXtVj 5 (3_^][Vt$h   j vT95hxuFhxHXt FVj NH5 (^Ã
XX^UQSV5LXW~   e     ? ?   u9h @  Fh   PTt
XFt;v~EMt
   }} ΋vt,yu&jA Z8uB   |   uQ Y;5LXt
} P_^[ËD$HXV;Av;Ar	;t7u1     ;r t$t$f ++^D3^ËD$L$+HDL$! 8   @   uX=X ujYUQQSV5hxWV   ~   +ƃ;Es:];|9_vSQP  uuE_      ;Er]FN~E;Ms3;|9_vSPuj  u&_E   ;}r]6;5hxtC5hx)~(  HXt u?;   _e +w;u}}E8tEjh   PVEX;   j uV'  Uҋ~0FU   PP   A      Mu։=hx   ;s9t;#GEF_))FL   44t)HYThx   +ӉQ)P   3_^[UQMUSVqW9   ;}ǉ]r!;s)Q	a AG   > tƍ4;sCu0jX^; uCF;sN;Euq)u9U   }ƍ4;urq;s~;Esvu@j^X; u%C@;]s	+q	a q16;s)E9Ur4맍;]s	+A	a AFk+3_^[UQUS]V
W}e +G;M|vE+ȈG   `seE4   ;wU;s
8 u@;uBE;w+;v'   ;s338u@< tC	c C+ME   E_^[V5 5x5x5x5tx^VW=pxt+xt#xtxttxtP6Y0y|5x5x5x5tx_^UEV<px 4pxu>WjYujZYj> YWu
 >Yj
   Y_6^]UE4px]USVWUj j h u(K  ]_^[]ËL$A      tD$T$   SVWD$Pjh d5    d%    D$ Xpt.;t$$t(4vL$H| uh  D@   Td    _^[3d
    y uQR9Qu   SQ0y
SQ0yMKCkY[ VC20XC00USVWU]E@      EEEECs{tav| tEVUkT]^]t3x<{SkVSvjDaCT{v4롸       UkjS]   ]_^[]UL$)APAPy] tt$ЅYtjX3UWVuM};v;x     ur)$ Ǻ   r$н $Ⱦ $L   0 #ъFGFGr$ I #ъFGr$ #ъFGr$ I      | t l DDDDDDDDDDDDDD    $ Ⱦ о ܾ  E^_ÐE^_ÐFGE^_ÍI FGFGE^_Ðt1|9   u$r
$P $  I Ǻ   r+$X $P h   F#шGNOr$P I F#шGFGr$P F#шGFGFGZ$P I     $ , 4 G DDDDDDDDDDDDDD    $P ` h x  E^_ÐFGE^_ÍI FGFGE^_ÐFGFGFGE^_Vt$v  YtwUu3UucjX8fFuR<ȅ SW<ȅ   u SYuFjFXFF
?^~>^fNjX_[^3^Ã|$ Vt t$F
tV,  f
f & f Y^UHSVWh  YujY5        ;sf f F
 $  ލEPpf}    E   8X;E   ;|9= }Vh  Yt<    ;s` ` @
$  9= |= 3~LEt8t2uQlt#΋ M	HEFC;|3ۋ
 ۃ<4uMFujX
HPhtWlt%   >uN@u
NNC|5 d_^[SVW t7  ;s!_{ tS$  $;r6& Y |_^[Ujhh| d    Pd%    SVWuuuuw3;uj^u3ۉ]   $uA};=w|j	,Y]WYEM   9]t^uH3ۋuj	`YÃuA;5lxw9j	YE   PlYEML   9]tVSu  9]u>Vj5 0E9]u'9ątVY03ۋuj	YËEMd
    _^[SWj3WYj_9=@~]V0tA@t
PJ  YtC|)0 P040Y$ G;=@|^jHY_[á(Xth@h@   h@h @   j jt$   jj j    W   j_9=ut$xPt|$ S\$=u<t"
Vq;rtЃ;5s^h @h@C   YYh(@h$@2   YY[t   _t$=\_j
Yj
@YVt$;t$s
tЃ^Vt$V#   Yt^F
@tv:  Y^3^SVt$3WFȃu7ft1F>+~&WPv
  ;uFt$FN Ff _^[j   YSVWj33"3Y95@~t0t_@tYPVK0YYHt0|$uPYtC|$ utPYu04VMYYF;5@|j|$Yt_^[h   h     YYU]]EuMm]EvjX3h<<th Ptj Vt$P
  eYt,F= |~jP}  YY
zAuԊ
$|FFu^ËD$$|t:tH@u@t*t
etEt@H80t8uH@A҈uËD$ rjX3UQQ} utEP  EYYMMHÍEP"  EYYMU(EVPEPEQQ $  uEPUFP3}-3ɅQ  Ej PuVu	   E0^US38]VuW}t39]P3>-Pv  YY>-u-G9]~PH
$|38]hHMQ   9]YYtEFA80t<^Ky-Ad|jd^ ÙA
|j
^ Ù Y_^[]U(EVPEPEQQ $y  uEPEP3}-EP  Ej PVu	   E,^USVu]WFH} t;Eu3Ƀ>-ˋ 0` >-u-{FjW?  Y0YG} ~DjW'  $|YvGY}+} t9u|uuW   uj0W  _^[]U(SVEWPEPEQQ ${  E]p3}-EEPSW  EH;|&;}"t
Gu GEjPSuEjPuSu_^[U}et2}Et,}fuuuuN]uuuu4uuuu]W|$tVt$V
  @PVVx  ^_VR|yt:jtj/YYt)V5|ytV4   Y|NjX^3^(|ytP
|yËD$@P`|@   VW$5|yu?jtjYYt&V5|ytVY|NjYW_^á|y   Vt$u
PtlF$tPYF(tPYF0tPYF8tPzYF@tPlYFDtP^YFP=`|tPMYVFYj 5|y^S39VWu   5H3:t<=tGV  Yt   PY;5uj	Y=H8t9UW  YE?=t"U;Yuj	gYW6  YY8u]5HYH_^   [UQQS39VWu'   h  VS@(5 8tEPEPSSWM   EMP9;ujYEPEPEPVW   EH5_^[UMESV! uW}    Et7}8"uDP@"t)t%ttF@tՊFt& F8"uF@CtF@ttF@ t	t		ūuHtf e 8     t	u@8    t7}UE   3ۀ8\u@C8"u,u%39}t
x"Pu}}39UUKtCt\FKutJ} u
 t?	t:} t.ttF@Ft@@Xt& Ft' E_^[ ]QQSU-VW333;u3Ջ;t   (;            ;uՋ;   f9t@@f9u@@f9u+Ƌ=SS@SSPVSSD$4׋;t2U;YD$t#SSUPt$$VSSׅut$kY\$\$VSuL;u;t<8t
@8u@8u+@U?Y;u3UWVW3_^][YYjX Pt
u*=Tu!h      Yth      YU  U3ɸy;tA=zrV;y  P   u
=T         \h  Pj @u\h(P'  YY\WP\  @Y<v)\P  \;jh$We  `hP  `WP  `hP  y`P  h  `hPx  ,_&Eyj P6R  YP6jhP^Vt$;5 s@΋ Dt%WV  t$t$V(   V:  _^   	       ^Vt$WVm  Yu
   	   -t$j t$Pu$3tP*  Y΃Ƌ dD_^Vt$;5 s@΋ Dt%WV  t$t$V(   Vb  _^#   	   !    ^U  SVW39}}}u3f  E E4D0 tjWu@   E9}E}   M+M;Ms)ME	
uE 
@@ȍ+ʁ   |̋+Ej PWP40tCEE;|E+E;Er3E;   9}tbj^9uuL   	   	  0A$EǍMWQuu0tE}E$EuI  Y,D0@tE8        8+E_^[8h   YL$At
IA   IAAA   Aa ËD$; r3Ëȃ D@̋L$   tAt@   u    ~Ѓ3 tAt2t$   t   t͍AL$+ÍAL$+ÍAL$+ÍAL$+USVWV=39tVjYj[uu   YEYt
jYV׋E_^[]UEu]Ã=D ufMf w9jX]ÍMe Qj 5 |PEjPh   5Tt} t   *   ]SVD$uL$D$3؋D$Aȋ\$T$D$ud$ȋD$r;T$wr;D$vN3ҋ^[ SD$uL$D$3D$3Pȋ\$T$D$ud$d$r;T$wr;D$v+D$T$+D$T$؃ [ j t$t$t$   USe VW}wu= |~jP	  YY
zÊAtFЀ-uuM+uFuE    $w  jYu$0t	E
   2<xt
<Xt	E   M9Mu0u<xt<Xu^FFu3u  E= |~jV  YYzpt˃02= |~WV  YYzfp#ǅtJP  Yȃ7;Ms6uM;uru3u;vM	uuEEdEM]utEEe Kuu>t	}   w	u,9uv'  E "   tME$ƉEtEEtE؉EEEt83_^[̍B[Í$    d$ 3D$ST$   t
B8tфtQ   uWV؋
~333ƃ u% t% u   u^_[3ËB8t6t8t't8tt8tt^_B[ÍB^_[ÍB^_[ÍB^_[̋L$WSV|$tiqtOL$F8ttF8t
u^[_3ÊF8u~at(8uĊAtf8t3^[_G^[_Ë^[_UWVSM&ً}3ˋuF3:GwtIIы[^_UWVuM};v;x     ur)$ Ǻ   r$ $ $l   , P #ъFGFGr$ I #ъFGr$ #ъFGr$ I         DDDDDDDDDDDDDD    $     E^_ÐE^_ÐFGE^_ÍI FGFGE^_Ðt1|9   u$r
$p $  I Ǻ   r+$x $p    F#шGNOr$p I F#шGFGr$p F#шGFGFGZ$p I $ , 4 < D L T g DDDDDDDDDDDDDD    $p     E^_ÐFGE^_ÍI FGFGE^_ÐFGFGFGE^_̋T$L$tG3D$Wr-كt+шGIuʃttGJuD$_ËD$Vt$WF@tf VV   V*_^Vt$WFt4VV  v  }FtPHf Yf _^S\$; VWsr< Ã4D0tRS  YD0t)Sh  YPu
$3t  0   	   S  Y   	   _^[UQV}u:   E#E#EV   YEYm^ËD$%Pt$YYS\$3UWtjXttt tt
   VѾ      #ֽ   t   t   t;u#^t;u
   
   _][t
   S\$3VtjXtttt    t˺   #ʾ   t   t;t	;u
ˁ   t   u^   [tUQEH   w
zARV5zDV^te MEj	e EjXM
jj j QPEPjZ  uE
#ES39DuD$A|YZT [VWV9=tVjYj[t$   YD$t
jYV׋D$_^[UQ=D SVWuEA   Z       ]   j;^}%95 |~VSYY
zX#ƅuezDJte
 jE]	X	e	 ]Vj MjQPEPW5Dz   t;uE
EM_^[ËD$Vj YjD$YD$+ʃ҅uF}8 uF|jX^3^ËD$SVWj \$YD$<WjYjX+P7-  Nx<tWj7  N}_^[UQQESVWxj Ye _j ^jȋÙE^jME+Zt!CSuYYuWuNYEYEjY!E@;}U+ȍ<3E_^[ËD$L$Vj+Z04Ju^W|$3_ËD$3Ƀ8 u
A|jX3UESVWj }[E   EEe +֋#ΉMEE˃MEu܋}j[jY;|U+ƋE$ Ky_^[UESVWH
ف   MHMH }  ?  MEu&E3PY   EPYjX   EPEPwEPtCG+O;}EPY<;?+ËEPEPvEVPwEPG@PEP 3|;|(EPVwMEPmw7jRwweEPIYY3jY+OMɁ   u@u
MUq
 uM1_^[h0|t$t$hH|t$t$lU3PPPPuEPEP  uEP$U3PPPPuEPEPl  uEP$UUS]VuJW~0ۋ~]3ۊtAj0Z@MuU  |95|
H89u 0 >1uBW@PWV_^[]U(VEWPEPG   YEYuPj jf  u}FEډE؉FEPW    ~_^UQUSVWfB  %   #ωEBپ   % ۉut;t <  (  !3;u;uEXfXK<  ]ȋEMHuɋٍX  ߋMfH_^[W|$j$    L$W   tAt;   u~Ѓ3 tAt#t   t   t͍y
yyyL$   tAtdG   u~Ѓ3 tt4t'   t   tǉD$_fD$G _fD$_ÈD$_j̱YUSVWj2u  Y;Y]u3p  V  3Ҹ|9tt0B=}rEPSj^;!  j@% Y39u󫪉   }    M   A;   @e j@Y34R }; t,Qt%;wU|@;vAA9 uE}rE܈   P   |ЈYRAAy Gƀ@=   rS   Y5܈%܈ 3Ј=  t      jY_^[ËD$%  u    %u    %uT    ËD$-  t"t
tHt3ø  ø  ø  ø  Wj@Y33Ј܈_U  EVP5  3   @;rEƅ t7SWU
;w+ȍA    ˃BBBu_[j 55PVPj  j 5VPVPV5  j 5VPVPh   5  \3ftt 〠 @AA;rI3   ArZwȀ arzw Ȁ  @;r^Ã= ujY   S39$VWuBhp;tg5hdWօ$tPhTWh@W(֣,(tЋ؅t,tSЋt$t$t$S$_^[3̋L$WtzVSًt$   |$uuo!FGIt%t)   uuQt
FGt/KuD$[^_   tGI      uulGKu[^D$_ÉIt~Ѓ3 tބt,t   t   uƉ     3҉3It
3IuuD$[^_Vv   L$3};t"F=Hrr"$wB    
   ^5   }^Á   r   w
       ^       ^ËL$V;
 WsX< 4@t78t2=Tu3+tItIuPjPjPj03 	     _^ËD$; sȃ Dt ? 	   =  ËD$SȃVW4  <~ u#jE~ Yu
FP FjYD8P_^[ËD$ȃ DPS39DuD$a|YzT [VWV9=tVjYj[t$   YD$t
jYV׋D$_^[UQ=D SuEa   z       ]   }(= |~jSYYzXukzDJte
 E]	j	e	 ]jXMjj jQPEPh   5Dv   tuE
EM[Vt$;5 s8΋ DtWVV(   Vf_^' 	   %  ^Vt$WVYt<tujjyY;YtVmYPu
$3VƃY d tW)Y3_^Vt$Fttv藟ff3YFF^Ujhh| d    Pd%    SVWep3;u>EPj^VhVtEPVh|VS   jXpu$E;uDuuuuP      9]uTESSuuE @PuE;tc]< ǃ$qeuWSVjXËe33M;t)uVuuju;tuPVu3e̋Md
    _^[Ujhh| d    Pd%    SVWe39=tuFWWj[Sh   VWtt"WWSh|VW"  t   9}~uu  YYEtuuuuuuu      9} uTE WWuuE$@Pu ؉];   }$
eĉE܃MjXËe3}܃M]9}tfSuuuju tMWWSuuuu;t2E
t@9}   ;uuuSuuu   3eȋMd
    _^[E   6$Ve܉]MjXËe33ۃMu;tVSuuuut9}WWuWWuuVSh   u ;qlT$D$VJt
8 t@Iu8 ^u+D$ËËT$Vt$32;r;sjXT$^
Vt$W|$V76tFPj0tFFPw0tFFPw0_^ËD$VW0x04?H׉p_H^ËD$VWPHΉH_P^UES]3;VEN@  SSvQWE}SpSjEPSSZEe e  EEPSEMu3_9Su(KCE  sӾ   suSE  YfE^fC
[U\SVW}EjE3ZE؉UEEE܉EEԉEЉEEE} t	t

t
uGj^Gw  $5 1|9j  :$|ujF  Ã+tHHt     jE   X맃e jX란1U|9~:$|   +t1-t,0tRC  E~c{  er  j  Oj  1|	9V:$|Y0  U9 |~VPYYjZ
zÊA#ƅt}sEE0EEG:$|ug} UUu
0uMG9 |~VPJYYjZ
zÊA#ƅt}sEE0EMG빀+
-9 |U~VPYYjZ
zÊA#ƅ   WO1M|9~DÃ+ttHHtd  jeU0uG1   9   
1|9	j	XO0uD}  t*ÍO+MtHH   MjXjXj
OX
   o}   E   3= |~jPYY
zÊAtˍtAЁP  G뾾Q  u= |~jPYY
zÊAtGOE} 8   jX9Ev}|EEEHEE}    H8 uMEEPEuPjE3Ƀ9M}E9MuE9Mu+E=P  ~0E   ]uEU} t`3۸     3E   ^=}	E   uPEPQ  U]uƋEʃ33333333E   } t3333E   ME_qYfA
E^f[ M   )       n : UES]VȾ     #fWEEEEEEEEEEEE?E   tC-C }fuu9}uf# C CC0  f;uz   f ;u} t   @uhFft   u
} u.h;u#} uhCPYCYe n  hCPhYCYϋiM  fe jNfUkM}EEPEPt  f}?rEFPEP;  YYEf3t}}~j_u?  fe E   EP]MYu}ށ   ~
EPnNYuOCɉE~PMu}EPEPEPEPEPEMe 0EMuEHHH5K|0;r89u 0H;s@f *,Cd E_^[;r80uH;sf# C C0c jX̋T$L$   u<:u.
t&:au%
t:Au
t:au
uҋ3Ð@Ë   tB:uA
t   tf:u
t:au
tUV3PPPPPPPPUI 
tB$uA
tF$s ^UV3PPPPPPPPUI 
tB$u
t
F$sF ^U$S]VufK
3WEE܉EEfF
  3##ʁ   f=U  f  f  f?w3:fuEVu39Fu9uo  3f;uESu9Cu9u
FFk  EEEE   E} ~IƍKEEMEEM 	MQP1tEf EmMuȃEEM} E  f} ~%EuEP'E  Yf} f} 9E  f} }+EEEtEEPKYu} tMf} wE% =  u5}u,e }ue f}uEfE fEEEދEf=sfMfMNMNfF
ff     & ~_^[US`3Ƀ`9Mtc}E؉E`9MuEf9MtAVWET};t'@f< 4r}MuVurYY39Mu_^[UWVSu}<x u;
t.F'G8t,A<ɀ A,A<ɀ A8tx= j 
j$      3ې
t'FG8tPS9؃/8tXu	

j[^_UWVSM   u}<x uNAZ I &
t!
tFG8r8w8r8w8u
Iu38         = j 
j$   33ۋt#tFGQPSH؃>Y;u	Iu3;t	rXu	
jˋ[^_̋D$L$ȋL$u	D$ S؋D$d$؋D$[ %`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      H d |         $ 2 > P ^ r           ( 6 H \ p          * D P b z           0 @         {Gz?            I          K                       EEE50 P     (8PX 700WP        `h````  ppxxxx          ( n u l l )     (null)  __GLOBAL_HEAP_SELECTED  __MSVCRT_HEAP_SELECT                         ?   ~PA   GAIsProcessorFeaturePresent   KERNEL32    e+000   runtime error   
  TLOSS error
   SING error
    DOMAIN error
  R6028
- unable to initialize heap
    R6027
- not enough space for lowio initialization
    R6026
- not enough space for stdio initialization
    R6025
- pure virtual function call
   R6024
- not enough space for _onexit/atexit table
    R6019
- unable to open console device
    R6018
- unexpected heap error
    R6017
- unexpected multithread lock error
    R6016
- not enough space for thread data
 
abnormal program termination
    R6009
- not enough space for environment
 R6008
- not enough space for arguments
   R6002
- floating point not loaded
    Microsoft Visual C++ Runtime Library    

  Runtime Error!

Program:    ... <program name unknown>  GetLastActivePopup  GetActiveWindow MessageBoxA user32.dll              T X       h l 1#QNAN  1#INF   1#IND   1#SNAN  H:mm:ss dddd, MMMM dd, yyyy M/d/yy  PM  AM  December    November    October September   August  July    June    April   March   February    January Dec Nov Oct Sep Aug Jul Jun May Apr Mar Feb Jan Saturday    Friday  Thursday    Wednesday   Tuesday Monday  Sunday  Sat Fri Thu Wed Tue Mon Sun SunMonTueWedThuFriSat   JanFebMarAprMayJunJulAugSepOctNovDec    \         
                       H d |         $ 2 > P ^ r           ( 6 H \ p          * D P b z           0 @     InitializeCriticalSection U DeleteCriticalSection f EnterCriticalSection  LeaveCriticalSection   FreeLibrary >GetProcAddress  LoadLibraryW  LocalFree  FormatMessageW  GetLastError  KERNEL32.dll  HeapFree  HeapReAlloc HeapAlloc  GetCommandLineA tGetVersion  &GetModuleHandleA  $GetModuleFileNameA  	GetEnvironmentVariableA uGetVersionExA HeapDestroy HeapCreate  VirtualFree VirtualAlloc  } ExitProcess /RtlUnwind mSetHandleCount  RGetStdHandle  GetFileType PGetStartupInfoA TerminateProcess   GetCurrentProcess  GetCurrentThreadId  TlsSetValue TlsAlloc  TlsFree qSetLastError  TlsGetValue  FreeEnvironmentStringsA  FreeEnvironmentStringsW WideCharToMultiByte GetEnvironmentStrings GetEnvironmentStringsW  WriteFile jSetFilePointer  InterlockedDecrement  InterlockedIncrement   FlushFileBuffers   GetCPInfo  GetACP  1GetOEMCP  LoadLibraryA  |SetStdHandle   CloseHandle MultiByteToWideChar SGetStringTypeA  VGetStringTypeW  LCMapStringA  LCMapStringW      K        S   S   x   p     '  @+  0)  P-  p  "    $      0  P  @  `  `/  P1  N  0N   0  @3  1  0S  3  B  PE  7  ?   >   B   A  `G  p`  PV  0c  PX  p\  pr  a  PW  @e  `Z  p^  Pg  i  I  G  H  F  J  N  K   P  0N  L  o  0S  0R  `T  @3  1  m  pu  @w  {  P|  {  Pz  |   ~  ~        Ѐ     u  u  y  y  0y  x   
  J      
! L! ! ! " b" " " '# m# # # 7$ z$ $ $ >% % % & U& & & ' \' ' ' (( b( ( ( ) a) ) ) %* e* * * (+ h+ + + ", ], , , - L- - - . E. . . . D/ / / / >0 ~0 0 1 G1 1 1 2 N2 2 2 3 a3 3 3 4 [4 4           	 
   
                     ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R opensc-PKCS11-0.4.dll _Java_org_opensc_pkcs11_PKCS11Provider_loadNativePKCS11Module@12 _Java_org_opensc_pkcs11_PKCS11Provider_unloadPKCS11Module@16 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNative@52 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNativeOff@60 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNative@52 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNativeOff@60 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNative@52 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNativeOff@60 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNative@52 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNativeOff@60 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initDecryptNative@44 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initEncryptNative@44 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNative@52 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNativeOff@60 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNative@52 _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNativeOff@60 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initSignNative@44 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initVerifyNative@44 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_signNative@32 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative1@36 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative@44 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative1@36 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative@44 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_verifyNative@36 _Java_org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator_generateKeyPairNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Object_createObjectNative@36 _Java_org_opensc_pkcs11_wrap_PKCS11Object_deleteObjectNative@40 _Java_org_opensc_pkcs11_wrap_PKCS11Object_enumObjectsNative@36 _Java_org_opensc_pkcs11_wrap_PKCS11Object_getAllowedMechanismsNative@40 _Java_org_opensc_pkcs11_wrap_PKCS11Object_getAttributeNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Object_getBooleanAttributeNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Object_getULongAttributeNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_closeNative@32 _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptFinalNative@32 _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptInitNative@48 _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateOffNative@52 _Java_org_opensc_pkcs11_wrap_PKCS11Session_deriveKeyNative@52 _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptFinalNative@32 _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptInitNative@48 _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateOffNative@52 _Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyPairNative@48 _Java_org_opensc_pkcs11_wrap_PKCS11Session_initPINNative@36 _Java_org_opensc_pkcs11_wrap_PKCS11Session_loginNative@40 _Java_org_opensc_pkcs11_wrap_PKCS11Session_logoutNative@32 _Java_org_opensc_pkcs11_wrap_PKCS11Session_openNative@28 _Java_org_opensc_pkcs11_wrap_PKCS11Session_setPINNative@40 _Java_org_opensc_pkcs11_wrap_PKCS11Session_signFinalNative@32 _Java_org_opensc_pkcs11_wrap_PKCS11Session_signInitNative@48 _Java_org_opensc_pkcs11_wrap_PKCS11Session_signNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateByteNative@36 _Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_unwrapKeyNative@56 _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyFinalNative@36 _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyInitNative@48 _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyNative@48 _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateByteNative@36 _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateNative@44 _Java_org_opensc_pkcs11_wrap_PKCS11Session_wrapKeyNative@56 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_destroySlotNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_enumerateSlotsNative@16 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getDescriptionNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getFirmwareVersionNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getHardwareVersionNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getManufacturerNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getMechanismsNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenLabelNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenManufacturerNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMaxPinLenNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMinPinLenNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenModelNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenSerialNumberNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_hasTokenProtectedAuthPathNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_initSlotNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_initTokenNative@32 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_isHardwareDeviceNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_isRemovableDeviceNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_isTokenPresentNative@24 _Java_org_opensc_pkcs11_wrap_PKCS11Slot_waitForSlotNative@16                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     m                           <init>  (ILjava/lang/String;)V  org/opensc/pkcs11/wrap/PKCS11Exception  C_EncryptInit failed for slot %d.   C_DecryptInit failed for slot %d.   C_DecryptUpdate failed for slot %d. Invalid input offset %d.    NULL input data.    Invalid data length %d. C_EncryptUpdate failed for slot %d. Invalid output offset %d.   NULL output data.   C_DecryptFinal failed for slot %d.  C_EncryptFinal failed for slot %d.  C_Decrypt failed for slot %d.   C_Encrypt failed for slot %d.   C_SignInit failed for slot %d.  C_SignUpdate failed for slot %d.    C_SignFinal failed for slot %d. C_VerifyInit failed for slot %d.    C_VerifyUpdate failed for slot %d.  C_VerifyFinal failed for slot %d.   C_GenerateKeyPair failed.   getData ()[B    getKind ()I org/opensc/pkcs11/wrap/PKCS11Attribute  C_FindObjectsFinal failed for slot number %d.   C_FindObjects failed for slot number %d.    C_FindObjectsInit failed for slot number %d.    Out of memory during object enumeration for slot number %d. C_GetAttributeValue returned ulValueLen -1 for attribute %u but returned CKR_OK. The underlying PKCS#11 module seems to be broken.  C_GetAttributeValue failed for attribute %u.    C_GetAttributeValue returned ulValueLen -1 for attribute CKA_ALLOWED_MECHANISMS but returned CKR_OK. The underlying PKCS#11 module seems to be broken.  C_GetAttributeValue failed for attribute CKA_ALLOWED_MECHANISMS.    C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_ULONG) for attribute %u of type CK_ULONG but returned CKR_OK. The underlying PKCS#11 module seems to be broken.   C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_BBOOL) for attribute %u of type CK_BBOOL but returned CKR_OK. The underlying PKCS#11 module seems to be broken.   C_CreateObject failed.  C_DestroyObject failed. [B  C_OpenSession for PKCS11 slot %d failed.    pkcs11_slot_close_session: C_CloseSession for PKCS11 slot %d(%S) failed.    C_Login for PKCS11 slot %d failed.  PKCS11Session.logoutNative: C_Logout for PKCS11 slot %d(%S) failed (%s).    C_InitPIN for PKCS11 slot %d failed.    C_SetPIN for PKCS11 slot %d failed. C_Sign failed for slot %d.  C_Verify failed for slot %d.    C_GenerateKey failed.   C_WrapKey failed for slot %d.   C_UnwrapKey failed. C_DeriveKey failed. C_InitToken failed for module %S.   java/lang/IllegalArgumentException  Length of label exceeds 32 bytes    C_GetSlotList failed for module %S. C_WaitForSlotEvent failed.  C_GetMechanismList for PKCS11 slot %d failed.   No token present in slot %d.    Invalid value %u for ulMinPinLen of token in slot %d.   Invalid value %u for ulMaxPinLen of token in slot %d.   Unknown PKCS#11 error   CKR_VENDOR_DEFINED  CKR_FUNCTION_REJECTED   CKR_MUTEX_NOT_LOCKED    CKR_MUTEX_BAD   CKR_CRYPTOKI_ALREADY_INITIALIZED    CKR_CRYPTOKI_NOT_INITIALIZED    CKR_STATE_UNSAVEABLE    CKR_INFORMATION_SENSITIVE   CKR_SAVED_STATE_INVALID CKR_BUFFER_TOO_SMALL    CKR_DOMAIN_PARAMS_INVALID   CKR_RANDOM_NO_RNG   CKR_RANDOM_SEED_NOT_SUPPORTED   CKR_WRAPPING_KEY_TYPE_INCONSISTENT  CKR_WRAPPING_KEY_SIZE_RANGE CKR_WRAPPING_KEY_HANDLE_INVALID CKR_WRAPPED_KEY_LEN_RANGE   CKR_WRAPPED_KEY_INVALID CKR_USER_TOO_MANY_TYPES CKR_USER_ANOTHER_ALREADY_LOGGED_IN  CKR_USER_TYPE_INVALID   CKR_USER_PIN_NOT_INITIALIZED    CKR_USER_NOT_LOGGED_IN  CKR_USER_ALREADY_LOGGED_IN  CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT    CKR_UNWRAPPING_KEY_SIZE_RANGE   CKR_UNWRAPPING_KEY_HANDLE_INVALID   CKR_TOKEN_WRITE_PROTECTED   CKR_TOKEN_NOT_RECOGNIZED    CKR_TOKEN_NOT_PRESENT   CKR_TEMPLATE_INCONSISTENT   CKR_TEMPLATE_INCOMPLETE CKR_SIGNATURE_LEN_RANGE CKR_SIGNATURE_INVALID   CKR_SESSION_READ_WRITE_SO_EXISTS    CKR_SESSION_READ_ONLY_EXISTS    CKR_SESSION_EXISTS  CKR_SESSION_READ_ONLY   CKR_SESSION_PARALLEL_NOT_SUPPORTED  CKR_SESSION_HANDLE_INVALID  CKR_SESSION_COUNT   CKR_SESSION_CLOSED  CKR_PIN_LOCKED  CKR_PIN_EXPIRED CKR_PIN_LEN_RANGE   CKR_PIN_INVALID CKR_PIN_INCORRECT   CKR_OPERATION_NOT_INITIALIZED   CKR_OPERATION_ACTIVE    CKR_OBJECT_HANDLE_INVALID   CKR_MECHANISM_PARAM_INVALID CKR_MECHANISM_INVALID   CKR_KEY_UNEXTRACTABLE   CKR_KEY_NOT_WRAPPABLE   CKR_KEY_FUNCTION_NOT_PERMITTED  CKR_KEY_INDIGESTIBLE    CKR_KEY_NEEDED  CKR_KEY_CHANGED CKR_KEY_NOT_NEEDED  CKR_KEY_TYPE_INCONSISTENT   CKR_KEY_SIZE_RANGE  CKR_KEY_HANDLE_INVALID  CKR_FUNCTION_NOT_SUPPORTED  CKR_FUNCTION_NOT_PARALLEL   CKR_FUNCTION_CANCELED   CKR_ENCRYPTED_DATA_LEN_RANGE    CKR_ENCRYPTED_DATA_INVALID  CKR_DEVICE_REMOVED  CKR_DEVICE_MEMORY   CKR_DEVICE_ERROR    CKR_DATA_LEN_RANGE  CKR_DATA_INVALID    CKR_ATTRIBUTE_VALUE_INVALID CKR_ATTRIBUTE_TYPE_INVALID  CKR_ATTRIBUTE_SENSITIVE CKR_ATTRIBUTE_READ_ONLY CKR_CANT_LOCK   CKR_NEED_TO_CREATE_THREADS  CKR_NO_EVENT    CKR_ARGUMENTS_BAD   CKR_FUNCTION_FAILED CKR_GENERAL_ERROR   CKR_SLOT_ID_INVALID CKR_HOST_MEMORY CKR_CANCEL  CKR_OK       0 p         C_GetInfo in PKCS11 module %S failed.   C_Initialize in PKCS11 module %S failed.    C_GetFunctionList in PKCS11 module %S failed.   Cannot find function C_GetFunctionList in PKCS11 module C_GetFunctionList   Cannot open PKCS11 module   Out of memory allocating PKCS11 module name.    toCharArray ()[C    java/lang/String    Out of memory allocating PKCS11 context.    %s %S: %S   Invalid PKCS 11 module handle %p.   C_GetTokenInfo for PKCS11 slot %d failed.   C_GetSlotInfo for PKCS11 slot %d failed.    Out of memory allocating PKCS11 slot.   Invalid PKCS11 slot handle %p.  C_GetMechanismInfo failed for mechanism %u. (IIII)V org/opensc/pkcs11/wrap/PKCS11Mechanism      @    @                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             u  s  ͚   W        HXHX`X`X                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      HX      `                                                    x                                                                                                                                      
                                          	   \
   8               T   ,         x   y   tz   d   `   Pzz                    ( ( ( ( (                                     H                                                                                                                                                                                                                                                                                                                                                                          .             5      @                                                                                                                     x   
         `y!                       @~      ڣ                              @        ڣ                              A        Ϣ [                       @~    Q  Q^  _j2                   1~                               
      	               	      
                  
               
               !   
   5      A   
   C      P      R   
   S   
   W      Y      l   
   m       p      r   	            
      
      	            
      )      
                  
                          C   C                                                                                                                                   C                                                                                                                                               h    |xtplhd\PH@80(    .                             @         @         @        @@        P@        $@       @        @     4@   N@ p+ŝi@]%O@qוC)@D@<զIx@oGAkU'9p|Bݎ~QCv)/&D(DJzEeǑF
euuvHMXB䧓9;5SM]=];Z] T7aZ%]g']݀nLɛ R`%u    ?q=
ףp=
ף?Zd;On?,eX?#GGŧ?@il7?3=BzՔ?aw̫?/L[Mľ?S;uD?g9Eϔ?$#⼺;1az?aUY~S|_?/D?$?9'*?}d|FU>c{#Tw=:zc%C1<!8G ;܈Xㆦ;ƄEBu7.:3q#2IZ9Wڥ2hRDY,%I-64OSk%Y}ZW<P"NKeb}-ޟݦ
p     PST                                                             PDT                                                             (h                           ;   Z   x                 0  N  m     :   Y   w                 /  M  l                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                11n3w344444444t5}555666666777788888 99#9c9h9
::::::;;.;3;s;x;<#<<<=
=7=<===2>;>~>>>>??       00G0L000<1E111112223+303p3u3 4)4x44)5.5L5Q5{5555m6v666y7~77777d8m888999999q:z:::;;;;;;<<S<X<<====== >>#>c>h>
???? 0  p   U0Z0v0{000$1-111E2J2f2k2223333/4P4U4}44n7w7H8o8t888::;;g;s;H<M<<<l=x=>>>>??9?@? @  t   '000N0U000001111222233V3[3335 5556)7277788i9n9V:_:;;<<E=J=f=k===>>>>X?a??? P     000000c1l111333354>44444
55h5m5 6)6&7/7#8,88888999999::::;;;; <	<<<<<==6=;={==%>.>>>>>??6?;?{?? `  l   "0+001Z1c1X2a222333333l4u444555555y66667777799/:P:U:}::t=}=>>???   p  T   0	03080A2J222233446677777 889;<><u<<<O=X===c>m>S?]?       C0M031=1#2-2r2w23
3R3W3334445 5V5]555555555555555666"6,666@6J6T6^6h6r6|66666666666666777&707:7D7N7X7b7l7v77777777777777888 8*848;8B8I8P8W8^8e8l8s8z888888888888888888888888'9+9/93979;9?9C9G9K9O9S9W9[9_9c9g9k9o9s9w9{9999999999999::
::::::":&::::::::::::::::::::::<M<<<<<$=C=H===>8>N>[>p>>>>>>"?+?l??????         0%0d0001&1j1s111282=22233444445N55566-66$7*7e7k777777;8@8Y8g8899n9999999999
::.:7:S:v::::::::::::;	;;;;,;3;B;J;U;[;a;k;;;;;;;;<<y<<<<= =z==*>9>O>?      90C11117245555555566e6k666p7w777777777888"828I8U8[8k8q8x88888888;;;1;6;E;K;[;f;x;;;;;;;;;;;;;<<O<<>>>??$?+?1?;?A?F?L?\?e?????      03333344%4+434<4E444444555.545<5K5555
6666a7n7}77388y:::::::::::::::;;;J;e;u;{;;;:<T<]<U========>+>E>L>P>T>X>\>`>d>h>>>>>>*?5?P?W?\?`?d???????????       0J0P0T0X0\000000111111
2<2F2g2|2222	333=3b3r3w3334^4d4r444444
55+565;5E5J555555555555566667P7b777777778*8:8X8899:&<.<H<N<_<x<<<<<<<<<<==$======= >C>O>Y>m>{>>>>>>=??        e0~0000000111111
202=2K2V2i2222233;3P3f3m3{334474S4f44z5555>6661797?7G7777799999:<<<<<<<%=K=e=l=p=t=x=|=========J>U>p>w>|>>>>>>??????? ?j?p?t?x?|?      000022333;3A3G33333!477:;;;/;8;D;v;;;;;;;;;<<-<3<;<C<N<|<<<<<<<<=	===,=2=======>*>7>G>h>t>>>>>>>>>>>>>??
??:?      ]0j0000	1+1X1l1111122252=2C2I22222%3W3j3334a4f4444444445"5x5555555556606M6e6666&7779:\::::;D;];;;<<<<5>9>=>A>E>I>M>Q>U>Y>]>a>?-?>?[?     $   24F44555i55556f66    $   11 1,181D112555555 @    000   P (   222255(8,8084888<8H8L8P8T8 p H   h8t8888d9h9l9p9t9x99999999999999999::::    |   `0h0l0p0t0x0|000000000000000000000000000000000 11111 1$1(1,1014181<1@1D1P144                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      MZ                @                                       	!L!This program cannot be run in DOS mode.

$       '*3cK]cK]cK]=aK]=aK]=hK]=aK]j3`K]cK\LK]=hK]=bK]=bK]RichcK]        PE  d jR         " 
     L                                    0    (  @                                     <  @  <                                                                                                     .text   R                          `.rdata  <      >                 @  @.data                          @  .pdata                         @  @.rsrc                         @  @.reloc  T                        @  B                                                                                                                                                                                                                                                                                                IX  @SH IMtMA8оuDI@X3P
HK`Ht  HKHt  3HDBhR  HH [H%  L  H  LH [J  H\$WH@IHMt~A8оuuHtgA9u^L$p3HT$0HD$0HD$8$   D$0I@XDD$x   tJKL
  H  L$ HDa  H\$PH@_L  
MLC  Hܠ  藅  H\$PH@_H\$WH@IHMt~A8оuuHtgA9u^L$p3HT$0HD$0HD$8$   D$0I@XDD$x
  tJKL
  HP  L$ HD衆  H\$PH@_L?  
ML  H  ׄ  H\$PH@_@UAUAVH@Hl$0H]0Hu8H}@LeHH  H3HEIMHE     M  A8о  M  A9x  Hc}pyL؟  H  D9  t  HU`HuL̟  H]    S  DEhE  D;  HOIH;wIHHk  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPI  t%NL
q  Hʞ  L$ HD     E HHH;wIHH  ID$XH+HM Ll$0DHL$ MPMI  uHU H  HHtLDM E3HHLl$ A  H9EH-  L    L(  
MLl  H    3HMH3҄  H]0Hu8H}@LeHHeA^A]]@UAUAVH@Hl$0H]0Hu8H}@LeHH  H3HEIMHE     M  A8о  M  A9x  Hc}pyL  HQ  D	  t  HU`HuL  H-    S  DEhE  D;  HOIH;wIHH;  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPI   t%NL
i  H  L$ HD     E HHH;wIHH軌  ID$XH+HM Ll$0DHL$ MPMI   uHU H  HHtLDM E3HHLl$ A  H9EH  Lv  豀  L  
ML<  H՛  萀  3HMH3袂  H]0Hu8H}@LeHHeA^A]]@UATAUAVAWHPHl$0H]PHuXH}`Hj  H3HEMMHM  A8о  M  A9  Hc   yL|  H%  D    H    uLo  H       D   EX  D;O  H   HuL  HÚ  H{  _  HHHX  D   E E   D;   A+HHHE H;wHHH賊  H+HNHD$0HEH;wHHH菊  HH   H+DEH\$0HH\$ @  LuM_XMpHE MDHHD$ A  t$AL$L
  Hޙ  L$ HD/  vHDM H   EHLt$   E TL  H  EHP~  7L  H  E8~  L  
MLî  H\  ~  3HMH3)  H]PHuXH}`He A_A^A]A\]@UATAUAVAWHPHl$0H]PHuXH}`H  H3HEMMHM  A8о  M  A9  Hc   yL  H  D]}    H    uL  H  ;}    D   EX  D;O  H   HuL:  HC  H|  _  HHHX  D   E E   D;   A+HHHE H;wHHH3  H+HNHD$0HEH;wHHH  HH   H+DEH\$0HH\$ @  LuM_XMpHE MDHHD$ A   t$AL$L
-  H^  L$ HD}  vHDM H   EHLt$   E TL*  H  EH{  7L  H   E{  L  
MLC  Hܖ  {  3HMH3}  H]PHuXH}`He A_A^A]A\]@UATAUAVAWHPHl$0H]PHuXH}`Hj  H3HEE3IMHDm DmM^  A8оQ  M?  A92  Hc   yLq  H  Dz  +  H   HuLb  H  z    D   E  D;  HNIH;wIHH  HH+Lt$0DHLuLt$ @  L}pID$XHM HL$ E3DAI  t%L
  OHU  DL$ H{  _  DE IHI;w
HHHn  H+Lt$0Et%ID$XHUHM HL$ MDA  uID$XLE3A"  tL
  iMtCHQH;w
HHH  ID$XH+Ll$0LEAI"  uME LHA  HHtEDE EtLEHE3HLt$ A  DE DMEtHHHLl$   H9EH  L  x  L
  
MLN  H  x  3HMH3z  H]PHuXH}`He A_A^A]A\]@UATAUAVAWHPHl$0H]PHuXH}`Hz  H3HEE3IMHDm DmM^  A8оQ  M?  A92  Hc   yL  H*  Dw  +  H   HuLr  H  w    D   E  D;  HNIH;wIHH  HH+Lt$0DHLuLt$ @  L}pID$XHM HL$ E3DAI   t%L
7  OHe  DL$ Hx  _  DE IHI;w
HHH~  H+Lt$0Et%ID$XHUHM HL$ MDA   uID$XLE3A  tL
-  iMtCHQH;w
HHH  ID$XH+Ll$0LEAI  uME LHA  HHtEDE EtLEHE3HLt$ A  DE DMEtHHHLl$   H9EH  L  u  L  
ML^  H  u  3HMH3w  H]PHuXH}`He A_A^A]A\]@UATAUAVAWHPHl$0H]PHuXH}`H  H3HEMMHM  A8о  M  A9  Lc   EyL  HD  Et    H    uL  H  t       i  A;`  HH   X  D   E#  D;  A+HHFH;wHH  H+IMHD$0u HEI;wHHH  HD   H   H+EH\$0HH\$ @  IGXLMHM HH]pHL$ Eŋ  t'L
Џ  AL$H$  DL$ Huu     E MOXLE+ˉuHuHA"  t	L
  벋]LH   ] EHDHt$ A  TL  H  EH`s  7L  H  DHs  L  
MLӣ  Hl  's  3HMH39u  H]PHuXH}`He A_A^A]A\]@UATAUAVAWHPHl$0H]PHuXH}`H  H3HEMMHM  A8о  M  A9  Lc   EyL  H  Elr    H    uL  H  Jr       i  A;`  HH   X  D   E#  D;  A+HHFH;wHHo}  H+IMHD$0u HEI;wHHHH}  HD   H   H+EH\$0HH\$ @  IGXLMHM HH]pHL$ Eŋ   t'L
h  AL$H  DL$ Hr     E MOXLE+ˉuHuHA  t	L
  벋]LH   ] EHDHt$ A  TL*  H  EHp  7L  H   Dp  L  
MLC  H܋  p  3HMH3r  H]PHuXH}`He A_A^A]A\]@UAUAVH@Hl$0H]0Hu8H}@LeHHj  H3HEIMHM  A8о  M  A9  Hc}pyL  H(  Do  {  HU`HuLs  H  o  Z  DEhE  D;
  HOIH;wIHH{  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPIE       t%NL
  Hj  L$ HDp     E HHH;wIHHz  ID$XH+HM Ll$0DHL$ MPMI  uHU H  HHtLDM E3HHLl$ A  H9EH͉  LF  n  Lȟ  
ML  H  `n  3HMH3rp  H]0Hu8H}@LeHHeA^A]]@UAUAVH@Hl$0H]0Hu8H}@LeHH:  H3HEIMHM  A8о  M  A9  Hc}pyLO  H  Dm  {  HU`HuLC  HԈ  m  Z  DEhE  D;
  HOIH;wIHHx  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPIE        t%NL
ى  H:  L$ HDn     E HHH;wIHH[x  ID$XH+HM Ll$0DHL$ MPMI   uHU H  HHtLDM E3HHLl$ A  H9EH  L  Ql  L  
MLܜ  Hu  0l  3HMH3Bn  H]0Hu8H}@LeHHeA^A]]@UATAUAVAWHPHl$0H]PHuXH}`H
  H3HEMMHM  A8о  M  A9  Hc   yL  Hņ  D}k    H    uL  H  [k    D   EX  D;O  H   HuLZ  Hc  Hk  _  HHHX  D   E E   D;   A+HHHE H;wHHHSv  H+HNHD$0HEH;wHHH/v  HH   H+DEH\$0HH\$ @  LuM_XMpHE MDHHD$ A  t$AL$L
  H~  L$ HDk  vHDM H   EHLt$   E TLJ  H;  EHi  7L  H   Ei  L  
MLc  H  i  3HMH3k  H]PHuXH}`He A_A^A]A\]@UATAUAVAWHPHl$0H]PHuXH}`H  H3HEMMHM  A8о  M  A9  Hc   yL  HE  Dh    H    uL  H   h    D   EX  D;O  H   HuLڄ  H  Hh  _  HHHX  D   E E   D;   A+HHHE H;wHHHs  H+HNHD$0HEH;wHHHs  HH   H+DEH\$0HH\$ @  LuM_XMpHE MDHHD$ A   t$AL$L
  H  L$ HDOi  vHDM H   EHLt$   E TLʃ  H  EHpg  7L'  H  EXg  L  
ML  H|  7g  3HMH3Ii  H]PHuXH}`He A_A^A]A\]H\$WH@IHMt~A8оuuHtgA9u^L$p3HT$0HD$0HD$8$   D$0I@XDD$xR  tJKL
  HЁ  L$ HD!h  H\$PH@_L  
ML  H  Wf  H\$PH@_@UATAUH@Hl$0H]0Hu8H}@HN  H3HE MMHM
  A8о   M   A9   HcuhyLc  H  De     HUXHuLW  H  e     DE`Ex|D;wHNH;w
HHHq  HH+H\$0DHH\$ @  M]XMPDHAb  t[AL$L
I  Hj  L$ HDf  7EHO  LȀ  e  LJ  
ML  H'  d  HM H3f  H]0Hu8H}@HeA]A\]H\$WH@IHMt~A8оuuHtgA9u^L$p3HT$0HD$0HD$8$   D$0I@XDD$x  tJKL
  H  L$ HDe  H\$PH@_L  
MLÔ  H\  d  H\$PH@_@UATAUAVAWH   Hl$@H   H   H   H  H3HEPIHHEM~  A8оq  M_  A9R  HH_  P0HHX  HL
n  Lo  HH  LHE H+  HL
Q  LR  HH  HEH  L   HHIX  HDHHAH;wHHsn  H+3HD$@HEE   Hp     HDIHh  LH  LMHHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HHm  H+E3HD$@IHHLHD$ A@  HA;PHL   HHIX  DHHAH;wHHbm  H+3HD$@HE8E   Hp    HDIHh  LHr  LLE HHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HHl  H+E3HD$@IHHLHD$ A@  HA;O   LEHM HL$8E(HEH@XHMHU(HL$0HM8Dl$(HL$    EHE,    E4      H˅tL
~  H{  D+b  iH     HHtSEHM@A   HE@E HL$ HEHHE3HH  H!L  
LL̐  He{   `  3HMPH32b  H   H   H   He`A_A^A]A\]@UVWATAUAVAWH   Hl$0H  H  H3H   L(  MMLEHM  A8о|  Mj  A9]  HH>}  P0HHc  HL
M}  LN}  HH  HEH9  HL
3}  L4}  HH  HE H  HIHX  HDHHAH;wHH\j  H+3HD$0HEE   HxHDIHh  LH  LLEHHA  LE IԉGLHA  LHHLAX  DDOIAI;w
HHi  H+E3HD$0IHHLHD$ A@  HA;OLe   3~x  LHu(EOL|  Hy  H]  I[x    H   ID$XHUE   tL
|    ID$XLM HU0A    ˉ}    tL
|     E t$IHU0    HHE H;rHc߃    A        I   IIw  LH   LHELPXLM HU0A    A   DuvE 3҅t#HM0    I܋E HH;r tLeID$X      t=L
c{  AODL$ Hw  H	^  Iv  jAGL
{  D$ HH  LDE3HHHLl$ A  Iv  H!L\  
ML  H9w  [  3H   H3^  H  H   A_A^A]A\_^]@UHPHl$0H]0Hu8H}@HҴ  H3HEIHMN  A8оA  M/  A9"  u`UXMP3A   u HEEI@XLE    t"L
Ez  Hnv  DHωt$ \     Eu%L
Kz  HDv  A   Hωt$ \     HHH;w
HHH^f  UXH+MPHD$0LE HEHCXA      dUHσuL
y  D@Hu  t$ \  PH  HMLDMHL$ E3HHHA  H!L  
LLԊ  Hmu  (Z  3HMH3:\  H]0Hu8H}@He ]@UHPHl$0H]0Hu8H}@H  H3HEIIHM,  A8о  M
  A9   UXMP3HEEI@XLE A   E   @   tL
Ay  Ht  DHZ     Eu!L
ky  Ht  A   HZ     HHH;w
HHHd  UXH+MPHD$0LE HEHGXA      lEH˃uL
x  Ht  A   `Z  7LMLH׉D$ HV  !L  
ML3  Hs  X  3HMH3Z  H]0Hu8H}@He ]@SH@HD$`M   A8о   M   A9   T$xL$pHD$`HD$4I@XH|$P$   LD$0A   |$0D$<      t*L
v  Hs  DHˉ|$ cY  H|$P3H@[ËD$<t1L
fx  Hr  A   Hˉ|$(D$ )Y  H|$P3H@[ËD$`H|$PH@[L  Hr  ZW  3H@[MHr  L  <W  3H@[@SH@HD$` M   A8о   M   A9   T$xL$pHD$`HD$4I@XH|$P$   LD$0A   |$0D$<      t*L
u  Hq  DHˉ|$ 6X  H|$P2H@[ËD$<t1L
w  Hq  A   Hˉ|$(D$ W  H|$P2H@[D$`H|$PH@[L  Hqq  ,V  2H@[MHZq  L  V  2H@[@UATAUAVAWH`Hl$0H]`HuhH}pH
  H3HE MHM  A8о  M  A9  HHos  P0HH  HL
~s  Ls  HH  HEH  HL
ds  Les  HH  HEHs  L   HHIX  HDHHAH;wHH`  H+3HD$0HEE   Hpfff     HDIHh  LH   LLEHHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HH_  H+E3HD$0IHHLHD$ A@  HA;OIFXHU   LM E   tL
9v  H2o  DHU  $E !L)  
MLm  Ho  S  3HM H3U  H]`HuhH}pHe0A_A^A]A\]@SH HMtcA8оuZMt=A9u4I@XT$XL$P   tLL
u  Hn  DHH [T  L  Hin  H [S  MHUn  L  	S  H [@UH@Hl$0H] Hu(H}0H  H3HE HHH>u  IHP0LHHLA   tVHHHX  DDNIAI;w
HH^  H+E3HD$0HHHFLHD$ A@  HM H3lT  H] Hu(H}0He]H\$WH0IHM   A8о   HtuA9ulI@X|$`       EHL$PE3HL$ KE3Pbt-KL
:t  Hl  L$ HDLS  3H\$@H0_ËD$PH\$@H0_Lق  
ML  Hl  qQ  H\$@3H0_H\$WH IIMtYA8оuPHtBA9u9I@XL$PPjtIk  LODCHH`Hs  H\$0H _H%sk  LD  
ML  H!l  P  H\$0H _@UAUAVH@Hl$0H]0Hu8H}@Hީ  H3HE E3IIHEM   A8о   H   A9   L9m`tOHHU`X  DIFI;w
HH[  HU`H+HLl$0EE3HLl$ @  HFXUXMPEM   tAKL
r  H,k  L$ HD}Q  L$  
MLh  Hk  O  HM H3Q  H]0Hu8H}@HeA^A]]Ht$WH0IIMtuA8оulMt^A9uUI@XL$`   tbH\$@&B  Hi  LODFH^r  HH`H\$ i  H\$@Ht$HH0_LX  
ML  H5j  N  Ht$HH0_@UAUAVH@Hl$0H]0Hu8H}@H  H3HE E3IIHEM   A8о   H   A9   L9mXtOHHUXX  DIFI;w
HHY  HUXH+HLl$0EE3HLl$ @  HFXMPEIPRtAKL
q  HBi  L$ HDO  L:  
ML~~  Hi  M  HM H3O  H]0Hu8H}@HeA^A]]@UATAUAVAWH@Hl$0H]@HuHH}PH  H3HEE3IIHELm EM  A8о  M   A9   LehMtMHIX  DIGI;w
HHX  H+HLl$0EE3IHLl$ @  LepMtTHIHX  DIFI;w
HHDX  H+HHL$0EE3HM HL$ HI@  HFXLM M`EIDt$ PZtAOL
p  Hg  L$ HDM  L}  
ML|  Hug  0L  HMH3DN  H]@HuHH}PHeA_A^A]A\]@UHPHl$0H]0Hu8H}@H  H3HEIIHM   A8о   H   A9   3H}h HE HEE`E tUHHUhX  DDMIAI;w
HHV  LHUhH+E3HHD$0HEHD$ A@  HGXDEXMPHU R  tAKL
h  HPf  L$ HDL  LH|  
ML{  H%f  J  HMH3L  H]0Hu8H}@He ]@UATAUH@Hl$0H]0Hu8H}@HΣ  H3HE IMHM  A8о   M   A9   LcehEyLe  He  ECJ     HUXHuLe  Hge  "J     DE`EyEHJe  Le  I     IL$I;w
HHHiU  HH+H\$0EHH\$ @  M]XMPEHAb  tANL
f  Hd  L$ HD%K  Lz  
MLz  Hd  dI  HM H3xK  H]0Hu8H}@HeA]A\]H\$WH0IHMtqA8оuhHtZA9uQD$hL$`HT$PD$PI@XA   b  tJKL
e  Hd  L$ HDnJ  H\$@H0_Lz  
MLPy  Hc  H  H\$@H0_@UH@Hl$0H] Hu(H}0Le8H  H3HEIIHE     M   A8о   M   A9   I@XM@LE 3j  t%OL
Je  HCc  L$ HDI     E HPH;w
HHH]S  HFXM@H+LE Ld$0Ij  uHU H  HHtLDM E3HHLd$ A  H!Lx  
MLx  Hb  VG  3HMH3hI  H] Hu(H}0Le8He]@UAUAVH@Hl$0H]0Hu8H}@LeHH:  H3HEIMHE     M  A8о  M  A9w  HcuhyLHb  Ha  DF  s  HUXHuL<b  Ha  F  R  DE`EyEHa  L)b  dF  .  HNIH;wIHHQ  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPIZ  t%L
i  OH,a  DL$ H}G     E HHH;wIHHMQ  ID$XH+HM Ll$0DHL$ MPMIZ  t	L
b  HU H  HHtLDM E3HHLl$ A  H!Lv  
MLu  Hv`  1E  3HMH3CG  H]0Hu8H}@LeHHeA^A]]@UHPHl$0H]0Hu8H}@H  H3HEIIHM   A8о   H   A9   3H}h HE HEE`E tUHHUhX  DDMIAI;w
HHO  LHUhH+E3HHD$0HEHD$ A@  HGXDEXMPHU   tAKL
wa  HP_  L$ HDE  LHu  
MLt  H%_  C  HMH3E  H]0Hu8H}@He ]@UATAUH@Hl$0H]0Hu8H}@HΜ  H3HE MMHM
  A8о   M   A9   HcuhyL^  H^  DDC     HUXHuL^  Hh^  #C     DE`Ex|D;wHNH;w
HHHN  HH+H\$0DHH\$ @  M]XMPDHA  t[AL$L
9`  H]  L$ HD;D  7EH]  LH^  B  Ls  
MLs  H]  bB  HM H3vD  H]0Hu8H}@HeA]A\]H\$WH0D$hIHD$hMthA8оu_HtQA9uHI@XL$`HT$hA     tJKL
l_  H]  L$ HDnC  H\$@H0_Ls  
MLPr  H\  A  H\$@H0_@UATAVH@Hl$0H]0Hu8H}@H  H3HE IMHM   A8о   M   A9   H}X uL\  H]\  A     HHUXX  DIFI;w
HHwL  HUXH+HH\$0EE3HH\$ @  M\$XMPEHA  t)=   tENL
J^  H[  L$ HD$B  #!Lq  
MLq  H[  _@  2HM H3qB  H]0Hu8H}@HeA^A\]@UAUAWH@Hl$0H]0Hu8H}@LeHH:  H3HEIMHM|  A8оo  M]  A9P  LcehEyLN[  HZ  E?  K  HUXHuLB[  HZ  ?  *  DE`EyEHZ  L/[  j?    IL$HI;wHHHJ  HH+HL$0EHM HL$ H@  H}p HsHHUpX  DIGI;wHHJ  HUpH+HH\$0EE3HH\$ @  M]XHU MPLED|$ A  t)=   tENL
b  HY  L$ HD$@  #!Lo  
MLo  HY  _>  2HMH3q@  H]0Hu8H}@LeHHeA_A]]@UHPHl$0H]0Hu8H}@HB  H3HEIIHM   A8о   H   A9   3H}h HE HEE`E tUHHUhX  DDMIAI;w
HHI  LHUhH+E3HHD$0HEHD$ A@  HGXDEXMPHU 
  tAKL
X  HX  L$ HD>  Lxn  
MLm  HUX  =  HMH3$?  H]0Hu8H}@He ]@UHPHl$0H]0Hu8H}@H  H3HEIIHM   A8о   H   A9   3H}h HE HEE`E tUHHUhX  DDMIAI;w
HHG  LHUhH+E3HHD$0HEHD$ A@  HGXDEXMPHU    tAKL
W  H@W  L$ HD=  L8m  
ML|l  HW  ;  HMH3=  H]0Hu8H}@He ]@UAUAVH@Hl$0H]0Hu8H}@LeHH  H3HEIMHE     M  A8о  M{  A9n  HcuhyLV  HqV  D);  j  HUXHuLV  HMV  ;  I  DE`EyEH0V  LV  :  %  HNIH;wIHHMF  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPI  t%OL
SV  HU  L$ HD;     E HHH;wIHHE  ID$XH+HM Ll$0DHL$ MPMI  uHU H  HHtLDM E3HHLl$ A  H!L"k  
MLfj  HT  9  3HMH3;  H]0Hu8H}@LeHHeA^A]]@UAUAVH@Hl$0H]0Hu8H}@LeHH  H3HEIMHE     M  A8о  M{  A9n  HcuhyLT  HQT  D	9  j  HUXHuLT  H-T  8  I  DE`EyEHT  LT  8  %  HNIH;wIHH-D  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPI   t%OL
[T  HS  L$ HD9     E HHH;wIHHC  ID$XH+HM Ll$0DHL$ MPMI   uHU H  HHtLDM E3HHLl$ A  H!Li  
MLFh  HR  7  3HMH39  H]0Hu8H}@LeHHeA^A]]@UAUAVHPHl$0H]@HuHH}PLeXHz  H3HEIMHM  A8о  M  A9  LcuxEyLR  H7R  E6    H}h uLR  HR  6    EpyL}R  HQ  D6  f  H    uLR  HQ  6  D  HH   X  D   E E   D;   A+HHHE H;wHHHA  H+INHD$0HEI;wHHHA  HDEpHUhH+EH\$0HH\$ @  M]XLmM`HE MEHHD$ A  t"NL
Q  HP  L$ HDC7  ^HDM H   EHLl$   E <LQ  HP  EHd5  Lf  
MLe  HP  C5  3HMH3U7  H]@HuHH}PLeXHe A^A]]@UAUAVHPHl$0H]@HuHH}PLeXH  H3HEIMHM  A8о  M  A9  LcuxEyL.P  HO  E4    H}h uL$P  HO  p4    EpyLP  HO  DN4  f  H    uLhP  HqO  ,4  D  HH   X  D   E E   D;   A+HHHE H;wHHHc?  H+INHD$0HEI;wHHH??  HDEpHUhH+EH\$0HH\$ @  M]XLmM`HE MEHHD$ A   t"NL
aO  HN  L$ HD4  ^HDM H   EHLl$   E <L^O  HON  EH3  LKd  
MLc  H(N  2  3HMH34  H]@HuHH}PLeXHe A^A]]@UATAUH@Hl$0H]0Hu8H}@H  H3HE3IMHى} M   A8о   M   A9   I@XMPLE 3"  t%NL
N  HeM  L$ HD3     E HPH;w
HHH=  ID$XMPH+LE Ll$0I"  uU t0HH  HHtLDM E3HHLl$ A  H!Lb  
MLb  HL  s1  3HMH33  H]0Hu8H}@HeA]A\]@UATAUH@Hl$0H]0Hu8H}@HN  H3HE3IMHى} M   A8о   M   A9   I@XMPLE 3  t%NL
LM  HK  L$ HDF2     E HPH;w
HHH<  ID$XMPH+LE Ll$0I  uU t0HH  HHtLDM E3HHLl$ A  H!Lka  
ML`  HHK  0  3HMH32  H]0Hu8H}@HeA]A\]@UAUAVH@Hl$0H]0Hu8H}@LeHHڈ  H3HEIMHE     M  A8о  M{  A9n  HcuhyLJ  HJ  DI/  j  HUXHuLJ  HmJ  (/  I  DE`EyEHPJ  LJ  /  %  HNIH;wIHHm:  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPI  t%OL
KK  HI  L$ HD0     E HHH;wIHH9  ID$XH+HM Ll$0DHL$ MPMI  uHU H  HHtLDM E3HHLl$ A  H!LB_  
ML^  HI  -  3HMH3/  H]0Hu8H}@LeHHeA^A]]@UAUAVH@Hl$0H]0Hu8H}@LeHH  H3HEIMHE     M  A8о  M{  A9n  HcuhyLH  HqH  D)-  j  HUXHuLH  HMH  -  I  DE`EyEH0H  LH  ,  %  HNIH;wIHHM8  HH+Lt$0DHLt$ @  ID$XHM E3DHL$ MPI   t%OL
KI  HG  L$ HD-     E HHH;wIHH7  ID$XH+HM Ll$0DHL$ MPMI   uHU H  HHtLDM E3HHLl$ A  H!L"]  
MLf\  HF  +  3HMH3-  H]0Hu8H}@LeHHeA^A]]@UATAUAVAWHpHl$0H]pHuxH   H  H3HE0MHM&  A8о  M  A9  HHH  P0HH   HL
I  LI  HH  HE(H  HL
H  LH  HH  HEH  L   HHIX  HDHHAH;wHH6  H+3Ht$0Hu E   H     HDIHh  LH-  LLE(HHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HHq5  H+E3HD$0IHHLHD$ A@  HA;OHu L      E    EHE    MtHUH{IFXHM HUHL$    EL  tL
]M  HD  DH*  $E !L}Z  
MLY  HZD  )  3HM0H3'+  H]pHuxH   He@A_A^A]A\]@UATAUAVAWH   Hl$@H   H   H   Hށ  H3HEPIHHE8M  A8о  Mw  A9j  HH?F  P0HHp  HL
NF  LOF  HH  LHE0HC  HL
1F  L2F  HH  HEH  L   HHIX  HDHHAH;wHHS3  H+3HD$@HE(E   Hp     HDIHh  LH  LMHHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HH2  H+E3HD$@IHHLHD$ A@  HA;PHL   HHIX  DHHAH;wHHB2  H+3Ht$@Hu E   H    HDIHh  LH  LLE0HHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HH1  H+E3HD$@IHHLHD$ A@  HA;OHu L      E    EHE    MtHUHHE8LE(HM H@XHL$8HMHL$0   HUEDl$(Ht$   H˅tL
C  H@  D&  iH     HHtSEHM@A   HE@E HL$ HEHHE3HH  H!LPV  
LLU  H-@  $  3HMPH3&  H   H   H   He`A_A^A]A\]@UATAUHPHl$0H]@HuHH}PH}  H3HE3IMHى} M4  A8о'  M  A9  LEpEh}EH}Mt	HU.ID$XD   DExHM HUHL$(M`H|$   t%NL
H  H.?  L$ HD%     E HHH;w
HHHH/  ID$XD   DExH+HM HL$(M`Ll$0HULl$   uU t0HH  HHtLDM E3HHLl$ A  H!LT  
MLS  Hk>  &#  3HMH38%  H]@HuHH}PHe A]A\]@UATAUAVAWH   Hl$@H]pHuxH   H|  H3HE0MHM  A8о  Mm  A9`  HHi@  P0HHf  HL
x@  Ly@  HH  HE(H<  HL
^@  L_@  HH  HEH  L   HHIX  HDHHAH;wHH-  H+3HD$@HE E   HpD  HDIHh  LH  LLE(HHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HH,  H+E3HD$@IHHLHD$ A@  HA;OL      E    EHE    MtHUHL   HHIX  HFH;w
HHK,  H+HH\$@DE3IHH\$ @  M_XD      HE HUHD$8HE Dl$0HD$(Lˉt$ A  tL
D  H;  DH!  $E !LQ  
MLP  Ha;     3HM0H3."  H]pHuxH   He@A_A^A]A\]@UATAUAVAWHpHl$0H]pHuxH   Hx  H3HE0MHM/  A8о"  M  A9  HH\=  P0HH	  HL
k=  Ll=  HH  HE(H  HL
Q=  LR=  HH  HEH  L   HHIX  HDHHAH;wHHs*  H+3Ht$0Hu E   H     HDIHh  LH6  LLE(HHA  LEIԉFLHA  LHHLAX  DDNIAI;w
HH)  H+E3HD$0IHHLHD$ A@  HA;OHu L      E    EHE    MtHUHIFXD   HM HL$(   HULDl$   tL
B  H8  DH2  $E !LN  
MLN  H8  l  3HM0H3~  H]pHuxH   He@A_A^A]A\]H(IMMtA8оuDIH(  LM  HK8    3H(@SH IMtNA8оuEHt(A9u3A  H(  HH [H%D7  LM  H7  H [  MH7  L#M  H [y  @UVWATAUAVAWH`Hl$0H]xHu  H3HE L   L   E3EIIHM  A8о  M   A9   MtMHIX  DIEI;w
HH`'  H+HLt$0EE3IHLt$ @  H        IHHE HEHEHEHX  Dȃ ~L?  H@  Hg  wHHM E3HL$ HI@  L_XNLM EIASJtCHOL
?  H_6  HL$ HD  LVL  
MLK  H36    HM H3  H]xHe0A_A^A]A\_^]@UATAUH@Hl$0H]0Hu8H}@Hs  H3HE3IL] M  A8о   I@XLE 33P"t'HNL
H?  H5  HL$ ID     E IHHHH;wIHH%  HFXH+H|$0LE 3HP"uU HHHH;wIHHf%  H+Ht$0t H    HHU H;rI$I  M$DM HE3IHHt$ A  HMH4  LJ  b  3HMH3t  H]0Hu8H}@HeA]A\]@SH HMtLA8оuCI@XHT$@3E3  t!L
>  H34  DH  3H [ËD$@H [MH4  LeI    3H [H(Mt=A8оu4MtA9uAAhH(LI  H3  q  2H(MH3  LH  T  2H(H(Mt?A8оu6MtA9uAAhH(L[I  HD3    2H(MH.3  LH    2H(H(Mt@A8оu7MtA9uAAhH(LH  H2    2H(MH2  LH  q  2H(Hl$VH0IHM   A8о   MtrA9uiH\$@H|$H    A|G u
HHH  LU HNHHL$ DE3HHHA  H|$HHH\$@Hl$PH0^LH  
MLPG  H1    Hl$P3H0^Hl$VH0IHM   A8о   MtrA9uiH\$@H|$H@   A| u
HHH  LU HNHL$ DE3HHHA  H|$HHH\$@Hl$PH0^L<G  
MLF  H1    Hl$P3H0^H(MtKA8оuBMt4A9u+AAmfnAAlfnYrG  XH(LF  
MLF  H0  V  fWH(H(MtKA8оuBMt4A9u+AAofnAAnfnYF  XH(L>F  
MLE  H0    fWH(@UH@Hl$0H] Hu(H}0Le8Hm  H3HEIIHE     M   A8о   H   A9   I@XAILE 3P:t"KL
t9  Hu/  L$ HD  |E HHHH;w
HHH  HGXH+KLd$0LE IP:uE MLHHΉD$ i  !LE  
MLTD  H.    3HMH3  H] Hu(H}0Le8He]Hl$WH0IHM   A8о   M   A9   AAhH\$@Ht$Hu!AAHh.  L
8  A   D$       ƀ|o u
HHHE H  LU HOpHL$ DE3HHHA  Ht$HHH\$@Hl$PH0_LC  
ML=C  H-    Hl$P3H0_Hl$WH0IHM   A8о   M   A9   AAhH\$@Ht$Hu!AAHh-  L
7  A   D$       ƀ    u
HHHE H  LU H   HL$ DE3HHHA  Ht$HHH\$@Hl$PH0_LB  
ML7B  H,    Hl$P3H0_Hl$WH0IHM   A8о   M   A9   AAhH\$@Ht$Hu!AAHX,  L
y6  A   D$      ƀ    u
HHHE H  LU H   HL$ DE3HHHA  Ht$HHH\$@Hl$PH0_LA  
ML'A  H+  {  Hl$P3H0_Hl$WH0IHM   A8о   M   A9   AAhH\$@Ht$Hu!AAHH+  L
i5  A   D$      ƀ    u
HHHE H  LU H   HL$ DE3HHHA  Ht$HHH\$@Hl$PH0_L@  
ML@  H*  k  Hl$P3H0_H\$WH0IHM   A8о   HtxA9uoAAhu!AAHJ*  L
k4  A   D$   D   Aw	D;   vCLY4  H
*  HωD$      H\$@H0_L?  
ML:?  H)    H\$@3H0_H\$WH0IHM   A8о   HtxA9uoAAhu!AAHz)  L
3  A   D$   D   Aw	D9   vCL3  H:)  HωD$ 
     H\$@H0_L&?  
MLj>  H)  
  H\$@3H0_@SH0IMtZA8оuQHtCA9u:AAhu!AAH(  L
2  A   D$      H0[L>  
ML=  Hw(  2
  2H0[̅t   0  H;  H2  Á   "    Ɂ      HvHc    HH2  H2  H2  H2  H2  H2  H	3  H3  H)3  H13  HA3  HQ3  Hi3  H3  H3  H3  H3  H3  H3  H3  H4  H4  H)4  HA4  HQ4  Ha4  Hy4  H4  H4  H4  H4  H4  H4  H4  H4  H	5  H!5  H15  HI5  HY5  Ha5  Hq5  Hy5  H5  H5  H5  H5  H5  H5  H5  H6  H16  HA6  HQ6  Ha6  Hy6  H6  H6  H6  H6  H6  H7  Á               HsHc@    HH6  H6  H7  H7  H?7  HO7  H_7  Hw7  H7  H7  H7  H7  H7  H8  H8  H'8  H?8  HO8  Hg8  H8  H8  H8  H8  f       (  0  8  @  H  P  X  `  h  p  x                    Ȋ  Њ  ؊                      (  0  8  @  H  P  X  `  h  p  x                    ȋ  Ћ  ؋           ======	
============
======================================================= =====!"================#=============$%==============&'()*===========+,=-./012=======34==============56==============789=============:;<fB  J  R  Z  b  j  r  z                    ʌ  Ҍ  ڌ       	

H\$Ht$WH@IHHHD$h       HD$0    DHD$h3ҹ   A   D$(    HD$   L\$hL\$(L5  H!  LHH\$ `  HL$h  H\$PHt$XH@_@SH HHu	AH [ù(   H|$0   HHuGH|$0H [H2  H;H|$03H [@SH HHu	AH [3  HR   3H [H(HuAH(  3H(H(HuAH(  3H(H\$Ht$ WH0Hh   H  HHHu%LV4  Hw   2  3H\$PHt$XH0_ оHl$@Ld$HE3HN4  L`L``HP0H   LL
A4  LF4  HHA  H   LLHHA  HH   LHHAX  HcL-Hc  HLHCHuL3  H  g  FHDE3HL\$ H  HCfD$hHK{  HC`HuVLCH3  H?HKHt  HK`Ht1  H  3Hl$@Ld$HH\$PHt$XH0_H3  H,  Hu
LCH3  HKXЅt'L
3  HKH  DHL$ H.  jHCXH
\  Pt	L
3  HCXHKPt	L
3  HXH\$Hl$Ht$WH0H  AH  HHuL3  HB  H  3w3A  H  {HEXHSP*t	L
3  Cht;HEXHSpP2t*L
3  H  DHΉ|$ /  H  3HH\$@Hl$HHt$PH0_@SVATAUAWH   Hy[  H3HD$`HD$   LH3  ILL$@LD$HHP0LH   HL
3  L3  IHLt$x  LH   HE3MAHH$   `  HH   H$   3Et|    HL$HIGXILD$PPBD   D$XLDD$0D$TMƉD$(D$PIHˉD$ A   HtxLLDHHAp  HA;rHH$   H$   Lt$xHL$`H3&  HĐ   A_A]A\^[HL$@L
2  HˉT$ H  t  3@UATAUH0Hl$ H]0Hu8H}@HY  H3HE HHcMHBMHH;w
HH  LMPH+Ht$ MH  }1;|'HIH    P0HtLLHHAQpHM H3:  H]0Hu8H}@HeA]A\]LD$LL$ SVWH@HHD$0   3fffffff     HD$xMHL$0LHHD$ Ht$89t$0tLD$pуH@_^[@UATAUH@Hl$0H]0Hu8H}@HX  H3HE HHcEHBIHH;w
HH
  LMXLEPH+Ld$0I  }   ;|	   HHH    P0HHthLL
0  L{0  HHA  HHtBLIHA8  Ht-LELHHHD$ A   Ht
LHHAPhHM H3   H]0Hu8H}@HeA]A\]LL$ SUVWHHAHHD$0   3H$   HL$0LHD$(LL$ DHHl$89l$0t
L$   ƃHH_^][ff     H;
	W  uHfuH9  @SH      HH  H\  H\  HuC#H#   H
K    H
3    3H [HHXHhHxL` AUAVAWH 3ML8  V  #  DV  eH%0   HXH;t    3H\  uA    \  t       H
[    LH   H
[    MLHHI;rZH9} t  H9E tHM p  H  HE H
[  T  H
[  HD  L;uL;tLLI  {  HT[  HU[  =7[  E   H=/[     3      eH%0   HXH;t    3HZ  u   Z  t     >Hx  H
a  Z     b  uH?  H
0  E  Z     u
HHZ  H9=Z  t!H
Z    tMĺ   IqZ  T     H\$@Hl$HH|$PLd$XH A_A^A]HHXHpHxATH0IL   XT  u9_T  u
3ۉX   tu7H  HtЋ؉D$    LƋI0؉D$    LƋIe  ؉D$ u5u1L3II  L3ILE  MtL3IAӅtu7LƋI#ˋىL$ tH
  HtLƋIЋ؉D$ 3ۉ\$ #S  H\$@Ht$HH|$PH0A\H\$Ht$WH IHu  LǋHH\$0Ht$8H _HL$H   H
S    HT  HD$XE3HT$`HL$X=  HD$PH|$P tAHD$8    HD$HHD$0HD$@HD$(H`S  HD$ LL$PLD$XHT$`3  "H$   H,T  H$   HHS  HT  HR  H$   HS  ZR  	 TR     HQ  HD$hHQ  HD$pR  R     J  3B  H
{  =  =R   u
   "  ,  	 H&  HĈ   H
EW    @SH HH
XW    HD$8HuH&  ~     H
*W    HD$8H
W    HD$@H  HLD$@HT$8  HHL$8  HV  HL$@  HV     ]  HH [H(GHH(H\$WH H)  H=)  HHtHH;rH\$0H _H\$WH H)  H=)  HHtHH;rH\$0H _HMZ  f9t3HcH<H39PE  u  f9QLcA<E3LLA@EXJL EtQL;r
AL;rAH(E;r3HH(LL
_Ijt"M+IIHt@$Ѓ3H(%  %z  %d  %V  %H  H(uH=   u     H(H\$WH HO  Hd$0 H2-+  H;tHHN  vHL$0  H\$0$  DI3   DI3  HL$8DI3  L\$8L3H  L#H3-+  L;LDL~N  IL|N  H\$@H _%  %\  %N  %0  %2  %  %  @SH EHLAA LtA@McPLHcL#IcJHCHHKAtAHLL3IH [H(MA8HI   H(ff     HL$L\$M3LT$L+MBeL%   M;sfA M A M;uL$L\$H%  @UH HHHM(HM$H ]@UH H
M  H ]@UH H   H ]@UH HH3Ɂ8  H ]                                                                                                                                                                                          2      B      T      l      |                        8      "                                                h      L      8      $      N                                                                    n      `      P      B      6      (                                                h                                                      jR       ^     Ȱ              p        C_EncryptInit failed for slot %d.       org/opensc/pkcs11/wrap/PKCS11Exception  C_DecryptInit failed for slot %d.       Invalid data length %d. NULL input data.        Invalid input offset %d.        C_DecryptUpdate failed for slot %d.     C_EncryptUpdate failed for slot %d.     NULL output data.       Invalid output offset %d.       C_DecryptFinal failed for slot %d.      C_EncryptFinal failed for slot %d.      C_Decrypt failed for slot %d.   C_Encrypt failed for slot %d.   C_SignInit failed for slot %d.  C_SignUpdate failed for slot %d.        C_SignFinal failed for slot %d. C_VerifyInit failed for slot %d.        C_VerifyUpdate failed for slot %d.      C_VerifyFinal failed for slot %d.       org/opensc/pkcs11/wrap/PKCS11Attribute  ()I     getKind ()[B    getData C_GenerateKeyPair failed.       Out of memory during object enumeration for slot number %d.     C_FindObjectsInit failed for slot number %d.    C_FindObjects failed for slot number %d.        C_FindObjectsFinal failed for slot number %d.   C_GetAttributeValue failed for attribute %u.    C_GetAttributeValue returned ulValueLen -1 for attribute %u but returned CKR_OK. The underlying PKCS#11 module seems to be broken.              C_GetAttributeValue failed for attribute CKA_ALLOWED_MECHANISMS.                C_GetAttributeValue returned ulValueLen -1 for attribute CKA_ALLOWED_MECHANISMS but returned CKR_OK. The underlying PKCS#11 module seems to be broken.          C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_ULONG) for attribute %u of type CK_ULONG but returned CKR_OK. The underlying PKCS#11 module seems to be broken.   C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_BBOOL) for attribute %u of type CK_BBOOL but returned CKR_OK. The underlying PKCS#11 module seems to be broken.   C_CreateObject failed.  C_DestroyObject failed. [B      C_OpenSession for PKCS11 slot %d failed.                pkcs11_slot_close_session: C_CloseSession for PKCS11 slot %d(%S) failed.        C_Login for PKCS11 slot %d failed.              PKCS11Session.logoutNative: C_Logout for PKCS11 slot %d(%S) failed (%s).        C_InitPIN for PKCS11 slot %d failed.    C_SetPIN for PKCS11 slot %d failed.     C_Sign failed for slot %d.      C_Verify failed for slot %d.    C_GenerateKey failed.   C_WrapKey failed for slot %d.   C_UnwrapKey failed.     C_DeriveKey failed.     Length of label exceeds 32 bytes        java/lang/IllegalArgumentException      C_InitToken failed for module %S.       C_GetSlotList failed for module %S.     C_WaitForSlotEvent failed.      C_GetMechanismList for PKCS11 slot %d failed.   No token present in slot %d.    Invalid value %u for ulMinPinLen of token in slot %d.   Invalid value %u for ulMaxPinLen of token in slot %d.   CKR_OK  CKR_CANCEL      CKR_HOST_MEMORY CKR_SLOT_ID_INVALID     CKR_GENERAL_ERROR       CKR_FUNCTION_FAILED     CKR_ARGUMENTS_BAD       CKR_NO_EVENT    CKR_NEED_TO_CREATE_THREADS      CKR_CANT_LOCK   CKR_ATTRIBUTE_READ_ONLY CKR_ATTRIBUTE_SENSITIVE CKR_ATTRIBUTE_TYPE_INVALID      CKR_ATTRIBUTE_VALUE_INVALID     CKR_DATA_INVALID        CKR_DATA_LEN_RANGE      CKR_DEVICE_ERROR        CKR_DEVICE_MEMORY       CKR_DEVICE_REMOVED      CKR_ENCRYPTED_DATA_INVALID      CKR_ENCRYPTED_DATA_LEN_RANGE    CKR_FUNCTION_CANCELED   CKR_FUNCTION_NOT_PARALLEL       CKR_FUNCTION_NOT_SUPPORTED      CKR_KEY_HANDLE_INVALID  CKR_KEY_SIZE_RANGE      CKR_KEY_TYPE_INCONSISTENT       CKR_KEY_NOT_NEEDED      CKR_KEY_CHANGED CKR_KEY_NEEDED  CKR_KEY_INDIGESTIBLE    CKR_KEY_FUNCTION_NOT_PERMITTED  CKR_KEY_NOT_WRAPPABLE   CKR_KEY_UNEXTRACTABLE   CKR_MECHANISM_INVALID   CKR_MECHANISM_PARAM_INVALID     CKR_OBJECT_HANDLE_INVALID       CKR_OPERATION_ACTIVE    CKR_OPERATION_NOT_INITIALIZED   CKR_PIN_INCORRECT       CKR_PIN_INVALID CKR_PIN_LEN_RANGE       CKR_PIN_EXPIRED CKR_PIN_LOCKED  CKR_SESSION_CLOSED      CKR_SESSION_COUNT       CKR_SESSION_HANDLE_INVALID      CKR_SESSION_PARALLEL_NOT_SUPPORTED      CKR_SESSION_READ_ONLY   CKR_SESSION_EXISTS      CKR_SESSION_READ_ONLY_EXISTS    CKR_SESSION_READ_WRITE_SO_EXISTS        CKR_SIGNATURE_INVALID   CKR_SIGNATURE_LEN_RANGE CKR_TEMPLATE_INCOMPLETE CKR_TEMPLATE_INCONSISTENT       CKR_TOKEN_NOT_PRESENT   CKR_TOKEN_NOT_RECOGNIZED        CKR_TOKEN_WRITE_PROTECTED       CKR_UNWRAPPING_KEY_HANDLE_INVALID       CKR_UNWRAPPING_KEY_SIZE_RANGE   CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT    CKR_USER_ALREADY_LOGGED_IN      CKR_USER_NOT_LOGGED_IN  CKR_USER_PIN_NOT_INITIALIZED    CKR_USER_TYPE_INVALID   CKR_USER_ANOTHER_ALREADY_LOGGED_IN      CKR_USER_TOO_MANY_TYPES CKR_WRAPPED_KEY_INVALID CKR_WRAPPED_KEY_LEN_RANGE       CKR_WRAPPING_KEY_HANDLE_INVALID CKR_WRAPPING_KEY_SIZE_RANGE     CKR_WRAPPING_KEY_TYPE_INCONSISTENT      CKR_RANDOM_SEED_NOT_SUPPORTED   CKR_RANDOM_NO_RNG       CKR_DOMAIN_PARAMS_INVALID       CKR_BUFFER_TOO_SMALL    CKR_SAVED_STATE_INVALID CKR_INFORMATION_SENSITIVE       CKR_STATE_UNSAVEABLE    CKR_CRYPTOKI_NOT_INITIALIZED    CKR_CRYPTOKI_ALREADY_INITIALIZED        CKR_MUTEX_BAD   CKR_MUTEX_NOT_LOCKED    CKR_FUNCTION_REJECTED   CKR_VENDOR_DEFINED      Unknown PKCS#11 error   %s %S: %S       Out of memory allocating PKCS11 context.        java/lang/String    ()[C        toCharArray     Out of memory allocating PKCS11 module name.    Cannot open PKCS11 module       C_GetFunctionList       Cannot find function C_GetFunctionList in PKCS11 module C_GetFunctionList in PKCS11 module %S failed.   C_Initialize in PKCS11 module %S failed.        C_GetInfo in PKCS11 module %S failed.   Invalid PKCS 11 module handle %p.       Out of memory allocating PKCS11 slot.   C_GetSlotInfo for PKCS11 slot %d failed.        C_GetTokenInfo for PKCS11 slot %d failed.       Invalid PKCS11 slot handle %p.  org/opensc/pkcs11/wrap/PKCS11Mechanism  (IIII)V <init>  C_GetMechanismInfo failed for mechanism %u.     (ILjava/lang/String;)V  {Gz?RSDSTg')!B<*J   C:\projects\pkcs11\jni\build\msvc10\x64\Release\opensc-pkcs11-x64.pdb                                        t
 T	 4 2 2P t
 d	 4 R       ݜ    ݜ             d 4 2p   20     מ  =  
      	 B       g    0    
 
4 
2p)%t d 4
 #
RP  (      !   t       ! t       %	5t d 4
 3rP  (  0   
 
	p`P0   r
p`0!     t  T p  ڔ     !   p  ڔ     !   ڔ       !          ! t        ! T ڔ       !  p  ڔ       	`0  (  `    d
 T	 4 Rp d 4
 rp R0!   p      !
 
d	 4 p      !   `      !
 
d	 4 `      
 
T
 
Rp!   P      !
 
d	 4 P      !   P      !
 
d	 4 P      !   @  t  <  !
 
t	 4 @  t  <  
 
T
 
R`!   p    <  !
 
t	 4 p    <  )5t d
 4 3
rP  (  8   '54 3
p`P  (  P   3
E%t d 4 C
P  (  p   )5t d 4 3
P  (  H   0
5"t d 4 3
P  (  `   -
5 t d 4 3
P  (  @   -
5 t d
 4 3
rP  (  8   )5t d
 4 3
rP  (  0   )5
 t d 4
 3rP  (  8   )5t d
 4 3
rP  (  0   -
5t d 4 3r
P  (  8   !   @G  G  4  ! 4 @G  G  4  
 
d	 
Rp)5t d
 4 3
rP  (  0   
 
4 
2p
 
4 
Rp-
5t d 4 3
P  (  P   !   ?  ?    !   t
 ?  ?    ! t
 ?  ?     r0!   p>  >    !   t
 p>  >    ! t
 p>  >    %	5t d
 4 3P  (  @   054' 3 
p`P(     9E+t $d 4 C 
P(     
 
4
 
rp-
5 t d
 4 3
rP  (  8   -
5t d 4 3
P  (  @    20!   	  T `      !
 
	 T `       d 4
 Rp B                        `                                                  2      B      T      l      |                        8      "                                                h      L      8      $      N                                                                    n      `      P      B      6      (                                                h              hFreeLibrary InitializeCriticalSection ALoadLibraryW  dFormatMessageW  ;LeaveCriticalSection  GetLastError  LGetProcAddress   EnterCriticalSection   DeleteCriticalSection JLocalFree KERNEL32.dll  cfree  malloc  realloc T__iob_func  [fprintf _vsnprintf  MSVCR100.dll  _malloc_crt _initterm _initterm_e _encoded_null _amsg_exit  __C_specific_handler  __CppXcptFilter F__crt_debugger_hook @__clean_type_info_names_internal  [_unlock H__dllonexit _lock _onexit  EncodePointer  DecodePointer Sleep TerminateProcess  GetCurrentProcess UnhandledExceptionFilter  SetUnhandledExceptionFilter IsDebuggerPresent &RtlVirtualUnwind  RtlLookupFunctionEntry  RtlCaptureContext  DisableThreadLibraryCalls QueryPerformanceCounter GetTickCount  GetCurrentThreadId  GetCurrentProcessId GetSystemTimeAsFileTime memset                    jR         S   S       @       p&  *  (  P-  p  P!  `  #  P      p  @    /  2  @N  0  M  S  T  @U  2  @  @C  6  <  ;  ?  p>  pE   d  X   g   [  `_  v  e  Y   i  @]  a  @k  m  G   F  @G  D   I  @N  J  O  M  L  s  @U  Q  V  T  S   r  y  |  @      p    P  P  P    `  p     y  `z     ~   ~  }    9  r      &  d      '  j      #  e      #  b        [      !  ]        T        K        >  x      )  g      $  \        5  o        W        ?        .  j      &  c        Z        ]        G              	 
   
                     ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R opensc-pkcs11-x64.dll Java_org_opensc_pkcs11_PKCS11Provider_loadNativePKCS11Module Java_org_opensc_pkcs11_PKCS11Provider_unloadPKCS11Module Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initSignNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initVerifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_signNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative1 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative1 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_verifyNative Java_org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator_generateKeyPairNative Java_org_opensc_pkcs11_wrap_PKCS11Object_createObjectNative Java_org_opensc_pkcs11_wrap_PKCS11Object_deleteObjectNative Java_org_opensc_pkcs11_wrap_PKCS11Object_enumObjectsNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAllowedMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getBooleanAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getULongAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Session_closeNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateOffNative Java_org_opensc_pkcs11_wrap_PKCS11Session_deriveKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateOffNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyPairNative Java_org_opensc_pkcs11_wrap_PKCS11Session_initPINNative Java_org_opensc_pkcs11_wrap_PKCS11Session_loginNative Java_org_opensc_pkcs11_wrap_PKCS11Session_logoutNative Java_org_opensc_pkcs11_wrap_PKCS11Session_openNative Java_org_opensc_pkcs11_wrap_PKCS11Session_setPINNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_unwrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_wrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_destroySlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_enumerateSlotsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getDescriptionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getFirmwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getHardwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getManufacturerNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenLabelNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenManufacturerNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMaxPinLenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMinPinLenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenModelNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenSerialNumberNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_hasTokenProtectedAuthPathNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initTokenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isHardwareDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isRemovableDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isTokenPresentNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_waitForSlotNative                                                                                                                                                                                                                                                                                                                                     2-+  ] f             @                           u                                                                                                                                                                                                                                                                                                                                                                                                                                                      D    P        8    @  h    p        a    p  V    `  F!    P!  #    #  a&    p&  (    (  *    *  A-    P-  /    /  0    0  2    2  2    2  6  `  6  ;  <  ;  <    <  i>    p>  >    >  ?    ?  T?    T?  c?    c?  ?    ?  ?    ?  G@    G@  @    @  @    @  @    @  7C  |  @C  C    C  D  \  D  lE  p  pE  E  d   F  6G  @  @G  G  4  G  G     G  G    G   I  @   I  J    J  L    L  M    M  7N  p  @N  O    O  Q    Q  S    S  T    T  7U  p  @U  V  |  V  X  T  X  Y    Y  [     [  >]    @]  ^_    `_  a  ,  a  d  ,   d  e  p  e  f  p   g  i     i  >k    @k  m    m  r  `   r  s    s  v    v  y    y  y  ,  y  Wz    `z  |    |  }  p  }  ~     ~  ~  ,  ~  ~  ,     f  ,  p    <    
  X  
  9  H  @  t  <  t  ݀  $  ݀  	        ,      ,    L    P                L    P        &    &  R    `        6    6  b    p        F  x  F  r  h    O  p  P    p       `      P          ͐  H  ͐    4           >  ,  @  ^  ,  `                    f  <  p  ڔ     ڔ                                  ڕ    ڕ          ̖    Ж  :    @  n    p  ֘  |      H    n    p  ɛ  L  ̛    p    E    H        P    P  g  ,  h    d    ؟  d  `          ,        ġ  '    (  E  ,  `    8      h    
  h  
  %  h  0  R  h                                                                                                                                                                                                                                                                                                                                                                                  0                	  H   X Z        <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>PAPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPADDINGPADDINGXXPAD      ء         (0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ELF              #  4   x     4    (                  P  P               `  h                                    $   $         Ptd`  `  `  d  d        Qtd                          Rtd                         GNU hQ,T/h5C         	   (	 
  H@  ! @,P`:ggĂA @
VIsp                        $                           &       '       *   ,   -   .   /   0   1   3   4   8   :   <   =   >   ?   A       C   E   F       H   J   M   N   P   R   U   W   Z           [       \       ]   ^   _   c   e           f   h       j   l   m   U~^0ٶWe繧/7ceuO(kU\$l0hR%թn!Da [ݩR31O_ƶy'2LeٺCz]9]F<dF$MJ-!zcѾiF!lL#̨Qف;Xtm <w9ߙ1`e,=ѣr4P.+?Gp+< -.62M9 ɹ[
p=6V0R.CE	F}퍸1pokH驤|HV7_έH`#Cd@eD*qX/U                             :             b                                       

             x                          O                        "   
                                                                                             %                                            @)                v   $  =       04         A  q    ^  @       v   6       	  `P  R      `*  p     P  @       9   `$  9     @         o  02         03         8  F    `  _  J      =  V      +       t	   O  V             
  @Z        @        6      (  `]  R       X          @  *      @+                 0/               <  @-         Pn        E  V    G  @G        ("       	 4  01         I  s    	  R  R    B  `         I       L  k  @    ,
   U      
  z  U      )  m     O  `       E  *  p       d  ?    K
  @y      I           p  	      b        @q  $        s       $  p        Й      
  [        0i      #  0?        }      
  pw         P%            	      7       U  '  y                    	  pK  $    {  :  >      @  q      Ћ         h          z      `C  u        	    |  -  I      00         p          	    
  P|  U    D  :          <        %              /  05       m
  W      8	  M  V    H          h        ,        __gmon_start__ _fini __cxa_finalize _Jv_RegisterClasses Java_org_opensc_pkcs11_PKCS11Provider_loadNativePKCS11Module Java_org_opensc_pkcs11_PKCS11Provider_unloadPKCS11Module Java_org_opensc_pkcs11_wrap_PKCS11Slot_initSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_destroySlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initTokenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_enumerateSlotsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_waitForSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isTokenPresentNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isRemovableDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isHardwareDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getManufacturerNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getDescriptionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getHardwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getFirmwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenLabelNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenManufacturerNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenModelNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenSerialNumberNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMinPinLenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMaxPinLenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_hasTokenProtectedAuthPathNative mechanismFromJavaObject Java_org_opensc_pkcs11_wrap_PKCS11Session_openNative Java_org_opensc_pkcs11_wrap_PKCS11Session_closeNative stderr __fprintf_chk Java_org_opensc_pkcs11_wrap_PKCS11Session_loginNative Java_org_opensc_pkcs11_wrap_PKCS11Session_logoutNative Java_org_opensc_pkcs11_wrap_PKCS11Session_initPINNative Java_org_opensc_pkcs11_wrap_PKCS11Session_setPINNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateOffNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateOffNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyPairNative Java_org_opensc_pkcs11_wrap_PKCS11Session_wrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_unwrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_deriveKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Object_enumObjectsNative malloc realloc free Java_org_opensc_pkcs11_wrap_PKCS11Object_getAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAllowedMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getULongAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getBooleanAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_createObjectNative Java_org_opensc_pkcs11_wrap_PKCS11Object_deleteObjectNative Java_org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator_generateKeyPairNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initSignNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative1 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_signNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initVerifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative1 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_verifyNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNativeOff pthread_mutex_unlock pthread_mutex_lock pthread_mutex_destroy pthread_mutex_init lt_dlinit lt_dlopen lt_dlsym lt_dlclose lt_dlexit lt_dlerror __vsnprintf_chk libltdl.so.7 libc.so.6 __stack_chk_fail _edata __bss_start _end GLIBC_2.3.4 GLIBC_2.1.3 GLIBC_2.4 GLIBC_2.0                                                                                                                                   ti	        si	   $     ii
   0     ii
   :      L    P    T    X    \        
   
                            	    
  $   (   , 
  0   4   8   <   @   D   H   S    [  t     Ϥ  [                       h       h      h      h      h        h(   $   h0   (   h8   p,   h@   `0   hH   P4   hP   @8   hX   0<   h`    @   hh   D   hp    H   hx   L   h   P   h   T   h   UVS   J  t    u]tX   $x    )9s     x   x   9rƃt   [^]US.     $tt$$Ѓ[]Ë$ÐVt$ D$(4$D$蘐  tt$ D$$^c  v 11^Í&    Vt$ D$(T$,4$D$T$@  tt$ D$$^鋓  v ^Ðt$D$(t$ T$,|$|$0D$4$T$  t1|$D$4$  tt$ |$t$D$$  t& 11ҋt$|$Ã,D$@T$Dt$$t$0|$(D$D$8T$T$<4$D$T$y  t;D$T$4$D$T$蛔  t|$4|$(t$0t$$D$8,۔  v t$$|$(,Í        UWVS|UMc   uEUU$MM 4$D$UUMe
   M1ɉT$ϑ  E  UM4$T$L$  E   E1E    tIM4$L$  MEU)ċ|$#|$T$D$    L$4$   UE    E    E    E    E    E    E    E    T$4$   cMċL$MD$D$    4$L$   UMċBTL$UM|$T$Q$P(u6Ee3   uVe[^_]fD$D$4$  fMQD$D$4$T$̷T$莞  G  &    UWVS)  L}e   E1UEE    }ԉ<$D$T$  E       @TUT$UD$    $    PU̅   E   )ċGTt$#T$t$$    P   M   1ҍ   )č|$#t1v D    ǃ9uUԋ$L$  UԉEЋ|$}ЋUD$    |$}ԉT$<$P  Ue3   Eu8e[^_]Ít& W}ԉD$D$T$T$<$  ǝ  &    <\$,D$Hä  T$Ll$8l$@t$01|$41D$T$,$肎  t*@TT$D$    T$$      u"t$1\$,t$0|$4l$8<Ít& ڸD$T$D$,$X      ,D$@T$Dt$$t$0|$(1D$D$8T$T$<4$D$T$׍  t"D$T$4$D$T$  txht$$|$(,Ív ,D$@T$Dt$$t$0|$(1D$D$8T$T$<4$D$T$g  t%D$T$4$D$T$苏  t	@h׉t$$|$(,Ã,D$@T$Dt$$t$0|$(1D$D$8T$T$<4$D$T$  t%D$T$4$D$T$  t	@h׉t$$|$(,UW1V0D$PT$Tt$@D$(D$HT$,T$L4$D$T$茌  toT$,D$(4$T$D$谎  tQ    v t|*G tT$$l$4$  T$$HǋT$l$D$    |$4$@  0^_]UW1V0D$PT$Tt$@D$(D$HT$,T$L4$D$T$܋  toT$,D$(4$T$D$   tQ@   v t|* tT$$l$4$  T$$ǋT$l$D$    |$4$@  0^_]Ã<\$,D$HD  T$Ll$8l$@t$0t$P|$4|$TD$T$,$  tJt$|$,$J  t6PlfT$@mD$fD$D$܋\$,t$0|$4l$8<荶        <\$,D$Hä  T$Ll$8l$@t$0t$P|$4|$TD$T$,$~  tJt$|$,$誌  t6PnfT$@oD$fD$D$܋\$,t$0|$4l$8<荶        UWVS\UEc   E    UԋUEȋEUe   U1ҋUD$T$Uԉ$Ή  E       ŰEȉT$UԉD$$  tzMFTL$D$    WMĉ$P MąuqE   )ċFTT$#T$L$OUĉ$P Uąu=ET$Uԉ|$t$D$$W  EЋUe3   Eu9e[^_]Ðt& WD$D$T$<T$Uԉ$  ח  &    UW1VS<D$`T$dî  t$PD$(D$XT$,T$\4$D$T$萈  tsT$,D$(4$T$D$贊  tU@ht`    t|*o tT$$l$4$  T$$pǋT$l$D$    |$4$@  <[^_]Í&    @T$$D$   4$D$D$D$  T$$hUW1VS<D$`T$dî  t$PD$(D$XT$,T$\4$D$T$萇  tyT$,D$(4$T$D$贉  t[@ht`    t
*    tT$$l$4$  T$$   ǋT$l$D$    |$4$@  <[^_]Ð@T$$D$   4$D$D$D$  T$$hUW1VS<D$`T$dî  t$PD$(D$XT$,T$\4$D$T$萆  tyT$,D$(4$T$D$贈  t[@ht`   v *    uuT$$l$4$  T$$°   ǋT$l$D$    |$4$@  <[^_]Ð@T$$D$   4$D$D$D$  T$$hUW1VS<D$`T$dî  t$PD$(D$XT$,T$\4$D$T$萅  tyT$,D$(4$T$D$贇  t[@ht`   v *    uuT$$l$4$  T$$   ǋT$l$D$    |$4$@  <[^_]Ð@T$$D$   4$D$D$D$  T$$hLD$`T$d\$<ð  t$@t$PD$(D$XT$,T$\|$D1l$HD$T$4$脄  teD$(T$,4$D$T$訆  tG@ht\   x;   v-UD$lD$D$T$4$     \$<t$@|$Dl$HLÐt& @D$   4$D$D$D$  tLD$`T$d\$<ð  t$@t$PD$(D$XT$,T$\|$D1l$HD$T$4$脃  teD$(T$,4$D$T$訅  tG@ht\   x;   s-UD$D$D$T$4$     \$<t$@|$Dl$HLÐt& @D$   4$D$D$D$  tLD$`T$d\$<ð  t$@t$PD$(D$XT$,T$\|$D1l$HD$T$4$脂  t0D$(T$,4$D$T$訄  t@ht$   ׉\$<t$@|$Dl$HLf@D$   4$D$D$D$M  믐UXU}}]e   E15  ҉uuUG    G    t,T$4$P4$D$EԉD$   uEe3   uX]u}]ËUԉ4$T$  P)ԍT$#WGT$UԉD$D$    4$T$   (  &    \T$tD$p\$Lc   T$,T$lD$(D$ht$P1|$T1T$T$`l$XD$$Ҁ  tkT$,D$(L$$T$T$`D$$  L$$tAATT$<|$xH4T$D$    D$    D$E$хut$<1\$Lt$P|$Tl$X\ÐUD$D$T$T$T$`$]  뺍t& '    LT$h\$<D$XS  t$@T$,T$\|$D|$`l$Hl$dD$T$T$P$  t+T$P|$l$$  tFTT$,$P8u\$<t$@|$Dl$HLÐFD$GD$   D$D$ $빍&    '    UhUM]E  UȋU,uuM̋M }UЋUD$Mĉ4$e
   M1ɉT$~  E   UȋM̉4$T$L$  t|M11҅tOMЉ4$L$  MЍP)ԍT$#T$D$D$    L$4$EU   UEMԋITD$E(T$UĉD$$QLuMe3
   u;]u}]Ðt& WD$D$4$T$T$A    v '    LT$h\$<D$X3  t$@T$,T$\|$D|$`l$Hl$dD$T$T$P$}  t+T$P|$l$$  tFTT$,$PPu\$<t$@|$Dl$HLÐ$(  D$FD$GD$   D$,D$ $fUhUM]E`  UȋU(uuM̋M }UЋUD$Mĉ4$e
   M1ɉT$|  E   UȋM̉4$T$L$~  tuM11҅tOMЉ4$L$  MЍP)ԍT$#T$D$D$    L$4$EU   UEMԋITT$UĉD$$Q,uMe3
   u:]u}]Ít& WD$D$4$T$xT$)    fUWVSlUM#  ue   E1EUЋU(MԋM 4$D$UȋUMM,T$M{  E   UЋMԉ4$T$L$}  E   E1E    tIMȉ4$L$  MȉEЃUЃ)ċ|$#|$T$D$    L$4$   M11҅tOUĉ4$T$  MčP)ԍT$#T$D$D$    L$4$EU   UEM̋ITD$EЉT$U|$D$$Q0uEe3   u5e[^_]ÐMQD$D$4$T$T$膈  ?  
UhUE]s  ŰU uuEe   E1EUċU(}4$D$UU4UЋUT$y  E   EȋỦ4$D$T${     E0E    E    E؋EЅtIUЉ4$T$  P)ԍT$#U܉T$UЉED$D$    T$4$   UԋBTUT$U؉T$Uĉ$   uEe3   u6]u}]ËWD$D$4$T$ĻT$!  ڇ  v '    UhUM]ð  e   E1Euu}}(UȋUM̋M D$}ԉT$MЉ4$zx     UȋM̉4$T$L$z     E0   Eԅ   E,   E0M0U)ĉL$M,D$#D$4$L$MԉEĉL$   OT}0Eĉ|$}ЉD$<$   UuEe3      ]u}]fRD$D$4$T$T$Ʌ  븍&    },E|$D$D$4$  댍v M0L$֐4D$D$4$̄  X"  fl$   $   \$\]  T$4$   t$`t$pD$0D$x|$dT$<T$|l$h$   D$4$T$v  tOT$4D$04$T$D$x  t1D$<L$OD$OGTT$,D$   L$,$   T$,u\$\t$`|$dl$hlÐt& RD$D$4$T$T$i  뾍&    UW1VSLUMa  ue   E1EUЋUMԋM E    D$T$M̉4$u     EЋUԉMȉ4$D$T$w  MȅE   UATT$UD$    $   Mȅ   E)ċATML$M̍T$#T$Uȉ$   Uȅu]MUȉ4$L$  Uȅt"T$UD$    |$4$T$@  Ue3   u;e[^_]Í&    MЋQD$D$4$T$T$  诃  
UWVS\UMÀ  uEUЋU(MԋM E    D$UċUM4$e
   M1ɉT$Ht  E    ED  UЋMԉ4$T$L$`v  E#  M0  Uą  E,l  E0M0U,)ċL$Mč|$#T$|$L$4$   UȍMBTL$M0D$    |$L$M$      E   1҃M)ċEȍT$#@TL$M0T$UEȉL$M|$$   U   MU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]Í&    MЋQT$^D$T$D$4$  벍t& MЋQT$΍    U,ET$D$D$4$  nM0L$֍4D$D$4$  >+  t& '    UhUE]c   ŰU uuEe   E1EUċU(}4$D$UU4UЋUT$q  E   EȋỦ4$D$T$s     E0E    E    E؋EЅtIUЉ4$T$  P)ԍT$#U܉T$UЉED$D$    T$4$   UԋBTUT$U؉T$Uĉ$   uEe3   u6]u}]ËWD$D$4$T$(T$    v '    UhUM]à  e   E1Euu}}(UȋUM̋M D$}ԉT$MЉ4$jp     UȋM̉4$T$L$r     E0   Eԅ  M09M,   E,   E0M0U)ĉL$M,D$#D$4$L$MԉEĉL$   OT}0Eĉ|$}ЉD$<$   UuHEe3      ]u}]Ív },E|$D$D$4$
}  뻍v RD$D$4$T$LT$}  돍&    M0L$릐4D$D$4$|  W~  f\D$pT$t\$LC  D$($   t$Pt$`T$,T$l|$TD$?D$hl$Xl$xT$4$D$n  tFT$,D$(4$T$D$p  t(GTL$?T$$D$   L$,$   T$$u\$Lt$P|$Tl$X\Í&    RD$D$4$T$LT$Y|  뼍&    UW1VS\UEQ  uŰU Ee   E1E4$UċU(D$UԋUT$m  E   EȋỦ4$D$T$o     Eԅ   UԉM4$T$  P)ԋUԍ|$#|$D$D$    T$4$E   UЋERT|$   D$UԋUĉ$U   MuUe3   u`e[^_]f1=   tߋQD$D$4$T$pT${  붍    4D$D$4$Dz  {      '    UWVSlMUp  }(uMԋM UЋEU}ĉMM4e=   }1D$T$Mȉ4$9l  EN  UЋMԉ4$T$L$Xn  E-  M0  UąW  E,$  E0U0)ċT$U,L$#L$MT$Uĉ4$T$   EȋM  }ȉM4$|$     1҉EEU>)ĉT$UȍD$#D$ET$D$    4$   ŰEMzTUD$E0L$MT$D$$      t31=   t*MЋQD$D$4$T$yT$ y  }e3=   uae[^_]fU,ET$D$D$4$Ex  Ív 4D$D$4$$x  fM0L$ly          UhUE]@  ŰU uuEe   E1EUċU(}4$D$UU4UЋUT$j  E   EȋỦ4$D$T$#l     E0E    E    E؋EЅtIUЉ4$T$  P)ԍT$#U܉T$UЉED$D$    T$4$   UԋBTUT$U؉T$Uĉ$   uEe3   u6]u}]ËWD$D$4$T$T$Qw  
x  v '    UhUE]C  ŰU uuEe   E1EUċU(}4$D$UU4UЋUT$h  E   EȋỦ4$D$T$j     E0E    E    E؋EЅtIUЉ4$T$  P)ԍT$#U܉T$UЉED$D$    T$4$   UԋBTUT$U؉T$Uĉ$PxuEe3   u9]u}]Ív WD$D$4$T$T$u  v  v '    UWVS\UMÀ  uEUЋU(MԋM E    D$UċUM4$e
   M1ɉT$Hg  E    E@  UЋMԉ4$T$L$`i  E  E0  Eą  E,L  E0M0U,)ċL$Mč|$#T$|$L$4$   UȍMBTL$M0D$    |$L$M$      E   1҃M)ċEȍT$#@TL$M0T$UEȉL$M|$$   UubMU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]Ív MЋQD$D$4$T$ܼT$s  붍t& U,ET$D$D$4$%s  덋M0L$ٍ4D$D$4$r  ]Nt  &    '    UWVS\UM   uEUЋU(MԋM E    D$UċUM4$e
   M1ɉT$d  E    E@  UЋMԉ4$T$L$ g  E  M0  Uą  E,L  E0M0U,)ċL$Mč|$#T$|$L$4$   UȍMBTL$M0D$    |$L$M$      E   1҃M)ċEȍT$#@TL$M0T$UEȉL$M|$$   UubMU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]Ív MЋQD$D$4$T$ T$q  붍t& U,ET$D$D$4$p  덋M0L$ٍ4D$D$4$p  ]q  &    '    UWVS\UM#  }(uUЋU4MԋEM }ĉUȋUD$M4$e
   M1ɉT$b  E    8  UЋMԉ4$T$L$d    E0  Eą  E,  Eȅ  MȉU4$L$  U;E8E   M8   +E8UE)ċE0L$#MЃ)ċE0L$#L$D$E,4$MD$EĉD$   GT}M|$}ЉL$M|$}0$|$   U   U}ЋMȉT$U84$|$L$T$@  EE̍v Ue3   E   e[^_]Ðt& }8D$D$4$|$n  E    봍t& RD$D$4$T$ܼT$	o  뇍&    M0L$D$D$4$=n  XD$D$4$n  7&    },E|$뮐4So  v UWVS\UM0  }(uUЋU4MԋEM }ĉUȋUD$M4$e
   M1ɉT$_  E    @  UЋMԉ4$T$L$b     E0  Mč4  E,  Eȅn  MȉU4$L$  U;E8E   M8   +E8UE)ċE0L$#MЃ)ċE0L$#L$D$E,4$MD$EĉD$   GT}M|$}ЉL$M|$}0$|$   U   U}ЋMȉT$U84$|$L$T$@  EE̐t& Ue3   E   e[^_]Ðt& }8D$D$4$|$l  E    봍t& RD$D$4$T$ T$ql  뇍&    D$D$4$k  _&    M0L$D$D$4$}k  0},E|$l  t& UWVS\UMà  e   E1EŰUMԋM E    D$UЋUMȉT$Ủ$i]  E       MԋUЉL$M̉T$$_  Et`FTUMȉT$UD$    $   U   EMȃ)ċFT|$#T$|$$   uoEu Me3
   E   e[^_]Ðt& M̋D$$  EtǋŰMċU|$D$    L$T$Ủ$@  fMЋQD$D$T$$T$Ủ$j  f9k  '    UWVS\UMs  e   E1EŰUMԋM E    D$UЋUMȉT$Ủ$[  E       MԋUЉL$M̉T$$]  Et`FTUMȉT$UD$    $   U   EMȃ)ċFT|$#T$|$$   uoEu Me3
   E   e[^_]Ðt& M̋D$$  EtǋŰMċU|$D$    L$T$Ủ$@  fMЋQD$D$T$HT$Ủ$h  fi  '    UWVS\UMÀ  uEUЋU(MԋM E    D$UċUM4$e
   M1ɉT$HZ  E    E@  UЋMԉ4$T$L$`\  E  E0  Eą  E,L  E0M0U,)ċL$Mč|$#T$|$L$4$   UȍMBTL$M0D$    |$L$M$      E   1҃M)ċEȍT$#@TL$M0T$UEȉL$M|$$   UubMU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]Ív MЋQD$D$4$T$¹T$f  붍t& U,ET$D$D$4$%f  덋M0L$ٍ4D$D$4$e  ]Ng  &    '    UWVS\UM   uEUЋU(MԋM E    D$UċUM4$e
   M1ɉT$W  E    E:  UЋMԉ4$T$L$ Z  E  U0  Eą  E,D  E0M0U,)ċL$Mč|$#T$|$L$4$   UȍMBTL$M0D$    |$L$M$P|   E   1҃M)ċEȍT$#@TL$M0T$UEȉL$M|$$P|Uu`MU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]ÐMЋQD$D$4$T$T$d  븍t& U,ET$D$D$4$c  돋M0L$ٍ4D$D$4$c  _d      UW1V1S   UE,ɭ  MUċU EE,$MUU0Ee   E1EUUD$T$U  ME  EUĉ$D$T$W  M  l$T$PME  D$D$E$D$   MEM  
D$D$E$D$   ME  U$T$  E@M   )čD$#ɋME   E    ǉ   t& MT$4$UL$   MUL$T$4$   EU4$T$     1҉G)čD$#GD$GD$    4$D$ED$   EM9MtMM4$L$ML$  B11    Me3
      e[^_]Ít& E(uԉ$Mt$EԋED$UBTUT$Ut$T$UT$U$   Muu1농1D$1T$D$$ba  ]b  &    UWVS   MUP  ue   E1EMM UU4$D$MM,T$MM0MM4MR  E    E  UM4$T$L$T    lT$4$Pj  D$D$|$4$   E<  
D$D$|$4$   E  M4$L$  E@   )ċEL$/M   E       fMT$4$UL$   MUL$T$4$   EU4$T$     1҉G)čD$/GD$GD$    4$D$ED$   EM9MtEM4$L$ML$  BE    Ue3   E  e[^_]ËM4$L$  E@}   )čL$/M   E       MT$4$UL$   MUL$T$4$   ||4$T$     1҉G)čD$/GD$GD$    4$D$|D$   EM9Mt,M4$L$ML$  9t& E(}ЋM|$4$EЉL$<EMPTED$E܉D$EL$M|$D$EL$MD$$   ufD$   4$  EOE܋UME    EUȍUE    T$D$   D$    L$4$P  -D$T$D$4$"]  E    ]  UWVSlUMð  ue   E1EUU0MċM },E    UUMM8D$4$T$MpN  E    E   UMĉ4$T$L$P  E   E(|$}ԉ|$4$E费MUATMT$UL$MD$    T$U|$$   M   E)ċET$'@TL$MT$UEL$M|$L$M$   UupEu!Me3
   E   e[^_]Í    UD$4$  UEtËT$UD$    4$T$UT$@  뜐t& MQD$D$4$T$GT$>[  h[  t& UW1V1S   UE,ɤ  MUċU EE,$MUU0EE8UU<Ee   E1EUUD$T$L  ME  EUĉ$D$T$N  M  l$T$PME}  D$D$E$D$   MEI  
D$D$E$D$   ME  U$T$  ME@U   )čD$/҉E   E    ǉ   MT$4$UL$   MUL$T$4$   EU4$T$     1҉G)čD$/GD$GD$    4$D$ED$   EM9MtMM4$L$ML$  B11    Me3
      e[^_]Ít& E(UԉT$$MEԋED$MUT$$  MUǍ@)ċt$/$T$t$|$D$       UBTUT$U|$t$T$UT$UT$UԉT$U$   Mu
u1&e1D$1T$D$$W  X  UW1V1S   EUÉ  MEE,UċU $MEE8UU0EEUe   U1ҋUD$T$II  ME  EUĉ$D$T$eK  M  l$T$PME  D$D$E$D$   MEN  
D$D$E$D$   ME  U$T$  E@M   )čD$'ɋME   E    ǉ       MT$4$UL$   MUL$T$4$   EU4$T$     1҉G)čD$'GD$GD$    4$D$ED$   EM9MtMM4$L$ML$  B11    Me3
      e[^_]Ít& E(uԉ$Mt$EԋED$ǲUBTUT$Ut$T$UT$UT$U$   Mu
u1|y1D$1T$D$$U  SU  UWVS   UM Ý  ue   E1}(PETUM HD$T$84$aF  ǅL    <  PT4$T$L$mH  0  lT$4$P  D$D$|$4$   Dv  
D$D$|$4$   @E  H4$L$  L@   )ċL|$#4  ǅP       t& DT$4$,L$   @,L$T$4$   $$4$T$     1҉G)čD$#GD$GD$    4$D$$D$   PP9LtQP4$L$HL$  ǅL    Me3
   L  e[^_]$   B  L<BT|$4,|$8<$Pl,z  <}E    BT8|$`,D$    |$$Pp,  UǅP      PL4D    49u답LP ǅL   H       L$,T$((  <MBTL$8D$    |$$PpD  UPǅD    ҍt5D@4D    49u닍P@щPL    J<HGT8,<$Pt,"  P,4$T$  ,PLLL$|$D$    T$4$P  ,$諬0HG4$D$D$D$gO  ,$iǅL    N0HQD$D$4$T$ T$O  밋0WT$нD$T$D$4$O  ,x0WT$,Ƌ0G,4$D$D$D$N  ,)0WD$,D$T$ T$4$N  ,PBO          UWVS\UMӬp  uEUU(MċM 4$D$ŰUMe
   M1ɉT$?@  E       UMĉ4$T$L$XB     M0U؋GTE    T$M؋M̉UE    D$   L$MЉ$PdU   E   MЃ)čD$#E܋GTT$UD$   $T$PducE   D$4$  U܉EԋT$UD$    4$T$UԉT$@  Me3
   Euke[^_]Í    U0D$D$4$T$\T$AM  뺍&    M0D$D$   D$L$4$
M  M      UWVS\UMà  EUԋUMċM D$UU(Me
   M1ɉUȋUT$Uԉ$i>  E       MċUL$MԉT$$@     MȍU؋FTE  @T$L$M̉UE    E    D$   $PdU   E   M̃)čD$#E܋FTT$UD$   $T$PduGEtgUԉD$E܉|$t$$D$@  EЋMe3
   Eu]e[^_]Ít& T$UԉD$D$$K  v MԍTD$D$   D$$YK  L  f\T$tD$p\$LS  T$$T$xl$Xl$`D$ D$ht$P1T$($   |$TD$<D$T$,T$l,$T$<  tmD$ T$$,$D$T$>  tQ$   D$<D$4GTD$8   D$   T$0T$0T$T$,T$T$($Pdu[D$8t$<u\$Lt$P|$Tl$X\Ë$   1D$D$D$   T$D$,$+J  볐$   D$D$,$T$\T$I  녍t& '    \T$tD$p\$LÐ  T$$T$xl$Xl$`D$ D$ht$P1T$($   |$TD$? D$T$,T$l,$T$L;  tnD$ T$$,$D$T$n=  tR$   D$?D$4GTD$8   D$   T$0T$0T$T$,T$T$($Pdu^D$8t$?u\$Lt$P|$Tl$X\f$   1D$D$D$   T$D$,$H  뱐$   D$D$,$T$\T$H  냍t& '    UW1V1S|EU菦,  MEЋE(UԋU $ME̋EUe   U1ҋUD$T$9  ME  EЋUԉ$D$T$<  M  l$T$PME  D$D$EЉ$D$   MEM  
D$D$EЉ$D$   ME  Ủ$T$  MEȍ@Uȍ   )čD$#҉E   E    ǉ   t& MĉT$4$UL$   MUL$T$4$   EU4$T$     1҉G)čD$#GD$GD$    4$D$ED$   EM9MtEMЋ4$L$M̉L$  B11    Me3
   uee[^_]ÉUBTUT$UȉMT$UT$U$PTMuu1뱍j1D$1T$D$$E  F  &    '    <T$TD$P\$,À  T$T$Xt$0t$@D$D$H|$4T$T$Ll$8l$`D$4$T$J7  t1D$T$4$D$T$l9  tGTT$l$$P\u\$,t$0|$4l$8<Í&    |$4D$Hl$8t$@\$,t$0T$LD$D<E  UWVS   MU Ý  ue   E1EMM UU4$D$MM,T$MM0Mg6  E    E  UM4$T$L$8    lT$4$Ph  D$D$|$4$   E:  
D$D$|$4$   E  M4$L$  E@U   )čL$/҉M   E       MT$4$UL$   MUL$T$4$   EU4$T$     1҉G)čD$/GD$GD$    4$D$ED$   EM9MtEM4$L$ML$  BE    Ue3   E  e[^_]ËM4$L$  E@   )ċEL$/M   E       MT$4$UL$   MUL$T$4$   EU4$T$     1҉G)čD$/GD$GD$    4$D$ED$   EM9Mt-M4$L$ML$  Bt& E(UME    EЋBTUL$MT$U܉T$UE    L$MT$UЉT$L$M$   ufD$   4$  E\E܋UME    EUȍUE    T$D$   D$    L$4$P  -D$T$D$4$@  E    A  l$   $   \$\͞j  T$4$   t$`t$pD$0D$x|$dT$<T$|l$h$   D$4$T$.2  taT$4D$04$T$D$P4  tC$   D$DD$H    D$L    L$DOTD$D$<T$,l$$   T$,u\$\t$`|$dl$hlÍv RD$D$4$T$ĻT$?  &    UhUM]Ý`  e   E1Euu}}(UȋUM̋M D$}ԉT$MЉ4$*1     UȋM̉4$T$L$J3     M0   Eԅ  M09M,   E,   E0M0U)ĉL$M,D$#D$4$L$MԉEĉL$   OT}0Eĉ|$}ЉD$<$   UuHEe3      ]u}]Ív },E|$D$D$4$=  뻍v RD$D$4$T$T$A>  돍&    M0L$릐4D$D$4$l=  W>  fl$   $   \$\Ú  T$4$   t$`t$pD$0D$x|$dT$<T$|l$h$   D$4$T$^/  tOT$4D$04$T$D$1  t1D$<L$OD$OGTT$,D$   L$,$   T$,u\$\t$`|$dl$hlÐt& RD$D$4$T$T$	=  뾍&    UW1VSLUMÞ  ue   E1EUЋUMԋM E    D$T$M̉4$m.     EЋUԉMȉ4$D$T$0  MȅE   UATT$UD$    $   Mȅ   E)ċATML$M̍T$#T$Uȉ$   Uȅu]MUȉ4$L$  Uȅt"T$UD$    |$4$T$@  Ue3   u;e[^_]Í&    MЋQD$D$4$T$T$;  O<  
l$   $   \$\}  T$4$   t$`t$pD$0D$x|$dT$<T$|l$h$   D$4$T$,  taT$4D$04$T$D$ /  tC$   D$DD$H    D$L    L$DOTD$D$<T$,l$$   T$,u\$\t$`|$dl$hlÍv RD$D$4$T$(T$y:  &    UhUM]s  e   E1Euu}}(UȋUM̋M D$}ԉT$MЉ4$+     UȋM̉4$T$L$-     E0   Eԅ  M09M,   E,   E0M0U)ĉL$M,D$#D$4$L$MԉEĉL$   OT}0Eĉ|$}ЉD$<$   UuHEe3      ]u}]Ív },E|$D$D$4$}8  뻍v RD$D$4$T$LT$8  돍&    M0L$릐4D$D$4$8  Wr9  f\D$pT$t\$L賖P  D$($   t$Pt$`T$,T$l|$TD$?D$hl$Xl$xT$4$D$*  tFT$,D$(4$T$D$9,  t(GTL$?T$$D$   L$,$   T$$u\$Lt$P|$Tl$X\Í&    RD$D$4$T$LT$7  뼍&    UW1VS\UE^  uŰU Ee   E1E4$UċU(D$UԋUT$.)  E   EȋỦ4$D$T$M+     Eԅ   UԉM4$T$  P)ԋUԍ|$#|$D$D$    T$4$E   UЋERT|$   D$UԋUĉ$U   MuUe3   u`e[^_]f1=   tߋQD$D$4$T$pT$x6  붍    4D$D$4$5  
7  l$   $   \$\=  T$4$   t$`t$pD$0D$x|$dT$<T$|l$h$   D$4$T$'  t^T$4D$04$T$D$)  t@$   D$DD$H    D$L    L$DOTD$D$<T$,l$$QxT$,u\$\t$`|$dl$hlÍ    RD$D$4$T$T$95  뽍&    l$   $   \$\-~  T$4$   t$`t$pD$0D$x|$dT$<T$|l$h$   D$4$T$&  taT$4D$04$T$D$(  tC$   D$DD$H    D$L    L$DOTD$D$<T$,l$$   T$,u\$\t$`|$dl$hlÍv RD$D$4$T$T$)4  &    UWVS\UM#}  uEUЋU0MԋM E    D$UċUM4$e
   M1ɉT$%  E    EO  UЋMԉ4$T$L$'  E.  U8  Eą  M89M4[  E4M  E8M8U4)ċL$Mč|$#T$|$L$4$   UȍMBTL$M8D$    |$L$M$      E   1҃M)ċEȍT$#@TL$M8T$UEȉL$M|$$   UucMU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]Ít& MЋQD$D$4$T$ܼT$2  뵍t& U4ED$D$4$T$U1  E    녋M8D$D$4$L$)1  ]4D$D$4$1  <^2  &    '    UWVS\UM蓏0{  uEUЋU0MԋM E    D$UċUM4$e
   M1ɉT$"  E    EO  UЋMԉ4$T$L$%  E.  }8  Mą  M89M4[  E4M  E8M8U4)ċL$Mč|$#T$|$L$4$   UȍMBTL$M8D$    |$L$M$      E   1҃M)ċEȍT$#@TL$M8T$UEȉL$M|$$   UucMU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]Ít& MЋQD$D$4$T$ T$/  뵍t& U4ED$D$4$T$.  E    녋M8D$D$4$L$.  ]4D$D$4$x.  </  &    '    UWVS\UMàx  }0uUU<MċEM }1UЋUD$Mȉ4$e
   M1ɉT$g   ED  UMĉ4$T$L$"  $  E8  E̅  M89M4"  E4  EЅ  MЉU4$L$  U;E@E
  M@   +E@UE)ċE8L$#M)ċE8|$#|$D$E44$D$ẺD$   EԋM@T|$}ȉL$EԍED$E8<$}ԉD$   UM   UL$MЉ4$T$U@L$T$@  }}e3=      e[^_]Í    }4E|$D$1D$4$s,  빐}@|$֐R1D$D$4$T$ܼT$,  zfM8D$D$4$L$
,  PD$D$4$+  /&    43-  v UWVS\UMsv  }0uUU<MċEM }1UЋUD$Mȉ4$e
   M1ɉT$  ED  UMĉ4$T$L$  $  E8  E̅  M89M4"  E4  EЅ  MЉU4$L$  U;E@E
  M@   +E@UE)ċE8L$#M)ċE8|$#|$D$E44$D$ẺD$   EԋM@T|$}ȉL$EԍED$E8<$}ԉD$   UM   UL$MЉ4$T$U@L$T$@  }}e3=      e[^_]Í    }4E|$D$1D$4$)  빐}@|$֐R1D$D$4$T$ T$G*  zfM8D$D$4$L$})  PD$D$4$\)  /&    4*  v UWVS\UMÀs  uEUȋU0M̋M E    E    UUMD$e
   M1ɉT$4$A  E    EQ  UȋM̉4$T$L$Y  E0  }8  M  M89M4d  E4V  E8M8U4)ċL$M|$#T$|$L$4$   UЍM܋BTL$M8D$    |$L$M$      E1ҹ   )čT$#UԋU܅   UЍMBTUL$MD$    $   M   E11   U܉4$T$  EtE܅)  E   Ue3   E  e[^_]Ív MЍU܋ATMԉT$|$L$M8L$M$   Bt& MȋQD$D$4$T$ܼT$'  {UЃ)č|$#BTL$M|$$   UMȋQD$D$4$T$$T$:'  E        D$E܉|$4$D$EĉD$@  fMԉD$ED$    4$L$D$@  E릍    U4ED$D$4$T$&  E    {M8D$D$4$L$%  S4D$D$4$%  2'  t& '    UWVS\UMCo  uEUȋU0M̋M E    E    UUMD$e
   M1ɉT$4$  E    EQ  UȋM̉4$T$L$  E0  E8  E  M89M4d  E4V  E8M8U4)ċL$M|$#T$|$L$4$   UЍM܋BTL$M8D$    |$L$M$      E1ҹ   )ċE܍T$#Uԅ   UЍMBTUL$MD$    $   M   E11   U܉4$T$  EtE܅)  E   Ue3   E  e[^_]Ív MЍU܋ATMԉT$|$L$M8L$M$   Bt& MȋQD$D$4$T$ T$#  {UЃ)č|$#BTL$M|$$   UMȋQD$D$4$T$HT$#  E        D$E܉|$4$D$EĉD$@  fMԉD$ED$    4$L$D$@  E릍    U4ED$D$4$T$e"  E    {M8D$D$4$L$6"  S4D$D$4$"  2k#  t& '    UW1VSlUM血>l  ue   E1EUЋU0MԋM 4$D$UȋUMM<T$M  E}  UЋMԉ4$T$L$'  ]  E8  Eȅ'  M89M4[  E4M  MĉU4$L$  U9E@T  M@F  +E@UE)ċE8L$#MЋM)ċE8M܍L$#L$D$E44$MD$EȉD$   E̋M@TL$MEȍE܉D$EЉ$MȉD$E8D$   U   }܋E)EE̋HTED$EЉUD$E$   U   UЋ}M@T$U}܉4$L$|$T$@  Me3
      e[^_]Í    U4ET$D$1D$4$  빐U@T$֐RD$D$4$T$ܼT$A   |t& M8D$D$4$L$u  PR1D$D$4$T$$T$  "f4D$D$4$$  z   v '    UW1VSlUM}Ni  ue   E1EUЋU0MԋM 4$D$UȋUMM<T$M  E}  UЋMԉ4$T$L$7  ]  M8  Eȅ'  M89M4[  E4M  MĉU4$L$  U9E@T  M@F  +E@UE)ċE8L$#MЋM)ċE8M܍L$#L$D$E44$MD$EȉD$   E̋M@TL$MEȍE܉D$EЉ$MȉD$E8D$   U   }܋E)EE̋HTED$EЉUD$E$   U   UЋ}M@T$U}܉4$L$|$T$@  Me3
      e[^_]Í    U4ET$D$1D$4$  빐U@T$֐RD$D$4$T$ T$Q  |t& M8D$D$4$L$  PR1D$D$4$T$HT$  "f4D$D$4$4    v '    UWVS\UMz`f  uEUЋU0MԋM 4$D$UċUMe
   M1ɉT$/  E    EV  UЋMԉ4$T$L$G  E5  E8  }ą  M89M4b  E4T  E8M8U4)ċL$Mč|$#T$|$L$4$   UȍME    BTL$M8D$    |$L$M$      E   1҃M)ċEȍT$#@TL$M8T$UEȉL$M|$$   UucMU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]Ít& MЋQD$D$4$T$¹T$  뵍t& U4ED$D$4$T$  E    녋M8D$D$4$L$  ]4D$D$4$  <  &    '    UWVS\UM3xc  uEUЋU0MԋM 4$D$UċUMe
   M1ɉT$  E    EP  UЋMԉ4$T$L$
  E/  E8  Eą  M89M4Z  E4L  E8M8U4)ċL$Mč|$#T$|$L$4$   UȍME    BTL$M8D$    |$L$M$P|   E   1҃M)ċEȍT$#@TL$M8T$UEȉL$M|$$P|UuaMU4$L$  UEt%T$UD$    4$T$ỦT$@  Me3
   E   e[^_]fMЋQD$D$4$T$T$6  뷍t& U4ED$D$4$T$m  E    뇋M8D$D$4$L$A  _4D$D$4$   >v      UWVS\UMuPa  }0uUU<MċEM }1UЋUD$Mȉ4$e
   M1ɉT$	  ED  UMĉ4$T$L$6  $  E8  E̅  M89M4"  E4  EЅ  MЉU4$L$  U;E@E
  M@   +E@UE)ċE8L$#M)ċE8|$#|$D$E44$D$ẺD$   EԋM@T|$}ȉL$EԍED$E8<$}ԉD$   UM   UL$MЉ4$T$U@L$T$@  }}e3=      e[^_]Í    }4E|$D$1D$4$#  빐}@|$֐R1D$D$4$T$¹T$  zfM8D$D$4$L$  PD$D$4$  /&    4  v UWVS\UM#s^  }0uUU<MċEM }1UЋUD$Mȉ4$e
   M1ɉT$  ED  UMĉ4$T$L$  $  E8  E̅  M89M4"  E4  MЅ  MЉU4$L$  U;E@E
  M@   +E@UE)ċE8L$#M)ċE8|$#|$D$E44$D$ẺD$   EԋM@T|$}ȉL$EԍED$E8<$}ԉD$W|UM   UL$MЉ4$T$U@L$T$@  }v }e3=      e[^_]Í    }4E|$D$1D$4$  빐}@|$֐R1D$D$4$T$T$  zfM8D$D$4$L$-  PD$D$4$  /&    4S  S   T$ p2\  t$nЃ[Í    '    S   T$ Up[  t$nЃ[Í    '       t$t$ \$pë[  t4$5n4$Mn1\$t$
   t$t$ \$o[[  |$t1$   ]nǸ   tD$    <$mu>1f\$t$|$É<$m   \$t$|$Ít& '    UWVS>oZ  <|$P$\   m   оЍ2@    @X    T$<$PS  m  
T$CT$l$<$     D$D$T<$D$      l$<$  @T$,$+mT$,F  D$T$T$,D$    l$<$   FT$, F$mFXh  LT$$6m  VT$Ѕu:FT\   $P   FTV$P   <[^_]Ðt& VT$D$T$D$<$  Ft$kFXt$k4$1ktl<[^_]f1D$D$<$  nt& VT$s    VT$[    D$D$<$4  &    D$D$<$  &&    jD$FD$(D$D$<$
  &    jD$FD$LƋD$1É'    SD$$JlW  t8оu	[Ít& D$D$D$D$ $T
  1[Í    '    t$t$$\$kÀW  |$FT$    PFXt$iFt$j   \   uH   uP1tf  t 4$iuj\$t$|$Ðt& ~[    tf  룐<\$,+kV  t$0l$8l$H|$4$  i   1D   nT$DBTVT$,$PulFhu\$,t$0|$4l$8<ËT$DBTVpT$,$Pt҉l$T$T$@D$D$$`  4$1h랍t& l$ƍt& T$@`D$D$$  et& '    D$1É'    SD$$
jçU  t8u	[Ít& D$D$D$D$ $  1[Í    '      t$t$(\$i;U  |$   uC   uK1tf  t 4$g\$t$|$Ðt& ~    tf  먍v UWVSLt$`iôT  4$ T$PD$$    D$(9  TD$\D$D$(4$D$   D$,  T$(L$pD$    4$T$L$  D$$   D$p   |$l1k    D$<D$D$8D$D$4D$4$D$D$,D$D$(D$Rp   D$D$$l$4$D$  ;l$ptXL$dD$4QTD$L$hD$A$R$qD$D$4$T$(T$	  D$$    D$$L[^_]Í&    D$$    D$$L[^_]Ð  S  T$           <      !  
              p   S|  tq  u[Ð@tU   gtD  `Kt3  P t"  A|  t& fÍ       Zt     t     t|   t   uÍt& 	t   x   cc  jNu7Ðt& q)R  ijpÍ&      }  P  6s  0  Ít& R  s  
VÍt&    F      .     pÍt&         f   c     4   Nf   ~     f   |Lf   *>     4&   fd  bbcuÍv   Ð        0lf0a    nL!5Á   )   Á     Á      !Á      Ã12}ÃQtT0]Á   =Q   X7Á`  K+p  cÃÃefÃ7Á     Á   uË$UXuƋMe   E1]`qL  MԍH)̋M}|$'ỦL$MD$D$   D$L$<$_Ũ   9%Ee3      ]u}]Ív M    $ỦL$PU̅tTL$\L$$t$   U̅t$MЉ|$  ŰMЅs:D$E$L$t$D$WpU̅M
D$$Q4<t& &1K  t& '    UXuƋMe   E1]t_K  MԍH)̋M}|$'UЉL$MD$D$   D$L$<$%^UЃ|]9!Ee3   uL]u}]Ív Mԉ$U    L$PUЅtŋ
|$D$$Q8볍&    &g  &    UWV |$4t$<l$8D$       T$0D$t$l$<$D$u ^_]Ít& UWV |$4t$8l$<D$       T$0D$l$t$<$T$u ^_]Ít& UWV |$4t$@l$8D$       D$<T$0t$l$D$D$<$L$u؃ ^_]Í        UWV |$4t$8l$<D$       D$@T$0l$t$D$D$<$D$u؃ ^_]ÐSQ]H  [UVS-]H  t&    Ћu[^]S    [ÓH  3\[      Length of label exceeds 32 bytes    java/lang/IllegalArgumentException  C_InitToken failed for module %s.   org/opensc/pkcs11/wrap/PKCS11Exception  C_GetSlotList failed for module %s. C_GetMechanismList for PKCS11 slot %d failed.   Invalid value %u for ulMinPinLen of token in slot %d.   Invalid value %u for ulMaxPinLen of token in slot %d. C_WaitForSlotEvent failed. No token present in slot %d.   {Gz?Invalid data length %d. NULL input data. Invalid input offset %d. C_Sign failed for slot %d. C_Verify failed for slot %d. NULL output data. Invalid output offset %d. C_Decrypt failed for slot %d. C_Encrypt failed for slot %d. ()I getKind ()[B getData C_GenerateKey failed. C_GenerateKeyPair failed. C_WrapKey failed for slot %d. C_UnwrapKey failed. C_DeriveKey failed.    C_OpenSession for PKCS11 slot %d failed.    pkcs11_slot_close_session: C_CloseSession for PKCS11 slot %d(%s) failed.    C_Login for PKCS11 slot %d failed.  PKCS11Session.logoutNative: C_Logout for PKCS11 slot %d(%s) failed (%s).    C_InitPIN for PKCS11 slot %d failed.    C_SetPIN for PKCS11 slot %d failed. C_SignInit failed for slot %d.  C_SignUpdate failed for slot %d.    C_SignFinal failed for slot %d. C_VerifyInit failed for slot %d.    C_VerifyUpdate failed for slot %d.  C_VerifyFinal failed for slot %d.   C_DecryptInit failed for slot %d.   C_EncryptInit failed for slot %d.   C_DecryptUpdate failed for slot %d. C_EncryptUpdate failed for slot %d. C_DecryptFinal failed for slot %d.  C_EncryptFinal failed for slot %d.  org/opensc/pkcs11/wrap/PKCS11Attribute  Out of memory during object enumeration for slot number %d. C_FindObjectsInit failed for slot number %d.    C_FindObjects failed for slot number %d.    C_FindObjectsFinal failed for slot number %d.   C_GetAttributeValue failed for attribute %u.    C_GetAttributeValue returned ulValueLen -1 for attribute %u but returned CKR_OK. The underlying PKCS#11 module seems to be broken.  C_GetAttributeValue failed for attribute CKA_ALLOWED_MECHANISMS.    C_GetAttributeValue returned ulValueLen -1 for attribute CKA_ALLOWED_MECHANISMS but returned CKR_OK. The underlying PKCS#11 module seems to be broken.  C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_ULONG) for attribute %u of type CK_ULONG but returned CKR_OK. The underlying PKCS#11 module seems to be broken.   C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_BBOOL) for attribute %u of type CK_BBOOL but returned CKR_OK. The underlying PKCS#11 module seems to be broken. C_CreateObject failed. C_DestroyObject failed.    Out of memory allocating PKCS11 context.    Unable ot initialize dynamic function loading.  Out of memory allocating PKCS11 module name.    Cannot open PKCS11 module %s: %s.   Cannot find function C_GetFunctionList in PKCS11 module %s: %s. C_GetFunctionList in PKCS11 module %s failed.   C_Initialize in PKCS11 module %s failed.    C_GetInfo in PKCS11 module %s failed.   Invalid PKCS 11 module handle %p. java/lang/String getBytes C_GetFunctionList   Out of memory allocating PKCS11 slot.   C_GetSlotInfo for PKCS11 slot %d failed.    C_GetTokenInfo for PKCS11 slot %d failed.   Invalid PKCS11 slot handle %p.  org/opensc/pkcs11/wrap/PKCS11Mechanism  C_GetMechanismInfo failed for mechanism %u. (IIII)V <init> CKR_OK CKR_CANCEL CKR_HOST_MEMORY CKR_SLOT_ID_INVALID CKR_GENERAL_ERROR CKR_FUNCTION_FAILED CKR_ARGUMENTS_BAD CKR_NO_EVENT CKR_NEED_TO_CREATE_THREADS CKR_CANT_LOCK CKR_ATTRIBUTE_READ_ONLY CKR_ATTRIBUTE_SENSITIVE CKR_ATTRIBUTE_TYPE_INVALID CKR_ATTRIBUTE_VALUE_INVALID CKR_DATA_INVALID CKR_DATA_LEN_RANGE CKR_DEVICE_ERROR CKR_DEVICE_MEMORY CKR_DEVICE_REMOVED CKR_ENCRYPTED_DATA_INVALID CKR_ENCRYPTED_DATA_LEN_RANGE CKR_FUNCTION_CANCELED CKR_FUNCTION_NOT_PARALLEL CKR_FUNCTION_NOT_SUPPORTED CKR_KEY_HANDLE_INVALID CKR_KEY_SIZE_RANGE CKR_KEY_TYPE_INCONSISTENT CKR_KEY_NOT_NEEDED CKR_KEY_CHANGED CKR_KEY_NEEDED CKR_KEY_INDIGESTIBLE CKR_KEY_NOT_WRAPPABLE CKR_KEY_UNEXTRACTABLE CKR_MECHANISM_INVALID CKR_MECHANISM_PARAM_INVALID CKR_OBJECT_HANDLE_INVALID CKR_OPERATION_ACTIVE CKR_OPERATION_NOT_INITIALIZED CKR_PIN_INCORRECT CKR_PIN_INVALID CKR_PIN_LEN_RANGE CKR_PIN_EXPIRED CKR_PIN_LOCKED CKR_SESSION_CLOSED CKR_SESSION_COUNT CKR_SESSION_HANDLE_INVALID CKR_SESSION_READ_ONLY CKR_SESSION_EXISTS CKR_SESSION_READ_ONLY_EXISTS CKR_SIGNATURE_INVALID CKR_SIGNATURE_LEN_RANGE CKR_TEMPLATE_INCOMPLETE CKR_TEMPLATE_INCONSISTENT CKR_TOKEN_NOT_PRESENT CKR_TOKEN_NOT_RECOGNIZED CKR_TOKEN_WRITE_PROTECTED CKR_UNWRAPPING_KEY_SIZE_RANGE CKR_USER_ALREADY_LOGGED_IN CKR_USER_NOT_LOGGED_IN CKR_USER_PIN_NOT_INITIALIZED CKR_USER_TYPE_INVALID CKR_USER_TOO_MANY_TYPES CKR_WRAPPED_KEY_INVALID CKR_WRAPPED_KEY_LEN_RANGE CKR_WRAPPING_KEY_SIZE_RANGE CKR_RANDOM_SEED_NOT_SUPPORTED CKR_RANDOM_NO_RNG CKR_DOMAIN_PARAMS_INVALID CKR_BUFFER_TOO_SMALL CKR_SAVED_STATE_INVALID CKR_INFORMATION_SENSITIVE CKR_STATE_UNSAVEABLE CKR_CRYPTOKI_NOT_INITIALIZED CKR_MUTEX_BAD CKR_MUTEX_NOT_LOCKED CKR_FUNCTION_REJECTED CKR_VENDOR_DEFINED Unknown PKCS#11 error    CKR_KEY_FUNCTION_NOT_PERMITTED  CKR_SESSION_PARALLEL_NOT_SUPPORTED  CKR_SESSION_READ_WRITE_SO_EXISTS    CKR_UNWRAPPING_KEY_HANDLE_INVALID   CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT    CKR_USER_ANOTHER_ALREADY_LOGGED_IN  CKR_WRAPPING_KEY_HANDLE_INVALID CKR_WRAPPING_KEY_TYPE_INCONSISTENT  CKR_CRYPTOKI_ALREADY_INITIALIZED    (ILjava/lang/String;)V  ;`  k    F|   H  @H  H  H   IH  `Kx  L  M   N  pN  N4  Oh  @P  P  Q  R$  Sd  T  U  V$  WP  X|  Y  Z  [  `\0  ]`  ^  _  pa  b	  dL	  ex	   g	  i	  j
  l<
  mh
  o
  @q
  r
   t,  `v\  x  P{  }  p   L  `|      Ќ
  @
  t
  
  
    8  d  P       (   T      `  p  0@   l        P(  X  p       @  0L       0    P@  `         (  <   h        @  $  px       `  @   4  h  @           zR |         |B@   FJtx ?;*2$"(   @   XD9    AC c
AHCE  (   l   lD=    AC k
AHCA  $      Dp    C LL{
JO $      D    C0P_~
HK ,      0E   AB
Ls
AAAC,     Fy   AB
C:
AAAE(   H  0H    C@HWFFU
E    t  Hm    C0PFS     Ip    C0PFV     TIp    C0PFV0     I    AACC@CAA 0      J    AACC@CAA (   <  J    C@HWHH]
A (   h  K    C@HWHH]
A ,     KI   AB
L 
AAAF<     L    AACACP
CAAAH <     dM    AACACP
CAAAB <   D  $N    AACACP
CAAAB <     N    AACACP
CAAAB (     O    CPLSVO
F (     xP    CPLSVO
F (     LQ    CPLSVON
C ,   H  Q    AB
LNSV

AA(   x  R   C`LaFS
B (     S    CPL_HX
B  ,     (TF   AB
OWi

AF(      HU    CPL_HX
B  ,   ,  U>   AB
OWi

AE,   \  V   AB
L\
AAAB,     |XV   AB
LWq

AA,     Y   AB
L_F

AC(     ,[    CpR^_x
F  0      \q   AB
CK$
AAAH   ,   L  L]u   AB
L
AAAH,   |  _V   AB
LWq

AA,     `   AB
L_F

AD(     \b    C`L^\o
H  0      cs   AB
CK
AAAC   ,   <  ld$   AB
L
AAAC,   l  lfV   AB
LWq

AA,     gV   AB
LWq

AD,     hR   AB
L
AAAD,     jR   AB
L
AAAD,   ,  ,m   AB
L
AAAF,   \  o   AB
L
AAAF,     q   AB
L
AAAF ,     Ls   AB
L
AAAF ,     tR   AB
L
AAAD,   	  vJ   AB
L
AAAB0   L	  x   AB
CCM2
AAAE  ,   	  {?   AB
O
AAAA,   	     AB
LG
AAAG0   	  h@   AB
CCM:
AAAE  0   
  t   AB
CCM:
AAAE  ,   H
  0$   AB
Ol
AAAA,   x
  0   AB
LO
AAAG,   
  Ў   AB
LA
AAAE(   
  PU   C`L[Nj
A (     U   C`L[Ng
C 0   0     AB
CCJ)
AAAA  0   d  4    C@L[\Z
Ho   ,     *   AB
O
AAAA(     	   CpR^_
D  ,     Ě   AB
L_F

AD(   $  T    CpR^_x
F  0   P  (q   AB
CK$
AAAH   (     t	   CpR^_
D  ,     X   AB
L_F

AD(         C`L^\o
H  0   
  s   AB
CK
AAAC   (   @
  	   CpR^_
G  (   l
  ܣ	   CpR^_
D  ,   
     AB
L
AAAE,   
      AB
L
AAAE,   
     AB
L
AAAG,   (     AB
L
AAAG,   X  @   AB
L
AAAD,        AB
L
AAAD0         AB
CK
AAAG   0     ܷ   AB
CK
AAAG   ,         AB
L
AAAE,   P  z   AB
L
AAAC,     H   AB
L
AAAG,        AB
L
AAAG     3    AH hA      (3    AH hA      HA    C MDl ,   @  x    C MDS@
A\   T   p     AAAANPj
CAAAFW
CAAAC      `       (     \S    AC ^
AEgC  $         C HDYr
F (   0  (   C@DWKV
A     \         (   p  S    AC ^
AEgC  $     <    C MDW
F  P        AAAAC`u
AAAAHOAAAA               ,  h       ,   @  XU   AB
HS`]

AD,   p      AB
HS`U

AD0     8L    AAAC0}FAA  0     TL    AAAC0}FAA  0     pT    AAAC0EFAA 0   <  T    AAAC0EFAA    p      AN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ("  
   X  o8     
       
   D                           !     H!     H         o   o   o   o                                                                    v"  "  "  "  "  "  "  "  "  #  #  &#  6#  F#  V#  f#  v#  #  #  L   0             GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3  .symtab .strtab .shstrtab .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt .init .text .fini .rodata .eh_frame_hdr .eh_frame .ctors .dtors .jcr .dynamic .got .got.plt .data .bss .comment                                                      $                  .   o   8  8                 8                           @         
  
  D                 H   o                         U   o         P                d   	      H!  H!  H                m   	      !  !        
         v         ("  ("  .                  q         `"  `"  @                |         #  #                            X  X                             x  x                            `  `  d                                                                                                                                                                                                              X                          L L                             h h                          0       h  *                                                                       M         	              x                                                  8                        
                                      H!            !            ("       	     `"       
     #            X            x       
     `                                                                                          L           h                                                     (          5   #        K   h      Z   l      h    $                    t             L                                                                             E           u                                     3         3       0  A              '  P      8           F           U           \  `  U    x           0          L       W$                     S                        4  0       K    T     `         m    L       \          L         @  T       @  S               м                          `       .         >             I             i  R  R      0/            	      @)       X  0?        7         `                    &        i             {                O  V      %        P|  U    <             L  `]  R      pw                     h               %  Pn      _  X        e                                    `P  R    	  pK  $    R	  d  ?    	        	  `      
  01       L
  _  J    
  k  @    
          "   
          05       `  $  p       `*  p       -  I      A  q    J   <                                  @q  $      @-       !
  +       ]
    s    
  p  	    
              
  I  s        U      a                        z  U      Ћ      +  00       m             w  @Z        '  y            3         u  b        @  *      }      6  p      ;  M  V    w  E  V      @y        @       5    z    p                       =  V      Й      C  `C  u    x  h        @         *  p       P%       ;         z  :         $  =       :  >    "  02       d             n    	      03                       04       =  `$  9     z  @  q      8  F                   W      E             N   6       f  @          	      [      $  @G      a  @+         )  m       ("       	    I       !  0i      Y  ,         6       crtstuff.c __CTOR_LIST__ __DTOR_LIST__ __JCR_LIST__ __do_global_dtors_aux completed.6159 dtor_idx.6161 frame_dummy __CTOR_END__ __FRAME_END__ __JCR_END__ __do_global_ctors_aux org_opensc_pkcs11_PKCS11Provider.c org_opensc_pkcs11_wrap_PKCS11Slot.c org_opensc_pkcs11_wrap_PKCS11Session.c org_opensc_pkcs11_wrap_PKCS11Object.c org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator.c org_opensc_pkcs11_spi_PKCS11SignatureSpi.c org_opensc_pkcs11_spi_PKCS11CipherSpi.c pkcs11_module.c pkcs11_unlock_mutex pkcs11_lock_mutex pkcs11_destroy_mutex pkcs11_create_mutex pkcs11_init_args pkcs11_slot.c pkcs11_error.c jnix.c jnixThrowExceptionInternalI jnixThrowExceptionInternal pkcs11_slot_make_jmechanisms jnixThrowException __i686.get_pc_thunk.bx new_pkcs11_module pkcs11_module_from_jhandle pkcs11_module_to_jhandle destroy_pkcs11_slot pkcs11_slot_to_jhandle jnixThrowExceptionIV __DTOR_END__ jnixThrowExceptionV __i686.get_pc_thunk.cx __dso_handle jnixThrowExceptionI pkcs11_slot_from_jhandle _DYNAMIC pkcs11_strerror __stack_chk_fail_local _GLOBAL_OFFSET_TABLE_ destroy_pkcs11_module new_pkcs11_slot lt_dlclose pthread_mutex_unlock@@GLIBC_2.0 Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenLabelNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initEncryptNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_waitForSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_closeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_deleteObjectNative pthread_mutex_destroy@@GLIBC_2.0 Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNativeOff stderr@@GLIBC_2.0 lt_dlerror Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initTokenNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getBooleanAttributeNative free@@GLIBC_2.0 Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAttributeNative pthread_mutex_init@@GLIBC_2.0 _edata Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_deriveKeyNative _fini Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNativeOff __stack_chk_fail@@GLIBC_2.4 pthread_mutex_lock@@GLIBC_2.0 Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyPairNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenModelNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_unwrapKeyNative __cxa_finalize@@GLIBC_2.1.3 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_hasTokenProtectedAuthPathNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isRemovableDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_setPINNative realloc@@GLIBC_2.0 malloc@@GLIBC_2.0 Java_org_opensc_pkcs11_wrap_PKCS11Object_enumObjectsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getFirmwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getDescriptionNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_verifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initSignNative __gmon_start__ Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateOffNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNativeOff lt_dlopen Java_org_opensc_pkcs11_wrap_PKCS11Object_getULongAttributeNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenManufacturerNative lt_dlinit Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_enumerateSlotsNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative1 Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyNative Java_org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator_generateKeyPairNative Java_org_opensc_pkcs11_wrap_PKCS11Object_createObjectNative _end Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyInitNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAllowedMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateByteNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNative __vsnprintf_chk@@GLIBC_2.3.4 Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signInitNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNativeOff Java_org_opensc_pkcs11_wrap_PKCS11Session_signNative __bss_start Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative1 Java_org_opensc_pkcs11_wrap_PKCS11Slot_isHardwareDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_destroySlotNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_logoutNative Java_org_opensc_pkcs11_PKCS11Provider_unloadPKCS11Module Java_org_opensc_pkcs11_wrap_PKCS11Session_initPINNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenSerialNumberNative lt_dlexit Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMinPinLenNative _Jv_RegisterClasses Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMaxPinLenNative Java_org_opensc_pkcs11_PKCS11Provider_loadNativePKCS11Module Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_signNative Java_org_opensc_pkcs11_wrap_PKCS11Session_loginNative __fprintf_chk@@GLIBC_2.3.4 Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateOffNative lt_dlsym mechanismFromJavaObject Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initVerifyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getManufacturerNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isTokenPresentNative _init Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_wrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getHardwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Session_openNative ELF          >    P*      @                @ 8  @                                                                             (      0                                                                                    $       $              Ptd                     T      T             Qtd                                                  Rtd                                                 GNU HXtЁ!E_    C         	   *A@@  @,P`dcXŢA T JIsp                     $   (                           *       +       .   0   1   2   3   4   5   7   8   <   >   @   A   B   C   E       G   I   J       L   N   Q   R   T   V   Y   [   ^           _       `       a   b   c   g   i           j   l       n   p   q   U~^0ٶWe繧/7ceuO(kU\$l0hR%թn!Da [ݩR31O_ƶy'2LeٺCz]9]F<dF$MJ-!zcѾiF!lL#̨Qف;Xtm <w9ߙ1`e,=ѣr4P.+?Gp+< -.62M9 ɹ[
p=6V0R.CE	F}퍸1pokH驤|HV7_έH`#Cd@eD*qX/U                             	 (                                   Q
                                                                                                                                                                                                                      B
                                          I
                                          [                       G                     2                                                                 L   "                                        @                          /             C          *           +      "       7    7                  C      /          `B                 @9             	     O            M     0      I           0~             o     P+      $                             06                 7             U    P;                [            1    ?                01             	     N                `            
     W      7                 *          :             o    Y                
 l                  w                0             	    @      <          3             X    |                02      c           h            S    `F                G               	 (              {    P5             	    I      :      5
    Q                                 I                 e            s
     S            
    r                /      I           0w      z           P0      I           `            
    `q      S                           {                 ]            
    0k                @      :           +      I       G    P      *      2    `X      7      [    0d      s      j    @            Z     u      ,      V
    o      g           ,      E       
                 
    :                 -      ;      L          <                *      H	    K                =      
          ~      /      O                =                                       PD                                  2            9    4             P                  J    P                 s                p<                  >            T    P,                              v    8             
    U            	    L                             D                  C    1      c        __gmon_start__ _fini _ITM_deregisterTMCloneTable _ITM_registerTMCloneTable __cxa_finalize _Jv_RegisterClasses Java_org_opensc_pkcs11_PKCS11Provider_loadNativePKCS11Module Java_org_opensc_pkcs11_PKCS11Provider_unloadPKCS11Module Java_org_opensc_pkcs11_wrap_PKCS11Slot_initSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_destroySlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initTokenNative __stack_chk_fail Java_org_opensc_pkcs11_wrap_PKCS11Slot_enumerateSlotsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_waitForSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isTokenPresentNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isRemovableDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isHardwareDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getManufacturerNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getDescriptionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getHardwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getFirmwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenLabelNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenManufacturerNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenModelNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenSerialNumberNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMinPinLenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMaxPinLenNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_hasTokenProtectedAuthPathNative mechanismFromJavaObject Java_org_opensc_pkcs11_wrap_PKCS11Session_openNative Java_org_opensc_pkcs11_wrap_PKCS11Session_closeNative stderr __fprintf_chk Java_org_opensc_pkcs11_wrap_PKCS11Session_loginNative Java_org_opensc_pkcs11_wrap_PKCS11Session_logoutNative Java_org_opensc_pkcs11_wrap_PKCS11Session_initPINNative Java_org_opensc_pkcs11_wrap_PKCS11Session_setPINNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateOffNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateOffNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyPairNative Java_org_opensc_pkcs11_wrap_PKCS11Session_wrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_unwrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_deriveKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Object_enumObjectsNative malloc realloc free Java_org_opensc_pkcs11_wrap_PKCS11Object_getAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAllowedMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getULongAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getBooleanAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_createObjectNative Java_org_opensc_pkcs11_wrap_PKCS11Object_deleteObjectNative Java_org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator_generateKeyPairNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initSignNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative1 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_signNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initVerifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative1 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_verifyNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNativeOff pthread_mutex_unlock pthread_mutex_lock pthread_mutex_destroy pthread_mutex_init lt_dlinit lt_dlopen lt_dlsym lt_dlexit lt_dlerror lt_dlclose calloc __vsnprintf_chk libltdl.so.7 libc.so.6 _edata __bss_start _end GLIBC_2.3.4 GLIBC_2.4 GLIBC_2.2.5                                                                                                                                      3         ti	   U     ii
   a     ui	   k                    +                   *                                                                            P                                                       	                                                                                                                                    (                    0                    8                    @                    H         
           P                    X                    `         
           h                    p                    x                                                                                                                        HH  HtC  H              5  %  @ %  h    %  h   %  h   %  h   %  h   %  h   %  h   %  h   p%  h   `%  h	   P%  h
   @%  h   0%  h    %  h
   %  h    %z  h   %r  h   %j  h   %  f%  fH=  H  UH)HHvH^  Ht	]fD  ]@ f.     H=y  H5r  UH)HHHH?HHtH)  Ht]f     ]@ f.     =)   u'H=   UHtH=  EH]   @ f.     H=  H? u^fD  H  HtUH]@SHHv  HtHH[Sy   1[ff.     SHHDy  HtHH[sy   [f.     @ USHHHHy  Ht'HHHyy  HtHHH[]Sz   H1[]    ATUHSIHx  Ht)LHH+z  HtHHH[]A\Tz  @ []A\Ðf.     UHHAWAVAUATISILMHHdH%(   HE1Lx  H   LLIy  HI   H  IHLX  HcMHHQHMLHH)HT$HHUI1A@  H        LLHEHEH]HEHEIX   ~9HJ  H5k  L1ф  HEdH3%(   uHe[A\A]A^A_] M1ILLA@  ID$hI~HHUHuPPtMD$H
*  H5K  L1  D  HE    HE    (~@ f.     UHHAVAUATSIHHE    dH%(   HE1v  H   IH@hLu11LP(   HE1LH   HH)IEhH\$HHP(   HuH   HH)1Ll$IHt HIT HH9uI$L  HI$MM1HL  HHMdH3%(   u:He[A\A]A^]    MEH
  H5  L1袄  115D  SHHHdH%(   HD$1u  1HtH@h11H   H$u H\$dH3%(   Hu+H[    H
W  H5b  H1  1 f.     USHHHHu  Ht'HH|v  HtH@pH[]f     H1[]    USHHHHt  Ht'HH,v  HtH@pH[]HfD  H1[]    USHHHHlt  Ht'HHu  HtH@pH[]HD  H1[]    AUATHUSHHHt  HtmHHu  HItZH@o    D  H҉t8 StHE H  IHE MEP1LH  LH[]A\A]1fAUATHUSHHHs  HtmHHt  HItZH@O@   D  H҉t8 StHE H  IHE ME1LH  LH[]A\A]1fUSHHHHr  Ht?HHlt  Ht/Pyf@xf**Y  H[]X@ Hf[] f.     USHHHHr  Ht?HHs  Ht/P{f@zf**Y  H[]X@ Hf[] f.     UHHAWAVAUATISHHHE    dH%(   HE1q  H   HLIcs  HH   HxID$hL}1LP@unHEH{LH   HH)ID$hLl$ILP@u<LELHLLGs  HMdH3%(   u:He[A\A]A^A_]f     DCH
  H5^  L1  1f     AUATHUSHHHq  H   HHtr  HI   @ptbI$       
 H҉t8 StHE H  IHE M$   1LH  LH[]A\A]fD@H
  H5     H1?  x1fD  AUATHUSHHH8p  H   HHq  HI   @ptbI$       
 H҉t8 StHE H  IHE M$   1LH  LH[]A\A]fD@H
΁  H5     H1o~  x1fD  AUATHUSHHHho  H   HHp  HI   @ptjI$      D  : XuHHۉuHE H  IHE M$   1LH  LH[]A\A]f@ D@H
  H5     H1}  p1@ f.     AUATHUSHHHn  H   HHo  HI   @ptjI$      D  : XuHHۉuHE H  IHE M$   1LH  LH[]A\A]f@ D@H
  H5     H1|  p1@ f.     USHHHHm  H   HHo  HH   @ptFH  Hw	H;  v#DCH  H5{~  H1z  H  H[]ÐD@H
^  H5N~  1   H{  H  HvD  H1[]D  f.     USHHHHl  H   HHHn  HH   @ptFH  Hw	H;  s#DCHj~  H5}  H1y  H  H[]ÐD@H
~  H5~}  1   H/{  H  HvD  H1[]D  f.     USHHHHl  Ht_HH|m  HHtL@ptH   H[]Hf     D@H
}  H5|     H1z  D  H1[]f.     D  UHAUATSHHF    HF    dH%(   HE1Ht,HHIIH5~  P0HHLH   u#HEdH3%(   uZHe[A\A]]f     HLHX  HcЉLIT$HHHH)1LD$IMD$LA@  ED  AUATHUSIHEHdH%(   HD$1j  HtLHHl  HItiAHEhI|$HI1H1HPhH$u H\$dH3%(   Hu0H[]A\A]fED$H
}  H5={  H1x  1     AUATHUSHIMHi  Ht$HLHRk  HHtHChLPpuH[]A\A]ÐHѴ  HMH}  LC   H8H1[]A\A]UHHAWAVAUATISMHH8DML}dH%(   HE1Gi  H   LHIj  HI   M   HLHX  Lc؉HISL]LHHH)1LL$IMLM@  LML]ID$hHcuLLL   tEEH
|  H5y  H1uw  HEdH3%(   uHe[A\A]A^A_]    E1E1 AUATHUSHIMHEh  Ht'HLHi  HHtHChL   uH[]A\A]fD  Qk  IH  HMLCHX|     H8H1[]A\A]D  f.     UHHAWAVAUATMSIHH(LEdH%(   HE1g  H   LHIh  HI   M   HLHX  LcLIRLULHHH)1Ld$IMA@  LUIGhLLH}PXtEFH
{  H5x  H1u  HEdH3%(   u He[A\A]A^A_]f     E1E13 UHHAWAVAUATISMHH8LELmdH%(   HE1wf  H   LHIg  HI   M   HLHX  HcLLHQHMH߉HH)HT$HHUI1A@  M   HLHX  LcLIQLMLHHH)1Lt$IMA@  LMID$hMLHUHuH}P`tEGH
wz  H5v  H1\t  HEdH3%(   u9He[A\A]A^A_]fD  MHE    HE    BE1E1|D  f.     UHHAWAVAUATISMHH8LELedH%(   HE1d  H   LHIPf  HItwEMHE    HE    HEtBHLHX  HcLHUHLHHH)1LD$ILEA@  IFhHuLH}X  u!HEdH3%(   u2He[A\A]A^A_] EEH
5y  H5>u  H1r  f.     UHHAWAVAUATMSIHMH(dH%(   HE1c  H   LHI5e  HItwU   M   E   LcULLMUHIBLUHH)HD$HIHEA@  LUHELIMhLHh  u&HEdH3%(      He[A\A]A^A_]@ ED$H
4x  H5t  H1q      MHWu  H5s  H1
p   MHu  H5s  H1o  r     Hu  H5s  H1o  M@ f.     AVAUHATUISMHEHdH%(   HD$1@b  Ht6LHHc  HIt HEhDt$Ht$   Lh  u%HD$dH3%(   u6H[]A\A]A^     ED$H
w  H5r  H1p  :f.     UHHAWAVAUATISMHH(HE    dH%(   HE1wa  H   LHIb  HI   IGhHM1LHHMp  HM   HEHLHHH)IGhLt$ILp  uWHuH  I1MtHMM1LH  LHudH34%(   u7He[A\A]A^A_]fD  EEH
u  H5q  H1jo  1UHHAWAVAUATISMHH8LEHE    dH%(   HE1C`  H\  LHIa  HHEA  U\  Mu  EMHwr  H  LcmMLUHIEHH)HD$HIHM@  ID$hLM1LLH}MLM`  LM   HEMLLH}HHH)ID$hLt$IL`     HuH  I1MtHMM1LH  LHMdH3%(      He[A\A]A^A_]D  HMDAH
q  H5
p  H1m  1f.     HMDAH
t      MHp  H5o  H1k  1oHp  H5o  H1k  1PfUHHAWAVAUATISMHH8LELedH%(   HE17^  H   LHI_  HItwEMHE    HE    HEtBHLHX  HcLHUHLHHH)1LD$ILEA@  IFhHuLH}  u!HEdH3%(   u2He[A\A]A^A_] EEH
r  H5n  H1Bl  f.     UHHAWAVAUATMSIHMH(dH%(   HE1]  H   LHI^  HI   E   M  E   E9E|LcULLMUHIBLUHH)HD$HIHEA@  LUHELIMhLH  uGHEdH3%(      He[A\A]A^A_]D  MHn  H5_m  H1ui   ED$H
q  H5=m  H1j      MHNn  H5m  H1-i  q     HAn  H5l  H1i  L>@ f.     AUATHUSIHMHdH%(   HD$1DL$[  Ht1LHH\  HItHEhHt$   L  u"HD$dH3%(   u3H[]A\A]    ED$H
p  H55l  H1i  fUHHAWAVAUATMSIHMH(dH%(   HE1Z  H   LHI5\  H   M   HEHLHX  LcLIRLULHHH)1Ld$IMA@  LUIFhLLA   L  t,E1=   t"LMH
o  H5Ak  H1EAh  HMdH3%(   Du4He[A\A]A^A_]HQl  H5k  H1g       E1FfD  UHHAWAVAUATISIMH8LELe dH%(   HE1Y  H9  LLHZ  HI  U   M0  EMHk     HcEULLHEHHH)HD$HHIHMIȋM@  M   ILLX  LcMIQLMLLHH)1Ll$IMA@  HChLMLHUHu   H}M  t
1=   uD@ HMdH3%(   ukHe[A\A]A^A_]ËMHj  H5oi  L1e  1EFH
j  H5Ni  L1g  Hj  H52i  L11Fe  D  f.     UHHAWAVAUATISMHH8LELedH%(   HE1W  H   LHI Y  HItwEMHE    HE    HEtBHLHX  HcLHUHLHHH)1LD$ILEA@  IFhHuLH}  u!HEdH3%(   u2He[A\A]A^A_] EEH
l  H5h  H1e  [f.     UHHAWAVAUATISMHH8LELedH%(   HE1V  H   LHI X  HItwEMHE    HE    HEtBHLHX  HcLHUHLHHH)1LD$ILEA@  IFhHuLH}   u!HEdH3%(   u2He[A\A]A^A_] EEH
k  H5f  H1d  ;f.     UHHAWAVAUATISMHH8LEHE    dH%(   HE1sU  Hu  LHIV  HHEZ  U4  MJ  EMHg     LcmMLUHIEHH)HD$HIHM@  ID$hLM1LLH}MLM   LM   HEMLLH}HHH)ID$hLt$IL   uVHuH  I1MtHMM1LH  LHMdH3%(   uzHe[A\A]A^A_]D  HMH5Me  H1DAH
[j  b  1fMHVf  H5e  H15a  1HRf  H5e  H1a  1wM f.     UHHAWAVAUATISMHH8LEHE    dH%(   HE1S  Hu  LHIT  HHEZ  U4  MJ  EMHe     LcmMLUHIEHH)HD$HIHM@  ID$hLM1LLH}MLM   LM   HEMLLH}HHH)ID$hLt$IL   uVHuH  I1MtHMM1LH  LHMdH3%(   uzHe[A\A]A^A_]D  HMH5]c  H1DAH
h  a  1fMHfd  H5/c  H1E_  1Hbd  H5c  H1)_  1w] f.     UHHAWAVAUATISMHH8LELm dH%(   HE1Q  H   LHI S  HItuuMHc  xSMHc  .  Md  M  HLHX  U(HHEx	HcU(H9sFM(Hc  H5-b  H1C^  1HMdH3%(   (  He[A\A]A^A_]    H)LcULHEHMHULH)HHD$LUHHEIBHH)HD$HIHEA@  LUHELEM\$hHMH}LHA   uFHLELMU(H  E4D  Hb  H5Ba  H1X]   EGH
Ef  H5a  H1^  1 MHWb  H5`  H1
]  1AUHHAWAVAUATISMHH8LELm dH%(   HE1O  H   LHIP  HItuuMHa  xSMHa  .  Md  M  HLHX  U(HHEx	HcU(H9sFM(Ha  H5`  H13\  1HMdH3%(   (  He[A\A]A^A_]    H)LcULHEHMHULH)HHD$LUHHEIBHH)HD$HIHEA@  LUHELEM\$hHMH}LHA   uFHLELMU(H  E4D  H`  H52_  H1H[   EGH
]d  H5_  H1\  1 MHG`  H5^  H1Z  11UHHAWAVAUATISMHH(HE    dH%(   HE1wM  H   LHIN  HI   IGhHM1LHHM(  HM   HEHLHHH)IGhLt$IL(  u_HuHttHH  I1MtHMM1LH  LH]dH3%(   u9He[A\A]A^A_]     EEH
%c  H5]  H1b[  1f     UHHAWAVAUATISMHH(HE    dH%(   HE17L  H   LHIM  HI   IGhHM1LHHM  HM   HEHLHHH)IGhLt$IL  u_HuHttHH  I1MtHMM1LH  LH]dH3%(   u9He[A\A]A^A_]     EEH

b  H5n\  H1"Z  1f     UHHAWAVAUATISMHH8LEHE    dH%(   HE1J  Hu  LHI\L  HHEZ  U4  MJ  EMH']     LcmMLUHIEHH)HD$HIHM@  ID$hLM1LLH}MLM  LM   HEMLLH}HHH)ID$hLt$IL  uVHuH  I1MtHMM1LH  LHMdH3%(   uzHe[A\A]A^A_]D  HMH5Z  H1DAH
\  vX  1fMH[  H5Z  H1V  1H[  H5Z  H1V  1w f.     UHHAWAVAUATISMHH8LEHE    dH%(   HE1I  Hu  LHIlJ  HHEZ  U4  MJ  EMH7[     LcmMLUHIEHH)HD$HIHM@  ID$hLM1LLH}MLM   LM   HEMLLH}HHH)ID$hLt$IL   uVHuH  I1MtHMM1LH  LHMdH3%(   uzHe[A\A]A^A_]D  HMH5X  H1DAH
Z  V  1fMHY  H5X  H1T  1HY  H5X  H1T  1w f.     UHHAWAVAUATISHHxHELxDtLuHhdH%(   HE1G  HHE  HLmH  Ht  IH5]  LP0HHX  IH
Y  HY  HL  HHE.  IH
Y  HY  HL  HHE  ILLE1MX  HHHEH@H   HH)HD$HHH`H      fME HHUL1IHA  ME HHUHCLL1A  IIE LLX  HcM] HSHLHLH)1LD$ILCA@  L9etOIE DLLh  HIX     1HMdH3%(      He[A\A]A^A_]@ MHctH]HhLHHEdHELEHMH`HHxH@h  uHEH
7X  H5V  L1S  dOD  f.     UHHAWAVAUATISHH   HELPDLH@HEHpHE H`dH%(   HE1`D  HHX  HLE  Hx  IH5[  LP0HH\  IH
HW  HEW  HL  HI3  IH
+W  H)W  HL  HHx  IHpLE1X  HHHhH@H   HH)HD$HHH8H      @ MHLL1IHA  MHHxHCLL1A  IILLX  HcMHSHLHLH)1LD$ILCA@  L9htFIDHpLh  HIT1HMdH3%(     He[A\A]A^A_]IH`LE1X  HHHpH@H   HH)HD$HHH0H      f.     MHLL1IHA  MHHxHCLL1A  IILLX  HcMHSHLHLH)1LD$ILCA@  L9pt.IDH`Lh  HIT    HcLH]H@LHHEHXHUHhLpL0HHPH@hRHURH8  ZYuOI   L  HH?HELE   1HLHEHEHEI  HH
+T  H5Q  L1O  1+f.     UHHAWAVAUATISMHMcHHHEHE    HEdH%(   HE1\@  H  LHIA  HHE  LuHUHLeLaIEhLUE1HM HULMLUL  LU   HEMHM HULLHHH)IEhLd$IM  u]HuHtvHH  I1MtHMM1LH  LHMdH3%(   u;He[A\A]A^A_]fD  HMH5mP  H1DAH
R  N  1 f.     UHHAWAVAUATISHH   HELpDlH`HE HEHE(HEdH%(   HE1>  HHx  HL+@  Hr  IH5xU  LP0HHV  IH
Q  HQ  HL  HHE,  IH
Q  HQ  HL  HHE  IHuLE1X  LcKDm H   HH)HD$HMHXH   LMI   fD  ME HHUL1IHA  ME HHUHCLL1A  IIE LLX  HcM] HSHLHLH)1LD$ILCA@  M9tHIE DHuLh  HIX1HMdH3%(      He[A\A]A^A_]@ LMIHclH`H]LHHEIHuLX  LcMIVHuLHH)1Ld$IMA@  HxHULLXMHHpH@hRHUAU  ZYu	HE/H
O  H5oM  L1#K  f     UHHAWAVAUATISHHxHELxDtLu HhdH%(   HE1;  HHE  HLM=  Ht  IH5R  LP0HHX  IH
N  HN  HL  HHE.  IH
N  HN  HL  HHE  ILLE1MX  HHHEH@H   HH)HD$HHH`H      fME HHUL1IHA  ME HHUHCLL1A  IIE LLX  HcM] HSHLHLH)1LD$ILCA@  L9etOIE DLLh  HIX     1HMdH3%(      He[A\A]A^A_]@ MHctH]HhLHHEDHELMLEH`HUHHxH@h  uHEH
uM  H5J  L1H  `+f.     UHHAWAVAUATISHHh  LLdH%(   HE1a9  HH  HL:  HH  IH5P  LP0HHk  IH
BL  H?L  HL  HH>  IH
!L  HL  HL  HH  IHLE1X  LcKDm H   HH)HD$HMHxH   LMI   f     ME HHL1IHA  ME HHHCLL1A  IIE LLX  HcM] HSHLHLH)1LD$ILCA@  M9tGIE DHLh  HIO1H}dH3<%(     He[A\A]A^A_]LMIǿ   XHI  HLHxHH@h     HHHǅ        HHHHHH@h     H1E1H   fHIHH9u   H LALLI   D  HL葻HI   IEhH    HH      HIcI41Ht     HHHH9uAI   H LtLLHHH@h      IDL  HIMD1HL  LH LLHHL  H5F  LHH1B  LԹHLH
L  H5sF  1DGL#D  HH
{L  DGH5HF  L1C  HH
L  DGHH
pL  DGm f.     UHHAWAVAUATISMHMH(dH%(   HE14  H	  LHI6  H   HcEL}HE    HE       LLLHEIFh      HEH   H   LHLLH)HD$HHEIFh   uVHuHttHH  IHLEM1LH  LHMdH3%(   uMHe[A\A]A^A_]@ DEH
K  H5D  H1zB  1fD  DEH
K     f     UHHAWAVAUATISMHMH8dH%(   HE1<3  H   LHI4  HI   IGhLEHE  @HE    HE       LLELL   LE   HEH   H   LHLLH)HD$HHEIGh   uCLEItYHMILLHC4  HMdH3%(   uBHe[A\A]A^A_]D  H
J  H5`C  H1A  1fH
K     蝶 f.     AVAUHATUISMHMH0dH%(   HD$(1HD$1  H   LHH@3  H   HcD$`HD$    HT$   LLHD$HD$HD$HEh   u<LD$ D$ItNDL$`H
J  H5zB     H1+@  1(    DD$`H
I  H5MB  H1@  1HL$(dH3%(   u
H0[]A\A]A^} f.     AVAUHATUISMHMH0dH%(   HD$(1D$ 0  H   LHH$2  H   HcD$`HD$    HT$   LLHD$HD$HD$HEh   u@LD$ D$ItQDL$`H
tJ  H5]A     H1?  1+f.     DD$`H
G  H5-A  H1>  1HL$(dH3%(   u
H0[]A\A]A^] f.     UHHAWAVAUATISMHHHLEdH%(   HE1/  HHE~  HL1  Hj  IH5PF  LP0HHN  IH
B  HB  HL  HHE$  IH
hB  HfB  HL  HHE   ILLE1MX  HHHEH@H   HH)HD$HHHEH       ME HHUL1IHA  ME HHUHCLL1A  IIE LLX  HcM] HSHLHLH)1LD$ILCA@  L9et?IE DLLh  HIX1HMdH3%(   uVHe[A\A]A^A_]MHEHMHUHuH}H@h   uHEH
H  H5>  L1<  $@ AVAUHATUISMHM-  Ht'LHH.  HtHEhLL   u[]A\A]A^    HH
CH  H5W>  []A\A]A^1<  fD  UHHAWAVAUATISHH   HELPDLHpHEH`dH%(   HE1,  HHX  HL0.  H{  IH5}C  LP0HH_  IH
?  H?  HL  HI6  IH
?  H?  HL  HHx	  IHpLE1X  HHHhH@H   HH)HD$HHH@H          MHLL1IHA  MHHxHCLL1A  IILLX  HcMHSHLHLH)1LD$ILCA@  L9htNIDHpLh  HIT1HMdH3%(     He[A\A]A^A_]     IH`LE1X  HHHpH@H   HH)HD$HHH8H      f.     MHLL1IHA  MHHxHCLL1A  IILLX  HcMHSHLHLH)1LD$ILCA@  L9pt.IDH`Lh  HIT    HcLHUHhHE    HE    HuLpL8HPHEHXH@hRHURH@  ZYuOI   L  HH<HELE   1HLHEHEHEI  HH
<  H5H:  L17  1萭AVAUHATUISMHMH dH%(   HD$1(  HtHLHHM*  HIt2HcD$PHHD$    HD$    LLH$HEhX  u#HD$dH3%(   u4H []A\A]A^fD  ED$H
t=  H5}9  H117  ʬf.     UHHAWAVAUATMSIHMH(dH%(   HE1(  H   LHIu)  HI   E   M  E   E9E|LcULLMUHIBLUHH)HD$HIHEA@  LUHELIMhLHh  uGHEdH3%(      He[A\A]A^A_]D  MH9  H5O8  H1e4   ED$H
D<  H5-8  H15      MH>9  H58  H14  q     H19  H57  H13  L.@ f.     AVAUHATUISMHEHdH%(   HD$1p&  Ht6LHH'  HIt HEhDt$Ht$   Lh  u%HD$dH3%(   u6H[]A\A]A^     ED$H
4;  H57  H14  jf.     UHHAWAVAUATISMHH(HE    dH%(   HE1%  H   LHI'  HI   IGhHM1LHHMp  HM   HEHLHHH)IGhLt$ILp  uWHuH  I1MtHMM1LH  LHudH34%(   u7He[A\A]A^A_]fD  EEH
%:  H55  H13  11AVAUHATUISMHMH dH%(   HD$1$  HtHLHH%  HIt2HcD$PHHD$    HD$    LLH$HEh  u#HD$dH3%(   u4H []A\A]A^fD  ED$H
|9  H55  H12  jf.     UHHAWAVAUATMSIHMH(dH%(   HE1#  H   LHI%  HI   E   M  E   E9E|LcULLMUHIBLUHH)HD$HIHEA@  LUHELIMhLH  uGHEdH3%(      He[A\A]A^A_]D  MHO5  H53  H10   ED$H
T8  H53  H11      MH4  H53  H1/  q     H4  H53  H1/  LΦ@ f.     AUATHUSIHMHdH%(   HD$1DL$"  Ht1LHH}#  HItHEhHt$   L  u"HD$dH3%(   u3H[]A\A]    ED$H
L7  H52  H1y0  fUHHAWAVAUATMSIHMH(dH%(   HE1\!  H   LHI"  H   M   HEHLHX  LcLIRLULHHH)1Ld$IMA@  LUIFhLLA   L  t,E1=   t"LMH
6  H51  H1EA/  HMdH3%(   Du4He[A\A]A^A_]H2  H51  H1-       E1֤fD  AVAUHATUISMHMH dH%(   HD$1    HtHLHH!  HIt2HcD$PHHD$    HD$    LLH$HEh   u#HD$dH3%(   u4H []A\A]A^fD  ED$H
5  H50  H1q.  
f.     AVAUHATUISMHMH dH%(   HD$1P  HtHLHH   HIt2HcD$PHHD$    HD$    LLH$HEh  u#HD$dH3%(   u4H []A\A]A^fD  ED$H
4  H5/  H1-  :f.     UHHAWAVAUATISHH8LELudH%(   HE1HE    r  HT  LHI  HHE9  E c  Mf  E   E9E    Lcm M LUHIEHH)HD$HIHM@  ID$hLM1LLH}MLM   LM   HEMLLH}HHH)ID$hLt$IL   uxHuH  I1MtHMM1LH  LHMdH3%(      He[A\A]A^A_] MH/  H5?.  H1U*  1뼐HMH5%.  H1DAH
33  +  1f.     M H&/  H5/  H5-  H1)  1`0UHHAWAVAUATISHH8LELudH%(   HE1HE    r  HT  LHI  HHE9  E c  Mf  E   E9E    Lcm M LUHIEHH)HD$HIHM@  ID$hLM1LLH}MLM   LM   HEMLLH}HHH)ID$hLt$IL   uxHuH  I1MtHMM1LH  LHMdH3%(      He[A\A]A^A_] MH-  H5?,  H1U(  1뼐HMH5%,  H1DAH
[1  )  1f.     M H&-  H5-  H5+  H1'  1`0UHHAWAVAUATISHH8LELudH%(   HE1Lm(v  H   LHI  HItvM   MH,  [  EuzE9E |rM9  HLHX  U0HHEx	HcU0H9slM0H,  H5+  H1!'  1HMdH3%(   A  He[A\A]A^A_]D  MH',  H5*  H1&  1f     H)LcU LHEHM HULH)HHD$LUHHEIBHH)HD$HIHEA@  LUHELEM\$hHMH}LHA   u^HLELMU0H  ED  H+  H5)  H1&   M H+  f     EGH
.  H5)  H1r'  1fD  UHHAWAVAUATISHH8LELudH%(   HE1Lm(F  H   LHI  HItvM   MHz*  [  EuzE9E |rM9  HLHX  U0HHEx	HcU0H9slM0H*  H5(  H1$  1HMdH3%(   A  He[A\A]A^A_]D  MH)  H5(  H1$  1f     H)LcU LHEHM HULH)HHD$LUHHEIBHH)HD$HIHEA@  LUHELEM\$hHMH}LHA   u^HLELMU0H  ED  H{)  H5'  H1#   M H(  f     EGH
,  H5'  H1B%  1֚fD  UHHAWAVAUATISMHHHHE    L}dH%(   HE1HE      H  LHIt  HHE  E <  M?  E  E9E   Lcu LUHL}IFHH)HD$HHHIHMM @  ID$h1MLHuL      HUHBHH)HD$HHHHE   ID$hL}1LL(  ]  HuH   E1HuH  H   HMH   HMHtLHHEMUHA  HEH]dH3%(   1  He[A\A]A^A_]    ID$hMLHuL   <H}H
*  DGH5z%  H1.#  1f.     HID$hLHLH)Lt$IL(  u\Hu LHHELE1HA  HED  MHO&  H5$  H1!  1fD  H}H
=*  DGC@ M H%  H%  H5$  H1   1UHHAWAVAUATISMHHHHE    L}dH%(   HE1HE    +  H  LHI  HHE  E <  M?  E  E9E   Lcu LUHL}IFHH)HD$HHHIHMM @  ID$h1MLHuL      HUHBHH)HD$HHHHE   ID$hL}1LL  ]  HuH   E1HuH  H   HMH   HMHtLHHEMUHA  HEH]dH3%(   1  He[A\A]A^A_]    ID$hMLHuL   <H}H
'  DGH5"  H1N   1f.     HID$hLHLH)Lt$IL  u\Hu LHHELE1HA  HED  MHo#  H5"  H1%  1fD  H}H
'  DGC@ M H#  H#  H5!  H1  1UHHAWAVAUATISHHXLELmdH%(   HE1Lu(V  HtyLHI  HItcU p  M  EumE9E |eHLHX  LcȋE0x	HcE0I9sSM0H"  H5!  H1  1HMdH3%(   j  He[A\A]A^A_]@ MH"  @ I)LM IALMLMLHHH)HD$HHEHcE HPHEHH)HT$HIHUUA@  HELULEM\$hHMH}HLA   LMufHuID$hHUH}I)HuLM(  uhHMHMLLLEHߋU0MA  EfD  M H!  EGH
$  H5  H1r  D  EGH

%   H   H5  H1  1Ԓ@ UHHAWAVAUATISHHXLELmdH%(   HE1Lu(  HtyLHI  HItcU p  M  EumE9E |eHLHX  LcȋE0x	HcE0I9sSM0H   H5  H1  1HMdH3%(   j  He[A\A]A^A_]@ MH  @ I)LM IALMLMLHHH)HD$HHEHcE HPHEHH)HT$HIHUUA@  HELULEM\$hHMH}HLA   LMufHuID$hHUH}I)HuLM  uhHMHMLLLEHߋU0MA  EfD  M H  EGH
"  H5~  H12  D  EGH
"   H  H5J  H1`  1蔐@ UHHAWAVAUATISHH8LELudH%(   HE1  H\  LHIC
  HHEA  E k  Mn  E  E9E    Lcm M LUHIEHH)HD$HIHM@  ID$hLM1HE    LLMLMH}  LM   HEMLLH}HHH)ID$hLt$IL  uxHuH  I1MtHMM1LH  LHMdH3%(      He[A\A]A^A_] MH  H5  H1  1뼐HMH5  H1DAH
I  .  1f.     M H  H  H5F  H1\  1`萎UHHAWAVAUATISHH8LELudH%(   HE1	  H\  LHIC  HHEA  E k  Mn  E  E9E    Lcm M LUHIEHH)HD$HIHM@  ID$hLM1HE    LLMLMH}   LM   HEMLLH}HHH)ID$hLt$IL   uxHuH  I1MtHMM1LH  LHMdH3%(      He[A\A]A^A_] MH  H5  H1  1뼐HMH5  H1DAH
g  .  1f.     M H  H  H5F  H1\  1`萌UHHAWAVAUATISHH8LELudH%(   HE1Lm(  H   LHI?	  HItvM   MH
  [  EuzE9E |rM9  HLHX  U0HHEx	HcU0H9slM0H.  H5k  H1  1HMdH3%(   A  He[A\A]A^A_]D  MH  H5'  H1=  1f     H)LcU LHEHM HULH)HHD$LUHHEIBHH)HD$HIHEA@  LUHELEM\$hHMH}LHA  u^HLELMU0H  ED  H  H5Z  H1p   M Hn  f     EGH
  H5  H1  1ffD  UHHAWAVAUATISHH8LELudH%(   HE1Lm(  H   LHI  HItvM   MH  [  EuzE9E |rM9  HLHX  U0HHEx	HcU0H9slM0H  H5;  H1Q  1HMdH3%(   A  He[A\A]A^A_]D  MHW  H5  H1
  1f     H)LcU LHEHM HULH)HHD$LUHHEIBHH)HD$HIHEA@  LUHELEM\$hHMH}LHA   u^HLELMU0H  ED  H  H5*  H1@   M H>  f     EGH
  H5  H1  16fD  HtHrHHHЃÐ   f.     HtH҈HHHЃÐ   f.     HtSH҇H蚇1[fD     f.     H   t9USH(   HHŸ   Ht1H<uH+1H[] H0H   [] AUATIUSHx   H膇H   оH@    HH@p    HE H5;  HP0HI5  "Z  HE H
  H  LH  H  HM HL1H  HI   HE LHX  LcA|$Hc҆HIHCR  HE 1DLH@  HCB  H{kHHCp>  H5  HφHV  H{hЅu<HChH=M  P   HChH{PHH؅   H[]A\A]fLCH
]  H5^  H1  H{Ht脅H|'H1[]A\A]f.     HI  H5  H1(  H1[]A\A] LCH
   LCH
5  H5  H1  u    H      H	  H5  H1
  A ۄHKH  H5y  IH1
      諄HKH  H5I  IH1\
      Hff.     HHt>оHuH    HHv  H5  1
  1HÐHFhSH1PH{pHtH{HtH[附f     AUATIUSIP     HHH    HhHpHID$hHP0u]CpHuH[]A\A]ÐID$hH   HP8HH؅tH
E  H5  AL1
  HA1D  H
  H5  AL1
  f     H  H5  L1  1eHff.     HHt>HuH    HH  H5o  1  1HÐH阂     AWAVIAUATIUSHHH5  HHdH%(   HD$81HL$P0H   IHH
  H  LH  HHD$   L$$H1LHD`  HHD$   M   HD$ E1HD$[HLM HD$8LHP1DL$8DD$0HT$ A   HZYt\LDHHt$HIHAp  L9$$t]IFhIHT$Hu PHtDE H
  H5  H1  1HL$8dH3%(   uHH[]A\A]A^A_fD  HD$<f.     f     ~r          t  ~            H  t(     H  t   H[!  f   @     	        0H#  tY   H  t!H     !    ^    r  ,    H  d    H  K  HS!     g     q       H8       H     H  <  f        ,  ~     H       H     Ha     D  `    dH  T  bHs  >cHv     Ð        H      Hv    H  uDÐ  E H    H  H  H[      H  {  H  eH  u@ HU  ÁP  HA  8  `  H=  p  HB  r      H3  H	    H{    H  #ÃPH~    QH~  TH       iH  kHI  ^jH
  NpH  Ð   H  (H     H     H  [     H    H  H          H       H     H      1H  S2H  fD    H  (   H  {        HL     HK  K        H     H         H(     H*          H  h   HI       eH  ;fH  fD  
H  yfD     H  ^ AH  IfD     H  . H  fD  0  H   HR  H       HY       H|       H       H       H       Hv       H       HN       H       HT       H       H       UHAVAUATSILMIIH Hc7   dH%(   HE1HFHH)I H\$HEI@HHHEI@IHHEpy|+A9.AHEdH3%(   uDHe[A\A]A^]@ A& I$A    LLP0HtI$HHLQpx     UHAWAVAUATISIIAκ   HH(Hc7dH%(   HE1HFHH)IH\$HEIAHHHEIALMHEx|1A94AHEdH3%(      He[A\A]A^A_]@ A' I$LA    LP0HItI$H
A  H&  LL  HItI$HL8  HwM$ID1LLLA   HRI$HLRh@Iwf     AVAUIATUISIH   HL$HLD$PLL$Xt:)D$`)L$p)$   )$   )$   )$   )$   )$   dH%(   HD$(1Hl$H\$D$   f     H$  ILLLHHD$HD$0D$   D$0   HD$ D$uHT$(dH3%(   uH   []A\A]A^Cv AWAVIAUATIUSIHH8dH%(   HD$(1H\$Ld$D$   @ HE ILLLLHHEHCHEHCeD$uHT$(dH3%(   uH8[]A\A]A^A_u@ AWAVIAUATIUSIAH   LD$PLL$Xt:)D$`)L$p)$   )$   )$   )$   )$   )$   dH%(   HD$(1Hl$H\$D$   f     H$   IMDLLHD$HD$0HD$    D$0   HD$ BD$uHT$(dH3%(   uH   []A\A]A^A_t@ f.     AWAVIAUATIUSAILHHdH%(   HD$81HD$H\$ D$   HD$@ HU H|$IMDLHHUHSHUHSLD$uHL$8dH3%(   uHH[]A\A]A^A_s   HH   Length of label exceeds 32 bytes        java/lang/IllegalArgumentException      C_InitToken failed for module %s.       org/opensc/pkcs11/wrap/PKCS11Exception  C_GetSlotList failed for module %s.     C_GetMechanismList for PKCS11 slot %d failed.   Invalid value %u for ulMinPinLen of token in slot %d.   Invalid value %u for ulMaxPinLen of token in slot %d. C_WaitForSlotEvent failed. No token present in slot %d.   {Gz?Invalid data length %d. NULL input data. Invalid input offset %d. C_Sign failed for slot %d. C_Verify failed for slot %d. NULL output data. Invalid output offset %d. C_Decrypt failed for slot %d. C_Encrypt failed for slot %d. ()I getKind ()[B getData C_GenerateKey failed. C_GenerateKeyPair failed. C_WrapKey failed for slot %d. C_UnwrapKey failed. C_DeriveKey failed.        C_OpenSession for PKCS11 slot %d failed.        pkcs11_slot_close_session: C_CloseSession for PKCS11 slot %d(%s) failed.        C_Login for PKCS11 slot %d failed.      PKCS11Session.logoutNative: C_Logout for PKCS11 slot %d(%s) failed (%s).        C_InitPIN for PKCS11 slot %d failed.    C_SetPIN for PKCS11 slot %d failed.     C_SignInit failed for slot %d.  C_SignUpdate failed for slot %d.        C_SignFinal failed for slot %d. C_VerifyInit failed for slot %d.        C_VerifyUpdate failed for slot %d.      C_VerifyFinal failed for slot %d.       C_DecryptInit failed for slot %d.       C_EncryptInit failed for slot %d.       C_DecryptUpdate failed for slot %d.     C_EncryptUpdate failed for slot %d.     C_DecryptFinal failed for slot %d.      C_EncryptFinal failed for slot %d.      org/opensc/pkcs11/wrap/PKCS11Attribute  Out of memory during object enumeration for slot number %d.     C_FindObjectsInit failed for slot number %d.    C_FindObjects failed for slot number %d.        C_FindObjectsFinal failed for slot number %d.   C_GetAttributeValue failed for attribute %u.    C_GetAttributeValue returned ulValueLen -1 for attribute %u but returned CKR_OK. The underlying PKCS#11 module seems to be broken.      C_GetAttributeValue failed for attribute CKA_ALLOWED_MECHANISMS.        C_GetAttributeValue returned ulValueLen -1 for attribute CKA_ALLOWED_MECHANISMS but returned CKR_OK. The underlying PKCS#11 module seems to be broken.  C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_ULONG) for attribute %u of type CK_ULONG but returned CKR_OK. The underlying PKCS#11 module seems to be broken.   C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_BBOOL) for attribute %u of type CK_BBOOL but returned CKR_OK. The underlying PKCS#11 module seems to be broken. C_CreateObject failed. C_DestroyObject failed.    Out of memory allocating PKCS11 context.        Unable ot initialize dynamic function loading.  Out of memory allocating PKCS11 module name.    Cannot open PKCS11 module %s: %s.       Cannot find function C_GetFunctionList in PKCS11 module %s: %s. C_GetFunctionList in PKCS11 module %s failed.   C_Initialize in PKCS11 module %s failed.        C_GetInfo in PKCS11 module %s failed.   Invalid PKCS 11 module handle %p. java/lang/String getBytes C_GetFunctionList   Out of memory allocating PKCS11 slot.   C_GetSlotInfo for PKCS11 slot %d failed.        C_GetTokenInfo for PKCS11 slot %d failed.       Invalid PKCS11 slot handle %p.  org/opensc/pkcs11/wrap/PKCS11Mechanism  C_GetMechanismInfo failed for mechanism %u. (IIII)V <init> CKR_OK CKR_CANCEL CKR_HOST_MEMORY CKR_SLOT_ID_INVALID CKR_GENERAL_ERROR CKR_FUNCTION_FAILED CKR_ARGUMENTS_BAD CKR_NO_EVENT CKR_NEED_TO_CREATE_THREADS CKR_CANT_LOCK CKR_ATTRIBUTE_READ_ONLY CKR_ATTRIBUTE_SENSITIVE CKR_ATTRIBUTE_TYPE_INVALID CKR_ATTRIBUTE_VALUE_INVALID CKR_DATA_INVALID CKR_DATA_LEN_RANGE CKR_DEVICE_ERROR CKR_DEVICE_MEMORY CKR_DEVICE_REMOVED CKR_ENCRYPTED_DATA_INVALID CKR_ENCRYPTED_DATA_LEN_RANGE CKR_FUNCTION_CANCELED CKR_FUNCTION_NOT_PARALLEL CKR_FUNCTION_NOT_SUPPORTED CKR_KEY_HANDLE_INVALID CKR_KEY_SIZE_RANGE CKR_KEY_TYPE_INCONSISTENT CKR_KEY_NOT_NEEDED CKR_KEY_CHANGED CKR_KEY_NEEDED CKR_KEY_INDIGESTIBLE CKR_KEY_NOT_WRAPPABLE CKR_KEY_UNEXTRACTABLE CKR_MECHANISM_INVALID CKR_MECHANISM_PARAM_INVALID CKR_OBJECT_HANDLE_INVALID CKR_OPERATION_ACTIVE CKR_OPERATION_NOT_INITIALIZED CKR_PIN_INCORRECT CKR_PIN_INVALID CKR_PIN_LEN_RANGE CKR_PIN_EXPIRED CKR_PIN_LOCKED CKR_SESSION_CLOSED CKR_SESSION_COUNT CKR_SESSION_HANDLE_INVALID CKR_SESSION_READ_ONLY CKR_SESSION_EXISTS CKR_SESSION_READ_ONLY_EXISTS CKR_SIGNATURE_INVALID CKR_SIGNATURE_LEN_RANGE CKR_TEMPLATE_INCOMPLETE CKR_TEMPLATE_INCONSISTENT CKR_TOKEN_NOT_PRESENT CKR_TOKEN_NOT_RECOGNIZED CKR_TOKEN_WRITE_PROTECTED CKR_UNWRAPPING_KEY_SIZE_RANGE CKR_USER_ALREADY_LOGGED_IN CKR_USER_NOT_LOGGED_IN CKR_USER_PIN_NOT_INITIALIZED CKR_USER_TYPE_INVALID CKR_USER_TOO_MANY_TYPES CKR_WRAPPED_KEY_INVALID CKR_WRAPPED_KEY_LEN_RANGE CKR_WRAPPING_KEY_SIZE_RANGE CKR_RANDOM_SEED_NOT_SUPPORTED CKR_RANDOM_NO_RNG CKR_DOMAIN_PARAMS_INVALID CKR_BUFFER_TOO_SMALL CKR_SAVED_STATE_INVALID CKR_INFORMATION_SENSITIVE CKR_STATE_UNSAVEABLE CKR_CRYPTOKI_NOT_INITIALIZED CKR_MUTEX_BAD CKR_MUTEX_NOT_LOCKED CKR_FUNCTION_REJECTED CKR_VENDOR_DEFINED Unknown PKCS#11 error        CKR_KEY_FUNCTION_NOT_PERMITTED  CKR_SESSION_PARALLEL_NOT_SUPPORTED      CKR_SESSION_READ_WRITE_SO_EXISTS        CKR_UNWRAPPING_KEY_HANDLE_INVALID       CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT    CKR_USER_ANOTHER_ALREADY_LOGGED_IN      CKR_WRAPPING_KEY_HANDLE_INVALID CKR_WRAPPING_KEY_TYPE_INCONSISTENT      CKR_CRYPTOKI_ALREADY_INITIALIZED        (ILjava/lang/String;)V  ;T  i    ^p  ``  `  `  a  `aH  bx  0d  d  e  `e@  ex  @f  f  @g0  gh  h  i  `j  @kX   l  l  m  Pn@   oh  o  `p  q(	   rx	  0s	  t	  u
  pw8
  0x
  `y
  p{
  |  0~@  ~         0@   p       0 
  p0
  `
  
  
   
  @   P    @     p  Ч@      @   P  а    @   @  0p       P(  X  `  0  0  0H  `x    p  P  8  h         0(  `@  X  x       0   P  `p  P  `       0`  x           p               zR x  $      Z0   FJw ?;*3$"       D   \$    AW
HC    d   \"    AW
HA 4      \I    AAM a
GAHDCA     4      \E    BAD m
ABIAAB   ,      ]   AF
HG
D   ,   $  p^;   AF
G
H      $   T  _    AJ L
AH     4   |  _I    AAM b
AAMDCA     4      `I    AAM b
AAMDCA     4     `I    AAM b
AAMDCA     <   $  0`    BBD A(J0p
(A ABBA     <   d  `    BBD A(J0p
(A ABBA     4     `c    AAM ~
AAIDEA     4     ac    AAM ~
AAIDEA     ,     @a   AF
HD
J   <   D   b    BBD A(J0
(A ABBC     <     b    BBD A(J0
(A ABBC     <     @c    BBD A(J0
(A ABBC     <     c    BBD A(J0
(A ABBC     4   D  d    AAM k
CAB|CA    4   |  e    AAM k
CAB|CA    4     e    AAM n
AAQlCA     $     f    AC
Ii
J<     f    BBD A(M@q
(A ABBC     L   T  0g    BBD A(M0r
(A ABBBb(C ABB       ,     `g   AF
HG
H   L     Ph    BBD A(M0u
(A ABBGl(C ABB       ,   $  h
   AF
HG
J   ,   T  i   AF
HG;
G  ,     j   AF
HG
D   ,     k   AF
HG
E   D     0m    BBE A(D0M@d
0A(A BBBI     ,   ,  m/   AF
HG
G   ,   \  n   AF
HGd
F  ,     p   AF
HG
D   ,     xq   AF
HG
F   <     r    BBD A(M@d
(A ABBH     ,   ,  Xs:   AF
HG
A   ,   \  ht   AF
HNB
A  ,     v   AF
HG
D   ,     v   AF
HG
D   ,     w   AF
HG\
F  ,   	  y   AF
HG\
F  ,   L	  h{   AF
HG
H   ,   |	  H}   AF
HG
H   ,   	  (7   AF
HG
I   ,   	  87   AF
HG
I   ,   
  H   AF
HG\
F  ,   <
     AF
HG\
F  ,   l
  Ȅ   AF
HD
E  ,   
  (   AF
HD
A  ,   
  s   AF
HG+
G  ,   
  h   AF
HD 
E  ,   ,  (   AF
HD
E  ,   \     AF
HD
A  ,     g   AF
HG

E  ,     XS   AF
HG
F  D        BBE A(D0M`
0A(A BBBA     D   4  `   BBE A(D0M`
0A(A BBBA     ,   |  8,   AF
HG
A  L     8z    BBE A(D0{
(A BBBHR(A BBB     ,     h   AF
HD
I  D   ,
  H    BBE A(D0MPv
0A(A BBBG     ,   t
  Р   AF
HG
F   D   
  @    BBE A(D0M@d
0A(A BBBI     ,   
  /   AF
HG
G   D         BBE A(D0MPv
0A(A BBBG     ,   d  @   AF
HG
F   <         BBD A(M@d
(A ABBH     ,      :   AF
HG
A   D     0    BBE A(D0MPv
0A(A BBBG     D   L      BBE A(D0MPv
0A(A BBBG     ,     @    AF
HDi
D  ,         AF
HDi
D  ,     *   AF
HD
F   ,   $  *   AF
HD
F   ,   T     AF
HG
H  ,        AF
HG
H  ,     @<   AF
HD
E   ,     P<   AF
HD
E   ,     `    AF
HDi
D  ,   D  0    AF
HDi
D  ,   t   *   AF
HD
F   ,      *   AF
HD
F         &    IO      &    IO      0&    FS      <   $  @]    KAL iAAE LFA     \   d  `   BBD A(L0R
(A ABBC}
(C ABBK\
(C ABBD                     ?    DT
H^        7    Em       <         BBD A(T0{
(A ABBB         \                t  ?    DT
H^                   \     t   BBE B(D0A8QR\At
8A0A(B BBBG                  ,   $  p    AC
G
E      ,   T   G   AC
H]z
E   D     @    BBE A(D0J
0A(A BBBA    L         BBE B(D0A8Jpr
8A0A(B BBBA     L     H   BBE B(D0A8M
8A0A(B BBBA    L   l      BBE B(D0A8M|
8A0A(B BBBA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             +      *                     &             3             (      
       l                                                            o                 `                   
       w                                                                    8'              &             8      	              o    %      o           o    $      o                                                                                                                                                                  &)      6)      F)      V)      f)      v)      )      )      )      )      )      )      )      )      *      *      &*      6*                                                                        P                            GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609                                                                                               `                    $                    %                     &                    8'                   	 (                   
 )                    @*                    P*                   
 l                    x                                        H                                                                                                                                                                                                                                                  P*                   *              .     *              D                  S                   z      +                                                                                                                9                   i                                                                    &           P      &                 &                 ]                 0       ,                   :                   I                   P                 k          G                                                                                              t                                           Ф      ?                                         +    @             B                 W                 k                  x                    P      ?                                                                                                             7       	    P                                  $    Q            b    3                                   /                                  %    @            `    :                 0w      z                                       <      1                     <     N            x    P,                s                Y            *    o      g      f                  m    `                h               
 l                        *      +                     G                     j     O                K                `            	                  ^	                	    P5             	    [            
    e            K
    |            
    8             
    +      I            0      I       F    2                 C      /           >                                     0k            A    02      c           01                 @      :          {             5
                      D
    I      :      
     S            
          *      
                     	    r            J                    4                                       W      7          -      ;      P                     r    @      <                                                ]            G    w                 u      ,                            L            
    `F            H    `q      S          `B                                                   #                 ^    ?                P      *                               PD            #                  /    0~             o    P0      I            ,      E                         %    p<             \    +      "           =      
          06                                      P             V    7                                       7                 P+      $       %    ~      /      ^    P;                                                           U            
                         @9             +           *      m                      `X      7          G            &    0             c                         /      I         "                      	 (                   I             "    0d      s      Z    1      c                                :                                   crtstuff.c __JCR_LIST__ deregister_tm_clones __do_global_dtors_aux completed.7585 __do_global_dtors_aux_fini_array_entry frame_dummy __frame_dummy_init_array_entry org_opensc_pkcs11_PKCS11Provider.c org_opensc_pkcs11_wrap_PKCS11Slot.c org_opensc_pkcs11_wrap_PKCS11Session.c org_opensc_pkcs11_wrap_PKCS11Object.c org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator.c org_opensc_pkcs11_spi_PKCS11SignatureSpi.c org_opensc_pkcs11_spi_PKCS11CipherSpi.c pkcs11_module.c pkcs11_unlock_mutex pkcs11_lock_mutex pkcs11_destroy_mutex pkcs11_create_mutex pkcs11_init_args pkcs11_slot.c pkcs11_error.c jnix.c jnixThrowExceptionInternal jnixThrowExceptionInternalI __FRAME_END__ __JCR_END__ pkcs11_slot_make_jmechanisms jnixThrowException new_pkcs11_module pkcs11_module_from_jhandle pkcs11_module_to_jhandle destroy_pkcs11_slot pkcs11_slot_to_jhandle jnixThrowExceptionIV jnixThrowExceptionV __dso_handle jnixThrowExceptionI pkcs11_slot_from_jhandle _DYNAMIC pkcs11_strerror __GNU_EH_FRAME_HDR __TMC_END__ _GLOBAL_OFFSET_TABLE_ destroy_pkcs11_module new_pkcs11_slot lt_dlclose Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenLabelNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initEncryptNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_waitForSlotNative free@@GLIBC_2.2.5 Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_closeNative Java_org_opensc_pkcs11_wrap_PKCS11Object_deleteObjectNative _ITM_deregisterTMCloneTable Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNativeOff lt_dlerror Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initTokenNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getBooleanAttributeNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAttributeNative _edata Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_deriveKeyNative _fini Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNativeOff __stack_chk_fail@@GLIBC_2.4 pthread_mutex_destroy@@GLIBC_2.2.5 Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyPairNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenModelNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_unwrapKeyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_hasTokenProtectedAuthPathNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_initSlotNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_isRemovableDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_setPINNative calloc@@GLIBC_2.2.5 Java_org_opensc_pkcs11_wrap_PKCS11Object_enumObjectsNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getFirmwareVersionNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getDescriptionNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_verifyNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initSignNative __gmon_start__ Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateOffNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNativeOff lt_dlopen Java_org_opensc_pkcs11_wrap_PKCS11Object_getULongAttributeNative Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenManufacturerNative lt_dlinit Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_enumerateSlotsNative pthread_mutex_unlock@@GLIBC_2.2.5 Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNativeOff malloc@@GLIBC_2.2.5 Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative1 Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyNative Java_org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator_generateKeyPairNative Java_org_opensc_pkcs11_wrap_PKCS11Object_createObjectNative _end Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptInitNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyInitNative Java_org_opensc_pkcs11_wrap_PKCS11Object_getAllowedMechanismsNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateByteNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNative __vsnprintf_chk@@GLIBC_2.3.4 Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_signInitNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNativeOff realloc@@GLIBC_2.2.5 Java_org_opensc_pkcs11_wrap_PKCS11Session_signNative __bss_start Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative1 Java_org_opensc_pkcs11_wrap_PKCS11Slot_isHardwareDeviceNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_destroySlotNative Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Session_logoutNative Java_org_opensc_pkcs11_PKCS11Provider_unloadPKCS11Module Java_org_opensc_pkcs11_wrap_PKCS11Session_initPINNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenSerialNumberNative lt_dlexit Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initDecryptNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMinPinLenNative _Jv_RegisterClasses Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMaxPinLenNative Java_org_opensc_pkcs11_PKCS11Provider_loadNativePKCS11Module Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_signNative Java_org_opensc_pkcs11_wrap_PKCS11Session_loginNative __fprintf_chk@@GLIBC_2.3.4 _ITM_registerTMCloneTable Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateOffNative lt_dlsym mechanismFromJavaObject Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNativeOff Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initVerifyNative Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptFinalNative Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getManufacturerNative pthread_mutex_init@@GLIBC_2.2.5 Java_org_opensc_pkcs11_wrap_PKCS11Slot_isTokenPresentNative __cxa_finalize@@GLIBC_2.2.5 _init Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateByteNative Java_org_opensc_pkcs11_wrap_PKCS11Session_wrapKeyNative Java_org_opensc_pkcs11_wrap_PKCS11Slot_getHardwareVersionNative pthread_mutex_lock@@GLIBC_2.2.5 Java_org_opensc_pkcs11_wrap_PKCS11Session_openNative stderr@@GLIBC_2.2.5  .symtab .strtab .shstrtab .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rela.dyn .rela.plt .init .plt.got .text .fini .rodata .eh_frame_hdr .eh_frame .init_array .fini_array .jcr .dynamic .got.plt .data .bss .comment                                                                                                 $                              .   o                                               8                         
                          @             `      `      w                             H   o       $      $                                  U   o       %      %      @                            d              &       &      8                           n      B       8'      8'                                x             (      (                                    s             )      )      0                            ~             @*      @*                                                 P*      P*                                                l      l      	                                           x      x      w                                                      T                                          H      H                                                                                                                                                                                                                                                                                       0                                                                                                              P                                                                                            0                     4                                                                                                            H               L                 	                                                                              x  __TEXT                                                     __text          __TEXT                ߄                                 __stubs         __TEXT          p      l       p                         __stub_helper   __TEXT          ܘ             ܘ                           __const         __TEXT                                                    __cstring       __TEXT                r                                   __unwind_info   __TEXT                                                    __eh_frame      __TEXT                                                        __DATA                                                   __nl_symbol_ptr __DATA                                                    __got           __DATA                                                  __la_symbol_ptr __DATA                                                    __data          __DATA                0                                       H   __LINKEDIT              0             *                    
   8                 libopensc-PKCS11-0.4.dylib      "  0           H           P  `    x        0  ~     (     P             T   i                                (                         bU<XںkP$       

  

 *                 8              /usr/local/lib/libltdl.7.dylib     8              /usr/lib/libSystem.B.dylib      &      (     )            +        H                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   UHSPHHq  HtHHH[]ys  1H[]UHSPHHos  HtHHH[]s  H[]ÐUHAVSIHH;s  Ht"HHLu  HtHH[A^]u  1[A^]ffff.     UHAWAVSPIHHr  IMt(HLu  HtHLHH[A^A_]u  H[A^A_]ffff.     UHAWAVAUATSH8LMMIIHK  HH]Hlr  IM  LLu  H  HE1MA    t;I$LLX  HcHCHII)LI$1LLM@  IH        HEHEHEHEI$LH]HX  !|$H5+  HG  1L}  H{  HaM$LE1LHމLA@  IFhHMHyLLHPPHH6  HtMFH5  H
"  1L  H;]uHe[A\A]A^A_]腂  ff.     UHAWAVAUATSHIL-ՙ  Mm LmHE    Hp  HE1HteHChHU11P(Hu0HEIH   HI)LHChHU1LP(Ht<LCH5=  H
  E11L~  L;muLHe[A\A]A^A_]躁  1LeHJ   HH)HMt#J    I   HGHL蘁  DIL  IIM1LLI  ufUHAVSHIHo  1Ht9H@hHu11   HtH5_  H
ł  11L~  H]HH[A^]fffff.     UHAVSIHHko  HtHLr  Ht@p$11[A^]ÐUHAVSIHH+o  HtHLq  Ht
@p$11[A^]ffffff.     UHAVSIHHn  HtHLq  Ht@p$11[A^]fffff.     UHAWAVATSHIHn  E1HteLH4q  IǸo   E1MtJ@ HÍC~AHC tñIL  IIIP1LLM  L[A\A^A_]fffff.     UHAWAVATSHIHm  E1HteLHp  IǸO   E1MtJ@ HÍC~AHC tIL  III1LLM  L[A\A^A_]fffff.     UHAVSIHHKm  WHt2HLo  WHtHx*@yW*Yu  X[A^]fff.     UHAVSIHHl  WHt2HLo  WHtHz*@{W*Y  X[A^]fff.     UHAWAVAUATSHHIHR  H HEHE    Hkl  IE1M   LHo  IE1MtkID$hIHU1P@Hu3HEHH   HH)HID$hIHUHP@HtFEGH5~  H
  E11LKz  H  H H;EuLHe[A\A]A^A_]}  LELLLHn  If.     UHAWAVATSHIHwk  E1H   LH n  IE1Mt{   AGpu)EGH5}  H
~     1Ly      HÍC~AHC tÁIL  III1LLM  L[A\A^A_]fffff.     UHAWAVATSHIHj  E1H   LHPm  IE1M      AGpu5EGH5}  H
}     1Lx     ffffff.     HÍa~AHC taIL  IIIǠ   1LLM  L[A\A^A_]D  UHAWAVATSHIHi  E1H   LHpl  IE1M      AGpu5EGH56|  H
|     1Lw     ffffff.     HÍA~AHC tAIL  III   1LLM  L[A\A^A_]D  UHAWAVATSHIHh  E1H   LHk  IE1M      AGpu5EGH5V{  H
|     1Lw     ffffff.     HÍ1~AHC t1IL  III   1LLM  L[A\A^A_]D  UHAWAVSPIIHh  1HtyLLj  IMtfAGpu!EGH5z  H
7{     1L6v  I  Hw	I;  v%EGH5Nz  H{  1Ls  I  H[A^A_]ff.     UHAWAVSPIIHXg  1HtyLLj  IMtfAGpu!EGH5y  H
z     1Lu  I  Hw	I9  v%EGH5y  Hz  1Lr  I  H[A^A_]ff.     UHAVSIHHf  HtFHL[i  IMt7AFpu!EFH5-y  H
y     1Ht  A   $11[A^]ÐUHAWAVATSHIIHL%  M$$LeMIG    IG    tbHH5y  HP0HHLH   t<HHLX  HcIOHAHII)LMGH1HL@  L;eu
He[A\A^A_]v  f.     UHAWAVAUATSPEIIHqe  I1MtcLLh  I1MtNIEhI|$EHt	LE11PhHt!ED$H5w  H
y  11Lzs  H]HH[A\A]A^A_]fUHAWAVATSMIHHd  IMtKHLg  IMt8ID$hLPpt)H{  H8AWIL$H5x  1[A\A^A_]u  [A\A^A_]     UHAWAVAUATSH(DMMIIH  HH]H<d  IM   LLf  H   HEL}H]E1HA    t<I$LHX  LcIFHII)LI$1LHDM@  IEhHcuH}LL   HHr  HHEtD@H5:v  H
w  1Lq  H;]uHe[A\A]A^A_]t   UHAWAVATSMIHHDc  IMtdHLe  IMtQID$hL   t?H
  L1EMd$g  HH5vw  1DLLI[A\A^A_]>t  [A\A^A_]ffffff.     UHAWAVAUATSH(LMMIIHk  HH]Hb  IM   LL5e  H   HEL}E1HuHA    t<I$LHX  LcIFHII)LI$1LHDM@  IEhH}LLPXHHɊ  HHEtD@H5t  H
v  1LDp  H;]uHe[A\A]A^A_]s  f.     UHAWAVAUATSH(MMIIH\  HH]H}a  HEH  LL%d  H   HELmHM1MA    tAI$LILX  HcHCHII)LI$1LLM@  LH]E1HA    t?I$LHHX  LcIGHII)LI$1LHDM@  HEH@hH}LHULMP`HHY  HHEtD@H5!s  H
_u  1Ln  H;]uHe[A\A]A^A_]q  f.     UHAWAVAUATSH8LMLEHIL=  M?L}H`  IM   LHb  IM   H]EW)EHE    HHEHt<ILHX  HcHMHAHII)LLEI1LH@  IEhHuH}HUX  HtED$H5r  H
pt  1Lm  L;}uHe[A\A]A^A_]p      UHAWAVAUATSHMLEHIL=ۇ  M?L}H^  IM   LHa  HH   M   LH   DEE   HcHEIH@HI)LIE LDM@  IFhH}LHUh  HtDCH5q  H
s  1Ll  L;}   He[A\A]A^A_]L;}upH5p  HYs  1LHL;}uUH5p  HVs  1LHe[A\A]A^A_]i  L;}u)H5p  H;s  1LDHe[A\A]A^A_]i  o  fffff.     UHAWAVAUATSPEMIIH]  HHtQLL;`  IMt>D}HChHu׺   Lh  HtED$H5o  H
r  1Lk  H[A\A]A^A_]fD  UHAWAVAUATSHMHIHυ  H HEHE    H\  IE1MtLH_  HE1HtiIFhHU1Lp  Hu0HEIHHI)LIFhHULLp  HtFDCH5o  H
r  E11Lj  H'  H H;EuLHe[A\A]A^A_]m  MI$uL  HE1HtI$M1LHM  Ifff.     UHAWAVAUATSH(MLEHIH  H HEHE    H[  IE1MM  LHZ^  HE1H3  M   M   DEE   HcHEIH@HI)LI$LLDM@  IEhLE1LuLLHU`  HtiDCH5m  H
p     H5m  H&p  E113H5m  H)p  E11Lf  vH5sm  Hp  E11DLf  VHELIHHI)LIEhLELHUL`  HtFDCH5m  H
o  E11Lh  H!  H H;EuLHe[A\A]A^A_]k  I$uL  HE1HtI$M1LHM  If     UHAWAVAUATSH8LMLEHIL=  M?L}HY  IM   LHd\  IM   H]EW)EHE    HHEHt<ILHX  HcHMHAHII)LLEI1LH@  IEhHuH}HU  HtED$H5k  H
n  1Lqg  L;}uHe[A\A]A^A_]Aj      UHAWAVAUATSHMLEHIL=  M?L}HX  IM   LHU[  HH   M   LH   DEE   A9   HcHEIH@HI)LIE LDM@  IFhH}LHU  HtDCH5j  H
m  1Lif  L;}   He[A\A]A^A_]L;}upH5j  H m  1LHL;}uUH5dj  Hl  1LHe[A\A]A^A_]c  L;}u)H58j  Hl  1LDHe[A\A]A^A_]jc  h  D  UHAWAVATSHMIIDMH<W  HHtLLLY  IMt9HChHuߺ   L  HtEGH5i  H
l  1LXe  H[A\A^A_]ff.     UHAWAVAUATSHMLEIIH{  HH]HV  IM   LLEY  Ht~Mt~HEIE LLX  HcHCHII)LIE 1LLM@  IFhE1H}LH  H   H~  Ht]u6ATE1OE1JH5h  H;k  E11La  H~  H#HED@H5sh  H
k  E11L#d  H;]uAHe[A\A]A^A_]f  D  UHAWAVAUATSH8MLEHIL=;~  M?L}H\U  IM   LHX  HH   M   M   DME   HcHEIH@HI)LELI$LLD@  HE HH   I$LHX  HcHMHAHHH)HUHII$E11LHu @  IFhH}HuHUHMLE  H   tcu}AZE1UE1PH5f  H~i  E113H5f  Hi  E11L(`  H5f  Hui  E11DL`  L;}uAHe[A\A]A^A_]De  DCH5f  H
j  E11L;b  f     UHAWAVAUATSH8LMLEHIL=j|  M?L}HS  IM   LH4V  IM   H]EW)EHE    HHEHt<ILHX  HcHMHAHII)LLEI1LH@  IEhHuH}HU  HtED$H5e  H
0i  1LAa  L;}uHe[A\A]A^A_]d      UHAWAVAUATSH8LMLEHIL=Z{  M?L}H{R  IM   LH$U  IM   H]EW)EHE    HHEHt<ILHX  HcHMHAHII)LLEI1LH@  IEhHuH}HU   HtED$H5~d  H
Bh  1L1`  L;}uHe[A\A]A^A_]c      UHAWAVAUATSH(MLEHIHKz  H HEHE    HdQ  IE1M:  LH
T  HE1H   M   M   DEE   HcHEIH@HI)LI$LLDM@  IEhLE1LuLLHU   Hu;HELIHHI)LIEhLELHUL   H   DCH5-c  H
g  E11L^  PH5c  He  E113H5b  He  E11L;\  H5b  He  E11DL\  Hx  H H;EuLHe[A\A]A^A_]Na  I$uL  HE1HtI$M1LHM  Ifff.     UHAWAVAUATSH(MLEHIH[x  H HEHE    HtO  IE1M:  LHR  HE1H   M   M   DEE   HcHEIH@HI)LI$LLDM@  IEhLE1LuLLHU   Hu;HELIHHI)LIEhLELHUL   H   DCH5=a  H
Ge  E11L\  PH5 a  Hc  E113H5a  Hc  E11LKZ  H5`  Hc  E11DL+Z  Hv  H H;EuLHe[A\A]A^A_]^_  I$uL  HE1HtI$M1LHM  Ifff.     UHAWAVAUATSH(MLEHIHkv  H HEHM  IE1Mr  LH2P  HH[  M   M   M   Hu H   D}(IE LX  DHcHUȅ   9   HcH)HUHHHH)HEHċMHcHEIH@HI)LIE LLUM@  IFhLuLEH}LHUL   H   DCH55_  H
c  E11LZ  hH5_  Ha  KH5_  Ha  H5^  Ha  +H5^  Hc  E11L(X  H5^  Hc  E11LX  Ht  H H;EuDHe[A\A]A^A_]>]  IE MLHu U(M  D}@ UHAWAVAUATSH(MLEHIHkt  H HEHK  IE1Mr  LH2N  HH[  M   M   M   Hu H   D}(IE LX  DHcHUȅ   9   HcH)HUHHHH)HEHċMHcHEIH@HI)LIE LLUM@  IFhLuLEH}LHUL   H   DCH55]  H
?a  E11LX  hH5]  H_  KH5]  H_  H5\  H_  +H5\  Ha  E11L(V  H5\  Ha  E11LV  Hr  H H;EuDHe[A\A]A^A_]>[  IE MLHu U(M  D}@ UHAWAVAUATSHMHIHor  H HEHE    HI  IE1M   LH.L  HE1H   LeIFhHU1L(  Ht%DCH5[  H
<`  E11H}W     HEIHHI)LIFhHULL(  HH}tDCH5[  H
_  E11<W  @HuE1HHt1HH  IE1MtHM1HLM  MHSq  H H;EuLHe[A\A]A^A_]Y   UHAWAVAUATSHMHIHq  H HEHE    H(H  IE1M   LHJ  HE1H   LeIFhHU1L  Ht%DCH5Z  H
^  E11H}1V     HEIHHI)LIFhHULL  HH}tDCH5)Z  H
^  E11U  @HuE1HHt1HH  IE1MtHM1HLM  MHo  H H;EuLHe[A\A]A^A_]]X   UHAWAVAUATSH(MLEHIHo  H HEHE    HF  IE1M:  LHjI  HE1H   M   M   DEE   HcHEIH@HI)LI$LLDM@  IEhLE1LuLLHU  Hu;HELIHHI)LIEhLELHUL  H   DCH5X  H
-]  E11L=T  PH5pX  HZ  E113H5[X  HZ  E11LQ  H5>X  HZ  E11DL{Q  HDn  H H;EuLHe[A\A]A^A_]V  I$uL  HE1HtI$M1LHM  Ifff.     UHAWAVAUATSH(MLEHIHm  H HEHE    HD  IE1M:  LHzG  HE1H   M   M   DEE   HcHEIH@HI)LI$LLDM@  IEhLE1LuLLHU   Hu;HELIHHI)LIEhLELHUL   H   DCH5V  H
[[  E11LMR  PH5V  HY  E113H5kV  HY  E11LO  H5NV  HX  E11DLO  HTl  H H;EuLHe[A\A]A^A_]T  I$uL  HE1HtI$M1LHM  Ifff.     UHAWAVAUATSHhDMLEIIHk  H HEHB  HE1H  LLE  1H  I$H5JZ  LP0I1M  I$HRZ  H
SZ  LL  HE1H  I$H1Z  H
2Z  LL  HE1Hh  HuI$LX  HcHMHIH   HHH)HxHԅ   HxLp1E1ffff.     I$LHuDh  IM   I$1LLHU  HIFI$1LLHU  HI$LHX  HcIHAHII)LMFI$1LH1@  IIL;m[HUHcEHEH]LHHEH@hLEH}HHxHM  HtH5S  H
X  11L[O  H]Hi  H H;EuHHe[A\A]A^A_]R  fffff.     UHAWAVAUATSH   DlLpHIHQi  H HEHr@  H`1HMH~  LHC  1HMHd  IE H5W  LP0I1HEMA  IE HW  H
W  LL  HE1HMH  IE HW  H
W  LL  HE1HMH  HuIE LX  HcHxHIH   HHH)HԅIM    LrHP1HEE1f     LHuDh  IMf  IM 1LLHU  HIFIM 1LLHU  HIE LHX  HcIHAHII)LMFIE 1LH@  IIM IL;xZHPHu LX  LcKH   HHH)HXHE   HXLp1HEE1@ IE LHu Dh  HHb  IM 1LHHU  HIFIM 1LHHU  HIE LHX  HcIHAHII)LMFIE 1LH@  IIM9^HUHclHEH]LHPH`H@hHHMHL$HMH$HpHHPHxLXM  HHt H5O  H
$U  1HE1LK  OIE    L  H1HEHt/HEHEHEHEIE LE1ҹ   LH  H]He  H H;EuHEHe[A\A]A^A_]N  fD  UHAWAVAUATSH8ELEHIH[e  H HEHE    Ht<  IE1M   LH?  HE1H   HUIcHELuLLIEhLME1L}LLHUIHM   HtDCJH]HEHHHH)HIEhHuLMLLHM IM  HtJHED@H5YN  H
S  E11L	J  Hbd  H H;EuLHe[A\A]A^A_]L  HuE1HtI$L  HE1HtI$M1LHM  I또UHAWAVAUATSHhDMLEIIHc  H HEH:  HE1HQ  LL=  1H;  IE H5ZR  LP0I1M  IE HbR  H
cR  LL  HE1H  IE HAR  H
BR  LL  HE1H  Hu(IE LX  HcHMHIH   HHH)HxHԅ   HxLp1E1ffff.     IE LHu(Dh  IME  IM 1LLHU  HIFIM 1LLHU  HIE LHX  HcIHAHII)LMFIE 1LH1@  IIL;}[Le HUHcEHEL}LLIE LLX  HcHCHII)LIE 1LLM@  HEH@hHHMHL$HMH$H}LHULILx  HHtH5`K  H
P  11LG  H]Hda  H H;EuHHe[A\A]A^A_]I  @ UHAWAVAUATSHhDMLEIIHa  H HEH;8  HE1H  LL:  1H  I$H5O  LP0I1M  I$HO  H
O  LL  HE1H  I$HO  H
O  LL  HE1Ho  Hu I$LX  HcHMHIH   HHH)HxHԅ   HxLp1E1ffff.     I$LHu Dh  IM   I$1LLHU  HIFI$1LLHU  HI$LHX  HcIHAHII)LMFI$1LH1@  IIL;}[LuHUHcEHEH]LH,HEH@hLMH}HLHxLE  HtH5H  H
qN  11LD  H]H^  H H;EuHHe[A\A]A^A_]aG  UHAWAVAUATSHX  LLHIH^  H HEH5  H1H  LHe8  H1Hm  IE H5M  LP0I1MN  IE HM  H
 M  LL  H1H  IE HL  H
L  LL  H1H  IE LHX  HcHHIH   HHH)HHԅ   HLpE1IE LHDh  IM    r  IM 1LLH  HIFIM 1LLH  HIE LHX  HcIHAHII)LMFIE 1LH@  IIL;L   tE  IM  LIFhHHHH   HtHD@H5`F  H
.L  KHǅ    IFhHH    H   Ht(HD@H5F  H
L  1LA  !  HHB  H   HGA   DGHHLD  A   H   LLD  HH   HH@h    HHH   HC  HHHK  McH   HGHJ<A   DGHHC  EI   H HIMYHHH5D  HJ  1L0>  LC  1HZ  H H;EuHHe[A\A]A^A_]YC  E1LHH@hH   Ht(HD@H5tD  H
J  1L'@  IIE LD  IIE 1LLDI  HB  LQHD@H5D  H
J  H[@ UHAWAVAUATSH(LMMIIHY  H HEH1  I1M   LL3  1H   MDmIcHEHE    HE    IFhHU   LHL}L   Hu?HHEHtvHHHH)HHMIFhHU   L   Ht]H5C  H
kI  11LE>  H Y  H H;EuHHe[A\A]A^A_]A  H5B  H
TI  1ۺ   1HuHMt)IL  HIMLE1LH  H5B  H
I  1ۺ   1LcfUHAWAVAUATSH8LMMIIHkX  H HEH/  HE1H   LL22  E1H   ILeHE  @HE    HE    HChHU   LL}L   Hu?HEHtxHHHH)HHMHChHU   LL   Ht]H5A  H
H  E11H}8=  HW  H H;EuLHe[A\A]A^A_]?  H5FA  H
H  E1   1LEIH}tHMIHL1  IH5A  H
IH  E1   1<  wffffff.     UHAWAVAUATSH(LMMIIHEH.  I1M   LL0  H   DeIcHEHEHEHE   IFhHU   LHu   HtH5I@  H
F  11LE;  1LEIu]"H5@  H
G  1ۺ   1LE;  H([A\A]A^A_] UHAWAVAUATSH(MMIIE H-  HHtjLL/  Ht^DuIcHEHEHEHE   HChHU   LL   Ht'H5i?  H
E  11LE;  91511LEIu]"H53?  H
G  1ۺ   1LE:  H([A\A]A^A_]f.     UHAWAVAUATSHHLMLEIHHT  H HEH,  HEE1H  HL.  E1H  HH5yC  HP0IE1M  HHC  H
C  HL  HEE1H_  HH`C  H
aC  HL  HEE1H2  HHHuX  HcHMHIH   HHH)HUHԅ   HEL`E1E1HHHuDh  IM   H1HLHU  HID$H1HLHU  IHHLX  HcI$HAHII)LMD$H1HL@  IIL;}_HEH@hHMH}HuHU   HtH5=  H
eF  E11H8  LuHS  H H;EuLHe[A\A]A^A_]|;  fUHAWAVAUATSPMMIIH)  HHtMLL,  Ht=HChLL   Ht&H5t<  H
E  1LH[A\A]A^A_]8  H[A\A]A^A_]ÐUHAWAVAUATSH   DlLpHIH1R  H HEHR)  H`1HMH|  LH+  1HMHb  IE H5@  LP0I1HEM?  IE H@  H
@  LL  HE1HMH  IE H@  H
@  LL  HE1HMH  HuIE LX  HcHxHIH   HHH)HԅIM    LzHP1HEE1f     LHuDh  IMd  IM 1LLHU  HIGIM 1LLHU  HIE LHX  HcIHAHII)LMGIE 1LH@  IIM IL;xZHPHuLX  LcKH   HHH)HXHE   HXLp1HEE1@ IE LHuDh  HH`  IM 1LHHU  HIFIM 1LHHU  HIE LHX  HcIHAHII)LMFIE 1LH@  IIM9^HclHEHE    HE    H`H@hHHMHL$HMH$HuHpHPHxLXM  HHt H58  H
>  1HE1L4  OIE    L  H1HEHt/HEHEHEHEIE LE1ҹ   LH  H]HN  H H;EuHEHe[A\A]A^A_]6  UHAWAVAUATSHMMIIHk%  HHtcLL(  IMtPEW)EHE    HHEHChHuLLX  HtED$H57  H
:  1Lp3  H[A\A]A^A_]ÐUHAWAVAUATSHMLEHIL=M  M?L}H$  IM   LHe'  HH   M   LH   DEE   A9   HcHEIH@HI)LIE LDM@  IFhH}LHUh  HtDCH56  H
9  1Ly2  L;}   He[A\A]A^A_]L;}upH56  H9  1LHL;}uUH5t6  H
9  1LHe[A\A]A^A_]/  L;}u)H5H6  H8  1LDHe[A\A]A^A_]z/  4  D  UHAWAVAUATSPEMIIHN#  HHtQLL%  IMt>D}HChHu׺   Lh  HtED$H55  H
u8  1Le1  H[A\A]A^A_]fD  UHAWAVAUATSHMHIHK  H HEHE    H"  IE1MtLHR%  HE1HtiIFhHU1Lp  Hu0HEIHHI)LIFhHULLp  HtFDCH54  H
7  E11L0  HJ  H H;EuLHe[A\A]A^A_]Q3  MI$uL  HE1HtI$M1LHM  Ifff.     UHAWAVAUATSHMMIIH!  HHtcLL8$  IMtPEW)EHE    HHEHChHuLL  HtED$H53  H
6  1L/  H[A\A]A^A_]ÐUHAWAVAUATSHMLEHIL=I  M?L}H   IM   LH#  HH   M   LH   DEE   A9   HcHEIH@HI)LIE LDM@  IFhH}LHU  HtDCH52  H
&6  1L.  L;}   He[A\A]A^A_]L;}upH52  H05  1LHL;}uUH52  H-5  1LHe[A\A]A^A_]+  L;}u)H5h2  H5  1LDHe[A\A]A^A_]+  0  D  UHAWAVATSHMIIDMHl  HHtLLL"  IMt9HChHuߺ   L  HtEGH51  H
5  1L-  H[A\A^A_]ff.     UHAWAVAUATSHMLEIIHG  HH]H  IM   LLu!  Ht~Mt~HEIE LLX  HcHCHII)LIE 1LLM@  IFhE1H}LH  H   HG  Ht]u6ATE1OE1JH50  Hk3  E11L*  HF  H#HED@H50  H
4  E11LS,  H;]uAHe[A\A]A^A_]/  UHAWAVAUATSHMMIIH  HHtcLLH   IMtPEW)EHE    HHEHChHuLL   HtED$H5/  H
3  1L+  H[A\A]A^A_]ÐUHAWAVAUATSHMMIIH  HHtcLL  IMtPEW)EHE    HHEHChHuLL  HtED$H5M/  H
2  1L +  H[A\A]A^A_]ÐUHAWAVAUATSH(LEHIH.E  H HEHE    HG  IE1MA  LH  IE1M'  M    HuH   DEE   A9   LcLuHIFHH)HI$LDI@  IEhLE1H}HL   Hu<HEIHHI)LIEhLEH}HHUL   H   EGH5	.  H
1  E11L)  PH5-  Hm0  E113H5-  Hp0  E11L'  H5-  Hd0  E11DL&  HC  H H;EuLHe[A\A]A^A_]*,  MI$uL  HE1HtI$M1LHM  ID  UHAWAVAUATSH(LEHIH>C  H HEHE    HW  IE1MA  LH  IE1M'  M    HuH   DEE   A9   LcLuHIFHH)HI$LDI@  IEhLE1H}HL   Hu<HEIHHI)LIEhLEH}HHUL   H   EGH5,  H
#0  E11L'  PH5+  H}.  E113H5+  H.  E11L'%  H5+  Ht.  E11DL%  HA  H H;EuLHe[A\A]A^A_]:*  MI$uL  HE1HtI$M1LHM  ID  UHAWAVAUATSH(LIIHOA  H HEHp  IE1M  H]LL  IMq  M    LmM   }   9   Hu(H   ]0I$LX  HcHMȅ   9   HcH)HMHHHH)HEHċM HcHEHH@HH)HI$LLUI@  IFhLEH}HH]HUH   H   EGH5
*  H
-  E11L%  vH5)  Hq,  E11YH5)  Ht,  %H5)  Hu,  E112H5)  H-  E11L"  H5)  H-  E11L"  H?  H H;EuDHe[A\A]A^A_](  I$MLHu(U0I  Dmfffff.     UHAWAVAUATSH(LIIH/?  H HEHP  IE1M  H]LL  IMq  M    LmM   }   9   Hu(H   ]0I$LX  HcHMȅ   9   HcH)HMHHHH)HEHċM HcHEHH@HH)HI$LLUI@  IFhLEH}HH]HUH   H   EGH5'  H
+  E11L#  vH5'  HQ*  E11YH5'  HT*  %H5'  HU*  E112H5'  H+  E11L   H5w'  H+  E11L   H~=  H H;EuDHe[A\A]A^A_]%  I$MLHu(U0I  Dmfffff.     UHAWAVAUATSH(MHIH=  H HEHE    HE    H   IE1M  LH  HE1H  M    HuH   DEE   A9   HcHEIH@HI)LI$LDM@  IEhLE1LLHU   HuCHUHEHHpHH)HH   IEhLELLI   LHtlDCH5%  H
)     H5%  HI(  E116H5%  HL(  E11L     H5%  H=(  E11DL  zHMIEhHU1L(  Hu=HE1HA    tvIHHI)LIEhHULL(  HtFDCH5%  H
n)  E11L   H;  H H;EuLHe[A\A]A^A_]#  HuMI$uL  HE1HtHMHMtI$1LHLE  HMHtI$ULHM  InfUHAWAVAUATSH(MHIHo:  H HEHE    HE    H  IE1M  LH&  HE1H  M    HuH   DEE   A9   HcHEIH@HI)LI$LDM@  IEhLE1LLHU   HuCHUHEHHpHH)HH   IEhLELLI   LHtlDCH5;#  H
E'     H5(#  H%  E116H5#  H%  E11LS     H5"  H%  E11DL0  zHMIEhHU1L  Hu=HE1HA    tvIHHI)LIEhHULL  HtFDCH5t"  H
&  E11L$  H}8  H H;EuLHe[A\A]A^A_]   HuMI$uL  HE1HtHMHMtI$1LHLE  HMHtI$ULHM  InfUHAWAVAUATSH8LIIH7  H HEH  IE1Mb  LL  IMK  M    H}    }   9   Dm0Hu(I$LX  E   D9   HcIcH)HMHAHHH)HUHHMȋM HcHEIH@HI)LI$LHuUM@  IFhLEHLLmHUL   H   EGH5   H
$     H5   H#  EH5v   H#  E11L  5H5Y   H#  E11H5B   H$  DE11L  HH6  H H;EuDHe[A\A]A^A_]  HuHEH)HEIFhLHUH(  Ht!EGH5  H
)$  E11L  MDmDmI$LHu(U0D  gfD  UHAWAVAUATSH8LIIH5  H HEH  IE1Mb  LLV  IMK  M    H}    }   9   Dm0Hu(I$LX  E   D9   HcIcH)HMHAHHH)HUHHMȋM HcHEIH@HI)LI$LHuUM@  IFhLEHLLmHUL   H   EGH5Y  H
c"     H5F  H   EH56  H   E11Lv  5H5  H   E11H5  HB"  DE11L?  H4  H H;EuDHe[A\A]A^A_]r  HuHEH)HEIFhLHUH  Ht!EGH5  H
"  E11L?  MDmDmI$LHu(U0D  gfD  UHAWAVAUATSH(LEHIHN3  H HEHo
  IE1MI  LH
  IE1M/  M    HuH   DEE   A9   LcLuHIFHH)HI$LDI@  HE    IEhLE1H}HL  Hu<HEIHHI)LIEhLEH}HHUL  H   EGH5)  H
   E11L  PH5  H  E113H5  H  E11L7  H5  H  E11DL  H1  H H;EuLHe[A\A]A^A_]J  MI$uL  HE1HtI$M1LHM  ID  UHAWAVAUATSH(LEHIH^1  H HEH  IE1MI  LH%  IE1M/  M    HuH   DEE   A9   LcLuHIFHH)HI$LDI@  HE    IEhLE1H}HL   Hu<HEIHHI)LIEhLEH}HHUL   H   EGH59  H
  E11L  PH5  H  E113H5  H  E11LG  H5  H  E11DL'  H/  H H;EuLHe[A\A]A^A_]Z  MI$uL  HE1HtI$M1LHM  ID  UHAWAVAUATSH(LIIHo/  H HEH  IE1M  H]LL2	  IMq  M    LmM   }   9   Hu(H   ]0I$LX  HcHMȅ   9   HcH)HMHHHH)HEHċM HcHEHH@HH)HI$LLUI@  IFhLEH}HH]HUH  H   EGH5-  H
  E11L  vH5  H  E11YH5  H  %H5  H  E112H5  H  E11L  H5  H  E11L  H-  H H;EuDHe[A\A]A^A_](  I$MLHu(U0I  Dmfffff.     UHAWAVAUATSH(LIIHO-  H HEHp  IE1M  H]LL  IMq  M    LmM   }   9   Hu(H   ]0I$LX  HcHMȅ   9   HcH)HMHHHH)HEHċM HcHEHH@HH)HI$LLUI@  IFhLEH}HH]HUH   H   EGH5
  H
  E11L  vH5  Hq  E11YH5  Ht  %H5  Hu  E112H5  H  E11L  H5  H  E11L  H+  H H;EuDHe[A\A]A^A_]  I$MLHu(U0I  Dm빐UHAWAVAUATSPIIx     IMtMAE оIE    IEp    IH5  LP0HH  c  t0H5  H  H5  H7  E11L
    IH  H
  LH  HHu  I1LLH  IMU  ILLX  AAD$Hc  IEHtoI1LLDI@  IcIM I}  IEpHtXH5:  H  Ht`I]hHHt|MEH5  H
]     H5  H  1L     M}  HH5  H  M}  HH5m  H  1LLI  YHH=*  PHtMEH55  H
  'IEhLHPHtHMEH5  H
  1L  I}Ht  I}pHtc  L  b  E1LH[A\A]A^A_]ÐUHH]    UHHHt9оtH5  H  1  1H]UHSPHHCh1PH{pHt  H{Ht  HCp    HCh    HC`    HCX    HCP    HCH    HC@    HC8    HC0    HC(    HC     HC    HC    HC    H    H  H[]T       UHAVSI   Mt9@   d  Hø   Ht"1H_  tH;     I1[A^]fffff.     UHSPH   HtH  H  1H[]@ UH   Ht  H]ffffff.     UH   Ht  H]ÐUHAWAVATSIIIP  t  HHt=P  HA  L{ID$hHsLP0Ht,H5r  H
  IH5b  H  11L	  DCpt>ID$hHHLP8Ht%H5'  H
  1LE  H  1H[A\A^A_]ÐUHH]    UHHHt9tH5  H  1	  1H]UHSPHӾP  HN  HH[]X  fff.     UHAWAVAUATSHHMIHUHuIIH56  P0I1HEM
  IH>  H
>  LL  HHM1HEH   I1HM1LDL`  HEH   M~   L1HEE1HEH@hHMHyIu HUPHHuZMAM DEDMȋEЉ$1HULHA   HtOMLHuDHAp  IIM9rHEHE"EE H5U  H
Z  1HE1L
  HEHH[A\A]A^A_]ÐUHy     H!  ]Á              4  o  R  _  [  O  d  /  m    v    {                    ,     |                      /	  !  H8  H  HcHH(  ]Á     H   ]Á  uHx   ]Á  u3H)   ]Á  w  H`   ]Á  b  H  ]Á  M  H   ]Áp  8  H  ]Á`  #  Hy  ]ÁP    HO  ]Á0    H   ]Á   u1H  ]Á  H  HcHH&  ]Á!    H  ]Á   H  HcHHI  ]Á   tV   uWH  ]Á            Hw  ]H  ]H  ]H  ]H  ]H}  ]Á     H  ]Á   ueH  ]H  ]H  ]H  ]H  ]H  ]H  ]Á     H  ]Á   uFHR  ]Á     H  ]ÁPm  H  HcHHK  ]Á   H  H  ]Á`0  H  HcHH  ]Á   uHw  ]Á      HH  ]Á      Hb  ]Ã?~0   1   Hc  ]H  ]H  ]H  ]H  ]H  ]H	  ]H  ]H*  ]H1  ]H:  ]HA  ]ÃO@uAH  ]Ãǰ!w>H  HcHH)  ]H  ]Ã2uH  ]ÃAu	H  ]H'  ]Hg  ]Hn  ]Hy  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H  ]H)  ]H6  ];`n!*3<E*3<Ee#,5>GPYbkt}H&/8AJS\enwUHAWAVAUATSH   IIHt2) )0)@)P)`)p)u)}LLHHa  H HEE   LeLmff.     HHEHEHEE0   E   LHLLM;   } uH  H H;EuH   [A\A]A^A_]c  f     UHAWAVAUATSH(HIIIL-  Mm LmIcHHHH)HIHHMIIPHUHMIc7LM1HHI  AA29})A    ILLP0HtILHHQpAL;muHe[A\A]A^A_]   UHAWAVAUATSH8HIIIH  H HEE   Lmf.     HCHEHHKHMHEH}LLLM} uH  H H;EuH8[A\A]A^A_]  D  UHAWAVAUATSH   IAIHt2) )0)@)P)`)p)u)}LLH  H HEE   Lm HHEHEHEE0   E    H}HLDMM7   } uH  H H;EuH   [A\A]A^A_]  D  UHAWAVAUATSH8MIIHL=L  M?L}HcIHHI)LIAHEIIIHMHEHc3LM1HL  	ɉ   L9       LHHP0IMtkHH  H
  HL  IMtFHHL8  IMt/L1HLLMA   HtHHHQhL;}uHe[A\A]A^A_]        UHAWAVAUATSH8LIAIIH  H HEE   ff.     HCHEHHKHMHEH}LLDMLM`} uH  H H;EuH8[A\A]A^A_]+   %  %  %  %  %  %  %  %  %  %  %  %  %  %  %  %  %  %  L%  AS%  h    h   h$   h5   hF   hW   hg   hv   h   h   h   h   xh   nh   dh   Zh  Ph1  FhN  <{Gz?java/lang/IllegalArgumentException Length of label exceeds 32 bytes org/opensc/pkcs11/wrap/PKCS11Exception C_InitToken failed for module %s. C_GetSlotList failed for module %s. C_WaitForSlotEvent failed. C_GetMechanismList for PKCS11 slot %d failed. No token present in slot %d. Invalid value %u for ulMinPinLen of token in slot %d. Invalid value %u for ulMaxPinLen of token in slot %d. [B C_OpenSession for PKCS11 slot %d failed. pkcs11_slot_close_session: C_CloseSession for PKCS11 slot %d(%s) failed. C_Login for PKCS11 slot %d failed. PKCS11Session.logoutNative: C_Logout for PKCS11 slot %d(%s) failed (%s). C_InitPIN for PKCS11 slot %d failed. C_SetPIN for PKCS11 slot %d failed. C_SignInit failed for slot %d. Invalid data length %d. NULL input data. Invalid input offset %d. C_SignUpdate failed for slot %d. C_SignFinal failed for slot %d. C_Sign failed for slot %d. C_VerifyInit failed for slot %d. C_VerifyUpdate failed for slot %d. C_VerifyFinal failed for slot %d. C_Verify failed for slot %d. C_DecryptInit failed for slot %d. C_EncryptInit failed for slot %d. C_DecryptUpdate failed for slot %d. C_EncryptUpdate failed for slot %d. NULL output data. Invalid output offset %d. C_DecryptFinal failed for slot %d. C_EncryptFinal failed for slot %d. C_Decrypt failed for slot %d. C_Encrypt failed for slot %d. org/opensc/pkcs11/wrap/PKCS11Attribute getKind ()I getData ()[B C_GenerateKey failed. C_GenerateKeyPair failed. C_WrapKey failed for slot %d. C_UnwrapKey failed. C_DeriveKey failed. Out of memory during object enumeration for slot number %d. C_FindObjectsInit failed for slot number %d. C_FindObjects failed for slot number %d. C_FindObjectsFinal failed for slot number %d. C_GetAttributeValue failed for attribute %u. C_GetAttributeValue returned ulValueLen -1 for attribute %u but returned CKR_OK. The underlying PKCS#11 module seems to be broken. C_GetAttributeValue failed for attribute CKA_ALLOWED_MECHANISMS. C_GetAttributeValue returned ulValueLen -1 for attribute CKA_ALLOWED_MECHANISMS but returned CKR_OK. The underlying PKCS#11 module seems to be broken. C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_ULONG) for attribute %u of type CK_ULONG but returned CKR_OK. The underlying PKCS#11 module seems to be broken. C_GetAttributeValue returned ulValueLen==%lu, which is not equal to sizeof(CK_BBOOL) for attribute %u of type CK_BBOOL but returned CKR_OK. The underlying PKCS#11 module seems to be broken. C_CreateObject failed. C_DestroyObject failed. Out of memory allocating PKCS11 context. java/lang/String Unable ot initialize dynamic function loading. getBytes Out of memory allocating PKCS11 module name. Cannot open PKCS11 module %s: %s. C_GetFunctionList Cannot find function C_GetFunctionList in PKCS11 module %s: %s. C_GetFunctionList in PKCS11 module %s failed. C_Initialize in PKCS11 module %s failed. C_GetInfo in PKCS11 module %s failed. Invalid PKCS 11 module handle %p. Out of memory allocating PKCS11 slot. C_GetSlotInfo for PKCS11 slot %d failed. C_GetTokenInfo for PKCS11 slot %d failed. Invalid PKCS11 slot handle %p. org/opensc/pkcs11/wrap/PKCS11Mechanism <init> (IIII)V C_GetMechanismInfo failed for mechanism %u. CKR_OK CKR_CANCEL CKR_HOST_MEMORY CKR_SLOT_ID_INVALID CKR_GENERAL_ERROR CKR_FUNCTION_FAILED CKR_ARGUMENTS_BAD CKR_NO_EVENT CKR_NEED_TO_CREATE_THREADS CKR_CANT_LOCK CKR_ATTRIBUTE_READ_ONLY CKR_ATTRIBUTE_SENSITIVE CKR_ATTRIBUTE_TYPE_INVALID CKR_ATTRIBUTE_VALUE_INVALID CKR_DATA_INVALID CKR_DATA_LEN_RANGE CKR_DEVICE_ERROR CKR_DEVICE_MEMORY CKR_DEVICE_REMOVED CKR_ENCRYPTED_DATA_INVALID CKR_ENCRYPTED_DATA_LEN_RANGE CKR_FUNCTION_CANCELED CKR_FUNCTION_NOT_PARALLEL CKR_FUNCTION_NOT_SUPPORTED CKR_KEY_HANDLE_INVALID CKR_KEY_SIZE_RANGE CKR_KEY_TYPE_INCONSISTENT CKR_KEY_NOT_NEEDED CKR_KEY_CHANGED CKR_KEY_NEEDED CKR_KEY_INDIGESTIBLE CKR_KEY_FUNCTION_NOT_PERMITTED CKR_KEY_NOT_WRAPPABLE CKR_KEY_UNEXTRACTABLE CKR_MECHANISM_INVALID CKR_MECHANISM_PARAM_INVALID CKR_OBJECT_HANDLE_INVALID CKR_OPERATION_ACTIVE CKR_OPERATION_NOT_INITIALIZED CKR_PIN_INCORRECT CKR_PIN_INVALID CKR_PIN_LEN_RANGE CKR_PIN_EXPIRED CKR_PIN_LOCKED CKR_SESSION_CLOSED CKR_SESSION_COUNT CKR_SESSION_HANDLE_INVALID CKR_SESSION_PARALLEL_NOT_SUPPORTED CKR_SESSION_READ_ONLY CKR_SESSION_EXISTS CKR_SESSION_READ_ONLY_EXISTS CKR_SESSION_READ_WRITE_SO_EXISTS CKR_SIGNATURE_INVALID CKR_SIGNATURE_LEN_RANGE CKR_TEMPLATE_INCOMPLETE CKR_TEMPLATE_INCONSISTENT CKR_TOKEN_NOT_PRESENT CKR_TOKEN_NOT_RECOGNIZED CKR_TOKEN_WRITE_PROTECTED CKR_UNWRAPPING_KEY_HANDLE_INVALID CKR_UNWRAPPING_KEY_SIZE_RANGE CKR_UNWRAPPING_KEY_TYPE_INCONSISTENT CKR_USER_ALREADY_LOGGED_IN CKR_USER_NOT_LOGGED_IN CKR_USER_PIN_NOT_INITIALIZED CKR_USER_TYPE_INVALID CKR_USER_ANOTHER_ALREADY_LOGGED_IN CKR_USER_TOO_MANY_TYPES CKR_WRAPPED_KEY_INVALID CKR_WRAPPED_KEY_LEN_RANGE CKR_WRAPPING_KEY_HANDLE_INVALID CKR_WRAPPING_KEY_SIZE_RANGE CKR_WRAPPING_KEY_TYPE_INCONSISTENT CKR_RANDOM_SEED_NOT_SUPPORTED CKR_RANDOM_NO_RNG CKR_DOMAIN_PARAMS_INVALID CKR_BUFFER_TOO_SMALL CKR_SAVED_STATE_INVALID CKR_INFORMATION_SENSITIVE CKR_STATE_UNSAVEABLE CKR_CRYPTOKI_NOT_INITIALIZED CKR_CRYPTOKI_ALREADY_INITIALIZED CKR_MUTEX_BAD CKR_MUTEX_NOT_LOCKED CKR_FUNCTION_REJECTED CKR_VENDOR_DEFINED Unknown PKCS#11 error (ILjava/lang/String;)V            4       4      X!     a  L   L   p      L               `        P       `
     @  P   P    T T  s s t  u 0u u `v v v  @x              zR x         zR x         zR x         zR x         zR x         zR x         zR x         zR x         zR x         zR x         zR x                                                     
                  (      2      <      F      P      Z      d      n      x                        0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       ! `   @___stack_chk_guard Qq@___stderrp @dyld_stub_binder     q @_lt_dlclose  q(@_lt_dlerror  q0@_lt_dlexit  q8@_lt_dlinit  q@@_lt_dlopen  qH@_lt_dlsym  qP@___bzero  qX@___stack_chk_fail  q`@___vsnprintf_chk  qh@_fprintf  qp@_free  qx@_malloc  q@_memcpy  q@_pthread_mutex_destroy  q@_pthread_mutex_init  q@_pthread_mutex_lock  q@_pthread_mutex_unlock  q@_realloc     _  Java_org_opensc_pkcs11_ :mechanismFromJavaObject  PKCS11Provider_ hwrap_PKCS11 spi_PKCS11 
 loadNativePKCS11Module unloadPKCS11Module  '  '  S Object_ KeyPairGenerator_generateKeyPairNative 
 lot_ ession_  i destroySlotNative enumerateSlotsNative waitForSlotNative get hasTokenProtectedAuthPathNative  nit s  SlotNative TokenNative  '  (  )  ,  .  TokenPresentNative RemovableDeviceNative HardwareDeviceNative  /  0  0  M DescriptionNative HardwareVersionNative FirmwareVersionNative Token  anufacturerNative echanismsNative  1  2  3  4  5  LabelNative M SerialNumberNative  7  a odelNative inPinLenNative  nufacturerNative xPinLenNative  9  :  <  >  ?  A  A  openNative closeNative log initPINNative s verify de 	encrypt 	generateKey wrapKeyNative unwrapKeyNative  C  D  inNative outNative  E  G  I  etPINNative ign  K  InitNative Update FinalNative Native  N  Native ByteNative  P  S  T  V  InitNative Update FinalNative 	Native 	 Z  Native 	ByteNative 	 \  _  `  c  crypt 	riveKeyNative  InitNative 	Update 
FinalNative 
Native 
 g  InitNative 
Update 
FinalNative 
Native 
 i  Native 
OffNative 
 k  Native 
OffNative 
 o  s  w  {  }      Native PairNative          Н  enumObjectsNative get createObjectNative 
deleteObjectNative 
   A ULongAttributeNative BooleanAttributeNative  ttributeNative llowedMechanismsNative                SignatureSpi_ 
CipherSpi_  init 
update signNative verifyNative  SignNative 
VerifyNative    SignNative VerifyNative  1        1      init update do  EncryptNative DecryptNative      DecryptNative EncryptNative  Off  Off      Final DecryptNative EncryptNative  DecryptNative EncryptNative  Off  Off      Off  Off          '00P`p@PP``p	0`00000       D                     (            libSystem.B                        0      /     @      K     p      b     0      w                                                                         0      
    `      +    Ћ      <    @      P    @      l                                  З                                    S    |                    ~      
          I    r           x          u          `z      S     j          i          j          n      R    l          p          a          e      S    `d          Pb          c          0f      P    g          @h          ]          Z      V     ]          @Q          W      	    U      Q	     Z      	    Y      	    P"      
    =      L
    3      
    @@      
    5          9      C    N      ~    >          4          0B      2    7      q    ;           D          F      1
    $      j
    "      
    #      
    !          %      G     *           '          P+          )      2    (      n    L          p0          P-      "    1      Z    /          `.          J          @      M               @          @                I                                        B                         `          @      A                                   P      7           w              P                                         "            5            @            Q            Z            `            l            x                                                                                                                                                p   q   r   s   t   u   i   j   m   n   o   v   w   x   y   z   {   |   }      @k   l   p   q   r   s   t   u   i   j   m   n   o   v   w   x   y   z   {   |     _new_pkcs11_module _pkcs11_module_to_jhandle _pkcs11_module_from_jhandle _destroy_pkcs11_module _pkcs11_create_mutex _pkcs11_destroy_mutex _pkcs11_lock_mutex _pkcs11_unlock_mutex _new_pkcs11_slot _pkcs11_slot_to_jhandle _pkcs11_slot_from_jhandle _destroy_pkcs11_slot _pkcs11_slot_make_jmechanisms _pkcs11_strerror _jnixThrowException _jnixThrowExceptionInternal _jnixThrowExceptionV _jnixThrowExceptionI _jnixThrowExceptionInternalI _jnixThrowExceptionIV _pkcs11_init_args _Java_org_opensc_pkcs11_PKCS11Provider_loadNativePKCS11Module _Java_org_opensc_pkcs11_PKCS11Provider_unloadPKCS11Module _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doDecryptNativeOff _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doEncryptNativeOff _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalDecryptNativeOff _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_doFinalEncryptNativeOff _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initDecryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_initEncryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateDecryptNativeOff _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNative _Java_org_opensc_pkcs11_spi_PKCS11CipherSpi_updateEncryptNativeOff _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initSignNative _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_initVerifyNative _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_signNative _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateSignNative1 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_updateVerifyNative1 _Java_org_opensc_pkcs11_spi_PKCS11SignatureSpi_verifyNative _Java_org_opensc_pkcs11_wrap_PKCS11KeyPairGenerator_generateKeyPairNative _Java_org_opensc_pkcs11_wrap_PKCS11Object_createObjectNative _Java_org_opensc_pkcs11_wrap_PKCS11Object_deleteObjectNative _Java_org_opensc_pkcs11_wrap_PKCS11Object_enumObjectsNative _Java_org_opensc_pkcs11_wrap_PKCS11Object_getAllowedMechanismsNative _Java_org_opensc_pkcs11_wrap_PKCS11Object_getAttributeNative _Java_org_opensc_pkcs11_wrap_PKCS11Object_getBooleanAttributeNative _Java_org_opensc_pkcs11_wrap_PKCS11Object_getULongAttributeNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_closeNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptFinalNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptInitNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_decryptUpdateOffNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_deriveKeyNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptFinalNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptInitNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_encryptUpdateOffNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_generateKeyPairNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_initPINNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_loginNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_logoutNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_openNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_setPINNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_signFinalNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_signInitNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_signNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateByteNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_signUpdateNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_unwrapKeyNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyFinalNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyInitNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateByteNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_verifyUpdateNative _Java_org_opensc_pkcs11_wrap_PKCS11Session_wrapKeyNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_destroySlotNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_enumerateSlotsNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getDescriptionNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getFirmwareVersionNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getHardwareVersionNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getManufacturerNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getMechanismsNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenLabelNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenManufacturerNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMaxPinLenNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenMinPinLenNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenModelNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_getTokenSerialNumberNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_hasTokenProtectedAuthPathNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_initSlotNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_initTokenNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_isHardwareDeviceNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_isRemovableDeviceNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_isTokenPresentNative _Java_org_opensc_pkcs11_wrap_PKCS11Slot_waitForSlotNative _mechanismFromJavaObject ___bzero ___stack_chk_fail ___stack_chk_guard ___stderrp ___vsnprintf_chk _fprintf _free _lt_dlclose _lt_dlerror _lt_dlexit _lt_dlinit _lt_dlopen _lt_dlsym _malloc _memcpy _pthread_mutex_destroy _pthread_mutex_init _pthread_mutex_lock _pthread_mutex_unlock _realloc dyld_stub_binder       PK  5R              META-INF/MANIFEST.MF  WAO0#&&m8  m;=;i'!)1)MR-Szrxp' 
38&	e/,5/H}g-2TܧG@T@D&#:·Lp:! _vHAT$ƭ/BܧfI.a|i4%^*Ǆ,I&z1\ţ2 5xq#hgnQ:=2)
KOi^D^'	g C3I7qDcК-\P3_fux3B\$(#;IxeL[tRf|Vl%nB#6f;K(mJ\0)zx0]`hWG74II|fH*T)0n	eH\J^RTOv 3"jpY
WtIE;袏HVzrcVz4*"u#ڎmr}k2d	&'kGg*7;t+r]-
]E<݇mG[wyRNv}vhV2C AA*S{	QwHq߯T6j'!Cʛݾ/ۍ:ڮKX?-
G4^k&,.1x!t5`28t79Fȹ(Zd)B R}϶ߏ5ɮ#\6~{qu_6iwE>j5ںUb^We} қ֮T\Lxiغ[Ͱ֭KV:"&Kjm*ޅ~#Ӓ/)W,aO"J/'؉>c編hKyc:<PK-"|  Y
  PK
    5R            	   META-INF/PK
    5R               META-INF/services/PK
    5R               com/PK
    5R               com/sun/PK
    5R               com/sun/xml/PK
    5R               com/sun/xml/messaging/PK
    5R               com/sun/xml/messaging/saaj/PK
    5R            "   com/sun/xml/messaging/saaj/client/PK
    5R            &   com/sun/xml/messaging/saaj/client/p2p/PK
    5R                com/sun/xml/messaging/saaj/soap/PK
    5R            %   com/sun/xml/messaging/saaj/soap/impl/PK
    5R            %   com/sun/xml/messaging/saaj/soap/name/PK
    5R            '   com/sun/xml/messaging/saaj/soap/ver1_1/PK
    5R            '   com/sun/xml/messaging/saaj/soap/ver1_2/PK
    5R            (   com/sun/xml/messaging/saaj/soap/dynamic/PK
    5R                com/sun/xml/messaging/saaj/util/PK
    5R            %   com/sun/xml/messaging/saaj/util/stax/PK
    5R            *   com/sun/xml/messaging/saaj/util/transform/PK
    5R            %   com/sun/xml/messaging/saaj/packaging/PK
    5R            *   com/sun/xml/messaging/saaj/packaging/mime/PK
    5R            3   com/sun/xml/messaging/saaj/packaging/mime/internet/PK
    5R            /   com/sun/xml/messaging/saaj/packaging/mime/util/PK
    5R               META-INF/maven/PK
    5R            *   META-INF/maven/com.sun.xml.messaging.saaj/PK
    5R            4   META-INF/maven/com.sun.xml.messaging.saaj/saaj-impl/PK  5R            /   META-INF/services/javax.xml.soap.MessageFactoryK+.ӫM-.NLK+NL+O,+K-27wK%&UE=sr1F` PKy;H      PK  5R            0   META-INF/services/javax.xml.soap.SAAJMetaFactoryK+.ӫM-.NLK+NL+O,vtM-ItKL./- PK (5   3   PK  5R            6   META-INF/services/javax.xml.soap.SOAPConnectionFactoryK+.ӫM-.NLK+NLKL++0*())wpKM.sKL./ PK	r A   ?   PK  5R            ,   META-INF/services/javax.xml.soap.SOAPFactoryK+.ӫM-.NLK+NL+O,+K-27wpKL./r=sri PK-@D   t   PK  5R               META-INF/LICENSE.mdT]oF}ϯʾl$l'ۗ*}0G2Ckx$XmlUU s)0Fo:Z<зǧ_=|{ɋJQ^#ӐZk]S"RZT9O7r[5ɷ
lwywy)]C
usmKfXQ](m}MM.T!=
=:nt!PB'MG8T=4#WbUu׎TY
OfbND^k<X_A[+`>M?CgStM7C7]
f9)-!utlƴ6Ue6ԥMqFPD0؎ Amӛ9أ?'t0C
rh/xeEjSo9r!^;#+`PܼP\|VʍXijK|~|&/)h^CH}n1M6A!Ux.tz밦x5FAoVk.iݩ.]Ʈ]/`^$\)#\/䅇,
dJt&iD!KqL8	aqqxEu2!(I &~,9(,#PHK;1cJɄ,
f<rfN	SɃ,SE"Y!A9`c4K3?~,cBCsy@G!OY U '3^ʳ W3BO뿰YY>|XH.3h$3_LFQ"{`H;C	ǙHKB$~@K>Cx;0,IW vPGYj=vy[0Tu@1F|ي"-`ȐK3'Fv%Wٞ[	=rSû?PKv,  
  PK  5R               META-INF/NOTICE.mdXmo6_5h;/kOY^m][Z-(TlQ_9}H,Jsw#zBkS,o?x׃>}"֒<RөJx"z5
bZ}IDߐ+[/rffEOAsR3ZUQߟb<6l*Q3
nc
'rުI^>Gt{t8 eZ-ň|Jcd_b2w\&=Q<~j>I5UҎ_vƮ(DN'aSptcG!$x.6yZ91)c/fB`8Yn!H'cLSQӁemKyeBX2a:BBR|n@ F$
zV#iaJꅴ~hzF=CJ1dPʬf)-XYXdg&ȯZ4UꭗBKaJz$Lic 8]Rmf\\MVct'ShVr{ƕQhlXbg֩N*FHӆ3rx
!y`#[d| E6)Si+VsvLe(>B;RY*l.;3ɬE&Ob<	tK
,Xl3*qU~3)Jgi6<JJl`H(&D@$69i[\vv.i3?3.'rC+p`l!.N:\Qa;)KD$T""6+z*R
_}g7qhP V^#6A7leYaZxP		WޱEOBe

;Xti}5%,` 5P{
r	vc``-̐u.ck
W; o>2m8 me'Whвُ*4		 X{Yt;ꩅ.aq&oJppW++l:RюZiw6Q3ѭ2VƖjؔ޳`NmGj:aCPpP\CO[z}~EpIw`ocͭU.T3ODQ<Qvd䂷5(]R:N)&h~!ВOUiTI9~v/􃘀S?# ӺRC+X@@~YHh'9htSaŘvѓ+"<_:~3^3ύI72#-hpgx˘JCTw\Awhՙ.,	iʄ>LQT:(~|R7MtA*] .ylS2o"+UdO:Kl66& ~\ktrz
2[.28A'ר_JoD<T#V?`m?W,gm]C_&XpFpVֽ1%qEЌG7*&|R+8<,-^eHAh;c޾")aXRS݃,MWa%A=)[%oU\u	O*+K!M@/ޔN{PrӨ7pn3l=ZD[Pe׬i.Rj9:uyu^B6
FtqIP7O+` H2L"PKnhX  =  PK  5R            =   com/sun/xml/messaging/saaj/client/p2p/LocalStrings.propertiesO0WHmvP6h&ĒcGӮLwPPU9s?|zkDQ:8̎ .!Cx4<\m@8|RpDJheZ4kYxRX.\I,UV*"%
WNk.$_RFhPVYЫqIQ[ΈeV 2Td\3H6J^t͆a0m:k*T0u2duYR.D>''hp=O77y+<Ս𚊠ԄhmBYxh~k3xp8LX,Ji26Vقx^E1<T!5@\mYt3U=9BpÕU]?%,G%C%uq9
*:EmkH/`
Q/;*@iL"2 vOs+Fߤt4yS;בk_Iӊ0R.(I}ADMHҎwu?Nfa^$GFG՚K6.kA*\o18lO`~lKx:NcJmUa	%{ZNDŌoiT8iɪƺ%2f+I[H4`Ǡʏ1x5,}^V[{l['W2q`4qGb1Ä</
]iP8~PKX  T  PK  5R            @   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_de.propertieso0WHtѢ=Ə*ZB%ڑ}i;"UUs
mNU5	d1Q
NAbh( Ri%	йypѭ#-jqrrj]5l`fCUZ*-5(6[yexkxɩeKR9>\DzZ5pw@ILpla]5

!:Ygh/e>B$RErҲ Nzۺ_rР#oڐTÕ6B篝,ML4FK"wm+_Rd<MkǕM7&:O5W-wCjW!rkL&Rqa<-Jt$8ՠBg:Rz6ϦަikR_cf̬2\O
9hJ|#h`ًmH>} ~6eeE?rXG/g+; ϱX"" 7`XV}#H Nba<]VvS8;`r1,I3%v,Xo/%<]m%7z:'h0#rX|^N<;ďWEgffDO+<5l4L#l\xɏx>Y8g}sh8Htv(:ͭEX&oA괽k}eAtzʄZ;K![2bv=_rm|)cb1'ӖW;5 -)7PK9RJ    PK  5R            @   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_es.propertiesU6+KĴM=lb5bI,h@R8ECɔI !r潙7W+@ћBrybY"H 52bpg-i<bvx<5^S2ĖA}'Ѹ葿4rtSCq> GeMMhQ +xjj8Hm]X<==	qf4~.j;?nlec~9}7+uRo^{nY}4uAkqed?zO	(RtN(E<lbQKosXEh%t&HϾ(y$h)#%DZKEeeX_;8JG|P^hL*'u2^ZG?IJ6D;2
8c)Nɸް\3Lp9Hch::#\PQp)	UGJy_⟜ISSw:C*YatN8'p6^PmoqTaF-`L,):W.'gˋΟѐxMlNa2[B(p+zʹ,p?OUPZQۗ\cb9e]?$AHsvqQm>&3
)/:SOgN[H!P}v
]PJg(JO0
Cv7R[߄[c+VD燴W9!ui]oJ:9\cmqPKAZU  5  PK  5R            @   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_fr.propertiesUMo7Wve'\Hz"gwYPCR6 ,8yopt29[j o[3W
9TFiz7ZCУۡd[wCl6CD+ I+7DDbܶl!>	zp|pj@CUg)%!u!W#YOZh]]RV˻ߦ#gINQnz><zs\on~/mt?RL"BfMx$z[dI|0$j{&160dc[߲`moW^RScUႄ{-)5qpLXc
ǜ8r#*hM#!m=]bYH÷%T=L'|:2:"u+p#(S.i=Eg4e\PȥU&_~::P+)et p  \==_|*S4L4,e *x圮Tjp/,Xè~Jz~1J36e)҆*`itoܙbvm-8xgC0;D5mR8*j,nGgYewniO{YrR|s{ڿ*]"ڙ3/1
6A8&8j Ф`n~Fg4HK5S5PDvb<)Ö5.7Hѥ%~y^sFIkLPK=^    PK  5R            @   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_it.propertiesOo8iiڋܦ@"Fz-%)N}%SI =p<2g3hۣSUxMbquAlѝfYG*xJVZSɱgwRLSld)ԀmZiTԀ :ƪTZP3%Ov#>ZFԮUl"Z5 O@@ChÃ#fEװ	~ƥLu;Y|JLR{nI67G-;sNbj;ݳ+@eв=A76A*B^V9H<nDXeh(161d^u
[җޫPJ'v>`R#<R֘/q
RuY꼤R
׉y://d)MwKqZ!.Qrm	T*8QW#*pl9AU}"g_#Hh-,tSF߲ROce_`lyrUD9W`Oh'YN_wbXGKp%`Ŋ#>RP|df1Fiq7wu_B"c?\>93k-ٔ&VO;YAtga8ԅ~6t$vZIUD|3nxU?v}5r>/ϛx?h305)lah:v,+w1Oqz0XFKsr=0hO-.cABvʈf+]Yt

?ݮ7XRM/_PKZZ5    PK  5R            @   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_ja.propertiesVKo7W"j>8q0`!rr\j v"CRnICK7<ˋKN%;5|(Ѓ"l)F#Ҷpm!wM#5WOK{	%edv B?~ Pq4nW@^#:NhD3!{t/(AQ7y'	@3g=jLq{u8nlwGVpBo7wt#k9*B0pe]{CDѽ4pɖkпW
R|RX(b<$TqH-n	5Rn
}ӈVʦs>;
˭$Βޝrbe|6[EGVSVfʒ[;:
ϱQGvdeӆM|i8쪾)%QRL!p6.iAg@>=&^Z`K(bC}`T؊qy̓$pV^ɭLbO󞭥荣Q妝k;\0#ݱ
2ՉADr\4Ey	9oK@,
``VY <\5oc˞il+{y,״GvL#n;EwNοGڊ?<e[ߜo-7}{
L~EɉWaOlnװ{NK<\%|`{J#2lK9/%hI3yYdSro;ތ'}	_HVN92ԝ'/gT'pgt\#~Ԧؾλ:
a7KZ,;oe1-Y_~|8KS-U]S=䫉??as`2=^?lQcX5$|w}x|\o6wJ}$>/ύſPKӧ)  b
  PK  5R            @   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_ko.propertiesVMo8W%EK2C.hzH& I%]eGt!gޮ֑\WUd,cK"[=q\.mce4!X gtޭa tvE6l iX5[m<(ض	-.rcCu-ʴ`|S<Z p 1v鉚:vߘ6#g[wC(?/w..Ӱ.srz} gw{e>AD茏umu 	AL AcvYGl[dK۫qۜ|k)ʴRLzU0r`
BbZȧjZL8P@> !f*׶#lN@=OfhIyZF>E{%'+ebX`8I4NQ1="~9Y"UKMv;r	.5(*d ]S360H.dW:͇?1Эw*LζmgFz5j\\ eg	MsP#r/^!8,Ŝ ^(!(H=bU? US.VPP)quAQ#o(K>􉕉'r.!,+S2D)ϳ=gW_B^@mGbtUz8Ix>4ihox6:1`H!\e

ݵ#ϰM&C,Oiw"~x@nLݯ^> b@xҵjh&w]0-q(߬.s~65
lNnkC}9}È2;j]Uc>j|A]xڌLzRB~ WN	>mFߏݫж{nIP<J,!&gC*³PK)ӕ  	  PK  5R            C   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_pt_BR.propertiesUMo8WK
ĴMEiS]Q{=BS##S!e*i{$3lqoh8Zݴ3("{+U M";u;-=:7]́EX1ޮK}p2RigeǀyUANn4Pl;:BU­v5

o"V8G@~(W ۬S{4ޭꖇ<C;Ll7/OZ-vy|q`zs'|@GU`f.ktuXk6ˀ￵K<o,r1PBY䲉5ʓ=^'1 0s:`mA*T&P:Ȏ㴪"cUQ2oDOȡ&
5V2yEOxoo<
Ug]	14/#^Vw	e	mY#Za!J4ՆB[if̫3	0_@߀O*
q<fUū2;%?A?K5oPcx	Jߵ1AdГu::2($/3C:MyҜ$w<7U ɍeIqSig|skJt%܃gB#N8e;1{E*K<]>ENix4UK"xRԉ~t~"Q
<ѣB9=%~9 "Nc1]sǿ>u4rFl;혮ŚS3W[nl}ZyſPK>K    PK  5R            C   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_zh_CN.propertiesUMo6WeHhvCvc=B#[,
$]wF
vZ,r0mfޛ_-g3m{A}dqULD"bVXzdӴ]+=8MaYp`Amc5;+A2AǶ߱"Vvh4m'k{
b
fvp[m[5={hh|,5{ٷj0#a\pq%}Qz8~K٬yMS۴`W&ar}gF؄o1Ll{;phb-d (b>+senbOcAӘ]xFy
6)E`3CgC}4W рH$<"y44MS:u51p%tϨRVd<qG-5CWǘTYCC Y^ $)2ei{ȣB)Aq"~T<PCQ֗s6`+Ol8bAڔJ=W9/{O@&C*TPjN!P&eTcBIn۷*,릞 Lج!߭;_sQ{uɪ-B,ԯ16wk-Yt;7Xbr("}9R$8u>Th4 g5VyϱwoJ6_#|o
vJ-J&}$,>=o	^E(|
4H&7:	UB"͒!I6
{S4uy.i,DOuek+\qގa*,lݮ7ĒL7Y	eTMfD+q3֋ſPKF   |  PK  5R            C   com/sun/xml/messaging/saaj/client/p2p/LocalStrings_zh_TW.propertiesUMo6W%Ĵ>LJLCvc{"),
$-;LGN783]/;Z{t->eI'EoXCuWACCV9eĳ+C5;!=aoݡ X 
I?s
V*b 
2 U4s
=h筮zMP-1Jqr^Z$
= nFlnA-li}7^=(Kk-~/
9W@ߕ33 B!M
Z֡G2(N9$>X$)޶caȆnk.ǻxm"mO$۞jۗ<3Mh
gJ[,Eli´mKT",X"|]fjjH>ET^5(+Y`#Lt`~t γ K"Ŷ_<;U+WFbHQ,b*陬8쏝ŻxVPEQV:ds0ލ{܀G%0T?ɿ
8CAԴHRv3C3RPrx!}eU&
%fƹ)IV"*fga^W`W0acEh;o'Q2wʚE3ӗsҐv"ޤ8FkV{PU{:q.C^Kd`~`QNie$wƞӟǧ9PbJa]$FD$м>3yV('b&(XF3)4KpvA
brczh2=.@6:e|p;?PK'ʆ    PK  5R            >   com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnection.classZ	|T?L^5Đe)H0$CęZ[uK-j-(J\Z\ZKXZZ{o&2}wox$Uqb Mux<j<L>
sGy
ye2t>N
+5ҸK>_{i8y<'zi(%I^p?Z'1d2>8iTyi0OXx3u	B<[9^Zs'|iY X(z5HKo"iKKM4e,xJ>^z'ȤU"jOQ+zY#kN	
zYmE:{L٤sDj8s'kuUB:,i
iBs4	ΐt,pgy)?-a~9:%/y2|/B/5楳D]*Od˼|9_!+Wg^W|dzo`Fbʛ5η!J[k˅|ο&G$4)d8RpP|
SEsf-_a΢˙X:gP"l	
6%cL#M[jFj`[MCu7EbP3حfRLbD2MFCDlj8NNV29gŚC>
5ŗG0R\k
FVayUhpkw v[޴!kd%Yli
%ñ(ƝɍS)Zh{)
J'4E¡hmb[dm٢h摿,llf g,#LLz%'a)E}KyP!W,ާ% $vhme	EѤ(dR[,o-hpq7ŢMAe,)f#ͦrCA1
|;EVb/)qpnQqS-~=E7z$RKPsd	09 +&뒡x0i:1ў)b qQ{=BVȥ]ZqylS(>T
G&͉3&CuuB]<׃ ;V'΄#h^Lpbn0iL"
6"C)3sD4#V~phs`t-2ԊS4;4z\;5ީ]퇴-!Xa|OWslL*Vas#(WssDZ8a!כ22C+61F1ي$xC١ۛ9[L$6HP$Nʰ-gD䙤3h: t%WbP5a?Pq$ɭJnTdxZ.IunexShnte/&ˈAL4@(t
UJcXS,=xbPHvc9A7Ѝk}lٌƏ?Mh4[Z&Z@zTچ/]X,MJ-v)9C#[RLV/.cp'눖nTXQ"\ܐiStG")e{RK18Ԛ6y(xRJ
~2a~ߡaﱬ;O"Z	X@
ĢW'҇UXmv>k{">",
H$̈"
I{p)v)4'Cͥlz9,^l`??%	
n2A_~7E{wD_2W*K$X<|j~0߼7-1Ԅ_r?x{෱:@k{ߗK4}g1o[}r
iG 7b@it	|rǘ+J"H
"V*!}#!?? W_|%2v.4	}j(٪0
9bbb5`}PNCv9ggHI% Aw,dd$9s}D0c3&ffİUm(}!Q4ʣSU

UXG#(CS%o&Pq45P>5D2ʨ9*# HPjÙٱV J8$f_&+YO7!~	CFCtƒ۟lijƪ2C)*gҘַ	l3.=8,@ uo
Irz7B^ 
u\7O3(
EЂ{ٜs{`.8f9fsD9v';rqڐ
T\QI&ci 2OY<^ +/
n>a ]B'#h,K`}5HP"iP(EB9hz*	^`F9k"楡pHHvP-ONxk3F"xJHfiY!%;*O V9A>3fD"	ӆuom棧I3*6h|\
ycJd^ܭ}X-On)IkXCyrv/91
'$4H4lG{D)syalƵ!Ҟ	S7
:h-k<3M91>L}J2EKI)vf
]
G3%
3_3
=;|D,E%9Te9Y]~L3c]Fz]fQKC_xÉ1=G,sJ!eL4taߦDC[m;Y'B+öCMOI^.yvX^Isk"2
*hm=6>Wca/z$	-1%S`7o!q1
[Yd큅ʳk<oP(?ZfWK9qk#/lJz"r0eA+UIrc>oCWg}E<o
F!'zD+v{Qḇݤᭃ+vIy;(ίLQ*\U\Tu	4ks,q;J=y_jP.@,OethW4:~?4AwB2A;уtݍ=
 GX/hyQ
_Y߮N7Sq79S	R\6좒NkNlNYBuTHAQ3
3K&!nW`̉/Wg00- !!ߪi.AF[êmvш)*(<Rt|K2zYanUCR(?Hjr&J0Zq2S@񔤩sn@y:OQm3ўe*l::*>Λ zQXwNW6{ EhhRۓl{,K6ZsltL瀓.G{fRTЫN3EUPjaԘ/DcMMhl"4fY|boRgϹ|}·f{HQOvMx:n;ixofhVyLZ=Hs3R4/E2KтmK(p&UR|E~_~Ilix۫4l!<ShthIG׺ȧ
0wR+EFL_.
iVvP~:xiNu7P</tW.jnv>@W9dʉRl7^=S=kw<t(Eܾ|Ќoh`: 4m8c=vi÷=Ԅ5gs`;l^ByyQjY+޸b؇ߔHZ;:ۀv@h
QiՍ%'\Mؒ=D
CU0l.j"8XaN.a$ݧhA:[[zS1xZNbvOsx6|^d<5JA|syAh}	buc<H9R	ѹE\u	
Ki$]ڱ& 1Lkh6]jr=RMHB7#܂AmCZԽn"܃ts?RM'x+Ho"aRI:*Q>O?|#/'xzҟx=='Y>3>^%hEϟ~^u{m~g=~?_hcSϔ>W#K5p*cRU%+u;ԱV3YSsXWKثVsZb<PmAt3yOyTwhǨxzTsz+\^5Շ<Iuuyc(tɎR>1<1:f4Н 5[ϖ3:L >~K&>zu:e`0tGz~$F#@?!u7Ad2i8BJ?Fc.pNj5}kxUSk HjicTM/cQjqE5<R
=I+\&zcN_b ϱ^giY8Ų
7vG}}Xu!,< 5hbPFM 4ѻ(O<*F~](}0'k|g+5S_˷.L5j6jxg~{kUP!hLyka%\yX}Si friDXyrb3"Qq?X!x(
=C>dmP\
O
+MPxJwPE;͍\ 4J~jGL<x0̉PmJzҸ
]]FUHw5N整W.m5Ga8M8	<^00@rq^l"?ʖB~!WuCళ1.~6sn7MUg,W-(|N9M4!ӄ|N9-'xiNuldⲑ4?q	q?!qt@'im7gv:
t B$Ol Ǔ?^L[6	&i }_'73M<E&)؊&Dp1Jg@`={b ';Y7bbe<'O?ڕi̷ߧu5MV-F"-@J8J#G*Lռ!Si	N-CYgic:9\>.J>/[2/RJz2~O.5<o|3促\ɿf?v̿ټ񝼀wb7wZr3!>_£8O.~;i>o</~;/&o)ⷕQ:OϯB~U
וPSMԺ<Ճng'5^Сn +>껁dtYuDU|vYս@WU=Oym.*+.%Г
Хu[S5uہڼЬN fvAyfsCY5J3
BD/9~N*w4pp신90`}Tʂt5V=
7@BJ$W:
TPU(A]s#s3 kt'6R9A~*s1E2eg}0=>/8~(_Nk3IsAO
eg>QUHѹq+MIaU.N2V%N;iUK!JXVI(</Bב5Mt9΃njϳ.Eܽ>ot_ͅ
@_'+
RnX	P^Z4TN*@:_
[0S?jw!P|i͠_",4(BaMKi-	afj`'z:h&
n]TIj2-~xƸ;qxͼWi^i*0Qm*+,8@e"Frdh$ ꖍd4T5'V.K+rt-WiЊz<_IUT@af<_P*x`z僴jG[68N:fvWv{+ZU]|UvPvM,Gފ]{M-nO)#Ɠ`Et<r.y4#.\0=e*65
ոK|`.2 PKj\  13  PK  5R            E   com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.classQJ1=i:V[k} "\.bq1P)Lc)3a&W*(~>PsϹ%O v EU$.X&K%AXR\=T܀3"odLryx/
И!JӰci(%0f#xo
wȮ8,F"bn0y?^-"`'8.8Cn,ɀ$K_05ۚܥ)Xc|Ys7DLd.&~ѯ}%cAR~PKCvG    PK  5R            B   com/sun/xml/messaging/saaj/soap/ContextClassloaderLocal.propertiesEOk0^6hiCP(X-;NBS=dfZj;yu
cc4HxtJMC;a+9i1!R~J	bE?	RF]]4ށinB*BN[I8E5?Px&u/q<swNdl/6rQ{ciDC7ܣoDBo<|
3%F> إCW>,cY2=f뎽 /AZ;	~PKOB(    PK  5R            7   com/sun/xml/messaging/saaj/soap/LocalStrings.propertiesY[s۶~=gNLݨgNL{⤓W$6$s{w,	ʔ%X|bwKU>l6?`>e4OrL{JT/Yq#]9*E%V)}]g+Zi^ff $(|3ַ<62 SKqYY	vUFgɔdDH e,Y3PƔc$N*B'l;Gt<_}?g7)eLsltvMzGETj jB)Dq:[Ɋ}RQU|J?V t5|DE9Hh,1'7'kt !
gWJS5IAn<2j!* VQY"A'\Je"BC<KtoҞ=[	BTdi8DC	v{s{Vo2	x%PS
Xľ]AjQmMS'iي6 XABxЊPCPBsǋ`gQ`Q(xy!:Tr+rHw$ԡ3ɰV[e[!K@=W>2(Eb%OOԄ/@z/{eFc4ZrIO!գ$`*CB$XluM#l^j%!mR9f`.}g.&At$>=B"J)1nG$X4ڠs
>Fym]t)gs	)0Ka[3}7 96vx೯'hY[T0l+gj'7N<pFԷ#X/{{{kr!lEأx+dp"xAQ_mE[f=?;`JjSJej|כ@~;;{d]'vmUެX&kڃ.E{T.K+u6wlu~IVg	[9(FaG7p݆יZȑmHA`^Tl*?ɰd'ץinIEdhṽ,,X{?NL"ԋԘ6U"T'mud,8 |b}v0ik
{XYHYIZоOj<Q[+\r<)߆Kŷ\Ӓ>	 F#sɂεbKWx
ڋva{>S+8lZH,:G샇
D"KeMQYf]&#ۈ$܃<h\~'Rֳy{|"#Tk+	MRh(\q]\kxU:!()IpNNxrc+"n
26x c;=ەXRyB1(AVW~hڍAяB0+tC	=WlX0Nų}Yk}T*Qc]{H~н1-~	q'm8햀C|A}R.js%Ɛoo?1.dN\RYA@,Ij&duٰ	9n҅=+gN$W]fn
HP0A*%N\|~r
;0+-er-LskKAIe->G:&}kUK0ˠ_X@0p@os%k2$F0˨u>Gɼ%޵w߁wRd:?޵E1p4Q<XC^ŧvl>co_}BF?Jxn⨂?=x!UaS?Z#klAK	;nE{i>t F޺>*<R[
&;|jO]n=diP5x'#{Xf>)T8mN)?53hE<߈.ۢqMǽO},`^hxs2v6qswM_}39g|=w5ݦZ&fmKble]. ?{h]&;g^Ktϱ%Dz$?;+u1:̻p@1>p0p/ռ
s&x3h3: R#3Ν'Fa˄qdK\%g_g/ PK^d?	  ~  PK  5R            :   com/sun/xml/messaging/saaj/soap/LocalStrings_de.propertiesYKw:W𤛙3cE8siL.%ZֵDTr{@$ythJ> > WY^ܫ$l0ްagW`\FǹbьIp#tNӔ4SBu+kehV<V<Ïـ0̳D,	*)T[|po@,4V2LBvhUi\I($<
 aw$0P`'1X	r(LHEnΔ{wd`>F|
מg7B
;P&u4<}BkKymJz
%'AKl8WP-^s.&E]DW 9p. Y[ja[Ȧ\%E`ة91j+Y66dɭ^
!^NUl7L00v !27E4y3	QbXM5N(b>iH!I,D*'5ۼ9=,R+>maXLC5A_?   
b4o!=lJL&gn	mZ4D*C$Ay.}_
yz{'U$KY넩!oE
IAdG<E,VBB.E
ւ9H_6aM} Ұ%r!酓V"aSK}\\nM002egu)2ۋRw66y$?q 2%&>Uɟ,͐e_zKCrr`UY#9b^B*V/RxM\VӣC<3`اhN|{`+/Bp@'dot]Gbkް+n}/0
f3Izޗ8C1~m61l_LVL%Yy)v^IM9
@EĚ4 TaBb}J^aBx^tlJg4aofجY
! 4c~N)uY2dtJ'+O@8-!N$[| QM.Qdz
h0Ij22w]QXC,ݣ]%n%x4jsw)u
#VW!
Z	lA Tl>?@3k|K&,qT}d۱G }R@#}ʴ3NFP#6& /4	9r1bhHRe䨺Jqn
ؿf
3=iKʜJ(A<F,a,OyC*vBsh\P4gؽT+W@{ƀ'/aeLq
`H˝iZ)Vy_lL
Gw=iZWˣE]@ μr`v!1Յi~ 1$?W`\B_N`Ob<J캊p9:IO]8{Z֏WniWB>ZUcBB>=tXv><0(|)Ҹx#&Ua-L}'>f*P#1Pԥe<GOlZ qBsl
$~Vן-.F.
;9$>~=`ȲȌO4r{~{sC3ʫ+8*RQjm'N6Z@F:8Uۀ>Sۿ yVcrڽ\?6֩ʰu
d[ c
v6LvK>^niAw2W
s֍ <hY'q7dr}`;tsՊ v xrP'-=u3PUiIhF[Nȹc>;;A}kgc
Y8Ֆ j؆l`i.Cr:${ݽYkLU/ zhBFhڰI0Z~2	^ɯǎ@H?o<؁֢P$223@8$dhBk0OI5>PpьuV_kxe'`h]A`G7~hޜ|؆d%ī[UNN$#~\lVc$p543{D*x-qGwu/"IM
 14OKG.k?/'}릙Yv(v߭2ۧ3 ˫%=u]m
9<퍠x	oFi܁oloO툯uVśCuWIIhn;-䰲C%rs{ں Qxt*1̑81pPĞNZL8yT	ܑӻyKgi{g^e"`=2~uapvynq^&͉sǳ&<_ߓAFܴs7|dɺ]u޾??z%rJPKأ1wV
  !  PK  5R            :   com/sun/xml/messaging/saaj/soap/LocalStrings_es.propertiesYKs8Wnm,Uvvʫd*%v75CIv"%~e0D@@<zdH=4D&˂J撗Hi3`F܈,9z	y_6`;׆oi3+7zN5B<@#+.s\2ahDaٶ`zeE\ˢ4rYR+NBMItà@+)6D	
U'"ˏodզ\}:v /3,+)̂vu~<<>yU@ϣ#Z{z}L*~vR٪R읆DQ5wl}E{D{^?%IKl870p2r<`._^Ҡt#
$,y!OxSmS8VޛSxSG3Q2hMUyښC
=͂{4qY!>\)]&BF\{FDˆ$n7pD|ܑ"O܊d5zEb/E*^~E"a~DI`@L֒+2De¾|<@v2+1]f^A٬#҈5^jĲz![M!O`V<6 X͑ 1J#+_EJ"u@^M*WG~.v"'Pa]RKjcDZ&+%"?<vi)?R:k8*B^+_GzYܫ옡RߕUAmyJV+J"4Őۥih`&toQ3+Ní:!8
/ҫL|E'LdUIg}*qKP&
O|
z>n@YIy׸e"~8ʆЁUHLv-XJ|a
Q<:եk.hv%P>U#dF](["vǊlH!' 9ɶ£IՑ|xyHFSzF:ke*H^uiO&7 Vyuyg-|RCD+d-c'jH(yR1h>¡))`8aK4Q).FƄE؝MV-b^~ۘŤ57@L]%HOS`_Sһ7
jwXy>~Jؕ5U/cm*ϾO=@\E]qɶ*%qC/}+:~%8#/?,r4#73%:Г[P/] >!feP+a%L]HULsvvZs鐽&5ȔɶXSgx+61&>ざo8&Ţ>6֠io=؆h],4lgFykJP`&~-y7q̖㔕k*XNlk1S碬FͶ+NLtB5lP9YkMaxh8EV<׷bLξe
vb+d&}ZN(|+Fjh*82C?z|x  1BL )A5[
raRfj[%َl#/ծ*l,9aE][A<}JآY>&?a8΂41{$sQۋzXZ&"f
&l/iv`Eh3xfHmBc\ڈҵy^Ьդ㣰e5a::څʲ1r	ac+p/6JF=I2s![q7)k.|pC ˰oy:eyu6½	Z/&<4sbB(m6d]*ǑlU\o6+c!aEπ0x+?9do ќ#~LP==5sNy*LKK@g~ BέuO:VZpπwm,X>Uqk>n9'
*hߺi*5U  |IǢ&dbM$xi9ً?_P?\<^GkIw'Yߊ^7\/)ӠJ4:`oXv&ZR:fOqYa6E1#`z"t_7?vBTZS놢5xG5#=cs𢻽
w
#:7~NFԿ1=PhW#sl/DR5}KI{Ч:ZR.蓧7S}1:\w^22= >sMsPc\@Ge"q-@*A5na^ɃC\|zO,>}<8'b/y!&{g7Rk2M#j̛\XA7#T`Gys44٠Q{g4wWc
0`yӈc/Rd<գ:Wj(6j?z~ϘUPKu=
  !  PK  5R            :   com/sun/xml/messaging/saaj/soap/LocalStrings_fr.propertiesZKs8Wwkc<T^'S9-HBQm{/@zV2C  '٥GO6Z/x8`<J3ir7KnD8fiQp}ɜeZm5Oafv $UA[-y_s5i$4>`Y3"Xf`W27Z#UPpqQ0|v21P
HwwwprHDjhd̙r˙8`HoWg˘9yrk/.^"Wo`@29	p?<[	Xmt%gQK8ׁ%f~B3'<IW wEbNlJMB/"}\6sJُ!1wu
U`RjqemiC[Sv
,檺AҧNzT@CL<6ND&s!Y̏0kRA"҂YK`LS+5:Ł#
	is#6(t>zQ=Z@zS0Rs9hsKXmlԂrr"Ij{ BQ4/Lxy$	ūaH"D~I}k/ @6/A!QLC4`CC ?9J@*HaҹW,T)zZZK\loX*鹢H.
R
WܦfKԢNxN, 3	TnW~r&s	RX"PpI3i}HeZDNFRUL2I[P}JBnj50sƘhHV!r} >nXA!Ϣ8\XgA>\_g5#Y^)k<nڂHd"1&QŒF)
Wͬ9M	
&VKL	gyU#,H6TQ%B:>o`-G	[^"ʖ<dD[H!/Liyfd=*Z_ۚGϴĚr2lLGhL@qM4".YmJ?r<ؖÇlE$jۺ$uId<ԟc`IŇ^.Dqӧ?faKCם\o_O-$En$GaV-=0(b({{3Ob
K,Ct<@-IE:.9	إ>Puj;
^X."V
E ɷݗ.B"]}J6
A0a#Uw0^ Z[,`-m&sؤKjDz /pFݚ`KZVje 8u׶zfhնX[a354ȧ*sjM{٘[CFzA7+jX4!Z)6V3ͥqCC>Ѕ-#uFpV7leu̶:H~:MKv]PbuH Uu=F uE
Pky0nҬ06}d$XYG$zSv^Ѹx責VWj3WX^/pK="9dx4y{m1ɵ}ڦ@H'#DljSa	e^
k#:
ٸQÿy, ;E`/|W H6]S#^C#-_yjY0˸>gAtS땚ܑ1HpRl=mz	ּ5Ĉi* Ѝ)/ܬJwv#aWW <Rywg咾x</в'Z5,n0;Wβ=Æ2\서}F
/I8An
<Viw%T/ؤw=&n~
lڶ7'u#MK0MJ~fްoά	綤goS?<Kw;eZʟkضȐEJL
RuQթ
Ǘe7B{/xf`[qK#d2`h^E`[Wijm|`4|F{;`FV/j,av#MedJDZJУFBt\
WOpw&'*E:vE~񋴅}*hLEV9髼_n3МqbzZLע9-ѨmOg]>>0e0yHVg(3?P&|Ty}Wilq$jvJ.gy.ӣZ-VG\u	W?6xlU[<RJj:ޘL[t//O6/ojOixN/(o԰+UMrlBFm*7Pxoҍj!rKFPKuF
  y#  PK  5R            :   com/sun/xml/messaging/saaj/soap/LocalStrings_it.propertiesYIs8WgbZ*wq*]YzrLB:$@MLE޾ /O^7x4ruoxZbdn
O2JϵaYkIe1eFXav"N^[iYa_fnLDWRmX04>|eT02,LV+iZw2
El^LhrDl'IHxۢR׳ qv\Ka./Φgo2^Zi//߲$
0N
p[9.e4AX7k5/XmD9fq$QH_T	,;=
$I2xG^F!^5'!d (cZ@,hO
|C(EY9gŉ l4jz~
w< q=Ji?!Xw1G|nB[+
1Ӿ2$e.mZ=Y
yML燙ւ){KÇc>^Bz ]ܤ !.HX!>|[4b#׮fA6
uP"Ѓ*O${{IPA ^Qϐ@Etz`=
Ml!H$1(E	)U<q<FPhRB<r[fhiwZA[U9 IB*RՑz mJK1p	 F&ZiȲNqHz13Gsh>}_9O'Shm9#
\IP 	"lXQ`"fU"PpL	|8+qEjY#X[`1isp`֭)vZ7s @SzFjKd[9?	ف-I /_{Ϥj[74x_[^0T]	z6&`=۔Lߋ
fӆ^7R%z;
ƆolZg%[B鶧;JO {bZgh ,
moQ{Z
^Qt4vk/ oCz7-LC6MBf3{_xL6R@B`ڼK˻}*Â Z85D[?>hù0ý|5;o>Һ{ˠyOT0y,b'"Μ2{|:3]tLK3Ɔ, thЍ$˲7B1.XHe?+P$8HQsB\!;H{"dw
fCM Evk"kv0 YcњeJ
vo?'1ڊ?	è"+~pzƾk,`qUz9 UOb4@S̤%au*s,BplGV*{1d$8(5,+\$هh ]>EJ2SYkBv`ѱ+x@7
t!
	[p YPf=EZ]JTB*EKlxN<[Wkw%r2֫BxxB^bq>Yvxux0#\i}QkjEfQl}!P529~D~d)Ysh.Q*&Xdm}ֵ2l[)wyU{{C/%G&HߊHQܟ}ܰV>>B"#@Q4k\Bc-7m#<ՅpB5
c<~

x3KvĲgg 8?hx|]y7Afy
Z`׫Cx̸5Ϟ{>'pHCx̴#`;?
*1bR%P0$8``Ͻ*?/}?c/` eU#t3]H~
uuuvTXڜfHEܷ[+|ߴ`t:16{#刎JCZ YV/F}V\4WdKE/lN8:kӋNq]j+Uk@ŸC0codhk
:|8|sޜ>Ayd#I?\Rp{M߶qBOʴ}Q/E{A
HKb!}]_a0lL=	qH@	){RXﬃ̏9erS2-A?c#Z[1ʵ[)VCzF(V,^a627pi-^]6)GlL[*VjxЀky$㶪w]`;Uh,4(Qkݿ6_Xo&PK@I	  $!  PK  5R            :   com/sun/xml/messaging/saaj/soap/LocalStrings_ja.properties[YsJ~ϯ7*BB3Ne,p_074xR^D﬽ųڼ=TzhKA@^ja*NTeYiYSkmgqֺ6sv*.]^x7Yr][5$I..bma*sJ+~gy|UZa
mkCDIT[duSe7&+M5S7^j,h @70ҦivWzj}VeߦES_4fDaOqqFmVWZiqa_x_gϰlZJ]Z5YZk@\J.8+jM	<u#[N}[CG6\ԱX8~UJ|Ɯs9g=ݦu+oWbZM[V&N6Hbt/s-pl'Zб1h3e\>m<wI"چBޔ1VB~pFes+4]%Ўu!l;w>a <!qmӓ8q	xͶYW뷴7mδaH7~ ]M4df?Ldฺ=pHW* &\B@&WڗXM%k!t

ZQ׳"VC=#iA-$xm C8BZܥ9DW.HnD@ 3# Ā.P=	A;KxiL2>Ӝ|Zy͊4i8iAy=7HD3Ň0shEB4$'̈iAHv-ƐG{-\jfs_YxO\uWsϥ`}(.b
ܑ̊!5P|h?ӳg3S),Uy%O:zo([øB9/P.!)יG| [*l9O!LXXbMH.̖8;*$,E2Y!
^7,PT٫QP![eGyHg'˹+/+iQk3 rTԉ<YIgxFeqq/>+L@V_Yt,K?ROl%{/%{@QaBza[ZB?2}d
QnZHR$CjTWcG^iW,g@Oi-h:J tyjdITܴOBDʪ]Y5i:R#%&PB0q8 ײ!:/S)Vui[Ae ;	A-=LK\'5#6>ݯ3S/B%;K^}z?@)1DD
Tǃ>
KH.2b\.aݝQErHsbe8+vηgw]wzo.}7V-wH|+Z]~LsX y+6L{s}+Xw<Kb.?xPauVɤxUA\dXUqɋХĨf 7&#ω1Y=6k#LpƊ7
jmVX,|l5	*儢F"fAG5s4JBXo .CNk9G8N:	1 `|kehvmUNۗ\rCp/jҘGrWdToxgtwCFЬ9HfD^>'Bad>FJBC2T?μMJJ=6W%+]U&N	Fyy5XV2%M9D(r "V6AmwjXm?teլkqcqښ=.j*BJM#lG:2%OJn|Eτ&w\h0
Pu-;5y4rRɏT
,C\/arݍsC&gуE'_W#ʯiǰ+''x=vHSN|Da4P:RwBkO3ns2;qqڭa种l'Yu9?d/$47;k"#&jAͯ-9
ȠWi2V$q .o`A@hݸśm9AwY&W\
5Gt87#DUՖzs+1B({zAnQ'ūr׼Uׇն?7&"1;ɗHXӹ=]@j:A%
:2ߤ7(:gt[ N`¯8>s >OM\,سnFhwqvnN?0snlnG;yަF w>xԦ]hϛxJg^&qN?~-"\nHR
g|
1ZNE*2)s1XfОLJ(lKPrqJ0(֐!˷l\,:X!,k<'kgj)qL,)Sf	ԺWmVM5pK{P<d9-bvbqO')a9&=Qr{RcGgFJCb<_,!s_〙p?m`t>&oj@*nHPYpu,v[p?6x~wHrpO1pZ'=X
vω_S+e;G)$.I #<J9	O!KsFywfԴ.tl&tS:~1=;Gx7%o!*Vrp,d3~ 
V-x=sԣs~4ԠgJ3OFyWjoVzPK_  a6  PK  5R            :   com/sun/xml/messaging/saaj/soap/LocalStrings_ko.properties[r:+P&i΃@۩LU-"$e?wW{ߋ ʴT"r,B}75y"Fx:XFq(_%ID77iFuRide
HTIyg/`"XzqE}f((	~[(͢kXnTڶ"
bgJHVu^ɻ4NrV#&w4 p0aM]fwwwZъr}VE&y]'еfǷSL,qvқ4)gd%<h+;%ؗq].)40:J+5>~"ڑݏ5,KB>}3nhHD8%eF>=<j_Q ӫ|ɿrMr?ȋfzEu$HdJ}>Z:eOp)zAs۠0p=p&ŗ̥IV8gVq5#UR8m3$+tJZ|\$`}5#</j-47??{v8ٌX W(T3t`6&fK\Y>X
	^TG<jaw|JKsѐqE  XXF~?n[0RLkIːȽ3/SBZea~g2Y+3Vry;͙Vli44)=N8bI~dȗ7slj(snw.H0g82)߅N4LZ(5+Wl
ͅwgw-
(ÍFyeFDyH]R
#L[Zo$c
,$Uzl5T<B<b	l;`scc\FcZ0璻̜.ܷ  6f*57G'S6vuj}#<_̲ t=DbqqzN
.B ^2.Rtl"g_=QOt)r.qEpoE&^-Q6˓V6",L^3]n!fV !L%9uT &{(pdpJOnWs|A\xǝ1Է<xgKz~85ǅ,Ih84u]4꘏EPQw}mL*H
udfs
L/@һaKae>rnM*<UQ8Ng	]PpXp1&gybCe*̃ZG57!ؤ<'9F]!W;	\	f`[7=e?I*
P53e"Z(ZZ:lIGduI
\2 X{C;2?kN\Cnq9!=!fGu#g{r;ވYMҴIP`Z.;!X<G2U\ki$Xnӟe:|e>L)W-t!{$DdNJ|dmB!eX'U'"nt*D[ĝPm[okIg8ӨpjP(!r?"ݔ{5f}Nmļ`w˔ҧS3D[Q&6ČD<1l6#s\^*r>VE<ܕE&TlQw*bYڼ	-j]1L;نIpEnt}Q,ºL.{/k7w%7Kݫ20ytմ^6S/ݾLbcwC$_l'Jx\)N-UUZ	X+;k<ǧQgKCh|3|hKH[c@[sѦWԸEc1AlfC(ՁNybq5;⛇Vc'=28e)M1,4Y
V5^gʈӮ:+Mj$X!Q&J#@$:_~c}W˛?L9DIDV!>hYQFqyQn]V
<s@cXlfnҵ3 s2%Zèf(
<>D|
tGI<ZF?O24=$4s%@œb<y">WҡJdb3dLFmvBu2K(+rø1YiNdy?THj@Ct2Q4Cg]T4n~n{:Zy[̊8أعwӅ8,A\k)z# 9?q#/ո0."L,yEImCF{-<MSB Ȣ8`=/䆂n1˘e鬔=HE8S<xL>Z!>0_Kr0_%7i(+
&:5X;$esy4:('*QMUS8p"Kvޯdw~58zxjt}etw}WCӢWM(fkX @N nq)WjȚ^{`x
P^~TlÞ"㠦yN7m?Mr"{J	Rs@sT4xbHgySpLTFpLFǄF
enMx#b2sTf|\GUڣO%gᰳVJ^"PR
ECDm4*hn}d<V\@ 523r%Pj-LiۈhEiĽd97nF ?>EaEdUe~Sx׏^_pPK)ͩp  3  PK  5R            =   com/sun/xml/messaging/saaj/soap/LocalStrings_pt_BR.propertiesZr:+Xf&pU8ĩ*$RR;έ9HITTږH  *OK=h?p`hn5cx)d3ZXBcfL\譈y#si<ͬ@H$L,-yZ\pe	M{ 
˒q2y]YH2)n6/FMQdggJHe""?Q|lU|pBDX$WRs2e=ONhQԡx+ 
/dBRie
~yXcEZ{{B0%Al8ׁ{}bb-_#=3Ĥ7'ot/
%~e`?PiA89`mN 7(qY.慓><MU1f2\Lj+bl)ߌ"]D&"DCK!ݼv88y fGe39BbϷWDml+ESh~ξ&p:<h\x"X#VhڨùҜKx)\>x؛'cH!Y-:`]ۈf
(5C86e*EX+J? !xάf9QyJ< 8
:'+**[SDH}؇?
lRNx(tCk]-hE$qHhD_;˄];1JoT&P5&>EF%yJRZ?88NZ"2F
yhlu=(j'EDT`-`3\s]g7	X(y(k(8ƭRjqfYmN?OiT1'pC")uFH
=qHm1Rf,P]RIۃh
#R*4ġGG	K	
ypo8AXⲮ#bV`d;\V EF^fHi
f;f;s.56a%9TOA#яNB̏CC' /PB7hAq09Inx$[st)ɾqEF7g[Ts'ŇbkNb:|C᳜YэƬn<mfBᡤ̋;CqPB=<dNmܿ
,DGWdh|@O~&1S%Yt)/w}lU샢}ˤqqVNEFEkCj:I2\]lKO5JE/z%.0lH4Й*Oη ' o1 Ǽt <C3obin6ݙ^osTw<eՉP^{qVjd)~͓AӦbb	cy04)7z8V(!2
"t̾bl̄Rwԩ
'@GvػwUKWzգJjDhsthwD)OQŤU*8uuX#U|4;2nҬ,>fvP>RԎi})NZƬUZ4S%_EYQ7\yaSp @'fOL^ar:>8(K:&;T(vvEO<ي\w[DhL$NP/Xh:M
s\O;!oMSK (zA$4rD+.zh>7"*"yطwo@E椴3dš%XRD=F|tbRA?
ݕGM0+ VrݏDo/:b@iV-d}HF8@Z|G@ˎYtt faTg
xYhDwniY~lYgjµ^-<jA}KǁHQS*5{gv؜@MV}m7Ǚ8#A]{:c2,96g3cosSOٳ߃=Kٟ
yl^֒*.93**)sQ5l[ѫ*T=T7#F3-5}w8m($q%z6}h*;.vbG5gm:=+ʝkM6qlEWfH0hT܆W;]?s{ԧO$-cT9=Nn|U>~bw;dϕ=`0xWc2Hj*,c}:ӈg6*`(i1~y7=f.+rw=WV`;dJ]v*>_Pe*.}E.ScY_IWUGrR|^L!j>}ZcPut@pg-1/bOPH9{ܡܤ+wPKnF5$
  "  PK  5R            =   com/sun/xml/messaging/saaj/soap/LocalStrings_zh_CN.propertiesZ[sX~ϯ8Ƙ<ʭ&T ǳ}ϡ˱
Bu^xłXe]fnC'ybsYV,kjey7iU3UiVF{
}e5;T嶊e@HC\<fŖAB9R><cI+5+龜0ɳCuV7Uv{l`o$-MvYc@/0n@ҮiWZhe29Ӣ/M~qoawP|zB\\o.K+Z_XAk|vJR h!,8..8+j?uoCo]vª;#&nbmJK
}|nquZ<9:n][p]>	Etsû9
?xS/N8hM';t'Xpuud:qmD8Zpa?G;R)y54_J1ĺbuڬb-
L¶Ckx.\A@@xK(-trtkFn413@x3I }Oݦ3ʙJGjZ~Bwe\~ZneonPyǦڡ bb_c??@:{Ym{ž2oG1UQ+F"t 
IVȣ1D~YE$FcBSn2Dȶ o,Xi$O@62=Kzo ZaT ,9X%HʪJF5
ahZO9)0 XOGsאٔRO_(ddW4mYX|+ʇB+
<aCId^=rH'AkHc&O]nNOnN1?{ZzAnF@ºaGL_RxZ]a2}SP:=F+oך!&
 VO=WH	]Px-
vdX.PDan\+'t	 lC[
.>f~邏,sl()mNЄFͬE.i!QwlA`TFKO YO
rZ:)7=,[*XR2E6C:$mZ8 vzE '6CY5R6L&n0y@0FFA+TV֬TF"EǕ:% B2H^;%z	cQIkZRH{Hv|-0rtMix5WT
5гL6(-G8g8}v$ We
cHM|M0|oNT{WK24CXiBWRKhr5G0V
ޗs48<Kb,5?323ܝisdwV![i>T 	=jK(`,(&}9'HͤXg H<I5uB%B[(hJ:DԬ JN|<4nfU
Ddv`:
=&4ZcX2haJa4xW[zdu+' :d;r Iw$լdSfPS$BM:y<~L0k\6eBmvK^!u8xBJ䪉[-FݓyȾJOYwBrRAH]%RB{)Y/[1I|Lc*$0UŭjU=\XkTР
Ȗ[jutqұǓ`_Axois)ك5=㩶K DԵS^8U$G=_,
yDQzn-i?38-q@6iˮi.nw.9Iwt뻷'Su#GQ<*Y.Z
O%	xy8J{E@vT^Ӻ].gDB[{l蜁8F`7yҗc	N=?[z垁5Gb s8FgI#w.Ma/{Y U#e]	,^y6$1ϟ\ӐyhN?50yY,-7φ%5:g;SjO-
^ˈ0H9S;v%8>!e/^]M}eIˏ^3YD\yr;T!@Ixż$CޔI\IY0\B)z^>C+ߩYn6xk0DM^uW#ځۡmJ煙PN.XoSo.+pPvh{xkV,1ʀ.
[	B],tWõi֎\*UpгrHw%۩F
0Mw-_gBL3M-)]ĞNYuxY "GE;4<
gɟt3	\T!O9g[3
-0s|^-|h< $~F[Dpv6T?bɷqrGܫƦO(-;
{?WIwܓan~ߧnH;t O&FVLҴם0ysnpMr'mC/puӕi^⮜GO
^PKij
  v%  PK  5R            =   com/sun/xml/messaging/saaj/soap/LocalStrings_zh_TW.propertiesZ[sJ~ϯ_vkcu WABTn˩<#,q- xo49}V uO.^\?6f۱deVm&ФYZ_
+wwEY]lQL|eM}6^\/ۢe4̺-ɲzOǢڰHhM[([;T(xmײNط9[m+
n2Wa[d[
$mn}u`RQ7+.*_i{i珫o
f
/wE\եs=_w7Sև&˗`@yyqpvեEղ5!otm
7
ܠ/P陖Km#o}?Q?p/359\K!tl{mR|UA+#4ۢ{F6\}ql1܅'ɓ x1yw9:JNRu(K>5kn5<`G|s@<  "<WeiU՝We|
.l^n\C3Hϱ8x#خ{cA҃ Yw7b\{EriQTྩ|Ό) c;T75.WXѐabWC+HfP̑Z5Zj&_achD6(X	mIV؛E+4#v3P`hZd*U=f˫*xM/M4I>;co.(W$ o/NDFKg/LT΄2tsuPtRTY4ywiͣ&Ooȷxo<]uw<;D]rBCqС*`Wh͞tH`Gm
[E$^Ϛ٬wCRGÔ~5<86XX$9q Cg bBW^ӦC,.nmRW{}eC"a)&JLh|XfDqCɑ	7q`
O%y# TI~P\~єo3uVSb9"eU51\UP2CF9#$'k=͡2~o z=LޗL`wr-(ODs#cw
:P{]⡉9	Q7xoQ2-"N ETv_U*h"&tL|9пEǕ	9d{:-{bcˊ8e*9ASP/W?,>
&p4eZѳpu4 5,g}z&Q6}s6*$D>tukݡnOH'%R~`-;Wzpalar%A~׶8KR,+WRדG7PN{03kDw;1$
;	Mg
nz!풮l?$n(JR޳G#M6P9l6y#pV`mzGPp_LnoG&*΂"jNxMo{"aFAEMnl&}czhMt,k݊]_\wm '?|eH['4mJ`4'}:2V(e 5uQO=]q/n1h8^)L]Ũ8?yjqq;pv"]2}؃MF.Wu؟⎛j> '1mbXS	AWG^9ѨT&V4r5S>tAC>;M;k4qK>3,y)mܘNNj\dDgJ^Ocg3xKt[4RddNp&ٳ]X=	:DꝪ@4yV6.-~|{`p 6/tD|,iD,F>ZOҝ9}X)=" w f'"jxx
P4W#zg `wOrvqE0 cZeO7XXcy9	\7N ÑE։	~ͳ0g,bQbų<DFv!gi4& c]ZӲÖgC	3@c[Tha8m!9uM~	}q!*%{٥/^V?߲R<z{j|5̑^AVLR(d7C<Ve:K-Xڮ{p.@VΙ;yA
±20ǦD-7};s3.bl5V\:^:+>:|hr"d bRhBF	KZ9L<̡?̫8a?^5O0mPCx_P`~8cu>}v!&;xzFwɐ3.SἸ<0r'Ş73Zމޱi`^;8q:QDOkŒԐkI
e3'ӽ>DsMۜ'{0v?p8'G
> kXh*~qk6AaRzS G`7w3cT٢>zQ|Tw/GPK&*
  &  PK  5R            <   com/sun/xml/messaging/saaj/soap/impl/LocalStrings.propertiesXmOH_1*NM$
TǉUn
u of_;*R	<;op48Um!3gDQ<'R /ӡ!7j˜K	ZhQEGskjP.PI&/@
u%*/)SQTb*WZeM/nDq bcx$|V!7)3ZL8=LCIU4z(RyF*go':E|z/O'79?IhԉxV 4zɅt.
K
7
 tH-*WuiE1_ajŖ*0!EF΂>XIr
c5K9@JxY*äJ0TAs/**pPr|maͨjʟgP9iV5f]paρg>SW
2c<uȢLTyǴH2OٗO
\yIdL52uβW SP*V6R2BAik[ŵ/77=-K9&Y.SFn*|O&蝵zQW.Xgq"QFn*|FoW-YNE.MK
|Ln!3(Bbi
),OW?gdn1iD$to
		/(ܪ4$d4)E%1[cxcbxy/cy2Јz$U+;N剰<c[ɷn}pҕ*1.]vc|ߓ6B,RB,r{RI⸓LM!jS![Ƌ!Nq9r:
[/R8f~O7cNaG^3ROG%}P䅇t^?%ǧgx֯=S|ZءٝΥKΝFl`0}{ju[/_!k"h&XI^T	${{g]^"{3ych:Ӏ'VlQp4P^J$L/7] ur⃙
d&K}XV%Ʋm MUڴ&Ob􆟬z$,7zqPALq_"SL%
-b?8<`ʫxL5h2=UOjՓ~9x 0;l0'ϔvCQP_>N3)m;]Ff}oN|٭*OJn@9pX}`(*N85_ۮ޸`98Ne<uz
XHhrð!Q,\h݇ńKK9-A FVY݅P~WKlvW`
N͹1Ы#GGtމ	oM
U1|pțA8kмQ**rWݩY+
?ZuF-<STWRf1MugUAX*Qͽ<i#@K[L@JUv)2ֹ% NC΅g  O=0M)ar(>.`1LbpN{kq{׻gtMAg=Pg/ԳuM.\ HM}f[		llkdg_&7!Q\+s43-p#YX][osL-6<VWEPuJӹ;PKE5    PK  5R            ?   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_de.propertiesXr6}Wݪ-Q_v'LyDAP@ʿi\(ROJ`
zuŲ?
KG}Y.9TqPk&ab!,7	;pE{_JaJKU2%y]2u/ԒUE&aPs|*|	]]
²ʰzL\RgX-+jŮD\'lްR%Rij~pp{{po'~:o*9ǣdUV><e\X$9{|8ɬ1GkOOd\Vp@wd+	eU
1ْJbx4Nq_&"K^%Uc5w_sf4:?zk](,l
>8`0.6>L&D/ <죦]L6m˖|AaVkn&=7YQ$
\pɜ]v*7 %VBJx868y
#WIpv3BC*rb1L"];#04
h^zҊ%RH?TF1꒛1^ȥ#ڏ(R"!%fΎd[&f,6<Gg)	f&|O{σoY/+Y
0Q"k$CjQ	HLh.y)B/iY@9׺e6r@&$Wk.QwT/}F|Ta_Mf%uDQt]edSur!햿iϟ+2JnZ'N_dR;s
&Z@Dbp;CґE?+cu^hR,	%&_Q쭜JSXl)(&Kw?`5P
@,/5JH%b*ɤMvJd;R$' *I{w	|odie?Ґ{6 
zD}4P_R~h^_~x1?c8ZޓÈ&5M4=FF`I\(ON򗉨OI(NOƏ0Ʉ3lJZR:Irr*RʶA=|	B"fK-ĻzR5}!?a2mt)CV{$fJj)s]wUCõ?w?;
LC!VR״\lVya8
4u+txA7*:sBu
[sPzFǨ눱ӂF6~Mo
`7ir4{5~Ěu7ykMammI6;ӣN7=lx%?WPL;H?>p4Oޓteъ!)[fzPI`k
w<pN,3n27m7AwjOg\eʺHWfkZOjw_ X	?:+M5lܛܲ&ԛs?ֿ>Yn=ĭ8*6sW1.ۓc40n1 %&QO;s<\ h9o+,(}w<'~ס{~^ob%yZbH_!N^ QR3#8}:L
rU&jø}~;'%Ϭ'@E83gCo z8]E(hc =yڬvCݪ-Ļ{RQ;3ƫYkJ*yzsv]6VM@b\ [,zh硉7Ȏ@ЎhqAߩE-Aѕ<|9]-|\
hhr14q҅vPK6r  >  PK  5R            ?   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_es.propertiesX]o6} :/@X7.iRv}-6`C;;b 'E{LްLlvײdkVL)R	uui,c|JV*1ǬpEM@/;Xcv!eig+@+K׀t%,(l3/TqIZZi4{xXMf;Y8-$ڶY]^>>>f"Ɍ^_eʮuR|5&o]Mr#].f)99Ζ- 4Xhmp	OnԎ= [Z$~FaýV&$uO󌖳|63lmL(Qguڵn
RU*uS N0xo!Z6S2Jb,q&t	,!Rզ^#<4A)536{$Yj:70b-8o)!k&9BI%8H-bd[\D{ϕ_~T\V*/md	߻&aL
dS*kMr;ٔЮF0PIeُ><0?ݝ/Q:N*#mxjrPoZza:B,v=o%([&Q%$Wi;++8<?Bb3J%#>3"cz/R1; )҂ӽ'x(/>C8\d0isByIeXGGLL}mt<*K>Y(^qg8::,nK^Ï
;x]/ckQ
')6v'1&麑E(,>,jx~)	/03lP2bdC;Rl>^TakզAm():#'(K돔Tc#7L(v7I(
'U°.-&^AA,,)|"_(6r_}5
t
1wfӁ~$؅ G+C
Pk+ƹD|,JEy}`p?$}62fQfZHoCH1Gv(89TTyɼ3l/Rɭ?[`hS5.Z&_y;g49w߽=ebڴro.C@:3Y{:^XRџ{o;"~`/1naRY!XFO})MbTQդ"O__W2Ɏ@ )Z{LE<T)>}.`ggB6v f~,$am??¢KxEܜOS*z}e 4ut%1'sWV7_
cG`q;aZ=
zΌaI"-t60$|҉0y?h
nW	;d"nyxۦλkn0aL#<Ȅ$"?;.
o
}5J"[8!
KprE:)kjĘ9JvN҉Cs+Aäʼ#M=x!@U8~O[SqW9 Y,Fsګc;3	ق.	5퀄J۾<1.UXV0>dx| bi]SE-]rf2m_8i*9V&BIhp{gt$v1 6P9uױ֡m.Cz}zv%f
?ķ?Y2ArzKDB˗`($y PKW2#o    PK  5R            ?   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_fr.propertiesXn9}Wq[W{ă&3<MIɖ̿)^n] cdթ۩"O'i\<[w6x&Ɉby:3I_,WX8Nص	5,-0+)KS7\?Id5$XZO\*~u3mcfDܖJ6Ny+[/fw_6.FJ+ [CQNa~*SޝJǣY5єO~TI.W78{s3(im)^
aq"8[{.cw~%-FaíW$u4Z.K,{S=B[E:fWݬn/Ue~n!$l3m7Rp&ÚDX%B-8&
9I@iC^Ax.QB>
诬lSƫXX(.kh?LIynD$К=k)fr
G.`F7.M/R"f
⷏2yPp,YyTM[
orjPJd-{\IvwC"+HQƕ+`*g{JN-mG$h/߶>VmWh$(܀q[PVpGEΏ脵{6@RS酂KNkPYN݉M<nčMgz_g/_eQ҇BojڜR:D C1Q)HV'	|zZh
xX%*)]}@$#CJ&)VH#adtoBƞr">>C|Ñ9ԑ8"bՁwn֣7BQ9}f2ӲO&?z4qftV2ϸ$T9z#fR}nhtvENCTxO,:ҁ(تGjI:#j:K_zqN%em}tru&LI*bmCpU\۟;Ĵ'{|M*I"UIB1<n^rp:~"ς-3*19N)C:|৙\<Ga{Cok$sLwϾh[3(ރ%0g!ɥ0$RSuYʧJߨ>B
6l2KvFSBxۄY*nFqo?ܳAV!y\qf%.a](]Y'\&_P[@7$_{oByTG/qQ	Clg}MqR 0O{O+]sv4<r?Ǜʸm<vlTGU8vpDr3x0bAH ]@&%^w
tKd{AÊ/S)Qk2O{q(?+2$tͨ5GqϭLsנGT-zNKS4a+4Q0pE{	]dxUa㨋 ^B3ha &&x&Ao
B75:<E0xb$x .KPI'቟kl\8"0ydyZGY&N =TVkNP(9VŶ":QM	a?0^vԻ(ː b<`hy~q3]ֶ>ל3;h:Ԯ;/@}};:b_S#.jjUы!)2w,ߋ2EPtcq甊.Lw)GE/}ox)G;bnNeĦhtMHrw  z@:(vPo5,:ۇSⳎPKCW    PK  5R            ?   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_it.propertiesXMo7W-PdE|pbu&i9BRrKreA{Cڕ%M)7ofZ7F.WXĆg{gxuy
2XH%6cJ12#0kQfG/ 1zixE[AHQ#@#k.\[µ2"
%+إI]Y?36?,V
lrI+]&L))uVvTd=dͪ	||$B\$R9{dtZBϣ#{q+ nM!^
@0N
8];.kn4 K:$V+ctrDR0㬁jEvˇL(QeUkݭ?svsLYKx,+ܼ
k%'<˔.	'[Xǜk
6	֕dp
if_&Qe0$8|m$qȐRךE%aZZǊIIDԅ.uJ$euiC# ,dɴ]u:PVYR;!n8R~aY71I4ZAQ*3A0Ɖ{O[/R_Z|CgTN6
jkBp;C΋9{C8 %?zb!8^JK"}YEl4ϟa5!S6J:dFд\˒F9:bou)θcDx!V ܸg52ܵu@{
61+[QKeMT`!|>$F*mzvY]H	u IrM$+/SRoӬCyIO0gY8$mt~+!QPzIy憓$<4R@")Pq="Kyp⋦%yE|M$d<!0xdsϾ91 ȧQN<cw
']=塾-xBED۞nɏ~]xwπ(m='QA1wE/JA}GhtA~ED!gzpx6mgBu>ܥ#Qt|S~
c6F*\q2bیormh6N۟~Oij7Iɒ;Z!È!jy+@̰mQrxÕد(CSR}[p1yp3|p3>z+Voݡ*ax[DͲf_|Z#M*h_#ρ{fGӒ/jxߠF%:` f?"ԏQg1 l&
׊g?5&N
3Wh++Agı+bZ52yz7bq߆oU|İyuY_vY'xbAsIԿpCCH0p("o6j!==|R5si<;uÆ4F펶ȵejrZC0RU
%%6>,1I(wM;ϛxQ	o$0Kt:IaoAgUr2*xu~qH6$%xBЮ8;ldetuֲػ6bg1=GIv`DJڊbr~5N-u)'iɚ&/ko>oQZ?;ZpGmt$%^ˈȈtABaoƜ S#w|톾ej)Pжr6܊NْLf÷"<ttPKBz    PK  5R            ?   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_ja.propertiesZIo8WhEj1T0xLC.r	PIZ >*StHENSSm:Kd+&6ч&J*Tt-J,Ҏ
Z԰5,7a7EvM}פ[16H]Z=
M`WӢLoaYÿ`ڶEZ,gekk۾+
`@a6EA `\0`M./&1߲k/Y^^[(>F^-.0XB¾Xiγ3>7~cm7A
Xر+X8&ȮZtSm;ݕ0!nߜUM˴_UgkΟVk=
}|a()6sA 	˟~i|gڍ貴(kTޱXp+'~e?Qlggr` m
ϞKX7@йhK^\ԃ=ɉPFX{`	UDT/b$l'鯼$<DSqaUYmT2m$iYbSq\{VH0s.P9rU ~csUmT}Y]{˹B$(LvvblJB>O!Uds?6EZ8c)W;ʻrx4*
{"i#!5o!&'d0
`n/\QRN|lX#fS95.iJI|i4cYX*BVϪ{VB ָ&q9.WOW{摰ݕE'b
\ovl^N2IZ994da2͘KvTV"PO.p;r(<́r
8k=+ڕDnh}[GMx2yanǊJuрɸ%ɞap#"%|C+ڏeNOAdsiw*R0eebXʡw0lbPJa$<Mc,Bƽ@o
rƿz0![}BB1ǕĂHR%uR0<j,PK$_[K-lE;O%5,q.Qhy 5$͵.tgے1m bVcP5ՎDpV>/=N𧁼cUh[V<
ABC,V"Z>ݝógεl{ezKmGNT9iTsvңpQe!n^TԞW{
$t	npǂFuiQ"H7TD4d޶	MnW7ݠZXwѤ	eW!v5B#-@5KmRk51ȷS!a?M̑#<iTq<˯%[j%!62kT")q"f-ԟ"zB;JiG3rܤ(WډD5pL.YMRLTMB$$dE/qp8j0M5ڣ~݄~o$7gװu(2|Da9F`o9S+qO_݂IWm]JU_A2H] ͛::bUlp^H!05'k{7=ZPOF]1ن_:陆xʼsųgܳ$8Ţ0fd~EЌ0<;B涿ۿ^yluiDnbwb~jjSY`%zkBSOI`xX{v^PUxSk)~kǏ?6?v7M_A[[(]-S%Lö́P`yg{$Js7D
&-. o8r6 3+|HǾd	Мw/OY}V
4u:p|dߡvgM[@3-mecfށf,A\lmo-sXh*d8gjK#\Cs[rj]l_la3ȟirg\ۢCf&({5ַ] PKo~  #  PK  5R            ?   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_ko.propertiesYKoWfhQo¢t;]FX,sHʖGm/0#G"E~윉jTwg<c;6dYj
˖˼ȳV6VFrazm2kW|^7Ywl
+yVgyvr!k|iUKZb6/M#Y7mnۼ*M>%<* -Ҫm7ˇKuj]˲m.墸綵Ym(?_-.>,`Re=a½Em ΝNddSmL@
uˆ$)llMzM w)`¬ƌ6UVnœ%ۦ̞ϿL?&hS/[[p/ĉn"<gy8CDxyA($,*9*3aFϷqkj@66	wp$LᚺqOI"!x8E7?akYVt5&EZp8#T8J!8I"H)\{\Kjd5S!#gE~HOq_P߉Y'-lh8fS'3x*YVV-
t5H;gE5NWX
0T櫼XX

T 	'W%]9hGu'24lvAR큿DNwvr+8He-Zf1!y6yFPф]NSq\g&Gڼx,e	lG3IG3 Ɲ46ͦ[r0H:^
T]t~BrT
Khu0茘z=\ZG{$	xcZfG{
X;@G<H[+̼2);:R%e^C =/Q⸎AWhQoa-B_CAP>[8*f;"1S]Zi 0xE/ģ-hTl-M@~yzbHZUHbX]]wO9{%xf<J=25n%A#N,ssscl@RUJ0~!W@jLWN(mϨuWpC
n21~ǀt[I-\_
@u;9WlD74dD4ٷAvIT߂襽jf݉^
:x=dECXBm660&ѴG`!.Oych
bSDm7n;[xcCkXqiD^bq(v/u_Fڎ[at(g";kr14bpt*B}~1IjXx5 <+?_AZe坄 c+=ch~[m؟w+cQQDF1}ʰr[GA*ULEih_E}6\TAʫCD?FS<5NbxUSnc2͕ZL-@CrӬpﾌ
{}ZE{&'*j.ܸRF=ߦeG@EeN4=s(ۻssl-k[Q]:xv\9'2tIƀh6 {tPxtzb;P
)fxS]m_3	;z}8qaSv3<(AZk"o
YjPkbu7S{wT{{g u%ʽA""S'(%(8q<PTwI
NPc ){ALqƠN|n[@'^I5͖Žuެvz 8z*̑COf
:ũ+-bο&xFQ&F(ENԄtFJ$߳\V6-"36efL?P5J׾+k@whQ}&{
PKQCg  G!  PK  5R            B   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_pt_BR.propertiesXn6}WK$-Im $NNC_h8Dd{7-]0K"KLNȍ(2VSN)^L0B\*&tStB &iv,O&'S5|P) $dYWũ@[n T9SDa[:wfk1\Vg]Bf<<+RI11a^N"ùˬ)Ye9n6M|pY8{cr۳ٍ{}-i٨jgq92WKiMoYlS
ĕ:Mg]Nj2&?'L2)m6}Dr6%7Xv#X-(U%M"dP%5~kӻ$Ğ3UР0#9Ql˟$cgĚh'[],"|<C" g&7dv]-+L(hɜ;zK2#km<wQYhES[Quis3V2!#cحb/BRpL)k>8I!"e0fSVp'66^ÞL/TX#ۓ/co0
i3Z ''A3lKQO  )YOޓ-3QN(W46	*(*cb¡V1c6֎7.T(!(nEϹY+Cx"H+{X񘪳@j:J)QeIlPH>FRlOU@0u8my0_&
ښ$EȸB6;Qn,
+"Rq+ٕC̱A(UCT?lhM£şY<oJt<ѕrm#v
' 44@1Q܅m<!aI*̽kݡI8ܓk;[drbTo[h:]Z؄A%rH=`ܓRk'@·FU+r#߸
f{h  b@n^&DtX;Ü'if/(PZBa٪^1o˒Dz9|w'Wm/0.toZ A[(\o0#b!:~c+
!9ô,piWnöl\;rkLkty)
slb~lw"(ns?EԦ ^sdLEK9;<R&jİ}XETPDJWO7>-.[HA{%l*`NT
G.}9n?
=-5F ?^vlF8vWN4QApKaU?^{nU#B%3%ioҘT0utj}DVcW6	-t9t}w"3I|[pwG׃r6ˇh<.Ә1	[#}9C^(BTM<;kp_Dg7֣)bL	lMhcu_-a"*=:#KugDTp&}ipl%ޫtO%e.}<цk{\C?"B/oC{ƹ;LBNqv`8סV &˓f87Zjh6hLJKj"5z{5|	l>l뮏7
5*]ꐟKWG4'UWw䴗w^2*0(:J&bjE
Пac7,]2W~wzp;ޮfH|_AǞ#|[a_PKN    PK  5R            B   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_zh_CN.propertiesY[o~ sD(%tm!/Ed%,;Ë,d עfͅ܋YԻxt?7K(&[dU~]7ZEYdl2/K^kI#[<ܙ]?6EKvMd[|t0Z]VقJ0HW]_w,۶^+ɪ,v$ˢ"G$Ob! `o0Ҧv7OOOvyƿy귲kW.uvWէB67$eַs6õOw}1DlBˊ%kAmI?Z.u|쀯ss_/,mw/v
K?%^!w} B>'3w=O `ʴUVUu
ͩZ݀Y̣ >.`~y[GQκծXo0 K .iӣ0Oѿ
skr |_2DskZ9iR
x"w'# u`*4U$/apM?|4Pc `wU;U_NW[1K.^4YPac[ ;aD]2XFeH:Lզ(s!N>wiNyFt, Q񻗠k7;0ǃ?cN2 ,
Cܐ
:KR3KqHџja"T|2'Dl,M3;z%0^b7>niVC:֠zd	E |Y hYZz(	Fl%M]ʳ`#0"Ō00mm@S9-.SaSESqJMۿm5܄pA*a$21@0T49
B0f"c8
2X9r
Y2!rhSH<F ƕ.pn$@ԫdŬ#˿z  VZB
8Uzhn{Фaޫf-`b[S!ɽ$k&>]`Z`z9QXɸҨKɭ]kֵ{V:>!&Fp_Mb9[u	֯+dradX6lb֩7	sJAi13ϬqӽtѰS-VoNనLz)Bi%a&Nz,t()p(W Q]ى7BBGջݮnC_$a
TpU=55q	K8Ev.fyں02tv4_c6x4n#bꝆꐧap
V,7Y A$! 1DmS}Sq~&lx9~H@ 76 v\Ϫ[{J2,]Ԣ㈤gR
0~dX,/ИVΉj籽hT?e)XnMYԕ}psĨRb(H_w2AIlcya_vvA8dybuv>с>Xe5ɬV32Džsמ$U'O2jzMn~>Mp^?$
4-4bWʁ3ŚF){G|?Ho媮F7w׃URJߤSsJk1m{mY|L" B(0JF=t26.鋧;hSQi.w<ʦ-`6VgW0)~6fbR`@ccǛɅ{"8rwD5:</'Q9Oպ>ّ0"XY6lO9j9)dz1vT$fTy{dk=0>ef6PKfS     PK  5R            B   com/sun/xml/messaging/saaj/soap/impl/LocalStrings_zh_TW.propertiesX[o~ׯX/ 6M.@RMs_hreHF~fvw(Rq$L}v/f,/M2+KMnߚ4+KnXѵ,]H;,*K&hv"7f uѲmS?67n
Blꥨ$4EZF_9|ߥE> \_= 
mZVEVVyvMwE]"2K.5{i]~zz2c5߈kE^^,خJ/]i9,*VhnXe~e_%eڷs6õQ,ںo2 
V؊+DpBҢj]
vm>Gf[EeRM˴ll^Ug+_QA}-ë,-'>Lw+尉PBҪ;3Qo@},9䶉O~KA?~G64ύUf!TQ}[Aύ5ϵb2 2s|:1|xϹ78v*sa^JAߥe|@$]Ir	@Tm$Tfoo	>I)ܪ6, @pD}BӴ?k`-m֊ܭÂ@|S.@'؉玀C>JdNk]O6dx#]c|HϴLDWi_BH1'<PX&
mdDsÖb䈇 	I&L=mE%d5!rIBUl5ͮv[t.$Y
~7#%&z+Q+Q8Ao.M>ǀ|i]8ؖi&u]Dw[Hcfu!~Ds:$/B%V>v>%R5dU4g*Dh-7RqcGRncj(OA
a4wkFM9t~q#Kk놺zʭ¿{8s(vFPPBOeqa[mh֕[gzPG1I8	G ~$ޫݗ{?rZ`(9Q*aiɞ3`!喖#,4h:=377Ta3VNBH {JUwi'C# 쉂SKqhST;>hȂq|pГmSk>BuhШS)0̗*@3PjۺB&(sM7XQv94Fu%VΒQSg)K(Y><%20ҡROl"wp~9$91 H7Lw}ӝMiz`ȜxAD̮?2,&P50^iS026bU<doׅQU*tx}<P	W/d}ZPGbE
X\CFpĺ<1J~B?]s4뺇Is?<C)_j 
' 9MlSΚ1P1EXt|CxxuBy^u4X(T\!$zA4
aMЭN'/	9~l'Pg9urE̛(~~ЕHn(Ŷks]ƒf3K7:$cxyWu58s5
K	^D'Ot2u98; !	w<@|;bwo	;ö`۬3V.NOLRS:GwN#:No\]wi6EIlmLȺ04S7iK?k-Ϗt
ϐR&!V+J_ժ>Сxܲ2mRMi!"M<e~c;X{ c%erTl6?PKF    PK  5R            <   com/sun/xml/messaging/saaj/soap/impl/HeaderElementImpl.classW[WW&p	 %MPѪjXTKd$g&j[~]ŮvvM]]d$a9쳿˙`ߺ0]HAnם9vVؐqt"By'
.4W]AgC
l͆56u3l~߁<pࡀH4|e)H^:?,EѥXx*"#zCZBklHSB(&Q≥xd6ku[+JQxT%+Ww3&Ѥi<Gɚ&3tH#̸,~)WȎVtp^}LIZ+e5!-gI*I);/6v}%	8
]F r;/䛀/NC@<.`
RR]BC%C):iƁCH`YUS#yZf.8#]a$aYMx<%Jӥ|jBmy)[$?[(+q˧G8J<8Xy`=+gmtVMCVͥM8j>#r+!2[?\}.%oNI\\3Jȩ.ֈ"91fXCVޡy'vkpEg2[/#]R|jӌY١-A6f[Rl @1;Ӗy&5/:: դ|!ü鬸)?x$C|$ 8?aDJ
c">'pxbȱ +|/,eqSa[-	1jƧ\IMToE|[2'E#"U9%q-7"NQq-ly-_ac/w~[jj)RTdIUtRhjQ[U8P3	8dfY%Z{~UYeBU)W%(ReamE7XËJ3 {ash*:CO!ܶ_P3w=6mMƁ>4Z.I|Fx0gOGVt8P9 #U;/<#qng
|ʜO355|֔3aS~cdO`y?:~ݸ74]q7?Eheq;QOq8ȥrKN7eQApiK`'A}'0i@`mp/
/|v2ߴŉsh fĩ&VNtYNt!)	lB!1Cao8A-XPJ)*9C4H74;C?X]|+NeM
MnSU:zi09e;Kl`dFph!)B)Y!4z)׊V/,yW2ut={lUP9WB2EAo*7*d+wonj_`;.{5Z^oW'-'SI>> 	ubx6w/]O?aOb]dKGze7J<
PK=K  f  PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$1.classTn@=q5P$N
	-Ruĕ/w(H< (ĬqIH`hΙ3~5gQ@Yn`b9wLe8wʛ aa=vm%]PP@VV6}AE	)y/{|ϕ	wh?t7CXmя8POVhxr#{!J)y}|Zbkh
]Pd<40hh	8r)kSTi"XIP7#ntlTOWt'z;T@y}EpũFR_lZ~7	h"Zf쇉$B{Y(ጅ"f-Xp;:+X$Cc"^W(i)^+
2,T}&:(ӵ`ҝm@'	I<=΂"53t;c0g8FY	9z(l	6 dfeu%\&^C/fXgN]|@+w#{$'{1d9sq^r6([N}#fF)O29Zu74pK.hزPK07  m  PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$2.classTmSW~67BX%`&uRD*bHj,T7kn(/K?ഝou^3w=<>9_0r;0%	ƴ\ݐLJn&0[rmd0!'	ZTO iK	tcZβ{*x jM_Aw~opvE/iWӞ=;!Q-
Sӽo,Pq7|[sS/\;.lpYeMAܯecsx]7kuKZ&l?GkJ6mӟQp5u
q)ӑ:-
ZIy
wMZZζ;Gx^'=<&xfB>KZ4/ŏD{%^*ZDݩTKl˥ua^4+6np?aJ(:
,.t;q
}IU!0!
8F5|専U
o4\T|1H#qT<i\C	F^p
4D7[ݣ,KTE,J$)_+qQaJ\>nr}egA޺gZ{;:S6cOA7dhK~sZ۳Z0ne,<hS!Dg	&	{_UЛ:^=qK@͔%/M,Rm}SCM3H&4N8=	E
ӪF ݆9H
XFFTLf[ 
5F0BYIE!viȏ"A5 _5FaKI8M^ \hwHfՉ^@"Xl	@,c5U QɰQ,ݺ2;5Qs5!g+d[
fΛ2oB$p=:~CtlG%[ja5~LXOAfك͠Jj<$3݄IK} 
d,Buh?jgr;!1:o𥳐~HD1xM`ku_$	4 PKD0O    PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$3.classVSe}&KPC@ZA..^e7&eFWLKۃNmH #C2.~~|oBW2Ech:2(4Di0'yWBWcxY	Q4c\BɲE$}	H114gm'є5,kC=-|T]bnΚzA.fn2Vi|2
ga8-ZVT
y+n(ܦb6}akFԷBLSraª,CE,ݙ&\gUАTyu3pL*CvIV8׽ZRS%ߋA䌼zE4(Sa*OwTvƏ{ Cќ]t4}%*&YK3m׽u{M2>q/K2zpQ
xQY5|$ẌXFUӢR2>uQ5wFTs	_P0t"`z`gvK7=öa̘WM*HXtrsç
hU~z0}wα3-_T3g8nՒ9
n֊:)ҾF0'rӰ27=_Hǚl;޲|,[~`>-cTDc'[
I́p珄j2=a^/ Lo"`?]|O$;
 QCA/i_\NvP~!~=;|8swA>Z۸eG4
?S/~EqCe?F_ dd<!.N<.w 
wIPp$wD?DV.OiNr4ElϖFB㒞a\ 2<A.Idϗeh"({|!Z5A\I9R"pj2)
XEb=Jb_|oWKꓩ&bboC1fuD7
4!. )&!Gl(>I4aqa>Ġէn$;h0'Rf
GK5xi:EIo.PK/j4  9	  PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$4.classU[SF8`ȍ`;̵!uk.2KG%FS
>$3L43}OJ{vcP{={|Y0gm=
=0Ü
@łEPi=bYc
Vˍ(_͢U|Vu
RiC1!gku\I۞Ws3w
mvN2
:K_1~-إ=h/V SP0Vh32NY݊N#]ue׸iNAsk
&G.~<A,d%&-0}[##dE%pZN\:3AժJ}b#XʥrhZ?救R>yϹ<!4
pbms[!Ϝ5[3^ݷc[PJJA.
ޖXя[0tU\ы:ĐEN,G)h3ӦSǷNEY<%sQ>k+׭jtxy⻡
O(:cx*}NyR>jSO[AT楪lEV4auo&L"L@Wo\O)-?\uضݭ)9۠/!F^z=FVA_YnHdR,ُB\J5ZrWP;)!R)
^M\c}MFaDK8t"ĤW p7
q1oUm-tbr?Be`_(XL@+  XivlSl,9?&"DЯquE[D+tBxfrGT$i
t|w|zά@|FHqIAo;Kƻ0"0*ˠ 7L;߉eIVDHCt={yy	!Y¼OT`J4/ Ut$++b`QPکO#$xE7qNL#nPKxd    PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$5.classTmSSG~,\VQ$ElcCP^_v77+pFplgLQ/g7@	)ܳgϞ</  qJ:q?PJ|7Q|
|EL10"d2(Ӹoు*f欁9Rd,HghK
a}۱R_Fg+'ǘ^zu-kV*G1MrRK{(^tC81Wg+KnΚ=͑}t1+KtʮYp,DX%!֬RQ[vaݱR4'oQ۵;MVƩHL"YH
0/<[%W1)ו8R:qzaȋRF'h-{	fh//'źxB׶xA,70!T	NTИZYYo*eq"3ŲlUru%fR⪁EKxj2n1%zp3<7Ι.0Qxe&Vg3]tZ))Ǒ9쾬3ŪKɛOEW*e8i<B]j%ފr#vğ|þ}K"+SGX}@L2B,|&^KMue\kD
]vѫל(FiV$mPjlnVc,[O_t2A3rd;%߁'ovQpP$٢)G8OOч:O {6G!=~FxXG>"}ao
-&I	Cv4
iTUal!+NB?RNz<('KOq?C?Y.ĳ$ۅ$#S7qF*&(yƟ\)(]|ĒhџqzZ>(
º[4|DvvBl4NӬ;Hq#SPՠnxOmg>eZXwo15G1K6N
桞wqD(3h KHewlWVJA?|z;Z{cYjPK+I    PK  5R            G   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$AttributeManager.classU[S@=v	
(wTR pSqԙmSi$)tFp}G9~jy`l'ݳ~pMN
	r[5w4pWgW[\
0!ĶpL)6M5=PHpkip p*-uBumlƂl~
E /Fk76sΑ
4Vm1.}CnY#k}+ZވmZYɜ2PًlQ.=cu7ߗ=vNNex1*͕#>mnyˑֲe&¸C |+Z{C*]OJ1w<i5]vd2@XfB1W-ϒlZL%5Ї~au´2ߵ!.W70jKJRɣҩdNa-@Qsގ}G60JwNDJ,ԇr*`
2Jwd*lY|%j?AϢbE?B~F8Ik})f/1W
Yt Gϑ/{eppba8Mg9KF1LQ*~RX$݈1;9>k׈i")zS9O3T!%!RMO]s;n.'zg⾣CRT=1UF(Vk*_DS]h/M]t
c)')W1-5Tx=%9KV=JeFq@q@E_ž\Mr$dJeJUuۘCPKƾD  x  PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$6.classV]SU~Ne%YHB[,Pk
|XD.CXٍ
zNuzxAg-:5:gw	qH&=<{nv+0E7&cxEwJ\^eZkQL1+^
d+Ȋ֜\~@*㚌2	ucJ[Ewek18rsZ3tf7MM55)*њM؃cNQࢮ*Vrvien7,ÝdMZbLS!5,V	[%1D?V2ŝiSTNЕJZ╊V$jE6ԊUT6HcQ^*9^s
C[Dl7MO<?j'T@[߷C]OT$]xUvQ c/ٛcE_KZFܪCkjxSvUG糆PhiXXiW9K
n-SЏ
V8G\GLMeװ-ংw񞂧pJ-V `MA{Og4yQ3d.o 3 AG$q#d˸ofU)ӜY.1?ET2S=Ovh=")CW2j9c@43֟
C'Ԣ=WM/-hEL x|-f p ezƚAj=hGbJB?u+eMɰ{98$a>%j܏Eizw!Bo:N
H$YD~Z4r8K?D(lamDmHi>gڎ0A!,)D13tgسJuDw#?!`>n RP2y0Aq1 -
C< ^<+[Dy!dӃ;
1=2wv۷ĝb
my
#F?,}tg>Ǩ&/1#}+7F^&by|C&,JM=ȪN!u2.__>O!Dv"ihOp~mD"w~lp0X<1ET/-$ǶrE
P"BDKx8Vm PKY    PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/ElementImpl$7.classVSemȗm6J[mj7*)h0\4^e.AG|C;ch3=/8㋎VϷY B&z.;|}!>EZ1C=v| AE	#xoG%.1o^%dDLxYAJhS"ËxE@W=SPՔ]T>  æsmuyԋw+зve""+opi]%KY-JQw]`XU%Vⲹ54,0ܿzMDs(E(1kXT8;꼩<h9:a 9cY3JL:m'O[.}]@}S'YK;YNW㼪NA';́b~z~I8ќQT^I3L%`MdK%G
0^YADYi-y"'	q2N#-ceᘌ|89\qU5\OzpF@z
hlᆈe$R#>;LLٹ(jgؖ;eLS/&eӷ%d,˂8ݝ*Ž	\SG
3]Г]5L٬'#V,U
FKD:Mͻ?گ*鑙KVjf~ų`XKԕN5ZoUkfUp$;\|
D41oRbVZBQD駾 x?SO)i$HVTOBLԥR#2XJ(#wq߮#ZttC>Ag`}'$R>>Բd;8{ICĸ់IuUnȾB}8[߭\1}~""LxK`>rG+TJ _C+6!Mԯ!F@#,ÓH<m"~^Cw!J#ߣf#'1~7oU	#4N
A+_(O{h"6[egCr{F/!;`I0Q	wU8lOSY	>1>B&?d<rk4"Jc'ח3,SJVI% PKh~s    PK  5R            6   com/sun/xml/messaging/saaj/soap/impl/ElementImpl.class<	`of=r!	!9	ȍM."I6f7zkgB@D^mjjkjm*|~mevc޼3_^_$wZthPJ5gS	`$5Oos.|E~_@-^@yN0 KC:|=};4Ż.'5tv%]#z/^z}FCNϩ5KjIͿWSj[j{j~u}.j~@
S#ѨqPƅ	75inANt$^dLdJb[x]"#\s|_u!+
ꁓD!
En1pbhCP3qnQ=0OMY:Trl{811BTrKTӫtg5[Tl{.1-E[̠309n1-2b[,t3-tZGEA
[D䕐=B$Rs5,u}%XJwєw颉?[N['Vн4.q[Lb6j4jjZr
	F))XK8^'5!TԄI%z<XG]OߣH_i.=K.gQsvs\\Oyq=C:%. qyqK\.qĥ𥸌%.W%p+]*-7$BZz~A_$6b5Lz7č$7ySfDn+6q;5wPs'͵zH].q7nC7/#sKaEa#ąnq5COd<LM[$(d+EVQ@#~MD:qǩy=F$#**)zj΢x2bK<aĳn[/Kn[t@#K {n$ݶ'tZ`@83p-h=⤆F޺SF:a|\ָDv͡|4'`09Q^Ze882
tUutW.lv;#Ψ6:hjىw]`|H詗օ[+OllA$&^j1^p@=&>0D{P?=J!:ƓWK<3zy5Yh5(\:ގP>ͪk6t
v/jҺKmtnj5mၐrb	bcYc)q^݆\ݶomc{mۂ-r.H-K#*@@bg`W-ԉLvY%3׎D(ʉ{nؠXWgp\I]N Wx>1Tє!$@umaR8*Q
ld@7uP
xZ;ɦsf[g[dJ^,Z._MKGs۽mDB	v1yQ{	DW$L%nZ?.Cp Z)zH'3NW`g;MmxA=lAw-wR*-RKlx>!1j#CA);#N#$75m-"mzwڑuF%StCXllNtu;@2²KOqQExbiNֹmh-`Pάx=3݁rZPõJo7tu#ku0!Nh&J5+39FpO.D\s0QNP(k}L(q#YCq	Y
Έpʳ;Q c(mfB.ڞ(Y6ՁRx
53c!1t8<7Vl&
IGꗠ,DH#;:@gK{~6ON{õϠ_qEYCL8$%g8mR"r較X@{;9Ya@b5pқ
G܃#9ZMBTMqPB;H dk,:Tӟ
H;t0؈XoD?Lva|F;@5(Q-\zS;nMX`"ކ9Z=;I˗Rax%ʹP'F:fcW4L53I~"nSڇ\)2Aw䥊K1&04Ml.|؏!oFGtY&T:
ߖ͌1rJQ\݈T$x΄a,a:5>R۵Nb,xGUKbbW\łs>
F0f1"b%%\hdZ74l+ݱTo .5؀Yjp6Z>i=pe7Ț.5y̳=aۭj^hݴv̕)tnww`Jf2TevPRک"r[SHܰ䈬
 D&n0,nF!XnC`*%tmo$BaKtUIYYQiՐr~_u;[#kdٱFjs-+M\ܢ.xC/'عa5lw]<k我_7l>	rT,28IɬS]:5r(Ԡ]YcAОa_= :)eV	(w:,'g91=!N߰!VtTʆO7SkD RGL!mX(25fo2xSWQ/,XU\H%f;#
f_9aҶrR7y#H*tŘL:m̂7
#F]ӈGCݍ>4sD	p
nn+'I q,ljgeH@rx2U	a_
 zl03l1rN
'vU$$ёCj-' 22hl(Eˣ|;K*,M

!a@QRIS;J:zTe<"a󍶵=CD3a,̣9PĂmaSvF5;nn֊P.YqkAQJb@K6M$x`+T εDl5C*3*zyvm!`gԭ[s5 j;WwOfkVk-٠\e MY: $ohil*v-b0f23֏#bapcJh,YgշzK-n$6PV%g5^_`T̬1ǤĩN|x昪*\taVgslnWPOws6h-+HT:;Y[UYgm0jt{])YuvmdR~ֳ
:1whY%4z@#BfPp;[gwuv;{l+#'-aKu.GCΖ/:{@>RF:A, yc]M|k:?m\@ {|0@.>e&YQ&[w+5uvSnUg{i&Dm;#{^y.f:E>Z	yfv5q=ٯ:C'7:{=ou
{./?u/^g+ى..-8wQUU4qPVVW
l|
h}])ePiq|'0fO4m±K:i8*2`)ūC	b]|'l Ndvv0 KM,kP&dqg9+N0E**I7-]}>i}:tfҤi?`arn$Ib:D;'):}ڂ L;ǯDj*+2W{Z1E\lu+S_bDʄUWd/T]]c	tGRyRF+&Ncbbu7g==_>,ƇP>+^yMq3"YQދndMIJtAI]!>TDBNC5J,$4	8KUZ].
i<9p|J`W󏊃kN5̀Tt;5
QȥbJL{PT0B@5FޠZOSlR%P/l̰t_+/Fׄ~5u ߆u4nʷ!8\	Lgגǹ\sh~/5fP1 s!wc6s	]K#ɦr
oxНq7{Ch隮kZγ j䠰HsVO5StoQ	eaPe#5|,w(~hZmy
b_?0cg6Xh-<o׵|i!a:bV{`
NhP6/8Heds( 
:令OVS$E	REXaEuTHhb~=h*4;ZS*`K1&_^A*&AB,F:_AAU#0D:I*INǡEkdQ+d͘S*Z*Z(đfJA-Id4FCevDwNnAER_S+7,#CX REmhaZQUR2 M;]׆Ӽ`@n
	]񡌜:89ڥ'^x1uTyV>ôKi6
me)c1;ccܶ2z_D>ʱHB:R:_1(t~Qw-:$r+Yr#K@:dAUUVM'p-ѺVB=ʪI&*hǩwZBP .ǐS>*q񈮪6tE6ꊪ
WZzPP](rA
d4|Bz|#1Ϗ>}Z%nRPPbK*0&GdsdqgUX^R媶ֶ,n	A|BE5ɇRYjԩP
bIg]Mdŝ
ߌC(aC2͍pu`AP6Ț_-.#dsKkm<HtÒhZ$̳9'K_>|=j`A]3CG\~l]Qцq҅-DRCrbH~;Ol3.lJtd [=zBۯP"5peY[j`pA!=6[mkg;8?o9:1ΰ4VQp񶟯-k$G=#QF+58*F|QFD4tJ?S;&m[rfEڣ~B=
FN<l A"~2w'`-
m _%.'yz	>{S[Jڃn٢_/6?,*M$7#*hT{ ~+tQ?SۀTT]9}'f	k!H6 Q.І	j5	lJ|$5d;v*`m
`>
$ Nd6[nZe F98xDANO[]>/h8`MҶ&fm2Vq5V&k4_/}D2(29;!k;B	H@-dA@= X`"4X3aU\q$ݱpDaAX-WQ{g9ʺA ,ȘB9chUq[Ȓlbfsn#'8ij#6~/Ƨ0(q-LYp=U}eL6ȆS$bc	~b*G|')Mruj\Ce.^.FCٙ4\,+nڳيoGjݐׄsq5_>oH"[33w;WsNJHQ	.Ita	Mg)y$oq_~0پ0Է
3a(F20HQhIk/	p'
&j^
p
*е0YMdgRe-C(\xBqZ?(B	b46^?mRmFܮ p#L,M3qf6
q;^vG\xR`neDp7kBJg(>vxϠh-S\z+PrOcEȯ[a(p;L;`	`ځ;MBDB]eĠIb]v9g#/ Dk]\bW?Uw@SB+廠UjnlWtnC:~xCÒ61I\jimw
PikF|^ &4?(KhuL\5vEj!*.lѦn|>}%qB#LFHd@ȉn:BH8^`e&
±R9d'Qb7ͦ=tHy5JN_$prLS?gQ&#|${V妃v/pڛJM[hn-@N#o$5b&na{owm;؝
)u!}0</qS˥yGcb>mɈ.Z
nU;-Y,)8COmk:7[$q>/5A!{&G_b-9=e679~ۋRomG*'!ǘ-ryIǜJdm!<zWQ7^$\-<;Tk[_n2~q̥ <e{M
M>IƽG-9<r=l(N1"(d#ZogHl5܀yǡ({L-E
FH_DhN%ew2䞧)'c6 Ĭ!y@[{JiTF혤hQ{=.p#À1ֱZ#-qI	8= g"{IJ/ߦqɼOo_a*Qu5&9iq ӓ$ .N,1OxM*y`hX_x[..Ǆ_y/4rJCW`ED`w%&%21c#	1s^Jw
;q8+P+`e(kwIM䦝f|ZvBqsՉ$&NiZES9&	s	F"f!	q?UYŌ mko1/ڶyh
Dzf?k7AUЎ#}!0arwI`ʷuY޲-0qѯFAkʹͱ# LC2<vW?L\ܳ
r8Scհ]'`-h:Ѓqzvhn2,	%P~/í0QsZܫ"HdDk3? ^J>..S}V;7m,ٿ}$U&)Ӑ~cU&M+\-mG5Jr'In7JnؔIy2rrՉ"
K(/Ex盈7w)Px1GP9S#o``m!^ldPy[4y]@۶e+>8K˥ ㋧1xLʥ5lG͂,M\
;0"'a
 `W8}SX>C3YHX\werXD.j?%/`!L30!3S.)OgrT "PĆFG'HV*XX'.X:%/zKto3.n#+_Gqٿ?_A&Fc$`ߠ:~wȓ`1/,ehGQN`r 8}	I0
 CEtipHpJ[L>Rg4ӳl!8-nca9*U#,2^8GV{\ٞ<t>kڡ58JqgX)o~<sQ|'@P̽{Q\گ?G}f^bttA)@[Ὤ.'潂<Jd(fWkWעv
F	z2~u	C<TzDG!Eptp}V
	7F߸@FL[j>8W8g@/p_q(pҢir֡.V9FPGB5sh8m<r.p+
5>>SS>{^L"&Z6:)ǡOѺh2Ub&6j*V%EG>' Ǿ`Q['%p/fp6FJTD7z+5XEȭJV6CVyy t	N~,8/8Q.mdhh8"=HZbGľ1&3Ck}N㍵pw_N~+,6 ǈ(8Մ4u:
@:_eʚ-݉=yo6W䩊ڲ	"Km^	غMݖ7ش
2)(ka*y
VVtAیf	zGݻ	$PX+j"qǸǕـ2B~?4b>1(bw{D)af޷Dwܿ	~QX(xpK5ی	{, ΅~>4?`9y2SKP(~ë!Z$O*K^Pj`Y*7+E2va]Do,ER!u[hqίD=
y}5dkXKoKFy(y`7"~̓*AP?Lb3JCQq9n!FDW,8
M͈-_A9N2Y:ePo3LF`k9&d
FڎIx$n/SdvzH߲=rߋ߇q?
(`߁BfCL?CLZZ<1ɥJPۤe~^Cw>Mv#ڻ-Gz>(}hd7GaY-w	bͱZ+fFaܣF=CAܣ&^9߃<)\9iqOOtRx999_9_<zgL5FU~룤	c
z>#ͳ㻁k^G3ῷ1crDԓGFnLBYfXj T,zRF%74ee2* *"BWbb#{q)sذ3ԞBܞ
)G_Q>F|*CLT\~м^5oFc7#j;9x8gvLqVb"k1GxI6#\%ST?AB9%Oot_vG1ȷC%^\}PC`DZ%ԋjGz]24#}u.f|U#}j4,M,?[YD4Z
^mڐ8Qy.x&!SJNRYܨ<<]\	\S(L1|TTJ?_Qdo<_^@NHt(cʡm- 4
2^^eܩ#!FA
ybcaSE\aQM=].A͡%OYf>+Rbdqc9<V@"M"_WDζ%r\
"uʒGtrD:js8	jd&M:kL:'$YcIF9>J(sIg zD\kPP (
9@kPRxUV.^K EB++ԦôѻDnh5>ĵ9D1:qFCyPb
:󻄭 qA&]z +ȹ
d6εKN8}<mUXcx庿ó(risq!`9a2'.&
Mc>8\0Ƽ *0 Y}%Sud 6.R9f}c7 VנջuM7@،xc
ls'As{EGt!tDk`xvܚR(ƛ̧(.PkJtҎM.	\1	qw!i[qUQbk(AA74OW5ߠR^;Nlc
(2'F_=@7ZBv6O5lnx?fn 
#h>Z9e1N@&v#'v 'DN<h]p%b7Gk8]쁋œpx
6gL͇y
T\Lqɽa|_gA{`l>G1NM|.TʣNF++Foog'RJ=513(peAe1od0uԚ7J[ܼ
axŻpxNC3t]@ih|.dP/|C&ЬΕb0afz3&IN)V|iޅRq0z">O Z:-N֡VJ>Oxx@>J>ZsI`NdΈ^UY_4d@YLe7(CW5|=mF3( |dƎ<iq-_NWigC;Ҵ![;sav>BL.i%0CԌ|K	qj_F:$nRI?PHOD1y2ĉ&ï/MW1v>7&*~&qT"ۥ!ok!I]yڵ0^ڍpv,n6(&%|pZKeIݠ|=1._Yf
^V᧪>*yĸ)~u(ͿmC>T	)PA
kw@v'h[pݸ|[qJm7yvCA@	?Feb<&%Ft~4ԞH2F-Gi>ƙ{ y
C{ĢaM	:`΋	q^kSF
C&hƑuBJPvnl*evItL2'P$ 
i"Mد'JY]jǲ/7yrP1䙤u<оB%Qo𳨾},
[H@PsXzN?nXXX~1~k8
\yIje<`*fu8bح|FfZ]4}oח8ތܖ=-[ĚEATEAC}ʴJL>L}#y(LħJwoc8zHN((AZ٘u֗<KfʽIM9,7}},#1(fet}dh@	ڿ`SFr.Z WlEn`sV>Zڗb^4:
rQr\o!K{ѽ&ǲQu&rXZBU0
*ETUd=ǁ!<lY\1H!"OZYZޮnRd˭ayQlbkBUɡÑ#2cV;L9geiV'JculҔ2Y˧r<Br<B2$iZ)CK}Ly1#Y,YwBcá1`c4pas!YGٗ9ALʭ@"kh )޺%;Fׂ>~,E!ci2쨀BGLbFGͽX4*1KC	s2l*SmӒ#è=%xĜaYjeCv;f"96u
囫ɏP-=[t:]l	ȮD:Ac=;6xF\n.v.S/W]#@8˓3GrHL)ʰeMuYNl^=ǲj>>>ƲA2ŝEz}rq}r>
X.2I-Ry4F(]X]1R3)\&s6KsI<?X*pmc5.%|)^Q%ëױ`q؃$T9~p`Ex	vVRS\S\&mI
TBjRu%76
e!%{yp%}2d\q8@􍍠'7#T?uWsH2Vͳow;c0b-kdɩ 	
4LI"mdV(SL1º<)G
BW_UoT0,dRFʌ Y9oP;N(9́,g9assnD2X쟵zԣm1&
:NDc8QhF4 %P7@42G_XTh4*?8nPXQR
o;0@ScL&Z[?SH=ϞCeCH#qD@ՕI&ҷ7@ZY<r&=J0Ieckb+p`$-5jԑ˫j9Aǋ4(Z/m.v0}~LUchtܾw
gs;Cs:՜9sgt.c`XX\kKǹt9:
ݹ:O[ZQWcr{|p뒦'BijLa	_FC449^&}PI2i"3rlH΂U/	4JsN<OXj%ۜ%ۜ%fK>`I^8S|x!w͌iD05rf}lϔ0gSa3cƟZ?s]Δs\}l"GU犤wu8ztn@݈2=+ԗ*LI)1<_xD}u>.$ayڣo`WMNbyAS߁w$}Z~zlJp+֣thmdmxF.7㹙_oƩMӒٌ9EّaArB7
TdMO&f${MUؓus%YM2oe-)>gd3!GOT63T4=`//SzXwm	ìPPr Iw Н||k5}l3Y#W'm@l-gmm[@/?@smf^~VE('?Kn6RO8&z ǸT͘c~]o=D߳?n38.8?LJ`QuPy9lA/[ vaGbG?H:	9^vڼ7ŊPdD(3a$B`:UÄ)e8ֲE@X_'U[kPKw
8  ׎  PK  5R            3   com/sun/xml/messaging/saaj/soap/impl/TextImpl.classX	x~#Y,D>$J\@M$(I )-G
*qhKzуR((	CKiiݓR({;J+K~;3;yoެ~玻 `9BTAo;x'J GJ?/W?a&7oR!膷HBUoxw f-HxHxITA8 QCޤVD@0ZSHL%1DDz
$IL'1LGEđ$fh&B(sH%1$8Ϣ ZQ,gl,w$p` H$).Ob0+){8bJkEUy5=遬8ӻu+,ʩ°U,MpR&F3aIQDIšMMl.8 Fu{:VW1rnVFY=j'-ΠSfJ2
ýR~؛HRNb>M}}JL+1U)jd9r0p-0h,%ݛ+/c;|u?~rWa}@H%Qfqua&BS<<TQ񍇇C3#g1,DL:b0$u<.#>2Zd_uL%6a_$ԧ{T1k"#b 4Dx*N󨗡^3:i8X-i+4U n$%Դܟ:`a['QF;R:zgKTFsCHF.q{|gKP5OC#eQiL6ӒiEէO>n\Pzҽ"Ɠ1@ *n`oA%r>X#{}~\5"5RLhEju-G+\FLI7rOo
˻/҄\NAbȝ$)y
ѝ8U}cvj93s).JO!MV!_kW0RN(9t6"vuNohB1g ^#*l:M얕79'RYrVV)^j2+4;фl"ie/2s8ː39K[!b~;n}qVUЖ!)EBGmS`[e }UO}'ڲxwI{K=+ _5".?Uh;	t{RlQ&:e8z
hnhr?`*_J.hs/
ZX2*Y>bۮ!GbJĞ;rVhOe{uo֕++U6PV(*]OIt
oq`|D`HgK#| ǎT8M,YK<+ǳL&q^a?[! ɮ^<u٬DEiږLrKEŮ.ST`+Y c 9WaASixs[1\Eى\
p	KI\FT9JK\IRp :2z 776fjyu*jaL;Nw	pZwؽp <(xV<O$<%}9x^E`xY,*fUy((n,Ӣ8E8Nkug"j&uǻPy2IB3kCX%-M)2aؗ4
j C9/t+)eQ?m>p}*^T"UHOg6ceWweiܐ	}K6;yBʕnzr&:C B- ؎}<Ux7^y9  TZG_zLC B
ĠXg Hƴ@
ۂ>rԐ&PI.Xj,A5&TaFU"Oi?dwa=";GX۠jb6خ|J= x>r2	Bgף3i#6hL|)癉^,h#!ݫ[gnBpo"l6]Zc.;h]s!hBawBȔ0PnVGfNbo3vafcll2>m^od fˀe/XuĂBLZ1hE	>\T#E59-he
&ކz?o>fΈQ^H*B]Vt:d~f0(Ԑ	3hx#sSvYO?%um>=6Gx*>&x
YR(dC8{bx9*5eKR܌:ѻiMoTG{<44:	JwBK9&|q%͏_R	z-E./=2ЗUg}Kh[z>9ǔ_r+ _ͅSwc?(L微1z\qYWh!-saI++S/aB\P7N}^"zN̧QĆ|1[|WBo5y
>=kآrjC:8n*U6,e~,Tu3F(VkqM%zmP;ewf`/]j+]bXZ+s|ޡEɀeV~Ҁ}Nq/V=_vyܪ;2G(o+Kt;'poUIFe5^^t/ØQ7KNIя\+=?{9367iCڷ[N2k U)8^$^嵨_.N:p,sEcpRjF'TaxP
Ca4l>8xousf;xAy);,9N:s5gQ	r~E.')݀4k!~EOe\f;vt:ӎGp̙<]b fzB	!̼aEnv Ew9g5a\e!^ENL-2.*o$dM>sӔ}lr;$o~-	Vsb.6"ԞPKuϓS  )  PK  5R            7   com/sun/xml/messaging/saaj/soap/impl/NodeListImpl.classS[OAf{YZh+KPPhKeAxØ
I㦐`xn2^p/ʏAP2&/3;sf? bY<*bu+ܟ""2XVCGSGu$cgxf"{ ДP_|;sf-Q}
a1M?_0iL/1y̐}EÂ%|M="+pl`6>;:JO1X?	X0A|ʐi4)R<
BQysh
m)6sd`n[jϰ=JUӵ	wr'V[(D7MАC.!~7qzaݬkNhÐGMRؼ'\ꐯn*r %*g(^B
yk`o~"sl%)ᖢҺLkVpXTE%TeII,)MCO%	I\ _f>z]W#
2=/y})B
2Q)zPKN   6  PK  5R            ;   com/sun/xml/messaging/saaj/soap/impl/FaultElementImpl.classVR@(Zk[+*E8%]k4I
߇r<
2gϞ˷ߞ=__+(v
&0㚚_7p7
m:0q7{j5f
t⡎	twl1y+2DvK<b\vgU
g|W%%,0h^Q2tmWVK!$%j^7j;;`B6IQu#ު+}"p^mVSe"֢xT%3_YK|ŋY\Ah0;(-
k:@n"_tWPܚ%+FUm4уI%8g121ClvzdtzFPvWc3]z'ܒ}U,2R!3[ZVh"~3&f1c^?c8j/)>ê>'p]/LO).2Q#%T<ֵ}]ۖrƶ	1+1'CQ㛵+szz[J7ݵA)$蕚>m;]k٭HwʐMJd'қ|s*V2.*RC^NI^AnK% 7}yڡQqM!F>8464hN#38AZ8DiH;K޶%l[3ll?E3u[ƚa/=aS\Q%31@
y'hО::
ڐa|EW8<ziC$j:o AH"CsN+=5
3*ГFFc'GPKjii  J  PK  5R            :   com/sun/xml/messaging/saaj/soap/impl/BodyElementImpl.classTYOQ.-L`e: 0SQbXSCp)ԙ)__$h|Gϝizru_Xƚ.ܓbFYN$M`N<tF9	,H%
3t<\+|°57=q؆#-l+FzgVᆛN^C~#6wC++NIoxɦT3}Kp
V.
"SoÆ-A0$#W'ޥZPHManh5{eh4vɲ^ȕJL'ath@3>2+;zrK^7\86E%<ڮo6uWItGa)FZxI|q}}+[(/KeкS
.<LV)VIFʐH4Ǫ@=$dI1,_g2?8l0̨mEDU԰t`Pk͇asC@4	zxp^8:贉 %;D6Hc8nNЋ> cHnC-iۚi'v
#uіf)v24JZ>G}F{oHMu@ɞtdȲQ5\)Irw'fC[oBSQ PK!  5  PK  5R            5   com/sun/xml/messaging/saaj/soap/impl/HeaderImpl.classY	xy~?iZX$^-0Il6,HZ{+8m6m8uc;qp4v* ݸ6Mḹm`;?3{j$<;G/ŋ Znl?hj	\?kjg7jͿ.=bN·X/UKj?5|O
w~Xnm
/W𪆟j7j35\1}uu<jxCÛ.	\"n(J
)8\R%K\.)vLD
JK]nl.L*en)EnJT)z5Y^%רR,嚬P+}t*"w4V-XHKj5#RO%.i/<<Է`o=}=rPP	p| 0
iL[`|`g82KOL'X,05;cd#É	#muG80a4q08:##'6G`h3p ?
g{fe$F`ĈhkFJvA<u #ѱ뇛G+d&\nNςʼF nXVo3p,pd\;Jd<HܘIHiNb̈ECaHںy&Ǣd`Yd$7FǌPd~U2/&\6,]ONhPyZ
PxU@<0|Wo`k)a,mJD`=^[;]5Ts"5wǍh DQ`7X8ODsoZRƣd+ϞvXtp48l"Kzj <"39p}8}ɀ.;bcY*LÍD:Fba	ȫ<C55C"?I
U\Ǥ5U9d2Ϸ氜#
s1{fM5Y+ЂB#ٚeX{;a0}Û)K[amHcF|o +̈UUA3k˘<LSx32Nt
hUӞmfGń9|<[%*0,24U}II"U$Jj.*cKH&ms5l.\j]%Ey6jPh|0d͕=t<C!nI)S}V{ɨ7ﳀX;@$6vU)K~E^ǨpݺVA|z9]6]6F]6]6jY-r7:HUn&]:d lN]KfcuU[ U21݉@(84F4١Ͳg`./SR<R;u]즮S]8>#c Df_4̱*[ݡ1uDLhS2?v[d|&L2>)2:>x/J~G48G^|^'IFnb]]եOW}26
~]nQooŮvԳِϲY"G
ZJ1A⋌|k\cYCikxLMpIu:?ƺ-pNBTfHzo8G,w;ѕvYrV
6^d?DGFsQΒEחCܮ7pRv$kQnnܖ`m6&kr.Ew$Q)=eQ	<.2)<+:#,a˸iNKP=s6%$YtXg k;#ЈOqޯ<mZkV dYD&5azJ,-m	F!?jܝ0bq.qܧk)-flسW;;%AS"[r._>V\,3%߰dpuzay$ғ +j릷to5F'xRnv133<.jQ̒s.3.ecǲ-ӿ xg|iQKN9
wuv/'L(zx5TǾdw$3F~۪yjE!X}hڤcfTbA7<QxOl-3|J:Һ%|:+=ӆh^9u$\6eŵö309i(f(2f/P8nq#2@wPkG5O;p[Zuy_tڤ#Gݕ+׼CMRhEm#UE:̤3*7(3t2LkM%eÑɓY8ǳTâ
/SFd(ٛn	3iSL'0(@,Yk#YvƵӭ}(OXM Kqü (j8x8gQ_,	sQW:8wg-]naQwLrf^dH~VQPp$gqk9s<gNzW6u;Q:xB%8Σy8Q3G{Y@q}JzȊ)5=ݳi
eP$=เE<gQL}/}
M۱ceوReg،؀U؂&lztl.t;pvv&B)F	;Hm׿In {^/24]FiL<xbq$),o	y{>,졗!ru=3G8@H
#D>ÓHlDM~$xhUySX}&NGMU֊omlG\wH,pNw7Nai.MC45WwGёbbNꛈM~ۣj
iXfg{a)'Vcn{;twb6xMy\}I}YBmOL&/Z3Ynwm/uu>{/̘?K^%ԴkNīM4i8
\m
cAmŧqZPYn
ܩ8v
e)Ԟo%&S+Q	ĠWӔ+~
ul7Ћ >]Dя1A18yOq4c|zL'SHI5Hb2>ݤ:L#+Vxls&e3)ۜmSL>)jRFP"r0?HgͬUOz5&5<
k/c
,2(
R/P_lTNISY!i|-2+RUT7שO^PxnҘ,9>m3Q}ElEóX
hh9YT,TQk,#Y*8VZ0YRBYq|֖aT^jS)|,vӓƬ$ޘj"M_｀uJFOɶj)3fr`eFrQV09O+Qm[9D%)&g"eț<y|}|9I+J`祇Hǥ"Ŀ=oXk͖L^UdodMBEI?Ҥ2HGڝ)ӳ}
]E簃)ܮymW˳zyqլXԻ[6Kߤߢ&/7Kx=6>g܈sǏYr2+l^en)sƫ3??#>Ɔqe?q:KN&FIv:kis%z7=.pA	OOe9UoQlMf͑%L|
n-sa`
}9N[,%4c:8CeQGp
E-^/gFh̨.Ũ\#:VK)XZŃYR>ĐT!,%xj<)bhm_2!L*;x 쟴zUivfuɬgj^CU163
@7(cow\$CDĳB,nao[p@Jʳ,,ר*+Q,P.Q)5X,X.
X)uĴۤg+QY}ϙ:f=6nkҦa&_1_f-02*YYwkhR)Ux=CEO_<-pCCcRT^|T,WA,HxtMI3b7H/fZ
PK  )  PK  5R            ;   com/sun/xml/messaging/saaj/soap/impl/NamedNodeMapImpl.classTVADb6H=	(FC Q|Bg3|s<VMUuz~JIb:k@3,np7n,gq?8ı( mR%gS-UVemӱRm|=G.8嚥l_`X&fk;YaW4O׷4v֖I=smC;pn] v
[jֆr&i2Ek𹡌Oc/F%@]%p1[ҷulntŘqN͝nlJPg)`^WYζj3e [}7Վ($梲++͑&BiM`L0^U/O9m+l0}-e.ܲZ4-$$(c<CFG$Nb8HaKJbL2%a56Sw{-奰4}\7tUojJ]fhݨm*+(\qG:Q/LDaz鏕aiM~ GIk:1c,͏}B#8Nr=$/ F=IPKdlyeD~'`ǁES;i?"F_tt"aĞx~gp
.xLƘwheT/A+dX*K,Α<c^vؙ.ai1pb@ge403d]$޵`XŮR/cHE;aZЂywv}_,j5^mMWOS PK$C    PK  5R            4   com/sun/xml/messaging/saaj/soap/impl/FaultImpl.classX	|y?O?O@88r>,9̑&uI5[ҭ,[:IcBi,$kn]v鱶Yuv],˲~}ϫ/X+a5^k>׵o|KGwtj=]7/݇g}?g9J#m^s?.O_^?}^3oxE2CćRr<+mJ)MmJR)3ǉ~F
1TJSjCfQ&dv9զ+f>ŗ^
Yz,.%Ԑe薫(jYMQ#?JiҩGG^iѾ+m^i*mVkF_{t6W{e+чlfmZC3z04KPWicSmcmDhgǮmݲI0>N'sZg"beJ#V:	jin?Rh<Vi	'Rq{װJ(W[*:6!DxTw6]D<4l/𨀂h>b%ĸICdT'}4_Ql#ٜɸW9肶+TQ1j;&ɌZ>.d96AŐvg˼qK]M2gtgesp
n 5Xhn[,D
(.A.!ƜLP#FBamjKkO_Q+|{?GBH7RD=]H:3fFXtSˣ5$AX$o
A91`-ˤQe8jyi&V681OZpeYJG`eMFVxohyOVf܂[3*)h[8?a%mN{.BTɂЌ,<a'Lę\,1aw<bюMSz)ECYXEr ,yblVD2ʎR11[3Hss\yaScUUfN:Tۛ綬4f&[!\ʥ#wPru>7reֵMtr!l%^3ST_~fdq9ךzFkS&`t*Xz`{vD5t4q
JNyhhHN`A`f{C.^seO&ֶ̖_Ĉt;L
e6Q51&::l7	;L
~g0GzMLxo&ESvr$ncH){e+ֶ?ZxuO;tpmEn"VR"rєxDTi!\j*Vk]#m}X/(	&XJKULֽ3o$#	Sn6٥"NmW!D1Փ#8cxӺ #aOUה!saW2Hn8Ku*JL|n\O\_x>?%Ҫ*VkҺcJ)Q2(
1<:Cx"pN+^t"`q2lJ\#)#r)IԿ4%M5eTN>SN&{D޶KA>$s(	)lNjRxArJNTEZ4Jp&r0B{F;LKnD땽XMMdLJd'k0շ[jG<bGYNj"j_;=2a[217>f&sHb]M:_D
RyV>.h-+p]IR!etq,Aw.ȹ`kJnʀo	wED+t^ZlC:	yӉ'hTv0jO&eY׆cE\:rƼFJ2
v9Hj^e#)W#ݣ4jmhVS
Ard9՗yN*zIh(6?/Xjm	3'X{?8璷V=Hl
/pPhQ;uTHtd*:`R5ʩ
'FNOҢ2&jo<YU*+zFD ѭ\?[$8tdjkN}ݞFpw'9F1F,1bc@)(l(N $NNN-'D͗${Fǣ%h-nv=*}vRݶ+,VX{?UV*7PB:x(y:U:la{-pqh1Wͧ:IokAz^Y/ލl^wzWܭ2g8*&ՠm/g}NzmSqNfYZt$/UH"Le8Π"+[8y{sg?[;JU}6L]99S-J]m>:w"C釰q<Z<0<E-/bĿqcy%\ǿx˞W*˛9nU<#+A}pv/ml =hh8M1#DC(s!ǈ/ABSxpJ3ՇA'rPGqTd~b<
~TV,.>5*7ndv#6t|֜J
&ELp/Ӿ)?Dfì?fqlg̿^cL6qYY>f#͑uhݲ#0ϣm xcbuU_k6z|O)m9ucYg;B}@ 灹LԫW:LG1>AR?1vY1TQ<J!c.&}Bq*g&]T[H?
@0~6iiJh?c QXv̾Ff'qE6
iޠ.LQSem]ۮ(**}vqU1O!c286ی5[4s"ԓ9H r|5a)d(Db\{x?eXj<C"p		_/xpPO"y;cog_RE9"VOS{A%6
LfYJsw(u9הmO]9_X_"=Ŝͦf/drjzpO98Ӭz6%gm1`4
ZaBMgh&q96m{{tN{]7׍-ْlr=Cd &3#_BJ\zp5XB4_o66~]>>+YUҫ	4lc)T,a~	WYɌKWRŤuY<38#$?tFF!_x
t3?Wdg7cC%20\usP'rS}JUPy{Y誓
d/ؾa&
"9YО7]T@&#~gX|t`LR
C~)#bD)SeBAr1!#ɫL42͡Ls)S
eL(Se\>^wI&^o:/f[ƂMgqD40l K(RT2Ur4Ie6I#!0 ۲ѺѮńsQzϠW2oǡ,b.m9ʲ dJ}}9PýAփ'WC\M缡**
a7<[|_ϣDƂ\jɌ+#<WEKk`[>ܢA #qҍ҃zc؃
?Qmg.b*X|׻0y67jӋRfTQ?5ZbPosݭy4]rF8`P5Ǹ-'}6ڢ:E[@XϏ/PK`=  '  PK  5R            7   com/sun/xml/messaging/saaj/soap/impl/DetailImpl$1.classTmsU~nf!ĪJ+&)--J$8nɖn`!~?/~ZF"3|)]L4=޳9/w_3 bXq
u\W4<JaYg:)jXaಆk:NFU
74iXgjռ`WwCnvC1+yK#uI
&Uo/Xfk2
%]2Qn1weGJ+d[v030_(HuC[on8߉v1EmB[^];\aX,ۻET٪Z-;|!hճ}[ceRRe0*+5:.yfk-T'!lN5Q(-_2u_Bo2r)(\>v4N$6w%>|cCSV{]7m1{EGk9^@o54
}5pKƘ0n<^`|ǎa0WZحkNh{.a
*#ܡgaےH]e1
`cƦlm9wc6͓Zvq$L40
ù-0ESH׈Fwh7wIR!.)E&rvv>X)J'`H#YbHIE䨂b[#M%XPN*8FGa	"$Rtfx	K&@2?IВ{H&~@	Ei:;T..pWgD1=HiM.)L1ř2?!;{Oq⹤BD%y{TU91F
ꁠCCNeIYlM_JГ}.Uَa#Ma:R3<*x0kt'zrNL)JǽfڗG*"uJ{	+PKy  ,  PK  5R            5   com/sun/xml/messaging/saaj/soap/impl/DetailImpl.classVmWG~&YEjh+
MB`Eb666}6c\즻o``O{G7B\H9wfg}{ܹ<L`7XI4VXb]ϥB|𥎂6q[~WW	cK:yJ{KmttWjŨ
e.
5xƝUǬW竵b[WIBg^[qJa`b^ߩH1ye5ENε%X>*٥8]+GƐ()4<e$[6vMDk!7T~3"NfSt1Ti]m2"kV20MavJG\lT#Dvdڞ)j؞{dK ;vdE4i.f\=c:[N6<KYZT2}nkVa,[oU/\;.KJK'2AZ`[ZEO:Ω]S[^Y	D
RL$>.%ql2)9%g;'~d8{7o6eYOIp0\߄f$LQu٧.dҐjGRɡKVDiQkhQʓk
MVAJ
q#iвP2QsUfԞ
\;lQ]QPG	Ydp=M߮,Z̶vdH7G =;{McxdF,û4hePs8O r6-a'"ac{-Enq֙l'"i4J>z6}hg
A9EdP& 	4NdrV5Z)(SP,QPn4F6COhYK!G\eAa
xQĹ(Dڱ-W0Fc:^ȽB7^YvO$D63/1A٣8eIu3*B58d
ҸJA·V{EJ(ŹF<O21t?íAY2P
)Χ29*@Ĵ[vb!BΨbΣ\PK(\  ,  PK  5R            3   com/sun/xml/messaging/saaj/soap/impl/AttrImpl.classWf&Q*
^c"(P!B9}7;avf
	h=zZ۶zkCgygv}a{|=orWNǛ`)WXO<I	&x7<Gpy^$8ejB0A*kA&[oC[]?OOg|@W	>"OIh)"_o)JnJ43bcٱlM*
bF4hqel)e
g`itDA
N[zLKCjYa
IdP4}
=96Tbop7PYr-.cUM؋fA/5J{T[;W=kHxȆhҠaqVk,tl?_?exVA&6ٓsZeb*lwqJ][{طP^ ҰځԻ*Y4<G̑L1}
cpkiÕ.˙;#Jxlt~9d J6YJB( P9 jp7.j7ɕHRϼ`+8Z&F:f+&J=VظR:5JO\s]pD+#8=ic+53+9H

Is)g9X<f2$h;xj{%2yɞ1:^@t$$EL3235<k,.t0v5xe:Wi^g!lD\,J^mr|3gɜEYEyӱ~MG&F>Jȩ,Yv+&-&MʞV_
FٚtbkB̩Nv*u7:nC%B+/U]}C#,GEAG
`7C鉢USUY|a-ɥd㔧\HlFiyRCE%0ӯ0o㑊+RM!Rʓ:g+!7K;e/6t6WN%DJt8BuЩz9:=:l^`i`퇭:Pk`4v:\ p\`X"-2o'X:ls'M08!4
j*j]Mt9\
punVM{^a?/_7GmB5	}?g)ַ1F(1p PXA^.8oAo~ϤR2hBcA;]	8CRπa58F1oEA	lcEb/B$5x.GNz8+b(Uq^dh0t/=qur dk4$`4Z%pjlh\:5J
"34.e
34+UJ[TVdDRx.)ÀJfQn)àaȰQʰM"2l2La@ʀ;ax	CbZEx@D%w.naMuQqp	\uq)!eQ%5oAQ98?4?_OjmVY^[Dߕ+*hvILg/#$U9	A#\@5mII=vVyѣWJ=abNb(lTujB^gRFA>N0k"ȻySk[tv6E<)e/=WŽW	rH\M'ٴ_pJD2]YQ(''%T8B\u"*!n]W+c@>P!4U#R*ZpZ5zb(ҞP]u詢 k5{du3mhtR-5{WAvs3|Ea=x0hyO@''p{D܌˝܈fF4z3*Dt
?9>?5YJզxA!jM挪~poᲚ^x8,l-쾫jz߯%7*.PKr3    PK  5R            3   com/sun/xml/messaging/saaj/soap/impl/BodyImpl.classZ	x[ŵ>ǖ|e:N'Cز,:kbNC,u KFZhJRBhJilL$m	KWѷ{}-%?sdyIsޙ9Y93o?<-7R˥6ŏZN4?xƕ>'ϔYX%j)fb>s9W̓|)@yFB)iX,FZ?!%z?爼4Hg2ϒjWJ)VIkx>dR",Ѹ5~jlM,Źe*'2zϗ~nVim[V//J"wJ.e]q.K}Se\F\e
;u6|%}lϻQ-URqAr	j1DRĤDfZ?ǃ~h|p=RNxz5eRb)fJ2v4$7K߯Lc fݲc6R	}Kfi[Oh.)ҕkH
U>32vERiƾXnO'Moit3L%khzSweckό7L8"n
m(TL
nhͶN3K%evɨ=ha߰>ѽOMK썛IeZvN<wL3L$w5=#7LiP
4`7&}V^bAPܨ!f`RXs=ehTk
n4n6Fp ) 53=R`.ɎXhzΜ#35*h0T,?3(
Tx뺪}׿iOGqxEu1L֗t4֠bfPd(8Scɗ85'X rZ3%67LVqαV0
!̨^cږ/@-QiYiO4qy4ޮh=gnջZ2洙4҉$%}ҭ)m֬[F*Pn4Z\T&^-.tc!O\7|NޫSSfzGgjfge:eNˎ-݂ieM12
!ƙGJI?ftSFBvvph6'
pʼb-d"|]Ai>40<+c&6Gs|䛵
`OjU`:itai7f#MO\	z02r7)3r@f컝3&&fqߊ)gAԞh2Ήۄeݙ  m8҇4i1V+/N it-i{JK.imTr0B$@e["[)11ns%ZحLpDL%$9ma.-%`u|aIc6z*鴇ʺܢ"5'{9ʔ
"8;0$'P*,Gl4v΁È
`iLD3v01a$cK=12g-QnQOcqۛ_zK#YGT1bL9oJi	?ɷ 6s@fF)L$Wf-6>Kw^zΟu|k
JF;؟H}A2	t2:Fq_^=IYDCw󈑱UO:
==|/S>&
<A?|kL/[aԉKGA|_0߯c:?OIuAObj`BfKB;i-#*
ґN3b:G;,&	f@t"i{f^:Vt~t:?#:?G4~VV:t>._A;)aWO"
85/ovG^IW)4h|iV~[h`-A!ؓHu:$b|'z?EFSDPKY.zHH".K4m60;f/ؓLEz95G0s@PAʰ
!HlAwt.O~EW5_j#,1@v feF2^DF,/AT:$OQ~'}@<3g:@728}ZNӌ{b`:a`}ЂteA۸uosId:F.p@Og"_aοÚο_3՟ҥH|r0^HOhr+s	OP<7ؕJZ*٩
[uDR/)lANa8XQ3:]zt7q@)uTqC%P@L"j̜wܺ
Q$(T&%kˬmN"46|H9Mekd9IÝRl
&I.JjϷWySebZT[$AX	uNelΜI-l8N`Il#u# ,:\jvZfn𴸠!Pe"X`IQ6!Ax#2|xwe<
@,׍wY47RJ_r+!f hzN0׺1	/{]e2/`rn"ǙUPjIm	!}̜1vRNǖ&u^҉̾0E܎9`fE+!]Š)$v fJws<6]sXdm	\;T^CuOͥ  cZT3	`N
{ڿiTՌ/4[Ĳu=\wԦ\؍+/׶vu%<iY@FbH.D>7xȃVmCb<P]x8T=z նJh9J ނV}H>B4}>,70ƖvBۨODx~PO,ݩwri.CCO3'od#h-eOpI҇\4e*H^SGhU=Ij%幤yTAZhQ-mF]NfWwt*45*`s6T{FhzU{#TYaG'jfѕjG10ZjaUBi<yx>?q̫'<}c9tx`)<mv<PҘx Ci;Pf8aCT8#cuw=]t	}|MhfK`79or:aꃖD!#{GF.Y-XW#fRtfCt~<+>Ʉi?T!z"?=AO*(Kl(^z a؎ӨI-j42G8:bmv)aNKh
ѼG%U
R)=^$7̕Juw@n0`NϚD<nIf%,xނ3pB6B&*J2AeA}[1ṙM׈YE:B!U֩2l1_t֠ZAyo)LTK0aL&˒wэt\"F_ ݽ-j(V@{mKsRey<pSv| 9Xj 8½\bhܵ_wLmD4vVʣaZX3Ʒ@uy||zB{F/VP"YﰯD8Kl+J|54C9*r'2N&RNPs}gbjo=.%ّ=O9CԴZlj&5Mփ'2R#o` 4q1-e/5r	bXKbupZ6\SFH߁tiJ!{},w^<Y2^B*:O>UFi]_[@?-9`2h}k8ES%bC`# `áPR]1MyORi<p-\9A=(˜5/W͏W, rqXI+qj}(mFlwx$ۇ|#tA0ZZ`:>D[%T[A^OXLsQZ5t׺ՁJ??7,EMP-Y͂~gp\7u#_T=s=i~B<"i:x͹Ď!X%"^	t<M>M;=Cj]Dr"mGx@9HCDRYcdhLW#:
=4zk //%,^N#NCx55uϦf>6Zcbϣ8_@Ws+]m>BVox_Bp
N
_A/^k)L_"n~P=$p4$]MME;eB
-oyN+$=BbYT]mx{}ߨ$%^
nxP\Yr"Ӌk~tw}LѤ ݬ=(|܋8&VyDϹR.VP=hOA{j?+o-߇hwސ/])tUݰZurh
'=p؆A0HnqB

bWktUiN.WliioiHC%./8̤g~/FMTηB98B9'nD=
bԞ"TA>ʰJOg[ȕ.-u/: o Yn95ؐ	\/wA:P_뽧zI~),,/Jx5+=~]6w= tF%ز,@P@>ս @X@ ]@ަm	\+,KRwc7H3&1`e4{OP!՞a{8|:S]Rڠ;P@=|*x*il:~Zy;8Tt&)jy6pڬW.$OIn?iN)z׉&WS[7اŖ*ҋMyE05#tm5%~:AS%/c:[Nr1+3,F+8Lh6[KP.w;xa95H0B).{}`z^ב؅i)`
OLԡͶVZ/<S%7yp^2^*
1,".?PK21m  4  PK  5R            :   com/sun/xml/messaging/saaj/soap/impl/SOAPCommentImpl.class[SFked:i	C@I!	Z(7!#F<P}h fs?Tg%!lcdxw:w<vD1)0/`A	<3><a1%_(y"j$-*a/3$fff]UܺTMZ1jM)̭Z[bfNWb$U!dg.=EҗmYSMImM5UfkSZ7ȢBF0$}Kw-{<۩XV&'SQ'5L]Q5S=5HNV  hz2ֻJ d;ÌPmQdG޶]n0tdG^Ҏ[3
o/_v:&$ąMym6zfkS;yf[TѽBئsƮn3L\4-D}tFKh1U2*J1ӶfGdMbd#	b|'a/lI?0\meȿM[K?ISTl3JssK25ղlO\UY4	eP'u}aZv<Rw{pdF̈́neyĝ7y7)F(Gf,[$]:v[B#`w/_yeۙ
yzIlskOy+#^2'CK	-ˢp|ouvg
m"ͺC:g_f 'f:O4~DO ~ehi%H:2n&>'mV
<)>#N|6˧ё1ڭl*¦"l*cClf.x+pCJ!Gjel)
pr4w_Z44cfwk.<!S^{3}=>iFc2Ӛ3A{lgm,L3,7Ay}rdqC(G;4w* $(aToPGwE<p
&uAa[i<?PKLjj    PK  5R            :   com/sun/xml/messaging/saaj/soap/impl/DetailEntryImpl.classNApqCpon/`K4ޛMfA<x|(c@!D/UU_o XI ymX4d`a@9*8d8[+[m*qu~}qty
[:Aɮ[rM<VX[od(+G7nDŢLºq'
ϰ Ee{
E0ݦ#=RưK0ΐy=uaJ~@UyswYJP+*kTyx[kM@\6i b髭ݲ5o*GJ"ɎPT8BLds2Qr2$18&ILQƦzbY.`=n
asb3	a'PKg     PK  5R            9   com/sun/xml/messaging/saaj/soap/impl/ElementFactory.classW[T\68a afjLb0\pI0$(jJ	L.iVUMxiZb+iOu}k]>u}郫93dZ.wЈuDCL:nÄIL!&:o>wN!7up>!nta
(G5QT1%qKc$ֱUpFvIzJG$=3N<95x^tJq9pNG\4t2uNH:.ƥsqY\ť+qG\z^ұ/kxEëY!f5})2ǃf1 >#k舍M]pyoЌFah5chco{Xዅ#'Zr}ӈ6],_UQ=ma߸ҖcƄ1C4[*RmF
OHB@՛e!Z(LT3|t"*kk82ly(0daJqn9R
t7?dp%?;"QK3|1y~,f
PV	[x5q[]/0<j,M%!Q<MPDp8^ӳxgv%X_s4rz1Mޒႆi.m
?p&@xtxGz:Ȣ*`"Tbc^o7bh
$[o.`V`j&H@7ҒnN`mnrrfAYm6)ꄵt/SoE:$M?%cBm0ki4MZI'lV6iU''UJf>y-5!fV0Gͣ
^DZ)	4_M&l.jKWsxZyb>._SK[/]{9$Gu{w|s9Wf!)LR\9-l^+o+maS\x
co}yE/\=a;:JV<%⍍)?`ʛZ^<>Px%ݶZ*[ɣ:##f]DAYK&pvKH9L屑c]z*	eغ9
3EW,i_Hv*pHCh.+/Yd ,E܊.>y8dJ%dp\F26P(Nx*pݣ)8>_]4 
ۆۆ+=3g
u\5F\L'Mݶ{,{(O
rwzp	>rÇÝ[5pAY_E{}THEًջ쥊T6n9FKٯWMoV,fߪH7N-g߮ޕ/fPiGCʚՖℂ鯬*q;=Z%Y'˲Fi6p+S%ieێMˏ}.f; qGEephX3,9}=&m.
G|
c(>9EM<aLxq\`RDUDKpv/5r/:);86 {p%p}]|֟-]ineG ͉lϣ
3h[)'32ɮyiz͎ǯ,qLque<H$03{
-x	f4$;èaħr82 P3+md\Efpk030@Fw'pfqtXu	pHM,gߨYZ	&AD/TgzT%~Hn
U [ۮ: '$OH<$OđXsǱ//cPWYkDDngo>o!oIL#.1g5P,98^e׽9~CCODLEl_E8Z?79DpfwgV=O)6k-.-9@FOefc_?K,:4/PK4G  r  PK  5R            7   com/sun/xml/messaging/saaj/soap/impl/SOAPTextImpl.classVYSV.؂K&%M
PY ,ukB,y,%33u9p1>w;;=o 0RX`(a) dfA_2X;tbٷ,,I6x<on~h1,ÝXe48K+JQw5oXyQ]űՒ]}6oknbɜ?V-@0etKW*mnؚjnef-ĩ
QXj:엖^&N>',&v!kq]+/'4%G7Sj.S]OPrvʴ-r腼"ie]u'!2gL]bKiwvD˰=M/m9~2SgR)ri,T|n	yvmJRv/EI4o>I٦GN.yej/ՒW"5B:}sYl3k-խ)NO玙1n,YRE{ºͮ1!7)&M? 1%AwGF)(@R.^Șqe2s#IEX<O11q|%0e~u^@D9ASd	 gݸD41oqNj j퓙x_4NhYS1}cjC5+d,ju6
MEARЭ% }袑ғ0tQ'@F6|H2L#Їv*ͮp
:
o1FHaomk$ءSa?-rig=#l Bok;a5];ȩ^ٍīhC3HH^N/⿚a>lF%Dg3`0TC{3w 3La_V!'4(
L!;tss/uhdJ]}t	nzd|;ϱ ∗utfi0wPЎsú\:<!C=_^ǣBO<A A0n	x,P ЖD#_Ip=3^AD£93O>3P|A_ע
^S.kK
Z^rtؓ_P
8PKY
9    PK  5R            8   com/sun/xml/messaging/saaj/soap/impl/TreeException.classP=O0}!PHP.U"Zuw\vd'?
1aKw;;Hcc3Dwʨzprċ0Nbt`'I22KbY2l.ʅp~VaVs%{Q BJW%;)\VfD8)5]m\.Ukbg[Jo8G@?F<(FT	荮7`)&=NYا N받9PK*    PK  5R            9   com/sun/xml/messaging/saaj/soap/impl/EnvelopeImpl$1.classTNA=Ӗ.
ZD,-KC$`B
XGDc|߁?&>e	&;s3gsv~4Ѕr&p'Fsr	1*1
tkNcĐ.Vyw*z)L2L?;0U4\[޴-+}ΫdMf%,&ȑL>hX&'?_/BkSNB<⯢r,Eu{Wx[|	moc	o/ȝ9{E$ƽ
5tZvB^_
ZNr;t4y]V=C<2shr;jϪcXOE`-+()=U
UEӔ[~b*aN}0bssJC%׫Ն#*7ESuS[vdޯ>q)9$rOBI֮d{!a4BhE~7MGڧKh-tvdœݪ0y)$1KR
tsa|At]ER)) fRЛD
EvE!X~ vH~l+Bl8a"y$}deu=\!^Ǡ/c8(!7
uCуa4E{fY\la7|P00$0ItPK0D    PK  5R            7   com/sun/xml/messaging/saaj/soap/impl/EnvelopeImpl.classY	`TN2ɝL.[ @d!La	&K,	HX
ę		Z[Zk
w]jjf}}}m{}<9sg2d{9/_pTX};i<J3HF%Pig4å!F[pFPiFK3F+rF	Nࢉ4I34م14IN*=0CBUJmF3c|TI3˅rYYNN9tT!"7</o4Z(0;irR'-srBFV:lVī5ZJZZyINw9Az'mtSNs:<'.l5ȅX4$pR-B,vvৠMV(6.#DCQbNjwNBF4Tvit<ivbvprvǅ+MF׸*&\'n&*2"˃hԈ[߈m
z!ogkjDm6o}m@k[{_a.Kdkaa5;5h
ny>^SR5"Q#o@l1auiV떮_njo5B1U1TՄ:_`fbyo
F#4Dp/	ȷ鈵n3suhp"8}
y&gԅ˙EG|M8'4VubW1Λ"/fm\f21_ӎZ_F7ktOl2bp(QlvlyeuАeHwXLXmF̔N9zyiИzڦ(dI'2tj:D#sWz3kE~[ht-)z8m@$[	3J1G0Q$-K6+h3=;X)5Ycdךb6SL:++^YeAmy8Sc,EÑVo}=$ak:lVN(J4iG+=(n oRLOy;}vA&/HI܁CMa?OfpcmlT ]kU;"rt9[ԨD<>6&HlEh{gvoTl6(Llvܰh3<2ݪm3zQV%h/[jz9&a
1κ"6Ce՞nڶZZ~:+ͼʹ4{F`0X3{&1nڄ)8l,cQ@sPW\nrv;CF:No{,XWp0dUeeH]%I/)\
-ڄ0M5]-Pu߸z&#+8cf3'C*Po̜"S@Tl6,;f)2sM@!ucq .#vQcsu܁: NAnGs8U&8:}4,7M=Goѷu L_t3UJ[inoWN{} )Dcr_hJ۫6I;Z;2܁bj#rUZ̥i)S ĩ=T%GeJ2.aNՈ;NݍZmp-N8KyG&tz1q!z\͸EwZ(6q:^-gKfjXѧY5b:=IO	i2VR°NO# =(yRKdi
W
N_i͘Ē1__p'jܝ+-BU&K&#Z٤hT6	cILp9A\&8!:u^bqmrHJU3*З8J޿qeDɛBrpnN*n6[N|g4zQe+y&
0mx+pîbrB
Z'w(OZ4AWuz8܉&s{	]?rHGNo=<ӛtD[6YykeeJLޚ3=9'!-ަfz,۪uvN?`{|uC(3TLL0Q1|InX׸h\c<ӻb}%}	TA[_ТMIܿuLO#ېr~_jci_L. xO:}hN16g8D!??qJ-Ay-2aZ֘=P-IU/tଜ9%S <RK	)Jz-zkKVuu6bF(1Uf;T9Df/zo3o9,fkIMF
`S&c~P_OU@mE(f زiE[f0QMXгgj.fɔ!uS+E%Lư=㴮Z,oukngd##$zE0cڛ߶߈0`5z}
`$sx^{Jw^@}mmF׽ZrIcae4-W	n
՞Е6dRnn4Ifiѭcb/whodJ##]Rea7WܪrGnl0Sn5ح.>~̿Wݏ
l{^
3YLꂛU>`y&hd(wg­/86ETYKeB='%G&kK2-Ԕ~II*3xrg7O:ܾ'z݀%fe_`Px9q}i9cn F!s|چyzNpW_`)9\O0<tOXv8  3c&P{m7p4}A޾o3yFZVx.,SxB\tz<q2qcro;̷[D\%dp威+QϑXX:acUnUr}呷𰒿{1rN1<
4<<J<шqCI<CnX \q?
eicS6|ջUqT]CܤCX|_vzYѐ8L])cXu4}_ƈy%yǱ$(Fq%(~gc1i(ۅq/Y<~9Nq2&2GJ8sK'8JKO(n/ \Flb11A ^l"@5V\jO5hPfYl*l~?K6<(2msفq*x )|jF?Qcb\rmg9"~ӋiÔ
j=I1cHAL%x>E2_2	2s$R1q5/ڛqa&-Z+-*ҵe%׋Gm-^]WZ&W#,[t>`kx39T@}ǂh摑8 UޓP		T9IK}{0cxd"ek8qbΣ	sMD2ʰqkX}T3qK)kX);Ycz<e]Lf2T=jLѷeR{)9#Ivl%lS#hlse; s4lmf=ʖmn@y\jxL
Wxѫ}
EkfQe~.,HGjE6oӐZZ\aVnQvv'0haYrxIb,.+8Iˍ,{1
0>d}c2-?Pȓ7`z!&:jl73Y*<	eukYghT7Q#ʆ.]*<wuk2)`o/rPKߧ|-K|;NI|&-(ǈ\RЖg̳X|mmb|Oi쯼o)Tm
?L+?0g̴iiBƐYb<W.:uE9q//:C7-ڠ:O`'zj	()iu&PVm61Öz

ua|GC8O
en)]E5ߋ.6!("	
^ݛ',Q#Map1
.l{iw؈~u<T4 Si 4*khn3p74'hޡ3M4	vI#1iZ/;~_+|b;
,
[B!rT%/ 
~݆\)DTP(!LdUM8(Y,)fѹ^g8y,,0fi栄i<i>i]fh.o'x^9V@z([{93Z9h{ء\Q&BvB
 6nw.y\Egw75,jI	Z[ZڞR8SgG0aѴ
)B[i#',k+hKqM٠
3lwϽkO'֙/V
Yv}Y[~_AANۮO.8C_31nEYE.͕JW
y+dKPQkjkTHh7r(Wb݀t#VMQOpߊ6t;BtW]ٿ}hoJ1;GCl	(cugca95̚9Nkӽto^YͯS\$Ooӽ.ÙrM%k]hm?6ź,_TCOpT=tIj,iƫs)Rr޿	rG2	
	PK~H  1  PK  5R            4   com/sun/xml/messaging/saaj/soap/impl/CDATAImpl.classV]SF=kH
%M

m@hA&[Z@Dȋ#KInQ}h_d]Y(F;0]={W? ~XFM"㉄o$H[afYXb!̦0ߋ?SfKSI/iTe_=~SJs<ϐVm4iĪڅg2E'Uݮ(nR*R᮫	Cq5Pqm76^p+TYTg]5,^qgK3 h뚹9x;ewiv2*j~ikeCf.2#alvʫY])Qz9a8k_gxn?MUg%3&[JjL&vU)M%'aﻜX/ɕ#W#W7wbo
UM'\jSe|sxդ;N# %ܴIUJşO_U%{HQ4qX[jh?6=I
s[s;ؕ𓌟ES핻x)C2ᮌY\2&0)cawR]'`7Z5t#{!uPޮ.|쩟!S3oň6Xd{H8ŝB5F	M׷%uҳz`u2zLXnc`aF"yyiSV
?@̽w% 4i6["fR{)l,
;J7/wȻSToSȝ3Cv6¦BTVfXFxp0CxȓZ- |HO]_H<8&Q윏-}l&z΋@aObXcȹ=43t
CØB	z|Q4
3OG@>R:H{4oCt\Ν֣ tq] 	z[
LJ/K0 puDw]h H%žna8醮9¥GMN}ǥ PKPjE  {  PK  5R            <   com/sun/xml/messaging/saaj/soap/name/LocalStrings.propertiesE0}
k68rI"M*'B;ΔC4%+vp
ӫp?$xc=C
_#@VAS:vspk IjMS#Lz17CTbm'{ NBj}AvxfߒU)6FMdO1	_3[؛445Uu^
;Su岯4L(/_?G[c_pzϢ	QXz)hMa"IL484\|=WID7j{C2VH#lM'a4~v$?l\'=Z:n
Jo:DQ[Dps\h{7:+uqF
PK}s  _  PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/LocalStrings_de.propertiesEAo0DsـZvP;Ml(aaWVedPrb,#7&{|]kᛠ&
pN1S2Nm	ɑzSm<rYJ3Q!ia
ҿ^Gd/j(JeS8˒9x`KAud;YIcs4:sLהv(P58Wy~Y*I:}:;K9hR\ҭn֚Lhpt
;d!jR|NTt/jUz)b6VH# q2adt.Cqd18*I}D&7(pz}^)0iIeH/U~J(t
Ѣ/ciV_PK7  v  PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/LocalStrings_es.propertiesEn0~
t@-;a&
:=HML\JvZ{ɂ|#qU>]~ԛ'(9-{L{8%J$39SsQb'8,Ő{X;%W9=R(
	b{B18eÔ9x`KAgkSgۃĬ>籩h1Qj\@!/um~<?ߢ4-4p+?sŒn/JqKw
mF̔@Iv!CTv˥
8hNC{=Y6KĄRδ&M%@NƉAu;Jn@_'JK͹=;N7vo{]\wOJu]y8WFPo媩PKf  t  PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/LocalStrings_fr.propertiesEA0 mP#qn{ Ubמ$#;)+gRq7ߛy^+x31oa۽m3kU`@-9s%`LZUSȡc=͐{+!0i'@FYO>-#(
	B QLJ<f
Nd`{dzuRslr(rTச
fTu崩Uu/?|W>:=&(f~	b
#|-ZRș0K>k	NArt7%_iى,j1?6j(2U-A9uᦃh!%חp
\G>kZc##It^-ORJsdTVz-%B](A H#MZ$-j\0=	_+PK^°    PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/LocalStrings_it.propertiesEn0~
9tj9C
6=taaWFmbdPbػJ`@&~$<U2as
ZO5Qs:p.K HrZ)	&X!
6W=JF@!s_=IQ;#)9e98Ƭ4@Ĭ!md1Q|.ySCfmam~kQ?;q$-<9UUgN)bADqt6;dJ	TZWѓ٪S$&lZL'q4ad?]u-<SLVvpOC)+}{sXг3(ѩRW춅c1+͟pv`GrաPK?J  l  PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/LocalStrings_ja.propertiesMM0MTO	rЋי$N
gR!#egϒje{x'C^׫G("/u37wV*=:[ 9^aɌx{`|{aW;`%WH
/\*B&ݠ
="qJ ehx5%/r=µ2=z|~^8nƈi@^x[GwD!l%
"+>9$A~odhMWzp=;sE5Htj9g"a5ӓR]:O:;Ř܅S!d<-O<UE*cu9ewC͐dø-B{wRl&*{=Di_eW	r7[",Zw!'Ժ^>"V٬=?PK$j    PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/LocalStrings_ko.propertiesUQM0W<m/ m8M%mR$
.x±#iY!;)ՊHכ7/KTx'/=diW'FI<UZ^kiztglbIz{atsbd=HiQWe:H)I!MA9$Emgj)(kQI4txfYz^ԇ0r00$Ӏ&:x_է@UvpxWJɓ"bNNnA)]P聂9l2-ދ.)_#"ttnET,BIaZgf&Y݇nyJSi*F+*TMNruǣcXGzmj7(Y1g7c՘2gUÄ](ݵEʜ"Vi+#k^DlgYyD}PKZ7+    PK  5R            B   com/sun/xml/messaging/saaj/soap/name/LocalStrings_pt_BR.propertiesEAo0DsZv;MmXwaVmb$Pb,->~zxM2wY:m8'cǘ)88k[D2Sk
 JǥkѿaT0:
_M%Yz1AV:)Ngp65 4:φ.
vTQy[8U^,ʧVE1I/|t8%(R
Xz[I2S
ְ}F	@)a5_6UtуkXȺY$ƇlFؚNh?>X{!8L#uD4"(	WŖ[WWx5tb h /EI\PK^Q*    PK  5R            B   com/sun/xml/messaging/saaj/soap/name/LocalStrings_zh_CN.propertiesEn0zE|i(
`2"h|aD"
{vD@-lޜ G
^p´@V"g.czt'lY6#09;1aHiI7ez)!?	+iѥ"vFj5y5$*yPr ZPrB6|fxaVMls6
*/?-Tm`/ӞYxFo[R(8mPÓ{ѧ&kHz5Q͒3GΒtHsvd&j͂?t8ǲt9j[m˚+^j#MY;:C>=)~W2'U˄-KxV."1+w߻T:Ԅ^*2_5᪲XeJ<AE:aCQa~oB%$ePK$    PK  5R            B   com/sun/xml/messaging/saaj/soap/name/LocalStrings_zh_TW.propertiesEQ0+F˥R!ժ=LQ;wE=$yy̠㛣Nl<B)|qRiiu@l[$zpУ;c#}l!,Fit0#Y!%ivibW4zu
d
<BY@&GzJ}n\.o:ºnƪi@=?gv
%t;ؿyy$ܲ)-ؚSB^6Al9^v9ώIGwHrhAvMgi]ViUotY1^fTYȱ.csb͔Yjjtenyt[W~≡"ڭ괎I"e:wk3p_PKX    PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/NameImpl$SOAP1_1Name.classRMo@ؤ	)
Ҭ*q#$TT)HA=pA$x_
H GQ
U,̼G 7qũZ8L
upP0Kzm0[RDRO(B=#M<S j8*{,# 	d)X|hޣէC3X_Zek4F?Xq$be0R΄Id*4w=N+|V%w-fyMhrx(Җ(gz6u\E?9#CΩ;&X>3$lUzKEID..nw
Ń\Fokng*#%lBQqvwWp=5w=oyQO3%e^+)b)qx`'ĵ.TU-d23'rcp PKQZ  =  PK  5R            C   com/sun/xml/messaging/saaj/soap/name/NameImpl$Envelope1_1Name.classQJAI65:H|K"$q첛'AHFPs	twuWMA?=Ǫ;&&JCUt@pWoB;&Qo%CQZ^Kעb;~[M޽h\|S2"$
8mQ_rOFЏ<#_\ܚ*d<>f4~ؖ*6œX-M0t77ژɛٝO!IBI)	ֶvx<LW
3T>Ϗt,̢@*	̍8Q)KbY`} PK_זN    PK  5R            A   com/sun/xml/messaging/saaj/soap/name/NameImpl$Header1_1Name.classQ]KA=}<E
B/aE!Dbk:hz
z\'HH33s=}x~punlmJ)Cq}1VvV5HnD'¶"RqZ{eRtdT-E@p0Fnѥ~&}cn-Sj2ݏ~yf4aԖ*69_uC
6*p4qu~NU[ٟ'6ǋN!MѦEge{OH<RCg&l9Kw:Q ƜE(%,[W|PKDL  w  PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/NameImpl$Body1_1Name.classQJ1=N;cVG[+/4HEԂP(Ut+ikL̴R?˕_ě@H{H cՅEԡjpPجĭ]DJw[Mv$C.E'īm7EL	ڃ3dN]T٪2"%5˵vx(y Xti8}
Ze2܏20j3e$M2gHb
mLm\|s3	>'v5$bHQt(;&ܢn{l=\:g/p+f.~#<7q1<Xs摥Q"2Է).}PKf`J  o  PK  5R            @   com/sun/xml/messaging/saaj/soap/name/NameImpl$Fault1_1Name.classR=oA}s|9s` )0V
!PDHAr>s_ܞ$zj(()?0{	R(-vgy;~ V,8TE64\+6*Aܓ"X,֐PL*|/UT+G!#^/e8Y`#OMp,מeĨ*֊=?b?
Ecn'Sip4\9.eio	A.eZ8LY櫭82aP'5\'73عhAG՚y.'*
I!U{*LR%\
ρP?yyz1>;n1opӘųbU>Os[?m{^^*`Qaϰ
Η;j\p38[j9t۰PGb_.x2{"D-PK?(     PK  5R            A   com/sun/xml/messaging/saaj/soap/name/NameImpl$Detail1_1Name.classN@
Up4ڐ .Ę6fBZ0+>>qfD/M̙sӹ6LRXTu²y 18"$&NDCţs6,j=	>`+_̗r,xTXs}Xkw{uEucznȘg~DZ]3c2D2[Q_>nèOj4QNod`a UW	ISñ~XǔC$䰐!-g{rMJthč6m+#=GLCXdi
1
%bIa|<!MϚRxs~Pluf3Z%nWPKWb    PK  5R            G   com/sun/xml/messaging/saaj/soap/name/NameImpl$FaultElement1_1Name.classOKAƟ7ix*KAHB$^1d+_SС)C4P4<}اG H!BEWXM`?
LrgU!D dJ]5<)F'|$S)e}>SJxu}_Gfu?RlH}ݕ!SZƌf[3ͶzRmwD62_Qq$0qpo?124"Jo֜:;R܃{K)SgE@qBH#E0҄u{Dtʕ="qH[+}>)BNgf|^F&Sh PKLCm    PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/NameImpl$SOAP1_2Name.classRMo@}kIRL? )
i6p #$	Rhz6fI쵱&_
H8rGf
U,ϼ7 wp2Qpjゃeᒍ&CA!8<jywYcKPJLAHۋ}4/a;""L2IIƊOG2Đx&ĈgH2k$\;#UtOT
~.ODRȲq܏ǩ/Zfw
*êB*˅I)?ɧ]yrdҞlt7;-޹[|AMe'SXcaX8ډ|3!_:w#sSq	NK?BR_&;O{X06nj}E岏0qwZn6i@%0ol8SP5lA"y`PYL/̴cV7pdzPK)  X  PK  5R            C   com/sun/xml/messaging/saaj/soap/name/NameImpl$Envelope1_2Name.classQ]KA=j֖C5}"X`M;z
zA40s=3+CpXPPb{27k]1SVPoE'ĭm7E%h=Mӗj 0wuP#WUJ_h-iRkѡu("n5_ze2&>fpa?n+/1%X-4-0t77ژɛٝO!EOFE9E{e;0(7`$29Gx~ccR107#Gѥ,EdoR\PK}L    PK  5R            A   com/sun/xml/messaging/saaj/soap/name/NameImpl$Header1_2Name.classQJ1=Nʅ
RC*Jƚ2)V[~%iU(vS$ޓso Nᢘe%e3ĳ]DJw+Mv$CSZևAKFR¶"Rq
ڃ'e7Rtdtp\2I^;j>
|HcDq#DP&oMUt?j{!Q[^PG0~IԉVI9Xg
|/7=Um9'6ǋNbC%Ew_aPn3VU";³cKȑS@bV{*/PKUDJ  w  PK  5R            ?   com/sun/xml/messaging/saaj/soap/name/NameImpl$Body1_2Name.classQJ1=N;cVG۪+/4(n"jA(Ut+i;֔LR?˕ě@M
$ss=$/O Ƃ2CH*9<f(m}q'x(T7Tf݀K4FQ;HD;$[" {wRAR5~')>BZMZ>ױpE4nh}ӪAȱ/CNp.§ĮIRi,9Xf8͋/nGǻ;S*Rf1id(:nQt<r.Y[e8V3T^踘ET,M8S(Ka9+p PK
%rH  o  PK  5R            @   com/sun/xml/messaging/saaj/soap/name/NameImpl$Fault1_2Name.classRn@=㤶	-<4-%1M*U
)(6hi+|k6 `ɂOc(5, \{g>MWrXUKM(c('ǰy5ǂBy'oL#Cl.f[וu	[~O"t`6>r"kOֳaQ$iw=
{.d>"x$YjԞK
|X^>A*5\=$B?k	,:LZa)ǩTQXZHuP>8v8Fv|^;*J6v&9P~aًwj*4'(MY$,E_E'XeylBP4CP6|K	[hK`2VlhEhk8Gg`v*OeT@?'	n`^hIpB:O#)d".2Χ=ԃ9 PK]    PK  5R            H   com/sun/xml/messaging/saaj/soap/name/NameImpl$NotUnderstood1_2Name.classRoAfZjmVVJ`A1&1i0ݙuw(+&={ăGQ֙&MA޼^_..Xa	..9b-,\!nv&lр1VOi'Xw #,73`+1qzPG;B$:qg(CL
yK&4,BQSFIM[B AS\%4'A\ݾn}t

	S)gm)ń\l.	jD`sO٬>ۮxL6mIk)d:A)cG;jU^=8Scwi^kGߐz'z> Sp?긍+	۪hmdUU:ॳ8E=&aef䁙}ġiq8s)j(	PK3  [  PK  5R            B   com/sun/xml/messaging/saaj/soap/name/NameImpl$Upgrade1_2Name.classRMo@}؄
(P>BlH["!U
-R .h.6 q$9(&HP8Λ7of׏ l຅X&.ZTD+&.3<՛84۩p_2<%wPO'"?遗0=Xۻ" HI<+>
|$.#"Ҹ	"WɎbjf(S|$L+~8*?:3Xe4S=x
U
TkÍ4s>Lfjfv}HF"1lό*CSO=p$Spo +8IJ/"5p -5>԰Ƚex|6?zGd4F@DոE򗍻w.jpgRΔu
i{kbp q:SͲ.*PK.Y  C  PK  5R            L   com/sun/xml/messaging/saaj/soap/name/NameImpl$SupportedEnvelope1_2Name.classRMo@}k؄(|ِWRh+m%uI
w\@?kZ@b;3o>k&ΛX,`Kj&.hRy,L
7yHP1Cj'+z 
9\|'<zXa^Eg\rU;
 Js/ˌ<z,|sƩSߣ>c64flD々T2j[S㎔F;U̎)!(	s^=ea
A[b^	TǐPT4cQw7&IbLO$IxdҜ7hHۭ:mF\%?s#($2/>wN9,D},\>u<S.[ɻv"/(6,70kXG忎 e1*_Һ8-~38+*݆~2Ҕ=TؿYTUgI;PK^*  k  PK  5R            F   com/sun/xml/messaging/saaj/soap/name/NameImpl$CodeSubcode1_2Name.classQJ1=kOeoF*ā
#J:ƚ2)3o\~x3UA*&$ssNN;c0e+SasgJ[v!׎$CUZvҰ';/I%3$/:"^Z@$3<I5e>]!<Đkqua1-٢
c͔{b`,Nn/yQJê ykp2wsq-gRB}b2P;{`/Zi/Qu@usrET2U,db6jY43 1XEPKuG  w  PK  5R            3   com/sun/xml/messaging/saaj/soap/name/NameImpl.classX|Sy%[W
C`#ےmc`b1 %E4i@ׅYKdCCC6]MI5]uֽ5S||{~h0<O>4g/ӿpCn}@>G?N	7ˍ\174B%>MW	&4>(j&tPQJU,bM,D
x&1]:+4QtGFq&<nޡ՚k4zXm>-ܴzDGQ?6
2mcG7 
>:t<b1(,n2Y.Ml)[k4? nmv^&zY҈GIӣc G;)SNiAˆD*cG'X"r$92
X&2#q3$yt,oOߓU2ʍlS>{(7Z,"1sʌ]#ˍ[mn۲}ΖE[ђG"C=C";B{'F8f'ÙT4>=x:c34xW0pϮ@M8ou42x ҿg(PE
Bϝ(Zⴡ&SQAXb̈Y+Ki#=5ǭW,1!:t&cb')ԋ}rYW4lT4W'krAѸ98=5j1u0RQIwf2
%xT,<eӆ!m'鄑!l%J ;nw8c5`$&e%K9R	K3i)oNcfx/n^[&J[6V{}[ydX>2#dkQ~ƄYBO&˵4XdvX\$aw||#4 Y:afdPI#ed>kѵQpwͼǷ@В]r]jg˭G9y?"hzCd^Rnm\|iSY^n	s,#J(j+4Sڤ򓫉-*orޛDA_&jtl;̙7kVl[qEŭhN}W~_TI璽ZUW5ye7-|'::d]V%5-OSXSgU%(Lk?Z7jmiZpwswTmsө1sGcE!Toۆg:=DD:=Hts|GS߼@_7yuAnzQЈ۸=[tzy~>&q{w[G[{yBD&d)~<t)2B5ѯ:/!}9aĺSӬ13&n1
XX#F>0bPŐ>~1"(갤O"MDx"5el>}:CY9
xtmC`j:	 \;
U3w!VgY.t:] dpzlҜ2!-b3U܇aÌ
=(N_㑛NqTNK9.nN
Z'hk[nYfNru)>HUˬm#:K>Y!luBWuq]easju+7/V[@ոUv.fn_smZXS[OyjV˻Cz{vWIopMU#y<^eo|*ܛ2\`
Si(bLZ>˩U	Һ8"²*uq^,/MXPiqjqY!ò\0jI^ߎLpqP|s9Ǘnozz4{uӕyaÎ-&[yvc+3I3V5=TZ&12Z/x"eiڮ,@̌Od&Qtns%kmyt9SgTnrʐTAt?#_qC`܉!7_Dw]Ts>
ڂ/pU=J@T%lKe[ϒ'|4	r7ci|GЮ"
[C>jjjZZK+XQ-"1oPHłq[ۉۚdG-g̯͒!Ewɾ/x|̊)\Z L3WvA[(Bҝi;z>|\*D'3JAcC%6E+m)S]R`u/޸;WvSle*?%HU3X~y]ZvbK);p.Sgi ~.to{h8G~O>=AqR_<X\_ gh׼恏]Z;v}Z!(Naef#QR"{J'9s.ОU@Kfie;_q[*yP"c*誟,
_F1l6AJ@BV:A7]|4`=KЕTCIT]0On$Zm1.Pyj8
;Dit,5¿Mhfi-sS9k7D)e]Ei++mJ$ų4&mE1ෞKy/
^"lzCRۧ`TH[RyPP@>
kU@j~4+o>z 0*R&zL~+t>Sy֙,`GUReYah]yY.~1Kb[K_$8o$AInk<T/C2CG,h#7Zf6F \6
"D6ʹ;%TjsTW
b[eGoUl|3T߃]{+\[bFB}pBxʡJTD?Rs
i#j&$ԭH;F#AǓH#)$w! ޏ|1'
4900w1>} PY{TzCf+T)+kVTԕ.*¬_ (S*%6.Z<^4V++/u^.Fu

bW~_3hy*u=E9EVi LcEV;
}x
&Pw`?(-⾞~
1LeG./ҥv.dPa,)[@Ta_Kev821#P	̞
3G5Y?3X*bo
	N 0#+('22QA]z@>%.]b7%n.qNe:3`#ל `U'!ktx	`zF  p8 tA8duS'p -';N;IGב-읜;.Y;dGzrJ^iw.ֱC͐ưc}\r ]Q،<yFY
uT_8pxM	;?Gf=[[
ɢw4+"vOσppsܢeփb-zYpU7
$	A4 4zl;e|+%5*z%`z%kX؟'/ݔ3{:֭[@RI9i z
0iЃE~w	ˠz ^}w}AπnUPKlΟ  (  PK  5R            >   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings.propertiesMo0zـD~vHеEa
dIdA>ʮb`_R>ҺWufŬ{υFFNVi#O1ߡd}kT my!6¶25Dkz/I;4ߐ\g$C(
kmZR!z颲n@C;%+ưohHMN=ÁìVt-(dW5n(e9yH
R[j2,5s4Jx`;/ ir
q؛m"W&%0^MwU]'ڵF	^̋
QY::笏2l}x(Y)GWpO7F8& )|+3co(*Xġ>yVhCvwW Y2;{Zq]\G4R٣Kl"p__NeHTmY欂%7	̥U8~~פ-0$fy>w:
+j{N,p^]^\cXGtKɺ1vZȵ>A|Z&^Tpݺxu8Q"]t_Y~PKyI  j  PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_de.propertiesOo0zـXE
&-Сhffl$Pvw]KrDߓ,|x$SoaNS%]Xʉ'0Ao6̭ݱR6tR	=WA#2
PJﴱz-r+3&5!",Md2떍wpm
t)T:mm?@BC>l[{TM_鋶AqM,U{+ \Rd6)2%(}F}|1
<"-)$6A]؎q1ߔ|;{iD6zx:K3RuIպ؆%{v~Pg1%/$BIL,YKiz't/u434aKW uKtRǸN[SM?ʅWL(o72Z!T{eSfrv&Dl<٨A].<h=nZI^x(S-ӅnP=ntk%aiyKA8p3%_4UcX 5sCi@@ۍ7/FHA܆NiU+էQ䦵6yH	R Yz
+\PKv    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_es.propertiesSk0_qЗ
NA=6tZ
0Wbk%Mݕ}'gQC~_w:AM%gg0/\  :EV10E)5:fH
HZAZF
{Ba(.k# FH1}%,\iI{(Ѳ#5)j6.ԳSNv-g̴/Y}^*.[Mj^"Lrrn).H:gL)x
ISmBm#\9΁b:_r=S	K!X0Ţ(ŮJ4*EgcVl7(_ ś(|.!
,d	Rxr^N|7{l1~xϨmF?y*K<H^V߱3{:qͅ" #q=rWwEƐ#MƐ7<B#hgI)bS҅@2	M%d'DVj{u|&KV
kGY܅t=tlY^\q'gy$эVNn	Qii0Ð(21,<mzW؎EzOyPKWׅ    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_fr.propertiesOk0)rvn@l
)K
P(5k+%u${J{Gvܤ!Ѓ1F77ڃ3IUw{ȏ&0\,jt [m,X Ԣ=\ \IN!V,R>j[B
aABRJm:v> t.b+ v.*ed*F2v;pTң\hc26τ|?ze^(.[tt1=3	hjOp5T)Ohv#E8̶Qj`Aimo9eR;'ⵡ`ĳEJT󢱡Qdu.C5_,;?&3ߞ4JRɍJtM%LHoKejY:o`iJk>3.o&r-r=)Hځ:\3?6
ڍonGLӵw!W5DӿRFaL@贸߽^ >)aGEVr^8|MI
;i>J"֒Tr~
iג%9?)8	Zrrסeg5haR7PK7|    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_it.propertiesOk19[޵zpRBz(Yj%1Ү~64@Ƭv<ʇG2UzfŬ;"Hr5ȄQZ"F1cm"&!Q7AG*h@FZ4Vnخu)keM#5!"LLd6m2QPbڨ@TnsjګAte!BQϓFs\W6rQ].FߒK9FpKҸse_rRʴk">
F^̋RU$|mgoX-KQp;(d%d	'W2%zce?/Y&V1!N:IkܓܸЦu"=P!U-<_{lN{wj~͌
6l٘k]^t,F̗(1
leky"P%$7lǲcMBAk=p
cxYCscо#lNRdg+.O7CS04ǽk}S\Ta0|װG~PKknm    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_ja.propertiesMk0+^.5$d[a(v-jB7-#94rgF<z%],.Pދ_>T$%AT-E׫^""kTa-TQy5^\ޗ)$d3n@N#@A2҂WCDXK`k*N`%U˄`JK0hst*!y%zlX  8
JbZ=>>b:^Wj(jEvyr,1newW|[>X^
vr[2(\,Lo~FThR3G\9"{"hԶRBnjXqgxM-q/ D/5x8ݦw.v?MB?/_o~X;ai-Ec,0(L,sc	C}hkzbDk
g(< w\O:]D?dDZV?G7芋AﴤIU/Kl&nm4;#f1C#nF`pMv705x
6Sʲ0s/b׎t ț?$f8y CjKI+9&HE':5;ŭEM-ҙu3cT6aB>&p[NSruЋ.YVӷ|Vӗ<0Dy_ﯦGd]gfn%3=I_蠼,izFfhqPKޤ]  x  PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_ko.propertiesS]k0}ϯЗErt40T[$c}Wrt]G=D^sW'Ⱥiq,sGJr)Fd-@RiPBu% އJjUWTR]l F@%˚!ЖB;en 6E-{- (y7ٵp)b@z,*@G@n2_/D8S]145z!z~`U??(%ɝj
6/Y:g3[$FnPHFz8n
}ZMgE(`f22VT;e{ْUr{3UFv;dANd,R/;cm(lAO/
,DsIX7F {<\5zwLd{,jp%xc9CQfV~	\ͳI[M5ԅhZh0
H)pk"sD}k]K#EQy,r|9#C&3#^M&P+ZYtJky!&y7r6%xK댥#`u=7ԕ>QWK)편4gEqܖE6nx5 $kvjgIv6q"tGQx?(1Ϝ,7PK 2  X  PK  5R            D   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.propertiesMo1#R&mF&E**j q@BS{5xmn(xm̼| <9
aRL
(
Z5vt6Ec(RhI}t6`!U,"=[mPBhX0)
0Ba)v#M'q&`c
IYВ,JQaWiY' |<v:8_ɦ&☔e!|V_Fwѹb'p^&rA],5EI\BG]mBm#\8ňlo%۬v,^LRDp^466޻ڊ{_8us4*~B6=n)r<uϓ{'o}=1OVO)s뛴Nx<Ohj$<L<K{9xQPw<?w1vҒXT4^
2
6&I.IXE(xZX'
a-oJo]lp*<Ð--7bT{6е7:at}'2?1|_ڍ?4Ʊ'ɿ	BWڒK_PK&w    PK  5R            D   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.propertiesRk0_qЗ
E{p:Z
Pbd$9Ywkt:]-P#xY\O}
w& ߋN0
`3B0kuR3,PsjDǞn
nh@GDo8lZ<
V(	'pnE
xdZkju>	p҇5\ZM<ym?Yo/_(7
6z
v,
u.7?7j5ߠz08>--1.1Vjai@=2uDdf{-f/$>kpƃ!,q#/UTf
Y!!O.HhGxI!u8\Í[4N$rNhBWRIMSg-fh"Iq2ghFYl#Sm0'?J)c$**	޺m㹉PJ,%Z5SּD2|Y=,*vйO
$y
u0wB&9!pٕΥ\!PF?B-°ǅ&/^=%DHE!nfz]h@`}SP@l&IjѠXPKi  $  PK  5R            D   com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties_k0).eD
(ki6Ca9deʩXWWwϑnf7PI}aQds({MہRj e@90m3a:2A=7<hzt(Ҷx GTМ(~u~|ψEǴۃRv4 D\57Vr)L`D $=o{RJj\g.:D:َG&YnX^]ꯋW&LaE5-ˏȌu6јbrf cSR.ÍCn=1~A}?8FkVAH.]4JIm1{.|IwU0Ƹ	1M->W+ۤ"g3kVAޠ$U(A]SVr4I|DVfx]x41ep߳4Gˠt-xjrFcxa?܁zjƽY	0h_/vNl"ɢRorOchZA)2N8=Ѭ@8|sJn^ڥ;Ug>NcS]/FD=#"$|yCfS:S
v\\t!([p!$O?~PK_G^    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.classVYWW.L3HZW bQ1,-{^ ?Hsz=M3ͦgι}ꫪn/ C
pC,bJf
	-m	w+^
)@
x$t	8O a&0$J fiI%\W',$jMgdVT3L*# C2sW3#]T]RZ䮫ͪxE[%s  ^1:v3l1,>sC6I"غfNi!7cg7`;{+\sg"0H
o0Y?شC-i:WG<]v
B2(p"A_Fs`8Y/jD8+hI/Q]zpr|I
-&@=zcL/{tnD5n!	UP$]Ϸ(Ӭ|U
#qM_2CQ 92
䯩HFИ4V
յG;	Fq,H*e78˺LCB;C&-pf}Ga;aKX^bJ:=[m4>4!4(ñ-0+VUWEUL)	}ns.q5q$>IS|Ơ٫==}J93e&(A-/lyŰu\?u(N/hLǢf.uDj;r&%`z
_y<op(
ηFE M
.dUa<ycߜ\Re4'^lr1+6S_λ*j/4C7
ob2L`حLzG}[Al}H|p
&74541DC$CG5V~B4>=;I^|t
iX7A%NJa^՝k }&OT:bЮ4^iпaHvu}mkIk zR]GY
8
cPDT퍅$خMհV8`OMz
{Do{ĭ%'Hvu]k)PCEL@+"Wm8ITeru
r	,΅An`H^
e>91?|V~%vܒ[`UG+#1Ƈv%6,
H[8kܛ]d, i-+F5RtPPT6IL&p	C!vֽ?!-QxT(rRU2nPʓZ#gp,1\ݐ}cCvϔHmyBȣ=ʣb%0b>cn
eTЇJOc5M{! .p
CM<(UTOLNPK  s  PK  5R            ?   com/sun/xml/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.classUkOA=ZۥjM_<PW$GB#
4y{Ι{1H$҈,ĝ4rN#I0F
)L$q7

#ܓfR)TxCc⅁E3wE0Ym5mZ\ۋܳ<ZL-R3݆ca
n9uỼi	oݰ1jj>tѴ+Y<]N0V/DڎpGܲ.

5=nf`=Vy&
4lNG̕(&7z}4)	J2:b=9܇pbUi
CjoV"ډ%oF.n3EՒnHj8G s1TCFۉC^?aouƶES^]ݍB3$ZѮzzGOכŊ>VS":Q%
OLsLiFa(m)Yћ[g]G7@%qI<v+2((p:Rㅣ|'=FJ_MJmW*8w^ \Wm/L~hfГMo4<nx	j.Hl!_@\D$WKBL -t-
n{ɽZqUIa<B//l!;,#g["rirq'˒5X3i Y)s%:(F0
\"9Jni*d$Ʋ={FߒOu"	;EӤKN1O]=T΅"
;YT(PK[M    PK  5R            @   com/sun/xml/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.classUmoG~6vr(BӐ
"bwL**URMuv}<7;33翿'iב:0-L'\qWS#)HaVsRy	Y۵9R`y3V1+"xvfK3x,ͯZEr8aP^I0-خXU	>NYy}[dfFO'%^sEGi2MW9ddh-`x_Ð[^Un	sC*OspMU1Xtd=V36axUB⹽cŐ%kːȎ>a8B֫^U6uV v6_GiY#ȟ.[u0}q@"^ͷĒ-۵7.J|qBA
K)
!
w
B?
U1FxPjŭ
y`j	
C(r39+D`[s*001Ysz1=d?Aջ}ٹdZzis&Dv4nLwb MSEZ}z	e*;'|U҉}d/fAdwyԁiGg, cFVHr`چ:=2?
Ћ>DjdӦ`ca;GV'OH$|8߄7NFO/&OHΨ<1J+O *DnHG!6BZ,]NمohFG!Ѷz|S)F>ړ4'ހ	0I"ڧ3}E%SJ2
F; ^>㬆,
z1'L5F#G]ƶ!Gc,qkߢ7?xS4!t`D#(<EK PK;>  	  PK  5R            F   com/sun/xml/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.classTiOQ=S갋`)]*VH
@Hyg4BC$~5G	U퇷{{?} 8Zѐ#Z5qDեC1kaTA9ek$aX
O&L۔ɁȌ!Z
-uQ]eBNWxT Me.pmc*p]^2re;:vXZz3ES#tΪU@a]c9NWEQcޛ\[ tܕs;19/&yMK
!g3Lǘ+rInkڦs5Cȴ:OMA=CryTvIy^aB3*ߒ]-83J63]Qi~dg[
[f*甂+-1)v´J2%^5N%%+A	?U.A3d:F爪aﵹ$dP6jC玮?F5Meh'=N"*s
k){S&r^#1?Db$wϭSKkT
3BJkvVw5\n
]bT8	SO4KXb!Rq^:ݢ,;ݦS7HXD=7W%
WhtM
3549D=	h$C2tRĥ]O{ORHfg'37{Ȗ gPK    PK  5R            :   com/sun/xml/messaging/saaj/soap/ver1_1/Header1_1Impl.classVkSF=F4	q6yHq i	4./MT#jK$WM:h3}|,0ͬV{?'!+LDqɴO[S2%HG51Es2棄Z(#'X@²X
]Xߊ楄d|/JtUd8oZ3J

e͝Q4ϒټU܊mKZC]]\KMH*9I-3D&g(k|R^s}D#K˺c`0.Sor'*Mq|-;{7evkc[H<yRc9Emk02Sbώ!JsC<ԂȽY[2)j׳¬^SE<C	t@bۖB%n!ռ%Lm΅#\[#s" 5wtJQf;mϰLWu׉N;<x)hXhΪ8ym

	ypZ4
%`@n||ུZzQ-[
i5Q%lʟO-[EjIcJ!ko?AezH&(nztLSg?47˺NTw}<vpbiKZp9
\x"܊h68ڿ&zʺad$bVkF0RTU3
aue][g< vAjv@CWKݱ$Y;d"R 
}s""iRqe3:KaT`Heq5a<y<04ժK%
>Ԯd*zT׆qƗT.$`ۛ!tCg(l!\5:hPVّr,ކxrHۆ[x~/ CV'~J_Y4D{wv7׊;}$"	zGOh<0O162ާjԀV{ 5?wki9&ޣ(ySMZ"1?&bN]}X..RiU~N0dzs)5ر\cԎX<$ZB"|bSqgZC þfGԎ`4P@_U]
CCX,5Gqr%
gZOB/~XzL|"O>iܢ$%hp?PKYF]  
  PK  5R            9   com/sun/xml/messaging/saaj/soap/ver1_1/Fault1_1Impl.classX|y>.Qa	$H@Ӄ%S"P"ARx$! 4'۱G6mi$'"ȶƑuGڦi:6m3ItN㏸w}/ADkI/П{)I?!^IKJxɤzo+K*ʱO}bC1>C,~~,EX7A1w
xLo?]B_31+\/sK.R;{:ФBz]
}E*B_S袇+UKVT
ZyV^buP= 	
/υ
ݫUn"/
pY\*@)|y6n/
nS] *RU
FY:1F\+O+A#Q#z0G
GGxLepr#MPl<hcaj;bԸM#-]6oT%6l0UFjD0Bzdw{$96} #FbUz*@
4'v4j$R1|-`x	NӈiەX&
]
;bi%-/kS]^

>sFdÑ~}f^k@(vv,`ek&=J֜JzҰD`Z3ap
Z PP;zcٔGD\Zr7ƌСÎL+0͟#T"_wd85=T;rBr:E2s POӴtmiIIW9-D
+Ez{4Q	P'~U.3.KL`2~Y=!Y@ ^3LrJ,bjPfVhd8nQk@&_!<fz낂&O#Fg$fzZ0Ng곬Փ4:Vd@x4'S	J6ezW6t34.}y̜/dkSCd!,nLjOӢ$)N펉Qjfk2][n[a':|I)sZDi7+.2)R9Fyjt*[cNsLц:>zQ6"v!ckXAG	^*o.r7~~ң*]g%-l3DunAm]H0r0Gi@8r/y_S]4nzQSTyoVyߢ|ʷswi	"t/*lxa,k* 4ʇJ):as}s5+,h f*%p 

pǡqQ?p;g:ӼX6f	
3fR5OnAp%e,w&Zq`
oDXF:
x	z]iLFeXj[cepXL#%TN	E'i3(llzfJ_E>s.-e"28ߌc.jT.0[k@F.TgܸA#4V)`p#hr:T߃{<<OE"iٌH^%ίy		z]=gTz^xj0a辰9'CchRfrXB-xyK$,Kuހi`dSp\X$bd/2aCORSJC*?̏(?V3u+6X^ D 
Ƞ6mTq~"ܛ$S`.e"TF::k%+^ՆzyLY9*̳JƇSzD&:WFtcnzEGr6ť1mAZr}H&A[qeW{H
`AiA*E zzU pפL=]҆ve{n쮻3eZ(S)!]klwu[tlY8gΛJ
4d/T4
vSLm>XZ9͚ٗsucKl.}-.
.ݺqف]m7{FE7	@"z=ݻQ7}{87K}3XulX׸1L­W25y~3_fY2{BZ[K;;kV]Y:NWf}@#6a7J Ty9.5Oh[	y?$pOM}W1b7ZrE&f-6^:3-ӧPǼ$cPMII"B?"<-0[/o;G<IEgVDw9<کat7}H>J G[ o# ORq.**.XlX=Hٰ۰_#뭝.-zx
^%䴃T&:$j(%CҦ-JQY.&uCxjOꮼOVP~>fSoTuoRnN4Is2X3TJ;\)z܅7aT韤\Af:QuqēpGX;.IE@0}RB	Jy/L6l%OQM͍UаKPI%Cm%dib8EL>!`teE>%r&~F&J^%*	aaѧI/ڧ:JIOa$QoIP7 BRy+ ;LBҵ~ED }~[JM>CQHCy=t
]ȥKy#"R-GU 5|=4EmQ0Td	KNx&0o1^`
[[5-<K_17EW14EQKH	Y<{"Xy6hY79^vd-ڬA8o}r|rT8~~FI[E5!覨ze.>afW`PHgh[LEY 4nsBS$Ci3?AKҢ,řl.v%a TEo@ W%X~my1<ή$_iMk'h)jkrPNRi+ůWa`!].2s#.)	,9vuUJ-Z}Z`r;4Ŧa o|IFYnb+
.sC*]@~/e̝3g2B? g00^S ٌr~пM}I}.΂^W Kim߱ӢaZZ0#B+P1oRkA6 rn=!u`$^W{ld{AyKPҧ5yاmn9 v	:~
qOM('rk'hyڧuOhn9y:8;"@-<AG }~"xZV$kBhZDரO͢PN]hi.wam~Іo&LҶ\nwqht84C#CXg"v$-oHKx9Ͼ>zߗӿ]VwꗭU풪]R-D])a+Ş6wu
ṫuڽ<
웤A
i{SdhL"emhXEh[`u&ֆn*y}:;f* c5j罴okvZi3I}|0ؠ<BwAzs<N8J8N||5nVKi_bd_&0nbtBV'[9gQFQw鎢&|W|M7	/MB_/&N9@m$ 9r[&=T2ʃ^~N}J֋eTD7mG(Ë2F(D%gZEPCgiTͯUDjZ#4|hƹH+'QC>Fi4-|~'OF~P$
.OjUT]NQO/)*v%H3Bf >:PKف'  $+  PK  5R            :   com/sun/xml/messaging/saaj/soap/ver1_1/Detail1_1Impl.classmOAg(EA ,IM	40_X]swVF&~(l
Tjk\gf~ٙ;%<1 S&aZY@ڄc9gk^WA'eex !<Q۫;U-K7,WBP	
}r.dbkށd(ڮܪF;3T,	Vh3~ُ2CV'Yퟀ
P{Dtjjz~/Z"7^hIњaàKZy6Ȱg:t-Q݆ "\rR2<m*נ",_zP:W-rT<	$EezG	ev/K%^QKt.of[TmJ?wKZضshN$%K2܎#LySpRN?إi$Q]g?/`fs3g`L.="	$J<1!M21QF[oFUVlM),9pcn3jS.¦ЋFfU8oy0rTk^ꖥuAp#IU "߻HD5+9K1PK=    PK  5R            8   com/sun/xml/messaging/saaj/soap/ver1_1/Body1_1Impl.classk[FYBDmeP-ł[J!;@h6Y,V}էgfCr-<Of&swO)T`Z<fLE_9*㹂L3T|"XT`98VUE3^bM;+x%Ut{?(XcgɌt{9[q7,gK
cG]#.>YvB;\.oOfv]C
Z
<2XcMYКPmpaӛkYbۖ0~]ޤnj+;{A1ϟi'<Eq-ݘgiń&~/JsC
#Tz(d:)cܓ8E7L//P~֥|rb}M)ߍ14KnC
)XA 2L%|7j,B ܴ#aWM_E$dm2躙W,Po!ãT?)0ͥdeo&NXpoH>W
egzO2)%^?
u-x&UQH
?!_ߗ_]/<r=EE}'<FSDa!*QCyNMl	aQniWG)	
lA6(	Qqڥ=wvNh{pg
6rRH+p43Quo!T_dFN[d\rF\ugIEJ(ǉzhD1!^nTQ őǓW:7ӅZ#euhen9*:ZV/npV7kv4+kc+#$W	LzޤQP߃qw]G^n?W$#zS!y.$+D.r-iqDX!VA;B1A9@lƿ"r\/%`1;*=Iՠ?Ak`VΒAn¦e	h43-2DtP['"|g_O'ŏH2yG#vEji%#?!c|OCpvc_k0AFA!ɠ8}ΪUDwm)-z`~PK%C    PK  5R            ;   com/sun/xml/messaging/saaj/soap/ver1_1/Message1_1Impl.classVkSW~lXh@Ajr"hj
XLvcvC/Pm+:m?v{n. dr<{_2p7:íjm	 $$z:X!cw$$H3 K@& 	Y0ɇu		JPV5M:FRe\Vc3i8$ieY:C]0Ԃ-$i'ZrV|mf8KX)Κz*timiiuMU+tث"ְ'4ۙ4,[w<>-3G"uA$v#Ulre'1-0SFJkzteXꤙ:q'k)-e*aYy|eX-=	3dwg覵w"
0=c:ftnmHPLG+>Ձh<kW<pz}*ztEp1gh]fYwx}hr9^xK;d攖N@aYp$9K>R^) v*DEjb&!I\&s""#[%!u22Qhq\dh!%r$3&Ţ2,zH{gIcq+IDg[q>(|I>a4ps\<!CnڞYʋ8. >'hbOO2(9+dM;N[b
UzFfJ§3k鴞Ѹ`3oM	eaN&NeJ TPt:i$Duǀ;<ùiWXV>5R
uXMWrWc0|wH飉MT.fm
9KvȎg蜕ʐzPo=NJ
))zb>AE|\ '~Pdz}Nk2u9WTvNMQt(DC9X悠ώ_Dpbl~l{(ښ^X6vs5ݤ]njt+wRy4Rf[r&{»
] hNvZӓѳcM*ALOT:itЅnzr D% eӊC]1ϨKXb}0sd"PRyT?y4 |N5kR~RS8x/˂8+(<dPG$MMTA5!t̳y~EHATX#f`;wxΕcKO\?@uOL[ѻJa6JC=!ѳ伐eyr\l={_yP XT[Aڏ`+^cd	Wn}j}`\e.{b\(J8`{k$Lᲇ<K:!,r5H+ΈR~uWvЈC/k]ym}~k6uT" :UbqjZWT$d`0*QEp-
-#ئhzCsh<N?A+OgƵ}VEyT8BјJ(?&k)P8t'}G"G.LEPKtP    PK  5R            <   com/sun/xml/messaging/saaj/soap/ver1_1/Envelope1_1Impl.classTmOP~.t+Ud0TlPh4M0|tYvc+4?xn۔e	mr<9?~Ć{X0,I@JSTb!rÛb#hFǱ
GoXn8?17/?xfn4	os|l{u0^\r<ܷ9q*g+`xzi+*Fmk
GFSWDa=8:_0L_P.|vȠŮW^+S4Cs%wq4Yɢ#93.ckPri]@K)kHd:a-ǨھMڒO&(簊F&!LW<ÓCDҴ8gVDSV4~yx0GM"Erv5iK=q~N&{/zT'FzjdT0R*u1NCImNq$a<Bp#wyLFѣU"JZyt1|Bv (i|Ũf"zZDG7h&5744.JȢәUӢ*?K
0>UgJg|KAQz8;pqBl?0b, PK~  r  PK  5R            ?   com/sun/xml/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.classTmOP~VCaнIA1cJw3J2ێ_ e<+sf٦s{s?}`
+
p[0K2(pWFAya2JǆmO^jc^V;Za7TOTњ޲oXMZ;NljwN3o=L:9fj!P
:C~\U9u2
*at6w<!ɦRM1l?kj:WXZ~LAj)
R)tŨ0~E0<*ka)Q4.;##1~uCiΛ؞2;NKCOiXu%0)aӕDV+GPia1S"f
GuPK7DaM33>x!r&ΦXZC9LA\l
L
ȥrmcHV ]02.a@2PMEa;6	;1'إ^" /#	ץR{i"(p/U*EƄRengX~PKnP  0  PK  5R            <   com/sun/xml/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.classWi[V~	122n*XܩKb/,c_S~IfYܛ;}=ϣ p?8W0`LL1
\1S2.+i񦌷	
Lÿ)fbe	y /e,*tWBK؟_dK(m¼yVB9˵>mi"!5r	3)6cJ&̾|K'p
$ʛcEXvlAMcc]7	4q
6mٲ!v4Z@(F}ǖy8!wé"f}Bɐ7GY!:OBs!w^3}Hډd#?8K]um4?M,<w"Cm$<_`#vl)gC,O(X2
2nIPM^ۓ; 8Pn1">E%l`[&kֹp,}.M9gIq̆-ѻV.<p-kA
Ocy7ˡKC%eܖеe4nԕQ"!sCru!g#0섙}9
C
/☄#;{:OquN0[Y]ХwHǸܐpr-C3'; za$m@eو7+`Y"&)zG'TBiL~n
_ٗbpw=D@
_˷X7Tj,Jc	$+ ]Hx7Q"޳JBX]_N&DwʳSQ}mϻ9[ҵ~%d+c}fS6>%,IkԖ*-:Ud6:>anrNyWamcKBRgz<J^S{cmd0l;i`AhR(L=PSzm[I)ӧ~]*YzӧQ1hМnz[uHiR=U#HfZlvt(􄠏,m}m5%b[%bf8RBw58ΕP#L'eRmDZ^R:!?5ZLߪ)^OpKY
y4'= _h(Ah%l?1.aC4Mg2+gh].aOG[	{Khw<#O\HJN)gӳ҇~Wq444u"):JV	[C,?G{Dy^eh%4> L=DR+x^E8#U+
HOPb(VyWph5XJJ%q+bw$bf*hmU(dmeg^x#~.(	A!ᵈ~?PK3!  
  PK  5R            ?   com/sun/xml/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.classTmOP~VEaнIA112cJ%}WMQs2\6]z==9__XJS+L^%p_FAya2Jm^c~VۖZa7T_U\ug7-nkVڑÀM.3uMk{o=Nꎮg?:g,{WuhYܰIescxxNl!=)GsM!c
x
HW50U"_8(yyaO
ZgJMy"{xd?Ыn$Mֹ(4=4(Nò+$.	F^ƞ*xrQ9RXʰ6N=#ah]ſ=!
3wM.g|EѡZC9LA<l
LK)plV navNf0ȸ9F6=6%9`G@؉~<.Ǎ&h|t$ʧ_JL~ÊDTJ7EƄRenGgͅXw~PK= T  0  PK  5R            >   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings.propertiesVn7}Wh]|UAI:e}+ݑ(E$WP;$܇İsYRՏ0<??;`4/WH[_,ܣc0bk; F80V/-_d
T^6B-aEVpI鷚k.$]j!ʁ^DJ
V[/Q?Q5@rOHfrt00mG_vʻ#e=0ӘTCb!Nbv/%oݳg_nmTQ
耄(\(7t@2I5#0-{58Y#StM9Ȅbs]o~'DWJ{ @]P^&e-x+=R'h45J>Wh<`eufJ\G$4wTr33[$(4]n&:DAjgМL!+uBßI6QtftRҤn|.7\sOgoI#C8w)XYg $F,s&>kg	YǖDR2[9uik8e49}%
l5F[g]FקI	{2neI2`ӑOP<v|Q}siȔc-vL# %fi^!A_W^[֪r0NsCșbA!R|a&z2yu5 hGZ!&n+-}$x%fb484㳧3gsKLcB<Y
d+NY"k /t(0)EmGTwZcZm]wqY1+Nk\iL"NyqY$''V9R)C}$>A'\Axi_ϸkd,)蘶g
tMYt+r*#k-3[	"<,>NGvmh
[k([g+0vdm]O|UwȝVd[G'4n4:;!IUw`eۂ39cq2i1^)q'}Sb-KA?=>ÜSj^"XpwHv{PKB    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_de.propertiesWMs7W`K;cp>NJl7i=Njŝ:ӡv]N(rCr%˝Jv9G#xkSEG:p<NfA:P\.V203=5wD>Cl䊍!$쪒fL+!}|-Mm][yEUΕN-꠬+/FbxRe%P ;22jzrlF?ºr+4`PTeS<sBtI-)&Z֞l+ܠ
eAB.(@aC	RWx@e1T^}
O#
4͉<2ba)\%$2p-RjIkފuRk
?O72#u\hd*A%U|a
}{U$Ɂ\)4@'z"ӯY%g"^vO`HLX>-S3Y}k4oKgAJ$yWx/cNƸϚLt%W_#i,Ǝ9LoT:OI<ih]nM(ApLg_i{1FZ`knY>X
p}{u1-$IٲH/.Awe몲.`~{'XwfgMB?3#[y|5^Ua+4-a#	uE4AXQ".4toLQƋ/ԼRύh>8i!!2] *`a}zꆔ̂u6]Zʊ0,
_cÎVXlhRJZ)7@MUypH{$Ϭ(b:;n0@0 l"fu iA6<BA?Nz
lM;OmwhԠ7*F5]:n:š\~geYq9Ԓ˃Yx'$
_j@'$_p0xM@i~>ni+E"Adt6n>1&&7#ں_ HQ_/h=Iy,^,&$3[<
PTN,Y,N%iނB	f P#UJ`Ӡm+7?zMm慰6dAbE/ޚYbRKtK*djxV!s6NZ$Lh,z9M}P
Lb?NWU0箢g~V>&]һz?mhA]x7Hm$ͳPK-T    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_es.propertiesVMO$7ϯK"`r`VKv7"E5ݞ'n(=힁D̔^{ў*cSa [:/tKm4E83FcAx_RTaWHRnnD^ABWפ
- Ry>Tp˔0	J^Q;+t,>\K1}qJۄic3?<#tE[+á*z2ͪJzAqpY"H/s`vPpшc~*= 4XhZT"F6+TTwhF#5>OdN*[䅸1Jj+Bhq"pN4b]\e9ho\ƚf,gF.5Q1m}6sNj .z\(f'LD #g/g_#_=SM.Td٫=O3KPʮA2ѫ.81}nC3`mO@B`uĚ-ŧx'RPwZ$!smfVYRIU]I|J b#v%\e෯7Pz@XiSfwk햖
hvoqFvP0-mI*.޲g\iq2RGO6,a^|$?~q'OqC4.o/CU6scs8#0G!Nw/	!oT.)
.ˆ;:.A޵d@M`FƅaD-,R,iR.QA%Bqzu:1â":/[;5Ȟ/:0dbp\`LuhO.mƛ69U
@сP\'R'-2?Rj28&Q=D*v?9IWP'/FYIX)sψIvhxYAj&	mCCyg+]p86x2"]g&b4DXThCm|C@2z9ǽՂw;vf7fӄQ]Q+	24\֔<Ш$w5uomz$.RtIC`x^l'm62
nOB%!as닲O=ұ\bWB̵lF8ғ6x
AN!$.K!v9u%\349ݑUV!!Ig+`Dy/VQ 9K{V}H&{1
J?PK0$    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_fr.propertiesWMo7W[8ESI@
jw$15ɕ-}$k[qM!iv{3`^fr{8h2wNVI:R\,V2t5<96\}\)OK'a
+$*n*528%5:ƻorrg
akOvRWZ5LԼ
P|4YjE pPdZonn<ºamծȵn#Ѭ|g75Bѫ˳tZ`cOOm*~S4XhŞ@'Mx%ݰ>`sFc?
6A[B1H32d^^X2`iy ux0?_^!yA1)([Bjmom'n~)1:s\;}.5N]O5g)}Ar6hwrw
MX>-)ڪrK	f GZWV=~ ý.C']  PW0wQVR
⇲|T3JKߺI˯J麠y_YaNi`!1"X!
Wq`m}@ ucWP
a!iVFjFW=\'a(](mWR-Vxsbz~WM
e&q$q1&	_b`jUÎyAbxqJZ8ǽXPXe	{e*X\:jUV5=#Qe
0$wMTɵ_"lq:1M.wq2@#q:N-c|q9Yotm(|% ӚqRݾd4zcuq[*`qT0%}i 2AG]_&	jwe
;g Oqm׭r=(514}\YpOmڻv<NсRjg=C,=jٺ/͹hQ);۷s/b=
qMo2]]VYO)h/ԭXD9UNgte}8Xʑ#3'qGzg&vOx7eNE^vuN#?֔B~?Hד`1>x,MQ-I%.䧮<󷟲JޛS%?|ћ]D+
9b҃9PK߰H  
  PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_it.propertiesWMo7W[ ;i\IjE
jZ+[-fwp`7sb{y%!}23O'B-
.X +,uʻ˒S\$\YIֶ^K@W+|P+Eq]EW:DuLg˕Ζ62ic5==}xx.Td5jY}8Z):3s0˟VWLE
Q@N5b(
4sA ~}Wʏ~SG10p$/uB/ĵQB[1w8%s,c+{Ǳd!SUVF91FE[ %qbt֬B&
i{@s8St34,YG&e)׀
1@w\A)&)JbUvx_=Kge0MPV*AchKu9iRaj>w0t4*	j~Jf3L)6ybxsm7MXhMvy{۞/mбb{mXmmN<=/?l0rY\ΒXJx?gh4U|TMHDrv,}ZŇ&Fbh$+f+XjU\{B\f8Dr]_\xBk64|WiaqU)c5ZM#巪2	G#uu^Yt^Զ'.8Y=僽va|jV
 NvƗAUǻn}˪Rniiu6H_ÿ$IC_,&sG#Z
.9O1׶m(0p//Zʾj(CÊ1GĴh4t}h!Di^N(]e+ī}xm>n	'{Fkdֈ;hlwcipGARcC"fWM9Ŷ<&&޷c}8/LQPrYtIo&o'
F%B?;>aum$&V<vޕv4:ĕ<eqvp$6ta X^8xs#t,IT׾	]D3	|hWp>Q	+*tP$ހۄ<d [ݖS	7-ތU"ժY&PK
"n    PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_ja.propertiesWKo8Weh=,K2ٖ.[7,ER$ΫhCy}CXo-qE9 %Pժ`QTb06ThAM!Q%ZތdVmA(¯w`˜
TV"2*Ҍh^H%ZDWEFKab-^!QiT5ǴуX_꿜gJ^Ҝ]\W1eqE{UAMbH-ٙM?'*y-2:+hBE*D8j]*R]q"wGggZ3r\LcZf<Ig%+8Av}o`wbo
k<ha'z&Mͷod"3.hzS#c$c߂,H^=^)LG0	Zzݱ9$3;# =|-"1e@\Zo,PY΍)QYe;~ՁZ*'P76&4ЁhH&4h<8X+j2@[TP $1zg2D_mf<>|*QL%Z#g-̟"ѳ0q)XnF/LXIp<?(4hY3$ϯ=U*wC3A7WW
Ӣ)9Zs{߃=F)B{i'u}PK l@:Jwu
,VomiО;@swaHif<=FMAIIioԮ
0y
۵4G!;KԄی-;&eG
jn ̌KgAՁӛ0OfF-RG0_L-YLq벋.OIXY&Z\N;˭kP_ڠ/Z-dk=M	d90XgQW?thSKIԢ4pVAACkkbo9.t6atG}gdMvX̵mdԎRk_w*/weMݿ,K!M!]+mT.d#m3=E/u!:}ᔴ;@?V5h^hwepRB&YT@o`mw3۩
07:4G]6"r3^7tU<&(QX@7y*IH.
YTתNGz[
0V-^{o^I%`DNhzA9]u$nK7\~f]к%6g 9C
c\nka>:८-Qi#=*T3nw[PRs·]͐d`vaҲTkơ8΂PKGJ  =  PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_ko.propertiesWo6~_A4/-0iI K)!HP``$&*I91ﻣDq]]=XDwߑg$FV&7M-!%+jNXS^
I*ϫb+JҺ&3E$W\yIޗeH+B~LXT͂X
%׬=,5%
i+Eܘ*UҲt%r]kJ\%˪X 54XZjN//(P!+Eѭx%/답v~P¤j^q9%¿j)yvsW+ɂXr+`7U"btHm9%mM!JқӪb'Nq8ǫ5
2pΜ$N}2ύ/&0ab^B,$:g])k Mv]fh0	;(Uc&
C|˚qj'fCMf.'q$#zkZrNm=Oknxy`cx5PN v5|rh٥NiZ3 Ncw`D!.6K!W>n^EN&Oh !C}p^Pc(E%!}DlXMY>K?˪.-Th&	|N	fϒ̑/ejAYY}Ni!\gJO9j;Yg}xk[!5/>P̔Eܛj\1ٳ'MZîan$'F`bHM|=<\F2Ӎ[ LzQ[jIqWXWCOic'a`<1\F1^4@9JQ̛g|2v"Vh!i׌!*RN4M/ߌؠ]d`h
(AдՒUgk+L\hĈئb|Z9\ޗְǆe	A5@>|6F v'bR[g St|<änX%݀ož%H^3
RH58돲YK`UC*ABFa_ٕ'C`qea?㪆}paU)@(_^}V`/ÍxQTw=˾` VyH0Asjӂ3I?ӜeXq,6QLe5llx=o)&a>~Lf(>!%Jñ1ob`6Ah~xQ	5d.a
c`dC(͎f+Sp\R|
/~{VMfixHCv?PKhvN  *  PK  5R            D   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.propertiesWMoFWKXk}$q;vn1CbEmRZ-%%qZ`&f޾7C赭N@dfل;i&iHOrRZ^й<ɱg\S<Uή,
$2[VlYSNI_\69R!dWML3]*ZAYC*cAS19Be!TP-NNyu۬.¹oQU͇_m Rtqs9_kY{9#{[/B.(!k{7UGk|2Ea`,KoOaR
d~'F+P`cQl%,kVdZ;lAMQd9g3Fo.$Rۈur$ݤrG:͟%rhK1<68IW]"AFDY į _D8(
͹8N\;)!.tA/KՊk&}>s~e+`"+%A1\\"3i{Ӧ{wR
lkvѧ |Kh*wׄ
$=#2=,Ue][ݺto<޳_J]*lnvp[*n#
A2@+ScVo]da\KCR4-KahdYcmOb)T2ce(otԥ짘̂u6}Ql
>y@+-=nꭟT_#afD5Uncl1U|^U$eVm)Jl&8Bcé~Av0|piL1d2lQp{mr?ttlB)px>natsxO	iw{_kIǟkpT^b24+cT=}]N7}v	hX=C"=-	7էx4	{_~bƨ\aȼifk[\{q*yODm$[G樳RoF]
`GGd+GޚG2t=SpC{(]a%sׅ&o{G/A&_Wc߾N MyB|x<Y
ƀAHQ؛]Q;7aPK
f
    PK  5R            D   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.propertiesW]o6}ϯ 
H}d؃mIXCAh[-$w/iʲzk&2uWd;Ѭ֊PH4ox ʊ3R]'H$)ˆ7bD&`-5n$E_&j
Eek@є

lxpC[3@)X[yś^25RiPMגwMZxĥ
y^7՚ CRAR3e]5lXuhV>f!nְY6LܓCv.x9Hyukg_'&ATl hPgB5Li[U6$:ЁIYCw˄G?WWWX	(kqF>ug<<gďC;8b'%|0/`Zrw8<|}#X^fC7pw>O4{5֤n8QEqOHׁęXz-5Q<G|5Fū	.Av8tقn Å
0(:RQ^3pibz'1E^;e:8Ogԏ̱f0°X[tIw78?|,N5qͱS3k|]ז`;2w*O4Z^[3TWH/%iqVL~8\;pNUG˺~ߩ/Ru]u_8Y~s|ͧf)9_1RqOȡ;X[iCAϦT~"G5Ֆ7mW;ᠢ<#H|6dtB$JEBٸLIO~J'u3;qԈ,I#my:Ӊ"
z_|˲RC;
n]ey9eAw	]+(-է ߶`p")
5
%9(fFY*cEaPb/
1V=\&âT,2}.LxE5r>Da`G~{w \ z|p/%6		ЈY^qVhQnUs3apB6AmqҬ2u̼2X͹D$7,0@爗`"n1
n൱%([6/tC)Y7e^}Yñ]?)ǯ=h}rb;=S'Ow9+<jT0zLQ[Tډ)a6H^ %զ#ܱ8W͛0+n-q?	_oОeZ/]p=aW%׫8ri`&琼 PKŮn    PK  5R            D   com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.propertiesWMo6WK$-A-vzP0mE-I91)S09#u5B3dZkC#,F>	$im}+$jBtlxC5S#L![VnXI1^C]
D
P2[pp}[3i@(QH,mEśN14oSѢb-<barMF@jֺ>??c6BnO-~ZnYoݺryC
efidb/S+` 
*tL)1+vi*t'@]Iwu&C
J ;p'Q~vȽ7cc?y?))wcƉ 3ǟ;\ኖ\cʹx!St)|844FYk_,"˼رNyqbc< ~s86
59cAtD6kCz>~x+9_УKeT@,%)@~i3t q
YB̊tf	1!ť4'EfеruTΎ/{١3P
%<bP4*K^˔-a)yC|QȸZ7vw'Qo1c-0B?cWZ1LK}|WrgƼwR m*)޴3OrC%Nbg;"q6aˌ|(L8(á0U|q
=&q2?Z=xbU[O9\1zpx)2x-"]{FabVddEY0NJ+-$QSJ(8VहZ꣧Hx4ȍZA-l>z}%+6qjm03^#QҜ' 6T
s\FJ~hH?X6[QwFyȗf3NEɾ
|ogQmK)Mlq=_wG|tOIƩRHF0:O[ȑ@lr$0
l2RZ2em Sl+;,*N'pLT`NÔIo`J*$w-4'+hBjLu5=3e86-}3X|
h;u1,ù탙Qdw0aC{
*G	n?7XbnUإemG
8G'^ѼMdt8شG9֧дGw0#6̴ȯxFY
PKq4n  
  PK  5R            :   com/sun/xml/messaging/saaj/soap/ver1_2/Header1_2Impl.classW	WƒA^d	Gl#0)I'/iAliF֌ N4nn%M6Mp;3z8<ͼw~߷ЉЁLY~xyȕc&%L0"p!.Jx"Z|<GOHx?)\S">-3ls<<ϋ@5.rKO}Iė%.\K%"UU_
	K&~K¸oK~CD|_$HďED@ e>xFԢ9;xү	(ۗ4tt*-KsD-M;L->{ϥu>ΤbFRvc}fBq0iC=h&<hƵԨM7'zԳ>k	A Ҝ2l=Xdi($k̎G:it^pؑxh[q2lLii=Ҹ,($,ELdƳDk&sD1̌T%n]}Ehq=zc|z
eqmKX0\[}xdPׯX尭2N)aퟎ;iTDI}e)JwI[xVlbWd`+4h8r٤Mnq3A׶J5YaMc9^KCZu'T^vVmUOygX ф:tΜBeK2~7dM˸¯Wyx{qށ6=wTT\*ڦZzk_ഀK*R%Y2428ئvcd2f0+c ޝx$jX깜JN	GNN芳x˺S9VtMoOۘ%
]Qq,W}_
, p=!&~-cIoEN;ChPTV)}\KxlQ@GeAvH4:6lҮQܐp7"ޗ'$_2yXʜczQr:}ӮtYs,PR_dѕ&'<C@k[ׂ?D,>DԤ/ Zp(ZdQF2]*+g7wNv;R:TNuDr[u4Y4L(0Z裳(3HI%%T_Ie%=yXEigMv^N-Ib-ȴ{Vۃ$K	
8?*wkUM
SBv-eGN"oRMe*(>,,ҍtM$S	4XE0Wֺ!̚?Od1-;߇^L/]_,"hQyz<e5ݿ"hPD2)#ʆGO[>X&3v#K6=[[2|I[Jr[ϕƴ-!P++;W=QiMF%;[TUڥyul*3v7= 㦑*4A55Aź+}<G@W88OO0@lggY$˳mAZ}"r͊8!r癍/|7ZL;eW3닕T>QRX9VBY0N)z^fP~SY730yG-zYxˑT
5`MTwkmsSlk`_煱fa?@oQOYmtRF()J q|hy#H`g)Jl&)|ӍO%%^خ[1ƃ m8EA"	T}M"GDGl)Z*>V3]
㆟0 #Na>U|x6@Nas:qƚa7}%\9;{S&HY38CYT!E30ь1b.1^?DD5Lc"6JyրZ-F=EY&Rc;G.>L|]s~1pj^ c4 I4$*|}aSO5Pnyh`{ip9)q}aAK?C@Yiʃ[Ti[b8/j28
>/T n1x@E+=[8{X']VOPKgs    PK  5R            8   com/sun/xml/messaging/saaj/soap/ver1_2/Body1_2Impl.classW
[~fY$&,
.
DB%&mX\fY>U[ڦ֦5F[5U3=e¦}x{̹{ιs_	I#<xVaЅJ<,Tv|=ZAc^<g9>%/W*U<qS{4}Ӈo<<g+^<{,}Zqg?`xxx!?,T+8Y_xUAiTgpƎ'`2nN#kq^#Qk&ΘDxHu!pғ᱑уV43cL2 'tS$ܷπ3TG10RD#VTOSq^ˇ{*VsCY#TW[_ʚ3TV)]A>HyVpA
ߌcdx;/oY}|ڤa3	{X!g
ꙴ7 ^)n6ء9=v-ڨ|D&N'~pn]A-q=$
wyXL+-XPk֣?'eFҎ[&]TP6A3jc:#:*cFJ~"crw}WU6'2wF~/UÚ/i'bڍ!N	\m!
H=-EGj`sr:tai
fR)Z Ji~Ƒ/.YT8琨ɻBҰ᠆_52R(A5\E\h.uhXĈ)5܍(h?rhCX鉄5gBq34AʨXpm8l
v[˞2Rñ'`	@a]pc
RY
M+M4'cV?wJҀ@T7MICO,3p@sEU,ᚆ7L E]
vNv7u8l:;Ý{84k$l	|B[~e
Nx[;xҮ@@}eMLq&H:E?r DaXC5Llg}
OTgO/nfB9DC!]sͥ5
	ŉI:'Tȧ]UI)ձi|ߢ9Jqj;j7$]ɵ9'1_즺E5YN:6xԡqz75iN'YՓָHFO]Ĵur9!=2q]GZ5-2bs咪7˅mmw%[
mJߍCԹKQ-/$
QIacO$GW0UgOd&eݯ(]IDќIhA)PPrV%؉{hp$q/>
~`D*!/
ۆr9XV!G|^Zv2<rbGX nu$r8L'iR(;޶^WA*V`z{y'>_OHMGQuCz.~9%Iޓv-A;KoYD2joYMzQ˨O(P,$a\+8*hj
$azf.Vl0V9x_V>p[iH[ֱD@nwx4eL,/09<g}RĻ4ťIҜT};Bu4o^N400iͩ*gٞ"˜I (wLS{C9OZNv	uT Ɗm?GE"#mXF몤p;/#Ǳ~W!I?Oj&#.vOҩ?E!t=9{nj.%uG
{-H/bgE_&WZ
wEw_#('N7JXK;WՂLEگ9Lwe4߭ r?&*O2M]*4׉<MZ&et/NuhCP]Q٢T"ZD2"YWn˭"PKP
ۜ    PK  5R            <   com/sun/xml/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.classVvVH%@҂ccYY!g)aKE8
ڐ,<tq8圶t,;	Ygf#? 'oa/W%/bDF;H:i1q2d| ↄI7qy[w1%bZ2R,OF?>t/D-$Hq-0F%)iE
c- 1E1d3ά7s|@ZPv%l#X$`l^\iyK`~HY侐v4:3"NQ*lpuB	o.{p Q͍l2ɚBc!g\ܟY۱%=O%
CKᅦPFbaߵ'ݲS:e~`6zh[gDdG͡	h8/EơϜZ)IF=O[3uqmZ'C?e^Z"E<ٲg:Z65YΏ){P[qMS!+x%G
̫ҡDrDR+`sdGOC+
qQVUu}2':99M[\\TU/i]BVBXP%o㸀
=j5J,0˜Ua%bYgx1z8=xZ`vz5iߠLtfiN'둂&U%

[N<J j@ Q4Dcz?G;P=^T}m&y歩Y7gdټjdCrî׶x,؜f%Զ;2xy
Xl6v6kv4THucUc(RaYti}zxcz,ԢFmE%fX@hm=G$ㇸ41cUِ58˴0|b#ơMR
hn}}uOBv>L"7'詛v]OIhIZeA	2ɐTЁ, &mVԈplNFZ1N!O	b|L9hA( qHLe+ؕK$VSX%YDWFk/bav+B
A:}AW'ZAc
=Gj*4|CUpBO(&NR(YJ9Jy:'"p	WiePTJ2j}?&kN:KVM4@{QM/'_Er/j&]d3'=G
6fHAM[M'6D	hKWp,3Ai䀣pQގPKVm${i  ~  PK  5R            @   com/sun/xml/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.classVmSW~6K_XHmAA߰v\aqw7k[ot3m?7u:=f!F(a{ys^I? G0)S*:1-F4aV%\bN Dq5kQ\W膂y[CaQU|CBvdwN#lQ,XQ,˻rBr
CcgI~Wso,Z΢ƲF^=皅w\>c>MsnrIӅ6&]Ӱ%f]dC[:Zމ}QQ^n1g~D6eIRcU8?o\$@elrp~u #e^Va؉+[ԋ%˰NқJᚡC5le"Mthޝ2y|u;[qV:gP^,&
1wf)
s}mm4#|r4QMERD^1_,+vιcƝLs
xS<t
|!
hQPаLxkXe:"$9A<צqapA'xn+ki8!
!
@T,
5N[N 6,;
_,C&ebכLe85n7M4
F>
/:q#.Kq^[4|oDok1[
t?-l_&ӯgNJYᶛ
㬆spy'f
+ymnFq=gdaR\+ۑZr]&˾W R]~5<WZ+?1Wu-8~JC@+	wz<o0׭`2D͉eFd*ʳ`.k)B`:mHIzsT:^uFt(){j
dVpfaLa_LLzhF01yVPg`?8đ )^RCFA
"Hk=B6a'CX`Ec_Y-#ed}jM-	[]'x#}&0)k>FW*(TL&DMD"\GJ;QKIpj/9EiOH?dw^6h h@kcs4͓_hN=CT2ٻן&i{Z&ӎzzw="8\N^yt)&LH'EF ?
Ґ
k]Cs>CǟU8O1^<VvÈMrХ"'RaܿN꒫cL38YN+!QcR ,pR1ԝ	|e:oTӹAwzIMqNed慴N:2PK{P	  
  PK  5R            ?   com/sun/xml/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.classTmOA~=8+ Z*E!Scb&
,Ǧzw_H41~GgGشPٝ333~c'͂4
Tq_ANOM1U
lKtCwy]z
[8]C~[a|mQ2_aj:ba	-߳d)0>Cy`G{qU_7x䆕0MGxT;aH|rztϦ	׹!7f)#CߧV,!/T*DlW "p)Y46JpcRFҨ!:";n3KS4,˺RPqE42tPʑ2taf5lE#h:
QD""yޙAZ"s&.Xw(MJX:BUi2Hi7&C0E rw7(Z¦{f	v7#X'yE];[!m*a?)2^	?,By](N0f<+ "RiTfnJ!b>Go6Ě
PKxDT  0  PK  5R            F   com/sun/xml/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.classTiOQ=S갃`)eX,R!)`!/1<a3t&$~5G{3(o˹{?} $ՐK"\5I	jJ`X?RKGI<
O5<cM.3ĦuP1m_+蚼+ƘiyEӵ
o1vaaxoƎ2&)(pw+{d˥Q:"/B7C*[;|W*c锐5Eٷ\@%)uW?s=3U&nJt5ΜeEU>rY/$3t^3KЌlo!wiú:s/iڷnWLQ SN_2фf+9
d2gxq}u|2q<񩏭\.Y&P1IYpJ+4L(5*a]󂤳q[9/f/t §o~Ca\(@F4)*VjIA COtiJބOܴj/MIDX
KS3p!10^Z[fh}C(c;hՃ \
nE!ڥ/qSa~{HC!uH3dҞHUcu+ *ĒT:EBdf~!Ķ
Dsr_#+\>'ID4Z3:@%V9(r}A#ru"g>nٍ٣hFzE|iRlzv7PK    PK  5R            ?   com/sun/xml/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.classTmOP~.t+	΢0e7)"113&```LnFIl;6~Dgܮ9
f{sy;u*aY@]9.
Q`H>63|*W1\[ִ-AL~iOw^FNi{Vr(>
m^1H*gߪ[t2]q
}SCy`GܿqM{V7,. 7am8ܧ.	CC3{6Ű
i4~Mk<0*}SR EH(ׯnD9d7Z(zcR(M{:"n7KS4RPpI0*2tP=Ջʑ
4afS5n#_o:0s"C-9SSC,w!.	LD6E&FBt
#LV [|+`d\4U\h	;
%؅s^a՞ݰK<v7"؛U~ RD
	?,B~](N0f"
+ ":RT*nJ!Fp;f}lPKԏ3O  0  PK  5R            ?   com/sun/xml/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.classUkOA=Zۥjm_T@QCRHBbbefwwI?xgvMzws޹~`OF94b(Kc$q=&@%)LT
ILCCE[Hs;jw0xrC0x.un{Ix|ɦ\5=KΣDum~1V۶[2|;M/j\Mʐ5=5mJ͈GpD-4PAX'Agτ5޵
e3p0^6hXE$3/V]VkaX	M5JD/C̀NTmt)j=t2V1gxMQ#OctXسK#ٶhq{kUhVu+^}}_,We+C) U4<Ƭ'1ྺ-%;z}k&;.9	3nEc/]ܟgZ"Tam-Iҏr]zs&%0,	>sb'.ҫv7 &o?43:WpZ<Sdi$[e6[\G|
/; Ad"%!W{0N>-¸0H!gBKN'6ZZGGqs
hP\ZC\\d+BEE\<N+ʸ
&+R$GpY\%M{lXvhHk3ߧ^$aGH`1w{y)iBIE3Jщ#Rbg8
PK?tN    PK  5R            <   com/sun/xml/messaging/saaj/soap/ver1_2/Envelope1_2Impl.classWsU>6
[Ek,ZHZJA((6nH6M~"V|	>fZϹݦa37q}sq8S<;3M؊gc8y\P\VqLA!p*bc\F./bC%n&1Cgjϫx!R/+*^UPg
6]-l&&sΤ9F8q_yJeܼY*;L6Tiɲ.%*cCw3p|m^VP?f#	Q<iM4s3}*xL{SGVd}fʙ[ԗ܊#$LAߝ\P(wy/nqҬg,Lقk4F)_"q,j<qXXYQT%
A7{(x9)xMIʸ'#"80}>꺒RNҶw57vy>QhH)Ҳ֎zG
kDS0meZoN{VQjz(0\{D'0}˞4w
i8)fqy{"cy?{.쾌:uIy-nOثkn*^k؎7-
o;<顡ў.5向sh'P0Dۖiy[.ԭ3㸞n
*ꮣϟx_C
qCG
Ӆ,ǣ)+5JbT
~3zz͞]|)`H0WOpMçcDg\AW]ޙn%ϰ-j|w@E}BޔF~4Ъ7GU|K|`׻{fpPdULZCBgs}^/s%],w*ؽ[
߱	   ` gyI`%1~D:L.:boy'vUE+5yq5`wV$buBe
OrOug7-ECռ$(d3<TAXQE]+e.ԪcDj;FB>ubDAےlqH/a
mf5(T)/SN4SS'R#껏m}]/ H.	w#<DmY֧oCx ,Uk"?k>/up\Q;wuewLDa'tL@zK8C?Y3@< <Z$xV
aV.`_}s_ O^'ݽtݒd4$́v==RL3Rԯ'}>/7tBO!u+6!]$"aka[F
8dU,@Lbj\~1n"M]83`x!d74?kgrhF	9u=2,uUH')NQ6>UdȟD
Os'qHFPH	$UIݳh
ls{ptr:IΨӹXN"9T9SA:for(CC={kؔyr6\
LG#pLV_%]34ۈ''%E3@:7B6IĉX:W(ehYMK'PKP    PK  5R            ;   com/sun/xml/messaging/saaj/soap/ver1_2/Fault1_2Impl$1.classT]O`~^Qu0tm e|
H Ly7ތ]nُBzo/ە9z5{{9s/?0b%zE1Tü<,*݃¸wS`!T־r0;5U]Ф%U[0dZlh&/B{M*ո$"teH9ueXTM^͒p~9h5ag_ij$l+XM]ex=CP
خ,9ȍ=nRAYe^7R:&l:+J |SS4aU^0k'֝¡(~7v0HުE[+Ժ
hXD־*V@0.ĐL(xbMW5qa+xf:JŲ]S떹Q/FgRifD2{$*i=Iܠh-9c	$\ϒoZkgn{\n>jYk5-? F <@R.rpd)-D%vGƌe2G#ɼE	G.;)zW>,uq$袭<b	2tnWMn}Ԇ4}%!@P>uX$fDԆ|5>ʼN&id<q#aPK  '  PK  5R            9   com/sun/xml/messaging/saaj/soap/ver1_2/Fault1_2Impl.classZ	|T?eL^@@`B2lFI VF'3qfU[kkvZ[qk(HRukn_.k~sߛ7Iwss<x8#.^t?nGk{<ZeJ"+Ou~&\|]​WɄN>C8py׹i'oFi%c8[<'堋7{rf7x<8,qj8"kz8ʱ:d/.2mnZ[
-.N)s.tE.DH\Z@qpҼW;.MsD]+OOJ:y|J\/O3yϺF7FIy(]2w|"/Vy|EMZy][XIZHKik-{@I~'? _w7\M..~X؋#.'51(duA͏Dy?'dI?%=OY␋YFw]L<E/x=.~/ecL_q.GN~?fۢP|y$HL9H:[3@74EQ7REO/;C11[02f$7uz̯aٴ7HvoZH7M2`:W6GA2oI8N.ePKGTl*6yC+Wĺei[o_d!T$Y8&g陳!1@P+)O{;Yt$yGg[(pNc`$b	ڌm*'S㱋J@[}S_%)LokqP:GMu=X	!FAY-P2>P5,ndreOPYlNFvM,vM(Eβ.+,kq:7LmwCdȐi2!Z "WY=*Sm;!sD6w&ў`R2,fCra(;}f̺[wtX[9
F";;meڤ[U sBa.KW9U2d1c2mP<7J
Z-nA9CV}_
vopnyJ8!qQj;RV1wp,E^'tD8Vg/rh6˯B?n[HW^ԙsx7
qgW0ГsݘfUe!6&R];mQϨ̜<!R3!<eܨ~DQG<u;<6MW>=Bmܒnu~	[XKSV5=)Tk
ܠbf*U6KW6pE$2F
6V/5ȊU«83ZbG	C"sA24IߖFaJ?ww<|6gC\iyU>8Nys}h~ QHw&w
PjIBl%7jP<fcޥ ̫<AY>)=*"X5<-LG~,
s,?
'-]q$v?~	{&lp-鎘wg?Zg,oOu?n(8OYY4.?{k2\W}v&$ʍMuPt[(Forls=	:=:=L`ο>_guz蝷FyRcK1ޟLk&߱%t
V~
n~,6ӲAIy=A?JO<"Z:}oWӌΖ6N4'̰p߱1X*RY*3~#CqaW:ġ
'JDy~W)ӛ:q:?:Ws	#ND)R N%@554#C<k!8p"yt-dZPfSWHzcQork+5GL˅<
6oV61!Ch4+bwS(M?7\לnO7?<tA8I,`"蚋^E|iknzOet5ɯ. nSdbNB(OmӵB4NExVkeZgZ»=L5dTHGD3r^Z6AWx.1h)Q+&$xdm SM'˦^7]B_cAoL')SyrhA05!ҒZۼ1(D*q&tmͺ6[8wDVksj]|Ls)iY?+
آ;U7 T:Z]c\)P4@
S<"qR#pЖ tUυ5Ao26
Rah-=v P<.vrSȞq̷7%gX+I)^	D Zo0ٽ5Esem12ԛu+/nS[ר5\m`v6nÆ<b:6b3򶬈Q[1Q",Mim_{	][-4W1Ǟ<o#_jJbdk*S\e9m*YHWEc%{ElPLufY[~\lUIN˽ɽ8w,iwΊU+
X>pʖ]z"jy[u})W:vv
h]XZ\ִ.om[׺&[z;[ezoäζUΎ姦'f&DubM+́F׍)yFMAè)i]X2*[ne&#:GIVz6g_Q7Vun
&ƕS%航i*JׅHN%wb(ld	i+gp$
i+vf*O>8ɺh,ދ3p<ahՎB$Ϩ0Ru5ث%dzy_<TБce!gap9d6^Ihb&#ƀ
H1:SEObm]1b7t-bc
XH8Bj5mFiIPRhEE
POU6WPѩGl?#g#ƒ sFOb([KlbçR۴Cm:<6J/<,CvNe`]}\7
Df 	R|BkjHO&%<qGx(xϯ OZAUs?Q~muT>Rt9x.$7jg65k[D6vG j}
>=Jz&׃G<.Ǐ(N6cQ8{Jp#p֢8+3ə'LM5e(xR^f8iV-^-K63tt5F]Pk<5Ҧ,(Rx΢P48Oř;ms˺ؓ,5d?wM
(L¹Y)BzRx)(lB-H45ٞhf}9wB 	|Mdpо^ ǩ'XF|^5i/҃4-f~It; +ܽ~(@M?0&[44v*n4hKFk^:hYET噃oDj͆۰j
P 5ǱOvy}9M+䣫 W>Pu
~{,)zJ
iDA68,r 
v8E?UDMS-ʚX5AQfiހgm2f"\q3fT L36Y8@p+݌,_l܊w.1P{i 5k~CK: GvQ3KR '͎ra*<-LY.F
~OiWSOIM=UM$dC{yT@
yt;͡B;pIK.̽Vנ݈{)L溜A%\HcJJ-NJS<=Z&#	3/(܂ir_ߧ:'sߥ6Mh6\[L%_3Uu
xӴjτ
ҁUZn8j%w2D/N-wҺZ_ksC#X!p	Yʠ]U@u4qƟs86y	V kx!Jh})pdOun9Uf]E%!Oc^mr3P\ʌh=t^s=g
І]F!'9[:0bb4w(+\GXcgvÔ{2l|WtQ),$Q!xm57.a'e9+Upع`(HODHc	)wt0 hxpx/ ޅ Gd Phjh@
q.rmg
fYxR6[xp6(|p<(|c>T޹QЃņx?.$S	g95쐁KH5'boM#w-3-76;j(rk6B_S'P!O2F^NK5<;U^'ҩ<N*>^8aYp}:,G0,ƈk6K&`XDyepMnCb|C:2|#C CyPR;J6]=d^:D}0ڲ!le 7jtY'iF:*y	Ki>)J_Al,T9*)@4,۲e"S dJEfAHPz>,PWpb(ZcΦ"'UTg^CӸfs5ZZ롢
7ڌRjS=&դm*I	
CAR83Lbsa &;U&;Wo`ցv5bڭ(+75Vx[t++·"^.
!/ ?ùTk&4Y'&ُxVo;"|1x<_
 ϗQC|ϳ.b阞4ӯ$_~
>;4L71
3k
жH.ɶO<AcwTK^_(oiudHr!ߌu/pl?DEPI:zv6ߐ>ҹ.J  ӟ
t&	>5'si)4dź 3h\^k^GsҸfQķoGInP5K>Z}7(I^~.$ A{[t/y~v}2<Wҵfvx$uΊw;S\<"MCOUuՌЦaY`"J,xe$8&y
4 !gY{M4&&dGhp:Um^w85sv<_%5y>b5F%IҜ[к9<<c$6b?| ]ARh<z2_߇+4_?#Z̯21'_GSJJ'Be`urGW\o.1TB!4	t+-΄)Dw9V^f!33MDRޣUF-h:
VAF ccPݟ*-:,D'RIcG^cId&xBRip	^U<R^񕫾\M}FՉo4itG34
媬q]FʪZY<#9&KM*2L&g糙쌣B&ii汱SiSNe:;Sة
f1,݈@ɬy>f
M&"m$=߾	f8]bdr
/
%o*bLڕt$CյHqï鱙A*h6&j4];hI%ZUS@\6k;Ye?R6XGpYB<jK ^+'ګ\kSך)cC6]]5x5;TCܩԖx0AK< YH"5lm1jKN[j3WnY}C1qDͼޱN̈om-CfnCBv*jm4ו_&.a䟠O炙3wXVl;LvD@fgR"yVd>:[oge,=\E'ݞ{}l}FlI
у
)?PK;
"  A  PK  5R            ;   com/sun/xml/messaging/saaj/soap/ver1_2/Message1_2Impl.classU]OG=5Ǝ!
4
ښPũ
44Џdcu눾_>RKJMU;1J
qgvssϿ4Br17,q	7]G!<.jk3CA6"_׹\/i8s/kmѼa+s=I,oʆV7<90/YUn~VuʆYVmMSmK/SjAi*D~O{G,.IXe`G{Icٺ.k^sO-U}Y׶TRsfUE,ʮ8%va2\9!2,VD&CxΩnM+}>VC5LGf-ڙ5=;3!O1_lG1?"EByb0v1;ִ:%1?KFYjr;kz)rr{$r{Qm_#ݖHQQ!(\D'/nc<J]Vd({$ǇяnFMn&
K|p_a !uu
,V%vhp;v;:|kTIG-;۽^NǓw&hm8;KaTDG΋0<
fgpJQА}|z[0-ә C[t~o]~o'.hpwPI18'GB^i=uf~-J]Mvh'`?ƃwCv>bvaa\H9Brl j0F>7U%nq!N%r$v"Y܅>"D&9MZӦM:iD;q-ti'tRDAĄxFy9#I\5T.L	iR	TB*!&qeP՝:K7Щ{tgJ.y׽GlM0& I-+U^;`PgKrM2eD>>yVP|/b
l[gEZyE!y f%(}`,XUr[ѶHx
\"]m oгX5zS}BHƽ=1&4a^/Iu+3,K~PKbgX     PK  5R            A   com/sun/xml/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.classV]WW7L21Mm5|!jU
jAm:AO}vku?N a;39sUJ2-@ƬxNe.2@bk!|q,%pXcRXeMfx-hVIq<S-J;Z͢XjYYYZ4MwT6ꎺj?aY|+mp{U0h']4xں6%wKw&
`۹c,W7=cpm0ĭm
a\M34-SH;eUʣN8?eI,TID>U6obnp3&TQ$*aql>:~}$fv5^vutd<f(rw2*Q.,¯i IPSk
Xhs\ϤhW57zt~HBR+lDNkNl!ڏjo
Tޣ1'H-]!Sb!s-0ho lhΉ˳5~_6:xDx%AXra#fBOhMHDn>1\r-ET*#hѼ2z772O'11m_Tá.E.ptMp>;ۈLE\WgbjcA  }[ugCɆ@}3gbU+Iv1ڣZ5t6\`>vB,}͡~y`p9Z. ^|No_TЍ>:e[/F|ؾPH#l^< R(lK#W{X/N^z
$ 6hZ}D1vQuըU?FD^}'?Й$hbA·OVx	J
@8RĩF뜣5pP_Oh]ԁA2UÚB)bJrDS2K(Q7vf0ݶOFr0޶T i̢.YFM
$D40"g2,0ќG0&SʰF2ώaNUhUUbPK*/(0X    PK  5R            :   com/sun/xml/messaging/saaj/soap/ver1_2/Detail1_2Impl.classW[V~#Ք4Vp+)Z2u.iRӔtsۿbn:g۴5e?49|{Ͽ	`?psL̤+1A*{\\%¸)"Ø	>eD	s1%	:a]caa	谜e2+ڪ=Ribٴ
7%`ϔiY),`JW-iڊZr^a{[i<SCBi'oΘ-dL4蚵&!Ypr[陼;~gB`xir*h	hk5ŗ$B1:ZIj,g,}`:H$/B>54Ϩk܇q5Nj#5:`DH! [AjzuT@OflSrCV-}25(zcDZ>?R٣3nc	U*^WW_ԗ_tҎ8[sʮn\4yW5u2l82Qd&%(cmϕ.5h;e-Cy^e\b2TQrDxԫՒθ
P'5vV,3X-ZHB#<񥌯Dx,`l%,*>~gTR(zt"H\}̰W
)2 %΋FƷx,;8ɝl"#$s2W
3Wy-|_bIƏbg<~+>TõP3W#6;>;ʍfjBOeɾ۞օ頽m=ˆ7|Ǉ6Ҏd|{ݎΥ^:0
k%jjg )<Py:GƃfZC6)knɽRzipM촥ȟebGWԗl%ACwiEG3@SqzJiGH?NR!\(!1i
i3lN60g@=ġTU&|Yd
nXO&b)bI5{F̾^7)`dүu'{98vD/7Y$#X5#44
Q9ڵ/}+ڳ}'M9.4FQLQOrgGGsD颱 hGrc؍TlC~uq?lLuPJ*>u	|e:GZ\G3":u:~Dg匟bǓrXǛѣSw=JZ1r~f/\PKSZc  3  PK  5R            6   com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl.classZ	|T?f7$0 @ `l[$ $!yI&3qۢZj֥ŭv{WVs{eޛ$Prsv=/}oq6nnxG6=};yn?_x7_nQnU7~̓_o<؟}q ?=cyp 9!|X(G|3[
,=9-7V17>yo{;7O2ݧl217>s?G~n|1ƗyWr0y/%2ϿV5|}Y]V~d$#77/qwn?7oryw
7nܼPz`M&7Y(<eRp+"=_Tnr&q܌n&rS$n&s3Bnr3L%n~"E
x[̤_Q}-fqga?32G\EsEn+>QJenpS$=pPD"(b"bX"*b"XEWUrjXMF,(<EEnٸyʠ?YBUuP4vq
!sgScsBF0܉0U_4Ik*WZ-X-[BEc[2Uv+h/EѰ21'H p[[IHgm턱9YՁP aaə߁Ӿ!9޽Olj,p?	ptźQEc`JR=m8CEkhR2?BZaTddjD$aKG@8MZ!rX8r7:%c.[_Kv#ůN-3(HJiRtAb{H$Hze\^¬%Ou^WS/h]%v7OnڢgTí>"1ʴmZoY޼QY⹴-ՅǺ%c*Xf[M֦kbt |Bl^hzH܀kp#Ƕ?Bv@>}ؘƓ	#3	VODCRq0u5.`B@VCPdpp/a$
sޖ&ߨPlhu~=p0sKlvA8jֱuQxhab!TN·֮qkZI3 Iu:	£#ųCdr&}!+b"%P|W%\eF{m$Kc+΂aL1Ӣ :yIHٚqC=P[0L)h9>;7NC)CD*d≯텫D*4wp=+rNA8^$!kDdYZhNyF>/2ne=ɠm3aGˊ ֭	'ap%!8n$+X9;[hS֤=#Vú١sb6-·Xwb#Yfٛyj} M	ov9mhK`_t3sALs޺䅒/wST:M6
i@2Xh2~566srSpMH:2h=A`7`Ѻ/r==Z(.
=TSAi5x)t6
H-X,bAa6Q&=6,:gڕxv4, ygVrZ)%-X"ص@Fu5͈s1rԘ+a91kC06N
Dix0)4xu"ÅIZϧ_eZ9ڼo?eGdͯ)UX|>A~9R8~s7_)]Bqdu4ӣ;Dr͓(]|8A^ˊ#j	Cpp^s'Ǘv̎pi2Ɇƨn.u1.pUXuA4:860k HKNJKa\,Q?pxyAJ)Vy^c=,
rS8Q1i~fo׉d#KuHi"M
ؾKWmۂFrWJE&-UAj)xBG`
	Ðq<PKQ"U +s^@
qz{*LG WEبMQMh'zfe:Zfy9MfҼ	8f`.YX0npb;PE,\AE5uxfbZqG(N	Qċ;COUx~K,E^U-خmخ*,ȆII'B玶nA	QsQ൤1-}bCtDmdQf *ÇvzQAzܤesB[XE[b4%80Ѫ]b*TxPb*>@Oy*B(7vX߅&kX.136e&k]7Y~sU7E'CDWδ$$[F
\vAd:D.T
b#HpgB(VG(臻Kp)-@u*ٯb>S8Td8EXcxlcS˱Bv!7x2\*nf57k<cS*Qhu^l	ΤdycrnUq;b7VvS+a?=*^O{FQ
5Pxl?#1
A'&dfmXAM}q"Hapq"(<#xlH^3NR,ص8ҝPNbՔK\Npjj*z%*ը!hC
ֽH.WET>.f5xJ-]R#UAE7LpH(Τ ,aXc& F><3!p0U"tCiFt V.ѸID8@0֯4)_bFJ)+La)yhrSe;=dR׍aa>+ WQl֥֜sԏZ^.ܒ1`YNҷԤS2+>W|OI=xA/WZn4Q	w&ŌaË$bfx>7}pҳ`e?olƥ"(ȵi*$\YEٓJk.YK)(FI,ʦِcѓ7WMs>\PgK^Wympk+udIaﲌ$}el:KRSU/ܱpt늕MVV
mYJdE)&g
Dk2 qk6cXd}⨕'pIy)%i}^0kϤG?0VȀ~XA&  < a*_y:;Cp~wGQjjIo8 ԓzz8EOp8#==6ќ_C>> d%' e#& Jޤ2Ѥ2Qn@_߁'z7s5ӫqD<xr[ygda3^@қ"d!?	OѺOw%$|f<Cߧeܨ49E<=OB0;~ 	0$:;^@(I]UG1񌜏4H&T$7%Ga@ ~SWW~j\b.\C@y*Dx^4V*k L)I$q\eQ
צ9)sr#'/+4
cJqDUs>L7
w3
5~&C_п_¯>}Z9fylWM	#.NE-ɖ^l!^c͒XS>3
ow,Xs$9X_*m$.^vqz)FO_DIiaހ?NR	pe%\@*PV>Ȼ*}h*J`C&'P. fSD."

fһ9gzA3&_-HUn$f
Nl?#$#w-Oc_.e0!E2|}ܢ%jҿMÎ6<	X3İDS	&?à
ol"Ĳ;#.kfC<VJOÊ>h7+]jUf[]CVf>Vee,S
¬!Xd}Y> *xf
]뒚\>Kx!<)PLHQ"['vS\!a"A~N0߆w(m$=%y_xOQSG}ci4A'x
T)p7>wc|f3ڹ,zs[=r"|_)X/4v>G/ HdT
6B.o8=f&O&>.Íĺ,
kX*pZ^Z+t\W35hCო~9\rFV2=$ 9FL0edmאLvŽ$H))ڲhL,;;Y.?DiS{mhﴡgg(WńB.mb6z/I+M+?DN`6d*='#塚%*JUkI;
IA5)qQlp893)M$^rOĵD"(֑94.;Fpa\G$G 9"TCu{aiCM@J:ɀYĒc%-sdg81GZagNs?83w]rkECG3Ol)9o3,ёsH^,vYL,mI\
8/p-
XlVGNwR,3VGmq#J9Vk͇x#qNMJ#|G'Ue֍/Hw9Vnu/\"d.4^ls%yuqpaM>
s%DY+
jp"k,CЎNǊ5VGszG~Ңt8RfGiQQnuDY(]en@h,}2o-k끔F6u;w8b[S
tl
ta`-Q38)]b0RQvz+NtoQ3iRz'
佔)씾>*f3Ҝ|!~M"zCo=ݘ(+qe6mFZi9&rl ԯ$y<OSNL-"/2Y.	9tf|rKyپ (PmϤɫ[̼znOwڝyGvC8lGx´g3?w>[dEcLܥv^ud5]f:"JvpD؍{Fp8E68]p7Gv=CzO6=q`Z	\e#J /xlj[|4|iq&GLٵvFLAnٹFnCn@8t`SI1]6"Kjkb ΅0,7=x	oCvN!ؘTT~`0,.is4NZ2Tc'ANn~y>vdJ~q!K,b),+FP-^%iwGR*Â_k>ZB);[?X3zʧZݥ`EVHO}0Q58|r>u<.%6О Wlh	f[,ֲdm?].h3`&%ydH)x #+](Q?4+ 94=J=dHIdA{,bu
A&].4I>=$>!YU
Yt}zo nL;s n,;k ;g >"[4 w[hAwBI"@s(AX"ZNa聭%=N;*+?#k
1LEܲSAeΒ99AhEr]ުVw} |<SZFhKfA2	G
 J,"ՀlqqfKL\KP+j8 +ĵt]g~s9@5x-JȆ:i
L
IQ	1Lk̜TPPСW9scLH97{O^j#[&xE?52ѐnKt3~,*-1G[E{ֻSr _> eޯ{q hUPMP_ML|IaPKCQ\%  :I  PK  5R            2   com/sun/xml/messaging/saaj/soap/SOAPDocument.classA
@oEA4-ܵ
"O0
(38EPRBz} Bc# lx$n$f-U+<ˌYf
@uoވV˲D?
G<JNX#%SCs!E8.az[~cPKnE     PK  5R            4   com/sun/xml/messaging/saaj/soap/SOAPPartImpl$1.classS[OA=C[JEQKn
	AM*%8l'e4SFD}G]i-Нd]f~#<8бntp_2
jZUSQÚu
J5wͰ]1]i{M3e>o}ȪvrRzĐaf{b;d|;G<>1UFD0-%R'B;ݑ2eX(ZoӵD[ھGb=)<yM1:4	Do"FT>>twKUSQ,I⥐'~CCɀW
L0}]?ت#"ʦ7<ĢAXWKl/qKX2uMnI42sևQ˧k8"`' xPSuf30>[3Wt{ۭ0t0\fU驍?Ifi^\V<'ڍ`1{b/LcVј<eGRߑzKa ۈˈdQkXLڈL3W}`zǔIko`)e $-ꀲ-6fu$ PKf    PK  5R            2   com/sun/xml/messaging/saaj/soap/SOAPPartImpl.class{w`̻tZur $Knlɶ$Y>݉m)jB`z
X1`!$BhH$fI}M{3fW~ 0u.̦q57(wt#@l9Fn\ᦩ" Po,T&O^(]M7Ŋ̿CxP(ab"FxH/1q܌f"&z!P8#J1#ʼ0Er`&sSM7S4n+b"0GG#q3bj1Gss`8xa|:@MxQb~r,_5(EG,QR/qeWyUrY+=b/~"V{Eu^h'(D/ywIt%N
X-`whBLvz
l&M7an"trs
7QnbĹf7M772iܜ??澟VSE7gY|u67ps.f<ߞWss^Wq3.᫟ե\\_{vV*E\-<ZE\fvGܠpI7{q7zmvdaW]77{oj;7;y⫇j'_rowsGǸyo'=)E#~兗xӊx#~2zswx^/(j}8ECp"m#67PumU
Eg!(?Ei(9lKՖPU,jvh4У7iHP騊u-KИ߿AZgybhñHY>e@C߼fi13DU}UXF!'ZBCјDP'Qcٓ%QjQ=?i
Z-N2sI!V"GkM]rƤDZhNw=HP	L)^3aymZ }y7kzp$'kjhrҢuƃ0XlvtƻLk[NZ#7
ԔhTTr0ׇ[#16:R/]ns߲i(0-XCƋYE"D9:Zkp-
 Ϫi-Ab`(CkHC$VyzKU0n}sъ&=E)ÚȚg)EEA/vTljB!A(л}jrIt	9MXd(͍LC&H64MkQ<59ǻ4q^w\B[ډ5':𝁌,o0GQ-(R'Z"aGr0&e85'W`:&"$MpG=5Ǜ3\ٿFÝ]qe=f}li_sEd,&2]Ld#]Z)yqmIW<I!k[LBLIWΤkb\H)	)EѤ"ݻ["۷vco;hJU4y@7zh/٭!?3-&?2U ΣLc՚Ό#[ 0/n!Z=tb&ǮYc٧,iL2K72JlAcp aB35/S5@Dm:/Z}rmKI&cK M\̏tc(ј[[YkP?e<QF#-d04>LˀXKYS?MdMfHl<0$Rx0޽LkբZ]:^KbU7c	KS/Ga6kA8DӴ>дNSBuM~",N򇂭AZU^hS/xXPP'2ivv5:y5ufdtJJ.<am1'%SɐRg"rhr3Xݏri3J	rgEÇه'CA`q7Gۤ9J1	g<,,wч(:&3]9E!F[/I~)銙cVUdj0ӢyQ44䦦?S`SߣN|v٩,=̒ET[XcIA˄-KOECY8/Sx?*#R.\6uuiz|nE8`4Qְjy]$-30̙KSR(aʖwZ9dI+0JC4N|gM&]M%ͭ6aI+HHb,Gnɜ.x(lEvecNy=)2F&{Jvq>?{8ꊥunVR+SXwC#tTBIN"H,%C|:HyL<otS:r;/rXiK:9iq8cZ+HHw&'T1[EIͨ
4Z'@9 )
ڌ2I]7"ĉqeF;p$=qX'sr--!C1'f^1<eۓGZ#ђEN9áno2I2u7-:2:Lg17얐Q=Xh-QV*|	_so7"LK1|0"!Y_U|Nؓ9PVoOoGE	|w*|GPb%Ixתxެ:o
&6,R=uZ%BdgV:Gݕ]1-?=P)&b؊0W}O}LXK]|65_K$y#0^U2)u#%&qY:cΙUUviR~Ux_0c͛+7OM2jJ?9iFÑJ~M0{ l`ˑF#&-_k-~R<6cp$#EJP6Xf<C'8+dSI+yj2ݺJ/S!}N GC#T`i$S576Ta`VT )sU|UA Xԝ^Qq2V?WҟaH?D9^ROC+iXa/t7i>Oi/YJ8(P5zm5W
*&7<w.P+H-.\W\llQYt<ԖC.:!2є7dbl_".˭UQ_m=jdEC>IGZu}<\u).ϔ8rytK_&ŸNif:ѮvKD|x|F8XVq	.U]^WRUW+F3\e;[!gīsTSΕmf7_{ȱJ\Z5OUz[0b+؎A7F;m;U<*ƱK-ح#?Q8<Ttc*P]"UT<CT`x!^ŸUKg*^\ɡxWյw=77pBr#7*|p"qyM/8`wxg{	^z)k p5Tu!u[=5I,ОRN'pɜL!
3~aT],^H2@ٷpr$'q4$|(15]X/C`0F`ݸGŽG1g+|RW|uYp߳|oT|^WT|_S	WorU ?؟V&2L`lRkCv\8fW>eī0\X?T?u)ɏg
H?)?k,MII<Ig}L=T8xP):C~K#B5AuMιlD(Y*v(RvmbN8eG#oJS+w?)_ٗkʿWCzl$vl+Pߺ4佛1MGFnXc2m*p$#V1\)0K1_zWue@`3"GfԯD.团eZk(8k}=+ƔF}S
fZK2<9k,Vr\[,Uabg}8=.}c kmpm,G:c6:gIgFd"lJQY#ʘF?K;6&>k#	/5(" 䇒HDVޮ68&Cˉq	)dp'sM֓M?NJ$<3pc㢅tO9A'b%ґ^g0p~gտV?+qpPsʺeuY;}cҌ[WUcn/8[Ւc XCjU:^8v;WSQ,YUŵyHHx^%P ps-W
>Gc~g?_9 K7!*];$/@ @JGA6.;;l2NpwwBV^ջrwZ0B^/'>m#j9*(vA(
Pa61D
6+fnnn_"Jn7m=t;DstGd1uMMydK#WЍɋĠz r
z]S-P:fKXQxp=fgi"k'86t/}G?`x*CvBQL՟%{Ɩa/Č'QU|$up6(p]p>0.$\հr	,Ka)YC\aa p#'dCѓ^0 x+èmA)9j<4y^h./	4):t{iȞ<e3gUka,]U+[%q.;'0e<p
6ڻapz	7@-D2-n%[x;\wЈzzwOp.Id=\n}(Ua1hUaZ`1!><((8;DK &BE!Lpal9Pmw;$cn8<61H!Azi.f67s6$^y͹7j,+*R|N_&qtE.gF>Ҏ+B>0`	8pR5rgӵ<pR.ƙv3qYNW!g!_ d4 Y:ku#ۤo-~4t6h
GO'50g>F~|`0j,@NK@ZcϤG2׉7-	#-R0br59k(Q]DѸDѕ,4
8)XY_/Vp<BN}^.sAS9O7IQb,	=P:95y.'ױz`Yih$?x-LæDzIdrreXB=P0M7
wNJc /ZkZuuQ?N
\=HzSQBz$|e$J
u%ƗI'԰ڰ"Xu~J<J(66ֻ'dwiC~^OR׋|8D΢JH<
gJN&,MW',=D+e_9JK8r2.

wxGcL!گ^xa}lNl2aNVź0x~
F
q/Ԯ&NG[j҃p6*^.Eڕ_vuz9	hnQ6@]IEmdhx8X-ol[(q: 06Q8jh9ds8+HkNEd4\
g28WW5x\ǓW\*JeCT)ZcazY0ޑhu>0"JIkI]j0Q>bBBYlc-qXO4np_OA^IO:ʷ7k`I;;R:iI`;L2 9V(6J$
07hT#l:4@$H_4h&zšQ[C#V-	؈Mi51`sȮ_V^8Oц[MƓH2f-A@˦H4rlGB\Ra2;[W[f
sJ\e̴FvJ~7_gO8}Zc:e!>]EAڲЄ܁EU~qɀ iZLAHaqU&Vʕ/:rUr#9v#rSW:V!%@](gHIN,ax2qOc>(l,uDiFJt;s@ӶwՏP/"
CqN΃lG}=C2s`)䗜) S;_z
F
M	BgGd[sM\eйn	9δc~N_Xgb&ʈP^mOmBBJ<.xҔx:(6|bb>]N969	ANuƁr1{<2(LCgن@ ϳC^Sq.gѰnoSLMW ܙ"5ӀrpHǁr"Xz.d'\Z,dq0XQb)&Zix].ċlA<Xmx4)=Ÿ i	¥v1UUĹ2;%Ҿp.$Y8Et\.csy W9\G?s8:֑+ tb:s*#@V8\Mf;k
3z
nsH=vKךMe[@\ׇTM	:\%ץAn0+ ק&r	`l7$1tcBhl7.v=Hn18k5vFc|=p+,䛋-F[huzMMdc#.qǝ}vi\A`WfSe}zB.acN3
V2[3j!,NC'C&_qOP
i*?%~TP {YmqVޫA\ᨌYz	S^L2J`rӐn
=\^s.k Ut1g5~ak_N"B.V.i/<BvYC,F;%(7ܲ_0.W`\\yd=p3w3 AB#b/LB~':$,O
q V:4tg4+pxn/MKWax6,ށş]|"އ_%>Z]FeT}t:w=P"VYp~ѽwdXa|Tonrwj%bs2eIHz8Ȓɣei>"a_0K
cCH.)^\cq}ħ
2 p4=~[k:cr/{:d>q>bx|yWv#vwб(>1M:ď8wr;{b0s|teȞ04]y?O94i*&gUrFHi#M ٟ2>'xGgH:]:tJ3H,Sxb#uen*Q7-uM!;ܑ,vy_ 
3v*e`iL_ۉZ5]$p.G&W5jȁoE"VY67줭@Z
4;T3@Posyf|ː$><^PJ{,846PКcacclj@_2ndËޒAbo
ǖ=/~ۛO(ip/^Z].xemsG|RtV{5˽
w+^3`JOW<_ypaȲj}en/k>Տ\^nx![r]M,vdޓC8EPK{C["  [  PK  5R            .   com/sun/xml/messaging/saaj/soap/Envelope.classQN06BP!饾p	P*n&(UbGS8|b `=;;;~{yp#=.>C;Vhc8zJTY*\!}6E&Ʀ,"5`LAMa
]d6ݓ䰊T-/܇ٷ޲*X1`LR3dZ':VʉFbIv$P$)UC=UU66CԂЩM%ǉȩӥݲp6t짚Ec`hYl5h=pB	mRܨ7d[+O6vV:7PK;*  /  PK  5R            3   com/sun/xml/messaging/saaj/soap/MessageImpl$1.classNA*Vme I2fwJ|D/g+l5iHәg9w kXq<)j56mFO_~)7T-NBTՑ:øQR齷>d#OX6Moxq7.tX{qy?8d3|)Oo0D5Qg7CxSrhOhEu̛R2j"%- WcGRg2aT?tuF;fI}^OD::lmݰg+eιd0r0&lKƒecwPĨbcS1n@5/sЖf5S.\텊Z̰09sJgjǦ2כWQ$;fU̸q5o{
<
TX@3!1o	I5AO!Odmx\~0;$=ߤ1i y2>3dM{>"wg!qzԆ6fSx1s!s̥jJh[op߽)oM?2%yܧ9xH՝HImPK#cs    PK  5R            F   com/sun/xml/messaging/saaj/soap/MessageImpl$MimeMatchingIterator.classT]SU~NNBB*H(ɆXVA$E)B;,n6.?fR%8~1{N6iŞ<y=/ fq;rB񢎗0'rxYaAdp9,j(0pCn٫^Ӱ&CҍaU\Z%CzETkpW}kYaUY(坊GE-Pmw d=V)9~ z7ab+ʹ℡vm+b7R6gyw;Ui7(!9wIzo-,jYxwD}lLJ$̲&e0V}	<yRbpdf&C)֚k1Dp<p3-CB1̞IߙZ	JxC1{kk)K̛cWZPv]y\r25p3Vu
of`C1b`
x@2\qˀ%
0oF'u|X(bP&O
9sZβ
e`uTϷZ#G=]33?/8 EDB֏yjMr9	!H6<b`HS
px1R
W9i(#?@?#L]bQ<KZI!P7u0G#h#cm@ߠ%_9WHYB11J^݄gEFvjml&rMFH:A+MuVo]FsC/1¿}Et9IcI?yMݘDz~p:+[c Ug}-)&.
ߢ2>\R젒\)7𠠺d!L+w bYRaN {	T̆}xϩy*5Di$PK;  
  PK  5R            1   com/sun/xml/messaging/saaj/soap/MessageImpl.class=xTU疗y	z4:j$P*0I&0LbfBbw-
%VD	mu-ko}"޼	@O޻sO?މO}`r'WJ_':FR:_g:A?w`~c2>nroT[e~B_Vzlm+'6Z翡9K5m;'0[~w.zM{qζPm:_i GwR.z豇yNsGt''L1?Nu:?'I)Z8a63=s_hE^Wh9u:ߠǛ:s!-CuNww?tBzℕSgV/K:7*KhQk'Ͽ:?H{Nh=5u8BRgq
M$Qg:vN)0p#"UiԜ6._7zd#^DwAEOp}"WG}q~NMwMĀ1PTy.@N?hEQaNW]t5bH~.bMw
=Jt1^t1Qh/v
=Ju1Ut1162S:7t1f;YQFS4|飜0UAJ]AD4v=;D^RxXHEq1=NGC,q36283gZKS#J˩5TSK:뢞VZA U}.脷DPMԣg!BNF黕JkZ6b'PPChH,c=Ρǹ8^7:YJѤ;&]\K2z\+tqC\]j	=IFputq.~?s>|(?ōĉ7ج-ŭJq_:W߯u]6EN׻hwx>jؖ7S$?M鱌:<@{pv].b.{u.^]#OQ!cЭ"kW+_Q[5B!sڜ3*,+UʷW(
R5Ca_0gQ>gZ邲9DC
ѭ@C1V,isK*^Qlfy,L`**f,XXln8Z5te:i׍t};Mq:M:ZlN:GS,[6rڜ3+:0Wm|]ƆP0?lŭ6`xfDߔڦPkPuoB>ϷWl)8%O΀\_KAfT&#	 _8]و3"Î6\sf k(mi/8ArU`Enm'tFV
8~ί|ku#KpįȂ1uӚZa斦fK8@c8׌3p$̩Y5!Inlm0SOrJif1/_C`55˂M!?髭7Dcc3[Ss8Јb0Tr0k,G0V5>MenWyj%
˦Ι^4%6:dN}
=r߆Q _kOڀ<MTPW#++e#S9*-=u8,*[2cYyYEjCܒ=jCmCDHp R
PR;$cE~ӚĂ߲W'TkXk	зUhn	4Z#mC5n9j8װ)êن~ٽ,Vu҄ r$\;o"2H-<:0&Zޒ%4o^g-㩇hH-cZjQm[+S[D[0	
ոeN񴼓վB2(EIծubFB1%$@݌uhn?-,=COZD8+[b֣o$!(??kM-F\~ZCԢ?4!B^viR-ܴڏCAN4jEM` nl
9tYg$SmI`0D
&ِXChz7(^:ѐfTL6cى'(=Qp"v6X'2Ԋ>AHOmU+}-xנoT^1=(G=ceDd:_m8G*Z[jIJ	tbKKWNQFF
iTdʦ
jALuB~ibNd(,::.M:q'x:~8l-̗o!rmV)Bw)e/:Ã#6cRB3ǈڤ5@=9
#ihgp1nY҂s^Aڣ#uq6[D"#rYg[/+Pθi~\tUC_yN~DcH4\-F3c˘Fm{1,rBH!;L,zZm+2C0lSSm$V~%c[imX1Lr(ZNY'%%b>RrQtB!-n
P0Et%lNJ\R#ڑQ$ZMk

q*-+PQXVW/?"
",= !؄
d!6UpeZܑñLH82܈[iur
7.ݪ(!@>Ew&m#RƑĄЌ?5?|2"+Zyk}ڂoNE`Y=.ODUBf%]BPfM魔ڂ&D.3-2
HUM)1InzDG!h6V;j0(e5dnGh0<%tOLCwvXVKVXL`U̀`97kنJ	 1P㈧PcQtmVDR^t;!wv13$\V"tt+}!TC<ܸ%/ߝgC45
pEx%AGN&r['5`&0`HڢFuJ,[]R"YΎģb%99G3`'/;NMNx|h~BZ\(f(Ku=+Ό3k LESpd㠙'\^-+As:J6~t2?`&2b̺xhC<C1@TޣΏ .sJX7Pjeg(̈]Ԕl3rYHfj
x1zDGF.G̀4cZ CZŎ=:fne4J[
fQbVV
m0ع<]@7BJMڥ2F}fxϋL:9Zhlak
-1ċ|!^bCں&f&g_⯴ij;mg?Kt\1laEXBYCbqΠ(!^4_0n:*XCVCrM8Fh*ZhzY5!tMeg5ڜVASdKƈE0Hc<&OL{dMjhL')/
!$"_o.T#MZ3ci]1CGs}E}ʁTB~Bc0٠zW!9`-YcU.z|Ix"ԊfxU6g9GO
~!p/B#sꒈcUUh 8}aIL14&r6R(V]ZVS
~6_G1I!1i!0|6C4w|!)'#2daC6Ð `W))ywzzOrлQu:·FiIlQMIÇi+SV ,y[=+kAOHqq)
Vzʝ2q:Ppɽ.!sQTMkP
u-~S}uq9j>a}UZMkp/iZAJ5~ZAQڜbGA7҉XH!S
&
/OCf#s[j,Fs"#Um`T2BIv@{(1f@Q}<g%FQDbH¨羑MF&T")MEgE2&iRyJcv`w3[dcc-h5g@%FV;E<x+=iG?!ЬJsr؈5Y;4^8SL0uz®ǘ=a?c<e@[Z*zь57C8.g
5NOC"
1a1nz"Tn+2G<gksm)6x_!{sn>DY#_KyCO7 9А`!p5oAwQ)h<th>ƐCIɍ3d7d,BFkG*c)ku%A'0\hQl!snZՔ5s
9MF1jI氈$}^n*jؤ<#r4jv9F58ye	o1xzLr5LFj?(@~"K@!⯔OPh/SP7YfR1veKzQS*%1hJCTN:<M025\_8Q;\\$Y>P8<9=Qp(r](zVيd).>Tt+iMO%0R~&mY|
(P18}q=!3ΪkxcAbؽ쀈;cB
Fh\Li鐳9[|_Nu$cwS
y5HrYaJ9ǐs<=
9C.$n_-#˳/?_̤OӊM@0rUgpPRfT3RpEƌB<]VQquR)\b3sQ!Q!ϤM	o.,!r9??=(W*`2A/ÊF[a#d3"B'&X'hs9*"13t1T"#'0ɬt$	-P#㼕+n*oZo1HS9=LӫgW(ΏJxH^;jCT T
%NׅЫ4F"h쓪f,1}jud: 7E_Jw$lg$]RAcPx\glӳDlpE7-So
ٲmsu!rw"p΄],M]_2Y#n&\/K|JbXBEOF畝qj]>]]2Q~/aDU8ࣳ҅O}%t4X7nm	F-H߼Ǹ&;jvQ: h9A2IN:b$?TVM++[ 	13	uT*QpܞX8#OwA".bSK}X	8%Q%HM5fȂء22s0a1UVnLXԦT(Vc{Pw=%~̰}G:Xwzct?;!xfX)"䴣Ź!Z-b~ӠD-l.-1	8&'r]ʁI]@R6ZQ>VFטCʎ.oŢ@MkoFRV"jMP;#{8@M" f"P
"&d=ى~l:Ke劎/
E+r֯\#%NPuDTd6In9─i#՝P+#6nQɯDRIErSG;1-lVoVvE˘6¼CsLĞU	Q(nL.IS%Nޞȥ&z7"uqtVJ;Um%CޏΏPE)?CKcAM&r̋UCacL]g*ە8
2;
괦+߁ϨzYyYoܬ-BE6|ߋbt%˹-Գ3̘{i2^Zw}
^ IS/XzYz7_0kUkZ^{=`;eXB
z_6.ϭiˬ
vU?+W^t`s-#ccO{ځo#%HUui퐴2]Up6n/4| s70	
զa?G(AnTD͕) UE8ủץC0.'\7
CMgcZOeqFk"{sRm$ܤ$>
3f
 .c.DKl/({W܁{ۓtZc~W; ~yC
썙`s~iMWywBW wdUn;5NAT%{Q)r9ԚK{7z.Cw(3!O gC2ݠ0B g@F@
`<	{a)<xNc!H *Hr;]a֮8]?+[4@1wȣ0w6ARLX,@+0
^ޯ\xN7-X	oC3]~u5"j6`Wl@eO[fLF/Guj4~GJTMw";tSR{e]U|(ewG{uCAyX,,w)o+
Tc6VaePx w
QI|9Ce܎l
 c_`wc)[qR0/B1	xfB
KCeeBs!l;yrk?Ǣԏ(Ȋ|hoFBw,D\o'y\X.h7.Mz?Ծa4R kA)p7ڐw=#TZqLNJ1(|Tv!.UE^	h`Ï_FB6*Rl^J֒X3=`M!pJydov&V&{THm)Ւ	SUPH̽(DQe28D)(LY)2Td0̈́Ildm&&!wB [[i*4A&2{l3<9.p8"A @ĳ`[v:ʄ&L3sU"%'T*cp_WW;Lqt_&Tp7knF[!Kp+wyaVB1&);ɭ=|fWpjÍ.iPQur?NRRQ)m¦$7*,d05W{Uv_U-QUUÂ=z,B/vؼu̝p^V$|nE>XZJJr%iioܭ_;Դ:oN=P{	~U_nNjSczWv
Û9n XYu;p@Xh;ݐVWuo6fuЬnRՙXlVU%ɬJRXJRqHͰ՝| KrLZv}CbvNX)
)QB5vX[q}qvXWbpwmhs\Z\ߝ6T<Ki;0<K8y%{jwNNo%)mL3;5.,Ig%GH}pQIF5.&pmB<Q4whKK0ލy9_C!iTWr]hTmd[loytbYca!wn:Ҽ%wp^ӲEl
%)dC3#%i^7"uz0%t4zs0ޝ~FZBw|ntS֢X{K2s'lvgNAjCM%6&["B]9{Q]1Y\/n [1y<	.D}4yНVb!4ya[ZQA
uga5 `
9]3vlaV,]{O	f澌s
f7Ɵ߲-ЁA0GHGA{=E"Wzvml-eE	3$̞^ϰ]9=ʞ/`ˋX+{>b
Ofn
>ɇw./g}
C#_>WO
S~oe6%w}95}eAvXgbgb2K'<Y4p
*&nv=<G}G<'@<$^Ż|[P#d1)Qr
-grqr1?E.%2'>ADO)R^Jg=ևYagSi!<	4EF?+otq#rMLR)mH3^?/ٳ9~^ZkFo"U_C%GHݧp&W! O?/gb)U<אĻȻc],FN	ت\
и' id#, KpU"H<|w?]vz8`!Ap-hi~%yz$}F'{{j4f̎fW5 SA@
U}ƽC?4~<{y'S7Yk:kuO9~o^V;``t U	FS9]8c
yudzm*bc"v͢8cy섃?bmeҷCc9AWri^81ryJ瀛σ>*&vY)
	܍gذou[#Q#p}p[;NA/wT\*_8\~FC,a" $WaMiX܂cG
<;7öN\3w]&bY|~,
Sv!׃Gɳɩ1na߉Xݸ5JjSU(df3bծ"ne}po%tvv؆T&Wy]S>zj3];U}pj܄\]O#~
X	;w6	_=o F cx3򳡂"|ks:؄zawK^~!܇6a~1S|/Sd/E&7R*!>)MLJ)fCT@8R/Q$tR7oطf1'1(Cک2[
\T
=
)
J=#AFƻ)IzRX۔oh'#JnD|?+G5Y5wa%bv[uvd2<J:=t2;Y@J; (]෣%_5翁!P,2PLwB,|/oCfvhi\>{#KX+o'~ >I8ӌgƟe9;S3ΊY68&62	vm
ݦ0-9+~A|ˊ$DNm.}ĝ7P	)-D;1j/iPzd"UY~*_~[Yfz],eض|13# <L+@wi*>݁g.6T'Hw)ozĄr54$j˧SīoU?f@ҭ$1ZYeّdqRQej9JJE6tEn6qw0p)E C	nBBo"vǁVHXo~1\Φbi@	Dh	0cT	"-!Fl6XC+
\&vQ`Y`nl[FtFf
GGYG(NZIg1;m.a`A"_b1F؟L t	{>a"{A`w/g;d{
NG1
W{
{INf,KޖK3K9K˘Lmtt[!)Vp&btN(!JcmAD!喇z(]3%OuKL\jI8BS7WZinrr+3檄&	x""bP]̇LzEW,چH0%c`upL+wdտRLL[R\b)BC!T*tE-xD]B'Ceѽ0!T 
"`@tgynJo!8dd^d Ր,(0
*hBi<EFV[R-	3clnf#Qfϵ2.=*c;<ۺ#>7">/DqqSiު_D(ld*b]ivxPׂB)h@:RT!^/GHqWP&ZmLN)Rʁ/

i2rZ?[
{j/o]O"~C#~ ~P
`3Փ| t~tYpm +0>}fT؄1h'Woo,nxbJ1FfKK@,`)[Û["Y$Y[KBXu""NE	9D "GDx	m˨N^7(t,o*Żp0dƹH+Ak:*Hķsfə
:>U90fgC,7ۮBc]!q<oap:YwP=!*{m;-G	=|^`;Oº%G0nxCkCF!/DsK4Tn<Kump7ЏvkmVxqdϩE/ʗH"U"_W
0B|A8U|0Q@rH(50"\ïb;
q*0\be	Ƀ\ IVk/GRp?
0@CD`FZf[$A	X
h>Ƣ=!C࣊E@:>ft;hhcbN\'MS&C?ҀA2=	bom5?2x4'^G_ a\ ]o7cƻvIXqouij/,n:lMdh3**T,ČH
h\\m\&ԚofܲBjO$y 9*S1
s
Fwd9p
SddXe?ˁ(r(\"p,B*79vˑ/U9	>+irנ5T@7T(ƐI/Ak1f6ڭ@_>^SlQ(_	OؚU哬6|W *HʐGz
*s[߀^eUi(oQB^ǖ`A[!<\#%.ɛA)S))Gr~UfM3Ab<T~	'L(S-|{bw(d=
2|8]Iy݂3;iO9P$h/w+0Xt	Õ O>5(gS)F}yIs&D	~
rpȹҼgZzU!tk
\*0+<!n_[t`'|O{0|ˇ#D[RYId;:n3voq؂+vIU۰&)Rm0*d
jc%Sv,Ir'ՅM:Q>Skk;i'3J祋&wTr[yrY,	f|urHK25~,Yb1ʳ%G.GERd0O%2 *X!WCl
ΗAT6XV-20쐭WZxu\osy|,χ/FT"B	KX+XװBy-/cʟ*yfLnfV#oaAުXw`32TSS¯TU
94fru"8
vb&D^`l}*dX`ˑwpB:udۦx(<kqq=x:)ChtB
]7?T;-mj̵3eax[$$T@Йb\!Lұ}0u-[ˊ&C;{@PF1f{e	xy1j:|7[1s0(?uC81xahwhvlg=UmL?Uc@݃0݌ G>0E7ct<]
_|!RQaEv޶;i VɳBOIY[hO}r+ej+]ޝh;^tAANCIε%7ݠg3c}JG_M:ޭЍtDO_ TmЛV݌: w
R-9^rH"U8@s]K8 mg!W>c0N0[=8C~ gB3T%F/p}o;ð]~~I<1xF9M_4	j|uOs=8ڈfS	V_,%b
>' QL1RdL|=L^-%Wr#k9A4m%gF!oP^[vwJ&4#58Ybד(t=F.&AaT4䓡>dhn8bh.Rz;Th)ytw&	nD&)j,&1Hmnz߳Jsr@r!C
Zhp?m`6N\m,цYZ>rP+6F¥V7kV~Im2<Mf,xG
iev*|f۔GrWT"W`>l
lxJr)뽊4jeSɦ8ilDl
)MLh<osAےE}aH,4"g-!>xܺdM7woA{Ju9{4BRM\m	i1V0u
r]&C9^:Sl/rKtr_tYfTq;+@J!w+ΔGfA-oC(Y;^:ݮ5fɡpPE4F*nS"Ed>a7љD}[Yߪ^&0,ˮ<2,6r4V]c4h984Z
ʒzh0P[^- *P5@Z,ΆZ|k!haXJ;~hm#<GQ_kYPv~kn`sfh70Z(5*x\q;ϡ;%/,qe=`d{zt{ ս{2I(ih+,Fei͋lN5A*JJ('rN
1nzN9Қ
KLc5M";[ &1zl&g}sݍ,s
rQ0F1)m,ӵmA=TH۫7&kY><ɌDmь7][]gا#@	]YPbcUFrS u	K{ǟG=L
ȁ<w?C)u0B^"6bIq6_gu+PWÕh%Mƙ1nIGSW>
I3=9D_{m)m 3U2њ\lL:zDcWA7s,_V SP
T?8F1Z-lm7aXDĀ^y`S6i0DDxi^Gdjo"yʛ0E{N=u.?Aj:ڛ,U:*BdVL/Z)PHEVq%-y갗Tg_˽½`~ĸ+vçuh>G:!'1,<Os[l<QaN7i]$t}͐d7ߙE+{^ŦgD< /VeYӼQ]~Y,Q}(beYn6|?we(I=H ٨[`9c$:X"0^ZMC\@^JHᗱ@G^lW*DPKs;    PK  5R            0   com/sun/xml/messaging/saaj/soap/StaxBridge.classTkS@=,""*تi)D!R|
Lyh*NMMN2g9cFg(ǛTA?t{ٽ9{}^&ᾌ.ha( Yɴ~-^#	KRy孭fMQ5p^ͲhuW74
-Gn6A\/	ZZvYKD#(͹\},hXr5K7]	䯴}e41!sNX{uSw0̨'߱xMmWkF*ge`duSl֫b"CYȍ<uoC{Ν<nb륲y!al'6Hx0ZQW]aX56K/ѩx^a 
m:ACbj<[$_NNM^ThR̩bSv][/]FJ~fp0ѽSCzűrΪE{)i
ӚA\d=˒T3 ⹂(U1$^H;7*TD0vD-UNd%Ϣk)HKM"6amt0+2j:F4z^a6	4=B|K2 +4Fi_%Hl4qCt#D۞=N@:D>(h"0`D5	0qM3`mR/edA>@CMb~w΄8IɓC49dU}&})ey PK
:   a  PK  5R            5   com/sun/xml/messaging/saaj/soap/SOAPFactoryImpl.classWSW~nަu+҉ҴMnjYh&8/%ܒ܄
Ncs/0ul|ӹo)̷{o4Mɹ}|z7p
N8_x_
y?c~
Q0	𤂨oS
V8
s2kDw]|#Zp^|/ႌ81!&pA@!/G
^VcA?S	tBv\-#B0(	iXwl}@z\,jH>uHώi\iZr5ķ豎9	t*˛T2s9VӴH.e"CZJgO2I]ꚥH)ݴ$l	 ,qptn(n/MڰEW%F}9]Zƽp2g,#mrlFik(+RPq4zdO-cm@H`ZVPސAҗꇍIV>kj]z:8=KȉxdV <[Vq=kcD(WL}귬E%bbʤ>h-iX	EFQ
"^OgNJh&JgEV΂.$LvN
:3Y"6F"U?yE7uK3(1EF萖ON"eaC	86l6NkKTNOEKq}`EYU}ؤESU\/$쾳oSX`|26L4nЄR6<@Wrq,IVjل֌Vuk2~2xC6\a#HSB)~ˠk#j*~*aJ>eWxKb^]qC{?Otiy3}UC	m3g'G3zVN,f<Ϣ1ߑNi97L:
)P(BvT/s9?E>Mpk:ʼTE*QDIXUяd
;d3&	rs$"ZJ׻/ oqf6+42aH,^t\|v3O";37|$$nYThPe`&6Z8l0o4-VЭL׷}Jz8)p^v:˹2v%d'Nd	Oj[zyiRn&#X7^;ՈXSXIWťIxn}$-q
6l;k{M^vc?g_:-圭+_ގkwqًkl<؀۰iȜc]A}|&9vh8俆WvNa^Xr
m Hŝusl+
{֏{HcFڰln..
ܖ涼[	&lkF:31/T'2PS	[	m㸝T0vV'tK		
V&\$rJ9!))u8EJ=N]ٳ+%CifUEMbW8>HHqbH1\.ROqK16T+))'"	fK*uKF*xpی)C%Ԣ"Q+QT'pGtk
ܹZ.B鼁ZӘƧqhFi	=}fo3^A8iN3unu|Poɡ<:w+D[k(.oou,wdG|
(>;4ch(8r+ѓXxcY9s8$x/pE\R8mSD*긏&>H}3d~VԳ ̵=șhbxK\ JwahzrD!>]1OFGdeLHJQ^ˉ,`\CAq"`HCU9S
a'%fyy*L[ގ)=oNR	X+ǜPKڠO    PK  5R            5   com/sun/xml/messaging/saaj/soap/SOAPIOException.classSkSQ~ 7QZ^\%L̩L8:~Ê.ldf؇~T{ˊs󼗳
`	[ADI.d?=a%gXQu/8lpxaՇW>l2RysQP+s$ղ|Q*%4S|*r.w7lR\cke`p'-De紲S-ƾr\$K$bhn=֙f2,v
쮣MD\EAk fr[.MBeпPϣTM46a,ёcV,fyK)|7&xDضR'3tZbbWd[L7ւĄ+dU5jWQw%QcvʡY.0-^Փ׫FA}N[v7Cb!}C,Ͼa҇!Ht)A-e}HD^:Stہ[Ƥ?sosa0apaLR#{Bڷ(Ewoi`ls|N`S䙐eNCM kt
.:IB"Й38:1Lb4mvcq)u
Fs.2X
,|2MѸ;rr?mKdt~Q2|XŬ6-eЦ,LFz6sf){/z¾Dwjj/9/of~b.﨡lͱI<69h$۔43 ;-J]=;:ӄZ'tضPK35  ]  PK  5R            8   com/sun/xml/messaging/saaj/soap/MessageFactoryImpl.classXW6r&v%yɖi5&
CMNve
'i^#mꖾ>pҀO9=S,,O9?3;7'~0vy0eX1D`((2v!'z1 㚂1Ƣ14bQ,WEsUcxoxK
+/ƐK};}E;1@k1L2|C7d|[w$֬ꂚ)9nflbmG3fN2c%Pr&iPo,8kcK%ԝM,"֌F۬njgKKZzH"kTcR-?qt<Y]23F&ٶҳUu>c[j!3iCjα#ABui	ʜ;RojײA1!G#Ggp݃sL
	;s=2JOPɟ1mBres&	J~eT-%ۧl!vF˖9՜irQ=
kV\2/f=^pM>gT9X S[ey2+@ `vTҖFGq\-Z.s^mZJx|{ew(x/2+{2nv,_Uѹ*zݳ3Hז:*-ĺ(ij߅_˘WVvSy*fۧ"qPY9/	TiCXi1_O8G'$m8oڥB*:XA+fv+G9B(~'q/CH
ӂVؽ^lԯgïGq*.U
o\%Å-Irk3,[BşHنY?//	N<ѕ%i]3Ӿq-qF8MA{7ZΚ5/)a`+qϩ&MUzlwnySc%]Ǥ_{qx7?]^[vOsB?ǟ$Ü3%lC9+fh<J4tJNi*%j+{{Rq{[SrM6ϫMJrzzͱZWjWKAܦI?vi^9}0h/ڦJ}_^Twzvܫ$byDpssis<b2D'wՕ5RjS
Cx+X*o<C>ű[>e@O }λq
+&Nqk]Sj[T8$"v[lcıg/=8ڹ
5|g
'ً{xl%||hY+,:=vߥE].VҳDo,%8͞`5
*:wDcqcEE>VDՒS+Pn~
[^C=+g˯ʓ͞s@0'qƲYgtH% W	f̋)^M.R7RwpVhXĞU콷ƩHFZ"whS.Fy%=e1ÁD
^ġU<r7"֐d@%_
>vG!if\?
W(%SfFYa+哮L<.`/bSGf\/IZi#8=kǨK-#&)D&#VD>DUFf>"Kƴ|I&3njL|τgb)kh:&h}dWLF
;G(h'+KJArLut
A<e2U&ʷ6᠈nb!HƑ A2CX
$cdSjldy(]zcgslJ˩ڞ-p)LگyK|(36W }Qe3o~΃j[f.B=PrmD.2nT$Jw'_PKJA4  J  PK  5R            A   com/sun/xml/messaging/saaj/soap/MultipartDataContentHandler.classViWW~n0[
B;n5l(
lMrd&&_/+ӆr%l?0˻<.?w #w9jq50]|@mf4rc5
A<q,p|˱!Z,d\2Vw{822[Sgņ4Eҵ6k9yJ
'7Psò-w![$	'%f,[2	[4gH/a}fn$/f&mfd>/,{n5giʊ|O8+mSi0tIw!'̽G/EVHL5Stb `EN;Α9\RӂOˤK~UAHުbH>YNap|YIwerC=pss<r-t*Efԫp(jY/Vr!m2'ڌ[YyއC*aq1XdUS֨RQeS9;U0ܮ|ZڪL|l隳+àInSʷ
MR'0I#*.
=Ǫ5<S-lV((+}C:z`S8^I(r3K"S	i D	@ D 
@T0h$ڪSSHptdU/17Å\EC[rg~'"o<Q[#_D'eUC㻙UݶH_mT6cNQΥE6+mjJ&MK{(GhʒʜĮ)5Xkg	q4{vѿֿ@<gvQ3k	"}ջhCD+Oq~"-^#u~Cm<xllzF?|	o(nuEh;L
z=7W24JjIĐQ
g-tH#R]{P:.vѸ3K^v
ADcD-:mtNE'k2.P1
H:"O]x6[4oCz+\CK|.ZmEQD'h]A+TD+GBJ\ΪSÈ}:PL,`$'%L1V|w
^!"	Fqãa	7I7o 9A'HT«$q~&PKWR]    PK  5R            :   com/sun/xml/messaging/saaj/soap/SOAPDocumentFragment.classWU?67I@i)6٤,0MiK6Hu{vwf;3*`E(*<T|Ԣ4uAP">?;ٝ;?}~o`#{fLI
<Eӧp<ѳ4*:{F M""mx4yȋD~@D~D,OLU=OyȫD~F5"ERKAWD~M7qmތ`Flu[cYzzXHeyMϧ-U=Tb0;5ռsaKe9;kf߬=ϲwVذ
i:(9p}ȪYh.Rws7ȼ[ԉmYP!6-zTfe"
wԀ j2n
q`'ʥ	DJj~H]=cE5]PQ2%U2aKv[ܞRMTpKOL:6=r
$q>cMU[]_ɹ<K+
il-⍘JdK\;LI\1d֕Z*q=QKUL^4yu(Tϐ.^o.Q%s	Z	[
)H@@}Z:tl7|0Q	f#FK
3A>^Usnc"sSx]FZ.^5Щcͨ3Ր#P*lV-qڬKt1$U2"4jAق{<>sPP$rd6Gݍ1>UL_%,PyT5NB"F4sM ,_&Nm:֥@ugIѪ&,#Q2\:^ZӬT6U	96ڬ	ZtD(Y>Qk*k9W`8pfGF`pdp+b0Lk4)C,|_w]D>
c,CPb`E6iDGiB
gW{^HIHgNø׮75앞թq2x>Gf;G	1uM;,Í:4FWb_N aY-2
tfM};$c|/yMǰCb	pwHnSz[mKY؁5TP}HߏeA$z"@Ls;bt6h`?t:p F GEmO
ZJ\ۄ:Bfelx dPJ^^N*Az|	+0F[x6F0{|fk6
"`5roqݓ$
4Gl^XKaMaUs 6
BF=5'1)~)Z
!W=,и'q_oc2XP"L6HT/̄OfOfH'9CPs( %AS"#O~}Iq醏.	O"5f|{"2oic6OvLjh켮\a~A׆ggjc<~BBC+>
Nϧc/{4xLwтpl58Z#T\aTX%Y4:EĨ:2S[ޱCLxrQLZ{V
us
˫ߦғ`Pu9Tp-]l].}d; ìtEJgVZ@-B0XPEɢTe[vD@mpU~
4lg|3F|>I|8UWː9)WF	ys3pD>
!n?A3_ˮ`?N?w:
!̘":"}(⯱0Dv<ݨJkچ?<^ǫ:֧y{={f[5j^H:&J:(?<pM_R_X[9wx_n/S_PKC}[  q  PK  5R            2   com/sun/xml/messaging/saaj/soap/LazyEnvelope.classRMO@l? ?1ѓJĸo8	ŠMSүt4 qZEQ<lv{fv
 .P]tG(Bu
NN
5#>fceRE{MOSV["TNK4G!oOs(q K=$nt"nno'5&Cn	jh(9Xwc֦!0cůb7#K\9.THA(.6¹xL~Z
JnI·L<dẓ
K!UGsכdFg8'! hhPQT]'d(a+b#mv	HeM|PK|U    PK  5R            9   com/sun/xml/messaging/saaj/soap/SAAJMetaFactoryImpl.classV[V~(M! :"B!ʦaV٪\H/H.Mg۷}g禥
K9y{NNϿ	`1LKH,+hƴ9	
dMIXPЊW-Od<LFZ"KX[x#22b}$($}XS/2^Kx#{?%C37-=^L+Nu^i$CxʴMo|c+9'ΥM?/WR_ȢCVtc{g҆Kv|;oX$E]߈$O/EߛW0܋Z:d<p&}Ӷ\p1K=ЖtcsQ/T+m<ӱ~;,%Oá&B2A*|zk)!a:G<Zh#@	
aC*x'M&ʰl=o5Ps 
`%"Xc*wxl|BZ޴ve\ZGŮ.@W%=G;qɴrܥ{U[U0
[h
sF
FID	K4DaU=Z&c+59KWh(-95uӮy))H j&F`srphF-xkZF.[$|)7^|Sp&zb4Ӆ͢F!kw|	`G^(p;pxOČ#w<r e{f|}cw^څhO㘮w.N+G|aKHG^"oH6զ]~A>{R eGUV2Dv>s#4Ɇ.}teM>衰.(]O:kЮ_AnFABb؍b$:;:pr,]t}ϨD.תB
Rw
Ս1R7N uxX-pW}Ddo'!	SheQPKV*  	
  PK  5R            =   com/sun/xml/messaging/saaj/soap/ImageDataContentHandler.classWy`fg@9EJB PР=&d`/vgDk==Զhm+xl=lkVmeGfwlwz3o=~Ӌ܋+pq.Vq\E}^ENK
*np'aE惂C0n`ۼwxq wzqVb&.cq9ANN'O|ʋy8(|z>s<$
xX#^,£byL,Y/ˀ8"ǽ'<8B1O/*pF=
fm`2AzxOo#դ)^d黬`Dt+F*k$ _fMk9Ek(pJD̸!2R(!mݢL*&^3`i[83X43i]tBOC1J-#n㑨T<fƌ{T4dRA:,=]OU`jamΙUNמFPORa-3ȎD&6jtص[<VpʉhPY=AuwH
8!Nrꮔi
CaCDpcJf,B
=$ǝ{CZ"ޤvq)te%\삃$cpe2"/Ujܞ9B$*$;~-ZGL)2'D✉"Ke1+9H0 SK;D ݛE%\v7O0aQھuN31y$<RF79VkSz՗ehx4[c
#kƸ!GU񴆯
|
{=*[TP&ԯxF

ķ4\w2"w[<H|W0Ov<okH!a%Vg#vGKK/:0}zԌu;&.?~*^2H)ژOaFo3*e𥌝3e}ۥ}=fA|nPҧxIe
~W5
VP=fj
~w?$g
Z6_β3d"eh9L 	ԧqo99Kla=OX#foh+^Vpqq}Vg|V&^`(y;;ao
e

-
oaq,1݌3RiK[,/s SL<S@0I4CuΊ(Cgf!aU"Le9d):jb"y*I2ER"B)o3CaJUQ=CDW\к%w8ܳ=-$@\U2
w"O/wKƠL+1}FvniĚ]]jZ4Mê&1ΈvkG3Y.a,Ok`VSђJU=z2֬`D
*s)W-b[{Rgx^=m	ˏN0cn4J̅'>╧
ȅerS0?26ɡg(1DOLG%;Ȧ{jne7phɣ<z$!N5twnZkhNޭf-eVWHQZ7|a1n($N04dkj:b2#)}WN3FGmVCcEd;~!\{`k5b(CLs|s于_)~VW	8\S^̪{AuVkWtu(~0qM)|p:<ǺըພXi6ю
|{SU\*UI:9p#	dxB/j6m(b}|DZ#޳g1 uҗCyS:Lt1y/NDN&:Csn+!uNl#0p(3_̋">sZRpV N?
1i GM*0&[!S	mw,d<[it?ꏡu}N&ݏJk~U)'0I7MbzGՃ9,X0j &ݩ
a^cYuӨU8Q.Vϗ+ӫ˲WGHXӡ֡a<yvC܃hhtrAb iҏqog/apA1-`9g!fWb(wADȱrWz*ո<p}7E܈Wq'ٛ2"y1I{(]gх0u `l6硛9"AHi=L(rV8.F;䴯-#I"%kyU***YT/#%CD\A,dYPATt+Y,Y~8Uw:	[UġqA!lV1	3w~MtzYDo3T>AimNV`7ʛq	|)Py AaY4Rm.sGeRPK\c
  =  PK  5R            8   com/sun/xml/messaging/saaj/soap/StaxReaderBridge$1.classT[OAn)--*Rb\^ZDC-6cٲ%73?e<	6R73=o_ X($
MrLuaZ31%w'<!S|0TD1U=GLyGy2?풞].-1te_/8Umf%<D8/2
ڎE\X{ٰ
1ÇtA9]-z>vYr
_-e(-6־pw)$N{5P*BoͶbr$.PjQ["4[7W;߶&Pu
Bs
J3:R7xV,T݂xnHa ZQc?pW1*qIE}R|*襪tXH*qOT<EVE4
CqKz>kW}lmi'#YaBLe˰[m:5b"Q[c@&t_@YGIĻ*7xlE_2Wrgac*h 	9|NHZeL=MiC):iS(?^W5(Wn89p5aH/Q\'_<?i>#|rBrF5C'$G&5T]TQN(J(ou}L^;6Ij:Wgm;N+P'M!n(r\#tݨ*PKL  r  PK  5R            6   com/sun/xml/messaging/saaj/soap/StaxReaderBridge.classVmSW~nXYFPQiER`jTHƆ	~qI
'_ۙc;%1@R3=y۞7%<9Oc75|%1Rۧh_۲knhX-ml=fQ7=
0m$xU,ے+ꅊ04eL=sx,?Z7C,TC`٢j
wigTx}͘"o#y;i͵5q}PN00Ø\eʇYd@Y ;Rєc{3	_^-Tz-yM{^W&3u&oҰpdU-)vxEhRƥT1.5O^vZnElXz6L
C8&4|g`6@r|bSC#l1]Qr[z#imlxX &ʗ<;hN1LXJ0,<熱]a8xZR}s%-U
LJO`F ?Q `2p(W.l:-5<%y#3
[3m!`D;|JPWNr=`}_rUM	fwLgC<ѭB3Տq:FSV#>$_ 'htW3so2׈̽Alx~'&>I4?	
,"f4\>%VLqb&(Yt{{dSw騿BHBиD]B):1A<t_c
2y2B~A}B0\G*A|7XNG2a'3HSW2>W6䪆\\}3G2g;8w83Fp<sV1PKh7  	  PK  5R            <   com/sun/xml/messaging/saaj/soap/StaxLazySourceBridge$1.classTNA=ӖBk-~"lǂ"E hHG(v,[nKwhCLk@ؤ3=s3g?Yzp_8Ƙt"\yKk"t2kNcĐ*Vyw*z)LR`f+uGoږn>U]f5YJn3Ĳg+BfX43x1Y
UVSOp[^,)k[.B/r,Eu{_x;|
.L鷃I8[r:j*3CDW!fG.on!]\C;iw/X-!S8\vgVi/LWܖZuuf4$PC5B#*w-it5a>
OTC$Xaa*zሀ8Mi%m=LfÚkJ"⧝Nax{%nܚh+\.ͥ-:5f)LQO/KH@݀
nSyOCl6ܢ[1=bs* 2_xFB01L/[P2)uL"'Fͩ	X~(rP~b6Ec(ҘGD1kdVH)e[}"QT$]e'
BPW8rLذڽfZrøBkjWq[a
wTw}P0AUPh4z PKO    PK  5R            :   com/sun/xml/messaging/saaj/soap/StaxLazySourceBridge.classV]WW7DLF(U[VԊB-5D~:)&3}[ַZUuOm&k~>{o8e1@/udYLș+:\0K:|MW1kp]7t̠$_7ujJY
sn	kv WVg_B٫A5Wj踋f`YKf]jvCaT:%<f\pZgyo$ky/YU|GIDaZV mjޚ*̨Jٮҋxa,n)V
̀¢BGd,03r*Hw$kbQ\G4]~4eՔ{nk.7=xgՊg-ܰLD!EuE˹fmS-SкXHО*uLBW~v8jV66ZZ:֗j+#w)p{N6YO64礰2S)nV$ldGm_(㞁>k+gMPF``'E,n.KE%iЎ%
TPmk 
-74||E3o@f;jk§vTr;9<R`ml]	ŵ؟j{*y*dE]"E9z=tFqf8qj۠ݪNn}ķ>--
SQsP˯>h.-vWm2^6\ncI+=ǲ+If8Q#*)w?e
K5[Mr39ʞoQeYwX_fvݼ1`>25wHYx9K@LC4G9]lfr/ 2g垣yL%v0S/=C/v_<%V7N":qc<{ WOp4%xS31a.q8OٸO@SԍSlbЫ!!!!).ǩ1\<V#bnZQTDDȪa->G$6@#|r/͋0r1ہ'BhĴWe+/cg (>R!!h1h>pDZ9!3|zr
U)2)27kn&}Q2c+#Ȕ{OaֆP'"ܵO'0˳ZIz ̀wS
&$>%­CҾCl{؋[@ PK]NE    PK  5R            >   com/sun/xml/messaging/saaj/soap/StringDataContentHandler.classXwFiAF8YAPhCR`)A0fQ4#,ެdm4i4)6$H~9'HțXwϮ؆TlՀS9X98XQ0.6E
PpV*؟BT?QSAL
~b5 ~%槄xF}Vsx^9pN (V/e؄sb~5_
^S7m o
o)+x[#aӓyFwL+[[';$wY-m;B}Vʐt̈GҤYI=}Dϛb_%)Ӗ?213Xưm}̎l]?-=t$cdl*m|c#\nݱӫ)3׳;'m'\-1}܉xTb4-R a0z{AO;*:9m$F%l<)$,t}z@1iUTͮYi%;76X!C5kdm,=z
F
sbu,KZ=٤ М
D>ӊfs9l)C(xG27cȒ+kZ
NMr5rzCDayDk5u
'EA%[U9m/ͶyI{ϭU@l3fƈ{>k8*(=y33SkG÷ѭl5.
=
WßpQ#|k3f&ynK]嬼cdVQ؄¿h
.i+&a"kk̳ղX䡂,
Ӹ
.JYHx`
;RX.;#3*%bF&#>
>PZ9e
W0sL
.NkRsLQ/'riݤP7|)a7}ZԴr%lޢu.wTUetWs]|mEu;w_|/Yۣu"P%>(bCֻL؎A|^HZ9koRP^zDif~=34uG-zl#GWL6м .Q|,"Qı*:%tD 3O1%Je){5t&F'zpE;ftFal.	fop?B·6 .Yk/C̅9]]G8vp+PR3Hv<Y*UnRř&o^<XG<ZM%1˹YHw{
%%ZlG#
2R5ӌ8@=]yWb3|4,IBPFo
	T	e4Oby\w˯{2>]aHT	Mn!n=xw_\8٭LBN5xCUfLh+]%`T
7vj:ݗ6_)t/e150܏&fil a(c8c8Q 9ܝI<X1?"%?cnFۍj)߅CB=M }<=HG/lz0@D*C
!2_aaޯq
WpTAPaI~8O7e**IbՉYF.T8sOz4'Ŏ| D-JP\[9j)a-W%+cu).Kq_;Q$D=q$~X_~KO _6}%{b
>g%
3z9NZ\O243O9r?On3ìZV"Cn!Q5z8g[IvvU#;$֔7Yx;F6˰G|V13ؔ(㾾]?u}l3±V^j"ֹy|+U{unf#=!ʯ4wC\_Kz7l
E&0K=nXAJ36?+gЙ]-e>CzlcPKĩp  X  PK  5R            C   com/sun/xml/messaging/saaj/soap/FastInfosetDataContentHandler.classW_E=I6]BCBդ\jZbi( %ld7n x>Zz{??I=	i χݙ|͙Zq
T&bZE=VQͪxs
.D4>߀xA1+H؅1
2*Z1Ţl/EavIeUq96(
^T
(Sӓ&S%cHf
{19廖8(Иrl7lL1˶Č@(,4jx!7o|֔`N%!	<6vrI`'l2gzՒa,%='
3g ߴ35]j[4iװJᬱ츄>O̕0V[ʿiӂS;<I#[ˆo9v08ܴ9{b~L\GP֪Ŵ39)q7ՅRwm˄Y1#_NZY
=(eŵ|s8r?_i5ܠ,:Y>0PBr{n/bu6x\4g<s޶
<$j)aKԵmI 
q~tkt=YSk(`YV!DD@2/I`EC
^2^*u2'k3
︋}K˶U諚ULxS[;{-[TUwb>Ve,03TKۈld=]"LޥC|$K8^Oꌆ
%8n.N|3|
_+i%Tɯr}}xD_wt'
Gh\u<tCm٢loe5if\0P۸&)YcշīwnJ7kۭSXeg _4oqc3;=̻GR06Cq#'\#mB-u6NmCzL5Qk̶"rBb7X:~ǂ4QrGx@V5ǟKs|;#Ė[FF3/I@ޞЈ0<X~mu8܃ai%'B7[C	|~FhwM@(E}#HmDme0ZЇd@<1ُt!a!ָWnU4Dlw
-ױWq`W;8:NeR?IbC8C\:AχV$Q*{%|p()إQ
q<g `V"qڻ+$ݞ2 p
6}*ƩD@NOCԱB=$Jd1))Hiw~M^G[}
{HmO5tJݿa
jOсHG#f}ގH}+Wq` T
wQ:Bwdf*1&Ux#$"r\b];^˥!&c<)4q&2yLfgEBPIŊNEy8мHEHZN&2)G"PKҁ}    PK  5R            D   com/sun/xml/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.classk1ǿٻ޶ZC>y' RkA8l4knd_S*&{d&$3;<Jx ZRIGz$RwU~,{vL9ˆHd~%>9-+EyFsQDZ2vJK
::W,_0n9ߟEKȍ`Vk^BYnTOvdF(쌍kF-l͘J.pq }g鶇c_ӌ+}PeUX1:,azC'x>}n/Uڦ76i8"=2j3C+D93._0J51_ďQsO/@EV\-gۓo;"YGˌr}J%uB^
N3)B|{_W~PK%͵  @  PK  5R            K   com/sun/xml/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.class[KAĬT7d(}ҪhGvwIOBl"3;gsw7,b(|üw*Pn4#jJA79X䩇:q[쁳ba7tn{IB<ZdsDEuu_厈6W?$7&##F3E !۽HfV4HvKwM$wov_xF>;
},a&p&_LhcEpM0mucca]&x_j@n4X=ܦHI3#`OZ80Nr@z4j5V<rtZ/_r0Di:|S/?> PKk$    PK  5R            :   com/sun/xml/messaging/saaj/soap/AttachmentPartImpl$1.classT]O@=
!(~TAY|(I8t'ݴӦ%_h(R`I3|{9w fLtࡉ!a@
c&ZH0a60i`UUxxaפ{/☗]YcΫv~w*ԚzJW-3.C0мCgbhz]mtYfȮI)Ǳ%OedXS*gύ|n`\wD@I0k.v.$ͳHEB{8$%A
j#^uy:TJb^<R+fqW\xbi`9ZƵ0"%JPD\{;5ɰ`rvug-X;Aͪ=a	KT
*&|Zbqap}m}UD<sajԒXq*Ey־%<=u.ֹ/,y"bK"ԙ~;%KyKT]ݓBپ닰yD8E-1η6,	7.Riщ.ڽFe4/`#4}UJz}^!i6FO?Ls&k#
h@>!R4i&AJfIPt˼z55y^X[c{J1RdCB3ih>FDї褞I> PKl3y    PK  5R            8   com/sun/xml/messaging/saaj/soap/AttachmentPartImpl.classZ	|T?Ld2$ @ &!H$$Ơ2Ldp2&6*VZUj&(*նVmںVO-{23wg߆{Q"*rSiv^#OsR<9.\/LyQ=RsU
j,ZT>Ee.jZO$SW8^.U.>Wܠ':.3\4u>Eyʹ]ū|,-#m9䍂f'q-U :ovl>WV:N9[t;EQN'omN.(v;r\ΗrP.b⢕\-H&/Ro`L:ra
yW:kxl\5i9{kM_z_(7rQP$OZy|#_nqw78yηh'&X	\ͷp].
%rw=f򏄑]|u}|?rpr'tN~ɇt~ɏN>q:?䧜qDgt~]OG0)eXh[p1>O/
l{@YG^[f|+V
F|Se7VTmBl.kx5^ۀ̏=/Uw#@xy_iyoD`ْ w
2ʔ[
m*He3([QĜ2GuLP)wmx6Yz<aH(C%Hmm<ڶ 6!Gkmf6fQ;ahR_ ;hӠpq
OBs:Da-HOIm`jWlEO@[H)}cLHުH{g!y,Dy
@24 7"'WG̔ 1+8(W$HӼF{<ineJKbm<$r +OH3.-Bа-Wĸ,X]ac7LI)
qbipl:9ڰ"x"!_j%thFR9DtŝY~p0'+~^L'5ևIج3nCؑ0,ul
uXaӟ6i19nBP8	l/}ms[v_ɤ[O^Num<YV,ޠyCo{g'=>/9,ζ1ԡOA{KڇG] $TÞ	E$F?|AsdT؁ts?3ꘊ)3]7U&-iд$Ac/S|[:=(o-!xBQzc~j< <pVJ2pm`ľky=ա6l MsA
Su~ZNp00VV^VঐThӉ3u.EzN0`OPjہ90^WC3-K=8/RMwtwt.t
kMߣ<~?_`nW*_sCnzS|1hί:ԆSΜ=T-X°ѭl(|7ejS iXY"E	&T2NyjP"Ϳ߁DW-.kH`4CPXR*Ky(
Yt~gESLiN7pCf,.
gׇcy#yNng*1Lm3}1:МTwK+m_&N~_.f9,.؄&_,NjT=Be*K8=ӕFBq^
|-@eSPEQ=@yP^|Ou7pT D#7_F[%]GApREp	֝o4rLd%vs> S'^O03m*i+omPeNHzD@&֙qXR-JU=|ɓ؞j2?~Go
2i?
AM,EՑ'qQ_:uS՗/|\#<ڭiXtfeqQY`ǳ00PҾqFspZֹɂS?[{3Qy]RQDCb<(HkNP-Urki#ͣM?ybKdAL`.f32$TrPF}ее6D2ݜGu-˭
ղ 6p|.`Z3i̛Dvǔ*X ,UԲRJ3hӆI;{
0QUB'}R5p$;tWVxke2MJ?xȍz*pMk8|Gznm6	KrH)`syzku%!4BAxiN@Q|HpkOcƙ4jmc=i߉OliP&륍.7vV73gN\G[S3e^dd]`k:cʘinNY"'VPfu
ʓd?AJ[ҩPjT/4%ieIW[lhgU%G %|[jYYFAzp,#Vv8B;ug
Q/?S?>-jøFϽXszO!nc)j-Ѳ	ϙ1lkovԸc~T}QX
~.5MxԫEe&]gIf-Gv1"0})g?E 8wrD" 	;Ωt)5'e`3ӦZ9bD~s|%4DH	P]
2gBI~S)-*R|-"@6,_K7RV6TZ֓ӏe
;8\Om"WτM@$vylf.(
-#@T[r7%;S2YjtF[~#8C{AeևL;ɘRݻ.u8bb5
OD{H+&\9{(^ㇸ!׹dJN)*+G6}r}GqXXnJ]Q K$i2LѠ
{Iϱ?H6wUδ+ZK)
Z@K)NetRh/t5ec<Ryz 2d*I+b! 8]=:a! ($A6@ |ȭtS:m?lϐ73䰩#@n4t}4>94 
4n<D̱ݔq4&>D<N0byr\a"b )D$@R܋jҲr-vݦ~&
õP uWf-$&Aŀ(gBK=-
 mBWfk\XQP9,(R|Dg4zN80au2uʞviJI<(a
3Q014ahȰ٨k:A6vW1&.xaw@Ƒiq嵛UVQz ,릩iLfȲX|PN&1PKp-ƅ.3R@"/*@bl\İJ 8i7YkB܄$>DE=4f%[zpuD~#ڍt@i)L6^qt.0֫(}K[a}qA_tf7"项-3T3Z(=4O DKZZ ʐ-,^Ɠ׽63eCC L11umxސ8D2~	Ť6$k3-d-Td-j\C%wSĊ<54
3c7ҫ
:(J?eCc/t!ո^KiT.(YEq*zrYl!iYor)IJTЫ&J@
l kH7cLL/*~C$;.Ev?~kz ^I.
q`y"i¾<2ӛYa`sc=ex%rQm`ڻOW$"1Ba{xz_(PbȑgI-:BNU.6˗r*B6ˑ^`ctr)ӻinJrtQ:lRtǾ*qTF/f9!g'-Tg9sCȃ'.@)+7QPwlPG`*B?_J4^K4^B~ZH)G)q<*:J
*igR>S8>3^|8D
C֘Y/K(iH+pM+}cɂgDCncQyXo&lĥu/DݷJ|a#HQ4G$ΥBΣ<*xU$Z
ηc:0Qgf%MNįaY0U~Z3̂cgj툍tSSQ*t6S,&2r4T3hLu"ϥ)<y6M94+*kd||ǐKjAd;Y	,'`Mrv3<[<im=۞*QoSq<HaK'tQv$7ͻp#]4\L_T,IXVR6Wx,rXcShAZr185!qjܴ~VbSnV?0{ME)(MQ3	9DǬ,NJ#գ\̖Z"̥皍@=	 tS\=L"A)%GTEU8Q{zpì0#9ĔUcV$۞QlIr#PmDyރ.뗢kEKc
5agC)`멄Ϣ졅&n7SmvA!}to븅N~u -4!A *v(t#aO頹&r,>G~ֱfw#F?
qPZA'갉尋&TEYZK(bMia
;3L%#hEC'VbSŦ"cWtEbnd"%^rv6y(aW>mtAm/e|l®tEbXWWs=tIkX,qkKLBrRp^ FPb5FY?_AVcR%]Ez*<fY>HmȽ;(ϣq||Z.|1"\в2+<x-]5|=7ҭ|a7a^;5;wxһ|}
 wTݼB YOSZ[:1Q߈Ƀ`ӷ"륣fH<aNfMxg޵lFgZetJ	UƇf22Kք4v~݁*P:9[ꚜ:ǯ璳Ϻ8Gɒr.kUHߘdŹհh#p4""+J n+Ifl7Lv|X<ݴ]T
Gm1"EmLQq֡zP^XHZC!Xܯ7!UEQG/">8{&Tď9'i
?k~_@)gh?MBTW曀0s` .~BWC=hv1N[L۲sM
V\oV\NES&RjQZP4.&Q9=y<HTe]Qѹf-UCٲ~J"׮KʄtY%~ZyZ3
kF#*@#e/ėOMkcdOϬod>K4!L%vT]MёN֠-8ፌf!4F1~iRD3.OV?F9,
|@01BKqS18ehL44VsPB5'-\TKS47fm0!V?p91?B:`'Q,A]5CPmr+=Е
N!!h xWm
ſi(BMBHWi蝴(l-icPGӴ	4WNEdZM5Z5iEՊU+!VJ[2ZNk3,@ў<y\kMFZk~+A1*B)kGv"s.r9"H+,t{m}8ZE̐ 4ƌJKE[hx̩?~x:͈	3&T&G兏ջ1Z⚛i\Q׻Eת7:urIs9cfm9ٵ:JV`m
N\m5M@[Ke:5`HdҟƓN[m*IfRvHTSyC7}5Q5ɼqEQ}ɣdȶq%َhEPATݴ{79w92Bd<ڍ K&Xm@+M4OL^1:.D$ԩU_,Qb!pթ_4;8JuF):]gA8xz]s|8VhEN.t]4
cN-0c)(U)})i<S,y2ctPKc  ?  PK  5R            ;   com/sun/xml/messaging/saaj/soap/XmlDataContentHandler.classWWU2a(B[ ՆD[
ZBQ#`p2N&j]v9A}"?73	z8y]~o~pсP$<C20!!E:
M(dD0-
GԐv2jaIJ8)c3\xecV)IxTF3L1<%i	!jx^NC~	ScT/Æ~9tFjsL))KWԧLmҩ_c?Dg24	oMX>3#|.+ōQnb/i\HYD.o&2F"r|'r$r&2n
%zdg}ut
WK
S3bs37!Z6&~rir|Ċ9&5ڮH~*\O9,MxzۋRz%t`y]o$L!D3\ؤSh#ík[ѭP杤"*rvaA$eg`M#>Z
l-7(^q$<î()9ET
kb6=<%CQCp%LR_N!]-)؃$pÍv,tVwBBwSHxExA\QɛX.hs@L,
x^:٬<ET(87s
w2C=/P|Gcdjuju#-j8jrCO):աU[<ҪSUD|$c+襙Pa:%0PF\$|/6Zr°)8eFJ!q)X7UgZS<0vZTre\Q|3%:Y6ՙcY!+o mL}S2"eMws|W)jZ?em'wLSW)w{
kYVđKO]fĽ(#<7r,-IX!ѣf}(-X "fv]Ւj=ѱsld:,ŇprRODJҡN,K)~{*Pb药w=anŋWݘ5Ч`:BB4ޝP&H+'h]ױoC]
DZõK+q{hI	/L2w+S8DX4NcX"]ijႋ|H7*)e'@<>Jxnw#;>?ҳIY<6jCqMc6ͣv	]#ưBF9 @O  ] "FA"(=.'m;~#"3Pq
]xq}GqgD%YrC?%ԏ/a"bWEX=
ز?m=t,quOe>ƦpG/^Z*h{XOE$ӶkqmOTѴ'n*;\@n$3&z8A;NdXLLM)4ҵI9XtE\%]^bǈ490$FܓXrG
i_0&OZ*@ONxJʢ5GcE'PK>ւ    PK  5R            B   com/sun/xml/messaging/saaj/soap/SOAPVersionMismatchException.classQN@=ë
@|E!>ЅFCb&&H >HąG-1nlsܞs6`İʰf`@Ly*	$+;-ԅ`ʳond[i@:®廦{똮(cj)M˞ٸ;oفVw+C{bٽJQ>IӑjO9M&=wՏIϜ3J[)ra,CT(6~`WQbrg"?^=H?'qiuHUPMW$%R
D.b!U65b27S 1ErPb60{$GIto3#6nKfqSdBD∅HSPKܠl  @  PK  5R            ;   com/sun/xml/messaging/saaj/soap/GifDataContentHandler.classV[wUN2ɤ-ű$m!"P R-ғdZMfd/xK_x]+Q\W`g2IZZ=dk?= p_)xeL(O*؉KtxU^CLኂïuoȸ*cVA.ŞTi:#!dBȊwKFNu):4°ot/8O9wˌ*G2|ɲ
pN2˄:CӨa
٤nOd$Q+3mϞPry)+J6<7xxicNXLG73Lgta=0;o,{b턙7vOӕ=W)hQ0}<n3?q9a_bpz<K1t>	#_w<CÄSc<_^I9
E`
R"1M"VV<a
΄c<K΢@*YRvzҲ2/ÖA0y6}b8LBBΆyQ~+PV㏳ӫ<uQnZ-Cx*R؈!s"> ؃gU<NqVхn
*zqTU`U
o-oxx34&|1^.LZ)*>*>MNm_/\冱G[ymXMOYs&cS7E n4YL\β=MDPgyjtbDH3TZٜe]gzD'Ub1hR0yƝHJ1uo<sN9:=HĨ[+wtBq)+еE%%D?5׶-C/dlCv
P"nUi{huo&?9cD^DengITvskb6fxZrFD*iKձ&M64&vӯA?!d:u/}htݡt;V QhL<|kZV=a{I*T]EH:*teՑO{@wu]=Eo3jth	WVy*ytʹ"]<k?5-YfW)!Afls/	tD:Ez%߷hfO
wlGCf{9Gd](/pk]#Awn86fwG_iJr*Az\8K.9Zq1S
Kn0f}2s/R/}w nXh`)>8I?^Dxҭq<i.2vYCB0N򆐑rUa!J	G2IP}ݿƩhZCs"ZFE[t*bvZidA9aIRɧɱ97`]%PnPWq꨿¡a(V>vN»OG
Z8PKx<    PK  5R            <   com/sun/xml/messaging/saaj/soap/JpegDataContentHandler.classWwcK~<& 
B1ؒP@BmЖ=FQF#۴ҬM6m8MӦi i+ٺM)BsFE`ڣ737~^-v#cA\  ATkA8Q7wRwR>Nա,X
# ׯшGxT1b#Al3rF
[v =A}
B]MhuLktʺ꩜n2
#-
|vuѓK΀>21;uǔI;ffJh6gEҩhfQx4k艌1zDwun{\)!5;Vvpє>a;5r_tIܢZG
aGs*ad\Ӷ(#sֶܒ~WO3=t"|
#˛4z5't	9'aowxHܺδ29Q2tiGi	p~d<2SDF(ȹ*9`pJM7. }R]tLY*_%oܲ;dVQ+L3Mea4@6=3f&s#EWS_XO%.6gMVe
BRU.viQU-JVΒx*׻+Z+H{*^I2IN<&Q^P!~$c?OU\*~7TPK+\RqWTkfΖ,ޒ-FyqΙD&nM)3%
446-
<"y *GO.l/7WfXt[9IYSn1wثK}'ǘ(Z5o}a~T2
2**hג}MsmY;fh2FZ`w4t-嫦#Δ/AJ~Kł_u7i8\\`
UXت˚)=vz!O]e~kELި-05keȹI*yCibȧSzu(7c.5HKc>3qLwl9ȧoq,Ũ踆H%YcܟS`T]٦9KδՅ<rY
5̥<Hu-˝|5z&cX4жL]{.*mPZZ$'ʽ1TKnGmP*%f֫Cys̤ۦbLkK\A-Տ&{{HG1wsn]d6>Ydg)2H
K1&0QR6WuQ؉];|)xg«+ʝkfQ-(`>ū~`TuVϢz(俊fPuonGje.c-A~*M6p9l+FnJwb=n!BFԻ*Sr i|j@u.	"FG?׃yԇD+2c4*=J̷-]ECw1?񇩡}A#ҝ%xN #tY'5cgȪN%>BٍuҞ8h;N[ww֪<Q}c\/~L%zncؽ{.IV>F4͜xaj6Kz,{8J8<t|ˣSEyǧC1jp}<r*  կaZ2̢qhf&ԔZfPCZ?D	OahfƽfӼb\Մk<6k,-EKh
<z'}3}yDb",-¾vI멋=曏R"meWH.93Zdт)fyj<Ly)(u('|zw9~֟%wL{q<wC?]{ N11~˻K̫!fRdq/.̋Bd Zol1]hO0ud578PK+  c  PK  5R            9   com/sun/xml/messaging/saaj/soap/EnvelopeFactory$1$1.classTmOP~6V; *jڂj@"!@Hwu\ڥ//?e<ma!5/>s=t^ixXB	S:t<*ⱎ'05LɌi}Nj-P5oaهmn0-;y^;b;M-d°h^?PXa&=.n7D7\|{<jwbaĜ.]N-/-i.$㧎:I#Pq6d
'8NDR]<A6RKۻJh:rVHUq
x>sGKq(!c[D~,Kf̀<g#E\	R\Kqiu˃Pgaޠ\` MܢBE*g30qqj\},ͥjG7[TTH3U*%i( ťͪuU(;F͞LǯXIyz+$VЫ3_~GrAc?aq4EaVHVJC˴>dZBk4jǉH?4z$7dy"VOmIX&+nN\}o(HP	jyk( h鯔NPKِ  a  PK  5R            7   com/sun/xml/messaging/saaj/soap/EnvelopeFactory$1.classSkOA=ӖnYWyPQ[PC	4JRCa;)C;.~#?xgR6ٹ{ܹ|
`	+.၃.2xb<q .(p1`3l*E"bȯPbi!a&C.i	)逫n}n}I@(	["xSM?4oP([<9-[XZNB/$&f[kE6źHc~}	]
c n(X0ra*pDl.!CDɦ&8Oi&5fV\]'&[8?V&uJGV`u 6|lS}/<a.d)=&CoI6u~VW8vPR#c#(5Z)FRTX=Ntӑ z)2sg`!aZ2Fh: bb6P6NdA3r0P;G~w
'n
}Mvڥ2EnERwz:O1xr	4N{)Lf>C:W~PK!A]  ,  PK  5R            5   com/sun/xml/messaging/saaj/soap/EnvelopeFactory.classXy|UNl&Ӗ	͖KɹIm)I̦4L7df&NJ r(UZLZ<	EfvI|?f;ϼ VJ
6z7jܨ <#nܤࣸY-
p.(?` wq+(
>{+|~)%B
⠐igA)Xe+S0GdqD<,ǈxLx\|pI78&RE|IƗWBq_uk2qn|CMRA82#Am0=9bzL`ݎ`}kGKsscG斎@ZhF?hEFWM#fi]n<+aޖu:	 5d3"9#f>+sb|QJWzhLfDƐ=i6uLvc'Kk&ELS6!-BAypY}Q]B땳.m@KnzjEڪ,3O"ڽյ@c2
rׅ*-.$YaCo٩G۴]DڮEb<6鲺ÌfFz$&eF{A/k'lkGHmٔIvؤb'5¦~oH¦!Vc,6	n!ShR&uBW1*	+]H^WIj#iRX{7EÝ][9pnK(:ZM+4$42)Uxq4lѸI(YiY&*`M$WUn=dm
G,!iNrPKI%ΓBcv²D
i߶q	z/^hDNItј
Y&mQA}FKR͘=8ߕxAYzB8ӃXi-'M²^X#Gi(aaeWb6-'񢊗SZ(̈́dQ		UJng_%~R	+RB#̩2~hS;^BTKYG*6*ޭOіnG?*ފVQWMO۸=IƿTM=%'2#a[U$IxIXtY.j^yfaxCYDu= ^Q_OI58%rudVڍkٽia={U2p/iߧ'vmuȼf+ܯ^jlhi'2`<$KY-&`Hi!Gr%Yl@8֣Y,[^哹-f6_vdG&_'lmNDs:Jys4qKN{x!5(6׈	߼<O|h܂8"I8'z8#8ɆpںxX Nuf^"!k$Ltuq)).=v%%	xHTꤧC:v9cζn2;	ھs=-+3:/
g,,-kLsg0zɢM=h-R%$Uq#Ŕz`7 =vY촻3`mxٛ`Ty]gv+Kr==ijrjlmfJY3S3\d
vڐDn:#?e-h0`Eכ	A
'*Ǎߵ+
G:@:ɜ28%@]{VC K0H?F;[5J}o3gHOE60[P#Vp>!1ąߊ8rٞoj~rW)>q8.Qn0GlcD@%.Su|\J*,!k.
YXzw@)?!8pܣkrPI_1uQs<kP<BEC6Z%ӢОZ5eZFk	q362%(mLx;: rhԳTN&9f!ı%-lЃs]6a*0bEPTUB``%PQg0<N}6.Rtf
w%
VP.*>F^~	e4!bPd!SW2D^\ۤ 0w !<918F0|hJmqUٖz\MԪ1Sw1GSW3F@/\Q\C
kp56~r^] |.&EׅL;ݶ%mÝ^j˲1(%k2&;%wJqq4]4ǰY: F)p2F_ʧz\cUBjO0!lE#XYŪvz{u
'=9CXwy'F|we#
Oa-+:Gq68(C?CO4>.*܇C||?Gۉ O7&rLJ){+6TNv(}edcϨq#ߊA܍G)ă>Ü=<ʙ!<ax/p"4.blX̦)bF̖5{QuVAJH[މwqneR.u.yEEH҉D.o^ys5Ϊۑ.pxe\#c	$WI̗'Q,We%ɔ2X%brFI}O1wRf<}- O·`bC06".d{]U԰^:{# {6آPKcB  &  PK  5R            ?   com/sun/xml/messaging/saaj/soap/ContextClassloaderLocal$1.classS]o0=NQ!!!jH:M%uę/u?ܸEh{|uo ^p
׳F6n:Xspm{S*rCì/x["子<1]0q=I"(ATy~ET/%xHi1Ԧ"x[F}A|ĩbXT^ȩ}C$Kg|`L:0Bm'M(Ә4a$"Hc?xb/C@HmNpEʅfƁx).Nz0JC
QAE%(8Xw+[bYqq%g;C36}bGGvctd+J'x觷
0ZJyyũ`hb6"E5y\)fr9#-<-grT<%ۄ='F~P[a(Ȗ!"sHMN?a-㲉+X5L_lPKЇ#  @  PK  5R            =   com/sun/xml/messaging/saaj/soap/ContextClassloaderLocal.classV[SFd;82	 4!6(iĔq̥
Ŏ)M[#b[$ާ:^:NϮA`swήb1a)FO3!TRQŲႊUY'bIFFņmv;
.gj.SmskKR9SY\l
Y鸬VXfd<]q|9["Yk2m`ٮL^bUn˕EΚMӝSN$+
"YJN&/.:-+6WF-VCwMU7U;mZ:W_e8?uk?qkUp&"`ysnZ 7z#(3e+۫N0e\f<'}б+\HK$Q@FGƣ	2&a
.d
3˥~#]a:D#YvQz;hZbvp(Ǟs=<<r.(Kdmϛڋhpp2hx)|a)
 E%JGKkUu4a
T\C
b9Raih}VBDDzM~`?9죣!۷Sɥ	dwi[RJy*wT=j7b)Ѿ<3os܋|LD(epmk=c/:l[hVVl*xlfy/#2N_Hpp8z\߃Jo:XF
$'@|A'҅q
.F(IgH;٣B1E"|{8]D0DԂԤvѷ!wQz^eB|pf܋V`17	mR
Vwt$0JݖARz!.$
`LTĔ {@Bb}lB.DqwӗH 
=OV6[\G~z4vq7Cv%cv@27M8Ayyz
Prj-O҈C09SHMadGvaHc|"Et!;O1!9?qnGu=RLc{J&PKR  R
  PK  5R            7   com/sun/xml/messaging/saaj/util/LocalStrings.propertiesn0~
9ljI

C@rUd*K%ۏdE{i>آ>~I2GuoW0g9"et J-#Kct- a@:`)	~7:'Wl(Z/QZ&VAj#ܮ%pQ\p	qaC$v6ZS_Ah \22/{#G8)Z1dX0ͅo8J]-tpSy2$Cr0ܚSHQc Oa(
q yǚni2T%b_,w[I'~sV~9e*G_ȧ;m8Sأ*::s=o]Ty<9{Fyox>Q(0n_w?xr'_PK^3^i    PK  5R            :   com/sun/xml/messaging/saaj/util/LocalStrings_de.propertiesOo1)FʥY@JHR*lrSeϲJ?lߛ\dp>RU31oat}8OQ]9͆,iƤ`f-%0Tم=֔ D_Ek17A=
QF]);MV?]J&$8S,ɠÝ/ 
5Rau
:jدқAiF
u8zb1/6q
7|0Z&3<`m4x#b-)L@C؎5K/9`J/%_(۬WίKîW:J

>
Ͻ}([8	cb(Lх6 9YM/m/CYg$o"
mPo:((X-<X	j|(Cro4#MB^~+a	dYd Ɵ/˾PK67W  '  PK  5R            :   com/sun/xml/messaging/saaj/util/LocalStrings_es.propertiesn1#qi%0H	 *
=pen;B;%4j*{N/-JN>q_%@W=Ip7``f-"0E*	[e"%c5Cָj!A+@&Wŝk\AJ~B,5!MLlvM2hrrxP0Ry@LBR
x<*:sr
\C*0UYeoF)2{C<|0Yl3˺3<P
k-)d(G]B"@1b]Jc!,h,۬#Jf]#K5.O)8HhHbLԆ
>.`<jhKslT˧A8M{ˉSPl$eK	2%r(q[7>_V$[?Plr}hu
/[Xɂu?7PK:6  G  PK  5R            :   com/sun/xml/messaging/saaj/util/LocalStrings_fr.propertiesA0#qi%0V .UC/^gul㐥c.]V!yf:
#Qoa249He-.,2"	Xk	
Pk\d.Ck'm+h4_׏RZ[`HwŲgZ	a)F,lBˇGedR_]	9j©Ai'췫bt_HnltkdK<g%rvH
o<s6Jm	6s@"Y"~o!s5K]>I",va+g.IOA|xtN9Yys;*'OwpdTхӫ. ]^&eMKmkج!(gnHW|2wWa<|w7ؚ߅ӯfOkwޖYPKw]  B  PK  5R            :   com/sun/xml/messaging/saaj/util/LocalStrings_it.propertiesAo1+FV
fH=@$*"";׶YR6=={o:p1RY15?}A>K"hW|z#K1)X=*kE	Beu\	_JI[FBʸAIYNG6L:9+
DYHszAᙣ|,{Wx8}?W
g+t5;/vqiwؽI30&2ZR0kr	^rt^JBx,h\n-Qfd`hx)ü>%@0ۈW
OcX{,/Y}k|6{m1PvL{4XT/!6jĹtȬKKapP"o>/V(zx=ó<?j
5_SPKT_    PK  5R            :   com/sun/xml/messaging/saaj/util/LocalStrings_ja.propertiesM0#R!i+"3$nC,c4{`ygQȃ lnJ#F(
P*F;D%ACRU4(Ԩ.}+FB-S	ܰ&P!=tabԮsTHv Ob+hFYFp)y!G@̐SiL׫/U1\C̫%lUa)'8	TXWhV4Ym|j*KڂZ]&j
IPkVKKT(HV[:qVx'-S.Zیq#Műqzllyl'0,q2u1,1wYInn͞d2g*Ga`33;Y-2rV%S:OWQa:eΙMgnԴ(8
[sbe2q[9|F?XFF虿RC*}?
PKJC    PK  5R            :   com/sun/xml/messaging/saaj/util/LocalStrings_ko.propertiesn0EiXd]HH "lj,E;D	YX yܙ9|] ɨuE~d.!e)FATP΂TCCu,hXjƈ/Rz?`( jBuڍ}P.DldP)z=(=]bHbv	Vh@(unXO1sNM3ZqS!aU&)4k(d6-E[ĒDa@Z p`N&hhH|i?
6ŋddI-qmq+1IA|{1UisP0ȳ,E6%3+*^{ņӶQJKwJu.tXeCd4$tX?2<<SX	AKVlsLAWCzΒuy^M7~k,y5=CmCz5}G3M9[wO,?PKCWM#    PK  5R            =   com/sun/xml/messaging/saaj/util/LocalStrings_pt_BR.propertiesA0#qi%va828Cֱݱ˿8U%g<YWu7-'>1*C8nH!1е`
{*'zk\hDIJߣ6֖ĩG	vB\zF,,"+yqZ AT觃p餓;)j14}O(|?[K);M<?l3Rl(	XK
8j
 Qm(Ҧ+<J̲%]1SIn鰞mVȒyNϊ|
K엶(c{ޅ}d@I,J*ΝGm$j-OT*bB $N'Њ8`k"L:m[IM}*'5 BtE	,P\;.bdB]4~ PK͑  H  PK  5R            =   com/sun/xml/messaging/saaj/util/LocalStrings_zh_CN.properties͓0<HRBlDJM95pK0MyU{kggy#XeXx'C1,dhxWMi
^[4>dm2
#V7"ύ4kUk~p`2BzޝeWÁ-j]E#-vCWv5dEXAȥZ>VR`Gpjhx5䖜ktz:|JSUJ쬙bNeo'[L+ɽD&DUCszfGxB-pIDGm% pxY.;kE^$IThM[s,f$~M}䚘"w >D
`n֢h/(l=RʖI?2a]ra>ie
KQYdY!b.Y'XzWeY\e9'U4fn섑*N&yN~If7Evit~"[(oDWE!W?w{B<PK    PK  5R            =   com/sun/xml/messaging/saaj/util/LocalStrings_zh_TW.propertiesSM0Wĥ cR!	VT8p:C6đ;Rjo2Joޛ䌜?+Q7f/I1"Jh`h3].cjTG\gD|WV`4D¹<;1(Z"TH_h
]BQV(2!;X	5.7S#xbjtrJUOSI>3zU;97f]l'%&^bSLI޲AӞcYQAq\zTF
/awNJR5!K~Z*Ա^6ve+nH
q^D!*u|A}An
͹߰ץh)1᣸-2AdHu~#g$K[
)g%s%TJrtnEZ&JNL\Ta7<%-$&T"$4[5&oF?p^k4:j>C\x?87PK}    PK  5R            4   com/sun/xml/messaging/saaj/util/FinalArrayList.classR[KQ5VvGSp
%E1
z;n9^"VOB~T4f̜fop>>N2dp"HCi2:Z 
CqG}LF55.%'CΓT)k(/#ta:B*ʲDSG\k0`ex.tOF]oLDKK?Ya˔RauLk_&;׋$Yk/g5!ԛ?~ׂ.#k(4.YFh7t")W{aLWX"ȑ8~{go',\B`<#<A'O.e!ʇ)W9.b9pqF/PKZ꠨  ~  PK  5R            >   com/sun/xml/messaging/saaj/util/NamespaceContextIterator.classU]Sg~6d!Y
hZb"jG{	kXl1xU7:#83՛LQ;msv$b&}<缻 ×x=v )愘bĜL9Eg4(R8'\E3ᒘbh*;亘㸆dLGу9
2
t!ˎ֩IޛNr9 b8m͖e#gΉ)c)3q(Id~\VkD1ԬQ^cK]4SEK
){)+oNr}Θ͚n`ؖEՙTR>&rfhd|&Q4DɱnE#mNx:%6mPzUc.Q"4Q;QviNlWһ,%#5H6ŝ|fT%换`mKl삙vHEPNMx5jeLCfTdcyBW0u cP&v/H谰7r:(؅:bbT5:t,m,o\tg:F$⇘P
U*'fO.E*hf͌eʣ:s|-\3V¶
R/*w2vAõFTMWu{
ꉴqZk٠7.Sh	,/+.77qJ2愗C.̴
>6}:xλb6}{>O{p6gBȾtǘ?q<^Ù %" &(FWA{H quhzȭңC^~w>	cōϏ>AcŻGEzeШ*O`x}?#G?ÈWpKqoU sX.xpEʋ߄RХ'Umav|P}Ir8РH_H/B̿Oh<Ҋ(I%s|qC#
? %Le ѬPkZ!60T-#|RRoW^H=lhܚʗvEL{9 rL<$(.sv>_tė8opd)Ө[a[U"Q1!aݏ0WnG-$M{M]8⢞gȺw*J3@n
A'*PrxaU,e#3DJGP$<pPxS9s:WeuGd7jv?xY]\tC+󬒅&~'{IhM\<ѿPKVs  
  PK  5R            :   com/sun/xml/messaging/saaj/util/XMLDeclarationParser.classWItS'a(a1I0-<϶@{`2MMb&$!u4
Nbۤ9.n7trWe@Ӆw?I 6 6c(8ri9 4bD<
btRἆ'IOigu\b	.xNeHx!H/xI_+rxUkr>ď7%9)qWt%CHͷ@p踕Nd'3f,eb\CǇG^3qQl9d&j41mt(H	qۿ>$IU:z7kf{X7Zvٛdę:dI}`MdbH:bCL)؈LŎta&3<trwU2XmQH.#EJ>kW&w9L
MY4Seq˹I@=e;.mqRkٓ.ki5e
yNVwF`q5,Y&P~	Y,;s9eaNMǵJuΊje
V:yN$RypdF섵;)
:i@:
l͕@`4L5&3?;_Ci>fnc:&>.#i1)>cf5&iktJV_$1|H՟ӌ&<^:tfHm^X1]F;ZΤ0H2}%@H/2l[	Rm|=7s.nyEAǕI
t*'I?r2dcͳYn-0bq^w@}4~m7Psj5v 5;|aKvvƎǣKb;iU<lv$R4츶vXʲ9*$2ősxJs[m
0V/*/higClڣysc:)|k99|ѣ;ؤnuYh<[U;rH]pm~J`w\(V:&('+Kj*QT9,C"6gQ	<HT3QͭJKPy5s'vzἬnNLSW?o]o
:J&u
D#X]<Yn|P:'/>gD	PfBތE/{n/{(]@ѤŻmZ4}4"yUկd<|#[~	xk,Jo\?ł=K&
+
_\\Ґv?ސ/:ֵ$T2,GQ)+/ӒeQEua?!}fb4_*ek \Uȣ`(#d(
^˫3\Jsu4xAN+#`ƍ1h:Ti5bukƱF	N.ˢX$Q-hG% _~lvp$Æ	k	.Fl"nGiwc8E;xe$y'E?f0?$SR;/ƿa?8#e8'Vqр'E30..KxN:W b1c"X}#F֋&qq7MbKqaH0tF*X,d3.2Qf-(IgBF@C\Y$Ң
,7(("p5bkk`N=(};MKd6B/8/0/#9d/zi%tG*?,dNLa_n8VsZU$!?o}^Bs2װ:jMOF"ἭnTbo|Ԩ r$0LڈfEMmZ݀A$Ofب^k2	<*P|C*6T,ilP	
c'yI'q7UxQr[|ExDF$pL}Yx4ޢSJ/PK[     PK  5R            =   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$1$1.classT[OAW.@EEЊ +
"JJ0!iR<
.nw-o&\Mv6;333 99$PP0iiRhCSn㘍NwbMG7Cm5[59U{Ȑf
6._nse	g+\n74ei톩5\ηgV!B
<%2ebGn*Cdɢar)W|Z[f;gDư؛xe[~?xo
jw
{GgB(b,
|:Hlg;2)!
[όDPV-ݴ]BWT㞊U$1"I_c0qlWZz}
aym]4=öT*Ltմe3!Qsbs͞qhܛ# a']tLmR)]V7JO)jVU>X~z!Y{ 
`%2.="mڃQ\Oxۤ?|B$a2&_>	rCGOmQNu,G$!~Hb"ľ$"60^>dJma$-'0d,#FtT;uRZ Ԃң$ot
Dpݏ?ODJh)PK~q%    PK  5R            ;   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$1.classmoPLQԩ8:S%`B"奻biI[KEM ~(=i{=~		&
sez@K!jݶ[	!^aaa8=g=yc㼫|=&
$sM_xaڦ\E(bUg_0d-vpE\1)ceL,BBtɢ
uaYkt'[ M%F񴊲91$xj07Uf"Swd}SMg)S?͊|ja9A+xb
U
T\A^SBPuPﶻ
R5@
:/l-G*fOX6*y^ilѴ1p]a5Kð8e97w_gja,8P+D-: tPe茈ѓFY6H_JG|Q5`[ȑ<.$in1kkJ-C,'x)^zK*]8ͫ-y7856K#('Y3rAps$H芏> PKuj.X    PK  5R            I   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$DeferredElement.classWklWgwvv6!:vyP!΋#ݤNKx=^O2;k&n*Ż%Q$u\J5AB BTrdvY?瞙{w{^w]|.HƄdL*!C7gX3e䣰P)<m+*hD18<$ad)VW#,嵟><1ohb+/x\A_	OxJn'di15+vmfjy]@hp~m4ٚk,GSt
3o8.9Ks64
F}ۇLqt
d_8E+373h9bq4tij3az&m}s-S{fͥ*M5ޯZ}eB'
䨆~1L#8?/AmGL=[U9{ϑk))	̞Ц|
4=$ynk'&1JO]8$Ejf	L,xu
TfxUu4)X FW^JLε ~[pdfxZ3`\0>*C3q$NQlRH ܇&)pKlگBG
K	\/T>=:sP;Uاb2e}49+Z֛jV*1=ea"b;*&pZ%	u`Y;зJ#SM|[N 3w15^,T|U<T|e:S1.>^rZ)TL3{Z)@9tsZJWb9Cc,j[їS 5`/)%6>]L/L庩_zoQ9QϤ~LФa޺l)-ۜvWvޑUZ::"'5gP3-ohyZPS~x;؆SLڅs|#{Sk6RCߴHܜHxvoLrZ0=^
GHa*lNAJ/ 4:ˈ:mOLC<x
)I<ҜZW8O%]/#ZFSxRZ#Ƈ+Ge^ԵbIeK2rCN"L?&?AxlB>NQOjNT9Ѿ>m>KHEOEWQ
#&3&Ѯ9GRcHװSc*avcHWwOyO^D%ǣHw_A,ZOOOkx-)-b5zeҮr@iG@i=J
4i!L+pVOA]&2x]H{<n00ؕص
':6oʋx\ z{h'ehn
,R)tGv[X⃯~e}:F)<\J%:: S[ğ3_#oxL`Nſ7
p7h%ܻH;dc# m[|z/LnV q$e֫ʶw8{#+lW(mYC?'-53AzeiEEܴ@)f+@RP$
Rz$5Tn
+V>^D4E'+ 2s!q<.!4Q8wMc/PKXD    PK  5R            N   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$NamespaceDeclaration.classQMK1}nmm9MJt5eV<?%NVEDB2o&3^2o/ vT@Syǌ9{#oՀC;;=ߋ@^E{Jdaum4{4~D7PZ64J"FY3&w*fj~ F$*ҤDkiBǒNAq_A/TX.'*q"EnQ4+ZQHY՟5[e>XcEPvW	Cf~8PgiV1MΣ@v5edȖO`!ǴԧB,uwPt1AGRdiX,Cv5RBPK5ZCo    PK  5R            N   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$AttributeDeclaration.classRMo1}v6nmCS>RJ >
Q9YV^o#CāBJy̛;G"ŕj0RHqsԱ^0lfT
#Tv!rYN3d*9$CTD[2|#H7Fڪf>Qt
Gp?s&y0izJ#+k;0E\ԍ_-TVRD1r&W+d tc
;9VL,-K
CNfas-IJ;W0apgp	`DDR%_ow|}^`q!ōM\"JXdA,iE$+\a;>V~PK!0    PK  5R            9   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter.classY	|}~^Yde"6%!$Y1GbSl!@HB 鹮ڮm^ɎҮ[ICXCmdzl-c[Ҧ~>ɒM~?Og "609<>Ї>cA>%7.i_/ǽ8$ߟ/[.S>Є?7BWgK|JWi/zY9<y9|A<E)ϗr9VWduy>=~S|ˋoKq#V_x<Wv{C9Hzc\.?h"⩤6LD$ճNDfl:->إ3=6gdNMEm'""ss~?>=LjCG\"(iGDR3wy>+bd<ʬKHD>'Mu#xNl(Q#Sz"SI^JGy#1=CR3r}{<ܵ>LZéiI}"?{LLE%tS*Id\tfx(Kf󙸀od.QI~Z9dXս=Q+NK(L`U]!MHͥ	l*s-Õn;LYU,/3=
EOMrNg>u݂ȓJ(:#,DAU`JEFu4R|vWG\"		]y0Oc0	qN&1Og4>5L,>QOeOo	E8IE饔aћGUCף˒BRŖ#}]אjjb#\<w~%]@sJd[bƲSiᘕѬ]*ge%1
dYI*:aF
,6r6[PUIۙ͒vAc֭vH UZ,c'hnMqˉUdRvLMV`2wJQ#N򙨾;.S$'/jh؇	
q@`P4LbJ'Tq;qP5<$5?r%i
YIƷBTXel]'>E8D&ܒcr"/j4L+8	Մ&r/4MԉzMD&V&VFM5̖PF>¼k%M͚hѦvɺC:7h`ۑL:؝HNuf:"3e
OhHJft*+jsY\:MSԙxĥ|Y:xfM\1<'吤	"!Qgf{Gu*[+2Hӑ`fZfv@d&i%pCxף:yqO|$-i}7[*S=n// ђWCn'ϩLlTF8KLpKEcWR kZC.A<?TF-5YW_˻еK۠.JwRemIdlx&2s.L,+4cרpYR45858qTVTNekT}/&TrEM_k6qYg
%;	xSݍܨ`&9ðGS3$:9LD*u2CTBP݃#lMmKT'PvTLLڟ#	:Qn<|RO:&6a]=|?xF=*WfP@Kh"W"B>ꋨq59n$6ʼ؁_jAeEPcBT HE ϧ<U\mV5jEZ3ݲU3ռ엗ᙇ.	I)&)jsMjW;Eʷ<ꕮ~Mث86	ūI:i㚤

}~xxצEBѕ"\
I8{ZgkS;Gpo0У&+By4ȽV\ƐNc*{h:^+%JԐY	a
Ղ(jl& UJXLଅDLxjdnv,Ft~P )-N!M
YozU$U(Tonn`K~/2
KZjC&pGi]ERΛ_Χ&WK>
_O])zi!|@$l&K9;FޱB<y5C
{l	u+pOo!:tsrŵe;2	2^O^opkvQ!Qʱaq^E\~gq`C#eVG`ͨb}_46-Ud
%QR}Ц<%
d(C˓x2$o/cXS"sCR&;<ֶUi+9{"WIsYESH`g{ΡK"; r[O4(VOƂM[(X5,^ >j&D,YlRiȥfʇU5U :mEh=AtDEnQj4_1+nf(-VyOxTM6Z	V/ڦ*))!H;mXaebbi~g؋\aY6GmFuٓ4ff+DMf籚DIL8Qe`'5]W
Ug+cRot7۱MSlpȪk\%h.)52gҟeN=(d߄)df+7؂dMA+Gh)QHQv|]t(ݶ(xUT˱=I(tЄr||au*
wْtc2;aR|"}66e؂1qd9~
6֘RhR~l@%~HETAѷ-ۗ/?^xN>Pzy'z֬F>nzl^K-5O7C݄LxV[PZy3v7*)vNeHavåJfU0	N.j57d'RJ'ZDѰI_kJ*	wzື6dA+QԵyf=eO<q[TiR#0PM&~](_J

b
vո]4aT4+evRR#KߘyX?GRuᬊ|ֳy,pԃ@=TMOՅ_p`-Lyۼir6u+x~JOtcC{ai3koY{3JWTb_Rfx\bknb罌G0p*=o4?s&&@px|qbQ'v8l3!} ג-fkOoy4K>HV3d
TF(%"!<|4-5W˃Mh{q&bpA1>1"v#f{`}tȷ(NGoR5v<j>5*tnP1>_1N PK>H  %  PK  5R            =   com/sun/xml/messaging/saaj/util/stax/SaajStaxReaderEx$1.classmOP+uLp(Ɔt<y80!ɥή%-cie<ı%5k9=wN9 $	14
#(b.Ҽ
]EICB^İR1jZzSxv]8o4-ݓWI/xM;2!6L۔m&F+-p_#,c!w@ mm׶mq
?@O1ZrӚn]|OnqBTKyoVjIbk2t,Aawpt\BŹ[V
a"5Y56+T<bPLFd+6*[aDKc۱hIS)oRT]C<5vdK:؆x湐NMŢF㹤!
5`UŚud5aY[ɐ[G
aH<C?j4Pg-2P[.
%
bJ%go0EC=ځ mBh5&3BL&5Y$mBH
_|$M( C牶.c踂lڊX'!C^KjȻ֏7Dyޛ>nFe^
f0CqwHsދZnĸT(q `1h&KPKq5  <  PK  5R            ;   com/sun/xml/messaging/saaj/util/stax/SaajStaxReaderEx.classVSW@X	Q|X&]mcQk+]&n ~/v:cv|<v::Nݬ!&qιcaF!\R
AXjpYP+R\UpMuhuiNↂ	i#-
oHSRrMKY7A2DFwMn3
@G2kOkjv'P?;Ɖcq]}}}OCnSik/G^
s9-u1>:1틎T'S@cҴܤalMfzf\M9O&9[8iMkjyx).a,}#RtbyID9Ƽǆ/MkS<BTn冟/aq=o9~h6rOWZHetrmFFZ&cqT32n
+m) D3uGt%Drj͹UyY$4iwwǟ3@MT:ӮaH#	`k$,fziOz4q_OOPd]U?qΔg吤aUщ=*b4
jeReH[*l8*\UcAE+$ЫC|޲چ>]NKKgKR7K>Wq	uؿ&]vbEM=kJqmR	_9[&yf-RD$٭Y@yݚHKeaҡVXl'ese1y'eNfbsXɂpvإE{e&Q]Xo]+3~htreɼ+V,ئke+r=1guӁ =Y~[x gu-#Q%EEr+)"Hv(QCqq"**pl	mx&BE~_Gcr'j(זE"<
,! g
"ܽ	50;FǌKh^n"	5W/-u)#8ʀp7paу$care'PN{NV	/Y1fҶjF|q{	f(gGUA?%t%3$*StԄgKgVy^GE>FSd@aj=,:Z\XA!{&&OZl-d/BJ`ȧRX/).ad,22A(^E`R%d2"dFCZ4׺{0)G]UKhzHmm!pi&5|jyQWZJ2j{8D}k~8A^{e;bQ[&ί1fll<_ش1<dWKOF-PK    PK  5R            A   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$State.classS]oQ=.,l-V[**ʶO 4mBB$ftYWd?~4,Kk4>sW6>d&sg̙ٹ?}Z*x*vMcQ!.xFM2>]ÎޛzBjuMfA`wтF9f!i:0z[1Z]@OLbE͡.n^SfG\TK:x5_FN_M7r\ARgNf3C9;-^mRRrcrߕrsr)5le'$[OHb;
Þ$wriFx)ydr*|%WTa_9XSqG"*r
Xٰ=(S=wCb@yӏIeSoћS顊
N :[!Vd#͏2Kpd*iI|
VK/H^BIOna3Ir}regq7FnOQ#TA:Ć"B;YXcA?pv9q~X?rLe,
PKbgC?    PK  5R            ?   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$1$1.classSn@=IR \JMPA
T)
@m%qؑDxHH H|bv()/Iݙ9gf׿|`+qđK6r	;	d$E
b
O|c]͝Q<˩2ZN;.7śWT,?8۰Qttv6U1|wf`نQ&L[
Wh)f9VP2ApwhrDYkmٱkr=K`Dǰ:ՌV~Ip&!I9o#qˉL<Qw[BW^l
3x٪:<hzx0QJ7I\omle%Mw(khzǴ]jDPswtǲQ8qx:t$NKni
'(M,qte3]HfXa*;9ゝ1gy8'/
aai@*%v4Ec&ɪP̝r;@CDPFS&hE?K(K0_t$FB|B$aS/]wp3Jnh䉬dx0
w~Hc7>>
&zOw&AfT%%ͳØG
cأuRO	z~_^Oq+$*&jyM6.vBdw~PKtE    PK  5R            ?   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$1$2.classSMo@}I
5
| (j	"U
(J6rD9Us88QcPq9zf<ｙY߾xp<nڶPpm%3Tay@k<2dxv1'0<b'Fy<4bƻvx(#YywhJ+dhTf2Z~_2ɸ'Qd;$a[T|J"șaVTcJ_('"^`GS-M&g#Hpe׆0Ę rOeLJ}HL7BW
0_LGdaq:QOU4E4}z~Hg6,m`:.tw'cx)ð~_A8YM3d5(j_D^gi%GX4ςs@lEl5Ovb)1=phH1|OEl&zӓ.1 $ y"}A6ztOTsg]ƕ}2M@dϯ\@/PKR0     PK  5R            =   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$1.classmOA[J-g OP(BkHMH*޹krkL`PƹQPfvfvo,`-(Q!AnH"Y	sQ1/aA¢'ak]-lsىjVn(TmfRw4]PJZ"ᝥ9*4iV]2R;us_05Cl֫{zt(*w`ua;Yr,MN:57&
?	Qr,"eSh5K|oF/?,';| gcZk0&Rwꖐ i>!
j䊦UV*Gp(
Ǻi8P|H6O%nf`=Ӯ	
kPu&W90%<1ˈ#+#g2nbDsP"cbEXĭP+!	`XAus&`ޓtgL[0.1y%M^SJ[,ivSavvH67_r\ýRKxܭZl{u ) =@4>A30Hm q*Ori|bccd"6zkbQwoދrޘϻ8Eh79:3=hcͣӈ"Ka>z(G=$H'Mb }RF8Q4a8&B_PKvD  2  PK  5R            =   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$2.classVSUn!l(B*$[@iK
	Biћ%Y.>Ljg㓣xMsΞs|O\ݎǑpVWv;Ih@<᪆8|^
Lю0-LiC4Z~_a`5_v՚mԄT%c9lQ$H¼g_İXt9Ș[
#n-J%,G
9YRo#2m}q7fs^n-~ 875s_Xc\-zk؜B"a<k˄prx'1p+}wtb 0Qꭻ* N%2jVM̮թm@>A5Oj,Qh>#wt953oOMOS^tC.{fɁ8%ӸcڮO0"e
3:q/:0ᶎq0^XZqD&Fr4ɭC|cc8m
)@.1Mgtٲc83[)s.㶐IY~qԎh)%:2ET5X: Oitܗ`G|/r_rꚱIUNTBQI*"q ),jsӤr9̬VofK5:[_Z!?HĽ<Nm7
FqjdtF-{kbOTpnq!G=[.~AB¡K\ MDwO܆Xz+Uʩ{s
>4:7f CI.yGFxGgn zhziM6p$F79N&I>=}ֿP;\\AHϟņdOLUQ	FR&)fYy=!sh{o!M&m!)NIin16'h_x:
䷎u@7ҰÏqAR
+JIEg/o(wEo=e=88GRXI=)ImJ䣄>jȑ.,)Blv3/eh%ۭhtMnlQ.5q*vG؅oaAI@)5 tTPK{f  
  PK  5R            ;   com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx.classW_TAeT%!IHe1	c77odHIIt&M5DAcb4mcjt_㯿~00@Qq]9=έu
||Y@#Z{51uxƏ1-g+ϩN n U%q 0Y}A4?͹ *^`3^*p/?W`;e ¯xMz]h8B Э
o⒊i}n
iX1=4N=}
B]3϶Huc)U;H,5^ިe#H|LKL-=ƌdR-맵iܘ8$1+jVGzDE[FVPFgLÖǌ֖YfިTZNKɸz[wKFKA5WwEM'56dXPG؀nE؝̳Gtҽ+3Xc䦔:#aGrBYvG3L\dFK0^ѴOd#TQzn=ںZ03
*9jSPJ
q,,í#ݣӷ	=bw5lXMzPt`,5=ju[?1r0	ߩ 5T4D洡qsn4(X}sq='SI*saiO$	H89k
ʳVx0#sFc\`Ĺa)	

%i+XW]XbFb@Hp[m8/&@$^K*-tjsbFzr#ݺc%tdY,2降bgz!sM9IDxO740Ónͮ9$Waq J!ܩF%OY@Tǂa,/mA\ƃA< {VS]hִ4!X,S*u;#GY.VVw	VNnq#gv|9{Xs$GamhlذFFU$eY)n&̸]*c׷&QnTѴGP<'T9௴g`[ֲLڣ]Nrڵ]78&*A"i#%b)O3|츏΁쨠c.fs]s¿6q*ؽ
@8f;r6I"[5kI3{԰1vJkTi#<sw(l^q.!7Z>31{uR_QnWgO2wEN}\鉄a^\{Zu2v|%4V,*Ը%5 -N8G4}I.ʚ"8vE1g}d62BWB>%INբ#%{BL^_`7W~遟㖬qYc}6~q;G?*\[7ȿ{C㴃*a@RE!8f9֐4
&.B-zbBW/ŠHKhZ"pi[#-^C#RR.O+V/G,(D)} t td<t:i¸rj+yff.7i]wHg|P.-^
7yXN
d"WQ<HC3|ɅYkC
jvcst
g)9)ٖc5Ob8=B@gIdyi>Js>~*΢KPkPX[QQy263.nd¢{%ԃKLaU
3*a\7iT`ӻ)L)8K:{qxQ"~AA<@OJcH3{^s@BުU*k˜2jo`$B<*)lk`wV8*bZAk5ҎU+r5]뼔&$0
iiIS&F1Q0y@<]6d}eTӡzrgkE9~8	l-w9?/њ&8qxZojBQtv݄zJw]k$Ժ)Su\줋wğ&wػcFH[{x.'Nd=^(wX24v&39(VaAl+y 3@٠a07ie:wh|o5Y~	9F'S⧝{>|VM9]9-MIA*퓂'sYkpbr,'ˤ}փ/IyO1G)˛i_: PK̹ݣ	  g  PK  5R            A   com/sun/xml/messaging/saaj/util/stax/LazyEnvelopeStaxReader.classX	|T&K 7EѢ+`I$վ>
ݸVkVj[EH7նjVV ϼlv+_}3ơeM[hKKjpW/-y<\'+ݗ2?_ɣӫU/qh^a$Wu^cov1h7݌d&ܼݷa^F{F2z{c>c~F}F2G>b1`$AF}F2g>c9btaFatNF;etH {Ǟ1cQ,FٌyybWoӗEbzhqU-zlɸVWI	ў0j6"F4łrcejVIA# _({z8N-h*k
$ڣr&%p)@"˖UD;H(+m)0*5j[xHaU,Gx'NaӞ07])FC/g-Bbtd6Q%jMZHsEghKcфWy78e&d,JJӆ6$<Qc{E>6:W
Cqp}cȑOJGTB/]} ,T+=lKԬ'jzCRw+َy|Y>_uѠQSXvk2s
\ʚ춸qqЌ WÉh([ެ`҈'dwAs8iԱ$L3 mlO
zcVeЕـc*c}-+
pnumB=17ǅf2S>4HԵa#ɬyNO]aX̉Ѥ̽׷֙C݆^tUm(=_rA|K++y%b!	r<y1Mfx٭2_c!Ym es,4&CLy]P	sXf;NyΨ07 R[ #('R:}概I6.ë'uHH	Gϣv2;Q\(BE)&hqh݄§
Ҩ.`Q"j48
{Lha}'tF7O5JjHtFЭlm͝J[_{^~Ch7~w?wWp =:m)y_<[q1>	nS<g*?>Nś-Q#)jA̧Rۺ3kS_F{UFjoj;m0_pi@&6!n'nPC2+5؀Nǎ:Zk3ok'u6{_+q3 =Q9JQN})~AH[7I(KΝE/6@nf,MY8峻ȻMt#򤍔7cg%Xu:ڎv1At"z'AyMLLSf(u:h]@Wb\G1RD]l}ӱMs=ox`@eM+MBƦu)SF5t-+D`ab
6	J5U@Ԛ@4-u55ՊRj4Sc<*B*tJ7zpRh:lU s_1K7 BeD79reg؃մ=^YPhw0kC&Os(-Rk,"_|#L)SyF
FN/+B9YRh$-ASu]+#BC9^r<DfbIL5SN>KWQnY GmPuOhA'cɩ0ibqXLg`4lؖR- w4
~r-<ţ{2YQsR֍a/]pl޼H+Jt;Cx6'By"`-q"pA-Hǩ"o-(қTĖDE}PjO}P;r>YQ^{jLjC\gn*usN'uߚ(Ҿ8RI%<!э3%`wA[o&*o&Yy <h
n6ZMpwd/QS'yZk/0ejY$3Ŕ9*2WfiT̓y29ɜnʜay2WfLiV bek^L2gY%ȼ_5{LVװWv5@
'2Xe@foeK6P3iUd>PkrPrPnPO[[
Շ@}؞?m(s-N+ո}$<fϸ*-9hIj}*%80owKJOsK
B!O<o5f0<.xuRz=C%P4ךѠcOõVY=j8PBRWVYԞz+\v+dP쩷9ĺAQ/ROԏ9z"ku=
+X>3wzϵ~BE}
O:*ֺ5A]gOuZz=	ր\쩟qXQ7YC6쩷;P7+강KLh~PK2T
    PK  5R            0   com/sun/xml/messaging/saaj/util/ParserPool.classV[WWN2QZVmD#.oXmCHfD{I_|C]KAZ}OLB99{OaEa\pQG$pc:e㸢VBQMjNCIjLa
鸎nhcnHaFM:i
ِ'K#3jry	򗪮d;kJkX Y+4<H7k||rt(Q7V)Cw<ҢA@"]g̝#FmVz7*WJeVoŘl
WM/:F=s˹-DL\gޮ4<Si*^%4iHH)Yn-7P&}߬0g4FΦ]J.ˬ0K&z|ll}
Kok|GGv7<p[;ALԺ^v%muJ=x pz˂+xF)cs<5%=9[c*zR+U
t=KÜyŹyҗAy6V0PUWVl,XQ8}j*g676`!lsVJa
4@B ,лbjvQZgs-?*NBM
{+@ƪ\sNmmPgR\.:~`:r*݆V<~p鬜qj[UMI`²p 
VP7c}~/bX9>ӂX}#Ѫzd٧p՝$sI
"fT
oKN
>}ڃ0Wrk
?y5KfD9:C{St%#1f&*v@Oqz9v%̜]W[H?>AB/s5(7k>0*zasdR'8Mm>&JDgt#R{O9^ҴS+I)KJpgD(y qMȠ5ci:z4E
Va{C*/OZz27b/]7<r'Įg&b8uBL >Raӊ8/a96Pm#$
I"-+`8p
e8tn
:=ڍPK-  
  PK  5R            5   com/sun/xml/messaging/saaj/util/MimeHeadersUtil.classS[oQPU(Pk˭]kLISD	,.dwQ)51>/!^,4EΜf|3}
`wUh*PBVXŦlP-EN


m¹|!i
ijSްȳXvnչkJۦǰW6m}е<2qi+o
{FN
ý\_A9wz?/Ȑ0+laX'%2d/
n
Ac_wdD
cQPw
qh1%ߕU4$p!=*vAu
{pnIqw|@zçO%-?Z=ͽ6nFr?JlwY@wέ>!d;7	b~IΑfg
`<h\Im".#K'F#\.>a-2t2|R-7>J

PI^A)UZ.c+ؠvkӹD,Y.SjM)1B$mRY	.,E PK\zAG  8  PK  5R            6   com/sun/xml/messaging/saaj/util/JAXMStreamSource.classVY{U~Y&[JiT֦6]
.Z(MӡddB[QQq{V@S#zÅ?kb}$-\|_~8 r`Xe1!1)^V
^MA%|4.1tAOa\A&!'eQ(F
CFg1-cFB]̠f15-6:	-5l}\J(3RTo&7Y;f[䦗tL$T:$s3=&
쨞'$H'H	
eKpcQ:&G͸,C̪[_`BhL3Tx:'LF7VF&YHKU{m:Kt	#8]'Z13ku`jVl-~OK;)8'
	鸞
3EbR.kNE	,meN9ܶL۩*%tUxS!	]_}/BeXzFg,Ϸ/([g|%[D0$! csxz$N؊AalQцv	',-OZkM[x[E+B*U,Qb	@``H@Pt^B4&,q>T>X\R .=	*>g"䫨s|K\f/ *;N8]-㊊uDH^1*!ED:(ؖʜ6-pD¥{\&,s*oT^)7RTv'Q|3wCWBFYj鴞.>3{[
ǈ#.170:퇚f%aep %'3qwLY<l-uuqf2ҺM3ktrhG{z>A>nq(jqzGP4I
WB(U5\lIK}sBkoמCy
(w#9T̡Ujf~-fvvꯡzXb}6cPb^9nb䛡P&̜;vl3jӴH/c'o]ZnκyqNT{`-KNxLF_ŀ<ʳeg$sN}:W QPTXrQsh$j_F׌tW;͡i=nYD*D|܌^aUq4Sx; #I1^tGʗQ:hy&kᚧ<&.*d4̏ Qd&H=2'hÌ:yB@пrbUP\+(7	wza*ja}W9=:`#4w-XH7¦p7BM(םJ:T[O@7{.?PK*    PK  5R            6   com/sun/xml/messaging/saaj/util/ByteOutputStream.classVoUngv.-V@vײ *mhv:)Yh&cH	%BH|?G5
~t:,}9|;~} (b,m|T{j*q&i(|3|E#>`V"0y!Y(]1"~ ¼%8j筱rn*MsYZZF2Jh;}f!vr.Yc,cKkgC+5^vew-YF]#*c_!Rrv5d\2v!=piYs;/к	0/7e*v!D0ϪS.YF0mw2JCjidt(Z<]!Z-gc6Yyd
@NAm"(ɂ@
OVP&Hd9݂=S*+RnXLõC)Vg)۱)T&/ɇW,7bՔph(N@t]4Ov-T$FM	ق#`2ީ,+N%:f6V>C;vcGhK yUp!l9c؃
ҧ]bÛ+^=NoqqhgMӼ?T"!g,CPV⸖"/<sKlbR, SEq+W0%)筷f
tNt[!d!zk: n8QFЃW:cqҷ9vZA]`-LFzDn-y{/Ul7*";R;WQ;䷥ᡴ<9TPB:?>)wu̡)},8z
х`aQ49j"DIUm/q*Zg2QQz^!!ߔ[udXWyR.K6
UUz8>vs@J]#ϱ{F`v /Az4sd;3'83?|ga]?x$#CFR|Q)F2K+>a2ϒǳ3 $	Ior&$yQ|ܦ|w(:KO?0N%SZ*"OOQ<_Cy"Cz	UMZUl6yU7LxEVÜE"9dQ?9H2EDaI~F⮮׹xBO}S_՚GhBCڂ;<=ԡSjQ>|O6@A
s"pMkmCa>wdvTLp٠FKW;F8=E}2d8N!䦟 |Gc%Rh^Cӭ*o8M>λ*8D{<f
-@@>Ј߂FGs PSeЫTMۛ*PK7b  4  PK  5R            5   com/sun/xml/messaging/saaj/util/ByteInputStream.classmOPwm׮q0|­CF0' $(ڥ/DEc ~(㹷eo|sνw+ O:-K:rx"_J<frbYcWoon2duwRt ow^'u";A~7(nPim+J|Ym'뷬ȶO$v=z;5{qTxTR=i9~+>f`5llFN̠C\,yd3HXNYJ"jJ:m8
H
1P5r 	Krh1b_
LrU`Oζ@l}Do+L*#"uwsfxdidy /`%2d0FN`q,#=<Dw!ې	Ch,.!
2fbV0s]h`tO\9p牻 fzn(*pwE~J1AgE_Y$+&3"I?;$gy`>"-ݦ}7MYrJ%*^t2ݹi$DD*Ծ!B#/
=PK7Ãi  v  PK  5R            /   com/sun/xml/messaging/saaj/util/ParseUtil.classT[oWڛ
Y	
d@
I$nVE*ٰ^[{)QSJHXBjDju0mZK3fW?8
PT0
N`\@4'9`N˘PFQa>+ȤOecHX2;Rl2U,Ǽԫ{Wm4n%RW,ab48ZtU=-[]ϼM4C*pLMWVW\9y/.M%扊;ld_&˦"=Kn143Ap_X3̦o5QϠ 0#|`˦KNK>7\XF%=zTh8b
2fT\ MK*0 2:m۬q{έufT,2nU3u|:2ftf4E)?t3mө+}9
Iftκݕ6] b^N/&vFt/I:D%İh2TjOTЏ:Nt(ym!ſ"gICȒ=>R_	L^C%l3|W̶!ѧHoX_[Hn6ֿA=Su
υІ׵Z]\x2TqЫo]S#/OlF);rmw[k{=ԓC"Q(@Is8ѓ8S	ܣo$1&!Gc`ٷt[BU#>+T3Iqa:B:gwl
1"{A2zo(QPKms    PK  5R            ,   com/sun/xml/messaging/saaj/util/Base64.class	|ToِI`!"g	lX@8$ @K$ݸ@Boj؊QAV=GZހ	Q}zsWQmvMZH	TX*U`RL:]i-59YSE!j1),UQ^SYUp 1OPH-fcˬP{x/]TtAi.石z"U.Y9o\?
Uމ1jWV.HO+U&XT>Wl~V[WTjm1A	*
E"뗶V|U#LQce2'w Hc@PJU0XRJҪ"
Vh
|k	ʩj:ZB-6)n*hu`P*r*rWbXJY
XSmѨbS,p{*
JTmuiG(n5#758T[W}0lE7ͲbBT"S6bVxbQ.G*H.C_%xFAh&d<+GJ[V$n*k6[@7a^❎ΩZgm
B^"Ź.¼7 hImI
VMYc&^o5hQպ97"&`KBqGuʑhC`vP/qMc(3~qpT঑*JgSs(mFH)[--;MvS;mPMɤN7Ig	'_%9Dڢ̹*d}mjZH;:pEx<NVBZ[FAkO>3gv"': V	b*A9ل2(!@D~P|:3gH|&Y}CFٽS0"<Gv4^"W 
Оw>hԡ3h,
hV*|VuYz=&\Omٌ0tvj<Tjc&7vty=%C!(ez%.J{g;1ptAT",r1%a#tKez
h!|	jdƧCՏlG)Q%!Rc4`Dbc^t6魥Pf˼Rluf!4)g7|g>K4|.×dM[=nG/)ϓP[`)Sl9<{f5quc;~թ͎\fe{'Q::](o܈b|p7S:wR9O$>wa"K=#dJjo,M{;{vu[ZnԄ-
zJ-TBaNA80G-qDQAvZBݴF'mKyOot0"ᦋE:]"ҥb$]&vQDbB̥+jJ"FWvu0/e:8i%kKJфaE#ũTکPZfE32'ʩ)'MeXe6ZD/.\,BLҶwk:T)*Ƞ}*tv	Q3Ft49jgϵՒƲC^);WvsvM'\j8c""ϝ2иBFrW?aND7"|7anu+8o|;qÖw#wDVZG¾!z<HC",*=Bӣ.=N	!)IψatE0fOwO"\mGSd<Yp6Jpvu6fC^qHLqGUڎ")na2HTe>Ӯ60IM'c|OUɬ=@FY|eYc{vSfұ-q8]9?(O~JCLűg9<6E.<vSux9Z/2;:x77߷(:]CG8>Fԧ8>hwvh.֘W5zp{jdV~ZJMz'
݀\"G\ګ(gNEI+L5*Gq4Qvx3Z4aw!+؍Ow\Y!wQUT#N^v@eF]9uuEr,+~*ߠ{CeFQ!7^Pe
.!ExmjSrrFuM]CĩDK&iukMOkV5UkZhhutfh5Sk֡ZizZGhuZhњ5O+BZkEȡ:ANN>WN)Ir*'A'bY*Kt?ZKj-:]ir@*Ml'dTR̓T/]*] Ѕ2Z-Ab)Kd*FA?t ]&=r t@WUzntkid^6LĥPZ9$hP#HhHаh̅!Q9&Ac2.C7FYDhB3<Kf[Hi*meq6Fc\y0.d\ĸq	'K13.g\SU1f\9k1gdbfqf-_2~Ÿqv;݌w3ag`˸q? ׌1f<xq'O1f<
Ys2gEK3#O0U_c;2^gx_0x?0>dc'O1>g|888p%,MEą/t\#񁝏O`)^޳]\3؎+f|7lw%h_z
ĕq\_b5.Q:R|rjuoڝtnԮ_*=eK$wRqH;J	UlB|AǉWw8PK.    PK  5R            ;   com/sun/xml/messaging/saaj/util/FastInfosetReflection.classWwW~&Y2̈́j>ذ]kH(J	в-4 Ⱉ	l𣵭j?lˏm$5
ss<ǟğٙ%a{}ޏw/1mG#qeSp>z|EW.Dbx<-ߊ(x6mx|Gw=/E/e+2^UPG
^7-o+()xGeB/%tMܗϔre?FeIgTVRc2kd޼U/KhLSn
#T6#	C43	*vFԳ}Qۣe%{d킡'E5^:_*dS^,JXW^Dڃkn]afwv.Tx*T1Rv1n
ۙ
0bZ[Bb{LU˘iJFat+X>gLb>c2%;2\XRl*gTu}:UlSX3o1Ck\çA洭gg<}cFآ]3Xml,_J
eRt6ʙTEE^S		I:B
h5(ssB,C,~|E!,ZU-a+E|Q$(t_BY9wN*N=8kRD7Ւd[!#siY鎈=4NڞՉ{N0T;
1j<
%b['^1Oҟʖm0cFd|wLkkȨFP)͔eM~SL6ĤQqH"E,<Rl3g<	[^;ߛ%m8!.ąwYW{*ǯT|CZ2~~'b;T%.$g-NNu!Y@*b>)bXxBD#bn	U*K*-^qI^qI<U7{UE2.,'~5C\p*HWtƊ5@Uk_>k]˅Tr-5/%4I\2BϊQX5?Kk;C.W/2_9#E;|}0+b /e@U,ve.~5nh_4SԞ>ǿ2E4?Hgus6&+ַ{wy#N{r#޸+Yo{0LHH$.AZpDY^>UW pFOQ	?B5\eWLugiz88Ԋ|c+my

E(Jb54oIǶ?(MS	<Dkc8<C86AC9kSXыmg{ulkX/Qe"^ut
/>1z(ƫ=hx\Ӄש=xq8qD9Xu.N!%re^"/BmO/=*i2	I2_/-`MLJj\,
alO$<bc":	m"^!GDV)jtjT1L|#+D(!_}"BZalUkc0w#?|ԍVw F6I߾j1 *([>ħFH2zP[NF{m/ה>snwEԄ6lrWV*.AKx;f:mti
sTڐж(ue\et1'1ϣ ӟdN'y8x8Hy^^#$.0mY5֥,[}+;7?*[%kPKH    PK  5R            <   com/sun/xml/messaging/saaj/util/RejectDoctypeSaxFilter.classWw,{Fve!؎-&ˀAqDlyhF-%ЖmBB&Ct-tOi9ތe;vxޝ}wko ؀q9nb' 8 5|C7puSWǷt|;Hq+>)=^
 jq5xP>|<V'XS:3zVR$u\r='Ikx^:^DKҚ8!%N8%חu㴎1
j&XbZ$WY6ٵ3&ޓHv
29)H[cX.#W2vvHķwQmWOg@"T"rTwb=3Gi#waerfQ cùmQ'Adsyɣ`mhR=ܸKߙɬe~@ΔS.fL##
`!{'rMqVh,8ټ33.O1d)æm*atg4N"v̔1zU6(¹X1con^5.PmNo1_0fyΎ(q1{Vvɥg~.3?N?!qnܑzt Mwg#cKʴ2JuEdVX]Nr(4T2#1@æj-|!>wJ	9txrs+wg촼;<PrL[Y.g}4ip!'vԐ+\\L]0>$q#y]TJKe7%,ʗiIemT^2	M%P3Ku	4qm*=* :h:ڊ~/q@-wՙ/2N#)+
gRڡ>*lE,28M1)n..E5ZܖX91Sv/;$C2#-t5~-p
8.\Ş5ibdDIQ4Y$kG<Ǧt!1(C2q7p%Љ~WAǻ,njy9JHꏒϒ:ƫ|L䇍51YA+)PTF,B*nU3mv_v4oYTvuC-ɷֶ3]*HrmFGmo;A*;hNh
[9=tH13	ajdd$:r%HkutNX5+S[ɴkd صW/un:gk}'OQ.:+={NZٛ3RB!_t-<N\
`Xr1<lY&C(1<T2rYrbs,}
Kz۽prr5t7XE65|t׻> CF&SOUYv!B׷}"ƹ>3Q0
#r9sd	`+ C5ٜ6o{	dZMWw~W5A?
㸠$Өzް2q*0q>o|:oj>'OC@hZkxu-BL[h㥴oQ
TQI(U|o)SPTRc<~c45*>Dב.)sWt0-,z4oC	7+?{ol28Jj?y\V*3s@|3:7UDUR\2VAʧ*Wi=%8qAr=*8=Jp<>L:krşy&!{+U6>߯Ģip[2DÄpCe%&}ȅebڗv++SC0NȞcLۉqw~R~y^׺ۖ2s7)IV[v\-r&e1>ETxFL3M*2jgDrI,Xq\ȯi{٤Utuz]x_c3>^ʇvpk^+o]"ɲΥ/4.8AL]酎%-Z҂d1WQA=z<xO>J~
i><ٯ#x^xATEF%mW@ft茩ê$ҿU@OƨM Qϐ:R7>#[X
~mb}ZCl`D7|P_TkSREǗY>mW=;SXnSk{n__u'T]MEYǻ12?ʕ-PK7֬	    PK  5R            8   com/sun/xml/messaging/saaj/util/LogDomainConstants.classNPrET .иsEj"mslB\ >qJc6ML{?^ 9Ah,H;t%@U9=8 sG(A<I"ɒ_uy8%Ph]=P
*=MUSQjWԇT@"JRζPGS/]H+A8Z>ue".Y`>xߎ"|D队Ů	><@s80Ks$@C\;OrG2*}I6ן`כU=şQ +[:l&R9% 2\Ac!5|]ZPKSx  W  PK  5R            C   com/sun/xml/messaging/saaj/util/JaxmURI$MalformedURIException.classRKKBA=ݴ4A4YFIu+rN6rrj%ow"hk9߁7 ( jrUa!]1dP2,KNm-o a&|RCJ؏ml:Py.q]m`sx|ܑA F@1Be1uHbW&-[c,-
}b7	FkB׋<Wڱ@Yt(Xg8=J\yseGUl"MO
L;hPOQ6f`/e(SeA4_@kΐpIH+VQJX&VbNvhT'PKM7R  X  PK  5R            -   com/sun/xml/messaging/saaj/util/JaxmURI.classZ	`TL!!l0(KɂNآQ!`4E}jmm]jUp_*.պVkZ}Kmb_犼s{gI?9~(|G|4@H}|ŧ3An^"Edd&Yxd۔gO@mT If4ҔH3TRiʤ&pimRUڦҏ&((;ʦmY+8joSHMT/}M?FN|pC4QFM^bS MiӥaLell\Y'
f@-iiNiMeզAشTٴ\6iMm:٦SlZc@:_N4ib6ٴ֦MBHޮhe-n$cq%6wFhPlyVּ͛p+-[N(^tFds3а<oJ(h'xrU/J(Z<{ى
Y޼pyJV2'
X]֗2OWDRz{y@-$,tmnqxgF6tErdZ,K 5WrQ,mZ]Y#"1frc1~Q{wWC/pvWgCW4l`J
H䌆d]QGm?ޞh/h;K6s5)i[Ir}I[hhj(ڗD2˓3Gz
Đ_9"_nŕuG,|y~7NόE:c簒StzM.f3h"ټ1.Bܰ#-V\
-(%]=)x3.E9쭘kwwv]ʂ[F_ٛݗKnac,eZhSрtPA!LZ3>W)M>_BZsb^FVlIFK4[/Zܹ檬f͚p }ѥ>Gk8'FK2l^" i)͚R)}ֽ3ittvfل=M}ĠtҺ3ɩY2x%2x=lMNε)bXbA/XFɪge-r[h5"ș)׈O&VG;;mvGG/gD45;Й4^M|2h jscbZ͂kױg%Tbvgƈ3b([gsCb5Ҟ9=Xz>/kII^bsyw_o{t~LEV?.8[@*.bmin8 h3Wi=<E~Gm`T} ϊ%7}
[N 4gn{8s7-g	^XocaR*x]-A.t1E;AJrH|8	6J2l1LhKb%!#,`;5:K WK3?KJx\'yOc=+OHƂ̜1c	<";s05Mp}w_\&ǽLΠ3	O(.k~'?xb~D!FC}0!'8&>z"/
.svOgs."v:;-IF쐔`GO_#3JRO$5W.)['v4ch=æg_%dwH{*4Es	=p4/>@exG8S>p@yF
D:\@!~=>"q12#g>C4vzxt-wcYQrG$x_^A'Qnyx~dEHV߄P0^p
BtāKYc.788S;TKq>za+Y#qAVɏ$'g	5#\ǹ:6lWV?иA.AlnXK"p>/|qƸtOZTw-RK";:&<"l<l:%|hIj#|llj+gM9uy)))&ꈨf!x2A,/DE*tU.Ef},$um,
-<>B/͚'x~^ּ5?N/pݞK;_η%1.:zyQԄB 44fH=KFiػ5op;ynyA!:P
3P8&YrMk^˥	cS!Px/2LX`|1"9\Fdmf
P=0k|R*iWdG,l^K0Rݦ:3Ԧ|A|^#3=(؃(xEbc^;pXC\❡"e F0b&a.bVs=
ǲd^y-"kAFexz+m:0ZUWn[{Q:)^A^,p,Y(v͂nG7ԣxd
fzmyL_4Fa0Y)5w>\~L*3w=)
g;ptjǛکصnBTG-6tܳ#C=fދ*n?<?bK}F?f|8DzfB*ĕT4;QOp
ǃTOP2Gi=ГZIm+CvrF5m!<z$Vj
v+#!E#ʳ̈́p3(1/G?Zh3c܏ks?n@j>JģahhXijh<&S(+{MIa
-7gYU?#~9sh/6FUhbiz[(zoøR/;Ө:V6*.~qbF2זQW.fru۰jJFh+d{ޮi^a*%~ml߆P]-
{1Bǈ
{qlx?=,x-ӘÝ4i䧌R:sqġ0 Ȩ8-&[4ǈ<R+<(kY&vPLlUUn7S-Qn]+gmxxր_e{0emb䣍>jg&TFv3N`lI_>MۃQ%}.eo;ZfvcKqȁH#s۬tV,vh&ihB4
cL1a-|ZVZf9b
ɸ`++
7ZN'Ž{ixb5RޢM%M]@^:h]N
MDߢmZ@WR+]E;iF:nMЭUO;&W~@{K>zѣ
=AOiUDϨE?SjE5~Z%~zE]Bw{uzU??|'].m܍E\^pE=#(cωfNќwSv8kyRGn#~:MOU.g38MW<U{x(+blMPpVG>be0ށ*~'XmYdJ9HK*`^hc.n̠&IULř-;,'aYepz1lT[fV.ֹ2$K%;oUY>at &+b0U*j-}I%5ZንzVJL߱brK+|[8*"k(d
K)Iup&O80^Jly'\]%U37 F[Ϊ	ݳ.(W
w!FOv<I]0k;FASb7f扉8|<o7|0ɖIJY)Mc1U3J:U9GI
T%j*HRAԨQhPGXj,fq$50U+UNSЦET.5=gɸ@ME	[T\J5׫ةfn5?Ts2_SZw	xW-_RS-jv6߭\O/̕ܷOҎH#HHPt9Fl2
ޔiG2}
e֧AP,~ŋ^S측Qk$N-
pJf<7y4f',]T6biن@WvLOո'n碈Ex1\)G0x%_oB'q-ƾG'%8Z#CxkGKǲ\|\×@:C
ç*j=Q3Ѩ:13,ՃEjNQXTga3_'-fu>P_="ܧ.j+%xB]gS
.|Aa-|"[]M;Ru=5i檛iANZvu++7GR}RIת>uSIu&WSb
bp
J#+WP"&YeV]Jˤ˟(퀯ԇӠSA{_$}k?d~:LO~ת_NAϝԧ>]7(	K/sl_MLNu,uqἂN>{0lS˶&~voڧa(\ʏP`)js\<i_`z	+ԯpz^ER9征qz[إoG+KT=eEÊxf0fx"asr~O8l5r1~!SabEk6TƩsS2Ne뭣S[@uRaf*kTc1sf-OQOkv)f~*`h#A}ql
-G.
ziT³9{OsssܗϚ}RrixVJթwc5T+$a(4XJ,GI}pN'UNOW+xM[v%彫W9BxhVU&1KMa.fƳyKTy*W;1cc&t*0ֱ&֣؀jh5҃Zc3zd$0HbчS͈`q.65n\ZǳF\7f
CB'o۝iX~qyz`YW֟4T3F_?|%; 8v;,Un\q
]c\F,fz~qs`?/\N/u9Py**nP'4OkfDXɼgX#cb܁J.fn{	3ބ4{3`g+pBZqb-(qyIO~2**E~LsQft$ kxRkך`/P*x9|蝞ӔmceP	[,SRGibWY]A:
68xӍ9E4|xp~`|O|Zi+D$P>pX 56]WJP~L
AGJQ=XݔTy3_z<~ӏ f !7bYf9暕YbK1O?O;bxa@Gա%Iq,x Բu,x`"K0%z	nb	^ƯݲQ~1~m4$8|wU_X422OӷN)lju}ɐ$#ݭF꒓!-ϬX9qqwfdV<
ׁn3.Z]0d\@rWJdV ̻6GsBI&'bيR<děT`J%iTjOSD鏋ax*C/wn?֥oҕa[ghVabUũ_>[+w=|ys
܄"F}17U6]f۠O1+<7\渲8N59gHuqT.rnSk\|;.iu(-㮐.=1WSQ!)qUC|;+jAtM9Wм
T8܆qvԙ7`y#f7a7oIۼ庮 :wB]9bSHrD,|y7Jh댌/[
=bO.}UCp6Y}Ǌ7A{pK,Vkv7TVuqhRoK="~'x*?T8<%6b'ʳRs+R˳CfXcȻ\v~Urчyꢏ	;8enꑟHQ<xOeydoec=f{
p&?l'Xl>,:̟p"3Ke;ƽ+aQx|Oo9d1?=="db}jM?[vC[nnRtΛ%wwc޵xK;M>
{h{uB jOqWIP˫^q<yw=ϫ߳b+}wn-p"0Tz(,+G.b4
A-ȫ
EٚCб,:cxa{iJ+]J#R$"P$JHHs	nZӏBNnYf!pK<@qogqBư
^ŉC`.$kM:eg(뿥/,V8Mށ+9䇛UY[mtbPusSP(ҏE-&lpoV6hE	;
5k&Y(fc5V3\yllk0:-V+Z'ak8ϬV8\G\9x߉N?):?lc
b ]_ "HPKJy=  :  PK  5R            M   com/sun/xml/messaging/saaj/util/transform/EfficientStreamingTransformer.classX	x\u47=Z,xd	EF pG'ihFMu$!Ԙ
ed0Ii$M6I)m-!-7Oi$Ϟs۽W_K K[_bk
B_*n|/+Zǯ*+|C7|ˋZo+cx]w=Gg|?{oxq%ŋWE	~`߽Xi?_^=/NG~\x~'^<g^)xϽ؄_xۋ_g:Ee@g?4D.ĔBҊˋH[Y
1bC:x*!sT\Ct,WPR</:Y%
BzՐjAE"A++LDcw
jZÍ}S0Ĭ@8kOt6rU
h
&Hbo W
17v	"&!wYP K	[CPzAaMk{m
E`	[8Hogѕ-`c<U@
D(ی}}`HHAV2HL'ӕh9;P"P`
hy`"
WX,k
VD[QSם9h[IҎdb(YD"j:mťd~eMi R;uΎ'&2'0:c\3q.%ΖN+
SeD̟¹N|c.<g9W*;8ژL˘<gPB8_=G ,(uI2(ȍ[5RvE d[~q1ƝȤP1ƨ7:fKwo 1@z(?ҟl(uCkX8:b%T;#p)$UF<3-02ONf`K!Y((ΰl9{=$vR $iᯇN8ܜNlJvN+Ы!Ψ7ggz`]V0U#Ar<S,#ᠽAs} zH.1GK|3E3Λq!<abC4d!~OӅx9]=biBz\5tr3ː\%L܆MoDPyb"
-`M2`73G04qmn}xM|\VRVR#f-FSd)k2ji\16읉OTi\`3cSW&^vvdtʘ1ell">'#p؟lky\HblVo\'כr&X)_єfe_LD8tjNvY6ɟcɈ?1`x^֕lԐ-W鮡*2eKТcM{i:i3]:xU/}$+7)]yXu4sQ5e7]:;LEM>yXn56ݔ#J>)k
Rl+Y)[~ۦU9M'
'H[4N-mYb=axoanJ_z^`5F:kEV)!Bsa5y^KRZͫKq<w_UӒZ}pif7KQΚӌl}qe{˓N$#dYΙt^J
Eclt-;邢jE}unx`[	kCx4\փh@fWu0Rd؊j&zlMjoWivǰ0K(2a;fqq_49晒.P<kg.xԈTMyaMN̫ϠOW"dQ]%G&޺(m5S5meD{Wpzϗi.ȔZ?kE~W̴id:vR­ \+,gzG^d1heA%֍A΢Yɳp)(R	MxB6{ȪUf4-vGLeݟJ8`P/ٗr0pضJeƕ
ڦ\/1fGER.C
y0K\	\5?$>lc(N3i36e	98+En&͡e!>_Ӌ1g'Lp5I1óÉE/GuCل)91-Wνq~[|[2GΒ8FjGbJqqL't$|Q#-[5S? CЏTu+2\mes3棈S8;+XW{u
:TlkA432y545|:$^}XѠ>
ОVapq<OQ/*m;*2*T8!osV0)=23)9*ymVe>62IWB̛)"__Wji"} 	ʫj3DtrE{\
)FHaASba
NpQ**|E.5|F
_QwÕ-1\uJ}EcXbqNڕcX~T62,xVp~=q6ߠOb|}u]R}q>j&h[؍49PbR)}=/q]0#iC-~"Y	b<fPD9!sz	U'286
^0IQ|!ђЎf'=Qgmm4l2PK<B(9MGuLFկvDտ_}u
cX?5aubx}kRXSc
.xe"QXNaݩ8׏60>|G
ɭ6ænc8>cMM'-XU9p}
)lp#)ΝM>T튚J|$]vž*o
U;ģc)k{TZÔ[}7ZukX76kM<:,nmiJ#Z]#@lwvIōgq@Gg
,^=ʜ9<<ݒLu2 !lI9}.̈́Q*>T, 2Yc\M7r쒕hU8,5:j'F-~Y:|X6liirFe\6.xCvMمeEJ&V&>E!e,A&9Ho%m%9,A^8~	QKD-QZKBayT?"Oɽ'rZ}<(c򐜗:fXǟg(Ob=iN)6?rXnzGy4K}3BjqbYnV3`x2Qr:AiLsCp,5{6#/}b<v䟫%-08z^pm6yb
v6ٗq&M[Qm%}Yٚ3/pphf+*+^v+Kq9C,gvm' PK2     PK  5R            0   com/sun/xml/messaging/saaj/util/SAAJUtil$1.classR]K@=FiZVRal>,f&ʾf`W+23 <|1㣏eVO%#a59͔(Ez"=s2ZK
k%Qgg)Ϥ"Q:V6/Jy^mJl
0W[LT|+EKbLswl<P0Tɏ.be\.OT*٪Nz?v堑&Tѿnt4:NsKHw||
j>Bʰ!0TgXx|k Q3Nzh]h5hw*S[2k`@@P	~:.Y֙EO{7~yjO_/~.ɒ5m,F PKb  &  PK  5R            .   com/sun/xml/messaging/saaj/util/SAAJUtil.classSmOP~6Qʫ 8_&`J2%Kw3]K;	?xήDܲ9<w?~~`OUh"yE,;
U(ARǒewc6Gx6}3dW-ǒ҅6Cfݭ	~rīfcGxoM!5=+[hF0݆7a
n9u|WoJ֫ʋRfY=h-0R0v>mNMUQo!%Qfӳ^1M"XwƁ):^=CoUrKך=æ#E]xfHZ6,lMc0=C:?IP!`B:6=S<bP
V4(e6d
ixi|URa
#
wv)iP|TZh3*hCBN]B;@jguQcX)d/LR e,,АdY-}
#
vStlltԑ>
+3ToG8aNxԓU\s';n(Ӎ96q7	a_X;d/`)_"`"|AX_?AߡS%DUs%RT	PK5    PK  5R            4   com/sun/xml/messaging/saaj/util/TeeInputStream.classT[SPNhSõ""PMbGfPҦӤI:?{J):>t9~{I4^GІg*Z1bͅ%,VXX&!$ChtB>m
tΌn9z2+x{^42ᴓge.ҧqZsx]q#ʚsL[RV)dqdM{I/
LNFwY"cuS+{q<M
ŕ(d#Ib7݂	2"i3YN
ᕀJ-!m;)Ør3T<ɖʈ_
Rwj2	ő@p%pzbcz1G3'Ǵa1huy]
]ЁN
jG,m5!;<d3Qv&Y0.1M:-7X>P>-,woi@HSR:#mwzKA:[!c$F/*CIS G*bh @)=i(Qtj(f %!X@gLqaj{+eR%L4{ *g"KYJ>>f%GF
]#"M ɿ
M^WlEj*Fd7Ї)S-s1Ƙ_K޾""
D:ڙ,2Q[ӥ2n<¸L
6AZĔ>SZR(y[Kbz-$TEUi͵ئcMkEj"ZԌ
CD*Aȧ PK-v4    PK  5R            C   com/sun/xml/messaging/saaj/packaging/mime/MultipartDataSource.classPN1'G)
@(X'gtEǯQ|bOQ>>>\b"q$q,q"0MOl)0f6<nfn>]tp*6^THDH젳(듩Ijhr%0o
>J2~MFlՔVS]墠-	}/&FĢSa4_tQ"얺φWo8^& <dvlc)0PKTb     PK  5R            G   com/sun/xml/messaging/saaj/packaging/mime/internet/MimeBodyPart$1.classTkO@=[P|TAY@((<AH˚9t'PlM;K_DwL3wsϝ{g~4Za⾉6<01am&<x&&
L14=7dX*:oUi8滮ܵc;kv."摚'Wjapi-"ڋUGD|ǣbpoGF
C~MJ-{<˗U24E]jMU"}Hqp
ACG
dl'rUe|3ٝ4r@2<
)I%H,­s FPGЙ>(t &P{A<LWp5v<)cgȸADNc(եf9\@Y;:ja	+UђR)*'|Z|paVZIXo#Jz2teYzrTlr3GRj%q^qYD`%?$EPs}=L8qhrpAk

gcu@p_G`A?Kt;::tуDIE4c_Ftѿ0ȍj(L1O{k&`ߐƏudvBR4iLɦKP4mw5U52/࢖N</^RzŌk.uk]K
bNj PKO  @  PK  5R            E   com/sun/xml/messaging/saaj/packaging/mime/internet/MimeBodyPart.classZ	|of63L ,$!9B6.9"Z\V6awáxjzAZM=*ZmzWk=P[[Z"d7,HQ>0%ڠ|Z'>IFM^'yXl&b7d_R@w#OL>O$!3e,dLF&7xz
?+5|\V-,[dj?=	%-N1j0*^'&>o|, r<^hEb/RmwLi_.i6_arY}j\x.@.ך|ܯ7t{"(rM~:(LYX<"[-emOYn3'.Swȳ(fn?NsLe&++~nf?%-&/+eU.6}	'YSc]kϿ_q_y/~-F=aSri˅r ,MʗOY;Y""-ťhK~~_U_3u&6'fFCd8䟾hsg7,b
ԝZb+؊
gcT(:9m
366̶LpjVxy5Z^2/eҚV2SUS5T$JbMpx,}V=2{"C6Bre8N@Yudkz]s9LV@d(tvuKqiWG@;@q`^K(Xq4T"5K^/P'VTFlKk4Z]_[?{4oR$IMa+ď7A]"pCkpbQhY4,z7'yv'0~<ψ7wYjIO&&a-lxx]j^nk}Y>nHzTx~k*&|.LP7L~>m%s+9uFB'1H*YlbkCLnQhlG)rVElZߒN
f)Ǚ'2L+©+ͪu8S~죂9gͅs4H#flo-q!+Ge+8x0	:h`C"G"PL3	~bù<+l'#RXXΠ$;	TД l͎5ƛx<pGR@sRH+d֣kgd܄kcUj
P6ԜFi䗆#Ptz"ZI=dTTz]gS"-73Z#Q')
'lxfq,OMi;Dh RI)ih{-*lLWMbGP3cSÂd_c'fdOt9$*갋n:)6<\3
8oÍOgPqx?A8T!,%]zL)	Rʄi-]mYGUA($P2d9L: 	-(}L82E!)4CL<\c55D9&~4=G>&#+bTk{Eg&CA
BO4[akKS(ñFTxf.J ّz7Ҡ#G2uՉWvA[}IQk/&9F%شzԦ7_Jimg)ĕLou& 	%Dm~߱]~ϦԎt6626m-6H~zУC9IG.A}mf'D9;*TɴXWG6n p
_O2mAokDhڍ%<'$BVDCp5Ol>DOkR+Ϊg-M`S5KXLb@aŒiLcd	V5bxbni򖅒qc:aL:洁姞^=uI6'^sV^ӂBO%݈-Ṩs5u!
<[4].Fetfl򐖏;P,-Z
򰸨BkW)RPf0lkr`s(=ux{es?CPGb<
%;wKMϏέݳ.F6h56?y9(.R	0HjuZC:qr\lk=x" &JRZ/7.\m!ӺxK"2<KfL>֜ٲ#V:qѠ^j%VCJo)WL2Slz͡Ht@1259G+
c}Cd87l^:`%s
9zbD|{ҁ%5
Z(4'vjasQk;U̝{ɧhHM 3$/;H!)͊x\dOKCձ@R9rF3zCj)@

WB+bDxfHRqk@Swts:UGHmD$3W"  $+j8\]aƖǣ;>V)vK܇GԠ6Њ#v]a$ͳYfEdyТ89s޾qeqt'<
%q}%*P:fvlbݾ]_!W<̘x{*v	-c(Q7BաX r!4i>mG[+\YǭOnlN[zE"*2jӝxҨwe<M~njDє;Z2uн= zFˣhyqM>ycDT\J}+;X|[)!K3pՔOQvcv>_/q+)|&sDqDNNmQw_pWVU xIe*N+کV{V*C`س4^Ko>xaʋ2-J -Bu%R*NW軨
 >xS	hGw
r<_@F%@S; a{׊- ^x +ILzhFdR7b~ۧ >3y/߹olYP@eHv@/(@AwԅQOz^IS-Sj$ѳLW,<pވ?zeH?DK`e0
޽A3=f{We(w+YlqwT>HN}a-
Kʌ4niPہ(e0C 00o 7i &[t"l/֋= " +I CYʫ&fbkXG.B=~M|<<kpjS|_EY剐lDvh=$PnCi=u=x*Cn2.{
o'zFD Vб4wǽQ!X/$R;wbA}p	UpOɽi,qܟ&r_roaFw`A$W"O
zMpzדYY5hZ-;8Tlý.f/)it:uE_Uʳ7~|B.ݽJa#2sbR&>&i;jIe;!hX\=
d&GَL{#0Q	/4)nཌྷQ>x5p<vg7X{ұ&叁JɺOe`t,oIc$Gn8 ,>ܞK]<`-@B~r0+7|X.x_}.c
i\
sG*֪wvPO_An!_D2aFHcf/>£S|k*f1Ko^9A'R'*Ku rye&U0y\]00	v	<0Y
)j`S1H 0mI00}lFR^u)6[3zax1|(NyaſZ%d-ۜ{=]rJZ09
W	y~+gISf?/<[VeASt3|| L{9AًlPz^)mV&s1;'b5i.}ddj,/u>C@+YYN<A,(3Ć|>׆J}wTwJہaPp=B
4-Lrփ,lh{ m 
:VD4O -҆{qzVukUe4׵4P&)2hrؗ/#*TX~
LJVq>lQ-3j'$F'SJ `_E\sہ /gٓ
x*&Pwm">Dq^P)D)pQ&Gp$Z
*~*4D.Hi
e3Cv:e;}cs=Wa2KCGT-RmK%W#;EhZ#:z	ݽ=5c2vՔ%2d7QLLtGqyJ-U|2\ynE*SiPAuuUE!.-|% J2_
 \K}v=uʩK \q[r+R,"YRnuY{G
Ngqy_*UC*gSZRtT
^;!PP}OLR{ .k4ECz)4$9tTeJ^?z=yH߯FIYrJpۃi{
4BzMX Y `p S.+jxtB	0434F{	(BӵWV{
AuZ170]-tB`QAMИCY
$Yd	
3|ox/Lʈo#}
i0fvZN+;e&MI~%TjU]VQ<d.O"lvءDK#"V=?r"dfT3
54CepYQHZ+KMV;E;ɭde)G6t9n[6Α׼d'Ŗkos^*t2VZ-o:02 3>F2!j21ɭTgV,?c]6DV%KYp) \ڔ0ICd+Φ*G8]yA:Qs *0)ly>'PfMKepӚ6p$ ki]ĩo K烥~3 \ \%p`w^mwJJM|TVA"؍cj1n!vf}:+R9lo6L
LNc:ݐzطHgȜmɨ#ĺk	d!A>%,P#~^	^cCǨ32CKnȿ=-:t\4EFmԳA /6PN;N*BtYZ'3P;}NCD˷j,Wˌ;ȒmtƗ+Ta:N@$9^h5NuPoQ6ߡwR=\G-3CO=hw_zРEF(nFn9H;x:JXUWbu
!kbWA -_Ŗ<(Srwh]E0:3#c+'^3'渥_B|u'ZFA=Z~jj]gtm$CSԙr(;bS`4?LxY/v*O;((G3Kx3l]י`C5Ke9pҤs+@z}D7%@هHu2_vH%,NtE=^nR/}6IO[T"^pTlltH-qDiSfW>B^XZe>z!7-U=,QUzUf >=>UN'RBȭUN?SA4&l#J}
14XMM04HQJshq.f|oQ@E2
Ѹn1ۍ^z "l7nƏizָ^A{)w'S^qf+.N K%<tdv.J>#5D'-j<͇nR}>}eACUaw:X\1eTLjFx?UJ**
)[hvϩFsi&Ms)LMS8+NPd<ο
L,[鲹R¦7~nWGα~+扁htBQ-)`}	ޝK:׏nE唩%rVR
i|@n@y*\,i#lPK u  <  PK  5R            J   com/sun/xml/messaging/saaj/packaging/mime/internet/InternetHeaders$1.classT]oA=çlJŏUEZY`%A}}X&0,fwhMj5>Q;0&ZB{g9s3o p?n03nv(hPzIaHseM{8kk |w۵|n9t\F<#<v+Ui~}ް#4+^mmV2͡͝}I1p]99mRѮP+Fr8Z#4=K#Xv_؊ \<tZWUSjwv*Ap٢.uSZKB3{'szN%&`XĦĖ2lǘzD&.ɒ1n'Kt5]&Ao!M;e.HurymoC2"\7Ao
NkCP"NCQ FqX3") M	`
,Ah3\+S<1b?B	o|I.9+A,H"{1YRCY"	:5-2NRbT]ƕ*Q:ӵ$PKY z`    PK  5R            H   com/sun/xml/messaging/saaj/packaging/mime/internet/InternetHeaders.classWkte~ٝeҤ&t{P4&ִD^IR@eL-ݰrWPB[*Q` x<Gyx9G=3mn+m|}^w_<
`	;CXt|>/
qfCI?J@ ?$/Kr<+:	!kxX3G8'ӏxBOD~Qt@rz oӲuP^e}GIdla19)bf*e첒6w&zkRx@oJh&ek2hfm4nV&h*\!펛LR~WKyZ5xJƭtMOWry
;^nW(hn!׻Mpc&նnƣoYy*pqkCwL9idTI-%v/$&w ]^Mp/ٻ\򈙢
5V_:SH%.y0 MXmj7&Ʈ9\d}I#$̶mVR!rSh pO^k[>a? ͺAR_vf@T=
.dDf/WW(̃}\8'	r|\#1
9eŢѴ p5:79j_8y6S5ۗe#i&ɢ\Y<fve,~-*+?*;MU{6VV0]LzF+5M(#3+YgNd4skkk>t	z5IvZkr4uxo#7p
V*,8?#:PbZ.=K12pG hyB3"F
#^QTae|u5d"Y󟮗bUqxM(mfFX	MfͲgxBRO~GDzDӯ35T(C7$Z3=kbVOgE\
O/^$6nnu'rȴ=JtjS4s"7,)չjgݢ_>ttpC5I8w8U쏨TFe&z`Bm3j'*3
nhseݝN@#H9nl$afܐ˚r2["%FwᠳLL;}8
%?W<Kфrm/Gap̊{#g@YP1O(#Ў@
ҫxB	`-4:ַҢFJ{,:M_E0|Nm!ͮbG
\˱g1ƍw8sQ+GoP(U#RuK*̋h0%hØ{"p#*yR$
(ČoSDBaE|aVkiO=2Q/G0!:[q^; "00I\jUgn';!0w|=I黸+P|/}7I8q؀YJ>B#C>N
<H-Zq|Lp+Bcә-]F%:ai{*?5]18)l'QG4qTKaaDuZ6 e	*f*#Ø5{W%iloڥ^ԡ*a\*
K*}7y,߃b>a1g~Pf?<@ڸ7еtM6;wHe0⺅'Cᓔ2ΙrL	GR'xlu_^huOQm?ЫIss5W>z\lG""Âh08BF((#|e֑QW(2;vō]F6J62McI:a
	N`6wvn^9C^'.ⱳ``^tch(mÂϭȯ2FA\IZ A96fsm+M+*)W1?<&*ja
oy$G{<?hoiO8?`'(SN|><%P6CH<x:Fn	N"cL2.Y
%OԺ$
OwV[F1jįj^J/@^ٓNxJt_x@ee
<d)ɼ6N"N"N'@)B{bs	gq[DRճt,
XӤglyT	YaZQ˹:#.#^ĎHlDK݈'QՎӷ\Ne;_&UxBj+~ؑod?zVA~g`2ą=>՛yIӭp
eJeeo^h?ob'PB@XA\hMU):TnRYUQ-aDƗaF:`ڒr$KIYB
4XR\~`j7.؄_|Œv~	]ueT}*R	pOwMh˪BOi~<ɻ?e6'aPKf
    PK  5R            F   com/sun/xml/messaging/saaj/packaging/mime/internet/MimeMultipart.classX	|յoo2M2!PI lHX4 F$2̄YjKY}}.*؂yTgmU[][mfyH~dr=g~q K؁8sN^Pou	{|E'^:^qU'xMM5x#WM{N5o)boxׁp;{|:GMcS߿+P'=zGUG]DMŪMCt'8$C3ŪLC5YvHN&H.<S'qR"<T3\5uHjQF,5eCl'kÛj>pxKJ+UMj
]
~
ߦ
_k4p/+P,-w@.8PWE$YD|uo}E,X:ka@$J:uA_4"'y|ΉwZ7ć].E hEG	yv5dMO~
	p$9m|TO(oD"ܻ(V|3'D	+6
SƺZNθCΕp@hG=U
h;]b:KE[aXKԪ(kKNnkFkE64sѦVHu8#hc%
uBp"i	g@ͿRa6%tDjH-[HJL]SC6_s~e8	<	pPŲX;%@+2A:KjW]0}N?e.J+pS㓴VGSO],-N*S>`)uf%!uB'JU)bYTj`iƍAFvutTD'`[樟:V*]w*S?30 rt\dHW8%A5\qAp]ə఺\=(oAbU
ѕ(d
-wfM{kKNIOrvO[X~%2}mmg.:}2&uy"/Ypj*N~9d7’zH&)fD
l*C &\h`:uaL%>=GL]ID&UB6d1pXfئ F2Vug\nFH*rXk7<Ce/i_õWkk`H]}'sXd8q!d!ӐY,17{iz]L	\.L)M,AQj9,vM"A9`IDjQ4Z@P/b.򹡲CVұd-)Krj5Cu"7(r\f nJmrko^#&kʻhbȆ@w:H<i8o[	aCdo`aw!k!>%VrV5lv;h߆S.?D>R̻(;(݊R@*1/y5[x潗
J:Uo!]	ޖrh"?)+&kAc%KȐn$t,~7_ֲޯʙMį|/cZ]O%6c	ɉO$3Pgz00D3)bu90tPϡⳂ񟋵YeG_uwpY(џĨ;}MGxjc61_gdPɝL'YJH@NSȸu\Pҹfd$ǋ&vef'{q3Tij"5 ق62hE: OÏ쓔qA]3U6^fdUz9ȫެ
E&m.PW%|aI]ݐQX,g	,THowg8x*TXQn3KfAIyJ,9֬%&~[+K+=WJKXYFbsO)@\.fIҦ#QWm(%
?aU)6{Ve_t!1]s#Uo!0Cg{Gr/L.myJN~mvnĞ߆U	7r`)ZVz } 28t62؋.EN?1pJKU3.ǵM(8"D0-i&/=DzjqZԸ+O`	l?rG=Qίj1R;w}0=|0
pM
pi:1{_4

C1uÊL߶kxD'Cvk.oLH(KTP
sK{O'`ܭ:(;%Hl!#;b_@gA൞
~^YnvðCjg O%>CNNmtJ,=qE+M1R]<Nԗbdc;BUՋ\^TpFv=,ӷWO"bUxx]]{G#ך)7s
[+wl;dNKoUqiZ7r5V^?A'(q|pC;Bj2a	cSp;y;
ԋ1ۄ⾵gĂ,bKYJY&f1ozd@;
MPt{LM yĕ4){Xڳ]b\<b<(iS@Ӣ4S)em^SsT˅{ZJ(+(0Ucx0ER%2
,)W)Oڢ)e&܂[)֋ǤM>j1ŵs"S%5_aQvXHCFmRu?&	Ag3x aj}r0u>TR({SN*zFU'`S2`7j:OV/f[*ٷc'Ms*s9]'c=ؖ'ζܪ,O*=w'˼DYPZTƹws69TG?TGG܋;@"PJV]#Ax$"J*ZU|wv<Xvk,ywy'w0tw\U܉wcX+z5'=}p$v{Ywyq.d'0ƺ].{2ݮ^,qs 2ҥ6W~d܃5,5WqaV\N;ҥїj3T-ypr%c/|tm?.U=x2{lbYUA{Q{2LK4z}XqP-:EO!eB+O:Cܖ{Bbjü+,_sr$RLS!G%30RfbFTc̡FN&G",Yb,VrnF%+ciY?&i,\2IZiYc!6Y/eIxKIP&KLf&r\%ȗdl+Z\+M	
Ezo6[r.e<-ߕȝ|O^-P~ "5r^mܧxٯʃDyD-j3VqmVڥ!?Bv<m_j[ZyAV)/j%W^AyC;,hOʫڳk}$hG=*zJ.v`v|ˏ`'rfl͖XupKahg
wN/Pe;iմn.sQMLѮC16~zmS曵q%5L#[{?ď2'{?٩}W'đٳ{HEGX|ج}>z[mLӮ[LzkQ<p)V+>2QSHLi}<2h[f96:g'W(ײ{.M{nN{XNQvH#0>ǳrh}y^>'z5د>ަ?ȋāD:27f@zWNv?w?dL:џ2't4êAd5g*L_ifa3Q4jB}`#>7GpLILɚKXҲXŗI؇YV<m
q*Ҧ#+aMIA8!
g՟:U5B_
L㉄+ŎM%?0?j'ěbV/ʅե{	>-^_5zZ\rJyaZa^$X/9d-7@'TB%𔟨jH/_U
Ve֢Xaւ25
^y
^y*=W@V?'@S%	*;ԎkiHJ$.nx)JJvNdGoH[何&ﯞ@bSGVc-}!|UJ}Չˮ~hTkmOӋ=En#NsɅ =CPPKEADs  )  PK  5R            <   com/sun/xml/messaging/saaj/packaging/mime/internet/hdr.classT]oE=vI7Ihhq@IJ7dl/Κ]JH xנrg
-5;s3gf?J!NA$F񜌞
ΥHXJ%%٭+(*xE dMqShڶvYk56"a<$j¸SgHᛝVp:5aUk<G8_9-ڭ
&<!Z[-ehmne]dq3鄡mWE;`W
av43a,ω*0jJܚԶqkeSkLU^1Dp%ɣbUlUa\ūbn1-V"*t%ëf7[xCEWUlbKIXk٪6O8߹z~w"B4+VLnz_@V_Cp!u^zv۰B7T袼9y(#m|7l5J3E,ntV
S^eTb/o71n8ΫOqQ|z]]D!t.b8m!F
NNn`cf{`3WpW#xgGyQ
N:O:&4sRHd&".C}@_FvX@8CG4iÙ@8p,5@Grb`.MEBf/v1-b;r##}8N!3ڃ:N!;%GJfp_a2(-D."E1'#,XOӧ(s~>hMw_ӗEvd[@YOmzC9v!t('T.Ơ`QZ`bz/PKej    PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/internet/ContentType.classVs~J,;@p!@lF!
`@cbꐴYˋY[Z)Ziskz{Kg҇fr{K&~ gLi;#̤3`~gwY,2{CB+RxFgu,?CǬ8t\d?/7Dֱ b8MJ22Td(S7PՒ.ʖ:hVVέ-Tnlf
3Vlg.Zv
|qr)Zki5ͅL/ۢ]2S*U͜5+f&G;j;vuX!7M-tl:T*ق7fŖ}pU/ٮ ɖraؽ]nri*Ne+
]MSE%<ns_ir
l.*DcqJ`E3ފ"[[]r_˗toJ[ճ&-ֶq3j3Dŭ(of*5"
zW'6YcA$n{GmIfaI뀏^o|$;c%011Z4y;!l{~t?7-'-u­R%o%6>͆#elJ>>p3{Zw_x6slH>a
#p2Hc`G݅^21NDli#~oILu];nX˼m_ܭH>K:j~گyuOZEv$1\9nmwoۮ#4ѕ1i=d܉yT4dVFxNeq()ZRL眄*]MA}=a?>'h _kwpZmסͬ!z:=x
=@\bTVM)Cxs}^ؓ8ę5_f*tt<@Dy"@COmYC@
Ӄ5-	9i%S2Swm2^&k;H%;5l#'1:@'ӽx8,q忟৬.b8ezSaVx"c:	?aھwJ
M1u=7{7 #4'ivUf*"p:4B{aU5
RopQxh(<rs]LmL
E5hzNkO5Zp3%!QuE5<p%~3tJiߗ
"#$=)Ic߱Fl8ƼZ]quQ,D*PaH7뭻:EJSG.!j
Jyc>`'V=K} y}#h8̑X#ёwqDZ8r&$ֻ1a
ąLPx~)uQ)Wa;NH`?73>$Mdt}2!AED#\xķ;~DUT[
a_旄}ҿcu
#9sϧDAKN#ex̿(_C5Yz6ش뫍ԮHx&γJĒ!d=4SOf<B<M$g.~PKkYy
    PK  5R            F   com/sun/xml/messaging/saaj/packaging/mime/internet/ParameterList.classXwTF&#OǶ0"D hnKr̝0sZmEmKi[-
'P~Z.50I+X9gs
¸tX!4cL 2a#C*èa_2{LqT'd_VT_**^#A|S>+
۲NGHA|WsL PŏfVP59LƷّn}, k[
n{%uk8kgLk81WF@ivo].lOqAi=Ԁ١$)v.=cʺ #fVt*YT22Y}񬮏2eiF2zFO\tKbL.YZU.ر;
mz(<9M0,#C8}@ߑ(:-ȴ'l֠,!"m4SAeˤbc|ʹE,9a)Mf2?'sT!NC%wnwN+ו9VYV`~2F9%
G,'%|\bH
j`nʙ!'^О%ʩz~ejؖP"?KR1ҰT^sAct-`9%ϧ/շmlJ<PZw_
WK8elSZ;G[(c
^Ѓm~*{qRAdv5I
?k*~Ӱ{,Bjxi8_
	o8WL
i87&35
oj8+y+!Y"a4L(ߣ 6wl]1e
Zgm`d[έ8W*JC6
;ݕ~]JQV++~1Sz'0J{?)f6
#UGl_=;jQS\frp
3:lѽε#\M}!y:ūW2Ʒ-0dvť+i`kG/^sװ9&ul3 0a
z>퀃;hA9ǒ(x߰X@ !4:H$mpm+jmEpjS+@)6h`jw#My{|OРh$q+%TLw\Wq]xhdCd^]}'/m	y8I@ѹK:{nlFuc{>l Cч:`/x!VILPU17xt҂Q=	:M*UT*belQ+N!$ǠGbfYQq
[
yT1&yD/,C%-u\#U.f/]\*l(]Nzҁ]^(V`e3;;WւёF_?H?R4{#׺.I,T0J,s?e|[&[
<Fy%P
?۞8S3k]npLi'7*-$nyuA˜ɣ)S ~_ZuILtʦ
9	6ɑȆ<V-q[wlsXl	ʝ`$굡X8Xh7zZ&+@N0'N;Y-̌7gC7X,,)f,w0o
pcxO7xqDW??s?7	q6) o,,uaI?Dְ`%
(yN񵦆21j8O\wo{RP?BLb#̀ .U,u:B"-G&f]>bI_z$cDOuCY?￘.)WՎϊc%1IQ(hi-<m)4vL >;/IhQK:c,REwќBPKbN  _  PK  5R            G   com/sun/xml/messaging/saaj/packaging/mime/internet/ParseException.classPNA浊(w8AHjL0܇udg1'~eYD8~TUw9UBC>Fg}Bu2"ɽ"m<N#ԃ$Hf){Ж0$vn"Dm&J93>XJhԨLԪEfNLlS$E$;RtId_#BuP]iwJߩ(O=?_r^.quH78V#c3E3}f:nYӡNpb\|y-~ PK~+  (  PK  5R            U   com/sun/xml/messaging/saaj/packaging/mime/internet/MimeUtility$1NullInputStream.classQMO1}]PQ>y ؘxpAM01Rmă?e]8WmΛyClJ91)\!S0daO2ȋ8QWiۡ/TOY7P/b[f
-cdZI
Wm?

4L[!|$q@retkr;Mn1;aT%JSx:$r. ^6b1T]Bj_cy/bH9aZkZ 9ulãNG^
oB"8^M.
'X&d/y;&iVrj
K#PK2`vh    PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/internet/MimeUtility.class:	`Tյ.oޛd0dadm(a0$fbf¢u. !*muZnf2Gۯs=s9,s?<8 :Ugw%1 ζCgwR׽:l3.dn|m:l/5&;9 lu@6o{`O
ΞS̶W~8]gq>;_;޿qi=#6~K{V#=D/ɗe^ǟu*quN=!xǛx`ok;m'=}8`?O}yc}B#4a491o}a/
%l+A[}`Ύ8D;P7tszKbp+cp	n3npvz8tDNHvBTz<]<=v𞼗{ܣL\F/e?8`;cD=|
 Z&S<1y7x
^}l>I8H"3(6||'|'
^j)jin/3L2x+^i*n3>cg_`/4_d?K~/3x0x|o0J7|CgG
b_R+[BM-hs,
46#@()/g$C?ol	AӦMlT 	juԅJ D]SÍ޴pcT[7?\+5'G]uzKctt9l5CˋLhN̊qL0f6gDE3Q NWі ;vc{&%FK"ZRR]ZV ¨S^QV_eUe[0	(!R
"CʖUs-C8)+(IUEPUE9Y+&1[E͡@[sq:N@T)U^[䯍Wph?4N'<6.w52umm :Dhs5~vLP(z$`(q7jFLcA4(7)|a085i?e#%`%1[ω2uq䈫7b3O2lOD轐dzotI/#4ꃍ܉%U2gv#JS9.4'"Pҟb@jPZ܊l\iBeDJp&{s+9hULn	6)0R#wKzά(݊hN,@!tm.0n-QѨOy^7-<cb .pJ2q.(in;@Mu4`#
[Dczl-#\U|}܄]怉GNϱw=Zm%D-dqsCps4PF%O*qXitP%[VNDkh4+M$4sO*1-(JwIUD'i
HR(;P%)?apjn7-i;Q`k	TV՗ٓBE=)2pc-ѪɨH/8Ȼ{ݘ'L&Mۭ0lhdx2>kZ"d-9-͘$g#Nj#]::M8-Sy?ʺ
Get
䮙Tc4t.ҋ^Ϯif7Ves'++KL.C	kgNV8l!!3Hbje8*TYiõ(fwܭ-7a[毛ZUN*"LEܲ!Xjaӂ$մ8t24Lcdt&+#(HyB~O[<aNsv=|Բ `y4ʝbaF7~7"g'KbNS,R'_W+oɯN&=zo';GLQ:.TBZZbIcmAgCSܹG-`[uJ1N`El4vz')qnhe(&/s5N~-[SenQ	2ȼ"cظɼ&(~vG2zv5Mti
N~#o&JRdsYoFCmJ	BǬ f^d璛kY3sA'ai:E	*GBlw-N]~o10E%`5cqzw8'o:D|x'uw>'J~uh;,Z9b<D{٤ewb0Ni3{%p'kfz0r9|/'&|_3H_F!Ъt
|.L4=z%Cu"Y'b̏A
="z'|_;9t%
 YcdK'dЯ1T[jWLmtUݮ'Iw).J]9z,$0Fdvb#n#hsKWBpY︺{F7yyESUN+q5d*Οr_=*mtF'߄`(zH4q oZ˰Da	Ű'bO=<="{D1쑉#G&`a}	ؾl_{T"Q	أbأG'`N=&{L6²zfY5tG(X3+T+;mذSAm%
44!0lG4[8Nm3ꉮzfͶzV$d\f$2#ZK/ΙF/l+gITJ=VgU6Zj) J\!@37Չr']b$e*RL.=ݭ]qRʧ1LIGZ4*h>wBbK_>0'~8W^FV&rK݂Nly((7	i
kzuSpR7wF4\m]
5m˺9+%HGeՅTV]r%Q-E-=6nGQjƊtN/(Ђ"[ƞɒn j]H˲Mkܲn|2#g%!MYuh8j}S=j`쏌g㛕?-5.PțGA;퓜kͦi偣?7.4l,^JJf0oC"ӛMfSb{mԼ.1XYƄ$꤯${-gJg_X!N"{J"18#SW5EAp '|}>L4a.(Yޘ]>ҥ~H1?S2
aOм=Pt|Tgtӕ9]
Vy xw?}}!AE+ҥsm`|A E;$4v}PkeZp?d|\ze~Vl+؍6`9K%dn$<	=>} wA?nȃ=0x΄68 'SO+	]C,i~SYⱉ3,!2XU#s0DJ\z4gG"uс,S0 6.Xɿk~v1MtHeJ3YfU5uiiB[
2HIWƕ	5Bw
z%HE$hc}]

!|z%"]fnQ(10JPb$eBv>$|>A5~f9H+5YG= g(2jf'	ECU	Hj,e6@@j⪿E)+A EAu*:p~fH[ٚpށf4P $Kǔ}AKo&p<YXO6`O<W_8\b8	g 8c8E9 r`H;~]B
B`8
cX.LdC`Y>Բ"%^ԉ ֑iq'@c$.;D&#vV(B):<N#<&MF%TihLQ&3`*+J6Y(r
Xɪr	2u-;ZqbY
$+a-ԣddVd(JL#JfJ&	Ck3PǚE(3̥d4$~,ُM<FCMҽ]3!h~4K؆7/؈)=aRRPŵaDE16 kv,|m0o5=ƛ'
KֻX
x_cu.`\ϖov[ _[/VHH
oy&nm3<
&	&͗>r7cCiq2P02dGSZ;{wp)\޴b`bKHf_=|{,Bw#9f\Y\ w@wy<
6r\s
Wq7\{ͼ73nx6<@pPhфR7*Ȇah/B7ֲlo,\Fb4)	xR˄l4'u lcl8$b@ڌ 0cxoSa0C38E(0d*$
(I
8΄ԣbc5qy]L0q}>.9mi>RY8v^LNyPV[ڶ`0S*]K
]3ͦfPwKh1Ty0v`tҦǪ,:ݚ )s脜ѕE<<p VQ!
CaśoArj(k`_<74~>T`.-g_+`'W-h
QôF`\E?;0Θb^S
*E<c05AEehX7!|©<%mu4d:5>fY77Tzn{gU!wp;6>HCEpv
y5IHXPI5VH; 3'EU)L$an_L-{,لnOw-%7
Iɇ
AN$?
ؕN~=9ȍ)CD^FH [`s<Q|
:I6p;P[oG]
K/߇p%{nv I8&O'W.vA:V	3H'>hq.ߡƨHF#,+10G,	({OI|*PPINMA~ ?`?eS3y:>>{d9;08u6Ð:ֶ
<8"'jvy"p,kQ	tAm7mbVjƣ>ެl43-rPBp-Cn4,k<V`#-ǔN	2XoQ?3ߠWRDOGbCUy0:n1¯.h!q 5UR:]۠ȋ`]d$
I}'ndvAE֣=-ٲ/5C?vaM񷠔
;P߃})c816/`y^B{]px_+sAؙ]8XHb=V$RPb#D	7 zIO܂|RuÃ1lq\q>[V<-0#A5uYȎXRQaTeٙЈMB, F2nflB;/wU4FpT@ǪG@CV0Oy±ΎjG	D<ie:U瘏;"ܓT9O.<L-0
< )loxݒ,	ŚyMƵv<B|iHMcixL¦Du# ^p<Ǽ( ("Qi0^)b$LáLt1
Ѱ@Ec^&1>^{1ɬSp<!#U8M[X(GR8jpP:~۱̍})ZzrH]"T$b fonz,m %Z"J53(Ԕm[tP0JKQ§%y8Kccݤh7)ډbJvi[IIHvIm7\ԇ2u6ݨ@6JD.VzbQD%!jl M],4QB!$fPKPKaCX:Q*p?$V~*xYH
o|"!Z&TrzvbJ^a},X~P5Uk/*c	RxKjPƸ`eT$"0 ԟ4[H{~s^6g%<=VnJfe۠OqrsPڴofh8'0gRҴDEmv}6*=ORoLFqyn=W
n2-/l9>m(J%'e]kVaSPi:׬&]kG=x (c$6~v(f7t, q-d#S
Bq7Cb3T;`-Rlr;q7=phEGNxBC~xN< C{#0|!#Xw}vg-B[T:ʔ9X,_BNea@A#9)sZ{,[
 2
m7ُ,\i-*:)])DC&1)ʽ"șF0.lloCݑOI]0To9T(5>e4Єht3fՎd8n9wyEeGyilhٳZ;ff-5	zsÑg!%ϫFgW 43h09%~9wOƉaT?AP%i/׊?U*^C:vo_{~+A.M| S8,tK4)!>c_w<.,RO`~;[y3T25@d5.4?
t40`=Z;0R3RYD7&\Pv8gW{q$*T'(,X(v!LȦș
<yfT斻TzꋈS8kS c"%dI
 <HƤJ{\bvנ V5Zgz4AĲAP@ZЧ1⹘3XǃgQ^baym	Vy"I78d/pJdR(}csuFU'Qb	\2\!ErqO\=:jf.lfy7NHb=.ݮ]gjSXc]6;k51
a(\bmY69
~Td9P(P9ɅP"*YP-oJ6Pr> W1 PݻіSAAr.a\s tW$pj9az;lv!ur=*ȑ!BGbJCG54|5XKVs
:]׫a[k3t/aXY@R=<Q
p|cCJ9*?a))00|(?]	
eH@3"_\W+߀	m(bw+|*Fg*ÎlPl.8٥*/vNXl@`Yx~+s2|>+z`u
خ"*{7{v*jKɯ`?yqb<<Yӑ-11ư+wee Me?v"D~R~\0:#hX`@0T0\0ZӠXӕ( 8FMǆXNC<n5*װpԵ:pYQЋcljZ|QI1!6ޟubzM
}>0 ۹Z@67Fj޼Ů62ެ3iS&TpN7w"f"2}Z-=
T>,|@My}eNvDmGVm{P;$0ENvk۠œNV`IÝBYT:`ŦZ6]YЩ;
kt0)JȨfS/;ܘ¿~A7Y|K,VGn&Ґܕ1]	<S5iR_m
PdHJ!Cp6
0QSPCVJXUAPQm.ܤ-[G[EigRxJó2Vk^¹k+
-oj
h3	w:60lڅ,I%kYv	sk^e˥(uuSVK`=!'zURq;l>{#t>nR,&YSjH:ݬ*dd ٭8ÀfccmFȁ$e͛F?8F|t ts45ְ)jA,'ktLP7j7D5;I6ԛ~nyHLAL뇩\&rFf-<S`u2jW%|TcW>b\vGO>(d,zW6Yڬ>t!6k(]Ɔz8ם#_}u/`׻`Mw ӗOvLnZ6gFW+Z	twuw;:=1NN͵/w;G]bc/;]cS_;g:g]b;tϹ~	|C'?b]/^/^vjI)p6\[}p-	C|N|n{'^L] ViVx&S<
Q<-2VIY?`&`u!ŘmHa=\.J[yp [兰C^˟>y<)g5^zTɛ&ofiV%7r3*ogl͖[by[!6Ȼvm`;NŞr7{K>>{a#<Yr(yGyWB8yH>'FFoO3||\6	V!媕/)0t(ύPJPȗ`n7i"=ʘ;UA3!PKW"&  L  PK  5R            J   com/sun/xml/messaging/saaj/packaging/mime/internet/AsciiOutputStream.classSIle3c;4i;t2)q
.Y!&@ES!:q48P8p@@$D*DH6@X% !ĕ;BCk z0A¨m!pXON"TaPǐqHǈTO-sn9m+P
NyطXQ1͙1O[9OYpy}c)vwLMuS
ff$/ft=\3ؾSsO#c\6Y(:ɳL2k
&y&9ofZIqcIo;_t']5{ZN2`~Ez4oRcTUxٴ59Ā'6FG%5wy07vt2\1FlWs~3X30E=.(ۢh$,P'tDю(}
R-m(&$\rxbdcxC+l~ĖLsMQf
-1aB'ї;x/LfO073u*Ac^B@@H (F"Fx	M+FE+c7* z=*zu"f:eOWﴔ.<MU<mkފ:RPu*,֥j+2]e@f6⫨XX#AW|jxS`O·.k27&~!zkKF0'_02ќ8JjZk5굃S&
rfA%epLg֒|J$D~Ta^?+0M畛Tb|P.-kDqz	m,B5k"̐QWxq"4,+oʇ)~%J\H	MF}T_EG
H4 ڤf 5L
פ+Gb>8}i
ǘOЧ(gx>Ǔ/,}6[{PJw{΃L~o=Ƿ^=\X,3K(9TA' boN@kҷ	G졟KzWh߹jEz7PK?b  w  PK  5R            H   com/sun/xml/messaging/saaj/packaging/mime/internet/BMMimeMultipart.classZ	xչ3?3,0 [Q	PąI2d&hݪhk7{ko-F7.UAQbR[jZmX0d>OΜ,[>x`/M/zi!'NKIIޔ?J4oK'i,ޑ/nJл&g?L:䥡I4鰛xily>pS/V3yѰKU7;ˆ4N/ؔi7{sS륀rr4n.An.̡",CwP9dI@FK3BbK4^E#%AiFa>ccx7ORagB2\&$7{DҜ$yd7W
S@{|NrO>]z3M0ϖj!R#oliJ3O7&wSdu4fsMI&Itsj͟?oɅΉǒp,<q550TG"m'SÉxgnmx}3m#1h6љjL%"£'6e6c+01MLm6UR5X
f@LR:q91'h,)Xnjxsmy8o{Hܺx{E3V=LpxmEGymTDcH"IU㻾-`_a'3ٔԁVY+6VST4N㝉O̔&>L@<SL?q@͑Cb˚LEaf٘T&sau@N6)Ƴ	͆m kqM8iϢIF۴)I|I	k-`rVGR"5J}eo!#XM	pmao3:8b["O`vL
M8M(jV:S6u%md66Sݪ赜VưX+nY-jdX\upxry9G%E;˔vXͼS籘pjhy>wF*;:+ G!؆VY)-=hF	X mM x-ĈwB.bؑ᝭DbWZ,l	::얮љkC",3E9w&/4)/Iewl>@/oQks&SHN4hr^5M$ꎮsuFa|!G]NW}:Ń:i6H)89p*h#mEt>ORJ2rF/
GҗM>G/uLi5~~c݋LHL3>	٬#ŃQ9
D=؂Z'%il7x$SdgGG<
և@ǍίҊTMgEW>^|~i>>Wz'-a!!8/'Đp3+<.<>D:(9F`<LWYEX0E6P;"hD0.h'Y0*|>_{>i`5hk(k֔!a
!(Q]xDpRf^Y<X2
ko![x}(}°\+)'*XC_+f!#RNKr^geG3D-ME#HH.>O:S2SM2k;*C" %O}:4C h,7DSkMxK"vq;}(6Zlo qY鰐
Κ#-QRp,=#ܢ'­"X2~`$Zp&'0hnC@?yY,Xu	ش#tm>hn >ф7W}/y/||9_!~Y<AzYO/JUW+>!IV tZ<;e! "5]Z+wgC= #)	T";2
vdF+CDPMT:}Q*XىC7R	|unS[h
HwK$ST] o3&s	 hþˢZ[âc!;
΃stc]IE}cPwLR巄7<rp-&ϑεJ>v<mHč7Z}
km&b^}X߾a-v&"IAI~"S_?2Da~>Y/rN] Hmj&E?)zx=Aװ6c1EbGgohZ
<YQ8/O-H8d프*&ѬV'(&'#Rrkܸ8;>G	bJ8oqѿ_~~\enhr"=]!c' =ޝN2B
h{'3 Wȳ$G_ȱrɻWu%)C{>N&͡BSΠt&Lh-YTKU8t5~kln -߅]oa
&/`7v+t;`
awŒͮųfK.MEǅФA=T>*)r '@2p
!|ȰBh#hqc܎)cWq.l?&rC0	G4
JVh+Bġ+s
nʫ{(*JzldznB̡^Db6H]X{+nO
tXl|C˷ƖRuI,
[Yj7qogs-KG^N(Cc1Ot?_$j)/	gwӨ*C91 ʬ/A˨{qB*տ+2PG >rӏ)c	`):Ǝv>H+YZM?Z	E	W'1DP[?t}nBNnʅɴȡ74̤^a]n4&bJ~8Mv&@1^GM3kx)+:x2V.j9T  Ȳ4l6F{'wQEz~w?I[)2Z.-MSN1Bq\e/;Y{r\cU.ƲIS>:͂"`0cO)f|1MӝC3<Nx	AY*怓?P8{ZS
\Bufk4oiTBzN? jy7j#7CwALu3]!vЏؠvs.yt\_?6-pgNEh }.n NPf]t(CNDֽ V{e4(8LtIwGhI?0p
z{aL#Vq3B30Cs}͸3<	8w0<Zhdn0)z6q*$#%R6GFBx3b02 [ޮ޷nnW}/ߩ?{g=_]}' CTeI4)'x2L'Ip4gl\^2NK*,r3;K,!ia\*[ ?#gھ{k)0:pRbs"KiK4;85a8ܕfc,n%4Hf}|R">FYwL1~ǈoH?OՂ1)s֗#V~V0XM+fɭQ9|W\eCwccQNPn,9~7^ݽs>y"nTFp򮦱&pHZ$JnYyAgh9'B^OQFJE1ɍ(VG"bxtc9"wF3Z\biq=:=j=ASD.o-mH]H`gg~_|hNhtK*S8ׇm΀p@t#7pĘ:	7*
qIjH;bi~X={_e؂>x?U)]Rls{7ed P]IF54Hpo\h+yi
D	F)[N]|6V+Tq=T(d=cxo=GL)v3jE%z.pum6b66,2{1EL!3FrI;Qox
Bq	pÞnGQE%pJWyM֟AfU.(Nq/^96@~DEvBH!~9?|s=FJ# aM~KNpW4~\+Ə&v^vJr0qSro"l8H]0pF2Akt-}[rd5pmI֡2UTh|-`K]FM#seWV̬6Y~〚͢hVOMt͂6[agl><we9+i]iz>rCyE;wQ.ߍ{
C!D]pmwL~ μj!8#Z~)k }u,EE~v+(J4N
zHfp.ux8c0,xrprrRe*SM
RCx*|Pϩq+5T
)Re@MR
5RMA;MMWj:Eի*MjDVUVYuʭ?q!@;гzv`BϮU'g	?6d`ʍBJE<T.aK~u1=	rhڈz\FN\QɌStxA-AzigŭQZw$̝y9.	r,N~})S)9SWvCrcgߑGƝ+q#{9,֞xN+(Z֪tXa.{	jezif鎧;ň*}s+k.Q @-Bhjbƪ%Tdf:[CԨ.BjQ(ZhjKZRmtj;TvڣJ ^X^Vեޣe!ohgL~pu%zH=1V\0Jr{;T,oWF̒m4D-,Cq]FKIN^hk{߹ʁ2"FýUI]CW}q|[t66?U5~jBmL}1Uߣ]b(ڗKf8C{ʘV]ՙGO(|,iciWT7zYCIeӅ:|#0ԬUtD/*G0mAe,yxXߑ]Ժܞץ!kvRN~*B7MU>LwSp̴wmbێ=pأLhzNW{F=Dg>jRj#Tѕj?mV?ՓtznQ g.u~^,ScEzRDϨ_dl7&6+=Lj+ae?G*3t#Oz1mDLD͒K!RʫͥEz~1%W
{ekrdy+Ö8ȦUf-J˖3̻*;	#V
ȂsB^gOAC8,pXPtAUѬ5 ʼͱ_iddEH;YT^_ΖMF{w1[dMPKǵ:  1  PK  5R            J   com/sun/xml/messaging/saaj/packaging/mime/internet/SharedInputStream.classeJA'A|\yE=augZ̓CT0OG	Vӝ&EYT,tQUm'[
ig]u0I=,S?rHT@~^^	'}tY$\5rٞ(q-GWҼFkqI3z&M	651aO>PKĮ   "  PK  5R            K   com/sun/xml/messaging/saaj/packaging/mime/internet/MimePartDataSource.classTkSI=b:G@"C[1<5Z(UVp03J&*VXZ~V==ĸ⇕陾x'([T}p,Y3L[8$.ZW,X2fŌu
tU"ٲN8~u6`é+T,/t-Б٭p}&/*	mbu-W}CVejWMyQs5ӻAD5|DySm).)yάpI
RQd@?mz[x/ۮF^0̡%U)1+`u d-7-vm\HN_җW>V"ݢg1Sf!ܲ1A98ncEqG`f?:vܱڸIo(xσ]\0{(@`9N[^.{n̘Fޖ2{/$ɛfώcog;HB3ţȫx/u-]+_o5EbIm8Մ9t,~0sx9l)>U؅(_!F8( "F9;qǀD|p>s╅HFO9&B8fkdw{= =1́ɍ̚6"'yC@YzƉfAa$N18~M$;?8&/
uI8d+iZ$ߐomg_#]|(,{:DHO$(|{~RvP<یђfI6hyʲyhoawwd`2sPKfM  q  PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/internet/UniqueValue.classRkoA=
Jmm_Gm61#bwcՄM(㝥&D{{ܹ	$V!dܖ8.㮴)XK V b%H;0D¹|"{ݦ`HV
[px$$]ܬsǐ9چ˰Sջ25K.ovKs9h=a	Ͱ=Ʊ/3LKxdM\៸fr*QDha6CqeK7/u}G/8u$H
?J1L{~:vBêfdk+ǰby	1wM#tz(d(;3ެQOsIai*2oRiÌ;+4pP}Yk"@ 'id
OoD,Y)!\5YdhU	5cDO~YHGa7D
}NH|t{.}e<
kDZ
i6
鼎E,
/$-L\%GڗiPK̳>1    PK  5R            K   com/sun/xml/messaging/saaj/packaging/mime/internet/ContentDisposition.classU]S[U]'	$--Pkn@G)R>R$Gdr/IGu}32ovOquNBf`2ws{9~
@70.#B+3j`a0{a30i`*0j@yh01̌2Qef
|FƜWއ,#fҮiG*f="IYxYY$mөD6SHJײ"+씌؎'"Ęc{9N'@EvFjYfgT@q+9gem5OU=	4=gK4G"V[$/VFNRfLZ	Pz]:g2K>o]D#Iu%LAc!Vx2!qQɒ+4Su=Yl*a@<CLMS%Om>z\A];dhN&P3l\޷9x0R&ԛx
WyO -}-FQuM,≉$0vVJwueA&,tXFi6㶉ȄĒA|bbctT~k22#7&vta~l9uL˔e;	?tVUuV&#@=iﭏ?*]{;au h9),i݁Y/NԓouZ3 78^j?*|/OS6p6¯x']:eC.,Ry
ОBeTeb|	QUf'۷aLule/VNDzu?Pٺ*\+g;,{5"aA;F&9Рs 
h֠+p-c.դ\ܝ\y0PgPN8Rp}yEeh_&\n;([iFV}n"<!%B.N%BtEO׋"eKsyA}ǘDPع\4).9;8fkTB~s%}u@Jyʻÿoo89ňD9ҹ"2X3BSzTm{R]T/(g5|?k+kqa9ݫ|K=*je~d@Cj%|	$TÚ:GoPK5h줻    PK  5R            J   com/sun/xml/messaging/saaj/packaging/mime/internet/MimePullMultipart.classVs]Y&NIqh"ˬqGBmqxFZڕZ'%$G<@?~љ~og(#G鄎Fw=w%^kEO	yZ3Bb7(G!>g
1юBL	G@)8g*2~5	TB٫yQ 6p_
48ߎ#wh%/+D\OstΞ-leJ-]:)׼]]TYWxzGJ%hZ='JnɩԊE+:ov`Ok՜GkZ\ہ[c1+{
Y%˯yBh>Z|۞*vp)V-0Lq' vզ1lW8ċ[x-ǔkw=7Px6OS
rѶ3V+8ՓL9xʮ^݌pN,g`Z1p+a<Erdd@]і|]9	L,?79>8b/y6h"yC))a0o%=GRgaCv];"1h;J5BZQ6"Lk}adWq1Wu݄!<f~X&ɞr%ޗ
L ??2cDח];]ZO_j~.JL_+9y	]L+mK$l}M4+nx){QرIPX9yQ[MM2gݠl tk0Ś-1!")Ub;C℆2x)?{Sݠa6~!QغαІYv	mDu&oޕcR^
+ߌm3}bTصf3fiKhmK
鳳vuP!EZڌ|W246&2u;7ڵD$@޸k@阻
keAcǜ]aiD=X3sNN4&
|~^%]A]r4YDz@|9Pl\??Esz!MBB1RM5}R깊6ôTtlYV*[&bZ[;nƵw//͏>z{1XaJ'Bq
1^gÌ8B)PkcN
5L _H?LQEcb5Oul[Rͷ<Al'APêS#_m3+4Drh0$h5_
;V}BxῩg$#n̸N8F
?D_zw5d/boZyY\D{:lV2fh%p{Q>ZM|D.0_1!l##<9L00!V0G1O_dqOP8.TKzX騮id#B6rkh/AۉG8n`aǐm'$gMЯ30e=2G!{s
zv_wYI2RW>{*밤
0IO'ir8nA<Elr,r5}
ʘ^$)rEL؎X#l5pߌQx;c3Y@:[Wͫ=ePK    PK  5R            N   com/sun/xml/messaging/saaj/packaging/mime/internet/HeaderTokenizer$Token.classRMo@}k'q\RP>W@b!|B*!mR%JL$.Hwv*7q 
C 	
NQ
|}o<3h~=V	y.";*lg>C.}w(X!ă	Jg̏p9icr.r#Ie:PO̽|w_{;*w`4ns7m3O2+ՈGKћC|d"ϒ􍟐{7:̴q#I"(N&~v(HN8ۇ;TRvK}U"-괱%Ҫ$ĶV}Lf a)g8^y%?w
lK*@S ;y%粜I|y'^+/
t«RHW,[_chփc蟲52Pl|vq2mu CLF!eT#|
g26_,:hNfnffܩt_wi_PK۝    PK  5R            H   com/sun/xml/messaging/saaj/packaging/mime/internet/HeaderTokenizer.classWkpSt%]Fؖexe؄\K[XH2uIZM6I3%33HJl!v#BO#NL3IٽI`giaݳ|gzG 	Aͨh¢I1&q7QNbL4qI1LIQI1ZL~ƃ*Lq	?<h	|^4g]xx$9a$Z_"acz&cdL6M*OPLOVLDSxHdY<#GF'<t&jSrJS+eRrvoݴPޝLdz"{DMe_߾jρ^Cd<LPd1FPJOx4n	Ɠ01B^-%MD@`agaT[M'lW"Uɰ;blM*(=@-)N`7S~߷K?r/lN0zF*e?ܙBcFvф.B4k헸$O&+Y`yfy2
GǙSd0uL{_ߢP(&DeF	tLFcyJd'Sr 3#@8ߞd:lFUߕ6a\C;F|` Z4:
miyhX/vl!hZcJwsqa{أq]C+h"D?;3FeÉQ&lDV!ti#"˄'Yҧ<K}bWp4<{`f.-ЮL٘2ݙuX͖V`>Ew+7ui#0-z*%	^hHo549l,MeLQٯ6ɾXQΕxSx3	I$V]
[`P+m9(gfkj0sp:oc65T7Ѐo2ooc;MW؁@J;%D! mRazB#rJl,es[)({]faae;-A5zPjjv,]m3VϣncߗvkLvZb	k#Rh5k#U$ZCL<[z|oxj<c	yǿϣZY.w?cwu6wwEA+a2\ziDs}8گ]ԳD4!+{XS$<,}WzoΘ{ACu/C<TT;vŧ6.НFfPim`}3U~o)I
-3p^PE\UrWGٰ"/FițȡdjWQ51ewU1o{W`4b<gS<JC]Ep*q*zE,I_6j%TN
/ێJbW8$.6߸#wĆۥ
|4Vs(X^t[pc+DqOfk7|u~:/ӟ\V?!oߡ?¿p7>9׿LKDLv\5O|ȃHȋi)>J䩊lTK*QS+-@]HCLôNjJ:Oz;^My6/h3n
갭 mm]{.%ɁxdJ.w<̒B-=׹c~m+EGpPShXB9<
N)SƛXʴ(c95jZ}ySPH|jM|lY;V9Hm%[˧Qzzc?޼\`T
gԃ2E~wS_zqd~g+g	36
γG|^(){T^O_E<vs5\PUZ7g>Ey=m/b-p9p+\{V\XvOÊ9[۾\>~+d?%:8ATa4Q106ң	l#]4^
cE0H'q&x_9%r1Q5ev+;"-y)	H&8ŏاW0Ĺt0G"8ƒS.U|kAɶjvW|ɐ5*dI\:`x;ǸWQg}dU)PK.7    PK  5R            B   com/sun/xml/messaging/saaj/packaging/mime/MessagingException.classSnU]{b%SNАB\3Vϸ#_
$R
aMb	>g}Y{_\{"xUCPpQk7¸!0wNCPy9eY$(uJ*nLjַNjvZ[ 'ش$֮mXFhQ1fRqoێBҨNntjUf9e3cFӬ5f'֣EL%TWv[4E5#$$lCa[F"z	3S8wgoIX޶VF...E=1y,e& 䚳b,lHy^iMWq"nݴZ=ph*U[y^Ĕ8bBW`S* 	gZ<^ڌ[O㶓ӆtm:긆C`rq	8xN#fi	36T&amUJt{)3vB<?D/%299o҂`r
x	a;!3(S}N"\`LCBzz'q}dV23䧀i_@{t*m^?A<}x}lM@Jÿ|ۈФXr_ Ktn^f((+gWtGq"9ஐB*=Bf꨺%Z 3ѡ=h7R^R<dR{ރ.1e#`,xH&:*TXз_H|n5o[6Xk57Fx9E(q|O9#+|o<
rsdIaDI=(:2!jcnb+x1%8\*PȤyPT+Z:<xI-Ă}7CyePK:  j  PK  5R            6   com/sun/xml/messaging/saaj/packaging/mime/Header.classE10CRR1 *B$-jZ8 Bɟ
`L"H#;-0_,%?,W)*HC̶,F]aC5_ulN;]4
?vZ@^Q,0B>IPK'      PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/util/QPEncoderStream.classToU~~_|g:tttHalcjYbAt[kg/201L$f$ x#1?yOme11M^_ h` u8B@a#Q^>cr 葽{wPɗ
1ȵrt:SgByx2h%վ!xfʀ|OW6-6z=*Jy\̤&v5`.#$LH;kt*w6ŮlZlx0-Uѩ\t"S*Ʋh)ePWDv"4PabMOYBv_-f|70H޽<:JeeFs25Jg&BETUh5IЬ}s|XQ
X٪"Ή'cW9Bd-h6kPoc VmlGT`}9b6`'mM`#68Y6-g57Px;T?1@{ ($%2Ink5 C%6Rh܇1%`
XF=,5ޞ&ޢdۃxTi%D\6QZ"-*~e? ^tjU%^kHx&lb\Y>Ҹκض 
˘{
m:κĴv2w-<fIvLDP2Bן0?X]T->=i1[,2!f5\ɷ(qJllq87"0g#,d-? %0-fXaP[%5:ۭa4Ubha;[w{v$\eGrxe+K}0ҥ(bF\ G&^u%Lq-FM4gaao{'Xs[7H yZ!78~j_vU$Ji}l.yrA}U¦XrG٫!#Re?X9DM.\$\<'/<wM^hO
MuݚԖC<G|-5Kq|I|W'k\7xr^cu~yn.MgnDگJ&yn>>Gu]QWwT{IKM$ݪ5DҫIڗH* z~O U'1zT/V}Ġ:F\!5!{t;u
PKY&ER  
	  PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/util/LineInputStream.classTKoU=מc'MLC%uƦ54i]hڂT
ɸ`{yD`,Q!%b"U?	iehvȚo8|wד BYGi8&M^aLh0u7uᄆzkz
s^ˋmyUih6
\951'L*͚|dݘO]-yUoZaܲV
醡}kݶB^ڶy6kőװd$=i	{Q'A
29% *Z\(7yj^Ho6"kvC^)
}#oNqW<y=.[gяYdїCY37pF=iYw8I
SYySM`YO_{;R)KT0PW{5\VIA`:~{Uc:Te:2sv#vgf.L3$7 pRz\sD'ΘBN m? Ίd10=иUĵ7#斄%%YR̗X
Hm@r2R}?<)X.Y-H݃5eP~ݭG*{ꢲXR$d1ibY$"Ǜ;+tUq#$;B,cvǚ)L#x9\_%,*,&f	§;X:>O-ظ#ΰ(RR]U<ؕ[g8ˌK͏|F:^Jū̲#kx		.)
z' cX{u&)lrmx)PK30a  T  PK  5R            ?   com/sun/xml/messaging/saaj/packaging/mime/util/OutputUtil.classSNQ]v8@UVEA{QFX$"	I44/>I5~`eim1={:g4Lh
injȣ MQC	z-I;j>r-]H.:U'\ʪ+x23X-6|o'	Q5= 0Q3gWl:k	2	՝v||nͰΦr+fm+K"j&~#Ȝ)=<Z@Ŕ_q+u6)nȬ7Pjrbj~nk;)uOG#:1bZ]踇Ys:池tXou]}6m^`}-!y5~x]
2zaU`,!*1C%S~Bf!NĐMFɫ[}al^kĻ}ӎoB#RUM%E
%Vf;/M(Kk&H7?ʁh`)isgErD+סkSH_bߡ
˞&[&7K/eIBm"]\S98µ)EħN<ݻwPOh/PKz]>    PK  5R            H   com/sun/xml/messaging/saaj/packaging/mime/util/BASE64EncoderStream.classkpWgofِ		!$-]r$$lMX;*"VA?T-a:j:ަvC?K?89ds眓4	G}x  أѩWcدq@wp!]}[WbN_1գ󩜂\.ez)vMƒOD29=k/mS\BU]șH(s`.$wl<ڛ>%|r4&RڛF"]xVa_o4eT2JƲx<5F"'Cg2x"Թg+XƖWp\GSXnf9:d1QqFѱ12K)L_dv5MT pل(
h"DO̸!c㎧6p-t`*.:e
ho0DcqV}^/ݏ*c(E+u
E~4bk?VJR$]2KP6ӿ
+=:)</z˕AJɲ:p^C^+P}o+5ƆD%LzZA)CԸT5hws7,L6XnV-vE裳U@58kڥf4K9FsϺ/N-8}u+VaG*S3+ѵ9`© ?]ɸvo@᪎.Ymтv}zi{6"~\#KClqxAY0{u;8^꾏qY__S3`fw9a;r܄ԲW7eޓXSL$#e-)wIn]l79IYL.7xRfjym~ѪCU cAZtZ#yTiR<sPXUw6:ۜz7Q}^:.43t5%
Rrad]ږVfpKt_ňmP*۫SzF<=`np7;
l6MZa\d>z<f|<d6~Ii| 4.s>+fWE/u\Û2WT%0:5Ճ؏51otPLq~ٽ;o^_qob@aNjoc6N	":Rxzih`2܁sO54+TO;TcqXiv4b"VCfHB9?e&{<&-;.-Q:}]B*ؘvkέ)	ٷy_^y7z7p~yK7?	Sd3^/9/x~_x
-m^yx'Շ?Ťx!mu8nuP$Eާ1d^P}N:7"v۽!&T泩;cUZ<VUj;vM:xw#nӉx6wߩEFy7as8얽a[5JpX< H>9D.^/}d&K?Y"9J Y&C
&Y!+=dUY%r%kȇd\#Z I\/'Z9E>,	I$EI(d@NAɐ$KnY/y2$g9Kn)r#IIfBVr4ۥ!Ni!w6Uml !oD_<i'oPKz3I  L
  PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/util/QPDecoderStream.classTKoUg&8v2y88nJ	8i)Fii4:v&~W
XR@,h"X! Ѵ*aP*|w<B	!s9<׷? 8t p,Јfˋr	%,oORz:dLލ8㔀/crYh̬U)*I`;]U󺙰TTuN2Tqhl5sf&Ǔb͛e[ޡ\LOTZ>[bV\MVع,dkbKJlY&0P7ϙ]:],MZ*9v@`%DV vY*:&d*%+2\si	YJŲcչ\hd|;yL5mKH.T+W3$/ :0)pZhC{DuLу N㌎ UI^8^CęchkD<c)9dp<z՘k5IORKl-,WTmFqp|?-|p>֔TYn[e> ;݁׾߆WnC6 bqIgnSc+ 
[0%7k<k؆8iIyWhψ@slmeVنOFjcli,j6o5B.{fܳkCϚORUQ0"PlA1{	[Yt
I$3'11Lc)c&a	籌!
_;x
7E`sc<qq5:ٲv2ap(mCۺ^OLij}u $
=$vůW<`hzHGϸS%]:o>aSdQF4V9DoDBP4^	ksboaFPfpc
OܼĠp{7LVRҠ0n
CT7(+¼a<ｐ$
(lD[/#<><_=~	PK&iF  ;  PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/util/UUDecoderStream.classU[pWJ:ȵS;qBRɎ:6N\[;u-^Kk{ݐVŸ-[@ۼd 34tҖ&x`x2<1wv׊j( >WC >I2,.Ɉd~-%"dLqygp
.-IFJdUȇPPaEIJx@TL_`RЄ)l_
`:aIW3*Pz=?'zv,1`ح|R|=QPy*|ٔ1!Yc^ ?χ)o
M2b)ȤXh#QS<3fH,35FO6_3̚V@cjۏp>ZʌA}$mKzgRرF
lcdUX4U"qOϻB&F2sY"Q'{z$HRA&͍J6hATJ|`Z;HfQQ;WKdЖFMGfssùBF*`EU<ʴXcm̤HJYK֘!rB8lJEq5$ЦfI:S.
Hcoޢ;4܅~
p}دa/T|MÝ1
qi1	MF+i=k6@:8qOI
Oihx	layƺKf~5y
/OzQ`MY,Ri@#teBNn
;J ,V˗.ۘ/K)>2
U/:ՌYvAE+YmMet+9n'zVrdK#E`CwHe"k8yC}5Wnfi/`喂0fs˶"l"O Yyd+^fwe[.weop
B#$OP/AļHDybw^}t}؊7a=66"h=hpV;6$1ٝ|X&Ep#9x@$v	!~ku!"	e]uXƳR OGЂ;lcq;?ߨޱClD\DoQT"JyDcehC>XQΡө\@}9G|3gqaZDh#T~n3 68 |E#ard|\%Ltc
δAKmۍxQ
k?O}wfGV2o5/t#[_SZ)J
/זjFԋ>WnQNj߬
(R\E
³=H#?/WrE2zWQsC.a{q[xq[hGI0t	77VF.el:ژ¦Hq"RqJa!=n{Ki3|/{e<ŋ4V",=7LaZ(DTޯi㇢_
ϫYL2
ygy<&b1a&e|2mwIS}{ϡ
laK*oQt$NEiy\G6'
;ff:}+nKcO盨tįNtu?J?Q7.a?ߧ<)}aqwXy:
kyv79ImYwr1r=fm;}x3=x?`esڮRӏ᧘y\/-sM(honV| bkQ]㸇^瘻GQ1V_HaȮCK#Nڃm?l[8-Yl
AB_=;PKge  
  PK  5R            C   com/sun/xml/messaging/saaj/packaging/mime/util/QEncoderStream.classT]sU~~dt[ҴXJivbQĉM!´jnװfvF^zrn.ğ=' {~<??p,NۍC[1_e.N˅82x;(.jxGûvu<fHoٟVkV5ly~mazڕJi\%c~$^Xd8{UNH%\dPV=XݵNcmmػui<GxNаoԭn5emմznkV'Uߡ>~g9Wc]O5=E!n
(.i@r`gJ}m^5)Ysʮ_o62]i{@]t;rrWNq#2	0?Oݚ1cґ _XqKFagql쥅|}ɗ_}}-CP/}x/FRHybV@%5s+YIa!qȊs=ŞIZG"e_7$GͱPA'Ql!hB9y%# a	1F4.u5hx];:7$}+8 cy#1Ď!rQ#q.̟1"=tP}4xs
, <	T Eг26^#6s@q(tTũ42NrxQ5y^I)擻3Sg2T}6ϤT=v ɔt vw}zkԣBC\'eRkfK:{7"$9r]$'1aC9,fCSIU͋"cОAg)ÞaO!=Q>i1k` { % K츐sRNfPKw1    PK  5R            C   com/sun/xml/messaging/saaj/packaging/mime/util/QDecoderStream.classTNQn[:elV(h[Q[({2(H$$ʥLbgN
>o#|c<wڠ,!N3ggιח ư"F`@=ܗRBE)
`$]*x(G**S0[x3݉>u]xy5Nn0]%'lY1uS$K[)wƐFc劭XE2e'=^ⅷ5W<QqfU!L$
yWs-rJ[
fMa@/E4=KuAWN-B5"khhEnPXM4L`R'2@BiOzOWDj˂
Zr]Ǎ;/x1!Y
sba0ss	/6Nd X`.`/H{HeӰ=[ak楒in'rǙN^0'Lފ#qѕ|"Si3/K>F! ͐ N
};
@'Ik^Ļ,af53BN}B`&}}p4~N)Cهuhh3VNl y6*4bU4ڷU%YBѦ/0N	\$7E8ӄ=CY+,)n=~_"xI^'	hep
LwPKa|    PK  5R            D   com/sun/xml/messaging/saaj/packaging/mime/util/UUEncoderStream.classUoUfwvgwҲ }hElaUj} [CK-n0/&>cT&6sgݖjLls=ww\b
1tc"J#"&EL8*."qLq'ԎafD5Њ	s1N83f#'"A^>6P0P9%
9G6aR,9s<-SaiJ͟γ\agnޭhؘB@RVع=R-n_8CLV!2vv.z[ְ{4Sȥ|z>Mr>mN36tfjEՉiHӕ$z);,>?Ζ
e\9ʬpX	ﳋ~bXqg¯Ug%!ex2O'eZ6Z(܉zvɮQ$uc#aG{E'b>+TKg+T׭hV	CX#hB;ĝHdxc6񄈽"}J&kh[%
V6`f@p8O&ʨ2?ଉy<uǜ7گc*NyE\m.-W
&?a6/ǑJ31rFGzE)m`nQHorեjQv e/wCR%Vo^lsE JPH ʷVwu>Dq<x1O4!P}>K\7Y%"t!wakCdF[aP<ļ-Ň{76CTgg!/H<ɓW:!I7}4\>ה&.oWB\ۃzBﺄ6+ՙOl!zA._MUV{m\7b\E#Bm{^ݎ*h;T;GAw$X=z}zRԏ5VyL5M;ʏ%rAeǺ5y~x-z|ˇ[KL52#L9#?,0"j"S';\ƈhF8!WKkhY!˹˱yN\-y`zP>?r˲{ȦUc*ڕ3vߝe&xӇo9QwR!"UN
FSWnr	5lѨ֍RC{
:-woeyGEfz^6z#PSBc3۽u}li4]Wk_g7gTpO\ha(O~	G$]5ܚ~	e6mێ6ayݶaS0@G<1c>~Bq>޲B34߱sCH$t/CMzI7<icE>хK)ߍp~i|f+o
>"Ok3W>Ǣ$ :u[o-e`8βUfkP1C̡z?-ORA޴i1qbѴE,M>AG[Yv3R67PKU[  z  PK  5R            C   com/sun/xml/messaging/saaj/packaging/mime/util/BEncoderStream.classN1r@AEagb`bc$nc0!Æeh821|!7L\ >X
1iy{l`58L҈h`:AHB!gTx:PϙsXi.'șW
ڪR0=mi>/@94]AӀ!1n:4¦k>1A%Ag_Y=}9 ow&D:ut}_) 6SF}g@_	}jԾAʿ̤Yic15@I!*@S )Ӻ[g:, 9Id()4k:	<}bO23(]}V| PKlj  |  PK  5R            H   com/sun/xml/messaging/saaj/packaging/mime/util/BASE64DecoderStream.classVkl~'9	qP8!&4 Kh+8C96KJW)ӴMʦM݀2m*&El?cU6kݺ?5iU9焌4issy_ ;.t)!<[-zt[x3x=jUЧ߃E8*[8dᰀ9eWS1%`ē1tlH$m(Qh*y2mƢؑ9{fk<϶TtPW2d3HKmdl_nd $()NE#H&y
tvGS#\246FG#cHx(p#X('Bzv4"AWM-Pؓսt>ώh,ƪ9ե(x{bjHa"F"N#̉\:dcC*=IIżTGR Mb>t&3kөQG
wk4'ӓeq!iP+XJ/
%
ыZx5b>+Kli"Bhlt	R7
TdRx:T!V1W^|+8Q1
xL@@Oҹl,wZ(5#t,IyZj?$ߘol	| O+*Lh"4Ŝ=R%ۣBM|!5˂uAMh
\A&㪭ҶfkaЂ18TU)wq+*)-8ޠ^/8
SM.;܀!(M%L-ׂ8ZC;n2;!G:
LPOE&whUkt5>"jS͆vE>,*fJ>Ϙťٷ}" P$#̄?GDd745"=[]͞5r_/Rɰ5
ᚁK/Cܧz;uy9Ӗ/Ȏw/kgb+ݩr=sJ(^UG[`<o~D]q9s8ЯE7
Oh
))L{!%Qm὆Ł&<hFO4JLS[~;X	fƫ'{II]`(Us#T-;^es惺#tIW-J|
n/0Y_a=ej_f5}үϱvc3^A<4.EU\[}p5u7W?1-X2cזh"lL7I/3]KP0c3(<%D}S-:Rn0[ɴ|MYgerjci*U.dx`mtH3謲-W|棕}<VAP8!f.2dm!/#Mҟ2o/~<
]x]70߳Q#>?9U\?['?lFw[hsf'lTc6E6k0eL4p;M
XdC)Ć?&W[eqKnm]r[_X}aCn/l}aEn[vG>E\$^X(~b|(3,T^b#d?\ .2L\*+eĀ q!b<F\!8q<N\%O	j9B|B&52EibP~X'3z9J\##IZ1b#/)zA6:FD$7
'e3En$M6.[d:ocz,JwTK5ݹ2J9\_9lsNI)|Z|gė9gī^b{@\`gvH3O3ԗt7PK!5JS    PK  5R            A   com/sun/xml/messaging/saaj/packaging/mime/util/ASCIIUtility.classVYlW=/{lcHH2	!IC$fiB,4mL	:CB*UR*eRTUTj6}RϪJU-͝s{OO`A,F=~tQ*ypI"RD ~go8 Sq0"ᐊACGp4cr(b@ELJZVOm]I
VܓMv1Lq{*f{
ےI2[cD8MGpd!+9H8mĎ^Vg+nD=,T?m3thEѺ7n%,N	iZCVٸ(oR1l.y lc%-Е	X'VSγiJ%鷺pXGF8nAngӦ6#$ DTԩ!i;嘜-}>CD.2R9{c|ށ\|+&Y%)\&)6[yzHYg:TŠ
)v3m11mla
{EZɔce+c:]3wZR3JFP*%ѹۙ3U
fӘCb((V϶4m"+g/ė&6-
HkN`ȳ$ HVWUCH!Ra۳Y:FLOu۩/jsuf#Fs3i5T^Big[sRrV6HMpm9<s^yZ,nVYY۰7bȏW,|[˧!Q8{P躄V(焥L޻˱LP1}ŞP{tţ{+u_Uu|S5]A{}z'Ơqݯ^\X{z@\
pϻP}e̧q6Z798͞fZ3+Z`PW&?1罀ER9v>M1۹!\>.@U[XXR4)`#j	hx
mh^=`ۑ.nA;Ρa>uW=z 7[sDȝUat\mx%Qֹ2hUZ<d\kȶ8(ǯ]=P5-xB'*X.*D	B(w=w돜Sԫ*Vn7歾=FXɷM>GQ_roNP2̟$5*w%
/
.!:%>%E!bݕ%@Qֳ؊KLH*6	Fn6i}Fg	he-:6Ru׿#ۓ]ܤ)
rV>ibی=Ku!wI=KeK@s(2?{n{6pw?.m#=L^ED/_ne2	kyl(-mo ;
PF|3ZtӭlK"G E]_rWU\st_\enK6Dk5xKr%;U|?	rv|
iPKNf*  
  PK  5R            2   com/sun/xml/messaging/saaj/SOAPExceptionImpl.classT]SU~6$l,BC!imZ?Hv)
Ub>lh8cغl6ㅖvh;錿q|lB}yy%YlK	%$|ܽ">cQB">$aGN`)e܌㖄mn֪*bMĺXUk5tP+ZVڳ/_s]@_pO@dRtza*[U͸:˨7LYl}(j:45A_e
G+f t>Mű)xLkZuv]ճ*N5?I1gMJ8/ͣU?_n"6ĉl<5uJ2@
qulʎѭF2jf0ܮדm[w=_9eWMw9J9A[(m2>AAF+[1V*a5'ٶr^:\k-՝\]_ꖓk0ʘywdT0KÒJw+$[2tgps"SgwI7-"`{2XGạL3RSStèw{#ELF@O,l@U7D:GgQ(H@E<ً&K.+
gE(j}=fTc^Oŭ7&qҷ|;ÑG:uv7kXUYq'}U?餢"%^k]'{#x2H<qZvx8տR~EOB<PHQ041:1i80.b˘UnU"K'4OzY}#JNz@~*цJUsw~Jncl3$ |	_a_SߐԷw:&~MuD"{&OR熼TRϐL
bk^i =F 1PY_Vu1BպLר'6Rg~~Bc; gAYC.tRMU|ճݪh8UjPKGy  s  PK  5R            3   com/sun/xml/messaging/saaj/LazyEnvelopeSource.class}QNA
Oj7n&x'Dvɒ2 i ?؋U]/O PPaOCý4ahx5Bk5K7	U57$l'|ӸD(>nwfh+bkayX'RswB]CحS*%fP\Տ7nĴcFGA(maڊ:4CO={33q?1oT9h?!l~6;c#_)YYS>G!Y'肠99)
fJXYFY"T^PKV1    PK  5R            ;   META-INF/maven/com.sun.xml.messaging.saaj/saaj-impl/pom.xmlks۸ɇ6cs׹؞Q':m-y (|Oيk홻b7`e yF-
3:Ǉ1(SDCgDQi#&%(B@c#*/P $#>P<_kX/@pn>$EL*cB3r\hlݒK,$2JE4db^Jbj<eb<bsF1zcI,eM
uZ>'/%&qɚ/OL גК7h4 1 RRXK , ̀^K	BB!X"!'s*A2̛26ldoKBnXDh`0JVX.`W)cgτ1t8nʜi_gdNޑ[@#̀zfN"tT	k+PcjJ1EWuA7}H%Q#
[$8{
+'zl_l	N,
VA#0 xEbgh>EƂ΁1&TR{iKBAA2si+ɐå!]b4Z
XEf tԶQ}Ay4͸{YstM]d}
<o`*T새Z:5,[eI$,(%Xv-Bp9LW.ivҸ| R1aXfUV_PMnr~i~rrq02$E"v
[>p׌{NC2v)MnZn2=ٌNO0"D'up[3BKkE g\߄EuS=ykL=bOX88:I*оLS[S2ӽ@5jFlpmyRqX8Pş@ľPowCO㡊YtBǟ#'˸}D=[g'@Z?&~X8>[o~st̀p673 UDi>rb>
R"v;Y?3Fe],zL7yaϠ4ɴr;)(m_ƻ$v4s'뺔-O^He6m	
ȶtW]E[pN@ЫT<{0s+"wV]7sPk
_}Zbav~vɾ8wpFR=
 i֝q%tgPBUM̰A*T:4{CZߩUZ{(VT<:b![[/tG	L.<*"AKyW
;}Qo"sGAa=\tWV7I7O6Q֤q}(i:wPiWn˭#異eõS
Դȝ@=*37]onZ`硸4JWOM?{6]%DG[_X+ 	.zgc廡ܕHxC5ZK7FR]^Wt;B"(Zf{
-}]6:8,N%w|}6/ZR9&5A6[l1"M6@ތQV(7I_:=YqlHJִZyl|YRQhb}Jzyݢ1gQW%Uw|:u):2q`<w}a˹RỏTTR5` =ˠm/l^R]$Nbm:̯+]0
o;J,w@>9d'XqB
<N?3λo[[|ePhrRW!E*T)!Z]ua]7cjY\qTb&8I[LMzZef	[KSٮtiOs2ۤZ%{a8mfگ,P#jkca-EҫItc"m#\ i88ZHHy
NɴR+-h$
i3$ǟhz9ek|_LIKop_<Bn0Z~ܜoR|=<..~Nz
Ԡ0r%]`^Ǖ6COg0dMZ^]PQ	$B'*jQ3RX6)syrMs{rrn|Cv&.?j lT7t`V$J6|kdbeOZ<_Y^0xHP}Ȏ<T=U`'t_F}R	}?V>ԷLF}i) vROr3Fpr;PKek4	  ==  PK  5R            B   META-INF/maven/com.sun.xml.messaging.saaj/saaj-impl/pom.propertiesK,*LKL.L-NL-J//- $U'gqgs PKyEE   F   PK  5R               module-info.classTV@#rIA(7QAE
Z]C;t4IWʛ'Q.L@؇{99'`_zP-E?R`C6xI|W枌"Qt"(hg
O3d5u_DQFDhj-E[60"(
D*s&z\la:1׫ "oIc2610wñoᤱ	a!q>&n*Ţfl|ٕ~lU9h8~t{<y	o{uKJ!UI3͗0\G"=ucc`AwﲢrPT^dtNhTK\U[8ZoUMÙՁБh@(VwMg򪆕jl_5n/3+.JVWJnѝ$ɺe/iwf%*Υ*N]
DSLf7+c-C:&R]|ZYR|_ջoXl3'k;+WwG{s?%;*Гa^neIR*n׆/P6:;уYCLc,BXmi_Sl%+_khqR}5vk8q[;)6CYg(b-]R$PK^T    PK   5R-"|  Y
                  META-INF/MANIFEST.MF  PK
 
    5R            	               META-INF/PK
 
    5R                           META-INF/services/PK
 
    5R                           com/PK
 
    5R                         ;  com/sun/PK
 
    5R                         a  com/sun/xml/PK
 
    5R                           com/sun/xml/messaging/PK
 
    5R                           com/sun/xml/messaging/saaj/PK
 
    5R            "               com/sun/xml/messaging/saaj/client/PK
 
    5R            &             8  com/sun/xml/messaging/saaj/client/p2p/PK
 
    5R                          |  com/sun/xml/messaging/saaj/soap/PK
 
    5R            %               com/sun/xml/messaging/saaj/soap/impl/PK
 
    5R            %               com/sun/xml/messaging/saaj/soap/name/PK
 
    5R            '             @  com/sun/xml/messaging/saaj/soap/ver1_1/PK
 
    5R            '               com/sun/xml/messaging/saaj/soap/ver1_2/PK
 
    5R            (               com/sun/xml/messaging/saaj/soap/dynamic/PK
 
    5R                            com/sun/xml/messaging/saaj/util/PK
 
    5R            %             N  com/sun/xml/messaging/saaj/util/stax/PK
 
    5R            *               com/sun/xml/messaging/saaj/util/transform/PK
 
    5R            %               com/sun/xml/messaging/saaj/packaging/PK
 
    5R            *               com/sun/xml/messaging/saaj/packaging/mime/PK
 
    5R            3             d  com/sun/xml/messaging/saaj/packaging/mime/internet/PK
 
    5R            /               com/sun/xml/messaging/saaj/packaging/mime/util/PK
 
    5R                         	  META-INF/maven/PK
 
    5R            *             /	  META-INF/maven/com.sun.xml.messaging.saaj/PK
 
    5R            4             w	  META-INF/maven/com.sun.xml.messaging.saaj/saaj-impl/PK   5Ry;H      /             	  META-INF/services/javax.xml.soap.MessageFactoryPK   5R (5   3   0             n
  META-INF/services/javax.xml.soap.SAAJMetaFactoryPK   5R	r A   ?   6               META-INF/services/javax.xml.soap.SOAPConnectionFactoryPK   5R-@D   t   ,               META-INF/services/javax.xml.soap.SOAPFactoryPK   5Rv,  
               D  META-INF/LICENSE.mdPK   5RnhX  =               b  META-INF/NOTICE.mdPK   5RX  T  =               com/sun/xml/messaging/saaj/client/p2p/LocalStrings.propertiesPK   5R9RJ    @               com/sun/xml/messaging/saaj/client/p2p/LocalStrings_de.propertiesPK   5RAZU  5  @               com/sun/xml/messaging/saaj/client/p2p/LocalStrings_es.propertiesPK   5R=^    @             ~"  com/sun/xml/messaging/saaj/client/p2p/LocalStrings_fr.propertiesPK   5RZZ5    @             J&  com/sun/xml/messaging/saaj/client/p2p/LocalStrings_it.propertiesPK   5Rӧ)  b
  @             )  com/sun/xml/messaging/saaj/client/p2p/LocalStrings_ja.propertiesPK   5R)ӕ  	  @             ;.  com/sun/xml/messaging/saaj/client/p2p/LocalStrings_ko.propertiesPK   5R>K    C             x2  com/sun/xml/messaging/saaj/client/p2p/LocalStrings_pt_BR.propertiesPK   5RF   |  C             46  com/sun/xml/messaging/saaj/client/p2p/LocalStrings_zh_CN.propertiesPK   5R'ʆ    C             3:  com/sun/xml/messaging/saaj/client/p2p/LocalStrings_zh_TW.propertiesPK   5Rj\  13  >             *>  com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnection.classPK   5RCvG    E             \X  com/sun/xml/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.classPK   5ROB(    B             Z  com/sun/xml/messaging/saaj/soap/ContextClassloaderLocal.propertiesPK   5R^d?	  ~  7             [  com/sun/xml/messaging/saaj/soap/LocalStrings.propertiesPK   5Rأ1wV
  !  :             Re  com/sun/xml/messaging/saaj/soap/LocalStrings_de.propertiesPK   5Ru=
  !  :             p  com/sun/xml/messaging/saaj/soap/LocalStrings_es.propertiesPK   5RuF
  y#  :             z  com/sun/xml/messaging/saaj/soap/LocalStrings_fr.propertiesPK   5R@I	  $!  :             c  com/sun/xml/messaging/saaj/soap/LocalStrings_it.propertiesPK   5R_  a6  :             ʏ  com/sun/xml/messaging/saaj/soap/LocalStrings_ja.propertiesPK   5R)ͩp  3  :               com/sun/xml/messaging/saaj/soap/LocalStrings_ko.propertiesPK   5RnF5$
  "  =               com/sun/xml/messaging/saaj/soap/LocalStrings_pt_BR.propertiesPK   5Rij
  v%  =               com/sun/xml/messaging/saaj/soap/LocalStrings_zh_CN.propertiesPK   5R&*
  &  =             ս  com/sun/xml/messaging/saaj/soap/LocalStrings_zh_TW.propertiesPK   5RE5    <             )  com/sun/xml/messaging/saaj/soap/impl/LocalStrings.propertiesPK   5R6r  >  ?             m  com/sun/xml/messaging/saaj/soap/impl/LocalStrings_de.propertiesPK   5RW2#o    ?               com/sun/xml/messaging/saaj/soap/impl/LocalStrings_es.propertiesPK   5RCW    ?               com/sun/xml/messaging/saaj/soap/impl/LocalStrings_fr.propertiesPK   5RBz    ?               com/sun/xml/messaging/saaj/soap/impl/LocalStrings_it.propertiesPK   5Ro~  #  ?               com/sun/xml/messaging/saaj/soap/impl/LocalStrings_ja.propertiesPK   5RQCg  G!  ?               com/sun/xml/messaging/saaj/soap/impl/LocalStrings_ko.propertiesPK   5RN    B             ^ com/sun/xml/messaging/saaj/soap/impl/LocalStrings_pt_BR.propertiesPK   5RfS     B             S
 com/sun/xml/messaging/saaj/soap/impl/LocalStrings_zh_CN.propertiesPK   5RF    B              com/sun/xml/messaging/saaj/soap/impl/LocalStrings_zh_TW.propertiesPK   5R=K  f  <             # com/sun/xml/messaging/saaj/soap/impl/HeaderElementImpl.classPK   5R07  m  8             ! com/sun/xml/messaging/saaj/soap/impl/ElementImpl$1.classPK   5RD0O    8             u$ com/sun/xml/messaging/saaj/soap/impl/ElementImpl$2.classPK   5R/j4  9	  8             *) com/sun/xml/messaging/saaj/soap/impl/ElementImpl$3.classPK   5Rxd    8             (. com/sun/xml/messaging/saaj/soap/impl/ElementImpl$4.classPK   5R+I    8             2 com/sun/xml/messaging/saaj/soap/impl/ElementImpl$5.classPK   5RƾD  x  G             x7 com/sun/xml/messaging/saaj/soap/impl/ElementImpl$AttributeManager.classPK   5RY    8             1; com/sun/xml/messaging/saaj/soap/impl/ElementImpl$6.classPK   5Rh~s    8             @ com/sun/xml/messaging/saaj/soap/impl/ElementImpl$7.classPK   5Rw
8  ׎  6             D com/sun/xml/messaging/saaj/soap/impl/ElementImpl.classPK   5RuϓS  )  3             h} com/sun/xml/messaging/saaj/soap/impl/TextImpl.classPK   5RN   6  7              com/sun/xml/messaging/saaj/soap/impl/NodeListImpl.classPK   5Rjii  J  ;              com/sun/xml/messaging/saaj/soap/impl/FaultElementImpl.classPK   5R!  5  :              com/sun/xml/messaging/saaj/soap/impl/BodyElementImpl.classPK   5R  )  5              com/sun/xml/messaging/saaj/soap/impl/HeaderImpl.classPK   5R$C    ;             A com/sun/xml/messaging/saaj/soap/impl/NamedNodeMapImpl.classPK   5R`=  '  4              com/sun/xml/messaging/saaj/soap/impl/FaultImpl.classPK   5Ry  ,  7              com/sun/xml/messaging/saaj/soap/impl/DetailImpl$1.classPK   5R(\  ,  5              com/sun/xml/messaging/saaj/soap/impl/DetailImpl.classPK   5Rr3    3             ] com/sun/xml/messaging/saaj/soap/impl/AttrImpl.classPK   5R21m  4  3              com/sun/xml/messaging/saaj/soap/impl/BodyImpl.classPK   5RLjj    :              com/sun/xml/messaging/saaj/soap/impl/SOAPCommentImpl.classPK   5Rg     :              com/sun/xml/messaging/saaj/soap/impl/DetailEntryImpl.classPK   5R4G  r  9              com/sun/xml/messaging/saaj/soap/impl/ElementFactory.classPK   5RY
9    7             7 com/sun/xml/messaging/saaj/soap/impl/SOAPTextImpl.classPK   5R*    8             6 com/sun/xml/messaging/saaj/soap/impl/TreeException.classPK   5R0D    9              com/sun/xml/messaging/saaj/soap/impl/EnvelopeImpl$1.classPK   5R~H  1  7              com/sun/xml/messaging/saaj/soap/impl/EnvelopeImpl.classPK   5RPjE  {  4             
 com/sun/xml/messaging/saaj/soap/impl/CDATAImpl.classPK   5R}s  _  <              com/sun/xml/messaging/saaj/soap/name/LocalStrings.propertiesPK   5R7  v  ?              com/sun/xml/messaging/saaj/soap/name/LocalStrings_de.propertiesPK   5Rf  t  ?              com/sun/xml/messaging/saaj/soap/name/LocalStrings_es.propertiesPK   5R^°    ?              com/sun/xml/messaging/saaj/soap/name/LocalStrings_fr.propertiesPK   5R?J  l  ?              com/sun/xml/messaging/saaj/soap/name/LocalStrings_it.propertiesPK   5R$j    ?              com/sun/xml/messaging/saaj/soap/name/LocalStrings_ja.propertiesPK   5RZ7+    ?             % com/sun/xml/messaging/saaj/soap/name/LocalStrings_ko.propertiesPK   5R^Q*    B             e! com/sun/xml/messaging/saaj/soap/name/LocalStrings_pt_BR.propertiesPK   5R$    B             ~# com/sun/xml/messaging/saaj/soap/name/LocalStrings_zh_CN.propertiesPK   5RX    B             % com/sun/xml/messaging/saaj/soap/name/LocalStrings_zh_TW.propertiesPK   5RQZ  =  ?             ' com/sun/xml/messaging/saaj/soap/name/NameImpl$SOAP1_1Name.classPK   5R_זN    C             ,* com/sun/xml/messaging/saaj/soap/name/NameImpl$Envelope1_1Name.classPK   5RDL  w  A             + com/sun/xml/messaging/saaj/soap/name/NameImpl$Header1_1Name.classPK   5Rf`J  o  ?             - com/sun/xml/messaging/saaj/soap/name/NameImpl$Body1_1Name.classPK   5R?(     @             ]/ com/sun/xml/messaging/saaj/soap/name/NameImpl$Fault1_1Name.classPK   5RWb    A             1 com/sun/xml/messaging/saaj/soap/name/NameImpl$Detail1_1Name.classPK   5RLCm    G             s3 com/sun/xml/messaging/saaj/soap/name/NameImpl$FaultElement1_1Name.classPK   5R)  X  ?             U5 com/sun/xml/messaging/saaj/soap/name/NameImpl$SOAP1_2Name.classPK   5R}L    C             7 com/sun/xml/messaging/saaj/soap/name/NameImpl$Envelope1_2Name.classPK   5RUDJ  w  A             i9 com/sun/xml/messaging/saaj/soap/name/NameImpl$Header1_2Name.classPK   5R
%rH  o  ?             "; com/sun/xml/messaging/saaj/soap/name/NameImpl$Body1_2Name.classPK   5R]    @             < com/sun/xml/messaging/saaj/soap/name/NameImpl$Fault1_2Name.classPK   5R3  [  H             K? com/sun/xml/messaging/saaj/soap/name/NameImpl$NotUnderstood1_2Name.classPK   5R.Y  C  B             A com/sun/xml/messaging/saaj/soap/name/NameImpl$Upgrade1_2Name.classPK   5R^*  k  L             	D com/sun/xml/messaging/saaj/soap/name/NameImpl$SupportedEnvelope1_2Name.classPK   5RuG  w  F             uF com/sun/xml/messaging/saaj/soap/name/NameImpl$CodeSubcode1_2Name.classPK   5RlΟ  (  3             0H com/sun/xml/messaging/saaj/soap/name/NameImpl.classPK   5RyI  j  >             0X com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings.propertiesPK   5Rv    A             Z com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_de.propertiesPK   5RWׅ    A             ] com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_es.propertiesPK   5R7|    A             ` com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_fr.propertiesPK   5Rknm    A             c com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_it.propertiesPK   5Rޤ]  x  A             f com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_ja.propertiesPK   5R 2  X  A             i com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_ko.propertiesPK   5R&w    D             l com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.propertiesPK   5Ri  $  D             o com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.propertiesPK   5R_G^    D             r com/sun/xml/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.propertiesPK   5R  s  A             u com/sun/xml/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.classPK   5R[M    ?             3| com/sun/xml/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.classPK   5R;>  	  @              com/sun/xml/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.classPK   5R    F             . com/sun/xml/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.classPK   5RYF]  
  :              com/sun/xml/messaging/saaj/soap/ver1_1/Header1_1Impl.classPK   5Rف'  $+  9              com/sun/xml/messaging/saaj/soap/ver1_1/Fault1_1Impl.classPK   5R=    :              com/sun/xml/messaging/saaj/soap/ver1_1/Detail1_1Impl.classPK   5R%C    8              com/sun/xml/messaging/saaj/soap/ver1_1/Body1_1Impl.classPK   5RtP    ;              com/sun/xml/messaging/saaj/soap/ver1_1/Message1_1Impl.classPK   5R~  r  <             Ǭ com/sun/xml/messaging/saaj/soap/ver1_1/Envelope1_1Impl.classPK   5RnP  0  ?              com/sun/xml/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.classPK   5R3!  
  <             l com/sun/xml/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.classPK   5R= T  0  ?              com/sun/xml/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.classPK   5RB    >             C com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings.propertiesPK   5R-T    A             = com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_de.propertiesPK   5R0$    A              com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_es.propertiesPK   5R߰H  
  A             W com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_fr.propertiesPK   5R
"n    A              com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_it.propertiesPK   5RGJ  =  A             J com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_ja.propertiesPK   5RhvN  *  A             Z com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_ko.propertiesPK   5R
f
    D             Z com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.propertiesPK   5RŮn    D              com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.propertiesPK   5Rq4n  
  D              com/sun/xml/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.propertiesPK   5Rgs    :              com/sun/xml/messaging/saaj/soap/ver1_2/Header1_2Impl.classPK   5RP
ۜ    8              com/sun/xml/messaging/saaj/soap/ver1_2/Body1_2Impl.classPK   5RVm${i  ~  <              com/sun/xml/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.classPK   5R{P	  
  @              com/sun/xml/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.classPK   5RxDT  0  ?              com/sun/xml/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.classPK   5R    F              com/sun/xml/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.classPK   5Rԏ3O  0  ?             
 com/sun/xml/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.classPK   5R?tN    ?              com/sun/xml/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.classPK   5RP    <              com/sun/xml/messaging/saaj/soap/ver1_2/Envelope1_2Impl.classPK   5R  '  ;             % com/sun/xml/messaging/saaj/soap/ver1_2/Fault1_2Impl$1.classPK   5R;
"  A  9             ( com/sun/xml/messaging/saaj/soap/ver1_2/Fault1_2Impl.classPK   5RbgX     ;             D com/sun/xml/messaging/saaj/soap/ver1_2/Message1_2Impl.classPK   5R*/(0X    A             I com/sun/xml/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.classPK   5RSZc  3  :             M com/sun/xml/messaging/saaj/soap/ver1_2/Detail1_2Impl.classPK   5RCQ\%  :I  6             S com/sun/xml/messaging/saaj/soap/SOAPDocumentImpl.classPK   5RnE     2             n com/sun/xml/messaging/saaj/soap/SOAPDocument.classPK   5Rf    4             o com/sun/xml/messaging/saaj/soap/SOAPPartImpl$1.classPK   5R{C["  [  2             Rr com/sun/xml/messaging/saaj/soap/SOAPPartImpl.classPK   5R;*  /  .             
 com/sun/xml/messaging/saaj/soap/Envelope.classPK   5R#cs    3              com/sun/xml/messaging/saaj/soap/MessageImpl$1.classPK   5R;  
  F             g com/sun/xml/messaging/saaj/soap/MessageImpl$MimeMatchingIterator.classPK   5Rs;    1              com/sun/xml/messaging/saaj/soap/MessageImpl.classPK   5R
:   a  0             s com/sun/xml/messaging/saaj/soap/StaxBridge.classPK   5RڠO    5              com/sun/xml/messaging/saaj/soap/SOAPFactoryImpl.classPK   5R35  ]  5              com/sun/xml/messaging/saaj/soap/SOAPIOException.classPK   5RJA4  J  8             0 com/sun/xml/messaging/saaj/soap/MessageFactoryImpl.classPK   5RWR]    A             n com/sun/xml/messaging/saaj/soap/MultipartDataContentHandler.classPK   5RC}[  q  :              com/sun/xml/messaging/saaj/soap/SOAPDocumentFragment.classPK   5R|U    2              com/sun/xml/messaging/saaj/soap/LazyEnvelope.classPK   5RV*  	
  9             Z com/sun/xml/messaging/saaj/soap/SAAJMetaFactoryImpl.classPK   5R\c
  =  =              com/sun/xml/messaging/saaj/soap/ImageDataContentHandler.classPK   5RL  r  8             k com/sun/xml/messaging/saaj/soap/StaxReaderBridge$1.classPK   5Rh7  	  6              com/sun/xml/messaging/saaj/soap/StaxReaderBridge.classPK   5RO    <              com/sun/xml/messaging/saaj/soap/StaxLazySourceBridge$1.classPK   5R]NE    :             & com/sun/xml/messaging/saaj/soap/StaxLazySourceBridge.classPK   5Rĩp  X  >               com/sun/xml/messaging/saaj/soap/StringDataContentHandler.classPK   5Rҁ}    C             \) com/sun/xml/messaging/saaj/soap/FastInfosetDataContentHandler.classPK   5R%͵  @  D             / com/sun/xml/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.classPK   5Rk$    K             1 com/sun/xml/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.classPK   5Rl3y    :             4 com/sun/xml/messaging/saaj/soap/AttachmentPartImpl$1.classPK   5Rc  ?  8             >7 com/sun/xml/messaging/saaj/soap/AttachmentPartImpl.classPK   5R>ւ    ;             :S com/sun/xml/messaging/saaj/soap/XmlDataContentHandler.classPK   5Rܠl  @  B             ^Z com/sun/xml/messaging/saaj/soap/SOAPVersionMismatchException.classPK   5Rx<    ;             [\ com/sun/xml/messaging/saaj/soap/GifDataContentHandler.classPK   5R+  c  <             b com/sun/xml/messaging/saaj/soap/JpegDataContentHandler.classPK   5Rِ  a  9             /k com/sun/xml/messaging/saaj/soap/EnvelopeFactory$1$1.classPK   5R!A]  ,  7             n com/sun/xml/messaging/saaj/soap/EnvelopeFactory$1.classPK   5RcB  &  5             p com/sun/xml/messaging/saaj/soap/EnvelopeFactory.classPK   5RЇ#  @  ?             | com/sun/xml/messaging/saaj/soap/ContextClassloaderLocal$1.classPK   5RR  R
  =              com/sun/xml/messaging/saaj/soap/ContextClassloaderLocal.classPK   5R^3^i    7             I com/sun/xml/messaging/saaj/util/LocalStrings.propertiesPK   5R67W  '  :             m com/sun/xml/messaging/saaj/util/LocalStrings_de.propertiesPK   5R:6  G  :              com/sun/xml/messaging/saaj/util/LocalStrings_es.propertiesPK   5Rw]  B  :             	 com/sun/xml/messaging/saaj/util/LocalStrings_fr.propertiesPK   5RT_    :             O com/sun/xml/messaging/saaj/util/LocalStrings_it.propertiesPK   5RJC    :              com/sun/xml/messaging/saaj/util/LocalStrings_ja.propertiesPK   5RCWM#    :              com/sun/xml/messaging/saaj/util/LocalStrings_ko.propertiesPK   5R͑  H  =              com/sun/xml/messaging/saaj/util/LocalStrings_pt_BR.propertiesPK   5R    =              com/sun/xml/messaging/saaj/util/LocalStrings_zh_CN.propertiesPK   5R}    =             n com/sun/xml/messaging/saaj/util/LocalStrings_zh_TW.propertiesPK   5RZ꠨  ~  4              com/sun/xml/messaging/saaj/util/FinalArrayList.classPK   5RVs  
  >              com/sun/xml/messaging/saaj/util/NamespaceContextIterator.classPK   5R[     :             ͣ com/sun/xml/messaging/saaj/util/XMLDeclarationParser.classPK   5R~q%    =              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$1$1.classPK   5Ruj.X    ;              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$1.classPK   5RXD    I              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$DeferredElement.classPK   5R5ZCo    N             u com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$NamespaceDeclaration.classPK   5R!0    N             ` com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter$AttributeDeclaration.classPK   5R>H  %  9              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriter.classPK   5Rq5  <  =              com/sun/xml/messaging/saaj/util/stax/SaajStaxReaderEx$1.classPK   5R    ;              com/sun/xml/messaging/saaj/util/stax/SaajStaxReaderEx.classPK   5RbgC?    A             	 com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$State.classPK   5RtE    ?              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$1$1.classPK   5RR0     ?              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$1$2.classPK   5RvD  2  =              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$1.classPK   5R{f  
  =              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx$2.classPK   5R̹ݣ	  g  ;              com/sun/xml/messaging/saaj/util/stax/SaajStaxWriterEx.classPK   5R2T
    A              com/sun/xml/messaging/saaj/util/stax/LazyEnvelopeStaxReader.classPK   5R-  
  0             ? com/sun/xml/messaging/saaj/util/ParserPool.classPK   5R\zAG  8  5              com/sun/xml/messaging/saaj/util/MimeHeadersUtil.classPK   5R*    6             / com/sun/xml/messaging/saaj/util/JAXMStreamSource.classPK   5R7b  4  6              com/sun/xml/messaging/saaj/util/ByteOutputStream.classPK   5R7Ãi  v  5              com/sun/xml/messaging/saaj/util/ByteInputStream.classPK   5Rms    /              com/sun/xml/messaging/saaj/util/ParseUtil.classPK   5R.    ,              com/sun/xml/messaging/saaj/util/Base64.classPK   5RH    ;             % com/sun/xml/messaging/saaj/util/FastInfosetReflection.classPK   5R7֬	    <             - com/sun/xml/messaging/saaj/util/RejectDoctypeSaxFilter.classPK   5RSx  W  8             )7 com/sun/xml/messaging/saaj/util/LogDomainConstants.classPK   5RM7R  X  C             9 com/sun/xml/messaging/saaj/util/JaxmURI$MalformedURIException.classPK   5RJy=  :  -             : com/sun/xml/messaging/saaj/util/JaxmURI.classPK   5R2     M             bW com/sun/xml/messaging/saaj/util/transform/EfficientStreamingTransformer.classPK   5Rb  &  0             \f com/sun/xml/messaging/saaj/util/SAAJUtil$1.classPK   5R5    .             ah com/sun/xml/messaging/saaj/util/SAAJUtil.classPK   5R-v4    4             Lk com/sun/xml/messaging/saaj/util/TeeInputStream.classPK   5RTb     C             n com/sun/xml/messaging/saaj/packaging/mime/MultipartDataSource.classPK   5RO  @  G             @p com/sun/xml/messaging/saaj/packaging/mime/internet/MimeBodyPart$1.classPK   5R u  <  E             s com/sun/xml/messaging/saaj/packaging/mime/internet/MimeBodyPart.classPK   5RY z`    J              com/sun/xml/messaging/saaj/packaging/mime/internet/InternetHeaders$1.classPK   5Rf
    H             Ñ com/sun/xml/messaging/saaj/packaging/mime/internet/InternetHeaders.classPK   5READs  )  F             ǜ com/sun/xml/messaging/saaj/packaging/mime/internet/MimeMultipart.classPK   5Rej    <              com/sun/xml/messaging/saaj/packaging/mime/internet/hdr.classPK   5RkYy
    D             γ com/sun/xml/messaging/saaj/packaging/mime/internet/ContentType.classPK   5RbN  _  F              com/sun/xml/messaging/saaj/packaging/mime/internet/ParameterList.classPK   5R~+  (  G              com/sun/xml/messaging/saaj/packaging/mime/internet/ParseException.classPK   5R2`vh    U             Q com/sun/xml/messaging/saaj/packaging/mime/internet/MimeUtility$1NullInputStream.classPK   5RW"&  L  D             < com/sun/xml/messaging/saaj/packaging/mime/internet/MimeUtility.classPK   5R?b  w  J             r com/sun/xml/messaging/saaj/packaging/mime/internet/AsciiOutputStream.classPK   5Rǵ:  1  H             L com/sun/xml/messaging/saaj/packaging/mime/internet/BMMimeMultipart.classPK   5RĮ   "  J              com/sun/xml/messaging/saaj/packaging/mime/internet/SharedInputStream.classPK   5RfM  q  K              com/sun/xml/messaging/saaj/packaging/mime/internet/MimePartDataSource.classPK   5R̳>1    D              com/sun/xml/messaging/saaj/packaging/mime/internet/UniqueValue.classPK   5R5h줻    K             > com/sun/xml/messaging/saaj/packaging/mime/internet/ContentDisposition.classPK   5R    J             r com/sun/xml/messaging/saaj/packaging/mime/internet/MimePullMultipart.classPK   5R۝    N              com/sun/xml/messaging/saaj/packaging/mime/internet/HeaderTokenizer$Token.classPK   5R.7    H             4" com/sun/xml/messaging/saaj/packaging/mime/internet/HeaderTokenizer.classPK   5R:  j  B             z+ com/sun/xml/messaging/saaj/packaging/mime/MessagingException.classPK   5R'      6             / com/sun/xml/messaging/saaj/packaging/mime/Header.classPK   5RY&ER  
	  D             0 com/sun/xml/messaging/saaj/packaging/mime/util/QPEncoderStream.classPK   5R30a  T  D             36 com/sun/xml/messaging/saaj/packaging/mime/util/LineInputStream.classPK   5Rz]>    ?             : com/sun/xml/messaging/saaj/packaging/mime/util/OutputUtil.classPK   5Rz3I  L
  H             = com/sun/xml/messaging/saaj/packaging/mime/util/BASE64EncoderStream.classPK   5R&iF  ;  D             D com/sun/xml/messaging/saaj/packaging/mime/util/QPDecoderStream.classPK   5Rge  
  D             I com/sun/xml/messaging/saaj/packaging/mime/util/UUDecoderStream.classPK   5Rw1    C             `Q com/sun/xml/messaging/saaj/packaging/mime/util/QEncoderStream.classPK   5Ra|    C             jU com/sun/xml/messaging/saaj/packaging/mime/util/QDecoderStream.classPK   5RU[  z  D             X com/sun/xml/messaging/saaj/packaging/mime/util/UUEncoderStream.classPK   5Rlj  |  C             __ com/sun/xml/messaging/saaj/packaging/mime/util/BEncoderStream.classPK   5R!5JS    H             :a com/sun/xml/messaging/saaj/packaging/mime/util/BASE64DecoderStream.classPK   5RNf*  
  A             bi com/sun/xml/messaging/saaj/packaging/mime/util/ASCIIUtility.classPK   5RGy  s  2             o com/sun/xml/messaging/saaj/SOAPExceptionImpl.classPK   5RV1    3             lt com/sun/xml/messaging/saaj/LazyEnvelopeSource.classPK   5Rek4	  ==  ;             u META-INF/maven/com.sun.xml.messaging.saaj/saaj-impl/pom.xmlPK   5RyEE   F   B              META-INF/maven/com.sun.xml.messaging.saaj/saaj-impl/pom.propertiesPK   5R^T                  module-info.classPK      Qu     PK
     A            	   META-INF/ PK
     A x$        META-INF/MANIFEST.MFuN0~ڡRH !J$nkw#{۴<=IOufTnm#,\HqZoEErm*pރZn;lOJō	9gq삕Rd;lD`y@ʖ꜋H6MT2?d؇Y2̈́yy_-s[EucOfl(~O~K=ɒBOPK
     A               org/ PK
     A               org/mozilla/ PK
     A               org/mozilla/classfile/ PK
     A #v	  z  $   org/mozilla/classfile/ByteCode.class}tgไB
*Ж@*J2d$Pۆ 4$mPwwwܽՍ{ޙyzNzo7{'tgɾ^,Έ#8ڻ_$NT!!
ՏׁƩB񞡫'+BOT
=INt_h;?} 8FC[ q*L!WەE"N9bb(*OG␛LGbD	 "%[qm9!d8wx@{R@;"	&¹'pmm6w4		hshs
hsƭw;7V@P"8(h<	T_z	P4D}Mٸ@:O?/y.Ї]'(]K@/	m/
m#m~Rhhmm~Bih~Mh_满m8BBdh_ogZ}4CNէ-dV9:d,
 2錖Di˛X^u\V])WPWW33Q=}WNu_3u
Z~n~~=[~n~~}۴߯i_k_wh6^i_wj_TF.߯뭵`Ջ֋qo&ݞKt-vV|nZn۵{Wߡ~})Ktf-n+Zc^=_}VZVZ(^ÃVgkxJkxJ;ciU?n	+sZ>&j;>6?qU:;^p">UN/V'Zhu6cE^
3.	.
s/XNSc7	>ee8}*&OkiJξ5(q;Z#xG`8t]!]
S
ٔrR!7.r !7.r6P[x>]6a Sװa#Ɠlx^TC.f};\&u]008nqycn*&"Qq{H׻W_1b@f#ME2=<ͦcF6-ZwH*O&[Net-46͵oKntcw-w5)ISqXB9!UG2i9OB}&nq@?t: \/Fk#Ue!z狱t\m:">%өb	[bB`qO8Þ
|6ϊ8C1mtH<+X.ŔL혉xlmoI-734
#CMm
MjgלVĈdGy[ښ*ۚϟRYEχw-V6t`ܦMed?S+ۚgWgmirF:=>r9=rTpz}~p x y<|<<>||4X0sxpIHd)gȣ13gcɕ8x<HC>>|>|Bx2"b%\M1rNkZO!Ir="y*%< 7ie+WW&xInggsȭ\5pyN%_w]B
EbM[ȷ·o 	E|/|~CGȏ ?	?E~~,yKWȯKKe
Jxy5^G^o o77[[mN.x7yO> $A~~6]=C%<_L
U௓-%}?"	?A%+ߐ{?"A'/LD[hrA _B/P_(/A _B/P_(/A _B/P_(/A _B/P_(/A _B/P_(/A _B/P_(/A _B/P_(/A _B/P_(/A _B/P_(/A _B/Y"KPedݏu?ZAh%YUdݏVu?ZCh-Yud?דumwSn-ֻOq+?cRVe;N5.*c]{?PK
     A {  a  *   org/mozilla/classfile/ClassFileField.classRNQgz/Tz҂0\b
C	&-i^x3+^|1h||q3Cì>s^k痯D@|h&"-w2,EiVB{TiGfV6_Feզ8
rLSe;4ס.h\j
2Q(&7eSP϶U3wZGEkmTz%3^<z|ިG˶
dfŲM}ؖe%AZ`8T\[MSeYWpmɘ",W
1F~e1)(+Qz8Uy	R߄ٔIPo5J&PTK*0.SJqf	$CBm
Yᆹnxh)~駁>n9]1ThNC
º.c̋0 c^Lzfi
Pʀ>'E˜O:';5
 0߻(1 [CH+{
0dW*$S$
F=	o@Lk~c
Ab
a-boZ')4z"4HӸ'"M7eOФ';Vx@Hg)mk;3u
YmqY=zYE%b0<ZĠ03(f#ƶJ<ixRhF޵箂3HƂˮȩP(x*鎤iȚ1lrZpsh(d)?(&Yyg_PK
     A 5^    +   org/mozilla/classfile/ClassFileMethod.classSNQ]ΥÝrъ TT%iPRxqNː~H|(>g&-C^g_g+ O%?x)<6a[CAf֡ٴ$̼c|G3
abѭY$HŃ+A}l$jFsF]	ڌٿJ0t`ybGfM)(,x~#.l1Ulc8'b'^4ʮПt{d&4'YOR,dw9ρjѷU)^md&ݽzɧ7,ʍgyFUƳB	$[ZzT;H+4^1c:9hcRv5xk۷S%$]A*ps׺-f5qL7U>b@EP/@Xچ#
-mF4& agdgbF܁l#t~Ri~by4Mh!艛,I۔h|qx,,!]̅UNH	eAVw{3cVwKK$	ŻH	uh |bL	34{-MMbbW!s0Bktp"hIݦKx6ȓ1c_#׊nrb9Zl-^Eb5J{OD_1ZPK
     A +HP    :   org/mozilla/classfile/ClassFileWriter$BootstrapEntry.classU]OQ=v۲B
*"ZDh"h	FMv.nM⋉ĘF_MĹK!@>ݙ3̝ca
C;0DŨ;+c,s8/q@ŪjR!tahKn<S1<
-3#9nٺ9JMݝqA^ͪAhJ45ۋ#"^ka:Rq?Kke7IҌ'JYoY*ܸm]<77Ne	yr櫳k1d[${_vV2Hyqٻ@jKnaϢ+V8=s0btYeё
jܩmOPk"Vݮh-þ?
ѡ I
SW0
f1.3O;e⊂fHSZ:@#ᕊ8Cu,:Ή,q^,(f^.hnͪn)nh%lWntOgiR η21]L6_sD)_ʋqK0DOF> A;~<} |z	Aw`T
$cOw8R-uoJ1)x>I!rL"\b6
za<T5.uIF	LM:;A( &D7'0;)**eGmHPq2d`?xa^Pu_@Bz[G;YTpaeH!wx.8nN6KPIzE"gAF`ͨ&io=d;S_BPK
     A KIa  [  D   org/mozilla/classfile/ClassFileWriter$ClassFileFormatException.classQJA=c⦥fv(Mw`,]dhM]=CWA=@OѓDnQQA7wwyzyxyXZcȇBKel!Th2}Ep}9bHK%Msx\RK}d;8ӮTbgiuԿIs,Cjaؑfb(bv:4z<#d·FoMaGqO`{XEe(}]Yd`[1`wŗƟܱ(@nH"E5M]!DQNj^^gt1['e9B)L ĨHkǪ42PK
     A ɳė    3   org/mozilla/classfile/ClassFileWriter$MHandle.classTKOQ̴S  t:T|)>H@H0 i;EW
]
MM&MxH}3Ϗ\ƭ(bH ~.\\b@ť(\bP(j#zr*0	PgkS+Z^!=_0̠xֺM*oss*cCD,SSφiǳmgmumwJ)33w-/ڔGx3U.۔HOBzq]+UǵӢ6YS<q
O6-ƍ} gkv2Xݔk#H2HE{<cmzH*d#1EJJH|i"hhŘЬ!EU`HopFyMl:n5epkRC&C:UG߫	['2wP( I42NO=z11zP
IZ.Y1_nZ
'HB]0cٷ
LmC1۔mSVB;苨^_B6!:cЉӀ8&,EG#hhQ
%7)[ɯBHJ~Ax ~1@L%SS'/D^HxE=eD8<BH_gC1F\_01;%s4&qbz)AQ#?080CNr@1H #ŕyZ`04]j]D}kc;Ъkk몶X;hxw`Zyߴ`}8E:J0._PK
     A L$  G  9   org/mozilla/classfile/ClassFileWriter$StackMapTable.class{y|Uwr,/#a6Yvh$, Hd}AQklX($n.KwW[hU@;g}Z}}~0sg̜9s93ox`k`SfcpAUP6ٔ͡$NS(l}SnSaU.l-e	Ln(d3$[A)e?vCv!,H(VRV'Ya² TjRDnPFʚLZJ3)R6ŨNZN===nE>s);	nv!溘`)]J&.sʮ짂]EߟQv5ePv-e%A	MD͒m&fl[5*#ʶRm}nXvx'o#K:PO\W|dw=dJv5O]= كTM:5XeѰ){V(1jl/eq҃'$u~Rw=M3=ˀ7VT20ZMK+u-[@u-5U+ZZΊ46G5VEã[љk$ijxZ[
'MUyV"a&Hrf\|Ru͌f,zEK3R[llk6\Q!6p4!ǠJs4H"iĦ2=1Ö a-DXfU9<ie8Z\و*`4BuYHrbm6تlnG06?W È&CP"N7lEQR,3#FE\ׇcIY͉4-X-
v<udxzT4U֣CEڒf:NE"gFu
5h=a1ÅH-GD:<R}YGm퍄em8Y|2܈zOB,"N
8[c8"YI iuXYIpvs,Ĉcf V`!u҄dYBNCC$F2uX]9=^De5Cd
zlno*]u	nh
aVl7*C+'RbOkcJrWkAP% -JCͨoo֑۔0\fz]KSkKs9#z=
j6׏E#j^gw6-M%9pchAt^8Z^Mbcp*(`+ZڛIp3vcQlһuсB^ILplSZ1܄KnK6n5V{ZRQfT@u+`NwD!NU1E*aVиj@
uCVأP0DKPO;"(mZ+uAoF6L1D)
6Qm!w]c87*	jedPed3Sv/J݇t6)l(ܨkrRgZNݙ<vqa: ɣO|΋Goa3'Ԩ4,h+c&.=xN{c"ihNq1m4
-NGHH
Vخ5f+v,=ZMAn
l$Y$zevaNǂF-e7Pu3lւ)[(~n߳mEDyb^ku|{{bowpLzp}qF6)el4QTPi{{}"AщÓ< b(YJۤ>dYcg^COا<
$	i#X3b#/]YJ7xb~Wk!JaIs,\
o}o}~X<h'3`;dH u0b=u .ƾ.\
Hm"V|LYLoQVB82\[FI'TJQju.
m\U&cQ2]˕EH]9+`^W<,A#tm'NQ,>6ׅ-W>a*p!
%dهZb";
ގmT*b^x)]jHy)`TߤyW˶\$$\W?W5A?#1	l}Fіk50:O`)+?L:Vסvܱ`]]
GsAer	4GH:+cB(qcQ3H,4q#0X*<2mN O*E.i:ud谔i0&QHT[	Cr<,űe%nOC=GpIe~ g&{9Ӆ--HƘBEC3A鑶DxR<evE
BjTU@ϷtIڔ*V٧:"ҰiQʁPÌ%p Stn\EShӼ`˦H3Az-"$'=sE
YmIn%0u-&U+HU<o53*Ϟuƒ*g̬D?u O6:,{7j$t(95b>'<&<**mUC1>]	{6AXDL򼗖t?wڢЁ}eㅼGWR&R~qyAo-M	!KA\?+#լrxPh
+<!:DF¡hmvB]$fQ{JF XrQt9:{S٩cH8p[ /
C0۰v,:L	gw
2ӯ7eiYSqᗘ4 L0(dmP`ĠhZbz8 ,d
8&Ϟ
dE'pM% 	t??Zd>RU)E|̵KE#Ɓzhd圀xvd@ǊQx{Nȭb=!/2-ee·<B`\#Pn\sMPm\a1@qZTPraL{A5d;,߇%@Á<X
kvC0EG<:~kUiΪ oJѭ bF(Ajc!Ato>eP]J
@=P	&x1LEk܉R5J>jxf{H(\ntS\s-t1ր*R<z@?Ÿ~`Z?Vu[T86cYtS{ͽ?4ϸ|ʠp,l1~&p+<@k:7
KHzm-c,xfdZ	ktf`)Nt_lRM1ނ~;Ht;*86AXثDu'#˄92yݑ+/H&//+ROj|"L{,_&Ց$A#J
DmRR	!zAFp6HdكFՋv@b\W^悩ul'U#Y\
p	nE8++GEfb6ۡ1UzJi[	,4f; wqEspJژnQ쁡K:e\M{NO'#мS՚w@p>oʇPVuO <$ρ"|8}P΋T^x	0_1q@Da)^ 
ux!|]<#hA?%u/Ӳ;+旡Z:;.c9}ANEe1xu,~DPn=0n̀cc-pe sN@$
y	
&{
6 2oC
tѣhl#StVagob*rr
\I%@ Ob>i0O9~gA#
1>'Edσ|]|!<O"x>+|O/?f>~<Ȧl:_U4jy5l_6
ޤpzFB	1ȂfbHݕMj6֢S+dPxYx~_boB_ՙvN},	ๅmRYLJ[Z(SbX=H Wf񐲌]dAH[ w0 p0[p#;(cX組	_OFIZ
H2,!_1UeQ(kIE7EXb7ѤdP(6c0X:I|Cop(x)g3(]ڔw#=hS4raǕu$b8\F0qKcʕ*KmZc~d{|&4\C]qkP6"	{PwML݌Biàczl*ʂ;q.:6 ^A!	yi}&XHMCh¬@fx0Mތ;	d)6f
TȚw#Ɣ+Ⓨ15Gۡ	?;.ެ\]ߛFXf&:{`fT; ]"eVܛ@Oݽ|V'(yyqmw|=s(E5w@#h.Tsq>ѥ/B~?jܺ):ܶ:~zaw.
;p'z]IϠGz^

<LY+ﲱCv"֧O)SB|v1+m`vͿf{{d_
%i|A@LrӔӛhQ2YZfjz>	s]LK=,]Ui	TQ Y·?"Dw&Ia)6)Yl/
}Y/].t='lr*j]H7EM<.	Nx "lХ&RLid,٭}ƾib՞@}R{` T$ (,O"ʟ,k>yQLiIߌn]ꬤ ZxD QLē=Wj͟&EP'*4Ie:zvʔ'߽Mn-CyцShuA8a^CYu<uȨ"D1d(}a(0WJĀC >JY nLl=!tYn
"::}`=D0tHW9i[J$J2%8%pwzxҢ6bX<=+1t6)
'mI1DiĴkAu0]L7k^{oq=JZ~*ͱ')Vchyx/uShƴ<	
Ƌx;e?~;r'0:mp"0noiR! @1Wyjn4 NNwcEI!<h݄jJnB>n!Ѻqv;)d?ZNXС߄!UvQ47S;|*Ŵz}Ap
{3@'.]u',
 /ԫ1<1cͶgKB{Ö-=Yve.%^+y/%Olq:.YKhxX15xm*忁i68/
3$$zG=LQevAsN Kd{Y=\1F][AI  %[m07{ϳ6eP@nG<L. e7tBd/3ld2zXSFd7[\f֜cs-3uuܔcF30\_.x>o![Օ+gNxkaƶ8yN
SycP
LvDs3>LqeP<簕a@x!Qͫ-aS¯y9_1Qճb#3B_!altk%6EC(JotBmnL䧶bF?4yyR+h#!C`mv(B1E;CLVzHkڙ"DAs*BQmhMU&:qv]EܥmjQK<u^H{V|=/>>jh_4___z>F|SE>C2}tK[?_I~*sd!}KCr-Or$LW$G}rȀ.'Ɖܘ,'3cfTFi*+99F<ٸXV?:)O5d\l+_ȥ~yϗxc>PZ>Yy\:T])W-~\ïM|lVeJr=Knʳ>y6J#@x䅢HɋxQwTTMF^&VEX^!˫ĹI^+n׉zK v˛fWnO-iyx^\*!ޒ[{rPn;6_.eyҔwLy{dW y&wɑ9N>('=rKVʇ\,dr<KF^!?OkS&[M1=-wgY|U>/ߑ/Or|I~ok'7AsМ(?`t~_\%Z_$FdZ+
JOBۉa?t_B_|D|_a)?۵]j3MkqK9| n>^!O7/W-<|<k!TX>ĳ!lAhqlE<{5`3f<x}xp[a\x|NUlU\'`փga!MtJ|%φMBT^uz6eRE7yۈ|yۈy?̴+A5s!'wT!|1K,1~Ē]9¹G2<du'bVҕBzpM)]4uOOI  D}2S6"
 8=>0!}Kw03pfL8WAHj@V!ܒ0@=u.cv,vBlJS=b+{V(HܴQ#!4wvg^ 7yӇ.gxH܇9WqC2L,"Mо+On!E?.M-_hNr't;S轲oc儚EaTw`  .P2ıZV*eڿcs	Voޮ;8EPd)'&,fY΄ʙf;n;mϫ^cd6-Z~zۗ[*jJp&dnrxdJ3ACIDدe-?;t.Q?>=@Pwp?fd9)2Jp߹9ߌs֍Vslo?O3i#M#vkw;4-HrGn#	(ʤ3aY̒fg >sV?:AjvT!s(͎Ludy6@eAtGt54j+Y u5V)2 Ć0S!	Ы7&Lps8Y|ZKVbj]^"LŲ;;]RA䬷76s5I`o%J:5! ^s5OLшJYEؙz:}/낳}A6,.!Yܜ
I1@<1)2xt$8O9^/eìJaOh7#N>*_'H7j2I>
Q.C
X$H!9Am@6+cI;i#-m).=DbjeQykQy+S\ȄFآ:R!6 ,Ţߘ7$\Suz6b'o-zrN	>!=>ѽnݷyûࢀ[S?f;`7mc~_47ԛ#S@).g64;!uSF/i?bS-MU.H
.ش1Mu@~)|FSKS?`փ0TPhf#M0lFo
LXlCVgZl؀JBvKrx)jǼl^;&_0X{$Pb\6~ZA-BFg#2
Aa|jtSM6Lrq4FW?X,)QD~or<<Si`@o f!~#|߀cAOWnkD+1oO.
S+ޕb}pd_-L۩\ӕ_O/zL+E jB'0PN~Xߣ*쇔bnwAeQV؛EG%5Éi#;'K{oQ!C;m>
gdQ R=T!V*]qKa/\54utK{8<Kh`/D4_k)ՃJ9Bfk%b7~&X]R/LRאG,_Fט?uo"m߁	滉灇?
S7wbud*ct-뵁95Gwx`) g"0go&$LE6$VHD:e_VLZoF?}	Yp[OD%.\㲟W"_rnrX:~s8c)ÚYZ#k(Aw
LwϝX@/@FaM;U_ PK
     A ;A    +   org/mozilla/classfile/ClassFileWriter.classݽ	|E8{g$L 	;
+H%dB!spx-
"! ^^zz~tQޫ_> &np`|@(y>.׏(^赙^"z]LUP>R27\43q׏u5n~A~R6mA
~#IfzB[6
w:;4.I.7ߣ`~7%qKi}_JR!7Xq4q~^P}xER:'8Q0ŞzƟd̟Ysz^/eLeh濠"6#Oɓ2_#L_o4o)w=Qz4?D?hT>'F'7Lp%/WoL~AտN QTF[MvqMOb@cRM0B/ք	&tMx5DQ$k"El:d&T34IMk&h"-2u8$Q,MtEnnCӋrzk});^40溜<_MJb&R 2NL B%B&2,q0MD&FbѺ#jb.Ƌ	(&Ec-&E[La56W\Wi(-ol42H.F60H*m*X=|"NL6)o*Z_o1'.3`fq!VmuMuMk#(xe'QzfVIYQaYdT,heʊ)Gc࡜)ų'ͤ(7h.ed30dم.^T4%3LDf.V|M'bB`^ZMScis}6ZiЄT㋋'(*#$,Ծ<>޼~JCt
ɞmX9pMז7V47
WSׄ<YSݼfEArĄjU*0?(USHS#H8EX;-R^Baqi3`TdF+sfN*(Ta"҂[)%evLBf`myʁM
5u+?"v!A
l[Q
't
ITnG'S3e$/VF
"
NLY/Ef$2u:k`574Dh%k\fEl%"1PjVzaJfF+kQztJv~:Q*YjRCC9Qσ
Dj>Q)PU^A@&ʪk*#M
Kvfmn
yӬˤ,+T0hY)NNϙ+"6il9ys-IsSj7T_<݄ϔ0h&GL
Dyl:h	rgFV6UcoMkbZ5i<Q9JxGrr3PHPNTYzT
5MrE|&7<ehYd49juM4}啕K@/&VN[5F,YSrJZe&q8H%-7$#ؔ:s6eҚuM
jpPwhmnN+	
ѓӃAN+&&JӆzBβPbIya9p'ө6'T19ϳ)ȹiaJkilY橋S-҆luiLkddAJ<a5Fk\7E	HU=Үj2)]jNIMM1$Rb1atZιhaAaFY_F{1ѫ݇alZ1ڹmFX&Uڣ֬h&5|X1zfn
sdJ)>HIJ:kTsLr2H"#nECy]E5Eu	
:̌W-!:Də"
ELpa_3o6!ȯjRp,b S8-^8X)fHULjN_]-*sċ״˰&Y}yN4⺪(ֶӖzXLBvO7,`PӱUcl8c; hD+q=oC5&5┖ 2Rw >H^˱-IJP2npNsc5"נ2Z[)KњuU474>NiLJ4%\YP&h-i3oG)dG|uNG'ǣ̨ך|e9iɠs7VGJ0)Mg]
*\kΣ%j25+ID-gi
c4ZSްor7Fo2:Q<X?*+暆4%4&j$:JZ+)&Lm V#l%Fz&Y)OZR`XZd*ljL!ʬ+h'OC*75E)Qי$V57:2HmSoˢNg+scHca-:]Z/O7i}TQ(j>IÖnS(eiYXp>krwX̆XFv2k]ER{92K jYԲ%},F6VYTZuf5a~u<m:Ԕ%'2DV?_Ti^Oi#5᭝Sbao36S#l)/hE5M5H̰TMt`IsS}3J"F258wWB0HMт
MIfM"5FL6eh 0/Cq6nZeyS%'&"3}q
TPc0T͉-؊U%RdUtY!6FlA]H.wNqlfPZ|z1
5"2u5xʹeRQV qA('LxI_6vKw
ޚZkQ5Y,?uNu)
*F7E,464hpN=ko>pshC9u&@MSYnڱͬ| GPb^oVv=tv?8-.:nH2ڦ6rU}S0:d\URq]vg)mYr~"Eծݐ<;+/>O [c)9Xcݘz>>փ^0ygRr{ǒY
ng\<k S	lYA3v'}bcCpb&ņ6(9Km'戳|l3'
^2:WBu|O,gcL,"@PX_àoL	tqmmd%j&\+ls-nf1d}M\>>`fݑS\!j.e21p?ddhC֌T6f-]>>	|[r('c^ҢȖqv])2?/6Lr;'"{>Q-j|,-CD̾D=Q6ԁsڼz7xOqH'y1>>m$]Ӛs_SAy'"k!UF;%%ܔnuWW6yjim3@؎mDma3ۆcI_-v)JDn)FTNH=4e
"u(<ZAg5'n[boRAfs;a̜:~+Ȱf74e_X=}FHm|zɥa&is}l^ PR'|lq(v;uO4,85NLd->N륛пC[1F${}8_<z'l8*KVyG.wZQvMc6JY#dKPfki)ߐWb}ڗ0w۷l$mth4{E6Lie<+i7cӁ{y]vvC6yJ8F\G.j3!=\,85o5IFhZMj&Id,{mu$KPn+HOcʊ}GOlD	*29i7HK ca%~'.[|qO\Ta-.'_㹴},+16|f7^ZUmtVJR2J?df7$\(	ncJ\蓘5>q=)X>M\6Ф&i̇uh0F'Nkgn]YuCttzonť6鼦'h%UtYFKђ8v!R_+s
峒;S\<ySZjш#$NA#5j	tr2tXY-h+
g?vt8M
hÖvdѠ8AVy+/(j(Z.MLk$Ba`Lvf+ڊ0H΋L	#rimHT &54bm٦}mߎdmGe-W[3bB1
5fZg 07=+ͤtlO4:[g
%+^ژ
1jnl"6MɄtYJ
mͪPR:3BdkED*Er;)k)$1o{|SqDmn(j(BT+aã sn܇&Y|i6'`9mldw\VF#| !_ak?o0/G[LsqG{LpOBm,fV0:.Li
e|f$"
GI΁f0Q
LwX]0.&iEƳXWv92n{2e{>2rd.V
XV8*lCp30^'15|r6^e|5V?p?Mİ
]cP?+f!9,A԰am? mhz<ڙt	!#o?dbap!o8Z!k?d<OƻRd+ta~(]f=R#4	H6N@RB_6{%00Xaa\cYB
)l?}%dc\ƦcL ]Fi9 7f3?YlI>(/F#4r̜ {^+asƋGgF:BV
,YV	`m6Q	$*(F(eeVG1MȹA&d]V
	5ݬeCuyrJkl>[`
>x c`+juk;[1[hBJp:0f2`(J@	.0c.`8oZN~z./yĖw=p.RP:AjfԥkQ!
a'rðv/E8OHBfZVa*[,
q7-ydJH:TE`A;v-c-|C|]tr|ŚIlAP@
Sh.E6]8\}
9&<M9ܒ:m
)Ę95_#,
"{t=:pF3TJh 6C$;zMHqb#1>vd]3NNNŪ$t#S`{VjpKklr4q]6n+(jZEItDq@E-@!܏?(EF@AQ\@eQ$P(!@!Ώ"O#?E""(v 5B}M=LK$BPK*WB5d+&.iJ5rlY5UFW587 9iLM&UvX%SX%ٹ#0B!ֈ[*	&[ib4*C0xa'uƐ0s!i'דbX87M<?>?|.X40'Ƴ5[xxتe$[kjY[u0$SGQG.MK`1@'{Ƒ0~"9AF$uzx!I0yHyZЫ+"_{ج0p|HzIVey@]NS'A-Lr 
k"ߜӈҞ'Bqu,2SenaB8Ij>YDaY.;1
"_蔳nЇ3`f+l&h	E)6'?%,E$$2lKegHGє8:+[ I8j2ȅ&[(P0CIT
xBbn/6h%(g7*4%	G'ew`	JO
$q@'@-ɭ0iXS2RĀ|##EHQf'quGxũ(ScϣX+,X%r:&+Rk1k)jgZj&5Dw0F}.Ptk7,TX
U3Ԣ+u.ˀ,n@Wfˇ{-F<
1^du6g/h@C'DgMFǬ)l(4|h/e3X%VMhqoaY汧KhZٛX}>eol9;Y%WX*V^d5|,[ŧlaQag
|kW&~3kwAal_a7=6h_("֊Ttg<vUb:FkEN,d[9l`E5^a7vXnŅq)UFlE~=H-l;7:v>ƒR``,#)'@7K)P6b{h#p\R0WZMaZ?߄ruKc=VBN%-p3HB}$<S.RZbkƶH/#$%R\c2Bv\KW0B7oؕr-g?F
wU5v5<(\Cٵ!._x^Ѐ17\(|7dqJI\>pGx'zD3"@9apƶ[OdX9_0c
nݿdh7х@$ڎ*!DTA?e:I} =
aւZ^  Lgd<?Km;&9JA	niݨHNLtIhۣe>G>@f[ꍏ~$#30LNV!23l]0
pQV8
obxf;v+
wZ.+
w[]V
{!ҩ0Y؇a.0d=o{BP
E~(uԕ;3'ZK`В"U!ж+㇞TzQv%IPF@גeo`)[C:G)5D.C~4DT
"99V=[(0%!%hO]i1e15u2B5w'tYhlkA1fVlnRǗTS#LU;j=T'.}d_q!|}fϳW?l/lqkds`{qwXy6Oy<>|"By:?wK
#+yjޓoއs}<?oe>x?gOSq>]p>C$戱mn=	cZD5u 5Vs'GEo)(&.RU;9q\wl'4|KeR}Oϓl?5Z_E`}@ۄRr9+jvpXXa^0z
$3lEA7(\j{<:X 9|!`_Rɗ8&0W@1@	5^[eUvI-Sk9n[Ӵ$S;ZRF'X7SnwE`d"Н6P)=[9Mtiy ^qZ9):k ݊@hH݆Ƹd{a-Kc@
Z@[vDj(Ke֙	N26큮1 b**%JG^P]bW킂JVaY^5ll+
4(t\AFB/~4? |/B0,JlW&a3oA?'a?h<~ɟ}?/Hs3_tb{GRk(	AVbx<_fy%KXXzm3
9dA}xb-H=:qU1wx20fUFwT ԙ=rtMI
Tt:.SÝ܆I<V8e;A`.p-(nK1nB>:Sb&M. Tk4T23bQ4Ӟ⩶%`٢+ϯ*4-*cXG"%kB%B+
	7$4h>I%&6)IyEJˣ(݋1	z$
>v?@9=ynz$M3CwD\ɺ3P8 }͈MJWdu{>.&jdF,:jDG]Ж%@㑴E%.'|O8v!S1bnU6Ū8TfGk˟sAH!H]ѯE6=lKE.T0Ԋ~p $1.Z1Cṗ(xH#HJ]=\HCo+h|<,cHFGm~yT
{D
٣({LiA?.$M~f$+Zdֹc->0 BcnES/> [Y.N;8&κat4Q6Q\N{|hJz.>r:52/i+u\$N'!Rܒn]D^(T1gA1F2(aX BX!AX]牥pX[E9(*pb%<,ᨨ9Vv@riv=s`rq>pP1>!W90JW?bJtW	F6fG`iˇOzpkp
rUi -݅qohSdcnZqI&pf8c!]C8d	Ņ3fMS
jZ'P_n>'ۍ
L $@AA2v: /	p,֛
ݺ]>>n
V
EI-3C\
B\>"
[tV!{s?zGBMV2q)}7@X'ӯoMQ	J]F
f*X-&uyyvN$D,FMwLxA)6
S,{%+9n˶ekPhə+Bu|VhTB(nO!V\U_@E&<@oJX[RX5:ezd-'ޖ@m4E2A	30@eYsP(^@~抗px"WZUhZ\(~+~#6
0gp~6,](G"S)ݠ=+{!N\!ЗTq1l3qlX>{
񞃣{<ۙx1F>.wsNħrmx:{Ij^No1"/ g#;;'7 "(gDfC}$/4^*Fz"x]^3{%FD"3{5>FD!gZ"xa##Qoް
[R"9嶀q32
"0̽EypPY.cYjACYmv@2z+EL4LQ̂Be6LQLe,YM~c9$5̅KW:m נ΢OC{/%hJv#2w٭u]p72-9`<_!s3_P]ey5Z'
_Ō*]
e-ɖRf&ߺBv|A"7kr
(gC+af(<e9T)JYk
8_K\kjM{հW'Ul?~k);Ipπ{[0;r)]i(R4Apt&XI#&vF~=Y[)lYrBK{dZДuIY]
IlޓLt:Mg`g?6bgNcFgPM76c#{Qb8 W~ I'\ʥP\L=`O$dJR&n>#/'DkC+CrWfɨFqMͨɔoy30*JRlfn釓4C7yjս񪴋"/Tr	5ttѬ`*v;ʵSVl
0W	*j6ؤ[;~e7<
V/{em-Bxɹs	?'ǒ?9X
ۭ_Ha}h8$p
q%Z;eΒzy$Gv@
-6!RTVgQLABRt1$rs\;Is^yT(BHy+Qŷ$	<	%!{*
x,hn~f;cB̟|n+,Wr2
017ƱؒaaC|us1yyHJϧҔgpzpzfͯXirzu9KKvW#~K|WS-;VHoP_C;7ˢ}i]k7tĽTԜo"D|<<P$c9}n)uzSGǰC&݇r=B)9a_dkhڸ'2E"Ѧ^B\8'.|zzz0Z%o?P|5gP|?{ %}ƛl"l}%g{ItB|3е5i7Sanhчt7Ͽ<_~{(1ESZ8z.3RI[Nta+y[fg@ZW;Z>vP2(_BwRH $1|0sPnP._KU6S!V!II0"I0,Oi~̇Uy&IeZ}zZG^v[~qSbަ"we0sDR;V%V[v,A	}j4?Ln+,O]z&8ij]f@	!5a5ۡٝc'JL!
'Aͳi
n-kԞR{Aѡ@5$u4PfV.a8"\}'9I.jщ}*	_>.k5:2.D߂:>GWNWpeIamj޹UEH*(>_I* @TAOu0C`:aS0Ks<΅$HS*22Ha<W%~0lr:nY""<ָ/h]1?(-6YOPVV')+Cyܢ^:DWP9<tN
V~@tp՘-w="CtT
)O*EG
_lN :I(G-d΀iL$,X@:Գ\u.&uRφ{Յ	HCw}6KuKWǽO͂%<II_y2;[ӤЙi4v]Hؔ֜NYiq!a7zЌ$7R)C]>$"
NjKP$H"zaZ0AjJ*XaH/)RoC5,?
:d\s3-Ҫ y2PN)wPi LghQטט(k5J:=Et6!_OQz az,wshlͣd n_6	+=7"Mu N.~˂0Adb|9pc
O6օ	#8ݿU1!p>6b};,S	\J_ 3Oo75<:AaӆV`&
Bh0d]s9|ȥP
(!k¼ ]G}Uh$.܇OCÎp+ug({(mv
{lqoqZ2 |:ncqt'ƾ:/{$ |0FYIOWBdLpυtze8G8}1·%0K_
s`jr+`^J8a^Ǽz%LYl׳6I?/`sJjYT5K9|,2xY/'x46K3&ʎkl
aXs5I]Sob}yź2wz8γywK=r;A״g2.JMxOx[?~>_^+E_
~
DޛG9.ss|ܘʮ6o$/[ۂ-L#
Z>v_̑έPP-M#ӻ!Z&
`r
޵k5f
:j3}fqcqg-o_w7S
; W;`wj
K0\
h[RkF}/ܢ?;`܃}cWA~^zk:+5
e~a588(y?3;ݻc80u75d1;&?(; ]]odz|1/v\U.LtwNdmoȉkoq#_d #T9ķoYrtJ:`ovuȉ	uMЙE]nSͺrJ?~Sg\!yE>˭3+ˆ:ʶ% h+eIw(O4$?C2砻<_a+(B,_5pkL{qmxA-ç;.SXC6\+fcL',OlFݮ=^/ٛW3k
;]q9nx\鱷`9L<y4
Q޹vЕ[)l+7hĦ$s..@`)P`{}9%'l>D&$jx6	  ^Ab0o2h|pgMjd,dfwVz=M~;MLm.n΁N?iuڪ2cp4g@XٴڏAZc^(^7yƺF4RzdT{<"xN&k_T|0Vsj=]+:ݼ2^|d$6*frooµm@G~gʮ[-Is1k
kmx9-'p˱6Xc]lp
/vPsB|'^aqh/.Vh.t}НQ_@̖7g+g(qZoYpe'(LlQhR.t0S{Ļq%̈́,v<o7l#=a7z\8GCPx;^ϼ#uHw
zǲ%V*lw:[xzo)kylw>ֻmͮ.bz۽؝<ۻV*|w-=)xn#vY|Ԍ<by_%@T=|Cq1~mnt>'@93v&\pqYQ9Fkw`
E
'QK hs'~!<.Ze(skYH]Wotnݻ	m~T$*ɼh5_uVGfG]bv.ٹѹܧn/NK21\{ rA+֧~j^PNb<|L?ғow ̬!~휰rMq#qU{BuK5׽Wkv7ڬ]{eV*J'(o;G	ʕ<Je/?Qy0Vh_*Nw&D拡
;P6ۃPKuVay7兀ΐXFZ)-U%%;W&H)INIJzKҴ޽2RPgJ$QnXKe;Q&>3<]Ly!G^t0w?varZ\u'txeBq7af'ާO}fB[YiOؓ
mzqC:JP}Dxe/z${La*\%-i)`gJVr@閜tOPQc*
lTQtRSTo];5wU
>M3x1n5:EG8Vjp\8d,7z~58~	H7.afV?$˻>gا
;8?!=i]=KZL~n:OnW( MyCu	n&g":7K2^$g94~y/a+`
sm\Y6..Ne1˾`}~*!/껡+3Un<}K4L$>cqc_'g
We'vʛɡRBǠ-A7
YT{~D	dOcƻH xzc!0 ?D#n|sOlSXj	"PmVcٹ`\b|	_7:C,DToe	)w>QyYDN>,CtD88CL-d?Mphw
2x)e|)@JMx~ȃ5^p/|aƾ/N۱K[ذs4tevK)("φܾc  hgO6.8FgjW:FJ.gLt3{6atff (hHXygeBD0Nؘw1h&al1hR?l? ?famCKC_Ik-@>t	ٟcM:g86'7npɴ63Ɔ_Ɛ;"1aIfYO[+߬5k:m5YMp}	rO
k`|£JD"o0}Ѓ~ß
ܟn R+tw6CLY^s\b\ ?kZvsֹ
܇u:b>ÃX~˟W
,|$T*0wy-_C u֍ݷy><导8Mq<l[
v$ ad}li OGMŰ_ m'I"PK
     A s  1  )   org/mozilla/classfile/ConstantEntry.classT[OQNe)P,PPR+ĘL0F>emݺ1?`b蛉J?
rh63gΜ9|3_~`SDB!r\
GFeu{&d
tM8#,Ut64,wU3dӶJb):emU˛U/a&gcV-%
N^`Ȥgg_9,̴2gXJAwnhSIf.jSrFa`vJaZhj]ӶUu5˝\gm#HOgxfB<²^t'3(.,/;dyՊ浊Df,5_2},9.SЂVm\A\A2+EJA'Z,1+8GӼ^\cEyP+a[UU*K3tփE.-;hL@vǇz6Ցhjkvs?I"z =&u\;uț-I26H3LY%(guEECX/gg+9
㘧Է7v3)( /	Cj\f;#~Bh|C$/oP̶מɼ'=TJ~B,$2~#y8t3lQ0o@Mapi0t6*!'MES^kS'J7{'ۍkы!%QI(:-fPK
     A *O  "(  (   org/mozilla/classfile/ConstantPool.classZ|TՙLn!0@{! $Hx	I2IF&3q2V"u
-bXv[nnnv֭RsoLbo=;|{^zghVzGP&/Aw=0IsV?JsNҼ/4LҰIc\2?JOP<4mD.Ȓj<JRGk<C'Sc5硩<^2M	LVh<C!LOe0Ety8LU;.!ifIS+xY{'ϗ^jYP(W"-ָCM|JS4j\/iI\4Js4+D&iVjېL#d|Clw#(6o/mokGAiLX4ޙvɄԚXM$g<LLS"MuE:C2XK6SD]"rhJ\HZvd:ipr^hdc#ѥ>5iIw])Df=LT߰DqP	nJn.ە:dѵid{Norw,Ļb}#zץb GYi[Kq憵˚ٶirKȩ\aMT/=%H_!Ɔ۰pipS	6_26zA1tH:HJ~c({
͠8A	'iJtFw],dqXf
ԃUD,]\"372ձDy=
G` ru#IdlXpxr+!@0{ÙꏦPw4d1EAFP;ytWJpԈn;2EY	$6Q#s#|yW'jv6#q& CxiqČiDnu[4+[HvձX"nٟN&vjqy6ud 2hOb9|&LǺ
XA[ZI5@<4zls:
}nwuyz@`bne͊XР[2-$%q7im
a-U}90pXP;8r*$D";=L"MS}/ePk	ޔHDS
%ͻx5dns·ECfbecMyP]IԒM1&;"}XzS/IIX3m<-EN,-)^4ϧ2>t>m.~iNڧ'q2c]I>F[4^s3Zz~Ekus:7[yN_tC,f{wIB)ɱ㞤D7obd1?Bt@N6 vE:2
9D#	82UYyҹ29*K./4Oǘ>czT<ėzwvDұ$Ƹ'❂S%J{8&
:Rl\lW@8=stW?I.Zq8luWy'=.ޭͼiB9^%zi%ٴW}mOd׋HyE?*^h69ܐߪ(N+Bn@Hϭc̲'wT*#ٷKk#JHӤByy]rJ.]<v*'p뭊	%A)1{]1MH+},G%*sqNs

	4TjH_*O##H[?zW:9XЌ	\Xsr:DwZubY	[TcݡX$;@L)\&[%gQj}kqQ4&S0闄Yd"	%.u-8;3ڏz
YrR+^46_Q}Vf01wbwaܝ38398ƽ9ɜq7SoxGx'ƻrƻCEݒw9~ꪏ~yDVϏ;0xSit 7Ȇ)*h=EdGׁ$iٮ+ugl0AvT(]'iTǔXw]Lh;)ei.盩P#:.B%V/e.`XC	:HϚAarI*9ѵ莲x1V?aUJvӨS͠J
*
Ny^˪W_7Oiu@Sg)b2~;KS`")Ƃ^8YX;	.dcitvAK,1_+4;A{DpD
J(DpAH9ѕ@d,t1.WQ5BЗZ-hHGAH)u7CMO9MeA~贡eŜ H-.5B&GKxn>oBSį[G3<4MNfc(>WȊ:\FYCLUW}-0]G+h9r%*0sPh>%1SM#h+-2+dd(5`]ЙG?J
_LkوMi$ڍh4mT4b&dAhXlFl݊,լҬ
}X帲Gy
a_6+]i4
 }9r&ij釡
H340idSsu C33R$Yl4;Cs2tFxinx9'gwaZV3TszB+}ȕLȑk"'nDNlG! AntZ6``
}=ܡWXڢщbxjUd[iiiI	70,.c)-c䰝C6ꎚ0f-p=^$}VDr2`G%8h
=,AV| ޅLpc^SKDiy_9*PmВj<B^ӻar_8Nc|Qڅ/o??HN8~By9.I$O#@ιA\=}EԹV*`(BNB0|
9aWIi[,[Lť1QR.cHϓUrQY*^xm7`)xc7YZQn۫;s۫ytV8{ڌPZ-ipK;C2'ܣV4 Pӧ-v\i%6\ihEE?R}9[As.;h)C~Nݧ)Z
S`P4kD09$ecB"eA?ŊvB܃GpDK		ΕmSf
	ky8(CdP,E:iz?sl繐'7rWӋ\O/*zWx3}WVgǎ({t!|^٣FNYJgYX95;Kh
/4-=#{]nu</Ray?
 9*wi{p`ƞ!6ꂈ~mҖ>":«_3੯!dJp?;
$Px.0Ĳ<x|P^8?ҷXvæj S#"4>DtMLWGPdؤ,2 ɗǵH Jc9s۫
hþo$7aCOsT]DD_TYB5J q[!eXﬅgJ/HY6l%xt*8OaSϟU/+&+Sn3UuV.@\evS0̪jj-q6ܺWR#qnЭ
CW^כ4mTZNj~]~dpNHAJNGm:4UkBw	SzUW{}<qX]{5WDQɋ*BΣc8:	@DzPPk;MnJXs;Π2i# pLZAT!ʳh;WY
@ie	y*@x5=U*Qc>Z-:E
YoPfU''|}fkVּJW5:\*
$j0+i	/ڸz*ɵ.B,B
eZBU58w~&fPwi_&[M/COZayy

2u1ق1hZK(s-CFQ	dX©/Cas\A㸉BYkV^G},Qn/Fz7) s ^UxkEj2zɺOU9f-$se#ΨRjF
](
缒]j5QEIn~Fy}X<?WiD68/1?)
+ŝ9bZlMCu-;-o}WOGOASjWլ>Ȕz41U=Oi-$ǃߨ	}mh跱*
(8FgVSe@4'T'PK
     A  l  c  /   org/mozilla/classfile/ExceptionTableEntry.classRN04
$*RԴF&AA_P!q(ڊxHzg#
><X*aVXsb"u<-5ʤ5^Tiwis
.ni3X#wl8Qڒ8w)S$SivZIG#ųR*6#qeFӇ/1}뵓4'Ҙ.vq1@ـ
C2L^q?<^H3
tA-<Hf8'=,X,QVpYgg0ijtulGCL.R)8l'f_
T,#VlXѲ:P~:>PK
     A &(    ,   org/mozilla/classfile/FieldOrMethodRef.classRKOQ̴Ӗ(/%ShymHLHHLx$BXZlF]\ʝXM\w97ןo`%82qD"'Ŝ(H`bQ ^Fc9qNw^PUbF*Vq!MD U`]aڛxlNJ=n;52[zpR{SPKy[\pSXe7ظr ɬ0AZjۨw[
VZ:o y%mTa'dɛVYbIe^Y/\0ݹB^v[赐@K$zfnƄe#M&Rk,t,MKN5QGrBIA=d4;ׂnϵ`-D>۔ê4ea;$`!A@YP)KúBZfE?^*gjm	ւm]#C]s֩s?}~\b瘒2+-Q/ C`]MW݃wB^B0Nuc/0s(%X21Xd[y״ؚ`
Pl=;+X_EM5S$k%4-	*$|*LQlPK
     A >  
  &   org/mozilla/classfile/SuperBlock.classUsSUݾB()%Mm- ,壡5yI^xI:8:BWB
X`ѽ{n'wnKPL={s~{ [1!E7N0%i^Ί4-ë2x#F0fbX(a81B>s2p^7a\TsYA(_W0JQ*yTS
<ܭ*nݵK;O
Qѝh8
V;]nVstnpJrܭ85]b]YJ~eԁqϟ){︥=R(ٵ9L6.	& jd֩	ARqoLJ&f)tr'Sw@_	cSdI]X3٬G<5ts@߫q+
f˛ޮJ㺾ehViq(463?-+4|ߩsUWv+6pǢxP{u_\`ex~b5i2g4j	轀YICd}du,˖G&ݺoG?Y\Scq8zeHЇaTPI#8ƥ8|n̕Jά]6ʬZwªҭIS%*h(t/Ծ[*:>UIޖrA6떐=إRESp09W#b}{y2rmT-X>,W9n-w#g$4eժ~׆9{HT4M#:>atk(uqfGO3ɣ=6]
B;3Б]I.- 1[coa\F8c21!4b;aɏV[g~ǈ}HcВ䤴$YuhI2aF&!<,Chh2ěZA
OQ+!z$;:JC_Rݬ8^4GIBkQiw~Ƚ٫ւYƲΫ닿+ջ%~^5߱8o닿&&Q
%40\"=́AH͛ş%Cgr8A|sƊnv/ #؅	YOϝqW*p<<;tDztV}.3t7twfJ" RRjhJ~54	i6.Ҷq `3mg*0r:0Eg67tװC#IאP'tQKWsNXWI l^iܸgVZb	qV'y&Y<{r
G1iE;IGŝN޷~z`2KЯ5ahi#t_d)Rv=7c
:#H3CdP\dΉCF籄h_2GMΟV%ʼ&]Y2hQGYM~t Hr{@8$!8Ȳ:e046]jKߗKmCKmc#i뾃UgnkMW&7%>x]wKKt)&2<-ųǴ#|ŲZ,_{h$'mL[
S|@:x8X	d@PK
     A O    $   org/mozilla/classfile/TypeInfo.classW	`&LvgIXId9	TEI	!ژP@-d'f'
U+Z-RjjQkh/kmֻ֫lMfل	̛>8 s!7pC.foاno[Ų_÷šr!>wr~[,p/>J[ÀxjxPCixX#BG}Ə5<'"~	
O~.(/5JVѯ 7ҺBVh)Hثxڤ5iZ޴Reͭ
(.m]I`
<ͭ-!ܲYy
Z-H9iY6Uk]rvScdCA
F]ݰrxSD^D+VSG54fKLF8)fÈ61DK)(k]=űxܨTg,nF6DUO5Ud)W0,;ܰx857)XP|qQ7]mv2?,z!cS	)&"KA
70
&o3e˴#FveI[al[FTAҐH'x~ls^7ZgqbFkcU.U'S1aaXFq2Fŉt2i&y^%A+݌o^n&̤aQgȍttPWm:>C]̃.w+jm? ¨!.m
𔱎/\TRψ[Nr=P9	13m&Fqn8]1N`9bˬt"ڴcV^|D>XW°I(:ᎂ,RD3C9n3"V/T\KұxL2$&VS޸HUDO(NL
wH35)C6+0Dk@GZᣎաY<cV C,,`GHx2
ɮt6lNpsS/Ke,2da:^K:^oHuwV\[sΊ*~xm)Nxoxox[;c:%B0em=vYio4D?O:>HD\NNE1CVڹJ'sV	q-Ōxb3f:+~#GVvl8J^ϊ.#p/zwquL?¡+u/p,+(cG G{F]hm#.mtX	kD-zvH6΅Hܼ0-j+BTC*%S&FGd3LRruTGZiyLxO)gbN)w>J%&ENH6ˬ$M=#FbF5Q1T&1<h{KǕvZm75[x;imQyS.J3QEK̪]!&F3h'0C=?@oMA|Q~&Yx%Yx#YxeYrgeagg'ޜ oE|Vr<	Q+XUw
)2b_̹PTn#bz?GĹ3x:Gĩr ApPZܟnv5GY)ך
s]ޒd,wEvw˝WRm\3*̼.\(F8dBu/
A~A?,~H ~NP"Hf)*"j43ոxbGe &.YGD;>i}oq雳=y>dpj}WgBz&Βey,xj*ٙb¿|Den
K7C+aU~xrG;[Bj9żMЍ#3We3s~I^VCHR.=3y0oQ.J51}"n+B^i82({K1N-/:ϩjb|!5?.!_Ҳ0-:H/=K(s>A-
Ѷ`qH [Eu(
`jݤФA9G=P6R"(sK##'qb4|FgY,/셬$d`3if"FrmVZWr|N\݊яA|	p-8`?v]܈&~>enQ*ȽRX'Ѻu\_Gohw7!AH-;i:Vj%Ѓ8ѭ$!]T-LȖ[@s+TfzFkr,Hհ7bcڒѵD
AP Se>ŋ5h+oT|&|K_}^'35s5I6;4EL39s&?/J9$N3A<?xR49%	Ei:&(nJ7} ~ޫyW>HCL#2en)y5#X 8~y?7-,-3AT7DڪyؽtTO$sTfK9_.g3fUy\ARve^KML_;S)݇E=k3m5yC/vf&'if0=ʳ,<yOc-KS>{*Y4_dAB;&Fat+XV#:׫s(T_YyM7~W2W\~ݠOW
Rl=Xwei_&` gp%_y1м~v&$T1hb4-GB70RîPK
     A               org/mozilla/javascript/ PK
     A paU  B  I   org/mozilla/javascript/AbstractEcmaObjectOperations$INTEGRITY_LEVEL.classSoP.t+tl26)*967 %i A̥VRڥ=W-qFٳBe䜜{~|9篯? b7
	<BFƂBlD0sCD< .<tZ1UkMA~k-MgPczefA]-C~gR{5CG}u鿪tnZfR=d_d)w&G6uL;6X=C;y;|,[N>[ܳZrx`iE˱=e,Qau<GhأWr5g+N=4܁gK4v]QyAe<a(OvTmW<Clg)v^ǰ8L^/zz>\
[*-zxYPHǅ_#"(qɺGZ3B"atKR|
ˣ][%!`ůTQO3$)*l#L W1}rM;:1kݵ5"7H>GPNVp[:LOs
)EI(
" ~7PK
     A d	    9   org/mozilla/javascript/AbstractEcmaObjectOperations.classXw~&{M2Y`+p\6	U
%I%Vq!efkZ[Rlm

AVimZk_Ӟ>f	d6~[ oE"T!*Wbđ(Nhb,Bhv-EG4[E/q`!!1Ol|TL+RE*&}҃d<-_328 >+|Kml;2+{Jm-B-%iFcT5M͔Uj	-Nb!=5vhFJY(Q[TCԢ֩cy(ntѨZCݥCOXuk;LP#V ҫ;vh+1sݪdĹjKX_KSc<fi{U!VUc]uIYV*	̾%AD2e|Z-Cu;F0֩PVkYz(CD(]><9.gO"
!aĦ)6R#=Մ #Xiyr[!mj
o.ʈ3	N͌HZgLe`I戌%8=Z)efBI^/b
	'orM"y+'Kov}7+]+&@DQcH˳#v4l6ɘhsP3"Z.J"V(Qp)!^0'2^TpeDO񒂟!ˢ_ਂcT
^UK8`'XzW!(x
'S
NMfh'?ƽ!
ïï(NfWjtVm,aZ&[
~w?IGq),VU'|$aI%DW	7]Ex
ʎeWsH;qKlW4-f%F$r;uH)wۮHe	9$_rf}R"wQػ"8lrs<fjԿ"'+DgdFG8W7=IUϯ.޴t̊ʬ:[<i#ĭtU<ZK
xTScdZ6Zq(࠭c2[٧FޛMBn43gusjcs|&4a!R>56XkZj
dDpqx^|em9}AARwHVo6۶577Z7ǒź9fDr[	-}8I?sač~QYܔ%wrlur#IV;5(n
4L\c:da'$nJ
&eqP>%8۱=`g-y|?2m
2税Uu1
Pm/z܀q{VbURXr@zp`N5'ryKpt\B>5bR{ABX:P6c%4PY5jj"m[o6enmpҼbʭZH4f uؠh⨀7`=\(-p<.`."%#$cwd3LEIF/Z,7A Gj!LY9O׻nz!q\S哇0ug%>Oٴ!Cc 
1_CYخ!L%P?.'LoAC\aMjzp9b"?PBI"MX"MXh	ƻxi\1UOQ"c$]@OP?nsi\P48Jьd\<IGf
'<!|06HA=PV]Mrt
"yXf=x>FZ'IOƓ)؇g,yKϥ_)ϧL?&0Mcȯ"|Gr+i \@S
IG#Ebecvs 漈aehr0 ;OaVZL
b0n.o9bAx*KRi"P!gLpu;t|0.ߠo"_+Oe;l|q^@=9cqL2KjQ.zj(ERTspW,0AQ]eVy_w0\cism=} }q:DYC'A"#F612%*o>"7mH] FMH챐f)HLHgB'!CHRC*nQ;X>uY<r'PK
     A 5N    8   org/mozilla/javascript/AccessorSlot$FunctionGetter.classT]OA=ӯe[@֘ ħev?>(|EQ|02YBM;3s; &!DAKH0T+
biaq&%p!(V;U婒U'CӚ93݉|Ys3k_,uOYֹ3UE_R,M+>f3DreCu4Ӹ[-VVWliEJZڪr6n:AHl層e"J4Ȼ1R5
RG]c7r̚ߦ@yGQ,(J{'*3Ã'w,(dJ|R;B PbͲ&v=1(#2dz!pIeddL㊄W1+c$de\GX
ߧːlބBW'|7"qGEqGk
GŒl*Н|X}tGuץ*	YMP@7V#ziVk,C48UӛC+}9AJ~K|#<pp^!J؎7:ɂk	TzApG+SJ~'x·Mm06$?6в*p"w.{prIG8Lp
=Ed	2HShpEخ ]ND ~1ǥ隕0DnϠ(YACUƩ@PK
     A ty  w  8   org/mozilla/javascript/AccessorSlot$FunctionSetter.classTn@=8q(KBBR*UB*dT>M(veOJ?|B$	,AqZh Hϝۙ3w/^(tqdZl9jE:&՜qDG!._kaR4iglזڜwC0/خP^]eγ}[ikIsM!s+9 }qKU8<oYAAl"r;eJFApR 1F5X(bm062\)6˱
wUt4:BfJn:ת$wBI
	խtҷRSgm⌚W&P-oMP1$M[bV;r4`h V$qq0p踿^)La({1dqkB4^ChV_g6Rq"a׶9w3a28Lm+*EihI$<UO=E@tBIE^Ub>R>A
SkDЦb}ZM&_M1\L1Ѝ؍/(kbwc hW}4baî!+boLI?]D?IQTYXԃ4۪Ccao!G=i	iIU*3:hy d HJu	Zh>O PK
     A u     0   org/mozilla/javascript/AccessorSlot$Getter.classOJ1}SjAՃ=axMðDl ?JV
E(tǛ7o_ p1$
ǅ4-&pm+AyE4\;^i\F*jg	aMu9]+kz3mRT)ڸ-"<9Te&daj-g#C* UO8CHxczA2)	̊_PK
     A 0Eu  [  9   org/mozilla/javascript/AccessorSlot$MemberBoxGetter.classTmOP~6ڭƋ/0tth0&HMY4~Yڥ#~ş11ѯ&(YLs<{_ 04\I!ƐIaW
ȪuBGN$VU0R[:85YX Wx0=>QfH,k!]t<"+|%`ѷ[恣ޛ΄|鄄ns<RG'E Q-J/3X(dE2w$5wdhQ	OrRx.lI$=d낀$kyHg=g2UrG`Z̤x5jU(hz`%G7)˄)N(:nƌYܢ910`uZF<m丩zׄ+*\δO8?{Q]MjM^*4C/#o !;.Aǒ/r_t%OYKW0+OC}v	! n1@d)VF)58T?VV3Vv3y<WR(=wD(?t۲y0ɝv1LHxTR܅ݮIu4P\(nѫ\v`Ah~Xk?PK
     A .Ѹ  k  9   org/mozilla/javascript/AccessorSlot$MemberBoxSetter.classUmSU~6&ZJ
EP7m(F_.κtevoC~qvESKgQwCDHd<?|~&
dq'WP10b@A#XTm;N`Fny;}Vb,#o$^7K9/n:
^oP#"O[*Ƌ	ݶa9rf=8vpv8,?OX!oBC+,p[g{YCPRJAf726odsq){Ox#0Ξ|#4~̹L$1Pp~3WR'$yXtUsy23}řhRUTǄ,NUk6@㕲xn_e9L|ԀmRˁȻ,V،lxUq L Ea>u|fs&,&wR&buA?tϩ#v4tj\oѫzΤx
mDg1i^_-qOR$	D$B⋤t]'R[=~D[_/vƦ;.JH%Nִ޹dR5LdA]gt H4!E`~R~0D	*#'xf4 G*5"TjHWSBdt+Z^;@涞WgGhl_bTfȮYk?`L, 5cmGrJoIϐ>(=~E	/y:~e _'ہx( 1zo0]\Qmq25\bLaS['?w6YɢJU/%O$R+:ft\k:Qh	uVFZ։0}ev4Ik<AMܒn˰RxW|ΧH#5Au-7PK
     A 8*     0   org/mozilla/javascript/AccessorSlot$Setter.classPMK1}uU=s֓BC@DOiHOGٖB
;y̛7?_ pV.qJ"'e[&^-C	\#WkioXDW:$r\E)qN'yL!NyFo湱{9Fk(1!gO;]0^89pC t6Pt_aL1NPK
     A s  Q  )   org/mozilla/javascript/AccessorSlot.classWsiq.$D--)%vcpZ')	Z^;Ȼ*6i^^x1>NO>Йv9+9B苾|ꯟO oRht
qa
3pJG1ìqpSwS?$	Ptb>$~&TI:+<.9:~G:~,4Pr
:VX18_4}uD5;ay}BȣIxJ`tPS

l-6-ϧر>~	Œt_?i:
N]og=cfόy=(,wѢR_~۱:k	JZ;i1a۱FJ2D[`&#LԂ/'%*~UGl_e-f;XKC
fϝV(29ΚAi[YoyLX高ؾ),rN :d	&z `3k{1sVY
Mgg4lgY8u؜Sut+glOU4UZv눦1	ӡJ+t9$1Ξ>mIϝ޹$T7*[$lJi̮LiUiujj-ykR=j7K]W:/_9ިnnLgag<oh%ljq70c0:4
HFd9YwQp){
<wϷ|Աv^eV*}VnGտkp=~U_ N
h(t
~ge6pU&uKU~9VWsݢes[5;V#4iM<O6Ċ2$_vB;;:W^"[zIDV1۹`;csB'V_-K)]uܥ#nHw`ͅwS!HoE󳱝ߧQlA!)qVn0g#L=KnD㹮 ~doJQ
Ј\

~ J.iUR"zҪtj%*yGɈDKW"Ft$mֵXtmZto,{_~%ɧM{2HEаmr6/!nZDJKh`!}z>ݲ
Gzͺ,}q
E#YR'dXtkFWP/faK ;.4c7:%fȡ fXak<8)I,ڇL,	>Aa6*Ct:+T) W Y$}n܇Y|D	6y
C{e܈oqT	JeE5WJ$/ӯZRBD֝H|Tǯk0	zM:	V 3<oN1|84p.ry&vu/M6_n-,.Xlnb7ԭ?c/<0B-7S'E0ui]iSeWO^[s"DpAWIiWL]ضI*(DD$IRE&JL\ƿ8>
.8SŤEbQ
7SZ<Er%OQ|Z⸞O
L|n$A3نxM%$PK
     A fׄ  
  5   org/mozilla/javascript/Arguments$ThrowTypeError.classT]OA=ӯ,~S튢>h !YC0Z$1<MIYmff|6&~<曉ckxw)
iܻ眹sn$gǹ48o`@1\ud`<hdUB:]R90f|Oi%"o=_f6RxC0#nܫU-^aHp<Gd/N-1$fzgBШ	kn$$Z7zQ݋jY)}IR,rJ	On6'r3Utڜ!<FD 	bs;Kmb]W:#y[[b41$M0| n##qбSÐŜ{y4øEz4Wb.lM~bW&q0P2|]-*+ɰK6p%Kvj`CG*V4*Ybx	"[
ivoPip
Iї.-AwLE:)m? VJHJo	@D~hC
E!{6$}(O%>x/G]_ST
&,y<E1&,P38KbFpOAd~PK
     A :Cw  '  &   org/mozilla/javascript/Arguments.classX|T՝3wN0$<
PA  ar	#LL@ӊm>b>6P	_kn}ݭ־vۭKes͝M/u9y/Hr&@P5kGj$^Row&?W%~g	^*~kV&ߪSS~ߪ0?ȇZbuc7g~_j-Cb$1TbJ8%4D,),Rsj*TS	TQh21,drX2%,RcTcLJ`EYOfo3hj.Ig2'v&u7%&(kߝo?k9ՒعUɾ>OPg;חf\|2Hvہ[{陏W*7ܘܗ\Нt-hҙdwm?a!bV]9omzGK9jA}Ϧ;_:J8ls۝8I2OK)
\ׂE/K$auQ]eL:`N.u
錝iړ;m%nlw$iE#;MF9cg}d7Mwfn]oLJ}N|25٫Y25`d	-~jTkItӾIP۟oEXr>Vɫdem.S|<{)Z'rvOvZNRsIX.9O%c;7U}iέikHZKQ13FoR7Y.sU?g 5e>B|s՗m`m9(Z7蓲[:q]}t[2
=糢6ҝeKY eY{;D¯}#|t֢1y^u-MAui'&m^?b{z1kWBٛ#4i.-()ͬsNmzvfIȟ3%dnܟٔڹնc5\
h=N%GʝR䗖s0\$`_YخNS{h]PzMk9TUsBUnRڴ2L+tܷ
m1rl!jzU9cKȅ\$-XYX}lYb{,Ѝ=ݖ4Sio^7sKՑ,Y&[\ʔՖr%넞YRS',܏Yw+ex<CTZ%aFdU%M]򈅻qAv%Ip	:§>Z+tܔ{UdtՒe%Ag)I4X;}Y8A"NYr\0r%IӒ	f-<,zm1uwYinI[r!XFV7.x+՞] |cIF^:(t/?c5Xi9t\I<mNȘ]7PSwѫGf|6@^7cRntW:n5j.]0v ӣu'$}ڍ[GGN&f
ܾqԠN~jnݮnF96ve;PPahd 6Kl?@sc1[bjʱNDxtFȓZp\*ٳ1ǗS.RyռG[nz HF4wNd	S:L٭t*gΪKL<Tj[2|c1[6lѼa˚7w@;P;-vgǪ}yG0=D#kq(]Vb2f0SjMPR90u؀dNbsu2,..cr TUTI7tup:M_c$0}k	_{r5+|m̵^=;sMNR^W8Ua
]~߀7Ny'v|]EݜϚTn,[uu^g{'~cu-vXT;s BAĸؼ`@i,JO
s<@E|FĨ{Ay8rUGG#vyդ<h唆/ڏ j߯pv"@C>QYF10pgSTSS
qiUGh/#$GT*;.%x7o4xR'1q&n :Z%Q>0SLAHӷ.}*ݣ9\1XZՏԤzဧ޷T994Q\O΍\3O&W=i	5~z߬Ŝ).55 2I+wy]ù-ZDUT f$g8=QRMH)nO[ye$f"~NbVl[)I(*4q=KOMF1[I4&­3,ض]Oa7pW+LlWQU8_qSJWYH0Nc{4qO=\ymO9X *>]$
5PP鸖YV$4lkytZ"$YQ2
d?ZopMk*e9qTeQj)cd,e4,hʣYi
z>/\%xZM0'G(N~ ^)T;h k)CkcH
C,Ƈk=fj=fj]fT2_UiTQ)gw1X+m!G]H064a45:FC\yJSڸ1	Oh 	ruq}`Py8/賉ARJ#dan&[=Cۅd2}/Jur12ȝ)Tw3B;Kq p&:l2
*8U8O0qmxjA(1]?G8XPz.pWdf5Ԩ`3FH@	vPl"~a!6:A#TGh<Z!|R5riaťӍQ?}EH5ZA&	<vr5)<3ԧ2ϽP?8'}* 6/k4Ջ?ɵ*2;Neho>U2EF+iPF=
T}9kc؄le.	5ajN⒣5{#u";YWƹP,L@RAP
}KĥG!4\ʩM>b8ut?Ig}W@?Auĳ6}.^PkGZ|yxno,GGSh5nc}M~3
 PAlT0_97u{(P
Ba*oi?{e՟qbAP\4Pxq@
vF1?axyϊ<דesFϧـWY.abgӺֆX(Bz
_$' _

:Y\^`z!xL|s+5y7xe;\c#:O^hXųǘJ<1drk1R˙=&qyM]i/9GZ-sc
ȏv<ۯ: Ef~L'全2
x5e.~u%KK(#/^rFzfBgw=iLݣ#aWŮ8ũj5(DI8G)BLUb"2	xɔ"!{B,X!-P(=A7JYj	᧺dAc2uad^dF'G'rCHLp_5"z`N_eQj5]c msE)XA5h0o4!aLuiGHϹ8skUH蠟BX,t,31]f^.%XfY*mRR[[`\EK^?*xP.Yr)NHd)mYr<ҌWdA2Jp!Ʈi=^-U,mїN2n?yȈmPޔHzx_a,=:őg~Ψwke!Y]޵&`	,o`?LcxNOԄqwu|7<uXΣpq;{?RXE,Ѡ[-To5o
wuv(8V^5 7D́ ZW}4B`; -|GDZ1E&1G6ѵ6cactUbl鷣KANE\*7hn]afRT	J:La|_#'ӐFIX
wnI~93uy+xAz.bFC(J͗&l4'"4LT:ECZƱ6)+UM%3ף%,M㕛am\CvDP.Q!{0Iz,CU/])ǘGFS7Cnv(@KZzipA5RѳAMmZ
0mZ5r]b9WKÛo8XgT)tTt'?_|<&05J/}[eIl1qւ_/,ry;DV~pzj*
IYCn8܉rx7=$j7aˇU{:U:kDC`1
^PK
     A ]cj  7  *   org/mozilla/javascript/ArrowFunction.classW[wGF2\b
Nβƀbv64#F#sfd7S^$^dĞ{ƲP܎j
^,$Љ&ğNcJ~x2\{
OK3q<+9fq0ǬdKP܊zu8_:flAY'VJER\5kI-~<sXv\ú.{M.|_it;Rs4:n\
9osUGL2bPCӴSg&欲;WC {ز-W{wlO\з&tqfYcp'䚆d1&Cyx;)r]R s(رS~ݛW-;awcg͋gENЧ7~#XLV0e)2g\do#I%z?֍{fܣfIKLɜLp4<[8x[zYΨ˖Y\{VU2+7!ܳ7Er\˓ΈS,Y2#;z2!\&n=#lBpt`ʰr5Ks]luFWVfҍKkH;7'0$oA_e{c`/:3g_<kVExWH#v(\?_5^`0g|E
<5&1)g{eo㊎w<yK@3q=
(FpfY,o=:7>9@*s'+w؞UTytgNB]H[K%1J݉z|t͂R4QGzpJY1/
/Fƶ;R0eiO55xk63tueWtZP2RVFLՖil[;NAL葡(Kfi+Df{=a˷3bOdJK
Cp=K
%3`-^Xz7VRfFC6s:hh*uV4sbRe w.(B؍l_ps}
B'w>}ZzS/No"{с;}@,뻎M4bD*.LKŮŧ/ӋhM&R"}3q?^aMY6ӧ}=[N:qp]xasB)}wn@QpԽ=(d<"9p?<[4ٺ
Wbӟ#=r:#a I/ME($=Ga;bbb mZ)&?#2ņ0;Cvc{#6ÌH}SnLYڧU$U$U$~\P+rm;lY@Ŗ/5Ɏ0v((o0,S;|-U0J7d(mv.7ڹmWWWYAl$viEKdGӋ躺*^+DxZ	'vUk魝78xq} ,vQR%ܛxqp"0]	Lwto;ѧ?5#"R1	^ y1R~bx  ЮC|bBq]帆7x(#PK
     A Q	  D  )   org/mozilla/javascript/BaseFunction.class{	|յ9wL~!@ I,bXJ؃I@Vd$g&.TZ[U*ZC}}}>70|'w{{fxuWyWQ	Z\'z9GZJqt;-Q)6J E1)6I$fY,۷|-f}p;_hpIKI#["Iݠ_l%2	R|A
*)$W qmWdRijmn4x|[z.G-=2v{}ҺR|H-qg<Ca'@#UBn??ʏ!)jUOh?;Ӳi"ų}VZ m /ߓ/}ees-R"]~W'45._%%#okt3^o}d,mYK$mj3yd*ږZmyjy}x97̅筬YZae"`褖h[ӤR39kVX{ՊT	-ZP`yʥ7]ikkJm65.3&Sۥ|E[cu1tT<]h5֖Jʘ)
5+VV[A;争T<TB;
1
іQrĲKW.]vuFڲD=HarMnEX"
|v5b UƎT,}ѡlə&Y6nnkN1-*'&/nniN'ITl[jF+tnj oĝjbc2)b}W{ۃaSf$;MƢ-F&W\x1MsXC-wE*pA]]#+T/];0?֞5DSrnhyG[МlƊ궶x**2'VTg"zg
 ENjsp\㜓!L59e KlhFS,5%LC<O8рEWbM@ps4YMh ( fgH><%z`4Sk ᚶMq1 뭫d{mMCۂ,kN\+l+S=55QB>7VҶͲ_*4dnN&e="<pk<ڴ7'-i2ko^y -Phu30X>G	'y!mm+Z[ꄌ1KM˘~	zԍ=
d q
	/\PLCNoɉ
gbQ֎زt/ΐ+,mƕ{l/ch#-ur~wB"K>ܲ<Z
<bhB7Kva6@R1&فa(lxk{sex1ɍ0'hni%D2t$S@2Vm8rvP#		F0M4fь(,>A3W͢	C	;6ELފ{"]5j~=) 3̨g
7:nhFCapI̘!v;i?9<-!:Hñ6r{67X{<BwA"O,׉$BSԳ[|ȡ@1Ŏ֛iVL;QU0&J?AT}R[5qk_MH'IoL;cSr	7l8!6]ߣ=&uK(cctȤ'p$OJ*&E!}?ntؔv'7iDkibO4qcqbFWLHEl1z1Ey?
ol'ӯLoI?7}Jʥ&Wқ&SL>SSyϤǧSUT94UlhbE`*Lzf;."Sޣzǹ~{g[^Q5--hKX!֮\&j
nY<j㹬^q 	Y2U4$FFTƨSL5
CbQƛLm/rBTUp;Jp"X*Uħ&c<~<өs%ͭ-1!%M%D%,eIT𭤹
SjH(T`iR
7ܣ^%	%pK"`,ts(.C1H4:CUjiYj6> PDT-޶5ޑ3 .3\5:SoY$	9TS-TS-R}TKԙUuL~[e+K50uDeI[<Uf\7R~ƵQN}7b_ҮׂiW'Z mOx6Q\BLP.eـ,/C!ʱ"/;XDD8~
Ոn77ZS!36O#umcbɕ0;gzx6%̨ɒg4
Q
N"n)ڒ<5I4	C
5tERE6骶fƕQO~Umյ|Bxl ~֜)y[ <Wn1"V8ڗ"=.hYGJ'?OX<>=W@3zw3SIu8,Ԝhr9hSDn}8d,E)a<'|_	|hB(p&gApiCyɟe'=3d*֪CDt{Cv8|ҩJlj2IF> ca WmW~²;)b1I%;ZB`~`<9:VeʀDP䘼Q"l'z20cÓ>C08be̦^ttu*mE٠dپH#3ȺO:*)׺4R}\'*EmquFg?NN_f7	قO;(ID.ƁwY<,.L[UϞdF/J,'<FK,`䫯X-2'.?~hi`ߦxb'+e:B	pr_}DRggүx
Y1+4nT;iڻWu=ht3a􍌾I#^C>5M?v~1[/~1;GWn~1:Ǳ^']'u=Dw#ڃ#G"O=wo"ފ]d9 j{ui0h$?
e	LKгD=CV9^K5H}_
zըj7û)p@DX^,cHu^G~l3Д_ՌRN]W{MΩA}0WJK,(T/~~bz>HQ#G z|@aaǐ0Y&@$ r)GBV*ThMcשLI.5iI?:-(ě	Ǌ4N)4Nǿ4xI?5loySidUz@/@o,Л &)4#SԦ:B<~pB4QgN2>Cx3g
2}KHc+$'
w.bAY*B#"d1Ɔy9N#uOѨdVT>Ii`	օ#OYMc8Ys>F::D.w\Noh"`I~Sa~(7ml**/m3.ln`TyNͮtWn9<bSPG]|寣[Ew,}42X{+7ƃވHEoPepy|G>`jUR9Sh%ݴ@*w71d7qRyu*vBCn=?ЍTa#mw殀"Րk-!C]qQݗyfBd8@i>unvfͶ9cuZhEƒXtQZHp\g3X~"i!N`'{7L0{`@3p6yK|_6oWgs,aq&Mbk<
HO/9g>	<Y-ÉR,g HG`҈u$a];ȸ0-͟+dCrK 6֋kmKm߾365۔)ޱULyč'4xP;q}0Gf+aa%[L>rN8n#ppbCkP :!If!g1VG|҈gDBm+qȗ܀6}/|^x`XCnc&PAYsBjE`.
.@-sCB͖-l!B,L3< `]e.N#Ҭ4Q.߂NvoB p _q۠q;4{/5Νk;`^v{K=ޣWZdYNDXϧ= 
1|qˡ sӇ-ȣMhM56$X-t:g]ըasQyf|CQ/@wE  ->0fx%x$P98f"S9&IS9sUq>Ãi.\Hy(-aT!Zi9U<c(Χh*|!.mu奣 rƪ\g[⌭rƖ;cV{nNZ'-k0=rq	c:;&43w w7J(y\;yCh@ct
=V@k>Bem)v8NG)<#`GWf&6[|d UX'¥**#!ws:+4oWK[9)VrWt*_eӌpuY΄kyb,M+na]֞Bl*:40릕EGB'iwXEe5Mk]U q.v(ڪ!Z}!(pwHPơ@өϠ\Ey&年Q/R.3J/s]KF^Ny
u:tϥ<zHqo>fA'WQ >:{BpKQy/kb/<j>@[~`T
5Q#gGu`-y+ݒKZ0k)ƹr7ưL<c4ǃ|}[A=&"w͉1%~$" 9Q:Wuц C8T  ds9E'גOľ`*t(
w\chv%ʬXڃH1Gs跞;mD`t)J4/$e-+
Uvж_vjLF@)B?
:ԐeP$_E&	\CS`b8ujbQc:#aǯiSy^n-^[%4D8c$m A0\]rP	:!w6UyB}S?Z;r-&9cn*:DM`sm(UEhuQA܏R;V\XiGTRB'{S};d>MTY3oa|+hN0a&	k=콰0|?]~vt7}-X@PQrw	饻[SR{dtXÊV<s&Q(6穣420C
R[u!
_Ti*I+铳A'(ȇaldF9(rPeh8x.}:{l2]Eő6xMfHpU]3|j]җ-H2=Hr2/"
D}DT/CDPP
p?Єuicκсg&`W̑$CľW|%{Ɠe֝,N
rNꉆim<%MW(N
IٖlOp	`a#1΁>ۆ>Y~0ڰOC`>S[=|7C2U^r
rWlḂ	B>[D6~`\[S #cx14Z1Wʕ;~aǒX ,慥婎[KӮB˽i?;إ@ַv<QuڶVW.\tE]e}pT_	{ʌ;2ɧrTy4DUHcT<*TNU#h۫l }!CCa|	hìڸwa[n	LݸjpZ%>Ttv>,`a/&V\'Q4TQJTJD
Iסx+[^T°0x\3L1yGyjBv"ȉ<ߏm8CZt.m{e /k׸iPv7~z2D
dU^w5e7wRQD6<'`j* y_7}ϒ>{+$n_MR ~7tӍU9tS2[#@2C9!4vS$PFtHtpaET5MUhZH5jիŴZ-U-]hZJWetZN7tZEwմWo[j-=Ρ<K^QS7;`瘃ש<w}ӽ8mgw ً:s!<y>P< FK+y!:"<X%^Ay&-38{?
[!GLxqx\XKYh	9ެW$V7Ѹ붢^{[1,$P_M/>ElC9g3#jݝHpn$^鎊nOyXId}2R#DYɬ9YhEEE"'_׬i0&yH3*IϫzQmmN?RЫRA/
"ߩk{KG/:֫N5k;g(c$2H>9nxcK.~)hYΗ{T#.3(+^.nW?PK
     A w^p]    )   org/mozilla/javascript/BeanProperty.classQMO1W@@<	{h^.Y
Qb2.ؤ^ofv3Hb=%
lLa+mdWj-#zuA|_}1#/RC6-ZtNӣtj֌tMDѐvBJ_2+Gr`]ɐ@6A}b
~KDʜ礥{w(&EpCgzX>GVF%ѩذc#ei0̍닠޶Rma>1Ii1J+26VfE企9GS$)s2J|92+X4D(tXC!N)Ź,Lr"L6'{PK
     A bIO    *   org/mozilla/javascript/BoundFunction.classW_Wξfw$iS66BL-BBMBcC[aMlZ5XJc!4U_G;
hsι|s"{^~
O!'IXX(CQ0jĖ+A<#V
A|*O >#> .
/y^K/ՠ_e___S0lWoٷvwØT|_AmzaH儂-Ypt9犆g?R+i4[vmz&mgz!mgN[΅ќѥ 4jͱlAAs5!XpX[N73m'Giaf	%Y3Vp)Ve:Ɣӵ	z	0V1X5a! o{iHW#HZ
94nĀ!m_u&la&+t(WM|Pwr9z=/b©K*^UArNϠmJ
4q[w0(9J갋iGmNj&BJVj_ˊM-#%[b5Jka1m[Q߃$eiȱICZ']
Tb%ǳvZ
ǘ$8Wsq[OpmkI5,I=s
߭ <dq,+k}b.jpj^ci3QC
?5|*~ru%+KU~2f	fqҰ"wxShg3Ea`y\cn1g:
-{	|8`a<BArgV\Ұw4ܵ6_{ܘ84j[@5	V
n&4 aUV`dٺ؀.vRRxAvM=\4haOٖcuctR^c+z7"uFm[R7:Zt\QĪH[~㼑+2cqyLӰ{sz`5fm~:V}=Y.%AO|o=(7_$gfLU-XVYcC}Hn6Nߔc)N1c]yv<q]h^yi8FY2^]k]2j%noJrLiSr?'uN|y,H.8Ƥ!>M&zl
K)ju=%oKo*XH3{)h5?-hɎ/|)ۅ8~P!Wנ[G}sƣ9Zo?hzyűs^F03HzJ, 3נuQ5y[5FEh`-O#Q*;3숪yY;{8q9
v!Ŀ۰w+Mu?b8 Ζ$rkL]$W/W(}L}vtrփ^#fGɡG^9L0pZA6DTP~r+F׹7ggMx;Q%Nw%\:$QE}:vyZbht?zF{̯îeo;vҏdh~k~Y7Yoa;&IUl62^/DD6ָ5Qƚ(cMH^yO+!PD)#[Bt\
!'yWK<JʒzNyY.(0ȲzrqH\>E\K
Joq1˯E》<Zf#5%38@˖%K%({r
Sc MzH$IYrHDFIfSQi/~+T:EdEJvH`_R&8uLJc8㔡P1VW;yLSBdEJ9tQů)}/D
PK
     A ,B     %   org/mozilla/javascript/Callable.class;o>NvvvFĜF^
t̜DĲ̂}Ԋk\`*1)'%> qļt}kML!FҢT̜TF^gA@*q9A H6FF&`dad`f`X$ PK
     A c    0   org/mozilla/javascript/ClassCache$CacheKey.classRMOA~vK](  
B	bĄzmN²a/Dx0zo2gbiy}gg q(ZUVe"]myc5=;	ߎP
7
^"9|ޕṆbxC`zڶ@<'Ued-çvۓ
?plo]g|q)Դ|(Mߗa y;~pzm)	݃!m[8m
$6?biNki7UQkL69PFGxd# C.c1@$#Ϫ10%00h`
:V{e>hlhUis^LgK}YW8aefkC7=Fb~0'ș'ަG"ukp5Di.bHw]:D&7JN\tX1^1!
C*04Y%E5JLt125%qט!~`_o3eV+
Ǩ)>xIE-hiAϿF^xKIgXba
) r_tg,َPK
     A D[]    '   org/mozilla/javascript/ClassCache.classWsSU~NiڦBH4P	Qu?r{I/71)uW]:3;/U(o?Ïsν$2{yy}M lǇ1Ձ6
X`k(FQȥJ1Xő'rX9pVùO\C'?QEkkx] :@<gfyW*fE Q1˖^1h?# tM튣Ό^m~O߈@dY)}Qt;=ti8eŲ^[?Q0@̐`G@kXuB^UǴuZ~T.Y[lb^lVgsz\8GwWKu [dni4 b?ޭ謶l;fz&I&3;:8T>ߋ%b0*iI1˶`8riU)T`1D价qmj$R8o:R-ia[
puvt4U{@_- {ZN)yK:
FL[v7ԙ{+SI)̕Ehih3~WiA5+hxYX<mk:;|b{R4d9\yƜ*mI fC{+2[#@߹[DMhFGݯ!mpVΖVZL.0VSժsionh.k5j+6#Ma%)x})Btt(xwVlX-椥?~P(vı	ތxK`C`mWJ{_5̒&t{3tҲxKE0nP<Akns|u}o88 GFY9LbsSk3hr	O̳$qlދ}C͂a&RKV1V9@[+Eeliu#-~Z4)ʦi̻ZUo7aѥ^v_ŮTASɜD:yf\;[8wʞI@|{& ߳SsV2=c?rɷ]\|e]rO܃8'RBXLUD
t]ClR[Fzm}Dd3)u݊f'x@MYOXaOb]'i3y
et^OgH#}3etE./k/ 0
/%"La# a/L9ۃ$I_IODZ\Fz䐨{)SybZ9N/&,r-B}Gjq!`o=ce _,
~jy3pߡ9<%h#Z
J_Cr6H,O*ZޢoﻁPyxObߧ9j
#> ؇`pYf!zYSπj;sD%9&:	:W$6P7;$wI$=VGT:׭~JM|.9|.׼}`{Q>\y+
Μs5>^;TL2IYbˢ>	h%S?Be*ox~8n}`Kl3,U&MuNM2ʞ_%֫N%K*5+WufR4*PK
     A       )   org/mozilla/javascript/ClassShutter.class;o>NvvvF̤Ԑ̂bFQ
ĲDļt̼tk(FҢT̜TFAҒ"=zFt̜D}P1H}d@'e&120201 ##3
$ PK
     A .l4  =d  *   org/mozilla/javascript/CodeGenerator.class|`TU9dLBI%LB U:APdH$$[PDu\n
"6,V޻eA@09)	r=x'@oiZ>g09,|	<2_|_9y>|[*ɿ퀅x{\zKp!W?~>gs
W\o-Ws'?rN~gCră
r;'89?Jh@/'[Daqŉ'	R"%Rʥ&\J㒟KMԌyqќ1'2-eh9iÃz`hEKtNd'"rIQ"%'=-U7'}x|ֈi\g2@.
d%N|(r26K#9\c|\ɓg\dWsUOD{':<WgptN,na<eUhIh9lNL\*䤈4\]bNrJRX	3{y%\R%'U<p)=W(Vruu $<Nη<B	?tN:lsgD|eUҪ!:5?*3&Ǎl²%:/mq٪⒒`enc+h)UV*	'f"xuvE BvcV*+BHZcLUЩyʪn8(D\é0W
.*Z@ĥ*ʖ-	MrCʪi܅	rƚ[<*4URV,7,	
U,E1x舱4"QL4mNЊJAhE!H-9|9<s́ťUdvI<>J`Eq0B]`ظ\FJ	課
&#NW7d/w<wu+	V96`fzH*-Ŋ
ʖVjOXD&.6*`i";dϷqETMZj:F,2LFf1nQب4ȭLUYQ(.-
 Y,"RhxI2D}d fI}\ZmnSBM0%Ӊ,PeU(BL#*J&NVxFO)uheD`10geKyCWfc©#WO)hڪGʎp"A]Hoݸ+@Y*?6^+VIo2+NP1*aY6K\<c0"d)+4niUqIŕ/.$]l O4CVG
L^la%.!ؖicJ]g/-c,Oπ?9=qhL%)^ѩ	WW
-iϜWD І8Isa24QܨgJ]
YyK%%+I60XU <uDFiQ[ax"2e!z*2	ziG`l/TTipq=2@8l.(.)"\@BOS"TYUTpC~9&ؔM#B
J\jRVfiXPadI6 
LGo4+'j]NEYt1Tu1yqHOc}=FkPJ;Jbrym5LLĎOT'LI%--M(&R<"A+pDaЩEOYB+yǕV	MsQ1DRfuBr~	i&MOkHfҰkP"ܟOuTT-fa	ȑ^!qaIL?S|;O^XT
."eeΧEVؓ=J79ɋGQNLK#YZp0j2y,/h#tJFUĆl=:s,7RxP@SYT4l1ι)P+ιҪӨI`#VI,ALEhLgQgdj(,XLI.(qo{3俘Vg|1qҳOPCԺ	
woghz9Zȥ+#K{أ#ʹrO5DvEÃb[ITWt'@Lm|(
-w4YyhBBPjk%e"TF-tZ/>ʔBlDi)w=B?wIi$^/| x_W^x
^zZEr^YPW,qW\&.¿@Sx+'*+`A o{FxG{/?Iq_Z^:x+e&ZL nxWl>^'ZK2[y\UlCz
"n^mI^yj͋Ʉsҁ<u\7ށ-qW)0nx7f~x ă^x+aZ$y]^!{s酯yN+jy]\}'8WxJ3^,{cgD/pۋ\zK/ax D,h\fj֧>j6T^*67ěW%ޮGU^8@W[1ć{GcrϽ&#~,''8)'.xE㞺W|IH!+kqB)W|#]xw@b:;),*sqqҽxq0&xq
ϿU1OUwxQG /MPM|2#~Bhy&|g&/\kl+~H8[w+o^re+#^g,問߽3Sf1V	/|{q#˦$zGRJEh\>b	.*_7.&]?.%k-宊F]U
&y)\q+*UK/
Mi߄Qm )-IoЊ+KVX5ACI~L'Nv99C˴$WUo!?vbrXR㲠}J&BEP#.A|I|m+J&0v[WqMMyqc;7ZON+(TXBV%Y[5N􆼪ҹ++Bٱe?l@N'innenйI w2v5^#WF;.9vԯ|hdqU(4l|R]rJIژ=7lih6P~P2==E6)'N:W9!*(Tn5vU(Z!4Ծl$g%0OzSǗ)ΐ`)e=hLv+W:m[#}SCv[H_J%Ф1v׮y	I:Nh_9w`ϠX3c-Nݔ\\YsJ&<Sjp6O@^16zB|KgF♋z׿mNbQ\pʜLGG:WY {AbNz`5o0oFSy$]8fi(mS"?MYGC¼J]kvRmQ<lG h	,qܾwS*K8W}dCuĜF.ME
DHwtU5트W7["W%#4<QE26$
,k,*jp#w}˖_o&JG^yg0cW˶LSV~ݹʒ"ӡ5̆v @! j^?5x]߀7uO')n]'߇tSO::©	_k]o-(4 Z gjAՀ_1bͨW
Hi*hJi6@gh	=?Wg~v
nyZӛj3$rNH0ӶԝxwBj;oRi5৊ks=0$xD-4羇h'!IG&B'] z4a$	`L
A:cۆKcԥ7.C u7"lLPmUF)3.>h1!&T3j )f@KZ$u
fHuHxA-tRf"MT
Ī9OCӺRh(KxA"a擼/ .CXD)1:eDrMB%,.?Z4fa)	oEcǂc͒hq&|%~AYԛa2;Z}z^nvqMpZe]p7Qn~[l*b
Y\t:fWN	7x}0`"C~]0hC1,\wjfDcF0mPPGؠ:r#cQfWNzlo7چo18̯Nqs|;&jk`J6
bi5pF6ΌΪTrB۵Y5pvLߤ
pkH]Lzu/pzI7΅ka!\aZo7VͰڞ~t6ҿIVLF*臻#+܃o8p;aj`O໰=x
OgD \P}oZlLA>%Js (ڢ]ёq3`qdKn19Աk1ȴ{:X!%^S7%q"Vh3[@=$&Ya	wdvl7
jeH7Ii%յ@"O7HfRH7ͧ!298/^=)Z+1\ёPLRF% ,c"Tۑf%>!YH{<)dgC6{hed!C#]hB4h|L&dҠh7Zrͩp6f	z֓xLPr|	7tY6q'3n[ߌҕ蒛n[C
&~qN=.3H!)X&ȷN> (Q}
7f1MҌ-HNM#ZAOM	(LMYؒ(Fb+lMPdD6Em	SGC>mv1:G!j9kmBFؑ#e^q`7z,-A R(x\"tTw~	K*
uZ:)4EC2?ֿEK?Hw$7OI!(Idq?Nv :P Z`GDvTi0	;k-{󣲷6JnL]fšw_0"H4#_ϥNүݙ=5W5	_;6zx퐛ydcVUɬUJV|_{i61il˂O
R 2ltCWtyimobO^}H<ʮw7	OE^H]^þat"\_eݧ!QQҪ*\\T7#*;4E(Gmt|nʧ:)=e3LR>F-*v}_Q/wWP_WQ~1R~5wR?EyFD%ÛgM\~R)0v<Eӷ@FZ$eCP1,/
t_.Lr0u?PvS&Ur,99Cqyd
rOX3WeJvKl+ن퇂tZ*N7v~5_pkM
k 
pzp߱(ڰ,iN#gu{XF
+m\5 +I\ca0؃8T
LMt+o6(>͡lws'ݳZєMtO-5/!w	o72nꟐyyU8+&A//u.LXnfқnтqK׏977[mGXڪ=׋ЇݒK͐Dp
x;4fB
C%m6Or!|߲S$ጶb/DJ=%v؞ը3C{;	G10;`k6(@lC0GcDdvÙ^8|%8+t<GZW(@3űx#4s;Nƻq
އS!,ZZi/7l|p~Egp0X$BD3,-qh3.BbVTLb3p8׈^$JbQN+ZR\(nkv^܎70nQ'px
oqx;xxcX|#7+ cLd>"31kd6]V]>.nOɸWOɹO.
|I/+r3%o÷e{=/wUPc)~"O<+/oU>N5UAuUgYu_iMê 񘚋U9֩BT7Kmnu{EzP$GDID$z]dEzGRcA}-:E6^-[C^^Cwm"rq e&o| 4GTZS	\N~y8J	J*
WZPxq8&zA%Ku8c	
(r2I *%ȇ`
=vA>ի
p]+_xk)N^?; =pc#R(GsӎV&Ǡ{"O="i2
 }Axi: 1BcЉ:՟Lnj+ġ%.NpaOiݤUbfB%?5%O+"˽.ΟbՓgdK+gk*&Ng4l?j39cέ":3"X_yOv0f\~KOWO|cNSC\~o^sߚ?_k*l~1L4v֮^m_MH]c;tܚ6lnʱ}%_^|$wg&~a_(E6ҰLkY
ά0TIY7-޵&E<wYYۡ]lekƜx7:VCܾ'WoJX~*oQoawB%YwUc~4fo1&ߝW}	0wvnrfE}S_ltә=;E`
l'g0U
h,Ha]]]cg2! ZE4Y6/TWy1S@İʨ7BTC8ڰ{CG哂[pc5
bh4Tohe'r]54kD,r揌}!`<S=7V|,H(Tŝ$-tjy~ɱE>4˲zykfDv0qI b%ujnmsݗ5ng:@Q UtVi8[U~~&9mZ/M	y/j!<`9\&a|qL?ؐiaWg@3e-c!0r_8A9cm>L.j0&B_Nxxs|>[5JRtaм@kUtu	͵^晏)?NOF!˗9<\p/i㳮?LE|qi2 o(~ݶWgF<Gs!AtU=ģ+zDoDŷbE-AȗIbLd/ۉI2WLt[)s 1[s1WNr(sEH.@'ʵbRb
Y+sb|A-qP\$_ZL!+C\<bJ(بڋkU@\UI7&5Vܬ&-@lS3vjMUCwu,SO<B1ϣqzVԨb: W'b78{b:":ĳ%7_|hd6c,1o;c%~4Ɖ1S2E☱H7*JQg`h\)qTM4I˸[x@&52#}Ƴ2xYo&f/Ƨln|/[4d)d-ۚ>l&ۛFv4;l3W^2's9T4^$ۜ.,}b,J9\%O7/CPsf G71-rC7w	9/')T=Y`~"YlyyPcrY'Yoy,˅VKYbuʓr5ZVXd5C.Ε˭rU.W[+Bk Z7uVԺK^n#[;rzMnw&WyuTnvȭDy+Uj&rs}|u|5@>&k\cN$5Uq͐OΖ\ӮE9W|޵Fw]"Z/_s]#p(tmtU˷\wɷ];\w\Y%U-CK'uX:.v[Ww;Ur7#NwwOyG{B0%tOQ=]9t^܋]KU{JuUi:ģU3K|:F6%P?cxo6is+?3MquLgx,U
qrh3V;΢(4*ѷ9qY	m-0J?5rp2`x.gL0㞆NWu5,Zل7X=PނTmf0ETrqp	P)d	Dܫ;wOvء#	-8vcOj{dE A\hGVfu1P<
3[$A~bMtG @qlvRtIIɇJLOlKnNjS$ORI$b"oe*Uh wNЈ]ة2IFqb.tgڐk;}F?mxj?ڑJoPǈ=~2P鐭2j	U+Z@0Zu	*
Tgr`ʅ,T]aUOX`:
.U*50$k0׀$|%a	-&k=;.c?JG{举ա$>B\dSZ19D_1ɿQit(^P|~Ѓ~#].;wD#|~9[b_͂8Kofdl8Dbe.Go7KtR+C Q
!jLT#,5
RcXMJ5VIɰNMAMԙ]a5vzP͆u.QsYR\/*UB*BV-T	TZUU<T8-`&ljv۳Jf,mQ6Tb"H~Rlg,/%8ALl٢c<*?h~`]a#7>Vyẟ%7ϫ]?=z,3؛||sCNo-F\Z瞭{WU-.4b݄pu9
g
cÕaڅr^Vҁq}NSws}"i{MJ2a Iu!B uI%Q,u)IePD&o*ԕ$WZ֫I76u
ܭ6]Wmԍ	^U7j3P[uIVUmcj;SwPs'Uwa@GKZ42iKl@sВ2]ZEZzL+jmJLLwL4b4RɖFsW 8+0cRGX
</r8]Y2UKOO8ʥ6tN4l_&AHYRAWH4aGڕZ{ڐIȔidKDEWhri6#m4Nyr¾f|	E;y[Ľ&7%g.iAb;;]~K"V6!o=dM{{<$L~Gu2՜͙bR1P5`QπW=GgyhCuzzc:
ktޠfknsez^n~ˋi),)F%e#)8ȾAUlMzI1Дu
i=hޏVQHZ9	䗥1DjEvc0Sum1 'g	b}_a21xBk}
.zq'v!f%gE[[o2-̱'of^7]4{z#BcHU@VC@}	WG}
70^}K;~b#,S/~M`bhBNVwRDi9 fŶҁ!%.Ѥ4MT	-`540GkbJhF^}{Ǒ.f0n%6T[1+0Q<lE׽Di31udQh~'p:CЗJ`RjNrF#2rMB4尖6A<ց~`~ZʼA,(DiOA7,07$hb$@^-iyގȑZs'*I,s7#p$Z>"qjyz7MY	1(Gٌ(, o᠞䩬Cv|~y7QON_'<*Zu4.9YNke4T9YFdd@#D%0Z
i9FHtMYEjZMf03IS&H	hp}㑒ֆ	F'qNiOo1ax&G
]p}rh.ftǏ76>w;3܇6GPcL;mr2bַF=	^$޽:}!`=~q3
XOY-58*dǡYDauxAϝdcN;	h:iߨ~G~H4Ds047Nhp0 (
@A9tBqhpKFՇr"p71'ib%@;1\F>$coc3&Bc5&`c
43*(G9`O"1|@ Ag+a-
coFoF("iw>!ӕr>෴G8Yr6<kG ]:ƙ
"f̈́~,xc6FNۆ.Q<]L־;(6;'$PU*޹h Z-@Ď"bG1رk!t6ű -cAuD9/m*ϰ]D?UWWw".F4'_Nf
`߳dV-s?lwdAkQz<kC/c	qdN7(c6VDck"<k`qĹ}QBm.ۣn_XTMns}"÷
 έ-Fs]ih/#Ů"-vuXFVl4'+j-cn+o77"Jwc;G { #G)$ Lxu;{24l}uw	30Lt:'vo8b/1@qѭ$lF5iy40θw#LRqIŽq((4N8=|Ӛ0A"Ь n#	?~wC6xWPC~BBAB!BBQB4QC$k	]nBOő`Qp	z4	ިx3OԸ~]$5N;Nn3מ%w9	d2_ "6^ˤ_1?={-5jk|6"Gm_ډJw -
ϻߥMƄKkߪsPmw."1s5'SƜ,s;\`7'$?:FJyLw Gd>CbG0&?9_K
2MƷp&6Qmÿ
b/aC+].
wGڦ4ڈXt>)wi8jR:ױ/5CmYIvlG{q8r Rf̉HƂA\,eqE~@^}l'@{W6gs<PyLjc1M575jI1](Hd3kG.q(=2n_`c=ؾ_1e$zg1
dCQ)>ig"F7'wal(=pWx@#99@r<)/d(_dE[j`\F̱ta!@ fbܙ'K(,: f1%lE_l)1S$nfQěmFu^45-H$% PK
     A ceur  R  -   org/mozilla/javascript/CompilerEnvirons.classw Y&/,`PS;!MXefdfoYhtIB&I6	nHӜ~hf'tw,Ooy߽ﾫ{* |~	w{!OiϐxIY?$#?&ϑx>~x!s4zK$^&
x55xF0tzw$$s V.3$.x%s$I\&N
68+ԫeZGԜi9%a$iMו	eFӖs$h#W2jٚiH 
IМQ
Ru:S&Rm՚Q'fMk2iMMij
rViVr!'gMW&t|l6sN+bXQu	؇5#3j4.ێC$>4*/m#.2-54efhlnL+{.u-ef]4G;j!2sH&"LčwtZre7
F<,FM3ÔDĨ`CZPNU|]IbF-4Cs%E{$\aP)G9)FlLkUt3cFLæQ&RLhw]G`	VZ:(铇U}g`i!G|)7U=K	=CGȬEWҊv1wt%F,w6etjvrׅ.VXҠٷ-9ht4R}d)Ht^ԑR~*4>ZJ0SCG+ZA=.|zm:EKy3*HV k*6{B[V^ZݍeІJ{тpM*JZN>dHK3TI;5ӵGWsQ0Q/KriK3|<-0ok&aqv">՘keP#6~vr!-0~	p=|s&(2^OnaIDb'Q]$vHqne8wp>_ehN}0 r6t](z)5m7p%{	~Ƥp/`6
$&a
}Ùb25Щm*02qB0ߧN)y	Q:ۼ^dۿu;5 *WX'ӊ=uu_>YNWuM؈^Z#GL\LMLdzsӻt?73${N@Awn?l1:8s$ԩebab9 @"H4
(L:$I4h~ ^h@YFhm0-Ђ)jjLn-aHp`ne~C<4.ꖳFzW yh 56osG2dwTi Q8`%}n;0>P0N
]q7!y7oqLqB5:>^G/p;)?J( |X;X*)M5K{;y}EkJyĞÌq51D@t~y?/G؀12yDqHIƅ5op;g #wc*2YDv.܃j WUPq?
LvgfH	L  AdRA
 LAjychs
 !HK2-	 h^Dm	E{$Q'Y@(+4m!Nk'Y)xdi	Ad!bm -A8b:	y /iA̈Axshn2+A^ ]<hs9-ȃ)G6W Wk
Z5k0M|PWA'A~6x@t 
ApolA`\m>sי[KEcmQh'h7oB3aNM=*Y#?Wo}[F>gcQ]x`?[Hl%%kqu؆ݶ
ocw}O;5w_xwo@|PK
     A w/  W	  '   org/mozilla/javascript/ConsString.classV]oU~fwnVVJCaweb)`RٺmK+PQv`;[gHD/ iMRфHl	b^x@>B)9=g c&1pVcQDEq8L8Gc"&>G͸(%b@@EƆ9VmN+k5݆oU~iKU+Wj.?ey%Y-G4SISvxp5Z<4t^E8K+
Eǵg'm5YX/
*cаXuVrQ?'|q=r ||eȚQH	`~9=jԬ2oN*vd]ٯQW[ȱ1mo(SK'92`+<]pΣސ*5$Yߩ<ϚФ)׾3<Ah/kбTZJ *Y'
B!C&<ƈ.A^p
2OMW#aRl2
v)bNmUfM"_ka>e\1QC71]!)qZ 5L<Is%SlU*נݖLfN5ƉNkkU;&bBv!nU܄GEIB2/UG~ZGu&\
^O0VX._Y&.;!
@UʡL"LvM̏M\\Ds&;E28.XJIboy{AgX*,v]ijrܷ#PQ
/W2.URMRP ̤ Csc4 0Uނho<-F)#w{L;zriY/r>swnK-aKƈ<rD{$D^&QumGHRr4Gծc	idD۶h-/d#r.6m[caG8}xom'QB>aTu
0Mf8~YIF>́=L$uz3vQ0~\)3`7d/%zV9ŗLs]N^3Я1vPm
Pڲ0Մx[O|2kPvVL9 &	zұ@:nFN0 yv4?&JWgq>^*#;*s&p^ɼ̲+*:+5DW0 PK
     A %G   a  ,   org/mozilla/javascript/ConstProperties.class
@g` !`!Bp̅iY >mboz0EAALOvUϜ)D̷F&&bG}JqVYhdj_
J -z 92{A_ Ʉb! T+E6)*яciBPA1kR4sw'PK
     A kW     *   org/mozilla/javascript/Constructable.class;o>NvvvF⒢Fj
t̜DĲ̂}Ԋk\`*1)':$\bI6FҢT̜TF!g@z =*]P  6FF&`dad`f`X$ PK
     A U$    &   org/mozilla/javascript/Context$1.classTMo@}qlM0|ЦI @=BJTwrmdoWGUuRE-g? ⱉܳPŪ;3TOZ[~ܣ=E'P/9C_2;y}J/:w?a@y"Xщ0a(^ DMyR`<QJ/Yhfm:XkMbOy'ڟx_^%~8ړjxMLG.Qn ~x(=Ű@Nwgϸz9)]rVs+;Z<Pn0mX<6˛(D&gԇ`4mWIEnt?:PNZ	j$j&H^z@*i6Fks`c?"XNVp#IuicTdfL|1q3.$d[2ڪPK
     A u]   j  7   org/mozilla/javascript/Context$ClassShutterSetter.class;o>~v.v^FҒ"F

t̜DĲ̂}du֚a@54_Zꖙ㜟WZQR`BdӂS!aK-ˤ32IKOJM.ado##0020300 iV6;`\ l PK
     A ;C  Y  $   org/mozilla/javascript/Context.classͽ	|8ys! A
x$@ &$$qwjmG*"JŊ'wUmZmmR=ϼf7j?+;353> 0GA/6?z0O,b>?x̅geb+6![lVClER#GP2
43W|*<=@u^%juW|/_З ōn~!n	[0WAqWNMa;M}/;
mC^>;Pha*{vyŃ~(!z<l=~X*^1@>OGxJ'ēz/	Cx9C|\jCz???sCE/ax/5^+D}TUC>+/^ooMzE҇ON͂(GC?{_|XT7?jwx=I%2~_6aj>404懯iCӱsch棷в-Z6-۫fZW7VhhE~EW+Jm5MRC%BhlU(DzLdzL'TCfh6*VU?Nfj'RvRZr^mgS
?</*tj{=ΤG=zz"C[Ֆ%7Zԫ-fbh~FYYZuML'=Vз
S[;khsp>h<	*[KukZW!v*m=z7>Ґ>-hmjRQ#8@8=fmK+׶ETr]BKeTIz|ʇ"r9_AivYsyC8KYUڗXv5=B^ch_%DFkh 3
׽ڍAnj7-D[)g36z|}˧ݩݕԾM3^nvkh1(	b`#HOfS8/ܕMmkW.km[ʀ51Ȯc@82f64.[)P,x;hfS֤芤9TtURTtCR\*=hݓTt
=*j
aPsE{V*o[sƺvL+4,ll_xukh菉ZZ.g0ծؾaիASCckgӢFٳ`0֮ٶu1Uh[^/;L,kkae|.olljj:Z
h+"wJPope(Z#@<gP|A`s`fO af|$=D㜳iTba5Ҡ~mG=E
G¬sʺv	wƕuSs[}nS뢶;M?9zUuNSAM뒺zdҺuk;$.VLll%ɑs\kkn3bm浝Kd\W-u((7Mr%`I{c]ڎE¥|EZ;j\Ҷ'a}SK]u@nnlZc!	xǳ[v4+@*Q"44-u])fy.a0d?!2P-F6TG.GC
(Wh4mE}޾s\-]cK+KU UGa_GhC8~_Py:Vq\Rx$@LkD7\	̤h/>c<5Ȫxb@M.;̲`
	㑾@OOG"`rA:+Sb4h(oMN$`W4UV9H$](͡u43ӪD4o6:7F#[Ȫ@,?EGBHg 5k6HHS8&.uP|[C7Bbl)SJHOAUC*@1$$e3"ne'4LHF,غm'jDPa돇zf62%MQ${'RBICp]?2$~#/	w^CG?څǂ
PHHbsps75be<е	ML|#%[dϺxJ"̺	
DTV٠*ۍ  TA)	Q9`[uђϓKCKHzB]֔%j	QM
CgdiG[+J.ʾI. ֫6sE8G܊PӹGpӏ۔pd/uh`[C~]:LuD)
IOtv&&	*3cـZҡuA>|RjI%!)w(sCSSxs&$%,#G%J؊\EEa8ڸIќ,Eb=@fbm],p^,u[y¡Dz4DP8߻.,B2
Q^j!D(q$ "16C"!j]1c{6{h*r>3Xx4`揠WޅQ{)GPHwDbĄ.ikJees:<qc	$y@d"UMaAgWt֦,#d:>eThqJRۥFW8!c5ha'5GC;ˎi|7gmzQʎ6]U*`hp}=%+d.vhڅ·%~
BYVx{(G$vذp10CZ'0`WX3썠J?jIW~TrBJAS)8PEIFzVHjom ]䅞IzC?iMԥ'Zfe'ԝ.BWMCƑzz%4Χ閘=dKbCZfzr፪B"mOb*S+HHBFZ,^ 7r-bjjeh
'	QA_c3ײw
[W֬4bP4#S+HxlYx|RL[Td$v#B[Y´*
eS%Mi_X%_t==>#XJ	{1(3mףȤ%S%\IsPYxׇzaepʭi#@ēy+vۂ1d2޷iq1ˢ(&VNm2"،BB/5*:mM 9|4荡Dgc1Y;cv@\Rul?ff$	IisPP![qDbf,;(G`}pH?nF0 u,`k_ZAwףmQWT	ZZfL4p'FN,e[c
` l0iZh=#y5tdm|p+"Ԗ
7&m3XyG$M8Z[iޔy
sG]>:q`+`rȡMt1pH]I8+׺$&%)VI2Dkhu:ܾJz-b wqaQ}V(^X0ly 7Gj {mδg0m$mx1}#t]M
2HZV~L P$vR%!
8ޭr$kh>Ej2t:|8]xvmVuMSO:i[l8HHs34L@;̮k!.t㚝[W-,	Gf<.X5'c#:hD{
w,$h/D1hЙWIzz
tx"}wH>~$ֆdWktrHx"J&}H'gجEB߬vT/CY6mSUI7Ӱ=Ck52:n6k~dcEg[rqM#@rbMӈM88i:o"
i%M'YX(P;~,2K	N¥4S3K2j&Jb>#Gvhj[кX{g+duJ	Q<O(85Bxjkw}{g0]Z\j-TK[<ZT"ϊ|#{4!v7@gXohW!Ȍr^c*2/Qfro>f7ݐʹaj)m@z8eh3XsDэ3{&On?mx:ɷZ]Qe R7ѕZVcЦe;$tNL 6raNrDZ*^XltXrAF$RzLOͬ.wΘDˏJԟoU̮J5 C_},yWs& +n#j2S4:%M,;Ebx"=:RôFE3;e7L
\Tj UD`Fa=}\"uK;0pHg
C{2=&#&(oy`ptHOa P*nrvcW좶!7^HBWD!:X]S
Yn'S񇴈Ȃ)Ép7ﬕǚk["/n[<%GK.v$;.3Ft<iaNdt3Y֙Ac
'"xb3gb6#Z]G[nVH7hGƎGD)ࢉŒaT.oDamih{p#mQYӣ'300}DAm;9J:S	qо(_hXHZT?sLv(S/sN@Kj]n]0UƟ3lmrDqDocmPYKƢQY1/p ?]ǍԲBp1vS"KmbbVsTBtc&)	Ls)'2c9 ;ݥZu]dܦx;jo=P`":y "9oLjjo
;e:=^1z9qd3N<VsmM"u<)&
~.HO;<Ӄ}]Syx"[}]mv׀XcahOqSTj}dߣ#t١dGVL/,b\M`y|mȮHW-X7Xn9vh1hr4q8h*Ar?^nH|
#'LI)S{baH-Dӆ>wϊzy!|=cjj>d?WԍMS<J	^ΈG"==-P~~ħڏN69f~*eF,RN@-ΈL^^LB1w}P\M%&]o2W7|
/7٣ 5ru^^3B^oI|2zFqaGJSזگ_uS
757I24^AA&=`h5b;Ch~Ow?0(.h:Qh:כ?&|
m/6"b["ok3%9S+
o߉o{M|o|z1y/<B^LiڇH]bMfSv7uM?|4%+(X%?Pn-Ge]n[ygwy/Zo/Li~% C# ]p/،
'ϊ)Go[9U"wGd;pJ2(MsV]Ou=u݃k.L a#;)N}Gg)DuIRnq+&w9ʑ~blz*omoz.*/	>iqzR?592>5|S/ԋLX/1n(t~HI@&R1h/8}?aӤ}d셭>tib&:$$j"RV'ثDď$}O1&1O#2?dO
ԧ\G#Ġ*1}'qٲ0iz^dUv&j
G\F0ӄ]ھ`KI79-mzLCy<W:f֌W[ΠA)X0^>uhK
D]>t玴xaЏBldw)+QQ+6E+o
WW-dP-a$8tWnOԫI܋v]KӃ{PnbUt<3Ab[}>}}&پյo&{
'"«2E1ЕuSMQ$M{hC?'\S~~]m۾s4"\etG}/HĢFV`zkS]m֙	j=jߋ_-M)V0hJ-݃f7(myh}y1TRF
vb7Mt^nkE蘶Lq8Avk[gyǊ;L}^o
z/i/#븘nh{L}dKM}Ϡ,hMyZJQy$܃.9VnmF5xO|iGmHidogԛCo56q/Gzޙ4dd~DBH_a+U~&[m}
]wTdXDqodmggG
(S+L<DzG>&vײ
|\(zb,xUM˷zmYY|%p_ξ=|
&SN1iOn2cY\{ΙJI$K\ٲ0k^{aA:bt"sҞfeAkEިUzkw(x :9:"}ܝPg.xGwh?v.{a5#sDb:pOht~!!;߇j
2fkvCWP+=H(M`[U'7#3raphP֐{3}ʥܟUD},}=R*N/LI+lHȶK:Q;0h4'j.Hsܓ\Z.6=٪kԻ5H|{!n>ڶts[U,#gu6`"E$rbywԗrK{0Μ-uW~-ڧAD`yiy}Ol#4IW3Yܤ0<눮źnkMw(39b?;;|Jޡ`Ub
B*
r~oFt
74ǀ5iqG%-7trpQiӄ)DD?n>
҉#;U0< 
"ʲ
FGMr'.}tsF![buVcS"w&2ZCϷTU}<R^Fr{
qJ/hKyRld`YoZp܊ϲSgIEVZ-e'+z/ umD
uQ1ԧC~E3BbKk-[s"h4kdސǑRKSiY'mNSʾ9EUstNx/E_\|wf,^9)nQy(i$V&qػj;bvȻZ'h5Dn:?9t!.L^ɖckPy`ZOewf8yoR α~FҾNX.apz_,mGLkg{ԋe1g"BQ/)MC2<Rcl!XJ?;EHSƳfv.H3%+fU'.}7&M&*b0"Q䇃[._ma4|;ȶf$&ӇL>Kbdyj5RW[tm$x)T! }L纉P*"2i˕9Ll\FS=X+̱$e&EZ;a3e`iK0p~B>73tmHdS?ݒ:֖Ib>?!Mh
9|CʟG30#8FaL|B>S:/t17b~+K\&/uaٕo|+߆Yow	NW~W0+k\s0+?ʯ| 0/<"
⻔w؀|0b>G0_+|ܕfW~淺0+1/q/e'1)Wr_Wg]ava|'ĮQj,lw
濚/^]/7KȶYtH)߷[6v|!TpR?w{n+Ǿ#{{Pwj=*?߫ރl]_pp
GU {q{RbO;3NY?Ǿ/)!1|T!!?g$ZK}
^A%"(* k7zWX>th6iU+Vr?xVc|J̪CWU{ *wCA0N(,(>!ᛍh_EO2]J}ܞrKxXYx!cGcn7&@'&ETqUGa
rw(]+7";d4oK&;NW0"1b{"1&78Uj&16ܭY2MòJ֚YΪ<slY0n;1m	{@<?M19yU{եnE;0u!!$ Q(dǡ=qT@#N<tNgЇOxWZXx˔d2R~<\bB2>h\:&@R	Ř4/Iq%4IB0bUĭ{
"
>Rc*C"MOT!o V.{-ctd<{8ё[©9KnAYg?;_]邯
f|UX12	1(/
&a;bt@y4JIhps
/^5ؒ⾔\'Ip<%9l)$4OEF"|YeUuM]H:|,29VSe(/b u+1%dh4 EH#t4걲?-zTsժ8a8jvBA^S̝`PIV+ZKԪFM98T$3p|TֻV}	,lX Z|2b<	0߳1_O(GL<JJ۴8O2sd%=ukG*ϏP:ۏ*$#8/`#DNYLZh bʴ[բVԼV.8TSk=J"z[Vzi$	DgC#p"\-
AYHPO2>򓑀`?|XO:XπsȘD1UgpIT6W#"[܇ΆRH,~%Em
7w0k>qVYMfn	xc\
^YɓZ
/p Z%Y>_izͧO5ogb]2J1m՝x>]JRq)&Q/3gs%u	X@Gm\x];Ej8Xg/%"h/,<Uݙ?cec FgT$`in*N[d\.tfn1#b	IǧvA*?ڌOi||KP{ 4`X6dFu"Jbx/,.b(nC~\9(_	FoBr30=
smfa̓0O$A=,]
cHzuz{z_W
}zߣ3ArQw`{n9rzBv$K
e @)=Sv5dpڡSX3}AX:ysu9oPmyh]L5?C~YWy.CCϧJP)i7 -Uw^M5kVtVW?:%nu0	-F{Ew0\|G*\2ދn<eMa2xa'5|BeҹCGbXA'ΆHTLw&16vҥ~{@?Z(kR8XYf|6[
r(:,t(ȁ;<:'âJj:RDg36:؃:&s
Zzks=5,IT 	%YLqApQΘx-IcHFZfp98#)OW#]h(ЙɑbE=xDdFb'rYdLT?\9,WCtV:-@իA8C	U0[kՕO샵#O@=@f
E+m0I,|pIhYN*J^pzSx#jCq)ԙGJ98"#(!&~=«v'ZT3 r+jQǮ	vX	J. ]CB̺J%F[%TK5}].S˰Lj4"myƢ+nQ@S}m(-UbC<-	WD [(qkVyQ[yZ$(wK2ujVw~X}C6&	Q_PEDZTLEG6V&AfLqu%x;@`hl`ϑ`^;
D{"|.~6A(IboăUCjd/\x _D~	U0N\8wz^HH֛7߫"MwTDv%ȡtŽHB߁bq?XE;TPiC$
<?nQ)#Qyq#Ȓk?^aZ"R{'}?#.z>Yu:5JrAȄ']x8x.m<Ҏ̓juq+՘j&͸Bxs8㖨q)^|H\YD+ Xd
T?u222B0GBIAtv+V{J5	Ή4`RK':`Mt5QEWZ iV8ˍaA.7yoQd*<ƚE
J&`sʊC_YqD24ߒ\IۼfTV]m~!~'8w4v(TGؑ:*rxhG9tg-v-˭#c<,_n(C	7,85wK=UX;}
LZ׮
%V'x&.1oQ8L-jR[Qu|_c%Rk7
{T@G2@^ίP@_eOEpvȮz.OPr尰z7\> Wdi#O"\P_!aLG>&4>$
(	ɆA>Pg*kpqA|>iW^E~u]{e"8pQ;s9
$??tR#~j{K.]b:a_PXH?ge]i~Ue5/r~21mSQ¿$uG'.<U
`Yzq~篴֠|M
*
{Z{U]V/Vkm,߁	W]J>^\\}"`>*iP 30KrL\]Ϳ"QwPs!ju\j
Q:A~o,oeW7\rrfh3C,k&fbڍ%_ ׌$y诞^ЎP=T
S]_

|z;ˡTosI1R&SMJ
PQ=.OlĥUu[ b);v:
F\8(~R n(BnNVzDu"N!s:αzBT/S
]9b[mROp @:ο!!`JH'H5Z6&H=jouHo;X$N9UՌ))Unq	^M#x9q/eԸ"|qRSjh5:ͻjr^rPB![v7ᇠD}([XXX%
L
5"u"=2E6
;-VLT֔5Ua>KdcL~\pi>9OhnLm4o@;`mL琯ಔ3@f #8b
\;S6;(C^Dd(I-nrb-Uۃpwug^&	e|6X5Q@qOʤx\^4uu9JR0 ܛxx>N^'I {Tݪp2PZiSBO5=5PW
_Rijyn:?$0P=س {N]и|8
=ĚaU"R2(?:UZg 4YSiܵѝ1tG?5|qJ9_>_OZ1U^Nc4~m|J3TmV5U1*l=K.=5GRm%qxs~M
Ӡk=ROYp蚔
T4vפ#Sk?q	|}wNav.L<c |oU-woA>P]EqT%0LP9/p%yNE8
V\2)Z7Mf7O%Y*\)9S"pXSJZh"O}2K{`xՀl̥ΰa*SmL/$?K
_PiyP{NNqsZ5؋8KeE"'@ 4&k	g͘ 9D(4;.nejۺ%^9.
X༂%UI}
g,}f ]߰Pb\u=@<w ?~Lu+{4:
Pj,qiPi3:k,F82OkCQ1#0E·0E-ia~_w<
kt 5 ?QC'ÔSl!Xs`q5'89AF^3{/B ~z=п@BASF(s 'CaLR
ߥi{ˉʸX7hQC&0Kg\0򌯢\%u0޸&7p0E;1?~#NH"e(oB<75|30ʷBU<Lo
9Yjχ91n	eܞr2rNZ.Ji;ϫ=+)P/6/hivRC/H546)bɓȒOCL4*y8%ObI>/ڮ:-CA/W/'Eb)B+_yo@&3ކ;.(Os<
͟}|W6XTk;Pm| ]pvvQ/+NK#,o1F fW^(z _~=ymz!su;*%!?&p-wZz-!
!.UI2T75oQoJ~(޹.Oj3tk|z҉#
N0Ǎ
h*C??
u0λЅxg.iT>DoU`cg|;ӥpeD%TW"{6v__&/%'?F߱;8:0]H`f,|AQ[Cǻ)N0wn܍xKBh.q ArG"߭H%H+ i(^Bw-ݿH4>YLK[Ccݧ1%
GmC\`3V5LtR]9v @$t}.];O'Ou0]Kf~V=[A/ЫYHܴf)fTZF9fJ]*d.Gʱ*Ga y{8^B5kԈw(20-[WL=t{]F)޷nKqțpa-tplʼKhI㇐wzw,C">dU]I'CQ]{TkV#w)!hqy s %Xk}4b5,:
	&~زS64ߣBku5BWq^0}h|~(eAτi|+Q07%qA(EJbPw0ȇb,~u]sgVkԞ>t3DKy dJ>A\Yo%^J!&7r|S7
|aNUC%WU$	Oė"0A"Pa"JY\湺vmdba1	Ujcc-;}hG0:tݔy[Yz5 Aok,8(r'SWPYcbrx}}&>1MN>&*4)+E֤N^!je !-$W2); hu[25a"QvHYRȖFЦ
jQD+W0MC$K(f,\úeOk}>:@-oyj[ˌZARy)`+c~jvZ3 3&~fZ;gJgۡ41ݔՃ,gM\"Xg;UY>ݘ;!{ytjRs<>IwE%u/	H(R7&.پKa2}>:pJ8w5}6krߍpo;|
w|;q߷#=S߽o{=Ę:o% D
,L3O07|6~J@ֆ>3L3LY'gT$a,S+CYyC
s8#5THIBq&1bJC;cha01:sC6a+}8T+8 JoxZVTjTUjTcNwD{]xLph:²HRk6DڍE'昼{}O@I{ *g:<s|C Qߋp%ɹ>GG\&@222I_Mlaq$.'6Q+#G[-!G.FV<
qXJ|M-yILq}lT5nρӕ<N}kH_|W^wNVrLƌiI~XX&Su24R)Ð>(Y3VDB6>لX9]P6PK4W~{41#	&RۓK8LQYRC48&IfS¹|
ofi:uތ@olA(BX֗Y]UM;c^6eRZ\MՋb)gSh JZ L*E<mUQT<}{@%vC./] }>&9,kjBNV1d%2 &dh@=rhg؛e#ZTm@hѓ@?~@@!xF1+b9/CέO|,-萓ȩ*c£t_ 9B(8(9+oO'd7 8NmC%kvȦW>\;2T)Yd5^E;&/y9.&?	).yUjStvbgoQʒ_>XDGY`3DY>qA%Df
FO2w_qÊ52N۵"qV+Cc%9l3p4 \GI۹]jqhY\F2׈4x0S1>C5 0;9n%l4IO|CI]GV4ѥŠN*#H4ӏe"d{S\R/Gw6 2eXLY<uCm	sǶݴ좪ndPxgҨCn!6!(,dRM|б/LtDzE4Ӏ
6Xp0EcY61|bǧyzz	ד_b׉uPK
     A  5   6  *   org/mozilla/javascript/ContextAction.class;o>v.vnF<F
t̜DĲ̂}ԊkM~Nb^RVjr5#gpfz^bIiQ*#*a#BBz4lB0Ͳf<Wp~iQr[f|!1%yz *ed@7YyLl@a3piN PK
     A EP!    -   org/mozilla/javascript/ContextFactory$1.classSkkA=G]&}jZ5ɶf/BFJߜltvNW)X
 xgD"9{ϙ;gGv1;ȡ-eϣ	B #$͘w~0ceRzՌu78?(MOB-OLPL&֧+4{	WZzTU-[ގYl!Z\K;9[-B)S)AteRYSDS񞶧6-&^Dhۗ]MOSmN {Z}B#c?5r~ӡhHOF>Sa'D~)aqPcۃ\\0-㾇RLi5Cq9:B7B6dsA]D2ѳΖmcMka,) d0,("EudRo;g~&(P"XFX $
>&9b܁s?j oVաFjy+fɭYk7p3Eq%7PK
     A   t  =   org/mozilla/javascript/ContextFactory$1GlobalSetterImpl.classS[k@&&mvk[[Vڽ@Q"bUatܦ&K2jAEW%i
Bam͙sf~=4XqÁU-ִi㖍6֣ cR`CPx~2Iw"}ς:
g2qJxw0n-yB<DqD)wďQ{}w3m3,'BaCVv[~3q6
f1o0/z^F'/vŅN<
}%A(:tq.f0:E
u
0<p5ړ<{/zW[rыȻc>rhrĺET[-Daoa
})i_%Z4.f#S2$4eY\$M
Y
ҋ͟(q0B(夘eSINƧE\"%mOl,{+1YSϕLfFYuҨ#k,t4PK
     A vf     8   org/mozilla/javascript/ContextFactory$GlobalSetter.classj@QhU($ y,}
CHXz d33|3?7CD!zeХ[iN*4^iʕ'iSϓma8!D}4)/sń/x!jƷ6B_QlJZ˖0d&B>-B-'/ѭ4vt~PK
     A ׮H   ;  4   org/mozilla/javascript/ContextFactory$Listener.classMjA_q4*x#${m[H;-ݝ-CLǁBjQ_Q|}~} LK%zTϾ,=煱{q4Rk)]:e˓ݜl&b҅\6oVL6\*oeZ<&w7Ӣt+V5-cGвڋj	´""f;?;AfPK
     A #f
     +   org/mozilla/javascript/ContextFactory.classX	|fwrq !dp5# 5ldf'n0CzjhQ*rD	B+jZ節f&Ck}7<G.Df`<F\<,q^/<rWλP[b8c<E'xx̋ax܍C^2x#^Q/~OIҧ=xƃIY<O%ɓc/b:\F"|;DGe^H_XLpYkjQOm0M`MKkH IVEczN@\*jkHci~U0RK/WW@$+1=6W
D555	YEk@@N$+
E+.1NnF5Í#P0ƂzؐVW#ml/$p0V)(*^.4WkZVhGj$(֦3$F-֭⤅ϦK8=aP^	{W$G){Fbjyj͌6dNxzڬYG
Ȇ$^:WScmB0D5RU4MIH	|Ҽ&ܠbH0:[o8E0
_hsz][ikV<Wh#NuխN1ᙾ
#E#̙.Hk!U--
em%Tzɂ	6o
D(v-e=O4V5b/TeD_I0_hW:֠/[c=!*iY؎\;O<Fz+ώOF!^ŌFCEM2B18fD}ETbDcaMZ8Y(qpE2-Zd*KGYkh!M{ՆDdM0<ƍ?	dD}`:*@xb%m0ZgU6,q4iz,0<| lU*j8+9&\R&`cJsg.-29&b2A3.ƒb.G[h:
u3WFeMHАSk\J
htBYTIWkJ{.<3!m67(SiK$Wa&
Gς%^քBZ4uc{bl'N.|OO)eS*^S:ސ7e"4\9-PҠ,dv-ol֟e\՘ʞG8EuQ;x
T\Ml-I-a
RJMR3R񾂿A_s1	ĬhA-?時.`0UZ`X/t;cLV
ZMq
,WKVo}%˶
>u
Nȟ9Tp>QmS%U(؈g&u7nVk	Zѯ詵kSݍ,ت6mJE5nBޕ5)XeK7̽(M3bG#+^`eh\"sNA$
8V%vO=Z-.2$LuA_	bmg:NxyBӢjXm_S8cn;٘nZ:E}:щ>ibQo.5}r3=s`$n5ioXSjDEy9J(8 ql䕍ef#{c=ۘSd6fL2{!W&8g#wz{iP7N\Z>)y,0nMB,x6 ];8eŸԎ'סKPgy;pTUZs7R}!$d(6fJ܋<1lbRCeR!|9..g |NWSb'2.+՛Wb:xA(SYjvR\f2'@u|v{r\-wsH˱ A98xW9^xmwQ9&a2d7!mLVftt8:ցfzxdca?T6\?݉[:Q}Mx-D
Db-5sg=>|N*QcC"
#"/~k!F-
TN-8b--e>mADXvO_
Ǘ6
M'0B8f㴟8a>@f|2K@sňT㑴`dw"g>$|9aΎZG	aHEa|1c4Cd<cuQ
иNsъ)'tAp9udBFʟщ3#-'y;a0CjL#c3,-Zqmd;[D1:ǘNbY\D֒OoA]űۃ=4pZlE,nqEH_)D]8!y?)7<9cBobl"7#.tZ
%"(QLm8W	UmP,h nLIspV*]'0-׵EېJHj"ƸABcB
WU
W5^eɕ|7๯070
̗q"d44xl;שIc:;3ymu`R
um'_QHčH7-nFb-
(n5L'lL<N/`5@Q_/GVe3		!ƚ0n,ᾍo'u}qIܷl~lj)k~N%"16Jxm,ttrN^K$ĘmSlD9bFVFŽh?P4328<B^D͏OlPx'm >Ho><xY5޳!SAos/J|IL2ُ1f-$]Yb
sgKs;)'Iwd/E9G3}iy
(̔D)}iy-Noؚ6%	a&gYf룣M&<*rrS%=]q{p'+Wȝ|n>mel6֣l@]qm$#	>10nl6mM~SaNL)26p2+֠׉D8
'T̰ͧHzCDifwVOA9)gs]iL3Py?rPK
     A F    ,   org/mozilla/javascript/ContextListener.classKK1ϭuZ}]WR-Bi4)I*՟32R<8|''hh't5>Ύ_gWu|fߕ"WS~;#BvsRr0Axk55pR\3+O^/
=ۅ<T	Y
^	!\nٺЭBS!!>2Xv^aն`:{Ϻ*!jv:v9A9XI@TJ/6hnPK
     A r-A    0   org/mozilla/javascript/ContinuationPending.classOAƿeuab -ȾjHLӠ諙.uvٝ__5QƳM]%7_? <*XF	kkcE A(}ua`fھ
5Wǽ(w~\naj54ׂa=?J	?ȡIu*کg4tҀnd{\p4RIͰոc(cZ]h!{ߡr:1bI!yC7BK;:ðh
B/CJ2yHZ9/$8)橫(pĮrY9V3aᾉ+0M`u@|ppEag.mua顡?ͥAJsj69.{hkYGc5?\Kv\>MpFc̱ PnCۉ!#c>')#Ĉ	14M3RP9Fs)fYUwPK
     A SmR#  @=  !   org/mozilla/javascript/DToA.class;	`|fldpppD @͵pˡ
/Jp(rX֣VZkj=j[jmU|&,?{o޼y|Oq ؠgqp G"	Tذg8CnSN'
A<WqmYV"Q,$හ+5j
k4հΆڰdяE7O^*(b(zn-J`Y-X!hE`h7iEBU X-ĮZQzAWYđ
eg eԵLQ?{]Uƿ\0{ߺS:lfepadeW[u"jj56Qmw^g+D Kh*t2&DGϖYļ-Pxᅠ	U&0j?@SM`w J^}왴	d_Qom!`[ljo/|zXPJRaREcrs2r,fʹR)7=1Fmq*Vͫ8tR,C^>qUR#pvɳ*&$`L)[8T1W<j̞;yRټr@BЧU5մ-'xUmKCэ>t#6aD!jڸXD=[f)m`Ub4ZE-
f߼PCsUmA|BVEjESZё4*T*R ʒ`{R9BjYs$.!=,!`fJ4YffK h6*cB͡q<;g>qM6UM֊Fqhi_xRj_"A3ZZZևkլik
h/h8:-8oriԲ
b.˙D	b-Y""Qml) Y,4Fui(Ҩ/1a5{qIYиZۂ_]He`X-)]lqYc~SMP0l%E@mc%CNz,L#nY@*<4ȸ5mVOvYiƚyIs=Z]DC	5
c	#_Wh[ZZyp
bCsm/FĀ$-+&$z'{Z2x Wt,YjXd5->ʵiF75r0q%fR9vh_S
4٥e94+ڊ5#g_x֖Úzח}`=䱜@ZLOj,*[e Ä1-MHa*poM[
 {ȡPpbE%#P`P6THuF!F,EB I$I$
̕"XWUg_]^U4X'i;"5,%CԓU5 
u^UvJyUKCb~T~hVTcQE\JLu˼J8}--bAx-rZ!5ZiamMYJ_
uۅz[1uhײ.8%$".W?xiwDïU;`	ȃBֆUM4k+$^b	dZaq(n͸SȿŎVrY5x z1Rг0x;U]v܍{O7~!ކ? eCx=v}~B%} 9"ćx.;&ێ
Acx?'D;1<nDLs}jx۳)]k?ʲ9U-̭0-dS3]D%+Cz=_v٥^u8_6?KQZ϶P[dh<3ɿ8q9bbG~5wuH)y_4dVD@]<LV0.db.i1C+=./ڿvP 8907Tj6vnZ(ԚriEM+9Eę[ժvD'b*ƈUDYⴋm  P[Z:]X;He7BQUL{K	5Deۂ")!W-BtnL#|~Q]dnCxO~F᱄?=¿>ڏ`G(|Ǣㄟ8Oߓ?UO&(1?NQ:()F,¤(D?'((/3Y
nKO:<E[Bv l=:o9,NaQ2D%ˤ)+XKMlT$@Ғ<T7uᓨa,a0sM]t9WCX8Bm(Ta>DAgᔳגos@ *!Y*a ,,XC[0QPc@L ̆zl"eP
! ͦ52aoLkRO5gk1B}I*a;tXA6]?|LGt"vIvj#vIVkdY`*aNLKY m*2j5T̲L	ra30dd62ɵ=0͎)/$`sS|Τ;+rSj|	LH8F`&,vFM@x0/Zz˜ ^6reoIG<6g~Ƕk]1vt_U;fh-[W;aS{L+$8U~*:!+jC	rP1+qC3[:A{@TTM%Q^%h#u7x8G|(w{TTi0B3P(Wz: :]dݴRt~SM}"Ei)WP$RDmf;(:E E{) Eه)>MAߤ!EG1]wBɝ	z]~Ɂw=s2ާxLu8>@<oL2b%H: 
rҩcm :;A.=L÷s>k-j
EzU4	hɈ>4ĞFy|΁ QH|ܕ'pyCbqH:DIHs	Y;AsJ?B-{W h|\hҸ5ӈ_$4J%DDG]E5$/z5ICǫM#GwÀҺQ7zhQg: I*v1:Ŏp1{ VTbA-LUt$2bݫ{%38^@
E1YB'ذ8l.Q$$x]ބ08pҺJ݆2rK#lB+k{.H3ܻC%9:<Az]<pWcMDohbV'qhN
c	H<di|qv5^SlAI0ܟMl(y}a^Pi>lF*M/6x#J~oL2RvSPI<9H7V2G`g
brL0n0܆3 dҚJyI%(#Ly.gUJJ/Srq% mъAqB>
Ƈi՝5'i-/hELkMZC
Z'%!Jt|Ȱ?r̥Oс1D褹ݸq;혆{0AtT͢Cj-sI?!IGXbp"6͊qǲ8-ĉKX=Nf!Zpk28mY:-"P4OAe=?iKп(*BKiS%vSxEZdO|_@2c5"Cij_R](pܜ$b*b62 Pz"ie칍_*r=Y9ŐgDL41AVGdTYbFpT	J9iЬ~S6'#h'(	1t1(d$Utf;
riD9@	OCTa	ྀ*R*FTMC?@}u屨"*Rz%)3U&>"9$2>)1"!T&v;\
2Jb";L{6#	,KV$H!ķՙFmI(zOCJd_Es1*}sOe$/SOJEYEI5Qzk}z>
DBP庡jqCȹ'%0t;65q[xO${ƎM2ù$v%AYT}q/0	>$͑܀7Pn$vfrĝolxagFQx1s 3oʊ5I@aZZ'Ϧq#@leDџ;%M^K&ntJnNu¬5i?*vˬZ$m#qA|VL$x1T,^:/v7͜7=3"5ْ꧑s{`?yҰjnΌC*:'z`Fz53%-h˻§$zA&
p7-wu
3
JLs%
2
'>=w;!(7D%P~S)7~S~@nNoUV :>J}N^J!>m4Cy?Oxd#Xb)fF?=)g3.qPCn6@?LRb
$%<#f7tz! EhF.m3taYM]/t86djaTJG'4Oh j2鐈CǞIZK4N(2m'X>Ո835J̛NɌ r4#v/? ^,7m$wWWD	t,N053)`qg'N0Uԟׅs{h'ㆅb01R%)(KQz7,$lEpL2L̫x
;R??
`ࣈOuC9=o$J81,a,=֤^VB~¤:2v׫%*)hu2uҀFi1"XFquJ%큙F^fM#y5EˤA
.Jv"腂-A1](u+!Om~ktY_,s1uM%
2488]8Z|ҍ\:3Kë)wE
uǘ!,pX
z ٠el$*j^A/
W	FE:g.}~y13[i&puP
D>Hp["Y)@R&=HۑFB7}Ao{ӽ) CǕT)C`̈́͞3%2?G?ڿ2/	sCE:Ioq8(TBQBoLT7
k-B2,KO	.ts[ܔDUݡ5K\QD&ҡ.H`0UqJV4O"
݇m7T)RM5"EQt&	v+C2B_cmP7s;MK(FSWfP	<(t-,.Y6[heշ=Ԗ&Αo7]SSQ
q]03Ĭ$,H"5^M-5`3<ٗbxv]֐ض^ˌnXM1uOYtB$j\ׅ'"kirnM`}C`9M<Q B!n޴dix'gL<k7tqpt)&}u[@o,#e;SJrFxeʙ_|U(|
_|ZMX
'߁=SpN	ue2|8T3&bqs83˙1VDeIbRp%K,
ױtHGm?`pl<rn=:ayx# b=:?b'l4bc2g1$JY2,`l6Qa\jǦ
jObհJ"h[ֲo
mal\jm`v/X={5RKz-c Ϭ}Z8g+Zq'k	l=OcPv6&>m>]gkmu;|9ƛص|b7F;-|'oc6~/awc?n[a~da#I^)'yRώH؃=$aGai;&-aHQi{L~(]nbOHi {F{N:Arf/Jϱ_J`/I/_If/Kפ勵?Hץ0{CNco[$;r{Wޗ'?Ug3y\Ǿeia|(?˙<"5O<F~Xc?q)T[I冒<I)a2OQfrRSr% e9QV\e+(P*0G(ʣܯ</S^Eʛ|.|KOdr>UT\TB5W9|:/V+:^n55Vש7Ń~^RAROFYޤWxoS?Wi:_%Z:ߤmߦMks
FmI7kMvm%C[Nޭm|v+?wk(G{ߧ߯kikh:X~L7q=#??ԧGzR7]^~J?_''ogkw+{
-mKenPV?UٮږSJ:O۝K~~vvDcRG`ka<;{0 ȅw!^)ւSuO|ud)˵t~\?'h &C>
nA$9QZ['{(NLqGQk'fO&nlqQ!M/,f!aՇ[iے<
kJu`RN:P{8 ހCףEb3V,:qW{ae5/g^l
($*Bq"'H(جψoeY
4:>#xB8\|Ezy@m:9qA.ҋ8R|@ÕzYd>nZ`8`myw"]y&,=oY-l;~xvļ2X]8Ah9۱xn`1AChm'!(V8ހ|;qiZ gaC@xqAzѿޯ]R#.FD*:T#s,wNR ?2'|Ⱦ '^[,WhN$'q+FXu<M+<\~ojga!H0LKKFou~Za'ǅayÿ{?"GϾ1g)^Yv{gs
|S`7}_Lү|@ÏӂtseX/!&Ⱥ3b4e`LD@@mTD?v 9n2RccxA\M6/bW|w;OqS(4&Ҥgpdϔ3 oBeCΈ/-pe&RJ)~P&&ցnpĜB"ȷ0s+K8^)2$_'~}|XiK&>m%P:	KyUgA1XI;@wySR-}^%$4e_5}(qq_Z"SAXzгȐ^!YAbC7}LU$ӪK-+|ħMCQs5aDkJ &WUY 4Gd)@Iss 㐴eC~C8z`~!B|.-]=*|x'\c~6J;!;w@wyjޢƐG	2inB>FJ`4&Q?EehhitHaTJNvKӠ[H34z9pBK)i!<+-t%^@ hb=RVi%JkpHpJpd}^A[SRO60D=Bɬep
"GC4}S@C4: 桁He/d< (0tc KJZh=HsUr(otKЭ:e++vq2HTOryxÑ31ͭ0gnJ
Vnh[enVҋE襻a
lnXG7l
rjzŹra+ݰ^.7\K7\O/nA^74(kB=i*T6S;fJY)TJU.?
`2)"tPK
     A `	  -  '   org/mozilla/javascript/Decompiler.classZ
|Tŵ?g&ل,6 
aG$dlB7 ڢUQR}j@lW>}VGsgwl?gf9s̙>G$n1]`!22VG=îLs8G~U<s\0c|\*Ah'`*I\HUI.q)Rђ$Q-Ǫ88Y)K .'J
|B%O\)yH>U4ɧI>]r3$U򙒧K!yY%%y9k$J<W<%-^Hn|F%/|ŒHnT2%/y䕒WI@jJ^#YrDrVm%wH^+9&y;%wIKNH|)ɽ7H&}>bG[yoK/U<Rm_ƔaŚu+k3rkT$ZbB Ypڹ^KL4oشf⅋ӥs9s͖Ug?oicmS5szhMo{{4$V"4)͔ӝSK<]=3˘DbhcoWK4i!\IT94Skc=LɎʮűHȆHOk2֝&c@G457
m+'6敝xG,HM&hʳ-$덷bT$~M}GTleks#ݙa+	hw2IEۘSXOTDx2zl8oH #mmMѸV[)]Q3wa邁ubjjκJWf6RpJn8ؘ݄05t3ѣ@QSm:4lЄf58^ILMz]twG!1Swz1pnJyoʬZϬVX5DuF#T=,H ''8P2R]YSS!g-LppVRS!t^ێibvF{hGx!lT+NI/=_w2MbQ-{v6@,Uj0?8 =jXgNz{RQ$\Jd%i6F{Rs͋%{R޲6Hll_H(ӈ\BѲ5[ÇjAy23SjTb"=&22DO3r2v<R^Yd>]_@"3`3&t?tWU?}vn&	:GzRIo6ে~z^i;;9Ɏ.MnOAL	i|zl|5p?_aX68Ch95?IK;7*R]LM|`&cex!}O})U)3٣h	ؗf
bD?џUFT9mh*
d񴢐'USZk1Uq[3Oq[jG:;=^jm2)A_jA\V	lqo jk+#"jO&!(YS_+_u~mѯkzYe3gwuzx{(;Kg[to{$̚%_ck:+UT95h
MfWomH<Ϫ}h8auE'+3=+)Mao2E=+mіQ(܌ʓ7n@.E;u=Ϸy7~w.}_ز.ڊY	v/I:|I{ ki-恦DC:x1vK-
)2Gwh3RR$
(jcדv8&];ayr
]^ۖVhҧEhM5d3mnOoKOoU'GKWXўHwv͠;ӓҔ̗Y`"Nyz87
/DCĥbvr2ѵ(_75_~PI7*a06/G-tk6:	w3<$~"#\@!!<qE2N nMw^﮾%MMK!J=Aloޕx:+0AlgסArC^*.:HnnrÁ@ЮC+U
OH&<
|Φ2ZikYmc<7+
,ogн:$H<S6o?'2Rǵ4\7jrҚ+ݟnmcnB/Û8yfd@CW+s<MeGVS=i);pzIk8!#M
;(18DG?ʺS[IEtܸzBYu!N$w~8n]Z]ىՅtzS-Jm޲޲!>BzNTT
!:M:DR;!RGYi>؋AIt$67+67+1z<-T	T%1ʇʃTPq
=0	 
Bc#MlBVz"p=	9B?Ъy<fDÁrp}͘k'ܺ&pNM;viTE^h{rSp"q4,X2Ŕp`?*o i1ȝX'#S li$J$3j1s1HHnz.Śy'ݘuҍ/;_9%(՚0
OuN:
1</RmXoA~Vc>4{'#Pđ~jKK̠	l>y ZX%^QJ-v-
@l~Ad0(R)$7jFHŚ-FȭD(F-(sk.nR=M#;T:-Jг^s9/{c~dz>93b.C;\nߔNn
ޠ̈B:0A@?F <-ASS5^L+XUM@J{<Y%
*yjT,cL:)ֵ9cIO/#}B%S4^iAiYNCJH?X2VBv=Jy*pNE A9V?FW(3C=P<~ANdc
$u姰S/BȩGVގ$X{vIV̴-Ŵ f:+Nwy^r~8J!kU>*Ǩ4~DKo6]toN̺ܨͻ 2ٞ駂`r.W젿nZ}*A3J	q]Vd9@ՠz:P/:6~-C@/@:@IVʑS@Sq9
PFHفFQm{2;пrSagO	[@@(iKA]M+@;AӶ:
[JAeh
3@5-mcZ_t.1{,g]2`wnJc.9M6sGo/aU@o}q,;Q^Sx2iD[ (6Vb$UjeccW6署*NP'rUdOTZ5|Bç 'ixHYj-ߺ)
Qԥ˷i>͠KzZVv߱M9ATU[UUxYN 
r4Q_+mUHDi&_3|p3Fh
*
\Aw7l3HU9SȬQ6+vS^te6m^fTg3_ l7V
Kơ4a6ՠj>LVϗ^41Ebf7&AC5_*
134!_xON{34L
.j
<K-5p	0Vgg|zzkr:
Kz;5l'/
f+^axw6hx lp+B
4 <O kx
6i8pSF`w$,
kEPxR_P4Tj_!5ج~ hx` 4j]56հ0!pjkSC`.DCtp[No5|0K>
x&5| G)
wjpW nplmw ib
 7k8REWH
1Bӥ#*;:p
۩$X	\Eo$G-!EP}G}LM	Чԍz
|HCKh'x>~y;W+<8S+c|#fȧ?*WUL<3WSpi\E\oskVp93xy&/52W
\ȫ1ռƌr#fy3sy5ݜ0sySf?fqb͗6#[_mI
u0izTɚ7[Vk.f{E|*g5ﱺnu%߳v>~ĺZ!0?a'g?ezd}Xmm~~.WOd~͞ەsT=߰gl{^W'ߵc}`/ؾ?|%0;i?,pEȳ)
D{)F:rQNHvFx18ř)Np)BQ,:+4grgtNv6KDsu|f#qF_,t%#bX@tVeTt8ot>]_DsL\$HI蕹b>y"V9Nl29ElUJy!kdl_
rQ7
.[v=rSnbJ;=F-[+m/wQ|BOg%|Y@.ER|K<-/gyyT \GU7(^sK2s\­oěn[-~s$.k{n]'>tn$J^g0[mHw{>`CFQ>eݧܟF}3q>3}d7ɨn!\-ܥg=K_@\_ʷv*܁wPZ[)OjtX]_~EoҾ]71ү,v? ~KoDɒݧw@.Gh
P}x~
T[n/5GGh
s٬\CzM>JE"3a<B>+	(9J9evsGBE7
_ܠr1?ѻo?+1Cw_cek1mЗaz30{E`!Æ%>qp`t_8cg/ӟA|g<$a9R'n$v.KvӈKUm&N lUr;N.F0劗fB(1cj*4΢qloPبӍ::ӘK|Z`MM2UiN}#kΎ9=6>~rQ#]9V'(G( >p_+kwCڵ?ovA}T4W/ /P+PVzW}e`jp;@Yelr S2
J3k;>LW@ng9rItlhːXD8\c1%4hRe,TcUhqgq!ō5k4.7XK7fc=53Y{ey/6Ov7/z,?!lzS,'>,sz:Y^ t TBzgN*6/&^
04"S6PHM4ָ[c+UfOETezw@kI{Pj~PK
     A t2    1   org/mozilla/javascript/DefaultErrorReporter.classT]WU7$3d m
jmm
~&-*6@M5N`jH&J}_+.-]˾;Zk%{s߿2a31Pr)8FO50a>p[9e2(ŐĒ,bE]nv\iZJ-g#n4#1mEi9er\)S|l4}iM~^H;+7YϷNrݭTZde5ñwM#<q2'94@a$r
7=G$9ut
NjyԤY]4WE5o/FĒ,]unA\^)?XTdbiqX-w۱6JŗmUZ߱ڲKv6kR{ⱾmKcGEYM+mcox8@>hI{w(?ρ#?NqtQQŪ5Su1&91g	YH	zJe,ϝ1et|۹gG_SiX
K([<#8Do*F`l
q+<Qߞ2o
CCJ˧3$ޛyZFU܃ss{+Y?萌{J3sef
N;9}>dwHΩ_rNG~@"vZ*ka#2&i<+)/7="}#QLCk,ZR+I-&y-G.OqN[/)>_1f׻8b6HL/Q齂c7JMO:;|S̑)%ZU V-UĪbG%1U\OA+8w+'.jP<Grwap.c<itA: bX: >)*u=7g4 %ܞ-PK
     A $F~    0   org/mozilla/javascript/DefiningClassLoader.classTSW=7	d]	AE`&$ZmK'%nfs3;}or{wJX<8~݇&,|i
78&7[+jXUj-@x^qתl
Vҫ5da!Cjo
\D2^}G#0%:]RZq]^QJFtdeS<!vuXrpeTS
3,~z.Zy4O)#%gH<^g֝e/W5"ɺ<5q$=p1&o/D~+K\,W#]}AzxG{0@E1o^҉Cf
|żxYYC"MwQl[	w-C=Ya¢vCtb8[cHO\۹!!-5c3ѐBی/6r
P^:Jxw_鷹C4nt#pn~'bT`S8"YJ/7Ug4#A+`~fH 'RG4R:>	Yabf7mQTfSc4,!i21RZ<)_#b)YzL7H>D=
괦y/hy"E^6K
vv 2
Fg|sOӸωʠ<
U@EM&$EsYdjb~?ȩl7dաYyLfU)224Γ9[
MiWF	WK;T,jP&'Cd;
F2ĭņ9Uh}UPK
     A \V  |  &   org/mozilla/javascript/Delegator.classWW\3sd!@bBn l`Ti@i Xm<d3ibR[hk%M+_ڵCjW/w0̜Y</g~{{{@>!ǂzBWCk*7𤊳*΅M<om<-wT<F
]=)/~ x^?֏xA/Ic)^'R4R"WxMal!F~)_xclHg&ڧgɤ~L?gcĴ>lVX2SA+J8yT'=WP=HsSc̈TH䨞IH3&YKEO't#aMe
Td_*kClmj.?f@~mOꩉSHc尡ǎӧM\CaΏ3ƶ1iM҈ГԳA}5X>ld	NrQ#oرx /eƋES㍖X:
6.@dRk54?U{R
ʤ<zBˇ#9F(!BO
ߑ됡{@Pp{Yɗ ]a|"2`rMjJLH8fu*g)c86?d>7͇6}㨞KBl4v2!VVvk
wEwu)e8s%Z,")%SFQV[~"&%6-IZqUn!&}zf~rcifŸr_])QRd3uzu4eb=	*Umx@hhZЪ7x`h[
VQqIí-\ڥh.5\Ƭk؅;5܅K|exw0"~
0(Ő5|8(Ž8$a
KpDZJk1W4aBûRa@Y7`'IF9
}
આ;x6.~<Axi,$hg~Ӊ;/i0$׭=o6,9@rO֍Koz27&3wgtRFb*{JȠX3tpp7K*kO^Pָr~~oJ+#{reG=s]qEF_zC6Me;{]]a%\-<*xY6r:Y=[ uHCa] E[E4pQ·ki6Ѳ6,U`5T\ACZ
$@܊ZbGmv2Qvv2}'<M&w8i
_9<	[EL갉(AxB6]Wk#SD9Tz0FMM8nkMf}}>Bn*QJxa~?ďю%fpb|^"+-XP>:}&~uq9ރy.ek+}֮M{@i2TSމX(W(WSB9ޛ[SᙲUlGv¯Rm5>9d*JGJ\Z!		ssW3\U3dԵV|)dZghO;,M8Z	eE؊Q,QpKAh'Dʺ%y<<	;A¶xLs,r k5l)P)<e{YDHޓ~kf∶o4lP_+_-%"=wl(7\^_LM3%(}v#(m(tٕ҃%)XL=۔vGb(AMwXr	^CUPlf	˻?#yd8	t˗[F}*n~@-"SS	ҶB|`ܾ:sDM;ku[9i:Ea_e=jG+;mWϣu7u.H{4uu|5gaW2;V_4S3wɑ
p^;Uo}#7'n'n'n3+q.<x?&|| &+;Ht|PK
     A c    /   org/mozilla/javascript/ES6Generator$State.classTmOP~.֮Ƌ/lp&/,@ .~0eYҵ`Q21 (e1[$&ss{n> A.
2cNĈy1,p(_&"G<0uFB%	C\/xЧ;ֆ^/)2uM8Zͬ1hWIW/mШ=볟VMzAl-mjQ-6i~Eދ{ڮ3̾Dа\2Yw?P}[}ވAIgIۆSIg9l"q-Y<wUIN,W.(dQQݪ8_(S(Rl7_ĪN
uW

(x"^0n_8
&0
Hp1v4eu@2Y
*3,f0>m{<ݐ]'lDSqGBHQ6z@/]}#SnAW!ǅ_B6=+W(ܧ
OIgX@@;A?"rx` !IWjR\@:F40d!0C	FO`FO<'+Ԡ-	
tp=z)Ҡ1#H L3ebPS
Ӂ]~_PK
     A ӗa  l  9   org/mozilla/javascript/ES6Generator$YieldStarResult.classMK1l[WaVzh+K"+ijvW[*EIQd[E2yI`K)H`aÄr{vCҗCsd0AG0G~KSm55\>4"NFΡUx
lu<j㰭E7)y1
kwE̗ʿ(-jRϓ[jȰ92~?Ncw1z-LRQmК܃UV`Ě:=f/P
i 4QAvti՝d.#\gR#d4PK
     A Sħ7  1  )   org/mozilla/javascript/ES6Generator.classZ|Օ?'&/$@$_g!$$-!#83A"U]vU*T1 Vmvj]nwu궻Us/	I {?~Ϗ>GD3VMLoH⟥o%~轢F2]F*c&R#.de.KvGn,$WZاEH蔌|.iLRIn-ةF%Er
f7.zH:i2.-5=Wd,7sts\<L˰͹<Bdf(1Bv4Me|㋤$iy'W
ܴиPHMxJs6ȈKaxSl#F%c})	Q#L&cSzԈ5F$V2
Ԓp(bkÑͱЋ~Ҋ2+SPWyL.d`dEXK$$IL.ĶFWI4is8@̈cLuuUՕJCזP}2M,G4)K>hMۍe`o7v!&7zߡ&	WT4m6"Vܖ?i5ˌEC4
BHcU@kT4B0i0G{I'[
UCp3a5A =6G±pU$Hf4D2&%b[QAg .q 4FLL	ʛԟEBAL<Ÿҏ2%42v01m}
kYh!4?p~bdc?2ϽyY}1E  B#`c¶ O tXY`d,M|֏DcA.bu	4̡ZI!-'E ^@(\hVx"|jzQw)81Lp!4ҋHF.3\3Č5h [`pkYI053!DB()
4M}(>f
xs9ί.}_0J*Ud	>Y\h-)H5q;̛䃉lc}uLy}\^uA#ۊ`<PlaY@Оv:Y(!¤uny._sy=:/EE:/bJ(mѹD6-RxETe:rѼD
Igsv3sF눙?[>x?5`Cv%\yиR*^ӽt\s-xk$Ą9N/:u#:uJ(Uy=,LR7e::yܠ!QlTWg:7VR\A;4ަstqXfBml[b,d&c:v_  ukܪռjm]L$1yv:_˭_7=cz@Jn6;^}Æh;m)FwK"v=MUTN~h
w}{Afod0&0gTXFIJDX?߬1s	ɖ%@"kޤ;y_>݃)pM9Yo,13"!Љ|~Hǫy}C LZꚪҊKjjk,6\nl7qƇT/~oP0次UƵwH 	҈m
#Z6#'9cߠ;D_Sx~_K5e_l̥[Z%WI	U<X}E["F2n
9`ԇաy]Fcqe?tꢳmuK(mk53F	C
{䎳2 iP=IYiA$b4s&C4{z_;ݴ7ӟCDx^4s߶_H[O狕	ﾩ=Wz:`?d"֯޾%+KkK"޵$~kW#],3MmVx%~Y$+-Y](%F"ȒV>_?ݯ.79XV\^S:p
sb.s>db|0e}ڤ$}7bnWU.Oή
ʕՇԫ"]=Z/-*?XY@ӈi#R.]N~6C}<ΥFjпG&C=a{ہjG$y[-UIV5F.v5#_af#^Vz_o
d GAmtY{\h'-h.^rL顤SLP6GhZ^M3л+ǘut=j@7%Mt3n$F:FnL/DQ#;)I?(Q'P
j9O77@о:]N-oaJ!Vdz ǎwRq"l5?tD'Bci*ؘt	\3dN,$@#
vPДxXyB!jin1TCsz?Nߤ{̭<|2E#QFF_X$FJfdGQzc4|N.E`dX{в%
|\aeATep%
^Bi%W`*C)woؓI߆۰/1VdZcK1ʥj!)su(rfjvR4t_\b2֜m;ݔ/(=#4=FvzS-y&ahL+۩$}U\Ңyo-~14}xBu.l.jO&F[s{n8coue;tK .`uКzj0`uN@ֽ0}!@aRS:Owo-OPV~BMW.gUq6zT4q+=p)팠S4K4sƢH#qUrL2/젼6J>DQY!N*(r@cEN#
&;:iJ+(F9^>Lcq+cZ'MWwR|=/hπpk]7»nW!8WɕC&QA"!H2 $!^=H
Qz.~'M oJǘ_I<j(4ê%IR=L$C=:4:h?At{=W$ZI6;f֏+!_ OcO~yfU"GE.D/Z4!8tN^ȶ"ҕ*ZE0IRJ`E]jbaR7#B
f7wäw[NiM4r|l&2*)!'@qB]CL80N8Gq384Y' ^'p0[>#tMRqS	%<<Xq2qi]Fr\=--[8vV(#9
.gl|Rd>a0Y-^|]ى' 29

b\\c|ig 2[< -Hsd;B#0־;=D6+
Hώno]mwuo-YR!8
N΄?ǁ)'p5KŝTnKmpNZ%1	`Jr)5j0tQx^c8NMg-I(j`.tc:tJ	W{7'`y.rن#&@̕!mTEF_v|>z	IGJI?O6nqu
@erXy*;f7]GWGYG.g	ZUVWpw!#9ë& )S@.y^WGtJ2K-U):ZƥjGͣxnU_yFF($z><40AcZJ|@Ii0ތ8Y!ݏj;SA:SUNo^-ֿgO/kY\#x
81
<
1^+x|){x3_P_Wh	w{{;gyr0>?<UApG AC5^1qB9>@pŌW jzIvⰂ	+eD;(<
zz|A)%ƜRR-O\>>~,ŋ')()'`i.;zW9f$pN-fpKklk&cT#H~Gh|2LG{EΑ=4chEN28p4)@rST`:RTr< @so)ۯ_S,zZѺI>iq|ҺIK֍O%QJgEBE蠆z'@E6h]8+jN:UոD4WgQϡQ|14ż"bKhRVY.sopǕ *ϫkE^+o
 %Ja_-RNMup<lnEl 4p
7bU Q1aN@.wa>s~?Wޡ@oϨDk/5ޅÄxG-g?j9QF!L;; j)Ɯ
 PzVI{2wzFx&x)CP$FffY8+GgE,ߒcnXPk3rj%ߖcu~F>sש*幆N._Gz7t&*<hVpKZݵ Xmht檗ўl,{w%!!(#ֵ=n>d7aVl;,? du#zmWvmddW죑vU8K˶;+#±%.onrٰvA7sE8wr.|Ah8=LcߣB~c>ZEf3;nF|WX[0n\}0
s!_bRS>Els!N|T1)rTT?g_kD)ˎTqTx8g^O0<PK
     A v(	    (   org/mozilla/javascript/ES6Iterator.classX	W$G0Axk#!LN4F6oM`, [H4"8{Yb޺M1N8]4ݗ4}dyy.7z˯ţ>T14<.xR
<>%sŏ	<-GR*<_xQ
9>//xE/W|*&:N	uZ$錬;So2-y|ۇB}χH	8*kefbd`dmT2kI{L,sMj\ֶFmi>fN-	392`gɱv
pҚ04
''|i2LCmᅝcE:F{:Ⲟ}Ѯ^r=?zP`Oa?P9=X﬚Ǔqb=؝ʌL'fؕeie@
摄{-22:o|sGj"xM2Q#M!LTcp5x`U3);eM }fځ.oT6Mh8mKpκ}	;%!SizT YzcDI)+a&fDݕKl .f/ش/9\d88"0;MMiX3xn%E1vE	D0"~4:m8aMik,<TikA} KZ-U4_r/ɼkFi?cJ[,Ukk&1뷲e?~/v_*d!(S'LRPVopo Ĭ]q)uUEk`Z߼x8P?~3p
u'>h:qɺWqye@|~lfIhزN!^3\6K:ޠלI$13ёMXIs*fxqXk/~c෸j 2{m 	U/hOH8ϲ/r&;Xv.KGՍeܲgfe 7/HQK{IekkMVIӶ
sL3cl6sSv5%v*t5i%8SsDn
/quveX/aBd~J[hkdWD;;
Sd$h?;<vf0<;LsB:utx̐l+j9GFJvvhjr<fV&[>D.
FFN2VT_ykF1%cșI5xsy\}ňz^ѰPd[xSW\,<ݓK8{HOJ~K|lVr-Յ;KR4; Zqw6.ȷ:P_ME|E|׽NtrfgE@(tU¡Yf=3p77<Bͤ$v|.*RJ҂:jl]"?^Ս}D&x̅n
7;Psl.<予$R	eRiW~sI1X
_iYM3X~MQ͎70ncFfAcC)q AT
*K˔9>;@߄Gyfe%Aj@jf<w+jj\*NFklE%~;+d򅘢af+6g;Siɱa	ypq@}Oǜ8[qI@`i,5z%nVO^1@ky^QE ojT
3\bXF6*}{]E\kM!"K
0>t<5LJWLy
V}տqE[_SH
0T{))s+XR%҃aJ!o2bE1pcNt˔qGk_SMES^(ƙqxAr-uxR.wOWSG%r603iWQ¢jw{<<M:}[g8]@{KٟzLS<qv:MQ:	H!My
}HWvT.jȸE&-E}ӅRQ&]RU)L'8KxJIX_ CQsGqHrNq16g&Dg5qxMKԧϰX?s\ƀQ,U'UktH~?PK
     A @埆    &   org/mozilla/javascript/EcmaError.classTrE=E"6Mc#ɎE81ql+`UciP&URLA;]+f==}Μݿ/ 8<ne`3OqWҸEFdZ+j2)L5i<dr#+m{0m[-͞H4Ƅ>|)&H`=ẼM9Ғ&^Q"ՈPض[?YuZݤ8EA0=.bv4M^Vnӑ]\ivxE	
s¯1k3 PTl6{dV8%ĈUg,gBbX툮#-ÞɎhHWeQhf|!tKx\rPp-<9U^8ECSﵡŪ~s'y'8a>8z*2i~TSu]G
ì9UMƁG\n{=icuحn`Q%\52QY>]y]5.798-i]\|klŰ2b#Rx+,s"ڸg[΂abf9f顙Py~@iZJ`KӉtXi⥵HP.h$	$>S
XY@J=u*Ӟ:7E[EQ2Œ[X0%R>;RkI^Wٛu
wM8#E-(eĴdĵJJF+Av	.̗+x2'he22G2j/!pr (_&p<c<:՞+A7sEMG;.>s=⊽?PK
     A a}P  c  1   org/mozilla/javascript/EmbeddedSlotMap$Iter.classSkP&m4ݺY{6uDCj}6iR[C0a:P7&M&V%ܜs}{ 11Ii	MkX7)S2P6P1`38089t~(0d;+展
ۂa1D|C<T$u4K1XA ]"l-ڊ	ﯩ$SP`tʕKK8˕"!
T
TiPj}u..2CReme!L#WyJbMÂ;Ld )asvk@֎\ї^|Ȫ6LEWtm1̏ ]lE$ڣC)l] 5FJӰ}Q>EiH(izOѝ]yPB3( UBeq-|@>A+
t-%6/15*LH#}S~qIիߐ)/ʜ MgEzo~G_J1Wԩ10D	I9>ko.	Ÿj	+qmbPK
     A *]$d
    ,   org/mozilla/javascript/EmbeddedSlotMap.classW{pTݽ.!!.&-JuCE4ڊKre >|Tm-ZBjǶJ;}ٗSmӱ3a;m8w&Ip&s=~Wp0䃘[e,P6lW-=!a>)n3p}2#;evl=!ԉj++ɷOԧ
|&~y<P
<pՠ'!lTJlrcW1kg[RRt.8I
aKΚLhh>pGe`Ѡ%4$[k'6mݞLܰ^Cd]>WrR9g[*;hUC]ì_ѱr͊*
vv:5T.ƨ3.;guZŭ"+Ne{o3֩_Oⵄ1U`$zk)ct߰K
ΐz/J鸞&)'OZwAv$u&iR`O*rZp;UK[TcS-VYX|qF>\ڣJR~:.Bz2*M9h:BPh+Y.)
oY*dSibj)~
8͸vNxvMzhGg~HeȺy[WK5e	
&ː&R̒p=
2MC.kZ*	âd`	w'y{6G^N+h]R.d,HIUr+YC`1m]aKu]q!>bD5>\qϗzc!a|a0@4/r_
q|9"څ4,p&47
2a0ѡa_֌b>![aaG_%Me@
:r(081(gXb@;Cm=}G*["3'rSa|Ox&gEa4*$|͸\ϥ8ԌF,nS|ti=7NާΪ|1cLk7'u6Z$]Jr٨?mp%ڈ3TT%X"\NyRJ=ۦN~6Usc<ʜ獢 |R<}R$jlF9qЦ֖̜-漚k,G>򭃣=]g@-^vp1s1O|Oؼr͗"m^m0ab5D<%+B_jٿhU-FԏxOWSu*˸\JczD(6N6u\˴^_Xl_@)G~Lay
g#\ ]0kЀL؊+9ߌ˝t'_:Jkj2>Y%Vg0Wr+jVkgPi64UWAk~KՍ$6u	:xA/'zro!䵅z}d	 n@Q.OIXɅeHeHeH$2ZA2*pʐT	"|}rx<=5.GK>!
ϢEMWDjf)"{bMLҲ'`
aia	`(w0{э,XB,|]*fOܐ7B7ArCn&2bL%8޼49?vHZcz9oZ ^D]1Կl(
maM(mT<D0Ȣox$hgߑl(h(
R4)#ً|>  Ljl0G#^ቻnF`7va,7o8()x;>B|&1RHeaD!/ϱ.%<,{"Ug`
̪7?獧mƛP[v21rjZōr\9ߤW~7+5[g5?__D|YGQ(|IZc$m0	hX< |%~5xc'$
2γeeϖ|58aPj=5'of^UfiTP( &^'Lc~=ii?jjSKܗdIPT)Io\jqT["_ʉ?)wݽwFM1~/
,s/x	%_do/~ľlo`'D	]3_X+o6:x]r?U'{\=-N4Fj6hui[ZNN{ܭNy
:w3kW`[>KOIӼ"cF)\=枠:igƶu9O|J7͋&oݫkg_X5gj4k4yPi\HۥZP!L!	ΏLq>Tqպ]b7@?JM{U4ZNQ>$X
Cyvt/6-6Œ%t~ i5ՒgШՕ=6:׋3ޝ\R/s#^y^7Gp+ iU*s{yJ5X=3F0o=̚x߬ۅyԗ9Z/M` PK
     A #  ,  .   org/mozilla/javascript/EqualObjectGraphs.classZ|Ud&_:yIJߥLh4L(M+i5v2f&-DXIEb0MpeEV]ʮv~3I2Sssy83eЇ~a>	({C8xC/mOyo)u!Gs',ux3"$%+4L%%ڝ`χpPǶ;'Ғ*FILֶ֒:Khw~)g%X[2Ò>,YV9YYr-2ߒ>,A?A$FAZZ9]?gXȒ>\ g*Y[
D{gdRiVBK
 +u<KV>l5cSϷU'/B6^D}JU{-iWېT%Zђ,dI%-bt}>R$"(SHLiiE=MۓN--Lh#$VjiK${zFcHѾtӚ#p뒑eI;bTI	*]hI഑3-yrCȿ37>FqZ6vFVw'N<۳*I:݂Id:VGS1͂h<^.(
4lxV%&w6nu
,1IFuG{p$<I?ޥl6t5SP\M#B0*YCRJv2
C::
*ӑ!oV!K=-vR
{9>
tjB:O,xU%]s vܐX&Uf +b-2+QZZLkO[1&m)$.FbYܕddo*0e9C?3ڢ4Iͷ-=61"W^y+rqrbkIF҉D	0i\+tdp
L)s<p3;0*x*|]dػ&Namǝd.֎Dg$W;J&
A#SL)M)0|WɴӭQeѲ6RG..-A-xV(5igP9Ύ1v`
!g
mR#.HiK8Q h(k6:U`)}qF5rxYaKJBݚm2-.N@ȇxi+H́p\FaF!RnѼǝ~e+9le_{?嬍j*
's~$7gv6A`YՖn3`D~"Vё][vJfP۸ْ>[A$:Lye\[L&$%e>mKZyQdpC~f㳸ѱH:˹YDz_0vǖ]-K8s24qdBq{6odg<@bZT)|9^~mur-NJMG5-Ѱs]P,䢌w(d]=d%k,TD;CMmY>l-[>*cEa[nU_>~] )_#ޞM,g;cCr-6~ln)Uz^"Ny2;Te|
˖݊6 8u=mU$^sM1nddlWexi~{srbIO-:1̪7jW?rmKr
sk4Ir>FlJƜH<{ݹ=i'kCm{$+4W'͕+X"A-q5};/5|Ŗʮ.Nr u؝ߎ-Ř{T^iJkd6H{ctZ/D<Ȧr|y+(f7gL5i	3{t1|EZ]M2\߲$/xSۻ5MےyU<½\|2vU'DWr-uh}hJ(d9dJ΢uب^, jdsF"}uc=E9
RԻ{Dj)Ju|P*Ň^YPDѻ~*zcܴU_s'.P^gm68x⦩s/w40Z=DhQ(|7Fɾ;xBzkU}M+K)}U9Ϭq.-E~'lBS7~YY=ڬJӔwgh8|F[͸dQ&65!-"ugD(R|]&=?o)5F򃱯EŜ%xcDwty%5^<k%_,Yw%v:Mmf,5AB_#Kpm~gՒ!VoG1'5υ,`b[t<9nUX5.yx;9NG9xqe!z77US~
@sG){HJ:w;xЌJ#.:>-q+kll{eDy[4C9	OX |QKCp'ӭ<ä4a!-J{.+J<B&Z.d{6֑V,JPyܖ(oa)>99tw7%'H§,|yzoW%Sřx=BO
?oSP~
CTATN.rv&}0!`UJ=jNŤ`|^*j2nny;+R]>}u4Δ'Y0opSKqY0>%ee%]PZ\_Y9Ֆ
Jb5/6P1y.F5:K1&jga3Va!.%WJlV\.zѯSt4M:Ǘyr8}Izh_ޤ&23?ϱW]Jяϳ݄2 PeYRo½޷1Mۘ6iޗsI$khihfV0$ũL < q('tM"$#>{ MsĜی;˿a@ N37ebAZp|
.HC 
G	 H #47j_9;9W3Y<ϓ a<gS8v>vi4l?LF~ɏߥ{:?|QK_fs`.АYWb/J칮.2̂U 	y?gV:]T:BCh@e75{ZcKzk17j-[4C/k('p."3hx]<aiC83gK\ӱ#/	|.ť.ťY:s!]".fB4Ȳ|i!HAޓu'^>snaZދ3F-<J/zYxr.kX6qcBߤ<-mzSЛkfx#3\{~U/2X*$?%{p5C"m<\ %K+} 49_%bsӭzɓgmuřyn~JPf 9@x2˧`hE9+罞&?aW5U2*|$m?կjE tD u0sLx")Vxح?d.ѵW'װˉ
a4{<Ts=^}sXL{LxY/3|*r๴iDu+t%bT[;,Yz؁?t	#@1+!v=jB1JBrC99SeU[&ZxV|a/ݐ)_Vŭ*nk4VZ{NΞfoFq/{bYfsc'|7J^
~ߢXaiMhUJVJqwZ[.T3˾<^S.~2;g7w+7eq*цP࿛:t`>3$g*>[M;$She >um4T=lrLIF:1l'}X(wsx>u["H70
2{gB%
ƦB*#sڏrk?✻OX^oHF.
i$BmʩvsC?5qc׵u7|эn+8vpڹd=fG#9cK-C-8%FKK/DYG\
_0R{	4MqE~٬71l쉜4Tڅ6z̖s
W%՜PKniy<At݉GH/)ݭ/֗Z6atbl᭫kݭssBi|WJ^t| B{2 ՃIGrJbtat#(KO)eoLmw1LiUMeO@\x\
?l+.s Rr(h*H{e'kFvUpiq_B9Lok),hD`aKYܮ3qhr66to,.7
"Գ'lQ^KN=~L8BgVʙw0l)Ķ}QC(ʎ!YU-,驉wzkz;jVMΪ>~ۇ<ҏz A^BΫ['
KlLӊYFAO|lGa{\J\Y!/PK
     A FK   a  *   org/mozilla/javascript/ErrorReporter.classNMk@}MR?o`/Ko9P
a+n7*i=Z8y{	3))FWy{vZiyz|#,0:JmVNߕb򽶍^cu0e7RL^/X:/a_]zeH]@7&H[3PK
     A b  !  &   org/mozilla/javascript/Evaluator.classN0@l-[7vNSˁ\*ZRHdI]R;rR	|>BxiPE2~q^^`62u")rSdY=&iq<O
6'/<|%%`H'(&#xA+W_F34H;#
kLG*W5@6'4jUH$-3Kѵ4U2*yMmaEf:WjmAwpbd9YcWfcj=:z۩5}5sm?,g	VBR zf  dL0cc6`"lCA/PKVlf
PK
     A 45`    /   org/mozilla/javascript/EvaluatorException.classS]OA=OY[AEIM`L@2dKf1|?`3]KӖ/ws0;(PaS-"mlȥpO{=nU<%C1,gxv~Zl0$vgԅ.?'!sIB.s&ԩ@NExhް)Źr/HU,VC+WxrCaQ@{ +;;8`NFt;6v3?LBq$?*bu}%:!BAW[cE,C_zGKKz62b%vlfc6Vuc8b6n=:~0P7K/e ?H,kjN(ZӦff8KHR쇩h.T{^ lKġG\
BTYaiz}>+Yɖ#n4V"
ERtfR%K,$QK@*ԷijZe#5	Kl$U>35,]!qٗMpٽHnH>j<!=KMHla&+?PK
     A k     .   org/mozilla/javascript/ExternalArrayData.classe
@gM46I5vVG\NQKlμ?9.z.Q*R)~8\&~G~L<eQ$zaQv/4y"-.*L
޴P95Ϫ,_G&%gU&*;k	v@P2hFpju1BlPK
     A _Y  
  ,   org/mozilla/javascript/FieldAndMethods.classV[WUtH.\֔RB ^ZTT."C:3u'תZ^}C>3P(<˷wɟ+hJ(F0*gcd0.^&0jLt1#0Es*nԠ*nxyḆmݘc`zY{;-Cx2C_)[#VL{qyfʣKkx ԠaR|v򩂽e&OI;FK/dB9LV3bo˲g˂~ʰtIISf[5\|rVxKل].
raP!+Hh7&Vx.b@&wtq*unʄ6%G9Cǁ	ynp̆.UtjXtU:1ĆaWDCy\EFLe▊Wr<~${i ќ]rt1nȰ
u$XX$&UbI>
gqNŲ
yR'iE}$p,nc{aQPFQ;P?4$UY2\*枱.$"^A]wY
o;rꪤHra{^x8gZE*zϚbscmfKgVGjW2
A|i5|gr&}̓\Rhz<9Ecqٜ "XQ Cݨ=9TDat:8צYv..
84nG~<VUhڒjb1BY!nK$KD6DB[t؂0@XDTBZqt
]D,n?fC];CUI^=N}p~x uY9FdkB@P;lh%8MƯP=?L2B%2>P*Q>@!* |c+"|	s(_`AOq$p
$bySK~ׄX|("S~!"M6yLޮX^ٵ}C¿hV񢊗A%g/PK
     A 
a   %  %   org/mozilla/javascript/Function.class;o>Avv^v>v~vFĜF^
t̜DĲ̂}Ԋk\`*1)'%> qļt}kML!F⒢Fjj
ń12p%e22%d達320A ZFE6[*p elL@
LL,l@(!H PK
     A 6  .0  +   org/mozilla/javascript/FunctionObject.classZ	|T?g;BȀB 	Y4J@0,PqH0ę	ZJjҺ4qZZ0BXVնֶV>_Vx,{g	$=_չ[9sn|ԁCDtMGc]47Y9E#8C,yG{]hp*'ihh:yy,8Ov	N(KxLrrʓQ&]\ĹX%2Q*.u8
JӄeES2y\+9W+et=Í535J:DZ
ƞJiոM<On'WD<H[:F:"aWqunnFd"Һ^8 %2ˤIx,Ec
!۬q	8yPiu*jyp!k!{nuED4dLt
n^5
DŁH4-*áh-uN}dͶS0/hh߸zYh=LeS}bʎ5;#؆́`R&5.Zj%0WmY$S9gƫajpN}}MUE]b2~ќĸ
+6U{,L2q09+p=1/]_6GZ`NxcegY[o0eȺ61	ZhF,0y:hM [G-
XgjKFƘ?lh3`lSC|RF"m渠3:GzWfL^d5PSv6ɜ*Ä71JaUAE9(<.2eee?-5c[&
%<S+VBJ
I#ʮ#Bq(f氰J!]Z!fֲANc70;uJgnY0g3`kjj;اF{@@,a7g5ZtTjGRxbws86UD@puP:c1NUO>{Ҽi"Z`$4`]PMq%|9q@{ ?Ο<'llgYY`4T/]=8yӷ5L8a+Ý!OK&1b.$PSngF a߸Q`
&H نmS)9Yg[Z*.zHL5BWG$~S[-nsEgL`c`bg#؆{n#hǤ#5th*BCM5!)n}_l=;Z^ BCuuU;`R	~q,I!X Љ
,.4	 
aͫ#ʑL_t˔߆YMs$ MB148"% 9	'Hp((0s$ى?jaSա 6oWo	"uE 'g4ބpg90/(>07)Z:=Xhd{tSܮ}tN8_4F;7ɟtzfڥaE/vt[Z_=m-Y돈Uei/1MM:'3R#{i+}E ̭𷔨Yq z|[uz6U~P>sH[b:?M.9[<cgFX' jvk Mc:i;
w¨ugd7t~4nh_&dPh;	#e5om~Tp(\
0@iu~KG5~^罼)y}6~L[/ATKW&֌*K:b<Ѿ!D+ߓSOb1=Z\Kg[Vp|_ť4%8t>G٭z>:A&Ht~~Ut1dNj
F;S~Gɡ\_t4!eǜ SJg.'c/3/|-Ld^CJjNCQ]ihE$G>Z5y&%0l
D+q(/Hǰds[Z\ff|	t#qfUH82gCuYZoNM3c&P%#K~ߐRr'=
 AYʂQr^$>x]$$aCyC/YZk*aj2H5!E2Tcܓyvxx1<~
s~QaT7mAI
WTŦd¦\CY*ڰjWQXd5cMegcacU}SON?fq}*֠oo3	#sDi,v pKpe0A7g}΅P|
TX`zk/<׷Wxru{{:Q/'6aS:6-L].
NQ;1M``RY'XW>~7A!`ġog`4+
RBI549ߙ߳f#(Gʶmp#y~q
rC
<ο
={[}Jz~X[	Mĥhbu2<;"];
YKb;Gސ(Qi[(r(BQb_>u>߀Ɣm$m}nO߁R|J_H߉])bJM	ORͩ>*>PɵY65g#5<kA."~`?qd颜ɺ0YmpPn|XON.K>rahm#}CeCF{}v>J4..fuQ-v8gN4̝4RvҰׁVӔ5vX}~TyjRꥋvRؠiR&|)Y%^^Twpkռ'iզӨ2MY	%8=έM[491]Tj..|Z-w4n'e^s>C5DO&o%ؚ0TiR򟓿Q7ߦB<k$5tQ]OSIK7af-0f?{WAZ*w5
FrKCk9q23h#_Cux/Msa<-|;};Ft/?E_tL[5v#j2Lh<@c,=AOu;\amSK;Ā4Uk'}TwҳF@񛴋tG[	\&	XE)4TiӨW5ګ>@)\uxFsJv|Jeר9-s/>!.]WKwݶɍW!v,/6%k`.;etJXAϢltZ͉uCz%nrX;
U!zg2k8osJ!wў~tzS=x4,>p9沈r2se|fz?)(*2>E}t՞=/Ҭ%iKj2JóaS`eٸ8Bܯza
azYeUZߥWzdUNNSss4955ڞ	iҤ+!CͿrA;Y<B	&I;]ꆒt^Kc70 k (9*<{G)E`uIuI5'9I$3OUAz7MN
+q9
zd/8X
Zg*zmOܩPi|*hn/:B.Լ8[ꗋB~Uǽ&o`C~~KW]A_@*gA0,;f1+ݮ,ޢ%՘ecEsNjh?E8Y~)௃&854kjzYk{UjWYgA{(0j@Csm?t0a[,胤Ylf<7D#{m[ls68Au4k@ɋco?raH'P)w=f法:M׳nd-g7"č葦t wg1t%w~`LIBs N_`J?T?ǿ)iOp_ٜ',"ra~Lr>HȽ1Lv{
2
^z{?-|.!xbQexuޱxC+C^X7T8y6i0j#l0=_/INN6HJ$ߡM59INP hPT5Z( 
hQ/O9)g⬳h4Ϧq|u,y	Y%d3e;YCv'Kfں);k<'r"75K!qp5yxDQb\fK	1&&BD$L!.ViL1n3< JO0AQ2lC?*lPc%X>ۡ2͈{z4g:)MElO/-ۨHK^q;%r 1n(=PQlAj-w%i~{h\nΗtQ|>ZCii"WIM+YeZP|эu>'n%]40]s?M>uuZo1U/H/ʏi2 ոAMir<M@&5Vf8iPP&O/;{J`<ť^܉GqRj@7+ktI,-{QLB?KM}{i|7
3i;Q uҒDHue[h7HgJZ̭WQWS uoG}|?wAsr'k]^G
o?mwMl;X0|'n.yo++\_ /*~#0/X$w6 7	zq|ͧy{,˽6ΤQ*82(|
x/vT_Q;Q_ G$΍j;I#nlMXJwU! aC
=_L0V
:8RcRq7cCR{azƀ<S6/q*2eZ72eTQ($J\X"KU:K{JtF>!b7	ɣOR$]Yw؏%$ydf$h;N9NC38bJXφǑCU`ėnS۠+3`EGAhaZSCr T?T@aIk
D*I"Bmfw*PJh
&U򏨖J$x%>D;+ URC˸Hϩk4:u4UAi[ա+ͪ0nϨ)r@Zp\`F\wSy
Ō@deF9͌AOP}_jHɬ\GʧM*(|̒غ_C<ǐ䧍rWkHה˿I]w9#ߣ ]n?>N@#QT>XV)IHAR`FlCBʏF`sOb}<_Dt|	8F9'ibء4ma
	-vPK
     A FS   ^  1   org/mozilla/javascript/GeneratedClassLoader.class;o>>vv^FԴ̼TbFu
ĲDļt̼th'M$ABkFĒҢTF-thف4deC0Y3AC$_ZꖙV=5/($5'?1%HA;(]?7*3''Q$T\YPM# :6FF&`bad`f`YA<6 ,n PK
     A   
  (   org/mozilla/javascript/HashSlotMap.classV[WW&2&
E"CVE"F&8^}Kt-^tUW>3Ї9gs׫_pGю
D&UeGܻ`7㙛Q4?'
>6>Fkļ\ywB3aDqKMd`rSTPR`I;ڲ:2JKzVYʣF9U[pa}c
;zBh=0LSKj%ge'5-gtGƌu	'WT-5mޤ)+57);FE¾P#@@	Q,1)nUi4[Dfr0ŷ,ɯQ%H)"@jcUG&gXrK8JJ(M-GN:ǦXf>+(%ۋl]stwy	aS֋2Q<Q8{7s4a32pt[s,
Ԥmƛ
\2q_s2phA6ѬUsY&SYEޓеIE^HHbPEL
Ȯ:LTQ<A*N㌊e$Hf)ҧCPqU`PBX);zl[evVRg1JFjijA3+uc0<P9P1[ŗx+Qo8;INS'u7xiF]ЩH}8`t|gP]Ĉ隫!Jcf_|kuHPJsδ=ՒcusVm[y!+Fod	w:,kf|J',$U=AoKJVxY@=m=cs]z]A+ڸKvVTSQfВXx?C~"vO-? /2y짞~+qzkW#"w7T{ &-2}w$נ\b7V'oB{i;p(h(N#8@v`#2u.HCwD5D?,;@mP?]/Cx\=.zad҂c&iҿQ0`Lp#yiM$gpQo- BJsj%ÂS+NR/D,J;iN!F1 moG\CC/*d2-J:ZAZOS ujZ_+Qz M>6BCv>C+*m3tĳ$IPzgΡJD"ј#!jWGY2~2~:񎫝똈qQWwG$~Ȇ3Vg/)a )јG½x.Џp/v7˱%_"\/٭Cb*b
Bͧ@@ҙ|w^SX
Ol-:]SHz
: .	Q3PK
     A R1    ,   org/mozilla/javascript/Hashtable$Entry.classUkSG=>fY呅	Q5&$H0@\B\ pvieR~	~
|*?*t.Uзs=0Ri|ьvaK7׭$"%Ũ14ތp[jPQ_7cSjvLk``V*}ǮKx\~T@Lyn5`ޮddKȪEcrް-g+\mXcQVd  uÀcnsw]*v*_ήyNbgh;A]]bE덄rC ̕ȃD^ >N0N:S[+JV˴Y,`a^/uإ){]RR)lI"m_g?
Olp ɊJLETήcKr=FDH_㎪%UgmL| .kԫi2ڵf[N9,}gkb&=s'[67=~0	>Uix~4B<w
<8fQ?bT*t;-c;=fyO^XqC/#O(ݚ8k?]YgC.HcGoTEK89)N%>~WrAR`46|×yT-uնkۯmjDZK"r6LA"h]ZS|ڀ,.9deѸ1҇!hcRHنEI6Z.⏐2!)qHY=$'C?m*G<A'e=uq)zD>V3!{p
XG\M9`0"zj|71K˩K$X虢Ԁȉ".?2M'z<gi֘J:q9Dml<3mN<`*
'hUjh;кT~o8Mד+ cI=hXߡ[Vvg^ Q)icg*ø8d"]$\ÕVJu3\H:
T[iՍ{o4ۣ?PK
     A B    +   org/mozilla/javascript/Hashtable$Iter.class[OAn[	rlD@ FI MJHmL`aN
& F}GQlK䁦3g9?_BO@6FL$}eM&'$tLxc!Zv}b+2VGx6}3d\o7WrYs
M*I^p_K>f֜4Š-;irFTަ`H&guEmiRxcT 5%$;RdV;ICAr`C
q(u}Si{YWpY(̀"-;4pzKrSdxxn))*-4zu̦0ВBzQ
wpso%ȕCS:*ma`h_ MIo-)|8i\6FsN#7F+yj}Ad}"{1q
#hgJb}X?  l@50u!+B?Wy8v9Bh1VDa9UhhT}*ofC91.кv-t<ɜ!DU;
+BCHo_GY/{|	FC;{@*gKA#UBPǡv)u4v5ǌH_b\9Y5e`JQsжh{ PK
     A إ[#    &   org/mozilla/javascript/Hashtable.classV[T\63Á HH!&P[\`HbCz;sΠUc5Zm1k5YU4tiФ>]]<ڮSך{}_}~oha#$4a(ΈF0
	9rҥ|aB>+[yՐ
c<^*lRࠆ¨Q
9<Q
4|^ 皶ޗNvwp]@1mHce{zݙiwHfs_{c
RƄ@uAchɺVe2&JѴfmS`bVH>h=ڒIEu514ۨ=4bَ+иCDuvc9R$0;ncXM${e6wgSæ}	Am1H^uE$4)cɦR<ش=
:Sq"ː>X E;2yX%
'kIʣ&Mm.`:AU=m
W\B^uTl$c^UHd2a&MWBt"`Krx4X
D""+UVflZo+ ߱<byi_|K$Mihmm͎xKrʴv`Qy'އs` vKWK\+؊vףM`Ţ^#-:EV0gVhq+I՝:qOH]ǰCG7t|Q>,z|팭 >>ٕɸkLw,p*dOUi_ɭ5WV)]|Z`㕄5<Y<G/>Hs,o^Px&V)k,?6CŶL|/,QlK[ƥt	*pIUdqIT)SMd$cңg'Le	?ݬ𐆯N/ғqH
'f1bĉ0A-K-<i:dƳHɇSKF:4d>Ͱڗ:({2gg6v4o0ar6
a-fgOQ%s
nsdj>S-
|J,sEpAW9V!ȱzTғ&9
p.iIb%T\3z贯ցCZ_[	ѡqyڮ,D_G,ʦ|=j<oJ<o;]w]z.#8 <};E-UD'AeL.fiTy
VCI$XR@ s|_aByvqޤkru;T(dcfa@9pkؾRߔA>I).csݱ먚]a6ǩ%a^sk&ϭ0VD*x~($5[H0gE's|7j|7t
YY^d|&^<վjDoyQYd:fIХcMENPTܒ3wcN`m0wRi)J9؆װolXq5oGkM5("+;\}OY4
96X@o3s?D?,,A93NL
m,LOFg|pK^MA.	~BE/b3U!50O8Z'd ~EH%&!%#' |$"&D!%#' $"&m%))oD<WK/gWo[-<j߀Lh쐕hUs]|lAUVN#P't\-+Y\Wjo_	ASx@ng?WNӘB~z
FP_:<uH,&f=k{|ʿ)	ÈUv.Nui6OrEUY?-x|R<֫B+;=Y5juJ<ZڨgEz~G8PK
     A ng  H  &   org/mozilla/javascript/IRFactory.class}|TU C%NK@&C2@LBڅUuEuk/+e|Ls7{}{9O<
 CLW[∗勣hGSM	d^#T)+TT24=1e2Sq8iѳ4jK2Ô1˔toetѥ)ҽ)toothNtl.tjntnti^tm>tk~t1e.LOt`ʁtdtbʡtf74e!Gr4ǘr,e)'})'})>Ŕ})>͔^bRrgt2l1tkytot_h3Ȕg})})t_frW2HJS.7
/ԈYw.R텐\텶25DZ*M:SA{dxk鲎n3TsрTy.H7y
yG\N.WPەyݯkZ:*]O!*m//rr)o2V/Gp&Jo3Լ*۽0_A4]t%!Or'UB+{a 
*˯߃A>Deʇew|D>JǨH@"l{0X>N'貗xS^)3tgY/yZ^+%.R<Mr%]W>MxJ/e]^34˴W*ANMz]~Mgh)!m-SUS^K]m#.]ާt0G^,r>].0'^fr%]b`(l.__J_JZ*0埼P)?^_ulʯ/_|VCߩt]2(EE㏢HOB7^CL:F@"2]M4a*T=WPNU*UŽJ(
y E)e"*q *T^/R=J|PN	
pSdR,jC}\V8Hja7]iU4biiejc^"T~/[B~Sjzztd^\uKWSu
VEsA{Ů_HDxSƒB]T_PUW9^XF{L`3Uhˋt=&-*$I3;`E1˞xЀs@*a[Aeת!55ܣFj$[hQ^UƋ<QcX%YL_QIi<U'jݩ&j ySy:x3TS~|ݯS5Uϡ4Q%DRX2sڝ9jN,̦^sRL32^FCcO
i*.$tc.=j!!,ZQgQe1
zvH@-1F('m!+*T
 TRiG*u%5:_K}:
SzFjPkL6}MQ貞.=hsr鸇t>].E$ dƌK&X2ojqIVmjB@~n!(Щ^Q[̘EuΠՄy^2gEK&ΘQR4AkuʄnhpAVלSU]2&.0SwWkVVUS'>턯BUc=QINК:\~sI5A%U`Ye9eؒ]RS(WTt?ųk#D"ZàIC`Ƀ~Euu5u5uZ`Z0A{_5uq'.0!\?~	KfbbǗu؟AϓAV<8>PW?2W
'>'=i=LQ"2HY4PI w&%[5,ZX\jBIaR˪kW1蔤'\e1p QB5pyMmLcRdS
),Z$uP-0*kKLA@d9$N
V/=U;]2@y5!6OIMM-HOkeUX'xj|2mꫪT5VOSh  ,w>3	9X1cJ/Q!rYMz

m5ڈ6,jú"	ædrF//K4s&`u[WU	41>`@š ^:(Q1²M>MpOp`sJG	j8+_QG/'8 .8Y Os׼uvןF'rf'H5u(1^tzEɪlף@Z[P-x*CUU52\TOZ^L|PzɊK =
m`Ī*ĉklIʆ#4nȺ` xq	z}=!Z:EZ5WE
TS`S`$rN]YU9%P *Ԑԣ;yD?bvrMudJ=	bhQK~b-iјqVAK+"6#1@.<ꀱ锚M+PUe++񣛲F%ߝn9*T^9X)s93~'\U57P`}UM^P'ndy}VC=Ct~Ơ`]dǈC`ݤ@8Lա3 =7Rw6'i0J}O[~!X<-mCbn~
!o@SB/~
1a	q&W뫂ըe{ȩpŕNKʓWu,ę,(UV!OO2u:`.4%eh#*\P$eeIr=ܞJSKm
;RR5	
W@}+%z;ѐ8ݒۀ5
`-laٔ8"m4f{©]d@Fg)L8NuC!źxvv5)<%0
5ʌe+.C9)D^'";̘ $	;Α^
WLxHQjt1"M-&*0GWIO0e0hs8kg׭x2MU)u6+Xىcrꈮ:	<ѠkHuPQc
Yl"!9jT.'Q-'O.a72$(ǁiC}$V%8:hes8X<XqkLaHgM,4X=7+$V{W\P`LJvR`30`T]n	(ukbAl$cr++PtfCĴ{Wh?T(kW$i)Ĉmu=%v$dm	ź4U[SNuФNӝKٺca>Y]NQ^x5) !QgRV1qMZhHw[YS5 BweU5Д)PPtVlr0W-qFm.2Yc:F,ǌ$3Ghxڧ)tCUUjtWȂ3ī@~<Yb^Y&x!{<TL	abCyU+s!!y֍;2!!@SR@Fy]/2L׭L D&D'~)UalP_OuI(v'y1KAjCKKNsжneU$d+9@%uOE\b%1	j)FjTl;)Db7)u$[*Ƭ`%hXn?M㌑4JMO$;Ꭴ{Μ&M@9!}`#ٷ**7?S^ݍVL6sH8STaó.tJNz/5IF`.gMU;S*&̌I<IR2ZP`PS?cS`DKO~s?XSpF2d3HZdۨr\A4me=jHL܁1:&Ub'SԠx,I`Ioȗ$MĐVHxJ-i)R{;Kyɜv:{i>~"NL#4.F>/\TeT;y1sUUV#9i7/
1uy̸mJdx$PpD}Rg CCؑğ-kvp9hu	\wnn =#߁/aV)$A]5`֩ohT:QLn*unzm?1I՛VN{RژL	Fk8P߀2>cˊ\5=-$Y#*N?&W6K@.gDlcuZ1e0oUW}rڳY2$(?8%)d:^K)S?lmGV`6;؟Xe)n$emWPW>")bzlu8
'+5}`@^bh#F'ےJ"d?)?JGF!uEm֓DM\1:%
5Fw${u!4oj0PA[fFn h䟡 `}r@ssߊ?}or=ôqiQ*OxEM]=6sv`q݉E$AbE?)GD-O0МU./
 OB){y*N'hòXJTWYjuoZ:uŻz^6-omhMڪn-z$k2lyʓ(7M=Ws/Kq-$*Ę\$hy^NLV_/f3,s_Š{v|ɭPӜo73蟠qY|81[EEzZ{Q~jsz',6qOoosf>q8i>o~[GSbwCm	%ĐwGX"]d$&nY";4-6@-Z-IKt]KQ%Eݰ$19j6!,1EDKLKqN[rĒu,~_--1Pwy&
>6me<1L-jZ)tbDg/#Hi@?7qսsh[;on*21{-(e84).TO[@ +I̶-
[ۚ5)S;vԭ6nm\vSj$.KKݭv2ew)CXq%g-kzv,>
K=ԯCڥ6&JV0tJcG~]]CW`c4A#CUo!4 j*qz"
K"^/-q[-99_i&fǭGVAoi9nUROzR=eiʲbjh}tzRu3[9K$:H^6%z`xUf-
޲ԯۉ^Y7귦R#^RQ^ԻDhRWG|B?\;ofK}Jo|$,9U,%Ls\#WTUH/9rꐥaG,
-;j߿SlZ|q~DtWI.PQjkw%RB'8o0GB0 
	jTZYfJ19#x?˰4K#}Feded[F+uiAf5g8gb]Xh5ҥ^W/ǒ؏hotN]v6.f-2ze%w=Si}h4v?	#ȵ<zo@D#~!PĕNZ0꜈:jZq%ΡhZ"m(6HbDfhum}WU1㗤j M !%j/&m擱1Y,c)&HAe ˘@dnbGIiRу$9)`9yq(,lC>bfS	OU82&	 oL;i5: k̦y"Pʌzew"ǖQf̠3-tYnT+s,c.
12ӨH8gZ",X,60^^Y?BW-!ݐ#2X2rCRSeT:Zn*#~v`
$ᖱXedKAc9Xm jԳЭ" DfONjCSr2@덆م,"F-c
ZB:S,wK|+Ŀoբ~Vt_9xƩ{h_H: dG8IJ}?.@N߾'Wi(o#Nxͨ$,7U!TZ8BBgv:t՚
${o`bm\**<Ě}ku#-G/8x
r6yM4Yk?ixZw>IS_g/jvgznN<AS\WO9K^W$N*
u*aNې3uO	j&h{S[Sg:MJMX|ĜadG"gD bh(beOhOBIo:>u]M6sF~$>᭨hY?b{}9&{kq-OhtilGȘsm$ͲޮꂫkuNv~©XI,7@_3SĵS~VGbb;?,bnЧf8"&c~τ^W	(!"?M.C+C$[{idWl&##EpIr7-^nh!VcDU496gt[]Cl>Fl"{	PX>aޏdmDR3X-׮i]NmCVrlUhv8"VVEv~PoBb	;?/w
,/B&ek#ﺒB^A22VgQgbH]2}
z,tNIv(5pDH-L?U[g[ӱ^DF%|$(p'&;gE04SS]K.랉uL$m0e#Zc{f)%\.'ؑ3gôyG(b8npb</ɶȾFCUiՀVD6A>AE:98_i~EMnݲc@uSviP\1罓~>hdjKK>\?ʦONl;)gnyT\=!MQhKy6ʖHfdV`lrZ~kT;G)-8y9
OH>BsYwҟ&>gչ6
8gɮbdؕQchO\7Z@LZd~ؖ;imF>rGdEONyR4yf]PH
k66qcA&R|
k`u>B$"{}>l^<nPKKղuvQܑ
S;Ȅr4;PeѬL_Kvb0yϑcc*i:On{IgZ?:ʌqY:(qi@44e+eGD8vǢwdDq,my]ԞsHMꪈCSm*]jN\P\0U#t
L'@1- 9e5
:e`2dmm-U`oe\0fNٵrtF&=dDhwrq4FyM<pf}@umܔ1ɽȪ 2{mml)rs\"uT}0=5sjlH&PLc;7Y> ОaGf	sО:ǺKύ^𚎵  'oNnn#&Ԧ,(XjcY<~Kxk`z<3rP@?)	d^PxL,z5AcN
A.\Oĝ3ߙ>;Q>cE`=cd9
2O6B}VHϷn_CwB jBX=az
`%p%Ar0p	` މwF7mwxb	3y7mw^фRܧP 7_eLyHL9ǾO>¿__YH;5'xI25:v1"oq}5um|OL̆Atku1rrA&h
&h#vn.е	B&=׮]Vwя6A?]@ݓouЅM0H7]:	F&(ԅQM0Z4X]uaBLԅIM0Y`.d6i0	uaZLׅ&(Յ&3t]uaNA,rn̣|>	P}S_gR}S_gQ}S_Kԩ/m ՗9eMPN
^AW:&XNN}ETQ}S_^ԫ`ZjfuP
ϸj_0'Wõ}[! 7		/.Zvv^pwpbx@̂G|h#V"Osi	Yq#</q/(vb/*kZ|_!(]e| G|,§r |&Gr|!J·%7\72N^7r(G
|.b"ԓBeOF`7(/#?4yZkї  b}rYpGFX[f[FXW(hsYc[r2;&а^yц7B~QW~4UN_6%XFؘJU)<7p|2
}`A1d6Љ^Y{:L.bݠuX	[xАe/z&sdsd\ R&{$B| Nȭ xOҌ`+64CM>^GQq,ԗ#Ȝƒ3tT
%.+T~8\ΠOBӾyDA/gʗ8+
4XpuG^M2IO<Y<0Z~d6}C*]W;-FP1,COqJ"ddrlK7ExK7})4JO9@Rr
ٺLlޘv6{s2{Јy86˾-St">$ozE z+NN{f{z"Q3dEnbEqZ5-Mpka^c:JTC+LY|xtz7Z;4/ud:<E	]
3DA/3Y&=g<!GI!	gSx%	
ˆx̓'YhBg6П
al8
(e#a.+%l,gl<\&%l"\&L4MݬfV
o6>el|B3R֚ɺE,
gRVd`,l	[bg]Vc;XbQ5$[^`ً=v]>c؟!.H`F<ݱދgWa--H^zBBe
HFSE?
F|y
#iIcQm0K??]BK$%[mPTtT3@]8MBg	\1Z'/O7R|%/CUɧ'p.{i:: ͸P&nr.Jan#03À={1K9[ G`n~b?金VQ5㒲NqoJ3bJڝRD^Z=|VP(m	2'62V(E<Ew<rDBo˂ 3?*(Z;_k/@B>z~a^d(YWH1)[]!!w7N< RP	RN}tB͂5tO#;ccJF>jȿ6ɶ  H&ƶBOv3[Poiȟ6XĶC:v\ϯfw!܉F{av|,8Y(@Y<0~ϐ@ks|rwmRs';v:g9)hJ
	g"8@Jf@^&_'Y|x#NG_ hrr1C:;aONR1C,_X]~&&-Z {<~td=L`O Nwqu:jv#JR3y KmvQG$
\i9p\ H
K>p%yv$o?
BC3[{7q ~r@%98 wqyl+ͽ0
=~O&g{qy"\~s꓅jg(&2dϢza({	Fa
{W!^ud7	`52p=˘TA^_
n9_ȫJdPW!*^MaET
hS 4@h7o#NKz%a]i2.bdii8{
sMW#
|Cg[3K8'W8gaY:bCK_țN}7ƼKt}age|^U[\lE	wh
y#@ڳ?9Lb_ ADg8_*tװB7U|J\Jgk)J^"Ef'08WQJ #dCPgBÐLjeÛQ퐦d_{C~Zk[t %Ps,߆}_ɾGG~a~: aX;0d4H.ӭtKآ'(o'.ӎL3d8{!bTTu+
Hs2ǐ#b<[FjlqR9!;:!.EbGz*I.͂y_g='	W\ye`3#4"/pH`$PdB5b0Nc!.óp[Cw\0)3x{;@wjx_x.LK4up..FGu, MRj!IG\go'FS=7Qβ9rI_~.8@$4W&/psӁ<A0օO0`{𢀤+<鏀>B^ȲI>{IdNsf
m{e0>,׉41;(GT<E}zfD8`NGT~7,I3s殘\
`xp9M]/CMC!
>cp30g4"cCd<F%OO|*\JF/%(ޛ𾏗jOE<.WH8_XJ`Fk:ZqE4qAĻz9:s\T3ߎIM~}$oqx.JTӥb}0b|Xl}He3|캃n'	i<rmZlD.tES)&}TJ#f!3FvZ CYD-Y =e׬K
7oG)B!!jy3f u/4-K;]Z܉;\o6>o B&ɡV~E;̣K7:;T@9UٶB.5wCrcp(n(Lovtyn'*vj4?;mm))b6~7Wd<KSw|[J[WJnI* >/'v.LUpegZ4'="{QmkЙP<1
ڬQL
0
ݓy/EX&l~.|/Q7}2/'QG}F->ʷXofRz~F['6e(<tߠ"viVlmؖJ
n(a)|l8y?|wh
_;uL9a߃^f8Q(ٷʤ'"w?Qp*)SAGq~Fw(>D>:N
Dz%/Z!/FG2і]Ћ߆"|;*mHH;`)U򻠆RSb,>{?0VGdLvleB\gOѶ*P]?[8M&׉c%ri-9x.ˏ&{ZF$&Z5h|hy%t*ox[Hsj()[}944_זf
3>"܎$Fr|[KwBB책y*O|e')*G ˤ#C
| Q
Cy
nA%(F4Ob*S?
k3(ap?2毢~
^o-x>oW7w[GwQRa˽?
#V?\xbEeM"Oߦ9%ȣ^O=lZGHj`4:b&0	ZGxXtSs9`4`jm1\ӗhƏQ#UҌ^Dy4"7Ԑb	t΄I)({ho(þ/}[0Coפ42x/hymt2G}Tg&5_^=mMe~[in	wkЊPjN:v('ж'"[H2MKüK:.MJ.קdEA/vi/ţV#K]-Ǵ
~ޥIUFB,xȫN٘j>oNLjd&]d2e]g fCa;Dw4q4BfhWh1?PߠA1	`O0x^H>EC"lN
hўMXbљՈ.l6^Rћm}M"""+"Cb{Qga߷>Wb#9xó8`~^d	GP^'x[oŤVsm=lފy,يIc9[1wL)Anl87ܶtb?
tQ! }7`>0&G
pހI6AF3.Q)&coz?,LyN钚/	s\84%9|z舥*d7>вwF4XYؚr"&A٢:)Sb*b)x1E	p(	!qzLן:OsyKt*CLvR^#>ɧS&-hcRrRwaoӆ2"rV&gF=#]؉3pys|\\ޙ1.Ñѩ<NR_
C8@JFy.(w|Y;:l[5eC%J33"R=R@;c;mC;iR,#dI%+<u(T<
XB#ϯcFqXJ,O,."LQ	r*dUVT%"WZA
w:ԨkaE=1R>,N+.
^~ reAr1T_Ht,j:wb:C3?0DR<MWӳ)DDR<;7.QE
wnYc;;AX~ u+cl<(N)M? A2lǤ8^{	2FdM0X\
ϐLA+`
t5ԉk`[`/uPD?u- a
}ao外q#>ǳh<횑
vfבf1?m-VH7p
:Ry;CCiNkPl=/zߋq #c񽘐x,cq'굻%twC/{`I~R Ta[x։]pxq	rQsvqǄ+b,GaPLxGK*K*֧=TMH='${TU3m$E0̷c`DggSw<ڬGNI/_7NOlVjg	98mU7qV{YX36LwĆ̦ЈkN-t*.2NO

Sb&IFw"i̠(^;Daƞ`E]C7q rA%/2LyVPտ7axnI{xGCR|߉3&>g<ua_ 7MJ$ dGHW)]cecOPv,y
d 7bl`#(X6B&!{d^;)ٱ`OΑ!/)9&sn-i#~{!_8ZXtȵOh}O~6t'㩍lt##Qb~(7B|la9)`")-;(~@G%~"o4~8
gfH@i+tBa4š6m+Ŷ-tpɮ̖#5I.;?8/D]jV96Onl,oTPKJv@v4rD_efl2=ZVU@Iҥ	me
t^!SLa28
2lW}@>׃^v`ĜƿaЋ18BQ51hCS[_^l-ja,yxZ;!f0	nj(@lY~.x.йt|;Yaִyo5}_ڊM&iCl Y@tB3}itR'	jdoF6}
iFv퐁'қ;V^2d7h#PɞP,{\ɾP%A̅selp Mv7~7??#ڢ[Oylsѹ
yT畯u4P\g~d8;GLa|OZ49n~;!Ϧ8$Nե˴}0Ux:@G]M}Zg&D!}zD!NA15qL8;p3lzEzH(h#	d!(aXX!AˉINdlS`<
S]lKcviTłsp&M->"QEH; ?^S'[S~ڑoJ𯴑EڌwGDG)
gY]BG\I.ymPfFv]`Wv
0h̦i3,у`C@FqF =&׉V1		YWvE-,Hqs<\T@	"TgBr	KQj.<\"Q.,	"
i,Dv0#YV4U71"J[>mHEvFҸsܓ`{v6xpnY̋9wd hcC\e.W
j8KF3JYfX&Ot!.V錨ʅ1qt>@[[=AbBGvu9ruztC)*b8G+$Y+͡*jFEo5CiDϏqQAx.>]Uٙ-und*B]0VӤ
H.FŅlɂ&<0'DT~á6;W<zlblJd^ rtwBOya$ P.~X-D+ BoaF>7P5=	{U\G$|"?ɧkSs=W!y⯄u0`546z?zLmQy(tыo'Z.u-R#:hw8f <PWHF(0EGĭ(vMb3*b$Ӑgww.hvCLUa_A/  cq슋ȆvZ"&;|z9-sSo.]ʖ˪^\H 
ʹJ@֧>@lox_R:Mq.~6e+U}nGAue[-&>N4O#ffp<j9N{: 9^ErxeMȓoQ5ӿA[y
A9#J`|wȏ>	<&?pPޔw_35|/OpDIO.am巬5ԢTlŰUGp6޴)}D_}Mc(r4Ta:"g\wγOg|M1 R	<h3dlG>b#*d"t,AuC :
zJwDT"9.aG0DpW1xL:AZvCu
@hbt8a^l`ku1ڙ LZ+/tRSYc;~+kx9vؚr6NG`_R"NʆҼܛ+b]UِZAjmT;C.: A-DP {#Mnnt8>I
R;5VDRWQk׮=PRz*,]Di+zI٤T]AAlv^\ XO}N&/	5]Rv.F:>w6Ffm.H뮐!0bS=`cUo@Uaj TPj(\pE;HK{hإBxYMdW3c􉌡pF5<KtT[B7uFp+i
o8T2]~<U}vյL6C['@9T;ԌxM1 }vXSU3:v ;P$&;9]>rm?q6xSŖyta!*ZJ}يTS!ELCUTrUQ359{W3brt@gIj](,wޞ_(Ft-󂖎N.ob?z&)pWp![	"
g!/Ʃ1l4d.֢>MT4Q[WرޕvJ@^IdG?]ESeڟR˂EU"-bUfdtb3t6gkRQ(op4jO3N|5NL5e9~r-RFv}+m)PyL>RZ_A1+4[r7R~?v+=80j@6]7B7f3ze+^@[[!]gn*L	 -0Sݜϻ3KObbwNg
T!2'BjќG`NoP!HW5J*SULWkJ:ؠFu\6fu*P)^`p@m=u9IRW7*,K]ZkY'u=뫶\unԜp5J-f`ؗ#2b>wr?'NnX#fc4U# O⋹tƄ4׷b]|܅BdL3q<:"o9,{LMNqN,10%g3Rl	#g _IMr^&y}92YRI`4m+ȡޞC4/ϋb]gh8?'Q-hEoE
:ۡچvvDuW	OGWh4EE%}e
c%tbJٔbۙypyUbe<Rܘa u/b{K=Ey*r
xxvLZ)6k:ݭ)v9 ڍp06
;ʂ-{?s+ldw4ʥ:Q]^=~0O'Ⰽd#܅xnԨc! &n{ PO>垙8Z<k\]	t&4jsxeekP!#a5nq%RZ{̵bF"ѳb"̒<'NG,jЅj1w̬w^h;s}Yi~ sHg]d貗ݿ s-:cW*졝Of·^LJ?q9N
ҫHנz*c[0BmHߠ-Xމ*Ju"loz\RCb^_,b?}aX 1Z1N!&LYDin.[.?*,ǃnlxŲӷ	=\pA).O0H}0\}_9kr6}т\AFa VNY>qŝ7MNd8܅"g#{ArⲜ0a,S7!=6<`{I^\.^OZ_iRm002$t6MeuvR[ǩf3$.u?j];S#4#Qct<51Q2ɺքH9rd[lCy2'{ؓ>WibO!2ihmw+Y>|Sف~j*&0R1kC>#Fkęzm hCv0
3n
kp:c f{!1^ J2M~\38߭O%hЇ5"ZkNER8_H¹V.3RRsQVQio|2B;c|wy΁\TB;KԜɳN
(W۶gdt=7O<W9)^#l]A.[$kHt1lt1p
2W'fBA$3ȠKRtT'#.zbE'mol6_/ov[da m|
TB
Hb^ 8KGv=1
>L	v7iw8,5xh U+ɼGf
TmF%I$+M+o!8/jo#]uU(tEU/K9Qb\F(Es g 1Bc>0@F`qL1Lc),3
BFp72c\onF-<f
axh׍5[c-|d/cd\s#RvX$бr/th <Lg\`K|#dc)Ò#F-^Aܤ3m(8`QL6szDN~YP0L-d06?qJi'R	5EQz*I +HeN܆jZHT+[w^سvCLjѻS!b4WٮP3QSiԮO1_;?:^{^Al[9
;L*	>*AOh\O7wr4g4LfD-ң#8:LJfaϼr|I ŗJ'؝w!of]!Fp@C_b9CJwľ@|CoYQx9+AWa\Z`\݌롯edZ_ ĸ	 ֖"5ƭ޸
6Jc;\kpq'Z^n:;Qxڸ«Ư&&QGeO6ǦY8BKl
xm6^g;7=ƛI-63б m:+Y
)u:c39[܎ftMb5{GL:\ҵ4evG^17t, س;3!{\gSUQܩ!=:"
ħؕGQ,dsNH!QN#ٍO@D9(o7 "^ϋzF%"D9o<!WU3;Y}_~,]3S]WWUA@j'ĝU<IP㼧6CKhSAtV^Q>_B6Rl/W{.GU,uCٍ#I/}p%XKC՚ɾye8'h6MaXb k˕k"RF0Ó,eva.Vb#Ǚ036szbl2ǩ̍e/EӲuy\eРWh
T{E3.$Ify\<֬ 2#f*ǱlB\fI*Fx~f͍x+䮲ٺ1V[}kJHE͙/s@4fbyt
fl#+ދ|} OޱU0M͊efyM^nq1D$-/Q"ߒd4B,7DviXŕ?0V+!ܩ3p#;*LGbgtOӽHu,}F{?>=;	4d>QeT>MuЧUT}9Z]
$}:C_sEjX]kuDݮGrUPQ5K_j^TXQ}oV8%ETh`vH'@BB,LT+T<MPyL&*Rtf0Ne94=g:9
8
i/9DrH}s$vصztq
9]Mֿ# ;dX	Y&vs(QybϬRBNkTAsս,{	Q-o1Yx݇8ESt*#'=LTiTCÀ='؃S-pȋC[}sf208Lț4AK
j"E22zD(wwR߃~z|ZuJUcSB(A^BtwIh(r^[j5tӦ'5V3F3BD$"O{t*,:b]Z&
ZI&꣜XȴOò('a!IRMDѵ`\= )W$Q?z*Gџqi8M?t¥:\z&nѳp~6-"[|CxT:Gjw8/LNAj7,ɾ?u^!}6sUV@r'hҝt+ǭ*@)} %Urj~zf>	za*xV˴_&
ٱ [cy9tbWrs6{?o__V
ݎ
j3bзJ|$^?8%nkKvu`JUթ
q%	kpZ	zEԧ@ce81^9˖^и;G~}5?̖k".t$n$VTf:du+Z]]HML>-5KSj2oa^QzՕ4Vz5H굘aހWxSo*V돰A'ئ?v
/n.-P?|*տvz:DRAއjd@j	ŏ a} ͜l2[L̃>$
3qT&I,9g|odyCf2g	Aay3X>iFebhn"qTUZN/"33yt `d4HaO86Ҽubl
<pF/-bg 7Tr(LYA!vihm"HÌED?&CL4.nbSL4pG,dr|h0?%h3<.ދJC5Գ_/sQe	1:z6Zl@;,\C};p͕ᖓ
D.-c?cC#ӔM[50',L93q\hXboQAxo,\A!E	/aA `#P{%٘+J,)ь)_&뙜z
ӊh+dh@\]_8#G[ǩu_άeU/06[6a1]tE+
e;:*i1'8M_2G3JfQ )s,jB)0^V9g^2K	㥈"6^$,W`)6荆8椴U9˂,Lɑ
VN]GOPUaD'
2,㖳Nҫd'LDT:Dw"z&COys+K畋Xuy#	}31A3g`s6:PaGGs2D3Ȍ2\oFc"I">D`sB	6'؜uw;kd\bpmqmx!9D::FZ[<K#6Hr*$ЂT^J\vT>=`/֩KbK*승BāA}I|ot̈́%cUA/gHz*HTWyqf"[I?r'MVRxIM5|yo<_Y96jnG:y*<.ɷ0O}ƽ>;xMȓ5Ii?żo1Әzph:$5#̿0ڌyƘ[q
b#ߘns7{$0a<T|mïq4i2ϨY0<5
@c^T#J,Q7.LcRfjV:QM7繁fm>Pϙ-y]-4_kF-1ߩ`
$G* YǃF#Y/<xխTNVgt-A\= 0V-%й[ZWD{D!ߪ]#pC%HU9ÁDOΌ<:ؽ*O8	`}KRB	`{_Ku,cPKو~g3OH"Kр+h_-&W׻n&,.f\vrэrQ6碭[Eۂ"ȅk̫hDHҚ4!f/r_yH伭nǄaed=)!C-k&a$"29YL_,S:uQXuҏe
o.Z.gՒJdNo]`iF[H#f@Bupk6\<i]̠we0bm[lm1^%XbKޱmm
=6COllql	|m#~T+EUJvUն:T5Q۾FOMǨvjUO;P-'%BSqvЌ @
8 z76'=.s>`{FSv3+vjCLF]r9[Ķv#\6K=RjW·
?CW~F!Ǩ'gf6R#:{U#ޕXGAe/U>gҤJvGI ٓkOF{
CӜZZx#6 {7;~||v(U%xvP">_=8 ԞkϤ[w
Z\%~Wu"{h)tZYt уN>=T^_z'ŕ3Uc^Lsm88^]Nyu;H-t:O<wEOm(PFTY1oPP}7YeXc~n
$8^bo@_;X76bZ,.D	'b8g{N]cQU}ނOӃ-
A@J&REG]LV_n\Y>	tU. 臥^
lA#NsDg~j39lqaeĩQ<QhZ5y2
\]Y	>	Gu*Njo*զ+~i9KF?e4#<݉(L2{/}0ޏACDe0 p}7)o$;I>FD4br;kSDgD|޴9"!l\<8Ü?Wxu߆j!N)f&yr8,^pGHHanDsr81ȷwgاP{9,oR| >w<kş'_Mk'LEesKekw24I\Wt"Wt%1;r2@٠~KgU1eڕLEmIf$Z{&߽M/T	j՞S\8ng\,9iUv.}yv}O8]ye,
7}Roa]J4Uiro0O"{t]7'3SJ#sR>ǲ3SSW4t)ݔ҉2.R~.iҔx:DzѾ}iizlƉvK`&Oj74E?F=``({R0r9r82!{<a'Ҙ  CR<&aUṪg,7ubeD_;1n"SMŃ.]W8P&H	SBg	e~Alk;/	e_ʾ[o(ؔ8JrQO t(}^'TF",!t/W$fq~~&b?LmShq}0v'o]i#<))g[w^M~V
δD6nnpd"Nqd#;BTh:INO! PK
     A I    "   org/mozilla/javascript/Icode.classu|SEC)eiP\\$Z(Xi%{ EE{{^m
|>ywOzGJhO%Vi
="Z[B뤸^~<XBjLKĂ ÂȤggl}<Ֆ,߰.kaOw;E#J۠r-ٞ2,[5bRG?
SM'fH2 40):u0#<5<
D"fG̠fOZ"R#
b`̛h2|y{R	w
Xz;9"&D zj+0mۍe2Gxuᠨͩ!TKL˫TtVX-ϧztwbuB%AUfǺmy1XXL
PP51oq9"RPC-;][lɕF}|_zN~FB]ReTx2|A:!l+vR.H}DraBpҢ-p`s⓺<ӲUKJ@Áu%uf򱂘cv"aW#Ws<*٨0"}YhsWCz蠨r	=h;3etKAuN#
`km!=T}1l5;BnUemeQMO-Re娣Z+ {O
YoPQ X};NZ^1eiIy(;=9۠mLksUKf^2W͈g7&geT:p?6&{8ނnCFX#m٬*O7Wdt4CxHx*9AH/w@6֦DMR9*2
nbʴnKi-1hxgV*h涖D:+4%fet	m(Xv{xjRҽҺ:8#є"ɠvc%r\5Y_4y)cSREeb<<-W+[1
ޚ6mox8x{;wdxg##xWnGރe7xc?x>ɸ`5`CeGG;`c\x
Tp8Fpi͌gg2N[ƳG3nf1nxx.yc>	>)S>3>9s>_%K_+/`|0|70㉛-xx
T5Yk@x;iqK>\I
5x^/K)2^Kt>ëo݅7U[c@ ٨|y"[y
JEX%ji6,^e
(
5ypWY.ڄgygL{_tc
1lW }WPK
     A    R  +   org/mozilla/javascript/IdFunctionCall.class;o>NvvvFԊdĜFm>EU99YeE%)ny%yIY%ָ:畤VSI9($C-"8(9-3'AX@T	Ƴ120201 ##3
$ PK
     A v}	    -   org/mozilla/javascript/IdFunctionObject.classWw!6,y		[lc(6{h2Ʋ@,]BӴ+mC[hc	IЦkڦA{ƒ,ˠs9AoyO~ >{g|a
˳<zC9<o_
}
oי/߬^r[
^W<he.swnP	)o^u?cnn\/Y_<D^Uu#O7sBTR~-ӝ{pţ-X=6b=DB9Բ#1{ѭT$ `7w$Tg1=b'wR7p7O4:3eF.b
:rX@>u4F[8ܱ_JGI܁xJ%GtcXIHir~җK9
t]h8>g"wi##s@ {tLx6!`)Zg6sy
l
^4x?SpiaΛfL:(\1ݔRjLj4Z5W+thi3m{r9GF҄3iJHR̞)4YLԀBRg՜4qpHW-2.໛N
q!-*yU$"za/06?EH:sG6&⩨"	eGZgp≨np;˚#ij괣T+:"TCimzbPr)*ͥxR23BG9-Q6CˌOS-eF@vnP:gD2R͕t3( J	'zLK\"Wؠ!K7T_ůqT8alR&nػk:TQVDU<8~ߩ=RWnQ'T.ʲPĻgI0y*Lqw(Q43~REhFӆovԒ*3WNqP=Qwoopx/x}e8Pq Sſ^L Vײzi0iNGZG,M͠*Z,X6N&s)}Tu$2\TIי#zmB*m*kYem{M󵦾fM>GBl?Ss6N7
ya|AWLU9[;$5	7d-SUt)2ǄZ6[QНNLҲhZJ߁ޔZg@*
Txҿ5
PІ?CΆu8!E>io'"juiBW齓W!/l~3#9	g`$\f$+tԎ.&UpڂyX&ЌU&JhlG*$$ԴKv`'M	֩`@.Xݖ!֠7WnvuCdH̩+
ud;	_D^B|u?_WH-[4hV/b%M]mLU0Da@%}oY|py̸
CyxJvX!Pte&(v,
I~66bAR6"kpނ⸈>KE
\[Jl)%K	)\6C8lIꁐNF,VBd#Hfץ
uUQyec}D
sqtzb I,V_4$ahKu5-z䧇i$t-hȣ.7z:N9fZwb`0on
^H$m]I@rhSZ`1K@q.Ty4р1+Y:F]RǑ o$	<uNqx9CװfBQ&K++mE
$LAG\
R
O"+a_hv.o{tK»6N`	SoazgW:mO5t籼y<VjvL]}N_~ɣ~r(Xn
Mg!3ג$ȉdAQt"K;9<=
	r\Q爣W:8K9Ҡ0NR~\`S(a瀠x.RU+]3U*]tfW%UOżbnE^\Btɿgʀ- Xb{)<a٭R-.NF!vhG˫讬,qn<,	Or܈\A]@P	t2xP
JRGiv/e$B܃4QBRgqֱ93PK
     A ?=g    0   org/mozilla/javascript/IdFunctionObjectES6.classTrG=,llY	DB"d(B41G3leUV,HN%bS)Ne5޾v/p<49\Wi\IjkeuCj
)Ҹ)Pckv?p|﮹$ n5|/-/\܁3.5;\놏h	A-Mdz[ݐ{
7\v<'"~[;k6'V;a,vH(
uMUs-[[]߰aj}b-X]_\H4Q7^'76)Hș9@Hn.yDRO(p1C "O?xp$1[\ɠ#PRcmC_`|	Vhkmֵ7aЃC'X9a@m{ّ!Lp
5LcFC3x7X5nq$dXQ85k%
c
nXno)}SKMSN)zݕ%|WCLb(@t'01'icOG"^Tk{}Z?nQNL$S;FĤo(ufYӉ$r0 J<K,J̖1ŕVƢ4*"E/pm0OfWs$A6xӊ̔4rOW=t2tUN(|:#|El<OIG}èo
yo~E/6;О:OLC#2},+AP!()6F
㔼fYQ";FٖzF3P</YRQbz*
R%$O"p1z/KkPK
     A 5  4  ?   org/mozilla/javascript/IdScriptableObject$PrototypeValues.classY|T̽s'&	8$3P$H	Ģ݅IrI&3qH肸nm֮mRdҊVjXkw>v[[[c՟w'I '~{9ȳ?v
5xyq511/\sqy 
 >)§L<9,FeMD|Q,փ<(ʙc&bŇ<FeIQQ/,<&ϛSEⴉ'/IyOxڋsxƋ/Yd9
%I;	GD2mn[A[xM<Lcp4mug{PұnkWE4N֮
-2Q١=oD]do"2jhRpOԾgݛZn%W$a
3ois
p!uF8JDzҩmtQ^9M"([CM~eZӱ/9«"f

տem55>[=;Ӄ=vblP%a:ߙI=5᝾
x*8cbvbM4LWcY+R2.M|YNu8pU״ѹb:DrE'W]!erA"XxPYy):|#l:{.+xmK{|:vڌorF]xjayĻ4%ġٻM2L	;7$pݷ&7$topqb4QFeNPfVEv[tp%eC6ަKH$8Wd/CuH0Dώ)Q_"w|Bu-Ӵpㄢ89yڨnSb%:,joy\!Jᝉ0KQ2q$ڱ.ƛյ1.7K®x:kF\o
B'8н-іDzЎ$,\5֢[*z,|
w ,|	
mhf:_}U=vdPdWu[$5P5B;:,c@HZ&!-&e߷̖މ-|03^N+rDP">d'Rw[SSt$gĂz!{e[_uMUS9r~(GcGpHQ(X)^bj-/,KL;Y?Bxl"~{8't6+oLeV׋D_>P4RB#.D8eFcBMm+4T얾P덛;@"dDr'cV&Jŝ/ʪvVQls,rkmOz;7oni߼9%طP<ҘocTLߔ)
f^y_xhȎQJh:.dVLRSqkJ)>nP
/'oqT,d4Ɣ˹^/'v$'K.KQtҌެx{[kza.]zXMV$)Z:Tͤd.Yn# xa	ilȧպj2'S B5ai0i-bcew5
^J&U^9-˂Ƭک,l?my[f廄;q#%mÜ_xյ'PPwEõ}uaV!u]|΅eqe6,OX\rJjFqnoĻMlůqKFQGr[MTXΆ=%x9z!'l
zO~n7c(,,O{Z}
Bg`@̗Bm	X1֯}j˃!~%@1O^I ѩf#BXz鼝t_KaJmT'Cs/DbaQ=
L0͢+|
6l>ؔfex6wl" LSރwc;#Q>Eo³?~<UF
S hrl2d0fw}
w&l<9̗qK`\{38	Q5(<5YJMvRo&೏oc&]QcI#ICLwIiFxmX,,xQ2){Iyg3gJ_LQu\¿DU8q%kHVBl.8dMϬ-e'PqZer|8zY{xv,jWaAB>ư8sxgNb.;Y#cYQn0
B!fJcNO_}9tW͛|[U`-khT:5ٔLoMJU:U]yDI.%&S'7*Mz@W3$ L}h*R=D$^|q	'sҳ.H]&,QTSs͔; qgPȺR	w?L*evah	RCd94TiF)7<^7aC#)BJ2)|}0?Ʋa9gwAp+0GVmҷ0MFP<@0~uУE]:Eہ!&G1'>axV$1	2I(1VfYnYM
\ɼ k04`AJګ`o3e	5,@ &Ft& >b,+{؏;2nZMHN
sĲquHFz+`t5tItVI;+o$E;;7v)4G_i2<ǚe6_a#U:ku
BMrɷӬ^r0(?MXI(=Gi=X$Z$p;'I+dD'ǫM뾓A%eOB+po<^qwwzГ];lQRs?"0'gUYŪ9`̑(axK~qA=֤V
--!Mf-`[n"m2ͣ_x#'tk ߸]V;iq FXixB`Eo	+vY
"X蔘7ɺrL-iʂ	R݃y|_?&4/dB 59c<;_%۵_1~͐
E| NQAMØV3Oi䟴<x^+/iEʗwʛII oZ8:ܦXCʿnrX?gȜlD*"U'˵N-[teI,D(dX(0`.`čx֫0ܞJ)/YL}d.tCGm8fJ_<+r`Jޚ+ewQLsc]U-Q){.oA+UWd/h%(PD65?XA*-ZZJܠC6VE_{Ÿ][iKH9GMVDP4H;N^U/VdQVD+1:PK
     A -j  D  /   org/mozilla/javascript/IdScriptableObject.classZ	|Tչ̝LnpH"ɂ(@؆% A!&3qfV7m^lWjŊI*ZqY}ݴնUܛ;dgι||yG0L\Ljl8y2d>R*yV-Y4MzgHo8Kg4ÇKl̥spΕ\2{Lf<'˻pIX%Bcp4eB^GhAp5ևK·4KEb6xb_"|\et\҄$;5IYkfA-nl3^E+wh-̏[CQ^JɠK[e?mtvӠ˫
wF|BOJ)/痢4F!9iԬϋ_02Adei⣯ipOfMՉx*Yn$	f($[ɤG$#hu]$ch!>K±Z~!s*lKpxeZ[|g5<p)mOM57NxSkdզ+"M}MEc\^1uUo.+HCGۦHb,'71afCWjK9>cbʔ1Eu'H0rpGkjiW5ZñiD42{/nS{&$"LF #|ϪjJU)9yġoFl(T*z"hfA5N0hlsu1nre>EMn_A71">|cKX"i.hf?
fiFR,'hM	eg'l'ŢボϪԑdvIyFg!]G6u$Xɾpl3bÆg=T[;aTwQYnwG0xlQ-X}b^6LDXMPTeQYNg:?<
)tWBps4rH<kP_͟7}&;2&L]ʮecz<=EGBVBj^kJqHسB	S;# =HO.kT	a5c:4Ne|V:'$#w\Mxs(fC3=R?V0NEztUS($Ϡ=l.Y'FR[e3SIO[X89IqDi=MN&#ˬkО!|zD/j%Z؋mS+GGH!0s'k^;$if:/HV@̦EbɎDd.7f9'ʸB6gnj
>]ĽufNF\v칒7F[b@h[[ǹɢ6|x:Xd[!5L1m33s.zVmPT'dHDwL;9ʰđ,9lb
li)E
0{-XD\d;xVZ)
!sS KDֈpY4nq*,FmVT}B Mv-#Sgq}7ZՑS`xxG)8*&=]#M|_+&o8oM&L&}7xM|3x)-BwǥIM6dKM[9yGMO1Jn3
~Ҥ[xϤMzBϪWjzboͶhjKMS<9ҡd ^bY_M<Dq#<$̫?ďLtZMGqĤ鐉gA =ĕIPkk%:?~,I%~>~ӹNEBlkXuQ"!1q	5G-kX<Uh1\9(30uEݜc/ʤGۤG=ftԤLz{5cAOS&}_=դ¬|01;&=#cҳ409jx-)MzI/ܣx[{8Uq &M:.bb&"~hҏ{
ol!~Lsƙ:F~BSzͤ4ҤLܤ_/MaA^
iIoe:2P>0kI&>޷7&~gM3'8	DƪFAY%f$C=+VeNY!ZExsƔUk/_ꂆUlU+\xF-NDĄpm(S\CVH*0ÓT+IϚ5.{A=5jNigABB1	n"2oF)R]1OTx(A78l׀t"MmaEn!TyS݄WnrnbÆldʴTp"o!Oo{PͬH⪹W堔y´"7|1iC%q+cm1ɶ2豼+g+YdѺ<M*Wk>#Y&NF$fMjUkWlYjI=nsO%)J6qm}Edk3GJkˈbb6uU#<'{qr4sBH0{ݏqYffK'zY9#?øÐ32~UMoj$DfM3J4(6Y(N3!2-
=s[!غ1z.rzN!2EڸDS*V'YI}gj6fZ8I/6^N3,/NXZ#rMFlH늱l3`C*k<ǡa,>OrS >Ϳ\~r~ƥ-_4%u@_#i:iMu2؋C`+4:[($U\{p#vdgl"\pu"9ښA?_MY	!T7=kZ˄XRw_Izj^fMr`%Nf`e'<sK"X:b3]~k/ܮ]3"'www4J䇗b/dwu":<Od1|#h)PZqө*,XB|ZYxx܂[q(~ i/rs`
ny:#<zLP3pzcq1q	q)v9ñp41Gw*M<{WC5}ՇX2$S p{1ZG'!ZqvUKaI:PN[m8vvb!}!q\Bp)g,P428lttd
6tarQaO`{N`U(h
4gϛ34_dh\\|*Cs=CsCs#C)@ӣ/ͽ8hCdOٓ%˫w`'F"c+1%vWd	=՝s fUeU#8ͅ,VSnZtQU۾ӂt!-LQMaݎYtѝlwapރt/.}t?>Á ø:k߲WV {P)d݈~G'K^"Tx?<'|F#W}x]\ +,~O
~AU7*gIىǾ/2G0&T.Πlzu$),c
=?
<DEtKK
F}Tmz`Q}¾۸<&.SJEu%R	#QZ
p\8]u\Z_ˎ@a
]l|6e=*/QiE3Wvb<ۅ	ipp z]~s_8f_V߲=+;e _XEbw$	!<CsFcXy1)[=)85(x>`6HW`N`0|S'])y%i0K3+g)0,@@YAJ4xMTMY35u4kyXcV
jp6qmL6u@a.vv[W=/g!<lDf8Z@r6
9dfZ1<Z	|Z)
1R+ixc&i&+g09^3f5N0%JXL+@%PT 5,,tL,`)sЉ.[aK1IKU:R9>VגNTZ;ηJ05ev͆Kc _"<L)Z=*E-,m	jKT!*mE⹸GrA`#j'h#J|V҄!IbYGqBCs1\~llUpj`djL5{qIotx%|@c*=Y9o&H`Qx(mqɻU>{#'n8<(+j=`ՏwcZ]y!}:%PCk#Xv!ia`%1.l2kld-6aքZ:(֮xuZ7hE
wjI|[K[SVvp9J_}\x.WE=#aL61I<|{nQ/X#~?''	xW\+|O9q:rN `'Y&?Lǈ|Dpyx3L2*@[mkdh6c&NY#OEMz1/8Nr&jYY6`/4Ic 4,6yyg/.y=LH2vMmF_j
A.\vO=Djҳ!\ަݾߨ)<f9vb{Z)-b6{qӉ9ݘ޹P\v=z7GgpQpQpQ,EnC~\/q+sMrIW׸RוgvlIoꫂwiVub^X ׋KZGXTg1Y"Ҁ+ł<rqkJ1~˫^<u'1+`TGS_1m,e>OoW,xomyw/JF-Tayw(y~lzxv.,[\E=Wˏ#պʙ3Sx.8hk-jocN~<Hِ0	osv/J
ᐁrlپv.j
ZPC	:l'zJO|zTWzL˿UnӢ(|tJFZsF_8;z3f8ߜJtoUoUoU[=Q%νD<a1xNrjp`8Z0a]v)ۆVIڒ<{ǒ)ӿ8]:!u#u#u#uH]H]jK]H=9N{)ٗVdAkJn<n<j?^(\[)'N OyuBaRwal3uDuw2X\Qkm]*{.REfsUzkg{VlaeЅu<0b^8DO̱,FgqH8i?N+C9vz~Y M&۸+-*0iʨX1VaTF\ZbyiSl+4\cT~ǨbeۨVVŬwP
/k5wo\/a~u^,2f0AF
}[Y-|z9a8mu+YЛ+qTM=@#+/"d%w5_Z/}^uWO\p{H<s;e%]w.6f<)O
x$@Be(З\_fq<ѩ{	=.qNTO!'3O9BOOp9ȅK|OL>{شjM`-G
O=R:h_ʽ2c$XYJDwZ)st#Z
{?ǵk/׃9R5n/9r-7N	s̕3s?vy~WU`St6 veg\>ȌٔU[ub*ϕ{!l}\]]hK1a_~	[_
rLØo\	Kf47UoAJ߂k(>z
{Waz<o3vw5}'?w/wH*?ESOS/9i~o%Jr4Ha将r}1([TIJ㹄P-{qoa?֊{.hX74UѽdzwYɔuJW!JC=cO*ZOMii$q&.@6nOlik>@XB?ĵC^WُBtHI?B]_cm	_߂3XTv,^*ۯP10Fűbct.Be߄RYeW!	ֺF83J[nnl?8wc#SGMtVPZec)e? N$!TQwaލ#X?
4a8ĳI
Y(15:բ7JYCZ9'0T`,
Bqq{c|_\
'c3^dGC2X)m%[NF4,t__go}T"~mG62%7X%rڹ
F)r|,#rEc4*yr|=Bk4-R6}]{ZE9R%+΂`vd۷3XȄ/K~%2CTJPkB0 PK
     A ɭ:    2   org/mozilla/javascript/ImplementationVersion.classVSg-Ie*Z4ZiVTTZ.anlZ{ګ3t/0-NKi7})}	)W|s~s??>|V?Q'_ *Tq8<.'d<"d<ψAW0 b1cb>RR`+p -'U'R=8-fL\>cn
n1Ӳfb]e=xFOBuy)ΰ!۴ljp!v64
n
)3ֵ2ji:lpӦCXMo:I#]eJ/rkWִ
!.=G-%):nGGl@</tle=#CP珝z4j)]K²6n&oTH3b$A|=;ӓz:/d8r1`8qNҞf;Y7i5%*ihBDؠ!V	OxVsxv%:zv&xAËxIB994.	kx1KO7&#(oԴ:2f4wY(#=s^
"XsxT!E%'EP}c0M>80:DB5|K,~[OgF^Yl1#IR͒%37ʿUU]!ݖ!h@~
ݼ0B3J%}F&_Թ14߲TꙄg刄mfT!VVacQ[,u%-	ݴFnevBȠneY
n}
8EW,>8?%)<Ѱi퉪k-=itXlTmKߡ+#ogFb1al:1<7Z[zѕ8Pf]#g񓿆-JciQCqWGaIBqGKɅ*'rz
凣X9TKCB9T]Bz
Շ+k'QrhEdٵsW54P}!˕krXV%,;D1쿆Q/e9,HC-
8W"uAq{Ƨ}-h~!(_K~l_.|&G~߄)rW'b9qj_Kt5nc`vw2Lj,S8F܃B[1{quVhumR5R=SRiG,*PE|cb
m6!@qǛ;5SC vP%X-3wrR
<EeyhvabƳ(#K|9_Fe<"r7M
8WOX"-%vя)Ho	։$}ib1ГPK
     A 㧙  #  -   org/mozilla/javascript/ImporterTopLevel.classX|SyJWF<ؒe^CLBq$Xl @2"#%G)$M.I35M>vM !vkMvvivm{$ϹWWA{ι||wuN,6AӲ9Q毼xƋguS)N9y/*gʍdkr_yr:Ƈj-jm)tG3=EߗϿ?xr'/ycl~"zY͇?}wB6,pދWO>܈HK*^ټ.ryًK:Șx,Lg*Fte*ƒMĐN'HǺ
w*PvWlOlA"_ٳ.(mCT#.KXotve""̮r۷ٽe]v-ەMǓ<ȦzSDnOƳ\
{e(_Oѡ3IR^ 4M'Lo:>]Q*SFjpLP
-&YsovTw쫭wUi[8Oƌ%>oZFcԿq"JD#6	4W=o]!Y*3ģ
tNg@T%b>KD_4V%{M?]g1]p(HhIw Md\DV MtG<i332}n3]Adңl|>J{t3aI{jە
Hs~~<l@6	I۝
7O>QzYFM+>uu1:%XFxv%xRkU`e]lJfx&NڒT6&R1+k
NHX-"L<hL	
8ݖ^
Y͑tkpw?:s@eE*ivHL*tG%D*qcTvߠ!Y_2t93Lz]>"4[P\Q+x;Q|G<wcdM	2uҽ,9kfS6;-ҟHH>*XBn]x(S̚NRLfb30==(A}gRwBo!D9C@96on<o

1ETNnxJT̺J0_L5I|J`~a7gG8=$g,noTqCLCL˖u$yiiYb61#bŵh0D#,!C40Ӷ
 >3,ɣI$X-?$$!0$/"Kx.ÆN'SGO'-A&k$.E`KtyUн3z5[n:et{]C 0cOa|ρc5'2;7FT*/;VPWP_&+u;+NTBSӦt]ө-d0&Ihgj19weUe2޸,ԧ0FCKϦTđN(盭,#Ҽʶ;r;s)_ژc	ю/^.匷m_:eC<"LUd=KdQ:'vBƧM
խ]>sT)J}/Nd#Dcořq;.r
e1'6G4U|fvg0 ȕGNh˹[|PDT)nŠޚoSCm @'#Xƌ98fƷc3+c8Z 3	BQKŸa-@=.n7.`5vbZ2[T'0X$+/LZ

7Rx:Z-^?M-b'ն/C; o{Ja1Ki\d؍b$0`ˌQ)'o7H7Wy%*JIZP$R)^3ȳ]A1 Omj_]<2Zw zxU#(=5I2YU\H:giWh\ɹB#eRQ#5,mLہP(j)?'k\OC{G:}C=p]+YG˝R:iJ4r['GyVۉ]tD5<,o{9<׹^6
rѦV"/Ce&U-n<϶?]Z(>V_jO%X(9h}Ł0*A]>k(c|+<45TFWe~D'țɶUdZNF7е;ػ	}|~k;U6bKp?)*[߁s
l8ubF] JC?!ExJ
q	KؾirO~tx|.	nY\4)LhA)̈GfU	h'aŤyp
U q]ZQZcw"|asqW#=%Z+uЌU:>zA]G1.viۡ0k(?κZvE\Gڲud?VidS2=5Wך}&X4f@y8>P?F9W>9WEcgqS#7G¡\`f^UIQԩ	hA'~F5	9=XNQ2M;g}:}NS8{c_p!qtML(:8ı⺹.DL¡09k-9{ahGѐ
ˇ_@Hv: 
m)Bei$ٓ<|=
TU7N⤊PQ*ǸTQ<nqEH>nv$`6C	 MQb6+8_i:sD%IM'b&.Q>XNuiq|J2,|<IoPyobH+L
˜Ad>͐j!N.֫`4MV#Oc{!&.f:FkKp8sAf$)kZ	L`8Z4/"C{4E}FE3y;/s!=IM[e,so*kk?.
*Y0_WØ->Y~7n=Q,;<jfyZ5?/Ɵ0L29I_2Bo;|=Xͤ#jFgn3șkvh}n
T
w*:%З*,N9
r
{9Lh=
cR0+Fq+/:,{l$eWkŋ,/a

wB6KA8QU*R==j{LuTF
rQ<e1hׂ5vb?Amk|S%Ae?':*8I5Jm!,
n2bNE-2R:Oox&<^~G|e 1f
cf5krX\hYYBu|f.wyظ|YȊi#'jqLge5I{*Zwz4aEU~+K7ee%34M{k>+suHO#lGPK
     A Xv1    -   org/mozilla/javascript/InterfaceAdapter.classY	xTloB/"B 
XH1yI&3,lVZRjU,b+V#TжTv׶mjMBdD}=ܳw0SLR1(Vש7_ܬة]ݢK*L*n.y||Y>v{wH]^)iHiw5|ϻUzqS
/bvb\~I@< ap؇)xċGߖ|G~ׇ#|̋><IO)i>Xj,ݶ}q-Fu؈T/ݰ&k<i$MHh-#Ւ4bh$inK`
DM6Felm*2쪍6q߂š$ն,Rh4!hfsª5Tlȵѕ6"d(1$W͔JՋDk)5-j2T8ًT
zfO
56q9Q҅s&MZٱd4袉4Q[J"PɈ%edUś9&Ll2+`2N=)1Pf.EJ9ט4%POYx
~bSs_(XW118A*bd(Q'/kHS*3sjSrb%2bz=Q!
R'D=Iizimq$xBT/I	Ҷ-·kgU
jLe$
ucbM#⢓#O[BJ(˶몸;J:@$^ޭ<664evdN!}\1ͺҾ;]rh%~%08w}8lyTI.4c26
wx^BlNGI` ixtkhE@/E
K^voKLDm顮R4dy9#&
+
^o!
?L+ss'4܃YT>ڹxI[L>mCGDkgDx@1y/r4NZ<hUi%ܚI1N4#SSk5&|BՄ_hD>4Q 
yr8Di^N
5eԺkMiDXt(*IkH"%0fȞ}fv?LʩVĬ1PHoW6=SdHe{̊hLMpƑѐⴺעzgXL}.fv[Ey-%cC׉~tyŀgzv*)ԉFc[	йvٞPb!Mf,
x<r#cbB

^b{zrOgjevp^0?jjx$FDl֎EMḒ,IC{qB:ci2M Q0C
W1.1oDoW^/cX_Bݐvm.u
]"F2y)v#Y%|0^~ЁLB9$͐1~1cd1炈:dߒ+-=gE-J$r0g#*#oiYrՈ}/z]?*Z
Q5׊6&VDLK{ygY7*V.	>ss K
!]g+oү@$"FibJ\b߶[w/}^j;<r/F7y>17/kOǴ<N(3Tj6FY!'ho90oEUPJTJ9Ót xՖW<bNscpkɴN.5#PxzxKj@9?kӕfRԿ]-fNݫu to
]w`K4{qW8ONŵ.,TmǩQr"(^~%(=\4A(u1,উCS7X5#a.(`J0#IP:RT!jl'q2.\Sqw4P`e 08by򮻀ZE8zǸFٕ<x?i0ur(G>ʞMz28`	!GKH@pbΆVr4Ix+pܴ%*&ʹdG*{{^5T_p)u
S^'
6(*hyU
̷<S)
d{8BZ
!SqP3KFu`t;FZ1ָx'ν׉{"<VђXgy]%[^eCB`bbB%Si*3njgUcwʷ؀aZ;yaυ5rX׺gpB"Z(|Ot9`YgX ńwo\Lj!GvzfιtőL˻5J՘Z#=h`J+-(}(PwҮRډ*I8-1N>;QOW)EE'`(=>,򓹉1oFuY>sh+Uwa)͐r) 3Y|JrYNEf5^#=nM81[ǔ>復O=tUZwG. v [m̺1(1b~]Dtpi/a]
ο!;#N\B\Ǖp3nm1G$܊82vu܎[:2O-uB].?gG3vpZJj Oq
u!ݕr>k}!GaHbF(BSt
qdP
ק:WSg!W./.t>ת\Gڊ5H&ћ,,TYX[뀷zLvȌ
>'HGy{3߄]Tw:&]t!Wإ؁̷&tI9tItW[;|^vB1bK@H;::PK
     A ǿ	    0   org/mozilla/javascript/InterpretedFunction.classWwTW<rM!@R<VH#	ztZ[VZUJ[6ZZ!P_T뫺?>ΣKr~8{ηg3U ob8< ʜosX8IY<%/EY>]gxK2{>/+"0_d7DE)omN0!w+t7/ ^Y
l+1kPI3gFS_?uLiGBfв#wDfQid`,i%~JPk[T"<Id"Z	
o&Du?>jFb!*]Q3uLR'${5<P2aZiC5=d%lY&]Ƶ*t2fFin䑈B[R`~':;		kX\Jd;H&I3xl91wtPǤ%%KiP<Q6f&XRY
j0	LZJWÑ۷jg
;횢y⧢"wǘ1KK EWpc_noϤL/QWҚd"#?LrDWyD'wNM~-w}A^VCyN,oK+4=<"D.W֡T8,h"	
ZF.$]Y_ԨՊY	3gY~NX7xu%ǃLKA҂X{iJ̰+"*~zL}9X};;vW/d2X [Ͳ2(,9bڹ)AD8鋩Mkp%"-aGŏ
*u?Sw?kЃla3)fcɁ5&@fx]C['^(m MB/
\5ħ4,۰8[8hWbᯱ݀2[YN`m?⨁?VV
E``/k]
ˋ1t>3#?5,qZ=Nި6`fW}a.5
mY\ͬ^Jsɿh)Fepo{`xmNFA'2nmD\iuTc7kOD,{c}.%)gɣP<Zqe~i{;H7:41^ix󶮪_
kt,yrJKămifNr)]YDb\dnKV9Wndm-'ۆ(0h
sн(94t4z4`-B2c@Hʌy56Jfwwpd{ԓc-{Q~U.AkkC51
:$j;
\~M[ok]Dy["*^'QjBg8kR,X.,2X^:jlc\L$Bef!f7)=&oy>ru7Srs;>:tlѱ|.>#fเ@c7}!r1
L2s"[1oAЌA45{ۉPK+<~	.eJkBHeP`.c\^MI,b[{OU5-W+kD1}W (BG&Gdk/j$.@oIB|_:S緩Mgٓ|u\<57pG:<5L}sknA;:iB3΋nX{yX'b'bGp
S	eR6yrL_s֓PhRD4ڧqWgl3	x5~C53["$4c@uV3dLqMYKfޚ! GQkkǀY}yˉ׬x(f&]rAcs](
hE?_y<GٟQ]U_M+^G,ʌ+3P*e+}jvD=rp*oS,XF?[4b_hʝed3s9؍9aqhf.
p|/ UdX2q*;߳/~n=PuBg/ռ`u>b bDfi,=V5Nc[X>y+&0]i;G|ﾬ[g^bsyglgs:f]rU,5kDS	2 PK
     A ky  )  2   org/mozilla/javascript/Interpreter$CallFrame.classY|ՕyKf@ GCL&(Q @!TI̄IxJjm*twRJB|c[Wmkݶvwk_hUj!&s=_^xg/{XڼoN_.+xUGNy]km~͏B|?)O
3\_~
Sؿ[B!w:CGutGm޲RxG)DX∄'	H$E%R@UHȒ%%!!AR!}[HQJct;ǄP/(,bɩ!Εqu%3ɒL
i!9[J
TQ,)ׅ#
;גeL"\dtjem@
S\,[K;򑮶XIebU Lzc6r2l
ΩKgU$XuX)hU֦rN-㰝ҷ} ԬTDjy͙'j]M-4
ӎ/jO5()X.&(K-i`̚:ūLR*5^4:Ҭ2J[CƤĂX!ݞifBtS,Вh&Nk[nsXn<4[d<5ŤֶWeYg숩,K
 <V%%*7֘Ty'۞$]5
5mM3NL,"_H97S6Ma6u6sueZ2H%rs4Jl\'6'羥h8Y׷6:b4=`@-B5'H6hkil7)<KηK#TMg^f^ak_S][ݘ#Xlqmnn:4{'F1~ f3ϑ:\nOi6dbĀq:z@2ryܒ!ch k<çg (t-{,`JΆv#k*eԿ\a"-l(R&`/"dmi ONL3]Q"Ԕ|B>\77@-Bezq&֒u_tmx%ᓤ4'd<ݺCud1rPVi=N9W$B`Z&?G7!2X$S-LKf2[FK.e.Zllb#ٖK٠]EFN[FL~N܉ObFIN2$w̗T۲7ظ,RJ7k͖,FjmY/:`+r5ŲKqnR-,e\n4(xe\iU\-mY#=`J(:V6ZF
r-۲VbCo^`6,6:'au$.%ic*L'K)ɟhֱBrNkdǖ6[6HFڒBg4V
K-A\K\K:'dHKrJFb656/qEr-|r-l|Zn3r%WdçQ[bte[\ǰڙsЎslin^5+\%"a!:y.bU}2=X%rzfR<D&}lwb@N'R¥n.@xn10:h\r',dT%^uC5_L:s)ݧ^lNOJkjrT^2T8JuA=-7M:teK~oD!̬epM9nO݂Mgzc/K~YO焏V^=<5sLE^S}}oI`7ʲ#4'iC`^VTĄLo^>~WO>.lFNu^*4,c)
@Iִꌆr+1%Ԛ{CĆvp^t1w	u}秜v~NyɠUpI8y}SN]j:ѭV̧:~dZwe謚
4a_d\1xh$T[3
G=!%3PNi@gQsɾ'xϰ
oZ=&4C}voyS|7p0֖d$_!ʀsdeV+|-..,Y6&r-%'7`zq+V.d\E:3ii	O
io\EtJT.]m=|A8l~"TGzSYglk5d묵fɗyu6X*tS\/ڨ柷y_UlHٖϪvX29>&a&a5֠#]68f϶H~=ފh3dz//-ol4&C݂f~=n0ۼ?7{-voqonD$;z8 _'Ѳ)ڕE~A@:% 
~ NX;uAnZw"vr܉N:Q,0*8F18~D:qGal'0܉⯒w?ncخ<k`bU5h&Z$N4SijôA~J8q;>CH3#ߌ#-T-|>g.!lz݂ܽ0Ϭ
>;?{\Ұ0;z߉bsDEq uzUPf\}qէ݅3:1ݱ[vcYTG_B'ݤn
{P}c\I4:YݘO=}<<^XݘvʊXڳF#^K8=godOK.b=NKr	G#3qt[0tᜪ|UA &((RЅʝFHAQ<.5aXH2n5( A.(RP؅1	H
O;ѣW#yA,Eqr?+DÆVUv.=e<|Ƭ8Qӻq>!!b6lvq9<l4XBUCl}Ulҧndl݄91ߌgn9yeL]5a5.bM]L2ʾG:	5xD|xLx\&kRr:e6J5OHxFn6wr?c8"?^Wߒ_,o뫾|o*^El!!OcǋŘlF 0ic'3i^lu1c	(wD>W#/ptI8z;f(`F7hFr'aW#ٌ|jܳcA͙<
TQL?af2F&*9]oa,<F{@bka?e<
4xIf&|41./]o̺=>WĜט/>?wCA.;2/#0Mu*fyEOopELįP71nVߢ3R1eC_t3DLVUX7Y{ws(ʞ̝J7,nT9ѲX؅EỦd``Eq{`)$ث֍%LeO28P`@BCW:cU
;ͲEͯ(G-Ө
2@j(5Û
tNnwN3w
0ߘmfFp
fbKď	*	"&6Ŀ20zWs5́[ <܄^'z߆ oݶwY==0pCa߳	mﻩ-*sKs&MR~ j;dڹ-eӷ?{8@1hYdh?xL	}6|k_=`$G,E'a~0|Ӹv~:Z\A'g*3yr9T#<=k֕! \{'&#)f)Xa&1RcND<-[4b]ӏ1QiPOC/R-{~4UvD+Ebބ^XȀ\T1_QrٛI2g}5Sg:zϑ;P~Cx
mo7:8\Xv-s
%ܮWDpaݸj'/7uej)LM:x3u+B.yy8R,M\z[7l7Bo{оwpRw't't(Z[Y="wDs8}C U>=Ic)s]>y}p1y7-&Ho g~`4G3iF_5c
/,"SPK
     A 
Wo    9   org/mozilla/javascript/Interpreter$ContinuationJump.classToUݙwKZ.XE>Pք ޝ2;3G¿ dxT_|3>QϝDdrΙ{ιwя?8KHG1mxPFo(q271Ye4!HvC:	t_u Nv$η
[_a)0ek]IHWmlq_EȀ0r]l[;bUoya|YB_- C-iivrlz;ߴ0N+]VٺU-'bufwpAЪn
,ZGݦM[*<
f{)sEXѿioYfb1M']sz*I!03}0K0_^=3<H̒\ԁrO Rgrh0gJ(,bXy<xG>=3xrK[k=xnq52u=[vgh|t3ˊӒ7xB5w	F
Ux6?_sWaJԲIIWqW:Fя]l?$K3{7#7|sNW߃
!36m(=~zqF+m 5hU]uzX9Ĩo;[<x҈
KÔ˘oV(q!En6&qeC5҇D,TY`\\ )
q"th
!G1>[M}yaD^eKCm s<^\uLp\3q-9i`@@	0o܅^1w+ՎEikPK
     A ow  u  7   org/mozilla/javascript/Interpreter$GeneratorState.classQJ1=iةqQ8"LPSfW.ěQBɽ侼>=r	9L`Ɔ<X`(]b`CϣD05ڼlF0V./2#>OdhO*io+0!A!8M:M/y3J-!ṱ1Oc}a!
o7b;"[^e2BwB} 8ѡ8V%u2pbyXb|lվdX娣Y#3Z0EFe]#zG  2(!]8NEgegW0KX)Sqj戯PK
     A $Qk    (   org/mozilla/javascript/Interpreter.classw`T8>nf NF	: 	 BHIh
wbXPG	
{D9f	E??~{9s̙Sy65U׀#ON _!4zI!tYU) 7rK:f`HN,U:HκEJ1ݨv'_UI{RRRr(&ׇ,ץ@r!/ҡ{9p>Itt}!4ԐIUMAHJEhMC
(0qa<&:Tdi`{GK]$i**Sd	EN!'OĩL#h8(13
t9Rc#b"g!Js2J(6E(8W*8FJQU:^N*uϧlUڀR*h@DRTOBQE:^L@sq29KYF)JFe^Nq*JgQcIҹ58\x9pt*]hHI\r]J-]I_EWS\Cεp'r#V&L-J**qw*aGJwR]䬦U5Gi%g9)a9lT(z99BVr&r%?F%Wm!HOQ|FB<G]<`H/J/Q)*ÓkxHo/JoQ]%=>9P}Hq!9	9|I"kU~Uw|OH"g
B_Ui*0ki'"CT1
[1JrDr$rdr9
9*9"(.ِ]Xd&К%
L9R*
PNS!([9KêʙrUH ;Q, r:P]FNwrzӓ^dCN.9CN_rӟ$`r!'OAJ*v	}]p|9GQ:\/ȹ^J0*8DvGQCN*q<~'SE03y9bHCJGSӉ,3(Lq,M}ĥJ.dU[2
!g!}.WQAL8TRBLrKM>1rjɩ#,.RxFG"ҺXq]i]D 
#WFj
V՗Eϯ@^ZY9*V:sѺu_;zIJkbњUuXM,.,@ȣXRPT8dY%C'*_T"P +ZZYP i-ˌ,KP"uGNNN82$	ڜ4h4EZrHU\0c$%)(GuG
 5U yxu9;>Z)?'+)S1)J+Ƣv"yQzv	iUϯ)E
yڛhr` 0A6>0:`%k*]4e͵Tb:d]"^ڱMdYb#Dcȕmo1bwOI}+K*ŢUgJ+s|q5W @D
bXQN"Ue+/qGHXը28䲊z]y$$,AQbn7U=l1mR9"e|HFTuѲHY},ZxD("﯍ԍ\PZiUYZ!@6ݩbG	i/s]ȣd*2VHċc8eB8j˪k]ځvJEx^u[9Jq8s:5evbp/fg䢲H
7\)=f
	)RUU]UxT
󑦋qė8Ks"XHbJU8ryvSr-_sXԖfckJ垜<lxJ@~J,?6P*UkSUu(I ^Kp
P;dyѪD'm/J}gxvc܂hu}zbإM)[p9HB8l{8yWOU>I0q0klTz>o y3z&NUO,+9l5	8lTSMF[vJIKu$9X{ V,0.Qaqwd|VϝrTOV#lŀӨAfheZ8r22
h$D&'VĪ둾mYjm|{ܿr8HV>-&nu-{vޑUy)
hv	*xDeO9-BFT\W
fuԏ4*RO#PÎܽ`I |ZF_6M
PyBpf$r(,{su=!K4efk&PkFvmHyȏiY04VC!
8U:He4sI| :}]+
[3&Ώ$CX͊3ghrͅxh얋H
UBRBdC%pET*j*9`
rèY`e5Ce추Bcl|u5©պANR4s.QexnjQP]SP6mSYڢUMK_G̩D8k?Qr5FB+Td)6TXd.[d.͆XZ]_7 /ʉ\r:dpQL$<ѡ55vwf9Ye_PrHکlބHݼyQlpC>&u4SOoH9.
tK"!C='tUE:Rܽ;Ix*Kk놓%#=ÉSVZ_1y>|R̋U/O8#UBtAxd="k*Q.U7D5kOp[GnH k9Ӊ3'R?I7:rͿIhE7BNҺy}Hga%TYb_ZAF$=#5|h1tZ2[

?=Ey
f-Guqa%#5a8Grbyi6 ;pjFKËK8ڧ$4o^nf<	dge.u8$*ݡU<^+Uy*mSU9UzK;"
ʫbqƬFߧ0-hEW'zyp{uU1r%Ujyh]Q
LQ
i9|~V挈T&dNha]vk5˫SPU6"FbXh0cqM,JB 671IJF,Z[Y1E}
0]38zbY^8&cdE#ޭq9r)=Óc*zs?{TEC,#4TGDmE̻Ue1;64z&DEcKs+KI98P6^Oa#jU:x;[QƎ 3L{MIP{Q΋%֋8H*#O֖ճ5	pxn6&VYmIr{o3F	_ƛs"qVAq.ph17,I^T@3럘з[/F*it+]u{V
%{>A+Q=1G1'
n91A;.^7ς:l`c4U%YgDb[sqQj/@W3h8P49zk#Cfk94#eBTZOPԢ)QaUa%t7xg9e/A.eⶶXhF֖T8=W#hMҳZNkp
>psK̴AWs0F7phFbQ7
s+#o	ʫvgk3V"s&G+vhYa =	ybHUYd*WXnHQƬK:m^-0@kP~8 Jio,ù"QE؜?eP@;9egvI._R}6,>N5\@{pp)DLL,SEC)|ҔOeWrg]sP0:^4M\ۯL	*Ĕ#4Η/01s"|2
¿MR2S\^)_eWIB͔kLzdSQv$lʷMVAC}}AIݶQB/:'TdS^%߀=)F0ZS?
||))eʫM^r uYvզ|pEOdΔLQ%Lz+G%mMrQ&z{p})\On&l!gzaS~K~Ԕ7mO*?mϚk}ľo;zA{AISpsgC/Kb'S~P{U~͔_W
0OroĒo[ۦNm CIȔߕ3Ő)+gb&져rG<ޔ+VGHzRGm%G`
Х#>S|[P{>1gDLSᶶeXDLs)~$j{۴SLktV)G\wx)+g-)nE)Y$AM'|x)^D%7oE) hʿHmmw;MWS˿ɻ8hS]ÔaS\d"L&Øb2ixx)^M
dڶ7M3d.fM>&KaXd2Y}x],4Y4Y#dk,޶Ş =94A)~.~.&֍u7ŗ8OBb8ō&zn	=rXz>&?`
aqǰMv3śěMq9
xx)TvcLO`vɎ`&ɎdG[dCP
cM64(67ŵ1׋&=Ǝ7%mbElơaMDKgw[d(q2+6Y	blɎfM6y$ďaǚ8rf*+5VfrBqaRuBUª(?YYhke
ɪ)C/a_!hyh,j	&d󱣛*sEi%	adY4:jK/ms='UܖHL#Uho3>U3Lv"
z1C2o=9B-bYb&[J2rN!TrNt/-ggLvf\vgBv.f6r,~3ςXX<RViKQmRLvM8tUj2-d "ZLkLv-9ױɹFD{n6-VOmdQP+}*ky?4Mv+k[%%kŮw2jw<Kld1V5lY:
gV&[֙l=`F&!eM):zdִ
GgUW\ˢ)t
y<k!BJ6Wك&{a$%__ͪ˚srmf[8kxi9Yɫ8Xz~VC΍<'eu,#eKԦ{P\d[Q˳#<j4dm	=l >_mĔeNɞeϡ%)+^ڧOsVT=^ nD^$%r^&r^&[₣!Oe	8!ۂhmGvE"3 ',٫GRUdsW6
·{P#mqQVydX=Rc䵞VA'5=i=yZ|j?ZW;rk4nlb|XZ]pAg|j{3RM=,?jEn\d1WY1>F+IRYR*)Kj||(K )N4ڣcIeٶđ.FDO:SXluJvZ[#kʊ.;InfBRɯ2=b9QR6E;Fҽ#*?U43*e脜p+YlkY3wRzt'>}s2fkzmZG[JR¾e'rxWu+9VmVJ])re@êg+h#'ZeVWSZ\ux"r$uaZֺ
_s?EO'ʶ-ٌ-ߓ3Ҿߜ.denwZ=E#BߥlFeY r׿5O8qb+}О	1Ѻo|V&Qבd2J,TH	^^޶Yh_w[?AB`~,Ws ѿ^)!5hʰ#gMJG;UG`nc$J"+IkCxvwd~MbЅ3/ߖL>U!}υceQ=]<P՗VDFbmF
Jf*R8Ree:br|u*c)Y-&F8;*EVMdv'-o-)lT/@Jo4l1 x,Ds75e"C0SxkTUha98ވwNJDI/9o$}:Nkzh[{+8V뜖ि	!F'2ƪ8N
|NV5k4?J,2w4]}&b}ac'FDs[i&=%q7>+Iׁ ɾ7geu}$NQk!4*h7K:
XH7}mu4Q{j~cE	ǹ{v?sVL?}]_I>JO0$f9	۶۵KZ0}ZL8~di̼cJkw#રڣx_jg#e/^^pN<l&kmR7;>MО(ukhEbEΰKj~{[=/rfJf߮
mߨ+}ۺyc& 5t|H[%k~VO-HGnLUOFB @AuVJ-
oL9W	dM־z3-:[49Fu[ fJɑj_Mv_/@JxM-sҲy=vب*(E4Db^9& U$9\aT-`~S_S\a=g'Aj#u#"sK+ľ-+$۝ѿ*v|m%./ŏ(I/?ݳbk|A	vl42y:STy3#Ek9kA)~lDNDHu/RJyk`k=[dqRqic"خ9|Y>FV
f٪4.d:;U/o~,lMVv)XA
Y9ѺQӖaU<uNfGS@q.6ZQ)77m<Rq?f>VeUOd_km%-Sv7;#>QHŢX1'2}Oi7xߪY1ĆtXE<HZ,RS_D+Yqr+wVBAǷ5ǖ't6
,*)@/j=mԡ	AiWD};&9z^1{bz|#S-rbFZV:7N"'yDp_j,zfyySWm)z~;߼kaޡz-*lO;< *蒈}ڲ+LC͑Hy[<Nuk|Uq^Dm;@5rbB|[}C=Ì֑2DY)aJ>RW=|zQ;$~[xTq 'k>J6$f\g=d?+mXWY>- `yYI(?6ϯrGDvgYTS]GBsj#V4 z ҅B[Ѳ^>	''bxYR>
ç'I3`Bl7rr{f<2$ig_Fq
Oƈkev#95Tdi5 "0.$\O'|R@6=TST-={=%>3gM0 L,r6x 1*.ր_}H*jSBM<,b9z_Z5	k
t)v;HC3t8dҳT}7
+AM[[l17
Pim5	
h
p;F]0FPX
׀>\1éqCp3g+B*=I5]I:F;
9FH۽"ͼ҅{{y3^:o}4i=) 2쌁>mQv<{%$/ 7$@8 @$`lc,la[tjvJ=TYNDeʐ7%WKGBk!}B#<YcR"A5wp|nPfW_=u
;@i+=2|#E.A%LnAn"W:^5Ojy,)U銠,Bf`K@x	9eW#{:
CO'|	a1L>X+(
p#!`ً_8"taRG` t8Ч}A8fQ5a+8aɐ"v:Q)/A~jT1;t0vk')r?nZ-IT<O
Oşl9/mjj̙ģ$t'77
)g~EMo~VN[Zome6VV+[Fȸ-I#w,29C$I&)E%cX8^.JD8Y HyT)_<Z:R!ƈIcŨ4P/Dn?ZgyZxqahuMJxn'n>RB#w
QF蔧ӕ1(7	Sٍ[2;Onhz,g=tn`yFoh$pK'%@'i
tBoi*
C0F	E10Y:l28TY.o:L[ťGw%<Gp225Ext
*n>/4 re*
ڂ
(5uGR
w˄m`䮅Ontczl7׀K~z6@o'&O=T6PMD<D	CNޛrJ
%_7jdւ9	
M|ޛIjS: _m^4Y,XZ-"ו54}zPYX	Q}u:H Z^i.JW ,UB7i>HU0Påa &H`N㥥0_ZS=O:.΀+3,I:s`t.+QB&]/Hҥt%77MxנIhz';	m ֑SL|`rx ڊ0Jx?{xUçMY>T`&K j
턌 j<>r?hU^\ɒqQSQTDq7㥫p]
iktv
I&aD'L\k8d`]FMBߡbcCSm)h{QRJS	N]7@|9e@#gآn[`W=_ynӥ<#S˵&+<Wu<]fS:]!/>F{%e՗߱ܠAYt䛖
궈\oL"ے-f){-o/ַ,g=,N$lͣԠ'\ߜ1ZS^<ޤqf64U64p
w=ܗ"t+U!5`_ގ ݉.ǹQ0LIDi
KkiF8I0\z.ˤ-pnۥG.Q_zGm'=	KOw3 J	^:I/=W>ҫB5`ua&篛QGs3sdAnA\.~=0>@8;qD= %Np'STa
B-1!tUmA !U7G|/w387W+>T?6%.i]Dǁ~.AGIZd`895Q6鹛7B{pȹbiBPJP(Ѵ떖oX<Dt,#h@v[zn<M[n 7F0m1wq!s@Ezu>~`_d`1A<Sô%	[^gԗ`0
Wa;7NNnT`iJ4w!-B';Vu!ۙ{Nb
M#n-Iq0rmMl'u h㣎hlk6	Ͳ.)d쬀Y)|ɏUuA%.mPǪ$mtKGio.1ϴ/%tJ2ɏ"(27EP\(8-FO47.ȵ4ܣ7B܍!Y	FX
H_*}ʘOKHwHi'*ߐIvTwT@hS/p,YeT"(Ivs	/nL"\:P%a@L\p<
WNDd%\b`wt8}`K8h
>(nKz\:0e3pEr&ҪaӸZlr7!D9DnB"VNl6r5z81JhAhp-<Mp=$AS@S=`KN
Kddevhrv/4.R¤\lg0VIE)h*ݢ,':DR6`<i,9eF^4&(GN%oNvnoж CR䫎WݒCZOF8-f"ṫ3 v]P4Ȭ&&r74{@2^U΁C>p1r_'c)2y56N*z8mb	+XAIܗ&6@xƻ3HEɼ-U1*Ei.fjv$bqњg陖W2J̶PQ
$0{M<̴P
tR !VYBmd
<
y4c $,yt'@\I/OFs]؉2..KNqA8z$ czm8$2 EcH	-Xh=ĞhB0$|8'slM8[C
X在{&L6|:l&5Ʊ9Rc].r9,E0(+Z#Hb/vDOLԚ`I	FyoS/t9Z+抽TsU.!qG}mb=/|0Y4=|y
~	g`rm(=psMp<A]8/0B[|Wv0_nĉք`RBٹ9hѳFQ35
\4^81ߋn,߇n-'b{9|c~ڞiYY]Ԝk!^`:}Դ=+i/kC!Nos   w
 w@ay
23C0~~p`QW?(x~w=~Wx"㇜q DR N 5x`)ow)C\=E0ywB.a>PNS[m¶~lهiW(@;NkKA4Zݾ>anvݞ͈A:J4,NG/,;aT?J̇܋}/|Kvg5,&8߱y@HE`_')!Ry6-w+ɈkJwep<_oY-O9dZK-k,[4`q-N	ڀ`t敎l8p:Uu?kow[ք"coYMWg¨wk9s6ʳX`h Vc塦Mp6;mFYpNzJ,+?L8F z#o!{А&h`ar閗4yd7G\Hw\'<+h!q@lX
;&۷ޘ.]_ȻnyX"q	\L
^C.&Lrx&7<p<{%toANPlpjNFP
;s߸vU
;nryK2X@m;Nȡ
;fS5B1^'{$_@bBÎT<9].?bYRI()6l?9(-?(L?	`7=<a-sh.+q$U1+5Ճ\,/"xg#s\Xz.Vُg}na|:凭p
	Ԫpqï6
~`FWp[(ထ2;	?qy5My^ l/btRe%  "KRUXʝԎ۰^Բl[j57bގYW;)qT5p9=52l`#Yl+ >霝஻)1c~!=
-n}$Rدr+[wƟG|fܟ܌g3%I Ψ3One;1ZוZyG8θOm_I\Xa$KfڰIz@rPcWԠ{ h.9@msWk?3RzSqÏ/>L1a>aٖt-L2ѹ
w@O;d9@L-[t7b`h,đX7UuESPhkMC35HL>mqiR:
އ	
'p$?lGW MN%c
?|NIVw::P;[ؑ0%a7%б@{Q}OTߓTZx*Vul,6&6}iIFu< qОl4L@,f[8H#2al~=<3JdpuQܢ2>9`kT@oG7+Lae\s3g62{I":)G^*n7'0mC(n|$黧ZI3ݺIV\\}wNFk<ywmFV3;!_O
mo%JD7P|g71~K6ez>{oSLn_{1RQ(wfsRsûq8mŔD﯃c>!,pK8?C5
f2v0
ѸOr|{K۸%jFqƾm߇#VS؍	<ѻ+	Hkᛯ}7o'E|NO]gqD18PėTfII=M]&,>#J{^]	Y#lۃnlo`8XZ@Hn1+n3;w-R3DƃFqg~eD:8Gv2y`&^_u-ml/A,J.}4)
S^Ї6~3v:&w
[9k~G>M+ο櫣G^fЉAut:;c~'fN_i4n^6o
_לi՗/&va#IIcRǶ/WOFh˜ym.OpC&(Ix~9[3![-T;L#p?8j@_vnHj$4ok/~Ҁ|/=Z鋞7=[0*/*Iv_\ٜJ<ɩ$+
Yi2D4=4{Yi-ՓͷҒՓԜJ<ɩV&vlM0ks! `z8< HV%cp=A8.OftssڅEϗۆ0c-} Zr!x{_ˡ
9nT!laU7w,^7	
k奣|y<̰\k\o]Kis&Fr<@@|(0B3-^/Q_2TS̖{
/ӝv=V ""^%;Wm +?Jz[챓maQH@VDl)ƸRO	6
xkAi\OX+snkzX!l~<nM_m'T 7HdF}qW@;+;2nFْUHbWf
aykAÇ,M%J*~7ӯ{Sg*z{V۽$}5Z[YW,{bm^<3_ uA2!$/d$/)M>zʧC_ȓτ0^ˠXfWlj+J`NoS_jP.k5pNyl)y#,? țcAF~~s&,?&&?#[;J~YXuc]YwBy'$JȦ33U1/eg35,]Rٽ,60{eYG̾d]Be;Y7;hr҃SzJ?vr$eG*E(e2La#lr"(4VϊDMR~]Ϧ([TQ6CyTb(TQ~f,
BYTU񪛝ZRdUjVc',`XH)jVz/$vUck%MRVvPװ+Ս*uZ}Pgת/#Rݤ65E[0[u`k]Z?v6ݥ
anm
G;ݧٿlVkQ[6j'Cyqmۦ]Ǟnchgsړy
{E{}^>boi_;N.u}!f]٧z~V?}~ُ$^~粝|^vK\֤T>E)LoTt}b+._VGL_)>[%
U0JR:]FO%QnaJwc(RzJ1Uc5ʔ~|Q0*Y!ƕQ3W7nU0T4*GO*CgQh-e2BhL2v(S\2ե)\.e+RuuQJ]W?̕P"\WR:Z皩T"|WRUbJ"uuеRYE9ɵZ9ٵ^Yڪ,s=zV9r5כʙ\)績TuEr))nR3\fvT0R4ʵfryr9F,Rn4(+YMfrSn5ORV˔;3;+uJ^sƼWYkU֙[
3J|Ey|SyHf~<m<gݺ;<NW^pwQ^tP^qg+)UpVtQvQq)ﺏSw*)߻uʯU}*WFUq߬U}q?VgԐ
5TBrޮvc]=>'f{2O5YVx<C@THtuT-Sz	jg:s:sZYܮ{V#s=
j%u
Z@|.|.lWOzWUze)<4`|0BozwzD{zwzRS.V^=[{z:JuV*m]ԻxP~ݡznՍ>/M>>nn
VU񕨏f|'|꓾d)sK}/P_ݭ۠{@}-mGW??5'ݟ?BmtHB/Ѽi?CKZ?cZ_YӴXLAߤuֺպ7jjj+Zuc3mg0vmP
N	itюLGr6<e6"e66e6.hmr,8%TkSRbԔi)+)wk)isRj)iRӢ)OhǧUOVVVVK[е8Ӗ:jҖjghihjfh.ThW*+ڊ"rY+i7[ڪk;Vh֤RSv֦֥6=z)u`p	bmKTcGS˴RkhRiO=zTsiϧިڠA{)IT ioVg۩j5`^0}}}}}}}}<N&X}/D>/_j;+߂7jwhWk7jMu)._YU]	Ou-/;C4:VZ7=g
3ӆ]F]J^i3yzoB_ziW]ݠv>(V=?A?<NCK[OۨL{PE^>6-}|o´iI!EWJѧCAPWP~\>;t^	CG}n(RЩzeL}~:t^TkC[Ef}Ia[л/B?駇~՗HO_~~QS+++ץ/կO~C9+ӯoJN9&;UoO_+}:Q'}~o}_H]ߔ`Kߥ?nI6Kן|SVA?keYC|Ek5I*_7*kD:K:_ĺLuuuuoҿnѿnӿпV[?Z[g]/KU}`}mOd0Tk7=F i;pg#3kt
4
64=c"WeGZ"R#?|18|qxưƈ0:3w`O'#nC_9tѷCy\}	󃐖A̆bΏznӺbCo ݆gi!%C{|<+D(0NBPs8TrĽ)vBWa1 ;Ņ[;Ė/8FC*"ԥlZy0!.#ydPH1R!B:wp8}E0t?LO)pX ۡe91EEX>-
o~dex; ;dzU  ludxË6]My;/@;h)9 S	rJӨS uC80rRgJ✔ q&qJ[
yhx,Q7c0NEЁ_zRÎk>NܻqqkJLĞ0,la+uyLb)u
o#3=38xmiݰoHw:h2C KX6~`kq.bƥˡyU 	/ǡŨx<	b%-|J_!moloƥXJH	脯4]
B-}/qtZ[qtԯǯާ.,OĲ|
Z9rB=:?-7F\6E
nrq19|D4^&$:$.YP.Ǻ]prpJx
&7^6
j"4A]]^OӖ UfSoP0+eO?«x*I6c;!	B	t[ح	W@fPdi	^f`$g't|MF-;)DBw0IOOw^N(աày|}BC*.ǿEZbW9AI;	zBC8b ~qyvaR`<Yx."iHx
xQxVOFEwo<l gv*FۡwDL;k0v
ݼijwy<nhwHK@@jf o_aQ.pݲ[>_!?Dv:Ԅ4/0) U
M/:uT
`gl  t0BU<"A
p8d?+pʢ^&<l!Ev`_eHE0A/$KhWi.TcUp_nMvBG+#\<RyfF.3f̏8rOQ,e;x%,bٍBzJ'쀕bJw#P2w<dQa1
fLI܍F>Mj2|"8<((P'J*Ϝs7@&[0(ەM  Dj*MŢ".
jX">[T
֮h߳,3wrA~g9g3m3M^$ʓ}eG#qי"xphȄ4[o"Ra"lgxyiV0Ѯhy{ޮ[&|<ݹCG_bv/!.2LragJ\.i 4rDe0(m|66<ƅNc`+?Q<BB} ln!,y;A|Dg铑h)&>glUUyĈt߈tEDbڋ޼XvAxLa
eDP65o(niR.n.G<*<+)z473MX6c{3uoō*4]ݵޅܻW60[ll
46KԼ7xxhQ2Gpv_ӿti	]N!n6H*nxoW}Q$*L"j\GypfU=O# p[Q>:">Tr WoTjOaӇ*K#O5۹ӐK`#x6q2"Lw+Ea*LҳJyEИM_
6RKwAoQ~Sot.mHٯi\P%8Ce%[3M2"=͆o$e'8[;5u|V:<G0O< >*5 ݀.4R=7l+p͑0QaV~$1<P6nAJ<	݁OcHl<oC0 ~G@c	ucƔ#ĳc:[lc0͇Pߢx5EuwǠ-'|
0- (!,
{u7gdEOEL죂$h2w
iDCtheLt_l~+j'Ts)4T g܊%F5$1%(>-ڝer(kB8OŬ#gEe?1_x[ ~EטELbmm	TI̲LbegY&1IpaMg	%TtoX垎0!sE=9$ДȊT&1gMQ	f˅#Aܓk*3Ȧ
o3cGEH+1 #݃~Z{#Z:[tkt
_i<3xNw^6%uO9[0yPm5Ġ9S(+-w=׶>۪Pg>3.yBҮ3;~FɼWFZ(Uj:zyz)<lZ|<jV&A^rޜU]
)9J+[@jH#'T9:W~fΤ%m4鎲WV[Ѓ]j0PS8ڢE
{#>պ?N0JD,]K jXOͺw!x@l9(q|h&IKQ-wUΪΨL]"h	P<`]$<Իؚp6ؖDIfG-˶f
,(?WQ#O%OCǣn 0'a>d+?Qg NEy:HVlto~昊)']2IwIѵUR}J
x5TBLWFg=U|`.NqSi@sum;Vwh[ѶmuGGCV*SUE{1	Nno=E2eUILS
Fj
k9|cH݆B `6a@H{l[KѨKGLbea*v<b4?y~TE0ɖ ]ANP2O|J"8zO̿<zߪNޮac_ľs:<.BbPy~G35=۲;ǭ!qb:"*i,A=裯D?u*0F_M\sJ\J}V%}XoF}IUأW};~z
~~e_eu[UשRꯩDoT+#j~T>t!:_';( 6w
Re&8HYنb-AO5H>jmTyj	rK$:E_Dn//"EB(I.L]'1);9K
5P$Z, (Уqy<i^l:'Joc<CwYOX,˖K L)npمT&r?~.L2p=U~݉nq&	36[)Ds(Bz ;v5<1$4pJ	6gQ}죜'3'0\%U)CuV{HVìn&`pIaj=UOQZ?C~jywbE}7#,,,HI12z[o.l
w`a0Aڂ?Py{'YMدQER%tK{_T[7X%*
V	oi5N%I//2:<Tv)G5CJS)iUyM$y]F|u$,'-	l46J"$?ӡm*jHmW4֒LvM
A҄Vo/\/!!#ޛPE=mI#+ GL/@],J>C>A>}XߎN(%DGKA&MZE88V0w[j]a/1K	KB񢴌PPͥrss-3P;Rh (Ei%Ƨ"s,%:˔	8<3Â*ų%Nyg?5ETKuqV
.MrɾQL&Mk})$=ڋG7/p/IWt	JI.>6^|
q21q5).{wfUQ0#6#p<tfjL*XYRcX'6EJ:Y^'KLdic7U+YtXJ	NNgz]PeQ啣וP(/d;0s+>yK5bn/6X
oJsQi*UU,Exʚ>ǔ'1ȉ
ʃPGЏa$c1|yz rvvgs|\J4
ER.ڛ_&vB_wPtӠaIs縒h\j6T;jjئ9s_-SiJE%B"%nMh]n-{gYwsf3:
3)t>	ѭ9uoAfL<ζ(DR]rO\;	qo8uԽF!o,zp7#	MՀ&o.&c7Խc77ypwZ7{bׄ'7{w1^./w9z*]5ĻVUz׫~
$jlN|Gr~3Q7N*|U%hEۊ$ߓXSQ~8p&C^G*IcHuA/4ГŃ%[!$dYĮpq~2_ 3u
L:ugXXmqԸvu( @lD-Hl,/mĚvuZmep8muhu<:g9ab9LwE5(Be&~s{qwqq x_:ZA
ʅk0ūDcB}_8ax٨TVWDH%r"^tz{$"@nnPk6lE\W^Tq<H9CV|P$<}#}c=NxᲕ4P,\Kf b$IbH.沏t\QaPeOcm+]"lKodtMnWnYKic}MX+ݮ&20&ozZiH:=Ր憞aF'6̍Q3$/HC$)zG"g~IVJ+d*vX/<ozy{K}c
ɿcb`?lW_%k{y?ϱ-~uy&%wb街ZV)Pס#񝯥4V4aG^%BQ{qߎVoVoV/jcJ({w?d0ϛz.f/0~b?tΓI
Wc/>}bAt8|$ӓX?e;d^RS+MMnWSH H";s
4J||mTb	>P;B,:,:a(&z
9.`#g
CF\#'QԅB`liְ@ŷD&w-
O38}Yx71.qss=%Ldu]M8I</ r~'X7N~5.U)g0 jjVPICBqW,u~ӄ|j_+MNibYV:o:ol@\`Ke$EM`8gNHČxfPONqRVEEEI8Q(	bjӤX)˴*]flW3!ܕXe%t!"OC֟J"jQO0
S13p?sFB\⟋\,j<\[쪯Si)J,p"57&$
5n=N$Q*<sjV>F3i$".rH>-t/3v7xL"iCb>6ߥL
نrCZSf_%qϊE(硗?e8Fp
ENo9u[B)i^97o9=:
R"nT"0eq:{' 3H}4_E-4lG'ʿs`ZY<v١ΙVǢ]ͪk0K3Ҿ K<h~|fI>އ/:K%Iэ0Obe?vt
kB@󉶣2uE\Fv]t,?y+GNoF`:pw`7w6ߋ߂'C3Cp83O~O;$Nmb(ChqR~#29GvD
ߏuLg/G,3GWv6\ܽ]ٔkWuБ ڈFT_/UGFթ\6E=2
-EWk^aynETvu{<~?NL-9;D՛{
;W!0_۳^n7?mWs[oڊ:)j警TO¯ei+o2AX۪.خ.ސOz"ǖҮ:4cSwEMǷ6/{ř8$>,o*u<#@Q-h[К@g2hd
82KB}of5qP*ag'jrn}Er-a6Ui;)\#ɲVhvN=a(x>Mm.jHvawg<w؋u5<&]]%?rNѯVs\7
hQqƸ˴89n6]N/مuKTut)SD>ԥl
T4nm%`GhAuEx6JfQ߃0ET@"Y궫dk1 z]LZFR	T?Ҙ#
Gw]دi?$Md7MpG\l7W࿏7=r*0USG
R .2j^KZƠD5A'ՠLmjGP^A7N]}14*#'}  l,~eѷ!oCsѐ)8'8'2n2zOܔqxh:Eo |g8$I*/(rT:ഌ7Jn_W&KXx[/[DSLvخ-_a֖?k˿!h(N
8>XTQs
=/Z#5֔/,ZShM͚'s٠?*T㜠>a~0qE0˃"bǽ(Fcc0hFQwk3bGSxM}ңxMהO5Gv"0RVDڊśx+:j=23ćev0؜P},sxă	H
I`2S$JL+:FJZs>.u͏2Sx%9>:$}iX {ٍc˻:+}s&ʾM>JYn߮
FƀѹE*G묦X[N˕cqg&]S[YՎDANGW)&KHұ$KHұ4CBgyEy-tTXP|]u)=Ow^2ѲˣT2);Ie/VrBD(YcɉJIJ+h\LK
}U57_[ΙPK
     A oh    ,   org/mozilla/javascript/InterpreterData.classWSuKRj!@CiբB *	X@%نmM ֣j=Qţ:AF;'gor7a	v}w|{,- 8 W
^?De8GUQN"AM"HC]xE~S?|EXsRMM'U2Ƅ< pDaيaO*zN
&_. M򨜐b#}gl,::F?M<1.]_$Q^H$:rﺊCh}%j5,4N*JXWt8n>:əIuPɈU5e%mmQ:8-@^$$Ngt8	e|ge L-ỲsҲa-yA΍VH
-fb3^Ȝt]	4&G3k([ 0K٘n`;&mlD˄[]S?b#NRRͲ^ň4%9X&ɂ8۸$O!ݠ3M4fQ4
m-%<\grkpi
+X@)޵D)gؿU{`ߪè	S/rJZ嬦ـh_eg1uQitV4~pH5=vD*9٫>[zf4ŎלLˎiz#eS5l Oxqv;+i5U]wVR:NY8ZVR!=Lr
~irztۤ ^'U3[SM΍̫)+OמhԖk_wɔi"xt׬DqTx4͎
Eb'G]Z{bc
)HXCo,)
c&:a7q}RK|84v
h2u96+ȷzWGu$@7MS\. ~9u_yŻd{)S`vI0I(vI0L"̑I=<t{KH0B	6U$D"
_K 	Vs޷LZ&gwLv޹Ǒkҏȵ]c&#˔5=^+2_|36>d*Z`;܃}&	ݸڷ}phD@ڹNq~L㴙LㄙƱ1 b!5L#L?<u/}\Gx|Q~>q0'r#\r=qǙ,0=*a'q
c3ZF;`7Byy	5ȃ/ԙ&oD4E~e+T܂pS
8F؊&ڌ[pR)ra(,vʽ3E!C%8Pj^GQWj!d [Vp@!b.dnddA+þ[~\	8qQ5-CMOPPֆCn,HQӝ/tUC+:(:Gs-:.^ <H%y̳LO%``N©2΍,u֋]ܹ7*>,z/`iaN!KsM[,N[c YxLMKqC l'}x.mUk7w"盰EU߆ܚ7aKiKe/'1ȝo=[Zv
xpkڴv>WpL[K\-[d§Mi^jn֩|4<cQ]wAl}ryAL;PK
     A A@D  9
  5   org/mozilla/javascript/IteratorLikeIterable$Itr.classVmSW~.yYZ-h$ؼ Tes
KoZi;~o_h!)d<s pVq#aLles[63!|;{abN|;p!/U&ۑ}Z"edŤ%,3(&%ִCwjK{%KYHf7.n1
g29[4(Քee;TҒRm"ۚQx%ʴaba4֒ʓaLOkZiM
9/Ea3ْ8Z%\Ԝ1D!RRwԙ^Lk>J.|olÅǨ?ƗwgQ05Qi<uT[
Q2YU[bFTC+*V!xuOOLsBSBGr.s6UpPPP>-(x{USE1GrU}st^e2$[C0Em2&Rht;N(URF^Ji[y ~L/|0.-DWcj
,ˀ+]@Q
U~h.	'"
lXWݢn:t`kd$Y(pd[nMI9
8K"Q>3ٕUxU3_NJa:B3u){UFiCySaz$}!h
螽 C<Jo',3?Aj/lQ'vs  w	=)DqpGnf0T}6
X
~x]딷h Rj
8ӕ!G8н6N(D^4iL"K%zp+4[k<rܮ7ۈu!A6z'|pSU:"ϒ׋w>~sҴ=ϸfE4zzuî,=Z.pCm?Kv
܆-)op/AӮ(:O3W> PK
     A #    1   org/mozilla/javascript/IteratorLikeIterable.classVkSU~NذIX
$-5X[hCHHZ*jAMB-l閰7ZQ/_U}&Hl.3y^ٿpƴ\f\ޏ"fU70'$]`	X_˝0mhǚp/B}*H-+ڶNr,9-d/bQ<?ˆk̔c{7&,NL4}hRZ%ԮNFE4޶klۆ@LWl5N܌[MM$;SBfqixc<`ǜe["sWuג*SYL_j s֦Wmt`zh>e.hy9|o~?Q)Ja9Hb4tM-g
,٬bd7).
d}\>ÍlY:8
fMZ90;^/5Q̔,A 9g5K\a}⊆r4Q&LF̩
0+MRCT<`yDhDQC15l&2O3kC|>|/UkG7/ٱ'0pY[Xrzؓv~'_'lZv;<Icd3_#d/i;(S-;o>*.4;vN<Vi@4c%iZs}1>FA)<ߜyH
s=(^Ei."G+r3**GO9}_W}~@#5	! ɡ=(Z:Gh"9hDn)q)qe.zʟh߅+>+}"~ĩQ8c5Kq}&)}CXE &8M[w20}0dA4Tq]
#*n)*(уN]$:y$j]?#ap>Hh8p$xb
>U#E{'~ѤV5K4z@T>&ą畻kUݪSfG+Uǉ^d
'S~o7P'Pf'}w0w"i21PK
     A 2 3    =   org/mozilla/javascript/JavaAdapter$JavaAdapterSignature.classU]Se~6%qGXhB4Rֆm-~5,Ml靎W^3^ut^c}& tD/|>o
Q0!!60(.BrYψ͸HW%D2pMAT.X*4M,[V:otTvr=[A0MVf\ ͇OݵV)1Qr'bZzNO_[X)d\*<<与?`Pi39@+,	ǵ+7c-䩉MV~9W8.ZEv!3U8OawV$6r0Zq뇚0k"|Te+ςǦ(	2XMd,_STa
2d_sBslڷP@wπKVi2L3jӅ/;[>H
'qĳxMᄁ
cb
C;RƌwY4n'6q&Ķ>
FJyԥKmVFE
l-w&kmHg|Y(5dgneɧG=Z+\-E~0c|8up)B;r'N"㩇PR]7z6X@,@ ӨGu2;%#*u$IrXU˞U+u:OSȊT7LFׯBW׻ALP7AA^E޾'7p{mu4RU<jm
~qKQ7ճ]=E±>YVYPxߵ=.3 _yMYE>|1@|?~JIҢ
].ȩ`8{`4=JUzk	D#;h2pu'%t;XA凂	( *j_FÁHPYb+B/e%o(!
PK
     A h5  ~  (   org/mozilla/javascript/JavaAdapter.class}	`T73yI& kAV	P,"H21(}VpG(bkjUֺm fI2	qzϹ7=F}S1XI~x}d#1q$?&c2¥^9MNʣ~L9GlSÏq>y妜CcM=r\u)</'0OWU*WċJ\%Wd\ÏYj^Q'l> c<Q)OʠdS3)<GΈ9gɳt)*.g<ߔ?Q#.Ex)Ĕ2S^|4O^ҔWh?1q{W'!o)orycI3>Zx}nmĽop'l-yj'q{[_266~<lǃxF_?vg3?c'{arc\͏y.=a_2k~<ɏ)~<͏2tϘY]~ H)_Mz[~Ǐe|Eޔ5|OM?8g;>|/*	Oo\wT3@B~Aʔ_<L+[r>#zwy oEW $v^Rn2=U^Qe*ӣ*=*ǣţzTУr=Gu7Uȣz G15G.<xH^7<mQjGr@ďS
!=Gx!U#4 :,CM5FPי*uH}yժp>"*O74DO:JP`Q]5b58AYR&$JeN6µƈjb`)J,=62fE~~xEuV۩4b U#jVUWG08
Uu)  (WtXd]l\{K;=l\
:;#
pu8;XX+bQ qX{K+7VĪ	
dkuU0-*|u)jAM"|?:eI[VJA&~FN~K@CEH}l^?|h^)5/wrڌےCOsi֝O@oht,p,0p]q7*i0&5qV5':)T"vTlEC+4B)]#+wHu%F1k7B{ɝ\ۿaYZSJ߃PjZRjW5$- Vo0킚X]<I\2]UG/=:\_%iX{	O`JXzzSD_Cc]X/,#+xDZ+`hMgOTl
x|My6pr}U6!lWvX]cDkƱ0+#ՑUHoMB4X7٫luS9'\iv0: ֦l$W	?EАt#飯VPV2O8еP!vrPڙ=ǘr~6	-&[Hju{6cU%`Q5 A'>{*r[Z0V@3fWD;hrd5z)܉}U#e%wzXUٮZc;
LbZ:ON1@5#L5ѠIx:!rZ w[*ǵ61(h'}#:;j̾k̊@iIz.騟a
T+FLQ'`:pelemj=Uʓ[<mVVUGlMGi!FEv*9ȫ=[te !MsWU2\DeY
FL<1n(10+b۴n1hL+A?/X5WW:"փSOguUC,h54>|lTsU0]RgVGqdA_>Ln)k$c؝]tߞji>P{8ф!Cv^29br+Fk꣱V
HE#G6"2l_v)1܌JŁ̀F:գ₮GALqmʖCܡ{XuUx½`RCمiiX' FeΗSDw{7zv2w789t5NNZ~ۚt
A/fɍUՕkkS0wʆy62	e%1o)oT/H}UpO	_eZM]{ͦ,-э
tE8\Ky挰(Nvɠ'̎`NtNZ(+lqo:?xj6ky׵han΂#1$&PSZf_;t;Ћeŷ7"?%Cvlר,VNôZ d
/Om\NX0auh5s8P'LF|~?C+N`)rn~X[M>S>HÌ6 N	kY1޾U
1}D#hZYC]smFg+1س#1t8=s9Ũ\G?MaKJ9.m;9WjxTQ5+*8NúUL3v2FxHG^WpUźQp%WT;Ghc}E5?3xі\A,EcKd?XFiIj\KM4tu%閚JM5RT-U&F[jm*抑:Z>yy*5cMR"UÝS#!5:-X'h@TwD
Fcõ` ,SK,EukJ,uZj2VGdQ,\MRRK,Jf,TYjZkjKsM5R5RQ(o@?R'*NecR'1N:u&ZTu%&zkR3;Oֲj3Y$焖:[csW穥*zu~.hA^['ZBuȪpHCCbZ2eNb>PN`CSQ:7ŦgKS[e_
sߔ
ړ`y>%Kݧ5dJѷ/͉ƦC'0\j끔,wRWAԚVXZu`~ę$<0L֭3gKՂM,Ut
xIR7e-ui<Qx[-udqw;-Ym](Sm{ԽڊD߈Y?Rs6~<`lWXAք-CT8Xz=ځ2Wvs|=liv1>8yv2p YU-xAP=KQOXW_fTSROa(UV).ZMM~ԳxN=oԋzRcR^,ī5S
KQ@'G1>sn_ۖz;kRQ_}]>TcViaFSZi$rjĘ]}*hO%'r : #sw'/>SnOx/,%,3@_1>6io8ojQ#a8c(\S>V~蔴FmĲ
\c*mg(X4t0aq2'
4wpR:lþ2SH΃^UIQݎCHe_;UїU򕍨s8(A۳KLK-+hR[צoC
}پ'WVGVGjKX5ZRIRefǏA!T)hZFv]Ca*2\`
iUǦJէu_LxG귽ecʍAi)UMɫ2O-ڪ$N\dD	WږAJ;%֐ZγOjhN]$#_At>6^b|E`ua~yR_+˘kk'74[$o; [[YYU˷W<Uqc5C٠;9˳8Ϗ͎.QZaBӧ@H-uN0S#HD٭&pL&2HOa(Mwnv3&<r:wZ5v<ehڻTU
7䘭~=*?!ᩁCNiuڛFLUmu9q\Q
6mv&`^:k
@+6L7&1Mpi[aWLI.c"
R݀%uQ39N2lͼX+MOV`Twtb,j!K5ZhBX94JdRѾZNRbT[y4!'OvV07>z2[;3m$ܩ4FW_%[*c<'Lo:eaJS.ZE.{:R%A	Au8}LO!2J1(JR9Ұ//$}N]4 &L8p?tT;FQu:IF3h?IhqKg*!wM{9qO;5=N;q'*ZitP+W:{rR7iJ(@)i`O28
4è֥ܡSǾRؠN->EVVvGVvFt]Uaqq;i_D3_=qxeU*mU
S#+9΍b@_<O\= V}UݼS_*OINw ɛQU$9\`QbF,ʩI1Tap*5`i5Y 	{`c*}(v'מ.q2tZZh[^dzU1B<nm BIB>sgH&{*m_ܿ\F9W-fyt~>zj:i.-9s/>9Sj+ڣ4{k4^QAk-~N:}["0*tgŏ=M9gXFҍ%idO6Moy|0kR
oLkCL01nCRuµͰ}SKOeG7;ɜ`쎎~͊{޹if0nړ9)V6t4cg)7je,Ei!/oTnu9ǇL0P;b_|GSV%`坕]jܶ
H;35NX,N'SbvH4>ɿ7qP9Q_y %	^fGS\;s,_n`SO:d*t?\ hO!`iD4ct(y%:^U1G2/f$L#8m"z>6VVG=;f?^ڶM-GtE~Z\H׏F$w(DwRt(E.P3GAݥ;n]C艷Wy{C.d;HE2n`%FM鵁<!2J/ӛL<aԃfP_*|3iͦTm/!z>DW  CC@ 0GPCОAb?
3PSJtuݧ 6QRDq+e\͔
Y'<Q9B
{5\*B^Kҥ"].F "X=Dx픽m'ds'l/h6t04lYz%-pQt 'Ɓ8\~ +J<Uc{nfR..,
)oܢm	~T	RE(VU|{<O]HPEE)Ƌ# /=r-@&^Vz%eڝő%钽In1ILɝsb"1El~*yyd @
wOH1LWF3*7 1r=AyȽ
{#{
Է|\կG7Ė%/qbS{
Q{w
(M4p#
|B<<_[B!w\o|l&8똼'濏4iCLCK 7	yiX//hTVкNZX$30e( 1Xt-̲z/.%Y!**e2hx?近6ӈ!>>Pf(!CK2aNi;V^BÀ|@q(/WF3aP@=4v'XOи
ԍ7C!?G2f83x&7ğ׿<O{ՃgP/:yTD?HQt1By.K"ut5Mt-j~AimC&vʹniBwЛh^M(z@dvDC4CLfN1^Bz\qZ\EO[iq=#ѳQzN<Iϋ$ޠWߋU*POHЏJ	?F̀I`nTVCgL@4Meq|#Hq4FҢc<
}yl %њzwF
a/Lʸ9@1(RXMQWX(X7-EM2^,ƺnZ!ǡNz%Л£uXߧՉZ~V"m\CcٻX
+,E?{ޥמ|Z~D9(GGMq^:@52S,7EXS0EX|w/h#]P ao3> a(h` c%JXr9Ȳ&]DQ2hc4PŮh&
Q/ֻV&9B%ֆ`*qR8!3Y'tma.fցH-ӟa1߁0Gc~G1F~;wSmafMPH3=MQk+\ڸ-5`fiRXgQ@rc^ŉ^KЇu6fM
LqTSm,V
$7dy:,47Ӭ9EOQFTf#`AgTVb9kwM|l\%!
hr->G+1CF2dx܎>L+kl?KnYϛa
6U-+Fh¹	D[A}_CA
s.>h4
l}6 pНWLId- &MwD"]5׃a2AFqtghbN?z,1 .3nZMQYLhrk<VbCVia?ʞ%{0ȥ!ڇJ  S
Ib&9,d=H(YOj9C$\RvJm+G;{-X\{-,S
vBGzndj{XϚi[-@C=rC}3-avm+&:~n+L%p	%
/ 9TdxO@:*Ma
دs40\=\iEfh}:°be#`8_ROXCM_ r69).Ԣ̦C<qKz)30:`v)G[MtBw!
@CNZ!]/y
@yEx&ZDxCނBLU[oLkJtveD!NV0I!XB"XG6Pba6x0b*xu6
^<qV{ҖtHˎԥ:rSB\	ZdZqcH5"x(i-c	y-N̻:adi!h>@lM׳#' (n)d^sQ.YVopvEu9MT@C)=Mz,]l+{*Z~m@cZCSG4QcE.`FзFQ%Vj3~m~ALsnBSFH,;o, ~UL^Y8;D2٣J!Ui7z~Nsuu"+	k}IP·S
4n4%]F^PW<ܠ6@B(D~^pbLU
fnBV0kG7;Bf8 g0g#Y6h-WPv/x\PWc3]> Wm^+7~_Ŋ4ӎ׈==V6#X,_ǜB1<s͖wu6)p
1<A9NI!Yϧ^F,.ѵN.\FLsGކ[Uj1R%D@ 8Ns:3ʟũPA=_(]
*VP.[)"^׊7uq\lߊ2[ CF_$=L,G[Xq ĽrǈBdxXM|C^*5bW<"w	 :*v!F2(M/r"q3r2W[ˀ(n6 kGPUQ؄RP.b3^#C|ekjP0xh^/^SEoIκO%zlsu4I܍Ly)B6Y*NK\"	sUO!~)=B^,|nǉmhE-#|| &U؎Qaz2shr3m@:/
<pgf[#4~e7YZ_7(#'t4wȕu.IN&݈4#L;l];;
g GGۻ ph}B]:ٛ
<jXGYxlFp6ϻAǁ縦vu?w/) aIsB׍vvT;6Q7QpL=`c&g؋1D7`3x`>EixO@Yx @|>f@(ُR4n(0O_'!|~2(NQ81Gqbs[;
S<r4ڙ?c/yhϷbv6!r|xLnSg9،[N84F1n֦mU
zUCx8
F;^[:4~ A	#BhkT&Pu7*-:U

,ۻl
K"oP u#`Bj&MD%t\Ҥ+{sJso:?N͚8 b	UJ aNBdC6 8^C$~P4dY36(NnL&&@fNg[Þe[2샀Xl!;.Ek'-)JJ}O P(K/\9bF@-xY+C+ +^[&^C!hvZ
D@:lP9(&R7v/9ʙM;^U8Yfh'ح`"BMDo3s~|p;ݳτ
$o$o!j}r2,Xn,I7ܤ_x4)Z&a
˪snX
o
w/s
)3h5,VO.(,ʅ{|&z 	pme.;eɞ8zSCy/
PrMCt*t9-xK(Vxcq\SO)('>Wc-(qiΌݷP7euu(0	'˃vjEҍ{'rCM}ao1AYHOpNg\"=53qZ:3qZ:ScBcBc%Ƅ>R hN6x_Ň~'c4τgk#&<gryDلcbd0?'wM:hٙvЎBT=Dm;(v9D{͐qث}A_л<A(qn>zbzQ,B#W'p{0IX+=Aſ^~MG=FȭNO.t sFj
7oz)|́O~)rngr$KIə@~.fH.,Z,QUpr&#t\I*YxokIe5(Uy"IӇ>'їdN!yɳ_#b\C%P<ƄM[LY(Y4~.J4a׃	
af!D!ԥ*)NF`KqD^^8jL/uX{9@yܩko+z5x/Gv>1s?2NK)l-tD&y%dd#7Q?y3-tLc0]4KC{iJ>Z#lKuq%D>[Nw̺~hڅm=_(ezд+pC\-Pv= ʚ]@٣4X>FT"CGʧh|"-/SDBkd!_t#\Kpx>_RnGܟ@	tx8Xo7D^bib~&z?x	2&	R ŋyyw'Q T O%ODQ9_`_b_A|MNN*01: th# ǃ6Ņcm~\#9EV²7+	٥z6+[Doa-Wr;sMUkpz$[Qs)1gS]UM=zgn5g}>y_?Sʭ&A<ku*.Fkws.}|wpMлvۚ IcQ).JPh2hr!MG*|4Ge	OTը 5.;՝^W!A<XTB ($\jP
DOU`K,4.σ	!)zJђ-t[tɻlQNp5HIa`;ڲ"E,(\CSρw¿U)lQ贾x[MI6yy=kCn8\)::)m2Xu
ft]K]1+tPץ޻񣞏 O젿=J46P|ۿM}GIMYscV9
&U4>2XT%M*P05ƫT9Dͥ:<:E-3"zCO逸:>QsWU
"£VZTU+UQ1FՉD1IՋ9jXlF3iE%@38Wn\	%"/"[ވ}Tό{B9!fI9ECKE|nL_]u#OP+{kZ2]6(/
})TT)?˾6q^,٧3DsF0c&3|kZ+	VW]
r_]CCյ4ZJ4]@ՍHDKʹFm=NU| ] ݎݐ#
=o~LuJ105Z>Rh;"_Lyv2K{=!tFMDlK;Jd|Gڮe{m(CwuA|!?9:+xrXGm>c+;kkǩE2FYeR_K՛tzQ]ڨ>[_6!mV]fk`[F F@.Фomq#I}t	?MxywB++L68?W98xr럆wB5wMd_B'hQ}5I}T	TEշtK#N-&C݆nz$rn҈d}(l܇R}z2 +9=d;H

B<'P#zyuPĩBn&!9Y(Ivk[}F=ȣAFohx3Rc0!t1tQNL]ǤSS&tɹ	\U.f{4(~q_4j6	Z{bg ֘F߹K
7&W$ɾ$	$=dOr w7"e¸,fYL"tqy0Fpttv=pX;^6t_6	cEL~/kO,ۅN{3+$|ba7Lp1X*4Jh1CӌG :;o%Oq@/ȥqȔY
XO
hT|j%c|yfo9[{]U#C
,,G -ԏ#`?t?NW'3!dL&Sqg̢l7h17fVi1ұX8BJщxXNit]j\.ij5mf.>Ds087Duƫ#zÝ	z!K0{n\tG}e5!{^7W0h64N 9za4بF%bDHfPwHiI.i7|YBfw9#\]P>Eǿ7d8/hiaa,$DOIxK!滪9$%uX
rX!w~"Q_roJ\ղv+ovɷ$Gc}7|Xwzq?~\Er=c
XXp(j2Z &0F
ɿv?v3PK
     A R͞    8   org/mozilla/javascript/JavaMembers$MethodSignature.classSOA[l[QDEDiVDEAQUp.lݚѻG	jxDx zO2fZB!j6;o7o
`7hF	` Iy^Ņ .p	5
uz?I۹duL;7B1JNZT?cl:i c񍚶1G7&dq2M۸[.>oI,fcMNnPHmÑi
M\P|bZO
R12ӆ)IB;vs,R(-#&+d2+H`GenQ-t	5e(Ȋgf\]JeYCSv+C S,;Y)J<\ךPC+jBXňQ\0"֦babBCN!I
UHԯ΃Ġhln!}ĥɢ-I~Jvpʮi%'*k}\YWmCV*
+-XY]=o
xur)^=DB{*p] ZB2k7E[C{PoK-%PDHڎ
F	TLL@5jMwߠ4z7ѴY
y/B~WYS*{G1>ԊKOԑH4ԤBBq>Ǫa:&:H	OjD}dޅl
+щ?PK
     A Dh}ދ/  f  (   org/mozilla/javascript/JavaMembers.class|	|T9̛aI E	: 
a,"ApaHtfbVvZ
Z.j5@QDغVkvߗ_}o&3Y ys}w9ܳ|ϹǿN79~+H~;?CyA*yK~Ͽ2R<~;^($YJ1A*㿙w?C#]yoJc&P%wHQnP,u0'H5T~R0U
4Ub$U$ )VAZ*W2S
_TL5ܯF$yjj< ݪc&i(*yLjx2jdpFM	`ҩzNo4tYtSi!3d3Q͇ذ<ΐN3,SfJ7
Yvft0I1 mRaTϗiPL ʰj_-,\9VUZmmBΪ<uZ-5ZGשMu^^*˄uAQA,MUQylm$Tj_]W-RU_MG"*%v)m5yt+emJB?$y<ʮڮ>WM }C\ncA<['eOɘgd;OM]Z%r8UgqTҳvS!RCS}QrKN%uOP+]/_ҫ~z@v+AT4onmlQ&5o$$ƕ+W^b%W6\89x
S~ey4%LLÖllLMFԶ=f2bEKuT=>/}Vl41D&@QӠ=k4҆oskfeИJZ7̪9ohSjY!mi0c/>HƩ[WZZ"Sk)kKM];??bMKӔg6}@/CsQؾYXj6ӌz5><t!>~ZڅƕҘdI)ra$wғ͡NyM6;s'֖4~'#;}qft5Shi@c֍N3, ]m"W2U;ޚ^BǢLx
m4"MC4pxp*Xri%Mc2&AD,޴W6ERp)Q(kd$Okd>dphS
Com*hv~ͤu e}	zn4Ҋi&Rؓi&F7Ђ G!=d
JC	1se 70@.`A[;>]bALT"[%Vjx"ҵHGHSS4Fji~CJq4NllmMe7H#-#[Iki`*DYKIӸ%ȗ/Yh|U_ٟLDȶy1xAn
bX%ں1	R\+& sc-Ͱ!@`)5oֲؑV,!	UkG5dWef#O;nĚbM)ͧZ$.sWʆnS2mldl#vp#%RE1]aбصKJ{W@	 l}Wjlhs<6.@ĺ
^!ˡ!
M8`S\O6D \/9syDtNWOF_?
цC083֚ij`|	G4!}д"[]6MFpL0~9a[Cii[޾EP'2qA"1뗺Z[ՋGWWyMiр9
&,mlG=AzIsdFO؆o(QtS׷'b=[8ht*\M=tVQ^ x+&H^\ߴw}I`:(.9]pՐ\M!SSWkHf4S4޳z8V6o&P'.zAlЕƞraS0MT3aKzR}7Vos
9ic̸ݥU8N[dwQڄ^Agd@8)5zk	Ȥ6aL5Zp.aԃz慮^Tf`[wݚA$QJ6!8jџ,͸7!E_HS*K3U
{
-G}m:_[$i!__NWtl^$P3xMD-;3/Smy-mVO?%dkkr⠓s^MM'J)륑Δ;kOAszq>62H03ڸtR1%o~XܔFRѬJ378ä͍NXܔ%P4wq~R@t0,F6"m'RD^a` ThoMŶDsb8?M4UDg6EwO<'vG,K=jRMUKQ{$7NqBS6t7#,M#"M~~NWxކ?1>I
K 3LrS"~lR 86NgMiӨ&JM5Kճ7_eiT,zb0y:ȓ,M;zA4d (bs34[ekW,}^?Ma[|KPR?V-/ݧ訸5poN1G ezXsz*PAzFQc)EKL2-uRd֪XWZVA7EQo,{&,gXOFطWX/LyDdkYKnd/b$$RTcX/y=bZ^gw{LC
\MoKc긥ՓLdl(0[c3L bLm&{Ksek<UNaTF2Bo	JٕT%t|MVF a+{4Ԟy'9%|צaYFQ`FeCQb"2Y~2SɰeQo&Ci˨`Ƚ|TbQ1
BnT!=LtxW
fsncE1U,	!7Z8ciLFeLR08YeԈe:?hc<Zdcw:2N`(jm884dA,1+Ye0N	Yƙd!aLwgi̴Y+(K6,˘mmՃrs`NT1ǘkKeԋ͓uG~LU'͗zi,"69wLD%mMe4f{[LlbG^^*f7 yo@>(
v=Lb/'""<%^N'U
sI!*v%ǜZ̕˛'{mrAi(hkL͕qȽ@xr1f"O 
H|9
"QS xZɨ\SinnlokCК94	W$9'Z,;oeλ`<'7 Mj}ꋵn_ϰrFT|L"
6:kiNɠȉ<%t!P:bÏ N:N		%ѭ7|8G
(V9wR
0D-֡v39yH꿑?_sre\}hOS6S`|
NI65i
<MJWeP536f*GjXT=pI$-Eڢ<krwTԟkm^ygN-l_tW54K_[FRrŰom$/9
?EWfu0(_!V4?>"1eKUΡ_fd*N|=*n+A"SXkRg$C98lYr2|Fƹ&Wsr)M{i֘Y]3VEZ#k 8&om(gF'PFDN]7fSQm,4jYUq/2y2SC6a0$BҸJBd/eڼlQIFӽ4	0AK 0౜>DŵE_w$[D6z5N?J^{yMĜc(soT 0zxv>*R/KWdW@4M
}ikO_2|ӟ>Mk~clK[{Hst5gd܃1[s1}4̽6P;G,EGqӖ>V70%\|?яt.q'tM4QtRd<ޜa{TH ׊{~и-n=sm3Vtyv"
.JzDaZAi@x~ˇsE0~~s$Q.&2uM
#A "&џPtџ/DWƗP([ؙz:3<blջI!<aa;Hcl_mh=OR`!u{(T>[)XP]8ڞ.*3mOMEM% ]`{aP'rNA並_:PC@w:#XG
i}kB_C{4GTg
jr2v*O4itNtS޵]GO崂E>
H	?J{\ρpGJF#k;uPĘ&3Ilj0Mg/-c}tc"OOL
JFH򭸤d$wU|pveDlWjN
1M|LqDO`/~`cTI&~MK="	^σ5#vdz:2Z/"lM
4΅,$َ˧r>6A(.[΅\Q|;oB|)yM.>FEx\b˜h@yhZȓHY/.پPkbrȳF8.i{hTؔ:p>FM<y颱Pyq]4>e>@g2X8&J.yqU?UjffZKU
A_7Ҕ0j+h]eYEgE.FʅoDQڌ[i#mB15w `6J{(NRRTV9PTC_~7x(+%>iv>|<GhZF&^˨kZ:.UK"'i-'^r7WrVyT٤&RTuPhv9NdU,GF;264M(UW*vBɕS
ΜhQ(ݐ`	#DbCc_nS\yP* oW̐WUS*=Sͧij܂ MSVmSCמoxԟӌilC7BdьD1<QNn_$A'E]jDIB4JudN8	l?tS`e3:,EEtG%|]4[<jn\ʸ@`{&q1`OY>G%
A(뇠]0bE#PˏB
o~nOwg00->%m-<}^ey!}JE]P/q>.٦]I<uP Ox}#1`xW@NW@DnU+:Ju) L1WCka<%/
Ph8^6(SÐ	/f̈́FLm&LmӡXnuD\?J#V7HfkZ%SU9hWM
M4\L;Jxv<YޥX<ua9b+*RLtvdwç+\(>@入L`WavlY^UwќPƬ(]k!KK
|Мy;aGiuu}`߅_wѢUX]vEE-cғ )QvYlht<
9^ HyΣ_C|.U͐
 ta,s%o<́LYXYYh#,MACqPZGYw1t0">n,z;WrNanZ2fWFU`kjfp0hݿ-s85M? nqЏ~!x!ڪ>#@hjE`u$?%T9H.sQ\
|#Ѫ
,G5e+@^	uy;\Z::1Zv·/ئ#vP?OE2V?M+:=<+lu~.
ٶ
LsiGj[]WǗ颕;%g#C$dMyND :\8,}V6 `\p9r9|>#݈'@HgC/ecm0ۋ0^51fF~zx(63/W|*/4B{#cȠ7\nwyG\V8:FeL3B?GXr0ׯ<B* Ki%#]}@GjY#þZ1'e+5 
`/젉hjEWkmX5Lh։z3qiW@\{L
U..q8vP2SBг栔bA-O!4֣^z!
N^G 1t3uw
[7ӅAm \hI¬ޓd=}OzB}҅#^
A13ZH}ԱڧvӼL4Tנ bŮq{klψtKi߶n/EwI<MS .'YD璤ZtDTݞ'#NCh4=e.Fi5A
5uQC潴DhC]0F?G )ΫfIO-~1eˆV\;hߺz4{T R|п#+ISax~JxM&
sTmҤӤ:ij"ΧG%#_@Z#4qW*llԞua=yPPp胰<,/;|@~yPx
} K8BQʗq97c
P#,oZa	$Z%[x+W|Ul7,yp
V6^MQ_L,!~wjoJ|n?K } F zeXG8Kvߐ7U%
W'm&%QxxI`X|I9tu8\gr)wQ*+w8v٤Okhɗe] \D^y:Z7ɛ] vr:qk$S0껤vCKGLnRı6k^5]&KbmWC^*=!ߴYk{}bGrl!pݵj.cFߒɘɫq&`d^H+
R kff=80䔻1x
50Kk]`U8gM:qa?FhMYcIdeb˴tgCM4;POvm+`} 4@(ck&6P^/a+e;.xJC̳momNu{UhÅv]EW΅.p(nې/}ً͐&@ڽ!t
`/]AIr@t=>[B:hIAnXm[hn(.H]A BF]a0Tp7C]QyB=PT#tc8 5Znbj~u~Hޞxbw'@6~uVȒ]Dlx,S:vtBյvxO~yLnU%K.|.&;iL7&t.YVps}aL.qםtJ8?;os~cב~.HN̈ĻseE>NMpLo[E\JnAKnB
wH0 X
:R
v`:uG<i"vԕJНT?{%Ab.HP)kH/"՟;EcfC<_ly]z*uOK:'ڥ讽h}ITᲐf{ev"E]s[Kn慇`!|L6ei=TdɶH=fmUȿ
:!]`´p>\m!|7}byPW*G1#D~EMljєV:VEј٨Q/:nt#zHLC&>Ni" Ώ .EQZ͏ѥ8max+Gt+?Ewga}MOw;/R7~~J$>¯~x+|)[PN!)_oM3m;|޿E|?2QW5j	SZʧP~UON%@JO+[A
SGp#*RUiPcsXA3VFDM41SMjqbPS/S41u:iR߫=JzOjs=jgZꙦLW+<gFugZH]YV{65ugԳ]]QE<SM/f=*٩6{P-Tme{^QI*y[{~zS툯mU+ͦ @Ft+
sKS``:(1"B(BNGѫdhh" XD|tv+3L|
"V#gLa* 4_xPq=Hߡ5-&	.i75ŧ%܄ElvMa@_P8Ǉq 2J>Q
=BIs>dH2ܰ C/AJ=[_r<1
\`/
5|.o(Eu<?RqE=J=U׊TNބRsm!H9Z>C<;A݇IY )
E>R1s	: 
8ߌRPgz~NB&Jr Ǻ$Kn(wB~Јgyހ,#M3V_ú1#K!Kކu0]{qC!pzy
s LThV7 q(KBEqQn@Dp@Wd
ut;
 ܍ENf
M^S$w8N8J&)٫$P9K6I]OwCYFI#J'5sj0_ڣT
VGȘ]q{
DQ)9KĬ\Pt0:F䥶(MG%VҰ$@w]${iY'HxȨfF$+CHϹ4[|.tㅿֳݹ4
9qLTP0h*v>JSM4gOe/AĂ3B]aZ^MB#I6B~l}ڹLw.lGf_ (uby:/`OyG'z}LY'eְƓ4a/=..g.-'EK=
}1jv'ի/*Eu)u}P}Q'U'}J}]sULX=ėݜ44`~=/湚NB9m-qmߦM'LGNϯfzr3)?&'_CMCqi39]Cyߓ;Nd:Ath>{j$]p
&C{vfva *M4B=FThڛU+Am%u;C;&ҥ}OJ
}g)%OVV`vܓ-wE̵ 9I}]ꥵgu^:6&K|NۿAqo
_
]ɲ;{ zYSTIY:M}fh62Zx P9+j?[+_˦Osl5Q򺇳++(V;tx59"ϰM9˪+(ƴ6wVxvS]cWu>#Ɵ!GT~L'`ǛV?Az\sjTKaFߢ~9=
GJDn\2JIXǺBu.uF;͎sьHx]٣YaO#<Y232-3+ԗ(Ñ?Crvot;4N8!+hNK}F^]y#Ct;{t\^DW#tS}SW!nzE`iR邩aRj~}7H)׵SOt'2yGdB:XW;;\k0-75m6<tk
@fX|ru/`Uz}z}t)_b@3O@TK"IZ|V苫W
F@=
~S1]tWB=g-~sˬ͚ޕ
d#tɳS9h{y8?.66lN *\m}',aZ}ʙEKf/tiƵJհg#)DSD!YJe4B
#hQA#i1.7Q1DʨVO٘L5NӨØNue̠'0jš
dip#&йj(?&_g{qK-u!6l-~N_M88ѳ&I!IxgCGp(3.cw2crZEAxrp@ӳjؙ].Z.Εa^]!)s.z
KޗwbǪ\l_=Y});cp--̈́ںqKwAҫ=׊px^^YRsFtwW?MvPQzu}qΥ;5
LwƽƹŠs	pQ*FcEvcEc6=_]JՏ@.*"ҹR.whk^}獫=5rPئv1Y%Tr(m
?0Y!*C?J/ 5(}OL8X>|S#mD1u/ggPK
     A  M%  9  .   org/mozilla/javascript/JavaMembers_jdk11.classVkS~]K ١!!qKa7r%iVXXVmzMӦNӺ4iKz3ʹ2ӟј>gwq;S==}w>SE?Ό
K,KWQRxA.(*'Q,W"EߐwߔKI./Koo|GAi'Sratx˴,mtI[*z,9Y,crJG-.^JebP6etu%gInSE]洲)>1,CmƐZ*7
BXIjUAiV5o̖;F^rCAN7_,\ڭiΚ[seL/ij&#[5ʳ՜eY,晜DhF+MJ˯pwXۨފ#tKuKA`E+b'*s]jڶA7wJz?K>ܷfM_nD.W+pRjCd.BKkbr9$º5}uʦ](espVߣulU__ZӍcI_^Ln6VGw\Ad{(-tI2ZAvWg
J;l8^= Z09]7*Hm΂3訇q/-A1+1 59eݸldv7cRNcPqQ	P:9|ApG#d)P3-	S9׬m3*~_)x#΁֬_7
Җe4|c,BuŰ:dc*FwtvxaSytXV~wx[rLQAY[g
z){hcdkc/1x`~l̊ck:3r5ܳ{U-~V͊'6Ϻvښb-svXY>Ljc;N)jJݵmJF~2#y284I{V5xNTHIw^4Bn!rPfXJ8u,}-VmVj(뒁߉tA8Єǹ[YR"C} OpxQ<>|	WO).a;(ƹoq~|ބJC`'ND8A_<OPJg尲wݸp#{u/q1G$瘇WuV'ICo"<'IW]Mn\nnlӤ>@&?9._!&-dRrKKI;C?t
%yz$0~l
L#2u2W
OC(12DB:S!I	C7w{=ћ@*Ct\$I;8<!h"	L˼4<g?c/W*gnB9VkXifF۩aMXHٖN^gq9>K+h)ZkLPgh*n:u+|O!ͺw;:x6ڄ)dO\C,i,CW #Nns'o%5_5nw٤o9F9Y"Y%(_bAn[un2%ĺ>sEM&\d_]$d
*>X?O򓅱K+#H>7;<B=Tk^?2 uId)
oeϴ$F&Xӫ<.s%gmȩ7On=?l8Yb,jH-%J<;[3!əp.Rt;N(gh'K9yctte }rUM6DuyR'ZfI	-Z)PK
     A eX    0   org/mozilla/javascript/JavaScriptException.classVYWg~>L **6.Z-h0.vH0fn?S#E^7a1=^w]w/8oBW*1)
<^Qp.)ALPq^AJ>gBxU2/bGU
܌0.)xK1+mCȨ00"y˒"%rXP`)
c깔L:cöUpuM鹢{돨3"Xp򲾨t+79{HJpu3WX=:uiqȣє֤iŅYÙgs7;M:&]&m'۷`_7s9O-3ȓFe|yH뮑h?W\sH6,vu)H`\աH
􏆛Ǳz'm8)$]tƄ\5IBA
/\=}e\{W6{H5}5k#s\Z\#Wj6!*_oZFJL-ߓk"QbW",܎9(M@Ch("{;},/5*	쪣&wkt39Ahxix(P
|c|RΌS-Yw쫲B>N`HC16UX4
_`HMR~A/+|_9
qφ:M^#״
ֱ
̹WI̚ԏFjK	54j6k6JXl7Ԙu"E"O	qI"=y ?דsg|Db:9؋fFj"@mh] pA^YPkr9{oz~e*{mcN/ܲtϑ1頊E~ЁB&ʣ9|*Om~ 
xXaO Oջ@;Gj[YYa缷at 2܎݃/%|%c.a:~@{ J
WФy	jxe-VMekMEv~k]BcL2[KhQt]lM<{}\=hfr's2#fBƙ~\.M÷/m~7jd"	]Ii}G ѴrOknàW/;DF,q:@'l_31O{@|J'
eIyu,=
:%l}tk-u2=^92@8`44Ed3By񰞨`|JɿƓ8U#/4mP.aFerO`?l0w;%PK
     A g
    1   org/mozilla/javascript/JavaToJSONConverters.classWWWL12<	lӦi
i ].1jv20̬jm}TZ[oVIJm<_<?X?wfY] ?w ĝ0|ecqEƇbGøbVFVreN0̇p-a,"¹0`B-"4xa%Ƀ>t,.If&ӉE	c+:+YGؔ+yVPM)ښS8q9]вYd*5HŇ%(Фɑ嫓3tz<-??gtSwJEriL7TqiV'YȘUiŹ;1˞-Y7tPc·BNl5O
Yf;]M4S;ΓGkCEIj0,	-] 
,{0*57Y-/ mUƷ
d`8yZG*mMP#\.3==1ief܈ZTY
KVGJ
7tn'K}qlݜؾ2]ѝs8o2NXMUOV
x
X
(|&k2vVPڷ>᳂#UE<nBƗ%<zϾt1h_Wk2^Ru|CmD7o
W|!C-d{x^ir0߷P̾j:}E4L?c?2~gWs@-)8Oj5+Wh
8mU/+8ӯD]7
\
]w
zpHB0o=	skڈV^.r`:hp
k+jKѮ{@鴦漚HxhK6gG%{N4^κl-jU}^2IKԲo#m/:Noc>-lUIHxTʢdzKw$%++5ESU
%tиwKMG78mك+	6Ŷ)A}<;ycY(t{'ēw<e9t2,9eиɗE`#}f7XeIqR%L%%ܱccu&UT1zt~i$l1Z,Yij[+2%}^f
oAD]!02
xW¡GûQǏ ŭ͏<yVU-g+_Gbq[pYb\.G*8}	Kuڽ=mVLJ7ApdIH9
Zޖ`{p
uCp].|k˫VtDvy

H_C?EMvXCDpFqE\s`
{%<ЈЌAar0$0a{)/!W0&*O_p	jqk'̧	=O)N0g$SDn?f~xZ,{J`O'vz:HJ/suӨKʸx{de$ĺ~cd$OQ/B,sjp[`_dEr3ՙhKe~=ʆ8FV>sw7zz*deKn+.nڪmwWʔKYA?bx:ChBa Da{G81Np6; Y'eSe3e,PK
     A ƣ%    +   org/mozilla/javascript/Kit$ComplexKey.classAoAowT-"X1&$&Mjۀы~/&^Lfبi53g~3h,rƦR:7	Ρx.4ue/3;[_"$zC/GTWj{\JB
ɠ+ǢKe'BOhE}oLHȗ/1ex,	 xh*q/FQsۋʿ?!M%F/Cvv#;#
Ń#$f715Dz7=SI,uB<6up,8+g3~hM7a(šwnOGOXWJrSnc
.ㆠ,,!EKXeրKXtHG/ۼmZN0gֿqhsoԙmejFzZe5f(fXD	:3e?fCs`	V\Wخf_MP'g6`S*ig"fX2ay2Q	PK
     A N
        org/mozilla/javascript/Kit.classW|[UNsYW]mRV`e+l];بmzfKrPTDɐn	E1߹6It{;u OC^VqpȁUzYܣs*>^_%9:{T\rǸxP8a8"_Wq~C>)7?|<n|ǃ S܂=4Ǉ:}-Ӎ樖H	׊H,lpnP}HLL
F7JII{<E7iFDmp9qc~(~e$i;D؈'E
.3
,i3Zl;iDbfLd\oԆL'-ѝ;aL;2Ӓ)kވ&nf=ƹo+j56,1X"zNN-4٫zai0'@^>ٺ;',\r
顜j+z"߬a7FbUNGHhF
idMd o%5mmmǶ@SCI$495'c;Y N04N\ѓWIhHwd"Bz2#9=ֶ">}0@K
h=#)p0tIIa<v3H>]VҧFj7}!m.Icfl5CWx%ViY
6HM7poᶥD/#YS<;I5	N+Y
/Sa#)
D(*d=Q2ևx,A\׆2amTҒǶfəڠH
DL"crvo6#I*^:H[M߆T,Ӱe=TsTHI9vv%Oa5"s;Y^+dx5ҭ<yhyfEu6N3mѨ>EW![zxS	c^?Luj$V}YЪOFD֔y)TxCOƳO0(1P9Q3ײk/~/~yq.ZUދ?*ş/%,h_(f.3NOM0|RѧY<9^<wŴYqЈ_!Kj:7V})/ʽ%?%g1YԺeM
ۺ:xxqLlfOO1Y,&&N*ù+H̗֭p3}k]i5:r4K33QHZze1j*u9U4GYNCd$.*K#VMiQ-Fjrlw37p|I2Iy"Aڹ96ғJ1(VRk4[06<(gNQ:xu;5<l0dv6t  ^'O6`|۔jgwu^~3ɧn٥q=gJao&rvMΩp?=3!ds{l[g`?}||La1kMr4gn]Yr'9Ƕ,p ycOicP8plJd[LSbq}UWNU9lI[2D+E*V񷚿f`yl
N/:AS:lNl=vDh糿 *j9s!
b0іLbw4VqVnSp<8xQ0&9v-2i^av;3)
sSr&=;Rm$I6b6	tmW&~^!%P
~Nǽʽ6Y(WX3-bbvS8hd"噸$XWz2 5l6lWV-߇]xQQV̢UVcUY/%%p(yV#SX~hr\H5&g7OT oGl!oG.am,X΁ofY)..f*K,C$o(8W~	>ݙnQF.@(uSz%MQ&:3BqWʺؔ~>q3cnz6Sd<ɝ>Dp5ϻƥ'oely[21r6وq}f.o5RQ&^a6ȇ%(Qpשx	
 ́܋y!=!GWtao-_RN|:'ys7ç8([+>/_$Ns[O< |lbx!&SG8!LǾA& x	|W{xLmGg&M*f*ɮOp6@ߕ}9adq䉥/|;Z8ӌF`Gխb?g`,Ct6tJּً@Df06{PUCVz<ͬֳ9Wk1^L||#4wU0O]zBv)piv'~qc(=Ŭڬ8w[|8| yhT*G13=YlB{dT:[##1#Yfk׹^DfJTzpN6MW!:̷i|6̷B g]n+mCc<UDO36sv@p?*248^Q٢6+cGz>ٞSjPx{(De/7UX!gA~`۳̙w*:9yGO<Y<
(|hQ
UX0
UJ*\cuuGS*湏0
XyVgv(/FY:3P,Kh4X%el{9>[zWr?=*\Mj_:лN\c󃸖=˜qxNpSu*Mcإ20:eDx/Xqu?=l
;`ψİǁFx?!}P,]O^Vs{H[EX\5i9Ruh
q.S|pywk{єڋ8˜>pƘ]L.Թ:|3C]s޸FO=@sbG(PIh'Vbh"q>UX&VcX&т5kZAax+zD4щmCb=B\-6q~7qnŴ捵|iIz
ff*e2oÇQ3'-<VgA4M8J"(|>o%.3)	Gݺ8c&GsK
o17mou2OL\Lï
uAK_0DY3^(I`!Q~/m"K{܎P66PK
     A |:C    .   org/mozilla/javascript/LambdaConstructor.classkS. HNp!04I@:$bujӤ׸7mf~N̤3y/}$d<>gwVڱU@֏k-[F+()
EQwZu↔MwU?^{R-;k.Yv1[/$
sm|1%3W'O>@l*=0:0;NrOC@G٩&g,̤#QǴW-GK`эl.g^3bn:-s)gxWrjQ7g~[Sۣ93:rl~u<٘Kda٢3ټ5[X|&9S0&ɵ{pֲXZ6+N3M}Wh!on({bXrV~YPK2>	xc_KX7FH~J5+%Д!_fcuձI9ff&9W>HAx
>lB/loZ,g,pn&[āoqT<v.3ǑM@ԼyLJ'[LJ$ߦe;g*n@,<+3-9z[xz7
z-RDج=K;ssِ]?l-)] ld,VC'ߠ=z wԾ<N'9]͛NK^O@Y i̺wӔlf?BXٲg388bA#ՑL|adŝ(<F(~(u?n
!yz?OY? ~'`A\KA ~_Iy?--Mȯ
8#YuXAl0<rfN!g*C[GfrlVc
=|)d6YS]Nr4$|Ŧ2Rht25%M8%`y.m(iL;Y]/q#D~ٴ/15:j:-&Ra	2[ٴF{Y'R:Il c8?-y:.CiyEX?Ɋ ޖLS3m|?;>4|\CS<bO>*
^_B OIt)^
%=ŧMJ:M%=MCkUjڵCFqLJ(Dyii
$_\n(b0^N!|]S O<C>
'RtJh$5U&aBIII<Jz)EM],!
.)5fD>h`"}.1s=O2XsĻX		:d5$κoҔ׾}L7~co8ő<]d/(Z4Rsss;EM8i|t:t\nu|wqTA"aU=*@kԟe%]crŲFM:I4&pItJSP&L>~eAf,7evEn;4^Jct^H2Cv֚-qGi,foʕ/>t[Yc~~Xg%Y	묄ݬ~d.|^#TȈxUŇ%]uNCPP*"*<MJx%vWDyt^JWx;_n]wvߟg_GVF5hTFu:zQ騮.h3^`7)u^էbs+tm=752*Bx,Hz_9GEN
YE9~ٓbg<u?n,^^;h|c,GC?
^7B^7Yeӏ%3PK
     A \  >	  +   org/mozilla/javascript/LambdaFunction.classU]oG=c,'m8@`oRG'	APd5hw%'оV"Vj?31Hܹ3sϜ_ 8FY||./p6/q.
ghyt
3U)̥0p0|;K؞Mm]e_@pW,q'O1$`8Zfd;/?UQrr,;VAsybf!|m^ұܦGj8op-mCM*t=N[!8ٺZak{gu۩{vp[:o-51G%[c=pN{;tH){v7[wbC#{abHI)!m*0M)I?4I|G mEoy}[|-%CbixoZj*:>e@ǇHS)\Quu	J
%+֏wv>q$lss3<N$ѷ_C詆o"򾥒̭${(آ7,rYAWlotAZABZ
X[%HއxMs3kZaEsftB)q9'V1W?L*#yИψ#A3&7Ќ
$&64#uwQa8D	aSYq<PdʒxbʒʒX5llv4
ٔ6"1Ixmd[Ѡ	1IL*+@fP>W0bʒ0نJxԐ'	N$udϪr1eɊ+ IYe@so'm]墂`.*SedW%bu=ّJohfթ3 PK
     A ^  +	  '   org/mozilla/javascript/LambdaSlot.classUKsTe[#;i6ӔPBxȲȒG??),RLW]矰dνr3Hw;|$D6x'	aqx7
	׸(=co}TMؐqKmIWwլk֝:[-S-=R21}ZxY۱4܋NmSbTzGg0vhVx~_׼*a8NK$|+ex4-4"7v5h{Ūi{L!f77:lu4s*G23\䠰Uo"8l
.K0nl1([Tێuw?k$O/~Rh.!{TR!\O6NHW7ն
M
u a;}7F@2N聟&q8}w,!1j'=ޡ#ױf<X>)Uh5kyn4@2SSj
>
OSl+8)_(%093CF~c;>L6JY]4T*%74!}媞cXa2:1
|#z]1eZԾkve[/&Vty{i3b~h$1$8oy8Lgw
"YVIw8{gThQ9|+$ ^8׍7^М1k/Fzϳ}=3v=D\~g6 SDKOA	q_5O"=D$&]l$h	9"'X&}^ [F,yEpFR(јu@x"2N@Gr) n6/>Al?C
.R=.QEI$-1{R|Y̋&I]"pO;p>y_0Vej+edZ$e"vˢPK
     A MD  y  /   org/mozilla/javascript/LazilyLoadedCtor$1.classRn@=ۤ1ЖrkK$E (PD%$s-y+wn^W*_G!f<%
<99s_ au	!q/ 6Yy|f>Ix|/xZytl}NIRKgxԙ;;dL&l$1)BZIr+?5/
A޼OӚ-5JXqF"uq$s]il)DZZ.V^H%rL4`6O)m*au>6JRo;1YЊ`)BvЦ[{Xt?awN~kTJ
*iZ_gT}ϋE
]I[ .@HU:H/ULD~5k(\GNs	z_~ycc&LuܬVZ}pBqUlUPK
     A     -   org/mozilla/javascript/LazilyLoadedCtor.classWS[x ٱS۸$d&mCXfCbx$tI4if궙2ݾs%$AMf.gι^?*q[;~!^޲4	iҤYMpBFǪWFkBץ|§Egdgu|ΏC_,s_9_k:1|C7u|KǷu|Gwu|O5Drf:m5Ԧ-6S%
K$iLSf<c4ԍOM
Ά	n{,곓2g=mٙk˳S}A/Kǒ)KCG$,v-'u\51N]㊘sqkds{A]Z]q35:vbk*c`vAy2<O9eN.Zǥ5+Ɇ^
Wmou#3Syꨉ	+Y	#&%c8
z%;?pZ$yk~M:bltjAD]j3l*?Ph9;v?*0k:ܯhĒ|Upo!T4Xq
'V	P"bVJX36þچlOox6$ዙiz^b@.&5hJۋ	84nD)O3ӧ{fPIܲ5
'3N˦O6W1bl~'𼁳Ҽn=>1ЋS{/y ?pC8ΚaǥGáǢ_2r4bU%_eT
,$?Ouq8~yZ4+o-2;lh~sax[ÑLµ]oþ%;,ZRbN=dqSYW"X]/ݙl<+jNr_ކ]J㡡ٜ".#.VOFX*eJY	^A]du岊GMfvV״D<g%LLF)\l+u)1-{˙Q싩ڼk	9MWRY۞ vUV
7qQ}׶~3m
eܕQXxwWT)qfmz,?
%|.A;:{A!]OgRٯeVG2)jVP\dGD9Yv({G-g'Nb@=R\ zV)4#TOeIN۔PN
<'܄7й	_ @wzɷg`'ۂQ0ib%V85fsҠN$f




)q9kYLG7q]~PS_:ں-?@#Y:#pӰ8{0@У{w{5{C	Zx7IobNQ¡5lr\9u\}	aakO'^	>@7Q3;R/kGG]C1KQ";Jfqj$yiu6H?E5rh^xNaJ'M|T+VΗL.(8*@{XJ-*(#T$>&zltC|d}:˘x&tG;߷dbmÝ[8

-P+Z10Us}BP2Lxz~h/T*+*-&B)4w+n(	IY,2EVm&;a1Iz	bB
IJY%h>aꘊEq
ø
3?;2͞ߊᤎf8ܯ:6&YI(OX(ĺ\ŸLiE^kvd4q!U]9*+P$Gjm<>PK
     A ~    )   org/mozilla/javascript/LazyLoadSlot.classSn@=m&!$@^@VJ*H]tA 1TOݶRR}l~QmQU	ŒΜso??~pN(pl&a`K
;G+#\
s\DȩAtXj0Acse;_4T4}Bn~CR@3:=h]1|x)X!S/jO5.Z*E<i{-E2>[
_4FL}!zIA7HG&.a!E̐=u6°;zHJ'hCvL+ua/gXQ5T!e7tyK>/} {iLj4f6͖FYfcA>#}A-bW/Q|qfib~xmj~&Qlhh!;$TԢ6TΠJ2LapC	#HEXjfE$&,]50tQ	F7PK
     A 6!)    (   org/mozilla/javascript/MemberBox$1.classTn@=8qL7%@hR $#gZOH@b' q	hCD{^ӷw c,.2,2ؓf`Y8h@׬V7,2:ڈ@Z_]èVo{/p#jzREAO[oƛբ H/
XcKuvd`ЦЕEyܺLΙ Pј/
cc	ݬ9p:lYYL=
uoL|'mRoR\=R%))XIBKF5>[@D;'SITT_mjg0{F^"NR{tH`iUK愬ǍQ8XF^yP\hp&r)g'aN6Pz8Fp؁XGZ7{T	<?6QP?*Bl4eu0_EJGdxP5;|UZ]L=ތ[!I{lx
rqSVfL6s$F0+<v(HvEF4s-2h,r LT[+ZE+V|_^ATR+X=XIDb?@|UI[V\*o`?Y&asGFY=dG1=^c}̵k[Au-៬>"6XcsX[a{yV"vx[Cr6}E6
Z$YtIbщ4f4-fIQ;1b239EPK
     A $    (   org/mozilla/javascript/MemberBox$2.classVkoE=mˣyԥ~u	Ӗ6	$Zd^M7&
H[%ć 	*Q>"P8-U Ugfg{Ͻgfχ xep,Lep,qQ62Wgtx_ iyyZw֬MY~ڈCoOn?/0zyVU"#;t;quY_u`K/_0P9]\f)_p}giCzlJ$ؖl|ޟ$IN8YQ1?B~th!t xlV2twJ 9q̄Ь͵(0do	
LHntY Z`
m]U.ߊM"b
6b˾huTu\tgN<۱KJ#A6v\)cK{NBio{ADZte
GQ3p:
,ẁO
40jQӉ2p`QY}@3V<Ȕ2%p"0>PEbErBof!b?#,O◗BmIY?)]upd-iiz,؁1e,LNxYx|rub"\?-f5-sV4^߮Td4YL/n9~Tޅ(.Jg+Ixm	D*!GpxG,Kk+Z|\1Ĥ=$ki9#ZJ
	3ݨwaZ*&+Z0fEv[1Qf~`dیG/b<YdNb{.ơ˘]N)+]iV^oSkot
K=oC:J(?!"3:*:Ω_AV˘Se]3}"	7|aQ#(PK
     A 8  ?)  &   org/mozilla/javascript/MemberBox.classY|Tՙf&7L0JI	%	`0	ȄG9L.ap2S*R+[lKm#-
خu.vw]ؾM߹w&$orι|{Oun2n?'?>G:-Ie8>.Oh,C>&]cNvʠ	c]2&9ՁnjP"7280w.qS%OtSjq$dOnn5Mu\E_,4glrG˪dWc,\ó_g%njy=_N.2kPEX,|ML B4M,
~.^WEVdX%ja~JvjIoDXc8qq#
x(Ysd*lF@$.N
K&\67USY@m8骍جmU=B@E.+H$cS0E%qnĀ\m
#0b˓`2MkƺjBpVPăPO6P]g]swa+0ڣ`.).{bP"Mw.
EB%Lr
\8ڵ7F;!͘PhKЈ okӞ#`j!CѭrPO2&1dAppiYn0>Uӂ%R3WM@PCٮ<aGL9͡xe[Lx3oTğ$BA\e$Pӄ!X( dV.4~h*PJKDWb0]QDsp5)/3!
w*!V@7R72;rLDMX
U	~5	3!n`\xmћ jx<_3|kf"?xHxc7%q*e;F-K lnx8^`:,׎4g$21fbw&(LY&tRtNmY% xQu)XpҴrRp(9qx=Cfu@}#u[!,xcfě!ЍW \qQʯYǙ:UMwtu(j9ғL H@yy!Q4 i5O)"SJ&REXGK!mrQ&RA
QU0Zq'[L%gF3?7<FɲZH(?dTyrx) BiJ"J&Kj&Wd;f_[]MƂ乢t1Kn봛>E:uSDkZԣuNq/G
4KV_
ߨ#}NF(L:}VAuDtuӹH[5I0w N6[hq=:m?kuL# 5f4s:}leEow4Nm:oyfG19X%$FSGη6,1aE#D``St m?k|{'S}p-źF$A&*L0AE	?;|N=xd{RGV~7]!90{
u~@H풀y?C|?nu*TB]&#p4Ο4rj_??5]qlJ1!ſ_B.>e6szEڢ"A9FOfߛN-rb(gR踖Q҂A®j>xfFhN~,G8Sl˫G;	_ xsرj,rœ/`+W?R"i#h0@wUdi"3s
MucD4ԌpJT/5Ð1=uu
Pg!t>)h ln2f<Pfj_Rn82J7v		qS5IncrɜLLIC6gZVBQ|#I6@PRK$Zd/q 5zȍı.lui6Da# o揄/%2A~2i$C.H @c7sʹq+[t~(zu7'\;M-lH~xFbD2 SƑQF3jYS4>N/G!dčbhVy Y
ul$6S>
a&h]`߬cF+_y5ˤȀy7݂=X-^f(w^Tpb,"JE䢋6|)".gsC6NeΙ]8?pi>{z}G9e֎P4ŠITCETK% 4RK"h0.ۢaˠ14ƥ1ofIHİ$,0o$er'?M/z9|܏z<Hf qc)RW/)#׳7H|~
QQ6$i$dL6s"B2B6eawe,cȁ4Axaׁ/SqQ	SIJ4q|{l}/U`R+ir[Y4e85%v4W#><FjOӄSt	xu=V7&S 	g4HQD;(n%;<*d ]	߇b*/!2?AOji"3мy7n>=	MK=BM,\Oӳ
ILʄSpש2UvxEH/+­P-1EĒ0Ej7eK g<B3 $?9_C&BsbYUI§&T}V]bSg㰒¿ν?ט.6q|x=( vZx؏%'w<v>Iu4GVRd{ 8{++3`5P#|SpFZY|llM:}&QNֿ?U6ӏi#(wx(?_
J
|Hƿ~T~O{DUy* :}{{PED=Ls0ʮ;DG jOpy]6ev*8C4:vxir,襏#6 ]oiFb^5:>u 膝 ޓ?Mia2ʌ5b
kWU/Q4 n)f#>pGOFtPƹܢ2vJ=3ꙡ8n%T1wR	l fSB//Y&ºg53/@QL3غ
λ ^|zT_szi%Iy%κ|O	|{=vha_N[urbkLz	&TS8dx;m^>e-RuȶO[m>,LpgMd;MgUfA#9E6NBgVO@7s)扴id?<4Og1?6q2et_Jl8u]44ve;߫*|KAC ,DÈה
R;wM7I8bi,o`\M0M}Y!X'SF|#rT7XY?f.̪/+Z~j^*>O/}:{ѥhЅ\+ӑQdC;Ō坡IHC~Ҙ1w,ֺ-fɶ!
uc<7l
0Uk _p-ow^'O/zQQu
LA*|:'rsOfBVʧ47΋R+{G|xkP1@nH3jy-+h%_	_IAnɐSIEj%5]>=D֟P(YyUW"[4Db'Vsniz$ܚj]DLm}iUFqDv>"Pf3νjONSx-Uzi>_Mwm?TV9{^	UJXCŜ(XH%ή4}v*}Ù(i\y(;b;7EqD({vU)y}iՊL~|HOyNo	2ec ^ZK6ImKǁEbh{5$wR
^RpPͽ/m9ANFexN]TǻRCKV$h-OCtҵ2(*MC;ى(7L/o9ftJ'Tt1LEWUH<fb=o*Ԯ|e+b[\L+Տ CXߛ|H
P>GK}pg9M>U$[nR͝Ed"}+A`la6abu5aϸ<L;.7;Ӎ
`&LA<AÃH<-2WPK
     A KO4$  <  *   org/mozilla/javascript/NativeArray$1.classURA=@ 
ɰQdQHŋ008IB(_UD =<Cݹ{;~)&vOlSb@ f1`^0JpUa_?3f^lF0ː*~-u̇X[pL}kٶY b66?d詩:y(]p&C-bNlY>Ś+X`Rǥ^2JzAκTcsrez7ւkY|q)Qu^}ߤ`Xz`
LPRUMz\P1HM+G'IdXt͚^&~ы]GB}V09-PD
=[%-9&ԩˎa쮙E,hDfVmhW[
r*WT3(XUq^dګUwCz}z8oXeRW=)%}T}6ûYO&zsW/C'J}]O(}O:rnS\z_]C!1B"dIu$iqmTF+.Yp3#.d	>$BFn6!#bw_0}1Z-_pnFNQ?O߃NcpD:!OR]ɌLGcq	,ITBT]"C!7:>bHQ$Ip2"i6 v&ӏZԊaDH	ed1n (TOPK
     A _&    *   org/mozilla/javascript/NativeArray$2.classUoTnq⬥]h2FXҔ-mYVƶB 
'nñD	/ x<I?
qznWF"}|;_ ^Ěcxokڽ[XE~xCǥL,긬㊎e!/ Zn(`SB铭(;(	]o{ڎ#7dOowힺdvxQ`:ј&]ZJ`ijRr!hӳsM6?,$`6\WˎEgHW^
]RUg6J>Z}z7<^i2Kݑv
e.=_lKI4p[j7"-o!_I&[-YxWx@Qu
[jGR3rŵ/5x-oX	<i8FMfM<[x[
#p:
mmtGZڞk]4*k
燪u|QI8M 
"5EL<ia#dr3OILUqg!-HRM|e^Vl!n'%{NN9P1^GF:X-uOj,dif}djjw GWqC})4)c0e8I	#*Q!(%*LpbK9gEVEN- c74c3tĜϢsva\(]=B>wQx^'fC'9GP4>Ǆ/SS5ir>()J*V:9q;wH͏G(ɶ6V5)Ʒ4K>wP$9+ƙ>ܭ{
Ob'z-0\O54L	y_c&4Lhcs3X&Y}	k'蝉~PK
     A E  ,  *   org/mozilla/javascript/NativeArray$3.classSMo@}ImBhKh	mBr*B",Elnv"o ??1Tz!<~fO p'<AÆ5lrXSV7&{~H@XV~:K)#?ѱ
+uJf?U+9y$#5p@']@:NeZqfs<mn曾-ݖe[-s+Сpcr]0uhbժ5e'	5;SH"ls@l=tc-0u̢c6smSbOG	WHqX;G5aH;jY@.GŪgoiim'ic1)Ixۯp>R>R,
P(`I<H4=s>Cll
!!Ri2Cd$Ey`!E8Fe >qOF"(JLHO9>.I={7a*}/}	4
ӯ`5oF/Kf?gL42I2a,AƿPK
     A 
*^    :   org/mozilla/javascript/NativeArray$ElementComparator.classTRA=6./!	 
K7kXVX\v
%o--/~e&$|9st~+	8pd1D0("0.aB¤)ٺ04-ssy=dL%*g#C;+H(EW7up(lZ,C-C.h5ok;s9`z`!vnjkŃmEZV,MJ0CC;L,l7hZ]:
C(GCWY~-ض8NАx~ɞXzC᩶#TC7ӵ2	x51PÊGrL''%hڒekwAFI#c32bhpW,RdCJF:Rz%/gH=/(TUsCgzH\BihO{	|t7ey'Kk#@iB2ihB[ڷVɧNY9,	6<A'!xqucVRԋ
ުf"U	蓨(Nĉ;^c7
9
JRwc|Pr!PʼG0;AAH|M|1>>8G7@OBӘ3泘sX~aja_*z(±0kOO i݅oPK
     A S6*  -  =   org/mozilla/javascript/NativeArray$StringLikeComparator.classSnA,lU<[jm	`R*Np6|	ox^<3?O/?};Xtp7djfc*C>Zr#t =f֕BlJ`HH_]Da`oJ_AW}HShr"Hi2`(~)_r͍]xTԉ<#<4ny$h͏+Ә^fzOg'52zDc:o0od2̵e&흖.4s3;mK'(VG2b7X`6nam9AJ2^mmZ?c53TNIݎa/۬Ql6mqm`}PNE]0	>Rp#t ME{4.!#L| {NEJ'3$g(DȰs`ՏiuZ/[x)1tJH;10jIQr̚E\45q$+1U\:YXY PK
     A ,gQH g  r  (   org/mozilla/javascript/NativeArray.class̽`TU?~}73y)L2CA! LQPĵ

AWum]u]]}mk9y3)hu:o{o"ɶhMA	!<N*NI!d;5$7N8gY}vPkBZ
bO1.sqq!.₋9u	7us67㊀1`l
ƕ㪀qd0kuqC1`0n[oFw0n	ƭ㶀0n[c`fwD
nh.vr!}\+d6WySB4xG(?xO)~<͏g~<ˏ9~<Ϗ7~ȏ%~̏+AUgΩ7mim~gONkzϏ	
q}O?>7?W5wm|uw|o1~{!GAE&(t!	%4t: cٳþ%/2@LJq-?l#"ҸUznP<F&?)MԫpllGRQnޙ[*ۍӂF]rhT: hV*?zp@~b7Cϩ/
я)".G<ƃPBSTCA\m88Rog$28VE5cX5ѷ&r$[UL}M4ΛΤ?ConE~ɘ>1V!BͲ40gF_\v[sAd ZyG1h0:qcAW<*jq@U*[C"x,R2~Tc9P5U-.Vr{k#s[5ڪ)$zBbVju?N抧pS9uv Ǩ39,~͏5\a-?ǹL7j=W9S8+&8u!c.%5#."Xmv;.cd]Ε~Ï+1DjSHmVWUj[ީkԵ:N]oFMusHim-!1B]6MSz#-V~A?ıv[m
Ő/ꎀPw]!Q;B8Pl!Q@Aս:M6[^SV[WSoSX_]tJqZY
ꊚ9eɂ64V6Ωi]͘S
9sELℊ5KL_<^8N0i̬9M6ԙRW5eUjKa22lZ1MXT>kfٴIM:c1u{kj\Y^>.J#NvO8fY-+MKihs1ΚRWYQO~ݺ8g)A6U2h

 
[AW65,c0 bn%CAAzr{ks\7vwBHHTps2]t˒Yn;j;/isFhI]J=lw+*s]Ǎ`I>^5ם1z2Xq
湝3W9mir h\=qytZ=ꮷ'ȟz鳦Ϛ?å$e%A%	AmijAwmJ4[h
ݪ3M<($¯ DZse_)
en;^mKP!
?kYJY]Dѧm)>i3hbQ6XcEl
ڔhFɇ:-qG({Sik1zZiTVp;ԄP1}uUjAU	.^[b}dU+VV7BÌXYQY݈܄-V6l̔E3l|0ᤙ.8fÂ@)]
T0~u'+*W6B6W5_yX\t8
ʜR]ִbq~c>*)+W	? $UгhZEc	qhBM_MvŖ!!_j4쿆*(cY#y+F1<`um&쎠GLK!P+*tԘ*)h+yj#fZ
 3_J}Wb5YjʴR/;cIzqS#BfAF5U<rfzY:0XA۱3O1G[vVnک-(Np+X#zd}c5#xӆX4nWh>izBW+˪U~~@=۵A
Oj%0 I{:lA}i0VJ0@io֙,o+ѕS۱!'W,N?ә9x!XلoxMNce%N'GLf:Di<֟	Rir;=kZJ|lr L15~!"``(s5-D56q%vBmӊxCh t_bV6Ǔ
)M' 9+
qN$5ڕRݠTܐ,;բ--zݪn_Z14^T{}ی~ee{||IESMz֟gwjSuBMϜnTs(q2X)<%%gg'6MluJ?Ȟ~bm{<M::Q=SF?Cjr]bpQxq6җ7K5*fvGuaUhg	
VJc׏W4V~vS,BYGuʨ`L+Vc7,$0C3ΎnjL쌕ȃ7<괋#quW6֮6VBRkX	sÐlVp[ uKltv`y_!u7L784D%h
	%Q">S[[X5Idi8>z9ڞg=#@MX]:S'_<	dumf	)L3kh;y&Kl^m@\9;!lF[3+NtX?M,t'NɁZV_w"VՐXU!e9lS$
\`ph[Y?!^]ƒ&,Ni8zZwUcj5HDuҍʃs<*׆1Ex@hzqEqZ%~hJL;ǀȆxV`8Db$iI0*'fQCIq[0E];|z {05K܍;8-$>W'vrrʱPe}b]qs;sF?]ywDAGEecSEx-<ƪn(#7u+!\3`T4Ǘ2*iĞ1^ݒ%
,[lBCUT/"٧,RɬLZ/bvHC4i:9S+fIsjd7QШ\ܶaIΥ%PSרC
̂w2̕BO.g!
)3n	
6&^28w̏jV"fxᴴ<R!ʵσ-i%#jgttNa'Rtoj*ӗ:?B	Nx2ZhS!o	S+VPjm
eƈ-#FIOO7.ϭw7V5H/ҟg~VԝWF	0e $KcE5;DG
=i? Xu0
ZiW<Y1M*[_밴ySZI
Vξ۷m_
wTPSjۥMH/n^QQU1tsiFNEzAxPZm`]|44-y\YٳϢ1!T8MO3űχ@^)/ȔUmqۂu
W
J6̍s[ikI5	iO&VMmnlubc,1G(pd]jwO4tq4P#r!%zOώqz{NSOQczԑȑ [=(9.y#!8YfdQO@"\[[Md3m8iLϠ1]>?؇toyp5NYX.k߹2Yđaߩ=\=3*^7ⰗoZ<}ה=S<ZyxªJ`YG=-`o3zVus)u󲳣^PՋz1Fcl2Z8ёW^Q:<^?<ڑOɧ|ݑ	?޾7?aԈ#`W~t3p|NG1? ~b:ơxy"! mTo16v;H*ʄ_Vѐ_[B|Gsc܂';rQ9QNrdy>r_ '3eS0ݑ3B~ș&9S)wN%w839u߶SQ_kG}uw(Al[}s=kLwԏxȣxfcy#+b}H'Fm!1$ c1悬LCvLei1m=mڎ<A3(-Wxfcif9f'3~8Z6s@^RI<S<EȳǌȾ\+"}lnEo_\QQc1j$A?ȇ>v<f8fwq
xwiiA_ӿ14Ѯ1,tEbAE:oWmG 0s031 ;Ii:dy#wyבFfv̓y
Th☥}'yoOU+j̛:%aoSfy G#ntCQ|X>@hMuuW/ekv@zf|ؒŎ|%ςmÂ%sc7'8Dscn9<y7Oqю9<b}Jo3K'ZS̩/a?9͜.hϋ^\f64G:\6gB9˜s̹9`t6rc.489&19e؎4B6!cq81+̠c.6+D%fc.ep
qBCr8{=AtW;@GhgLp)@YcM0{Ǜ,f8(w̶ƊƸaղߥ& s^8ī=?_i3f	T}K(jHxjyn}ʕLM`q9ј6u_Z'tl>È뛜چ+aū^y]mʤ߲?4_}S  J~ARZ:%Օ-㘫X@oA1Zx9m]?|:`mtLr}yBЌ]s;;1'À͂zT+>=YjO}6}֢gOFI~BN?oeTͩ}Z 4|"!@tK?y9#mPDE;vFvRe;qvho_ZWĞUo*Q|HCT|uC#pO
,_)~sтcAkm:gb{jTǝ^Kae&. vs݁Ouٞ!ϫtt&A'L5lfi	Z(ieT/%ǽBU͗R0/Kô8?wŕG@b?qMɯ>B_h+3:v)?l^1ͽfp4
#)@lMDG{I
*qf-zZFVhsO?PPTkEjw=@+䯢Ow*۩"γBދ'c8_|_`*ƽG-qw+f#r 
lZzVN"sC :piy6=P1U36sҗ.I=jKvōY3nW7	45Ѐ!#zq/B2]!؁+Ay+-ؿ=BOvt5+-όM%|̲ƌ2a	˦M0KnHLzc"nW{b
">} 9)Wu$ Og|*U3_d{C̱͓\֐KȻ6MuUZC[YL:{M+TdACXƊK?8</ݓZ$^zr9!a`Yٔ37<:t7PZ0^WkĴT[~d;Z.I=a[$~vV([S/?_bεu)?c&P>ΡDIRߪ5tL36NsmlUF~5/Vwj{\t96LvՋ뫫~z̀_NǞqx޳_N?䔕/7}ڸ1Ϙ9ax6PG &n`Ӻt/,~OJ~B̲RgiW
@u'N8^`_g׹]G2'R>obXc]_|XܠMWt}_hn}{:6Sk$^lr3L]-Y)7K eJT1}ھ*ھoq6ZpJRC+s$Cz:vKk Lev8!*
ԃ8z:ĉHҿCLgk 9mkUx=S_ E)ŀ/I
xR&x)𕀯J|M
|-Rߐf[R]
|ߧ-SୀH3)v;Rf;S{ ߛ}).S?	)??Q~d
Sg %~_S ? o)_I_Z
:7R7
M~
S ')?K?E
o__:)wOg",u}R"ߚfk,jOҔV t9OA2g޽$w5$gQd¢jz45T&LAB4AAP.3LEB:a-2,@̑QٛFW]Hm{}z<K2<5IB8nSrJ_Z:xeL*A,nr
cص"[m!eMwQF}ݨnY
*veM(FYԩ)z
F*%R1t >4xN3&zF`+?6IvH` #݇>%i|E}f
S졈:%X]SxUE<]ky<M}eʡG<n_ʞ.]ooWpVcwfudo닽RڪoGZ.k)PLF.:1JdNCJj$BPyMR ("ͻkDo-,Aom5h̲,}XxS|*dsܭXURV*1@ { fa	ÜararZa!0?wPyܡyvtJ3AgT,TXyT=Hs0m*,Fݲ~Sw>owɒo=7վJ_{'}c}%_%%K>&OEIpqW$	|>
H&I$nxhg	sKvhX@tӹHtzi.\Dgx^BWүwt)m
 ]FyzCB&щ6JQDWjq(]11*H

z{w2|g>L;>O<>.>UXuMtŧ7>h|B|Y	:|.g>7) gO"68(E'F эD#9=9u}E"'z!F5>H9}xs
xs!q'
EHH\É$.D$. $pb 'sbD5' q,'F"1'v(81
	8\g4Cxbc(䜱H:HdK54iw!1$j<|/,`
@G[h3;;~O7ҭȹn܊;vp7vnj%줇^z9O}4rAЋ՗Ϡ
zFw1 5?'A1O}z~Gz(EaAI/tȢW@Q(.b(Mѝ=P?ED1(_>'|\%(+1[Pwb6 P^qDb0r
a
" 2(V4qpCokENŅ"\DlM"+O\+§&n+[E@m|ޢYR v~EğE1| [x[anPNb,y^%nyy;~ޟ~~ޣ~~޳~ޫ~~޻~~ާ~~޷~W<}"G?/E$,?zy=~^7~L?oϛUy~
?owyyyy7yyyy{G?}kw\cDR%K2tn
C^#[}0pLQ햌jMZigu6^\S1sMZfE[X7uU89ꩲ_#w`IS}7jLZ6Hχ|Ϗhk5+gj|Lg^u5 C1QT|R;fm]45fq?&6z^3M⹙f##^avD,\5ub{;Fs4dDJy\w~j:OSԱ~O-S~O?O-Z\%G,/\Wh6A+ɮm?YK+۩T݈ĪO0CUY q'1\+A.q(iʭ
Ql^@mg,ֈ?sœb=
qP\*FWʰIr&]r!k=q<C<,߈')!*O+e/mEA(,9Jo<LJRNq,Щ1H)"kZTYZ
2"-`00ZL=vҢ(8p-0;'=<(pboQ &Fz6uLqS}	Jxj('yNMS(0ʪnfyr(;]ףyzUZʅ*>J G!<r=HE2C6zN՝؁<F'Ɍ[ڭ9&HD9NLM*hvUOo<;N
ã0iBm[
[
RF#THUSɑuxwmύzV=ꙭDrR|Ho%rԒttv+A°8C];NqhHLYMbQALbaNYzaL QQw`O[^tN3{u)t^3-οeDEv=Gдz)aސGsa^@-VLݛB2]fo
ʖ̢ed%A	$eZJ
Ym>t&1f%0t~{U$G<9ɃoPH9OZzn{\}]KGoІ
WR:pL2/CȄ\gP$e{ݎz8:ԥٳo"pU۰3P"S{7NWOm$ŏǂA
^ri9c<+P:-)8(y7{i+nIyo<o6̃	6bC+։]:nnTI9$[PNNț(IE`R9oLs}1RD=1RKm\$Aaz 77ok\q~K] 7Al+7߰;y|>HHZ◔E¼ax޹I]q%cwU[vS<y:|&#8]L@Q0
~x\WIe!4[.RZ*i\Ng:Ųut\I7zl	t\Eȓy2$OK/;^
ݯSZ&Nu~ۅ8c`z[o>Ƀ-#%o]\>ԐgR_ysyasr/IS *0t@&w0v%L5Lp3F
WS j"j(AEc5	ÂưP$QЁ8r͆X 5A&${_nP,`BF$~M4PbF6=:cAF\oK !yxr4Pnr3
Why5׀z7&fj@W4VJ`-DoX3|nqr>i\*Yt5rjH)l\.GMi<N$G`n]Sl1u/uGbZ K(pC]aV&0"&%]?^a~ѮtԢi8xf{w=\1Z1nbo3Gsf٢`f1`
.=R̘W}@$A,r0r']T,|NcY_BC.a
1àIGj,ʤIr<TLyd!\ l0qзE_r{mLtU 17ӭ[ٲ-8WYOi}qy,XR zU?i7礤՛"ON&bY{vx[o;i[I"wF?՜H%%8,' px˧i|&E1N0
1	x'lؤْș:2Vxc+ȃ~ON)bS|{1E`s*HXdOlrokpm;fg͛͝@MAse+Was:l7 OQHR~zjL^#!t   L|-+g+]_:܌a)t]ԄUp2*qkdX Xk	KjPa$ _p;Z 3;S>O}oq<
@h!]?\16SH`9* Kȯhyg4$7P4g&~c!P#e>/sSujn]>S8=S,Ӿ#3fyrsnTDNBO[ӊw(T?dSJII3%g򛍔~Ѐj?\;kY+3EFz4ȡR#J4ȥFyObYZVNk':@"MbmaL23:&P/vI.tqjQj?@o	s{;),jV)劉bNzTQ"v񘽝 	m"+fYPnaQv/&Bf`IFV9Dé2\DѓBF/j~4(2Hc(-14T 3VSH%涋K=Z92tKe2-M&)>DTn;>
2?t/t}uQ}l7}>=E%u,1k>LO]&)/F _f3e
c&
aY;fb_`$sp3=
{3=_)2Wr}~߉)^A$f[iZp8H{i(͌elJbY;eAi,!ϪG,ʖi&֩|:L9;U
ciQ'֩^:Ζ}21ȳk[ptNol^Pcg.
s
rJ [7XxޜKZȡٷhHhz4wJvifdғ,9X&/ H߲^
鑜0>EȣixLL QʰG`11>(*2͏C4G4˘HITaNj0Zc:ò<=4fuF9l̢i13ߍyq4}j̧EceTX0f}Q)*Qc,F8X.ǉ
Fh;: 7sF!eYӉ-r3\FU16ը`xpLq[.Mg^Hp*R"5Tj9"ppU^^L*1RR^ˇy#B7^P4b!q:s4S5B#~gFB-0^
	`Ky`s.Nr0ϣX@[l[.DN$<Ǉp;Cp'ށ|#G(PwL$$<]k5(ֈh<ˎG% )5
>+'f%6?c
ra:>:zw-srp(-be\15,=q"t*r dk]y*2N<|q5_En4iƹn(Bm_XvIc{L_Kk3K{5iquig2Bߋf{<tm➟q~#hx;׺%myr[Gޡmpܹ屼MDi|0]"ڦ
qj6\dx6fw\>=-61
l$uet6
5QqUChQ2U9!G^n: 5pSN6PG
GU<>Rþ2OԆ=#`$p=̀Q{B9i4e:Q'`q'[+tXZ$mWAgk Q5܊Z$Q}bma9	>q(
coEa;`$51v1ƽt:.3ˍ?f!x4x
	e<M7_{Ylq3^]Ew1߇ÌWE")
շ("#FP6CUJ
c;Uzӏ9al־hc 7mQzh/h!C QcC7*!G~O.tqPȦ <'
9βb#9EkoX0_r#X)I_Љ_O-.,*1I{ކfn*Gr,Ρ ѢEɐXB}Ⱦ`|_cn|Sb|F
ZƗ_;{KK}STOsq/eX˻~{V.>jVF=AÆ-DbmREϕ2)KԊ)SR
aa'uZCOaOAoIwv)PR|jSkuVuBϩlQ:@uN9뮇&GB:r_	޺s,Ul]ÖĔk'>?Q]+WI>+;zx a;=V^?hlkauhu$)z;sSqu
\CuHfQBնu2
G2T?A]UU%>af}tHFh1VjIst
a<ӽ K׻lbr
@_munRP
<5TlT/>+e>@ki==H,$"]] ]U#CJAWGWOz=׳%b̻O;ѓo1&ޓo@`Z.D5bZ(KM\5)G111I<%v'aS`Gl؛|o,d7ߖ$hmX kv67[8A8x"O
 MҍaYwEdKrXӰH&z"܍\ڸciQ*h>bXp;5̍4fw8:dnh,aTAS7hUa!w!E67BcYp`:C#j#eK~8"چ:C7̍DH۲¢M]
^q4cٻ1#Mu:CcaYG3RcԴ۵D*&S]DIퟁ	Kj4P-1tZD#b*iU橥P-%S+I5I֫&L@76Q'zJFQgLzGM5:*狐@dEX&1T].UXILhuhR׉S
T`=πs4/^pʒ"!B~$9LiZgzS>zLz艹{g>d@o:.'QjRh͢b)|79HLfu8B!!&P-LnL5+Mi{P{)]:OJDPO
3=S`v4RM!Nn&%׵^ejyxdwүHǣ ݾYmra9=<UgY%ќb|U}aa_ir"kuO{NrO(/d15#
``_KDM&D:*]٢tҀmvrEi0NKw4d#"b!f4g%:I\Ĝ逘an$qk+1eL;[!q5P!N@<Siz$K.;,b"#0?ux	4cqËHsX:/]AW/Ӕ?P>ȌݐSH;@߃TiqՓWOQzVgTZJhznW/=(_VuzFISoKmz[C]!{QlDXQSȊ!+R*/#6QM9t<Mf`<x5Z	$#|\Nrv[B-đa_9LXˍXEb
b|[Gl
>/&ji'Ktw}Cb
3MQN~d%2	`}ԋZ{/˘O=!K]4;i0E`Dڙ`05測aLa'T0;b1o̈5/{pXbo˾gO$y7Gt[1FQjzDԌ𴘊YA#5uGufѝS XA}Ff))iiС0i&|iSLt:̠sL̢f'@v3G@СESHz(/ULCzG;MS&K}Rb&?BtH9c2s:	wpǫv&((8OLj_HٚB܇GM0%w4{?RX)xǇa?Ily0Ll}ɮi$dM4O1flSW9F;ā;DR6ћm?VZ7,"VJH.BHh-6\!Y:U::\y0@{%@bvOQ'6"3D`:AHgJ(1n4xZkN_
p<n5=ߜDwx԰7M
2W~]0b~?wK?o?oAi(ͣ@	t-砾@_Bƿ{))|u|Gټ?J>ԴGLW<rM)ۮa>va0-ˆ9br
Q2}}ד];X(FwfɮM]LoډcHɮMa j֘a%Y
1rc.
4Q91P5uQ\DgfmufΌӝqGs=miXA]' ŞlXP><><4C[&	r
=`f߲ vCaLN8vkףc>7jgԻ<xCqN{噺Һt[; -0M|L7%wk"un5`NnZE4<3O?2OE<jͳk!ϣuty]n^T
Tg/u{y@SF.vrKi)KZ"(۞/?1^eeK(2/I<g0N(t/	.`[ڌ@rzܒJP*ꡋCR(@m{#b˱W`7b7a7cF_EW5ҩ捐7ѯ̛"([uyanF;%z#gާ	$wAz,efnұhVJ}'}'}x#|XKAtǸ1X~"	{=mE-I*֧\̀_DNoEEZR2$dɥ1J;jX򶥸[_&ծ|]R\7zEMQ
nMqUř^Ѫ?-a
zHol	gC !(̄`/>[	j2=,c6iwmD/N5e?TLx(exL}w oiFi֩t!Τ_I]ۻ_i&-wR*v`9gL%|}6JTZf5)4dbe~WCrtH쓳(.?$#7KA< 7CWXHV
f\4APԩ-:YX8' ǋ&O(ñ0PF ҫNh&ńbiB"F4
ˎd>Z1" }ؿ9E_b4;͉flk=*Ek҅lAFA-\H˿lkbNi,:thrI3X͔	~3̶{3
}:D/<Q4=znj.;3{bټ/:bflBsܑG3t oT#40HO'z}dWĮmˉ䰁U`$Hsokyi(/Ji8Cpǔf2O4|JϨ%WTb~M{f@GݚkUX-VZNL:˲W +Dtle
Vm:V6=cVް{V}c'Vd\XX%b_@q5Hi
!b	:k8:Xn"βFQRklMwY=Ekx:B|dM_XӤe͐Y֑2Ϛ)f9Ě+GZdҳ(k\f%!}U)5U-o˝qI|ժY{ıt .Cѷy~^1Va	V2BXȥ#)%dTZB我4 Ȼl[DJt""<-.+vNmXKH\<'q$|ɓio,ϐ|¢y+{iV K
w`#YN4@#rDo`dh	~:uzy>=dJs6"l8p
"8{iRS;
gahzΞV{&h`C-ѝB'#@	DFQ|(&Ji%:YJE[1k0}f1p#FZfZ7&(:*ʷN4ZCí4:Z秼%m؍FF$(Q]ܟ(3]XzTaR^lW*@b93CFms9fG{,m=s+±؍~5V¢h0ηQ" (W_Ruu.BkZ:H_*mj%uںNnӭhu;mBlF۬;}e65@p#
k*΢Fy>׬N%md諺6ԦJ:P|щCcos/*qzdxFb"ڠYX\Rf1B|0T{p3NXR7)?zz9쥚ΐҋ#VMe瑻ioPŐVIi ؕx*x=u"iRPKǷ*.nB?Sz(V8f?I=zXϕB|ݖr'"4^c¤tpҋ$Cm?AAoW7<C4A0	G6!M6!m؏אQ*YVqxO_zhx!˱q2;H,Y 7[/`^,e?(z[Q:ހzl.-˽O5Gh}LgXO`-|JWb}A;/b.Zgԕ)tZ4#3h
0Z =)ŖBot7Z#Mto=?{{4OY:oi͂lz\zwbH6__Y
?q*)`>vvamkwdYSЌ}&*%
rEXpW?Oa"r(S)DJu|;MіWJv[hK땔ÑdPI(ίTlm 3Xm@u|V_jwc5biK
/&ʉ-)Z>绗Tqw%/!O.;xݺ5;{[S$,;rm\lJlJW:F#hݝ=h} Uڽhݛ>Ktݏi]L;q{J0">2m]]۰Y+pn5itwחӱF딫94
֡Ge+VdїFɖK{ A;MB)=/zHݼ;{(_|

P=c:e>-PLpVḀY_6'K:djAt%mIwW4o˾IPNH.$$WKy Q  1 i 4ITfϢlZlͣ tGh>n? ){)^Foo{9}g/^[On|r[4#(Y䓛哛哛哛>}ۻLO[On1J^魯Ko݌<z[	ћksF8čob*մ${;D71tGl0|;y@WL Jī>+& UTda)wXt:>fg|,ȼ5 s@:<^OWC/!bȼ_ }9eoM }%"d_#2썢}&m7-4讉sM"*$*D<]Ik5R	KHK0<,ϴ`w$GPG}=LkW:Sz&iMgO.- ۄu&_ɫSԌ0kÑi]~	nwܖintnLogHz{6nɒHx'Y$	 ` I A^3"  TNTxxz9|©zf%=U3=SU=]V7;jG%Gv,HSV6]泤Qj,f"[hB|bXO@s;t3
o'0`忐Y^V`6qn.nc[9UW+մZh\{L~i1m=Mu5<O~0}F[B9O[-zРYQ5uB
Gf:Ѱ>İWrp+%o$+j%ᴒVN+ɦޖثl?dR6-l [Dΐ3B9CNNNkr
F׌hP B*M`GM^t N_Mw*yX3sMՎfu.+
g,H%#ťMVg iѰ,5gDւߙux1G+\Ȼ:oByF0<懰4:cmv_Q}_K
5cI6`1߬]fz"ldX𰩂--[>%o@'JE
a+)&RS&V
\U*e^Եĕ\6ЁbC7xeL`%JHe[-b%[!~p ^
/@
\u#UIHRZNCڃO,򐑼0!8>7Ԍ@yU]"
M(=Kn:d/M@h킏S-"i'2DdB"KShVUXVaZ
*B2W*ĝu(XG:Z؅yiUFٕP	I`o=:5уqLegT>*"rDkh#)`͐<oC&HW+sk*R[f )F0N܍PPӁ,;aeM,.*L2-RS;׬atZiHb)?p: :TF8?fFXb]<[ɗ|tAޢΫIg)
!( ,:av*,:(]a#Ew ztQ
7!|E܇y裪}1VtH0
:(~atX~	25f5>	cڪj+6V(4jV {3g+5țYNBGh96/ѝq,CH5d%(u,0v/&͙RA,&,Drn%Ƭn>[ Pch7	KRGz4
>3Fb)ئ19#+QX4ЃҬnQKSFUG܈I|'GF/)
 ?3193ů
2@h)A;1z!O\|3f$5;0Syb4"b,^\xh91*&b2b
|)Be^1Pj\m(4\nKyHXSxWdZ#y7ũ4\wL!1t媊LI7j]=yKW7	*`<zO:+׈62Z5RiY1yշ$@*"wKcBzRW~D<?_WcS/bGS63S(T[uJ;m8nΙ&(~{c
hZ|E4PRA姃+\z)z%+2S} RJxozo%4+-d%H,ɲNY`7Z$ȈX[Qcao;"&Q<b(1(91o9;-YW}9`H@rЕNx{siHQ[-Jt*Kzst,v᮪LJiskfQ/Z[Po"Qm0H,j&0C,9b9!{
X/ab$V[b
Gb(iqC,,ìZlacţ&,`KvL< aNXv=3Tcq@+AD<_ AM˃G4!1c8{9q)7A}8̉LLߺ̉ELWjĂF$aw(5
xMdc=y+}+86@󉀙87|iCZL19|Lo|4І!mT(B)x;c5H{ 'Z 1#)1A.B4Y1AK1AuHQe);HBn<LI;bfn w #[)Q?PZհ+%ޮq%c!LaIt()((fhZ_"n!\1ؽxyu4@MШ>;y0LlJr+>Ul(
])qPr~]

jܲ/`*Sv	щ"r B.§	:8ln΂~'waEP3NWUi?rF wd#oQQ^(3JU"Qy+|U]+w~V܅#hfMzHw߀%K9#s`0W?`#_F7.W\:`GPS^ޏ'B//
l@ęh%r7z7YPiٻ}lӮ9FCF:b|P}DْaYkB.x,{kJHyW^桝==:qOZZE*?^hUfۂJC
XW*xV\_Iq}ϿV_@Fh߱-įpG3<;E-nsP
ݿ6,@
otܭȽ-}-a6V$>)7;!熮.6uD0XSL֍;?ZesXSɫa*ZД0uo:]"$n'٨cvY'r(
!nő}:B)ɵB7H"Z%7h*v%z[f~֒6X]*1X1vFU8s rxyH~l[QFΕu]V_=[zbs*C)*L74C%?t.[ggBG1:AA{:rJyRi,pM;.}66-Y.g|]-K/"W"AYjЪEF
ki.eQ&hii,kJ1C#g!EAա)m
$"EkЫK=AZ7k=쇡ɐVP3d5kvw0;g%3J5dN**TL"T 7սV/B{vM(۞$%B?@mK.陋4Z%9Ks%=w"%(zJיB.5*K,͋ItRK,%(/
_:}tؕȺa6lSYd(ia[#캳
ad'>0:
OjNSTǯukOlO1k
ެmĊI<9')j0R='mbi:W%_I-PO;4/S.` oHzOOHlvk>+jcPOW-<f%Ǫ76VGcŴG{/h6DۄTyr*mz«6!kU
]@h^[x~=w]ױyd,GSaU	Nގ#x܍)Pt״:k8e{3ė@">;ďy_%GR݋cӿZX1Ev%m
z2NA=!4=p1.%}%xBa<\MB_[*EAx8W;mupmux{
_j[mU4;	p;>«
W)Vvvp3lp;VᲙix8g#'
Ď~$.R!;N
?`wVN;J8_z;p23	G{)|#/SH§Y#^kgW(!nvs
og %Hv.\ی-@!ڝ-j,8ԾU;v_[P[ϴlٺ創g.-¶vQV%?	M'm:ٶ0]oKLW٩m0cz7v;L;;x;
v:#(CLLL1L{0-0-1``niSaLCv.v^^5kU*r G=9(#JƏSy?.G/e-?!G$Fy
?#'9ɆrӌnFe49h%esrQ((7F.o1zV/Ur1H.1ȥF\fˍy1Z0ʕxy1Iޘ"30flƘ#:c|X(7:ɸ]>dNѸC>b%w˭ƽQc|ܸ_n3'
)c4pwI%OCG4tLC5tBC?h1
	
4fj*Pk\C54HCX
MuyZ:
NCwi^
ݟL}ݍ
h!vxBY@/_ߠ?GչZF{ڂO3t]zkA6`^>3׻K]"60:onǒHqr+h6*X
Flu?VӠb/RҜa4I;wdf
;SMT$>w|GL  S!S /#R,OaC1\xJfcc`q"f4J"-C8PK
     A ~h  J  D   org/mozilla/javascript/NativeArrayIterator$ARRAY_ITERATOR_TYPE.classSmoP~.
pm&BC0! ?,wXKiM)KW98?xn"1&xs=/sn7 x<6d,˸`Bhrj"~I"H	@CjԪMhZ[{VyAٶV,>rq{ZyoZt]r<2tjrq33
gz3v5L+('UWCn`-~`щfhe뢴fq5=״{ȉV J6"u^4m+1, T˵){cDfХJpD]kܘȭ~qNJDMi:Ck<5E+327Ea.4;21V*Ẋ8*B`X!Եإ;84uw&;?:Y#2MPޢGH/Z*]trSB/V&iG@*ɰS(~
mORBgD|`*2Iu }X?E/2#d-DjD,NB"ro(o|C
B+Y
pG!FXh7ᗌaWI!21mOb	PK
     A ɬ  <  0   org/mozilla/javascript/NativeArrayIterator.classV[WWN&a8r"VZ/Bј$0$Cd>o}ח>PV)]oO>'cȂjʹo_9?c2>a܋	?:8o&}<śOyO,@񙏚idƌY?ㅌ93T*]eH&ZdJ4ukz[VխQ2gb	Y5ӞՊUC mifi20%^/}mZ˕samlҶcnivɺV+!4.7j#败N/ɉ0Lf\Zs\,d-nzbs}I2\;[Q4
͝EO9W7mkE=O,)M-8QOXW[mwi6eۢ:^剒I
S
KHW<	j;mkgچAI25Vs٪XߤKe?]ڴrAm>U
n"LY|sWqMA/( C/`A%dXVPFr.XSP:Õ7F߭
V7c^:{uUEQni~_.zh6M6HSdQeXmM;TԽ'k %Lަ`龦;k+Gh"EɿK-2x7LxqNzJ=CTK(t0EOz^:IͦM
,W@:GG_lw/FB*ěކAT9
C/
("+8 @?}dup^5!der*~u](W+<Ĉ%F<Hޡ/^
wZҍޒ]94 3@ 5BnP+*5<S<0ΎyC;"bvB@͒9" w8NUB"WwўhuBw%tJ3	&B;Ue6]*!ݣ!ƈ&kkyǵrFo\1KD::)qF(-BcPK
     A {s    )   org/mozilla/javascript/NativeBigInt.classXxTݽ
	\@Aa"Qyi$$6ٍ7`"֢VEF5 &Q4(⫶m>S?s&l0|Μ33gΜs8pgfn(Kv䰷Ӆ{E5:.x@pahta]G£n11acX=S؏sPAzOpD`B E7Inoi8"WP5:uI#	FWd$[DLAޢx,ic`pxnv
rK5

Kxo
nGڦMFȜ`\hD Lbf
'S:*	bQ]5f"k,ђ<
F{zn-2KU&k8HqPx4ClCP
p$ՕW4mmXbq0InS92B-Ascy0OFbStx%5d(i5elE0/Č&# aV)#:
I	kM=lXgK狃,Tg?Ireza.ɚ`/ ecm XfĠ-^Dh
eR^A\ҌFQ!KIsZ_]`v(E89Jhx2ڍP (*HӘF.ugq3:h`S6v?MI AL4ӈclI+ca X#Uma
U1>cƖ*A/7b
\')%fNpu2	
Xx2Y+8()b8B懢VZ!>:3g
7RUZ[б+'gRV:6ChxDاrtAFf-srT*F`2b!UL8ѻ:Ï4XO8Zu?ciI6ό͙Ca:~_~:|V1Fout`PUEaRu?q5ٲ_ǟgBXtUNP𡎏l	U:%NoqaP:IkkF{k<aV&̬`?0To0`93TS<pj=1wj5Kɔ)P}Ϡ1YZzYN	ڽ07ƙVGhMÅЩLIކ(}2%2jzƤxi]3#J'θ8':@dÈ_j	Jqd~J]DJ=ܕmĒm	C\gY14l=z
U$kzTiƩe]ut+[v\:Fe)T.iya7.b*L$U,*H\$e%iPG14˿*s슠q׶"R7+4WR:|\@B񙀹Y(Ϳte]EzQ}	K3KI2e/ˠΠkHm:PϑRB|xAYs ^ثg8K&@|\Qr.?/Vl-5XKpS\	q?HmKz()}ΡQ3^hF#%AS}އe!%LhiaN:S
ѭU\:RK9Ol0 \6O~qOEBJ
D~9)$MT4c}Bs7<%+(g
O+-[Qg.*ugtu=َa;XzB	}׋3,f](Efb4۱s	y|Brw$<Pbz})})}o.C3h*;3M2(R\uWUyҼUi^]wU6ͣMӖoQȚ'zּ坢'.壷(3	`.䗔(>G/&tu1˧ϙ}tWDa݇]ms55{u}LO(}"pռN}3HrȲ%|Bi=.mΪp4gw´5ا*P^g
i8,#\	
":v:M|>Z]Af]M`;hh'io*ݾ;ejBw	tI gML"v̞*{[Ru:*m萒;' cLV
4lU>,%F5x<kK!B
|(,-#^ʡRa۲*ZS]փsբWT]_:|jCpѻyap\'gVh}OvٺpYsTۯԕsl^;98EmWClCnh؛PY3"HJPFnhʝtȽuo><:gn~"t`
>GxN{p=W.Qe߈ϓ[41xȞ "	EtM#_ZO0N6m	"ۥhVl[`q͹<"+#-nHy*EՒАL9gߗvUr3LϽ&??tїRCɓ;|9vp GJkl*azDfs4+ygfwEEuy/pZ݃:QeP0Uee1<!ȉe:_JҩU^UyVKO0 3S.X'__n_Tx/	Lc8BkJKg	&^}'
ý0|*;={4aGd9Q(і㬐/w*~' t/H?QXhOõ_k ;|.t PK
     A Ĳ    *   org/mozilla/javascript/NativeBoolean.classWS=V 6&؎%$5( 1iKi"B`7i^Mi4O;ii;ifSg:	2n]d"fw^_>5V1ᇂ&h@))E~Y6}9*,?
sB~^l
|G?+Vϩx^xAK>|xE(~U{F.g.|>?@VPef󖞵.뙂ԛ[SPv|gpE)}VoTKTēc	=WHXf
.:p3X搕KgSURd\,?Y	qΑǄڸif=+
lRp4cR-t&\zj>1F#Lro'5
FnXn	DgdH;LO>ap>
yCI.s|JC;mӭqvF;-qaFk2t9eX]=ӧiGU8.vP @sƄ^XNlIm泮YưrBY'0UOG;(_>dgzGt(V!uxIb϶VD<re
I߈b<4Ѻ$TCɘ7d(XB6a
wdiX`"Omuz8(
"'4|
T~QK1{AGD:ܐPxk"q8t" i۵~!-m	%
T4t5Jh8GVO4~i84zoKi;}GA}♌3TaZƌ5!7?jxox[;xW0ؓv5~!v/ED	{&Lp֘kpwR4+,h 7;f쵛3&0g̜ՙ` U
	BJF9;Ů6m]d-۽PaMDߪ U	,Ezjk]DߴS(/Nf:iK3,C/)]jŸlZyOo~bn+k\+8ΫK/ >A4:$8Lu-QMfұu1-@."OvoZI
q	~k%jn+}rU(E|=Fޅ Wm04ڹ9\ -8
Ѻ?óY{kj[SSjWp]Θy
zʼU/hkG"%IǜPEYcx·mZAPR}BEB"_*&8qJ ߐPa/lÕ!N9##QwG߻`烜58s|uwXF22q.Y쑁jFB!f @8Nt$xJ͝B
tuc42OZ.XEEމ";U	r=<ǖ+[[B۠_iǉjQf\ޛDc5
jpMZUƴ:Tg^ƾE.hUkCX
#5t5A!jZՐb̴:>a>'C|ExuK6_e"!bںYM DV5G#fp23B82hd
)ҸL55Q!BΊA+`zHRUʪn\r喫x6F&S-OOEsJiJCQO;GyæVwl%E,,;ՃΧnsMtĂe\#V"b`$Yjy%Cna4:n_DCrc(8pWxzFRK+5^i"l%^[W\*bj>5POVA}2PQQQVreN?-en ?#r7JI	`PK
     A E	    '   org/mozilla/javascript/NativeCall.classWS>MܶʫZ)	84VZ^Z6ޖ`ԛ2EQ6{sM\7u	:7؛s|sӴ`uss眛y,7
:eH"xrG\hxL8(7O$yyi_X-5}I!a<#OY>+:"_:4|S>1#RT-/Rw$]?^_)=|_Y,;eZv.lIcffz|*v/
ͻ:fc6g%UՉ]IyH:YFLRK|ͭmvIKLҡ]Y/@*6\N;L'5h/҂S۽9i;JO;t@@{7M2N4d7^K)T&EI'mZݖ@Ms*cmcq6Lfe.enOv>nέ^Yv˺zEˉ.5}?r0h7cYK2x(*C
&Z*~dl0s46n);!KW¦1*z
~GVix%MHZNS6)ϧ/,{MO*fg3o%p&x?:\#t>!TI48@<nYLteCT/,U>
e,%U	VYkFqπcgxL۳vZT3^
ҔkVOxr0c'br"Nqo8qv50pypZO
[4U3h-5poؤX
D˅(m˱17R**0pZ/H^գuCIU+~Rj"~~3{}ކl&=cg2~{
	6nh&d"ʰ	M	̹zʸ˲7g
gm'خZ@[}bREurkwg͓EtU)V_3\]󅝬j];1 9S6&{Z!Q1ݭ6ͺ7Y+-otOœjoٲ֗h%ܒ^	ոd`5<D	_3JiD%Sd
M5ԀȲfkOdeCrfik I*\Rb:LVO#GےE^(uK\ `ɦ[l"J޷bNLeS[%+3PIIa֐}i\Clo1"y`&F*pgE2l9!ɬq(F\Yc
xr-w2D)T,Fkl;Z1s7={ATf*CH#)xV)4\(Maσ濪}p4vZF8mIaIby\aNGgÁ0_=߂RxÁq9Q5
?=˂`8pp0F8H#.8jVVE#FJch,=bgt*֋1UF4JTcn0fF IƌN:뤬[W8,uPG0,ڙR{F$A+P̐GeDD1("]F"o	v+usv;Lⲇ'w<D`<D(3*y3|%N0R˿**&.BEah6ztvtNIOaBELihm
[fXvz
r3p jAI4!;l'%ãU6FRQ2}NJCL܅NjcX.RG0#_g4|VN
4DGJPb%y	h0hoL ?ƫ?9>@:+Dw=zE
wOaO!2^X{teKf1{w^kEjRJW
jJTT́vuL&㋺ZzWft֞Sw.zkmО)@V~&&4A}b5딕+(>EvguOIʕCO9~./~gqaDcH)tݫn/}F
edOcE!ެаWjmi,#юk}{@hџG0`A?=H8>A'x7uMwդ[Dq* T'U~%Qqq	sLjbc[5.yCtNPv(YQM9J
վR\PK
     A  I    +   org/mozilla/javascript/NativeCallSite.classW	xT왼$@M \ A	 !yI&LXUT(آ  BU1((P,UZͼR_{=g}^BÎxXvKXcQ'$sqV8ҁ'Xt`X~S<3mZ'uNdYWAnme$Mۜ-x!	[d_r`۱C)Ql.'<v"G;8zUveǉ<
ٽi^WX
}j(M^! օ#D_A)zQ%ʈroEaeE(w,_~WW_	jՀZEr
@/BH~F#dKVWVsC
U`HfC8FTLĤϕjVR!PWuBͥV^RFcr[|n.ש%
SՐ;G
u'IƊY@i_9^`}@0Y IʹR$k_?Ko+ISn)J++ƗVVL.+JmԀ:dJD.VW݃U}|Th
WI{a{[XjZy*L\U0#r7r6Lnvҩ3xP05.J&`4aôz,
f0 )ҧpX@3[<Lb0ԧ%+7a"s^?)9žz\v09jZ^UXjUU1#֟<\p-E4VMt9=v[R3:۟#x87-yTSx@FoՐiY5ˎ#!wrWMU7{BU܊o
>m^xi>v}xWY=W']˩ƼkaV	]HTSF9_cbgĳ65y=KF,;sA,+Po sz ޗ@8h!qD-U j,|eXQ
|
܍

>1N8_bdwZoêը[GZj&JSCr-	eyT~Fi>Fd*z/DEoyX+c.O%ߨJɨ11Qf^_qY-z[n9Ʃp4бdp,ɜң'ULL=vq`0֑ETRQCZwW/	ժ暽$VT,P4	lGٵMci\i	Y
f$og !s'\"U#e{QT.M3]7ag`G\]"ߦ1P3d6Y 
W$G&ȏN$c%KRe	8r	IL'_E&kƧRREɕ@]BLSq+-'	Ie\ў:ҡ롯4 h:'f`&W:d+ζ;%m;`$/	<Oyƹaeߙ;en셮9~碎#y~ Hc(|R!r6!)~E&m6F$xgጯvj^\[ۡ><xfGDɍ Ă9/5A2ֶ%(Xr13 77l=3lϱm5s+kpi
lT ii
$R7i)i{QH/#M'Lڑ4i?ΤI3H;v!Mۊəumq'guk95y30c πA20b%)b(qrD
?/GGfm;<=^[,c<ʓV0VxZ:'7h[xmDn
QC4H{ݠyR	}#љ{L6ѐٵoȦ
Y!kf͆C6ϐ-4dCؐ0djCސ3d[Y!iȶ2Ch9a*ɑ>&>DPdo;d;nƷO=zhno&t_<O%ú	=ss-t4GVUB&s$k2Z'w3z5fX6֟}7o`Oe$ۢ` &lЃCҙ=2SuGwҗ|܏hEBF5t^pvLwhYjBN,hw54
#+fartVMgp͝(GMi4בḁ	Yx6W8 ѭ\88g7:X-?'ry9; ҿ8G5!m@^&1rJ֔U?zeMBm\YJ*&@NHNi&Xnyq]pd6x8Ɇ2>O7~D#5&B|/ߋD/*oxFeI(n2B_xf~3ptJt:AY!Rb-1
e,3Uw.!b'e޲{v.|%WN|,8J:;7ul󤧊GE)/.y9#w-~E&q+MG̓,kpNw-qj.d_4vM<n>icw;][criokl65.muwOr%I\N_qwd;k|?"wwrHqwx+u%ݢ'ǡRImJ6|m	,]	Vve6vcF:$?%]RJbrJfͥ'F\]i]8*>_boC8,؏|,>1q8ħ8.s''wZ|oI|+N;z?Mf|o_$4)S&7~23:	MpYK&}1:l1L0F6c#wl$C)V8^:Q?x1z4,zKYf KX_PK
     A H{e    7   org/mozilla/javascript/NativeCollectionIterator$1.classRn@=v\B)PZinVQ !*<$>m+ٲF'>_BG!f݊<v.gvfhvu ;9\D1.e[6+ukϼyJ}IHɽ=>@Q5y,ᶒ2bZj+u>Bn!$"SteU."
^;')R.|;{`"ʐkaWpgQ XDFUu.n`Eg\l䢌˦ė<M՞~Uk]2iQbآiGg[PoK>cVoveXƞr91\ʻӴzL^WߵQ/".ݠe/ozʯњfimYhxq1O,H<	v;oZ_]ms3ʳXC {O6jl'+ȓNK~렀E瓄E\ kaIbg%xϋ PK
     A Y    :   org/mozilla/javascript/NativeCollectionIterator$Type.classSkoA=-->}VV4}SM\qeY&,Mhewb5ޜg=w2o $	9
y̩SPC
Mf,$0y1G*(/
wG^r]vdeVʞ0{qy(eG+Ǫ˗ϲLA ~Y~Ydݭu꫁5fWOEm5͙.ۮn,_ZQC7ϳe46JnQ9mW6-ч\];XF)w@6Bb7\}RfX;;={n6u2U_|oyqߘNrYŊ muLaUMґcC@,X\2zFޫ.7rﱇpuQXרlLgh7g8L0I\8&ݦ̟ց9	LR40/!j9G3FXä
3O]%{dwB,KEJPgH"M	PX_	E;tmJCj)yPrøB}26Gsj<=<OPK
     A 75  i  5   org/mozilla/javascript/NativeCollectionIterator.classW{SW]aIX# /0ZH QjKXa1͆}؇}ڷtQu:ڏ/ܛ%3e'=^~_ 4y0E8yࡹN^/WGs'q`Ky䊌S0d^rqxKF\E3ʘ1Ϡ
C:bj<i YЬnçӈ۪aMuc1x\@:E{}=x(b[1Jrm!ǴCSU=SC/i;ԫabZ&ȰYmZ~ѝ	¤Blj',qwEƵmz4
j|VGc_nmjn3ʹ)"otTo]oP 	0HzS7qoQrJ3GM-2lu!;1m5D\6j		޸ݨ-dg<^78t`(^bl6R[kvGmtҲ)Ӡ)9;!+4ʊ1T=JUFSz
{SyHzFkIekiXr?Cs4t66ySS׳P	#	휋j<Tgx!w֢w-P_^T!D̄պt=`m3G
xxMxCA
。7Q	NZp][
;

1Z||
>MoVƧ
>%v,uet}K\SЃD$CT_)F5CMpJj.P#î`RC,mEv0VLn2sUiQv#O~(^.Ik/gd_7C\o\yBRzR1X]SQJ?2	*b~;4b9&LkL7ԘЋƮ+QJ)L@Vn^dh향᭸qx=Qi2ǰsL&b,s"
VUϑePM
zK(C(GHP{%Zȡ!yf
`%d`n$(!U%q^3&nˣ#~|}!;y9IÕ!h)ٕ\+PICB!G*:(q[@~	ez[*Aӵh}5K'))-YI&W
_gK%Q_q4w펃BBwy!l1Y'Bp6S!}9G2|Yvʸ:źO.UpNHԎ$뽃4,"{!O4DvV(X s!XAJ|.]P8_D0EfJ}cnH Mʐ!#!ya!yܤ\HIYIM=8e'?k(%<OR'})Z,ҡ]D"bQFNϚb5E)D)uhEʂ<QLz<
v
S:VϮ+JEN<)(_]WCgY'JSQPK
     A ,

W    ,   org/mozilla/javascript/NativeConsole$1.classTnG=7:&vMRj>	cM(_u(-1IMR	UVlXZuZ<@Ry #6ZΝ;sy .`}ᜍ,,G.XhB
xن+)|&e6lSmψAȮnmQE(}UےnH0z_#Lom.	U/fMFwD͗*\
CD-&MMpn*h%Oa(5ß<%F^+.ۖ0hY`<I<α/گA>4Үr۩Ƒ4:_Q'Lp¨a$:qe@]>׼Ǫpשּnv"Wxп"qnMƛauK88	$!}q9X
$rCde9M97??7sX|K5?1HqG|UyN(䤳5+!o	3ÜU¨)b]MiwqOUnD^]i!c])PNjASZ2Gޟ쯛lok.r"\*{`{nwSfYCY} e2$C+vP)Fikh9eap{({[%Fx299]$/R
)3.Fхf Ι]8}lGmcw0Hwa]Ι8gä0N?	LS
Kwl6yF>hn7<9)LX*$Ni-LcF+iښŇH-Y[sZ)5Lz,IQ$qm/'PK
     A Ty    9   org/mozilla/javascript/NativeConsole$ConsolePrinter.classQJ1Z/{P样EAXTX)]>Jjl\oՃCŋ&|)cL͸bMneYrIx?ͬ[(XJSk/fx~9׼r/8<TZ&@YG^/7Wl|zD|4?C.12c];x[l%7"gVy6@脵>.z">	!PK
     A 8ސ    0   org/mozilla/javascript/NativeConsole$Level.classSmoP~(t@t7p	f:إ>7#%h42{G̈%9O{ޞso?l"{ؐ@El)Vɹ#*H<
(q|*#ܫ%²5mmqLhfX-^3r?Zmdnx?S1|k]fB$j/K/_1H*BBZZc~IgX{3\Pװ;\O&2U*oM嘕NCNdQ!,2p,M
%Rv}`x/ 9FD9˱mK(oaj:R Ja/䖜N+7mnk;Z+א32}\],kƬ9n湉r,t[됚dt#U3l]\=P>%s}c11!ʐ
[S{`_0rgb-R[zD)3H<~d 6Y<
	~-Y^arz%~e$tDL
VȞDR="N ,*	2*dL LʂL)?ztRz=Ø^0[PFh'1L3nҔRW&p>f?PK
     A 7NX  9  *   org/mozilla/javascript/NativeConsole.class[	|SU?eyi
!P0YJi(@HڴҤ$)+*#mPCuf\gqܗq7K_Sh{y{ιg/ď&C#t.r$if4S9B#]\T7ep6pen24/I3]..y&QnrgU.]<.quvq+s|>FvX :/rn,Π|\&]Kdt4iJS+	JS/M4ˤ	er^sō:GT$RDt"7+㸛,* rvOtI.>ŧTBtiΐLiΒgKs4.Is4i/t1\b]Koe\7n])Zk2kݐ:z7i7.P7M:ovJ7:oqq|Pŷvpxt6/'3y'|}.%~/b/ov?(t~!72zLV<.k'Y<,{Z	\_zD#h88;$1&<	Jx<Y&GEpU0c@x^0E#sKx&SPH"ypsQ\psC2K**ʖOgV,
˃IX[Z6xnE͒e'U'R&f,S>us".f:YD1L4+ЄWաH 2n
h+I@MFjc`$QHDCŪ+`L֛TXE4P=1
J6jJTUI
xbY^$6j!!pL.A`48Ul 
E:L@,"\Ţ1uXH,!9A)Il<'*$*$`&;Ecc*L`5Kf̨*]"&U|CPܮVpp_KI.(F+c5BQL5Zg% xm		ăpG]idϩNjW * whd
ӄ.U&`FC0B@eݙcfǢhbMSsZrkPN7:X[^WHvdyݴHm1&']OSv7,7@,f9yE',lc3PZj>%'V%cpv;L,!9Ta:/(2i_cqKH_
h1 a76Xc`* 3bF4\'\OdoʚeA2}6`#uA>'PU9˚0"vSs]X3"8C|4_LGEiB{6d2LԹ`.YDIߌ%TňWúZSVhÆ@]͖ǋUdZ2>	Pۡ8L`8=bZBaC*Z#0 fD!A[dC Xr!"q 2wdGD"ԇ"uIvn'=+tDg@t^N%P[hmVTB*wBc8̲;ˠHo"ͫ<^4gĴ_AVVTk8#_*f;%mi]y8lյ&HߐUZW%%tK	NJGS%#Y*t3m1MPAEr_qn1#̢D}mЗaK/i>f 2x4C!hixΟ={gę?n4szӠ[60G7_WD1!߈.qi	IS/MT*308K4k
54ҠG^V05Ԑ{~]5hc514Ksj]sZYZC뉆?<yᰡeGp}~n6576 5q568mh?0 ('c@wJ1Q
z3W4%NFAY8tjC=Z?t<|
׵6Rv@3\eDE9p	~r'dFEH4\'"vF.֩p,[cΎ51Zjv~+aǜ#!-l>bQ.itu{=\ť)UeC[1
:7_j:fXn[iFw]^(:3
TiGv2`Y36nG1. G	uTw{KQwH]~^jNKNkZjѝ(%wS5n+MXBil_vt).)c}|%`iԹӑ;+U_<ز9stFLCBK%R>Nh~% w(٥ZU'ss4Ģa'Vv.2ges4cIDʽeKՎ+uX\qM5HL$/_֍FˤSg~~ĶwUWv3LXݤjI<kF!udL^5ҤC2Pץ.6ֳ7Nceni]G%vCZP;ɚ.BN=̋|x}sK;$3Os>%sgO([2lZyeX5}!wCty]T3̬f.|Suh5DX`
*2g6[;T;Mզ0MT)hA8zFq[J:aaD;g(RSѪ8R7]f`gɻ蝘]%"_j[#ΔL[}2;p>pJxīyEI@oQ6&h>ŧ}i(*"XP_0	ԣ p퐮Mb*XJ;Eif"u`|9sUru/-vo[5T3iDAɽy4
Dԗ
	fn|3m?-c앯!N3
x;P N;/
iw ~0
~i#icO4IOO~f/lʠг<oɎ$J͟J$9yIrXO?Izw{HϣF.@IR?:R!xN)37%4PN/+H޼NO1[;)>7lW>Ɓp
D;S_]I\efjG!6S*":EN̥gZ~a'&깋Rb'b<xƳ O OJ<k|<Ygm7{VES}7~	GC_??1;x~!臠Au6 Pn Ih:t25jlHq4Kt0OtZ@aZD]I)AKh)t2ҩy:,jshх.ƪ˨(]EMJ6Q3D' VO<x\=~z&|l}Fo#~hI`
Ꮃp!WoVZ[cVY-ܩ|w]l[,&jXn%-lr]-edd{UEK{*~LGy>HYPGhc`5IA\3;iĶ1IYv#wi0OexNN=	O+G<e<oF-I+&O9|D~܆]܆ێ;
WЎoԎQ pp\BG<+ۙr4~R"B]@n~_QR8pW쮁!\h#fq[nZ^ni"rމXr}#	k$hk gÜM(@6Ct96cFЧC1nS0B@7ķ̌컇YngƗU*6bgD4ag6u*|?
=X>\fYr? Muۑvmo
s+rz'¸Z&U
qE!2?|=s$irsM9tDn/$'I_\STҢm߽|¶l"7Le&vx5d7,alaOOez

x>:>pG:<S}u=RUhdUdG)H=sR$Q2%A2Q12TVO9"wo)7IRl"ݧ$֓ӱ]G:*rrOavLhŹ?"%d/Xye̫(^#:3`KUӏGi@\qx:}33>>W|}
/_U+ɧkr&_,={V.ÏpC7f`W9~)vl-F
֊`{T<p.2^4pڲBh*F\HH\[>aF
+p$Aš2HCtv@~Bg}P'IY:tٝd@K&{ʟ12###'5pJFѾߒsٸwr/kX 
.: $-&I>n=P	OvkR%h0Jy<<2,P:%
;i3@VБhTe20i>d_.;$Z:cT+n 7:.m%TΠ99`>
y!ąipUBq	&6;xXՉCwp/"BC;/=T(<yJtTR'6^s#%K971De[)6Z.XOҊJzȞR.k4FMRz#ȯORjn`+ J@W`$RM^`s*ٹCh(W(?\Ey.JjdP`l^c%ޡ4{sPxdZp6c| )"==-icyJa[
?J^巍k֓};Pݎ4Lɨ̤]ݖH_ИǇt]]E"5J'-ۼ'W[T-S˧A3hIi_D%|1z	z)E2ZɗC5|W+Nt8&V*Ye:l4	ӮTUGdX++<ꢽY9Cina9!VO>u(O!M酎<ulS=M63tV \*zK(lj2e%ʬ(^*GYRj3Bpb	<Oٕ<ٚ"c4B	SvN}\:c &ƛ7"
ݜ&LK@3-fZMH	4ryC6%4Ael%{)w*Y<|Q$[gIvAdV..Qx*oB [X3MŖЋ-[B/>zQ=Q	G[F {Z-Z|/ .Me;1S/;{$JZK/k-r%*=|1tO/i7ENDƛhP(v+$KeJdY:*ٷM56խnhhAha:F(]&-OZ<=]ta;i;i;i&KW}oxLן5|g?I9Icu};?V-\]9 >8u;s$8R+S()9|v*O[woxĿRU\T8iUɎ78ZF:;ۮFĆv^|x=@UB^w^WN/{)l]~
\}W=jlw{#d|;T<nsld
{+Xl4Cgyr
._*|%Z'Id~<GB.4LS<N<hhyd@'ǎ&FMxeh>_uW_K\^+ukɛ-5];?1͟N~/qynF|G2
5GJkt5dX;vkoF[gFbQBo;H'\z
p8	c5q˯Y)<$Ug좵l;>C
>?	<uVZMipe-mPt=ɭNbuڈGԧp&jkEl7F]8{PK
     A =ië  v  /   org/mozilla/javascript/NativeContinuation.classV[wUN24ZH/PZJD(`7h)T&t`|'(k \}2mhQlWϜ߷/̏~Ќ N8jhx9Wx5x-!Ҙ
LgaPiޝa,x8@^`eްM3켙+L3Θnߚ_:|:pWhApL:64qH:eLGw$م	Z:AnN>:4:4:>8n͌
x#c(Mf,LO>a:$:ѦEř2IM?kcًe1OfΉ
rLA#
;8gW#vdΞ@?	lXoZ0&o薑蝤d'JVHgYdmSd)P	7n>mC8IdM)GNU`(7T T&'QVKubVd|alZK(d*1)P5dKvP8z쀞s8WЭeBʢBC=)S$zKt:YBШҕ(ORL@U2f˄.?tʨ43EqXԧNnlNL*T$NΫXv:hoDwdNGemǠbP-\VqWx[;xWvq^fYFZt114r웲c5 8*>UƼ\]OI1>,Oi2fXi_<+#ڲGhL`Gi#a꥚yu|)wc5t}q֨V[uir?rMT6ŭI_)]ҬkFg)MT@TCYxV<	lXtvHzG*x֖hRA
a;}O6kB]A+=||E6oE9L4n==}]srբ:EDݬC_`]xVmPՁ?D#VIv7 9)d)A;ijY[nq]SN<n%k[wEo`Hўuh"ʎ.VKذDrғÁ;/۽yA|RH	9H	^uO>+ErrQ	S4*הkJ5G3#}xutlؾkfQ{+f*_ޔC)iF限MyY&wATrh>\I.ǳ+i*3Rkn.[`VgQ[",(IX6F>"Jlz[7݃!ٍZY.![sMB<Z稧4w(-94܊RwRBcM~WaIZF	F):N9%*,˴	9Y-,Eθh|EKmAxG|Ǣ{zv*ݳh,i=ϿquhwҤHծ@	+{n6_{T'"IJLwh%;i}(0!"MȒ= -Oz
L+.#
B%PK
     A ތ]D    '   org/mozilla/javascript/NativeDate.class}`mI67KB
M	$HХ
KB`Ac 
*Bޟl^!ٽ|Gf朳SΜ9ev>JDǈMM^i_K$'GK%R-XsyuS,`F7Y,+,,~O?-~ϲ?k,~ϳxϷYb_bK-~/WYj_ck-Y|[zo
bZ|7M|F-r7-V9V	&i0;dvD.-{mrJht~lm,#&{i>LݿYIYS&G%峲s^"//%:1mj+@^~Uf2{]foMef[WH21k]'eeccUu	ew87>6
0e+3cdf]L2|ǿ3ɿ]ɦ}'1bN/ү!!L	
w쎱fߍ߹Uڿw	g*n=!+9 ?%ڎLMɌ}&ix"|+06k	]V4df
pٙ.*<3C],,X|1DS>/Hy)}4 e$dSGȡHD(^,ƕny5]ʬ%D,qbޖȲD)0C
UeճC
UuJG3bŌml*m]V/៞O2F9f&\_uYmeN73;q)*ʚB6bǗU/YU]WSVUNqie+QerUmsSH⒎VHs	wH̡cwcjBǝ)؎cnHTMݛG?b~m&xŸ򦺆ҊuE{{F	_/khKvϬvXy5@msX)I\W$Gc):SIuetF7f|IgMutGm$V(F>IqXR|2$h27TfwelsuuLTy!&6-8דCJzab R#j)Zש_I
FvQ.\9du:)^eWD%15r=
,ruuUcǕtg|1Qb
,n5k;VItu:i촓nDHwg"NW9=#+G{9o`Qf|oo.Xl=ONDQs<j:RxTy݇)]S:cjǮH[S݄SHB?LfSgN9wژR=;w<3㛰BzcjʚBSIm
h'\M6\؈[:N=&;.*khh]X:5BUmUIu
jVA*157T7
yG>qè
764fQa(͇2X).Qo,G/4hE'5U-S7
S(Mj|MKYFUcSjbvά[eՎdtTvD=@q̧մ>4?1u]$ZyhNI4|MeK'ջբfTU֖557 >lHNGL!exIL]Fخi
XHC;ʗVm-2㶯+g/&AMugX^-Tн5v
S`B+Bʪc;REZ#^PÙ:ve3S0Jf۴SWdpCŪ^HMW0&NOG+ko:.$l$	)r
5BгrRtb0ͩBӵ+m*(:$W68DZ~<_dRɄޫt6x]Z*e5
Kk&$k<F;z0j7VJW@R^9R55puU咦e˰^3G0uD13_vTUTy1'l14W
6u0
CRK4H	#SvcѰqi@eKChfƟDŢFfӗl)PN=H=mNv5P5М>5iqc#5j4BInRvg;mR
^~@u]]{&TU
'cו<J(q8\eZ5V9ԛV)cO:C;f
})3˭4b.QL.|4MV1ssM9O]!kQN#9=>T^JGB(pF"KV>pSU\@-c.oZ43$rIt׈,:$QuҼ	\mUg soBʥVHg"1nnk1h5+aTwSiZɝ8%UjZRW!mKal5`;>m
x1'7FBFڗz?^8Z$T]#)jqW3t6Ghpס*;
UɎ/VVVQ.GE2Vmh9P$jTU(
v~u\ЪlPJ_5GZ5š+#a֔p,U]#cI|>l%*jNTW覸Ő<+Z^>'V[72_}V?nUt=.c~W ͢?nbbb(wث?¦+q+|yЃ	>o[9C1$
*`%@n@e84p<؈	i51X [FT5b ޹ƼE;$Sޱ	10kiH5FN)Xoq1{Vc#x*5Jfcx9
',fԣc#VW*˪aۛkYQ+
OGcGcb(3?vy(ٝ~Q$Q\q煼GQ~1Lűbfwt턨~1R62J1b)81/JYL\]ϡom]S0}}aU=rbĨ47ܓMW56u_US~1ELibNYQힾ5͍M}Bj7H
ǉ\R||#eAѫ~1C
O@l}˾?`32Y~!}"d~O2-`~/@~r$b3J/<q)ŉ.7e^ybbXh2X$oi!rƥUEH,6E_,U~q/9hG5cb):ղ_دrN5~Qk\(C#^g7PE5-*Y4H_ꎓjp9A5e
K 
ՀQ6zeqYs%d*$%
_uBE*kbDEšr(.נGY/0(gRr|: >O6n\»eم"x2~L,?-숨Em,)k'/T[]gvz#gYcqy`(`U'Վ
-\0ar	͵G4WO-oRl:3e,994'T1sI؆e
\r]WqgU~q8QZǹ݌8UVaȓ׭"Ju[RTSSح.#/.9GetІ-o_<3aq%
u]ى$lUhE}]Cӈ	3!i٥8+v&v3Q=&N};;w;uQ?*`t\_`tfgU2p2O;-o(w,a!C.ǈѝM[XDVf)Ȅ΃Ҁ}8-l
#6BiwTry(Kky'
W!|eFM:sة ݙt1R0vR5HrA=L5'oZh/B51BR|uh_~"Y2L1x@ǆSN|vɡƲʐЅu;_АkS:_؎&uŴ#<Qu͕"rpnE[zd774 A9)8A	RcGQ|&OcDՆh:p8R'H	=蕊C>p^<㉲Ej|QMurPmQ7hDsP<
Q'o2ziU`kܥf3QIԌi\'өEh.qʪe|ȶc+BU
AḅĘADLfR/EYz<t*nx@ |'C`xRΒFi3"L]#x^#Ӏ`={?*
<+'Ϗ> "ߐxQ^|h>xI~,##QGGcKO>)|J>8#gFೀώ ?>|^~O __KCGDUOkFu#S7D"f"WD+O~Z~:3"ό~v~5ϋ[~!pR酋T\)2n>,v%
-\
4R/<DlNI{<_N2ܫF?DQWJnZN [ˮ#R:tuHl=9va?\adu4n(bՠߩnl{s{Dm;
֛fԒq}䛔e+jŧby$ے-^/r+(GbM
v{ӛ.w{?2LW'ͧE~Nv1b:ȟ8-m
I<M" !h5LY40bzDcؽN֫KOLCV%K՜C;;H#}~T=̏)HhMB4	45H#alH[GzoH#g蟡3蟣9͒@`r+[-J	(LDY2e(QAr*TP<e:(3PC2e]QvE8Q({Lnv=QoQ3Q2(QʧP܍2Ny(Ae_@?kQGy([@QrQ8eA(+PF9
A9e!q(Q}CQC9eꕠ?e2(shN;BF+"$ӱ<h$JuCoXzѻpާ	!MOh2}FSKJq-MhLWMhNN'2N NTE,@,H!8Tb]dփeQ-܍:O~ ס
f6"ZS}IlS}@aς=Ms`Nυ	=ͣ`/d"K`.e'e0YWL]*k`reh-L:lfم]B7h3ot+[Oаt4ޝRwA/{Mζ}zA]l7=ؓ{en=^٫{do^6=ޥg,c3z}I/o-~:`Mvm\wIqc_<>L4g+}{W(gѿy}{ޏ~G>~^Da;?Cq>@7hGXii2}0r>h{/=gG~
 oaZGi0-<ZGKh=<ZWѲ<@ϣymG;֣Mh<t6գhs<"*=ZGh<rvG[.h-JvG[zmGãzGh=ڳ)y<c1O'̓?y<1O'ܓ?{=qO'ܓ?{=qOvE /\g[OB|UL-;@&{ A>3ulW𸾒>rrST}'ݖAN.AzC]hU6*ݖ6Pd楚m4ѡ$h{ɟz Lޖ'SE]tFSTk;Mk㊢RkjfR|m4s=Er:Rm4ȗNsn#4w;cjѼmtTc4=hzy먶c(IhNEѩmp=eSnhL'rhbEf	W
E\QHE#HInʈHnZnI<M}4M+SqI{ؗXF.T|KvH(Y$!ZX2dUI(KjU4|ϔan<Zm̳\u-NIXxJ)VpZtp-T?Ҳ*%RiygTZYC*R!VuV)JZ)b9+鴺E)hՅVb!u訚%=H:a1\j(*V7T_)1ŗHgcE%pJlY"g
hM?/sBg&z-pm2hvK[_yaoN>fP(E4Msq0p"|4:w]
5x#¹[oci<rч<>E%@?A,l
Y+e("VFQl
f<MDއMyl:?C,~,;csdvN5lodT_Ȫd-7j~Ᏺz5
wVi{v&%,v]"](E1\bWJ1]-N,gjA6KMb,nf7;mb;]<ϰ%vxmkl̞2sZ֟W6]NbojZ5{G[ֲ-N/m;X>vϵ+-V{(`5۰~&m GIo_ѮFL,È/c aU3٣v^VBMllE{12l=
$r y$$ MA{锡lhdĵa)~

KÖbv"&{dϛEC>gPcf'7@61<CO:ԓ:'daƘ(c=/WC1%iѢz'umt!:GD_IZl4;<*pyi=	DzEָEqh	+|X~
qSzY
irJu>&bX|=n"(347ԀDsr)ml):T
JOԕ'Q<1b.d	h#%H?h	
6Sh`zVZ[1Mr
V6j)Z7/;S4[6P."8ʱټ'e^ԓRϣPݥ̤\5JN=(6 MqGZ,nB$`dwK.KMWkRj~iZEbf-&1mt:2p!l)J鼀'!)cIJh\b>2b%]KHJ	BBmt1+"[rA7a2}ZT"݂"u^F,n/5,3RnP(V팭uewc-Ց0B|jqvN#,r|4DG71aZ3`7V^ZF<27)jtk[׈LKu+ѹN!u0
G$c./CZt2l;B:[jw-[i=L(Wb`<eN<ɲG<!˴xYx Kn۝"Դ^
gR<
͡~<'P.?eTi*^Ig%t?K|^CZU7nh_Nt'_Ew>~:!~&=Ϧz5rVFt]A[<Nσ ,cuzUxS+"}H'a~J6zPԧQSa)P|	;0&C	
DB;cňT+A1 #Rrb,S(yHXnDj@%FeDi*q(HJU\rJL ϕLjK2#n.]9rvrURWӱFt&@kM͐-LVo[t;[i.iru?=w|'Az?D(}w|}7DSgS29%pu>U)aZvGnhwy09]mG{ң=^hoyw=ig3ݓ]i
2Aޅ@52h>L-hXyvd"~li"~uU _8*lk;(
KT.SǼaÛҭ*Βcꝅ-F[K2[d&d9讹Y{w6e'âu V_}>>c:TM
quŨW.5Zyۤ 9e(]ƾrOȢO)&7}LriR\j.nC7`c8h/ԱԹHI4D=[Fz
oHomInS4><jrDC\C6\N$|=H ݇Ku)}gxMhtL'aPhT)(NDCD,6U[E9ߵQthLy. I,;辖x"3xo9&gIiy&+'F+;UNѢG56m= 9mXn:7DňlJ}"&n;tӜwF~hO/8=C?{==Ft!!~+*zu_دnW'#Kއv..yb0s5$CBDB\E dC8ʒޘC*'>T^
ٍKsHbXX\e*LzA莧xQJb"ItA'pYgzELٟjGS4kLOܡuWĒ7t(cG0RVYe>j7-ꭎ޺k)?2'o&Vcq*v0@b6C̣b>&bDSr(c0׽h֢D=zghJ>RmTb3@Jcʒ:$NAuXm=r7]dPKAqg#hTXLЯXhÈ	%?\:rϱ͇IbXmn9n윌m>;>U47C]zfz+%dȗ͈趵\1@&tZb y:\m@> kȵƀ6zcU
I$]-p%Ք&Τlqsh8h8ƣq)U˽wdҴ:kwrMM:xr` ;>zx<('>r6Z}H,Ų^!?NMmlNō]AZVQ`U`FAml Z}sE}\M:WG2Թ&dK692O-5[+\x	u4,W
vFv&J_`/L.Clfn(\6
A?d8e[QD407]&2Mõ.}ybaAݴSqs&
TAI{S$PF&c&:&5g7A24r<pje	˩ӕU4lD!:/!5#},_/8`3]VC	PVZ)iڱ̨ĭdR2@B6
R#]0\HD5w[8Y2cje11oAbjַ -HJ1$Ƙ}RRc1Hi}%d/nA&z*[hO0	ȃ$I^Bw-*M@Soki7x]L9t;y̰oШKZAEK0%Li	{laf0qg`:꟒rR2;XYJ)c]X7hi0e).d&]O	H{ov6x+qJ>q%ۡJǉhNb{Al3txZ;iEŃtxiC/e8&7^zW<EG"{_,MʆYxY'&e{lxS';K|f/ok{/X~?/7?!yxyΧk&_Y|Zo9Z<?OKj6-?EՎl1M#fk	 Ѡ#!b6T*IzRB O+(G)g"≀9W8!o?I`F!M?Jd~?}
+ٓR)dOJ=)?Mo  ^I24<L.< 2Êo*&CSSU,ycZ.-L+x& r	(
+ \
P4l4=agib;q4OLِq\xk4p~2<QQ;IAXgδ}?M`͊#W鄵CHLG\#!7Q/Frqt1NRR!~.ܰq]ѫ=^ MhBX J2 &^+谛G׹A15~nyR"VVv`hpK{[~/eolimgKkHMIh&zk2BE
vPBI۷$[*m8rS lCTQ/jP;i*I
Z뺄VLoMq=jhTPޭؗOr
pN7?oVðuo+j܀1i-luA}lB盗
٪V}L\x&*6%3i%8(h^1^AKBcGתiHVΌzRSr2tPt#漛).XU(F}	$THgLx((
w.&7
R)A-L&7v)5Ih`4
$%she^r!Fzr	c?\ @k$Ŀ#%3lI)]+|D>i,9W1|DHMH!k0CU>.ޒ屉,';ҳ=Yvuɉ,\Fiݟ 4Fʮ%ϙ0QrQ*N4ZKPo	-A%hZblM9)	mrOs#xt)dh#(FIq
hc)m<kE@ݵKDYdѦP6jhv
ѦS6Fhh6ishv<-R6k'|J+Z9ݠUZj֖ЋZ5GZ-ku̯ճuNc=L6Z;Mf9Z[.eWj类v>{F].bkK؏ڥir]WJ>@ӮKq-up)XOӮgiڍbmR߭mh7[ڭYv ^imv	j.p=GE[QړbWОkψ<ܑjeqT{M\.io
-O]XP|}$>jůbh׾ָoԾ|Z~Ғ4WCۧeih9N kuM5mkuSk-tݧ*~u
yҌ v)wrob\~paCx	pVdY|t
2WRPLʁI3eB3eA"k3<Yd>Hg%?P4dB9!~Hj?If6R ll>X->M@k[&0eM!;f_t},~źľ1	q	f7i"-ELm#O72l}?OR.~E%Ymgw>y@%?bW;"M@FZm>Jn;9>90Ijhpl%-h6ZЄ4HieJQG+'$/BRS{h]D)6U|>`j*0KG=飆F[2y^Kנ/ds"Ԩ{(S1>KM6粓dJ}tx
ɔPw=itNz3iޅf]iލݩRIuz/:MϢlXCW9QϥV=>h>m}0/"A/_aԮ`>Xw}4ǲqDl>Y>YmzlY6
cGO>z6j#Mar#U؅8  ^bhVb؉!pYRɇ˷P
c)_Sɾ6Kl>2 |G24/T.
Ęzj%G5bǈk#&3Uо^G }v7dV6X/*.j6z=L^fˇ2*LǳtϡDxJS~"uO,}
1"D9b1M֗@BZZBz#jƃsЇsލ&,Xf_zZ<e~YO]0OL~ m%~'T8(g9h9
K'H}wSZ)u;}"~@iw"|z
C'SY	Mhf*<B@I?
|;|[M=)G_C}siBT_DSJ0n$8v8A}=q RʩQWGFa@{&NADސasJ9Ѣ%QyҮyԿ.*_/?9z6$/<
0\)Լ/;ɧ_	}tWSk4Dh@7F*7&:
}t~KKo)Q{0<vL4[g=^ųtɳ0.2ljYq<\K
s)cP?}Go?P<ד(||Eit~۠_Q4A]Ya:WQ`n<7J)<<&q<NI||Xn
N&J3hAMM\
j%_~-ɸ:/+?dj)WJrzfPQ{>t}I|
z0YUz)WUЉo`ЋoHwߣt!Gޣ®ǧ(O3Sj_+o)httǴx2-XX!K3|2aoӍ%CE9y+;k_п&SbC {F9[G4퍵]L5$p\}Oa܏O/ofqpsളan |懟[iJtrvruo(7 w(04~" ] 	B>ҝy7bGNVF/Ӿc>l/hmA|X~3FiP!&5*蓔?GCAuV{! :hNl%#017Q2:/~N:ԍNjĺ5Vu[cUKԵNjR	pJ@>N֔$<8E9:'%E~X"::EQ7|4ӱF4lc$x#&4HLit9FwghMF.Uyȧtяi13.zg"z(%15F7ƲDc<kc"fLbSX12c-tv1m2f^I#ar=huSg4]EJ}5-E9Ϲcdɥ|PRO!۞{LAR.Flۯ5
d U`{9K'rz_Uft;wGu<MqGQ@hKbW!ԔOSԞEĸ'MC{	cJe8ɗ]
#d,|#c!Scj+ "wr]t\;,+Hj>aK'hR9q@r}
	԰z?d[(*hJTBkG%@筱R#R@)@*G)߹ʉuk4+ԙʱˠ#l<#DW$J(^5N
1iJfLÍeX*5hLS48fbt:85VeƙtqfMwk
Gl.KE*(5>~2ӯ
,޸Mf7[5;1`ڊ<u2ʃ&yu9S1*&@߇!.Qۺ?m-߭^z*S1-iqUvbNuUl6U1YwWŜ˸bGQH\JXi;)˯t;&W$*uu:	#*fM̘+`]щ.ܙ.ש/emH,NM߿e %.$_yˈ~mt;67LmA"t7hsKװm?c{/WzxKd?B[QD_oG=Kq-AOt0q;!1>b/p1滝gȷq7p܇Wh>vN+PFvyw?Oa|րMA@@`?f|{7sj<Hmy3|T̏^z
7Q&_U:ePDP禋j'^yYe]ɲig#M߹9}':/
VU~ Aj}'?t*oD$)Sz%MU
oU3i
_ntWQ_P'iL%><?Em*<˖Oy@7'۱nq@_m8.?S ?Ko8JO	ߓvķj%g+|$q̿[dc9
_nHUx*q?Os4c
gKv1~
ϲ3%Wx4anFZ?PM>Vgvwc(M1A
)q̿@;^+>J{K/Tx%q̿Hlc
H9v1a
gJ/Q`;O
ϲ%WxW
7~ޗ`K׽~|L?CSPǵi
7]$5xosD4}yb@:.';귺6#݆t{]"Af׫Ho!'AudIxBfg6
lG!!FGM;+vlv<v .;}v" V;	Mv2ة/Ӑ_`#?@~|)vWKnCvw=ϰ{!l5L~l;y|y?;y;yO;y<<ZW2W٥TSt>߸O?ɸ_/3vN}K_b</5kGzc`ћƓ^,i}b<_h<_b_n_e_k3o0^7oꛍ[یwww{'/Ɨ37KƷw[Ə?__o?vG鿘\MMaFcĚF<"ь7#L42$l4Sf0Lhv3=!fO<(1{#lcg<cטf3f@cy1d,0!F,2RsQkÍ&se4JaDG'a}\/%TA
5t]AzAyt=A{<h=Az[}A_zwC ˃b=(у<<AC<ăF{A=h- oU0$ݿo RϬĝ=(Ob__A/kOMR[|gRO #C&0K
A4 BIuZHp)hI=̳y
5׸$ppϿ\+PK
     A Y      *   org/mozilla/javascript/NativeError$1.classA
0Eh5
"]o \Oc)1h.<Sܸs>?oxX`l^6oEoY-n0.4.h[mTsrGP8_kco 4罘Fkk_
%CdC/' tn╠3A?z7@~ PK
     A B    3   org/mozilla/javascript/NativeError$ProtoProps.classT[oE=c{I\5
plZP.%\ri$@gnqvuhjxE#"T^@?@3vC}~7Pd'0DS	E?|IFobZͨeVy%Nr)븤㲎yWg	do;fnڵRw-6);؞oYo,=Zf}U+qI䛻w>CՏ]*m˧,pʆJ(0<︵ҶkfIUKsM39ħ,/d~|U 6l2޲Bs{CF]*NLB*cuH.piP0ʶ-yb(oYuܱN<ejү͏woqㆬ}/Jؓ*ڎά޲Y"Z:^.-ޡEqDnN<}<v4ݪt
yxC6Աd*aNf&Vj]gZNᴎ5d`~Ȝ	_S ׁ֑rJ~X#~D6:eۗ5
\,n	=&HtZ
Uy}y$z|uKNfy&߁k-loKJCG_7%}&+X[_ã$s|"x<֖rd735N-'#^$XB>bq:be剧Bj%WR>{YHܣ%d!-]Ysab+|gq)#Y#܌/YJaC"*Ruhb㢁a%fnTgQb-9Q0zQ]62w8C!+C3<D^Hﴎi8ߦ(Hf&w/H+3x)KbP|q;kks
9*)/bXwq"h1Yʨ3jx.iɧrKPK
     A 0  .  (   org/mozilla/javascript/NativeError.classZ	|?s}		 ;L$I!$3AږVm
QZvvu{nw-w&L vy􋏟 pa>87>?w^ȋ{uO>lz_>7l/:W}K}H	eۇiI3+>}Yۇ6HKW&3N'Su4K2Ë2Ӓ*B2ˇE%u1W{tn>Z5%xA^KB~eNW*P.E^'K}\tAOrKVxev_c*jIuDeْ>l|^Y-Eizjvm;ђ+g	=Siv)+ْ-l-dS,JER\1OHpP$H2_ٲF t?9D܏jެ-\/(i޴cήֽXcHwtv56m8sAg:傉k6^ڵ38_u-kwnhFVG>?I
Ɠ}kX^Hu't=xH"MQx$ɖ*O2ӝ'ur6ϲST<S0ix	'ҙdS	w%jq΍::mlީ,G+WSZL߮H++QĻ0-qnҕa&f{8iN&IғіwFI/ۮ̸S3
$	"=vJߵ'qݣH#phKZzfՌ9qՌQA1j]> :K
ݡrJxH8KM,&5x.(Gi'	D\A`7*6
H2Ր
31艂@#{#i>jpRuMpю8L7W4Er᦯Q""-=MXL00vW13e7}G#Q592RU9T5X70iaۯ06S8H"DfvN{yh"As!I\hUfmE"eLNLB!Rg
QQ]D`ۘ3Q|+<W*%dDA3/d2|Вmd
ٛg%cLsHҁq,Ǧ;Ǥ*K0<X}T*K6H-||gvػ:16.kHvHbѾY%e%5SncL4#?Ě;+|Yj=P^ uvs96,ʖt1bNy-aeV]bHKmŘs	f-{e%1I-FXqmI5T(4+셙IHu`Zw^	Ow2'4/˾a@lUeZÉHzO'U8^斃ko:ޖ5Q s"Wߛl|
wM/w2l
-1Xc77!:mIb[e-om܆mà6~vd;Tw.6n@Ɩ[qǖlAq'	NuL%ߖm
r|Җˡ2f]
a-wG̶|Tcq[>!m|ʖnQǖ{ᩡRy=[B%;BUWSc-JpDG7Te%Z>l9JM˃otnyy60_^$qv$2\a*lXәhU*'OUL]ڨ5`+.nLLZK"hǲȁD<nL4U`cu˘n=Qȏ/_LRWmj";cXҟ^FweOHKh`T >eؔOGTq~QNdzS[Ss$[F953"вjƻ,i7gK4;w;
L.C~{D>&.r9rt4V;L"2 z7jk,ӎ
rc9g=TqL
R&f"+2 =TWEϜ%xQI;McQ9W
LUѵsmǕk0W=$8=8>u7ZyCOxv'h.bz"p4DwǓ}t5dS+K1~S&ȝOгGWG*Cyh+c3%'`9Ny4cpy>F6n+slpe+jK(UBvD"O+Fxsc?M}Ut72zh
i:93
7գisϞ<k2Xʒm9.'lym9lgF\"]=af3k}#KCZ}<dpO,]yĈ];eȳ9m>З>'SE&'Uө"Ӗ|)nLzMp!Tđa* 
_uoc9~ST0~o}x?x;g^=[a<hO,ǻhfލ[zSn}nq8-w݃kڒ\s\x0~Kh ʆOgϚEfc
p4q)`ьaUL yb%>H݆۳\U׆L8	?5rB4k L;SqƆ:AT܁)2J
>Թ{<1}VVQt%Rc&jS%]DI/K^'.h@7iV7Q}҇hfKqZ1;A{ŝ<{>Ʒ.hSIŃOp88^D>)5\)ܕ3WDU7X8j`j8m{a8flcWQɳg
`ΖiHuQ__04S=&2X{amL706r|=x-Y{snB,!5ߛ.NNatD3GN`n.)AԶ~C՞D,FUݰ}f]khVfh1T3	s4&ZTgٜNJWN#4WZ_v3+l'mq,`[|KvB-y\J`1) "Gsk	[5j!!jA"B*ʳ"q=8N[[LysA[:ee=ݲPJ9]H#7s;P
\1,=ʨDcho9mб0P]mpvi=р>Dp4K|
ONy.&
>Bo%gSc(zV`1e&CѽjtߔMx844ӈw^ltSy52mk`Ν=TU\$*	T5
2]oliؽ]g
iLeOh{8F6WYct: ֜ČWu
e#h^ϵěͻP[wOShZ	=Ie#64X(iּL)xOp"]o2ҧQsg	EBOpIl&6nW	O2x">mtqJ"~f> 1ѧHN-\"EK%',
I3KO5 n6)2D,<y^	b3jҠФjaotoش4oRÁZ(12nDk{r.uWC'>yuA :Nbc'	Ut-G^A]Pwm]mۜmưSogQt˳?f$GZM|OՍ'&=Cͼ0[nibITÝYEGcm^YroZGӗOfs#A?qn&PwTkYteי>u%U6D<uTî;D̊e_m3gn7[}XCY49j9:/F/5+YE;`2[]SH;}/ci
Pj*:jv眤[ۡziTܧ?$<]()ھOe[Q>2jkPm,'Wx[T(^,oX7˫L2oYי41-Uw
*_m6\JB-
n=!pNE{
ؙ̓uv=RV/^Lzc..'A#<"^I	R 6nq]cRFωX.ITkRge~*tBs|1<Θ!{.~Ğa`U~0%V^ͿPS:}E4Yr`)'a7]wuʃ,2N
8KLɥh)Yu5C	S,-S<˵[KӀ˿+Kj{2d6e*e.H5%RBz\Œ#*
8 XAcs{0؃9j/[C5/(~9sD"7 M	p9~x.%5\X@~sh
t7gx{妘vxӳbοp {as)fF+\:,_hRW+[o67K-Zn>|>Ӳ
iY҄Ҍ7Z::(-I6nt>T5z7{ZE
!ͦ6^y(yǗ^r^Ic~ØƗ"ƝP˝c|^,_@gg9\&𧽉2ܔ\ ?WPK
     A i  m
  +   org/mozilla/javascript/NativeFunction.classVkse~4!b[kZ
(7E
Q@m6lIvĻgڑϻ&!M }<??=pi؉5Ⲻ\pkQ\'QJ.ihCFΪbYK)m0oFoEAC7((1W:OK5mRjJ@h-3,/mK2ǟF~6aZwZe8OY)1gZrTXEc)ϓ9;CX|
84g;}獱cp3Y
\3%+8QEp3{7}IqWC5g	D܌]$}ρ+0"]Qz{bVZ1<۩/ee.MT*>p[ʑ6JˣEA,.k]KN/TK0b3]2-Q~gdn/taNzsy7^I)P1
vIQFj#jrCL8[:
GIncŝu(09ЦdёÓYmdtMLZeouՆ1:~2g<K\N6-c$RLGXhTM(K+2C-'G,zP߫kbdUTU曒a7|M7V!8<]px8qpNzBM&T(DTsruf~rQ:vcHDQұ[:1#{
hMmΤ6(t,ऎylV]||F
&vӪo2XP]K
f.UA|+pv0gíъy32nuj̙vepޱ=MV^4ղo:Ru_h);rliԳ6jU!(	mnefɚL%iMlv̜i>>W-\{`kbvH/ϗ@=Wx2F)(#u|A^1(;FC
Q;~`Y5QwqȇގaĩEB)[	{z~
^઻]yd~h]h=BTn)3?	11:짳!I}
8|ԧ1ޅ|WYxA
j{PA$U}=DoHb1şϣ?
ϽKz=9H?Fxvۃ.?!ZqR(ފ4U߮vޯ먉%D7zPg<@gʇG*2D=Pfi9]eC{]=s5tY$ZoJjyԟ
a/ƱC$V_Jr!>.P/ENQ	Jj/-KomKHOPK
     A FRG    E   org/mozilla/javascript/NativeGenerator$GeneratorClosedException.classMJA_'cNQFp(2	Y}'iNw	ʽJpwkFͫWU_3MEŬ9J$BU[4qNJёڶt{n;RKː]]k3Ԣ;"<ENiفB[Dwx#KRx	o͵T|̣n(Goq+⋳qxf+drAFP@Ea)_qOcmP|+
Ed !b\zX	r4G#ͧ+JG&1֫NB1d02
PK
     A ̮kO    ,   org/mozilla/javascript/NativeGenerator.classW	tT^fy	A}L&,F
b`v283^ۺŪm5$Ѫm-ZkkwxǃޙL&$i`|{
yP4[DMld-;mv|H4;b<jc6lqkl'xv!);vb[^S+q|ᐊvtǎ^Q8hcc6qϩ8aG	Nyq)TA#GC@(b7z?Ty
葈Q1~=G8seP0Ճezݰy9<5%N,loj\Q^KzyU0b`QCu1>'iu[Įk6+Pr46Fc5ؚpA)tS?3I-sq劦%uu+T7	;mkۃޘSfԄ-^*,xhiwi=wR?h4^c'aen|Em{kVD\R`
?eh0>^Ux~檐'$Ti!/C LKjc!А!mP4$4fwbMIO*

ц:?ڔˡMK *
*QyjuA G/8JA:?IAߧEhx=*=PНZߌGykRΧᶤ%pߤ[hhwɟf	wё<N5^bK?UU@K*^VAo[F]l}JyU)f'Wy;SeZPL^i
!RWXXCеo@
Ì9_K{,-1Kn3QC3~i1^1:
~*&bix
?ЀF
Q4BoĄ</X0rA?mryP0uTO `p&<ȫ[ēm
m^o]Wap; {ovFZJ
%APA=_*Oh+BEЛt\¿kXFFUT"R	o5TpQZRwR&s +c($'
&f+We@FwDĈ.ÄHCXNO.`Ɉ)dR^
&4<ZK:VIXd#O<:4#XB^?W
4a.j1:@܉qxҪ靨ʼWV7ϰzشǠTu!k13T糔@:=ҨJU|2Z"Ia`=l4p9<[%eEΰ^bҠ`@_~:7ո]D7|gWáMF0B|UW1aw1NRB4k:
R}_,9'LRѻIzuK37_]#1eesf-؉+P_IsIt%It]5h~,ϙ_D/$}u!(t :C(N!Yeg>6,rJXA&KBYكŮvuv

mPP9qrwJ.إklTO8o<7	S11k
"ɱC׉ok>OhkȵtNÇV\y1|YBRr)xӴj(Y|7ÈK:]V\40z1r	&F"8ri_?3~,0'c4G9D,*.ԩWGVcTqeh(c,Z8kUP^49r
Y%k~afǆVj\#}riI5@Ł*scNwapb?h>(Ƭ׋zpa 8n8O aʅ4McKۙµXpGVPJNZ@xڲ:,mLR~3(ՊV3Q^?$<+K*ϓ-HD|k:Y*B"J|m]!Efr"cB]4;-=UԍeV١<ҶMchN]l9Ɠz0˩g5ɱ{v4VmNBd7>l4ӳE}r.6]ND'\AеcR!}VC'\vFԍb	f<[w9܉quta"&ܕiD8MYʜ$G7+#F2^V갃62(B1.QcrFjUt~Y&1*nVq[R%_0<;224ep)?b0M2irBxe;Tzky;l.t"݋ꌕNWWkem?`"9-';UneqV ke$VZJS\
Unr_ʵI-y+KP.>L=cr3)a";Ed!7}m -']wK[oނe.?$g>>q~@l&
C.G FVmmGcNٻbi/>Տs<o7=e=هg9:'qjNZ^|}oWNuQnh+˗hrqL.F	gѝL]b(ƨܬ33`?zP4Jl>S{0=gym'洸\YǉZ<en¸TQmF3wL 6Ze{?Wf剷#'c1a܉y$gY\%| ';FK2*ȜbG$j9,K\D\fNV69*t	 "@;K!<B Äx xINz'N=N-G#ѱĈ.LSt)]#'ĎZ#5,rI,$
_O&Lw# lex8(v|wx)rdPK
     A  D!  wA  )   org/mozilla/javascript/NativeGlobal.class{	|T9wf%L@X
$BXdd&L0 Rk-nei-VSnmZVmnV믢&(Aﯾw{Ͻ7ٓ=JDU\㥋y^rϘ%&יe&/7yU^/2bƬ ^#֚\{I:_!b%ȍ&7n1y5|~q^	%=dd`IH&發E\^[MovymfŒ^!+edWk>'k<|-_/$w7Kon-zoe/K/ExvKqN"kswvJe4wɐy)m]ony}S^e=\}ߣ&/|[^ȫ]$}A
N)v _tN2#
NىyR^:wA:;M~L~'d'M7LD8	5.Xti,&ϔQ&hrY%[O{իgͮZ8kų^l6j.	m
mE׏]G0Yյ*kg^Z7\L[SW9$\V7c
a,቙=bMͱh8FeG{pudHc>
!BRt3P$Da06T+e^3X6ԤxpVk9^kϥ+}vUK[ ˖U)2T.[j٫,^XZ.%eXtv<ːL&y"4&Ga2q6ԯ&
׶4
Bkrz\t׍rҙI0׏mm46$P2)<16Ԉ;rRLsOj&}Nd)+Q#R%7CG1nluÜh}ji`4cǌ^9=YűoӸ^{xrh8^J$(9upȞEV3$Hǚq#plD8y%.=V{atRX2$CEw?\;C#gn
562OOAeթQ8I;N4B]Y
6nmjsF0nt[$h
'71!PNJE$\HC@_lc늇"P.Gc8
	EOj^\9ztKSLguERz2'o
%gևEDi
ApX+>4G}Cn]"7DĨ

uxkVY4r	SuM).i
%0D%p9P̖HcC8>m_R(8Q9ص-"
Gk':s]$HMK>
d뵸k\Ll,e^ Z]|-3[)9{9fOسBZh
'!ps<\J
 ,n&#MeDsUF0i4c0}vvSo"j6FPklivua{Bb駮7ɪj<2P
7e}r]KcҸwKrݹ)Әip8n"%:OYXUUXSUmK.2q]("RhOkDK@prR^~Z+#)MYا#<Ru^]jf!H8e:}RIy^}cg?'"UVOiC-dge~6ث%7;ՇF̢>)Ttfv8fc/nxu۾Z#~;aѭt?'m*)zt_c-8D/@hC -~n6igإU_o,~_f񢒛1ǫ[E=
G_X':s~4ʴo,;e?xEZ/~syţ?c]Q^=>fF߷->'-^ΝQ&av_Pl)rsr)XO<RXdh) ʰTg)ʲT@gz ДX?fma`rALNC׸}-}r,w,Xj*`5RQx^蹥FQ:<JieeX-U$78e,V"xT׵YU	t h"KtbG`hp+LcW}Ҙ&4͐ӝٲ*Uؓ_R<UL!O9ՓEi,"EdO/Ix2D/DJ ȏ+,GG_=?gPe =l_oxN!Ci\څ;doDK<S&-a¢O
{u{
4b jvgϸzW)>M͕:jG×tO#p<}9^\ӨhVS(2QM~LU2JheYT܂CHK2BemI:
erP.^`d&cvF/Xݫfb5fl54N9e{^lbwE/cf>K|g@KZȁ;tCoMC9X׼>i@>МI"QpS=[L
Φ1@@i%on.|	n
w=bJXoHǲ|"%͡pẅ;	|j0Q~uB8ت.zj3YCZ2XbA(YA?7BKIM~`aumhRZ#"Bia`<,Gk$g;s|d\SPKprǭ<$f_00+6"p/Z,d2h/CHUk%_b:HtQZKBt֧1Kqo^.7
}<~oG>M՛Kݛ}X}kŅ}fvV}U^mFN]OM7FᐾH%ڙ._tK
[6s_F](Qރ=_A={Qף=Q>ԣ|_QnC=@o|Gգ|/G>RG(
@~6f,RJ$}KP+у݁:;[(=DۃdR09/x\rg8Hpλ+{3B<\F<q<\Z<;pW!)ɢGW$S$2%'Ѐ*wQ0%$FapAQ
9AXa"3hAҒ@Qc@ AҰ4<QA+9Y<Z
+9G
G4:+<9T5_Sq(*{T/uXΖ\SnX9vNub/js$1("-fHsqPnH+Tmb߫D%Ks+ϧ 
 
NZMF:*K.RJj]NgvOWD΁N>NMeM%̀T*f
fAgCB_AP	-穖^E
d#-h)C_Zn3i-gQ=P:.0
<"<6ċ)+R)(&]_V>@n mm
)]ɿ|L؏gTׅ]]εsӹkҹӹ[ӹ=;?{7b4}Ɖeңé=:'v~畽${gn30v7?AG3r?ƬL)?I?CgN?G΅[" 3|w?RҠ_0L~zS@{l~}NDczʣQL x2[a%t - SgNYzZls
]x{<yϿ14#蠩Ft;l#'jnqLJu (͔;*Uqm߮56;hv͑.	2H'=*[a春k>T}TpE^Fn0 &8%eNc]@Q=u8&^]C7AoߎݰUž	&:Jt^h}Чv݃8zyIOA4s!tL(5UhUr@b&;gbnwG 5,&MUHrXΉ8tϢ::%)8N8%VmM!jNꔿ6:M[.kXǩ._Arx>M9!e
uؕQ"pZi;-^-*{QrK غx0W7A;_T_֥v]TL5'?=s߿AwK!:פ%/d>E~ﴮa64,F(qzATeӒ,7щ1E~-	B~O6re{@Gpq
%(ٯa/ 0(ao"mnTl%T"(K a&
nCނ/0w) ](``{c= 51uFzVID<}r@"!0<\4V(;0P021(V]1'kqq`vJ4]58iG UMuLgWA̳.%rNѯ.ң0>t5yiyNwQ[ЊɘۄG7ٝ햋iT[~+ _h
6zDaGeIT~Z|	^v
<l'h٠[GZqAmYr;L<dWM`K(wA)UG*<r0aj^HbQg@xzP|R!{}|ɜGAZ Y/p9RYZ.n1Wy"sSO{\>||#\OLWy/y.5{^q-?x{Op"ܼAeqDy&5j$Ǵ	o|Css95G,G5Q͚i
hcVڄTvbBO-06O`bR$eh6xa~I iMۗSW~NxV;繦ӊ~ahBS+f列lAf,Lض]V?nG!"4rQ3hk\,@'H*C4I.m9D!AR YBR
K9 QW,GrO=<7Ӛm?4
}BMiv"crl
AO) rĞ`
$*Irol06=4/	l+{|.k
?	iyТoh怀b3o7lކN

u
hUyO7s|oWyw?ywIn <5.Dn߂Y7}܂|=_ZmQ:A'^^N,f92x.MN  -0XSi2p$xK0e0obzb0n<*]99qW6nm˨'TC+
\s,9#\d:tbQ03Nv2%Y,uTMMĺy{4W8]ymrC|/?j+ue5A\kDA:5(aAom(mz 7Å2ˡAWX*y 	ky.)֭8>S.QcǏC @?Ic{4O)F8,!l1 D)BUHF7#依_iBEZYPhQCbG!:zd*Rʁ֏<D&~E?pO)r8o%%:3NL':AMq,_}2'+8w!>X[\VVh;t$Ϋ?{]AݿD.#'*HIJb@XR3Z0(~i@MW<L=P߄
;.-0 ݤ b*=|m}^a|.FVVEg]RA鯐^;syԑ[Ӂ_!}ҫVۆZSRg	;(UW]lL^53jfW8aA$7<!uPH	R{+B0^B0܈ZGXXoе*:`;ye=EϗI#LTɥXL5ݏ)3c& -NܴN]RlD3?=mEե
k֔^Vn: 3y&dQgi3a[fA߶TaV62>D[:R->NCT.4JQʧ	&aTZhZ΢u.WeMϩt:vWMjWQu.=&~ПyajV0V(Ylv(.pU y&VifߣT"<_7jPČoJBxU 5(w /HL "жtPM,cRrde3NPщCځ?:dT\
Vba\c.|yx!\88!H
57wF&5jv_
40&ךXlZ:S)+? rв5!nuP+	YntIUCSΧUxMT4Y-!
X.rRMHI=Oy*Lo4PrFW\TZJ.{_Nn &3. e/IoD@,Gtn@8ˏ)j:/pL0@ >/}|bW^>ZP:K%tޝ5Aס'H]v0i YtŶfǷ2A_vFPKKE-ܺ@K`44
7-[zHtI)NT;oސCg/-OHNvw	rӷ]a	z
J`KDiހJJ$ItCɽ[57CNos[RYKWޯC#Y\t,zFl*4C|RG><4?쨋!Zj=P
t
XQL#MSM4WEijZu)RqjV	ڬU T7эrڥ>K_Q.{ՕSWӓjP}~^K^SӛU_ԍlاYj'g[9OΥ\jT9Vu'oG^ޭ~U~uRwkj7Eu7S:Xݧ,uTe#PECv HNx{7Uh6`+L0t+`~5tҭ'ZAVVxo]ci&_B.^L=BrzrQ=T_哆MK*Ԩ.ZRChIM%OTF4-&a $,/''{@*s (pd;FN X#}RFMIyF
\9*<<B~|vjAV\m=Z5K#գ4Z=V߃	|fޭv
礎C#!Gyv/5kS.3zL#\ճ\ųR;q)N^:د1xg]U;]S] -x'oGgWiPq`슝uuQB7ZY} ^~}4HB9U~C?P#huZ3BRfy
<[k9p_H*th9HiO;؞Jv5/GC4iÃ\w?K
T-JięO~0#PK
     A BK1  _  9   org/mozilla/javascript/NativeIterator$StopIteration.classSn@=qҺi6}8uRAhؠ3S9ve;Y )Y BbQĖW+JZ.<wsϽ]469lF((BHDJۭ=d`fF܋Z}q N0|m{]{/h!@z2bJCw:[h{m<mW}jrL$dHPD#2`<OU~е{܎=N "A`mBK
5!NKfBh1T3
%kjp6J'mY~I刳z

Tx$-L~;&1jN&f1gbb	y339ÄY92,:5]tqS,rfiG{ry:mQQ4oHY}EbhCuiHa1r"S.$ZO8?eU&$<IdcGxwDm\Nmu/HIfT٘7}
&[	Y+G/ƨڈz
};Gȯ#:݇eE[QUBS"rPK
     A 68;  P  ?   org/mozilla/javascript/NativeIterator$WrappedJavaIterator.classT[OA-,]Vr~d Ay!T|K3-kXv7)A	^}xIgv["Plf3;dӟw LbF4ҸNjta\G)˄[u!K?d˯-nפp\:ː.e-tYV-ybo/r[yWˡ]^rnwf-.3UYmc2wy(^7䚨2>	y8(mnv#yNj!c,q)Fp\TAA½fժZlKܫ؏JNY쉂升<bc"C4h0B,tB
0t[M0`^%`qR0r1pf݇bHUfxu)j!9Q#-!@+,H?-TFklerͺnGX
2^e6]ez:=}{Р#$-IZ=ȐKeYcHXHh EgڿPꯔr) N)I%p䆥TΒD]xF?3jF-R/mOIOA;KA_v0" ~Őub".s΄bDT(wb ݯ-AmE0Nѩ%MAPK
     A PY
  ,   +   org/mozilla/javascript/NativeIterator.classX	|TW̝M :=$3,u0$ ar	C'3nZZ[RU$ꂵ.u{>?wd:U9s|[}OZ6q
>qG|(nc^}>|#Ҝ~/xYx9?!Qćd8&qi^V/>e>iP}ȇrs̝<\//d>W4J5ua&C+ÿ_e&#ߕ{ߤHsBVÏc?a=~*?3
l/LT`3S/i(JGуHNGI&D43
=ԐO%fgt<i3_ymSL6&mnڹwBcG{o+x[["h{e)Tvos6FɦSھ{{ǎ}]:x<1-h JJ>a,9QdE?_hv'"U4od<3hL]O$me&e(7+ޣ{vN=;Ivs&c5<NA #Qbqn,vHaSqRC\23
Mo7|y1]4B"f
.?*f[tHFO6b༁Ě4<q`mL;;<5gUӤ;^JOD{NSs!%mO!;Bp(
f&OgcDBa-ؤEt,e
jlotSQsXM7dd6Ou7]gb{𠝤qևDLpw2A{vf8cuӽnXbu@	w
.4u꙲)J$9m1=4r'_$${hv8MC%<¾xM9lP]c\1{K\Z0ZIako;-0GªY:-Y3c4OZ㿅'ΰWYJ2/YPnB5Њi֚NOI$h=b0g)2Z\LUa)KUZT~g^oYj[q-U
Ճdu(ƥ@}qXFͱT\uBmyj!\8MuK-T^l|жbRK21C8lFRMc
)&y-d1,X*Z[#GRm23fbQL.,
K2*Ux^4oLL% x¢WC
7EJp{N3u耝+u).pGϚ+WPb[$Sz@qcsK+J=rcIY\Uɹhǩ}RN^U4aow3J;3LL	bh֯!gHa%	poj>h'r(wAi̓B{dH`F5Jmvv_Lf<_,j4(򈐷ΠS*̰զLǙU"髓}KL?cdțMM%tMU":Tza0R@sb'6i~&@T⥳1-DgSDPEא%*aA()HemSh`i.?Y|dڿ~*Ok'#3ˁB)^|aPWvz?%#2ӀK *;)uͥV0{

hzb0w4y	%^Tep|BG Pyx:9&17@<;]?x7{_ľ/t}\y	G7_|jʺP(\0B:r阻Nˍkoª?
oEe_02uBh"v
*%`6z,A+[h2t[DZw{Ӻ)bt>!진^J޵A
r}\D}Mm"jNhSLl9&mÙ-'O`$*ȗܕaZSsv(IOl!͎8j;qԍ)$+	Aͤ/eOds.G2;r	]9\9GU
Ix|{A:B
Ks
yuwG.= [.E{H
ۥ䢑7JVPj#^NyyXD:/;9n5VZs)NR{F"쓞oP7MqTx`y=^"hjaV07zҙ⑀Wt%g֚y~V(`ǰGZO<A 
		q9 riv8O
Z	Xe'ҽײgލxMJ*lfuPa9,#CGȆ,MrSGV~,0OC9Zh|w8z|:8k)N4pqe'9
X8:OhmQ\6Zj`Z3`'``MjRcP!1<C(֌㙣xGG2zF~:4А>Hdx{t/>ZѽQ܌1xNiY|3E|h
ACn
𾑚2||TQLD.rud[t8޹s_&o9zoݨG2=&ilu_&3cȯ+y+Չ\71]źc>[qraGǾ(3!:\åt s;{An0q}溰u'AVƣh
ѮЩ&&l̉gA<ٸeDMMV !j#,u~Bw!f{5\|x*rnZ.=T2\~-շ:IGB]ek"qE;vzo%bQ,u6=5d8+쟧prBΏf^+av]QO^{Ԃ(%pPpX2+׫rܠ*pmQJTƼ5ѻ>ߣy}]
r?)R06ڤbw+m.bP}B'ɄZCв~mtKhL,k
PK
     A P+B    6   org/mozilla/javascript/NativeJSON$StringifyState.classSn@=n
m)O	҇J-ٛcxM`UH@ڨԒόgfϜ?}`1oR@
ycAaQÒe
+\kK>?nGIm&C![WH0緺-w/<Mgr2b+PZMxa(m{"b(¨sWH[h(lHdLg;3#lađ1L*mkےT+Q鍜9ogLː{4hM9h.!#{z!cnS^(DTyʯRSJǍ̿B#Dx u?+IܣpdFl\G
ܴ1	E
qU\zQ=c뢯7V>SYt@pR#$WgI$XX=[dow\sNH=H ,%9	,I0䔲	N)մC8<dD{|OXgxm2e`<-OKO6)c<=TxzUs&[ arPK
     A <,!  bG  '   org/mozilla/javascript/NativeJSON.class\	|T?fyYH`5I&pa7%h0	+uZ6R5+R
A*ZwݫZZH$	Ds߽ssC=~"^6G(&)6{O"}>y/eҵ_˥v<|Ԯ_0z:Ԯ7>7HxFdw}<O!Yb>;6'o7||'7ˀ$[{Oy|]>*p^?[xyqkR<$^cR>OH'>~fOK?|~|@vf)6JI2y)^EK^{YzE?3UyM~!_+/jHץ
oM2>*?mH~*y.zGr02E fWdTϤ88G>s)H&ş
E~o%>ã PzeO*42TL̑6H-W
7xTO%<R>I>Ob|TQ<j(A!5ԣy5ܣ
=jG<ȣ}LWhd<V:jse22euuԚH"M0&XfQ4-,ĳ%HMcuH~_+gV܊&d
lԭe2ϜKVT._V1l3'[Q>b悳nC%W?/VS%%ⱆJN\6b&L9屺hEch|@|,mwU
xLD4Ry˰D}qfVD
QffAUD@2,6IX;QNAhR"Rz$9WC$ov)I2)9|ucD]6Z8.&UiЉhb2Yۑj3`sxtdG0`-ɛHi/&nUƣ
5*J43,(đ=OjhC2&3
DFBgćvFt.Cdo	1VjѸ؍3^_tnԬci<ݞ8"E7NF#Vj5Q27uPnZ4Y֑5whN-h\TqU}lZ !˧`ӓQP/n2IY4Уau?uQ#hјՌVI+
L#8Ǉl=
Ӽ#
Ѻ586ǌNtjX
f4UYFJX.tnWqc< 2z~g!JͤcnĬTe:0.|yNXTVV)`Bc%YȂ~/^YcꘇVv}3PD _6!"ϸvjcIm֣We$r+c.h
B7x~LvH1,))xN-
}$+bJ
%>n=:lZot⮍J`6c\˳/Et&2'bB/GYD2ڰf"oR($ܳ;+"@$J)vZb$3ϵ^ nc,N6h@ՍU0^^`/,_6zu
u>/v#*U1˜Fh:'Ȥ7-SƙTUja
H 0'\S_qr<&*@n&1	'Yo{ՙ:TiLbaf*TO(':$ſUfYIr>N{*$f\a:KE镛뒑M*mSUL5L5_Ut c<S-PMH-R_1˚ı*L]\qC-acsWMB}Mj{Tu'Rw5*Zd[݅6UL5:SըZxhSթzS53fqOJsJ*)2mTL^2y
bMjvW
uM\eEb_ԈKND-3cLuLܤ?ӻBR]XI5E
rB&~m7LckDlC'l&37յN}T׫Ls(S}[]5
BGJ[nPvGᶩFSݤfrSmͨ%sSϤ5껦jRMuə7BKoQVEj!]"oUEM^+wmbH1UH(vSߪv6=S}_dL^q,P?D`|;sZl٦jV?4ԏLu$UjbU#-Wg.C= /jM0fsSXAӠ.FNXbtC*ibqJ?8 8-h<''>SQ
*u^S=Ix>(Hq+X%Eq)R4B#Tc:7iܗsu4ix}>YN<ٍ	LD;|rV^Ĕ-"qPrSO*DW!aކvIA(9݊	NWYوEB2qFegWZjlɿ̵qނ.Hߧvͦ=xX'7VGIm-3_t%ǅuHohMt(vO>ݜh"YYUrGQI[^D&yr]tcJF2-i&m#F.N+Z:Gɔ}921&7nU^/
W8+6%NhR]sWɕb'!If	L02
ʪBƈ7퐮Cgu	:O*kP_G>|.!ewMN:^$*t<w:e%M#R]}dlJxG
:xYwݥ
ѻfIZ(\>N6'5V\perѸ2K_&w>FtҾ-*[=kٗsUq
NT@29úp`sF"mMy<W :aI݅9ЛiUƚVx̰JZFNC9kO@MJ}ER	Ҥ@%n lH/N4dn0+1,K^팧lp2u7|ZN&7Hi`ezm[r:PPҭnAux0#7=:xq>-.jMP4p~֧zgCcb͉]GehG'eaZm2I7zj[dFN=
yCz+Q@jf :'-L~M;kME{U}VN=d|ԬH ;q"7mH.N4lgLS\޾c҇rvbuEGGjWVG""U
k[z|ׯk=ߑo{ˣ&Z#;M_8'% xapq4D䠾SzR</Kv/+ϨJyd=ZBPCa!h?\wSN }@VzDFq4HG}PʣQS(DS1Ĉ4*i4-Kd&-o5w:yôؠߣ&es6
OC=n9N/oZXP#mO.';YzZ{OTޞJN$[h^a']%96
&ȩ(P^+F+ޕ 9MBy:>:Li
5MSp7kٌRb]jJޣAEWh0B}Nyݠ»\BGaw416w	oaSJvV
gr1N
\(<@s]ivƧocN=>B֌e"pe/-3.
vUV6zeC5!,?O``О
>#|I)CPQ
-	@ν4IivUh# b%J1<M4)mR7H@:C}ss#f瘁Y0˂iX.	:а:d/
wPL=t_!:FHhw'fq*j w7ߛol.vP8J~ fP;)G:E͔+uL-f:-{e5)5/N9)닌6mit*SaOг(;'76#MAFatSh<l&zڃmqsbQ*]:+*xӥ0f-ZXch	%h5
@h#z6y.t!L]t1Kh?]ϐ?
t%*hop6]ÅMOBG*^D	%ƷJ^~7L2<~ꫠ	oW5;uh}obwn[1֨j({5V/HS
1t~N-LpGQ/lbYRZP"lVov(MLpmK@EG\sipinl7CPtpmaW[8A=r 0#aOv=f	NLh|~'xQ}-4i/Dv&FUj}y
f=NMZhf9m9u;9J;]R4fJ
tv8;h9 =o&ln;(8mrřn򰳙9|9=촱,$9זzsaTQAҚLZjS37@ ZNYA#%GE=AcUh$Pd	[В/PPj)Nԝ(AQc0Є'/pIFO!@:i8ga_
h#:x݊ojwAg<pGjЛ0ɷO"D/?sg_y>/r57G|1}̗ӿ:KxzbRU@d+0h@~H:y s=y|]4Mc~<5hkڼw{J;tcmN!_&aw.'~IQ8y4xE^
G"CvgQW"ަ6kq*z wmGh<szFCJdt!9le)6_dCf^هqs~49dfs0QiwA[iyEn+u!;D\=4Bs[Mtz\|
i5#{k_V6QƯe
{R\ܴ^vήňA*Gj"˳XK,ZV!SgUbaT ~LGsջiMйFn=SFÈoSYB
NNJPr;yNLcLklB`B*J&w`㮒ݴ67q4η[Rn	f	5ȒRbJ9^:ce۩o}&-+nM.lt$o	"ӫvY=D\hǀ-Oo+AcO·aGjm0Pq^L} EOT=htBGv lAz W`<K$Cx.Sxk/@y'|[y
Sy?3ůl-VxUY<_xŪ//QxS\uP39! >y, (tCXOǧJ+[5}	h)RL 5N{T>MC_ Vs!2RJ8
X!dx%aJ*tQCl=DM Ehhʼqg3r5x6lt^_m"O$В4QRd"%1]_4Xu>ni6`?{[vW}}շiqq\^C9FCx-C|:\K犠O%];Sƨx2h9"ה5?
Okt;A,u)}yh
,߂r  ok@sޤnށZQIÄ~b&	_vw~UVft4SZjIXV]zn^d
YPO)jyJY=8QECz>on2蚍~ (q8pnh	u$ Q3f<yqwDr!q$$A+$6Y{Mky;eR;,kw+ZՋ\RV[_d/Nȅ7Jc-hR<e	S1\Tk$^{)uXOv/.
:!ɠJ27hm	OhXBAY%l%l|LBsBZхĮKh'o_AJz^ooy#XoDڄt;{f- ZķwoZsN^͜w{y7g!y[UU}aWk+}2u't\#˰tJssW eȞ˥
$rWbռ@2\A:m!qrP>!Q m!Uo`J^d
/^C NH肔F9F=BvZi~nb5~UnSoЈ
fX>	S9L"q6K;
5گ#,S)rS9Z]UF+@R/ܝHRh*9H?kQ+~k	~\jԺ<Oy<X݃`rFf3U`MT[xSji]AC&O".; Hd-C;ޓwo{@>(mr=W"A
-ljF_d+U{n!V-Xq\[<]c@Wʗ|*QXi-Tz, 0`OQB_"l%Zǯ UĠѥsA7/q fo1-=ǿu$oPq[,K]{<7DEh?6|1W?ms}ʫ\*G5.Fyt
CR	W`!_
c4W
z5.FC#+h]L<+y<@A^poaO+A41(ƠCcd٬c}Vlc'X@5~}gz#O-D(HgTPtH)Qs;)7y:Zi<]ѳ=( JX:NwѿNz>Կ.u9\|/HNsZ} w)(EBNt~E}[#VmuQQvnQ`U,
<fʊڙEǭکyA;ixQ	B<'LNୡ<9g<!S2)OeQ_M
U.'mPyEpOW ]NU?ڦj PU@?TC~5vW5^U!*U1ScC56U#I`br	ܒu1Xq?2P?̇{?!!߾+ˊ3tf:l&oN.O28P<NB$50T&3tb'f4&.7T
G8eQzcB'/
B֥ByJ*Jy"LN={GW\MFl1rtf(u&HQW>ѨBZ90"Y|HDH#Gɍc${VZnzV A5.@v]/?PK
     A *3
  t  ,   org/mozilla/javascript/NativeJavaArray.classW	X\̐73<Yh`&@T(!H@QL2gDH׺%]MlZ.V^5}aO{9{Zq[M>[p[kp{xkwm:;A]b׏؇ĭ^/{Tw!|؏:|T<>&	|21
`
>aq6!1)/> P>(Va
	?+.qq	_E
e)+5c=V2[k6j(i)ǌ;=f,m=W3i(2IsTCclM;>bV|"v
޾XJCy]KLHM'4,?_n"1h9g9,jr躜d4>H*_Ѹՙfo>*eR5V>g(JDvrqF5՗&NӉ6rY(_4zKfڣnR}vO 9wM7K
kӤ'G/at3&LY};/17SHǓj_߇̔=as SwEGWEɤaemyEֈ-1:kͻbrfcjh?A#tjJc윔/GSv)X#kRجo"M=6q
k.Q43'1ߊY,?z>=0Wi3j]A}C8A.J_aSV{?jam*
jQ53!e5#RD;oNڎ&uʺ*m$"lȭ:`NY,ȫ
Gf̭B&\U_SYoh8)qK:D֑>+/j(j[7u|wuh=W:o1~b` ~\t
KSRÆaKt48aYm:~ew
':bgXY2Rd!xwA,
vizuJ[#gϥl_	+ibaQ\g0n5]Єx#qevJ7qѩaq#9V
G]j?6<#&?5\єJeyʬ`8bب(C
r3Z&`	;nŝnYŰVk{˦Ζ]6o^;vUZ5h%l8ԶGQsS
v?Fd3Y2j2<tT;[vFLVNNUk2i'׍ l)-`2*d:v2Sh|VEo0(UTSi=;DXH٢|+ LE:ێY&;{VFzEǌ3Hue[SsMYsƔ
O@Lf.vW{*
Xa׼NSz;hPHd*$JQT
YrF4iJq}v1eT.4`?׀ >sp.]'?y+*ހ6>/N=ސ6&	'b#{w-S]mp7ɒ"
Y	JB,۰ը`/ E
&f+uq}V8歚Y?><P	:_x$(	0E~>O+QZ,DNA+X	$
S@Jhɕ+FGwwZs)wB;J>ұMe:.:qrS:Hl`#  |ރ)Y!ոw2Ж5.ϗJHmg*yWLܭVރtCݳZ#"#yE"xʕ>%iGEdy{m{_HxNPpJk(
Lbᘴڢq,ޏ
:P:!TncLk/5h\
f3Уac3߭Ll<eeަ.a|12\hq&.u*Q"
u&Q) VNs}ٚRwO`8g.;P-gV2.#1q5Y*v`'+QdMnx1ǃ^hsX4BqJ(+PJ%ESRx4x44]\)7㰕k3P:'=:PXLY+!*
/ReT
M++G&q$V@M֍':$}b=P4@`>i,覌c2r@T<B})VCyɕ̩ZF\Agŭ|Hq#I\۹ˆXX
#r4Gp$#8Bћʤʕ[|z0:!Wݪ>C}Uw$RU:pH6&]Lo`ֿˉp"w4x-ePuZ^O>.*")=ye.NluC&~KMYN*Hul'*0䷻E@`1JìmgNba!vs69ty=nP-j*{_$Κن\1{(N=9ΨV-6dg৶y*'{ =5*r 
M2fnPK
     A KC  @,  ,   org/mozilla/javascript/NativeJavaClass.classY|Օ?'|3/$y(RRyJ$003	hk
Ca݇vw>kuvKb~<Lds;Ϲ^_9q"y> ~A:|??+~-vȏ[7~Gb?3􉗉=.5/;AK㖟b^Pp44%P	E+`
Ba:/*%'6>Y=R~y<Z=`8˕<V<Nf5уIBWn9j/YT+;P/mb4
&<H/<͟AY9óRif/|s\/,f/E:bm΋>t|y[&MP/rBbFW2%D$]m&xlU|hd^<Lbաh<dKlbj͋xHu4ZL2Q
ŚkSHy&E*^1MsbMfjk)Tj-nKEV4FcT[՟x%+je6NDZS}͜
ήYX$5Q5y56/dֲLm
ðCo{PKm@ߪ6`{I 6𝙳#N4s&0(Ӹ0L1b{x_<TtqN]/HrNS5e&L3UŭX\o?/LyC&Cck(P0r4b)Lc*
Lu?jmf8%XNɶhwefcf2e6dH;eTT;օp*`?쪬(ecWnm~mwڑQQ5yC>Ja?jB)[B0m	UC5dmk$yU@K E1 *lg_^y8ke%aʆͰVH,WBr#i\v@lҶ	P:#&u-3mp
ǥDBJbs->aV;fk$QOK)%;o]j %ٌ"I5:Edsc	QYvn|gL6QGjvGQ|( !i%xKk<fRrZb&ff=V×x"l
1(-ߐ'T$ӫ |yb!矜:[ ֆle?KO2aqk(mlJsupP/U3u^4+o+@+mJyvN[
5"oKͅUZi4סo`_I]O7|_o9lPȞ_n&Jƍ2mcFDAл`ٚ) HgӠ=EfoHLt
NWs !ޢmniP'c+./1
k:e	hc:SL|Š
{
uSHa{
mJ,4Je}nD1!vLħXCCը)RoP>~Yv	
?,(ss0O^7[t3(:qobeT$H?
z8?QsPG!S
~;?5'%xB4
͹m
W|FJ:G~u>jpYޣ&UI7j`KɭP.:{*r+1UKufݖibޜ}q)W)$zN<J
&G6ޒVc[@o>Wnk`qYt~O%˹Pk:A+ruK_`Զ7{\C2;@ΪSxF`QACA\zā}!W!JAU͓igr:{lUsjw|ʤEdZJBd	5?⩅y"'
[r&W}V/XVK0ww,8~>nXl7s?g		kUpV/7'ܬ?jPg6-HN./KZ!Ff$-Q6=+OYIuZU:(1g3D!Ir
o5E"7߽t,vRV'4
,!Hs; y@Oi&8q
[䠲/<yB%hX%fƒ0U|i3.]8ab  DڐW(ۼU&6'[ąČaʍjof2j6`Hg:@
ӲlCzi%C{[re\79Xe`1:
1sG'"@R3֜:\ɒfO{ngp:]g2 )(:[ϫiәwt"l?p W%T)/&΢f٥-rK	w䠑dFWg~/J-S4Vڎ6Z|q}&(SjIK
ZZ@mNw`_I rՎT$E
HqG!ԡi]_HVIΖ=4|=ȣȉ DH-Rz
~#x|9c].TU# R?:@ CgPM&3Tխ\nh8E8g膙D3cV>n}(7xljB_IM'Fg~2KTIv4ǡKr8*cQtB
mQLC[":X͍}J 
OQC)rter˔bjꡡ
=TjiXЙVzYdaM#Ƞ:E#մMOȧ[iLS]H^F4Gi>{9"dͦ%]^=52ZCU@jc
p_Gw $R*0<w^F6
XpmbZ5|np;Mo :'ggJ{tڧ7@t;i+XXn
{~60
!ql	elw(-b̨I1/T@ՓSm*m}Чc[|UN7p nqH?L;Au'v26ۑ[yVzZkD֊	Xzmݾ ֧%>1$M9S~ITI\'Mf>.0˟ͫ{KMCJ$*iȀssːad+4*p3qP9ASK߁]qfkfYvڀXKOP!萶m7mJ1U lidyDS(H%lfCSS|kBP6@fh^O5=45.<M[5|B:BTS{hFWTRyʬ_<gKU <fwhV z負)dln?sPs$-z,=ԍA|cPnZ<Hy ]D;طyq7<G{x}/|v'y%^	Dj#x}ykp4>ISCV}
Ay6tV=
$@Fo70Ǝ֋ԣf?1p@F=KIpIqوCFz3X Z5*!W
{mghߍIqt"EWXsNӠA53`w-Hl 	#V%6HE1%S,8ۢV#KW,#TZ_Z'!bve-p֣爛@TcVUך5BZjhIミ?^}acST$-ONnPQ>,~uH^NaԤmA1Ui=]UMS}N!}PCުiX ]W|9@ňU'h,򹬭( f8IEx%dSQQc@"^G,cM	-7ܟWoû
_g}Hӯ;̝_)+ GZA}ʰ{huAn<%ז?V[7=as~f+
x]TO}".dI&^kKU>FOrFi:MǤPï&'72%j}y֮;JwHc_{&L	ބ,X-q3.ڏ>ED5C9e:W>.0XvgJpָ̑6鰏oT5cޢJ]Pkooml|7}1`mKP2QnAʂplEl($JDytȩjR=kۿWK*NL8f29ƢwXˆArGir*W .{8se36gPK
     A K   >  2   org/mozilla/javascript/NativeJavaConstructor.classUNA-l,B"*r^ZDDR$EC4X,?}A3CP9ws?ł&bhWq-q7hq5E*rL\kC/<K-y>3f'],q(j>n1cɸ^>lM*9"	w3P;f9V0П8>D`hX"_ϸ&$%g$xk#<6,9T2^QJOm3|(ҕsj",g?es'_Yf<bݧibM@VAE6T2zyL3&uoMU<0[yye7gsn3Ŵ%侀EHxh4LĔGX3@smCN-{UP36/6żgv~i`XNOz$dNmsliLjo>zk]APJTDSBVfNT+J!9+Q$N2mͦ>QMH'ʒBA8:QAɗInOthFԪ,5:AVӴQO%!Uϒm@lD<]Cq5縀+:QC14In!ZB]GplQzѧbYXpIO`k?.l!LvhaD]!PGL9KQ!!aA,oN؆Ax=m4O+m*_PK
     A FG
    +   org/mozilla/javascript/NativeJavaList.classWix\U~oNn2mҦiҖ6$@eiӠS6EKzL{4u"$" i, (**n3LÏsι|vo=,{ p]q&ni
	"\[M
pv1*,]\X;Jӻϋ ñb܏<(ix%!a=*F_X 0	
'&&X{R<FQq	)
O<YXD|Gxe9mqۈLqkKw5fucZ:VAq7TT<<f{[gm+/7lwdFǑRn문*8#mOb1E#Iki	-%yVܒ1nD&4swQuX3b8>s3\{v$1fP蜆,w9Fdo1 1/c({M-FrTQQߐuIZ^1lдw@ո'O'YJ[񨹟Q3f:EnIfطT¸*MjhA,431}DO5
	
Hy2(jUY}o
q0"C[̬63QPY_iD[2@Q[o8IINSy׊jj%/ԺVAeﴜ=aE9"jyyʈ3X
E=o`:JKZV	:^th{HT
dTo,d")N]c
h}ѤPI?hxI'p~A1ڡe|C+:^7nU:t|f+&}	~gq˥F/Kcإ{tđ!cd5Zw
22L^3cU86pU{?MaU
NU`r+zivDRPw`v&H2eΞlF$eJ#ke};y>MжMMϊ|UB@*]mҶa%]mk߰iƎvtˣɲYAY&K%fTNY68kҲ	WpTyVxGc.3bNɍD4b^y~'jR=!rF9y
0(a,?)	Rq"'WP7-;s֙oj؜aiFq0}xzr INMYGЌ79JTOWԇ'#/jcjei[I3u	^f-[no,a!ލApVsc|/] A
|n~_jlj2FQ4FQ\yOB;.uI9*g#@o%&,IC;.K61Z0lN15th䚂-j8
KB^ӯ]5hQB1X<!Gh(Jϕ;6 z؆.%4!
D᪻UWVCmsrmF.$]Y<meNl ?]\*m^	h58xm؅
B=FWOjǵ54bY]hnYv{Zq1(r4.@^L\}1W_mQ:T61K9
vE4zk=N\%5_j'_]FWrduUL"%6`~sZV_Ze`p:|du|9ً4m(	&j*X]$ab2'ѯa}zA?Fyj!ssrk0}8e.QJ	,L^>
XώIWNe}.yet5"P5vZ(b\ ;0?T^:1bY;yK2qފU'WJЂY%Y^8Jsq F}߲u:%'8D'_[%I|$PZ΋:U]*n358K_C+FcYg(c%~؅,;1wa)$neOK=\topMJON׏a9jzC]W^TCgh\SX]8T5ߍ%bV^-*C1GI},ǘo=zV=Ĕ|xʊ8iW8L+̠$lZUB;*m
@/&ѰRLŏpiѶv4J43=j7Q{sjkY&4,˰0q	&'¥EYnO,DhzG\A[Q
SJy_.n73]+2r:՗i	==g5?
*-߲5P(%DfwgDz"eraiq(bqu5qo؄gî}w<GЪI3tiƵPK
     A Q  R  @   org/mozilla/javascript/NativeJavaMap$NativeJavaMapIterator.classW{wEMMҥ-Z*)%*HZJZ*M%ͶV|V_ 9G=zT|w&f43;w7x*8È~4>a㘨óxGg8[)!)?t㔤uhiN30ehi`bЛ6f#ZjVc`TOĩ#imN43ٖa&#^-N[s
ISg-A7mkk6MMi٬e8YAv\˴
NLN	;RN9D0
m8m%3KF*9s6a;6r#$֛"G
SLV	N#i'D:Cs{F<Y]KS8-mº} <D5ۘӇH>XDkEi,"N#ܫ5Q3Zghr)Z2Ly5Ifmcd&Tu/;NJ\dh2֘%.PLy}&E2gʑ\%[*U$?;乜cuZ͋5.@TAFS*PaypZKZ	}(=\]TtbUC|oNXPpI6ȇ6rh)(xIx85S*^*eM`S.x]}E">`Q%֩ŰUhi~4**2`f_spFq6^ttqc߈]"E삧ST弖;MKOS9.^t`^S,mƾ;Q^5\6~viRmKnWOVՔx=aO3_1\
+gBx^=̍h=
EnRuX/(G h
\WC4ǨUSSt`7)sWfFZ^էd3J1!GN<J\AvW	^°
/×-zDA]'>j[rE^a^Er(9pqtGcJ!	tE'hNB_:HW ?)mˁ<Cb? wI0e'gMjZ,1-u}$>.Z4F;Wn0 r26uyPP
J7+el^Ɩ.IlA!7䂩D0$	?StؿR,7Џpc
("XD`1@~<^B #
i =\>Jp7?Hw$݊!+8 *O@Ai3z4WK<}J<Y!s
9)1o;.70N=cPK
     A Lg
  i  *   org/mozilla/javascript/NativeJavaMap.classW	xTof&/L0@B $
D\
A,<LxZk]j]kkj҅EV[l}[T;o$d>>|ys}s{y/S A,-A,­SЂ4ܮ 
qwQhxOnu}p
 {qo?,HYC>"7<,~T|LN5|B.2|JL1>Cx8hH}1"?IiSA<g*h54ke56-b"j$fB,aږd	+ZX1b&#o^th|F@ivmwh+	Lzbo.INFu]v3촍]YJxJ;#nXѨ*%¶紮05yjj4v?qEo,G~<)]GpQlic+Shn(TttAq.xV"P0
pT<0ly	Cu21;(FNjx<'zLGQ/No8V}ی2u̻< 5ȀƔ\hwԌ˛x1w;muy*XI]`Rs@Iq}+~^F_{/id@rC.I_OWѹI`LeennE{$o4'nK-HVB;Rvr)oD I"^mo [KFowĨpp|;ƍYrɷOPk2qm=mjN-	GdI`W,\<c%V
c-^ֱ,n'e&iURedmmy&
5WYO
5:6cordh{:*:~~,WGeX.G1ri/t?䃘~WrjڸemH>Rǯk
*~K:^{A<F6)㏸FßtWPXB>ކkI|
%&zZX8g8-Qs6g#s5hy<$[k:Di!UoQI%˖cRfg$sZe	ɾ4}NUKO"=[Q2YU-p")m$yʥ~6cKhZW?n{J=L׷|TkÊ%bn+!_wLXO+7,۸nqM\~"ʕRL	-ϊ׼Ǔm=oHj#L9ƸdY9,O{Aɛa	kY6t.<^Ep.eed(OڞfjJkj$Le#?_%]?X,r;=qSs*]Տm[8^CE_rLzZLXx?q,2/`k@qo`++lP
35u{3MIx|G?oKq$EF,5ɝmc8A[ˤʉ6}+]EҶi" pZ^xf325G59` mgSyj~>[ fke(w\R)oah0#E|MKjԨZʺh|565
`CCEӳCantGS*xӨs'$aެSzjsiq|6jX&	\Nꪘr3P-5*5zFȶ=zW%a;`fsY =T!,Fyxq:fa!9S%EzVR\ rWsq,i_1hJA3\hwB.Y)hYn&ѕFK\i)5.@ЅЍBnn
]Ew9ؕBy *_Azoψv&*%.u^xN>#Y:⼔#̌Q;ZAW&O㴃jdʉkqȼp|U/k<]3트WI5PC.o:Ccv2wh>CCֻYrȒQhJ's$nBt-@Wz[ge{nYᖋ[)$N$1¹$WGGf$]6+ʭdeV++=*=VVfr5>(A ,G`vߍta|d?<SI1yIc|q2F+Ͽ2@6%G;}y;
C=}U.܇]1+	փ[h3%SG# k@CBBqhč.b~`,PtpG4p8fadj:Gp [8IsE^6UGP_ a4/7 $p04FI7D svoXj[p39y-dQ$n.eN/~^bin]J^
{|?(8J[dD{qMFz*(joxWN[=y{2g ),([?u\UŎ-@>Lh?ʻ1X@#4G~LYuS:(Y7S@RM%YndThWA,Ϳ~ߣ?AzQ`t@~>]fxWG>!Pg]|{PK
     A a0  f-  -   org/mozilla/javascript/NativeJavaMethod.classZ|T屟sA`M$#A$ŀ$BW@f	.nxb[WQ"Z	bmZ[k뽽moC,;'@v|3g~MŠut\:1 .?P2?5:iIǽtJ^:1y5vx٩Kc=k>^nAegrXp4Cx?<#H/ s3xt-h\BXs'x/OxAHOXK<˥T)W4_$Mf/3>2>3W<g4xZTt4EdA-j"bDV]cp=7^^&˥Y^n=4^͔$D2-2d*K-GoΩ;8ϲ̫YSsͲ9	cnXy
K̩/s3PSnnϤsU_xY9͑HYŤERIKV/'Zۢ
Md8ݘ*_ik$[f0cUj0,u孡XKyC*`MF|S$5W뱨ZԞp{"ʫ.HDS9Dhh2zC%J's9duSyԌYES&]ı'-grUǛQh,R.3KCM0ѷ]Qt`B,RJ/FVŔ3<V0(/%Y	u&mUÊ&
WY.}c"lֻpq01^7͉ƍޅkI.&FaEc09Qܟ@?AUHB@C*aQh
2Pnm%Ëjk5#СӺPp$ړxVdRqk=!LwTdKj`
G%{Rfg5Lb\JI2tFEE6[3PH",^kȈ.Bg1BٓE1!%-\hQ398'I!/?
['~6b`Fa粘Y,`ZƑ$	^Zh)mNL<Y7Iv
/Bfx-Y?Z#IESFXi1"T$QoKfl'i'ŉՙTU]LY6'gS:S1հguS5ڢ s}`n@0?V
0$rbS
&Bؿ軀fS+xb
T@eP>($NkFE1x'K͵Eߋ$g[,x;c[9wDm|=nEW$&D7y
eVffБDZ4t;ӈAv!H(&aCeW&i}rs1( ~ex@k=*%'LqdѬl {Ż.MzGL^-&4Lz4s{1N+0N*Tp⨼@[?a|Yn8f" .L75j=0 l̫R`ۥ`]<Q [0}Dw=p?XEX|M=~MO}nԛv7&73lyZ)ƾZhVq6obD'x7'3SO3b1GcJaKQoxɟ[Mo79?wh|wcqLTb`f27
~AMA&tLz0w]4yߪC&?̻E;'1y]_1y?j~fVcr;,oD{)cr)oGr&s)zM~e5BHog0s/ " Z$JyJtUǤ>Nm^p
=kEOe3XxYx)0"LcqL!GU_[d
2ηM./JO:d`s8TbVM7â>'P?'xd@G@5$#G'"T$DZ(U? AW#	4jPO*ĽKTΜVԟyϙl	lÓOZ$lOD2tXh׃4Um2hځ+
w:jP<ӸI=}7Mv@&$GA7hPorSl| ˄lIBt?gy,n.<a[N6.=㍦awx~]JAU)ԏJe&woTս-	9bUPss9MIk+b0 ejo (e "6jeW`I{S\A_-O%ܛ#URۏ>g-9ɤ&7/o4BCR
,L`4Y1TQ>D[_akNBыTڀ~+1}ѿO?~O?~;m곟-h<{<0	52{3}#&'F"Gl<D..qVt i%iɍ6\h(F-jNJTa%V[zoŹ
,LV-XȻD*eem8CIݖ'Y_8T׋7:K>>'BhQiY^hg-|	LKQz|l	<Sڇ{f{&ߡg!as/'VsgI{*ԣ/UMk+ k3=~L$cQGvQue:沗)l݈H/P
2T28BDod)t]Ey2]Q8_zCsFˏY4&蒩.*XQpuQ<yrtQ6U]H
"gy3,fS]I4TM\P
.<w>t Wg=UO
x)g/`45/MNSl<Emiju	9Aїp%XtS 2Tc"C$
hWFFư!C88']B|:(ݤ.gIe9e]4^9=E:ț39j,CwUv5յ@pGȯ

SMDnVj镾 +i<Q+{qn'UW .e"r0A>ucÐ-G{mKlL#F!GK:.
T,!B%,4gGzRy7]jm1dgr(NH8s)rؕH	
V[I
])X Cb&nL6%в="i#̌uNe"`U0;)yҘSq>R:J߽e^ReAm LCg6v,e#r
n$t`3
h<򗄝]<0]P`Ў`Y::潔vf4aw#X.WiL2ICz{W zzMqNAz]4+hmkm7Jлʽ4d߷"`v3c9;|PW-
݂0#{i:b%ƣrȀk?L
WK|Q_K퐿vҚ.5`Krym
.Fw qN
iBo]AN
	$qG4,h .)
s|3h?y:0w0MKDYFēkq@dېƅ݅I> 
$=: 	O<|k1^FJ:BOr)=ͷ3|/=M'~^C@GM~^[6W7tL|^wc0z1u_;=G?8fZ8ܧH9Hkq kHc :Π+7y Rf}8,:*řg;bX$(gC_5
gFCӘBz5gWr{ԳtPT9uSQ<D:¯s<t3"/I.NEGGDlWIG/ fY(ys,@|__	݁$]g`Sd}}SWԿ oim>iR}<2{*9Apb긂3PQ.tR䋫`a!I0I}
hq]aZ0R/8z<K<Ji,krǽ~/|KъKF\ @:LDy+AC0ISx(&k8u0EA=lgd:O'{BCe!}oG8I7xgT;mK7 J5xԕ	WgpKL!vgwSnS< 1o8ƭB>D7=R
;3~]ddwrP~\4_G)5%s;M.YxhWJo^M+3:	ioN(gT33hu2Ff]taK[$cPTRdBcit]e?˳Gy?Vvg}A?
w_!LF$tњZj&zU߳f0q~wCu܀غbӻ`n?`ARkb)~226䬕(){eCנKPLYyA]=R:0'ley
a_)y
Yik9͚5cV%%=I&%
GlΠzB8x(By8UιTy i5 :Ok<ڸ\B۸ VFdR"UTiU!"MCig65Rڛ\K+^Hs}K8ig^弊Zr&0r3//x=y|7y+߁U- mo.>xy'+~vGw	罎<~QO:&SiGq\p,J>踁;c3L'aԻ?@Bq$Mot3=!Xr%T}׎uЏ%Kj	 R{$ZhS4/u:T=w[oQ>އY0SXHe!qTZGM?É􎜈Cishq五~k'(]%KbYe4~	ih'$$b[%2د ^eZ]֎Z{jc^!X0gُܞS~rOL%!y`	%.F	܍wPG,$mymbL26Q"(^!|p^]&PN:HwKgIEkpT@#-<z,UwH׷(`9QAf4*7i!'R3C7FT[Et'C8<+wd?oPND݅
:3HMi4'MOSކzqN=RKV]f\8LmjXSMoK~1W=՝M/.[iMB6߁rLk̹(Nph{4ClrK
 <%?;8ϡ>@n}j%ۜ.']U_ؾLV;_PK
     A >N  
  B   org/mozilla/javascript/NativeJavaObject$JavaIterableIterator.classVS[Em6!BzTkZ*P 
JKr.
2^jt/Ng|
_&<,ww9{o xoD0@1LaRӝlAsx$2Q,(bYbZFit=˱SlФc{aFilC1hDnaznbA_7nɒaYߵb!bkS>R2Dز-adpq
U*I)]kOfd̅u3燐-ڤS0-lmnNHN0Zm^٤yF=(
UZI|PY,\#)ji6ɒy&I21|)1FO6#&TM+)I {RiDNM_16Pn)Ǧ󙖜)|: !|(!00JӬoo^26+i_,c!So5I?#*KeWdQsF!uܼ9cIOԧ	&pa$~Їw{kx
4CTWt%4Xk(7
E+,?npٽr8߱g8Sspk+9cG T2:`P'LdFG,U`+Zp]fxu(U-,܂lYȓTjtQﻓ}FNvJa8[mCg8껑z&z`c riuV!кOVל[ BgGZ"L'@w`Wv1*{xqw8NXH{ ͌.>EǠP prİwў8}DкaB:L(+:q4ǙH@Uvſ!0*Re?#rQ"G}4jAl/$L"HiE?^	MaGk
ZcpbdO
=t{C khw+N2phh,d7{@I8/\cxSu5^)MRyPK
     A 7UC&  W  -   org/mozilla/javascript/NativeJavaObject.class;	xT73of¾e!@V	!0ę	;mZZwA+* "KնVZ.W[mZ̼$Ǽws=ܳx'Ӵ
>&~\/ey"_zWZJIu)^~)[4# <]i{OޗR㏂O:9
?ď1U sy|ſ?O?rxTǯ!N24/$Nis1:S!iґ.f,@eKsNxNyRשN<p*\'iOt 4D:
	cF
*ҩX%3KT&2XD'/Svfi:Zj/	4Q4Y):M37ʽ4*xh*JJ3uɱwY`@ e/fW+9R\/v7_qws\O)<8\BwM@WcǎEҽY!M'8 ѥLӎhS:Slׁsc+yBE+VԠSyOtZYQ@kݴe<Z>|A4F]ylM:m³pr ([^.]䦋KtՓ.tҮuun^"doe_0QMHAȈ_b8U@ԊP0}M~?N~k.WbQ݌ʪJք)V_ݢZiB4iܹuJ=8gziT͔FBXS|EEmy}t8sTV,W!/=1Aڝh^=N5zyܺŕ֭`jW2#:;W
nlj^jZspm(ztshs7z-P!hqo$OK8
E7_^W/F1wZWj6\=lcP/j4аPaϴA(hkO. zy%°ٛcBUScyq?&M̭@9ݹemh8\=:#$$zF_7nڸ3V&W.*\1rB_	bC7c`_
a&nmN3F.`_'=kc-aF&׵

duǚui&zod!q*Vf	Def&.\]ILy},kIDlef[s;ّ91Ji55>kXj!o^{=U*`VB YGV3loD+:m c
,+쏴61Rpz︚lUr,;B;zqK&eA&jWQr5QmwȉVLday	<͈t;y:lJT޴i.
.SXtf2qlZW6;hVE6zrBCf[_TߡOFZ`4_Uy0(C\=	Me&E*Sv3Tܒ3*[Ŧ
/?SB08cUkAp%IQN9E(FB6&2%V9}U8<WC4Ĭ^z@8̒,0j&
BZz~F6d{eTF9C$$!A?7q>uI޴6Ki	R[XáV8
Nl%%=	k,Uʍ
oq
3-(&put
Gj-}{Fb\שX\7pW3U<KKIG&oՊUk̄
HQkmg 
:,9VI@ԅ[֘}
SM!&j_SyC?&I910Q:^m4${ZV[1cFQ
/wF6TKf;ô[ xTZ5nnkA5~_'	slv0ٶI!h!	,7N?IST$8+. ;odÇt#V_SYe7piZ9eCk^ftËX<қ ITguɶM4JS8;HPv7[y
(31|+Ao~4P30
p/D?fn6]~b=[uA>{X^[:aSw8j<CL>\qe]#-AC:=lNzjeУA]
M̲2BM~_P==ZyLSj^f=)Jr)ʪZF3+2`>z9'r 3p&V2 7+:hAYڞU*cĠòA4^2ek+=`^!r"~AܟyKA:3O+A91!=.v^Mlm*V;㮥'ʞ`Ey',7.o&\o6RUQtuޠz.z-ަx=߉9ޠ#Ag(̧?GAAY>͠#szةqD(k{"A	ݩӧa?o;o!*"|mg"Gso~I_y!g_7)cYKhxH#MkCs

G*eh&Q#ѼZ
<A8Pq~(CoZ:}ch¬b
!Se
"GXjL-C^HrLFqP=FmZK8n0<Ϧ
3Ϡ.TVIc0O
ؽi
|Y<l5e
L
"L&Ůp? q(P"ݥ
f^W qP<e1-l5uYb2e2̄Іi[u}w0"|"4&(ɅGvlmb`y\EX@Ӛ>i!S؅ŠӑK,XsMкQӷ<ꖄǮzwKrie.I-/vsD̃k͖sww.DrViPPoawS7wኪf-Duúl33w*f"$;75Y\۞hd+D*EhaֿdՙrN{ 8lzk)ϝ(b-in'cA5v{MH[<<4|)8 S}	878w	$ŉF2n;.jK]8-
)VfJU553ir2}S5$46gsKtS:.qWgl:r#;T)a_,f8{ݪy)&Ie"<|)Qե'kdF RP5'?k3jpL1<'h@6$ݓXKD*tuq)*k&y"U~k[މ9>9tM3(TtiZʣ&
^JShgMB42w 9-Z;jL\1b([wݣ)A2w:
[DnV'0N͖S4g"k؅]>(%%/Yj
Ŷ.d!xb-bTǎrL䧋
S),]W|1v#J o)"u:Q*joeĄ>ΑMbRnr4qyz Y	!u}Q'Z;t	~IRqt;JX$Sb	´'Z Aas
a@>;mnܺeYgKJ,/(b'ܮ3w̫L{eqTum<k,mLdddle6샜o}
$u}BXLj#^"=NT2E]?
׵OO̠kEVH,1)jkKoU,KiNtm4e=^3B`
,_fB?Q4P<iNyE{u,ētm[փ0p0&hp(*x/pG[O\b/??Ƕ_7[jl!ɃWYGzok&ԸP_P;B˗L)hpgr=
r#pm*MtqGl1'brM(œ̯1g򱯅kǁ\X1L |P2x5O%K*QxRpCBRlZH˜Bm^3pKI-&Yo1N~ʋKvxn^GnfLc7NP4 '3N48
Xq+*O31Ʃr@&$;oHO0n?1p4yn.j("iSnH}D}`/{05X$NiP\2ILgR ʴ֢Nf"[DĄr2%&:
sic
m%LWڎ.bS'@$8K/b]\%:{3кbmFqlJ)¶K!
҅!
jS*<Ȇ̌z\yG̹{<<ٚ*KFT![^%{ 08Kw,v8
JV.\3Ҝכ,S8U#ٙ<EթU,VYgw]gvb6v'. ħYXl6Tp.{M`'0{kv,ccoaANåܒHJ@_$ABMY781clk#jݬ}2[`
eGk&:L:3|Ih"4atsy Fv;٦_K|)[`<ljfjkjט3jq/hGLV8NXw}97db;6?f*#N3,cՇhCqhv"7TAQ~"[{@a2q:VL&3uu`1&y]Mm	C=a1]_:+EGF1;Eډ$"
wg><4GWBTcT\V!]c#&xp6ֲFe3:`h]i;+8'nCi@@ɍ5&Xs;E9*j dNW,ZuI/$b\b
.kY#}6T]x
=JSƊrr!fHՊkKdl8l븥pxFm\)J)WRʴ}0/.䉎|A8
;)Nހ|8x:qN2ь3DJ`d;q7o.8Sb䌒aZ 
vorq8ۦwa
g-5`9g&+93YyD8%\5i3a<Y<
_*nfi\ZΆH9ygY+pYFXbma5b%
pHΡJ*{Z쥌I¼1`dz5G|lh=9t~1L4}rC\BW4`G-oU\d4c;8Mw$aYW9V)]#v/F(3dZ,ZQ ךha_0iJDm8B\E(,iWmxc{)[1̅]0uĐ<;;8];c۔z/u0gk+#r)y-,<|z `hS)rό؜Su)T&u
RK@PWRj"bs0_o" C
㌓=^h-RKfqTp`iW>STMAnqjDmq}:Ú>Ӝޫsf4ąp,NVC9d/E1p~<Vs@7dÍ+q*\!ofu;s܇3]X8y6/Bxk~v}\
d.:|>klc	u&NٛYCSp(pЧ"^Ģ}1Cna+p=^*n/k=?-wMx-bŭ4X.ح3|6^\2ˉzzÎ2S-'IQbqUW췸-=Mٖ61dY-[W.UƅyJT0_
p-	^Jsvd֤dÖ^6Jl|0AP;!9@8|x4%d4y0;Ǚl#k	V貾9k/jSk<۔+g)WnK8r6ņ\]aHj^nɁĽ=liB*[t^)_@<a
i3p
b<0LXtgk_3	*'fz
"F<,Qa6	.}1-Lx)M<뭠6vPK)~ojV'SmO6RmRkLST?V/CT檇
gΒl.Dcg3e>be%ŦC)6
};ΖXL~xbeEݒB,1A:&`EӅҌv@\
k|VHaub΂[*":C5TzMKeS,GNל5OTf%jJ=;؊sE	:`OT%1OUgN>H͕ceEmgQć+VP[>5{ausIrZhw:D]q_V]9n
t@vN(
q;b$fg;!pWD|6t@.Ɂϥt±l79㰿@~}cv?`9~
ůj
Dp39Vrm()
Q:<Ceo\塃K}1
0`
Ƒ4GPH8p4
#Th^H%4qxM;h"E~T|a;}TL|fTol|T<T
-!'-%/-LZNyt&i(C%J\D>Cܻ[*
P9<m[(H[)Ds۽(JS+agh6t}J%%\/9#UK[ٍ_6(ݹev	^ʽؒ_&cna3l/g3N.)	}xE<(`kT9v`
;SpWz9]8R=N=͑)Trx,g1Nf":^尊 x+p<"Wv7ĭu~PZYϑ|u$':KFsַID7kkA]YtdӍO7JSY⮦'10C9`glCkQBK*0XayLsy^HFdjR/Qu.epU7(Kbtq%we31wƞ"#szK%r%15EpVe[Sv<-;	<g6\y˭Їn=e;8n鸆U;5P
ٮ5'(p Ozml]fpnL@&
?[j_<<'tADjr 5l-?ꀻnބ;yw6ܛ
pq1zNͻt;ЗѽPRzNG`6=
qhz>XOO.[=<Hϳ|Ӌl,_wU~5ހoM$z]t]GaGl8?f	΢Oq.?x~򻑎bf
q5V(ҷq	x,pbpԃK9qH	ĂSJiGk;#ۭ;R9(Ӝ('g;3]qs	c7XRWuJ(j=\N:x̘:8>yWf#a	J9@~䧋()Ga\mSbEFO&b0Cٹz/p&xT7cVX{
Z:j0@˄ZҲaSjaiˋX KAp6Ь
VQ+Z|7c:o<f-[ ޶Xɍj3SOQnRm1^?x:Jo;
:Q:]60ټr+ϥLJ/ᐋu<Ti=Łxm=Wkc\<8x:&8m
TjgvK2\*mJIDlg=\rl|%hrQPpq.c潜]lT\Z7/q>Lc;qОz9NwRLhՐ@6Ӗ3ɵgdW͏7/yB.v+6|R¾eS-W?{%	u1  \VRp[s~:&om:dC}`m-r-ea_UڙP,*m%GSpZ9 'g>I>ZB>Gt`t{~=ہ0YneY,3˞ ƲCe27Xf!Ű2A7ˋќQx~7 
e9̸ 3n-3n3	ʴ 3<fZL3"̴L gkapva\+c1/g^qbcYfzH'6F't1},3	k]:DHQI/A'"32:6ۑ]#> {6(]d^X74rT}ok>2sllXK0hݙ1֔*7dֽ(vjAdPҰY_?\y`/D.92_$:v)y]+xW6UbMPW*U{*8U\q>8(c|7}Y\EegQhe^>;x3Ŏ׸$uŇ'
i~HyO!:lbpk!U{	/a+(8^c	ko-7,Cǋ1=Zi|F"LC>s1w1&txP}KUV9
^a|⇜.he(NBsu]IWPK
     A O
    .   org/mozilla/javascript/NativeJavaPackage.classWy|~ff29Pdj@)AH0pfH6l8jkabVXJRz@kO{k^ϟl6!|><O /ih-VqMv
'Towdw	ֻUܣ3Wg5q\4܏
|_{
/ۡ
</kx@pDF+pcbuLt\x"'#xJh𴸝Рᄊ)ɘe$L;c:W)P*lO%3tD,["mwf1l*[1ZFrױRF&.eYy$HW4
1ۍ]ʬc%Z{M`p6.udQJZr-
&SPOA=5 ufWvߴ7	ib*N߽͐3de֥~+0Zx&n[iKڵ\w	scI#)
yץLfpўlұ>+cQdʡXMA}88@ufCc_TLᴥ7`Q0vDDOϤ`qC4VrKvRt֞yL̸#]01
.Ł3j1m.ϊ;SvVqZ%e΅3Tϲh-i	wzn7ҲkU|]Aa㾭G*FÈ;)Kl"S PP[XʢmAXS@;8cڨƺ$@uԭslfb˗rfo8#idaE}lԆIBTQ&pY)3glMcXVQJ*=Wi"U|Kŷ'μ*k$2=2W/4]c'rGF
GMeY8pg4_"u\gt\6oŅ:ކrXw]qy|.a/.TMC,؆ttGuaɬZ	N?OUTTsЧ:My
f
~w:~?u	UtO"x%3>:TW;<Q+u|@haay.j
UpiS(4TP
fR6ӑ&H~Z1m&_
%x?qE:ОtN8L<f:e;dm:Y=Ez"UJblkvuoѽӲt0i39 zE5t&)ĂȘ-'Z`+n84ΰd*'n_⌐aܜDs!L[<EL5#ArcխNxv	-'wﶻ	eBS,7.&9:q؜?/mI]C΍:sL'5opzz|qmJ;kt?2ݝ}i9ɖv<dUyߦgp = G?!7MPf^\_/fr;r^ϙPbbGAq>sQs0bwc.?VUXMtJ%SH^K X(4ɳ*년y./!"q]UN>Ք$+)iePAGW*=qń\u#[*"}2*au`=<B
8/ȳ?+@g p-Xvq	^l,@AC9F}) 4/)XmMxiՕ6
5_||9𓫩94
0$kJ$VX9Wl;<̕cCo}^چ|m;=YTe|ǚX|U]-'QriyՇc!8;6zu挺5Ym-nGc'l4|2iJY
z
Ff3mA
K~KZҐ~_fϯ!"N0d_,fV;];IR̨үjt(ف@1!+S:f(9gpv[YU>MU"Qn1Xkrᨓ(綕&V紕GOb`?MjѲEGq"Q?D#j,p]ιYHG"1Oq
UXD5lq &7B2L6{-=n^L6҇zq,|2؍k0̿nUCp0=x{qt5ǻr
NK%
$þ]NW?,)[.bK
Koo(e2=D	GtaR4Sk6z+5KY"A3Dg,zVbK{^Ȅ_2x&ЮYnM`j~oa?tUs;Y׵tcN@@W3c0Ed{>DV"^Nn7HxϷ1!gWufF)x5P؜ț?s_HC4gldz j BCr=.n>M:	@adodEnpK42)/KWݳuk_P U,Gq-\S3u'OHAGyMQ7K7}PK
     A y`~4
  m  1   org/mozilla/javascript/NativeJavaTopPackage.classW{x2$ae	D|,	I4h*bKJa3	7}ǶZKhJAmֶm_>ڗ}|(ͲI6[/w=s9S>ra5|`|PÇt|XG(4q9һesl}!6>~9
a3r>+%!;%얽=a0_6dJ5xDCF_qP!81_񸎯xBǓ:)
nJ\ɬHu29x+t޾*NwYf%7X]vN`5[jjTk`kIscWuܴz!ʤ5]Ŏa3N-P8tڴ-rtĢ;.3;nWS%N[MRy.馲^KmQ#XB<,-=6j"ٽ̑[4s4Krj9l+OdK:Y4eghFA-TPRIz׼z4h&u'ȏmؿb3d7§vbA(Y˵3T+Rl+mwpN='+ϑNt,$=n1:7/Q*Hu_z	vV5,:i"VHVL
OPjȲ	^;gQs+D'\+)gj*a3"x@yڹ'8Zn$tvl.0mԺC7ϪM5|W-L*l &Inuzܤ %wJa( 	|\)0iVV6kge&)ٝj8^cRJlPhIwbe>~`y:*togc?O
L6`9sFIN0_*{x/ˑwv/a;c5~-~gxG'?jOx&AotduJT/OE
yvgږ"PmyH$TV^LFO2fFH˅T+M!p-p	#/,#P-Sb5$&R+["&vq+z2^۞ﺎ{+缞oF,q&/w
KI^29eh鈥xXeE ,sTSZA
~aEmKGa(1(|4ӟJG52:2^L\ùQ\2fSbuQz.#r<OhljgFKzL&)?vL99?#o3awqAQSy[nuI!fzs:d
Md6dMH1y K2T/k%.E5=5H3CBuewMkO?*èL\?*fy_#1 B7%%oao5TS"~*v
gwٸ	X[˩EukNO3~vU_Tj9V!ĪA6SoA"@
AέqPqT҇*S=ayYa)SyU-p~V]nBi1T
4qt.8fD1Q[(^$ѣbOXL[	ǫ.z3>
׆6\ŽWs
WPҰ*9DGi\뇱 ƶ5C~?QN?ZԨCwcă-qU)1~Tkq셭*ۧ`|ATLPȕ~Ck=spN353՛%
|nթèA7~Lͩ9T؛h	EC
ӤhBrjk_]K'Ls<"3瓈xH~_DX𻜲vM]"8H{7ѽ> ;	^y6g}8ގJF~
%F&D'$f2/3ôBB2~d[*`=cF/4\[x,Ͻ,{;gt
<rTiĿqhKHC"?az
|jR'4!jr=܏0<nZC.
xwilNy=EO;{
dWL<bh'570tThH~Ly܏3}zƨ֏$;+XҊówޏs!#@<l;Ajcj\wMeWTWnv{(RW(!
Ňb6#	l$W6azɎkuzɹȀӭL.^[(Շ-KZ|.]N]]
r|<:TN=7zⳔ(V6ۊf[ڼ(h <QG2Iû=n
L,HUhRZt@}AԷ1-ihemlmS#M%s)PKQ,4S*.O^*@J[(MR$JɌֽD{F܃&m_hPK
     A Za9  
3  &   org/mozilla/javascript/NativeMap.classZ	`T>'ܙ  a!5 @0[$83AbݺWjVkjĊK]ZZ}m{}}[̈́Lhp{;oDtDy(I5ltMLoKai&nCv)bH.t."sP.<	+diاqӅ?3xP9AҜ(M^9B$\i*'_J<TM]jB|<TçiҜF3<PLrS
PE^gk|_硥Te/wqBWq45>WE&Vrfr<q4A)=mҬ.p.(&7_!H/8∋
wEQ,#xBiZ5{2d4k7h"a9f*Zҡx=3ˮtw@S]릶L͡X(Uұ2
mkZ֌L'.ь8H#41Ibj
'UTw:30($	-M!H""a/N$`ɉ')#-\u
.bČ!vqw(%%ƌPRx'خk[AGFq=d}(-=7#3Fw&YiP<NSyZ״o$[\Gg3*3ٗ%"SIc4n4t61;f3twXn[
ƶ:L++\mc=ں
"jAxӬfcr^{b)#3"Gc3S,kȊx8
[xGTjRL[`.e^N/F`bT9M&U˅~7Db11<J1N=/{tpWl=&4:Pܜ?e:b<-R'f4MaD3rԛw!7jS%^[V*W/.D7gEtӋ
KBd۶?fkzD,f((5d(sĞVּ)D
ڙhFDyH1L|b008pLqES4R}̱D("QZz?E|Oucm=mtM&nSJ"N iT43`f'I&"^ 3q IbθKM3xaRp^q0M͹<_,	C`In8T5,
2'KQv}\t(ӥSC:_ېt;y(i4cnRީe!lѮ>Ly'W+tqPL!ac|׊66ڎu|N_uoINF? =q	&?7zK[tm=7)i^t$ӷ?o
N/KxBdԏ뷅^K)G#|i_41-rYIY=F;miw>w|
Sgu?N1]::{t|_g_f~g
:_ِ-91M݉_~rrĸ'u=_A ?^A~D:`ĥDiI;UK.ܞIO4?3$r<
U}ng@}t~N<9TTȤ]Y<B`DXَe* 2|)_A<frc9щiƱ##21Sฤ@ޗƪWz!/zt]juPՂL
yQčH2dU$<-v°:@# PXQG8Ľ}auJ4u`m[~E[YlP5Cꃼ#O(FKGz*ǯF|oM_<15 i(15a1e%:Ǖ9։0:L9R**G_%m'rChƘ>R-k& "r|ϭ_ukAؗ5Ug$f߇5=hF/$
fK.GKm0]dnzw։f5WZp/0/g (A<S wI5S3D~u\bx!{Dlǘ+:}%)xNthDԇ?9I5i[q:aNҒlaǿ$`x&ihm[Xim
ݬln97Ai\ h.7%ϝs> ZG`
mQ6cx{a&$ vJBL"(#xU~M~*y]xXNSL:gǲLҨD#g`׵1ו sx/iEǆ{ƔG&dǭQc.3(<7r}NQl
ih^5l]s(AT,2ydrE8-F;?k>C/Rul4̩5~Ctqħh|kbQݨ>aC!-4<1|	L
#1#Unx1+Ǉ~wce`Êys	Ĕ$"/G)JHi+mTAa䥴Sїчp?.+W*h1dׂ.
Yo?,?	SYo?
~~t;Ϡg%@MAO=DνϢ-&[/AP)!ٚ/0Iwe&39hAb̧5JJ jr?FZ-9>@E.1R#&ȋ;IJ}&OEt6%|*D;2LtBG0@3zZO3B@B?۔@w)th#`vtaF2R
G_Yߥ5z@jԏҾ
l6~ˌN5'|XD4:+eUg9qd_K w{7qM\Y>3477OÆ;}G4}i!8H앃tzs!>NzGsF'e47Ca+Ӽa? msHSe-?Hj{Z  N?d(%$UDUyt
 :TPI:qxYͅEUC^@~D-ZAUtV	k~6* LI! A}`B%@-P զ t^MC6irTo`0ShCx=#י
TGB69يEEEGk*=cf55\Q"#c7T&:cynYZ2X|uɅ؝MTN3ǑIXQO*rZW[0
TF%j,D.EGGZgj9%3[lfW=HgUw#Ga45fo[kepcԳf4_Ssrh;&/KNBmRѓhaf)30Nԙx.2Zꏞj[-&Z`"J)^$<k+ִp9|kN[aN	۷+wT*
z{`TZW֊QW83ZH>pAFڛj]ȎU\2>jEjZro
wZ]L,E'
$?Sqg6

8+QԴ6Kc-(NnBqrD'lJ稠r\bknU%Q+!C8k\Gf;ߥI5;T	"D
u/BȥTQWE?rG.ŞDhtijA:o2s"E?
xú	C4J͆:'@3Zь/FZec%-[gx@Q+30c=S1l6Md3jH1M$fʗXutj>%r9jgIQf*>HR
'"\c_JW!_NzVyYLSG!4
BTh.rPh/7Ob3!1y
sA%I%e>j{;E Ah"^E2 q Bt8AnSepDiJd iK4%)ޞ/=iϢxų(*^4^_K~v v\
~
Og?%ɛ(y _lE;ﱏGPB
GH~+.jzd5Kȉ9^^e]n]o]c}cm[}[}	Y旪dbZ5>
ApL/)~No\֟# !5?Avm.Ϥy 0*!
fgςU?Sp).r.\SYC5XZ麒w8Q\PcG~{;g_->ڝk8{7}3AojݸFHiA?@E7Auob{i[ؔC؞7؈S؍oDk5a[^C+\.	x;{F}rۥj[SJҀ7x]clWuEpu.V\Dn=t'R/vBmaöxnD&.x*װi<L^'p=U\Ϋy7\n
۹s/O>
>1g)L\
`=v/%UoQ-բ-갨!J`dUy{o>hʻ(c-՟Lqȟ#4tbP~jK2~3ÏTmAcԻ
+Dr蹍PT^9r7
'3uh"%f!MS&z\F>$
|r73]&GZFbf}]TLf|V5S	ݦ'UOX'=5W
1_o)+ب	71˨ݾd*'|ʰPK
     A {iY8  /  '   org/mozilla/javascript/NativeMath.classY	`TEҮ7f22	.I"&AB !ȡ Ir"C$	<@UD@VEPz-+౻+ފ՛~`"vuUOwW/nz9UOH;!iNpۋdxu;лz IAN?4%GRl[ybP[
J͠TzAԠ4?3(]
ʐKA),4([ /eP{(^:f2lPuZ3uePԺAyRv}iS^yx}XJG<<TO0}罆5kׇ5:tE{=|>tkf\?}neoxx>8#y^qpcKr$d.ןI?/
7l7T
99On D!m>{B "Nw300;U/B	9K&zy:W	7CBBf
2K_Hаj

r>lX|SFC>L7F2ILFDkb`1dr[L&6шs%`muɄX}z0rtQyFFGBm7ފpm8TPX.G"PUL0R4FDgõq5CG>Z#0j֡?P0S&qXxN0݄XjvEԋɆi3i&جp:	64 `ԂNBbCrzgblbrTc[b*F`}5<8ytKY"6kEDe?QͲjjz}LP8֪|	/u`܊'͜XͫϠ5}PόDXZkVS]S}ux0bV+7)LYLY&7׻M,5E՘OUƏU	x'kuѹ>zӴHZZ35oelWUNS
K4_N]*l!U+Uò7%2f%zǍ<sy>!X4>1tW7.VsGX}"ѐy}|/~!]r(P.A2Q@Yr%U(W\r-u(D%(7,E	er(7DYrʭ(܎r-3|'߅=r2BY>N[+֑
 SO3
M.nëŶ{e7?!?̏x
?wy-k}?} ~"ǼG"Y~mfMBvTg2˃OQ~]B>ڋge8qq
q	m'gM+'#)5Ο\EcMʁRtH!8Q432~ևjcPڌFsՅc&&3OYd/?/тd¤G}ꡀ=DoN]& !/
yIB^ׄ.
!o
yK_-dw+=!@ȇB>B*oB.!ۄlCȧB>96Td*YtHdj
aM6aq㷟my'_Wi[$yjӲcls񍵱\N7,9ˊpEn鶟or#OM'~0TG[T	pY
y{H
U'ϔWHs$M
ؗNĠg{iZPf%͋K,>k{%B#7}:-=!@ȇB>B*dBvTgB>o|'{!?QOB~K!{AMSKNo m[õsC%383Uh=?Ɩ9٢ٍjkC6;ka?:	5v8WآD7LqmxmyrRGz@zTރcݐ%6HO?ioprTLzr챞\=
pgSJ׹R<דb;i1C4l1 fb[qmZ%v¯mĮxn1!i!emb[<bO[,^X-A羶x~b-x-Tlq0!xmq	j-8GA<GCceOűm8[xrh	4)d?jKi-M4Ogt?URO3miJZK
74Gzf鴜=SFOn#<q,^ԅCC:r6RBrʧPwl/ S}C=t]Ky
0yt_Fx)绩<˛h oA>H]xGOD'8pdA#4ʱNt\C+qu<L厵TXO$ŷ'=MϘ_~6г$#<P;4{w;ֻEx_77!걁< S}
/9kbkf7tRPz=ғXk΀3N[Me+)%\LQ˘&iJc03ћt_9LmqyX
  nI!m7
US~uSCltTqs5y4 & TNGlUBV OA S ɱ4'  ppAkNovzu35a'ǆYε1h6fP:|
_W(|!vS~ß
?ϹgΟ(,V$ >xЂ_[zMrkZ^=| ^_\t!E6"CRd2Z`]BYWP֝*)KeBʾZ	-Lp#a])]WP
_AigAʅlC[4IVRsg<oD,E	nC+h tK)ʔJeJ2R2&IhS?V5XQ+iutqށiL+N(89
<U]D>֪niS%It?9tom7@NAu	rʴ+ڼKͭ{ =[OY"ޢzu?] erjȓgd/]]2<VUfoǙkZٺju5[tdt̸L"WEL,.m+yBޛ$")\䞦QpI9NSqOęũވy!68kC7{cR._\N|rˋEӁ<;}}8)-ɦ333S@Tp,#ot,\/I3ni[B%OS<S<8RΥm
I̸
JJ+[(~Zw,Zw"ApP_X/(h%
ZV|>mK˓xkL7Խ"0Ǐ:,ݟ+5LS${Tg*ՙJuRT/TF;v/'MD@VkAS)Z7˛rL7|z[R}5u|SrU Ϯ\r/'/Nd&?*;$uv] ^JT2AixMAø=aƱ Uq͝(ʝiK⢩8}t4n=Dm(-it#@XC_s܋<)f㦯wj;s<7}R~&Wo/V>W܏_FB`Uy*ue9\.;rypP>tepRaiɔaʰ\eXeXG<|: җ\9q
SG}NRXus	u	zh~)O߷ao9~@ҟҸ6m5A=~᧳f'Ya 3	`+0
LwK2F'mu=*Ƒbf,[SqWRiL!+
ţc(c)|WD 
d+Q+(V&+	Ŗ	Vg{xX҆i)0b< #&0w#v
}0Pf<>'%]QWЙ-lZ'%/_;]37f=w}/p506M\BL^hG0Z#VҽR[II2lA?2!>(bM6ޓ.YMNs̘[2qi	&Y	X>T3Q6O#yjdgx&8c=<s=M>i+_@_r*_~^|	K?_ƣ
Wrk:ۯ($QxܼwEڐ@[W-
ΊUpVr,jlSTKyCw,uC]4qKDN0>Lnuj_PYWa=o"kWZSnHxj߹վs[xP[1N^?,2_+~)5[_,_:uZZ-bQO; SlxԕWRw^E|iA#N:WC+>TʞreO\Q	y$=T9v!5ylkA_ރ(`҃Ha+<CGQo~0?J5xޗn9(lp@6гs)E~t;@ݯAav$߆Ma֕+]f~/
I@G	P|%_AWP:LZ.g y=].?p_X2IcuN/?+p&MG,Fs9머N문.몸#MqS\T\w*Hq=wz*XqWފ룸;Fq_qc7Pq8PK
     A y  $  )   org/mozilla/javascript/NativeNumber.classY	x\u>Gѓ4-l;˒7c!ɛ0#͓<hF̌8tM"S%N6,B RB4mB MBC&6}<F޽wϜ3Do<2k7[_;~=R@wDt}˻?ι-,NCM[[G,"9N/xN?-)L3$N@Bv.:k::g8g{sseWLOymEXP=,\":`n&5<k@.WȰH:frk\!/P)RU8Zer{x+JVpydX/mVd,|d=4ШV&o܌f,Fvx;Sv]4O"~e kwmlolzhо<}MU@ٓXom.w
G$ZC[I
D4CPt0M~hW癦O~$>3&1͜#kegJe,`юD,T4jMrBO@
eaА
QhČ$`k@h[	E,vvia`t;l*19EcLK荡p8P%B5c]WNl/)1[Xw0HW':yegrMh	V.&G Sml	$Br^8QLFp~ȓ_Z↖]Ǥ-c	VKT?8I@IV~ބ-D[<XlG0 b#9PE
ri&\/s@o}G2BA0s0_q*B(/aM>ޗArŹ,]p jp@5ƃ9*zq۞!EUAyi$['KqK˕[O"l/fڷX6׬Ճ\a޸	ʈw/be0"4z'WEy;?fDzb>`{Qd}&!qK46urc?LXuIĭS&JI /8H mJe~Kp2K9J%J=VoIі
H~}AnI&ŗ2^	*5owAI5[MoZ;6Sڦ
F%Wkn
Ωeu;
zR}Q.,Vd)"%U*%RJ'+a/Fa<
xtλ
]_{
=m|x?^o=
6Ag"J#
s-;|t!lFYVtiG53SwFk
}נM#&2+G
/LS(%fpL |iiw 4%Yy'gao!$x|O028sS?cۂy[Y1x/uqx'AnUbB0/_GkJF('h6fC9"eēsC,00 
eՂ@08!9M*9b,h:Ma3,0?I6w.Q~
Jӗ۴}NL"\TUp@37I:ʥӥǉ(/Ko*_nf$>3;H?)t;qP<BJG1^|
u9'@i֧;00`JRSGP;l}8CҢ&iu6hk:P%Ҷ=]!=>ĥe*MmuQiے *x<gn9"&J.<1fC,&&n0{CO@[ge;Ѹ|)͹׸Q~+OrtMD9t́7EQG>p)|AqJ  0t3 |K
]	[Sเ?B)N?) ߖR?O i
g<_
Nww ΐN<rx񞜓Ѽī%ǮG/bQ$%IGsKZ>_@G߂i&yA$锓4Z='Y	rM>{3Wq<+LGlfnZ$4V\6TFSʧ1MB|6STO'b4+J&94w*8A3|P}WL |&TJǨ4SV)*
`:
o;/+NRޢ^@UPt5e04C+TN+JZ#P'n@>oGi3=I[4ѷ~@[ڦҩmWkи~H#pX
7s	(s)==~0&u)QOMA``AZ³Osoiqڊ
&՘W;6a¼bW`y%Wa}j'gaKJFiͮ	ƠF
j*l:PNj7T*KZj@Pu"&{ X1_1bH0q30*pƠp'^ǭq
6nkqmn㮵q]6δq6qU*!iʢS%QFOId@|Tb%bIZ7__.p;b3[r,
89shoQ"
9nHC@`U.vѦb+h)ɵF+pqJ-'6<xx:L֡ä{=c[j21y_(m	a1HKы;!].WAcZQ0}Z
H˹`p
$4GͩΓ(p'Cv;
C0$7#5QER:v*Eݍj (*(*3N?Bz>݇x~u|gW83!.Gx.}7&:ŭ:&ҋ<@U1@Y iFag!Y&ȦSj7wLN%y14VRjMj,'0Oo3SN1,͎u|@쳴ΑlY͜㙖izi^N<s*`K"iJu 8M(01pSRecq:h%ㄻh	ڃ_kVedw邓}KH|2
˫Gnd!AMp_y
˻ C5>L[w)K0Vb,VɣislOzD$*&r z)xC⑟q6cd8jqڸD{H/pv=d/R:ӴoCQZO1N~H-'z h1
&l369KR8
jzΧ-\H~.v.} !?Ac
&W?é%י*HDj/nGUU6UX*4Hv%X\W(F&>Q!4F?dSetEp0W>FcR9J}(Ӂc9%1QhB eLpi8 =h<
gU,i<fAmW-)@
a04ÔS~/^"r
`Sb!i|sYw΁?<WxL턑<;^v>[fɩct9r=2ƕ8m)ruNOoϓwCH!ZP4ZR4Z)<F25Tʔ3%pQ<7pKmێtLȋєL_tdu	-EZNzhi飵%~Xi){g-KP-'²bc}	Vc1Eϲ4h9Fl!-5N*ػmx"̡_;uX_ UOR(|[`~ҷtUpoZ.+}XVYҷ\4*}+Hpno{ҷJNfv9<}D
ǩa<
,cDW0.ǆYnA#4gj:X]n.kײEó9r/q_jV;n^٫jJk76f䠌[2;r+u5CP?T-(wV.) PK
     A .ڰ    6   org/mozilla/javascript/NativeObject$EntrySet$1$1.classTmSU~nn&a!(b_(
	VmE

~Y;ɶta:#t3|?nB&3󜗻O nz!s|I\섆%6~=֖5$cqYa]VOԮ@oc,.ַ7%+bֆ'5|J~'/۶r,VS5
ky-:_e8jU/fx
7"_<Ӧmz:}2!]pJTE*ojt[mKqNѰ6b&dSV}nizUS~#iv[nkC=<sWQ pH ZL+jTtxvFi0̒SW3Oci	QQuyNsMܑkV0˶]r[6Qx3dEdr5mvrjdUy:qZ A;tZZu\O֫ʥhx$ׂa\ёAVk7`sKURϰIaeKEݍin	$0^^BzN~9ZiױF\cj_oP.з> 9J8k?!BC=D%ٟCdɌCf^"# 4dI q	_4w^0jb)̄F aY6;h|y/
֑͗51J=ⴴa	#Ine
bEh\k~@\5fǦ a$ɐD>D!*_Pm"gY$ܖXwI:s9伅1s7Ep-L`NI%ޔ"E>#r$(K{HzΠE+&,}LF.\C		r>D;Ċ=DÑcWiZ]Az8ռG
颸>/1[agID[gH?J
w1ёPK
     A 	љ    4   org/mozilla/javascript/NativeObject$EntrySet$1.classUmsF~'[Q	􅼔8V(@)	%pqB4/UGHY~~(3$)3cgQ{'9$Hw}vٽpidC9\Oc ?fp3R6+_7kNn鸝Awt͠ץp>Ct,踯ぎ0xU!Q<̻v)٠v۶\kX_z8Ck/+nKI;
7f0U渮mIf=pCkP%5xN8P.fZZf
:Xjm
_e;pw,d=))H}n.KkЮ\;-HQvRY+t\4#@҄4ٶkNóV@ݍf\2'Ė*Jb\hꟃS^+fG$2Louqߑ9L픴-xuo:^cQGa"t<638A|aK|e)jX(Kg#Bh.3;u:gB0{/TeX/t@$s ?R>W390~'lC:KݛGCvKk]s@'$(OB0J1*Khk /.5RDJ3a:t͉]0s	||.&E_V<7yCHa\1HE'w$
?%5xAavyIşݖT&Adi'U^~/QxC4pj-ҫ>2l鴴%义q>\F<8AROif	|Hf^Ft/ޢou?G_Q>r^/C+U5((eswrR,7NUD!dű_jJ:k8R'7pYDW:JPK
     A 5  U  2   org/mozilla/javascript/NativeObject$EntrySet.classS]OA=[HAEQBXQ$MѤIuR,dvJ"MH4wk؇3ݻw93?~~)*(]xp*\\/bv!8z/i*SBNt?<M.TDՙ	Q{"{vUL!G^Ff*ӮԇqfDt$yhG"lOB_-'++#0&,E繦QX.283~w$J
{H0oɋ8AE8!{M=sotOTֹQk-k>|lUXTEm,&,Ub0?Fq6՟n1k u
U"|Lp&
 	~+`%*ǋ*b"FqY'TyT3*XS-d58C=Έr#3]#<ən\`F1\5Ln* PK
     A oeG    2   org/mozilla/javascript/NativeObject$KeySet$1.classT]S@=mZET@Q *XExڵDCtԿ/>ȣ3(ǻK*<@2M{?ŝ|	Ќqᢲ]Re5\1o` z
\
6hn0pPb8`hg\+f&g짵'ba2DSJv;b9'$<v$HsyvF 3t:orݙALj/)_qYܳg];e*v=$)@c.M%J3u9iܵ6x=x0ީzV e9h/{R^,H$4c9ٲvuKY:n&+E`K?؎$x/y1ꨰWۥT/%+r/MM8j&F0j`-dMGCh4q RMV~qżdm-뺢hTv)6&:p6^P]hl/ul5Φ_&c8GmQȬ:ՇRv aPg.꫞@}-h%1zFnX!dY+`+_^E⫈~!@m4ğ0\NjV-DgHVdhn (=`?"?kB4SDHOLt\tRz&Yyb4@lkPU"נ*T^L	uH!}UAPS,wEZ0~jI\QYfk
-wh㮝`	
C2z>nfN(D}8PK
     A v  ^  0   org/mozilla/javascript/NativeObject$KeySet.classn0nBdtohi;$jvQTݹ*Yw @x(qRb%gشP*hY
An-8PO]Iz?at"{'~,?(o+y$FWI%C[H2[p/C;95dYG><zMF|3KQIYwx8a3űMRK%bame%q$:mEwIh&41tft/G(HA4}J,f,qvS݊Xk:۔Sq!,$(ivt_BitZMf&݋:j4D۝o`(}U	5zW2/,24ѸzzW)Os(9,\MQp4)9T)GH}nZ$U)!}Tsn^lA{%eՐPK
     A  oJ)    ;   org/mozilla/javascript/NativeObject$ValueCollection$1.classT]OP~κl6|(!3x7dJKDzFM$ah&({
'Msy}{ cXA
°	ب۸ݒ1q1q[ƔiIZ-n{j\WlObm`hьg`)	3UULAIqR_4l||̹exQ |3ٳ1DWI3f:)iU_U-MKAHa"rY72߷:CÊݲ,F*ǝɻoE(2U/FS6T۴fQ_1V/hBSeCO7Һӌ7͌;UІ
:0.dSpIUA<<C?U$ꔹ|WTGA_yQg ?CvJ*w??w^=hNސ`TCpӿqP'E_i&B4ZN36X B: OL*{@ :	^'F]	M60p
K2	L^<' ?-}p{Bzp*Et.\9AF_dSr,{bk~NGP~Q}DOIjod6L|/oeCZ4ƈ~,BY]ZB+\VDkQĜ n8
&.9h@CPK
     A L    9   org/mozilla/javascript/NativeObject$ValueCollection.classjAd]mZ5j?6VA$ Bz9nE__E`Їlv̙9g ϱ^A	\<tȃb
LTtbDhd1(xddR`XzŧR)Z`y"2hLhx_P2=h ;>P!W}΢M4D}`Y5CYanʮFܤk5h{S<y%myJ2l^yh~:o-uv6އ>|ԩWh@X1[W0,~:֗S݀?JW=.XjBC`IVzrg0Cy*ٵQf1d1p,kؤ@&P2?
QwyR(}õ/crqr=hJ45*_PK
     A U[ (  _  )   org/mozilla/javascript/NativeObject.class|	xTEpU7޼yCn9 >!<pHbf孰gPq%! ^zxUI&GuWuUuuuuuu ,~3`7Vk M
܀wSǍ 7q7Xj?tW-:n>uܡC:>c;u.QKtܭqt|B'uOp77?>j<c?ϵ/ˬ+x̀/
_wFL"͏n::~:49?qQO~n_i
V[΅9x߻~_u$_;kxi.)
!BB%E&(:.$\pԅ$]$Lb6˔muq.RY`+ўi|,&:N;DCt] Sf}3]}
*LFg#џ\ȵAI\̏!%dQ1k\ΏɽbÏǖI
Gtb,&E)gMSQ)j61M
i<jy<wB~L\믉<_Z_QZ(
T#R(!8O
,pЪ@0D,' dP_25~8zˣ&1m3;	[p|QiΥn#tpE0x@xz"\^Y+G鏘-	qITSeIxws`I%51a>o4@i!tOS[J B@y&&&
f:++	XvBZCU
@1ubbU[j4!0=У9{,[PQ*ǒE
UcwGL-Bj}lж7Wn2vuU
۾DHbǚڬMpE!uPQDTLZEh$Q-RQ+*_$I[ZT`$jZp 8>775Ҋ%U\M\&R=}fN9wz|+%%QJz rjUق@p&
k6R
/.֫"YŪR>֪?.Y },Xy#TD&&n
%$y4R%Oz߸h=1!\H]9Yl#d5w~ĪrJS2?BV3Q|/LWMfE(lѡ8h+DI1m{ҁR)B2M8	iw6/eaݚTFg ?H3BUn"@l7f*oEQ-0\ddˤӂŁ9hFUy,г봌Y/jPE3>MtEr-OZk7*?8*QEh27-<iJm9␽Rfy)UmB+H\%*\Rl0_YPbZ9QAŴSMPM-4%=u*<RafܮЬ&$@~"(Ed-91uLըôag/ž9G
ԟt>:PD)J)IdΒ]MO!4-roMɤĨ^reڣnN%b$	nЩ_P,+zM.cEY2Něh8I{x 5
)򇫂$W>C<}=عa8o@&p5=	$H[OOI@dN04ZkK0'oz}U6ehJ~|ɔ!S,䷥
'EɭEZ52RUQTjgSM,&>Ǭ&`kZ7b8dA8gMx6,9( $AiUťԿS#	M(jG?YQ3z#6:QF[G2{˴rD=rm,:FQ:q2v"L$%$h(LtJ`Tt`ch 
OqxT?|Ӓl2;11QL(X(ѦeŸlgq)RMsD)*q))BK)p)X!Vb8ąH\lKmqU%ŜeEХ2N8^8(5"*Ղ]4jg5q~Bf<zm	S\-1Z'a_GWnXʵF^ٷ)AyN+Vi4yb7Lq3[![Y46eV/'ZPs)n.l
Ci.rfLLIm{L\u~JhӐA.2MchèLY6TNv	wA0Žb6IGFZ<VR(/͡MqP/06 ۝ƺ] (.
Ъx]aQˏ3#Qrqa#)rdؕ"b)MW3IfdxjlOxx9S</^0ŋ%aZeS"^5kKxoL)õwFǻxOoćz*Pmq&>2ʭLj~/2ŗl>{ZB85\Z׬PUeeE0(FVZōW^*C*^
O< Ӣ&VHǆ&[t.ie1\rl̀iShҚ-5O8Ol.80qn
AdiV&-w]f]sxr[m{"+  %O1L3|X4gJ:׮hpޟqLx9Ԛ`&f[I.	AΥZ7quBK~y -/m]EVoj1jG\ʱC-kSwgM'i .i'Gת4P(Oak ֪jAfiW0UEّWVR(4B٩3+sX>8n%ǲR{||%S</
3%:MjyZsW/D4/gϋk-/Z+-zr~}Z*C 鬻fXk&?#phN	u^Nqt
"U8ʇz{$h%Vx҂Δ";f.#Ȼ3inEoHk5McO`ZyJK"yKNN=N'	y
I<F'[:Ff0GNҪ_VLF+]^IK*Kz.߻Uy	M#zܹa~]Y­[NKhy+XQ/'n~"Cmw1D]Ka1]mO?I!_<1XQ&sҁy҂*i
t$y|+;:cK
]g=M	9BZ8N>ՑXX,T?1(6c؂<ڦg-?ֶx{/Z'߭E9cwq=̛4#y
(iq-ț@ImSjK|	BayJ[vLpqN1m^T+#jټ?#&x
/%rmM
|I
Uave>kSNE+S$z[Vq5Up岨Uڈ/?tJ*.I}4&_R'4M0'oě*)_V$п@UE1wY/A|GBqm)@EcEy޾[9/y_Ԫ <ta$O񷓰gYw(__"8__#_qI[q;%8=ߏ? 8L'qNqM7q 8"8#`| hF/8X*8I``wl쉃No%LjA6c'-9+><?W0䇲|:zw)Y)fFZP$%I.CWhݤĮuNԋv^?ؽd**^Ƕ
SPD~htulȜ`t*e`1KD'쟑4ZpՁ3wOqP|MR7%|mzcop؛woZ吷3
ŀ_b~v?{;~v?zO?xĀޮ1yYN6B90a NA0FP 900pFZ!j`2<>BkŗOu9K!LrYfc?#1͚*{{D:S7VKH:+=N $Mͧ"Uo9.+nQGy{LE(oO*Sً9TrrT/C=QL*PEejϦLv;adYkaМ7A:=ς188@ -fA	%0J(+`TRj
&laCVPm%=σUp>\@\L㾔k.`5Ml07p+\Mx
ldp=u<A;n
Ӵ	ԉ1͊fDqgEq@ +΍⪢`wA*[]ŭ⮊nEqQW!)V0m:I:!wY o;lˮNZY>	e9T';gOR
7VDWjSBj{ʁ O
8ցq ._/#/(T>Hz]'/SYH[wܓhWg |~0Yc9|=pϡ.`H5ka6&b̰m>iw qYs5FOhm/}:b;|F9`[Yht5Scz54ƥo>-UW}j㙁z#&<7#I~ vIpTӛ_dң
0uô>Z0Nu̨|^({aO}f*jՐav¬jP6:9O Rj38^f[ssx⑹ϨU\0Isj@:r0@bpm/:gqŧnʝ#qutN`)Li-}p=dy91Gs󎿸J
9ƽqʐEH]P9.בL16Fi63RݵPKL^teI-\;jirԑȈvJYQ<r@O^|TITLAg%Ͻ-IF[
iMtJyCd,opa
z4_UVԡ]f{]nSJrCwOϬsxA>}jazxWE2}ϵ{ϋˋo\l|{!q$y&H󹸖jp.*\m`ωբ#RRڣ$MzI5-{Z4&21}s=zKm(MbH1:*Q&I3XnNOʥPiK34f5KĤyXj7x4ƝXkr]0&\`KЎi=f%fMۭ[ni0-UÚ0Lab1H8X%R
Ӽ
yŕ׬XJ+-bD*%(H_M'ǣ$&zh}ԤAɾdj)k9I"E
ȀYZ!M:G#2'Tr<Ts|T ^
YA7ї$sŊ$u
_yLj`ڮ6#3[W{h}F¹XAp8-`0.HduM,HTLim7lS8lʍ"I6ӱߍkf:'YZ)VYVUn_pH	p
W L0d=݃+C0(nu`}Kiu[+9lca-t'+dH@4H6k>GN?e)s+Zf06(ɥ.k#KIؕ̌2\`@ˎ)2A)m&ORa$뙒jXm,;YZgVb{%Vs<>ǧ:<آ*Z0FNpm/wn:F#p7|7p/ [WG$xSa;EAp3q\p	<Ki+Y/`-Oë"
ovHD?x_̅E)|*>/NI^| ?b$ïJ_82
P& (PUK9
_1YY)&llCxS=~젼'*obw3*`oU>j'51KXY8@]pz
VaꝘލ#{qGq:S?8AOQ| NVcC)7HXHَ8ϑg8rL(<Ǒ~<8Φr.r,Ŏq븆q3;6bԱ
v<U'p\xs;8>P=^8:U̩x^«Cj*'Z\
rѹorkuxsV;kqs/7p~w:ƍZޥMZެѦ?Yxז
ܦ]{	m>mjSvܯƧg
|V_U|QO>1~
os_W??Ǐ~L.~o;+p
]#>qMCsW	uU
p]&еVm_hBwv}&LE$OG^ F?q1Bq':N|5qj,բU6t	i<+ 1Ud9nCN1#ܝHw1ʝ#FG1|1] Dw8ŽB/kDf1ŽQLuol9_t"#3[E9N,5D؜&VJ3,3K%jqy¼U\enט^q|Y\o-֙?CF*n7{:[<V6Pqg!.FOXY&/6{.[<V=>6 _aŢ-3? b`yѥQ$Ɓ<cLODG3dv RSƂbגa(Ɠs;JI9JC)OW@GrmCD˽Ca&TJ):$$\YGΆhu?A;)TRwټa:	1ԛۑ
mQ:rY+2RMsKqxPp9^!8Z
gl8;~R'87Dp9B:Wmq,~
ᒜhlkj}l3tXr̖޳%wp2k-dY}ITjKc39{-ɔ9XRbG֠35r~[k ,NR
Vtl` .Y? gi%"u`8u$is\qө˵dg0O$p-e'\kKRptIg'VB,$X'L͸<p[iQ*87J"q=ˁ4ŒݣHWkaQAvs^Av:AH̎ Z+ٟ=$y.R<* dO M8dJ̗|fƼޒS-ygpo{Hޙ%|RYGjRQsʚp@']މ?^ Αja=i0iX|Rx?6KQQp4\aH^:2{T4*W"rj8
-2F X@(nI	
!ңЍ_b4EC֬g='&vRz8(ZkiM4,qL#JryAIRSCO_{visPx{	uEѳ)0(>
&$HGHhN؄o,r	͑p&S_q,BO'B4]x=͊/G?$ H
[ο(嵂@AdHSt;TK4'Wҗշoj[n
Y41AhgP()@r'L%x@.QڄJЪ&8Ӊ[!GiHOq(Z̑Lꬒև'Tvϒ*:e텅S;5Uu\~U}ڝ`:h+ba0&p"@[Jݣo˔e3mBWN"Ce=/`*1ԬpWKZ%-OOOQ:--i%-#-)U///UE-
_%Z Y,cF.#3MͮmYeR:jހ6MHoK22:ʼdAQ }W*[*BQ}2wFJ{!flU}2ч^zcP1NY֨ ڴyQ5buGS3 TCWlA}$gOfv-l軍:/!S| ~<ia
5Ϗu@1UO<$?+/\K0ge+72X4X-_Œ"b3?GL_!C-+[e3-sBj'r.67c'<5Gܧk.T\FVƂ
)JB.OC,ᆂ&]EklOڹ;a
x⬧G㚴I[2G,x@>5 ܌vqԣ,~ŰBȜ*rTr-vg˫ʛ
ϼʚ^7nNQJ媻fu%&|	[4*k=/)׭os=T:f~O=jjxPɡx%STo
f{{Kp}$X1XMBs}%8'EROfHxR$͔I? ۛ%>).f{%.`8%OZC	ޥ`o7~M?J\Uҏw:;1Ia=pFHaL=IzIqӝbӡ>Бb+q8LyW(OySx/VKgq<^W+/x*ި(z
ܠn?Yy[|PHԭ?Oϑڊhhhhhhm}1Zm]MWvEK@$ƨȴ)Gm?)rLw8!<U|)cr^($ܾi/|LǏ2
äY-p'L0y;.L k821.
;@uqӂ9ND콎qp'nTҡ`;Y6*QO[n!tL1ALۇOt!zPK
     A M?  :  ,   org/mozilla/javascript/NativePromise$1.classS]oA=[pkUbcL$BM/2`&24ix&{g{S<*:
pQ)wm7-ⶋ~LI}mLJqʗ<'~'r)=ǹ`ȜtL^0dk#GtH0>T):iYp=%bJLI+	<v+
e4dG.v\p!jۖP<7z'm)Ԩe62TY1x(xt|00a/"Űw/lo\-lj3AOHF\}A^\f*#|	넦Ȓ~*~C}8NaZ
 C:װ5TUڳL
9y
3d%2α+څ+gW8ؤYb.,%Oa/+PK
     A S2    5   org/mozilla/javascript/NativePromise$Capability.classVoUR
mBv
dKmvwfF$QA
&	_qtbhw=w~}nO87z<ccx/~<|-ٞL *)eᴚaa4A14-Oj3"d4+fOI͐wf;w2w[H{Z?+hc<'j<p4TCm5ipl_L	
z%,[V*BZj]sGr?mI:ʐy`EB#ӌșuL
8|ha*f/;ހȏg2-ǦU_ӃGx!	TH,@lRtNW'gsmݧ&W Wr#RT)<nһK*]
6a+6kh]O5l{]R\Y
5c܀	:j[W	-
?d
9&Lr20ih	'5Ѐ
4!FeVVwXT]/|i1 SYV
5E!ҮzLsi;+'1R#lSg{hV̪<溎{tۗ-㻖=(CypPPMu*59
áUBZBaUV@5 j~VZ޲ַ3p
x1B޹d3δ,"I5Ǚ.4ܕ2@^IdWHaIw;=U9XLsPm늇jyu;49G'jPo1XG
MNh}v.%CKv
G{OQU[
bｍh+{ɛH QM6{t4D3q
Uɟ
z 6oc5L_X1pè.@goZػha]D'c .aa}Ͼ #;q	PvtEj$"@'@'^t):ߎ?hαc?Gp&]bMorN3ƅ;o]A"9@wҿV:%"M*KԱľȿE}}{d?n*=a	rFy^.^i0UeG^ISjha%EPCe8,Ɖ܎@S<xRSҷf8K%cER 3HC8PK
     A 0^T
    =   org/mozilla/javascript/NativePromise$PromiseAllResolver.classX{tfl"bYB0!,Ed'ɐvv6j}Hk߶B[j-m)	
j)b-ZVkZ{Ni)wl#A8}~Nw xWƝ~]2C]>'Xsk>ɚ{Y)|ڋf?>ϲ>P
xy/E|ɏy2kk>\xP&?&aoɎ(w gg?c~~ĤM{/~Z^`bPܼviKX]L  Pk)[5j"	>%qګVm=Q]cYj_NCgYLFgus:ݞYZYz4&^,6-H
E66f&T1Ѵ:{DBfS햞2zm	$*SZ\11IMOv~c@jRSZiPb5eƫkG}<0jW5FК=mIl4
<b^FZM"ѢDF#Y	) r=yf9V6R>2IGj"&d4NhQ!`f.jO[\]68!f(Ze-
2 LKاYϤF9줽 s@f/LW'+vf8nLnPz!0.3k7tLn5(2Aw/Q<dMꥌ=2RGq١)i+/ILPd;5t	-V6[:%08#C/kT<pYz
U:u:aH7s鈐unL[bpQ>]
갟r( Vp
f+Up(0*"T((8C2pE$JǞTd~ʆYiɹ)xOxRSX&JqXopDAOx\o#>0#D/4M;e[jrfwTB1k~AXCK/(#bi8^T1k!2LB;M+u,V
^偤L1(:҉2Q&z_n\)(mT.&?uò.\ﰝ$1ۢmaVtΫ%mz=b#\eq5̎~&fu9˅Y>0ƢkueZ#ZsȯkQ84rj_1\pGJ{LLNDR$8XzKq]$Py]]g>-O팓7\Psǩyo(!ғƈV%f}56^[f/mf7|LMKEږj6֭]޴nqCS"qM~ڤdޘ%͑G$^Y;/6TB(5S&RЇ%Nԍ^[\tqj;I *9=6Ebiv虀g8w~=EfBK9nm:*[>rXx8yӡt qfC(X|.GK==4uӯ=D"!FCj
W?j<~ȑ~x#UEiWO4xix.q
~!$>.>r)4Dq
܎1E>j"+%>bvhԌD4*]**@* uB 8Vz xp'.\/()l̊kػl5hV
VBŞ͘i+Lǯ;wV\!J!9݈cRkn\GIk+d`7D)Qfl9dC<

7V"NwNnGmAR+m&\J^~ۂŧAx0C|T1W|ŗH|7Q|+5	C|ob.~_8,pLr?xOK!JWnDKBiPJt\*1{.aqqC)3p+h͋ι>XE|b5|k~L-4
Kŭ,.i($
%+Xvu#NLwwdPY(<4OF3`;ɺC )AفAC .dtH'RdeN 0	++*wbU@9cXIar̔*"
tQ$Z i
UV
 <rET<!-ҜmPʪ'2ád&Hc K(ƢZ*;
Mǝ-3R#fG̸F7Nl8H9!smny,kCh
L>Qa&9$Lrp!Ofdg2AD?SiHtmtX7Y0dÐCV?Y} [dHtԓXq&(]]c#job)E$cC?g=l?PK
     A $     A   org/mozilla/javascript/NativePromise$PromiseElementResolver.classTYOQnaXA+.(,,kY$M*Q]+ΐi}5 ̴64Mz,_H(	D

L ;:H1	JQ<
dm14YvQ14/Z/3h&]Y(:-ʥm>ۊ$]y ԦpM/-,O>P$mU.mf<IzKyIזR"+*+֞\U5/C"ݪ@4f]QcrO7^An| N*a$׷weQ]JE(fygJ=xN*NYAlqOj4lh6|QxPզpnAZ`"l3&ZahCYs01iX2v+#ÐAa3ws^7JvVŲ=_*BsEr0=6}K%3+tByxtWS+E 6J;6XCg!]2豊ЏZN+z(MB'8P$`	~Hci OA㓈it".!L֜GsCD@CB1M$h~ӞB׊[Gich	ɖ,C'8///:_8_AgBFjFsFv,D7   ([5DZv0NK>>? PK
     A y`l
  	  3   org/mozilla/javascript/NativePromise$Reaction.classVSW͆%ah
(!PmQ	$*l즛}3vO<Tdi_;ӿKPĄN{{www_\0 aG'+*´p-c
HaI130FRq!l}޲-ix>fRcz	[/"CO+m%}M/Uco㞻bȋWj=S7|uT)`4+D!EۦR?ļ-`.N2(	7O?sluerbx5t{R,1.M*Ea2HYsɘ.KIu|s/b:nBir5Y\}WG/Y7aznl0!X4\*`'p$^lPH*FUNHYw3aKvpK8Nk8)zЀF5dՐÄI13a]/SbF')ڪ"Fg`!v@B Z	ͯɷbH4e7p0Go,Ra#)D^D^ϦqDgZbN4g8MdRPr85b8Sz @OY{bUҳkH5% ann^.b{3@(ď*{*MxNcED n ؁Vl'ҩFԐ9gP'QϧpOGwCs2aZ	V@06 l>%0Ϡv}/cF۵[b}&A)j;:R~Ax& l(K2yi&GlP~{%q<$M<.<z8_@/˰|x=|s+\@;hXx9[@$e1tIL[G dB*z_Ķ]*.$Zd}I9Jq>C|[tFB"g}PK
     A CE    7   org/mozilla/javascript/NativePromise$ReactionType.classSmoP~.-ue
lpefa`$.]JDc3>Vb .FMɹy|J*x+R1sUF<#)uQCA94w`
6ߝd]=u;^8/S޳|qx N헾=;;Z;m7	&znWU:N_yOVA^S_p~mMvFKa͙Zn|vRgq}!1@˻BmWׯPϷ(;x+DCt\}#a9Hnw7& Il-{GHکࢬb %7,m`
e
O
d`nᶁiHbafx.#m+ ex::pWq 9R-	GE\8G}Dnca_A$SjPe|d,~+
7ih$e2 t_5ܑq7YF.Q#@=JiHT+YʀH`qvD2Dl`6lylPK
     A NӍ    =   org/mozilla/javascript/NativePromise$ResolvingFunctions.classWwUd6PTiK6iY*	TɣMg̤]P=(#G㿤xK#HO3svw{}o
 u 6W}*Rߎ <)z!*{؋}*W@ O)xZ︊D-p> =CT1P'm'⎕	AMQlNɤvDѝmܶ><7͸kXf7Gx%aaZhc1Ԕk5l8k%QM0 w
Q+'u\=l84u0GRgMé,
JV,.([6Uǰ<Δ2]qKx<GH[R7vpv7bPP1,5c"TEU\=>MOB9D3T9-=MZ¤-Ld6p$g90;Υ",Rj9&?`>"|ʁ2#mE-`=HgZTYTX*R*znvo2ֽ%BfXXVXoYzjw[	;F!9K]
⸆$s*^p/bn56nÓZQ)
/
5
Mohxo"M
oRqԩBQB}Zû8Ci84Va]V*y Cs'HM|Nu+ν),t\$N2ObNjs9dߤur{?D''鸺Px;N}s>"R)CK	eTd8mm[8omV>6UTUwcWtap
˜/hs\ָEˑ#'U:.M'm`V
r/m8C_Y1S1צ[ e3tQ9*ףiیm30Tq]տ+>
Fj)}jn
] R3ktqײ)mZ*kiԲ)
	)$6f"ɝpvf*P̚xmQAdp9ͯT?tO<Mue
UĕnQ]/~5`}'$TtFE<WD~g_7r^*|W/Ss}?*9>kUP1GCFXZڱC'!BjFiPu)+t!	9Qy)%P-!5.IׄZNYUiDAPie
m`dZ0Rb˪hx(%wM-[.+}5L	>S9-;(;vBk	R
c3f
cygעm'g;٥rTV D:t)=UzEـMH(}p] +NIQ&OQ&OQ&OQ&OQ%E[h
!F+WR_6ުEѠs<HHsKk_ìʖUK(<j	#%TDiimn\@ t~?qyڭvfɘ-0)	֒:fA(71~XWRA}َ7I[IICET
֌-2I1,wЏE`/ǋ=9.ڕ[s#JmN+'qPK
     A n^    0   org/mozilla/javascript/NativePromise$State.classSmOP~.֮
D_n㥠&#di@Btut:>d$b4>^"1Mss{ V"
E%̩W#Ea,
Y`,i~YCN'*2V!<vZѦm0oQj=1?F}:w7
[^2Cz{ޮvuA{]}Uj`ޯ:o+:~G
S-
wZGnǏ|zʚ;*[|4-'Y.ŴxJ[S&Z/^gyx@{&N;^3q'Jhk
~)tZk^'v	fkQ)iܠ[Ut]3i`LLLnZ!W(^imĤ3SnoO߼\Y?!CRBc=~tJ` [ $ťw>cOȦd 4fzɷ yE,	PKs3H']%y$$'
 Tΐ@W$HJ0N(ѥe<Tv]8g`5e3xL2	_
9-71Z
PK
     A }d5  ZT  *   org/mozilla/javascript/NativePromise.class\	|Tչ3"@X"a1	($d&LDjj]mUj*n5 g즵U\Zm_W{f$Tǜۗs{&kR)R).b||ƫ<讖"$E^ʳRn"77KE17#tnzGR#'&f򑋯|tk|<)N\/ O7oyotY`\zi"[6/wxP礸+nZ[~_z,!|Md:Y|N)"}:K^)C{i>/./exX<"7R|S^~u~C^ZOJCȼGXG/<-FƞrSՄ|%|[ wt~G]Ir6>@ίzi=?&_7|X7v;nwL⿥#J)~i;|g9|NUZxC1h8^J$	4dq<I+-h:5!Qփ͝Pk.IndrWCH,HqN[Ta#8/5vc+c&gM2NuqU,Xin^ZJ#҅dd]@䊇mIX%sKCEuWx7
&^yMD7aH0囫ڒҙxhcU$!=5h(Dszs^L5l\i*Uov$S΋D#
-er FnU$^RDA9Vj^Go
:M<O(40ӂX4ސy+\~Ө&}4IC8U2VAWZBsG~P"-Uڗq}B*+YVi"dggZP*6ԇ[axN/Bm4gf, Ք|<L*U\v8:G/µO@IemZpqiX$M-:SMx-O˽@*uW Vx4	I[3  V<YV}v7l
%n0c^i	mWYtGfIslP*^):]5mք"sBd
12?z K#B-1	+(kɤx(gkbj;|*`όػih
%湤h-(!)N6b`sř*aN%z:_CxM.n<}v֧Ep1PCH"<XZtrOL`@ƈqjK(v^*R}BK7C&u؜m3O2J<[>zQlg+MzՒ1%6\>kcFj߹(yMy(Xdb8^Ps5r+T5
Jfʯ
2`(!`ڦe&?O
(Wy6SE cqs-R%R^>geڡ%kմ$jiYm*.\>_@kNYbALcښةQmbW(8o=C0'>C%!֜P'VX,cdTR"Eh[ssTBuI)BL ͰL+SV]
ɝ}q"/ξ?L<G,WfBbM&k$.'&`춾1^En)&JQ&ŤN'
ȩNtv+6Ly>ٺX3Ήk. 

.q#vCs}]]ACLz 4azĠo#L}lĵvp7+KAuA8kH4=rG -v$4fhGo` CmCo~o
5a24C-5Aoah3
,mhcm,3q&1$ǯV+p];
qL}:sNJ(е"C+gt>jh%xC+gz.
-`ӧ&h(`7ƒc7ʴI6Yd-zЦhLLs dwew#?7Zdy!PLyv(
G4C]0,>3CUCc*C2J"9sU-&B?sum-.6jƠpR53uEsx -1%Жk+R2Tb*VZHuH!0P/5ZX['_@9iKFogu0""dCBC@ a=hV^f<d:&GS5tjTWZ͜g/0wBˇyoIHs)~!ŻRBk-U;R8:6i
xkmB퓀Q&K^Y.w
H[RzBkS2LNǗ:A61'Qbw +ή\8׫]mRv5$̾K-|ku?/>};@dX<Ee$6kKFrRAcvq09
f4tIuC+-PZ)>%u'
5ۢHK,/P.\\yJo;M$gZЏĢ/,7YbdvlwMo]v\k:1M,j}/Qt {Gk''U[S&Ez@dʏX	9,y\޸v)1U#%]3A/DM5ՕkgΪXd9+f3R\g[dU#E"]~/7%!ۄ^#PT^4Taz;3O6s)]jΦh>?b5)ƌ]Ss\IWڸ"ٱ|SmH򢭩`zfzs?O2Ol7 s*NڪO߄8KD&u2,Y'wI1s&i/4|	vcTznQ_4}Β9UU@דEc>jIӧ'WuE>caV1[`8ezA;iMGlD6Uh6i`⼕i8T{IbVҦə|-|0W	]p~<\P8%c)T<*!趾Xy}9yݏ$*ZZ%ثKJpiǿ˺#REӺ1d~n
%S`%LGʶb΂p"jĳSi{z8"ua!gUrR"	T_>)[cXtڦ΀O"f0&,HqC8Ax`3M["xvݦi:$׺oȍ.xҚ#
mp3xS̓."
ŀNHMX	0КiIKgObmNwk35iyBөCJ"t]iLayyt&\ɫ!4y;!U?L7TQ&7hcԎq,{h'דIr$O`?y'l<v|pC%
lFy|:FzOso==2
ұ4`y/܇՘6paIAJ|9]4ݡ=
iuE%{r%YƤMl_.ZĹƍNzI,, cB:4Vx	TO(BSh#͠mEO_`"0h1P0IAh?j=M(=NbĹaM|uz[$]O,~qYeQg=C:HES)89!O{,lIAW& _	"*	]N<|,wH}NSt.E0YdCCKK\AK݀p1(N,]@(\
YYNhhui%ͤi.*Zam5F
B+T5oV:F&@,)yM;;"(9
'8Ɓ7߅9pJ9q2z+\cș9:}_C~ӏuz]N?,}*A-erwjRC4ȲT3ki	/N-vZb`ԉzb^35g%OIV.rAGK٧p(|y:tMӉ6M'*Zi%YrXr5;K7[Aˎ%Qv/AQ|?9KvY*'hvi"TbIWt?R1:@m`t>ݤ Q  rr(
rHvI?_X(Zͻ6
i9Ek!wsvδ;Aρ-w ,YTdh2L`&z
xz(n(.aܠ{?${U]4.<Ð"Y<]w"U=~O~w-An:} {~AeiW@fEu{0~3{l+U'v _ʝ`>:|>"K/Íò_W{=6oFnw`ם`p{P?	n;~8!~
f$6͍]];10f!l. :c1| !p&:
o89EE$Am(f@DGhN:J:YS529/kT2ٓq:2p|^HGq	,`OXJYlIlAj{m)z^<Hq	f'']%&z+w>HJQ¸Daܻ0]F<0[PEi0Bתb;ƷVa	nր9.o
ckPC~
Q|}ߡuԫނ6oɽvNX

^l)mqcUJ@yg6:luX<3piG@uEURk:w*R뺫+]{ht&S;?]E;Q4C%c)6{{oRuK5A%\IKnTOg
/vt]zV]@<l9;<۔
XhoyR?;P$YxoERMgi rMW).+hʿ(ϣ3?>Jcb΢ig`c7-`pEx GIDyݎ<L
?{uXlӧpXa# :, $_BJ4AR-S|pۯcR*r}Ly*Q&vϪ9#mID3Fj} KN> b~\,fEr!~J!-
A0<TCzlb\LԊ'տTBA/"Y94-.A+.4'}0Uh|;A){?!k?(C
a5-U`<r(@*4Ϧ9\HVq1e<	aLx
S'|Vv~XӖ8̚JdL,+1uBȾNB-KYjvC=HZ؋W	(r2M(?:7|_
9<r_
CCY]ct3sU>G:O|

!b|E+L^{F/^j?2*D4iŹ<Ky|
*8VaY<$fԜ	rRdSuҲ̀W>Tz %lޚ)6K^$A9pr!Uj2%J,	A8E^u^f6zwe6)+h<_
4f*0!Z
%+A_ǭ6TjSq-[-9`圯2Z+^7\ 7Bb3Zh8~#bfrry޴+_EZRvy(.GrS-2
Qldt$S><^wk9%LPK$vs1sjmҤݵDvPl
HuN>I*2]2g0kQ>JFa(Px!=0H7\~y7]ďAbک
Y6 >HrͶil[Ͷ+9hHH歅9E;B<B9:Ftvǉ薓N!dw[taOkKOfc?r:]iS >s?4,y|y8C0ߢk۴_[E4aw؄$laiDN&a
Pv%Ҽ$\-wr[t9Z%ie\~i	ؗ~ἑ@r	/S6F+tA3U't	N^HIT;u&j8m⬆?@jey%օHvWL#ءCR<(u'!<Ί xs~;eaw;m\M۹C侪
:p	a"~>˨oRߊP?GPWYt	}mz_udo_zumN"79_)j?\ҟu.2WBBՀ7|9.h,Ei+vچjl;݈v	հvv,*o;݂
Ygp;V8:=%mxwK=x_(8kÓ<Agy>x/rWQ^eٗxJOyI,/ȥW獷.'РcyOΥ:Oy"媿	.CryF-t{;Jup+!n[ܶ6MS'y~>}
"M1͐ߥB#	ʫf}eT4sGOIX,$`e%tM4;EApQL=݉0*; n;5ԅoHy5
%ak"q>Ӏy)~WAX͜
5s$݂<J^m gƘnչZYFn2&Qyfc]E1,Z6EWE[k@kNF,ͲYTZ4h8Rg43&ҭj,̆fʋ^sjvf۞0[JU(eညP wYue{ o4Zy{L"3iJV^k8"MAb!%ҽT*\Qq@a~j W$CӇاOb>JzA3U7sv1-zyQʜbۜ^̩)Y5\۝[M{-n{^sZ"NZ
O䙮w4|J1f.3qxY7
ȑ84cS/Sʷv\1f#_˘<=gyew+Ckhr%3ik ?7aG0WZWgvn[&n]k}V+={~l=/PK
     A b 
    )   org/mozilla/javascript/NativeScript.classX{T]w^frIHdED
/C2IDp܄L ZPiBVmjQZOSUuL	
k}.} */Ǘ2hJ!5<*Q
/pT<ᘆQ
j81/7(÷'^<oOw4|׋1|O{ZE!gsbfB=xQN#&㴊f"ǮmU\`AK<L#:bo>oOKwwOo
|mFcԈ
6v;`SH8OP^I|ؠrP\<4bƩ@y7պGIᔂm`PH4j4
U2o{dC]\XͷfCd싚wA-~SAq[$fv3⥀"&ؚt)ld8>C
aiD~K36vAcU^ fj'̰GbȐ#pEs,OQ0<{qz	ljA35c,]%>VBU'y,}6Wb*lpAZSc'c'eoj7-ѢO¤·YD͌
XC
44'"|oZJ׆B9=
qD
A AW"!UW3-mdsDUD&lo.̋OH,,Hi
O2>:56\	1M5(뫳Ld
R2$D J'}@^UffF>sSp"|;LNI1hp<2Ye.'5'uvr4Aʲj6Vc@#M0!9|FWt7t4cGf\EdVҽ:ś*UP9ll$fTے6~qNc¬3DjSEȔ>}H(5hsbpdz(lI]g0]b*c<ث *~c?q~+FX]A.v7:~ W7d0K7O:7wO[4 <'YyHp9yMd
jC*KU2TҩAMm^ӗ>ғ3Uw=k#Q0nYi!wa9b|J]Ae
2\b) wI˙	JgTv3?N%=[BU\ʬHEmH)޴g^%)Nf*^k$]s5iM1b_lEn\έKf,90{d?2#j23Ŧ+!ywݹ,Oؘ?$fFuym5l c頸tE	Vd{D 3qZ<4U{3#D5Ãհ
hbًK8fAd).:{r_qSx=94cy&o|>O9
GGP[6	
}[,@a!*Q p5 {Lѻrg{ylyllp*pO/jyDyf3䨋?G4YmHN;u!+E*/z*dO6KfPOyTg^[BX0z+gl^ESW
8	6%A)	*/Inu[,VdO␽>iۍRRʅ§-=Xx+t=o̲,f1u>+؃z",rْc`l9DUԷPt%&*@Ų(
v"XJ	*˨==	 3G+W3rfirVw9McX]ζb/b[
姱I,__F-(5J
A:b*6ڍ*Foέ::UC<'eL5F{ɞ6p;qd։^fݍ|OʿP"*\[懔3uD`KG'uA>I,[)HG⯃G*kҨjRj˛4[S F`KcEWə&ͯrޯ9'Q38sJ{Dث4.r(ůN/y,7ڮ">4mi&9dJ +ngp]ݸ$8)AJW!]nɔQ^Oh3E~̞J%HȷOR8vjО1Vr9#ӌKDy^V`FV~r#*jQ%'P)tPfԇs<+-a-Uo^EwVu;]IԦS`AD`:%TQ pPb18	,hF	:65t_2W;L.pn|"|7	Ou8ֹ{F~;ʶxf["u)Pзppsk'İ*[$en1,JY*s^(tU8En>=|xU>΍N`5 `|'O!<Gb$t/Sd[Z d.}{=a)DqXo+P1!HQQQa*d[TGccѣJ҉i/`2sLl	ԻPK
     A BD  /  &   org/mozilla/javascript/NativeSet.classY	`T>'ܙ
	:%ۀ5@Lp	83a*KVVu1Ruy=__uW_}wrHB/?_>M75CF{FiL#&f\lsŚ .ѝ=.>+PgqA<X:\<D'~4åɗf4#$(Fy@B4.>sq	5	4C%|<)n2QI+*d61EӤ9]ROiOw,rHcN62ii<_lË<4CHRU	=Eɷjij4zh)/fY-xe9.^UvSRw]q6.pQzːuB[/Mc׻8.!S^HFCF2Mė߅L9sT:O/

ǎMٹ1LZMYpup|&oІX(^7j:#ʤeճU՝Ԥxh˂5eL#ɺ-X,4^hCz|5"ct7i}A(6Z3='U5FY'Y
%DĀ
^LN|	E"e1E6`3?
3dJ
 gg9zz gIM$BBqA.A35-jQ7SNBl)bYWWu9EL¥L9[kdP$#H
<CF'P: !Y4ΰ)=[
a5+)٘p̞ԋ!#fSQ/n@d^c<Xlqj
ɩI+B
J7 ~/9P*UNvcDb1n܉oA!rvg/*daQ\%C:u1G#qRດ8%Ә^.n"cM +kzd|$6!on+TOVM^sȬ7Jzbכc&1m6|3(C޺eĊTO	9Dj:iD;7eB+_5FK"z%(}+RmBXh\5mY{݆ˣ덶`ö@[4L4o߂$FW2R@7N۠1JBYLb8  os Q6.1SFP"G
=*N-0
ӀXFcI4&ƼXHkdXO&~봍.ڮވ&Ҟ$Mx[|/!t!F7/au܅tn*H!鼍/:_&.i:_W(5}ޡtzzԧFױU:}@')Yiu^EzUk_utN:@CBY:l:.6ٍX@?AfGD~^|=Xh7'G,tɻt)ߤ|Vo\vC@Yg]$3!4+mh
淡:wKa=D<{uG_E|czku~yݣ^(ɾf	m[1:d*
J6tH:?-=#Fׯ]Fs[Yc줯Z4N7ªprM+~_%2P#S
8۪v-lD[5ur{/-0Md\XBهc-ӉOUH=I_Bi1o7׼cqԐHg֨iqAWPnڄ7ɬ=۾ى1oVy
ί;}vRV1u%XoiOٮW1Zqd#)wUUP¯El1e5aR(Y4aupwYuHŰGNm&DڡVf>*'@O5IAoYz#<H%%Irn/ׇtr^:|IY
svUpA[7+"xrC

F4WW'R&wKՈivOM!eGPRG _a$Q3Hj;UӫZOeFS	
G+
L ['e@TcEہm'٣0\ܫz!ʮX10Ù8Tl;U-h*UիO:aNWl:`wz6̩,Κ]^zIܲy2civTq^c(kѮs%+N-x1it.wi>d4ڜdV<bw?_I=ߛGі%#SY;!B.
@<{tu ARSVVWϫB"%)UƆJINQS!,Lk3sQU.\Q*P7;v_}g
N*xNjuM:P9?;Qe:qƷuyѺ>wNj rZ F"@mh3t>t}Ϣ~!]Flڎ.] ~5k:?~1u~;?OnF{(h@Qe'?J"ۣܫ܊_NyL7tF?;3~LN#Zi<O\fr"OfM7S>pof/9QJ$

w68Vh xLG$Je*DZBfNRܟarHwD
M{,̶la4A+R=ը	}lA{,1:il2c3f&L][T\}:9yg5VTCt
ux6ύxn#,TiPxJZ{ 
_kZ)^J#(QFg hrLm
1,+NSv
[Țx~*Yzw|3LNi-+E@:@i"4?	:="4?"
̈́gCs ͣ/2ihs_P5kTʫVZ<MTQ@VVĶl
z]A~0vN;s:?0O)99G`Z	 *[E4)`.{9:=2z18S\Q$MIJѤf:&߸&RQ%%tZK?h
!4
r	3/f}GӀ~]G	,K\DOochZeZEÙUv]Vl2NuL`y`;xvf,MLsLo3)/ҫ)D?q4cywf9լ}T*gm/5%
sz^HX$E.+=?DsJEe$<Fig@?тRuI+J>=%&j\۩bϳ,gގǨAv##cJv	\CFi*wOA\\ ^<N~6r#ߦTA:ޤ_6[\gKF)'fXӦdipG؞q!п?b~'t;n&o&r[d/B,ghHTL[LɢT~RgQ+-Y.TBJ5.uf:K$ҩAKMnL>Oiω˶O;LK|4H&[|f:g7M&X}T#:_9jhO?j"ȼCCo? ;l)!DM(E3$3**dT6
b82E#&߈} x9.Pc6zn%ӇV0"3<Ì1&'U#̠=vaõ
S̘_kgc!tyOhfG 8lqc1iY3I*`OdXztaN+W#8n*&$󪊠h/xT!ژ	d&lx	$'_P 2I-_-U̬r*P
E]e{`ΡfZl^*
dVHLQ)%&۽TiPL 4jL>u X` Q : RmR(K༱e뵈:?R£x"KaS)+HR.	y+A.@̹

~xwE;{H0?A| +ٛ(Cv4բmh-6vEanhY[-MvEkh
+:J'I8}27@6E3G<ʏa}@YGFp_NC8E¡F˯I<MoC@BmOT0ԏ)	3s_v6
Bv98ʬvdo_>r5xOS{|=?<ߺWr2xx_KqWsWfjI`ֻi[Ф]Иk(4t[РSJNe3:%~oTcT|wy~:ky?\W&e|w"L3J(M>*4ĉff	yRm<!g	a>]cKavNn:˹\y\^xI<`D)x:<<#<(-#ƚ-hZ8dA4ӂAbB"ͯbM4K:G,\}];Gf_v`A\MPWE˂K)Տ
1l<s0j+IZOQPK
     A 	:  {  )   org/mozilla/javascript/NativeString.class||ݽM#C
 P (!9AD@ŮXJP]T?{ovo		χ{7}7ofwyv] 0D|t~OO"u<EQb!%QżǗT`K(Wt~u^tyΫt^u\uB+u~t~O*Ngt~6vչt~W_t~/:_t~ί:JW_:Nt~ߨtAuIu~BümhI]4-m}^K`E}o~/Q}}Rv=!jjz{c>8契IuS>?M/FR>MDBѫ:_oޤo*.E"{~O/PR>>go:BCu΃:J_SePoÿ&n?yg~WNy?}؁ۨ(e/Q||?o(H!JHӅ{&t_):#/tOyp!vPHEZ$QԁdQԑ`
Q]֮^QRԍ*Ni=|"-PVmOE-2tIY烏E R4&jJT6yG.FxD6nOcc# *@Z#)(}Th]!PL#(C)q>1^b$8YF
J
G+#eM`0-/*(::OVYG߬3<q8,%eg,Z.WtbIj	V'Aqǝ?k܉'R+eª(X-/]R-/
\#Vr`Q呲*ʲAY)axDMiȨ*US*%pt:F<c1qk4دqUPqflubjVHYQxUcu*3Б[YQՋ*nUʗg&a*O8exŒ5B\?E%EMU8#+2GnLޮp"jE%e
BbhdkUUFN	!VayISG˱S.;YI%rwyeplºX+-*\B=pAbZ
WX3Zp3twTSyaAI8 *3`h/4[Ӛ-d/k8ɥ{ۢpZx\>kfxY"e%Ea9VoQqUs"UrPVpYʰùu'?Ӛi*g	{?Y
[%5LJ TY+KQ̤tUb
lSz5ĳf!8d;9csGbsU/ٺ26O-& <ѭw,eƤth5&z@nIH0V|Lρ3b L>KsI?2< \P@с}t	><`cj{X&aXʆYgmw=4:2`Y8pYa7-%Rb'mZyi)0?K,*	X,@2ڴHY8tQ8:iON[*bVWoè:a9(_A
TEN[Eӗ`e𥳐D*~Fq*2{UЩ\VI0i}pQyeqCfn84˦TsjU0-nv$ЬtX(x'8.9*q*2\IeU!I<]ŅV*ZY!gQ~b]*KJ\e4b<6A
-cxE0(w[u߽2+Nwad9	nu=e8[)TE:;
rʪKQ<`(ÙpR~<
J]\
pOAY$݅0G>˶"R{d`@h*38{%)HI\D4o8,۴#UURܐmeehHI
S\vhOKsIeE!͔8An7S4\"ܸp
aXLS Pa2:
V]a!#S<1{#NB-IXW5yUőŨ;m6?U st 
!
EUaz	QFÕ%*_))
GGzx=VUUxjf[l{zHMJwԪKDE5V4*je~lJړKh-HbSViV4k@NQDyje`X]YyD4Dʍɇ-3$#>VN[]"r؊XrvNjyE3geUpp]P$nm8 d+E|K+c~9?,¥KUKʋhcZ4:]3HkWivͪ-6Vgi!DK'*\ZA[}E.1ئZ
ɽE].YXnXԵSPhg-e1uTepSD]vrְxDfpkh%gn즁z1oGAb9ZL̫޶' 
TcY`9Ŝ=GuEլEDb/ _i:1qz1M\B)aᒰMzNۂ
KVy59)"OEnO 1'j")>`ku{+Wq6Qhma[
V˶hLvG4,1`hD}kc)%.M!޹vlVm&wݣH\
j[
&lӾ4]E`;2p`YG1qb.f8ޒ~{'Ǯ5cز}rE4|B;'/beTŢt-J
U&"N+2f]"a
Hp-IM4RJ!~Dv麑d۾f$َ^1luH}9CoѠ4iڡܕI&(W3lJO3 O,8A0`w\'b@1[XdBQdXlbC#Dlth;2\HQ*
0Fj2QnpMT`0I"ڬi[ϕDl<>˩PjMn;{߾q!Nb8g3
^.΢mn;6:.-p8Gk\C/V2ɥGU++g
qb.zj2G7cR\e<W^-1
>6m"eP(9L%0HYAiZk
qţaZ#íiJCb7~Clhl-!|1ĭ$f!n5]Jw.\T}[
~O
5`-RbK©1) NSj꒢E2SOI?6:O?؎o&		jeay"q-z*b;|*˰r~N}RuyH*DG#p>7x7Dx;H/{; oϠAC<(2.v3bd2C1mO'
m3hG#r3ĳ9{s~x8őjx7%$^&qD"^5Dvʹ~By<OLRCo;C*&I=<.A!^oRIxw=_xO]~?:&u!Æ=d!>{!OZm:- 6/v&Z:`Ժ`?9Cƫ<Z5r,yúaw.z3\M˓=g0#.T]Lj~m
5]PTԣ؉ú;׭uAtjx%=l=q3f>ٱݎOEtGOW/\jW"oyM޼2/WOΘgdsgeeUn2т(釘KJ%{64*OzF	䔞˒6ul|Z
(<BȓFW<Ӭd;Z΁Ej+mYiYSu``vK\5Ri)y
0F;PJ۞MIGΒ[F/B+^)m֞!<'- _>u?δ6| 5\VY
7a삕ܧ;OU&C&v?hQQ\bmt>+RZQ& ͸ŉ#.rJ";r4$\PF
.	.sL:
W=#J	>զ[3fnWcV2uqo-k#D?&kTkowzW 䵹yݡs[땂GLb˧Jԃ}g".,/mz)]%ie[mG۴Mpbv^äpAUuԺ]ld3.ty,T++

3p4Rf=N"_o;=X	?RB8㉃<n_cνy3[w^X؊vLtjmhr&bZy˧U4jM/л5ӰNnuv'ɮ֔RYxeVիV#>B]n#i%=iҫP&R9ms@yr2
f\Ym+C4u<S$69=m͘ңI͚r[2{1MJtL}!N#+ZߩYjqn(cOhgV
/LZ{}7j)gf)"tQZ+m]Zay$v祌)Zݱq36{̮P	  `FsxbV]XCqaׅ}-.8ޅ.q#Nt $8مC;p
N.q8Յ!=t^{pi.qg t,\?.< xEws\x$Q.<>Xx"Or#Ov<S\x*i.<q\\h3]x.|c]x\x.y.|<. 	.|".\x".r0.\xG/ueK\q#pG[JB\'#^+tS§!^§#>ÅD|>y.|>.|]"%/u5/s_W"ʅF|_a->Wcc;;
z3!)u&K@_<==f71V9v@lnF	$_z=ֲ4I_B=nÚ@R5{""u*$İJv'.iʖ%Jr.y=^u3=JgԃE4H0akPIΠpPwcP)`&6T˶
ͲOQ6kS!EA\axxd ր
X`7L
 }" 	)eSS鮦7guVSl3N.CRzvhKHl&W IuM@r=j:j5~	tj@&@l?6c )@ݛM`Og Ы	zPiMptx&,l
`8ǡ΅bPςq=Na!<%(0
ѳ(FɊGi#Hճw=vX#ePS律7b/)ۡo ]AƜm,?N*)&Ea/0Od0CC}00xS1ư bV`8EsPIcx3^/bï?:z`0Gb8
\0,Pa1\f}0S@@"DG$!HBD2!qDG$.$"3x'$2JDJuEb>qREy 1H#bÉD" ћHt&"D"!'b8k"rH|N($>nF
"!<ݑxHDb H\KAR"@\""q*㐈1Eb!CD$)$$&H$F1D!N$QH$1
0}nJÌ gf9JnoҾC
}9U~xXa%cp*S4U輟Vg}Ksѡ>u(_Å _tl/e2tX/gC
tDb9p5:װ$Xz6
n@GF661 u++tngKtbUVtna+myp?:bh@vDAa4(mnO-l;<,<vl

gu^k6{a{ﳏa>d_Gk}33|~/؟%_k=܀yg_x2Sw/>C#bl0<)|S(G0g^>df,~43l֎a< _:B^:r֙GYW^R
֍zYO~e}j/b},_2U,_ul 
`
ᷲv6ņQ;!6?Y.Mqͳ2 	p>}UAy(1^%9pxioF;7:o;
	o+vxV:oûuxW;Fwûmwx8=ux/8gޛ5px9wO[ze88<y^^8orx#^pxSd78yo+txpx,wûvxW9
oûmvxw;^û=銹fHI~eAYON=Fa1zOǍ1@<:8zHH
)!ffl-37G֖GȢmៅZ/<o_C4b@OTfu0VT{c=Mu
0Gm-zZOnuz>+'bޔWRwp%T1f719&OHUBj9!O-Z,cPjOٞGxm/Gޠ7 ǄԠwP/k3wl
0_~"_]vpB:XH
5@!k8j	EsCz!\{@㪫$*'; JCq-
P׃/s<5ǚ:H)OA:XJI=I8/nvAԆ<B:C< Ԇ(AMOc.q2ʭ͔+q{ '&{[풽TOݫ׮3DlhmHOy *9defΩ:rti.[&HAN^)XV48et
:8m\yլ8fW}7B ԀC8]{}sfƁYO=S/je6ٸΘ {&}Vs[ԳΫ[cnV*}A+|I^b%}^!.zv\p}YrjAWЕ-DM &p:JXKEJ@*TtCдl=s@= 4hRup}Zռ)ٝ
`E0?hjTAKDrpܐQn^b<A#ߵ?hiց\WΎ[qJQ,9P4quP=TnǿXv4zMm;Z[P-ԂM6
L[qwvnv
q 7pfC~jm>>dT62|Cd:w)Bļ9VQo
zЃq5,̎Ư_0>hl
WҤfC]-]Čx=l2+%>V><$|Ďf0-f7%l+f-e;2Jأ=ӬNb({-gC}Ne_*';3vٙ;wfgvyx=
Lv	b/<^+xsx0_nMx݀xؼ?nϱ.aۅՉ .1="ưE.{TLeqaORXvb(ֲ-
q;{SԲ#m{W</ >=agb?ǾPٗJwҗ}g?)We&M~WlaXr*gY\U)r]+e37xrdYywUv.<UyR潕y|),g_:V5R3p>^'G|>U]Փ|z%n@'9D}GԷRu_~Kox/WQuԼJJkORZO~am竵I-_ib_-k39*b~vFȯk:A~4I{o^围=|Yߪoo]D^I<}t~g3yryg2c%	O)s*sY͟\_l/yn/{ue]_=|?;Oƿo1;}A/?KwU_/W?u/NOO	USxυN%!u1<	xpqcx0s=waj#_B=rӳH@G>9<n됷á6QA.yȅEIM%W {~܍pMke)',R7C7k
h~9C'Zz)-lͧ~P;/8Rpd}xRf_+<Cˇvl`tpR/vRpRi}{	Wfׯ
ؚ=݃T'Y<}I4+g2Z`+	0L;k+u+٧CgTso,
}bƵaͻFQ0}AėԮ~'WH9vGkoط4)z*$RGV/nb(K@~a?2ѱt.a?0< N_QkB`f^¿?B6i/	] 5b<2~fED/8;RݹHJILLl߾?׼^u0	.ak6j!mw*iY8v_iQҥp#x:Q*ZɃ4`6B].[0K"G#$Qzdˠ,)`ruևXz?t$c);6O9zRO08ez섏>ae^L[i{ǚE9Bu~&dY"1S1/XxH\`dvGLCij,L罀7H Ut,T+|rx1PPӆGC$ECf!sI5-'Q*gD?D "q8OI K~CwZN~}6ҌϷcBMPQ@Q
Kt!̉Uk.VI}l7q2T"f⼉"/'=%n^
s?ZN罌>zx<}XSLB}h
ͪGb4;ڋQm[U8m8mXmKAE{E{Ԟ	ًEo؈؋I(}]?Hb&b	ܴ۽&[jxoOoO'ѝ1O4u#.:ؑ|\	lSMӽL{S^{e^Šm7ix2?)8.&OOTO(!et
w=ݾ5<X:Wc5A,,IjUUd; b(x|\89'hb@'c;B.OD
U OvO)zPK.:_Wr[кbοuU~{^ĩ}n棰zx
d&h,ȧgv㚙ND/d9JzjMS҅A,C@P└QSErW<(d:pV;Iɚ~(vHfJ3w^DcR~Vvx^
!൬
zs;eQox-MrP
4+Q}OAm;ztat'ps\	&a SeC{џ֍w6Lڅ3R:wG3cDoBtmڛGD
hʚ-2ch6Pd%?BM)q ft9|zoQ=f13:nAr.e2w}2h;lɖ!uP|wjP[!)#K&b'۬ . M\qb4@ur!]j8I\k
q`č o߉
tezwK^m_ry/<XO	S# HLֺj֑gb@Z8O+1o=$JS3?hz"ġ߅z-OԺ+[v$Eg<M>4 OpO:Suv/OX\!uzLfT򑐬t.{:zZj`2o4*90!Y8(-=YÆtAe'kk=LvH֣4@؉ PF(LyNObP)AY8U<l񊜵e9X/͋ȡq.g&)K <pngFaUv=R㵽(hx9{
{mGJI9k3tY[FӞVYt| 1h'j#e9
pF\'*b.˥i23q_!A|ħY|(*}9k8B|+-Lj sŏPg_ *~KN)09rE@R'@0AD"4<z'1߈gG#lgzlt	r3vt=Mu'zWwA~:kIutzrN[FPOO+!mVg:l[8\==t\!5r!h'o}\)!&R**+(*q[JWL8BiG"$%'(IPt(PBrqVn8$#4*@812/T>Dcp*U7ǳ0\95ӹBT	/k}>==2J,K3^ʸ'_3vȰ͓_
o
a'[ʓp`i5x҇6d_Z%3SBHIJ7tJ\0JS4J,R2a˕~pSe`GޏY'\d0ɻ7Q=Ns4B e ΋Gڳ~+6n`
Mb%KjJd5>Y{=x*]~y<^>oyeaH$W߄R IH!<9Q}l%7.`R|3'SdjБBEK[yL)2+ M9)c!GɅID8NK15bT+%QfQp2+`r)87v\$[VyVcM^v(&Q>B^
|j)$)0vۿEx鬨!:㒍GKVMMKҒ}7LK|l;9ziDj) tGo`X؅=,wS!_gǠ6RF'bXq".B\,nJud1QQ?D%2$+Q(W*dNUN󕕮EY+EY+E@Cj>C8Aq?(
e6N=}q0OąE >膋l44~>#a;E7?@3n-S΀8,
UsH`_M|)H͙P2cn3@0~QcrPiR_IP荠:+!-*~1BI'!?C5n˺g
oA?HkOkw|MK.?P.e
tP.ҕ`r5TqZ _w0
E.S6A%JͰ
ݓ3VnK;P-A*'q
Nëx(|?2<3OG^͙#(AIr*Ob>C>,g"a?y
>S$gIASl1ގ?^^ m&
=0><ޡ:^B1N} QF>V.>ye(^4o}(r͓c[JO~pcO+wե/s]'dcO0/;_y㊹[O|zZMY̟1ߥϾqvгA/x}˸n>>օ{ݏ}
?^!6*r~k,]o>}/<ˮꎿߪcV]{|LV}sdΓJ[=JE[}
zs܋^x"J2=aqb̗s-A廮ʎ&o=+seo՘>/d`CFmo&Tzqt}2r܍YLzC5"%+%a@!hdI(T|_V?AF@y
tMYd	w2#Y^(q)o
H<+IզY/7+]$.6
]%c>*+*f<Y3
iN
َ,7=bCV`ğ?
dK$&n30f8טɄq95Cq#%^mv$%r30f'8n1;wHa]	{JL%%qao=fw8>ğ=	Jً0Ļބq%7J\cOxٗ0īt8I/73$,30?O#~qS$f'*qs a4;	H1e+AMoag?0.!'tc8clA*o7Bøf8t]Z#n?Cg;>?þ`^WFװ,4
LMbę^]~1
70Ҍ3Mvb0~lf"A00V33&#1;a|.cvxr'1^f8lDs2`<LH/tG531ofaq?Ɲw0a*Fwr<%vDШޫ*ە:~AWPw(;Շ]ʣSc3ʓKnUi
Ym9_ʋG+kWʛ[w_w?ԽjGʇ|'_LWS/ZG򝖪|P~z+?i}L6H]
WF*1~m
iGB*tUӎR=,իWmjja5-QkԠV&i'ZҖ))j'mE;SvWk=K^ejJ5MFM׮S3jvOۤnQj5`NuUjaڽNPGi#Աړxi5W{NN^Q'ky[T]uQul>)ZP:ԣC=P:C}P_9CQw(ݡ*ѡ::TCvLPjCMp)uCPjC-q2rSL:ߡ.q+:ɡnq;֡Y-1zڡ^tEi^JY϶s/ƟПJJL ?|}R"7ms/gtC}mJ|.Q`y!ޑ/)ţPK
     A w7  D  1   org/mozilla/javascript/NativeStringIterator.classU[oGƻ/l`АRiJȭKM	*R6`6lvqJ֟ҧJV菪zfvcDj̙9;߹h$p3
[INc59ܒÝmILq3r\mY~`{csg@XX#cٜ[n.-?kN/0d֖Uu,]mv5@ⶻ_ɠۮ-.߮nx?َcUuMQmZu:o
xk!S]X~SH^x[Ğh3Mˇv"rk)	w$)v@[M}Kx>A<D=HCX2t2\8V,Z+Vf=dL +Q;2%0֢z>F
Vk3\ʥ}lO2tfؓ %iQ^oy[Wًa``EQ,ȣo'	[#Sʅ]`xe851iHq{Lrrk=*ݶx8KY{?ʇg.|d0tVw.:DS`$Ő%9|WTtHR#"1!Fs2'w;ewWҘVC`V#:N3:gPɞ@hWv:As
p+	 o|e2`Eroz%(PX	
Lvwи'_(gyP&k
&#g"Z6=NEp:+i0!~oƱ_lcPupUuS$crޥd(EFӷaL
W)M0HAQ
z\}TEˢB_jd$2!'iZo.Iuu_PK
     A 1}\  ,  )   org/mozilla/javascript/NativeSymbol.classY	|KH.#IB4*j5 $f<a'3qfAV{YZԆIU^]nm׺=nnja}3	D~>9/9Dt?뢣3InnvjrSk2#Bu4.z%Rjz3.xԳ4>EjƳ\5'|9ijyRŧz0LJiX,J
7~\\ٹõ|gH]O4>Sҳ8[R#Dy\/:_&VJqsyWHhbkev2fnqs[['mb))!):4ި&,K
|BF	KU(Enimؐ6)z4.uT.;+{]PI?!>_T2plLEL1OppwzvHcsC(lhib6P:::ۚ%k[W54wu4jn9~OF$=%PGƎPskJcӢD7qu4T$K׆nM6{ۓRtvN܇M3
t"ikI\>`;vQI8T^dl+b40A_6La6~-
2 <-
tv*lEHh<fZ[9u~؝^1)
o+,niZs4n{%"P0}k ifr">?u
l09SF8ftC
[ ;`̴TJ#W.N8'?b@<_xUHGST4)c*(*']7Nd);BL}Bx	`'{<$#Rp/9ri>m9ӖؓՓ^/н?Id8tQDF8m@pۼӁ)kxLMcq
v-jDzOD=0hOjb
W=ۈ1 :<uEϯyԗ1Ġ[ś!#k?&gD y95SO\fG*70W5+&M,dN&'KyNu2͜OGcUҀ9>AWPnn㰹 pݸ|6 uGS<D"q#$>ljx
sXBzI`$f$ݢ⵭rʾ~@>`ZI"w:QR*|a\>A*wE=DõP&qU8]3$M'(l쳢r#'6A3ffl2E{t-=?rV\x(џkb'	eS D:=F_y飴{tAj|6a'
:a8TAGd99׫!'CdMDPB{\Dn4F^6O&rӑ:,W苅-ҕ2)T_,VE?.if?':FE{2-zFd|;Jgh&|?ٌw)LKrY ~Cooqy|^;.@k~nw:}{tOM亮t>N?DPTϲxbZ7v/
}WҠN/ӷu	=U1=QB8e0p#:v:^PDuz~~ɉMMɤ<u
?ASѿ<D"u~
~+)ޠ1ͱpE`8R)˒KK85a:\G̢qܱ:,|XtҼkV0PMo83-<f S؞L2GK&-ؕ{@x7v%R)-YP:̪D"fdM9l(FepTK&<v]1t;ZBڮPu
@0l3`cCGWa|cim%m
m큖@G`-
pD{S[spejktl[ۄ8(MƸKy&ٝ!7:<^
Vz?Y{Lq}a85)62WK''{{.	<.΃l߇{ǝX*?}y92rɢĥe
`L
PyKioD	u?ʻ(	ȁ<J~4)VV|=sqe>@q=Ԡ'OdSdIƸi?ݒYœTdܹSsy?%4҉^+!||z4MZcwcHB`hŸ$@9nM&hbTWr	"dGe.cfK}N#2?ӮyA!JDmZΌZHL)4fS?D{|=䣫lks۱ڳI+)[ߗӿ?'s{NS:?w뗓>Owb."~+wzFѪld1Dar|v6DQvvgӆ$."o=}fdeC43Ӟ5Ddھ!iv˴iaZ8@Vxq~|aZt-.6BUmQn(瑇tNTAgi@P'FUTQVC5k=DYGOәXGGP;_so<Gn	8&{T>PKz|yPvzsvd.:GE_rѣzP6<tM&l(@=?BΪ:Zgh!%廕Q6\E%HeZ8M+mJI0X#3?5(BQ1rO1`gh/3?M>%y؀A#ʲGѓheγ؏]"\VV#AKejMd3zA-T3lfwBg6cE1aUYWee^EhtEN.OAL6k28[9S
u)Һ9m.vkX'8!}\[ݯfQo'
P(6K=9`g,F}vcuyZi	u}wT%a:}bȕRLYdQZ@*TK
zh=o9-VxVVk' fPP^X][%kut~-мY[f٪t,'K?mo}%;Px\(sfUv	ič~{
^čѺNfTg_}ex?Suf(UŅvX#D2pUô|?9fv6L>oSgavqJ
B_3O}/]*OZz.{+xX<@w;[ζzKpJ9{Ӛ8r*By|/?@+i/Vm^ ltP/./n*{ݔݼ\EWb7蛖mĝ]-EV>,w9M<_-<ůVH|HlE>KT^|SKT]eݍR>(e$}Ls
rũVIFn289p%Ͱ򍰹+`Yܽ
׽^F27@:Y[SHKl@ĦmZvy)t
brGYNq<(mKnT/{R :>n+<L-!BMy
m?Hu@17ޅpOCσ!:2WҺނ*AwrJ6xPz@-PGTJBp2?2	E3ǌ-KQa-`Q\t=zպJq~ۉ1筜] _[, Fz 
jw>a
ow/jSxPZby:lTEXi
4~wGރIQ`VJZ"lls
,vP~I`ٜ{st7	09aw?G\ǼFi>`P80k'S:L[JRjk>0].mFrsx
e
c1T*AX<5e7C۹R\k!b+,,K0<	+#9"$B
8S9e,\GQ*V|P
x&()OQRb#­!k(}d[T~r!sGn>,A;+.o"3]E ro;B>JᫍR*|r*4Bڶx)]ezӒ"`oiOh8GKUI8
''Ĩg
љ,p|̼d*J#=NL0GVް@Wj묞Tw #@su.loozj?GYf_i%n/Do(wO7c};OX<
󆊷@­?JW!
STD3D0bU<q4tp)˨I?n{k"͑׭^H'E#bsX#|bٖB;>@كԹ aI	A\ff~tPK
     A fi    *   org/mozilla/javascript/NativeWeakMap.classW	xT_fy !|,FK
4h$!003/μVj
U"j@LPpA[mo2,/s9{Y߫=sBeX=Pp^8m/=bx=b#{ǽxb1Ób8'~U<d<"D=+(Q!X&y^R/
%	AI_BW<j&*)|ǃ<x݃7x/b Cȋqأ
bF4Zh,hFV?@DA23ժ↫ykjjCʶڋjڴX5
嶀Աз6]^#,U+f.`gDQCAכΪyM0ҫĒX 첪C2jF½ZkW)eFAPߴ!2D7':
Kp۬紹Υ y{xe6[`EDvmUM-M-Vֵ	݋*p.3y`h7qmtZ|bimNGn	y{8KAI[/qf1
KCF;q+ײ5aJ/-K
mPHA_Z㑀EL2Bet g_a^XPP6pS[A.0F.OvGQ>ATDO2TĘ[b	Ϧߔ~v[iTQ#Y&b!66cxXṵ5P2jZ[g_blZpy?`}#FMglU0,TCv
$HWjC׈cVPtZ0xFZ%ٌGLUC+*95lF
R0jװ~
/]B]ï-تj{*cs#܈q5pSG
5|h01܀TE_QFC!SF;a#b%!byn``6K׀[3#fqذ6틊5
5S/
*W)ڻxOkʝ^ܒi7j%mYHS2CS
k8!'	.ݚRUfYC*)qGT5κ2C!&
x5%K4%TrhJ%WS	6m?8ÓIxdS݋ϴH{ʒ\ˌZK+Kc*	)aIb 	&R;f3JJZB޾<j{&kN_sZ'!{x
^%[De]4jFn GI"F|] Kq5a^i7X,DhiFˈpr\?b*dDb`
8݀y4Uqf鸮l׏xY#7PlԵ"X:y+fdu21WBvѡ^yCFiFqtJvKS[s*3q\ߐVϐ`?)`2f㇜ _A`#ld\Ct'NanXaJ62%|!."W+̰<˿7yh9w)р&+SȯJɷɷkȯMב_?!v圹R@Ay?2OQ~up=
9L6yeWBӃM$:w
E
y>x8KXlB;@RT<%4|J>_foR[N(H(ުuν5 }ڍ9BW?9}Ȯv	%z^~C7BI$nH-Tu>RZ:-T{}y0num>߱B/#w[0RAx]=p~L=uG0:>0$U8XVaъAVrEb^p	nኻљ#?/>AW~&z!¬
P*-袉%U"FIXF\zQքS(SNam #1	*YWV]_L9yi2{.a#NrBxn1qP=p:cfoFqy&d1>lɋOe_#Y9QAѸ'R<t*N1aފçK][yZZtYO606bW
FRIRBʐy)gnH1đ&:F
GOL&8i.<`}Re2PF&q*
Q^ه9k c3L-"#tyt$M->͂6I1CjcRED+u<AtVOjǡ4TCh\ИAgk<OMh>:CRvd1dUϠRD:NQ<f}raH&-1L-Qo'$4AKbD5\^<Lʙ/**}8_&s(*QMOp+gxL$;X	dQt7Գ:} Sуa:Mnk)$>E.䙷RV$Zs%.OέOu$9q!Ӓĺ4ԧI9䜽#nw1xGQ]	8q;%i4"=胻swaS",7].9a&6.>pbNcFQZ{WގR(JQvJ(nӬC.,`qodҷP3]R;WnV%VN5JT7O89.RM4Cx}؇~A<8s3ɽxWkfp u(I=&)BD3o3]]YNwGZ?'Gaz8<~׈4)K*@<[n^B:_aOb!u@D?{PK
     A Pl  0  *   org/mozilla/javascript/NativeWeakSet.classW	xT_fy#	b0$
Fd$	\1fř7EUKkEbۀ2Iݴ]V&2!|_e;{s{gVqB(د^8^w+yW_P !8ŁGpD1GU<`A}ЋxB=!.G'T9!zKiALb gTϏyypƃ8>!V?O@3
JF"G7dČo\@Y`J3IyUlٲFoN}Mw!ky,dwm6]A"
1GtHʊDzrGsHw\R	CAػ7M1H47-P"c5C5樴4_zB D*d	p07ᰘPF԰_ГbT05'݌r2V"Ի;r
[6&^Gh|M&Εf֕čTl:G!F@g8,:ݦ[F4)d)
u\ɐCAs'p$
=j鹘۰VFdMԚێkz4J+^,/|H>grh֎8t)<UPu6CL"<n
2Zd'-=y ŠL
%5ƱC
s`;%謉h븑.ސ0-ch& $W,\*>K.]xx9͑6@:>e5t^ضWAefS8>IYm豥wR
*HzCFdRK*> -E3E4S:"K0_6

MЂn̺a%.y|͞z#/e
e|EW5\ojKv7ƸqkHDo,4m1gh{ 5hK;3V1RFcE*
񳅮ԿgUzUܬ3Jw]
߃b~P7s[TVÏc=kjg~_h~%5~ayW
xȌV#?h#:0g՞aWCV`;h;C(W
5ChOixqysza5@{N6ڗi6SpΖLX-uAE.s(9r+F_f݌F(.ۙUZ}k&zLTQSNe$ao*8/Ѧl_q
$	3ba`:_钝hT#N
cQKj!n65@``m̮_kf7^gṲ1Yb?AdV;a4Q-vj=fkBEUtWkēl;5|.}9}#K&uovv%sƿy|}z
ycw U
J"<eVY4p[`+s)wnۣ<oA4.=:f~xq`)gw.8y~\[k6?ϙrޖ3o|CMwO";FPGq
i8u
&jS<d3>+O'O>
z"
JbdXeոԵ@(4/>_a_[.ϑO}T};	oEQ⯫o(wե1]~B(q<oX*Rr狨D-W](!'5}R糘z;SSMˆO-12}QAf<#
?ViL42DυD"[L4S2.ap/.$w
u-P0]
e'(]gЍtDrJj'vE
Cs#թL+bL4<#xY1We;m{sNbn6 ^GtI f3̚Pz9Ie_'9gՓ'EqPtzH
 v+Cge%ʑ膣x9?HEzuFBk®krM
>ܼ"_I7ӽ|O硴?
?iBKz~kuN:2ꐔ"Ԙ,	\\vL+\"G09:4O(m2VHjwkj=A\HDL 3+ʜi,Ƕk+E=>}D:.\%7bLU{	[Xo%1_nM`nw0wJUv	eO9k-Y][][]d6f:k"GcPfqf_#q)\Od)#4ň(ʹΆI0bxx<O:û	{X^aqVbmC8Ԥhk+hv6|\
Et*u}]ˌVzʽהE(89B9-siIB9ueNVcPU92^0b?iø<գ8qtZ|?ϋ@p @:菬ʀ*Sy+9E"dEN]2V"Sm)x8)'MD4J)qBn嫀8'slP)s|O{B%<㻤;PK
     A ~N	    '   org/mozilla/javascript/NativeWith.classX{~']6CB$$l-`% E;:;ZբЛD*b^L=Lf7{	<g9y|ɻ{[ "	ĳx}.)ϋxAwhI=߯C7~:,G"~,?YOE/ɳ"~!/xEį8*s!kaǔ_c3uY]A%
0{M+HDhҰ?Fk$sf-mGޤ=rČ5GDEKQ c=15L[d3٘ؽCb$M
dLtH%xBڽTOa02wGLkX~#5/݇XZP4|@/=rd;qܗ	um\*f\Cidf36ISaNd5D-bR52εoqȶQ6wCgoո!{5L2,́AMz1IhkyI"CPp(b.gxCuSereAɱڣR04-!U4VUͤi2ˆWïhgt\ݝ/p7tV,sJ^IwNU!vg#Jtk+ay%/"Q>eBv{B*

Msk,uvIMܿ`(12-%dOYuQQՠbU3]
ܒəքsy܌EFy6U|Im6W2l!ʫv[ڞ߰F:הMDVlEg;gj)
e

G*r .y1&XmtΊ[
N5jױ:RHqEǛxKZGɢst{[o[1;	V6</}:"=n:ħE0qHĨI#!X:&p5g44G$833w?]Fdr[ib2_
߉?O:W{:.$>J%{";F	GuoSg]PϷWU**ZEK[UqNag^jϤ-/CϘͪ`޳VacgoܴѸp{s);1nXVںsB~LK.{+1 #A^J}˥RcXsY[U`ш6cc[s'ozQ+;k,b3Q3v𐝞eGQ*? }ZdwуurF>v5X{V1c|uXKuB؄OrfM놋_@|ݑiP{7|L)[N!3:'X@y
-B4Q6ٵRH[p3#V]'"Y݉~"
1- v4b+v^9hwG{~/DpRE,XJKw6`'
;UY ʑtGCLr
kC=nP&W:jIY	Z	5\ݮ1t>ל&=Uɧ%b|8Sdf]TCvQqQ]ӭbM,>ŮF^o}3LLVc+ScqV(Ex4:һ0*V״nꎼީEsӢxj<5y5͍&\t]>RQ8K)/shch5g;ev`	z
31Qŏp{V2stq]fCɲb{fd~Z<XPy>y/s}`a>z6/rm!zrp$<HmԷy
 ;p3"022FIB[Ύ~nMu-̠V?=ī59[=ou.bp5x5h)(#Ɖ͞f7]˔尷R
4$p?`q}LU	Hoh(u, Tey,Ty @NR
@6@-ںvnb4	{h!]bអ8&^{3/OruLA8?u\YYS!NWpc>]*9/YzRȳ~9sd;k{)9]ShFc
7о}~hG3K!/s
IscΆMaj]
J>z+Z}{VX
n78+z\AK
<hs31:njVs0CI|م4vM#2Ι$/=0D]۷~UC'3VA.^y[F']VөoP>w.[تdp7}=_	 	}20i>bx_Ve)zIuL)T}PK
     A V      #   org/mozilla/javascript/Node$1.class}A
0Eh5m^
74ԖHR]x4C	<_ 00I"d{[y#0ZMSٖ9ab]/Qk-xt7[[c[i""\SéQ%|( tnX+A/d~4(EHPK
     A 2w  n  .   org/mozilla/javascript/Node$NodeIterator.classU]Se~Nl)`[l "`QFЛmtl6L/"wvsv399
 K(q:cI^uaQ.!|>M4ְ!g7U?:kk~X!BV"AT?PM2Kvs,;Js*̸adVPVeo[8rO	A0F+
SkuyArEZn!!]pв|nEr?Z{p]c@@5Z/{;-
{^Ė^踵9.w9lHy1$&La:*^e\1h!=檎µ3pIeϞẪeܯPb	WaJZP+$]Քdqc?$}?(&$lı++>Z9X˶UWz:{	3^[=/2_˺?HIMI#y)<X=)L9÷S,gjd etY=Fq3CQ0M(E"M"׊kx#w;1?eItD'}10{3J=U)y@	OS`K'9Ai>3}"5I1
\xaFo1F;]w,
D5I/1x'0vFOp)۲?'Đ?bL4D厰x.2k:QH`z#\-y
.IRF-\6:KЦ!;VoqJ
%˚GKO S6aJ5OE.*K1u?PK
     A fe    .   org/mozilla/javascript/Node$PropListItem.classJ@ƿIiӪjE<xBQA}ݒ&%J<	| JVjBvvf߷7 Gz`Ck.6\ljB*-ꦖ=NQ$PL	VIAAڿow/	$T"pZ;]|e1C􉊔>%dj{m9cs\KEbFtBǁ"Q&^.;=lsgx@CHAseț19ۄP˄͉'Qo
9'81ã/o|dg۞qoP`231|;\	FUl_˱̳֙hd'PK
     A 
x9  >  !   org/mozilla/javascript/Node.classZ	x[ŵ>slɲl6q&$$!	aIbEIrj)Ul%ؒ+!-JK[hPbZҒPZhKזNXkEϽg9mΌ/>JD+]vjDIF~M>nB;lmEI.lNrs[͹ܽI<8B~.NQ;?9%K!v11=	nN1&RܤR.b=1r.n.rW:\=Wss
7=\{qs=7wčv.>(H$bh:K%cL,$S 7cx:QAe분z"͂D }=D:MdFGc:$9=]A9{4AnMf.tf&+fAk`?2A1otufphK_t
{"CV@WpRSPexS`` ?6?OF],33,HφpOrvu`avV`p_blv*	u:*U"]Pd?8ϟc^/!@W`}9EP}?244G6Y'`8aT#ɟ O~
/1E

Sav`x@n]u?Х"ۤ0\$'O
fE}]`02slCEAŽMj+Ql7KxE
o"Is֮s
`/]a]k=7C^f̠˻"@@7:hLU=)LM^v\McUζwl*Ã!ܘZ0\B
b![0m`ᑈ@%;46d<GX",1ĆXtXg:֌ūxLуAzCcHtzɡh*δevő	LHӪe
튏 hcgdd`;wy[70}4EmCO|A-3c~+$m+KKcjn]<'Xi<~a0ySYegRNAytH4\5t=I;0Q2gKDGq]`}g,c޶{==3q`torImq!h,OnL1M8/:&rAVJH¶)aMfJOdI߹(=U+NRG# cܩ)EQs+=$_9dgwlG2yDiD_Qh,YV8}DzdEtxXʈ$ץl@I03ECj#LlFMvu9M[BZ6qvd8KSJFCYJ	%G}/L: lM3l9!ߙfyzEvR`$M-8"CA[>L^<>;b,+}(<0'Hz-.u7xCֿ#	5H3H1؎Qñ0ƿs,oݜUGͤ<]kL~*(M%(I[ߛ?k|ذwl5uڬ5G]FolgL=VVx+ޮL	vg9(H8<d?h>IQ9isƂiӣ1_#İ=6@4r.F!8[ѝ%;i]hbpC-[-|I<3OَH
R$,Kv$9taXbQ|wdip|8߱قC9rȘvJ#I{ڪl=̢aOdi6K+3't[7%S, 0A˫f1m^xIAXZlqdaK[UE'NVvKwֲ׶'lKFe:i
֥K«Virے3O
9Ap&qű>Fwѽ>I.Oq]3NpYnj;"%>$.zrl%nu.zoҷ\iVȰ2s.>ցD&>eI\4͉d9,K(1~ʖ6ͻiK7͓(~?oQ8GU7SiT֛:\t+ӭ/#.QQP]1EoЫ.q(bsڂcl,ĆeQ[kO4ќLmkƹ}$6|ɮXYzג@(. ]IEBh./D;A6E	qKK,|nqƍ%=X
>K죗U
h4JO5vIaY|GiU2mRi=UfҤD8ks737.7g)/ߵUb9lqFUn>A8Sp
^5I}׾пQ
m@4}3_@X0舅z>z,/~B1;,Nл,tEb#ztB'AYwNY4茅B_zR.ЗYA_a}5ݠc^}YA?By)7p}h[:ɟyh-y|<sx#_8xϻSy4&EBDԹ}0 ٸ)4퀔|!OEh'Tb%|oK|,eBI|
>wA*>Hv8H9dG;hR
J8=>M!6<
H|h퓱,1jM"%c2LLm&6oM(tyl&<~u&e(@9m:Ib~B0HHH%R~c6
#d)o9pTv% ZLYg3Cx3LyP	 Y.O0x&*.˩y)gew)W7d吒XM~Y^Cek9ŖMYb˕K5{XÌRl31
Ji1MnS4[Ax=Llrm;Le}`ȁ$VKE:JyT)ƧJS݋=SEaY2rCqzOe5}Pܬ#>UQ9tUra í@1-n6K%M~c0+ۓtT	됉m"',H)Unݟ¤-ZfKt,kbv<<蔠(9Y
[V|?N@aHWq:E?x
8)Y+w!8aҝҟo+k:8KXtsD'=ŭ[YV%m?	s',g䂵ҵ<V/ɂV߂'ȟL8ߩ7y}T$>xy~:Vpȿ F~fCPr3
YQ`ls3|
z|==A/`R~ɛ??Jh
H 
SL0TU/u]&yx/>`5_~

*bOEtzglQןB/~! x (duwj,88L10q\R\VS|

4*n\S\^2m/_~m٭,ʢa (=1h8UAFsNEE&Vqx
-j`{e2 p t}T9Mx|hnm?D9L%dNT'\4OBQNE%-UjboNKcm;\9hb~X}^eX@OI`
ZՓW4LY|>/]O5oQ7ل*=:ȾJ%\bߧ<͛CPK<(pMp˕Ci7fgSq*~
a,#"z784-ڀzT,Di9?i{o3q^d1!PA^Cv[2$T&VP8投*N85iUYAN(xC2)KO<"hv-"XeٝJ_d\HGe71naP(ǼS{&9X
i_>_A"͆6@}T݀PZ^-oH<~	("qs6Jm8k8AkmNW

*y.sڶôχ*p'փjA#̓5_E|[-2-RȊii"F^ dr<?<jaUBR=?;ho7^|rOP۷D<K %K{G(-J3WKɋ(G.ts
^fQloR):.
|W4bX=%4+hh_ij4_.E9VbJU8hN#	bዿZbD/uyO `æ8]m0 /QxٲjB,}Bds%2z-XHZh6HV	UrZKZlO.'p8xygbMb
ΦMqJr	R|B$:B:ʅlu~EyT"ReOrk:9<u|.KKU)*PTN*pχSOĄS"ЃDݓ=yyn:0-{,BCQ-N1c0߂iqYxX9c2e%V-2ʩ=ߪUU|B!ІSCIKȭuXYr1??Ƹ"r_06 1 3B;Ԡn4a7zhfUp"7gmmtaZЅZ|25m	&z~s!cʮOS+pWh\2KMi-Yl9˃<fg)J'%Y댜d6AbCԦ[tbϙ巘74(x\`6r6KK
#n@hMEHƏbJZF%AhU;5vU~7ٮl	ՅP0ŝtZhvwkk;N>_'bRIhee.9`"V6}uC.sx  hf5ɜvRf	bK{͛965T< w}5wjMcb?eTi^M([eM%MF!\\YU9X\j_d3Vh5xlUkԂ~c'BPGMx_/)P[Ag- &򚰶}ꆬ1	ȩSNkLbgS^nV*"ZϱID@=@ځR`	Z~8+e'b\|gߵ{XW|m|gL"[0.3M&܎	]'ap0s¸Or
+_5_3ECNV'ZRn3ayMishF2BBzޭ8ݤН(}/{e~%_#HV粺[z
UNlBCW.levC)
Dulk?C#sB;;Y^pX3Xf=2пQfZv*;X&af[T<:-w¦^]%zrhvUa0q$]hRlk%SI{\YaYEVF]oл/rD,x]{\4k\qü]ڪN/5F9v]@y
ywl/`zf/[Pzc)UaV5*LUع=8{QNWyW_a7ɫ8nhU})ٚl#Pé)0;؜ 8U,o$whq o=[E
LJ8]$:
?B䦉3Yj#L$V9Г_(m7Mokd5iNqp[@7,
Ɗ;EIiMR#S)=iQ~ϓwBu;sMNM_ Xn\~
X'iFvP6<PK
     A zVb  ^.  ,   org/mozilla/javascript/NodeTransformer.classZ	|TչwN 6	I EDM!,6Q(ԅ0̄I E\*^[Ǫu	b`jk֭Oukm-`0ν$sY|D' Lk=xޏo?W~_{oee"<~W4G?ɹ7-iޖ7Gy/=K  ȃeP00ϣ^iI_!M? s_J&AFF22ȧW4~Ɩ#MPizQ4=ˏ[>*J>	`~~Odn4d!7XFCd4Ta9\Ҍq3JFYL֧	Cf'S%/Fǭ6Fթx}fܙKVLIk+^;=QˣDv-%X$^<z!z̎'bsRKjyduva4ow,3dd.bQ|'a~̸j(*65YW'd"]4Ȥb,ڨ͊G̈́h?kI-MA!=!Q'*OϤՙ9
Xh9z߁#FTH~PzԚ=Sh&6:YcwUg=K	qA?#.:4XsF"ZX&$XGO$bٲՓMV+6݋"6J̬h?Bʙ:)+ҩbn5$V5|2Xm.V$1әd{*iH%IݏkxkЩMVdZsjOA}(%Xs̱zy1ʁ$+gU7BJ
<שּ2lt>4JQ/3?ِ֧bdCZXidGSvmpaP.|1gVN?b:m]O<ǧNe+(X]e\^0{ҙTC5_'r.
r!7;Hb;p,Gb;a`Rx=ssVE@<F|Y1ncIf$x[,'u|n&u觔Lx!ONTŖK, ZSSlW/$pb	7x#>]pZ\KبAJ8 .kQ"[mӱtȦ4Φin p4KPm	mQ1&2O:Nt2TAeUNS	`s6M4)6UTMi:aCM3iMig˦tfgmaβloQd!UٸZDm sߤsl`l|=Got)jaDHUSI )&
Z&r
VRMu))5$TTOlJGlĚM:sp@65ZkEtM%ަK2.+ll6]%-j\MشQ3ȣƉ|J0P\PPǹf
e(UPO3{OM6H00HUV\u`	,PŰg*!yu
7*LœK]ebk$kȼXar;թw\N!:,,OV*S	XX
|dD+R_;ᩊNo::m_oG# 9U_ŉ٬ }zb(C_A<Y<̲%Iukc,_ݽ<\3kEX/'yɸ;
Df^J@Y\H/VugC-$C[awX833ֵv@>(5,h`1=|>B`QRpV5.sCeR7Ztn(=(bi.zvv|xS#yV9=X.3wY;GPr+ڎtژJ	i.2ƍ@ɗa\_
0)}y85:%9P%}wAu%Rw/S\|\>sSf~NPr<Nvb!XoС	&PTF
sqOܛ%-RۖqkɾXέl@+/d]	ޒR,y?@x0@siȨ	E׋$y]}z0QgoC4	1()
-Ͱɳ-W6s[%+,g+Mʶ2H4>na30
%(xFTI{sSH%4Xv
*5D#VS#Ea5XóAC~@[L~Vɣӂð%(`{V5;ʡ	#CT:p;̡gIii-uPl[`,|EO1p"kZwҶ]Yr5ֺGҧX}2yp	qƋg40bmﰶ!ܢrO
ݦwEAĒ,XY,
M-%5[fB&4ESrEwga+ˊ;D@ա@؁r;b BN.FQv#ٶ?E|P.vٕLma9o]"Z@b#Ws.nR! ScoYfH>%GU|~%sȿ/:?ovo泈[x[s[\~?%`y؆5>o_rQ]FHm/czq?e<RbwWeƍΈ#.c3.Ycć.+AS͘|L}MDPo#|`3QN~8fb w؝OЂ-swi3Βf{#اmq="="6kǚ=Y,񸂈7z;.x:ǋ"-WڲmW9{٭⛽.{Aulڦ݂	2v9A&CS::yIi$8&lM
`bjIPCDwͰI*H\'{81R2Ky!*pi*
kE]8Ipv%tyVUdz1ko8Л1:_+9IHތhswUŎʘEQ͘&S{88W	I&q8.Э*	mr4yeK&Hqvr"IF8&Si$۶1OyA#{*s*_rUlAO3R
~N|g͘t#ʞ3r8<ļz(a9F
i_h 7æq3[9s,S`Ўw:n
yfxXF%˰?F*1J,4$Љx%X(⅓dEl&Eya27m;㨲P%=
l/kxU.UCf1Ě~.39z>[sڹ<}>˸.ga<KFu/׹,x},PKϠ^F~4A>E 0Jz jpkCp6ؤµB\]%Q$n֡ICwj7bvҶ!=_׸W{i'G_hֆ!l`>-PlGb>'Q}*	<</NO\
xQ߄_%}3~߁~^xCw-Wx[o]O/#/=c>0C'4͘ό*˘||aVc1QC$Ө'XGc#yg4QzQxǨ/QxoRc
0
fzhYDhmK%TjFef%gΡtyM4ϧjl)f*4ͼM4l'h2_h.e~Lt!cS姘UHˬJqk4ʨ:IToUPʪ52֙`-Fk1Z"k#]l]Gt[eV]nv9dG߳ާDj~9~*\cy63+y`o퇫xdWՌ0.|#xTpe_*\&Q?
tG#$>ncK#=^
-u"B\N>c?n5}f(~|spH~us/wmCuob~whi2l*v.VhƁ7&?YnV'ɌxlhVgRUMZꋟs܌ߚɽbd+<ѝOS|VWGFH0[{p@cn+tqb?w<Drw74/Oszl/Qzþob OG8P4\;>Qҍgὰ<_ߑ\(iI0n?^}|.ڏv&8({m~ug7À((Zz@kGotPL4سЫ+iyu8O^_biΛtw')!5ӘQ{ :<=޴!ÌӐ$,99=hu&AtwgB޲1|+(>yj: t "O#6`M`(Y;1AƸ.0v}e%A2<rE~둂]8yZYOCK"# "#_h+܎y9 R:Sɀzj
ٶB¶`s/H@6"^Ar#^ץ"oyF;byݥ]#l 㼈v,.
(k}C=dcy-(~jÕ' ;8lrvZF|R?5
氐M`%a}E'kp
o4wK3}PE&15q݌0݌#-Oͨ۰nbꝌLb
qݸ~=V	$=7hަ>尗Z(@9*G/=F#q@OP=Ii'ͣ"43veG-j/)z@ү
zK1˚Fh}zMBkg'BzS[AoimѾMn=-K{/Z;H{>>OOo:u?}?O}0}пi>1
?>d""8c#*^(
g\]6A6T
M ada-	EyU"&+A10gxLh$<*޷Y-㶇Q~$?ϸ<Cj	1q&	EorWi#)v2")g_TowWrQT,Ubx1^~l`% e]~`|in#Zуk}؎橽aR(+9$hHR	0lcwwR_
~/L"\V}J8mmu84&rrjs<W~|rFijk&Jksrn.Snn6kT7B>.᭮Y¾$,c͢_6WvRsV:9HXN"!Z!jou|e_t2ys
 PK
     A }7  .  %   org/mozilla/javascript/ObjArray.classX	pTו=wZ+Xjͱ!ۀd-AƲ%}Vvp8^0^g6b1KBl&ĩ,dTLRS3TRIUPɹj5i֛ V{~e4xqQiq韐|F6>)g4|Q}Gyʏ/i/gxΏyB}/Hs\0W|xɏ2|هф	?Nk|ݏWpRWxM:kdd&ҩ[M
ҩl.Ǔyýu+8`pOT5Ic/[j]=cc[6umEv9i#cdBmϮx{2m<ʭҬf4H~8+6OG"u*8[wCzT$RƦؠL-=DT֤+3UXؓΌ$x0e9r}&O>D6fFN[Ei*xٮ~'[Ĺf\L	U)c96q㨑SL
aFvfeל襛{8I,:649[#Mb0H9d8Ӄ.d<
cetu;/Ér:bz2Xz/v%xbreFwܙ=mJ#g
PB<'!fX'V|cO>1 *өhvNGM46G9/%ƌCFf}:ǲӁeQNiimIqwWS12E$r
ex>GF|L̑f>hYf9?\`1E4UAb,x4c|fNHT"Cr*kq] +*`nX4eh2iƓgFc-h w@ w iC>[ո&Ҭf4ҬCg p:B q&&f)H`,|"9ld)5-kkoKF o"5u sG4Ez^Ph<J	Ƭ@ָx\xs9GsƱpbgukwxK<r Q^&c
I0stts)I60d7sݢ]/^&lf,ŦECqpdc3dШ!U\<m͗F5oe_.mNW;9İif瓹[Ae׵un>V
mXx;·L
#H_kVϨbY9^I9&GOaۀžݸïqhs^ݲ扸N1^t#\DcS[+y^\NY$Fc
MZ$Gut{8KiQZ\]{_B9}^r޳й.zpYTE;?N6:8|E|e9l[0iRhQ*t7BSM Ea%6kx#9U*	CRPɏNѮq_@yP:^.?iKlzdbpuQ#-1Ry/ëȮ6qRȯWp44=_FaYo~E`̟YNѫ)X$
i*ZoxŔvE@7F7S^hݶEFfG-io.J>kwhbMWN $}fK_=%|[lf04s
FcFN+IyS8$܆sV+\QoW~>.
` =O/u@9u,-5zW단wJO:~J$$Lƨ.ѸqWg(Zn˽z^C~*fJMbw\ #Mw<ύ⎈ tw\jۨXjI:1qWq}/ѾnW EێZ!;{ݡW
G,o2#f_u0c%V ԉwwi_s/~D~,nTk;lV'Q!8^`{$qvܯ.ZE,DKYcC1{#J;*_KBK|}ĩ~!
k
TLg)}yB9^0<Jm3?<f'Ѩg|8B<Eg>*ĳ1"@q|/j1һGQGejR4~A;f|˔3 It4i{O`]zADw\d-bqazrlF	vȝǎ6Zet_N^!NxCRoSjKS?jS4+c:VQ`I(ENo|q^:a׎FC𥢌ʤ|9>r+,\oް9s |\i.UȒZ"$sOsR<: h5dk-]sKHX[4~ε#>k-&[_U/ޚobѮot{>O{~
]f1oc'DO4@WI8`(?&P)&3_Г/mCj'-~?]O3#:MGф=z5GtsѺ|ܸ1ԘC$׿"`U-bePW ;敤:FJ<_bO	z*L^JTp1XF&+9I"0&eÐך$ZVds_|D\;AȆHH4ޥy+2{=c-zr Q.${{UV~T<*OZ<f9U|Ek?jOB]Yn|r
xynހW i<ae+)(ezH)#ivЉIEX-2aZ0Ūj-gUKlr}]Xg{誛,DLzZDzsz"ӘzU+SP*+v3+M9iQ֢5)wҬ)"--"6f
#@941BB A_-U!ߎO
c!8pˠ
2KֱDkzlTѫѯnvuvMve$_ARAnXSwD+}ju֥e==틯Wga<Hn;ySw}/&
wVfqڐ߁}]N㱞_5Sa6E(\[РnՏ6J+6\X;^mGf5H
#lS#HȨLTU1F\|ΚLc͓#/ܴ\u|/O@;; \rhh
FOCuiOc~9,^qEa&j>2H&sX8Pe5rLj8%=puX)M,Tc}ֻNY4C~e w/qxY>d.yޮrV/&'MR2!-f}e.wb}M~!R>;oŖ\zW_+OQăJa:DX>+aB!TTH2+q?lQ&RL$;)}<\
j\P PK
     A Oq  w  1   org/mozilla/javascript/ObjToIntMap$Iterator.classUMsT=e˖:Ʊؔ&Mۘ(6a,@Q4A-K~
Â
dea9pޓ옒ays%O?>\b&bxO7tLcFꦎYYV:-omWnaUYV`ܝ_%kgvW
-im+P;_
6L[iX޶puPxZ3	gOt|5Qpt=gtZOM߶kVP
?s,SgfV(usZ-t_V<"z]00h
B9YԷ|ϑu}C~LSy",,r9tN(nO}/5dMXFa3A@-Jvh-YpEl'Sp@1``
,஁"
>0PǇ14eQWx9j
9a'iC9E=(dl6\M}5Guݦ3vvBnٶj1yI@}y4?Yc3hw1wozuy0)
+W<OpK?B)x&mH$P%8pd W"*h٤9/𒥉RsHKoqD1It\)E 0y"WDHQ(ġoFX(='rFemR2"8BBb9=ɧ<HJ|1)H"w[~ .@{bEҲJ{)=GJTlY#п-MdϺ&xU|Yk:N0B9giG)ZJޓ1yY(!;n|),2(Ŝ.{z#NQ1٥Ҩ\*qX^TpiWH9U!b
r+˫8!vaW RxGLe=PK
     A >'    (   org/mozilla/javascript/ObjToIntMap.classXktSיGId#["hPl	
!X<Mbp	Ȓd(%	q)m4mH W&N y$mX]3]]NgLךY3]{C+Y$8:so;>`~`A/y؇j<ãxL;,y8.G!#l2qԇJ&3o=+='eĨl^ͷ|x	/fL6-oeLVߖN[Ux.grV6Omd&mX+0iU&MԐxK/
k0Wnh);T<ܹ}$-4QВ>mKVeyz$CIyVb'&ܳ4NcȵmUܞL[Cۭ%e\[R'|N{&<ٗLf.M%
tIMݒ&@<*>O${-I]xb')OTyJZBr}zq	D.%INu%>j.3MX'2LX{*uO2OAmYܲM\s9;0ҳJY{dZa
xDʊS
ikb#~P).{TǸO^")={| reEǳ8Y̰,%w[RFΡ5)6vOo63cx\l)8Rș[Կ+k:3_o2;+$hޢTM/{4ا'/'>L4ь
e-Ǩ_yXmd޲	ʑD2p9:Y+>BH>nwѺ'a
Jbr&g)1G[b$YIDr`Uz'V.7g"M	D)ZP6aIJr$	ǵhX*~hFďxÏS8t1M~쓽F:D?ĥ3~x؆~V?~XckJl{wqKM{A|ُIRQr-m
GL~
S6
[ϋC}RZπ&mlL'w
D
_mVo>f]pOR"5)Ɩ6U6<2Sаv
SȺ+'	Eȸ<<*d	^QeieJ\͓uyg<4>ST{PjuXKa:>Խ`4g>,f/:YX=X8ʙ6Vo7T{B;?6O.E́	c
zHkЧ\6fע bI2b{n,T42>)D++w1
OFJx5lҺWr~5Z{͎=]+QgIKm*)m<5x
g}XW,!e^Z.p{
i:wb*:Sbs/4h WMA{_P{.{T`*.TKHÁtɍͼR;@
5I!1z.{BAi,A@j	:9n.)TS:e[pJk8FiL35%5%fjpÌ7UJ&DB^ewg=
/ᅯN`EݼL}A|^/
9E5e(&ZMlqH^-\]
Z)'' }P tra|y0)cy$aͥɫY٥GP%{#P/Fmpl&MDgپCVm2U`*>މ-ed}Y'::/^n]6#}V7J2ƜF
W\2%Ϊ	BmcͶ;HJAsƔqxvkFgrcÿq<_r$qsG|VbhA_71ԻF\b]xDxLPol O%#wjCW!SE'̨-PRչ>GPs(?gNɋNfX)TԅNiSL5E5OѲׯ$%{
ɭ$K(*SuGg9sx4L독fѳ?]/GcO/N*`	L_'j&jwy"ab
?s~L{qF:_oRϛ?*7\`h>DpcаO[8Ȳy\xTl7$_WUl\C=y	y<%xTT]ш(גh/;_(k"-#VI!BZvك*XEO^#'*C9"f@z ;`|?^c^'NYu'i,qve#
sLԢJLt,Q/z,!,Wab669&>9Qlo."O+2^.6Xnt;e^ټOgA
4-q,bpL$	1qiC=K)MS1Y~i1$-Fq*wN\/3:
;$iuG~-%f<yAS9#)iF*2sD/s׹:<ͨP#Ub!"b,7Ko	֊!e,J|:$Vh1/2Nu*h,?NUfkNsURM*T&^*`rV2yE9D*|mVc4nͳϪLcb

#5K,b*f9Iz1mb
h4ᰓBf`!
*Ͱk|p0c<󺣾p(ۢObA@;ZxGo4=i?J74l8<ŇxBt2?GX+mjg#&
v @،b[-+8 x@WN<$HcL-=x_ŏ~J?^I܇ĈEx$J.&zʬ]/ҦjU)U5d̋5=fbS3LQ\L}_P_3^)r,|!zQ!yqyiq?R'*c@ewhAf55#BcP;F4OSA%q*AL1*cxsţ/cTDx\1kO,.t>j兦XEcxy)݀+B4K=|qʽ<d!Yrs!9n6uk].wq4rIXLŨ,hѩnm?ߺ}<?ɭ?I(cq8NQK,ϱ=Oa~H*<
*kN
þA!jkg$8Q<3CD}C~ٹم)Eiy#e;TȘn47:\'/^ ^ᔯU~G| PK
     A h       %   org/mozilla/javascript/Parser$1.class}A
0Eh5D
7	b5%&TͅPbJg|_o Ka@ȎhAA4.h[T}qg0qWpAz}yۜ-íʯAB@[R&( tN7.╠3A?zEHPK
     A .ZO    1   org/mozilla/javascript/Parser$ConditionData.classQJPMӦMzP+_"HEHI*_ ~%IA	ٙ3L8o/ 6h#I9LM2maELdrуވ;{J&w7NKN0[0QLr2!S] 
JMvWgdy"Jsh&2&5BD0U#qo}]0ϿR٨:a`FR.vִԁ>-,VP
7{Ժ0#aOs|,b1E_NB?wcf<!
K\*yy2Ϝ8|b4䴁hs+S66'08,F#ZV PK
     A bp    3   org/mozilla/javascript/Parser$ParserException.classIKA_M&EcܗtHKTqͽmY$g<<	U;L"b]ݯW߻/ A0kaP𥧄S\}Y'!_qԅ[KH*=BbeN0+$הa!pX)&ܜ}nxA)O%ZKߗ5׻[raߊ;7=ظ_P",pmFg4%dkC%CY$D}m:P-qa@$BO&3A)yQfVr\krS=F(c}Wo1{q"d"G#PK
     A Bt    8   org/mozilla/javascript/Parser$PerFunctionVariables.classVkoE=qL3NIS^}%v'miP΃M^oݍhw]$@ ZgHw;&M|93s=gO ӨD11LxyF-0hט^f
x<KLD=Y^iõ7kk;n%|hUzzC{j7{~:8
)-SPh:CUeOЧrvqsbq`^/ՂIk25ߪ-J-X[k.^mݝ
hU+Zve8U,|77 RMӉ,ͶATޣ.oQjm3߱	
't|Uw=壳=9
:mW9[
rl5
EB~,\mL^ʑc5ݵ.YU˴wEζMw{:G/	iHۈkzýc[Ss
3kޠ8H )<spkpZ`o
^a:]}q\@GI@YN
!s'@҆iPwo.ׁ0ZwL7F2nz(}mg4w'b9{}	H6	YQd,uԚkNs+RlObcr~zMO[^jU3] C7>M|,k0nM<DF2U]6BuSg19TG7C"uDיe&;\G3XThG{fGSi8 ?BT~~	8!?ð)&嗸 a^~+k,opS~[;>, is*p	L
SMiUy& v (Uܧ_@!zߣW@~Đ	g\ +UI]]xY9F{bPK
     A {<̥  DU #   org/mozilla/javascript/Parser.class`U8y3o!$I '! UC @CǂK	+nM(g<{],zӳz?7!ل7o^O%# 0p
FP0Q>|9b%BPa<9S0IL)L,`N̠XGLSYiia9IQif9[HQu	M1<gg.)S˄Yaf֚
a.(J:cZˬ3CT4L)me1@*vs^N$
Qp2))<^NrNyΤg;-yǾ3ϧXv\@"JJ\"Ky>x\%
F*p0<k(zanAȼHb7S>B&aJoor'wInjzB%@' %n%f3&4q;|N4a
Q)x'i8O	ii>#g}py+2_拖Wzy>2oR4F.a߅̷(o _e+>#a ?6?OR1f&MH[iSߥߛ?HGzFӿ|Ѽ*7=$O,_(ϯFF^}*@
FO
@P
>@XGA})DvQ,gSt"C.'dER)x')-b7э^S>-r8NKC^q0}GxSl @3*)Y)bRsRaT
b#Eo9Ds(J;ǲaHgXK8
S0)H$
&S0E,8.9Q&>V$ˉr
fQ0lv8bGQPS7WyBC	Kq=_"JEt`	GSp}])ı>6ռA/+)FlQ/RޖbW.)_j!j|la!`%.+T$H 
[J*n.n.u&^mX͕RS`1).!""*EmbxIFBc먲q8z
NT
NO.>v68[Ib
wR;';	Ŕb1Fs8O?Kq!_c)FFq!Qp1PН"/vQ]Qp9WPp%}XIn)b)6b@3qHq-:)bVB٭F
nyE&{?,n6R!ĝ>$I͓ȥؓ4Oy3wIq)>{UOo%:n`ۥA0VI4pKG(xw1<ɼj
4{AST2<CzbJ8VRy)^E8/CI*&^TxU|b>0x]7(mߥx^vj(xۧHIH!}8H1?32>~!ŗ4O~E)QD)e-IR-;!i(~G
E)) #H( Y#HֈA,	RY+5ziB_r
A85RH?˧`%!G͓iB"ܖ cN*TO$dY>ĔRfF));\2GʞB0",(ȧ8}|jʳkV˃(vs}}zjz=eXOP]T'*[ڟBi碾KEΕP\4),i!P	19LJarl9BȑBiHCً{%ʴ^
VR,|*<FC<LDjc)Gx
&`@qO2MowSֻ9`$'I)4iBNi;N9R(v3Djr)/POt;9?Ns( Q)IT
)R<ʠ;_>ujuEz	S<ƧQKOPH`p
R'
N;S	jjjjjjj?ާ}O=U=U=U=U~)IY)e(FJ4F``G)8pפ}"
N/c kg/JbhaSl%"R,|ʼylz!&gVSlk}z/I<
dޗ{v	ާJNS(v*NORN3<ӧCi.§<s<>'yCoy%>}tRWj  y%u*4IAʍB^˩sċ5TٵR#6!"rTy#7-o&U{nJChC|#6
n"y'}}p.*q7]xRk7{hP4A/mؽG\GӇ(J7Si7Mh)Cˇ}1B@dJ?
Dt=2lCY-%wU)qϠH4)]STIӧ,-/U6+sD NX:lIsgb4m^i9uʌ)3O\	i`-6Z`py8R3.|b?*2o:%+bKH$ԇ#
m-ṀU)@eCKi?0*в+nTW3)Zf܆H0TҜS#hGOaнҏUM^$}K=zZ0.Ta,ׯn˪lDi@pwS׌PM3PNnҏHQÌ`3Ɔ``:7X74FpjG<.ZNHѩJC%g%6 XTA\YSyUs
ʜ`h*ViāaՓQӫhfaj0\c8WU<'2
{10UNxV뱲S<XFBU48/V04-)37@0XqANԆ2XJϠBUsW*xEG49eGf.#XUVDc`(
W
MȊ9G.-=b1ZK4:tތ9Si[G6BX[Ej6!a7L`XAӇX,GKz$E#uyR/*:c*RQOu^k9F]*ZARV.keK*e
RPtt2PևAPMr{{+9E۾0zVJPnDX%5mpJa0)krU3W	!e@'Ql߭ɴC;6]ÈR⋥4kB"IQFAB툌Xf#u8RInZX47F53DU@)EjS=IYFԿުVI:eF2+/.B51y#;u_AeK!³(!,	xHz2'auцY	uto
F֜־9-uJ	
Z)X43\FӃh*A]?%&8R̈:MTplBD=׻XAtIYQת`SynUqEOBRJ#M=6G4zbW)dDсC5N`fxIJFڪ	=^Ω Z6CbRtשS8A^
E߼ۀSkFL
D ^T,F(&BaCpz/3]:w!tZXPRWB A+	((E
DkëKh#
.zo##p
Ylr,6	Rw~!@1N\Z&2evwǸ6J	TC+TD
kSVM0$%ZphJm8NBȯO
W+[0G4E鑠^1)ךJ>b.JM8>!Tk_G
B*\IjZQ$ʚbV.
UZČ~*D[q4Ds+d
DI5\Ok0P:_[^^}J
O	O/4$iѠ! k*d@nNt"@CrŬX2AYlA5jIzo8omŉ5V:t$1*VhZgّ6[-(?<pl *+3%c3cqю_wʘ46Ȓ$Q\mZ-&@BXQ+-2#P[OI!\"_@]m
1YxSV(E6PtBfz^Qi~@4duAq쯞v
I܆nG}	K:ą3cvƧ`fRS d=+k`mQXN¡eJj_n*4?u3Sn};KƛnlTcb0(KF;>)KSԽsf69\[&UJ8([NmGt>9!R?6BB؜jurzj8-*)'*#Dc:lb'"w\ۑqNd֐@7/!3Q*RbKr90iGTT)j`>Yš?EUPoTbyodCH.ˁVXdS#*UQevs
Yh-@$
'qOq(kH;ӕTx@3ʿLZ
qƚB\X	Wt| +RSUR#5'Li(|;hѪORȢBkϱ֢<n?MHq(YQ;?17Tczx	(6Ам
T阃Wf. 3"_7y?B6YVjGs)=B-h=2";"JNjO.djM]m|~ȏ	kDRgOu1
Vl],ީH1TE&c0s"nߴe85QX+3/1ej `:Ak.V	6xr*1<K$3xI9ytT8UʘK)˝%$HCTںe6=8{v,䊈N,pukIF9MuS] 
1 .#B(«EAԭjMiqI9EJDuT9%#N\Y珬p2T^폖~5"0<Z&8EkYapˤX.3MU~(w@Dn-XUn)Q~hܜ1΂zI7V:rtk)/R<_;VH L#Q)8IB#؀20hD&uw/NA.<&B*%,;!P7(`Ya窍&E
2+3hEb;Ƭ*	VN
7P~E-մNW~DVA2	[sA/gZtÆ)fHIZ9GFNĉ"t ܭ:eGkځn_@vvPجǔFlߎQI@F!>6X
;18=GLU"PM4]'쩠r"6}(ףxI^##:#'ix@
f㚥VcƲ@Mk!*QQXUI
J08)b"Zzd6[L=	hA)Kk-
GV7+jHSy4	,?y:yP+Fup5dٯw;e:>Q8n[1}/
y,5EDOayf]F0ɟR&7;
TRԋ[3SOD[CmxԻÉ*D&uK'َ[ax8aO{bHm	  
)w}0-fcG]^dZtL!`bh͵ScBkD'[F]ayj咹y2U仏P/3SvgY:W.TD+~w#5-9:ؘ{l;e[KfDS\H ZdJ㖎!	REO)9Z-՝F4"Jo`4Y-Q|Fl"H\U־cEt},T:Ȗ$#IW8{]'yj,rmg#1v:vmoSsU׆A3I"g4:B^~bj$4+
JT=.'.leڍ[ξX(#%, ;~)]IK~fџA|RSU6HfZ@Brhp;[/_6W%A~u(}aŻJLNsKM <d9]0̩WUg]j}cO #FԥX,cӎ+wͷ	_\e`pH;SD(8b{bpkAS+iܼl*i+^B^iGh;
X$2m$I,-d+a;8EE:9yn	ԅWIy&yr#z
JnٍoyHS>1M7|ذTj{~fp'RKd8۫EyHԱCc9^vjtʡ+9lX(rp}-K,1TvJ%ݱF$H#ꨂWY9;z]~~߯_gRp~m4򰔭??As|V>G{(tA[ߨ lYo/@C8׳űT[P֯7y|-_i/mGcseg["_kBd7
wzy֯ߤ"oRO'?#`GV-ߖWT+*.Oc0.y<Pg`__4®ĦřSz[~H5}$??S[~/s
B~)ӶJi_So0AS{
[CG0xۖ$dEk*/pX,x>Mw{[]6nۼf[ϱm-8PW<ۖ~~ڕ)
kpnrO$L}[Qdv}6cӔ|JDX`[(Ks69@5~iGMD1t3/E-嶬۶!¥OTIm03m '-Op Ф7U@}b`B/lKXҶ,H
stXZV%eV'+ݶ:[B>a[]pL+˶Zٶ
fu	zP,(jdc^.j(\,;CQ3(H`tdE?!<ʷzVomnL_tNrϫm_|`{Nl`}l/r!E3Q:l[ȳ8unm
0a'!R]qD@BU A50z}|Ҷ
B*2s耝3t6vb"[_U*vpXȧlk͠+}jT8s?ߍ7mkuHNI ݆[YImrӰoow7rAA])i HDbc6%qr@[(MH=:a
l>϶x>JhFYp,bW}WŮѤC-?}Ŷ&P&;b˶&QG&[	b|-?Ѷ (y-?W)ci椤մT1'-Vkmk*NUJF$ػϯmMGu|UQk[)zcm(N+~m$q;ihSʋyP&_[;[l~q{Vۛӄ[_Ȟ#דWU^vҹ@u5NR$N"B#Hl%6_o6a]q߳Ϳ!mw1=6:6MW*>ʦ2մeH3m~2v`44ǭrAbgWހT?Om|m"M
(1{nYI䜞
ޓAN+uf%I7$x.b:VUnD`bc?Vw*,6ן`/E1ͳxW;:(EI1<ZpJpw:
p_]D5-RS-k)lԦw]`!܋]oj+Bрr"B,!)v41;|*=a[QO&#t:!#	7"Ex4o/=,+/ameUI)AǪ"PmaSf<m(cUc[)TXjq}4["r7a8j/?>d
;޶j	\u'bÍ
$R7]rAe{RZ-6Vi
[Z
XKTK*}"iüm4rm%W^Og=W`AR*vƫ}CHlNn#јzf(ELCԄ]\DK%V@}l$y)ZkHZkz
m4mdL
Zg\Ȓ\ErbgI,-tD[H߫jIf)9SlئAVLӬ?$x:k[g֙Yu6
X̛ԜUΞKɉA[Z:ɓmcb`9TM%q3KKť#EX,b	yQD~[4CAwL	~-%H3c?ӄO_(B`)CaP02LnR[Ӌi+yq\z,͛H[O%Zn2׌$ҟ.&Q3Qw_t*+<ځ\;ۺĺ45/Mn[S+Hkh\)lc]{
1Uu"H+Q^7Qyꙝvju!amm H$&0OJnۺK+#~Dڭ
oqj	Sy;mZu4Q[)IcU۱l[@;Iݱwwm#j`yV`+	Io$wc*FWSR@o"\m9	_SW;{p˷C*VkۺfRnX)#u7E֭;8)dY
7^{l1cmFArdĜ;;H4Y ϛ4ip5ᅶu3s۸0Y &^n\rJfm^BHsbP[i[519J
Mml2nH-[LKS۸8S3:Gmv۸ϸ?L/;6ؠ2od[VMbQ-vՓ7F6k{KԿR(xGH	Jk2^?Glkxj]q?fm<c<kH^j'Ůt'Ra[m)	m!GcLl/=Uҗ*ʳ`K`K4<@km@%aazщIM5e/Y%~r;M
bJ^RumAn?\:WxERromieW]\lS~
r+b[И{
THw{6~4e[Z٦mv"OIi̴__mc	nvMiZ!j#i``}l[ЇOI<|FXf6zחpGÑ"*nTsugrf<>lka}c[xڲT]7!mï48")޽U5xQ]Va'@i}Iu2XTnN6Tp;4J'E]cWZ؇AƱؠVo̱Av~66&
j:ك#.qBҕ&j]|@dZ$\ MuYd&:JQݽ@z\8&uOcOI|ks_BޱŧݡoӶ~qf;uT
u=U]qkfT]y-81;5$\:+LQ&J8v\opvv:aЦ>MV;-.o%с[G
ԆxPB kuͩڃpΠՅ8eU=5m|`sc[RI[ۨe&)Bo>[δ?L\(y~*F0vH_mrhZuBMC-&IXz<,?1 j~RCГFݒN~Ǥez$s-jRR2XmW'"/~K"2A{$·}hD q)U"jK|ڀyKcv[ƓH90|w]UR(vPettLn{<5@tjyMov~cWS;k	]Y$7TR%	͜1M,53D ;Dggy'ETjX;pf=Vґ0]ԱҹNЌק:9cZMX61uSK{4nUEeadX\.۞jqyez(VԹ':*YJ[SrB
Ibح@O;©Ƥ$!\#DbC\Pm4ذsH$[$5oy68oTy{$%Q )j1e9)Y>{GoqPN95j97/:fN]~_,T^TtAԚG?)K ZVp8͇wZgD습AmQfkx:xoĂN KS%{2"X\optP(F1oNfbixP/.#FlJEh!eߩFXsXIgCclc[1`0"es]1 $XM)ZQG<o:`8ǔ|%ݫp%uPG,:fRN4Yv<ETE.JUL&&vģ)C\Pݹw*vbgglE]CiZ_HbYǺM9nZL7I6)u\z6+
$3zwȁ~w(&E(6:R!)݁dOpڛ3NCs/:݀n)46Y~z-|8:uwJG}
*{er"cԉ}1KD+VƛKYE[5]W44/Nd>nb4ص-6qt,ue7'綒v8Rm=7Ҍj;^|GY8x|{4<+s*𯎱vQK0^0jE	n ӟ
WiH,0V1XNݶ0};:T6qbVkE[mߟ467$įQ K>2#撵=/˪~Bn%ݣ[wAt*VB(zr9wL[H^#<kxéQPً链9\?ooLf[5Uyyx?:,NR'ݪ@4	Ty5F (B 9Y/4衟gK
 a8cTbT@G*}zny}^_\w~#1>:-n7->N'T;귩nv݂{ڹ'?nfw<8<}gCp#hc=h`>o%ç]@ly*>p3fi՟џ?hHRz&++(,lkZr+Xpӭb4L[՘mVoN[sAV((
]vAVdn,jNW;zlrt;+9p7{`ܫi`#0	lх__ՔvF0?m4/x >
yx '8nk~/,=ݞ`b+iFnînGjyaHzCW?1

Zǜ^Ϙnnb2zS9N9Sd	u׉n'(w	u+÷GX'`O!A=LVA!w{/ Z.p2z-[^˖bo:PNјhgMwgyMp<f=
=CYe@LuX.7JhΣ8hlbnl<38|  zU!|uorxNՈ'8F:/yxA
i@/;$y` }WA!-Ǒf=|E3Ϫ/.=U'ښ)b(t"g3ts(Nyo5Ҽ#GƿFJ6åؘ3sU>p;t,;].(NW~	Ǆw5IPuCNV_
tН6h^"hExhGl3Gf0(݇ g  C6;
{p38

a>&qHcˌ?qQ#z0]Ȅ#=P2_igR56rlT:CPCpJ{uɞ^'{3TSgg4ulfy;cp.h.\5*)тuB	B&˃~,A&>0oA/oA/pMhCzσ?\\<1''v'w(C`
0ީxzw7ީxzw;L0^4Ob>׿p;U	rN:;]+P9Cv(j΅%XA.+I`y^Ky L
'OɐMMjg4_|qjn_܂۳ X)Ntզ+n9rYS:pu|OqЍ`a68і#<\c4|||=TOBحh$ff?Nx|7?\WPF<Qh@
#w	:omn>{v0n,f0jt8\-D[q<b28U0VX jXj`9[hd+TV0yp=M	5b+,cva:CdKbO0N 
WL=i aX'g	γ F8NW܏s7<	`O}oj)% 7oM8y^Ă|l*sZϩd|R@
6;?#؅P.b.R8]e
`Wbv6B
jm`8]Ν<(h;31tauC[sN@2*-%m0}!A:N'nsI>&շs+T{Kru{B];^=Nh48fjF&qO.yd*%}[=_>!_MV\ؒJkM~II<>ʿɻLcۑv@_*j~\JRL2ݵvyK^YDp2 :zYDA'݅ۃ9w4^mHmP֒{ ^zy XҘB
14n68{g#Df-r#IhvzA7n=$∌n\O7+#&<Yx.Qfj-g |]\r@in]t9-IBE26<s9u'VS	tJ
B?m"&ҽ`n}pԬ!bBǹP?#]EKk"~H*	j@o#:f]P[</ut"//5V­9Wëjx0'/t$-F:>`z+X0Љ/ih)>g{Qr%ȶB1iX %qjͻdJrf(Vw<׻K?vp藜!JKl3hPuIP=<H.q)ҧQ_'XIV4ueCֽ(2mҝ^)e=\LdN</|S]Hvkh-PN  at=?27w3mGɽ0*p#[5wBVv9J$ 0|+÷p*
V<Zb8iƣ10Jgs6V
Gg@iEG0F;ka2>K0]	s}6W}AY.`jղby2ޥ1-GdK\pT$TEhmq` RZHzz&P6?rR̀BJ#`Vc%?h+ >PmEhQwǑƥ`E=x#&!r	Ź <hVߪ@wќ&VdI/"*kRFlq-MpeX	R
jDa`0@wullTdWC5<kK$'68Df`p'X93h*Xd=}Dr͋rd3#Ԧ}l34Qf8=g;Xo3O/9ŀ
0LAJNr0$ٳMb#V
AEq$Vb9ju3ˠDp
ЃbfmLUc5M>-h""fhX+Pgp=YĀ/Ygzzw'QiE2yEW[8T;uL*[`* R
jaZ=i+^bVuI[k'=IU[j'ÓzxN΀3Cv>|Gأ:kf>೯v+.d#xb6]-Ѯ`~miYլIݥ]˶hvv#{Jݬ(%r@E|*y1ҜS`Rf\ܯ?B>?A[m&XiLUY9WWBPoxd䳭|R#II6>cc>:A22`tb0,25Ԧ~/A֯=C0FcqJTD	.脃xGPij.%W\jR楨6=!WlrBŨ$CHWm}y	ydErL@#y&r+Kpbȱ_/#>1ص~ȍ}5uMpbZlVBs8}&hTܭ
ޅmXW\rM''b<.v}UM_o*YTiHbebkA'7,=
2gވi8_sl+@rsg:d g{[K2ab8n[ziw@nd(>TGF D&2`Vkړp4\=ga2Y{vh x?ko[6뮽r!+>bô1l	}ʵQl;Z-ɪXP7jak:b_0~G=ƞ~g/i{؛^4.#|(п2 >X!uQhRħ>ɱ16O!ŧ
f^13%i0ͧ(3(TR]@DO41@ x%+X{aZN 1
0ky5A+]aWs+}
v
г1&T9fuջNGUנJˑ	Oy>4IBN5v9\BXq4W}j.*!~/@mي+%q& 2nM>0#&Ve\>|,U(MҘc4ýW#Ͱ,Xc\t@w7j@ټܽ	w[ák0c}}̣D䈧}Aggav\N}EaG9:e>bd]d>F!CH٥Jz'4^Z!$Uq.ʝqq1^fAe (e0)eYs<G(<E_h%1isB/#d&k?$!Ď+Jztz Wz&׻"epz.R齡A?.zF 7p^wCpV1}(px[`[?qI}<O`}l>M֧z)Ocl^*#
}&,}@6G\v>mG	}	~A?/l84z~-W_PZ;\_H4mQ|AV&r~X碲#X%LR*|+եx׺6/|?/hL#'G&*>PˏAcq-q8^eq4KJPfu:x#3
z!,m^.x@?C_@j@n+x5*D῁MRjry_շ-V 9EA{bYUZaR:+1ZVS3nJLqD"CXGywsU9rA
,;Qf[`z
2;/=Wi^ǛFƒM[HcAP-Ƅ|z1FuhgTcAֲV-um6قNڡ%-QٳRbQN3>X\@Jh#K4XpY^3|_SoagF(e_~eIZANZ&7a~E&Tbb47A4߾~ g~"lZX[P#(cc#<+4w=SiJGE.U0D_
#59P?zXaTIp~&\
7yp~><_O"5U>EZJ75W9
,[7ͬ~뷳2N6G͂=l~/~Lݤ7 {y!(jF/OP٭okFc!Ll1vd++(#vLXZ4SfVƔš+f՝AO#ǚ|UlY%<£(\
d4jcd$v~9*_y x$̳d'$RxLwU\\*}\#npQN8(-Ps8;9ܣ&Tb:ŉt?n9\ǚF4ÿPEB|pG]B}fy9vO3Α9^辑@FąDO#II_\ZH4l/͑ث_
b
<?'<[>ZK8_alQEU<"j'嬘})Pz-0'8 [ zn3W0W
_r	khzƿj'ج[_uD=;[>eqsx|N}l6Ocsy:;wfxLE}'
kQX\ vyslJJY(]9
ެBQ1DI{&C7fw:RQ/s#cY,+šj 4^88ANfݬ'[>^Q.}#vT&_(Jy7H!6Hyct;0
0sq&WPXm}C~v_8Mpb.6#)Q7RXQL\ƴNnd)S*	=!Bσ<⽠*z,~0P
Ja||^xʋ!>s|8GO+%R.
8ʔ"I2>\bP*F(t}C}[+}а=0xfo`i	~x%-F.L+ՊMd]8o\>{HF:F3q><CLo-;!qCXm`}pЇ0mY|,B=g&lX@T3	Eih~20!{39K@
su|an-\4
iT)T
ׁ\Ur,&,=fmeV!j̷2t*|bZb3y Nw/CT- 1!y "r81^5U4'wN<HI1`߸WeЂj9uC'oc	HYb]bٙEۙBL[wFif=6Em*YyIy%:FzD\(=OOWӾvŹr-jQŁ2ՅA\`dy#b*L|Fш$Qtτkp=?_u~92+~b t[Equ4$6}wwN%ڧ۟2|pg#	`ʑ%of_M0#*]Z&jWVgz42r.'Y`{1;_J#5%Udg+s]gv@DJ*=5<>E%uwȂi>z̏Z5Z|>\ߌOO>A߂A/
zSЇ(8Ml">P|0G(e
z]8%
*/DiM\^8gDf[
7kTNV1Օ
)/3&+-z2'=>dU4ҡ|#fe=O/Y/hwŊ4C6+(pw؈A$(-n|3|eÏ.Y~?cX;XQ|uX.O4+Ϣ&"_b_2_aرuV`6[aTn'>9k_|7{߰͞SO9?	m_^&ӊM+5tm!#
q6mڏ㏜]TZlV|F\j
q])_W.?!D'>;qY`tCo#02ХVĄo%Wi$"OFք,6j=QV;e];E(řfIZϏ/Dby֣
3F-?ضk`gáFgdAʍ\8ȃ^0@8#.
TU0q{PƲd$i\xWiU
t8٦hCnc!Ju?5:Iʁ/@]Kq	VMPKtʷ-sDIdϖ.2&81+d6ʡ&&Ǧ$Fd(bc4pc(1p#`1
N3Fơpq`XxOEcfoT#
ͻL]Cъ`?_IbO	MJ1`pnM*V3Hcn/BHtߠ5	I~1g?jW6;TYJ#(|E|5n6C1ECYYA6vgREYlA:66{GF[Nh2)#Aunݨ9M,]CVd#]i9DT;
	cۉL;>XEӾXr"-;ټ66\9-|ԁ9V6"0h62V_uXs=TvH
űG
/~zPbzt1jξ+Қ}l!*IHNڣEX>avop(TRiӘ}2o3rm̂lXd"<8X K,h8X857?F|h`Q
A8~5jaQǄb>5VF
lFk$c-a'c:4v'vq:k2`gƹ<q>{{Ӹc\>2.b/Kn|~):=:((kaT|a.dG9~0r5+W*$Ϋ,8Uj=,v{*F]אYjxU?;vNKz$t*X0XAA,bPDHS4AaFDػdgv){`]h޾:5
(@[w.ۍON:5jCm/WW~p^}O=7DF%>[B!wTR*m>s2L3b
=y
à)-8Mrg/|v2B[D0`p	R	O/COmʕ¡Dm5hw4358P'CoWcG|J}F(E*d9B]z '#{rGa;'2wy]zu*}ĩrr9uiv.Qy<-!;1;CN ~r3ӭ7#lXj@y1?9<Xp-uZ\/`GSZhuxa-:Zi֣RۀZc1A{hcb8.ӞU&\KM.Զb4ֶm{dAFt,!>-*-DQx-+Kz]wv3k~F"u?4^[{	ڿr4Ɉ3KD[t"H*'*iVIDQytR"jL\S9a2*E{7DhoB6{}1yhQ*Ƨdvr	HUl4̪
:~z_qڀ*
HxO|cl XTJTJE\TZtk̪qVNyQ=;tlu`-*H|cR~̠j0%#H'5b[#zmF\HUp]/x*׎/Kqnn_Zײ\H@ZC1m-~ʼ5f\1
J0_㘕hHq'qG2^s2ҋZq+%%Yp;7`@Vˉ&oJb򙹸C|fr|/_NWJjŕKɫ'Ɉk.6܌)!ۏqS~HJ&󙌸!$v$ݍb~G53w|*SMIb\	nLkIl=L&)*e!.a,A'?%4ϑ־@%j&+8XiߓN~$hR,Jmh0IeجaWtOt1ةkBuaHqJDg8Tb^(NӓbD\7bQVo%mz[C >;OzZ*]/W\RwUݔ"^=z/R*#J`}rRQNև*Ôe>RME^\,vj}~~FϣPLBʩ|Q+R"QW舱SFgd@]]R¬(,Py#K+שKrArݔ+Ԍdz*h3a
bL\_BQWW#sZ:r0D9HM8X9U}<v<-#IDg:YspȭeP n0}qmMlO&vkNy$W
]@
6 qoR7
0b2
1SF)#RZ](㲕h&Q|VLHj%MT+F/-_KM.cy	m@*iЏCW?%zJO?c1Z?'H}"S{,''EQdK(D*@f)Ԙג/h0=[ԧџsM$];]QY#S8?ѨVTU\#0wKGOꒅwrXKqs ZVrRgcڅLR@#eH*dn}o.^)KS#	,+j;I+wCAU*<"T2OBG	RB#Y nҿUcUeARԦ؆Z[?*lB!uv@Jb"WCWi^:It}Y.UBy:_H^$ez+<bf$IfqeAX"V
p{$[#qq*$7
U!
O,&?#SS+t*LIJ:򒉌XEx&"]|vQoRPļU-d1;堉̥ӢJ5A7DE
QɻN_IiD!4J3	R頔H+]iTL4~
ST?
igR!Y8F?s0Y8C?ٸPp>@KRG˰YOWyJ_7~
֯%
z~o>_X2KUo}8B_*ŉr1E_!NWURq~XWe{Dج/DQ7/AELtҟRZO+mJZ߮Sۓ
9e2LX%hee
QW\ܤRVQ*Ggʷ/.˘;f_ĚĊocY
ħcH
qΕb
&[cPfiBg%FKO.I/w$
u:yBWT,P\ܮ> .DMcL2/I*QDީ,
VI/WVJu"5I+ǖ_@D-,"Mj+[1A}E`_};t%DKe Iw˭ys
\^nu{万q<POښp:F|Ciu4Unen~(q%OۣՕ5AxkUE5J#n\t}+FNtgGC~/r\%sAtsaD=Qjo
e>l+QO&=eP{T<DTSU]s
mĉka1\.҆.FzO6ՏcwcO'V~~2d< uAfot4(F,!*U@싿]ett.CRvPHg HqI1T$=
c+	mjD2հE$mLEhʨ;3R7h
QnhFK1 =6:b	1(FWctZ7z)WNg"p/Lw5i,zʱHpFi	܃be0i`^hלPmF;P`~p+x}IEܟUESEcck arj+jtO{x]BlOx<\,|V<K)Xr䮰\G+ܟVx @Z!Cq1Gq13pq0h
猱x8oG}H|j_D+B[V|q?KoId\/߃$:ŋ9n43,ᒟMW%oĄ/		J&5UO5TՀ%EV<]UR#4)eփ#-e'=XgBF<28^F<2=bCH1VZ8VD5& cN4&c1V52c5Nc:aqzNYb՟bCΆA4ΗJktd4
՟us*ie~!b>=X7K{/!ōMF.qυ"$.d}~PIp{6KbvfSNp7&3	ElPfK`>9n\ѳI*YGSpۢ]I<{A{3Rؼxn
xEԬw㪜D+*ÐGp
՝܏lr;4_Ja%xxIzxXggu`= BЋW#%MP+8  ȕ`]0Fd+@nGǅmUm5ZvW(I3W*L΁Ar
P87ORD
+ILFO|/#mrwM.jXZe׋	[Q*^#Ӣb~ˑNgn,Έ7HaOd[:Fv/o{ٿ8N*Y8#Fz(1nDc*1X1-8ʸUm8XBvëq76kոU)o^
C7hcԊn㢟8xRnlcllYqx^,2^w/u	ux#
VH"Q }սP-f{HQ%ŪP"-% QB\q,CX
61!w8aN-xah/i,]%A2CؓzgEn$=(O ]a!>1:A8stxclƥT:M(*cUrUj3!*.QAH}? #5>&hps/rĈY_F
ɯ#JZ_D;% g弆X/]c-;VPZoh7E'BrB6J}|?*#>MYJ%*̬7fMI&[b	p3b.4$y'n6va		+=ۨ&rRm'
nP׆th2InFM8 \ThtzAb`u,)LbSsؓ/XHf^:[ ZzhYizvrhj<WM')
~Q_0c]C055x|@SD32F?`Af'yi\3yfh"O38W?,b+Ÿ,R5_~LWD]tU!f4Nz6v&~Ad'sD5t;s)ɉ2еg7W@FΩc֋o7o֊.,'zBFrA_A_O&;WW=.߀Xrb?Z4et'A+/]	:~
ԇΆe \YIZhp}$?p\>}8ellzG+_8LE:+Ǝ{alAM6hcE'=z0CN8,x`]1̞޴+[f jo̡BD9\6̃Hs8-1X:wLnsͱbyx<"bGIpcDND8lCTI,D3b!<v;c;JL
{jtZ{XD+ޤn[jtQ.y38DZVF7e?aC>U
JKh~9
."ơN	>.Eia[Bs!嫭,_&A8g*W"kgٕd\W	  c4-3bO`)\$D7:=H45"L֖dOGH×قܔ+{Y+Vu{Je:M!I4+EGB"q32Jlr2vFMyE&`_޻14\(.3r'2'!<%d5Ж<]	@oL3g`y1sN1řykƕX`^E\6/}Xo^Ky90w5żӖA|Df\(
61\L[tc.4]N[tfw;<sArz⏧bzb{!S6O\qDO-OWK/'~҂&⺈N+yB%}&ƲĥƴS {ѕf$óJ'3Mr4= <;<nVl<eVJ6b{)6_0v	St93yXu*UǊ%{h;INJ@ɗ.DK&5j&rJa9}=$e)˟#-B+gJ\ޘ)(M2JӔ^xkIS67~O\܆Rbaދy
| =͇h%iƙcIhfpYC`#.#9|ZǱ|Oqs3[0hl.ԙۅb tE6AmRDw梟H-)N[(yR[IHRÓZ1dEuDN`i%!GvL.]`Kk.APkPw:ԤU5*D޶ZfSGJaLqr0r(/1ƃ)I߫
ޫĩimGA5qc2JvR*HAۤWi.}{"+,_"Jk8/[!iy+jt	OӯjJ\cтEJ2"S*x6I]S1
AB)m]&uh2
SJHM،ҊRQ4@iQڬ3J۪]Fi1G7ǿF{:3~%ZЙ3s(vvLӒI0qso#aK;fI i|;oq=ʏ	??O476^٬W![bl8)G!SAZKBq=VkG>HtڳT4d;y
;C>F2vN7FJW%ߣuBڨ3-jCXoG y}[G-+ 6FV	]!2NdŞ*2TRQFWݒ&[	6Ih&MQox
]10^1b/xL98/&RhS#h{uhF9aT3s"9bCRɝ(h@ґ⒰=۸(oUMy"6ĪMqEwbt?Nv+]5eLr"F6C]&]8s6-9F|3ڄְ_L;蜩9	hj;wB~<Reh/GxwE:x_O>a87>ĕ >
⣱*>C#|:KE%ZQ$(PIF4c7L4U)R=
,ZڇizJ]3DMz:1g5C9Hop4"g_"r4'UkUZT8IYeżB_j?LY%t{FbQLˉғ Ce?VH$GjCq?	?	}ПaԎqR|
ΊB3Wħ9>Kx ~gDIIz"5bYVHAKܤKlܠu[ҺJ/͑>qFoS1Rr& ?Mug]	V]pj
YCr;&06^,5X`OgZӃ<gz)qeJ%MC<&\1~~D@ɵ:6si=ٹԹչӸsݹԹsS.?wWԹQQAZ4\;7HvÜ+WQ]CucYǎ9}>;9:iwrvFMɛ;YNOINҨ\L\B\J::>lԍ!H0A&0j7lm q@q?o%Q;K	8nﮄwH=UI<$jr-wаW1ؽCDl:̊? PTh,f&bn4Es`8_`NH<-a.4107@R8Cyaˌr_ͿȄR?ʳT̓44Nъ?F8M߄0>S5~gZQ%|Mǌh:LG>[1BxDTFT8#MĽ!h@5ްpxO^὎bH|?Zhh=6$ghy\4Z!2~GVA}hd~r~2<9
@>|NDD+ߜAAQ
{ |YqH 5`:#fu_Vg?4iP?F;:;iuv:}8rp.KK@983ғ0B򗱮o8V)yY4+vRKG7D}8Z6X\a%0hãWE?bL(/q]Vvіc=ё8sߘVw1 VJrÙ%h[ʉf2>6a{)|\-R<$Jz?\WFտ5h֊d1lRIk<(yqʡ5xs|ln>?}bS_蛇.=!FM±RhbU6jEV;,c	wZilJUMVWl>z#>ßV_YB	(khe
EGk(n:PXCpqu8:JLƉ9J\ir],ҍ;џHhVsP9Hh*׊&l;1]
0CFuhѲef=t# c5[0C\PDP
4fGO(gG*GT(Gh
ry[B_D*r|F9:TqrxN8g pάTRT#fWSWTO*0?6WUVI;^*eTu`p2#sx։wPfMDO$gMk:.Nu:Zg"cDuYguY:XwkDuHYHu&J!OE-N
92.d|ІPR
+0Elbм?6BI0{y92?Ma
;qY^jtV7J/shIK1'9+UNVڨqI)L5y6I3DDb49G;83eHVw 4q
H[7ђ-@[puZc=޺8ZsU8ڋԺ[#4BoQ9ځ4)̒EUkAn9{a	vJ]i֥ڪ;ae~	2?jߨ:Q9&Vr5Q(7Q&?RĵLID[f#d|d"юe5-ڒ#d42%'6.C^fyrJX#i}Gq^e4yTY&V	%(Mf#H6[֢Zb֣h|V	`=Memƅ\a=V,ƽXoǬzZ5Ue7\E$xB_V'1h']xm<OB:ばF/ܡFJ,alu*R~
Ŏy-=1pF
>)B߃b!pbH f}JJwcБQazJJ!ء/SN>[3֜:hod]2;8^.jF9㹀	̺:[q6NԊsFFU%xɤLò2#eM}fJ8`lV"fsRjQ[p{!
Y|ϫR}}v`?I'̡)ot56I}mΘ*b/LS	~T"(RoSA"g<ry[+R	D%q+Ҍ@VCKm ۷+GW>{>+0ں"n}F߄1SoqfZ?6ϸ鯸
K߱ZډnL,^
Vݶ!Lyv\4-ҶE޶+	1X;OTb] څbgYvJ̲EvgbR,ۈv[N<bOvGI|lwi]*~v7EݕfvoS}Nv?tJ!	3^<VqfKG'`D2TidnUTHkGkUH9>xVġUa2"ye6E3|+Fvv,<q	]qHGDs؉	t5JlV'[Ǿ[(42xJEPAAy=8p4l*uؚ|b8h:tkx^#gh'JXN'	W^=otl{UefiNrZ1rוק1j{t{(<{
hfɁ<" $6:
ZN&50M}6۹n<ܼqFtxNOD+ׇ'TQ!i FrcUY`rqFdRZ!5:Rx-Afd$2,ͣ?츍.L/PnR,L+2o`zn=m|0=ff?0,.Ic%qDvVd~}sFrPe	jX<O5ABw&/gfeWXxة婸.o
%"V✖9+ܙ*E>%X@'HG]hcq}<'`}p=	'r{2`=
Xd3=_3=w{pD}hj_*Jy}l_%W5 7Io/3Bq}^${-
Riw;	'~bq6EsLzv6茖}$Υ]p;#r3##tV&ٳByKT%ti[$NԸ!n)JėV?n	}'ZAF*-f^n$C;s7
zF{5dsc"?d4/y:[MȺ
-k-kBQV|Wh@ik?nv}0ʮ%لc0ޚ3%MxmfeA݃nBEFZ]
"ejXY
f8֐Q`Y0HΖbXN:"g' 1J{ﾧ(ȯ(@krv%SZDnYf0((L%eR\G?@zD
ۯӮ}v(F*w1ށSi~g7_&k,'lso;޲IծH"j\)!Iq%Fv?Uiֈn+ؔbv}ϡ6]F:At\P%4
?0[1j@0^69V<ZCr}2٢Kf`URV!N/B(s-G)Ɠ򰬕<%x}QvbH9*Z9:::z98&F8rl88pyiωfx6KG]1Srw8CrwD9:c$g
Gɹ>?Cl+snV6tߞSXTZݠtaètJ׎m&CKrLN	jmr1rlLNeC,?M8au"U= A
n
C!St\TŧwHOhKö,l~i~ޅtԓgD\ ,sxIJI]ِ=B@/fdFQ[Ć?k콏F3c
`
V%Se8UdF(awq
͑c|y5ڦe!O
)!piiN<SNls:'9xw遯ΩON]N?9/,gsF3R4w-Ѣ3FqÝCaa8g89ZLrtg89FsW:'띉&$$pgx9MwN5QO96l}9pQ]ͅ&ixx8t&Ӗś'TF!雎e0MPw.=vƶVcjtVUP~J${@piQ;^ĪY}m%1Nb٨VXWX%2M]`zi֬@;1ZA:f:HP,Y%J\@]ƅ)]xJ+86I!Fklϲ
 o.9yK"BRK1ܙCq	i_ӝqs
::P֙M΍xƹ	99ކEKjo']Y>|3^kEb	%AF&j8boK	.u7ԍ.	"vEoRh:A' ɐboޮyGiN$;#⼚f%n1r^Z7sWc!WV|ȣ<?W_Y[y,3025Zi%?û
s;w̹;=Dq	ZLuLڲ?2dmE4p@	kT_aDh%i+憵8E2ږ	x1VZڗs16*UU&k	p>h	Ijl)o00\M
X4neP!Z.54'fSj:qT'ʓzr5h_/	_.ei Z]HBЖ>p[ %nua0b*Sj*Q^,rf R`!XΤy-E7qt@$:1BlS8J4vv<qv^čKX輎۝7&u;y?8Wgv;PGv>MOEL;_Ηbo1Jt8XA ( 4qd&w ʴb	6ۯ&)ZjH
Q]+B_ҸAYp^1>f]C>o'R0,?-:ϹE=|e7HزA	,gLzh$FyllQEs7>M	4%PYpzKVsp(D.h9_	Fh6Nwv==PǸ\SNsUt5vus
wM,%rE.`ylkU×:&nn+h7Idd0Vh}6amaE5dg/6䛓:I %k!} sfqǋ&
wZj7a`y
3Y2ݭC4\s]8 
&/5T M~{v,zO֭Q;0:Mi55@1H&&R>'"(rv"3eVw3)ΘQLp𚵶ҖLK!ֈh

IS<M룕n>Bt`f6'-n
Vp#n)u[ݞx>[),h-݁;Xtw!;BtqTw1bq{=L,sǊb{ڇa9i2Ucˍ#ĖJXAs\ZWc(KDqH;[d6dZMTXda$YKeʳ"#E+ 0cł55|_v,FbJY;QCwe`Fo_bÜlwe3YԛetgqYop&q^Ӣ0P¿_5_d4]7K"o#%> ꞈ;Dv'{2:͝^)NpTN鄀 |&vgݳp{6nun$dDxW4wez2|,%:VHt+ѱ)H ,a`SD:nco7FڊR[򈇇y/*?0&KNi[4Wo[ܪn{
+m1g%BI+?ˬ/,nf_SZ1IlZ0Tq^pfQ ryλ%\	]JwW`{%}"F\ބܛV/bw1ָc]oUٽ;;pWӽK8n-6安@k$^Jv#|GJX"+I,ZJuG(`Gw2ϖKMYrRAZ+>܌,lEB&_L˄lu2234-D%I+jHҪQ(+ĳSxpy;Pt^]ԜQS7R3C$̊x5'6ʟk|)@Ѝx2 kHlG#MeTM92rR˺PȺ5Υ6Ml| W5ܫu
aJ{Ô AܪOv{x@zrp9<,znV;t\&:!so@ ;[ovtRiM1PC -Rfq&)sw&hn 4A'ݍo`I7a->E|V>6Bq</~ܗV>~;oyϻUCp?Ǵ?%<+(voEG{AwCݟhgq&;Y.]nx܃xSĿxS.<K\K(%^Ri5UʼfJ/XPx-#Vx2kSNKr?Diwjlp #CŏYd9B|+CFiaK6uꡲmlYej|eB2_9Aʔ1)GiIB9\_=PGkPY}]{3i+GrbQECѓ'/@:TfZh5'1nd2s5N	[Ae8A<:&M
xRY,q~{gC[ 5RcR%0AVVr`SB%)j.<:-jqTPO/p
hOڜ	KCJ+Goc
 G{q7 ~
o
,oD$uFL n {42:իfA	i8FZCl0xgv	'0%Ҵ<^b,Wq_:\I(9DfbD8J6WgLLinlO-Y
oTSYLNqns>|4C;]hbwDwNThl\;>CB[/}6Q-]XFRmC8Kun3åH'Yc-`kO',&&'Ɣ).I|gqDx.jb1X<2my,
 ,zLGpGȗ*/
xй4%sC:F;	w2<o2̛F:Gzaw:Dox31;gx<9l\❏9ɻ _ё-PC.rLB59: %mFrQ8ncӠV=f6A<T9қwq3+Oϋ˛kxcn^7!QK5[|=Tǚ
taSN8Jg3X;>:{68}}_޵Csztn@7ݽǻ	LnQmxinxisު׼hiOttZVKLm4ֵOD Pp/F\IUr'Ӵnֶ˲``W%{uUQ1*T}LKy6W&VhNJr\Yۻ>آ
[=qqqVۤ=ESQC[iF_(=kc-kb-+uzEX+62=kb4eF8
_Q]DPVʎ<X%(RX[¦65|}_ 6:zK{	!֢Bp!=@Qp8n 	zO{Oo+^oE`UUSl
	wRҮ]M;iX=##1_z^ޯh	L*m?߅V ڳ!΢OXNY%$@983ҲzUP=Oދ9ʠhe!<}^mAhc#wɲ(ͥF4/hȂXy(PKmpU+.FQmFXLg9ebGawipGYtGߜ;dgkcYWx_/
ѿ&6`mml`p
n~{߫HyѬN,{D>\C}}O>U=j-"_/aEM$qۑ֭[
U{)aQCA3u]l`R)r](;AxDXrbCYxT|r٦~2`6,Y,KO&;#oG,GQ?1I[z&x{p=2%!pj"*G;][2%RT54VZ4m
gb4o o~X}=)	F@^"Cs<bΫhW2_iVdf!dBq-yWnĆ2a҅; p1g">	?\~DLhYy#[Hm}M{=|24ML +нo%~h_[%~eнsA,v0CO!h/QD+I΁ЇY֡VjovXbFio~aRs٤4qVlب`Q!5ƣGF@PFəvhhΉ9Vv\%P-Ï{kCy
9DiX2,9&O1W^	qx$yHt%
V;9GG|͑FWOE{_]~3y;4ebEeOY:eh)eElB0_xur/HW  C&R01#2q :$B:q0'FwbK?
;$tH*#BA00Jhqsj%y?>	G3	l*qKZ<ZFr\2i#"B`%DZqRTR閚jڃ9W2hZ:q-8ihpbbRXS3d
#cJi'DK8!`'CAE݃9<pbиP	ѵQYA ڿ(]R#iihGwԺob

k*
:1P8#Du PڿsCkW`T(øׯ	G|wI->JFRVbyξ>Xm'o2o2s&&E998	 0~EH7%YNҾ#+~k]v POhG,Y:w]^bI[c>vLML$DRЄyOui=7S5x*|V0
^+#P0k*/κ3 ]R#XaVX>;:7L#P3pKV3,[Nqٖ35KCS,DWd8]2MdEG	r	l@D
FB1oB84%]͸1nOlŪsXxk/bC5lLx%>ĞBI|*"O^4xf/!,tp
[;0vx6Q6AF#i.H*vd+E{q<((hAڟAgzFЋyXQ
7+XI$++^Y(,g2ST׽/~145M}I
ZT3i)Gl֗!0%8f$t,Y..mYcﱓЈw%&~$&~ƈ/80-3N\I5]؍{
2tq_&_Sn:4'h;im+exv&Bh%bxF"~.>=s,<>%_'dN-A\}r03 akKwG3D{	t.A\4rmy1=(Kdui+NS!}荱RR.SNTw:5{go36p1:Ll
l`\&v*wk:Gn98rғ@4J/J!P}=P2D}/"o%DGC_~!a~1/x-1o$~[<Ó~{w~GwG~_/N\~S[wn]%}EDC~b_ZI6칸):z2:·+9GM&|t!-|]Ѫ%:<8BE!~:
OBd_		`~=dhѯ1gr2u7DkJarrX24:Bk!0d-5;nV0!9Lmx/nzx]g}UEϝ:Ѹ?0nhQ("ݐ@d4dꔩN
c}cg4b9cӢOjrl
IT#:r3ǕgĻT[~L<IǡUD,y<=JQIꄁyVfjpeP@X[*p谼$1YZFamh(fTj6]hJڹs3%~go&!ov3V} #f[
a6/6KaxJh{"G?onl_8ÿ
q
:,G#o"b-x_gx_]Ŀ\E6[?K^*bIfitnut	P
<.G)"OPMWiQ#pSrQB}/)
~'	{7	K;{'
آ݄PA>%8TL|&Pl]b^ %]HjI&odMbE;0@~y<t~Zt3~Qu?؅>¯!H Xζr0H288O/t[焺[iT$Xdt5Oҧ7	ی":[s1Bǆ](#ԛRɡr_ϝ|CLlNAo6߃G&kclFj{6_
UzSk"i2j:Q%U6IͥeAĪU;|WP%Ƕ<9]
qoEz>!\L}X/	n%#]:~=GbAЋZm׋z}oW/^g/b^t^ߋz}BՋz/(^z>z!w(׻zm]#ms/Ngbe<k/:	>c
ۃćЩGQZN?PK
     A 47l:    7   org/mozilla/javascript/PolicySecurityController$1.classT[kAlWKkըF/ւDSQ>L6C:eS&@U

%٤6M1윙ws/ x4Y
i#4(Yp,,[XaH_8Z!\mV|o
!g`u_6)O?42N	CtmkO˃QC
B|?rܐ7'h]xE5LM}#o<r-y :"t|6i2]*]Xxl<jrZ4'mpwI_DJlZliUiRYܚ	<_udz'=մjc
dl\m*Ȃz|
B>̟MɴeP)e`Xr~<fSpl	2"ncE3;4XK 2C$1X5"GYڽsdY9+}L9}ĜcĿG<IBU\FĐ'9D;轉[C֗i,f"9"#~#y9q܎PwE܍K9H7 cPK
     A ^%    7   org/mozilla/javascript/PolicySecurityController$2.classT[OA֕VKU*jm!oR%1JR>MN3m_he<A)Ιs;ߜ xXK9-bwAanU-8dXii}Q*>q` :JaAؤ'SgӰZ-ɑ4Z)adŰ}Qh}\SwC%#v;,-pύؘ0Hq,H}>kdu,kÒWoY_(uD`kVh0Х;K<&wI%BI-"-bGTRE^Eұ7"鮃.᱋".GAEݙP>'CaXF2}.wFI/mc*|zvzP	E=Pe^:-ͻ,Fﯣ
38Ȕ˶ Ij<2Lk%Yj5֎i|Cs
,jiʴ^OK@%\:0W>b){3٢nf*+ZoiW$t> PK
     A }    7   org/mozilla/javascript/PolicySecurityController$3.classUmoE~vr{kZ
$uJB)Ԥ4NJv9ow>!!@o@jD3?
uWq-yfv晙/ s:-\#5iš)8FpCх8JmQÒھ8naY>8c:c,K_|ឹcfӭdN^YoIіj]Z
vm>>#plv3,oׂnm't5];}kzC xGvj%CIYa¨M@_v]N$ACe
׶I+Pഫ2<Wvҩtnqn\f5bEAçZo];#+܁a5kzkU馭"%e-m"maE*tp^sx^\yT[|\hNXܠHMŰ:>FQm|¶[Jpg̹H:J\ }%O&YE;{}rܰ);vUMG4WX$?aت*Cr\RodG爡͜T3J`լi>5-ZMeiwעݯ4	ʹ,Y҂ɲ˹FN8>j0Eŗe
+XYԣ~wXƞ0]2yUӄq"$E$P# )_^-QTfr"3=D2juwQB
/U RkS3Bz63}NG615odR3TW""dg%D$`! ?ϘďAŖvP	_*0IdiJ\
S吾poo{i~CN |4PK
     A BdV  #  <   org/mozilla/javascript/PolicySecurityController$Loader.classS]OA=.EE?P趲!@M
ӰvL$$QL|waf{9
6ld8kXi[[1R,0A눠drw[mɤPY빅<jyw:~̛Bm.3aҗzCB8>WR`:y/;$ڣfpQ$QojyCiNQšNjq8ZHG\(aSC)QdX\o#Q2jmtۦ!k3X;lE<*rv}ۭI.~Z3C`l!Ԉ殶35%ޫ:zq\u#`XË{?Cf<ťc(~-hx"WM6q?L;Jtb,̀!KkZ-yB2H-}s_asA$)Bgq$X71CdٳI^R9U>w:C@!c"7/1㖹/6(⎉K"
{4[:C8aJKʽjz^I>َQz*i#.7`PK
     A }o.>    B   org/mozilla/javascript/PolicySecurityController$SecureCaller.classR=KA}\r&ƏBH,.!́ *DXm%nޝ?C,(q	3;o޼vTcC}
ޘ͕dhE*|"텘hB:\zٵJ#VBki)<IiC-TRv;ss|&nE[usU(jUMYԅkncҖwYi~T_%(ùɔMf2C02r-{lC6?bhQC~;07:E<#_;x{*>z>`l1a
*8txPK
     A AQGE)	  1  5   org/mozilla/javascript/PolicySecurityController.classXT$o6a{(dT'KJ@$T%Lg^Zh.ڪUiKLZ}B}oLd#˽{Ϲ|s{
 ?Vk_|E_U(S'Tp@'(S
*ʰ_~STTi(VN>yU1/*T^VpH+*`l=߇#>CP6?RpTd'>?Ur_Vj=iɈǭ4?	+72+#PҒ4L޶T|]mvKh:tV(R޲cDzX<H[c	æ@Q{#MؚIV}q#qs
ϛN[dV´ZHwX<nDƌd<fmJ&tRZ_EZ/1h%bZOf%6t[q[aܤk
ϭV۰cdK87'l+0UPx֥
қJ3mݡѽc.˴k&r6|y2x	(ˌqOyɱ$ Xߛ0!$T:$Ia9(7:u;pCMwˎi4
&ㄈP^	Ԍ؞XM;LܲϴRr@CP`d1)՚Tp*|fQES.P1)v2_ɸ$P#* @̏IOs'N]75P5{>J)6
~U+0Y-Z2Sg
"b,039pm2	Nf^Ƹf}+GaIX
ΰ
Ӵ2˗
f<W
Tr~"dI4DQf42ME}9U0L>y<gЀ4wc>,|oݷ.kxR[
W_Hߖ41ęR"w%-0moJ'Jh%~%j~/xZfzbq>?2Mß@Cp^+.ϓq)o
ĿҚDdkBӨoj؇^et"
͸Z)cq;B1taY	:<l4:5=9PBS<?
3`1A٦zP8=~zH/nӑT43=Gt5{#P)txpqUI';y B._*1l'cә27ZvWFչ\QK>ʚ匟3͉=6jr<TTN
CvR֜t" E+S͕gq7ukQtĶę\l5wnn%roh8Oԓu-hǰ!wv*6ŧP2eTaa=T`//tr*	wPR`3}oG,wuD[CfJs |mةF <Q	ڢYv4"4QOz0 {=pFEgu+
]"8z%"y4`F[~<Yβ@ec{a,3z9^vFW^X/>|&:n!Q'h9~[Nu ?ů]԰c%ɾ6!UI3؋K GO1s'=><$.)j䰟2E}*;wE[qrAJ˼L9A;=';0yݕRYX`ls\ 1:stkS69 C$`n	I_JdєA
!a1
=Ct{!W2i6LBʷ]bᖗp$Xż
6Y,
^&kkX.	^"dQD",X\1SRWKE%EkUDYxU<K"+GE\}Ruc.}Nfqϡ//^"_f;D!11|'^i뵄`Yw?W=v >Kvj\dL[Cx|^ؒG' }JPD):	KZ'8>":[R|	G;K1U,=yq#o?\uPK
     A bpD  g      org/mozilla/javascript/Ref.classSMo@}8v	)-446|$AKPJJ
m,VٛR7qHg~?1 
Vxg{337 [hnypCCD#TћzI߉THwD8'w~F$a"j4֊,CV[q
Ccj@fCZ}SDo7r	a}5RfkEG2Ԑfrϕ+a"er0ȎJ(
9f2mE-A<. c3/H=Jͧv<JPqt	Q*BuNj֥bmY|
v?Uϐ%ޑylmB۵^P`WrXȏ0,[4c20n lfV͌jTp+o惇8j͆j!ByPk
m"anyd	+WPK
     A Gԫ   .  (   org/mozilla/javascript/RefCallable.class;o>nvvNv.F4ĜF
t̜DĲ̂}Ԋk\`*1)':$\bK[Pj5#Wp~iQr[fN*#@5 @Jp놩CAg&,, db` PK
     A tI~  O  (   org/mozilla/javascript/RegExpProxy.classTJ@j~o\ݘB$".40%MB2ZpQH1ؔvQ	rq pJJQH@ISRw`gї(5uE!Pe:6K)Z&ga;0 pz#s]*#\6cC]P(C^'sdsRjlװ:uf70Y:GZׅҞTH;Q2Nm3z\tn5|/~)LB˾+Msۚ?|>NOxb+dĖ>dO`Y&Hs	G\H"^	xaנu؈&lvvb{I"PK
     A &N  R  -   org/mozilla/javascript/ResolvedOverload.class]oEߙ&.nԍM6n]/#p@#^[6Y
rr$ʗiohQ YC[WbsΜ9_?wr!qQ%qy
rua\cA4Cm9Gԫ5GZmZ^۵b/d[gu+2L{*{[ZB"%nlZb!O(pmipr\tMá^&Ríێ#r2Uv۲Z
cU6;4Dat7Dӗ@tL)DA^&M1!Q>i"bZëY.UPhzTt(mleK³;;gjʼLi e|-2Lǎ+M5UE\et\30L`8bq~@)0CZ/z\?N;h;z'#0VlBIsFie`)(g+X6 <kv R4j2ǂ/iq{ĵ~BaI~5CgƵoUѓo)}!DơB|Q>i~<+$%=I,Ҙ	zXET+d-$ͤ-L!$9qмHnבq1Z?	 1ˎ(nEuy9K;)w»_ASU[L$㆙/qOIP"co)q8od&y
?	>)~9~~W6x7}t6E_N4)R NC*cHR?yFP'zAd#͇n{_CW[OT6_/1^5zI. C奝A|@	!<W]/!QPK
     A bA  C  -   org/mozilla/javascript/RhinoException$1.classR[kA&ݬ[jkf$Z(*"`p@#L6K2uv7s|Y>,s3sίߏ܅ka(bH%
/Uif`@a?j񱣢s)sxGb8݄;0d#_P$Z!t80hOAu|.{<OΥ0UB/Do`nVx=E8lH
86llblUlMUJݶNQCrP"aFBvvgvO6faDq3f$A'Ű_pDlVk2˦0OLHc
!h,Z.VZ/=Y> Kvge"|DY
3h,̠IH'o	ӢiyTp͢D|'Αΐ,\"Z'e,Q)İL:E5dQ2 PK
     A t:  #  +   org/mozilla/javascript/RhinoException.classZxUz~Ld&C2$  䆀^b $	W&LLDܵzY]WpRknˢX*B˶ۮkk^v̟d`x|8;y|wX)xgzYoߩjxO]Gxߋ"j7EjO5{Q?3uj@
X^|8RňH
<,ņxXU)1b2įrYjRᑠVxRB*V<7
bA,EYxdI1TK
|ERG%zS&E#˼r,
tGH!ʐ#RȈ5"۶g[[=[ڶm[[3<śSրuWH:mk+{H,ޱo'#H"Z%Oxߓ>;ݱx<ҬDStsOu%9Zݑ!^	d#JD<GZ)z5MG,OG?9hg$utDMEkcX:WjO3d[do\NFĹJƨɿu0H+j
U^Z4wRɑt2ŃZȰ
*^6ґX|+eDȬ{Guh,g0eJ3=9F:Kj;Zob	h2շ>J6bPE7-m"Zt0K+v<ds`$ՖJE[,Iv_T}.Ԣ;pFMn$qkJ(''SC)P^vY</,pЄGuKupZÑY&;J\XJPU(_o
*Fo^g1n4y
u4
Yâ-H#J9&(O,V#.FIN
b{`v>:X(Iw
e)&<f96nIc#tTNQ;5
w_h3qu`O &iOFՔR֜n
OkDX{P[cZg|lUN:gz>,{5ׂw>BݕݓSKc)~wljw"r=cpJvX`JXz1bYۅӛI*rR&uĝ8h
ɍc:x8L$=gĈYPkz٠԰єux5u^G<n
DmQe,Hi+{dӳ$M+T+&W_ /2{PP4:Ι%lMnf;-]M|Ox6rmdl>#+1UzLنQSSze)a'R~`"-$)Lc2MFnSnO1Lf=sOt)wHĔx^D(3(=-Sev4?<co0Vj1M'=)MH_a.fdrQ]B?J(7I2PVku{n7%CyJ~.M:I2*P:,LSwvdө{W1f<
N]s6ΈHU}&G!pjT]"OEL4gI[w|yY4muԚ3WncFӣ)+6i*qETc^|چZP]~Km{	SJksz;(h3مkϰζVt8m?1@-WuHڒJ[!]fƧ:0佇מ*
5=cb1Lb7OX""EZl0kiN*/3WS;P;Jwƞw-Y}^+
T?"'SOGv҃<Cwe.>=T}墄`A,&RÊ\V"jMxASH%GMtFx$hwF:+wX#sHL]ml̕hrhXK"NsZOpAF@"##k! Řj0B?v`^Fovb͘Cпir?vtb<oE$Ӂp݉Cpqq<,p^wi|?G?ϙ1:k4 66ۃo0\.j ߆|<jb>9].\)3C#(pj3 UixT[pw_D1xgIp]
8Jv4C*f58Jw4|eǳ4b
PC],!Х_ujc-N4w-cl|p~YK>DxduVΠ9`s)]|_^SYiayIQ-Ng	EF@797RZ5Braq@m|+uWA|!ؗ-z>*N"J֓ȫ^|6ޕ|IY~@A^c3B>;|D#}D.B>\S{J ?Syʜ|w)3y/،_ijv^ˌ	׏?jT+tAq8G$LLGà.J~` DG,KɳpecaKC)N

'
7*Π>*[]q(.na6Nce2)ͥ'LO>tfH!/}::52
<igYQUU<4GM8a3Tן
?\ĺQSrW$ojOᒚ_y`x*tR43DU$O}GX=@s4PGSB-ngKQ(>!WhyqM9o@!Uf}`SȠT2dO^UH0_ϯp}b~bLx
W{d:9xIEKr{LDCToᝬG_㎡Tڍ=T_Cg,#4:3.k`\4l畹Ws	e+}彜Xwg&1}>M)B!7\Oy|;s tV9Wbq5:U"խ.gb4<P$XU`V3dcMkYvSjrY<*=PiqŽPk	*G{/N}C+Bq?3c@ZEA`JsxUO8hTC}<<`ΐ?TDiÆ&ک4=!ʘn[ζ-?; [`CEtp|,~ˇKdFxx[R}
`'ą1WH4ˤ-bbbp̂%HKl<,sRI5N|+,d!ޗE"X\rTRiz#bqfGɽ\@\\f_gt}~q~1bI7h+'xY˜"~8^#O`	QI(iewyMyD+uˌqQQf}FhY֥0ZjOod#6[o`Yq~*A%(fLdk7*CĂ1Գe[i!kk1G%\RLپgh~o\_$mom {s
b.sr}A۟H^(u77LvwV>Ec(:_9?dF6پϦS%|3#N-feMZPhv\IyF}'Mu3n}7fD<]{]fc5OeW@
P?EL+WA?h,*TʃX(CX
ykg$mǳRUJ5dTO1??`;Z#?(+><?PK
     A z(ט|    1   org/mozilla/javascript/RhinoSecurityManager.classT]OA=CwVʗmXE	"4!!)XÃ>
ˤ.tJg>_O1ƈw4ƶ<Џs=Ιs	D?fppuIᆃyUH+r++2["Jq+idaݗ7<%}'*p&lMrS)j,A}F
Ŋv}(Hh1;^hZ=ҹ	ۤ3Қ!դj<-`!Q릢nd5l*OKsrK.),e(#VՕbwxZ9-ho
p29%OB_zmveW/lenTBE74<	$?ͺrzR<6f[n>S(l<n4thb*7.\9{A-0C~Ws2v(5/cT@ YC&)A6NQ}ͅ=+kM~BZ^v:i+o~Ox{Go-;;ښc%pEKq'!e
i(34FGD6G^P[+7J<f`R+q0oL8HBOOFJLjF-(ZPK
     A E*      #   org/mozilla/javascript/Script.class;o>NvvvFԊdFp
t̜DĲ̂}Ԋk\`*1)'Z$\b_Zꖙ
QR HFt@b`Ll PK
     A LQ>A    ,   org/mozilla/javascript/ScriptRuntime$1.classTn@=F	-)*4PH),R@"%LܑʙhX=@
>|gO_ ".g%\ɠAa>:a[(PI.ϐ).Mz@S*5#暁ۼRTr8N&M7r
)<ҾS/0.#O}㶬y<&*ffb6bT9d3M0\ήLo!1,Ɖ!yO:,O1!3TfбI04M.mV`񗊕! .PEU;pk9䐧^WT"ء2>;k0L=:M]@4pE]kj{ފQ
$i~(2t;nL{=n᪸} "2!;KQY8dI}!%ȦV?%sLMb[Xp<n~F)B#_nYU1;}p:"y,Ǔb	؄#ldZF"3PK
     A SG=  /	  A   org/mozilla/javascript/ScriptRuntime$DefaultMessageProvider.classV[WWNr0
ZbB4^H"QZE$JԶC2LE|m_%ko}o}"f=g_}=_4,	C0JCY,$ǼX8XX'4]	V9JĪX8q<XgH2,ûh(5ɰVcKwi[&q%c}Lx=}[k޲Z]_uFMwҝNzl6_V,hJR]3%UW+cXփr'(mih^uЉ72ZaˆlMwSVg)6j9VC<\ !Veȼ<e]a4Ev~\~gtƜ-#\˪AhN:PjXy_Jzg*V}5Fs|Ǳğ,Ǧ?m3ݵFIWlwkwŏ~3~K^2."C !`
`	waz.e!)~#~|dhnBUF
g
"j42L<	'%Eٶ;:mQӱg0D;ɖxPGa2Lwx4]>}##Sp]0d1ERn9Ҷl篗@NP\Ray(IܩǗMtx%fSbޕE8dY;׷;!G%fyڍ<M됡pGLڥieD{&>b5)|@rK(]HxOD:'҉=D bOd~"L1ui}3{8K{H}(T:um~%gcȣ@~p.CG\@JecJy&
)e
֕@<َ1R"0)5AR]E'3OɎkNC"RPPBu@c9Op|_q̼%
zS
{3C4u@FnovPCC*\Ke&{PK
     A     8   org/mozilla/javascript/ScriptRuntime$IdEnumeration.classRMo@}&q&MCI[RHNgU6rv#{J'$8u.E[yo<?}A
hPBǞ}	+L2IzEhtNv LQ<DX01ak`bNU`,>4J=b6s(%} 8x3ȲrDh-&HLeI"
Yz^#yµ٤y*	K:=vg2$S}uv\QǌXUZ~GD<!sd?*G/8EGZˤ4>fڪl	ߚO<$̭ z&K"Rraq@x
RJMcܙd^y+^
|%7p2V^Ī5;4
\vx<~y**Fb,}Ź_V:<&g'LL7
B!vVwlq=x7QǫPK
     A {h   >  :   org/mozilla/javascript/ScriptRuntime$MessageProvider.class;o>^vvnFTFK
ĲDļt̼th$!kMLU@KS2s	'edꁔ302We$DQ@P_Z!㙗Z䜓X\Z FFbbcd`d`b FFf L1pi.vN6N PK
     A P  #  ;   org/mozilla/javascript/ScriptRuntime$NoSuchMethodShim.classTjQNv7n⭩M0R(FpUa9$n
>?|ٓ"5mMwa윙o3g

2
Tt\5p
g0KGymmSWH
7K0<Fn$vz!C+2*>dPahZ"ѣ;%D"7I_s| Qs☓ry8(RVAw3Ku-:MaCe(ĠnC*NAOI9l'QC85b r=!O~&fQ514:QD5X1qgnQ1,8Xi|\"UK$<rhޔkF`t3t٩H+2#1}+**=d*=(ylq,aퟖ9	Ϥ&̐Ng
-)P켦UV}f!S-/jx?B	?p%!o!/	XsAi"i.2!eQ"id%ՠHPK
     A Dr  M  :   org/mozilla/javascript/ScriptRuntime$StringIdOrIndex.classmKP7Mӧ]NtE Fٛ P,,CtiznI"~@|Cν
.1B7W zxQEO*б!𜡜}{Lc
зe(pO`PoVv~4Kt(ynpB~	e;alkvI)agž5NE,xZTLym[<unl;y}))+_hw٪bRD[&LQ)a?Fw~	R停tEd
uiVuf*j#Ր24`ݗк9
tƆQ1>aEe5 e/oGNMdpKb[!0<!0>~<9b
kj\#"=$<3]
PK
     A >XJǴ  . *   org/mozilla/javascript/ScriptRuntime.class}	`of/_%K"@C$V\Vݸzx'"ZVV֣KUkk{}{%|sy͛73o `¸Ђ,8ĸ؂KL]*,0(p9E_aWWYZq	M&]Cε\G'
lAq0XPdH7Ypq0n?U߸no?{G\nIȹݘ}F1s6>l$qNνs)Fl6 9y)܇yDJ1i<n4	i<)[S4Ƴ%|NKWxA/J%iZ/Ki*H5i.J
iNƛxKoKiAZlq0ޓ-OƟiՂX}jGm4FMF
-2>HDJL/ek	i|)4vKi|+=aB0˘Shp6
]b0!I>Kf["W	}LHXp(
-T	QLE~%T )o)9,)R !}E*q#(<%+#(!ʍY?أQhsc!QJ9OI&{>s>!&Z$<&&cKD%tS(TrbA	%0!~ ?4VKQCѳ)p~X(Q#暈zK)фJh&wB!brTeRCW?$XK,	1!VH,EbX鍋P/VM	RYh	",DQb-b=urN%)Bj1E4)NQmgq&նg-9sq>cr~B\(|q)qčz]-&
\@\G노كL-T͍I,-Tȭ&aKlH|S&$.rQp;9?y~Qorv^,xDGQU	rR<Ot'Fi:
	5!9>=CγR,T<Ob^01ՋDq85_U
5Noyߑ{rޤ"ߢo99'%m%}jGO(ǧ9QRKoKG|#9ΗM7|+9"h#<!AH%q5ɱ+N>~B?SJBDv̕2O|Mzsed)r
,VYlӗ~o r
Yjr$&r(p= rKYF(b\RjXD$.&	9b	L̑LFTJy#i`3,<@>bZJʙBβ5Bζ؛4I(DuS<J:,r83yr>Nh)lB(~!9IVDȥB.C<y\.qR(j~KȷZ ax
ɑMz>2hiQۥ<Aʰ )TH0IKr
D 'RIL	N!T'i8sgFrΒld
KyOΏ	9ľ(<\%/!Rz.
J
\El"!&(p=97Pbr7ZTo"frnVAGF3p*Oq`ۥwR9w	yXZۤ$&9g>)5ɝB>@9vQ?hɇB>"B>fi4lO
sK;Fɑ)K>-Aߞ!YrHhYcyr~E|V_Sؓ|6oAZa(K' E囔-&2|]!߳;Q"$L_(_|L,ߨ ;I7KPS_OȑJ/ωx­%$ʯ(kD\$w
[*I\Snr
":DiHS7I&viBӤ`bĴ+<
C2I$eJH+~/i&
bkRrIs4Hs4&͌.̓94c2sAQjc96Ǭ0	>O}OӜhÑ8	Bė9iN*Pry8U9psVhHs4 )Z#ͣNs^w4i6o4Hs!yIs1.Ri.#14r
'M4WY-$3҈EQh0W[<'uF#*phmf`V_$x]ֶ;a_4
bh8\U2/\lg5v4돮4a3CV/fЧxZ߸V_p85XE;~E(?EZ.,rC+Zci٭!_
`Ulf](*mEKμc٬աp,9VD/V
Y!e-tPx;#Ltō@{ԇmH"?TvAU](j\[@ko}<Y2ljXqּ5ˏY  0^L}X5BG`t/ǧs0ZR8@?(u~W]3jA]MUG̫_0IAۈ0r"qėUuj)aM%1Zyk(<RpFg0Sᝓxt)~@ :#
w48m
UUDduR8(4D@ȥ1{{F Q6j!}Vi .;㦉S߅}} H=:uȪu7_Máue2c#3[G%^0	 (U`(X7ny#2U"12֌<thOhl4Cn{I˺QKVj}JGaz~]2|}+XwnqQ#zK..͈.IZkڱ9Hs7ߧ<'p<EWXvKDW/nkǑTg,cḭ!,"@FUm
O|IlT!Z+¾Fjp}G+">c$7ؑR4Po8OZ"
`0}_:GR紅6@h4}#>օ}lY]h]LS+%MNNe90X҉8h(^qqYW~Z2J&q54\>ŕ=G>*o2ήU=8醱ឰ%9$OU 1	R

`lf>fmhf˨
ʓ.
y+AO=-NaG_^WSU][5
p.]شfqլ'-Yۄvl8)qXJ܉|0F̭]\SA"y(GD#u6X*L`QYsP{#܌sOX	d zUKg!dy)<&Xa|щD\t
Ձd耷T7N`g9Pk|_89y_0#C'
i J%IJ_FV;T[ceTmBb?Oc
TƎ?@>1"3ԩCTDCr"xE	85v_J?XQ81`i.$	#,|.*liGIYnzY#lc,P>mnG}~:a8kRiJRo4nGTU	qEXK5#JҪ_lZqXY2
\=a})qk@31hQ.95ZZɜ[)^!iJj}Uӂ:%OAGFԷ:}	
djػ+:V<
DeGzXOI#Wk`,{I8J˚4e(8I$gk:.}({m%o{kE<B-j
ӯ+QK@r`i6ԛlX=1)vQxeU'#QckzĮj!(ꈂn_(*:^)7f.6zH%:Gxw^ׅ4ٓ#Α\UƤ{9y'4+;.[EyjLa Iȕqcg2+h~3izr2YVyhp2q
lrl
є6<V_[G~<HsL
N4?ޣbQ9Wt#ORDCu9Z.:ib4Ny'-ɰO92C\elC rw11,B#h7O-}4Up
_"4bj3?FQwNH)`vN{`Pc}[k]`E7zML0n:LDj`DҾ/ܼ+gOFbSpA^
+iZ0ڌ.y'8BZ+Ep-FiFDWa]3	"έZl*-?H3G艕˰<D*#4	Rp6a]֕4}b
9iYku*SFMrqƌW5_jРGԒ?{!7rϱsqoݓ>'=h(ZzE{7ևAgL;;"
B{n"uq6HUr#,$]3rwTYo|>+pE]9KW+/6"xȒ}Tv)>>;mA9"$|'9刄;])˾!ݧ%|;Bcv/#_ye[_;q,Aiw: 4 +`tY0}vsVL@vaE
I6s#a;ֺ'g\gt{ߏKR (qXá{_bU9/[~[b]7Z*
Ճ$Nё.%Xǡ|]{[GB<UzW"@DHOo:Pj 
(˳9cQ1y[u2m݁iECj4M??Ӓӻ&uӈ5
dB b Jؙ[~J:g^Ӯ)/{pvKӅ,2༰:zI&}e*(AIo)
NOHnӗ4&S9u08&pp=tңw2Bz
- Q1DE:g1>TP)kFZ10u
|wͫvHbۡfpJh#JM.W֣b^;ǚ29;AF #5ݧwxa^,$]̭1*Ҥnnũ}ٓ%V]`ZzoK ;|joGiz|omWIԊvA߂^H=g`nē|kv&}X|x&vFd"sA1dњ8^/Lw4G
=x6rծ_{=|Gݱwڮ\#mQagJ
8>J~GaƯ"b _G) 59=9
³sjKaGBssT"Uk
9t~-@B:>7B*,E+n	s3g2ɡq¹V@7xܑ?ijIϫ;jJͨRt0owa3Ҩ*3]xJy0ôc64%〻N$Ng+:.}&+ȥot7(D!kDW)I{1*%u75HǊ(C`0kƤq%p!Pch	еr4m>:Dr};
TǐD@@Y+usy
)`W:q	
[VǢbi5u:6q`sVzCIfuQfN%s}5Y'@DD#{ؽاzشr}ZB4-kNtŊv뭈½;"P}Ru~o;KeGpTf
5Zϗ遉7+]4sӲ(ĹBzk%to,N,a6͑!Ǳܢl g=](c09tG:)?!&u-KsC-;'/gE>?_Н`S
ne0 CNQt7(xbGel@DV"Qv:N_Ӓ#` p)Ȕ[WGvǔFshѮgAh
(J
u{crQ0
)vg{i%0IBӌii!p5ʪvS34jEi܄&[h
pT$:1JF Go2J!ZR
w!Z}DݼUugU56z,Q.@8&u_+%ǚ>$vg|`ZP@YܽdZ!{%Y*o[@$vG$vol=].LC׼߼z".dwQw
)DUңK
Ds=@ 0C'=v-	$r"ªh]l)D87X5{uiD:Z4+;j:c7wBm(s؏i| ݵI3#:z="c#+_%9daH_A){9][tϏ01kՈ{vڈN} ,:@%]W̈	(fͫ!#YlRz@Lq*PEGa%m!!9#KRV%'駥\:b"gewt:h( !@9
֘NmBPrc%;\os{Ҍ
{a
c3&'9:Bt3qDiF'JBFoVj@Ou=27(TTGwѱp!B:['y-4rga?:;cU̙r)=>$Ѭn5@oEHs 1e6ۤ|,e1&HXk,seket5YA`$': ]K$֪>WCm4;Q^pw ڝO#-v_L1#kt'M@3XQڦ%4aGwAa0<>jc+iMm4S]Kb싳{-Fi2s;/$;ӣ"$񆘐sQ?;%49
#K!6^m{x-3pmGrtZL/i-uӗ8TNv2_Nͮ:;1Ie
{Q礔:VS{k%`05
ZK4s!qkNjD	5+Edv~ڬͪAjkcd d1ӎvs-?Z.*Y+ͪD)N/h7N=V<<>90G N$ث&)Wt>W6}-.gf	ƊS*iXRUĢ0JnLS/JPWUTƨ'ΦwnqkjqF=쿧)%םb'KQWAltGNK1!Tv-ncNdC0[դ32h}(81&5oP.34WլoǕ
59=/5Rr:(C{Tb7!*i*)Nk]N$iBm Jj0uj'SMD	"{EEdtNRHi'o"ұڶO)ߊUQfEG;Wtq$)	EJ<мMus~Hla1շyw>B"jy;- ggɺO$
u;=oo!%tj,O:@"SQے][_n
:w:4@Fojpr
1uJ'RY\A,sJ'H;̽^,|;ceޒnLuKf	Yym.`9T9}4r&'
*ە1jh6_%8#mImg
D<	K4')#O΁蘧rl,/Ů!=h m4mtGne晶<mPhm'¼6/2/KKy0/¼2_%̫w0¼6
#3$aԆ2bF9fpT$T+9SWwvT֤¼6o6oAlAM;fV[͋QNTʬsgQ-JsqMfSĬHd&e]Br>*4ӆܸi{WRjf5Lɹr#n({dyϕL#Veƃ.%5SL+&OV:."ghL+ۈkl)\QMSa.;lNd]<Q@cn(]vtԑx
36QVkWzaIIdS-vkd<q7UZ`1bm[	¼6o=*՝)C?t:e k لoCfni;oTb;& ?k?90|2o$V8lsy0]ԢN~ۆ Yv:KnSpm!^iMǏn>F'lc-=vD62ζʼ(I/h8BK*I@flÁ6SPFABs͠L\KC
eu2_QN
~%Up
J63泝;}6i> /Q.kϛ"2y6_4CLU&+rOmc0__/mJJԒ橵b'9BHBk0_C.+|-+dL$~	=H<:CC+*mL6*[|m|6ㅉ6sm]=mOm/_<K)y)tm#Ca6?6?rmIM5PB].s6hңA?CnxA,/FXm8W!#6i#!?TfhAuS6kp6"`xϝÔo__"ԏ,4E\}Osm&^lܓb|-fixr/Nq2lczs=bT!K;]PuOrlʀOT"YY¶>|&9mc{*ep޶P,}G93w(Cmy1*VU_ Sm1|mTl7荶g[`
al[BG饶~>ka
!OP:f[Zm ϣhfmF2(^}xlyeˑ2ehkm5/pAұg}BGLy-7+mc&6}3c7Ř"H	Vϧr>=HNȝHaq6PA
vc)	z[_c66"&Dk93OO&[?U?#۪M$v&bli{G5lsm"::x|#rսQG:__-Vׯ!:ۚiͲ#ggOlH7[2u=qd7[DIGlm{nlŶ_]h9I]qoWTE6

a8L

:)>y
~\<(51֨k2mAf|yT(y,>lku,.!?#<\{&Ki?y??E'luH/֑Vm҄3cbԟh*$58vy:':ʪs=#v	($7%l\k><'4VJO>{[I16<ı LlM#NrUg[M
3d[E7,mk???|y("YI}RՁ6~
)km+lm'=eLl&&"c'ֱĘk٨a#L;'H<$H<Ş#
npJ	zZwXNilkl=zl}<[S,1-؞|׶F^WZ|4i+Km:aUtf[+-6N1NV@XfTx(PFTn
[MpWVu[
GǥFđ~;lOљbsbbsζ[(E۞IXgE2Ag*NCu"mK!w}I$;lݚj[`J\cXR᧑s:9?N39|TyjlOg9{۞=6yP*)S^^(zVyV۞<HrK<K3+wg!4@W#8A~b*J`,e3r9:	grr.#uvH A?E >4V}
7蟴Dp;+a{N.MyIι:3Hj?Jd::?GJ-eQ,~lDXHZz6&R
;N4evL5x=7rF.55KmRֶ.ù"yӺe<Jph]OM5'W߶km:zsglk3<̳önuϬlK)3-ۺźiOQnbˏx6n XKd= l^OI;Tefmcj)hS/_AA׺ݺ#I I\9ume-ۺGO,'к`n
|A'ֽmY}O]z 3R}ڙv!
wimF.M`Pa[1qڡ%֩:&	I	\9(d'"fS4mL5*mm!q16iee{Nl)*gM:^VGC;E7Pl Q<ƕ]8&$
DjBR^4OL񧬧Q&8]k cE]*Rхh\-
9QhTlT)'++Ԕ;.i/gmWw9z8}RW='ڵZdÇׄmdezzն~cfmnNom#jAN׏7y;ي qdRLYoFs^".\̘!r)A؄:OI=^Nɝ$Pbj%~ }HGiSN'Nx
W#߷AJm18Uj5}$%T
RV$tDns{&k%Tɐj2mtCljXqּ5]'|
ǵVIlÎtˠ,۫E4aLl.5++	Dd(zd^AeVMX?FKDS	&sKWJ[&$;ӀqVإ{$y$PJ&oamdyC	[Qd<LxjZ2FYpDDdR"
sH 3^~c*{bߏ{n#9RJD'9vjGggus*)A)-1HE"mJE`۹6݌ m5]L:^1Z4s}=+X4ΫqOCٱ0"%I`cLͺDdĹs0R {OhSHf^Ac"#gE763&&1?2n5fB\5YW詭J:YT(:za߸wBd^S&zv{B[vl߷Fux9\e#!{$@ң9# ΓsurS3;쭹A+6HnfR%d _lx䢮*VFBҚrZTn)&|kCj\7/yKF5VMp즹[A)2[4qQuP0(w;զ?
\;%2Ёe.)y($cåG+bQ6'cj+q :8uskj&"1#])c\
Y6y5]$_qǅ)gYYњSV]Mt`*U9R>42VNkU}2Ì4%};G_ DyiT%.3XլLH͡"Hz8nJ$e{fz'
'қ(Թvj[Ȧʀ?(U"u<_}ʹ$PZbO@(u0=xR
RɨGy,@ؚ0qa_g;qyKEňY/itJ~7V1唨JXb=t,3ilCftt∮aR좇$2Q\t+ʯgH֫״|de45&FY转DےsՑ2y촓xFhdYW)&I$ucJDR2ǘbB@qitDf9)̌'iSv=0{xJ푋KP&UF΁dmaVzV<aV=w$Y갭xu$g&MLQ>SӍzl+IgڥF[;}2$(v&5:!W^֚t'1)d8W9ļY^țx{G4-^:cm~{ɨˡ3?7HNbWy)a h퇶gjVOO/?;cphڡa=zU홯ǰ8l'Y3k17hNs<5\Y߹ѓݹ̮75,}aRN־8^Ġ̮kQdd7Yf64T5sKH$9zp8.fgdGt[^=+wD]Rp--&evGH͇}kixL_4<kmoWs}--t>QuJFt)Ke8-c=I0*LOOYb$-Abo#jRDпb"]ڒ4]8v~S̺l][O=cǤ8"5F}kH\^BKNeIcy\Sbe(حψݒՏuB{|&Y-셬26aك2t+8٨W]rݞLZLI<EKa"cYY]H2<AGtJ1y{hiDj36HRWG"`_:BR\݊H弑U^-N;?͋P:%&6/\Nԃ8򜝛#95]IΘ=A& {buLOP"W IBdmo3%Mݢ(աVRiVDa29CUco}c3yĹO:KNXodvcP^w^Pgʰ!o[gFҸ5P85`ꃪ	WLg(#M9ۙ*Z*>OZȨQ2q%L}0R%gBs;i{Փ<;굆3?c?6ftb{B hd__-Hy`=6c?REStN衷NQ4у-1?'wr{,-KDgiqjVˤnt^YQӗLӭf6[t)I3
#DsvݛUGgi7aOc/VN2Ԓ͘p8JM 4n>&:{cRv
J5!N>F=<fe(NCWޙo9i򺚅5u8F-gP	ʽaz۾ÁewYN{R1z|ʠݷ) Ůiw37'EcS-Y(_z#2dat?4n? !:X*#u:'x\׷	8I;| FBhz:=pe&5! 7
 piE`| 4>å:w
)|@N;w
)<SxdpYNNѝc:&+` YD	'b$0|0+1~qS >Og5?ψ>,)̤,W'I#0|dRsQ
:>Wy tN&<1G~? ڽ*r_$b5<D}};zYR|}81ncݺ׃Y~xu1Bb`T<W ƃ	C	T 	àZA͇B }|fn
C(ZJP\)ь򝐳	;trow+{
>K$@΄"8F90JBi
.38qK`0 
BOB&F?E;xa)J?`Q]0ѻ`P`4D  ,cw0Ju0\aG `.(QOCXr*Gxyr'3əLNe	S6A>aڒfa?pŞMp$e	O3U%FrڙYXv7u~y#I;G&+/_ptr19T 9`Qrpq҂e-@p($3XY>G?*nrBrh&]V2V  8.Qu1ː/p%LP؄:Clcfh[  AZNt68cIb	;0}85ݏ9v>1Ã(<=O3$	OÇoyfX1Ëlf+lorxMv
~kcv=__·
ükyD+bl6jelVk!T6T;bõ9 !|$a_lޠapkm4DfLx;r9Z?}:BwW<~
g!
̯qGcIt)-8`M2
PA'а+bs)ыӄJY"bl4=M`"0c
/ a7Y8M6
Y"w C\dA _q\!f h{`>	^a,SÂpAdDwB&%`]`}O%FKDIKdɍKF)[a1ԩU)hSW XK']xj)4wV7:ߢHa
#67SbiQ5j@nBʹkxs7C}mFmICxdG&Qtmn B(^W6(~t
Vԥ
.J* GJ{ۚw:DU/Sp~m7nq~oЯ~{΄p;ɵ5	$Mп$ə|cgy	K?3Q"/Ef>&ٝ3wd> GdnnGy;5lvH]''?&Y5& `?\e?	o'ʟAkD~` ?\	
w8]rMRPpz.	"98̻*9`	*%;
U.r'`B~F_׃pG{A6]gA5qt[ؤ!\΃|頑] ؅dCNg28]2v
l)v6ÃlK|.CqBZE2P ^ȳX_$"
CڿB: |1Ep䃔n_
s67-;qѵYms/m}}.e9[ v\q%1Gѷm܂rkA 5?RIHjh=% `w"i݅,d`4^a;ְdv?v[p;{$NB^>y9x.u݄[H:O&1B~Zr0<ȅWa$}^@zKiTi*:_EE+ӰMdՔd,*I/ԌjkU9Xd)s$eZ*
oUI[.`
:ka>7X)e)/;✛8s3c
3>Mx_:>V>	SU]_YSl<(Q``sv!$vmr f0HlA^y-+sx+s<OeQ}xewrea"^ٗWXٿ8GSVxx*oFmԛh`cݸUHkU`A'k^%w`G
E%qc^YVX3դf3SS\RC&ZdP[uOS5,H{ovV+{jf5_65x%tg
0	7Agodoށރ	Y_a
{P>*1ONv/`47J_(fWZ|2@kм0[+d(jŬ%(^R 6N̦iCX6`~WkYP;d[QVTư{Am{ZȞ&PY~46IG'6}jm6LIZ6MkkGjKyr۬caCwyW+Pڸ-ƽc/(?Wl	"nXҡ1߂\Y}y@q63[e6>,oG_+Dl*"V*]X[_V&׏
a=?qQ((9<|;0VmgOtohNT<	ond؍d%x%?FB?w1g>PjZZ@
gނ>y+ځ-״ VrV]/JZ8ٻ4ܢ`\y % #17jT:~[R86{tiF@=~^9X^*/Տ#f$JXzף?VT,bT2HRB_0je&7bjap)*1w}۔O'۶4;Z1ӱ[RCAs
Ax0Q5zXT'/2u[lݰf$k JCKvr/2PHq.5?MI7:Um,j.\sJdIXȰ;ib3f?5SU*~晍&v%R,
}!C%yZ:`k'($S0|jqEZN.v)]iupv%ԮMv
<]/iÛKh[S&i7dimlv'lVmg˵{YHhSO#Q{~=~=
pIJ5<M@Q)	Y(-ש5^#5paoGwJLѐm?y9b;Հa"?,vZG ةO`yR
%p7Ɍȳ<qٍe.QŏFV%hP_*%@v s(!A_
<5'p\?kmroE#N?Hc|	'._,yrܑQJ~
Y2rx~Nxv4Kj๔oJ.OHoOU~q+펄Bn%$A
]k~鎊IО+/Ba
W`5sB,eajoCP{i4OpgV+ܤwh{qd>״O-O\
 <߬XGƗqa9}SìYjlϨh9ywC1~	L羄˛w@߯L˯\zٌ$+y@(\	4$MT~OzVi T<cX(HcdV87
np+Yl< /n&
^rVy~<M=%bkaV 0DA ~Y?<V/H(ƈD
lcTsxy4#
Yp܍2^JJ8Hr
Cy0![K(> @XKA+'!#>.@+8x;U>BOɰW2Oa6
tVgPEN'
WU4a=)2bk"(hn#\sXheOCb~w*)'̯70]-E,/dޯDV0JsI+r81KiWNJ.1b80-|B&$@#G]}<>Wq9#G])76Fi|h,WMX0硥PIZcOp B/>hsv|B{/SOHs^.x7Ao鴛8-\3 x$z2߹0q/԰3	:[)EHL`ycxp%:E9SQ|oB1Şk+;6bOh7X'5|-|0C߀:03`6?9
f#m@\ePJj|
M~6tc灥R
F1sRnNpiY{7;GVcT~<;l3Lo-bsa+Af+Xw();F w=f!=7\
<&#q{VV>Y0X7{ 0w1X{;JOG̦]K:2;2eq(;6O ?~ʽA9Ro~k';~C)6!MN=}c
HT
"?Q@ $kbO<TIDz"8$;"[r=/ol뷛Y Ň⸽
dWH~5"	^G#S]oD&XoFVxO;)~<6xoWx~9wq)>>'1?$ϰb,Nϳ6ݗ4
; a6߲,
v*;]ؖ? YBd#x}I=ZԲCajC!f?i?W
IM
H1% ÅW@`
>x3oqne7BU=:Tz/14op{A ~];Wb_T@ԋAQt:=m.x.+w1{vٟ g_㻂q8i?W
Sծ!ٻAc8%fpX#S_ uy~GȰ>Nb4ÒG	<?1	94os˟\i|iJ^.I[KȉZcZjs:Zsb<o	žK{By77(~Quu%s`>=z>{L(	+&a%azː?s;b)|Ģۉ> (mO9I
P }
>ѻ7n:hT=/Fwߠ i੭.}HҶAA|z/H6Wȡ
>OT\e#K)EꌘIOƹ;Rzn;\Yp~3
}D<t8
vww<R6K1eg36c.S;
z裠T#0A@"58JG땰P?a
O>I{|"iC	twGxM˒91dlwۣ:l ad`
F:3`;S؀*l@uRO_PP,F'9^$HN?xg䎉1j2F'\vQ0J4i&1j@0sFQ7
l|}.CpA/v1	8>*{M0DqZϕB߃:׍Ia(&	R~u8꡿>a~47az#֛N_"X/ZepCXF-pp
W#xRo_A 7
c!12T8܉<hNr!$5I~>.l>65L̄}A
sm~:aGRK0[U~<%8JOX 3VEpݎdΛNl.1
D[fy0&8J%3%XNfO2{(1`N[38qfX;XmXuj)֌a1% 5ײNrw]hKr(r+EG*(H݆i/.]>)L`MA%(U4cQv(dxEQ$A\?*Sa~T?B<99m΅yi·~."$ء_
!]W~|_
_0ЯeuAڗ HQLs,^́ .}qy
*x
&Hd41^јhM4Q^&tWU^UzDFZC(HSѤ=,k:q>
#r%A\38WW G.HS'3dO`"V1E,D 
%/elE+bfU@i(b C4[?R|$jYJ6_=Ξh0;ىTo.TD9YMi#W5O
:z
q2V'aiڞTVPt؆ndTS?FoވOST_E!|q-Ffe|Ov;ʳ9a3S]d
cmS=_z4MiDe>X[J]սP8	_4/4/VtB#>$MB^ɯ:uu;_? ?_i`lOL;U
ELVaG9ZJQaMEc֝eNwg*4*fEus>QD-3ݪ͢;wxTsvz+>~.
9i|S/=͢N6U|M[~7y}5\,T7"D6][Rrl{p
h}ĴP}H1jW҉SA:s2_Oҋ\doDISwEۍ{=xX6O<U!|Gpi}U]] ս+]=-tawhlQ|r2(-p,Qu;$T+>^fIDBa|鉋	ꓕsqŦ`)aZ8ϫ݈,Y_a\?SmYieri 2rEbL64k]zz5L1Rzw=PDVUL(<Fhݕ8z(FNi)zJKUrq',{Peju;dJP!36Ij;xF1XC&A3p,zpy5Yqhk4M=>{Mc)eݐ`nA7k WrB|PޡcEЍ&tc	?A?v\

%)hdR1wOV?UzzKz=!R~J䕱Sa~q?鸯2`͊w>2DM	yO
ۇ#NN.1o[u1?Zđ0яFT?7svG0%Ob
I武4钑q݃4d~~"i>uRw_W};OqD#e:%|tVe7`CŨŏ<¾7윓ǔN9y6Z~߇	ؗH.VI̖6F6=JmF}{
r
 r~-
fA@myG5%2Zo Yn$67[0\}#q2Xڕ&4N`[`r7bAJQPDBa?m+JwM>.O/ҟ	dϐ3Q%~N
b5%ō܂|ֶ5lěC\CKbs?! GРoxg>7I,IMW*ck"B
Y 0mځdF؄]6Ua#&>)YGtinSICg	LIǺ7ݖ`g;oji{)W47vnaO"oC)idg1Tߎџ8טa܃ mszʃTcErƋzVĸymiEy A,`\d PE
aJ/:69EH;T+]L Sd$cYRr2zd[ߠiMo	&yS0o*Ui!eD0p8*D·GUߍ_Gs'(W S:g>tGeF+ʢQm֠-%2MVːHn߇S#`.
jA>(WN@?u%e4p89`bY5k0,e&E}k'>TҔwRēFʘlGϓ&z
A3|bɼɗM^ߤMƾNwH{0$C4#+
:VV62Q
<9ar+gղVԎتhRg6KΘ!FM~<"mhQL$fhջbʄ?[>r@Qw5,2M}i9pn5=F/
Rj\E扚0srͲak<WC#>:H-,jqD
픚e
.*xaThG Rk0j4!dtG聴F7`#~ #YFq
;Ah#5g+Ў"Ә#GΥި\yQ銐7^RH24ن6jPiCvVށDrqʻ`uw:eu4}#	Q*&ՐK|,+ͩ&;::-aTF {Io#lLA8[6i%|[x`7~l>W76at͕}߭,kj&3Mםɖt,In1ΆiC1=e,DX!k\$1ݸ3%k\ses0P7P-:&chQD9*E0veb'(F5OCs+=EM]
bFɂg2NA'*'؍/:ueh')RgW2yε{GlKk<g,動$h1n%NgTy@Ty@T@ȫ"/l.{^Xgbdorh2gɅ^1+mG6`LVbSx [7<!\CV
۠gRzA̦NF>q|ٷ1={5ܸ֠UZ1' h!L2ƣaGyK7	z<KHKɢ(ˣ.P;Eb,_y:Z`8/$A//6_Y^q W9ooP47Ǘͯo%N|^oNR\[+/65=rq[J(O9eV'ĉ%|Г
%oPaB*ⷤ"^!~xě>K+`;67ÙaN*?lo6*qt>VbuO46@>
ݟ&}DMEz_ƃ/
cƞ0E4r3;L#Phzr%_{!<%TSBWz]پc7VIdفHQ&VtT"L,F3|wY[XND]b+b|F̀/9փ|XryF0-2虄[ԆH˔qb"fZH(('<ɑ{чR\MHB´}|^WEk.)	w4jhNW!WyJpu#JӔwi[>.Sh71vذ>-$qZ)`? evqzQQQ7`ހZ |M}S^>k`_GтᎥGgz}9Yr7zRI}7ax3&sUވ7{6{6pc(ZynTT:>g{^N~ܰ_KJJ
(Z|H</V)2sJK8jN@7scyKFy!0QKv3H<
*F@MbD"Kj'lӅFґ#!VT>NGRׇRLIi-ֽe"T kL{)NHyo}Ci#7~0d6!;iDԘ'!c%?z:ǓL0aFdLN4)@
Iehb_kz&NKM\%$Ɨ`$Xn0gHHzj\]JewG_34
i\ }fETWR[y+jy%;f}zLF<KZs
9|D(3~Xy>̀`y!)py	f=T[F8T
+{h|bTY*Fh
v]=\-	:VJ)	olYgq轨قhϫkJxed\EC5zנya)8եxFFFp['܃znZ:fl..>Юn*li˵{5[/)}j5̖Zq-`=eryyqi/w%ϐ2>-&9,&ǥqY(byEBJ:wXI%X5Iq\o
ި J\nn+~/m?ME9?17h^:*/1I3W J>o:f8Vwbe0j
Ҟ(hwH9OUXrQƱgsjjiM5?(^+ɦxl7I=ۨ6Ao> 끚@zf2Brz0ڽ
R:aqvbʯηTK#ZOu2NyKxߟa')gW&A*ZE^KUwyzTmiXG[,ּ[hwfiq*EX,ҞAi*Vpب`m-$K-~ thb?=-nZl]=[{+7rSs;feɵ]6#/S&G]NmVnˤnW_-Nr6vnc~fF36~ t4L8*dav(9!gXJ`qKC)\P
P7
:OC9Tm>x>	ۡCh50|3&uڽZ RgG\"T{+ɤth=qn~7+	|O6nkAu!=bVZ`{.Tȓ
r<y[zB!ONTŭH-=.׌ok%ٞq0CM


WHY
q䇵GٷV{E+,q+ӕ`I$=:Yr6o_@O-L7Z;xWKۺBϖ6h3־>@h:¡LԆf>t$0,t4q114SC'\LL{
BcnL:й84KB,t>][Bėy
6rmALLvG{=+WyzG{P*0nʍM=1AUd]HdڣETwZf4*Lg`\HK_TRr×iM/Fs){\v`sdA{QRHEȆ]hT{hn&ʮ$ނɡpHh/2;MByV4oʙM9$E\MDqC*9p(6IFۊeXn¡v!8uȄ\=x{KT
r$n<mTP*7&a[jw(,CF
$!ҡM>;ʃʃS@gi+>XUK5RzWjѤ{^nn]V*{!N#1iNO[}R_5Vszw[
M20!Gw1385'OIPTl6ɥ>2{tON$t2ENZ=ߍzRm{6Bkϋ?|V؍:L-ϕx	|przA6I1wJ!b˘]"6`\_ӻWԶܢ=CSs6]gAfkwbSZUCi5qc
*Z&HZĺ,Zo`a-
5=uՄA/zl(yU#Ԟہ' aicohaE0rt+rea[UXbt2D<-SSn@\VۦtZ7m1IF<1.y=BӚ*#NV6KDyZt|Ql(WkR<nL⨩9)7ˑhި7iU4K%|.'VX`~feq+Sڇ? YsgzVRZ`NӞ#pA=Erd-ugu)/	&8KG.J{V)qh$6W7kBv4=畐S-o-H5ʟj龩Si|NiVK" N~vOZTRqyk7Yk9^rBn~$Z'%nDie-'%Y~˟ӿOA\NrٌH-~Ifi7jOlG?"DbKƼܑMWeF<}i}R+`#""~ TUc`haw T8I:3fvkY&HchO<{ 끘a5a5'X8:YquZ3wrk&nfV(XGcuf8lKfO$|i.dN}Ӽ4(>@\$	!5FV@HZ%	6,>oYPd^J;El7o_xJ..,QQ@݈owۍ͞u\.pn(oy
R_V!u(1RIQJWeبi6<ܴ^kxM3mJ96iŦ~Kz\)ٰsPfk>zZܰSh'tZb̳.i۵mR)dz0\}4õHWr
kHWrzi{+ه-5r,ϨfO/pJK1
`}P>"R7]wzfҍi35ykZ3uȷ
nbUBk	$2KI_g]ri 3l6؜ӽ> 2d4;zgQ*N-*=]0%7yS_A(OBelVQ{{K#6Ĭ;պYn2.!^fGXxI4=0z49գɉ.M8o''gAvmA772jDvHl쓬vd|nñu;Fܓd>ag6n
&fLc4kzX֣HZ?Wŭ#Z8D\Ԋdm@B/0z[<#m'1P4r& +t,~klNE⵷](ێpX+ǒ,sRV}ffQ8X)ms3n ^yHnK҈J[VFI_,N|:hi[ַ0څM'8
#ս!inkzPl)<!^>xϷo;}c^cBoI˾nﰏiطq{!-ҲL.Ya',wYc<b}Wo[aXy0'jahm+E]٤LMB+U$]SQ>1O
,wDxތVG}hjSh
{7҅~o&"~(Bgo<پo!ܽTlcOyUMy\F]d[d`C6ϐu=_(/aZ_$_ ug}wJ6þzA26k~sq5vDƿiu:`}2Ҿ]ϑZxMnST)dФ4\7؂]~VFAXGF,\p-jݑ
a`F{cp_L
á17< gbax.
eL1
rgny[QnZbfS1Te`1ɬtkd1{P!
$ltx"Y<JCw{K~!1|Dq88FFI2FA B2ur-E'*)iz^%aؖyuxSэU(*~7SHvxkGRƬDv!>Ló3|$2ᣈŸlL	As/ړjuet%nsed7TBZ!̆LpVJ<<>#aPu~{7OnAxʬKqv*~?sxgmۑ˵qbyǫuy_ΛLIbt"sGexzo<I.A8<|R/oF+!%vaDkie+MEJkf6
_mDxEdP9|roq/SJՆQ}-]87nV,u
{Vfe,.A
S	s\(n':>9r$ۄŀݪ]lb?"{)Gy^w5<j Zş

fmi}CR|/,Nhx@r ݚp!$6z`b1oSi{嶟L`rzA!l2f5}z:vR;KEJddO$2+VB	'QYxk֨-e"{z[ݒ1z@*EYxm
zN`Ԡ`SAeCנ}Ð٭dF^EbP~RHyUI᷼ P;Q_+U;r5vwh29jYqst{ !RجstJ\#3)&
F'\ԣ<I˧\RdHȾK1>_oG{ȎJYl|5Z"咾zXEFC:҉|l<&qtj9b?Z=嬈,^h4+W:kqMZ`SsmPA|jፘ!>sAd	5I+t7f𿠇7Eux'w;`L;0.XjqjM ?&y"ayWDݑǌѕ'.yͲ8ɇ]%AZR;ף} 03bs?L1=<7x3H|R/$Nb+Qaנ]١f{GjyTo,Y,
n1

_`ϗ+~X5J	=Pdޏ1^g C쾾HIhI\41,#psSe`Bl_ˊ*(]7[zއ=i{0!C	aj&Y=C[;Lr00Tp uSz]D^?)&&.\C2ULrtMo\"No%Mj&GAOLر=vts;"i3ؿ<PRj$AxwfU.=%7L6n9  ji+Jh
J[ M`UT*{)D>hD0 &y=0՞CHf1̵gt(c>dx\mXgS>KK,EjCQwR1Ջ*^E9hʔr/*pRy1Uz5i_k֡M'V2/񷕔d臓2f`=MW-ͬ_C<l&
n݂MZ4l/mp~c[ȶ+)i!_!kwLU.C6.]ZsUZe`}s˞|h/Bg/:ľmq[*x.S zET{uNp[ f> /w2m{1KI\F`-Y^jUpACW4H=k=\`G)ވl#e~n`&}9&ٳ^wP74WW°c_CriQk߀
oD}"kQ唛l9,#=*<$11W	jJuX.Tdր"OV#KgUqV=YcN!UǞ}$b3>td.rϮm
$.n}GLG\yp­NUѬw)#uYq%eY{x<.IC<щs_$JzVJ<сzDH[QC,pD)GxYG1@Jo#[q	<hocQxކWK|m?#4W;DlZn N_xṊ"c+G=KWYRp9byxߵ;*啎^SYXDS߇W57In1>@EqƩF<8Gy}k
u0x:ӎ(:zͪĽUT.vv:)
XfN|ŗk|pN$Bd%	,%N L8 O.;p71LFFh
TJCA}V!	" .bbH""3}Г!ZgKO8u~Oe~9"+{	l3\G4PV0UEݻգ@͆@܏A&QCZ~?FjZ#+R\Fz!"pP$c"9o"#di*F3|:>Bޤh̺ÈzL TFodE092̋M;/3izOLhp}ip$Gܣ	18{?td{{
} DpO=ʃc1.}\躗DL 9 /<iPBh:*"[ptldFDqD/@TDwO&!|1>-hz1t-g''s	S	3	"=F	E=,¶{`Ȫ<'|E:i݂bT5F+;e&#V%FJr_8=OPMX97|oRxTaww2*|@V;oX. 
r}8ٷ&Srsp_x`fGu^S)Yt\x"
TGnB}fĐȭDvYi;hı0'r7N1HJȣ|&]tLr,ھ5Jz[W2qa
}>y{}KGl,;BMWcP	t{Yte9Qǥ'pǅ7ɷ֩F\
K^A*m##6C(NQ$#%LVB
ي)'05/?n,Y,7o?<4xw9.0Lnɗ[A#RK>E?@|U嚔"?\Qg٣15LJ.YMntoq{hrmVcݘuʫ$*ycT,e~TF^"dڼ0!1[y,ő?ai}\q7JyU00sI[¯I
\ ^8I )}rҰl>9Atjcݰ"A\ڬwW*\2+?HF~yݻ5#ph;%8i.֙
HL:!f
B>60=612tA8e4ҡ\?`E>'i'MhBȿ1 #H}G '9 .sL\넰±p&K}W`ʊr<L!]]U<
QV·zxb+m%Se)ZX$3J9нO	dJIt^}UUq+dFƯ8P#yAS!*_MgaHFUBX<3} It*PQTީF鎡NāN/qN_dp˜}p3 ;<P=?»:çVx]QtBM&vs4P<>.BO'OM~kzgPMSa40U31g/t0 Ձ@+b
k&t2ЭgdSsY7TM|bQk~3˙*IL>>W<|HT3O92~Rjkgs:Ag~zwř@UV'n弰X!z7N+w3Un|7":$m#}W:#*k.%ݮb_wZ80+rw1$0$d=+ܘ}쳝`_C^c82xK`l9 \!0|ڼt=dxK)}3L	םqq1p/6mr}D.Xɔ)YeHzlPbi_b#09#09Scps,rfB:sq3ps"8'jg.V;^T<✆ǜӱ9;spyЙ/8˹P%Y,Υs,ebs\)w;׊crqB(;7+MfqsӹM.;Ϝbsx[ֹG;O+>s@sZp <eELxD]MѳTNFV?R^Q2{*s`k,)hoq차2#XZs,H݃n2dP(A#V.S~\ŽDKrM]"^IS40`⾊sTRiwZٌN}/8WM[K*N"C~ S\~)~vjj|rFY_y`WͽKTUDiBܯgQ 59cF:/bӝWq]Ma$ܑy1#3؃`00{ˋ'=N;.yQ!F2E4?C:&]ޒ@Cs~cL#j|طrW;K%qϾ]JM%9A?Q
|N
W)QáRdۼR䩲zC5@.d*6ӏI廒5 TGNmig>?P8wAl9hp(.4+󝯱;b.2na}T`C4ըOf$`Ka#{FR*[/!,bD$;,&RA7i2+՚}>C =XL2JxDɤg$9ՔIMRY\7 +EһnLȦ.`FFW~?jDmG#:"aH#)&1*Z1
킦hW̎qRgDpV58Z+p};nhoI#Ȥ>%(3D10Խ,ArD'5$4a)k6dX$6:]Ij{D>ۄd{Pp}~@>{FmĳÒz20C4G<: @TE&:}
Da	A2?wuhgS!gҕ:	=J$sb~~b>lLl
9w
MQ[+QZiƜqkܟpTߠsQ¶l]^yǻiv8SA&zt$(Ļc8LN$$GD8?z .6amt*6c] l-C#z(^NÛNtލğ<MOR} eq9W8P_~Vitd>IF>=ܯ}2&8'pC{soZ+9-x6<:7)o3ʛwc!1]rȋnF˳TGe*\μ&z8Py5qy=]	<ge|G[R>u_IC$z<	=DOô8,z9ѳpJ,eyBE=OF/Bb.wD DDt^!zF׈bx12\Lp*-^1h)>ުCn<%"9x'F2.Ӌ%/VM`?ۙ J%De5BMnG!Kj!,D,)P+Pzddp}*5]rYO#so}ZjE2	i⟢[ty*fC?_&(/(
_"`.rڟQe"]$9ȠTbE!8~E#CGj3ZE0,TǏlL^xTcKu<~=8@%uq1R"X]CJ!1܈?+kre+һ.yd+P}&1.
bV5}gFĂ$6VDOr/H1
.N8`W:dRl҃s	EjK8"__}mX&>s50gUs調ݧdcQ}#~)ThvKQ#+#דT:~TٓL;bRFKs4|}H
8<	N
E?żg4%~U/H1#UItvEhHńi"3-&dz)=ARix]F4fyO#	4geX&®oL} ӊ8r9F5mvM%*V'TE!j=S  ׺[p7g*~w;U=	#FXXf}teONPdb[-+үP3HNwh"WJ\MS@ eAy/EؗuKUj0<
c=:G7]FK5):
)yxGET&$7ѿBk:310mZs\鍚6Q]YȞМּ5p{3|!pQ&|rbyر26=b
FCl4=ft)}~akdYaIcJ0FYTfo{ۭmU<7A>,(~>W
ZC͕U*;/m8.x*eN.T-wCMDl/O&d_18n6۫
#K:b\FDz>Qo'^:]Z[W6to1h:ZCnB(I`6ٔ)0c@kF#+Mq1~;)꼁aږ6ǐs4ΐ.%YĎDUŎE>6c1;	NSpT4̉޹toݻ-{9^&t5,7yɣMo(}'ƿX+ז0X>9-ӂmju2H%yȚ]efVz2Bt<22Ssv}bJ]D\|19΋/C<[F§j1[?,YYs7M,q#:ӈUxสٛel n
~{Ui[ǮC8v=sjb3vO?uz(^h{R?Q}o:n)ϴN+WaE^.sbTSkJyJ3'mpF&eNlϓ<}1%eʳA_s[0>F/Okkӡ)ޚ(j6軪'jRV!pjKۍ$p^Hp')黉wl-؃/ւGz{~BSpmlph=q~8VV2C)EĹ\o9;W12}yy?ESYXF3Er7O{WMɢ[MzRr4l.,NkWˉ=ێPYcF<#6sSI߬z<sj*nz	n^+$#%xŷMx&
_V= (x-Ie RܚwzЭZJxj)m{sApA"Ւ?uG_/?UۏLIMSs|&1>8]$]{+<5cߐ-N?{^eZvԷ)!7ehr=ڔɱ*=bm'^yJZup7/ȣ#{<p	
tuԖJ@a5$:.P	/DCQ6ȉag_s&Lm<%6B"v
!SHG-"ŵdhKEcUAu4NvvkB\Aj^ՂU 90тp>.F"jn
7&&pqjn*SSB5B˨y</_l_-%d#Mbw߮7.m"wP5Ħz*R$>)v
Ӂ%<E
,]oGUͷVmt,γR>mvlcYڤFQF4J698֩+dLW
)s*.3R_cX9x
x*]נ&^x7d1,~`r<9x@,ƥ!XaX#%/x)>8|$ D|ś?H4Q.FS3a#bA|X?N"VOOB|x:~x6~x9~x3~x7D|@_!>_)_"$nB_	ANgeJ^S4gUNfbJN?|ak9m@Ӹe޽{cl4߮D_nyĩKvz{k9ӯ`OjR:b)a1c!J`[r+onEXA"{Ȑ)8K0_'5ߠ_@^J}N+UdqQEӴxץx
[Lq>Eb)8ц><Am Fmk>੩-IN^@ML&:ֽoyݨӗ-pqߚ%\)G]^ٶ61G4zTp3s5ϮqUXZ
45ZQhנIߑ\vq?S
@ۥԕ̳I4=CPYE=CR{ZS=jr\{j
\ǵtYTth!\M4$ΐ
-MRArbv[,S
v
 +Df+i[#~i10
C⫱o߉w=X_Z,߇*ނ%?c
h?&lx_Ʒbw	ağ6%K;QL$_[ы܁8YQB1Gp{BqL+XUN- =yJq^UJq71~JXb3^bv4(庬CA7栘-ǰQ#OcG!|I엤iGa?݆^킷(aBm2%(1)ǽ=9l>݉$vn$7SYζY.{2n<ӭԇlUVͦ[?GWud` gϺ'\.qVq\~s঒h4^D\V|0[ziz^q!+ߙˬ
_}B6dsДm
\R/)3YV&sw.\@
^-%허D+߈tuQ|FX{W^'2UkBPȮ!ܒGC>%?{zs!釥,* !Ogp4_ڂt8Za&"<.
).~ o61՝9EWtؼWoy2H8|pCȐV%/rU-r5]gT>w/aKS힩D%DAUD-=I>^>} =@,|>-53]Kgb`Mܙ%utWdXvI'2ї p"d"^iWx5;]cԢty{|6]IK}H
**Ʀм;]'9svi4ְɅ4s/M97dl?Ucիպo9\M-mJ3#)w%a'FQDM쇩)8 $pr%YC}dOX]^?ۣZO}}'AUh7.-^%^oS+s\#/
Z=(}y3dSlj㤔2蔱V7\2e`lT8eރ)+e܃l
A"JqiK-{s[&eKâ\><i/,+В/J!~ՖZ2?^o%C0q8aG đH'9lNO#4'ĉ8	'4JiO.H%spmbnHXX$x*q'.#%ƢQjØa+QFțݍڭPՎFS+MOKx龨BA<oJK_eaȲi0eZ3B0څ@r4ߣL2iG#)PAN z߂l2R?l4O6N aaQLV}_I0qOYp.8[ΖsgZ:tW)u异-Љݍ 7s791sٿpZLa6Wic$I%^{uz>2BO
T4y5p xi[_&<Wq~"誛Cx$Gd}HҊ
FͰ-[cJ;-B![uT,I9&J+*+JBЭM܆^դ]$w$vk0-q/f'֒H<eq]+aMaGH,akQ<)Mlvq|؄D$ne-r_G&r#]A>
<!BN#ζFmE:c8܀g1Y[JS1ֈkl$H
:ݍ 3hSo<%A7Kc..NU9*R^"ꘆC."xQ&=ynԜ@_`q<S+K3,26emr2e+SP/|+7D'aT]$yL6ej~h\rqʻW_ŧPvKO4yxUMY\stgOϵK&"yK
ȷ)χI<
-KRϐ~ęϡ.<$^@ċĝ/2#xSXdut܌U6ci!tvRy'uNhDtm7"4n{v]wȷZܕgY'AuiRֽJȐ8:¬^l/.L8gVxL7OnߑTi7eg@JSRTd*/*Ʈd\;lTw͝Ju{͝F<#3\kt^qʆ%\P&U)FO*^fji͙|'~'wl:MN^LvTFުTTu?SOkd@+_I"V@UܺRSiI\k3Hkh
?;tI-z0z0z0*NEAw
]*ƨ{c@=D	ǕU|PÖY%z?^X;(lH&IiOfyv,~R8[6cޝvCd,I M(H5%Q`
B0JV<rNJAP%-"PHZZbQμeA8{g̻fu`*5|D&M2eTu G&C$ސN\B GV̲Ve	kBei(Q8&d7#@C5@jXOIO#P.q:	ZU#PMɾ
3yqv{5aȖO;aOe

ЫiKq!Yhp{\CukDjɸpȵl"BRP{)jVsqF7jȏlev֡t($ǳ<lQ#{xYC?zZ ȓMYΎ0nF]=lm\yf*
-G%|
nv9_G)ST($%Tu
ֻP9BPJ! T+Ȇčtf'b-LɎ*<N|3*
f!n6te
}3MӛҜsvɛP=l8R$ZN FoE:D
ݤ)daЍ	UCafeS%~oan_if*p-~=XɚEbDL錓r9ٮJb+l@{"y^0a:\NV$V$`:d(PZڌF^ik+½RdG]AUq;<PB/hNzys92.*B*m;$*>دP
k(`ۀt&h`E#W
zQRO!XEWoza&cA8Qd[aďpuvNs\X|l6mz6m#6w	m-v@u(HoRCI%'{T^u|_j
FtN:(xl$)fOf^@=cCЗưHBrʺ@mMhMg}R7"o1^txuōKݱf?C#!!vHܬA wi'+ 89^+:OrIXoh3BdGasp+~`\MIvһot
[HYh?``>r'3rjs+#mƃ^q3?EV`/J9Hɶ7E[~Ru u=:F}_K?D}fq?yXԷi'GǢTVcōZ+C\;'0F)Lc,v泳e`
G9ܯ3<	:EdDTRh1\z1:TugCFD)ctZk4b]k.4h`˹|29#C
-#NZExKY\cbgqkQK?L-H sS%b[6E\0|4`$8>R	-v=	9(Deӡqgn?d+//uh[t[*As%>:C'.{5BexY47xP7,'Kt}PB \80L:KLYeF1 F#FwZ1*Fe7;͖n^ٴ0waX,'Zo4&&lThpXP%9RU,!`$b
1	vCG
L,њA"%!ڪOP*{|A`yo&.uǇC>HciTd{BF#\Hjr nˀS۸:1"b
eWh(o߮DI}8ᦪE

PMUU!j~ڭAp<8zHɝwhJ|a)t}b꺶~FK##KS|NT!
?EdfH:RG:B't\!7Z]crrɟf?3s+F
Į>LnSv[7%m8sz"'ŀ8=O }.R ꕋcL۫pe#*LV(tt/,k
3~L1]R\l'RQn!-&"]ɟ^|)TeLZMZe.j̃*UBJRB}+~WPDދ&z@݋GmwqJE;++ WBk WAN	]PL#?оR%"R-ɰ!md󛧬LSK["s$I='l'c¾~_4K6>߲'99%p_8ɧ'qB=_prV6(ɞ89/{BKOG4,œYcϸe/[Dj$vX%
$5y,F6+ɳ
%Z-$|<B)p/Da::\3 jؼQF`6-ؚ!xZQK??sލ Y:}p&t| 9J@>mw˃V>-TYmE "{{AUڻسճ2N߶*;uPK
     A ­    -   org/mozilla/javascript/ScriptRuntimeES6.classWiSV=2Bb )Jhlv4BB[(&fiDhF KFX5??i?&.xʹ0tyw}?z7XDoxoGqp}Lxx1i 2f#%E X}oifOpcqfqjw
ZRuZfMUїKsbJYʧ
#MוԖTK+)9ؔ|s8ַjMfeMfx]K銑O<2iPm4x/a]]Ew	ѡy;Ѽ	5pmEݞS=J.'M].2UcD|4enBPŨL~[I5Ε9tQ-GMC_t\dsP5oC8|2wdVuu\-O1aI ʦclZs_]IIC𑄏BOR,4]OV1rlj9GD5|">PgPKPAW[<
NY &ay	8H$
-X<#YH˵¡Mzy@yLMSs4svl EöC)PK=
Zج?VG
uISұey
eҌ<%5 Ȧ,˴&2A&VVW
ԂQWuMiX*J$)!z6≭',pXѱ-*M>0J<\աjY]أRwka*i2Y}2'B=:ˈA^JgdRp-7~:#f
ÛX/ؗp/%$*`knP7Q62:@eYi])k}iF1r:Hcs<Db-k5sKP7+0ܿ08K4K6 =۽<.xkq)p~L<É!&|hW4G~M<!C?G@:q
}!xޯpA/a0Q^γΫ="^#CD~CXTyi,.	+h6SDiutG諐9KQ^$޷iO7@q/	 (܃8git=CO:µ 7^v~Û4d_sG7G6XPK
     A X    /   org/mozilla/javascript/ScriptStackElement.classTSU6	M@BZ((V$[	-@	-mm0@kP;c%,uƙg_|g33:;>%ʘs;?W H"	`^+Be,$1IuU!ຂ7LSp[Wx_FMƚth0ӱWoHV%VЭ1gzeǴueH%KwKumڻԝtʏIZmw[[F⋦mKj!!l3P-uO߲<NuVs	ZiZSӲHi=TT՛޴a(a8_xYaΖѾ]6j6U'x/EY)Ú?O9ȑi̋E';]wqQTTú	5!&:Y̨(Ȯ&twRqWؔ<E A!OZN#e;߶>⸱h5LTV|1͍}KGcϯ|]=:}LϺōePxQ) 1(1#8팘908c
),ƨ>"'&e
`DdS4E=B,+y@x˅y#`CkE 2! ߀oN{)HBy0*]Ѳ$?!BI|.q:*ߐӲ)?4J.0`S4 c@A3%MJcL̆}fK-;qfqP`}
Wì2+وX!fU-;lgCl`M:!N=DX@{$Nss5>TW't7InajHCz iyC_B<(hA׼^mjAPc#C5;,7#GzO#Hs2.zN;ھPK
     A K    '   org/mozilla/javascript/Scriptable.classTn@=S$nCҖ(>]fV)i@g0;c$+`ǂwFUx1g̹ws<3acׄ<)wO:G3;!|;8l1|!C>+}ՓI2Zg8Q%CKtz -*5>T]0[0oyg٬&cO^Ne^-E($i "E(YUI,cyLm*Ֆ$KXӼՕOD${^F0Uoj xϳP0A-YBkB{P,[&rTț:UjQ 7,.hHt@$}EfY@-SWW58j(3l^iΰx1	Kd'Q1}3l]_N
°¡R*@hb>5\ϱ4.F+WqS-ָ뻸>P>
ZobU<#ߦ:*cyƲ>hrPK
     A M $    ;   org/mozilla/javascript/ScriptableObject$KeyComparator.classRn1=I2IЄ$i*FE 	B
E"%b+L~"PO דA$>^ \F#%8,w`PJx
Jw
HQCx=Yf7-h.'jʗNS{Qd[$+HI0W!ߔ*t*CIWk:h}<O[Fn=#u/[o:N+QBf.9)U,a܎KփMJ/Iro9z#g[턩[@}ue|b3GU?mdQDÕj!}as*gx?'y=pGH,=/;l E_B8!_m
f:AE\BF^{vSiΘ Zgbdr1mB'XXa:VLvv,?_`D_a*?.
f\l@5(ؖgcD]&ig1Gȉ2#PK
     A ߸/U  c  -   org/mozilla/javascript/ScriptableObject.class}	`T̛m	,0YTa	H@8$DI@uݺb p)ԪOVkmX޼yIfB-{9{ι޼Ó 8>]9SW2+^Ai4&6_JTi=K]i3YYk@΀]YOtGd*ʏ
(P0yt9`]@wRU"\L.(zx)	̧Tg)Wr%=^E6kk}:z3]ޫܠܨ+7y	[(QnTaWn	ts]'(wy{^j>v?]&<H_e3UmǇuf(twGyRW0`uӀÓtIP~E.ۭ+{8leK&<Cwsʯn/]y{<ʋU^/WtUzx.ӕ}Ш^W0XTyӣHGɋL~.op";ܥk(JG=O`?G7cz;=~BP>U(]E5]ޣt`EEMoߣ|QQx]9 ryׅB.Gh>حI.<<{8
u@..Rt4N3{D&fyD G EzDӗ|C.b{-Qb Adb=atGp(7#|>ר`]6>xX'*\GfQ2#rEѺ8ր?x9+(zX8#QoR=bG=$-d'b.𩘂R!S[32.Rm(eJo鲀.'JHe.c,ũ#z2.tXgxDVzDGzD#VyjFug,QOzH<EGDujBk
NZOÞAII^Ʊ-Υˏ}<q>].Ņ+bv	5r)19 ]Ar%IUjzw
jqG\?r54.7fܢ[
6u*)鲑FݺA).]kJ=Lq"& lm3~#PF&GQClT嗆xBl3DNN0ēb']~E.ji7ˉ7ODg<<Ss.lا
vRt"9S-֦fEccej}8DG#-uS"-ѺXkjSc5zJ-[y:}ނEXBxN<m~jzfW.GϜw&WN\D/ŕ*&ϭX:}ڊ+'wR546o_yfM-G64m<36iknY%+#d`W#U5Mzu^0pR!sZ#-i0Pb[Z,MG6ԅ[#H괹Tgd[k]Hl	yV7[Z"uXn\=o&uQj1ZG,EE"H-1s.\bʙf1uiG@#EZ4"9ӫ%L^8y]hh<Q#чhCHZZQĢ)D.se[]}-lZ"%	hlLEr:Ԧq9]ְ2Ҳ(,T!cjd	'P֖mjQMzT"XЂ"ZTt)uM>FV!KZZ-$SZ5gHA5Pj'+ѳjMK*6FJz!fakkERU50(LV.m՜@)"l*!X^Gy醏#HBp
ҸZ2܀PքN',pF	ǟ-UkE}5Fӓh}ʦbA80,T9*2$'T1{o6"~SdJXinCg=z$Qקn&ĐH}8T`ᚦB$$PKX
~:ځ0
$!j()(nmwUVin4 !rJl'766̓x}VJ+mًԪ,Q>c!%i lCsc8WV@̌y5J&fN
ꪜ;հd'Dn5[ێm}Qqttꞝs$pqliBm5$e4&&^uĵqiQH0\[;74
,#dnS6R;LN)j}wb5Y CG+MMAiRXFnuBp%EIJQdw27ҸuMw4bVR,yk]'3ڥڰeY`q_DаDEmΈe&Kmr},"m
uKOB~V]#>G
R]|,k[YORԣYzYG	_kEM8AhuZԻ	dJe.*1I/2$PgS'+8
M#gա{#QFO$!jeA3{tZSްTne"ϩ4	_/7xAE}hsQC6M؝pT*g+GU68p]1Km7W4+I8A)`J8qM|_2XI!Yn&M_zᏣ 3rm4e	f)S5dbY d45^ +DΩbԁ;iw	|cRA!Lx##V6ᇆs,#%G
H
GנB3AsKS4~8K)AR]3YSwy	D,UTWY
K(fjޚx ht6eSW٘.Iiٮcˣ2v^`ɂ-N
iRf+-!]L:wX[ܗ5Yj=cBK%wW:yxE絺xU.Z)5W9}
ȹZ{$Ejc^XTMjT!!}-G'lHy8 ]`O
JtbFͳU첄ت$IM&8ё,oj]_T_<"2xzLuDooS.ἙAK/Q2w?61} b AӉ&&2F9Rwt9ƞyG#0VGV-
.cqǾs
+kn+sֲ+k,`8E2+-}WV	MũԚ8zЬ/:AI`%}>n_$
cFS:o葖
TiF̢&˓ǎLi:$$!(c_^gRd0iYb،RGƞJ_7@uwFwQ"O?<=u$]uȁHߎ;,	Ra-M;ҭY 5m-"Bz{:MFΈ_"X2_EcZ˂/ͽ<Di`5D8~ҔKQƂ^[Ki'YROX'3a],fp*!#nZҴelDL!RgM<%}.Ihl
>=śE-mb%ʵhjw;9<	Q8htpX L{؏ax&g2Ri/+Bi+HL/:'ij\Unq$>fGJ&-?4FZjo#(e-Y86a/l4 O<"ݪ wN-9cQwW;$3AIdP	̵^ЧwC&Z(i(o;-n$wKD:E
]N'Ms#k#E+C
&*܂[4.lP6&5
WSHC.^Ņ=z%RV6ƒHeF)syr}ͺtSkD[{Ϳp=̺rEI;;Pѷ%a6\`1:	&jΎ㵏IEBRfUG>h
h-ѪQKG>Yu+Qkzw1G86׈<Փa2bbܞ#$~EbpVQXKM>	JUe$5U4Rb#Zɷ2" Gh^C^NT:{ }Ө}WWfDIh;$,_ˑ{0I7?,UECs}4~tH/ghMK:
lzzQf6%2YҒQ^mqk,|t^sK2N, .MhzvmeStEQ?	Tgx	n5٠緵"pTfY[-]mm[hCz)ܣo]	a/|;yhH|#mX_mN%vc
4My&
]ױ+jX<5r&2#н?eM>v$%+íukR&⏦xKYo/L~dxT^0AE=Et'F1&| 0NpS/>`0*I)%(UUPGv`Ovɮg?3uxQT-LvY3JS=dO?LT&+St)_OJ| xkǡ.1ſĿQ't:d\,PfDB΅M
W讍[B'2;LS|e2-[']bgٻ& >`s}¾72KlSv$21̹h	LqH
e
Mu֗כ*S9*äeCcCbc	]_ 2brMՎ&ߪzMiTM!SM@$UcI#񗺚CKM3y20SM(I>L%djx|fY8L5j6N6vQbL"&Pe[k<2\SSM@o4sLEE<^k읦:@-oMu TMua5.Ô:KZ`jT]j7!TnY]FS-ULţw'FHeǨLu4]U39~qU4S)h
lL;N;R*yrft;>ʻ'2SEzL/u2Jԉ>e5`H4	p+Wi]2ٝ&cJy'-''18o]ɠObom-Nb&~N3ȭmk
eT2+3)T"@ԲRʢ!@|-'Pm-\)lFjյ)2
\2SN3č477!3gjzN|uM*Aq>P!}QĶ,SPgSΣ7:4pW'B슺KgrNUepJP[r|;{HWdQў-V-6ե䷕nߖl
`-|hލF5#($~m׻Qw.depȴnoˏXU`1	>M=&G|/]gPЫgc+3L5^4S]֘ɿ_SMG'+_[3|,?T#*,&Ժ6.۴)6jk<ʴ-~gpx*5\,sWո֦VnW*_*њq%05#C\ Ti
W1[.0e'n,B#S
AHP(&ָk絩QtLS=KEmPqh@emkٽx=*\pWdkBc϶	*uRfkşMu]ΡzuH=WqT{Lc{!|tjxV]%m%<@kdtz^һ7Me,2=dT5boM?*}]ƙl{,t4Jy%شz)/0cipLoMvUo nXJ)c{OM
de^^e{]fɱS^MtR8L?`Lgz*Cv[Wo4՛ԛuSɯcߕUEW7mv3%ĕ)(+3L%Ltϻ~]()/a'=nAfp|CCT?6X̬lx]3
ꃻuH\E{Z5kjdE21U:
d3⟦45GXg.6	3Rw4L(pqhtό&i
ȅw*'u4AScWd{yuj1v&=ӤG}
,.Zr}rc{{}SC=q`fvQ-:䝊9Ȕ4`A,
4L,20ք3".pn]b19XClwr3/>mK@kaz}ArIZCGȔvh"N$x+p]d'e/weZjsbapկ/gEXwk-XMcU
"t|a0RiXY[>,lcSSZLGBdl)=HWҗs
{8t^:Όm ]gG`N=S_>!ޜ;7.]3;ԩ쮊~O%zBZfs47B46>A"}]Oױ{#5k!;})Dg4%2ji{>(Nfs-\<٭m*[,nnR`O0maZ]Ͱ"@RD[^90d\M]T`r):9-7AWgL[5ш=+}KzcjTO'AxQ_rϾ2&UEYh_jU*.g@ɽVJ<L1>+lc\>>uV=%B*qChxrPҸh#="/D9ʂHTD#^d
y0YtIYkQÄk$tD3aC.ԓM7j∣Zy6K%BNf
jSiS&
l_kbZ*DT*?@FHJ.ڭR	tnӺˣL<~;:T
UBmɘuoKE˦Z_M-zJmΰ2@>3'Ü,uGu>^̈G|ۓ'jBR)3
CHrh|4?Lt1CPޛ	jڰ=UFL&Z4`4_"68Z֗4֠7~6m(EjZucߐ$_Y"VwkX-5 R'o73z@MPܦ$gӱN\*;6wWQpR΢Qmc!"ϖ'0(%l0yh5Q2nD#{qdv3#L3!J2&(`fG|iuѮ,4zNLhy"W.SFΓ.?kM֡2u'LV5Mv2cE+N{qkrзnMp	b,ek	7kSD喼H]	VdЕZ5QbϮDZ"z
3E}1;7	~=]^-7'".,.AJ
gl ccc/ ]<_?q=_?u=_W\W5kugz{e&ߛ;İ|,nw\JwrЊ_
&ݏ_s@
wJeiqb|ҭ&f#} .BJ@\A|`_Hn3{iJw[k將#TRf`=:}Z~;<qF&J'FS{4/C8ӫ6RE^SgB=cqg(:{1mba!0_dxXns/=mBnCNH퐶;U$X&0fVu9,YS
uNv qڦWwB(N ;;!:w;dm	ڭz;ȅ;]f;e_=xvnndA<ڎ6eCmX7!B*܋͚i^|>YCP6(lF~Bp5	 a<%%[l3xgɖP rm?Idc5NZ_	T85yiVܜ%eQJ6xd' Q]]t^`/%K*ILJ{!;~w̳88oboSlR.^PstyIWث{q4TYaҒ}|sK8M8Dϱu{)ސxixH0VBD2T!pd!@ʫ0ip<P>x.P@F?Y*j4~OBO??x9LpPⱒw%%; $Bfq
6.t8px:Fhִ8=lTF&+,~Np3Cq)VP7^RgRU+UpSèݏX^QWFR>hٱ8N1l,NIl
e`1np
+\A>{zMA	Jדs0w!4Ah#%/66s1rL|Rʊ--CU5;&{@fy6d= Fkr]	!΍	!7'lъfQIEHވ0+s_N<'P$ ھ)"E.C	ZǣU1xmoU'@{B|KJp}=MuR*կbCYYIAId "mt~jUق
m<]=#[Q!h](:((HJh
>@͚-g"lsHw[Մ49^~D߬zc6ޣ
x$I1e[mTٓ*.耓mx04;aҥ$hah2Խ=IoM~>f=
9't]pZ4,8`}VL|ae7T$ e_J
,VW8@Vw8R3͙F9gXkehإ6AذLp͉QÆs 6ؼ[
t,:yҿK.&2TOtv(BZP{fCJP3M	3vYRT;`&hUC͖xJU@6?۲M4; ap02NW6	FU&o
]MUT۠*W| ҭП
0`&y1,%p/5Z1~<\n6>	>v)Y'^!]q;p"`&*n]t!o92".稜|ݎ<j8CrZ~2bA 4; Bz~>@VQJ~e	)RV*zʊg5ƶRjqi,u`x1ޟ jdR`0_%tWx~$,q@*UH[w'!0IM2,G#u7:Y眺[lCOǿR-Vj1Լj^P".Mc2?NR{!-(:`I{@3<%&YL;w05
KzDҹǎq:dpd8\꠺5Z 4neB$_Rp	KQ
.bS8_0_Z8_';Ѡp/7v]tv5qSF(h$ZP$)@A8  Ry͡lJzg"\̐y	=vqE#9.C<
]n Og7ۡ1t=>lv(+ Ƃ^<gٕٕɅ2vJ|^+BP$^TBA,A#zfAglϹHyPFmeNHAwD^HH^bD
#
"a6Q4م4A"QV=';cHҋ|B@7Cb8MzisN*x<ebzt?5@FA,
?i.f_KST;ae,6[yA$5BC8S*RN!n`O3
4C.AlM=A܎e<[/AzcWFSut{ήXG)4FT**+W<RL%
ʕa	,8U	rZ%)p*zTC@RFJ1r:PbpεNV¯,SE@'/!gxKe?Z<Fο)C^T^PhT],sI8O2;@m8g9$Bu*(GRy21TT*,:kmKxyLDCUP'cvZc{s;
 6v6i$ie44kA+aM!OPļ!E鄵K'V(ube^^m$қfP\R'$dfOd$lylݣYy7VT4'NXG֋4~9gǑHC?(po[&Id Pr'Z0\\,\tixqgJϔfIՓx7]<t/߳@7P:Eή12FeP
ItwyRL{]]$UF?< ^w2xw0^	C&ujjVrdr#aA.]B5[jF`r,Z\Tz?)WjT\x1ހ7
z;`vmD c{+C&|S:lAD.g8W=OÕ0$WvU;p"B܇=
:v(ߟua`	7IB<%|`J'Hpo[=h쀛9o)o-7)Ѥ	wъ]NY$"M0ջ-
'!?eэk' Y;k'UC`FZł;>a3BA=]Y'<P6gnP1ʘ~~{` otyN0'S&nsP&˃AvD//
PڒSw= *@E-a29MlW0>~D(}Am(>sYy^0ǿjGEm)aaxm:?*"`>8	qKy&[ҋ|N/X8/4<L
a	fU^rXy`A<N,j #/bĒ`$"~ Tm6.*x	k{-cp2dԀ@! Lfh2N2 8$\wE 5+_a_]ҏm:vп
5[3 _zʑ#(dW{vSGaT)_@%|ct߰Z2{NZ=~<~r`,{Axa>&K~
qtg9"lV&leE#rQV,":15a\1]*UbE	M{(Ǳb)n1=+&}D8^Lb{b*ƾ3ؿLv@⪨ঘ>JcD%)Ţ&)Gb?O,׉fq:LO0)V_Q˿kD?$ThTER V
E2XDRѪmTV/)%"+Mb"~)󕟊ŅJHW\lW*O5ʛZ]qOqr@ @$͢ER%6	61G)
qh6DB\%6-	iYK<y[lI)-~%~{hƩ2:Cӹvk%s!;q|!lzUhO*[S^pSX;
Pr52@́,~
Z|'FP)dw%TU)Oٻ
|%/ˡ@yOï%0W]f/G}顲ww顉0_+b4hNƆ*oUEge|5a칗Ey~5Ne?ne
?L2KjSyޥ1Rě4~V@?_~e|of<wY j͗Vō6kUʷ"E-6-И{mV8Ydt
p!19G07:?c$e]Fcdu+}/+5Z?@L&IxoB+gX) %+7=p FC8r VXg: Dyt۶@*(lyAQ--w |M}Dƅ%d|3ŋsƾl "dudD.Ih_
fGN(3\м]eԢ_@
~4v[/i{#~
Yb/3GxTe_L1QRA\섍5:;Bz 	{(|L<Ku¯;`o1^U<_"eUuz:""&L-{Qag@z2/_JvιԷ^!)/֭ETl)y-R ^Y5'~+ ~k/7`3@+Fg(n(U[PYRMlsN99ipw)<7 ΊϢ|2I '% ̔w~R'm*bxcT^0i-%VVYg;-0,F)~?	v,ᶐ*K-j :/>}r,*֧Pa3.*JKT6Aұ;5l|p;໇w`*K\h~ )#Hl1C">E~pֈ/l+ŷp>=ڎa8ZtyJF@U{J9+vTߓBs683`H[_bg2z
0UWJ8v5v;R 3mv;^ͲW{C8f^ zL,HQfĢvdT;J [yo^FVՁ lupV枭zNk)tRY+'.i⒂.2H:U㡟:c]K\XrBB~C2@ r݆MެF<b;ta GC%xڸ3R)PBuhR}>#}8Y	*O3E1tޠPDڝ08$s6U))}nN|ۓ!K]*g:27[)o5YԌ@JzȎKYp#i'7S8WjZDPE	q8-Jj^;YE(%=zP
F1/t##;z`b򉑧k+n`(kP~ O=g1j=Q`S&6Cz6FVm
֪k|uܠ#)l썎(=.ZҦ5`=Z#LЀV;j9x8Qy.eB-.Th}>k6s&9>f+KJ{\
/-9U޳\	ᶝgxb~%{c=llTA+b!-D;M0
qP@.ʘ}#ֽ!#&+u:=a8<{cCEB<pQ>
Oiur/uaI>>Q3uDz#
dRjTxz'v/鱿YFл>:,~i5>s~PTG&ěq,=-0R}FAñRꓰ\	+էE
^>O}.RKru/\;՗7I}Wϩ+{P}>W _o~/p@0C}e@
V?bǪr$6UP?c/|KV6[v]~nR!ghBߣ4ugm`;Va*,5<l]_Ae
.k\;+]س1wۭHC(45yCa{x'߁6?w:kSdV]6Nu&VVĄK5)Č A
p|˿ǩB1e
B	
eKKfNA?j_l^6-QPÕ"@PA(*)
;s;rO\/QQKTtХJP1ա;+YD84
Zk0\ˀ2i0M0_ˆFqTp4v!#t4S5N.UE4w ~tZk=#|26Ngm#e(ruswѕϑǰ~k[YJ!s_KȌ[r6Tm0hC\\``*g[Q-ztTՖ 륒#HAOb}c47vnJ *Qd_ _0Y-oQ}W	x{ATz(]ߏ1(<	c)t-uNӍ:FӊҬR˴>e?2Q6aд	Kה`J`Hru,%,l!ANA6yKA_^p
}ЖKyGJ9>j	0?cAюM;92 Z9k`6	N&m*,ЦJm:͂fmisbm\͇۴pNǵS)זëiGtH;>om%Z*f6TchgY$|UktlJMڋAoNQpAoQS)ݫ05C8x?xWPL&}ŘlI1kI1޽*s'vz/IlԚ:akRo7wxEGuS9DBADdxA
ǥ8h*el.R2ɭwQt 9˹=e{˾f^;ٮ)KJ4JcJcleƻՕlc
e1*''ayP`v%Юv
5oYڍ;,y)X¤K:JK+.&؉u!ԋ3Y5|vS)p@,϶6*>EjkyJɦCZLN.㶲*Pj(
rg;f2]A;2C͢-8o܊sF;۠HN)ڝ8e=.uܡr)tX
1"8N
q,R$
|k'e&ɤK% @ٔLaX7K:,T7Lfs*+BwRw!RTcTtL\xI7"tSBV+kTm3YH@m%!Kq#Čn_E^vd.ݔ8bLL~sL<A dk`0RPanEh<
uVhs_O'&m܍l$<׵]0=J9TX<*l'w*UOY먭9RY1yT[a#{رh'^e:YgLh~_Y'?<;NJAxI邗	:ކV#*nd`f[,U`*[P\uol[;YnC+} ڇi}#3}K/Z	1`$ڱ0(L?4XA#\5HEُ?`۾쥅5%r0ڪ)P*Ye<ohyJȘ"VYDP41EX"To
ߡҴP;EȋctutttT^XJOse^qz9aOcsk&/N(_+iR ^,|
CW;J[sBHXFJFD`$凝$e
"D_~؃[:dV%(V6B*M+I^sSu(tAS,|
d|;XrK_nh4uu?/sƨ,̈́Ͱ=a>92q8s%~tZ	4bӅ8%cCl nLDNSVi.q!@y3N5So9Us]UV,һr3 ;SU-J%uyeR^Lri,1}hb4xNqJSa`9X˃2H]yJS0` ZX/ J^'W:Vr+`<:#=((?XZCh]J ؖ!ҮۃGtaA+
O
I 1!qbWCH0=ӒHͰجKBU4ޞb+"i1DV%Hs@&;XBo*Z*?{JiVKL_)+_U0DG+_B~LЯG]~*-UR Eocww;[01'Ҫ V9)C&' s0b+Ih`n>Zd+WȐ:*SⵗVAx|p=\Yl6'=ܽ!$[%цBsrN!Dߊ~As 1^nW`IoqeV fM)=	ʑ&+ml$*!9F	=ݛmlz@	=
`aT4[-ihof	SȂ]H=P?gakh*R"Kp2迅6=/_u0PI&~4#Da*tʵB?+i`ܤH"R懒"dI=x=2"M1ʗ!6z#ǊQz~';2/2'>!YZP9_]pGM&i9d9+P<mPbn慊K,F]K15оCZ5p_8h}>~q@;۽PhoKA?_WnD0f<czpT£ ՅPǡ36p8\{j`( qCGUtq</z=yy!S i.|;IWL%qMm=ʍi?SR ?gh󌁀g,{NBϸ$|p>>=hXl;2<a%p>$4@ec+đMHrg{sC4)Nex|I	!e8+ Sv9ȠDw"_:)q`B4"c!
=m0ݳѥ9+퉂3g8ޓyLRnJha~Ia=)#bR2J$	^vs(5P2	l9̻.RF@.P\4aIϑwG.	vvmgh7i_!69)?BDĞMCA$$D2 R]!2R3'>O">;_}}vOCB\>^>~I!!Gh+ƫkȟ%OL?8>cg$<_Gl)9ϰ
-E8][88
IC;B:GsvRgő!Đ!2y||Wd,L26MyYW9ju[hyCMtE}H_s7N6xW3Ydl;_R;X"+?O]>m:tc^tsәѢ;)<^
Ҽ:dx5 Mboy3`c0ΛPUX+P͇Fo{B;.v\s![
X
%-ʦt㴛>6((lJE\-)=C{W*AhG+˃9JH==2;]%̘@ъ"^j`*WkTCATnhvҟw<	Ȇ!=	Y0yg!*Xoė(n$c12PeɗnuC);hX{ORv;: 4/6ۥuT"e֡OJE{OtB筂<"u.fIP!9!"><"""KerD$Ld7mDs'C\*{B7(3LpI7 (zlTsl+□͠z%'g$[o6mALp2Fv{0d[d1"(3d[VKw]^]bT> .Ef
Pҙ2yo'!'pzB`r2۠Q>GfNz;ncKi/Qޟ#w"hxFyktzȑč֛ݤde
l揔Pq~)-Q,`tvSRRYR)[CBoړՕR*NFQb[@0
h)|)IkSڹ|Ū4T}_P`bҀoNv(1$*ͧPiާa}z
K{ayz_󼿁/åW*kpu
Iȑt8>1j	9gGmv(١f
oQ6+Z$ʏ^2&;SoLWf،ٍ)qvFHcNVtENXmu%&2ЅC=>,Aȝb9Ez:&c5gw@O 42A@MG %oibŮ<ά]TB
ph`|g09~W5,~gxFƷƻڼù  FpqC'I-fK
n3qsw. 5r1w90v]L.f?; D>ߓFWf)vlXb;U.2iTIn30 AaB|4)E9]*sTfw@[6~o
2و02$³mQ$QL4 <iK~01̂#5@-~f(\2Nog>Kt"o}M UQj@~Tΰr?§ӴcT;Z<VŔkΎ{6\{q(oԠ	if#TPSwrÂrF@AX)Aݓ *0Hz{'7Y+	M.ٚ,gXl)PKw!Ի[JYZ+*AcNHwҙ9qVjILZFdgAF!a1dc(1<cl`QR	w.c4<b411'1ŘļnLe6ʌ
6Ƙ+VXkp(P#4,GDITen^6,1o2"tac WƋ 7ac;(-1KF9x!;N~Z=7G˿ѕ4y`ʏ@ϕBj.f:"NE(#(3	TmΡ;[b2Vo:+4CPф2&-)Ucd0* XTiT,ipq:,1V8j&RTI`
Q,R#CM8M2P SCH4S;SbKS0Rbk_݉|O
(AΔKB2iv<nX=caBxqӣ(8rK&8Crz4JVbP,#=; Snh؅S Ӕm5bYvza[KeotR$bIYv`CSH6B9nV2r
f\Y*ӑaxo@^rPƴE[kQ)$7$Ýkw9ԹbU	vOdN:1hfF)b2|bMVl/g}DF_mhZ
1r.g"X3P,(&Y-
_.e-\⁏\mAmzP!^`1r3qMd5!k
C<49І-x&h
D`b)9^IzBak#2oc,{7cYv+-͌ec)ra0 YAve`?49
:ΜLbde -b :As>iI_7l3`sc	_187@1e)g <Hq`eapcee`el PK
     A     +   org/mozilla/javascript/SecureCaller$1.classS[kA=n6VzijCJA!^ />Mv͔NW)x|$11w3sϏ YCC,F`# wW
;0+#>:pnWji֚CJ'OrWjzxpCn[O;CRka:v77Y|JmS$FqO$C#:\)a	N5jsg
̛H,k=ina>a)\KiOFH'Vzwb|h/KӀ|::{% O܍pT#>tN,3l7<q.u9s+ۋHqrm0S)y/妓c}VL	$nSwh*#%u#
RBcU+X;J}ND_Q'K
ʤ.Vm}gSI}}*ּ{
XЈ=տPK
     A uE/  U	  +   org/mozilla/javascript/SecureCaller$2.classVSU-PւP*TZb1Vl.aal6X;㻛 !dL&qwsn~0'y
QܓÂkr"!*5h⡜?	S9hD|"%OHkX#U|GM(S7RƁ
'H2X7'2n3
(̒g	y˱b-$>= $40e9"]c&%rM^7<KĐc+#@v<zľeFB+UT$

ZDk[ɌmTPct-i+j;=_ }B5=L銩`l(֛3_K0VB cNiQ-4E\	]XyXZcHngXȋ܉ESGZZZog$옶[wܜX&u-g@xl**`=TƯ_@[LȊ@Y9ӱkѱKA_}TdBT0VSV̮(k]Y)5u|o]tH1Vu{Lp^8SU6E}w]6X1kD4s8ÍOH*4
L3La߭Xibqtvv.6;cޫDGv>!@D_X^+6o.Qs⮜PoW7b.{d8mn2{;ܷsOz
os$xw8pQE1UAfjg(Set9=TS? ,ɩoL+=#zPF/#Po1)ZT
̚A7ǧTNOa*KӞ#%448JG6\#B`CGNq$:~L4CUP3\Ux3%F_4B?x_
Ⱥo Gqr!mW!ڿPK
     A ,    +   org/mozilla/javascript/SecureCaller$3.classR]KA=Yngj?`7R*B

ŧ찙0DoUA"f3=w>6jVC/B*kʁ22[CеdX)#LN}CMr
ܩ<!dt]ͳLRݳ.O5g©38ZK|&aXs_c)<V*5ܓ!_ߜ:WZ2 ␊v<Vvs>um3eҏlMhD ֣cXkGԦ?-O.ŸV䈚B,ku:Lfٗh{iSdv.jA;#	Rdxxw*Q=uOL91A
ȟ[PK
     A `  |  ?   org/mozilla/javascript/SecureCaller$SecureClassLoaderImpl.classSMo@}8	MMKJܒB4N^ U6)R%6;Z;"qG!f)JTÖ׻of̛jyd00de Cypk<!U1XͰ/V2oîPoy'dĕ)hetDoWk8Ve`Anv0<=]CSr{pB,S#D3l\S>O46YX`P?>LHӪ;XDrM2IեiѮ|=Xūn:rz5&Z괅٩<6x]9T^H6/7Űt:BV"
m0`taWIG
5l
쫱/њ7hL1cӸe,Vq8Ȧ>s8n?;C喬3K2
O1SCwpECЛ$w;kK	etP!mn1t/C~_PK
     A t    )   org/mozilla/javascript/SecureCaller.classXi{S~ǒ=c_=6JlH`":iebBR+6m҄Bi7ML4]43W%c)̜9Ys^> fᔟ
ഁgpFYϩUߗx^&N/Y%~`(Wk
pAEsqZbo!~dO
,T?WoX_*ʯ$~t#1 ɦx8Nvh*.`v%vZ@ce.Ǧ~ǎ$@فM2wY}8|,:x`{8.aw;ܥVsJf}Jx8(BɃn;MbDұҾATt1gyS;WK;G{po$}N:G:b}N$M+N}Zd±O8PREˁ0=lGI%/qSyV F8&͓ݕ>;1Ē-'"vJMC 
+Lr|LG_$2*@y&LQD ht~eԜCi;UU2GӸ[YdiJZ`vq,l
BN8rj/$ޕ{%{N`C~^cD65F;:C.&d@1oL;N*fJ,gJn
hogi6jw7a;%ޗo ^0Dw83%VX#5ZÅc1Ya[T8>2eL\ev~I"q':3%TLab5.!MP>`a:rfDyg5P#EYRLQfBe^uCnMzCX#NE|+>bg,	Lm1߰Dwc|&Ovrxd&MV8]fݣ5/ݓىړfa!FcnLt:B75OբסŎoO']da7Z3`2B=}6㰬i'Zݺ)g8
y򚦒7T
㲔SM>F30
VP5MLL
E	Xonͷ8fuqx]x%wQ98"*TRX)?`yw!NZ]U9s6G5i5q/(8/fYg&6>MA^>lJW0XC_P^'a5eʠA̞!T}j]C-r-cϒ9ٚ`UyV jo`V?
[;ǒaܯ7jz,P4Gch5j*VըoYjyA̹Da+ѽmإg7eFa:tO2lJʵ1(N
zcC(`#B褆*SNqj߁xyxN'{83Ξ)y-X/1>'_6QI_-B>E/z]:mLuc;uμz_ԸiH>,s3Rfuk~Z+Woh!#߯K<)
oJ1=-_B9*n5Ku
Qڣ(]7+6z`E3HQ:'Pr4ԫ+.>sum"`!-2k޲uK-1omsgV TRkwMcwvno
@@vZjQuԶ2	_Fp*=O赏|{Fv9ɋ=KɗYR^b#ʜyBuj?KM(~Q]ya¸w!L8?AN?)řO[HSJr^ÔJdd7<lJ<mM߬Pw
!g8V<"evre udrs.Nԟo((ݫ_΋9;ǀE
+PoXPK
     A 4B}?    1   org/mozilla/javascript/SecurityController$1.classTAoA}K"֢ԢVI515=xZfiv{4&M$FƳ?͖xhAi6}3;{;Ϗ p:*Q
RHFqbEv]r[VG:Oqh%
Eyİ>
&0
4T^"
T0|"|[^K徂=0/M+rMCT<>7w&_v6ې}j>x)t/<uNR[p0IdN1Ʊ3$GԞ.ƥPhj3qe Pǆ2j Wa@[:xmrbȜİV0'~Ü~D~*;~wg3'/haG/)7yOigp޻@$fe2H eRNQ&2FwT.ffV>ևf~CKFq0G,R\xX2;+W3"VRӭ}Lϰ~XXsh=[&F5nci*=/PK
     A  Pta  ^
  /   org/mozilla/javascript/SecurityController.classV]sU~N>J

m-R@	
l7Ke7,x/δd[4	iBsq=' !у[]؇:N㎎=9ܗ_HG7L9`u"#;l
)ϳ	,@GLWԴo5̧f
b8r&|/|׵:	Dgb~v<Fyqns.WӾe3fyu1;ok,]zK{\hZO*.ZW9ݷ
tn6C[i7rnߴDtM0ذ3Ұ|sn]}Y
:S[IycMopE3P`xO)4:LZHE^ȑڼz+xJ`?asN3rlT͌ěPSpj'pUZk'{	-laYr[޶
9٪TjFUuDwS_%/R|'7d[I%jLmfirZ^Vb%pt<6Iؖ[e/tЛq=fn#r~9+,괴38:
;ʋ嗗,(֕!vG'L[j_sN.RY
OWF/5πwP4!Ƥg`l/8+20O
A`7p.e7UT2 pG}|z6ͦ&
FrY)Zc#ojcg}ƕv/v߻8U_ORw1QA׊!3?S0xG8U杄IW "ˊn{]X?A=G,S)W<_HUcBo%v!:XC|6ٱ
EWDQC>̿#I!btǄu
?w7t^'}
qod_"1YaF'{jp<IWb5gNGL$N=&H<V}6Qdw0
fF(p~2I3pYEνBRW1Z oW뿗2kQϡ1tjI-@DИaUj֘LTx,1"(lh]ĥjQe,rf [Cl&x
vU
UTɡ>#$.3RB)DlԒ<WkH&b&V]WBI)kV-JFBTacoU:PK
     A x#*    0   org/mozilla/javascript/SecurityUtilities$1.classRn@=дZhCqxTUTB
P)rrz)|HG!f#$B9sfg?<G@]p]r:`.C}ē9#&\ah}9`XۧOTp%y4)X1g2c^)%Q³L8dd&h72Fj*bXۋ
~;!ѕf	rቖ#X##S?t@In:ԑ8hs>$jK%iF}-硎Y5`hΞaa/+gFNtz!3-EwQLU8İDYfL%B|K<|Cy%\2M\],c,,2<#kg(ߚ'!
~XWTfB<js9zybSPK
     A     0   org/mozilla/javascript/SecurityUtilities$2.classRn@=cHڔr/%1[JU	)\ofu$U Ax(Ĭ(A93gn;
TqE
\lKtl24\uCg3)@q.CmOjizK1C0@j.DrGArui2xoIDd'Q0gR),iO&0KH%iwJ*'fS!x¥޵E~?:%;47YB%-;,ŕSD$yS
wgI(^KR#Om+8:z+I<vmu4<xgUO[c]6C;fwؓ/ܳ\`mk
XegB;]B|K?@+i%\2.X!4;$;Ck_?V_PY$'+{F.oV"ڧPK
     A :m    0   org/mozilla/javascript/SecurityUtilities$3.classSO@~nJ`(*)BB&&CCR˕\;"C~D11=:6E۴ws?ۏO~Xf-ܰG\UnZX`(p6~Sh+0U
F
CT2Ycb(Ԣ0\J<moɷC#[\tɮ'J	]yZ#xKž//DxvuS1TNB(~"#0R#E`\.%p~p?00E$=NO6]E v֍EQSL5ҴRPQ)?b
F;n9q68Xb%/v:
P-S$cgptdP
 8Ҟ jbD04Jㄨ5*f*Jmo5VНLXjb1=<}:dns^v܏ȽU%9mD#KK11ep߃}Az+,V=ǴW0|C}􀔬ٌwtq'2I7w,L,\(
Ta{3B\0mPpٌW0cW1Q*#PK
     A 5    .   org/mozilla/javascript/SecurityUtilities.classUkOP~6V(UAn(( MC%~Pqk#$o2Mv2{y罜ןo,ṊkSpWETCWp_(Urz`YCx`EcK6݌=k:CXK"gdgm*L-߳H:򹪌0RY-EXXW|=geWw/Lo`])_aղ2J]s+jUE	m^\`'`MA5dJNo"D%aRkuʉK.-lOFdׂ8w0VF#|n|ᥠ8RsN5B;2y	C/h#]I`m-JWCfϐa́\s'Dv#
wHtia+o)}0L8:%cή+hsaIkٝq3hYE<cF0p7N/tW6ВWnߤv9z'?0rt&I'Hv}!
0@g"مa\ '	"?	f&0c'/	}0J )au0S
0$yAs3ɧ)-Ty~&?Av'OH[Usl	jHgƿ6f};~cTFA E)G*Cg/PK
     A   ?  !   org/mozilla/javascript/Slot.classWs
i16`vB,R	&0IXKFUwW`46><LfLmto_d29z-n3޻W|4VxaΣv`%hVQ*\x	hp-.0bKq<:PW<?sx>E^l|YoTV`k8^>i8i['#z5#sybCЄ~Aϕuk,wdt(zI*Guw9h3\(.?vcLzXb_2e=.ݢcV\lKS24$= БZ$vvȴZepe]4uJM7]ەi2@4sF@3݂yovU\nb5 ҼUyl*\Ĵ:1j<x^
N,U
J`xv^Nu%&LL̾h+'kC,d1T=>Idoե:,HͻJJnuxS
&%~y$~k0Hqz+PKh!z(+WBB7Rin2.PRbYE£?9>D9Ec䫵pkjHGC2ӐpV
{p >	cي]2MemVyr#*7qL[x[;xW{E=fzk뾚Y.u*i>vğf-"gj_4GVm	k>āC7h׬R,$mXRK9V87Fǰ46[-屚BlǱ}S@~
/r_bEHmqxY=kGxuOo9wqKI-
h#~ïSIav4t~ݤWE-B]ς@>G,$?_R7 Z9sܶEMwTlĝJ1m4R~#s?'iU!{uiDқMo~s_4#&GWa=9@߃SJO$CUVQZݏ]tf(C&-jOFO9P˴+"1QNf96MhY:OK3GTdxJy;AI0C+jC:;x"Z<`ŠQ	*yAN$e;1tA<D {Iю}kU3Qd77|p2DHJi	:%~yZ	ut+\\A[kwrYOz3$X~1,jHr{Ir2l/N%	̅ y(QJLP-"I1DK~b_62TGy,ċI

?V97]xQ$;g:yelYN!"D}9>ٜ8YiLpX
Cw8ABNIB>8&,Zf*GZw+{7u6~NZnܾ[iؠN+YtI߃4%
<E;Gi1NڛSI%zaYe=AViTc
ߡMWۓRcA|ɘh$ѫ#qE=
TJ}ަVM`T> PK
     A bȚ  R  $   org/mozilla/javascript/SlotMap.classN0R( t!Ra+)RC$671+	NR>C!n<!Z>߹?'s9N9ZZK;ʧIVIHRxb%<-4_ȰhKҵZxFe贘0Ji=̴̍i;}=.".TcdpDt/EQ̯_H#ZvEAZP>(ME{UQdWpQc&wCNHp;Xbj{Vq`Cr60 PK
     A   r
  -   org/mozilla/javascript/SlotMapContainer.classUkSW~NK 
(^@HZZb)Cl	Rt.l8t/LiPg:~WG8眬;Br\{;~p>@`>65,DB;4,F!݈v|&@ΖòJ#!U

K%91{jef"=N,M	@d!_thdKV^跦'%{sƶ@Osv6k7F1n<-s@x8o,
&nT)j9j;ǒ]4[͐a0CѮABB	iQZl~LkdT/qEuBUtwTnQgKt W05.'xȯnZw4z[֎U:;oZ":jɵXY#C!7kR<!
YS.ШoȺKCzi&j˖+<UQocGbʠkg	ozpKFj*'Gc&+oKe{(\s[ҬSǎȱ̆*\,3z`WiX#CPr2ִ-mK߲uAzrg(nxtt@!)iZaP%E81u|Qcc7u|	c]B7`tp@uVN-r0
~(>_'dGvq
'I>TNbŧ1⼙3YFx&b])9^	y2(>[.Qƞ#`u \i\s%
vq졮hIR_ yu}c|WhR\Wʌ~Fx
?I/0?23D2\"دh,]{Ci_v> "/=\V4סQJ`,uTkϦ+3C{h
b
3=72ַ55Ι,%v=wC1yk^Ȧxp-uCKBvaHVTToE	bW
F֢~[*@(Uc-Ly*
4~Ci{JxrE`C(#+-%L׼O~α	<	NSTʞ;6ƣp/`-[crؘÖq0A=Sޯ=5iHDK̜t PK
     A b^9    $   org/mozilla/javascript/Sorting.classV[sSUvs.IB8HHR(V)Eni	Ҥ&)SGq#<:G~{42g{}ߺO ĕ ڑ	xV»R:-3&=!0YoCO2&	33bL``\]-CUu\ؚT=ӕRf߰k3S6v	N٩u+@{)NNOT
J.MUG]VhZ,wurI,u/dƞ].VٺSLU^I-^Â>g6m*e5-h)lk&]눱)zqM@g"HJ}rdgv=x+wꭩoDe@)ھ/ԯ
Wԡ;2^W>ܨY&8SG6n^,D)ejJ1WbLMALڴ]*jߟ+eVf°#9^y_JaЉn
.0R8 z
00,xĥ>ex6E
{QNMKF"o[ю2Ctdfhӵ`:,	5sN[9#vl欇oXxF8JF# ؀2 kS+Z[4ʫ;*ϓ;/ClI_>yO	<<H[[ԡv%5Qr}'`4rY#X4YZ>-M˧
ˈCמe"|aδ+Rm,-,={[KO˚ry//%vra?HԽtxtWUIcwܽIdH@(ibNJ{((I7{Ӄc
ak'b}bX粲[S^(tCNH>y]cuH0y6$$$LH«B"ɽW^.C2!KX>ڒxDc^,`wBɋ
,]DR#WҩObSt Cqy0iЭԠ}ă3QhQOICM`GXM@oCŝb!֓58&cl21׮-y*1 dK-'Ky+c5˴`,L)>Fpa	5L`kp1q8ӘG0<*[HR/6pyTyTyTyTιTCu0hwQIΪ7=Dt'%N&zM	a_Ȝh4t#&U9'h'b{+-oZ9N0W 
3Dq-v$J8?GWMtѺ!/jŦPWmtKX'zJZYoiJ#.\.rEVo,"XӪS

n+Y J1e`B?>f	We˼-^{2fK dx֨*ߕ̘oʌ0O%D8zL`ǅ~woߏ`[Dhy&O[PK
     A W&[    '   org/mozilla/javascript/SpecialRef.classW[wWded;DI8:4;؎*udWvLܴU؞T8!hM[Z(iqCd	
ւGxbe({Ɗ²fg}9G/
`7|"^~ŠC@OIR>r#+p?2>z0C%<e/Nz0Nypڇux_y|	3k^<Y/άo0z/y@yF54%٫MOmz:c*iWIfU[& ww"-hg4L'EZ0ut2S-pC)C7S)-T+J&ah#fcRjQVR`Ƥj6
-=D"ZZ3WU6}uhi5MFI=AR(O4.sX,Aϟ0TTmݤIyaD\MEZHO/G@RH5p떡U3L%!eJpZu޽du93}\ݶ:i,;j1 eӦR{FNӺ	T۪-7א&S^3b$Vpt悐sTEİ¨\:Ꮡ5n=k$v]v
P~"^|Q>#	*xMw]x|M='d|l^/.S5m[nI&!%beS4>PG&M9|E1	¡MoMޖC#6s^S-u?1jH%ZOU.ؾde\OX=AVe.
x{2>TLE	jX_O2t,BǈȸIeWpY`"ˇ2/
͆WEFgiDIr42l-p!SM1Un.iY;<yY%I
6nyGmNGFࣦ6²~.CYl*h+vx,vYeVwPF'Apkv3sqsl@-*Cэ9h[ j+RޣP0o9Z&-#pTP;HeVR5\q
N%Rκu1jUzEVv"]=-p{$k唜{ɫY79[>yN)#%Pyi
tҕCzKt/hpO~ƻ
ƻi`t<[4֛iKAFI]
Gp8+p}lzUX$WU(Z<H`n=Zʷ~خ((m8`[t
ndGhPg
qJ>T
%װ/tL;	{k(VK/$N='7]fg+ewyWCՑ4#M}7GLV1<dÈX112Z{A/4U<RZ::-d%e8?lPr@:y}]I|6UA4Vmj^:5[qVnEIvkk컊3ytLZZs2y^[+S]V3[mP'Ǉ䱇Xn&B%D(U6>E[$$xk\>'vO#0Ê], YkbD1]t@
[⏬:֍cS))lX᯸Iq&y̢$UT$C7ٗlq 4b	wր$&HQEbwۊ$|J[ma$Kj&^y\16!\~v(!Q&lP%Q8'F+1Ga Pq'_J+4]8pB`
cDNxF܇gŃxNDqFx/Xzvh:L}%S3:&Ϛ!]6oEs8$!QܻbD:-Ae_(*gpE},V/q~?11JI=\@yA^t]'jWZA3Vۦ\	2]tj
2t/V=PK
     A >{Q  d  '   org/mozilla/javascript/StackStyle.classROP=o֮t2MHF@\RYbqjŮ5]G񏒑he4k{vz=ܷ JH@1%➌1P0.S+Kp\@Ǉ"J5ZŶmxóE׍6+0ᯗ>CA\}G}1^%?aXvW&CJnޡ޴H^3U]uE͞*Ӫkv],
6y(ߴbjNKhVGJ<OH6zn{s[t]0-n37[LRP#J*ź9+GZA,H31lסB i%T_U+kcܱin ̄
q*$p
`!6OsD?cN1$ōHUN_;#7)*UA"WXC^@\^=C"u䂚;[xa#
oi1zB@Fh< );h!05b=$FG{q
v
&7CNc)Hi	 PK
     A g   t   #   org/mozilla/javascript/Symbol.class;o>vvVv6FҢT̜TFܤĲDFt̜D}PqrQfA>D# HL?'1/]?)+5h#020I& PK
     A }Uo]    &   org/mozilla/javascript/SymbolKey.classV[WWrbRM ŻXkFCfF*p'83`o?о-vյ\S{_Sɀfﳯg N؆L܊b&b㶊(Ġ}C|b.FFw%S1/bA WE%T+*5U=eDjtzܵ=]r	
NY՟avΣѿPf2Eǲ[NVm[f^ɵj~X;M:Fa䜙T5
1hS)cNf*(֍t>NsFIMƳ$n#q13] U(Ӻϐ*<2S䲘)dSGȤB6
YTVHEUY+ʊ\6Z2bU-}2ZUWky[sJ@Fm@-R+s?'v;UO_g%/c;t:Ϋ*ҽiVRP}蕒GQn5"j+x;O5|I+8-9[˼Qi|
zdnؤ!APX>w"w4$q6J7YY[B9x➆t
pFh6xtJ7j.gMixE^ά4{5kU,QB
K.4gDB{#W\RW-_`Wrj"9*lLh:Cz4r|1jdz>ZUW6wiL@ x."VvDxjW$ZG8AA0-8>1<ĨH
Lg< /x1K^pLbLIJ5N3(C?ܛ
nOWz0L3)hy."ǥ!pPیFSA5C!C!5{Wy)1Ze	:(FEIR_=Y0n&ED:I7FdzBwDOC}:v	)Agb:v?̣%=T ~VUou ܟ9B]:%#y{%|=J_>H%?$aɏH/QɏI~\ߔSyJQ蠵{iѿ(=^ؤ]?[  PK
     A Yl     -   org/mozilla/javascript/SymbolScriptable.class;o>~v^v>FF0
t̜DĲ̂ܤk`*1)'Z$\b
4>#GM+(:6
aU3-%5'$A \Eɩn9@	z MxA(gd@w## =d022iv0T
$x PK
     A s^    )   org/mozilla/javascript/Synchronizer.classSNQ]遶M.B)[%1>MI,3t*?~h>xM||1:
mCg:k}w`>f5	LEFb2$3;v(йo=g+%mseѱM?gcPdn1nkg
@tms|s}*Zd4sK#uIp/=	HsC
PXh=H .Q	<0"y̒)Tn)ŢV]5N⦺-ۡe?kh$n[rSD˶_lgU{4S
6$Z#!W* Y%хn:e]K9nթSu)8y+YV%<w	VwȞj-rJ8FcH2Xz-+Fuv&ΨRt:PXXYc'4V:?zkYOkЁJh
"E6M׈|E\D'͔	̏0N8cYdl"3BHž\)dUb]{CDvX1ϝMx}
\BJeR
#CGWK~vL3;
uEbzhW"&1a@HTx7PK
     A y    7   org/mozilla/javascript/ThreadSafeSlotMapContainer.classV]W#4
/cbLbGq 8؍Ix4~Iڇ5ȋ$fg60R(v̽s>gs5Q!,AKitᖬBv>RKe``?D뮬d([#{v_W%"]_dbנ}
Csu+W7/UϳK~Nܢo'g5*rS]A!9Љ4=U.眒^l{DYC+-Yusd.SpzGZ9	5?wmճ¢u^tekm\->4#Ŀc#Zf(WI"@(叾X>MT5o
2]\7vӸ,].3Zܕ{v?;3sEǨ3~9PC}Y6:5PC
 d%%{C^
l0Uc#{~)f@~5\KzvN{FJ(0˒jI(e!Rr|۳'Nz&\gLEgdUTh90bOD
Y,W#}1q_&a@Elɚx&6LL11'኉7[Qŝ;yeΘ칆og&>p۸d̘Ż&q}L
|dc; ;kjqpy#h-١H5):l-Fef,sOc
V~r)L2Uzcz#'6!+@NƎL4kȦ\YR`W.De#j}l=RbhJ -Ro4GJA+|{qQ݂
[{~j R3eC{@
F[С"p4	qC$ϡ?G6RJs?AI gPԦ?OL: F0I8qc]HQp_?|Ny+4ƟbZs)n9E$qzuFn2ha>F[`c4}_7'Qa&պ!(=<38-GG(38AqNp38NX{f(-s,z9Zɮm1Q;:OǍiQq`:$i}%V~;JsL㈻cDvVcUƈRX(t
w40pyMӡ[C\aɆC\o*HhCh	j"]pP&g˔^*,p*C_[TpNxga&aJP F;i(Bg>d^ kqD|Ӑ}?PI*MQDU$i0ES.ݠ%&pm6PbPb288V1z(9	}c?}'gTz#RnpL/,3acWY\ߣY
Twr*"JCLE~HJwt.lI?GO:uF~;uPOzj 	k*dߢ(?럩б&Ht%L]4?r۟t}:b|Q#}Ҩ/k
wzw[8,Οcֽ[
?*^ܭ])g0kJ
?yAr]o|PK
     A &̻w~    .   org/mozilla/javascript/Token$CommentType.classSmOP~.֮tߦlCmAh>t,~0eYZu$DFgbF$<>眞"QHb227
&T\挻
&/*Hq`{23HFau:4>XںZ~1]ː=]xl1mNPhx,73Zb=땗o*Z`0+Ty3ș0<i#bsJ-mu,an9t"wY')8.oR<52MӷyA~5;/7uS];XeHPz=I{v5OBY~[ <[u{5z~zfs, 
:5<Cgͫa%
70InRL!0v\0mG\*憚om[$ΜVaexzb]K'}EKkK\%@~rS?41%D1K ECbL6".W"Fĩ>#WjG,\
HgXB^@ wJ\:n	d	LR3!#**	0* &XDPO+ٔ5>bF3G7dP	014ДC^y:ҲZ/PK
     A ATu  j'  "   org/mozilla/javascript/Token.classՙyxTE{Cְ;}:NhtN lI:	daq7pCETDDQQqq}T&%=yޮ[˩>y,kؚ)Yˢ8KzSZoImi+>'LZ_H+i}#~U%IHr$5$%eIj)XRI$uURwI=%WRI%
4TpI#%4F8I$M4E4I3$͒+)ORْH
I
K*T"iKZ*i*$UJZ)ijI5J(i͒J&i3%'i%],i$]!i%]+i$푴W-I/逤tH=K_IJzX#'$=)iIJz^ҋ^$.
IoJ:*mIHzW>O%}.KI_KV~tL/KARRdH)Es)ZHJ6R,Eݤ!Nz)zIGRbä!E+xIgK1QRLbzXeR,bX"R)ʤX&EBRKQ!ERJ)VHR*)VIQ j)X#ERbuRK E)6fMb3Y-k$k&jIzU._[Sߐi(IT7&mlc+]+语H!XD(
G仿!,!?rK$/P
u y DauMVh ^u:d9xDynံ3ʌa_xs2rHTCsXQGpd	Z
ŵZ[n^Xn^[my0P0Ìzf{8ew@/#Xq6;,,v=f^D]tnĭ
3q{6EPPi(fל͞pC^ Ti셧EXMQX`Sy1]H (+M L3;A6\\p>GawCtb㳃|a}p]-vc5*{ (`8/=h.>;q2vJX`Н8`8Oh<rBL,1%>w2dN$~e1x2Y|Y0
BVۦ_8O%MS/ide\vY$tB830E	w3ó4gaש,{{.H?{kG\ykƀ҈^,KoxFs(,@`nқ/3^9:vx:0Z]+*!,P _P/
OS#Gw^Hp,J9ԘQ)u_`m7FV?3Pv^+Zu_[tk<wuk-B/kAܣn)fהseLeL*3M9nHXyST8hIEdSN*U6b
V6

/q}&gv$2WW\:)qݲ]c750a5:\V^<]_ǃ^+j#uK@4"T:~ZDdXFvwlB[yy~>;-?^<RAg+:IiRoC0@w3z%/lwz,-	|>n3uzngB܀g0"
h:
"p@e:M|yN&4X\E{v!+a\*sb/G=Kpc*騔t)zj2{ƹDp+xogv%`[WaH1u^F^8[krs3ӗn`?GroҜZуܹ іvƛЄiޫ-.(ͨJf=}+WC{/al;0oȭǭ9
p^^aD/rtrm6AV+ߚ<Y{Z;#B*6VUSՀ<D=M&n\<YO,Fj%*ͩLae잡ں9kj7WUW'rV%'6kW'kpJ;5qppHHT'jVp^]k5;^v+5$W&֦j:iCm]EeU=UqYmpʽ{v<_r
LqJKE44`uurEcjH6'6TպZ2%u߉zt'kkjafV$+y*d
DP'YkfT&ԮE5YT?:)$7h/6V#>7K64֡Yztoʹj>U8h26t2flJVlFfA+V$`feUMa6)w[hXYWa
u(jUr41oڞz?7ɐ>^ʶ^z$[]7N7o/;I?0CGO9eo߃0GOl/_
>$fgY 4mm
nfۃ;.g
6
 h `<<G<<qO0x"xS
ftgg \ mp<pQc\
^h"b\^fprpIp++
2x55kk
^3`p#x
l)-
jimn3
>|=3|/ _hE
K|9
2*_
|7|x7o1V>o7v 4N]+!c4ߟT~`t?~?1OG
~?a_Oi?ks
~/_6n0{z|p? ~@q?C?l'O
_4+G3g/
>²,8fL%Y25mfp{;;	.l^1/d`<<GG<<qO O4xxSS
nLg}~󐓃\ -qȭo37E>~[zD9'?>V'=o1C&eѮr^Fq<
=zzzz
:/Ų(ʂZAmP'(B0h$4M@ӡY "P*@PV@5ZZm@AۡsENrht

] 
AH^ef} }}}	}}P39j1uzB} h(4&@iL(nr霹PšBh	***Fh#t
::::	%۠;^waAП'gQLRqsY[(n֊(nbV^qwRYqي*{*>**x!*xG*Q<JhcU<NxOT<IdSOU<Mt3T<KOqb<VT<G\!ŅÊ#SUSW\D|*^xŊ(^L2	+PT\x╊RZq5k*^x:7*^x⍊7)ެ[xoS|P|*>Ow(@/R|KT|_
W*ޥ*W+F񵊯S[oP|=oRW͊oQ|}oS_(CAw*KRGC:&~âxiX%"*o!ޠLOj.ަJOmGN|JQ|Mw-~ng!S/v%
[ 5
0;SݕF=hݛh=&Ch=94C>{<IR=yThPĞCBETlh]Bv)-唰TnV5Tev7P٧R3h}6mϣSTb:;N3,Z:ǾγfG۷N ]f+¾vٿZ~nD{i~~E:`B.t~ߢ{woHGOAszGq=aJO:DO;=dN财Ӟ^s:.NwzEG3qӻ0zI:cg}Lϝ)3vfѷwG'HǜDY 2E"Y*;	©JsֈZѩ"$9[D4.8g~ιbCr.Cbs95b[un㝽bsS;t.1ӹ[{߹O#yHG\1Q<!"Sb9/beQt;G\"nNliאp"
;t=!෬ޖ{$8hR\WF#Uf T?#|H%@(P#ŕbHqJDڀtRY)4Hqe H"FA-RwTW*B
i	RT
W
Az=R7#]({^a)_(?aT?)~TcWgO('?i(~VsWHu1o%XxWM]D
bZ)ꨏhb=
iL#%X&4YI4SK|
hK(,.yr+ikh\H&7SiSX}axŸcκsEwoqKf1Dh;pꘅ뙕j@PK
     A `kM  F  (   org/mozilla/javascript/TokenStream.class}|T[w7Mِdz		}#"d@
P
+XЈFE)6, XS{WZ̽{ϟfN3g9n<|' &8StSL(iPNQΛz(ӜE)jCQ[Qyu(lᝈLQF]uލ!{<>>C>>g|G,hQm1kqo	hIl)jiniYm9k
>
k3x_hE_l/1R/12/7x^Nc|(ZM=s):))/RKZOe]N]I+AUWg<j~
E:J F<~#=fWREnVnv6STm;[
ih5MvM^~Rt'Eh cTfe>q?a'SiYZt~)t
Ej%NL
ER5NWZx;K{T}>C>2ǔ~Bѧ}F5?/җ}EQDZo	NS?Pu)L/+wI_?N	?Oyi^``?|ސ&1`#)).+-.[XuAڤaO2oԱM7|6iIT437~P|<vФXaؤCM6aФAS8
yܕK1H$wEnEllpEAa~//(-_=8
b-
/jEeVheNZqEтp)VF3H/4XbE+lpAqnjs蘱)lDxjyEIyx\lWxBYEcSJa qԭǔ.TTrNAaan'MY^iN,R(^.oxdRQZVS3<%zXq=:r%4̒Ҽpdɝpn>5nkRPF%"ݛvvsdixpxQy%EE)uR`c#åC
s¸6Z)`먪8UE#Tccqy<Lm!2~Y!%irKhN	 v}Bixa|dꉭiإxd.(㌵~9e.ydi!%4;:$OOKrPJb""MR8Y]p]L┒3Goĩ2IA%M2̬xN_.-U敻fJjOR[sMjPexI4пףZ 5F[_@2/LSP\9s+
qXTKBHOë٣JX#X^XQW.gK:i][JBpyEiM,([lXR(P,ZA(Ly6 \o2we.~AIIa8.`5ݐ!O
	uH;*-C.ZłHav/UxJQڸ$W;xaIn]sQI9.~-^Ѳ02}-.FzMK9(,!Ź+}_!wQ$SZ"<lW_VR?8UZ3*ȳXX.h\]!]lev/	eRxi2^%paL?>g:][-Z/,,Cg'";
tfT|U٨L04B(b\وν7w\A\XGyl=f>wlc`SlWகsŚ᲼eiT[+
I)K#Yo|G
rjEJ3Ž[^F',IBe嫇Hu+ژx"K+`^{Έy^| ᫠CP$WXR10줂yx3ut<0J
#G4p\^$ 8EHC"A}nd=Rr28Q'/5h{lO^2mjYTc2	YV`PA#+PsRL['0< /FTTDGJydeF$ <i%ǣF(>L]uaerf'Y8eG؜zĢACYU* =QTc#0d)Gx~8p\S	8DW/-)hzUCƲqčJPvQrJ-XYEi&u@b҂e6Eh}@Yr]c
33djݶTPLˈ]$8r|+)̟|W	HxłL'1Y^TP<*uH5VuGDcI2py^Ff$sƛ6P8*
ǽRQG*Ǔ/ E
g%2XQ|eex#bWnN&63LxC(t9rkp`Z<Oa,.(% LϋPIx=[>&LΔy۴mFSxEë.y*GB;\
VM2HwKcmW`/S,4L>c>CQKjQYcP|BY,cT 
]c~&Qԛa!-U>֏>aː5	 ]_ʯ:ʾQsR9B*Bjk^(k%^H
^w[qWݨWuW_Wle]u4uVUGGWݨεjz*媣::b+h-\h[HیҼ[":*ܺmQѳUG"׾3ukQVmFBF2J'§q>a|"#Ƒ8I8ȸPG1>!vSu|,	UK}H#ov_T(ֳmsHO$qTDaaxQna6m6T$>6'E]D*ƮHGD>dYq>v!}LP,u[hqyv°#녡O4PQ2&7>BD Za{zEkh#2hh]Ll fW'
>	~E6KOt`>7()EQ6K'ͮa{YYX7mwS8JHD%,
{= ]DW&#?f>dcrv6$zD/bgipcw=Py*-D_X-G3bϦD}@qk:B&jP"Nޠ-b~]1<ؿOg>1G}Vg5{L,љ~;n@߆ ^v.OC|b(ut BbnӜ
,bO3o/0V`o}xz1H
l!$Mϰ'!EQ4B

 h5qq5벨.*P.v*HҌGa??š*-]Mm{TȆsFM}׶'En,]v٘Cj^RtX
/UFNY)q^Y"N̤eaۏ9X^my;TPFdpTVJ!?zniT5믺}-/!YCq!#
FPG-Jwy$ר<AX2q8u])%oO~ޑn<<W;;1USƎdqxQǩ3~yCƏ;lƱϦ9D(WЋ.Zd\͝r0r-Mzf#e^\9Tb,Z<mER!oBMwї013,d[~91'3<)dMq:Q
.N|Wo5YgWL}G_YmzE].3~+e
( dB|
ǀ7-濋G7>IVIQ#)*2=-qR
)%PIQ)ZL2U<D&U$:|N>F@ H	NN$';i6qRmdNi0tiEB/GamX[`R@} femx1uĜiu]
ja]CQl8Y"2>a$Nb" {!iz.9PTI
dtf킔`nHE<vA.<,㳡	@Q8l\
bj.f3a27dCfCȃ`9djCn=}%c/u*b2IvqI
Iі*#ҩaβtN:C}Wj7ƨ퐛C3d& id&no` }/o]EԺke8I.B)[$W;r\
UM[	B vجXYb>atvա < ~[VϱVYH	iVEH5!2sCkyk|VPL<`C֊P!he!uA(9.	5VRCP(dPSQ<nmmEQkP6.#*)`u$"l:Qԙ.uE)AQzч֔P?"ࡁvC{i fũ[>z
0ݸc:|ȻW쇲ZWb:;{$N?x$`:q;󓇖MGT<ň/?|bOwܧ>
_j=r
+=Eሧ1Kl'Amb20g1m0l!Ll`[?l{5ۿ
 ٹC4Nat7'A<L7Aaz=qcNs&L@0]+/DV{ԪuxXVŻWazBIR[a{W`>W}Lhb|ʒs1Dxחn/ޛw7dVUn~ׯ(ϼA9+Ior[bR$
-+)X#|+NWo-md%1V)d>5ϔ,YFK`%kC (s-YXb!Q3-ȒK %Nhk["E ?@W/EtgV<#]Z	F	xp$pLyV*#V
,+H+@/+@@r$J'9$le@	(ְ"R,Q!C$Ղ*VKE`vX؎p	lZp3gIj
!@`
v%V&S-QV{ 0FQD#DA@I	Jx,K@C1>@ fe=%/"0I[	xxB>HA܃T	T[D`.P#(B,D`X=	,	z0c&s$C@KJ K@<gK@CC9z)̒!)3 ^P&`l1a(p1\7b
/y0G1<003HVb8.e2p~i$0.Ǿ8O0C.{r1~xg;0lǰCp:/S^VRu>%O<@M,`NL0وZ&Pqd\J 0-bdRLrug6SL"3b2&P)vFb`L0뤂48a'TL?'u'}Iq}`I:-N
NvNZN:I8'văI'~e0us@xU)}f
|csu<¨i/Z6
P_RQ.P2((qP
V`+UʹX<,u>`B+&X܎VXwep\a=p%v<WshIGZxwz6Q<	ћD
M[l6R`[fp
2FYpjp0 x;	{qטSa17<xȃBxXEpXr8dyqd#zxŸ^3׍kMce>0Q;3a0WƓpx|gƛb|q2Əp
NBqV3nLS3L?353lb6,dfK0;$X?K14s#X955'TZsXkskkv",dAu4Yu2cYWs-fg=
,d^zXo&׼37s`ְAf-l>;0s;|0dgh kƙ/	llǦiglies\6&=8^4rp#TХT/R]jKMu9.RK\jKv\jK]R\R]jKu']KRoԇ.K}Rԩe.R~p6.R=\K
s.宩鮩R.URZRJ6u.K=R/.K}ȾvsaH\3d`"GBJ@5j@x!H7?eC 9yR:45aÑ2;)ښHy h1B<ϲH@O</c>68giRƓ5xn@
$(<uJqlRI0	Od0ͬfSJ-l*RM`iH@ucx,s=4(4`3
rsT:0/bʀssE
6f\Z1hWT|Z&sETsZ(}j[,)8FgDdCP#> bKϙ]Rّ"
GvӡEo-Y1R]%HuP~.C+|n&Huf,+E;|g𳩠VxB(XR=Q>g+D7S*0-[T_kEmc\G!:&uAg-NWbN0HY?AF#?>k=`Uۭ[+sH?TH_RI#PI%4P5QEMGEb(%M0\uxTpMD7	u??z	a)ӦBZ 5tTg3PmJl3b
~u5wD8i%B}P.J %Ob'lxmd{zLgJYf{q#c{#%)c{!#%r<R>#HxrmO2D=Q"D=Pra{.Ӥw<M^Ӥs<MO%իs4=M4=b{Gm{DQZx6%Qb%$ڞ$v,AEk
҃ĿW(#`^:Ǽ3'tż8
ߍ!EV	6EָEV@B1	G qx@{ǅ%`0.p\(14GB% %v,ǅbcJ< Px%GP؎@Wǅ'ff8.d#q4!`J
af9.T 0q0B	gv\L+r\(Xv\(M:8.f|@_ǅҜPZ"JK!0q";.T"0q!2&;.D`BiGB:.L"t\(	@ǅ$=JZ"qt$ %+<!ǃ9/bx>@p
mf`/lK[z` /1L0|Âr
oP`a@9î݌e#28{Ç&`HxUBk2k%%tG`+_2԰tS`:/LF}`20鋛Iw80»NզNLx`U	mҹOx`rL>Gⷜ"/ALG!d6Lmt`z+;܀W&Wztez)ҋzҳz2,8t_{:t'L20iI\&`Xw|b0Z:@mMC=͋Tǚ"D-j_AԻQꆺV/Բ#wBjT#Qz$Ԡ4f.j]KEP.Rv	@n::X.l=\u-n`WC6karvv=6Fn}}O[YvbEV-ZsUkڱ [Ķk]ٽZOVak`6=d;ql6Ѧ6ǵ<=-a"Vʞ*vP;.auErѮehkMumfoi[;]]m;{_}`i;(L{K{}=Ǿڋ
F{};c?jO/W(]~eǵ?I;fu:砫&z<$nӹWo}z&<^z/iPf\[sx=󠾔wKx^;+xg}5_:ү}kyϾES5)"-4~x&QүeAL_'7Mv~.WIK2\Zrhˤ%nRi@/}Xb+8TJ΂aLiH}`>A)0I#$fCusAҦk~Hz/iݥҠX,m ]v)8Go-pLy`v^sX7v^ROv^KVųDv
eU"6YvT[ئ6S;خ&mL_QLai3au;>siv'E"v!MiQuפ-Y
\	~bNiZLQH&tG ؎O䈐W2~%;2Vj=0^XPmQJ<ï7m?1!
I	Va5u*^+·AS>/h>g|ASc!L|p6F}s-]'QBb-CjϻCrA
_lK]bbeTNmPyv/oga|vNe
+_߰뼨ښ[{횻]hPyQ]_ǽḗ6ZZ^yQa4ZF+/nX\аF+oj򒆕m
ViXF+߈,ƩrX.|Kx5};Ҕ]P$]P,j铫?Vj{aYUݓ+k3x
k`5pS	XsݫUQ
qJ%:X^=E``Zs@0 O\U;_+O[N+ُ!%!5h+7P=_
Z
$HT~ֺ8Fzxjmj7EHk kA\T1s]c#96Wq<"NeTJRj:vy67C@!''e5f.JH;pQ<<ܔ#D톋B:ͤV5M7d5kd5޳҂y5	j@Mmv!ySpS1*Gj~JkUcZW	T\K퉴mT2=[_UqMjGLwYn]ͿeC'W0`X4f$vpC$ͨ$4%	~Yb<0NTYZ KD.)NHEA3n0m9by6CSL<$*+*B|pt5̖Ktd;iK-z7Ӵ,Q%ìMkЊiēT#YRl]K	"dдVq5*!Ù4jwh3߰\aհAt6hD}g,Ϩ:Y(	Qv:'Z?Rf0DJ5yẐ9$
=K>zXHyz0h~M3Sq
`5^f~
Rͽpco/}bFj
n
xwAeh)gۮ
vA-GOF}IJ諿KaԈn;m)/hNX'YKU|Ep9[mS^ܱKi*2 Ca\0c(PJ0+ea+,_?Ux0^b`omy1aUA֑Vp7P;ejD] %金:^ v4;S,yٵ:2³(Qqw*.v#mVQG`?
uYlc}NZ[a.-0Vs$#^77xB>
V\
ȣ7~5gCR/}淪;M$~rqn }x\}U~$3HC4vqŢ#}ȷA&4oåa,?
v_E`; k>OZj֌Zkf5֚]kͩ>ܠfZlo; + _dfZd^
gZfTv^l['[h~u	xvC<'ݵubj4|B"}V$:Dt)t"]p,Q%kbܯaӹVBHjXwDU>J*JZVC
*
[)FGU[Xk5B[VQNnBR
9bo5x?w" inPˣl	^\
T$fZ+%j"kZ+#k-ȴ(ܝKEdS	5{i`J' 2=60uzn>}T~9xįt5k?0oIo|~;󭰌oN8op
U|<=!x?x"G>s~{~~/寲Xkd-֚wYWx_?f#'l4M䟳_l_\[ȏB5+X9]c3n῱/v7?'٣{FpPBco	:Dwa:	Ǔۊx-x$>TḐT>_"Η L4+EKFW|homfў? !Neљ&/EW~JtB$S^"CmDDbOY"G@j(Ab,JQ&spq%֋b#c1N<%Ƌ$qHLGbZ-~b"W"b'
,D	J/Q%JXQLJP
RY-V)qr8WNT[Eb^qCQv~N9 .U^)˕ʇbJF\*Q~b
.nV-Q&*5Cܢv=m`Gjuت%NHlWWZ"C]#S׉ի!JRnuxT}@<G398#yMqH}_/k5-Q%wxOk.2ZM|rڵ+m8(iVY|m?jw/ڽW~8T@{TaS
מQj*bh(վR|ڷJ$BI}J4S=CI(izP	}}B&*mJ;}U:,@֋NzY_tQ*J}:+=^-J_v~2HKoW黔>,)e2RGT'S&20F2HRfMF2R e1Q	SLDYj~_*%r[A0VV)?sEc(y%$e֓tQ{z(yr=+=Ôk<k=<=sM͞S)QnR6{U=k;<땭+Fnϭvf^srCÞ}Nϳ.Ae%q['=G<?+=+O{N)xWWzcCd尷򂷥򒷍rě㝤睪|=[Л|W>)y))_y(G7(Ǽ7+zoQ~nS~(?{Q~ޯݣݯ}N9}Q9}E9}W~KyPgUxOOPM_5QZX_g5R-__57DM}dT5;[MM}j_ҷLm+SVA߅j%jGߕjj:JV{!I:::::::Fa
xM86!(}MYĞgXSLmUmmd
-LJo
'Z-߆s
owjlEy:jزҗ-f[ӕf[2T[6T-Gjvz3PeT{= z٘~c5TNZJ=G4#<8{}}uY 7Zz7 4)p
%bAY;	q,&=I=jqdxLgOB6Qj.YKK8qY !$tfFoWԓЂ)uef6֌n;=2< XJ7Ō!-hwZ~SqI|'u`Ow9w
0۳3Le0-zC׫6ݥd`?o˽%a>n@56Zso2'f\+qDIZt1u{%7PtdU^NN6B5p:]+kNypΓ>WhQl
Yiȉ!F		,hΆTu4S@k5ԅU->R`F%0Y]30W-j+`zNԯ_?],OWT?3RXx8o;i֬g
JtLuֿWW4<	%Q/Z\2}t܀]ҏ{cڧY
Ӥ?3VA\Z
HVmMBˡzi/{eIGG|^!G]b$X6fun'UQSNgmVڭ^-g
=nFQmlm{`gʨ΂Q(Kzu7(ͺp+HoenM|rCfHLw1i,߷;3Ի`-jX)
*#F;#KƑmx;럸ឨ\⤁uףl-(4DY_zf֢jr.ȜS-CSCM~c{`#2X
9$f2J~O`f]Z.oêsa$om`(95Cz.\lnЪAk}@UA
$q* Ey)hE2Z#jlS4N
hG%$=hsr
įʗjwG!ԏv X(wA+u7tVB^>Q>ԧP2iX>kg&9VpzWNد՗UeB=߫k:P`\}),F}%6ꇬ~f"sZQdW_ިcw߰o%IzL$*{=.ȘƖ'n4KVX"Ϟ:cGM{DIȗ,k'y<ˌ=~~0¹|l=.폸?Eu_DEGNnwg]]ZQo718g"/Kh+w*t-=e%IkIIy`^$"'Й
	
r-UGOW-h4MAẅ́AFi0^KIZ*L WR)Th͢p,?jTNBwSPE	f$gZd%7<{BU56Q'J-,Q9in%+J-Xy-o-ZVfvQJEgLlILjL{lii4?bxDGZ;&oџɐ|$&U0`|6Q+B^]@Lc[԰t{:_Bt*6Vx
f0Ja-1'u촳1}H?vwNrҞNI{;]z
=`GY;O #~="%'yL;p5bȩaZ>+,vqxѧ~V
[z4ή)kUVS_*_sھ;ǋ%Wنl<Zڮ|RS_7
t)A|}~ShggsjDP.uw/PCuKEX}ؼ2rQT	b$?m A6Py`6.FHآ6sxx^KBvݢ۵mYVVUlv{X;ghǴؓim-{N[^.eok{eC
v%;v-K6rUu&n1ڭnZ5oh[xv']WCZ>\Osx0vn^˵}|X{_=ҞjFY~S;{CV;w#̟߯ӎ+]{kOڇ#1ST03!/})'~/"^Mith:^RF=m/GeQ[}
arKY*H^F:R/ȏD{kO+i9!,u`8&3ǵqK?G88<Tƒ9I$5<< QOя-xnA5AjcY<tU?C,
f9TqzTՙO?ryEg&Dy
xi~ѐWUqsU%`)vW pM_o{.rlsRнL
?q0:X#9)YqH4*$&T\+˶n)rzwtg0[8Za:J#֨]Uq>jce郖j䟯b)85,b?j:5Jbhݦ5FKbJ5rk
 Og-y/TCy
g@xc5ڂ`g;D!%{-95`8ON"zDo&VipKtXgz3Fo7-6%l[AvAxNςz6ww
>{zoZ} c fY>eg4B<MGv>ENȮ'k}
ҧv>ݧbl>=gOE}{Sc+=~?E촾+zK/z!O׋x}9^z9C>VOZ>__y~__ѯUJj~~ߨ_o7j&~~3Oz2Bз}Wծxc.ЉQ!$$oot35CI'0Hho)Q_qcM;7bvZSw2FZq{QB2M2kh%K#:uMnU  j8c̊[ȑ,-O~)"_Gĺ!{njsC}{pn{qnyy=zBW0 xyr7Nu~(AˬsfڳL_/f:72ӹog28pL3}gCG8ӏqg;wFsY͊RopM|-C̷࿟gn]oG~:@W;W]֡3&ћ. *J:cUr'g[(K<}|/8	pO>A& ]
z*34fQ{Y߻
m:R]ZМ
//JJ,#FFERNze'2U?QdGH/S32L4OPhM2ScSzT#<FDhn$AGÏ-i0#M?fL
w|gAUޓ,AFyty$NAW8\x2fp?` %?ύQ}&p:<;hrFՎ0T#"=H`<e#~hF[p2!drtg
|A@~E:b2C"J4PፎIYIِ`t$]_JnJ:q/߆/###_:8'P8^m`vRwv̆/u\z0XCƦ+OplgoFS{ב\Pg!CdS% %g-&<}1FIBxAFS/ƫ'jsҫdq@wJjH -.+GrcKːop2f`%df$
OFmbpoTVS7+)QφWfphin8kL@:& טT(3*c:ĉl8y1vȃǍ|8hUc1m8j,b(aXy2f,Xʠ`9~࢈ǀ]oo>w=k&$)=&Wc\4lWc\XC\+f8-?H7nJngK3bG.o;!Yj( DcW}ruTw-7(˿=WuEsbGB#EAףڈ3݄RFAxPj}vE	a:&pS, [Dws}q
hxmv&/^ʂf6pU861n[4
-Sl;1E-<hʙq}peᘳ }ic}~pgfU`ȏ@[&ʞrhnxgGz ?qꨚqq準$kbQ!xqw6Ћ-pǥD	8OS>WCbsG,'y6іj.d1w'ckDU !h.`qFQҽZw ΑA]و9nDy>KU#'Χac/{ޫ&[KK}=I|';l>-YH+P!BiY+EU+rwMruZd|F\+*uk5FC_ؿSn6nCߔ
yJH's+t$8ѯۛiuwTxVFp7|#U|Ԯܕ!x7a.0&AJO`)\i|W/aTa77û{x5~[x2~o'w{; wV[e:va:v}9\⅁$;%ڣa';-z8xo.a`Hq	z)@'ox\
0 NHҫPacuΉ=G= bD5Ѩa(>?$K&Fp13̈|FE;jlLvYN5;m힉
#+b$Z`Γhb69!M3LM*2584&^͌3U@`h߶;{yLI?	͢&_bHkpV.jX9JVhVL{-j㶠qht鿚Tt=pw"ehfkW7&hTJ ,W%o fheRZ'5'&vu!80O>Q2OQoujq{q9aM~TI'h"|DM=)G	!6H祙9 ́Y&10dPfe
Vf!~..ЕPO܂_x ɒbv3t@_'kM;wa]ʓA@G |Hk]J7J\N/D9}d8}T99g ggl
5K]'30	iQ3&Aе0jLBKwg`
9Ir /0<횀cؖ|473Bb6@fmdbd(	R PK
     A /;C  e  .   org/mozilla/javascript/TopLevel$Builtins.classTRP]9-A
x/(H[xmE.D+/&M2~utt|;ǽOάuKN~$'b&YiPJ87o
0Fo	Ke,m1L
*

oKyv0Z[[6ljq]+am[[+f޶Oׂ QW
ߣ#0pYj@6m]VzI~ 6~V_]6%a~#ҬS[(Y-6S^-Q{.m
锑ٓ:?tnUbɈˏLew-o\匞_5+p8t_{ŦjS
yO6a:5
E!U7r.-yzs$vg?}ױU
tu=qI u1FFC!0AvEX=JrQrBs;,GO#}naz.qtEx8⑈G#6"D8sM'H P0Ajd[}A)groe?6Q*۷?up>
#L F?@掾C_5\Q6E\!(ϷP+=Z$HRtHK)ž]R4)RJ?ղ; TS->S	Hu4XX.UEmì7iVMtn"5+)Z:@Dkh("1
׿Fr:|'
<JCqPOhL{ԷXԿ)\<r4tq
'~ PK
     A 
  -  2   org/mozilla/javascript/TopLevel$NativeErrors.classTkO`~ڕN*ׁ8p0@),,)-)ADFg})"ѬKγsӟ~ d5L⅂i
p1C#UqNEǗ*z9fUqWqAE+s*9.*XP<דu; s#:wԞɲm3kES~2;~=<-!=4 f:;, w6ST<
XdEX9gs2H%dl߷\Gߜod
	JKD`y}$-nn٤QDm	<Oi
),g'[4Mӳx1˟|&E,:bX;<Jp:Y̵جSڛ)*D3ܒWd8z7cuwBG
V$ܯ$x::Х.z㢟8\Mmסk
nO-t*	YlMKyn:3FkN;ex aw=` k#2"HbG+Cs>q4`4@jWTCU7S$/a\*HP;O>GBQx$|CFs
r^	B=ADMFZ w
S^A؅_`́c`϶X;P֤ cU.#je:`bj" ])یHWA3b.=K@H,V78鄂i<3qWS̴PK
     A $  -  %   org/mozilla/javascript/TopLevel.classWWg~>2&mn˂Ԑ"@KMZP5&]v,!զ^jMV
5^6xZ	ZOx9zh='FofX[Xzr<{v滾>77^3
Q:
'#
2rn#OʑNb)!>]	<#;Y)R⧤O+L
>'&4ۘ{L3cZӺٝ,Kg+kl#fMȤOGʺ3iꁷ.\s$mGbuYmJkF'&JfgM]`tsu"JirJƤz<3ٯO驝[٥Yzo6*gїOS:wJ"Mٷ6G04҆!klwgFIEEى<.3I{A=nА6BMn;LhYZciǸ,%%gi\O0ڇ%Ĺ$Y=iS2JPt<%в9pL̎9(^T)]3%=$mK/OJ©iZoi.h[ٔ}[\lEi(r|bHQW\^д,
zɝ̌F]ٲX|t],Xla--pn]F*@`R:1|0rih05z!d")FxOX*3V Bm¾"/_U2`*^B
IE*ދ*KKbq3
RO"R3*^U*N#*.;*>0l`?PCHi}K!{b3UrehX
R2	ʒR._)|ƦM|gC(eb~GVo2K
}5W
<5f,NPVL=m]ew\X6m3mX[J[sW[^^~RI>*X`Ը!B[MnTS5ܞQU?<\h~~keLlr6Z| 朥3n>>UwA>渷.]TV_nk;[󴠘c7;_C.@IjW86QJrK`CA<J
נ8gesqsrGS*kڛ*_S*49<%E(N!cvG`104>()0W0oC`k>_'Aq]#wՍ街
ܯF*xDA߿QpDCpx[Ҩ;b)(i13RI	k'mK~^Cx5_Z&J@ͩk}+vud7vu$76;>,	'ŉh,߻Dmd96
:Q1<XK:q]݊ױUoCv{^_[<f',xǴ'D3Z4K^wR͒Tþ?}?wy~(RKNPǅ]	5Bjlh&آ/DpJWK#M+|1aq`]Q$A9FiI	z ͳ$HyoJs+UN7%QnSjRPT۩	6y\CKZZazZ.rQʎH'J

lP:-RPwrB19;<؊4T	:opdKcBcP(~)Ej'?tGUNmwavv6PK
     A %3    $   org/mozilla/javascript/UintMap.class}WktTu̽sgF^pH31b{	 F2685Hi@QfF068r#qhƍǋM4	ퟴ]j4udY ޹[k}wػ?p;.Xx&
ExEx{L2 ËKWUyˇ(_2|#8!IN(^iZxM3Neo[U.-tcUͱK-:̗wMlݲsgp
ͭvLq^hԇ6MO7M:Żhf0w+d]n([ֹ2ޚ}N>:+HohU&)(r=BL:4wwI\7M3\{b_ޜ6
eMg;,6ݟQ&+d3.=d&?QFQLwRM2ցA@Owb!s7)ؗ.Mh(Dz7/qm6q)}Lyl;8ěm7h-[qR80Ƞҋ3H4jqMFBdy(g衅zX6r;h]ޓOwINHzR!ѷ *ɒŭ΁MatO&_(zSA+e~8i&0Kla(RR=Ex#<Z%[O MŴ'~fف|蔲{Ko&>Tdb:y'=m^5r
޺3KO9IdHZܒvӂo{J̺ޙG}	e<V2I'̦gn;rCn瞌"UYX\1,ŝ2,p6?wbhɰ[bXdr 1@fT^`ߍ{a|GVA&zc8'&680AV!cSK}f~,`	/=ĭgڏgSɳ~kz%c;8>H0G|z;7IX7Q	Wj?vOL.AV&&U퓸Z&XrmLZbOPZđ,!9W~ޤ[y?m8*Q!~FEJ6Z4aSkR
%1_OR+J,L;Y}fHHP}2ql[0<T396'[&]ޖrRQ
w*PbhPd\xk<OW|0?!aRSź@Y#<{s4MczoCU )AL]
nX02jXpL{y6x=Ұ+mDo×a횃'ԹrM[HD|
N<myqߝy1uIV3EK0fЋqTG$G	 f⸅>mE9ڙm>򥃌g7Iڤ}-gm9&`WPfv|oƏx˸Roӹ<±nzMOzB(rFrqǭ
>/ErWL0˳ĢK/K9w,W HI06506NMbpo{	
	pLOǶa,])
4uy`yD&o
d8tylyaP=N> #x O[RfF#"G~A?\vۤ˘kXhB%MhÍJIʱNsҫҭBq"MR3gɒ1*S9_ ^L|*Khϰ;o`XRUhg/-nVG4;MI }7W*(iJ'BIQ^/D'I)r$z'iYgi:-*t,ѳ>?+y!4W"n!
5TJ",?| F$L]!Am5o_n
q`)6QmcQx$0!rnކMyz3owMAWxA̅Z]~%yv{!g^Ly>B)tJ_wӊxl3Ӓ8#uacs!?$%.M8umRVG\ v9xS٬Kkz 'HoYt]u}-±)cvlcT~@'JR.;LYT6lٺ3	LDuaqs_K"_פ/(tK{I#iZXR2
K9Fb&cߨz߻f~Eyi҆ڭzBHR),Ԡ\=>󸟜<Ff&L3a%0Y".$N+Uu5WuפoHc?Hdᷔx_B>)tx,twkP`9>X]XQMvv#0e	 H|fhI\m7ak5ˤ)6N'Q(x:EU2.Bi>"}ĤTNq9Ӽd?C)WqV>mm1#]Y#Q!9)6/mkimaGil	Xt	=BB'k,18;	:Fe>.⸛}**COJ<pǋj*NixUQt\T5f৪/*_s9:BvrU:yIx|LGxo-|\Z|FVJn泌;%Y{@.xӌRē?֬YcU3dUx2Lj1ԑ1׈y8Q\	):STv-3D#iQĨm1mr2H~-.c$&H>rzYYfr;3q6Z΢Q|&\ӡWX񋨖jti}eO8nL\*9",VѤpZSXnG;T
;*U3zUjdZQ1/-x]<ΩxWuOڡ1Hxץ3bۭ9ۥ92Y}DgrzW|f\+n0}kL
~^3lY[@2DUZ81].xo3;VhRin#qnK~ص{20GJ'ovQHD,'XKp4ء1pϤK/`֚~/jœK=)3lAb"XRlS{Сz><X,jqS:9:kY\C:H@~^I0dإ+Qv363veB2ZFA>$Xŏy@H+|@ה~]k'hT^<D)Ȯ6'm~PDRmkm%QCD'BgQW̔-0m'ǉ#:):'a&2ȤgR0)QQc0ǰParg=)lU#HgXa^,u9cu8^K߿WtҎE9+jij$ӶQ ;nw^
?ݔ&it>?<:F期szB',-BdBA=Ӵ^CR,}2H`֟<PK
     A Fd~Z  m  (   org/mozilla/javascript/Undefined$1.classVvTRnސIm-4ppR'>UlVP$#Y-k1a	bUUd앁u:g}=_ 4iHa[q#MXMnPvMsaeP0\1,}};ڞI;ي]]1Zn^p2eҝeSs]io
ԊڡwWȫ{gS; tMjcX
RȊ;KU\\qko_yZ/6zC| g͕O*b\<d`e
d!f؟TZmndT3pP>0KY4pGȣrE|utñ={"I~/6'Dj=wԚ[^f
7oMȴ\wy4wR5L+mzNҥg8s̚aŮ%ѲsG?UZKFҼC19'R Ut٢^j}3i>I4eNn
O^tQ[v۩kdȿ{f8{ժK״	|)Q#na*lK+,gp?a|tX;ùiaM7ml7ۖg/GKNz6;L+
ZMw݉Rgډ>B#jfE`$YgcpƘt,lqu./ezFF	７|
^UɃj7Vo$ޢċ)h1-櫋Dv9LHЌU`KҘIL)v(%U{KIǰZqDGC$%Y1Jz3]ȋNVꃼI~7مmI@Hr5L
Ы>U\#+O#gF "U 
mrH]Y_WeB4|6NlPż!-#Ⱦ.ER?}21/<E'$_
EJ 쇀Q_(V#:qơ+\*§p?F']y~iJPK
     A     &   org/mozilla/javascript/Undefined.classSMOQ=2EATԶh(
@(h(%эN08`gJMtnX, ^w6|Eǽ{훟}0MTBBˠכ2DDSpe+Pɸ#.m^J[r%Sy5;g`ҎzV7į!ӏ-ꚥړ7O"qe"lGى:mY7-KkO^8GM<vԺ%k|\9Q(8ݫA[4cqv$"5
^c2._u(sRhz9O7^=W:B4rA#	n7wT*EUrhvUщ*"_EXΡ$2(Az'Ҍh9	u52Lom6#A[4AHt>MomF)!.S@]thg7&vаC/ݸHZ)%=譂Uؾ:Tī<U7؅A@
lP"PG+*8].x \Cy#5WQNSEZ-Q+k¾fB˯D@ ?AhҲm=(
o#Yh&M_!5g0LkEB PK
     A ҅  $
  6   org/mozilla/javascript/UnhandledRejectionTracker.classVkSU~Nf!l!REhHE!\nv3
xQ? '3}{y_~#;(Őd+LЉmxmx3bU(߆<愤q*&D| yb_T`Aᖶn"[chZU=-m[V]ΌVٜ㤹`lX[u8\3l0M-+*clAsmıKFNkFsedG"!/TKYtm]35Ͼ0nfj]öM
[2K6}Zbvʶ*
Xar.Cp	t>a\q$9ԬuC&.g\UTBPC;'"HO+ĽB%S
>FUvxjRfNjq_*HƆ$QozkXGTt5+3fjcؒMcv!"6m"\VхnႊU)HS|shb]E$U6UJ.6}7&;xw JM«Ut[32O٦š&TqW
KWCC4
ܝY"ؚhqG}hhJ6kb5.WXm~ Alj7+AtIt$5:Sz$c$c`I^!d!tR=MQ 
W#-CD#3ZzX$hc؅ZNC?m\va7QDFY)o2(9z}`OnaBH[w]d#'TuC-!?Y7H/K<_$G^B]=|ًuG3IuDm%pu"h%hÒ҈Oަ?'Lu$#tBB[WzBMT>z 1xi֓}$*Pz	LsLf+mXm"םuםTaB,.S{1D}ďA

A7t@	}}l^I\Lփ PK
     A   >  &   org/mozilla/javascript/UniqueTag.classS]Se~$
ˆb(`WXJ,%q
op+Ztdx
1=_sw맟EM00E)/5<²8	L$p#(hHbA8O.(iL~bM!0ضZԬVjiU@<Hxn7]f:KE3:^Z(o
y%JNm٨d0"0j7
;˛k27V#==3ve7\յX[fcQ@;+,UP@FiO d@ -MרV=KaFgjm#)ës\C1s-۴ڞs!mʻϬO0ɊoֿX7an*~v'Qf\s?|uX;!hVb*^U,?pJĜLב=Sc:nH%ǱCUn5}tl,K|⩎MTF{Q;gt:P,)Yx/4l/W	|oȷ9=5 :C͎g~l6-Ol-!l#H`x%\=ѿSs/:\<u53fE#?""3K9 e1>Oo6n55tC.5|\c6x'3×(ǈo!&:4T(g [X6	'mB0x∥Qٞ0{8.8s=p%T-Re2O#0zbR 3X %C2 B(q .`Zr#rEQ^8b>cch;v#*M%0cҌ"lcFHG?PK
     A 	Jv    %   org/mozilla/javascript/VMBridge.classUSW.ٰɚ EQ	QjZiBM%LfЇesM}G|ヌO>ֿ3q&! Xr;ܽ'o~35_Dp=/
@>
:nꘋ+|m@|[:"Ka|e<Yu[+JUzc9PzjA[p+XҨmoodI.&׸gQ,!V[';
b6^S*8gs+Kr1m}'0~EcxЍw-d/Knnx]t*#OʂH-o.<|;$w76) |0>9J-1ۅ8NMS扇6:v)"y)yN;R%nJ?8t{]K-[UˆGh;ǃ0<Emۓ:-PVSu R0{5n3Œ\fS}g{0\$lK7Ͷݿ7tk nV\V71,b)oqa옷ON`EUnkbquiù%NyURMHS$Yc8ātb8}D(w,:<]oaS>67|C4ִqq*JkBhg=EhUƓ1`HAUZ@#;~P2T^גZN0y&3WKw^~]6Aό=KD֓0~#"MgHJ(aR)<NcvWqt'7=B1j~=t:D3Qŧv0F'x+&&G/8&DXp).
Hy.yY"ɩ}F+(J<86:EqFPK
     A fO  (  (   org/mozilla/javascript/WrapFactory.classWsUmteHZJ
m) VmRm)MtKMiT|"(@Mgq4tdƑ/|obϽMӗ-e͹s7ǟ Q7acxEĠ!wUpÅ"^h<)K1"BqJDLĨM1f430۠`7D6 )M'%ገ)	
po99/-o)CLmR=f(!%f(8U@yP{RêѯIңJ|@14:Q-)K7bq+a(5	3t(QS7Izַz0)y>>0]L+XwxLL6(N	[	 g2OͫBӇXp(%MԢ̚gHS燗W-ܲ?BJL%z[j"b	L1òdKY{3ܿT00ô<c 
]y[
:K<OA"qQX}X*5^QZ*uQjUI\bb=9Stf/PU;4v+
VveW@بx=">!ATCG(c\э>gZ"fM㪒'(TnAE\6'ҙSVq
i1<xY'T3𹌃u2xKK2,%eRގLt,5m[Q:yU[WTǴQi=2
hXvRlSC2
G#)zpi	QJ-/y5t9H7J7ꞟv"?u^"vީn$+6J;UԒL&e@k@%&S>N[}D·ۺvzXR&|U5ܳ˥%T%JBOX{A	KGonzűH3"_4JQ+*&? L3N<-ӤAVi8QB[{n'HpekuLq%7 N(WHP6ÚziA
h(`+
l"<rwwWĕ.0Z
v֙Cu`h벁T%N	/ѫ"jG%g<vՉVRp	\3XaCfMdAzlE1C3y짙ϒGfZh9VjB๏Jtv%m'~+.Êqa^sT%(߃!?K'8&p?OП'	zrpZz,	ȸQ$,v3Yń>esXFln㉬BF.ݔAۨ#S$ɵIӛ* DD"]+S;SD,,ڙ8DT
ZsCs
f+v.r4K+Fʣh$H00II,]W]a3~ɟiՂ총zЋ#f4v4Ö4Jf5!N(su<DDz ܇W˴qPK
     A nm3  #  -   org/mozilla/javascript/WrappedException.classTKSA&ٰI\@ W@Q j4iHpuڝ ?_hJ-ՋڳXwy``8ƤUbJsQt|]%q1i\RJ(qEU{=*
3~ЙulOr[Uk/_"b$3W3:_4C%6ÁDKDȠe`ΛXUV{O1Ċ
&C2̴︫,QW{%׬W<͍H,xczN-%^=!Ui<j&B ΂䥧S5##л*dKD]Bj:,<%_UWe5[Q4=gmۑ\ycn(.*[fnʊ6=W3p
n60%:i >ױh`	n+5D9FƥH)ms(˦49&|2ywUTQ#k1慴iCmGU
0Hn;2:{r-v)FOWw-K1BO ؋}4jz]/}H4K{@OmPScN>@{}./o!4,]ǞTLx$9=$cC$GaN28Hq1ˈcGIfONH3}$Q t]H1uБ`h3'%BWh	c>v|6TD;۝	PK
     A F7H      $   org/mozilla/javascript/Wrapper.class;o>NvvvFҼF
MĲDļt}kFҢT̜TFp҂"=BFt̜D}PqrQfA>T# lL b1I&6 PK
     A            #   org/mozilla/javascript/annotations/ PK
     A vm    6   org/mozilla/javascript/annotations/JSConstructor.classJ@K+ҸpJڊm$IݸC2ɔdRV!0w.Ϸw wq+
Mt4	tþ
5L.APfV
5teJ8yO,
L\Yz8gLpHc!u{Fxn0Gwa}I$,PS`C?`ҏ@9F@䉗W6Eէ\LOg[Vg	8lko@7X$V>!lcr_PK
     A I+    3   org/mozilla/javascript/annotations/JSFunction.class=OA?  Dr%.#fGdwf+x-P]J@a&DDcNYӣwj' ĦqHYڸRfe6Bp5ՔHNȿ߳a:'荷3crLpHjϏݰ/pT,	dcהPmnG=G~(	0VLf>|4QFv
nu[]Wo
\ո*'i	s0q
ahd+/PK
     A 
+    1   org/mozilla/javascript/annotations/JSGetter.class=OAEA0ѐx	r%.#fG
dwf'sy)PK@~"DDKcNYӥ7j' ȦqHWJv7&(>SԔUƚ%wmN8z均̐1yZCp	KG<4e1TAWcȟw3ajVk@}9z0P&r-j_&J%pULqkQbl&#%B
[BPK
     A i)+    1   org/mozilla/javascript/annotations/JSSetter.classNAƿ)baaP1;+0jDwX-xY쒻=|42
%ɷ_ .aî@u.uFK_KK/ZWX'Go2N fIDJq% QfҳJXrB*pD5)Gc3F Vh7zzo}bI(p1#j~x3	$]i-\Fe"\'mKm.+󗉊@Uj\SxZ㴄u9vHDPK
     A *V/    9   org/mozilla/javascript/annotations/JSStaticFunction.classN0_@T``!lLHmR&7ȕkWS<C!nZH='K<zO΅$a~"~e+BStȴ#PlD4K[wA#Q?3QN85*Uc-R]eSi|ebf$\1yZECx;%Hb<).fڠԾ+(Q3LKx"#]̬C{O*
ո+xe	flMF*[N^$h PK
     A               org/mozilla/javascript/ast/ PK
     A   C  3   org/mozilla/javascript/ast/ArrayComprehension.classVW~fYvkF-,j
B0PRo ;̐[V[jo_?9
9=ֿcX9}{ ܅у
#ʍ>fẺa(%QD,ȲӨ"qY/T\%~6=xF.Rů+d*O^2xu9*^UtwQiYz~YwKY
t1l)HX]uEVh'̹-:kOuїNUǘ7*iW42to&gM3isvvM
1JP$O;!7 ~H͊10c8ŝ]ҭ)1enƽyvPy=	VAxsw6kOogmt/fwrGhd-Yړ5,'nyST]KOӄ.U5õo#,}D\?֨pm
%d6w3"AdM3Y<{^tJP0W
cV>-߱D٨zd;ŇMl8C"ԽlCjoJmǏrY/pBFN8N+J5!N41C؟/
WĐ^d57TV75~Yd
w]!,&
#
sƿۜ?'O)
OttfI⒜5k86آeIm(33R@ݭvQa5of0]/YN)3йuac;f\|R'؊؛ۊNR
rMժQB>D[yFVሀ=;Ďy~b$],&d ˇ?Al.EyWhɭ@}
n @BDRkn3PJم8;'.S-x꽡UVc{s]+Ha$hf;h m4C)f;C2+>UhuZAf2mCk{n#Nr~
@id(ond"@xynkMsh^5`Asd_OA<ĳZhZhԁi@ U^WѪ`t`m
`'
=c2~ćo M>'4c4,O~#CvGPeg3}?&?{wީ0v6ȣ0@a=orgӇ(A}A3Q'C-}_ 4/T-e!a;htՁSuᝍ~*uVJe16 JF~u$kuLR{ B?D2UZ
,md04-%l%x9Oh?sLqHȶ|ȶC58Do+E^{f3C?,ȧQsdU[lq/w/R/$^fY\^|7s$5MZ"XpٹT>O=r
*
cv*Iۣ8yj8Ao2Ko0{>tèIp0	Whz0n/ҷPK
     A d    7   org/mozilla/javascript/ast/ArrayComprehensionLoop.classUmsT~4i/Zd)v`WV-T*ݤ6$iO~gwgzM\:K3'<ݗ`,>V0
|_ڢ|XR⎊FT9➊6]<ƈ
(X^2//Oѱ8+;M7o7;d1AۑXH^,0Wv"/LvToElvz7ȹ\0&P,RK-7Y=ԡ	dHSD%ByYpS:.kNԢǈ~ՎoUגRt0i]K֓{v({Eӓ ^%Ӈr"S
 4=yf9xIjݫNQ:	9.آH(-Z^ZmO7c}#pz?;^q#h[jD=\ն@u<Čt2
Vit4RU{%i	YZ;1X/SӶ'nw\>b;3_3eaz1_kڠ=G	ť!#n
K=in+IW:Tn놾u
KI&ФiIM*ϝJ)9CrD
X$@!y"s't+oMZg\FOQY=?UCDb!?9d0+)Y0.#,Y}9@q`_\^f֞a{y1av_qZF9gdY]gFjb8B҅qgcl=_q")`IJߍeq][s+C\5us6|@VᑂK1`NK
.?<HgYN
t7S
8lOѠW`Zu%|g5O$2jy>PK
     A     -   org/mozilla/javascript/ast/ArrayLiteral.classViwe~4̈́dhJq,Z,Ri2C .Z9GK
zI&y{~f|q"l!L`v|
<E6Rp#,8ecGa
AaDЊqxW8oI?xOe"xE}!Ca-Ur31lg!c,9.;cR14٢QpR+o!nzޱt)h2z~izɞ0
;RXbػ*HbD m
G!6,I$1@irT/FM:efkE0~99ьE$xi(XO{;SDt7*o﹦!GNk'`Fǫcj̼h!-s]tK/\U
@L!rBYMgurqLwLY);玟o_GNRU+Z:*(gj6f9F
Gؘc27XCV%˚ŦK
9,Ǥsz)QU$zKӋ[IaD>foU2sw֔%6U%rlXSz5U^C$T!AUlV^TFT6U\Tw0ʙ+9ڎwY\Xld#Yaqu}	#|6Kq:aR	nU)>#ߢ>m*
RᤊlըU|o)؟琜EM9\>H3$Ŝ$sSh69kVD!"^ރ5֋2gd\K=&tzv9\ *yӉLj:ǟBZَZXuKhxMuwks=7wZr_sN4EYZOZ9=0#S}B54b52P IuTtuh^F2=h6:4GpBb4ИD|TOW*j	,hF6VvK,^m%	vK!cͦDi4ֆ!U*])MWhS'HďO'wtr%U8 &wOA`qk{I`'vIiҼr8]S*O3SfH?9FLoPSh:_lqB.vnqIc
d|˷}ݳ>.co$iKP]r!{`Pq( G+hbfMg4U|Bf,`{b
S<4J܌
8@i<Rqf-I5@e?$keו.\.p*XW"XD2 wJzMg@y-AV8tҡ
+V
nI+nHI+	~"{
֍~
5#k,h=e1:J:*|F!jYUMDnMdU5gH:D)j`z^u:c]J4ߨF[Ө[pT~S3h^ӟLN)\?[lºdl{;
:KSo:|Fsj|_T.ߖ.rSUގ;6'O,P[$㲥t'fpahǩ.C:b/=$ HxlSE9v"L(gB0t
5f~r=]zPK
     A F    +   org/mozilla/javascript/ast/Assignment.classn@N\@JCIJMwE"THT]i:D*ފ%< wRVY4 ;.²ʲƲβ`@半Tz$`uwOwU$/Gg2>	BYAui*xO=$XS/HRma4QzH
]Oƚڄ/PN(#O|xLPiX
/3P'52R_q_e<cʹ*eY`4XZ,mޠ@WXR4U |yZytt-2_TP-L@
IOh
ӼP4^'C5S7f*\=°ˇEu2XӰ&5=769gTQ`evegmrw wNd4eT֭2Z+w`ly{
Q&{I!_X!.PK
     A     :   org/mozilla/javascript/ast/AstNode$DebugPrintVisitor.classU[oGfdLn@ı	.4@.+ukL8I!-tmO%]k=FmU}TKZ	j3}˙IPs),ۜ͞7O CD/[ь!\7p"XPEX2сzGaLQ-ud
6lD7VX5ВnnrmZ檎[$8z~:14CU5ۭ&ʛ)sC4~
xDAλ$]G
aHn9"_--/TSVD0ڕ R;)A8e+25[Y
;
D(0_ϕ+>3wmFah.b<a"-$Ca8)O%<S\){G/IT̊_
bQ [~|h,$d8yk0@W!*oaY,ǨOR;yEp됀9[xg'KX(GՋ8RkA=n<tT4*}W#Ɛ.a񣷤fSj+2ݸ7FIgeI|wR,{j=mtiϸJۉNq6Z5f3^>DqdgnYpz&F I%`&%v<G<@+?Aԭ&…F(
jK54EdmL՜_RjН澭h4MGdQCxΞ{I{hGq1ɦ]@X
h"NӷKWpQDKoӿΉ~,QYUqm5X*ɎQO(W'H?Fh]WtХL42*C5qRQwaB/$&U5Il)||o[>aJԋ}GLh\ЙJ.g#fZ&COaXkԭYPK
     A     ;   org/mozilla/javascript/ast/AstNode$PositionComparator.classMo@߉1
|%|TX P*UA@To+lx#{͡#̏B:FDY}gF3 vPfltPB-mlhjIK8*z{H'jWE0
J?D(H}h	Ůվt:
bg|,ﹳ_Ʉ=W3bۋ "Ifv*xSu,PxGHXδ'$Otq%D:0%ԗ
{E4񞍎_wNzte 'ЩIzKҽe2J
>c	4G;vq.h\$<v-VKXS?Vf*n<e`c˨a{g 2^cǖؖZ@3ks gqތ)5iƜE

V2mj(.
Z5p-Ff7p.AuT~ PK
     A 'y4;  $  (   org/mozilla/javascript/ast/AstNode.classY	|uo펮	t wdNs!H4jwVb06m6Ij[!;pMһIv#'&7;Y-+!o|o]{|+<~C"G?u!3!!?s!o
!oy_үZxw7^DUzKS
1{Ya^J\'{h^bHK}\B>T\	*OrW{õ͓LSDdzxu23]F,!p2Q^ԻAATrM*ߨl<Wy*Wy7PE*/Vy*/UEU^r[U^-*TyPym*Qy*SC*oPV7ܩrʷÛ=;ӳ!7ESt"ɤzrE,J)oeoH]4_%C2ߜd6&wL{1
=fޞH4%EcP@(NFMTiy*ݑKX4u8ѯ":B}z]6eXӺP?vuF{t&3-9cxOS[<%9SiXڳLoqʎ.\!8!u@`]նih<nar߰ɹFΰ#׭'B1PlS(lN:ӽQXo8UߖE'GOo/;7+wLZg;ӡ>8ĐaayFED&pdlctt Jd-6g<Ht}XP$7R}QPXJoL$$\ANt&20޾>-1vGAQ7LK|b7B,x=eCaݕȾbR`SXig? w)8;e5TJuF#={p:e6_hHwdb1<G{%{nmڣC}MUk'grFz,T*SLU#2b}FlB~tUn0\kXB%߶,Q
􄱳5M:mO_y }  vxe<Í{=<Igх;:ckHzWbwiǕHPwjv1G[>\k8$x#VF$i_[*4/߶,uTHjs8ffkC@au!Prٔ**AoeS<Fht蠐it}FB>!s
j)@whYziڵF/\sh]iaG4QxQ=ܣq/}AnG5<Ӹe
sv,b˓=9N0M>"{Bhn(.8BkGENic52^]8'uz]uw;xge_l?]`cLu׺wk|E{%:~ &].>6}NC^pA4*̛؃S Ӱc 3g faS?]d*7ۨ4LfI?"e?1no^Ln,[*S08,d5Wu%(d&!3씥t$Pp5dBiP?ޖ
PwԕhE1[Up]HRoIĉk|VI$Ҽ)FlvG>i~:~O^b6$]tLP~U~ҖPngg ́
!:w}gRq&P?i4Βvfl&¼r	yvdSxoh-CGwP,5BECBJo3{vI8/,pLG㜊OĔ$9()ux*+kX{:#%iCQ}UxxH)d)r>i0$>I-А.<?SK[	gTD*MN2s+Rg	?A_4eYKM2#|t&C,A8a1w_αe}ԲŴ۝gט}{NTr'+?a)riQĽkɳT]wʛ5R
6D@ȳ*<Ms0X%
U/=I?}_~X/.g_^ƞ/M0C)RQ&2HX~;-/Cf<l)E
_`+<_)p?9,>SSc\~"u?-:4kG=y^5 ҃ ēVTL#oVm_Tzfл4.hh1"G-S.W{i6(
3BbJKGױsP-%_J"D}!(]hT0 Vm',7Ɂ+HJ*	TU9fWcv)HdH0N)F3qA+7圫:fFYyYQsƟTY3fd/$/ѵN9]6a8~ Mlziֹ{jl=RfŲO0Eh_Kw¥T[}&
͔E|궞[O4u4zftATJ2^KMܞcl+ƕ!Pl(_&=An)UC!gKqEsW0~F{fsBo
鑻2Vyw-9~ez7uV	ǉ;+qEV̋b`	)4/3ŔB˅ Ϯ
sJlN9K,}ہh{wAc#|.vUR#c/_Ӹ*$J$<9F
F9N*y73WΉNC t%~<U4'/Q=jዴNEeÒ8,hevtHYy;za[蘆rJrG~F{GaxJl5dhƲ!yf?o$*6|nX
I2,fIafM3ɯiM$ѻe]H;\|oC/!Wm)"'Fyq:J#R;jp|	LY2U`8v>͏WǈE%RD+>Q4SRBJ)ݤ2܊hb~,1xZ@RoXiY#af)v_>Lcט-Cn8N3-mmDRAT\u)R~`f^7)*FїSuTtP>GA(%;"%";8MOӒv9fV+h='BjM)~?u-y}`OVcjj'nkܕ0B&2§|Dsr?暼qtswe_lv8G
-j˂ҔMS<tMֳA	l|mOl}l	km\$^lacMz`ڸLF
q.fq7x6ƕxm6(xn㵂wX^Ne<7
m&!m㝂6-8b`݂8,6GmG^g^1gฅL$Z|8gv:k_|0ݵF@WFE@^Os촢zon$j&|0nƧUvVhi'O]<vs+!>F=|z}D˯>~bB}4J(s_iFJ*ݔRVPF9J1C9I
R^;0>Wr{5tc:h#tVPrDW덞%5R.;fz(5MxJi#*8Jau*-PK
     A Bx  ~  *   org/mozilla/javascript/ast/AstRoot$1.classTNQ]^RB/BAF)Z-ioX3@W` ^|$裉dLI =u^2ןoLa+HDRF
W$9*!-aLdB^ǵ&ׅqCF7%ܒp[$C]םC,oR75nfU7:nzqX!n4p"*qnW5<]yKSjn83Mnp2H'~m&T&ދ*YmUʒZm0-[㋺0Q_05rtu$!`
Yѭ i3"+V
f10 iC5aj/<x-wڔxnK7Jf.XѪjsӍ>(2`wű@
qO}ԝfOhmk4cnż,5xr
JscOTŒpX*swś]	]E<6 V,1{Ir5ڞ9X|ȵ#OƏDD"YDN'~iGN%wÜ3HSGhD8XL_?#!+=W "ZLS]P|5}?;#
k
xKaT^L"%Jhv6JWecqj/PK
     A ?!3:  
  (   org/mozilla/javascript/ast/AstRoot.classWkSg~^X, ((0XE[PjcAmmd!n6x{k^fW۩0Ouӿck,QS۞y][ GA|	vы HpIxYg܌H%(H nL	lC,	Y1d|1.䢄W?+<7dlÛ.IxK@RٕT3-#P7ǵEêQuBd-=%b&PӇS55ltpdܸ'j
2qSO[5cEvB*:t]lw	,SZov|H3ա$Tvq59:E5ˆX
IQ>6h
5umqo\Ɋ}dY\&8C~X&1Ki{.@'>D]\F&s{J'􌞧AxI^`΄3X6b{Sg2ICˈY3NTQ8b$p$fzjc#e
Z(	:Փ	l%PvI5%<ˁ{i&0oAh>$)ƘaCqb'c*؉@"gcZJǆ
BKxG(xSx) *lY>0tᐂ+~S(&ZWvAF ӪzU_dW\ç
>P%戂8B9
lX"veYt+()eߡ_`Yv{GuaoaYl+m	=tܮ-*>(10񤦒QW?TMs8҈[4=y8u
jq.2՛$
ηQ_~棺N:ʶG=l+P$]VMtZKb2)K/~H٨SmJP}Ͳwk 6E>6rfhUZi5AUM~-wQ[G-?Ɩ=vlV+J
/
m-($0[mjgƣGp	zư{~C
^q*taOZ R茶#|I2:u3($\G
JnC
5O!0.{㷏@Blko;tӽIZa;<:HJ3+Q$}A:~T]/,K	wPE,Q>U7țPɼ}6$OnA#]Nes7GȮ烨!j5WGɰd47`5|G~H8'AO{2xZt%@}Tؒm#n8X5T=q:=AN	~uh3΢^Cmvz[T㿍@'kSXTY+j¦u$ãc$Cx!m!{3	Ӄ^[G6cv}#WXrA{vHmǗSn,΢~ݝilf_ÍG@%a-)V뒨$%Ob
FD]fmvmWR9W
(=M1ʱz
uc(PK
     A e)*
    .   org/mozilla/javascript/ast/BigIntLiteral.classVmsU~.,K4	jR|6MKJŗVfa%3~9wɚ0ss}_ .`	7Lb[Slqʫq&{a+vx_OK4xWs^tSiw٩خw-3:Mt7¹|C r&SU6jMKw[3}u:e%&UMpt#
{])*@y,&Dt':*3&Gs&	d˯k5L2c4zw$c%PTm]t[{4lcn7;5b88œmxK ?;=Vx͚u\T<3_{T
Ute6
M\{`YqTQ8=zҁ8Lf߭avZ=:vcTQ!5R:5eύ+{Fn<?13zLq7sՓ_`QR?
}PLA}v_WAh*ϑA"8
+Spz2E$myH0VQJ,},^UBc5NfZ[Ύ
=Þ.a>,r
IOС6![+c"qH@A^0K/!ifLfd<R'}FVtRyJJ#׼#╇+nq}'r!˘"&F-ρҔVU^t\hj2%
PVt#P}IQ6ٞ$xX?QU3G8-1;o$~F8Msd8Yo<&/C٫h8	qU
*aWg,hc!GӉ>JN/5'!xPK
     A -  =  &   org/mozilla/javascript/ast/Block.classU]SU~N6ichJCBb[
TZVc!UAjWd-a7,:7Noa3NzOt59'yl~ Ê!)
;īJ˫fb0%YEqMu:^

E
oJ
X$A7%NwE
K
˖m
̙eМS1z-,mn%cʝylT%k3Y
yZp>Up2UsF-Vc3E9 Xs
LS5mݨT]57LU9pK9%$)D]g٬(YK`jثEn٫Ve<5wM!XQHݴ.,/5ETûL߲5\Z@W[
NT/&/	:^DJ%gݴu,0FS{qw1!>1*MRh2*:L|aUpQaylVPtͺAǤ?L9FatmX7vkQ6w2{hoc@j91ښ(ݤ![r,jKYFzŹ.U9gu=<H}`o8v4zv*ۋo~F!؍ $BHϓيKS}"|veS֏0tXl'>$;Fx
K0heq}\LD1Ɏ6Ay8mAg<)-,YvWh]eSMt4G	4]
'
3J#>%é&z%8n?Xyn#>'3\')F,ۇK:sc?|d.+F|Iυq1Arfvy3'~G5Qҷs܍#Nj8a|)Ra?*|(AɏfXŪoܿVhKu?%ª]egr̮altF4OuDOS*FPK
     A ;N  B	  /   org/mozilla/javascript/ast/BreakStatement.classTioW=lc!^&`pBӺK,iӒbb'0%R~L(ԏE	Bｫ{a{ Q
b4ɰ =}$l 6?[N<n+a7!|{<`W Xt tS`!װZW4SPk-ik5}CokVUiFE0}KX~޻挺oJUJ&ybFY3w5O@jXP5[u:zYi6(Ud|1@g^J0vfrIg:aX>Қ`cE͕(z|FZÑoך(nmL GM^Ml˨W)WћVI܉L0+AjCeph]lX89 g0gT1NXlu{!Glù U|U11
̜2B1+f^GX'6*ʨ\XYޱ@$Ra
$_}
Kf
v4K4tbmVKmۦɺv^eUg}kځWï5z"p9qRv'x3G%0xdWFSc3)EH$tCȞM:CɉߎS_ l^*s^N
RKnJ۫JyD5<&ߖqrzb@|]p[,R%LR9n3趙rݘV݆i	 %Y_:/qrDM.\D#S/(ݯb6GzY"B+ <e^>Ju0W-1OXOYUJ(
qAhyzZrpX%fbOOg<:8"EBX%4{umxn
+'3
+'~rO%_`r#AL
nOKxwPmyS{PK
     A (s  b
  ,   org/mozilla/javascript/ast/CatchClause.classUsu6MMhBtS"^UP
U.diMkv[)0Q_3Ҏ:#M9ݤKM;9w;mprpU2a.]cq7	W3|&Vr:4H2j.MX`~9ϗITaw_X2ޓQ /kqmQ_4kEQhymYK5r
ɰFjp*a)7l1+z=Y2-~0nM_X$j$b'H(yQ4^T褫hʔV3xF9ÖkaTWіl:70a$hnUt╘՝z3hICX0XjJg5ˋ`GJp5z:GZ2O*QZ"JEKT^=6ZMRQRt7k>RDE,2tUgNͨhY9j0{F
/N/^yo]=J?4k",iyP\#<AN 9	xh.U6?8
q@`	#
b@!VeܖгI>Aܾ"MJָfŇ2>RpX\a^9^Hm1?F4k_T|>73QVJYjYiW66~wۙH\`cʚc=T>1hM 45ЃV}G(ҹD:ARCbfQ;q!bc$t
=hn@@7
Ois܃)^5y{8Np:g'Ppx&	0}jw
A"ٍ$A	rR.2:k@ y,8y  Q=h1_\=+^:C!WW`aᦋ
 Qcؗ^R;-q2bh ŗ1D1Y4S,Y8N'6MWj T3ŋOg<QLU3sX/Y_.A\n8b(^Z9a:85fG$ gDTL$L&g"GƼ7<"Ivqu;J6&xz5g9Ώ|+8Psͧyċ=_H_]C!5U<ԵS(*vzWIqﮟlجbq|NKįהoۿ
|Kޗi>sYҿ8%ӄHuˑWD&D^p4<nIV|I_vxD<O/T_}yUTLSA_%QPK
     A ]૵    (   org/mozilla/javascript/ast/Comment.classU{sUݼ6>RZGdbF$A&;af7E:6:39$Ц%Lf=;{
Sl8[
>O`b-;*VTP愈㞐A'QǇq<ʨ(XS![;t[}W[ʯiNm~	)
/ڶ,A+9n+v7-Kw^5;~lPreڦ̰.Gd1D
NLLۨ촷oY2+[559PFW&ѝ?, &
w2fE,hD*F.y'}psz;Nt/-Nn<hpOEYwv܆z6!m1XVpp|e#N)L!{hjfM:$vF0<(eSq9fp8N(XG
u񥰙E9pW_'qRP9AVK`8;h+rӣN
(,:lD[zFh"i	J*oE)YNǰrQZZ+<(w+t.mKGFP!Q_DM]~@QSk0-R=Di!qܤ |9B')$D ,%A)BiZ"yڅ}T_AcRy[= 2xYIZ(R0EagէD`
!Da! "IA$	]ĺP&d	jcрW+T #+`ϵ.Sk6X0N?CMO/]LTiJt['鎦ZA)l*$38}6X6s	YݠV/*F_Fr%(@"d&F҉~InB4WD!:PK
     A J#    6   org/mozilla/javascript/ast/ConditionalExpression.classYSVm C%#tK,

RaɑdMڗ}2|L.3}Lg:=Z1K.G:9^+3UVLvyΰyih0϶bŖ%^Q,G>aGJs5 ok[^KoYuPdm=UMpi+]f?կQbrJ7g-GwYP<GtSwJ&%HBftS.lhb1ceUcQu{Ɛ;.>f9$EJNwFL
kPvOƗtE~E
[#7QFǘ72NI8G=Պ;Lu3U-:"2yUSj+UԵ歂e3e>9Hwm\U崼.!Hh=hA7r/n.!ulZ9eJN !VĝЙo 2z+%tF#$M͔/`6"'CÐv5@$#2!cWeؐq|ux6aD%c&c!sr!0OS8M6w`\
άlPs2TSͪfR#Y0ZXЙ,o[Yqmڤ~a5̜sÍt:PJ6agz]
6\f1wz3uMEY͐]Yهv!7vQDLc	BQ&U.@?4s/2y[iG4v F)z3ED/:I<
AJ[>"'	&PPW1DI(	jVs8I]_Jaa*KU)/igĕ.)eF4V2ed2r,d\Q^EDv_!)B>CE+|.&#顽|?We}^/5U-Q ń 2p	$,&y?H1|tHB?
^,nqF7.eu;,VO	`tK}R>	`:kw3>SJи48yAlj%[3\zS?}IX_JȔ5(u:J|%ЯǜrߛR~G"1*5닌2OJ)HR#.vʊ[%qR-'7PK
     A 5  
  2   org/mozilla/javascript/ast/ContinueStatement.classUmSU~nIHF^䥶@aHتZM
Bm&Yf7,?:#a?q<8{ps󜳛? r+=(>r/jkxz}XfS`#Mlk;ga0	@tS`<oيaZv_;ŚQuZɮi}A h\*3,y Ll	t%] 7,}RkZ$O2o5sK9=.0׮Ίm9uo8Wtˡ]Vm9j/s=n	H]%L:"{HMOLԛY.;Kjx^xU=#a֊dyȚUn85*SvwI:{zA`La%u:Iן6dlH	t u?231
n)x(x.HoJU5QQR[dPP]{0HۢG:Q8Tp>d\kR*1lz%BbyZל5Y;4M{L#aef;z֯k5	:t%n9$BZ[%٭=%П:w:[Ŏ?8}G?#izѭ@9NO/莩'jct!H0
)7pn> au4p&LT"Db
 ؚF@l+RhRGѭ#ԄD7=S~^	ʰ^u)h)n ܬ*nZT+N¯d<^;1u5`W4!14擏Ix9H)Wx_ORsz1 ~ADH:lH!iI٨>F[/Q2IB?@c^frCM9Mm\j7=jqf"Vef);->7e#^oՌ:@+ۙd/C;ɏ݈y50Ƨ4/|EFI藣K>E|$gc|BM0_SHZCK3

LbH4P
(GPK
     A V:      2   org/mozilla/javascript/ast/DestructuringForm.classe
0ﯵ:(},>n16>Cͨrz? vXk'v~oqQgR	VJiIȿ*ݶ7N۰ܕ֜UWϸoCX
ӼoJ!BP׈ѧHFBHPK
     A ۞
(    '   org/mozilla/javascript/ast/DoLoop.classUmSW~n6,K	TPaF)/PBh@
jm&f7Y?:S´~NlCLfνs󜗽 0yVp9̳(qA%EUpOYyw?|(RP
VxwklŦ
tU<״s<+_^َcw}^Z7A~,{5-öX+^=tEČ@4;!+@ovj׍CtɫΆ|`ۮ\~+y^ǲEy'""ږ͎.!ߵi8lnYʟʑHޚW(߳BanvGܴj@^8b~vLFewɨ,Mr3
6|8`u7[r=4\°(0uor5<EeՐoLÄ;=&5<AU6=
WFNMLR
,j!Β4nᅂm
f{MRE,xYbd{-nkU	d/蛤Y1|˥~Uc*<$ZrM99RGÃZt^*be|I7ǝ8%߮
g:<ǡ_SУ5Ha~4rGCEk:-^К!"zbeiH'
i#Zs4\Q>=sxJ)Ơ皎!(э#=3tD$HM~::ra(?R9Vx
W*\I=w %7udoPnRe'ۊjL2qjQVj7Z

%*3F$"#ā$P{i\45г9JO=o Et ԜizVMCҝKQT'$1Gea/Po]<=<Fm}7[Xfi'-&!O^0C3V&~M]yEJG2"Th!F!i;#PK
     A .asv  
  +   org/mozilla/javascript/ast/ElementGet.classUmWU~nB^H4HhK!l(/,-R@hinmزlV~H89QgnM 9̽3sgn[  t},x#^bw12YyceXas51tX[罍(b8);#xseWrvaZv9EۨYqwRg"̂ȑbcX;+LOl
tܧ=yҗ
L+Elmy긏tXtsV(,-S\3jUh,=^:Fx[t*FsTSػVۼ2f$V+vjO3lԬrvݵ
L$C%P<ub~0K so[F еj%MDNFOSE* 
R:g[
^P0iWT-S=CH
Q	n+(sܦ>
J#x.,	hk]<6^WiG.&e+Wzѭiz*I#UU>='%KcU
7ni\rMɵ5V/hW !,jb?du"9BI ݔQ*1Z9|&(uQOGeg-Mg?`@M!r8'qQy9XSIHȌO6O!NـFz&ifO!%[)d
tN!+ 7>PX:Z[3%8xkM!bA3}r2ԐO2%[R>ZWKj'jKDmjCqjOP[kI?г7Ťwb4	D
2'-OyޒȧO(pG3<F9.//a)KJ^nӸ4ݎR{sz&d
ۚ
+KǾO.57vIGPa?4Q)Sҽgh"xK^5/\7\bf4~̆WHi~jDk_J!%ܓ
PK
     A q
  "  0   org/mozilla/javascript/ast/EmptyExpression.classn@ƿv4iJHZ |DP
)RK qs+]ؖ(g*Dafgw s
*pbG2hJD&Ḁ58c!C?v{s+'W.8̉k1pbMOum=Qaّ.NqʫOZedu<
_ٓ<˵u)BM;&?mcU}ji(#a3ZR[.;)աa9oOGeX^m52"<s. Mt^'+ǓiO*S St ݜ%|W3(Bl9IQ2|ly*.2f}X
(SVM)LvJN*zc>RqsłrjV*^+f;/+*UDJkK9O9jBBN]Tшq/PK
     A ull    /   org/mozilla/javascript/ast/EmptyStatement.classSkO`~W&c'ʥo#$j4Y2跎5Pڦ{!  QsP{<~	!Pb1q|i1XRA]2{+9i.eq?5s@Rol^][v<{ױ-Rw-w
wKm?3{Gu-udwC'՗^ 7%&WJ>AEK r]6ә홛2t=bHw@$ʅ۵CN<r:ܠ9܇82@@L=*#UqM@؞JJrbME`fT*ASOh)e\E
KB,\/7!%:u`nXA`{]:;BS_m
lM'
B:10&+_@lI%1F$g1i:ssܨA6M
	^C@Lfi+1Y0 xkC)o!eo<
-Љ+h?y7@Q=ABfgc7nk\=QE)HaK7	
D/\<)q-vPK
     A 92U  
  /   org/mozilla/javascript/ast/ErrorCollector.classUVUNdBR\$Z,Z%V-b4,[=$0t23kfR۾Ov),d-/{}\1sg_g_LMas:Sa@G!T>LAGc-Xr
܅OpKV<Ě\WuTCBx=~iJ:W̓̚''gJW՝e<+9ebs6-QRČi,CG&Ơ;Uydڢܨo
o-Coɩpk{GJ-6	iyǲD%p<ʨ=۴k<B]˭)T^k
[Cw^Ey]V$WYYEmJp"%ZWBnV35Bx&Op[
NW-ۣ&B=lkߢ<[$'Dw81%FJ&PKiUs+]j>+᧼i~p٦d01LGG<@l`iѣmẎ+<.lKms_°*0>B[ҡf`&g`w
XxP׶n|K;y=ŽX
P4P#抁DFh˫\9bm[x}AS6GͰ9G}|.b*CRţ|P(1ZFJM
!6~Y+l9>UQ>m
L>&i<=1@?^DdzDYt큍 /[>hs$#xVx5U%)LfQM/0ΓȐSRcLJӔ4A8etI5=دsO1Jldг#đnHc*F$ί]3iv^{TRxzQxdg\Étc<J6[4=	`l@8Gdu{ݥpaqb=b~^E..kEѡ`(FK4[װD,+X*.}6Gl?v݈a:E1\W2 PK
     A Z(K    *   org/mozilla/javascript/ast/ErrorNode.classoPǿJelLAŹRtUć-K-ֱU%mG&.D֎L$s=?`G<0n+<
KSu脡wJض׷ʞ>d4KKs.NpbD߳];p
?[C;/wYvYJd͋H#X!kl4gSe_	"ؿzBҞɞ9αC˘7˅~ 
1	tk/nd'鸁"C?x.,sSQ uԱͰ0͑Q,O#:Mǰ9w	vyj2| y{03s	+y$[DR&"5J-2tLTYhXX2ŘV[㙺YMIB!^5A'T*j2݄oz 7(_R"U*''+fU[nPNcjP%mI7B mS)HxlNC-;r6r+S\kx$p"gPK
     A $gW  	  4   org/mozilla/javascript/ast/ExpressionStatement.classU[WU'(Ж{	h
2!fbf`@A/>ԵlXZ>or!-Ƈ3s߿	LSv
H,5#֬'֜},}Y΋Pb-%,&"O:</bW[-o,6ƎU7<?gݒ9y޶+DCG嘳[fuXSt{ѨZ7c)p1gμo$o˿Ͷ־ZQHpQ	+ /-dV\&
lQ~g0jiEǔٴdVɜZ_7|/hN]]cfCEۆSU)6^2+B[U8qĭm.qgw,b-sĻ(jaZu`^-K+0*
CǦAaDÛbbMCIA\aTe4XP*U8~HQ4kfpFJ77F&6}]AI͹_ vl^tڴyf>m|ou	NՀ?v7ͨTL0=(:SB7qMIw48З}F[OWyg.f
S|Z)g}9wvg98	<
CME8߾Ӊ(G&,	BI/9ߩv<AB!.h&4qpv%b:nM 
yGBi_ɗq Wc8s4\`\\Nev~HeIc\syV$`2y:ƹ}>MOpd*v@]T
ސJ,I+wG^'iqgt<kдworΏxZΚ{;eg
]a0"Xn~#~v^}c!\ʓ3BqO\C7E{XǆMk/zC?
GgfXO[CpQر?=,TC oUQ>x`3&eL4rb]I6f*OB裸9v9zoN'"x	5?Xli*tFnAKМ:PK
     A kw    *   org/mozilla/javascript/ast/ForInLoop.classUsUݼl4P*MBnE^J$Hk&ٖi6n*_82cQgs64==snϿçab&/Aeyy[aZ.6㻼\E	"F+٠b*Bh!\a&̲JWň xO YX!=әYV*)ʼbbe3hye`	i,M/*K˪<'HG'ytJ pX+kQorpBw2崲:27Wq%_"M<҄bh|v>f
d9]n_2IlTR	adZuc"b6
$IIl7W!z7M%'9XxI˄F9rC5ȑ5ԶՉ'Jf6kB>"u2%<<MՊE@<f^`
9TT
2YJafXؕF&y2	$`Cݰv jj78q{a;IHc~HHb@{Z>]U\⺄pPB,й
>)	7p*8=D+&%SGaIxǃX'Ma	wp;FpQL5j>j*Կ\
PZ}zk@vZ12ʌ-C@TrQ`grelUzVmf[
lLv27cؿZOC^w  
|,eґ?Lٲ]tv@!{+Ǯ/>xu hz{λI+`#:'rbEOڍ0Eo{͎D>w݋>-QXF(&Bu:x<혧pI! ~w~'=
뼼iEN- /!>L!F6g(\E
B;+;GІ	*Ў8)r&+|ԁmY9 $P\D\prHB>U C8d+zH|ߙ@@\tmr|n$ Z,'_h=ᴜ"VEt<΂q}5e-xUl-M;>dY2J7;]U$q!lЕ
c|KͿ3m쏾KU<嵯:D
6l]zR>k}N|IC5.L[X!~hx)zMQ"p)b +C;8K``fh{b.>zHB
57
JE/mPK
     A ğk  
  (   org/mozilla/javascript/ast/ForLoop.classUSU-$$l6|HA	ajUhؐb~IX
طN|Yg|ig0y$x(˽=w߽OpwD>lE.#6/4DL!%CXD2f+a̅q}-)7D-<B(P][S-s)k+eeUVq2dm'oQE(QiZ3ZV
G@Мp9PrAfNx,*bil΀/0iZ9Ӭ@2[4WLɬUbն:
&V[#d DNluF7]J^Isf1g̪UFtRi9&+bfƱ4ctw3(("XR+Β& gWT3R\R*nIV!fpU5ڷb.wM˭ZXp«`R3	GqL@PjHX@xHKx&a$$3~{4@
HQL+&PF4%$ȰϤD	uI
S3ø/}N|1VWQŶU䫺2v
jqc?"Z֒˕XVVԬQR=
--I\yt'̲dCXB0VFE˴w&_$>z`f4rhzqw@`x+Cc_<A#7m	"̓dI^8N"I3C
P(#uc
 HXb./╌1jG<Όʽ}6=a^B6jV\2wCc<Αm55S~_sLNSOВkoSw({z8vjV:ɘ{\L嵆ZwRoH}6vs_f;{PKN7&v!7&6voDm~j>5z<tB"!M5]M݉;km|qБ湆r;]ct}~ g,Q#<\Kp=W$/bs݌^5<to17c4JY@DZHXˤ:9WP
zk~{T#V|Ss*Soml[A|kX'Qϒ0P3F(~6Ǒ&cm:^?zGH@:/үowێ?UyLg]A>PK
     A 4    -   org/mozilla/javascript/ast/FunctionCall.classVkw#ْ,
,]FDۄ7?&&t,MH@6ȫi yO|ɇ)Y?$!+>3la{9<_(NnÏCyN2E4q^32)łV
e(QIb#Nq%7.үxNv%p^xAo;lx%
Sό;< =qV_U״fݯmƜu
:(9yӲU
Yvz͏VܩR?B#1Ww
Wh)W
ۭ(Xe8a6\1*(0mc8g89;RAfu9lqϘ'v5KnYDҒ?rq_  6DV+̭GG?ZOIޚ
az6
bjeǍ<0]+S}l^Uo:^,.C`WwBkŗdXٗe&[)Ue} ng\Ǵek(gZ9nVphdVLw%BYRnb.XA'}Lƶ-&TUnyVлV\܃eاBÀ71b;Ua'F[+x[;xWWN# :~N
.+^#*p˩ rѯO"ϸ_T_exB<;AF
W%9Uw
Gg=`7Zzb8Нr6*sgχ]
DuV=~FLϹ^w[650P7/ve]ofr32e`T$Iq]l}
{c
ط>d"uc%2YHWR|{7n7p/WҚRh2q",ZOrzyoNJӼpj7h}7z3S]tlAmڱ(]700~zn"v7[9f!:h=m.B`]VCCzzo"~7G!F)Ji:6D;p$q%yڏeރ:h#I m!GڴHh5$@34xR:ht2]Xe-52]CS3ڀ(㈴`Cc<;0
RrC?Re
:B[PlfH+:]5d^K
{8LţD2dO2caq2@A#~$
hQ;G,#aK$葰hPA6>y0l'"I4O֓t}}i9P\5Ets(lnǫj
5m$h֯Q]Հ("yo8-j =j U,$ 91ޑZ۽4<Th4D'|`~	S_zjA
O
5lLL.`
z55[_#Sa[oA/"ȴֽ^$I70_=PNJq<P{#	"0th@{#	0[F@/ef
r7r(<DNz=%0{
&ǧ3`^O{S^?PK
     A @y    2   org/mozilla/javascript/ast/FunctionNode$Form.classSmOP~.֮C7
:߶ؐdn$JkMd$b4>^%{:
qHXQq22H ͚Ik<⾂i
R7p| !R٭;T6yvPrN0Vyhvyf'+]
߫gmKz1~(7׷䅽ݲv\&;tT"0Qu<mAw,0<Ty!5na$e{fgm>MUp<'dH]~'G[N3n@"P
O.䖽n0M~7OƬ|
Kkx20B<naA$4LsfS3D-HT&;0[}BR6*u||1G$A,ZLs tS}ᘘ囡H	q
$SD>cJ6&|%ǵ~:FW5)-}F9vԁidy"Ď.6;"f
2dτ|A
#'PDD
2&xL	HkSahF{3&c?+H!Jvc(*}VP4e$pĸt
#YLPK
     A ÔL_  %  -   org/mozilla/javascript/ast/FunctionNode.classXi`Tu>G͌FO 	X
f_B@ 	Y`140gY8v4zIm9v$c7NZhN'iIfi6q۴.I;o޼yzʏsι~e"Zñ 7
 c!mI}i~?˂	C(@?H~P~&ͿѿH")dKKOTA?[
Got	[1<i=B++C4~i
	HS$&MK츔p.Ar4T	mhjY8_pk\B?/b?/
~^LF"ih7d
?"oUaY5|ӞH0ilER)=l߱H_K[W[w?w0&)#7Gbcz>.XnmCWj](w#B0v=Ty<2i3h،P<b%uu-PHh,i@2:j4ERFSKNꛛD;23%$##Бhb4SI=X"67r& ]*끜EDS6I)G$
=i?=
~q]L2*SQ4SG@ʾu6BP'8|l5n:띉HKmۻ")23ޡA,GIQPq5[̔߰|?.UQK;q{LG@	*1GQD1dg~i>	l֣+S+ҍ㻡aFަ6̊oq8՚A4@+">#m̬:72mBs"tr6-SxFY|dp'͢~F5f&_49(lQCe3v6pR-T[|ZJ2sTz$Xv8[Б6
3npPV]cQLEK-dsvM	NAh_QRiѴ:.kD8,ˌKVT ʸykjs0!l6 V؁|C1su!@ 2!)<MD0ﱸ<qc1#72Y#xGS]1TcnZm>'+mݹs}3bu9BTH%ƒV"OA}SGsʊcؠܬAK28'6GSQ(q9DR53ze ff@$Q	^)Kx3j.:Q1Lî?qBktEKC
S[4JiL0FIh7jMmew`tq;6Dkx;y
tF'(N3x]ܭ^YzFz\[ѸG~zJqǤ4)iN߁bR!
ý}O|@o.{9$bLs$YFWEk;`,EJ H#|'h
G^f9Xxx-Xꨭ(}DtzRh|Ln>4#>j|O(A1Լ(tDtɍH.YBCiu&[5c豨\Z@L`®	Pw'{>`TW1b1	LSW$x?, 7"Q;	KkuNۜ.Oz)Aђы
@e"Y@4R'bx͒SYm\`:^HT33n2X+ ͻL^HT썌Rbhfl(H[^xJ);F΀VԻ*Ԑ5Q(LuaWfSJqY2"f\pY[4*$R{Ϻdj$bD񦯠j:Hvsc|m|;mGm/cj<rwБ#T]}O}7exߓ
4~H	ݣ
;1::r$Մ.SHS*WB;hzn2Jdh&I
Cɿ.M>:
-HY2ҩ 40**0qQUd$K3YfL,CI*#ڨ04{[z^QL)T~_s#"lZ+Boj4xW"7_(YގM7|J*..Aa)^w3Iؤ}M
^@}W1
aXr y*u>h
GM|m
5^_iV|.QKTDA3TF!TZ1Ihңd	<t<Qap 6KLu.&Vz>:L:}Di4 BT%_K44
QGg>"XO4>K94X6(-3)>L	|<ԥ7vƠbPmeP^Q 8Gq:+)KMOh%&xCym,3I1ܪtcH:5,eTU{uo	=N+[v[؍v}ΟjDYǑz'l^7 !+}l^? NA~*ȓ8)lA n1cr:T&0~_ M,"tK*3.wěs^Þ_MsNIYWAUY9y!jpp
k!_d_9w˝+ҕIW!'y쟷o5	Ce"\j) oBYP)W9r,q㼻94:հ"Oc)>O_0(_A9>,3;:6>u:@xD}';-7<^ 	zZ@cy
H+qB(7O=z}F[Xh}!Rͤb.ӗW2Iq3T/[V="^UiA)$x+yyؘVXL+b}h㚔LnW;=ܮvnݞinZBq}\w=A>yImr.e^ʯ.|f)3Lo,a\(Q_rt^kAN{ۯVZgBb
뺓|W.]1c00eX9|gǩONx^ec]K΀r_Lm[	</]\s6Cgi^8`Lg)6K7n@$m7P-2=gTC)x 0wNP8lU23Z@sN)`bF(;MgF
>C+Te=I{6y uWpa8ؕZ<fpw[KP=ԓ}q}n
A~~'U\Mjh6i;;~:P{#t'(3!z}}?E?Oӛ<Ao\Oy󳼒SWzvڣ2iL}]4?7o`.UT9El1uU׷#5[[oQy^iXַQçux1tnco_2wC/T7qV(j\Y]X/ԬDMB|	uʋ|/f5ί@_BUחa˱ߑFge-@L#|լ0^}/eKX]@ t6ѭ۫PK
     A F  E  4   org/mozilla/javascript/ast/GeneratorExpression.classVWFH/^BSI@#c(^ c5q6'M%}_`!9'Oy
9I]͗9O
B:!bRĔiE,/(J)(G8"4<̈OrlϦ	ey?k_Wj-^˲J59&'T
Ipg,O޼L./.ue/^E㰂eeWAS^f<MQݨ9UҽPpô?kGl2Ḧ]T4-pSkz<T)Ye
"y,Q5qgUAc,#3&gLӒ5;͸7mҟ
$xfHՔmOde_ݔۙ^_hܥG]4rBK2jsQF6e*-KGѯmevfˋaUUPGI@z(KP%z-[(+]^"XEgWɪֳGXzi*79fiJj=K7M
i
0	^6	LAC!7.mǏrYpB[v<0,\s}V!n
}ا!'X}(ixS.I4tK[kRO
~
o֙]
qCWp4K5e453aNvdK?*>[|,w
m<-eK
g^w]aFf,KJmY`
+ )1J,i֌0^X@W<S	/6gWT,ozlx/CiȖVcĺy/H˂YL Yp\8cW?j5y(;7gcfq>zPJَ8/ۆVo%v<S-Ќ GdhեǮl<R6	mVNvRٶ@uhVf?P*pdw#afmtDЅ=>@w "abB,9hhw#CIkY$Q$)w=s܇֓C}F[
SSɯ'sY%x%UE4/B%9
 "5-?0hR0ܻf}æl6y
nIW>C}4ЏQ3<=~"Bv<A9O#-ZU}C_;x޶;apFVaBa ON-r[͇(A-A(c!FI/PWP5Fӓt`5+*#
%RRnoe߼@@̪@FIV)\d*[ȯQ+\5@RbVgaf|3mý-~WIv"6mG"{yGr΃ޖj,myl0QdU%Y௰^%^c_$%~yzoqK,i!}q8glDwVv?.f']1|=;A{q2ț%umfz}:q.dfo|5#igf44H!Y=oaPK
     A ?6<  |  8   org/mozilla/javascript/ast/GeneratorExpressionLoop.classU]sV=ײ#E*	8-*Pp-mh(\L66(M8FR2_З>=Ly繿{%ISjϬ{ٽ+?Op2d3朎̘(⼎M|8ho10k`A]1QǷja;
,pw{=~`Ģ:n?*KK'~ 7Wd|]in->sg1'gaV[mvtVGiMeMxa$à4EWRBuRy29r[ȴ,VtbbH6XCk45VdRm=F6O*3OYb`Oo `f2|nĿ$SX{l9&p|AEaJo!b
}آiAzZ;/tP6u(g5I=ddl'pIY`6X[:n[8;(:?qձbѠ|*pO]h:9l,7Go\wzɀ`"x'vBʛEki&$6"7J@W/ª,}JK8n4ivג'~PNOCJ}xYv!ӢCdӂa@Ƀg]`tEa+T!V3TP%w$C/ɫ'F(hT9Gd:Nisڏ
}V\W\S4|]byámř==&eϲқss5A_¨;v`=a
%{{' 6F0g~25mԁz2FϨWemm6	XuxWǩ-8)I{5+Q(OUa+ DӤp6i垴2}K iyV PK
     A 11St     1   org/mozilla/javascript/ast/IdeErrorReporter.classu=
@71WxEp;k _"1UYx %Vb1<0`@K-!⪨rhܫrZv8$mf6Lhę^&{_ڰ<mp.Zhw{\m:͘@4܏AH.c΅w4_PK
     A T    ,   org/mozilla/javascript/ast/IfStatement.classVYsUzt!@2'!bd$$,.t&2g:h]-R
I,VOZ~NHRu=sw67~Gdy\'xRDvT]0!4d9& È(!;#!dD8BV\yٟbfc"?!JD,E|R
 WP5t.`Eg06;d	8PH6hm.]A]A6{@52EcohP:(Xtw}`G6[sF"O&ϥ%1Mxͽ
|[DAFBޟ!37gzBZh3Eـw6uKvo>G=DeWst4V%xYL8o(DRdT540[QNuX2b%ϛh۴U%͹Xa2h򐶌j6_4DS\&2 ^`i҉41*H<\\ *'rq;N%/&
b=-qkTFREJ$4΀'7bdU([N*V`pZX%d,gE3DP9gY%hCz*.`		"cV20*^_3LXؠ.,K

+sk0\_cTŢQ5k,++=ǍʼSQ}ZD@,5y{9^SuHL,&]>(mk5Zũ<%c)r#a7koiS6kHyrm#u|{6	E\G,>-f^G;Kn |C1h)%Kr/l/r&LQrj馁7u%S9Ǉ),x$Bsk"#g!=iwd˖(y>
6׾GUIbEDA{HŴZ:R"`k
}s@Ƭ(]6B{hh+mNh;mV6B
aZ
-*S7ry-3r/}e8
y<nx+&^@G!
8VKG]x+@V9Nl ]*\pbRgl -6NnzxRi$*kc4bNN-v;d^EͲVh	bIĺZ[&0ڤٽXP\x5u"j[BvhDZwqnV}ʵJj&.wK6rMl4D,iMu+kNEs&ϗN3g8KqH2:%o&>[q
/x}'>ŋϔ\iVZR.+d7S8_t7}
U(+.Svj)G,22_BoLGD6!N'+ߐo9bԠv`z4:VkVl\ZjaV!}9?PK
     A пN  s  0   org/mozilla/javascript/ast/InfixExpression.classV{&l	!
Df1*EnM Iiel&ۙIkA}C}X}o~էs2;ss;w? ùvE:/ÅOpQ_KyHdd9+ҜļQNc!8G2\͠"UѪ+De/i
˲x+*;Ϧ4~c ]U<X}q]klsSF-?=%{@xZ=+zg8ՊhSqqm?B-&}jiqY;]9˝<Gz3,8!)V杕+5}z%T(*u[rpD4zZxFt?9sۭU`E>V)
Jgvp:dX?a*LZ5]t9g`wnx}IT+*xHmpoq򧜒}b~ޞ|ZS%o<aԵ*ѩs*eyɮmw8%ۓް$9XThƲu+Ȅps$[ִjbȋO&	'eA&~#&rx|Q#il\30ԈvryEXcjTz{2XY\4TؕC&?'uc5yCdgxě41d1ޖᬁo	9tjҀ.*6
m|h'8«gN^&TUT­v;^]Bwq;-4`:dV/#[ZM5ܝl
7t"rM[֯T@#HE]"LG.wA}\ ?+DJG)%S3{si%{:% _O|ħ\%p?ǍPG2x rKJpgWlj-46ejkx\!4Yꉦ"j?Zi;Ձ|dVE@ۿ-{c{hoKpUЮc2Ľ{eoWIT#`0.0;*G
ukhngS1$~p\6dh;I]{Nx;C]?:A%~VA#u@:(">chZ8Hf=L|o?YpDt6A.I.D&7# jXwDq4$/v~_aUtuuױec*z
KjFO!ӌ>(acJx3k
'U+_ԭVhPV&#Mx՘%90XSka.6y2yF`r
K~5-E9
Mk\ShŨZk>{
QPZHkU]+<Dc"]ϘJgw,S;A:!RɛT}[vn;nFlLk\9v,@-GLr	LP>^QdAȿpG]m))O2pXc'?]^.b";M2FӀKّ1;۽D浍!叙ObEF.tqS|R1?PK
     A ~    %   org/mozilla/javascript/ast/Jump.classUmSU>y!&
5@y&$Z^m0@@3n%,
V?XptF?w/&@ܷ=9sι7Dt)J~	
bc<>c66|<-i/I~ZӪD>K1˪%@0=RQʾR+Z.%D~D]*;hR0oR5Dɱ
<3B^ե3,(*8卢RPLšj9ۥ÷RN"o2Ǐ=?U `̵|Rh[ 
L͚XꞪ#]ɱshã|Q
9	+3qn[fm^rk2z|eH'=m\kRMx^Y1
Uh)O3nizܻHQ,pZMÜnFx&߷7
mekF,F/-όE/g,S0Ԫƪ`ՙ`2;Y0LC4eZcC&vDuڐ"C1?=ڔ(qLd]իUôrU5K3 L	B+L6S5˾V;q"J4nKF7#EL
&Z{yi4W댷!gg\SЛ<y:Axעx;InaRgs7Fn`ꐤT|m/a `.@Gx059CHp i H϶Hl5/Ǽ,0W`<C!yRm&/yh F;>s@f  |LQdن"`a9K3O
B?M>{l{_veVL`gGZU~W^WzMgxU*i\MӇ$	Em>XPi$Min!"
̘x&,\rBkS?l8Iak8Xذ
GW`)Ff\2ƎL
m=@\{}Z+/} VZ~R߇N.}=H7ЦG$.=#8h=oon"czmS-vfMvM~jS/OiSBx#UOEm<eeͥpQ8^W6}"$~'y3u@Ci>.t߲;}Kh~?PK
     A   	  /   org/mozilla/javascript/ast/KeywordLiteral.classU]OW=6^1l!M0!iPhv7ΖkפO{ )C*yoνF;wz̙?	.#.#		2"04??bx&9nB!B(V<OXeQ2q!0mtQ[mt#笼fh߽ˀܨ0r]LoYhZ%oe'Uerۚ9JN,/[ʲ
ɬ{c%JkD,,S;6H+Z㒣7r̨LYk%FTNkɪyiA8pJc"a5W`h?a1U5̂nRvۨq<+E*qZ(m3ہ!qܒL"nQ/Qt=\܌BA=&oRwiE^rfIEFWC-mkQH'H"ϰjc'	x/ivJUsgWgY3R7"Qa~"5 G?WaM%"(5C96SqZrY/'㴉gW\1\N:-lizTҶ6摡X_G`|Hv[NFg)>\'2$Atɝ{<qqk%_;"n[ȧU VnW )}Upj`Ƶ>|6>% .rm:x &  ^ []/wǿc]܋ǔ]܊v]/.:\;C${
M[d 1;:Z*<Z mʯhD)ϵpnzBe$ZC.69;^AB4SUb?
bz8=)zn{Dy,=YW
,ڄ*_raUj)UnqBw<!mT:|Y1)csCL1fFI<<3c9d~ґ۩q[٪,oImkH[pJ>5[?p-X!X,Cl[Hǎt3Xa5/PK
     A 7    &   org/mozilla/javascript/ast/Label.classUmSU~nvl
,)%aD}PV@Ud'ݲٍɆQgUg$L~kgQ]CR{Ͻ<9ya?	}|a|D5Z8ZW8Z!TTkбc
øO8*C`S1lZ,9(mmm,	$mW]خmVYucf:fsxn%Nҩ_2;~bV-
eNmyBrpX8^W%-̝U0V8"훵M%u+L@mۮW3yu?t^BNj3ؾ@p[.%^ݰxMtL +0
ru|+Gۼ&.:vP$mֲX
Yk7M׿)GKZr<c ^*{Xۚ((Z5<	LmFN!E4xv<AҤmt:AUM*u2feu15;^NZg4i	o
9=HFI:=5qa\OGF.zQZ(hSI	p:Bbd#ǈhz	J Rp4+Dd3!Y0<3 !nL!qAˡ)I<'*Eq61iEv=(RYo>C~(Q3dZ~k?EB^..?eeJdzZpgAOq/xR3T
b9_!׋$b*̧tPJhٕ3cdsp<&ra@2ҸCcB֭4-ב'Tniר@Ywh<X{nn'Ʉ7䛛PK
     A _2     1   org/mozilla/javascript/ast/LabeledStatement.classV[WW&a@D	"R"mX(ې08$q2/f7/]]V
է>Wo
.[d\3	˯ ;?èc~0xˇsy^\E?_/AXuHAe&٤0k~4`Jx^;ݏi8`"Ì5	529	)eFMMƴ'aMBH+fP%8>uMו8%
-kF}D괚6%t.ҟ3㙔JZZ3IpG$x,amLKjVuZb(&mǜXLdEtj*QBƜf,
J]M	Ռ<5[e\5?+.a$1-qRJWì}VWUR)]NūbbA]lUh(t6L"z]IOD'Uȓ݉.ݎe+	ș6-U0ZJ=~4sȯIdF0)g!Ԭ9)ZѼT r	/[eD|1j	"P[sx2v H/0Y!=[M%ҝ\Q2cS,eMޑqA=Z JX2ᰌO0 c;d||-sa_JhY]C
_˸#ՕU#<͖+]`nT
̋ێSN*j0N(NOQ_V[<ՑUqj5'd`MVJ&׸zSd=6PƼ 0V*)P+mqPqY\5"%UyUNյ:;!y뭓qPvmn#F~Ohn?D9ĵ	\XM\E.>Evscmcw˨B"vo(v1ȲΒd7s]9M'jxl$#a+Ijsq"rY	 	N]ƉXlK>;ȏ|
0pkD!<yIꙇ,.Hk=[nbf	2L{L<~^^[ ]eq7?A3Gy;f~@܍.	
XWIab8Ѳ<RMdxMrHl9I6܅7r?%m	0,Or`i;$	vרSG	a	$qcKFb7lXd/MJyqSwF'_5؂AfGﵲ
t<.Qk%e68fsxwq8 [9RjOO66ϥڄ=)}H,~m7,L!fB߀ (ƺgx]ɇSҷ򜿜vߗ4GwUKərS
&gքtUM雜25m(3gPK
     A b    (   org/mozilla/javascript/ast/LetNode.classU[WUNB2"ׂ
BR{SJ"(7S[vH2̄/^gZ˧>tRs;/ M4"fxUo
K|,/FHZaOK>_S>ѣXAW`(XhS_Wrv[e
}[wsYҺ륳=#gvaBa\:)yVQ@LġIY0H@k,Y|m;[otOI17$9EhSL(1]YYFA@]3A$F}
jLG!"C's8r?4/zznsF/QLQ^]LȭxwXYm";;FkE(diK/=,P(zp=X%9,Vp&	itMO yb\]mG) s䆨l8D .ǀ8]7uvè>ĆMxo+RQ 	U[ןP1g*P#*>mJ
Us⧿sv\bIcfu
ْe\߃
#O5N.1]ؖiL2"FtJQy+tOKi3fS<^&u;֞.&3}/4 jY5&-Vڸ-,fߡEv?"sh$>4~vzv
!蚏L]Z§؇|'3	,IhO ZoS3iS(eQ&FLjn?R4V!LK@H
/	r3]әP3nM߹,IK19 FާqjMjDM;bU1yL
֡=Lm.k/ZU4LefA	"4G4_aZe*'pCF	{TQz_֥7^m^XK>WD.S̓F*|f]"D%2QH0bV!ܪw|QY`IVTUШ_TYMSZo3ZgSe.Xex#.H=K]F˪c gDA;\yDD/e4ؑ
*)|()q.aߐ1ɍ~jl;	;=
(Zh쿣}O/GJUbq|2Oe|?PK
     A @H     %   org/mozilla/javascript/ast/Loop.classS]O`~ޮ\W@1:d|D0,pekfM[L7y@?e<m-E{Y<_U=fa`}.8Ը|cT.pXQK<P'Ne>X;^X[n^PZؤħD[qN&zI=k
kqS
@|z4Ul2s	lFUndpC:\C&\!&auOڥ/ҹmv;߰_98vx~yP4Ћx	8,o+(X%o4\T_mY G	ev{?<uibЅLAelOyy-^B3O!L
7j)' B%,QR>L#adјr
c)ԋ9&N]C.@d/Z~P<EbahDG$XLczÛR<&F|5!dرt1cadVUOUh <^$wyh	)"&-ݥDwIl<}V=Udo<]v	D&/*$u^RW!݅Y&BJre^;4e!?='u"Xx.!8PK
     A   
  %   org/mozilla/javascript/ast/Name.classV]WWݓ|V|DmCvC4}KKZ5kѮԯ}ÈY{ܽg	 Ibc !e1/C)$C}$o2[2[^>Kes=y~*1,kHZ˦X+Ԑ.|ͰӴꌆV05j~تՌ*M䍖/K-r.kg5Dחy@Ѳƒ\0j0+FmhZ6#Ϊp|/!<LAÍ:hf);5pkQ0yd:z1`3\qeW#+WccL`ĬBw2aڕZ
[vPR+RVK4aꬪ%u;r}Y1BG-͆JS\=Z!g%bQMG}us6	Ix4yB}ݴuT1)2dtqb踄:Ve
aaMձi'q84[kVmlqEG
fFf{yrJj}Bwvw$Sb}giͬ8S}4ڍur~\CFCJnfEFô:ϸ*؟4Li?O80!SԌ>WnCN>Eg|\9EI>Gp1>j܃=Hgt+t=,M`hP<''l3ՙʨ"Q|nVfSA#Xatt {KZE=}:I)3=&Xq8|#9ʞ 6;ԃTL~x]ݦ{=B}a~XJ$xy,X/H<	js&.mp۟͵"!sue%
e뛁>y+KJ6gGp#
vj3v\`E}(ޡ3,yJvf(ۆ^=1m#xVb1͵@K<.z^dے??Hn\xȧ8H3PgE	ӻ<&ɷe}>u5Eؿ1@+D;*/`-6Svvn[yARs>x_2;oj$>2]D<By!x?&5J׳UP\W
nO8~p%|{S)sK)PK
     A |Eb  	  .   org/mozilla/javascript/ast/NewExpression.classV[WU	\m	I ZB@
ʭ:$c&qf#_ۥ
]
.uB9쳿}&/A\Ø :p<Lr*i$%< ycAc֏G1<f9IX%^aOC_Ls]E )T%6󻚮+ueK2Ve'fWՌlTAc<x>
44CM7WUs^YN3]^ӬL;S,-oЁHIHUC>j5HSo\iJfcF)v~._43d6Q)&H芑K٦fڬZjUcEMϪ nifM+MUX$Q̜ (JGl	\],+ԜJX?cet38!#щ.	Y*h9Rd0 c
unwXǐ1@B"26u?ϣ [apG[BQI/0v@9E#cSԸtࢭ$75<֐jG2=.MeCMYS
:/Dn%M]C&ыmL	KiMql^k}{8Q~\SJԷur}|YI葢՚{(SRcHZSc;yq\Y5%?$xVw/hE yEܠ;E&r8zqh%TӄhsuBbrV1bcָ:G8FEP{:
V&R,*u.-[}d~$΁ {Y!9*͵#<jn^;?-A<U&d7Tkp*#pAz2?+{ģm%K-ò3Qu˾x@9^;pu{(e%[!QbROMPL5H19RUWHħ j஄Y5}[]?ѶXt5#,-VB]{h㪠&2~G{#~Oyt>zx,RɗH2峂a<$UOP1蘪"ndxޠ]߸ʵPK
     A ~      ,   org/mozilla/javascript/ast/NodeVisitor.class;o>NvvvFֲFu
t̜DĲ̂}Tk(FҢT̜TFpȈ"=&F5< I$'e&120201 ##3
$ PK
     A b  	  .   org/mozilla/javascript/ast/NumberLiteral.classVkSe~6"HRl6@jRRXTL˒a˲$C~Tg$2WgQ9ﮛFa=ysaϿ~8Jb$]wxwcrC.[
%1[j
DAMaLS(چ,Vݎ47bNܴ-	|M rՠ28%Rn5cwF#+WZfeFvF-z(5;MDv2EjecV~V3^bGj#4ݚW%-?x7&$dou=qUm:u	PmmH`F[&G)Z@A;k4:R8p@ғyǒ9Q2^Xֱxx5S*᱊'[St_H#DCvϲfGET4`:=.1T@J	uFώ+wMͻͻ{i䮏 ui'Ô@;dc{wYw|'ƱYvC3miMg\~O-{ȝK~6
}ghT!x|nL}V;CG29搤e?`uŇړd/
FR$xWq5V)3a#Xb^B ;ò#+$	4IwόW-zW
f4I3i& xy	EG^}$ǋҨ<_)L[>[<dGdsĦ~Fn՟mZ*L*%O@SQA3	lL:,O4X2ɻBf]8:ޏIJ#R+(@Q(P4퉊^WsgIJ]Hך7jkBoy8s}q@|M>.q#J+#<ـ'KE"B\i-z}"'
/xM_!W"J`5mʜ?PK
     A  3  	
  .   org/mozilla/javascript/ast/ObjectLiteral.classViWW~.LHRZVBXU-*bBFEd!'*._
OOa
r}y~
|SQr)ܜ+r^u4! .
¨C!.*#RƔ2rcKGjØ
.+VpE 8~()P9xQy0F(Mcۺe݃=].eY'ыz9a[YvzM}R89
#wX9v>Eh#3& 
G}Vf+O)mIՠa6?8cԠfң@t@*Z%31/\m^&녂+6HnMfh @ҬMgukؘҡNNG7/}^,gG zVJ'MȱVN5,eIG1urWHfZL2riY39,-
 e8,˔zw9b8b_v"UOYzFu얂GEv؎$7ѢbU*뮔CS'+rжiICcQ4ԭhO3F>\\Wq_*Jq|b/
Q-cfk9	ii]Ch	X@a]U>Dl-(e!pSe 
q-/1qb{FX$)R}؋ܲ_Ja'45'ImBȤ]hl8_׺a[UQ: ~iz
]s}},d

+G2-i\N/?'E1iC(N!{cgl}睐YXe=q8P1̹;G%.(D~GcQBu%V'c3M4GMROjfQhV)`|XJFǀ40b?#r](?صt%-J@?E<y
tۇ9,INϔ*9mCPPEDwXn8R/g }
8&>Bz}6"';%V<DPI$/aZXʥ8GřYT2*y0+HKlUw
'K4DN4?тQcu\3FύdX=lZA==G#A@JG++Wo {|QK
l1_f
jZc3AHkr/[gj{;fm%{I_69ea3%Ig;tE!"bnT YA7nCCݎ:Oʷ6VwϷE|_eɮ:=Q'}u|`~#(zj[!*<>n>~?Afzh#OOUPK
     A c  	  /   org/mozilla/javascript/ast/ObjectProperty.classVSU6	t@H1`ѐR_"-Q Zd	K$Y:g||0cgݿɱ~wPjfrϽgw~m	[
ඐbB,
< 
:1~)KK+Le&Y!p?9a@
0Y%	eݞ-fg%]/[FBQg77Vtk^[1	O3Y8Jf%\.ZF{4T+g,d'gV[a	BթLZ&?\LQ01	ޘ -)ryM S建m֌nZ7͑iMӓlQnbieȶi'MKm(dSV/k<	NY4̬n
N9T@1DΟZ/Ayc/)s9n67=!H
1:6
O5FE64U-届DX.а"^qK\U&,nOr`cUEk[G81*wª5Urى3=T颞QYzmpX4p!V_9dLYeVE a1T!SgQ7~"ȹ#wgelt	Q!=tq}	{iË=$(vKW,wp_qEkp@1$FKtT8$FqsSrD?7q<lNO
e]tuo	j<r`}h⩙|U*5yO#h{~T9ʅ*lЅ+܉Y؊Coũ	=P
bLKo>/b58!G	["d]ZuhMV.kh656Zץ_i=KkF*5@$~h=BѶ }=Re[8ќID<[>ywL/~DbT]88#wk-6w@H		Z0407Y*k<Gkd: , ~x$dF2$"c`qVtRG}KiKzqZg?PK
     A 1Y  W  8   org/mozilla/javascript/ast/ParenthesizedExpression.classTmsU~nIdCCZ(ZjfCH)H4jjl5]fv~HQ9wm,s={s	`epWS(1\,n.ˬ+)|AWٲڝ!|_ϲ5Ka-kz5mU'VmTp_1<kN\H^l˿)J
kmm&K4Z|cyoKnlF)U9e
$j`iT6H4-FcёdGJ8(Je}
J0;pwξ۠kXivR]nQHiv:,olJ@` ZG6y,0"
ήiX4;NQTQgQDYTwUl+;ڂVi*TTp-|#-K	LxБ;3I-dl5nr.k6o
_'MfnKtL)0oIآ`I`T;vfۅ-Ozb<LҤv|n7.==ynjI
RT=bXcHV(1?b	QgB:qdN/8$TNl.emL0&cz/d]$J!3,N1eF}'PjɗL6NR?_I]Y}O:e]k/Hsa$g$#=a18Yc>Ye{̯Q4q=~^e3ޅz%^&\050Ee*菈*{i z.$nGHt1zLZIfz1R֟T?S1O.>܁`nQTJH>Be^\ d+PK
     A >@dH8    2   org/mozilla/javascript/ast/ParseProblem$Type.classSmoA~Zj(~4hI6b?-x5]MWYX?81ܼ<;*qhx``yK:LlIQ!a$#Ɛb4vf0w=;.!C勾5?8˭c~ʇ=C@]dzAŅx}u^6yDO;|admC,
8'F[,d[@Za^LqÅ#O04l>uUw<'f~nC;ǃJt=wܘmzA}>Dh#ѳ_8qz:,Md,xy L[m"4RY4x=9_h{lOOSMn۝ů5*Lz7FVHNɣ!e\]YwIe>!tGn*I+NFF+~Fį*pkOFRV LЋ[k#]Ǻ;*f11!GU
(/;G\7c#m9ٟ撊DvM~CNXT
d#PK
     A NPm  n	  -   org/mozilla/javascript/ast/ParseProblem.classmsU7OI@b)Phih[)Fhitnbnus/03v~M
Μ{{ \G-,0OXX|r*5,6Xܗ ,d<d<N-|&s_K	O$|%k-C@)Ya/u1ҺvܴkZY3[ݩft6t16fn4&9Ma8^#L͵nմM6N9}j
H4%Z
>-2ݢNxkJmrs,ߨNqYۺm:Pܧ&Ud4\e}'wd:cVԫ]phé	Qͮ
9c&nKq6ʟ$rs8ݦ_ T}`Kf}װiC^fUoyM	:ͧ5h
`kxWn*Xd6\,.ᲂI\87_t=P/M=Ұ]*P"nS8gF;sZNթkԞjmg6d'穽oj,ƋHeIoT WING'hP_B6"LQu:k#HEȑD2=I4ҟMߢ*7c6͘.͘/͘0͘1N3
53S| 8ɚ%HHyګ3E8[ '`zr0" t'@^9\pBA BAA sc ȍ }|
BoCzA >-V(Hd)d1$B>wL ŃKBy<_b6q"sN>s.XÙ:҇*>q'șϜheo9n|FCetw֨vx
<.j #M
"<"aI2WqYW\A(ngPK
     A 0LUsb    ,   org/mozilla/javascript/ast/PropertyGet.classVRG=;
68 \,$@!
- ݅	ETJ{4,[FRA=sNv?	Xq(-</,ɳyf)N,Y)?W:6<3X71lb3x߽W}WQ|{ft
Ch̲rteVv:
ֶ^mj3@`ٻCGTslf鎛[aow"y	V,yp:_)e'jvqWHL3+1ÐWw
W`2*0p!bӴ@B&j9kZT**HzrhqNn_J$^&PS.Z1ZmjNj˕nn͵.ᆋF8[gN<82KE&J ۜr- кzEM.E7 }[FY惃lFؼf#4l㎆"&5#pjsa`Fa
T	
(Eqa$cŜFWڧl2M;o*8C
l
	.󣑺*;TshǮCȗFR1E9;53qba!q
gYWKЯW
 xJ~DYD&92d$ہg
x5)*'2B:&$VWboÄƨ#
u85!(Gx
$AZ쓤0=D0!Ҙ-N1򿇌8GRq7M"1*#I,;VC1JlĘPIbH&Ȏk1HL=Ɨ	GRq#eAڥK{*Z~("rs:aubRϩ։dUOL&≋(q/NuW	_2|ii}_<iY8GWX?w<^о<IU1Sv~%R\A\jTU_kLyjܓA0JWQfޡ3q(ݜxPRwȎؠl
(S_})z} ?PK
     A #.1D    .   org/mozilla/javascript/ast/RegExpLiteral.classUkSP=IbQ_)_Z08-FBISF¨3~uXkelnvϞ{3W 0UOafpE>^Jeﲊ+i0͑9&q-yvgp7U,XHlNȕ_nX
|ۭgYo
(mb@We۵*U_6W	UMgm>x&uc{m;ipfշa6U_x(ہ5K(RIԎ8+[J@ЋyeM`(Yln-y-*K=5<.fuِBirxv4Wh+q@Msіk'P>	p[\
1Ɖl5ŀhĀP-۩Y(h(6#*k0dtIoyyzՠ7Yٴ|J*-ZV5MkVɭY.E1
˭	u5	gۗ#|gvSLз~
g
Iv?PF{|."NPiz/Gc#dlF⽱#AX0־v~!KTǕY}xdް#PV#*;.`!,{860dC("`E':4'"Gq,,jMz#nn:i|S338ޓQѩ&#Fs!#$I4՜ DDy=q
	ଙ/H=BZDfZ.K'!@>6:_h<5	vQ18!N8I
Rf5*LOn@NRQNyV֜PK
     A Mvxш    0   org/mozilla/javascript/ast/ReturnStatement.classUmSW~n6/K"@ZM `Xl4_Jl6?0mgMNϹ]36_=<9go?c;A,( YYv
ۖYn),K+IOC6gU2]{hMVaGFkϵ^hy-oéĲe[]6#[%@fFptY5ghz`yo@[6eQ[ᙇQʘVTѦCXQkU0m)z}zRlk>jf`h,$=gi{$Rk5_\ާlDZg<Ft+4x=Z'PfA\;:,J	HY0Tw(|%s`*
;^c\uh*.aHE
WU
<:SH$U*ṂMcN@}thĥjץ0MӮLkgzvMi"nsbIpAze? IIitLvAwZ?ЕOBZtfs1B.?Ȩ4 #BE'8b0Xr:$#U}pQǐX&èj$Ed I1$$K 5\L0Q?Hs%5B)˲EP_iҨwI' o$'(H\m2gI":VUѓ*Q"K"}aA+ >AE)C|VYv=.ȫ㰤qZ9&D-ZEjM~˨NV2WP&3Ĕc^4T:e|UiVi8.F#P_˼PK
     A ]  "  &   org/mozilla/javascript/ast/Scope.classY	xT$7y2@ d&!"J@Z $PP&34.tQXmkT]lZ	DZ.`Vhݗں?ｼ_?ܳ?g>z4~,-~P n6?ev5e; z'wlW K~,?=Oe^e{>?!yy .
hJ~#|~L6>._|;?><)?qh3s2{އ䅗\$}>+?5twOWE
-#["Y3o*:3僿._Dg}%:$ӝ]cx^fXʬdv뢅)4M(vaO)0)cUmn;qy2&74YZtd-DuX"f.B5
x-0ڲ]덴`K2c,bԦY|Q
EJH(44f4.rnvɵ%f$$ܙY4nD҃fM~
RC<;Q$ёOX1d,F*kb:iSkqM
[% 9 8BG{FϤ,G-Л62ٸk6&c7<kFQ)ub|.zs"aLF*][tTadL2!YѝȌᄽ_KHdlMt:њ_}QEGI&"]V^"$ɻϗj(PP*
:|SSo91UjL	}еOB8VN+2{EfȰ$
D7#Ef$.y*Rԑ$;T0֒7YfNxo@3N,.ެFJғYPqԥYrX&p"xlL-
>@#l+$T~+mX0eA`dh*X7*ьSt@-I#-Qwg,?YUt0H$CNJM8r<xGǻQZq
qPASJWUBU+h4tPW>#&m]J^Jhj*eǕCs<ntFKҝYɛeD	X93.ǧ2]ȏWA]
dtd6P[]MPe U84u57j /+T&u\In\dUJQS8f).6EͦA 
r躥lyuZ}
I[~5֬㉘{I 9mdڌL\'%zP]sL閤_XfYWd֤+y^dnC(,Д$:byHScT۴pUQ]2LK
iF6aƺvVaW2H7~A#֞dX)jtKk50Ι-;c۫pmV08T.
#S	/ly,n"x|Z!&9a;J	J34إZy@;lIO57_@!0o,;BҶVsΚ4,S
^vq
8Πΐ~[UygiPe/
sr8TYB탎P})Vį/B;QPMkP7now2gb9#޺|'`8'"tV;^
B_(EhZ<i$g~iCt
=c>y
纁lp
)js5um`=wu QQuH|!0&;!\	ă5P\RN L55ȈOU3(.皙kfp]S <Y .w|ycBkm?)\2NX ڛ&w,ۋ	G6B]Ӷ
Q3Q˨ǈ4ҟt gѺN,aowh׎@~L.ō4*eð+/=&13<{]ݼuO=Ⱥ	쉻\MbM(ϕKE/*$p\!_$	9l'nc. ʻiҙ1.f~\ؚމ
cr]tzi#T91SָSAۅikzB?+4V:h*1C3^Z1Nf󗀷UXsŊ)B8e])g+H:#fdYLQ&5[hd@#"bһϡKN[\'?=*w0] t`	|҉N>Vc똨:v{-jkd*|mL` ɽR^Js$]ͦ.[TQpIWE~QyK>='Sj\㑠mw3Β(־^.	hbȮp< %^݉{bk+%l#B@?K`ε99u+mv}s#OyVlJ9al(HПEGiP愻y8j؊\
h,׸ g,k};!Grx/cp<+&9w;gΗݢuT9uq8V\݃v!"aQ1&$'z*G+VUB|H]MhNörG`9L%ܽy7q>kj'ȃ&,hs:hRcQmEQe}X(+7mDY97_bч|>jOR?Ch\{]³s<Y^"s̊c;oF=tf'qdaķhe04
&-o*]dU		!a*q['
ƶ::CۇIo0Dr8ʈ9s]R <0ǩT{Vؾϲ$yH_{pPK
     A &V
  #  +   org/mozilla/javascript/ast/ScriptNode.classWy|\U$/y2iR!d5-mh҄&mB-
5v23LJ*.(ڠBRJY
j(U\ؔMDPQA,y2I?;sw=čV*_¯yuCSiYS;~5^t^x?*xu?w)xݍ(+?7Sw7f<+oQӍ
6{gY{<~AF ©87hȤPx!=#T]ELqY("Wy^-Ã^;D@^ʋP];wP}w</"$:!-Po<H!<;8fwC`Ė^/GA=Fx?ojeMIjڮ|2zk"uEyqm 5H&'U\n\۳B=%zMFo.e`6e?o	"(+k ic&7<	*ܟ׳lz98nD-J+w)YHG@(opVVmpor9Tb^p)]m3o\blS0MݖZY63c
+Gb5MIaTo3bƳ.M]J_uj<5S,Ȯv<ZbxZg/qND:_uERIIkY\CpRSےtM,IX1j}rL%焅9֙[}1.[ӏ]Ƃdyi34#vYUl 'qmH0өo2xqIS~cg1rѫ"̖mjtBL`;X~\Oة}먙
9Hm(c1S)+d1fⶐmdL}̞@nOw	|2b-7NIH$ѦVVm3tPa➓[Ō
Z
&#׻UFXŁusHtq,j
*'ݑD;վ}bNVʲ2=rnYHЄ'7b54ӒSsc)Pӛx5wi7U\rԅX]=n97pT?ѹ#@Qhmv[nPR*WEPUL*F:Ѩ7*6KŹ,v>
J ޡTQĻq5<|妉TtZ*#bQB	vU*1ʉ*@ɠ:*qTQUtrP3فIlǋe*0B،TQΨ>UTfUNU֏*<;b>!>x&Z?7/2uW1슚>&1G)<,RbҎWD#TbqH;	qR	$QN.ĕ+m:_wZ̓tQ)KaIq."	'1ĨkI8Nb1H>d717wd&6ʸkys*ǽ%%>fM{F	ݸyhJ
nĬtktֿtDC$S/
WgPO_[~[a։9+fŴ(%Sk0Hf#{6cd>a(Mw[MΊڊQ6߸.녲3
 `
Y\5!׉g!p>_KumCm7XCs^:I?X==I:}KpXs^d#wFe?s̓U٫hzRZl!Q2jӸ5XNn ~l'Hpד=|%B Mr	TBWBB@l϶;oA^dA]qI&GdWO' &L=0"i8YLo'@֑1DGbi8@6Oidz 2(ąR:㤧G7W0GIn*Hx4ߕ>xvyPNE,<.JpK+|Ҋ~H
PE93/崸*P|bXiX!'I%48i(]vצE1Q,(]v7	MF)e!2q	MP -ԉ.-pxVO3Ro4 @0Z瘈sp()8!(.,(,(8rZ\!ɕ᳔.ދIh>"=S~4R} өr%}%܃`׀ɀd)N8m@( WRoH>+Kd<`oΧi'T9îPy삋-a(N	C10T+g\}#89YE0QcԇXlXL5[<6x'ǵLhΛ9Yv=9\&ͮ+rFSX+	'敚g۽yi3g[Y 5ny&,!
ntzs;EWaU?[S}#7ʮZ
AUyO/5E0/
|)~X>JmJ(8upy>SGi
-C䵀iɂ$5-^W]Bxhz[ᶷ7ҶĴ˶%M)a KgHy6VMJ߱(p|>cwJ5RcԽEÌ]+%wI1fBVmS|)6-V	pa@PP%,'dKv_/]͚ ٶ'SG'Qw=]%k$Lݟ""o{q5b+瘤BIZ03+gJ"$T=:4h󗺦Ffp|5
cX09s(5n2Jq+%rXYĳ||\ΞrCpzH&D1\(E(GbZ
,][TJQkD-:Nk{|ݛM*ow#o"/AK[4
^߇i!ɟ"#K+?z8ѫK2m
%X$CȞ^xD
ʴ*Q]p )>ĩ(jG4R-Xb%McN7p*Mb~& !KFKѳk3#hd14㧉M:"	rq'A;4㈶<BCj}p75dN%SU{Yg
ܢD'|Jn!7c4.=?>r)QnPK
     A [ȵ  =  .   org/mozilla/javascript/ast/StringLiteral.classTksV="YdB<448~RlMD\ILSi>fQ^8"xfݳgϮ?ߩ')yv,E_	;K|[fSfTج*Y|Lc	\Gf1R=mwwN@VyDY =ov(
dkQꅪZo;0}1فQҡ8fMn%3U;|!Im2EccV:ҷcmtZ&7Vَ)$Ә$o42D[jCRM'IeNMK1ղOP\F@ϗđ>[1<D
; P-fFeL	\mmc;-pW5l6㎆:4#F(dfJH?̜56iݶG:10t?n
N)'Z.3,ʆlξC-˥Ͼ<w>$4ͶԽ1mg	rqj._9L
;D:y.=c"į28G<d IP*ipd3Y"\xkHV%v:)3Ǎtx	Vm	{0`vn,DJ 7 cqԠY܍0&BUOޕ.T~꒸}$dU&>GCbePj]fB)#=<^*CzVnw^%GXULňQCLY"ICZK.cqUd1\{0(_	a&	T_AH
nmAq{#KQ7JrCcN)JdPK
     A h,  ]  +   org/mozilla/javascript/ast/SwitchCase.classWs֒-YZ	&i!ˈ_N@J;!6i~i~t&Za&OdI4;lU{Ͻs99gW_5>!#<Ҍ~/GexLuT(-qe(ġLxfp<1ለeȕ"(ǰLR8)#(eTe}&1¹fa~"'qQΞi1tm(
TQ,jڴf-d5RA樓h>mX(f
y1ajNlYpWTg3 pPAx
Z
SL֘6^Np)j!k3Lm.=e8A©*(4rNQg`&PRU/>U\u=ZwٰwǴJqCr3jv6F@lGjzSI|Δ="xFRu/UP,`9:Q4ZXyg)n*jDvԱs^43W\ıb˪"aTu[XL+[Y<dsYQTdI[h+Mb0na
HTt!U<M*ǟ?cU;*E/e>z*^*^u
`-ª/ثx1y:B2~=*>1ǫs4%m*>*>|bp@ںJU3d- I`K>re~E]#o:۬:b4¦;ݙMֽTkBm"HX^%)g+1ܦv̽aݜdgDbS	=g\r٭RZ\]Ï ΙEf̭17-mo#>oLS:{I֭55¼9U//C?٭ nG
ciť7"N}9
%vj؂ǵ㼙+c7E_Hw^ERh8M]Kb+mQʉd"ݹ*o6&U飨]	jZzHǽ/Ⱥ+&w1>fuѮt/Tc_{Iո">WJi!;v%ļ	_F8y3sW~.;1K]n&zy{1+0͢t
];5$T"1OЄ+~D;Y 0i%mSXPE4Ewx?ȳ>s/U%t4;U,!UBKu4W!qywc,	Z40ðJtb~,&?nʣW#fckO&YEy)ȴw2z3˅A__Us;G"¸߃ t t$sp+qW2-VUKOdX{%҃hh2V%Re$qa3˳Bl`g1qxg%ӸD3Ͱ\$ur?sˋk~F7qncrۿw[~^|PW5쎜@@,ӻy=e,('
 ډ7[AdP\~'=$.ysPK
     A )    0   org/mozilla/javascript/ast/SwitchStatement.classW[wݣilc76$,cBScHDqI/XۃeI9&isBWڮ>vJVWЕtHm>軟s}؇M؋ifU_fN4	6J(i$l8TX\T(G/VL؂,?'	܂ii	d?&O%4g9yE/)O~ht${<eg*YȌ3`S֜)N2Y=<^f2KfgdYf趓>j:Q6O¸X6KEpv&Jy6mBY2ƁAl,QT9QVy,):O:^se_8&=zYGwy(IIpDhj̛4c8kRۛi,&{T#v8ΐʹ2ښ'k")eCk?o[SQ1=*ؾeˆ*HT=MPv0~.ȹd7~3ey+q-UH/^d,Fٙy:GB5;wWBްTJӂiޛ&(l9'Kaf4+2Kx0E?/^4|wh8s8gKsFQkruiސf?4Tܥ=R!w5+C\^W)LUNX(!>1&5SHO채_*~!V5n4'
/4
nrdek^-20cOG
eLXL-81֯dnۆLT
p
OO]0rw}}#`7dW$:EǕ݃[t'R=keP&9cwAr(t_jJuEm["pm'化
fķbiKysڭ^[_$'e)cw|[Gu4mOCKIN,,!z5;v;"q89p8w>E9Ow,!V1u]'?pWq
*<fߵatj[. ޠsh#o!B@1wH}E:|3}{)ݻxoz*VBFi}88Qs;-{}̇Jh"!5>&858Ol}"Jxϭ<p?a/~dZY燼Pt7įhVpj
lVpm(LzHe9;)ӝ5e1+ycA|2^$&D_ ;%<ƹ/P.3=gzSlcV4B~=<:aM1t;``7יGJPSTߘ,egp:D
Hs@xG}"ń*}j6 bnuTrv} z hsy } 
}(a8>AO(78M蠯\~{bc;N}[}sDetzkߐΣGqH=ӻKFDڣq]+nU࿼abϲ$=K"_"엑+ko/?$^$EQ+/{n1<~3}Q[#*~G>0
1rn
®{|+,/3~[F܇S]Sb}N_qm+)kgh]fVjռK#PK
     A 2pb  	  '   org/mozilla/javascript/ast/Symbol.classT]SV=2FB$1I &qiƄB8
mʶ(ɵE&C@Csfifڷ>7u:ݕܽwwsw?&(a#xe3/⡈G"
QHX*/k<BG1/	eS§g">TTFUM ukt/Ԭ]j
ݝ/XjvV75~r]U&X2mU7)-BmU,szR
햴L)XeP:{3!@vKAHC}Y	h?MԺw5^UGdtbl*I|RDyu0ԉ	NKt;rK)񮘭Pi*"ٖ@]ksDZӍV[{@g~as˸"c	3xW5\F+Z;I=VUzuoW3ef9
waEWGcu')|W2a "vd(nɔ9LKN&y I
oXke3jYp-MQßpԢu8QC)2B@ B%K9#{85KhB:tώC0zU]o0I3L%bA?SztV!b
bL/Νtܼgǵ0<,YA' N
d@B">n'IĿTb ?c̏[H[SMS5rqt aV(%_74i:;@~U^UY'R/*[EzsXt Q4G1m">.{DD
|P,?Mѭ!<RŨ Hxg5K.u:)5AD:lQv"<<ȌGDJ'm\$=?eBF9CI71l7 oPF::71LQxOM4$4kP%QXN[+=dS!A"
Xr/PK
     A AdVJ    6   org/mozilla/javascript/ast/TaggedTemplateLiteral.classUNQH)R@)"(X-hB)+n]HCh%jPƙZZir}sfvo? Yq̅p3̳sa.[BX"(9Z2V]
a#0bzLGk%'-NzlZ@h9lin΢/9-_@馶yxycI<gJc[:ޡe2˄E"+Hf'f
DWXr"哤d39Lg/9;֖uhR$?ǠiCcf$
Zh)\9r#ԅ:Y6ZU	4 к
Y_ۚiTЃ^Dyk_32]
1]
jW
x SBP0M^fwl7%:&ϥte͂eޞoI3y0#dݹkgM+"NջVG ^&ozv>Whm^)3F{GV@?5ae]6UM t&x`l]5cA6Oy٦&h{Amlfp<\⢇qcH ~SUjU`K^/
BgQ84'5jbnXX]E᳊RuW(M3(@QAׅwD^#1&*UkU	ל
N)papsaTaa(n=Wa"~E{ޣ5*s>6N<j^&SU'j	"ȸYWPK
     A OS    3   org/mozilla/javascript/ast/TemplateCharacters.classSkSP=Wڔ(>hS52f N_(:G9db'3n=iT38=ic/Slnu[)f'4aSbRK@rǰ[;cm_lTz=Z^+)n+cZ릷jےǭY|`зݏm:tUsiixF=0=$Ut	.$X
#鐾
3*v*K$/>~7p_-.ծ
l -
ú8dq#pd@&TlTGv*Nx!N,Vq*NqwvвXC.XCKᑊ\
\8$jK7=mw;ȉf-4Lͦ4HYEMVːѶ#0q"~*8衹I<g6GqA^ 
=_dvl=dH"K,g8䙫qUe5O+!q y$	΄O":hW	ȜVC a(È
1o.QRXAA_|h:w}&M(Z22:IVX"/u2UXȣHHV+դ:DlMQ6V_+Cҧ{DVEf
]8QZGje;rsrыmt.2Hs/PK
     A uG;7-    0   org/mozilla/javascript/ast/TemplateLiteral.classWiW~#bkYK86\ivicpۦ[IWi!i 7u;3	0)wν{C AU\h@/t9Ȓc6UF(`Fq	eT̋bNE^Dk+FhjBId*c1,'#yQ{JvOx>Q|/E/)1o[A%}A+97nΰ)s6;`p#l|iYz3Ewv&Yc(Aꏘ996~(_(1nQg,JZ:M93gҷ']6m,1M(Bʘ'o5єS4sTk .Q]Fj_OdP&sNBXvptN/2hƦ=syB/*^VM?MTivL8l<pgDPdQ31䒤m%=Ʒc(fQQ%-WVN ^5ԙrSR1C61vYzn+<QgNA=sie0[3mҗ'7ΈbTlۀ=OR>1ՐBZ- 󗍜W1 2!*^-1$+%4Y÷]
k&5ohxoixi
9
?5Dv?}IROK}b1ܱSXع,?sc|jxS~_294Đ/`uI+Zo4oeyLAbSPA&ÅD⬼[Βg6u&SpN'Emzʹxu韞fveJlRn>5/sg<2ݘnFuL,k{%
NEC;֩=~IEˆT 녂#lxoxfǽmp74Su(g$qϞz%G)SPjqmD-.Q>EǧcU
D*B[A4t`힁& ӴDUmۃzưY>q'r?9?!|n
"ZCDDj
QSn4!6^Ac3~.鏰c
M58|C{re\3#tp?(v]]I7$G	M4cIq
'xj[{6|d_cw?od1Hу!2<\Ů%`w*`wm`';'vC*vk]#nǇjbSU31Ѝ$?F4e_3nZ_J [ī
 
a~<<9iq	
xERS!m
3Jqc/!D@	B<\AƄ_d%dbmWyWGqvyn1NוrH; OυS~<.Cخ}R*QmUCM9y|jn:εZE_Dеj$!fXt,
fnIoIĹ.nD*ѵO`TK<nALIp3TͩP
eJpZ[PH$5";g]wqy:gI9bvKeI9;YVȆa8Pnb,Hu^w&xdb
Ԑh<~fH^$XS/sBkA3V5Cr?zE
D/PK
     A Py%    /   org/mozilla/javascript/ast/ThrowStatement.classVksT=rq62y6MFƱ< 3 ~î]ww=?=|-a8>5,˪DyqKHʞ|H`3GV5v}gg;8v$۶avծ?Vyiv2zNE}1[@lΚ@X)D-0Y7ɡnkdfSh8G-Pze~p4G?ѻ1F3{&@TyNyVI͕PڸEbn;CzxW0O&镣XhvXFM!іsB̅NNKa)Z8hZn)T7
n5eK`#j?I^°o]{o Xuh`_(L_R,xYPe2D-K2y_ʸxK
{0nwy6AQ׻mn=84)Ͷun9;z/bcO\FD;kݖkĴ^O#rqj3Uc?{q^Ln#}tLS@,Y's5}%¿^ADD},ٻ0ҜP[jXV<uͻc&n.
Ȕ=Gt4<b&S*s)Oo)|=?@Gl!@q$A'$㧟S>AjyyDSPJKRɾیJ]L0e/3L^%b
_;42`d#''K$Jj]U~Ĺw}-k_g琷jTW3ޖv7=Uϗq>ru	<6jm
T%mX;^ѻO_z~G r\}xhw=}<Ty6RnC7PK
     A &@    -   org/mozilla/javascript/ast/TryStatement.classWks~V%[Xv8@dɎ)I;6G	Xu7^Kvi(P
̥;釦v3~
3dJ^ɲ>9	s(#	=2ϊdNC"ekvAReTdnUX2aDbߋ _ -q9qe6<%3mx6C</V j/F#$:/+qܩ'GM)O^.jmIòO%ͮUuG&BaZFάBըͲ3Y.eMfãtfWra^][\B-]Xܞ7Ji9ye˰rI2 4b{TAKr`ZA0KWԝ4Jz0WڌIIb\ij9
l/_]5[_K`rBiiؚpwN8Y1ߓm=h/+4sOj'0^S0A=ljd0P((2F
?bE H
_ `ЊyIҏ,Iu\%=քQ]*ת"@M4Fii-{)fܠ1^3̢^fàEohZU'B-ުрG
WxqC*\~_}7/%ohpD~dTox*EZE
iRXŒ|*{*~Yt{SpSh-
T|=7ɳ_QįTw5Pq20~PE`C5.{dx"??قߺ?뫅̫&l<-B,JK;W3MaaN\nA`]ume%<Y9TclnOl:,՛`mdA'JEDHTfc!	?X%2Xϖܴƛ5q5)e)nEvwg]Lf˦+jBhwzo {a^ZKj
`3g}o>O+ASpVe:8&؏vM$F8Y|{>esgw[8M3~D4N5jh}zV!'"w_V\I2wSƹNC@CZ,Ÿg|B<^A[*p:f#>$2c
I 
!	Z"
BCTp4<ހs-c#1KTxn]spcOM)~*UkPt
;!K
X;y<><ș<# M<<Ә1ӓ~$"J"فP'?cYx1Pt|'H]mnG'q<AXOsV>CNņJP!X.ٔP̈́۔PS>b¥u|rv8Y[qr/t^y|kx467W/eAYqh؀(#
9}I.ǮKKlgT
v`יDL:ze
[&t4`{ɗ=YsCYz883H=xӈDn7+[/$3q<x.e񪓄i)T:[ӱN:xf
thguKG^H woVCԸIlG7o)6[;<{/~fj	9q*Znϭzϡ+a&}!zX}"w0}8+PK
     A a  \
  0   org/mozilla/javascript/ast/UnaryExpression.classU]WW@4
hV*ZEZ" 
juHq`Ig&ǃ}/}]
U}nƄhXg}'_ Nȋ\cRV7Li1:inp3QFq'n;0'ϻbAǂܗlH(,ʛB0ee(he3WʭO-6rKƪ<?])h>f9V05vvOZ9UYY4YcIϤ[09ódO,_C]8~e왾oK%R2Vk$t4kDtvv}+`%[4KU2ug6˺](,0as7~,jϘ)xFwƭx#=⚳
	<)1sh_p`DŲ'ecȪE.4GSXU
M𫖐w˸OHpTLZLV%8"g븈Fy6K}+UVL'V joa*;ml::JG `*:V#ֱ&qAS
.h|\1(q	߉!}`/}&ضd n..@Nd޸ MNIdIaNK[6!r\Vw%ܮlnp'6^Q};d7Qb5$[
o48mx5b,y6қ,olѱt]^𦊬q@>w9>5>#
hrтcp?5$Rxsqzwz`-:`̠ʰf20/`+VZ&K0JՓEd:UJLv>_:[E#h$J*:ĥQ|g'I9@׊AeWwFUheCѫrDy
7~2;d>iXj%~ġW_{~zvWg{@kw]Ua(0A/e&izzo3*R,>|ߋ-0x:S<=AG~GH}y0bm
c\nc+._D_I]?z'#>?=xbyTkN^M(h	rO>xG
CM ԁ^t	>etLMdPy̽ޑjlPcU)1ZTo@/|1.?St_PK
     A WK$6  m  1   org/mozilla/javascript/ast/UpdateExpression.classVkWWC)QA>0Gj_TimAZ[2վ@_`ת`Zm?0ɂ`隕3޹g}g&/ 1.fBcR̔L錘wż.>
v`srO܌i[ntALF̢ekC^Fpt4蹼ٔC#9'Xݱ33q\6swfM\(cuFC.\ܛmFCY;kI
ܦaǈƖg-gpq$7gf&MǖtmyW)ӵ.PsYrƒrV %++#5*~7hhX2>ID(tAK`JZֺqל[5*צ-2S jk^u"2#fXֱTe
$KT5nn<̱rQ`D3NM@(ey
UY
{6X3)ˑLwm[C
I٘semYö"A[dݨ^5pb$3b2H̊<8'[め8d-m>pr2f悓^Z9Fyqe3c܂=n.>{/>3902RX|!_od4:50Č16[dDež<{˚sUD饆
s6be"056[ʦ[9!Y¤dśJ˫U6Kq:Kk$cZҰ3VQJ+!MP-Zrӡ2(EsJfSjQW҄Ϩc{vPGE xQSjD]^Mzg	5C5h?m1jFq]=~5T#ju}*]]zЫ>V^oi]C`#X+6Ld
GU
{$	XCp#A0-/nx5,#If@q;uއ$UpPjn
xCoGCU[VɎx4B0v80 2yd/38ɗU_"O~'?䑗q$bXQ/u`ق S4qkІhgpvz~xzUT9_=	Ζg{稟~khh|iK*v!hT)3TCy%f:,tzYSzO6H'xz*vU8I)JMql96@vc^Wvw! Ux2[R).mrO]./dXe+hv=/R6=C,vKmVѪ6كgǓ
͒a7/2Y4_q<ap:}g:KdR')*z +FZ_/k^f?a_VRm%֫KOH^Y|MLE:mmwPK
     A \    4   org/mozilla/javascript/ast/VariableDeclaration.classViw~F546B` J
e(
&U#]H=0֨NlMݳn!mSRi3'F{>?7HE Nd`Ӳ3#.a62l**-{U;QtU1b>-(F̗e"B	<%Ogb9y^"xQRߕ{r e*^S9WM}2E}^͹+{tYw窆tn^0-KɞS7;nn͗M-s=N錻keWrAA3&m*eclnvʨ]ԭ/3&-܈)#FҫkeJE]bWБ%QVMrhk3FB9+TmI$V
 2jW*u1
Ku5
w֘^*5vܛ(+PXAe||!G&rK5a츞`p&fѧQ6fk#^΍U<M%E9Q2*L)g͉sUq761D	΋{ta0hݵSdw9(5at)'UEC?
vxξd5_TXOpXO32QqF/𦂃;wK,cZNT$RMY'rO';ҧ*ޕᚆ+
!A
Ƥh12u9tOt^&U
_Çy_XlZ.kPj.q*qݱ9bEX@+{[ablb%WtĆrKѝ1[ٛVfhc˹{Vzun+L؁ڂ][Í
%+mih
d
c_}ҵFuXwx :_"Kqήy%5Kʗ-@zۗn?W}kHJ<xOgp26 W@2%sKD(_qL qD؉(y| #O9y[&{uqB'׃N֯вz G.JJ$ȹ7ڱ]Բ
<-}M-Y*qy̟	-e>g1PNA(KSp:{E{,3PæxnJPEt3iZ=@kWiİߡ|Z4MAF!1zTUm[l~'<f	_x 6MeRO/$54'D	*[cwP*x
f{
{9]8[孉л{&D.I	z&t{V<¼=ڢ~~H^,Ivxgp|=o45xK7ȣ]gg>b\V;'Z +!=GA^mi
2ׄl%y*_\
;_>$IDjQOjN%f&^{◜}!ߐg3ki1'4y_~9s:!cv8YzDLas]d&>kfeս%ulnۻLô
S؍Ylpo{t~`"^jiH3E#dy\^82؟tZc,~k۝dǫl15o4moM+YO6~Q{)?PK
     A }  	  4   org/mozilla/javascript/ast/VariableInitializer.classTSW66$KQCDZ+"*(-)md'n즻iy/}Йu/vSsv%@dr{w~.WEFq- p7bHcl}<OK"nEq<_Csuqd92>"	زYWlY/6GůM٪j.ʖ]%|( ꪭʚH1if)Fۦ" +M:H.jT,W4ZI-UY[Mb~Z~'Du?PлlՍEG.3+9fl&+9EպX٪-SﺀH٫*c&$ȿY҄g!jFˬґRzl3iJ)MU~ZKjT2nJRd~+hMaS\7Unı.p 
IJem֬n}S#9&ֲ,Mzpk[9	[#<%GF#7X;(0 CY}\%Ht/Y	2*".i)ߚbt.KUx&՛Zڐ7N͙DfSkv˶ ]1UuÉwli
ЏZX7oa4T2~g># 4q#(`zpqH8,06"!>srBB.:Cc9(y3ۈvǚ@w0|3SF{Ǒ6zÞE`%L9Y7`*'7+Ŀ	~#Ŏy\01Y Lw2y/!]tB޽
"pHn;v+ A]&ӕ;>ٲ$K^#۟{FzO/܊ѣ$׶ѷ8$70L
l%v&8g4KJ"S
JϣҡsHk_$ڡ#lx%+` 8,1r󇧻U t4Ԡj\p4Wk+NfPK
     A    ,  *   org/mozilla/javascript/ast/WhileLoop.classUSU]a@RXKlBS
H4P4~ue,88£ojg0ꌏ:8(rsw>?W 71LKKe./s,˴ܓ&$,4kxw?d9YC1]e `uIx_BEf[u5lKjv
K4m_k[\hkv]5,Ýes%R
K_kTugCIfnjr;FK s˶$gl6DI -Sm]: Zvsj
̦ES1m#ת
X3̺ajUՆJ}e3h6vľ@ `v}A
qI`dn)KFE|M	[
>D^`Y+xI{Ng0Iʥ|#+)?g+PUPCUB]yI	\>̷M*E\ktz&7yO
],u-vUlV]`2{rzN$hKIln4<pծP%dK$ݑI8EhgOY0|gzyN=/4GzABM<G)}L B!S&I͉GKP-§s#B\䞹F|wW1Al̚	X+cd\M!r:mQ"c'ym<5qYE!?vr+H'g PmHj9yqIpE
a+D'Ȅ..	˩GWj6B2}8Pn??FMs3$8_KMa4#(|
m\2fznR_,
=Nq6E|]:JŽ*
*Ҕ7n?"L|
_ʫ?a<W1Qi'Vej*ר]HubHQ>i{睿PK
     A {  
  .   org/mozilla/javascript/ast/WithStatement.classUSW.
XTP,~%1jH5 ~@@vgR9`U.s-bU\*IU9oJ7V~uoi<J!+ç\M`\gb\	Q'S\D&n㊘on:9"Y1Ήr+)rnp__% SCzRs-ϳ
'b\}f;Y\6ނk?U-Y4{[ek85
87.7vG5Dóaׄ]V;c;d'3k衱_=
ƛ@ҖDZx9XM
wV^H~'~Xg5Ӊ
M7k.ZUwf蘕ڕE{zܸj;%˕daeҬn<}l{6XT7+*R{a$XP[}8 tb@C6g+VEǼ\<aY
:OJ:,ױ4lqV"دD2!β{j㘎efVt8(먠@U'r85,6jqdMӼ6l-
0~lX㕒RffUJ2e+y֩!+X O4`e6	`.kʷd683!Cs+I
)9d'4aԮѮQvkЌ+Dd^!Ru/b\:ы.CA AR;"Fn
E?)j`ԙFM)y,Dz\oKtqOS0^DAF0F>ű0eQA boHHW|S_bq<t%ch7
,uցfiO#ؑM4@f԰ʉқi	[B@6Fh?vB	Ֆki47r:Ng	H$$~%f 7[5f s
șuo.27TGwoi4V't.K5tL::57(!ֱ;eEp{FvDdAx(tk7	Jj$:H:
(	vheTye^I[eQ⋴XCEk[&+WW-W<ѐ8sGlȨjNۿK=<U8R8\D#HG^A-ek37ۦIr|cL0<>n/^PK
     A b0x  {  ,   org/mozilla/javascript/ast/XmlDotQuery.classTmO`=:J6^&)Wd
+ҵM&%Qu#A!yz{N 0Mi(]Hᮀ)<?TDPD*͈0G<KbgA%0"Ca2CT1S2,}^]mߤJdh<1Ȩ1%ۭUaV{\T橯)͍E>&Afev|"+^gu
PofU5
a˺N}7VY](H{XH>3_Ю}[(C撑`B2
bE[ yYVȂul0LJE88q\V3ltЮbU;֋VY<r\s*3Lռ(p[>*1):YR5"F217eN'Ar(JPLљ=SJL!/Ti3.\G/CTFdoMީdwBC:DHU:t<!
 J@n"iA7q0xt"	Fh_O9-[:,:$,1lS̞9Ѣ>;CxDm@wOWԮk=-#fv_$}3.Viȉ%1GwZ>b7PK
     A Uz  *
  +   org/mozilla/javascript/ast/XmlElemRef.classV[SV;r)&Mm6$%@JZ	psmIiIC`&LЧNG〹<pvj/~pfØ@!Y.
ӱrA,<[jk8u<	iN&;#	s6?E/%t蕒zu͔p5[53꯺a]u_^3egf-{ZnK	)&);zE%x|IBWVhKrA3ԂAl목5ݒ0vVec+%V0rZEBfseU&/OqX"qYMO1rnl])8wsZlպY!QOY1vf66򗴚Cc(z\]7J
ڔvQ?(v_t[B^uvi_$ʮ=Mr>q#20|J޵Vc|d|2
(QẄS cdlcG]bF 2-YLF j23]|g	KѩZfQ쥺a[֗+jE[<q>%,V}Ꞷ@,_jUJ&'sRG֭YlD|AMUQ˚US3@~9.Ey	ɶ<.bnb	xa"a"
R*rdH)<|xh w"9vP%nBJ1$Irq7&E{8Z"p^4	){ÄdpPrhԮ>DBR~|!
8)BI9M`- a2s.*/s*:B)40Mwi"34ٖiD %j1hmhlڅPb4#@aa}@1[@e\f[ @rm|85y|
&?/7"R?JxI<ڠ<H3i펵}u/"J.=vA8izؖB0Qcfx^KTҧb%p;A^K;f;yLvBX%;wd_1=DvWsH)o0aAd$5A:+nXNsea&Q{j1<A|?PK
     A [    .   org/mozilla/javascript/ast/XmlExpression.classUksT=7cGVӦ@P6hJJZjpӔ2|QlMV~$g~0CfQg5ԣws%_/ ]X'bn(be>5;r,5Z]sy=
9}Te_eQU0ڡE~p
FG?\{FoǎZoފ68N)=~ӏWRҎBc~4Sjnㆾg:~G
YYr+H[)j*
g(^/^`㺵4ˉoYV&W+C=	ŭV'sV	恳g^;~ЏX|fu)#PwIը	u;vkD8݆}Ie2^ 抉%&ら⡉-tw;~PB'pc|Ŏww9ʨ
IB'(Bov@Sk*/Zt	jhϼJn5
7*>fwEKa:5逼#_=,3ˏw%Ӗxr*w6O;xM\*Ig]:qs̹.-.`UdR`%&k^X,*wcZg]O,>|$T	@!J߯$y+o.wa92eqi1wЙ~3ZcieSZ:v7O*a1n1gK&u=(oL|w.u,Lo<OyaT,ѻC$veO/d #D_( x^{[WITuWPK
     A *'g  x  ,   org/mozilla/javascript/ast/XmlFragment.classJ@456u!1qD(J76$ჸ$AT;|e(h)-am!:)*6.x>dLe
yԍԣ6g7q".t>;30[~=ϱG'E|XNX779%[l#-B1hsufzWTPUlĠm>XEc80^(}9yZ!I`PTˤ(P
l
+V
4!C#݄*ZEʪ,RW
XE褰VaA8rr"Y5
5\.QrsEMNJh~PK
     A !;Ӻ  
  +   org/mozilla/javascript/ast/XmlLiteral.classV[WU'	)BhKH-)-mI@yi8'|>Zv-
]jg2ȥ/ΜLǿ`\ <iD7Hγr9|c*90#?ޒ@X	Mkª\a=O}~|!Ts;Z*	]5^t#K$\^ʦ&0qb;*N0Ը+eLhՒ_1z^Ȳ~!K攞
\R7FRj,.ԩonij,bĬ@]x1ӬQmHm扚k嫔Q\dj_\ tܢC.-Zjf{N-~|)p$k$!l6J;;X(*`=*B5/Z:IXV6<
u#ljs^łikX\}@ PԥGu]R&Y#cMS}*UЃ^S
Z^ĸ&
d*Я	r,M
-pb+x*0 @)6*x+(+&J~pWꅮM}ێ,hX6Z*i&_eÐ-RU--S颦J݅TS--NԒ6)Bx7zA50tf/9bQ6 w+^/v#DȜ}h]q9x:h+{CñBQ*6t*==݇:b(;T9`D,%C/hO>ΧD=iZ	EI_pirz#%a E'UyR V1v+ ?pbƢ{hH A(ߣK)٫d6ln&clbkkD&AxF/8ͷO2#!W3x2CIoSyf߭fȕ%J3s8~:Ήh[k}\C_1Ǘء/nw{Xyϑ=dMͰ_4!ydRe; &\]	Lr'<<=M#홲>?ojG°+]N1<{htNAG]ƽ;oPK
     A `{Y    -   org/mozilla/javascript/ast/XmlMemberGet.classV[SV;F؅q
H@C	8\ҫe#%U-?/CfsT	)hg=ǟ ba,u`y+6Y6O<ү96+lVǵ0EэE^l#<r[<ێ`'a|]W}?]М{M	GfQp)aeWʮN;YPMx-6ΞV03rb麒W^*ՂYNF:튾2в̓K*<~$G)+!6vtՐihUgΟ4(vYu$<(Ւ@$uB^ˠiq~;(ԩAG4v.YL)=s
GOgIdki53]0`/TOft(g6[3ʄ,'WݕCM/6S͛m	=6pX
/bE>2FpMPpjP0G٤))P1#YeH~fjdaVB_Xeh0ts2*lԐӔi2&FVղ/Êj8KGJfRd+KMDkLeq,?Q!
!!}ɬQҎ,[V]frob؊F.
0ZN-Qk=ViYHFBŲT(a*u|Agkt ֗w):C'uv
dHMdh7]𿥵<@7?>ЃN
ܤFV|4v@d`Wg0FpycP6#nƸ-py6N3ː)Hcuڐ$A$	6:y$1$&Hx6I7)LS&8s,:mX"61C#4fh`%=19\G
4#mIXK\O1#2偮7E^lK12p(=QC)0'-Uą8>X	Z[D<-㋓t}e<kEXk{:.Lk\Clk!XNob M-mዖ[ȗ"*L	e	,ao1Yk+o}oꎈ!OثX_tjS$أoжV?}>PK
     A J    +   org/mozilla/javascript/ast/XmlPropRef.classUkSg~ܳH
EhphzE$Inih?CSs6;!3 {99ss7#[E㸝U]^,rO}@BlY`Ǉ(Mq
OPfq<"ˮGTrJGa6JeY vO7uoE _lX-BUtS6d+VS5TG{`xtW`8/mRLEe-@4_ZHhvOt~aRn?f&YKxVj;MB\%I+yP{no+;֍cêjEXwuOp*;Z/Jl܉2d1\ۮu2ȱ$/2FؖgH[F](cI_B5[Zq$k7	~OͦӪjWZ0}j֚_럙
$ϑh&m6w畎Cl|XLml	ȟCv:Bú摭fSs]{'U&sm'
\ɟ;s
	c^z<tәfq'=@(k^B)D$ڿu'u/zB{('5(!SF#6fXcdZ8A|<bD˴]@6iN, %? bcF_^r(J=bĩ,UX$mn_ȌB_`!Ƚ/O Ux$R1{ɿ- öbv8,O@+$}jNmПC,c՞*
~Mx")dM"/&(xѓaU?q97U*wE'n*a$zІEvzbrQ,AhG߁PK
     A $]    '   org/mozilla/javascript/ast/XmlRef.classRQOPnuVL)2TaHH`!@ѧR+VuY/<H"(㹷M8s9;y,ha <X0fQb.rÎ{Po=߷vtNTèޤ2vla	-J%ٜcPVDhlxmywO=:i*[8&/ooHb	r͘qmgv&0>MX(ya#a6
C$ՈwF
0mJ|[i;aq<Nr9:QQ0#:4x16&%4¨)nq#"[vmGS.0!*z9z2.2gQJD*$ :H<Ԓ0Dq@b'kcr8"DU>r12ĩSpǸg7I2#	+&Yʣ\L_JyČSRBϳ[MF9TA#B9׳LQIv5f8MQhY ʟ7R}A1bEJD<y"@O*G),sGf!2Wh=ڕ]kw2Įj:nBU¬8TSx|p;B"M!fPK
     A ?<    *   org/mozilla/javascript/ast/XmlString.classTkO`~mu@UEP̒e`V7صKDG2mR{ssv`e(²4VDXMQdP~Jc]dDx<'x*aC&CsdȔs]3uzaշۆex;v3
WZOL.n!˄wje۩k
a&Uhzzq4KKIiS+1KWE	#@ޱ>
JChk~>[NROH_7S:
frv7.`5]UQ S
ஂ-l+ƈg
v\L1LDkf;
v1`
^bV+8`7G7E];^*-3jΛ3^G_&b)
/Y5ERo6UcXep7k
u=*|,}`CY2Ą/IkGI٧^}$1Ir 	LDvXC@]V(Ռ*dY~n\o	sRۈ_&ps>L "Mc;RjZASlClA<Y6ԥ?i3"kd=ysaqf-r)u
M .:Pk]ra9,vܻ䩢1A]t]tFPK
     A _    &   org/mozilla/javascript/ast/Yield.classTmod=Onf҆fem\.l+mn2HUijͼ8r܊O&4$
I(ƹ1QW|y|=< .]),khe|,'r^5ITgEcUkR!Q|[~ᶆu8
Z~|z>{;
v/l
YQ(\u;nx]!k.n)nPjg}'ش{[mف+yR̅nOauR\ۥP\l'BE907HC; ϶Ýwntנ9Vsq]S7Ds~&z`)NDӳ;{v=wnK1B2%~IC
B\pQ m0+U9j,4Ɣ)=>ځ:\H! 6,ᢁqW7Ƿr|P{Ӌ×>(Le޵mns|՟W-KFYMhO'z0+CX8)~'2wF:c:-fXW|ZGP3da9<ۋl03vLc&	m2aM!w24čSK1K6a%m9fM!2m
Nj`.ŀv,<L$0<D`*#	򑖵GA` ))aFbTVQĂldgK5,($v%Ѣ
iBT|w|}	x3d5Ak<ް3e0^X	#g?hϒz/G? G-}zq} +TΩgE
㞆#~UiXa"(s|4<>*&`%C:xhWPK
     A                org/mozilla/javascript/commonjs/ PK
     A            '   org/mozilla/javascript/commonjs/module/ PK
     A =    8   org/mozilla/javascript/commonjs/module/ModuleScope.classROAhBPQ@CL5>=6z{k&Q-Q!Իd~|3UxXA+FVIźLGfRW
CmOř(%L>d1b.Cq3P~!c_2tZ]#IFLv2A*>e^{@{@2PU!ir/Df;75hӌbGy$VBZJ+1!)f]2U:\u,#՞Pf?=ulxaÜBrCѡJb,"a˄~winBN.#-c"{k͹41

ٞ!fOMAޘ"
r}휣19a"蟧?A}M/Rc
2SȞ6Y%+
+eM._[\-^xf=
PK
     A 6]ka    9   org/mozilla/javascript/commonjs/module/ModuleScript.classRKOQn;@^"(\i1b&tN{Soΐ)1&.\GϽmHijHy|/ [aq]%*9Ta+jbĺ
XDu2w3W;a'<HzcƍH&ZNx,};m~{CI9H6<z,l3lW.Apѫ	p'ltMu|kaV 1
mNc5p:_j%RzT0CC0)LcB.^Q4p7{O<ݨ!^HP
p,Lc,7q}<L5k-
tH<1$;-v$|#yL7|zqw=1a:r ۢW$jQjWPMWHΓSA` WONO`|HWIC"U.ѬLh+X5b mL[jrJ[jv7p?!2wઆz}h[Xќn\l7ol^{Tre|"p)Sd?4>H r|YJ<QV4PK
     A 	     A   org/mozilla/javascript/commonjs/module/ModuleScriptProvider.class;o>vNv.FҜ̂F>EU99Ye`)}Ԋk~Nb^~pIQf^:T$/D?44}I9֚$e@NGv5#kErjAIf~^1;7_Zꖙ 8(,3%Hd8#5`d@?)+5h!@g@4L PK
     A n2)  )(  4   org/mozilla/javascript/commonjs/module/Require.classY`ue鷓(v'$J	$lv8<,ʒIhG{eXKXva#b'!+汆uݺvtݺF)=Jw/r){9ι7xrЋX	6^8'/?滪|O5W؁Ћۿz0+^6/E^QϟU/j35?|Oo/?/3PҋjxoxqVw5UTqxiֈ#mG*
zӋRjJTfy>lCj=2%^De!%2_.UЋ/S2A5aթf!KjTyGբ{m#˔KXG3&7IX`-Wk0d%Ë\aȕi+w[t,ձA d"$2#jٸMF2;RXJ[wHh$gFt-׺/F=9b	O͖-ʸF"2I%Z}IYZQeCd:cO6#m^5x$1ړIL5gd*ÅZg+5ZaKg3xE+{bd6m:Kkd+}T{j{q{M9H2J86+kcXZ3~`y 68ۓx,amY./>:3C1yVw[wdc)AABDb"ڐᔭq+,s)
eN(NFKl&2a5!cqJmpw@Ly%[7Ŵe:ĻRPʴXcC&3u0k0ap~LQa<.X:0JDj*q^47s@C)Zc򭆆Rʍl*e%[CaʹHj]8FZud}4%-FUIeᦒ>(҄.ȼs2\Sg7a(Q,Ҧa&-*ci(V~bM&GEsѡ+Vi\øȲ\`딣{W-G>vePZmvM-x3`=<+:qsf!+9$Q38P.HwQU|"it16m&*6۴5
7'b_{7]Vb03x, IfSQkN"f.(&އoɪLD\wK$=\ld}Mf"a	$M܁48e#aYcZ|9ܔur5xޔz;qkD2޹Xu>_Gvj0Wq(2L2hJ7_neH0el"WN"%ұR/N+_{%2bE:n~o:Lp Mr)]Քm+wL!7Ƚ7՟&zj0;3s}eJ0uSv--o=c
#e`J'q}cKS]NKi?HOf
&)e){Tsl-r`aTn!,3350عRyrh$gY2dZ	F\)Sn}E$AK[&c
h)0
l+pu7M:~C+VcDÔ>59#$*&s〉)2dJLYLJTܯTyO&N9S2ڔ$M;LIIڔdMRAm{J}^XϢ)OtW\<oCnl18-$3ԁRV]^A@$ijK",Q*nF0gU[_"Ȉ`\_^5
SԕIڟѝm~"'w]%卥Htjޫk^;-/9EDqc*$Q.cߊ;ٵ%/LRgR%dFʮ|[yw&AJ@K{<N=zy=cOLM%Ѩ~#_1X۶|̄ӣ
\I֊vG"6YNpU}a/F<b(=?.V5W
GZ/yU
>g
Os~I5T\_>8wk[ɝ:?/@GKZPOZE,??54h"s[ᢊPd͕"=D<;TlhlKOaǍ˧aE0 <b*~ua߯49{vgV?+UJ?D}w^؟JD5 K+t1TN{1ukjCeiP{PP5P	TcF09Y!?8f#Yr!>Z`_J\\˰KpЋV*܌5[p#Rzm8>w-S.=T)9uO9Х{ʵnPq
o>b?lU,nU
hGa,:SC];cc.=ƦID$j΀s"<q'Ocv(u.=,%|58G
0֝R5]?%j946v@ㄚvr=9/^Wa3:P?3Z2bvDhg
O`.*B^R7ҍ73n$6G91j_~|G	|	|>qk!mSNq
=!ԡr//>J鮜>0ΝdO}b\y/MVx5_,jMȆ>EO%tꃨ|?K=4ǞWЃ?¿?mB˱Tнkl/ׁt:VWʧ"쒰[FbWF{ػ5?ՇQؔGUBA$,'5TG8\Tք9jt.at@8A-"
 +SZCak@h"]jw
|M 6yq\1ԃ89x3/#kb+x_[S/(%|8T-DN^нsDVW}(rѮ	Zz/T2
OAi</ehlvFM:jږhC"mlhǴvGTM716kcTݧQ[UkC86<āqs92lyzÞgJdD=#5+z1Ѥ@yZ*B0-6ӱ[5AΰA+8nuIt9+rZql
}~5[)Y'1hj9B4FWaSͬ}̀9/\gJy8dR=ҬA\9,)[[;ut2g~!XJZ`5^!*nk:b@8Y1ēųW7dWd>~.,mrH̖&]ƿER/uDV]E6KuwB'|rߎ{},D^U̭^<:ˡG4㪞:+;fs4{')\Í'}yOlb,f֮8%p<yaRz9KTK\Չ@Q`#Ɖ
OnhOaɤy#OKl;[Nf~:սJd9]M'	o"7
#WI_smk6'pZVvO6Qe)'nmmBF\r55Ie-6Kzd=nv
&WU[:q@tua>9AGt4eQQga_QRǹo`/:M?ry+WQTN>ml]3YyVkt;sEFjv^R_zrKUqP#Sdd2+큛x6h*fgJUKJU*O
ZDvH,*>WViwLMP
S䄎Z#/zq_''>(~d@qa"uԠοhq^,ࡳ:=+_}dts6UK1A.˱RVY#[f[)'Z9wIV$Qh	II.ֻ|e?Gľ??PK
     A Kwʧ  z  ;   org/mozilla/javascript/commonjs/module/RequireBuilder.class[OASJE/mAVDDJ6v;%۝4)!P3mM:g99o 汔Bw\ܕ=
)$0a^Â>l)rϷoM~`AtBލKd0T˳'v2具mTĞ8c0,Qw7"?Ue5n1#E>dS~'ڮ0teE(syJ{̒C(iR2|}œm?m'
zA|v3gGz)l
QJɃ~L=ygyxC́lks>uG̪1Lw6U|%)XJN *^AşYcuゎ!3̜.IZdX4.í&R(IbE_ѧ3}5c^oeFC3	F/tjO
Qڡ䈒	zHHr`>bmZHd=F;=e\3W1ޠrS}q¼#Y!w2HؘZMY͵%zkXwl`m`C
$n4ƨPM˷ɞHM*F۠vLEbsj:W):\G ?*!;MͨidSRӿ PK
     A            0   org/mozilla/javascript/commonjs/module/provider/ PK
     A 5{D  6  h   org/mozilla/javascript/commonjs/module/provider/CachingModuleScriptProviderBase$CachedModuleScript.classS]KA=IL6ն*t^*}@AZP>Nv8awGf7yG㱯*BQ;g"e3sa}
-+(`3ּ(aW~^$w26CEwE_y:uMo^g(EBiPmZDlAqU%*QMСdoDn4IۃDFpUJeyzHӈDJ	*[Rt.~D*nڱud6bxW[}bi]F@eGL ?*+pKo,
^(c.gpkY
@T9)ڣwA#>%?^?/é/=ʡsG3/GF?07Wʰ<BEO09mP9y1s)<v ;xxLB9/1PK
     A   <  U   org/mozilla/javascript/commonjs/module/provider/CachingModuleScriptProviderBase.classWkxSIIRAMShLZ-jBENC{ )I
9vCݕ7tsSܬnEa	>}ܴ'IA[<}o\)\q/!E9<%95}8|xHo[>|Q]qLB}O}~(7?\ԇ:LKg%R|9~!%_*@u6Vb,ihV@NtgRd@(cM=9`3% tZLVOeQ1U	&-=X:mzF8đW=V|_Gr*{̾Nk,koqO)jvѤnkĳm5KǍ3aXuL&غEȈڛho:n7SfC;|{H6
:!1SƦA#UL򤚺u>7Ca#;l
ܰҼfjԾEQ35gu6;;^lCFvSrx>4NRF6{*,mM׫nRxS
$n-5dئޖ*g+KOߤjn3Qs6tCyNO䈏,<y	yGB Wzvθ:,8|гVzl!@-]Ӱ_+L(xEoRH)Ϻ1eb(t,ìSYpǾWV&iaxݡpk.RlIlzAc:Ƚeu'Z%
_&$O{<Y<9ܙL4Ud2ari)X~
Z(*@F*0:ʦU	°
{qU{vI:S۪8*hQq8YglN[e8s8/&udxU\yޟo0GşwT視,\)U|]G&	jyng:p;
%\fyk>0K@5s>k4?-K6wEў$[R_ʄTPݴy]ױNw^k7I*7<l#}hE<i
Dh`ϞRL'hInBE3'k6T"v|lfuY#:]s@x*t߀LL,qբ7qZż\WXT5ssDinc)d
̤sBfW#p`CA=h@4sdu,|_a^eղ3Kg\kHܽȝskDd<E3p]<r^t?S4E)b9K( )\5r
tp|1.%lFvb^Ihk"SC

C4xHoĦȊ1>%ZYBДqaU`^b3	j'5TN91H0_j[D哓iSγ
hX)Z#VkUj;25e,Լ9TM6|Z0	x3U͚WaK-Rs#+5HBTAU)XkO_ՔA%bm)b%8_X0`	4,Dbs<_l=x΢U1>l]与V\OW@vM>J补7f36b)a;)V
1:vuŮd7ރ	
qjz%B)lW<FiNt!@
;)}J.jLQG>WtYzKMqثHipW}@FXKMj@3b>2;U?rtO$h
Py;G _P{ãAp]0AcnpF:k۠m^+b]4-wd_ʍKv<&Ѻ84D'DrX|r	jŹtJ|/PsȜͤꚀdDsXүڤ1"6U>˹TlTb"*1K:IiVǝ9,
yOjoD	B4'ZZ8`i8fRv
)2zrܻI%LVFgQ	KJi:8>BHaE HRTPK
     A (v  v  Z   org/mozilla/javascript/commonjs/module/provider/DefaultUrlConnectionExpiryCalculator.classT[OA
ۮHH[B|M`)Xh2:K
F}#3ٙg;ٯ?~3.]ÌkY̺A9GΊ*;spB,!t,pkm30Nx4JE'rO>`]L3t+
r#j2`[MSE>pb}ǙI^ȘQtCv}-[GA1}IZ:ړ;B{+9OU	
e$FzFTpoYZ* 	;q'5"Nq+ Y*3(վx(MQ:oDɘ!Ix֔Mf0YE-k+&&ndVqaԖT]bW?PZ
yu;=4CFYze\4]>~'"`Sj2$:\.Q ;!ЌwESAZwAvvwV}d/u
`#ʷpa1JW
0Z=Ff<
{Ku=Gנܻ):1M32Ke0lG;f5`3uw9W0ޡG``rw'9Zsgs'9LPπI?PK
     A ߋ[    B   org/mozilla/javascript/commonjs/module/provider/ModuleSource.classSn@=8N-tJ˚Q*
HMGI2
9v*C@"Bw)m];wfιܣ??xeZB5\uXa""2LD"o0*8f`oFT<1ءmqˏ'oN^3Eey[*	AVL<A\"wjH0/<V^7t˅/ڝGqK~)􅖭Zd	'ch?<O2bSauV(bz=t#k}XTU?l	JvISFN/ZiP9qzg6e3Wˉ<nMp0G1`W1`ZTg~R;n<IWk
,s(
FQ")hf%f3&,Qڴ.?r ywu ˝(so< <E?V	0U{[xt
4ʢLLMZ&\ZBV,ߑOm7M;'1*AΧo3ɷq'l仙B1|/S&w2
_PK
     A ^    J   org/mozilla/javascript/commonjs/module/provider/ModuleSourceProvider.classSN@=HQP|cg㮄@BP%qeJ!eB{M ?x[Ѡх.fɽ93Ja{15ǐl4ϯRR-5@H׵yߞ#ǓC;z0Ъ?|
Cl!jnswmI3`q9WeR}5/ZU'+\;]r)UJ4ƃ΃@v٬q0$pDCiF]cȄԼ̀`lZt6^d2i1vdmx:EcVI#U$Cn+G:Rĥ˅@	"ޅ7*FkM#ȼPK
     A op54  
  N   org/mozilla/javascript/commonjs/module/provider/ModuleSourceProviderBase.classVsUdM[ZBZ@Rʥ7Tp,nԶ^^82ŇCăl4)439{}zΟv1|#oH؇~.ٛ|xo$E8"%tVVV|re:!bRB D\PU}HMC)"-y\
|pDdDLxWCZha(0
QgL3~M347\7 tIW3Lj\Fqvf*$ֹMl35Ms+)eZv	32)hɌFӖ9%U+箇͌Ps튭2H$^..+Dtر4cu3ek-840>&ֺgH|Yz<]/L%iř$_xiEגcZ2ȩ'~$)i7r"f]3	5P"
Չ[ԥތ1l[ja;σnL
cO[BY?<k8L~XI43|GԲ3=8*)ag,uR48+61,tubS5͙Wդ=BJ(EulըQn6M&$27$bQVt} x٬hV2CL0FdtQ>Ij6x_P5c
]q!GP]Tn^'TF?>
.3|J(-n2@-|A~L0}~ٴRjrt7 K|E95n˘0z37Zέ\uɰ{5hs,ҩvV
(\wǻ9pֲ	!irE4J<VPj8EsT3G6^D+	lZM>%x1vqUɒfM=5M}Qwml4n%OmeNEO597Ѣ	Pi4mAS W^AaiNmډҗ%e_\FKh/\X_C ƴDWx#bBHxҐ H}C2J6]E:uE X	nn%u8&aⳣh&||v^u  FX[iWW~
mAZ	rdήA㸗 .nK!cNtiqgY<#g5$h
]B:.TA_`JͥfJ*	
Ub.* c{#{r3B1$䯧IϭI!GAZ\@ 濇]u-|Ɍ8! uc;UԐdl#Btgхx=H!gkbC'eK.?qHWNhQA'=χ{>p$*!BB;MYQ.!=qH	Cw\HΒ,	,!Fw{r8#5t^Txs˱{7XS62AW9o\"󳍩{˕7K-ϬɣO !ḁPK
     A     O   org/mozilla/javascript/commonjs/module/provider/MultiModuleScriptProvider.classVAsFV,)EqT(M6ii8i9)Qp$,3^{G:v`zCDҧL܃v߾~Oo/~z
U$q
	W"@a>pc8cXL&-x:Uo2,/z~ruܲZ͊4mo{VlV6Kb*nC,Np(frkf!}knfEj3^nmoZhc)znN*^vM6xuN6KztLVgZS7N3 A=k}g@筼B~ʁUyP"qO8>(N͵O~3wQa=7wܾ\ʁ︵Ƶj:u&@hvs~
HK}q/Tþ:!A#Vn/ڰM(SMh]Z~ž̞<{.4mj<uՐD-
E\>g
!U5ᮆ!k _{ecˮun
+(ډ{u3^PmcL;ߴD
%]+yaU2)-wGqϖ>:/NKHXqhI$Di^J?O)Ͷ!3,ϵe$~]nCp_LxqlH|Od8IGi5	
g螧.&"kND)`: !LP-TOvmrvtSKxd89!y uA4? <2K)q=>e=چCV_'_+	G	}
3K?.
PH5
v=yP4G~LYDHHtj@Ceߤ"O7zPK
     A |    G   org/mozilla/javascript/commonjs/module/provider/ParsedContentType.classToU^lgi*un6@7mnrڬ׻*pBBB\W+đH~oҪuOǼfg7ﯿ8<loN8y%xZWXU4.+AkY|EEе#7?^ӕbۏח?B`	X=)0o߲-V#]*._(\l
+A8[/w]/Ae38GJ_
#0Ǯ7	:wdh	TmulK9DNb	ߏ[nKֶFUyJv0Fl;KbKº̴e\y#q4Mn?:
@KvVUװ
Q؄؝=_q[:j븁mculx	ao[O/\$*7I۹凵-89owՂP&dDMI_ގea}{/KwQ$Rul5Om«ؔw9iɚ/U,'H8}5yXTlG)_H#KbMԗa⳥WFz]tԪ
7+V2Ff.7]TL<use}3fj pL͢nT4]˧clIR6dQh;GטE#obǱ9Qp[wX&2!vy'!muӈh`,$Ħxh~3Y,fQ~[Q\N
jLM%I`γ:ou3 PK
     A ?<  R	  e   org/mozilla/javascript/commonjs/module/provider/SoftCachingModuleScriptProvider$ScriptReference.classV[OAV@U\V ((TIxiYlwvK'>ahb|37p)-=sv.sǯ_c*\#+\fHkkVa܎#hcbNLb3+|9neVv_tLFo|~)^53ܵR+pi_hԴLpNVo\rkpUWOad/NJO۱8"ϋpeEQ#yNpTNHs1si2.+cN[p&sP˰yZ)^U^3ѓvƝ2iUKēz|̢F$^If謞֝߬>^h
c:4wE{_K_썖P5%֨4=tѫ|R|/e!r,_Uu[PODgWTc2";/!L

;(cDт(1"&	4Gq:j`H}N6)}
3W)IgwÔ_s8Ԃh JU Z_>

PSϓmXiO}gD_[h,ѿ	_b`D[`D[p)",K)N
0F+hP^''y'''׍rhd7L|.Z_H|B/[b_bl 
-ԯr}d	i(
^Ē:biUO'5Z_b(	÷hJTPOJ_3A58h(!%PK
     A H    U   org/mozilla/javascript/commonjs/module/provider/SoftCachingModuleScriptProvider.classXwF44Yg
䠶8
$EIZZ:Y#F#6KY@Kf؈4t	)sr{o$ٲ>	O޼ν}y
 mg *qgC* GxWω3<'Eh>/ V:&"Ql\_A/+*6|MY|QKE
7U|+&L
}	Tm|GwU|OAu61cȰTPR)LꙌQP1lSOvƴRc(P(Xi2rd(X)(<5Է>Gzj8jCѢ)ޡNN֦%w[ptԚ4I=*$]cQDjS)z:f2RMMN|
q߱pbĭQ+u*õD6iDӶ5f&;o
9z|/%!)9 ?v(hPLAþCLrf}guƛ1IѫF˸@%aÙkZˋp;ƸQ&r&e8bGK ehzJ+
kf
<q;#FAk*&zMR@zyKaxw=y2yv*iPFv[zH8]B>޼ǤLx-xx<*۪eSFܑ]-ab*3jLO	ݱ-12'<&RMp>*Z/s{sÜ(Ŗ0S
 BЬRS]K҉t<}ɫQ_VA(1gJy)Ӷ1?NiRUXYm]JLS׊Ք[LhAx|qR7$!Ѧe5ҠGx'&
?}9sB+:q_U
1bFkix4Z47[5܍7Y"Jw?h#.14$$k˄]bi綆?K5L_W
ÛN
ͺkPwñ
 /,K5YT1ǰ2R[ا9;gϏ^鲲fkYy6ƌ\knJreo
n`(5u%ŋ?h6F1p}Y>34mZF\ PC}Ux}ۅ]-ZSI1{T&C^Vr_*deZeIs].ESJYWɩ3QT-D#z7|ޔTjmF6c
eoY7/4WsJe͜/9aD T`n@
>#qW?1kZqge3{lGf/srewf53<sRGnnԠ!4T8$ip3)qMH	)*\D6q*䟆簦wNpuO`+b4\GuDh'<64v]RS>UEb8"=nmfa+{#׸jUZ㌗ށ<5	
C$j{Z/!:)xY!%AݝE'kIwTqͼQ8$_@$mY{3a9b_v\vjʻ%z]D>O}%qc=yh~N`#)2M5(ݓCVmk9l]!4vaS]>'!|2ǈ4q	uTG裏08fqq	CEC&̞Dz*=wגp]UH]anB;dOuu="9\"j̭v_w	yB޹,2eݨRɃ!Gc8}=A~,ю
y>"s8Q2d'%g)FŻ
'Il1y`<dG1<	PK
     A Y    W   org/mozilla/javascript/commonjs/module/provider/StrongCachingModuleScriptProvider.classU[OA-ԦPA+`/zEKh(/,6{i?DHb|GnKh1>l̜f0t`q	r>\F?nV3Q1
CCʵ
aZ?/<d`yCl\sDcՌ	Tq7ت&z!RR:S0$\5Ojf
.̼-Ex׉05Wmz5W4̪\3ުedŨ}ےli4Ԋ0e+vu-1vUnU]
cl}_C oT'UZYxYssS4J9ē[*tl*C&poօ$K1V]4xe?SGd7Q
7GHٺW]ʵ!PlZ4WkjۆXCYՍi}1BH>D4nhD%=$'!%MWu(a	0p4*o!4*]'UX)1q1Q=R]Z[W{zhT?M\=ezk$z'| bY85C<??J;/]`$'A'?xVg@G1B&htq{FpV+-/ˤj2"7߷b1o-<N."rԃPY:4jC'[Rvi:L!.7JpPK
     A ~.5      S   org/mozilla/javascript/commonjs/module/provider/UrlConnectionExpiryCalculator.class}A84:mtJ"!`md/{;;)<wHtb2o<ow C!ZVVz~NU,OR8v5c
hIJ/Մf_q!EWc)SޤP$dQaH=L+%tG9W@
:jC54_PK
     A l     Y   org/mozilla/javascript/commonjs/module/provider/UrlConnectionSecurityDomainProvider.classM
0WuPqRq%(c()i^ISAx(EAt,
Q.akUzKΤqhʓN߭V_.CZsB?+2VF{o?oB>_RQɃPeҢꎥ"h@-jh6yPK
     A dO^
    Z   org/mozilla/javascript/commonjs/module/provider/UrlModuleSourceProvider$URLValidator.classW	xGX$G0P!q҄&2>B$@iZdIYR;nRZJ	#mIZh@KGhI]^B)qh~}v̼y73w<ٸ2Rz[KRFJһ4\B #'7Sp} ]RޏB	Y6nA*Vsş`%>ib||T>>qRg_ 'q;*тOitQ\)wVb?
Ȟq(d>륁J9ٸW5|AjsmM2GjM&sH"vm	Tn3vii߸!\@O9/ZfR d˙2FraW9eGJpZN+m9+&Zʍz	'm&B\ӛG2;ThJmeDfl,ޖX22۳vf4v.wJS/$]I5VϏ
12%L1#^gtbx4f.5Df턹RF*_ls{9[k//pd|͒(]EuVnS\3)_5KlqGC]	3+4|I`qQJ5/dqf.Kfq_u#5lcH"cۜn&eZ;(yI3evMYW*at_t]HؙSVr\!c	sKtc3/L1e1NsOF I3]vNp&>򙎚V+kac朓R.{,G`vɼcDvCN:O籠Vr~fgT3Aa鐲PpHҒ0RMxM3zV"i12V%W|;E:эuj
_<t갑ӱku\W}ri\'[MW5@:S)ɜZo#cu|C7-yɡX1]u<m:,lmߑ4|O.^%I\?O4TB[1Cj=~)k6!u<yt1Q5<Q<2*qN{?ڣt	iӶ@xBÓ:_uM*5֟I>I;Cs6n kFuYAuv1k;>03J?gd%Qz.&o(r{򳟔TuAݖ♸k*2sN$m
l-߫c"y[ٶqX5[5J@2VKO\L]9x̀;.W.Wv̤LgL\P\a9B3>c#Rw#}9bmcT)_N2@^:p:*.׹6`MjOMZf'YibJ#6j倓,t3I3֩	ym鑵Oa#^/YYӖ=y3s_ ~s
e	IyU<X<h(<aXjۍs\մ{Q Du?<Ѷ*m;~m}Ge&g0xEC#$RtȔOpG"J(i iEJP6`PFI`W5E[ W^KoTh"jt<I4Oa	i$MʿPQY<7sCLbquy:}rn[}B^
o2F\4=>C*4Ҷ"ԦVW	k6
sְ
WP]@.Zya4zzurDF2ƹ16#	DÑ\>
E=FGu6;j}j<RkUl-`^/u#} 	+I>T?jE 
"y"QiqQ1Ez,1Yр\\!qk|(ePw2!:2d8[(RL\ dQZF+I*nU%jNJ2u*ЀuhG$$5>xn/.VܸJNy>
tgovZhikʎQU˘XURWr%{Q滈<EbdF}	E'V,1FT,KRuLԳhR>&j
c*&j:'~5SQvRseLIҰZi|oaJ.
/>=淸nD/<>v	!&xJ8U5OcllsN]bVD'j
4*,9$*"ѭuOy_LZAn TXۮer^17Eh/zם
HdI
Aҽ<I(zJ#8i}#T4uYb,V)p_Ø#_yZKFD+ܼqM5f\^ҭ8#MປHwmqU.&}H6d0¬G0OC/BPK
     A ^    M   org/mozilla/javascript/commonjs/module/provider/UrlModuleSourceProvider.classYy|Tn27d!aъ	h H 	ƶ&3$jmm[KQ۪UJ5PIv.ZE[-Jff(Q~}w=;=7<G k
wwь;*6izO	|Is?JCvjBKɞen
{d0,
C~<GdQ
1
Ke?JkW<24O78m
ʱe{~
ߗg- f9iy?~#~\S93As
+kej#1XöhLDdL*'D؈6p,նHA-Q(mEx2ezp5{aоd4DhoCe&I35TTg\ԴV5-}5Bӄ!:P*ptE")cRX/vA81f2ǭP/ݐZO*b63Gޜ,Lxs<o1"T$7 9G|*77s%CkGefb)c!֠y9Lz۶CAaOuRTe68G|꠵r-8Hē#15[$q9EqJn闯@M32:_}	2smM+oq_+Gj/LĆ=6ypE\cKTQ+󔾴Ӣ::4FCpKFlF!Z aaJzIB[DlEI{k
# OY)#EI׍H%Jx$)=:pa,fR'.xvKc+SQ+g':ږ穔HC&RfZ#tWYQYGW,4Sk1{Mki5DMXg:0{	e7F8ЅތFv)
Z޲VC䮕f:(JB+5D9`:K'}}J,jzZp4ky}A(zCFJVf4\u6RWDPeٓ\ifһMdbu>)>ܔkp9Q*z6\d3R
`gҜLhf9V2&i?L:u2TyKw1ĩ\7<=7$/?:Ηn:^_
tu|=5Lұ Uu
GǧEW^8iXpqEREh0)Tژ483kg6OYԿiS|XǵNN;유ZPx!d&]2^/|\HYijEq*T@GȢ
gFȜn_.5Ք*
qY犬 a`TK*
X0&ՙŜG[o$6!OLΛiE6qy
Voh3J>_";@&rgSϻgFܹ&(9܊Ql[}zN
Ome>mgguЩIK.n,frUr*:~=a1I-v >SqwqKk~t	:}Uk:/jkm[H
Jҷ
Y[UtLeE\RhZh-ru%@B-IHXɳZT~u_nˤq睪1hEZ
9*@+Rp/=gbTq,Z'G}X︚ںa!!T!Vs#0梋c۱ga/=a\w_iRΥAu@_bU<5୩ۅ]j]B6xHHw<RDAwRAWA'=QDx\UY]2/jw6Xdt)āSs^/aZD"ўXa},
h	aYh6?
g7JXlatP	zkQ
b\cQh/l\q=5h`y%y|ƼsٛIcmfGfGH3kiBD/h4
}u戝6bXg4#qy(F9]"1aPbR7_л
~ZD,MR?	GDvę({	
VsS䜇-8YR67Y`esm0{
R!Ln<)ІALmǴ-Z5-x<ѷ
El}AmHsLLJ/3݌Қ6;1c`wۣMu׎lBf4+Ouu)j6V񝨵]M+?lg،iq.D=.}ib0?L
1/F&kz-g#kz܁FlMβ~FVC6\Tc?""=Ew1[q=;qaO?DOcnzu	Qp'B'ck+v%+C;%M
Whz>!:b)L(2Tub
!MZ(oG9]NҭpRa\L<(bO^Ĝa&s0n~Ҳ{䯽(z)[P78u4V).l+mDs^rێH8d4	IBOMR!Q;In'ˌk8+tJv7TvDN*PPVCAIm}ygHD$hb`iL#TiKsqvasɔ0DőBȆ .RDEЖP;rK9TnyO7;_wއOtuzXv)/#HTkZA,lX=Qϓs.VV NBv8RL)B PK
     A               org/mozilla/javascript/debug/ PK
     A `  6  -   org/mozilla/javascript/debug/DebugFrame.classJ1Ej[uc6"BՂ0bą2c2MJL_$X,r}pa~!5Z;J͛k)fE>V-XѦ<,j1sQK]bƥzFgJxL8jlsRC_U)ּje"1{\p.q`˪b;xq!Җ<Q~LY7 Qj	B86amkIQwЍwPK
     A qG      3   org/mozilla/javascript/debug/DebuggableObject.class;o>NvvvFǜϔbFQ
hĲDļt}kFҢT̜T"ԤĤT=Ft̜D}PqrQfA~
H>&Ft@b`Ll PK
     A V<  a  3   org/mozilla/javascript/debug/DebuggableScript.classQKN0Ci鿥-@X!PQE*b+'}\%N$]p4C!l'zFg޳?>༂
j"yWZSȰ_-5ʤX2J7)'KneS%dp'xtg2^cކ)Mg<ΔO+GxJJf"$M#0Nl5_D׷(kw5
$]BtGռ{2vWk8#
.NzߧyK2jwh<(CT-
aY
}Bw>:X= PK
     A U~X     +   org/mozilla/javascript/debug/Debugger.classj@?9
͒[y`~.\!:P>gTP
|	`)2Qֵgmd2y;Dzm'y ~UDr}#eڪ|FX(;/ہ7qud焬typ:^'<xN\9 F2%L0:|PiԱPK
     A               org/mozilla/javascript/jdk18/ PK
     A fP7  	  3   org/mozilla/javascript/jdk18/VMBridge_jdk18$1.classVmSU~.dv[BhRIiJ}iZ[(o6-,,a֏I;:'uFso
$CsNϿF\eJ.1p:>^9ssbAJ,XQב7Ћ(%R^J
+:V/!>wxn)!`ᔔE^	ϐRvvU˷+A6:ĝ(iF0Ii#',J*
ǫ-".uR+!e:|!I|9~#[bI<VGxvC=y"V18Fީ6	95/;ŝmycj'8vx*=I66`>_;΋'W[S
.eYjƖ[[pivKR{OR@MI7:{)߾6q0ڜgBޫ%|}"w]PӑG&c0lM7.xC&Enb
Ch0& o]N"1ú2lhWM,`CǦ;&0GNQbY؂ktLdP:Q)Pڰx`{=4v48buw|kf=}ٮBIٮ:U'HxFXޤKdJ'fOmI)swۚX=\9hmOz$u ;ǗW*¥2 [cޫNR90qb}XGA#
XL(MEi8(JAQEExFhLѡh,=VGW:SG(҉pD~QIZ#	F)Z!1AO遝<<k@GCЦ{BKhqS?`06MC~z	snO3_̘b^^ k)pvZ%V~_xt,]"rHàn`P,fE:<La|lE\ ,!&W1Mf3\[vwW}u#:n6{P+%	$n1A.PK
     A >p(    1   org/mozilla/javascript/jdk18/VMBridge_jdk18.classWsEFݖ,;NlI )v59d8!d4(1'v
!@PKV7Qg$*UwO{{W?m&vXQ܂b71>[.KN8#314`6sx\	'_x:&M31ƅZs1<//Ih
;JfUp'mz^C[~FOdj|6:&3mz?iN
9gpn+K!ҹ96}iiVRvN~{g*G={Ӗ=:mzJ;WtR'6ߕ:<zNObNnfhV';jA'	`FV=%t.%eժ5J>@H
רűgǭQ9lfSn<aSePYǶq%\of9BaٲKF(G7ATrY34{Z"UȤR>1+3mLΔw0N*HBݳB\HftByU򖞕]{V
)WhuKf:mUL^#*J,F5%`N

^-(/FVE.WQt5EWހ(0f2u[椞woϢD^prJRBwM԰hZ
&PXŌaWVMl^ݶd-[u7.F!#ﵑXƚ
sON&wKuqlmqCGoG
%F8{q5/8>G	>eS&giSEےcو/4ܲ}g*^G/ݸY
2#
_,$IBa
u9:R<J,{y`RW.\㚠G{,y!n@H(6~UOnԶݫ
EJ."d]nk>&fn7`&YgM\{1W!6Y;W-R^C=ޯՑ\qyNHȷ[.wtL;hX+/
af=x;wR55]W}H6qUkw	Љ.tc.:C7Dƪ/Is{ݗyV2[)T FF*BkTgJC3zGX+A?6{漪qbBL%{X{r[)$Xa'#<c̼dFlW ].C;p'9	%E߅?yPӞ%mW݇\!z6ɝK$\<]<I
VQtg	@ OHQ1~:qc=?!>IDʆpscfj.rM+h5QsRgnJ^#<I OG4h-gʄʦ؍{q/PO(9L)~"VMTt*Tj8(pH M`<]dtPL]HoO
DpBiua *EDe*J7#>s<J79=Cy ̴H4;Oc/(G_`N*S;#LGڥVqE{*Oܴ
CH#*Oxqάedj0U/jK,S7O$.0%c'pJEä|pmPZ?㦉+Sn|{pZ[UE'ńPK
     A               org/mozilla/javascript/json/ PK
     A  Fڤ    ;   org/mozilla/javascript/json/JsonParser$ParseException.classR]OA=]-&`M,@C:)lgV
$>D?_0YH	a={9Nן VP+ y_X0U"Jџ6MlG2GwJ	@|a,t?l'V~um/Pj)-?=i;322	&vuH%PZf,}el?}".j/	pK*`_itNS;y	s׷"1r<W fd#o=&|Y
_	1ַBwv/3
~F a9pC~3R:ߜNSd`CLq_`Y =5<2N+s[눵U`.ytxL_PK
     A A  #  ,   org/mozilla/javascript/json/JsonParser.classX	xL&\KCPptF&3qfAjmڭڢ+cVWJ nn]=W&	<{|w^ɧ̖^\\Tm7C^87/j֧^vq7"PcrXyRuGT]=UwTu3x=/Yx/xхR"[u/y?T_qU/*?ÏZ^W?
~(n9UJmZawoU{;^Rw=}Ń>=w#/>ƀ#.
Pg2
|Mh(	&hV;j;bW#`˃x3Y&CD[3$(?f=EB<4	\PtGr'6AJu6mN<]8EW%
F;ooh8Xt$]36
v1re8Zձ-_e`dC0V֢33LFND,Zrx;lC0*;öfۥ6%]D!_n+L~s2ضkUSӦMDCva5 
0	GC\rJǤ}MIZkpGhʠ{DYhP=q6hdx<r<7J#+B8cճ3).nkJMG^B/Pq#㇜^SAd{<ֱ\IY0Bfk2EBs)a=N51ZP4qJk7p(=gM|iFDw4-GrZZWU%%X$T.#u|uWjvuZvDgnk͔$cBt¶XW-,=2Lۇ>z6E0S	EPJL:X2-xbÇKJ{a8ءՇMC1zp`IC0VjPv(x'NQ'n|'|Ӈ|pn.[qze7_ʥ;:+׬r'yn)oI'LnҪp"q>}n"{8>)BՍF	UzxG8T"p'V 1y8Fj?u^2N/8>)Aq=Y'-!Dp4'XDk2HR>)	>lg26QJp˔&,T	+27E̀
JI>܌[d8K~M73L,{*ïnи&K[}2En 3N"p&2'2c><57IR`}Զsg1:6b[|R-5L=`I}$YRiDv:Sv"bʪ
vvX^sZ#;i11Οbۓ(r)O+
2
]T팊)gG6Z-Kdj䗅"h:vg :-~j`D'/7N,6
W~n:l<3`{ oIK"7ѵ-ajor9tYW(FYY4֥=>OR_6+Q&:UG`vMuBӱԾabYΪXu[v:.gYfC=C5eֈ1ՋwPgJR%GAXmeW+GVTVQY} 6p̾(LAW5#"CLbv|uUǐւptUؽ$#o;_ya:1`d?jQ`TCZ	/UA:+Q*`*fbj1ga-α.:줨gkƥ}Wsa@tNn"5npϦ-V~otn=H.\XZ 
<V(Yx5cq5αƹ8ϵ:kv'v(wؒlw]v;iǮHucT7VuT7 
(J-k]NP"_N6D' O<|x
xxF:ڌ
?D'.Ӷt.-2s Sr>Bq>)}s7o`scʌn&ih;*T̜|f(=ޥY6x[*)r,}NUߠ"Ŗ"7ŀ
~UALVƻQ~Uj20:.WӜp*x&(_z"K?`&0$̣Sލx+jzu)[)рfR7!A
؏я+]t\c4xMby]Bx7` : ܤ
BBL=CW*Ba(EZV=t3|IS[F#0ύ+?Q~(kiDΈt-WqǍw;A.sIYGDik4R!l﮴[Жg,(erJMJǢ;lwOxH-òel[JKS6Su:Ea̾Ė>ۋ)+նl02\dv{e'Nm'1sWշc1-|3.䓥wP_wQ+|4^<̠u(-@yMGn'aݠ5\-Km|v$ث5nТA{sl`,s#׍Y_?"7X|כZuMi+5,̨悡?~K~(	7ՋRY
ԍޏY}'b4XccRzW'"ܣYP浤?NXM1묯rV.U+'ab{_+5欼_kW=ldgr^=|s^?לDj܇
{23eԢc+<~_wZv%Ok͝YrYKu9L;څ6yv
y^_3y(_ĳ^8bNWheG'ЎN<;	SyY!CR0氖qya&'X`	LX|mƳ,Ŏ1>Gg}te4^,LūRK-^s'?L
oEײ ~'xK.%^ß
+mgQ1q	]8n\Op¸N`(b|Yc82cn!E~gPaz#}T~
V1zs+q/Y%, F<a1ė+`Zppsg
[ ? UR_?k弽gؿjڋbPn׫AsISu)5gf䆳|JH9i<H*yq_cKE%2q4E<" _h;_YDQ1ĒQg[65t
``Z=?Xޫa8=xo	tChss6Ui=-rҾqCh̼ 2
)t)=f(y2M2k2{\*)\)q)ǝt=2J%KjLN-l9@f2O\rNF|)EiR/
x:N0&.RU:C|,|ogv"VUQH>7QVX8$+~I4 tݖYѱzYo{A_Pv75K?.
JV"^␈q
4"aH
]%eVPv01yAVe$Ml61f:4AZa+I*(5Y6MX>RٶLaL=L*9SkKxg@W$3\Nc.EcX1:P7[P'^nŅ	e-hvY27MSN~uGl'ljˏaE2xV2$CPi߆Ev01k0SLMVMZN!:I$:2%1jLĩh'm,+ߐUYVn:mvT/5[c@sGnn,kZ>:H6X
6N|4u0>1U b{W+?$
V
*%=}؋9)1H/71~#YX"+ I.FW(V6j0=|5[U)g㘝N]Ah 5XKUvĻPK
     A            !   org/mozilla/javascript/optimizer/ PK
     A Ԩ      .   org/mozilla/javascript/optimizer/Block$1.classA1_:BJ#qBb!NPՌN;i,D_/~<,Ч=`Nȍ22+Fh)v2"#ZWޕ֜5NՁ:Jݥc߉`5FKO74l,Z];
%LЍ"C O?PK
     A 3K4  g  5   org/mozilla/javascript/optimizer/Block$FatBlock.classVmsU~nvMmSh(5/
*mH[43͵.$F
_ag?~A{I!$9}sM' 8obXQS\RÒ.lc5_N#5|+*\SUjaM v\W3U?.5{^n9?8xukïU `Y{Q@:ȾoG^ӻ'$JE#0~]
d^Ku[2ptOF3'lWZ-NJ>.RVǕR8w_?k}% <~*E2N9ND鴙@F$0Z丷sjN^	3VHUMAcD-Z_0.p޼sZ ?x/H\Tۥ}N8#'^].xƔ>g6jϱi
JC8dB8*pZۊt?!}<
X^xَNfzÛ0Ғ?PKܐ FN@fo4N&y$Hw%hw8Ne_t6"'k ULdrha@(w#
ƍ0AL< 8wpӪD]\XqZq#qY)&<hEBG(%1jIQ*q$	H<KsLi&=p
::Qfj	Hse{i%a nW۲N0!^0vp~rf5g{\	Mn?ľx9_ww$_qZBۋ}K!7>O`9>ƫY'dn:^kRxorOPK
     A U,$  f*  ,   org/mozilla/javascript/optimizer/Block.classY|Tՙ;wN&7$K0!bFC#XP*dFL:3kK[mZA]mnvAν3@$sw}q.:I 
j`)+?J|
y|Ov_H '¿P,8b<DDjg9~!*/7*@9^wi~m7oe,^XAF(rP?l4/JҼ$S^`6"JkҼ. eWyXTʒ/ML
U(-ErPFXRe
vK2O/e2Y,'ձI(ͬg24]ۚJwmNmOnme:҉l]7؜Ost3_]*ܲtvE3ޒߤZKz|Z8Z[+KBY]חM-JdK&ޤ8]d]t|IKw\^K.
^JfdvM/!hx{_
"T_k|sD[ZQ0Sz5O{"i#ֳ&NȻif7&ksL47h8ݗ\֓ں0ٶ]̸zWf%;TRxѼzTΩ
FWR;7Ǔ$rH$ұͮ[bad۶^a\Kd7ƵQDul*֫m6[XPޗl>ǉFWQΟ1QJWmc-@.>rJӱdFg벶NWQMH9a2!}Hlqa:&ǻa8㙾>.oxFs9ΠL{'[,ַ`"6:N$2crKv9̹Q6Wk"C
Mc@${+mwџGG:ѽλx-L"+ɈL%;hyߖ\xO㝫♎X]LqNhfq8(ѝt0kU_BӭЩ;d-
6қ&ɬ2Y=ԦetnhNe
ނ%$n=Ԅg#wUc%k1q$C{Ɠٍ<Qgj=ɼ5dvO}}Cigŷ#yV<Qa6MDJt<qY1&ZKk{M2{{޴%}DײXO&.rnH$WId&i]QP6]y3Ֆ5o{k14c{kT¾T_#,!=B,VxtQzъlUֶ.TBVB!2F}6n6cTrW2x&#j
U#mKm'rl5QMd5VSE
ujlu16Umizdclͽ6alQ|*jl5]hr[	RX)_f6CxF?M<mjSicv۪^]j}X-
*lYV^|Vr\E6X%KCjxV͢zlB(N'M)AVR3f/&P@F|7GG,&@r*d]v{2܍.Lvc2lKƹrZ>8խnΙ="X'F,'CqXl,
X*TF{*d12zxs6&E}\Nі[~&1{onb7|3V-KqFdDeBœc)IYT#GBXbB+tr]ș]=^)rz8C<K!') Ki"M6bdE*_I~/%-RD-dsdUslr\5VJc uqLnő0"GT^ne0e;h,
 H^i?:l6pű-7yZMVFqz}+wzվ?WIgc(hF!o<@(j}\ɾZs
"A >ƣOLe[,A=p//s>+VkgA"݇^ _i֣RS>9/ЭɁ&Q맄cHy(E7SGK1%5Xg{@ C:*,dԸW8? Հm3@8Ř(*Ol$ht?be/%MuivC奸u|	yq	Ѱټ=&-܍([gfnɅ05ߏ]5A\$:"Jߍgُ5?@E/BUk7JFAC$#䏆_ /
 &I0)LnO@8w]PM
Y"#PԐE!kv!6k6K`R7Qcdx? g|#͸=?Oz܃; >zh;=,FScQ#A?=>e*tW
8+j%uxTuJچ[
2NxB='7z_Ss,ĝX:@.t w2)gr1<V%RBONVpԧX\,g(4=GP[`;7hyz!H)u4PyyVjv9ɹaRīP2Cxnp7K,|Љs^Sx_,|T}3:
_aHF)(_jC<K Ts0yPCx<;,
M0^0.1ǉgF>
ᧆt6%knrKqxc8&3dlz$v@wxA$zN9d[ð4Z2l{Qg\Nb=X)aLZp1i,
}5qyEA^X>B
ݠ^Z e{w
xEd(H@ |
+j_sT 	w"UcnUnU^U>UXܥ>C|TU+Utg|[E}Uwq.4eU?zi|fk$$|A
gD=Iy1Y5aai?)eT~'q½'/D쳍鷌_y)>ԠId ]
@gdm<w(Co[^Abovn=}jcLbu)cUU#eUѠ.'𚰜{G5c4PKT2RW`je_A
7DZ	ϻڟ<硵߅rePiZeB#vPNmG*qݮMULL#*.hNϤ-I5}AW$?0N-Ϥ~JWeqUʻj A Z;ڵ;
b!o-ػ0$u]>_z\@d-H
@
SC>eq/׸'-8/5 ^@Ձxr@uac/{3<}Lp/]1\(FSJȹ>Uygc.od
iQv7虍l>Q6+x}9-9n,P=hQN%STYc-ئ&z^{ͬ>/a!Y;YG݂o[c8~>XVݎ?;[mBz@e->%M=JˤL	c/j<Z/o󗵧+M=QC[k2W`:I"80&&;xq!^FXt 5GcQ\~335&*ݹӰؿY;D]߿yh9Cگe<+](UV{0M}T?2-3-?
j`3\x$2UU)#GLG>3Á_gާJ*95~6
`.S4yFO4Q
79B&}x vzHOzCABTjR`:)QCm
#WAJ,"mS(wz%?#р̧Wt"D%ALN'Q`9$)-H%4u#$uLV~>M/|sE+}PLԳAx7|<˜]ndcks{Y5>>O?t]y<ι(9c._NoY8}_|[#.P{yQI!5ǰ&DޠУTLFB&x
v|C., G=g獽Ag1ƀQf3B	Qi|Ǩ2oL6~fL1~e\hjh\djzƥ)3fyFBIN'+7*Nm|!zW9dU	="睔jqx9.r))JSR8c^Y)Zf0yr/CfѤ\\!Ӹ 	y;OcwN8֤Y4Q7FZf|5ʆ
48$(\,v4CLhԟ;k4Zc=(ɭ+]	Y5a7XJ>/2X+e c,F+vĭ*nF2qc}{S:-vL[ѿnQ#U$șcF~Х,o5!tQ^[U#5'r?8{tͧ9%$S|A3M5O搚&zoʌʍvL{ѭ%Sr
pq$>_ԻUP-ëyJMt
3qfz0a]T~Gh
r?eV=WPK
     A B$  @  Q   org/mozilla/javascript/optimizer/BodyCodegen$ExceptionManager$ExceptionInfo.classS]oA=vXVQa[ݘW&(54,S:u%}/@Ls|3ޡը	17{ܽso2�yȡ^@װ5WJ͕:XWQaA0R<y9J/n3,qWtxO!P/B1Jdwn
ñ1B'GdOƍ|[\00ǱTDT6Q`4
nG:w=9f8		ӍM[H-Þ0OxOQd\u~MѢ
i݈ak1т2z*
;؄bSZy_ܰkC<T ׃EEkJp1Ie׃qo_	ݹ0.
21l\ҍѩ4!H'	 	WYȻQt?~Ʋ5+*ҖXE՘&ҔK =s]@;PK
     A     C   org/mozilla/javascript/optimizer/BodyCodegen$ExceptionManager.classXkpVOKw;N$;dBc$?qhL ccZVz -6m胒v;%3h)img`G2);n&=w=;yܵ護a+~\.dxeҏ,P>L;O><Y, -P$xTe|^|ɋ
<KfX
ZV/+P^7JE(w$Er0uB;%fHri=U\ղ@_uSoX&S9.JfHSz9/f^h[	m>1r
H5rf+;UbAAVzyD0h)ULkƨVαl-}W=aXVVmMZLY͗jn&f&ZImt94
Z&sP+dNMO4L2$)Jv-MZٴY,)ݴtUXњ2`/=L/GIc/m8n}uz!#R	SIAqFN0\A3aHQX3fY	Rb Z\9,+U,rg"f9]̵.N/`%(d(VKf_3S
_Y-4+t\↥~µOV7G8kj9Mp@b
:Ĝ*ڑ"Wk*n^<+'𤂻Cl)Oqp@ų<A{0k8o[**nCح:
D0fPlL6`ӄjwY/^|O/*^9?{_
"z'zX?U}_K
s;|XOcWYb= G M'v/]vpeYRop,P[X!`,G((ŔV9TOՊT@JBõY5ғ*ؾ4TMR'X[7ٽXypOrE;9!{K!Qv;=JK>;w+࠿:Krkh74Nzo3~y߄
y

b>1
:	s>e)} np"sGg霃[Tě1ԉ$CX/
kJl<Lԑnӛț[i2_%MfrGE}(<
JDAQwՎۆыf!ghq+A`~$J/9GBGCi`$N$Qp<fG#6
/NW+kUqv`E8J/AKWbL`'BµI+
ϣQΡU6Vx	p'	SDg]ILalbHJnIҜpŝ4)nzg6.I?G@<Gl=$}֔(Q⡕<+)jæ_`I@rvs%&&r4B-Ip;)`xex^@]h7	O ^C)!>3?bcvLcRGNC\Nۈ[4ێqH2@8L[VF,Ṉ/Ab\AY!gZX5*u,M[\{[/gEn"[&~ClKlGq\#2%L%llt)fJǘ%L^S*?dJh_@xӖy|◵%*Y8f
v[ROVkv BpW<hObsgAH17tc ?pd`
dE^^TBQY\<vhlnSy-oTԲ:J2+%%*,4/GlpvЭ_?PK
     A QI    E   org/mozilla/javascript/optimizer/BodyCodegen$FinallyReturnPoint.classRJ1=ikj/

Z}MQǴ
kJl*ԿA?'ɜI^ߞ^ lb S`*~83aCXj06AJ2[t|.#m:
ڊH,o(Pп-;յKAܢrPjq4pJ7FkI*RszgT1_ZœDPN-Mt;i
+;N`?n\HkPޥoaFQ34| ǐEJ_=iE"G 洑- y$|F.D{#dSdV}FdSj9%d.r=5T?x7IB@M`xPK
     A (x  	 2   org/mozilla/javascript/optimizer/BodyCodegen.class=`ߴݹMH.$ $)
!@0K`{,`={'goػ{ylY)+;mg<0~X"ϻͶǇ)>zOlb3E~"УTc⇠ج~raxRgxL@(exEJѭx^r(F@)ޢ۶x]{@_|(>z|Ju|fϵ_h%%QZO?ROJBmWb;NLiɵ(%%qiaaԶQ>Pcҡ2)J(Fi
@[H&=:У#=:#хZQ9yWJew-в'=zc/z"XzSk<Mk9H(0Pjd{k9#Gjr-jQMGY		HcE'SGPٟZti-ZҲXʞK=OE'-r4S˃<ZZLU/AL%Tң, CT`UBXA;
Td,eu 5>xP:
S+<_j-y$--:B'R'QdzBSmy8>BgRY:\-ϣjyS?r-4Pjy.XO5nЕJSWȫFkNˈӨ@ ިM47k~׷6vzA;q=F-lh7S~yW_|Pˇ$n#Q-rkOR=Oiz<CBi/P|I˗|_riY=ޤ[x[w$"=p>c-?S-?oz|A/z|Z~Z~-'--i]ZďhŴZ	$%([YZ!*g*bʏX!˱W*ETiU:\=kU
vԪ}e8VZPVݴZ!U{ңOUxÅ\g~vL2W
jVbN:ô[ZjFj(Fk5FZ~ZjVUV
_T4xV3*j&%,j5OR_/SFVK]B)K @Ugft?ʨ=)LZUPe+(~=*B~zHkUU-OC
SuZkՀ$VajZPZQZhXӊ:A:I:ES:Mӵ:C3:K:Gs:O@HX:.Պh]+Z*:"Z]
ZݨMZݬ-ZݪmZݮZݩ]ZݭFjjVVPݤAlugZ~ЯRr!ऊճB
5PxBeI]]AZPm}EMe0;x¬8`¢X!	5u%sK*B`Q0wܴ9f͊,FY+5eǬSf7~ZA, }RqӦo!XD=҃}Մ
9d%u5XPxjBB=[(nrYOfMGxfvffO_X0mb4]Ơw3`Ji+*CLмpEi.ubv<@iMU-.^ɠokN4~7(<%	,6&~.YauYhHEu!D3_yp8D(7Oj.I/V4aܴbhxfU֔T"򅈊IPh%#~cn%SJE}ݴЌ)K斄
ga-lʒ0*pLXGPi(PI5PY;$\Rrn¡p!(%]!ŝjxۮ(YZrz᫭]酝wU,$Ԇ%Yl:ɋvPf\xٸpd5~)EաxBX.G4PQ79VQ_A*Y5͛a]ƃ|l8'W\9RAMѭ!FԻQcu]If NKh| l Q}d>e+BH
.	!TԯRRi1"ʒeH=	9&V!\O߹$MOBfSA쐙Ϲnz4J1h2U4 둜g2~c-զ2VdfF+
h	%6LqPgi<K1HCF{FLLpr$ZF|Σhۗn^6re!j[Ue5:!3'/(	Wy:`z)I!+.-'+Ɨה0m6,NfW"*T7TaB
ʮ͑gd~-Qfg|c=+TPe$tJZ)٧PW<p!]Uo&+*+VbPԙaNRQ;a䢙YOL2T;N).$.à!Y=w[±lchΠ[	s{X@.ZbJ*TUe}~HPPTJmGuVo!^&*mT8:Y/zЋT#U+*(S<</\\-ELzhHvc\}+Og ]Ln&~!c
=hs|-qԆJ+J*80KWׇcOl#Wn@n}XYKCkh@I@B	TnJqn`WM,A~,k$Q47hvԚ*<uq]UFՆ}HTPg2U!F.͈ F1Qm<0ӹY4u{s_o`\cՉPvl%zQOC%:ǲe',"-kh>?S'
++*gj+IW3yp55F.@ jKi^>B(\'+o-ӜU(\ջ5d_3MNa0U&QJU4x=lmIYDHgpʘBe,o&"oZ&6QC$OojQUV`(*mב^VRuTFI*ݟVSRZIgavW5jLR*֌$gMf,c=u)4\Lxjƴx.čbcI6)WF2$¶Q3Ge诫i@SMە&F1C`&ӆ]	.LkVٌa{t5PWApJkcz8!`r.l{nw8.mwB~/.t6l'i-3\7"qxTo=Qл2҈zL<ʋf/fnK|EX|rv8TRiTԘ
nі%HY3F),.teIJQ>YwZ3ѼIfTTm_@ehGc펶TE49c97ҒcxLuP"r1{5.zy3Df|z^DaBj
ƸRau)!7NR|QFU0~^RcF.J74+JݾM46=k߶f`_Q?'+mSشղQw:'"kW6"guI"]wY	
U*Cu؍(KW,[<
{sN7ASEb
-2k {=nWm.ʼJkWۢ)X02RZzt
WSeRLt6Ql/O ƢgbqOcbhNLFzf\YAQ&Eu Qb~fI!Pc8z
DQ54HIL=jjj=˜渻=n+|zAq%B;RڈDe8D+;J
J]3&au0q*:nYUTgWk

_;W-ڥJ*_SVlP}\:b)3nv?6&\6"iςaacx1C% Sh3TPIyV<Ҡ4PSLpefգ\JH򗔖z4EڪAGVzp<ikJp
!fn-9b(ttë89T#V8||O/r'V
^W8|4S~,Aӱ%o@
#g}zzdpD[*Zk.b6jW'ʹkV8|8gs8q|zQ/~v~|^r7M_OSdG*nqQ
r[=KeQ[kh
rXN#PPo:|Vc>5A1~5ꋆ-@kTLHD>:Qow^L/s
wCG}Gq[m2u1%Vƾiu2$w,حNtV	>c4}vwVmjH)鎱;j	M
 ޭ]OK;G})#(e~žKkt4>Av+F)SM-Q_!Jo(:ߪ-lyg.Bz@q&=ѤZyC}QSE|*X֐FΞ? qb>G}ȭJG')W?mA<۳>e]-Iu/j46jObm`Z|(}|>V;pT
JyXfݿ3M oor'\DbwDD\E#"cIF-eYecmˇ#X1CqnVG1֎FXJ܅<1c/YjaL
7  QJ1LEl#:yB{Umj:JZ*jK>L")HRVtsL!/Yl3O8V'd
n,-Fy	_XYVgdֱcu`\u$ 9Vw^X{Jw[Ytu8R
.ddP5Ҹ jrOY&jeuc]U#F9$^B!aƁPZ_+A6.F8VB)ΥGSihT3<O׺3q$&ٟ@ܻR@6#Zː'ҿ	.qѳv[>JM璚!8'XP
!䢽[#@jV5Fp!VIX	ya  u>?C$1$ɰ[G'9'ȥGw#QhhGaEv^6u
 X!PfXíϱF2hoک*_>p|2ȷp<>^H5ьi!
I8VEK#YdVhYZC;}`˾Ijb/32FƩD]?;haӴa,P0L;1eX7b[Ml2}ƈiqgқ#=wtn5e\,sDXKHP%~iUِfUyI9P+)t
MKܶ%X&>OnI$kCiQjfIw채kEMcq8gݖu(&2USfA
ZbLSLk'(;q_О}TI'ņkOoצ*L{U Nѯ∳yՕԆ#-my}gc4'K*e]mIi?37ΩBҩu$;	këXW)v11@k3j
SϤ$<)}bwkūi(4.kO~8DV(({-:+lL(in`;xJUUAǚ@+Aid}&2,Ge1U$lsJqu又f_L~A+Hi񍓏tq8y#WpWF7+^߅wP(s:gM&Ӗaw̱:(AD3EGd:Tdp'K CY׿mٝNIKvIeF쌍F9I@_b&M$vt?WA#Ero_nso3M
C<Wd[bܙmX\QChi
-;E,5HvUŅfwE8wwD7](Ɂ[VZ@Iw(WUmh%Xۻ 5wmؾMPYVmo7-kv
^q4ǚnhnךHT9LѺ;#Y~7QM!:V1}[3vi]wDʖVdΦE9hXsEApiIYwIw cͳå1氂Cw{
~cOݸQ)TYp5GH{4Z1欚uǅCBY]~ICmw1V'qh=+76׮k߽_J']װ>\B:>IvkiYVY
J@B%
Cĉ}'*ďйUԅfͦ5h[B{']_3MIVۿt:U\4+ȁq34:*E^WכnرRa*5xEu+k],p[-j]W	67|qt<-t(ԏiW;ܽر]weЭoC:iI]ld;Ժɸ1{/HmLnᦘmc^~R}xkY7īB=VO4;KbGژOv߀8|\bjZF-NQLM	-(co7:vv王<fb{"Y.^_SӝX~ehU>5
kʻumkc-s+)q
~:<KɃu<J

ލ+:&Xzh6D'1vU3VtC
A<D&}#&'\5jNV{u[_BsC3PznAΞnrvSW_ST#-NͦAsXD[i`*m&5mod\&l蠺{2O;:NcSՌu>ttfCr\:p:%j tH9+]6=9wvZ_'>U{_<|4=^:ٕ:߅$~pІp.G{hj\5]FV:	WpKKfCt]6+%ZWcV4N2حMNI,zp$=Ne.xe*``[f!\U1R)7b{ECEKQb]mYKwQDZRj&-teuъ
2 Mk\.l)3.UǴ$V>ѻI&ܮd[=|Md 1^QO%IӴkӛM{󨮈	Ͳu֤\R8p[J`fM({te6/6F5SL55DUI*H-ߊp;h۔22b1ҁER;h|%lwK]YԀ*g^á!7BBJb%0|!P9d.A-Gd.42Z℻lsi
v(YP	( owȥH̆w.o[l'
GG>@^q2Ѹ~aޮ'mEC]h%mvxJ[ԣ&j'uwmE[b4.+f&Q)1Pu1zD>	13O6!ipٍ?~&
[.2'z%\fRS.<{`z.δښ`:(E0%dR׍36cZhʈ$wd]WTMé*T60jkQ˳M)J
(pbkwAЙ{=~{%{cOB/sy	c>Úۉݬ]!O
5Gh> ]
`ݙOg&']}?jtŋL{^3{s<}x{>ȫ`{.K_&\/ŗoW։u/hƜUr@j>`犍ᣇ)w
ki2O(HK	9}"tK/bVüLX}Yv	
Wnݐ	m4l8cika=2!:
1섏FȚI"KU4B*K7BNzPɄ"`WS[ McZ{iyMyUS.9r1{or1&B`7C_B7\fʛi7?[.i~Gɔ`&8";fO=
0k`
^,Fb>JG`x
`8F0
"M=Xð?St"a&,Ŭa`7;ll7o+qE0WcH`-'P9a-~wG
40@jr0N[ڞwà8aFL8jC){G4>^FoQ
xcⱱܯ	Ƶ:q}|#L0q-hIMާB	˩ni^G&(r+=ޮq;
z`$9I6A)	e0B\P	k:D5p*DՈv#xNW0-S83`v>p1}`- T́X)\g0E(F`jXܕD;	3G#vYo;5{00ue1Tv]
܀]b| b@6:A:? ?wỆ># gFe'Gٓl#uav(xН
ց-# I/ąkDYw{}T%7A`+ k, 5=T#L{U
ɕaT#sQ8L͵|1(oLRz#Drz,cpp'BX
a"4"GA,G5p0 <("cgE8\
Oxq&Y9W/ j%^2st"q44	T͏Iu떊srBtN5r k;r׻|41{=؛bU]1i.	As
ױ1;+rCK$cAw+UFx#nu5F#y>Bk{kGG솄oi^dYbtx0xXƶ,\\uحB|fopٍp-F@arEȍpT.	<nxNkc|Tl06EY1cǭN-f'
;(Rt(upݒ]O	A"l^0'ptƸ9We{KŧOo^1t}a1&;ƂgK>\V
L+*dgP5nb6ă46]YLRkqd5	qǱ:7Zf-*DR;o2
$STE3Kah:L;Y?D=eZ\wb/ZkpzME/	_%P>w
gڗ(d,_`Evp!M}fE
/kqeQ5lru)I^\#@2W22x5dKډ;܆򂫽!u%ṄY$^YXv;{ESqgZ}\^R,|Z
eRԪ7z<eI2Iފzk	]Po.x&ÇF.Q}KQ	g|(ɾKGp3?wPz}r'P\},X
RYkǆbl_Φ +fubլ3[%e];.`=l/v~Y4elo)l<dy6{| +#|"ʋ4MK|l!-◳`~[aK#l)l-_
#⿰j!YYHa,,::XV	l(bvXʎ(GIq&;N\NIv"fuvx#fJΓ|."Ǫ`valˮr>F.be:fy^n5&y;E6F0kϲMuYA
{Hnc+=Qՙ=zUڇ&dU^SؿT)۪{H:}f'jT>Sw+,FƾU';?hOQwɁ d=@$cùvp9?vO1a$?r0V
z{'S!~f`CM}SF}ϤZp'0$p_~.~5NͨΆT~}Af8OOT"W`_imЅmÌ6Hc?A~HA]Sm-vBoIc]̐DU띨F%ɂ۠׎vO,ڢnc$la1T	 }%J!et'Z_`poy]~ᚺWƕ7#WdRi4.%a=;ӽ`^ed|?E]<16&i#HQ+J gc]Q.77^>}b[ߢ<[h-%}u3gUŤ2^ w03`-me^wgcR[(TJ&d,uUƺ붤3LkdLk Rv>gyY1nF-lFzm{Z42 X
W󀼏߀yp8S󍹐%P=l41ZDav*ԣU,;^*ORԑ&Hi{έa9.=I]%r7T!WDyV|зĲfsy<"'=']D5nZbjWi&f/z*i&=\QI/fSMqzׅ5³1 Ddi!w@	Y?xXĳ+ɻ;yn=N<{c<??R X'>
`7(aPP|G1h>ǳx['dv
gL
S>}m@.|dx~}y)Hcy9Wy%ū<^K(,4O4H8<8_(U(a \įBp׀d`SuD
bqyq&#v0~3
Nd$&cyeqK[=ѱRw@ofm~c#m؈dO' 3vB6F55c۔_EtwnO6,i7dӒ[F9pLB9c
{
rKnx <5mxa/C-JHdl6}?p&9_C6/ȾɈ]dQ9@^o{{OP|/HQ{y7^$R% v6p'zɘ_SX?+$-ǜy.C^kK
1ysQ>=7+3";WK&jp31߂LY|dpyZn&)yJ t]$,rȐ4k9n%׋m=OyVy2/-jT,ߢL4RqT\ 
v{Ͳ@;#P@bl^>?"F-辋Й`Ib3V>hxb)bܭK/#XOxE9賅Ϛʤyhco?XG[nO"_?KZDvZ@v(ם.;miVr=Ɯ~kΠ>#1hD92!1[m
7
4uBy#|Ai~1M+źH.s@nU2o{rO2;8=FVp(m5$}#FƽkEvT}$Gw1ޕr__/*7y:Kǐ롨Q-DhG\Čv?SAOvX4|ҍC3R֏_Ɇ컚װZRcsl-7U[X=淡r;;odFvobWMal3=e'ٳi2y	}_b,~mr__o\ߛ)s~ _5_οA[gǏߣy?ṍQ؁N~`^B_>OE'C
G"Gd^+:Y@tEwqC,=DKTc"W+ĩ8C牡r1L\/O1e1V_,&DVL;t3eq.fɾXs>b,b\(q\.b<B5"$|L^&
yCc",Gő%q|W'?'Tq R٪8GA5Z\"qZ(.Q+ĥ*,.W8A(Vz4B
|3u
=`@i]콤a)'gxOA7~?qm(?`B?A5C"j4PMGljWǛk0-ih4LMێ~;&=~_ uK	oI)AZJ`d|XAhS_N5i; Z'јHw{S?4>qo MܒZ+1SnHZٖXexr+'sth']5Ż_V9M:q78b#d"/"#f,	PΊA8ruI3Q{0&[.Et񈩰QՑL:ZOtH^׎%6_h>thOv0Cnޯ/=֍ʥ|+|	/@e UCZUq8$*	.G%7 y?d/)w¶˱ac>P\y/7߷]&Ϻ{q荒Y7m^ј%	0'=az|s<y{4N߈ן[gmpeEfeyfi+2mw15,+&%Y6B:xH>3->FK52 )@yYVNlbuvIEjxQ!LE+?͒yMB_ɗTH41Te0?kd*	լs#3'),5_y.kƝq{4*]qf%id\
4dHB5a+,
9bD1boύE+u;3XzfF'ޜ|(&'7:,3[j#t]:w"Ku37}aT,/ɏ|ˍؽ"sƒ:e,B't`]Lo#{^0'bmɴolMkrh<MC
ө)mu#֌ڔְhN#0}3buwψWY9iU µrhEtXgͼD3ݎ[bE/+Tvhhd,
c拎7eŚfGs:[	fLZ)9m`}("%=פ?KzHE54gkMrgy`! &*
m9Y li%Ѿc%ُW4yi}ehuXzȡ8m/(f<X%$	cw\,뾇EVnx]g2Q	cgD#pB Fq	6d qI΅cLD(746qCF7^"_Eq3!'ۀ,;Ñf&.io&zICJ M2 FlAtjidmKd
̍"잼t#r3TSQyiiF|[aʒ:k!/_)@	@2ش|;MEfPq"3u "=vek.̊3I86oI='}V칞A'A0X4fG.^ʲ#cr7<=޶8ДjbA'  ׋M9~x?"^ω%x*^_;!>h/9#]|.K1R|%ƊT8@|+{?b) NL/\"N'SxVv[e@v_.{-̑) eir%}"+c
9@Vr"W˽X9R^,:9F"y($?s|)ʝr@U\2BU.R=A\%j,W2U B͕+TUUrUu\GlyD')j<U=!Rȳ[<W$ϳ<ߒb+ /RV*/WX}@y5R^mYdĚ(o
4yU,ɻryU#7Z'Fdffyu|jZɇGs5|Bn[O)|S>k/K}|.[2]#ioGʷ;}^~d oMAi甲_S?U>+f*>^wPu7{zKU[OV}tg<P ](F'1<5VSd}oSjS33 9]5W[߫}BKU}2_C*}#ԡ|UW5ƫUjtuo:7O;X+Q'}S|uTJuo:w:w:wwZ[TnT6}}[5յ7uխ՝_]~6ǟwW{Axz_Vg!V?B?I?GzzzԎ@O}-`ف/0FY遱VF`>0(Z9Vk!V@'rGXyA3saWY7[Yc־O[)WϭVq;kv{vk#ZdZ.ANWkUYe+mU8
gU̷j;އAo<?='C'IH˟4&gz󠤂F'V,1iJ*aR

e*+x%W5Ƙ4<oo!z
M/ɠmЛ|k#!=7Mh
toЁMbiEY0çߌc.K}A-Yv` ʎhX`x,mT,mdxiS K[K[M
@ҽ\
_l=_G)!lg/HQƢ44
}!ʙc<NJ}J/v@n3AF3ڧ*zLN~Q#Xgرc
za@6){vj}>ҷk~lDf1A8;nk֯I΍yt}]vս;]_tleEETs,Y4PoWGvneǖsh#5Z	aZ
=áuZG@k
c	9<üYQ0 73F:|6fg9QXFvZ(^L܃Qld[U5dr@*1h{bjFIǈ\lbHl0{Fm0r̳szJ 4/7/>qu"N:FXx4f
ӭ:Yk RXi]Xp.6u֕pu5cEQx޺^n33Gr%_"AjlM(`?gxUlLmp,a?;;.>}9טq1-t1*ԍOӚJΧb躿tIxE1{XnԧU[Nΰ
ZѐTc6|Lr`w&Rwrd./>rc4߼g<Jѝl#?	^	w#߈Qimfn)ֽp z*GzX[D	8z
.kgVYxz³/xzm_YwYG1d}>` K6`"AoiV,(.!4ۇco
_xVݝ
^Z@0m<8;SlɊͰa&bXmdmShi# MGG)J:%d3790
.7̃ܕ.|^:wT
*'v}w-V!f ;t~^O{Pk;vTk'̱,%m?eDہsNkvpnJa;	}k&BIfot#̪å!)%?7/-^.IMȪc,co`{v/;l펐cw((;&]qDz%͍v6նPһ(7A7_a /zazQi;{
üw%[êM&<&5FTM7v4)ɴngrqM4+ @ol:ͱrtO.8v?8 L{\d
&{h(x
c%{iOw=gv1lg3۞2yff\/ic0cQh{ C
Z,|

qL&piN6a!qz!;=X|7h:(uNkGi؀)#;1	z9-$fmLH%A/`l/h|{l/
p}j*>y;^D>.T,x^-grL6ɦÈyٍc@Z}2ꊧ>I4h@Y1`@Ul	`
(>1{3=5ywU2;
(_vtAǣK28]]!YfTt8}9vzI#&ɪ@s}X"b_ؗl{-,!i5{z@A/a
᫅mkEBf
\eOFevؓ1O蠑_fNĭci(Eps{
ӈF.SM(ZlҰ#j_]ohڷt
Ra?K(|OpW'$gkh>3ъ#CVDIv'i__0վ%~XcuLq=a{P
1gw(1'/`_>}|w1Us(0E43Kih;VYd4Q6.a5fKuT~:_3gI{?*=M؍ЛR\Q̍^♐6&kR8ܤB"^\s	dLJ%~\lLUFy&%19j`s3Gbke#P-Kv1wRQ|Cq`'dɶ-0j+5د#x
:o"{0~"?O`)mߨ|oC'_"?bx&5cZZZbaz"gu-;DCu*;\cGc:ݞmЙ&ݑ5N!ݙ=t6{O4x_ߠH#p\2;,pR%H4cPC:{PdC@vT%c_mCC#]3{6ˆHqU9gJr	Od77ő4!d?
׺	$ih/~/S|R@d1>CH}@\yAr =CaY>z>"St@b|3|7M(:FS23@i `[du		g?:H=0v]al?c<dtt=d2ـv"f.|Lssչ'_T[%_d- R=!`],$Ӗ"L2`>
#Ԏ:k=ᎩGGA
B ӧ0S|=	pt!0|=.3R]p> ,Oëz6g@VχNr9QS(
ia(1^>mr-»SJP&rWF	b1bJRbOP?g4X~ʏAK(kLF]c=/1'?mBXY)7)ϑSV39
JҋO8}j[#U4+#[m1\gLwgلL / >9܊@eo^ʴqt]ΏjbK&OhbS^k&6I2$Evzo/@/Tu)2(ˑ6*`>u%4*8OW׵p>axR;HxW
+}<OdB`,Kg\}1<]ɘ>]_fKB-
})ח$};Sg
(d]v=#i,oa[ٷ6M7t	0B9ˆ4;ziUPYĨo{Ǩo'RWSK@i(RF^Dj
 Z}6;y<Rd־b;mBBrBR$Е*XQDi*
((((* 
*&DOD:
ŧ>	!6̙3ǨM0ZRK' iQ)5jSQE|R'QVێ;vwJcUw)n禌!NZ*X>3DWSD نȊly4WPy"Km􍼃w>#_bz+_o6=D~o4Ku9`!rzܠ[}~/nTU\MH+COe:G'?	X+?N)O@QiN9}uNC3ņ(څH8<Q>泷镼
<	o&A."pgwww黺Tß˟.rn(.(\e77RE).oZ&ȭ4TЎ و7埕ϊ 
LƹI+o,oԐ~oՉ	
3r _9Dw-"Gt-Zh!E0J0V1As0t-YZ
ܩq.VhVkب56jEء5+ZSNiͱWk/VNkZ1~:VjuaZoav>k
dH_Bƈء0J;HڽCFjNhVT`bjC c/&_[[ڲmI^8MԼo)s{,#FR'=}rStV6
L uK1j%VY8uBirOpwXprMr`8-E,bNRLJ'<,b[Ve$m0LkC
G=mhv9:iW( ||$p
ƩHZ(HhѲLT;2ޑ̂&2Km}?K}i*}Ӱݿ:ΖU,,R5].UuRb<:NwL}#[^GjǣiT$DIC*Rf.8eӹez%'	DӒ[Q):^i]b	V9@ד\KN2WhQ)F$U*4lcle=$[MMH"SUv
m<bdj2ND6	ʹVTѦ\զc6[qvhc6k;U<'v7>Km	ѷ8=@mkԖ][iC0뢭b=GX1vMֱ۴.m[Hi
m{L6hOg.m;{W>^b_j/ڛJ@H1bH+ ED9|-i-o9QP)퇕XbA8DЮ;,`ѕ&|"ÞWrF_|}E9	1s|?ҍ#$ԷA;%D3L7ύgk0N'Jܓ{*d<@[1Ocwb7l2_kUor_D!E%hzs~1U1HE0xWJ$'ΗY[^kkwþNbt!L7C

R{t~Bog`+aoR;qQ\Tbn,UܧGT7nbnan9+zz-|Cugij.qh(04Q 
[~o)խ{TIZ(,D\v]!F(Rw߈5{M/[E!|0bf{]]+cl `eM2ÓH=*>cQc1Z|#MU?$'blM|*r=VzToi7zc\c^BLҋ0]o֘c^6xRoz<3{^BM3 ?w<YTԇ:p>}!n.RLsf]+x ^@ܸZ)|N+Nd.S#hԣRۼ6Lk6Rx&n`O.)u_|Ix:e#M~EJµsܾyLM5Z,i<$D
"wCUɵBmt'2êf8,z:WȌ8Vf8ɯ5<3l`]֕q+_m[\Ufe=;fU-k»Q3**l;HbH	JMU:Tzq d#{:? *(&̨݉MZ~HoսRuL'+@H3C䔦,vꠑYCmSndx52	NS{(7:ψrD+½/%TX:FO$
0	~2ioA>[Q߆Ltg>w`>I{<<}{R_5جa^W,>}W}%0K+YB_鏲"1ZkXo}-g+<X_bl!+?bol{V^ҿgo? ^Ǝ+~Pԏ(uJ~L+(r	1$#eLTWGʍQˋAemږf4)Pm'oWt6	^JEٳX&r[DQSS1}m8@%W
*׫D<eQ(ٛ+RAKj'AvVz JYG VSV4Aq:<ٮFTj
0S8ku9ZhAEC7<C_uQ.:MTvc4hXѺm:FhmFS:z$R;$F3|:tKf.}ƫ(]P5e5ܚ!Qv5-ބѦD!m#N%VȌFNu%8-R^޻)#H[#{sd*7cl`;Hȼ@<o1A@|~qb{!	d$`$2r5rnA<.N3꡹ 퍆)@3&myվbsNGJf(]oJC#:oė		IRK9h(@Q\$Ew#~;Ȑ~;"'̗\ $v`M	M6vRt'45:B=6APCۙj+UvZʅf+2,Ѥ[&eӥ;ܽ$:G*^O3Ij[R]F_O8>j+ܼQx,"1)t;,ZFOF/Ξ1M38ݍ8}h\aƅi(gMpL3F`q)aq96F	g1>Gc[\+^8%DaUuY<Қ#bL/ݩUw+Y!NJsس=ޏ[wbJ͛rs8߇]DW/-4\^?/+nD4i(&_5U ؀$ih=li1c!
	aoB1Tn܌-l܈+ڸ'$#vlSϥ}/ű>DǪIroRr&?r%ޔ~m	>=zޕ~<{EeW{
 qu^:[ {]?TraVuC!<QB02ۃ~c6C+d<a~Bs;R2O81Wjd,DؘE34;h̡Ny4Cqqwc BƽoGc(fیxX+ X;bU N@|"??￥H=&whcnC|T.ltٛI/<OrI@
/czQd5؛v
lb7d"	
5S$ZZMM
xI/
T\bm9k)	^]4k/!a|rokD| 3
H7*ϱ]U[@Te࣠ݬD\ԁ߁W{-Z%9_(;Ϗ[_e%uy4_`H!ܝ*74 .;x
5Wenfuw;y#_4!m()yoˍ/#jA%O{_7ǒl05=Q;ceՈJ$*U16wc=2<'7uH!ꖵ쉱E-KjUIA}SO!.>wZ_jo},;<kDJ_'k7q60x3w0x܃h|g4>gk|/-1j?Ə52~bou7lq6qvqbg3MG0`FfSc;Ljmb{L51YCYS43tef+̈́Qf}trP<Ma)MQfeRhRn1[+sbeY,3(f7e]lP7OWioT>3{)?9jP1j]sZd^6/S;ծ8ߋaR/tK^OjCl(ALd)!`+4!8P^RP	-MRI$n	ɔP(rqX:蜚=?㈒I$"ZFˌ`E2#iQj6at9ֽK9NXKL2c1J$!˩,'s,'c,&Q9!e
uwcRL7K$F(j~\O4Ƌ41[uIw<%ʣERǊbQ/#5u)>6o&ogZsRϥBbc߂.>.E]|]D>Ts4'C3omNAܜs:Üm8˼皳p9C9Ҝ1<L0ƍf.<,16~4I 5+_+YGp\"?|w?dP	/}-Dp
?YduX;5s
_]suq7ׁx溑D
Shw6W1u}ÓšC"'u^R87ַ.	5'	k	OfnB/s36|s+0|W@.4p\.@
HՋMm0W/Ȩ>0`)¾И.R4P|tE`̋o",s'b.2_B}41_E:FV?>ȱEMHM>k@#R%
a;\orܟjwe;5*bL;x
=sҜə<ISA<wMY"K7cܔSq`~ѯg}8]Fxſ>mINS1[S'Ȉ$1O7 &XWJTQg:7MI۫߹=:G1ڛ)a9.2`+77k~>1'<m.Wb?y%-VXZ3,մ6 f[ilFY5x+ήj6ݪXYl`Y#|r0#_TrɗOYp`0	`&L#|G7ΑэSIxK!У˅xVęvZ&_$V>ZQj:VCX>A/Ӟm'QDwgWgn,k$e[3TbZ+wkINKm*ܠi }&ܳ9.bW"<]x{_]Hx?wjjFV	A
:ZmjVguV':*YpY=0:s^XbN!K}H-u9Q+glȯE-q^<#^knkQ";tZ/N?8tdfLOUpw*c9YGîOIDk0udd#0xd#;Cb4p`.^L5EMhyr<(dEŻ<MW5f2~mSxEcnEk~q]V,yg
2'
~RPvY;gh/Ϛncb	OD,k [gu6s:wFXa5`
4k(!0̳.=H,֕XmZk6Xcͺ;k5X#z|j݀pк1kӭ[X̚Y3XSVκungBk6nF[sk.պece|ԺfOZs=>}dOr`=~V[˕փ>>ح^#̗qz4_͗|׳ZEXEbG|y{@Mc	BӑU"J	-*O0lKn"a4G+=-}oE
	i'/B(3Exi	EiZAv=H.h$HeȠSbp8#*Wx6*y]Քh/4lUGJEAKCY4A/S{@W
#>ӃM;Ƞ̅u(*+8BՁSFSp.2
T =scG4<dD\{RC^'2;&
){V%@IZqV<Lb2Gc=(n
Ykz
uZ\omk3ъ-cm%z
gz+Xc=찞cOgD\+֫,zeX?Ykou$.n7z85;v]vц=ak/[m}̞>gZ_=f?Z߲_}ц_	[?+u@I~QjX*J:X3Âv!NJD N8]A,E"D4"KcZt?=%S^XzoW }J%)>>ӱe()BQE$Z_P47:jEUyMјѕYiac+TKі3n:"Q99ꋡ[$׍k7`;i$#Zy)uEh"t5!ba6Cm[E;fvmV
粺g7_tUNG4Xw8~qi4&#ƑI1crm8+)h	>uu!u4|c|>-R:xm7;Uo].>8?iI}5$
%Q|k8x[ZNЃ,dYN1vkDb԰KeA=#إ(;^v7k`^b9%E,tuOQ#"$yuY'+*	K^^e(gm*5J-	~$v\)vϪ(랓pxJwc{'TvUlE|uHSa}ǻ)Tu8ݩ$>'RCٽ.DhDhћТv_vhv}βp\mX`_ <f_u`l/%xw8h`̾X}9KWF(Vdf-1}ceײxv}=ƞn'd?1/lC?a2-:n!+9fJY~X,VgelhKFM5&`E ufRFn1Îqx>'ɑb;2?3G-{7j(JeX:쪻p@jR[n[h-Pv*!̈́io!NH;[Ǿ
q=#Yg$̰`=ww̞J.<eߍge߃W{}>a}?~p.g!{1%,f/ey2B
^κ+Yo!?8t'K>2ZbG>>2Ș#cDƮLsS#:SLhyxŘ{z.>	?gy&+LHn\Q[q~ꤲnp<n(U|띪:zŭΟޮ<
!Gf?Fjڈiފ.6MOv_{'nwmz#uQ;ݬ
.e
OڋЩ"w:Gn=Q._T(`gfa~E
]/j< Iw6sSU{>Q*ػoA߆eC]ZD{gPh^t?-q0_1XiXȞ!|B^%WŬb:WXH;9w_(vwUޕ
Gk}b.%1%(fПS+Of:4s՚t)Z	QrTD ҝ 0:8::9Qtw,sl\8aS78Y|'2!9Q;.%t:,d'k?YdA:{ QJծRW[hǔht%ӈKnIPJdFL1=X2
xHhU?7&F:t:ػu3huEK;g}ps68`s.&81Ź AX\%%t0Ы|)*I*.|	,DN=,
g9g84glҔiҵ@CD] B7z6Ӿr :5+Q2;D*S5*ǳ|H?y1W9W \g{4{*Մcskps-F:	'5>lpD؄UDc} cOI 7 & n" L5>q3-5 }~ġr:"wkd:-IX6+]GH"dʴ~maKT^2wҨNZvjbJIOuj秭r
%4p<a/Y3n@$.B{܋Lg
Ykbx])D53.Q^-KвM1%VPxJGRh@<@%NI5NZjɿ]\ֿC$p+ipمOvFGN}B`"j)7uq6aXglYVZGRp?BJG7HSQ)<)cJM%Tm?)T\,
V~Jjg'+& K}X#1d^2A5xW+OT
VɦIPׄě)0	0yD}Tr/IzZ%rDB+ݪd^Qm@)YboEi<&"%kr&ey!0thqnL<PZ	\Ӭ[&yR1(A*h
tLd

Q3+PD7)Gx7lC.6pFf%BT)Yd((yH{H8{뼏GD!1p>!r)Ρ/0Ýo{"?`#nw~<g,v`qmίxī?Vu
aGkp 	W+=h6soo4'|i"r=C@L痍~	jq#^&L_PTBGKO_T_ =r2,5%	tiQH3RO=ZTq"?)q?^eq)K.$~DqMPzQV+z>t]R2<"bub
u	1TE^П\
i>( PK
     A \
    4   org/mozilla/javascript/optimizer/ClassCompiler.classX{UM2f7	#^(&iRj[q6m%дŴxn&鴻3lmR~(Jt[@E'EL6&
Ӝy{_}Ubqe}X
eQx>X$2T/i<Pi|;;
g=ωxc?IAT,/eJB*֠Gsz]Z}9r^B"kfpX$f;}y}û?e:Ud;ㆻkXE	*UćqKwKͧg@_@3RS:j6}z2
z:(jfZR~r^쬞ۭ;x6~˄]pͼyp|צ,4
z^4/Hpg;kƳU Lwmy( P|x&Ʃi
-hHw(!>5Аx[]JLbꨳ*SYEM&o eS>a3gDUk^W:PFUz441l%I-@ՁwȺtٯ*B5,ыn֒uM&	J&Ed7OrlW&[A,ԝ|!ڒ|>O6]-	Θes1ڪg]ۙAOG*RpVL51=+Јŝg=0=,%
ڵaz6¦	Whnػ1d.Ynջ8On=`q(T\)m2NR_zbxCh8f^a@:DO@.g빍xIҖY |T:N8Ӭw3a
QчU*>5UAOſdF
GYS
6KX4o(?ULJXrR3Id%\b7nSq#62*^fo<݃*~7K)|2Rq	?MoIƟUU2S/yl13b<wU*gӬA&8ٖ1⬌^(6ލ\c=G @-N:U7詖W9%-ACnD$L,cNVp
1҄[gN5k#9 m:ˠsκ٬4yќa8k+>jsv<LPs$7Wta2k׮='l~ނ?~j?}.lo.iKAt	zjqWB!	:]g!u_@b
#gz]3O<Oqm'JZ],Aː<=H4fH) c!!p!*Lz<cC+D+Stcs{"]/C>UQ6zjT!P#aB±7͸%P:sb`ŊY]A};vae0p/@NQe(8U>X{{`Q`*!1 #08
(e~^NuR\UXJXi{;Yp~<}>K3toN$YMtĕKYW^x)j {}^ʦYK'tYTF*D:nȚEhĤ,eR&UFG&)jIC6-IpV2<Ө	2bZE24	kX<C#ai8^yKGښbY%.ٖlk~X[2Zk3)-:TW@֢˸XR:y]g%tf<kqM"}aa294ƣx@2:`9lCpf:6?º_0q8}x#Oz<2yG>8Ž)O8!ógNo'	J-RVB
K#)@*
R BPy(04;$bYJzt9Ĩ38c,BsWCx623G+E>is֖s4ѥσA{VW,@4E@'y#2UGe):7J,y``wڇHnę{]PK
     A  4  n  .   org/mozilla/javascript/optimizer/Codegen.class||TU92I&0 I@ZЄ$@0$H	$0 ⪠=XbcuumݵwײKsߛ$$o?ssOwx `|]u1=D.b\hb.&8@\醘9bCS8D.; Usr'%RM0S{.f; C9D1Eܾ!uXuQc%ø|TTƋ*Zt^lCWaxk9WuA*qvVsrk(Yq./D~P\0D%g8YP(uq+^Jp.1Q8,q-\ǹ_s
ԍ8TM˅M\9͜ld.t@-Y+qr'+9{^ǹ9 '9yx9'rq7{L;
-{8y'^=S<o9yz>g
WK+W9y7xi!`?!3ğ8gN_9y37p!n⟆cN>5gXl/!׆;>{C`
!m
q
q!!:1	D:^)9ɉƉ&v0d!CĐNC&x2I!S2d*ڐim3/(Gध.3Ѡ<ې}xgd,C6d}w3!sd!8Py!r!Gr!GU<C6FrCG,+'tCN2dCАE˩¢)攔W̘T\Z1|Ieeվ5eCBec
u_]\_M!lά搊I3KqaŔ⢒BmvԢfUG0[2:h)+Z:|ljS^4cVɤ򢊒ٓJ:b	Lmʜ҂♥f^іeϜ&WS\+3W6V=!,FjKeCkjj|Cype(P0W DhS!ZWSS-7	-'p&B4.ɬRWӨ
,wE[U'X<X\0Wu3
˃U

D
\Z"W\XVkhQeR!!@A,,DHmW]8:
dZAMSKr^W3GgBeRkX ;N!PK˄uJ_=Y\Y\WYM0{y.XO2¿aP c.6* WN	ky.LjixpG+*	'`!<&(|
U3ad"j!_%Q"_i96Whlezb˰gOP|o(ZMl&R[з5^ f)'錠[|;EN?~Ww$a%טyB~	H8I௫\It!?EݔƺJF4IR_o
ĨpŎX8fQt@F0YѺF[b.N]!omPufTG3(Oc>i$ePama<GHKFCۊ־	cɢWF<QN#[RĻ;/V"ڜV1mkhP%C܁r|RhsO@lJpĬkW	Wb.bH$-vZ)G|gQL,]mk2_
!_5F,_pW٪h1|b	WUMҭ=dfz%3$NCDUuy.KL?!F9)ʃr}k;N/!KG5DnPlv3++NV,On}$b%K1@]m)8WI̤ vabUԪLMiܰ.P٫"9m@']1 O|:y1=DթaDGS)ۍ4S}
>4]\b4XӇ;'zR	:y<.2yL5=#IN_ZK}o.'Ȥb ̋T6P;J)&+i/kQNG]&
4X*7euq_N.U @(ܠT)mܿ&P[ʼ[b:.`>U90Ig|{lb[7-dsx&!PvNLmڢwHb(KP,P8k$7	:ƷWL֕yϝ#kG@Lۋxe$EEkH5./:bl̜Ud4@!grJTPk^Lr,Hu[aj(P.Ku֪cQHaw7,kfդ*,J}P&/a9r	7
rTIY9'Ij3ZL՛SEmtw
1j4D* 
|8L(9\ǯ\Xb/+ZSoL|ďʄ&R*W,b&qH
\Ue
Ѳ*hNڍW)Љj̖'i45=@w-\S,Z`nģ m5jq/g.g2!7	6Vy䷱(ȺF2ZNdB-jcE#dfheR8rtY2&%'
KG#}};E zȄŝUa !Sg$╮K{ShMtA3F69#Y~ŵxrFxNM.gӵ/&ahH@2tjLMt'PmMXxM":^G;^2WїUxWV<	IZ
fS;2Xw⍎i\Cx.1|'(9q<:Y]MR!V!]DPӰyۜSnBYRE\BR)?8lQܢyTUe)ȹg$|;!C\ :")N`fdrxJ"q=YF\,+t)}X!?i9=::9u50TȯVVO'F:ee?/#Nmj))8
lBqZI#z UKz|$N:qr>Na''>rS6՜#8Z|)eE?)cJIiՎ|uȨ;a8t/tt兴cy5sNy1ކp/%N܁qKCL[QHv\GG}^r'<FzB)G*q\#lK<dGTrĿNy
=~@9'
|Ӊ/q#!8N|
9X&<)C	LM;CS@ӔÃ@NMNq)7G[:$3]~@:VBדġUU69&:Ly%v>';flw:yP{i@Ъrm]|w)>y?i,^hL"_79+w n!O8!?
3t8r;UG:F'wttʇxDPs|ѼIZر]8d}k;2Չ0%Z
VdN=ntjŃ:01)"D/\+0l]Ft|^}huSAU%Fw撏d\rǤb.iY0aR::vz\`4꼀l!X1gh?<}|Fdq<&B8J_DjD[;.la`7=pҰI*U0XʕfgV(fmWHS53Xd<>!~jxeg>8;AIb8^.K)O3r?i[_qgX>K	#9B#*V:E3b2?mbj~5Z\,V§UNXk'5nN{Ws3UI9
{4/:Kw՛k;,6@dm+1H_g^lVV8E_ukka]roVMZU0^TxW#hɾp|ޕAg8,יʵK]<<|SnG;#\K"$
1V7DH|5ݲD!?1e;;u铽z%`1@x:WC-UR(~iT8!gtZ{rȭOR/2c_F'u#ԕ9fuT1:Qb
^xRp8tl S:z!8ݢ'wVi?wϡNfp:|H<6Nhq5:ҎHYc8裖`L |`~l5*i=9nc l5IU]ew~NVm^6bȄa3olh'e~L	H.o_B.G#`2()F
Ac{,0mEy髪jžh5c$;P   BV)SW4-Pz#GyKo$9r	!,aqG$XLRO[̗gI,
9~yIe$N_FzߐꦒZiuv1SSsi3/'ԨwFP	^ _ka]C/
S4rD7P'UW4c,u̼]ӬP:+ܸ_rU3bhjY3ئIB1UZ^x,rgkb@Lϊm|OrQ:iG+afΉ,WDI,h{6eeV֯U˯#Ppԡl+	ufoaA= HP/ AS1eĔSTSO嬘#TSC.Zߋ9w&e*DQQxm}Ǩ`[}ǩyrh8҉TCk!}wvv}|:/M CA
Is]q2XE4'5>7s՘j|Ϲ)8a5#O0ijfR9u2	f*y3q6ʎ'hXzSn"t2<<Kp>.0g[hD5۟
8%Gcuz|{N8[ a3+ѕv]@pm^H%ҸSHmHjwZ;^Zo؞G/yGi:;2W'"EgfӡCC`.y0΂a\ rʫRM;.$֣jR|*VktR*p	IްGvZ#CN$R$dWј Ⱥ~u\#3:8Fmh0rt<+:C9gi|
2Z >=ZpJm{2	C
{Giw:^MajWP}-u
[TH~
e(&cT b="MŐ%̶03z8FP70rCoW5&Xdz4BD78@hrfemr,7<PogGo;'F@^?}jլAp._@=Σ=Bz>ϥ'Bhw: Qq /-P*]i>U/y^a)gYvuu$6.i%4dDhßZFl?ߖa$t=C$Q!q*(f33θa!vPo)^JxaQh_WQp-xpH#'pIԩT^^+,uW)J}-6`9^M'*	%	sp#:KS&:5F9FMHgˆ"0Z)uzoSq7n&^o$#l.FmMK9˧etVcvA~6G2ԤʹtB4}p
<Dts(~D%%5̔*Xs,3Mzn&bԅ׻e-0~<fl%DbR`VKy̳mnmLm{t&0&k[!21~j/B^("bRKDiJΆ}4j-si黡$_h^G^(^3	YlD1~n"Q}2tO	F3p:<9RMϓJzK ax.anw`1N'aqR(#aށ tܢO_[)(7z(*E~l;Ud6PĻ1lka/؏XF̺>"ʃ80P| roR1P#0q|ό-ݓo/9(p\:uHxGLW}B߈> +l	S[gR5Ł GHA޲{amUj/B/39`nG4q0,y[j[nm8'iO[$GD`9ї_i5ɝ`|5Fau|+U!W̷+ng>~%8
t|oMn<Y/"urB&+;Nl$m	h?B
Du?9')8ckcFuÝ|w2hT[Lմ=FkM}]gl&D!ŋcz'98]nXs-%[2_Ǿ2HP==L.ln+TJJF<m-PNjrǾG.`6n<G4xhɫB_Oh̏5<a'iHy:NzZH>ULot ,p418x5F;@0C'\	jLE&llthnŞ
fI\OI|j#5T7vÞ}C(=U˹tG-e9OBE,q$fnC Rd(g"yʱ G{(da<>A9	#Q٫<Ig#.#m
5tE|!>t<LBGIV [~븿Xq~Igioif9J}\`}/L#_<Aϴ/_-ӼR/j8Ieu[`E{p%JsenLT`X_)}Waι@B\g&oo]Z`#e؉2OGj\{	@JӖ׵ka"C"c*ӱUi0<x&	RJh΁]`p>Q<Un
B'RJ*jx	W>!#[lu7|st:Q:yT93A^[Oe|V	PXE,2}RÞ,Yj2<u[nЃQ,)WD5<bTMu#.Ԓx3hy)JsEmuۆ7MH׍)D|)IWT	ɅnSI[X^iJҪh%Ijk@սn[2t̈]~;+=;,]P)eӕcكm5rLxרSDx-i-Bc*R@K'^%#T2
7I}QD}JԷdm5Dpɸy?C9}|dڣp#)xRTI؂$}2HD/֮E);$cn=\ǑʲL>IW,[C"=ӧ0eZITζV"Q 	 a0eIZjZ=umui
{\\w6cS&KvdSFc
zL=v:Ԓ]d]w4ɐRtɽXYT~ncnI͐DEUu&ӈ:`S+YRx΋w7As-PE0SB+VHPi"5N`($MNn7)zE<v5ffخT酭8Tjsl+ Nb҂$V-&ƷOz`4;0߅㇤L?"Sg? ~A
KX_6wD"=?#ܟӤ^&z=!{S |#48 lpLQ:E<N$0W$cD2N.*RqH2E"nX-c聫DO\-2< ^ě(DrUv+~L÷!pm%<?PIJ=rd\^w,qb)=~#r{%bы*#%?Q5% i1d;"[?r̗e> N?VfTx]JcL#j{⋇]0$gLGvI?;V(1b8# [Si0Q)b!&}Kj`A:A6lo<7g3g3g+|u6:9	cj/&gۀ=);.\R3ę#`}B+4f*(hrE\A,ܕ9Ej_|WzUA~ݕ*Mgw'V@X	=D-uOaXcD&aߍXVAʷM9IҢ><%D'b%)"#*yv26TZSmJkvpd^[otsM[⶛",<o%,pkVEM~᝘\ݮ=DAB^mPq4tq$/ +.|q!yˉ>WWB
.2֋kjq-\'&_[`&xNo_m-}wA{L܇?| =,ofč/*nlQm/-HXčGJ,&OR7Jd\D,
Af`8gtrt,:E"}0Ȥl*&؈sޓ]qps;qPLbotʥ~Tu_uaIjkM:x$%vBEzݐ+ib?Oz戗J+śtoE$ [WYv hb5
]ep$VL/Sn^Ӯ*3
ϰO#VNȰɳznd=ϑl+""}n9/Y0C|q:/-Bh nq=zhFU|ބUHq/^2\|Y:ΜKgj3Pu~.o7CKyDlDS Pw;qX<ex˝	\HVF[;B2	5Wn_O祿'WD97ՆR=.z=Tq3%Vx96{?;z͸EU!jKu٩Z؜v;UJ,qTcMT1i2Mn~B<M.M;q*6'uunO6!"ff7S0{
0ד&GYt;2/ݝ`˝qGq#Фc&\N =PoԧVV(ܾ[uz͙?xoq_cDER]ྎÛ2E #gH!7!V!K|BS">as% U%_T
)% 

qn`ۤ{;vJ<-𬌇W^LdLe*|"[e7Iv҃({MBId_.`^9d.sXR9婸@J9r4ncq;''srNN)bZ?Y -rHgtHgrJ%/
r1S|BTɕVֈɠX/W
2$n&(n犻yyxD^,vK>yxN^.^;JA|"75?Z	:'iF)oF-ov9J!Y,6Y&djʇ\.mA&"}p+)\9'=ͽ)VhOGJ*r3ʥdM~NMtri"/)J5IV"w,
t妸uZMֺNqZ&bN$tJ'ҏ߰*(g?-VWm}:VNYYB4<^YC&Gei'4`+fn)-Î`F'ԣ CDE©Qi0{H&Ź8a<G	ripbu<lJpAZ+C`;Fxe3r0jO?o#Tjm38IVKƫϬ5*uA$IePi\_5f<uGP(,8ث.e.P!G31ǐUfZz_x!4k]>u}fJ~_n7۩<H{d֖lmm||)E'_wDBhLoB|۰Pw/߃|ΑuQ~7ʏ`S%?}sxI~/I~ɯ}
|,/p@D]~	*<1 :rAO6>C
<Hv(`6xrpVLubKkbs)r#Ȩa?)þ>#=#;
|cǨiaL}&a4ߊ1㶎qG_?_b#ME_'/NLܼySQ<ͣͻ9bL]<_ǹwx=qI2=H#qncln"oVKd8ol#%pw_HBh1Gx~Ȏ.i_ sSehv\rJV~bQ6u(1ݺΎGdD6$-2 (BsCO-wr52`&k}Lbm Bˆ6j9pwhCNm(lN0xBi#5m$YOZ|j{mhc6{k1K#q6'jXa6iSlm.ъZ5xh^7ivLSe`Qnr+K35hRu lZZ-w߄N03|:uɶElSL6K,&O0Wufb	An?Fꏘ<yGG]8h]$ha)ۏ=21x7¿[3q\w-Jdlp[6L9O=p(49mŹnexH_oow('m*9=I2}6I6Y- j K;&hH(|p*JkX@ׂФfmUb$$L( "E]RҸFTe\d䍼puXnMi8֒cvxRt&:"Mei%@1ڢڤt2
hJ$f%eoi,IKE 6c7Bn3JK*b*
ӎ4ԐmYᵬ=ho"L͚za'IƝ$Z̵86AbvO PLBvuS2òni8%rk˭ٖ?۹إ[ۃF6F8#B*|ϻ݆
#mYLzD;x,om%@k 9pv.v	.I$ͮUD6AkXkD6[l$
6iw==$'fxF^ |=_i8=.m'vv m"t!_hp\/^LvIYdELVJ KP'8OO	w!~í@D+M\?.s׷{=ouխv
f|`%i}bvў=K1!}?KRLfDMk	يj:X_$-/n5zi- yjb\Чvfw\}#<&M6vS3':':uFNvE`?Ǭ30:}Oei^כ3*@L-}6Ltӗ8}FN{:޿\?!]2I6
t"[2.)FZ`I+Lb!RaI+J=3rZۼ^N*v׺g=Vcidkݱ>L7Tfpkn7оC;zk?M0J;@ L,Վut,t[	]R?TQREI,1BI~<)QwRXg:ˢ(T»bl2b2pd(ؘbrkv~ΞC23:^C]o*j>vS<!Ob7&?3?{g˞ɒ 12*La)dK--fq{tqz\͋AA܎vgMPK
     A <    6   org/mozilla/javascript/optimizer/OptFunctionNode.classV]SW~Nd1l-&*!QlD1DTжKq5$f_;S7xQg4t:WLQolsY9{{y޳ |.&A\G&
7ˍ 搕|ܖwt
_
=(eX)?E3|bVsUqfIVK9*24=#YZ]Y*oqAgٲ9'kڅ.-
TgM\;y;N&%'<}`Zj,ǶX;.8k,hlǱhI`״Ugͥ"Wz9,,.jCrQ8֊,o'f*ΦmÛSSu ݲ9	mfTI`hXiK`qjJ	8%6LCs{|ݬez1_rS%m'- M
:GޓՒ|Y۟)~O7/hUtoYzVoJA~S mg۳)˧,UM|@=؍t,aYG<Uqr㑁(b7P1 &eT|s]8_2`jx"--ETH,=2VH^ $.Y^^fXucQo1k[\`cHcB9]Z-n8}V8}XZ^oPc}sfrR:J<eU'*.싵ͳĩaՋnr3nGJ3c5RuO! >|?A}o$^J|n	m]u=upXyW
!z_"#5]!;=`NU|È+N0'~Ю}
}E(83
>0)pGkC^@䂿	doHM6_|c䤎p$Mhi6Ep9n@?cxܼT:L.XXa4 T>us$rp:#n	5pŐ*؜qpsƉ-2ʵNkk|?&q{"u jʧ˧g*.EY6ЗϒP"'^6eA 1`or;lr뇈rD-$[MNsu@b[D<F)8Ѳ:=$eb/\aLQWYk^
A{A7IJB=Ja#ݺo
S#5tZ5d^`zrYfVh=]/2~wMzYE5&YwY}3"6fyOg}%$aY/,&ՍЎiLV$jx}FL[GJ!@JaSJPK
     A     @   org/mozilla/javascript/optimizer/OptRuntime$GeneratorState.classR]kQ=Ӥ&m~&UIPJ -An%nݻ"W>?J{hZԅ3sf3 A屈>E'PJT|'Ǐ	K@x̡C(2'Sq@=BjHs(&s3!޹؞g	[F;UczXI}½2sVx$V;z($zn&.#4E/	/Jjo B}GP8w'zBh6B~7 [+]_ƓOtVw"tui=\2*Vg(S>qdhMH^$9
N#-˿*;&YXA,7`eq{/ju3[,r
Ksx\fsx+s*WĮ~u
>MlfigP=Bk}Tkc'\s m!MS%A\>eԌ^2V`<!mMz] PK
     A hdc  1  1   org/mozilla/javascript/optimizer/OptRuntime.classZ	|y>vvtKٲmyeH$KW#ijw]2!!47-5#M$l&iH"w4MHh6I[ f4Zj̛7}wKo<{sLku|K\jTL=|wbb#I*g/^sg$O&F?Ug5п-_/5/J!~ebVHc+*5jfUbj>ֱ.RT.jPRkUR-.5H\j]u&5%>^
*/Sy9SV3f&t<ٟ6&DWH'3.5b-fo<Hmx6FbL.n&+>e=71~L4Mn#_sO<92'-e*$-D:2LlOoI pRJGmc6璮x,mN!є'h52cZ1/D&UAjse̘L
=i뫕G_z4+gZNʴܥJjɋ"'ÒXJe
O'#K3&QTx;_>\d<oj}ȈN@E	1#a0<6͇"!Eu&^#aMnyyfpѝ?EvGb&yId&fګH*;c8n$,N8|~0!fjMyH&XS w8AQ$D4-IoLY[qȜ^}EFuMLw<"fNY(E8w5YDTOe9ed(\v	QrS>ˑHԴu*SyUuK'x~)'U37e/rtWlb >4guR;5rcZ\4Xp"ρ.>Ly2&RilJUz/wDDV.(Rdq䳔8iM$PqHa7)FںjV̰[.<*e)3L%DЪv]S3¢T]5+41a9kd5"^tvfpGyǍIp8,2 S/\5U@k'5ჶ:tɔYMkSMeLO$cuHˌ37ÐBI?0lF
?Qc*<!D)QDO ֨b(xc8j~ɰ%"bY 
:R+hT+t^ɫs鼚u^~80cVurHf:Ty`IrN)RV{:t^Wj㇧juչniQ(3[+ ")Qi(6#Z%$FNOM*w7MxHp[y+n7r	EKE{t!8mbxrUN<+,)0mZHl}q@Py'y705L+gYCZPS/ռpg>y1GCuy:tD5zNALPm1qyD8,Db\^X2DU9
~0ꨑJEpf'yUWX"|t1|2^OgL&d
ucF$μBiAOl{/
7H*mOa[yucRcG}&r"Ƿ[ߥR}F&:}`}v6#jFcǌdgZn"4x:s3b`^QNmyi}<%DH_t-Ndw+YB:}{fe5ŏyٿ4Q`HK+ @)ǮnD?=`<adJVw¸8TVKfdvwHk`!2歒
Rw82Ks2@(3'0Ӟ'#:]:}|F4[zdOW̓ʈYxDr^f#65S
Y6{i{ooee_FPJ.HKsVB[DӋQ{qo <Ԃ;:rNZn؁GNҭ$=n~;iyfKI*z\n:Cd$n#Ҁ|_Bh;v̹o0LuJPyW?/zkèaTEwҐdT%YHTҠ64Xzp_SAs@iw{ỘH PH p0ǳBBr]%p:Ш;ꎴcy
y}0<Ev%4EvwjsrXJ2BAwd	^/ّE%zd-£`eBq`&lAp9S7/̍R'ݔ9؁P{J%8%lo
Qg*d6[Af*,48mG%
*)ÿi`⍰^S]"|ǨsS۞\+.	rTK/;[	,.A6:D%6p&1VZ;,dkY$LIdrP>`{ l/A #aGCoƌ<jI`M3(ST>Q^[z-{4%V8Bo+~æv"6l)_Ը<X:\KRUINzM_COW>pv*BӍS\,*MY ҅|[2^x=tN|6)$MD
Y*'	{Y'Ft^ }f;3T5OSu&8qm`?z><yq-"zN)\>|nVK$G"Th璣s\!G>Ww0WڿKFl2a/r=N4DCy'btFIr~<
҇xC$՞h,Ìzh:k\/v11\*7'd<ôUGQ]<g}"+32*^kG#nHn>8Qw
=
]?Nҵe)7C5ޣ0Rjje뀁$x18S?	$}
H+vބp.Nk-tFBq)l>,-y#匞7UC~!N2b#|ghiZq+TϼN4RZQ|e÷mN(pvS4ܚ5t<N,r9H,Nꄦ:
%Od:QPjÒWVc*z
ʵD>)ZԹS:	Vy^R7T༬VSk>)`pjk)jLb藱+[Xdm	NYm~ЎAT0Mxc8fak+]s>rwA{82AVB!8q
-S2X,1'NTzf+gqvi=CBKk֎ ]UA/}AicǟxVOt< *~imR	B9[/&~V9<.%㺞gE*
i3|Ge-p?Ox<y^/y^'fry
ʯ܊O
rt3EYI>xeL$6ywvZ^$/8!#t<FAΞ,IjI*$V	I`jhsL
e}[p).^vwsMun)ڄ\mvĀC^`_G,LY&H8h-p@<
TWNW,EE@`>C^g V-
Bp!lA?fvA{^!+5B^_PK
     A ~w`    5   org/mozilla/javascript/optimizer/OptTransformer.classVsemsY6%--PMoX--6R*Wald7nJ[ૌ3v|`:Mo㠿o
-gLNws}'D#Ѐ^A$G_AcAD0 `u
$2!pqb5N"%cD
bo
rZsV؝<.X^qI*amm},閖vz\Ζf:Ƌ.	>nN$Z{̩x<X15hZ9rj\iK/8qy}Fh4fFfB#59d[5WcWz,KnN%y?ӸeT	3놖,4kDeA$i57ZXW^μ#jYk\tR~դnNR&hڦj;˺jnI
'jiiTk^gMV DB89D#J5|Ѧ$H	J̬!aWOBq1T.iY^Y4ȆR`YZ.zv1,
v `3(؆
CA !#@CVBcc`\
2

ayˡIL!`3魂x[;@HB9Z^&B &kE fvP~ݲz.#ak!'\[k;gySa1wSp:H-Oz^;2
"
	-]lV1}^Ϯ'EzpQ%m^jsUKWf]-rX=TTdK.OIYg3F,Ήє!z"O+nkAV(O0o,2&b#ꮚ wvr=]zRk]Դ߅6E&w
6nD Qb)i*!'ՠRlTk@~Pk[=x]*iɣС!A
^죥We `
Ԉ[ NUܛo/A_ům%ގ94tE}sG}.+珈&Vj](wP3ϤNCY(dj;}s%fQO&@yؕo|k/	/Qߗ;u9DQԗvvMxM-KX/ȆhO	ʂhK3lX ;\*Ա:֧ibu$}	G!$<? QrÜ'1U0/pwp_,9w/ߐqs\Gq>"1Ĉ/}0.y8D=/tvW7@~N[^۠	ʯPK
     A i
    0   org/mozilla/javascript/optimizer/Optimizer.classX	tTLBHHId P#Pm$d 	o&+(*VQq*5J!P.to9]NcOkK{ߛl2nON<2@%tcMF76a.&[ҏ
6M.in6q\Upc4n3u9]~3;NK-w=r^O~Au-ۇGL<Jp5Ɩmj0.'BĊPkGXg#Ap7v5-I%g`ΉnJuHt^
7'BD$e	iၙʅ1뚊Hkkb]3o"퉊X{"*'􍱖j'x!ja($j	tA1!}a$vpZyfXsuEȊȱ3)k#qB9{(%9MFb
KUW!Eء6b}2qS눲壖&Bc2>}Dx#{\"mcp[8FK's,+P8u2+ݘtU(db^[Z?nɰ(~S:CVC%7]vĒd]Ƿ
_kEe#HQxfR>pFHkDu]ue9òOj!鹹8ݪԙex!5+	L8Dǘ9q!y%+Ω9)gpI8MoH<Uv/?Tu%:p}D\`fA7z=xOxʃoǃ{8O'mzM%L<I|Ϙ`
sb9JI]#.3pЃ>0x
\XKreٛ{D΃W*a]<xM2#|$CEk(zMosʅ[?4r󤫨\rC5vt,r|QY
|&sx3d'rnh]f`LĜ;wUǢm5lnuD[cΉZ7mlJΜ% o<<qp[rkg4Og
it.|
҉n+/b%)bœ)7:nH4Dנİ[ި,IU:}
gPK"_R20QodKl6$dnxMb<!O(":Ï ~e<qqODY+ʴ8Vr*%n
!sZ\ Fl6-Akr1.wz{!:PՕ	,\9,w<9D^b/1d)Q-_cU
qD4M6F14yS > 3^ RH}UH^Ʋ`p8wc_?`ʕ6xvUV~6g]F@f_tNBB6<b޻6t~6
WMuܶmK:
)LiV[6}U	Sf!v|gh4	&x$g#RPΘ<NANa|QWbb2J6**LejX~?|?3\RPuP)/́Sn%NZ #^ѫ&V[R+Vy?xuli*fEo,Ox^oSqiiN;rnӝ6i3vC<=qNuډܞ6i-V&Ș8@*X	n8<^mioۑWҳAU"[p>L{MQy*Ve2g!/v
c9u/Tʼ!FC.$"+Gu
/UzR$*
RNdlTj!3l7IΨ˙ހWqJ|Web,$D)zICy<Cr֖匸c04+XZ9uMACr)Ki6*QL_P+nG0.
cV
5U~(ضtz7J}NM
ySO9_m8|.1ј464+iqk;dx8Cx)6d	P$72RPH`rhLQQ='H\Ajql AƢ&ZuT-T7<lz~H_9Dq3]);(dNڊVMw`݉{nGq?=)<D=xz^x.$OG衣x>s<Q}Zw4?ӦbVLOCx^[WUix]m3жDۅ7{S?Ӟϵ^Bۏ_j/7+#Nڟ}j=(Nćz:	^t?Y^O|/g
|q	'\7PIc-oqNCI?C>Q"?Bt[*ߦ4E|T?A*M&Ut!h(YE.A+*N̤yb6],SXDrD¢Eb#5mtA.Z!+^Z)AD]%%
WII"@a.8J1Zo3<dȢF.m2
:h1n4j&-"XB+vc%e8r±Ptt.U9ׅj/q$s{m«}őӦxզ㨹K,T.mQ\Н@ܦxXg靸æӷNߎ9t;a	Ys0JZV$͵h1Ⓖ=Sb߄"^e\vؼori/9qK2jH#0(mz$pָgWkwMi@S1s|r^kSP1(3qLS@m S2$ԝ%$~N',?-S	/<
a1h(qN)aCp	\P2'0OoXVʎL&h>pM_j#ߺ÷>%

=ȁR+BN90ѣF{PKݸS|O/'U^ːa,0Z2,SU"~A2,'~1f1	8.Oy-wбe&ffW72O
Q#S^bAJW|֖W_&=>Ŵ,ۨ,>t@Ygl
w	+eloն&1zBqr' PK
     A               org/mozilla/javascript/regexp/ PK
     A YRB    1   org/mozilla/javascript/regexp/CompilerState.class]S@mK+MȧUh*֢ᆫmXbdxoÌ xN&3z0ff9{6_ 2F636'<bl3vOJx^®@TA<i_K;'/JNQiI]`	* EH3O@#mu";:PRTz>tRq}j'8(pwsbG9o|_i_'VVojhԎ
uZ*0ԾjɎGJ3pw,#,YH5qz
D&8E|E/|fju%}*LaD&0ico=vqUdb9<co^l}йP~vLF#L|TXSNg:lst>ӅLq(hTqEWatϺY ka!k0@Ѫ`e0ؼ@xa=F&&1ZX4d|DMm05GXNm h FD>k铭PK
     A P.  g  ,   org/mozilla/javascript/regexp/GlobData.classQ]K1=g?ܺ[g[kP>AeacdfʶʇR_7q"'r= F
jba3Qt51c<Y#CdfMTN;Il<%)^$gzH~Ttb#*wiRѡssP1砖*|m%Ĕ{vRl;>co(Kq\0d.N:F:>+\NՈ\L+=gn9]ڤH:{D_ՠ{b	]1}\KߒH->ЧmsV-mt<Σ	<fLyhh+tE+`;!ֈwXsWPK
     A Z  V  0   org/mozilla/javascript/regexp/NativeRegExp.class}`UErr$< ^SD)!@%`)4eW!"WSb;k[w?g}//!o;gʙ3gΜ9gf !r·/y=|@)8DG|'^Z3?/oKJ)N7^-zw{
~='O)BG81/Rp#y#XћcA!(&1OXEJ(/Z" H偁"JXD;/"[=@9XDƉ$t ؙ.tnT;zPГ^DXoQ/)I4~` e$"Q0+dPL
*<b)AgQH
FQ0xE+/RQ0:;jN$Jɦ` hlrTKZb%43GEl
Xb%YbW,-qQ~O
1TE(f%J,[b%+q.I@)e^ISZŠjSquD-WPXEFk(6Zp7Pu\HE\L\BK)XOe)+Ux5Y(v-:0
6R0dĚ<ؿ)83)XFA)eF0nRb36[S#n[(ز=uTV%vxS6HS-^H9wPPO(]n
v{,vxd񭖸:(~u8VbKG)
xޏP(
c_T	S{boZiK<cg-qP^#TxQDx^+g
^U5
/tEśxJH
"%w^+*_utv|V8l2ȬꚂcW}Rwdbޙ';}Q~D9V/-(_Z@Q,19,3m,ƙ,:aZ8JrssSd`;gPJΚ2|d|J0fgMb`N9~B\L(.39~EySG31}	:=KcEܜfbHȝK005b`qu
VZ:1X"3'wT*	+JM܉+J=YS&dj(a D0h. YY:4]0.(+'3/R冒:pqj3fejDQBB0az,%1iu`C93gϥ`PR`]sYSSB`$vL]o^'	S'%0gBX29Ssf"=~tR&x6 8"ЬIEД3AT;8{fACC
8!y%4a8Yͤ%PGg?wQ\E5ŁUU(0`i{Uꀃ<-,-uՔ9wQv.=7k"Rn^-(,)jTT/
A.!
@	T8+KJ証eDGAM2l+P(>}i;*DSQYŚ҂BJ*kWVU9>ˡթ'QxfMMըkPsW+.(*KK؉}ju{M`U͈􋰍w6"̪(Fs׹e|$_QkG )rQGWUTb@vdQYUQS $L-)YX:~U%֗E5ȱQ+k`ȼsT߁sqym9Spe%(QNn0~i&E:׮O߰בb,20m	nH_HÂ4zfYA
T܎k.mPLGiƊZd	5֖FӺ2P^<Q*I},M}(TJT&9'e[%E|1է5Q]WҴ)7J2t;\SyyQpjRBzp=ZUTۅ3(iUyg(YBjydU iP}B>s<N΀{bjf84,E;rݓ"EJ	ͱfi|i
. Ҙ OO%
IŢOBGGvJJpXJw>zNE88TUQ	zKIp\Jg&WY@ˣ쓭Ve_FA-Eqr'DTdeegO

WYPUkymy-eV;	
T=@HFJ$,kEd.;}j
JJh.kE8*%5ey%k#Ԇ:pRZP
5pMppT- tْ򙔈e+&haxzfڋVJhMG>Y&ĹDCV`אRkLŊ@ՒҊSK`
G3 C\YմKjjP̢R|,]VEm9IYF TŤtE`BEʂɵe8TcqFAUUj4-*&,riKT0Teipe%53Ǐ]](c
)S5nFrT4ml76dU-$@b3,ZZUP8=˦cBN5tjWPS0";E+
k-B\aaZy4&8E'KkHWMl0Ůcͼbɗj$&JҠwRMьzx{iVvЦ.w*Y
̌;M9QhզG2TZW֢FꦲCm1#a@O.uzdE>0P>kj-(BՔ_A<+''-k^]=KŭJ5K\B8ziPI0)їTrUEjS&E[E$vQ,23DԒ")Ԥ֗]DVHBNoPU$%udж#j'J&-MIقUme1RJ{!&v׮)RI|0ܽhK(^V'ZutݪE%hKԭ\'FvSdanWbhG膂>چmOyIoC8#/
fdp\pO};mx.:#H/_1#wd
}&-`S*- ^%)ñܝ tqJDV*+jT-S5;Tɺh`9m"}ND|H4DH#]ޔ]V0Ry	
-m9I>٭:6+-
FŒӴUomk[
}[/ݡYi,)D%cMD6tY]YCncʗԐ9]U@{{	6qlGzVXzW@Gr[B3MB*PP_v4Ohds>m4	v69z]x瓔UTnz=	zc4&~TAʩl.%#1㸟?mvm/l7Vl_QsqlU_[ tf/wJ|oďI 6
c|a["~%E{
Ix~B[;k.m=5zfm&g~8.mށwĘ8;]͎c$AS]l)y-
i6jsaL͎]6{oB-=km|e	-82
}Q]I_?ф*ѭ;mBcTv l۳_m,q_=bV;
4ߖ)v=uT>ʖ٠akx`	|6%ble$ܴe2G6vJveiˮ$$QT	D.^,7m>5=$&t>Bl˾6P˸ڼ/Oh?6ޚJ4/#&*()չz+RTӦ'$J-wd'ۖ),v9lJ̻ڂgPNoӜJmڶL##70֯
)F|He?5KU& 9rl,>W.4K8l!rGH2p9][S3m99~Z/6Mn|͎gɑESx4cd&wuђPeX,5|-ؤ2x,6KyzQBQ+J<.Km/ym~	x	G&͏[N6Ƨs<[NPH=)t=2)Y6C<9+U']o[ ej\9Aד./.gr#T)t[;ifS9G|Ơo[^\@,GFr!*fy<Go|;so|M]ZXZPp@%
-
fK-ؖGi_VQ\d5NRl O'm֟
Pf$-Qۣg2 r)eEg;tnHʁo턞dV--ׄuS;˔,ry͟my.jK`plY*lYN+6BfmYAR)SFi[	d4LM_VUұ^cRVT
'$Sjѕro18u+qjJ
f	OsZfj;!%+PB
Fe:<rCS_D9!&RS:',s3R
ݤ>퍆΁gmi8ĕxl13Ѱ׼sj:	_`DpyeeMq/],	Sr}NQm맯Q	yrpO$⥵@Uv,oa%\JֶmWTVJ{^SRvvyyJ_]y#,(q\>:7
:(bUnKF-ane*͙Ee]|q.нh7W$Ym
F(TGCi2῿g>.I&bE,Citj٭O5Ѫt"IYJn?k;bf"g\徍}ٔ
G蝽JM>cSR2E2CVFN]G>X
h-sJLë[wۣ2'Ry8WobFlIrg9DZH5]Vղ@\Ֆ7:5PChr*V!x, /+ieZ0T<L!6D8WMI.Plomļ帉GwaHH7tgpSUq7'fEXߩz&GaqHݪ*ia\$
hNl}4R_l,CVγK+J*jO;;xSvnjyQȕ(G8#'*:i<YB}ȃ^}
YI>'( nw8&Vm'I}!7VdGϜ5
+[X\>m󼙑멮-v\j>m
O^tR%~.oOwv:Fٓ[-}I8B_rΙi)zTOVp˜&.m,:`'l:beUAewkg~Vǿ`@;X5;YVsm瀠8K1gΤOf
y[~DˢHa~R:Լg`kF)9FN_4a,ǘ7ʫQ[aBmG BCtt(lŁ꒪@qhVZEI{
RX*BiCtlP(}0Cgg |f<a
G"<'1,3|˲'q-a0՟ODxR|ad9O
sCxzL|!Bxv<a<^9a..
K^/C<>000<jkZW+^FxM|>k^_Ea__02_a_k__
a1	Ma--K"0}[$ua0a0f9ق[sGz[sgzԂZsww59C/d.#p <<A؍P#8e/)0JOVzjxQ2=62^{!:^`/^`;6^vX)??݃(ư,X eVAgX
| `\t^`=L ~yp%,C\7tG ==}!{8q	1SIŞB6=͞qqO{)B=3@BJRAbJꃐ hRw:pȈ8h1p-?@2\=a&=q9KI:PmwS'Qlc/RS˪RtF#KML66Lg;} t"cе=% 6\`(O<? XYi88
x MDbx;D;Q^p7	 ,΁DiڍRۓpC;2v[R'CCq!c4(\^a!;WkXc5gc2TH9^7B<cA6:C2^8ez>sRU/'6Ս9Mř6'X.un( bN8m@_xi8YNn-bo#YDQ_Lwػ.\ju &NRIXr|VsVSZH^Y2LW ֍8uC_NLYo\ՃZ\}-lVĺy⇋u;l9oKZY-=sT1J|'LKKYniA+6SRMIJzYHAr(-g(59Mr3|T|)pG8>)`
|Kr&LVCza1\=5,apļ}ˍ@'sTn<d()>.3˪rp#H7vðfG<nCV&
B#Effy
0|ъt3.[&2֦`/
ӆ{SRx3K1<8H֪xwy`|Dg G\t~B'gAKX,gEάd\L\9,<p/GX5ȤXBCSdHgsU~WQK}žL],MUoط7.;FHeGޣM(ړ	)#'Oθ<l gՏyF
$0QvW(g5i~ [Zᩇ,J0@E@_JDh5A>"cG ~AhrQ^KEGa<~sd
Wɛq ƫGa<_>&īN0Q4e+[)=0j7@\>S)	)4tVGR1kL4as=d4O[-Bu|I.|}NkHQV✍{`n=S@:'-7T&d{w\~{wQ){݂i~XTq8AC(,'C"eI0	U4	fhav"np^p)
װp؂vfq
xY#l3HFGozыB-AMF?.}9#{<GE|+٬f|[l9˯ڤ66ݔg/`	7`LlaJˡ3SgmZSl!cGPmb[GѐBT/q|5]ٿ9,N-YZF$R
`:.vd'0Ga38(<b<==1$	a+0՚n+@b aBZ"M ROoNHe:; ֆ֚aݠjp`uأm6:@NP]c@ܒaa2LX#Z|NW<HWy[2LOv@hǋ7J؅xU5XdP6l+PH<JS"y4c2hkL.A&I8,l't;tW$ŴAR,sI:~	;໴([cE#4b|Kn_AϻxoI]BzqAz7Mc#W툄~>4Zl1Z]hAMpdRlRjulL
B\^;򘛎&y)%v	RqLwT/&;#PZ/cOw
O%6)bjs/YZ񵯃iN8<#;=wwA^0:QaYNi5=oyMCW̀=C,Ad*{a$ː^<t6eo-
-ё
xOG|g/Z}ξE[9h(e}n8YlVa3=
JJWq sR<tb5>tU?Y#0KW]އDKO`;t/D~-AM[ɩϡSG%T|](aKaHԩ9,m7,;x37bp\;tQ"ӏ@`(0
r(^X#B8Ⱂ'#6dNJB8ګ<Q;V2+R!w:.w̵8H AvWdDY*rtҒΩQ&oEmdXG6|!pX0-!߼KӚ`*{:Utpal|^v')Ǧ*l
ҫ/^1>z	 nX6b.Eo!_oqtwȻAfқɏ6)C[!&GaMUtT^+Bs?b3DƖ]avQ\d(%c~6Igt͊9Ez(d~x":P7RnA;-E3=SB!ɴIz +Ȍ1è?6Q;&4@EF~WfD#Qĵ-~NP~;[J{i)iҠw '@83tǹ֋wT'{O{70ʮ`7l̶!Vng;0gC|$Ggd}>}f|2;ʧ4çs?;lމn|> g|/y|Sy-\W|_/
~_E|'n~_z__	ȿ7o&=[mEG~w^6яԊoİ!tؗ0Ji'6	99ڊ4qiHa{cQy7,g|ϻK@U=JC8\%{B^VR\s<7s\VЭV[/R|{.k6.9,cdnr:=i^Ck4uz}Tϖ9.Am"<!'	H>K[.E}q
8V*d,ZRѮ7.J{`6gLfYmǐ?S?C1Syk."w=VdT42'7vTm:L7	2z[_VaV2C&!Z߸/7?=S~Σ-"dMXҗ]B)߱k@-}(?B	Mt/X
XÏi,enJw$ֺň-4(kQ
ҬZMSkP3e yFh5b3늖fohY+=(hE]dDxkK?U54Fab.nMa zCG =3񳶏|^w{/r\#j|Ρ6yzK:l%ݵwșͩM"KGzB|9Cu~aezģ-O.yl )s`~o[Zc[}?SHxjVeUj}do-,&G
cYF}~cȔwS5;)%vEXE1qNդ"Ly+D7E	tlR~CIbTC|BS_|[]O"=>O0z/"DmZmZvl&daC{18g@[S{w@nKIKnn:1f2
rv8rCN	Sϟqr"N̹ɱO91g=1g	XR,e[*V{Ʈq
X6ܢJ[p
:(Nu2|]'7GGA&/81lL:utL)'M>Mcrҷ%-&:ʥv4w{$N]x o7o-rYu41Ct2`su:º|:gApa}\L;:vR()կ.r:4Pz¢Qٱ;cV<9
v􄄒itq9sHZO.0Y!Y
i;mlײp}$qJ(=Ҳw8>t5o$X0JZz=iikZ@tv0S#k]FnAtK~o\7O=n+۱W
pz|kFkX~oqLAdܠC>&U4y@IvoR
G_V>CpBB*az	DA`;D,)COgA$pHHE'Mt=D]ACm砻T J1׈|1|׊|Bo%b2oS"?!yϿa1W9"F~@$"Y,)b*
hQ(&"1C,D˱D)(Ţ\,rUF5bX+VjqBW ]‸D<)֋,~/^׈V" eA&eFvdoEeM%	NfrM.;eCVzF)׊Uny%oʝ>y_> Cy[$wEX<,GexI#2"ĳF8hŋ1Gl?UVf\$0o;m]!_o!E|jJ|nfw3^|k0wP9FhN?g@,1׈ZqļJ3Jn'4ge.=kQw2AƘd2dT2^5T&3d.;RE]ŲRP7Ȟ&Km}T)jLSOt짞rPR_!9TSfa9\#,..r"[Ckh2*r^XS2*gX;LN9ͺGY{a9z\.^!ZXʀ\b*0Y扐v,+=<OL՞ٲstNI@lLɵB)7^t[Wa00כ:4Ĭ{C}/ѯyGv0?c{Y]:q1L$=92*gaخ^|8:ι곐Ո̓ߡ6CF
ǡ9zda쥿T[
oX%7p&H^8xa5C 3֏y)XG\D;01O` Cyi|?ݔ(|%& <;eQTDF
î^|^㸾accBGcfJbiq)ׅmc!ԦFHY|BI[bWO
Zs]~J\t]~iá=]%/vr=$ˠ]Xz6L	܊@bƇ:S
Z>CMC}':hj㩻ap~PWI9K
)6
/x
̯osFSsǤ|<z5gXH>*A9
ssfFaRPnKxeR$:kY#'e@:,AםNIr*4oׇzC(N:蚎VEfmėeI	gգY	DMű{#h6E/}ٯEt]~={EѸnK[h5A'S~Xv=+k-rx|b _
c%[.u)E`9;2lY*JR3f,b)%Ȕn?/ibrq|[)=C-tp[ 32y.g->R}1^9IMG)a*`+o#r
v{F{_	θo/'8,#n&.f{_:Y|uT[(RyOSl|!ag9|}(_`_enWO'y'&+C|$S_l'?|<ėˏx/?gb9_/ʿMK^'ɿ7-W/{^(zʟ )-&<E̓byDɣV. `A{>oDon|>l\%|=|
ݛ81Rwt\򸳪X>7cnζ0}+pl\si_kcX#ĹkzX.\	
13@Vw1YE٣G#*tѱVl⿯忪axT:Y+twxF'Ĥx\qtV⥱2CGsKgzht{O?mxg}x4}E;~+
K%45gTD*Rnk"akK
(nڿ EA\+?5߅bwoV
Plg>yl}EK}HP%.􃁺]\q6 Q.t縭`t]d?2e@1H6ʩj]vɃ iJYxs)xAߨG]NZGMhɷ艩솾~cѲ	#{av*`nVd\0`4FXcL>]qȌW1N+'H2(r믺[EnhXfr{3nn~st\oot6+ߗZo
'㱿Q.&A#!ۘS0miӳ>НklZk<A#rvgqvgq{&+;'>QșcA@9KR9ܣmmN[5vbכeH89L-'t$;o:ҚMV<ur/sWpgAQFt5CV!wk ӨEJVj/4pBxQ`DH8~3Ss|3ױzFDs<.i4ǢĎkg α%Cr'ڼPR)/sgE(DU:hǭ{emaΤeO[uuMNvKQ?GyӸ";>^+t?{t!'=yre ɐI'w |eDƳ(IڬX\H~O[&hQa9:I7vav&E]b(^Ӭt
`ׂm\2eFmҍM0pV*BՔWrc}az^G݆u$F/QSiLkݻ;
+JwpAzH7)\n%taM{:t t+!Y43Uϟ%ivιXO)7/Cw(
$~dw.%2$]4fߤ9v&%ׁ|լI_O[ Kߵ>{>8Zб)kKSVRv0.mq4Lfwa4CCeO_'Ti=N.<I-	Xz|Og>ҫ/^]|z"z9
ghԳs{Zфbx!k{"VIo#E,o_adoi+:Bd W,86%?[tŭLs
lQitozytP&;=@;՗ 5}NSBҮѢ΢n>օ~H^,|zoc}m?.?=ТڮpSaK

 1 ,kÖ"gr4؏*iJ*
zVt2I:H
UX*F#_1+Tb`ޤdYȾ&M^wOid#[C+F{pŸ=h]Npc?L3,	Xn<
3Pe<Wϡu<b^3^bo/w?W!ux}m;5a?_yqw7>潌OxO7`k>;n|/5~ˍy56&זMjzN0#c_4#+fό_>4#o47Lf'kv."&Edg}HcfXBXje@Qik!j|o47g[a!19Z<o63f8dgs8lNG̩cNQ`Δ<9̗cYr9[ss\fΓ+rP^b#0yY(d%rT>c.ϙ%Es|ݬ@W~>ݳdbb_b?b	xP,%IׅCs3`)=^*w0 B;Otb
-m)9e.v\<֨]z#h`Lhi]6Z>J$w7+hcFH:81k F5<9m>}t,1`+D5ҧ'nUr';[ElJa;,|Qyk̂=i7+<rz3fBSFu4/Tkns&kFɦD!.,\U붸gd^_<0W2Wmy~؎y;ܕhEi)ڧOЍ9^*pZL>TƇ%a_/7}zq^׻IӷZA}hSF)ry@{OG]d7 5-B>%|~D|,sꇬqRfq]ؤv*+:vHt
NÊ
tŅy 8^T7w	<ڛkqI}N(;z㠞_|ybf³Z,N#OjQ`j^}c43sb[)|Q^cAun3h.GR{\Z/󕺶u6VҢ'üno3|ĜQQԁySS.aM-j\Zjt);ÀGhjLqN6b#~.'+ŨSas3Ԙ7Js+1vdm	w]h?n	Owó.x޼b?3a>L!{X3"|k>VOk'F)<ϱAe
3\ov<+gGL#>_x%_e~7嗚3u|Ϛϛq?VR8?$?(K*HR^1@E#UDj'r_":*,W:Y\TWq&TŃأ~.P >jV
߫'5\[%TG*Sϗ~_?:˴kz!0U0W$I&XN9.{>.SN~<ش`tlgct
&tl%.G!x{]s#:#4B
Dڭ P3w18eF?ngL2ݣ{鿎=1}+dkAF_V=KDs+UΚKAXKqnoX?g
G_ex̹[a!]|x3/&nJ
Ʀ=T4U#WF$:	C=$9Zx4I4>:ܨ~s4GIy]P~/jߣUA/ah|a>;o= =씓(b7=Gѭ--!Ͱ:`/R]l=3cIw;JMuj hB!˨/%V8Nֶ]cioPۄ#pwXs꽧v{{jHk`Jm#[越%͆xMQ_K1[\7i&yc	vtNˎ]uQ`:1
7!T_*m*=Y쒓#qGkѺypo*v(:J-^3LfM2_/ĄWi:|Y
<| 7'9}Gc\Nxo>$eww#s97CT`*o0̈́W^|CZ+C笗2LeȽ$*CM4mblx{7<<(qo%mş>zVߥgDf0G6vDaќ_LL妌h̩8+Q6#(ϙ>o+G6IIop4RCm4u]77A?:<@p(b,(zyXoKcscY}7ۏW	_;3F*
9"`.jHK.z mAI	Ѥ{hEDb"49?%'%'DS݂JO:?[t=|9ohzTTdS)-i=JGjqP\ڣ[~49|\<8q=AiB'yqlӑ=p_0gW;^#Ů
}ЃW@`IS&C{]L`ʇj0Ć|5yPC@-
u6Vj\
?%]-2حJ`:J6[*VU
vZjjNafuۮֱBv=.eOu{N]T_Եc7uNmdn>G6j3OP[xSTvIv>M;B=|WZ HW=jߠTG=W^8L=WOS}4D=?W/s`u![«>]SUQ,>@#@})bNEe'q^,[RL+Ŋ-eȾVLV9(ZL+Q:qVg9*gZ,k޲/r5PK!2kh!oΔ7[vka%F}h5F>neʗmk|ך"߷ʏ\5M͚%f5|k-0"Fud-2δ
V1*6c-1ZKVQb-7γ5XƅVqUn\iU*Vê1d[+J〵xZmd1^o[OוֹK֥&.3;Ӳ0mJg]e6)(k9Ѻٜim5ZK]fՙ+me֟
]ֽN>Ik``=la=bm=j3?X2'zFgUJW@%umZkj*PZ}uPm묏cu>U\=e}^ToZ_g7{[:j[uXǬhj=`0[gz5=	Ú1|~x<<M(# 'C!_ΜcJi^6נeEP7`,lXl&kulF~m>	\y
@G=
ϯ51ĥ B M+VW&//E^AqMNBXQL ?mgjZ|,/֜:m&$~oŚ>(dr&2>͗hO#~x9#7Е^TVunn Ctn}tn;|Amn7BM]]ۊ|Zc#9g2*r]~ۚY><}OA{kv-bM}i6
&50E:r?}_`l?7Ӏ0E0EW/ԽQ@ (s^C*2~d`!F١I'<~zSnϘ՛>ʉirqatkHX i=
X8wl_o0*vcoU̷$w#ݎuJ
7/ޏEPV*#S:*miOK;x(5mn+d(l_a*-r闕vtݎܲ
ڨ7,f
tZH-2X!}puNZ=V.{6ӕ?7tK_]WUzsvOL2!d$, b<pEO6~++xA]x&x.QDA\@Eoߛ0|{^뫺ZaH͡O*{Y,a0Ea|QD!EGpѢ;Ɖ(~ą*z^>/a菧 ,TKbxS\~na{ĕJ14hWE&CZ(*קLO	a9^݅AuWddd
m^Ѭ=LҜc5!zBrT-& 39b$]an
T&yQLM`dVmF2NYʙe~6Sc|->-gqO2oqXGNE:RSNyv-QzkPM>
]7RϿx~d[B<UQ3_Vwg3r?GS!'%@ÁuD6s=v1rb0{cǉb-CTY>~(eZ2Ռ	8Mٲ,2ʪW5FUL$4pRoo8Ӛ>'yA,Ԩ ]}7N0[S#ׁtjǁV`+xH;ԉ4G8_'`|EQ;JEPEN X 8hO27A#nA6P!s#n-LT٘%=~s0O<*1ăX)aaxţ/x?$((nI*Utx.OpFhXF3KtxWhx+E+N
6]lb}'ާC[h'LcGŊDrKՌguQjs`hBwCEVFxxğLզ3dY0ej},(Hwia{7|ZPxc8M_/jo$}W|GzMZk(+Cͣi*Az}U2bqVo=M~7&dNյϨj,?Mi>0q ̀xͶ򑢀/qU6J:|ߺ_WϘ	w3~<^ρS6Vq#{\a(t<N*JXe8y|x%j_#}B|teM:
h(#KgVĜjl%oj!+JʩK4s Ge
eRo$?=x^h]\)΄͟8ϵ#?jؾCc	XJG+bcSǂ5:ZXF+
^v5ūIЁX=5D^-5
SC1(v񭋛oE|=3jGh4Z}~bF?w_=Xvh[Ԇjk'Yc8E$!~&8C^B>	JD頠tRH)Wz("KI2:t*MfQOCe.Ma.iHwN4[v@JP
m(׆m
MeVsr3\P7\kc6Z{gL`R\.un̡}
mS^aMCuƺ+#"f
]֦kbtVϪŃO`c<x2</Lkbz(=WDdo}q6GN%FLu\H֏3Qon`eb}J&.;w|\ףe)7xIQI-bʛI-9*#$_#z~ӜK
M^WC*K^
y+qrɫpr^cAe0HFg]
m3YΌL`r$u00޴xd%(U)deaN!DIm*NLуDJaԷX*uUe).UqU"%H#'sYe-+1@Ѧh'nYRR4Kz`%.+?[	FPQ$ZKΔC>r\@w!Oލ6(QhP7{ۺB6;ƻV#8S}Hl[Ր+RC,8vU$m%,YuVr9PVQY^詀td0P ?
0௧:
R:	nc1D[9oh'砽;b\ a|&ȇq|,ír!E.ɽ&fʧp|q\p\y<(as%]KYOiت)GޛmD6ݦMi3mZMצͶism6cvUfck9.Wq@%hg$5o,MPGE%1Ǭr	jGoV>_AmHY\Gb8vƖaVعp{<#'8|P4A_
rөG@",RKKfQJ^Y䛒f2Tx۱
`ڰ'Aq\V]Cr繨rX-b*#HJ\qsm7r|Y8\"z5l-h:f1sX+AfrX'JErR]:ٙh`1|\jcfb1&Pip4fh(>QIz&R熆ԐHƇ95Mynr!Jh&5OI^ffh
BG!2с!cKh>ed\[-9#U](H\׃R<ɽmzN\8Of2Qz]xK"7r?H߲9bPآv3)cOMOZdp$e\L좜Q9t59Ԟi(P}'gYOz$0t@)6}>bIme	"J/P:~CJOJO9+&y"c<m;I쒧[6al>y__
>}.pB6Æv>Ɔ:b;L-;Vӯ~i]Ll^coL %krj\zO-\)Gё{]iLƧ:'PK
     A Pt    8   org/mozilla/javascript/regexp/NativeRegExpCallable.classTMo@}8qkLKSB@>,AnA\VTٮ-9NoJg~bvcE${3oGo :c]/gcƖ%u]WA{?'^l~'Y!Q;iF
qc`5cIXnP{jB	?8cϩJNԀPñ'LΨ9FE(Dg]DZ''BjǙ50d\-MKޫΩIcO!'Fʼ?S"
I<	ÿhujYniGX]Ǥ<m TX*j!r 	s+!<$H"QQ"GR»ޔA<	?VO[{n=>}f3K:9q	.[q{ c-
hk%>]+Α5;JA	Wq-xނʖ֧	Jd]7qԤ,73M*p;e:dLO4w.r8nN	kw_PK
     A b    4   org/mozilla/javascript/regexp/NativeRegExpCtor.classX
|TՕ7o2/Ix<$D!dD
h4	4CdH8!@)ZhUXQ+H,V[ZֺZwk]W[wT?o^@s~{ιܗ?) U#>τ!5eq<'~ҏc?'~d⧙x3<+xNYy?&^Edఁl2kna4/2UV7Q$fb$p	!)}!'~??WW#xg$]T=GA]]v&BP[2L{
d["9C*
+j
a$ڑLp=Eus7Tͯ+B=V[3QJ4̛U.ʺ9"8:nA(̗oA͢B	JPDxkfjٕU6~}~!#-cR\q9\aB8I2&\D9DghH?dDSD4BDV?T
':[DD(G(>v}VHyZ:7b3m?d;2΍D#
X3>%WC+(jbMcH5xKY{H[[luhM)H-euDdM>2wmGU"
ZyhS1YjZkdjY[(R֐G-Ɂ5hKV'2ITMp"``o;9YM)hMkFH'/=y!܃[haчА5]Zp|$=lJ(\aZdũNW94]A'355IFsɉvk
W73WEGU1cNL4;:%J0TttMEs^qqLAcԾ^UoyOYִs1.Vw2WGl+
Y|uG	&ԀS͒\YLiIoqu7ĒDi1QVW2K kp	1q 	@R!]8)1ui  n>	o|A|S U>(Ce_eT@S*y݌PCk6ֵFqNwv֖*6v!9Kd!ST*l!p+nx5,+ps /܀S8;xY*55B+I@Ħ v5J Cxit+ujM?RAT=Er
E_BSw'C-a٥Pq򱔺6H,I\Ibk>U8x-uԄׄNF\Q^W(F*P\As1pq_z%<LάX"VmÕf]7hx/X%WIJEͧ
^NLY4%xUFk5Z_u(f}Iyzv~yOqPVW<1;kG}Ov
ɕnsROKXDUxUWuFb6]\M|A&
ץ׉p4xq^B|Q^J,
/'F4Hb Mi8WVH^M|in#nOQX ,
ǉ;aM'~w}6;g\Nn	/V; ]WH^{#AZ/&~46+.OUAzL-
(ߺ&69<.aƤMSRg3`i35w'1sqg^o;3o/|06_ۑOߍ|]/}0O%J궏 @>0΢S&tnU(5w9}ߥ 9O"GE"Ћiz>4x9K}3_?jjitbfTTTTdk<l674b%a}
35Eur'
ab\f8DJͧ=r9
-Rʇi|Dwޖ\b3$⟲~=~Soe6\Sof"[g8}3-y5^u]ɥ<;h
?SJOKMZ#lX,
Z6XF07C`NeC_a*Ủ[AƯ֩6~δ
Zmcf
Zcl'hf,[X_mo
ZlefZ_q#xE:K!3l|i
m<*̠5gAƧAk}fn?`GHh[h0L`*Qk_F#p=lIce>&~{7]X%Id|$
)RS$
f&i'="4l)fi9ti5)G:%2Hw dBJi/wNDgr)^y3g3EpIZ+ZhڱZR-v-օm.֣Sۈ-ѮBv5irz׶bv3݆Mvlĕv/h?5Vۍh^ܠǍZi&Iܢ­Ӹ]{~;}0vh.UܣhNMP{i}<OÇ=C>O>gzơ3zJg"~,WPyp;q	[r]*嶺m.wrC.sC.˽r.f{=rr8I}iv;LD3N
|LO*
|f]~/@f#Op]>]S[-`ޖ*cb`'n(0v;CNtfbbVVc+>
u%nkDmFu[VaUmmt[ufy	R9nRݜTEӘ'.{P]2g-uf~R,ߦ?yZE--
կ.|2ݛ|ǽw;|K~-W|cq?S-;l%^a9JKƉw0ʫm_uwыIu,,mꜶi+܏^~4id3L0d
s*2y7=sDןaM%暑nܣ&3<411M).JGByѥ2AI`kU.<lWq56{|%N'q	r[\ng6\tDR1\u4"oX|G!#|x s'vr?f>rڅN[e./Ō(ߛbg{S.=yNd馱ޒQ=e?5>53{֫AŪhThQS邳Tq:׍>h]v1p|MM;~xp+OO]9إȱvY:.P串A[I90צ6
n:j0,ZVVAGGOWc T
-T"2DrᓳK`\KE,ѵFR,JT >$]JC	Wym+*<4;PK
     A H    <   org/mozilla/javascript/regexp/NativeRegExpInstantiator.classS]kA=|lLӦֶFqAD/B VI$d;l'._/O>?J3YT܅{9g~ǸG*Hiv꠪;Ϥ/sTǐnǂؖ8
"zeVہýdZȘi;\{?Pّp8g#qc}%
;NwG=2Z
S.cRWq%?u `JO3|f1wHl\qXa!!]_C"GPgF)`WbͿ&3MZ]'vVto?I~]aO
@w",#O>eZ&C´ +(*֒Uo~Ro'H_ C6{n42YE`E~Ö
M-+~7Ҧqk?2]X'
Z6i{¡4["	of;? PK
     A b    3   org/mozilla/javascript/regexp/REBackTrackData.classRn@=c7M&<(iE Z(ڪa51#ږD[ޏABbפ6|;x? V\)*0fXdX+UraFn0X ryڗ#9#7H90vKnDPbDhU?vwa򡌔OiOLb^̓yZXQﺾXiKo'}<S]WÃveߣn`KoOF.s|"x-ʽ`jQM#ðýfql$C
Sf
S8m
,\cywcLa~hݪ
"lT<=13Izg$#
ī7ZL5z6Aެz>AkJ	z5k8Gh诐_ߠECX?ߍ)au4*I˦Rs)uqPK
     A     -   org/mozilla/javascript/regexp/RECharSet.classROoA}KWXlRV\4Ě!5)C=a4Y2;ғ_1`L?7#={o?xV	>n=n[8q]LhɓЙLi=gIUf2}LEA^}ר3$B̘"h33%P3ǩ	mĐH1^=I1ߌէt'RZW*q<wӘLrJˠgƒLb-'&b$3'C2K:Ϥs#gD{-4XZU1:Q
F)B2
{7[}ܧp"JBb8.<ƒ7qѳۤЌq@X ]koz޻=u[C.||E1;jl?&7	
NYg)-uw(mPK
     A h    .   org/mozilla/javascript/regexp/RECompiled.classRnA}mbC쐝-dÞ@  $d_|jOqGQO;
n(>_XBԪE^-^~~
lVQV
ر=-mC#Z/t&U9{0$3<1}OD?gdjCPkj2<TH{Fqa̳lW͍H#es,258KA0'>Oh<4O[cD~hD>C)Pr#q4~͇1y;*~9uMY2#IQT3mS|H/<F=]
vXF:`Y\choyﲯ'"Y..^Ry~[e&kS;A=NQ3X_%FT%	H9˅\.6Uku)Wb/`^o3(} w%wUwMw7ɿt-ܞֽCp7nPK
     A "z  ~  0   org/mozilla/javascript/regexp/REGlobalData.classOAǿ[? ⏶X &"=M2nAc<x?.ă?J}3[{3g|3i̤F)0$Әm/I!Ak&3n(]1J/
t]norv`,.x
_6`11
٢ٓݭb5֚G'җD_Iwyȉb˦o1uĂW#=Ҿݨ`W]Zxwy ռ7$8WnH+jBY(&2FE4BK~r
L(pQZCkJzہ#I5-PQ_Tezї Na*&v]CV.oGM|⸞zbb8myziz&2ꍢAV\ےm1-)1A?9ll쀜h4Ԣg ƌRQ<Ev_N~.PyC"R6/0:1\j^SwYſbTC$-r%e? b~/F/U^E0`ǘuHPf;52y1]!/hPK
     A 4V    *   org/mozilla/javascript/regexp/RENode.classN@[R 	)J%Zen:C5v[@H,x>Ta`][39n>5au
TT@\`w('*ep&e恡489%S"RS@3Rj+]fZd9#Y.Mj,W&L]@UEm/.p
'FL3J+7=T`y4	rgm2KJ9|2n{0!ҷ::cymt*j;sS+e(o3
no-cYz(:Y6--;.9.;X`O:>s|^+_:x|_G=!+T.٪`z[}4Z{ش6u{y*mPK
     A ?5  2  /   org/mozilla/javascript/regexp/REProgState.classRnP8q@Kˣ%qް d)jڽ28q(XXH|6lό53w 1j&ϰp!#&M	4LuZ
LI䓎"^ɵ\Ns7Sڤ,K\@uc᱒/q'H\+$>MM_.2,$K?F^y㹀&TݩjBM$\fC#CΓUwg*V3ogۆ'mXhq6=>Àa7]PHơ{_ 8nѿaYk-`XemRPA8^ñ5Ǯ;Ytϴ_#J+a-дbt;VVCkcH>[fEATܡZ*nasJōN&}̲PK
     A {  =  .   org/mozilla/javascript/regexp/RegExpImpl.class[	`Uՙ\ Y$dQвcA	(<' ZZ=Q٪UBUVaZtqZj:Z
f%%vYs՗>N &sX2El"-l|-CJm.%qЖL[KvHr{nX-6b@2P)OAZbHXehŰ0Q$Gi1\a#eWkQ&ZEd12>$~eXca֝hI,We,JcBe-'N+""S Su4]t[f3ũZThӴ麐Y!9Crfr-s[vrV#64rg-7,[ْmX:AokmH\A)L44jL.[xIm]]|mN6M&&V5l]K]xK2/:LQK\2%uK
Nmm9E+s?Κun_H΋/KugǓ,aasKjoBͩwх
4d׸d`Dz2j],u&~z׌9jΒNeU=eؚŗR`xS/9×׫$@sucWJK`mj0^RHeKY푻,:|=B#Kid<$Rruo]2'W qPWMD3ܒkIRK
7'e$V-"EZs /ï)ũ.^&.85hm0VJr)UEA2Ԩ̻X_oTZ3LcO5ʖxgěa30пҵ2ڸa:tו_>trGtBӧU|:&s*4uqքZ*SY^wNrn.Nݿȿl{4Jnlmh1
!azb-,nne/"
=wѢ|9jK&$R!u	_Z~H[&oi	cV-NIنTk-bS}zZ-t+Dٸcs%	q 0aV|1+["hNzX%Ps)HjdpiHQQ;ŧb	)%*uS95eVThbt|jUӤzFpiqёea4&`#nBc"Z.DUskn-Ѵ/ziuBn:Le]M|eUӸ8}>s4dw-rys[x=Č%ѬfĮmQ/0yk3.m5M^"1{u.;RiZMywpSGʹ,Yl#b&M}jG>HU[Y,MPrmA<H
.?IҦ8`I)$7SeYA@=sK,R[9RՂaGnn\.tkl&%XlK#BIAõy-^<GEy:ϳt*x}Y)Tr#_ն|ݑK2Y#;
#k
j/A%ȑ+*GkꑲfGoYX<ur#7ȍǯt7	$t7;r+Vw&;rI=rMڙ44&mpG{lבur<[}we̸.R#%Z854qv ۈT44ZjSpј!LMB2;?_]ثdF`77D#'LBC.A;ևdbsgL-m'*XaO74hzu}܌#^gD56B(?!f5ilL\ƺD\aټykE:I	6OojبW=5875%2x'7+*dREz+pSZyCV髪M鋍ޜ~MɃ^?iVbE.ڧKþ]&V%[eU|e׵&T#Ƶ%d4ؚj!r/$A>opufG<^v0(l>̿xdlnQM3R&[xu:fn )é5M]Zk*or{bxO;7wޑD=	}^Nm9˘4s_	)=l |'ygMH?/0,'gY˷|!P<\Iu@4'ii[s62x?!=X&\dL9LgԷ-pb8ts
=e|]]GfoY#L6%GSetO=U.-C}
T_ǥy,yd'a/|t[يxO9̒Uy1[
6UE^mGv9y>y÷x}ytmϵ%p_eM̖򐔇]
#morPꅶ!i;FoBQG%U-~HyT/aXjQڑEŀriQي|DnؖGGnàe+xAV+^knϡ2w!Q2F-E,/X\Re=Z؎e:eya}d[_,W_n7ڀ/Ӂn	7_EqZZǱ^݆ѱӵkQ˽-E\~cDB/<8*٦䀊*7ͩqkLKY8gqskj#;+MK|eZ.FTmsL6۲<C
P$]H{lZHW20Ǡa> 'R&
ndl8
?x3t,|؃y42I)q8_b*9KLXƔV.r
h[xmD|shhWB*yoq|>|
R+ˬ\nZkb:Xq57Z&knpu%nǝ=h6ݺ뭇zq`z.z.tP5ߤS*ӭVZF\ʬY)u\SzAJia'\C*[!M=}ray~&MMדKXJ~`f'zQ9Vmh4n
2գuBRi_H*IJgp5RwpWp'+oTNȽ8F^.xF۸=k6MNDƽ6Xomb`ziD}(6<7:S4dqK.`N.''ݽai>F]VV'!/#a͘$Hv'%٧)Ik{}G*lxt~kc|ydgxz0(c5Et{6^yg]~&gai$ճ%;7!ٕ%*ԁ =g{!ׯialr4\)ۇяj9CmxS	vM'Ǔ4
vRe~&@fg	gQЉtQzj" ekJ
P*e(5DCss
]sٟN$tr}OeP^lTNlNu9i|\Ix&pv*cv0{~=6ǆ.Emm_~F*bYiah^ℭ8Gg3^}[z{wv;pYB؍xԁ:0T#~su1ǋ2NM,UZUʋq3 6cP69|=_5gmD::O@ GӋ߯+1U`$^/T7kp<hN7K<]xį5H~-2əOVwPf`x#G%-QIeyQ]I*nMyVR>C}o(CaY&.)cL}t@o)ŴxEiW8ƣY"Wy#[˽jHÇbz2+&k|BW**TSi|ndITDld4>[1_|9kgsxyntsa!+Ra/1.e0ƍ
fdڀ,ʍ][ZF[ٝjFAXn!%w*lOv6\wmX6w:MPp$	ãL,KLrbQFlqq9毊G<58jR>1H\.ŸZJp#mR6xG!'`1)2?&.9#r
-b">I~CŻkXnju{bru5ij^cVCqwNIwNIwN	o=$7Sl
iZFP;IنzA'dhaTmo	mxל_cZ_&aهZZ"l: o4}6@C'g/*ltr#4c2pޗt»PRoQMgBdf
O.q)Ӊf``9r9@聨Gu(#,1[g2OW+y'RWdRՌZ)[5TC"z*9_/_E
Jzyĵgc 10,zrukŸng|P):_VF;7
@a6.Y\\],y2`Ә%jXԍMLBnt<[gr=zhkxrmH^*N,%ț|*>)<Qv1}+{Q%{ً 3Kهg|Ƅ#nBg^Is	H7
K
k}n(
zW#wMU,GpmXHqJg܀M*)!wc8mzbzaY$3pJ<e&EM
sis:.}y0
ot+KĊT崟uT$$M.1mf$sǕX#q|˥t
:or%^cr5]!Lɷgi7HPnWnAr[x]N;e%=PŲNjd4Y%*_Hu]yL2F1yTE4.6` (T K:t
8"IhTO.NAz3c-"CF \h/Q I
T IoMgllv
XD-#j	mq/Lyd=L8P&d.)>Nr;ݽ]$\)ixlWa}}(e{):wp7oÙ# ZsX
!
o_|v;oD3r;In`;"gWqf/̏EARn)q#0\iƶkM\8J}~*aǖZCG
[9NO_3eZ4a_sCH
qzq42_34}[-lqC<G1bwߊJ x@"SlQ1c<Y4]3˳X.?@M<p.vxV^cbWS	u5f%]\U,[Oޖ2O>R-e!ǲR$W'r|*7_+q#v	'Јh%US$~3ҭRcY`ߌH]z3QI)yTCXCN_؋yţȒNi6Y уȴ=E-3uR0`S܃a_oc>ҷ3/ `ng6k5L[5
43_z37ٜJ'xaK0T_ʴn
9ЯiEU̯#j`jtޤk1B}Ll+|=Х(O<,|fp1LBb1ӊ`E`f+\~V?bG5 xdԵw4?L!׈&$k6Jet!6TH0S%rܛFېg6jX8L|OqN#b?:(ۻ`T<BD`~ #J0|
EڰN	[ۚ^q:8~8A7ӗw9^J
)t}&1_la"b>ej{wԷ|uǔeW,IeyIsI%˨G1܎cw=ͺ}=xԭܧ;J#\ZׁR/Wfn<Y̶f݅Y^6Lr|wb.cPY)w+ۡXu	Byʪ渹ԻM涡Ɩ]EiץYၗZ#Q`b5V1ջ'Z`kXǣʊB4XȚD\l)
&fk2ڭ)xu*[x:/YsEkwUXĲkΓeX[	9˺@XKeLZZ.WNnd$YZ)YvE!Gs dl.qMU+#ٞlwe֤R7!F+Mf] OXLS!c>]ĜM30VlmGp19"L-Bÿ=&+Ϡ}qU?5N!&?ƻ[Us6%טvnaOb.<Dyܞsp
M^]WJ]
FG^AyƇ1}"D6({0h{PdQqƳX{loǢ9_5^p7֪7`uOQ`$h;u6-qގs6Fh3~]h,H7fga|l֐p-C\Ć5\f߆\o/:=R{ZPToRLUSu6*وl|/L2Kw pnEк
u7<^Q0ڈSMLhDdk^ūOKzXo:Gֻ>d} >Cɲ~'w`jxzݘ&؍e'Tho(.7z:H47J
Tex:sdr= oX
܃hhPd NֈW?a PK
     A "w    -   org/mozilla/javascript/regexp/SubString.classRMo@}k;q:iI8P_ !E
pVֵ#A+HH"o&5"yow VPFHs]ܓkg,zeIM?bG 
v{Ƴr~:8ex^{4 
d0\ɜN`?fh>^ht/Kĭ5@xLVH3/ɨJY|Q&`w{歎2or)&<kK]ma[*ذ`z5<*C[+I$'k(qg]}yt7<	Nkr+ԍ3
uڢJZVVF^9-5;4G_@w0(5	eroe[y{IBr5"jK5,6+diEŹ/Yl7`6q/3ҙvF8_@^q);I-}_;<&4kd&n)PK
     A            !   org/mozilla/javascript/serialize/ PK
     A 5݈  z
  <   org/mozilla/javascript/serialize/ScriptableInputStream.classV[WW'&" jmTԐ -/*m*!90'3/kڮ]u^^|kO>4xYY9w3 :v#ہ]8s1rVѦu|tpNC^h#1ׁKpY:ЎE_i'jTGic k0u}ICA\pKR`V2k-˶̪y,<gf\@`r5)m:+˟OVy,736ƆYHl|$9u'Гs=ozz5,pY˒uKn0@r"ea] ,YOY,\?gBXaxX'[C'ˮ}S{UYYoǇ7EYfwm!F&\D2aE5V@Ǭ~K8P.<
LnDk$wi\Ju ,ڝM36e51k^G~(@D)֓cM!|Z	:)29׽MƴH/.nuLmsOnS)U0p_ńeU"(NRl*}c
%
%ǺoV|E-
yl,&
)3D`
.е9;35zl^lhrqxQ{EMK?RTd[0mٍw0T;F|j)Tɧ%
$Ål˖,V!O'_5]?iTj3K%6skh3j렯(uVVC_ĖW8S+<qLqoO?rrߛJ߇HC$DKVzm?C\@:V|v$4&HUIP\i!1F5ihxG)aIf
s_jn^yߥA#}'`Pk+O~&C}uy5cH!b-!cޅ^ey5F8񽏉Z/!v?P##ЙKm?aCk>{z*;=۹Tw56j`GzH)̥bv@q98S89L
?
8[B:LpHʜd8FBG'"6&BӘ宓EPK
     A !O    K   org/mozilla/javascript/serialize/ScriptableOutputStream$PendingLookup.classNA0(#ޘ`:kJSS5vk5a+	έ;^xf12,\|Su5X-#	⩋%DĒG='R;[j[pez<JEqːW| C{W5TKTҼbk^Qq[SqݗJ즃~dq: ?́LHʞPD>JD܎xJuz},{ٱIˡFcum vR3L
)|仡0]:-3uwSguT\$*.VE!M)!5]{?2=<
p"\KLGmYe2u"Wֳ+8v5?yG19Z̣1ӣ).|+ŌJ
cy>ƬE3(PK
     A Y27    =   org/mozilla/javascript/serialize/ScriptableOutputStream.classW{W~go3̒drR4$"r+\PIvevJŶZU-^KZ@l6dy;ߜ,0Vx 08">UJ<χ Ge|*~J/VKxZƗe|%QU1SL_0ogè		'9ം
^T-V/))xY+
(()xUDOUpNyg2^Sp!%dTa\2X2~.
	
F:i-ko.#AJ
{mJf`vfw[PuL=~=;h=@X.#[h9fGPR7Һ)]T*]}P{cY^4wl[:B+̴鬒[`Z}9'sЇy[$ZI6zsɃu[zjn;?pvtR5<e6)A%o	
AKw42i2.3$T.iI<id	C|fR$㉦X[f}p/(#!aLTwxWMc0튵RaoT[jQm[n'=0=a+
H#ŋnIڔ[s.s쮦;H2DD}}Ylif-
6vȤA)anS<ń[9{Xg^>mV]b-:$L {Hf鐊N WUT+Z.I*-	3oHء"
K*~w$֕̚JCzj=6N~7`L%
[B.ˎ(U[NQ3M[NTN EMG3UG»*,HvHtwrd 5jiؖc9D?U҃dm-<1Ų@fjmk;mۢUXwT1%j;t17:jRL)kcsgfCg:=gYݦ<7!U{-k&WU!n%RX"pTX;.++]0Rrq--#kv6@6ѫC6INnrEoosܗ¨۴s]^Y:^tO=a%r&M7*4}
MI.i-^[kZt
y7{95cن0T;E]ux+	uGL>W1˱Czq|$96Bj]y(l~
ُ́([GPqUMz
  ZFюY&4^.	Bpo6
hp_cGKO*@}`KX,Xl^E1xa\BWN r4 @w7+uX%(a`#A\O(2KN,nspZ.bJOΣei:1XjGP?$6L%7Fx>d zLgPQI	Ihϵ)Ch`ĩ+'p.|zM;;(&p,\Y}'NJw>^rWDK5xGY[F
yj^>*/îD%)WռrI<ct7ND@'j'BZ4͊'ClRYCh%撆{I+&RUGњIh-UZZk%H5VOZ.zX/_@ P[^^/Z\,AnD2@G$)"f3>6?n!Rnryc^r^f#pO (#%c`#&w1$"!Rs$ZUe+P[2-:jg'sʓ2ϳ:_(9 2. ηhs]FEw?DdXs|ܼ|_Ϙ(v[:;(VM`.>q/ܝ_rcRTu2kq5!(PK
     A            #   org/mozilla/javascript/typedarrays/ PK
     A pߒ  B  /   org/mozilla/javascript/typedarrays/ByteIo.classW]l>d8BR$ƉIqk$iljS`lq;fc4C$TJ	ڬx@K<#/1wܽ{gwPGs;|gDtZ3_Xt&-KS=Kyu!Bt~`q|Eify~/x"f1Ǐy+$h!AwKnAlyOy:&RlrfIMxsN,hy]3	_[^qEop|wWZ-;lʅ1o /8cA{3	+:EA-3y
e1Z7}^mmǘsd)>늳t_>\[kd
Jӽ%n\,<]w
j,;sqVey$ö`3tZ˽KfUƾMg*nT|wc\#g2gfs<\:E!+:qRFb#3vl[GiCnXӚ¨ukQ6K>ڟ$.&'HVX(%
$iO;	z9I>PN:m$LRu6t$]+Iz0[y>SmЎȮll:0uidhLxEx3O 膼[^F\FgY3XŔ7XhX(3AUf຺ZF=/VSބdq:[1-N21ԇw,wOhn<bzL
t{8݂w"uB-י	@~@
=D?y+~,"\WS5 -|e-+.}*URNz=%鵁N
E)()mÊE쬑^5g)iJפ[ORuE_ۼt.u]Da
?=(~š_qGQ2$?I[ԣBenۼHi?N(k)	(G	Q CGdz ETexD#hZt"K"3\
E+/#Z `UJokOE>"0_S5U<&~.ySf}yTޮ D>_ڌ1k[WUm1l%4f͚If!.fӵFbit]&Fo?lh	ZRQ,(M> L}.3UB&gJݶ8A> j,&89!QA%O\[g$pfx5,0KX@ˈT(qn2mn5$xUJoMֵf,퐥[fu0s*2_E8pCD%"lޢýT"cWh8tU͙!c2L]5WĵO"җqJnx7U)QMyZSܻOГMd|aq#וJ̪eVBTC[7j]5wU/˄!<;g"視*gwUj#LZǯL/AeLM4!fkCn<0t6	CvnqJ&f-ۘwc&7UF[7z?ҿO_?WmVU5U5լlkbR=z֊r^;.KQƿ~[õpm	 IʾQ!c\Wgl~};~H;#wDK)K!1.%4c@GVc1?X]]ǠbP*DS8B\!
Y?0;ZZ
ЖU> PK
     A 5%    4   org/mozilla/javascript/typedarrays/Conversions.classRP4I?BmB?pc3\B`t^qG}zᕌ> O04Zʅ9g90$H&r|K//	#ңp|Feܒ1 = U؂n2t,|S^3Ml5t{U,1˪2L\oS+o,ֵm}WU5b랧U5:9JEǿЗ/q@ugS{mZrtog= K+P[r(`HzYAYxj8=ڶ%䊻u5g+H##c\h1`

RV0|F@<q|li3C-ʜXuAܰ]X'hFG}#]4KQAw0ȢdFBgh	p>/D4yq5@)@"
p1
pH~""2_ 
\/b>A%i`MKI՚XH+R@)EJӸDi) B䩡c;}z}"=L^((O%`IpiGH#J5о[2ֶ=5lTW'xEɍ ύsN~m﵁5{
PK
     A zo  p  :   org/mozilla/javascript/typedarrays/NativeArrayBuffer.classX	`fl,DfC"rjH &I VNw7hmժxV Z6& hk=VkkjO{Z$'M"!3rSUb<P-=X<*qռ100Hzv>_<Uu

ύ\G|؃Gxc=/T*}_|U<RqЃCxڃ2+GkϹ4.~K|ۍ煆Bw;	#n5F<aƢu
KEI=\G:gEM9]]S[_Դaof}^ѣmUMɸm[ oiu^aWKGkWPo	P2%h'F7w3dV5\q+׭\QXUT$Xc BKWҨ7mM

{6ŭڈH4[
d6na5;f%bGc!*έEGrPP]Um]mF"zdUޕjԓVFLH463j&,&'K`}TPz"i
P8	_#FZOQ+B_'^%vdiJ+vك%V8"c2Օ.
cP݈Ȥ'ڮ$Ldõz$w:$ƊFh`BNdCVzZˇ/ѝ#aDQa(@3F̰a/xIU\gR4qTNa&vf&ަ`]2KƄ`X\Pdg;٥eҴx[J+ڍx4ˬO)yRq,C7$Rf_>=R{q:^g:m1Ct{bn0g
Ng4\]Ïc
Ӱ"2&yׄ\tBi'BI#^
~"2f4FFpjx?#uF4T:Qjs~_ix\[DނQhq*?/
"آ,|"awl1ɥ!]Y~VW
oo*i7d :w
)3B1|NA	*4ǀ;q;kԨg#ktH
!1f'k4KIuS(.]ʑͰ%+8}ؠgɫ:ISTOrH#Z3-䓭%s{ޜղ #AKS4:1;ߕHL<y<xeRPGX5ݵIO4m9{#Y)6²fbCeVQ@WφآH(nF\@%bW"TtѰN nxnCics׈qU!A#x*ͰnJ}z8/Ӥ$'gCnLfCz՘hTH~&a@~NB,l(F
6q<V?'a/<5
72r+|+|۽IħK.MC3Zj<eq냽Y1ӂ
 >f,wH1aOq؀I%a\NN7l:;WyC-掠}p$\M~.y t2]jIR-YeE۱"nh1((Ew,ƤAMf{λGG){Fݟҍ1G{	L9|K;)fӛ*zy.F=cLnc,8JlX8Qa"q%b ET|c	sdqzx_N,ݕ}3դ,nMY43/<VĪeV {{y=QޏI(!Ns{AYA (ժH\US1ݓL[
X0m#agb4D%bNN/U(2!N^b80v;lv0*5trN6BjaxzD&=_bj7
*>LE)q="WEH+نbwasř:.g{8$USF;Ԫ8OoV73Q̞([s߇#9G$0%(VN.~as=
8!$΢e`TR,$JkR{Hftp6TH4f.rt5aK-1cH{/gPd_hC\ŵ*>cu+"օT&
<%x*"VAR{ķ%l%lbp8 *%sz1ۊ4)ɟ̒<Qz	9I6Vymt0܌햒(`-yTWX&Xʆ\w|V2kJ/fd~o26;؂wu3`~i*rFnŰ<63FS1䧝A'FdU}*nn߆-!jGe/I_-\+
]!]٫	|aw#w,|E<8N>E3њ*҃Cl=ʂ?_"2]Nz៍#Z~Yt+|8Ovf)JIX	&J
:*Dj!weG=M@g%VS2et-Ͳ͑ے*6KC|ZMC>s{%}@X؉L,*H[T`CRTcK:KAPnԏj\5/RK(h3X-5>
%yny}/GϫkgZz
wiI(!p9ϻ$;PK
     A 2$R    >   org/mozilla/javascript/typedarrays/NativeArrayBufferView.classWms~ږemƔ;06P[nqqWJ^Wje&$i潡
[3iCifiBDw:iϹZVFI辜{s^o#Lŏ5쁡"!	Yr<<5h(pWy(6a"x9'$*kpQբkXa*^H&?hX|ѲXFqtVɾ	4kQٛ	^jhqui;g@c(vaTT4
{X`8J>o:%00_z*/gkp̜d-
Z4Gjr&\˦KN̲kvhJf3-H
r	0)%RL&F.ΦS#ӳ|1˶ge3oܲte>c:FHx)K`=Ye[e^{ǷP*R0x?*ͬƇQ"QO4f%LQJ\#{uXQ^Sx,\1p+S \S>XԄ5S96"icOS1:] b	l -;WN3oTΐ2ˆ#S 
̦qZϔÛˉnj,[S290$9-zM*N<cq	t5냬qu8"pd+:B\G:<<'u7v?:]uo`DMĻ*>>~
MuP񡎏IBW8yx[FO':~Ou/@&
RzTWъ㘶]U`换VڜQ>cnnٶ\>y徆ς.B;gRT˫Oh=c\1$Z8k]C
hfAvA3W}-ZSwNm~j
:m>J9Kaytݒc,rm7rg	]ˈ}łJ۹RL"礜p?n?@CA?o5/Oe֚XC %֠|P"<KA;q/ɣ'|"^Ղg=pԳP$izX.RHzq#Lh۶MYw*0q
{hfP/xh!O8@8|N'
Gs};\kwUlψ*YuP" FZp
QQ4Ĉ:J1lC?8oZvֳdHw$%}xw*9i*#%vcΓԢpG耇P`ϯ'pO:QT~=tg7}EWbm+J{
+4!X.R]d!!Һ$4K" 'Dsmϑ!ϑCurB<r&:ʑSysWNsJQUrޱS[t`P_E[??9ɉo[h?p,ncp"?&
o[c1
zW0yR9N!0
;hJ$װn>jsr(#,2(xsMZ?%"ɧe_W7]	NdLo(T\--v)_	acoa4s4;;ۈ$Vk%<ݵ HwnRc|Wz[%7!W/RUՊ~]JFP.3V;i|I>?PK
     A u
  )  7   org/mozilla/javascript/typedarrays/NativeDataView.classX	\Eni>LBsHܝ@B!:n>cLF%KѨ㱣8xG[U{^zWD4NzME^rnbAUW*i~/ҽm'w2.wzI?Is*/n*݇MK}䤏4NN}"BƧnoL}.})W}-7}+!s)EO?c@fm r-E:t.Rsr;9͙q|r#\<.vqǸ8..p.Bq"dH8J	N>FC`4W0Rp,]AǈW.W8ꪺ˫j2y7:ᶲx4n`llѮx$
y~nX`ƔfPVL"iJLz?As$M*$6=ڢH$Ӆj.8E,pi:nK<\z"gFA4K:'h.VZvՊjn+	CJ&[Qq}~%ȔY
wmi
FMAQ
M=1MDʶDN	utĖh3^l	Dxh[pA hO+Jy]h/ML?Mnimv tmv(Ŗf#rJ(ia+7_^zuLL#ĹC0n:-آe[`,61z+6~ԖHd(&{6#`':MwpG1l>	'.2eY6ŹϜyX&p,E]82M:}!Wme:A!9m%'%C*'
o FV±뇔=AM;?x#0
<9SQL1Ls&۱M2=19[Ir>DۃH=2ClezBCh$A`Xˁ"-I|EPS6$F$dY4G;N]p\%:OR'te:SG#]h*ut\N:LJc~a4*1	bag $|yֹ,F*O>H7鴇~\8\J+tt^ȋt^KtRIW5~WP㈛輜W\+u^uNy57輆N5
t6
4]MIf=-P)X ܆_8]@:o9:KtݩSթ鴟rI:w#:=JKwtUѶ-p|`A&6Ykj,TLdTy~))1Kx_x_x,Ax_x,Ax,Qxͣs'o9
M!P).(d#HFX"z;#xUli*%jê~`?ɛCd 1Wu!)q\Q
H2};[%wIW@Ce]faZވiJ-OWYXW4(ϴi%PL0Dΰ޼ג!o*qw/Rc#"` |Ci,dZ<TyЦ?bT\-Fe5'^_xbF<XlS%s)I"1G'Up
Sb,Nm"AFZ_8$h$XSш* CMOQTl3>zR^=0fӟ>h8\@0wy1bD[ҠZ\BY+L.<jT	Kjfa \x#-RfpKGJYWHЌT5V!&zDRVgZ9VLvtJpkW#FGz|1H' ;Q~
K(`v7Q &v|3[0H	|kKmONߑg	ρg&g?;?Ix&`/ eFsJW\~'Atb0t$%)<vMdR~>
1Td|.˕\EWgXS騄Lt5]c.m2=@n9<Y{)eM13H~)ŔCKu^%Txz+].gÈ2̈%I%ɵd~JI^~J{~ud9\Fn0Ncp0 4L#[6eCoդR74ϑwo*yٸLXjBcel]@J/p(-:`Z'ǉZҺ.ht7C,JrC_WhQ)f'c <N%v5?.z^Zg nr8׸pͲ'	Wv{R/o,؅2l=$=RD>A~8RrS5͡TE+hbjjZIg=L#$ ߄hQ*[(3=I6e
F*l:bM(D0"l1VXqe9qNl_1GQ
;GY:1˫4^mG9>y=!F$rG]YRAUФm2f4C^}~H)_N25&=g0mvӨ#{8$YD<x
J`%HH;HR{REJҒCfJVC e;vĬCfD|n3"wE
f}Rأ@QhdkVRi#Oe]	)ؔ
)G"M#	ϊL"PkBl>UZ0EiF`WZ !P^/8nޖUpK
o̶Q## =;wS.8P^8CO5i짉Nx{r"OT,. 4ⱥt?"}{
s1T!Sf3Qj7ErMB58ƵH;݀c$
nTd{
BHuI@ںp{a8 ^@)\Kz5z]A.(z'o9FҳA"C/%rsm*+:q>:ڄ jT	|i2̠͠͠ nyQňCP!1r,cpbG頙![BtJV&IirGYR	4C\<%do&iIcCrGy7C:<G=b
䷩@SA𦾏E7kGIB&meVmeS<S|F&A(0He儈JVl"1fҬ)dR/מG{P?TdH1MJ5Z#|3xBHi7>DKhH\6'&ӓkG5׮6l#iΑ4Ls&	rx\PUҎ	@@@  _$`-N{D9C_![!}@psJor3Π/6F<'ps.x5\ȍ<y<woKGH>&4ǄMAR$#w=o4h^ˎt{_k~CO%X'Qbuhhh'n3.F
d|K ړhϣf.1.x>%Ox2ƥ#alXq#k0.ǸQ]q1Za\qU0aX1`l)3]"aWZKk?"1H\dj2Z	<64
tjK3(3gS+h+^8W6>vsG|:9t!/Kx)]Jy9]+h'.^E7q݊,v^CwZ>{ay"?ěrMx2o
=mxL/I
^9LopNz!%ŧYRS*u,hmE[mE;Ӣf.hY+-emE֢jnhwZ-^vE{ȢZ',AE{ڢb^ho[7,'sn	T@#z(	{"iN\+ziz3zγ/Hg_~Z)
n]7ߞ|9b>'|+yc-S:s̿<0~\7q1X`woߒ0:v{-wQ/ɌgyJ]?;}+A_y*)VhGq(:b]=wO
*|ϻRk<iأ~[ty>ѓ!xϻZ9L=>o|>AQdOFtքֆ֡Z*!8d$@m)s)@wB
5Nt\j</#
O*c=ne4b'}'=΍>A2~!Z _>>C,gkN>WK4/2B-/F%Z_˵R+䫴|v4_uZ)R+뵩|v,ߨ䛴
E[*ޭ-=b][Z
ߩ]Zߣ5:_kzCf>H[PeXHcAtZTiAZP5A} dAl.MP֟`?GH	6'=rϩPK
     A .  R  ;   org/mozilla/javascript/typedarrays/NativeFloat32Array.classWkw~FcL@ ɀ!bBEPdL4f򮳻;w~k6M/hO)o/gF$|чx.;>^ѿ 8?Ў)ӭ':RH`&$,\5T3׆qQ$TZ
̧WU(JjuoMռjXqϏS=7-7ד};paX<,\[e˝/Nl8+N͝rscigB:qx:3.JR`sqhevRcdY*d&+8>&'x+Nl+;sa0'K[A:ɲgOTHm qQ-3T@>ƬI!`ojmY4$i fi^W:?c/ɝ
|8zQwʅ&ypl ,1֗o	*z@f-|dŵC&ߙɫVj/7ӤqZepVn6/iNwd
[<[C
L֫lc5S͹-[LMвå%/_)*/ue֒u?mwA}:IX*.11h;]LVXB8V88SE呕YxP	~'c%K#Mɾ,*t_ᖁwMM|M|
|bSGL|_
2&~kwM|?#Yg^3ԐWqKAnޖs*L(oe7S3)94q	M\5aIGTYy~8*kH,Fn(;WqCgVGJW.Iۑz.7;JJJ+vۃUeʞ|*]k )x&@Iݪ|2.qg.+,8aX9XѨ*DRE7QoRtXҗV+{7szGVsx7|'5Iro8z84bcWqF6ϢcV*`ߒ]rmen8^	/p_}{ouvߩaխ=_B$Ø(<))k]ٻH\ՅkK0KH.׶[LM[FV>g"ζ,x҆g1Ә塻]\Bj@ѷ}泉l_w6թujóHҨN:'F1<)8~Nru'1"%T-XX0rC5HC1/p68(&T$DRy:co[Nm@Cnk%z`=Vdd{+C7
:{^;v[GN 	;dOMirVKy	E?'4*qZ )<"v2StIЦݴj/}YR%qQ"tԞ81k#~/q2;ǴxO5u>iy
F_8DYk"E*9M4'RF/r_c~{)R{(RkdfjJMuV$UZ䓑 G")ZIR5~<Qۮ[#pE&uoPK
     A /4    ;   org/mozilla/javascript/typedarrays/NativeFloat64Array.classWW=-Ʊ]vH!6nENDRӀhaH%q-ݒ{ۓ6[4)BP-ޛwww?׿7H`EwۮBA9Vcx]6kqW.^;*Xoսv&x)OSq§yLxy_+K
^eWZyp\ӶnĄ1r=rň[w	#dV#G[ʚ<PZ82:?-,do,f,AdvLiUp_jN 2fy2*EÙՊemXičot.mgy`~,fꎹ
xkFIsm<sݸ^5o#j}2%lH+
@KK4
铀ፕ5םVɼξT3FcɝB^rb/H;
&uu{x= 0E5QX/п&9َ@j/\z=JCg큤4頸nz;c8ٲjXL؜@!+ge':*|*N	v]$RեSܨiJHQs)
ߝ3.˟o(VCx]+g*)fJ5uI;(74j*>f̙=b/wli^!Msegv`WݸnrߝO'1 pf	\lq,u.QyѢT|T-wT|*~TUU*~**~_5~*~߫xPGjͿ9>oziԮX%7k*f1ҍPqs*T,r*^[x^J)'Roƚx#DA(:0Qwby檑-RZ˅5C7
w
qoMJܰ\:U v7mSeTиbws~ŦIwěkQԂcD2BLս/BF鉮$FJfnGRH$.9[(uMӢ7㘫&5[(eZ5=w֮04栬szxbA%4/ҕ,IY;ﳩ&<KsLϨ@P{K8M]^x?s
๝3#Ik*4>Eox4G[il/qF|h_w3'NLVaU8I4OItuë!\*>HCr!Z}-y([gmD{w"zwJgFmqgcU@[DfcqG>h`u}v|W}
2&.zmħ'̉-OGҙըuHӈQ$:D) I|$n`wI:F/Ls!E,
	fA1 42XDDDD	|C؛
CM<-Jd:B;x
K:nS&CKƇ}v-t/H>H#oRGos?_hF!c8AϒOkT2nȤ9K:e!J,ju>7(
.GJݢi .Fsw=B')O i`pgȫӁd/@^f܌}/f{ϚR;8Uc<[|
tu_'Cn][x2IY.0݁n_n 08`W;URۘu)TIYy܀׷-O>ˏE_}$pf?xp+'&DPK
     A   G  9   org/mozilla/javascript/typedarrays/NativeInt16Array.classWWG&ZAĢ՚߶G Vie3j
}׶wkSCdLb 9=-0wvw;)*!!VB/ "a<SHZu^d0!fJLb%͜JRqLRӘ!j۫!&bxCo-1Pr3qM:a`Guۖ7g<xޟgtvR})=[c)1]ÉıD L)NC>2hl!m9CuiwmP鄍ˀ7nzmg}¾lf2z@9{3<;>9œmwxC:KW:]Qt$Oa]
1-
#*
jcۧOPpuBl_GNױ32c埬1]Þ$\O-0z)g_g2D9YóbFYGsC8k2姬"tx=ΝDOp˓Śd;,+*be15$ Ʃ*λꫨM+)Rn\8Om%]))f<SzFaqۑ&-6>/}!.2BeoWL72&DHVyLce⧷\;{LGRv1aSI}im*ZưWvÙ}G	e$Þ2	.᪆kx_PG8O4|
aq]i_om74|5]L֟G쬕vŦ+!]8!84h)}eז<j!$tpvR΍hߛiD	HNf&FLj&'<cnqE;KGùVF8d1ƹq!.@'f"OҪQ6 Uz!ԾG7EOtѐ͵:^2<aMݒ-DM\KŰ*:ԕ<P{޲疭/@8j#jQXx&׃XGw*HH&@OcS㨡9*7ӛvd0>\
>ZnbI])uU59&ĭXCY*3b~
09E}rf~drҋV馫u^C4p 69:iYU77K"X_^t(i
&H.|\j]3mo eh2DA-@Aa؈8(=6:I;Lȷd!KY
b4ep)m!_)Ѱf,:Ux>|J-eEОW,TQ{H# e֦x,o +jnoa-6imFM-CMZ2YLKms:~Jes
n*VDk(:kM]!I<"f)KLRwp>*T
s}4<!YOjE\47b.DߠcX2U~jŚ
٢75*gb6D|y5=66o%7ͥ%*C9ۤ 9*aѰfQaIQ?}g,DUB(
ōr<]ʑPK
     A ),@  K  9   org/mozilla/javascript/typedarrays/NativeInt32Array.classWkSW~NւV@ZG؊r6ĪlvF^mbֶlδ~?w1(f:-3svK ajHk<XA0%z5.2#[4NPE#L<1Ň\q))Le
DDh͛"j=ZFf'Ê|LW\9|+"=}]PC]߸qhhkw-{aeDjxP/q4?@ boٖ!
2z4glޟ11AYcǰqG['V&c
ZY՟ƴoEm]
.PtFFۙL
c<
6m
#*Qd7&)h!ES|>w.=%;!`9Ű*<'Lyi7MQ@n!H2}(g>ޱqn
UyKY$ui{ǹInXab%xuQ^E,;rjb=)NU9
yT_E²Ӝ"Q#0hr]I(f>ǚyu>*h{*U%^22 ȌZ1]*eچsIrq GRN5!KCh6eT0^jmѴ$2%pM{x_PGX':>ŀЮs\b:W
pCw{@gc#NN{)gE8~:2ȮБ	qgtK;hjTq.HJBi-.y|x'roMD!F:v2,7-N|.GdyR%m(	х;\)ۣl)%ˈ9͉ܾ,tznX${aK^L"YmRL[v]:6[xӖa\ŖQHbM:闖+!z;y6y99gVYKs5),<Al{k5]&h&B 6l?Wss4MzF}E|g9ee#}	؉]6e|慨knf,@5Lz	`h7`r䨃FAdrM~EtӵzTLB6"<F"-5s6yoYVU["RyPTa:S!YDj-f[Bw@NG#U؏g$FJ"0&AA/!FXA*XP
H*CxN9ئ
h?((pCbVIB?v[{̧)!6M+RRK!q:(XfM3ފۨkh[2s;d)]DMBl{߄cLKks:R~ V윂[s`fIqVఞX&tk%ŴLVYHR,%Q
t%=)iLSD8
Z*Άs=4<&U >'iC8UEC^,Bt*_oB_f9r6TƼFL@mm/vNݥjr<ꋪR&)3gަ2/eV]
hW#%8'BSRa)JMyPK
     A i<[    8   org/mozilla/javascript/typedarrays/NativeInt8Array.classWkSW~6	\VAP+TD-EjA
*6.M ^{; SgZ?w,Kb~9=+v|Bp]ƍPC#-C k2CM.|Aep)BC0aqɖQacZ>aoM>%bfGi9c$+A:#aSOΰlհGlUyo$zR]$Lj"mDqN	X_O.$T,L9+4"VE}S$̉T
=UL=o'<˨ZA֧YҰtm\OtǙّLrK=jZ¡8.IRIL*ɪ5N[cͫC&ԚS:l6cw>%&ÎmF®BPei<ٵgZY!7/OxΙIffS
'ƉUV'YYٗeS̰ER&8,fe.WhAPu]6BrZFߔU95+hqŽJU$mw_x,vrU=UW\f+	|EdaTgw뿨>avxy\;	9L>U^WP"^ԑ+ÇV	p+xx_]|+x2>T|6Sa|/e|k|[|Gu$?aC{h;W02Vߌuc` OIt)ƈ(x%_Ol&3.LJ\4ӡ=zxO!:j&J粩<tF7]ڴx)*!fXthx)H[JVD؞CMJ/ܵ!HȰbjiGu}\~ڼU?@^Qm r4]:T"*U۬GTMߚA 񴛞}QC25Jf<Ė~4*
f(Ъ`1g	 D3Ѐ H>	 ٰ_ I^AqС8M]M	mGU9NTi{qT#P/ӟ">koH:CTyy-s[}/V+QIК8"L(	:pU9N $on)'an"RH$a7a7a7a7qZy|?ᶗxu4-(O/7UVbZ0Nvi776oæ ͏Q5
4oG"ih  [J*#FqFTY%)GwxJȟelh)MbQ@Khrz.
bۂ:pM=tp(ۨƟ{_$;Rt FJܯw]/pN#+ZP
e"#%ɍdKxLYyݡ=N]IElR?KAqL oHshXO?w׋IowC%8B.L;9E;P8+b7PK
     A T  D
  A   org/mozilla/javascript/typedarrays/NativeTypedArrayIterator.classVKSVe[CBMHhx`LhW+[Hqi.Za1BHהtEEf2]tML 3e:=W.BG}y\|4a: Y̥ɚOc1
Pǣ4:,(q:>C|?1+^lٶY4MYuQjz/,e陕5::ɐZj)g9-T<9C`F-a+2dl++9e9aΝZpqtҞw$d9|νnVL{,qaDz΢)\rKCQ
U<sCpXSG0%CbUaV~|b֕_60)BNԷl]m*o	s%)`N+$k'm&\n4Xzȩ̅\h/3#-wS3UũDL4eJ/;6
hɲ9%H%\<3 u<`Izq-e0Fec[;^!1\mi-66uI𶰧a7u\(*g|c8{t4'׎)Gis&6 O}0!#	#ua~.ρ=/Џn=PReB/jv߂cv"݃AS|<	C7*Y&1 !¨PGd[j< ;k4%ˁkj<|#$z@KΟ"*aYI;Qay0UX&pr"Pc!ܼ.6@=c\%)|!Ymg?a<{AX^~:zqM4#.:Ű %w#;6&m
*h'hPo+$OI1St'IG
7~TpKVc/ѱb(5=d~X #x֋@Gu<7)]Jg亃jd8C:L-u#̽0ohӶD0#&bDǔ5AMPK
     A Cf""  KR  =   org/mozilla/javascript/typedarrays/NativeTypedArrayView.class\	|T?f&/	&0$!(K@6%Ȣ$C2@-JVՊERAmZnUk7i)?yL$_=ܳ｣?D4JM1xkB8$RZB>
7BCKʨV)ER d!` Q:$^|T/QRb
BR_x\J _k
&o4.o1zE;vw{gowxco]Y|*B|;2G>SJ{C|@w|O$c1c<|0Ds 8$AsXG<6 /?gA~'eSEe	HB|ky<d[awF/Ey$ů.)>D=H~5B:ai[!Zeį
~'D_?n.h7Oԭ%/53liƖd1(Z"y5UŔSUV6&)3e5N6WKWhZKJcZҺ2(M>&ԽzcD=XsԞ sk,9{ra=Q){<uI͌gX|Ɯsg̫aʕUL7?!ONb]䝖aܜxcl^kXsMte=Z$j(M0>'ѼzxCbS>:|mt}9ޔӲMje,.ϔߖ.mړN脚@yBI)菧Zk_UU%PѕL'GLZ'X1#%̀ilIUgdK0~i^m\=|ʵ$u
x<Aj`1UhY9d9PqLm6h@266d~$+ZΒ\T'ZefYdvhk!]Sy蓓zZӻ4UG5xG۪+<X},)X6۫kCf`YG~#[2}( #|jj9U<4&rvyF}!֘r9߈7hA*8׶, eҶhb>'XFG+;mOX+v')6D׹גN
H6$⚟ &
U)>kM؅u0mOEiiQDv&/ѷ^ޚӠfsLnع7ڼ~
(w S3]ߦ@*9P;MI641M=i*KTIDˠrTd JQ,ӒGef(k`(b3%dL¨`cZuvuș
ڪiz !wɘW{0V#TKPNjF1?xoK!MVSuWw̜ݜH&t'aU ZǨUmF
<Kx/N0/#ɴtMd<k.
<̍nZ-CwxN}FЅڌ]d<QKqU)-!
I}2,d42El?LKǴ36T3t]ǄRK`U->->ڒJbLN4{jkپi 2
gl5b(̖,oHmR*q2I BR
D*.lc@ ۩5~_AdEtWecڂfǡ0J60_)jf9Iڱ-0ZGbR<:Cd;ZTIIV-' -lye6~X/\*owW[b	ͱp]5TZ4(	5lp'UjK4Ltfl6F5d͵q9&d4ÄӘDDLcOVjv-&]Cע3z࿛!?<դ#&4F~~EϚt6%z٤G1'|jGMcu2#Թj&r)7)67|6MVz1J@B2Rqʧ-t14$WƊ('M1\+_+h{0L{t'&O!{LeУ
*H*;!9ڄo*?2U?!2Uʅhn9>ވ]RVɴꦺ#h/֫YL$<DYq<MfzG
*_2UoyD 
LULW2U1O7lS%(HCaV5'59@5Ȥm^ߛ\!zuM~Zbj<JZ bQ<>5Ydb>'\T0PS
xHSȺZ59?a:UƖZ0pX*^`jy@r@6鍓&Q&tpoCNhNVh0Uc h`p%Cƪ^:iMS
5T=Tgɰ-LEnjsii4W2?(ZDñUSu-.nG-llimjJ4'cuFMM;^Wsǣ6i\ҵɟPLYژ&6ژhFcZ㔕dd>[n=Aϒ̻:0+cw&c%|H`w~-=Bo;pH_CN;yN|ܴ-ivp\'Gw9Jҩ5:F2;چNğ7fAŝ_f/V'"΋KȡE^&[/BRcaj)wkCl/]fɸaqY.KNN5֑E
әۨ_9is*ܵJjqlrc}aCnk~;W22,V(N XMVh%$p@6s05:f_wC	"Z9S7ʠLܺILPüMäi= `Д,Y^U3cˍ:`iV1֬W\6zES,Q4'58߹*r"aab@+@>pף\mLMKW렭t~ἰ6]2kCe+ئ};SJ͔.-<g?#6!H7W&+nOK44%zͱUB|}䕅Zd6m͐)yRy
BԇUa}zF>T6Կ_7]o~mԿoG}\R!ئއnjG{ܦ>G˭h6;Tz<{ԇn3:C1TFfZi7݁۴쑟6MNiYa{|E 
~OGY_3 ҥѥ}(y]||lzm>u$'>g~biI^s]s8aeɘW۩/^(Y
{wBa0QZV~iݦȏ1L:KzhyEk)NA_5ԇ5{#9_lͳc=Z
1=zȖ%n+Gnz:Zzқ{Rz頷<P&h2O*tppiҪNL\
Հͅ0s]騲aQe:Qi.U?
'QmOlVa(-<] )^@-ӼZ:6GR)=jsd})||)mFZR/IYak7̳ u P'Z	ZRB2ZhZ9}ƢU	*%K?^͠_{Pksʠ_%8̖L {Z}6j,0öBcGy6+l-v`P^Z1yz!l(RwyΌy>(GDU.QS֢Wvu+KB)negŻP*z%.K0(w?f:+`/6*r\'2h'(\Y胯Xxo`NU{v%j_5]Eݐnw=6Wۑv:rlU>E̷@ps'aj[Eioy.1=rr^9@ƨj[/Ћ%zY_;Б\TV/Ste~u広Իz?Ev
Lߊl+09f޴H#w`(Rrn'FBӰ
A곃T}-o>LE;(K}"ރԯ҇xq҈v"!Vk8T]E#G	F[7"&N7	8_&
p K^>i4vSv*'2׀÷R0oAt$laX8EwHv[QXd;}Ux,EOC]"]Dĕr`$x]~;umCvX.am!~3YV[ҩisAata7;wQ~J#JRȼQiǭ^@&` Y>X0X1I`i\w>bĺ(bV`ˑ"%ބmw C|;$γ%c=[.x02W+<^9&ۼk]^O_C/	E#~t?Ot\ 1"G
fQo`{$	;@~~:X d#ANf=[.t˭^:G)iE\JПeȶʢе5K||T@Ɏ(q[Q;
,$ۃ%i͏=gT
Q/8SР
A4V]Oq~LCd~L?
BKvQ
%(&|}0ʎQޞl-P:v4ʬ;#XL(iT_y՗Z,wSgRQpEYQ*yc&@qΦΡܝʹ44ﳹϽ)wP3%pieFH,Vi6Ǵ9$mI4[Q.Y4|j5jF=N0'
[1R9^OR|j'ɷ5$:K/&WIh;]24e{+LpEJm-b;)`hq(
Re4L&9	Y.΢pN%KնI,kWta!C
MӰ"A\t"d
d"`r
-
a/ZPz& J M&W'&}:퉶 ɐ@Y9k!K %!o4ZO݌2JCSx,Mi	MFuu%,쵭j3B\7{uxHKٯ):X\:iy'kH8[nLm+zY10\:; Lv/N
vc-~9cҚo&
d}WҔjJx:3`>sgJUrT1|V,0πs_
UR_Bp=)QOo֙c#KmKrlrVcd+;7p6m|fz?-eiP-] O#Ǩ/=3nygZUWYGJAF >{1YC4q`8p#E;o?_C.	vˀp(=bKsHa{O ,DoH1w,ƈY/xԌ"f8 UR[_uUDIqvT">z;aa`j"!ciPyE8+lgwZECx	sВ}%JlR/^|.XRZ^Frο.Z^bt#;XqB1^GOq#_Hît/^>x#M\iϛ"//q-_
/+0J*_k)/6~m0 *㛴7>D=KN	-D`hlt)$*j\Q@HBAyg9g.lE~إ{t_<Et 3!߁_c9˺Mҥ7(^^&GE I\D9Tx$fqiÓ8;Է1:>rE|}L^ ,API(QVzN@$xjpqes;'3:>{[A7{ԳT"W=tA2ģyoGCA7c7W歘& EQEa%
>jQ/:zKW\q۷ỀqZ![ow>]4@3Tw|-h!s (:~VaZG&~Z'qϴKa0o9N۹NB--s:misTbܦ
2ʵEhp	i+hwe(*3?>˪r_`ɫuNG\݌C"}//]t:r9,uLoo1@m<U~͝7̶!E/yrZ<G<^Bx[n:"/SRPRWGZQWR[WaCy1]dboi~->xމ>~<xdu30IsS~9@O4L+,}{7^u#;1P/
tJ8NU${Ժ͋mݛ^]+x
~JŦ8G*?ѱƶAXv"d᲼Һn @
rFܘ>)y1;Wy,pFNoceԝ6-O"}*>T*亟SCk0i}v@u.Z`E߼ľJPSSJK;S=h
d*qd*]=GI; OR`^YfiRY
Vي]؞0WDT?*W]̍pсCʯ
mm;v-΢{KG"/a9vyN#[8aX<,}kŢGnFAjOjmS%t*ej0ZN5j$իQԬ*"56ӝ-2gj]޳Q{PaRT?
~J,*zzM0Rg}*VZW.`{wH<C뺠|&r*͚מiz3qyrxuE\v?%ƼRZ]zK rکMMJ@#leZHHǔ6`M(=+m5l^C*+-'Y˵z[縎B*FjF;+PJzb-{]֧6m2o;{KPjR/Ta <m[Rg{c˼owe:\u/+lZyj6Q@]Lywwn{7ۼpȧۧEhL.@Ei7>D\Ϥ"ErYy%KWa

x}dN]AAu%娫hUkhFcյ4Nmhs HhxYNlgef-@ uiDَc<W4&v/P`.0x<q&w-0lb`Smr569}ɯ0M.fEdP_3,qN)uN]?`~!1={?8q	few8VTm:_C6׽{;9*E`Ei~ǪFRwt%!y7?PFhA')'Y,'ߊ`	D3p/qF4џ~}J_YmZ@Vv	:*[>j=DJ=Lza*R?u>+*3~mWN{Y\eus.mޥY39]=WӞgӾF}S!#z{.׆PQy~>ч?ni!f1llk$p`/i';'O	/hml5l3f{%k6^Ƭs>^Dxܞm	d{-tWyS(\̻AO'Hy^;<^Hy.J	y;RMI.w~)kʟ1'.tp4] }~<z%2^N4GiX{r;o4֭l{6]~R!Oh*?PK
     A |%  ^  :   org/mozilla/javascript/typedarrays/NativeUint16Array.classWks=j5!F"2aw@^"a F-ijf=3+$&?)JğS_ߐjVD\3sϽؿpLVEΣB)D0zΚUJS#G5n3x#&C%yKajzNa,;	|WSUP5?hgq\ۆ\L'7Kǿ@01:p)'62kΛ}%ә+L1+L\]ȍ.F2e3cg̸@l-J##G+s3'KRyv-2ɍX0cF\oo}.><eY4=\Fl'8vj@"-`ejJz1'	uؖ8ڡ1-kOgS	!wf*AFS
qX=͛@ܷ2y	L/͒,27o
X@f#'⅊c˓R5KS*icZ_^$r$=9
ɲ頷L6PsWӬ?AXauT6n;Eo+uYW2t~]CWzr>D[c<i)1ʌVqS%F`gï_)SotFmyLEծCm.ӎT<*4U?gH{SYeR<ԲlPqn;u>^ޢ
[	7s/_copo!cx'w
x`g\{+A܂%˪\(u:㢁.q]̖KL=˅ł>p9n yS]8='sSbaqn-Ҳ%y{]JJ:>W*	;\-۳*
v̔5#֬.<B{6xx[I"s5'A x;/G (ɜSMGjlԾwI'`:ҷ7oG6;d@ru@J*t^e[xSMq42,Z90eO#l~1xh|b[{3ˈPm`/n&[Q/УdѣSE5![{SntoG2Ѯe$ע`'Ph65vYe|%|8=pM/E
44Cg)"7=ܚݻt,{mt$)A}3؉8;qNr 0=Ԯ(ЃU`
@nAWjp(T(xߓuEB1kyzRZz"YKvSVGk
-L0-bݺv-a$ևGm]vyPg.9*xE%_-5䊶yokzpݚb>1(kpc{q`ѭ&)S	Qcd?p$	u4ns
#ǲz]|Ӫgx5|^o,0-ao[&nץ-΋`[ٷBc!l"K%*U4j~<`RmXK4dh?W*Dbq	_xTx9jR<ͺ)&	ށ PK
     A (-  K  :   org/mozilla/javascript/typedarrays/NativeUint32Array.classWks~${eyc6PC"ɀ	!Ŕ`"1 hc֫c{AUvWN/%)IIiL?c>N$3I>GeEP鴞9gw諯?I|B;l%Kӭ:RH`&fpTYT;2U׆
^ioIFPMawRXj)셭Uռg@G }*OH?p<jaD@\6AhUʖx<o
Gɱy[ּ5Pܙb;̠ܵ|qrd~41?6NBq&Z83a$v:MIܚ*Kdep	NzS.[A`N%+dY3/:nԉ!ӛ65fM=fMO-Kq59#cJg֓3xnCT(u@K`{zlLl ,1o	۪z@f#B|յCޥ[VlUɴC\~,r-$}9
5ɲ頷LPK Ԝz+${ݬbK%o+}UV2taݺP~p?2[c׃<F=]woT>WtqFgaw$_TmEgƵªOy^*Ιպ%rU}[wT}YS{ǔ~8Ux&є9}	S-J`
]o-¯M5;Ǹ?उ?"c]gO&x_7,醖.UK9ꖂ-+L\Ęe7"(<Λ&&->iE}\̱]3'S\VT\ŊI>7N6&_T%%݀GՃ-鍖Quǔ=+ۅF<06@YӼ\M:BfdH1hzkQ
ewK32($<RyW/uC:	L&pvdwv:gxm;?+_yome2+O1<opidYtpQ`/طd!c۪_v3`&8dOD/q^}{2
u߯a=şB&Ø(<9ue?CZ.^]Fr>۞M[FV~߉F;HNc02]`0-{>C2RcG;}K0O'݉lkPԁgBg]Mg؃susg0FPbĢH-bPՁ߂H*ܧE	iG";#+%b}iM^ThgGhPDq"{(ۻ:e?Okr
V1]
Jg9ΡJ`(CupIem-L:i9@
*ɭbpPShp8"eMRdl3F2u.1N;k*9:#~/s
;ǲB=|Z"sChҢkB<#_Nߞ,a:n妴ԝDn;F"OFnl?_]RҨa<O5zIa-쓑_'#)F͇!>U0H&u{
PK
     A l`    9   org/mozilla/javascript/typedarrays/NativeUint8Array.classWiSG~zwcK,lH x	A9u
r@T:8̬3W;US?۽òT}귛W -> Ẅ!xǸ5_^y"I+SAB:H i|e,|HȆPpϳ|]>ɇlҕfٺi$ym]a;*VهW1:z*9IҍVnN;7V?2SCinhqVW6U"VMsSdyWOfNbqR,KGFt9w5uEәЬDQ@ҚA<9]iŶirpG~xnh?f֍~OEeOh%jfȮ}[ ښRS*+:PH"՛5T*l`|JS9q0`"9hfipDR8,ކvDe>kaPĩSu2ꫠ-эFߖt%-hsZu(i;Wڑʚ$"W0.IU0T+#|GddT%QkXI}PE/mжx(if-UyT&$eZÇF#Ex!.ޓpO}<$|(#M2>2>A	_JJFƷzfa
dN3kYUJqTD\F.F31CVtiS61-> í\ow1k8֓<F
%JMdFSuov,t)*!Ͱj`[
vD؞)CMMȵd$s#$5A$_x~ddXYN1uqw/zs:
ՄI=.8Dbc-@Rfr/GSZN\c
I
{%Gݠ uo	eC~i\_ Ih]Q	 r<B>hte@
 W$dA!!ZyaQO\h>oJV3F)yșvLe{yeȡpVHW\W	(H	͑_^@@P;)_ڷiqTZE 8N#8S1Vv_%i/4!xsHs+(Վ4=F8p>|;4~\R -L6T!?i'ĞXin8K{;Nhf~3??A\~cE8vN;MvTF4OyQ	-&]'.⡫+#*WF-%ڳD@9QD˩׹|Տ2țmtDծI**ajɎ!: մ_>t}\ZyTCv.XAr#yKWxLY-rixDVNeAI9lR?C9 ސQ~ ҇Krq!C2=Lƃ+bU17PK
     A 
0j    @   org/mozilla/javascript/typedarrays/NativeUint8ClampedArray.classWYWGgieQla@Pc1 48=v =qI̾N<'9'/C9US1'y[W }!\UA#1zIxW&&CTVYY|e0|)ȆQRp|m>ɇ]1ԈḦm
{)M=zhQ{8J$tcԦfM%<Ǵ&:ezG|Ѧ4MȦgHK։X#z-o;miJim3y3#96
h9ew'EA.tDo/lsK1!P8iUʰ( U't-Mqn6ϥc8Ϙ:V{ײ㢈EfOhngȯ] 2E":/'{дH<y<kؤsPޒaji{ztx{pRFڰ<QĠC|{;gtYH*{b`j+(̥46%<MqF
]n'_iWK~oJK(^GlBfشqaGqRaKѷ,dd4n'Q+XC	sҼC

lG	<n7yԯRVŋ͇nDnZlt0Tyvhx)x_PUq|cxVSaU|/|k|[|GmP[:YopZIoZ72T5iPя3*zѧTaX9{r&.%Oetv.TB\QglyFgMY3F_>Id21Ss߸WwvqB Uґp-<=M)>uCi@wUi8}P4ŇNNFSknE%6nSc/)öh*=u7&S/"W-ɯp~Z}CJ
iM-=fFsil'%Jc@<EjnbhHaz9kohC"@fAr%_E '(HDߕw9.gځ2Lչyrʣ|ȡQ*b]O2ڥ4Rʵy9+ǚk,V)ʹnA
7tpTd 5B>'HH#Y#y5"y#y#yݻ#	ZB%T"qK8!8jsee! v\	`K1-J*V7M?@h6ʇ"ih ?Fu=ѐ'l)QSwq(-G6c+[=Iq=
BIh7Jz 9W-8+Rw+MtjK**`ϓ	: k]A/*Lڕ\-)BvFrArkdF:@[K/iX3./Srd~qL oH[>((ꅤaBEZ<¹|9
pֲHmJH9>⒘/
PK
     A               org/mozilla/javascript/v8dtoa/ PK
     A Wx  l  <   org/mozilla/javascript/v8dtoa/CachedPowers$CachedPower.classQJ1=iX룾k]v6"(X
әئL323W.ě`b ܜO G1j鲮F[9T+y/]<b(C0{#3d|NMuf	QOw\wy(zJ@F@x+Dy	<ia3<rC;'^pgl;8e0;8tťY`aBy0s1/ŎU߹
KOg,}Z&
z,&hZ#,Q7"ebٵ	Rvu]1&0h#y+Ȇ};XF)KX IYtp*
MReE PK
     A ^
    0   org/mozilla/javascript/v8dtoa/CachedPowers.class{\a X^BBCCYP\$3
veeL3+o$M)^J$oy]rBԒRh,gvu:;}wޙq Q74@.ڮ+;*|JޠkuWOj
u~_p}xBD`blc`Ձ#Y}ϮilO5쭓6=~:+$rBݗoZwx^ӷ%/+cL/6-qv17G> [5e(auW輶94:02xNʦWuWrak6N}.rK_ڟm۶iÇ
l~N63LYrN|U[dG	~ipql]
W{dX`{e)T[
'؛k^o12rWؕ,/ap
SIi>ۭ7Hg몧o]Ǽc_nj~<nF/klYӌ[YCf\*f_xmv>[6UDs3/m8(p<CGPk
_DvNi,~:[]fEUki
U6c+s֌+OP=7{١*#lkVmaV^*2[[7~*+k{m[}[رMէֲ~nkf-]Xk엺[*Y[̳뵱lZn\ZWNj랙ΪykK"Cͻ.ٜ;l^^b.ks%NYwq [Wֹyݚx^[/}nT6Zv4efH)Ao4h-5/)1j6;2;5mHZ	|,%6Ŗ7O5J=!>aL6;=l]z|BѢmR넎
$\j5/e٬xQ?M_k5"ElE*	P `d݄lwc'fku]
KiIIqDk떬6T1
b$5YL'%PfJJ(2M5YƢԢ\9So52l&1O-g״??К'Ǆ&Q38_/[]X AԉE?fe"GggV%glYfo]Tk1? ׅ4pH_	0¿59=ߡMvh׀84pJ0-y&j-j$	ՒB#)%4{Ur^4D2X-ߵFY|hCשĔg1M1-%F[x+sLuzbYqhI:jjj"R."k0
-}\Kg0Fß3 V6݅	IB3Kv-j
Ph xk%DY)LA|p¶1e]O
5&8zIN|7Lh讚2P
`qOj0fPwW9V/w:mM
X>׀zBjwq?A890=vpJLKݓ*%|-U=oŤ3(8+L-z8N$^Ē"j'41.z*PփJ4|nr]stuϪ:θ`]t\pQ Wܤ&pt&Oў;nѮGL>/gSE&Jtjȼtv#&AQt$DL!v@g8 lBgYg>ddC=Z2NL%Ca>d]Ȣ}:Ⱥ4u#i&N$FGot$'~|Q #y9Q"R@1 t,D=R#zh:D"E4>Db8!D N}&3S#DЙ)p<(8#zrL[$9IMB`?r9h$S<0|03(ɋ<	'1s5A$"+j.gk0
a7I4
[.'kQ-.1Qrf4˱J4Q\N0(eq9TR)h9(U ȱN6:9W#tAVٛ(} '+%;'A֓do"AH
T"#[)r*QQdQQ ,
r´d58 G,=T@CD
rFFeoZTƠ$g-l*'$-l*Qه\T:TEIXPƑ}s(ɹK#یPNU({Ua(vio8hݻ&N|;܍įl}
PK
     A 7_    )   org/mozilla/javascript/v8dtoa/DiyFp.classVSW6ل$Hc\6P"TEA7ɂ!ɂѶ3:h;/팶;uso}~"Z'asss]|o `Ѐ~pFQ!*p6 N89Wq1bMXO*?u{f I10|h0
(||fͩ9i&LjؼBseO6S57u+̜23V{!k7녂Lx,艴"ܘo1.X'"b1&I`6G)Q./
fS+f:Nz!7sV[}}
<~$0'#ihf 'd-=93\IKA,V#.yff!^*okye4r0s263{Ma\:WB]Lnk6=	VcsgY=-Kٹ5-ˤ̰RԂaq
Rļ1{WȊ찕73S
"Aޚ3Sdpv.4LQހt]" 
bYA
 va2; q-
jVyhLDm{EF,shHˣqD,Bhxbs9#Ên=$9U=~rWz<
Q0F%N<F}xK%sf<Ҷ󗹾<jEWa鸲Z/h??+~ }ie*vVUѺCޖ9JH  7<r7e!_!dl	jF.r|Fήn[Tw7o}6{rH}1:1EikAURxɗLnĖuDhn<g!˅:.wV⣎ yڼBzaj%y9ë[Ϟً}NhM\Q_-lW,S|(BGnD5$vU@*IMer35PU(4\8&_˲)j^1Tq0;BqkaċV%RA-e.HCLJC.	Pj%i:Ja>q|| Σ$RpRrr;c*>&hJ'J%l+/ei	3,o587X( e%F/jh|xW?UiϰK|xŤd?G3V[ ԡ6P^/T57]ư4V6¶tw'
%9Ft	ȣ=w1[m*NQ#˳3(e-[q,87k<F>lm6Ҳ}郒9ԆH\V~o;?꣒SlM<˛fy͕npňE^	Ȩ?/J$۾_g.c럸m/b5$.2nb=kQ+YD]E[w/b}"6[%yO>6ro8_Ev#PK
     A 3    4   org/mozilla/javascript/v8dtoa/DoubleConversion.classSMOW=ac	PBƁi $iMI5M$"ݴ=P>t׬Tu)*VaHiޛs߽{ߝ?w Kr9|co1xYvdq{F-Z:Kr]X\?`nm:͹A已nȔmޒVd 0мi+$Jk*#L/$*i'ͪzuup|!`^fѱe}kP&]}^i[Ͳݖ
F=Xxk׽ղ-ۯFP޺<\6Ζl9m_zAхy7XTf9;Uϖ\7bN(J7F({כw괪t}U/.ysC*TKһha'-PNbaU1j0Qޞb)lw|{Sgi:湫?*crtf0<z8K`&q0O<ǉ>AƔi)s9_C,>jE8bK1q7LW
=h?#bwvn顼>Rv%tCQSc暢T
j6tF	sAH2guzCB.	BeԽ}c:JaGyTD.еÊ&$φ
Ku_㸪ye2uvv|L)3o=tM#dxCۥɵ`,Ȩ3)RAt5b6/8|5N"6oN$3c
ƨqFr634W?Ѕا	]P@? )eMPK
     A Xmm  
  0   org/mozilla/javascript/v8dtoa/DoubleHelper.classTSWmKHX A(-@X-.$&0NgR}>3`δ}_i_-ݛ%Y8s9ﯿA60D\
4\aVȗY!\	Um㯂e?
}5qX>bˍ̇TN؋9M)P&Tg7o8Y#bQNZ:/D`'
,"q4-gοv>cBXCRv+IXN61;6\m4b|2	vUAY

I7ScMd%a 6MY#gSk*[Ldv:m$UM|b
ǭS2زɎ4{E3y#:g,{̗g㤟	jIe-1[8g"_AG~¶;l%mlwp݄ x$uN1c(LO*]2sY!t.+-e{v֭qi"3ٕ\%^t:☎wѥc
}"m89vPGc :':>c:NK:R8BZG,QdchU6(+T(FNڅU)
4k,5/'U[FRR u*}r!\8|;>rO6
שc9&(%82<1C<{.'GxS+T?E'%xD^D=#*9hC/NJ;N==1@UӚxx*62
QlV"xJ(Gz'Hi7%m'I)J}\a!A6[,E
Ъ*ܱAMۭrԡj#sэo4רb`U|hADm`
z<nb~GGE?1i4N	Tb|Э/6KԪtw%Y
P
-uWU@b>xy1	}WAtzmH6 *^	?+7E?6bY+A^L1+!N*xtpZmRMRW;*uZBTs{na_bG.iE,JIkt$aD&sMOeoK4žOf%'/qkԮwdGb7^$wA~S
V5ԗh }\CަGĔ-43'PK
     A t}    ,   org/mozilla/javascript/v8dtoa/FastDtoa.classXtT'y3C4~0Q04B mP^2/0g&(ZG5(RT*jOjեZkږ{ru»sϽs9>. SrG J
+yWpaঋ\\I
W>\D-*pjWl֩wSIGݬ cCVP n
nRD6fwp
RV|Som6A|+og9J+5NCIV:J.ZT+I+μ9}λݪ0χu.Xlr"8n.[c#r9;whNRv*Oc3IKY-+b%,t[%VQt;9ALie\'δVYӗoZul~i*9h Km`wRI;;}MRFwYAǜH:* vg>\.<5sVvvv.OvsgOo	sP4rz+`xQ^+:ݽsQ;wtLVOb	0suixA@tv9yz9O˚v^&窙7[۝s߄AۣKe	+[LPrbg)FM7kPOV{_#/ڟn_Y$"98
 f\т?ruViHVw$;Y	})jǩsL:;hH86z 0[CU-8(uҽ}|euSJ6}ߝ*L۞.-3jv6pf&+,>a'Jl65p?0p:b;(;4kK8v000ixć]c><nxn<S3~&B=xsbmb2<^0rEXK~s
3~R|ݝ=RGl]yHPSg}	? 3,Y,fJwQ}B4[!muŚ3:IM,Ϥ{gqsr?=D;է-dYs6GM8%E3شdaOнK>rMvRTPLqpi<ygZ-ztrGQHeXK5}RNꓴsNN^^HSQ{Q1
G^(8F]LR%>O#^'n
"lV*p
7Gz-U!j[ԝqZt.[fDFA Ƿ_՘`9bkxhݭh{o-h$gyMFҸųuiRaR[W
ذ6x\ۢpNܳn#bqO]B
kmsJKe{pW7Н7r}
qk,W\)ij1 _$kTK_
{0pi㩣wc8MoԷJi(^Ǒ'QWuŊ+ύ'FjflVOxI$a"!
C01CU.=T|*9?jcn6JLz͠FV7h7A"]j":d9nu1k\rwqS:>6l-<m<œx s<<_!'D?Kxk9*~ɿw-`&~xKj/	b]=}!-n+LKH&!R#Mbʑ2BCb4Tpwˤ\ĻY*yϗy?-^-(,yJ<JX7̫+ƗyevF
:]*ib-)ɬ)ȩ܉!Ԅ!{\ݚUZ`
O[Z,KU?P"tɓQĹxΆeL`h"U!U,n
rŪ`5; j6ϜgիD);yTˌ̈ՠZ{
Pfz1lD5ҵi>k<5o#TgP͔_=L)*̰5W6,ň̶@rZ渢.ZH,rΊbfyDyDlĲ#}͡"CLGjajl|cd,Tc?+3@<3=8d[4fsuq#1N'C؎dmǸDP}k-BOhܸ)X\Y0v,d.D$e1z8OZ9batQҋ?rS4+LU,KVr-	r̖erA%#k%%7I^n&g@Dd"F%3r"g
5{&[mS*|*$[jn4axTR~s2*xrj9A/)rRURKSG郻'nƙǩ\ʹ6$E*H-J
OHsAoMET5}V>XEK K*8a+ˋ!Ž}<6x5	Ms&nf sO_]«r0գ>gPm|=Ąv[w4Q`؏yxG
8-XFz+<-J
1GX`9t#axd'B ?@<ٍ),'qjyW}}^~G5<%;.7l^ʠ))ϟai6Q<sIy1z{OQz{<R|!Ca!eO{h\m߻hP8nˇ[۵'k'V߼:asRsb &2o0oI&f[GR{-E,wsW4q㒢qݜN؉)TӰ@i\ gx}eA5~GDQd]|T+,y4MFj9JK˳FAL˂C+jXqYen#7Q6Vw__PK
     A XԢ  !
  3   org/mozilla/javascript/v8dtoa/FastDtoaBuilder.classU]SSW]ܛ/\"hBE[1F!~ĂAE(
A~\jH2hۗ/ԧZ:҇jUlut:S_OZvN+9:ks_ !E3\z0.78a/ЍD81*c^z38Nx1Iu҅S
EffPe(#tVV
6Z3cY6Vβ<Ju014Z9xҸ?O)hu٩-bDGŹ|#+5+Bhތ7Ƃ}V6c($G5<(*i/c`OE+7)uTdf\)ZEf9cFL[WpLQ9|ٖ92yZH\NH}%Sw:[V;_,aKkZ#BبCZ}xABgF>l)@4no@݂$/wևNtЃsaڇq;pއ
hU4uY7˻6`Lȿۜ0EZ:_ :oL[\2U	kѶEVgyi'鰁O].uc<d-B<(:΀2XGq0n=Z?TZzЀFOt!mA}j=B&AVS&VP2XtVDdmU <jLL|l5i]E`{l_os=RFz)
Tm
[:ϥ؋=3 G&OItt}4\=@,alZ+VzJN8q)bzwpKP?ҟOH܆/-qQy׵	nXVa밍?12Nɱ-6¨vR2]ms~%)[teTDnз[o]eTSbS2ջdo-ᓠ
eb7(L8;rTS<	]T!$ʔvVFGdjh%@SntK{b8Ja?fq A|ʝ/xK7|;O0*P릪YxZ\J>)Ξ_SgC$ᵺC$p[Eפ]u3oLPoVTgmX["i}B*.1"Ms[q
.gLx"
8+jOo}zMQS4wLs?'8yuv`.3+.7XR	zv-v/gN!`Ϫ5xV|̊GxbWX wL0G\LOҔ|@\>֒vlRw&+tIK$zw";Z֭z#+_˴W&PK
     A               org/mozilla/javascript/xml/ PK
     A B]Z    1   org/mozilla/javascript/xml/XMLLib$Factory$1.classRMO@}81SQG["q$$nUXE**!G!fMV	j;osw>ޅ0yU+S(y.)z8+p%t_fOӝ#gDJy_CWe9quĭ`Nd!Z؞W!(95vR*"%s數F:[
)F44<Rt`m&v4Xt㨋m)SnO35cXfXy!>0t^MYgVpG=7OzYy/mk4|U	1rs*e$^uoPYb":1Ag\)_

UH\ȵfـY!I 1]PK
     A :gv    /   org/mozilla/javascript/xml/XMLLib$Factory.classR]KA=몥Ym!-QoE=AC8nM쇌cT~@?*
F	<=;3/o fm¼EKu
Q$T3ݮ2dve$C8g`(z2ǽ%o){σsIK_KXbvAwo-Jv{őuuԺV2j4%fc&cXh}vHs-9dL8Ӹ|q ͆~
SW@m	W7
jcgCi8IF2jZ5X#Isdٱg'rRf
~1AAy++R$~&P"`ebtRWIp62y5Xyd?PK
     A .  
  '   org/mozilla/javascript/xml/XMLLib.classVmSU~.&$i`-$M`+PEn6f7{E?;δOv8>I$S9ss9w Q#[q0lsoG{(|Xv˞Jwp7{qp?/ĭ(Nk
dֲ3ij+]ĝ܃\vܪeL*fRWPZ"vA
tKVJy,iySzζ˚cxϵ M_vaZ#qu(㒙a9#OX9tڱK]sl4n7_7kt G6Dh
4WZr;5_TaGY_V&oX%nLaV+|6x	,/ȇ5BmY)ΏCrLVz+J.kfo Wr͵[7Cb;%+[t~Z5.WlѲ9iJRH=#`}&+UTvޱuL!kʩʰ-
=H6晟wfZydY/[m|`'ѥۣ$ܞC ccYHErFMÞxIQ<Hkht'byIt'rIby٪|3ljvYo+CxU{4eQ39z˲'Gk|;VeQ0WYEF|6C-Z.TXot"dp4gcxOM'G66mF)",C!dG=;F 0ҿ~!rrX]Sc;06vj	j

ҿ PD_HWNx]S7l=o)]po|xkj˽kMhɥ_M<IZ7YIg8Oh:H!$p)\Iz@83>q>ҜSo$x^uzr?AX.'OR!&[?z#dc>*J܍󌃭s?m !Pݛ 3C/xw|	$0-ޚuD ö(CDP ,`u/ࢿ_q/LXfd][jo+G,(FFQhH@d1Dr ]g}=qLԐ.FͶ.#	ގ5Sh?OC?5[q_ՉVIև	N<fNPK
     A n     *   org/mozilla/javascript/xml/XMLObject.classURA=l\ I@(P!ZvXLvS	WA||?wI%RV͙>} BA<p!La: 8'<
`mC-]1,s5=:f-"TSbB?mxʬsh0yZZ^J.*b˨0d,{3YŢVwԊfeK6C:2/ajQhV4a*ۖĮRIdS-*kb*%tw_#MNiKѕDp(-~]TReԝan6:}~$k&lu-K[U[#-s;Eo0, arP8qٯ;Ӕ/
c;LD!i,\6CHu*TZjNHW2|. q8kfo7?^PKjYv Qz}[uq;ND/0<Rj|NדZp;!,_ۮ`lyΤ-[yʭf;	˫.2H 3#0)z (;E+IBFK}&i^t!\4 <aB,KKW&g4(H)/K,>AJ°kqRQr3
ޏG(u&u*q]LݔRpG3,F_Gn{(|F 2	L w=PK
     A               org/mozilla/javascript/xmlimpl/ PK
     A T  &  .   org/mozilla/javascript/xmlimpl/Namespace.classY|[Wy$؎'q$Ӷ,MҸin'iJ8/3HYvdɕMۍmcldhД2֖`1

JơW{9ړOVK/E/de_(*??5?	_7d>|_mՋ~7/N{q
+/2/!o/ǋ'"yُ'BS"k8(PVd).
CTPn}ͯ*le2G'^9|jwMYWsU@0_:Z ^Hjjsl2:撙NWaNw&ChO!ǻu`Wc}]7*zNNSP'H6I({2١d*k\<ɷ
#hl8<HE3N'ݩX.)#éhf /2pl$LQR
.fFv9R7C5bh<*Tq!9&C[f4O')<߲o_&t2ߩli=h'NDG'}㩄1bt߭EWD*{D,[fR~ȩ-[j3.J]Ȟ}TbH~mH&=D#<D, @a>(fL[}u>Z$n><WB] =gIF܁|,؈
XDFTSƊVJJ>%'(6M
Gkc4`ۇ
īKk]'i
.;3rNAǁP:͒eBSQZ\OD`2=P\3e</UG.p6(cPLfw$3ֵD*+pe2b[~TruTe.pqw$@w,Rݣxs&Bև|blY$7jPa<0Mv:$θm
$}mXvWA"C5jVx`NN<F4*ǚ%
 ˀ]CgQ}[Z՚+YNI2bex,˔vv	P_A7(uUXQrM+=<d3#즀?۸%F9FPB4MYAm*lf')˻5&jk帉`nMJ6qMFfGKjV-&NVSq8wNr_m&ގ{
 뤩j9ླྀTp+fIIb'v#LN7'8g
M)TUG!TuYbۮ0M6#[ug-񀩶B4g4V7p@|T^w*M,U; 4qO),,Mij6Ubk]4653Mv6%nCh='\M̜M68ZL~jjf1YP=
\mgL&-7P*
K_?(,"*/`ou.;
T;cSN?9]e%2<>}}}v;%\}6g9]TX,'-M3t0=;:+y'bٮ|wfW}34ھDD,oP"Dba}D:ǎOׯ*
UjT*<r*)zh:N\Ie	g>AĮlVAnW|8ϑɚ+Yuť(4tTf"؟p~6|&8PE؇`4;9[ dbo֒ߏ%|]$d\i瓕$#=z)Hb{ZOҋp3Nn{p<064R)P#뛂nmei,O.@kN"iJ<cLP8ۭ;yC(Jmp~J5Zp]q%Wę\pD^[f:_U~~]w昀Y~9~97W8:o[f"@Ce<:gjW+ix-n,ng8`Dt>7`
u
)i֢֖`h~i늂ƣ;>%3=yxżq[j}"J@|&zޡOҷܣSo.[j8vD;7Q
gmx-A»{=4{m/u[-|D>ö0b
F
ژsP:\u.9TFΣUWo`QԵ-m@$:Il<_m5>h2@`Qu
Lc,ao%E`gJ좤~ZfyV1C`nZŬ`'Vq;AwbgُkpE:'3Am1GupʢLx
z8d<pEjr,Kǃ
XZDB@w}XI?ߋقx8sOEKXB,bS!RLƧT"ᚊ-ظ½kiZiD@\MsßH[EzN6uZ9y&\pWୈz|͟J*᪙qXxG(D8J1q4	4 ^6<zg?Yc'%^A.6SjTuOYKhǹ.2S$>zhs8oYl8z7XtZqmXs!+G.`$	>В	[Q;S
~g[% ?ry狴ϗp-L|.r}<tĴkkuZ{:VpY@'8F0^E؊A6*8YBzW{mGSQb-uP:S΄ǃ.R$Řu˚Wf_-h&--ܷa].D!m #KGú'sÜluFm`,x%kh=j1 c$Ww[Y~RH׋ UmGa-v?(U>UZbgꨃpdMYl0Ǹiyq+`]b)?d %eK%j	i^AfQMOZ7߫cL0ϳB&aLn^&Dx޹
uAj-R^8~Kxʂlڪ1h`43]	lьG:Π{Ly61dr}Tq
32Ǫ7֢2n((')+L>ʋ
[Pةjq@ʏеs ?K\;Nx=
kLNӤi3診mmX?Wa
,Љ	`4Ƅ7KR5vxH|;eS`3NN`[U=jҖE|r\2w_H;qYHwӉs|悃MLb>_`!t^D''ť辀ϔ]g0D<oMaSkISCZjuVSڌxk]bχl^۞Xm_kL`WZ!^,*ݬQfӼ}
@=gaO_0%ŲOIS%]{/XYe#{߹]l[a	?Hdvxqy]'茥Rԍ=	UU/V(jIhh.J>?]d&9|s"uEzjY-#m.D7 ja#hQGKB#ltħyW~* C\NuEkP
kY.m!zR-v4kC7oA:FLЬMѡM
b>!uanRڿ,DL`ch!TIσ<ޤQ~xPK
     A 	  h*  *   org/mozilla/javascript/xmlimpl/QName.classY	xTu>g7C$ؤ
#FaEbl,F4x4#fF ;NKiM[jq"XqI qM7]$Mšf4,߇=?=}y"Y/57/uoH-H|Kqw%^wCK_7c~*%U~C?k&filczE JNvQ7=,]M{4z^$dPfȔyfd ्pWxbUif)e,VJ*7^u\q<^j7pH	K^F f7yonQmqMD,yd.`rӼt*rb!ybsLۘm'bbXqo	#ɞL0ҙƁd2(bx&1kH&G=tg0Υs
Lkgr46`#w4b9C&&f#iIƲY#˴~V;tzBNd^G`+30>Iți~{H9-a>.etɇ\#IP&n;y羼D*19Z`kK@$
^,<Cn:r	xgru`&fû~vfiaǪ9d˜l`:kѡ VWֈ%^,*ĨQ(בm
8{(P7{21C\b8&rs*rإp73r̍C$+zoO ll`^wS@L аv:
% )kgP21g'
Zʩ1;W%91D*Ǵ`@8i!./.I#ї2Lkǆ#*ƍ8H"Pɉ;ۍe,Caɖx+<Ʋ%0VEex`p|1~Dw8S&M8	sưĒI=5g3gC*kmG@H+fIWv#C$Nc4ޮ,v#';UPbӲ;e6Ǯ븙¹8ٝ'rtmKe5ށ=-3Xӛ暬onQ:ʬcD"L9Iu)<&N5_Kp6x3=9k&3_<u yOM;m)n	*<T8:<(U YUSs(52RN
JL9
[I۝ϫ`Z/!ds\{[fީ1":.n][vE3X#ԤsazNF{MG=MfۥA2WK>z?(j;{S'dztiݬi3N#I)(sFpܩ!>zZuwK3I)3}C4vߥtTm1uoVOgtzM 9ƈ0H
ݧq:D[8	\ItYW+Ҽ v)I2qzbFP2ٰSZǆJg[Q?T\ը
@LF,3pdZi嬜z4Y#/C:򗡵s9ee]Wh7I}u9u]Oy$~~g*;WlpHOWEEu'%=ti+,\ٽ{([QMa!:0q#q&DMYes:x=>]<X8Do7ri`]dՅeg=VHeq{T<6͢S.iQNsӡ{Z
E33Xz6Z1T/_yW!3!([YY!)Hb}5u-otvjvӍl<6h8	X{ܘBFHtӝ'uETzSOzx.>x?Q~/ޓ%%t ONz_U*Fri9(!.5XCKJN+Rx#۝dorT99
ϒiUrZ+,#
r
O+jVv8OT6гc3-܅w҃y{Wͭ'`*󲦧yzPAȈ$ВHec4ΐ[GMAB&P>Y^~VfU*7üx3@MEo}2͌iEނ+
TT{+ͣE+Tۉ9jj^d9䂟Ju"݋&xtn[//;W`Ӱ1_2e~O?
ԕniF
@ Β~!zlTuţ =EXЯa'뜹&:w%J6U:AZϥ6ovG'LVs<f\ii!&e~#
+Z,k/rHʦwS;Ltq#\YVJjm[	g,vMPav~RThEE8-!n>D9'm4SyӬx6oA08[Qp#_`UԹmW8s:/SE8a!,퐰ל%O04Nk/<Xl fٯvo!sTVR1%
hD
;ǁ]Ş#AŠrnך]@4@WT0=	^#rvC
	#b=>SNVAh1k~JjU=mFɵjRգUq
PGS8"V4X6(I6>F4bC1b:KQ4IBC*2deȆC|8jj5]p.˟~ex͝EFnNOafRXeEK|t33'R|ѫo5vXE3($	DydtY tY9bR!5,袐E5!	' >-~J
fYs{`C-o4x6Y}6
//ꆥct*Sm!9_G9
xM1}{燨~l@8X	=
_Y1ꭱFkl5&jm&mv 摳FӴ7'XApMv@{!88F[΢	5Uqiy¥Y
U+9Fao1D9NM82*`VL4-kq]ob3\这mt; #-H3FP?TfK᱇ʫa]M1^%OA?55IJAi)"X^Kgsɡp,|bV=L,]6~{p⺚UN&'7Le/Ѷ&kLloragPECReW9\Kt%QMA@'/ iWP%WESPWbeu`ջ'ϩM.ϣfDiBJ
?!N}SW^|	3v9CKIpU+j!o49UN#	+
 r_3_Vb nl s<#
&<no\Ҫ<c) ڃ|GJ ZjN5Tuz!p|=ʍ
Mԉb0o{f2[hؠr3=;1EVzoS{!(Q
y+8}r
yW76p%Jc#bdOy<}m*1&C+YYUa糱)	cr-+n,7|8hn|Z`@1DawX8"lļ>D@ъ֊֊֊8֎)Udl?p@4(*;Α?ƨm4ى.L3jLpK9&/E܅<yGi+wP|*zzI>O0U[yȼuc~Xj)n
]!۱p;^1qZ}
S*{,b1ăp`nއ7\@eDY*^&C@8!ca:1(Dj$pPZ~M @S0/-9-YjNS+SWi;6ד
v\TyWWZ?ggeJ,m~FD94_QgKh8?@/ErPK
     A z  
Q  (   org/mozilla/javascript/xmlimpl/XML.class{	xř;#ْs$	I8	IPlؒQ.MZͶm)nw7=`.WKB9w蓐nF37׼y!EV-|T%a8m x'ow(O'-ޓ'{a~sG&^{})n<>q;/'ŇyGxQ^~;xq+]<=<4|}xG|+Q8Ɛϊyq>}`g_xe~I>q_Wy8˯/x|^|(ozķX^{ķ}Q|+4|w|g?aG<O~g~OxPgO)'>3-<{GOg|bx7?</~Ë%~~óx~[~<OMg˳bWy++J\eYJ76@</y)<X<
=HPQ4	"`8k VP~G8C-@ߖo[x׋.Ñ5aە@$8k;82n62܋K^c{C==].hkL=Wbo+-`C1WzF"IPIwx BCTXؾ`TЬ,\='!A9с(0BF#X8vON8|@jZ,ܡ@1;LF>As)g?[!/?5P<* D#}H04$lG`?mj/͒
ӝ1R?4l[oB+CpϠ5e!et.+it`"']l1\QV[V@w`N-ji`ŗd"k74^q``8cmb(3EbsfÃJ']=LZ
FF
"h4 NZ6jÃ@QegAAs0cddYszAyVg,ƌE!^&d6MB(k6sÊp&1;Rp.;p6BIQ3wbG@WFU
ANH cKwd𷌖-;9+
<8
ndZ/90
2EX"pγR?MQW42RHx@y##:ITJ=zOuxbM{`?6=/kS{#Prl=:cc^5&]evy?<쑥]8FǆcvfQqhC]>a,]Oa`HA\=Doc)c;yG&VݍPv!Q颲_bJPa~qмAC\`4
r PKm2FQD*KDhghl$k<En%U߫9~-G(j.P2}N5YIr\Ϝ(oJxUAxQ\ 4jq&r,@9
U;@T+8

G@Y>g&pBsE+ؾDUN)bdW/MJg%lVaP4eF%iݨ0<G/6g9ٮ0.
 x?XGD\J[G:2X)˼Ps:ED涁]ѧ?
N]p&=fh<t7V])Y@^``į.EMm:n?yO}ʑ;yrNONST89%uGyANX#v
FU2NTͩb^)t`@`xMzM !/tZYnуE>EdD}â8}%+iKVɩHw%kdGNy]J9bb:um]0Z
P-Y'f!TK/gX#\~m9b%AY9ӒKΕ
vp^l͖llx9OYba|\`ɅYrhQob%xBK%$l"GyICᾘ?04@wC<Kq%	7KA5+IcH,08ɥȕ[+Yr(%r%WVKvՖk,=oZRe,r%yY+j,#{-^neWZ%B̀(!r#x3ki:
D,YLKii-r+dq%1/%p.; ώ%w[b(*\-X/Xb)zXn%#,=(qr/φXdВWʫ,9,G,aF-+[bBqic'0}y%.cm_>vK,Nv<c |?Jђ楣Ll
&%ߣ6QcZRB$+'rl.xP$0
8X:K^'0JmYV~o7Z&y%+ogӶ*W1A-r%Z&sbbigϟlm!
0O,8ܢ.g}\;>$X(0-і͙Fpɔ>8]߿{ͽUߐZQZ?oRHf7mԖ
s@^cV	@[6gӦ549ZQ|˾K#P	us
1658AKg86D zk]{baH0l=kpԔa*8"A,W[&fPAٌ-)_lp9zPO]:;{:{1I@p'dqK\6.{ÑTl{Rht7β[i<?ccpn9ԾS'Rld<h~D>HƾsMS1}2镫{{l(Mt'u;sņM;:z߶Ik}oV)7	d_|ԃ9<]WW֩ؐmE6M.eq٥S^d7jCAlI+;E*soUIĮ)4v M5kc\:cؖ YGԮ/Eӷ]Y{'o[&\tgl,rN֛X:"6FI'[T>iG|JtnuE}k`EOX&sH֚WğH)lu:ђ:H}B>OcއfM9-hjni=Ii;N: ?'rPS%!}>K#RǳpgtB-Pxݘ=H_Xb~\M_¿8ӱNj`QX+4$V };
Ll7rՓ:òq:O^))Q*YZ)MTƥ (撏 &hq: A0$<*ֈ3S٤'xok|hÊ|pڲTH&($/}Ro+
J:C6JH-^}ohBڴrt-q/Gv2b_Q q#'N.U݆L=J)>2hh<cv7hlB{'>w3mFЋ_FnI~6a\<W).OߣjWly]QvKl2|CU?A<#c I4  3ri#Oa{Hޠ	&Z{&P@.+3b/\[B?5\=bNX[@۰tHtk [,c.ab=Hqn>U׶J[jk}]kIo:_^Oetqn 7#O@䬚E2虆=O/h[-"WT⡟{Dd
G4
6Ӳu$Ct>vC4t9ltz뗊΂:INE)d~fȷ:]9@͉ zIù
{ze.MX}TR%ZKIPINݍr"I/M5L{.?[ͤE5zw
4e~w)7Q>đ⦧!8՛݅gHd"y?α A ={zH>JݵHuHZ*r¤.4.ԤJ3&r_j᡿\n+q4Xz<JioĒ&<vwdTw~Ns\A.~A|dкFWb]D/+Zy
"ɾ}nE\ey!a GPiNOs);.tٕa+{F傀G2CYLdWaJ6yqjHJ>⧰'2.L
О?(%0vJ[jzf60Y |rCb4EI?OnԲu꼇14Rs)N8-J Kf!4nj7؞wYXc#"O<zZ8,^/0:"=U`=*La`v5 zaO+섶	u݊1	"NKPaKr~؍8#cW/+L8rWi*CTs`ϫ:ZAssT4"f\)oi:_ؙ#ii&n~fȁb'lvQA"y)EHi6C+4[EtA:[:-K+m^\t@T#n8 YxzEU(pŵ}4ٕ7Kt!̀)O̤1jl+B.
FHu:jbs0mY#$^(fa<zlmTIն.&KC*y4S,tul:	 $^ 
pD&g&g+zZ²ؒUAalKhXaa!v0$eKg
-w
+4^Y\r[bZ:{qJ)Ě!l״6Ww%l"בGtSuYhS$|5+e6:eG*B8=G/:]Y\D]t_܌9;kvPLb3rV(u˨F\N1#v"I R&1D+,b1Mqv~w:ůĩRSiUeDbJV
nvh2Z	aĴK?]ic؆y&c1~ʅl"um(X)gOp:`;`9Ec{]xf\-Jvza0S#ORjh͔kSoZnk!bjRVUwcR+) 3|6!EDL;gzFn#T7Y
Gx8mZXpQ*,lqOrW>OI_Iu_Q!Fq7-
q/Tt/|*ɥm<q-3@{7ɤ|pƑvx\Հ|#	[&2d^]LAfq¡"eXְd
'Y`/4vJMA=mt٪Ԉ@ _hKp۶ݥCq߸sYvUb_+P}*L~:n8Ζu;h*߅Y}*QI<A!?A]'N<P&rkz}o9..u=S^ꗕ-q8")yJ4Pe+4Yl+)+A,R0Z~7y[7+fL]B
U1>îevSGL#T3WSI;/Q"fJXjpŴ0eiIiN?L牿c,BMp1TO<X2\Sp7՘ڱg5(tG9~X枑ɸe_ Qf(!وFCM#
 )wKPD}BI"[idzY>~yQJHs tQmE4:&i9n1(٠ArRPڢ)Y_jWjKPֿBZ-%
[I-ATCowww^Ao1[ѵ&oӸV=T,=N
}]i&<RQ3iM\jfk8w<5ayejѩ	;0	TҥTY@'t;N{4d5zO7AAFH|Rf࡝ʥJ.~y	m+.Eo&oum1gKEfdnr5wfE[+z?K00h
sv\$Zp@RmvpP6Z)6&S8=ʍMT.R1&͗_VʑP
/=t]s~Uҽ("hZSIr5ݎ炔U j?c? NJ$2eܣQSIGHS>D xʁֈVl
+5ߥ6Ǵ P(C6hU_k`
*E;+kҾPAU*0XR.S2
׼t\
5CUϯۓ1T!z7 |aI na_aB|oMNqʍTz"qzg4n"l7;|('~3/vۦ#[qs-y^\ǋ0/nЋyqiyiztKɭq~8~!yM&rGď!݁q+QʣHI]R㰠Bpͷ$KMWn(im??8/3!hCqCS˦YNu$)xV\w朦8(}$}̟z@[Uu
Fq;#8VT DegIZ,Oyv˯QaɯBb7yZ^LU_ܼͅNk%CeQn5*5+lUսVь}"/!}NOo;lFXRܹАם~SSf3Y?`&Ee>]2Mt]3}*2?DE"]MF71Fmhh?PK
     A ]s    ,   org/mozilla/javascript/xmlimpl/XMLCtor.classW	xTofyKC$! ! [%LfvUZjR*1 VK[նֽjQ7oLDbgwwgO`v?t;3a.9H.X~"ݲi&7*INGR:q~́=܁\*'Iݏ;ǀ
.kw=z9WNA/yP:K~C
~-'R塏Hl~/7?QL<'<)'O)xZ3<91Q-Wkh Z9C@,Ȯ1_(lͨʗ/ZPܴ,WfV_UjjڸY
(yE*`W%IH3VtttG~-
Gs%
GpGXhJ!0|il	=2׏dy&91-kE :#Z,j%wl_^	bd+_HX]\;EB"i
VrI)a,'>Kֹԯ5{:@(XXv\3s.ܪC y:6jfƠ&Ӥ>sc49.[%i1_@FUƃcm5#R落uBmo2<ƶU#"@cH:
t1K Dh֤pWį)x^rnu{(ke)XmPkrj+$~>k/psƒqrWW3s8m]ChWUO#6s,9W@c;uіjmKC^ZtsjݚZ3G4+GqH21{)aT)KxfM`5o&Oh$&y~J
#&_4a:Z+`q,BVZr}@ws#gI^*O*^ğUx<?ct@_pT|	_V|U_񒊗7RzvR1k<\Z/igv5nHw_c,DjV
D^)r&q^J>^UN<TouoMoxTlޓ@N?'G*c|OU*diZI)=`Yix$`EYX
..SB;
RюMPU\#:8sF=iT2+lk:d)AU3%ۈeWeR6/-Ue#&n9>.ofX%ںK"x.M"8f"=aSiiW^kUs._0V&򭓡VOmeĚs +=I	L?3]|!pֶL]eRU6֩1gVAjmbqyG
titj<-e¦ceOJiI櫑3)RTba?wƢMr銌5Wb*Em%rhb¼h=̩cx>O嶳6멣C?E^hx:E?-@DJ:yU3V˯lQ3g*>f!g?_@soʼ)9_2_ys|_muCcWQl
~d	^}ӹl] (B&1%(ov6OrJ`2F,#+WYn;rǍ~(V9mE" 2/>/ŲbMv2)A)
0M2ܘXC98.Drf
QPD)Co*@B9DQ~$L.*ٻGNᬶ!^4ܪ>U~Jˏ[>SSY/E ٻY;܃n.cĕI j0@l9լ*1<p;5SMPJZ=I&P&pg.nnrI 5	'MDAtө| ʋa!P$dfחq ÖK{.	*
>9cSryŽXPnG|kuL`7\^+WK9܍bWikg統T>1Ǟ\-مLw -\bgwA18J3V*<pBN%h:2ک񴂱)˶mEV	"Y.\p5x| @/%un=:N,pW<v>_bxD2L@ǘ(
49rPX始rtViM7,ss\}>w JU$wݵo'N׵0~b]:`/ː?
O+CȃZkӄ䳀O{?Z1/>NNNW̴tevS071<{Xcna0JE(hi8+Prܒ̹i4Tͧ
)` cĔqYb<T$|JwPK? .f{Y/?@O{PWur\lS-rE4	J=.t\C"]QQ_DNtUŜ0B'ZO3xp	'X10?KC@_ddP+ǜh\!5m0cnsR\X?A4!S}#tZ/:s
+K/8WUc/&d?Z>nx0{W;'ݔ2FO}
VݷXsfIy]{TMpB>R%fk͵YP`n9?N'Gmf2ʆDQ%Q"!
d IO9ɻkPj`~}|{]GI6**qj.RP]ϋlD~2!dn ݋!,ډޏEXL>iazz)",(V,&hN4 ƠEc(EWq!SM=Y'^5#bB܃o
]|SNC:>#>
ߥӕZnQxSDanafll/?]p;m'k/dx7QMW;,9%'L;f<?y\?PK
     A B  N  /   org/mozilla/javascript/xmlimpl/XMLLibImpl.classZ`\Um^mҦMڡ-m:4}A!
m4-}B)I2M&3afҗ<|\]SyW@݂-,EQQQ]UDuUDc;7iLn!{3ϝQ"ZvG]rG|Qi{V4IiRJKf>%/u\||#[PGF+IB7h_^·xGu!>Z-6i[{QqA^G^~/ǟ;
GOHsL[ t
_^ʔ|G
'6ai>'cG
~G|B/sI>iIp/"QvLyJ'iḗW5/?'ݯ-^/W(o.&](?2?c_^_i?^<_+毄Wel7V6LKOui,2/Ҽi_
>T'"p"6,cULccT(tPtCG'45jDCBɎD'հA?B"&sOwt]"
\@6\Pxm$Sy@
cp'΀ߖkE/p@d`͙p2O 0_nwr
źֶ_H-ny r-KZ#p[ow{8Q; w{K[d+@Rkքzl W$9UI[gmfR{acr'-%$áh igK[DX[h+lEp0
d8'KX
tj]1ڲ3Ti3j6j9%z;lTjD$wkubAYEZ`d6E+OOȤ +,=MN/dvV[I;B)q^IF9B.*3u ν`?g[S4fx"1nT9JD{Sa
Ӷ$Q2ۼ*E[Ke	⳴FoC64Ӝ!t$½KBSqDZs[	]1M|61NFS[{s$:P|ڄ9QE;VW#q0	X'ݪ'
>L	Z\n{=<5k("͵xs:jexsg'0\Hw(w}xG8 OrAc4yi֎>XI$SvewN>t²3
Xn*ᬖwάMKȬ<QXe&c5F_ڑ,Ǔ"iƪfK,N,0 ^cib$pG4HXKB*3u
#nK,华B3Gx]`JeSq
HzwDଷ-,1Je|Smo>>l^	MkLmWՁWy\`%9X8/g3;!EXOo*]{Bd8
eOS%%C{64_:𠬇~;C`3.Oܦ%7B.%55o֍L}ab ,YȄʺx R$4J9
hN
S]yގh'5x!֗qx٦6o4>AEƼuҥ	BhzDD,9n]HI*980:CHR+w|TaڋU=2ǙYNh{A;J>un&w.=PzHm&:#rU2p3[f2M޿y0sh46'zK;9GX<ۃ1*mTӬ @7KMOzƤGs&K4_kIߤM4ߖ;Ҽ@ߕe=Gpha=tILd(T^Uhr=c&/&=@kLULg7FbiJLUJ@+꘦LBZG!Ȥt`:48I?_hY*LUW& uY
!,YTοo~rU2?\OU4>%jjU%\*LlʤѨ)
T~ui6n^bjTTe|quK$Sn
6U)8TAUoCS59&jcye\nISSM@[\B4\3ٯ7yj"gm4XXBuSCKlW(&Lⱽޤ?oZ԰x64sMT-c+iDv}u`obEN"pT\jZii,9sa+3M-POUZVMZa5Tk:%6Ő-DbNSW
Ti.E$AVS].#
XwDJñ_xһ|<PWTۡF*wy&_%?)Nd0U
c.vpczְڒ#
,Ϻ%;XS:&riffP퐗ICW!H9^=@-as."gm̍Sa
pr[ϊֵKaGaB;8ɉQUCT4SPoct%\~֝; KxmXIUܫq)}U3b>bkŜs{_tEjg־CD* 
EY%W4D䑘&CnJߢ8KsGwt4"}N^Ot!N-T8K3jH߻JnSDؚ޾>lJx/ݮ7kxXWjL3ksbYHN hHanv.Y?(`uy_ډjPyMr2]ƭx4V.T-MYNd~P;ϼ7٥sBQh]cqr;pۈ7CQ_
[.MgBe~W׃6\ O!BL"4/C0"rcvG-V~f3&o+m* s+r21i]^ zcQfTaTb[iuSH㎝Dn{
 \8bX`	B{D,^-fbCG4i
^ީ 0۞tң!D/DkTֶ=ǅao~yu֏D̈YfDy#9'!GLs^-4:vI/>v_jDY?E+MSh.yh?1}H;ѿ}нݯЃy>}yTH/ ?m#GTxO:x
.+w"1|,h$
Q	Mʹ1"\~{bH~\}<"*W䭯>D:T`R
⽞&Q^lajz;gi,}\ (#&$M2)M9k³08&SѣSBOO^LO~ҽDgf;ݳ9эFw-Ws+Fk\t%V NIw"9<z5C6&˲/۹˳7	\c/vʆ.WU^v?A@4a@40	(ګa4b"pDT݊,+P
6nXu0d}n4~~8	?G62]?:%7z61O=	*]4	"1]&Nfa:	ǩ3L<Y+sր f+pZ	~p7ӅaXGh-B[V
^t@H!m~OcUVx)GS8~]tz*hOhda{a"`УSq}~:ܦw_[),nCx~'O}۝WEPWk6"Nu Rh1<e"XċStΎAGi^L9vxE-oۖ1
m=@x-/X<0P"pD#ZN6<ôx`Sa!@Ng:DƅC: Kiӫuz^u!{\k{s"Яݭ$y?DBje~kYYuCVi\kGUhERXY%i).T4P'JO0j'Z
	em*5[&K*v+p_ᖻelL
m5T5C.;0&[;;*׍?BD1<%5Z;Wkc+5.R/\+݅}*݇i9SEi.ZS/ @C?85хJχ&O+=I+=h%:qXL=@Ԛ!FwnrU~Z&VR̺Jh\z*<T;C͖soe0
{	x_	WC`09Ps@2+M}rL{t>@Np,o"+p'(3=klПK'`}u{3/Cª'`
}鯻:8?.(|T5@EV:0s#:_hA4kr(u=[gg>*.9΋<֥s7V7IBZo!&22G
zTeS49n+aǐh/AZGhF(en*rUiM?A|`?mt*m^j{B*<M>pTZc5K qJi,Oj O|5tjiϠ<㹃gQhkY'2?*M,zS&\:e/f^w/CGA5L5yOR&y$Iʄ]춙,@p]ׇ$]6 Mr?KFӞ~gO--r `V`gXK>^H|M,^D3p/.s%+0lfJHPXx-#Z`Ռh^lԆ(#)DϭY(NS
yz;0NC>=\6|0Ǝ+X*%TmsV(4I縷uPڧXH/p&d[lrLIs@]jKT[ɅF%bNݳTz)ԃu5LtUn;h]N.F^Lʸ*&r'MБ.h8Tͱ7XNjLGֿ ]Jh{v(;ڶ`qM{iJFpSz,މ8cOR1h<"?txzʉ
A Oj~j5x
	LH5THzgKzgM^t4䩚'2*z\!{r`z/i	oaB>BVޟ!"g"gEvD<-vdphZhqv	Nu&ggc5:9lr<,GuYg
lY,)ؑiKq!z5hbӴu?1׀9;ʻi)ǂW5nR` xنӨZi|7}j#e"#NUR?_TgC[x.JN0WmA7hJQ7mEumuk쒪<b
qjcZc1 L1G҃4(p!fR~6,1-nr@	&ʓT1:LD)u.]}4_w=IZ10gM b+\Hy]46g_ipZHv9 #4B(y.(A?>GשI~b-]ߣ[GBQ!Pv!TIsnwZQ.v^IޢIE'hLܥNYKH,oTazLQ*q-fm=2&teG-"ȭgՎN9De/biP:i.ښ UIKhux#w%rzdu<A["
)̶^~9
MTK+7,dO/ *Og?_=9X3a{F(sRubN	xWH^E5o`Ix
z;wGZk>~>|):z^gx0$r9ݏW@
iig-tH$ZEmWyFnhB^9B\1͂J8E
^%Cols5"OIR[/Ab^WA#>@v&yGd
Orɕ쏥v"y~eysK<=*Qedr8*FUt5fI@PB+?Vgz5TfVs{}tZL7i.^k0tz;=0N>JJnֱ iN5iX8?AnȠ,,?Ak˴  :sfǩ<hsYSGE?(}T2x#
OՃG9tK3NO%(1gzPo^NP
H.$oI>ς=xnO[K[w^֑m >u.B,u!UZ5TtZIKURhjTb09Rd퓮v!CөŐIWtCp7۬XjnYWҌFubKj̗-Y>\]1lut3%cHۇPɈ{azTF5Q1멮poOaNootC
/pT
"Ccյ RÉj]0(Jߘ
ǪQ}Ƃ")"MZMAL@j;
䜿SvׅHg(T/sn*VByI!7T:t=M$5MmBE9U%x'"g ϟjyPK
     A 	:  E  ,   org/mozilla/javascript/xmlimpl/XMLList.classZ	|T?>y2$@0D!(YъC2h2g&ZmԶj
.UmR+v~*Z.BAΛ!$2޻{={Çw$O>32ó6y)9,̕</q;/w|yyy)y[sϕ
?KrO!^)epϫCt
O+!Fk}TQ_i|nKt%NHOR.)JZ'
x\.˧
\Oi9F>+d'e
yZ7srß&_r\% 2(4,7+BLi}U.7kpo
$z,B+OZ)obK.JOweH߽2n[r铷Im/Owdec> [Ocry?<]Ƥ
f*IFp9D2-3b*lǒp,uN7s{e8'9T$w͋&S1Ivޞ2/X,n(|i8ّwwE{ww;#sLT8&ZH?&sExO$]Lݑ|ixsDciLc^tbb-+2PJ4u9LV0T</v$y-Yw:SkP~~*};B!vF!)'OSdƘg*
oM1ɟ(ZV棗o:>wko=*8FNĻg rRilc5;댬GXBl<h2مSᎋ{TEEF-KN0<HOW#䳄L*E։p%^3Ώ?w4 h
>`2+[Ӵ8ֈb'g-r	؞rEkIpжS(,jBh<Tχy,Rӛ:iy/vb'/)@b6K粣g m<䯧)h7kW67ǎGuZhc:5/m.BpNХ]9p"CG5PB1l	B|13IE>CtY,	?w@FbxxEk@dv<1+w
&*Dy83t#3RU/ٹDcIeqk]"l^i${@~q8s~8ձV
y'㱖P'Dҁ/\KǾVPTiF"ޠe$GV H:LFK>|0"X!gdX*t1W 0) "RR͑E$pzX6ʎNE1[Yz9.ѯ)r}vEbkJ@a0%LeGB;Du;±hg8T$vjDoT^E8lC(GXJN-Q%ZUD8J3{4r5+ޛRBrzF$3xT"Z%K(0hTxjm$a۪!oNw =G<.L6 ឞ
pbW<J!vD3AhXa@;Z*j&#2W˪,7#$m}*XX혋Glh_:&_IlR{c%fttYGu~ݦ2ڤWMd
tw31I_L6dLeK==rˣ2QzMA^n k/R	כm 	֥uR%'"uX]<.î.O"ɏ&?Aہ&??5UfghIDGu?=`S~ghɿ_1G2Im+xaC^KaǔjaYv2pfsN~F?1ZÞ(L(Bk?_L~Q< &/l}Hm&lK]^Mޢv0#ɯyId'ȋZ^忛G\(bpį&f9/^I.:U7-o<e2H3Y]2Nx7Lou0?:ȇL C-/NMRH$I!6yM6
p"/h.m)<cxLk@#t~':oe)_i%(L#	mG+S>ӥ3[5GX
s?H]KV^}m	7>9*kK$.7:LQ幥XdݒlNnWyv,iQ/evV+d:'vh3wq^(ݳ񔤏NJqj~3)7'D9;+)fQKiѳ@>α&NKufNn,9جG#8	О뭣Y<YE \=
:rwl>;ڤPlOijGoo-KA_j^qNgms4ɼAm>E,vhkh{#X$SKAó[3daǣw@6~hMya=B1\BDR
FJ	^[QF"Vg!Tl 5~
3sŜu<SuV	+u\Z;0ɔ:)N8Lڶ##!rIoK,a,B>6#Ǭ]2{Ƃe:(Q*:@Ey9hTml({JO31fz1Ӊ`qq!Gp9A5\ȅk
yhXjo}AB&ڌeu
Һ$Zߠ4Mj+KUHEڴؤQgc+0HcOT5&U@߄zXPVY?
oPA6(U(>QM`λt 6Eѯ']~W"vN&JoQL^ãg󈝴&wvI5Q;@AcCLXPF/بĒc8+O-4r<N'匷('Ld5Ok-hf6DjGQm`f6=	΁0:ftDщG2z:Fߎγ4M)M;ԈۨTֈ<HEYǱ}(uPfe涊vpܖCzX/P;Ti0qӱ^+ǩJUJi￫(.vkk5ߤb-/ɑܦ_nKQ#V*.k%~fzITeeUރT<m['tn'hT][i,!4UD&s
 4;|6Pi"2<M#4T%N?#N	i}T6ZxG?7+D e aOQ} :ybT<>dH1_/rç@[ 	
|4z<{$6;QՋ%&X|ڋ4(É%۶hߑO1m2}irNrW	zRTvXr-KJnZɐ7MLna!8̥%jB_SUH[ w iv6*_l/6f|pO"I4NN
ֈW'ia[Gހ;MABܰLWfYraj# 8Rh
8A٭IݪpG-5rKM7>9^Jҗo_?yFk*4i?GJ)˂DOu]Иʹ;ibzfzŴG-2֓cs1[@{aSlyˢH:o"i]XUL_"
hk"\DU$Ex!^˽F"7z{]x}Hpi?^!`.vp]|{ZB9%(S\s *X@B5ZFT( q!O+!HO~qHy?F% Nfx~2WQP˄&Z:Ye%i	8A!<gڵYMCh3ľ!xtfCHC'"8HMx8Dd4@O3zրۨ`6M4%BTV*.H6 UUK}nÁEoF9%kv`'6ԍUQ	h'pSNdjp73,c7Jw:>ï3emRq-
::7Kkj++Ayh$*'m 
m>jwhԠ'fnmXe8~LQ"M(-I-Vzg(k(UY"<<bCFl{e+ dQn+kfrYoBr" #3fPi:_P/:ɷkO+µ8;k3<$ԍz?J
*et9t.աooZ-atfZ( d:J}vlO-Wd
[{PJiQ/eG8Nfݐ0IzSu $:#Tp^VwXǪ.~5h]ȩz|dH`^+@=~u
_Xxk.뼎aGCU
JddY`JWf_^ X 6Lgm?Zk9@%I!9 \7

gUjvx昼Y6hޢjޮԼl[\Af+^:H SCafFUKK;\ɲEg`{<[n@Fdc]BҭJmt=T=1YB=OtĐ7ΝJ|n~
p~+mt2NކsnZ[h)Cߧ> |
qFѿ'
Z7\PV?B尹=Z^Z}hh!ʢKJ4Z`*CG*K[y$xXݡ{	4\^ ِDbC,kHi>_([NưRsQ%=ݥ<[{4Hhh^>{D>#.
qGFPs
 4g<.$
Σ5qz۹uwok|X \q+2
lVg!9MP8VX=HO4
4}cir*TJllP-Xz
ͶTNZy;App'
,;8spg7]9u
YNp~ú'@͋P_i/Ŗ"v+BB9B%:HLWT$7~mYih)λXi:8Z[U:[2rM(?_b
M[ކ+K4h
N}3}Cc#{ZՄ@̨Oe	Y\@?.CqaI"
Ajˁ
m5<3ڰ[xEWve[72JDL"
c3Tj8iцN2|t2O5LێA@͵`ch\gf*P䘯%Sᖦ%-5(#è S`:p(ްK6vQeab|]kR4-Ux_*6NeWu#lN{M[<Hcq6Ч@OSF9Kq¥}'6!s6z`oLɨ#HF
1O!	6@i10\?ۘjZTmuOX\\ZBeKFCkU2rec:TlRfH#42pɆ44ՠUiMh/-Dš=<M~nF@׊M4]+tީj3ꮭvޢwf**vƋn]:0{'/>9WwTvR!ю[@B4XDcd,ϡri6<|yJ@6B@ApV\rsVr[9kc%YN7jT
s%ī
|صz;ȴU|A&i=ԯ6:`̹jpiDm$\`4 TOytYQ䆳-Vm*:T<b;Y}zfɲ=MF	
Iah@ӍiqwG T-N ,F|kE?ȋ90;Uä+Xήݸ:vGZuF;(Hr_&*DP?M-b[=Q#//׸0y=bKpilim{ֈ>z#66##_Wa	v(h91z
\dJR-NwOCOWʠhsXʪV:1Q]1O*UV~O9ei0;@B%7Ҹ"~Go;jl(lO]vfḍ X1f:ƣuٕSrITn[Z;3,s;Tе $­A>.rD`Ɏo_CPAo<p$~8(1j0S<-(]1HδiWxlMtV$-n *C~n%ۃr
ʼ>r]/m|%?i:;)HMCcpTV"x
YiHW67b}37prfsSEWH<xV7AO|Olĉ7+l蘨ʃ"-dLʘ? _l;/@K	5DŶ#SR9r>m-Ci>*2^{#9Pnۗ7.}D'Ze=iZ'OI#f~6K=J}ak
x/ɇ#σTtdqe4$mWs6|wxW@_|IW>+?O(xLmʻ{hY} -E!uD:68Yq7݄ZlOw8LQH;ÒNƩt'U۶nw7:TK,.o+GD|rr7-.nx`(O2XCTCR7~F"u [xve)W\eG"GC666I
>Mht
lFܿXŭPK
     A z\  -  ,   org/mozilla/javascript/xmlimpl/XMLName.classY|TՙI&<f EBx@x<I VRݶ>mAFWEW#j}n+v׭nWkkuWic] ?L ˹{/|ؓ f]ONlNٜ:邀cNy/x/?U_yWyϋ-8oq/]{g^܈??z'/Jg?;^>TGjǪz=z'=ċqDsPXċzPSrT,5Ql^U<䫦@5e~-=R-#P*QMz-HGFnRFy/
2ZT˞P/T3^5T3Q-|sPcAիJLVST3#Ӽǳe:2C53U
8#q3EZX<аD +yx"M"]f9y]$

hԌGBLnmޱ7
[cĔp{gd6s^>OP/J$b-]	Ӓ(hA8Č6ZA9\z5Fknߨ7+X~{(&pW7Lw=mվŌmpJ`BQPeMN{S`
Q7%nb4OkjGI_6a˘3=4q%
Uђݖ(p4X(pUOj%a[~eo툵+ Iˈ"PjXGKsxg^GnMgѼ!M9~Ӈ"%mKΘJmҵ]Dl	äȢh#J0$PZssuȑ֘I
$gXl
v$H`X5I8mP%"ؔXiPE -9/!(StȟOT'SnQ?moGbfT:xb^٭B]B0ʷ\3.
<=)mNfzCI/JVڮ֦/cH2k8B80mbΦ=T]ӈ?'-)(2)^'
m?I!-ϥ]jD8U\=ıg"aN݂ͤLgteg]j1UNtXaҵu+{ZFXEyĈX|؟Ʊ9H*n?nR
|{҈nFoS)LLG=xhҐ&][&Uvja`a]k5uegJo%Y@"q~O,DC:Cb{7\/ށav7	%nͬoDmȢض.ݪaok:/E,ejY7qv[jnǝ:S04yf0Y.+i@!+U
o(M4j^C֨C|Y4aaxD5j^ýjS"3C!r3뜜!~Z[yAPVbz\lI$*;r\bd!JȐ-rhS}j6nHC.3XtSH8}tH8C3Ml.\5
كWeg0r#{)9DHSӀ4u-O3,YvQKS]lRUDn,sgW(١A,>%+S?(.KE?M ޵%n^DRa`XLH֔E)<Wpeb4k+;u o9(2ׅ"_6Dިy@Ei_zSOxvʈHܤ_@e&^hK?C.A8a+43;#
^[
Ȓ뿵kvm;dwwT7scf{.O>e+A0}X%e/m
|}5Cmv=8>=	ک}|}x
@[1FfO!~#sU2+,blTV
ή nZOKP8=@0>V6VrD %hE&2,\u~vO|WU\ dYeW]S
Cwp]{v_VNnnm>|Yew[k1Ӈo>2NFix^2Gʰ>U_=q
Wm·2DwFm3~^(. #bQlǣ13Py#8Ӱ Ub,z3rssU׫66wX ;).I[{.N	ˎ"{?J#bUg};YDBl7 39\[J6b6c!$H©ENUpd
0dU(r{0ɟ[yt_TFv#ttc{a#}.9~z%:@wQvǚ9ڀDVM|Z:b=}ހЂE/ǅ}r!ޅ/
A!$S2Y	ح5|Ak^%e8xVx'_>\uI>F&ԥՂ&|hVeA3	L|gڋB7=`تQE#|mv.ÇlHށ9KS|AkTZj8
$1ReI7q{j̊mft 	m{7Qݶ85rKj7kZ\/>QS_&+ǐ8JT隁+
at(?RQXwAw/*rQ#
~W#wțr2f493,	ZL%sKh>bokVJo>Aop'Q!1)ܼvsu5gv]ۏM\~337pnՖ,!zx^W^6\3xnO~:۟lN޶CzOcXyj;CI,mS4nd|Gَb*+ńc#v7߫MuIVc]VGv-ȒW}Ys_䢁8kK~dYhfԍ9|]22KOBum(sz/0v{v_&khN`4ߣ#=Xs!^AfGLg^TY33n9~vr3$R!\8K7Ͽ)|LN2ګCߧ'Փz^=C$:MGf9r<ɨ=G=gb Ȏ*.r' X[Ldy"tAd"_R+*8>8>>ф~y^o4MゃϞ+jҩgt:~
i)5N
Ws@sm/w#Oc?cc7sc?V|"~N¼a%	dY-wԖ;(Mx2N`	:4{,
V
]}'M8n>}>Z81vȞۃٚsaûE;JA[vgs_wi{qfI`?2e7Cc;L<lq<lq<lIY'Zcԏ3-ـcn`OxJ6QՉ9	
'/RrzWw3/hc%{pC	uv}eXDX溹tq75Oc4A}7JOKQU^,>/Fzˋ2{074K/*Ǹ+t2|U[\Ҫƹ\ݴ)4l{VVQ>4rzkeQίK3]ZcPiX֝7WRnɄW#x$V :pTQVJ,SʰS*GFZ2e,q.IxVjL&S3wd>+n-2OoVFLOq;xGm7BU/6< ץLϰ4p3.ǳL}IE
xN 9'cd~pO#C3'PO [GL#p&F瘺#mm}NV΃G#*Z?Oʆ%B/'KɥrKIXG
bS#-$mn6???ھd$K[ۨԍ(.43.L]+k|
LIq:ɱamY[bWuügaw
Zדr1o&/MacØ$Qe[wq\ĺFoI/>oUꭰ7t(췾Q,v`I\s:%MHd+e#o;IAفrJҁى6%vn!~l	J?+<hYeWm!ً/p\ݏ|j%to>Tط?{	k>JZf)pZU5*mBuֿA(+	U)$ٓ\eO&\%ʜgYXknPv/75E-u:a965e+ѿ:Sj}veA5+/_%,u%7G7b~K79u:[| nCImDٛ4X<VoϸVFsuJE$oF
U?{~ip<碑_,GBGJ(St>?B/͊\;7{PK
     A ,(  La  2   org/mozilla/javascript/xmlimpl/XMLObjectImpl.class[	`n S $Sna9KX 6aZQjD	֫xԻGX[&ld̛7o޼y3?>a+[
XڃDDlؗY.(QD9sACD$2tÒ(D$rg"QlnB{6pzIwp / $(QD%QoɅ\* M_
hCx>4%&~#%!(i7clfQ<N:%@StA -
 OХ(@xRNІ &tN
 O	  O% p$@xf _"@Ks<eU
/l~>F*8,2Y*㪔2)I\*[*UKZ%W#UjeNDhD%:Q
$SNӤ%wDgJgeD>[rHtDItDv.܅2	xDHtDhD2~#o%\\!+%JBjw]+NJsdEl
BuDUz~,QWUW6M#nBM.'Gc]rJ+_؃3g6i%sM!.?!6::_1dbɑtuRR%5CVljuVVeȢMDM&ybmlrutXL*lْJa$Q_I YT{D-DWj1A Z[/z`5)[dji}Դ]*N>R鯩aSeeiB&bqA\TձxҐ
6hUܠI
Ds^*lmg;b1T;RWi)%єaf'c	)j+[^0ꀲѺ H:8P0[%H);}B.RԑTEձJAtrD^]S?*Bk*nb:&f]kŦWdjUn;ф_wG]jQ@*ߠk κ2Wњ+$ũ`$TV7)^:.68[]6B{6%.3u1g.\0ly8́n* Gz3~|5P
AP5	 d
V_s"ϵg.@؆.5gܙs͚DlC֨xUruE۪ZahU@M(e|R( R^EW/%
1E"Q3.J#58n>\s䫓FoC<EfCEUFoaj*U3ol~7Vj4fֈT4plV<R}d=2@يɘ,DipV^U$UD-QE{oKAj`W YmgHH L͖JTvE72>4eíOT܋]
PMcaWMPp7,%&TGbX(33fъ[:LĢf˘]ѾYn
]ּ||>ۤj0=EdzZCEmNRJ+1ҝٷ+[
lPT[v\Ta.E>c8*!aڤ:Atj]yTY[U+d}B^K*3ueҁϮ`H4`7xۙlΒ]HEQ7O7FgL/*tX/8;!Bؚ*84P6t{dJY5%lHb~H:+c86.,GUDQ3t|x$UC4$L9Da4ur쁢u܁n}́qʰ#`;]ӟ/P?ݹBUxɋoMMNhvY*9)N>
sqB݄S6}rSij^t,Y[Zǐg%bu0~=d u>L}UrnW"/WCdfRynk|S~HM>!W50ܤ w-=,ghecTN5ռ.eМs<W=
ꘜOİf6 )5BN7sݻ3,we<X	c\/3/6!XP%FmB_ۨS6&АX]K`u!`JaN@bXE㵇H4\CՕǖ[_[HVaELdbu1Nؠa<lY+ U",Df4;
-lrk6eZi5/BN8qDDqvmip`S0^:bƴ̈%W,$'Qy@}#Ȫ1rl}lلh56qs)UJLPxzV4`3afvJ(_^8g*ECL6x皛7^2$tHc
wxl\L$3Cߍ8^q0[{+v.jZ]+/c?ǫc.`rutn9thml\n3&<Ȭ55IYƤյx*ݫl\e.a[ރMtMEÆo<DjzVG|MCP?[iͷl:t$iih
ưi&Ͳڴ@6-Jj֦i|
|;yw~js#oJnSgM7=~濪|mZA+maNMڦ4k {an@~/Iuok l~6?ڼ4	?B~ʦ{>Rs޲o46#΢m~pBs1~}ȑ#
c`Ns
Ts F"N}J֏j02{\6il~e}Ksߕ&@zHfV'_MO/VK:i}eVt)],"S6̯*ͯaWků۴+^mz>y*}e-߶y6cswm<:߷i`s$:r!5SL%iϮ-26GPBЧ6%JشA,IAgMЩ6_miRt:tD[F|)P.^"CT|F %DȨ{aս.RdS7?(|E8z!=/xz2Žђ-}8wμIdx̓ǕW:Pjo }ھj̄k9oZ,̩'ᜒWO:t!w
&-𾤣7vqd;ᙱp9w"Ij<!rA#34H6N+e]4t3ݠ,wYmLD[<e9N$ȸ8)m'ni<$r],RN܇rqu͗x8}|eA_[S}]zgYiy3F"re41.\jL [S\Ffd'Șn
NM][ܺ[/\h\ý{[mƥe(^]NJ$?fѺ_`^cyPy\ht}%v5}'?좩(sKDk䎥sb+bɠ(@Iq
6U&_ mP4E~lcud>P>_^3";{yۛM^ϒMOTk23LpWMdmK>蹵rOZS&.4./7Hu/s}b6|SnH-D_e*V/5V
V
OݯH= _?6Gԣ&ݡor	ޓ?Ϧ~>~?R~1~	)+_M_uoo~+7Sw '~{)?H?Q
)
s__*7)𷀿KC
#])n?{fp N5`+J)ppv
NM S;y;] wMwK.hP~*,S.ަtP;M^ս2xF/zSo@N}C}mA2\!	w{%ҲQbtdڡfeW\UeItYoT꯺@PPPP@M9WxR?O{(w.H
!_w',,1N`:$M㬆Vi h-qI&p!٩=HRN<R!z2.)F&بnDʯB>#7b

xri!!I#ݚ6<WmNJ֔&eeuW ǰ" 5i)1CG8SCc6Lic[1֩Tf:]R(VגФ!hݫBtIEꠇ6p7=TPQJ3(<Yf&j9^ǳi;3^c
&sLAc\>K\XHH,@?Ȃtj,LH^kFV6Y2F50FU	sM!䎡cq)LCK9ްEKevD*]Z[6]&ZJ`+򙴊N0*6jj
56fuFq)'YҎ͹;ʕ^Nv:JMRbt֙Ӊn0#IOrӓ]NSMz[tw@gKzEg:פ<KCA&ą/5,y
R7@Cbb.JUUzy)E&<trrl,Z+0WUn:i	,*,wZ.ٮzaw$M޷yt3MQ8~a8|>2)2wXlad	]M׸;.}>]t.U畴8iXXQqJ]cg)f8u8f8L
@7}=
؏tTZm!#1Kݬ[T?DTg?v/Z ?;9Y(抭?rHD=(O<0t':17}r}ɱCK9( x3mv8ʷvFξEf,η5;x} 58 #{ ~ɭ6r`׃=iJKrNPf(^OGn? d02˷DdM,x>xםZIMrs&9Z8 [5zFKF@ˬbVLRUxK~Z3 b-8.WZ-G ]%aDV(YqkB0)moEkR/Q[6Q[-2,Je`.m 4(2A5*njpIAҰEܼ$o8kGawW$9mHkb-Źy7oʡxގo6MDn-y\>
}^垭YfgmTvo(a;Jg5Yyj9"̼q3;GL0]fEa/40^^Fw@ZñƶRGAoGl{>v{[qw,_<s9wʅgU jiiІ{C
m8ms6RxZ( -GY92(CÀӟaw={ԑPV8i\\9
x+ZЛMGKLm#\8_w~g'-mi_<e1·Y&c0|+רF5.xP\R0h</غX=T`-[,
;NWG¥k\H~ f:T!Uvp`8oNуh1lu٭~+;FȚVlɕFh j܂"l'ChL^u|}:#C;vzM4Ulc	\(u5!.Ex	>?{	"L-эj0+
UnRvxb$3z3p\IPgNn'#~OܾZO:}=M1\	uj	6-uO>M\.^\}p(Z˔!ĢV# g^S7^fDB@Uhw8	
ό	CH(+9PgP62;6WΜT" \Tarxn$EB]93<?̉?5),&^ETt[·>W<te3Gü#R>&GoV߆z#IHw7[$CͤBGB֒RZMH +#Ȝ^	D^VJX$MH=y'HP1M*2<ؙH(GH2yUPWdpu$TT{yFЂ-.d1=0W	'q:RgzF]HϪ_s^TKzzYD[5zCT[IzU`WoCP}L/h>V9/
|E3kC`wتG`&J2:ִ}t
g짳8Hr6s܎.\52Nܑ<z;܅|w;ʅ:'ý=Cp_@_s⁴RA܉r>ga<|/Ἀcx$/QGsJ>W8^9ɓxO
\g4>v)+8Au͠|;\}<zz<?8~W9ʯǷx^?9oO\O~\y\݃"N\z8c$=O=Ot=г,]g|^И
VpVa[9p4	G_NP3M:ףbUvѴ qYפ8P^?='? mG*x!''PBSU[Xf
M1ͦ+܅.m
GBEy?E".INA8
°Ȋ^GB'?sa*~zYToQݭmj{TbQKO:y5&dft1ұH =B	/D: /Bl]AH'ج >Hg!H\M1/!]ߘr;V!H!nFyH
Hg"|!-Cztj5HO@2K4 t&(Rt2HeAA: H{"=i{TmjFj/SwR=՛|z|7O3Y}ɛ7|~[O'IwRPEBHyu?SWu{K>S~oT`~GPAqOH~St?MT~,~*%ϯB~8~7ߤoZo*~.{TZGtS0
#9_Ѕ%]_ӥ
]=t5Hn?эnDLjMk5,KQiΦ{tݧ\zHGuzLIݑyL/.Χu7zMw7t!{;'{}ݏ>K=;]L?Ib҇p@}(¤0HGpw={fx
S;ZOcSSЋZMN7/29p~>p?zpp<\x.{J<\;Fzn;MpS=\p=\;íp+=\p'y,wÝ.pz=ܕFp
=pOz<Y{ýpyG{Ǟ{Ǟ{'q8C֓ßGA?+׳`ԟn7V~➒u/JW8C),վphٚ6ՍN2NHr,ΈTw.`wΔDq|l"9tx>dnWW-XKẈ̭h
0gn]QQ,c:GSeeYT^qܙ;TrrjC[]+T,q;@]CV
c!AD߆ͥ.Cp6&K .÷#
18SBUhuU ܑءr|ޮlTg5xKP`D`:"ӺQ]׌]	lb)8El0A.ІLo6lQUe-u5E]܌gwj.nW8YZ4KFdgCF\:X:-U3us6e}Ysi+@%3lpܡ:aq<XN~ /'?QAHHDmfc+R
HZHy#P	3ϧF^Qy#([Z栯z)ErniEҿkk
Vdu
ҶQmj%{o&}ƲQ6PZ.
r55pzjSQ%cؔ)sYJHrS;k;RDNwn0[jewxk8rn&N5WzXG5NGTT}c˩>zx;XW0]Kp-Hz}2]Oit>ngzPKE<_.}9\~*.y}O7le6|]|w|3^~]+6u;ׅ)]чp_e%}~YЯ~U'4D/{nzX?1)Z}__/Z?-w[+bвAjeYclkc-l+j5Vduٺj]au[fm=`[/Y׭Pi
Xd_r՛ g }
A)*|~IȽ	)ۖ_0O_ Pߠ{>*q
<56G.&+P>Y9Ca_`pۙGmn'r9lP&? wq s2%w{Y&><*>3Vg=I_M#hFto>W|O;⹘Ӗk|C&cwvKuMNQpva`n5Oי
@Vposthܤ*۶#V~J?(ϗkWOrs&LN%oӧo6)Խ~bk[}7e~2V&'ޡv>oۿVOl֘6[oon[kk;o$5)mz%-NK~K3JF5Z֨?#	Nab9o@NS,wqqgk
fyvwwM*@?ҹ.ޥj[PMY4	*PK
     A l  %  1   org/mozilla/javascript/xmlimpl/XMLWithScope.classU[oEzmwsiKCco[zI$&v/N^[6^^iy'^xBjPxMHS"yg̜wf &0qa:aF)\ìTˡ]"ޓ*(
wL2v,\\7V3Z^ͰO߿x@ض%]o8,6Mpڰ_-JV@bubin;֨W:@:G7Z[9ö)Kiu~lHeyۅOOF6 S,8MB*Y-ݨ 0RrPیx@. ˻Wm8mS6\Ś
] ~^AYBgnwM!ۜC[6PƧe#Ѩm7
|L͔dmW	dC+N$]f1&'IsdJ
%p`~w
㸡(^\h8Q
q	6
eT4-YL
qGEU51
5T1<kӔž*ںOL Dm.#az.O:/HPU|Z/?:q\rv
gjx0_e?+HUM3$#0q)>ܷ6BO}}!;CIY'RKڦً
NA!HIoC?B};Pb_∞
;H!]P6IHx)9!F03B g	B8>Eqթ/!ǗoR%-}(O-sd},!OG\Pc(7I*x+"FW8'y'_Ce,sOse埮,&U"<-b׹*J|*X!O}D}<s"i3Jd}u6uBʸc!+r?,bJ.*.nTբOIKPK
     A gCA    5   org/mozilla/javascript/xmlimpl/XmlNode$Filter$1.classJ0L;v/h)"002	c4ӸsƕLэ$ϗs7 ,"Z0lam]2`0ffVw*C~HT:dzD3911vJD`cAr5IsίxF2LOI/TΑ龩V0a+<'͞Н;QK{ìb-\Ax:mi! ~sO$gAF,cgfpي	%1"IP1L%Ѥ^PC+5?@QGvˀ:5,){9/{XLDX[/P7}h|IMWGfd%wЬl@j:
PK
     A ?    5   org/mozilla/javascript/xmlimpl/XmlNode$Filter$2.classN@NCP
TVVB
B	3
ӎ=Piرa
C!'VUf̜{w<>? X*ʘ72lHfRn`e$vH"W<T*U&w;DR<MmP_J4Hd硒aPRA:x8cX2?WC?7fd:led<㢿jG@nQS%
Ne٩blQ,0|*Y._H16oJi0T,5@u*݁5@^G}}uCxs<D^ۢʴ0AfnV\Bj*PK
     A S^    5   org/mozilla/javascript/xmlimpl/XmlNode$Filter$3.classT[OA[.R+TXƗMˤmv /&^g1QIv.gw.~`&A1	,&J9nKglʐ9sO0[AسTGn(S(E!
җڹ*FOZCoO]HRh.W<y$L}R"d/Q$HvgOu_ih_'A03g'zWdXn;\E5(X>a}L4äsMFd0t15"pll
-d`a*l^di>L<P:}xȰr!#흭Ʀ4;^7;Nwy0<\oW'D}?Z0LC˕Vf+l')[dt>ZTn_DY"SI9ꓡ'
|>8RY%SZ־U!IL<N:0ڂ%Zi$c#
ZkW?-`+ct[>rD8"	*iNſފ`s44oc48+:E

PK
     A 1&    5   org/mozilla/javascript/xmlimpl/XmlNode$Filter$4.classJ1tNmG~w!Ew T]TDܥP3SoO΍WϤn4wI?^ c<J00la¨qMd?a0w`J_y]R.W'<9\ؓ*"Q< j:^p'0qn<%P9:|3
bqa00\xNۘ?pY}ZЊ\Ax:YjqwUKy a	L2baa_AHR6Gjc`&o:r40hh/<=Nm шP6n
A9>"w+/ Go|i<f|4gы
iz{zB.a*Y!-1ft>PK
     A jR  \  5   org/mozilla/javascript/xmlimpl/XmlNode$Filter$5.classQMO1}]XUNh5~\0^&&ECeiKvOă?eA/d:әyo^ϯ (ƪ5dv`]C-#=\=Er;|Ӥ
eJgRe"aΣH$-姩^;N<R>4H(HPuh^m61*ux?k6nhfdV8	Q7eуJQTF
9>D36׏]X7zYd q|n
Ք]:i?@7iEz-`q
>", B	KTlNe1Z<Yو(|PK
     A dÑ2    3   org/mozilla/javascript/xmlimpl/XmlNode$Filter.classTkOP~ZvZdL7*lɈ_Jla0cb`I/JU} q?e|{1~qI<si@
/%,Q:ǆ,rxʱ)Ǎ-E7qlK;5]kY<+h8ph
xnΠTq/ʙ=)cG9v?JRAc"r~pמ٣WBrD
b1,lݾFߡ|7
찝t6Z~sinSԺ$ЛWovK3\^}Bvi
Fj*'[̞$!uȍ<|+qif[3Ӷe,03mGh57@ەQDLL\8FqT,6gc3Cum:CqELEJ+JU1\"L8tU
!#[FE
w;XIdc5!W!Dz$ |GK x?B)z'EXU@]bn86<<UX(*
wX>bE ( ܡ09ʚ3'Bd-%J'(PK
     A X  x
  9   org/mozilla/javascript/xmlimpl/XmlNode$InternalList.classUMSW==fvS=QDDQTHb6=VOcVeU6lݰIˤ*eO2T%? |X5>;|=aLΧd
-(4`
Ӳ`M|I63F5p5\w섮:a
+I
~4k{NOENsnwrz-5f%ߎCGȦ \ʕ9V.(w乥;^ZɛJp}7 gq\ߙ^.-8e{&cr̼9o{ES	=\vzF:=QLa/.jz_5Լ1)7չsL_蔂2`|8³gVp n9!u1ŏ;qG^
67ÀGPharٕM_W@CMaAZ)[rPI[_E/.,v$e&,rSX+uQ0&<$k/Eyk`9,:g\U3Nڠj5tkhY0?aLFLᆉak_}8 BYxDM,~j&p 4Hhz}	g5z11ڜa
+r<,x)KZe>*`Z4{A7VNw@; ]jiT-sG@A|+彗m;].mfezЫ(4g	a}
=u	\]ǒ'N4.ȑ¦ު+1	<e3)EL/A܊!`C^)ňef9B8ٙ]C!lҏ 
:}H~oY	0eĎjHSH'iIo>:yDoӻʶ1~L`)#A8AW78ѱ*:)ARmS%yNZY؜a7d8Y
XC8cX)5;z1.UK$Hq*?`
>dh?D5еJiu]Vjѷ*i7V FL!jb8E㬡h#b@È㼘%qsbJ"LJt+kxLiW7q깢F$6hOƧ;>0{Tc4k|S]PjeSm؇ PK
     A r1S    6   org/mozilla/javascript/xmlimpl/XmlNode$Namespace.classUsU&M馔-&	H)PJCަ[6a
>?(ԑyܻ$Mw{;ðP1J\cBdQ\Rq9)q>fU\M`'㸖@*8?RqC?-<o
P#8Lw-Þg3

#%
ǟ5
o9`6ӟ
byF{e
1mxʗBXkٶ]1nZe?Zb^+E[8Ne/Y
چSN4Rq-1]nZf;#:B;
-OTܝ6l.xL hn265歋F9<ׄkpOX$flª_
plh&X8^֒/<G_pn)UŲ*%bDF҂aӶۛ)Bj61ψ[N=7I-_f3Aj}0W8$yNl p´ËKL*Y4eHj '5G^)Wm^0aP)r?jO 'eOy2b7YxR:TRr SEN))6efűHȯ@>KRXk4kX]rC;8L{$}Zѯ!zj+ܤB&RvJ_ݠ\
 ;)fs/.Q.sd9д%QO+5T}@ZRRV^]xi&{-s*9cd9@oK@)szb2뫸X=:֋ǈf
>$Gx`hgYz$%Ȑ]*3GAbpv`Ip(d	!|Xs$OhejBfY$<EWjJ""c8-dDHGRI%&6Z`CRqE`9Y/ާHR'-F>O?l8:m]5фHYa+u4C"GntL2h*bSC#]Np4ĻNN=G:#"LV!usCf*ҼvS0_)"2$&6
+MFy%ܷ1x5Dgg.Nsu;7b'b/f_!ľ^N&Z{
]ˑGUvѢhKleA^.XY.^kRaC|դUSMYכ;TzGB3M7En|Bctf
J0\'b,Q)gG m:~ŎH>&5d2&\gWPK
     A n3    7   org/mozilla/javascript/xmlimpl/XmlNode$Namespaces.classVmSW~n!YDAk
45RCASC@ MX楻
7Sδh7gw3}9w$a
{9{ys=w~{ڋ3ʘhqS8㶐Bʴ/Dwa0'c?p_x/
%1<P̏d<eY^`hu.ZCKRU4T˵OG˪sp2\&r2F1|ECmyTiA*(fS1S:Y|sЄ%kU3	UO(\N5&tnBp6:Bf
Vx#kق^	 ֹȲb
XaIRq|3Uy~}1L(`?jl^^)
ԿthFA9d=V|\zqqʹag,자Hh>zpg8ޔ:	ryQQЃiJ
bX*㉂VhP)ñ2C_AyI	2^_)O`Cs)_aZ(x-tNLԴEgfR
n
&wppn;^T:ooϖY,wLURCP#u2ZsPEoΝ?"UȲ=ؿT[ǣU6}wcë́aEsr"X?Im.	s\/RfFnBHȦ01ڤeOѭ]Rul8G/3w?7޲sM4@^M=l%\ 6]CG}dW!. B»h)%.FǮN?O	-n̓U<lJx"nHȂM0
6m,VDqa3HWO!;S
`7PU+
.U 0P}pm4]'Óo~1NbS/~N	o0( ΗWHhgO\(Ḑ$`iiBvpWڶ+LÖ1b=B=K!v;6{o$"D_TŇǘt#*?$8)c\?
E w2r?}^mnPK
     A l.  &  2   org/mozilla/javascript/xmlimpl/XmlNode$QName.classVpw.G$r4#VJ	iC!RR,qGRDQwҪhJjIq,qu:֟3Lv7妓0fr}{?v; aBPxP2D ix|׎xHPqNP58Ç|
|LyG''yfQ
|y_PpuN1+xB
4I_d/eO14WdCUB攕5̜^_(Ғz6%tд{j*A,=ԲY=+aͶTf L1LSkDHi$f|ONMylL%4W$RԬx1:Hdtͦݲ)e~f^5W#WL3	K%=ZjU{"sXB|}TZv-Y2\V}9_.cP}1,!ءKߕl#YPmJy]i2(iA	tU%SameU/e4ȧbj[J읎wEC)Jq-lHPn9{rS:e){PHXTxۻ	ۻ[߁mR,KlqJ̥wxDXZqvSQӯr]*-,T)b}
N}2Gͯf"-D%㌌Jh.Tլnoi֗ԓe]LmzI-anks?m{RLB4UOmQ$"	@)mUᄞ檔$6a0A5b;&Y	պUTc[T8LSMG bV4U;i8_Ϩ:AnW;5Sp@&	8=*`LTÈ1"D:}>6-/༄% a٠m񡡡֡|fM[[Ʃ8Řq\PqûT܅mT<ŅHY2Rlq|5T).VQ@9g]:J"`ր=HNVB;kɣƢS
<'Grd];tJCz9Vv	#6C%p"|oV8}7
7>ҏz#S۠g5ntm4;A>zFWP
I'Q9ސe/N wX<X<coB<J8'\FxSDa״% a9}ߎñ%-v0m!1IE✃]HAt:b5$	]Vz*\s/Lս1TEi0Biob YTZu@չ& p$Qu#S' ɀ"cX4Rt{ wSCRwikb3ŮbIރ^d~g_pOX";U"bi,tv[GG(
a7D/_op fᗕGG0J1,=8B99w`D~<ԐL{4E/#^B`ˊ1O
^B{^INr*}gtIs ?- BϺ2Qɋ:uJW:2\NrK)+^=@oW;nGX&bﲇ|Ԛh1^V_6]@}npK=2OڛμR}C+̶٘[y8	ɇK(?B9_e~+ů^M7EߣOSa?aH_+Na\	w\?C/'*q)4SHczX>ʣ$q󩿊:GAs{`'Ad!R_eWQ$ܹMLȾ˗)[(Q~P1Vp@P#Ef*ctcUP^C>yz<z&ayHWt,DqPLl&Α8|ePLϨO)<RH;PSQ)U;);{(ѽ;߽ˋK(zax5.pރ+-@ϷBPK
     A 5   q  C   org/mozilla/javascript/xmlimpl/XmlNode$XmlNodeUserDataHandler.classR=oA}ؾ\H>GHL0lA
$db}^9n5*$
h7@yo_D܉n
BZ%tOB`wdp"w=ǲG_&C}Km3̴3]˽q֗v_5E&%ZA]P˯3G#x!򁖖!si;Z]c<3Jk;QVi4/ygIap	'Ϊ|>y?k|`2)ψHZhcV~3O\ٌ`MêN0Y8Fb6ϕ".|bCÓie+'M.2<	'wt`
:҉V0Gd'edk}%]AǓ,"YR%M4p+ 'e\	dWq-(VHn&i-jxWDA
p PK
     A L]i  F  ,   org/mozilla/javascript/xmlimpl/XmlNode.class[`\e>+ܼ&IItfE郦iJI)}S\4c'3̤GѢ(+]ׂ6(cYEVvE?wnSHȝw73|bb]B[8.~i%||ǏΔ<pZZ"2w&~?nyi]+6NO^e7~!?=>OMAGǇyG}1?=E|"$nǋ6!	y0}}?Ňuliy|Fgs~Zd	t.eyK	-/H=>>\ByyWV",;L{DZ~*Ŀ&?XCE|Tޯ1!1qY?,;d!Q#>>!}O;1wHw
ǋ>(s}K'	[~#tI{>_׈~ ~(G"cyDF32SiLxzVZ.K?(y~!+~)M~O9/?遼A<^ǋ>{%Y[YW|>?&X<M1]D4Ѵz0Ļc錏_e\&e*@mN3_nLGS+#H/.+7ESX2k%_TڑL3DfS$>?fjӽmM{Osmu1iG;[gRL5w۶}C6^smt^TҞmݝ:Ŷ[]h"%[X]eK,RǙUx<*{SL+FcV%;,u%g,LݱDt`hjCd{<셢#P7u;f,-h	D"LͣgߛF2.2pHȀbh
}h?9ٵ!?tb4M%djbrt1x S˘TtG4MHy$TXWb/;(EpsM{ÕFa2gڀ B
kFMXȯ_̶gXƎYj5WR5*TJG3]qi&:ݘA[{ )kl@ 汱:M`u1$3$Sx2`k̮>yF!w"ٙ*-Ӛߞ޴^1t:#;I)	b< 66ݮD_t?&gP.JǶ!^:?r$i
hroTQWO̢UIbӬ*t_lbK4D{$D2T~lG,I$Sx*	Xɒƒ<2ТPjibL$IB3F
gMG|W$يЎ#-
>аԓI*t\kH_d;P> F1&_4@xQpx\l`F?2@0OvB_pSF#f")P	FWb=p2GzN5"}ւ2"
;Ӫ?ݽ(b yZiDkK~^cz̶wXX#oû4Mq3{^lGu
X-Z-'C<aiuS*:/¨J0^xWqfJ*Uc볠}"Đqlo:VRsazSVv,gEdcVk
(d1#W85vέpU}dk*oO$ؙM]L[GS|?C%JyЛ>9
f0hU-89	'RuX=y`C,ːgjvG^
>Jj]c}Lcĺ\@!'1rk].U$&[kbV^DYpǽLreV-FhIo\ 듃(\EIΔP#{M?t7!.tjflW<v1foУ&=@_=zijG$HfѦ,&ЦH>c-wWɯc)O7
9OM>M/idi4܆ǤG5|Qd3I?gMo0--v	4L4Q.
yTz&/Wd2s[S4FiT5;,5eHO_M<'!ӨR *4T&lL8ݻKP`IC<ːvR4饼~	MӘ ɢoTL*D]BEƧoL>U|ESWT.3ʑ3eTybL2<d<ӘjLīRSS<ؙO7Mv'OZ+kMiLhSb070#hiӘFבwqF`xrXIHXM5y
3L3rb5DԸ+hkmݷo}sg
sf͚ժ¸W5Lc1+x"D]K5"Ƽ]LY`.K  ȗRcπPoe+itH,4:a,jJ&\sr~^U&OI>"X<?K+V]dzuJ-cJFK*t#[׷oq@u[T䣔&R'qKgZߺ;EAR_/v˛[ߒDt_n\Vq(}G\Yϴxt${/;(6R4R6q[dD}ʋ웛&Gݶ1-<d/{Ʉ>4o-8Q۵3LEuH˽Vη
LgldiPdoٚ.w赴(wms)]ûyA.ξľ]c];}	
je-C7dUvTO>.[rknau(=!wHge $dJ5vӺ)]E]UY+(!Lɩ7*a;wge2͓OX((u^\Hs/{gP<,:םe¬Xh`تXzc"=E$-sDs ƳbnJ!|P:u]mHZ!\J!LRUnLW_O4Q+0OLIMtA>O_{>LD+޿D1ovW/ʪő/^<9J1L.GT>U$gU5+r~92k"ɍDB$tj)hkZzN_NȚm##!*9NˏR	'81:ݡT#0XwH$p'Q-y&UR+,w6M9蝇|G4G4S=wF}
jߤoY;ɭ)K@Q*;mI*J}CT	Qe{C;(PfTSspgƩ6_Iչ[<qA|Ǩ.'2M>-j҅4)LF+i9uE6CVjYg	H'	emi}v@ }z!=GJCD?7T\y}>Mg.OOQ
gD!%k,.Sb]G;L.	P(q5+Adppm?UjflMi}
-~=_jg
Ǩ1;|4qzyY^HPPTy]C/pQ:?x$w.˔x!@A^T^}I 5;)*i9xK~
:R ˹Ta5o1BBiBCma`@Yh
|mwHޢU{T/~c^
^L=HsAXsCVM_^Z)ˠ4BFtrZ6`@	=#( / 	,CTGv<Aqen1
 '[tt cC>4<Yf`ݮ
!%TjɌ{p
~@QZ|F拏a-}"O|0z Vkg%Ca"/W-C9yNSuH:]K$dxʶGbtg&@qw:76x:F\
M3Ʋ]R6b2"R0Dt-tet!o0[}+쾎aZiu}"oʜ0DBZ8Ks#4J 8aGeL_D}	^>$/fDTB9wVGOuUUUHَh(E;uw0F=/.|&xy%۶YsZO	)X 9;OH+ܲn~X'@l: L .:ֶ1;ѷs
g-/ʺ8BeMaVXC,tMm=V/
<t)#p.[@u!
mӤQuھ־GP9'gp,lюP*Z	VJ-%iڠʑWC>.}7չ5W\@WrZ*:E} |U<NXaaˆA_pR¦d3eyMpG$sB樱{V Eͥ\7Eo2	TUt߅߂\Z/"F_@dbp:NӸ؆Pe
S ^(sfoJa/݇BW@Wi^kˑޭs\	ZQt
%6Tj>2
FG "Y.py+az@IMja(=D<Dc*
ZѕC	+j{kua.Ԡ36_ot
Dڐ]87xasm.^Cg$ Jo(0=Ek \	=%{~?\-{f*d!(W[c<N)>}kՁcuhJZfד4v4}ā*M%`g8ROX~iX%3}O$5s!2Q?JێҮo K.Jr8HnLp".RDm5.I80́O,dA\`vمjWi7.-w u}W
zYdliJ֒Naڝ]<O$?hx2ĞBy#UFmv$3(&cY8gT\N%ZGDڞ0U*nzn&4۷)	&0dd٨WlLll烉
3#PXJ	}F#N<\ȴG
[}.sGc̫xW#B7@[z*g؋7i3sV^|wFUK.i|=ltrEV*!jZmS8+dG
("[t6׼ٖЁlT{;VMuHNӮXnUJԖ7Lnԛ%b
	ǚTɁ
 Q<ԬluyI
w`CV+-3c4yյikFj>Zj*A)
!>5aͽhҠ{Y\jC~"0`#Q|hLkd[)şkvFt3n;"%)>@WkE
s .eFrD-7T"+9/<@er4SY
PC+*7N:f(Ej՚|' k\]%-WUWT'	p=${=L$[BVr,EZ_EY+KaTкfCk\ZVDMeBߓMVݤ\OO(,fK]XWG2/2\*`fJEܦy٩KISH<;^QPሎ0GnG Uʆcd+c/ƙ.pV@vXa9BeB~[?y[=PE]OP
`^v&To^QGBw`/ԈKax,{"gh<XW(x6:J׵'i.,C :]A٪bX>|$|U4gP.SAKz?]
?!UkƙmC_
 vjiƙ͏')*3r\LΜIC-cwh;았zǣу{V5&Q)w4_J@W;&UP<"A4`J!s>x<UȼfxiqE
|#POϟQ.俠~湁B6_<8^ɐb5wi)ǇN)
2f9"NG0vj)o>JrWOiݗh~_49w̕/SC=\ƣYJO>D8Gn Ӹ"RC
>i0t8xi&B 
Xi[a%	+R^l.T_^\8	-p|\o-rO	z-Rcq::Æ
%4"`4\cr<#	|ˣt4{c

d(hT\s2pDMw\}1Ζ{VbbK6#ru%&MJ~$"tK-|3+=>~n;R	z\CDǅCY]^tFF=F5&$|ݘd')(w]vX #{ )x݊0m [k:kJi#VgSM$v]X҄.Z`+Gz#DFmqDDpZ}OQ3;y 9a#[Ⱦ['.fS1^jJ}
X	Ȥ/}Q:(aA'2N󒁛8?,8>ϘO5o,)" BbRnԟO*ӗ;3x;*m'	#oȷrߔGyex
׍ʌ"iߞOT#D:<;nJw	QѝOc3",~??w7IpyUǿPPK
     A #      3   org/mozilla/javascript/xmlimpl/XmlProcessor$1.class;o>nvvvNFҢT̜TFܜ"ĲDF~׼̼tԒv.Ft̜D}̂ܜ܂}dsTx<RsS@ZsRKI0Q@ca`,l@jA
8 PK
     A 1(Z  c  F   org/mozilla/javascript/xmlimpl/XmlProcessor$RhinoSAXErrorHandler.classKSAO$!⃇@@| <-cRІ&3DVnBZn,ݻXw:<DE3; 0I:	tFO8\ыpя
5i*C/͝E!}s])ɋ?|x];cHv-2DP3k~>,_v(R7YR0>Cz鉥)=y+FurRMz2cf
qƟrߒv.0Ys)IɎ#z*udhO*$>/3K:Hx"Fuc"R:f4\cLy`1H{yivh}a:`\xT

ㆁji`Y
&0aa/+L3fk
vz^mL7m{$?z{dWFH3Ovn$] YZEVb8n`gYmo[A3Rɽ{썤+*k9@Col 
dp9OаaVCG`4PMs
}x"EF1SĤD䣒4Wh(
pP:^)yQzj*z>!JXteo8/-qhQ۷c	UMh*x/eV?^!se8͡*sݴn-Q%ZK-4oz+cbvQ;q
!2Bw=&*]y
PK
     A rD  <  1   org/mozilla/javascript/xmlimpl/XmlProcessor.classz
`TՕ9wf&	!!$À Hhg 	HUa2y!#83nֶvu~Ykb[STvVmv[nT;L@w߽s9s8hx|B:ҳN
rw3H41ǹG+N2;epc^y>|m?y#^k:?sB|J4eʍ$gi>gf7n~i7B|T_Vi"Uo+kEt*Ksw|W5B;,_=m/xM<6lu}}(4l=i/G&>Ǽ?O#OyJvx(S]!h˿s>?6/˿dxeⷲJi/$;ɾ-^W~M&Lx]zo44"I^h
x"jzodES_=u\z'wRzPl(e(Lfc,f%GCɤd*[뷮L$5XGJ0$D$l%xlS
&^4by<Lb͡hy?󟣅L##;c<mR3M7$a+v6bq7IL)?o銤dO(l1$TjD$[cÒWndruĻ.]
5\
hX
≽K<{:	,ZJbI{KFw%!w
"`8&lvY
xxD\a]kDa+zj/^%@ݴVCS<3FCA!'"=)vGS'f;q%P˭0t=V0CTk
s^hjnm(FJaNwgНg'X*H
&70pjSfS֞&z{p}hDk*̡{V6NCy 	Ϊ3Gj̬
 B۞艱<K6rg^DhD`Dx>cS
74L ! "HjxXE%
3Kc+/ֲÕ2|Jft d72ciHpW6"&\60Phr*MON~g 4"ݶXЛN4b٧1px_NJq|Sb )_X׊xsL5C?&6s&@hL`>
4Tٛ|k<?:ڑ\#	E,n$SK4Z"[ f6E
;_bJO]4f(Iތ:u8_]y9&/ w2V}- Ƨ\)ltݰi_`{cM)R;SmL|VGYfro,e"aMɛZYӇ$q<gZBݶCoJ "\%C0P!Dh"CH?bvU>Cڣ5c˩EAe:4/䝓-wA2ޛwb}s$w'x	QpZ6[HXI
sЎT8OW#FJC=V}
t{SNs0Ҏ^Pz|9lZYvMXPfH>i^$57=qd	ibb]w"x_8޳WXwswR!l0z"r|qɺ҂#[! Hޕ!-L|#N(3C)
vSRzYXUH:8&،zLM'gifi1G2b[r2S
UlzϤF˦*
5ê̤#t$GjgOg&=G2TSMPeioIЃpAܔE]TOmPsgtL0ГSMRM5^fsv'A؋ܧ *l:sP,OU[6gѽ4c$WLB.k(]xtdJ;"P4@H!:0|0b #x#CP4Б 8[SsF|X`(,azE0j4mhQkg(Zة }ZS{V˲Rb@kJ9&=L3?E^/i^ߢot4ߑO~ii_DqS͠LuiYj5TUauѤ
T
0U@1Usf
)'RVz-*5L5_k<Z(/R\lN*47C3bV%Y\\ƒK2"LCVX?.38:ޒzʆV>:iu!8ΦW
HL\ԷB$MR2jbFeQEkE2ڣB\,{;'*Bx2UYUjTZz
6Ő$!гJ=JN!N'gu	PhVՆВoNbWݑT 5څlsCJj6-R"/R]SmUۜs&II,`!S]> زEjLuTI]@8*$.KLV9n/&slEDSY õ¡nj `NriUwv;#טK|*rTQmZT}0nrW}vi8xT1HY_S⽱,S-E;<r"ƔSjJަ+m3.
Sim̺<3wRq5$($>~wH.O3H3 CTr{;jZnlNT{
%WYu\J]bQ
2/3,+"Q9%Kcʭ6ގ޿TϘM0>Smps+z^Tb;S] ΅rzzt6r5SYeފ'$ڇNɔY~CJ.2+CERN+s
q\wa$PG}bʽyȺ(&GknnݘŐ=]WSH]Qnnsu9у?)L*/+Xrڛo$_c*+4`~6LE_ҕџ	}5};<J.H3؜-/fZ##q'Gt5gqpwHSR<pNYk]IWyZh(ϧCl6ё컮12;F0CiIQ͹31{X!W%{wxDFjL&{ۓN047qd_<a$"G)G,ۧ_^yq^°.]u^eBm/wǬ`5AX3CO5$}c|
gEv4~KtNLN>Ow?Tys*Z.ݯЃsTyP?Gho&7#VG\u{Ur-OWy0\p/Q2kJȷFWɄ~*O}4FzUm^uQ璉6Rͣ@4ZH3iͧi	-hRz+l8=A?`3GcD#I(EO{!hAOOZ	3hJ?2 KGCҲjY~mjt|:D	.{^gR1<gR ""J2h
zMH%7aV،aMCZ
/bW\Np`A,jDCW`wڂM4ّiJiEMRIc2MӠ Z[9h1+nLanż}a ^HK((m4#Z~]7y^t$zˑ(RO3`Xl~y/ͪa
[=.;1`ki$[@
Nf?i:}8[a_uUjuqGꅎ2檴%N2跰Y͒#Vb<WATIS-MMh~։ }gt'(&?1mO\]9,9	ҜA>=-P0ƞ9 G+`.-i>?ZGJ~Zri=ZGz5ssi}9
pBuVO9rΝRzѬd.~"7..~2ɻx^g.#.yJnxí<x?B%l-]&I -G%#nՓ;^⻕
QYMm9Dru񡓏3~?! &9	44ka
2fџHt {S_Ow	7+2hc7\sz^-N`O:&:G⇨1`_?-飺j꣥Ճrj}'`42M<٨'^c
foltkE#qBGB-vQ8Hi4 aT˹Ʊld6>e3)v<L
f+ڂ
ƾ0'?@+>~4@$Z
7h3.bGl.Z</L&36B}ftG#C;PWrG5C1lC&
V/b@\5Py 0@ke 5)D`*
V/a;{4F'\LaNzSϠ<Y"Csv\W|ee}r
<ƍaPdTy
9Uʷ*54F*X[REZJҋHg#c8BmێЦm~w?m-}VGmk~l_0@`5 ]ȡJRF=rYL؁8tyyB<Ϛ3@ba*0mTTQjGG43۩4ZoQV=/pi#lk:]Oѣv_}ppVQM|=]!Jfo l]mt,,"ZL:ZKj6p=m:^AUt#x=ox3[8</|)v^;"𲉣|!.}l(y']|3Gb.֞r'ʄ/{/mV
ph1Kv/c)vr[wy-i/<+ng<xnxJ3tPdmn]/%>gz/ez7ȓ+?OYtaqrrIqEbqα';(9P/"<	|C|@pON
H\	p@ "\-Y
91Ԗh() XMd4ʴ
.{{i,_8⽚?Q! ծ:+ITXqc/!q(*iWTNP|84W 6@6\VJKzk=pݥ{h/:J?hw>Taݩ#MhhW#Q֙@FNOE'~F4?:h?IWMc&4mSo|Vi#~M bUHW=($C +Svi_`(<p5
\' =`ף	[h"6\Il{yxTGW7[PZqE5-kc C]zb]T%0	Qoɴ>sB fy{G98wDdUi.	>eD[3'[HKy2h} B3^LQMYa"P=c0-0*[Ӈ9UgTAZuZA*uhe"A
};4uhw4jLTvsvf:3t4SFLCck:5Shakf5DAT$tmyV#S/S{c39ߗF\VCJp+j (W75K
j\* '5WR)<u}39dn=FXq
A,DuiHQdC
{
͂_笓RIMI.@)Xy0Fj"u8jSS% /Ƕ>b>DE7g@Igw&Cfn4xC~;^zBi 2?o/EK94j~rf$v 81?8 qTkO YcOu3H~Yi/c+oo_EzKoK]x(:vÁsM8fm1[x6O&{`q>;o\2O!	*uSĢѨs.yZ	xЖ}
ma"l!mmzHg>?{2kZ-V)].*oB.S_0dnE
<bˍ@/裯Y՘yYGro} "{ճ6ZoBB_ORkc[sغi?30d>'KO7U&v|Aͭy!>Cq |PUd#x&-s_cߥ71{%>N`~bz\)z7QtB<Byy*9/P&_Fj$Plޫ{1P(msr6L= |!58$/c4Jb6}6a[\]~-f<yVfPYN^ki}|8uJ!@cT~~X
d
U#{Y(pF#/5z 911t.]74X+/SEQ{PK
     A Ұ~  f  3   org/mozilla/javascript/commonjs/module/package.html]Ao07IE+JVG'l~="hf?f9{6O=J-F0d&ES|9Sv%4Fߩ#:aaI\lM֕-?9cxm˳`	-sWvEk4GY;~`)JU?TZ|<=`XK=/_#EX^Z|c)g-ʖ[[[>2]Quk
;
'B^yc|6:XK g$:U&8
_D1Ф*JS5lR&;2U<')ҡ804aʱPD(%2=/PK
     A z   *  <   org/mozilla/javascript/commonjs/module/provider/package.html=AK0&Q^AXij$y%yefWK+YEJBjiQ@7RI7=6G^g^(W>XXd3""psS
n ;S!z	^OΥJr1)8KT*E=R^Yr*IBj/PK
     A            !   org/mozilla/javascript/resources/ PK
     A 
  u]  4   org/mozilla/javascript/resources/Messages.properties<iܶ+P+%+{R%,ۛ*Y.c#..ZI%Y
n4F_;wշfvP~P;ֶ5՝zuƾ6k;ԃF
ym[^ր幭M͉ԣJV_GեsjzӨK;l:QvujtFAmaG\y(`;a[]fmQ?^in^uvj߻kDt]֍mC`|;vot{^<{۳W/<{srn]-jcT870Ҁ3 |;T㉺ܚިЎ\@Ѐgj՛K-pA*̕ƹdD|A0}Z<H=!V0
{A/NnQgt]C7ڇm͖h[a "Vq8#Uo<O|n)jl[5
j<`8R{vG'.;2wB|vv:ߴKwAFGsoxGpzwgO޼<{z~>uQ4u;wl'"~lmT?v՘~nob~(Z=>';Q/'εwX4.D5zX?k%j	eeT̖mKz utėfWI[o=+]`P:ssn>  @: w):ڛa(]݈LNژƫ?Ukq6B8PYW Q0y6gC*ªL>Un˃
U5lՈ,a[}  Ž,-xD$$t_X~,/̰u
Je@pFO3GN#PrO±N"
CۉZNKsj?Dp6fmS@-hF<d`m'=3'DYtmRa]a/N P /ipQyX*PWڶ˱{#<uQ5ѧ2J7ryqw=*^	"'T|
pRtKVH,JTqcJ4xle(yqԸ*GBtLWcAQTH_v.*l~Gr
TǂO0j Peכ_Fv81k	鼽|s׉@v KÃ-!,Clm.ٰY^9PR;{MVxk
lG7θ>0OEl&2Ouw|<(AWP-2j<ne1oLO
;xmMT?Q85LѪ$z	j|ߺn31L]qFGo{4,\*kYx7SGfdGh7w[cBwנ# :e!t5pp
=&`.@M?/VzQ(JeOٹ~.nf&$mIҒ#фNNh]_ru$ e&6>ԅAvzn
4~ Y<pDIIFIR``)Ibe\YIy,AS#@:wCR=T-n*\6j05If
:{$
K[O M
Lwb;]h5t 1q+"ɾH;U#Ux7rp%KO83aG/0 J
BFEf<=ml 䧼ށ5\oeC
UפK%'Fx
WBd#mVv}Y2GJ^fNrIKG9G8ʑJXz~,g-I@wwe0k
?@W4>ck요@QW2#,px$=;/Śl%zc{
d|kGI[@۽p?MoIi$}kkt7 ?IclVԦmI;-Bww jD_ 1+geq: [Q&ߛ
Evq}J">>|Ǹ-te#05tb<$}EJ 2L:X8]fp|-[%g`D {cf#!~փN6Y:{W{4v('z6cy^ qeD$!Qd"ٞރ>
ԭ
HF IPq^3{+ si$drи֓

7Jʷ R!YF6-[w.(я* CT٘$M(	^F=ك̐
x-|bGsj>:L+ W5^WTP(qjFLsѩG6)"l <aS
ZFЛ̨h1vК/"}5fU,0/NS^$VkqNlS8:Y m:miUEuXx w-*q"@ Edth}c~z?^Ԋ"' X&\oD޿$%<bIbԀ7LBviFspLZ]L.#`1jvB0E<ąSy-{/sn
9hz
ߖǼqg;a&Q,bhjц_z:ǳb	(S{MфC<FKa%^-V!a
M-ʝ؉F93a(f5n6%/Osڵ8`ϐp3
W07!K!$@~b3aM֔AQL2 q$/Cg@:$1FTB-*L:
mS"7hxZpbP
_M0Ҹ6$^S[MC'xq0=N``Fs`U}{6k'8$ .&P%NzL"|GlqjqEzd:4Yhdk}9F>1̎V>џǯӓ.zm^ O.4'x,Qq3ݱNyH8(͡5^`&A/ $+28ʶ3|*=ՈKPKPPtBpJLwaF"5m.
KI\,؜/x`$c]&د$NkoÝO	_FMτCɈ&̀sP`#="x|L
|M=8Qȁ$$3A5^k 1z	6ָ[9z
dH`lQJW0"c|ƟG|DDB17'sWe``4)׋#zb
I
ߍN2XK
H*alEOnd	fRYE6i7>G]ebn$f01Յf$CLGzp`v)zQ:_cxg!d*^>-#nzœh1ӈr77-E#ZqJ?սwȠbPwVK%M n4at05y)½[ϏdQ7EqBY?H9,fnfE'ZCdQ	*q*P\q4h{SKejmSz &63~Pǣ|kWv8TQ [ٍnvsօ09@*X)2-&MR3T)#(BgL"3'*j&&)I)JW[OC;
-㒰*˩CלGT;)7Cz12_D"pL܀uQ{$eLFWX_*iȮPqd{)\n1,t<NE Kw8ݼ-|ώm!}rHeSw:ͲYh+	ENReؐ"kȥK0i|4(Z-"RU&}%˚Pq⬧x@Yu04\`.4ZvRV&~C)o6YAC-r%h
8asaE
pbV 3rPTc.IfqR+ӒtZy+b*r͌e\XD:K-:h?k22ֹ7"5TxsЎch2k<,BǬ _6%vc>3Ga'ghӚ* i5)_coƅGrDWd%Տgz6`j2*$A6B"w`bjH!7yx$f):S9PMjN6|ΨNAg=10Y,JE 1O1`NDRsW3ӞrY5/S0t<=.N#~~ oh']Eb;ܻvA$=PE	ˏР<>N]1ua !װD r/z"I-h;H=5*;M;rXp{+_*
}p:'>tPC	Fߚճs\2JL#MۑWDyYӕpjLEAJJb̓UTXdlմ۠_y|'<pm2.!7jJuGQͭ+!4㥪YQKrG3-Q1VSp٪61tDE"̦h9ų9'zDl5!vA}Fd-DN8
Ud=%iP2 qgTXŻ'zW	w-19\P'3Tĩg~Y<*29efBe&UN>b^xkɜ7./pBo a<n&txQTTR)Wu[vV\o@AOà7;j}FAl;26n˱ձBmHn"p`)&? z1`CJ+1NLGAsm7#nA_U$L_Ϗ>d0J(	řhń䲏fiqΌi8<v]yej̨bЎ&V~|_NPs;F|	l0A%DLɘHĿ	qdGێAe_DLmBLEhKoC$d71s]ia3	r2$n	z2 Gӝw¥09
e<|MtHRѡ̥ T)I7XǼYF\,mP98rG9zucj,Ƨ[^3!/P|+$tޥ1	hRueVo~1ʐMNpRXPu e7FV2ٿ^yv`}eг*yGz8Rs-46Rp
vMcj&6P{2 5p?ݚu7ѠbF+˃ݡ'.SuDݡTkzHsÜ݀LLIsZ6[zn7mm^*ywlYG3"'
K{R=Evg
8jxcҍ bL~i 
ѹ~7=>,>%AgW)!_ʍI10IpşlWGx!_X4_NN<*yl'gQes7W%y
UT"K+.:hO%U ǯ*S.CDHJu(^,5I'\tH,rV&gk>ۑٿut7KϮ<Wiw|%_dl6fH;}SCK&= '[ l
E9)'yRRFA>F!,ZwqElv1sI!XD]lTPAXzE(hZ xI9'7D9FAS$À^惍)yz,~^7 J!!l
΀kKŸ<~uGod/P:GHWs޽9f*teA!+6{?|Dr>{$7Jk𡘕'8Ɣ@
b}()aMu"}$&b;n.3yc%?u݃X*3QeLVXcS2e
6Y~n6OjKX/@h/U9*O #=1NenB^ RUu	v1eؘrɢ <}8
'>ڜ!7UT8++DN>!0\HK
w]٭\TF+:MHU"YLlD8%,_VW]7BzY1 Q?˅*9ʔxAf2}mz/5#xЌȨw*~wz_%0z"kRqD@@f/ۤ>E
@m~.-!}On,V5'@Y/qes)ț"Ho@G
Ʉï][혘(sW~"B@b4cgaJ8QTe)CFPK
     A     7   org/mozilla/javascript/resources/Messages_en.propertiesUAK1z-ѫ((
z8m"LLZ;҂0ɛfrI#^LP0*Y1f몏i50ed<Kwچ/XdY!:OʙoCN]Rࢼù}we!ÅEcRih#.ɢ>!PFɏ C4;=I=n{Xar!i9TPη<
#re.8{4ʱ.ˊ7D-RZt}⪶JE3Ym~PK
     A 2  te  7   org/mozilla/javascript/resources/Messages_fr.properties=kƑ+HDɺ 60r:g ;e9ĆC̴!lrkC|lCV3CVUW׻=(m[6WmջPfo}s-==8_ƾ]m/Xw~ܾP]1l1nG~vMc7q@y*z*峲x+LQuʛ㋶wqu
xyT=.ʴE?-Pt1]
 =xiz<'~cٳ?-^A3+n_ Mw'Xk{ T.#:oƁrSrYfF֓;PycL5ݗ6ؾc5?\
)(Y];ϐF߆ov][GbEg),oԍc}d^D\5t}	Z dޱ2!?xe'
OfcC
W # W g^p@4ʘs-%`?+[!?۷f'|𠨮Lſ(ǑIۮk,k.O!wƝk]?]mQo6 v<vGXC։ޅevmտ0"^2Be)ӭKIs-0MsY/Y/_t
޴$H<k"O̠M͐{RdVZ.Q->[*nNd.ba?#Tp$!&=j3ae\JN.Uەݕg~B& فs$=i :dn9LhW|i	7';`k` tp`#XyۍUؗBcB$iuPh-ӧTgmN3]x<gq4UeOE#QNk q4;Dl]{?x%j	"~A)k؏j[%|

vm}QCK<ZO|X76Q~7LwH,P|Gֻm, E]c  =EnWM5f(Wv)D#E>bX 0jGH"
Sʬ `!ЎA|늫nL9ا!iSǁ+=PtJ>LO&
ܾneA
O pAȊ_ҺJYfGqP0e.42W(ɇZ$iQIBL9p /ÿ#0њ$_mn]~@>Q\oIئ]-|Q!b<T$~K񧴂owKcyNA
0.qvD`N4
HDSަM Akm-3aQ|	\on6 E2d}Uqֲs/@4aK-ZPWS/0H6_20I6t!*bXB%GFRT3-ȇ
B!~
r)*:f ?.hgH&tcʣJ
7! IĴہ
f2#cdHHn"|:%}L2)FEq#~й%Q& }L#?z3^Su?8#eR澃Gts2+gm=$!9sRV |>[]Fa\֨;$~`ֻ)y#C.BPX	'8@4ܔQs UX<]buNuof+jYSBG7EǖgxV,V n'b!:Ȇ]nbfJCrTHC!Nssxн1{bSjk?3\Zc "AM迱S?	'}v;WHrFӀ=D	un-ƚzPOK69t>x4-XջZkϾIu	)298awBh`.27@Y~xO}OA0I(l#űRD P54Ӱ :ivs46`n&QNe@s.g8B!	 0|\qr1EkȠz>:E0l|g8DRm\mhvOI/x/Z[[>1v+(eP޼A9i脑MZ :
$KU Rڏ̦-
J%fSNyağ]	.LV(.hiDh
yif$>~i`y}^[1P)uRGiKV:-JA**P=h7 rLO>/zRvR>?NV6~[A.^HRSFiK"/
P<&zTףjKZ9Djm~VAkϯmR}%,eCBrt9J%ª(fl 
hU/4Tt2T̀
ßJCh-81O,c1[(W8,֖&CXy P+$$rqlIJ!}lphn<F;"|2&@KWM\WX"M#\^rQá>kwV۷V3XL@=bUrxber(ZNzɉ;׀nqYC.T<oVzA4Ng#&LH1;	zzqT1Xn{LM]}B>8L^4oe?U)6Sc±e@a	_2*KR@0V_g0$[wtM+뗡	>sU M/.!w w
jBy9]T@PHIUoGދC@bS{<>O$uT e\9+.?.W 2.u5h _;Uw#0:AvflT5ׂlB]"kLQuD9v%g\wOYNy-K	OHjـ0iVMIqEpsp؞	N)˭fo*)o8j#1,ϸIB'8D颊A9A.m_h-}	l5Klޣ{zZTcܬA8/<U
=Y|I|3)1`;0,o&QBuάd:Zhg6%nWB/]ިyK1Pcx3/[1
*)/AՖQKm
ln[Mq
Յ/BެqP;Ro+[^a$1Yl,dӗZl3^Y|rHG>0Q5f'V8цXZ۹`aFG[C-Uj!d1`;ךl6#87(͆`ơf`]KhVeֲv<$ﺱ Uޖ:gAs7G{WEJmnT'ꐺ6
||C֋mk!}1K 7tSXqw+lATye0p"uiґڹꀭ!KuZ=L[r4
U.$IpqV
4/<NL:R[KWc!
od[j]e<CgP
>|wFHaz3 0؜f?	 L^~ݴW0\x"FA ݿ2jGdlO__|?=WG$>0ݸR15|ԂRΆ.vr{v!$̳ک:]{?=(@3i#x#fRYC :xVa'(Sa&Rf=ebN:\\}C ̙$O<2'ۮTI&9J(Ei!%N;-@Z䣚@RY^(T-l0:1u"a6"NdMb%Ι@|3GqO"bTl>DNZc{]pغ-K'אC(p/8ZM^@N΅Y/5HZέzx6^炨2TNvv՝@2	J@?~Gj,tb-C<؉hԺuh
ڤ'z&p|9
H|j6$L#
nQKɹAo =AɼahZo88Ԓa0[JMvעvqO15PP2fFo;u NS<s8,Bo@aO,_|P${\\ЬtO9c@3 ߑ
OבdpuSA*msMոJ/I'xfp~K6ߓYG2/࡙Z *zc>I4X_}Uk5M
,CI~ӑs;D;A# :?bXd}
j9RalUKBh
B]<	dn{a`RXU@1~LQ̺>6}IU K[.ᜩȉ{!Ys'DM%fCpM΂JЬTK%1wƓ'*R^^녽?O|LM2-nap?@ Dy𺤆:uv|nyDL'1}y)lQxVvhD	>+q!IWԔqT6Z8g?ßƞ^OL&{~fJ=WOVWK  y2=MAa<|Ng9ݱ0H8lكĄQJαؒ*2Đr5.͏g^S٩f|
,;ooX xvjLDVd>GʞL]8ݾ[\^ftŻ;8*C$ҮHrIu'z0cvxQ8x-m7^<ژCNŬo^qz'vz*	f|m6f!~8Ok2?.{%Np-YeR9qdQށ)N\x	d}TWUx&o՞>ܲZ?N鞓Or
,E
ԂϬo
l;ԥU.:WqB aݕ=P'wk(`;v=faM%߄KDStFK1%%^=8pzN%
+i45{GwPpNws;vpg
çrzS.ͱ,{߶#a9=g
M!eFnfC>	!s~:L4SS*M
$͛c
w""p
ѵ\(iu%&_z:`M{=ĳKz0ŨiZ5L=ASÏ'{o۷1;> QתlteF<7|R:68a'XOYN##v2d>[
Vg	[; t[ 1۽~֘[Ʊ:NQZ<qkp4!p ;
$\vyo8<m:SkRd|,@ßM:ߵD֮R͡Q85">Sj.ŷϋW/Q<+P-D@CmQ=[nlqN(ǫU+:F 5s0eqӕh{{&-q|i7x3
D6$=]֭ 
4T{m.cZxwt	qd6M
{õ(uʀpFFm*?vsG_sա=BWGݒc*Zn!2I	:KI'oRgRZm/^˹RէEӅ9s'.VśMR
:~<	AyeɦE&NZEep6<%4f\?*얅DjI:#o9Xj.]t%l".vJ̲xHhb	ռiT"x.+̬a@}!8\E>@p4![l f6=g&W,<G8QGАZRQ1:
I=P|nMQ7<ܒHBXmwzm,~Gm|QI{ob`RۏʥF^)"Y&c"ÉW)cf]pᚮ0hE"B6sX s?*[+\kHb4R%l]iD%%^g%wwldE6I|PFqp+߯AF,(VZJ/>#.6V_G::Q|o,aRKށjDñ
ƶ{HN}cetHu;mo+3ɒ2( \/*Y|c5k_w<9ZnT[2R^_|Ecyw
_9sQadx1ُPU2o`G )uh8'!;azJf'&t\:WZ{=<i|D*."^hZ7/ʏm@HН^0(Q瞲'W&AB
ctcz=8Uyu2_s+ޒV\e ^^PK
     A +  A     META-INF/LICENSE.txt\[7~h8B_&Nv8 N68T7[6GS_&[/Ɍ,_T;
v<V~UWMMSM}cjz~RliMUo_fxHgzvShZۑVy\?v=nx*z[پtW̆~1^ƭz0z4~UՑ8qb׮@{׎=yyj~"&vkGQZO_]ٶHLf}toFa!_s\p/fb2rQN𽛆6
;muZRgBrWzIwg<;: ^ڵW+GSO^w<OD=ۗKklkk|><K{	~S &Zě'8ϟv$1zϤ+}-*h &9b? i1R;'+O4]wġX³fAxiҳ響+y7KT"Y#!/T[9K37܉3DL{VzOz'$Pߚ3>reŒÄt
}^LJR<`|DhQiGq[zRɟ{,d1vQlݏh;]e>DL{X
62ڝ{""qŚ ot]\ŇHNgOK*Zu@- rO܎tpr!!63!⸿A
&

3G]m~լ:mwO?5׫,yhgwvdNW>kD2{zf=y!
fdFؘك:20:	5(`r|GV$?tր Sl:ByX
iJ2ގ~FB DL/T?I%RZPih=KWk̥u؏űbpa^XZ`X|Б(@(0%3P[G@1X
N/Ӳx $g:tX6nH9dGOH 꼯x4P6A҈	AºGmb<س9ך$?+r{1H#		ge'?ú3d/D5d![g[ږ'cO:Z E?R$Z"ך,o]Ūgaܲ9[,OYkwQ%7B$xk,P]|$#D--e2zR,%lE^e0%DP	J:<ԡRL5J>!8+;_ -c^$@㓪Ʌ#Xy Uihok6"vx./$ke0KWdd
J<Xb"̦T0SC.|Mn?}ËYK980֔ZDe˂ݻ,jLլledI}M{\JrwӬZU@0IX:X }#c$t8
MV  ms/nR\4mMDVأ3!GPL!!H|I7m!O0r/+{p%!ءao;~HM%[{}uq-jGQ_Q`41w0>ׂp"D}U+vkK$w5OJL&,/L#(OKs'kNa4DbvdG*
)JԢ,@|{͞I}RkA#ܛB.CC!B84JuztY`8K-*NOki\Dh,i,[ˋ7}t/ALV>o~߯
{̻4m/Fvc!:JZ ElHŪ;s4?~vfa ARj@k܎_8I̥C	G4?[ũkuU
FzOD&G_*hǓzyJ%Cfi
	E6صzx"'Fy+J$s\w0$bU٬ n-WMN3ɏ
1f]fE,)"o4c9	dċhimU*
;]	WXͅcR#sTvӡd	o6o߆F-R^Ro8e@>]cڲy: <7-f-#6E[Fg"O4s-Ob&{@JJH^%!{ԑM-8p9mډGȔ§\2v&/+U4&5Ury
սX#Y	d+
FE[2V[=%RQr!f2!M䲜R0-g#kCd\0ބ&v$e<pz#?Y;/ĹӰ}-̪)3$Iyѝr[unrջ9`'/eCi.Ru{i<HS'Mvw̴Uge#@BZ%@HSm"
WsڜAGrk7ȭe\Ab(;K[S38^9)u%O띀ד_C@ .O05w 4}z4C%JXW3X˂94'45u,)ȞzE飳[\yE2:@0vK'V8ꮕpΔKڻ֝ *+ː㍒xHY9f0,@=V,BeʧAvחJX+.wu* cCI}[~E7}:
M?N,DrL_koНHrynؓvGVw7̑Ѫ@
iZF;&}MeU*bPy0jn
7@F'8m}khx."i!~
sTBp	*OYx{
E.igP",Cpdn#"sЋ  dzѱ,1Т
wDzPV
*԰JzY_t,ΆwT8ʠ0[F>+w9
\
b<ZLI^4VѠ@~ =Ї8/!R-Q,܆O
`i#"f^Zwh0ɛeA3\*!U̟5>B"ZB,ٗ9!1m\$ڡ mG1c1A$|Yx8S>edD|c@+R2Gn>#p5 G7ԊOmq5¡I>4ܪv;Nu>xqم)lqx#qOe녖lh0Z$Σ]}Kz!]xBAx8Bƌ̵
 od0wڐlugߨ_Ӹ-~qe}CTÄ@ q̟}%@k	=:WřD&QF{n1Pn(,4s3*2BH(Bdqbu?]f <Fzn;QAoeI2FnLN
#Y;x%Bc~5<'zAl$m^ +L-%b"tF\v/ʰ\-K7VL 4k7s3$˨)Q&;o@v4c<LWOEۺB|$
lG!x6_Gr1	6 C=xJa8na-r1#uz׫45_DIDEA~Ah
(bm!UJaT"ͣl!nWȨuMibAэIwh$gB~=j6r	GB+it@y¦hAlk=ǑP2FA0Q
薊
e꜡\42iQ#@+-(l$~	5Fcdﹻip0M5GQ,6Ok1hKk!!uH|2ɝ&0X^P䚭
3}q(Âl0I3Y($Iy^lyL#EĎ^rQS74Pw29&\pY1̓jEtSh )}uG奌\j uGkLH0t<1|:G~sEez,ڧsdhVޅhɂǮ},X0ѶrN6'@eNug */e(rjTP){IŤI1=: f̪>S@k'~ZX72SZ&̞ԫt4Df(&]pCx[*BFb$
]W	6X[Nga9Ls7HgdrgH}wOob"hc
:-|Fu͟@tI
P63ЛY67-OH]<|K&d2[~Y|h6c+ΞűЍEF<FV8c|vkftAșOt^]~wS^(P$dllӝT1 y'H^E%27a&'<γKig#Y6ê9X{OTZZ	dJ%%N+)BCM1(͒IyMi:ˤ4%2r|kxfϾE>1|lo3rtM)%N鿗.or[$oqL|-"^uB[%)+z,\cVF3UkȦI?qܿ|d';߸aH>͞d AQ{;zʊ.{݄l?_QfUCWl|MyZqqݙ{8dTz^piN_gL
S) 
Y4M>,<jABgFkA%,/+΀@U]s>MH6PK
     A }e  G     META-INF/NOTICE.txtSn6+9.PhO,dI%>DCMCZv)Eu)̛7o^^j{Z΀+pj,]xYu7P&S_$J|vfa*"ftmLߛW=@ui36=Xsͤ~{|2]z8,?=:xR<vH;8|q:V;f@!4WޜN@/zT|T6闽/?=!	Ud }!¤NK":mݤG7<ZzDS{&c3y}ëv{@9h0 q |=jpH;<}>hE(Á [VAř#9)Ȁlɇf-h.?ƌ`9<qt>0¦mAMw`1.Dp\fWFˌY;&G\Cnz{}F	7\F,>>6Md6mca|`{:T5vxQ`Lhio|zk={Kw]5emB Q>g)h
6-WVeQ.E-K.;".HgũPr`*gQ+ҼX(e5&84w<]+YMd{=<"P.YZCUXiNؚf	vǎ@h!AH;eT>{#B"Q2cO~JQ8ǑhZPM<c
GIGJҚӵ2z!$,,,(b)A^ V-heD!P)yQ4cוde GY,Zcx^Q^ϠT,iPeΖH	WńO`-.{ad"daH`@'iɸzf,wPK
     A            	          A    META-INF/PK
     A x$                )   META-INF/MANIFEST.MFPK
     A                      A4  org/PK
     A                      AX  org/mozilla/PK
     A                      A  org/mozilla/classfile/PK
     A #v	  z  $             org/mozilla/classfile/ByteCode.classPK
     A {  a  *             org/mozilla/classfile/ClassFileField.classPK
     A 5^    +           +  org/mozilla/classfile/ClassFileMethod.classPK
     A +HP    :           _  org/mozilla/classfile/ClassFileWriter$BootstrapEntry.classPK
     A KIa  [  D             org/mozilla/classfile/ClassFileWriter$ClassFileFormatException.classPK
     A ɳė    3             org/mozilla/classfile/ClassFileWriter$MHandle.classPK
     A L$  G  9           ,  org/mozilla/classfile/ClassFileWriter$StackMapTable.classPK
     A ;A    +           D@  org/mozilla/classfile/ClassFileWriter.classPK
     A s  1  )           ȁ  org/mozilla/classfile/ConstantEntry.classPK
     A *O  "(  (           
  org/mozilla/classfile/ConstantPool.classPK
     A  l  c  /             org/mozilla/classfile/ExceptionTableEntry.classPK
     A &(    ,           m  org/mozilla/classfile/FieldOrMethodRef.classPK
     A >  
  &           b  org/mozilla/classfile/SuperBlock.classPK
     A O    $           6  org/mozilla/classfile/TypeInfo.classPK
     A                      Aǯ  org/mozilla/javascript/PK
     A paU  B  I             org/mozilla/javascript/AbstractEcmaObjectOperations$INTEGRITY_LEVEL.classPK
     A d	    9             org/mozilla/javascript/AbstractEcmaObjectOperations.classPK
     A 5N    8             org/mozilla/javascript/AccessorSlot$FunctionGetter.classPK
     A ty  w  8           `  org/mozilla/javascript/AccessorSlot$FunctionSetter.classPK
     A u     0             org/mozilla/javascript/AccessorSlot$Getter.classPK
     A 0Eu  [  9             org/mozilla/javascript/AccessorSlot$MemberBoxGetter.classPK
     A .Ѹ  k  9             org/mozilla/javascript/AccessorSlot$MemberBoxSetter.classPK
     A 8*     0             org/mozilla/javascript/AccessorSlot$Setter.classPK
     A s  Q  )             org/mozilla/javascript/AccessorSlot.classPK
     A fׄ  
  5             org/mozilla/javascript/Arguments$ThrowTypeError.classPK
     A :Cw  '  &             org/mozilla/javascript/Arguments.classPK
     A ]cj  7  *             org/mozilla/javascript/ArrowFunction.classPK
     A Q	  D  )           _  org/mozilla/javascript/BaseFunction.classPK
     A w^p]    )            org/mozilla/javascript/BeanProperty.classPK
     A bIO    *           ` org/mozilla/javascript/BoundFunction.classPK
     A ,B     %            org/mozilla/javascript/Callable.classPK
     A c    0            org/mozilla/javascript/ClassCache$CacheKey.classPK
     A D[]    '           D org/mozilla/javascript/ClassCache.classPK
     A       )           u# org/mozilla/javascript/ClassShutter.classPK
     A .l4  =d  *           Q$ org/mozilla/javascript/CodeGenerator.classPK
     A ceur  R  -           |Y org/mozilla/javascript/CompilerEnvirons.classPK
     A w/  W	  '           9b org/mozilla/javascript/ConsString.classPK
     A %G   a  ,           g org/mozilla/javascript/ConstProperties.classPK
     A kW     *           h org/mozilla/javascript/Constructable.classPK
     A U$    &           i org/mozilla/javascript/Context$1.classPK
     A u]   j  7           k org/mozilla/javascript/Context$ClassShutterSetter.classPK
     A ;C  Y  $           l org/mozilla/javascript/Context.classPK
     A  5   6  *            org/mozilla/javascript/ContextAction.classPK
     A EP!    -            org/mozilla/javascript/ContextFactory$1.classPK
     A   t  =           x org/mozilla/javascript/ContextFactory$1GlobalSetterImpl.classPK
     A vf     8           ˶ org/mozilla/javascript/ContextFactory$GlobalSetter.classPK
     A ׮H   ;  4            org/mozilla/javascript/ContextFactory$Listener.classPK
     A #f
     +            org/mozilla/javascript/ContextFactory.classPK
     A F    ,           o org/mozilla/javascript/ContextListener.classPK
     A r-A    0            org/mozilla/javascript/ContinuationPending.classPK
     A SmR#  @=  !            org/mozilla/javascript/DToA.classPK
     A `	  -  '            org/mozilla/javascript/Decompiler.classPK
     A t2    1            org/mozilla/javascript/DefaultErrorReporter.classPK
     A $F~    0           t org/mozilla/javascript/DefiningClassLoader.classPK
     A \V  |  &           @ org/mozilla/javascript/Delegator.classPK
     A c    /            org/mozilla/javascript/ES6Generator$State.classPK
     A ӗa  l  9            org/mozilla/javascript/ES6Generator$YieldStarResult.classPK
     A Sħ7  1  )           m org/mozilla/javascript/ES6Generator.classPK
     A v(	    (           1 org/mozilla/javascript/ES6Iterator.classPK
     A @埆    &           D; org/mozilla/javascript/EcmaError.classPK
     A a}P  c  1           (? org/mozilla/javascript/EmbeddedSlotMap$Iter.classPK
     A *]$d
    ,           A org/mozilla/javascript/EmbeddedSlotMap.classPK
     A #  ,  .           uL org/mozilla/javascript/EqualObjectGraphs.classPK
     A FK   a  *           m` org/mozilla/javascript/ErrorReporter.classPK
     A b  !  &           {a org/mozilla/javascript/Evaluator.classPK
     A 45`    /           Tc org/mozilla/javascript/EvaluatorException.classPK
     A k     .           )f org/mozilla/javascript/ExternalArrayData.classPK
     A _Y  
  ,           ,g org/mozilla/javascript/FieldAndMethods.classPK
     A 
a   %  %           k org/mozilla/javascript/Function.classPK
     A 6  .0  +           m org/mozilla/javascript/FunctionObject.classPK
     A FS   ^  1           S org/mozilla/javascript/GeneratedClassLoader.classPK
     A   
  (           u org/mozilla/javascript/HashSlotMap.classPK
     A R1    ,            org/mozilla/javascript/Hashtable$Entry.classPK
     A B    +           
 org/mozilla/javascript/Hashtable$Iter.classPK
     A إ[#    &           5 org/mozilla/javascript/Hashtable.classPK
     A ng  H  &            org/mozilla/javascript/IRFactory.classPK
     A I    "           N org/mozilla/javascript/Icode.classPK
     A    R  +           	 org/mozilla/javascript/IdFunctionCall.classPK
     A v}	    -           
 org/mozilla/javascript/IdFunctionObject.classPK
     A ?=g    0            org/mozilla/javascript/IdFunctionObjectES6.classPK
     A 5  4  ?           E org/mozilla/javascript/IdScriptableObject$PrototypeValues.classPK
     A -j  D  /           s' org/mozilla/javascript/IdScriptableObject.classPK
     A ɭ:    2           VD org/mozilla/javascript/ImplementationVersion.classPK
     A 㧙  #  -           J org/mozilla/javascript/ImporterTopLevel.classPK
     A Xv1    -           uZ org/mozilla/javascript/InterfaceAdapter.classPK
     A ǿ	    0           f org/mozilla/javascript/InterpretedFunction.classPK
     A ky  )  2           Np org/mozilla/javascript/Interpreter$CallFrame.classPK
     A 
Wo    9            org/mozilla/javascript/Interpreter$ContinuationJump.classPK
     A ow  u  7           z org/mozilla/javascript/Interpreter$GeneratorState.classPK
     A $Qk    (           F org/mozilla/javascript/Interpreter.classPK
     A oh    ,            org/mozilla/javascript/InterpreterData.classPK
     A A@D  9
  5            org/mozilla/javascript/IteratorLikeIterable$Itr.classPK
     A #    1            org/mozilla/javascript/IteratorLikeIterable.classPK
     A 2 3    =            org/mozilla/javascript/JavaAdapter$JavaAdapterSignature.classPK
     A h5  ~  (            org/mozilla/javascript/JavaAdapter.classPK
     A R͞    8           ? org/mozilla/javascript/JavaMembers$MethodSignature.classPK
     A Dh}ދ/  f  (           VB org/mozilla/javascript/JavaMembers.classPK
     A  M%  9  .           'r org/mozilla/javascript/JavaMembers_jdk11.classPK
     A eX    0           z org/mozilla/javascript/JavaScriptException.classPK
     A g
    1            org/mozilla/javascript/JavaToJSONConverters.classPK
     A ƣ%    +            org/mozilla/javascript/Kit$ComplexKey.classPK
     A N
                 org/mozilla/javascript/Kit.classPK
     A |:C    .            org/mozilla/javascript/LambdaConstructor.classPK
     A \  >	  +            org/mozilla/javascript/LambdaFunction.classPK
     A ^  +	  '            org/mozilla/javascript/LambdaSlot.classPK
     A MD  y  /            org/mozilla/javascript/LazilyLoadedCtor$1.classPK
     A     -             org/mozilla/javascript/LazilyLoadedCtor.classPK
     A ~    )            org/mozilla/javascript/LazyLoadSlot.classPK
     A 6!)    (           D org/mozilla/javascript/MemberBox$1.classPK
     A $    (            org/mozilla/javascript/MemberBox$2.classPK
     A 8  ?)  &           ٻ org/mozilla/javascript/MemberBox.classPK
     A KO4$  <  *            org/mozilla/javascript/NativeArray$1.classPK
     A _&    *           5 org/mozilla/javascript/NativeArray$2.classPK
     A E  ,  *           / org/mozilla/javascript/NativeArray$3.classPK
     A 
*^    :            org/mozilla/javascript/NativeArray$ElementComparator.classPK
     A S6*  -  =            org/mozilla/javascript/NativeArray$StringLikeComparator.classPK
     A ,gQH g  r  (            org/mozilla/javascript/NativeArray.classPK
     A ~h  J  D           E org/mozilla/javascript/NativeArrayIterator$ARRAY_ITERATOR_TYPE.classPK
     A ɬ  <  0           H org/mozilla/javascript/NativeArrayIterator.classPK
     A {s    )           M org/mozilla/javascript/NativeBigInt.classPK
     A Ĳ    *           Y org/mozilla/javascript/NativeBoolean.classPK
     A E	    '           a org/mozilla/javascript/NativeCall.classPK
     A  I    +           !l org/mozilla/javascript/NativeCallSite.classPK
     A H{e    7           /y org/mozilla/javascript/NativeCollectionIterator$1.classPK
     A Y    :           w{ org/mozilla/javascript/NativeCollectionIterator$Type.classPK
     A 75  i  5           (~ org/mozilla/javascript/NativeCollectionIterator.classPK
     A ,

W    ,            org/mozilla/javascript/NativeConsole$1.classPK
     A Ty    9           Q org/mozilla/javascript/NativeConsole$ConsolePrinter.classPK
     A 8ސ    0            org/mozilla/javascript/NativeConsole$Level.classPK
     A 7NX  9  *            org/mozilla/javascript/NativeConsole.classPK
     A =ië  v  /           } org/mozilla/javascript/NativeContinuation.classPK
     A ތ]D    '           u org/mozilla/javascript/NativeDate.classPK
     A Y      *            org/mozilla/javascript/NativeError$1.classPK
     A B    3            org/mozilla/javascript/NativeError$ProtoProps.classPK
     A 0  .  (           : org/mozilla/javascript/NativeError.classPK
     A i  m
  +           ` org/mozilla/javascript/NativeFunction.classPK
     A FRG    E           R org/mozilla/javascript/NativeGenerator$GeneratorClosedException.classPK
     A ̮kO    ,            org/mozilla/javascript/NativeGenerator.classPK
     A  D!  wA  )             org/mozilla/javascript/NativeGlobal.classPK
     A BK1  _  9            B org/mozilla/javascript/NativeIterator$StopIteration.classPK
     A 68;  P  ?           D org/mozilla/javascript/NativeIterator$WrappedJavaIterator.classPK
     A PY
  ,   +           G org/mozilla/javascript/NativeIterator.classPK
     A P+B    6           5U org/mozilla/javascript/NativeJSON$StringifyState.classPK
     A <,!  bG  '           W org/mozilla/javascript/NativeJSON.classPK
     A *3
  t  ,           <y org/mozilla/javascript/NativeJavaArray.classPK
     A KC  @,  ,            org/mozilla/javascript/NativeJavaClass.classPK
     A K   >  2            org/mozilla/javascript/NativeJavaConstructor.classPK
     A FG
    +            org/mozilla/javascript/NativeJavaList.classPK
     A Q  R  @            org/mozilla/javascript/NativeJavaMap$NativeJavaMapIterator.classPK
     A Lg
  i  *            org/mozilla/javascript/NativeJavaMap.classPK
     A a0  f-  -            org/mozilla/javascript/NativeJavaMethod.classPK
     A >N  
  B           ! org/mozilla/javascript/NativeJavaObject$JavaIterableIterator.classPK
     A 7UC&  W  -            org/mozilla/javascript/NativeJavaObject.classPK
     A O
    .            org/mozilla/javascript/NativeJavaPackage.classPK
     A y`~4
  m  1            org/mozilla/javascript/NativeJavaTopPackage.classPK
     A Za9  
3  &            org/mozilla/javascript/NativeMap.classPK
     A {iY8  /  '           # org/mozilla/javascript/NativeMath.classPK
     A y  $  )           z8 org/mozilla/javascript/NativeNumber.classPK
     A .ڰ    6           J org/mozilla/javascript/NativeObject$EntrySet$1$1.classPK
     A 	љ    4           N org/mozilla/javascript/NativeObject$EntrySet$1.classPK
     A 5  U  2           R org/mozilla/javascript/NativeObject$EntrySet.classPK
     A oeG    2           U org/mozilla/javascript/NativeObject$KeySet$1.classPK
     A v  ^  0           X org/mozilla/javascript/NativeObject$KeySet.classPK
     A  oJ)    ;           Z org/mozilla/javascript/NativeObject$ValueCollection$1.classPK
     A L    9           M^ org/mozilla/javascript/NativeObject$ValueCollection.classPK
     A U[ (  _  )           ` org/mozilla/javascript/NativeObject.classPK
     A M?  :  ,            org/mozilla/javascript/NativePromise$1.classPK
     A S2    5            org/mozilla/javascript/NativePromise$Capability.classPK
     A 0^T
    =           u org/mozilla/javascript/NativePromise$PromiseAllResolver.classPK
     A $     A           $ org/mozilla/javascript/NativePromise$PromiseElementResolver.classPK
     A y`l
  	  3           J org/mozilla/javascript/NativePromise$Reaction.classPK
     A CE    7            org/mozilla/javascript/NativePromise$ReactionType.classPK
     A NӍ    =           B org/mozilla/javascript/NativePromise$ResolvingFunctions.classPK
     A n^    0           * org/mozilla/javascript/NativePromise$State.classPK
     A }d5  ZT  *           ֮ org/mozilla/javascript/NativePromise.classPK
     A b 
    )           S org/mozilla/javascript/NativeScript.classPK
     A BD  /  &            org/mozilla/javascript/NativeSet.classPK
     A 	:  {  )           ! org/mozilla/javascript/NativeString.classPK
     A w7  D  1           U) org/mozilla/javascript/NativeStringIterator.classPK
     A 1}\  ,  )           I- org/mozilla/javascript/NativeSymbol.classPK
     A fi    *           @ org/mozilla/javascript/NativeWeakMap.classPK
     A Pl  0  *           M org/mozilla/javascript/NativeWeakSet.classPK
     A ~N	    '           X org/mozilla/javascript/NativeWith.classPK
     A V      #           1c org/mozilla/javascript/Node$1.classPK
     A 2w  n  .           d org/mozilla/javascript/Node$NodeIterator.classPK
     A fe    .           g org/mozilla/javascript/Node$PropListItem.classPK
     A 
x9  >  !           i org/mozilla/javascript/Node.classPK
     A zVb  ^.  ,           | org/mozilla/javascript/NodeTransformer.classPK
     A }7  .  %           ( org/mozilla/javascript/ObjArray.classPK
     A Oq  w  1            org/mozilla/javascript/ObjToIntMap$Iterator.classPK
     A >'    (           8 org/mozilla/javascript/ObjToIntMap.classPK
     A h       %            org/mozilla/javascript/Parser$1.classPK
     A .ZO    1            org/mozilla/javascript/Parser$ConditionData.classPK
     A bp    3           ֿ org/mozilla/javascript/Parser$ParserException.classPK
     A Bt    8            org/mozilla/javascript/Parser$PerFunctionVariables.classPK
     A {<̥  DU #            org/mozilla/javascript/Parser.classPK
     A 47l:    7           k	 org/mozilla/javascript/PolicySecurityController$1.classPK
     A ^%    7           Pn	 org/mozilla/javascript/PolicySecurityController$2.classPK
     A }    7           p	 org/mozilla/javascript/PolicySecurityController$3.classPK
     A BdV  #  <           t	 org/mozilla/javascript/PolicySecurityController$Loader.classPK
     A }o.>    B           uw	 org/mozilla/javascript/PolicySecurityController$SecureCaller.classPK
     A AQGE)	  1  5           y	 org/mozilla/javascript/PolicySecurityController.classPK
     A bpD  g              	 org/mozilla/javascript/Ref.classPK
     A Gԫ   .  (           ӄ	 org/mozilla/javascript/RefCallable.classPK
     A tI~  O  (           ą	 org/mozilla/javascript/RegExpProxy.classPK
     A &N  R  -           	 org/mozilla/javascript/ResolvedOverload.classPK
     A bA  C  -           	 org/mozilla/javascript/RhinoException$1.classPK
     A t:  #  +           	 org/mozilla/javascript/RhinoException.classPK
     A z(ט|    1           ՞	 org/mozilla/javascript/RhinoSecurityManager.classPK
     A E*      #           	 org/mozilla/javascript/Script.classPK
     A LQ>A    ,           p	 org/mozilla/javascript/ScriptRuntime$1.classPK
     A SG=  /	  A           	 org/mozilla/javascript/ScriptRuntime$DefaultMessageProvider.classPK
     A     8           r	 org/mozilla/javascript/ScriptRuntime$IdEnumeration.classPK
     A {h   >  :           	 org/mozilla/javascript/ScriptRuntime$MessageProvider.classPK
     A P  #  ;           ֬	 org/mozilla/javascript/ScriptRuntime$NoSuchMethodShim.classPK
     A Dr  M  :           	 org/mozilla/javascript/ScriptRuntime$StringIdOrIndex.classPK
     A >XJǴ  . *           	 org/mozilla/javascript/ScriptRuntime.classPK
     A ­    -           f
 org/mozilla/javascript/ScriptRuntimeES6.classPK
     A X    /           k
 org/mozilla/javascript/ScriptStackElement.classPK
     A K    '           p
 org/mozilla/javascript/Scriptable.classPK
     A M $    ;           ?r
 org/mozilla/javascript/ScriptableObject$KeyComparator.classPK
     A ߸/U  c  -           t
 org/mozilla/javascript/ScriptableObject.classPK
     A     +           
 org/mozilla/javascript/SecureCaller$1.classPK
     A uE/  U	  +           
 org/mozilla/javascript/SecureCaller$2.classPK
     A ,    +           C
 org/mozilla/javascript/SecureCaller$3.classPK
     A `  |  ?           
 org/mozilla/javascript/SecureCaller$SecureClassLoaderImpl.classPK
     A t    )           
 org/mozilla/javascript/SecureCaller.classPK
     A 4B}?    1           F
 org/mozilla/javascript/SecurityController$1.classPK
     A  Pta  ^
  /           
 org/mozilla/javascript/SecurityController.classPK
     A x#*    0           
 org/mozilla/javascript/SecurityUtilities$1.classPK
     A     0           
 org/mozilla/javascript/SecurityUtilities$2.classPK
     A :m    0           
 org/mozilla/javascript/SecurityUtilities$3.classPK
     A 5    .           
 org/mozilla/javascript/SecurityUtilities.classPK
     A   ?  !           
 org/mozilla/javascript/Slot.classPK
     A bȚ  R  $           
 org/mozilla/javascript/SlotMap.classPK
     A   r
  -           ]
 org/mozilla/javascript/SlotMapContainer.classPK
     A b^9    $           _
 org/mozilla/javascript/Sorting.classPK
     A W&[    '            org/mozilla/javascript/SpecialRef.classPK
     A >{Q  d  '           z
 org/mozilla/javascript/StackStyle.classPK
     A g   t   #            org/mozilla/javascript/Symbol.classPK
     A }Uo]    &            org/mozilla/javascript/SymbolKey.classPK
     A Yl     -            org/mozilla/javascript/SymbolScriptable.classPK
     A s^    )            org/mozilla/javascript/Synchronizer.classPK
     A y    7            org/mozilla/javascript/ThreadSafeSlotMapContainer.classPK
     A &̻w~    .             org/mozilla/javascript/Token$CommentType.classPK
     A ATu  j'  "           # org/mozilla/javascript/Token.classPK
     A `kM  F  (           p8 org/mozilla/javascript/TokenStream.classPK
     A /;C  e  .           ˅ org/mozilla/javascript/TopLevel$Builtins.classPK
     A 
  -  2           Z org/mozilla/javascript/TopLevel$NativeErrors.classPK
     A $  -  %            org/mozilla/javascript/TopLevel.classPK
     A %3    $           є org/mozilla/javascript/UintMap.classPK
     A Fd~Z  m  (           F org/mozilla/javascript/Undefined$1.classPK
     A     &            org/mozilla/javascript/Undefined.classPK
     A ҅  $
  6            org/mozilla/javascript/UnhandledRejectionTracker.classPK
     A   >  &           հ org/mozilla/javascript/UniqueTag.classPK
     A 	Jv    %            org/mozilla/javascript/VMBridge.classPK
     A fO  (  (           } org/mozilla/javascript/WrapFactory.classPK
     A nm3  #  -            org/mozilla/javascript/WrappedException.classPK
     A F7H      $            org/mozilla/javascript/Wrapper.classPK
     A            #          AT org/mozilla/javascript/annotations/PK
     A vm    6            org/mozilla/javascript/annotations/JSConstructor.classPK
     A I+    3            org/mozilla/javascript/annotations/JSFunction.classPK
     A 
+    1            org/mozilla/javascript/annotations/JSGetter.classPK
     A i)+    1            org/mozilla/javascript/annotations/JSSetter.classPK
     A *V/    9           s org/mozilla/javascript/annotations/JSStaticFunction.classPK
     A                      A org/mozilla/javascript/ast/PK
     A   C  3           4 org/mozilla/javascript/ast/ArrayComprehension.classPK
     A d    7           \ org/mozilla/javascript/ast/ArrayComprehensionLoop.classPK
     A     -           j org/mozilla/javascript/ast/ArrayLiteral.classPK
     A F    +            org/mozilla/javascript/ast/Assignment.classPK
     A     :            org/mozilla/javascript/ast/AstNode$DebugPrintVisitor.classPK
     A     ;           I org/mozilla/javascript/ast/AstNode$PositionComparator.classPK
     A 'y4;  $  (            org/mozilla/javascript/ast/AstNode.classPK
     A Bx  ~  *            org/mozilla/javascript/ast/AstRoot$1.classPK
     A ?!3:  
  (           , org/mozilla/javascript/ast/AstRoot.classPK
     A e)*
    .             org/mozilla/javascript/ast/BigIntLiteral.classPK
     A -  =  &            org/mozilla/javascript/ast/Block.classPK
     A ;N  B	  /           s	 org/mozilla/javascript/ast/BreakStatement.classPK
     A (s  b
  ,           
 org/mozilla/javascript/ast/CatchClause.classPK
     A ]૵    (            org/mozilla/javascript/ast/Comment.classPK
     A J#    6            org/mozilla/javascript/ast/ConditionalExpression.classPK
     A 5  
  2            org/mozilla/javascript/ast/ContinueStatement.classPK
     A V:      2           ! org/mozilla/javascript/ast/DestructuringForm.classPK
     A ۞
(    '           " org/mozilla/javascript/ast/DoLoop.classPK
     A .asv  
  +           ' org/mozilla/javascript/ast/ElementGet.classPK
     A q
  "  0           + org/mozilla/javascript/ast/EmptyExpression.classPK
     A ull    /           . org/mozilla/javascript/ast/EmptyStatement.classPK
     A 92U  
  /           0 org/mozilla/javascript/ast/ErrorCollector.classPK
     A Z(K    *           x5 org/mozilla/javascript/ast/ErrorNode.classPK
     A $gW  	  4           8 org/mozilla/javascript/ast/ExpressionStatement.classPK
     A kw    *           < org/mozilla/javascript/ast/ForInLoop.classPK
     A ğk  
  (           B org/mozilla/javascript/ast/ForLoop.classPK
     A 4    -           G org/mozilla/javascript/ast/FunctionCall.classPK
     A @y    2           N org/mozilla/javascript/ast/FunctionNode$Form.classPK
     A ÔL_  %  -           Q org/mozilla/javascript/ast/FunctionNode.classPK
     A F  E  4           Ka org/mozilla/javascript/ast/GeneratorExpression.classPK
     A ?6<  |  8           lh org/mozilla/javascript/ast/GeneratorExpressionLoop.classPK
     A 11St     1           wl org/mozilla/javascript/ast/IdeErrorReporter.classPK
     A T    ,           sm org/mozilla/javascript/ast/IfStatement.classPK
     A пN  s  0           t org/mozilla/javascript/ast/InfixExpression.classPK
     A ~    %           { org/mozilla/javascript/ast/Jump.classPK
     A   	  /            org/mozilla/javascript/ast/KeywordLiteral.classPK
     A 7    &            org/mozilla/javascript/ast/Label.classPK
     A _2     1            org/mozilla/javascript/ast/LabeledStatement.classPK
     A b    (           Q org/mozilla/javascript/ast/LetNode.classPK
     A @H     %            org/mozilla/javascript/ast/Loop.classPK
     A   
  %           } org/mozilla/javascript/ast/Name.classPK
     A |Eb  	  .            org/mozilla/javascript/ast/NewExpression.classPK
     A ~      ,            org/mozilla/javascript/ast/NodeVisitor.classPK
     A b  	  .           \ org/mozilla/javascript/ast/NumberLiteral.classPK
     A  3  	
  .           Ʀ org/mozilla/javascript/ast/ObjectLiteral.classPK
     A c  	  /            org/mozilla/javascript/ast/ObjectProperty.classPK
     A 1Y  W  8            org/mozilla/javascript/ast/ParenthesizedExpression.classPK
     A >@dH8    2            org/mozilla/javascript/ast/ParseProblem$Type.classPK
     A NPm  n	  -            org/mozilla/javascript/ast/ParseProblem.classPK
     A 0LUsb    ,            org/mozilla/javascript/ast/PropertyGet.classPK
     A #.1D    .            org/mozilla/javascript/ast/RegExpLiteral.classPK
     A Mvxш    0             org/mozilla/javascript/ast/ReturnStatement.classPK
     A ]  "  &            org/mozilla/javascript/ast/Scope.classPK
     A &V
  #  +           I org/mozilla/javascript/ast/ScriptNode.classPK
     A [ȵ  =  .           R org/mozilla/javascript/ast/StringLiteral.classPK
     A h,  ]  +           Y org/mozilla/javascript/ast/SwitchCase.classPK
     A )    0           l org/mozilla/javascript/ast/SwitchStatement.classPK
     A 2pb  	  '            org/mozilla/javascript/ast/Symbol.classPK
     A AdVJ    6            org/mozilla/javascript/ast/TaggedTemplateLiteral.classPK
     A OS    3           ( org/mozilla/javascript/ast/TemplateCharacters.classPK
     A uG;7-    0           {
 org/mozilla/javascript/ast/TemplateLiteral.classPK
     A Py%    /           
 org/mozilla/javascript/ast/ThrowStatement.classPK
     A &@    -           0

 org/mozilla/javascript/ast/TryStatement.classPK
     A a  \
  0           
 org/mozilla/javascript/ast/UnaryExpression.classPK
     A WK$6  m  1           
 org/mozilla/javascript/ast/UpdateExpression.classPK
     A \    4           
 org/mozilla/javascript/ast/VariableDeclaration.classPK
     A }  	  4           H'
 org/mozilla/javascript/ast/VariableInitializer.classPK
     A    ,  *           ,
 org/mozilla/javascript/ast/WhileLoop.classPK
     A {  
  .           m0
 org/mozilla/javascript/ast/WithStatement.classPK
     A b0x  {  ,           5
 org/mozilla/javascript/ast/XmlDotQuery.classPK
     A Uz  *
  +           8
 org/mozilla/javascript/ast/XmlElemRef.classPK
     A [    .           =
 org/mozilla/javascript/ast/XmlExpression.classPK
     A *'g  x  ,           lA
 org/mozilla/javascript/ast/XmlFragment.classPK
     A !;Ӻ  
  +           C
 org/mozilla/javascript/ast/XmlLiteral.classPK
     A `{Y    -            H
 org/mozilla/javascript/ast/XmlMemberGet.classPK
     A J    +           M
 org/mozilla/javascript/ast/XmlPropRef.classPK
     A $]    '           Q
 org/mozilla/javascript/ast/XmlRef.classPK
     A ?<    *           T
 org/mozilla/javascript/ast/XmlString.classPK
     A _    &           W
 org/mozilla/javascript/ast/Yield.classPK
     A                       AZ
 org/mozilla/javascript/commonjs/PK
     A            '          A[
 org/mozilla/javascript/commonjs/module/PK
     A =    8           \[
 org/mozilla/javascript/commonjs/module/ModuleScope.classPK
     A 6]ka    9           ]
 org/mozilla/javascript/commonjs/module/ModuleScript.classPK
     A 	     A           ]`
 org/mozilla/javascript/commonjs/module/ModuleScriptProvider.classPK
     A n2)  )(  4           a
 org/mozilla/javascript/commonjs/module/Require.classPK
     A Kwʧ  z  ;           s
 org/mozilla/javascript/commonjs/module/RequireBuilder.classPK
     A            0          Av
 org/mozilla/javascript/commonjs/module/provider/PK
     A 5{D  6  h           fv
 org/mozilla/javascript/commonjs/module/provider/CachingModuleScriptProviderBase$CachedModuleScript.classPK
     A   <  U           x
 org/mozilla/javascript/commonjs/module/provider/CachingModuleScriptProviderBase.classPK
     A (v  v  Z           Ӂ
 org/mozilla/javascript/commonjs/module/provider/DefaultUrlConnectionExpiryCalculator.classPK
     A ߋ[    B           
 org/mozilla/javascript/commonjs/module/provider/ModuleSource.classPK
     A ^    J           |
 org/mozilla/javascript/commonjs/module/provider/ModuleSourceProvider.classPK
     A op54  
  N           c
 org/mozilla/javascript/commonjs/module/provider/ModuleSourceProviderBase.classPK
     A     O           
 org/mozilla/javascript/commonjs/module/provider/MultiModuleScriptProvider.classPK
     A |    G           -
 org/mozilla/javascript/commonjs/module/provider/ParsedContentType.classPK
     A ?<  R	  e           
 org/mozilla/javascript/commonjs/module/provider/SoftCachingModuleScriptProvider$ScriptReference.classPK
     A H    U           ͛
 org/mozilla/javascript/commonjs/module/provider/SoftCachingModuleScriptProvider.classPK
     A Y    W           S
 org/mozilla/javascript/commonjs/module/provider/StrongCachingModuleScriptProvider.classPK
     A ~.5      S           
 org/mozilla/javascript/commonjs/module/provider/UrlConnectionExpiryCalculator.classPK
     A l     Y           ڨ
 org/mozilla/javascript/commonjs/module/provider/UrlConnectionSecurityDomainProvider.classPK
     A dO^
    Z           
 org/mozilla/javascript/commonjs/module/provider/UrlModuleSourceProvider$URLValidator.classPK
     A ^    M           ܴ
 org/mozilla/javascript/commonjs/module/provider/UrlModuleSourceProvider.classPK
     A                      A*
 org/mozilla/javascript/debug/PK
     A `  6  -           g
 org/mozilla/javascript/debug/DebugFrame.classPK
     A qG      3           
 org/mozilla/javascript/debug/DebuggableObject.classPK
     A V<  a  3           
 org/mozilla/javascript/debug/DebuggableScript.classPK
     A U~X     +           #
 org/mozilla/javascript/debug/Debugger.classPK
     A                      A:
 org/mozilla/javascript/jdk18/PK
     A fP7  	  3           w
 org/mozilla/javascript/jdk18/VMBridge_jdk18$1.classPK
     A >p(    1           
 org/mozilla/javascript/jdk18/VMBridge_jdk18.classPK
     A                      Av
 org/mozilla/javascript/json/PK
     A  Fڤ    ;           
 org/mozilla/javascript/json/JsonParser$ParseException.classPK
     A A  #  ,           
 org/mozilla/javascript/json/JsonParser.classPK
     A            !          A	
 org/mozilla/javascript/optimizer/PK
     A Ԩ      .           J
 org/mozilla/javascript/optimizer/Block$1.classPK
     A 3K4  g  5           >
 org/mozilla/javascript/optimizer/Block$FatBlock.classPK
     A U,$  f*  ,           <
 org/mozilla/javascript/optimizer/Block.classPK
     A B$  @  Q           
 org/mozilla/javascript/optimizer/BodyCodegen$ExceptionManager$ExceptionInfo.classPK
     A     C            org/mozilla/javascript/optimizer/BodyCodegen$ExceptionManager.classPK
     A QI    E           Y
 org/mozilla/javascript/optimizer/BodyCodegen$FinallyReturnPoint.classPK
     A (x  	 2           C org/mozilla/javascript/optimizer/BodyCodegen.classPK
     A \
    4            org/mozilla/javascript/optimizer/ClassCompiler.classPK
     A  4  n  .            org/mozilla/javascript/optimizer/Codegen.classPK
     A <    6            org/mozilla/javascript/optimizer/OptFunctionNode.classPK
     A     @            org/mozilla/javascript/optimizer/OptRuntime$GeneratorState.classPK
     A hdc  1  1            org/mozilla/javascript/optimizer/OptRuntime.classPK
     A ~w`    5           ? org/mozilla/javascript/optimizer/OptTransformer.classPK
     A i
    0            org/mozilla/javascript/optimizer/Optimizer.classPK
     A                      A org/mozilla/javascript/regexp/PK
     A YRB    1            org/mozilla/javascript/regexp/CompilerState.classPK
     A P.  g  ,            org/mozilla/javascript/regexp/GlobData.classPK
     A Z  V  0           g org/mozilla/javascript/regexp/NativeRegExp.classPK
     A Pt    8           sP org/mozilla/javascript/regexp/NativeRegExpCallable.classPK
     A b    4           R org/mozilla/javascript/regexp/NativeRegExpCtor.classPK
     A H    <           a org/mozilla/javascript/regexp/NativeRegExpInstantiator.classPK
     A b    3           d org/mozilla/javascript/regexp/REBackTrackData.classPK
     A     -           {f org/mozilla/javascript/regexp/RECharSet.classPK
     A h    .           h org/mozilla/javascript/regexp/RECompiled.classPK
     A "z  ~  0           j org/mozilla/javascript/regexp/REGlobalData.classPK
     A 4V    *           m org/mozilla/javascript/regexp/RENode.classPK
     A ?5  2  /           {o org/mozilla/javascript/regexp/REProgState.classPK
     A {  =  .           q org/mozilla/javascript/regexp/RegExpImpl.classPK
     A "w    -            org/mozilla/javascript/regexp/SubString.classPK
     A            !          AA org/mozilla/javascript/serialize/PK
     A 5݈  z
  <            org/mozilla/javascript/serialize/ScriptableInputStream.classPK
     A !O    K            org/mozilla/javascript/serialize/ScriptableOutputStream$PendingLookup.classPK
     A Y27    =           ҙ org/mozilla/javascript/serialize/ScriptableOutputStream.classPK
     A            #          A org/mozilla/javascript/typedarrays/PK
     A pߒ  B  /           % org/mozilla/javascript/typedarrays/ByteIo.classPK
     A 5%    4            org/mozilla/javascript/typedarrays/Conversions.classPK
     A zo  p  :            org/mozilla/javascript/typedarrays/NativeArrayBuffer.classPK
     A 2$R    >           0 org/mozilla/javascript/typedarrays/NativeArrayBufferView.classPK
     A u
  )  7            org/mozilla/javascript/typedarrays/NativeDataView.classPK
     A .  R  ;           h org/mozilla/javascript/typedarrays/NativeFloat32Array.classPK
     A /4    ;           | org/mozilla/javascript/typedarrays/NativeFloat64Array.classPK
     A   G  9           	 org/mozilla/javascript/typedarrays/NativeInt16Array.classPK
     A ),@  K  9            org/mozilla/javascript/typedarrays/NativeInt32Array.classPK
     A i<[    8            org/mozilla/javascript/typedarrays/NativeInt8Array.classPK
     A T  D
  A            org/mozilla/javascript/typedarrays/NativeTypedArrayIterator.classPK
     A Cf""  KR  =           w org/mozilla/javascript/typedarrays/NativeTypedArrayView.classPK
     A |%  ^  :            org/mozilla/javascript/typedarrays/NativeUint16Array.classPK
     A (-  K  :           
' org/mozilla/javascript/typedarrays/NativeUint32Array.classPK
     A l`    9           %. org/mozilla/javascript/typedarrays/NativeUint8Array.classPK
     A 
0j    @           4 org/mozilla/javascript/typedarrays/NativeUint8ClampedArray.classPK
     A                      A; org/mozilla/javascript/v8dtoa/PK
     A Wx  l  <           ; org/mozilla/javascript/v8dtoa/CachedPowers$CachedPower.classPK
     A ^
    0           = org/mozilla/javascript/v8dtoa/CachedPowers.classPK
     A 7_    )           H org/mozilla/javascript/v8dtoa/DiyFp.classPK
     A 3    4           N org/mozilla/javascript/v8dtoa/DoubleConversion.classPK
     A Xmm  
  0           R org/mozilla/javascript/v8dtoa/DoubleHelper.classPK
     A t}    ,           TX org/mozilla/javascript/v8dtoa/FastDtoa.classPK
     A XԢ  !
  3           e org/mozilla/javascript/v8dtoa/FastDtoaBuilder.classPK
     A                      A.k org/mozilla/javascript/xml/PK
     A B]Z    1           ik org/mozilla/javascript/xml/XMLLib$Factory$1.classPK
     A :gv    /           Gm org/mozilla/javascript/xml/XMLLib$Factory.classPK
     A .  
  '           
o org/mozilla/javascript/xml/XMLLib.classPK
     A n     *           @t org/mozilla/javascript/xml/XMLObject.classPK
     A                      Aw org/mozilla/javascript/xmlimpl/PK
     A T  &  .           w org/mozilla/javascript/xmlimpl/Namespace.classPK
     A 	  h*  *            org/mozilla/javascript/xmlimpl/QName.classPK
     A z  
Q  (           [ org/mozilla/javascript/xmlimpl/XML.classPK
     A ]s    ,            org/mozilla/javascript/xmlimpl/XMLCtor.classPK
     A B  N  /            org/mozilla/javascript/xmlimpl/XMLLibImpl.classPK
     A 	:  E  ,            org/mozilla/javascript/xmlimpl/XMLList.classPK
     A z\  -  ,           m org/mozilla/javascript/xmlimpl/XMLName.classPK
     A ,(  La  2            org/mozilla/javascript/xmlimpl/XMLObjectImpl.classPK
     A l  %  1           ? org/mozilla/javascript/xmlimpl/XMLWithScope.classPK
     A gCA    5           C org/mozilla/javascript/xmlimpl/XmlNode$Filter$1.classPK
     A ?    5           E org/mozilla/javascript/xmlimpl/XmlNode$Filter$2.classPK
     A S^    5           G org/mozilla/javascript/xmlimpl/XmlNode$Filter$3.classPK
     A 1&    5           FJ org/mozilla/javascript/xmlimpl/XmlNode$Filter$4.classPK
     A jR  \  5           %L org/mozilla/javascript/xmlimpl/XmlNode$Filter$5.classPK
     A dÑ2    3           M org/mozilla/javascript/xmlimpl/XmlNode$Filter.classPK
     A X  x
  9           MP org/mozilla/javascript/xmlimpl/XmlNode$InternalList.classPK
     A r1S    6           {U org/mozilla/javascript/xmlimpl/XmlNode$Namespace.classPK
     A n3    7           "[ org/mozilla/javascript/xmlimpl/XmlNode$Namespaces.classPK
     A l.  &  2           ` org/mozilla/javascript/xmlimpl/XmlNode$QName.classPK
     A 5   q  C           $i org/mozilla/javascript/xmlimpl/XmlNode$XmlNodeUserDataHandler.classPK
     A L]i  F  ,           fk org/mozilla/javascript/xmlimpl/XmlNode.classPK
     A #      3            org/mozilla/javascript/xmlimpl/XmlProcessor$1.classPK
     A 1(Z  c  F            org/mozilla/javascript/xmlimpl/XmlProcessor$RhinoSAXErrorHandler.classPK
     A rD  <  1           i org/mozilla/javascript/xmlimpl/XmlProcessor.classPK
     A Ұ~  f  3            org/mozilla/javascript/commonjs/module/package.htmlPK
     A z   *  <           ˫ org/mozilla/javascript/commonjs/module/provider/package.htmlPK
     A            !          A org/mozilla/javascript/resources/PK
     A 
  u]  4           9 org/mozilla/javascript/resources/Messages.propertiesPK
     A     7            org/mozilla/javascript/resources/Messages_en.propertiesPK
     A 2  te  7            org/mozilla/javascript/resources/Messages_fr.propertiesPK
     A +  A              META-INF/LICENSE.txtPK
     A }e  G              META-INF/NOTICE.txtPK    (     PK
    ]W            	  META-INF/  PK  ]W               META-INF/MANIFEST.MFZKs6kFAC'`Kq܎<>n$M'S> I$ O",vK}oXaiƕ\l:Iz~hf#B}Ŗ; M'6aj\L'7<9ο\avR TBJK\t5-vɟq"XdϤB&'E)OrM*y|OPE߿~\vyNOI~̆#&3X"nORq1\]{VN'¬4H٩M_H?HZsTnw>+n;hU*@
J:VOTϿ  ݺ1/
Ց!:,@ՑlQ.'LFjp{vL$*d	w;	IU\9gl_kH!-)pI e5fI $u헭( }gڬNn,:2R( U1Nz&$43K6O RFg< eQ,1<}L 2!I"e:׀-d}pF+ /ӪXCn?zUk63|W;T؎EU+. ;TxN! NBH1U	~B[I2GK"IٳGM˘Cew@(NA%`G`_,e;Z	RFqx_
oXTz 滞=tJ^diDmǧ3
 
p%ATe:[=iGV[& Q_@a 2j7䦶2z%F*?7-}AbWjUM	\+P`nݠUݳ]ܦ|uAu@m']oafUF=}iNIL[/K2Slc0dCu0JQi{*X۟ʛk܃.;S7K»P.ҍKn^!'4F8"CFnLs&P"zĎ+
	@DWQRnVm?@}Z2 !Uc?Ykł|c_#:㸻1f<2y9~Rf@CsB.nge@v29ЉNSqrY~B;g CPkLX[aFi'~	17Đ?j3hj>ÿ?z,][vkZo䛫Ѩ]P&G&ht[Kݽȍ* r^ I[s7hRܻ$$ΫsdU5n򐽏="ǥaYCACφ2A5@h,9|TͲ5 SszvĴV;;z.Ewv6CwQŧvFR3{N}SLuXBQJ%^Y}G1e1Ӥl􎜝\t)u&?}=vR>jݢuT}(5)mh(+~"TJeb
r5`b
{F'`yZDLD;`D`c,Ǡ(d,*Rx#\PYJA,,r
3Tv'΀׊j'4W14p̚2:GSe{kǓpY>Zz%4b֘idui`4bzF=;|NÜxW)Єq儱KS)B7PJu5@gٯd:PK
  &  PK
    ]W               ch/PK
    ]W               ch/qos/PK
    ]W               ch/qos/logback/PK
    ]W               ch/qos/logback/core/PK
    ]W               ch/qos/logback/core/boolex/PK
    ]W               ch/qos/logback/core/encoder/PK
    ]W               ch/qos/logback/core/filter/PK
    ]W               ch/qos/logback/core/helpers/PK
    ]W               ch/qos/logback/core/hook/PK
    ]W               ch/qos/logback/core/html/PK
    ]W               ch/qos/logback/core/joran/PK
    ]W            !   ch/qos/logback/core/joran/action/PK
    ]W            &   ch/qos/logback/core/joran/conditional/PK
    ]W                ch/qos/logback/core/joran/event/PK
    ]W            %   ch/qos/logback/core/joran/event/stax/PK
    ]W               ch/qos/logback/core/joran/node/PK
    ]W            !   ch/qos/logback/core/joran/sanity/PK
    ]W               ch/qos/logback/core/joran/spi/PK
    ]W               ch/qos/logback/core/joran/util/PK
    ]W            %   ch/qos/logback/core/joran/util/beans/PK
    ]W               ch/qos/logback/core/layout/PK
    ]W               ch/qos/logback/core/model/PK
    ]W            &   ch/qos/logback/core/model/conditional/PK
    ]W            $   ch/qos/logback/core/model/processor/PK
    ]W            0   ch/qos/logback/core/model/processor/conditional/PK
    ]W               ch/qos/logback/core/model/util/PK
    ]W               ch/qos/logback/core/net/PK
    ]W               ch/qos/logback/core/net/server/PK
    ]W               ch/qos/logback/core/net/ssl/PK
    ]W               ch/qos/logback/core/pattern/PK
    ]W            "   ch/qos/logback/core/pattern/color/PK
    ]W            #   ch/qos/logback/core/pattern/parser/PK
    ]W            !   ch/qos/logback/core/pattern/util/PK
    ]W               ch/qos/logback/core/property/PK
    ]W               ch/qos/logback/core/read/PK
    ]W               ch/qos/logback/core/recovery/PK
    ]W               ch/qos/logback/core/rolling/PK
    ]W            #   ch/qos/logback/core/rolling/helper/PK
    ]W               ch/qos/logback/core/sift/PK
    ]W               ch/qos/logback/core/spi/PK
    ]W               ch/qos/logback/core/status/PK
    ]W               ch/qos/logback/core/subst/PK
    ]W               ch/qos/logback/core/testUtil/PK
    ]W               ch/qos/logback/core/util/PK
    ]W               META-INF/maven/PK
    ]W               META-INF/maven/ch.qos.logback/PK
    ]W            +   META-INF/maven/ch.qos.logback/logback-core/PK  ]W            "   ch/qos/logback/core/Appender.classRN1=#qcbإBp5})uLQÅG/ >颷{z_^b#p$"0^O[LE+t1G2R2eo3u/|7Q`8JMhضeL<㖵R
d/BQTuoz]Wg(l._3:c#0L!_PbBiG15;W[<-h.eM4(ghfJS(p2aH͐"'KX&(clP6G
(`*UԦ,PKε>    PK  ]W            &   ch/qos/logback/core/AppenderBase.classW[w<kB`HiS7T)r@4X34iS6ޛIևҵ~H%(s>gos}o ß1
q	t	˙7\?cKFq%St=3W̸ {ˆo
tZ	ĆRH"[n`L/ܮfI@,{uȭ4	Ι+^6bXՊݍ^$~pn1,so2"x
Oà0+U'RG^~Ѭe-8.wU?X32,g
g9#m땲7<ѳ:)CƊ,`
ʜQ	|Zq2iSm4Hf`dx':,	R)tK Vmf|lX΄Y|Nš65^gjxA'/
vM/0YxIFwCW@;4m.jIH29s=y-{=Mh&z] .#<n>o Jȳ y
S:1#ӴΊiCmNCIw{'bVǫ	{[BQQJTz#Umr[-[YַHW
,;#eʱ^ޝz.X1NQs͍l>?3xFz.;[S9î1V}DwKѓsdzIhsgߑ0-D[;/8`R9ݵ3$Kn6*mO5
4ʔQQhnz
?<'[HY~vZ!7Tcޫqq*|V-X;֕nsXB\@q4Rkrƶّ88tܪW4iYk9iM~)3(%?γ
7a3uGD$5$~%p, [nOߐk=]]7~?hlo嬹+fDbUy#"kSMduW6qۨlwE@]Y𦕍5WPGjYE*ǏV5h/?v]1.A7_c1||\Q5F@ILOQ~P p2D:I_1߇CŰZc)c/8ƇB+z	w9l"#Z"Q7ѥ-p8V1NOi	<}G8'JyN?L@柸W6/:/|8#jr?$.漄1LqjtW(r7WXdsxN䮋\ħc:ɹ
Y=~H6yb.g=Ǐ*<&_#Z*xA?X_k|{Lf|\:zUCE|\5~Ḫ8ɯn%-1/UKq_4Pά:ڑ褀֌^V)oAJM7``\'xMhoJG v"+!74@@ա	">D9 I)K᧤^#Ru"ɵw9g_&70l-
I$Y?-u :u94t2!/4mw1<:ͽǞ~_}2b->TߏTJ3|/PK޹RY    PK  ]W            2   ch/qos/logback/core/AsyncAppenderBase$Worker.classUSU.,hiJ"-m(6P*(`Q7Y
}L':S3
98Z<wxؽw=ιw~O n܄:+h![N°V
\[Kh-)gR0/XnIwS&hDfm|'n$KEMcDMh9m*sM(sa99=r]xr rRqMs튢dQkݪm͌\@x`Xښn<*	g4Ԫ-L71~+ٌRpY\e!>fe)
%\SЫ"(C!,*Rb#'#K8usbF1a9떙^	xQw]z{޳!`X
sIڵĝp[RI UpGe8[)a-d,2c;9"DZAB$vBM1̿k!z=B7вQuJ![I?YHS	PA,ɐ]dM(m*J\^smrMF0	z_~օTeZEV`QȔSf1Za29)I	Hu."[-=/ue,yn{tIj`}!O&ڦ[ezIUyOԘV,+C㧄VĠ|Qc2pyLiK"E5|ΣJ2#3bq-t}ikӼ	`m[˟!&R$d;eɋCM'84פG~#GammGB:z1C,fi@{(h]B7k?*<462-FWPhsLsLm	?f.ѩ};aAw)
lu'薳dǃm:[m~Bܣc|jS _<AC-vo#(c	p>O9tQ
W)0, !2c#XbCxu
[,acsTf1>!t.N_3z?F"աOCR_1,+2E5\~[8QCh4 Hh(!UA%(XV0;.+[':\J^XVy
PKj    PK  ]W            +   ch/qos/logback/core/AsyncAppenderBase.classYxuv]	^K6lRXG`!0)펤A,u;ͳM'q^Cm<AؐصiinҺuҦM#ugfv]51wϹ瞻|pZ݄:DbjGBWf.zf;ca9ne&
e5
tPhlZU!ѹ/<"]bu]=3T>ׄ"X-.j#*躩pimXxW(CtLAeEC,vreR
m,k:5ÙsYYoװ
,MٙI
2ri~0iKDPHutsذVUXǸ$1c4{th?)XL5&.lаW4rkdѭjNF6YIlp_a^׳پBq-#zwNƻ	u~Sݶ2t'渺:t5sr{7e7+D)Cpp3?ZNv9{PNݮa8ik̖kx9v>pwƔmڑ}pW`;OQ%_
jW=%h3˶߫aX|#2}2u\;/kC&M5
bލשV^yKtHԠcډksV2->ą($kT;q
bbLs8pX$rmz"\k`i%cӛ3p
18\]N c
Z)~(e~`jk=q1m1TGvSd+rǓGt%n*cxYE#w,c]ӶzlbSes}Th
eٿGwTG}7-VP{aPGw4.r/-HCswy$_t%.	cs҉5]=.'5<$ccRpa
0ќpޏC
Kb,)}l}qKǪY:3-0(hxSXĜ)-*\>8>г2MȖ"9Oe۵sN|Pc8ML⢻v.βhzsFY<NYfmTv]vNy|9- FI
OfikeXzs
zZ3*Xg9x);!sb]dyo_J%Ďၽ
J1gK'>=W4"EˆIy^&tL]yhozWDgng2SFaKb}z`2<[fJ9/IxP"rW␔WΑ>b&)3KJDhpyjY~*S}?\Qi9fXs|rFe3r*k 9Tάfǋ1EW)5)\N[+K;efͅ+$(%WLBSn^ Z^㗨/
_t,h0G'6X[kr?]Dm+4dߔmڜ]bc=h8.Ca6vwu*BuDϙ٤wKJ]zn!u	dƅNBWJWj5*b>-hϒ*9t&
e#kd/)5x
+)<jdvi7J-)ԯ"`.z
EWP/@d6<%ݲFWK[vcfM)IzܤjYL-gZxYM:bOA7~=]`yR~va۞,{.ؖaJ_mcz.7-w8{L)\ c}N^r}b\Gp
'/ц?2~"	~˟VoQ|뫰ºPޗWegGsl _oeAq!u*ugxMf3XT$Xs32y֟"s_
k4c3Bnµ'_8>;grbޭ\"z<aOVȒo\võo }zx	'PsL
ը*5*T߆Kh S3HDT4?D]3FFAsJ^᥀7{/; 3gqlۊcGIhdz|߯ΠOFjI.%6$s3wY|G3Y`Ђqd
xވ)Jy#(`G(^cea*w|4_ܒ)]ϵ[:rCg01ϩXLd$Vo+Ut4SDwOsWH5^lEƨE:Ed.m=xˁ7/'BFň@4
z3[o6܏{wBzN$Q8ι_^3E=Y7R#n}/0;}>
`}sq
0_Qן"oҒ/ogsՋ#̑b)>L{>Z2]?^?z;M-
7J^$x	c?XtQD6G*[ G򛥤#Xy7<qݳ o+OS QԵDxOhr7Eh7FLU'87O#qcjº,y7^l:nz/Oӻ'I4gH4:8v3ܟ
Sr)$#XqTWMeԩ&f=Aܞ?׻2R*ςϕſ*~4Ž2zClof@/ŵ!;7\C(j/-mJcLclۼ+}vKmcW-|{c;5_Cccb^ise7UY1vֲxe??bij[oa%+we?Z > T(>ǼASnd} |D/MƥyƆ:{9/$JaZlf
?ްrOfkA/=Ӂ#;pbN}r.4x4@/9ww9@pR2C?,)8GO9wWrBU(
Cd'a3ߞ
[stETS<NQm'ၤj+խj~EY5J^7P{Fg{&yK{kH5j~PKԌyf
    PK  ]W            ,   ch/qos/logback/core/BasicStatusManager.classXiS==̨YZH 
4[	Q,!dHFL#Z3g@Bq%ٔ(˗T*>-S'%!U_rf`젨~w߹{G'pe:ءaUsɌfz66<}J4JS
eXQ@
mKlNX"Xf6ə젙6g-GC YLә6Zub.ez\JD1P=*ʇX|ct,ue/XN6ַSӋ33S:4J{5n a?ʙ)۵o'!pyv!Lb-nh
ɺ֒nr[5*iܬIm-Ȳ
D$g[iˑ,8..!IO=̤=7_ٶ`
uƪp_5Ёi(rq5Pitju1-iQ<Mf2>,Ф+vbLvF$ѯ)X m$I+:<gyLOf9
ocP^b>l4rc2_CoG0め1&93;dȩ\Nʎ	VuӠ㲆$n]
U)WDՌ]U

$e1ė0ˤzҜ:l(5)Ҵ
\Cm"1g%fs	Kfx|8	%hkc],Y:r_es{/N={TQ
;%΍Uƶ{KCh@|jd`Iͦ!؎MXQT=ݵs2I+J[Cצ-gԜ9Svbc7ͥHoBi;H:SǛ!9'sGYX)xrz'tڗe<FϬ*z|-8"4)%l;\vE^Ϝ,=-if^l)s]agts=xJ9ߘ}%\ixH#E'aM	[ez\@aym(CxO /K%?6z9>֫8;^ч	?.='x]u5 
QbضaX~{hO0pףhGN n*- ^k|Ae
\G##
?vG.N~U<q7!M|*E?p1q4ףT aTz.Ohmi<{b@@O"Oo{|AsCѧ"iXLR+o0**^`"͝:]\~6sy{(S!`xpnrM@B{ĭ>=9ÿ<}޻42ZŐUpM|/t'/pѿSZS@euiuwyhVGzhƘq<`BuvۻxO%;@73PQ#`!,H$ǂ[JNiHFD9 UBėzi}gOQ=W@<.:#:(L~{b˶%_f;do _Jܬo<WrsoK4+h嬆i
,JɯS
b;bKvVYT#ǟHoe~3Oxm?_=y{#%|>G+9QBȻ)""!;+wleS*I}:
]6KǞڽ,O?O	|ېk
4$=3nV~q.g䔖cL^7z.wiHu6S^6շT'^֒RؽF?jR\o[Z'9
XTyZ|sy6ԌjO/hKPKQ?h    PK  ]W            )   ch/qos/logback/core/ConsoleAppender.classXy|Ɩ	I!X`cH7r a-%rb(=C)m(-m ^[J/]k{eg{o͛}Sm|2*g$bt3(XR7ּ[	PL{.fUߦe5kCyTJʨ%fn(٘bzjbQ-ĨiچaeK`mD5j$ʘɷ]p3%c65kh553y8GBXPWQbi%'F>в{|0̎4tN^l
+Xt[ɨ푩
/ DR,#Ѷ;#0Ktdr5$D{mjZ7c\`BrF4Ft^5VEvDJj)83oiXa($2`ru`Z=|]'|gQU3X;(|wKZ$Bx#+p!J
)@+&s:y3=6U+lG)lyA5Vs.	؈v%ƎU28p^3hETCe\x%1wq͒vvu3SHiMP"ȸ3Jnx4Gy-c+zjAER8Vm@UAfV b2~ޝn'z(Nc8akH
'lq"99씱WZɌk[u20,ީ+x撟;Ҋi[Sv\FzSk niNMFRm
w/Ha/ყ,|^'<MbӔD$2L-58.i8dm^`1"c?NB4O
¿6aɓq^qZ5I5MRllP5
+%Jƫ)-mq_^^t &lEC Wo)gAӞ$ `k+i쭸M2ތ;BSI(41լ%!BxNcqR/.%'2]UOjgX"cKxQT	'x-;qc=
h >`u	apP#.OPvM-^I1|dR;a:< -^*ႭBD@Rq&EKaK'R'lsx /g:g\w'eiy%:	+ *O£T"ԭ'ɡxZPҺ4FM?yN>ɝgɧe|V(YfEb2>ϓXl7Mm?rM.ERR(A|_U_{aH3%	"mߔ-|VG17IZ9r~O4/I=d&v8e԰BřfWl.,ķmP7JQ}M\LP$i9Sʣ-u胴\өe|f@5zy-zRI)ΤXp_+H܉2(9ѳo*VRCTUNd>r 9ܥ 
t#.;nK\ﮋ6þDKc~Z+ѿP>:0S**,#ˊh/ 9$uQ1H8ČCMΒUJ[Y4CGN+A~B\~©i򞪴rYRK-~{zP ЖL;m83c;$&I7LT-:z~9d.vMJ'¬O:ع2e3kLDXf5bɬZy2br-LFtQN(JeAh[%teq.iqjj7)IK7xж
%;VN]<.9JyH{?QOJ&z] ]ND*AUygho9=t.!؜ͪՔX$geĨLMOJfc	Te }'-z݅~HeHG0gh^5gbsڗoNs3 =:J%Vh"Q~E#f¯zv{,s5a	4F Dj
$rI;!R=G.s1O_g1[BGKGIч0cG|Ce#fRx+OVZ|{AW
h+Ci{_
JmXuYXV!_`ucbo&
hm3݅J͝Tzx+pY5E]CsbvԒXr~ Y̑p$
i>@g1J'pMWS(9kJxèeZ|+Ǡ@w
IXF^W|y;3TUMw!\Wq
oqwŻqk{~W1<"IGq8$۱#]DᑃtOy7xھ$R4B=4D멖7"-TýȢ:a?4BWt)?{Gp=
tQ! Vɯdx&BQHx/P~މz
3q#^Abe\Xqhg\qI(2	iBWW%$%{ү[J2	<D.b̏;,mwg*+TbE!',(fo#]/e-6Ȼ GRQ$Bz8?"n\}DO݅C`PtÙrg]
߱(aM	|i2ƍUE"_MxnHOs%ږ"Z2y##]9/v\I
[)U
,TTeСă$'"qYlxas?[I֢ձlVＭ`
`].A PK~h^  \  PK  ]W            !   ch/qos/logback/core/Context.classTRA"DpQAXe-`U('f`
>~eOBd_rئ9==_ P0 pu4N0*?vX	GZk@s:VeΤ/ض3ZHT)i+sÂa(p+G0p&
~UqC(}aJ2
:MvyZ*P{%{mTh3XˊZ(p"
vH}H(Z{ެB]Үkڕ~
WC"#,v&[b?A)o'VN<֜GOR4iHTAqqIlJuQMCQYլ͢?Z(Q̕*T:#,\I
t]&hnLgܓɚ(]xb'mc_n3oEf4jKq8ֲn!A¶gHg"Kє9c=gؔgKOH1[6F35Do$Ij;H+4 =  w.N@paY5 R|#)<#ħ9#2x"2Dk0I%Q,o`K`Sk^oP[X#\wd2PKL"1    PK  ]W            %   ch/qos/logback/core/ContextBase.classY	xgy~?]+F-^ي#qۉY,9+hFZyfVB(GZ0!q |@^qKR
mIJhҖ 3YYyx}痞^B>9zZ3ZlMjjja42	!jN3rkZV[FN)IP֞RS~BqcpaT IYT+]WTs(5aQ@
VPU-r< 
b$@CXCDħSɄ)OVqEc5Juc`b j"l͡oa+b1S٘蓧hF%c+rZצݜ	E
`yq/m҅fC_/Q@WhbmOZF\KNdc aZ+4u,5e3`+"7
>=;Sҡl<ea9p36paBqNQ]|sxl%v>B{/nF(im|n_1h&vǧp8U:D,q۩d!ؒF1ۛN+rCL]gʴ]I9U53*e48$!n{Sxȕ8,NA4i}PG_W8«%"Xo)3rWEZ)dG3LUR8Zc8		w58Ymròvww	':^+A634`e
z`O?9&zr΁cC').e	}20W~YԞUM2NiCkga_Ca
9(?-+M@70f0+"^B10jz!CSBhNw9-$w$7
teJQDIN?2H$[%
ogqIMEENS:$3'}&#Dl9Q{4mR~PfSScJl28	Ihd?{%|@0kXM.K ,e͚*cr&mnhyeESS~lDGEj+lt<5#a<C¤'c8[ƜhZ:k@.<wU?O)	? 0wDqʙ|PK a6]lÎ$wI	gEVtdl,$U8'a,Wdl
FK (.6n,$؟4Nb8yÑѸ<EYCn ;?30pH?'SԜrJ=հ+9v s	_-I>9+z1Y_+y3r:]:Fx(uSy4eNutkQvG*F'k˝01ȣëX!|SdjI4QMkB܇9-n(*j#nCXĉ@Jxӕq1ce٣Io|c$Wl/VOX;qRۏ$ֱeu,XDżSܗԛHbRhs	pCc&ԈSl՞Z%LqZDES	w`9)z̛ۼeTKbqWocQD!V.99a
K5
WR*C$ITE|۵|ys?듶\BMp\b	Q]7'%R(s'%Qgg59Iu"5Ԗtװ=ߢ.FqYMN
#ikబĳYbN|R3p
癯ȵ/6p2
di{K_G&GUn18⽺̩~F[vT'+{]0bm.bO8wq
<>gwꆹx5'2鄘׳7;%pyr/G.Λo6fGOZx6
V٬ۊ89׆\S8uOjSӚAضv7;
ۗR'-A˻Ն'ZnjNgjbd\a!nnTu''?uk+E
ӡ);EL^UT,rXrwfUQoRp@`ێ78nY=8-O
<vY3pBI;%rӮvf.O)6j

'}𼊈ĔDԺ]}n-ª.qKiBtW

dŜ
C7iE:M*N{o+rË=:V8K3EQ	8~ҷ+SN)SicNI'#DDy꜎[l屬BSާ/[6˥i2	w^3-a[z!zGهQ7=TJ@+yě;{=6@VՊ='=ϫsZ3"k~qq<%={rgW#mx;7=)r>>tDlűCu2V_@r#/7a/9le/˝5xxnC{l?i	?cfՈJ4c
+Vh._яN 瓒-mM6;ⶂJcOayAyC\oC|7
+#LX+-",&p?NpشXճ
J
^nH#0~,Ž#d:λ:cHy22s(nn8W`Hb%l¸)j
lFHVM*T]Yɟn9!!	yE^a19*Lr=*np=lSaXDaF9I;oiyzyW5(Vs=:b#*U*?
ՕS$e0Yu395uK5%o<`#A5ٕ
2B3qu\+E_[~?=^]m|.B--1B1nw\R<f<VL*p"%lѩD
 U.dUt$^\:I%G_+כ{ĕ\lw
ou߯GK&-td9BEhwy;q'<HaFL"O11x3.y AZ,fesls{k3.]obA'4?fap <)W)*D~xwgs`=kj<mK؆/s
7ͯz
ۉXHv[eߌ\#VgįF(}#qùpãiM/[Zn	~>?ēی^4|lsxJ<?*\`'u>#Qg? ^bpi)euыğ;/0(Cȳg\Cz31n\Ǜ/KQ"\?pcMP$s]pC3!JJʰ(S%*K˶D6%]8Lv'kQ
+
&,upgp;E5(pS^E
v+XC<`;>S!"<1-:.F>LIZ3)Emuo@n;izQWc9_PCpg~(İy^1P/'~[
qF#@[-DQ?h:Ǌeˬk3
t<~"v_˝4l!lqk,KXHEQM}qx5iTys"Uxl=H=k,n=t)}9B<Jc3tDg^~PK^H  @(  PK  ]W            '   ch/qos/logback/core/CoreConstants.classtGǿ謜Ns
.A6	=J{]$Yݭ(+ۄ{')B<xwBC?sH2{ff3":(ݴFs3kqژGF3j8	ICki]7nJ)H0dA}:kO	ˉBQrB]{FSԣiըlFҴNKFڴv,NBNI٘
1.kJ&I3O[]ڒ
#L/*VP/MӴ\0La}:31xKٴ{-aIӹtLbɝ֐::+On:.Hڋ-8L`+A8VhK:\e6qaλ }:LwiBЪAsl.\3U";.Z{$GWj}KtoSϻit^4
qRB}9&_Og]_-W;axǆ8
sae}XEq0Y
Y؜	 Q4QPMv0Wu=su>@k:EBg\lFFt!h`
g7'sf;_mgCi=zuaf-fSTǗfZ9cQIفbF#;F%gZVT-O5yyc<E:-kA}.fEaN+W]F3SCgTYQߗAf8J䶜W=W[jQOјBݕp*BN/;`|G¢;XqK/b)
Ūv
qJ%S(jq1Po@QԱRIR=BeْS
sϩd*Գd
@o-Yn9E
l>ZJQ@˫>/DժjK:ϑ,.݊uR|,ݷ)B@w<Jz9KMѵW,#Ѕ䱧z;mۤsqXL0@a0H
6zQKv㧡zvZK+di<χ+B( +`WBz[Zq>3M-"Q$y(븑],f)Hf@=]*a5WU}ؕŒ]NeN4iXH3HYirM
U]!=*=8%6CAtKQ5lXUE!	Y6rٞ,b5zZ7Z1]VɷlCn0ո񐺴+lSYH|I\}a`|M;>va8HZ8?aOGCv(R<mTW+O-PV^ZhG0S?l;*OQ6Ew Ƌ&Y&2.%+x8/,`#[pt91HǲdIfP q&}1X`ۚ<Er4I.@.$U`[mq92exOlzWCKli^
TZVS'DUMt}DN߈-wo ER\Ŷ.Γi6@Zi,
^"t?A7UWdpLEL)dk->v폱"ʍl6#=Ɏ+KVpJ`cg
ڜsZ^\.ݛl
<gcl'BA#QQCPRT阀C
[,+ZQ-^(T:]g<+
FRᖀKR1AUiݩ՝ɅMS)@3_OṪW3F/|qVW#q
9&2\k@J5h
КMM
ŽQA3.\)/?8"SMk5a>=/3t
 mǂ/qA5pNb$6}ERE-q	Hģq'WH|%?|,q<%48Up]xVk	x^'R&oD:?&ꏃOHO?YO~?l~?__(/%J2%~
j_~o7K[%~;Z{~? ߇7K E[I|;%{$(|ğZπ?b~;%U S[oK=?D⟂}{4\ũz
wGiTS
o(W'QM>En;2ҿ;ÎN]7[:n]sn]ط@wRڻMtm:FXG/\*&qrvI\1~	8x п
PKU`T	    PK  ]W            &   ch/qos/logback/core/FileAppender.classY	|ujg%@ b%!_--H pjZ,vMکqNҐ4!>ziNϤw&u73Z~~/>`ܧ! Xh>heցQ#>lv+q)GB:4N:8iLfj̴-T*(_?TrThuTb ZMg"i@|yט2CFsHhD@:P"%CK13hX|	CN"JHc%,S.wz_c%i++rm-GVkXZ̟2e>%XXb{)^zE06B-t4IxʘTΞ3`m.!YuԸ%XTxHQM0$2m~|aY͸EP1^~xPO۫m+mѨcE;kFTԈǭlʉZѺ~/|u)kTޢckN=Rkt)}f|Ӳڭd2IXTmJXLanehOeccs,zNmޥN~G"OHcv2amLܠѩ
S۶lERIkwdOm#m:vw]n=.'+t'v:ʹCC"늄p	0t-)Xhljb)k)c%J د~:FTfsQu.qb78Ry(Z_65@B:&d-̊Hπ#-PYq\<:.ʕ¤
!AVP9fS!sNqURm#]m=#=m8{4ܫO2JveH*#.9t=%|/ާ:u		Ǵ
"̢a|@#:~EG#t턑) >εm6bkp8r_ӡxLA^2YSox`Hf_.:a&%Q>Sn7dmOT+WD|	n|q]re
ȧt>Me\Dëʨ3
!>+Ux*{lۊOV
bڎgmińOfw*سY:NWKȨU
_9dT*)Lf~}9
gu<߿@a5qZ=LVJMGZv̨.֪)<
U̍ь:fLDP
(TL8죴,`GI8U8[u	yM!;
R;U~	_30y|^ܦuL
*pk:ʦTt㯔oN!o_7S^T{*I?_39ڢޝPowU(pQrveu ?˛r~vϽ?/ݻ$ps:~1$k0R))*G"I[͸y!_
?݂48U$|ΦN}oj*ȗ͊xϋP	N[ZbPR0ՂSԩ ~Eʥ\
9ٶqt*-2Gd63(+u'Utm&M#ct)*t]"RcS΅[</tQ%Q1C)KtdC8]}F"M|<%[
Me
K+RHdcf.uJ[5q 9_r
t[sE>aJߑqc$>wttپ@p_vKۀv9LfFM{P͘Ί!NbЙHxuWsL]z`GV2޴Hl|CϪ6mꢢaS/])5V++['+]KY-/|H><?]qbWE뽡Wx?H]os6ǙlhY7
ו%YY_SW]e*Cq_ROST;C*.\{F)qk>T%EW61A`vMfyo/ߕW J㉇
/n<%?tlhXE/%(WKV֎^9-(
;sqe9tLXc~N|,Hdª}rgX)JeO*ѴdN a2]/>JpHF=Nm|HY+l䍪lSIDGޱNE<]%LDI]]53a63CBX:MѴ;FfPX*KU!9X.d4q8L3:dM~	{:
%iD\bs#`鶬l
9/>vFl
٤w1gɸӔRPkJeMr,F0VAMZ+"+%p9>lW"{5D}A%eR|bϠ$<FU4cϡfB,yKOcI*^k>QP~J#Wu4@g\ǻޗ}:x_2*b
{\ݧJ\q
k;݊rExĞ(<r뎀q&lŷ:UN}֔^dMo	kv{Wn*YnG	lMc9$cYps\}uÓNcS,2
uǰ,>/ֳة(vO86i~=\qy*wE?8ׇbKIh̶TC\#=̘Iu4V0Mg2hallQ܆{HNҿ'p'
mY<x}#ât0blrs?wxX6ͳr瑂ܙy45;5.RY4/IHO$'i]47,t7C9ק^zz8t {fr30dA~OǘߏT?Bm@z/kRn_ߙ{S$|5
hLCLePJG ^F..;x{3xHp[Cum~]ڏXISOu[-/"[S>Y=N=U~6}9qT)'5ilqAO̔1KN03>X?z+F붡I[\x(d+Tyߖ?|j)Zr?"=E/Ť2tr7Zy]y8bҦP}ڎ{RTR!ܘ^Kpq͠_wNmx{3[W<1Ve8J᥽Vo4UOX-1kW-}$6o{p_||_|t2xUktqr>ZPJ:VMFM6썂]7V)&4k,5ѤHJAAHwfP=|UuϮGPl~CyBn.4+Ź=r%W^JWVg^h5sɏǌO
UUGj_\P}0#'% w ǘ7w
)SgD׉s?/wBF
vy*82AI-V5JD5s7>Wf/^ߖs`kc Bޤ>r	`Q/hF7J(߯(=o&67n˳rSMVCPn&Y?x
?HLыxWoY6iPW%5cPTMbӢ/
C<+eqll	5ֆe^]n|f[-ۂmć^vQf{O'@rb1RY,Zak\d	'T:.1(0$+k\;4>>uCh-8sЈRʧ0/
xA7<|y6bWurat1-xCM>O P0Bo"%
/o`<?4wP}ME=E(B2dTh?8.,Q^vռECUj5tsrRTWYX&3Mb[4DC`M=jn=z7P'/.#.1xo<9^{pwפ{M!xpL=PKw  "  PK  ]W                ch/qos/logback/core/Layout.classQJQ]fy2㸛Ɔs̱zh/b-־O W88	$26aO/20&f<lTUXP>8[W#4ѻ{S<N79艚 &\&
偍?RH
|'
rcnkkG1ݓjl{vEF/zꋶ^f>\dnZ׫ܮJD>1cP@qt %vqYN5kEf2/49V?ǃ;8DuPK3#  L  PK  ]W            $   ch/qos/logback/core/LayoutBase.classS@@*m	*Z,3Uq5%X\U'tFWzŒes߽͟~l  0v~4mbKT{jT;L-MmF 
S(C41@!0#YnpDsy]FpcsjqvB7a@T}FOE ^8ZFY-rK7cLqZf\7
7F|d=i~ŹШV+T7"0O`{B;	f>\
ĬCZ0!hZ{!~椧<jn&Ns+>Brl*}e >l*nuěsL`y{-%EdG	$zn}|.n7V>ub{I]riѢ^6(Yfw7[}[:g䤇*kUnTh,	6n747< XzDxg';6h	ھ@Kv㰀:"E{m%@<	K4y1gucsm6}V:7عo眝A'fMP;)qUJ)d{d&I{/~ %){$%qR܄Gc)nʏ{my`|{v
f!i]yv43dylS~>_ugҳrzO/ ?' q$lPKbO  H	  PK  ]W            *   ch/qos/logback/core/LifeCycleManager.classS]OA=-,]P+Y?Pž@&j06ݎ@٭S'&&g?ζ|Uyٹs9瞹 h!DFz+4WsTzW'Ud7M1GE-%#BY0a$ĀsdHu:
VpJX}6:xM6}Ox*d,Al1q(N%EZe˔U[qO*px&{q'OD21m2fF-a0<UĖ>qq/J`WbC4/¦<)hˊJTu6gc^_M<T~SwuƢN1NeYja餁+^B/=ڭ)4(3R]N2.+}*x
z_ j2Tә3(nRSc0{3dG B=䝻ΛVox(f[ޢI=jX/bbzIbr{`/0!	և}g
qz,N]k*uk~C1<ƙ#]g]2pP[Z
Zq%`x
0|Cj}aiJPexG|Aڟ&4e!ej@4EhaB$d'cXzPKn~  t  PK  ]W            *   ch/qos/logback/core/LogbackException.classNA-41Fx5\,cǮV$VV`bgb-vg&}&AB,	W-BGw
VdXbn9?jK*n
jp?#Z׷	YbplOܽ]$#ܫ?rNZ!Wa{]1N3ʺ)fi~͜ʐqKN4ʇXؖæfN2_7Q)Iɪ88|Ϙ3R)LӞ,y/ZR⅝C_uΒ2yr~"1+1dU
;=Xe2f
a&Z"]߶q|PKSO!)s  n  PK  ]W            .   ch/qos/logback/core/OutputStreamAppender.classXkxU~'$Ӥ	IiKMB$
)-$MidwLYffo("
M-U)ME<^{ff'6D)=;{yI g$4&[0ִ96&&MKk4lG5%(LFQ	-4I#9n~ڔhFJ6&C7tSBqS`֬9Hf-K3Nk^⺽YrbEJQȨ	Y'uKS'rH$Tn.Kw41XBaeO	-֝!ѽTIX&A6CKX-y	W8HhFt1-ݺ{G(aM!Kڭ[,˴oΩ2Va5hLG(cDcZMhP?O.X%lTqZђN{`ahiT.9ׂK	qh)-,'6	㺭>TҦ1/55;Q$sΎK`P(:cwlfpw!BCYKS쪣iݙL(-BBVn(.O}K,~MSԴm*㎓95I0[Ɲ|=4ʨi))QNvTGYc<K	ΚV磇c9ZQpP.ֺ@F/$Tp0bq؁R3FC_ v
#\Je%b+O1,jiE.y\s13b2TP5r3$eDGKLTQE0.C}uT<wjvB΢gI-m2(	˅B"uб:p+د53GF$ P9jwIG7o: cWMÛ=V}PƇFGl/˵((!qֹ^wҥA7{5Ehد	7ZE*}=^]#ZR8[bq>L{"֍2>%Zɲ3!;LVwY-bd;R&vWGMwJh-(<mT㮗aI3cV;p43a[i͵?#㳢~.tg2JG9S}_3ۖ&vpc`K{g;9FW7mىTӃ~cC?
.꼉&3Z<KljCSsᣀ`ذV .@%UYz?тRαLh>snϨyVjz^rG4%Δ/_|Q=4ўH(uS˞M"ꞵ"&GrK
bf+ȇ@֒
9IH,2h14Ed:ź3\åg]б,/s<!%n]ui-KEtWnjϕp;S	9Nľk!O)eJ8;廎znjSqP8掛5fXc~&ጙ1b4C`=2/#8e6jo/wj0߭&"/
oCU#U7iw(pn]j:P1rajOhAP#7ezhUO	ƻN*o^ ㍏Oqݗ/I/vűQ**VruSz^mH|_)%<l[Eencgh9ӕӝ~E|wpc+1MlJX/p{rc( Pg7#jKZa#\\[Epa/Ũ9@E;a<ķX8+V>78}ilNЃi/83Yi]\r7S<Ĥ`-.EvU񡊯
9D&&CշhQQ]b`݃C1h&.MGH$юbB
0U0M}G|MԸo1, yU%OaQJWhł^mf> #&iy |qe9M>zqG˹po7.zksD|NCI0z]֦c#0Cn	3#{|bըAF_OkYѝh/3;."STIFQxǰ}uWF/
Ɗ0
+ȵ|ndMh컝0зoC8@xأ7Ol|_./45:3螨j?"
ѣ!~t=}g)+3&+,j#E#VI`	eڸК}k=|od!FgPu3[\nA\w#n=6ZWO
+G'rq$9Gq}b	I=P?P?Ҽ 5/(45+4ϹyNjĝ׼|H1DOņqdax唀#k rǨ9/E̠B}5ĉxLuA:NRgʱ%Ōur|ͮ :[_gߠxIoxd/	!)T#ylˉvq7Ӹ(>/3~.ah4|Lz="??hWroq&,r7Rϗ,iY;ZJ`|_:xӾ"E`PЉm}cJTYUX?o*78Hįy{{0
c+TEoeyMTR8Y6̳!~Ilvϟ$PK[  R  PK  ]W            -   ch/qos/logback/core/PropertyDefinerBase.classRRP=Fi!$@6ETRaƼݵE\	IQ{epfRhW{vϞ]i_>X<APNs9j6wxJK'jΦ
cyW-7D$	5?uBTЏ؄R8ΆR!!}p0U1aBj&X*wъQ1fd2;UmakZJm0by!_
D#`dUB&ԏe?FT#ޏ0^:3w6e:"j1D"a-5CQ L5Gv#=Ϭ'i[]Mw;
X("~c<kW<?
o8%_zPK⅜    PK  ]W            4   ch/qos/logback/core/UnsynchronizedAppenderBase.classXWPf1`'N^pĉ;P2Fe4fgFؐ6ifMtKݤK紿f$!?x}}{{4nǰ
"*l7aڋZf)=Đmy
/y]sD
4M7	
b**p<frWLα-cM&yN xzV@*#yU[f-&&sevF3c؍yVvh\,hwK(8ݥFӝi6oy_x[(}/ Aa6+yCvxQѣأyϰ-Y.VqD,mi߄"8^}*)
gm5'/Mk'Sq	pQI}zjGxׯ4elzkf%I_Dt%b޴zSXP1/3ڒNf48ќG{kW+"iU![l1gUaXYf#w@5 (FT|MƧq$HIQ_ǳ]t{@fXzpIa~]*91qU\Eu!KS3I]'LQj~+&6-NÌY\hSc;#l<^P𢊗	V䐩-,4!ZX@K:y5	vFWNlN뀩bV@Ri_.wB*"ݒa
;IV]PxPί_*^<M.=^_3̄*a40-2ۡJsf@{)WK2>95ԅTrrB`w)57<4Cv&
K/,ΤDES49]F?jO
/AGv {@tHQ>}Ekk-ҘR-iYN)&n/["~gXF0mgÝ(|gy	ԹhK>\n|VYuJkx>XvyXrY*39j TDbv<Qޞdǥ%LC-?{9;6d?N_3=q9l؉sE<	x8Y!a[dVZKOdM֊I#ZƳEVҰ~NIR!Rs(5DJ[1WG-O|1tWg|12U-ngUd9r`S.iָ]ץl՟QПA-_??78
|ӗL.W)YCg@<~"pJ_=s-wi]wO.uYo-~ 
MK|AN)u 5|wH^(K\#Q5og#d\c
\c
-KO)Pv%bmY(S)D|6F^b?|jF9wqf`S8w鏰Jzi>n7qeHKTm60S9\R~r9JW+>Egʎm',ϱ)#D"Va5<1C9q/qalH7M#"go{MWy[T󢂩
~N$"{2I"(xڤa̗.0⋾}ѲUQ?QDce#~I*ї*Xa&B0B0-bubI哪DqL_nhb[|sXsp6A2&W311?*rEȚ!k&B2{eٵ$܀]}+LW+.TsEH/2թvku!2WDrJ5۸烪<t~5!3!wևuPKF     PK  ]W            4   ch/qos/logback/core/boolex/EvaluationException.classKO@UAT|((
j!nPC@t-rE2)D
.fܞ;lA@,8{,LGmoV.!qjvP%d?FnrԌ
H:7O#GYmKSD	ec>)tT%R4[J9o?'t_3l4@Wr@A=2CXMIBvuےލTWs<jƂU!D~[CDgxv yu|Y9+ֱ|`	Q*.Q,
@&k*쮳W
ȇJ`RJX̎nKG-6mf`*`15Nc#n/PK    PK  ]W            /   ch/qos/logback/core/boolex/EventEvaluator.classRN1=/11qlD!㊠	ƅ2`L\~2(qu_=>^ߞ_ a#xwb`bߕ޽LDFкCiMıPɡZg9r}4U#{(#őg8XliŐWJrOsPtG1h}i⍦ 
a(t?6HHvW-(U9ul~ '`FGݹfmΧZbt1I`<bcb"C,ydi)^(Gv(&նP*Ie;}PK%" J=  e  PK  ]W            3   ch/qos/logback/core/boolex/EventEvaluatorBase.classOQǿ_+ bm+v/MBb
&M0&X^`uݥSmRc&QM- *p3wv@PC(0"yr<rZ
n
cKї+qO0Dʦm
C0_8bQ
8gؙi8%z'lYq˥X!KNy[z]*ix6,V]r)}CtsxȰ6r
!\9OH)K ˠyR4؉bHȞ$!5px9ka0$ۦǠC63"|T-U<A:_\Z(!A7>ΰcꣅ%0:O:J-ˮKɝr
aTT:+.o$-Vw!M5lvr8u: B0C@6Bo.yF>\F/A<&)Oɯ݊3;wp368ĹTd?ZBwq77H5$	!Ԫ//6So~qsX"'厜l^/{)T_]"=v̟rj7	f䚙Nans{&f FPK!klX  U  PK  ]W            9   ch/qos/logback/core/boolex/JaninoEventEvaluatorBase.classWWCd"'FM8EK؃41̌0%i}O5%mclO{AHHazwsS5(EHLz!ĳ^-[YVV_'VtMhټZBi}Ωzԡ^AX>fUcXm+ 8hkdLFRc*"8 oYs-4rG^mQъ׮9ne:
G
wx/-WH!G<aY͜oqNH;8,x²I_쏧Ҷ@WZuNQg9[wrhLnKa{֝T$:'əc%Y#%TiRҸfk˺ۣ+R$U8>jfNR5SDI՞V>HɡkI*Tqg%"QGA]+V {NyoNy4N$BϫS븚*xqjZILHqTzIP#D*^emI'Қ;mQ'
>d.uZ&S s'lzJrU1qzII;e0gLۦfy-;^fKۃ&q`/][<WT|WRM1 uO-iD5סz!|$rrKA ޾ +f1]G_Թ{A!at\+`Ik$kǖ"}S(9Vပiyc0~2h6PԵqG2dtǰLzq%X')cM5̪X"
kXXhB Q8|VF
G0[)&ih~yIXfֲSmȵtZnTQXk9OAad3`*Zp^[T6/JmIV)9<k` K#Z.Ĳ.p}L `+ʠCj-}u9xy}/$
1RD@bsHMgRo|vSVN냆ՑGKcðkk]2NncDMˍzQT"~yW:F]nEohNf_5̨^9NY;|ydc1߇Q{m0W%/mPKMK˗`ݐffӞ|g׷Pf,臔ʄWMS"IUGw*\Q:X_vt|&?U
>5ۨ8@sckÎc'.+ltoj}0璖}?_j΀&D,% 
3h\G!a2D=zgDB/r|l-ʦrz#ȢB_{qejwo!`fGRc3
_	;6:iHmְ#O8h4q 9Rsy4z<+.y'mҜQt5xyc
C.csv
s#7yw$6sJ
';70 >q8凔F)vA.@!60H<!tQn\
/bĳ/F"-T:ʷTξoSʛ?
goϾ3i==kF+CVq61Qq?GZPy%x/]Dp8HBS߆n׷xJ)[%CE]M;e2P2T?*e?iW䐂JS̥
oQE>v']<	DSw<y6z)߄/۽8עF;A_so~ɱޥ_y_{bs]PKcĴ    PK  ]W            (   ch/qos/logback/core/boolex/Matcher.classV[WUP@H)RBT{SHAPhkCiKu)L9?|]KZW]K]?Kd!L9̞/?~+؎	":Zʐ6MڪagMYdes#6<>mur,1МYnG5Dut@gs6.,r$?y![^b:4יٔc:RQv,-Jq=RRҧk|!2e³1qBEc$é)NRSn
?QEjV!Jv)0f
3R=W,kbS/²
N!(ǰ3H0ݍeSC͏,4YrRk80m~̎KrC
bX},QE~T$y$y̐	1,=wX91(I#|LmZf;&;TM0q
tLzHVyb9U+(#o-..D15RY5	24CׂU-Ida/%aD-"h[l
u;V8IiUy$[<ݨtX4J0}-?/{YJXDb9`Vo\eL
I,!WZD`0H@#oݲgYպz OwLg(
EAʅpSAϧTQRaW
s]؀MIg9[:Xa
e@ip
6\w\{kW2\-5[jzayKpJ>8نs_pm(i4@I~ӧJ]`J{ӷO)`L:KKe:Gk/5#]܍'^q9X..ߵd~BUgJ8XcR5Ii7IzDtl(<In=HDҺO@~G4x{<NВ-9ړL=ğ-D0"Y1
_=1M4f(W$cQ'q4*i^#ITt)emc|;Ay5{;0Js1R\p)Hwk]n+ BgjRZM]s4/9eIR$2s96B]Y<
*N4+L&@~4{RL}U_x* |0i r^tG84/Hu&e4ɦР:WBh@B<Y' ס@@P F8x=lD  jۡ@1Pl)u҆	1:tM6'BPK:J  ~  PK  ]W            /   ch/qos/logback/core/encoder/ByteArrayUtil.classMS#U!!0#dF>#QT)
АLIGg\?ƍ0Sjܸpc7V4@ʽ7999}< 	wOD$VһVyۙDc~Ԡր?:".$Nh>Z);{eg)ZgE۱h*nhdwe;eǏF4@3BgcXE:h=
w~@ q.S?_8YSJ	]|`Y-ptbduZztKE|%W'PNyW
 @m.-Y7b0!3Y,YMZ_4MRFblB)+ǉLh%|@Գ~9p
Kv޺W~kf:ǝB̭E[~w7u'k	ӤVݢFYJY{;".Hz	hI]-PesuEz,?lyK$`,%H^R
┤6=HCp-mR-veadO{~<Ƥ&P.f*9Ň/ |8o	΂7{.4F@9*kk0%tݞqp5nMf8?>XoN=*prhnnrMY~ś#4f}7f'j+
\Bx{:Nl|mְ##z.BN4w+8#50mCII;qIשyv:-M+Wg"ZwUTm'􇛳J?VYNNl}\ū5"ު||1W>^g9tAFn[.|npNR/y&9`H)S6Z!|@nܼ3_]5sL rckM,A&w6o)`
﨤j(Xres&X6PQWfÝU{XqDL`Ûf<>PěeCwSf}0|.u,=Y!P/יT+c1,Bȣ[mSn1\{\yiU;%k9WdRJ-롽@?So^PK
pӄ    PK  ]W            -   ch/qos/logback/core/encoder/EchoEncoder.classTmOA~J*oRA(-0r,qW$~5Gg/ٙ癙ݟNƫ(Ш!	a1|xI)nsc?i8H
pvVe{!<gڦgh'6hFDCTGt=~ȓɂtMȠr"vF=aT"G*6kщP24dۓܖC[~y5}Qu@CWoLY:4ԉZGG/B P<512F	5-s)\1K62M[V-j䮩ց2$K&_1CE)UA6yB
W^'lġߨh$0H,\V\B[vZo-Hjx[J~ɂŹl-9݃Ӝ"g*sIO)lR)$O"d1X{sQ<Ǽ-_2cڇξک9nH=bpza|;_)i9Scu
 2ܲ
T
}ٶ	OCaJj2ܾܔj!
tOeL=g4ޥIFi+G4bưaFjQ_$H2c\YsOh=5`e`GzJ/zj6{JSj9|XYJ}?4{ ARqرA |~ГphgM#?!\\uk+dO}9d(Cȡ7PKAzm    PK  ]W            )   ch/qos/logback/core/encoder/Encoder.classQMO@}Sx7zh"H=57O:bӕvQk("yY~}|±G893LM<RYjL'eXE:3UJ*h
4/v	ۘQ2BL'ܼrA}BچpDwagsGCXn6	7o7?jswIce99G;FD>oϡ]~P]!7PKvX     PK  ]W            -   ch/qos/logback/core/encoder/EncoderBase.classN@
"^~]!A+wC ^ɍąCOAT.z9'sgf>>`+$b֥yxfiueZ+L'cV^U+'*3DfSH$1$~Fؖs!\:!w``fB2hǤs5iuK
R%]s,mrWwQScB*2,sz#V!,ԨDK>!6lyцl\]wJZryKˁbw#gw-q"R|.i3iҋhMeRF˿="E}PLcbrű)42gpw'ԟ^`<N=Sa0mbbF6/PKl    PK  ]W            0   ch/qos/logback/core/encoder/JsonEscapeUtil.classVSSG-APBʧ B05ZhrM.^LnjmgRgڧfG:m;'}&VsI
.*<
7O2Q3gcE=i22+dJFN|[)VɎlv$mD,XY-Uu$L3jcdZF8 CE)VC8L֖[yז*T#FTA@V>Q=_0FNS7:SE]2ئ%J\M$ӳdju!6LT-%uT#vRp\@M8@UtS@MKD"%PnbYiU#ǨQЯb ~׫2r;~{o;NSCj]NcD(2wÞO[fFeL&
9bzӱDbRG\`Kov[:\+\`Zr`V	l^%	yUo0=L㆕Kŧ×denA@@<+Z^Ԭ
G93Ji-y])E5'^T#tbZ᭵Êɚ%RY
lն*/Mt;]:ݺ
8מxigqKLխcOKݘ4%W(SVE]ha|HQ|b(G!WC<pT{Xbp8eYT;7x8]U?ƾ_b1P¾v?DCZ/3A}t݆j	! &W]qLpcuuC,s3|Dpǌ5XAW`*2#h[7EaE
'=x|A:W":rHv	cH֚ÞKUF!]v-]5ߵƯbg%sM$n5s7CoW{Þ:9m@OG
OW{-
~zh:ap:!&)I릃|Y@Zf6Vi4çPX/Nơn9M=>Da?Y(EPݭD١ѝ?BC03q "Tlll#'Hmcȑ&)u9#Pw$%UJ'KkwG}I^ۜ[tuwwGYq$i1
#Ͽ9mdE7_* rOg$_0!nPKC1  u  PK  ]W            7   ch/qos/logback/core/encoder/LayoutWrappingEncoder.classXS=@];_XbuRC5	j4YdĮ63i6n6}7}-Ԥqg:/LN"4nV{;h@cM"p:~޴ysyAϮ%ȚJgnKs.	4&gb"A\C+4PMZz3}L59/+t^7Cѯհ@82shp?D+eKn9a93k턹X3پs}%fx<Q̂̈́b Bb#䌄"9o31X(HI#0	鋋et$N9wDqD`h2f:rcVw|vh	
p\*rbI@r;$8XIrC'؊HFЭ!vU,Kg$WV:*Ug4!-ftitƋ@_u|6aTj8u%mi8{,T5|TsIcYq{4G.jǀ5ln\L^&	\8.ӟF0:P-a'iishӑnΨ'ò3bŘʢT=IaJJ|R)Ioj|F3Y{}bh+
uBN4|ϲYˑ̱Siбt3TGB5yܠ%0ӉS(:t-ҼSf4,tpM_UM՝YjD]N'C&.t":qC*ڂg7mԹ804(pș
ImhST8o#îbJҍB%),Q8J̢eDM
)Zu:Lg/0!ǋkҚRM3Sb9{8[F,PJclRcvR꼎N5(C;G9C'Yx,NåW
mf+#`s,ǔCW%WG킟/rU!fm{s΂s8>ɋ%J_RM@*4agrێYJ=KPwx!4H%/m	">eTrEa}ާP)LU鬘v )8JO
I"WqoG%eO3U鷑#z1M7
zb^'LsX9ڨD!|Ǉ#Ym05m[#pꞨFGH}Sg]Gxy.:OPs<{mxM=I;k<DJA]5bS|/ͳg9^_ص"GN=kN{ʐ- \s\E}	_axUZR=wj<+[®g/mz	/	VF*MUjW2:_>ޑjT]emgA+:Selgw9(;}Sm}U,ϼSc>zKww=x-lĖɊq5xN0g1(qO<σU|}O7Exnxm?5c+J҇S9*K:$-Iz)@B*d!W}r}ٌ"J[R6wXNYuFmo1a=ouL}6j׏={v=&
emMV;Ŷ,*g{}]=T=weE>pkFWJeݠ@vL96F,6T̿[N|z{wRg)b)b),SZJb2`)wY~V*M7s8F|oI5lyMKUnJJҠ4UU#_vkڭ~g_]0^mFf
To0l-Ľ?5J_sE=?PKz
    PK  ]W            8   ch/qos/logback/core/encoder/NonClosableInputStream.classQNP /ht#!4/FK1+~e< aciO̹Ϸw  D
:<;'+ϏDx&Q7
3$^E-Bj˖ZOH#CHBZ0	'zc˗}}\
KՑANfjmndrt焞Z4Ƅ3Vnߞm)sQ`lD/,7r-{+'$
Z*^7Ww&fK,#Uq99M̳Rcb?0gya'q/>w
p3EF9T PKԉ&_  s  PK  ]W            6   ch/qos/logback/core/filter/AbstractMatcherFilter.classn@M옸NK]mi-MJ$p2-jC88.loā6|;3
2
(J(1Ԭ)4/pLYAhk\/CU"qXoʸYݼhf'Ȼ`zo']a__ U2V$V/y6'ɮšaůeR'')12yntmefX]>v7LU,י)C7bxLZizxcZku)Gv|P/ƀAf5A04|:C*όφg:J4M&6s=q>w.4{`xV#]kk~TԯdQqPݣaS}Ula;
])5+':0驌g4?̧-oߘZF=/x)1wB({O?PKs    PK  ]W            0   ch/qos/logback/core/filter/EvaluatorFilter.classU][U~ِnlZ6	Z!Ml5P%*k9-n]hO[Q|ʅ^/>&}09;;33G:ЩKE7"3z%fL{;vdf0=dKhyzE:y*7,[L$7zEPRgkٍD=n,El۔/)RZ^#<zUqݮ9^P1!e[zڮHkZԬLsk;;H2\V1]mG.ۖyO
B;fyDkdH2ƽm\jrq
vS1wpYeܼw1@mz0
n@jdd|E枬-n*~* ˅TLbKb\^6͐VrmUa[lf	c{*oA:K>K-"	zű_h%S	EcҼ=8̴rBVk.Sd_nI:Z``뚹9׌]^Š^
	1ܜU9H]hZ.GM
i	9mL'gv&GER7fZ&-]JaݒhAN%rn+TgC쮟Hh9$#OSf %8GuEzFT`lՎ7v6EkQ|%0qq͊˺<}<k|[	LS3}{G֮q0vhtx kAm5lJw`;{)oWiIf$#˒βthUgR+4
@ߖ9u KrszΓeVNm:!=#'-K>D_#Em4F*u#\t(PF/fpF1hh
qf3>8E^[Tdki7ie%#ߡK;jym-8GIc6o	ʯ~okDe-3+q)$]$Ij^Q*zGH	2I<C5-QM+NdȣE0U<nbo0o7>t
u<P: Pu<v?tH\PKV,j  
  PK  ]W            '   ch/qos/logback/core/filter/Filter.classoAǿ'Z-bh<}2
TlF[zw&6&>Gg+pMٙ~gnsXy6aArO~h~Ýn_<ٚ3r;șC)	/]%{;2P@1=|%\b0<~D!m{=& k}M/Cǥ\w,5'vGA}mH}:!z\Ui°BOnUɰ+ݨu{$!T~_Xտ
GUˉG5%{W87	~*vUkfpj[/g0=S3#t[ p')"WQ
iMqh i5ON:|X%}X>J0UF(*k<ɒ1w;f+F"	fv3of$20xeƸ[	~J9h0/+^S_)ycjɏ8-A9o"fq3N Ko*}PKm[*    PK  ]W            .   ch/qos/logback/core/helpers/CyclicBuffer.classVmsW~^$SMJpciDu'Q+8J:6^*ʉ`|cSZRuSf@:W:-幻[c޽{ssp  Cw-mjV1]=tLy#MiE͜k˺<eǰzЅ@OV^snNoUG@o26圊a/D`ĳGZSQE}1<^dgWӦ]\K]%,jzz5o;w@H;?_@Y"#b@ kne Pp8#ڦV,ЩU*j.
vmD>b8*QLHA2O2èD/W'Re15N{11$nKhF*^4p_ԝ6R|h]8
.0v7<
[On@ ʂ䌢9
u}iݞaWkˋz庶hRғ9U!dkNf͎Vug{'	ڕsh7}FԱQɤdC=7urK(ئ&Sn;\0&rQvl&<ܦxIϾCzm-Am-z5R,0{VrVya3QOlH4g*y!ZҚ/ڶSu*ZyVwJvuzIO"/QMXej8Ɗ0,G/_KCW9*];2-w4z,GaVP5֊cW8c~fL:ZBD}Ay]1f]L3t,cYzeӬsP%^T+);3a wpxs· &;ꯣv6^Nq#]?xh
{?N	v]?F4"}nFiqH3	L:7܀Pc\=eW앪{GGKS:'mOU
@P}!i3!o`XTA"|dSD!F?N,ϱ[jd3e]n.7(ïje

p5(%&x~%DSs"җ"SRgufXW N?M8o9I?C#9uKMC=B˒4ͬya||p]sy5ȱ`͓,Z2ר^]R7G]?
AW\f>?m<In 4l\
\a3_-"@Fש}18UZeЏuRs6
Np^nO&EV&z6\ǲ7{O#=zR>TيQ#Y+l-Q(I
^yޤ|7|֘,pl	_>>Ɖ5_p6oWnAͳxվC\i;N=Z77a>ctoc|sspmiU&Ӓ	=1'A6#>hݭACӡΌ
{Vx;ĂSm@r
˽봥xyq>?C׬;xr~K!WQg}b?Ƈ)>/[SLOKBkk`7j xMM%&),'ŗ
qs!(-@w;(S  J.k)PKa%&    PK  ]W            -   ch/qos/logback/core/helpers/NOPAppender.classN@@) 
	.h\Ui@-$>+>eӂ.sܯwf~~<i(y2\
4|LZ3=ڴ+l1$a{ۚ&hӲAypG(#WCnt\/L%XCMߑ`s޽%+94ZDRyd0Ϲfsg0FmȐsᄱ!nX5vx8UɒwfKk딫/wg)-yu	5KɧU>>(I"KQr}҃5@CJsl*(pD`VS,GHYFzPKe`    PK  ]W            8   ch/qos/logback/core/helpers/ThrowableToStringArray.classVYSW.4-(2*2*a "Qd@kfnA;%_|H^\HTW*"eI=h{sth>
UDxQ2͜Μ\haaPJzOL0g|pb`
tf2,'S'l&gzfF/鶓dA]0ڶvU@ѯ&Hۗ]1oz߅U.q&x],Et͛8Uc3UlVH4õ%|ZZ4l^kꋡM
v؉fx!aZwWH$[LKn6eRqRON
XŢeZQw^I?0{US]!v\VH>OLHUE
i&ē
2*^KTb&@X/~EmV̜1W3]/@eiHL^}iVrH5pX	Blf%	T{ɫ	YUbV:y
I1UINk8g-:Gc=<OS*^P1*GFet'T) _*i<i	_1uY+Nk3ԕ,s^;n
(o@yt\o)lg[ֺpu-O?
{XlĠD7"]Dr~VnnjsA
2nL[y|hsk~֧+2dGm)dyӏ3SY%Yqd!C2,Fuwʳ*MJ/Tё	ĔGW*+@@ћQ|g\b_sޚ.Mg<ՉWm|AwZ5[(*@<P7\itG{T2-e\}a/,n6/\TǨY/s8Ϲ
VEW(n*N;Ca]U>󐧳3
hz{oΕǻxڵ23UL~Pb75E)O;HtSi-wH<~/T{<ym󅈸g<|
R"PHCbH;=;i COZ· Zـ(N:T8M#s.|~ocEx6Ug1}"ˬ:&QcwClx/EƏr~Ns[ݡD뎎naN,"Դyop}%~;_|j?5hF/?1=_Sr<JHnLXF{
yנ!b
6>D3GW|uG$t3u/?p8nјjL`pǯv!,*BK7o.в̚|$Na3BG1zwGboQ4.
jEJzC(g9o'qzn
|oPKg	  K  PK  ]W            +   ch/qos/logback/core/helpers/Transform.classV[SSWv.!*l!	blmbD
MR<C$X{Lߝ'-NS^}igڿљ;N:&ke]<at&rz6P(r̔Jt-4劚^
t5_)^8tFn9ʩLhxjNK5l>kD^Ժ(CsIC34i1k=F8%'bg	ӿlds!]hB#ahzǋ-Bm.m;׼jg5]?M'Ok=ui-'فZag4+3YEv4̌{ʽ[ⱌz$jZRj$os82O|taYO(w/P狦UrkŜ*6Bkܑ3:$W:´\<e4O2qDq!6
+_7415 DKƵk30.V&+{lnZ]Z,jrũR#)ƈT*-WDpV&&$==Tt\Q	ԙd"6$ 2yYx}x48.I&~kZ{W8>!e*e0_1 'Sѳ)ַYVUȗ5o9jiGсar
7ȢLqt/6\iޔ浡)Y/QH1UJyY0f<LzlXOْ7:*#i0Z\dK2YV/Y<va;ʆyCG"eiN疯soP	-W9/bI
/4)il<FRή(g(!>)8
~7JvT,ëS_va=m
<_6q/u$ॻ}fq~fXbɊK N(3UJ&;b:;yd06Tm61wxnyn1)GGcn--˾
B-%vK:jI[ZvF둺B,>x3bN{tP8&sc{8Io1,G7	͸
oCnȤ&M>_'mu
I2li]ñV
N[GZm_#jk`P3rjH<m]|m+hzG`;!9v_yB,𯈎fI?a>鸎n-~`(>4BˏH´cޫfO8OHɶzFMFY>M0Q{;mNj>6'PK{  
  PK  ]W            2   ch/qos/logback/core/hook/DefaultShutdownHook.classU]SF=eS|R
ql'Em~
*BgLh]iE/CҏC@~Twe1ix{u{v_0QY*N^F/ٷ
#ʕOuڬH0SKJky( Ι8
c_
17Vזwk0ܰFrɠ3N(tYW0iqa=<"b6kL7.>yg5U{cP*'ۏj$-3p1u8\}"F+Ps&
b]w#ؕ
[&ʨe
R"_.CYi0s(qW	w#mZ3XЂDJvu52\jǞjܨcW.ih{x?np}L~ާƌx0,Q<%p|>bBSzuDEZ
cxS捻󋎟BSơ#<m6낞MmEJwH7ʣ0ԃ1psX-`
XJ`?}'5(RA?
*'u%Zh&.q_sCܿÒBԹ7=%F(v.0WzΘ5B'tSJV7#=nf/o0Q}g	-={.[#|bY߲?0k$~'
фsۧ(= \yzULPE@<ű\Uoq9gMcdl*OS";$T4-Q
Q<(J	}J?#A>4>ل&a(?)僤ϰڠ
6.0|-lc_PK    PK  ]W            +   ch/qos/logback/core/hook/ShutdownHook.classm90Da18!!:$rX,H(8 B

ix? 1:7d9KHsm(g([ÐLKuUd萖F{[TjH`ܜڲ7@p[k+l_" 8t
PK˫A      PK  ]W            /   ch/qos/logback/core/hook/ShutdownHookBase.classRn@}K:8.Ph(uZ:	8!A%%(Mo%H\&
E\fvv߼73;?~}
	\P1aX:L*"5T"t&cg2{~񂧂aevGUT"	
328AR:;t"vJYP3a
2ie+

mT14]?^7tG[3X3]N	Mo;64S3:U?eZe,ߏE#*ш'R契Me_Zh<~۫-5MwB;+ð1MtZ+2hC5ORvV{hC!]ZJinS<#)np>DJ/{|;aqh۔qH\.rp[ĿKBFiST5PKZ/
  r  PK  ]W            )   ch/qos/logback/core/html/CssBuilder.class;o>sNv&FblT}b̜"vFĲDļt}FĔ*F
lpIQf^:Tf#Wp~iQr[fN*#?\=&6FFf`Zb1I& PK1^      PK  ]W            -   ch/qos/logback/core/html/HTMLLayoutBase.classW	|&ٰpQr/gvB@&I *Nv'fwݙZOUVgmVeߛ았_yo;tGcn	L07<8b>%|/H=1T4U@4[$Ԯw%"dP5MPRQ,c*%,*vPv2Q=Ƨ'E٪bJ|ף9]qHpq]MI2IEv\ D̔kh,"/J}l	NZLije<ܘ*׼vxeG5PߦKWS[P#_>Y,$A譙NW
u%ԏ#-ǪDDd4IT9߯V")P#Ka=qPy%Xj4
@obmm8EƩ8McPU"IqtYAަZG%Lt%ۛ-Z	f҂BdVma5GqΖpB{_Sk3"2Z&D"T*24ɋŌTbD鋩Ԥu`XCTO9x56HPhG!SDH%#MWczf|t[Fz%LB$9ы\Bj5eu
vwn^
nnXM8ω8H=AH(kе-߅I'ȍD%J
]`"߶wcW+]V[Ս>߆e>_[o\QK{;qJ2ƉP5H©A]O6|###M#˚)BoPgo6jn):Ɉ*[jn	v^ѻe@дsy\ћe^΍2lv'>,\*Ifaz$µ9Ćr}"*%"[?)S	}&ot嬞,0+l}NccRzL!g虱(nStՍD(F0t_lXp.Vc1-IzquHke\'\Y'Xj;1*4.|Ec-4N_q=n#D|2ĸOэq7؉[ƩxyXFv־Omgz$mwH(v	(}o)~H%'#ZJ`-d!Ʒ{eb鹨hBz<+Md?r‌E NZIP2
(6Ӎߑ$%>h<n[?D.8OpfUִ@zqEN1&F7o!m6qsxO5QLy[bmm:(/x*lOy5MIZU1cuv
KD{bzڴh0͝/IeSή\Z9Of2T
Zhc֨ƛ;Ub2v	']S{t`xzxpv$fk7i9YMϳw^3
&KO\׼:aoq]İ_8>
3g1">SF&U\
YH6--mZ:b`EnU	ٰԨfo(1'#L ؜#[
-=TX]e\9fdxq/kqeC\ iS}^'|zxd>U/L܋Һҽ{x|'29d?Q|J1ZtJ]^k&ui6xV,'-epbs).S|+{ 3v̧gg([lgyv&e!+sm_CqlWi${0k>hżQ0Eu
\֏·xbك8};<g$ip9"lR,'[i!ӈBK5a6֣x<<˰ n"X
Nq嘏_7
hx0xepx	0)`(	7rbp/| SL>}>| Dg:]߰k |xU
DWc g:#iBp!F1D**hTxYgFh6^/_[FeUI8M66a0)sCQDAo47(/WSM
&din]3,]gs.21+f&͵,q 
!DFѿ޳x܏Ld//^jCg3?Q##Zcubo$7an&;-X[շ1nG ww"]˻wC={>\oVWwaw%Y8}g4Ogq8Q|[:aBh񗲭^J=h8x	p
a6GW`>}U6ٖuYɲH'(XJ"4Q;=_Ԏ5s_l|
e|zǮ^jb.6ݞqgz]{Jrыb?MU<>J,~TzMKI+BlT=lUÄDX^j\XZVRZO"Ț72O|;dב#p#8މ$}VUElQyWW-yslyv`ݓ/c`2qUslyXO:VYXVK(mB}(!oP7[Gt4ogQh)z`VWQG`GQ<RU%
F񽱾Vi4w#(s,252?η	s)_Ȫ3yg)dL;oKyPKQojy    PK  ]W            1   ch/qos/logback/core/html/IThrowableRenderer.classuO
@*,m+AA#HgD3ewvgpQ DN̔|.Lh#Y[lBWr-4Ҹ({~L8`+/EBpLF ;KL4R7ZF-EA̓HBx3؝lOS#<RֹkwMVckQ۟Z6/PK~?h   9  PK  ]W            3   ch/qos/logback/core/html/NOPThrowableRenderer.classN@WQ?7=@0Ĥc	bisy2PBbBagfg;3O W8)#BEj{n=>p&J]ʸǐoF6.]D3Dc܍~<
x0Uj;xX(."pCՔ'SGN`k#[I}_:/gWYL6CimJM"uՁtZ#r$OCQE3/0lZ8QTMXIvZ,ޣV(WI=_hkg0h"ZiHnэf`oiB:k&YY$`UҴ=]tڷ
"UK}aJ8ՍPK-Z    PK  ]W            6   ch/qos/logback/core/joran/GenericXMLConfigurator.classZ	xy~?ile^,[CdlBe$X>0=^V;][ȁ I@
$isФ9p
kHCisMiڤ
M^i6M)]V	w^{9 o{-T	.Smqmŏ.?J;tXaNTnC*qS"펧;:Iu^KT73mqV#sD7^솾^31ЍKܴDTA-17򃶾i)tSy6AP?5(KxBgc/1c;{w~0
y
Z*=qn:Vb4ZXbc)ӂ9~U=n,G}	E.^21Gi2QB")zqSHӍ*Xnb\B4QO"ImE*zh榴=N'8MMNb;İ1*-h#ʲJBe],\n
E25r-\Y`{xM%8	?5R	uvt P,hdHu]iA#k>:l`:Bk-WS`qwY,2o`jbc+z1gT@I#PB,oCczlC/8=j'ܭ6؅t^߽bΛe/nƍirzl르PbEXد_Om#s آC6;HtF-miX;3i/6)]uұ^/)\f)pX-匇 3AO
NX..>9⽩wRfaGmfSc;3h6(cnXǴ)hgKݝ;j
yn,ϛ!=߁jY7g{m~SpsN7x`ɏ&18ᰪ<	5

vƻoRJ.AUωYLu rޣV-3Ԣ3
 ]qݑkg!<\1Qwl)k&7faEd((:-6!B39èb^>誙`XB
ȏֿqxl+ik!'O]XONweڕ)Fm|bIbV^bvdjpgG,npNH;V3g1O#kᤍgpJB`L?Eʶ6Z4l<'7"@2AŻ1ϋǽ9lS/ĝNl}RwJq"d6V<'\K41'ۉ6/kƟl~'Oydču&a3Q:JCsE":ABǾm;./>hssM늦)Ia'WCq0Uﱓ菇`7Ä-3C'c*g5=nUs>V8nǺFب`yy$K`Gӕ*I/mfW??Ӫ	'NFAUpu.1ھFCh!7:*A4{	W{xrԱsU1	p廊6Gϒ|ҝ~iggf2kxg T:O[Ė*=W;;IQR#YI5^\4M/v#K2KsKCqgL,﨧tgY2ǖ*L}i1
ηA7/*,t.?i9,FgL%/\el4ɞ].d`͙TN9-/8kto$-ȅ,2DYI`rsRO
yr[.KMHʽMPX!:YItn޿m]7lٽsW~bK)n3!*Nr\4srH+	Ԥ%A7إ=4+Mlg-I&B-KPA_jXbcVTϧ
-sd,3KLStFh>'ikɶ+N4ݐwΘ:D\wfH;W/R᡻0a!%1]MA^_"<<Jp|t=qjŽ(MNc|h+zUo8Ao$77DK!?+=?N*BY)vim	kzBTW/mmS%y%Eg_Xt,'tXy٠Mh\m6Ỵ|lUd'GA6^LzSe$QuA6[+r%oUyB-/qu,sBvjyfenӧۨ!UfMoC]jl/	a^N*,=j݂+/e-\ %CxO)@-\ŷ6	kOnsd[CMf=YyM"p7(Q,|VfqNKudqQ_*\U_*'pHsc>utb3Pn(^KVsX_G]X	4khqm} bмWea	?vs-Cz
kG*Ѝ.^>sϵ6õwr}\ 7"X eIA6J'MيEI80֍±1tZc[Z馫pl-tVEBVC,ÿ[,yέb/cıϩ9pVil۷$z>z3tw]<Kz>ԏC@=.},+ZӸYJH u8\<KŎκ5#ke	J քUr:7=JM|ØylPniЀpO\:DjC07BXyp+mpRKaq=\ >B=Ā@Z] ҾXanò/~Ge(W[mRp5Kz2P63xJPU?jC+2@M(tYJI)cf^ *jkH|6ܼ0O:2GY3N1o߆j-ZevU1[dS<|轺$>JS'AxrR`([p>τ$.QwޢbPR}Lh4j֓=t}fd~ZO|oߢYnsn'
Qs>	$i߅n=EPPl(+dHZ1_nIVߨx :	g
,ӘcY|bs}<\d!nWkv;TO*<g;u>idƚSxI
['D^Xe,Nk>4^	qhEG0_7?Be
B?Q	<1
,
8[0|cO}64gX잤]xʘ`W,kxAze1F%&2ՐVqep;dXF1>˭]Ũ~
#^XdɚWbᕢhWGZ}ڙ'K|yK|2Ds
,[+jໄ2d2;c_m
Bg.J1g"
|^Hj"0/
\$ǿ*-ga7"VVf/"α0Nˊ[<YY|_tZ;I9WӀ,ӁSr`_h|'Piy1¢Z$4<Sm(Z
}D5
l$0Ud-mCԨòUADkd%cLKb/3eOU}-׌34$TLuRlRjp4<%Q꽟0ZDsNҔԆ4d?/yJVW{kJϊ0/X-ͪ@R^H5m>qyKr\A PKb(  '  PK  ]W            5   ch/qos/logback/core/joran/JoranConfiguratorBase.classZw|S1H<< %$aĄ`vҳғ	Yٕ̒.M(iIGݦ{tq{OWz$䏆ys9'O) .
UCu #1pz/'Ez?NDJ6q#ewnnoI{LJ)¨UfܴVFoOX\$4CQ#fĭN#j5wG

>D1u=㽡N+e{Yq)haf;3
daLCd2j	>L`&Wp[&jtfG"HZ~Rj*Pv?NI#ec:aRC(N[jlaBX@d"eAldeƌǒA60ϘG村XD?24A=#6dbFvz2P;x>1j06'"F4Vi(1z̸(
QУgXJOP~w}iH+1Z[tdAh2ɶL0k~>+)'nfΎ{M:0v=ǂ+
ꆐ qm`\I]sibwЭ=e0Z$CV`m&~tFhW?EFw<(Pa
ʜKx<pa]sjv!vV=uڃ-}FHi#4!@|B7gaYY"vIb6(tthTt~L6dn^b侷8.ؼ0cM٢krz YڰZrb%'W{!a02y!Ⱦ7N>@ W*#au}N%S%N-8Mَ`h|,uM J՝1[=}[\
C^426D*Tz&
7fn	VQl+#)CܭYe3	ä"hs]Ϟ9^zxɇ{%<6;cp//zn㑨ZKݿٰxȇx-^G83zLTҊօ'#-Q=6UMBe;{0qć7*]I`5}]"\gswNie,G3TxOPtHtO鏕n]JLJKt%WVD=NOeEAWbH<Yv%(Sn=,h9T WrH~bV.\9"@Ow\[\^8~%U>GDXnw~ՊS&-V۟a.;YU]Mq!AU}s<$fasR.2Լ&pܔ0gΫ؝l}eBYc;ztsrA&Ty|pP,ɁԘ)m
h:0zͰ\AS:*gX4;8 7j= kl͎ԴAoLdRac)VVuJRz87a.PWeqݩrչceWΙ/NK˾)pŜf?j
WVt%W
s4xaV/AwzϋP<+j#"]XakàUJ0<5!c4J05¨( cJT(o@i4^@NDOo0Nh`LP=9\aLh`LFu%=]ZAXZ6Gh )ܹ [7
JxFExoUJtFu"Z_v]o55Z$^%itQ%JLK^s$kB$W|@|_v:A nbq\Vy>ZfQL*hTn-hN[	*ѸAFPT6'zF킺μH۪Q]mrcAWWUL\B=*!CmWi%XK.- }fktHr]=g&QD`v[Y	#j'8f~]M̓kbDAe^
/XF)9tVZFKXs`
]2ToZkZ]'&̢/9[ueCEvF&[V|bF]uGtq§
عBNK䬓(l;c)Ay%mѣNӒ 8aͣmGwfJLU~.̟f#|?G̥4	x<w5>;pU	~e'}5YN 8oJ޴"Z7Ûexxsm|o[ټ-ؼ=3lޙY6oαy<smykyz1U{C]P0i]ƶ.Rccyw؍ixouhݜ˫Ag|-x|y&v-vpu7h
;;)]ta\LzѓEr'r]N/b1;X[1
O]qy1\߄ff"[/+c""g7>wQ>E't^S~T!tמ`kU|^_g-
unM|U6,c;x5o
7K,F Gyc`D
*!#_.:ȷ
A  :<'ș<|}otGxK%,uwd.|wueŮ6,{C~(.,.Dqɧx%.lIx<ȧx3[raa9n;wa'[C݋8³cxF.QeQuj?*?]ytSv*(R(Ei&)jf*jNST(j9Cϡ*j6)ju.STz[QIEYڧ6t'PKz6  %  PK  ]W            .   ch/qos/logback/core/joran/JoranConstants.classkS@B
;*U$`v46]K0&g9~p(ǳؙγwϞ?`r0 Ya	LC5r)RU/?V+3;4	a,y(H0n֩AqB#
8j4J[hUچ_(;ܡ򆥚UMj|
Ѱ$! A`
$'\TtKGONX`	^Mq1ݪKpM3\3C1H G 
:A+hn;Ba!lyѪ8([&0Q%)Kulʶ&}}+8KOVPۖ{W?)FU!&#0.?BVOO^J#Z
W$X')Ѵ̅gZ*lwWKA bVc%.7BУII̬hob&R{͟sv⳽{]:\,bK50	S2FxyAHW|Cȷ$]W	|yM`~!&7Yc|Ko#~¿&83y
ȗ%9xcT 
,߼࿱N8_adGkPKc     PK  ]W            B   ch/qos/logback/core/joran/ModelClassToModelHandlerLinkerBase.classXwD-
ڪ(*<[

R@KеMM$R|+7U)=&w6iENO_6޹3w?4TPT3QԹ1zfhΝ
}0	GaGf(yд93#Ɍiiq#efޢsNE.fk71
GA)x,dX]"'i9Q(jQP#4JS}CYu[[85%!3۬j\`q:ͳk-3#l۴{ /N*f}yT8i,\8;wd14G*Xʰ%%{~aCX*r
Qu(R|^䭌䵎
izd*[yoi&b"TKzUzs"͓k#-3/,gg̕ggyr{$;))vd|*y[#mkmj̗ȑhf5G3
N<x0|٪SZ({VF̊60"۞@:j3Dmȝ=(e=.Յ{RЕ^de1Kץ=	jzh	۹\10,
}TZh4ETq
:}S23\Ul;-鴚tzbV޿Kˢ5Ut婑-^2k\	KQlRmX<aYyvqN"XyKަ1w1
1bC
iAY	yvT` aZ9)lr_9$I*⠔QcIEO UGi5SqfbTK1d*S
9y&fNJ ''U71S<(xA"æ8R{{xJ"dt/xE.4_^0x]2`giD(󦊷TbLo/B*NHwn=G(S8}b8	JH|9d?R񱜴ObNZ)3*>b3bAO}K)eV(oeJ`h(iS]A9,L9I	+f#",Sx,ҧKm>kqU):
^Ҍو񼸼ސ܆o[w٢%:
ŞG
~VˢM=cL
SK(Y@K}Fo{uuLSBvs]v>zZY~< Te 4jIƺ.]0떸7XÛ\rу+\jk}Xb]lFV|6.vwpKyEk>[)v
|z4!E.؇@/u'i49Ks$`&0)&ѩ)#=VmD$>@'|f@Motm ]KW"=p2롑 4l^
Ы:wt2@ 
;Y\K~ǒPK%Jj    PK  ]W            1   ch/qos/logback/core/joran/ParamModelHandler.classUmSW~nL!RcRAQBB\V*ATVZDll:N?,װMnC?ꌆ:/uzŬˇl999/~<~"c&RH3ܰ7rfۖKa
Zm"|i=VGp\`H/:.1LVWae>dMd(Io{:_S
"߫r{WbmF(q-X1ʕ,N`g&NbaPD-E5X 1.UN14#X80qEygp!CQ׹ۡ0)-[.V-,ORASrQ2qm!4~h(:P>u鷅r4fxfG^7QM0`db`CWLX{k&+
{a+d&1İw!Yl2:XB>
NFW}u.&M' ׸ŷŊܳ	QJ|4̈́c3=yi}
-Yuy@+Z}HC5#0Xٕ%BJox6(GTdKM}TT6
ÅG^CjׅEA-<p<~#l>0֧Vڮ>aCG%,6WT$	BSO&w{p.vsoam_:Ibh7c@h:Z)	a{Ȝ22ϋ.`]iHPApK0	
W861wZJg7fgs"V*wyBȧvpy!Of|:o]|G
8E4].34XmLΑe]ᡎP#BKu+IVSkt7	<:<OxJaFQ_PKc~  	  PK  ]W            -   ch/qos/logback/core/joran/action/Action.classV]wU7MR(X,
~R !HBSR&K:m:&R|7Ru-3C:mB;ss䯿C|C]F@Z_<UhjFliԍL2dkRa]鑅A,8}+ںif53[Y#J'W
▁9^$#K`RzKos/;aVߏ$p&;bٚfS6t
Lʮ2D5Mnq$Qӯ #kE YXv5V4c"x'wqe`ʪsj5\(l_AI׫b1`418j򚮊ɺ*x#e<^}?8״UI#spp4a9|^@E3\a|^ n꼌՚2
nM/{onGƪ|/dAUV{]3tMwU\1[.uOþϕOyMrrn6z7tNln0[ZlpS 9kIqyإTK4Pv
:vK	]U|Wެ_j:ܬ4٘Y}o貮|.0{hlˇyV%YqXWa.<OKt,gk0b@1ěPv6x9Q8wHDNGsC0[Sj+[M[m{xJ5eYNñtFwFb|XwG$_:JDH)!p|a[gMi^ f.zdkRM6-kYگpRw~ЇiZp$(	 yA8FMyTq|=A9.R/SR
9<Mz@.PKy1*v
k2gFτgyÝϸz{~

]A]s=}^\G	=|g|MD6x3Q?^X}_}mb=`i&mn6
("|b氇qRSF=VrC~r8
C/t,SRGp78Lܓ-z?pUbzc.=2'g8щ}Z$Bz:@=Rh-RxO*Gɱߐ%,L[Hc1WeSqk-kaZXƫ>hz+VV\UԸSnpw}Z_| PKXΆ%  Z  PK  ]W            7   ch/qos/logback/core/joran/action/ActionUtil$Scope.classTmO`=ڭ[-2'/lT^E2SI⧮Q,vI2!
Q<LA1&lKzvo=ۧ7 PPcASFݲv:NZnّM;x k#7UaθL$5R,oTJ*<wIs	fVJ<uYC/D%auUdpUAZCɼЗ;֞{ǎ;k
4:98%.YٳS~ð=S]f3&aF7g;p?nҤweʵ\5J[M"p|!Fa1f%\h;ݺVGgpWl˫Z˕;o:޹&u'^Z!q"'6m e
ߊZ!J\R:{,Bnjvg)eS
=SMWf) LuPo1b9Gm#"I&Ľ~c
1'Y5&0p?骝 ӄ:KJ'!ɩCGIC>PJ &Is^2VC#
&դ6$&xlExfnI} Ic܉@=zkd 3tbo鿓&+C?PK,  Z  PK  ]W            1   ch/qos/logback/core/joran/action/ActionUtil.classURA=aWDL"b04U6Y²w'*?`O^ ?ʲgŖ%tt=3o n`!&hcY᯸rn-V-ڦϑyx:ԁvtH0n^W-ܳ-߳fD:Ŋ7ū<T}Υ(!ah~EWg8Δvo[08jAmg[xnX{CBw,7P湢}I(,.TV3ʖ,-fK
\s /?Xv<SAMa!E|_|[Xe=)F $W(JJG6《uK#-)DidRu!>Grubc.el4qk0ȸbCQz \
YYX%YNGBN<ģJa>"C@a.9XhDP5,K%8Jo2B.y;D7'TPĤIʼ"I=حXf!3n WmRvRbQUpY:-P:oy"(<I
1IOԣKM,'
bMrom^!o6	c]-AMn#é:~"X"cơ߲
fh{V'As~lg?hV:.4~LdGFp=ɥ/=:W6~A$!Iyk1M<Ѹqs:O´tF݆@{WF4($3'PK℣3H    PK  ]W            5   ch/qos/logback/core/joran/action/AppenderAction.classU]OA=ۖEGED
hTbvRuwO$ vT
$m{=;?~pbhC
EC:S.rn8w:7|ӱugNIXf\1m_chO*"<w%Sn%;n*bGÇTW5cbϾȴ|V]s1Dw-nM5r&e}b׳>k2$׭zEpcXN!t^ߧ!.7xE4e
dPM/
DV10*qE6JV.	7h[CWΈhZoq#bL
bOkI2uZ#I떆$&4O~B!4b0-CU
Q*f9e%G1M[l*EENyVC1{ޜ'CxAO0mW	,r2I>Ctx0kU\#)2O\*	C7?y/jRM)簿yf%{a^&_d3;&>ChU;6Ю`wAԭɩCDr \{c6N@7}/=H7HP	SȧE7bSKQ2&VI*B*<!L\knJ#	o!Z1N~1J6% dl0JCd	a=@PKu  R  PK  ]W            8   ch/qos/logback/core/joran/action/AppenderRefAction.classNAS-"R>`U--T#ۡ,nwBo JP3[ h/g7眙7 A =ahQbX27[Nȍ׺H::7<ӱOr!aڦГLeXPcL5)p,qϑQn"nԷ
/Kjtlwxa]c"Rx\yl)due}Ǔ]YKwyCyXyͦ

n Kd76b$SwR"ac!MUa$?+|3$fyZqs{1AU$¸u`޲FgMv1չnFqT/a^Yxܿ
Qۦ 0M[<UBEVbyVKS[w`YV/NY,I%p:uؽhA9QL%bo[
+~: "TbTZCŚikR_[<i^0 GnNpYa?G+Ԥ!:
lQc
38_zM3zF}0}$
W64@skBkKvA'їT{c[&1@0jssKX}5Z²
X]ra5Mwd>qceX&Z<x
͠1	 [M6H-D$>24),!PKFo    PK  ]W            6   ch/qos/logback/core/joran/action/BaseModelAction.classVkSW~NXIK*XtQ.kU*xĂX۞dfw ~/ho⌢cgig+C:g:cG{yr4I"8;pP:n9</,q[tl}4GL14{皐@SIPoeb1L]ܴ'<؂rOA(=SOsYC$M؍6
L'
mҎϰwM=W'VDq_
<.8^Q_-[Wр6@ý{5_1-cme[$*K&It@Uhf8"_9^dhOw.㈊80
Ztvka:.H#*2chrXNoτڀA-E̘R)WXd-'6)\IOWyG)+~)BSfsq05jM+'	34e
jӾ6Bh+^9MXJO=-];̒87y㸨bG7(a/f4sI4.3$L㙞t°̗y3(PCu2yY\8{%ǲִ-V]G*d|L0n%36:nveFyyvR3N[s3:Tpb$~)vEѴ_g{cﳯy9$TI^°e(ITl66܍XO֊ɗ))䍦эPI\L	 Heu*^ALOs'"(9@Z$4'6x8,S_:|msvSܦ#I	CܳL
lĽ$V'>޵i8"ZGD}#*K6,8rŭc/9[sE[wH8uڶ7nq~_0OP֢tcVn'1jY
oȿHUli\I3`G?U^itUI42|IBj41a>2Ԛn?BG!:f:Gs4{S|ٮxZy,iڨu1^{tg=C'"rƑɡ #4E5(&*uvc)QW-0b2M^c|h=S}[rd=V3X(Gi-#)-?aVcqxnTh"tOb֪j;aG;ɒm:X놓sj ~Rٌ偌וte`D9q5!vˡ>G7g(tYګh
bv}a`qT-S-8!)_8GמM5nȶ/g	%F?PKާɿ    PK  ]W            <   ch/qos/logback/core/joran/action/ContextPropertyAction.classSMo1}׆(
i$ UU"TK%6v:QY\@G!f7!EVg<yy' q
UQ$G*-U"AfJ#^!'юȚ	YO1I;? ҾQ?I%OyL#8R
*8Z9G?
l6:#5S2Vz Fz	M6:q@X1GjlF)j	D,m8#D؉%R%lk0cr>eq0:JC(xO|vY_֨*jE(;)מ4Iq7.iѵU
w/wUfjCzOQG~/ 7x%
wpREpelrVZe[`5k{^aH[B\`=&e{uV~vy܄z)ǺzF/6WbE ?3[_PKwEG   \  PK  ]W            ;   ch/qos/logback/core/joran/action/ConversionRuleAction.classV[SG̺u5Ѡ*.Y.Ecvf֙^\UyHR>%/y*`RyKUGE첀`yӧst .8RN (C1s<r31˵9mM7Za)zB-;`e0W*bu\vS.́7xBC#.:帅z$Ga?~-jKKZ9Scԭ2g8ْu'(5kyqa$pGNy^dC*q
t鍖-k,2þ nƠ2:jU}5մcCZ{T	&R/
1
6VF+he޼X^Rfb&˅.@|IHJ4ڈFEp$Y]ҭ@c8uh&&2;̝\p~"7]q^AG-1 qClϓyx*ҏ%DC7K8&pWZ\`ucI	*Á}^Ŕ)fk`msK6
&pMI!6
wztb8
|յ g5°gMY2Ubc:j;B%	UX
G'rNYa8
YN3IYЭI5U&%B m]T/ZvT"ܷ޴#^QFJLN,sv/wå
l|渾,4jk\ZSzބ˽3/uZ("Q]BY*&̻tfzW΂ċ睲kASf%D3
q_/p1!N>+onO3TC,"CZj3H{őn}7*VŽ̗KAd$CLb@)ö]=⸧=F*֪T2QӬ衻4鯓f\<,SGR<D+#GDEyL70YAa#Dv}d
vס+Җ<PES_{aRHNpi*^~+|JʛF:yv:'Rk9zlJYҩH*}3dR[PS?a/50r"('hD
i)@m8
8tyCtuF7Ѓi\§4SSDЇW|A<SZ!X:`
4aO&?&?n=:Uf)ռmGA*44,Bq<AE1S]łA#^
 _ ŗ'`
Ql8	I%4GV&k>3Uu`yl¯`#=ziʰ%RPKC  n  PK  ]W            ;   ch/qos/logback/core/joran/action/DefinePropertyAction.classU[S@RJt܂P(T:um	&)'_>2G9MBe3:ڇ=|˷t
,6N
ڮvUӮRlGWl[*<öOn.6CÂaC]*]gd5*(r(sv<ާQ lӏѳ^A*[GkmPsCl~rVE-xaUy۩G#u٣Rl(5+À3SK]YߪMwo}/<n(@'l~/nUa@W
.8zM|izqGF'bWtUIEACfP\_ObD!H3HyQc"TPqv5?TpO7qAlm9xoJ^ʑ-y:۬t/Ӗ5nc;ܔ]T4e	կuCp{j!fhPs!'C+q`h<<k?m2R0˹Q#7%#=s!FT&\}vuCTb2&>W&Rif4׏}E46=Q	5Y̇oɯS#c'h1bkmL0G~ &L!VY,i{ƢϼKxH		I
r!t"02>ARoc8ƀ0R1"PҧNb$&Q(fR(fBu"GPKA
Q    PK  ]W            ;   ch/qos/logback/core/joran/action/EventEvaluatorAction.classU[OA,\BATT⅋Pl01So,nwqw[|⃾@2ٮ
&̜|;~+Ul'сNC[)qa0\;7uܲCkr`3-fXi-)myzIHJ382F{"k%mxc.)xǞ!
G
;c/,+^hTm
c; e?-Jr}10RoR*ZV%|.K='50ĠZ~!聊8تCj(Lòc3m4؍qisUL:n0W"YJf/$n6 /RE,kFCV*T1,MZ%Ob(XحUK{K6iRv{#ZjEj81[OpG3eISWae.DfHs1;&u?&e5#3oӼ!"8b,D!&5O,9Z1YzL>ΓdhO̞}Ch
XUk
n]ٹS+iK^째80!zC$s,OHo+?I~+XG."HRϘ	0	3icMP@OM)INs##H`"$!PKң  8  PK  ]W            J   ch/qos/logback/core/joran/action/ImcplicitActionDataForBasicProperty.classRNB1=DJMܸ	PK^K1\(cG43s&
;!Sb̘&蓸Xɇƒ$2_P	n̝C\i.tS!&M;9ik?`=(;d5G!wU:r3\-X$ד:4Ac%>0d.RKiٞvNe=*͌1C^c(Ddv
Is^5}Cu29aFo
;fbl~eW'1	ï}E?=<	~׿ÊϪ3XMxXCɳ:6tel"[	PK*Z_    PK  ]W            :   ch/qos/logback/core/joran/action/ImplicitModelAction.classV[sF6#1`#B)$BI)V"KFZ7z_`LkZ;}m;=+'awW=|;<|@":bd8fV;onEt=a,wnJu`bK1D47Ҳ$4Daf8mv~b,c6<O8rCOa
=xRSrkM$BD
;unrrWv4ܩfr*#sq2L~/E
{u}]b,lƸ$RC
!^r
pg
Nx&^C:CT^/-SQn%p}u00q e"ܑ«{Br	%C2p1bMpAqe
C:N*5^.ϒ9Wp!pga#eH',\5ahT7c:Þ_D%%w$l8?g䓸cB'&=:.+{aN᪆k:^SݿIWl'
ۉV'un.gWfo[N9[A
7l{NCy˶)Ά%kgCL*Kt̫,PۢUqlxT;}tJ;u则F$Y^i']pMnqRfTV-&jXd-V:BxJk3]j:վ\'DCG_z7BGޮ3lVkcH`>idvru@z{؊ˊTrwnQa&6kᔉBWV[1Vͅۂ0[EⲥzdJ
J_z>-d-SyDX
?f5˺;I3
TS_-g]˭wWw`wʶ\wQoޭ6omޯCܶġ~q|KeWGom~
Nҝ
`;oѪ75ݲh|[}D	Τrr|xEc"sZxtBOs'C"5h&z_p,Ě؟Lj:>꽠AtXga	
 ZFB jQ
@
D9;ZPAgư@		$GkoH	ඓB
  L%n+0I[';d՟(27|&zsq&M?ח3|W~@w.=tQ7H $%yc@OȕIb
p~7PXpqũ
Ő$IEx$V14dӐ0vИ\|Kb8}L"H8/5E_PK?r  "  PK  ]W            8   ch/qos/logback/core/joran/action/ImplicitModelData.classRjSA]$&^x׶PH|BBJ|ՂA=hԗ/_<z%kbTPeXBgp$SP}rOʝKЈq10G<7P<5VBs:e4=.r*pQ+{&f!&N5/vXe%eVf!+Z6 b`!.$bL(ޯ)U:f)Zc{Ov;` rw2J'ykRU>'#wCyV[t;vӽx侙TR^N$i%MO5fŐe6y\E93XroZ5BriNo~ w.X"`7(&n,x^A)x^C	eJ	'?!g094#r_PKD	  s  PK  ]W            J   ch/qos/logback/core/joran/action/ImplicitModelDataForComplexProperty.classS]kA=i\֦Ư}dC-!F!!>QZM%easϞ ϰ]E	+!V0<M{3I"yc%+4SFWI^C'J+Ǡ32֚'/T#3SsV1\{}CM1S'7f8k1IaCibm
Uhݑ2Nizu"_0{r-N/ Ѥ슱<OqDT<7E֧2jb虙Md[7I.{0Zjj^]ezJ7Tp֪m#֩8\5WN*yGW~B7	9j5Ӊ|t4p :ݯ58ub.9wPK
0W  
  PK  ]W            3   ch/qos/logback/core/joran/action/ImportAction.classU]OP~16ST@
EED$hB2	fκfvs+zQ?v%xyޏ~N"hzVcj]-sێ4{¶]a{Ma	o!ɖeX
1t۪)qSTg;Iđ:ga n]h򌖷;F>+iXqqFOxk&ځ/NUkL-m#cn>[U`aH6
&w7LAŞ*Ra(10ؚ,Wێ$QY	2CLqa⸭(T0V
5(޹fwqAu
O>XuCkA}(EaZp^ITֹY⎐QuW'Kw`N4@H]ƼW˯B $(1DM?{rCBqH[>Cyk!c"!aʾ
OtA2vэgBpg-0Y@'
&?4N[8D24IdiT,`fKȵ9ÅťJZ9JC. B?)nղGVpכ<$c^oDa\Rϸ)K2H8QX䒀<3l[?PK{m    PK  ]W            4   ch/qos/logback/core/joran/action/IncludeAction.classX	x\ufFo4zlْ,ۘFIdYZ$۱Y4OأyYdfOHBBҒFfNiIm	m6IK&iiR}oF#{$G[yg׎~r2Ax>'ӞpƆ#Nn㤭dUIfV2	rsgdNC?xvԼ!T0MTZ
D#\3ɮtIdB
*SVNf{)%wBM%&P/0os<E+7X"8wnI"jtS1;4/5i͈3J*t7Ѐ3KwRtR0+Qp&Ak?0hX;t|830fgwX-XԳǚVr}KcO
ѐfm+;Y;ZKR&/P	TZ
{ޢS56J7LEʯ&5RV
\`B\$X]
y.Okډh:'a[nzV]jb=6jF푽ŞX4}ͻLl崆&S,Uք yKkMi/Ҧab3:ɗ;17W53ҹB)=]&q%"!+\h>U6у^M7DEMoDB? i	n`m	h{C$Eunbv"z[ŃN5
&V%Xlbz `ҚXA7#F&n%$KJZ#3mbTUɆ	kMXٝx¸8`*Q)E#Cig55.F;`B؋qL\{u]PWLk2&	hXfq~'`78 qa<f)k"=j-&nm)g'2L܁;UϞxMpUbM܅wPxfpSԵ&ޅw+̸t{^S,!k,P2dq7ɥA|ѕ3N.=b=1qcpO7Lܟ=c吉dA|塚a׶Dxx(#$#%iϋ%ow
'3^Zë
;*Z*\83\&V*Gd`)8-@I[$.3@94HcǬ]Ϫ̟RvEK:q3$F ig۷7pD0k%F|2jQ9AI49>oY<Ǡ:. U!KOi&WPwZ$Wp//E3gsX1fBiA;1ڙ2;Eb_ fTpeIW7Y`A,Q2ߘ63Qo[)zmkT&Ԥ6PRM@@&7*`T
m玌vydjfrޔP)a5Ѿ5i3`d)N1%g&~_0m?f70/sB\ZieGՙ=:j{)7e6<o¯:*a4
NZW2w*qx/zvOl)ʥRfO&T=Hv!ޙg)gMAd{XHڐS"d␽/g%2ѱ$utZ[5eZ'InԙRn!V=J5ĔF/i
Yfr]R1WU- :X:4τqX8h[ʐL9[%Gёs^;5`IyK*=]7v

0cw
ҷۆ}y'1gN!r;îrooПϓLZ`RۼCP׾,/{K0r*YE㒹Žf	W3L"+@1]W2xZ)SC6绘M7H.QePw(g3)\X(3c'dq)7<3@kŞD\b*~Հ2~Қ]򇊙u[p勸Gi59ma.ȳ`*OҳoR
J;og>a{r6%eVQX6͎nz>WDRn?Ph8,AKTT.|\jnɆ6({TP4N$n
*deY'G6(/P{FX8a2),ܦw3g9v#2-@
"a;V:kk%dK-y5!5tuIFqq/-tj%c	;svͥJ96X+SSEtZ`<k3h2iuk㴠rkV0Rw1VBRiB;DU;RA~}߭Ea}%YZC~Vl_p/{
Y8%$J9WS|+)E>>cG)ԨEа+$3XUHKk[c`MjQk1{>ui\riǱ2Xe[ѧއ(m
i֣43kc4i܂ao\=}c	/aHhf\IR\\np`۹we߀үm}?{|χء)RP#Et)UobMr	uKe=/|
xlf%8Pd\r+"*4`H	D<.C:By?2#hBE9`^$IVz%MLBeϛ얧q;ޢަ;Dё1Ja1Ʊ7؃6$p&Ih26 
tIGAW.SJ\)[І@k<bv6ai}zqV!<o=6~a =05AddY,5O8Rhm(z,ofϠZ+QmrO`\7EM<F)APr0Tr vsN]XV]U VCG4ʮ6(Kch}Ec#%ϝ߷.4~
H[_xة4>{.C;v⏁#8l!d8\,gPЌq.?@p
>RCE*АҾcet/zn_'r!g1䊐YCwP*Į#xj(q6L,/>O=ʪ)5-DPz5Hk6Lj]ϖ5(jAp
:3S*( .SAU#Sw>y\C	mrPW Pe`@-ǒ 4Yo<@W< S p8ߧ3T}?WPO
Ua	X/y@'y p&C*
^)`ZsL/0}8GHf2x`=ӗWӿ6ߚcA&乼$8eTy-6zZ[R D&L.;< SO'/C9~/'[kFk>n>{V4~KHES8(LfMJڟulQѹ_s3Moxsf~1+E<Y cpzN.	>Iᧆ]:PL^ kXWK=7q{inR=WXǬ?a?'~V .+@]A5Xv2j}3Q[Fm7
itCH@_q,i{RETe.Kn-Z6k",5/W̎_x븀G^rm.ЂqݻdZ~-Ҥn%/m9U7x1pK^7zRݪ|3-[[a,,!meQ. qֲ|N&<]Qrx쫮Mu`neQ9CU"dz<㺷q	pΙ0DEDYzZVYN&YN	Ԗ-ieTbfp*_PӷɈ(&6TV.iqG&oR䀖'rPnPK=\  i$  PK  ]W            0   ch/qos/logback/core/joran/action/NOPAction.classRN#1}
eFbN""@Bjݍ8tlp;(	G!N.
-u; XbqQaK̤Hybc"qhCeCiv#OGOҮ9׍=qF$"k=tܙVh2c*թ/oޕ@;i/t32uĕ)o9tڌMy\#gs2o
2aԯ0Wj9!{^>eݽk-ӳW~7?G/W(Y4#]n܀]ӡJp.aC%{	ApIL8
3Y̅0UAhhiPKI}  R  PK  ]W            4   ch/qos/logback/core/joran/action/NewRuleAction.classVmWG~lXnR54Vm'6;݉b?~Cs<@ɼyssg} сU'ڮyeݮ@k2+ʑ=1$/8bCNi m&Ȟ(+^72``SO>WJ^!CjFݵCa(8!C&T
pbq^.Wzs*^&0Ca|p]
\/>'\lR0Wv)#5
l/[g]LIIg8JAj%K[R
tdu[;!gO C_*\t*B=EBNqVzj9'5q{+2aMbaj}.{S	B(&I
EgOG>;"Y&>9wF`0Ș<gzurYЦ4&0.\ĴK&.cf;!Õ=]\ۨnd@א!U]p<بE{ +-d\:kW<eQsԮ&BrCf.5;))}
FZŗ:.:ɗᡝS**Hv7N7oApL?+xσKe#NYƈ&@JBpAUY
SLY6E¢*i]^-!qSH
tXld(՞if`UW\wO$"|KFoo˰IR7vɺhc~gRyn+U[t1=O#B.=oE M)#T@%SMt	X.'4U=}zf0!^ǗM٤hQ0Lgzd6~\2Ls&>}Mn?5&g8lb&NmߘM<d6b'hc
ͣEC
B7ɒ1jq|yzrq
S#r!	B; OoC0+$J
X !fz%?$s$RK@
_G>
ZzE,n4 >,7A95@Eol!|[D>瘌\\Z-
l|0ڀ#Vj{@W(ISPKtZm  <  PK  ]W            2   ch/qos/logback/core/joran/action/ParamAction.classVWEET *VBEmAZMiٍ>>s<,!9;^ x<.tkA/íRMۭyi,0\;&/Iue,`;k9cOk39'JSbVKK@CB8x!
į[fuؑqO"Z*y\+^+!BśܴS1Wg9\*N6}cK,6suE_`l(^m+1|=H*x:n'&5ɓ=qگer̞6gIK.xk|[m
KV˗ܑ>Cj0Wa0h\Lbp-*<
mq&](S0FUyp-KYB*lUѺJz':<X2cQk:Z
%*)'Y0b;uV'C"d N$=̓㜎Yu;+ODDVxѦd-q{{Z1Ygb?`aw lE
?-RRqܪ̐orULMY0+6,ox1DH?-\TocGumx%h)UVוx}YȪ[_c?83-ja5'Q6,xΛ7j([t(
ב|'zA}kT4v%i"LV-ҳ.O*4lQ{ȝ-n7QYŵݺ0ֱEUC<UK
ʥ8Kk+Ǜҟ1QSZxV&͌>oх9{a|@2}ɮ63S蛉oF&3/0r&9J:KE=f?.<.Ujp=p"t>ă4_GxH#%|L$ct0R/Ǆ8[]].fFb%	ԟ&0F6CF6TȨ"Z#B 	>9N**A__+|PK
;H  

  PK  ]W            <   ch/qos/logback/core/joran/action/PreconditionValidator.classV[sF6#(@SW+IS'6{Ȓ&>:S(7u:=+)
vu~g9Wo3B)2C?]Kv{ؐSx y(z8#1F
&s>g cbL:ؚp%}+%+;]̥0jVv`'vm=0vB!S20i'"^#`0qI
ǭ.٦d^!ꁐ\V9=b(1tK^a(&]Ue8^%2ʚ '3$\mH2(Aިv7쩖fr1d`)0ӛ1WUZ~$¨1`8)~b*(TЧMY5.HU#4%$?5nsoTϙ)w\
Uy{5\1T%]61+FEx"pJ'ӠxMMnng+4i4>J0)#EelM|b`bC:&
R]0/ܺJu.6\w)m6ue T>?e,?tx<ۦrEJތ_]޵Uw+T+%yD#UZ/tTSq;
f+"6eG<%x=ʌj2TE6yibϦx&o}{ ]"L5:BFPs"}H݄BΦ}_2!~n+jT;{~6
z~vtzY"Ҩ1^pmE/+vϠ:鯋$tO!sp덺ҷy\{m5Q-ˎTh=:F&4Q5pݦ1ݕizO_'P?hKi:RMezP)g0їgxgo?a iB]Cc0")Z"C$-7H!z3ҞC_вjuEkffWp/!iiW)멚I'8ba+ Z*xpЇ1&8Im:	/$3XY|##q~UOi״ot
|Zπ#҄J l^ GC\/sT70yAdnRV
xVL$Vi/(FAϦQqO7\*qߍJdUCNy_.$24k?PK(1  p  PK  ]W            5   ch/qos/logback/core/joran/action/PropertyAction.classTrF=(B2|3	PH0-2kiqʒV
Aߡ??ɴxNr t:{gz:AD?f
UY^ШsBa5D5p7]ߕw'
GIWjJE(_àd8߰j2tW1"ď1OቖeaG~P\
XX.
QxC=>#)S!:8jttй<Q&ug4K:CC)-1oP1f2ajyVķyItr{`Ћ~bu%	D3o*<iZ64G6-3j}kI.bj7Np87Mb~jtT~1tLE0(tVHr닥U[O{&ujr%f+C(qdrw\$gkVyZuї"֖\ER
RlɹVz8#jMÝŁ!)T?0MvSlj2Uy;vSÐ%WgL((bfՒ6U
pxogK4n|鉦.y,;`$[q q=cf
%O[y8Om#+mk/:H3pYu8	J_$xH\3#,R	ǨywOsoaQm:O`q15&1Ee̦Ʒʸ7Fw?
)<E)8K|.'5\ح[Ci
Y%*a9ɲ/PK7={  8  PK  ]W            D   ch/qos/logback/core/joran/action/SequenceNumberGeneratorAction.classU[OA=ۖVPh-)QcRI
ަIY7A_ jGٶe[Lan}sf/ <z]AAa7\ϰroӕ8p%wn'^%aosXCw:CrHE1
*SlW+E!	GH2 L 2\Aރ>is cґ0è+Fb[/bCOY;ܮ
t׸asl()g3痔̠{)m^!0AM
~I,5!EVI"1\Ug1>-#:[oШ-pEJsDȞO ^:JLnRk
"(ij:APܳ
Rn1,/#^¶qW˩Zl0f+^i%wMnpiysQ-2t2]Uc.p4ncXa$J$y^-Cc++B2YAX&Cֲz|P
nU⩥\:|J&&p^yS<343gGfO>Ѡij82 bz
Xhn,B}+b'j)m!Fq)}<P8&
767h1УFKM.8)kXVK@%`lwvn~Wc\{ډ	H2\J[}TGX%zlPKJ`E  B  PK  ]W            ;   ch/qos/logback/core/joran/action/SerializeModelAction.classSn@=q^Rj&Eey U"T"/AxܸKű">*@(ݙs~mܪ
9w=6}# Tb?/kt2Rσ]>@<"[큍2a+d䈾
"5U؉yƩggky,br
uA8'"9;Ƅz#eҋaۗRx>N{v+Qըs;R)y\Cwk>a}"URz/p7t2{[<ۍP&="o hї'7*<	Z7`wb:-H#!</9_ӮΨ%TzzJ4;qBU98tU6SNMNTb
< J(	^׹#RE, pWWpu#T[U}Bpֱ>\P0\a ͒dFMsnK@	u'PKz#  z  PK  ]W            9   ch/qos/logback/core/joran/action/ShutdownHookAction.classTn1=N7IJk &-BjR@BT	ޜnY]o· /TQBՄ">؞Y9gc+;X"4H1tw+q_
%Sp~_DjI^MRy'qQ n#-Ji?G80$]_D&q.fSaw;>DoizXˈa-cɰ\C}yjyed0y\$um!̎BЩQ!&^ NSE'O\3v]R]*a
k=gW:-:xCt@?B)2:\蓨_RQ I&ǓVÐǺawjqO8#yzj1rJ}#
|֚uXg|c`桠<YfFsr-@c:HcK4;+'4;&yw"\G"avu
KVPױL}Cޔ#d6J>	gHB#f
eҔ!iDo@}q@_g0<,a,Q7,GPK!o@[  l  PK  ]W            1   ch/qos/logback/core/joran/action/SiftAction.classT[OA.*.܆	ML*1oX8
>C|I$gKKbD윙s;_,Jq1
o
#p/ԒZ\x
XDyX=3<P1Jwyue᫺CEYÇ|iHtvĲoZzuoYte?}e,cP,틶k4P7xHtVLV,bbč\+YV^)N˽h']La!", ئi/ױmH3+g0A
t)aj֤~)j>LBO9'N(յs	d?UQe@<ÿi 810tf0Yk)Қ3oӝGΪA$LՎ`&:^S0{3n
\[ړOƉG3O
hщed>fisDue\!*%
!v̦s}e{ڍ4A;쮓NfwXzs%#pQH`G=Ĝ!Zd\,'|.V>7л5bcX'PKd>p{    PK  ]W            ;   ch/qos/logback/core/joran/action/StatusListenerAction.classUmSF~dINRj0%m8oBqj )ipȒ+=ڙ|h?L@S=U!L=n{O xDb:p2~6+1Lƶs঴=טX,̄{kN$Щ!t[5W\փH
Mv|ؚ2٭gΊ
A:
XzKۼ
Ƭ9yu$#&JQZ517&M\e
Wt|>4v]cFJ߮ԥBr.
L*f~(5Fa$
[]ڎ\SSSAwRqjM1\$ޮ h%KjEYx8[fe;,R5_vWǋ)*	\cX;>\>$FF##yH`J"VDƵ(UUǲVw7S-=rīxz(Z$grgڷqeSpӧPx}ȓwl/Lϵl%$sL*0 D:!ݕwc4E;RKM3m*}	g3OC,Rop&SNF}S۪Q5pI<e }^[r˳3^bɄgT29n*$Yg2݇7I[uWn-]`1tk9"Ȗ<o^Wj"B}hMcHm(p)RzѥX 
O'NW1T 56j14/L
kZi=^b/to$ogKet
>'<;3ײigv2uwp'?7wm5F`x3 A$1D>qY4FH2ٴA#	b$_,9&Ɛy/BKLݧ;u(B
8}8}8}8NJ#|Ec(V鿌'KwXHPK6  i	  PK  ]W            6   ch/qos/logback/core/joran/action/TimestampAction.classUR#E:wv# aU.!.*5!&*,3iNfC+X/U>૨IMvղ?sN>}?~ۨ@00"CnGzB?u=ܔۼ-ܺٴKgf1,moqz$.ơ!ńI\cq~޴6?RzV#E!p;S<g\+d46Uq$BS1pkl	%<.ul3-y0=*'1R>Û}62]iB1QeO\-yuU
sg9!0^Rq)G}ayހ(^cȌTW*X@P-2V-qTY
+v1-Su%)υ'S(k]êFmmvw5ɮĞe'_5NժQ.Vj0$DCN'ec(1*MɢRY^l&g)ɇ5Z^.Jq۪yt4P향Wq&Pm[\y?)0ELMe
°0PUT1;}k E%<1г"Q倷GQy-Zǲ녎G$e<gc!Đ}ӓobR7TO(Ic'@>ѸgxǗI~w@ }u3`&F|<6iպ}Cxd}3t/Sq+h䋗H|(\M!38$e,nقeҬЉ*Yqusp<}("kE٣0Ŝ>}EYN";
(9Z ѯ)@OX1nR}SĒ%Lx҂dϐf-*"wO.'ȍ|#B𡟡'PKV    PK  ]W            5   ch/qos/logback/core/joran/conditional/Condition.class=10C4qX#@be`c
QIp(D2ɲ<_ v+TWеoC4܇(>d+L	^Fa'c
aޜ	S6reZr
EfAe|PKl      PK  ]W            6   ch/qos/logback/core/joran/conditional/ElseAction.classkkAi^m_&eTDQ
BiM6C:qSg71O?(f]#X4}~+{9a8Fnz;567^tP>u{*P#B	0A]MU."mr g}dx_A]unVYNIM zJW̮	\i|32*h+4xPtZDv$rj͍\gYnKV{']La!Afxe0
?)N3+̓:`@>ojҼ5N*~Ueɡ(z<]L8G3BfzAUr*~X@4bđF%m#Z[1d4w-:>Y&pk 'm7uxM9qf+=.4}o~hӎh)}8,n/ pfp1R}dJK{Ȯ:y3Wv<']b ӄ;	خ.Oj7\cd:nX=Y}\LX@zn_E)szn"Ha9& PK	qvu  5  PK  ]W            4   ch/qos/logback/core/joran/conditional/IfAction.classU]OA=n[([BU*LbҤZ/feqm'Q?xg["KM42wgsνwf <j>CPTd/kofX/֊-Ƌn:VIk!?9a lQ̒.'yn%Xv!Y/ꡮ-
g-EӫI%}yc.L'C!-.[sfYvl,]CbjJ&a7^6]cnUD1*Sz!;y^T:U0%)b*p(6f78C"~a߃+HpU51y,		ό-I*n&ZNTC!0|e6_r3/r:<)%nZ /BF[En乭ykQquJjCNѺ΁it! 01GiE:ҟ^BM7Jm&2oi^W	^$jP<.a]Oty"giN8Tz8nam?}ӓM$hd1geƠ4j3% VpdGOڙM{Y+#\zW0
)AAc>	oA/
.(ju(6BO,)&N0se%Qq%8x\`P)i6@FX
yiI`%$h	 bF3rPKq  !  PK  ]W            E   ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilder.classWkWG~qAEFEMB Ek-BQ@ Hmk'1Y
?Ӟ~;llrؙ>e2<	
b|4!L;4Wi]#%g:0Cfh /	a<_䉢鉳MB6b 6+x[N31oZܠ4̂\OVpÖUsd_٪ m!T.UHfH6lk@;a(#rh'湡fbD=lf\Ǌ1 $;%#Y.DcYKu*؃;m$]џIúUa3G.1/~jg-^ɘiy<҃
<]rC[ vం#0<>nr7`ZU4SЅ8%SS^Fseyc؜2uat,yRB*Xu3䨂c1+x'vhܙ՜lm\Vg#+%>'WMsA`Z<^odVha0l'Dg݁UT)UKK\Յ$*F)V1	e
 ^aDq=RR8R冧ʏR&kK<Cᒖ켪R	:7Fͪ
f0P6Itm6.Jk\V:ޠ2_O9uYX4H-;rx`556M]p#,%"%e[oC)-kpZ%ǫ@#)?HyyB^+;LiaM.d-v>-M./FE9TS'iSZNF`W7k]D&O#$ի5H寭OpJ*-'֮3G57
ˤk &C]REA^E%u]d>ҩeE	REj$/ǂw'25{Ye]aj(&TQy[ }pvV(
Gte2IUMs++V(^9SfRŘ&ݻnHԁMӡC_P1ƶ4 7|+O:W}:H9m˦L[e,72;p*|U	l^UV1u=9BkҠ&PC3d(~#(4*	k+4 >7!COA+鷔o==F`!6>@0 "W"z&ePDV{AsMF}@h#'?cH;WxC%Du<P&}$PiΔ0:NCMԜ%Llh9_wեMH]Z'=Eb(Tq?A]ށNS)`	y>L(~){
1؆CdIF!Z$u7@i|ɒ#4ϦЛz>ze8KR}S|Fc!c?tPK$F  3
  PK  ]W            E   ch/qos/logback/core/joran/conditional/PropertyWrapperForScripts.classT]OP~ξps+1~C]W8P{jwF4x&/57{:F&6۞}8W 7a!!a 趵kֶcKmqy!^ldFFn`]{|%:+-1m8,LoK.<5wi`diܗ+le5Au|^KJİ@#鼖:. !o"
sк溯D=t\e#;]mqT^:sVNX%1+ci@t`H,MaA4kݗ-'xb\kZoXWǄԇK#OI4ui
Om8調6%Z~X
?@ϙ!;DI4%zStY᪂gdQ!aӦn:5PHLQzLzR~\<&i5z4Tgp5
~α"UA[8t=RP?}
<'o_U	~]xD=mC*=Ls
Y=)iJ<f:Y1{Q(hS%;ϴuEh_ᥪ(hE%d(<xI^n|>n~c&5Ʊ,}b?̱,`Sj]PKV$    PK  ]W            6   ch/qos/logback/core/joran/conditional/ThenAction.classkkAi^mߪIo"*
T-d3$S7uv~`Li5m<_ c,a50~ب	B-nE0E$u=CXfqo!/ ̦*|Uq"o|dxWA= xвՓ2ёA=-caB+:"hXQ-Gb:cKUcnf;=rG(aX`hл
$*lJwaiؖ)ÄϷ2cڔun`EyXQgVM-Qdz¯
>9t⦢w=Ӆ<"Tu!,c%LD˦'$$5ܯ,1ui1Lʯ&z!3*M!6/í~7	ړOi6[1qKg~0󭣱@;N3yxa#-p{84 y\rDq4^X\ZGn)84}"]Nfu|2o0OwGu yE51 5yKG}=sDj˖PK:ύv  5  PK  ]W            /   ch/qos/logback/core/joran/event/BodyEvent.classURA=@6
A("(h.]D%P!ӐLN(?K|٬tyHtw OBq-&Z`ȖҷY],=aHJ`Q+9۵<ZpjgKYWj(\Io6ن$Ld/Y9SjQD׿R@@+b}=ГEy'cWU6(N 4g,0dຉa`0hbm%V㨉+C8fbk|WKTomM|hpVV"j5]aR aGFz^A'H(g{>mSEK']RY$䟉'x.

-"g^W4TIyedk&v "
-+~O&,rl%A$<y0Rihݗ"̠1%^f2|<clD\nXQݽśwq."ϘַvDYtHQS^/|/%ዡ4o1zG@Z}Z'iIvc__`|"K FffFML/}aZ#}g `,	
,C{M%m"9?F71}Uڦ@a8-YL"ΐ |Ce;Jqws=ISA4U_G8>CWYggX
XPK  \  PK  ]W            .   ch/qos/logback/core/joran/event/EndEvent.classSNA=CK]|
VmM*F8Nڥۙ%&>&F#?| xgv{gsB@0RyiTƝ(_{BvnhzJ7|n{\6j軲>PD
?+;&0-@ц"|ۂa2_8?0C/YbS}u`&-LaaaV\)횠DPօW,,Ke'ϯZ56o6	!a@;gg?ɒn"yͣȸp`2lԿXR`I3pGW}h/xM*3Uj
'Wu#JAk6U=Hc>_.w˳B.˖l
&l3p_aT+TKDžnr>糎W\=,Tju;
:}LMmO8z|
oYJ<"0aq _L;qNOMDxV25б;#(fR[Q'@}4Z$4;k$Mۤ(~O\c_OEܹhf'XiMSn%<2RO1PKrnx    PK  ]W            .   ch/qos/logback/core/joran/event/SaxEvent.classR]o0=nf-n|2`i!^H"ģ6%M4; QMB\](9ko? <SFy8<ᐿ0<gP2Qp
I4A4#Xq3&//U`b"gSwoJ$ʽnA$
[h(p($31#Le<.(>L2bhufn0fd3˞dg0^D$CC;d|$T?)h$#W=sl
e^$Æݽlt[JFțer?:=WV+j1gCQ]ݲLw@sA7pOPH9s0TGԜh6α@rMz4(]S&ڸC_v,ҪHb:Rr:R:RڿYWT>)\.LXH0qkU)~Y\g2ŵU1ۚ
PK"%  ,  PK  ]W            6   ch/qos/logback/core/joran/event/SaxEventRecorder.classYxSy~[ŁqƲ- @&`LC1!1I K[ۭMքknKSaukfkvmil][[uK۽eY3/~/g ܨQXݝsb<K
v\q(\Ɯ|:֗G{rGBE	
uٴ]uBc
릧h$؀5'C6RvAa_k:ڬkUb4נ@\a8669XlewMe삁V3u:v森-2KLG-
C2mIPKULKqkep]vҥ:!dmJ+Mj9"AWXRx6_trBa
ZEֵ
K[=q9[nχ&AUchm;
ZPLzyCt&E:hqk51}8g۽
!܀6̰3U9$pl`ω%exDB!Wb`"F;"DsBDvLӍh}ro-sH!wZ7E.!2Ы>Q}
7,H~H*,tFl
SOsE's:RK1Ng;q˸c5krtbBWSO$da+3Z]F 7I;|.u#I+2q"C6Z;BUQ症M*ƩR)mnM1mtsӴl>	;I~fOu7w*ulI,Giu]1!) ?n[n`;1f	2v.M
ݴ'Dڻ
(B"gŊX6La6q2䭤3fLJSIr
W*[e<.,wVv>Bz$$ˏx,9NH'#%KN;YLd)q
^$I>̕򓒫&N│%-W}єN?G+
akXte0WN	ŷx+~^3p`wW~qT
R=/JEG0NK!UgDNtrk\}d+^j\Bn>Pl6j2Saɡk;U=2
ćxN-JX1TXd8jì*p/yZ^2 Lf96y9h[3iVgQ-.Sgv6%H>naq9ig@Rllinaģ$;GV{)8d9K߸&yj+z娬\0qQ=L<e2~D1K|핆14d5xn)_3?PU"x
gM Am>sMЉ{yK[vqt./+Lq4뭅dK2v:!AܖvGJ\F4I+r-_3bz7筇R5xI6~r۬BV<+♲2;wٸ*Fё˻z]c.ɥa}HFߐ?e,ۙ9&~zu`dCWX=~)6԰ow'
>JUeX'.k4vO1nEˌ$3٦][{zKLD5i{;khNLWp{t|j;	G
Mv"31{:VaQܩ&	F?NיM*iBXWeLuu>IUЗN({dÝLMͿ^nnahf'[i-q+yktdi+e6>q!{fVK9.eF
#&/0SH=:j.uQ+[+g57WIt-dQ8~UH50PxBט!C^xNK.LlaI3s`H.ԫ̓l<@HG _nDElMܶUz/T?w;T?k{ԩ]!էv^j3ʤ_'s'l=,WdFO	gu";QyS>l?VD]Ɍf<>؎)TCWnWo3V@>*h,b,ڏ8N!_}<Yܶe^@Gϐ^\cMRo4x?!)!9'G!]|R]p9\:dyǊI>yH0ha3QxJ<W<e$`>ڱ]ƚnmuQi)~%IHa'	##6Q6<ǶG2vwu\g9W/#1R ^^=\pllG;s'b!ܽn2A{ Q=RTbUVs.6ۤUOXuj
1p-{
3(SF|qM->=.W(YQjd(㴎~q)~Gq!~_Cq
c$:=*psX.MTg.0ފNTQ:1~]X;;yMtS[1D$KE5c/b
-Pas[Ks\@+ )Ejdr?TQX&NOhY`L*l{''Ejx;wڢVTge1UW2sZÚG&6-jj@Ѩ)ѨQK(դ}{hc]8|&[!_8Ux`S])}%$O3of}FWBգG-6QGztZNEV04봝iWl^Jg|}%qF\}]7Mq~,l
>]uMuMt6|=1NHHSg x;%|hŻUa
~/]&]4RzINj;Wr'pZRQ6@]jjCPKk'RZO/K[f~<2{uT.!
k檨Xb"^E#y@z i*''sޯqv26K5xO+AJ!f3W毭>
QB]ub[Y^{:Jy~v.̏Ń2a>ltK^kLz:Hȷdn'>/`=(zw~zyBciNi%HFij5<"PT17Xs}'OOqL|ZQ'	Qch§\Ӭ֩e}f3r}\?MOz~\o(q.(uq$;OT%Vd%|3zYԟK<SFDAmO.A!MJzϓg8T(( ǯL*	@_
W7>O
/wi~ ݤ6k/O+W}*r<XI﫤Y=|ߧ/,8zYmQ_*L~PC*J`oUtQ7-~9+R],ԥGjoϛskPJU	ՏPK6  #  PK  ]W            0   ch/qos/logback/core/joran/event/StartEvent.classTmsU~n6MKSڒb(l)kQCE(EԊ7NM7?q8Wv*3~a$g|9g7J?޳g}s~pk)DUSGB@n۰FMu3'üo:,7HW`IܕaKa,4Jz
cimiTܺ]*H
n-k|Xfl)(H1aCz7}xE(B_z~WcJ>G88(gSq æm6i5-XL
LX^3$2ݣ0C>+0ާjXV*rɆ__MSh3*5lLgM`W`ioM<
k%0DT*D|S9@V[xyCqP&5k>8%gTF.DU3Lmn9Vp	=\PpQk#9ZiLe.,g2BĊ2!-vXI\;kA}7NC?]a
/kԧ^=nʚMtŪ,:cER|jf¡Yhdݼu{hٽo+iNnC&C%j{We+)vy⏑c#4{#KQMhu [ZL,؆(<oc1Ԃezw)$]Yp<WBB,N&kTJV4>!+XL.XtN=iA+c?B}D"p
a@7
74d`b5}pS-Ya_ϲǜ?}Eg_v"Izu=CY2"TO_Zr9+sK.9Q9CS*ҍ4Kzt*qq8MW8op&P#,;,(n
RY7'_-b/PKXՅ    PK  ]W            4   ch/qos/logback/core/joran/event/stax/BodyEvent.classTNQ=B"UAm4M&B0_.lPƹRfs9sfvs<K!HUjX<im+Oܕo5|g^Kk˄li[
<Z<{^8OURe]mt!.)0ϛyEUWɴ\Z45#l~pcIW%@@
T8db#N=1ݸQc&.c9I%ەM\QOԱi/(YsCD?t_6mJFTE2auHzlWm|'Iz]`m
׍N*Rk媭t4oE)&ꯤ_UF	1$r9-xr4KD,x{0uvwՎĄ*ʾ	ʍaƗ­81URjYo3]e#7۲ψ g%,
h4dcxB?,%/>luLq 3O?@o0:{Ìnj"#XG>oי
s880ELSi{9@pL_*؞`PoQ1n2i<XOdqpBPNpo;XPK:[    PK  ]W            3   ch/qos/logback/core/joran/event/stax/EndEvent.classS]OA=bbEXkl 4 ôK3;%O<Qƻ	nvΝsϹs2/ Xb)6!MXnvO:p<nfij_:{ʑR'0a-ү]7R}O UJ9t{Rn
jU)dQ؄+)V"l=I(K0u92^JQq[M(\$xUrkH*ka6U{*F)ӸG쉮j\\wL@(
V9pUx&EL>lΓPFE1:	-r
N"[
;(Iѭ y<A\,"}̥-8W+S]WLcEhq	0`u_(>ڗgR{i*Uy[]SJUO,<']U/	3C`<>7ՐF<f#xwQØaDcf$EsuFkߙ~!&	L/v&ұD'	Je<:$<B/PK3 Y    PK  ]W            5   ch/qos/logback/core/joran/event/stax/StartEvent.classVSUnIXKiBK1	m-* (P*Zڪp%tw>⌥Cq|s7Oz$`awϞ{9Ώ~3|1)b:=ͰVxzCK[-9.6-_tSwo2\ͮM\#[7גfK<Ziꖙ/EЀFMPZ#n:ryb¥p+yW8Z6w-5R*Z$%0t8ل(N*8
턠2μ"uN%@[KpꎛTpm-W"X*$Q80Pbox"V`	o  "q1*C[2@|YRqC^}44UaiM<+N>HtNvG.'#k
FT\(C硖*f,PsdI)WqS܀*Z<sÑ:*S8b
&]Ten|vE^ѤYsroOYF>kQ*p=7Ĕe{!rҍT>5yZVcg,MaC2'jAu?e"uwAWK{X|ʪC&)̫h5N: >*f"01sǪ"IwǩK'5v&'LPeP֚himTx
d]1ɸGWdi1K[e|Q!&-%G<7'܌41l.== {R.
6xܴ6Dp&4%uS~[\57kYܡXQvKU>H.a,Sj4=ep/.UWg6o^\!-/m$ 0CE`gXbhJb9 mBt?g'(=\w#<IF`(}$C|Bk>O p)?W$~B~_зcxC#.~t#FԄw_ ?e%=x#]mRJwT4`ɣY*XpA;7_GF )
)aan0>OC{İ+ᡝg`;tD{\#o$ ))_<P=dO	\ǆ^}֚jKfG$16y."{f^b(c `	
fӕEHƗ PKNO=  s  PK  ]W            4   ch/qos/logback/core/joran/event/stax/StaxEvent.classQMO1}kEEz4ԛ
0$4xB04Йt{3Ϸw $B@$(bǯ}i3۵spI d)=z]a=p%{pK7@Lx̥2D\1[k*l9g\!2_7M2Z:i5t#ʜmu'#=$RkFO-=lZ[!EbʼImo[V]eB
]B^텢Ha:QƣV-|
V?¨OyuDȖn!mdQF236	H0)%d8yxZtrO9!#OJpYW~PKz    PK  ]W            <   ch/qos/logback/core/joran/event/stax/StaxEventRecorder.classX_^X\F4F4<w5Qcx%v'03
4i>3M5}-+V16W>ΰ?0s=s^pF
5tX.6=gф=6jFccFݔ9u\0pM6+iy
5l8c7iJD;ǘ\/
kP
]ZP&?3c$y3E]Ϙ-?O\75jZXߛ&GZ5/ZN0`xaۨ6l(KأFb޼kJlDL.`~8J6w%DpLc"z'J{g;SIBOaJDM]}j2wF`cK<K *ZvT*M/TkuB@ҧUd4ܙko{2f<NjhhZ[F%E)qX55WXZ4c촛v̔xftq#a4b=
AhFrPY낑qǾ`AnհO~#p*a
_e
+WGZIːhl-E;jOё+coah*e*z$]:[̈Yd.uCt)xԱ:
h:_Q9Sʙd\	It:]lnW2 qBà!<#D~cJrM13z\N3O┆NeWqcFbXqE	$[C:ƻX6ˆs[<\C(b̉x:b,_fjͿAiH4x-1c$N=4J5k(H`a%4#Gg\i.vk˲h<ig.[X%=cƘeN£p.PBfש^1kEsm1H^Bv|*q<:>$3{NUs0.)i\lRf2.}Td-噃<dJKO
^.T;>3leR똟O`fWk,`f;3$:$OV);%+:*âYnDʛc_!zԔ-LS!iSkiv4grcK^a/\rj{v{TˎSWY43$7B

ǒ`:ޢ# isUՊ*fܼfX%o_" gguK/\[je-Ϝol
Ψpl~CX{X-%`@m~4	1%iQnfؓ7@D5J#tBy&fNDi>K 6͕L-dw,w)=7hyؒ	閂H/S'N|p[(TknB4A57zV~Mi>(
"Jji/CuxA)]~HK?uI(YȿU/b+5okhi͡q&\M-(泉7s|7g"(GW=tՖеr&^TTeܩ,^9k(P_#F~/k:W3^eQ0V7䍝gqe@_,|fxo`Vs({Q8?*`
eDZYYB'zЅ^1_Prm^k*>)#7qvML)G?s\&9Bd>A%܆<(-9G*C\o8#HQEEh
p2fx{9xYbhylH3Qؘʃ9~A;da-~_y	32Oi{_˸U\l	U$'!a|D
jpqğ%OPV|ѿ='kEtY !0|d7xuS
F/3Od0o;b9إq
Kf? G?S99<3"^h,Fl(0tdac3-bo$R$$mFQy}"Q,,+H\&жP|(f{`(&mlFmSYе"mޔ	PKJp    PK  ]W            2   ch/qos/logback/core/joran/node/ComponentNode.classP=O0}צI	
lP=2X*1Ee(+upmp\C ?
$pO޽}|\bca)lgխ^+
axz0&\
{Ӷxd:Za>H'kcy׭#̪AP"$hVn[Kwk-{\S=Qa^爰%_ٝV(  (Qȁ5$(8
X|04uPKT   n  PK  ]W            J   ch/qos/logback/core/joran/sanity/AppenderWithinAppenderSanityChecker.classWsW,{me8-NM%;:MHdBn
b"PҕzW]'5P
U(7m~/a	?u`]X3<s9w?8$CF4	3뮟)Y]Oep@ߔ }%g9Vp^!0,皼!eg=O.X~x9H](QJ;
2цk]s=d}IVX,
**O@Iʐm;T_*/T`z$ۖtvYuDy顬\fB[^X֕W~J{kl؁8h#xT`cF<%Mvp%pX (WNtxyXT*@pQxxlفeO m cd݀k۪O}xn+'L +`m'[dք5na<i)RUM06qg
/^.\9?V F&N&!GT"=G`_z3efBx@E%
ؿ>&.jIqFyVM;dY<r!7]xn΍Ik0FL"/X<d-c\.ᲉZU0b9*??7Sk]&h]M*N)	ML&윜UL=}8nx8S+(	|qUKR`W*\-_(P&ʘh@Z/ڪ2#>"ʤN5

j:kWu%n}~-dy/S'{zܥdUbH9nT@Oo(@pVC6.ls-J{Bz^W7QDcS֘xE=DT_aW3\%<VW<\(e6!#N=Q9UVTݿ86*x3u	
^׻cZx:*+UZE uj)ea-J3̷'њ$L{,Qp罢umdytu61YU[چ>R]ʷL|f|W̲R4GDj@J	Ouaඉ7#J-;#!<4Mn;֮*Ss)qJns}arkr('~{X6QGGmih7}/Ȍ-\b#v六P~ɇL5k>ж&eێPkG⫷s~Uл]oA$m
7GQ`7"fa!oo#~0-]Ez\D2b	y=R1ǖp<8p._om
-N-zO\c{G'lPa\SW{釣}| U8MG~F݁c!Ad0n	WkD} 仉9U l$Oӄ/q@gqL.RFD[+Hx;x`u/j^*hHOƆz"6%YCš0RO=xP#95|*vK<mЪV?JܝKۙ0P;ZbV,PBޮpͼ	#~5VEyv,Ծ?_Ѵ7>ԈXЌd"p^"*1uF!is?/+A PKo"  
  PK  ]W            +   ch/qos/logback/core/joran/sanity/Pair.classRNAὸu0h"	'&K`o@L<~E\dJwu|}|aD#/ᷭrԠ-R0HXpbwi	ۮ'y}AY#~'WOZ_V\1r	_ڮf0,q`I*ۨȞad]mJԕ#o-5D/u-M)Oؠ|/45W=*$*4MT%)`uR
cUCr-kJwb::
wY7О^V?}5^;Sz+,FTdsM5褱Byb4lbF`sQ;,*GQA[3}PKOBw    PK  ]W            4   ch/qos/logback/core/joran/sanity/SanityChecker.classV[WWNH2FxEE
0PbbXHo'LfJ_RVW?9cDWW}>%|C
*"2t\MYb7c{>uP2ab~f~:GALEбOT}Ҳ3tb1ا[EN%i\;aiA]6\ WFOr0YoF= 1trqz7q)H8#o+RޜHaᘊ8IRpZ 0lڊr[mkZN~JjվaTMxŲpUkp|dAȶ 23Wp+ׄpg1"!INMٴhtG6j9P1xIQ!*mLh=Xںo:6^l_
.xo;xKy^rk\/1'w8CFD6p+pS8|LKnqӍaWD®2*ns9)2ě" a`,m.! SDRȚ1W-/Xӓutnkum'[%~ɤ=BmI*[
adP9o~9h3ݧkWbΉMM&ڒڛlWjeUot\y?ڪc՜Fޣ7֖VN-]ahDQ"Ȥ*L{Ybd{9-l\a]h;2PߡxPݗom+ubj-T]ݘ6egsFwJ:O	~)zq0Xb8(0p&(*bおtZy1*x3<b8Bi?tV
-+='[|41tW4	v2V+t2;	
4^00)nY9^6\y'O4JM%`!$ ~0Y&D0<1PBGKu=DxqTPG~Hjh8YGR
?,՝#c27I#\{1{Dad1+9̓sAA&N.V1}NBpv)s]m5MD$Dt:.
!`#}T@h¼Ny_sXP5k,!YC$$D^㮄})!
:%P7j@xLR1O>tw&❠"Hf^Tdt
a0I
C'Ԕ&Qe4kZSWX,$6:$u,TL®QQkRs|PK"!@X    PK  ]W            3   ch/qos/logback/core/joran/spi/ActionException.classK/CAOzU0""!
^v0_˪C3MHsw~sr
.H E42(/8~}M@@Gzu8<G(վ."^tD0lY$b(a&i6w+<c1V"sd4TVKlCU*ZW!U5׊0RӁ:o5t5Ge*j jjr6.9kLT_WA_ԉvCۮK`W	䜿p$%F|Y0	
]=llv7,0&TibW7WߵYӹ'PK}    PK  ]W            :   ch/qos/logback/core/joran/spi/CAI_WithLocatorSupport.classUQSWNlHTm),XjX%R3!>\ٻ tȃS鹛-Mfnν{|瞳'uxTY1!u_Ug[ݶ[WJD
}]/=²BjsOA}'ۺ:DF0ܑqu0̝v`nfSy-q@10s6J8O|ZE:awcq60fc	
u_1-ѕJl:".c¤+00M/[}ΙkkUuAߣp+%(S=.[fesZN·n0ʀXpg|xa$iza"Mh}+s=muE(I3p@z|E>,;*WWKzf2w"?#=)4BKrnpR:֑7U;qwNkIַjk[~([X7P#LԾLo
;9"qϤ`Dx~/>9
eq.|iٍ QJ
ٮ<θY[cA5V9B-aW3@<WTxE,%4\`c2{ҾNiWbsWlV~d.T׫cƛl2,HbjPyZ-Yuh#Y+<VX"fdY|^	B⑕wI/8]N5<Hr'?aoPKه  m  PK  ]W            :   ch/qos/logback/core/joran/spi/ConfigurationWatchList.classVYsVn[#c4Le	8IIj !a)Ŗ%Hr t/P^`$,3>txu+K2<#ޫ{ss~3.|G
<jExcgsWgtC%5Kn^O2e_)V'>.aô4/ŋ{
CZH) O= 
X'Mr2VrSEC]bXSTjHUw^DiSC!Iflaf%E;w6 iySnx9\$
؆l'q9oF%{)Ęn>u87-bR]
kLFWvQTŰ5P%-&~t`NgAhZ8~ADFW)T3ky伤) <ܞZئuT1$jMl"zpylW{Eq*sg~c@Wp;m薞UjQPUW)13X.%>ψ8
a69"&p.~9geaOx55]%q2/+@KE^m~*B4J32YF&kF%iŗRА)J^AV\r	P[RTҔR4TqvR6ƤI.`JHd(|.ZSp8<yO5$sx"oVtv!-\ORZhvs<U BKͰ'Hnp,{Uk13E5e$EFhE5BwDGelvY[eHlMY
.3VHυm?>'>rA٥(xPX}u#'%-f[JgpXҳ;΅HJ:X␦FVS6|ɰQ5J狳;}k=t+G/\04AU<4>OJ,["K`'.,amMj w`fctgB[S|ڐF~4/a+*M4W^u؅ nv!F$inv=##0pY^^D)%*
>OAS$CzHtv-*	8BG7|0g[FzZrxrt)vpG`G[D!^r*ޝuS*S{	'(q6YfGjI씲?GD0*eP@O^}\E̻Xq{x.*Uً'-Ӯ);p*1HUa.voD~R>(Cpgx#tX}|Giwgxkުa?n\ioVb?}<$prI'xlěd*xޅߡ5G/yD:M_nD]ĨJtpT~%\>kqX$B<W*VPod+6K{O~Mr]s;/APK ^    PK  ]W            3   ch/qos/logback/core/joran/spi/ConsoleTarget$1.class]OAiv]"
J?+$1M
2mҋxGLW>*^0̜}=ϙ_[2Ț0lg9u?/$$q+{Ɛ~![(h²q6äN	ܰ紾Ș=+{aڶp&&m5ܧȏ9QnT*cFKP>)2`H]l̫SA"&6AH'w<qTDnȁPQǫTqWPቦã#2Wߩh}_28Uf`
kOkqx9QpH"ή@@H?/NL8lpeVH
Fh7p@Fy0<ȡ)+,јȀX7@.f-|9?|K0#_P
Vb槚[[bzFs)M(88yElhru<'[)YE{FGUWcN=O֤jC/IƭKl.`j:g:ϴRlaWuPK.a-    PK  ]W            3   ch/qos/logback/core/joran/spi/ConsoleTarget$2.class]o0_iӆƶ6>0i4P*
Sovfn%IYpQ$.(ıQ,>y؎SYH!m°AapOa<ƭ8Cx&CXjCބeli;AD {Z!C.􂄵a
LL۸s<O(UƜh_+ה`H\7l,Sd0XfXu/{}]
~(C'uD{NU*<3<p4m'w"qߋxBU6XzAS=^aHReK/HZrⵧwv_U:V2[	P6r;"eD}'DXWZF,nRifJ)JA
hjq {lܥ7@.f}8|K`f̏}	CEB4?9ܗ/w!I3EqG$אG]c1J**S:*S>SsRm=Zp}2n`3)u3P9*RaWuPK4-    PK  ]W            1   ch/qos/logback/core/joran/spi/ConsoleTarget.classT]SV=גp!BG@&[AaDD$93yt'ڗ&	2乿#?Oi^b;S#={v揗 cMA!_xxu^|K|Ճ][_sUӯ[a8zƣ vV!DGIhH,>מҠA.-v)N#9k1fm;[WַCbء$NZdɴx/:fZFn>9
`G`3*ⴼ<.Cդۃk 2Nz0`RE3 3Ud4dgmCLU%
$ -xjڞN
/$O`Amv|k
ti1Hl1)vU	̾M}.V1Ղ[aEoh/ٮUi[fS#>^tos8U-oOIqQELRO(zbQ쀟Na'UCE%UM^Hd`D3|hrDNpbDxY튬b7k5ͫM>ɱiU ,[MĄ캖/ξOQiG2H&DT!P s|{~	o.䗺9^11ܦg6FgJk4˽+0n;fZ*S!)~?#f1NFJsRqlWǦo#={gD~~&`C³)H
)!/E!L)?Js ARA?cFX|Gs}|xF)ϐrTdZ ~Mh1// ~ 49м$DI+1:I_<G$$Q<T{sy99g7TeO5i&A1g*"7pr@^i]J_>>SHB{CN0GڛBSO3DUJ=cw/1׼_PKGJ
    PK  ]W            0   ch/qos/logback/core/joran/spi/DefaultClass.classJ1ƿT۵_kECу"VZ+SkjliVaof~2$_ N 'P^KqqOE2r	ɾKP+zVFiEr_4ƲSf]ekgŏȏHzxԜSSbWV,ab/qV?guYѵ6LU~ov<;z@:=CS;NAјp޶*3y004`p<$
FxӾ	,p{?u%\PXraӀ2*A@PKŃ1%    PK  ]W            B   ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry.classV]Se~|KR mM	bm(kHkA%&a7&:\O-S;xUg)>f<9+9l? z";35USJVz2[xB%ۨeԚڬ0BJ
.@TM}m6S5J̆1jԊTmլִrܭfXO޴{ˎECl.%%pR+f6
aXۈrZM`0R&9*065iPKFqìk
kolm״0j1EVC7*3Y	Nt#5!0?ocEMR1;p)g{%ѽ$C%Lb*tQ0ReU4Z˫T+ԅu.TMkU7JF*lyhkS[x@_Aj_oLM 	\L/m+<Y#Z56T"s&,
]ŀUՙdp1[e1REKU+"ϝ]&2N_=_H'TU]&5
+pԦ֝	,yWdޮIx%\?_kH1>YxaJ
q|O8:"!CQf`Q6H4DϙLYtV5##:!>~O۳8h3\Y#`l b%B[ac+XLq>nMz?!<.I= 3ŸzqwCQ#
>d|_bdkj9p}! !Gx׏M	9%F'p|z׉Ʊ$X'68rOQ|#{|}޵ȑU3Wo)}
ӿ#(>7G&	6qߥ6ј[6<!=hB|6)[se+17Bs#Ip}R+Sq/?C^ܣ\&yrO4k<'i!G2ɻ8Ism]{G
;5"$n9yxF4GivC^6C- a\K|.{<籋z.0{:Vyx9ڴG_PK  `
  PK  ]W            /   ch/qos/logback/core/joran/spi/ElementPath.classV]sU~NmHIi6IK`UR+-nӵv

R?^fog42KeInΞy9{v ܋bhBHCXGQ%㜑Bfzn{a`y#䌆f6T,;su՜UbjA
:nFd~1s)elga/gkf(dJE+s6ŴwI \LIGmdmξ1Ƕr
fL[pNwkk"m1kUg6yzDܦc;vm${Z3.	؉]|&A
If1=:z%Jd=oʉ\`JƓ1c/2̳eWrc	
D1}tDa
ܜ1dѮYY%CbOʸ  14tx*U=vP!	u眩aL`K=ѲeϛnM
Gt<,$3]s\d
q>ѐ1)I$և٢Q2{2vZ1<}*pB`s_U8r;-<cHE2h)_ND:I$ϹQk:Xc6oh9a-rg:kx=Hjǜy.٘
Tyet+
{p-OE$g2RM!Nk3od]{II
[@r`ݿ,"U(/568BعܣQT4к2ᙲbHQdUq^Z~R</g)N?{,8k߁=&oU=r P)4sDe%yॲA-A v)y%wF^=,&/ukpԄ9>	R=*5u"u+h/UZ}"v|ҫk,T--v᥾B,]A)!n%!; >YXb I+@5NH
:&j໡ph(ihgb+ݳ"ܤ=H@ҧB7O2؁(hC؇Q=!eb>	qsDIg{N&
qo&)w!N8I:"Nɻs鯪Kӗ %p>fƜuU&'?HRܙP=slO{jх05|)t/Ubc؀#4(nv氛Т|یr|+ɦ&=TMvNED	܇9D=xq!elq'6ؿ	qjԇi*R`]TI$UrGM7L(7
_=SY[-{3(QoT^onl,`[_T>AOx]{
[깙5hz+%y2+Z-9Hxkj1ZkgT;H9dvI:JLduTErK*)\*l?]}mQFK٫e>|7}n}*8^cO6ۧn*P".}G+,W]gއ>xЪaTOT3zxFg$x|>PKaN<  F
  PK  ]W            3   ch/qos/logback/core/joran/spi/ElementSelector.classV]oU~n?n[PB?[(n)NCw`[fHI4JDD\!K5ƿ7"sn9g<3> 0*7 --tJ6czr<g)3~2&3;i1>os˨S&llN\үiǴ	3t+zP \\D<ffhQ:ruC@lLؒe-AbLL;ز2L[G@qeZLgf m.Z*ϖ3Fca@ٔn;rf-߶EH˪'Y,S4)صK;ˡȂbAb@M:ejW X'Sٌ@}iiN#2XtiEtb-78*zxʩ+^Md6li/w#/K@vA°.afӓc="%)mSjN$xbM[k+P4Be=+yҜδm,niSܝ-K!I5?[҅3 +R8w$T> ׈nZ
RL8kF@YIu}vaOL,\e
% 5f_ؙc)FK..	x)dvNGLYiͲ&W!(QpE@|ˉ}Hog Ͽ0Qޒ;hSE-X#`Cnt0gG*K4KrqZyJW0J<WfUXU<6|	w^Nz}94D<jblΣ\ͻmG[*.ԱeDq}{i%EH`bkq c
sՃ1_sb#V%ܢ崘 nGǾDֆBthtJ<|  ]#eѺ@]+OY/ab}|hdO>YU-kh$يjq,!q|6	]q5c -q2խ8
]IrT1*jq$;g8Әȗd01_BOEt\)T!J/[2"AKWȅ*;<T\֨IT-n5~[·	\%2ZC%oQ
0R|fCWh(juDNW+%rj5juժ+?sZ_(Z7}j)[%:rg/b	X'T~DH{SlXZX̡1
k
QOxm3[s~r}&n|EsluI]hv&AqEt~v:(mR
Kz?P~LCS6իGgnWb[L
uGEا=n5{h1g^V	~tKm7s1LPK!    PK  ]W            /   ch/qos/logback/core/joran/spi/EventPlayer.classVSUn&l VK&)lBѴTt7ݸ4!:#t3Nqs$)3}؛s=||{ "*B7Cj?͝m}kCXCTlqq	=P2Ǝ붻]ƞnwtb+OL'x`1XN`zlxuT.47x>~2j`z򃼂4ŦrxM$Џ %eےk۔:0wTjT=OQ62BxWz_f$K^S>IZ!SlA;S`Dَi@Y9700qnމ_z}Zaе3O|*lpˢ[5P	&AQP;6H7u)7Po	$IcQO|y^,m3\
wֶÃG]3ɳ+?gX=+NUlP/e
h9~Mt5=KXcQyr[nuuOʉ7-$q.Dt<Jmm+P:e)b򜥊U!S7ʐe:]dE\sEx@k ĺݭ-_JwmϕXwaZ"TKǅg\5BN)p8H#[c]-lONۗ}B8DWj4m 88mDpHI2)	VInjI9@6
gr-'C_j1%龒VןKg"gK2c$^̽O'{#h#xS9~&TS9uDYlI4 &0Iai"Iph$[)QDUD~=oL+>xbOHarOr;gQ<jƕ,Rti|-EHPP7ziR?PK:    PK  ]W            >   ch/qos/logback/core/joran/spi/HostClassAndPropertyDouble.classTnY=vӎI+_!3kӲ;i&	2#hV4?vIlÆ㜪 a>:b4	6si6dfޭlZUO`hnޒ@40Ft
!0_ϜpjY}bV27W6v6Wܐ5iYө4,zR`oyo*:H	0|.uϵ"6cuٮ/;-8&ֱZ8ÌY]08uoȰֳlq<[V)w_"u֔^%|@Aj
X@'Y֝ӊޓ~e*ҵc^&_
M&~&
`V\~`OWv<1נIx5L)\[][k;
gb#U
Ffa-W tܪuV7ʁ#\K)((u'e6
h;NzQOA!MQFg4FlN2/唤
EܵaTJRC &5BwPe|	TDKIIIr?H"	[0,Sɺz
JG]{bǞɭﭚ`zSx4`
gq5!~Oܰ #B%"Zpŧ^Cm>Bnq+j(?ӃB'9ҏ9D>QNy!_D%SD2^*e5:Rzx]=WJwKϸs=kgd}PKǩ9  '  PK  ]W            2   ch/qos/logback/core/joran/spi/JoranException.classN1m"x]N0K7	AY8>+>;'01MsNi`SH  542\OA=d?R: dUB~)hF
:eLX$K[%LJ^׽u-Kӡt{:kʭK'FJ-jf:0c_^'=!Um@Wm	
1G0q1u!iBH^E9!0:#:=y䲵`}f0g	dy5^rePȝge9
#aT23,kr̪!pU6
a#lºİm^PK$ڕn  t  PK  ]W            3   ch/qos/logback/core/joran/spi/NewRuleProvider.class}N1ƝzPX< HGNB?'*is$"^ITe}Y?>+)8S|N&cϨ%0cY㷇qdn
4't'x?nY'{dLCiZd1Tڨ(ѣq~ќ/:`A>XkO=#+Xy@AJa l,fY1̹[?PKEG]   i  PK  ]W            /   ch/qos/logback/core/joran/spi/NoAutoStart.classOK@hW"x(xq<QOe5<Pƃp`f3>? \0Bp^ěqy&իPdQRZQ-QG\Ja}V
M*u^zJBRX?&J8Jju3hE8m'6[JSV!%.&GRYfZp0uӧi<$6BTvAo=78PKK     PK  ]W            3   ch/qos/logback/core/joran/spi/NoAutoStartUtil.classRMo@}S;q8i|I
C'JmZ

~^VbKa;oޛ7gxhcAYB'Kʨ#^{	ٝ 
.ՏEK	_r8$%3M6-8PӖ^_x*EO2A HC-cmeE+(gynEJK6rڄ[*.YlLx|eSG:	:ْDmۏ_vș<8HuieK}uS8amziH%& B)ae1I03kyV~y&zLC5=Erf&H`Zɳ Jv5	1>ik|::%	cd9,w;G;rGO03.1S
ˀL6rBմݱnql6ս1o[)DBBy2tPK    PK  ]W            -   ch/qos/logback/core/joran/spi/RuleStore.classRN1Ed߮	t1(,ԙ0OsQv0{|{38fx*JM,`''"S<Zuܫ+؄I0_*n\qABYa&:Jcn)'s~v$
.8qE!8X^t?_Ef˲ 	4Q/gŝk"p+3V|d)t!r1k#y5 O:<udLoAkCaJfPKg0:    PK  ]W            A   ch/qos/logback/core/joran/spi/SaxEventInterpretationContext.classVksF=kǑ(@0G).oS q؄bHJ(mg(<:~3Z:Guzwq#<Z{g?|Bq
=:e_Q[)|,;)m\Ӑx-\F`:
նVQ@ʰ(ѱ~'&.Dw!½{5LP
1AE:a!,qK>c,w8BlJēc:Fpd- ˰e^	QeBE\)c8-~LmxwWt1N'k,-MZp&Xɱ,*fq
8GC=ajv}AE\pY*p:*5
Nw~0gx>"BA0m*0wW35L0F!5՛TmԲu+Ԍ`褎)tӞ,()w6<gXx1;a!IYP	*JxPtm9^.{E=92/;5â"1Ž	&ͧ,<(CT.Q$R*S0 ʬOL0t@HVN"ԠWڃPM$-MbwsY%4.[.40I~;f:o{+|S[
@oI5jG("+{];J	9HSJ`ȤfͰ\
toNӫ[d"<+ M9NVxp$P)QsutAP.
J9='5xbP/mS15gZsQ1<\a+^?VvϻŹG?nS%òfIW}ƦU羆5ɻaa)([8AC7
}@[6])K]g讁8srr/1_#~K]3A}a1;BA@b+XìZ_,/zfA
>P9x~BhQp{$5+`iffNoKOnP7%ܡe;aNw^M*?w[
K%?rCA!cRJc-[X|\w%A/ DW*\kv̞xF
+kQeF.ƕ1։>0Zti֦ߢd9A7\xQS

7Iኚ~JtbCz	wH(xA.!7

u26%eHml&mbPKw{t  #
  PK  ]W            7   ch/qos/logback/core/joran/spi/SaxEventInterpreter.classY	x\Uo2$kNIi;дM&I.4Ж"4P+ԗk2dfySZWp.,
*m6EE-
((.۪͒tҨ'_}s;<{ph@A]33メP*ګ[۶֣^4Caid(tY"%P$B)3J'>so+nm+LY|*xһIʼ1kL{K6ho$ReOX§ukzv\zN2d"e7`*3Z+
ǆ2w920~b1
sNy=5,s
LKKm6H	|	aDE0]8(̈#S8sPkKX,17*Dm
M:f3v4ytZQ-:fD/qQ3YLcQ9荦m7$^lTf$+:4)w5*9E>d,bt@Źـpk:9]yZ+4Z
(6ސm`=U-D$#[	gKp7tҌXnABg.` ,1Ev7@vk.؂ii?c[i1F57ڂ\m#w TXENh8ڶ^K|'$-	^;I3\f910 dv'}ktmۉ54ҝæQ5I~1!RYAx\8*#K.cQ6JltaWKE#`4Szk%
OSH{a`Ϙ&+1ckNE>V}&K-FWҸFJT*Rjk7nڱfݖ}=s{lW?Ǣz	7UF/dxK"ԛ}nr%cq*Uxѝkzkٜh5މwINXR:W[/ޭ7Dre:a1+>(cXD܈u\oP+mw|@C+,= MGv 4jwX$Z1Ԥ;|Rҵֺ,c"dp=Z	7#k.ܭ03:,'j)#uHܢ&3wP˽{q1Y_c-aӎ92^2"6Jx9h	!e ľg^q~|Cx=_®	BcTC/!4+)!ђ:SMŷ}CM2J\.K+BsL܎[ET3
mET5sыg+in}`a3@vFbJqk.UدngkD&cfwp]b4FV83oH4Ȕ)cV32Y}r!|e R-Yƪ/SgU	m%+HRX]|:O-~PerƝc<v,U8k\IӜMrw PQzWpIM69gzxayܭby>Yg3FXCdL1y-%뛟uʷR&Eo'Ω8|9{3CZ+vlf	y&RcQKUsh,i:W=L}$(:gU$ ЗȤ"D2r\Hi;e&7XPb ]>@W`g"خ.D2Ot M:5Gaah<p!	emau$yS:AxUGP}4'rs[ODuK sYDbw&Yy(
W8uxǭԺN[ij%'WU&erq2'*^x'A.\WS - sܟ
^/My*NӟM?;$c-Cgp?O1kT|`(&mܛ6Q4sg	`(ru]жsbAWU%`;q)sxvX ·I?/W$*Uz+QW/<7\.-wǽ|!~
MMVbCj\
r28?V_\Fɥɲ
sο%v3^x@67؞,	yFmbkF4`/cp>|s@#s7Wo5]$љKW5Y\ʅ0Aˢ`PzVk3_E_#Gb>n\v/J/{xE!Nd>:z&ŕT**f1!8oC7FdFm&6?x^Q<o^D~xFVm|D~bDpjc(j(i%I
j/xG0׋,bId{q%}'uoТc^_T#Tsn*	)qt*}
rhW1#lڛPNκ-,E۵
AGLRTb2Of6fi뫵b	$QWcLtf¿[4?N>(
A^Q:G#u;8|88'm?q=7Y~}pXS՝PI?4!Kߍ8խ0·QFРy4h:6"6kL8TZ/P^ǹ.jRZ)Jc0y,6u2qԗf;geH#akw$uft;QiH5VGȗ?ߧPzuFG5*y,@umQ-81G1A7B{r-QMs1	r&*͝s
:Qsox(xd^<4[XD+Ǚlkw
+꒷l^maBUɴ:of,R?p++s]WF6Q/3;יm,r>k[џKGsJBa:|%}v9{jv
l/9LY5&.׫)pFLQ7ºB;zȥ^<6ooM.
7%,;a]7'9@id\jdyĵiGxQ԰,7MUU:.P5qw*֒׺%u[EoUלO]z.F.8S.3Gm\wT<LLAET^|hQӱL6SZWQF-uEbt@#Sڧ)o%M˔:*ko3?i\qPWB\jZ"I>Sg3
P٬'<H6PK}
  "  PK  ]W            3   ch/qos/logback/core/joran/spi/SimpleRuleStore.classY	xTuf7=!1 @l@+ Y2&q'0Kgi]'qVqHI4dNY\gi6MI8]c41o{=??=깧  n">
~(7Fd!O
	{q#i)S`ǌmEvn#_!k(ֱ%D'k&ksE ?qJ`I׼[4,dRvX"1-WuVJ,ӱ+JIgM-AR*L۵@+wEczu\Ԉ
5tFݕJRhǉx,C8bbq;|hk^b PV5sZbCFTjؤ
0ws/߮QzJu&1̓4\E-S	Ǔa;c)Z)cѱ0
1S\+ oqpmX1xU&a#kM" :WnxSæ`<I"SQ!AF6E؆f
-:U`l100ǖ{1#tAIu.22۾S	lF`:mM'QLʓ;t܌7D'orUfzm6=R]uHVFuDMI^3J$e!
J#&1=Q6b2j*13vc7	l>c]CFLޚ8:ނ;6f۫WYjMrX4cX;I1F{dْ;ds1Դɤ3 ]Av$+55NƏ
EaXT#3݆v+pK529N#m#:FcW&1/kvma2~ 㨄[<ȼ)g\a˕Tzp:q\'f;505|!N4wZ7zvS֕NBuJ]xuʺTSNKǻ<â
˪2ηn{tG&-a#CFʽq/c*fW2?},);i2gwf%b'':Ǹ,;x0NbR!
	1=r*I|TUs
u|F#X, gޥɴY2~JrDtY(R\a,܃u<G>rˌ
IN.LNy)qY?;$x8'<{::z:z<iYє:J@4Got<5B#yH['/%}3>x=]bl>/JC|!#||IǗs,FQKF[v1:@^8Жgx M4᪰\{H$-3ͬ:p:_?sNNd9*TW]Ho:^Qv^	
?He4P̰r|FGRYIÓ/TI6}N˰G~#iX,^NP2
Y
@bFNdfsi|G!wi&gOPx͹}ka+cseK,'uY6ۺci~8 pi&|izfJpv2qv(5
fY}RJ닙nuf`j81xPa$,ܳ.e2<N	 |	xl]]ּ{T?]CETߖZIݟP:vɴohWLM}0SH(O'#͖ȥsf6H[<n3ݦ=HD-y"F
Xl؈xD^)כ^v飰)!HNoo.EkIFC\
9q]P\/4qb+$+v,>bȜ+͆tɘp7:6bN*t"L]YߞJGh/--b&ZuC8)wwr8ӀF3}/:"s$LLTLii&g̕fcǛ![<X}?.VΘsXW3<I> =	?^/>u/VRPVa՚:UP/ kEy]3uOSHE5f52&9U(j5R>T%
lR[KpVzTc+h%=%+ZNe[T&,WM0E;.Yu,=\}Z0Xtߍ5ѥtqtiL?
|k'|rԽyFC[l/qsTRԅqz`q	D/R򭮉íWzQ>x?~:J(.4P*=`JQHs_"W]~
Ehبh>ASBr"HOM=g1 
H ia`yf@Ef]Bp! evݛf .?=.i?fnOd81>Ō(''E=mG>F
'#CXfpfQ(**@<d>}93+t;wO{.`# )| MeN螹y쯛3iL*hܻ3>d{G6,EZlKH'ICCb_nQFwf^r
kئRu˴m2')sWԹGW䇳g.\ˠ=t{0KcFs]K2rbėK(ROٞ䧴A_T/mn#G	8CMeO<fAH}(44kA܈?f{A湏|\aA.mczX.VpT5
AAun'_T֑XD$n5J2"8va4KocjOCiPL(=VU*s9!oNjU{39ޖiwi5qlPI+cPR)Wh+pEC4,"=`d~.8O<;FDɌ'ݡjyB9fQcF<XY阗15k?)ݐg2rrN?"\a^4>|Ifmk55[kL<ʧg΄<&`:(PqPVw:-րsyEFܗЂ/W
U溯a_gyx̑dNcx.>S>teYRaX
jRI
pQ<R\rA]R<	^udDY&fh*LWL
.ӯ8nfJȿ@:V]"[ovׅ51zANl~tc]HRωECXXb؀ҠչJ4.N5ZNJLik~~d)2@nR&ՐOF=6~,D vvс_PK  !  PK  ]W            +   ch/qos/logback/core/joran/spi/XMLUtil.classQMo1}hmKQ*%tL6KuUT).ʁ={oƏ~x

p(VPߔU4B)!#9mOxA8IDhfSZ,L"|	P $TRGD3Q(0; Bk|ṽΥ{zˏ
biB]ȖS_iJS_9_t$7r-{]?þ=vNؓgqiKCmnb{i	B!Y:],u?,e3
[Uۼ(UuV#1nt~~+
%+hŸU;F׀ PKx  r  PK  ]W            ?   ch/qos/logback/core/joran/util/ConfigurationWatchListUtil.classWWGMl@UX6UT]lP~>U9zNOyN&OO.py/3>?>a~	%2JQP5ƧxBz.=4d-cZ'hFBagv4q'4#7ĳ㉬a*=Rn2lJuwu;5ڛjLwV@:	eTa7n)7|d7.LU%K' B FF-6220f\O,UF\jʎռGK9^g苤Wz:v2f61z -2bC0ow^mFhuPnw>P&BWMʍ2"BUb bh͋*(4ŵ=H5Z/%`W\jz9$e><M@΄_Z>bXq\u=)[㤌Shʧ0Ujؔ#3^цc{3o):8GP*|<k^F'CeQ;<EP"F]|Bax'>7$у^
hR|iZ/2"x =
Nb2#{+o%I'+p.ɸ+*R(7vWUIxa
"t9Đ,0՜JH-VRA^%mT1dHRkP[CS 1"JR0ULeZՕĐb!fBi#˵7UNX*n*9N1뽙phPif-PydS@Z^m*c-Lb~:JBvO1-ok	"ZC0ckߝD>'68G(YMX~/4j
[&TQcn$_3D
VnVvMpD$<.-#].Ú;:mlxªfe!QOpð褪Os^e7.lG;ׇ5%;mIcg9ޛ֣Z
Duڕ<PRGXU	Ѯ^Y#g	 $$=n4cAz3zMIW\\!ʑߖ
BMPR=$hlt$Q`&r,;O	.<D}g<6d%n[)>%1BmB5du'9h3	;66!t|x
4|[8R%('{Q;LGPAזb \4@=C#%*cCifqjG͔g$Y:E[M#PoY5
?Bˢ*d#oݟ}YP=k& U^45p:T7f={>utKS}"=\"bW>H>]`hy XqZ;	.v
' !YָB?`#)O)=uE@U	ul.[xmOi{ӱbm|IVoMQPK]>    PK  ]W            >   ch/qos/logback/core/joran/util/ParentTag_Tag_Class_Tuple.classS[OQN[[ZWڮ+Pme}`fA6@9]Nm{)	ğ	Ą?8g%=gfvfof}s<!d)7f(t<pCz]!Yne1l97a0p:Zlӳ+[CzG_5y{GuNs8Cvi6T
4n Q^4`j=D/L*bL2LyOԥpUB}2Kum1rJۮ/6a\)q+M&cJs50pĺ!g.̵C}R*
:r7ʅa1Œ49<*zU'{b6:w;c-w=Rs*?oũ1JQpnEA,2D5e宴3N$h(u$&N^Oy4ޘ!2Cܪ-=s"@SEs<n{d@$i\I9I;Iև!F:`0P8v<N$(*+PB%6@,PKיW    PK  ]W            5   ch/qos/logback/core/joran/util/PropertySetter$1.classSNA=CKBA
F}ИRbcm؂v;i;8
~jb1|eTٝ;{fΝc :Fb(=M_tێt |Ju"Oΐ:t
+{dFFCV%yľNޔQĥ?x۫;3l
E68vdR/G!ӰZ[NcaiMcAϐ(T5\e;;Al{<w*R
6qMm>Qjym5+ۭ7*:c^E-[fT|A
?æZRnUJJ\8gR5bnĐ~^Eveѡyo޵l9m<5:#=OcvDgHsHoy
O_gQN+Wt<ꉎd7x!UW˲!spYnF.:Ffwٯоw&'$_pL
u.L3VLaW0C2.c>B	d+h&@db1B}!J9*x?N6KO.PK)jK    PK  ]W            3   ch/qos/logback/core/joran/util/PropertySetter.classZ{\u.B	IH+	Ih 	d e]vlى7iIURl/MҦiipqnĉmb;wfVT?1;3sww+o]z<d׀
DM$cNԄbq&1iEdÈ̈́=
'<k"~C:㱸N#5ؐO鴒I+N
E-SfMČ״Bɺ<BsPP8Y@!J6EDBanŚ4
eVl`J(U9S ~,4]Ńˌ&jyi%BP26"SD&(4WLYrM;YDR
z&)ͣV(쵒^w&h]:q/mVQa`
r
~Bj	."9TcAEdw89DҌ&dk7y%ή3hmƉܼL>MfY	+BCŕaت.~e]Cޫ"(TYuv8t
c#fOZ?3ЀFWrj7#ufJ:!pvb
\=Ug㗻y.J
~i<9Ms*ʦd?n`ȀPZ׏Vmhnl)32l)8#!T4e:zn>IۋA<
{pTh[;OoM`p&+,+H^ql^
'Hkw8HhƊD~)Sz{S)EBi(684:̑o9YY6Is ~B۪O6wPyh˝2\O>psH1lFP`3L9z*䶶uݶu'퀐{
.*7tklln:־౦]M]m"x"Mm{[v$Z047p]xA|ȏPj-xYG^2M@&vy5ǯj;)svi(~EW._vM
3%cnAr܏6dFp$;ETz)%m#1gʾgͰYRg9p3g,MC2y:
EX{u1S~6.??㼁/
eJӲ5Ҭ+XbB`!֜wәODPJ$ҤUjf3l"3N&*,fHK9xN&43iB'(,
WI:$+ݲ=_N\vETK]3&"V*M?bg
7̨;q_X(cUr'+W
|M0hH$Q)R^E<P̐$
k;ԡ%fJQ:`~ϖe1=	'fK*3݂4=ig%c$%tϢ_4&!mgLZi`8"i%@ah44휷)c֌bhIVZV9=c)&f6n^xE΄>ݑkU!pb_:9DθYAwx?x3rJ$%%ŢV4a<,&Bjخޛ>=S"oxcvaES4>UwdvGeb.{+'3ԡԵo+aetSe#gg.N8y`}B{#Ә)ZQux|3!Lo5$s&̘L➌_dǙ#%sfgN6i
W&\GzyI8,2B'D;zL9)yߧے7$9M-7΢HjKPks.ҙg<8
:Z/d˞9Ɛ==
ɼtvMhe	z?\!]U*|j
:7br_(;IlzAg!E}\
l^Dp$F߽\i1]<w9~%..dc(bF3Oa/eSJwȉǙz9`52GT(
ɬ-0|]]uګVLaY4l8K@oZuFjt8wWlIAD	aI;b<3{diLߝvM(JPLzSy'
C$Z{-)ܿX,IMDbv1T>VGh@Q6No 'JnJaRaZOk#
KQ7lmO\{nfUiOv	fZ=ЕDScqyƅU`ƀ+><.d:1.tJq{Pjid!ub^lǢn<ք<oMt^
=RʶZWAFˁJGD "@%Ȁ8OX|JNce)ZwGD"lu:OQ,˷nS({C۔o\">{h/\yK,vbxhSvlOʗ9&NJd4GNb%32կdM/Zjc<Y <(_[X~QR>>/E|戟OsIq`cF11
VQe=khD.0;Q]*o&fPMYF;+:D׎Ų0?KFQsՕj9zU
("U@60<^PA?̅ G)u3B4QlDVj*+J~1\U̕m>1Qǖ|_̈́Ω#Ȇ8OvRghâ짰=p#}~]ϖ~V{FAOsϡǞųh.tj86h.qt)q{8*܂ҷSNθ@EҰΡ%ߝDWU)UE9*i<4BV֧sܠ=VF[]>?r-_-m|?tqtZJa/o!jM(~fiB
z
qczއ>mF=dSΟ
E-8}aƟ;.Kz7:O3[}yAQ8pA%41׻Q`>>8{1h}	8O$Ԩs|\sg.S+4ª\H-Ņ~;5z0x1B'dX7.~|.-]|U+EY+;Y83~>iϯ|l AgʳAPK˼HZ?x4m*Mdˏ$mKUMȹAv:	{ʄ,T=ߺ_n?M<8'yD`bfy4+\++IP|dZ9|?V	گk6zI.qw?|󕞧jQ|qoy{ηz0/9Gt]qrL_oҹor|Rߡw9=l"GuXN+U\Uږr[J]
O1_\XN'EZgQp=8j< ug&{
dlT*dN;K_O?Tj=uiEYU.dXY\%/c1~H~1[
1ɯ\Eh[k4,^uJfLex~Ir
irvENIsКVr\<s2BzVPE%ܛ*a^c9k؊]:6mNVjQ!3<3.MU|8"ZucnkV^M`UZ_PXRȵy Crn&'-IGea6,e "T:o*ul\:t8@<nR%_ǽ+8r<䘪YvZmm:&m{,Ŝ5ZHD/vnq
[vK_9n@ßKxAAN% %%9@M셤wWye	[ʶaZRIdװbrjJtuuQv"b%i\7);HjZ,\HO=6B/ ]뫖W:<lRh
 +Nݶ&oo$owSnmT
̠A2	.2
z.U.U>]]H_\κНa083:mꕸRecsԺ7q;(K)lJ([&e}Sl/W\올Tњ^<Z<M9Ib*as(2>?V]w9ǳn^nJ+66 ܌.ٔN̽㲮Iب{fleip),C_7/
٥s$ֻ\_PmM[)l+ApVSMNS'
12{H˴忞ROll/}L!f!bfYWZWZWm{ڥv;@ˎAS5!@X"T#;ƫ:%RrqfD+Bb!,P'P%ZH}}];eG* K.^UiGА10ctɵ_{AFU;)t?]3>9c;~Y]->[FKk2}qsVM} Շ{]o]o]!֑%ܿ%d`Z%D4<cJN\ PL_`NowsPunyn}=WS_CjkkL_OkB_p6Ca]%fPKL  .  PK  ]W            <   ch/qos/logback/core/joran/util/StringToObjectConverter.classX	we{dy 4,$#lcٸ=X-mi%I4tK}
&M$mNOmls8y{O n=KB*T4R`\IRc@N-\m<pFGF-d<yw\1Ϙj*	eLhjk)˨рFZLiMnxjk3syMe,
%%$R9Lײ"}3%H]VIX-c
yh7\CG=h:	q3lOF0
	RM-H6RSX5#:Ri05=ivcMUf$ғlMҠFI{\Iɮdt0Rd$elaF4m,ޔ>Y[	[e܊mE%LuM졥<Ļ]NOlj+0"P
v]Űމ;XczŒR7+EzXTEDY$k?+ʑz],,,qa6I`i$xȈ iӰo,Aխ꜄:ʢ˸G8BC)BK%JBn%*sqsTv#=FP0,P4s	hq#)cMyFIRJSX0͎i"Us\!lǦqN9"ްc#5$!.be&#I4~yT+J6P|0aIЈCs6&xi0e1%|RPɿbq2L%ag3Upsz0p+##=N)3ܼB$<(n.n쨡XIƛJHto`pg$rrs'3$=VùVoi;&{Y]OJSm	wܔ_#ظGh(P)͜p
[{^Ja2oNtM7Ƀx?>22#h2
σI	e|h)0P5#b*c)SeĎ2ҩ2u-ijhBSؾp-<ݙH_%\KE;]o-
-DILs4dNnGh!%ԁ䰚rP?4;FA^-~!}-1%ѥv'6cU}RIQ#Jl(U@HYlh(6ѯ$%2]Q::3EUf)\ȕ#!jferiR
J}օi1D&@-aPdQBĮI&tj

ԓT%bs됳/څFٽ;cqTLո,VSYtR4
3$v;
1z+5V'ZnA`W~nحN=:i{<g,ar+weEz,E6{O^A/C^Vfr	ɩ҅LoҾhct^L
|oLނUg jښ\m\]c=Q1Jvf QwU/cwKgҚ&c3mև	B@*R c걑LDѳ|t9]vz663f`~6g<]sL5KXv;|zö[,*!Gޖ6xm4击iؙN5]t2ޣ`e,<,Nft_c<"j|YeD&(VZTո27M`A`VtҨ׏BW肳)a
wq(8SXplp	X_/R&
CsUZxQ[}

Z_\W';.<c_f^;A3UST@d)D.9YvѻpWi
gqBUXVᴣky|fN{'-խ^la`mlDjx(q2Ge<<l
{zNI;ك1wV4*S9;j%B:뭯Y^4yPq]ia>ݜßۆU\
KT
Z='uk3I&&SRcLc8وWH?ďHQ޴*uC\CD'|Tr6
!
tQq#U|}LE6˱/2{G稂eVZlV-W-l-s["#?!J4g$szsVZ3?[N+[/Ren`
#.oK
fvQ %
9
H+߭`PK
	  U  PK  ]W            :   ch/qos/logback/core/joran/util/beans/BeanDescription.classTKSA&$$^! !Y+C
VI*UZ%x<{'Y&&PLwO_̏__Xų.FPB{UUйБJDA4.	ݐ
G;f)*ʱiR5]sը(۴>畂m4B]=;ce/jB/ ðs@혺N|(W5N̢vyeTҗ,G̇$calen٧{	7_qhsB-	aaXV7na	Zd*mzUSF/?Pv}d9dvD5y#ð\miF)m[)}y:v>`E.Z|z־CYPrfG]Jo4?}S_kfi}U~;q|=RGİjtRϽ3HWߟ'_lGyn'kbWάZR#3v~P %a _gHOx&=B!HNSg0yayz1(;{\Na#u@uNPQ\&tN\Hap$ـ#	$@Ll4g3,ɟ8q!	ȹ hA mAɶ$Ydi d
&wLyў8hn[{M%SD%^-
xk-l][zKRcmIԆPKVp  r  PK  ]W            ?   ch/qos/logback/core/joran/util/beans/BeanDescriptionCache.classURP]-DJ )PA@n\RA E:i@&5IU_
t?q4 ЈN}9+{ &"*T3$-(yk3ǵfٺ%m֝m};:Ca,C81pqJ5wVy!
	BP'
SAۖRhN禣,zWw4(eEq-g:s!x(q6ʈ!/;	YEF.wgke0&[~*Av6OTו8(Z%^uS-z+OU\c;eCF0mIssSy5rPq]Fm"X+D]B!Si]哒Ң+XT"#QjB\PnH5&c7)9\9$aa5kƦݢM<;Lh:9VҬI[u2<'$4rg[C}^v繍MJEi*H;LTfC]ze}Hs;#O^C^a?HX/-AGZKthuwÄѰ6Y<ߒ< K~q=DUi!Bk;4!R0f0x9ܡ!1B|,E1KFrpeDtL%HRO2_!NIp#H([t!G+SU:HO'n
8rBu45E/<n'	ijMך=,D;_b2A/PK*	H[    PK  ]W            A   ch/qos/logback/core/joran/util/beans/BeanDescriptionFactory.classVIlgx{2!!(沅	Yu4=l33fR=U)RO\rC%"PCNz֢c;$q}o1).	nxLxɰY#IVAOy[i6-;u{%d +hh<.z6qJ^u#?͓ab-.ccPB6:/aVfd4%c;Z%PmU,,)tCWb/HLjVK}TF;:$
vcCf>ݚ0TZs|sYF'ސХ }KuNkB+9M$KɮQL,ϑ&x]mSϧFPBHAz^|Kv	2Z}>W00DTtKQp\ N0L(mv-X
0)'Vw Ii^jk+p0vFXZPv4 !AQ"N*6$y=ɳ8)㘠s7\C+W۔1M7؜iqFY{Kq>֎3
f[㩔@>0V-<ñ)"2.(fѨ<bJ0'fsLk܂f^Y:i7u/Nd͒rKJV_gG45nն^K!>YO;FV%RPXF6U)P71%xGk']Ȅ\lzY~6*K4yѨk~)bUy;6EKJS3[JwHhTZ#^\o/tHoynMFLjӺhONğ=P4ŉswҷࢱntnWɸC|Dw'i>glyINKģz"^xPr
|m]<Sm#_ŮexWHyDSe#jORW*,c htZ<w[0QzTe+\@^h:N])[HBu8W3[yy}>ߐWݎE*=p8D()j1">,i6+PǱBa?/W pP{1Fy1Κu܉Iv%!v4CPũ7qZ$?BIzC>YGKȂ%Sй%9äUZETrVid(|l :)Z!\*!fiFkGymzYX\Z\Z\":?'WC'aϢi_D$0"IuguPKf    PK  ]W            3   ch/qos/logback/core/joran/util/beans/BeanUtil.classV]SU~$
Hj!$~	B
5(%@?%YҐMw7T^֫SCnHhg2}}9^8/j$4,)xN/Ư/iKo@ky	HLQYBo:8ӺƗtCǋϫJތ9ͩE՚PeYT#-'5ԅT+gAԡޏKh~cOVOT	Mb5؃~쓱]cԍaܱP8(oI38)Hس%E2b ю?xl4-Űk73V :HDQ݇t=GE1{eEeS-ST8۪"3mj;T%8'SyF\`]cΊ8gwaϝD~xY!\B1)}nj˸AM3֪7%!"Xo_N/АK2>@tV1٤H;ćcL8*䡛zj5sPXLo$᤺*c)-]8*ݳvi3f]	؞7%TGfb#㖄$tr	(Hܥᩩɹ$aw%<;2o("7n]}o)ٝ^(ބQ-O|N	QMݏ^+GK9xzP1߲{<|¶CIbFit8~V2tp	پe煰)Ɣ=*QB@3/Ca؛ΆVGxRTf{o%St6
F&^4&JE8*0ېpV.+G8OW8T[G7*",4k;3@{T{EMOفpڞEAhaV^:Ќ6~9DG63w#@*zq<0\ͤͲTm@ȏ"lb>`n*!oQ48'hkzh	G2#MGJ<N'ɸSΠg8aq&1{\bVĽ	
Ժ7G{+宵]gۊ>F
o
+`$\4Q"$vXI4
[*;RgSVhlЎVh#O6_vY'X:NB0+V{wsfɈ-#,b#Ö^}mٌڝlzm<	G<c?2<iSJ"+TK	c1w
#
QOi'FcG\N  ?g="6}ZoG3lJ_uMјdZs+_TibvGbY*v~/PKl  q  PK  ]W            +   ch/qos/logback/core/layout/EchoLayout.classTNAn[\DAKzXBM$+J1fۥN&>G2mJBd9o9sf;5V҈OC\G?V*}Ñ2%=aX6CbvmЗDJCZ
C
U<ۭ2hM4q9bF>Ad4鸉a(>
w0hnm?wvv{aiu!WlU;D00i(Z5.#C +TɌibqX/;"--s1j6Q7gF9>:EZ^1F8~.lxϐ*UGfQ%jM/Z$Nם2JdóĦ&a RmH|wBdOb!X&i,$聧3۔url&o0
G3QD\HDǫoGQSb[+}_^P]Wtͯk4FXD8Nud/.q4 }])k}",3ODv47u{DYCm-Ed"_3I{6PK =.n  &  PK  ]W            -   ch/qos/logback/core/model/AppenderModel.classnAq!a8 DKRd{np!H< xD8H0USզ' wpej($p%/"5vKAl=Ӱehq(SZ~ΰ$d328XC
sXnS^wR$pielwQSFov\d	}_Fc*oUbv8ݐ=G&<,rеf\L#n6*6⳱*r]xy<kBrH:
7#pkO,'6Dr|MBuhYγ'`-X/@BX2MpYҳۅstVxoW&|QOR&Ot;C8PKB    PK  ]W            0   ch/qos/logback/core/model/AppenderRefModel.classTnU]'L'imS[[3I!8-uIR;wf?HS@@S@<bk0kϿFI !\?r<rvFr\wijƬuޑ|SH BAuLu\焮OhHc]@`jc-kڻ~Z)$ۆ׮Э%@q'[~
q&fqN`2{QG xc])T9
1τ䣞a2bQ
4\%ە~2<OǬÊuYy\lJ(LtrK~^=߰[`Q^VJI4t=ӱ?cU'7'cw~W;Q-zt?0TerZcao̽8emh,Tz[˩:
{/?Qu]CʢFcWz="Nsdu%zۦ
S=N՝ےM`A8ݳ}jIk2QgNKzﳩe1[︊uW\}1xEGJ꽭u̳G`z{#]IȝYp L8ƃ9j}\C"]$`c!OD=K#Y, U,0~De	;K}hV q\癢vA!y
`5ߤ5^,
N\	<dV*0_W֊x6=BͧVs܏(j'x_'f.\>~6Y|1d6W*}a/Bb[Ģ_"/>ƅoԦ_PUxWKII;	3If6p9=Jc
DV"GZzt=Fa@3C
4.pV-UwW=lPK b  d  PK  ]W            .   ch/qos/logback/core/model/ComponentModel.classU[sD=_ޤIƱݪ-.N
8uI@eyȒ#Ʌ)0I÷ĎIZiW|/~p(BaR(Vj;f\Z%n(bd/.1b	ؿdj2zQHɐCm[6\,ĩB7 CfV9`n[}*jkf9I1\s"efD"	eC_՚ εaē2‫|FƬGVioe\<3#ݭЗ㪦KN+p
Mdđ \ա%)*IPd\
Ϸ$A
fЅe[7߭:>n;,:Hx[F
`oXӨ$3Eᶮn;e>.3ըwwvѿJ7x&_W^W%-bЭT{ "vKۃU5evcgNtFZ(՘1j.LYܩ!`[{׀-©{.a[Uk~g;Wt25tkYjmDaMmRSYryQcV_O§>-t}]B$Z7'i
f\βv굳[q};w!2auar4I	W*8۔oc.\@K`xǛK#4v]4ޥBoFP'4Cc[2r aAѴM"B8DmS'#MC|-q{(xxgc(BG-(iN5\}jEtNߎ3١NZ'ZEsË0ҰjB
{īM *G` gB`gvpNkCX􂉉E1F@?Giz|,(i)N9g"rDKIׁk_:%~<q"u%^L!s0f(`#D%JGiHqq%a)MN|	,Qd^THr2xN;;gxa
E9PK:jX}  	  PK  ]W            +   ch/qos/logback/core/model/DefineModel.classTrE=m=FVƶ!z؞dL@),
Ug4̌VaTA
: [-ˊIB=={Wǿ;Y a i"Zm=Cviu{ҵv펼W;'hG	7ωn	$
ņ3l/Ojd*&HqOgJ1J&2a?ة}KrmoUTi3ȶrkȝ >lV%\6p^߻C-|=k*㼉,*k\,	$Y,X5ۓQյCO}d(ւJ&X慑hAYW݆B>m	;cU_E
Tcm毯<\&nӔGvӕC~<6ٸQa+, ;XIaV\I9eq<+
N5-)6RӡnQ# îK1	z>0ޏڒ|c*w샸VŜ	_:7l-yQr}^j9u1X:,ΕAYz;Ogt}kZNf/ 5>jFc
Fo_`=K}1wHL]h|NSZ=B)B<SviMk<SDLԹ<N
l[VKSҲ@LQ3%*1ﴘh%<ߠSvWM(iGx͹Á׈Yo}\	\ʷ#CoM{-MU*TT>B[Z;2TCMd\%1,tדy:e[`KKMNfnޙ=DqACQotToPK:ۿ    PK  ]W            3   ch/qos/logback/core/model/EventEvaluatorModel.classNP]D"¸6qlTr"Gۂ/ib$ĭ/tϹ}|8z>DaGm(wVty]jSQ%CօT!9iJSΙci33j66[ܑE~7LCMQ%v
L<!ClM<;eI֩^O>߳݇"C G 
/k.xM|Yɍ~344AxY2 7TsٲTQF,v96b|NҘEr*0P\BQnu<"ŐL`b'@˔e}R"]:zHON

At1܃WZPKeW|    PK  ]W            +   ch/qos/logback/core/model/INamedModel.class;o>snv&FblT}O_A +,Q?'1/]?)+5==ADC!\Rn
TPS )_ZꖙT$dH9##30 r
;P$ PKGMH      PK  ]W            -   ch/qos/logback/core/model/ImplicitModel.classKNA)1.87QI\6cGZfqfгDfDuSUUׇ' XJ#hZ1te\(ϰYmT0lu*,r!C|G:eFIݱ)l	D3AYۢ.szj%'\ɭp=j3d*,7]N/7Z@j[wpxӢdMTS5IoI/m8&I]>T]{2t9XFG|&ћKv2yF>%da2 ׂ̒3
-RG$NzHݎ|+}j~(E'"P-PKԪk    PK  ]W            +   ch/qos/logback/core/model/ImportModel.classSn@=77
ʫ	
4N+,aM*4.XL(5l~$ H56MJKw2s= !l9y.L7
}bA(M/x-]@UB;!2"JA'L
EdUk:t,a];Uf*ʶ+h <I߈t?2GiE*˞8Gm&-v3;j$CG#'_	
X1!e"7;_l0;a0AĄƕqqǂKɸ{*Os"Ȱ[fvC[>sԐՙ)Q4z2W Lv\z,ۼ3y%^	S.W}
=lSW3Z=+}Gh9t3R+;?Q<hNw?3+5yk֧TV5[LYBsaN֟ټ`N0%1ZZh%-ujDN}l{W\8q2 PKzȻ  W  PK  ]W            ,   ch/qos/logback/core/model/IncludeModel.classun@͹8$ͭ@\JdQM)(\Diw8v 	Ă`K3T$9oƓ_E61EmO~hxµ^ʕ!h!ȣ`hrgSLE68rolG
i9s\!+&j&"g-ES|{aĽhݙ~>[JSEox4at~=+pqI*fӑ+y|8PhD^_]R]&
5;3!AVaN9C
^]tW8\'ݕ;>}nU0ܤ*[ÀUTTq
HC;TYl;ؗnl7ѦT=?Ƃ+	qE+Ėt|^Ÿ['M#vh^:Ȭ@RNjA $i֗THGRM ]=H5	A% 5ӂԓ Zfg	HSĚG PK)."    PK  ]W            3   ch/qos/logback/core/model/InsertFromJNDIModel.classU]Se~^!] @?RJ>)h6PB 
q4
^)q|e!]|<_~.>!atVkǖ[[zQjFa}nԳ)=g6M@((
LSl:.VcX2Ġ $S	m[Dr%sJU1 Х;}OvVsm>UJheIo`Xyu֮咊xƚXkuI[;FՍaWxy59Ae+ѹTQVML{qK3d(0T!m]'Smޞ1'aMˬ&WpCf#d|z̰+6iha;\/.
eKVzˈ|a?BY(66Kf\^@7mM7:%qhI+f([]ַꆤUey ư[39+w@{)1Hr&MtjO"a<G#OgZNKd6Eb
Ug!kkU)@˭ЫlUg6uLZvX2eŀ!^%1FukކMj]x[smI>|c9O-K)(#C;^9iL}?<eXr<
e=?uďG[J9jzOR`e&&b	LҖ+%啻z/'Â,&!BӉ:|rҙScu1^a!u{@:->HQ D'@ +@@wA&~=zUNG΋ёZoiaPV=ÕG+&4%4g}B)rYE}P-~:so	"wR9/AI>7$=mHBL4%¡}xP1XL#gd:вւv<<1x7#ڋңY]_$/)+􂕥W?PKkVFVF    PK  ]W            %   ch/qos/logback/core/model/Model.classWw@1[lKIH6f1!q% cjӤKS{	i$Ц[4Bⶐ'oK}KzҦ߽3˲9_ <w!!#i#7
f
XwLB4$t4@ؔKtޞ1]2v̧G(\	iܤYrjμU,9
kZֲkJ%̈	FXrXu$O м`̛c35
YS`kw*	itTKۺ3ـNlְEVlhZM nfpuy?oЭI$ʑΘ0-9zuNHAUdWEOYu~:0W.歬#°;RHԱcv3-APֱ$vYYEqKVa_1(3vMuAD*c.R!m\0JWˣ:ð>kiY }1"əfqV֘qd:{.5ˎ":(2e
:q%ϥ¾<YycR@W!ux,4L8њ%kJi|e"|
xf*2ҦqN
8Q'òt8?72.KQutpug*2D]u~f屠F_#ᒡysX0k$pY%dJ)Ά[hig0]4!ulY1ՎN%ǲǆ1)ы_=Yuƚ-nDj2{E<Rx75AiDbaĝwMܠc#YH3.iG/,̮NJ	4XαBpkc_>NNs:!`s4:vw6JoJ54[Z9`Ϝ\Dw
u"cKY%}P
wJNfAvdGMw9qR $Di4N>;ytE`<>WvV:\[~o;
2ϫp	U8mϛwb|_Olr+gęY^Y)b3N}P0K1
:>9c3I}Yh؀%k"9ϼ<ϼ\y,OD+`C]d:494&wr8 q#X-hB7ݓoUKQ(yGR7&A-lH$[x W>G*%HQf/|ta'4v>PD$ϔs\u\_^R?ϕ/45G>q᫁/b|Wq|SqnOҦuyuunj?AR:O/\^RЅ|jaƒnIfB|YB>Q|	/p.a;B4CԖh?1Y"<D`;3/
o	W}AeoC4)s;`9/JJ|e6P0F\tQJ&@%MUUJ[L'UZC,5y0Yhޗ>4D{
Z
" 'dJHc(B
%j<]wgV-3͖XG}_mMXu%S,Z)T%~,HoR+p WSu ?\dJscHkGuA8ҥja=}
UI?ZXg PsNC2+X>u,αE+<*o|#57rZ &[21b
{S	%o]ڟ
K2S)&gT2S1#sOզ+UoQ[FS ^d̦,7)ٚ^nb"vJ{[~.[Շw}jW<(Cu
tV#~uv7	ƻB!=M׉{xTjQCŧ˥ Cڥ=70bSY+q[*LDMs_Wj|PY-G\ßPKfvO  H  PK  ]W            .   ch/qos/logback/core/model/ModelConstants.classPN@&^KRJ
P<;RYg8\lG!NxI47s;
'
rMwN0aiWB7V1U*PQwc҅%Au:QP&huθ4mNMK`}O	4̌#?	v>'L$\EUJΌ;GǆaHFP!dJg,Y<u	]&&,Sܗӵn"'+aOwMĖ&Cۨ@]k?|Rg䟲}Lp N!d$8^| PKMA    PK  ]W            9   ch/qos/logback/core/model/ModelHandlerFactoryMethod.classPN@}WJeaen``HH@bw.M{9g >
q! "l?=8N	ʬ$F<F*zKre?&?O9Υ1T]#iKn0lh
/uK/E~fqpW	W#ZɟSBat+7<m"NMb]s
_֙L={2\d

LWm"K vYPKݕ     PK  ]W            +   ch/qos/logback/core/model/ModelUtil$1.classRn@=i(4-BݒPU@TD٬N~g@B~ 5Q ˞3ޙ9;3?~~;n)-dldc#\}.޸B.w'Q/b_9G!wDFֹ<) PrF&[ێΏŨ͏1r(ę8&I::N4tYs(1d[N\l",+tִpay̏x0t;ڛѮ/ՠ:4*6zwUy^m:C,M?"fo~4ϐSZ~ ;þ{Sni>}/RI(oi7MaJґ2遅?xvd?QA úQ$#6pS
5`V1yn`MB&6+gX;dH0{	X".UxH:[87@{iщ@kɁu
7JNbtb񧧔PK«>    PK  ]W            )   ch/qos/logback/core/model/ModelUtil.classVRF=#smC	!mH!		
iЦed"JrRޡO`?:pv;Ӈ۵Gw9+  "]㹡Fu[(rgX!L]
*xl
n:.+h.w܇.$ѣWEطl-ǰ^XS4jhEu\o9UmYvҵd:5y Ssbȅ%QfxqaK!(0.(Qq̤:&<mrZܭ7DU R_\J{WS֢|תn/K31`Hls0Xj/0Xeh
T\TFNel	0 "	Idl}&(61SA<WZ$P^:Hpy񓤘Uph.VlMP	Dy$
{>`gq  MXr
-?REv$ػo%Q%×ϰbt[|^)sQidixcEB^ Uy1$J x5IYiN Q7	تNKxyq"iF+ɰ_Rg|O,1`$sî,qyͽV%'Y+u+[DqBY#&1Zr("Te\l
U]
㞂o2oAH*mz#_LKO:xK`92j +Xks"b/
("BTFD@G~G%	ߓ,Ne8+Bi``g	bvKg
dd׸ڂ3
pi`q`MJhfV|dPWNwy)u&0	{m5әfq0>Cc3y[-L_,g	Nqu!y-̕MBbKC`l_5S__'}|oPKt  	  PK  ]W            3   ch/qos/logback/core/model/NamedComponentModel.classVWE6Z*h jAljjhZh7ɘ,lvMW</=>d	}ٝw*at! =bE{lizq[+תvڢ]1e3,[`y!zzCA@E>rX5v=Il:%gnOtԭ*հSªh+Qjb>⬘
vig
@*^CtU拶UԽW/-e$VKBIS8G*KK\
Q09@-l븠 "$à;
?l+:Ȉ3*fqu #È
pȕ(eވ\LZWk:8^
o-!*"#e/(U[ZAqcf;a[2KC~Y?<mGaz5`ʒG'o4^ ܁J^({
fUS%FHZN)ݘ1tCp[7O.l=}~*t_#+z͗`m<vU8gם"_6D3$(Rvoٶz^[^.!l0u Ln2f&CLe~g=S|e@zbos_FY7E
nVtֶ뵓{Nw0t],ꦙ3<Nz<UP*!z)OØBM&g1y^ۅiNc~]ifN,Mo#H0ޣwP|YBAYCO-CPO&SBYI!A( 4n'P߭ZroMkZwI[yNw'ja'LBzmX5)HE&wh;"Ψ B=#yWVf6%{Pl!C421GLW#spnWs2r
~H̨!@TVqb(%Ĥ̏7-djoM>;1idh>Õ]Z8G4 I<H5:ND)DhiMA5|D$ɔ^5Dy-OqUe-e_z"8PK+EK!  *
  PK  ]W            *   ch/qos/logback/core/model/NamedModel.classTMsT=/#()!Gr5ӂ;IX<vJed	t͊=3t``g{Vuiz9sq;$$M0*PhG~h{~C6M?p
7HKuiK/ʶs_30P0ab<m7+VJ1³&rHv*>Jۓ}{/
~EO8[UµҚ>Ɓӌ2x3.{7r{lG`xo{])TƂy,"QWz/	4L\2;QՓ!Szd]QE+CȆL"mή]FӤEfy6U
,<֏ҫ;Aj[x׉NjzO~dݎm7Kt/&y$o&K.p/#W[%{%`zΝC<PjTH=\]8aף88;qG-s?Qݎ|-z<wsUlU	\:}׹u]𞲎!w<jxZ|{RXw1 ~>}VSg0vcd_1&R 
G汨i{ИV=}tmpOI[uP:6qd􈊶genK3LN$jUbI1WJ\Nl+'$xÁW5Tkʟs%pSHS
>y,YH%1~D*qha'e.<CMd,L12K',Kt/>F[D{o&'13Y4ؠa(𹎪PK%8l    PK  ]W            *   ch/qos/logback/core/model/ParamModel.classT[oE=_q7si
I_.*)8	$b $U?#O}HM3_?gK&T<wΜ|Y a i"9e=Cw~`~XmY[TSqUD09xGYHO01F~@xi	4Vn3Ǆ@Ʈ|,-Ovv(p;;5iȴdZ#^K8%#n7w;M6pDo	L@R̔D9g1ϔG]r4$,fP4q)nǉ<2xT>kJEZ8l8*rmr;a$;6-(qשS&NJw>O|5?/}M39vnwemH;^LF-Y_x]56	vmdq0"<8R8`=6:'zG;/~rcmʇq;?Z(OTvsU칾Y(̳
FxGppz#Qs/ow}cx.T-0Z
>F<R]A|OU_ج,#[Y	?c/ePy,8Nkڳ=hLfKs{\SG<?Ԑ<WLMWGeb
au )-WJZVgs|r%?Wh%̽o|RH_%;OSP^	X#C78SZw&vڪTC*Wc)R3,T|>zuU縰%/9.ep_u`Eiʺ69au|@P,АF[:꓿PK'\o    PK  ]W            -   ch/qos/logback/core/model/PropertyModel.classSUǿK.RBJR"ͅ6Z'T%4td&Kw7u|?CtFJ5l	K0Þ=]>w9~:>!a
DǶ^{َo
+7UAtl޲P:SQSpd;k8ާ6!O~jc;.C2^hH`PAnҎD[zs;_]j5	[c|~a
#Bش!8aLj9k!5	
[_ehyТ)N*fTj8
gZwфJօLQDLk l[ET:@8&1".nV-ݥt戶eu	p^ł`?26OMӛ5 (5S*v~qMrKA-zQOվKM樝灒46ZlUK׮яNo°W7yDS0]*5ehc9LtסƱ
>:)=ȝ{tMSHu	{~7;Ȯc6*ERe[;(mn0NY]?ֲ3t1RZ$l y,[=s"x(]7#:&r]"d|'],mħ/MaϾjon.#C{S
u=;wxv{)&kj)c8 AHO89=,/z-VpC<ޢLb\,SP6nfs`ƥt6礇!RTK~'$
y7$
2G' @T7@[ nvȈ^ h7@R0h7Ȣl`1?_Ϩ-zj!1ȑ9?cr+$rT
,]y+*Z'9`#؄16<i ccl|5zlkD{.|Hh/#Ħ=[d/0/<݌ &w),fP7$ 2g`DXf`	9N	".pH?̨N]PrO_~D^OPW{c?ŕ\O4{Ej7PK<X  	  PK  ]W            <   ch/qos/logback/core/model/SequenceNumberGeneratorModel.classNPbAQn7
٠$.D*mEɕn$p3iDQYL?yxz%!cP ʐӛZ[)/\oitfajEi]K[މ_2D
¹|=8pM;Ec5s$lpO:~O $C-Qe8A|e4=+uḆ%v̐,߫s#";LA)HSToy&u*R'NnT4\[q?N/ZG?	֯
2?DWaHQNS$zA1C2)t4hLcb'@
Rψw1v?g.Q=Gp
_	PKf+`v  .  PK  ]W            3   ch/qos/logback/core/model/SerializeModelModel.classTnA}mabg'%@VQR46{xAO'@$8q =!crWU^u E>4b.m-7
zp}~-}YXЂY6[X< 0,e2X
mdNiX7-еaez֭bJE
:5t!\n2;o )\>&|jX-5'J!>)!U״<Nlʇs1BKSJSR1+pLE^aPvWbƖ<DJ0i#AډzJ4f[&_3e5s;R4GsvQf=`hO2܃@gϯEWo=dJu++|}v3LY?1-}yz9 =6GQ2褵g]l<Wbj֮V
^Q4(G"h8r7KY|tANL쁽dCٍ+2L_5 <Kh-	65ćxq{-3"4H~zH]q(/x:t\/ůֹD
Z"]DF_K$J%BY|GĨpDNP$1Rl4~zpM>H%Oߣ&ψidg1]>}L֚4op^c=6]$j$*PK
    PK  ]W            1   ch/qos/logback/core/model/ShutdownHookModel.classN@C,_xxЃĈA.(ǥlv-r
|HiDAI23μ}<J!cPTDeMF)/\oitfɆ0-lmx\Caol{
ٱl|1}3BE!e񖨈Nv=nAcTgH1YkHTd`'ɂz5nE|oԺlآҶ9u23eSN('i[c>js7~Nk#_DU]2Cm-*7DkfXR0
δo3.c #
i̓U{d%+;/]t10g.R0	AO8ZPK>r    PK  ]W            )   ch/qos/logback/core/model/SiftModel.classN@ƿb-Pb6AbA.(	ǥR)mlA/ɫ+?쾼?$8f8w}vO[	8!c9V 
IL:	"N)I
R.8~S01:m3,n7[sT)3}Tɍ
nDyzcKȪZ!oT&ԍaQږϰ:2tub
'3~B`!E љt*EF1,cT<E9|!I. '^|;o#WPK=Z  m  PK  ]W            3   ch/qos/logback/core/model/StatusListenerModel.classQMO@}"xhb<h@L0JqE^ 1iDI2o73O GaJDrFMf*7!5䙰l\J[ޡmz{\"ưq	[8C*~M $CHܔl!6ry}(+[ḦOJEv,֫p)"筗W@Bj8j69U*4ȇnQjˠ
Ձ_9[/
etoOi~9i!Z7Ɛ&8:)NRE(GV`web4(1M1! ʊx]i#=7}O	g5o!+<SgPKڱt  
  PK  ]W            .   ch/qos/logback/core/model/TimestampModel.classVUI4 Pz-I
RjڊrMuH0d̤+z᢮eK.]pa8Mzw_`8ZYKFu5_l[d-?m)5hh6L@$HX6qzHVڪm߈[z$:=0\yp]i7R+##_3Kk>S	ĸ#?lT:9[ĝ&Ў8ڒtՍ:ә-+ѓ:NΖhWE̬lWO_ˆ<λx+j8#љY\U7A5dtd1$7];QeGHza2]WuCF	m'0t<xPK{`p.xo׍U9-?)6X
́@^m(GڦQcZ	q<QkɣO>W3sWw7"W+?uE7S>i6t(X*=ǵuM&_c}X̔Qu*N[3NYU6O.6'Dyw{AnTɯyݫؚmREӬ>b-m0?eI֒kMk~/M[B/ݒJ]Le8S`ccp:81tlԯ2|*Q({
o<	~[o
s:G(Cl]m}>~S~6m }hSc)Rjz4N
 3<˽A>=iM;5wS=|'^3
_`eJddg13Y8)Ԃ)/U! @|(Lc΅}@>PT
^8H*uAtACAJ ]AԹH¿2#J%{/MN_J,JD%T*RŋX9~tg}c%MI3YmNs2(.=Y׳:=A1J);5br_"YgRF"jx+6DުK!VZ1uϽB2< F5B}c=ycv]Ϻx6VĴѠ
8Oe?>PKq  
  PK  ]W            5   ch/qos/logback/core/model/conditional/ElseModel.classQMO@}KZ``LxM0HLTKHtc[GG<EM#/iAc#˛<><
8Vۼȳ&:%=aveK8Am۵XjhH2?k,.w]
Jc2]uqUu`X/jtb³O͓j322u0MLB_]Qu;M*ȇâma[9,H<K9X
Gb&ЙvG8I"_E)DTa0Yjxa/>I_C7a.b PKi^`    PK  ]W            ?   ch/qos/logback/core/model/conditional/IfModel$BranchState.classTmOP~֭(2'&!BA-dlf%䮔صOh2[kΘ趤OϹy˽_~)r2BkzC}T˩׸ZPΡaѫ}hzcsK-	my3`DeJJ\a[1+$c
B2^9تlww@"_Q0$<],kW}@
d$:CD`NgjvlqG1&c\nP%?	yݤN6G+mZ.湦]vgMp!3m[gIF2"	1(h13$m*PѴRY3f2}L[U"CFyk={ps8rI̺ͽKtJG-[\~~ש]1EJZ9(mhyN˓0Om^teX-m{	T&'u!Fi?C%:|H#aQmC/
o"f/0r	&_|gaKJa_l0L(Mc/J2.|x~'I B	q䃖TH~KO`ھԁG:;KANbSw{oLI!ƽo$.0}M)(m+>>ϮU<迊7PKky'    PK  ]W            3   ch/qos/logback/core/model/conditional/IfModel.classVmSW~.y*ʋDo b@J$ZXV7J6qwKC~W0TpMNݬKK3}99y9
>	~JCJjjQ)'Kɓckɜ2'U]|v.!,2{}EUCWd恋Q4T.؊R}Sa"tˈhVT4LP}ghb1fהGJRSd6U}5ՎD!/o)3/}r~vA3tYa6WFvGdl;dW#0&3D3V\%!YM,)E|q		'pwN/JK}qgVu>k%žezlE	j"sJxdOYt;͛	SOH(Kzߚj /<;fyR
S2q?)Z.Xix>!ɸyW(3"%#7UE[E?1TB/*Z}?`_;<_yS)j\̅Q"]eH9*nG?:$RIgY֎2H4[SUqp1:?,ah\ѯƓ$2KRuUyCQHxUS2+Y4gvEna9r#{^p%>
")K[C[v"S#ið-T9n+i25̆va*bnTG:wPy*a6?65ZP[YXU[o>fw7Ĭi)un:'-:%".	MucڞC >:V2ֆtc	Cg,];7:隥	atǷ
W_N9}c yz떸tE9뢄~ChixAg}?A_"BWį}^qvЊ}`cDzq9!akp@kMt&.(ssdEy>xh6$BnQ
:oDf"Z]@> 
e뾋xkD715`Lu
]D	4Ĉz1o	S.w^w&g.z#Yb>א{W&bp
hqc2(h$٩`9;F|&%.7<9r;=B}8aU(T.ғ`Mg&B!Jx#y~߆Waj 5DMCZP]Q
u6.B3,2G`WnbYǪcUo
kP:,G6Z9)PKb  v  PK  ]W            5   ch/qos/logback/core/model/conditional/ThenModel.classQMO@}K/F=xx`Hbe)TJ7ExDG?iAc#{3<><Ŋ
jQVͶq%=ÖMnvSʖ bE˱}%_hh3?kL,ߒz[8
J $H1d#jx>wL/Tǐkq!\O*evȐ*op' HH㫖#jnSu޴2S&pr|\T1lb>K?=V0-߼k_ZCidE0
b,UbFÖ9بy8^"`,ަ,t	}>>g˔/}~}Rp+PK\    PK  ]W            =   ch/qos/logback/core/model/processor/AllowAllModelFilter.classRMO@}+JbL{D1!D?{lJxxof'sH0la+gWn_!s
!UGքec6î{p#оg
#Guafb:r;R񑯅REH1$$Ar~qEM-v|/A#y$F;HE-ĜZ%1"uǾ$@3gx]JXеDHGBv<No`/q:O63X%kO
uB6C9B/s،[nPK0V    PK  ]W            :   ch/qos/logback/core/model/processor/AllowModelFilter.classS[OA-]ZzYZE̋i0>,hhm|n'eq鮻[
g$^(ÙmТaf|;' <F15$t!ɐ=wĠ_w2$7n1˕N
HiHX܀;n+r}ݞt绖
q?(' ً'r_#2[ґAa/e0ʕ)ahXQ@a#=9Glni338븡&Zv ¡ON٬](`UgX.OUaH4Cƴrwxؕ~[tBk	#|[`"ܷ6R>ZXHAؘT3Tz=iJѫ?*3a.P2"b+፥[з$Ca$J&J4#10ʪ9!{-UZAMy*$]V}Nqܥ}, ARD5a
Qu!g|{2ٌw,VB\;iFp85PA֢_,C)PKT
  X  PK  ]W            >   ch/qos/logback/core/model/processor/AppenderModelHandler.classX{=c^K^cZ "e2Ndcc8صj--vn6}IJ)}!iwfWB²0ٙ;9Ν? p
>	~hbQ3M;5sSMK̔-Sl۴b{T1RYTl_7tg!ґ0dvwЌї5#Yz$,ZG$CJNRA񁐌 C0ieIO\V}VeP[.#ϐL(9b䁎9*F:6X;$ "&{(nvaΦzoZ]Hna3}Dsa3lp*D1W>n출fUqfu'C-Q4wʈRe7é: 1֜b-$)YΙh-1+&c8*͉K0@ci9!
3O)ҤHQ7Đ#21p-قgcUZ6nҥ+6X6aQ=B2^OU;Nq;:h](~ZFR0k	q$/6z3N0k`s]y3-g32I'6	Y9uu<ϰ;ǒ6f2<K	K8<yNfQմtΪ-XN\zAF97q%p_I^uQn2:jYδ#vٌ	3199<qdp$dK
iJƢ
Mhbo
g;(K@̗XLiCq
muSwp| *(j{aͩ5҄](,ڒMrs5%MU(οN)TS4n^̗gbdD$f}C?((Afrn1ːһ 3_̢4D7<?{5)()URGzdV4=Bk5!Ӻd+zJYP]"O6#]ʗel<MjRZ曯:c2T8T(jY[ksp,X65kmnL4Mv,%?93E
Ҍiv&bN5Kꎈ[;2_zQWw34Y(kW
ĜYp"6#%#WlJXZ5"dut:ELdD!-k^T6n(ޱ־PSSNt5a%Uܐ7~;Þ[ҍE{QTǴޮ<<Ali.7<E?] lvJwxcYb?jtݐ>P}Qʅ0vѕ~+._VB?zvkߔTJ=sq6GE} u|xʐف vn|zM|Kh/:eݱoSw]OaB7|2z?fqEMbҾ
h}ߧq7#(	LcW￉-]Vg]a.=aVGE#Qk
7q)nZEf("qq^E_Ʈ>+gO82-bx6*#cl!ރu^*9QB1w^r0:17xc\zH׸!$NZoW<jyGxSͻx|d[xHIYZMySEK~IB~`ف_f$gcFST˜qȼ̥}sv1?AŹP~VneqFylK">.0,,9V*'F
c\3YCNs8BD{u^*C\#^ߒ;`#Lc64nBSLI_AE'!/DQ^eNAj}OPKkc    PK  ]W            G   ch/qos/logback/core/model/processor/AppenderRefDependencyAnalyser.classVnG=ױwqрKRHƎ6	;@c!,Tmv{]WQ[ڊ;c7pٙw9ν;9	D0#Dals|m拼"u-{k p\?2#F ڦjvBuB2,f:Og)yp,?M:IGYZ"d;a&}k|o;7BvZ>ILb5r$۬|:X:~&1K}X&D
/a9]r*#%P)tx.υJ2>g|p3z섈RBX"\4,$a5N(VUr~ |Bz'g^-S54:M÷z`m; G>H*h~h/f=sPX*Է2{a#tcs]Ub<Z`vf7K̂6	~x@8pAump
/GrBXy$_~
!bYwa\};vO+>JLrF&	KSx7p]|S<e,mR.!vW4HJ|}=iXi찘Vh3ΗӕjRw)KvWː4*r5"cBY/g
ŲBѐ
cDNb$Ô!L
$= +O)>@:?+AV?x!;b?bZJ+~T,}KiJ1H4<.q1:ǢYhyטR}kXgEV3M*9[6#xMޗ e#	D/uqQasP%9ζ/@
;o PK@    PK  ]W            A   ch/qos/logback/core/model/processor/AppenderRefModelHandler.classWiOG~ׂYBBRSҘ\sm&`B(Iz]gwMIJU+k6J*UJ#Uwk&R3uow M>Tb8e7L;53\k%93%ej¶M+>!縑
kۂ!ԧm0dXtӵA:͜7#%)1hE7-ˤ&`2!Vs-R;Ш`]пiG+o	;ix1B̟
vr#/&쩢
82|&+Y*Za_u
]jTұt#VlOE{r|^w.Nz
f8ܶ~g0*S)/+힖hC;])Dd7Cem>

eʑp-؆2pF2[E\3hflG<)aPI	gQ
H)`<Ot8VI9F|L8a\0<yfx:WABEN2ԯBgk"5O1TҥFĐ3*1°}mZ.lA}eNpNrrDlϨ\TƬY&L8u4W22Jlqa\7d!7#Ƴ؛8{rSVJ&{7LDy{G]jhtއUXQHM1~B>oZHCYnwJs$&E\/ױ4OkCP$B²&d:M]r	T,ՠŤй7,_7aTɲշft[ɘ'i<OEPpcU*&2@lqsj
<'d<- Kg9/=qZbXBAkQ'͂]J얖S@Mӱ'1ST%f2T0n܈?.ʝQG٨XZAZ%m[QVw^pR&E5(©UvXPABnf
!|GX'}p~uc^$/9uổ,\t}p4
Fy*_ݸj{C<MꎼaM6R&,
* 黅gitVz]6X[4amS!hI5qnozIPs9v?!C&V@պ p{WpxhMBuX7n[qAⲧϋu{	܃ Cӱ]{4diYc@o 	,aλ躋`#pX:$Mҧ 9O.9FzʷӨb	
B
f
Qv]R'0KqidȜvr9'#Kk9A3&Ԁ
\=l/,Dh
$;z'>EOo0Qo(;8
S~"oE]b`B3c]Lp1I
)vFwY	wNA]DsA5~łfBzdp:pP<se%]g=W=4w>TУɣk${oLR-}mg_#/PKQC    PK  ]W            >   ch/qos/logback/core/model/processor/ChainedModelFilter$1.classRjA=Ӥ$nmZmMT(PbI*MHM&Cvt'n*oDD >xg
ews# qdd]"ǰ*}G.^BU"͎C&2fVk{<, Sp@Fv,K˻PzoD>D7UG?k.Q7>ډYtqK60!ScXW<]ݛ`3j4F
}쾴-t;mJ"ۃ})#(LvIAm`oSK4}>P,j)9K"j{zbnlf@H(Ѩ#@]Q
]'OuL席(x˸BpƏ*v쎘+X!{;dhG[{dRX&8{	RXBgQ*^%5Υuo^Zz`-z#eIMO)PK1^  Q  PK  ]W            <   ch/qos/logback/core/model/processor/ChainedModelFilter.classVkSF=kmP)jbń5җTTHTSIPf|NQ;}]`^0ciwu9{w3<2$ugh~}lzP?m9V0MWd40	Yv!#CF0/]_ݍuMB]T7]ô-Mw=uYi,廖y4)!ŉneVŬm;Uq'О*<gkK$Ѕdt+EI	0:]+jk2.1m=U/eרĎqU0\Y)x)VtUeȇ21*MͯBkMxArrRʸƠ֒IU	aBƞ5L2LT|KioYjdnٻ@qM+/Qlri
򢶕IBI(I$d3Ca>qKn3\!bl}>FwyRs4[`)yؒhGΝؓ!45H-k6\]W4pQ
5Q֝w@stJ]48@^!@j˻[`)hڇǕ!P/l{^T59BAg5Q9³d*}جFww0dB12n{IX4:D+FAM?X4yR_*y1=c*}H<"xJƯ[z.-DMsf,s yu^Xwf4S*>(cxx 4f^г%֟*o<E -{hGg23*<¦qpW#+sFqr!΋/͹vlr[TQDU"σLps7x&]S!ܯdYG >`*3c<)	~;ȧW`AHw/OpH?0K;x̈́.CUH?/Ye1U5/S|Fl ̟!cL?u!Orچ PKBB  
  PK  ]W            <   ch/qos/logback/core/model/processor/DefaultProcessor$1.classn@M8	.
Z[,QMrѫfb;呸$PY@;3<3߾9
r۰Pd/N<'#.^{B;cX$:?0HW30<7 QBF8q _J=}"SW.1957c?;eE˨2ڝ!Å2]qpaCظ°1gS<x}DXǦj61T|2MHJ{BQg#Ie1,wHg'#JWx=O.)C늯gЈg|حH(m4c4/NE2n*$2nљؠSʪ5s*LDA&)`_+a0'\`=:B&LX:P6vIb[X/mzg,ΞmÅQ;ddW誖~ PK>  \  PK  ]W            I   ch/qos/logback/core/model/processor/DefaultProcessor$TraverseMethod.class.CQ)zo`H,&pz:Zuix(܆	'Oy{ypnYE|xpAGstOIJr'|1_}{7/8)9Oe\`3'r4	en_4lGd=S`@ecKvr6LqDs-.&tuͩ*+mȞ3l.L[(:+K8PK15!     PK  ]W            :   ch/qos/logback/core/model/processor/DefaultProcessor.classZ	|\uyiMӤ4=4r4
4)4miJZBe%:hx(rV4jlQ ^{讻몫$'_=+(B/|ecHlkfc2nlES
Fh$Mo}8Nm/[SC`u~1
GN#^

SLTLɷP,dFXL&cMfvd3!m#m5
mQKNQ[;q7!3<5"

Bj4Q3ԩ#)3Q阅j ճ=j:&GbY=bUcҤr#,˻߲|"zEA%g1N*xLp,!DR,#x\\̶IĈ4nZƷ,ߤQzՆAz[s[%BC*^F
XUb`,4kV
6t
{5Ҩqh(5F8b
jhq!.<-l+ە:u`=sLe-87x.xH$v@pd͒ubſ͂󳋵G"iMhj
A3 ZKUCmLPѝJPkT~#6m.Dd]؁HL1*_ۭW
2tN
)2rfo&R*AU"*T*]JPJu\2@ژE[ku#_#X;)7!&hFoxZkN>Ѝ&z~34;`,$(I9
+Gh-dYVX8QKQX4MG"kZ 83_u\QbBN:Rz؈#TuPЇTAo
;	6l5gv
ު6'pfgbk(JIwwfݱXsOͱH%x7ch(c@:a
%{uOA#ڣ1T`گ˹[q0ng
x,n,;u܅`fڼ	k:0k8Y*_Y{qu|Jy%vNl1I;Щ!LzL4i`NxOGVN㑰|RQ]ç
,-u;屪K1h`YGj
xAfLl/=ZƵ,
cDS<5ܝF X'S'/"!GwӜabQ%4)FnwI$9_V:?hd"دx^'xQk^vĒQ:+ţo[
n TXt$/ j;sHNe5|I1PUec\`jŏl#A%O`"v؀x?9ߠY}
?pΕd!ڑXI:Eު`9ڕ3J_P[ey%_?U	x"8ٔfKǯߌȌDD){rnGI8dei2u!rvGY;BqԮ0㑃<)
xYZ0ݴW"]TWFm ~߲`4Rc!Ad+Rˆľ,?~]tg^wPPC2M
rXړ	:!;e.4C-(oJ]d&tCg)Sm[b	'լ.D㳂ҥZi['7S5#h83)l-6EcF5_ UU8yb|]I
NZ43r9;NM^YRYKu8{DV1ZhĻ!/9sZJV4ץAV0QM8ڭiNtٞBOs]V*5ڸ-g
պsFӈn2DJ7mFp+_|Muǉ|ӹ1Gc| s7MGrrFTp`:NAP7^b
dd'܊K.d3s4VNapR(;+֝ڹ1G3Tewx j	>8vXם7ɗ9M׌	J,}L'7	2C;ՁUi\:;b*N˖D=
cYAGvzw=0CavYٮ}|\ٯ RkGy=ѺagF3UqyEr3ZڨY#29'wǼE8e_y4Z;ZL:~h% n_nj;KG0s59,xoYV?AXy'itJ>ʯ_ubhSCT\aapzIKq[	'NIgv;	)_Aۊ"XGܤM^Y$*-I:"3Z>nlm瘦-D_ejOZhZvG␯E9Q^

Yy4[-8K
FWU+B+?șkeݱ׮x	Y϶s=U7[8DMx`v,指_S_7v҉KoWu)}LuS1Kqm#nK,i}j2Ci@)rDyD,bpѐgȞwbQgL"?M]
wzb,8@	f@ei|G=rM 3h,HG\jg'!S
`Jsܱ熖Lc<1=$u5
'zٟKpw.	l)5ؾt<&24mF$N-R.OF}wFwC}!Co|+^rq=u/SG.,.H^M#P'ʍ=G */zT~cm|.^,TCkgItտU` 
܅bZj>
)Lyr>cՓ}][7yObcn^G	A=Yjl4b1.X5hZሀ\);-F[?Edn\E_c(]j]aW|"BT%wA
[YOcSo籅'eg$K%:r'
XhFt`ls^mq'{jQLXa^F>95:V|S̩x
τm2BN uRLCL5:')Thu
=$h؁*mZl1Vj+s`wK58EN^o}a7;h~M*_!*8ѤUi;)7_d9׫8e؍{-n P"ћ4'Z͕`DdrD%fqDr%IH("Iq1~+zvI͎0]h{X14cpNzi
n= ]#x_ߟJ'xO!.O:i:DG-am75[(An3z!%V2O]و`z.aѵ4š[~iV^F("cK'~CGwCaK3|V^wr[ɳN~k{̢f"Gp<G}GI<TXc|y8=՞xVpWԄfom&bN}!V3&ZfLǻC ﭸa>DpNp%ro?FĵyĶ9)^c#rCNl;ю<`G4<Z~
N"9*~bzeh
#RH	=@~mvL;Ķ{zNz>7a7Yn6ו`#zR|\j(d39ltbdl}l|l=7>:lvT`%)SwO' U2ܡ8+fnxx=1yյ
_)cQ7V4mS0f3ӟ29,O0c|Yf{;%|\aP|

^:Jf`(~4`}qoy/ޢ&4{F*BfoyTV{3&dvGlYu3ZslzrܬS[]s
E̥HV]T(AgVnq a{2<_ey5VJ/b9.7o.{$}vtJ?%KWS1kUZJZ:E8tYг Azۘ8܈ӄh%n3-y,,v
5U4M#Ϙ@-
V9:6VV:M^i)*k3_O7fUØF1cShC)mh"
|puZtfK}L!&.{#k?_p#^a~Rw0hy!15$:7Z1dy51ל9]s>cNsei9j۳H}wYFZ&kNft2<rյDWc5
Ǿ$i<'e쫯yEgRs2MgcLGKf윉e
fTMNer3+HEP^GWSX}[T^'πfj8AO^*ԏ#K<-j<(K=jJgD6y©#ɪw\a>հjXr>հmRCU,VYf
}TVBoz+t|`Ъ%>
X	
b1.HO.VϬ|\="YU	4x#*;49yNWS;nйs-nf_xf{}8b>]a{}~xY5TV`\@HRYMZnB\CֹSnۨE@>ħbiaݪ_]rXXuy;NdPr*SӤz["
~
M>lRY&ONeM[<C.	6vU(o#֍Sӧ!K
>Ö<<9򨽃=NgTV
5ktvv3Cy&6TI[;/].U.ϳrx<{U9<\=rt[DATTxd	!8Suغ~VV+[%ܗ_<+_/PKTz8X  7  PK  ]W            <   ch/qos/logback/core/model/processor/DefineModelHandler.classW[~2բD78X/QHT@%Ҵ~Imbz"7[czI-i,>Ϟ9sw- Gv%(DX2ESР׊:q+͸N<Ǎv63OY)ӳʚuZo]5Y.

AV
^U:>
Z\E%2vd,AM:v:z{E@䙺Qs3)3=];=BaCDu'I+I#6`VN.b
;1vѓo<(4Vn\&@R@:{tE@az8!DРa8k$d$gH7V^w6qόfqbj]
~Qw7*b4{9$qG:Asi]}{5Ah2jX~37Ӿ'LEḎ<$PnH+R:NI}t֚2=OU5jxXGZ֝P7Z)OX
>q\K,)6R.R/zs4:SP#@l^kO:=v[,%WDEٴv)+ b~S%zpIeYHC=#.x˙̑/oCVHS`3WcjC4.CJDV/:O)K18/lB<"֭3cie빴F S: 0ݴud%LE5<-PZt	u<*1q3([kt't<+f#Cz>T
yEħ}Q)ۘI,ˁyˁ >#sUW
|Dz彾_ m6,V>3tbftm_IغZ%""ԏ嵛5\s]1w+ lYTudIӪJ~֥qWR4!PM-*K*ewq8Bq2ԫH85vc,8;ks&V|QGU4On/߮ţ'[ɇwhA^OI&V%v҆2_n4jI/^'Ƭڲ2Hrr=@SyLqc^#M鍄.[FeeqH=u@~GܓO:Y^k8	XS:TH;s-be=D!Ӂr}IpʷzxU)DB%*I%JysJR6u,^TPqb
ec-
oȣE1g\wy5qY_)<Q9g\tlf횾*B~y.jRo۞T<
k`xX!pڤ,V9bԲ(a;o[z^1Ȟc_[$_Yab1VHY/+E
LvĨ<qvs&iT '@U( 7M~[6I|ա eE
׮57GJo`mw)lp`;n`wdgP
Ⱦ)D?<c#Dc0T4
hZi! 6^C`"Iiu葒MY\,A|QX .B&eH1A]_$$ ,vp<B،fl_v!4$¶y+y"{oC|k7xK?<_rm4.a[xRH;.E/;r}X%!~Dwǌ w4~Y?%VB{8j'5-<^ε d0ҤaSD:wtC:.7 k g16p>4Ww9
)]P	/)TqL6ʑ[5w7qWiqx+)LTef?/4V%b_{>̍|WnrwjPxCjśCz"'PKD  d  PK  ]W            <   ch/qos/logback/core/model/processor/DenyAllModelFilter.classRMO@}ZQB	xpoJ11񀘨!ؖ
,.-ń^L<Qi`y;d>? aD
it\~6vc!]*7Cրiaî~ȕvl~ xؗBH7ZqϰWj`pReo	0^T8<R0cph3A(k#CLJm	W/K$jy1dCq"yW ͰwăP%FqBF{IyzԱB`k
LQ~̍_LZn%PKV    PK  ]W            9   ch/qos/logback/core/model/processor/DenyModelFilter.classSn@=q4<`'jXAjBD3J]\R~uxH, >
qǎJTjb>9xR@Y	93OZx?v̐t<'bjzO"d	נ0<~doqko(Cc{={19|3ۮE-ײ"JC'YUgJeTJ*XAa1R}cnaÜ:aঀڻL	y_.wgţT?ټ0im=Mîw)S1}r{VxŇN$z/j1'/gKphW8CJDNL'{V0RHAu
<dpVI;4Y
]{OVd
`7H_(>d9B	NQ-/lY= !~Mm~R+ϐNQ>9)2ThVѪg*4Hn"̈́_PKO
  D  PK  ]W            >   ch/qos/logback/core/model/processor/DependencyDefinition.classRJ@=ۦM[z7⾩bR1Mט>~8Vj ݙ9L
H!C3Aز,YO-aG=w}tR#%!Ӱ+n@k	-P*n}_˕>CqiUCQC+4
\e,KV3hd8n_7Dpf5XFږWW]!bJpDTv3VKjkp*ہ-]Ut?
EkAC24mՖf=C7ן1CGɖ]"<V0Ug8&r%JySe'>tɳӌ	;LBHaX>PK}    PK  ]W            D   ch/qos/logback/core/model/processor/EventEvaluatorModelHandler.classX	wƖ<<,Jb	2(K!b	&^6vK`yF\ڴ.IӦi)m6pڔtK۟I,fl徻~ֻ؉(S)9xrikxPO&-,[7z5,3@PE!Y)Ndl+)ǲr_7Sia0
YAÏCeX_0Th`k;-LeO@56۶8Rɛ<nv>X%bmXiq1~ZOus8چ9
TR𰟰k".0l:meq˪d]X`qJT;7DtK5&c0y4Z:I6[.Cؐeǚ$fiz
𰂐J"6)e
NyRLz!TlPLG
q*X1
quul04KUnYal{UlհMʘhgJ},cٮ
S*,tQAAJ33'أ~2MN
}hΛ)1ݢaZ,7N3tW>NY(UL SȻO(mӰ1E(ekpcЮLaa78/N.whb锼ۭ 4uFj@aA~
6$w#`H$X%vN߈m=Jh8c
2{+RaҼ1l8LYh|d%̎k8!aVA}pOBW1!)t?	!L}⇲T<k$HƐhOER0CmF_qGe[0%'dBBxJ}#"fy1ˌVJJ'fZPaLCbBӆe
dnmStZRʌV1>ŭRgY[:ul9XQ|L9nS>Ln)[jT	%UX*ç4<Lv\sR3*>|nt,fXò`d娡/zaSw6V?ofr
2]+Xa+;6(>yWD:mCw`E=R<{B,Wd|q~K[{G5ˌ|͝C<+ڛ'RW3a|!Qզ{l_dp+F<cS]ꗘČeehZ!X3y>*Q1{t
/KT]a+"v?V.0qT{EZ<p|O
qP)MiP]sB!gָBV84QO;pOYRdZY;)RL<J{,˥'LpGίZ8NvLv
vyS[RiHڂMJYC邘r>+xWmɵD#{T+qcKGVo'Y_d_Wj[aFEVߴDKSKF0ot%Άfզ!?6wm*h^Õ9Tk7Ma{ILy_
VM'Z=,AlR?;/_Vpo}~/p$mUQy;E~EoK2 JK򜤪|
#XJK*=F_WuIVu3h>yco[yU2T~ym,!nb%r`C0: .x48j `C
j
yt{;h M76c/'-/Dxj8+XP
LVp?$i	|`@Tcjע|nvziVt/27({3hy4o97E"Vυ=Dߦe:.+2F^ |WgC}
PCR&|;T,V<R|-*~T܂g	~C
)ٯf|h:ʙۜr8YBC  
EZATz%~Suq2yTK\zKX-G4R0AJPPtW\~Z<f$ "6Iн)I>NX]h+?d9$.c	6q0V ;b{D {N'9{ǡcϽ&'9a!z\MDpPt".0o7QyDJ
`_u*ν{f{$3C 7wM7PK2 	    PK  ]W            @   ch/qos/logback/core/model/processor/ImplicitModelHandler$1.classSko0=^-'c@غ6CJinJS⒤C">BѤ~HQs}|}3 :FbȻ]M!;-}g2f?Ytq"O=ΐ:uDE= K[x"\@<e`Ozs{<0/rUg]qP3e1djVkv/:ISfd|G0$ke
W揝S1k]v)d616(\lziV.XT6VR*6VMt\W%"jRz/
7ujU(Z܍\^<N!Y
0W<'-4 dE8tOsRqq֖廞sÊ4P
z~ʣlk0M<j<dH)eAQ8a2][XnV]G5"m]%t`g?_}Q7L$OH'k\&gzrLcW0K2VȮb>D;dK&@db1/FujȾֈQ!;1.6&b&f|˥ PK<T    PK  ]W            >   ch/qos/logback/core/model/processor/ImplicitModelHandler.classY	|UdN&=[Ht4¦MӔEdw,=CAQ"PTe{E*}WfsM _w7{/# ^%|>(X뭺JU%.-Wlߊ뉪mTʲ~fQKk
p	,ZsuG@APMfdqìm.:ME5sF1,V՞]nٚYvDwKUm\D`p0`30G`ݤ'줭;مLJe/cRAl.}@a{,`<8JTszisN]/_lWX,Md	k=I*=Umm=ln%X*Lzkpn+En@ion;t"D
o\&7޸_
+/}vhUd۹ys)1;f'ӎ^c=?Duec&ͨjkq@fk9JNQKzKNiN))eJL >ؠFF
M{Bزㆩ%$N6+PL?16R3FI6R AA&iѨ4oҷ_)d1a8tr4ӡW<RvACj6fyb;K`jfդdRKP:Z`$b'5FFomo'N\y[<mތ9o$94]	ǎҪ67	%QUt(n=3{O/{MJ5ؘ\G!@jIVR%Ĺ@ʾ"W2uә<4̎$P`H!	.(h-Cǲ{82q>Wg?,kSzo`YxL:okLQś؉T+(;VجȋY:qkqM1OE<zw5}IeFexw&)-Ctr2ޣf0P&%T	Pp3goSq;DE˦|VpN,K-z"UT#ՔN$lT>ݍ
>cgH
g]dW^ NXŏY$,PIOaɏY+)Z=P>S8$mһtiSU1RMl"N%-HeTÃahҚN;&2@	SZXWQ:춸yTgYi=$Uecֻ${U:b<"Mk{e	9w;'l*s(p磒#Wss'U|wszk^Apd_n
J&U|
&ө^w4ߢqȇ}1]s	E2e)Īk[{.+_cXO,FI+yn?c&XSKN?W^fԴmnlixwKksK]kN_5ǜnLr5=YHr|RR`tc	Z?+onB[Uv,vbi9Tq6{<wMr_78%W[es<[xHiDԛ03[uNY/0tf鹚˕EWOBL3-5uM2L2NEnpWM¦wooԼIv@Ǵ84gZ{p2gWK0tns
q=aŴDf|m9xtRVӾՖNh3zLI4[ɵ:bu4{!<ּ^B'H~A
/^iS +Բ.㣶x70"^
)sigEpEx$(eM\%~Rv-х5L%?5jl2?kdP7^TS>JRBjXUiiQVsI;$IC
+b]<F"!0Te?sLG8CK1$D1C\	л۫YwlvLlWV.g⺧QgYILhYeZQwzx/Q4;%a_lX1r7dMZB_lzKQe&$J'r)"N[fXKCKCf
|M*gnv,y_lFٺ4[e^
֠&H[{DH
0X}zbpmָڥ2|ξ'U`Y}ǎu|;M!5Q%mRo-9qI'"ΜUbe,3<CWysDn92t/t~#=	.{GCDxSd)tPN}DZ)N'i+<+,>QzT~_R|tlZ!ͩcל1#EYTTFh\P"<]3"+3,9`C!f3\9<SqM4D|@eᨏJQ3rSC
醞*2XUy!%uu2b@)j|6edqqt$JwDA\)3ˣH( V
DBXǐf$QбYGG16P7R&:f-d+hЈɳkЂkF;pd<Ks4$s#Bĸ]`|sy&/P<
8S,C"LWHE*ikqf=nOoP;S(QPv¯
Iu
HzQ+2xmWE}Cx3^c&7Q\WF97}3"lCQND'RZ I
M 4.^	jױT(Ben>!0T)
xQQu6o	a;٫̿DET	oE#+|˽QO4Az]ys+Gc8H򄥩T>x2?mS]e%2ģx f	<y55dA,sc
4 "<o"C쓀2jWg^i
&z-o%]kOkq=j鼅@lčh;"{7)Kob}(r'.<Bek(`䪟,)b)Y;~QFW5W,IPˇrQ!yOJy
h.**+94ʬ-r@-
zen1/TU7y]X=4_WrWQ@
ǳC`ӣ=KHߜ@o?OЄHz `.8XcXI$Ě,$\W	٬|
=;9(h_7(ѾH&
S;_f~9Z*xkCG'Q]@j?=wHɿE!EC`H4g'>W`!\F hypx
G+f3gI#R|xv4	R')_%u~ToP;#v ŏ)W3	's|2'4'ŹŤɯ"NhěyR;aKu.֐ޞBS8":ZIBQO!@c<c<^(e%e-U#_PKraN0  y#  PK  ]W            <   ch/qos/logback/core/model/processor/ImportModelHandler.classVQWG&$YX(hD@U
6f$+twb_o	{9=};Ėvgw{g >#
Q1.Yw^uimd-٪WN{.0ٮ-RB;y|Šjdr+jE-07@6:z^cy%JcGc3z(|]q	

c`#ua;嚰=w;53Rq[՚x0
=vGN(HDt{^%
	,LlU8SXߴDQ*vE	ih!k(+#p9|4lsa05sENa8׆f;G53n|Bu5LCߛH%
Ȼe!Ώ妋%:wE#.\1:^
k7IB'z˗W̒CDLgm9o
bWۋi֫[mtej*Hq<3Lt-<*b&CJS<]	Ihn>Z23GPr>>C{cK!֨J޺MEx@)RNL-@u E<Mfhڻte"f`y/zumiZL<AElx_3LcSWwʪx*/u^v-zUSo@){gad'͐6eϧ+vTLmkmz^Wx{-#"ZoBӝS=#WS(:U.Be+F9Jy|<)"34:j!YF&,:Vo?C64@u) 
z7q$y	MbM>$[@	靛h2+~>8hӱdzi)@.d1t橲!mO)4a8Eaz1JY+srT>Ex[a0?Q_!Dq
8FOI%zH3?HәLd/r6}i`J34iֶkTq\O!A3'qbrY
I+spX#w$Nt_uW*-wpW=XxQCTPKY7    PK  ]W            D   ch/qos/logback/core/model/processor/InsertFromJNDIModelHandler.classWsUdeZ.hi-VEm-jE&vn*/('Q^g$gI=|ﻟ׵_d f!CI?̺Ԥ@f~AReAvH}+v({ωz2탵$^$磞hy/>[ӄ0/ZZP&LpV
Q7EaHִok{S(ph1m֕A)9W_ 'CkUWM&^!PQ6Xب(I%In@t:
Qv~=9P4C5݁6-6~m$ɞ)[8puGb):%.~Bzs]REcgNAHHڅBƓ
Xv.6𠅇%8ȱ
]jNg	b
AcQ<FŮϖK4{ki(aZX=dhJ1'*l/b
	,U70l,GNܔ#32V+pP8RōPjC b;8-aX`塌ʧok7!{C=7XRIv@O2']RZہX4{KFzno*r:pdݞn7so1uS͸\*A$ϵC:}
sEɞu<;*t[9T#>=ֆ	~ߦMhvV:^U3QyKnldj*ŵ~ۂ0j}~c91Sޡ[KBJdXjWшCvIWWZocu%Vw^xNi<e /K7ad4$8!g0"TWKI+>*6Ttu"K&9%l)ʰ(4b_&#Qv^ߌu9VV2Th?`,Y<c*mZiqS̎['O㪈>uGH<"ًL Z-ˠbOTEOttqefr`u.<q-%cx2RxWe=&͕s?#ӂ8XHTJ^Mp/rO:b,dbUx^</fc"BEIwo0cXW;2i4UӝLǯދ:Zگ&N\'<P!lmMHw*<5td֎t"J'kSā%45S2#K;_@+ق$цͼo؉N^Qw0~]+D#PR7r)22gcx.a@4x(0$N0,S&^\ptj:~K-MD=<j\@RD|'JY\;˔3o2`h60'zbb86MuIj5_#:?|{;6kK3|PKo#ыV    PK  ]W            5   ch/qos/logback/core/model/processor/ModelFilter.classuA@E	V9^YP8A2"1L̄*Wp RfXЋ_]`Aj'Xm=+c͍5J3UKHΏ[^R?
?F_3pcVznUbc0;
PK      PK  ]W            :   ch/qos/logback/core/model/processor/ModelHandlerBase.classUZE~lKhіڂ-P1ld˲N܃/kBCH<O63gwޙ㯗w9t!e mݰ~ʝmnZ(=%?@,P0dQBC=r&ހp̞i0WWwECBBBJ2_.\`J?"o"w6}_JÐRXyror20l20Y'\B=Z 6>MeઉkeRU0m7:!TWh&6=+Hjп
"qMLCKA fVP4P21Ζ H_-NM`Q\{`"	\q<&v)2P6wk<pqLC
Nwyj}kgڋx\5:s sgPЅ2'-yxgs.>bsɏ{-xdzDӻު5'8~Vwm۳Jz~ W?_u~,40o=q|։HQД<:lXv*Cm)U	Ր0
k6s@^
q^Ѿ}|W،tHa|,s[$LbxEݦ_>}_02[bnQ5W=OڣD ѳSɿqrz.D¤{4Zhϕ~+MxN.OHsiz]
nriJG#0oҘojcMh3N@ft·1Z?Ep-omx]gy!I=F"=K˼H\:)9-><Up#)"Y?g`0ͰEDcX۽{f[ʳ+XL:DۉYCLK9"e6AOsUZ :jz[laoPKY  +	  PK  ]W            ?   ch/qos/logback/core/model/processor/ModelHandlerException.classM/A߲kXvVႹf1M$qprDTnBɡ:TfBƅn$ss$T1aE/Q
az6H	AϽQƍyWntԩkiwE|I嘑:/do@M"Q*goeBBcy^u>_!=0G0c>酆J"5l9BH:;:'i:1;WUp0y!
q~YLϠLR7QFoN_	43(ok bQMf&&15<3_PKi^  D  PK  ]W            D   ch/qos/logback/core/model/processor/ModelInterpretationContext.classZ	|Wy?]Z,Y˧|;%۱
l,:!h5^lff툣P
[hiIb,)9L)I)(gBKhfvЬb?Ͼ?p菢tTF`_b^JYcFlW²ͮ)kLuel+a:ew
`5m5{餻OP,gqJ鉮#cḡ~"j5D%:XId7lpLX	
{xXVi#rGL561s"t:jkiFK$v|Qz+TݯG2feLuڶ1=wQ4{Hnұ+͌7Ӊiʔ&%@P^\|t|k{c7ruh9YWgD9چkهi27--
y\.FS]GuV/Ы}.i*պv70fiIɌR#1iFх[d*жxv긍ec!zB;y䰑bz$=UA>w`@g56ゲX~IWτ͘4o8$$otXn4H7JɄuaX`.cXB<(^BL*0\ڸ7O-SeTqYXIv1h8Qx{)Su"%#4dmK5ܣex9PdNLٲ+0]B¥_ү	㠕"Q
WI	H22YgR`K $i2wB4X^ vQ90qU=K8'X9O4^9Q`9S#ޫ
x0 )GT"6SsM .4Ĩk'Y.C益fӲhɴii4j)b4aܗ0v
*!/a02'T=btM<]F&0N& K	'3M:ތdlۢ:l_9>i[獱r~Koxʘ.cXw4o{:~o'M>ˎ}YszTҜ`1ݞ:<?ĻT1Dll&R;Sxxۦ$I"i?*Y\?/ƹf}DpLYŭډ:<
t|XR"0LgbNüpDy~vc6<NNJzR7J{	8!mOWI5ς>
S\Ot|FF^):p'Us<Taj0sĘ2amF*e7&Mbǟ%
\SK _e<X	,H`yoH9|R$G;_1YoCF`"}o_wbmMN
7k6m#c!F,nB,"Jt1i])PoHvj̴,Q`%O!Ub;d.h/gܷ?"PN&1b+HK׮ۧ2=-MS8۴&^8IYĔ_KppH&aIAi.>IEVe2)7J@޲mnZV&GW;6s|3\Ԛ՛Hv9ػh;BwjRe-/P&KHSiy+06Tk>w-.'9u
>g~N,ʿP&$?
GY9UZ#9,륕~!Tȓ!"Il	,0`z l?n<]zgh)ә\<t:;\K9"Ya/@LQi|qmhI:E/F/3LsbUf`,Т:Kl?Oߛ`6r WBr5&b4jey0)ͻ]O}mdMww"6f!աORN[+"l[P#vEnѭ^M&9+V	,}{G|BoFz<e:,l6br2B^>g7K48;.]TM
]񈱞W:^:;U|n/;?UP0[͛.P?+;.?FlRt0LOk|ڻTQ]!G-i%Ha5	:)*SX29\>peG|k::guîSyh;8u*2Y-oC=D
J܌#po U	
{zD4Գ 󜯧ICV(kz!5FT8!M{մ2ss#s8GvV0b'nnG;Ḱjw&]G#xQ\;X:E$V)餄?SWpW%NW-5Xlw
oNpߦX)֓!X3#4GҰ</-0ZM`rdIל>Y*@-
EyQ/ǁb;}ꤼ9tzfzuz?㋸Dd.'#OApC LBoOH(J\{&TXC??SUg!tʸ9rxR<>^O_5P 6R+G J֗y ,}DU`Y_jeggQ-jB(P 3?!3
Y^53F{?EAV8z߼<QTYVDZCE͠&$̋񡭊?IT]"	7ޙ/}j|NH=R8Cl
UΫ5pT0 H4>+s
sw꼑.tW[HwuGkUk翙d@y=
q
s|\AѨ VmD4qTMLKEvr߄:*83Q!GCi||*4>ZM>:[WXez \ .VV+*pc\s!)JXM9kZ_g+}hd`\!lSU;
riOGZ}>]4SlZdA-Xt;z).BuVc?CG3TSl(6&D/K*?g@ tv_$_<ꪋ<ʋAe_gn|=xߦa.۱*uv(T/mTC-BHĬ,1?`LlU)D,0:__VQ@X]N_y9NՑ+Zva	TwǵoT`&ZrƏO8)WufKE{PUxy4\FAxy%l]6r^kZ^ΠLd=ꢾ v} ^la.aSxWYEX5W{G?3yddT1jF,c8`OzX뱌5Ey<fiJquEο;^e$!PKpE  #  PK  ]W            9   ch/qos/logback/core/model/processor/NOPModelHandler.class]KAߓĬY]Up/x'BEr2͎ή+A??J<3$ď0s>oX9C$љI	yIcU4uGHFC$X"UNtNZF2Id+	/QS(D<1`U'jYS@bTڝS·\!0ZrS$D"Y^d{{jU&2mxUHB=_!n>_HyB͹j[;ߕ'Y83<|Z程o@׼aGǹ~=A1a<֘JwnPjU (*YpF騅ӭd
ˊ&;\PK^i    PK  ]W            8   ch/qos/logback/core/model/processor/PhaseIndicator.classJ1'֪ "IBղ]񔦟tSw
x	?&󑼽aGTI6QW'.MB|hz(1$)5㞒G4c#~>"V_|Kog1Ԏ[K8,qP]ңȴe8ghacDRCiWsܓ|& ҝJUWӴDʰך9w(l~X%Ꚇp2;v`6uSVr@?W*Ü[̽KXF+5:
TrGPK6%I:  H  PK  ]W            9   ch/qos/logback/core/model/processor/ProcessingPhase.classSOP[-22Q6P*M 2Y2BqJ݊]mǳDFóTЯ|;g|`+2"fK{5V3=޾h|ϴ6-#`!.{K>VRBE+
mVRެlzIT<;-b)yY~Y__AC2R*q1ϵsqhh6Ɓe`TƘ,n?iCX;oh	=\@Vqwi5۵uR@L=N _x)a#`xjK#Z .`vJݰ=P_>˞i85÷vA5?҆!
[~Z>7ln7]#T*5]kK_:Ptֶ͝_b.sd;n LP;Ls"~	BSgHaqq!~3"!*i6}30ΏLO'%x_J|TqD(Oό`?J2)R21I+oco$
Q1R&.u!h^uiWK`^MߓNp&"E &8m-K2d".PK    PK  ]W            <   ch/qos/logback/core/model/processor/ProcessorException.classKJAӼ&a6.Y*D 1$3QEi<X3(EwU5US`$BI#!)nag`ܙrY!v-Zp<A(W;_P[ѷe֋#E2Ƶr
[
¼2L1R6Zu6N?o\-av>?'1!V		{"kէ!f(!۱y2 :d`ǈ7\NkZ)-&.
N<SmCoYi6'@ EB!%|/&GOA$Cq9KDXA!+m}cOBPg?+4/PKQ4]  ;  PK  ]W            >   ch/qos/logback/core/model/processor/PropertyModelHandler.classXwdwg#$\B+$$%!
0%ef/jk++m-6Ҫ}9=@~d61E{>>ξ^
oPJ
!aDF\?a#fj,r=+1-;ܔM'm[^['7:u"h8!*pbYNJA.X??Ycaj,X2b)n
{̈́m:#	.eBuJrR$TqD[`J].,>lTڤu:!pMjJVG@ù0Iؗm~u:VI\4"9ưkXEB7e=+0gܰq]Y.[(P3nB*dsw-s<X'tr$Ju4]3`x]STD+pTw-ZulB@lWQ ops2wn[q3#LrYVQQ	nK1s]nI<Rt$1L0ʙNKl]읞z(j*模CaFn۶FLɍ[NP"Y6Nz@Sc<v2'VcnKw븧X d1OC{>0G%zJŪÝ',Hm~qa w wOO[
k-^
C:z)@Ê(V9~j8Pv
*>㐄ggȴsV9>?cX04,
GtsMqg3:/Kc̻~GqJ1N|{n{ܲ--q`yq>
GB
qaܴ]jm 
%n0r8xqv	C?>'t4ȋJbqp	9;!Sdݛ)sFf
!|X`PN(^kcXte#xa4W%gege.}9vgehRt
utycppOw\R]Ed/7>lytnʴL/#`4ChB\gD
T_	cёe[nީ˷<oTR͊LJ`;/P+>ޖXiE*7P-j 3A#4Sl_tNfQe@gd+A3O+Eg@oYYbfHV9fzhBr(NW=dSt<H+3tt5o3[Bre\A}䁀fV%j[jQg_9.3),A`ז/l>*$/)
(R6UM[N
{f
Fݴůxt9;w ~$.;-/.'~@KAm *P144e>xEë@p;f*{E]ӥD0oo
urم;YO2P.'?P?|J
,L2nǱ<U-.şy).Je
W\,O/D,>S|(aD4Wڹ&"M!)S|굤6OGfQ^TUk:8uUb 5{Or?/ܓZ.OT2Y>O)/qx:M~2斗k>Pg1dO>yܐ$FMbDVɨIdh/MF
Lm5N@Rخ8{FBO2bD^UĞ^yn Q-vm&ZJW=YeD*L%)\SpM	Y
?x9B'ѡFMalUM5.58HО]c#1pɏ;<.U?OW*W=I:`#çf-?Ww#)L7))CF7 ~?Q	R<+hSgq%J2(oROT#GDX~ш{E1a8I`=N |1,%q~	ͤM>orv
6vA|Aw }OEMϰXDZӒ?"9\I&5XCLY
i.4x9-ME}nQ]$%TƯ<jTG1[LC8T RwI䚍PNΔ-CXƯZܯ|5|gy8Wīgs&K"U;kX%
fw/}2C*[^F~d>rBU>)U4>PXHb9·&#ҽ=/mZ,7([hJoRq"BIף=|S~	Ś9}[0ϢGbGc4{gޡŚך2j[=Jd!?ãb><2P	KOCR=_Tϗ7xMH*q?/+PK4	    PK  ]W            H   ch/qos/logback/core/model/processor/RefContainerDependencyAnalyser.classV]WG~BA]Ze
EkfgM;o<b=?n&？3߯ p~42х4ä]-|/Â+7׹Ue 
5Yn-PeȽ+Y

sikÜ",_A7zdLdm']pW=qw;CF̹<roESaGLE?}dK^qϦRqpg)w7Qxuǭ'rNhUcT,{D`CKnXѶ/=о_I%=lbMx?1a,5
|3DIŨs*Zw$ꂉTݼRYd0	91 ȑ^BVùi
8
&>%ʗ~b;Jȼ80iq~4ܭ; 4EM|)Go	*}'Jq*"]kҌvCN{Φǣz7ӤrU!BP*k"]U8="6|۝Vװm3o249IBVIU= M	==`T;Vm:hWvII`ʦjc(Úc3\xf_B_1\+aO|F	4~(kgRٗe=mGُfEݺ955bd\!~-tVt.y_vU}+^i<^9#?6P_(ͭ=)Ke:f(v[ =*ƆYQ|:H!2:.C	Qs6m`bFܭ\QʭX{&[9e'RhKWϹ η"֪42eA=A}
zMh݅iZJ[}OovX6+ډ[{Ho
Id0zbubЫy,KR:pfCr$q("hG(OK;]ZW\)Nln|Fj'R}!0Lff
=(b)i_wc/t*\F#${ܧwuieZ+ѳ٥*X@6.yk UֽDQ/C}㊎}44$ѻeva_*
V1PgO4 [AbPKZ7    PK  ]W            M   ch/qos/logback/core/model/processor/SequenceNumberGeneratorModelHandler.classWWG5,̲',e
ȥ
;2̬3(}? ϯὈ{7%y]evTUսw -)*(B1#xQ˙׍<:$M=qbޫ	O1hu:7X CF4
>nxppBLs(gP'i7OSH[3zhwM{2+جb*岚M+:MVe7!k:2Tԭ6\3\iֆyI'm%>õqmӓI_km\T؁HꮽҭVQ]k]됗Rح`жduS.uvvJҾx.O֊T	ۦ)N`~F۾'BhXϞp41Ds9r@Uuu)pXejf<2uw.K.HXJY>4~~Lxۢ8N5^CB8)?Qd\ЦN87VT7Q>t0,0-Rэ mY6"yNu}ӶE/B9׭cC<bEȜO-dc"pkhb6!(3)*v2LiHXVVXrRF1paj([gt+͇&Vn䪫(ūxM*t3̓;(I:'r|iV?褽a(7aA=C1tkDwM1
>5>ḈQ-OVAn?6dxH,)Y`yjPԀ<!5eB]Й~D7'mODZyG2BDnΟ"<3D12Uџ/ӂ"?qn,uKh$z*[H<ѥ2˜n=dN5x)m~Au8~IxA|D;ijtPA=r6ŵJ0tۍhJ}#kE>iz)ĴtWвysy1K|kqa=L,יFnf3gSCObyw,DnYqAYS=D7䪂5UR3t2)th@>t#2owH.t#
^!)&pmhaŋ0JzR1}'́Z* XobEa8dQ3R!Y
2(f桶*#	C\Ce`Zk RxDG=
Í D<Z1ǋwQZ$ANhgw>1'nO+h'WEt]ي(R4c3$&j]8L-8Du1\ BA?EAYrI^QsdTҘ!B}7ȋR% }6oRR0zKA{5n4@k{ysL"dB\<@/wH<"%Dz+[X"PЃ ΢P~a{pekFWF콅	L_PNͲh
Ln$P?O\~PKVkW|  i  PK  ]W            D   ch/qos/logback/core/model/processor/SerializeModelModelHandler.classWw4 ! @ƛ@ˉT&Iǣ5X3#tI$M%ҽ.4?9i=B`霧߫oo ᖆuB맊ܬaΧL׳R]'!!CCTH%7gSe5-wԨ\2\<n;v0(̶~	kyelh_soC8
بa!Hxe
v:gsVEޞxFzl;eTpR,35l
<p7@T
'j 	l!c43JL
DKY}uLy6ι5SB7KnѰW>쿃<iEs^@vb.ITZNV4bQMO'm?i=]_EB7e7rwz.^ޕoH	̨ilxT,]@A'Ke+^_!N]AųxlI)saXONe+V]YED#bN񙷝\2p|jTq:IVO<x\SJ8>'5<c{dW2	#&QKR USn{0.NbD:N!Cn_ҕ@.HhƫH?#Qp&*d}YK
-t\ǳxN`kɘI4);(4ҧL`\:Ĥ$bدt)8#_{tC۱^ئnJz+a,=e1KtJJS QG6IIeȃca)qTBXjgmQf-iIy&8]0f<-"7Q)3L'
<(IfE*ːiGOu|\q'=ϥo]XcҬMJ8,w`q]~*ZK`KiǪUU@Y,z^g+ʁr]l+Z5ȵ>Td<%ѽZ&&HT~,Upvߓ]tsYӾ<ɧR[
uM3P"FDˣFYEv݃ufF8}~ָO.M:d^mϮ+I"e[-2y%'܊gZ}Vr݀(ZAQR`c]^%7_йZ5Y=Ɋ/Kl~`;.ଘKFH~*O
N!P'~ӝZDMuQßde3gwު{tX&\'	^S/@Ivm-϶(:!ٝNVqSE!MjIjc%?!\
boڮsW|jTxV(|%FXOI-twp b
 j^%$TgWzDoUlkYEmĻTyyGxz?Гt8~OPH"R`ZhBKDx&K1#]"}
*&n"\i6%ʱIaN<]8l{p'8nJ{Ógs\Ms5-Oey>CM+dE)O
LSo4vK4\eRŤ~JWU|z
r|7-[<
!|(|w]:6[5h>iح᝺|lk	tW"^T
gD3cʙ0ҡDTAEѽmPmL!Y/5l`%إ:4X:2dBA<w'Is{1NrK>p?C):Hw_AG%ҏ(UCJIB~*ՕF>S:!n:4\g*,~_w;yWj8TM,"PKa:  ]  PK  ]W            B   ch/qos/logback/core/model/processor/ShutdownHookModelHandler.classX	[=OiQ[q$6H3u6FC.)ڪjdc2f&f茸%';3|9@	&~sϽo 6JAHE5jgrmմLkvY;yk;Cr=YYSw5W0,Hc[~koE
"*6BX~\sրm,[@1>Ǳy'&'TlfP:#ߕlP lh*/"^v<)N^nJ%4%/iWVS[ӞcXܥoQ𔊷br[<l{m
f^Xgi;}yo^jM~Oaӽ}]g遳Ɂӓ=ɮt:5']m"J>4؃Oj3:sѼq4sۼ\aWq M̑Z
EЌ
ZT$ޝf 9$\jټxa<#В%h/KH{	IDnjayb#xVq	l^/_.h"Kzc2OI'ǻFRvkfSg
rzbIE6E!ШKi]l)QZ,"sڔ<b ۍb
ӻ{L
=%nQۈH*R=la
S V8T='MLwjFL̀ueKQvFӳ*0.fNn_ќcit&98ψ7W|*ޅI)3-'C%lA̶|yv/?uf&fo?h/HlLНLI]0]n
Ud;|j
Д*fcC)XQf=O. ܀EضbƆbN,v^`wy}Å!;nIߔy*
ޒ/x_;2v
ޣxoL$YZԗ$2x.|@!M$Zi)p+QQɕڼ/+X~Q+^iSL'R"F{8[[DwL30M[IS)y11:xrmg٦I'<}G24{mAe]U>AnVg'҅</gL`k	HӖbӽZc
VI59?.ly#55q >M_}atWⱢ'G'f]Z6!-Y2^nn@ ZDbK]"7
~^ҞUdi'W=.?yȘ_u@bI'0!sݶt/ggso][|	yq!;)Ɏ-KV4|y{LY]0!b*k$x А,bBη[0}A261G\6[!~rGi2+#ɻ_xÁ=,BWݓ䆅|(/#~DfiÓJ,;N^ۺ\U7]kC~Tc>͕gڀV9pCW@^k([_?H;w Um}WyoDVy>^Ef9Zj-/֏sR>-._CL}_k|'Mp-5ѕFZ|#ju}:QFdiϯ|heB
qoaW[(H}7!.Q_hG˫x辋8Apjn`G[/fn0Rj/ܤga;rx=a*Ve>w8)tS觍Ӵr~y	$)0DdS>`c־o6aYJ ym|Uw=zt>~B>Q6
~jbA1izA*ټS-2Wƣ&7 S~pvtVb
{pps23吝s.aJ5	B:/`#<"QL4LdKLMAUW6e}W?kۢ[Kas^Q%Uw"WxRz׿|}?;PKҦ%X    PK  ]W            D   ch/qos/logback/core/model/processor/StatusListenerModelHandler.classWWIk䀣:1r$JZ'C1$B$Bj@k]ewMߏ4I;&mW\>hmsZ;Xs{ѿwo CB
*"hf8/nִf4}>.Enfˎs׵x֬ɝ3$S A/lA-
b*Z2oG߸y7oSA1!ǱiĦNm>;uX@ȋE-kj\m\rbK\.˰];Зr1"w3lR#1t"Sàqo\-u{a͑WA$1RV3;VfYpsCGj3tz:HR$-$9k;o8Z u242
UF6C.q'䊟C-DBvh|(H)Y)ag)U4LmGT<Egh?T҉ sfdqՉ͜	~C!&Rh.JFXx
P$4"K͉::N}iR6
TSndQ1wjLO0<"QMO]
xAÁ@ec[Qs*>'Zh]Az섊ϋ߽s5oJ4)RRQJ
y:b"*y+WR-
zRYsYqP	L(9ymH?vt̊Ce:isgЦJ,0*
yc.&"D]vWU.׷W(3OxҖIKzmV>4/D]%Ex154+[RNi%{ZvX7U|K0oR'Cxeh/Tf3!#򶮙cw2bJD	;"T'wҷuWwOyM]w [,^Sa˓ZЍs5'7Ko`P ~l.IT߅;
'D:mlHaODvњt.&;c|so˸(Q,[tm^UnްehA*Wu!6nW2J֕+9Zy{%Fq}IsMnT3l%YMEw8]U
xSw<0E{NS.ַb_fp@޶+\sb	*@LIbP3qX䧬*]ne{RqՄZr!?a/thFv|G:X&t
J]h_&|sbImߕk /{RMX|^˾ !135ha " G*	z;B΍ {$Z[yM~ 9lKoS}}D_F[&*dDJw"\E/I㽙xF/1ⱛ8NWhMae(m7l2B-ULv*N_T/	HDO'"B?Hfp@ă"~Az;E
]Ш]ĥ#X#G(RX}9IZ?!7d/1zoo0{DE_KA#?l~BaڮZ>"02+*JH3E$}MMv
=bL|ٯNPVQ O@~.	$nNOӴfj|PnIZt(EBODBWĠo\Yk1Ym_Q-66w$k
DhPKI~    PK  ]W            ?   ch/qos/logback/core/model/processor/TimestampModelHandler.classW[w<<"@p-`s7Bq4mGckhFA[zͥ6OyCJMsWRdbceo}9?;ka e"N#N|3^0W\+7Qq=hUOgH
tw}Wzƒ_W`Ld
Lt8}n]Fʮ7+0\|k9ҍ-=k#!LI\xw}.{?WR
aI\<Pn_^C۷ٍ&77Y
{S&AB/ێ,e(4|.yؾ("-iF1aa@ƮVT%1k[s'l%/J7OC{풡=VZ7<J&kxYPZe4p7lW\7vq}W"Zm(,;Yᒾ~M&3oğ
t31Av]8N83O#Kv]w4!3pİ>ͅHɺcN31_QNlmZ.UP*[_Om~n%ǨutѮ)'hHR8&Lo
`^a~0%nMBR4&dw4h`f^N:`qEWzq`6y2X	ʸn[xprr!܋
ҭ>\`Q%ݱKqU$0@FVc
2Iu)$W.E%B?"rzCF~H
Q1חzEvJa,plo]=o/T%m6Iͦb~{T#a]fnrӏ^`fJVc!ώ/^xvʝmIͩ1h%'Y}>z}Of0vaEfT+|(m4A*oQR[W8/evEQ?2m&ϮY>9@;(=n7
#]=Zbk Plvc\ZPe3ժn\vT`|аo\Z$"x֖VLǖN&mU_PyfUIQ:[&ǂ`X88@W__q!lϛr+seIWrK_ܐZ_1n6	ocw] J¸&GPi|q%7x7=sZ*92WK%{Aec ģ:|=
us}2HOb܌eBEP-kĿ:*;ȗ
O/bW)Eg ]L/m<lwW\D(/'xo8.p 8{(.6;H屑l1{cqj1}]Ů"fR1U4
'k?t4
i2 8]8GЇ~c}zOSLd`#dQ1	|ȷelփkѣW@~ #R-z?p7ď8JSw861ײ<u?OOc~F]e'~]k`]Ɠwoͥ|#7ghׯKH9]ğ.CPK0g  ^  PK  ]W            F   ch/qos/logback/core/model/processor/conditional/ElseModelHandler.classVQSU.$YAtKm%

V{!lv
C3ﾋԩ3N}ٟg7[@B̰ss97 @K
"21RʷW+j9BZ0۱Tẖ%njprԽ9t!oc:[Z{erC)85gɠ .\-s-ǻL8#<C1m!*XxRVBdkCpQƛH1<\1<G7w]n6hxtDIl.m0p+Q@ʴr=nz	вWd158z#CW;Tm[h<wed0paGx9jDY2m>fc$LʸFb,Kǹ{%k1%㦟^M{9ɄbV:2H,Z*76P:]\	,KE= J$k>Zvze3h*u0@eYٶxB4w)}I=^wLJ3-
e4VBc'965~:ӆ/	3L;F0$};QgEMVVU+gPgHTaXϛvhOX%bQd]k&zβ<s"7ŞM\hi-ۖ'%xOoG1|C|)aӟ_QUEz9TsUWiĲfWRQ=QeNڪؼ
HK%l1\nJeVWEo!zG93}Z=i6Zx>.a1l5@++wzA 2Nd>3jE{2qd$ !@gd9C?7泺ՉӑTw$x*x\<;$FH|c?p;ްQ	}AI":71J&"3CQ8?L,>
W,(%$eES:+f/ƨ/ѷZxٽ 鷃d>.I	z~=cpHPKArm    PK  ]W            K   ch/qos/logback/core/model/processor/conditional/IfModelHandler$Branch.classTmOP~ѭy_(E@/nfquصv|'	$B4>-ss{o DE!g֍onͷzhUa<ztV`ަS^c`ꈡ!Qxruk=Eבݹb)ת :t0juĐPY
HчC̴]G0d}~
;5c/̀bP&f;vSl1g.d/8Jg9ŋ@?,
3홅l9F#!q\&|lvDRSh9b٨KَO]eYZd
!cm"#N <zP%Qɖ-vk;ML-i%bÒ_Ȳɖ*6^pOfVf2"3@׌"1Ә$m&G;	W,;
ci."!Pz:EG.3YbpZ%I+ %{@Sc'9{rP)q)3IMސHYDÑb_v#(Rdqi=mu7hhuM&c&Bp	sXX	PK阓    PK  ]W            D   ch/qos/logback/core/model/processor/conditional/IfModelHandler.classXW~N.;2@X.%RnɆd-"@S X$dv2ffS*kV[*
mj	[_?9Mٙs9}Ol?TsMNghwl?

b*lbqrv=G7|]f,۫@liA@3H;0;jX$6tΙؚN=]@1ȓX;㔄/hcKLr+p5b.GW`lvj
XXeCc
;+ 9hڹd2i]H:v2I|?jA%6]״SK*}5Z.y-6-JgG
lFR|'5=Lk~:[,
Zܯ`0G?0<3MJ^
ZK\DE؄*RhXsCFiFwad@F=*ZP>aQe
w+E{Tl{6W4,Wu\/ScxaOYJ
S.<D?<_"|L\-͇4J
6"kvy-`ڣb/цeaҵ%J`S6H!#@*+yyLbX"xp^`^O|̴t8v@焳SeX3fK!7)pG!uH8
a=
L+gxqEZ!\$	&9'CY.8G)Qyy؝SIr)xɍn]}~`f{@GNbP<%`X4`Oy@Cv3
Kt=c:2Bl!@UC,^1qnrTLIO,@-<_|8^Zd1UR960j.pXj0Jay#,L ^җ!y,1\*=7>C*ćn՗v4z6N^YUEi
옽$,Oxz'4ϖz~\'5LteL3tg{tepNH6'U3A׶V`d-NG׬KU+{CepřP>>鼙9}bV\՝xق::+ƴ) \$ym45I|@n>'u0<	iƺ=GS*XX{glZل
:fC|6"[=R̫wՊn'+nLme<?(1eaA0xZO)kBEʆ:NDvXK!镤TO+efMɻtzHr݆tP[l_(Mg~in䝜_æ8x>ے)qZ^so00o'li}D
T0etBM U3,rN1˶6+7Qg((_S",Zh=}܈4c׈ ?5{g,Ak5{jl.Eoq3VRs@ߦUQ-A}ħ8o}_XL^B,Ⳛk
j|_WLk>"dcRVy|x"X-/@"u,~#	<6@*|sِRA jq$!%}_+BT%wR@%ԥ+qo*ϱԫGRtomUͭ7KxZl+XKW/@}l$+80[8z̶cg}q.rIKZ	cMll~
BqV2-',K%\)caFx
Kg#-44t
Z՝XF{UT``	x1bu #80{pG8GcxYZ/8^2N*3^E~Kη(ɟ(IIc.u|<%&cĒk/*[6r!.\|:6'>~@Oo)7@Y_SWV&P8)Ѷ괂6֑dxL*4SB+xY2|H_}
jH̉00<dF60a;4yewUQRy)U)^%T/E:תPakth*:EC_IᏻǟvPKM	    PK  ]W            F   ch/qos/logback/core/model/processor/conditional/ThenModelHandler.classVSG~B4
4mQy*T(,/AZkB$w׻
Hg~ر3QgN	B&}y_U
08y;?:w
מ
C?s"J"6q[Q"`BQs/W4C|\9`
-c=)$fvq|/Jx^v$JQ`It☁&R80մdABrEY5鬤峥@>ch~Ў.ɻxG%ԜH/X|KX\02/	wc
x(o(#{L4C;t-nigez$L|`C2-p+ 9gMgB?C"U34(c4Xs^ب8gb*f0x,V6oc{y1xAP.2O-r'=d;? l"CǦ!<QR6O6Ikkg+>6	2\Lwn-3dAJ&Ur	,7Ab0t.X.E׋4Z^\㡫̻;g 6,
C"o\hv4J!lqo=C7%e~HA#g<"Mg=HD,䚹&g7B)"i>Ao1kTJymJe2[fxhB*£3܍*}sF$Gu_>ȒHgH>uD"~9tĜbյ]P@%xe$C,	sQ;a@X~hURGq|ǺG`oJMC	U`ehp BpTց?l|T)fxu:PAHM4g8ӔpON5RU=?\Po
-#/Z-gRB0I
74K7q8Lk#/p]8A@&n}YaќZњ2$feg^ch6>RM8Wο<1:mFNұ?1Gұ0# {t6.K?àkJ8:6Py
ɶK
|_5z^	$ySX&'뵼]`QAB̷K_XpY[%IF5,w_ /߫+Z@!
c=^/zfpQ@_PK*w    PK  ]W            ,   ch/qos/logback/core/model/util/TagUtil.classTR@=aq Ydm! 
Q,VSOhf!=&=X~M&U,2UӷsϹ}M},^CJC@=2m;|KpCf]7u4Qn	àS6?dȝ]ӑ0h$PБ'k*pRAGZ5)2)tn%o@~%&7ܨTD`PD~V]kXI[~؊00!ưZN<t2wFpUe*dYg]a00~qLY
עMV^QN֖6yFd3.F_`Ы튭d39=B^_fQxSl\m7
9JrE}MVG,H.2P;-I*TYn
xPXks:池iTg'/wE"]2>3+oy"ܭV
gpAEo)JvBaq[s+O]0ؕBar(ձ0ň~u`ћALl7qLEF$6n'ΟB4{*uh2=S#8	{$.zIfTоXpHHvKEqC$DtZ8$#Z0,m hH+fKxePKM  H  PK  ]W            7   ch/qos/logback/core/net/AbstractSSLSocketAppender.classUmSF~@ߚM)2NjAhE0$WHtn/d&d_;鞬:N{{ϳۿ|RT1ÜZëW-f{>\.R5eӳqQj6[>Cฎ(2es4FVQT`qo4k/.O?3D6Nu.̠0X[%%	QpV9L2̞0Yk	ٞA"sz.!
:.<i.{w~\VqW21ZC{ㆂ*>-{Hqș(fX/|;yFYU`|`3ӝq7=nhƜޮ|bUdq.BVp ,_(<5,lޔh,JԾuV3iwz
*tFZ_>{\5&2zԋ*~ KoGg!;nsKו\j)qFk-iÄVbIP,5o&_4?.U֋y+o[VH$4ߞǐ{D u
00yr]K|j1էzqpX{t%QȨ^˷#i	PG1!Ӝ˄|hFR-ifR? {E!viR5Zm%|iK#IU"R5T(\$8&FC4}7n>giqip{{vfwp
re/y}E7B𻘧6Feu@
r(NhahlΤq	gǲt?1WȕSh*XL=_5J*NQVy1}H0ֱGbPوpT'Hhb+bn"?C$G/W|˕ IE4	:-'PKr  	  PK  ]W            6   ch/qos/logback/core/net/AbstractSocketAppender$1.classRn1l]ҥ@_m-8!UHTudۭl7	^C!NKfGhb50{mVAQ&.ʭ3\-K`aa۝.y3FsHC~³A2?B	Ceei>|mjB+%#pD*g#\bX8ëR</%Õi;[1Tu绅{\qSx)2<R{c7iBsÏ
TX1zl|VSQw(-`B~:n5uڒ<[+-nb5@݂_.ڷ:sL
i$=w|C
Zt)xt&Q@jHz|KtjK	.I|e@>R)?H7C˸&y7 M|,0PK5!!  c  PK  ]W            4   ch/qos/logback/core/net/AbstractSocketAppender.classZ{|T~dˉ An2@d	T 	rAPI22fpVVZ
^[Z]knݶ[no֭|ߜLfh9绽{y
/3 .j|Íñ`xhGƐe7n[qkg p(BxU 
k
[ۊ(p
E,|[bvz¾]X!vN漳r0\_JLs-LJ)41@:,ȵ4nmCEKP9JsIv}]zpF-_8"\fr
AYXhbtFO&ޙ^ϊح)꽁+W=&S=VwF;4
'QpҺpܝf<Yi(
zloԶ&L
#jocj챣Ps^mb
.rF,絷a~loȎډ+&v)vZLEGaBvF&)ʢHض.*tZTw&tXѰ;sᥜ
xr{S3!msNPo81w$YVL~Db [P	607=H)궇!A6b&z+SvrbȲߠɯu&k	bչ'&

)U(j
;H*dvYAfxnmÓ(z/9k>&jr/\XBX
mr#f&
'ˊvUe":)U131
a6
mUѱ.%q+fF<^@/#t~mn"΄r|p`I}s+'ࣵjk;k&Qv`KR5p 7~	+rƆr|8h6NlMU#`[hs<<hww3\.:y(""q~ŋlj	1x!	¼y5Y}bzMe*=OO3D'>ogUVMG,8js&>/$L6-;BJfWGggGO{k7'W$5#UTt&j)|&cTPeoxq{0+9;KUpZ1ɤ#467swx+Ka6;2i y=T:tWT}6wfIeۛ@~Z5ϩBaa,=p<_kÖ_M;]t(`tk욇*JebnW2nP^eUݧbƞ˼L,dR.kx?6+34dy}1h ѝF,l	'
m[Ϭ[_ĿGLm t67H'V[#LfM~,5NYNC';nG6ay+NnCG&~_ެZWa
{ -o;M'׿S1k,R	*aVG\ŎO?mjrX({_dݮXwxrBelҹyW0R(.6.*'M[QM1GkÍ:X\VeuJ0)3\L	
Ey=	4nZLo0p>F`8:B=Y2ŐJSJc{L^fx&(S4T+2ÐjSf*=gBhPJel;EZsu<W݃Ƞ,2הyr8Tr}[4z\]=~u[&#}u.>oKd!JU<!5Y)WrJ
rkr8sF3s6kY>U&u"QO!>I,5d)S63o$hg/C.8ջ׵uؽHUPLe򙝜Y>[{;7hklZ8X{'glkkӱ#8)9ھwG2$oMjUJ{C!oSfRzۛ,>SuʣZ~R3!>2`E{_0Wƶ鲇LKmNG$KZI
}*4X];hbbaEgD-&(	bV^Ex+iY[51J>C-_u/:mYΈPo2,a1'8sUgQеJEe%xTW}]YbtXZhvOum`FʐKA^o#e˲]-No\L3rVԘkͩ/Ѱ~Uevgw'%1*MwEܚȼIUsn3	%MɻX62U0˼fu,;gsfK[UMmMN6xU qG},KKg+fwY*_*׆ö?V"P
aSwЪ1݃H=B&ܑE{HScR%Ogzlɰ=\(5v;~%r:nu++ۘlX9hrC Rni&w%Xpp=`y4%^g~K`}a}A]73FD^qf#)rL'9jZО.|y0$s&& `3-T	6+|h偵Eyvō |abRHƝILɮ<yUBL,Y~?il71[VW&}1;R˨>~O<ނ{>_HMCF\ݩX
=.[#GZaK9
zaUze](m|,v~%N.䲌3Wr6xߪsS<SzUܫzt}cg*i;OySKǹYR>xԍYHly،Bq1SwbK+]2CA8܋rMp/^Cp+\yUa"~8U({m/w_^pF^5Ts880m'}}G1K7O
9e[֎ة(.NǐGB>Q#!{p4lo-\q?rn%!>]Z!bSmi("F\X}~buThǍM4ísEwwr=
D+8p$eaT~뎩tj7	Iq6S6Z'.~ف>RSk+ᨙ{OpJxX*!l.R0eQϥa~OcRBr,\|K(Kdg=u4SxlatAyN2ɣ(Tm(e+hJW|$GD=siX)ͻ[6R-+a&٬ݒ^GթXǺaQi	-ے()Cxw*ɆNE-~/%!q3#H'CI|S')@j9]y|+.(A{7oAJӄގ~BQ
m,#WE%e\oN:/2wy\HEK˸پ~x;-k),$.fxYt+5>ا[M7o\m9ʲ*y<G JJy1|_|+|"Bzڷegm^PTAu[
5|ŏjPQ9_tBv?
7;*],4;	D8hqKrWDmkS?w-ծQxVg/ ߣxk>y!ԝtǚ5:,LyBE@WʀsNi</t<@M6Y̘0*EQ)ml?LQM.5v,=50QCCOo2?9%sD.F	˕dTᤀkXϊ_,%4+$iї!d.׽eܐXAַPMU5EW")3Mk?O6a-$+oU
3SLF$bhZ3Ӣ$]mTK*B\-,}މM
!T:T7<+%)9׉`uA%Y;Tl)@R$iJIҤ1$o3꟦,Z]IsP\m脤yv~NSV^Bx$BxQ'N]gK zuRd:?-&W˥~Hlj+VgN)Vg[V%C@H+)I%8WUD$MZYT%-̚4a&S"gf3;u6jcf6&vfbkeO.fv+lˣٽDsnfI2{Mn.f65<]W̩ٚ3Ifͭٺlfo0[Wʩٺlrk&<.Σ"Ǒ}܈D*? 7A2y+oA]?ϻW??'m!h> R<,bPKbRm  +  PK  ]W            6   ch/qos/logback/core/net/AutoFlushingObjectWriter.classR]OA=VB"Uݢ&F&HҤFuvlgQ~??xgH`;s?~H i eb3`jsO2?_>cH	\IUo9=-v[wx"N<b`7zG([VW&2a~n$eCEb(i-Jt{\n0wryQ&J?}
ij.MK$
&~u^K3°rgT,zɐZ9Ceipmjm7WaJ={,C1_|xW"2̞5Pu0-vuEz|WŋDTn 	K
>bB$$ݏ&hRMNaث}L>'69 e)0Q&T2Ӊ
L2)fgń; ,,YTЪrq%
)Ӵ
^%)Ի7Sd?#u'ڔsG5TӚ1̐v-60Jc	PKrW  9  PK  ]W            L   ch/qos/logback/core/net/DefaultSocketConnector$ConsoleExceptionHandler.classS]kA=7MI\mMUGjZ
A!RO&c;fN4,}Pnbե
20c9̜~خE(;DJ:B6=!,4
ʨx8/xCԈQv̤0;6؋q=+1jUqK}\DP?C*2,i5.: xk !icgGgrmklYb#|"ձtF*phV^$&vK6jw<DܩV/bֳf
[쿜:RC\nwO`BEg#sjώc::bTByW%k>a"/8ۑH~-_^XG_̣T*WG⸸1;{)k:\ݟp
k	qcF~$'x۟q7?V=<L2)nf7q+-LNƾ,&gu&*?PK2$    PK  ]W            4   ch/qos/logback/core/net/DefaultSocketConnector.classV]WW7(Jhk+E&&Zb\atB_?૮%uVFGW7CEwΜϾso? b#S/8¼Uz)yTBdeY$k%	Vq$gm'|~t.6H2\x2\WB*<Y'T ҔfB
ʄv+
]]ϱ܅̍GL#Вk'n{#`X,}+>_|b23$R;uAt%Q] ݅-rM|KFWk'75j$8lF7`ve2.U|_{:J3q`97_Y
eYn28aउ/-Zݕˡi󕉯q:
)XTKߘ8	ڲR
4eGH&
W O Lm+j"Kݸ\K%eIAi
];сț"R#mYvM5h:]Ԡgd[,bEtmi;$dA1"m6621d9pm$N3BN{e)`zɼgylso.<EN4-mPܦ:EmˉBY_JdHQ٦LvL,EkI0𐄷xV-p`cW؞\-4#(v՝۱Ķk_վ[6ڭFBPq
;wYdVWeR ӎ]D`w[?|բG&c8#O>mwvCe
+r$G$x0 3XJӳZ,vDIrIL2*zV1O9Ks$9NgC_SSУB+|PaC5[__|k%[4}HyQMQbGڙu%/ߌbAE+i󷇿78[xEΧGJH0&3,ܢ@nkfCc8qéq܋G(EQrÊtߣxg
7Vɍ? ~oW1V.ޣPCԄbeV".e]XQhJ'[U@ź'jHh􃇥FX[\byMT눮)ViTB-/ڿgccm,'ii
PKy5X,  Q  PK  ]W            7   ch/qos/logback/core/net/HardenedObjectInputStream.classV[WWNL- *7B{j`V鐌dtdhoǾCm-ֺjԇ>t;]յpgo{^|^5*jQ'6E;rb꒞tٜ3dtmFװxQB!J2~ˡ
t'ӑ+v6bSZr$ig;cZ&[zG^~0=#%wÌ2Z:~j	^]FhX{5m8Te#ڌxل<]FS^4	|gR)+ljth-3ڼ&u()}Iuц
*6a@
EcZ@MG/FKk:?LTEū*А՝%m/8JH>:Tf{4Yۦcm?a.XR=(Ӻ#@daI=*vb
#;^"4UG\si=0d
Ї}[XZI㺞
1z]AqYn&(*^] 	yuTA&.gmsN/۵
*%tc*^G?%b'ccGFY窑5#
8&ZXAu7L鐊jFslBc1nVr^PpR),Ua*ZvDwܫyVSq	?P1!Y~%Y	,]RӇŭ1miN.êٲ. ɱc11HByȆ$43{VS-vtl"FQ;EջZC2~;ET↥f̘6eRILh,2Ba6X;/ǰx$MnhGf]
2Ŷ)EtQ
*O~N*Ii|6k{)v5JGi~XcXI{6J_f;sB;g*X~vkKVTwT㰙jRr־s9&¼ڹLRNr2뒖-K<*8Ov  G0.p$d_	oA|ʕ'OUu(\"Ӕ܃](X1q~Ěm{uۣo}k`W~]"7E,z Aߝajajɕ8<<PfiqQO d,@Oh]+wݘ%B~uy͂U"Vn+1 }#Oia#!JqKqgQ͗H$%_I:9޶o!vOJ}UB0(7fWT	KF$ YX([?4kX6:mY[sú[ ärX
#0*~N)~&,S|A	˸z20Yfjbr#n
{XOz1C|T&	~e{yc^KMS-%19TaCfLxgG'joCwRMYVB<k3|`
PK2e:  z  PK  ]W            0   ch/qos/logback/core/net/LoginAuthenticator.classQJ1=7~v("|LװMM4o)X

~%&"j}0d&sΙ}X"Ƒ!Xn6ӆ=&F(M9RcZ=Y@N4Ram(ͩ*Ps-YTg4b2F:"J6wA,	6%(cu3K=>	ҧƪ)BnkD>δpa0m"&!RߚҚ,JRuuτ0JCaNm;UJN9]vzz=L>%筭 m튵c
SXǂlʰ!!R_u[rWg>*_<$_M8!6'PKHh    PK  ]W            *   ch/qos/logback/core/net/ObjectWriter.class;o>sv&FblT}̒"vFĲDļt#k9HAT]Z3˵"9$3?A*3_.T_Zꖙ4J^=z6FFf`:
gX4sL PK؏f      PK  ]W            1   ch/qos/logback/core/net/ObjectWriterFactory.classRN@}B\L!)
@Qqo=TEXE@1dx.W)R(ĬPDvfw{gl(`AIsSx^s.C(}Q2_	[^>=NPw;"K/iSQwP~+#c.]FXKS(?!,n#՞%i74uą9KV%ط	;yPl3ImH#ՖDx,be`TBzFifRe=BA&{72`0o?eu8/inזy^<@vؾǞO~~gR\[ Xd{BVsԒVatG3͌6@m9"U>rPKI  1  PK  ]W            *   ch/qos/logback/core/net/QueueFactory.classQ]kA=7fMiTPǂAVER
>NC::ngZw|k}*(ww{Ι˫q
1&&P#c)2i`_+Gu5G_Ę$&L&Tn/
mHYF	b$A[a|a~$|8jV;k7ryqk&0
t-#id#c0r{<yh?^dI%2anchoV:_p&wz㠻鱍BM4n_uS4W8;8O (g8Jp	
<g=,pWZw_._~xJJ4{r=3},2ou<ºARGxXZzǭZPK	O8    PK  ]W            =   ch/qos/logback/core/net/SMTPAppenderBase$SenderRunnable.classnA`p[ⷭ-l[714K4Jp,SغŤw>OGW&>e<XZM3=s̜ vHQ0ǰct׎YN4qfs_7j{=n{<W˾m-3]m3հ>JIđ!)2dHknw#nu״M5%#
A6N4_.z?%%#cK3ٰĕŕʸ	1$=ZLS(4cIxN͎}:nI\<܇Xъ&tմA(L1tX7)FJ.{Ioip[3}wvMwcS¿	hq6Lj
YOgG-!?mV,8O&*w7"z-u	IS](h@:pN!Qԍ!1usyuk]3Fz)#OG,rJ`4RGkEԑ>M'=OFoLQrBQ`TQQxoX"'[3җ UُQN68
,h
PK^>\  G  PK  ]W            .   ch/qos/logback/core/net/SMTPAppenderBase.class[	`6d3geCADCL I A7	Y	ZJKjZ-ڢpճ-Z[kkֶ}}ﵵx?,
ٙ_D@} 49Usi<YonԄ	?
X줟|ThPI36X+8Fb{SA匵%RLQSe״36Jm	vMJDb6//$ܤQ+ڱزYVb%VҠ1L.	m
ڑhM}"I~MdItU!۶Ўx-F4앑:2Ѥ$&+l	rge4\Hl^0i2T{VBELL5&v(a$&6DI3d sI3,	"Hh%MT
pƊmVglmAԼ$iC;1ϤSPrG,ܕV h|LK{tbkX7bv3]WLLkږ:] .4Ldx+HZvc,`4K5NfK"p"xO-60
Ȝ5燗RgI|V"O4{c7e*	4DjvN+.38v
8{Ij'oq3o΄䭩i3i
e2\]-y/s7isB{o$,MĻW%=VXbiR:v<oCX@Z V۪
X,n6W&]DࡎFa.ӘF2c,Naݡ-VcV2)geR'mr$Mg#&]"ahJrIfaH"vWS2MqАcҥ|iu$۠^Ҷ<~Y
n͖O	EmmSzBP5Laet9R+5KVzo96-n(GF{iAWи=l)'࣢2=ؖ1ϳ-%}Lr9J]	3z锼\XfE{ĜG;l=lI7I(n{n56u/'b[Uw%;MO#yz`D1߃({>7(&x_l]6y(YZJ.MCi	Yyh{nKdI_/#Dcw#7`cЋ|Bs|s$Vkw!D'Lڧ	%?'EXO1M?P1e1S NZL:LG+"ֶmmͭ: ϘLbg8nw:O%v<ebdQ.e;E "Y^L_ўv"K{q;G($co2nI_WJF _G#G a7LzU1:e4^^om^m-R#!Hlm(k8^I;
I?!X] LM`"VK$$lKX~äOL4$my+rOG<ovEɬl@Xޢ_Ԙ,О&M[[AiVao'x<jmiZ\WJA3&'iƐw>-107nq,Iě',Ja8jiPvuo̵w诂ߘ"ވxAeISDOX]JЇB;3p(Rۭp/j%F+B^F*}\hpS	E!;e<<ge&5=1US夓b4'Sbӓl

]	ku k`0rQnZB-XH'4G<FR+st[-(x9r9O0y/1$'q;tm}RS9
o/uܴ)QDe3Lr
'pە˩#Hْ[Eu\Q!

(ّJܛib[^ ];Qk&)).d2Ke\nAM/sCڳid5ľM^*#Ly7sFYvb
^	#u0ә0!qj[Mn5PPa)䍔
:>Iw(J|+Vvrni^1̈́D0	.	ql.7r
Ky3w1QR1KQ.Bz;GM
3T~^1R9x``!g&׉g8*+.3rY"ߙ)fx#YvFb:Ŵlh_m5Q>%WvSk$S;MalrMuo~a<?7W%=Pǡdڡv&[M?	nNS]1v&ɟ[&JFzwc==&+	"6;M4Z3oH95m5AɼHRXŌRm
tXI[gX @Էv K
r;jMÏ6j[~SCOL"Vv\;%I8\ǘ&?OW1$;zSUT~> "Nς*|9da12gI]Y6iDmHzCQqL/*e"
*o(s|eGCtxƐg^1
Go]r}4 4V8ң}TowEj)J2(s*,5Z"Im
Ӎ*ӁjEcj̣^,~3+YSa.o12R`]J2=-(N"?ߛ\
iPRLnawu!΋5KX܎tF9?'I5nM1/bNRg;Y$ii$1Kmi?$CR9Ol햊 ]4(H* :,JEOiwT>AfJQE2ʤ4^amk~0v|lTV)RUhbUf`-&8k5T)YhSQcFpۊ*R5^USMT>x	PW(Mu$E7pTpl\,ԟiIcsM56V߶uSKckk90T{F6# wW`a[cݢ:9!v#Ǫpe_Ry5wZ?x^6`fd+z۱@vy)mߵDDA%]%~*fPRȞvR2oi	'Er^~K+_U\&WDڣILw67`[_#g69=:iR7D1+=4k?A+۫-ɂX| ۑT"[缈HNZU+Ĥܹ٠5pvG^lUn?M0tz9Ëdo}Gp
n`hFƑc8_qvhՅ]yo (A\i;W
#ѝ$!ߕa3u4K1kUqM:cέE?{QׄtVX33tӽQ7e'',
K)i:- se$Sw:5D97mugSsE+Yr#+_oV`Ƿ#ecy0c</8cb Fd"Go)Ո񑠜;yN-c"d9Un}mq#ŉQډVtvTs@i=jIwӷE2XHƋjoF{v;
]~`gnI^5da$;2"l*i
d'=KK'}(īc.HAIr $o[Sbagg.lz}^5ޛ[߆%&YpbI(3b1PNzZ,+ޑ,VOK1oFopbT;OҴ`&2$msv0ӜzkwDYn
px{Q:q8X=˴7w襁dtkfzXIF@m֤X
;^(S䛖M&b<ĆxoCH6Ou]^-pݩupN:uB&5S@n'
'$/RG%fRz%n\ki$5rݗP\Erwv:z,Zɩch6hE[rO)
@l+X27s?sOYrC}[\ѱ;}I>P':5ƫ)TF^ó>$ȼF>yKtN{[_osd}=:ӽH>}Az^瓏Ubߙz'<7Вss:X>L<}
Lta K$8 qA	}4)XGSg&룹`}T>U@"35%v5`мh%ͦUtGuΦc&ܮtU5j652lɷinx/6e/Q0m+hF1징}ԺJvn1 '}!w	u>M]57	TN۠/i*]_A#TKR̠y55T|1<V\g:5iRJàGIhFt=tnX62u'PZN>PكhEo2p
PGF-GrOw*=NFwGGhzy¿~:Fd˟(LgxLUβ/ª3KҒ^N.nK@麟3@gQ=L;`Wӣ蓴?ppPWuj!xxEԙjxdpޣ
9=jޱouB>џ@!~0}SQAb1ӛB1+Gj*
鏘w+b?D3U@<dj럦Flk!Q\VQbш07Gur?ŵF&q|Ly>gh5O}ft%4Q{ Oы_ʣΗ^ܾMHѥ68?~>,^)}ޤ//)%
+~o{-8m#VgzŪp5MPKT# Wr~΁m*ZU L_UM[Tց<
4ih̀<;EkQ!<FA~CgЛ]*Zl9q?+}>-QWþzStKOZr麇D0]XWt%4(WqG}{D4';|F?h,} 8j&<\Dx%<Ғ)cd:I[~e/(xąuU}-|:Oc%<ߥU>#r(ã>Oo[֙q
M+|ȇ
_w@}c|LEŵx	@Q*9P(ZcVqWⵊp'*;ď\3kNY@
@!C:Y
Dddj@w.B8]BN;x],ʹfTLFT*B5`4KiEzH6^fj6H?P`VA@4%4:'lO^6>)Ƨ׫^1>L
)h0m]X!{ull{
9ңz )
H
-b8`,`:9 9 ҌaV(kf9qbV5cD'(?H)"OG8U'q;Q&CE}P$޲cUM('ƫ*|pbڨ0ic`bgXGT:<W*-(9J*JF=1~ص%Gx$Z?xFUũϷ{KW	u;w_miE!~I(B'CcfI~Qv_CcR~~|lV?X* 
)?VTW7:Vo,X~-DHgR
U2i"Kf
:Wy5-VjEx>ymv>//[9Lr==zQ9Fo6'l_l&;/|O+^;q߀7MVo;oӚl7:ե"|DmN^#)MUv)s1Moi*bP2ZW%ŏH(2KLB1a|WIeS|
sNlؚJ;!
n]?7f'Fe/68ӿ'eO<=b.ԾOg&F~'T yj+S Irp\ߵ{(y	8pznZoM A9YE iB.}ڞ'!@?
]-q7B_<^21sO%kCThKA
xozMʅ@xpa<$!rJOA=+UJ@+UyJz#ZGQVtnDzY.e;<NoNԜJ{jd ^d璁VCӶ&Ad܀Ӆf&ss4Q0DչIessџ=/Zoչ%OEҥS~(ౕW-3үJfa<Fh1fxR
$ 5]PЙd4Q\nI4^݆:Hez3M|J>|ԳKg[ʁܲYjSp'LdWTW=U5G+%Lglf:4PAY:%f;t'~N֪UsSԝX%zʑjpIrS*Ԣ!*]
5%WcOC~w>."r97ȫ{\ïr<Н7ޮm5#~Ϩp;wTy8gc*D\d/"x#x.cAv_^d?l].!"'\p=C9okri{C?ir\j>mr\dǞ ;3}ޛu ;@?3/+G\+#x`':<՗Ol5-'"<n4FܧX6PBgo'uҡ'qw:bSOп}NNn!}B^ow PK&U  M  PK  ]W            >   ch/qos/logback/core/net/SocketConnector$ExceptionHandler.classOJA=Wˢ XfY*$Q]b0fZ =TtWŽ|~ E=gIfe8lg<e7Oy+als,qBWk
3_픨/+Qn=	W#SÿP-%:#{ U֌SK%#3	86%NjA 4QiS(u7BVPs+oPKX"   i  PK  ]W            -   ch/qos/logback/core/net/SocketConnector.classR]OA=S.U*?)~&>IIV|}:ufg
+_"hJb/νs{ӳ Ƴ:*X4pUM,Jx(aӑ>Xu}N P2MV;@~3^EfMG_,
Qh')ʝG}RajO>5Y,;k#G i~fj6_S^w͓uܖzy2C2++ZsQvDYqbnm׉Еr{%E<M~?m\;3A26玼so6wJo'E^^]ϺP
>E4vx2ͱ4V fT/"3̀
4U"^! ~XAZXmL hX/}ӻGxS<UPKǹ  k  PK  ]W            0   ch/qos/logback/core/net/SyslogAppenderBase.classY	|Wy?]3Z%{c'Fr8	c"ɲdR1IkfYۂ6!@b 0cicpq9zQzp%M[BK6J8Oow}{'ŋ_pآJ`cjud35ёr\Mc{i^5UPA*`T55ei6=Knw{[ۆDTd[~GrXzhXQCD6Ԛ)DL254
Q3f
c	#kcc*VN㖱pcϘ4;t,WkXNC~W.d6$_a=PRYkmaq:c=og6*Z&lXBƴ5j~i`]kR|5\aZyk՗r>EIv^ZswʋE5l6s<m/e{P]uw+,?IcwFG-7y+
vJ4Nc\P
܌+إd\	'Ɍ-Pt
&	)?K 6-Tu	 ٣^oJyBm4mMVq[ ӆky4i$LO
s>x~穀 XE8lڰ( (-W!ڣIs$kuJ(TIMXs8d)#;Kr&
9暓ll7gYw*J9m|#Kiv)REp5tz_aa$exqU #R2/YYF1&PrJ S0!bu=NH^;W}#xΊq0WR=˅[i9zR)LpzQoyRǍW_7[TI%Gۆ^f4ƥjިMZ"]'E?Zᆅ:/6HL'NJpf@Ûe8xx%uTA]o-d+1M{TށwRbczA*TnnLRRX\ţޮDA958p@9<W8Q'8}pRŇ%~gH?FbC*>M$J"O}w

mI{|dO63IuŷlH_b&Wq!w7BHT񥐾QŗC&_zV-l3]XnҲg_G5+}Y0u^\Z6e.x2`Fʴe Hg+t,&tqߟz^;ΘrҖ>Of73\8CB5Q T,OH;S|;|<&̩~g\bXQ0pH8ׄb,$҄bHt1M&'cwc#n}23f~%D7.vvMmMXrRfvt3_r~}J[tYMO{	|Buj·&C!n/:g˫鈓Kk̄6ջ;50FJ+yMKP9a1.Nsd|exUY0$Q:yd%)l_S?RDZ lwRb0'aXIut·5{ܞ¹pWa5TJ:y.̩,u/OؼԊ~}`(U<_*ג-{w-4螊UrHɹ)k_FyBj)s,
̩;iOj4в;*^
eSΜo14͆9paFZov[*VVEe8/,d_!ˀo'l&m(T8Mub]DW)baа'	BEOGs]\XVYwT璕2VX~tRȢfhS-"ɚgy$pekX-T`qF>{"X?|{UKlYw}|_C9<|ߝ/lW؋W>芪h8~5~HUv#yo_U-?7,BW~+.G[.!
hh^v;Nc}t~t;r"nfudw
]^9?YIDfσ΢AsKh<+xC&.$y[ycXv;C=6w@`WA+nlnB7N9cO>1x%:	w#Џ18Ԓ-;Z;#xOnZ9C`ǋ:fmx?Կ ],{hVO(H*J:2#1>Jg?	 S+G9[ӧQsN*t0^ĶKSɶ4,V-x	im381L|WtkxY	i/-4J^z@<lMjc+F1c؄	Z
p)j8^
/o|r3=pQgQ+KsϖsR-U_@_=h
BE-/レf.E5V]`lFa$rH<Y%B}+sbP[U 떫y^ҫc!mtk^@HoBּ>?ylHߑ?ү
鐞ҧgJRTh^\D^|Rɼts!y|H"<{dgq݀7(o$DC˰z:p?ndKǃ[6bx~avaN]nryQ{N,'Οa i|o'-|	L0 |aqf|.çJ>Mbߥ[ȭb]
e?ZkůZt'zaN]jKyEW`OJOn=sWkςՕ|.ks#\]/+
\o^%amԭ3x&.^q.daFΑ$}S7͉z+V^!_v.Uz[*pOySYV)\TvG?Lak+\sQaϪ{ /^ŴHPlV7XvI-PJVe܏=[~%BAZJ,S3,-0\Nf!)ghs7lF^1Rѵ]9|fn]W-b,m)vBa[ʅm+J$BoZԈW]#6	q,Ś_PKaV.6
  7  PK  ]W            -   ch/qos/logback/core/net/SyslogConstants.classKSPsi<J)>C%AA$iIM"+LkѶ8sҥK.ur<'MgNXiߛ{6ɟ~ē
='[W#,xj)%WTXz7Tv+/גMl_oz)`>u3wX0-GvFKnԋtu	QS
VK98  %D0 4E#PJ,ӊ~}24#qC܍Y3Ieԝbt^r{ejPo輬䴀~rFVAe<!]d8Q%u&w,*vhjo+ ٠`i%jpɬ,s}#2C?:n*{ޅgy*xYE*xYe*_xYU*xYS@\_xպg*{
-װ~ŭFx븊nig
}>!dNa9Qy1qE%+g|
=L&m)4z.}g^@/2/WЫkuMG-mfì3*:˜C2k'{IЃ_u,R`| =Md{POY?PKlq    PK  ]W            0   ch/qos/logback/core/net/SyslogOutputStream.classTkSU~Nn
rkְbR@5jc"j$]l33t|$@ɞsy9ۨ&BXCDG1ߚߛiM/5݆_=Mێ'GKC-ܞoe=;y"
tBpAG.
wn=]s7fe;]q=+X~W4aluk$Ѝ
t\ƛ-3OZ:Q:6-?hXT k&lfFH}:઀fz_<cCzk&3}s3wner@J׸gdNqI3\%gHaLwɢzNy:@8ޗɪJl|C"n~n~Km7Tg3=RbFVGN2uzEbWTBYשZ
Fu<~`;bcly+fFKOr4F-%+$zPv}5,\u#϶}4<v	.W;eu76XfK[_:q0QkԷ8J U8b>ʑܺ,
t~A݆W2}g35!90%b
a^<5P#_=q}?9Ix	mH>z}>L}PG_}s)a\M ϝ.>C@
X I%!,r㸄iljzLNW$RCx6¾qRkE(N*9+qV󿦨%ݟIEIwKRG\B5O>)5:\V
n!)c4fmͱsa}b38_\KJ.DƔ5Ǣ]|ʰ
p*!إ%
fro(<Js{Q_ 1e\>q8>ǩ,GY̼ZUZR c0U5'2Uak'ś-$ze_PK -    PK  ]W            C   ch/qos/logback/core/net/server/AbstractServerSocketAppender$1.classTmOP~V6RQP|GnP&C!M&5]lJmO%gRP&?~pȠ@#<}m"ZMnJۗɰ#C{špF"6wMs_ai!UT@cDz9
(2JБ~0T_a&O%<N4=Y+㄁0	e?mJ3W,COa 
tdz%JE⼧TrʊTyU:q<;*Ruܭ5*c]|ю
(5+١sG]Cv>Xuk@=p*X0<8N2o7v'2nD(e,Cb+4TfH漛Α`um>~N6s$g)b#]P鞌	"
pw R~k&j$E aG2̈́?}]"*31M} DVDeڽwX-0kl})B!!k\].Ҟ'[ߛ	u30	B1}5CW0T/[}PP]j:sQ&XH9
V;>um(Git59RP1
db,aVt?KPKq+Տ  )  PK  ]W            A   ch/qos/logback/core/net/server/AbstractServerSocketAppender.classW-
N0!LP I`Cb*26de]Ci3I$M&Mۤ-4hIo"?7e-|>̼y͛7w
J`A	(chP"5#֎PDtify&vejF51,5%(g7)H[ab&4ey5DUfh)6ׯ+U1n2кHBPH[,aQ*Ϙ{s<)^IcK%,r
HnA1R*fXzO2hI<"Z`}DZ[%AA"5T2#$&F*i+ow0TSw4R:7=˜g4!D
iA1):Mc{zXE$܅MK*aͮPMb>Yen	^-cQ&h{K؂U19:ʕ$ 
e{(zT4!t(R ia*a(x_.cHh^Oow$[RhЎZ9B;)absKa3<ak"dv#D=bhMhq93"ܗWTRWj%DQgMUT"ASdXt]$aj9ϰko+f~xfQ=,!!'ܯEp2Q̙Ld1˩TT5933k'2H\}aU~'eh%􋍃XYtyرsG8:$!-jXu| BcwXLdb%"ceE
"UĺܬaxTIj٭k
ig˖n	=@fļH}3j[F)YѯR}/%| d{:hW4󭂴DC$V1lMqS%Nq'3t:]-~DG1[VD.8-;Z%8)OHxRδ˹)OSv/	.A<#Y<G2~0CN*/r:s>/PŒΧ#莶xu))J_V:螞{{ѣRPed3\֙'W	;-zCK{r}\jN|j;s@%PfpټQ\*3ٲ"~=kEXJ(բGsS7-2)gIg#*N<Οϖ'RUrTD,we.G/D$CtAAȹYf2ډ.ڜ]Fń}qjufví~fSN(ThZ[25e#tP
Y;](0TE$5sRF9ޤbG:
\ 4r."њ28ʾ?[m;|ا[1GƳKΤhkP.2vDQr}MwTttB5EI1.:Ҳapʔ2>+AE)mZ#
<j:)@|_LBjZy6nG/Z/A:KQF_{yx,\[{mEP^C9[oPMdm3J==_ʤW
ʶVlQ,轂[YKO8Bp86vcEacx0|k{	1{	tL$|p =GϑrA$ȶcbF`pF%QR*daҳ~$p/!{߶|l׬:A$-^7J$d+.C9<~
Ce`e-_6Ap##M FehlN`Ret-U[N3kOcӖzMbHs"@f	7*	:j$}<H!Z$q,sB!OH)$]A" pyPU  jGK)_
E|b(W@ґsBO<̆\fCz,wqe!Y!:IJKh%m`쵝zxaXZ[%[Go-QU>}eISO{N1VZZ!=k@;W9P:B[~8yYxe./Ҝ<k̍_Uk~/ؚBf	?ؚBWhEKQg
,?yg
^9o+64i_f
}k`ghο]RZ9~a_9|F	~GkogF_7+PKs|Vol	    PK  ]W            +   ch/qos/logback/core/net/server/Client.classEM
0_5*wt,=VPpӟù JLtfx|oyO ;$5d\Y(}#<={ڛm+1תWd-XԬ	,Y
cŗW.$#Hu"]5h忢m
a	RdQ!3PK      PK  ]W            2   ch/qos/logback/core/net/server/ClientVisitor.class
0ۜzBEQPE4ؽ2;Ǌ]y|('=ɟ?`Qa!+VŅ	m$+e44lW(YTUjGe\
KfOOpYJ*+IIm^	_'oFȽ*v~ٜBM{ƃtT}.Ġ7PKm   -  PK  ]W            =   ch/qos/logback/core/net/server/ConcurrentServerRunner$1.classSn1=n2aKYJIV*H՗T$TJLb;xx@ >
q=ITQFss|局/A?T1W~Kp oFBpU^gȚaO=G
.p`q 
IlF"2[jWE,:\\W#dȄ"WLcH!gXlG\u~LΧ`֒|&C_'7CyH'3920)IQ6V2&j[Kc
D`Fdٶ9=ĳE䅎lKg籕^l{"1TA\wQw0<arm^JMq_p+ry}o/*k푵HVR(ј>X
/o&NcKg|wB4N+.0Q)$K.MΊ-S~
i=@9xH6
jh$Hk0PKf"    PK  ]W            I   ch/qos/logback/core/net/server/ConcurrentServerRunner$ClientWrapper.classT]OA=-C@J,F
>Ovq٭[?3	hA}PcDδUHtι3{{o?~ j f9j=+%n?l_
#=.=OɜTZMHΰK-'Ѕn--{QiK!Q82D3*H1t+*<gk֏&.`a-q^.7"2d%\6pİu\(oYk&FjSmG4*昉qv/8uIvX\fg<9wn_&޼㉍vI"/}\:cq
)NYVk1PVKsɷE($eҙBHyMX`8bU/.mqQKj
4*< Dl1.0ju	i#H%Oѩhd2oadfoڣݟbNC @[ =Mv8H4T͑ZW=.ҠaW_/SAcZZ␼DxyY(Z"kfmAv"%Ir\]]L4č2+3Iu$II-]۸~,j/]D PK)M    PK  ]W            ;   ch/qos/logback/core/net/server/ConcurrentServerRunner.classX[~,,T&)EF#E01bb*m_־<;s综;=`5G25td![ |؎UFv#]2kUQw6s3kj]FQwEq1.ݱ&mǈ!~!3y5똁w[9j13@Yu4ţQG,v$
t"n=*qs)5G\
h	d1v$b]ˎVKy:1_ 'BSiTπPbYB,"oMMKi%:VS@a)iUm2SRF +cR
~P&	U.PQK[4pJN
OEՊYK:JIw6y*pJ`N:!rMP*T'N
ѰFǽOZˈ5rg}&gQꞓĎM>YA`٤<!FH|*#dK 8IW\(0TeԵz̺~AzΏYCflvEbψM;n
\kXwx3ZulE=F)Ie[,kxv=i%tlvFs雹iJ[C$$9R,(SGΎGyt1mJf_ =1ѫ|ycc{u<,hl}tG>.4s~²xzf@X=ǉfLZ	|R@'R"MzROIg:㎙ę<
x(Nj=-k:~œ2O	͉ނy$wP/1՞~[Z&SJÃ#OS]~Exc=FqdRDO^%Sb]q%5K:Qx
1Iϫa2GI/vڗIx}*P6s2Yu6[Q%ݭ5--kVNHN<!G"&J[j;3dExOH&"#j8Nt.Is4*qIA&]:Ex&\+6=cˌcLé$S-~SjD 9t#ZgyIby&OS+z3hSo~K7US+<7Ymi
Σ/NT$U-+~̹4E!@6#y0xWDpMKU$&\Su;9Bf;
t[f\eosL㹣gm7XovU%"22Q+:t~PIcPoplΏ(?	,5׊f*
FxulOzm434d4&ʌF|ۍ+D4zڈt_s]XOJu
w%=a3ª@^Yȫ)k#3}߼F6|9A~_yf,x"xYlavlE!,8IL|s=|JwcK:GJ<P|o )%[RcoOxJhJou)]˷<oV
jQH,zl\\'Kʓ\0ţUfiR)CI=q-9VHeFJQ11V^cEab7%aoE1H*$\`EChz+X+6|ežܟA̫
`Sqg`[w%N zH'vqn^N#Jl)%83ĐTIzp=FpVq^\
AJyRSI[PsҐaסBCe̹LyN?/rF?
Hcinvꑋ"<,g]?Њ~JA9Iqh.qAS9&cGRc<nkE_R|GH<SA gx{D ,Ƨ8X>]6Owk4ӒE
ie,M+j4)(8S?I
7 u{ /%ec^zqr	I܃ȫ,1^ s؎ɸ} y/߯pA<C}M^%+NC/$'=WEē:KFd>r_-]u^R'o}~Pm*Z)Iѣ3T<z
b]86tO}I8z&lcVEjU$=6nxjL)MӐɖhb??
ϳm_8z_Jŏ=D,h[NzB=Ɵx&%{ys(PKJTM	  .  PK  ]W            9   ch/qos/logback/core/net/server/RemoteReceiverClient.classN0mW ETP6568vA<CU8Al`9w'sH#%׶ȅ\qiqC9IR1N"Sl3b-dl~&|V|j7*1tJwB|o+q#sƯ+e*L3u(3rJh.rMֲ9=02qjl`BI<dT	1auP7oPKP    PK  ]W            A   ch/qos/logback/core/net/server/RemoteReceiverServerListener.classS[o0ܖ
.0:! Z$GYN,xaH ~-0`)|߹؟|V}PP
peI/|0Uv셉fd>嶖JD27(oL@z2ޏ]ĤkƎwߦ2M	Ik4TRf|xm'VG,iuCvY1I0YtN \
(
ҦL$3z:I?)k"N=%ӓ~I|b^@Avl&kgB&WF,pE`޹H>[q'OTY>ܧJKv4.=
W}㟦ڴ-hN衴c[<nڒ !uOMZ}y~ yv=4Kg^8sQm6#Tގ,PwXC19X.r>[w#'{#1Xp
UeWPKшC    PK  ]W            ?   ch/qos/logback/core/net/server/RemoteReceiverServerRunner.classUmOA~'TTPWԂBJH51FZRVʝn/~1Q?s۫@RSݙyy~ bK"n	yw~7_[wm%=\+RrOUx%	̰-uH,Z,qv;PN=ʗ\50LdX쐾w|(ݺxEAL#`Ը")l-ȡ8K⼉e(tkEU0WM"tۆ=Tm4Ac:>UCW00@u˶dT<lUp=lmZ yBǹk@1W
_;\rd)S:Rzd-`(vr %#
|ZFOs]ݥfLRQEZ_ƞp}Ց̉M?jxHg+.imo'aT@?
)zct{^$܏dIGzNY/H~^N ,c4,١%0-ථn2l]A
!5¨L:#!
ckg$qcԁǠ@ӠF	X1RVF0u21TM(<ɐ]g4<~PK.(  U  PK  ]W            ?   ch/qos/logback/core/net/server/RemoteReceiverStreamClient.classW{TL$F	urQk"!!d'9dpΙpVj^z7*ipI}}?=3$@묵ѵw <jPfD*q׏+5Kcvuy2udKʭcʢ-JBkT?eO!?'8f[ǒg;-QU0
5xMbƥ7}2%m~R2]i[:@8@XEw|75*y.ǧ$5J5L7ezB@2^rN'<ZLS	U\X;kh<V:X}2%uhhy<b͎,ՇVU;^"޿wE`
АI8&SAGjF!FRt]_$Pܛe>%* 𪮘jFAC58w\l3xX`uAdΘ9+2j<-:Ll6YU<hqZ;l?VX uwV2vrq48){ҳ}H3q<a&'fqB4Wcbt1'T޺4:xA}Г<83tau.0yJUQ6Rt&ODN_0ENK+l Ŵ+"mCM\ƭtVI,0=fXYp3Sd1UY=Dk!}Y'3PYsH$N8mKxZf^̈guqK3eMhpUv .anMꂎ/R]Mvdw63 J	ܔ(ydy0b3m!߶|#Rua
^XEDjaveo9,~R9e^%'<mܬ8K~RY%ڈ
Cr3L
MZ73(:fc+ū>%Cu?}2q0~F!K\li̙C`bY?͈
QSV
iLcjwGero=V*p=^3Ϙ3j!ảٱCmKl͋$o,ǌ[
o`R%jsR|q#ޘ|F+P|qy+Vf!Zۮ),kmB]B>vkSXf<s6+*!eNP^RPJwR.
Ү*UȼsWJsWfTMQi(56N=Oh
9DLD_&+y,JUZmy(2ֽmW!7gtCHӌ&|ߤoS yu=ܕI^>'~E:bxErTɹRW&?苆VJ]v4mx(qLckج<N`OwimFh:ʶ3yu_ރvG(y~oӈ+cygpD붔/Jm,wj-_AEz ~ͰV>Kz~{.U 5|հIkM-hGmf8NJ`/&K-Yx)s<+,Γ6Ӹ%&I"*ivOOEM>*8+"8'YHXd=Ue;hw=ֶCU|


W/%Y#+~
bcHhQVĿ9'B*GUqs_k?D2p4NyŽHi/5M?"PNR?C')5sR{=zPKt    PK  ]W            @   ch/qos/logback/core/net/server/SSLServerSocketAppenderBase.classVmSF~@ڄE"ơ&}ZQ|<WHI$kL&3
̴3ڙLd1I?{ݽ=~? V	hHDth*w/|*QNhG<a^MHTpa 13Am} /3LZSo+qɨY=ʂ5խJG(cᢎKg{d#IC2veq)\oG{de
[\
P|{w~!\1>aɓ=0´Ou|kOAT8U40u_mygHY4ubr3`fTdU_l\*%7T5![vQsDSafp:u;s/ u*k-};WdEJRTljds[9+ܣ\xfFo{£L5zNUMeØ;QU0nTMކmW&%qͷ[,>},eqWzwl5;	pfq	̛qRAܓq\!mu~/V8U'4WEkf	Bhrm\P&Ƅ꒤yt5ifJ? {IhLEIӨ 1w4'}''fTc^tf3azF-Dyc27o̿Fn,a+O|2"udd44.bKt@c$Hr+Բyړ5X((!G
a+?ң!p3M_!F^)	
1B^m
wEUeH=B)RcZkDD+f̸eD~H:I-s9oijѤb~
~_PKJA;  	  PK  ]W            3   ch/qos/logback/core/net/server/ServerListener.classQN0=<JaeN"
J*1W!%T|G!T}{+5tȥ6Y^YiIY[RdBl3.JJI0lJ$BJZiUq'[NϾԪ0l?o"!N̔%cMC/-%lcNgޑ$V1^f?]%?$6SI7a]s_$skN;sVa? PKRM    PK  ]W            1   ch/qos/logback/core/net/server/ServerRunner.classQJ1=ikg[?"(tJAP(ءw!IZm. ?JLFPu+׷ 8P"8Q[,ermUQ+\:*L)a"Tv'lhTFDpJpN%k]>1#"4 I
2rbŘ~bV6A?'UCNp~.rci&+j#)fƿnĽdM:a`Yx%rYxSK43ŵr6v{(a
w썬`6lw+>nYwJhaPK@c.  B  PK  ]W            9   ch/qos/logback/core/net/server/ServerSocketListener.classUmwU~ntRH(Ѫ&M""JKV^)*la!
~pF'=>ww歧=~؝{gyfݿ/ 8f4ud0+0zim;gf	k3Fy7,r:N@j?5[ܴ=_@/o6"2;A(]вzT
ۯ1SuƂ@al[S9cgQPqm>/P+{{$ZG,J:*jzwܶ@8;8#tHK+G̯nLOTYчq.C
.NN^ QS(Aבa絢nwUeEt=ԮmYG+pYc
'Y
>pUg62}oq䫝t
W-p]R t[AW0հ&r>'9]uǕ/ZoZW"v-Qb:|pմiG1_qofsFT=>E+ǝ) 9K'S u<7аC83a_N۵®22F9	ǚ4(GNWF57<Y򶵟PKnIoBH>~1-7o;歪H=R`,{7,.ίOQ+CT_3%xieUq_P6+}M)o<T~ʯz8YT{8y7jYE+&Ѳ6D+&Isw鴺4ԩoG,Q*\x;-h]&l=|T9B'P5%	OSHZe'_p~7Q7#^2|?!G؍bVbAKh*
>)zѯx|r`QAGW PK>  A  PK  ]W            D   ch/qos/logback/core/net/ssl/ConfigurableSSLServerSocketFactory.class]OA)KkK(ZJT,Uh&HjplX)].&RM(R(fv{1_ =* zgZ;Zۧ.[!w6tñ}+ftVzR AU@d5a\*55mͪ'[rxX#pTK$˞cZ"U^JW
 
D0Q10y#as!*Si^mjF:n7)xz\aX쒚kn3 QQ8C2uwB
J cW1D ~SR/!"x.1ޖ;q/%FR^cлYtAYld.?pQJ*m{8&u;? M9l<VdP)Q=;7$=۵c]ڂEF*^3IIҊ[UNlo"Bx}gQ5Bx4+`Ըgh#~[43`s9BߤiV)4ј/0x n\	G>Z˧YB4'3'
m՟DĚHDa
~V5Idy5Ilyr6!y^t^LS.SDlSyIknCņɴ<ǓpyB=7(.AgB7.)&D&&z1l"A]w*PKk$    PK  ]W            >   ch/qos/logback/core/net/ssl/ConfigurableSSLSocketFactory.classUkOA=SZX
Z-EDÊ M$ɲe9$?wfKܙ{ιgO -ANˆyS֜%EuLCnCK<Q
~	 .!0nM[.
EݖUmx,eb);Y6QjeqM#сmZI+*0;)PE .	WFCrjiF2qA d67-Ͷ:I܅HKZezkM,WA~x=҉B 70 a003,7ӂ0ns<kOl9E9XQ-Hia<)/Y6;w$/;rlhw!3UTP,An-z$5|f״̳,]9N᪘nw#Rѥ_W]n-aKPꦜ}V!-vxgrHx_6̏9ț{-ܯF^r${Cg^8B_RԎhH% %G*Re.qcp0Ns=NDyOO}9g87p_{_Q@zw뇈F|_*cSፑ	#e/L(%.<4HSKg>bΨ1r-JK*{чPt*ʢU-+FEKw.sΓKku\#j]zХVZ5P8RϧE|zE&iO':PK6%    PK  ]W            >   ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.classTmOP=wu6` MpJ%Q+0dd\bi"bJGMQve[@bs=i=,! -u5uuK>CC6exPQуUC
}r<rjUn|
-|,}Uqׄ
qTp!U570/e5ڒ/4?jkm(0,ØܹwnS6i+MC.I#%΋t*Ca *iaqa3T&%UN+3g_2mخ
wW-!%[r.&1<(.1ྈŉ0}\;'Ş!v|ӱ=h<a4SnNja3QVb-,u]٨ˬPy=kS8/9Ɇ	u1эɠv׏S4ө2]`_0MO	nPeȣ@(- W2TzP}Tyd@N;s!y
bp6M?JrxR-w '2}:w;`)ZMNAZ$ZvjJ&*#4jlznDmdwF&C#w=wPKqh  {  PK  ]W            5   ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.classVW\^,4čC٦kDpAZZͰ0̢$ڦM&mHlDmڴso9j?wvvم&v>>w O(C
x6M͚<cexʛ[ƢZATE
Tx*ݸiOOjxv{q5^-e[,iK)3lmnIZÚTE`*4ir坸3R<G7sYѧEh۰];(?̏g<ֳ<l:f뮝uR:aiϑd';؍4x{Q;[ԵYpvd܋N'Tœ_GV`W^SY
Q8 $>eapѢUEd<ܞHkNh-(WOmٴ)	+ԏ|]7TVnk@eʴ]]N2_NSmtSA8}=[QtFB.{:P1'X(#Tzȱ))VB\S`wj3z¶X^㆗4sl\SŤ(zР4@u6TgTKT
Q.dG1(5	4]5L}z5UP;{S_`j@q{L༊H@tզΤѐ|cJ>SٺѴc_&MݟVX
Yǿ.lǌTqhĮf,6201֫
WrVxL,hIFpmjD/x7	*UZL^)mPaI Cb6XO%ɱbz)ӯwwh w94eJ0wnt/l\vdݓܴ:	5FX:Uj6eP+MIVLԸW&Bw88@#'`C.r$w۶zн=F,;2H1|uDr,hEG"M,ۋ]1Vɢ
w{
$GVc`XtLn*nˀ1fM/i3LHo$(>QD}^@EB3ÓըY$L_w|Tx|sV~WS7ܕqn^^NE\eO|O:j7#?&L
\.A\C2$ǣKb۸[%>Q%|.j;*+%<X8)zΑw}22()C+QIe$廫
-#،Ҩf]7\kg:9ޤo6?ɝ<Gorwk15	~lR5F>ғx8)̑zDrCuQ6ePeyC\D"x?avO
*~F2~Nkv^^ERK)qъJGV[TR{猂A7_?D5=H	[#Cǩeol_{M>CwXDh+*ڦ7|ez%޼AZ'[\f0BwRNnmfW[)S=d}
s\*
@dsT5/ݪ[/Щiz"!$qn-׈
0Ɠ6Xop WE7 | @h`P`}`><X71^]q7xX2o8+?$]|&,U/+[PK'uC    PK  ]W            %   ch/qos/logback/core/net/ssl/SSL.classeN@EE7pɃP
4Rl΃Cb/&_f'
4цy7普xY\)a݆!O,rQE#[K'}9'4UI?2tFyVVaV^8c8゙R_gaOp-^gb0
	eM化y=ӹjjݻbV8Ia!xNk-"]sN/5p PK\  o  PK  ]W            .   ch/qos/logback/core/net/ssl/SSLComponent.class
0j]-(81mR 8AD]g齐'&]Uyoڝ/*	J3jWJBUY^R7v;B]SK)"LUgeL %j=H0l¨둾PK     PK  ]W            1   ch/qos/logback/core/net/ssl/SSLConfigurable.classmPN0\j	>>r
CH'lcgq(]EJ# Gbp*snm
ʥu
/
͓d:f҉Tcm\tEYh<rdI\ZGҘkrpx:t9T~.
ua;Vh貤A{r(5cڂx:5WRA/x428YH
܄Z
^ޮpwaozǁ[pPK    PK  ]W            =   ch/qos/logback/core/net/ssl/SSLConfigurableServerSocket.classmOPwFgQ E TP@!!SMffr
ob?xn[f 7{s==`i$ЗBRE?FN]trC0옶)rA()U܂ʰi4YNg\<*rɱOzkp8D<3d2觨.껝SQ11k\e㷮#ñ<\CS\E]wTLH*fqED)=&UL.8r&WpZŌDg:)frm9Y2bQ&zrXCQr9to-`H掂|r*WNu[tR(2RsLe懭w걲cVUwMiI0E[mO%"=RxL~O+;b|xyitli~dHWkS8M+2+,Ѐ%PoLixL2Yt`w
CuIB427`wJu`"5ߐ/m'$196nR*5)R_DSRڿȓ)Gi){s;tXbrY'Fr6rhpӗߍ"܋M<qGݸ]݀j}5=@R)`mLĶPK1    PK  ]W            7   ch/qos/logback/core/net/ssl/SSLConfigurableSocket.classR@-5T  QVQD 3a~
FCR,>hC9Mb)	{9߹?~XNL! !ojv]}aiba0_1t
Ǡ0\5;S-oUqjszjZeݱz,9[Nx]LEثh
'aTDǶv\G8cyJ7M]'LJ$V鸢G)-N)83D|PivCZ7
j-Sp}V49蜂y@֋\Ppcdi2-Zȿ
+(5zۢk$wK
qN\UvtW?lp`a-XNᚂ;B0'Tk:-(s4ta:Uw\S4wE-ܦCPMPne`YRםYVLo+[U5<\LIq^)=-KtbOD4eЈJ{ 	"WtǨ'lZa8و\{a3 {MP[z3IFsZ7L9L~Iq0ܡqӕqw{f? WoH} V{Agwf#I:!y.~E␿>&$1D'zzzBZSZKmd)e"J=;餱GqLl~_Mg?$[Ig#L(\;+`bqqUӹOH|	*VZ_j㊜-qSz=LQ	AG,'#8:8Q<G|m,m? PK^}Q    PK  ]W            2   ch/qos/logback/core/net/ssl/SSLConfiguration.class]KAksS+K&Pn*2(B2.m-ݱ1_BAA?*:.ޜse3;m,!!@1Mʸђ7oS:°2\ejCi+qp ۳lK3zckGa}8jv,I(J8.NeHs !Ű5Z$Cy!&*-NpxEJ"Mުs΁QW.
3<h!g|aԙ	VSp;;/Ge괙:8<t,k~ǱDѷbiTEqNeF9Z=QŘ/"M1ѿiArghHߐ<a<ye`V43+םyQ U>aYPKyl  \  PK  ]W            7   ch/qos/logback/core/net/ssl/SSLContextFactoryBean.classYi`Tn&"B@AFFvHH&H3	 mwVֺTݴꀱZmmmJ]j[ZfL[=;&9 bE(Pe]G=
.1B@ٲp4l/(A9Fi言.07؞]P?3
԰mWCvXe{{2Lu)GH+ctTJ"W81A`\x =g՚e!C`Em'|Z$<ʆY:Fjd̦LNxl~3lѠ阦c:HcG@vJ%O(LLgb`A\-lwJȶD2Uuu4Q`f`n4V̇Z/j5,!:c#
1LmmYyIiQ{lX 0αi[vJ۩ZIף,ұKL9
;R3Y&]e:ZLD֫\Ȑ:
̨5fZsg"d*j8WGVOrpQW5X'*'3|D^ǆX?XM6Qdx;ulV^7/ˆs̀_.Աoc埪"Ive&Ψ&!;5]GPFv0:2'\u5^2=^1Kri0.s;4WfJjvJY0Cmr_>fH%1[hd)^c|_TUuˇIvE.eͧJ:&0Iy1\&ӇLqLՇj̕cYd*?㓸B3iz0yHLJղ|y
:N,V3$Ygu܈	$YoIw9nvY@(ה'y6)Xo`^<}i
aƓ#+r|11)&1ze|EWu܉2'.39JYSW!_bu|]*qFN=:S_pX}:y
ox ?/=RVJw#Fȣ:gAӶ`8XvpX?IVF,<)ZS_O.7B/8=;-{,l<)`Y,rCi0Nx\z^i@m纶;6ܸyƶ͝jV@V:sdKZc]lG3+bH܇A3,݇%vw;p}>hNjq]J52mr[$ɅWٙfj^CN,DTCGύ@蓼`ix6sX?ԝ 7|I*MM~4WqSL-QeiEt۳ӄJr4HV#vɈ)aP3 Ӈ?>2e_ޢ\k˵3F08T`X+jWuG[3Sn){D`Z#ɒV"\iya*k)Wm|.z~3dژqdWbeuYb*K|	}	b7b+db|>3G'tVuʣvw≑(>SٔvڱT)/(]'0J$\4[wr(s8 5+@De|M,X"&Bupt_pS2ץO4bX3c%<;
&h
F"-B_fk&$u8hT^Xs14	xWx;ǩ\]tԙ:sQg:OR/@iax,SGuG yx/QJ.~\e<oC;<GpȻ#hh` f av☳^69%եq,m<D
7a*-XXm8FlW(;H\ehb!^_x)7zWD*ѻWFCф߼C/'(?rKKygcqTΞǿv:<$F8ql[0'KE$zK84i.2T(%(GqTn2M{"؉dXܰe(ogDhQUe2>`(>* <%<o%p33OLx
{>op) pݾЯW5tZ}zUIpu'<3-%Un.(#)5NS<U*7S-ErB)p>GWWIj#)$e<ː۩[$PpV)[
A*\c;rN_Nx2>4TU9RI
IB݁zz|
AB}P:&?۳'GzPA-?5mm8/M|?Vm?u4JR:7>#~wr8Iw	kӘgX=b%KIRQXSQ-J"》ْFbh<q
4@Gx27+ikkiv)r7Pq
k`,g:>q%CC6;1
4V2^1._vʮ(c!+܈[X@+%Y@F+ bB>ǳN!ЩC 
Z=@z)J},,MuV>
t $JeFZD1yx61.GHXCИcRV24-Ftiy.Er@W@E\#&#΢Stu8Sgc:֫c:6EʲRтPKmX    PK  ]W            A   ch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules.classTNQ
*#b[UQ0h
\XPlֳgM>7xPi*ؚ̙73s_ vC6Haɺ$lO5}.Mͻw	LـIH;' VΩJھvzvT,fK_Hr{
c)O:&L0,(aӵcy@ZVe
jq
Z%줋g<sV_]d&fɦP!T|{21K0Oe9ݏmk)b*
ug"a)	_Ԥ	p$Y%LwMFxяbP:!J'RPՠa M9ϡQr?f0dHH$L]_DTG*BuL^3GXi?quҗf߹YSS{56R)G폱6A
2|ô!PaW6kb=`9q! 6g-ƿZu˺[s]kZnlݳu~&9$1,`4s/{8+m[	O;~PK,A  W  PK  ]W            <   ch/qos/logback/core/net/ssl/SSLParametersConfiguration.classW{|Wn!gScRJ
)4iAANv'ɐ23G}akj*-T	(h}W=fwr;g=93/z,JB!I݄eDv1v3ztبCx6
٘j
q%\J!s8Y6l&c;؞-=q=aDv\ybZZy1g-.PQz5Mw13 34|#-j*(D`7r\&ަTs]:bOu˚
+8J
N)V~cpJ-hb)2a`
(=ՠזi7"UD`m[n 
+`X0Cf5dB
4oXkh		4<r޴ҷմc3ԍخ,7sL	P SC84FhzErETyfpNAS-X.
ntNp-gPEx`8$DUy9ބ>Tw:ieS%[Uځ~
;9ތ]T/V7#0wVpP>e-4 cOԦPmn1HY!m:G?DI;sH3^{wBWllpaa"lk*E
Lc0S$bi-q9lƢ~'wbN
,F=Eး2-N^q'J]CW9G/	5*wn
ox00JuXCShimYdϊ{8ލP%m	6p/އk>Z6ms !vO7[t/9BZʠUx8;1{[ 5n
gw)QG /2
,|qc-|©Un2=e4j,5g#xX#Ou"S8
"M9 t!^8._()N;EcٱAٞEjzn)}a1ڞhgNvuRv#:50OK4yELqWlaVƏU4dS^avr:T]UsB5$5|O|AZieZ]73+7z&/WyUg8Wqn`Ui^&Y뫸UM;ggl,V+r
-7bY9YW4,r[ٶ^L`/r*o"-~byyGB]f=GI9]z:ef.~Y,VjMtG(xw:m8t_&pU)usʸP5Ofi|?Rk&%N=o542bK/X
NbFS	!	n<OA)a6

˥t.+sbSZVRvNx@6ŃT,h*FE+hlk
7ۉn23Ed֐C3)&ngh_v1=~IzI@8ʣ>,si6Q6yp˪IHݸo8N$ڦc/n"/z+/Q·<ɱ&16rvoyɓru60ڭgׄ*TWՇU±ir=U.c,'H.^a`%m!J21Jr8, h+L^Yt<_l
IE2Vz4z:3hPR֣ӬW` d~bk"bz w
~1E1]0j
'qh
oΖsL]xokU>=DSxQ"=2TǓZHRBz^zq?Q{D3"zK*s{t>.|U9U8oo#'y$grX9r`Fx&@zthC{cK_3	<4sXYK9x"cz<_$\ | {@
9}5@њ b+yI	j @^5.%L%<"/$J9= *T@
T2@.6^\ rsA uH%U')DPId(1.h/PK)	    PK  ]W            9   ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.classU]OG=c,KhHq%Đ5Mӏ`!GTQް츻kIA_6FꏪzgZU{{gG [:Hj00־e0vȐzxNȐ,lHcHn`]i 5msYv[W{+
-aM_;u3\)TOXkxs@F_rw枎Qix3\Wdr>Ϛgsr,YK%6$&g(ńYu[
Qk\,y+t7F<õ=kWg[w Z
SEAwa<e[Ç-NY7=r:&Q6PÐud;K{VMctmui~sk㑌n(VY*NTovqdn[#q l:{Ѧ/2Cd]O&x1y6~jEӻ?!PwLoG9BO@Y0}æiT&<QHXA	_y+sXfuۃpXŚǲǿe:<jNG~ѸJ4.B[1<g-zYQ5'Tc_q oR5lRK]']
	нSSt-8O;fFkDht hfw$(M#r.wopϥ q-Y&eSr
glҫTBh8r4 IybI{$y%D/EчO5"xΙ Ig9G)̾;>:C2u4](
t,$)×wQ8g\ʺI~B]Pr%(5
w5Oyl̝bO!%%$CʯF+d-TU$u<ePK  @  PK  ]W            @   ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.classT]OA=n(EQQ>KQVPC"HTPФ'.c/T⃏wKt9g G:HjH@'Cvpn|Ud\][.3$:֠`xlU͏^`:^̭t41Z 7+_<eT|{ŦxI[YTr=zAgNmYч~
cS;)@rkjW/*+W1H9i~vHHp- xkN3E5f`\Qu7Mx;tޢ^Y[%Y澭bJVa0lK{]$#gCKKs
'(VNdnzU=V0mR-ƐmjW-j+U|J[|8k'z9A3*Q9ݎ@&iyLJm~C5B>*jx'jvc$Cr''s-#yUq&]7*rp_JmX
=!e<mʶ%2xԉôH00pu"(TCuTDF*ae*0r݊u>y#oiϻ<<PK)ϊ    PK  ]W            4   ch/qos/logback/core/pattern/CompositeConverter.classU]WU7	$ڒRRO6AL!U¥o0d&N_kVMҵ|_]jw2I 2s>3w~_|/c  ba~nkm745+^#áE bZ*LDϴ#-_ӬCk81(FqqqI`qXٮ7'.Lvp2<XaqWTLHQc;,&+*8xbj;Jkc2~p%omk3L&SyY:fY=۩OB
F0W۹"bRk4kW 7HRФGxڳCYgQ;=?1l	Ndtܷ4С~dZqH..UL˨w究S%^u9CXgtF'S-#!BGJz1|wϕ7-P7vM9>d[.lj
g"IeH-0o律!WkA#v<L^j
U ?bPXFnUZЈmهnS(qBs|Vxks] s?=KxM{xO}NY
D+L-/P~f%bkL䲙.^b?-LWә\<{!,p$x_3uxBrq|H>A	$wDp%r
0F#'ڎ\F)7(
&d펭BZvc>O?}׿N)m/XOgg삗{mDNg]UeWuds-nk?F13E?Ҙ/I_; ?1YQ<^"	%Aϒ^J>)QpM2M	>/PK  	  PK  ]W            +   ch/qos/logback/core/pattern/Converter.classT]OQ=-](+~umDIML*>`|^º[[B2nВCwfΜsf{&C\A"$17lԍCa-˱mOaC
Ri#Ͱ`ܦa*7/<qcˠmaQ/_(U|rF1`<	dԫ	[]Ihưu!FSfH8℔-#5STp!{ҶEtbo n1fv*ԪB8=kZS)#a_Cp	h*J"֨jl9b*=^))&g0&F\	϶>zO-tFg[z0smAcRq  R0(4`y=em<z qNEdcٳUz;~#KUܖglh*S]f`=b?+E9s/1Kd}z	w`R$$B-b<	o^p!|#o.HR<B@SC"TÔU@T,ʆYy,SMB*!l519naRJIR2dA
N`HIm2+I
9,=كA6*Z#u<]̛}2(au[nPK  
  PK  ]W            /   ch/qos/logback/core/pattern/ConverterUtil.classV]SF=klqqNSZꐾ(ﲬRcH/5i:K:Lҳ-
qAݽsݫoov!BЇGc#W5jǹ/ʏ,l5/Td͓ܷN#WuˆMt\+W7<rksZwgc TD5Ġ	'vl	,:;k°n".
gWzbC eQ>H
ԌSD1DPq[L
wE@@=}{!꒵i6궴p;õbY	D~Z~^,
$/߉ Z욵vZC\JFpm9o-*މcR\?W!.wDXFE@;zUz[jdwwm6jQo8kw}wkwtSRdkCCv]lv,A?.P?ul7۝M"P\ousCo+q)3Yؗ_BHGSk@	BRVH2y2/?``FϡqotK21Vx3y	-i$}3269VH-N,h/*9Wp-!l`r r-@dubP b|چ0qLBE:eya\0!71f8#'1IvR4cMIl.U>jpy-M*M[/}3{k0uΊT'
AĂo*1u)M#熟4LIB8Om?MPYE
s7UuZyO 'eŏ2BдRD]hTPK#  k	  PK  ]W            2   ch/qos/logback/core/pattern/DynamicConverter.classVmSU~n6IPbB6	HX4k0n%,twiK_
~3Sq㹛˒lLa&{s<{ FQ	1q$mKyf9JͪVTmG,[W궩,Y.-
:oui4h6WdvpBQҝ{Ӑgrb7a\9Jqo1¾ZSQM0"98݀sdW%
o8wV5,h8.\U\pK{.xz[bJ]e\Wu.5լ*m]s> csɵ+WedZ:WSMy䘌q\jSlPRFU=JH;m%xoSq)|ܴbP}'<,k[Bt6%pD@Mn&3|7Imx'%,0J.aa*Iz40*f
4 y
S_ۭ_4VVmc2v0%
_?y*E/wVtVdNФ3Є6lW֎5➽4KPs\/R=.T[?
;Ns+I;::O<8tq:⬌tqThNwMgazq9.F[CM(\t͔=[ӗރMctFo.|K{뻈e#FNvFLW"u 9=@ϴ!'p_қ܈DbY'W>X.n85a&0>	F_$0_mpqn
P
Fdd)NQL4&_5Ҳ[|+&J2BgBg[
"-ȑ6#"^tdn.Hm^uzŮPlJ)q%XHRwx"
 Jm Xy'9!M'ROIy"#
{x2Bp#HPIA\=C
215<}`+
}̕
b>	RmS)2XWbfC\wj1b?CSw/PK8D8  
  PK  ]W            ,   ch/qos/logback/core/pattern/FormatInfo.classVOe+yke1Ijk{[$pxX.c3Vm(UU4ZVuTʖTTYߝva$K0̹<f <@$"
oYS
k7e^b֌r+~ЈdhB|1{v]Xkټ]
ueNڥuY6ȅVNڒxJy#Nr՝WhI(}RKe+2>#53eӜ
,a[q8|T(KMu˲ԲLY4N)E1TӜ[2BwN&1*vkX+rڪ
ԁL8%߬3
F&iV-z)])0MY͝hA1%g8뺾&'lEk[为:RPAhAJAb&tI%9\.*HRG7aH)Ò3eYחMjڦn.%CJ-+=dGUۺY*q<0spDZ5~h`V/yY͹aZKTgj!XKv[Uii/L;oRp|AU悿PBSNWwMʺԥ26a
YuXIm$p㮽<bHR^N٣ʖ]xٶ]oLKh8q#;.RK]o]6WRzw\ũ7FPQK5u^>JMy.d7GaUZ130ek危QtpΆ0.&tӜ3\IN9˒	Sw'Ý=6Ȕɭf#IJ!5录[{s#>/mz7 "pL[=f{hWz'1F]hA7:A?^N
/a;;dzڅh)jq`.NU+ɋSI3G~0~KDh:A\'3!yWwﴏOI*OaOR#f(w~p|*2zO3F3ndcdb!<_eq/>G$3352#4-;ƞtD~pG$|f
.0־Ʃn3[֭ʺkKB{"Eƾnft3I[ܹH.5ϔE$i4V+->=^:7<;)I"9Bd/ek'>IңJQ|k
1KI˴Di?"1(e e?o yڲ\U#nR7j߼Z∪l`JY<tV%#_g9Z  @y: S^\r+@@<s  M>7SUN x Sn+F$|whV4*u[Яʉb|][jU&=V?y

+r:,ԅHBRM|*-G{
SQUU`vz>$}+NwwևKֶq!Ֆb[%CB}U|>o[!VX@>U	>052Tu XXPK    PK  ]W            5   ch/qos/logback/core/pattern/FormattingConverter.classUSU]$]ZB>H/Į&MId鲉
W}/8ë(utFSu<w7P q2{9{ &E"\p3,Vb_T1Z.ǱbPb54C%bQu՜cpy:q	"C"t$Q.i%}7padCޒcc)eY˚JTz'OW亿(_E.=Ӌ.r&|Kجit0R}"0 
Ǝ/l(Es:U\W10x`j%]VSC$ZTM?_qjC
WVU6S 7EqkA"0&/䢲$::pk%iK(bnv6T4E/ݛ"5j=9iW9Ҥw.(ԛtD1ͭg&##RAy$4[G~VD9J+6L(DfmAz-+E'nʺ H
q!L,%RntN9q%bc97S-Z^6T>o*fE3nȝ8DI'Cɥ:.}2^Po}D3]rYKCmksO?9
uz&ߗ ɅfuV7mXHQwfղ.
9?YϤZ]TvyՆQT*'j}Q5;q`D|@34Aqf	WؾHRv>m%|DߏOhAZ~)6x؄3ȟW7DoZ=?Cطz"~+؀ƥKVaadY`(>`Z
Mgp C ŝp#<G0w>fo?h:=*;"»>[G!,(G
zq
O0&HE1ܢ_IgIK"k4H5-;$E=#w	>#|FlP>'
dpRT\E61J[:__@o2gy\P.^-QPK["  p	  PK  ]W            <   ch/qos/logback/core/pattern/IdentityCompositeConverter.classN1ǧ|(*~&
aojIH 䥬u)BVz2PFDag71D;!D ֝GqҫQqbNj͔p
ՖYAS:ONa#p4
qyǄ*Pw@jLUhJ$]ڬRy(twfk%_J1GpD+*:RpTA{iR97suR֊/Y;#|f8C{IPgӫ\t_~F&o"Z]nֺ;ys!<sFt y(ڐ/.<ؠ %>uˈ5[ئ/֪d,%`[X֐?Jbպo;6a۟PKo
  t  PK  ]W            2   ch/qos/logback/core/pattern/LiteralConverter.classKAǿfV<jEtA][W:GEoV3<=0_ E A4ͦ
iԹyg+<ƩcwK&C(m\-DtDcEao,Iqk[C|˻ܰ0*+F!jSF0̗-.:uVyܪqW*yMf/O3uO[?éHYD8Ev׺
+۟9ӯ'&C"6:.ʹп84q\SWWxWbt3adkU>B&/yq@!A{XD-EeX";wQ1W.W{ZӠAؿke ܪ
_o~PK|X  O  PK  ]W            3   ch/qos/logback/core/pattern/PatternLayoutBase.classXy|g~\lWE$&IHfH6; VmkVmz[ţVUkUz}>dWz}>
`C(Dv##{0uv؈[mZL(j	EBFںqBa6-6ڥE}P_R
f
321jMS,-7q6윒ƅf)\Ef	T8\fm6bT#EߧV2ں楨<U,BI4)uR*jXGe,)%)
X)!bŊq-/
wb9jԩG,J kȈ2C溄%m&+P\>VkRЂa=2b`(:z'0fM$׸WHsX4k4٪Le[T3cIɏ-$,G*ڰN%86Ϥ[P6wi<D17uQt.]ط'_
Tхn>hECa2IJ*Jzm*W@گbQ#FjFPŤWeeՓeu¬>*-أVCM`
Xwᐣm$j"`X.u
Yn'0g
[
یI#*Fbd0ώdp@EXBcѐ/Ez
*nVF8YuimD&i"#f'fB)q;842U!'LfںLQ
Rwev@[PvQ/^>+z.W,r@K<?ja/x{T
PLL%佼umPxX#x
ޠq9h,q%e#*C:ێ)Jߪa	bp)xTj4Yek2g%^$w]
ޭ=̔}WUmLcWX
 AK@zLЇ2ʾС
Fc2d?	y*ayCl:ۇvttn	u
Q`3	-KDl	-捬8ORM.W-Rlfb(wf-٢A-<!9w}ϮfjJ1Nr\se<C9_@)UVמ`pj*֐K4J%doXurOLb>]Vgx~e;V%
N^L3v.u6\9$mѣ*3s,SUvB4HbcT&p:ژqv=/{ft@)0
T'$ـ{{YGPl{g4
jwI46fcFӦψA}݋N1MaXҭQc,تl2jlM>wj%+;>D-ucIE_UNitׂN/UZyXh݃*۴pX-%(ģRt2e8;;\pPՎHD7EN*GiApbV<6|EړcˆӖ⭟U'_Y˵B8 9OCԟ2x%?2)2O٬XZL!8Ù,{>iOs"G+T~J쬟@eWE`n8_t*<<
QP]`i?	3:a_*J Q0P`z,&~mh8v2k
R|+*&3f9Iȫ^>hyzw('<G9Ag^bj%
S
O:FHoI̐	<FT\7OCˠ\<zew74L`KW}C#&p)l`wmf9y
G?e630!6i,
3+d3bco|+v]oFt|;&
&!r=|M6)K§)k=\&s|ٸ;s(IH,BQy%KSN(8-/+N_
7>{5HmMgh GN0Oڻ⫴Jy{\y%
J1* YI{=so=G)`k$"d75Q5MM_x0|T}s)Lѓ_j;l=5[6U)e6KeN56{yI>kgQ#
/w/SMlK (1r³bxGB+LK`prD 4zN5
dv	܋<{vJG''*~Oi{4iKewoNvLOaje_T%0Occ$Oa@)~IEՃyh_
WOx7q}5O*HŇ/ǧ)G0UфKɼŚ\E__WVr$[}=7PKȢ@
  0  PK  ]W            :   ch/qos/logback/core/pattern/PatternLayoutEncoderBase.classV[SFB		$$Ҧi)-Ip)>,V֙O#4d&i:=+	cl0y\sV &:iB723~kro;EG(<GVEP,#YW}[9s<Cg.Ջ0-bxsD+aE
aRu8,G؎ƿja* v0x/Z*rdEl7ÕNە 2vVPk BEi
Y6s[~ºˀR򯎈2 nZNw_
G1	Ta07%%6&
|ha
Y;ѥ5~H:nkr@,Iʴ}Z{@]ebpT%:u"Tv=V?&߭	}-=Qv}<*O[F΂'B\.Iū6zz+Ӱ09]TB{3dqǍf襘xK摩%7/d|R
wPetrkۗSc/g!#V\};inQJ*Bz.Ծ=xp[zvIeS-m/Jf<5(yN=݁뽒"xVdp[%qUUk"̖<:/Pz!x*=ASAti@Υ
v+5YIH;]ۥ'${~3`$Bk['>Һ(z"VViI~|F3Cd]Wh@f"x\w\wS$pd
_J+	#̑++yքi?g)d[N]#3Jv<t}j/.Gvd$NB*\?`$A3ч&VFJFv6`.V%<=7F,1&w-{o66g;4l_훨q"" ҳP6pPKjV  	  PK  ]W            6   ch/qos/logback/core/pattern/PostCompileProcessor.classPn@%Ǆ"- M	#i,a8uʷQDC\fվfg{9 A%%]kUF,R;ǶPTn*&ĊV.RXgl!([/#JEEڳi_&-Y&:~Euo<_D-B{);kxU t4y=oDM|',DOPK.^     PK  ]W            =   ch/qos/logback/core/pattern/ReplacingCompositeConverter.classVmSG~8%Cb6q/I"^01Dbao[9wP9?"Z!oW+5Wg{z~y;qThA613#d]YZF֖VR9YQ"'Mᓎ}5КL-сNq]0ƛ9'.kwIŪrwПL&֔fn=3\YciD`q_XIUJeᓅ%kVo
(l,'=xX}I%\R☁xg/"AL1M|}1ܭ5-T0G80X/eGi(a$9 A崉38Km| N"(i"4C%q]p,.j3ٻS6q8ο`c	hj٤']~k"<}U1"Wr5PFҌY }+;nԹ2QMxh}~sny<:텤"ٛw<qVY}KKw{lSed"U}{]Nݟ&qTV@<}SN,jS֤_aؤ~{"-ug+eE
NSTT{jA)nlA|[դ:$CJSʲtf-
{k((P5wruM!"*c&~]ȰNܨU4ˑwH'˃@9T,'җnLduZGs(C
Yd,سpsz#MOn<H٣Y$Mu6|O}y#׆c?=y+|t%N=H:+F^ cL%xEl^F7=qtb)Eޓv2=F0$f4:!1J(F{w%0Z?@rd>Y}}
ML֚L$ψ{Js۸N6rOK'4JalDM!	<vCKDV+4*o'ER[|Ivi~X86PD_PKŖ  	  PK  ]W            -   ch/qos/logback/core/pattern/SpacePadder.classMOQ)E[*_-UP@MH4ӡmN+W7nX]Ws0D|g`L3{|#9,EF0[#]JY]2
W hU,wI@̬G!#F4N\Ǫn釯Fqac8>UZ.}ը:Z]t*V
sM/LG@7R]5,a	C?%^M-d"bFՕ@Ͻv	'"C(AEQ4,Șhu=\LU1o5M^I䫆n}7AwӪdXmn~գޞ<^ll{mJfrR;bU nC^kf&;VySXLo-/vWZ
ˋq#< /w:hQx[]d89b_-~	Aiii7//&Sw3箧,i+&@x'Ŧ>E@i2[q'I"r\`,-T):#ԽWTY[	Ǩ?N	f͙^V`5F:IȟDpp\FOSeg[JO˛MwB<rΡ,F'в0~3}@o|?Ds{;-:eO>@.HV&NiĈV%NkpbL+ȉ	5wQ^֋~]	PKt`    PK  ]W            5   ch/qos/logback/core/pattern/color/ANSIConstants.class[o0zJʸc\sBJSLVjNS.#K M^<!C!]'9vN?}2r+!_AEڙytCe+a	Od£d<OҀ,Hc(Is$d^Mc89pk8Y?C/w%(zm5vΐom4ߠ@85pNllzsX"լ-)SjE-߱rk-P(Pm[+z䚔;fbO٥GYT{vlHOb%;|7١|vR'6RviPgvSD b	(Q/_xWk|ķ5C|WU? ~cu7jk\7&6[db
iXTm+ `zPKͶ  1  PK  ]W            ?   ch/qos/logback/core/pattern/color/BlackCompositeConverter.classJ#1ƿV.x#GBv[(,vI0IͤJēT_I/=|!d<04wc/a^Za
"m#B{꼩:V4Cs<Tͳ,f؃cqb˕gcHdg1}q#"c2TSSFTw攷#R-#1e;2f>c4N>?V
iɰJqz'+ɷFiʺ'}6=Cr~N2qz.6	đtv)`sݗ s/O4:(gj3qj	☲H1%,|r6 V#P&8-x+}dJX.~{PK3    PK  ]W            >   ch/qos/logback/core/pattern/color/BlueCompositeConverter.class]K#1Skت[F.REA(z1⭤ccd
+JOZ]V809{N' ^@
<2EdchW{<m
hi˦XZԪ+4x,r53+[y1x'1qb˕P`HGawFl2M}I	M'm[3ގH)tsn[{%cw2wwjݡCa?^>藷Yi]."B}-[ H!+BYWP<=0Pq.THtQ;fԿPy/H[bv\R`iYF6 &iLј뉋~-
(d3<a';&]ڃ7@Ҁoo|KV+PK5    PK  ]W            B   ch/qos/logback/core/pattern/color/BoldBlueCompositeConverter.classJ#1ƿ֪UԽpa[
(ŽvIaI7)Vz%xP'ݺTp`rN;I c-{tE:l^[+ ;8ZŖ+A6\yL04/?")4:QXZA04cI%m!]:@!SˣP_N#J(@Mݡ
-Ir攷#RJ-g1cePo}h<h~\;=>mWiq/*~/D`[o$B"dEO(02n0L2T&e|aNL v
Lu_
=Q): f!}KN34
fi,&-
)sd3aΧLQJ7 s^/
^sK[o}/PK恧    PK  ]W            B   ch/qos/logback/core/pattern/color/BoldCyanCompositeConverter.class]K#1SkWݪkWٛ"(RPb%1:&LZ_?`IbR9=sw`ky/Q^:Za6QpkXlR@<rE1jizМOC&utetfuk;"Cm|WxMfReKފI)5uSnŌ=	CU0Tv_;|$ˮҪ1Vǽ;nV7^H5REDȊPuad>ad.VHz;H=587~`R`=l-71Mc/b`fliH#<peRR~[ʃ#ye,R4{-Qn*PK\7'    PK  ]W            C   ch/qos/logback/core/pattern/color/BoldGreenCompositeConverter.classN1?/PBK8H$RD"gc-N$ު8Pq!Abߌc EμK{<ͭF"=ZŖ+B:LY1Fo')4Zu}ֱh]a(cH%m!YZ>C!VX"ϰ=:AMG#[b!8\49͈BC<:Fg2fi)k8Hj?f6tx\uPاm~/5y{Wy.[^~"H!-BYWxzJ0Pq1ĝ-"贲5̨➣:9_wL +ꎁo&u_̵)hKM yM$Ә1L-(dS:O?-`žfE̒0DީgPK
    PK  ]W            E   ch/qos/logback/core/pattern/color/BoldMagentaCompositeConverter.class_oR1Ɵw0t99u^xb1HLp^eC١ŞB+/ P3Cd'9}mOY$}ױ˃s/Fx#n06^*\8Yd
bzypci&М&C&udr<C},
G
:}P/;{dёJ]aNy7"θn<S/cF灾U"ڣPxZw7Kg}S{W;VnH5RDH	YZ,ͧ /CwLҭoeF']>-]	_Ywn#xuzKJ#5(2鷿E$Sؠ0'ؤX\P(ۄu82	G)~;Jz%Pۥt|_\PKr@    PK  ]W            A   ch/qos/logback/core/pattern/color/BoldRedCompositeConverter.class]KAɷiJ4腋Bƀ	
`+d3L:;	?Uz&Q1jIs{f3sfE-yt:^[+ ?
J,W6)"l(0/?$)2zzm}׉hCahN'!אJ&CyR@!ɣO/qxNQThpwcR1cd°yGM:ɾ?[7G>o)-r9C\EޏL
*"BVP@Fہ!J7Ao87xb&ҵlM`q/'ed[!'9s#q4E	B6%,ʤ<sVyUP<<>Rh׫2kPK    PK  ]W            C   ch/qos/logback/core/pattern/color/BoldWhiteCompositeConverter.classMO1_BZІ¥J8B= 5iIAB6;xHWC@T zwo ;xGzޅH|m7
hi-b˕ G<fӷ=Tݖt, HiX0RI`HW3(0dkv(2|Y/b-8;NDJr#Z؞vZc(On2|}~_k8~(ҶE?V|Ľ;֪w$B"dH( 02T
q+$!{N댛|=48Tg&u_
̵)/hGn^!}I4^ҘKUX^-M(d3xu8<)G)c5X$i·p["rrǳUK?PKfwD    PK  ]W            D   ch/qos/logback/core/pattern/color/BoldYellowCompositeConverter.class]K#1Skwuśⅰ-E[*E/FZicͤ^-xG'b&'yOIno l[	/8؋th#VEHog߫k[lC
,2yd1P|jYG
95LE*irfyxDQBu<RYKCފH)4u#n?){,claEѢAvQ:P絥u(5Ox{Ww:-?|k
=|ae.Hz=ʨas@JWk{~EF1?WI3ij	!eb
s'I8Ja{V`WC٧"^[j?~PK"    PK  ]W            >   ch/qos/logback/core/pattern/color/CyanCompositeConverter.classn1?74B4rHC6D(*kd6dcAS }c HTYi=7gO >YH#ޝHx6qkQI
XZj"Ŵy,2
m2$G,օ8[1$N>fg8ݼ3j=TG_QBTb|;)ŮxFBL١jݧXg('SzӡCa/v;v{Wup-[?Z|k
~-aeV$=
l(qS<\{b]83a%\V-l=w$LE< /CȦ
	p>y1`fܽYW|]elXPK>NЦ    PK  ]W            H   ch/qos/logback/core/pattern/color/ForegroundCompositeConverterBase.classTmOA~RHbAyQPA-!Rbmrx{&)_ 2~gٹ X	#Wv«-J	iaR_)mmQRNBaFa2xn4mPm!зjXZc{aDFx&zIIêo&dE0wnaRfSX5l'6ru墸0Đ"W]-}
D]Q5ژ9Omr$\Iֈ`!<[zpz?qL0DG2zJfakM|-f
8=n,i5*By.ڮrsKõ;NMf߻F\K|jW˅W[{[6Vz\uf҄D[XbS;h2
Ѩ#S2W-ILuM#nlϝWݬ.awN--Y[{WuyޭM?k0IL|@V B<$P>ϙ41? 3xL2u&!YJLxw;l<voc=-~s1crV{DqD=I')f)Wpr9c6O 3б@9]	'5eIܧ~J=sO.PKmw    PK  ]W            >   ch/qos/logback/core/pattern/color/GrayCompositeConverter.classMO1_瓤)
SD aX^'z菪:N")y~3~,^nuE:lh#.VENwx5-W6#ta8~j7MW
3G<TͫRo;Y'85nMnؔJnZ\VDJ]q#(lG&2wjݡCawnۨ4y{WwѺn>|k
}~<u0|*n{^L2o(q(gq"]_o̶{}	07ΒwHMo= yO$>ҚK(Z'̑-)dS/u8"	G)~
`ave,P4}KwXPK`>    PK  ]W            ?   ch/qos/logback/core/pattern/color/GreenCompositeConverter.classN1?/J\P+E@JQzX9.vu"VpC!	ic3yƞ߷ yd"p{?u:j#>VEXMRd@5e_'ҊVCa('!WJC}7{
'\dNE/7!l:>;R'1Ť::	7ҭŌ=	y>Cy|[?n
ǎ2.pֹC\Eޅ=!H!+BYWL<ðHq;0ĭH+:hGB&m.o7٥M>v_
u2K: f?Ii̍*i,oɖb.-^c#ʨ4[yUɷ>{b9PK    PK  ]W            A   ch/qos/logback/core/pattern/color/MagentaCompositeConverter.classKK#Ak|^$zp&LPFJgҌcw[C-V'*(u_ {X!d<0ԂkHMz6kskQDx$FwT:VԵ
Csj<TV,38c1$~fg(^|C,n!U-i!85͈BC<FYLk34QPd߷_+G媣¾Zfqû܋
ly[#UHR	wC֨ø/CmwD҇0]zF/cq,z6;	l`޳`E8I!YF679ILј鉋1ߟ̒-(sdSy:OW&Yx[3yE,P0{-Rn2}oXή=PK)l    PK  ]W            =   ch/qos/logback/core/pattern/color/RedCompositeConverter.class]kAq55&zSL/^TT@7䶌ad^rUzFcF0da̼3̜n~8RrHA:c
yx­F"?!)2z.z<щLD0dRIb9 8%NbI9o,6$ÐKʧԗJ0|RHv$k0Tֹ&KvyrH՛
W|?^6W""dL(jO/E02RN
qu64{2SY[ԄDm.#_\VmlO4\G" xJMc`/}s
/w0ϺFbXξPKq    PK  ]W            ?   ch/qos/logback/core/pattern/color/WhiteCompositeConverter.classMKc1ZS7R]x.%mM+]
ēV#/ܜ='OI@2TidG^&@u(ZDx$Fwe];:VԵ	C1<Tͳ,rhޱDre;YvGo>oxC/)Tn
sʛ)ņxtƍt1e[2f4}b4L[==;ӖAq/*NW"7oT!Ң'uc|*neȨ}Q
Zl]C.o哛v)`KNqV{d_;$1Ic/.`  Ә![Rfɦ0u8<dql+
/07+a!?Y/?-gPK
ˣ    PK  ]W            @   ch/qos/logback/core/pattern/color/YellowCompositeConverter.classMo1_
%-I?K9t"HPr(ROYbJNz菪:R*Yi=wg- d"0tsB^!x6rkQDxG$FԨ'SK+zZͅ5]LK*iZ,9?'\8CȢp}'Ef=QITx6
sʇ)xtƍtJLs3OdMop[fCao?Y}m0sE\p,۬ߒ|k
sd!Pq;3ݭt'sh!a@Iw{]W`i|L^,#޿IOh,=h,.)-);dSxu8".Mf,+UKZlOlb/U9{M,gPKH    PK  ]W            1   ch/qos/logback/core/pattern/parser/Compiler.classXYxS_[\0c"BpXlٲq Gj;&	E˺5KҤi4mitK-ڔ6-KmЗ~__ۯ
g$!h99s7ξ`=^4tLG@}l r$Fl03NY;GGbM6+i*QJ
~34Ik:I~;i!PJ\;%YP7[Y:0[@æ9Tu2aJD8V똋kX	EthJt4`u,M)\X_buZ2y+ԹXGn7>#1Lo	#}s[5,}eud\F^`^}׭
}~.4MF<kwZiW T_44(1vWXU7p<@[iV?Xձջ
,ɎfBmтVCƠ^`/I7=,C5hQ`Lc;(
ݬc:f[mgp'2b}e.DU:a@%0'S^O}c@.IN%2v\^Q[du=xH:~lGG/d} vǀ{x
-32{e%Z؄
{týdU̫7̖Y:.#',lHN:b+mƲ^cc!:e5AV˿`	)=P*a4x.u$0*K<Iۏ%!+6vqGJRkRv-{5f6.]NGT~57Y&0I:=@(PdT0߮!<fNU"Yy<rK%?ޅ4<2KKyDtQ|ރjxRSx8Ǚk.!?ޏhW1EA{پL)WJ-g˱NwCdxoqsЖ+ѣ1SSixV	l(x,Pm1>bH}ac5l5ʱC74mvnTkWRV"|VuZIkxJX;협3K>g}EֆK屐Jjc[5R-%:O,uW+[&bd̫׹ظ-0ti뫽Tg<j#qRRpjsf8,Ks "&)dHbYQ*g	o8q\`M.sKބxNצh:^x+p/%vbVuKf	vӮcvOW"[y54AzG`ܷTfTf=ݻ$PNJ4@X,Pz?!11DڳJn0S4ߓr~9!'@~!]
Fק	gܯO͸̬*o-~r+̰A3&Uksmsc7D/یd<atp@}
LW0Է'L6̓OIjSʽdQ38۹gl؟-NɏțcoXJiP(P(f4|mRm*qf&=1</'	Փ
X9k$;&e[^g<SʞYBQż)hĂSEO:C4e0#+ԔA+|a[}kbAɏGݔ{G]P!'vӖؽ;_Fp`zf(w<(P. S29CM 퐃CZ*h# s4C
y4d	rQO.4`M5c"fy%
b5Z񸾞|pl7hY;<B.a^fhG;4l]ԡ^Х(q/÷i|/2@{0૤q5GY:Y:7l~w8%7-h7G'RL<<Hx8q=<I܊JC X?l7/AԀ!.c
r34ҵ^=M$#d<.bv(Ԙ%NaL9'UMN,D.H/kUTj0Hq;jgJ_t%.ddsKx|
_@]:%y};ԉ_(teω!>}R8Auȳz<]28@hɷ|k!CVɛZb8o/3x d4A.{ҽ .SO[
z<ەd/y/Ds^8/|GQ}}^x^x^x^s^}&5.G}U?QTjK
PKG#	  j  PK  ]W            6   ch/qos/logback/core/pattern/parser/CompositeNode.classU]sT=_4_.4M#KR %BCppx/jER%9_+yCSfx~Sa$q:~t޳{jϿ~vDfc-n7ņ刢=O8&=W8M)TWР pw XU߳
P|k9M!qO7uoa4^yynqH4RWh.U;d)[{2-*W]pCQ<pe
D(-~h6 0vznvpT5)sMP0nR^ύV?:^Di;aoe6{Dt=nznO'ՐCt-&큰ať$HW5)R5q:gy,hXI_~tj'n^]8ۼneb5Q.Cck #ULzf\>GA^l*nx.;0VjnNåG6Jwh2vAZ!t_.%&xղ<s!tgtT%gS鳴oE=5,:piwbY]:߉?0DF
Z7M
UPe/&^J_LB.\tOХ.Yޢ""-xџtW}0}7,]?-DA0X_zr*3~-p0 B2E"_^"	3)_LL8D鹜?"=*	58uCWcc\=DZ;D,zD訟
$qLS\,mg2tg'UEP(P,SG=UZ>Tm7yk|>g1s0TB1|Sչ4YqrrHեy)	
1nZg~+>6jPKT  X  PK  ]W            7   ch/qos/logback/core/pattern/parser/FormattingNode.classSKo@y8ui3E8!TRHi9	'S	_c/=D	QfVH|ͷ~`	!"25ZmY7yۦ혮2Vj%W0110VƱF?
 dH1<Rqc~MeO8*=AބPG8t Qװ;_(DZp{&Y1ZFT
ǚ!y|Oj͝Atu<Ua5õ:pEەxC`ȱawEK]2$WPRSsjIɝ!W#n\B(t8fk{tĻNme{'η{"#./A7Qt{3O}$Km+;M3C֔, a-bI-*ZЃ|,CIl}0XhX
`uE!}Шpf`"`Äzg()-S5qxaz	{i.j!:@7#	DO_p)n>A8tJ!QNbTAi:}@bO9bh	$(?WpoƳZӛcLgr3ѨyLUAqJg䐨6Ufg\ZaK3'^PK4  <  PK  ]W            -   ch/qos/logback/core/pattern/parser/Node.classUSWn!]I "*"jJ,H,J"q7n:?OALŎ/uss.	萙||?9T Ab9SUsc]+njAeV*gtTŨ8=jFja^t&
aЩ 	D[MB'ߧF"͛*z_Vnϻ1جWGc=?8*EPת@oM%~T1aPY˳!Q|yҼcU
EpW`]Ld5'b	ڦ>kEY8װp0ϳ
XPpZ_^W%
c=S4jQS KR{V%q}NT9	xܘ*&ٶF[NI%2饹};UH?Cvٛ;s+WyWt.do.sI$+6.z~]TYԪͪ8
1lΒTgfWo5ӵI5&{#;~=qE¤E$j5/*:I
ͺUԯUدO1i:ci͒-:"oQ\E)Xǚ!+CsS"rz$n}ynQink
}ܭ6>~ĬV+wEMnV5mD=$?aSjk#tB$ ""$i-fh}i2Z"w'ͣ|]aw*Yl~K 1 ^@"I3>Dp]:K3ܐ <,聭'H>hz :°vxDfy0)eįP6rsD^f.o}<9lX9,xd爵2}|b: #(ǁa1]J$FGi/~DiO8W7b<Nt¼x}6>~nu~f/3=*x2@&]$y͠#ilԨD_ҞR!%
|W8h[C\Tth얲/!8̙M
4AKZTyty+? )	
C};H/E}.YQ~Ñ$d%jrQM9y,J[s
-1WDԐ%t$S[Pt<y9T3AW j&4Vq.Ctw,RV0?D)ej}Vsւ}ePKF`
  I
  PK  ]W            8   ch/qos/logback/core/pattern/parser/OptionTokenizer.classWmoW~nlgb3IKu -4i .!@N$0cSHw6}iZmjW"OR?P	;lZňss{O>8A;3̔
z4N?iٚi[
5fh舕VF'U(hh2Lpz'|a{o^+Xz!:]McN/h:>]Q{	?=(7QA@jLtlꂞ6.!l]@$yCfl`Fx^^lC*C`O}(I*x5̙*venس<?x|zR
z:!*NOBLpD`4p$T(hReЇFFU0T9ä(m}xT{FqՀJب_25Jwa$y^3aYB?Vq 3'l!)	6o6pS{i'
*~#@(UXi3(ƈK%ǡ$/8q"-c>1'TL$@qM83"C[4b;@ghfjF{ׄsN<P?	榃e-3h
Yh\`*P@4֛Y>d0&kㅁ
.Ȃ2R|)'T28>:7I'YBʊEwv$RO>!P$:ĩgtᕵWΕ	N"GNRkmyNl>vb,xt~,`\x<1e)֦:\FNh˃n{ְ]O*)dip^X<ZPNv*WZ;RmL`HyX "C]˯jк
Skf~`⨖/GUқ3f4q 1*_Gj
qkxXO*aOj4B<YN4ߛ: ")-_]~ּ>Ats)MCKM^ \,{S~~}r2
>_^ctAt/#Ϟ2îE-`"6]"zV# ^!@w1.:9z[S#I`l?Ɋp#UO D>j;<]Դ+CpmC7G<Infn_nv'=.8ss$@p+^c7%<q2>(-c񰏁%<x']KHIKTUy/P
lw,k]7fYK[t[)Izq?=/&}ApWV+al{ncu:CwB`?C+H3]0y6KG>R+݂1|c7]zn":)|I|M7oqóωi	:In̊(1"H Y ,\s&ǋ$>+x]&ZzooҾ6[%~E:m[4?k|s;Ro]AHa4owAXa]~#u[ XGRΧ.dem]E.Mz5!*	%&d-"|e:9~Gt,	ȊXjH}4*FރUmۄ{uZs{Hf$ܖIq'/η
>{PKWV>q<  Q  PK  ]W            /   ch/qos/logback/core/pattern/parser/Parser.classY	|}VYF,1HAWƺ
j,-^,;#!MRrCڐ%MiKF)Ih6GۤM$mĐ|hv%-bg}/>f
Sm7Xv[?dK#aT"J@sv.EY<t3.6:ٴS rahub@K)19q|mM@YiHQt4b2[G쐓7I#7Ҽ덣F۔δmCJjJZ͔'j8O`Rܤ9>1q;e		0tnvEgxLg;z_Vn d
9ndSf։O9'me5lR821s,Xi#C"ք	J R@
#yq(c^
QX;mM樜zZ*lh^oe5fvmZp}MENrU`]I;wHݗ؁K¶t-6dnܖ\
ҦuKfM:ttJ:~brU:Vk.2n0ѰG^$.,S,q~}TOG/ĩ<}RT.5#MǓ]+p˅RHbH<3SNOe2We+}K.{Pa%_)a$HOL kuF&Fc쨑Mj⠛ݤuR\yLq銹,UlܿC2 RE]O4;.Ԉ$Gv'zdkd(798-	߿{n,qLhHG.X
q4DEG:K$7 G,(RtDyJpʋ`p0%p9K'ًŖ"c,x`W2?7>|4qBǍgPOo<qUABUr7xRvp!!眩/͟?ذ9cBV&o4pŶ4]Փh`ڙ[|%6KVZ2{u!3>&/u'^ғ<qʏIj¸&R?d(@ǟEE-;n{r}bJh^cByEeJN;k߽x|P_˲5( pd+ycc|ʇ]C12p\{ۜm4A6[)M8͓i&~	}´Ӷl
k:N̹l>>"G($&Zڀ
ܮ19{
{=eqQvwk|?Ohu
-heO>.vhtʯ'>)pRc-wЯa3hxJǧe.+0ҝ1l-/$|:>3kFRsS$tzC!|f.cL
*pRxj"b1 ĐLtĞ"K,s)AL /&Ya2;l^hU2>]O7Xog^"^R~eAݪPf!3?,{lɦ22|Z{΄!V&a2_tƑ
(Ks8	G7/2Lc般{#tBl[E-eHc1?%4斫\)խH;Qs?xeR7gNP)d)[Vv*QK^AŕS2Pթ!l)ue͑BREgC(WuI)fیsr
V:{T3);ԙx]o_\vTV'CT>ewLIwYc;y#g:֘
̗sD>bq5JF"j7Д`]0l15aGL_
&q&ְk+Qm{cOU\ɽ.Fv,cZ֑\x2;~
'd2$Y3-e뗞3;!h,[U3Z,㵞cŧ1+xo 
<hlub)uMYF*w%o[uo;&>1)6E`mAmX}
򗝂Z_]- ՖTS$u#lnuA?Yli8.xTc
EDT	!^wy\F#3z{EB;ȹ {_>Q OhfJ̃C !f
?
؃NY(tGm	>˔9Ðn4;.M\At
ήO3F՞~ί2~+=&eh/TU,=C72!4wi
{
Aq]}gNcwZ(խo Q<-cpX	eogF[+G=gO[h˖Y:nGOWm/^sjb޷B}5!eyv\=g[XC4T#j-k9YGk Sۆ鵏p7#^T=l㽞лT:An$ъ"JsH׹tٷanGoG&ܡHIegi~w+o}2syKME+ɬQY?F7*N@yQrݣWUx8˨w7M
'gqH1qO>@e9!mbO$m*σ]Bymd^PEe<70hD1O93XzOwW6UN/$֓<HYY8ara*'2>-Bh*DDQ+E_Y\"v;̛f/`$={Gb3+GA7\r/4Umh0DWYk3xIIR{)xw֦ivtYQ:tΏ@w,؟d
)fOc$f&"1Iw`եJBkj*׳&`0_QdWRfEqЧxܣxN+xeb$₅LAʫQt(KX5VƇz|pXO
b_Gf//Օ袺-20 [oDhXxd)_Z͋o}#oY[i'd*
&HC"
5~Nbxg-cM,&߾j,{Hp|5,8ZBBN	bCnk4>u	 i.
󔃵tKXh~ZL넬,+!rumTוbbS""6PKw[
  ;   PK  ]W            :   ch/qos/logback/core/pattern/parser/SimpleKeywordNode.classUSUnv[Z(P)V;) (6m 5lM$[t?q|Sg83MsnCHCr=;wιw n 0^;^r*E.9Mnz)*"Rՠ paAӮ hִM>ПzJz(J*N(4)HQ07jq~թqӱz<unZia=B/1uc8@	F3
g1^u^&'&r

%su*!-7"Q
Cצn	1\RpY8$Ak;)ɷFdD椆&^kM9{aH*B3K#4!wC_7US5l6Nnt (Jpڤj]f=6(61d)bxp,d⎆0kdKw4iȸaZ8Ǹ_Yu^wc-mG2+m,7H/Zrn)cWMj#|ʈM`Mbm՗hE2!V9f.'ɋz-@tp#WpnX0{[]D$9wڢNً1F`l"Ԫ}˨0vG񥊯oĸ>t֍w-g"psexcyY׎ܟ}eL.Eٶ[:EUbhW|g9U:Zgh,ݱdd%K2C'4O4 J! ˙@",,';
9	65}}hizﺒ?#P@_C|L M~A\P7QHcM:
jѠ|K,2(2TGi$UtwRA7B]FX&BF%Hxmr>m1$gLSԑMe6fIY	BTKưUe`@w{ie_PEV='EZ&hy+.nB+ =n.n./[ppݔ>{43$neGDR#IC#TB9}.(gPK#  
  PK  ]W            .   ch/qos/logback/core/pattern/parser/Token.classVs]EȷŘ$;Ȳ\bb+H.NRb5
!ڤ$<dR/LN_;gbso| įb	^1Q_Mg뮹j:qD#4du-}nkQ]OWmLok:uNt{ݬt[u=#\2k-U_8MתsV#1$NJqYu=ӝ@z"
S@d%s_}/nԚ}J	<'e9턣a4蚲t4岕Li"޴8[p9eg2拥b~XF}RD)SLgٲaX):2(8pX7'zp-wk݆{fHKc/jXFx/rC5At˦JVV*J8 ךF{^U*fS~ @
\8/*L =nI/SkdֳMuix4(}l)]H(]yTJRs6S-1旭3CraEDŲ$X
Ŋ<O^,.-2SsUqtɺ%b)?QYgdS.˷r7XVt1;g/9nWLb,TU6g8}f]X}[
?
{WKoF8ʱUӭ4͑dN`S!\R;w2G͵z(&	VDe
?hK7X)7{j͟t%-Us6\ț!UHRk|jQqt)~09뤅ª_+oXMUvn:uڨ/`ζכmѣeڈf61ije5D^7ɚh>z,18E3OG8}|~8
"cz|!KzMo>I_g ]%L^&j&g.Ϛj/{I|X|po*#*9gN
qᯕ׸),=9\Q^G^gm(vēeM$]}eWv'){ڕqsbBʣ{|{{_>+5zz{oyGiJa\$o#FP$p S1ɳqnZE~ۡP	3
lZeʙ~4;m=.y-by"'/;y|j;'_[Vɽ I Jkɽ?4ACOG ׄ=)]C|F$ yNfX!!QP0X8 .sWx5R6!Ik1ƹG&q1^Ŀt/FN~xe;!;,6sp`M+:|"wХa8GV( IF(3,6%@u	q#y@#t&5[D#wGȗ7o$ǃ'Q较S RCm:xoMn1>ﳕ?Q|#'l7Uz~ԭ:ӾC/orO*cAu%p⏈\8
&$3|o0-Ͻo)>
O_XSSU$!7IhT#xA^BjZ	|/K<_PK'z  
  PK  ]W            C   ch/qos/logback/core/pattern/parser/TokenStream$TokenizerState.classTkOA=CEj, x@Bb?ev?$B4>wՂ6;s9c
},)hc-hoVu*[fVv\6=6[f8{.7wwuxA!9#[7u#cd-IO툊\.W3ja)<
U?ΖK͙*:ČZX7r9	1]=Z163욱szsAE'LiVgH?ozЫKE\b)ʿ4ߚZմ+Za%/{eWT*$d.֬yŪYMJ,2}AHACl˛cJ̥6"hE#FFABV1
M,,ưLHT/ࢳMӑlVanUiDK}ylV7L.U6w;e_ގn!QcDub^ݥ@2Ax\W{1bsTJLwn/[1"5^V 0tr]yƜ=YAzC?R^& >>v(.e7)F(>B!z>P0!pm?I(Fc	6|C0o;z]ܓ/>J )6N TGq?<]Hh{(S1q--
F
RE/kpzIi 5BSж/t7A(2HdpX2Qd?=-FE4CQob0/1dMc1PKg37  E  PK  ]W            4   ch/qos/logback/core/pattern/parser/TokenStream.classXkp=kٖbpPHe;J$[8D~c;NZZJdIHkIy(P(h!ʣۀ!(Ђ;m3tGGEϽZVb<{{}|߽{(x׉<C)4>ЧCR3RN+Xe	0d?lD}`8%R!-opHAH,blQ(v9NbDNhɔwN#kC
{5T
9
4)`Yp

p+pgmC
>	StS]b@B,xctwvP9Q+8ovZ)+d`WCG]sogW]WR5e*[AJ3TJD<%JЅXD
ݤ"cP$D3Ѩ>ECzhehVAyl8Ɠ^}(ax-ޔ4
Ư.Tb,8*3U|ӐܥbF?K1s! nSy
Nv$uɤ6I.lZ<__ד.ԢP/Р3+.JBDXd8Ӣ"U4X87GQZB*4g59>_13UEش5Ҍx8 V]C*I$!=j$.ۧiG V*vi94ڵ$S\.r}V(ZtX)~xpЧȈg:"W. ,/<Ghn0DD^#ߣ	v<TSTW#xᶮ֮m
ޮV'.SXS3ŦZJw{LߟE거7?#\H`ZB+jV"UPu\E9IX5*u4%CrY^q/ɬИKq
,eŔ@fR?U xI=
ul65hdم;m'TqsAɲ jx0<$jR֍b|W=mK*hJ:TyC*//RvApk4"VVXq5`LLc~i;Sz
MET<+(NF+Z&S#1uxOOvi}Q]֒l
fͺي&U}-Z"c>Smj N*|s9uVGg|e wFb1-9Μ䙕WyqF񬓱6NV>#ߞcV4t\z
ΓނfNA{
Äk.+c1=jǹӏx<ۉ2P8#ۅ8vËG-(	{
G_=(G3dTC.4~*Mȏ+de(b8|<Z=u}GP6>(WWVݏ	TVr}bx|U$>@|q.L Cx:A4f5!@6ЀOcT}A'\Nv÷`=L74Om]9,1Y/PNrr>!n	ky:Wʪ1Ө4{-i.{i,2{iR${i8_nwY6<GU4֓垞yOiwПiVy)I&aR4*{q(ӍA'{!C<f\+q)ފ0n >U&WR>~$>~w
ec\~nqYy@./b\q#	vp;1DФ_(YL!WƋ]ޅ?7E0wVف<ZH"#p4՞1\z~֎ZPעg?7bnR^;ncocClw()'b'{"6;6˖(+vOSm	apn|%sS6!0IwY[6RV
Ԃ"Y?/H`p&5]M8'oKuRMlԭ&Sv+<CXbw8cRFɒa{XVeC,sY|by)D477788V,+h?-Gu<0LUmi
_Bnil	!; ʀ,'9ʉzO+Y+@F<])ڧ	tV0=Bc۱X9Чreҩ؞(C%5IN;5XH>8ffRb̄;<Up>=^wf:!{al> .p;ؐϱM$f,?(BЇ2'X^w
&?q
Mηb5CK&i7|\{ҧkؤؤؤdcSSQ.+;ߨ/(iinvP6Rs#Et;LBS*_UX?Qr[@f~
?c~kxNZSD~+ "dٟ/Dׯ,OOJ;,d^쉇gږ]ÓYP>v>61u)9x z{%Îeo-{R3Kb
NEυw/?PKv
    PK  ]W            ;   ch/qos/logback/core/pattern/util/AlmostAsIsEscapeUtil.classQn1}l
@ڀTHeRޝnJ~Tձ		Ìy/ xF
hf(d$SR^FT^rԹW'].g6ڿ%wv[X"lƔqȬq^&^HJ;ï4qĊfҿcUA\řu
ܟ̞P:t6ű,u`'!,]и1(?6610(#fVj@h٪nu 6êsϕLЏx،V9v
x5~nqY2w^m%HS^Hf޺	u<)m{-$|42>PK.    PK  ]W            5   ch/qos/logback/core/pattern/util/AsIsEscapeUtil.classRNQ]^K-rUQ-i8!1ᡄ&4i-/N8o	| EgڤQl/vZg}ws`JABsC
O9WnB(i_'\ٛ,PrOQ!,OX'Ia靖2Fh5cm3=gFP|bG
"%B$*EhOĝ(verjayԙ0y;8SէQx\vWz=idcN?;kT1ic;anD2Mc@'Vp'`CJ'AXl{ȡ*_ax&˜	ľu
=-fVٖG 9{^:^CFWZU
ON[W?Tc
3#XD댠,z͸,mƭ#oPK[`    PK  ]W            2   ch/qos/logback/core/pattern/util/IEscapeUtil.classeM
@JQ}ފ! u_մŵu: =T]
0| VyiX<XŵpNي[Wh:v:&X*CZ*T<٢ʣ?gf&ĴV]yg>0@G{c7PK4
      PK  ]W            8   ch/qos/logback/core/pattern/util/RegularEscapeUtil.classUSW.	A"lQ*PnKX즻N3g^xK3:Ӿљ~wZ3sOp0A=w{Zbz:wW]Q_w. B#؇K3EnE2ۛ
c?Fp ^\Y\6h4dwrw0%M`0r҆Uit޲etՍuY=䵲A
/ZvIs̒f;=;;#N8)x,j%X)I{eWfA'*i2cy͝%J#Lf6vUt.>(H;| I
i% (,/Z|+N$}%m@r;@е`rW:8FaRX)4Z3i1ٺ:ה~wIgNM#һкWg@{*Y¶UHw8'rNd^1)X"	.[骡Y	NiB'=Ǹ9cDEKg1X;/uuQ9ߖ˖:d n	jWq͍-R2b >m+6er4)tSS35[5ðB\sU<Zy;M
|=kY8/Z[3̂!IZwV{x+eW"<gtW0iJ;ch# Xc5 V𿛲8'#|(Oi{}/
T
p	dnHy;5tD5{} urFאٺ~>
UhcUNEU:8_7;[O6o
?&~ya\AS}<pЋeU
+en4c^k(
u&%gJzW]I5|{CPO=-Sϐ)h':Ts:+F18OmZϳkbvCw9
1>
s:AI=G21P!/H?с>(}g.(8wwX}-/0Gbх'({ڻ۵5Ƣ)OĢCihPA]hB	mh{(GH
х"gm~K,ޠTO.3CfϐYU˲bӬ
6Gq
{sKZ=c<f?__>>UVi;ucޘ"i|ȫH+!IU}z`M΢vnFWsސCMW&c; PK(  K
  PK  ]W            ;   ch/qos/logback/core/pattern/util/RestrictedEscapeUtil.classRn@=y.M
	%q
 X Y
T"n،Il?	| k6EbQ;N$Mfc9Ν pc
E%	SAXScTz)16:VqIn`
41A<;mtt\ƆMT	OHƬ"HCv6{J7:ݥx

Cobk]ή0V$TƁz)Fy>M<ל԰b:< ;JF+Wr=1W<YL'~B8W]#`&Fb;怰6'p}7?/yB6@Az?w<z?bO>UXC%y9	ySG[b[
_7,-Ә[lnĶu<	FgT:+:Ŋ:o~w^%vr3vKpwYJyf.GPK[    PK  ]W            C   ch/qos/logback/core/property/CanonicalHostNamePropertyDefiner.classRN1=&BRZ
A*!*F٘İp+x	H|@?P?h̜slg b )idVt.3k#/
dnPoB`an۪Wl02~'a0l[u|VŹ|gmJ[֡7aP\8eX,sX=L`#q"zuT=&HT\	ɏQaĐ.usr[mץ)!c~M]0m[*bÏByzW&6qGm|bqwOPSf3`I{b6`s>cT=9^`Ѹ=47d_PKvR    PK  ]W            <   ch/qos/logback/core/property/FileExistsPropertyDefiner.classRkOA=CKlY	@H|@P~]O_`@4w%(_w{ιg ,㹍>,#0l{V7?x N"RGŁ%CfMvZgHʵd1`vð%LPM鋍2V`tU!_}?q睖"i°gUC%pP[]ߎ6Cu0V]g1;LZn܆pcmr|#Ț9k:+:xl	cc]3L9#m/xEL^C
6dV!=0hr#fZ%qTj	c.iS_?ZP14H[&:ݠ5Ŧ.ިgQ`\G1M9=g3+`_),Ō,bs^k`_iټBҼNZY2?j.Pc0~^ ,gP_2UZ W>;wz'xpI4eƉX"e`ykxg"h~bYҧFPKzT]H  1  PK  ]W            @   ch/qos/logback/core/property/ResourceExistsPropertyDefiner.classS[OAn.+ "J`oʂH%\PPovhWݺ;5Gb&c<b;{.sfǯ =hD!Sk\ߴF^53m	O>#uXr,*CcHn A?Vbm{5!eIdM;
X1Q
c. 0O--nIux-mAK2LdRgmT#ZO}/N{4p	Sq^ozC[1+f\5s=\^WngBv~X}I9BwJ_uڂ;k~ԉ^,!hGKt[탪vy+ܳ<LFe?mLla<X-{'nE&0eI&V
Kԝ[j_PHjq^OcbzO4ޠI6iht
p(GhG<B
U+g|?z]$R0٩
TTXnyrecC"쨓\*|}hj$$`DC$JaG8
Oc@fHz鋫ɝPKq    PK  ]W            3   ch/qos/logback/core/read/CyclicBufferAppender.classTkOA=Sm,Q_vZT4v;݅D$QL4wv떖?w{??~}1$אpZ7޵\ѪWMan̷ۼY΂rh7m0˯B:	U 4~n֌Vö6^N!|j$TVN C:ovahz!+0C1ʠWU&pD8p=D昆]V	8ŐU|^^&4YZ5U^0uq5B~M;aSb7޺Ph] ({!ľi
>7]oކC&\|\(HbF+vlrYmP&SiYfctlɸn{yD3ލA?Nۊ'&oz=P:0D7fyd%t~#+.-
"pW\JuF˷zK}%EgB]mm8g{Ic^U݀L_;)GK+PQ`hߐܦ Wqc&v{1g2sNژCH~7dhi$lee,dɆ,+UgؓvT"j*A]|MB&;8oE$1M!xpP҈nvZjEq7vR%<"	
{	^^fوv9LIEm;pi+eYȊ$	EgpǧGRRq>Rj*xqs\$ҥTTPB%jBĭR#pDHpOG31+tq%D0"cҌ%,_PK@1d  y  PK  ]W            +   ch/qos/logback/core/read/ListAppender.classN@ݘ@9BJ$D+ze(ثA*Bm%uޙ÷X(`:x,Ü~n7?sX	wQ g٪dRc0JkuDRĆ#A8ca9<puG3+C޻ F1fak$CytwO*kG=ٌxQ4CUU/q@OFb!>obuDVEb?#ѓi?X*I~DF}nm<-={qGC>AS1OE#Ez,-71qt.|%r`	:SI9zLYM?&O#c$)Jn-Y{X t_n.x7}]o+]PKh  i  PK  ]W            6   ch/qos/logback/core/recovery/RecoveryCoordinator.classS]S@=K?)@
ߕ"Ъ[)Q^R/TorԻVGL&nsﹻ~#h/ ;ھ4{+]1t!8kڦ;HC3L缚ֆ?M1Ҏ}9HxFsgӴ5;!(
eJ%ÍJM&2(B:trq$V(PJ8Y2w(ECtp3_2E0`PtS"

6^\#
΋]MrՔiYfU) @z<,dB6KK(4~yirnW]v˚GUN"Vܣ|naMב7mcyowpJچ%\׬Yeoމdլ8/rnKhʶҒ̣VjJج9'lCxV)=˚LBbЏˈan͑v#xI_!9h][#<Rz{t#J}B7}1GaX6 F	zghUa
,xy<dhOtJ$Bly;#yR(ר-:.(AG*qB{K}M8AHI!E[2)nGS0e"gfp*#q[Ľ
Wc$+G%5::)FSTe>X$"Ķy1k	*MjWMYuhHBStNO_R*0tɣIpoPK;    PK  ]W            3   ch/qos/logback/core/recovery/RecoveryListener.class]MA_ƂXKkH$طRtjP[بUWu $0<ړfh/:nr]fa"ީBLLW;\ 6|IΎVNɕkk@뗜yw-P/':W6|*je"=h
PKz      PK  ]W            <   ch/qos/logback/core/recovery/ResilientFileOutputStream.classUmSU~.$Y[R^Rhm-hjEA*`՛
lYvΈtpƯl`{^_ fP
":17//k9[end
YWΞpOgZJ]$]w'bL۔'Sk@w5i00CJ&ǳU!9
aS8+.ng37.鸌+DxCŋUd=WV+*gcPU"jgP
I0ЦUq:p
+*yKpmu-mnbL5l4Vo'1)L3Tٴ=nJVЇ^)̥3r	PFG1\;"LM+Or[z`jw2^0Z྆l^BJ2FsU;rQhAy,H
؞inYd(:ָk}`m0[gXx&
e_%'edx!jҤikX`fynWNbHQ%Ix-঑PU:t|,<5˓eٓ;<w!%AndsIזv*^<F73L+cd3\İ7x[O[7=gGh~q~
-lZvxqv룼(qu&ZoynY%ST/M-yRfVT5FJ*mA(M].[E1G{;}:]S#"AH|C#x7zQ:0I~cIL<i8>Sxv:B衻ފ`*X(;Pt2$B;q/(.<@QNZƉJ~KALܥ_ayH	2V/%+HcͩS̸?;n2mNzмЌ_1>zl+`G+m PK!q-    PK  ]W            <   ch/qos/logback/core/recovery/ResilientOutputStreamBase.classXyx~'$@bp&A-IIЄP$ى;DPmj=Z(ö [}}٧O$<y3x~ewj(D%zԴYg8t8CRP`Mg@uMW	Q"a4&7Zv4ehьCkLFlmCAYjҎqGϤt%./P*,/V6s4c)COSk
KYLE3P´\[`u\99BHVrL(pShL+`C,LӉ-j\JEX`dYUF҉jbQ1jʴwy-@Ȭ!z5lbJ5lS;14T_iQP`ъL5Ѐ-

G2ÊPLZ
W-&meS{\i6rSvL6
-.fh:1FLx+IJNᷰ/%NPRpAuJ餰e1^t0>+Ӣ'TR[E3h<gu[
^Ol3dƔsdݐnV
5\;tԝ=3  8zaTOלX/kgPleN{4$.ayHsJIr(;,uWi)0P0/΁5xJÐ <<'R崳#aQ07*8KYm
dʲew37i8׳a#fLԕOmr2]"t}7MΤ;1|][pCt4|Ihm*ޮ.=Y[8ꩬ7s3S9{qwj7MTz8w<wx码kn[op*֑'<b竸 c*mkxv51AaѝSiO&;:;wwonֹ?owrDHR-as_qʞ0
1/5͹ꥩ҄6ڲC=FS!%3x΀qr79ت{a4{(5]
Sy+Tnӡ(zv7.cR= S
.Ǡ.g{fD_ȷEnPgf:'-xHC=zդ}j3W>SUDae3Ic)*fNh,v2pXv2ˡ_^ĉ2(Ʒ	
ep=a-YX8Vh{53!S<Yab?cRa;+v/+&AxFuqp?g1$w456nޞ7G/C~7~)X=>h
ф
$O0zORMvU²ñ9O;
rnݚoT#%?s_TMvѻG9wϽWO
IO՚Sm;/*n[bm
x
OT򏟬Ի$5([HIsMWQN59	%*~Fc(<%{'Q1eRiVP[_	=.ڬG1|\kU[y+^"^ʎ@
C0 ")S糵ĳu((B	6:4iV`Ԑ|WOKgR}H`cZ\;ō,QYGy傁qc\d.f>n=eq4RUXFUsK饂aJTZ4񛺙gn#֐q$Dg=)Ip=NsHK\]*UJQ?-"Cr8vFaiqrqq0Z)+q5:)y
k-So
CaȅQ0D!r!v8W\ &"D4q%uy=K_%\+U\ь⋇b&ȃ&;#V*<]`Gv%l\e>ohw l kM>(؂{hBеU?]՞82=ޓHWN`NEt#yʐ7u8,_l'tǦD$]͐R7!7	odqo|1Ny/\xѷ0,GSG.R9$ἄ'Dӈ,յA[vC⽓lAɻ wS^j똒m/:*ᩗ?|淾bpopjaY(寻O1i"[f13`?ȱGXGؠGã6 
*W>wk"o18|LuA	9,<M*=b>ֱ8n5U<Ɔ}cIy#)\=t3L<>-!FIgYp\@%*y| GJ,hwwzWw_=D*ԎԽ8uF},!ɍ^)cgU\9Dd}e@]^{뽐TzRfh*_R/˼n_pe|)MmoOWPKF
    PK  ]W            >   ch/qos/logback/core/recovery/ResilientSyslogOutputStream.classTnG=dqL
@RH6hB$C-z옝qߤJDTCUJ;3;~ nbE#>BFR:6A$"T"jVM"ׂp[aY\z6Q9p=|և;N776|wxgz*z@!R	X$?i,L0		8pfqIFYS8ǐSpL)s4f[=ѨD$I%c8Ǜ␛J:T˘w
2 me$Wi:\t?Kե$0"9f5޶HHزGx"ww3ov%ŲR'C2RTӸױmu¦xge(s_0ݍSC<Z"݈SG+`92U<R(uNB.mnf	lrkJmz$̮jQc0FP˯G)-}Mp;xh˽0.2WMD֚<4*07]`&mǍHRvku0NKҠEui̫ƱH*ZP|ϰAR<bx<.9:9:[
k<;ȲL_#4o8?p8y3~ K><
4NpE\,!Rs Ѻ@V_Y[gqE
xCǯ=υԺz=/7ӿ-J"P11Q$}<.ϵnw:C,j
.nop'UCw[TS$waPK"Y    PK  ]W            O   ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.classWSW=vq`AQQMF֠B\ Ffg֙Y}$O~UJsof
vLO__O? ?PJ,bGgl7i#C\K#m54
"iHfcdD8MC?/57,ke45礓*CqǓ*T,aXlc;jbe*개!3CbLo~ސSd=@A9UWJj40X	 ru7(,
'9sW*FZ		գX
cJY¡w1hhTNzl`XzԀ'sɠs$65uO:-t/}TU&aUm;fxtG%ayeŨ<*6cCaXYnwNAe}bm>j~Q)؎>
O=MaCbn{9{ڜxjvlx@|ykZJSq hGa2\'i8.CE'%~yv\NFEP6Fbqtɍ=*zGL]0^2CX_%0ɣ^_m@Cզm#Ib̩8ǉy](<1
CK?=@qay{"cfڔA#CU y$W4e7)*NKV*ʌ5lˎi(v$j8P6ɞf(ʞ#KK6#&/?`I0ԕo*SFgfBO",B(i;O j
K
CMòuncPF
tGނ('e?7;RkɀGzx1tpT;ƅ!Soc2TY.ocAQ33M@!ulOx)4M
#J=>)H[7Eu\ml.9zOBch/Y95x,g'asYm[Ih${$:K²ݶ=sxGQn`Ygbb; ӸDyrBgf$DBhl2龞l`C;K]@H&k%*&_-]+1||-'o6LaF'c/NB ʛmcbjv_seO=&{m,f5cYIu{GV<PF#u
ȿ(un=hF7<KEp
(y@3$/])]FZ:jcUW<x	4_OrZ7Н
ģ7p_#FW lliҸx$S1fŐcxٷ\j$}R(VM2?>턥{ٽ58{)W& 8Ro hZ7pF)EFގ$A$mjh\]7a2o[/MtYB:^ͤN)0By&cx"Dޥs]z0LLDhC>$42} Hݹ_ӲH24>Oihѯszߒ,FwPKeBؙ    PK  ]W            <   ch/qos/logback/core/rolling/FixedWindowRollingPolicy$1.classRn0=n-`e0F	?7U(ڤ*uËn5 !B|*v@bQ>>o pr.gXC}wsmoR2BzodDKut(aZn"
(:(8$7eGԺV2<2N0#
oY
oH$*R=NA!uN뜋3gp	e(lrpaq7|@W|ؔB
c*.[[^pqVk%`W<IO 4Dw7e0P̵5F`rPjT	.pє,w:qc;"Av[<"NRr[Q$L]q,255-+Wl1L
wҌ+g8;䞧p1\$OG^<p\
X}Y\%|*E~ӡr.XUi2UܢXJ}S.PK>*E    PK  ]W            :   ch/qos/logback/core/rolling/FixedWindowRollingPolicy.classX	|d7 rC @ MYlb6	;IFfwِ֙xVUmZj[EZammkoZmնZ푰,5vfw\x<(뭿rMgVl
VqP2x-LHԷgmik.PHZ15]ނCnt]Oj	5L*PVq8Ń
&T'dF2nm?J4o~[OS0	#J~b/	<9MtĬ=!C^:T0݆6j9
Jmzn\Wצ>H5 
Wy0_`(lt4?桚QPC۫;
Q*XZKGnPʸNsBn"ecX+{DWW쟣lj"V]%ӫVMu*TXFm[dIE,SY+"jcZYӵ#c$S&̹V;ڝLE%<X)0ko4͌cz%eX-IK
e,c[S:'NfIN%3f/VgT
G%FN,v=^4	߾̙t2fP:VFkmY{L9^UXT3
$E6$TN66Sdzn(nRVr^󢝔hjItOCA'$m\-bC"ʳSCQ	[FterU/JkK+x/-Zb]B)F5G'0Mu訤tfvr1"a[\yVЃ^J0tZYnwX$)G)WGg\`'$c֏$X8Jc8æ\i|,8[;}
3Tl\Tt׉4d[	ђFj˥
.j1b#L@z7n"'ep9)ˋ׷H]j|˳ec1,*f&W*kXE2muE7M|DGٔGY4G15`^W	ftM5Ǎ0ՋJ^*pڼ%WRG7lH$.a'n§)Hm)SGW#z2:|l{p"
Kqwqd8z|؅أ7zp*ONun>"MٲXP)Rzr,*0!+8LZX`MU
^EKUzGUGʸ꘰+QR%NˎIdQ(S)ݬF,W|
_'M˨RL|%	}sl}O*&쾂L׺B=Cئp[4;NfIʶ`#v#mmA1&Ehۺv6YL,Mu#Df7VVS~ۊiff<Nr&(0?$@K@ʓ/HĒ6߃g:Yv|$C:z2/׏uK͍F#ٖtH
v<·YMam=6IdovruFJONxW-vL۬"%;n!xLXoYC1բVeJjQƴ$w0܆%nWK9Qx
&;z<z))nqKt|eՌ}iՑN56#6YvT	hcfb|9:52.T
G#ـδMZ̵lo36٠%T5[ֶt9訍)-'N7Y
d2P2
hGw<bQeUx)Ub̦$]J=v*-TM,wF4q+=+1	71SzNF>|gXKҨ~	BŦ;%P:`g~D(bxc	|a)~LJ
~[p9d">Sp:f?NCyz?"BL
ጀ9=a&X(Ͼ
ߕ%`b$J>L7r1O"u{Vħ5 G~`Allڡ,zS8ls7fCKk*_ByWJ2ck)bsȃ+J*kkqzBaDM3&΁MK5Dm̝A]R'u/]x$#m389
y1'qQn =b	]nh3vr z&f<_~I~xM10aWstBt/vܟ^G 4{N	4{c$iƖEp[pyV#Ln)۲,k2Zk*7*
]I0;!vg[*Kkf0DA¼,Z*WrJz)Ao߃qڃx1U%G94C8Xw<H
gLʨsIMC,(B%eǇ-e;
jQ6R՘k;7n`|."f% 6JP;)U݁	/%^YJ]KYi
s~ߓj:iX痳cFa`aױ܃4xl~Ƚ3C">2%Ø+L~.E7fnݼVO=̪<e	ჟ/_ z8&J^^#_\fJ6aCzXzrg}M%|E>#
!H	%TcPKis    PK  ]W            5   ch/qos/logback/core/rolling/RollingFileAppender.classY	x\y=Wیg˒,[^/`iy$F%,
Yѓ5x4o捍!Ж^6Fb4`KJ&iBӴ
ma{3Y櫿O3=z/qi תrFy`PlʏV3/B}(_!mA{8bbFtȰ
ѰY!zE
UwP>JX"t0gŝ:XBbfPaJhH8z0׶'zH8tTT&ٹ\\T(̙Ds:(䛊mJ,P0n} jGD碝,h*IiX%
GBH푔!22*
,݊*Td[[NBJ\0egw`W_BY6
QjjPP{%(;mݲ!AQm\`D,	G"Rrա#tݴZeY<L;q8l&YTXoB:0dF;s{$.tc!Q1t+6@ˠiٔp4li62-a:
+Z{:;;vvt>7ֽ?hoЌM2^A-
.9dm:6lz""pmQ/h؊VgˤktaKv
7XcBJbѡ^ݶ
+:a?e6̘aG!"񎑆9'A-Mc_ tkq LAYC@kZ!&װKBҏȮަ~Qhiqej"M+h@DÜv:{5s3nآak
3fQj,#.4uq$3#B
1
"Ð
k\B^wOw#Ğ6*w"3%02Ȝw*hN
NE#FÔRL\L^-m	ÆH*LF_"yXÑdnR!j[c|xB݌UpE3d=sS~G* {4<(l8`U^ާ +rAQf\ߢ:?}B	G՚6M,ޢpmazp>?$H6q$VwQ;:ۺ[z[&RJWKo1c>OX/ɜCݕkbL+q|RçiZO
^ÑPS1>>|VZ00/cm7N'yዒ2˦PnNdOixq3ԁ03MQ'qV×ED#	ǃix
"hJ婕iF$ۦ˳5
!;pQ_vbw
g1LFܾ뢆oHlE	N,˶( Ue9RCNՒ^-IJyqیIyAZ]|χk{ls]ˠ,AI;I&7ɁGG2nacR	͙h"n +*=z<d3$54TR*q)a/UL0Qs
/vq2=Cʽd\
X/\f5"fIt&2^h̖
CN-?
NaVB\+HD
O5=9L/@Y
;z
1/#'RU.[[3N#yDd5M*U[T!;UNlÑeU1]o`99=a	u"T_f>5[/jJUi'n)m)Ȧ*GȖ=H|UɼOx|ۯێ56$'-d''^?bFVX@c~
-/%s3%ݯh4-Qݦe]%isi.K:yNV\R͐٭[ay0TүDh^΍W,	}Ly|Kz'dG6g~>
Ro.d&5gy>N@RY&wTvɤ?|s~'Sa'W]U)9HƸ6ⅧHK2MBʦ/VU1Ť[eniwi*PY}-SK)l%IWrُ <ļlY3)l{YoEwZqsV٢hBͱ2QN
@u9>-f`+#zf=bd}&P@U?96y+xkby#pIeXEaȋřl}lU60ܨ0FC%"_S;}pyR]ɋ,JOХq񕝦y0	X(>Vj';_pn=n5}A)查Ӌ2x\a,c?qȿR+G-V:sP"y|}x?uK|E.6xP,@;ű\YXdʫk*@UeT[W:U2rI=%B`KO`9\>%Xx.
9Cch8ycXOk="(f63h
9b\6de;ܙcsTcEtVk:?^
<dǃ`9Ks{7DבiFđMfhBс]	bΦޅq?gn| {-xR
sށAE\3)F{5
:/+[PXPYA߄ZE>'qbgq1T˯󸧳IU{Jk{|dK(Cr*:j$A
nKV|,eri'+ؚ3|wuns
R|W-w*!?yN=;^Zw^
C\T=-U9J5pLN_ @'B
8w_&q,q9/>Y7O(qƼy3c"(dc~͂q)z1,}{><|U6x+(`_b	b62#{Hу'1=L3N~l ø8GHGRd5NVk_mr{r7֪uBBV+קVV;L6PJ17Aorx/R"$/@sCEޮ#3ҷGt\@L!c8~=1_b~>Jo~6>r|	`$qFgauHXOrlG&Ss8'-F5,qy}L.	N$n-rX,^J`Y9~ETK%OӀS6tg9sZ3ʠpqC9RE.?Sԟ2ٴdU4%ԋFMԯc UocKzfuz?k9Tr,Ii~gHyo!*>k	):ĂnH?YCcx2p9E5c*申2MB'#|yE3&ﰪ|/e1[] ^	xȇ7gs+)y>N`Ng\%Kg~m~<#B1R
,7fg)f)FU%[U\~K:ƕF*b5$rwv.J=>CgW)8~Wx_qU%^e]b{ hNAڤ6gDk/Z]~Q5n7pEmnB#_J^SQѪy4+.&<mTۮnP=֜
YTCq<Πl"BRj+C*gޚ^eJPz
̬9١nuB <ۼo#ɻ/n0W-I۽"{wȰ]Evcs8z_udXPr4Ւ*WWKä0a-m']
D*Rwꅔ|u+W|t>w9{ϽJw;
UH PK*  #  PK  ]W            /   ch/qos/logback/core/rolling/RollingPolicy.classQMO1"~w&&	!rB%n⽔q)-k(t=
C3f; \Q 9/&$c!45Z4vd 3Q%3.-ǫHLzRjdP@`#<2o^%fN4`ٺI<x ^Xk&zҩJ㝘Su?ˠE}3,9u5NQghst#a1uN~^a:ARJRfae)T:ƹIeۤV:ȫ{lH=/miQE._PK#;1    PK  ]W            3   ch/qos/logback/core/rolling/RollingPolicyBase.classUrT=vUMRےbJA`@qPCžq$$	t< ŰWUGVg|%={v\M(I!"aQL{Wΰen+oaq6UySW,~W9CtEUd	đ!)$ 4Uʻ\3E{m[5
CZ߃	%._}fZ74}Яe}OpgR;k+-Xd\F^5@p8faF&ôߓ!:g3HVfTMKlG&	q!t:k w..n?T8rs^aW$\aZ=afE6ѰkqrxI1I;p1pUjs45*&>nP;]z7)%>!4^Ku 8g2vŰʐ}eO("o]]qziqJ3K3uPij]yͭʶƅj5KcUmpʷGIƎd!
&3F3
14jpJr'Um;eO@umU<o9ljd,1E7Eux=7M6Hƒ\S]DoDGo5ġ${֏8t=E{Iunx{V	{
/ֱfy8?
p?JaGΥ:BP&ԟq{gMRAep	Z(5![Tg
U]u>'^:.
(*)w(`^}Dy%ϔFuNO+x/7`V\)-ؠBC
@ < @<B}t#<"rzT>tkMqjSz<2/ӓ\PKoJ  	  PK  ]W            1   ch/qos/logback/core/rolling/RolloverFailure.classKO0e)GH,`%*CX'X'.v2X!`eS*:^'Ο XJʣJX;q6I[ėal˟2)M*&VidVZC?x01@iǚk֒m>X5c'P:InI8vM2f-sY{$w9&"ʣۖNL4_6YG9FL[R%wtN$̮"w\k/0rbrL9 a:&%?ymhށn}"+𙻙
ӨE7Yfx%~\C̦z[^a0q`qp/>PKWk׆    PK  ]W            =   ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP$Usage.classSkOA=ݲHȣ⃇ڂRPJxDbyĖ&OXqw?!
Q;cUbb{rg=ܻ3_~`5Dfk/:^jZ9ֳ%
_tkèV˛[Yq0`֖
|!ئޜrY,]0`A,
%/ڮ	
dZrtkY$.Bಆ^}gPp
2g:Ma&}*{1`B)
B@\ ];gM\Tb4TqC1"f"=tP:Wtm7UͪC+kGdѳLboQ]ޙR5xM'N}a6ܱ	%aӧT%1YNk{mdB/yM+p:=!ꑅuO 00EU<NDI=t}q ¸DJډR<ݤhPq](bE7B>FD	ŪdcǸt&izY`p\ԥJ'"T#EIхTG]2Ło*[~VhŐD+I+m#e%*GvEUhǸq}NAL2I]	@2=Ә]PKw~0  `  PK  ]W            7   ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP.classY	|ՙX|LXILBPHX%NG1$)5yl-iԙQiv.RzA`eB%-mwIڽ]3,JbKOow[2Nu U
[Sѷ[N4eM֓3Ѥe?bVq! j4QYimRff200z2#f8;xP>i(ƏF
I]GChT
ft*ti3FMAĐu
WҴLCzs6''
?	ֶ::AC3Qؐٶq)i;1+q
[AEE&\И23L6VVѵk9[wM+u
.+0ٔϜkc3d㰆%.q.Q]Í©*ޤU &l'6𸑵
4;#\.x? ߰I>Ph]Pwv8LghJwXxʵx~5LXvs!Fxuvz39=ճY#3nNǔNmmn
`Bٶeۆχm:OY1/
ub
EY;+qݵ[xFh]~ӝf!~LaG0*L=4􋋛)#(qr0bGkzZDy8f3B[[+l1ঌ.7aC^7pX]8F&%-:qw]EM1qWFp<Q
w㞫$Í-v~29ުpOY=W2C0}tVU(1bt
FL8Krfv0xec
ff7^:FeF7^λvmI=2jx;앝X?~$x@wDJw[*m]WCN5i9(9lNN/0z*gȢY
x$AI~*l4&TNu,T+~?4O$CwŇFF(-wTh^
?"KBetHϏix~\ᚴ>#]l~GaoPWs-~B!`iSuƍ|Qptw,m:׎>c` -mu{VV!|5<aooHoVYVdjUXe'WS,M<0s2Y6O+hASg4|O2y4a01lQxV&0ϲV'IqCFVX-'vQvqi/|Vy-v'R:uLFKY4tqFZ/y/M
[O]Ug!yAóXK#~,7#5au" e"A%Ѻ+80ttO+^W\uhG?k:g;6C,1ʙp}TmBrkXx%K![X2@oi6^%OȆ@둶#~	5"QW5pY,O ~,F~;=&qFjQxq%Ċ`.嚼ؓ98RmO
o_)˙?l,3SY
f/fѻ	414H>'ڼKBXV²2ᜬſp=2L.ſq%0MS/we⍿"dTxKT8_^vtW7;(\pçjҨ-[9^y%}yfCiiɁmS~'\xɗj.juujϹuR]pdPzꃪ$|y3ݱԄKEY/iJ<m]천TM$
//	._$,f޵/gͦ03}[oZdq&mLA%*IdFws!ųd
M^xbʵ򵍜,h_[iUKv'SM18U->adM9!FcQ1ǞLr=LHl=uftɹVBnrC	
	R]{Ȳ\ǵ1Ԫ(R{ԨnuKPaneI1q$eҏ7yA_arm˚e+[(q^A*%
b*aZ<1ocA﫽A\AE%[,Lc+U~_'zߛp-?k}?}
|+nj(ye	d0VAgQWy;u*iR@U[6΢[}}dk"UsXQsy	O,`af *!6a'݂ty7e9̸`FsUq0m)jG{$||z%ͣ+2
B2^@=s"cw}UE˯<&ڟGz0s<ƕ9/~<O3(8DcX^bq0ѸQDcqg#	w^܃i~β{=8`x}$)eCUE>#8^M^þ?ߏ=}5UyK&OE( `E_FO2k!xtv@l^&&`;RZ	|!yOWaDix!E#}D,1QKg<L5EQnYT%{M$'N_E|f%
Z/C4"->9/C[%zY,||p}>-w;h;؃؈wcB+ϻ
%G"ﹰ7[=f0!VFbل^*:֪&"\ul	B:ND-N_>DO~nYÏ?utspߑ _OT%N8yfb??Y|ĠۘG_|1fGюuȢqQ|aVT3GإȱVcj#qQިEm"V8*wQϱ-D:R%s	(yּNdiz}}m:~	
?3U}ߓy'q] x >X?ϴ|uLO_"!ݞe ^db#|V/dȦ=StD!衔%#EY, 냺yW7LeMTk<˯喚5^--5	<>2_%?= yߌKE.MmϭJ{Su#[JԪV&	sxWπ-:E}ߤZ6IS|jlٷCUVY}ګn?PK;<
    PK  ]W            ?   ch/qos/logback/core/rolling/SizeAndTimeBasedRollingPolicy.classVkSU~lX+BMz-X*7KlIwO;8Q:?rt߳	499}>
 *&Zp@6;3=Yqg-@y_Hgݒ߯n,Ju6b#QC}+Yr~~mz~<,qa =!/xfn"35b3(&Ӕ00+8NZ8dAvQ_ObUQ|]dYjvC<W2Hd9= ɾ٧|=SBxnqNc{pa!T8j7hRE\b8]kbRW\UY`[[Hjgrf_:-\AH(\=Ƿj$Z뤢MDn M:}Dݴn=ndϋ|V*i&y9GTTݱa(>b_P!Ka\hv@34-э(㮁IC2UCʂ|ՎAi;u~4*~t|A<IJ{+<p٪.e4S-fG	dج08x["2"9^f:+N5
L[$0FW/My2d%p6ޞԦŔnRP<'TQ8xuaRh?w=	sKy[I1{bSqU3fkX'[o7a}:E-KJ(Х_ԳҎjtf5k<]%7Ժ\(T;4wtgkU.@JV)7RD/A
b([")֌`a(>ۢ3}lO0s3G/54O"h5N-
%MaXyhUpKmY3pU'$~LٗI]lo@71&n|+5з?$m1Lh02rJ[},:сH߉.
YEw.ˑ6< 
Gنaj0G[hX$%^%jFijűzbHmЧk13ט^ͺg0[|/9!I.h\O'_r/PKL{  p  PK  ]W            ;   ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.classU]WE~|l	[JjJm
%#A0lXPOβm7;Awx;ozQϑ9^zox|gbH9r13y}? SW@aV$ݤi5iRtl4r2ws6
hEs9CpѰŋ
.0L	Lfo\?.yJ?$
@ `XʾmƋDXECUS2K\f>\ި|:uM	|5awP)	7p`
ןnXë}$%ż%1p#vxQz?mi|#B
b*H0<I?\a8$`Ty \!´I2<g[m[uBxwU1'5n3Uiw	EKtK2rH%!(pqն(]K5/}!zgHۏ;SUs%hJ_NU#W.3RnQ)S3Md"IPְVϝ/GYC~QuKoe4ގztp ԒT^PPN;hɬa9cVR-u14]np{ucE,+IuK([92AL$0C_OnG`kԌG0)X}E4$źݱBwaZ>u5kM0#)1A zR"As=D#=L7kFBgie7y2qNp#=1$1?1i|cHn4a+ᰊ5m;|&!ߢQ~MzkFh$`rB"6=l6?F2H`2/BW&~Ŕ!{6ik}=?=됱@c
a*(]Hx<!1d#^?eE<㞍mړr}͏	-,R+Aos(.CRK01ErP̺YWlfDg-&'xClS9RE1gK@{ԛ?PKh
P  	  PK  ]W            H   ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicy.classSMK@[wZ)"RRTڢm:M&ٸT=<Q$Txff+ Td@22=}gR13a\xx}Ճ~W	AE͵d4!qㄺ
28>3`7D
!2(Ekgj'Q?`V|G8qZiT%u!&}zHԛJۮN,+AnveFA'#"av*D?tFW'L+4rE<i忺u:>c.B):2V6&>1[\)
0
yX"uX~V Ig]bZa#۰PKF  `  PK  ]W            L   ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.classXy`
96DEf!	9$4	XPd:3a֞ڊbEIBV[mek}Ҟ73YvWo/ V!̐P]i95CՆce6Y㪦DPeP#'cnNת.0
w%[`fP+Js0o=N#oTӤ~mX)CԪ6dzm	ƏzHOet;zءBz'`U5fm+ A+5u%#VbN˄Hl\;dp:FmH׆66d(X(ᄄ]fe}d%HYT:;uE8]B$չS&ghnۖi뺠Fe,23;w	~(	Βq6Αp΋gAW%},=y4U@w~9<efGQ<	u6Ҫ=N[úIH %Ѭhs$,R+T˭q
ȸL$lʝ:LigъNJ"5սpN,7,,hX`v;%..Ac!HYޕ(0O&&=x$$R.K" ḧ́j7"RK® 6[C&R\&)qKq?zRͦ^R~@Bsߗ3_~T;IakL"[=m!!)5(T騘qTHM$̤%dATᶠ,g6U\ ً+A\Na給m5ӷ銨JҲӪRN#Rlag-o.ϛ(VR	RB\N0tDNah

UVDcLUZMxW{Ƌ[;:7vl2{Zљ#;WG_'Z\cE׋
xJ
֢a~]s:#9N".ܱ,A3,TF2&^#v2)H!M5{u5!h7ʸI)Tf!qneLd1dQڴ
]s/6|L5+ɺzA
za
&;Q|L¬JݭdG҆	%2W 2^OzTjDT`yfw2\ZSqTR3~DE?1!RWEgn}ӗM&QoCHkt>#~!0<c%m
rZN
>+eu3bmb715+rө:O9d_ASu6=&KgY1ޡQzE
+!vuŌer_"9CÆӗý\a
/?W$\v8&Q
T#͉4lNcRZ@dm[V/eJSŶ[A^pE8EZu~P1[Q%[o9>,Y4|zp1Ճ=EK]-ʄhSK
LYY[}`LjT,qm5ӭ	J8xҸT\IX%La*'Ua3J5=%6%i[i{cI+?5*izӋ?˔LJH5xF}Eăa%a[q-EƟ#,w2
aPѠWNUs-ؽo}SGEqf̑/tPT2/=p3\Q.6N$ӧj0[9+BoE ΀U6i_<Psr0[oU[yFo#jE]*>ˢJGgnp$N\Aǩq,x	X@ދFSy8rcUK2G<UW`ڴrߪq]y1vU%쾚3Nz'I'-ُ3'pn|Ø{+Iq0N!,Ļޭ|_v Lqly$Dc!/HX'`B;FAJ֨2&xCh:[IeU	ܰ
b}Ԋ]! >rI|ߊJR6py>@3q!s!Z:`ڐD;LWc^ǯx; 	|nqc،y}[<Ûs̋jFa9Fߏu|z12Agi|bn	TE'<HW=!\ZdwAjS؍x.Vu RɣB]p O{ob5y]X<	uy>I_¾{N3g!B7,f<\q]&WL#yGKk@@utR1wֺܫܫ"yz~
x+j87:Qj7\T_@R-?ďdt8"J/`ʏa{0~§ge0.POBLZ\.=Lyي0-k/<_}{ߩ:?qS?xOY@	`ysPKM
  -  PK  ]W            8   ch/qos/logback/core/rolling/TimeBasedRollingPolicy.classY	\y2i贴X,lY>$d		 Yȶ<,0ҲڙEBm6a!%iV:XJNn#mi&=Lֱ{7lg;y{~s S^,=ja+awӊَsl?<R>bV4jVOmPÌNBySa/P0q#~ȈưcFBEƋZ
e>
C!MB{C iXz&4gڎ`Ų9Ԙf4~4`p%Ӵ\&!hQY֩	늢#54fB]8jؠ'6"kk؀o؊9(NsIC3B,m8myj،6B 8X{	Y<̙Ew>=?ڱEyooMk P	[Kq@Eئa1&Gd<aضiZc;CF`{Њ;&8dO6s
궠ݩ&Ǝ"A}4a7a۠am''=-dr6LF9Xxr3 /fD8{;Fי$[)G'N\VB<WAX؞=>Ńi
j0Gg8ĄOibsPK:Fl5GLgJ:k0g#B&#=A`ALBq<셮aaBjSz4iGs10N1xITL-, SE*D1EL%^UJ,t}JCB6:	=fsMۖ3sӢVGCRԺlj`9mtqZpvƆȩ{PIT8g>B{:,*h?:B!SށwVpRX ohi)nyţ*VSӈaV̈91s,	/͑Eh4gx1qٕOS!cҚ28\JToS
OIB^@7As8O@X6;ӯyzK/1
stP)Ij9}DX)+eJd\+z5L3fS§_Ӭl)${ܜ͟[ቃl#aeJkvӱDYI;:Hޑ;;$nY֔":w?I8NIB3.3بc
`Yna
.̖T_$TL˞/ix/VMJ䊼+|{$țqHzSp[Sy J)G=̧=(^*؋?3ªy`d⮣iDgW:/am\U3[ ebE_~ru%_>ŋWEroo;
/R7	32-PW	m^WTsVnTU
"e%J7
6Ci43-G={&a8byK1gc2O@xr@\ws,MyqTQ$~mvI6jLYx0,E&FUb[	9]d*ǸͤHEL;tMץPrŎ"䈟jih<%,e55PA"fz
\"ϱ *axi5u~cVV7p`{X=,]27xLwMp>K-vuu-^>.%'GĐ$.z0=5q&L{|4mo^ZstΣ<flX2<S H>7U")CQscᄩI[ie&r)}hsnao]P9d?z
Ixu/"([B(>涾
5oIއA~ć֖yGnF-IgV+;	.x^L'T{7;Mc@Vxђ͂뙕/?pK@`vfK'G8Y얶AX}4On,̎Q׷f3d"9.ݖNB4>#r>MFЙ0ԍ!#VB͸6RB>bvoo
{5 1K 7^oJ> nA=AʭL>('
/)4X8f>zpp8gcA#3}B6vxJj~Rm+{Gc탢+0Ji&dJGq>fl:iǽf}*Hnȥv٧ƢײN&wyY~l;N=ʒ9yZN.<)i2}Y,%hí*Tc9݄6s_: T!XN|uke|{ێT`:rL_-
~6<tUG2Peh,U2,ulYۘV.ư
ACyVs)Ц&%r
32eb6OˋL_54.`E(1C]Σ+E^#\Ae!\JH]C1`B<Oa|iAWmby4jx,/cJf5~]û(5yCcЗx*pO%\<k,/fkry_{;C_tQ_&\Ņ^x5|\Q'hWE~e@,~؏-8n>daxGq#4{E<x_b_g%~^30IeQ-,8{)jEph?tH48|'ȇsXL*6B"CBR3OLWY5k`GS.~TBN?Ϫ' OuToq,
c]mNYF.YsIp#~CF_5JL]lGdg"i1	3q=8+,ojkYzs
Xj 6//V~}T<qkw^N܈*~>ʳy{9㼏a>ΫϞ񄂼USjLmmb-VsAZՔ^ٍx>/^N%-<brrs*u1؇3.Ƴ8~2#m8E[GPp_*1q2çP	yS޷7Nd}'bw),Y\DTrd3v4Ejf
+[ݧ8__+
6%,>:_ƍX
k"	ER}*KmNgllaXy:4Vlϱ?=;us8؍Tvs:)5qv(s N
<݋Fکj(=:`-߬ƣ*F׉#Zټ:E(MdP}_G6.VF-oNH,F;fѦln|'I^+V/{9T\T /bF.ȗ+0f֧@Vp:ޫqF}"9 լE^ѢFX 1k/jN<jhzwӁe"F7W̻RFLKr*n
dxՙ媭2N3))
,
p!-vm!Z޳x"X)\@AB9g)>IR4P-N+N,qZE&@+sDˈP:\R<)7!;L^;Q<q3L'8V?PKv-  &  PK  ]W            2   ch/qos/logback/core/rolling/TriggeringPolicy.class;o>s>v&FblT̼t" 3 ?'3A +,Q?'(\Ƞ͜L}̴TTFbey%>`22sR}M֌bdLK,)-"#
SAZ32p%,`dE=@O3201+08qyL\@aq3i^ PK   y  PK  ]W            6   ch/qos/logback/core/rolling/TriggeringPolicyBase.classMO1_']
@TK&DJ8ps6]?qDU ~lh3W\9v`呁PS{;q=
PfkGP:Cury#ϰ*d]-}_h
@z[\&2\v%,YhP^@J<r-?22bkϚfa!p<B+3jfNH+2jȐQ'OzzDJG!7#M3x_{j=ѤΔ4\G'Z2TNNZxh,i.n<#)AAdXL5yF)5ypx<=ig$0	
bn>o}QٟUvUPK    PK  ]W            7   ch/qos/logback/core/rolling/helper/ArchiveRemover.classJ1'umx
E(bExOMM5GPzzf7?O 4sW빶/\ZYuTQf!mǛ`>W|dMU	R0zw&%A?yfF`ݚA7)O6=U8y9-iFib#WAiz94cS5707`pzMF'q4Aҿ靕-:
:ř6U]ثj!W
TPKT0#    PK  ]W            8   ch/qos/logback/core/rolling/helper/CompressionMode.classSmOP~ڭ[-RdlCW  C@1%.?u$(㹗}zN~Yj1>hY^P;	Bn~jpoRyZS`P
đ \X_f.̜IH	m^1`P^U0
̛^ZH@!˗w}lݨr'"n74M췛e|-yɝ^VkLhl! G
mļ`rjD\5&J
<؈b{	u%.Q|ݬ](/5Kv
鮾M.]`l!q"
Q%HUܺoGJ\Jh\^.PCh(,NϤ. LuhK8s ~1Bq}	)b(=!ߙ$b?M(z1x&st7NYx"%R⃠q"ŦB09r(ix,J$P%%SG;UM|R:P*[jZe+ޡU^/'(u_v_6}G9C(2Se^\1w[S'; 14f$>	PK|m    PK  ]W            5   ch/qos/logback/core/rolling/helper/Compressor$1.classRn@=Sq\BCy0%eQ౉R)Hj2.SO;րB >
qǍȂUsǙ ۸WEDiwFF+'a$XFiI1W2l#<)39Bh<dx>ę|( r0%L)9v8룂*{+犏sXe	WNpaPq
ӃvbF-ck>.^ŗ|\{-W C񩠊ygN7*8P7|ȳт]nbΥAF͑pS\r'2LV"NI"=`?ׅQ=f/uJ$xʴApUkv<װA:phGg+/]e	\u~&z	Xypdoc:AH o]V~`i{KMOPK|/  k  PK  ]W            G   ch/qos/logback/core/rolling/helper/Compressor$CompressionRunnable.classS]oA=.Еnԯm]cL(hXeSgK& _f31}{gsG 7E
i,2zsRa}s6`_8:M=F
9bU5Z#&r`1{K
=nw 
Z-,f(Fހo?TКI$6`H	i=EW
{Q"_	**&,)vǐY;&оf?fޯyG`4E*..O'
-{aǓ,;xǞI$F1>WWHf:W<NznztD/R0[[uem[=i5gc漇lqcũcj9Y|A_I*z}:S՘ΔΔΔ')_176.QK0%SrFoDFl;Y?OmǚpqY#k
Gs7PK()  a  PK  ]W            3   ch/qos/logback/core/rolling/helper/Compressor.classYxWu;%cYGz"NN"r"jƲH6ݑjfCM[(mZ(!n!
&)ɱ n$n4(-郾H1;v_w{ι9*/vY EOUP>Xbmv=m	1۳T{m1]FmMY) hX]NSXΘ5Nd3#e[}voy
*U[X:
:"$~M^Do8r}F&rq[h~q{Uz54XFM׾
v)HR+ujdAZ#F{ڠס-Wl
ױELIWN
7Ёҋ}V6؎k&wqOK9#*O30q;I鴙HH"C$ay
~J6
EnߑJsMMѢmy,u* "]e5!cq	I'wTTɭ+hǭr'Lޙݮ[F2wK\`y).c@qLrƄ\a-v##fʥ~)PFtщ.
:G~~Jfe(93&WǛ3D#3wΉ[aW*
}n:W
uYHc {Q[
؋}7$p;g51ݞrfp4K=*LvFGMǤLΥaӘ0D蔯*{Ľ8(aƒ21e>5]My@é̮[fɠrKox4uIi%\2U.anL8R^Fι&m)rϔi4&PgͷHz0[Go#UR6vKCpQ',7CA8,b55{1"$~NKj1qc&K0{1
8Ke1i%zb8RKty *R¼~n]L!$bxH~.6C>z%H9W<uL`ǯ^WpFï4THɏǘ&Cd˽-P\1g+{wl~DR>x0Ay0'qLfS:>-/mZczRo3H˅
1B6>'4R7f%̲x瘙ɟ,NFdVg;F2vrdpV:0-R>〛vydv#l'ef+dagtȩ#r:Gvm!w*_Vw+YU#_RWwڐmǲY0TDsxH4:畆輶^i{rE()㕫)ԢȾu||^ѺboY?k7/1y1ΑT43&r<94?@jDo.8osL3ѳ羁aYS
|MgTL)ݪۙĈ앎1X;m62׈:Q죗Y̕F%6Е`
΋̤\$dvƘ0W$",V
(K_ɍʋHCk1SNd+f~ʍ )&

YB%e1
me
.wx,
j4ZKmMɋ~3ۈ,_)IS\*PM76Y،6Zx/MFt.	^oM*	=&{0Wv^ld[z޻O*}mUΜ .0ʫ"ua6sg
,pk	"JZЦ>b:;TZyHYF{?sr9	3RJL	>S2B˶]v FO]~NM^$"]MG$j-mfUsm~B+_l`2]u)JDiٜ +ɝSrFV~okۖYHΫ."b'Tpl9Vfb|W`7	mE:GlǕFGgya[~3Pwϻ7R^@f3A(FT&oE$Y"A!hb+b[R+#aӃZ;ǰi3iۇsQ<k^=F:=ʂ<ه.[46B?(M^ؕU˿WrԈWl:Rorf|0>
o~%7|.+G;=F
3>A6R縢]YhSX$ʏGj
sonBVp:5xB맱%-}W"`3qtУ8s'/ʷxjѷ.|*]GU8&8{ g̓3
5O#QB	4g>|748δ>m-L]'l9Oizjõ󘧇o.鉇kp-K=3ғi'*UL#ѡXp}[U˃SpN],SG0O)5ҩ/5<_vVFza)qGj~[
 7%X^{J%>swL??~?*b)&2(VLq;k`;Ѷ!.^l`6mx31`1{Lގ$MK/0	}!!nDmт+zpTlxg-ӫiAZ1oԧܣDU@(GG(G?#<BbccbzG
g6h.!؅¿7ᐆG4WX)*Bh}W5?Bݞ|J] >׼9xK.RMH
PRL'fhaIGK:J{!7_Qeu:[yUЧ [M-7$~LUFq5(_;ex/Or-\+J}az9Y	I2ݿ8"?92(.>su!9""^}a':<EIF c!GXzF%hN#?|'i3x|9힥'h,->A;h,iq3̈VJI4Hk^O{U<Q$x(MT{$n5
?6j5)K>KXORl9I	Vƨ"N5+*F}ϓe)q0>Omcn.Tn0ڽv~
AW%鸪90wz
=53=_f0J=Ǻ~Z{Y%_/AybȪTw	1	y7+V@>cF㋥N#oP7o1
}bXjce?$bg		?oz ?za
_^Q_B_rO.6i/t0. ;p3V_9;.S#fi鞼N}RSOjbEF,aPףu:VάL
o+.IZֈՎW^k9~tqe#yzFճI=cWlS7&E=owPJDnOŝ]KlG'PK     PK  ]W            ;   ch/qos/logback/core/rolling/helper/DateTokenConverter.classWWHYv캄v )XuZYHl	qAzHcF3̈wIڦtI׸.nS$>Mi/r73-s4oޛ{wwۿGÊiFqMoc	z$ݲݶ (KnTҕܤUWY >)?(4U/J\p36<glpSjY10A þ"Si[5teeSi
!.&O%d COϹ3n=-f'!C/s%eT˦;ҪtFpQ~R3CRqzT1<@sBfO׫vi	͊v#BcʘqůTJuO	"8!!;Z汋cÙay $b/ ),;N
$fD >0M7>,#COBH`NBRF
O4xQx$wH3BǴ38K; 3>Fdڧcm#Y1Ji!a]bu;y5ϝxF|UF(i
\),/	e+2.ٖwxi_8̮
?3PF6͋}p	2(5${bPE
	!}M]+e>HUӐQⶬl
W]JFO/Iӱ9[r"/i9)Yd%lf
mUx&旓䊘{-tSTx)ܤ3jnlr\2?ɭssAr a(925n5`mY1U1vI%*Mz;L3hD%<r&% q %U$M7Qw7CMK3q $.٤^VPRpLs՝B'H)Zɽ+/-TڽY_IVRԼհ_^$p}oRs;=UW-E]&LTr({B
)UPr5zw
ölSd]2
V7~p(azEv6`}]U7k	E<&	BƭC)%oWmte>[G3Qv>/w -Ni]SW%F{+奻Z-Ѳ2\; w>IO'h\ /tީ}qF:Vô`z>O3j:#NN|A{II|dw'>h|ʋ42|a݃ J6ncBbC_q2x?0=&>Ё16?81uD:I4NmLn8" 7uӷ1+8Z?Bvn@"6pVG12E,NQ#4yZ;Ev,1Ebx_JՇKx}{+η?0cޅ.DWⱿHRLFqzOު尛t4s%ɞkj]g|m_7y_\*z⩕;8_NBo#o<ͳ-3VI6Է\͇#2@r,ѿ9ǅ:S5S&ՠqXx#}}}mziۂ"Yy.-q|nnmpg(rn,KQd\'Q C%.4T#h:ȑ!]N݁!Uws+NpFOL}o9P3sMY{b.A'S*(p/snỉ?PKX  B  PK  ]W            9   ch/qos/logback/core/rolling/helper/FileFilterUtil$1.classS]OA=.,]P|	&4]&vg&'^|?xwv>;w=̙o?2Ț0l`p?pAy9n0^ː--!g²1t{`0"j>yӥra۰0I7P$0\?JIur4fLܴqܞ^/s\SPH7nϴ
r$=BcxUn}]#}yB-/A#2[1W^NFBG``H=1L/nɍDudww=m\t1/Eԓ'}A$v<Ě=vP+25|8<\_D>aabaET(U)ϟB^c2'o7@}BO.Y1YQh5OCő'd@af;Iɲզ>e-V/ak4=5%?&t[1VpGw).y1jJ0q<G޼YTbFSOeAIQѶYufSG"kȴPKaQ]  y  PK  ]W            9   ch/qos/logback/core/rolling/helper/FileFilterUtil$2.classS[OA]tB-ETPV.Fc		Mj5)ŧ2i;8%?&>QƳM9s\̷ xmdM6Ɛc(S<9r;^EjcayklI'U֚J#	L(ڸH$!	WP2LWV5,1m↍Ű2t|rJ%%}OH"FI86it01Kh琒}#}yD%&^ ZAWCލi(5W^OFB@\g
QxɍU;֯zj
W"ˣ74@o{GØsQjˡrEZF\΃eH&64@*qJTQ?{~U}w;-F/eH/nP>Cb^^3q$_h7GCŞO`69\Z$ w1Oŏ7M)ztifkgƌvJUUu$+[pjrL<$(Q%:ӿ?Wb|S_HUH-c(NaY6FljH[TPKi
gc    PK  ]W            7   ch/qos/logback/core/rolling/helper/FileFilterUtil.classWwcIK00cqdF`RbAl(f)4KF̌;M4I$mn	]҅qIF$of ˄ޛ}GjRA}BOzq,ulȺ
jEݯ 8Nl>urR56gSY)2M,	;u0Oٶ3ꡩX+猕ٟ:` X6mv%e*e[neIN'N=1%5hRV:+ C
MqŜ<6JtGZNڠa#6):'L%B_-x@E-xP
0,
aA˞<M0icy+D=<%װEPNfYH퉥BOjDu}\[Ŭ1<W/NX0[]J(%cPeiz!4
Ǖ;U4HՊItb؍أ{vA˜,u{yK'2
k >HzVJ,;>@
RX<5u!cGbs!zTQjQ.Mۡgk`@,y
bҵo	l+z7*aKKi80c$}kUCNt7Fv-F^Ų(fEtUqVð́f<j\%cR+]E#s.h% 2f[R!4A'G0yԃ.`آdYtmK
&nsxn5I\`BɝZHxǰD/k*.'L
1a
O)d5!<!X8
r2c`0"dۘyZ
4ݼA],>![-/DE]IVѹaVѯ`-&6T
A7!yd(=Z.ɢz)43؆J1IIUE/+h	F̜=o>^Kz*:0jin=m^vߣF1wc-&ma&}V>?#2^U9PATCY)wa'D)T7xpxַp]ZtdڌQ,Nmǘ0)3Zĭ!S/{moaƾvVqX}ˉ<#2BꃖȡrN~Xk츭#Uo͕|ůeFÏz~Gɝ̋VϱV䭲kR%8zrQI, 	k\B,^3GbqoXxTrONU ٱ_7!}tnᶊ?j|I,BCow{ϽWHXLbQ,!GSS5t,<0iW?Gx8R+Gס\C
k\OI|({Mg#:F3,,p'Nc6tVȱkVX*Nn?1i<FyίqvC^g9U_#r
\{6L`egvutfL盨uy(?U3yn^$$^xߌ"^Z+T|I2yA~oޕ|u72M_B7u⑁d
fp`Q 1f86<F>61O_cm$]&7Mv`p7i
_AkwSgOms-YU75WPۤ{>ο7-m<"ny~= 
3{-
r*\"UT.{bO>Sm/`t3BP	*bBm{ pc#z`p{'38}7qlg
cf'Eҙ,s(B@g=g`'E;|m!߆UY- m$0:HŕZ\4?/%?]Q֢b^ID5 x Rk_CatQgkKX7LoO^p%2-=IL)?E7^$yC?b(jjEEK<&wՀأAD$pyZb9G={{z[pԛ3ܛ[8K;ñ+\_
)(WPKf{    PK  ]W            8   ch/qos/logback/core/rolling/helper/FileNamePattern.classYy|T^&Û/$I p23!b@5	"YD6m1HLfY"UۺjTE$ T+]nm뾴vVL&I䗙;G,»n"_xݵ;"Pk^ČxԬmDzhㆂ	̰8]S

T5LlfbPwv]i&9	3ns.<-^6szG"UKG1	E*5LF9:m{z
q#)wp3UC)YP(dsi?Wi(uFX(
31KAI;#ۍ0W1bPprVQamj"WJŉf$9]ODj0hdjt(p%ٓS+PjzXgvu31q.C]+TWpxӓW[xt*8Q>"d@AcDiyآNE#Ĭq%!0L	U,QT׎@[$h,iXM:֝Z9HzT::SC=$(u@?2썏rX *V(;Vᦝ#0#V	LѷD7p".DԬ,a}ЃX,zXB}K`\hUTЮ j7::qL3V̈ "Kc0v$pX:xu66h؈Mdʚƹ8OŇ4|Ҿe\]6ܢS<場k؂ 11xF
-ެcdzYKC7Lf|mc$nlGHE0"c$~Hcjۥ}
[ˈe
=$ƀ"JT@C^g?[Z#H箨LY]HD53^̀иH.V3:
kh}m^ĕ>DdhMdu\
&O#J
z(ioU0Ӝn!Bi^8ͧ7*_z(PnfS8QμRۄY5YG;U|qYݸdq12n
E;Oq/SU
c7K$S8KO=Dt]a==?/p#/U0~;LEqhb\YJcQ6ڒ=["C)D.efm3Qn{˛8wH1+L/iTh_-fE~99ȐTa9#wc䮰#uԊm1+7ofOHٲm6D3|c,
N˭ގ^*BL.:koQk=^&c+YaDiOa
KQѺ(ZG32d597A-uS1nZ8U5%ޒdO(
N@3fI]BwwM+=wJs9R0ǓV9P "X6TzJ(Y.wmwG$f:Q$≘m5ݑ`܅p'9;XT*PeׄE77xC$afZz [+=rZCF|NK$=fZ(e6ѨBL1ق
liNPU
Zq"#y|qLAC[2?N<Ͻ,~(^(0;GPq 'Kg&ss2PEt2엮g A(QPir,KGsi9&!lڏ@>8EyKp>TUztiɿ
lUVrYp9F_H(A	?uGqҪc'&ajoqDE^RE$^zcL5m kJu4&Lb"NZy8L3͚`Q;j;ŕWV-e%̖,mF\nNvA|G*$pB ׏I
Q+ii#;l#3I8ō	Ljj~~A)g/_p?<.`btLB:,aoePWZDp_jէ2Q{Zxc?
NթTr*|"<;a#Q|dR[?DnZ_TD"-ΆKnN'vP1#}d{qR!~$U㱱:q)a[Q֬z&@	`{j	T	˕CC.rA?*ety9_AWUiLHHO V~;kܺ3<$
UDTp)~_ZNv%$|H;*jܚՇ'kIoxGZN';KK\G<a5
WJ(Ʊp(-^G-\ϫXmononfͽe5ftqu )4,tuqE~>o~1B{ÑJ5#"Rˡ'"ˌb\Լgx-9?
D/aK'3ȰX
!~^B_RZvS4=2fUt3K,z9W!xg`
R
#fO
x,ӖBw?s<I䲏x-L-= Bn=`"^әzJ>k;I[#KB&k`js~xd&q]NfXZ粈YFXbQjng*x춤jTvWeTvH/$
JI_WⷥM|MEoA"[}%Xe~|$}'mF_@h&Eo$OgAE:ىke 52 y`=lݴGHKۥy+v⎽XʃgɗJQ;A$#ao ;?K
]4&PK(~n    PK  ]W            6   ch/qos/logback/core/rolling/helper/FileStoreUtil.classURG=c$V(827%QlpD$(ȐKc! Yv17%/eWTzVBDRLOV޿y ⸀Qt2\|xn%Zz.,yvmctl#M|lGT}M=ךGT3UU/-QSt㸈
$L\B_Kn8N]2͟
pv,b6A
>YZ\=U$_qW,l,n|I@W1L(Ua`4=DOFgfຉ`
4RdfE(-h;Ogݟ~nbc$/τ~Li8*n1LXgY)qk/c'ά.SD|64} ד0~bՓ# *=Qг6W\
Bq!߿d>
݆1ND}ZSnT7_(4p?䶉27ob_^Qw6gsMF7C
>=8P!;zd(9v^3w6ކ<
$+F!4CU(e^IX5{hLDiʼW-Ue?
!
MmTY
?J
FX:唒)*N"kϩ൲ajWzۉ8m60v[1r"؈u|SیܫڼI3,DC4tS\r]e7@tP
XWχ҈ji0~I.}ho<{|?W> MvF{t @yh5 a.d-Șu!BH@;ޢkA?p仉~ⴞkf"MFW[L~6i`_0#2MQ`
!:
S6S]P(eBY~"\ TAw=tD	IQH$1CA@i'z@cE{HzF';J(#/PKN  L  PK  ]W            >   ch/qos/logback/core/rolling/helper/IntegerTokenConverter.classU[wSEMrB<m1i5Bh%ҴBk$&=	'J//kyyb- sr,
]y8gNf䏗~pbB0"J]U.z<q'76%:Ŭ£eG:
Cwr|9(Yx6Cir:'(|TE90̍Ͻ31@^}g؎\pkZrгʫwbH%7X"2AC6m(#6H?#9vpܒb;8fḍ	ӻK]!˺b'mⵚ%#3bX0ܝ-M'mda(sWnT3%8EYbUyT2N;c
?xd&H݆0rަ֥z,^1m*lӅ(6Ib᪍ql(64zk7A7,ؘ5qN~WE?M9|LYuAZ+U\jB_lNGUc8TK5Q6.3wf<5пۿ4JDq9*	>H1ߨhyƉ*rw{lt!m'&"l=)Ov:4U3zA@EM88v3vj5)u=}NYrWd:^ Eb1dᔉGr])]兮R=udKt"KՄ('jBLCWAA䷆c6۞ ؊y˒+#sJ7jmfMFwEnNJ.툪
c{Coq..0ܢ'<i] DM;xYwߌcvOL+3i`'-Zo~
+?O>jsWtx##苇{O7q7hۏ=Q )'KMCQLbQ>aψ7	۴g^
%MS!t}~/	lz-0BMFw&-YuӚIHO=A~o'H{M{lSOq1&?GoIO)&!i	>KnHW$nˀ@Eh5ӎ^] [Á_E_+ph҉K<: PKї  "
  PK  ]W            ;   ch/qos/logback/core/rolling/helper/MonoTypedConverter.classe=0S@,+B&@0MBZ*q5
,D?F$Йq)-Wٓl)Ru>=]6\+1\JZՀ$']	MvKY#߽	~Z]DA7$čG}PKa՟      PK  ]W            8   ch/qos/logback/core/rolling/helper/PeriodicityType.classTmod=n^OIЮR FGqHX8!r]Ӻp}A$JlAh{r8 VT1{l|AxtnyF=2^䇇=2PH! c6Vôl+_ki.kYܩWkmX'kz29@3qb59~E`ZeV|C`X
ָ̍o8ŋVU[ocQ]3ɒ;__Ɠ,E𾂔]f/k'C:kxnE,.p#/fJ<tg}CFNHE4h. ▂{
'}
,`hh&54Lk0al`=)X-/;-pϑRj̦YiѸ/:$wCowFZA@ʿQ,4A-t`߉|.OvSs(^8<u"?:~DG>u7//3a?rσ^yEql"_15o;@Q8c.gbq?.@/
&)[$Ovk?gX~2BfsSAa?_ЯPAKKYJ	Y1A._{r䑺tIҦ
J;1@n'Pvj@Ϡ`nv[`nPlE44P7J-rO9$%Q%$+iI&$YU%%DdJO./gP8+ٚ>T?9j*W'䊺\1/W8oc{9`
~? Of-+PKI44g    PK  ]W            3   ch/qos/logback/core/rolling/helper/RenameUtil.classW_~^Xvuĸf<bc7W@@EC;#23j6mzibibN?MWG|߹w ITRCLGu|f3;6bf3Y׳2~δ^0=[Cvs*ViHX
]攙qXf ɭɒ5u]#lвg(Esu}&q
fpYȻ{)o(eϝGI^5(T)ufSLU0'hf.w
lwJ۱؄rUGM|DhHd؎;eV8hzcVn{~h|E#-!Ȼt<ݴqtJV2L]	ʸu6hJ:8#q-c>C\:)a}OtKv{t"_puJzd2AK:캎eZV1fPp'ɽ*кt<V/J
6G@fҟb*,/pT1tR6&ɀ=Qt%lc^E/ttG s\Go]<,Xj
4?);bNɳR:>lN$ioRbue:
SaU{cX^C2
l*ei:9C4ZG|L`IsOIn>SfJACuDG1!ySH/B7R*VYyg\xYqj1F/cʂe,sp0.4L
lk ))$$LQN*".Ȧw[T">bYV:^T2g9V):>%ɶd?Iv8׳-_xUǧU,ɇ>3ȧDu6=vY7225~ڸ,|@:<Y,irfݜn٩6^.`&F,oPHV5Sg0m{,wfv{E홧!~|/ˣ!ۚJbdUb*6'tjZeTU<{G#(#vu[J_747cFP։[QwXVZB~g ޟ
3B\TE5<KRb8mŢ̧~)pIa|$k&ɣ0NT%[gYـbQ6?P.ZLj
H8ъHȴ
_pM`[~P|ҷRװH!)noI<-!xw!j!
zGEn8	MdKMK-99uiZ7lF\q[((wm&'Y_<W]
.LVY)%p"Fac $\wT,3܍qph!?Hh3gd1靅I5C{2U?fW&e^N	9]pq\ȷϪ׸6|+5
`fg]Fu}¦3
7P4-|o{s66nbgm,M@UMN.~DIm_ǁ,]FM}C
O^OEqbjn-n`]m?@!j$\MXOXRN<ʷA8C&p<q|q		
·iD >)78u4oWi]}Ajw
1ːHt)hRoF7j+ۤQFڣXmk&g3WسXO{H7*
+qUFmf460*ցXMlZ
bJ
#W?!ͨV j%.nd4Yr
yryR+$ge|Pxw=h
 v
j9/`3a kC^?%	{"oFenx~
L4ltRX ٵ. #0%?4Bdr L~Hy[e?ұAZCQ4Y?IJ>4OlUxeY^)u/򗕅F(b-?UW(k3
3j4MQLvuYyuI$XH=j!uo5Մq?Ud%gjZߨZwjUMΩ%%;ÿP?PK<BE  ~  PK  ]W            :   ch/qos/logback/core/rolling/helper/RollingCalendar$1.classSmOP~
cHE7ʛJ2F
v
+vc(㹣~@>9眞~@it[FBAj\y{u5Xka$$,B	陝ҿ+,"^i}P$,Bb,hkWndVC)h&XA;V(kK8` k
TpCd8oyg2K۷,ݳH]_u䃀"QD"8SA_Tp3|~MW\`̗RϙƊp_Sp]cwۣ))j^xLO-:VMA*?MZq[ڮǬ3;lj=i%!zhj<bKܶ-+pJDt79q<I}!9,sG	9J`aT!ա}9
C4Q1⍘9dF7o?C:?l|Zi16LPnq6 vDO
>#q{sa#(&0Iv
X"{YcU<MA!y*'*j K,m"Y$ڹD
A!ttPKl    PK  ]W            8   ch/qos/logback/core/rolling/helper/RollingCalendar.classX
x[u~?[ҕk[Qb'"?V%r NjCBql;N҇\K׶,넰v@B[ZR%[F	og?ڮXhןvwd)3?ss{>}'IkXh>WhGd2ۻ՝l#kC_`uA}Ngگ6F̦KwI:T7D]G-6VRe2tv}MjJRd><|8o
zw5$pQ.+hXxgϟ-Tlш5)66l۴~垌AiCE)]A2Gtd~shny3,Y!?75sIZ%BTJЯ1|pbG^zY`Q%AİFZY 4W@pܴ{1c*cSm58Z5цM
	gJn7KNHfϕSD׮ 6B
])VDJ*7&y~H:]uȶDϵ;{zw\۟7Kp-:2Uzr֤a=Ր "sc%<m~ݿrJYy妟:LrK-ls2%%f
&E/8͚ݛM

O.cכC UWp?"M만LA<2יI0viѱoeëMl!`cɉ%\	1)!J9bI5 W5'T:kdTUNxYQuza`KJt0*~qbvX<d3;Yy;d>cJ9 
byY"G$GA)VԂikQh8$P7$q+طKԾC V.HrW¥7	,!i4ɯIY
f2MSí:n4Wp!fJ_l;dXFhF*Ȏx͚ǝ'Yv
.G`aG	3jܘ:x[YT85)If6:;+Z*eKeL y>)}	d ®lP6ZKkP(($2s4v
I3o~2'l6GnҌ,EfĽKDr5Փ:[x X)ˢz'vxI<Yt'K*BO%PsxiCtfExS	8_*=6be6$4<*45ܡm@g6~<.p
cf4cX=adj8aFǧ$;x)y-i):X&4MT$מ|d&Z%|䬞0D'm϶/++?Iou2,?xV߫y:A[(/V1f:TR?>e!|Gw=Vnii>wsk%#\
?P2qͯr9[lӒ
hWG'P[){?DKw.E
9059jZƨ<asĠ4I9^bzf#	_=%3qќS6s9Q'K0,mC XR//̼Z㓶#Ă<&Bw42M#{)1eflC{񀥽]%B+Cs[86lK~QGښ+ƾRVQN<%S{/7,+Mw[BLXKt/Km( 'Kl<
4)ΌGE2T*Ræa(Y"Ay;cG-]xSØ'ZH:#K̰g g3
O4P{f{
J<TW~f{Ls:.߻$qUt4e:-؞̂ÔeF	H3Q739!0c.u=s+_m3?I@}	,ǧJܿe6TJ6eRQʄRoV׵²sQƥpRwĔ-uIWJQoP෤

T6%Zw\B,TܭsM3XM#3hnJ]t'<5b im$ڦFog5A3Gr&8H"H4v/=vO{&^A߀7:b'>(/l]؅+Wc0ƣϋ\	c}g?9[bQ^yn槆wԢIΩ~{"U^k^MCHGC\FM|Wf!DU'1$4=8!-	mӸ(41x8xmE#G鲕+K>ud,\{\!܋#wЛ7un-ASu^\xKu-4&HBnuNNO[3?ʙ&9kF4W@myX cޭxZJ£ʇWX%40$8(/Y;q
_i$iS  !dZ2Cw+5^EZS݊L=$N:@G \ˈ~~裌ꇉ7!dV|q8L
!dqQ}q?XdpQrVAxn"亨@4}={<ob<:6y+֨5zM9T{֥\s?47Ik瑜<޴r~4~N>Sr]jO2YbE|kyi0/M_"u:Yߠܴoܒ$&UM{X,"QE4rgЫx|ꏅ7M7&ЎђK?)]:'d-^1ӒFQ/3G~:|W
j5BD"2;4Ѐs?`}{k?dKz2cwFnZLlKDMGb衙IiXU,7},x:>7wL:<b(~DD*AyudVn,Vن+DX,N~кy.[>÷IUOZg	w^w?Ae<kY_0Cs΋s77b:)@fGo_蔗^f+ȯX~͞\^:Rf6#oan*a{ǅS,52鳢ϱ SEL2%~'B?T'"bXF5͞""8@@RQ"еBWdu\\M\֝eaG鳰)w$Uuv[VM-ʀ<?WeU+\B
z|_fvl'bxǠ>϶.yFe{C!>߾ɧV}^VIb#Ņhc@؄m9S$>ƭv}b-%W	W׈f6B>s5N+ǟD	8muBRgzRAI?PK
cצ     PK  ]W            I   ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover$1.classU]SU~NaIX `)EMi%$@R"4
Dm/eslMv
^7z5^8c3u|vGop&9yg? S!QϽ\îm9vdα
ӪђNb~+Vul+Ǩlڛ҉BADEs&g&|n0@ϦHtϓ%0R~o깶g6rɭjg)CU5`P 5tr>x.
M©z4ᢀ&<G7U[ԙ$-
ObokxZފޤu!.xcAŗ1⊆xO`R4uϨKGfL;--ZNh^l"M*i@=piU<d4LbJ RsvK`(U:YT\0Ǐ;P.6[71-k;%ˣ*n+곝
sװgtGSGr<K*2.u&W^Ϭ:Z_6-nnHgMclzc]wL}wRH`3R|Yzu6%%:Z1kȅu˟n1n(pQͲڕ
.3Dʘ7^
LNwa'gҔ2{=IbӜco^ͬ-ZFvyN 5|/t
iU9_xi5zн"]rV,JWX}G(o>#/h^
X@hg&_!zhW̩>䳋0`9>!|H\.,,/N୅u[I)? R?"V/^0uWc	0N_׭	,@
qw%|L!
2׻z؟#f')ox贲2/}#o:EZ"Ikdar.c%HIv_}0XK(OzD/QFRY")
LKS`vlv8zwyr0Ǩ>jG`_3O88*lPKXL#  [  PK  ]W            G   ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover.classUVECۄ- J6$ДTIE@4$8lfg7OأC솟awvw;FсNt17e9mn<O)XiWS2fcJFX5g_HGmz6pr%J&V	i۱Y
vĺK3ScFE]e0dڀ-?]PYΛ\fB
W\-Nۖ	Ë1A'ʿϭXa'
v°:Fp?'0d86u3,zM؞p7Yh>ˣI&FU)0?}b=Jɹ=Q֪[\,$raH1qw)eOVIb('А1)6E'iOUn9VE"V.MBZaYR:+m3De*t`w];Jj@ǇgoTR'uNmX1L]|ސC?w[l:4T}̰(y;bBʪ3x!cKH_P]GzZp%5.ť,p9599T(ʽzm[5Wpnsi˰ki9Ú'.ň6Sa쾦"ew5'k	N%b蛡"{#^Zk42JQ?ǮS=$V5f~S,\kȣQ*+`qexkφ/,Kh٩KCyO0t*#*=oBfiBms`>gԁ<´ӛ<Bh!/ߤ(V
E Eg-2Vhw_bkh_
dy#:+\;bbnW͇Gww<a1HTAbFaI`gx8a42('X'_*Dvx
8CO_cp;+}=+ѹW<˦hL ęhi7GE[|@Ao7V:k7C|tONGPu"\'.G|_m<Dv&Aw4v|AjPK੔w  
  PK  ]W            V   ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover$ArhiveRemoverRunnable.classSMSA}M
CET!`UBY
 2E7;8;*O/^V?lP<\_t{3w `w7*BukWZzu^*LE.v%hAtudx,t3˃
wٔ]u"uyC5{Q$ڡ$NW	_!q<&#q"PpNHyփ(0O	ҾmJG-amSv0:n\^!RD"+h
.naeD
ɺ8&K㎋V?^/ڬ\eC%uu ۽n[[|X|3m/\A7%MG
-H<)[9xFi_>3m0-cBX(8\{z,+ʁ0Tb~N.2z6ŶP]>E)
2Odq7?H<dKS,*8ƈPg>
_0ia7>b/VQ*QT)EʠFN=WUMr
%v
5v:i7PKm<=  {  PK  ]W            @   ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.classX	|}i5B $[Z]0`a$!҂<Z͢1Ic8n'hcĥ54 lӤIpicN4GuM|h%O!{7}UbɁ{\Sg$7%mlj\#""!CC@drY2ym=h8f3k(Bt%!2N̾35^kPIous9h0Ƞqhsm簀K3uBڮ3ۍ,7.Js䬒s7㶙+GtCU4v{(z7
0ͭNFiy5RdT,(pӔki3o8k"X,Jڃ!;8fmOFS;>U5ףcR	gӛwjz[kmdA%MK)į8`4m{]AfX.%=
0>>cVjXVwgi>5;!BtXIAMM֐k2rS&kV:q,b-j&mO]3ޝCcKhЮc#:f]>QY;9m1*7KS&HYcXv$.&`xyv]3h4ܝ;gx8Cz\qWߢc+`x&e˹WϬ!v(C%ʙnl4Ӧkٙ^ᠲ(NҰ[ǝ#˧%I	wVfTxET]:ލ̼ܨdHK
iH9=;'2t7c&5BEWݖE%i~i
̖q<ksr&!o/%ն,%M5_E
tjy;Ep@AI˾\<œiϕ;JxԱ,9`&S=
st_>O+%zn'~xbN;o:T`=<CxXu<"#8sFzܒ*2{>4!Rnd2WFMI4:>2R;
'S	T_"cg*,t0't|Bś$~SǓ(tQk&ѪxTn:>c3\I[qḮM>iI\a&>w@LQ(diq|F3(C vZ.cTꤎjB_NybxkL
tK`C@}rrnTQAt(5R٨[|eg!+dvNxUf8e:vΑB57nVK 5pA\5c̸n`:ZI6+|c
<zfYࢫ!?'K+K

~g9e_3BݢmIkY<so
LeZ75bxZ5M*v
]#65⏑/ɜ(wuLb+G;~$e<Cvqoe!GR\㽍F)їIii1P=O{];;6=ZuKz'Z{;⽻n֚hOwu{XLtڻk{-c[|ƞ%Uy_]vanS.+c&LWV~qñd׵JMQRkp&9{(<{ԒR$+y8~{ʟkLY/^Σ',kZye8gGCµ\[cj=WmU	S![%O=u~1Ϩp#9gBm)k{UG$yͣSf\IBܙ\f
.#+-[ J'>옹$7 =~4k:S
z<XЦ`J҅fSY2_W23Uұ~3+"{y&SJ{ŗH=$:f(wdf6%с3l͹6PᲲi3C>j5Q1Ι`Ե֭(4VRUAQqE#uV)]&^:;
/elf6lG+j9r(\E+Vr CJUrmiXE&ְkG*V c'w4_z=m22sqmNRNP$\1C 21x&c:i壼OʨgZ&h2X RuMywg0b+2_*6@>L
?'l=Ow4!EQ,Jc}cn,Ϣ:XvZS>X·ܡ{աXměvgJFePo҆7RrՋ;DCh)@K*xsJyQӗ+(}ON~(ǽ"ܯ:.-ʹeZ^ i@ 1Gg6Ƣ#\E黊`̈Uc30D`e"T<űlӠ꺊vh*mw	u:oS#lf줷fZy;GNPnb|WL0G"L{5FFhH佑B\B^bu"g %s,oGْ>!聻_Djw9$b
#gz%zN2J6Kl"Dy
k<P-N
P)J5SCEXȏ4z=A+ja3-xɼ*a֕j	< w,W)BoLDÅ|+*B-X|xtԲaT_8@ޫ\X*@MHIbHaІ{M
u%R8.f	WY2(EXCDC&fN Tͥޓw
q<~]eこҳGe͏qT.x|=<2ĲM,gQ{#Ǩ _z776ڠL7[-QT͸
!*F#$NR>[Z	WȤ+:sǒo0VU(~H`eqEqE8VU7UZU,1(cU΋8Q:<UU\tx\z0xHσ1&8Yf>~O|~ xya1ؼȇ'ȡg]ĹE%s+=ꔗs;,ŀH!>s>Osb>#$*o0- [
^&3@1?c>nS.`/I?1"Pz&m)P^v%Dv׏Dé\/aT8um
8 lȼNOы<B8?`T%ڪqHۂr_l;Dလ]˔nO1bfE4Odgڼk|~Pp	AKf/1*U ]t˗[6i<Pd|#p
_aOj7ػ;9
b/q+iVTW	x}*!"֗X\%4+<|Eh/`z;<׵D'ʛ/"B7iUn&XttL,S%kx	A
h7J?$a@IF14FTDk
-&*ȏRSqO#xn0jȫ_Y1;ǃ;{	Ї?D3by^2me:&bWp=ՕfcXN4uqƆêICܓլ9$[7rB"$_Kټ.^YUOOeJ !?T,S85X&gQ$P'du**Y
٤7r\!)`MvTPKLڷ     PK  ]W            7   ch/qos/logback/core/rolling/helper/TokenConverter.class]OAi.]"ǅ@14%M/]Xwp%DB?E<3ǅ\ξ'sw /ꠀ1X{PH]ٓA`0`(Vk2QḘ4O#`*<QQAOF2ڗeʄ~9^.0MX~^6|0m5ZgP8mh tG0^omjɨAGիTgƲ5ؑ/:Ef*Q[$y>ݕiP?֮m9^@k̓ef!N
@n}v4hq
.
kT_7Hύh?@W/8I)G:S	쯦'Q
n˲`Ӎ.hT2Ucf	
"9U_;A15y|	Xz!	b
<T2uy|"MͣPK+`    PK  ]W            4   ch/qos/logback/core/sift/AbstractDiscriminator.classQOA^hATP!hBcB&ЧFu)m~'_L$$<PĹ#infwr5/X. \?Qnc?TZf 8367H*Cv^3{(ET<~-0VHjٗJ3xrmE{xư(a,өuSjH|<QdBZcaԜ2ˇ{)YnJ\"Z2V
Ҵg@ݧHKv)cH<Dh)*?djsP4dp)Uf܎Jπ)}N|zV5-ѭFm\Cd$d~ɿxY OI9p.XLw|̦0Äפh\/x?dM$;ľĿ
PKO    PK  ]W            .   ch/qos/logback/core/sift/AppenderFactory.classPJ@kcU~Dq) l׸1Fy(qB7̛ϯ 78"^L*S\<3adzt쮮^I;b@8/+g[0[U6d"J$vrt9t_71a2	1"\KcfMCVLJMI<irFG̴Vȹ!pC}7#=
p`~PK,Z     PK  ]W            >   ch/qos/logback/core/sift/AppenderFactoryUsingSiftModel$1.classSn1=N<:ʫ n *VJJ.ڕ318.baX|z&)#پs=_ Í"2#`9~དྷڋd/txC⾑~-Qu!gPWPtEj%P̣>FzC%}T^JnB7$o1)Vmm*'hggkhB=݈,Mh#c>Ã)W7jiZ_;`Lh8궄	do+>K"Gjͽ}c1SX/mʴ[C#/Bצot'IIqtVXiͻ+c؜۟_V9ζolKMB5"X.Ј3׵MRV<Mҁ{kYl'?:9s`ҾD8sTfdgdI*MRcvMeɾUR1\p?@ƾ,.%e\I%z=,JgiDwPK
3Y    PK  ]W            <   ch/qos/logback/core/sift/AppenderFactoryUsingSiftModel.classX[}0d!ibL$	
p5Yr*}fw'd:3Khm={wlZ{{م->}ޙｯx㟫
B*P/|N[Ԣi-;Lӓ@}5>ڎ0EAXE#TɳчL;6Zr!4-=1Sz::.[R\Hj.01	~sS-[4؆ۂmlJFcZK'l#;FA1{
nJoNm)NZFjyާ/	9.XVъ=,=I*YfRmĎfYCAfvy'^\`^	u#8Ҫ*␀,P]WF
Ǯ,Pn	2=;	ΠĮ靳
PV5UFRu.0~+YPy6Se\-#*ގL%=Z6.u\wΚ6HK|$юu0lHzn`etYM8ΊًǧwU($OQ+)(\B8ff]楋Pގ#8.s
Ž*2*@pW~"P1)F^:؋iqb	1^& J=fUD欃*WT<w
wԍk96w:FHؽ%iiI#mG:vȳjjxbhx@ݍH  B<U)}eў:΍$*㹼:M]N.%vY&(iGm<$TؠF
92;w"ޭ༊%<#p#
g`
rl:>uyv$^h3ێ4393zڧ	,VJ
eDjl[ǌ>$tkFKu9cI-=Y|?sؕ{vXyzgc}Rf̶-A	tWZ%nsR[})7ҩU
,0[v{<L)mX2@`7VstB,PBoMqTM.|f>sR+]KmE6pPcޯX$:;ܳCmTu	ͼGY*MRK6q]vvt73塶z8zlk=~qA*~$=\>'ʡx=ʓ:ƲR>Wy5KXUpY**yE
p|j3׫4d^s/%~])SnOLN袧.*t=Po⏬µ62f7\>WИi.s]<ܯlYsN9U9{;ٻ"^y
&2*'cm|^^^!dgא[b+g|i҇\t
eMel^Ʈ\R|"~m8J1boNcxBC^I%$UU1<Uȋ$qj''+~"W"n)m]5].X-w"惽wV1@14kЎAL1ǩΚYYq<Ex磤|>νO$iP*t`x{=nz~61$=u!۹}n'ZC+8rDO}k%p`QZKXxu₄yAG.їV$)8ufi	t8I?OSx´gsn	ks=g]/3o}ysxXCx-ϻs<[E"1 E\%_PQW_
xT}?WvZ6ԻOzYDɗ'c
|]o"BG[.ϟ],B?-B?OEߟWBPK    PK  ]W            .   ch/qos/logback/core/sift/AppenderTracker.classWSW(ZJRx!HVXD[
Kݸ~yk}Lok9,A6Ƈ=~ws p?QZNȚI%켞KQ˛f8,Pn Cku2C95#Y&+7ЍY065ʈARMQ?r4؃usB7U\٤}!Frl-xxt.)J"%MuEޔqdvŐ}bHBe<X3p\B&c
=07Q5)Ǣ,'|KCOdɴC0pZMj:.-0)|sSwid;~l	=)N3)eO{&L{[F/R%^'&7ڢk(S'"3skif]'F1 \bۚ*m0$#Kb^2]zݞsZZ[p(mPߛGBqL04
=bde5ofۓnZ
-g.+*!S8WU +vM튇Li"2x!7OU6Q,AgQjnpm6/kUbgLLqx1VdfHԮ| l]s@{D͌)y%A/k0(򳗡T	leK]t|Ә,IRrC^^}lRs}[W*ڕRU`$̂jWtzx s4&_lc8â+FKu]s2ms:u4H]E؝:|pjT=YI-a|/%|OmpfFsY/r]"jQ>J]uNFGCRYŶ5[wǫ
UԘuQt>Ѝ&H?Mӳ߄śntOӸ7i\Gs3n= źawZfiaZP г!zv#G&WqD)s--bbbCmas;

CNgisiwf%,OQ@Qs-#%ۛxk<9KacDS4=ql~ND/Ǻqf,X rrx|Gm,͞$\cK"ɷ*҂A4vX ,Xk
k?#V'A$t5Ի@3!qwK$7fi레@}?Tb|.&pnvmJF\/+^YPMz]d5E ksQ..%>"yDMHċ#"x-W#+kQpT.\
O#B³,ۛf?{a|qخ!zmLBO^3pHP⽂ng*wPKɣC  j  PK  ]W            3   ch/qos/logback/core/sift/DefaultDiscriminator.classN@CBB(%
*Ao*!(("aCُ`JUĂǎCbl9w.ǧ ."#l	s1ٗXܾ6m_	3l[VJǵrMIb0jao":₇,aEX!=n
ʽ+.{zP0ds2K=pd	5+}CdtOY})luvw3!x96Z͖65u%lݨ-
%C/VkJ䨍qP'gN}#}?T8ֳ6&JJdAJ@6YFvn/r,љ8(ǱH%.*#\nQY\l-UrURXU^u67äB[S]3	3PKf־    PK  ]W            ,   ch/qos/logback/core/sift/Discriminator.class;o>sv&FblT̴}̼Ē"vFĲDļt}v6FE&dd:W&22 S
PA7ZI(ؚ383I\#*6=ީ"Xm\0-!)i\Eɩn /
D`0201+0qx\@>7
e PK[fI     PK  ]W            2   ch/qos/logback/core/sift/NOPSiftModelHandler.classSjA=YFjMBSGMbP,*Dldf'N/诂Cwft	.<;{vCA#P?|7z%}RyGPg< 
tBhHclawM
.YͥI6 q_ґ>{\Fz{mRJ2f(8b#
~^<LgP(dNxY"gxeևBwTZld;1vm?q/гF
/uaTHDE@ő0$'=lel0Ϗ}11b7.ci>auTE`od$j39 f6eZd5$pnRΓDa,JQ!piyU	J_R8S؞*Y X2hp3PH7'H݂6fl[6xb' 4,@5qhmmF
ʨΆUn1nPKx޵  &  PK  ]W            /   ch/qos/logback/core/sift/SiftModelHandler.classWsW-k%e8NTme9>TvLm'iv@X퍥]ewƼ

7h733L+ß]=j˒px|;s?{ 4t	Yk[)˦\Offu?0O 
QbOR(Y̔=גzy}t
E͘NڎL	\kN o#K#J>_x{f
tыCK>rYS#K
pD ir%Ӝv
f݊Z{dmbbG]p
G,f
7VT0^515iL*Y%
vVa@ f
<r7
3S4L>80(S4)Uב
e:Ʋ#/P]c-Lqb?OҪ~2ahq@sL	lשe@,Mi6	
	BۜR	0ёU}˳Kcl6TQSm
-7-l^-SE5.)Tl"Guc}
ʹ	<rZ٢a+rqEmk>	L
--Yf<Ѡ	<#s06Dn%0Y
guy;fI``nULEt@$Jر|Xj3<Y隤5,X%V"sATg:"cU{E
Kϩ=űpk79Fu7nIB/LYlG.TJһb.Zfql]F^@!EͪH\Ekv>>l| /lKkS?,rxNT3wPʶY{:8]](|q7KuxX7۽s6Oq<PIm\OZZC;CS|Y-fk`­5gn> ޼YKK×w8wےe|_Wٛ>}X۾ŬYzOSygݱYZ.m/Ï
wZF]g([,yV܎48θn@fy^knỬ]fTy=so!H7J/^N?4\zZ_sj̪W-nXBk@
b,6O2F/5JǛ57l\4kW޽OVMvBs#J䞆?<y)bu1Z^Յr߆|~)ʺGpgL娿
79 X&F
53WAZ.ǷAC #G5)1~+>$;\subox{*yt2$I-<&auw1ՒAX2v'񤖌o!g=<
(b}Oٜ8S{3+&9{iJfw7Ĺ(yTxT(c14QjGs:p}˔Ũ<g<{?"[H潜MnJ>/\y=rxL×%#
S/p CymL̟g\k#JVJv;+0|Cnl8[h`y˵}]	Wkd2tIiJ7E[oU8	翃9= ?o"-~?"?PKw`+    PK  ]W            ,   ch/qos/logback/core/sift/SiftProcessor.classRn17mB@/V !(JqS:x>Bo7+>sg7 wq#J*2c2^W\x߼R	X#U˟IX&1saO`mc3DX4C̣ pÝYC1L܋PmT6ˍj_9,8nN"~ג6Pޡ,BSl*'	!"V Hgo>?kLJH֌jfdizӽ:
7`ڽ'"c%]=#cV:#*X's`4^ %pk3)*ǨpVO*QǕ)YiH+y*}	g?Tsp58\)$ǐkFy'PKv  D  PK  ]W            2   ch/qos/logback/core/sift/SiftingAppenderBase.classXS.HHS	c;$\b#F	qq0BcYE-iM6:ig6i⾛#m6KfS3Bg:]=Yٲg{s 649 ?Z"YÊԲ8O?eyX41=xmtHTs
M %f+s6pl/:ݿ؊O!@XA8=<3	nܸ!
Tw
tfEF>K=KݸGU5ZZ`\F=6}TMsC 橣
1WVt'Бԭg5^_͑J gu"t*-CCˆ)!m
dr4љOT|>gRrCp1,1GnT3%m-q@@PdU"Y#O$4Zɧewx@Uڻiو(,Fȗi=!pGЊ1IӇ.6Q(x*HCpem&$IΪ'̚ղ9KfֱEj)1KQFOuK#Iˎr\L6jYpI
d۱K'cTJ;Y섛0i-a\; Rp
K]^BdL'U4	
(i*')*XFHdhwd[>Mˣu؎$R
V%>+gIVpĴdڢSV[[sIU``M@I9ZM52XڹaΜ055G}:qbir]9kݬj&ɹ}EcyIZ~NBjEi9e_njc]c21$~/*x	/3IÁ\P
^eGksF'1ϛt9pڌ-L6
ܢòi7g2]PӜ		5|w'}UI4T߈GjekEܖmR	`#6o-ֿP|MhUmz'MSve|ak-CM{M/0ܸԢɮKt0gf57bSoQhKPQ(nBZ ٹ%/Tҫȅ<2Wai(?G
X,:,:,0."![gŁV.:*Sozm6ċg
עkׇ&G}<FLhGuI՝eH*ai@|	_/ʥ k7tɋM$
3'v"~u_Î\lƷ{n:ҋŷ8|׫f.)=|5%k{RRbO*<LlΖlg'nvstʑITho)ioz8Spoy9SCs2ξKxّ&8SE qyy?ԾT	ZG:^vZ?hp!.1XBM&wmЃeę8P]5s$(;,h=`.ʃF'Ӊf
'?'ǙEO8).aL,oe@&d
p?FHt\[-%oy<+%Jx|O26yɬn'X|?Im@II!J_j(e~_>WЮNi賂Px
_KM0Uq^7a66P@Ǝ#~9l/sM(-F@Ya9Fit$}>?Lh:2Ab;~?>Tbⷑq*X|;w(%1@SG"%pptq,ņʁ{׼6q/p+ui@މ-xG7cmcsU7uՆ%:BS*pE\)uooaUa,X_;v??PKfO  c  PK  ]W            8   ch/qos/logback/core/spi/AbstractComponentTracker$1.classT[OA^
**Zei
HAb	4NځnݝE/&>d|Gn	&;93dc@HCXGQbv<rEn
ëIc)*Tk-lGCᦦ"η:=G'b:3$7,na*B_T~=Րч~V4Km^cdu%-#/CQ^R$*i1!K1=V6}eIqߜ1{lSMg-/Qu늒4rHx닜'9DR{SǋEɭ}J-em+5e8y\;MlUqJUK+X\Һ6eXjԚV%CD>b(1%SJ̶	.^wAQMs%bY䯶[m<(Umq;U/8uҗ>rI_5۴On3tRn8f}Ӷ	3̷(j `cAn%og&eALnSOܡv1
w/׃q{G(>Ao#&̜+4}l_(YgI	IL;?!ŠchjnÛL`a6 v.`>7Bhd PKxNh  7  PK  ]W            8   ch/qos/logback/core/spi/AbstractComponentTracker$2.classT[OA^)+UAjն(KH
IEbIi۝:;%䋉 7n윙3s3g韟 <=	R[H ɰtʷ]iqvߗf7;z}	HCt_\%zTjiL0!{ȏrcm
`1B,rQ,oyF4wz)о[~UW߉:mpȫݨjS3u鉽A%oqnkGxpQOVeȟ<fU}yO"'ˍho+=
!!17Foxv^	~Pnx
h
csRQ=0|_,jtKqm2W&<U:aHQvO?󄮹#gN:FKs`l`L7k$4'h2o`H}UiL%p4懧p@8K4sg{KSԋȍڈ}[.|Ǖ~Dҝ'ZAwm,.X$熳xʇ(Sʡf6LǄ4Gr%PK9N    PK  ]W            8   ch/qos/logback/core/spi/AbstractComponentTracker$3.classT]OA=~AP
VU)U_I+DIE"4NvNIxbG?2ݶ>lwsg=ޙ b)3H IoXoe+--X
hajw'=ϣ#9p
{עWX
Ƒ!dű\ᵬ׍Cif_s<ǬbzL!rz>ypZRsCX[{1lަ0CxlcjtlaG0zR$LrFrnH/.#[	}0AW+iʓ΀6JZ%r
#[J%$dq'n9a8mhtHje=sZ0]il[
=2»BD'=Wh{m>? MvU;oϕyyRW]O.pԹQKfiP6\4|7le 7>(K&{p@KsτsWK0!<r}&BAW\xFw(T`
lsg7x0""8_b@)D&vF{ʌci_PK>&S    PK  ]W            <   ch/qos/logback/core/spi/AbstractComponentTracker$Entry.classU[OGok;%߂ɅK%
N(PiMԪf]O<RU>5RSUrΜw93׿V;#BkX٪d7$	9۱!Hn!6&$Ln#[uwV-umbC̹֭{5]EG9cU]kg
n;;*A8J'M=dڴD7zT{!Vч~&qBQ^Bl59w[VuVZ;<VgU7p/*&%PQG-cM00ʡ.>҄="rSdH>hlϼǒuEf%˃XW[G`|v^Q7bUrKVu˪jCl+k3*<J_NR̿c9|UX!YZt+ˢN$G[5OT'
דhb.݅fKbVVиtmH3+n7XOPf}5y՝3ĶsV_װKU^eٮVk-m[yCj`K+#Ӱn'6	/7e=cO)ԏ=2
ceY^}JғJHeK8B:}ʆ~ :ht
wYBH=xI&A@T to?O2s=
sQER40]St>KG	?ES`4~D馎GS$^D~ԭXf?":LA8x:{i?MwD*^EF^{BN19ZRPC*QLE%qRQqSc4;tYy K4<Makz
8¬na,beshxi6Bh<g<)ϳ"SU ~lOC<E)	Vx|
u<ʚ=0PKeZ91    PK  ]W            H   ch/qos/logback/core/spi/AbstractComponentTracker$RemovalPredicator.classOO1 z/֓&BHp#QCԸb[Hj ~(cY9 k2&3o q GE[р	Hfg	3\HOgZIM9zS郑DpM<:RF~0ꉍS䰫ͪjNRμ6o8)F:jf_]~l"!IK8YVJwҺkm]]s*7JIZi	?^'m B!c la߰w9_2ۨdg+ZQGPKI_('  Z  PK  ]W            6   ch/qos/logback/core/spi/AbstractComponentTracker.classY|S&RZZ!iA"RJԴ)Ҥ$)|M9؜s`:tXmN6t/t6um{s4~_y~福C *NrL0gs$6'tnsyc@8+
N
.)(
4wl;
`|\v
qɹ7(heG0RC1J<溎X⃙(j(>3%|1>BV\P0P/Û؆@z  ZOn3ۅ$
Lf
*Ci*Z(֣z4'`*?7蝛\`p՟: nT	jePk*6[cwkEˆmj]@<ua5 sQ%Nհ@wlk3]i,4YjX$,;
"_,QƂFHdyz,[UӠvf,6Ho8V@+4H7ߠG"hz"8>QS/Dw&hTI`԰
-
:$MlV,[2w4l'p	çeq1E䟫#8YRu=4DphE
R0!kDZ#H
v_\HdVk薊YnHTN	QPFQi!=I!Not4!)5FvD4b31waxgπ{p"
iӘ8uH%)T[Յm.ŬiO7hX:Bcu2u2
Ù$&}kﵲ

^X.sgM&<f*\ 酸r>,f2Xk(׻`+
7JIly|AhSVFh[5:[k7Z$,˸5+Q7R|nU('R9؅&IK\2$pēsXډKYGrj@GB!bvаpc./k]f O÷̶|e
BKh`xe{^<A
fdLBh\W_mm]ܲeR2Kݚy4B}Mgz[xYk6ݦ׶nm۴lݻ^_kԵZ`w8w*Emwjɍ	]"7tѶ@D(3jD2 ]8o=Q:m	-`f;l'+%H%,<6Hȹ̌cګaa[<ͨe]4̚B9ZY<"!Kgru҈˳15.8:Mȅ<4z^Y
푶$y(r$d;d#\9NDOdЂ1uJqnrlZPf\F*mO :Kư+g,kOܷ
A7^̩`?dMzYJd!n{7] $/N?
2TOzQ}Mf
X%XݰaFwP^-X5rRqb1-J4.ő-˯ُ`B!A<waTko{)󛸯%ӉыUb2xSgt9#~/JLx}+8s Qy0j?<Qr8 I81ߏi\tV~xOُ/f8tFRQ̢sҩ.#XЄ'CRi&,kVJ4ζZ?ᜯq'8)XJ"=pR?Nm
o춑FY8I|hU8Ȼt'	~=ocpT!"g<2+M.L?T/)Epݤ:lgG$gtboZ)ZWJgl>z-BSY>ĆVbAs2C+ҠiIhگ3v^c@Q+C3k]SU<0qڏջ_Vcm.g_y,╸Uq-:CpY9~[K;]8S5k;w&RyR~ov2N|#jAkMVj!h;ձ9P1_Lq;n33)LƳHrϤ~v~2 MIt}|vRXog(Ai 4eQyUnzFu, !*yՏpػS(#yh+yyڼ'2?{UlU2TIJ.eH"e/7l)S#/!Ŷ5
 .QgrU5
 UV*pJqBYR5y~|n+]Sd4g?8:S	SoO:Ѥ^\,#,<?p>c	NAг/睌32OF/,S)L%
+%a#y&$
%W]@NtY-1tݴ28ݞI<sw*OґOa$\K\ҡclEd8tLz䆿>>Jz! b*Tn.u4,/h<4412$eɂg 2bQEԒ%#e~_JB\*pkV)RJe+q8K-Vj+	&rR(x}>2b) v~ܽjEiWXy_MDHҼY^M>;l?ݛװJ\qfAܻ M8{_Ac㫭6UbuyRW%Jnzn~M-F8qӯ|s7,Gl#6aM;c.0F 2[$')Xg5p	{޵RaIWo$N7p٠RMEIӎAѪfm 
j1C`sLv`y?XyVl7G!i,c!s"K
s=F(9NYhݽ\%UuPKlcGu    PK  ]W            0   ch/qos/logback/core/spi/AppenderAttachable.classRAO0~Ee6B 1Yaƃ5ج+8 0,{i 
]hB7Iq0&	C*]H0%N
8DК9#4@!h0\\[^Y ,Kf7y<dJMtiǏK.p6ٍ{[dqdwD0wҢ=:KpC_5Q{!q+qln.v]rF4㋹qɺr [#jlhTckP/pC8-pS3h\l`͍	tWPKzO    PK  ]W            4   ch/qos/logback/core/spi/AppenderAttachableImpl.classWSg~|mBQAQB`+-B5$kXXvcQ=m;ӿC/=:ꨭ֙{tz8Nld}=c_}	|T<"1욓HaUR᱙99a0M1Gz6)1N935|vJ$JPΰh$) ;d_n=1QjP#o0t2M+ɈaHYiFG*(<"BPpψ)IdRY3rPt͏{b9Um椒TU+'Qo/C}{Q*drVd&KF6;tpfqCˎ/5W(MWKs6P2hQ]uD6CHy갼d"na=8PYA1y0+ikq}ܮ.F;!MER䍢6S"pz]-[T휤fwxw'kiN9|ÛPeɬwD2~GpsPWRd2tYIn!IZU49[3ڨ	)g{c*FOI[	7Gh{M[VV%o_wW`hq
n~TJpZR[&1-U00~|5sIr*s*kt%o<&_;pu>>gB(;
jBzK͹K_r=ߵ0xmyʕUurr5MYvznHvDKifDT*HC#Siڱ-
/X>:6oF9\&!Wx7nn^80BZ*"}@]Gig:u>0eQ=}7bt_@#݉%Z/ۉ=|D6Ϩ|c;T;NjiеUhG n;wB..;;gt6eΪlӴuGk^%zq{{{Opą.v˖ܷz~N*q5%vQ)^t}a/<: zp7)*Jt";-a
MHОǄL;fL%/)5rP-0JK4"6oo_u23eٿ)~;,)-?eѮ'bx&exX0p!تCzm"4J#%'<U!**ĒtxJx| |Ibum<?xB{e#<7zV~wlqMnd(!ඍ#ؘSԤ#w5_@P@ì_
tXAK aX^Ò9[hҀYsTJ@@4Q۲r
gY>
pb~I"CZk
8a5G)KPYcSbwZ55EThMߴcVC`P黸pXF9X~-J>%8wgT4O-	ڈ1N<vI~qXK~ґϧ`/&1mPe{PK?b    PK  ]W            :   ch/qos/logback/core/spi/BasicSequenceNumberGenerator.classRJ1=SjnD0 E2Qi6&Ψ?B
~%KEE\>}Ă>d<d#ǰ,ʶyӞՅ:ۗWmTN튶bmkʱ<ҹ<t⌌S&"--y%Bk|x` (0K<TW2Rĭr5e#T.*-VRh"JmS-rӚv=3^5,'[4BMx$MC+EX8e6j6F޷B~i"6vR$oɴH{b:Dk :A2#g+g<¿O='&7!KS_(uRl _~.F.՗s'PKt    PK  ]W            .   ch/qos/logback/core/spi/ComponentTracker.classuRR0=a
*"02uYܥδ01dk1$8>_>~mK}h{&? º)Yg!?y6kYl`aᘟqOrx}eE"n]vvɩVBy0!2̽mo
?{34ϋsaX<>}ۍƷxLa7MRu\IUL:`	DqTĺI-^vj۵Reĉ>RTdԀ'_BA:z:_ir)/ݿ&rJz)EU[OK^6);Dahc}{PvWaffCXlhpr^4qN>f0z"ܼoá<-#X%m.x\R^
gOoPKq#  R  PK  ]W            :   ch/qos/logback/core/spi/ConfigurationEvent$EventType.classTOP=6CA&(JEQ䇸YRfjב?IFFGEpƘmN{s}W s(Hco+t[FRw\Sicm,VLۛ7(2B3k9mU,U5_-W6+jQpԋ"׏Ȉr.uM+jsJ9NˈsR\]ŲWsqFF3N2TpV92HҺ3=뭟cX .0M6 ){4R1qGqQ%c6~TKͶY~p7},;4ZcZvc2&q!dٖ0,f6"hD##G7eLCŴәgCU	4xɲMeUcI+R^Wdɩ
õ]u0$޶3]^mDua^ۥ@:Avgz+x*Nۭ+/u>͝\3[ޚ$ߎA.ڶKO"z䟝F8;x0c$D?6"-(?CeBu0CpE%Og	j,ɦ>bҿ|]5򥅷Jw!6C |(IϻJ>j7/R1~-MDZI:tfpzM w_>Nj  tP2!D0AK"H|čD/OMaf1UZx(0GbY?PK  3  PK  ]W            0   ch/qos/logback/core/spi/ConfigurationEvent.classUsE~$4""V)CZZkIMm$Gz8~?:2:8C9{9B~\*envyw}w_p$&pFCL$RO17lѐSw-ǒg2#!,tlmxh0#Ȼc\<	%ώj͙+޺r^4R&!]Pi\0
rm\1\;~z_}P.;IZgn1McN*NV7fA>qE`]ۼbR.<JyVUCU
qaaf!븡!cفrIrZ1;z&baz
mI-,Ӛ>凂Vwlȗܑ>Zf9'B
!6)_%-Ti
n?䞥ß1ٶ)G>qoS $ǡ`Bߊ\S?DD3ty$|uyU{m6Ng[B펵ifWTATLfqt}Um^ʓ55Ķeu߲0-_	U=וўma2e;6Ҽ:f6SU5gXx"[\e/ri亇zG>DB'oP"mfI
8P&
koo[)N7B:ΩO?:T`#u/Q?,{9s-ަw1z/ m' ]>g@0RnX0R&C7W6owۻ|L@]1qg(HqFilFj|1N(\×_Wà^&@&}0IwA>7L.F7UH$(ҠnZ>P+ ýi6JAMPcoke|*fPKK  P	  PK  ]W            8   ch/qos/logback/core/spi/ConfigurationEventListener.class10C
XaK,JH!(48 BHx<X~~O +2$Wl}qRfxuPxmTQ}¤Tb\S):R-x	ワBF/:jJ Љ']BzPKE       PK  ]W            *   ch/qos/logback/core/spi/ContextAware.class}P=O0Wi
R<20!RJA0;IS"(Z!޽}_ .pC8+V<	m$^
vj͍M-g%W9˖RXB6ɬ+/'N7GBroz҄dԚB^qRoTFyV_GnN7h(%aL[WAuzc=b/AkGn`PKGeЫ     PK  ]W            .   ch/qos/logback/core/spi/ContextAwareBase.classV[sFNQb(N- RB岶7Y2HwR`}kg:eqkWsoϞ?B A*:Űo΍bj.*CEМRѣ *C<_J=2ns<ʛH-5ix\~-1mAȆ-斡Ep*_ysVhLZGU`?1`ڂ(r}᎘~G3nps	aĸn	^؈	aK3ƛ-8eN,()RqmHEH
U{(,x75Km&%N`DIpz۾-l؎(vU3XcyI!)r:
FUvo7RwU1p*s;R=T|MPy֜(ñ[\
<>RO>9Ŋ|Ӎ^|Hn5!I;]h{82c5*.c!B=R㉝p	SNK2Ud=L=%\H7.	iedyNn3SG3)+ҴӴeVk^zK[#{i'fpV3l֢$,;4-v8%*/>*͐إ$ZI"Juo!"PoZ4ʯH?KP߮pb˻׀QɚsTWiؾ8'w-7nED,U+/hR֝<+Mc;dnPvY3%NmŴb,jU+x,Qb2+<9{׸QЅ=5͵j%Vmc~}k &/hQ&unV=QUñTr5c "4җ
֦qi铃K6&X2J2}i) 0Lcw_?F557,9G퐣><w!<H9ex͌%_ 7z%tWѧ{MS9`
]aA%5nvbx*Gh܋r 2ܳFB]&]:'<9ԨwgrG5([{09A>pmYѣ{·X_+)_btwyO	JFM׈O.r!/FZ
陱}l=L%WT-YSTMN!|9P (hR(g(q[\ZM|+[Ur
nQ/5t0"Jl+<ERLҊnm"・Lw6pb=_/lO{D;ĳ
s>s{&^%>_'~' + ^%> a&PA2{
[|qPK%  
  PK  ]W            .   ch/qos/logback/core/spi/ContextAwareImpl.classV]sF=k'Q(81'Zh1i&(NZ`-olaY2~NߙBHotzW'&V{=ܻw p?EBXAn0}Wyf)5Wx(4ngbzѧ *CB+YNʰJUReSStŚ{1EZ3ٴ%nYb`Y	G 2(Z5\o6Q!nt!N<`r0DybzM5W^pȇ/aƹa^\; :b67yצ(8#
FUq`$CIBݙ&/	a21mKmMǘ*NԖ|WT)MVLu+5O4%TMG0	`
eau1p2SGR*>U^%-ӌb0]gXSKG
>Vq^=Q''TEi\z[-hHbNJvf;B˸Gs$1SpU4é y_! npS"b+m=CxtUݦʿ
$-;M۶e7ռal7lp
!H(U$nz lƍEn_r:i2"Z!Bݡu9JFV5gf?&^א.ʖ!TOPcsE%kG)m~%bj& Zh;YO44[u[t)Pl%+:k3-[EH+3.gK*ˎP+X1&3\*®q͵uc76<fXβ*Z4[k"`-ׇpQ͚3w(ﮨ*HTr8Jm'iz~i+obUzߍE_q$x=}dк0>aN),ja;x3y31DVh})s=m92|o}pFGWAl9mOC!׃TMqd:y@kQ?S}<>@
쩜!-{<)/4<9C>Z~Bda}4ʝ_פ^쳖ߙɿx!luJ0RC=MɾN ղV[-TLP$q$c#
}0)gI$P
'/2/qm"ކYJ\[Z@ه]lHZM
dpo}-h7ʙy58X$K ^	$kCwwM$>$~;="~č@- k$Fճ6aKlհ1{PK7奻p  
  PK  ]W            1   ch/qos/logback/core/spi/CyclicBufferTracker.classSEǿW%P`Jъ616	Eslʑw7Q:cg\f`&>/1 EHBDŰd8+ꩬ&&m*]4ZF7=r!՚c&S(cX)vT]S/鞏!uR~l=N&`HXT~[z4nE!?9	[ܴ3U+8[ĞbK\۶yT:Ͳ;>GQ];JaZњ\NȔc|ł{p{>J)T0LhD9|&d-X4tf43P$]ks$ܒ/L,/kU[)UI
,anۚx9W4mLtR*bi-ksgƹ_SmV*+{G[v_.vEiJӮ)z
<_n;D-PhP&r|}VU"CUbjb.sy1aguZGeJ&]#j^
W/|͗bUmSDtZv鞈5CKW<
cmA7!wy\Z"_^.8J>1;q4tzjɖ[rct"{̊īFTyYwbnD?°@oIntί!}L )qF&z4fhvH6F`)K']`C
B4.xN[Z'wM[C%]?ye?CGE.<{5$\aGwHpOjYMә%92ſGxiE/]`j.<({glϝj;]L)Zy<~F_8B~{l^<[4n;E~6-o0'w_rOU}/|>A:kW,H&lއ
c.zO 
]zk^:2
^pu~v~PK;,5O  F  PK  ]W            5   ch/qos/logback/core/spi/DeferredProcessingAware.classu=
@EMx m| iC6nCZb(CB`{\0֫ph(rتkèd&MS^	V}$f=a7Z"aэ.!`PK5í}      PK  ]W            (   ch/qos/logback/core/spi/ErrorCodes.classSMo@mKJK?Bq 8!D)
K:vTAIuvz?~ ?
1v[57o_730 sKp	w2N;e0#f_.@s'OOTch}3Xs۝K[Dqy`ݿjrSre<+D
m"Rq3T[J""-y3iI`E|J5XeH1&(Fc{#!HO'uz$mYc.ltn_aGAw_Ή"h@0::]{MJjy5`?,Dx.L%"GLR
yyk_)dw$lnqIp5dp,}M5YCɡ0rU6	̅E$"z{nPisʫfK%b&LSu%LcI{V,F0ؓ%uU ؆[݄n%·
)NG~@'V	RƩ0yط*
[.
1<'UPK{=  b  PK  ]W            .   ch/qos/logback/core/spi/FilterAttachable.classR]K0sucs~<,ym9
'gYf?%޶cºBrN99 ܂*LGw&D4VYi#1\|M%LgR
C5v-㵣ch,nkױ3(]%OZ)=W4(^Medz*Ŕ}j{E(r!VHn/ʒ\ORTE!mɱw:7Ez7SwXjPtQzl&䣉o- nC?pG	t7ܝBX PK"}w2  p  PK  ]W            2   ch/qos/logback/core/spi/FilterAttachableImpl.classUkOW=?
	#qq	y4upSh
$H{ll^R񽿤Rۯ4jQ?'TQ]bl)Y{g̙33{|5xD<
*|}=VM<K?eT+-D
zJ{oYJOj]O[Ȯoeu o4,An;B*EOHFଂAC8'Q33S_yZ3N8	IJD5"[+#]=vaJ|%S|.G(WvOîژ" .$RKFY
WWgS̃d Ӹ "3ޥ6[u{&-ȭO䖲_\8ggaWU pMup3OVUdF=yS )nE\swW'U%lUf oT;zWKY|onz=!0BۻQBfMɁMR^`:EpqerKk[	ei:
2-%%K
# V|V83bt׉.c<aHy=N&	՚Ep7EZ;XMoV|φ"caRտ[B'-׍vDp_/TpvA8nS~Unc Umǎ bl{~G}{俼䀋A+9ϐݶH)<##|C)Oco;7X6UKvMZyVV˔O8;&~"ގLz[,ߔ~ʴ]N{nx#?`:>|asL>)g~?;+~=2 :38#Q{D 1u5\Am%9f*<VXXjұ_lmߣͱ-
FLAt8ޤ}l,ӣdJ}m[<m	&{׶PK)]  f	  PK  ]W            )   ch/qos/logback/core/spi/FilterReply.classRmO`=ڭ[-R'
İ9ƒO]XZ:d$B4>y:1뇞s}W XUcͷAFݲߘv:f5^;Α.YC	§t&5P,Vv%ADP(nWxꪆADK2̫jH]n0m/!#[:-ӳU?p숸#`TnQ߄:ǖr^3]g5k]r~c7n͖s}7Zg6zϳ$*=D*	Nk,_h`@~jBG\l֝b=<G>ӥܫc(֡2/h?۶Bo,w	Re[Q+$ddt!9jo
W7i#t(c0A>q%~	Bm|ĵ?P0G!eBUl`%@hxϩt="Dgΐ9|
ᔊALs.YU~YLbԆTm(ZMk/GX_tI+)$L"PD0zST`e{XPK +ʂf    PK  ]W            '   ch/qos/logback/core/spi/LifeCycle.class==
1"^NSz JXƸf
fMVYx %&"N߼ޏ'9"D8M]qqbX\Z.̑
qf#{<m	LK(+[/
RZF< 3!(#)2=>#>PKϤ      PK  ]W            )   ch/qos/logback/core/spi/LogbackLock.classOn@cCGRB+S QYPϗ_b
)GEM
Jvٝه43>*zp%y"J̢V9#BmNxQkc3U$V(j}ބЪ-/Mh&.BF1+x)SS&#~ݧJOLqc_E';cl0%jM>[]<16o\VվPK   2  PK  ]W            9   ch/qos/logback/core/spi/PreSerializationTransformer.class}O=A|z(l :*	{uuQi
?P^Lf&tECK3	&
X3adVku28YCP[g+)RB)}i-)72jw@E1OV|[F7E(fo+R}ȵˣPEϯVnPKH   E  PK  ]W            /   ch/qos/logback/core/spi/PropertyContainer.classej@ji/ݣK/,
yͲn׆ݸ|5>U)gs:X)B`kVZUpńuՕf[g+1sm@xoJn{)<!Q̄y[rQE!"Lҫdkkeo$,_]Zƹm5μ64$h0D:(_PKh   K  PK  ]W            -   ch/qos/logback/core/spi/PropertyDefiner.class;o>snv&FblTLԢJԴ̼"vFĲDļt}v6F\F8畤V8'5
K)
hh .)Kfd
/-JNuAsHVFf fz2vH21p PKE      PK  ]W            +   ch/qos/logback/core/spi/ScanException.classK/QV=Z-1KbS$Hq3L|$Db!kQ,ř;Eɹw^vw`	SDM"E	}~
;~f#_*!"2*_JZ.H!D&.df̦q<VV\axGҨMA;Ny}p%H|unD?^2jpaC_Q&q8f+ډzV /kub!*Sps?k
gbi:gFhG.B6J1/~zR.'J`WZ;@6yRcPy^2LFڬ	hVi/`N|ZЮ64Fc.KH^~:Xl(h	TPK+Ȥ    PK  ]W            5   ch/qos/logback/core/spi/SequenceNumberGenerator.classuO90sB))aKjycBB o<
)v4\ KtH6MesY|	=v['ꮨP&Sy[Oy(S@w<D]Vݬe)u~aİa PK§      PK  ]W            ,   ch/qos/logback/core/status/ErrorStatus.classNAETDD*2G&{3NV=>'>e&wU]]_o/ l[m6}oJ;[ DY$"[p(|0^iN<
-<SPyAm4ʘ.ъ"W-D0)IBVQM!~nyn+ӑo([oAK2MH}ϩt6F4/EP񖐹T]m;'ҌһkQFͬ1|:hm!fxϰf9VysW@)ƛC)Gk$~i!\\'8E@X
9PKHn9l    PK  ]W            +   ch/qos/logback/core/status/InfoStatus.classKO@˛ 3ѣЃ&&RkY,\H<P oIDFOnKˍ;ݐ{>
I$2H"Űo)LD]8?aT>R\XUo~milESvϕkDJbo
V2Tf;74Y)r8n[5d5w:
ߜIG!:,SPC}	~y+3~eZrPe?t?S+F@{NMU{#DE5@rX"okG|Ia(R]	׈Ҋ{0B+He \'N	85p6PK4j    PK  ]W            2   ch/qos/logback/core/status/NopStatusListener.classQN@%		pAPP(hTV(ҟSrG!g7(R'+x.PsPo&a)WRD2`мֱn^`p.īIEdDh%Lfy*ebON3āKopf_j?*yAL72E^lSOO#B[f%yR1R:Oy%E8NL^zkK)wq3HwЛ-86-ac#yhX7XW+cqоwd?PKO;"  '  PK  ]W            8   ch/qos/logback/core/status/OnConsoleStatusListener.classQJ@}ӦZA/Z]ABm\4ٍ_GCͼ+lQBم㡂*0[YްP%iMy|&|/HNꑌ9&{q
K{XGh];"OYpoEsۥRCyE*0}AHZE3RWKӗ8K\IdBy" 3ՐИ
4	ũ̶n2ri{@Y,6ml$+ϠǼܲX.V-z
hcFA!v>|n-hBKȻPKK	5  +  PK  ]W            =   ch/qos/logback/core/status/OnErrorConsoleStatusListener.classQNA}'x
X%QD_
qo1{h[d{6`N]8J(9W	l;*-XbY&226т/ebD,)O|,ciN^R*.63<ZN		-?HVG.jZ3gZ+=Vq"
kX\,S4HW!&\˴AeB8oD̈́YOh~P
R\t ز7J_^ƺds63m4c]r ';/p~qWN%eS/PK7  :  PK  ]W            5   ch/qos/logback/core/status/OnFileStatusListener.classT]SE=
β. a$@``Ԙ HC3az?J!UIUh?$,dt{9>}o nb7HhC{h/#ۗ{=]
;R\"{3z*PrsH@<;^%֙vdn k&}i21%9cn<8,fEI5ϒU
"
֊5_RҚ)'j"KzL+`_2ϼ~v;> Pd\xĎ,1=fhowv(C
Vf11ͽ0p	ј^󵡖w0RH$٢IFRd->qElU~50#QO-9P~-oysx<]
CIonlrZ`J/u{Eeć1e$4#t$)Y(+5ݎt)G6=?	ԡG]pg.RKb8aTaܹt;Iݣu^M4uUz}3M|'P"JCξb]h견\fk+h"Cϲ*R!u(+QbzȾNc3Wg<zd>IbxPE4HyT.^N[O	aChspչvNR=%&s- +>"fOR
|pr(]u0u0nJq`R6if4埃ĄCYc,JȿSTX
Otsz}%wt8N%FvgN^z)`'T|bq)HF7:C_`э8aB
`!|Q`,k"]#X,HOM_n^x1J	 SO"ojF-5&IFВ
Ih>M/!Oq8@doq>ý&B/
DH+b"a[  ;PKɲ    PK  ]W            @   ch/qos/logback/core/status/OnPrintStreamStatusListenerBase.classVYSU=fd&8$
,2@\b3t{	}E2UE,7ena~ߟp518\Yi3w%s=+LֵĂY'MH;&P`i&0uxeΏcyX3b*'z[*Y+W9ݼR[
(6s
,M'бM`eɛlɢFt &o33g]	fUzNrf`9?VkV䮷w
{q}FJ`_-؊τ8),O~ZEkݮXO&u	]vM6nY+(+KE9n쀐@F=}m5d<:}eDB;lA<$B
QS7b0#Q12IC%W<	&ykm_|	'pRGG0 &^hȅq9+C6*m£xL)C8ŬH-,^Z]J]cDǨ38ZWe6f.mvThia:yX+º̙NIt@I7I\4e(0_d6onțߚY!LsƜjPהTd`Vv֊h0nz)fKVb.φsىccg'NM`H&չ&|rZ;ßX#ifaNKY7g'MϖѦI6Žlo[u@rݎĜ(2l(733UKmJ	W;l$6oh@_v
Z/]baCU72J)4Y#|9(j8_*5j"F$Q㭌zjHl*e7XŘd_+Ԕ85hK|n@2hs9v
y밉Ov59泙22[1
trv]rl|D:т=(p,<@S:9w!/#@w=w	wi	{KY~3|(~>/8ُ(߻Cok=O([QZ)
A`3пv=ݽW}>3ǈq#*\PBfv\@7`NN~r#1/;--#E<_Ƙ薫~ÓG28wuK0@C:`XS 
A(~9`XL#˓a3*>F:R.2]o$U2(A)ZupD?Nŋx~_E3?ukGǰ+9@T%?wuZq"Wеož-QA>A,ϩӪ4Gի\(ق׸GmxD1Z:miM>%X,xf/,c}[BT{x3PB2{P3eVv3-]D	;xd+.^j[yښ_{
VJI5WTfR?)'T$NBdu-UtaMjk*dGE[c:b*PK  (  PK  ]W            '   ch/qos/logback/core/status/Status.classSn1=NҤM[Z
^
%)R!Ej)ěq7.݄x(Y'苏gx<7 /9d@V`:C-DӴ PT|{ީ@\9cS9((0s"e90rUX`|PWs;s'ʍ2{u/0ĭD(ۭaF)IVXSx|cE@`<^0U OESr,}ԍ	?ʶOss$ȘR2aٚaVhX[93qW)Vk};(;ˍ~Z:Ҕ
<
,uv
؞*;[+_JK kT/`I+#а_wG~6^^] IͰo\D"iV˘o>3h/ً/K(d8Gx,^
7qm07yV_'5k#eZpkɟ`dȩXm~ix`!Y܀c1Ԫ?nPKO7    PK  ]W            +   ch/qos/logback/core/status/StatusBase.classWSV`A`cI8`6 ]k	iͻNI4M6qmf:/;2I!Ԛ2#s99o7 N\*(Q+6~>n'ƵعX23Z&n4ji]AI02lDjsZ{\KLQ%e$:$gX&_24J^zG˰^<R8[}ĸIE6+p9=@BE 
<3z:MX`=Qܢb+;2Z=ժC_f-E;<KE
k^Jgl*'2CƌkFGTq7vd~gfRXԗO&DFOu_#EA	ij)=HfјZUGVм>)VVh^jlڈOlH3~6cE>#vIq|`p@AZ(@aeLvAqY7sC*L2`ksK-7+ץa	{rhL428$F8.JRLrN?T<ATE/Hɨi-ݧ_8&;N>2aVs* UHSz{r9=*`TAuaŎfY!=)$a/~@0c";G6;'bE_'vx#}^/(x0+u٬`l:44<bo&i&F+!"92K]q-\k
z<q9]JY-"1ӏ'OxϮ4U"l)]Hbv`3 y^/tMJܕ=DhW*ONEFHFM<4XE;w$fǡՕQ#egԐ53dLk)Cm+3-3pq!C$Ι4ۚ7 ^I`l*vW2](TQtl4<FVX9,GcΫONK%mNt6|8Af!ٲ6fWOL+Ar=zXVV\=YM8iRFc^kXܾ{TL?fͫ#6]
^(</=߼L\/o=L9OkSlשWr/Tڦ,Aan{2hUB"ۦ9	@1W NEU>Rh	PPCm
պPZƶ4x}a74-L8YFsprprprpKf
ItM%m_,t.$|90"&:zދ-dA܋0	V_{\( _"V|Fă
އu
.|qtZl'ywT."jlٮlol|}"gV߉
sR	&tuaR"aWYIt;u;0_ऋNfy祫**|K
nܴhce<n^\TPgl-DQȋ 
ZM<ݿu^_fS#lK7!JFci1LM-F cTGldnR#~c|h-),-<ѳ/TlVXl(E6Wn*,5|Xmn^9Yt*hWnt,:d[igo8"~8r
Uo.<.bz$8g>fVv
4O\cj/"F<@,ɲEV2r׉'ygɚLE25_S/ᵼθb''M(J7Q8]XNI?5͙4?G@+?r<\6^}[$X˗quȚ|o.WIƷmpnAoOpTv
6tLm8>uh/MKwQ`\.58jf
. 7;s)cF
%arkՆ`ҴPKfb
  e  PK  ]W            /   ch/qos/logback/core/status/StatusListener.classON0}nC
~	5ᑡ#)R:9Ωu	~_Qs
S={w-z^7emW/R[GZ/](Ԑː7jdA`j7yIWt/Y9y
|C$HlE4ؾTY3sVXr&ֿd\ge*0Xiz0Q&L;r&k	#bvOv]氫F?PKW{p     PK  ]W            5   ch/qos/logback/core/status/StatusListenerAsList.classSn@=!riib"U\,x
J[N%
$PH| ]G
H̓wgΜ=3;O {]TPuPPG>R2#ƾNt'T`aM,C.TX`C+i.t2;y!i.v3*Qفn~
=-2:V=\uE=IB^G=IǜDŌt4Pf3VbmZ\yyX%܊]_wH ,OT18F?%?
s4smbblU@XfxVͳuFP7'h~F{7x&-ܞq=Hu}
^l-˳^xfV.Fa}n?R5,sFN}FSy]kPK    PK  ]W            .   ch/qos/logback/core/status/StatusManager.classQ=O0<嫤;!뚐bpJ5~ ?
J/wz{` HG]RS!FM[DLu\,/Etdð&f3(U(jfIEM"aNm[.aeE^QQo
+J5/F+j
TL_3FK
R	㌩:!m]~~٤LFY/YeF=҃ ]{vЧzp;u~mPK!
X  X  PK  ]W            +   ch/qos/logback/core/status/StatusUtil.classY	xT=7%H
a7P	AEp&dd2g&
j[Vm.-(nH]akkjvvբ{d2@/o޻ߗ'?	XU@	\&<*</|A.w-^sI+xD<W~701κXcM8.HZut8ݓk?јBIK!|@p<a%GFb񴵞҃+TM4`L
U=Hȹ!ѽaZ{9J[q+)
A
CY&Co+Sы,mF
s
`\4gp/t4eNPe`)P3j$rQ^΋zG*L>FmT0ie.]ݚ[hsp<
cƠ^(L:맯00oa_%+LߖNFE$Z`>48Y$Sr3]N3LDTh?D2s`N)Kʼeą51K[ukEtʇ%
#Noi>gmKMaBiIƙH¸ơ"M_-gVX4-	'SԚdUMW8CptLs&͓6HTQC+ՙ1T_S<ak$}l]`ńM	kʹ(p{t"j<q9ؤa[NS8*ƘԵE/ϠZ"bR,:i8I)0O.񅔧96tm=V<bb"zTQ%%{&.gFeb՝&:SĈSb1"ĥS#2*a5hKg"9p4p/Ii6o
wY\I9Y()"1C*=X61ʍ&ndFE-9yr7ab`'eylaNŲ])E0VFcJ&FWv$ʈJ+
ܛqy'DcV2-p
z2fMψI>T&o2n+޾X
\/[b&Azr$S2#ɪ)i,ZGQmh*PmT#l	{[.;)S9ƙu&'qK'2aW;i`jH3wʛqk\fgS9	VQvΨs`2+TǙʴF$3M/pj$u`>9T`daP4X
9ku-nOaL%L2|=ӹ[v[홟^D--Wbui%"&
U1{p	VT-L*XQ0 >$:DJj]C)fq$ғ(BWx3.(v#)M0iIDP[[gOVl0 hw1 cX\=qj߈YQ!=WK  ":G$
Au1ږ^FWf*"xms8^*RT6j1nz8GE[Vܕd[]Q̶DO2b-Sey(ϐ#w{?w
U?!~|Dq(fA65 &Jc<,1QPx2<,p9OOrl~V2RfM?*nUV5CaYH(, ǐ,;LAC`(Ϲ[y+/j1]{Qj`^6p7E('¤U;0r0]TAn(<#f{*<8WoY+JwYUxzL*2oFtS1/e:
~{>ޗ_K+d[]=G1Jk :.Y:zn2nWhՓiyfYi.Q|}r,.Qڅjw>kcY/[N2wH4)E[:lw['.,"z4?f]882;a4Q	.i[,<~'.j!mI}X~+w/ܮYxa#=(1Ohޝ7!$ҏU85]k'7<Vxq.ۍ>,7sc<?"8;.#̨[SCTj
^ضdǟ.3oed$\B>!
1b1ٲ+v
b_6[߷un2[Gj!ŽtQa8~#o|+|9w;|t_ف@z6;+guS$f"Ųfո ͸@^Lo^;ی:+{|dI5YKϳnr]}!V
3>pE]ݟ`.^LaWmپjg/_S$/+%>-o;
t0_Djz%Z5Yg6#Tx̢_ô6RP#`_\Gd{Ha[3ťr-jH AiI76ۿoGŷ) ]5#HRU7GWwûѣz)גp#3&6͛qnӭL!z,ze&xŝ1V?u[]sŧ}7'(ĭZvwc	~BίSmr;uE]Oa˼t)f9%[g&hxtؤm	0Xcyq|%HQ2Bժ֭ꖑei#C+{f&kY w#O޳H|WWo5HʄdZ&
:ٞށz
d[9YnC
`L=N<D{?xuUl'b+=<yB6:w8'6B,_^e>&M( 7v%
H VK@ \ɲ'H$>y G9<0		&7R,6ι[U9~wzb?n/}۩j5#3󶍮ށWl!'RP_Ʊ>yd&n-7Cn3z6DԪMd>y!Laqq("ȴ~Dh(cKibp_KHjuN	~b|_ՙ!r~޸YGljK45;VM|ҦV2^^sM:B8H:&&:6)}VU-4 yRPKTN
  ~  PK  ]W            >   ch/qos/logback/core/status/ViewStatusMessagesServletBase.classY	xTu4bᱍlxX,0,	ak,,4dBܦifi!qIӴM6MIڦM%i.qtqf`/r9Ϲ>G/~vyC"`
sCav͸cG3On>?^`Ns:v[5"A
̃!ؑHŏx&76b&9ۊ;P:6{,1,t,AU"WRt)sX$X4f"35ౚR:Ri|.XMoBq%n<37aIK
܌en)XXn[.ZYwp"ώ%ʲf<cfǸΎ5R0pn嶄cv7׬s}PUPҭe~8(n"f`5ˬK|&L{@!M(NeI55XD:nĘqw7mqlyEje]?fb
a~$HvTh=v3tOrרB`ih[n*70z*Қ
#o}{keywhUں;Z#6 iN9uuaArJ߭AUZ$2aMڢhA؇{.mf,Ms`0}TvmtL;ko+;Vp@pKZe%f&Б^c?Ti!ƍ9d%\xALf21|M#4`kd Wo$-;$*S8DWNVOY&#Xٖ+dl΍<ެ*!5JNs
KF3'z8{c(6wwDu餝pzQm8fhDt)ᘕKё\&M291s۶NF7Zomܫj#nܴن5ub]#9x'G\&nmmmTbHZh먕`1jRo27LFѪ羹n_Tmu馻|mS
IU8(4X1W6yD#,iˮ9'o<&8Gƨ3p#Ѣ'm ~UGTθtwv<2бu?wpV.C03;/} qbWCm[SS!KwӹkںcGSX[F1Ǝ>a^KIU2_0]L*<Iht^?xC>ӬQt5򈗊"Œ3q4O >j>FOf:QǾ~Jx':>=,2^R@Ԋ9A g+~oFTpMpy]ԫsp1* }Dt1^2PtnvS-**2G>;m[DiyGlis84=yQ>j4]!|`wv%f8[4B%XG̘tߟ_Q~TU_ßg_Qzxn%9Ttu'F4W^x8,T7Gs&}4k}(Xd옛R]`]jFZZU,gRAJCxY0Bw*֗?0ONhe,tt7QDdgVz`k
.L+'DaT?Joo9sEJlLSK%$旪5Kt0%hHHҹ^<i:sr#u]>
YYl45Mz$ȐŊ?a臏6&Y⣛sTlO	-K*͆,L:L[0fEѬ7$+u% sV;c[b+\fK-Ay3Ib²JQ-JV*]JwuAݐY_ԑVLÃ6:R/
^]`!VzzcMaƠl2dq{A-ۉs(K'ZN[㿾ZzYl%C4qa	zzX8>4yETWe!ib0KݐTWAu3aJ4mf#]s_W@2++!3St!ZͧrIlw:kG,{Ѓ:ҝKPIi|;n*M#o%7DV\l`0GPጫ'a/WT|bu#1G0t>_ҴOLW`g- YB*L+]]1DȥWmv-(E}1_:tI9. s
WeBcJrL揩l"'
OXieUߠDݹ@NHךt숺hg̋X4Kkv$="W=,#Nr@P5WIg[ާN3RwBpjzv'z*1Ɍe]ohq6^+Q5YsE*vvVU7&ncT0V!҈!	N_>sE|%"9-stgT: r7ݺݎ*
/k˵)TW~
<x~kU[[7ۙ+h`&B}wz94î:U˾:MaO)ÑaN51X.jaO*_NQ?Gl6w#aDMmXC	܉Ј=h  =3](Go=oGoxw㓜u]4XR*
÷q/~|E-잋^Ge2WPI}"^C ];șT"zH>M
)-N<@Ȅ¢>rkNzc^^s^^ݜ/x|}b;g[5WXډB c	i%!$&{,7JSpqHC*AXUig+{")xBPK}#>.xӧƪv̏^RB[aYz.ji&KtPn*ߢٶXDJ&h~RFyH&[9Łxt9>|UƩ\RE~k~k~k~k~hU48	n(=uz==uzL_RJ໧>/xV[
O࿕ʛ?8ó/\y#]&.z3Q~+m|u6WxFeъ
@ILEXSyY檯N/zm_o,	T|]5?pEs38AyswwрwS0W0w*ӍĔj+%AVrIҳBT\ *bAS/L8]KFVߏ=9魋|ʧ"y'KWVT;U-բj'eΌްk\[?%bvG/a3~W6r.ib:M?Bf|Q:cL{I$iP%@O崆rm-|*Z2*e<_қV>po魪$/J
@=5u
Rln):^.rsXS!d4s60)%K˘h2rIT4jhHpl(;xM|f5[箦K2#Zt!b_^-̧	9!''PKqG    PK  ]W            +   ch/qos/logback/core/status/WarnStatus.classKO@RDQW"#GML4D ڔҍmăe-
=?o/ !P6ƽ
Gn,x0fhH a&
)No1ԅ+cJpkS'\6,3U2p4]D#84-{H,ve:ySyKeµ.TC\CisOsL]t}Voj1'l~1ԧb`C[tS<:j22gji邢qjbwoS@{,Dy,9Cb<
DQ2q銻?\R`}#VJB;PK>j    PK  ]W            )   ch/qos/logback/core/subst/Node$Type.classSOP=oZK[P
	̸a+uKmG7$DFg(}ϩ(lzr;{_}(0;(QwזŞ4IjE7
YG],olI
"t\6*v'/I\e-G
+уC
c3L{w	z}sSᲂ~dC(=*MoüqF8Ix&QMc?l,
Q3t,.3CV9Gua/zHl/JYn^݋7z@ilӽ`GԜ^-C9t<~vΖ!KwNLԋycOVF͘ah	ܠuQ\R[-SA5c{T~6í}KҧQ*g؏A-nXGie<@rI	o1B}D)?PDLqV  n"#s<	zO8?ߠSӼ.%s*-$avP"T1tp[|
fhm!k|[#H=/`[!|z~,̴dZϤ*\1rId('~෍F^Jn2KSq{p_0}簰2PKTx    PK  ]W            $   ch/qos/logback/core/subst/Node.classV[W$I0Bp,t6b!;ni2Ì͵m!~{C`wŤ]+OZ}KΙA\/,8=w? 8BkhA@Ec(X=[8=s,{CU
S1Dױ\,gv(N,+)j?IAi]Nth5cr@gqkLJSGTQ1/
;c=)ߥc7гm^fGxOhы}}(sꕪmX
8 IOo^jRѰOOg`'o砎qH`ς1o:vV9\ϰ=W'lc^ n4VŬǑF8N(s:8,Fݭ.2 [`vp`JZ~FǏc笡Lo iIvryő-=8^Q
:pl,{sd.h)9McaPL8!е@KMhg8I)iUc"B-S<%AQi֚Q6I<אui-OOQLp)dic
gZKtmB[	괎6c0/5ݒUߒLˢ9bsKRVLi|^hW6Ш;U,5f1c8eÚ2Uohc{$ϥfNmǍZY<a#
~onaTfuP@ k]+'Tuӥ~iɪ%&<,
eL7%cq<׫qӛs*nW@vc"
9vHŇ{9i
)Q|ŕUo4|.+IVEgrI9%?l$caW,/:|M{|~xL5QL^>ff]I<#Үl_e>Wx`>j
fcl-XnZR7
D&{Z&wm7)
±SˣЎ0)IpA+VtRnf7NrLva:1>c_?lKJ**a.I`o;Dnfs_#b9Ɛ)7+a~hWpe9zaCHzQ劕]Un!*#Zkh?W?Ya?6N	no)8?&-Ud庍\&,Oߞ)ɳo997 <61#yoQ NquL%x|?ˬ\SW4	^836W!AMAw-n޿TxJCwqXÁB>zL@x!UU+Pyi?]5~	| I/'QnCL$
ONr@l)ݹy<V;3yg'z"Yޤ
o_G%ZEP,!t!2JnJh(N7)画ݾV]kN=`gOP-˙%[$)4'gI-I;)6'Vs
	_!AYbBbM!+$s"i*$Bzӣ,GPLcȻ)˔41äƈ)2"1ȿ/ȼDtx ,]L~qn476]E`i/M I,|ϭ 83"D])~wM剭u"g=m3.G^f-p炔HEj	;
S:$CeŦ%zeE/gBTGjSoFQ|q|/~/PKdӑ  Z  PK  ]W            9   ch/qos/logback/core/subst/NodeToStringTransformer$1.classR]oA=[pk)V,tƈ
MM
>
۝:|VcGlHŦnvsgs~	Aֆ`9j0IEr<[/Jxz6ԉו#?	9fB3
.Oȣ`Ǘe/Qa<+7R
1캽aL:
&.s)Wv`	%o[MvMon`|1F-)?^1f ѨT&jm5?h/;?NGé,8LkR`XXtgC|ˀGB^BPOؓ3ЀsפA!ZqIMgL?:9qq,~ĵ	`M%+U̔Yq).~lůX>zU)DP
VqTC:Mbȥ<"uM7:FvzVj$淪˴ˠ/*#}oPKO3  T  PK  ]W            7   ch/qos/logback/core/subst/NodeToStringTransformer.classX	xTo2,yI @`(JdBDP0@MMB0cH30.Vk7UUX.}߫7Z7!	,a޻s߽{޼g c<B
9A߬WHwu) 	;pGC4MDU8ڽNVq*\0Z]F{͌"q=Xo44|oTUcbḧ}ш"F%BU+V4YlO.(+;{K;$I,PlF{HJ6ҵB'˓s˚cdM֔
<E8Sm!0|4'JXb,TL^.0a$Xr
3q+e#R4C᪦P¤rrJR_`\PR_fi[=N+0q(d(%uΖr@ᠾ6r<l.@@^01
-ͧ&	T4
ѤL+CHWZXNjCNJ۶`O+
R@-T
(UJ
ZF Khаg\1T;g#JzhЂ'b(g4aUeTާm=z+l4L#./xqrtKp:eatD+LvKp)Glt%uԆէyTh2ɰZ2oˡSU,V)>%15tQFf<4[`2E#x<o6	[lҴpõF#b1=XiI4ppTbAhDC1p4ڛ]d
3]MI5$,;
u	g-N^^OMc+^u:BfOt12#p
CRŌ-p-sz
7HM>-0S܄Eí 6*ˌpLKm}	ؘ$0tM]ÇlvuJ'>*pHyI{ׅRpeq65Zk=sں}>if;#et14"pSSћ`in0MMF$H<i.|F>&z$$n7F$ht&htlQ"-j/	EbId4IY23w6Nr̮K="jc]c/ʅ2z
.[RYąRg4ƳcSRK&aCHxNxRCzT[-;J[W6նMQdmk`i5RX$o,9Q牑bMG:
z-ɍx
`O:̞9U#Tnv̤>)?]HQԖ9x9'e	'&Hz-lN57 龖sFq&TcIaN"WxWi2gVPR3yxOxpf+F}U9䰳Y9?0HK-ei[nuGt385£"Ic>Fy$<5KeVblƁz:de$qA<2UNS*qi:HVS%꼠j;BjQlW$O[4KC2SNPfI]<,Zlb)Ө.5I]=l=ѮdCXضve˒Ɩb,YT"
s#rDS8م	.tM(`{j̖Aj齙^h\Di%GhjNQ_-^x`3Z$c=ф$Cu
,b(`~,Nb8M^Kt-`1u\b^oau>w WN?}1v2;p6[2|2g}~|_Hj$5gԝ4|!eUQ{*,ZJkp::$ډ2 Wge^G?޳;@=`,jߤ+FߢFVrPgsO.CH|W@{d\#]3e S;޳*Q<NTRVh4"N"7CH~PDb)~F9p~*
"W!Y'wH1ٝx|\~;fۋ1	
V%sF%
o%)9
#h؋^>,ǅv*O3P22y~؎<9UՎQ$i ,k;j4+Є֌6Ԍ_DjV%eSƯԑu>9*/
NwٿUOG|q~&ފɕe|1^T;*!,9>o$ks}~lvzG0$ѫ]>K:h?VK@?Z5@tN{}V3:ILKX.C֒:7]Aktp/&_|{̂;uTnd*f>wPR@8MoPT񫢆?rAdWWƋ6OKTF9a&5Kw7q>d~oF#r'f;1W]9<QnU1+?nN=zq nL6{(KH5\M]Z⸎pgݾ5f[qn۱Xdٺ{딳x3ypX91OV&-M[#E̪~'yWt0`f|[b;'cvYDm[JOlCc!< Ee{xzcx?!TaOJ\ƹU8]$;3]L Ծݲ訤.z mfok|
;n^'s|+ExSc/o@gwN.r	V'd:foɌN
o0s]`IS4t9M.~.le=#Z_4[صثٻҦX!FcP&gsN?m4|_+_4$yݎ&#CSÄeq1
ڒ#'o~uX}>dCtx15NҔ;x<_-,&V= Wҭ!mVcр7tAbz
QeWEx[YBv[ܜL1." <'</
PKQU#  '  PK  ]W            (   ch/qos/logback/core/subst/Parser$1.classRn@=ԥi(4-bB¥H(q>Tg5u~g@B~ 53x;?}?v)
dLdcV*;!mOFVӡmWr	1B14=<>O
ȣ`hb&^Hz`[w~M
ޚ[JKu
(1Nm7(%ry7:.3cn<=9z/Q+dVLvwZmWWL\tvn]JOYo!Ӕ#jiCћÀ#=xFbj&5ŁFhJ[H㮈'rdP=BPX"j\)gX;cԏpJ{pv*zF$o4iN~Xl}De	fO*\?{KX%Tp5HNsImoYtVbP#wtI:,=l<_)PKe&	  V  PK  ]W            &   ch/qos/logback/core/subst/Parser.classX[~geeP.j낫.K"^uQⰌ02nvgAMڴ-IFmRӠUfҟɓ=geAǝ9ww{xÅ"/*<(VP~ZM-߸o1MAQ]}w	|(¯@bTLjD*7fsYqtHZbsTE+5'F&l2FbX`Tjdcgֈtꈟj")?ޱTYlYb%fUK-?jX`ڈN>+f\-թGHAEZ#V4ѓV@D})
XZXǈgCp`a%ڴt01|Б
J4re6i/6,1gɭfA`&/Ul'2}FR3e[TldBm"*v"*ب)OP~I3ڠޮ
jL;DTkUZT*Ng,1&0HLS/p?CEfQ>dҒVVAY<F#bBb{&>	8,8q'Cfxv]H\Y@-4z4V?6%Q9>phpU`Fv~J˙$`)w*LQPggMYxCJMif}ӚH	-;ӖJS9&@V4+`Z
hf`Wu=S\N$R֧d_`u~d0,@<`t4%>✊o2DĻ1!jzfF23lHy*yX|[w𢂧DeZ	:hX$[5myLSf1H"?WBОs&ki<.T.,
.L@|A2oh<qN?V_fEZwtEz"-d|Ϥc<tkfuQi'5^SN-f=*ܸsgzLkꂠfvkC̝E5`0W3[0Y+Q4Ց'_IĦӢO"G?O5lmҔt'|3`$z垌qKYT4<0t%}C YziLwrbRƵ(զPyTZ-ݦ[GL3 E@H9+0ezJbُEYlFrJ+EKXK
k}Vb`<̥)mڑ4GUD5$̎*5lV'Fn׋>^|̢¨aq3D眹`\O9[/ɫ.e\3onPmxC(!Ug%|6%X9Xކ_WX^w~En΄̢-=uB_e44F؈*^IZ-,r_
WȑC%ю|/em
7&<an|6xQcvPNi>`s{ƇB唾ʑK4PEW(sss'",G'+ NnCZicoA
^~Km¶aեV-|M÷~ϬXt?Ez!Vw[C1]r2=mBK{hʥj ͅ..8T]*aaaw2A2k#y<.pt	:^܇!ޣ^B?^"A	¿?>	>&|E1㚛;p#~-ȴ;
xPݸd輇s$RCTG8:DtAj|u,n:/y)U&ʉlz+l<PPL2'4L`,b=:޹&|(H:,ħ/f+FeIT_ܐ/ J/q<^XQ$.|V6- \#L3vr>2+;z&
5BvOxg~:{N*Ⱦ¤:ޫ-Nq!K1-&ܒ)-A\_#Kna;,tZCT]t=͖2/ϖyUCn[MT!VJCoQI6yw~Ӗux}?p`{{VUV9mƋ>:tүsI$^y"Sϭ+QVKƗ`EN'Mx'>~(6cvo96v0;'$ԧx(8hd
ܵ8=Z~i^mG5`-w<?QPK:=R	    PK  ]W            *   ch/qos/logback/core/subst/Token$Type.classTOP=V̡aJEA7aȒ
fK?TVoI2!
=ݖwگ>~ +Rƭ]5=t=K7u_-{*}mVAA
|11i.䘂8O\ęv
g͢VyW}IA'b/+H+ܦ&+
T9mu$}ueڮca:jζQݵL.aH0nPyOambM^z}^^8_Q)d.֜НYȔc4h:cHrⶂ)|'D3uL:^PIewS9zcjy%j3v2'54ոYv}]eH<wƷ<ޙS#mҙ2]El]l%(n3oMS܌׭}	982(Ǳ<qbGy4 =sl xJ&9&ͦ@iFGnzN"[~&3l`\~3fq_.︔%Bl0D(MLcN)F@/k0bgJ^	7!HmCHM$(}>0
>Or,t#D@A&"YQt`RAuLM^9X#Kx,0'Br;PKc  f  PK  ]W            %   ch/qos/logback/core/subst/Token.classU[SF$lZvpK 5FRD6*6X23ӟNߛ[Ht::mϮNw˷gs?'

ɕ^tfٙah7CF(Re'
kwE'jvykW7pQ}pR<|HA+ҾvhXCz*TvnWЁ;iCmXPi%\PЃ^n?jwF՗Я` 	*iv)mmp/*]@3TzYvzQQ1tiz2sPv4ӱ_
y
u\ćfNR{j>@>N>\C_0)ꪂ9@zmUT<䔂i2|vrk
fOjƒpWNm53K8
%6shU˦\+蕼V0ttZeOwJezYf	SjCj_SEu0#:oISE@ΪVb	s˲n;YC&Hyrlgudm2>cPW񧙌B,1u(ǾnmB!"$蜋g\_ԊU9daI3V-k_Wr|
ｾ7i0reG2*+bT"?+aa\%7u1DD\hF}BNn=#v-v6 6W{
?K<AGRpviu DRtݐ4Lx"izidcGhO-Npr6)"|#]ߡ1	'l c:B	4l@>$tNT$^}>e>fHm҆ I!7$d3]1"ȷc>a*<[rs5!SgCM I
ڭ"Gnoe>CPcZk/=hQWsBE
~B?dUD f5נz%taҀD62։.9 oqƇ4J)Wq9WJ78	Y
	۩l4t#4wI?%$FܥS.tOźm#=PKzo  	  PK  ]W            8   ch/qos/logback/core/subst/Tokenizer$TokenizerState.classTOP=oc" JA-#L0t,!~ ]Pv|DFg(} 趤s=|`y	!)cG}֪g~j3\i	0DDch/˅ҖV^,Kq	.FB39oS|׋FU9oW;t" Pz1̼iŁnHH*MaНɖv]uUwM# n/YE(8}rus-y\^u]Jhg9\@*;X<COze1[#*Hġ
`ODf3ٖfB%"K6d9j}jzejSf5K\C+gq~MvCۯu8qEЬuJÙlNWް\mVSYsa.[haSUV\?az0(E1=qP;6]Knd| a
d?|R4DruGkic!&Y9Ns
+tUXx	BNË{L&1p%	|B)I+𒩤vsK*"bK`fIی6\_O0,~,Bc;BXCH"@>/4e4)ٛƌa8?B'PKP  w  PK  ]W            )   ch/qos/logback/core/subst/Tokenizer.classVs~V%F`c!2J#q6d9saqRSi&l?e3m3Iۙ`3
2mgβlڙ֞]>7}O 'Exi؆uM=Qҭu`6-F"GPvhG7ʵD<7rH35;+/y˨ۆ@[f$Lgsù̏GIЎ~4씊<+vhnlZޭ	eK`Wf]5d=>
q`
grV29{^qp4Df܏@:^RbZof̚A_Q
"T$a q^Y׫/:ҟ
OG4$~rhZz)H=pЪy*Ieh*#xd^9pĩ
L
OjxN
YcV^=I
XtQG.~ HK-:޲ka
/"EJŰ{ s~Flf;Ϧ
Odr؅(,q?.jŘ@ZFG`w4>=QhGV P3z2TNh|9Y'zUÔ4*LMgrRxEU)t뭸aZ5̯$<kv:#_rJ-``֏9
0ݬ0,nlF:w-h(@]^IF?soeY*7yiݗ*iŎi3F5ϔYY׫>{ެ	JML*	V[V=9ڸ;Si еVY*:ӛX
L]0*LXtve9KUb@u5*piC
Nc̖ՂqΔ7B<ì5jECI,*鵚Qk}t'X=(!$@B͂~;ռ|J*g<%=݇	m1vXƓK?G!K>m6%]xSݹ_i#8zo+wxǕ<̖G7z1>@q?]rחm_)h~ 9ƽlbxj"X0t[8&ZDo<tjg&Wx(:Z2WFY] 8A<;
k6p8ENx'8|"ٌÜ-rG\^[6~J^Chû\׸\كEu_(El|K'IYtMvd;v-L!A .e9%KnarngW,k2v:$&go$R2E\Ux~
>oqv]'k0Mcq\dڣFwɴ#{2ɴ=vl6h {}\v]D
ǛT3ЁL2Ҥrrrrdʑ&}t=Gv?v	wn<գk_S9>WE5__T2J2Q'!֗apJeh~JiU;Ks> uwHɇ?b|V;;5Qc7ާ+eg(|	߽GHOGa9ڸK9"7J^:@lx!Z]>Wj1w@+Mz8jgg`J3{PKj  n  PK  ]W            4   ch/qos/logback/core/testUtil/CoreTestConstants.class]sP4iB&֪~BuAJR"Bi{Ŝ &,r\HL^yݗw e#;Cs~83Tp7N	"Ha',H
a#P/LY0u^%owzlR4$k-@SL"/"BcEqd;42EZtAg/4N͎n2+Q *mr¢-`ffN`y*Hq2)bZ$fRmXRVc-QQ-CL	voE5[:i)[#K{O1ZU47@q~dwd흢<&P^=ֶ[Du[PET9EA:>`g8#s0qz*RŦ^j㳾Qtb2BǑ㶼fn K`PA"A
Z9n"xzo ߄B;ț9]{90Ǐso$<>17(|$Oq-e:ZG1T~PKIE    PK  ]W            7   ch/qos/logback/core/testUtil/DelayingListAppender.classn@ƿM8I-m?PPS8HU	h+R@JɁ㬒-m
K+Qqx(Ĭ&Z!`o Q	$uhRH3]Sгr܏D܎Ӷ'!<bHo
_-YifAVG{)<{{Α;yr3M(`aBGQ?Mgr5Pd:p>;{Dq2hJS<86|qy(E
,:zwe$ˠ
u7Gz:^ӉQe('gԧWmTq=fTAC-'B/4f$9{N8m~DvڤγKk0vguA?rPi.x]-yLM&YLIh}v8(X`vJ .{ViEf&)
pg%Nu(>b<IYAԐ1uLO4'LkOLGvONp_PJTJH!%6(4a$Y(NFJ
*VFgktvl:J)<ۿN0^7PKSڐe    PK  ]W            /   ch/qos/logback/core/testUtil/DummyEncoder.classU[sF=B!	PH0Pz	@siB!-Tv[D%g&?}o Zcote[akߞs>kG0A	C2bHUjWjYf+fCڪe?5=;(s[m0HҰTL񥲯d
̊lsQp5_uy^Tдfh`2U12$\R]1ْЌj%dfqL0.k0=ښ4HLYc8ma()N|3L&cz$Lɸ+MMw"RufgIqAJF CUMk2èb+M]g
ɉnʸۤUW]s|)+J/e;OiXbcťRamn}ncuCߕq9
m~2vPq{_Ɯij#AŞ}O*Dk>)W6	R
[%-(T$y:yQ3ԕ^Yml(e]kV}Sih|.FJ2ž(;-Lor35ڹO&XPh=ZW_}հ;XS%HIl% 茔lrfY72#+!h؎Sb6B\ڄV\컅o]TӅ{&!RP2I$t+e7jm+-hQؓ`7ښ4cUE&XT*8`՟,a<Tm]۬\	G`PyEKRH%Py],Ւ@aܗT	Tc6ȹƸ@GnaS;!ƴH_Kza٣{?^ r'=e PqceFU	53ϧ3xxQg"`V
;msVZ|ON~w9L
.h}s7|	"EqM܉{ĝ݉{(5'|*#i
~'#c[6i	bB1gquO1ɩ|a	I1OioLHxd:@m3]̵C\x.QL;|]s/-s9J}]/ĥŧq'!ﳿ!y/4Ϳ)puSI]){szGJSڪR>Uaq^gɓCLwgQ܃{!z#A~0{ͫj%7ԫ5uG#-@.HvkS^u[:HwaPv}ާrne:S9BbtuM9;dAuy(hkt

wPu/_C
8?PK,_  ;
  PK  ]W            2   ch/qos/logback/core/testUtil/EnvUtilForTests.classTSW=7ٰ
F@Ԃ?쨭VV 	*7a%+aHOLP3ЇKAwo|_^"L ~b[ۛrGN)hp=7&Mu6`ė[ا4eWY7UɩgSٺzohh%2,88DZzJeXh_u	ЭXiGj[yf
cCc@	ሎ&GQylWRM;I~&KrTz2rS3S]Y䤉S8-Bwܰ[aP@^^tכW	i4p4o.bY[~@K7{dꅁK1+7oHc\q'*Ьj{Nhe8Uj쀬rNmK~tkdM=3-ioW<~ZrBtdĐDlg!aHK+6{<82s2R@I. -)l`~m iLL!O/V_/e]yf[YEܡlVu*sŢS-Ŋ#ZVmW]]²KzpQrq$0#!!Z
5
Hy檋].A
ǳ{/
P]eiSC;Kƕz3tܒO&@R{yZrF\yw8I#|C#0ĕ!>|L9YpuJؠ6Gs3 8D-ed#ZӞwFc>gtTU(+cvR`˟YROᴪJWɈ&fWoꯑl83<T{3h~	)"lػҽdl7޽@ -g@"A^~mp,
|teŚJ1wFǫ&r@#l	su"p gt"Rr7p=b]=E/k-Z8Ӣ]ucX7xuqĀAjE4~Vk7>̓dLTYy<jfh!y]ǂ2:ʖ@utwhHXh2ђ
Le{f	5G[l))"V2_ܺcfKxvyՄJ({Zx;PKj  	  PK  ]W            /   ch/qos/logback/core/testUtil/FileTestUtil.classTRA=C 4

rJ@XxhbOfc;OJ|,˞(JTfOO3?׾ 86Z
i/
w}TݙK2
Cj4?o! ܒa[r_Uu{5Spc-}HED:a4B6,t]ݣ
:A7=Kl+(f`zL]F7eHU:{덤V&mVӾ/ܟ\[<QR6p01#5ypts]eiG1˼&h8O^Z_V~tf0l:WQ"JyY8ΐV$\`h-`*@<h,/p/ɖyJc7zI+=kC⑺>]:`D8KGSʫ&{V5BO\tAPJG:B/
]X*煂ϱ4ڸn#z%_?7ukbwxPE4RV֨jĹuo["Yܜ aQ$"%#;jPR%a10:AK;mlC5;{(8	 'p]8
)>zm_Eǽi'c~^}t0b{t_6oC$Mk/}8@0 B:+!cnjeg1Etmܦug#EV._۾^%܌q(s PK'<\    PK  ]W            3   ch/qos/logback/core/testUtil/FileToBufferUtil.classWisW=,716H,lM	,	!11dҖrc[i ;3YɾNfɞsYIU!ej>OUf%JB={_?oVBhB
(qYų#i8hQR
U@u
+~JFw&䚫)6L"6z,Ё
:UlAWUPR EY{͆UD]` *ĳVfNK-S<Ydq~^@gfYN>kqӱFL"$ 
 v
2z{Tum=Sjq@*BZ(U$
dR^}WlQ?7/p_)/}idUqZfJs|*8je
 )RqjoYsdN+KkjSiE:,3!&?8 I:G:392x 'xcU!}V~9咮
Nl<FKո_@[b+Zģƻ꒝oCB҄Ih
yFn\!&ߐZ]r\bl6'%´xT`NOy[/@؟7e=k5=-+^Ii[)՚>4i4GkFzZ.O)iz+2XP`EZdmfÇ·*<):gW8Q+͓],tԎgQJii6{i2,,xgllծ:V9|QGm0ՠe`klG8orwB˗Ʈl}ʊ@˔15hs۟
Ʀuzu/O%zCtWG98HznM2
[.Tu@5#O:Uy^$שq<,Mv'o[䲤=kKsPng,'tgJXIzGVl%XF-=,5yZKd/)-X27]2tV/OZb1We_bTfG:n=x>8*Tۛc?M6Bț|s7~	9(WpW9{ZKP:7]}tvZAP=2JqF؃.ތzQ @2yKXv)h~SA%g3.-<x/t#$/ed'ޯ{n%8:ѿɁq85Vq\9IolȥG9y90pE;/facE	 u?ʹ%:DLͽ/__!W]>D׸[+G2TQ
n'Y?T/]P^3J^! M%c_	)Yjf{Q&\\oe輻y;7˽s.VbA7aloXK|ǳ
M?C̏آp_-߲hV;bhn"')Xe>g8="2
T1Jw	$9V2*9*ja6N;\~,._oo3KtP|5죘YɒFKӵ;ݧ|0KJ?\^I?V%%\]r\+G!PKj    PK  ]W            5   ch/qos/logback/core/testUtil/MockInitialContext.classRNA=]t)JUP@(%<H4|(6qNڡ۝~&&QƳF)lf3{w OG99
bq;xketdbFV 
8{M4>Z/s,><8,a%7 2AhX5oR	W39=(S2V<\+:n,NVY
^Thk{@۱D	<tp)a6pH
ȼSi:V'^K%YPFMԟP6=CdO_*2;_*Kp6aY&20$T/t(& )8W%qIr
>E`.K6CB{%rkMڴ̉'_9Aɛ,h+^&}<VlY;PK'7  R  PK  ]W            <   ch/qos/logback/core/testUtil/MockInitialContextFactory.classT[OA-l,"U.b(m"ZH4)]&e`[S!_0Q3ۥPCM;3g|Ι9)uD3Ѕn2-Jܖkr!j3ɫW.Yi{>7%R8g&a9+ԡ!@
ϰ!ƦeK?!a3,:kdWMתR/m^su`-/\Y[6O hK'5+˫S
 [|mEkҒNۖ=!m`SC7 2h?ǥ52|vWlT|f$VfT6=N(o+%X%,ɂG\w-_uh}QcX2a<#JDzlY0`V@0'uUۗl>ۊ}y3z{$|ϭp83ZUT/䰖˭NIEٵd'9^myꤵ)r90l'|zѫ6JD,*2t{S/0.SנV&LYs`4 KBF 0OcB]йC?}@/͝#yl
 S6MIb3$f!N0X"
"4Π1zl j\iqS<J0@T^%e<T6ĮET9"cӧM>B^PK    PK  ]W            .   ch/qos/logback/core/testUtil/NPEAppender.classMO17(
~ܣ 	<$Q@qR,O&e7ٙ鴯o v"	D3!ΰtk5]isv/j/`'u!bmH2
]uuJzZ[GT^	b@jڍfm!z.(Y.=^.)r4]9`(Pa)ZB8UQ']j1LP0GI,Աx\}h${\g_j\^X
}GJs/o(6a&3 Y<#+> )@al&\,f~Sr䣘<a
I|B|@,kFD3ʓg,[bPh+_}PK'L    PK  ]W            -   ch/qos/logback/core/testUtil/RandomUtil.classQn@=qΣ-BhX%W !E
j;&(z`2>MAj% 	!L%ל{׿|	COyb^0d!!Cu{Z*>
'
y>ɔc<9ř!h0tnd	HDhhh3/'+HlÆEo:U.su&}YP|;Se<?Zڼ,z\!eX	3+
}4IbCDj,
um`%PN\=@Mt&^H[o.<]Bpy"EYB_yrvEA\mwqe![+5ҸݗOo^p~΂bƟQM[tPO
h9O\3ݙ߈J/ 7W.u7>tPK]    PK  ]W            5   ch/qos/logback/core/testUtil/StringListAppender.classTkOP~.-""1pHEn:pP!Fu[3
smG+$4Q]al,e=y}{?Xū0|HB`(ȟtS.를R8jUUcS1U!U4k`?Tfie9mIV30DC$KB7zVjZxj2JD27{I-NB~	F7CPV+0;$5rf[	^]aaPf,ŰԢݍ}		\Pn喀iU?#>bE4s++&di]tB,P)@}JŪ46v3ɍ$CZS<,	'U׵yUeeRSƀu-Nu̕WE*(UHPZЩ1hj6^h$FT>X06^PȼC"Hʬ5W2P5nkCӘtB:`mvtUx2Cv@o,s>%ۘ`h'9X
Z?.gZ/zh3=|0NzlAR"1zӥ1IHw^Q|\ESqU(riJl<'^`ڇ^>$4Yl&pR]"[CjG
lFxQҮW!QMmO+!$f0psdc;R |+o+#Cg/PKD;!j.  J  PK  ]W            2   ch/qos/logback/core/testUtil/TeeOutputStream.classR[oAF(KP
-Z+jղPY5&hB	-iX'ttˠ_ibD}G,[
1ang9go? <v0C-=ݑtGG1dP۵eX;k$4Æ<rp,,8<æWC/PyPhxBmq5dimLĐ<a(Oh{&e0}Sk]WPpaiЮ9Xu((>]q4&n1䴚$m;.!7Q-Crt>)σ.9'>Ԡfz4ZM|>b
ShNnQϥ.7
jѧy-@kw|NHŸr֫3̟7NPܡH4hUYGw)<&c5 3ͼ/NAU_aDk'rfcŸ\6%<\RhLT&.G#fl&uݣA?$m+NS~Xcqf~l~"k&ߋQ PKյ    PK  ]W            8   ch/qos/logback/core/testUtil/TrivialStatusListener.classooPƟKBtAU͌/XE}#/.Um!W3fsQ?xnAK鹧^Nc<"#$C^|>!#z"ePʕ\4c><~R~At:22<o:nͭcr=l?x%
4|{w(%#ȗ5ɾ#9pXKjAoȺ	fpK*n긅e4zx:3*-(~לPlwb96yln.qj5=Cl]m;m	];M	#3hѨth6WpYi،J+f)ym?pZxLR-y( 跂5L 41(PLP:C(`woΑ>f(gȝ;3,"N6hD4*0з
`Uz%S	yѬ U2rF1WfU%PR'ÓI#>eX!%:ɉ٭A$B9@ۘ`SK1s&dX^'&b3PKRN    PK  ]W            3   ch/qos/logback/core/testUtil/XTeeOutputStream.classN@ƿI8.i4۲GA\T)49f:T}(."qxE(8xgok ;XP@х㣄2]t&Tz8"҉FQ8;5D#ByW#nuPZ%jڭ~|T?o(֩<%ЉtG
O	,L(ng_S먱4
drb;:
~(Aǜ :jMX0a2GhwZw#8u$,}e|,iCek̗޶l"fćWɶw~4Yogx	'.h9<a[9 
gyvŜ]ڂ^0/<sp{ߪs*#/eިj ܋;\9)«LPK    PK  ]W            .   ch/qos/logback/core/util/AggregationType.classTkO`=ݭ,2"w)(/lNlRJbHOh2>kUn1d;9s\?~~1	H{wWnS3oJ^̺[Sc! "#xR]_
W/e8h+hk/
BqmiTZXE)Z,.קex߹ljX]MF	.0:#qՂRLL	t[D
dΨ[غSW*[ᓶ"n
OPrn7[3E[͞8|rٓ1b9˱̪̅h KhbdLBaI:s}P?AhU-,7MtUJTUݳaqmyH.{MuoZqͪ;(5ά
vܙ
.d&48dsS~zcsba2
OϸyO<`<CA<D	i"%ӇNWեLJan6E&'1'O)qOyl2._0R>҈
B-DXEZIŚhjbIF;ѫ䓺>#d$8qɄIwоZ'@/mwC(cPK1  u  PK  ]W            +   ch/qos/logback/core/util/COWArrayList.classWsW>kV$]nڄ$v[(*G1u\8v!;m`-uVZg%	@-%iM[(C; 3 //0|z5|s?wF8NzVzKKPѨs,b8mh@NVL+WKJNE}mz)IqJ2tJL(nA=tFs'rβq9<6uxq	Q^hpeCq>꘽6U:3cz[}iZ3KK.a`CCP/i,%4DP!6}*͇
u?(CafyZY#s<A(&PfіL3;9+hvc2H:PhkfO^K&(gݹ I9w>scKNAwX[ǙL!}ِa,nWA D
T'Q.W8el/E9>Z>X-/3<?~@$w:F>)< 9,=jYmD-vI>-,sa:юL~sʄK@-~H1TTGqpO[hWH,q\)&q đ952W)K/W|/PU#a!^h	ߘE^uJ^[3`Xλi}C&ߴ˨ T+Uz{`xz|hd}
V8,!f0>BQY2&yÙ-l5;&ʲ5R
e(kuݭA݈g&̭ޅRBW-r x]j6f)#p>-	P)wh2y.rFgFt/W-l6WEC+vɊ:0e?2n_R8t,<<)(GUŷ	"QD"3yvu3l?*k)E.]8Tk{HW殈Ƀ8:
~#:h'6KԎn!8!佟Ŭކ5R;WI˾OUJ\!٫tڒBƤ=[Pi (=&$Kj;ƞzĞDgZ).mэ<띲\Ze#qgqoQS`%qF!|$<I}CI'<psԾ\`ODוiu<EFDq<nmiX!:,p[MV䦥`&ǂkɁ6)۲	~k+
hzNS7>Kۚ,mĿ,{O\Z6ޭ!mkv5"hȣG<Gϡ<<ik͓0y%O\ow%yY=pNmQqb2+2k0X
9biO4}K'<^DheS٭lKO<	6.w+	(=z	4=
4֤W\4&i<ρ4
/lMň<O"<
Z<sR5e&/ D_Dq#ӫHG3@iF͌q^G
#:!&EN+F1z}.ױ6(\?bK\ϱ
i<L̼{E߁=?p`ҁE9yH|^!{_7OyΥԦH5T7ЇYe\XOz9o1whڛHo7и޸n?Dz.ɲץ܌?a+jɭ3K+fz+Q[4
8F%,⺔mxov'" ?Bk6?ȧrml "h3>NFT&۷IJuЍ$k
]ϼ-9]ϷPK@\  P  PK  ]W            >   ch/qos/logback/core/util/CachingDateFormatter$CacheTuple.classQMO@}Hۃ@G/Bq)X--1Ggzl23vۙ7 زBBx/{ۻ&dOU!]u!ov0p
0vpރ녑t'ZnSxC΅a4Zh׀3PE;j$c-Fc]ʄgRm*oQ0	azu	fgRKf2ɨ#zazHC[K$2
2uBO-	UȨc%K5`'}P6{lȞʋc[Ȱ/_@)zcsR:϶<֑#;\eXD
%i泜`5k`osNM>PKoƁw  s  PK  ]W            3   ch/qos/logback/core/util/CachingDateFormatter.classVmSW=,E_ZR	RkEXRA@k(Vln`u7_:ԙN?3֞yEaryyy^<:4]	
_6]}ͲH:
[frV@ vpZ`$pzd孛0k:EigFWTnGTw"m2B酡OoZ/P31c!{@CY&VzH6P;9/wpLǻzu*-8㔁1,p%T_sK
z&ۤUDOARn(QME+^)[sPGQн 21`,{9CW[M\)U/	||,(0g]	酦E6g,H2Id%#61!iWAki>eT[:5h78UU:ˡU,	8qSǂE,	40#|{cq]'JVkyknQ6pk^'k.׌ۖdFwg_[69V%+3^>dImd*_UΔZ OƨCY~piM{13yO'e<\p<T)`ZS6؊8깶NYKFꗨng{phnR<
p.ExTR5ߦSש6I,G7t?fJ#}o}J`YG=$?.qoyc	^;G_݁;Wx/ EN3mE=U7XX"*AX6ONݩq鯣}S#UZw
MYyp{jG1\/q)#sM=m$6R8F#9JDL=gQ~hq01M21;џi5j%Q 0NK#lW@G_|sŚx@皥[
K)m(?6jDnMŔڡDbԑB.P{AF%T:!H&ƭ.>i$%*U
Y<$y
QEJ{!	0
qU8Q(ߣ?PKD  l
  PK  ]W            0   ch/qos/logback/core/util/CharSequenceState.classP]KA=ffA>cDBH>BoӠc. 	z;E/
8sϙ{3l/rCuƟh3)¥TrŐF%lT~O\<"O\2rD20A70
;.*28֦fIo7V7#1*}t>CBjXpĵ2"I\0U$(ƩZY:4DC,Dhdk
(7u
kP/Y,M-P'aQtFqW_v&pL	F0l~PKDP  	  PK  ]W            8   ch/qos/logback/core/util/CharSequenceToRegexMapper.classVۗE*΄
@DL&̀bL׌ۓI33
ig/x<?;::gsNW_wf|C A!aD֎jYC3ü2DtSw1bCAL<q7Cs.ˮkni>bü*wjf3Jw,THb6k#5V͖-gnds5.#
Njx1n3(Μ߱u=
XekUrIEe
+d兮*:2=(V2z31(,p17 \rmݬkqJ|.,-Z[#[קHUtDd2@W#;	g 
`N\EF\Ԃ^D>
+NDG8ث6!s\2B uL+)МwRS4ðJ; (U$ʤt"ve9rh#
N@NdXZFy2˚_wkOuO`-d&_Etjqf
*˰%䁤EWşqCv&tgXeGC*qūP%~uQ@YU9G(Rqh.j
wBÊuR͢6^fvŎ8dqϼ_>Tt)vl1PQ&	3/c
\5%,أ*	`QC9Bn.,&+6bJ`5cf⽹rk:Y?3wwM<L~L yG0̧?Qrϼ62\SNJv]<Ӛ''SSհ|.l^!M%˲\ǵ"wkVKzYP$Ր{d=ތ-U ;k.9GQk>z̊5m_`;1oMMA*rK,7MnW:Q>krU(WR<0Rt4O41z@+o=5s,s/z`Bb2b@NQOO5yn+
˷yC?wUgǛܺ'f*hȽr:&`~OVJ?BG&9US9D3ӸquSECpTOS[M2t6oιX3E30(Iq_@h%d3da
sIc͞f2nggr6u#>g.KaߢCAIG9ѿxf?2ƾ7JP#
:y{\46+3{x$HR/. 	HkBMME}Ls̟=\۰q	\%ȶձG櫣am㠏*5uAѢ__=ޞPʭezQhgJe)OCN	xQqi7*Jxm 5w}`_8N
-i}JByO3\5Sc0dW`p(9x@ddO!.ѲA7A{qxo~)<DDZ
4Dw)w7Z&IAe̡Yj2&t*8!tɌ=h^AQAZ^r|U]SaPK\  ^  PK  ]W            (   ch/qos/logback/core/util/CloseUtil.classMo@iq'm;-$
rUv*Es+?
1kƥ,ygvߙyfGo 60
EGBs>Mvmg_	!kGU&p/4~J_E-~BH@$(tDaQ*-Lё2]2]vL79I<?k
{ep'
[GDеyr*ɞ֭$^M<+]6{cB՝B}0f>XK&ĩ>%Ŝ¬L=.V%hpb6ޒ%~#S@;--?aJz9^, yTqhʴ*#k"j08ksE5Ve^%\f{yUR՜D##~1U9$6r
cxcY11+ֆ=a޳u<9ȹPK`    PK  ]W            .   ch/qos/logback/core/util/ContentTypeUtil.classR=oP=/qƱ$$%4Wp\#CK%D@EbvM򊱋/aE$V$~Sϱ_}5P,CQP;r;v{==EE3AC]G"AKS9<;)Aj:h0yx^9duDq$uE[92~%vM\{c{Q۩ñO9qF>ڐc
F81y^TĔ'	I3O_[ՓY֖3#AϜRbˍE^RO+#Kh6`(]EiOh@:VWΫŒ]
FqN}9M*|)M˞a@xb5TN2	Jl`/0p❥P{~)Qܪt
dQ^=Z\]S!*QD &aaRO3[MiF~fK2(j,WEQ=NQ>me
PKP    PK  ]W            *   ch/qos/logback/core/util/ContextUtil.classV[WWN(Q!V[
jc
^0f}]}sA]]m3	,/Cfg>񭂀hy-rUדe֓>2鸚:}GA
a_S3ds7L[N&J}CT ]sc>Gw3Zo=%9a@!?6mt5tG Uԉ8;єbGUq	h[eZH[li'	TpJivP4<gUs!3bW5_yݔ1}9v.+S<b*&$@oEw[
!m`RP-VUUzᲂ+*n[|Te5f0^峅\<^*]Fi|P}Ki۞a8B^Z.3|/H0n3QˮLU}M;S۲6l]VWglmCf,Vy8kiḾGqU̡ M&;p;EOw3|RK0s/=ewv`}v87LPX%mhUKmyrJm.٨tk-luv 9 ZODmjS~ܐY]&ɸ&QM@ƪV
ǰL.L#.
v~26JJu2I[Sj~As3ۋ~l	B5MJ>G3Y<¡/xqǗ:yCv|JN_?5ro\vYe<%Ԝiv9L;K+"|/q@+>-3`<mϯg?|,"2p6xx#^px/1lB<svp\;$9;PG\8ϰKARNȓs1	&qi>oS$%SO+|ݓ2Tc
ʞ%"
N/ULYe5K5">xu '^~K,eίn+
1*-*5 D/o'PSDOĈWk(:n;v٠ ,rIKd=Ҟnn!?6,6G
#^MoC	vM. FSgI}zga{CMZ9rCM͌Jmzgxe,Vo_PKT%    PK  ]W            5   ch/qos/logback/core/util/DatePatternToRegexUtil.classUNW]6!1@)$%KS0MKjC(:O3JܟSJDJUЏ?UF\ gZ{C
|*(XѾE+4LxCMB|TKm+Y'16*Fx
f@UЪ.υ8mUQ,bS瑐T\Ujqj3mZPЩs
+H*nGv#f-	49U27:>Oe'@ɀS쇷 "z ⛌9%fjO AwUYvP
Zyx
{*Űr#cMC7*Oad{>0sX07U~xFY+'0:xl5.Cr+vTzUWkYm,Ixe3}c̐N̞/4N6cH!MiWtId`r:<bQi鶱fXΜWl[|Ir)2f+kYÞײEٝ4۔U):Bg_
Ej˻36x]7^ˋ#='/Boȭꫜ2U@APuۋZ9 М1TlCqpa6Lb#SR~v)Hs97%>i|=4on!n#_2Cns/%$`mp]-0;͐yE^6mプD|uwЊ?a"QS~!

_sǸUv
Yh!snr;oii A
q\%I-D;C?>=x45
}?F};MGcԃM(|g&/?8H90?Bq\TiqW02yRneJ~UM7]~ei	?|w$
G}x`"ܝ?PK޻U=K    PK  ]W            4   ch/qos/logback/core/util/DefaultInvocationGate.classT]Se~&BX>( 4@[UIv(4	4!	:S3KX.l\8no{S/)ɱ=eB3==yyYl*$0SĞ:n'gZ^)+gpXmhWVUgO,ލjQ-]װY5re5t&.`ڦHT&
WDu}{({aT`U=6^F©۞wLŸVM;iXAc^{U1pf7GsWpȴ
Cg!kN3'Eմˮ#>$G}&/ir)9Uܖ;Y?ׯ=\<L%6S|^Y-B)^\+<	ǮymVP!ڠ\a\$Sbа[઄OT~u=lx[<C̺mիۆ[з-e&}cЫ^}hYOvVpاL}ܙ9]ɝ~{ye/1NHޥA<e,nr^$-%5)'|CJ:KIF3A(]ZBAy#g$h;q)h,c$#HSm{+1chcDcLh~$IN Z
bF4Iw5w|D}A(JYͳJZH#qfQ{#:zoq#s?`0J?CN	f*1#imlCyrD{#
j,O7Y"ڢG1Il(ʟ,ysrȒB,	}?6QטtY8?.}Jf~8(-!ӯMXnوs?z~Co#sGh=듷Kw_!@^!<'JUn7Q*uH7>nVI-x]ӑ;}zAɨ7PKҵ.  y  PK  ]W            ,   ch/qos/logback/core/util/DelayStrategy.class;o>sNv&FblTҒ}ԜĒJvFĲDļt}FμԊJFf
M/FҢT̜TF!C@J@h&+$8 PK8      PK  ]W            )   ch/qos/logback/core/util/DirectJson.classXytT%30,	( blHbH +! y$0@uAnZ]X(Sj.ԥ9]Or޼qRr3.ߝX}HCdj0w!3_Գ
4dV
x5(.
E{@$jĂҚ`g#a|a`*i􆃑Ҫ1jϊjfBs6Zf`&
qg*ȳ
d#&(Uu\0eO4Zb`ƙ'eyT6m4B|Nw(2#aEY,m,o
uZX%8_T'E6BV?6 K
,2^%6FXV']``.ږʍҺ+ŊĊIӫ
iOcmGC]c]l`eDUsme2{JMoJlLl1PuфYղ@x/{l@#)&b߰)kx&4kΖ!3`(m^fsA-b(m0c2˖|v4Lx{5Vy*_cfH8q2a3b7597
;AuYQk{%K
Rxaӷ67] ֮34<!
P^E؍=$j0`@L$rl}*)x],Q|1s#=r!|M}DHDm*5pLdlhQ3_6p ^M
8`22y-8]}9eIVܮ !~j.A,UXZWٰmݺ-u[vŤ:E*E"zs{KFXM]֞E5M2,ᥛ66noy?OV74&&F*Er78P5k
V'ę
ءv3ٙcAFO23E#CV8dP{yXT >RBa}bfTҩ-1m0K|j[B]`괠Rua;դU>|F"1+QXIA:fzyO"f>#*$v*3Q&È) z|OLG;-^&c}Οd*'z9jF*BͰгEѳţʹ% Y%n}XMeFYO2HVBNkDֺP2}%b1ei30wku=|/)?$?H$aGG(3I~$1JS3<y,>|_|_Ӥ9wd.2mJ=;Њf8:8?An-+!+}'$5<媻Q7)LcVǸLTb$*RI)^VEKST䝀KIzd񑜅z7>Q$G	]6MD	\$k(,_,q,3?ǹG1U&z+hao6P3ɂ> {,lK6g[*sl͹tӜbN[m
/^@ޏ,dM1h PYߦT,+O`yeۖVR-UR->ͬz $էpi[fi;,4Hӎm'
~~Z~T Hv0Cw0(va1q'|X,	qEϐ.q1|#!]ǝ2uiҦߢ0E}Z'U?*F6řB+~
?tqMBD]_LsuBI
âT]0iۉI8ƕ\K(⏢#pͻI{ٸ}KF{745S]`k\//$OfL_el,ɘ. ݔUhf{<cG^tryRޖxq#MCyqC0Vm,X/;뙵E8N1^3YʑNux*hg#mJ2=蚦I2!$u}S|o6I-Q|$+ TAac̹lz	VD-N"*qwZ@l5.><%XaUBx:yV9zqvt]2;$HB	XqW{˼cn,qV{r=q|^ϒU{&DѱWl.\~>J9Ew1WW
ZϹl)cn9H
owxnxI瘿0.s]v2'qxui:%,/e:Tn̤
?@-lNsΫ 5Nڑ{`j+5ϭ*kYS
	qhjqBRy햗UGW

3yQ2Wʅ1*2z#)|o.',cDW	a^'0o旄y00/)7yƆtճyNણ<kKvg6o$= ]̅Dzy ߘ 1 4yh_qy]rwYߣ'EDyJH*w"k~=>9/ேF{E;({
PW>&s|ߨn6$&ܔD_;|l;;?mH"_q
ԝKwiԿ3A҂woM|N(^ޥyEp{3tNn}䭔'QIrZczg3oq*ZSVB2Qò<.r	qs̓^_w|KebPKE    PK  ]W            '   ch/qos/logback/core/util/Duration.classWw
,Y^@đJ `# GeZE]ZܸMGҦJ_)}7Pӆ>/9~jzgvmɶPx4Νߝ>#jD73jəlMjjkG+<^)ǰ:Ft(DFg.vD349Px~PhVe`#~bw	DAO?d˃xv&My#}TnCŲcCSC4î'Mx_Rm[ƀao -v-C)EK5n@x<a=m&J#)Xf°#7 c[Q ǽxZ|bU`bfmF<5>z;~#CBTp:7! b>ЙdL88`Ct;"z5Q0(j3QRd
ϙF^`e΍]"
F<öϥX8=C]>9^P0&4t22-&nK/5KM)B+t$)'	
T!JԹ9=uW%tT=c6_0"@\ ZQȩi.Ҭj]𸯤4Q7҄:ug
27c1J< 6'
&]C=y <|g;|'/{՞мLyg4u5/1OW2=g+&&'WrhFǓq6c: ȇ/z(5\cS)-d<chϦR_G,KTB%GGӱ̹h|x8MtmD:;_zr4;%64%鞦F<9rsR3xVָ*[P iT}B4AV(n}PpfbŖ5fUkЃ;խ N{=I5#JHj|9P~P9J)g˭s{Iđ^:Ǉev._l87Mj[j%)Zo(ϲṘ2A;ԪAô<"~a"
&W
$pÂ"1p׏cɋ{aJ͘5K=ʆ՜mZso4tL;yW'MTF*TrfUt!g4SLap+*}2şvoQnaYT3Tk~<W9>O&|W
%ܰ:_mX^N|
$jm2l-GћkD
Ss-={Cm)m!0,CC&.ސ=/Q)bRd;\Xl#kA`)ruܠvqHN t	]j2Ԁҵrz#@sxSP7GI4EQ7By9J)pE'sb<Bh>~nzzE[key܈S~lfS6z,"]Duۺ'Sm4־8r߷
l}*}4M;S,g<['-dCig	eAŅ)mV'e4v,>s<坊(=j8.g
CP,_T?M"~L²(7d4nM$Ow~	9jltuu$S̍қ$"浛%\M̭zy	+6-4Q+MuUR9 ِǔ;wy?{e*S^gda?L_WM;k9%ߑ{lOvPKmk    PK  ]W            ;   ch/qos/logback/core/util/DynamicClassLoadingException.classQKNA}Adhaq`&,7CZisą&=[ch"ƅUիWG 5H!m!CSS~CTԞdPp	P`XtGZ]/=ȹPհϽ3SZ8Q(}y>7U|@J
FhІV15T`B=G"|}k>3dj D;c0]'5򿂙p$
Ctu?A9TPu-vGE2WX Xt!a
3%/!ߌ<EZH=]Bʓ2P I@JX$"T| PK)W  &  PK  ]W            &   ch/qos/logback/core/util/EnvUtil.classWS,5B)Nņnk/b#-iՂM.Mus^L:}L2}Jg?q~hZՃvw}?i|A:Bt0֌T(R7̬+N[%ć#hEvGv%UsFf*k;fjյ
e^zEөXvY{e`
ć2ukcrctb.݈
&
F"ə+Tg"֠SGbzueX.E.yy:O U)

:hC춶uPŤY:Vٵ5EuuW>v<-+*eQ!$4fm;S
gvPHCj#H⤎@kO
ՉŨ:9ےLuMzYI+grЕV	\يp^ǋh^q"	Ȋq$p&\tLbJMR{i/c'gj;fua
7\6\ryz0>-v:NjU8PGۖZqYY{
d*5jf"X«
:6A7^
9K;s{^-LΚZqq+ɒQ4e
{:ZKVižUyMGyvB5d]M
E0Gwb[A55/ xY`B82Vɜ[-.%cYhEñ'ye7aqĲ
smK|3T~({lEoE@K86ĹV0>tOKirً Y,k[~@Uêu3ZĪt]G	N6I<}.D55*T}җYdRwS%)qD`{v{۵{v2fmVk$Ů=\~%xn)fsqv悽dr+ߤT-N^yͧgxG(Weȡ/;

mpD*xWۄ6D[7Б;B>r@=OP 8A|iJSTbk|1nzCD4$]㮈<$yD,YJg|bu&fGCRR
*JH|M=Oui"qx8h0
z"zަ~Fxƿũ*.%5ʺE8(t4>5;x`4|Xh(ĩcV!Aq?[e/0o/14N(ei|9ջx9}B}/>BBpGo]rS&3]7ql'	Z:^e|/a.3KZHt@Ā	FCtznWI
eѶn"#
e4 
w}׉`W'G>ب@}1KOj*ٟe[2^bf˭ldhvܖ۔x+oq]KLSSį*^5D?aIC9HrM5J/:unc0KsSS*65#bMX#,Ź'kn)CCfwʇ\S{nԌnԐ=ePwP5^HhBP8"Cw{(}*DPKE;  G  PK  ]W            4   ch/qos/logback/core/util/ExecutorServiceUtil$1.classVksF=8	P
)
`;NMk#olY2:@_h+ҙb(v_w:ޕWi:_#6
Q{Jv~0$C56ud!ƐҴc
rL#;/y[pW;|_C.`4ه"7ɝ+Ǔѐ[i$;Ϡ˪+xyQ[.CaשC8pƗłj	Ùdj{o[r
A#8ʰ,xÒ>v!7p\Û:N$C5WnNӛy;mV
8➆4,{4&
q{^}8#VF
͢tM_q.I%X
<~d4DN*^qEVyCP1LZR4@éW7J0
WsNaT 
QckQ7%*5y%V#OE0X.AX7=h1zbl>2q\ƄILQm(xȐ\[
拖R@*܋iyEӘMpQS⦎fɫ'd U^6 mF'hu,6Cچ;ҕ'-	a\TwzׄmL(qL;-2$
Tt]S݇¨\Fus};;ac
*w~VBq}!i\3JuK折ק:yQY^QjҜ۝19sh;!ak)S6eTFTI۰!:'Z	ON;kq']^y14َGq<my}0B\?lxĘv^_q\+w2\xRۨb.ƹeM:m[N*U
߬Uρ2m}4l͓M8ށA]D`ߠݍ>g&3=>I2H|Dwz`GoߤuDoTkLUls|n \_Ui' CW=QyBΗH:D 8)ëtksH8Oxse(CFBLKth<PQ^}њJ_1s'2&f2$כ{[@̪_|q7erԁ4z0
eo4L<b`G#=Eή/4Bė>	"6}GPKPz  \
  PK  ]W            2   ch/qos/logback/core/util/ExecutorServiceUtil.classVkSW~A$X-(	Z"j-`! m.c^@LC?_[~N,s{yO 7^0Xږբ\Mn3~.m)jT56Yт\U[bRuYS.ۖn0݌zm]7H8-q]3-IL?D8.bCW:	VȼD4b*%*x1_B<L2D%\RHxa"яyI&frs!NE$R#'E'5۔53
80yDn?FqFYplg1e(R:I\6Q`8OP.v.g\7tM6y c0	'~6VsviMBevGJbu۪;ZVabZTaZ@TU0u/RmQX63RJ
[A2BTV˖T/(Jas$}W%nU׫wC΂ePLgfZg#M?RiDq[" 0܍憢m[6S
)N'Y`SoY	^;dJ*IjLi6qݣkG&p%$.#hb&|JKL\,%\-P{`YRmYo\6Q47םܑ&jY2{b̻%TZcfMn"1D)j$)!*"i)h(X%i9r'ZQ)~9?ҽ&|A-nxP2?3lNV:PmCpO;JieI0 1ip 71NX&`Ȁa=]3.h)J;.5GkK2bݏz<5%x9Ye(Lz3.
}[9W~;gaNszk1Kalm.*I`k=;qo~%I+qv@#'tY/]^$_
?;$ïqWtq[+狎>G;z{= #t;=})?NQBרi Ƀ'"`d[@p)¯h	Tls7ߏPs2Bp?PKbX  t
  PK  ]W            '   ch/qos/logback/core/util/FileSize.classVmw~ƖkGM,!(VH]dd/A1cyjWH+jRڴII)$i9{>;z}43{ܹoֿ #
]CzWO9^dZ)˫T÷Tvd~CFBXCĀ]yL9[N͕nH]U;1}0Bu o KU[e7}_(b_[&p*Qض1n֊fCuLS<
&13mcW"..׼FUP"?À_28xm疩4ܚn
~.a`IR mD1
	[S'!t˘g̺l+:NtmP!.J3M`?
ۺ#˦SM_f7-Ymύ1m xܐϵLu_O?
t| G'p(0pL13SK
GvyVnTS 4r1ta>=̈1C:NxrډdFNt\e\aX^ʒmWBvvr"҂@l@oۡ*Ot\V	,Ks|7##YV
}xVB \6gYq`1 V@vlR!V,Y2kv@n3'mZYEՁF̡cɵ5۲tt)N
v<	oZKNmifCOں{<#xq۝Ni9MrXNF^fɜʠFMufVguͨ/r.WBZU/kqw=?nq];k^}pD/
O%utZojߩd@35m![7@δ|v[Ýk16qtWY?VFu|۞$p*`_)<=hZ*2m?H#ﺲqz]5EeL&3~B<\%u-6|`vik*enௐwcoR9abl7Hꂺ&;9O|˴>
~OQU$[:SI㎺GRfSX|@>{7yON<g:@sp'B$O)2z8M`
8J`
%{s-#Hܾ<rr3[$0N;_e0)xpAH
qyv*`xkt)]k;Ϊ31B<0ϻw#j9nү"iF4~@#Lɾuٮ67Fh͕?bHna1VI-\g+P$O/p7I K̋2SyJW}S,1=:	T5ɦ~2NWݔǏ
+_0@Kp);|Ď-?G<L}o)~8s-5_Wj|W\>_qPKd    PK  ]W            '   ch/qos/logback/core/util/FileUtil.classW_~̲^0+[iH@"\LͰ;Ȳ"Moiڦik/m%j>.O89=?r
#Epp++!?bX1ch@GSz}qjjMI㺽S+X2
JH[	~K3Z%TÅd
,LrIPcjn8$xlk_eÉkv=)
~܃r+3-|۶p5*Hmjl0G(y{#Z֍8215>T/QmG%˨Rp/6FN6yL%A	[ca;XM
6cUDTnͲոm-PY@WK)%41-SZu*tH& vsyA+ ^FGi9x<0qݲ-?*؎jYaCjܧYFҌcֲ6	|>`'vI4v؈&
vc|,Kg,L,@O^
SV	B5areIdO$mz4	Cx.1'yG^!'NQV԰0/MI=KUЇ~]Qb9Z**j"s}y[3:&U "md`A؆)&cXX::ͩ|f"+הL-#xyL?8"Rˏ:epj]#iicsH	ϳҹr˱.$"/2`ȴ
^)R9Uhb&2蝻|Q!j
hӈt1c٢걤Igplj9&8nKC[=BوrYZ{rt@3!#,lDXj;Ct:{ccbDD'˺;,k_&	U9bsbAg.	AȄTamM,&1=Iw&ab,_P*qښ1he;
ͻ+3Lz)>Ud ^EIvy@_	2v:`@.1\\E^ze'?5b$ISԣ3ij"xPר5$0ew%QͲNk@`|]SɽAۤ
ӼdeNgui[Z&ð-Tm=lD-n]qm<k*-Uҳ>mO	 =V(-*	ӳJwDK*+;^?O2,_xǌ-E=ڼ_`:j<ӬMaI&
l%weT4X'g n+tY2.a]*袢ia^6}<Kj|)~8
&4!篙TS|ёKxhC7֢VY8o穫_#!*jR(MaTx5aljqu2HΘp{m3V2|o:eB*@81<U.pMx2ҦV2~6l2+II[(骄sjhYF[JںnzKkꮠHa4%[Sx<	x\) >}!r	yg;!h/x]zzay@&ܗ	)<*o4N!:	O(
yYm3U{@ui50q3wb[sl]|sN)TE0<ZLnnz^N7c/D+$a7.x	e_3IOKf{h^tяzҍ)^ESAZ_Y8O.c~z/;xeZ@ x|\mOVhE등MF%	22qQF5
 	|I4Y pKPGtCS@vIj',gA>޺ix]v/*B6/ʽ)LL~Yj:-P~lyҜI5<G&u0:34^wz:)_8{pA8W|6
AyWu}mr *31Q-UǖَD(g/Ac8NiwmIJ#xo1z1N?ӓc	z3ANѣDi\dWY:9${Ħ#J{W2(4K!Wrޮ:(-".kC^O2(=Ɉ9[#3t+phC)BdThBTFtM95~_r]CI<<w_3CPKjƎ	    PK  ]W            )   ch/qos/logback/core/util/FixedDelay.classRN@=86NBSІ@Ax,H,([86sXT*BbQ;CVܧ9#M4mP4a8(aa_r/퟊ e!#n3[힅L&0,'E<xDxY*Co_^54YGATT|uCqhԷQI1ZNgba4z(Mx*n`2s_$R֍x"UDVbQw<71Zu8K/Gun&X '5uz&"iw3S^"_uLy_=0KeX
V*4Hc@GtG4fy˭o15&uc{xv|%Fp0w\eR޸}:nLUqb[|PK-9j    PK  ]W            9   ch/qos/logback/core/util/IncompatibleClassException.classR2A=HDBYPfRMPEl}gtE3cGA"ܞx͝{{ι=r `"&K#	ݦuieYѹr=^$Hч4Ò}l+rTSV-kǵYkpD1@Z|S9,LY#үKtN]x>l2]:VU	DZ}~
rxazecavAW\gUdkdg/8kӂ5e%NcX?nLs^yܚ-~ϩ}xؖftoE3]|^Gc!ZP	H1
31LeyZL2FFmH=Jq 1#G$)31B@udMf#4G:f6f3PK9    PK  ]W            ,   ch/qos/logback/core/util/InterruptUtil.class}S[OA˭hAeQ%`L1)b۰er)I v)
/s.ww??XZtȚF9.w7P	YHG/x(zK_F/<z37Q0߉&!f,|(lU;xEWǀAC(2~pu>7VJх]fU4MF	 vKɑqdi*q(8NrĴf)˘1Q̵f.[	TF'ǮhF2{qavKOQPn#˩rt'=o>,^^o((ۺ)7*וG|4EzP
T/BmCJj;uf=踜Za0܋N߸QoJjeʹpw78]aDrŦL]ksI#1CП@In]tIY[^<a1vJl:9G<raXX$hx$%8=i׉
7}qI .8
֬f+?e}@'mCr-R(T]R1wJHLZiSRdY[P]NO\o Ad(PKN6s  a  PK  ]W            -   ch/qos/logback/core/util/InvocationGate.classUNN@I N|pcJڡ!N!tO4~G="zlKw? 渌nԇ^nR}
--+Z!᪓[)X;%{]uC $l{'t+%aaSk4av<{88	׈0{_Mq>f PK呺      PK  ]W            '   ch/qos/logback/core/util/JNDIUtil.classUmWE~lByi)P

b(6j$(j=daw'>?_A<dI$#0w3{s;w [
=z%-gg{iqtc{"^
4w^5tZ4mSg$e
Q	鴟y$5EQD+~xa,WuaZUU߲L 4pntjtUê.C떵.WkaWK%J(.cTXE{LkoE^5J^wMq^>\Ť!pM_rzaHؙ0bw

1-<{b$6EeuC7LS1<n2V ܜ7H -{E|+x!(xnXEɜKz.[+>/2q8f_VCB4NYx)=UWƷ{Զ`6(W޴ber:e.GVoE$8MDlhGCdgMNQ]Lޚ(ncjjw
XLSPd\]ՑrJ*}lP{S/	ҵk>MMVsd%Ɗ)[ ==p	
8^%Gj QD×m2̴8g4N
ׅEɳ;68r{2RCe;?;y,D[Vr~b96ܬ=4|Eja]l8c ]StN'ꡏYDG&x\Rk8`Fp׈lP%lZPq"Gc20p"0u"q%ԶL?7ty~  ;pW?~D
S$
@i"q4@]L`Fի {>5(mg'U+K
O?c5WT1&*=(SYrh[~__*~0'feҥ5++Qp>Axpk<PKĔ9  >	  PK  ]W            '   ch/qos/logback/core/util/Loader$1.classSkOA=CP ڢ$H֐tlnwpv/B4w
읝s;~	ABA/r~Xs*uJ),3Lw@oȦ)H6pM"OUmXp!aamt`c90B"c-wsE[*4Z#.xPhKLc¤0IR)u0QPkϕ^n+mȐf,:99^w?
T˕nldයB-qrNky,QMnҺ[*!nܬί{eo;.#y
?
&P?j+5B(ZXe7]rlPTb(2_Jԏ*1^Q5C+;PtED'ZpnM^,[/VxOGKqd<uSa8{/ؔ(#KvBwOR	
'Sd[~+7r$+oyY7A-5Y)P2dUJU@PKCb  e  PK  ]W            '   ch/qos/logback/core/util/Loader$2.classRjQ&M6kzi^ld.-Pŵ
?6{p/2(h }f1va̙7̙ӳ_<V%
T,TQ#lx#磎@w<I'MTZe&4"h{8>&,Gb,@81QGÀi	:I/!vU=B훘ü,gsLruBt	Knd@(

"汱H%@rCRB>	*釁މAEW{"HeXIFnWoxP$i$LF!.7{P<i*ڜ8g߳tBLFzha.,<BsNc"~ 䅎y;a(-cA	j-m,eio ?a|[	+|8;|Zn.\c2o6,n/S8	NkESW\M&Q-HT}l64-PK    PK  ]W            %   ch/qos/logback/core/util/Loader.classX	Wi@0;12u6#;uظn1L"	dB19BCF#۸4iYitO;-ƦsNi{77}͠
}7s}~ם<~TZCZ	s8oF&?g&cL9.P3:vԇF6hMNl5%p\ICRth@٬
4<ef0}Eb$=H&lچ2Bvcz@ӒX96͌Uq{t܏M3Ԓܤ1NbUL؇.
б
43L0{YC:CEtH-hŗl165L,7OEŏ~t!뢒M,TeiC2G*`aYYH~|hxT-,3
!mVg뽴FT9㣊26+㰰E%܏8ʣ}jc>84e^
ܹEY0& I+Eń"ø@IvF&c9y3x\npն\Nn1IV};XL!N͍C\xbTd<
Y
ރogdٶ3?OjOcn+YO9BVҶiskNOͤI*lW&OT~אб TJ8:Xb1>V㋲rWmrs:)O%3L^|8,-HRi5M	`ESmQl?P:.踈U2qM(~2+2?i[8\
Dgu|g\u²ҦVVlt}0ŭsEYl4%ylHSk@v+$V12'\r	w`Le.=/ecUnf"gE'FXɩ	n\t([Nehny޴KVHOvJ{{T%H`cFaoo4V鬱,()Q_MLi'v)MVz:K+tKl?_o)+4>!ck9fgW윻t'VcfzvJ
@-vpxW~+,Q+Y(J
XʏU^.Yeχ
Vvp`[7w%ͻ!߮ep!cޣ)I}ߢf։y9㙌i+Wf~@
_sxoU
sV$))Nu8
 n(oN	;Mo^X/HohzV,4r/M5aȒ/eW	GiP&fn)׻{nUva;{6U8޿r!8!i,0* 飋~pu}^!Fj~uηQ ?箪F
4"'*??ޡ%Lke%4)YdHI<Hƥ?U=WjS9<L}V-keΖȵ[/o#N5YcP.E˯P$~1H?<QW؟a棢*~k+UdKt,yذљS]:0rN@K/x&
l8DGg&NZ33/g70|_%$kEMK$o78UT0Siqrjzj%EK4^lJH]w
XnaF9gڨw&g]Oy0=y*T3rk+%cE]gn;귐-؀x%7qMOj'm]t_~{A߃lGi"7|
ieSH^ņr`ZԳ;PKNS    PK  ]W            +   ch/qos/logback/core/util/LocationUtil.classSkO@=#+]jYa [E_Hw5,`Ptnk;5?WFhO2xt{>9w돏aV.4)Hh؍f3p-j*?`hx׿ +mrm^%2tmI	{4r^Q@Z:_eJ"pꄬ]3ղe?1l?F$07.D;C׃I^^݋h@f>O؇rʊ%箊C8b8dVG\ЏxQk?ui<.9s"c-ꖨKKj(@wQN4^Uȍ>
Z¨nPyPٜQG~+h\ϒΙASpANCŰt_n7ˋW*bCroOߡ2f}ĢFdRr6YB;{Mh̃yrYΎh7	Qshg:q n6'LN3
9T^T`7Z[ 
1oeЋS{q	F6^&o2cЗw>Bks<j \u`]EɬM BOP-kسL=ݶ?Sz{=1Xř`z v&bods냍T܈9E[xG}byӚAȤp($t:<#@qcȒ$<a_"2!FJ=Ts
r8Tȑy:#`;zk%a*nQ
Ŝ	PKY":  I  PK  ]W            1   ch/qos/logback/core/util/NetworkAddressUtil.classV]WG~&n+_"H	bHjm	ȗpZ>.]]D+xz=ʋGxjlbhOϼ3xC
*
GpT a/]rVuc=m86c#?GG,G+1DѨ"4T0[UJMq׳kz2E1DsTMhVѢmz6,0f9K3Ǩz]It4RZZF)je{vm407}˱%h8-#vVP^9ڣጴḯn;cOY
#jƐY
XJ*'
%1㼊$Nֵh.<,{Fߖ΃."#0_M:.iXB5ԛdS
Ch
ɟZ2{ؕg%5|.k
w-ЉhZ^q6e+UM0Z;{$Y
RF_^?⺆I䶩fUA/:ƺ3T
)r-jŜ@nBw/"A_D1!^(L
$ojd:ےZ_
?bc:w;E/-Lds3K2Y}Wm!aT,U$L8NdomJ+ku(T޸PxPE1W
( 7{V}&7C챪zʉCKgtwfgBOHBFw?=.[3K;ӇN W^ٚtjS^>QGCYt\Ü$
o6E}l
7Ox)J<|LAnslBf(hA#_o([
2V1W{8;@R^TA6F RéjdPWG!fUښw_S]ykw>ñ8W|)8/w.ɟqN1#%=6jΥBMw*4ǈݧ|W~gH% d:!Rpۑ (8Adqב4.	g[}Dhݏ5I9X%uU]),%8ȡt'侗w/$Oi	T)iP`C2LCf"\p1yP˙~}LRd
n "#<3ask<c1^Ka`]f5l
T<ܫh432
ʽ ?8[PK  
  PK  ]W            +   ch/qos/logback/core/util/OptionHelper.classYi`T,yK !E&	AE $->&20f qkZ[m...1V[k[Rw{L&1Tw},W`n
^	Li1ZFlG˚m;Ͱ%P4Xg	m>
~%f{ZvS-mFxWK84[V$7ͤ@Z5R){a!
Zڴď2L0QG9*NꚄ1	e;KYF̊O)2zMl!+XozĂeH^ɨUXZ#Ɂ%~ǒ+@Zt46Nhc
~Lt
3tE9P+tGӌ$I,
u3"TdG5W%
#۬aQC {%|'<0KdסIG3@ӹt؊
[FnZIۣ%kIXS4c!	SZ$f
x
3jo4'+Ipi23z#ጟw:`^cIazbF<]X:,gIG,
eXcV2Rm)k
(tT"Ҳ6gm2"1P-xvVH\T&tŻq{Km'{e.U+m<PDbyȘa-KXu\,wc?ұ^+?6`$u9mUfiYf8X}YhHi\04lF7kR9Hd2B&Ғl
=:")PV8"h|t֩ 
#AzTRf##=1\P0UR'^-)q	.R#}0jh{Y<A2}+JRT\4S2e.y5ۓxR~wZ?m9Y"9pf?Ҹ^ulTt܀|!}4>,?"&q[Ro/b|\	M:nmt;mDS1H\;)kJZǝri$%5ބL4,>ǈV
rrP=+ikvn
_~zH47T7ѴYC#?uZrJ۫mAlhhPx}+o``(n
ŵ`W{[1%+Y;%+ݻLUR!6CUYX=܂1M׏+͉B0/<qSir:a[1-ыFl(m" ?[΢?S	qH'7L
!̷lss!#sqƇqxCEOv9uUql2Mig7	F䂍-1i4klHv,4ND'`j(I#ʿ)J>e^XʇF,F~$H[V焣#ߕff;^J=.MY$n7~ENcom 2ǧS:udY,d*Fj3ua׌YEKfikѭ_GM#&/񑂛%u+$ř_6$f2Z$"/m34foɤї ~qJPasUDVye9_neSCMNwEUwtZڬAjeb@ݰ#6خ-	E/*$MTsSLf97e:t_YlA9F;jر=vCQޙ_+Q҈FC z0s.3jf鸠jbjΏ6D[0ViE6w	_̿W_ 9?5?Ѽf{QĿG> R"H-NxC9ڼOhhlDi?nïX˝uJO	j
<txߤt|rcRqP\b<p>E,mP@
4xk<bs
@@ 9j]|G(BU )-8GV_I6M
b-@),|2TmZܪx#(9)A1m
`j
v?ʎ~'X#C p
&wsE5E6k<![==śGp 5y$"[Sη45Ob	,l%cN	L	`)LX.M-++
hW]3wq#19/	S#ra0l9PXxFcN<Xx6q<^8fh|
3ՐX4M##</p$cg	hdݟ=UNyy9NtxRQNn[%-_e"+5*JrWP]cL8]	Mix0]rTy]QOuǴ{ė0.T\vhUhYUu@8疣).om>􅯘Vb:,NA"
L	M3?*2@|٬Ҩ's^!OC<k6N
wd\ؓŎ=JmemA+o\駆C'`c.ꐵuQ Φ%pfs[ i`/u;}^{PS%gx-
7Dko[_n%7]?K:?9qnjm<r^kGfh>wIPGeRkqӃr((UI00
P#	ڥ`1pkH!Y,5bnXsW$27Hg7͹xC*ΜUFO`jOYIY<ELcaKYEd@^4eB$Utq:fB*V5N^Ζ@Ί5
9Xq3tv0pI ø(bJRPE3iV.f?Q-\7dř'$ЕK
SsK(G( <Ҁ:NOw20J<qX]>CFGo[JŁKy*,ťHhb\>+2jpNEt<.%
KL$[F<o!1
5PK٠M    PK  ]W            6   ch/qos/logback/core/util/PropertySetterException.classNA֖"APJ4Qq
^xhiIe̬3pO|
H| _xf(sN7 /QC :ʨnD4_~S:%TvU:xI;nxA|8}"C3Z4S$<GmD}}#md9o>Ɲvs\YyJDғr`@	mZ'RI&?/?Jm}$	s7ٰ/͡߀{8Kn,aC{?/@][dG4&>!JkED9L$_)ڔO
 b|⬀9?Eqs%"g|*kXhiD<Za3$Wpݵdsk\,6.Q.{MsYs/-pw7PK<?]    PK  ]W            3   ch/qos/logback/core/util/SimpleInvocationGate.classSNQ=nY] TZ*Ж" HДD^v.nD' _xA&|:w[11٤w3s3gN, @|"~t3Lj[[fM(J5Ll4vL}ڵ55ljez"/UKAr-KNKTGF Cwưwa,qdU^}<!ZڶD*b=ٖrrյd=SM	!\pCBrU2/9Qb#ܔq0,xŨM͹ !{"FeqGj0SaFS'>&NH"ЫٍѳVKBr{զd(f諵F%
3;.]'_4,jtL,RYU;er
e!Zk$7+]\E$ 6[7#OҊ jRuuî'vUG."51
#ih
!@ii<e0=O`'i߅9{]A8NnQY!u0céSz8SGEڠ%V)cC;|\xǝTl&:{R_0|;F9ƈXyqX܇(|;(1Z3ly[^51q18gSфыhCn Hg~z-k>⽗WL~;̺=㴮x~PKOZB  J  PK  ]W            9   ch/qos/logback/core/util/StatusListenerConfigHelper.classV[SF`F%- 	N4bcRZhzHr~D;5}!tҗ>71Dfη9{_ &aH06c
v(7Tm;,f`ڎj:vJ!yK}[\sjtSw3T
WkbF	)IvɭC	OFFMhf#Prt#.:z|č"ZβUgah8y&XߞhchahX$|$ct2ܽc
fNWu᤿_8q.$h7IYˤЃ^	}2n47)B1Tm^OY.a(()6E?;&20tjW~vIOLň[ePD%l"=Qxޯ**6À~Yx=bq!;Ct«͹Ě+.2j^wd
yzLaZ}_U7զdf?KxxA%/Ys	r$|+qd|E\tχr禟q-ӣbh={qlDZƲ8SSi+qqD3P=SnV
fdASU؛v6ua;
R0r	{S<%8_zr
W!A-KEhqPkT.i=HԴ\֟sc 0ۓ>>g3tSV1)Z97>h\P2f3\+/2$Ldi|^^Q
v0zSQzF}0UG +Ѕ'e-ƽ*YoUP%j#Է*Jqd/G~kXw6;<%iD쎠H+$^]/(K)]}\	Y{hk1
uTd $!&	(F\:}eh XUGh0
7<_=j0=4D 9ĝ D?D<=Eb2Y$1pBb#Rۨ;O=*T*6\
'+']e
h#H{$OT| `UjdKyLLCxP-o[ďgQ":<}<>/DaD7@)^q"T*	(,GH^crzPKs  
  PK  ]W            ,   ch/qos/logback/core/util/StatusPrinter.classXx/ل "dyl	$!fH63$Z[ghh[XCVVҾޙl7s3{ϹϹ{i a:B(3SUcp
V&J PVV0
5]`Ir;S:սn2Unof\7*IZ}oq-:`ܴފsuc;VñV=/k̷b*چ6
,S)H9]=ە0nҶ!PF
h°,ۍvQ7*4̔Ee^	j&hTstnzqi2,Kƥ</V=jv\TG4j6zLt1Y]c1v0ܭI#z\sI>Nc?4i('R4T
,>)-I*TZ z̖g8dWq>3%,k(pq$//Uw8W ,͏!o.$0jUoԳ\%-j8	ʍdtcu:|.<1Jq;{vd$#CrQT~р%'Sܱkv&{nt۩Ne
y<ѤfvH6$ޱ{F">xm?ոPfk{'[4؊&$`E-
kxKg*4
MZ\@UgϣwW7k50VO0@ƫ[G;z(^,B#wBKlTt2̹}ё2[p9HVxl$Ǣ'q>5)7z3fgcwM}B.q9ffdi;N&\㭸,m8u,"jN3Tڔqӌj^Z26ٕT6ma5pҥQu܄HMSՂqTաDq+n:nrc}K[m\׺q39D$^wHNFVܤ[O'0-a$ipcNu^(sg%~:~OZm"܇5<A|qxC>Ⲇ<](
~Gr"GZG~Hv'q6/#/$-dj>48(R#u;l
nPSTϤ`v'LiLZfsoOz"vHNR\cNQck_tGeyom^z9 1tܙ{m\$ p˗HBw-3\56+0;ީs輙H:ft_r31^4;n35kPFΙr{N|eHz0
[]t̊[GqGVwׅMDfegzVQ<keVcnOP;Y~T
%dqjwNʓV'o<gxs^HWIjڄKvIH7n{ukC 6쨷hǓ|$9Q
rpuUhtJ^
ׅ	,\w~\zD)Y'z7Vg,j흽|'g'.򾋸J0r_[SF&cf4}d\P5W`މR@dgokx(,;-ߓـyG<b!(OY>Խ	x]O3ІQ>p2];8FV+Ĥ\ }S}CcaLkL?gb0[9ƿ	&$`~z$\U,	WbPp`9IÐՠ$Uu8wSx#s"j%<O/(zG1OC|6Wr6=|d+)"TYH*U&DH&e\H&-J.["$J嘤/r|Sn:/c\M>z\FҙyL!xmidJ%jY6Q&*`Gty.>bQ#z6_`uA5^p&XUD#V
`)Sf
3p5Naɪȣ\|_
ExI%>Ɗ"ODy-׸Ga[\M
Ȯ"VC
b|@!4UB@fqp`J4"f {U"
*D0
F&f[P[/@^wb
H10zEmTo?^;Φ檧CšX_U: @>G 0}c 7lݏX9Տw?cr$x'](cm?4݋u<o@VsX^*4Y>~A+~	BǸmtW4q%1JI*F@P.Iz֤4Gwrԏ\>9`$H+
xi,Gbh9?'G:jB1F^xt<B<J]<x	4 kc?.5h;b.^pq?BY);k:~Qt
r1~_(5~/^<FRJː<_R&e
+.8*c*\5xk'q$.Fԧ4*_+U&q'^Wp%PK
    PK  ]W            3   ch/qos/logback/core/util/StringCollectionUtil.classV]SF=@n|5il$6!ub/!T[HFi~@B~A:3>?ә|ܕlcy0#={9w% A	ANl+{\QCh^7tg?/D00GD &yٲ}mZw)Vt`9NHxSjY5mb6{Y5-CK7JiR!4QaE7iApNGA$ǘSg1pݾSu]68f*]T#ޑ.0lůD9!y
VMߓptGǴb4A\F#.!!R>
ˊ:;)a
Wh+TR=u#,Ǉ>wP^SQ衚;UBM2,&w,L
J$q4J~#]V[UaziQm7i	&5NgQɘOnnK+a+}misOk IXm),6HrMͺl
3T
F0u:mrLaGEtJMQW=s	3C"Vv_m֐?ʱH,^2f%|W+%ɘWJG}p+ԣcy*ՆoPӿGR#yf-FXԳ}A09=tg"x}Cא</*y q?ѻ<i81q ~c%1]1,¸D@WL
o#F4QcDlrSu/Wi0;d 8`E$CPGQsϐzi2XW>ysb[$PU*Ƒ,RtaK%7#Ү}k|N9|MD-v'PI
!9C[bE(g(2嗸!sx/M OLO;?sL̴\hi&f;LLPQ чȄ80MH"EʔeX[ZM̋g
g̳
uww?y(C1*PKB)W  	  PK  ]W            )   ch/qos/logback/core/util/SystemInfo.classQKK@ڧϋP"JB$]ӭin+=)(q*T=|;}3;_ NGI)id3s	}3ruNH6,BԚ/dy& yIL@=Z̚*X"bIBg;(6B#jN8m+<Hs2P&й!u!Pyn#{
4R=G(^)5=6!4KwTzGC+Jz%Ih[ё=i>~Um31XFM[s:6a%Q5
g}5mwboPK81FF    PK  ]W            '   ch/qos/logback/core/util/TimeUtil.classRA@ n kD` *r0f4xٹvp&XZP\!}}?,`5:ЀFFNd0?VSqU5@}<BIh$iMZ-K+@$F&w#-j[ %=jj^[q"{%hg2_fˈ8j|JÄ@7bLs/TĎ*GF)U0e$Eթki=焇[7mj]>W~\ؓvH+	f"ЧʦcE3w3wTNK7Io5@t:x[2ov-Mp#b@huC:z~Qj_z'J
چ3acB`3Lu魧}Cp+/^Ag2V_A$n
T0`zy@/|lMܢ
`1G_3xeWw|x<P00\`UBC>sW"8&K2 &'I$M$t͜G3,x4]&[ן62S)cԛ"KU\׼ǵq}vҵ]
Rx
Et}pH|qIبL{kGɥ\
nR1	H'JgNG
֪PKF  y  PK  ]W            2   META-INF/maven/ch.qos.logback/logback-core/pom.xmlXoF?)Rz]Z	% Et*Rz%kkQ
b>,[h9g
B*|N;q|hGŔӘqtY@萈8BNos͜|ֹX)[.tvrBBE_AI`X)?#Zs=LkG
OnEDB{T$=:sb@c-1#%3;mʅx-i 2Xc
	[f6}$SL7'2R57$x̀uv4GdQ]V`I"U8	l5hN,{\6C X72[W:A~I3'!j8ȣ"Xxv\s^,䮏9LwgGXÓ&%I!uBOEꀿ
!N@?j#ihw쑡Y!4Q]"vn1aU "G=2,>B-JM!a|=#"`45i^S0KSzTDI3ZPp¦$fdhx:`!xm@	М4lw19YgNHfѶ]e_j^kw}w{w-;lG ϬѭBsDa{IFų+햏[y1qrTބp_UDrn	h<7؋8IBz)Y01cI(
5})*/s& R;|٭Ojvk0>3ZQʨ5nI+
^	uR߯pMnv2U$khѓ!pD[3)+x έՀo=<YôO⪹jѳܚ`D6WЍú1nxO+.9E$b+IǪw=rDI|"Ӌ;썻mvooqq/0yv K<XMR26=$φ|S*^o#;2SAƶ>jZBۈKTUW@+	p:tD_


',lx,v'dBC*v^Ͷk&n=\n\7/ޜ>KN/?_>眿(&9///%"޼Z:<bOp׈5GS34KlOQUG|?PKV    PK  ]W            9   META-INF/maven/ch.qos.logback/logback-core/pom.propertiesK,*LKL.LOOJLM/JJ//- 
&gAR3l
LM PK
u9   >   PK  ]W               META-INF/INDEX.LISTN0}
^
v!pwSox[p2Jmq^ .B#;
w澪<[7yX>=֋χؾ"n*ej~U^#xz]L?s%WKFOԣG3}zl(B6o(,5Pnq	t΢ v0CpP@Jiz[9^Dn:xV
,2+?kf["12<aK$z&& rf$۔#'e%7wa]b}U%VϹI@[֋%3䖤aXz`oPKM    PK  ]W               module-info.classiS@TD3'""j7*"'%KY3YJGYv(jglS;{ `ڱC;1F/Fit4,sQz15v/\ǦZR6.b_R6$г_iK2x$J95F IHhĤB$uy8$VU+?QQ,{<طe:[uᘀ4Yկ4"%H'P"f"AĀ&dLI8̮Дu&qᰢάM$8_8k14LRNs<2q{&-G"nW\R˨.<.qYD:]ڔ@ۥGPk$;*Ao:jI)mGؼJwN]	.@OƦ<kjJ 2(mc)¼ár['[8".JBT+l!f~
)ZrLJUYCof>FB66Y#*Tۏs?vtUޠUsm%uVUm[Njq圥WUPoFExد:6Jꗬ[N;u?hՁNtnb1pe8db1#QcN0'Wk[],s\dbfeg.3?10Ky9ʲF(Q'IR=MjoR7Kb5t"E~K)RJqJ PKXJ  L  PK
 
    ]W            	                META-INF/  PK   ]W
  &               +   META-INF/MANIFEST.MFPK
 
    ]W                         z  ch/PK
 
    ]W                           ch/qos/PK
 
    ]W                           ch/qos/logback/PK
 
    ]W                           ch/qos/logback/core/PK
 
    ]W                           ch/qos/logback/core/boolex/PK
 
    ]W                         X  ch/qos/logback/core/encoder/PK
 
    ]W                           ch/qos/logback/core/filter/PK
 
    ]W                           ch/qos/logback/core/helpers/PK
 
    ]W                         	  ch/qos/logback/core/hook/PK
 
    ]W                         <	  ch/qos/logback/core/html/PK
 
    ]W                         s	  ch/qos/logback/core/joran/PK
 
    ]W            !             	  ch/qos/logback/core/joran/action/PK
 
    ]W            &             	  ch/qos/logback/core/joran/conditional/PK
 
    ]W                          .
  ch/qos/logback/core/joran/event/PK
 
    ]W            %             l
  ch/qos/logback/core/joran/event/stax/PK
 
    ]W                         
  ch/qos/logback/core/joran/node/PK
 
    ]W            !             
  ch/qos/logback/core/joran/sanity/PK
 
    ]W                         +  ch/qos/logback/core/joran/spi/PK
 
    ]W                         g  ch/qos/logback/core/joran/util/PK
 
    ]W            %               ch/qos/logback/core/joran/util/beans/PK
 
    ]W                           ch/qos/logback/core/layout/PK
 
    ]W                            ch/qos/logback/core/model/PK
 
    ]W            &             X  ch/qos/logback/core/model/conditional/PK
 
    ]W            $               ch/qos/logback/core/model/processor/PK
 
    ]W            0               ch/qos/logback/core/model/processor/conditional/PK
 
    ]W                         ,
  ch/qos/logback/core/model/util/PK
 
    ]W                         i
  ch/qos/logback/core/net/PK
 
    ]W                         
  ch/qos/logback/core/net/server/PK
 
    ]W                         
  ch/qos/logback/core/net/ssl/PK
 
    ]W                           ch/qos/logback/core/pattern/PK
 
    ]W            "             P  ch/qos/logback/core/pattern/color/PK
 
    ]W            #               ch/qos/logback/core/pattern/parser/PK
 
    ]W            !               ch/qos/logback/core/pattern/util/PK
 
    ]W                           ch/qos/logback/core/property/PK
 
    ]W                         K  ch/qos/logback/core/read/PK
 
    ]W                           ch/qos/logback/core/recovery/PK
 
    ]W                           ch/qos/logback/core/rolling/PK
 
    ]W            #               ch/qos/logback/core/rolling/helper/PK
 
    ]W                         8  ch/qos/logback/core/sift/PK
 
    ]W                         o  ch/qos/logback/core/spi/PK
 
    ]W                           ch/qos/logback/core/status/PK
 
    ]W                           ch/qos/logback/core/subst/PK
 
    ]W                           ch/qos/logback/core/testUtil/PK
 
    ]W                         Q  ch/qos/logback/core/util/PK
 
    ]W                           META-INF/maven/PK
 
    ]W                           META-INF/maven/ch.qos.logback/PK
 
    ]W            +               META-INF/maven/ch.qos.logback/logback-core/PK   ]Wε>    "             :  ch/qos/logback/core/Appender.classPK   ]W޹RY    &               ch/qos/logback/core/AppenderBase.classPK   ]Wj    2               ch/qos/logback/core/AsyncAppenderBase$Worker.classPK   ]WԌyf
    +             0   ch/qos/logback/core/AsyncAppenderBase.classPK   ]WQ?h    ,             -  ch/qos/logback/core/BasicStatusManager.classPK   ]W~h^  \  )             6  ch/qos/logback/core/ConsoleAppender.classPK   ]WL"1    !             mB  ch/qos/logback/core/Context.classPK   ]W^H  @(  %             ^E  ch/qos/logback/core/ContextBase.classPK   ]WU`T	    '             U  ch/qos/logback/core/CoreConstants.classPK   ]Ww  "  &             _  ch/qos/logback/core/FileAppender.classPK   ]W3#  L                p  ch/qos/logback/core/Layout.classPK   ]WbO  H	  $             Zr  ch/qos/logback/core/LayoutBase.classPK   ]Wn~  t  *             u  ch/qos/logback/core/LifeCycleManager.classPK   ]WSO!)s  n  *             |x  ch/qos/logback/core/LogbackException.classPK   ]W[  R  .             Gz  ch/qos/logback/core/OutputStreamAppender.classPK   ]W⅜    -             7  ch/qos/logback/core/PropertyDefinerBase.classPK   ]WF     4             ,  ch/qos/logback/core/UnsynchronizedAppenderBase.classPK   ]W    4             ,  ch/qos/logback/core/boolex/EvaluationException.classPK   ]W%" J=  e  /               ch/qos/logback/core/boolex/EventEvaluator.classPK   ]W!klX  U  3               ch/qos/logback/core/boolex/EventEvaluatorBase.classPK   ]WcĴ    9             e  ch/qos/logback/core/boolex/JaninoEventEvaluatorBase.classPK   ]W:J  ~  (               ch/qos/logback/core/boolex/Matcher.classPK   ]W
pӄ    /             v  ch/qos/logback/core/encoder/ByteArrayUtil.classPK   ]WAzm    -             W  ch/qos/logback/core/encoder/EchoEncoder.classPK   ]WvX     )             ɬ  ch/qos/logback/core/encoder/Encoder.classPK   ]Wl    -               ch/qos/logback/core/encoder/EncoderBase.classPK   ]WC1  u  0               ch/qos/logback/core/encoder/JsonEscapeUtil.classPK   ]Wz
    7               ch/qos/logback/core/encoder/LayoutWrappingEncoder.classPK   ]Wԉ&_  s  8               ch/qos/logback/core/encoder/NonClosableInputStream.classPK   ]Ws    6               ch/qos/logback/core/filter/AbstractMatcherFilter.classPK   ]WV,j  
  0               ch/qos/logback/core/filter/EvaluatorFilter.classPK   ]Wm[*    '               ch/qos/logback/core/filter/Filter.classPK   ]Wa%&    .             [  ch/qos/logback/core/helpers/CyclicBuffer.classPK   ]We`    -               ch/qos/logback/core/helpers/NOPAppender.classPK   ]Wg	  K  8               ch/qos/logback/core/helpers/ThrowableToStringArray.classPK   ]W{  
  +               ch/qos/logback/core/helpers/Transform.classPK   ]W    2               ch/qos/logback/core/hook/DefaultShutdownHook.classPK   ]W˫A      +               ch/qos/logback/core/hook/ShutdownHook.classPK   ]WZ/
  r  /               ch/qos/logback/core/hook/ShutdownHookBase.classPK   ]W1^      )               ch/qos/logback/core/html/CssBuilder.classPK   ]WQojy    -               ch/qos/logback/core/html/HTMLLayoutBase.classPK   ]W~?h   9  1               ch/qos/logback/core/html/IThrowableRenderer.classPK   ]W-Z    3               ch/qos/logback/core/html/NOPThrowableRenderer.classPK   ]Wb(  '  6               ch/qos/logback/core/joran/GenericXMLConfigurator.classPK   ]Wz6  %  5             s ch/qos/logback/core/joran/JoranConfiguratorBase.classPK   ]Wc     .              ch/qos/logback/core/joran/JoranConstants.classPK   ]W%Jj    B              ch/qos/logback/core/joran/ModelClassToModelHandlerLinkerBase.classPK   ]Wc~  	  1             u ch/qos/logback/core/joran/ParamModelHandler.classPK   ]WXΆ%  Z  -               ch/qos/logback/core/joran/action/Action.classPK   ]W,  Z  7             & ch/qos/logback/core/joran/action/ActionUtil$Scope.classPK   ]W℣3H    1             ) ch/qos/logback/core/joran/action/ActionUtil.classPK   ]Wu  R  5             , ch/qos/logback/core/joran/action/AppenderAction.classPK   ]WFo    8             0 ch/qos/logback/core/joran/action/AppenderRefAction.classPK   ]Wާɿ    6             g3 ch/qos/logback/core/joran/action/BaseModelAction.classPK   ]WwEG   \  <             9 ch/qos/logback/core/joran/action/ContextPropertyAction.classPK   ]WC  n  ;             ; ch/qos/logback/core/joran/action/ConversionRuleAction.classPK   ]WA
Q    ;             A ch/qos/logback/core/joran/action/DefinePropertyAction.classPK   ]Wң  8  ;             vE ch/qos/logback/core/joran/action/EventEvaluatorAction.classPK   ]W*Z_    J             H ch/qos/logback/core/joran/action/ImcplicitActionDataForBasicProperty.classPK   ]W?r  "  :             J ch/qos/logback/core/joran/action/ImplicitModelAction.classPK   ]WD	  s  8             vP ch/qos/logback/core/joran/action/ImplicitModelData.classPK   ]W
0W  
  J             R ch/qos/logback/core/joran/action/ImplicitModelDataForComplexProperty.classPK   ]W{m    3             T ch/qos/logback/core/joran/action/ImportAction.classPK   ]W=\  i$  4             X ch/qos/logback/core/joran/action/IncludeAction.classPK   ]WI}  R  0             Yi ch/qos/logback/core/joran/action/NOPAction.classPK   ]WtZm  <  4             4k ch/qos/logback/core/joran/action/NewRuleAction.classPK   ]W
;H  

  2             {p ch/qos/logback/core/joran/action/ParamAction.classPK   ]W(1  p  <             #u ch/qos/logback/core/joran/action/PreconditionValidator.classPK   ]W7={  8  5             z ch/qos/logback/core/joran/action/PropertyAction.classPK   ]WJ`E  B  D             ~ ch/qos/logback/core/joran/action/SequenceNumberGeneratorAction.classPK   ]Wz#  z  ;             Ձ ch/qos/logback/core/joran/action/SerializeModelAction.classPK   ]W!o@[  l  9             F ch/qos/logback/core/joran/action/ShutdownHookAction.classPK   ]Wd>p{    1              ch/qos/logback/core/joran/action/SiftAction.classPK   ]W6  i	  ;              ch/qos/logback/core/joran/action/StatusListenerAction.classPK   ]WV    6              ch/qos/logback/core/joran/action/TimestampAction.classPK   ]Wl      5              ch/qos/logback/core/joran/conditional/Condition.classPK   ]W	qvu  5  6              ch/qos/logback/core/joran/conditional/ElseAction.classPK   ]Wq  !  4             z ch/qos/logback/core/joran/conditional/IfAction.classPK   ]W$F  3
  E             ۙ ch/qos/logback/core/joran/conditional/PropertyEvalScriptBuilder.classPK   ]WV$    E             7 ch/qos/logback/core/joran/conditional/PropertyWrapperForScripts.classPK   ]W:ύv  5  6             ? ch/qos/logback/core/joran/conditional/ThenAction.classPK   ]W  \  /              ch/qos/logback/core/joran/event/BodyEvent.classPK   ]Wrnx    .             t ch/qos/logback/core/joran/event/EndEvent.classPK   ]W"%  ,  .             H ch/qos/logback/core/joran/event/SaxEvent.classPK   ]W6  #  6              ch/qos/logback/core/joran/event/SaxEventRecorder.classPK   ]WXՅ    0             " ch/qos/logback/core/joran/event/StartEvent.classPK   ]W:[    4             J ch/qos/logback/core/joran/event/stax/BodyEvent.classPK   ]W3 Y    3             x ch/qos/logback/core/joran/event/stax/EndEvent.classPK   ]WNO=  s  5             2 ch/qos/logback/core/joran/event/stax/StartEvent.classPK   ]Wz    4              ch/qos/logback/core/joran/event/stax/StaxEvent.classPK   ]WJp    <              ch/qos/logback/core/joran/event/stax/StaxEventRecorder.classPK   ]WT   n  2              ch/qos/logback/core/joran/node/ComponentNode.classPK   ]Wo"  
  J              ch/qos/logback/core/joran/sanity/AppenderWithinAppenderSanityChecker.classPK   ]WOBw    +             Q ch/qos/logback/core/joran/sanity/Pair.classPK   ]W"!@X    4             ! ch/qos/logback/core/joran/sanity/SanityChecker.classPK   ]W}    3              ch/qos/logback/core/joran/spi/ActionException.classPK   ]Wه  m  :              ch/qos/logback/core/joran/spi/CAI_WithLocatorSupport.classPK   ]W ^    :             9 ch/qos/logback/core/joran/spi/ConfigurationWatchList.classPK   ]W.a-    3              ch/qos/logback/core/joran/spi/ConsoleTarget$1.classPK   ]W4-    3              ch/qos/logback/core/joran/spi/ConsoleTarget$2.classPK   ]WGJ
    1              ch/qos/logback/core/joran/spi/ConsoleTarget.classPK   ]WŃ1%    0              ch/qos/logback/core/joran/spi/DefaultClass.classPK   ]W  `
  B             
  ch/qos/logback/core/joran/spi/DefaultNestedComponentRegistry.classPK   ]WaN<  F
  /              ch/qos/logback/core/joran/spi/ElementPath.classPK   ]W!    3              ch/qos/logback/core/joran/spi/ElementSelector.classPK   ]W:    /             ? ch/qos/logback/core/joran/spi/EventPlayer.classPK   ]Wǩ9  '  >             | ch/qos/logback/core/joran/spi/HostClassAndPropertyDouble.classPK   ]W$ڕn  t  2             ! ch/qos/logback/core/joran/spi/JoranException.classPK   ]WEG]   i  3              ch/qos/logback/core/joran/spi/NewRuleProvider.classPK   ]WK     /             7 ch/qos/logback/core/joran/spi/NoAutoStart.classPK   ]W    3              ch/qos/logback/core/joran/spi/NoAutoStartUtil.classPK   ]Wg0:    -               ch/qos/logback/core/joran/spi/RuleStore.classPK   ]Ww{t  #
  A             i" ch/qos/logback/core/joran/spi/SaxEventInterpretationContext.classPK   ]W}
  "  7             L( ch/qos/logback/core/joran/spi/SaxEventInterpreter.classPK   ]W  !  3             .6 ch/qos/logback/core/joran/spi/SimpleRuleStore.classPK   ]Wx  r  +             E ch/qos/logback/core/joran/spi/XMLUtil.classPK   ]W]>    ?             tG ch/qos/logback/core/joran/util/ConfigurationWatchListUtil.classPK   ]WיW    >             N ch/qos/logback/core/joran/util/ParentTag_Tag_Class_Tuple.classPK   ]W)jK    5             P ch/qos/logback/core/joran/util/PropertySetter$1.classPK   ]WL  .  3             S ch/qos/logback/core/joran/util/PropertySetter.classPK   ]W
	  U  <             h ch/qos/logback/core/joran/util/StringToObjectConverter.classPK   ]WVp  r  :             %r ch/qos/logback/core/joran/util/beans/BeanDescription.classPK   ]W*	H[    ?             u ch/qos/logback/core/joran/util/beans/BeanDescriptionCache.classPK   ]Wf    A             y ch/qos/logback/core/joran/util/beans/BeanDescriptionFactory.classPK   ]Wl  q  3             ~ ch/qos/logback/core/joran/util/beans/BeanUtil.classPK   ]W =.n  &  +             6 ch/qos/logback/core/layout/EchoLayout.classPK   ]WB    -              ch/qos/logback/core/model/AppenderModel.classPK   ]W b  d  0             % ch/qos/logback/core/model/AppenderRefModel.classPK   ]W:jX}  	  .             : ch/qos/logback/core/model/ComponentModel.classPK   ]W:ۿ    +              ch/qos/logback/core/model/DefineModel.classPK   ]WeW|    3              ch/qos/logback/core/model/EventEvaluatorModel.classPK   ]WGMH      +             Ҙ ch/qos/logback/core/model/INamedModel.classPK   ]WԪk    -             ʙ ch/qos/logback/core/model/ImplicitModel.classPK   ]WzȻ  W  +              ch/qos/logback/core/model/ImportModel.classPK   ]W)."    ,              ch/qos/logback/core/model/IncludeModel.classPK   ]WkVFVF    3             z ch/qos/logback/core/model/InsertFromJNDIModel.classPK   ]WfvO  H  %             ! ch/qos/logback/core/model/Model.classPK   ]WMA    .             í ch/qos/logback/core/model/ModelConstants.classPK   ]Wݕ     9             ` ch/qos/logback/core/model/ModelHandlerFactoryMethod.classPK   ]W«>    +              ch/qos/logback/core/model/ModelUtil$1.classPK   ]Wt  	  )             " ch/qos/logback/core/model/ModelUtil.classPK   ]W+EK!  *
  3              ch/qos/logback/core/model/NamedComponentModel.classPK   ]W%8l    *              ch/qos/logback/core/model/NamedModel.classPK   ]W'\o    *             C ch/qos/logback/core/model/ParamModel.classPK   ]W<X  	  -             
 ch/qos/logback/core/model/PropertyModel.classPK   ]Wf+`v  .  <              ch/qos/logback/core/model/SequenceNumberGeneratorModel.classPK   ]W
    3              ch/qos/logback/core/model/SerializeModelModel.classPK   ]W>r    1               ch/qos/logback/core/model/ShutdownHookModel.classPK   ]W=Z  m  )              ch/qos/logback/core/model/SiftModel.classPK   ]Wڱt  
  3              ch/qos/logback/core/model/StatusListenerModel.classPK   ]Wq  
  .             W ch/qos/logback/core/model/TimestampModel.classPK   ]Wi^`    5             C ch/qos/logback/core/model/conditional/ElseModel.classPK   ]Wky'    ?              ch/qos/logback/core/model/conditional/IfModel$BranchState.classPK   ]Wb  v  3              ch/qos/logback/core/model/conditional/IfModel.classPK   ]W\    5              ch/qos/logback/core/model/conditional/ThenModel.classPK   ]W0V    =              ch/qos/logback/core/model/processor/AllowAllModelFilter.classPK   ]WT
  X  :              ch/qos/logback/core/model/processor/AllowModelFilter.classPK   ]Wkc    >              ch/qos/logback/core/model/processor/AppenderModelHandler.classPK   ]W@    G             ~ ch/qos/logback/core/model/processor/AppenderRefDependencyAnalyser.classPK   ]WQC    A              ch/qos/logback/core/model/processor/AppenderRefModelHandler.classPK   ]W1^  Q  >             M ch/qos/logback/core/model/processor/ChainedModelFilter$1.classPK   ]WBB  
  <              ch/qos/logback/core/model/processor/ChainedModelFilter.classPK   ]W>  \  <             j ch/qos/logback/core/model/processor/DefaultProcessor$1.classPK   ]W15!     I              ch/qos/logback/core/model/processor/DefaultProcessor$TraverseMethod.classPK   ]WTz8X  7  :              ch/qos/logback/core/model/processor/DefaultProcessor.classPK   ]WD  d  <              ch/qos/logback/core/model/processor/DefineModelHandler.classPK   ]WV    <             % ch/qos/logback/core/model/processor/DenyAllModelFilter.classPK   ]WO
  D  9             B' ch/qos/logback/core/model/processor/DenyModelFilter.classPK   ]W}    >             ) ch/qos/logback/core/model/processor/DependencyDefinition.classPK   ]W2 	    D             + ch/qos/logback/core/model/processor/EventEvaluatorModelHandler.classPK   ]W<T    @             /5 ch/qos/logback/core/model/processor/ImplicitModelHandler$1.classPK   ]WraN0  y#  >             7 ch/qos/logback/core/model/processor/ImplicitModelHandler.classPK   ]WY7    <             1G ch/qos/logback/core/model/processor/ImportModelHandler.classPK   ]Wo#ыV    D             }L ch/qos/logback/core/model/processor/InsertFromJNDIModelHandler.classPK   ]W      5             ES ch/qos/logback/core/model/processor/ModelFilter.classPK   ]WY  +	  :             GT ch/qos/logback/core/model/processor/ModelHandlerBase.classPK   ]Wi^  D  ?             X ch/qos/logback/core/model/processor/ModelHandlerException.classPK   ]WpE  #  D             wZ ch/qos/logback/core/model/processor/ModelInterpretationContext.classPK   ]W^i    9             .i ch/qos/logback/core/model/processor/NOPModelHandler.classPK   ]W6%I:  H  8             5k ch/qos/logback/core/model/processor/PhaseIndicator.classPK   ]W    9             l ch/qos/logback/core/model/processor/ProcessingPhase.classPK   ]WQ4]  ;  <             o ch/qos/logback/core/model/processor/ProcessorException.classPK   ]W4	    >             q ch/qos/logback/core/model/processor/PropertyModelHandler.classPK   ]WZ7    H             { ch/qos/logback/core/model/processor/RefContainerDependencyAnalyser.classPK   ]WVkW|  i  M             D ch/qos/logback/core/model/processor/SequenceNumberGeneratorModelHandler.classPK   ]Wa:  ]  D             ; ch/qos/logback/core/model/processor/SerializeModelModelHandler.classPK   ]WҦ%X    B              ch/qos/logback/core/model/processor/ShutdownHookModelHandler.classPK   ]WI~    D             e ch/qos/logback/core/model/processor/StatusListenerModelHandler.classPK   ]W0g  ^  ?             U ch/qos/logback/core/model/processor/TimestampModelHandler.classPK   ]WArm    F             d ch/qos/logback/core/model/processor/conditional/ElseModelHandler.classPK   ]W阓    K             E ch/qos/logback/core/model/processor/conditional/IfModelHandler$Branch.classPK   ]WM	    D             Q ch/qos/logback/core/model/processor/conditional/IfModelHandler.classPK   ]W*w    F             ֹ ch/qos/logback/core/model/processor/conditional/ThenModelHandler.classPK   ]WM  H  ,              ch/qos/logback/core/model/util/TagUtil.classPK   ]Wr  	  7             8 ch/qos/logback/core/net/AbstractSSLSocketAppender.classPK   ]W5!!  c  6             q ch/qos/logback/core/net/AbstractSocketAppender$1.classPK   ]WbRm  +  4              ch/qos/logback/core/net/AbstractSocketAppender.classPK   ]WrW  9  6              ch/qos/logback/core/net/AutoFlushingObjectWriter.classPK   ]W2$    L              ch/qos/logback/core/net/DefaultSocketConnector$ConsoleExceptionHandler.classPK   ]Wy5X,  Q  4               ch/qos/logback/core/net/DefaultSocketConnector.classPK   ]W2e:  z  7              ch/qos/logback/core/net/HardenedObjectInputStream.classPK   ]WHh    0             - ch/qos/logback/core/net/LoginAuthenticator.classPK   ]W؏f      *              ch/qos/logback/core/net/ObjectWriter.classPK   ]WI  1  1              ch/qos/logback/core/net/ObjectWriterFactory.classPK   ]W	O8    *              ch/qos/logback/core/net/QueueFactory.classPK   ]W^>\  G  =               ch/qos/logback/core/net/SMTPAppenderBase$SenderRunnable.classPK   ]W&U  M  .              ch/qos/logback/core/net/SMTPAppenderBase.classPK   ]WX"   i  >             x ch/qos/logback/core/net/SocketConnector$ExceptionHandler.classPK   ]Wǹ  k  -              ch/qos/logback/core/net/SocketConnector.classPK   ]WaV.6
  7  0              ch/qos/logback/core/net/SyslogAppenderBase.classPK   ]Wlq    -             b' ch/qos/logback/core/net/SyslogConstants.classPK   ]W -    0             P* ch/qos/logback/core/net/SyslogOutputStream.classPK   ]Wq+Տ  )  C             . ch/qos/logback/core/net/server/AbstractServerSocketAppender$1.classPK   ]Ws|Vol	    A             1 ch/qos/logback/core/net/server/AbstractServerSocketAppender.classPK   ]W      +             ; ch/qos/logback/core/net/server/Client.classPK   ]Wm   -  2             < ch/qos/logback/core/net/server/ClientVisitor.classPK   ]Wf"    =             = ch/qos/logback/core/net/server/ConcurrentServerRunner$1.classPK   ]W)M    I             A@ ch/qos/logback/core/net/server/ConcurrentServerRunner$ClientWrapper.classPK   ]WJTM	  .  ;             _C ch/qos/logback/core/net/server/ConcurrentServerRunner.classPK   ]WP    9             WM ch/qos/logback/core/net/server/RemoteReceiverClient.classPK   ]WшC    A             N ch/qos/logback/core/net/server/RemoteReceiverServerListener.classPK   ]W.(  U  ?             0Q ch/qos/logback/core/net/server/RemoteReceiverServerRunner.classPK   ]Wt    ?             LT ch/qos/logback/core/net/server/RemoteReceiverStreamClient.classPK   ]WJA;  	  @             \ ch/qos/logback/core/net/server/SSLServerSocketAppenderBase.classPK   ]WRM    3             ` ch/qos/logback/core/net/server/ServerListener.classPK   ]W@c.  B  1             Db ch/qos/logback/core/net/server/ServerRunner.classPK   ]W>  A  9             c ch/qos/logback/core/net/server/ServerSocketListener.classPK   ]Wk$    D             g ch/qos/logback/core/net/ssl/ConfigurableSSLServerSocketFactory.classPK   ]W6%    >              k ch/qos/logback/core/net/ssl/ConfigurableSSLSocketFactory.classPK   ]Wqh  {  >             n ch/qos/logback/core/net/ssl/KeyManagerFactoryFactoryBean.classPK   ]W'uC    5             q ch/qos/logback/core/net/ssl/KeyStoreFactoryBean.classPK   ]W\  o  %             Ly ch/qos/logback/core/net/ssl/SSL.classPK   ]W     .             z ch/qos/logback/core/net/ssl/SSLComponent.classPK   ]W    1             { ch/qos/logback/core/net/ssl/SSLConfigurable.classPK   ]W1    =             (} ch/qos/logback/core/net/ssl/SSLConfigurableServerSocket.classPK   ]W^}Q    7             B ch/qos/logback/core/net/ssl/SSLConfigurableSocket.classPK   ]Wyl  \  2              ch/qos/logback/core/net/ssl/SSLConfiguration.classPK   ]WmX    7              ch/qos/logback/core/net/ssl/SSLContextFactoryBean.classPK   ]W,A  W  A             & ch/qos/logback/core/net/ssl/SSLNestedComponentRegistryRules.classPK   ]W)	    <             ֔ ch/qos/logback/core/net/ssl/SSLParametersConfiguration.classPK   ]W  @  9             i ch/qos/logback/core/net/ssl/SecureRandomFactoryBean.classPK   ]W)ϊ    @              ch/qos/logback/core/net/ssl/TrustManagerFactoryFactoryBean.classPK   ]W  	  4              ch/qos/logback/core/pattern/CompositeConverter.classPK   ]W  
  +             é ch/qos/logback/core/pattern/Converter.classPK   ]W#  k	  /             ͬ ch/qos/logback/core/pattern/ConverterUtil.classPK   ]W8D8  
  2              ch/qos/logback/core/pattern/DynamicConverter.classPK   ]W    ,              ch/qos/logback/core/pattern/FormatInfo.classPK   ]W["  p	  5             7 ch/qos/logback/core/pattern/FormattingConverter.classPK   ]Wo
  t  <              ch/qos/logback/core/pattern/IdentityCompositeConverter.classPK   ]W|X  O  2             
 ch/qos/logback/core/pattern/LiteralConverter.classPK   ]WȢ@
  0  3               ch/qos/logback/core/pattern/PatternLayoutBase.classPK   ]WjV  	  :              ch/qos/logback/core/pattern/PatternLayoutEncoderBase.classPK   ]W.^     6              ch/qos/logback/core/pattern/PostCompileProcessor.classPK   ]WŖ  	  =             < ch/qos/logback/core/pattern/ReplacingCompositeConverter.classPK   ]Wt`    -             = ch/qos/logback/core/pattern/SpacePadder.classPK   ]WͶ  1  5              ch/qos/logback/core/pattern/color/ANSIConstants.classPK   ]W3    ?              ch/qos/logback/core/pattern/color/BlackCompositeConverter.classPK   ]W5    >              ch/qos/logback/core/pattern/color/BlueCompositeConverter.classPK   ]W恧    B              ch/qos/logback/core/pattern/color/BoldBlueCompositeConverter.classPK   ]W\7'    B              ch/qos/logback/core/pattern/color/BoldCyanCompositeConverter.classPK   ]W
    C             ) ch/qos/logback/core/pattern/color/BoldGreenCompositeConverter.classPK   ]Wr@    E             E ch/qos/logback/core/pattern/color/BoldMagentaCompositeConverter.classPK   ]W    A             f ch/qos/logback/core/pattern/color/BoldRedCompositeConverter.classPK   ]WfwD    C             } ch/qos/logback/core/pattern/color/BoldWhiteCompositeConverter.classPK   ]W"    D              ch/qos/logback/core/pattern/color/BoldYellowCompositeConverter.classPK   ]W>NЦ    >              ch/qos/logback/core/pattern/color/CyanCompositeConverter.classPK   ]Wmw    H              ch/qos/logback/core/pattern/color/ForegroundCompositeConverterBase.classPK   ]W`>    >              ch/qos/logback/core/pattern/color/GrayCompositeConverter.classPK   ]W    ?              ch/qos/logback/core/pattern/color/GreenCompositeConverter.classPK   ]W)l    A              ch/qos/logback/core/pattern/color/MagentaCompositeConverter.classPK   ]Wq    =              ch/qos/logback/core/pattern/color/RedCompositeConverter.classPK   ]W
ˣ    ?              ch/qos/logback/core/pattern/color/WhiteCompositeConverter.classPK   ]WH    @             ! ch/qos/logback/core/pattern/color/YellowCompositeConverter.classPK   ]WG#	  j  1             8 ch/qos/logback/core/pattern/parser/Compiler.classPK   ]WT  X  6             ; ch/qos/logback/core/pattern/parser/CompositeNode.classPK   ]W4  <  7             x ch/qos/logback/core/pattern/parser/FormattingNode.classPK   ]WF`
  I
  -             } ch/qos/logback/core/pattern/parser/Node.classPK   ]WWV>q<  Q  8              ch/qos/logback/core/pattern/parser/OptionTokenizer.classPK   ]Ww[
  ;   /             # ch/qos/logback/core/pattern/parser/Parser.classPK   ]W#  
  :             1 ch/qos/logback/core/pattern/parser/SimpleKeywordNode.classPK   ]W'z  
  .             6 ch/qos/logback/core/pattern/parser/Token.classPK   ]Wg37  E  C             = ch/qos/logback/core/pattern/parser/TokenStream$TokenizerState.classPK   ]Wv
    4             SA ch/qos/logback/core/pattern/parser/TokenStream.classPK   ]W.    ;             mL ch/qos/logback/core/pattern/util/AlmostAsIsEscapeUtil.classPK   ]W[`    5             bN ch/qos/logback/core/pattern/util/AsIsEscapeUtil.classPK   ]W4
      2             qP ch/qos/logback/core/pattern/util/IEscapeUtil.classPK   ]W(  K
  8             mQ ch/qos/logback/core/pattern/util/RegularEscapeUtil.classPK   ]W[    ;             _W ch/qos/logback/core/pattern/util/RestrictedEscapeUtil.classPK   ]WvR    C             Y ch/qos/logback/core/property/CanonicalHostNamePropertyDefiner.classPK   ]WzT]H  1  <             [ ch/qos/logback/core/property/FileExistsPropertyDefiner.classPK   ]Wq    @             ^^ ch/qos/logback/core/property/ResourceExistsPropertyDefiner.classPK   ]W@1d  y  3             =a ch/qos/logback/core/read/CyclicBufferAppender.classPK   ]Wh  i  +             e ch/qos/logback/core/read/ListAppender.classPK   ]W;    6              g ch/qos/logback/core/recovery/RecoveryCoordinator.classPK   ]Wz      3             j ch/qos/logback/core/recovery/RecoveryListener.classPK   ]W!q-    <             k ch/qos/logback/core/recovery/ResilientFileOutputStream.classPK   ]WF
    <             fp ch/qos/logback/core/recovery/ResilientOutputStreamBase.classPK   ]W"Y    >             { ch/qos/logback/core/recovery/ResilientSyslogOutputStream.classPK   ]WeBؙ    O             v ch/qos/logback/core/rolling/DefaultTimeBasedFileNamingAndTriggeringPolicy.classPK   ]W>*E    <              ch/qos/logback/core/rolling/FixedWindowRollingPolicy$1.classPK   ]Wis    :              ch/qos/logback/core/rolling/FixedWindowRollingPolicy.classPK   ]W*  #  5              ch/qos/logback/core/rolling/RollingFileAppender.classPK   ]W#;1    /              ch/qos/logback/core/rolling/RollingPolicy.classPK   ]WoJ  	  3             , ch/qos/logback/core/rolling/RollingPolicyBase.classPK   ]WWk׆    1              ch/qos/logback/core/rolling/RolloverFailure.classPK   ]Ww~0  `  =             y ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP$Usage.classPK   ]W;<
    7             u ch/qos/logback/core/rolling/SizeAndTimeBasedFNATP.classPK   ]WL{  p  ?              ch/qos/logback/core/rolling/SizeAndTimeBasedRollingPolicy.classPK   ]Wh
P  	  ;              ch/qos/logback/core/rolling/SizeBasedTriggeringPolicy.classPK   ]WF  `  H              ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicy.classPK   ]WM
  -  L              ch/qos/logback/core/rolling/TimeBasedFileNamingAndTriggeringPolicyBase.classPK   ]Wv-  &  8              ch/qos/logback/core/rolling/TimeBasedRollingPolicy.classPK   ]W   y  2              ch/qos/logback/core/rolling/TriggeringPolicy.classPK   ]W    6             6 ch/qos/logback/core/rolling/TriggeringPolicyBase.classPK   ]WT0#    7             < ch/qos/logback/core/rolling/helper/ArchiveRemover.classPK   ]W|m    8              ch/qos/logback/core/rolling/helper/CompressionMode.classPK   ]W|/  k  5              ch/qos/logback/core/rolling/helper/Compressor$1.classPK   ]W()  a  G              ch/qos/logback/core/rolling/helper/Compressor$CompressionRunnable.classPK   ]W     3              ch/qos/logback/core/rolling/helper/Compressor.classPK   ]WX  B  ;              ch/qos/logback/core/rolling/helper/DateTokenConverter.classPK   ]WaQ]  y  9             j	 ch/qos/logback/core/rolling/helper/FileFilterUtil$1.classPK   ]Wi
gc    9             . ch/qos/logback/core/rolling/helper/FileFilterUtil$2.classPK   ]Wf{    7              ch/qos/logback/core/rolling/helper/FileFilterUtil.classPK   ]W(~n    8              ch/qos/logback/core/rolling/helper/FileNamePattern.classPK   ]WN  L  6             $ ch/qos/logback/core/rolling/helper/FileStoreUtil.classPK   ]Wї  "
  >             +) ch/qos/logback/core/rolling/helper/IntegerTokenConverter.classPK   ]Wa՟      ;             y. ch/qos/logback/core/rolling/helper/MonoTypedConverter.classPK   ]WI44g    8             / ch/qos/logback/core/rolling/helper/PeriodicityType.classPK   ]W<BE  ~  3             N3 ch/qos/logback/core/rolling/helper/RenameUtil.classPK   ]Wl    :             < ch/qos/logback/core/rolling/helper/RollingCalendar$1.classPK   ]W
cצ     8             ? ch/qos/logback/core/rolling/helper/RollingCalendar.classPK   ]WXL#  [  I             N ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover$1.classPK   ]W੔w  
  G             %S ch/qos/logback/core/rolling/helper/SizeAndTimeBasedArchiveRemover.classPK   ]Wm<=  {  V             X ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover$ArhiveRemoverRunnable.classPK   ]WLڷ     @             Z ch/qos/logback/core/rolling/helper/TimeBasedArchiveRemover.classPK   ]W+`    7             k ch/qos/logback/core/rolling/helper/TokenConverter.classPK   ]WO    4             bm ch/qos/logback/core/sift/AbstractDiscriminator.classPK   ]W,Z     .             ko ch/qos/logback/core/sift/AppenderFactory.classPK   ]W
3Y    >             p ch/qos/logback/core/sift/AppenderFactoryUsingSiftModel$1.classPK   ]W    <             ;s ch/qos/logback/core/sift/AppenderFactoryUsingSiftModel.classPK   ]WɣC  j  .             { ch/qos/logback/core/sift/AppenderTracker.classPK   ]Wf־    3             $ ch/qos/logback/core/sift/DefaultDiscriminator.classPK   ]W[fI     ,             C ch/qos/logback/core/sift/Discriminator.classPK   ]Wx޵  &  2              ch/qos/logback/core/sift/NOPSiftModelHandler.classPK   ]Ww`+    /              ch/qos/logback/core/sift/SiftModelHandler.classPK   ]Wv  D  ,              ch/qos/logback/core/sift/SiftProcessor.classPK   ]WfO  c  2              ch/qos/logback/core/sift/SiftingAppenderBase.classPK   ]WxNh  7  8              ch/qos/logback/core/spi/AbstractComponentTracker$1.classPK   ]W9N    8             	 ch/qos/logback/core/spi/AbstractComponentTracker$2.classPK   ]W>&S    8              ch/qos/logback/core/spi/AbstractComponentTracker$3.classPK   ]WeZ91    <             v ch/qos/logback/core/spi/AbstractComponentTracker$Entry.classPK   ]WI_('  Z  H              ch/qos/logback/core/spi/AbstractComponentTracker$RemovalPredicator.classPK   ]WlcGu    6              ch/qos/logback/core/spi/AbstractComponentTracker.classPK   ]WzO    0             y ch/qos/logback/core/spi/AppenderAttachable.classPK   ]W?b    4             & ch/qos/logback/core/spi/AppenderAttachableImpl.classPK   ]Wt    :              ch/qos/logback/core/spi/BasicSequenceNumberGenerator.classPK   ]Wq#  R  .             ƿ ch/qos/logback/core/spi/ComponentTracker.classPK   ]W  3  :              ch/qos/logback/core/spi/ConfigurationEvent$EventType.classPK   ]WK  P	  0             O ch/qos/logback/core/spi/ConfigurationEvent.classPK   ]WE       8             S ch/qos/logback/core/spi/ConfigurationEventListener.classPK   ]WGeЫ     *             O ch/qos/logback/core/spi/ContextAware.classPK   ]W%  
  .              ch/qos/logback/core/spi/ContextAwareBase.classPK   ]W7奻p  
  .              ch/qos/logback/core/spi/ContextAwareImpl.classPK   ]W;,5O  F  1             W ch/qos/logback/core/spi/CyclicBufferTracker.classPK   ]W5í}      5              ch/qos/logback/core/spi/DeferredProcessingAware.classPK   ]W{=  b  (              ch/qos/logback/core/spi/ErrorCodes.classPK   ]W"}w2  p  .              ch/qos/logback/core/spi/FilterAttachable.classPK   ]W)]  f	  2              ch/qos/logback/core/spi/FilterAttachableImpl.classPK   ]W +ʂf    )              ch/qos/logback/core/spi/FilterReply.classPK   ]WϤ      '             < ch/qos/logback/core/spi/LifeCycle.classPK   ]W   2  )             - ch/qos/logback/core/spi/LogbackLock.classPK   ]WH   E  9             \ ch/qos/logback/core/spi/PreSerializationTransformer.classPK   ]Wh   K  /              ch/qos/logback/core/spi/PropertyContainer.classPK   ]WE      -              ch/qos/logback/core/spi/PropertyDefiner.classPK   ]W+Ȥ    +              ch/qos/logback/core/spi/ScanException.classPK   ]W§      5              ch/qos/logback/core/spi/SequenceNumberGenerator.classPK   ]WHn9l    ,              ch/qos/logback/core/status/ErrorStatus.classPK   ]W4j    +             } ch/qos/logback/core/status/InfoStatus.classPK   ]WO;"  '  2             @ ch/qos/logback/core/status/NopStatusListener.classPK   ]WK	5  +  8              ch/qos/logback/core/status/OnConsoleStatusListener.classPK   ]W7  :  =             ] ch/qos/logback/core/status/OnErrorConsoleStatusListener.classPK   ]Wɲ    5              ch/qos/logback/core/status/OnFileStatusListener.classPK   ]W  (  @             f ch/qos/logback/core/status/OnPrintStreamStatusListenerBase.classPK   ]WO7    '             ` ch/qos/logback/core/status/Status.classPK   ]Wfb
  e  +              ch/qos/logback/core/status/StatusBase.classPK   ]WW{p     /             R ch/qos/logback/core/status/StatusListener.classPK   ]W    5              ch/qos/logback/core/status/StatusListenerAsList.classPK   ]W!
X  X  .              ch/qos/logback/core/status/StatusManager.classPK   ]WTN
  ~  +             H ch/qos/logback/core/status/StatusUtil.classPK   ]WqG    >             2" ch/qos/logback/core/status/ViewStatusMessagesServletBase.classPK   ]W>j    +             1 ch/qos/logback/core/status/WarnStatus.classPK   ]WTx    )             3 ch/qos/logback/core/subst/Node$Type.classPK   ]Wdӑ  Z  $             w6 ch/qos/logback/core/subst/Node.classPK   ]WO3  T  9             = ch/qos/logback/core/subst/NodeToStringTransformer$1.classPK   ]WQU#  '  7             8@ ch/qos/logback/core/subst/NodeToStringTransformer.classPK   ]We&	  V  (             zM ch/qos/logback/core/subst/Parser$1.classPK   ]W:=R	    &             O ch/qos/logback/core/subst/Parser.classPK   ]Wc  f  *             Y ch/qos/logback/core/subst/Token$Type.classPK   ]Wzo  	  %             \ ch/qos/logback/core/subst/Token.classPK   ]WP  w  8             a ch/qos/logback/core/subst/Tokenizer$TokenizerState.classPK   ]Wj  n  )             d ch/qos/logback/core/subst/Tokenizer.classPK   ]WIE    4             l ch/qos/logback/core/testUtil/CoreTestConstants.classPK   ]WSڐe    7             n ch/qos/logback/core/testUtil/DelayingListAppender.classPK   ]W,_  ;
  /             q ch/qos/logback/core/testUtil/DummyEncoder.classPK   ]Wj  	  2             Jw ch/qos/logback/core/testUtil/EnvUtilForTests.classPK   ]W'<\    /             | ch/qos/logback/core/testUtil/FileTestUtil.classPK   ]Wj    3              ch/qos/logback/core/testUtil/FileToBufferUtil.classPK   ]W'7  R  5             C ch/qos/logback/core/testUtil/MockInitialContext.classPK   ]W    <              ch/qos/logback/core/testUtil/MockInitialContextFactory.classPK   ]W'L    .              ch/qos/logback/core/testUtil/NPEAppender.classPK   ]W]    -              ch/qos/logback/core/testUtil/RandomUtil.classPK   ]WD;!j.  J  5              ch/qos/logback/core/testUtil/StringListAppender.classPK   ]Wյ    2             K ch/qos/logback/core/testUtil/TeeOutputStream.classPK   ]WRN    8             Ė ch/qos/logback/core/testUtil/TrivialStatusListener.classPK   ]W    3             x ch/qos/logback/core/testUtil/XTeeOutputStream.classPK   ]W1  u  .             o ch/qos/logback/core/util/AggregationType.classPK   ]W@\  P  +              ch/qos/logback/core/util/COWArrayList.classPK   ]WoƁw  s  >              ch/qos/logback/core/util/CachingDateFormatter$CacheTuple.classPK   ]WD  l
  3             ˨ ch/qos/logback/core/util/CachingDateFormatter.classPK   ]WDP  	  0              ch/qos/logback/core/util/CharSequenceState.classPK   ]W\  ^  8              ch/qos/logback/core/util/CharSequenceToRegexMapper.classPK   ]W`    (              ch/qos/logback/core/util/CloseUtil.classPK   ]WP    .             3 ch/qos/logback/core/util/ContentTypeUtil.classPK   ]WT%    *              ch/qos/logback/core/util/ContextUtil.classPK   ]W޻U=K    5             ' ch/qos/logback/core/util/DatePatternToRegexUtil.classPK   ]Wҵ.  y  4              ch/qos/logback/core/util/DefaultInvocationGate.classPK   ]W8      ,             e ch/qos/logback/core/util/DelayStrategy.classPK   ]WE    )             G ch/qos/logback/core/util/DirectJson.classPK   ]Wmk    '             1 ch/qos/logback/core/util/Duration.classPK   ]W)W  &  ;              ch/qos/logback/core/util/DynamicClassLoadingException.classPK   ]WE;  G  &              ch/qos/logback/core/util/EnvUtil.classPK   ]WPz  \
  4              ch/qos/logback/core/util/ExecutorServiceUtil$1.classPK   ]WbX  t
  2             Z ch/qos/logback/core/util/ExecutorServiceUtil.classPK   ]Wd    '             } ch/qos/logback/core/util/FileSize.classPK   ]WjƎ	    '             6 ch/qos/logback/core/util/FileUtil.classPK   ]W-9j    )              ch/qos/logback/core/util/FixedDelay.classPK   ]W9    9             ! ch/qos/logback/core/util/IncompatibleClassException.classPK   ]WN6s  a  ,             , ch/qos/logback/core/util/InterruptUtil.classPK   ]W呺      -             	 ch/qos/logback/core/util/InvocationGate.classPK   ]WĔ9  >	  '              ch/qos/logback/core/util/JNDIUtil.classPK   ]WCb  e  '              ch/qos/logback/core/util/Loader$1.classPK   ]W    '             Y ch/qos/logback/core/util/Loader$2.classPK   ]WNS    %              ch/qos/logback/core/util/Loader.classPK   ]WY":  I  +              ch/qos/logback/core/util/LocationUtil.classPK   ]W  
  1               ch/qos/logback/core/util/NetworkAddressUtil.classPK   ]W٠M    +             	& ch/qos/logback/core/util/OptionHelper.classPK   ]W<?]    6             H3 ch/qos/logback/core/util/PropertySetterException.classPK   ]WOZB  J  3             U5 ch/qos/logback/core/util/SimpleInvocationGate.classPK   ]Ws  
  9             8 ch/qos/logback/core/util/StatusListenerConfigHelper.classPK   ]W
    ,             = ch/qos/logback/core/util/StatusPrinter.classPK   ]WB)W  	  3             9I ch/qos/logback/core/util/StringCollectionUtil.classPK   ]W81FF    )             M ch/qos/logback/core/util/SystemInfo.classPK   ]WF  y  '             O ch/qos/logback/core/util/TimeUtil.classPK   ]WV    2             R META-INF/maven/ch.qos.logback/logback-core/pom.xmlPK   ]W
u9   >   9             EX META-INF/maven/ch.qos.logback/logback-core/pom.propertiesPK   ]WM                 X META-INF/INDEX.LISTPK   ]WXJ  L               sZ module-info.classPK    
  ]   PK  #W              META-INF/MANIFEST.MF  ]o0#?xT 킘Tn*+VMڕWCㄆv~ΗG<w[z&*IEwn[H9&g' #,@Ʋ|b-v{BȔ{:ՐĤ9#-3/9_m$*5Z71eZ$尣RM0	8iSVL/tkKm׮|ˍTZHBd%ZRe smE]>ie,ϑW
L=miHi̵z*H?(G{W#9!:!FBNtH:72mwxKgʗr{aaN!GN@wݚ:B\[!ŭT\0x`Ǝ_r0+\7jʴQ	2acƗ>.>Ƈ]ZEq$DŲr3`lJ$z=WWS$zO/5x KiujGvԍNZV~s­|n;fPK[ >  C  PK
    #W            	   META-INF/PK
    #W               META-INF/versions/PK
    #W               META-INF/versions/9/PK
    #W               org/PK
    #W            
   org/slf4j/PK
    #W               org/slf4j/event/PK
    #W               org/slf4j/helpers/PK
    #W               org/slf4j/spi/PK
    #W               META-INF/maven/PK
    #W               META-INF/maven/org.slf4j/PK
    #W            #   META-INF/maven/org.slf4j/slf4j-api/PK  #W               META-INF/LICENSE.txtURn0}⩕B{ڛIL1e}!Bl3}
mW	9{ӫՇ]wo_9C7@۩O2!rQCIQ;ڽW}{C72N:DoC vT_Zx ΙNHЛ|To}QaT̚lvՠWzdUvm0gDu㹏o:6|vh(4zo8htލ
Y:wNMN`FSջ7ir
sE`Mg;
(N1U#O 8DݩCQ4w&[1Gnhp#solhyC9J(@×rK Ԃ? 3K22	UT/TOՂ6
pu]2ZdzX Jf2KQ(bi"_,X&d
o ,ߔ$QêHWZ
ԦkZ>)(O6hLĶs^eAqsAӤddQҨ%a
&O48e+P7Wiy%3.;v6`MRpF4'$;kzЏv
JJ$kyPKrzI    PK  #W               org/slf4j/ILoggerFactory.class;o>Nv&Ft4,}O"JvFĲDļt}FBF5
̼tkMu֌\Eɩn9¨遌`cd`d`f Fl ;db  PKx      PK  #W               org/slf4j/IMarkerFactory.class;o>^v&Ft4,}OĢ"JvFĲDļt}FBF5
̼tkMu֌l%ŌtD12𤤖$&gZIMq%e22:Vd(##3  ;\ qJn  PK     PK  #W               org/slf4j/Logger.classsUǿ>ǖG!byATQڴFҤ%Tmzn
?8?ȌW(7
s=s#SFH~E=kBT,ۏ{б=߰}/Z
':^ތ9`	'3ҿT0Y6:hPoڦ^ñH≽4n_b	V_WMhCт-m԰b1caUfF*9*nӱv-" l
$fk].pidj,pF,;Hua"k:߉۾HW\w8ބkdgO)
Cbc9uTGDN^ܞs6tIõ7b<.F2\4nY"gXnDV"IqߥDo8%7ث*L^Vr򌎳g&f_T
sMcـ7u؎ኬ͢/Đ)hy-Űi&.S'1JU+uGu$Pҕ92-9RO	509NʁIeKS0n
SH,}=90J>1m$cXрwi%iJU	?i,	tfIlMHf;!wd
+c`?ozjnB1[#6|>-㾑]5l']}sIdLϤemG.op9/p._pmE@4ECh@6PFÙ4m#_fbuVdR΍.R>LN=G_A_VBk(OgnVޥ*CVIWjԮũQ'u,bVӸSpbؔ[{43N;W1Mp
1`_ǐߣy,5S=PwO'ZbP-4a|iR!Cf½&([HwdNYiL@/nǞsWCwRg=O=zoI*#eUH<BtNL=+iZ5cb?D??i|ÔQ|IWmG9uڛL[e,`r!Q7NkGţ5.KƮKmJ
+@iwިXЈh#^6嘹.mX,2WdUfYeUfYeUf,YX+@Ck̉Jh~!_g0KYRd"%,Ef)2KYRd,GXRXB):chga[rK&pfgX,l2,]k,,g,Rbץu)1SYz,%f)1KYJa ˱5+XjX*YoPK@%2C  
  PK  #W               org/slf4j/LoggerFactory.class[	|o,{y$v.T.+69$Ŗ%";!	őqDqmۻ'memHvrRJ.nv)7rb~X|vDA{NӼxpK2:H?~SĨN#㡖t*m$Q$rQUbK$Ime*"Ud4fPpK[4L2U6S	ںz,Qf4a'p$
@gnTHK߱agL݉L4Gͣ.'	BcN]}Gp|B,vFu3ۥ`
$^BKurCI19#)3!JZ%:SP<RS4HML3:%SX*JLi-@3tAki4SBp42RV8FX谈괁i
*htC|mZ_a,
j-U"ct&mZv'"#Q	"j<iItO8l&mX*FE1F<GiC6
yj)Ϯ+1OL+&hDaa&N;3i+oKG>pRR[Yɝm;Bߝ#9'쒥]kXBf"׵SC)hP70i>T,MG6gе2ۙ[w]ttAb94f"Ä9ODCD!)T!u<~O72O"Ae}X8bQQ}|h۠>*QD0(8~bYu̠K@:GmQ<C}>vA1JMt\IzSrAtFJ8^ӵôrj{=lD.AP4r)bЭ"O%#83n{f#3aXʴ&bOc5aӊw]gzwTKwd2c)IogM=J
'74+YEpL6+bi1"H
`Bx$EwNz*1x2鋚A*ljLYui2{z/m)w8O()Z/tAM'S2-jb=:}(a'A4vt+m0ϏD|$NeZ{C<
f>δy0 ,5e,#A):	N4elYit$ .Rn
NTX3'3'85\\|Ur;<㑐}KS=hi	4J)%L)ҿ=ߒijUQU}#3^φqTD:0HQ0ܒtzРK@
ل:aOkT$kOzTfIyzp
@țuƉbaE; ʯ'J%]wݪdoJmNbZTP2o3/N7H\:-=9JԿ#$,'}Ŋ{i
AN;YY(N)Hȩh_tmI%3,'.fZz*
%UGܡ 	q42HI?x~δcJ%bm	bn$JWЬ?;j%|9AnDX
أebh%KAqI{d<7'	jo,=dWUr~kbY2N2ς2\ڄ& x-QǠV
)opE-<}E\7PpHć[I};o0IQ:L%ST:eZZj5d
z[ =\npHmY㟈6s1KJ
eh^^E\۝j9)>fLg\-Oy%Sy@"!f<GA[.<_z[3꼰7lG//FghH"
^heNV֋IZJW%pj7%GK`l`֗NVr*PH`p#%.I\皴M8)`k5|6sΗѓMu!$ : @;R2+T/7
'baMX-tnjsz1E";ak%XJUV,j*L_c6n7"H,B+Y1MLاz!N]g*agNf#Ɍ(PB9({VeKYenY>=McpPhnQVWVWNGNip¡>jHҝT&> 0zu3;%uWQHi!c;	{傉< %&vJGT7S;5-s=uیC
vN>´?ॢc%lv;CshҝI:rmSS;Weٽ#>MXZ@PvMNF[u$G!P;5;yLEÈd:)p
@}}&4pFJ+0O
IeF	J@vc̰[T#SDl}"QQQTq0$dr?ßTAe72]:uY<Tz~3W=Ño7bg+}n%[H7a^"I
NrtopvۙZ}Q͈!9m{ENe=>6Z )vI|zɑ}N~?)[ޡHmx䑉@(n:"f:lL*@=䎇UlFIuɛIwQRo$itS
ne>+>~
6Pgrj3C͂?
Dgtؔ
߅Eɿik%:3ŋ%fN|7Auo_0nہn S
ĳO(j&m17\%fF7ʈm7Sإ3xl{{HܬpZUeAfs%?u~.NT-lq (71&>lWNLx@#g%$=jcx4(
υNn?!N33g~o
$'Ỳ÷~ʹo
zyکhL-[GYswގ5NXC1ʼ+A@p=s{={>fH:L+1N.tK-Qs 'xDяE2pˑgN@S u͗mj{o(zbUXU'qhyi_0]T'+k` _fٵ޻noW{}"jcZS/$O&9Lk_uMg@H_B!1ʳſ2;ngEe)+ik=^yof9?C$@Mܜ.̾-|'O:<>?nC
QP
)Y;={={]9fx9M@2$EnXGEH
ݒ${CpY} ¹	]Ea$Aɴ՞o$j'}mt, ǖcc[R嶂U11e
K:Ӄ)@hؖcZP{*^OlE(l/-<%Y|-OnmյzxǤ<0]ܙYe`Ddq0
~ߩߋX	I>c	4܈ogO[f+/wMoxQԇ2_w#p	 5oE^'B{ew=2'|/)b(jYöD4/̽Lҵv@q+KTU\lTw틋d6SOx wWe5~;,\]d	'XVC9QTO<{>̳r*'"}D )ϒ cˏY
S?GvW<OΡ	EVuOJP\ErX5b^hi-.k|YV2fL1_)2&?)yPU")Nc	$$XrjPFm44ZYyJ{-+ގvDl$'`P`CB

[C$gThiv\ѵ6!u/15[jw
dTY9?z"_{P?j&|'~SP`k'>S#)u&u@+sk78-T7w@ؾXLGUviJ
ѵ7e=t*5֢9~hlS7%75ƿ/bR1~%o7Q87;\#330v1;0v+i|^>ߖ_YZ9;[G.7 ZLNkfy+ǯ>*1oGhzC9h_iܪ\3F7;jhI2jTNKgT&EUtjh	ZJ]B7QL
tݢȿ Nڤ`TE뵹<D
5k!UZmaZ-n0׍;Ydg-,(FtYֿB.贲Z[Է\򙽭'+iMQ^a.{iQq!ƜߊoCojzYgPi
m%IB	KOT[]qFDkոg=%b-i`S];)A`, c#bx?d/m<GmL@֧hq>vUǨiga9@@a< ͥQT7@nTv j
{ƕ(+qf->[j֣Z[fLաmV"k\y={ ;ŧ?5Ik.ůS[%L='88fvzw3W	HnjDcP=1N^%Dthm0C1QH.xp#p Ln
ehDЍ&Mpo<M0M[gABST#$?|ݱc'L0eN< 6S_0LW2znmǩ	:h}4@(5A^ytA{̀\%emژ+=&tvy?8͂f-}NT9Nsg8F;I|ӡe;@tӀ	g:הO1dCcokˡӁ'B\EO2>].vM ߯ؿؿٿ_S}Г.|OQ1+J4s@y
/2q k5.Gװzv	oYfZ
QmDye:v+eսOhWTA	j Y{Y;x;l,WNw1 W)0^zqdg <+9Gg751#MC?]32w9<74~mG?Q;/J["A=$jJ΀PPhAe|	):۱;]X.9pL}WS7ߋq%bgÚsWɹ<'QL~jKt=`TyUqU#4ZΕ]r%W<ڛA<vrx+l|2<UbS~O٥yhh0˚/W֬jZwP}^m:TaSUL`ۙq3cWRJ<xUp-/"m
krBMb9Ŷo@/祝Mkxũ?nxhxցAem	ԝ,d,/Ki-i/<*dPcPZ]9xE!TuK)K"PTc#j$'suJT
yEЂZT,&Α@"JftRal)rݼU`~ց1޸|NTq<@z
Wʕz>[ݪ4V_8W:=Yt\pn`e
kZh_Jsx--ho _N˛4ȭ-+;PTh{qDm>rxUDVۏ3_; O;+
^WhArdzUYVPy*׹6ɍ_&'̶%^Bq͎aK'ˡ]8I.(duhb;Nsyj@%h	{Y5%*+%bf]>^FBʮ;Eb-p t*)5`ce͹}p{O"N^;pPXطV좹zhEG^8B pdࢫU0lԪbA*kie .;E,a#QCosh{Lև*p ~f>dX]dj˂1Nl
ybDPDaR
gtv^2
ш7~-Ӯ-g@[6:84q\P[>Ʒ 8S_x;mpրkmcn8e}Ri<+>l/ߦ~cA۴
p0r13A
DPIF|oG0*7Qf8ߚ˨Rika\~S趫r#61Paη!/0Gc6glf9`Ӥ;N4S!-yƘiy}XqU]vmdQh珜5qU
ISyʚ蓥ʷj={i:VA6? i8	.)%'ߢ-E:n͊tt]i-,VeynJc*>|cy^?yauYv C6SF(4:M箼hhʳ26E-%?
3œqʑFsC8s.τ.U=y%ph UGSEzQjǁ jjѢnZZ"Aik';ckye!90bJo$SX́\	Wv̓-1

㻊i9+sqBKAg
Gzii5PKf!oxAܾK( %@23i=#W%r,%g]ɪbϣ2_
׀ѿd? DE:/mef!5ǲ2WLnWޑ$}Ԇ5nEie}}\Y~/kY
$xo<#:UQ?H+	-i1pFMTpFVTPKCi  C  PK  #W            #   org/slf4j/LoggerFactoryFriend.class}PMK@}kh7E9qQ
I
=RZS(ăgfvf߼7?^ aIr*y=~
]nP8/9fU6QT03QI=0#HQc(1,YuZٙyժf˾O9kgXy"0(հ#J]-"}LX<YJr+ֿz*o^}a{q'-T
UЮû5OB#m<90/	ʌr~.CXH똢g LcrQ=^EvrZ*EBۄ %[*CyRʅ	PKuh  '  PK  #W               org/slf4j/MDC$1.classUL10󵅔O``&B
H/%VQ"%1 8`u (03̹d.+wꦤQc랐zMHtxqM;	ӿSdgQ!AC{!g=<}PK~œ      PK  #W                org/slf4j/MDC$MDCCloseable.classuRN@lK
~ETL&/#^W,6igh4>~=;gL]!"a` 
ÌԭнmX,ܮAw<u0^j^*ǫ6*:4$UBj!)96x_ߨ$C1B?2b:0U~"#o\CZ2(WFJU\FfɯnD	J^`	Ca[L;doA/wA9F-`{L.T䨩-d@5Х0Ź)GIIBGb+'B1L<L8G&4Uc\	UFۚ{ZRE]Pq)Ռ.RK|ͷ5ۣ7_:
dHRTE"V+:H2V(2FY
PK#    PK  #W               org/slf4j/MDC.classV[SEl$!	fs#C47@BuXe03Β/ZTiiZ-}R_	ws =x/:f-KLϵL
Am=mV1=2uM<sexɉbFC)n&wN.'xA,ۋOɸU6ТX[v$UȜVlr	hh6twZw#ЙPrFl;/9SJuRq,YsΤׯ_Ot)E\e)5͛y^Ű-[щ=(ص)S#5®%DBw?#_w?c%O28*=	t^8q] Aҫ0~J-pT]+iH$R0'4ǓۈőmywEw fS>pxyZRk5+pZK}墚=
+Neg\؛~FYoO۞5`P`gUլ],JwP/xK$ucZmxC]`ϥto/b(K.#B{Dpn]G(aggk:XF|W5vTafH;E1.p_eӣ\
вٴUC%f;T-z&g~ǯRD#J-oB72W^*Gwwtlj>;<<2ȯ0rH>7;6Q}COQ=%~!fj2h.OIwL
.jL6xFIYf_?r~A4X"XqSi}AٍɛrFҽK'J5l\Ǣs_w*Pp*NogUs38YNmMP]vrPD),fLTju1<\x=h.L%^aw{>4~Qu4#^e|
>t/oZoOҼii+FIP o޷Mv;hlߺ/>A?>ޱ]j}tH}N4LE¾I;VQdf?V\ߘtA}峵m컃dXk{|"jDaxIGuY	Gd!C	uD_ч]-n~*3HTow
e<.PMv?o hOϟ}xFL^<3-PbJߪxE\^Nܹ@*XQ!b7
	; j
9PbMIAB{(jet|_EEmBCheJVW)@t^L8}N"a*aiSuAբ`LϬ"R$Ct=>XyɹPIз9<KF	˸ XsmbgiLL.ENWu}ml
lR̃9SB%uGpov:v4ӛjjx	ڢPKM\6<  
  PK  #W               org/slf4j/Marker.classuR]OA=S"_X0q_xØ4UbY662l/۩O2j L;眽g]PX26O89+:g2)ΓÓ1e.BU$}J<)HN{>ԾJ{Nj7EI1bG`8bQN.ooáj{@jib?#HN;#U-ikZ=}IGک	
T϶I؉ڥ.8)X4#ʑXQ:U$:s*ҕݹwL3T!vy튼*}/eqpsãR})mFx* cxFMDy?ϣTA;x?L
!b1k|#<ړs!nY1/r/PKgõ    PK  #W               org/slf4j/MarkerFactory.classS[OA-l]n厀E+Ҋz	5"E^4v(K.$&_Q@M|d춴Bagܾ\;4  
;/aYcTr=0"
T
QhS+VzG_ήptmCBnimvaqm50b4|79Gщ.zcȑ!RnU09e4ͻ,ل|>
r/	ۢP5Đa
#Taʱd}RzȦ_s MqGcWpYCWBXmb;Ӽ0RY.-Qv|K
r
N5L*a
Iʶ©]iьQvyM]ĒK*	H)7*d-eȒx)5i&f&ֹ#=۲02VK-ET=3U{r}-CG^
/Sc+hn&hyvDH#N]3O:H nѩA:B$ݦVu
 " OPR_aݷ<;="Vܹ*¨oBpۈ}C?ƕ<rp3]9F"70Cj%AnlDއ,g) ,IsE>cKy_PK&
    PK  #W            )   org/slf4j/event/DefaultLoggingEvent.classVksg~0F
ƻ@`5hHⅈ
l&eG:cg3ڙNywey|Xx/9ye?0_"#NAXִ
+zV7J=#va
UUHVű夾Y}Qv\(9#'ݸ{)V;M1i>w{TDѫ \Ԭݪ\
36*v*~ei|A9]
:c٭xxCśRDkXگJ*~+Bd؇䬠۳l4'BHXO,A
㰊5$(Uc%nŦIyMMLrHIGX.FA81.*v\~Wq{	Da_׳YկjU	=9^Rqfl&%\ބS}ۊL8)^S<0sm·qAE\K4ิ"!R%.HcPTε-xEU!^gX޾"9kW(|Uq
s%:SƼD>fW-sW)㞞Hɮ(׎5d$֦[g@<K8UiV5$f),fdPlq!?).|	ZtsL Tt/SQr+3ڪK B%2S@Z[Cݮk3W\McNnΦXNVsBxYé坆%$5gu4IEE-=4Gi
]B iEHȋ2D9.2ZkHų(vy
4͊7\]F{u
f;iwi\
GLjJ{iD_ zol޳t
6=xg=i
=
8}SnwyV}&^@Il A'=s8 v8fX@%ʹ]7Kd7y{l`'o
o n:/n!,@NIZ1 x^)$6Ou.x˴ӥ~vاJ
t"<(DHQƪxE.M$$IP`XfH0eb)
"s)v0zQC[*_ԩ2HDr$uA۠lm~%*ithmQ4v<a/Ky剛%+zk܋.	Sv\ɚaIqȐ:>}үj3ȧUd-iwBu
B2.6?(k!&:",y"uuiqQtpl6:E-(HYy"bo@j֍ukgu	:DAC<n#Er9o6X?r(U_gҠ~~PK\   C  PK  #W            $   org/slf4j/event/EventConstants.class}N@&vhHK3XִS|.W&.| xڀs@Y,0B1+{+;
Hc1LYF|5{P1d.'%C~ϢPUc)ۖ{*dȷ-kw0,Oc}F"Erwe91W;uwTݼ
6߳V{*^}۴Kɘ
n@zy{eSh*"5Y!ê!=aFq灌y"Փk3l?
Zg!O22VWxx}K9 ޜ-m.y,Rh	H%)Cŉ_QrjUPK̔vJr  R  PK  #W            *   org/slf4j/event/EventRecordingLogger.classU[WWNnC 
FZ+5D0^ƢA+Xmzڵje}i.	y?
J!8,[9ڕܺ06B㵭ڼ-M6Cn$C43VNI)G2τ
$j]Mev%@=Q(88zF h]
p"3Vxখ+6K'Tc!fzNHCʏ'<=zn|Q^{RDӑ)3
Umco9hgۤ7Ăn|^Ϫ8#Jf~,Tdq΋`8)Ą1$%"La/x[ *=n?w{
7_5-`Rmٓu[:Na4/H*fCddV='t2ek^lN6b<eAuCܐPn[yՠ	sxCгǨ}vꓳunHe>a`ʹe:.727<FV?(%]3d9o5K^OS
f*SbP.,.jpPMvVuS,zE)^ڇ.ȹ6 b=涡b2&c;;)gDZnݙ3׬6[{l۲[un
h
n/D=t>
zz]2Ch7hTSnkTӾݝKߑ=cWڣ?HhzSkOfC4Qf=zQ^tQ~R%˳kbVNwQ0]8Ne0<]e4$iG
NbOZ#I8>$y.9f_e/D+e_a;:B$g$= G'0SaJF
Izup$~o}:#Z}ȱ]H9~䥎Hȫ@而) ɢT&d1oL?t=NPޕ&E_d:1ĕtbR?TwӉtś#tG,Dxg/wS+w ӔZ%h5GoK(E?VOUЀVM2T9`_p(XrQ$j<Nv

ZJ%lK}PK    PK  #W            "   org/slf4j/event/KeyValuePair.class}S[OAf햲-@nEHL &5MOCYb%᧘AD1XhΙ=9o U>]~6/뛻fa[eYd.ѥ!:HZJݴy`0[U3"@sN*2&Qp>ɝaX\-@ 0c7s4	0ogHku`}0oOlue ,``1xU$1_e
uđܒؼVc;+)5H3cٮ9*ܦtƆ&n1;+CfV*[Ul>4-{^)r;ϫCٱH+0Щ+s/}/,54@RGn%ؘAU(Bxڅ[. 5wqf$#?;F ڍ.
!t2,=N0D
ip\'3>A;E1.Eh0#LO%i 2.GHWm$ dc*I[x=wmJR1 XS"M} O(([|g|g!0Og
4b0D"%6.+GHT%wZ|G|/ɬ PK V    PK  #W               org/slf4j/event/Level.classuTmSF~
p84	8/5%cZSې$mFTH-NR2m?ӽCI5Zg_n LÔ0k醵=6M;
W݆?CMAB\X(2ۚf/W9pEA ե"
ۓ2G>QHq䪂2H7kF2bT aGrl!Hw=mv-]5.^C\ucgh{@Faa&q;kFPr]\	MCpִMwjⲧ\e&0x)20/L*B91Y$eketk^kQrT}tl	iZee/\Cmܴ]fRaao1L),y	d8x0:2n;nnTmjlMq'Q[\ܧu,d2)u,JI>͍v{w'2T1;
X"iVyYg6mciEDۮvSNUɽ=
q$%fnnl[cH14 eGuiRrO+BhjyzJf;\rdrYS{.]h!~=>OGʏtH(au#z!1<wPE~zR}}ʹiޜUy&Op#5Ԑ-nOb*ye1'_!*_/s%E{Es4&z-\H7|J|m',ΟD!I$C2J$A=zx^$L8<ÝUN0><c|1O7D~uj8&fqH
0[b{>
mZpuf. "S9gn ?RO**T	RDŖ.OxD?ʟ3Q5_$j'5XGFDU((#Z@ I>WOkL5(S]\l&PK1    PK  #W            "   org/slf4j/event/LoggingEvent.class}N0PZmwV "!n $@pHE\8M[c\9́c@O
 [R^nHC+
cPjz
C7ڼin|jJaC-F>À3';YhC a<QS$EPAӒ<_Ɔu)B4&~7KR&`Z;
:S	Bֻ7V	\8ch_OPn0g[3'c+y*~-tAԢШ/C~
/Z?jB-ḽ,vMSGn#iMlpg@=}VA*@[: W$I/eˤ+=Fz&7	Sn,}x\sλ5w1,:SPKƋkݬ  0  PK  #W            ,   org/slf4j/event/SubstituteLoggingEvent.classUkSF=kFy𐡉I
BC҄֮n#bdH2ΐ2Iۙ~e?ӻ+a:}jsg ,I!
b3Gzҫ}ceU]gR3$L 
L.e~82n6Wu\ӭV+jib[#ZUOA?>0lhN5f:jisMmJ
8kb2`41ыE!Uy\Tp	Ra;z`HsM	
URe
TY6C*&a䴂%Q1G/ܦ*`[K>E;ĵ+bl㚢zqjV%LX[Ȑt͊s!+_+XzeЋ\nFX倲]MߵH@Y`[un<y&ڎFJRUwn%|[ub	7/ ީ)AfVzeװ^Ui[67FݲIJmq}@Ky0f:t9
W@A%m*hXIo*͇W|t:C/mWhgT
DnN[KS^<yΫ3z@N4~!ג4qZٰK
ߝCjF_괹K;*|p|8.UOw#h^O\Ϻxe}o:R?0'cLju{ϸg|uG$20|ol]?GŸݡ7ݍNWh~K,I0pފpFjq<&?;½OhN	E\=/?QCka"a""8?O}#o>}r	%rS`3]
O*O5O'(c)_,M? Qt"\ȂT'x*St""a:(OO%DHK+a"kՁ?<+"Sa"D~+2&r0"a"Dtʈ̆h@75O8Od9E󏏘?n>A;A-IGIn,wB
iizPOPn%.FԗyաT~OL/5-%/0"aD?%!&R*#&bҁy[y;$[ePKyx  E
  PK  #W            &   org/slf4j/helpers/AbstractLogger.class	lWǿgz}dmٚI4کs8Mp|Չc7\dlכafqܤIPPRBHRJR	T@H\ތgwvެygv{;D^2**>Z4><qFL0{7WQ%UyZRxxzǙ=<x&`P7)Q-3
fgMhsRV3Đ"z/5Hw1;51} ƌFUgP{PZtU{DX5ѽ^Z}QcvMfErsJЃX-:Om2n-q9iYd.+،wsC*m,rk
!NxZQۖM,PN[qfw`pNBn잦avZ
֣Ov?w#*a@t:Qx207̇v"W>+fDsUi@C"JCV3rSHwddxE(&sbFDЧͅ53W}zW@{8z$}Kq:~xG#LbOЍBSZ~
4@j*M$SݱYhY:䚗\,/!J18kՍ_tx;B葁F ;'hb\AܛWݱ)
\dB7̉|Ịa6.*P+8;QkS#z<>UlƽtѽU#Ǡ	9C[v$MhgiVڛ$e73>E`":?w-k6
j>XeɆn,de0'Pbbq_Պfɏt$a|˚WjG=f\tw?v?0=΅c|ཁM%$isC
ShlΘB7<)e]S4{hB,)睸AFG'p؛bhbbxU4Kg:W7୒`cfWnRmZߛ_i'5O4b2}TxX+ExAbU8 /5tH}e	RݢÀ 2& ͨE(=IO!i*(8֛Un-j8f;)x3ۼzzF'qVH<]ZS FKz/p͛.\ n=O/^p>zZ6YDvQAr
}ZWN.ˮ&dGoo́7_`Ϟt#'"GypluٯHzď"f7F(\nRhr+h-Iv _%6h	*ZZ:\%>Bd>z뀼ZR0}QG9R|Q Q藊QR#εy_u(GIv[<.*fZ>J}|x [()nG|t﬌r9w;{"꿜Gk Aq)>JI}=O?]RRe!2}h}|K~~]RR9
u5 x>r\;~QJO?KRRrey2} _[)>J}ѾB>;2>J}NBF-G)Ƥ?R|K}*˼U-Gi
H- u(-Q~^Vl,Gi7[6GkwpQZO# t#uS>J}I|ൂ>:`R۾2>J}N;CUr9Ȯ# +GMGh(#Q"ѣ rxe>4}4\GC
c5⣌GB]
4zxe>r\w=^2rX<NK5d>}|4
^P)>}4bh`G(#~W;!JQF#ٵA^ c~&e3ST͞YVCט82qƹs\Dnϕq|ʎQ&^s9{,R}6gS}b9,VKnP|!ϯ{W;5s||؂h=B;kvvvvVGl
R^߈Jműͯܦ=~Ϗh-??g{D޵ueW!k$ճci2ʮG
L󬨠ͮͮͮͮ#BAF6٬CtJQUZ?+PK~	  1$  PK  #W            )   org/slf4j/helpers/BasicMDCAdapter$1.classS]oA=gYBko*m@Hj􁆤2eׅ.&+|&LQƻPL0l3wǙs;2@00";Wrrdk(<'>C3L7G鍥kECe^+ۆpLw,qb8w[_5mӫ1|;u
Y4Lt]ɇ
HZ2N_u!1UHui`Ptômn1Z(fi!4f]L6L[ėG6wL)wȰ<O,CۛN.Lqxϳj-1^eS#D;Zf!VͯH%vB.f]e]6غҢ~啭[3(K̠۶pw]"Cu(KIV8nY5hV
`sD?*4F(ӓ,=@Zab>aYOs$
IuT|88x@UIlPgH!NuLu
?eLcBSYC^z4>"PKX£>    PK  #W            '   org/slf4j/helpers/BasicMDCAdapter.classsUǿ'
fKi	(P.-VHZW6v	E}R/3Bq'or첛lT'3{}9 p+2"hUꊚ1T[ԊCniPABCb2px1S֌fٙeKSsjlb"KA7zv5;Qm?Wf18!͚f3{^l!0j qr4`3[tYZ#
\ɖs+fZI5&RmY3sZ+f1ėdQ5͊Ӓf0dlN?UoƱtD2va=
bCEHTFuߔʅp3t	sэMStQdB=`H
P8^q;b\f:zDs=.:M:jʊM
N񕲡hh'*οM(8,
:n|C2i9uʙ5dRKE*m]l	9yL1tT+U}Ug4
>jl->Oh߳,XsU5ޔ="O`U=Sc3zT1̾p7fp|=Y:M?h2O!zrMՖ4*צj"k:e=x͑ӊX`|w	UЫէiJ!yx:j`B:&W [1#6ƾv+Ƽ8~\źh0?hRkigCԬv^ Lfe
ն56N:c
t38?;&=G0[dBmk`!ͮ!v2=Β-~Ϸڍ6>wMq.ޣ;;},]e69+#SO)9<ͣM<@
yبt@o	C9g8+e
qCA?0"{E#Ybtm)o&w?'cӏ=~W"xw]9.P
T tu|Ĥ؉~\FsN+əES̑j*7O=PǓy>OWOWgs憐'G9%gx:F^&(&\F)\!&qXN\ gSB|9-'ш#kMɇ:ODb+]ǢGsRն6(|pSxu<[},x'd_ygz<ӗk
5зh SEȫ7<J=eFLHΣ	KNׅ`;wjc}_2u
5E}޹L(廾pp.1_42KeXj:,sy[t_!ə\l&菧PKk  
  PK  #W            #   org/slf4j/helpers/BasicMarker.classVKpU=O݊6#:[,	8X'Nd-vn2	0	df10*"8RTA,gł
;X(yV[VP}{=O ťB+hA@ǼgJ57
@ki~pwO^AT[TuR`[ǬItAϏ7uCUЦw	찝L4w>S4Jeéd՝3#=遐FWIK]+@GJ%cN/
:s>W0ʮi[Ql<ǚ/ZA,զ
ͪJ1t`dY`S	1~&SAϧcFsmMj5{cS=LVŃھqta{8O<=FeMaH؍4YV
O	-A<DUzXtś=:ewtצ{$}rOU<*ѵ:ƂhD1Ȥ4+G'٪^1'8 %n
!e8ʵU㐔jSW0kTަ6<1r*0scusLńLpC!9a[wÉ!MqR38|aQ[cX
N] ;x(n-

i9E7ڵ\pLg#NGX0CUqu~hN}թoMsVzo-}pl|8'24:61ڛ&̡]eӆs\.y
jG'*ƈ[4Ya	W/e㚍'KyTr@Qvn뱪Fެ2(+_Gnnce%ldl}}56&і7{z~a6eÜLmkF_?}l®:)u4+]`{&h6JHȳㄼlh<M[mxixT8zaZ{ 7L]ú>C
tL%װUlpFx@<D{PK,m orqHA\yh2_Xk<jmy> eXBT:v tK]}!LBqx?Y`)pހ]/^K>ۣ1ja9%dH
%r t	}iIe:
7%jW5F~A/u޸}.j4'gYWi{vGBh7ِx8~eQ6lcuE"/!~-!+Ns_6d=I&)
!=Q !̲B8>5g~Ea	+ ůhGKС``^7	}o"j'#wtQ"-" QA9
4p874䤮%d}ZWRF׻ހx grl.HІ)H7xL|{JKf~u RCCUG#X?|f(2ǉOɷkx:Ж18&SXT]l<E:1-/_:1#Geʞxx;LGzg{$gUW+#ο$އ<&IN@5sZx%Qϼ6VtX? PKEɋ  Y
  PK  #W            *   org/slf4j/helpers/BasicMarkerFactory.classTrF=+9rq	HC!
mZ'CBJf&VGA2iC33|S,+Mi޽?p(P5 ͐Opa>+dH/ٮ0-
fVh;VkUAT04eoƾ'-VO3hN TR:*iet$~qD;~դ,qڞ{
_0]y"',Ƥgf+GзF5spLt9?+k2r8^R?"ȧX
yϺƤ/
\VxOПH,
I ;2'틦ThpHfokvawOTz+Rk.aTlWo5*ŝ-rSP*'9S_;vOK(*nQS	)y.Zٌ+j!xfavTe%QD$j25[bÖgw|UcnzrVhDtoEnA/ [lm̫(:)CRtZFpP&M)s0tv.鿋#3gdu1=t5ZK\F3#I&<n
,',Vp/UE"TcH]%ZULQ?05L
t6E
E,~FDUǕW#_"3s4\pc_Eo~CJ&ztk<?ƕΖV,лL1X=cXFE}PK=U    PK  #W            (   org/slf4j/helpers/CheckReturnValue.classN0@$T`舗nLD)
kWSP*HX:ş_ 88sy*̜B^M)yȗ+SRuNJeS9d -UYYy
]'t
	m}^EzFc]艡U}!pzW;crF˅q=<%zsQ
sUíaߌ'40gAɒ zoaO@`4
lr3aثnPKd    PK  #W            '   org/slf4j/helpers/FormattingTuple.classRnQ](aHֻ@;&6jlL4EӧÐiƿQD?2sB9{vZ{u/ hhH!CFPx(۷znp抑uEk~jO8C:C'WZGۍW:?;m(EBiGHWk&	;9[(_,tB(Ds]ѱ5B޾J}i.%l<x_<$d6aoM
OtNv/f&#ѻ j#B1*Z^QyRkhͳAq8]caI:ǑW	We~Q7w$saFY' sc>5կ!lÆR'd6=AlL`̕W4nwXbsʟM1)Sx Kw_gBIS@,Mx	dc2riL 9bL5O7;W|JPK.  C  PK  #W            ,   org/slf4j/helpers/LegacyAbstractLogger.classN@ƿBC@+M.U	dmxA	zAC:^*r-oVO?EB"r6(0+j}-;Aj>B3>J_V,²1o#\>ɠGwvl":b0vcC$ۨDҬ+5Qs	嵍Zjy@hɽ>=Q* ~X<+rR0鋓h t/"1T5$'b.C}1T'\RuAI֩8z

ZE~81,-(ϛs*mb~X,u:g6i3x71?Ph.gCe[xkfR1ILu
)'1KS0TB6SK,&1[S0
PK8O    PK  #W            *   org/slf4j/helpers/MarkerIgnoringBase.classSUυ@ nRіXy	MTKCcyUJB[B.aiK7>Ŷj}ǌ:3tFgϹ	+|ܛ  T@|
TA56L*Os3T3<0R)nYΠzP5+Ơk. 5P뇀ρ	ռxJ7LMO$vkS]cI!@RB*3hLWpZSizaDI_Fib0PV A[ыTʠgVM]h]qFR.e/=jS $*I(s2
SDQ'E-uSJQ$KD3@4})qB"!EBEBQ[j%	kqJa(EBEBr\if)uN(3I!:E}"!:CQ4˫?I"PyXy.EudPHZf4tv8,AU`	XO$,+msFؒրƀuRۋ5ƸTuReǩ-lsLe9ܿGQ$CZnͩuŎI)t>,qs^:*vgjr86GFDp2".sq0l:&xd)Pe8mzފafTR5%}{S}hWbp,mA-j2\t1ugA`șF4oe QneI_^^Ȃ~UUh?z3a3Wu?Djp?nxy& [f>u'6'ZZնE8wmiû7˲XtXveEY?݇P>
.a]kѠŗ=|¢0hQ[-ZaAC|S>qYn=C7#
`h[0K2,re<q
KWdMx%
˫rfG\`鐭fY\`
ΡXzayM6Da9(OskԲa'&{%
*¢,e4v K7eu4#,2,6Ĝaykn
KdٛXt,1WXd;Ǝ`2"[n{%˘l 
z%2,%Iy_baI2!~Ez%
i;pl#vX.L?/`x? S8̜ûyH֯]2^]ג!-{].v]`1|E]PK`    PK  #W            (   org/slf4j/helpers/MessageFormatter.classY	x~=fHB  	ݐ 䌆H 	H05Nn x+*ؚV)BaG-ֳ=wV*,96a>:;?ϟ<PwVR6k*XZAk	y|P9'Ɓá  m,PЬy[@R&hQC!- j{D 8⌍Pk[W܊&Whkjs%$HHkB+MjW+Q}n[
iΜgDE:\A$ҢK91Ab$DHu9J|g`cEp0HF~F%8	-0/^zhej@mјݠ\0ADLP_hjk| S_&+89z5i(^-3eeb_#H|D_;
bALyv*=Z*ƖjPR`6[S[$|E@Kc*+X«-0nI.o|
4ϕPɪJ#/e)(bTOpaAmܥףAVu
*dO29%3c0m[-X+V.YDA
j,zۋu5+
m0+BC("*Iڼ^:z)JfhPWī<{t.j#hV{Y%ACU06jLPdɷ*tԀ z߫>hnVu$F@lVЎ-=
@\!AJ$W\&^	r ;\dP(R.QnRp3nH(;%bq]xAK$HqiI=TUpgTg
3(x_'?RqWMXhGǘK	xX`NuEY9eǫ\NnǷߠ<~_6UyMeCZv
-ǣ
[)G;v|Wcx#z	rV<lJ	8*#ZV\^5xOqL!I_pk;UiYN6Co]%l	'n#cYy|PNWj-GRR,{R
x`ŷRl`şJşIҁ!I^R҅W/_=T_Fifη֥tl%ᆘڷvxu%5A~rǧUk$ +[<ZBn%b@{ihA9>["V{@SO
<~Q&?u#ҡ!26iS#61.rb::Ӓ n$O:o4ZXHryteC0~NРAks~ON_#r3{hoH8SCm0^54/vnٟw%0pT
ZG.wUmqa(d¯n}mC:ﭰ%:BU~ϫM*oŔJRC`ZivUa?
$=o|/n-%ÜVn%/:dvD9
9!?yg"x^_EmGZ;rN#M0&׽|Ig"jr$727>I;uC}")Ȇ**H%h2xЃ05f4	K!gcw"|[f&!ÔCd; lt++(r^"Y-yEPL_ϱglLىy3-i~LqF`2LJqW4KRfLa;-,ϰlDU-u;Wm1\(X8+,V3!ӯ8]> hq0X#a)j,uYxx<.X
U\װc;uxw-8wp
}-z=fb}}®Zl">)YUԂ\/,9M=3#dyN1DM/db* iL.N˒qSNHm2zԘ=:Ȭ\:lZF8L`aطI$Qъ%dϓXt?0>Cbe*.6 GЗAnSΊg݆TZjac}ƬA-hG
gDgN=	m%.u`Yw#z0.M06u`3%[
0u
al
J7$ׇqcPr!5:0;
ɝa|Y6$øCg#n"Cm&2
K)8G(*|""+0ԉT42"-b64\)q]b<(Foqaa-H$)bx(a]$c51~HoT:d":0Rf(ޥ⅍vvYӭ&$2#K~a$sXf1MY QH/Q/g^Z%w~\EHrYLC-&<xͨu/21y 㝮4<}leZp>'=a {W.~:ORLY#QϤz0Qb*?av>i.DKTF5bt!fsDP&$铆D^2'zvm&z
Bd$6#)Phr##@Ec`ӕy^'^#fFn~G:;$BNb Kq.2U0ޘ4l=k%1\&c7bψ9`/&%^A^EKɽ/&qpx6WB)KȽkRr_IȽW8_q6rcA}=^O
&wɽܛ~ٸߌ[?H[G~ro%r{07.f^Љ}#o"N[}+o&m8<qO<ܧvpܯ!侃ܯ%};@7q%qpq'~J;6rwNrGg?"\pp.~Gb,<=&PKG  `  PK  #W            !   org/slf4j/helpers/NOPLogger.classOlT˟&ڎu-Faae[pt-S!4ڕ?;Kb#;!qA@.〸
ILB\GnHHH{vк:{͋?So  sA<HBV^u4_2jzѩTLwL]Sm3FVӐƓd)/]3
n<@fWK0*ޣt2G7cgQ]іc_]ce;^ݰFa&X0H:	-\jLwXbK)cix4&ꛖ U1&0ȍFjؕrݵ$>[q9ouqc^fFE#8U;$ֶr]tm8nͨcJF1JO`⿌1ȅ$]/LcE5n282g:7i?`hsZҼu~-N=ah~pV
1븭_
֓ᾆ$s{Zß	wit*Q3:~Sjd[6,kgydq5.x|(Ax/2x>
	ax+`b1<U@cXP<	/]i4!x$(=煮i5+A&ڡ}~(
Y#8DLIDD	-┈gXÆEK]a~ghXN<;J9's<Ceag!/Sh:Sh:ONވ@toJ)4tctҩ4J}Dޖ\@t"Щ4mi:D AY(FmtM4Fݍ@tJi4wtt?4ON"MtFiߤtwi!x:X(ݟmfZ7>mLRk	;Sɧ(ha;qL|71[;؜!Nyb,9?i*6c9{\lqHv6@+$;;.ͮ,]هĮ;]ٕnh	]/H4Bvf/]ٯD`Wi#|^fhZvfĮ7#k4[%!u=ivf0N:N]?=
:)z ݅/g[mtFPKe_2K    PK  #W            (   org/slf4j/helpers/NOPLoggerFactory.class}QN@=#
VEDх(c01BL0bܚf(&1qQ;=q
@kL!C3D!NO!C!Q\1@:̮ֹ8үVqznMt1lN`ԹAG82h'`\_4'g6t;&1~]ƗjZGx-j~uW͒q_e`!ڈޥDrBF}{94TH1"a	yB=COE(0ǹJ+b%jKPKI[M  H  PK  #W            %   org/slf4j/helpers/NOPMDCAdapter.classS[S@>+J+ER@ L)LoҦ$ұJr<	Mhݓsw. 9H@2!CaQ#7=82:UI%ȶvӓL3egǵt6U9HՌKFXWuv^uAjJuCZZ*)1YQL0$&Ճjꝃʸ
ݿOe2]DZ@nj2]}>E`0;sFMOuTMFn:hF퇓Ъ"ʌJH"N*<cLng`hK
TM
NriL髂.w |$~dyMEᬹZ
;Qłmː75<x?@!<3BY<<"~Bd8%?p!G"eYH.#tmQ
gBKQX'>خ #-/j:9^~75=Խ%SD2PDKUeXj|b۵k}O¥J`+n5bƷ%PKLӾb`    PK  #W            3   org/slf4j/helpers/NOP_FallbackServiceProvider.class}OPƟ
W'(!+"jȈ	`ʋe]!O%*!2vu[i{<o? Y]ȐtaTUS)7
QsHr #0gef[;UOYvM?Ьr9p,C2"EFgXt,Yۗu)Jf3[32$f@A{_5aYˋ
_lXFyvJ *bw{kWn0V/pW&b%fU2.3`#Wq!{ckM}-*Ljz%.~@B^˭l뭴e8C&*|#hrefA;%DTq*sG8\ub7HjBDPF)56@_!
0qm%/tS|FD7ӿ
ua<'
i7)fI.!^Wd~q^xNg)n#4{yB,^#F k;Fk$(lQJ	!I+J="˰~%םاFoqnHwdGXJ8;i>c*&[X>n4wɛs- (0SE`ʋj4>2>
PK=Љ  k  PK  #W            '   org/slf4j/helpers/NamedLoggerBase.classRMo@}q4@R(q@ނ8R	doVS;$gďB@S	Y;;~_߾:J(0,,BhLĉpDz	P*yD(A
UL-,"lwXFS9r豈%Ch$R߭9hL_&jgA`e".N5:^"k2^tX\2N_FJb#ήW>Vt'"L"ɥ?6zGo{zĴUW7et5]`5ϝF2V1aosHdw2'56a)+Gpk0g'TN^J66J
u\X0s;Ŷ9m`k l&3naQ)\|W/WۙͫPKMy]  7  PK  #W            ,   org/slf4j/helpers/NormalizedParameters.classV]WUݗ&JC|4ZJmE(@Q*c
4Lp2M
t-YvY}oHa;w9{s=8H	1
qhX[y[v1hxNpU .H@א4
C`5z~v7l_uKoU쀇ZŮլ-*@,'dv'![~yb{:Q)8E`ͯ~c`z{x"IniQ8e
$MCsk-w){AYWFjWs+VꧽMMe͍om%чsvE.'1^1*^hV-+Tnl	yE	ddalyNY^)1).nٗ4`#.uzcF&XZdbL$Xęd>*6&r+[.x9gg;jLi"dA|*=
"MI6þ^͐͌b.5p
ƚμ	Lx촷wJG	TDǳ6+7UR˖09Ι7JGGXAݵj[/016޼yk#Oj*؞(
49n:XV%۝
"?ۘQ*6uY
{DT#ꍊvQV穊&:|CNUrbr!4so.\Ofn96sd'	7g]hI'cԬc7B$rIBo/5a.Вʧ
!]GH#$B!n7U~k6Eu0pn;<;|P.lIʴ3hۦ4^-~GH~C϶Vͽ
 bzYΞY46R%9Rmt9Cߑ,vnEbWIJ/hfl8
cN'|'C;E&\HvgI#KI%4rƅ$?)gh
ClH7G/=k#Mr\}鍏Ou]q@~8W*qwA?`k'Q6	KcuN
R2%D4>Q'?H>GF اab`c\VOz1uc)%QVPK  	  PK  #W            (   org/slf4j/helpers/SubstituteLogger.classZ	xT>'3򒘍KL%$eH&x3nmVkV[&U׶ZV۪]^&&_N?/| *pA6C
鐁p&mi]tO!
V#8ʦdA&d)BF;XݡFj
PPK
TȇmzWpuHQo(EZB#V:|߅0Ja8Bf۩/Bq&	Kv@(6Ho-3	y}m,
OwW'3Z8hA1&0x]ZOo[7[7i*t<o`ytkțP%erFpO70-N
1'!Oj\F9,vĮv<'ְJ*1ڠ)?U31R[cj<$1.%R"E;eԤpmgk"f
$C/6
*4J֚U9,Z5V/[CV*4Roܲ[f::l͠Uliܶ-[5llղrl`k
>+%~T3\ok?VR;7APƖx.[l	2Mn/bKP6[w/aKP
2-Xg\+,4+U*t۩~
cK0-p'C
?6&[ocK0-NvYYnRaZQQ!,n{cKp-AMp|-l	%8dKp
Yx}BC$m9zpOJ_4VfSϨ,<7h5o
i@>/

/oWXoӅ
/+Ygl}Ɨ
VFxU{`6gׯ\v
}+y
Gx-vmىi[6zS.P"LNk63{{lN ҜOVMtQTj~uь|+W5\ @P[MEt'2SJ߮?cHFKg(̆*K@ihЃ~:
,b[5k4j
}
m"c*|	HŚhG*9׮iUЉ0n)0{מѷqGej0Klb$d\TG:UcD۵ͿY9X,'7)X0~t|<=D Y'ʽP'ю7\&\G<=xV3xM6yۻ`O*i
.bLtԋZPLɯv鍡VXr,dƣZ4[`lr2Ka`ìNWW\6I |MK3otjtUrP~_tByWʛf%w8F+{p"5XحYg>MAͳAbbN@.lνV
x^Mbi	q#Xal!dq$ҰrmBMїz99u*vb"PotǭiI%ѳXm8
IJI6&wҳصUkF@>jw(=6*ydA5B[e18b҄ž8;fO<'D͜ԃe$2DI"r!qBIyHX:1ᝃp<l8zm&ѱk0X`t*9f>Q(([c`_"[:gP"p\
}pCBlfS-*N2QtﶰSq3`So'̍Fsq gEv.
99d8
a)2V6lDg.6u\ZlYV=M&zІOٜ<.x
a~p3f<ZˍNzŊo钣I.*GGGtqYnR9K	겯W
[7u+	!Lb79ēztNVu}\f[jFz4@5T\طQaߞ@5'")T@mCB'-Pu{/aKZ
Y@!PuLA"z ijN PraS&$PO@5'rdO)Ts<O / P>;$Kqo'P@-@!ʰ\Pa@	*$} 2jGIa/P؟IV.!ʰoD/(#@}K#"
MKAC(̀<TK92: PFXvs)HA.I%q
;L(V
	CT@]-6ITwF΋KWn{VM!JZG2vaMZKn{A&zNZԍrkh;@,2%P	V9z!N PnV5).;,P-qe@̸a[[VBu\4#i
'y*l/PRvH@BFۓ=#CT^D/;px1
$
'@]Fuq	T8@=$GM]@#ku)cv,P;˳pa\] .?yx9	pAl3~}7:l!otm01x'.wE;gSrD!Ρ4<Jb`O+L|캹7*H05~4?|HK
vr׵>`K9z J@ѦA	i*gH:P: w=pA(yye+pR&u8<%&Ϡiy?[Xw"z-!f"G/%̜
?q>w\!!t2v>̆
t(iQ.|fkBa:z!k Lp)Pͧ8⽇*sbND1e⚶Qԋ9vڰx78QoFX,ωX$S:·QGω&LT|Q3[23γ,X`225V52'Aq72KBȍtHY髊EÏkxܫPKx'
  ,  PK  #W            /   org/slf4j/helpers/SubstituteLoggerFactory.classVmoT=I&u&{6mPwe]hB22onfR^\9v/CTiBXf4s9ϋO 0wCVS5ղeX._ObI)POڎin[m|Ϭ8ͦ
qN['eφg9-BAZ`.=NỮrwhT2*(G[BAO]{g|l;=|曾¥U@<kNPGu|#cF`OS4ѹ\e0zI
g8YܒDvGwDץ*rSԾOQCD((pǱaj{㎊D{aMƞ#zhS(`^LZ.6	'zG/p`,>^T@ta++`z]hdjwY'
4$F_>KȠ *l4e[-smύmlivp-ގŌGIk6дa0`2W3%y~jc(]A$a<پ]K!Փ)Lu8k
Og520J}P;Sj65K[|WRsL$#9y<L!KCǰgWP#Z)x)CbGP
:ƅ#LsyGk{,y$4~xLA_>U/|7LOl7fN1U
1nV	bbeBȓ/Y=}R?g:!\=SR鵎o([Z' @S(L*R9EaKr$pO_wFb̄Tnж\y+w=!'铐YY$@jMvt	wpC!B9t+/{`U6nsH|PK$    PK  #W            1   org/slf4j/helpers/SubstituteServiceProvider.classoOPƟpC	(
%!)o:.vkSI"!D2ڲ!Ysss@UWHcICknj{Cn'-ܧBq_8CђM1?n\:ZSw\v\^M.+Z
 `"0^D׸
VW4d0^Z|S5tGdSi\4ɶN%YQ*Ϸrb'q393?wlqʙ/NǶ-	鮰/&*<;	kJ&gTE\&d޺pðvM&wa
`AöQ5a*ɇ@O~7fD>'{)
Ye}Y0Eܙo5WvU=	ߨjHWWe\`'6đ^װH]EB{V(xtV:c4i91Gò-AqHEEN~+42P+i4zgcP%L %^
cm³Cu(<?~}xwt*~);G  |GPK><p    PK  #W            .   org/slf4j/helpers/ThreadLocalMapOfStacks.classTkOG=]p0<qy@@H8Ҕ4bıݵ6"U%vTPYZ{sν3_'ylꅦ
#U2+_.5⊂`3h`^3J>x`Wu|HʧjT,UMzbèngF]Mz~<ӵʒ(3c#D7	p4t^"ȜܨK)b\PӴn
40UdV3kMd
F.&b7E[
EtCr[Yk.7+eJw")ڨDݨWmB=:
ei{nycN!DV)X)K9x;1:}iX
|٨7,Sѽ˙,g:/e:?Vc)X67wMk-2,kVQV/9]L
/C#mDw;?|I>@ަ	NkguX%ɞ"yD,@qrtS#k־x]/j[6җ4(HNtiqyFso"X~iIC
ĎNw$yWe<xbYefuQ7>!3bm
sB	nxGZH;~;'vLzDT`4	fk܅Xj0nqR.rz=os@SH"ʕVg0C~i
??]~7=G'HKdeAM@}Ǧ	iH}hH pҝ q4bf0Y,%Ř]ͥ8P"dAILuپu>X9X&M	b_$JJLt6yN^-q,cJjY׬+_vy})'n_Nc,iG#vm^AsBc0Zc 
eYo3&æmp%zδM/̙og]_=Σ_m{#	fPK   h	  PK  #W               org/slf4j/helpers/Util$1.classm=
@&Q0XZX(Xx5>ò,<7:|z? 2zic%ec[R $+)TsCs9o*̈́.a6n\ees	+c@Sg!"JPKxt[      PK  #W            8   org/slf4j/helpers/Util$ClassContextSecurityManager.classRN1=w@^ .#	AٸXǚqt+~eI4Ls=M,$Hژ@h	s#{C<RFa
H>Fk=_RRMhֺ9d`P:Cacwe[0W]alWmݥgNZzLF7*$v단Y<NssQ+q;Z`=ncN=yioIg0eBia鏫FXg ? \9+/X󞊛(n0"ǤyKF
sC3W0=@F;(}"&+b|YX
WV|PKǵm|    PK  #W               org/slf4j/helpers/Util.classV[SGveP
nD6"1F	"* j\p\et̪{b>&/@
Xo*$? $_wL%)>|ϏtP!#u#kv1{UYjnm!&gReɢaYMǎ!!˖2RO@|	4
i.&ӑĖU@Fg=_?:%/ndeHC@
,]ӟ]B@iخcŬgMu]NKߴ3iW,a@w2]ح!yY?@B|lX^v\kxT	i"Fz/&{zNt6Ƹ2<ױ}y_sаtVmHdڜqurl'㊢:!]J×k\nm?4$ȢS!gy>V^qXdm`舎WqT`3W֊,	kxoPk͹F;Cƌ'YU	 5XS
c5h8%{]ˍL~;#paZr2;)ӞL)RSLyQͥ饼ilMlOMdAAt0Q ]满tghҘah0Ἆ[6CzJjgwWFdq}"M"pIǘK[O
Ej7*6	=-d(֤8cxGsM)e0	Aj6IRAw[=L*|9ӖC+W'syhڇb]`3J|_Jy2wWXuF)3X'ǒzn	DVת<%;
]eUUW3!"dx0!"S
K !5]^k\NR& ˹
jÃx̩*~X
_ĨSvU:o
HMw,g
48]z$Jo2hz@\V{>LsW.7М~Gƒ>ClEd03ǫh6lUe~z`?ͷbQ ϳюx)p@h5X֣3\	ΦT$vF.S['	1yhLy-(Hҿ'{=< @PoEm<H_Q1yJDp - =#؉Oۗ?BvL,܀$1F !oRrcK	TI}.w:+_'T&x%lG`@yA]oWնD/g*o,yzO2u(p$hIPS|4L54!B! ԈrP̛qqA5I*QCx?r0u$4't
2!ZGAR>f}OCald`(y\XJ2}+
h+>
H>mZVBgTG[w1Ao(n \Xj疰,8e@ji20W;Ҫ
PKL    PK  #W            '   org/slf4j/spi/CallerBoundaryAware.class;o>Nv&Ft4,L}Ĝ"ҼĢJĢTvFĲDļt}FT>%Ey֚a\Eɩn9X,iccd`d`f Fl ;db  PK
ͅ      PK  #W            0   org/slf4j/spi/DefaultLoggingEventBuilder$1.classRn@=PZZL)*l@Hi⢈<PǢ3MIX B(+R63̽s<5=	$5aX%&dLa\9k^*,rt`0,תs>Q]oh+"0Jf90)όxusn!qȑgHu5p7ʠ8-,Wn>|-ɽ{gt
9Tq}pV)(%hvpf,Vm%7 αNWɐ_Tzn&6sB5 'ړ}$e;\U|.."|csOGl^}Ȼ	U=G!MD4,<$CKt|Qݹ[fH8	6MK?p#ԻthfAD4ӯbsXEk(-m<Nh=zIF&6vm@?(uIGi'xJ.Ϩ>gPKV  J  PK  #W            .   org/slf4j/spi/DefaultLoggingEventBuilder.classX	|&1rHQ&!")*A% f,lv.Z-jgP-
z
֞==Lfwa&yߛ}ǟІP
bTm7Q=n=wJ*-"xg*4CS7íhۆ`uѯ`<K6T$gW4jIA׮BqnCtC+T47mŷxO0ShDni8~z_2(91(
GFrz3Y
l5v934ԡ^A9-tԀd8%s/qhPq0SQrH*bd$kN
F#'lhr\$aw Tkx*֧Cw'MJ"ٖEl*wGs4$,2#Æĳl4S(a	SwDP/(5h/pK]"r<fP0#;3wlM"/ְD=nDh$\vn+q&ޯKY8[	C1:LSrQ.ӰPpVZM
m:Ĕs5D75;GGj
aMvPIc@ d%/\؜a.6mєBK6vB\BЋZ(kI/8AkLdQPtL
k?SVT6ب!

9u5nEbzT[ZcPLPMAqCg2u]&2a+3zSas!2
~Lt|HÕraqS;pr,EH"~
t<;[2l:k8nPP
@#IԓqS,L.y~#>&
7Bi%I)Z1Snc۳\p>-n9Gvqؙ~
QEQZ*>RI2A<sy6Cva]7cD#&]<cӰSd<]wkkc`B>*i/+C:z9R wwmOdwyVfMg*<5kb#NHfD۝֢vj´<,vV
G\SR	RE_\K. A3@Α@4>(NڡM4qAt-펄cz2%RmɄ_Yޅ c'Jc΄s-
'{&vmRaD=ɭԂj[UVD8Ѻ̱.\\6IF0E#zh#	v=0xħLO>6ït"ezYfuYb4f;s{D/8y
]*/NjH%W,ExK#"B3o1tb)H#z8|W+yn2xONg^(8bMs^Tfi~ P6<Þ:k:/%(,l mn$iS;e$P"OF:e8牣+x!%[īw6y67Lୱ*%~`ԓz.P+3@+J|/l[]I{l=ަa+7~5ٟa1T.lleExu@Y&Hzb:QzHIlOcnB8ǩ*z~c)ØlՎ9rTU#40Zv=6tHǫ߁YH	k4$U*c3~یh̄,b1k,bb	.hrBX`zx=~**H*5xv1m:"3m
ddЩ¨7u7tLk9Tk'ҫRSꗼVMgf`7GqV;1IBZTm(	wr2
PqV{Nf:fWuJ=?g,,J%Z`Y!m(n~t{>w^1VW;'P4_m>W==RZvX;߷>Q~X2҇O'?"%~_ݏ/L'.}J_AZ|#Vq7z^*v? V!,.l9xqcu'n>b+8T}K*+odp#-~G>ӹ3MK;{v#g2b
F;wPB]`c.;NFuVD/睏3G
w3`˚ݱPp'DV_/[F{s [<\6A	[GX	,p-Q,ѝ⽒Gp/Pܙ'q_G1OƷL^E%Wu\s7lŒ VQa=(!<Vjq(cgE;x%"V0,-wPb	߆&[+8iuvN岼]9k,_(drsP.~lY
]eAG]9*"^j?tNr7Q}\¤O>jɉoߒŒ PKI
  ~  PK  #W            '   org/slf4j/spi/LocationAwareLogger.classmN@mU*ZZ6&F6ݱJ
	BB.\N3Pn.| x!5Y|'d= c8֠p.Ubikj2fe*skwep co,O?x\jAjcEkb?:^B"dy9gb2е}uwS
Us_
`+d&-S/\ntV4OLާ\HpbB|
pOAڠTt霂jO
xx@}@;\iGPK-    PK  #W            '   org/slf4j/spi/LoggerFactoryBinder.class;o>v&Ft4,L}"J̼"vFĲDļt}Pzj	rF
My(֌:sKD:V 2ҁ:KS2sRڱ8N	%(59$5ge`c y$	&A
 PK:ĵ     PK  #W            %   org/slf4j/spi/LoggingEventAware.class;o>Nv&Ft4,L}̼tײԼĢTvFĲDļt}FtFE
T&5KS2sR0, 42X@ PKRވ      PK  #W            '   org/slf4j/spi/LoggingEventBuilder.classTKO@M!ᕶ~HHK
$DApZaaYG`Ad`}z j^ЈZ/}4B!7ݮTzk\Yt{[dڸuM_(o53?klI+u踓6hl):ot+$Q17Wh|qn9'#5y:ɚsL
.nGM+;RS
ͩHj=#1ܒ&t(?ootZ.01dZ*-7W*nfG|%\ln5{
]{O H
#Zzh\s-GP zQi1.SqMBWDoR
ÿKf`6}v!d]ĹX`PK)    PK  #W               org/slf4j/spi/MDCAdapter.classRKO@Ae>*ȥMMEº,5 qvCi1i0|̓>@
Ǌi߳"ZrD	4<:O?y̖x!Mpr="a?!%^#@3*PT^!OAH.Ghv,]BTWLs*H*̅Bs_*qrܳ@<Kե5XӤjufwgsK׀zx?E(2T5lj[-ב]Mh6i~'߁yCd_#?PKo|M    PK  #W            '   org/slf4j/spi/MarkerFactoryBinder.class;o>v&Ft4,L}Ģ"J̼"vFĲDļt}Pzj	rF
My(֌:sKD:V 2ҁ:KS2sRڱ8N	%(59$5ge`c y$	&A
 PK     PK  #W            *   org/slf4j/spi/NOPLoggingEventBuilder.class[S@϶B\/r  "H\jgǇPB&8<@ptr<YbZ69߳g~	 3 Bh=΄"RbgX,dU6	ccFh0DQC.%JqTٝMdUJ2e@	4ne72NHOL2^UE44pl _ә@hM;	ddU̚g]1d%%l	,cҏL,)G$hdbRy:>"Mp#@#MCVZ0dMMŢ"CpQzB	tx]ھjK$m%YR=]U=Z7y^PLn9˼k蟼m'yy9@ݙ.ejinbk(ƚ` ά#]D'`A:]x &`mT$]K>fߞ]o;_݂	tbW.3Єa.
zOd;!Ik"s!}/w2vRA]dW3.oR5AЏL }$چ|KrMHp_I :?}vAúpB	g~ǑRC΅aYuB7>(GSpR^WPʤp}Юl(ĸAg;cq`'\oԻ7qxK]<cju8[BrX+9OW&t$gg,c8K`U-G29Ć[4$
'©R)ӷ/tѷ蓛l4B,;_G[Fg8gĦjiܯq
[(k,
@hػQ'_g6 PKmO  [  PK  #W            (   org/slf4j/spi/SLF4JServiceProvider.classuAK@gmZ S{q/y*Q&21ddП'*}}z (8wlu]<+I7	rC)޳k(C`[47х){1bY92wl6TIK,<x~*?k٢rMTp,\3Vc*ɓ)
l+#*:vHО35.;݃N'p Ir`
PKY     PK  #W            *   META-INF/maven/org.slf4j/slf4j-api/pom.xmlVmo6^!,1a%A Xa@VtPFR }'%A
{ܑ
?l2A֠4yM@Ȕ}~}߿% 1sy+csJ3<`KVH_oYpR[맧kwzr2\ߢc|kAsmk0c{3yb]LAQ>0gW0oJUc@CHY0e%kBQ8Sujlf̬ uZ,ҶV+T
>(Ý0ydK$=~`
҈V˳_ȴR[txQqW@l6]KV*wFW\4)Y 	iFf6k]صj(hMhnrCƇKo/TlwTm</.GH[g\J1UzX(wX	h6(S=tB9h<5ix~fin;>=z.$eu.=æ4/`3}<Z+!ٮŁR(@Vx]׊݊;-@ͷZzTZ5ߍf
tzX]EGg`yY vB^^>,{7zJ
8\o^z2!F=uF1|Z3D+<alk@lt}b~q7_CϤ#o^@bx+@୯=.VVΤmOsaՕn~<
IAM\PxzJHٚ' $C(QH@kFG-M9hUF
fJ9?m}M}  m~_ECPKP      PK  #W            1   META-INF/maven/org.slf4j/slf4j-api/pom.propertiesK,*LKL.L-I3M,J//- ER3l, PK2   5   PK  #W            %   META-INF/versions/9/module-info.classUMR1_ 87CY,,jN#r<E&h/^~?? {1}7z4pȍkJr9٤hZr,8X "~ˌ+޾
t	\scz	\9N1 \sdt򐳭t3k*`aHsOuɄS;!9fxV+vo~u݀y6D'$h{pux}'9 PKo   M  PK   #W[ >  C                  META-INF/MANIFEST.MF  PK
 
    #W            	               META-INF/PK
 
    #W                           META-INF/versions/PK
 
    #W                           META-INF/versions/9/PK
 
    #W                         
  org/PK
 
    #W            
             /  org/slf4j/PK
 
    #W                         W  org/slf4j/event/PK
 
    #W                           org/slf4j/helpers/PK
 
    #W                           org/slf4j/spi/PK
 
    #W                           META-INF/maven/PK
 
    #W                           META-INF/maven/org.slf4j/PK
 
    #W            #             E  META-INF/maven/org.slf4j/slf4j-api/PK   #WrzI                   META-INF/LICENSE.txtPK   #Wx                   y  org/slf4j/ILoggerFactory.classPK   #W                  O  org/slf4j/IMarkerFactory.classPK   #W@%2C  
               T	  org/slf4j/Logger.classPK   #WCi  C               .  org/slf4j/LoggerFactory.classPK   #Wuh  '  #             -  org/slf4j/LoggerFactoryFriend.classPK   #W~œ                   /  org/slf4j/MDC$1.classPK   #W#                  q0  org/slf4j/MDC$MDCCloseable.classPK   #WM\6<  
               m2  org/slf4j/MDC.classPK   #Wgõ                 8  org/slf4j/Marker.classPK   #W&
                 :  org/slf4j/MarkerFactory.classPK   #W\   C  )             =  org/slf4j/event/DefaultLoggingEvent.classPK   #W̔vJr  R  $             D  org/slf4j/event/EventConstants.classPK   #W    *             E  org/slf4j/event/EventRecordingLogger.classPK   #W V    "             K  org/slf4j/event/KeyValuePair.classPK   #W1                 N  org/slf4j/event/Level.classPK   #WƋkݬ  0  "             R  org/slf4j/event/LoggingEvent.classPK   #Wyx  E
  ,             T  org/slf4j/event/SubstituteLoggingEvent.classPK   #W~	  1$  &             Y  org/slf4j/helpers/AbstractLogger.classPK   #WX£>    )             c  org/slf4j/helpers/BasicMDCAdapter$1.classPK   #Wk  
  '             Yf  org/slf4j/helpers/BasicMDCAdapter.classPK   #WEɋ  Y
  #             Yl  org/slf4j/helpers/BasicMarker.classPK   #W=U    *             s  org/slf4j/helpers/BasicMarkerFactory.classPK   #Wd    (             9w  org/slf4j/helpers/CheckReturnValue.classPK   #W.  C  '             x  org/slf4j/helpers/FormattingTuple.classPK   #W8O    ,             {  org/slf4j/helpers/LegacyAbstractLogger.classPK   #W`    *             }  org/slf4j/helpers/MarkerIgnoringBase.classPK   #WG  `  (             Ȃ  org/slf4j/helpers/MessageFormatter.classPK   #We_2K    !               org/slf4j/helpers/NOPLogger.classPK   #WI[M  H  (               org/slf4j/helpers/NOPLoggerFactory.classPK   #WLӾb`    %               org/slf4j/helpers/NOPMDCAdapter.classPK   #W=Љ  k  3             L  org/slf4j/helpers/NOP_FallbackServiceProvider.classPK   #WMy]  7  '             6  org/slf4j/helpers/NamedLoggerBase.classPK   #W  	  ,             a  org/slf4j/helpers/NormalizedParameters.classPK   #Wx'
  ,  (             X  org/slf4j/helpers/SubstituteLogger.classPK   #W$    /             հ  org/slf4j/helpers/SubstituteLoggerFactory.classPK   #W><p    1               org/slf4j/helpers/SubstituteServiceProvider.classPK   #W   h	  .             Ʒ  org/slf4j/helpers/ThreadLocalMapOfStacks.classPK   #Wxt[                   B  org/slf4j/helpers/Util$1.classPK   #Wǵm|    8             *  org/slf4j/helpers/Util$ClassContextSecurityManager.classPK   #WL                   org/slf4j/helpers/Util.classPK   #W
ͅ      '               org/slf4j/spi/CallerBoundaryAware.classPK   #WV  J  0               org/slf4j/spi/DefaultLoggingEventBuilder$1.classPK   #WI
  ~  .               org/slf4j/spi/DefaultLoggingEventBuilder.classPK   #W-    '               org/slf4j/spi/LocationAwareLogger.classPK   #W:ĵ     '               org/slf4j/spi/LoggerFactoryBinder.classPK   #WRވ      %               org/slf4j/spi/LoggingEventAware.classPK   #W)    '             f  org/slf4j/spi/LoggingEventBuilder.classPK   #Wo|M                   org/slf4j/spi/MDCAdapter.classPK   #W     '               org/slf4j/spi/MarkerFactoryBinder.classPK   #WmO  [  *             #  org/slf4j/spi/NOPLoggingEventBuilder.classPK   #WY     (             &  org/slf4j/spi/SLF4JServiceProvider.classPK   #WP      *             r  META-INF/maven/org.slf4j/slf4j-api/pom.xmlPK   #W2   5   1               META-INF/maven/org.slf4j/slf4j-api/pom.propertiesPK   #Wo   M  %               META-INF/versions/9/module-info.classPK    C C   N    PK
     	4            	   META-INF/PK
    43        META-INF/MANIFEST.MFN@DOE_	߮u) 73;RbO),ݽ5k)`+$Bx<M|JXG]I)+{wgӧO9+FZ9yQ8^.pgM=m
[|Ǥ
/?{Fҵl-~`"x#7g1_\šH{
|/f>7kɥ5|PK
    4m  ^,     META-INF/LICENSE.txtZ[s~rSi4i牱䆭CiDn&% . =dwVM5IٳE/˝u:^<?utBMv<h7W\6scʽz~ZJY]-7xws'>qw}{ws-~]SW
	j.T;=rnk3'	M#Z%;1Ie['dWtbtVTc_^>[i7X{!pKUAUB֌۝N>hxΔcX/cO+Mzw
P	 8s+lv[z!S@me#Ic$핐%I	ZY/^Ao
i
!
RcWҴ$arxùxg,я71ɪG3/eFGqB_RW Y*;w!#J	N,`E+;U<׍+VN$ٹe	\hЄvGI%/i;aA: dAFu`R+'3=6L\Z]^&Qy|x[<'$ְ[	)GZoUkM[p4IY3htqw3r!8#A^?Pv;Q|lpcl(?jkZ	Q9|RoRyH\1=qtLH^cBRs g'NPn*-pc4	(KҘp#-1bZY<HM?å>dąn`x8[
dV9X[BA[/eΰⓋW#$Sc
Wh7; 
$AP|#:Tp~*܊܅r8k iՃ&Wbi|66|y6yaX唃H!K4LouNՓ/ı0HVRT)h:Fj'2㤓N D%"Ѩ'Ju"9S6/'\Q6	pHd6
~J"KQMm7n ;<xAEz>h#ZLjDe}5ie^f^˰H5 腍l(uD>[_`FWPhd!R+K:"7@)AZV"r75wTXBJ	v?V>f+kF/2DAfmprtTiǖȏx4`YC<Q\ьBM(P.#PDaF"l"4u<vR܀ѦblPFEHJ$tmKr7K?Hp۷Yf&KTIH  9S 	T{\3KǗz'spxY[4S"Tsᆡۂc=	%8
+B@߀\j}E޷4?b1ϔsv3J\2`r"KY3]a;6u<j ~Q1<Q`&M>
ʾo48U+lv8"	ɭquNZMY[@(j_`)_DVOˎq-$obn.5?B
c::e[VAn%L T"ƹd0<FiFO</E#nQ[.`|GQM`ŝo29S1LŦ(ShF}F#/yUquEX.
ҰO
;Ou+	َQpPn3gXi#l6Q!7"Of.O YZ!2H
V)rm艸z셼䓎i[~ܪZ9!TR}8$2d{&Qi죰硎Aw'=l{([-CeU$XxsSw .8nKձ] ,V
yS	
!? sgAU-T<&3pINKh%Voճq {c=rgٕAL9,+ZO	>)Y"(Ifb<2Aŗ5sgJ2%S/I
6}ԔAddITgu>Iy=@	]'MTũezٔgTe
 Y V/s0#Pwa_fM[8"5P":LflȪ[w̤ս$
Gg~
UjlmDL ;1`D*虘80O[5Q*Ұ	+s
UƑF:ag|흹2b1]hSY<<ъӹJ$ΦyI۪IgD1&cةu|K͎	^5@7:aRcK88l]%;rmӚyEjf"Vׯ̀
՗vKR͍P_ad.1)X1D[(>C#S 7Ī|t{?3]B΁)wv#jL_5lqn
N}:CC6ժFo;	tr)~4jVQ+bӁړlȦ7_
Δ ԟJ;jҶ]1	7yc`HKa>]Rušq?ˉs/q?[r=?,u07bu^ZX~_h~K'ф+U6&MDsRp M."{
`z\[z?]߽\|B~u^N~Y_so@6t@73N<gMo5s:p
хP%<mt87vΔ:Ei3˱9|&E.ϗXyПn =X|аtN;,!tjh`_,mw1g!BGmq-v|~0zNeM Vr;J@z9
ֳgH( |gx!ƙjwXc[F9FygfO.Z5&~l^9R7j$z"xM+qxea4]
 or\,J	h",)>OB˝1<I䲝fjExPGʮT|ǠwՒ4c6Awa6Boy̗Z</Acc'ĭd43GotMv9!4(KL'ݢ$DO,L{&]3>csmhJЮ
`ՙѹ-!Q ъ)Gkm&CW*QӹF:-l>ƌ6F]8WWXWϽG/no?ߠiZ z/o>%.(kiBB>F:Zr
$;o)D_gh2!Nz..L@A.uԦ:	@;vv7"zV p6/i?'
(Nr@!c嶋hfqZݨ
ݐM.r4Fa|_PM<½kϤ!o9e/UBzG>HgO*.("#\<x61FT8"ufC29م@CϽrj}T%_П3NpKH&h
ێp@	,toiI\PK
    4BZ   f      META-INF/NOTICE.txt51  Wtv7?@ZPE5&NC\ņT!"gBoy9[aJɓ1wmfJ=PK
     4               org/PK
     4               org/apache/PK
     4               org/apache/commons/PK
     4               org/apache/commons/logging/PK
    4lI:B  r  $   org/apache/commons/logging/Log.class}RMK@|ۦVj~GmAzTn[lR<Q(A{03B?>
#y.TWAwcLdgw%efa,wgR@3Щ|\'Sw'Fqfa<C
Q7/*0VRIf~lTD68x6kɉv\kE(5p9ƴNFaIB;gYVh쁲eb$ˆ閷~?_@=Y^ힻ9D7T'xx 
l2o2o1o1o3o3xx|}}i}+pPK
    4V\\v  "  :   org/apache/commons/logging/LogConfigurationException.classSn@=6q^+JҒiMK>"*Ѩ/q\%vW E G!f7E3zX,沸!a]m	w$lHؔLaBFZ	M0=DfedDe˸&
p]qE3(|;1L4k{̙Jޚ&|aa%xz`+QOGaX/$:%'#ȳX!N0Xjaeتr"jRSO-{7}Gl
e.ynݱC}mք
fmlVjynhzMfƅd'yo'ɘ6wkiKY;)UNe70|)	}3H-6鄦4UxHf3u,Ѓ @$JAqVHdY}'ZpHLa	PTUJO)+EaM?P:W(و{XJȓ]EC2WAVY](j@~ZJte2}z}c=6H(آPUBb ]Q'Nr85F[њC}L԰aF,PK
    4t?_3e  X  -   org/apache/commons/logging/LogFactory$1.classQKB1ѓfiY]iP #8TPx?8N[LUWE~T3+۷ǳw?>1v}l]_R	%,PC`
tB(h4IBE\l+g.ABHa.	sҍ\; Oʡv<qH{-ѸKH3CQzz^E
DـLFJ&AHXgIA5
SiFm^sVg30G9)lZL,4+f"8\нF=\DSx;MW.p:;zCեvͧb+vhjA)dޑG!uaƔ9fPK
    4åA  G  -   org/apache/commons/logging/LogFactory$2.classSn@=8	.nC\KPJH"f8[9^D_D+u,Z(ΌϜ|㎏&M
Tqљ 
. n|g<JyDoR>0tN|Myǚ韀֨,;i=Uz$Y&M&s0V|=Ôkg3Nw@-xzrFda$XFBO&:ˣT'	DclTc0XZ%ʒ˰z(bjGoL"G/U:c:W엎LIj猧mqmԤC-~FB
7ព?*4W,y|G{;G,dk(XPq,"WR`%B#}B׽z(5\&b1PK
    4    -   org/apache/commons/logging/LogFactory$3.classSMo@}qbL]ҔP
@JP0 RJC}㬜loeo"_?
1R"̾x3_߾g:xZ\X3f
6=4px4;:Xch;c>A(x7<1ڝ#^Hd@g2z&ӾCRD*xBW25CyO|"+8De*N0Za_f5
y|3i5yU6{nrʢp,P%J VQDUѭTI}iJT!J$|>"YErٷz,>F"dRςRZaZ0l_sRzlBuz,%)[񢿪<xA{eіH*v,:
,tJjݝ3&
%¶qy(q(/
Z
'X&Dw?xHq?95+dKDPvM-HyB6iWPK
    4+SA    -   org/apache/commons/logging/LogFactory$4.classSkSI=
Y.F
IA}/D [oͤ5恛YQgc5V}>3<6r0o⺉&VL4jbDD-Ø`?Or0)mY9U)S0ccl\\ô;K6Xd-7}<͝q(vj1~(j(ׅ况.Q0TwjA!
({_65e@VUK0,qŞ.,>iK_KXwe**ؕ^qDz0=
{IgG[|'ֱl ͏
hoP'p\oPjw:wcv/rC:D<XO٥%*	]QXmK!]WDQi4{{"h`cy"ޠ hc澈R
:xng਌$oT5G{
U'F;vd"MHI(w(IOVla;{&;%U6&	;wNoX<zG@ANZ+q7@OAؕsUciՔ0WZT㷔*#+pׂ6Γ
rco9zq@#Gӯ`>,Y<_`d8IG8n荺F!1	cFSF9,X1X3ԍ2cg5
.SpELPK
    47
    -   org/apache/commons/logging/LogFactory$5.classT[S@)!

T-B%(
DU
"0!IRF~Q`dGQg" 8C;{6| sxbDŨ*TRZŤ)
5hFA:ɧvNߒZtHGg4tH4:H=:I9:ѭc	91T:c-[,+ة1݂íLѶ[ :^ԕ2 yo=b.4M偱Q۵1Iro1}
y
37
Z@)cE6tLϖچ(dM+<ǐ`E%vw(,:9Lڊ(yڒne
y`[ͫO"A:7$-1-~r7En2(#|:),':<NU/Nx1{=Câf\=,1t>JS=7ǭrUM9$!k})%eJ$֯$	mB#(ƠN9ЊʻCc_4RP
/aLl-%.<
YY%+?ӥ}_?Ds'NY?>?DVc1>zF9cd27_UQ3zR3%2]CLɣ]G.e		-ze*kDYIEuxC3&qMz?FVPK
    4=ͫ%  R  +   org/apache/commons/logging/LogFactory.class||̻ݽtz`M1 F
jX8Nҙӝ|E;Ž6^q[ nqKܒرı)yw' +̛73oo}l/~c
:6ؤc'آjxkut\GV:ӱ];u<E
:t1cHnO1cDǨuܣC:>Ouq}:1g:?:Eǿ_w:~?u?:u!taӅU.u1D]d©pb.Fb.b."St1Qt1YSt1Un]Lt]8NMEP!]ܡG?ŽO}8t]tũv]D"f=v.6f8.N3L8.ζsb]ls<8..vq]\lťvq]\nWŕvq]<`Ob]춋=q[.s؈P8F.n9B..b*؄*4܌vй.8:`;b*Fp1(@6F;
cxt8a\y`9g.2L#p:\h.b"[0
Fb;ű<:W2<80,bE\;\,Y+ep.3G˸X΋`*X.+U\5e-岊YuN܅gqqsqrqq{"ps[bxSNp.Bb(Nq<%8t<)Jz(eSTjFU?vZSNQ1h.~xS4qt".nuո)Nq22~X7;z)<xSOs6f8E^L;nx*&)~DNq7F;Nq7^13e\<ʬ>ۜb?S$43)^WExxQsg׷7Wr#Eܡ;CN_
x"wu{=`(PDf}D i#h~OvҸ?
u,x՝͐Һ]؝00#>O8Z78ܭ>w{(l#$CRn"n%.xd;LJBz|᰿gGf1p+?$2+gXԽrOzC]ݞ5G& d'Yjtqh	z:|&t=&Y8<ا?G7Sq:,w
?r/S5`"#Q_!u,Ssx ALZӲm1CD|ޘ+D~o
FHY6BѳA(YvJit6VP*0mP;n(s(%BeдQٳNx
`Ga)\D6J.DcSj[Oy뉗`ǀΰFw6zHKǢ@ay0{X*Yrl'5g͢Pv
I)HPGQTcejj1ٳ֤#{bv@vJbR9ZqƘ?TXEiZ$Hg&kcTDcu>mV|>nՔt@AQ4<BFFm;$8Iq0
3	L#L>-H.L3uM!'eY-]%PayȸY>0p%0LH~nZÚ"
[Pͺ3HMJ:tFIIc lVuikYg}⡰YeJE#6%59b8xoG hǛ\08H6v0׃Nh9>#HZnE!:rܨo+^.^UUPNdUǻ#,A&7:S<<ᨧУVy;:]RYl#]{|>&4kH)͏z&O FIF{R/%ɡoHʋVA">xyMm}CEiujW5囼neť
u-D3*F$4ÖYEKN[Q\|]K2n/Н*ΥCP(JmCS͡3k
l\#(xEtܯHC|K%q|ƝaYEмx"<#~{,围{<Q_8Rp'l\B|EpVmĺZ}>TtQa}mfHVbhK8ɾ=%t#؊)J=hB;84V&]i>dN^_$bo"mi9vr[jBr2_	JgI&Y:bg]qr6:hYSي`O+O×"	2RiB	r;=Ze\UEl<a?4uy%x;%tYeuz~uyCq~E2EOjTHSfĜZ`N-HNe]e9٦UFdw3nDnFRɆ<ǰl'Z'3CuMd7tk
Jm#Yqe䩭G|iHje &XrAMƳm!2WBwԇbaAZ,On(-2Ķtŕ!3lHJMF=hcp'u'v"d?[gQFw֒G5vC: dΑS:]@OK[is4T6 
E1ȧ+]y
2
RnhPBXXI8N${y}O0MG<yiAdd#̰fb6WKU5Ѝrؚ2wi|-8fMic}CmvیCVWaHԢ!H.]n?gszIHZ\O{ғO5$$H4,gP}/pWD	aGgpQZRi&gb>w+zV$kkֺXD6>
Є(	-
d;f1eNcFf93EMD@zg|IÚ̈/Q.#NqmL=[9kwY;[Дθ'!F}MUmme*>VsuZ0	a FL*N}	wCKi-F{
9RIFUe=0Ḳ0%h%B}OW"Ig!)_L2)
m`
MkxǜEtNAM! l6(6<S+)2o220P 3fmfa#k5?C8(( ~7%ק5/4mMw"7Ԑ	ʓ\2S &4x@<dHt(#y(|=fKɰ_Bc^uvw
i2	tJ~F<jqA8̍7"kiHoz@=vC9u2 ?0#v3n/]/{m0Ξ )OHUH5=2oǚkD]5(f+E9V#o&lvN&|ct
|a|' -ahSfZ0zZ)niՐIZ#=@V*O;M}|5aBRA4)5\2WJ
N.JƙUt#h{:VI7ɮDBh>}48Bg)mY#5r Ulΐh!t&!*MC|̮eқǩYMbNF2w^BPY+'oм0*%sAְx5)Ҹ?H/7'fAiSMGn6$,Du']	KiEa2mZcLZ\7b0Q/o
.pN<#mTKF^{T	77:_j8˒HӍr~?R;Օ71E,~!>1j	l	(Stu,!K%ұɌJEL_"1Ò%mFb!.AoLr#|4`I"L:T֗4m})KLSp
M>0_V8,4dpO
;Db8[ďehR*<])]qe|#=q]ML6O@<h"l[p&׈i8Id:Rd875P3ɽY<JcMH͘~=	OD+DfId5<.Sm4Eаoc"S#imd--gr#q:~YhM!l|« fa
{$vHeqFpPl(!!@:"1#sĐsr)m(F	G|q;u͎"ft[uh<,7P]]ôn^JI'uMpW
9Z1kuzCQU48܊[ELi9k{J j+##cL懍;4n$T`h#r
(RP+&Cn*ن]?f^/
=.ߵ4ďm@|Z"ӖvOZڧR)K&g4
Twvw&>k
; oigQjm#<<Kϧ{0ʝt`oCH|2>xﶃ:h<pjBrǠD{VhO@aN+Ae!=nIdr ϛTdmu2Yꦜ	I2s%){ٜ^9v!mnv8=v(k r㸶(&߁0)1svU[h½
BgkXpr;`H

)*: Nyv(z>u^zQѫI	-^Y@GRAhWi4'Phh꟞jrwc\e\V9SS o$<;>9.C,ُ{KC4M2y;㩙Jfp\ĸ("2Sf̎{#^qS$KiFM%!WuB]By gPuWQ^W.Rg|9 DȀ$BLД 2@Ɇ%,V`+EY~6)`r<ܪ,;cv+G)Ge_Y/*ke9TJ
|ʉA:F4aRp*'J+*\e.V^c҅J7*!<C-ʩxK^IkhZ٦Ae#>leL|G9܊Snϔ;KNr~-lN#ʽ¥')ʃbK,RCb	Kʣ}2*Vȣ56 
q-Yw{@qX,_
sa `V8]젹
6{LN h=+ֽIlJWެ=+\ԕ*wQͮ0w@ԛ*y33U9Ɍ}p]^2g:&TҴ[+EZK'[('p,F2re0WW,Bup6A)6C%HhAvBxVѐ!ڥb	2A}RX3ϏS'a\R-վYy
.<<d)`
9|8_UDWДj`6i+	b[Ln;wmKVm%0mPdk2[zBmlRJ9ķ}\C* )-iSD~v4MA
ob,NskKMui9u&`;=iNƎ~Nf*wW?x.qv>hAK7^a_|I J(m\|7vUY	i~5M:˄MKLR$4Zrl5[HsHإfyM_"4H	X=l%96iA2G'"{(3🼃2NvZsEz᭢!Vf!Y)9{Cr8˴3k~bV/{ݙzBcpHNn BrQ-Sd	;H
=$6ov|Nl:4 e$e.OD3Pk|hr|{aƎnBj
jE]M0Jc3az6d@U<\XKD Bz1ԫBzK F+az^
upz=ܤn]xTSo_-z+;S.Vuu'S;h<F'8WE:OPj/V}ؤ>?Pmcx8ԧvCc<ȤZa? V<чa0)^H˧*~A}vȆom4C@<BX]Bs>f:ۼSPm}$Фpmm~\z9b'd^ڒc.UQ<Sf4Q^ΩƝӢd*`M酟n;{ ~ -%Y9rerL,ZIuHm6CZ9ޜN_<â&aA[VO^U֓Xcm-`c>8"Ap^H	c{vgK2Uڗ\Is%!uL$\˅G"-"9qkm
G3˻8j7ZGkT$x[0.'Iȱ.י5x|*Dzv/0<8"5eV(clžm.G1Op1`	1g4KxPy6-O'xr2B>e:
r",r*nvB#>h)NbA)8-\?k ܎]Կ_^d}"#'(^|"o?&J?s=*t8?B\8	SKkzOAYo;,@qxPqаMC0"Y8B1:1ox?&1GǇX8
3]&ߋ|Xgd 8;qP|(Q$b8J/r@,sE	ՊizQBs"EuT6zib6᧟
KD[EH\,ԾQĤ%{E03"l\4ƈW8"3D
iZ6_oQY{4eF΂)s
6>*
fmT
¢NscWXہ\M/>M0٬E`|"qbl
	O(IC`>c0^ 핤7	q%V?LjLR0 3:IL{f(Ym#-9{'>re0Dm#r}8? DB #-9{a|Z?'U`!6B0vV4&<[$\buavC] Յ؟&V_`T5A<;Yڎ9 wq]MAZBʉ\Ap\βeJd`2Z0GYF6F
q6dDF@}K"kv1] Pr Cy+/hzS^0CT^\U(T^a9WRZU ;	m(AL ΦV;_.PW(vzH}(WpQ{oFps@t#qu_f2FmK
VA\qTs_1ky=MM9ȯo;05/왼6Pl@>8Nٯ6&?YMAIv8mg7}Ɩ<OTd%p,,
&HK m}2WoX-D>V
="=XF
}X~
j/QNﰞЦ~lDBE#}_$*C!b0QCn$2RKgPaOzX}F/͓XRлTios'I, et56&t_vWr)0U˱!*
s^	%t]*c8Skn"`mi)6b4rzVQ}jDRDz`+zҚdiͰ^[ad8C[
gkkaVb1d;y)4R+hKmZ;F4c2mȤr<
szϒt%m20kSaI)&˔xg,&s(, }SB1RD,]Ob״K-Юɍ"l<deS&ܜw78]B{WiwqLJR^w0:m$込"J=Z'	OFhA8N;0{}Zh6Apvl΄s*m+\۵FBC!.aviGcF7BYB'L +M=-` /ݨKP-Fi9mn=);Lxt(\ȿ	e8IcВK?۶,rKy0J^C˥}ƍ9 ClPa#`ܶO`Sk̷l*9ھ5N0a2ǵrGj3Ę nM@5λ!3فvIɘ?Cn/!fm͠hfٵlq͉']RFyo#Y+E'?&gr&O@.ʯSIϚ0WFߛsIDthT}Cx f8j/I
T)N&Vyo"LQW74kCS/p'9O9OSOg^z ϼ~&lMÌ$\ݏŊ9
0Q3Ktx|Wax||V~D	F8QDdg1&h3ͻ3KCjn07PK
    4  
  *   org/apache/commons/logging/LogSource.classWisU=ä!d !,JٜK a!4fdfz'.(h_2%e
˽fy%ɘP}{_/ex#   
 	9URqQ_*TqXC*V񢊗TD-"Aԋ\Dk
NL;hĕb>ZI
b׋
bUܨ[
I4Րf
nՐN
6hȢWix7k8*F
ON
)ix;4*{
7i8]
ڣ`aKk~P$t"ҝԳٍ
M9NP]WP33r~-,ֵL۽5jىF$nRV:IZ-"Q+!OruF:]`CnF5ς+f"pW2	ђ6'I[:v.X6w[3j[*"+6œftSP!CA&#cq18|o8&)i#K3]$uY_֝[#<mS(<>+gǍRr4q#0莶b^V<I~N0
'18ۤ]xtT߲cRK|KoWKRPCEz:n3F 	V9s1l'Q04JܮvJ|LMrXPxJcIs԰7۶P±F-(-Ĭ\|x[.LMks+ٟg#*TmTflтU0oҏp74'uP7.z5Nߝ&!jIe gq~)B)}ĈXRnԤC%r6ymV>$6	V@
z3L4ed|cBιK`lH֗ɱx2)#nlu
ggϱl[j!ɯG<>ea+*OΠ~4Z|̧I95COj}RUɥP_4&ҤlX<|b4@9,n@Bra`|59R|
Mb旳F`w*oABE2{O ÃG6ޡÇ
{X݀Ulwrĥq+}en>{p5хVf<J}/N!#A0&g𖖖92Cɒ=d0 of&[2<#z8:Ȟ	dwBwI c/JQ9mbI(R-	G94yWxƁq\:KNL>=}W*-cWF}mH5]-I7
V^5\{'9nc|_vu!\0wJ "wi'meE_[)G`C;%׋A6
7raR~>wb~!,şa%f#tꅨaVU*S
^vH2mq9]]u?YW1QԠ֠ݜi3-c^jVDv̎븽u,~I@R֯fn0.ݽG'Č!OG<obO^IQ%	Uƕ2qh PK
     4                org/apache/commons/logging/impl/PK
    4{    1   org/apache/commons/logging/impl/Jdk14Logger.classMTU/_Ҵ)
~@iCPPvH&a$CmuJ.istaݹtҥK=;	~&?c8ч؍qg1'obR3eqs,.p	xWxU~
G,,V%$%,Hb&s+.@ v]YVłu#ֲ鰩c*WVɨM5BB0aPj!֮g3yH憘U̼Vug$}Fi^t@_ȥʒXP	#1_ZfIM.:ZI:.PmBXaJ۰II,N甄Ռ-z3ћ	uYJ%SS"kTNɨ#Iz<PoTR/u5Q0C2j>:6tԵ j.gPf)KZU*(սi
iٔA9h
PtήtiaՉ:-?Fʉ[`Ve

xzR$2:q\WN9
ᬌ}hсNcHu-%##Yc%+2r,((JX2nᶌ.txA6;<z{,"(гfX>[*M 1sfTjG]]vJ<,7nZtvuꂽdJ>7[e6^Mlvl2y$0o	
6;X<,*eE/)V7>NսiG&LMٓ(uT}`}\ >& h$[;=o`࢙{w{s
k>h Y&d ^ۤKlQO#"oH<?=ympH=A#AR[%VJ[=Bd<0K@]$.q	
N*E1GQ`Ɩ"BN;KAA2+oh5f#ÔaaI"1R9(7y;B;p-uUux!둽;; y!4	Q
,mcB~eg+Bݲiw- 'Mܶ4uLO M(֊)ihKF[.
-NV*iW1] whm];!C4Z ~Do%%"jh@eCZ DZVPM	/dQAbSA[3ABn_/
 U}gx$ϙbPK
    4p%Ⳛ!  H  4   org/apache/commons/logging/impl/LogFactoryImpl.class\	|T?2/`XuHBVYkV$ EL^L
ֺ JŵTmj֥jTbιM2~񛻜{۹O|'阥cu1W<u,бPuT8]3t<S:qE:qAtӱC-:nqxqwKǟx?V:ީxxPu|@C:vxX#:\_xTu|HGt|Ttq17:>:>ouBuLuQ:]J]E.VAktV!]uѮs"!NsI1!r"!"!
!Nw)1!9t8!9z8!68^pBvN4﹁1xY^8yW8y?2u'l7Tzoq6'p.'b>d9Տ>Sfr[94i_1k	\'Ŵo9|p	*!r"DQD!LcWuN9q챟ECb$h18Yqd0PNqLF2mpi,Vi9i	,e"2i48iqݸ˅:KZNֺeх.|W-܅os'r>>X'¿^~]7tW_~&<~~8W \D
*VF5.%'.яK.2pKd  nv1plv4gdRU.1Y&%f`K9.1V$\pDQ]ZM.Q]b).w	?t&lufZhE.q6qwb= oYɻ=m3|!ooS؈zCᘷ}n!_xb&/B9n(o/m47j
h6#ގQ0k!{hT"$iL-˛Oe%˻!3x	5yIb	5YxVVLmAUo 3">?sJ5,Y#c3%G[ 
Zh7ڍPhЭbkQ['fŧ-7>%Tpd{%-h^caZr ;o F|Y:
kJ'in/ƚ0N
zYK*((|:ɕٓ6z
PKa)wMmHRMEu'WF[y2>%b4:CX>X XXh3">VrdF62&]ZrC+S.nT2/hn;k쾷oZ*pp[Aa0BfQ^,Ѧ,<UnlfVIvd;%Ğت>!3SOq	Rt]{}{Xɐi'wOO=d
WVL'U󡩺ѩ\Ż
Huu$yq\s
+BbnS$xAme*S\-[
O#<Oޝ*+yӲOmN#+Tog~2NQLɾd0B9o>SɁ?Q0ji
KkV^aYe+$U֕.]U^'ǢEvQűF@ј/DH"f0
One)m7 A<dUKkWBv n0԰Adk`)b}3i2?6y[ލIFisgTJs'i|*
wLTi	>F^]1<ؙt:,r#S	3$Z**Dh2
"ۭ
w	6|-p48%="C9m~CqRG3"%GXfw'3#n$;Rt1x=46OVhD6	3e:ݪV,PYj%So`rrU/NMn[Y]R^tIadCFl:^ݰf\5r+кRج}	=[j1mf`cJ+_oGYˌfSNe8-A*mۢ<#;OQK]ዴ1FgtDCm-|֘5cʰ&鮢W"?_7_l-+y*YҨ6}1'ff%k'gv9aѾi#[YRE5L~V[MhM=n7",[`-XrH$`\XJa"[f!>02۩dP5"d:Ñs%KJ/[b\*!^k2"i͡֐bDȒ:Q`MJa^a|e_k%w:Oh5Ǵ	/@O峅/FI?#)(%UPwU<s~IL¾}e͒t#W EBԵHzVnJ>^(e
7=fz\eo 捶Jhk3m2~4=DjkoLkk/fI2Bюq	%$&%޶JK:zQVHP5{Mѽ6%fgyԞm9H)|dbg
(,}1)L[`0d{Xj2 l'쓬MH_[YSt=o;Dj¿\:K/!ޛ릟@"1>[h~M&fhn
ZJzZ{}w[jI[oTnj>*XYmn*>rE؈qX=(~mi*tsxNU邗VFhB?BDq5'V d
'S'ҚMrir_2)6|v|v!d
d2M#i]Lfn
O03phI˶jC#"f^-B]27|
,]KIRLȸ['"5nJAMA"
{l"HLeX?X7u'٥fb;|AS6ȕ;Hs͒Bz٫G"D+XÙhV$$Ƌ^C`g2äw=іɚA
n /㗦j MdQ#t9!)]V8)|Y֬Q	Q-@h䷚F/;Dh59<F`/Dr	zX	dwuh ue{8Th}/5=u ʺy:@ Eۉ(LCQ[rőh8w#^lLA4Tl
؄Mؠ^ʴ)z:YXMj1NR[{T':W;,u(+nNؚ	#k!ؾ:=Cm3]R:@%:4B-V;)-6:u{P̋Џd[rHF	LPD.tə0\IJ6b"7ʝ(ۤsZV L?r-J{Z/d~!ck1ڶX`.xX^%;ı3CN
~^6yډ{% |q2Jt[NSv0]p
Ij:I_!D3͈`Q<tKZw{zP/ؗ!OHN=͕RX}1!`Dmd]̂
VS{Ƿ|yO,qQg9&&aj+ ư0GXrT=8%_'=H,H3DgFSM\DYcḯR)'7tDtد(e$SiC'G5Yl( xTPOmUTcŶzWPnEe^b/xmeT?V_N^Krǧ_a✿E_㜿R%t̋	~WȺ௡Vu{ @IT{VOQ};ՂJj{Es<-
Auk+
uå/ Qt2H`R>H}0P7ɽ3-H|Gaؖpar~]<!ؠA:rhbt13ՙLc4G>HqOGSB+ XK{qgiC&{PLy|,ϡ 6XOyl5r.sE;徿i^m
(r9GUG!n?}4hs׆H^_"qWh}MMѴ
a۝FI<KM2"4,J"m̏tǬx~x#p,S
r,삧=d)rzc0{]E0=d#pWQ'	l8.>#:$1f'Lf.e[<ٽ<-ga[Zs	At:,bZCĀ^:yOzpTI]8O18{9<G":shýpo5 {ә<tx#E9dHv=x
zuǺ/	(9*R[p>d-n5(`	ӵiNd9d$Nql2_A8SH
'!Oy

T<D=T(/%XEe6(9p&RmMyTR;BR>ϧp\T1C(_o8Z
+_d,Pm
,\Upr5
kUUuܠc0"j?P@ܣ+W7IxwإaUO):Wt|S3#u.~/@Z,jrVIj.j.Ub(UDV,W׉zu}6uOlYm_KNj@mTC\6=jVm3u8@6a.^(FL#7C2\ˎXQIp	GQd%|$<q,z`[!這?$Ƕ'wpl۠Ƣ}k#U8[l$hBͅ{`&gKvIsGv%Ѿ$Pv;\:JwF/3XuGH?; -Wi /=g~c)F6V窇'V&"գ2_GusNr?eaU2^ W~(D0>{y$@|Z@ʙj'9UcVqJ
cߧ9g	B{u_Kķ&
.fEF)0^qBfP^de U<*(膻a2V+C`2)#a2
v*"e,UuQ)+%oQ(?TbxNYB1H=tN T'5
M#"J4TXҩ!Mդ	o!B-Ʒ>+.Qh}<3e˚Y^zjIc*B>r9AW=gr5zytU.
PͰ·]GS&Ay6쀑9UΥ;&R>I	+tenq7,P.EtB+2:K(/oRrĔCRC>בv)?>X(~rLV:qH|u`ȟ.5݉8,;"6nP3lP/=-bO(c֭^vRmb]Ns5t|
AUs%w(H` 85&8^	z'YO7H,Ӭ1o5Mqb3D
65γ,Un;H~	&pȋrj\{n&PNXqլ$; 6yD-yJoc^{LP/z)W/^ՐCyaz=WoMPByz+,]	Ք/WU?vz)->c|kbmAY?k1J%%&|~K/Zeɡ16#|]GN
/oKeHB3MO
C
qSGH֨PPsCO~i!9KyXfPpӄ[r@T:J343ULge'"w˶ZwzɢM9gLIr:al}V{KIRElHvbeqP,x 2!!tP*qjŃ,ϣY<aKį$O=~
,<#xv&C(O8*yʬ5SIӽ#P.VY}mmϺ=LKm`!ܮHRA~U-O0O.@aXClkJK>.&FCiy,fO'`@NNe+=zWb9*knp`	-҅b$IBzb8hG-1wlnM'ϻt3 Sr<I̽DGa^U}W
.
P߄A[0L}FW'LR?\#WL68SԦ3g2(m!^0rSAZ=9Wpy񈒂6cbmismOC탦@@MٚR	s~d^{E<"
|OΝK繻I>lQs~;{>pЬTR[4̴NQ=дr5W]	phG#}8MC$<Eg<kWBh2?u81n푿Bq`᮶yfB-A%r)aE9@s 	ѝTv,3<څ-J-$>RZn?T0T/V BN7fjSHsHUZj3\hy|@[ {b\+R1L|jepVk(1m	<UZ5RH[m9jqVc)ZikD[uتv,ܮsFܥR	Ak۵Gk >i-Ul|[Zb/-G^d2įWL@?{ ςd`?etTHFNW$L Ra
ג!.t)̳JDdWKh˸ _킼|yT%_9Irn̕q{gFd,e-Y4G1(i(H,-63 ߐ^Ze^FCT5	?~ruxg;D Fy9n^Uo{4<2;E5uXHց@}]p[1nbR;	N`_!*852uD|<D1qA	 H"'kDYF9
Mr07U&OPwv'&2ȶmqzM%2_RzI"g"9"ǧ˯4D
D)R-o^ظW,9,ɴw߻r!7zW#/Ᲊɏ(Xˬ4	i_D6y2d+`f(Z\g}CL ;čpv_&^<R	?5`$?#XZK8Q
r=?4F//!
ix7K>N"
Tx
Xm"IWTwʭ3ɶ(ۻ.5Pn~;fFR1$Jr}/"
	VChmH鳚ԬP`XYb#<D#JE f⢳ZDtNt!RlCn:j!7%l6(
Ra&N_>*U|`J|zUB#aX`=#=đಞo#˕aEKB7Ji=e!Nm)DdSgbshLy7Z|>cl rAE|N/2nu%۠Ch/γ?Ax|^Y4[t5?12ͫ#ٽR-PK
    4A    -   org/apache/commons/logging/impl/NoOpLog.class[o0ǏKtel0BL:iR=K=%qL3| >؍O_Pgвaӆ-mxZUMhrsIPǧ/[9L7L_&=/'ŀX𐝌>z&tsT
]g426;":9Ǝ/<|D:B
W'Pq#.uJ{YM 0Om*іđD9#-Eeق4
:6N}ur{#`,?!
0lv
o Ab21A"
m,l8 upÕQfKPq,6,X.(;)/xG+'\۩+E^FL%<TJ|'$6'?oHԐ FgU睱55Cc?z?5~~^==lͨ3
lj5o@vrd7|h@$%@C
[7o2Kkc?ˊPK
    4    1   org/apache/commons/logging/impl/SimpleLog$1.classSmo0~
aݺQ^[02>M*!M Q4njJJWC6^|G!Y5mlH`wξ__Qxhe㑍68pAkF,p.%=dh;>r/*2?#n1;{=&1tg:*ܚU\*xLlB*d$]DZ$!2E_**"}Ǉ5LT9ǆ'</H8Q%aH>'70RIzN$g&3H4/a
fJCȲ&r([;Cc:eZތa
0P&<zIr	h'2QT!C?^j_cI1>x,I
gQhM3,
^6i8CTOp>67HV!nz
.Xsm\'iGG8Q=0 u$l}Cu|&XsLvi]/|`H%ͨPK
    4u8  $  /   org/apache/commons/logging/impl/SimpleLog.classZ|TՙIpI@IȀЀH"y`"*N&7d&Lth]Zv
$iG[}Uk_ۇn܄d3{s^̝|O_2e*#'
KH!GLiQ5Fg4PkƬq35X8_BjTRjܡMfoVj|A5G4]u*Wyר|*oTyשYUޢr[URZkUަvTA*׫ܠrM*wRKeK^(M45Ҭ{TNzWfTIS'6Opvp6?~/Bu2zPzR=Mc^ZC饭qW~BFǽ^;!
G4yz_0}B}Fϊ'˰Vi9iFhllО܈ОKҼ פ;i^9^Yo<~s4yX̳-}Egӻ:ϡwtGӹ΋l1}_%E4Ri/\Ly9}[Mѕ%tV2zE5;:H_ѹ^ֹUuWu:~Et&*M }Yt>("9қL\ĔQ
R	ÒuL%+`'P	&`4g\K2\n.MEc)lob/sejnIҒ:sJnt+XSX.?#7uj'x'$6-SS슒.j~=VFMQVK\
j _S.ei-:m.G\ゟfKN\7[\&\`0q;doLB=DZ{6aC%ñ{0dp$PLFr<&mS(6㩊uL3bD2M#WVo[]ZfomSsCe+qz]4jͭ	P7m[_VS)7
WlݵmyT9iL]cm$MHZ+j&W67ʒph4[E!7v@mS\gEKﲩ3dml Us(df9ȴU.Z=Ezk0c$,ThVIf}dzΝXO
HavRi},CF C4"l(Z5cP.B-xȨ
얡hHCH]QP?46.G4\c-E24c)CuD4BJܙ`(d$ūq #8F`@7N105-u)`M$ŖIm&)4#2P$%rQPF4%A:ʹ1fv|[}6к@(+PD]O47";È&hcwAWc`泺m	>bk,1Q;NU-"8׀ŰH)ql@FʄHb`I.0nYa<hw#CbN8Q-JHwٽQ+fH!fu`\`ŉhC=<	r		N&ڳ](SV0Un$|9nU7rpҒ.4sͱdمK=}uǢE1SXm	tsA@
!G;e!{ɞv(4&&;xrYGu+FJ]F,KKc0l*T|iU9*LHU8%Y25dz"1pFDJIU1CdD
7Y}.<Qk>
>+QI˭JZnWrJk2@S]=uSi`zTFZsۗ=ManZkX\JkM'Ifi"b_7mខҎ`^9dkנ[u1oaHG,Dl&RMkv LMLs%'sҖwdIvb3a%1(Rr>3
ITK&Nfڂ'0~A6
/*ھ"hii):|0-t
)TKʧw {/9~̗f9X'lz}3S g  8?:`0'GCy/$8y'^FX'QP*ݏKBb-ek;K5cpfÞtnto8?G#t?Jq<äSo.#xihn>p<KU ƨݔ3q
{\IkiRi0m"K7SG!KR-OGi5}
<Nc>h,HOsIOQ=
ʧ <B3A1:I~vac?Ǖv- [znJJs_*Q<K;|F)9JFq4|(<L%FRueI[<dʤon(vf3 ir1yL+@dZ	j"O 4Q+?ϢYl2#S|@{eOlzkZz6wޤvRљ=oG =͏ Fqz^9<6
#N"ΠG޼\;W/NG+ nۼ#~WBr2HELf ƩdjYU<ӷlF:O;۞11xkQ;挼T6|ǌ?ǎdm88y<JOr@Rv6p_9se.|ɹȢ.kUB 7ѾE4g7'
r~aJF[{2yYn+9,E	)Seb^;x'spťDٔG9d1s\	;Y
?OM#~[8NmQj(v7c{ځ%E
P%]埥m\Ǩ9o6~-~G?	˨(~]Tjg[ix)ʝ܅-R)⹏V(+ї^|BN+qV7*ORx4+RŔS)c)8:rwQ4i>ϧ#ј z0ؓY83uaac_ggQ8}NNv2uʵlVͫ
Q!#4i/=O3>'T+^LI
O1C3>Gps2MقoD/ђR#sSsM`k,.u)8YvYpMX>3^_4g8/LAjXm^fI*Ol܅ZspԪUos).ݨ[]{7Iz9L͏Y9)pyWhq&j]U^e 3[7F;*<Uyq[R5p˖i!xYnjA5D7cY=LY a1ְ Y0C5=8퀉_.Omt\leVL#(\U絸q7ΩO:G7@jw#YZ1˃Xy;
2Ǩ"kU"h@
<H?xX:>o( 
iV?NL{Pp
Htӽn	cH3HQQ̽%b]
Wpo:.빌`V|qnS-OD$FCfDH]1Gw{?1eoh.7_#=[(9!+YFɇA豋ǵ,>0eKYLsv+i#.ګU@ke?}oijeT~1BA|9sNq&ȽPzF`&%IyPK
    4    5   org/apache/commons/logging/impl/WeakHashtable$1.classMo@MҸqZLB NV*Z"q۸C^WS 
8NTTZ;gwCk[iφ)83(j̩
JuPiW0*\u9hRY[5vrB`F2zQ"3	:qq:øSS~?'LTJ/)!nJlMHkJC
vAԥ	,;2ܑ2	]eнkAeWO
FJ
KIFH_c9:e
T+ݓX} :嚰§XS隃(Y5vGyUYea0

)SKu
/x;F,0':èQ6"<!"SgXH6~hU7p!\s.c12p PK
    41&    5   org/apache/commons/logging/impl/WeakHashtable$2.classQ=O0}״M-v>TvTB E01VU"񳘐(muaw:~}#G!CBD tb%gM	kUsCh̋$ZjV5a(-e*'V0JłWMr*c|E.0eit
eJgL=KzqNWhn֕5uF	;r8a{LR4V3	l7ڝ4qlIpy?зх.9D-x|ص8
yp#o?,PK
    4Wmo    9   org/apache/commons/logging/impl/WeakHashtable$Entry.classTnU]۞x׸i&jN2MB4MAm	CH;{ɌW/H4 R$>OA}f3/}YϿy,f:)L,l=X93,OqŚkB6^a$9\
xGwjK.
	yd'dS'Sk}rmmm4U+Zԛ
B߽T4md
lD،kkfuږݵ[e]-oa9]׺읫v؉즫)	S.;-KV(xH(y6TQv{%ϏJaHm
<O+*$]s<mS)0R"ǵ>egQ~vvsa}.yMG$|E9-_Y)@|C**.Kkcp;э{ڎw 닻U9bWtGґO9TׄwraC#8}Y<?,M$n*>Z1FkӏqG2k7;0s]ٞeaA[%2lU&ϒfن$Mc |N\i,$Wb^3H>x_٥3ܩ`P3?&q0byI8gN1-Lc/E-f)8EmT/6h
o#X"fp-}zuQO^EeFk$pARNo{Gk*|@\
YeTY>IefiEc@t/7f*NPK
    4Bw  	  >   org/apache/commons/logging/impl/WeakHashtable$Referenced.classVoSU~hK]aەE76dW33ݝքB?	Nј`w{׍:FJI<Ͽ(
7&6qU	%x/=0pD&^J 2nFLCl^𪄓rIb0Kx91	8!a8i#DJ"!"fn88vթmù=sc]wxj@(O\~K6{%۹eezaWR*GʹyiRU
Gw_ =_Kv/p[;w;
ƥJ'heE >8ɩZMyUP
JM͵V`R!{߄cDh{Ѩ]xa	uF^#BbǝɊH_SkU֧;U
uThI5ySm1R߽̕N	{47Q'?E]EfVz~+
oˁ%85$moTUAYIiqPMYJInc<Ɨ*湷@ڄib~GHY
x|3>Ч38yǏ kdH@61)?=dpsa:`xgl,:,V8p+
kxmtC*BF4p}D;7|,q繆>HtR`Il!d,:R0B6%ku~w>A2XB@<CX7_jWs8$iNO`FנicYX-5Kki}ɱz[JGC?!C1@`O1.s~4=eھb"<,Ә]j	ƙX]YNvI^mzGOG/ /-:?PK
    4piiv4    ;   org/apache/commons/logging/impl/WeakHashtable$WeakKey.classTn@=8q-k[( ^@H<&nRo 	>W$_3N4EBJ*9/Ƞn(!0&op',qZq26kr=ܓnK9nnAaMkK%wʸȆնTભj#JǗܤv(m YGuT)5~4"~G-w~X[//[Jz*ZeX`IP¿èЕ<fS-"sٻcvX v"W=nsc?HZ*\A駔J!]WGWXȾwkF
ԓcf +!OS"giuZ-{҅nW?@{
N)wLo"ԻTBsdKJ(Jմ+Y@&>^IdRzS$4	eRot\Ns'p
raȽ?"3z	TBà#(zj+8G+ObPK
    4*Zsx  .  3   org/apache/commons/logging/impl/WeakHashtable.classXkPT~>ݳ,E+\/Q
.GX]^4ޓMb.-mHh533鴓I;mg=}s..}w޿_bF1 ~7>ƃᬆ/i'4<)
4hkx^74=Є8Q\l(V!<c{)x{	$dRx,REHk)JKv˵=½C^h
鐍N:E>v	_!B~!!Bb^|ǅ8'pҋO
0Qˋ gqȋ	yGx\N/#__o/o	9/!qxq^\ǽ
ի(̯^v<r*GPz48u;\^ԏczR7:wOfұx9SX,ap+bdd['-;$7|yݺ #&=VYP XH?z;eӟ6[ɁPd8CPH≁ņ=rbw$5+HA
AEŢ2g_F覚LdeRjeW?Ci+ƌXz9ѯ+itH3;[tϲ{CO6#R3pf訞/7l[v{*,ٹ(6ŪK["$cƽq^Px,CMxMw7wthij<е/ǫNgRU^e$Ux<q6jL([ԵOS%@xgHNdToKA=2yH4Dw$SkB#Td͉YHGbF<맾	v>iSXY4sJj%c6Ib4bcv"2'[ՙk9Շ%.	|29&]XK5/f"X"%1dl
%sfin7ص6̢^gt1Z`g;I=&I+'T6{9 |i&<grͼ07oT4)dR8;R8W¦c<N'7)cPWj)pe	{ NB!Y*9I^~&g%G%58 8qzGQ~	ŗy-E"ä<ɿ+^25ų/WՌ;kGQBV#),F}zm9o)#s@dA=m	Qx(ZrG84z`~{Akj^Ei#
}
΀
4d.GY
(
ڀ{o+BET8h$M A>IO1,簄3X<| Fi}h۠%<@|8k䊰yOD=iYZ\}[5,wiQXI[Qs_v2MWMIU	*g'<jY}kO(c o[p9!
}CGяҟtȵp"mòɆe%e/8ۦ0ψcMA4X4oW(cھmbXhb(q/fkΤk+X:
=t~Ƶa9VeW	jGD9=&!>dY\2-H>Smpmpu7s#Ċ):~U*9_s2F珅bU/fc_k3gxN2^ĲÎ#ea4#рeeиFJFQ,+:׌,b-~\z%kn=il'yO/bƤid񌙁
p6w;"c[M4|+NT90h7C^l
r2V5,mL3S?regXeSr96)]d$ FT=զd,"=lgdV7\L0_ T-Dj}z;ZJ93M{j\EӪu8}-(:FȦB\RķЏ i'ʘìWǇ89~<PK
     	4            	          A    META-INF/PK
    43                '   META-INF/MANIFEST.MFPK
    4m  ^,             '  META-INF/LICENSE.txtPK
    4BZ   f                META-INF/NOTICE.txtPK
     4                      AQ  org/PK
     4                      As  org/apache/PK
     4                      A  org/apache/commons/PK
     4                      A  org/apache/commons/logging/PK
    4lI:B  r  $             org/apache/commons/logging/Log.classPK
    4V\\v  "  :             org/apache/commons/logging/LogConfigurationException.classPK
    4t?_3e  X  -           X  org/apache/commons/logging/LogFactory$1.classPK
    4åA  G  -             org/apache/commons/logging/LogFactory$2.classPK
    4    -             org/apache/commons/logging/LogFactory$3.classPK
    4+SA    -           c  org/apache/commons/logging/LogFactory$4.classPK
    47
    -             org/apache/commons/logging/LogFactory$5.classPK
    4=ͫ%  R  +           "  org/apache/commons/logging/LogFactory.classPK
    4  
  *           H  org/apache/commons/logging/LogSource.classPK
     4                       AO  org/apache/commons/logging/impl/PK
    4{    1           5P  org/apache/commons/logging/impl/Jdk14Logger.classPK
    4p%Ⳛ!  H  4           V  org/apache/commons/logging/impl/LogFactoryImpl.classPK
    4A    -           w  org/apache/commons/logging/impl/NoOpLog.classPK
    4    1           z  org/apache/commons/logging/impl/SimpleLog$1.classPK
    4u8  $  /           |  org/apache/commons/logging/impl/SimpleLog.classPK
    4    5           ^  org/apache/commons/logging/impl/WeakHashtable$1.classPK
    41&    5             org/apache/commons/logging/impl/WeakHashtable$2.classPK
    4Wmo    9             org/apache/commons/logging/impl/WeakHashtable$Entry.classPK
    4Bw  	  >           ؔ  org/apache/commons/logging/impl/WeakHashtable$Referenced.classPK
    4piiv4    ;             org/apache/commons/logging/impl/WeakHashtable$WeakKey.classPK
    4*Zsx  .  3             org/apache/commons/logging/impl/WeakHashtable.classPK      	  t    PK  K;P              META-INF/MANIFEST.MF  T]o0}G?XyRv m*II-Jl4~!%= {9K93+uEapk;HhaE/$L3Y**XaECށFVn3/q~'d%]NJgQ%N	Ȭ$0 ]K-~O;W٤[VMBC+բLA2XWmmRmP^gL˟h^:V(f5(dK}2&!F+?`osEݭK^Hq_T8:b3Ysis/LL6`	a+_VMm&Nrr#|G`+W{3smSKuq.,SN̰xiw(=\g>(|6:?1k!$#i\ΰ)qkWE*E2TX?uٷ3s{Ļf]FaKkQRz?*OPKL  _  PK
    K;P            	   META-INF/PK
    K;P               javax/PK
    K;P            
   javax/xml/PK
    K;P               javax/xml/soap/PK
    K;P               META-INF/maven/PK
    K;P                META-INF/maven/jakarta.xml.soap/PK
    K;P            5   META-INF/maven/jakarta.xml.soap/jakarta.xml.soap-api/PK  K;P               META-INF/LICENSE.mdRˎ6W4( 9mEFwH!3O\b-vWWU?~wSO@z6,=@
vz@Kv.̓{<Ώ)&Pztc3OCO9s|玮m"HFddͳ4g0?53~,޿;~\l
	&6vO?P7nP3
8G?ǫKWϮj\}~ƶ};-pF3H_
yQ1р L.#G)eV֥X56♷;!#+.8	I|U9~
 J6&
<ٱ[C-]Cd;0Gbp(q~ɶ1hv1SxIbФNQ\rzch#˂+M*2J,k#	K/UvkMRJ@LP2kTe]j@JeFfWfZIhU_04s%L0ю)#d*AjSXLly 
?ʐްAW\ACByA-K~ŅP<7Q)Yfw<8$$CS,\Q*ؖkŷ>|Raji-e\=?:WkaaM``JPHFpp	\ڋ丬l&	*z~q9-p070zPץX*BF;`qavՁ(.%;KK&"V<(ڀ\hqQ0\WPK[G2  f  PK  K;P               META-INF/NOTICE.mdUMo0WaG&-k
;(+-ߏ6-!vHYs翦0#ۡZފws5r%
j^N EG	T,5* /	YSY^w^CE*(T+͗ġ1g*f/΅VI+Q-L
JȚn38ɎhK%J *ܿ,<o6=bfpOaDSڻ\:ݞgyq3Kׂ2JIb~Lg7.4&pe<9XGaq}z%zEK3t^ԢV\՞>t\vQ%KXФB)Fy)|{Ci*98`p/R~dn&Vq|jF'wah<-Od,mEDDߍ(dBKԖF 9#ZF!jI$^d!Įb9]s,Rـ;Ljɉ!]}g`4(M(X7؁6kw1'œȃ#Q_={hâjFB g֦
UVI7
=hI`|Ӻ[uH$Lvobh|H-&NyilM˭D[!c啩{fY\aˎtI*1aά|K *h<bw
"oƐAD@]#GUYƑE]%љ4d'@17׆p,95}Q	!p8мuIXFs fV\^ާFn#}cj$U*o*i3PK")-  ?  PK  K;P            &   javax/xml/soap/SOAPHeaderElement.classmN0Д@[b`L1u(b 5I-+UT«1 <:A(cs?..z.BAl<ĻЊG&O_\Jgde,&t`AXU֧WySF)Ll_խfNVݍe*>VG/ʖy,n?
 tʹpm<E&x61.wP]f$-&
HiuHrzJqRi	:t>_PKŰ
    PK  K;P                javax/xml/soap/SOAPElement.classV[W@U*`zbobmSO{˃o!xBIKZz: M||3;; `E(>i?tC+IMF }>W.ic)-4i1'IשH VttkNKQe-W6!Wa.!.c$2n!γ6mZ2I)W#k;V4J`Qa26CX4V`KT5[q\^5hrZX^<nDź.H]6
Qβv7Lmj#h/4}͊qJqlxW0"~zD`gN]Ol]yqM
5
6U(=ⁱ1^<ь貮iʴ4X<	o|ӆgVv,zj=333zS/i}}0u#L>'ݛ4UK*V/oͫ`B%VڶJ?Mmx_;<S쑵ʚՔ{aڗ)&7	F܀)䢈"tx	0f9`&_pwb/
U!<"=5$5:Sn&_e=B ~/
/6PKJmW  	  PK  K;P               javax/xml/soap/Node.classuN0ې)@[XؘʄhHݍcTN\%)WcP.DaGl? b!Z1RE4%"&.0Y0xEbUBp٠%/s#V<[NKVEl)D;!mR(#TϏ&v]dJIu&}ЯfWU Wn{?ϛ=-"z-yh:cl.m1XHm8'%"dsZJ;OPKA5    PK  K;P            "   javax/xml/soap/SOAPException.class}mOPJa0<@w^vu_C1~ _c,Dig2s:ߴ{v7  8HW(V0Y4DdȸÜt1,(ᢌVr	glKƎ`_бlڦwCB8;)!);3m^+oswC$JH6kuv̪Qg-갊^W<ӱId ۢ\.-	c?6UmGJ{kZe%j?;NK.M{|Ue\#jơcFƅA)͜R䝚[wLc͊
IAΨIWU\ØQI;"߳,^b&_evK;u"O?+nVR;QFvtexw$Zv{N±Ħ=40N_~Bdzj%z+Z&}F#Bg7Dđ F60SۀtB:mQsb|`#=@(Б rDڀN $&QWOM7T5H鄦 *$v9XxDS"E]q EvHjN Oa_#IOhFm[tRNr(㴊Aa>wABe9DYmh %#3N"סJutj:ݭvWe&ސ[߷̑i	sD87PK.N    PK  K;P               javax/xml/soap/Name.classE
@54B=DmMA I0(#il-z*AqzX#pỘL4Qp (O/37,
!֩JRzӧc-R/NV*cqe3ubY_H@`ƶ	#:6'z[~PKN !z      PK  K;P            '   javax/xml/soap/SOAPElementFactory.classUOA-=z="HREAE^ʫ@1)qkW-OaD2ޝLٙٽ'YlɈ B23BJx,'2JL¼0X뢌,Cs	/S'U6ScZJrلp$һ+o<CpQ7t{a v]>C`<mۺS!,DMM.lo3`P7<
RUfjH90v

b誛 o4uӠuFlG.]"Dڶt#sW(+r#{u0g UN/1NC6M`FĮ˾賏v-i[NvԼ7A9m-'uaM	]XQЁN	
/Đ#7 uQ.0.=WZԳGb}kDm3^HzQ
$+Bt5C1l|L<τz2yWynUlxN\wxfh:PiMW׃ }Z"!fHZi4
!+IV9^Y>&
? FwG~}xa_/VR 0w	*T
1"QRN}j 
j =
G<4y28q7
4!kAh;;G;
϶!#|Pi)5^F-eWp/
B-8h
>>;5*P?'k=Dy0oʭ/PK    PK  K;P                javax/xml/soap/SOAPFactory.classU[SEulHIdL\JX.	H4bl3lB~(2>*//zzvݧ~L'r
0񡌏RV}32
2ft^
sbWbA(¸X%&|na-X*!]dOa3gX<5:~`U.!yr`LB{&"!1Hz`9|Z.rom.\+̳:&/,_`HelmwY~sAiz|eF20F-|4)A!34eJ`C&9Vܮr0Nb0p $\˴&HUkl	vTjS_-"VmF<vCIRv:t;&yr(^^M%-QDE*c1`旳ԉ)U5]ʠV=-S1(!W+xi=&:N£Ps:ɲZZkSyV\cբi3kG貙nkJ8wt$_ut-'ljg`glSf:q
uִ.WlT|Vc/UuzZև(-*tLģm7xղKܓpqVc-1>Q)OdTEL!|qNV#~$i"VRL>yɗ$TzdD@\
<
HޗiU9lsstI'vo n%q~z *lKI%;v }\o2^E5h:i	1PжnAeXp!xߢyƮ@R/	y2<1<<Y"yIrzp:FZ$7
5{љet2-"=3C?P".:gеJ@ix;{r"Mc{s'ZL;ί(I0Hdsivi_oʵLzF_QrvcB޺I.!cPK1Z  
  PK  K;P               javax/xml/soap/Detail.classQJ@icc[Uѓ^܃HELAt[6l$5~%NSxX_ 0c|p0iXFzRQyJKD	O.iʈN6z;J@1_Fsp:xTQ3ri&ncKa(kz0-HFs{ 4Zej!#p^)8kPZ%-?<ؑ#'կӅ0-_7PKH    PK  K;P            %   javax/xml/soap/SOAPFaultElement.class;o>Nv6vvvFҢT̜TF` ҜלԼĲDFyU__XA B?'1/]?)+5($ET=##33 #db` PKSv      PK  K;P               javax/xml/soap/SOAPFault.classT[O@>TVYq]XE@!Y|I-m^|3m^7 5x[CӘG=XO5)7B)woZG3㹡EUSy@O
N]ۘDJq	s(	,eQ@?
14.LۥQ`Z[jb~5s^93R9ܼ]|7+bv}ov;5[W&:L}v)[TLM[AO,c~G3dPHjYh2;.n;9T_͢PדTSk6WwNT|*ݼUV&;v=9^Rfs.аF~q6e.
k>O@9w5	4z5j[AJHs¢mx*,[Ճ`V*9WSfPaVBuv>-a-F<7H3d2^2tv˔yUdPKz'    PK  K;P            $   javax/xml/soap/SOAPBodyElement.class;o>Nv6vvvFҢT̜TF` JלԼĲDF9U__XA @?'1/]?)+5($ET=##33 #db` PKa_:u      PK  K;P                javax/xml/soap/DetailEntry.class;o>Nv6vvvFҢT̜TFԒ׼JĲDF)U__X$\>15'575	@H21 PKw      PK  K;P               javax/xml/soap/SOAPHeader.classSN@HTSЅaACXˤ))SN
W,
]4s;v> N8V@@ӴؐqAVm
k㡥6im:dsv/KUXg#aUGwDuFw<cc:49{\(]w4rC
oy´'*l
]Tx#ЊXV[i~rwB+~۞˶IQIIQ)VPim5z4k-,5W),17,KN4L.P8ׂ?&wJ/	COy0Z
>y9H^8lO`QQʄٖ$qBfvJxO6cped!7#.,b\'/PKo/    PK  K;P            7   javax/xml/soap/ServiceLoaderUtil$ExceptionHandler.classN1OaQoqbtaф肑}d2 >+>eJ MI{{zN7 gM"\[1l3DKRI/TimKJܭs-h-c\
mnjB3n^OPi|h;x׬	=z)/ݽyF!7=_Wbi[4CyD3]ji10)N5_KSd=!5(50aɺZRmaTy}mkA?KR0ad3we1ы
5=+.)2gJQԧHP,(+ĢB<KqQ$UPK6\o    PK  K;P            &   javax/xml/soap/ServiceLoaderUtil.classWWGC2ƖplGBĦbLSF=hi4m}_i^2IڸkI{zh$4HN轧~-z/mx=N
B6<\)8oi,JKBzYd<F#>('B识ēa|O|T4cOd	|J|τ>'!|AX}ZƗŗU|M4_ck2)Ԓ/8FQerzN~2	xbRBp0%4O:mr&2TsR
ݛ:sm.K=KfO..Y52c9oMw{L՚q+Ncfgg
.9>߾Dӗta,Ac~9XkVGYɑĜ"Z(`HV"q7ݔ$8]	\lG%P\`bW]䥅co>	WqQg7ߒm	8k7f-یzXou&*ʪ}Ul*VRGv,tsRgdܱO/'5\Z4D)D#{*t-oRE2CbYyWgp=ܪ	Hع&,J916wyoծJGQtG[r%ϨyIt\s
Y{īNƜ;5rco
NVbѲ/94ak֫n565C+g4m-ttGusD<&VQӊ9،aebyB|xNC7#?O?SsBqO.ICÐ&L_yZb!%6E+׸d0R}ʶvtyglJx>~gQPp2^T^V[NAg[2~`)^v;h9u$feA	_Vm1-7331TGD䙻		V+/
^k
ynF1rvp&f067JmɊˆTNuJO_>>	ҿi]qT՝yOԺvmt5		7t坂Ul	Mq!XkRd%K\srs-_E!=^,ݢ.,肩]
USlq5lܭ BZ{n`r+Rŝ{xneNKgg_<Ϡ\~:	Sđyu6`Q;sz_&o˫]I/gB6[w?["\f:gN?^3p#K;oBz:v;U8߶@o;Q)	$_@]$Y@@Kؒ*@
F/"$bb 
GZ֯ᮗMi*h9MߒVG#p(mg!Pޏ~Sq2L\d1Hh;qDЅ<G)w t	ڪ`г񮲍Se!O)?v]2R2NNP:n.izF]R^k^=rMܷ䫈v6wx[3hLv
h-`T`[n4qN"?stFx`vĭeLr늒"	B)B,뮕$]);ˍR[*1z<7H
e k
+r	\=së]`W4Xb"+#k-c%{:<)7PIBPOp+äWR,2]J^#".1rf(G;9ֹ#AK[QwZFۣ2-J8^x o`g\h敢V'::	r[㜛hf'Ɉe{}Cg[rR:F"
lcO.Wq^*phg2Y@ܭ+r"wTLӆVN(	|sDha#Cj?eVN.	PKP!g
    PK  K;P               javax/xml/soap/SOAPBody.classN@g)(&"$&D4ċ]n2BJm0ovo3|{kP@3.lE7zCB:6%Au36	;!#eI=}ќ@j3פY9%lړ٢뢤?b\QoZujL=1ځ޸G`
5؝ivli|<KɃ:Lr̩!:K"TWm*$-Z	kق@qz4v#PŔ@yދPp4yz\r6YR22Qڄ/Bl@ t%(GN`+Ba'BvaoT PKt\7i    PK  K;P            #   javax/xml/soap/MessageFactory.classT[sF1(@-(5J138	FlRd0/K)3m)ĉ
{vw.ǟ as
,y
?Rຂ
nj0▔?jPq[jFqGO+czPjrY|X^Kg+Fmy{f8<evC9]2C俢5O:5,5WH02l_b|v.o
#?xKQ<ǵm&;Ye2DT_.-ڑ{2f_뼝0`>Ym~۾Kv x$AFirN %pU݉AB
S82|-c
_2\dfUoYaǳrHwVlEB7-iAa`1I@hj
(!&:0!͂U0&E1˔ƐvG;:ǥ2|oZff2Fx*)<V'Aڦ=²wONTqVz[sXry7
rv4*
TBb}t
젩t{0}#㺈PQ}i9Aa'18<Vz&yd88E4}0ctzv$ccf8G3y\ 9JvoHg712H-!-#ekFWA[oxn_ƉE0qQaĜT'OCNaM:]rx:M:̘%Ҿ0o*B_")\NRBRb[GJ+o8@J3|,iwf!(ݦPKS'k    PK  K;P                javax/xml/soap/SOAPMessage.classVmWE.R
hP-D*L
	&iڢ'S؞nܝE+~/z~Gy3$@df}s_w 9R ;Q6eBPAU!x@
n&2[r:S͕*^)eGF!MOUk3pj5\Ɵ^6) X5_*뺩
H
Ɋn*LTjԨC຤q:j)ǢTfCwGN<֛\L<_/8[X;&}.62 Ҏϔ(T&M;Qø[j&0_ۻF15C64T=h?rMq\7Ryl-|6^_nfm`
D-7GY;t?+*WP>RKH[
ZOx in`v	"c(gݺ3cs\?RY55b!-NpX4EQz
@.եk>}~ꍀ)u]0C9@	bWf?4^sV\Vˑ
Le~XVg>CX4p(F7nPͻ~)˵UP3v$0LWpk+>5ٴlδRSt5C/pmD8A
#uՠÜ**NHw̿_D=
н@s!||ߝ R~Wz@ml8f'љ$3UK뒓mRcK>Mvk8:qJ68f.4XJMUg7r-2.q	5ˀr7+(L,^|I
W[ I	|]qO >B(``RaJ7`	$`UX(Ch-DB%xp<<,w<oÂ\a	o%ʊ'[Uܧ)) gF`I=?e
K'0|ѕ_[</;2d2/&<y%|ha
Bhgv6|;/Q+배SL.@,m1zC 
-y
-Cð	`
C5Bh2&MYA3N3:w[Ӵí4]Myp[iQ౬N	
uA}
>'fPKO    PK  K;P            1   javax/xml/soap/MimeHeaders$MatchingIterator.classUoE^{&1Ihꖦ4ؤ@Ґ`'BAE
b㬜-:%\8OK.A 5p[n-_͛y}7usYjz0&3R<ۉ0.ńTLjxSrFqQ
oCVjϫⲊiHpKb^rMp@q]q؜U
2V2+rV53bNƢO?b&\6Rfu,U6W\B	D',r'=B~䊀.zO޲͙zet^1ʴE|p,9dl )b\=gۦ-,gt;^Xɖ$&GdTK,k5o dfbǤ:fz֘?⃟]j]6uh^$xǧEpXG?)<)px:rxQK:(I8-f0bΘv]1-/NZ"FV(r%YFCݾ|
|FJhJO'+81jrT8>H%MSM(7haD(?Ώ:d
R?p4OxDab
Qz6Ll cx\\=LCUzT<'-9V5(F|B7?ĉ:8*toz^HmߕI7ֶ?VEy ?cM-6f%^U
E|p12,at}i-5b7HDJ:ŏC|eA:S<&49Ua-Y2wl=<>ɉQ{)>6yfy<C~9SҍUFF1~I~b~^չ㉀6
B}^  ]]74o4?^|( J Qx9zg7#^hZNoPKN^    PK  K;P                javax/xml/soap/MimeHeaders.classVYSWzYhdQP0`ЀND8		blvhq%$*y6IESTb*ZU<<Ҙv43jO{~>
	~`8.by׏Bc8'tJG8-g;c~p6*Lsb}1*I$2B.cZBՠMLF2jLKP↡{Sj&e$5uJKSΩ\VOEG%fsiMBf>:?fLu6:hǬ1z
=mH{)Ʃ
m(73O)M6jjDMQie5Α&&aO]aJ5lX7?|	ο80ͥgu954Jhخ.A*bpVM\Tg`@}V|^0s+c$uj;kf9-(Uf=ԱBT V5W ,txQ+0|"HHyQEh4)*4l	_gU[E<;g`+qQ%$ԗ̮`
.)L!
P
I%2+v,S)-z܌fdlV7
	mٶ	D=bR0
Ẃx!^?.7qTB\{Jh(
ɋѯi֝j)MɊn⤬!.6U圚ēzՌV92')鳳w2I	$٫q#k/nSf/IN|2κ"fqr-2F;bv~œ	bo e;Pղe	Exвu-@>i_aX9"hIQ7ƚZ~:ԔGwT"y`C@i<.|!e-L [ŽR৽d'b?x>tc 1f- 1Ѷ	mhg@'PBzy8R,^ƷIsE!?<ҾGbZIKmnzcԬˣ*P5ZS߼rr5$Z!Wsjo-bw	QKߺtJqA~GLC%Bız-X-XygP123Ndg9J"m$qӼVtN"l-eeà)ysq56R1{~̉̕9̙%xs(5Sop$u
Elyl|H?k;pvs
P!~D$	>wϦ%c.=CV`u詀"$uF3h,uz5-R
{R/x~Y`1{`|Bb_[0Zu/svX0<"Ӂ!J+ծ{t)b7-_/!+ڷV\-jQZ춦|Un2K}룮o9qXYш3qؼ6V:؅[cp)]"dhLhޱ6`eNPKM
    PK  K;P               javax/xml/soap/MimeHeader.classuQN@=C)gƸѸ11.&.>L)Db𣌷D0Ǚ{ιpJ:VsHc-	6Cx<88AApO:;6\
ie }%{Q#0?CEi
9?;7?1:"neKڼu477~2Q2'	D&20Lda0e(LZ]юj6=N/CJʪAuk->!e*IHB]a	X$dkLT0U%F)X8;~CW<c%h&s_\* PK~96X  _  PK  K;P               javax/xml/soap/SOAPPart.classU[OQmKb)ARa/ B"ŗ,n+`>;^}}sӟZL"8Jaz.ɴ,3Vdz.QxYtwE`&'QhָDnB<kv` *3zEc4Jqgmw9D%nX5neLf~G7U^vu۪ȴ*Qr$J5 Y%:UBUƌ*}۬ipEgdy0Hj+'Ǘ'ȠMƷuLE[qmOSzJ.L+/CCtsUW7-;̵ܪ/&-wo
Ңe檇4C^fj
+(ښmHì{1]uTkԖ>q #o9Q(
 6ƾjF[-FwhZE98*B)))TEM六VMOPF/u p^$I3O`f/t	X=(6"%B,o
8
L2pJ|rg_HO|	zI<PR:&hF=/B/JtU?Ōo`|_t
DQASkZԋ@1۰#
l6Aނ_C}hS
41؅Ůla4֜p,4>iD9^PK7QM    PK  K;P            #   javax/xml/soap/AttachmentPart.classTMwD8*u\Ж6Z٦|$ICGq	DY28ll9]tɂYmyҴZhy7oϟ>0YdA54jjFEa͐Zaxb'WmnQvL}'d\{ut-kIJn7'x {B֝EDSe;EK:`خIʡe
?6f1·\Y )kq0Ƿ^-2I#)Yܩ0LZ\<!nrxUzJ}r.Ԕ8cTU}T8PmeKƽ++qG-nK瀫v[=Ԛ03k<Eqө6H:n[mczG<^'[(u)UbSܝ]Z$ #c?g4fwcrrmg^k*M@;M&xC0q-nvv]WU'h7gd]kKǵR\Jcug6ok<He.}hj6zB{Z53T͆iv`UGjMk`Ypb|J8t%cDcK_HI2)ͥg35Kx ,#F}`@q<9h&O9+F371q){+W0=s$<Yt`n>h,rCO0\+÷Ǵ2!G` Ͷ1žE}Z;"J]&+?iG
ctF(bc9Gb1$FZޏPWO0SV/kv&Vp+mZJ~\mD'uF:Д.?N7:FgωnİDv
zmF/^ PKBEE  	  PK  K;P            !   javax/xml/soap/SOAPEnvelope.classN0EKix<6<ouRHTC¯(ĤUH̽wkJ%$"mIg$8zVF
m?x%ժΌZT
niQi"_Hf	{1UT8y^ۜ-7sw1)^aZEt^O%P~4{Sd\2ټp|-)͝ϝǷ\);bod~grPKb  (  PK  K;P            *   javax/xml/soap/SOAPConnectionFactory.classTmOA~^)`(B[[L@,	~!˱n_0Qk<;X
4܋b:5d4d5Ơa*J]r1D@CkխbuR^}/JkFSXWo,nsv}!wl_r[ָ6st;{d((5«]K(0V{;ư|gAVհrݜDylaHӱܐFޠt:sh1geW*7a;953R2L/5*N3DT72FI1L]ui~Q7m)<[zC>
>a;R]4<=a.|MCvV}LI'n\J6TO,,Ʊ$qa95m~uO+<ASmr}0,B⾿|qfw]0C2Lyp+DӴv'O I^%-z$Zɒ#Hf.#F(o;vdnd(n"&CɞW"1"жM"=D?Cďh/1QQ~X8]ߴ	namREƃ}މ0C
l"~'(PKl}a    PK  K;P            #   javax/xml/soap/SOAPConnection.classRMO@}815P(RBBC YEQVOHQ!Z7V.v6TckBJTG6[}w`QR2*;LU(K31&cY#Ҩ?>0I"\@jBVdicpBp8eFXla$sUrޣj6=Sd;|h|Kl&尛L8}C[b-64'mp\<4g2PrSB֣MX넰 efKJFVAx >Es9'e
9.L2Yzosr{rQި{G\e+<g\rvRkPK    PK  K;P               javax/xml/soap/SAAJResult.class[S@ij뵴@TT"NmABXK42"g?4L9?=gϏ ᅎ:tQ:!#I5(bJô
&CrОfH,]ΐ]u<~P[kǥH-wGsՏg<f }s\~,1+G6ߗ
t-jnI%u/6kQ0L[(o <$h0/U׸'a-bY
-Cefb"lG-{^%C*9O1"ṁE,0l0terkҷk殨k
hMckZ
Zl)/iiy6&Z	TsKF[s.wn6w᫙tjj
lZ>`$j]WY;,]ނ^o0t5Sq@.9.rPߧuQ3h52)1N6diSdE3.ut"!/.UYFxD<B!j֏]fҨ初*qd3:8uNaÄQᒅbUʽJXDĚ} S8zLB3FPKLxq  h  PK  K;P            $   javax/xml/soap/SAAJMetaFactory.classT]SP=U@")
~΀-mL}\¥ӤJ_	,ww{lν7 x)n CX=	%%!HHBCZ
!a.*)մ,
z*_H%Rj(b5_SR!xBF-Qt,ͨ2'Mvᔹ면)UϡzP}5lx*=a]O&o$Os1O;լwt1U~+k:TELeZt>K!/SWF
 +lD+ȰR/"B*UFh6-U5wlea31f]L)f82.=A9ߗRBF	b/-A0)H&zx]aqSۆl1%#.hN	Dx0Vsw	R}rng_N'i͠tB`l(s^e:w$.jRLNuHXg*Ԧ
3`C&/y>G(ȺJ#/ 	1+G-#+ |';B0&ED
(E)\'
z`[MJ',Nvw=E )	~Lc"gp=w<PK]r  u  PK  K;P               javax/xml/soap/Text.class;o>^vNv.vnvFbԼFf
(FҢT̜TtHjE^VbY"#0Я/O,I12DsRK0 /J/7NOecd`d`BfYX@,v  PKݢ      PK  K;P            $   javax/xml/soap/FactoryFinder$1.classmo0nfJa<m躉:UuC*0)c/jRgrQaH| >imY>|x須'6VAg6RɤŐm3XQW0,vIHJ'
xx̵LϙJ2f(QJݐǱ
B/A/mBWMZDqH1׌r:h^Rܘw/@ľfX`DyL&reOd)B‫n(4?d :
}HdXvڞuhі_E:STF1eV$kZyE	(3כֿuƵ_7^-=J?b/PD:4#H`hCk(p؀m,J| }<GaܱUFHwwP1r.eY$[aM#/'egHC<21v[4++`<x_PK  +  PK  K;P            $   javax/xml/soap/FactoryFinder$2.class}R]o0=W,ll|@m44i4`R<N8@K<?H<!nҀ,Qcs߾x*lp6vl
Xxh3Qkf°~|܏
R/jRIs^\2T`X=JI}~$28)2bdB_)%QēDP̥/a'1]XOR
n푏NFem\FOTS) L-2Fj1ڽ8Ձ>T*9ZcA
6Xh;d:n0l_}zw{yDBazĈɿ]v]ng7?jİBФvsԔel-Z'0J(*4:U̲
{4gku#WS{Hylj|M۸wqnnPKY>    PK  K;P            "   javax/xml/soap/FactoryFinder.classY	|y?iwgxk}CF։-ǲ,aHla@W#iծ]	Rr4Mzp@phIeP@[r6mM$i&iIppjZj7{}oϿ 6C^B/>gy:)=A?jxы/r+U
_u/|
,b.)^^d-ߖ<]W
+/V4Ћ|X>^^?Ot_^< h_z+㢆_{QސK"!<]¥	75]h4@(«BM^E^Q,*]̕[>Mb=(kb&b|kbO%XZgD|,E@]^₀H(0Hl`,n=
Վ$H\j^`nƦ=]-ޝ
MX%pUӑ9bѝh_D٠=2MBõf|
PKA5
%G@[eƑ=iPyCKogSGwKcSok{Îֆ`C[϶?ݝ8穢X4EݡulVr@~nWcsZ:hƻB#d"ݡ%ߝEWrТKmf+ڧL`WyF*^3Uiڌp<=q31IN73k*()u"
ў$E"C&>s8nCI1OGfs*?E\9pʧnRu&\[hXkb7ZڽnCܯoՎAaԼE7L?$JfrY
PKP:˙k:D8a&bG͸a:ɷ;K-$4MLH$-}(#av
%tEiQ5%L=L4nU$л]$E1FSӪ+Su5J
̳4ߊ{Z5LwiLDr00kr8}8}=jHͣ96"+\lX6=V=1`*ʪ4ޛ>5޿2SỦS\ ߁̓r(ҝO؃>a+)rFRV3L{}a.rGIM\roK8ogl$6-Qu0qxP"lQkq&1:^ *ف`sD`Vb(pDcjYQB@*u9VH'p׺c`l$8hFdl1kqClx|\7}Ċ(QQ@,0uXRj/iMKCb$F*ۙo
4YT!iC\/❂Z4
b2h4dxqiS "v՚ؐiQۃy8UPPp"ib!ZE$50B;c+}
=Jt]Db=bd|3ηQ!n]Li]s{U9I'lc$G=6DM8ǘIY

\&kr>n	HklV2`%0 dMIPFbn?S%m]ӳ-UszYA>lU;A|YFqĜƎwX|f@~+1X3xx}Mu>&H^3q+cU/j"(EB`7Tҧn;	C3!BMm:),h*$3X[Cck֛ytBX!es7٧'GKOk:/&IHrJY׼y9ox"h֥ >:8}XC9jUھ`K\jHTrh(Kck(L@\Y:+9S咱T3u7݂wOи[1o{+?>ԭD*_%3ÊtbOIPβܻ)}/$v~}yNLr>.[	ÑXcQsd]4g
Ǽ}$IdS)UĦ+Rw}ӿofpeyJH?\4؁ũҶX}6gT+2u]A=ʬ}Bd#є)^&$Wxĭu#idG"i}=qkHltOLm633=qkފR/ cIK}Э^M g2cEGc)s*ʹ֭t'^j|}A_B'-2Kڗ#5$WgD {P w"g%9σC8zG~wr%Y-G~~]q
	E2̧G-v>
 q$8x8π}$&_wWO]{&1&$<~mLmknWLUK}ZWwqY~]&0AjlqXs(;=9߼q÷q,\h;XN߂bbڰA@5ZtIC[9;[Ab<҅ә;Q$~nw+2tzGzv3ӥqfwH]xC)gǸOnS/wpgy7%J#x/G{}=j
װJ/DCu2r\zPXqqFTT.)NaM6IO;&'HQ0[?pSAz+*e!Pdr\^!NsM+)H-!*l0).-G)筚+VOXC@<UuXwB8Թp		 5>~n83C59'!LOR~5Ut:_J),]Nctvp3ʉ09ngV]t{9'p^$$G;طb!c GJO3!r}SCqJy1?a|92Igq?C	%P̀tQ@v<'@7W9k(%|D5P3|nf\SY.ߡK4@S`'L-/Q=&Ծ~,=DJO43/K10I$خ1X
{ȟFmk&.Xһ'߷׷sצ~DzUccAr)CQsɵ->­~$Y*>y4;+VM"ncw*QteNknJ*]:{T71iC;ٙ;;(.lU^®87ЈsD2>?q:ii4F'/3y?K0Uçb'	Sx/ER|/3U|_k|{ߢԗ
|[%H%nJc$}5%q	+L|	 8fTu#ϿfziFKށz{AC
b2Qxz±q%H
ESIXlJy]:KTYh91?b*Vf
)9w)U
҅T>rek_e;] E4vµ{籾WVN% ?gx˙
?VO*=7dG\jQImR	;q?v.1Rθ-W"%^
{۹<n@>cS^tNP0"9J@ÖMxFjU*C:.6%&XknvI:}=O2"V$g7%Z _FnRն.@Xybʄb%#)}w*7v%b4	&LSNt֖.Y-nfƙn
Tv6T64xvx|TKUȿVfgT36.ɬFZt6㆟P[e>	4zYn{yB9<s*<]9O5?h PKX@fg  $$  PK  K;P            "   javax/xml/soap/SOAPConstants.class[S@ςBzW/ॡxih)MZDӤӤ?o>8xvI h;=l~ f`ì$x("nU	jqTgpq*e]mRiTeF@^eWd3j}#ۏa 0(Mb%(m)w)ޠfcs3ֵQ8VNnc׽m&Ҩհy[RaT%0ZFAKȦFI5kw͠aN
KkT5UZU:#IKmN_ pRxP7uucg
tP'v-a<ſ8QZVqK$Њ$xI75/I8Jn@$O
Rr}F;%ֶ%=fi;l%_8UO-5X%pe5Zdӹ"婛b_c^Y;tM;rV1o32 Ne\'/g ϽCE;5	~3PRLsaG9o(p/X>WH&BCg50EӒJ=(GK7b}[bڭ:vˮ	տk;QЖ}܇@~ہ/&q)E.>,%y6~N|3Y#>aA"
!1 O	mB>^3)><R<|1ŗ/
D'@Υx?2^5?/NvFX|&B{
F7YfeOb>s&C1qG1$>c]_PK|Vu    PK  K;P            <   META-INF/maven/jakarta.xml.soap/jakarta.xml.soap-api/pom.xmlko6rQ'΅PWҖDIoHj׎]gCrOwaʢw[:"|M߭:ެ䮍^Xs:I{D{A8ɄK"lH	ĉ |N|;%x5ŜM963y,qt@!@xi/|&@lyATHNǉ)HsvF!$ԴfRƻs{{kQ|%!pXM;ř<uPw塵c8dmͲܵ}M<`"n=c9lco8?s^ٛjr4펆r>^b-	# B72K=.`_}i	ՒBԖ\MbTR
bHHaY./tMȫ둓B'11J̨]fK NPŜ\`9s2|lH9	'rɝ$>q_~Άb >Nde@#FN#=ܝW6T,
]ɓ
Zކ#IjO9-ɡBMݔ(k/QD8BGm0mA74U[ь{n
)7{ڶ
y5юpHk|投<`895 !Ҍ_)>FK	[loF&4A5CD6I0^]i
1`y*o.s5|uV*3A-f|zޮŖOi^p6Р4ĀM-wjE{($B)#$0rЬ#JWqq|
؆ɂ#0NTЙ fT9`Pc(i @/idN5e.in#S2YAWÑ~eVE\lBsSa\&JoI@wfS)Sx,Ph[Ar,oS̩E$4QԪG4@'^RbqSiwVaa>L&*DBpVSq/`qtOp0q53u43aLi2Hi!4mGH$d.!](C S̀5gT!<7UBv'`+ZSP-5I$P%7 U3(
dhUc*MŰ!rnɦ3_Ծ s3#xhK&T_,@
p,!=%.l[
w#ЋA2Q[0ۂUhG`NfCv:4զ1=(	Ǆ[.e٭Ć2ujڪTC]2n`!&Tb밄vYUm{MwfKȚ%{1NVp{GB
²ǳ]] C[IHAZ\=H{t4v/sʪn(J3/1/mK0Ynin0Xa'Id6mQz˿1lVpJ16R%EY5\?,kJGgF֌Nz
׷VMJDΖϋf(דZܩ;S
ޯaf\SkTe8`Wɉ=թNrҀIaL'%
~A[AtVaLM̊ݱ_ۛu8[@׼>]4꒢`κo }2o〪ϰ pٯDJTyܟGzi)rs5/6K/<
)l{־X>y2o+?4(S>)S9g]si-6^pVO2~vAHߵh}~urpd>tTLH\J>p#9D-U]Y'_8h2U%72?:^mSR"[g;`zO4SZ]j.S\8O]UeE٧)70f\Y-А@
̇آ9r v+>yqZ^XKW]5(ePb)ELfug7U[aU=躑J
^JI/N81.L^i58AnaT-~WIA7ôߪdZV$ck/R:{T >	9ݣEǺA&WKט_
C7oƉtY#VY.<\$N d"*%'nT9u"=#"rt鰿vIAm\Y^r$F]&0W`Y.W 8"$" ^/mm2+́2!բ[G
f
x=>q9쫒ȷNgWoqV_j7TZHK6ܿ}8fޫZ*QuYYjG8$݈{5nz*hZ5сGO50;
.HX/ /	-o
HC*eP*
-*@w_d߂l^qu^7'@fsxãjf\Z[ͤf76S*GN;rL ߋAc襡wFe[/~1!2S8G$g-<")?s9okS㿡uMFau"q
7l8:g{O.cUm蘈ΑW%jx28C2I A(̓EP=.xPRϴB9FM2rҋ-
h{.e8+!EYXɏv[a2AUl:Z|< n9ot< a9ҎƠ_E2)ϝڎO
`OK*/\,M1&d?wϳ\{YgJI˔V9xIyCUc9]N>[]1lӾ?욖E{IS>BA3N&իarz;wص8kG;oTx}vu:4 HӟA2&ԄZGAb=aw$ݬ/no3E=ϊ\#룇fFzV'̕T0ohEMk~B(*i9X;	BjϲWݳAQ|Uks
vwPKm-
  -G  PK  K;P            C   META-INF/maven/jakarta.xml.soap/jakarta.xml.soap-api/pom.propertiesK,*LKL.LJN,*Iԫ+O,M,J//-"UZTgkgg PK
=8   G   PK  K;P               module-info.classmN0EA_C,#."*L0Q4*~>B؆FP̹3||	1UX^Fɋ_>AhӘgJBkB۷PLt5aD&zCHsEGG*ahUFI!2ҁ6.lyރ/sQ0=&
U.}B#5O9bI|_blaJ%x
4V¹קq:`jsPKDn    PK   K;PL  _                  META-INF/MANIFEST.MF  PK
 
    K;P            	             ^  META-INF/PK
 
    K;P                           javax/PK
 
    K;P            
               javax/xml/PK
 
    K;P                           javax/xml/soap/PK
 
    K;P                           META-INF/maven/PK
 
    K;P                          +  META-INF/maven/jakarta.xml.soap/PK
 
    K;P            5             i  META-INF/maven/jakarta.xml.soap/jakarta.xml.soap-api/PK   K;P[G2  f                 META-INF/LICENSE.mdPK   K;P")-  ?               /  META-INF/NOTICE.mdPK   K;PŰ
    &             
  javax/xml/soap/SOAPHeaderElement.classPK   K;PJmW  	                  javax/xml/soap/SOAPElement.classPK   K;PA5                   javax/xml/soap/Node.classPK   K;P.N    "             L  javax/xml/soap/SOAPException.classPK   K;PN !z                     javax/xml/soap/Name.classPK   K;P    '             z  javax/xml/soap/SOAPElementFactory.classPK   K;P1Z  
                  javax/xml/soap/SOAPFactory.classPK   K;PH                 o  javax/xml/soap/Detail.classPK   K;PSv      %               javax/xml/soap/SOAPFaultElement.classPK   K;Pz'                   javax/xml/soap/SOAPFault.classPK   K;Pa_:u      $                javax/xml/soap/SOAPBodyElement.classPK   K;Pw                    !  javax/xml/soap/DetailEntry.classPK   K;Po/                 "  javax/xml/soap/SOAPHeader.classPK   K;P6\o    7             ^$  javax/xml/soap/ServiceLoaderUtil$ExceptionHandler.classPK   K;PP!g
    &             2&  javax/xml/soap/ServiceLoaderUtil.classPK   K;Pt\7i                 .  javax/xml/soap/SOAPBody.classPK   K;PS'k    #             G0  javax/xml/soap/MessageFactory.classPK   K;PO                  4  javax/xml/soap/SOAPMessage.classPK   K;PN^    1             9  javax/xml/soap/MimeHeaders$MatchingIterator.classPK   K;PM
                  h=  javax/xml/soap/MimeHeaders.classPK   K;P~96X  _               C  javax/xml/soap/MimeHeader.classPK   K;P7QM                 eE  javax/xml/soap/SOAPPart.classPK   K;PBEE  	  #             H  javax/xml/soap/AttachmentPart.classPK   K;Pb  (  !             L  javax/xml/soap/SOAPEnvelope.classPK   K;Pl}a    *             M  javax/xml/soap/SOAPConnectionFactory.classPK   K;P    #             P  javax/xml/soap/SOAPConnection.classPK   K;PLxq  h               R  javax/xml/soap/SAAJResult.classPK   K;P]r  u  $             U  javax/xml/soap/SAAJMetaFactory.classPK   K;Pݢ                   X  javax/xml/soap/Text.classPK   K;P  +  $             Y  javax/xml/soap/FactoryFinder$1.classPK   K;PY>    $             [  javax/xml/soap/FactoryFinder$2.classPK   K;PX@fg  $$  "             ^  javax/xml/soap/FactoryFinder.classPK   K;P|Vu    "             n  javax/xml/soap/SOAPConstants.classPK   K;Pm-
  -G  <             r  META-INF/maven/jakarta.xml.soap/jakarta.xml.soap-api/pom.xmlPK   K;P
=8   G   C             '  META-INF/maven/jakarta.xml.soap/jakarta.xml.soap-api/pom.propertiesPK   K;PDn                 Ѐ  module-info.classPK    . .   "    PK  nqP              META-INF/MANIFEST.MF  TM0#,HIU M%VP!z5[0i쿯ᳫ"K~3y,i,^@R-T#c
 ǳ7Mv4ͲK@+mEn2!9~8L^5	Ć࣠0s(4h4)Bw1WbR$weT3QU
@T$45>AtH녏v$w@%*6},ԍ}NqŲ.q$%
hsASA[QRR}!jP4wl@P$*5xE+ȌL'=iAH9Ԕ-cV@At@_puyeҩt5E:_2SfD^l&ru"6IRfE27ifu7kދ|`D)h%MLuzTqk%Y$e]ßLiB7B
c!Joi C~&O!ziX{=;gf1#2zz_ݡ=v/PK7dXk    PK
    nqP            	   META-INF/PK
    nqP               org/PK
    nqP            
   org/jvnet/PK
    nqP               org/jvnet/staxex/PK
    nqP               org/jvnet/staxex/util/PK
    nqP               META-INF/maven/PK
    nqP                META-INF/maven/org.jvnet.staxex/PK
    nqP            (   META-INF/maven/org.jvnet.staxex/stax-ex/PK  nqP               META-INF/LICENSE.mdRˎ6W4( 9mEFwH!3O\b-vWWU?~wSO@z6,=@
vz@Kv.̓{<Ώ)&Pztc3OCO9s|玮m"HFddͳ4g0?53~,޿;~\l
	&6vO?P7nP3
8G?ǫKWϮj\}~ƶ};-pF3H_
yQ1р L.#G)eV֥X56♷;!#+.8	I|U9~
 J6&
<ٱ[C-]Cd;0Gbp(q~ɶ1hv1SxIbФNQ\rzch#˂+M*2J,k#	K/UvkMRJ@LP2kTe]j@JeFfWfZIhU_04s%L0ю)#d*AjSXLly 
?ʐްAW\ACByA-K~ŅP<7Q)Yfw<8$$CS,\Q*ؖkŷ>|Raji-e\=?:WkaaM``JPHFpp	\ڋ丬l&	*z~q9-p070zPץX*BF;`qavՁ(.%;KK&"V<(ڀ\hqQ0\WPK[G2  f  PK  nqP               META-INF/NOTICE.mdXn6}WCv%ym7HK 8mEJHj/$%I|s83Ù$	?5ܪ|/}/%"Ւ*K;.cDkI;Y̟Ow+r&$D )kQUV	[*D(-FС2i2(J8lZN3U+S*>|PiZ8Ii,[<̤M)+h2܏뢾볏QAtARYtj82=9ptoeYkI`
|sc<xլIeZ
Ua9eoec~0<ppEw­06Qply?XcC$ϯ A wLeطJ~ޣ5TTĸ񅱠J\B3<0S_Y-;BՄ]9F@C]}Ox2c46TS9&wg#(ݹB=$d=36'{t20nZGQdy`G6c=;&l͕/Q%Q4	jדpH?G,]2EJw
"9xd딬
X(Bj]0-8\ˉ"$[ɎI-R;A
c1o4qt݌J3CqRABrbs3&lnA|xz̔tj?NM:f"H6O){aY;wQY"	
&r6Îwn";Qr:I[ȋܭEÄ́7U
Zõ E
]D;qPe-)'բfX^ۺk.ܰPnePgqK0nrUELZ`7YazcK]%&KeE\h19^`Z=N (x=Jmw 5)N}ceDVXQxHz7ɽ7=%w_3d_YiW:=^Np_'ko0J~6zH{wz	j:()!'RHp֥U?IA
an9L_"DKW8*Sx.)x83Ю?b~Jm{{8
w~%RYG!|'Aݿ7Wl=8]W_a"/gfZi#2@h="<%8˸8)eܚOe<:zɘΣGv{i]篯Fg8r{LDI36":i)
d{eEN5,~{s8L;n1=^j=IkOcf]^mOUJg`1)-P1L;4MѴ(z4cL&H4^yBmf^Au*:wM̌qo^thߨݫ 
s{5tjɽPZL݀fFw)V8c&&j';Cز!нcɈ
`w@4cS՘ە2Ü?PKA    PK  nqP            )   org/jvnet/staxex/util/DummyLocation.classkKAٴ5]+H
Aߊ @:^`
O}(QU=y;l$GJrVMXgHja;ڗZy!r>f+b%!+ʕKJmR2!c__yO;fتx~]AtdZ4p_^ԥ;KK-u[&gue$
AVV0_(Fmq[M^ӾrMN)qdٽ5/-y^l/IDaoQoIZ;hA74I#WRRqZWg08ni#``x sȞ@
%F 7 ɞPrqr{xO+^{K,Q\7PK
"  c  PK  nqP            1   org/jvnet/staxex/util/DOMStreamReader$Scope.classV[oTU̥)m(-
e
X
h)833g1Q+^&D#&R@o&
	Rt:H>{ַo`aԣ'aSxB[UڞSr
oö0cB;;؍eO{èEOrx.xA 5vLзڶlJfTt95GyJǻ
iFtTZDޑư	|͖m78Rs\>hl;9uŕx23.ɤZ-!Ov*-;0,r:I.mS&ɜ*{-74-LH2KF=h1s&+S)sZMl%Fv<`
Fܞ
jΝ3+wId#}8gd+Ky
Э)BAPX?ܐÅ0d`vLr1;	s%!r1]b,$<cb:uGBjd:0uDJAX:Ti;0aa cq364`
S"oLȻHue)f3:e=t.4ޱjsdSzܞo/xHmwm;rn80GF:'μe@qf%{H5utt~OfƁi܃٬i'
OLx?(CLΪdBsrT^ x(gIF]z	*|{."驿"_24]%c<=6D$'Y;b7+-_C@??%%U}#^[GoB\ȟwPK"EJ!E$Pi}}	p
B~E5eTL`4E*'PuA1vAoHFL#B*6.kG>TDWLu[\*T䇰~}XÙZV ATWl,zRTkJRtھYD<$8b-wa!rBe' Hk_u=fZki4"Ze' e+Pt"W(T*[![HL'|Jzg)8/gLsY[<%9*.F,c^x32{%c(cP#t DhMP7A -gY)"w"'k]ǱؔZ4br]yRvەHsJ}LǦD"YP5♊1Q?hOQ"jpq}-ߡ0ﱗ}Y3>>/J-̿/,Wjf|}=rIqșyKx#ZW+犨;,rIlk#PK    PK  nqP            +   org/jvnet/staxex/util/DOMStreamReader.classZ	|T7k&/BXD6YB &d $L mj-. ҊZmZ۪]mks˛$Ǽ{?=3 f+>NF* T#|T(r)9cXy'>*Y2Q&LQi\( 2?˽"Mt<͐L=Kf˼s4OVP->O(Ų:YD.KT#}LkXe?]:?],o^nYO+.SEUt\e.Ӻ .~Z
2r]J*˕r(d!I^[*4~,Bmt3:X;%dbSBMC>_+įd~&?}J^>-}?vQ24O{nm>	ή0FñP<[cp4Aȫm>5Ob5kc4nPatl7^=*ClET6'bvI6u'DɊmpND+G%XH<!#[Dw:EvqYO0e+Xp)j
JJNc`Y#Hba@9hcS8*=n		"݉K2a
Fx8Qcܨ<-qjw(ˉwGK7([ؚ/ʿS[U1AjNZfQ!]YoW,91jogaՕ7޾{3aؖp5
l?k2z~nj:hD[,{i\;:+%]p}A
ƾlJ
NU
I	wؼ@U˴%\Ĩf5mX%F[:[yZsK[XtLK"ԶhJ
22y&;Sŕi+>3+϶%p=StFJ Rg2Dpva$/9TNNcџ=Ѹ@4,ܢ 涙d{wB ^3DyδIz	:PSRnY(DVb|#ɐמ[`"by0d
5uj$
d;c-fk&L˴7zG<*a\fi}sL)u
ˡ\[h~W$RaD$nzsW%YuŊu0Hܩ#F[mgWfm
wFePڶзPGKEuUg	C/{DY|o
UV[ĳњiixdS>*Oዅ֝S^m1+n,C6vI KOΦݡ.3xY~yDv){4ђH&~M܍JΥ:1pV1v0_&x37-Ire
N`E"n.^Nw&I_&9j]8hL8`xIнl9f.ϤqIzX2zPh=&^s&eU1<*7/7G0aI[=%Ԯ.`SЩ*^n-D#bU	j{MGMzL41
NP8#,',-E!IXzeKV-9"CO=&TP4\;J<8LG:pm~:@n3h8hǊ;ͫ4X[_P۸Ǌk)"^x`IlK2S8k-@š(gB-說ܾ}Is֨1~?jങ7+U4IvsnsxcACkazʤ#[N
폃*`WzJbQK3&gM>Mp&4."$3:NҤ8Kz
'LP	7BxGM:A?2a`;(!sހy}XbكMHS!I[LUq
gPVxIY^&>¿MzY%O#* ܧñ#&9℔	LnjbU@(`To潁k/p=%/;@i_g[Ur.Jq+;aTŬ
y0&H9*r\dv:Mw"U<Z5q@?6"+ӵ \ {0xȄaTBRBUR~Jowv-^Gʉq]FH>;4RեS qKol+6i`
`rTms:-H/.ʍ]GcDqIdwGǵ'Fckj	ECxC]]a{
L}1Vc}ZFO4P bSgw
rM'o-.#ѕP=WAgJGID7؄ wlDgZS.x%^=)jvQB8zm>\\ZpuɠuX')\	ltvǛ:D{mi <3J*}՚	؉a&|
~cݲ=O3ux]꾐pׯep00\G^wC!K]q@Ѽv)rp9EˣE	p߅!"j4|i
0{(f'O00"K2 lؕ?JsYT%_C6~xrp-\w3Z_?I'$(>pj(^2pK<<!q܎`wIEc|20
<*wF<Q(܅,~݋{[vc
ݽv/]!0{`1aE1o8	0d#V웍3{ϼ%⍌ .|x
{(1B5G+lߐp];lx˷ދ3
&j
~CrMvrS_oG`/sqxb|i?Gm"Fq}(q$2Nsh)M=}EӴASOq˘)6(*_'BT(+?P9.V^.NmS<cd"@Y	9O0cET4

TFh,BTiit? ڱ5Mx\
57`LNS||I(?gKl)]Hx؃jƩ^mK<WvHj![_vS~{v0\>N*em&#
b8M8*Ea&U`![*hY
b^3~fB~	54*XQIAjZGD9=ԁse-U6Asyȥ41Z|Lͥ\Hj/Rb(
+ߋ¤#C+{1}eF(*R5#s>jmP
+`޶,e_ѠuwJ#xZ/mkKG
Gh8**<G1k
B7_c~tReN*YF
V.
QY	#0-jYr[5a|sѣצ
j-2AL*YZM"]Z\*!<JN1DЖ)萉}f?~$4 ad3Җ$Ⱦs{ uQUY\	vځLtl6d>ͧ.>,>#^H^k&XmI\c#<pa:گe7^^ȥ|=t1N+cAG>	NMJRR&>*fc7ϫ2GiGxNK]9S҅>I]WZ5lGQ.oa,=BV9Hq{Z)~hJ#,ӱc/>nՎBlJ9=8*8+՗q:-ۋ<k|;\޺ls3M0ϤD-m4׻V8ar1kSNGZi Ian[s5o}Q]MAsĩQ2sr YP,KECsҷ~wzml`&o SJ$p1<34ISt2p[JvI
.Yv!biX&<5<Q
#W6lsɿzV|NwlYiTuS-2t2#9T]*T_l]IMH02vR_0o2o#:}O@gbѯaj>kŬx]%QLӰL޼Il,Փ|?kL{Qp+T&oEs*BnnLP=T}:1o82GOYq̋/fA^.=~˚Lloap/p-t
_q7=ܾRqp+u21I6.Z{3wdA.v*ӥl #;34spF.o!MI};&yÆ,4SF<:	uN]U-9|}()t{쾗f24=ܔ&F7
ن#
F>L2lmdb##dcQ.c$pQOا"fX.diįZTzO!
w(
t[e~|n#ei<sCc6~R@
,u"rC3D1c
c02/z8RU|#t@
k%rœERՂ4l/UQbr4-UE\oKNC&k0>c6
QdEИ|bPc,d+.%b{{Y5Q_]ߠdYćtҳ@NN#oWV
X9P~Sg	^c9:@kX-gY_δMU)ֻa#2b|	F=GMc[sP:MLSSk݀I;ž!v
v	UrlsmU^̿jܨ"oJk:ܭzn)±%PF܌,cmy*4PTT
;pnas
nI)ʓ.~X6zWŖ|ob%ƞ#bcTJw:ȓ??<1oR~
J);)2K[)@ju63>N79MKv"_雯^dAJXzl,jF!kgW7l~Tfӓte9IhdUSnKMӞ{V,KF9!qqCY|pO̭?vлRA_?[G+;"S~2=A͸lOmrjpZ0(Dyl	5薍$=fzpr)|ht<_91efX1[o1ryWk{=9===_:ت;,QK;'Qm䂣Sxx+g|j\3s"c2>D?'up]qQre<K5*ԬSgPڭ3\
ڻ̏+⨜'oIϟ0NwOQ?sX$/pu"Pjy+\S*9c.7U[\%mXؓkPHɭÆ#٩Nsw}R$Ko!.y&-GLs4,4ި՘zVK2!Ǝ(u?kBNp[eؓO!6prs֡SH򠊎o9Uq1	D֊	-1&,ӟ@wOiyZʇI>'Eƻ쫿Fwl۞?!a&|0˅W];
W&θ(ߕM\94ɕGAprNōWLO;	qI#C\14IN4FX`jAt2
ՠؙo٣${aOߋmP\$J/r;U_#yM"nxqs8\zQbLs9)vqԱk=2LxOsi')L~}\[$v:rzrYnZp||8"t]3皅	(sAk.ۖdYFyzVV7\Z5*IkaKPWfv! 2:sED2([?
ݔrcU)ʩBJygɼ;H/
SAy2f\zʝ4?PKHާ Y  #;  PK  nqP            *   org/jvnet/staxex/util/FinalArrayList.class]KA3Ͳ,3!$AX*HF]YПՕE?jd{f3Ϸw 8H"<K!8r
DJhMڷ7eۡL,鴤>MF1/C{hrrsrd.Sҩɞ	@n=Kq+fJpȗ̮|ƚ8疹>ăR|rp^i^Mvvl$oud筞\
1Y6Y2lI;`0
A=A9١3."PbX:1tNQ6(2}sJȵ<Y@t
Oefçc34s,a;qPK  
  PK  nqP            ,   org/jvnet/staxex/util/MtomStreamWriter.classm`ϥEL`0_uSm<;? 1LkEoWqN=a5_3&w|NW
at,+.uJDVG*ɧ~fO854pe_0n}vR$|8g[@
.a7PK%      PK  nqP            G   org/jvnet/staxex/util/XMLStreamReaderToXMLStreamWriter$Breakpoint.classR]kA=$f]__0B΋mP
TmLۉ2Q}`|JlK0EY9gν;?O UEܭ=\
CIKѕa51~vfJ)2RE?W2/^צOo3ͤ+fB˷~[-юhg>L:"Zu=5`6H~b࿉c$5DA,
+FrćFEy{[IM&uh$쐡Z_doq_')r'Ѳe6/#ٗBa!COJ#_);Yv|xXQB%Txa<.>ͧ&zEzerKk
S.:e>6	Q<|	'(|IW(JqyoHk$:;Tp#Y1
8'H1 dr!O~<|(\3/n({tb	PKi"  T  PK  nqP            <   org/jvnet/staxex/util/XMLStreamReaderToXMLStreamWriter.classX	xT$o2Ȇ@a0BbI$`$2:Ig&$vSܷ.-hVZ	F,`Uh]o.uikk[[^4{o&5s޽{{y<R+|؂r}$_a+(Ke
}>h6BphۏIGkWu
pE͋rP>Qу2B9*!!G4<1/p2~Ǐ'xÏi~~ǲ'Sa)!O=+R!d(kѯ2zIo4֋}!Ȇ?
L_kB,/B*/Sÿ4[7bhRAFxMH$̄wƺ*zI5h"iDHSp
s.2vH(й
hi
Xwr|pfmF(ƺ5F\VHfBqg2YLmf4hF$bgh
GCF-4j<O|'tqm8aFv3pr5
*[ISk7QՌ#lMF<,sgѓ
E;ffo;%6x};EU61*.j{.Miۼ|D5Pk!ډYS\$rB0s=I=0FEfO*&Shcr+
*\
cuH]7ĩC(J1mֈmhRÿfFk#fet,ҋ*LxXxH"GSMĺSd
5C`Kq[eUvWUȱ9ֶ%`*N[mQʼd8s͌
~.#cVPjSw$l2^}}2\o/6vF[9XwͬK\O(D:ulGvx't:.xȲTcqZu!3*9FɶG,:Q:¸Ha;&:LlUb`0f
AQʻ݈0f:p]zEKh3U @44Toh`:tRn!]elHiW3X'$lr	YMB>%Vt[Fd[,i:`$VXl]W(`eקQ+k3	۩^Mur5Iek*WWy*_WPdB$])yQQiJt5Cj`2Kln<|@HNkʸZ(kAN
E2b_ڑLvzzz,]$>,YxpF!]
RD-!XWUKĪB*dNt7@Z/2x[qktNX%Pa^·eX&OSY|{lˌUHn?ko2B䤲1sX
yLNپqcKpTo#$!΋ o1|fvg9N[ZoYZ\wE1<GKsMϰ\!bܻːAfaP-ׄF|7^JgH3d*-^3 oYy5rY2_jeֻMw}KF`:nY6k$uRLƎRAr*\K)),H,tH,\-\OifjĈc׺r6I)sKŝ6>IRd5T/DiقN'j8/
n&qT%Ewx7p!<qZc?c/g=3X8
i_ T} 	̣őns&&!R&?
WpQK,ϑ!#^Y#߅n!KGCDRnSIELzrу^J6זludc*ږ	@N Q*~TݘǤVŤ*@{'X.*|-PDS
(1 JeeY-WAx󷓿(8<{;+<*؏R.]˥{k?vy<{#@b|Cs`1[ׇf>}=ӖZ^p#\#
3X,!s[! 42TM(:{Pf,Cj!b#a8ľI8qϘ0Q_3/3-y;Bu\JåʏT..WB*ר͸^7Vhj;-Riđ*#I-7T)5TH(Zi(*N`RoLm/F4No0ɂq!g 
` Bne>s
OḄ2tbg8gjpJ٭%LMGbj&)yPR~4iGWc Їd]QՇFɇXvĽWZ}X"ŷ2Ӳ]:||?M>0KNu2{^;c
@VeEw\͜siBp%Gx\p)G[2PJrH
nJ?.+ob+6j854^i *\K.]
#a%]r3]I
3d8g9CrBf(<NʽtH3(ծNXԸ˭b佸Sz;R'jY<t0~Ă0$Zgc̎Gy!֏'x6d?oc؄EƊռ⮱ΡJ9ŵ5`=/qqaRpg_?,;Iqd u.4:ó\h >8{7Kr1땅X+sSg"&MT*+X!8WD)4YB<|gtԗXB_&/LbA}HߓI:\z>΁)L?k0lnJxULʷqW2r}~7W
oPphM ִiϒkw7f1D}jB[F8BrgOWitl	Gv9M%NY<rX|K1z>ņ*č
gk0ߞރix|j?_,;x&[F(/|$@\cUxкuL:Ϧ\帜6d4kwQMFej,0
d'bgZXDݓώ'PKb
  |  PK  nqP            +   org/jvnet/staxex/StAxSOAPBody$Payload.class}NPE.^qJ4eٸcFISiX|4>e"|g_ .pcWCі-n zF#sO,Ks!Jћ0TUG=r4'#ʐױ%	H!C5t<8:߆R*HpW6FǷU5ّpѠ
#q5ah%T6U#6[e'
:*Uڼ?򥢝D,cXW]Qe[ߗ+HFV/-pfGvBiiZi&4:4-"dHD
(.T<2)&;2PKAS    PK  nqP            #   org/jvnet/staxex/StAxSOAPBody.classOJ@}ĮՓ
SB@ۚ.!M$-_QH(3o7_ p,DRM	݇mцmE8*TfB[ir]<Nny=%1N70Ҋ{S&fF#rQ%~k`S{"Яi2WE*ǯN,|7Nkn3j.Gj~&Zw;	>z ;y~PKqh1     PK  nqP            1   org/jvnet/staxex/NamespaceContextEx$Binding.class1N@E8 )rP!
V,Ea 3l5]=ȡkPa_3OfT
okO_/SU3	Y7KNHÔXLvY{}3lvNyzk8E7εfZ[OKG#9&"
	'yN8PK0J   %  PK  nqP            )   org/jvnet/staxex/NamespaceContextEx.classQJ1WkUk {PsRP/HװdI͖փGq[A\-!aL|pS#1CyQ&#tH;Ԣ,eISNZ
K8b!x5ʌpѿIa3/ttKϟ\"8HJEY.SԈ~n$jۻӢ|T:D:ooMzD!Y[pvvX(~W]u=5p;PKc 	  4  PK  nqP            *   org/jvnet/staxex/Base64EncoderStream.classSǿgw}eG~	hE]
H,6,,.dYtui6iޛf:oB֩/l0|ysy	d` !i1$i񊖍*Η#6Fm\b:mLy0UZ뒍
չ9'<`k%}QP#
jb>]{ckbNr):=0Ҟ>*,;Ko&
mota@>l\tlZ(iO)rW":Vfdr6CIe,JfvBzE@,.^:Ɠ,:`rΦh.W
5ۻWu]`GFD;͑'cL]M.GSr! UM%EsՕj(78V*[c@{I^VFBY*%8[ͧsiT6;Њ=!41:ԇЄ"$zCxaop6>9Uh{|obCEƕ̅0&izqF6,!БqUa}'̲n-Bv5Vh`L2;$WXR{)\H.1U2yVVL40㨭>?ko]ڭf͹dSü=P0~OE2]
nnF]K-$3bϐ>ǩkyt㙑mǱAc J%_\pt|>'T {Fw^U _AU& `flf]x9FH6<:9B']uG%j͑iy8j_aVWkvG:}3kSw]{n9Y&e9cx/d
}&yp̢yN1꟨!t=r;kjčo'ko hb(6|\Ov
Ř}f7qKIJ<;E>mjRާ<4$A-61/iվ{[l*Es2CT5ȟ+V=ڬe
5W`1w,rOW^.r1apl=^Q^Nla1]Y!SHno~ǦU~KV=Y{`?Ntz|wpF=y?DuuKN|.J&TܞBKN~.h#LF~nK6YE,[d
Rlti5>@Ikk[n[]XThnEm:6+_o0D;.c6_ﰝ| e _~_ ?=>ox_ ~KV;Ղ3uW}gl5CW~F,c2h:}vqTxkR-Ns't`ٌ0WWRF4n҅e8͛͘3O#+ᕳO	K	O2OɹxB2i+dyy\bdHFr)cdFNqR&2IVI)F.2MIKd$F%$E6q#[e#^Idl~ɐd|QdXrd,y<yPVCR *kd\'Hd${<*G^"I7y\zr<)d#8yJNAh/2]7-yePK޻    PK  nqP            !   org/jvnet/staxex/BinaryText.classM
@g?v6xXk\Åps
,| JxXKѭa4R.dsPo]$f-s&0rXmjsgec3!Vֱy#sp\Ji~a?k@RAo PK,0      PK  nqP            $   org/jvnet/staxex/Base64Encoder.classTS[Un~״yHJQP,i:QJi#yЇi¼tキ]vӑ
v::ѵ7WXt"{ιw^ƤA;-5"AƐTdx]#.=~Uerb^1V<<Cwh4L۱%a,V
d<{f6o-55S/yö픜Vn/VnL'p5s-5e4LzZаGN*.+)༼Y+PҜcW zNB.hԗN7 Va荗
̊qHUrjΡ2jbPR_ZjtV%ZWD)_HlG7yRi/G81CG'rL?mu*'k}/SEΏqLq#PWW25&Ky>̀W`ŬeC>$lߠ<^ wB~"zJh;`?AZJiҮq?CgSCo6Й蓑om&wz=6(rCOS$׊QI9}T1=
R}{
!Bt.DHJ
!"$D}*^eݞ'Qa='oӢ-|6@
 |s!vÛmD\|T^Pͧl2B4w'@'PÕqOfQ5B[xV\­Y X䓄h>}$hY5~&rtѠ\'CGǃAiSbɠ<,Wtʆz1Ə/F0끍DK>(6	GLK
ڔ
JgM!.ƣde79)?$ט.GY
1B&f#Ὤ[|A2TjOT՚*ܩvB@bg}o᫐NwiqTi].>JxE9'RRPK(c5    PK  nqP            (   org/jvnet/staxex/XMLStreamReaderEx.classRMO@}* "~lLq"O!R'Xn]HW=Q?P7;[u+֪*('P*nCUBz3~U)P!'=ié!Dw@qRNIZ=Y`	_&uGO8u0pܔP-7cBkm[RlD
nTO2~B؛|{ސY׬8Y6~?,-O1sX@ 0neOo{f2bOv|(C2YH2u"!#=$"6%!,"P%-r,$ڇO £lg53(Ț`E1F;PK'd  s  PK  nqP            2   org/jvnet/staxex/Base64Data$Base64DataSource.classT]OA=VDA>J[mPФI4I]6SRFDQ;n)1mܝ{1~`ObnLu,2zaH@RGFǒ{}Sy+Z'/yMԬ,&|kc˧3Cφ{$y[vavngfJ!q^"fqQ/N:<TrupiG1?V;EkGzSlrN*iG29vP:AxYUGvUXc!V8cYu-U0L_f0MxaGE.BTyuxqR{?
Uo!xUZckW+דh"<.my^+rgptۇǢ &ViV0յD ]bBA~<^pm"\tGrt\.4Zb15}Ԉhw8 #5ZGzp%@2o0B|W1F+u7hUgh_6o'0CFл4/X:;ޅF[rSth>Zn5<~lIB`nL|nPXB<yj470PK    PK  nqP            <   org/jvnet/staxex/Base64Data$Base64StreamingDataHandler.classTkOA=Ӗ.l
BmlADZM
|>
eŲKvUczg[K)<{;wS ØA1
d0 MB\FehhF$<0t'p7eٛv]qy^k	#c7LÝdP+"S<OFej¼le>YeLY:C}0κnYRVgVmy
;,wsSpss#J4u{*G'h%}=W OF0}c55Ғn-pHɧ]HxB;VN_ՒǬ)ſu(WVmKY|e_/]/gJ kU:c9ϯ
z ]xS1 xԢNA=L`R3zծ)ᅂLcF,<0{߸RJ9:(W榶e[{
Vh:'|u9WXC% xQtZw8]ˮʷ-8wkT{.I]K$UPa

h
Z|S>EۧMyKGC	ivhQ+n
7z!VN=.*rE7dc'z;Dp/#$>@M䷐EijަL/d?C_i*Q|Ą`cbdMrz
_BHBDa/R_(]߇v"?<h
PKoM    PK  nqP            3   org/jvnet/staxex/Base64Data$FilterDataHandler.classodƟ/eۮ뺭ݡF43cttJ3VZszvqc-Ap.A@ @B@BJJ$wz{>Q,$Ё4)I<s1Rqy˶	
jlF޳g9>mxƬaJ;*L9S+g|emtO圼Qjo*ުU螱JвmS%\69-7e07IlJC;BUcG,uM`D2uѳz[(\#7}mFYsè- Tl

@P:<^MrlGx;hI*^c3A=%NH<'qQbRbJ@͗23'7xAVo\bZ%h8ws;2^АÜzZY,J&1/_'prpkm\C&az /Fj)
٭aXZ
4fF
>i`7h/5qm2SoGNrv6Dru!=é:m6	c,|(>>4@p`uhF
9u߆"V^$	li
ip{m[<Rr{Eļ(-B}9uCjMDjSF½jo[uAͨ})ukHf2v@@G6La
^8uPFUx%8Vp0Oz9NK+
}G/ϏfL/x2d
dd,262eU2
ozcl-8c8JGa'uSqV=Ar=H$%%RKeqkDŁ(=.NI{@lAjkABd?b"0YG?PK    PK  nqP            #   org/jvnet/staxex/Base64Data$1.class}RjA=GWm5ֶiMBPY
mBڀ%uXGY%U		˔@E;s=w~	<2xa#6^bakΔc;|$VC>nvX*i3gOb[*љzB Iz<8Z91QJ	}(tjwS%~.ݏ<o[ệ$#'aX7!
'_d\yYyAo¾-X9㍅mͥJ+3T(DK3sO_?xF$xcIN/)_h3c{$] ;F΂FV*FOїMh!y
`.vb7ىzY3}-9?$je<G$?$PKHL2t    PK  nqP            !   org/jvnet/staxex/Base64Data.classX	|uf5jA t qZE`IKAIFbծM]HL8vb+$Bp7iIӦqӻi\7JZ	~7+ hKVyyc;^y|~Ee\,"ixUG>^c&cJ75 F[^QokL]>ouu<~~HǏ
?ձPLbe=Աoez>ƿh5o:MqU[:6:4"&K.䖇)O4?UH()Ԩ@ pk,1S["Hk$7S-0SH:m	%Mٰ32#}D︽kQ:I0`]$dbD]l'5DRfOsTDosfUf@mO&̦C=<;3_<+J,ZXNX]Zczs뮎mlBXdN	X:?n2MD,ப̀L=0;Q0'H*&'s J,oOz:03uLdèv9ftf"ѻGmɳ5M^9莋hsosy)ʂm){fqRYU}=A^fz,Zmz͢UKe-[fxQ$E9}+$y1Cχ2fc*9c md.1]<Á xl5(ge<q٣p7sTH[u3#ٿ96`Kt+ӓKKw		Ĳl.LrtUǘ f}$HMxeLҚbޛe̝I_M`_u+j}{=rI+3caҩ%Lf?c'SM)ǨQFA
{4*RqHbǰKL4[r#O2fw?ܒJs9Ǫr\.Hi9YhYEI&x۱.3Df:xy}iDk~
9u,a)ө6I
R4{o
,ɾcdk堁g`7kS;e	N΃cLG3K*d@
Hx%(t07L碏FaN
-+	BMԠ2*hATi>-d"|KjzcQ$3ScF
Zq-7{#q.|3)C-jyOhNj"kjp1!NcfvRF-C0h%hA
ƠtAh/Yh:7X.f?Mm D]]B$2pApwNB=SUk-Y;-T hARfdi
f\|1T_yT;	301.u )[S
Af!>?Θ|0/"nM3PܖcJM/Wu(lѬΗMq~RA~_3hRP1UhЙfˆTOzל
pZ-}Pso'Û;SxICeU͓KXGK,ֺZ+9k^E̔)
1;+LqS|a6xqHKkA3lr[[N޳^.(In+2NJOAӌZm$"Je0_-F4'T2n]b*sbl1֜n3KVC* [0%2fxXvֱu;\7yI)RwI@4F]
F&7:Iu:VxІ^&@B.<+{oax#\C/Cz2CFy0o8.goS|a`nc=t"(e-,a=4Yf廅s,P6`#B1+"m~OzEO0	"RYz*w8묏I'P$+,RRe<R$v̭F,Gǆ)x
ո7HUBFY,ag3)E;z(,JkCwx芲KQN۔{[Η~+?0.v5QkA%qgaZLwdQ<`_n]a3ǌ.~
YELGQy1%g1K@脃i*)TqYQ%h<pUA>$I(hABŃr:C|<C1iXJ~IwSY
QI &ȦJ25'Σ+d'ibq
P@sϨ]{+ｸ@bf<C;}137#F_ۄ4ܮB΢ݒf9]g{x0J,i\CkX856fnZXDw HbGwki%6lUhl"JǺodIޏ|۲klP!f4KƵtkI5KiC6wT

|2hvr;tڑE`muCFHt;}qD]qoрq-:%Zo(ˎ9X?nฃ*kWz`rϝIF";W6w
k6X
?nq4<U4E>,|}#y,袣KP<
ݧ(ԏmBeMH!aރ}xS >G=x>ty;M+0>o>s呗3A=0XN|s>ֿ/s η|>b?*\&"D2
bc3B<K:O6x<eObv
a,
{е7j&&OOzs(z).<FƟ*dgJ ?wK-[hoztBb}\jF]egުOe9oqGpԦϮE㩅FPgZay&x陬BZT\1*R¹Gc%籬+\s5<Po<0syQ?t5X>-bU\v1[=a'Uf;69set-jEJNWp+}
;e좯b/;7Otx6\+?q#W7n8>ayB$7}MQMgTjqx>֠k|TS}44,saޤWiL6K6s1<c]c
pD{p0֌`)HLzPػ@q};lrD?#6ɏ?n)K?wYjXV	UVHL6O~:Z%#XnbCf6]扅ȧ_eY	N<o|<Do]x¬+Xh51v+
C2a4Aӕb.#gx|[ʓpk5k8;g:''
*W0]xB|uFOݦ9ײalL>+hc{!@(&3"d9|9c{WwpQ;
}ԥOc+7m7=|}mh?-(4jOF˹ɾ9mC)=~K&r4UvMt%rSJEy.t\klRWIMe8ɤ[͗nRWu4'V4ȉLPKB.(     PK  nqP            +   org/jvnet/staxex/StreamingDataHandler.classRn@=8vjBKڔPh!Js.oE}	VԖo%uؕDk@Uk4iٙ9g?~:*T- vXy >4rGr׵N+stvP9c~G0,5O"8mW38r}Vo|,ƒR>!?^)bX%&4JOz	RT::#:gN'0Bdϰr,<YZ,Wnoy0:
oƶ]oSpBuܨ}vѥJLW*L:Lߖ9RZ?i[fHlư6o;[)]ܑ%
y=$k%6JJJ%i Z_}%7dMZX$a	w L$[!┢-ĴxZDj"YnTXS\y\Yĵw=i)ѺAx4)ajx+" SK"@Wy.*3<uߡD7FcPK8    PK  nqP            (   org/jvnet/staxex/XMLStreamWriterEx.classRn@-!$B$BSQɴH
)Yu0| xvZ켷3 ^QKA k,
݃hDS	١{gps/bx,boT.=i®
2kFT~{;V]?[{g|:dHc&s/<DԲי=//d0\/ƉHk#c0 f%JcJNș kd
}|x͢/cF.צl][Pl[
о:c9W1J=ߧߒw^WpA;.U UMF\`sL9F0mYy!P
_w	wm+VۚI
*/PKf    PK  nqP            .   org/jvnet/staxex/ByteArrayOutputStreamEx.classT[OQNwK/.RnJPv)⥠
I"$%$,fwKZ~*17_MFdϙ3;7_,y$Œ U,Q1,(As!3t->cmU=y"yVI?mCN35omz7l+77n\Fr9cQes(^ꮞ뇺v(2e]Uլy]p7[`R
-Va$1,-gx2 "#"]pu/(kXV.5CLCY kbS
ᑂ<ቂȄ`4ücCl'O+w%n4FPs'<ަrUkGQ%7xмTBC.k;"~A0)
ig«@7QځaA,.  (Rvg\F0Ԋj#q XTO=6~D>E28D+ǌQaix_hġGsfc%W+V=&=5.,)-yϤE߄F;k:&ޜ@KP<*hH4Nf1EUaƴFvtMt"nzCJ=m
L@R?0pN2yIp7PK6Y  K  PK  nqP            "   org/jvnet/staxex/MtomEnabled.classPEh4 
K'XX՘<ގ!~%Fv){.s |# 9IfƲ;~Jp;
Zԏp+DiʸdMFiZCݝJq,d1Us^Mrw8X/L	/)wN&Z;]ci
ܦڮ/
tPKC   L  PK  nqP            /   META-INF/maven/org.jvnet.staxex/stax-ex/pom.xmlks۸ɇ^%ۗįX'\C"!6_܌{|OQ]32^h'A܉_ݻ7ho7BX.Eķ#	Df32QёM Nj	`Ή'Q 
̟#HpF\)|a~AK/m%NB =YBrY((:e"lG,xf9D(I(DQxp+	ڮp脙>W7ZE;TN\iΎzR+BK//3YPXNrL!Rno47k@|ߢ%ءH/HC` mquu~i&^`SW7^K-d~"%sm֔z>S%V]+SXf% .bAH
z.NCۅO#]eM0U(	IP@o~M uG-Rk:gˈ::AGW熞 6g\RR(
~
]t
|l+ap΢C!x!Fl4\-YN ]!SҶ邺AHv+5'J.1JIbƺPPrDYþJ6X'%TI069
:TjW(\mmklmN9
' 6|<⣿N@ƷY% 17% ـz
"Vu?uFcr="&`z)1̩W͞AD3%rG!d0zC,6.TWP"݄\/1ʰ6H̀{РWS`UBIr%W ZPEt**u-6nNLBYȊ5V2T6+/ 1]ZnlS7366z1eDi#~%ܜAWSP!`F<m8!ueTJi#jȞ+4,XW[#
g'pm"Wc<coQ2]r;Q
Oe"KO!]Tv=:'. m!H(_˷PV;Ub$yEvK"J/HrJKUQ542-=R] ^@e`PɪA~25 2^Cev{xQ.	Yh_nؗjS@|+
h*#3OcVЍoΕiQUf/ΚnC,Tsᨥ'gO~LmԥF~ dK\ttu%Ȏ9[5V"UQĜ6ߧhِ,$MuhHHf#WyN;n$w	S!pvdˇ58G4VYs]"Č	Ue{T}.tMb'Ψ>R}odX{lPp7ʶ^qnzLћ^wy^f%^K=YhO`mf\:`8v09]X߀=ޣ2VR٘n<vi2P}2. .x+uXE.D˚xL(sH޵6ϻ^bضT4Nӄ"*Cj)XYTJN Dg[hW]
VG=GyO#:@:lXiNLH|ހJ>Pt#"瑼c5'g_OMZ1zaKUS_(6L{,x	e6g}Weroyݸ̏J-]kOqBo-vnmD͞.[[I~6gH/~]]_Xd4
>ch[Vf;Xi"Q/:fuyҖߡU0K:ܖ[
mt[Lp٢tv
](?C.$j7x}!kkm7Km\^kI\J6X/4
I/D3b5{y}2[]Krivq<t\7XPt8
	㨓YvJU	Ҩu"DH>6»ar_ʴ|P UGqc~Dk凜Hpj?
>ilssk@H\G:/X^P'7->W4!卯cAW#>Am&+"80Nţѧg_|Xj>3QߙqV1z_zeӓwMyfE,YdmX
<zYʩ,C-vAD4	l{-ҎvӖ9kP^qʌjW3ռ'}s[iw̉o9ګoIlPtQ$l;0T-k0"2):񸎂1:{m5+%?0KmzEmyV^N.
]y*yVɆjleF	fI)f
^7@_+V)0+y%o
B?}|Pm]Wt3{nŖ+K&=NӐf
_Q*
Yc_nʮhޛGx7ԟ"UR
=+95Shr1wPK;`
  =  PK  nqP            6   META-INF/maven/org.jvnet.staxex/stax-ex/pom.propertiesK,*LKL.L-.IMJ//- RK@2@Ԣ<[C==c. PKh7   :   PK  nqP               module-info.class]MN0Q6:op	b	8QPQ-zg.NoL^MASQtΥl	voE":{4L_R2L	(0u<I0se|
ñqWmE*0بZs0GNW]|Rڽs>ou`uf]>huG0,qiS]]~ PK[   q  PK   nqP7dXk                    META-INF/MANIFEST.MF  PK
 
    nqP            	             d  META-INF/PK
 
    nqP                           org/PK
 
    nqP            
               org/jvnet/PK
 
    nqP                           org/jvnet/staxex/PK
 
    nqP                           org/jvnet/staxex/util/PK
 
    nqP                         8  META-INF/maven/PK
 
    nqP                          e  META-INF/maven/org.jvnet.staxex/PK
 
    nqP            (               META-INF/maven/org.jvnet.staxex/stax-ex/PK   nqP[G2  f                 META-INF/LICENSE.mdPK   nqPA                 \  META-INF/NOTICE.mdPK   nqP
"  c  )             
  org/jvnet/staxex/util/DummyLocation.classPK   nqP    1               org/jvnet/staxex/util/DOMStreamReader$Scope.classPK   nqPHާ Y  #;  +             4  org/jvnet/staxex/util/DOMStreamReader.classPK   nqP  
  *             0  org/jvnet/staxex/util/FinalArrayList.classPK   nqP%      ,             2  org/jvnet/staxex/util/MtomStreamWriter.classPK   nqPi"  T  G             3  org/jvnet/staxex/util/XMLStreamReaderToXMLStreamWriter$Breakpoint.classPK   nqPb
  |  <             6  org/jvnet/staxex/util/XMLStreamReaderToXMLStreamWriter.classPK   nqPAS    +             C  org/jvnet/staxex/StAxSOAPBody$Payload.classPK   nqPqh1     #             E  org/jvnet/staxex/StAxSOAPBody.classPK   nqP0J   %  1             F  org/jvnet/staxex/NamespaceContextEx$Binding.classPK   nqPc 	  4  )             G  org/jvnet/staxex/NamespaceContextEx.classPK   nqP޻    *             ]I  org/jvnet/staxex/Base64EncoderStream.classPK   nqP,0      !             P  org/jvnet/staxex/BinaryText.classPK   nqP(c5    $             Q  org/jvnet/staxex/Base64Encoder.classPK   nqP'd  s  (             V  org/jvnet/staxex/XMLStreamReaderEx.classPK   nqP    2             W  org/jvnet/staxex/Base64Data$Base64DataSource.classPK   nqPoM    <             Z  org/jvnet/staxex/Base64Data$Base64StreamingDataHandler.classPK   nqP    3             ^  org/jvnet/staxex/Base64Data$FilterDataHandler.classPK   nqPHL2t    #             Pb  org/jvnet/staxex/Base64Data$1.classPK   nqPB.(     !             Fd  org/jvnet/staxex/Base64Data.classPK   nqP8    +             7t  org/jvnet/staxex/StreamingDataHandler.classPK   nqPf    (             v  org/jvnet/staxex/XMLStreamWriterEx.classPK   nqP6Y  K  .             x  org/jvnet/staxex/ByteArrayOutputStreamEx.classPK   nqPC   L  "             {  org/jvnet/staxex/MtomEnabled.classPK   nqP;`
  =  /              }  META-INF/maven/org.jvnet.staxex/stax-ex/pom.xmlPK   nqPh7   :   6             Z  META-INF/maven/org.jvnet.staxex/stax-ex/pom.propertiesPK   nqP[   q                 module-info.classPK    & & A  2    PK
     TP            	   META-INF/PK
    TP       META-INF/MANIFEST.MF}Ao0,+XaB вRғŉ!6@97h
~&[iY6:
v& h1q(K(4X
$\ns@whKTJ(3<nS 6wʍؓ!
И	h@5xOaN!|<U<M
hXBs2j3Enw}t;uIwA34w${{heLVk(<%7%ʟP4nA(pHJJ!wyr
])gx@P{k%R]L#l25]ھ?VΣ
AJ՚W*Xrm8
MAacsjfMHŇnZ(i/v\\~	K?PaG6XQ?Ju^ʳ!{_^ﵻw=q/PK
     TP               com/PK
     TP               com/sun/PK
     TP               com/sun/activation/PK
     TP               com/sun/activation/viewers/PK
     TP               com/sun/activation/registries/PK
     TP               javax/PK
     TP               javax/activation/PK
    TP]-R5  r     META-INF/NOTICE.mdmM1z3z[ZX!TiAf܉K&L8]"ñW#d2YãtљWꧥ&>l#7؀
t|%}Fk>aڃ
nv#RQLXnokćs}'V+؅806+kQb) 4SĢAN .ȩU &ٌ||K޹D:a9属Q)lKS$Đ(6գ,߅Ofeݍ|K^mLC#IBNRD_49}topt%52d:ù(\jwj؂%cGwBzԸ겹]٫oDЉy_}vN	G*qTM}=µ-aږZ橥lc-ֳz"aMucyds	y/O=ԛ^PK
    TP\ݗ)  E     META-INF/mimetypes.defaulteN0SXu=x4Mָky{MTo9Z
1]a
0z+GQoU.\2QOko1 ^sͮa(uG@"IP}@&c/M)291gqnϾe40GXft=)uS;RdЄ6&0L܈Z.U\k_"#ғPD-J@)Kx-9$.zLȳ>^H	[
/ùAfNv$PK
    TP}`5x2  f     META-INF/LICENSE.mdRˎ6W4($'Zmx}HI4Dy)<AKآ#|rz/NrjR3v?9]نhN϶[(~I΅yr1B9Xr#JnlW:i0'>yN0ѵMɨ,4y&:fƏP7~֏M!#ƭa<xuu
C4ٵ6C1OB?ضo`ſAvw]au=v"c<*&5}xEZb(ʺf[<w'ddcwݸԼ5!o2O^ƤA';vxkc@p𳥋{lH?/11 R86.s/I>\=Sp) 
^KNXomdYpUVFem$^|a:a	%]@NqI*]) 	UFp
Q3UP) ʌC+m7˖f21eD^L%]vRs-/`\a4^V?H+hH(4/9e/&J{?p<ˌĿqcE_5
Q@۲5t~aWy6҇/^j#Lm8,s'R'j3L1,	C	ꗵHQT3BV.+C{U
ä: 8AEOR2o8T89Ǣ%cfPAok^<VȈc63̮:%dgi$VĊ%\-9J
wPK
    TP   $     META-INF/mailcap.defaulṯ
0yG~k4!Ic}{SqQBx
$vj-LlIH
ah`WGJPg./j)&u~d|i<Vҕ7{PK
    TPb(]    2   com/sun/activation/viewers/ImageViewerCanvas.classR[OQζeP
(xrIE_a{l-]ĿUDqڢ%1&휹~~3E2pSi6H\T⒎R((DfuL-?
^C-,[yV+UDɐ\kV)1SXo	%pMIedP>\i6,ߵdӵZRG6Cc-$CM}ߜ+5<sy!_+_(vʆp}jIʐ;>4pCsOq
{u!V#v{R{S5&1ab]EKM%X0K&aIu7paJW]Y1=Ϝ*ضqah[&%Dh^KxED	3۳)W=ގzmP=U$6Kr3z!Xv@,A$HREi0YfBԓHTRPJ6L8 >)LqQUQ׃S3~MU*kUJ}ERY|!*o0*FMW[KGLH"{KG,L4a!+
tFqbb1jzjAqбJw4u<.`#N,&PK
    TPe	BS    ,   com/sun/activation/viewers/ImageViewer.classVwUI:t.PBw(mA"--ڪ8M2ɤ.#c=ߝtl{zw}o0aFk	_BxPC5F5n
cH	Vaj! g	wDt6![T!9!	qk
F1!뤜nJq
x,5DOJO=9ϫxAAuʰ'-=)'۞/Fʳ&r	˜4|{2kCPD1a^IG
u۰;;K28nlλ!.'Mz,[Ȏ1I!õd_S>oz]N6X3y
2xZx)N5ﮂ*Ay,e.C\JI;WcYN-= -+,0d[yfbR0,3[9[^3m:㠍Myf td:ikULwRyS}/dɀGFίU+1齎gb^kbfz:Ԛ⭳au[YΗ2wYRں@ݶ[pkq^dި&ܬtWtt. LukEAxS[x[;84ΨxO@Ǉ8#|Q\8
΂I;]qcN*U t1ˎs8Fzc:yp_ߪN)\4V/ ]Ur+!^J>7:.6=G1ьcSǐ$BB。<J
̔sgo숙9g+T϶۴օ
,6l|
ʅʋQH|t-rLB$qh68S\nj=ҏ4oHzff/(h=C4,o&ř/ʢV*H<9"Z{*R~v,rF.gDhr<QyR巭￉K1lY٨D"o\ 4'iB	Zlލ,jشcLE(hGU*[JF|FǓtwyPeT				'BI̠zx$~DU}s%]GQUXf4b5
iAmKNp;sUp	`?Dp5f,|hRJہNI=oɇ)i!wNy2'fP;̜0~n`	]-!,!5GáEԝME(9RDcˉS
XFVʶ/EgpmnXSZQuEĊX˶UϠei\@+%rp
/2>S41&[yֲ
jVt#3J.G$柢]x	쥵D/q1yjIhDbUAP-TYZpjZG{NZf*jET9P,E:͹_R*N[
l&z&
3(h#@W?e[ˆnbڗ?FPK
    TP  }  +   com/sun/activation/viewers/TextViewer.classU[W[E&	K(XhmŪ&wRBA@IrCsKտW]
kYO>_oNB!{f|s0\]WfA2\C2
0jF_(D9WXS5[ӰFsa|
5T-5JR}B[
RCZCF t)Вܗ2.*tE9Ca9Ym;;#\Ik7:vvOu<i[iesðy)P3jZ;γѾ5eƤi|pVeZiN[g3;/)Mp
^ykޜ#ÝyR-UR#zh8i*8<{1TXACcuPtfȼ@G~oZ}"O\aEif|O5~#Oœ,	֔@+3Rkv;$E5wNv
w1x]17}1U`uЊ]t2Ɯ'hQ鸅긇]r1Iyb]uб]%M
@0r:,:>Cw탆Q 3C8ƉI|AorYZFz$ĖF=[]RU)|DB) D{!=o{ٗܭh
& u͚n]D7=mb0I)}Y[n?%\&ѭ>9x.	k\	frvZ.W(z͏ƒWvE_VشeK0S;TR9n
A)E{#EԵ7Ric\9)DLO2e1K^ANQ[BFs]SG2=:>	15)a7/_?h{@+BhG:Ђ]dKw0J3d"1 O8'b1PԘ.XBc	M	~9&B(
}o!ZI}AWly1Z6~B`g]B/_B[ly/0]{_(ӏ&X$gIcr*	|OHχ1"<&3D8N0׈

QdG8x:naQw+@tUE	7bx{O.`U/j?PK
    TPd[	    +   com/sun/activation/viewers/TextEditor.classX	x\Uof7y}YIim2IZ֤MK4i#bZ%̼$$3q%ipB BQDU}_qWw?w&t2'{g_3?
`0Qhû*6p
C	LX8jr~wRٗ X{e}D>,M,㄀|TI&|Ld~s
OxD$>%ا{LS"鴐~gex!>/||
x|f
~S-#k{l`~d
s㎭=j7c^n6I!0lG^q7bTVŢ=XtSNH a:=)2}4K;(Xv幾s
A;hh=Ǎ&*3ۢ#I{$>0Ϣ(ڞ6n#+hdЉ,[k˞
jBen6mM^XQgPmM=׎OQi]{86Ԙ9:cN<qH.#p,D=onE=MҤM`Ok	ˊ\p4oK!-ױJc?`Qas4^"GCE(\\37揟6tԉS<l=v(Y9əMħ/GVZ1<ix5N4"
E]YaZx؉C],]ĵtsNvh[D/fI,HU)ˍ3}t}iuƝH{
,6wȉ&RRJĩhgJ=گ(sY
3@-銍v Jf~rNЉ[]vcg%趰,/pzhG3>O	fR&[1]{[E'-&RٜָW~X-~t|E°x?^WMA/_>g,2ҾeI3K)<c<K_Ⴖ=F1:Yhp&|o<&yAV*K*@R&ii&nq#2͈J3U쳙C
l
ZjYVb%Pe*W-Q:0gÜ֒nHz:aoY&<'*WO`,Q\:RgvOw=P\!TaU9X#nHrXF&>OGкF<z.I@`)mYv4< ^/֍?S
r4s|ӂ&8cac5Zje(]4O96?<K$Ŧc_1-܏~ح^	:7fgl;NIY9LuLòdZ:ZNop$1 Avt@C,s,TyKondw%j2JM:;L[r$yxєJXůxLR͒'JUz+'^9ʹW.rzkÏP)Ath*&''/ _@ C@@@ 3IɓI(Q	4O$ybObѾP(|~7Ť..*Obuy$j<MBL>$V	b5c
BT.審eXM+P .7b-y҆ZzG
x%ֳo1\{S[q
iia:dV	? 	bL`uɫ)<<p
p]SmXP_m&>}3]D頦|)㾘_a&ƽo7v1pJ΂8$wH?CՀ|X%4+έ1"_:iez&1X)*Bԣe'+kh`p9[%-4D-e~<BQӷ/l
JgK1Ԑs%S9f$q(ʭ]ѶenkCuZ
)0^kb13:Rg=^=R!\oNUβ-O>,)Vgn՞rEQ8*7&qzB4M/;;y9˖$L[*Ѫ:f*f&zh[XeGoC7Żf\[6zVf;!*x%ݙ*ڇ7Yio#>Ymn2i,3pJWiPQȎm5;cL׻fqaZEnJ3Hjī҉`W{+xGF!}$IN0cdCvu*!zVgPK
    TP#c  	  1   com/sun/activation/registries/LineTokenizer.classVIle=dsb7+uijH.1i	M4%{Ob-ϸ
B@YJ>CZQ	z8,'@*!U	8Mˁ}{Xc [2>80*<!!1I)~#>|Ha>1(11#2&<8*c2|^3CYSAaBMFZ'Gfj,31+3	.RsKKO&lSZ3	5C7tk'!52A$ՏvTZDلPWҙw$̂S~Zڌ`9_D~u朞;-m,&ܵcQ5WAMh6_5m/n-DhG>1{ZO[[29rs#8S
fBʳo,['ȴqThF`z	
+oGAtSjI8%9~aހ^SHI0q ;VHZU54re\i0J
%;(CZA=Bi͘R݉v)<6U#|UM[fYR8n߸V.J8|d%_e}^dOkCUOAĢrf$	RXٲYYImtd}@qW+z{f13˃6=amkbAaV;z
Ǳkp^
w*<a-H~DOeDDثves4zys]<ŶECIΤxS;m~?3?	?s06RFndgL
o-KI%ԜcK\RCV`?2etn8nV46as:7xpG9tu,Fv./O=\G_H'4 }jw}R53vqp<RT\J,~"~~iwwH}r@pRB, W0ޅYBїe*.~.!*"`&MJZ]8oaַJ&߲2x^|f35496ra-<ۨTA~jaj	5AfHDAUxZED
ZO)/y5u&-Z۴QmMK&['Ӭ6V~n*"ǪU<ʧ.^Z«xxEcy'+ks+WpP`wBDe߻?u
xQF8s+ě
){o>v7=nb	= PK
    TPQ    0   com/sun/activation/registries/MimeTypeFile.classWsSVteq1B
زe
CxɤƁ:M^K׶@Ɛg_	͛4/BMiR i03ڙΤJ+6={o;}rō RXnYN4
#n}R5<nS~&F5~n"'J3nxórFsrx^{A^K^vA^n+r8«r7n]xC~t-F5tm7ZqH~)hxWџ0LOh1lFb -%(MFfP:(}qgmD,i}c2JBٙ34F:&=;"ɡ@&llƒ@e±!m)'B$CImKdp֟?KeQ3ͽ۲FdWH)W4}wHLItx#ei0m횒eH候r=MX_
]r
TIvmiX\Dl;L'_iRf"ڝP[@8RF:d,oCL2ܗM"~;J'6yKY)j3kٝe&b[F<ǯ-~3u8)&w	hP#KےtDqIV陎{Хn	T(.kgUY.ᒻx]S%Q	.-A߮B&ܱLҿjՊRۘcAЭ8"2ef?ȽWsC.W۟SQ03Iq:r#jV"uiҲX>pV9+h}Ljs*`2v+vV_f
R:/IѨj¸ƻm};Hvh쫧E݃V5e3'eJҽ窎c8Dsf+2d[rVR:
zZ5RG693n&'8#Fz=7v4mdfr}Ǝ.9bc9ߺLesSN-jeԏHVhܝ3♫~-079-J%YU\X-'\#SL^h"\
+t	1ey낐-`w=<O7<'aklqpQɃs;ڠ}UAr^ǹqX
hGqv? N!.>pWB>nFn"ԣ	S؄h%Hڄ)1Hm>jcpf͸ (£v
5485{5pCN޷Swx0<dXA8y=͞<,,U$"pp@NƷTEVki-Fc?^tq^la|ߚR^L(V0x2[Ƅ((^y>VTpX/:3Q2۱-3eVj~kZ&PsL+r~
3R_o],*wbC[,_<LxYfxJޮ+䣶9V6`0B,/L)>d]ы:Dy!m
WNE2QYk'5_`,IxXP		v9"-AZ9v%ce>E/IލH&0Bz0><Aģx
<B]N,Gѫ0
}kNI3j,KU\b-]3k+7QVN"nqXt2x9\3㟓hAOQ|%fdInUϒ	4ScNOiqo?qӢ{1\z$Z{NO ;WQleia
~t:{]XCY4egmHʢ+gƮǰSjfTwYQZqH bYX^p1ey
cNM4!a"%Pɓؔ_fS~5uv7ȧ7XhA؉CHj9L-Gp {ǧOj;>?
7?|R~s3礨	A^ᔨ#gD>qV܃sE/}RqswQfz\˷ y蠷Ym, 	;N}xN'SOMl`m*Khhֺ.VCEloa]VkḈMDGCvPK
    TP	e^    1   com/sun/activation/registries/MimeTypeEntry.classRMo@}kMkA(-	)4q
p(HH	Ur%lؑT_D[	$~ ?
1)$ K3޼_~ xf+Ta`Ck&<rwṁ4?<LD2^P/	QD]j{<z@5|/8b!ϓ~	Ó
d/n"!b1]
RjR, ~F<bX4!HvL3kq4}.H?}J2%-XX"VGB?Xha)ACF{ܧyxxا-.I+;B }4V7@FvNɗ0y9El6;d7P&l	d0n*"zm4<i㒗wKWh9,+B++2[g;SpG)ja`]#/U,]0K]6vPK
    TP"%    9   com/sun/activation/registries/MailcapParseException.classPJAcq5MTy2)('G6aQbfQPOΡUͼ8A
v84kjh	8gƚt(P*ѽhl6񝚄4(PXņ&8h&JfRYID^+j~D_<z΄@?S9"+鯹@}eq/
_pv\Tpp8PvBq2[PQק,(WK|FNhu
,Cb2/QG\aw*Vnw?PK
    TPYǋ+  %  /   com/sun/activation/registries/MailcapFile.classY	xՑ[4-tX|!a,_:@621l6,k(d a@$ؐ%1BA3|߷_?#<q:I9SxM/KM:e"ůd|zM߸C
/~ӛNvS	si2ACnMoKN=)G2n:KHF7WYpDOrGIqX?si}&"iDcr<uf7- UaYRdkhvSL\
I/
\sܴ.ObKD1:$'<Twէ(X>Ne:yγܴ^y:W\s}xco
nb*hKMZ@8nIΈf{0'jn5&o`>%
%Ne*.Ņ5x(][䪏uY(j6E:@G=E` tBئ[VEA  X:nvz!P8Y
5wEKQ( 2n:8D{4V&½|{M<!ӗT3tSkqa22+L8 LTe
EBݮxpS{CPP3wzrz͞@<AYn`z:%(V8V2=bS^1Y	{<k֘	'd\U͖է|hv&3v#2yҶ5"fF1|;CAP\5h'eN틤Ԑ0-!Ǣf*OQ3ڹ6ΤGPkY	xxg|'wu'ݸ45ˌy0Ι(&B>S[{5ZZ0;::6nH[ g{ .PFj0{(RQpznF$bVYA$7
 Ffcy4!(Ō.Nj~mr dhV=P$߱x}GFu'n3a,0;[c_ <i-RYE&3|@LKSa')Q
hhP.a[1
Aa"FO2xq,C+ ؖmPSօE|5v#%WF

	ڒLS?-96јѢ'b3>F:JX@<1x1ּ1!%|u1z^&[RZqj	Oܢɭᵸ7F<6yy$S̺x<PM<)I<+f;Ov> 7t꤯t$#4j5D;-}>sޡ78VLu+N?'x
Ʃ(+/JNdt-{vXn,݌̄\xipHǹD~^*P] b73Mj˒+/[yvZ
 "^zamH$fϘKrkuk-ommi)+utQxQ ɝQcQ[m3qP!hݢU/ߩ1ֽGu">L/ιrYDʏ(iO8mݏ1+3g㹊iV:$1.,d.ذA^]12z%m@M	.+;򊣒=ozU%cQ3Yd`zq-sIYf/ߘv[r/o^ذfU=6Xclf='#1z(%cIgBTgK4Q8L2+z.!`p:hhwk&zb	˕\m`tRInTX7'zׅD^;6YY4EԮ6
<VKcHGiG"9Y_j|%)A۱"VGAR&h5kG:9Eʭ¿2R7UTЄA*"~*
Є~6SqݑUu=~?CS&R=M@*\A(c~)Jh:ͤTEau
5R-d,%yV/%wmBJdBkFۉc.`bQ
E&Ϫ(XFȠnXC|b.h;vQӮe}TA*9?E\=FPD'P3-K{+t)^l;&JcUp9d|~Pa`h8gm &ҋ7m@ q5eY{p6W>D!OirSz,pU\T^Vѱ4wJ2$~]-bI94WqMpbﾔF50?	vUp'g0A\C$&V['ڮ`
X,C߱Tw!Q0]*{̀yYSH$-隓|c!/w%T
\
jAA
 F}wȻv!0APV׋tAX%X!:ighӣ47DBTMb2R>?I!.ػ*GBkAcNhR6vy&Q UP>1P6 ? I~h xw^,G>:UionjO@dXfs?j*4aoK)AD+|ex4KT=sBX2wr"lRYIjT|NҺ~Kyك4_Vx!Z 2^kQ]EOAYҿ%.JS;"x	eW,rZQ;ly+װrE?O}E++^A,50{7 HJطeXJϨD=pϨrU܎xc{8x]p]H(>K?)T<!vC(Ȼ{|]0~WNf܏wLP 2{"1҅Y߼nPm_S<wSv!?:Tu>^t	eN@rӪ^i/ec%'WJT+OaWOG6KaJr%H1n}nw
͂RQXMPBʡp14# BYv΢gSusΧ٠nቴK6.yS,>"1?9@#ކq!ݨ~s~Ny6i~AFK8kK5:͕GbM>-m<ckǂ5:5kYSQ_VC5ck)]T<S
<՞Zg*_.ŖnѢެdxenѬR[AR%RhJ×IdMzݫYaIZ/4HFj;DVZL^&[Y՝-MOfPc7:s']hrzsZq	^wњZr\~YdHy+I͝իysS^Q9Ɉ!c^æZ<^Cl(kH]xI2䖫4okr9tp"`n~e
#:7˥Rsh+ߛ@![#zhhQ蚧J5,<?rπhTȵ	 '޼D?MG]6'rιrُ\'B>j]T^@
Z:ON{͸{xJW@2^MFV|=gK^s
>-w8Hp'}&p78nsx+y+q7oq'Q3{|	_͗w򍼛o=ݼG mSo>p?;W|??|a~HQae:*sy%ɏ*&~R~R.秕+r3?s=|PyWE_.~YWT4~Mߨuu1οU:R78AWz+{ G}??S)OC&yE*c~ǽ.r PseݏZZ<!<pDPS<Ekab`5OɌ)#9h.w*+U^ Lx~r10#7q$8Y9E?ARCRG[W\z$X6xIy
4<H3Ra*BR0-wJPSN}B{t.9;3:ў=kJPr[9t0e}N'9Bziz>I:a:ؖHiG5虧cRu]gC\8:\~ђ8x.Btv>%;1r:OJELWd/Dѿ dV h-d)²񨦤GL	aDZ0RT:Qq=MP.,U;`Ic>$>IǺOZPNMClg4]iҒ9tP7e+4A1Bɧp:C-kU
)e"]uJIZZ'Eמ]{cZ2SuF9FJxfaAZWԽ6=()k4\Z@!y`&z+H%yjIH#E~u_X
PK
    TPVt  C  4   com/sun/activation/registries/MailcapTokenizer.classWklWfwqli⍃zdKGk;NNIzlOwg(mڦI[Z
1H`ɏTNH	!~HB@Jj;3]?R{ϙs={v|7&x`,4*CA̦E1 '8C~|ɏx܇'X'8#(O	\ψճs<// /	 g|=};N %HS5̽ji$Tҝ6 ITzw2%!ӟ(<b_3LKI&}er+әLi!T%Gj<#׍ķ1f)asG5CJ2&΢/L
HS=Im
.Vy/
Q^MR7A-VP9Q{ռ.p(zA­LXP4jԏ3ymD/PVz6Y
iy[cE>XBmA3->㶁5#=
h3c1m[.DRwY5)SJ^rcWF0%E3eBf(kHq]:
;%c5f8W4Znf.o45eՎnfX}NpBf>0}ԌzJ6-4)0ZJ/jq|XrT$^z)	겾P\0+36]Sxaltဂn_@Wѧ|S&vAAց{܋N	͞j(G	F7sMSpr͎@oՂM
Ⰴekk8PMUpPa,&AS-A _@V-:;

ƽ?xD˘HfKaPNS$T+̕X`U%DI@ ՌB1uDu}Occ1$!Sohdob\5:&16o7RǉZm^A
.晵fYs39scL Քхn­N9vRl\1ܱMӐb!նN-K\F ^mp3o[F:d#Uiȵ>aظJPA#GGo,-ز,,/4RE#+n
c?(E(6#&~t68b<$.Xg(^Z<b\p+7+ǠM9FCIl-#\!\%*7"ݖ]%LAz	ۉ]><W,aaH)j-v[~OX.Pb.-p`v	JCϕdnvsx򲑓KXy᳨'&0&g+3^`l<"Զ
"O|j2njeQЙk&1ˈL"Cͧ(b~ <2RJ>;+(
'':Nf>><Ǝz{y<A<e,p*)?ǋ%^o2~ǯ`c #L``K""NDW@^U^0z ;aVnQ =~o͹aUG8jՈIv7.3]HۭA*t]7JsOUe{,Uee7@s\T3<r+~tI\F,4e6+WYZKgn1'=1*7Yao=st,xNSu$3\쁼ke'IvսIY8;q}۸	3HBVJkr*1.@mQJ%IO
-:ޟlAZbgn풛3sw:#00	,O.k}Ȉ#2ewW65姁~ewG}<zb;\{[4n7<tkb`=˓niAM Lcc`2ч|O*_
fX*f-:s'&pJJV(+GTӀF?PTS5pw]Max>Jɇ,xg,:PK
    TP?mt  K  .   com/sun/activation/registries/LogSupport.classTiSY=/IۈFȸ1HZqn K'tҩN`BZZGY݀_r}{}׏ALmOk85CAŤ$&x8/pݗyJaW0*%q7TTQYVU@<HN*]ks4ZelU
tK.ILZu˻ d-ħE)WrU+Kw,dIi/^YM\ԌfnZ2=˩ZMϵdZzDl6IK+fɶ8zKYsY_ο
8#TorbuJN˭Y벑Jt~Cح▎9VqG]:`{:$0ةweً1`adf"\s#l\ #x≎+af~wx9^U`G1/a
dC vh*izFetZQҬhPCݚZ 0
Y_j-J
A?OzN`n
޵tG:{}nF`&ҤkUml"&!(" }]*JB0{ڝY5b1C1#Qـ=Qo[hm(5i#A+uØiB!z1F2=~>I.$Y,IF#EZz
ckлIMqN"	;ܼ#Ub]!R1NI?8H5q%N0	(i-W_YEHw~@vt3Y `W>4S6btt%UTI9O~PK
    TP>}    *   javax/activation/CommandInfo$Beans$1.classROAze"bV/&&`BrU#oֲpG
EQέMl
vv{ Юqc*&}yPiNK@itd/z	! Dr rU#5b>Bޞ2$($S_DF
Q;Y
Y&5z>V&}YHFN0E,X
Vqf<OTY䝒QJf&nxa7~2ʜFl?]0lXQs52~<-3,;
#QPZs}i³tBdu&ococ.=Dzv*iM'Vo{m5Z,3z?'˰(9%[)O-%W9?M媓8O&]x#Rw
^"owp8\N/u*X/aY\Ɯph
/PK
    TPg+    -   javax/activation/MimeTypeParseException.classPN@c$$@E.J2)Q9CN>*G!v$ݹٙӽ@A	{U5D&֐P4H&#(dǁ
*12RhRBRsTLyfS}T_/=K7shDS*N?%1x(p	|E#92<s%_o0:\`;w%b~k+Ek;K~:8whTk鶱WOPK
    TPS      $   javax/activation/CommandObject.classeN
@՘h[kY@AH!؟N3, ?Jq'tRaf::̴2"7`sgWG5Ti䌇FfH؜gH_8C⭾$XH/`b}MJJj>~.PAp,YTTצg
OPK
    TPߙ    *   javax/activation/MailcapCommandMap$1.classSmOA~^{E+o"""bہ+(ĤE	~1ۻ,^-BoW/H8whD.w73<; 3Xс$"aTG#KAx2aR'Tka!1']0ĲugtJ\S^tȒ{wֹ/CaM0]WKAH~o[Jns%=,pXܵ2<=K%ЙEݒ%,EW)_%%\ʖ>,}g> @KpA_%B C1Bak9^@e
Bmz["Ð
!)

]ұof
̡}Ps	
<E461D@XU_]s՗T$+S0jqePWڥ)gO&wx"\aTR`*sѠC:);ؑ
HӕiFK93ieDN]$: 襕<{L7o:Wh$3I{Hoж2zC$>ooSXDoHC1XǈhTpqDy鯅"0Koi,k:YF\0q\%CN9҈PK
    TP$=|  	  3   javax/activation/DataSourceDataContentHandler.classmSUޔ
ajBXH@QJ,t1ưt|߷tFaѾ?Ƈ0,0{{}5iD;^+rm)W0фILEU)X
WAr+SzqߔC6P-^Xc]{i=cVzBw])!f[kKFye8{UIwtpS'
;ݵۖcXδn<0lZ30:F]и]0~ִE</IzqA/;&Eg&wbp'Sݩcd\K>Iv/rznq;CK]!L%itML~.<\\+w˦cWR$YlZ˾ĴsTqHjn"+ZIx\5?*}MEJ6M1zS,)_RAEr*BN<"gTBcHPC	
{TqH_ǀxOvsZJv1
t̢yCUC.Pgh=ñY,Oe''ƧKv9"rRER-n%`]sC|3sU!3u {5OKVK=O%_aE/oo[Ma
R X&%^*V*Pp|~i-rlOp~;}(J[t1h>A]8K\ܩmip99~G~<G>ߣ(q3/࿢$=8தg$5OSvʽb7kr	¹M}IF-6bYAքKۅ0N.1$%V=C=$Nc)xrFD`OD	DHvac\4	=#q2ԺBT,,HT?g>U<NP8̸@'-ަF]m1(QNFDv1s7D^[Hy2'Br;;DP-ZoumϐV"Mhs4K7𢛡A. 
-?W}n_PK
    TP&-  r  %   javax/activation/FileDataSource.classTkOA=º-@yCT
		Hbbb۔-A?U&j$~5G˶5fu9gܙ)hýV$0)tD@ɴgubZf^,hxaQCU4k,'Jy}_62CJsZGܵ[lyqJ-X.2Y2e
Y^-횕-+;֜/n%j1⾵/.t`x,r{?V,{ӵyI4E.W]Z1y'wPr\0b9Qu 6Q:ˎ횶+bH';2Sn]n_V9dT^pRK%|	DQw{;!8tቁvtDhɻ``$h701^Rqrܹ25N~ɀ"VysW*\FAs1L
t$G&ӓ	ou2@2[˲o&ꥶQjgmߡ>A6k2&>@IIBHϞ"3^C9.yxN)HaPRBra)Wjh9c2B^b/B+7軉[lMod{u	(qw'R\a1e%zH%	褔NZ2kƗPE=x?ZC
S7?Q|.^T'&J9P˘_]IPK
    TP3    !   javax/activation/CommandMap.classVRW=#ɌFXnGK"`.-\/?H)U^W%y"U)ߑ'9wfXIt.ݧOwg Q5#hmw0fٝø	t]3pS:>50IWgUs5|/u|e#:ְ+/DK(DYÑ#X,ُg㌆hAIuRg;`5gWu#*lI䥛UbEۻJi
R^*vQWҝwvgKpku슆jtXo<r4ۄ<I1zr!h--*#bD.!0Vյ'7,YVj4nXPBá&zc(IYlIWIו<twLᦄoJd1DQgHx"Wd`ԓpFGmrI7N'o8κ{7Xz.b[0[]6tcJI<X*zP̑+rn*
LndT2]aȍ°c2N+5Gq~aC8C:Lcp:&lu!6X4`c!&Edx|L&2j&_o3R,ʂϫs#iyFÁMU\\.
֯ &iɫ
aV+$(^RrmlNIœRhpHmZbNzÌPes9h5iURԼ4K\Y(=|{<CUuM᰿{m*s<Ν4;/=ENpl7=.AGsDVs|
%_cG%
o?xxV^5SE}[=s6ϐy	_$K88|ݴՎ򯑑1┎NR9E^ȦVH-cݲt/}etp{TktF0|3iY΀ax:NL$u$4f}\ߍ$5~QJ0^cTc,3\;1Z-sCi)CUiL]O<aZ+d!r&D4G]ٙ|%@JL-cO=k3|0꾑(Ffc{9$RPDGsCDB8n^gth_o~3	rAw؇PK
    TP    (   javax/activation/SecuritySupport$5.classR]kA=nmlSiM6BDAJjؾO6C:u;Ά (4.ݽ{/ O.A.C0y29bz'<Q&W^H%K#Ʈ	T*:
sBS)ذǲdf7e)(g	Ϭp+J"UQhc{HGToȹ'Y*{g(\o`L&^Kmgn܎@TRa(FEЌfGbظ\"C{^Ö)7yg$hU"ÊgJj_ՅPk?e؜t6V=ÌEko@V k鐝jZ	UH
/Q.(F;"&OaXn\
s/7+tPǪnN:/PK
    TPjgD    "   javax/activation/CommandInfo.class}Tn1=iQIӰ(в4TRUEH<!'1e TI	_
[AB>oAkOMF=s|
nGхLp*n6p&0E1h
R8T6g_~7yzzu,~!RP^9^s+ff=JٳlI¹%/㎥Ɛ">uZ\k-\沘m"ս.ܺc6lEgOwײ,
.C6w?Nl"^*(Cގerj`$rIgi)y*5kZsyQ5X+
U10o*]NA,YjקgbWMĀ:QoW2;_d=W,0%/̧iDy/bҬ4Daۣtv,\q1KV\.]|MZ܅Vu춧-]QSmwڶլû/>vKSP &;UWIQz
G=Wz*hdܓH~@ 1w:`~
 4&9.}d0^)W
(@8XIӬm$s:92ji|GK"aWYnJF(F&L}8%$nxrcɏ
mc܌
}Bt RHPFF ZUIM~	h9fx҄g,EQ
!WqqV1+8Iق5oLV!@I8I(%&Uz/PK
    TP@Լ1
  
  ,   javax/activation/MimeTypeParameterList.classWkt3I&`+"$ (b^ iH`F$;!C, VU6VZN[?~qǧI	U̝;·!p6H`PD!ZqIЀ%-)GRB~I PHq|'CAbG_NZx \j#<*<b$DvI<lIU_
8_8.Ji=a8Fmǜl۠>2itnwS@YgR
:iC➤e;l'3ӴL[ش]ۓsߴLbHo>]O:&iT风Ow̤նLI[f|7m#;%rlQ#%UQ6e}.mϊDݰ(Jr=iҰ8|1xG'6m󠡢`{)~=m/c>,=d_=H gVؔ^+0
B:ɬ@Ec~&:Ɍi+/YN%'-c|Eȴ%'g\2ocĤĞ0SCcQ:_'>fZ;tZdF*_h[P[ c͜firƊTj{TOq`25n6eVr鍆5Q<OWhX4Z
}ؤAǈOcq"^)
_Ǖm̖@oO2391ӊGq#k
Yӌ<Gg;*K5:N&cGU˥k˓gNe^cYX2@s<k!Xk&3y	ӢGA<GxƑ=Js[Ɓ1*YFA#G3e)sS^7VmJ9{iTƑX/S2UB$4lë._N[-5}	t(^2lPq 66uvkho]Ë5|opF4vsp^ɖ؜O}MNvfv/o_甩7avRI']Nʙ˓א_O[mܱX4T;Moɫ%m&/1,;6zt)SNt	7t\e]N	N[
pΪkpӵOW6eSg]4Vs֖sW`% #U7VΝ±(y3𾮸;X/A)oZV]S[KnvrY/<
ߜ2ڸURqeVU,uH{,~ƘoA?6=WC\7pIG4e^"[jyPxΡ
1u戏[7P4
?#s
Ŋ5uQ,J4Ok?0þlU~.ӨJz7
/>	rR")"]O0)J(ߕ''r%]ϡ= Y1U5 Suzϱ7WQ5
sWzye|]+aJq3syqf0ȬogY1w
;uF8va^aL(x欶qo !/p~Cx	=<
E1xJiQgr<+sb;؃
""!jr!Co*)2]񭆟:4t`d3L*[!1#b`#:Q黈Bq>EW "qu 
M
B_P"sm
$#s]"J>ee*QszjtNKg[wk~څgoVWov$PMZiԿ({#
6X<Y۩VNj[d
SgJs4+3,)8`66/t=z_q:YNbzB͋)?\19Awbvnri,qnj8H,al4[FӐn&bdҏokE\@oz_9Fg/>^K_¾ۍ$H;%e=;.ƾQ[;$vݢT/:|eX<)x=g]Bx!ՊPF|(Zvڥu1yqQMK!e͜~uyEVF.%kpկzL~>T>xuS_s1wpwT50&
xo
/ۃZcK|_xB|J	%Wk'xdzl.2\fFrQ&|6
2E%։*"jED=D"
{KqT4*6BBy;PR
彰UUaՔ76#ZN90(RE?@TNދL.fCǉTĸEoSSӭ 953GE,PSC鞂ۭI˼fi0i^b]
u67][tWtVэ~&+5lq"BC]@|bI
KWI|(ꓷ}p R>
N(\'PK
    TPa    (   javax/activation/SecuritySupport$3.classT]oG=^2I䃔BNm!1v@Rz,Fc+O׼ćj''ޝMP-yΝ3{ PC_×Y,\&f
_spB?Oas\Xqc%I/`sp6R čD]zSH(6$áPM~ؠ?"C SSwRT'!rscM߉@G<NS	U	CkrIIMO-(tjkƾzXknnF3q3d:2YY{ =n6cpw+~%7k1vM')rܐIE%K6PS*6u5W9JZԌ=yOޓLJA\DJ9Y(㺅0QcpߜX<L帙+\LYb
nY,~TV[Lb8q,;vO}Hʽ3Юun~hK<_F0T2тS^w;ߑ;fh]$(@nP%'Pn|^Mf?`H?m=&A_\.m,f-zp펓ug`3<Oh! pGi=c8A3I
iiB _`s,O=Nq5⸹zSA?ï8k>X؁e~Foufstɻ,.Qŋ8˘bWiUM\*}JȺ4KTtsT1SgQ#Ib%|jE0Y$( Gpx4xVE}bA>qt:PK
    TPԈ    -   javax/activation/MimetypesFileTypeMap$1.classSRA=CB6YKmA
^*bQ/d3njvS,|w({7
@*3}N_?~X'1a"Iqf*I&%1o஁{KғC,beГXWKB%<pw+[θޑZuyZ|rk{vAVnDR&^_1f^(
GS0WbEWXR&HvX E͝T'j>Y!yf$5q*XC*̆<O[K,'X!OA-&|n,1L\mN7a8r©+{ĩj4U2]`;hQeP0={DsOj+3\j$SqŵO'_2}e۝2Ataiz>=zK
l`_p/D|>V[߈ћD;b#ķ9u7d3I2H`nOk} g'H}9KnSX$n봳
䰉9ɦ:H!nЬKM7B41܊&yoGQ#OI9҈~ PK
    TPVv     3   javax/activation/UnsupportedDataTypeException.classP=OA})
b"DCGbB ckr,?e9&&n13}l9H)%/Ldl	e<ԄRDn<iO
ƌ;q}@>	!<*f!L$N^)z/:ePg`QеF-$Zn<MC}c$}PN8B%7qp{<H̹|;N5[q,9:Ow1Wmf
h.p̣aoZ9ȴ,i PK
    TP&.r  
  (   javax/activation/CommandInfo$Beans.classWisU==KzI&$0	[H"Ɉ""H4
qtIw	}_PA, (-R?%3	CT[ν/~-x??gj!cgNw	czè!#{Esh*0d(Ew:e1d얱GF:b}B0Eof8x [(gBN##+f#2'!YW͌%iݚV328ΠPն[QiHzZלD~EB:4
VJ00Pnw}iJ"mw!a4ihBcDuLZCCJV[.&a}RSR$rlhi(u&~zdIsHnН->,M$T,+'i}@Mo4=)VK2
LMCOZ6X mWMu'>RrHNG+R$a4qCg}c7n]|t9]vd<(!<~܌xuZ)D\gʚbj:6O:2v]V@YZ=\A#QЀ8'炂G
d)xO(xO
3
s

EP^%ԭ񊂃8xUkx]BG~N 9cr.nie]*Fo(xo	fHmٗiv
 oLmy
f1cfHBt2Ɖa%E^0]}1{SkbSHTg)>󾌣3#L)xe[NTZ[jFv2w s$Qw2NL飝,±dCRV,d2ܬ2^hgk/4hXJJ\"jmf%e^!YY3nqyqV @vMS<lSߛt?E"bەúIM3krB&BFc{жF~H(c߬kiScemboStq-S~xeE14q`/A:ˁlK\~.J^VSƾ
+່ZR{@cW3M'qmOt;K9Ȭoby4PڛF9(ǡDma6[hܦh/Van']@i9G{ooc0ʡ﹀Ԉ
QU:QW(<IgHN	iE1Pn)X<|i)>Cϰc3@;=ȡ_x? ~ī;Ɲ~	i>>o E׸՜׎ډx
j[-Dޕm܄;DD|CfmD筅,o-lDh%QFRFߨ*DA ɨ:bV7|wmI+,9mղyebm?	Mb[69|g]j,/ס8l!ʏP0X<. <ugy'e5zW-/c+cGR1lo|ݽo]pt5F駊PK
    TPc    "   javax/activation/FileTypeMap.classUkWU7 BmAPiVCA0%ɄkkbR?Z	;	6!;s=g9w_?`ǌqE$>pUCF,>19u<Ataz[̨

7u[o֊^άf;nڴ<{l^ry"y[wK<#yP6+[OgۢY.fuMfNO5GЎYl{sOMeT+mHw(җu,b7!oˮ
=Yxv|D3_[OtJZMSzVQ+c+0ҜTZ5Zu9kg"0tB`,;6cbi!K1Ŝ'k.B9L1kN͵rmR%1pC$~`xhXV=ᬆU_ aX7|umx9$=U
|oXs*fu˯OKw6H|e`w&Wd͎ŏ67jmIk;/Er\CXƵhN>::5]^!(P=*z0_T׫ϙ'w[9t|7x]YrvX/qul8DZqrB	Ϗn j oD9\i̧3|
w\Sa|3NxSAX)5'po5 `dgdSH㹾>:&10=}t<Ft|:6JO]I.&<),=*}IFĨ.KI\U(R8(8!Jh0W
S'4n
i1Ch\RmI;_Φ~C9z֞R
b5queؙ-~uEbա|%1ꡊw=y2`m %r$o])!,s!'^^gTxPK
    TP]M=
  I  +   javax/activation/MimetypesFileTypeMap.classXy|T˼7	D@B
V@Y 0yL:3ABkk֢U[,UjDP[qC[muknuaw,$#?s9~sc p*`%N>_6
|̓p<pZ|ݍo`eMcon3k2C}Y`/˃ɸ[63	>Y߃8(
Ht2p:1D1
;,k󄇺?)
xL>?5xփza~9+X
%VR^p6
SmT$MXd*͑NkuO,(h+W.WP
cT(Zv[Nۭ͡hJXM[CBPbK#	YX$PY>g-e/)Z;7YաMQ[L<
%"2Pj;i%6nw
)%Bfۻn7HHQ!5}ӶݩHvNrtnVzoՖ
/茊f4j_e%݉0Gc{AQ/-%mlmGIZaTO*-]dźST
u.JEh4k|
X%ٝtJծY$D⢨
Ϫv	yrm6Q>MxP^M1jtt!/Ig'+t&Ծ3-<]hV8gώCۘJFwX)NʊeAa9)6js[u
TnWJ2,Lc@o6vœFk̟Edd]f}iBT#8M(L/șimnbG&k$uaYݑ(a?3Zj56&^_L\& .@m&VlϠ/67nlYVV\|bޥ
˨mf{iM&؈LS8a4;&tѕ&,f'7wG=V{@K`ě¼c-9RBYap(6;ļem㈉x171U&^ĄDPS9sM")Ěyc$;@ayeVN!5.ESa\6S5ҕFix8ev3[yLU't5TUI6k䅶Bx16}xiD5+x0G_=%}{V'uV4;Ǘ8m]]E8$S-&W&]V"MZ1XIL["s%0s&P"\g9ൠ%#Zvłǻzc^:J6į]l"7	8l9il^@%,!]}3"9Fxi
Eh<QE7m/{[oO
AdD)haQQy)+<3
hku! m5=YCŽQ:*"NeU1M5ڭV5
7%3X1P8,l:M0y2[d`͐ rx4jH{|e"A!y"9ɺ]j9Y!C޶M
ˇQ4s܂x!Ǭ,
6zDTCcgjT}мEpy-ՇPTNzGӇA¯*rBk!©Vmlm$8rTTz} }~E}Ɣʊ0S8?M= >ub5M}
V0.(PMvތ|7@nʧt`2btK$qRݸ(s;¥˻؁/#	Wf|rf|k:s!5XKWkܥZ!O{َw%N\H4ǩS|]t)XPAUsEUॏUkg=L>j\ӝ3zQ,k{.5ddK/iѓkO\[=كqq.s/WK=M/B=f"Su`iwzܘ.~<G2ХMC]\!xqadW0ϓj<kxJ򌯓q ߢn`)ьr bDG7M7ɹ8w=n.|nuٍ8a|Ӥ=K+c.6v>셉oAIϲӀ[m;ul!Ў/a6Sd]zKzpC!7
"LuSy
&΅*ȬRN=Sۇ92:TT5vHU 2g|.v`|A] P٫6hC[)g0hm`}Cz*ar)Rm~,A0%Y?f糴
ˊ2EX&=`s*=j/f5[|yUsjP'y5Lkt^G{ϳ}G)#=VPjԙjAfG<WU8#mjRbdޡ607d"M;!M.nBL5Lp/>}}Ly sc&9b>;82D'>OE/qS+#U>D^TD~JYUùy;sgsn1S-'H[67+
>''VUu;_W3͢Qt2^c t;pX4.FUB5L-IR4VlM,m/I"pCm.c2	=%y
Ӡt\J*Pr<GQ2vp[})l4׋lrA."ϝ^˳/n1Yⴲoj鼙KH}79䀝ߘ\+v<ɖWAf.vp(]lǲ4:C
gVvzUFv<5(5&-\r*e *|Ԯm}9'&Fr/|C'h45[Oy1zBn	Q:(B[
쓳/	:mp#V$b(ͩӏ3T^؛'6ܦөC<=rzNj'X2=[P-]벡['ӝƧiΗrI.έՇϞr؅{*haQ/7O]J4̴?13ҺJSǟ"_ *]bj=SUj)2,ghR砕5jE_L rc:9O:`A,Q:~f0d{fo}9.p.TCxڱQJtd$ۃ琺uY˺y=[sϪHG k A>svgx
mL?9m?PK
    TP/    ,   javax/activation/DataHandlerDataSource.classRMo@}q.IiK[H%q".RZqVV:r7U?\ >8pB:ijEV@>μvv֗.~x>(æ-ܳp=l{x0Fݕ	zDPDF	b2+tj݋ےPZz-V28#(%]sN $f1C#[HcXSPa@|y$C#is`2Ռ6[k#9|ק~];!#޾6Zg.88sv8pc9ʱ*M̯hNdd+x@Lfj֦M`(тpbe5T`'!B)~G	_pHEgpf͟{|3ǮwN|9-r)B&N:]Éit	I9N̾p0MYPK
    TP~'   Z  !   javax/activation/DataSource.class]ANAEHDMn;		aprҙ4	ࡌ!^tz3=+CL֎Wۇɂ7l}e[!!mWAi4oke۝*2]r(r>妼R Uͺpo~"{eSX?~|H@ $! Q}֮:gG9RXջԻ?PK
    TP#{  0  (   javax/activation/MailcapCommandMap.classY	xT~ϝIdr	!`Ha	B 	H0L&Lfd"bݷX	E[Ū}]e{f&y|9y|ؓ!wyu녆fc)~Ͻ~5~^dz.<xOы?{,̓x?8c:"^xED@\Sbd{,5UD^|W59\!C{Gzd.JHatuYR(1b,)įFt2A&fKLFLVb](VKr/B&QxiU =2#g+%gzdZ?#=R9^+sաUy<T@žP_
XZ/(XH.KF]$Մ]].pl}}0QHe,*`sq{84G^ry@jx _w\Dz0iYo	\"Mi%{H{|U<e5DCPcwPlU`s8@xu ֮Iwg &
6E;T'h=5ю@!]͛/ZuÕ<%AG2Ġx rmp4м2:OH[Bڣum::HWh`t`w=#	6
dE:)蘣2]i~u88*͑ca^o-GBVۣ֫JM9WKp`D\%S~QI2+aRSӥAͺ4
<<ʒܤ#Ns4ב,Nk/Ţ)sk
WB-X,lmDxu
`~[twVhV~$G=aPY)[ܵ*j_<`6co9*Xr_mZR1&6"/IP]<ģ1l9c$
n]6`(\hm}mO[=:b\V-m䷙x,]w鷐2@sʛm4#T<00CJ:gM'(p"<aR4Ђ!Pk \dJHɈBnjO
*61XN*lqMqѡPh#w$'t.<sYr֬J̝V~BPtkh?c|CVJ*Ji%ʐ]+T-e!kBӁ/n3V|*TtX[A.2p?v	
NQQz26RROJz%#aѪŕ	-p#\-*U4ZaeF$re@"d.ACfl1Uڔ2Xm;a*j*UEѩ\PFd$7%cD	Ƥ"-u
&r!1Q!
'TG`+
Vuv`K,ڡ$NaI#n\r/P 2<>ڈDOJ..;T.3ri+g|ܐ+\e' l1j4d`(8\#ײ
O5{J!-7KV%<j*oȍTgIj%]@,_?A!<8hY^̇mK d"J,cƃpIn6Ug8t
G%+Une5nm?yI9=&NvC;T4&Js,bm$?m{M&wsض6xYTg"t7o	fV|\mmTAG[S+a;w&'X^988'aԪY]΀mO<jQ-NҐyXG͢N;Oc4s)渭S-M6эOHj;쫻@*>AI56jmpo%nP|
gnwYaN$SىYO_I(B_	hY)%#	o$.B	q'3|nRWG=cQcm}]{K*9P&3DhVV55	wloJdn
h
qaHqNI!6i<N6B\.i@W#q>z?aUItg9u]^jZ{VEaan!
N	Bg͎YJ}ZhW:Ƙ\]vި
X4lUX%Laop/Vk[afc+ 4ss4
QtBp1b|<6@%Gg_-<mzi(pkXq yxaSZoy/g >zS.0K,Pc;)%67P3-02ax5_
]IA6`O(<13b p-vׅ<i|7n ܂#p;x܍I`q/eŅ,< N|@e~7%r}aW؏',zaOWc(.e.H}}S"sW;hc
.u,Օt,9TYDyKCI/Ɩ_YlS(X[ևq0nl/MK-Une؃{_*~ڮD-ѣix1)Uj̯>`c葭h0/B-gM>Rj^>=2mow/)+x]eǯvHk&ҔF)ux
/Vo|clٻ(w}_m\k{;O|xk\&^f
^{ϷcI]*M(}4>9OmmѵD$o:\om3bx$̊Ch(pYM֒8gHS+yIS",ĺ'1f><bBe C%r|ePZAeUn 7533?~sgNҥʓ

̧҂*sg1{Z`iDS&*;Ld'|\+NfYX~$B2ʛ<Q~mWU&TMyʬqx=86ntg1Qs[ x0!â{L<mK.rȇy{
)+jE.岒8HkA6ap1@jx)g_$b-{PG#'ş_	' _Q|ǨWe/9F[q~RWC\2gs0Δ<e$grm&gp<H6`R-*έx|D2Td\I]dʗdX3odz+obreYǑ
,E6FYuTAu2	TH͛!2eLQwLaJW)­.8,>jF?<zİ0|LԣZrgGs:2-RῐQ3('CQcs&Dcs)1DTaf,۶Bp#[J#S0XL+̈́8IC8>Q~C;NN+ +B=@mfQ8-ԬԚyNJT-kb7w(z2^
T/s0Eb#h|Yi4C4Ur"SۇlBmɋyUIj'56mO<JU\Bː'
Ts&H#&2,r,b-VsRsnۚN=l7
ÜR=85oRP~GSkkLCϳ2(\s1n.rAc>U+1nG0äc҆Ri˶`lE
$U҉
<&!,]X+dU.5m<5xĦڅ3̙NTA(CYcv BcȰD3 Wφ_NcA,4٣BSԲ/S{Pi:e`bfd=>/vs >|E}
%r5min{
VuX+כvYBf12[ӎ3\~;nfu51?G54'ﵭau)5>|S>6q^4**.G{z9xՁ-VۘnN](&'m++L=nb񔣻W|7Nc<8+YQACt83pyE:QΗ881pg|s$y&8Rwu
I3 \LUe2m҉jd ғ=ǿC9y!(1S%˸H^A@fy1U=#Y\gUTNTZ5rc*Dڤ	U0Ŭ}D%Y.wR 	j59HK6ϛp|.(9g	ɇO'pv|<ߛ??y8.*姘!?gzl~7]	;ϸR>n>;>'>^;$LvM,ϙYysϡϡmu/aFcf!|d&'@

Y	"Uw~Ro}XdI٫i2ArPHPLrCNR7 fƄLmVb);ІGTZؐ~Y{+4qM+[ ǄNF/Z c.]~mz5ƛ=2BjcƢXx&`6"&E-Z1iSpVkRܬwg6h3v6zxZ״s6jUxO6Oi%W.õŗ2\K&<olĺ]MĺPvV!V$8ppp|6p\zFrQm"y^J`iuOwutJ֧L`JCȶh4Hc?/KlP.E_}=6~\+=NG0jPWf=%> [m)&k+זc1GkBUX& /rm-hA?>|L@\M{MWsf<5;i1l^X15N]b5j]mj
.7G^s*vRNx:#qQĥ^U7"WMج~b+)u,Kָʹ|w9iƕ继DH#@sUwoXvmmO-
eA[-։j]tJN,mYWSLx/]c8(x8?"te>f3bOCivdU_ʰ"c>DU	~֪T@:uCz~RMV+UffgO{G~F|o2h7zh?[Lnnݎaڝ]L|wTj~{	=h%M Cns!bӎ<2?ƪsSNw90tۭ6ZMʢГ̣:6?IyL3]eOfm?-Lx]/yyoh'_8Ҙdseư̓&pK![Pf\LﰟVWAy.PK
    TP-(  F  (   javax/activation/SecuritySupport$1.classRMo@}8Y.4mH@BV"!9J^Gq  ~0vRTH};of|ؿ~	u԰S=6>G〡\ie_0TzSwD(-ҜqLL3HB

{Iv2benp&fbЪ*HQ(O#*hrp?zВ	cR=HD$
FV"-0GInBJ.|RX:LPiqz⾇kCv=92-Fa\=í31T5^'2z.7;-C:vh+v%uke;HZIHmՏ`F(NC/펬:|BFX}
KAg$w-!u䔰B`w8_Q	>>LC<.t= CRR!lb[dCAGcJ)7qqnuJ|PK
    TPYc  
  +   javax/activation/ActivationDataFlavor.classVrU]3N&3$$P!!K2PʄH"
^&4%W}'URV~?akt:}k?gp1^؁LrRdYf18et7UgHha>akh8{mU
eU]),zS]9f )g/]K}FA<gMyNZ(4uQQ׮UO]*°cu;ǝ0ptlfn5ӵevq|rvdW+y:"ʸw!y3SseVsIv	ѱ2N/zAQjN
t^1ˮLTght.(n?OE6$r¾PeBWXf<WUmTENr(z7*0+`[alD3[r썒*jF6+՚[QeCɎ9{2~[.)Ս0~wyUnPg/lb2aJ.nɞsduBR؇)П9
`\ppj
XXJu݃-4_jrXa"1ddN`/cJ
L&.pζ>7>dt֒r-h#ڱ'qz-Um啮?f"䗺8LiOtJ{	~)}}l6?#k|S,qYڲyэAtpBMD)Gi<c9G BO'a~PqHDˮu. oVŷ	F.xOSB!qMĢ]OtA1H2 7ZK)5&!I]FC|<1=F",dL
ů-o%#

0Cis[ǑHxg9w>AkI>_}UX. ~X]t~n)+Xq6.v~v\}@ BfCkfbc|#Fѓ):vpDXIb14ڹH=O^?WZ<`apOdq$d|$?4bc4uu0
M%o۟Mi &i9=k}p<yXE5_Men#xANPK
    TPn    (   javax/activation/SecuritySupport$2.classRj1=%l]-Md1Y(RMKpZ՚ZHZC?U:R1C"F3gH?%.|,౏u<ᩇ&C}̳fʰ9cd\
E)>+3ph/Jwх#^'#X{B)ώ֟kXRB;ZAnQ&<5r̍Ui-G\sWեbXZ3J{'"53yS^cv,Wit}XR hymxaryu[.TLrOZI@wS2L'Sasp gQK P5*Zޑmp8GЊA?N_CѰ
\:7h*0>?QCZ-
FÕ}e&eYd-grԾqp[4kM"b +	ÍPK
    TP.O
  {&  "   javax/activation/DataHandler.classYy`y}+t8l1 	@+.qleū]ywNI8m;vHV:X2!иMtӐ9Z78MߛAy $l?[.:}[-Qw=|_-?P˿jZ~'._]7]O?jyS-?st\[.j~VTqa>U,\W..E\X$Z8\X(Ndd5'%,ťNs\b\u>(䫥@-R"+
%2KR*]RkRK]ROAi.]pmRE4fIy%7Uź,ѥM,]/D"zv^xD`[gsCt&g

LĶ'xmyGW{bȗ
3*;ю'#3qPƀh(L[=ǢmJh¦rcq
F~|aACzkΎMC:
ofGQVkAtqZ48;BD}=Ã}^i	շ}Sd
jZ8ٳpۂmԠ/ڶkG400R`\i3ǳi)ĲN am	c
eRH]tycP[u{
ђeqm!_h
?(X
3?H2Ei9\
ǽ!,Aca6ƱR*"_ ]J
sQ	]nf͓$>-&p,%ƦYes?9<4+QS?slΆcV .d+gvr*鲒ItӼIf[Gna_
H!kbLG+8c|} @r%2Q1MDR[yJ$$>O0lJi 土غC~)aN[Rvܢ*F]N&6ESI!+
ܽ*Dʨ
Fc PS]Ub's]kՅ#餎):IޤL5c;|d֮XGVĆ<'9DZz}HҥKG@rKJ	2nLgh43j%/Q<8hk 
܅
P|0pH-7pD-*&X9IHDRte!!TJa}xxUx2`$V:Zq2&}WyPUs]
QbVN
Jb$&!JrF4<̦8SO%:2QaMCe)č:(;
0`l6ĭc>cY>ينl7 2PN4NW-&~Y٭CJ!d.wr8 gIP{Bэ`Đ{ţb#Ui<EjJ^β&4emNT83d@rLS];fixJm?b35&<D͢&}b$c:f1Z^dTIJQZI]3V4Ͼr9]8d
=p evNG8MgOZH4AQ:TrTBbeb P2d)w*zxeD0i͌M|+dOY2P78D	*w8ń=K9-2L"gL%
6Y̲"Փ0bnݬєTrHa)v[J[rb(1y'Ow&&˓V/c:
n*b
,	o+a^L3?/%wͯ5*R3y=5؃>x{o͝=j7;|s?b.5߃4K'!׸ohY^S-j"jl>%dsZ\jE\^6لFWXlFÝ(fT؎&
**u;Rb[B!a<1-qp]knU_\C7 ?vJEՖtq68)]<`ksgm#eS!?.
ת׃?@^Yd^F_F(9E> d?bR6,{MXQ|s؄SlTO+(qT8*Pfը9\"O)gP&1ObJ/P\dSd/cam4Q/hy86څ$IK$!|d|cK$/NI bPĊ8GhbwԜ(Gi1vP1ʋ_FՓhi}Uc ^3<j[jy:Ѱ:<gQ_buX41ft$܌ߤbt^rAGw}Kf?K~b7X~J<.<)N_dR2YU[AF݇1>!r6Q|TF-u<z
u\(a]+x߲u񥬞ݭڷy
9-E1,1,rVgXҌ#oyȚshs4YRUdɼ*nv#[*+(:K=dVH#n&y-xfllV%q`>~:8MބO	r³eP/$>e&5*~Ypأiϧ߆KbSLm[&d-U~KpQQvgLseYdF	͓Ѭ1,+BU2 w%(err-2$d{p|$sravhZ+'|a\|~rrs㨒|IPgVՓj,#cSfJ5w댝wCA$ WrJF&S($58\c&?2xV=`"ps[0agNre]~	%2
9Ļ2λEߎSz#'6*\Yq7ݢên_eF-uq8:my]%owugl^G졢Ub1[g}"7g4[Im/r2W0egUƬQ@Sk
i5HRmġ haV52A2,h*3gOceNshỉZ94NYZGր2m*^5ųɊ2ΙYl/gױokgUPGW:xAWPkM3IK2Ufu/;Q-3g+3ﺂbύ}d_.\AŪbǝun^aLR^]}
Q}c	U[uc }#h#_kGAvVM&,6c֍unm+zmKG^D]xPۃk{v7NjvhIQzv
/ǣ4YsRǥ94W
7}n5Q٠rA[!CA\mvjd(:HBFABX<t3[2vWx2nKAüe*M*ߒ-Jsc{_q2z[.kE=L;;EF14TqTYNa=LC>,(J(מ`<F>AuGI,>⏞jΪ4]_3_4_mWwOJyYO=	d#`MR);iet?uWE@>G~j?)H"XdbPK
    TPN:    (   javax/activation/SecuritySupport$4.classT]S@=[%@EPPE҂?Q(ڂC?%݁h0ɶ_|Ugtx'O|QouXf=ܳ7O F1
8G8`q[ĉh8ق8
 Ysc9.04;d>ea[*p1qCƤ_əRqQĢ|["pjPN`N{&]4%l唅r|K8j-_ZY50JZЙQ2D*Z,.C[eɓʺ=0+3$*r\+]5W*@ZH**ia+Yk^	iNj89.2~)عE2!j/p\21&:D'&v3b-q%eLL᪉k%jUu7@f~85=YJTÞ
YVPXZ7L&,]!nxꢺ3%k9jǩsʿ!ujo/
2`Hgo/02ʢT3xrUUoکgR'N3pfH&İ>%Qљ'(S1oRo{1hl"p4zGНa/z+ЍYK{ƙM$G6}4|16aÝ_7gx#
ofќ['K-UH8
QMΣw]X<PxDtuk+	߆}i,w;p8Ho"(g d!z&a`z/sNr!B1LU'PK
    TPD  *  /   javax/activation/ObjectDataContentHandler.classVWWmb\AFAn-6.a7&>}/Up,}i?3w׈$hrܹ3{~#}8;<&Sif/hW:LSah0F;X=~ ၆0-P~m0Y.,
Ktx%)/Ys-,Lf2y3d÷V U]it3ӋVΣ5{͚}Z_J[rIyٮ#g9ބjb;wMԎzD
Q7O;&mǺWY[JbAbvsfa,(Uo&n /[脂SFle6 yЈ7U3{4e*1>1RYFEha(O~0'90!|FYWU5xŊGZ\#c

sKIF;l|mAt@7Hq:u|A'qJg8 1[YӱGs\бGrXtKw*\7p^PnVݛ5vS杞
l$v`,Ppxw][\Yؒ[MݙAL:6t<SF@ooDg']A-ww 6nY;Y*.uʽ:xj=y|4iGUVA<w$61>YƘ[
2]fh9yFu"y6
=N?^U!>yVIIGOJ:$[.$CU}-(	B<++$BO=CP h)DDGD4d="ӀqdESH 
dHUK%ZHqA}u?_(_߸>B$5ZPj8PYF[&jHpؖ-x(MܠloOÈi<t~TҝD)0ɗ QuH~D8[Łghc4ϷўMnM
CR%s<b>EVƏklq$4.c""_dq
>0f
jaZs.]AR
OO3Ulb.':=Utmb4gFw6C#UD{(7ѿ#mdp*qHTѻ7/jK2bzц!VpIZk
+LD\`Tv]KΖ}iHpĨ^ɧJvmIPK
    TPڀw  f  &   javax/activation/SecuritySupport.classV]SF=kT$h>JG&IZ&-)Na$(5G2S%d♖NJ{=ޕ?/ xc5,HᡎGxቆgkV4T4|#E
?hx#~14,iYXr-6Lߗ@sԚ@zݔUۑZ;{mn4hX3=[=tmzkL+wvR]Z-[ͦe-,N 0y57'0Q
K
*%s1w[%+~=#x<0v1햖f+b	)H;>c޵rKnV,Ş%j-|,1wBYNd}l2@e$j{Wߣ"#қ*ة0UȝD~u)U>>MہG>X0K[iqXgU0>:n*O=JJb=JgXIZ&s*gΫz?kɳ<G6JRT,vs
%#0_<cy}
5ogw\"5iINL5W&qdxkOs\?IK~tKwF˸uWUp7rm0C"B}#\HcTWmd֧g}C/Ͼ0Q]$	`0
Op7BR[!	bŊF)ӴĚ&RTN6o#Rʅ
w
Z`#2X3_b0_>7DyJ1rqa5mשv7pp_K>)ݿavMzm(tՙt9vKM|m8$v
ҩqJ:5-Xq'xzPK
    TP%S      0   javax/activation/DataContentHandlerFactory.class;o>NvvvFĒTĒDԼļ"FK
ĲDļt̼tkMP~brIfYbIf~>VkFҢT̜TF9L%n@*@12ha(T# QIY%lL b1I&6 PK
    TPz       javax/activation/MimeType.classWsTW~Nv774	
n`+B!4@jBBR)P$f7ݽB~~|XeS:Sq;Tgj}ι7e0ɞ{{q޳M[0SSAlNB)f˗B,GxЇ5<Qƙ2|UV'rxJOK3ró3y9e[*Gξ<#p99/\}I1%9PK^(N[SFiS1cFr">lv-=,1ef:#Тƍ1ۚ1l+XS9Du{RɌm$Q#%fiN_K먀'5N~+iN3#Ʊ3FڒoOZҰ<Zm+iJK
۠_c#"ۗpcG]ƴb@eFf/9n
>9VL75-P)p>7KXBzruo)[WY`COR%'+Tj)GUHFt{lR`MJl{2js9|*mf,%jw;aكY{:k\RY[:6EUH} AB7v̗K$=(
ʌNɞI1H?=eexq"ۗoT6=fI	/,-؎b	kL1Q=.9pk3[ǽ1^1	~ʳtq`DʎȔFLJH6K<"k?Iy"v*rJGH?k:^ǠMx:~!aWNwJi۸}RüRzYtqM]thR붅L
z_ѹm{{Б;+}ZGSDa. -ԥ+,z؉2RT69hem+W@Z=}{g[nSt![B)'4K㲚ZLW%ZWp2%ze;r,uZ
'o39.z{eD8WX`KSn6lfғoɖwWʳ:aO(9ﲝw|~ʯ&%',ڕl3j8渃Q8<%WV"҃ЮMɱkimJ܁lNJuŧM-ic7%|<# THunIzp3{]Ab-Ρ*{9tgǊmzz`aR/ڧ8n 3ТtJl=ٴC;pv/9=psTds9OӰ^C`m`lʇxU;bl.jI^I.,\@s-|XFj=2o0t	i6-:1JkQ=4ѷc/IP1ǰ~hE2̢epG`b0b _QKQ8'q/`1`MdG/8cV%,6bW9id>FD%5=Uq>e7^yK \-\<lj3(ǳ='9\[{]BQB/_q7$x~ˤ_!Wgy)BkE`u9;fʱV\PY۔ϳ+8Png
)V-z
oϻ!T}C]2V͉{gzh<M<5p{aTcu1,`TqQA]G%iv	GǛsX{$`ht;rvi9}WU\fB'/yU~Z{>j2]n·շK(^GݢR0aÕEn7p1)kh(BE !QJyTTa}qH1[
QbGxCϡr:bY271;'|b%#,VBFhWs8+44bpd@CXWJ14/nj\F]}壗PYҩb,y
I^	P(Y͜_!.|cw4uΦK؝wkS]9scM}'QDAoJ8Qla*6[iqRllrxH%IVAuU~?F!*PK
    TP?v+  V  )   javax/activation/DataContentHandler.classN@ƿJbIXMO*ĄZVRRv
<2N""qn~|_
@.j.=LbՎ()k<
Hj~_J\o]P]@zM_qfj#e~i$I.M]컨ذ6L8?ېu/&\x648XV/ƃDٴHr"؍2HӼp2O)pz&͒$ΗDi@(!?CX#:]en`SX[s6v]PPK
    TPU(    $   javax/activation/URLDataSource.class}S]OA=ӯ-B$& 1nB۔-㓯(&>(얲j6;ssΜ; P.NSV`wØ{rrxࡂG
zEi9Ss^)Y)0ضgL/نe2+hD/䭷@hF׷
#U*;Zݐf0`3F#MHfk[V^ISmu~_ci2v+Ymu,/HDg7i{JZaWX@!V]fa3]תl'츤פLjna{
=iy2#YǭOT	,WE
U,mHTn)xbTjjlݞ:tXưXE^n	T~a>/_5(p;뗒WEX5ݼhC<jw܎F$yS]vv;?dr1@^;@2"#'&˯ONU?~9(0F1pz*|I>]j|`(f>g)@TNgŕb>"($?0"ԵSSX(i*1~
׉8U_H*]U#MkɝuaWdeDȉpU7	/h8:w]Po _&R̚zS׳艐,~Oʈ`وjzX'#NoA)<x)'+PK
    TP    $   javax/activation/DataHandler$1.classTkOA=Cey"B<
(Ф`x!|#,fI"D춖&h4{ܙgνs߮>kB3!"X-
a#F5$4i>۔/пv IBy$]ӶҕIrH+Vάd@0k3R97s\GCrldL7Use2Z~!&hX3-;UζMsy6dzG:&^e)'٬bSfd5Ern]f|P
-;ji,IIo2vִ֕o4<y˓:Ь:Ш#.Sxc3Ŝyn҉2WHyd䧥=PLYV=}>vSUhxi%bHREc?Q )a]08vLWm<n%ЎWBMY"|O/_-
 }K|">|hD;mЂ{#W׉%1=ԗsC|DeU>AG)"k|8Űaz1n=C%{яv"F8uigIsy ~0yטd<̺b5/ž, 4Κ$Wy}N4!8Yyt:8
q-w PK
    TP]@t         module-info.classMMA0*>x<
(#|mlvf^?ɶNA ʴ-VTcў(bNXcIrVZ%JtL	Y̌C|fv^,U6Д77k} P#f:k`bޠgNUPK
     TP               META-INF/maven/PK
     TP            "   META-INF/maven/com.sun.activation/PK
     TP            5   META-INF/maven/com.sun.activation/jakarta.activation/PK
    NTPrd  
  <   META-INF/maven/com.sun.activation/jakarta.activation/pom.xmlio6+8Tv[*겤Zkd[(hHFR}L_Y;	ww1{lj4'BRNd4Dlv2Ϟt/AM~gtV)C#GEMfeJ"<ҚbEdN6DIX7|&p@JQlA
 Q8cZ	XI1OEM[I9JIOtI 8Ox-*ZTLXȪjtX$JJEdJ:GI[Οw*N)I|VN  oI'Cs⢲:޾I&#AdHCx8wo.1eRaV&4K^`e?
(
BEh Q07!Z(AWeיEF}zaQp]gip|&YVWꕙSKRYd_d,wpkġ m\hѢnH
B 8ibS%d wCmf*I`
Bh|5PlIns놪ڋ]
v	Ѧ-MPfEۂ~E-jy6}0=qϏ-verF=ۆeSI7t
MhM䊚,+}}r(`IJ*> >&gtUM:Zr;Q5s}.EgVЭGhcINѫ)z 3Φt0:,Re
jdbub,1.(}mt(#KR!zD-LqW+/,Kiiq3_QDg[7?">ғӐ)QE%¬f|G%oکgȢ읎1t
P-(H$Jy[Ɋ/vc
጖:b-ϙFK 
RRs~!7;2NS}qL%KsD;H;6
Z(~;;PUi-os
:"enV-/>vv8_%>6%}ɶWS^wBжgvӫWno[xz!- d5T,}E =,ɀqEJܴBV*#Bwvb(Qo{Ԅ+zv~zs~G;ȿ:.8<M6'!w%O~p#>%J5),fD?*sH<|4Qorm +dipnפ'])VVl
φp\uk+g`uvJC,a30=z*u*!"0T :55e 5^LM\%\8F(xM4xa8m1So.<}^~Kӱe\
-\P9	
Ӗ^Rv6KgVhGS׭g^K½mm[+1C3_BzܘvnZ=L=
!lPK
    TP~h   y   C   META-INF/maven/com.sun.activation/jakarta.activation/pom.propertiesMɱ@0OqJ6/p8h&ލ?_#K-00`"+q:UEY+0u.6/.D+q&a0
l,D6JjPK
     TP            	          A    META-INF/PK
    TP               '   META-INF/MANIFEST.MFPK
     TP                      A^  com/PK
     TP                      A  com/sun/PK
     TP                      A  com/sun/activation/PK
     TP                      A  com/sun/activation/viewers/PK
     TP                      A  com/sun/activation/registries/PK
     TP                      AL  javax/PK
     TP                      Ap  javax/activation/PK
    TP]-R5  r               META-INF/NOTICE.mdPK
    TP\ݗ)  E               META-INF/mimetypes.defaultPK
    TP}`5x2  f               META-INF/LICENSE.mdPK
    TP   $             w
  META-INF/mailcap.defaultPK
    TPb(]    2           0  com/sun/activation/viewers/ImageViewerCanvas.classPK
    TPe	BS    ,             com/sun/activation/viewers/ImageViewer.classPK
    TP  }  +             com/sun/activation/viewers/TextViewer.classPK
    TPd[	    +             com/sun/activation/viewers/TextEditor.classPK
    TP#c  	  1           #  com/sun/activation/registries/LineTokenizer.classPK
    TPQ    0           N)  com/sun/activation/registries/MimeTypeFile.classPK
    TP	e^    1           2  com/sun/activation/registries/MimeTypeEntry.classPK
    TP"%    9           4  com/sun/activation/registries/MailcapParseException.classPK
    TPYǋ+  %  /           =6  com/sun/activation/registries/MailcapFile.classPK
    TPVt  C  4           
J  com/sun/activation/registries/MailcapTokenizer.classPK
    TP?mt  K  .           R  com/sun/activation/registries/LogSupport.classPK
    TP>}    *           V  javax/activation/CommandInfo$Beans$1.classPK
    TPg+    -           X  javax/activation/MimeTypeParseException.classPK
    TPS      $           BZ  javax/activation/CommandObject.classPK
    TPߙ    *           9[  javax/activation/MailcapCommandMap$1.classPK
    TP$=|  	  3           ^  javax/activation/DataSourceDataContentHandler.classPK
    TP&-  r  %           b  javax/activation/FileDataSource.classPK
    TP3    !           f  javax/activation/CommandMap.classPK
    TP    (           ?k  javax/activation/SecuritySupport$5.classPK
    TPjgD    "           Em  javax/activation/CommandInfo.classPK
    TP@Լ1
  
  ,           p  javax/activation/MimeTypeParameterList.classPK
    TPa    (           D{  javax/activation/SecuritySupport$3.classPK
    TPԈ    -           ~  javax/activation/MimetypesFileTypeMap$1.classPK
    TPVv     3             javax/activation/UnsupportedDataTypeException.classPK
    TP&.r  
  (           /  javax/activation/CommandInfo$Beans.classPK
    TPc    "             javax/activation/FileTypeMap.classPK
    TP]M=
  I  +             javax/activation/MimetypesFileTypeMap.classPK
    TP/    ,             javax/activation/DataHandlerDataSource.classPK
    TP~'   Z  !           8  javax/activation/DataSource.classPK
    TP#{  0  (           T  javax/activation/MailcapCommandMap.classPK
    TP-(  F  (             javax/activation/SecuritySupport$1.classPK
    TPYc  
  +             javax/activation/ActivationDataFlavor.classPK
    TPn    (           ½  javax/activation/SecuritySupport$2.classPK
    TP.O
  {&  "             javax/activation/DataHandler.classPK
    TPN:    (             javax/activation/SecuritySupport$4.classPK
    TPD  *  /             javax/activation/ObjectDataContentHandler.classPK
    TPڀw  f  &             javax/activation/SecuritySupport.classPK
    TP%S      0             javax/activation/DataContentHandlerFactory.classPK
    TPz                 javax/activation/MimeType.classPK
    TP?v+  V  )             javax/activation/DataContentHandler.classPK
    TPU(    $           )  javax/activation/URLDataSource.classPK
    TP    $           g  javax/activation/DataHandler$1.classPK
    TP]@t                 v  module-info.classPK
     TP                      I  META-INF/maven/PK
     TP            "          v  META-INF/maven/com.sun.activation/PK
     TP            5            META-INF/maven/com.sun.activation/jakarta.activation/PK
    NTPrd  
  <           	  META-INF/maven/com.sun.activation/jakarta.activation/pom.xmlPK
    TP~h   y   C             META-INF/maven/com.sun.activation/jakarta.activation/pom.propertiesPK    = =       //
//  ---------
// |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
// |#       #|  
// |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
// |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
//  --------- 
//
//  This file is part of OpenSCDP.
//
//  OpenSCDP is free software; you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation; either version 2 of the License, or
//  (at your option) any later version.
//
//  OpenSCDP is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with OpenSCDP; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
//
//  Simple test runner framework





// ---------------------------
// Create a test runner object
//
function TestRunner(name) {

	this.name = name;
	this.testGroupRunners = new Array();
	this.testProcedures = new Array();
	this.testMapper = new Array();
	this.testGroupPrototype = new TestGroup();
	this.testProcedurePrototype = new TestProcedure();
	this.testReport = new TestReport();
}



//
// Add a test group to the test runner
// This will iterate through all test cases and locate used procedures and steps
//
TestRunner.prototype.addTestGroup = function(testGroup) {
	var tgrs = this.testGroupRunners;
	
	tgr = new TestGroupRunner(this, testGroup);

	tgrs.push(tgr);
}



//
// Create test group from XML file and add to test runner
// 
TestRunner.prototype.addTestGroupFromXML = function (file, parameter) {
	// Parse XML file.
	var parser = new GPXML();
	parser.defineArrayElement("/testgroup", "testcase,function", "id,Name");
	parser.defineArrayElement("/testgroup/testcase/procedures", "procedure");
	var xml = parser.parse(file);
	
	// Determine CTOR function
	var ctor = xml.constructor.Script;
	if (!ctor) {
		// Use a default constructor unless defined in XML profile
		ctor = function(name, parameter) { TestGroup.call(this, name, parameter); };
	}
	
	// Make CTOR available in scope object
	// this[xml.id] = ctor;
	
	// Set correct prototype object
	ctor.prototype = new TestGroup();
	ctor.prototype.constructor = ctor;
	ctor.prototype.usedProcedures = new Array();
	
	// Add test cases to prototype object
	var testcases = xml.testcase;
	for (var i in testcases) {
		if (i != "arrayIndex") {
			var s = testcases[i].Script;
			s.XML = testcases[i];
			ctor.prototype["case" + i] = s;
			if (testcases[i].procedures) {
				var procedures = testcases[i].procedures.procedure;
				ctor.prototype.usedProcedures[i] = new Array();
				
				for (var p = 0; p < procedures.length; p++) {
					ctor.prototype.usedProcedures[i].push(procedures[p].id);
				}
			}
		}
	}
	
	// Add setup function to prototype object
	if (xml.setup) {
		ctor.prototype["setUp"] = xml.setup.Script;
	}
	
	// Add teardown function to prototype object
	if (xml.teardown) {
		ctor.prototype["tearDown"] = xml.teardown.Script;
	}
	
	// Add functions to prototype object
	var functions = xml["function"];
	for (var i in functions) {
		if (i != "arrayIndex") {
			var s = functions[i].Script;
			ctor.prototype[i] = s;
		}
	}
	
	ctor.XML = xml;
	
	var tc = new ctor(xml.id, parameter);
	
	this.addTestGroup(tc);
}



//
// Add a test procedure constructor to the list
// Use the getName() method to obtain the test procedure name
//
TestRunner.prototype.addTestProcedure = function(proc) {
	var name = proc.getName();
	if (name) {
		this.testProcedures[name] = proc;
	}
}



//
// Create test procedure from XML file and add to test runner
// 
TestRunner.prototype.addTestProcedureFromXML = function (file, parameter) {
	// Parse XML file.
	var parser = new GPXML();
	parser.defineArrayElement("/testprocedure", "teststep,function", "id,Name");
	var xml = parser.parse(file);

	// Determine CTOR function
	var ctor = xml.constructor.Script;
	if (!ctor) {
		// Use a default constructor unless defined in XML profile
		ctor = function(testgroup, name, parameter) { TestProcedure.call(this, testgroup, name, parameter); };
	}

	// Make CTOR available in scope object
	// this[xml.id] = ctor;
	
	// Set correct prototype object
	ctor.prototype = new TestProcedure();
	ctor.prototype.constructor = ctor;
	var teststeps = xml.teststep;
	for (var i in teststeps) {
		if (i != "arrayIndex") {
			var s = teststeps[i].Script;
			ctor.prototype["step" + i] = s;
		}
	}
	if (xml.setup) {
		ctor.prototype["setUp"] = xml.setup.Script;
	}
	if (xml.teardown) {
		ctor.prototype["tearDown"] = xml.teardown.Script;
	}
	
	// Add functions to prototype object
	var functions = xml["function"];
	for (var i in functions) {
		if (i != "arrayIndex") {
			var s = functions[i].Script;
			ctor.prototype[i] = s;
		}
	}

	ctor.XML = xml;
	ctor.getName = function() { return xml.id; };	

	this.testProcedures[xml.id] = ctor;
}



//
// Return constructor of test procedure
// 
TestRunner.prototype.getTestProcedure = function(name) {
	return this.testProcedures[name];
}



//
// Return number of failed tests
// 
TestRunner.prototype.getFailedCounter = function() {
	return this.failedCounter;
}



//
// Return log of last test run
// 
TestRunner.prototype.getLog = function() {
	return this.log;
}



//
// Add test to test mapper, which maps test unique id to listening object
//
TestRunner.prototype.addTest = function(name, listener) {
	this.testMapper[name] = listener;
}



//
// Run all test groups
//
TestRunner.prototype.run = function() {
	this.failedCounter = 0;
	this.log = "";
	for (var i = 0; i < this.testGroupRunners.length; i++) {
		var testGroupRunner = this.testGroupRunners[i];
		testGroupRunner.run();
	}
}



//
// Enable or disable test
//
TestRunner.prototype.enable = function(name, state) {
	var listener = this.testMapper[name];
	if (listener && listener.enable) {
		return listener.enable(state);
	} else {
		throw new GPError("TestRunner", GPError.OBJECT_NOT_FOUND, 0, name);
	}
}



//
// isEnabled query from TestGroup runner
//
TestRunner.prototype.isEnabled = function(name) {
	var listener = this.testMapper[name];
	if (listener && listener.isEnabled) {
		return listener.isEnabled();
	}
	return true;
}



//
// hasPassed Listener
//
TestRunner.prototype.hasPassed = function(name, log) {
//	print("hasPassed(" + name + ")");
	if (log) {
		this.log += log;
	}
	var listener = this.testMapper[name];
	if (listener && listener.hasPassed) {
		listener.hasPassed(log);

		if (listener.getXML) {
			var result = new TestResult(name, true, log, listener.getXML());
			this.testReport.addResult(result);
		}
	} else {
		print("No receiver for passed notification : " + name);
//		for (var i in this.testMapper) {
//			print("- " + i);
//		}
	}
}



//
// hasFailed Listener
//
TestRunner.prototype.hasFailed = function(name, log) {
//	print("hasFailed(" + name + ")");
	if (log) {
		this.log += log;
	}
	var listener = this.testMapper[name];
	if (listener && listener.hasFailed) {
		listener.hasFailed(log);

		if (listener.getXML) {
			var result = new TestResult(name, false, log, listener.getXML());
			this.testReport.addResult(result);
		}
		this.failedCounter++;
	}
}



/**
 * Write test report
 */
TestRunner.prototype.report = function(fn) {
	this.testReport.writeReport(fn);
	print("Report written to " + fn);
}



// ----------------------------------------
// Constructor for a TestGroupRunner object
//
function TestGroupRunner(testRunner, testGroup) {
	this.testRunner = testRunner;
	this.testGroup = testGroup;
	
	var testcases = testGroup.getTestCaseNames();
	
	for (var i = 0; i < testcases.length; i++) {
		var tcr = new TestCaseRunner(this, testcases[i]);
	}
}



//
// run this test group
//
TestGroupRunner.prototype.run = function() {
	var test = this.testGroup;
	
	test.run(this.testRunner);
}




// ---------------------------------------
// Constructor for a TestCaseRunner object
//
function TestCaseRunner(testGroupRunner, testCase) {
	this.testGroupRunner = testGroupRunner;
	this.testCase = testCase;
	this.selected = true;
	
	var testRunner = testGroupRunner.testRunner;
	testRunner.addTest(testGroupRunner.testGroup.getName() + "/" + testCase, this);
			
	this.xml = testGroupRunner.testGroup.getTestCase(testCase).XML;

	var testGroup = testGroupRunner.testGroup;
		
	var testprocedures = testGroup.getUsedTestProceduresForTestCase(testCase);
	
	if (testprocedures) {
		for (var i = 0; i < testprocedures.length; i++) {
			var tpr = new TestProcedureRunner(this, testprocedures[i]);
		}
	}
}



//
// Run this test case
//
TestCaseRunner.prototype.run = function() {
	var test = this.testGroupRunner.testGroup;
	
	test.runTestCase(this.testCase, this.testGroupRunner.testRunner);
}



//
// Tell test runner if case is enabled
//
TestCaseRunner.prototype.isEnabled = function() {
	return this.selected;
}



//
// Add a log entry to the test case node
//
TestCaseRunner.prototype.addLog = function(log) {
}



//
// Get log for the test case node
//
TestCaseRunner.prototype.getLog = function() {
	return this.log;
}



/**
 * Return describing XML element
 *
 * @type Object
 * @return the XML element for this test case
 */
TestCaseRunner.prototype.getXML = function() {
	return this.xml;
}



//
// Listener for passed notifications
// 
TestCaseRunner.prototype.hasPassed = function(log) {
	this.failed = false;
	this.addLog(log);
}



//
// Listener for failed notifications
// 
TestCaseRunner.prototype.hasFailed = function(log) {
	this.failed = true;
	this.addLog(log);
}



//
// Clear result of test
//
TestCaseRunner.prototype.clearResult = function() {
	this.failed = false;
}




//
// Enable or disable test
//
TestCaseRunner.prototype.enable = function(state) {
	this.selected = state;
}




// --------------------------------------------
// Constructor for a TestProcedureRunner object
//
function TestProcedureRunner(testCaseRunner, testProcedure) {
	this.testCaseRunner = testCaseRunner;
	this.testProcedure = testProcedure;
	
	var tp = this.testCaseRunner.testGroupRunner.testRunner.testProcedures[testProcedure];

	if (tp) {
		var list = new Array();
		for (var i in tp.prototype) {
			if (i.substr(0, 4) == "step") {
				var step = i.substr(4);
				list.push(step);
			}
		}

		list.sort();
		
		for (var i = 0; i < list.length; i++) {
			var tpsr = new TestStepRunner(this, list[i]);
		}
	} else {
		print("No test procedure implementation found for " + testProcedure);
	}
}




// ---------------------------------------
// Constructor for a TestStepRunner object
//
function TestStepRunner(testProcedureRunner, testStep) {
	this.testProcedureRunner = testProcedureRunner;
	this.testStep = testStep;
	
	var testCaseRunner = testProcedureRunner.testCaseRunner;	
	var testGroupRunner = testCaseRunner.testGroupRunner;
	var testRunner = testGroupRunner.testRunner;
	var testName = testGroupRunner.testGroup.getName() + "/" + 
	               testCaseRunner.testCase + "/" + 
	               testProcedureRunner.testProcedure + "/" +
	               testStep;
	               
	testRunner.addTest(testName, this);
}



//
// Receive passed notifications
//
TestStepRunner.prototype.hasPassed = function() {
}



//
// Clear test result display
//
TestStepRunner.prototype.clearResult = function() {
}


function TestReport() {
	this.testResults = [];
}



TestReport.prototype.addResult = function(result) {
	this.testResults.push(result);
}



TestReport.prototype.writeReport = function(filename) {
	var xml = <testreport/>
	
	for (var i = 0; i < this.testResults.length; i++) {
		var r = this.testResults[i];
		var x = r.toXML();
		xml.testcaseresult += x;
	}

	var os = new java.io.FileOutputStream(filename);
	var fw = new java.io.OutputStreamWriter(os, "UTF-8");

	fw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
	fw.write("<?xml-stylesheet type=\"text/xsl\" href=\"docreport.xsl\" ?>\n");

	fw.write(xml.toXMLString());
	fw.close();
}



function TestResult(id, verdict, log, tcxml) {
	this.id = id;
	this.verdict = verdict;
	this.log = log;
	this.tcxml = tcxml;
}



TestResult.prototype.toXML = function() {
	var source = this.id.split("/")[0];
	var sourceid = this.id.split("/")[1];

	var xml = <testcaseresult id={this.id} source={source} sourceid={sourceid}/>;

	xml.name = <name>{this.tcxml.name.elementValue}</name>;

	xml.verdict = <verdict>{ this.verdict ? "Passed" : "Failed" }</verdict>;
	xml.log = <log>{ "\n" + this.log + "\n" }</log>;
	return xml;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Core elements of a test group containing individual test cases
 */



/**
 * Create a test group object containing test cases.
 * 
 * @class
 * <p>Abstract base class implementing a group of test cases.</p>
 * <p>Actual test group objects are derived from this base class.</p>
 * <p>Each test case is created as a method of this object.</p>
 * @constructor
 * @param {String} name the name of the test group
 * @param {Object} parameter the parameter object for this group of tests
 */
function TestGroup(name, parameter) {

	this.name = name;
	this.parameter = parameter;
//	this.logfile = new String("--- TestGroup " + name + "\n");
	this.marker = null;
	
//	print("TestGroup constructor called");
}



/**
 * Log a text message.
 * 
 * @param {String} message the message to add to the log
 */
TestGroup.prototype.log = function(message) {
	GPSystem.trace(message);
//	this.logfile += message + "\n";
//	print(message);
}



/**
 * Setup method called before invoking each individual test case.
 */
TestGroup.prototype.setUp = function() {
//	this.log("TestGroup.setUp() called");
}



/**
 * Teardown method called after invocation of a test case.
 */
TestGroup.prototype.tearDown = function() {
//	this.log("TestGroup.tearDown() called");
}



/**
 * Verify that the given assertion evaluates to true. Throw an exception if result is false.
 * 
 * @param {Boolean} result true if assertion is valid
 * @param {String} message the message to log in case result is false
 */
TestGroup.prototype.assertTrue = function(result, message) {
	if (!result) {
		if (this.marker) {
			throw new Error("Assertion failed for [" + this.marker + "]: " + message);
		} else {
			throw new Error("Assertion failed: " + message);
		}
	}
}



/**
 * Verify that the given values are equal. Throw an exception if not.
 * 
 * @param {Any} first the first argument
 * @param {Any} second the second argument
 * @param {String} message the message to log in case result is false
 */
TestGroup.prototype.assertEquals = function(first, second, message) {
	if (first != second) {
		if (this.marker) {
			throw new Error("Assertion failed for [" + this.marker + "]: " + message);
		} else {
			throw new Error("Assertion failed: " + message);
		}
	}
}



/**
 * Sets a marker used to identify a context in which an assertion failed.
 * 
 * <p>A context can be a certain iteration
 * or group of assertions. A marker allows to further identify the area of a problem.</p>
 * 
 * @param {String} marker the marker to set
 */
TestGroup.prototype.setMarker = function(marker) {
	this.marker = marker;
}



/**
 * Returns the name of test group.
 * 
 * @type String
 * @return the name of the test group
 */
TestGroup.prototype.getName = function() {
		return this.name;
}



/**
 * Returns a list of tests as sorted array of test case names.
 * 
 * @type String[]
 * @return the sorted array of test case names
 */
TestGroup.prototype.getTestCaseNames = function() {
	var tests = new Array();
	
	for (f in this) {
		if (f.substr(0, 4) == "case") {
			if (this[f] instanceof Function) {
				tests.push(f.substr(4));
			}
		}
	}

	tests.sort();
	return tests;
}



/**
 * Returns a specific test case function.
 * 
 * @param {String} name the test case name
 * @type Function
 * @return the test case method
 */
TestGroup.prototype.getTestCase = function(name) {
	return this["case" + name];
}



/**
 * Returns a list of test procedure names referenced by a test case.
 * 
 * @param {String} test case name
 * @type String[]
 * @return a list of test procedure names or undefined
 */
TestGroup.prototype.getUsedTestProceduresForTestCase = function(name) {
	if (this.constructor.prototype.usedProcedures) {
		return this.constructor.prototype.usedProcedures[name];
	} else {
		return undefined;
	}
}



/**
 * Run a named test procedure.
 * 
 * <p>This method is called by code in a test case to run a test procedure.</p>
 * <p>This method uses the test runner to create a new instance of the test procedure object.
 * All test steps in the procedure are executed and the test procedure object is returned to
 * the caller for further processing of test results.</p>
 * 
 * @param {String} name the test procedure name
 * @param {Object} param the parameter object to pass to the execution of the test procedure
 * @type TestProcedure
 * @return the test procedure object
 */
TestGroup.prototype.runTestProcedure = function(name, param) {
	if (!this.testRunner) {
		throw new GPError("TestGroup", GPError.INVALID_USAGE, 0, "No test runner defined");
	}
	var proc = this.testRunner.getTestProcedure(name);
	var test = new proc(name, this, param);
	test.run();
	
	return test; 
}



/**
 * Report progress of passed steps in a test procedure to the test runner. This method is used internally.
 * 
 * @private
 * @param {String} procedure the procedure name
 * @param {String} step the step name
 */
TestGroup.prototype.reportProgress = function(procedure, step) {
	if (this.testRunner) {
		var runner = this.testRunner;
		var uniqueName = this.currentTestCase + "/" + procedure + "/" + step;
		runner.hasPassed(uniqueName, null);
	}
}



/**
 * Initialize a test run. This method is used internally.
 * @private
 */
TestGroup.prototype.initTestRun = function() {
	this.marker = null;
}



/**
 * Run a single test case. This method is called internally. Use {@link #runTestCase} for running a single test case.
 * 
 * @private
 * @type boolean
 * @return true if test passed
 */
TestGroup.prototype.runTestCaseInternal = function(casename, runner) {
	var result = false;
	this.currentTestCase = this.name + "/" + casename;
	this.testRunner = runner;

//	this.logfile = "";

	var starttime = new Date();
	GPSystem.markTrace();
	logentry = "+ TestCase " + this.currentTestCase + " started " + starttime;
	print(logentry);
	this.log(logentry);
	try {
		this.setUp();
		var func = this.getTestCase(casename);
		func.call(this);
		this.tearDown();
		var endtime = new Date();
		logentry = "+ TestCase " + this.currentTestCase + " completed on " + endtime + " after " + (endtime.valueOf() - starttime.valueOf()) + " ms";
		print(logentry);
		this.log(logentry);
		if (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasPassed(this.currentTestCase, logfile);
		}
		result = true;
	}
	catch(e) {
		var endtime = new Date();
		logentry = "+ TestCase " + this.currentTestCase + " failed on " + endtime + " after " + (endtime.valueOf() - starttime.valueOf()) + " ms";
		print(logentry);
		this.log(logentry);
		
		logentry = "  ### - " + e;
		print(logentry);
		this.log(logentry);
		for (j in e) {
			logentry = "  ### " + j + " = " + e[j];
			print(logentry);
			this.log(logentry);
		}
		
		if (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasFailed(this.currentTestCase, logfile);
		}
	}
	return result;
}



/**
 * Runs all tests in a test group.
 * 
 * <p>This method can be used to run a test group without a test runner. In that case leave the runner
 * argument empty or null.</p>
 * 
 * @param {TestRunner} runner the test runner to report progress or undefined or null
 */
TestGroup.prototype.run = function(runner) {
	this.initTestRun();
	
	var tests = this.getTestCaseNames();
	
	var startgroup = new Date();
	var logentry = "TestGroup " + this.name + " started " + startgroup;
	var failures = 0;
	print(logentry);
	this.log(logentry);
	
	for (var i = 0; i < tests.length; i++) {
		var uniqueName = this.name + "/" + tests[i];
		
		if (runner) {
			if (!runner.isEnabled(uniqueName))
				continue;
		}
		
		if (!this.runTestCaseInternal(tests[i], runner)) {
			failures++;
		}
	}

	var endgroup = new Date();
	logentry = "TestGroup " + this.name + " completed on " + endgroup + " with " + failures + " failed tests";
	print(logentry);
	this.log(logentry);
}



/**
 * Run a single test in a test group, optionally using a test runner.
 * 
 * @param {String} casename the name of the test case
 * @param {TestRunner} the test runner object or undefined or null
 */
TestGroup.prototype.runTestCase = function(casename, runner) {
	this.initTestRun();
	this.runTestCaseInternal(casename, runner);
}
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core classes to construct card outlines
 */



load("FCPDecorator.js");
load("CRTDecorator.js");
load("ARRDecorator.js");


//
// CTOR - ATR Outline
// 
function OutlineATR(atr) {
	this.atr = atr;

        // Create OutlineNode object and register in ATR object
        var view = new OutlineNode("ATR=" + this.atr.toByteString().toString(HEX));
        view.setIcon("atr");
        view.setUserObject(this);
        this.view = view;
}


OutlineATR.prototype.selectedListener = function() {
	print(this.atr);
}


//
// CTOR - FCP Outline
//
function OutlineFCP(fcp) {
	this.fcp = fcp;

        // Create OutlineNode object and register in FCP object
        var view = new OutlineNode("FCP=" + this.fcp.toString(HEX));
        view.setIcon("header");
        view.setUserObject(this);
        this.view = view;
        
        try	{
        	var asn = new ASN1(this.fcp);
        	FCPDecorator(asn);
		view.insert(asn);
        }
        catch(e) {
        	print("Unable to decode FCP structure");
        }
}



//
// CTOR - Outline node for DFs
//
function OutlineDF(card, id, name, profile) {
        this.card = card;
        this.id = id;

        // Create OutlineNode object and register in OutlineDF object
        var view = new OutlineNode(name, true);
        view.setUserObject(this);
        this.view = view;
        
        this.profile = profile;
}



//
// Event handler for expand notifications
//
OutlineDF.prototype.expandListener = function() {

        if (this.expanded)
                return;

        var view = this.view;
        var eflist = this.profile.EF;
        
        try	{
        	var df = new CardFile(this.card, this.id);
		this.df = df;
				
		var fcp = df.getFCPBytes();
		if (fcp && (fcp.length > 1)) {
			var fcpmodel = new OutlineFCP(fcp);
			view.insert(fcpmodel.view);	
		}
				
		for (var i = 0; i < eflist.length; i++) {
		        var ef = new OutlineEF(this.df, eflist[i].name, eflist[i]);
		        view.insert(ef.view);
		}
	}
	catch(e) {
		print(e);
	}
        
        this.expanded = true;
}





//
// CTOR - Outline node for EFs
//
function OutlineEF(df, name, profile) {
        this.df = df;

        // Create OutlineNode object and register in OutlineEF object
        var view = new OutlineNode(name, true);
        view.setIcon("document");
        view.setUserObject(this);
        this.view = view;
        
        this.profile = profile;
}



//
// Event handler for expand notification
//
OutlineEF.prototype.expandListener = function() {
        if (this.expanded)
                return;

        var view = this.view;
        var efdesc = this.profile;

	try	{        
	        var ef = new CardFile(this.df, ":" + efdesc.fid);
	}
	catch(e) {
		print(e);
		return;
	}
		
	var isTransparent = true;
	
	if (efdesc.fid.length > 2) {  // Select by FID or SFI
		var fcp = ef.getFCPBytes();
		if (fcp && (fcp.length > 1)) {
			var fcpmodel = new OutlineFCP(fcp);
			view.insert(fcpmodel.view);
			isTransparent = ef.isTransparent();
		} else {
			isTransparent = (efdesc.type == "T");
		}
	}
		
        if (isTransparent) {
        	var filesize = -1;
        	if (fcp) {
	        	filesize = ef.getLength();
	       	
	        	if (filesize > 1024)
	        		print("Please wait, reading " + filesize + " bytes...");
	        } else {
        		print("Please wait, reading card...");
	        }
        		
		try	{
			if (filesize > 0) {
				print("reading " + filesize);
		                var bs = ef.readBinary(0, filesize);
		        } else {
		                var bs = ef.readBinary();
		        }
	        }
	        catch(e) {
	       		print(e);
	       		this.expanded = true;
	       		return;
		}

		var bindata = new DataOutline(bs, efdesc.format);
		view.insert(bindata.view);
		
        } else {
                for (var rec = 1; rec < 255; rec++) {
                        try     {
                                ef.readRecord(rec);
                                var record = new OutlineRecord(ef, rec, efdesc);
                                view.insert(record.view);
                        }
                        catch(e) {
                              	if ((e instanceof GPError) && (e.reason == 0x6A83))
                			break;
                                print(e);
                                break;
                        }
                }
        }
        
        this.expanded = true;
}





//
// CTOR - Outline for records in an EF
//
function OutlineRecord(ef, no, efdesc) {
        this.ef = ef;
        this.no = no;
        this.efdesc = efdesc;
                
        // Create OutlineNode object and register in OutlineRecord object
        var view = new OutlineNode("Record#" + no, true);
        view.setIcon("record");
        view.setUserObject(this);
        this.view = view;
}



//
// Expand event handler for records
//
OutlineRecord.prototype.expandListener = function() {
        if (this.expanded)
                return;

        var view = this.view;
        var ef = this.ef;

        var bs = ef.readRecord(this.no);

	var bindata = new DataOutline(bs, this.efdesc.format);
	view.insert(bindata.view);
        
        this.expanded = true;
}



//
// CTOR - Binary data outline
//
function DataOutline(data, format) {
	this.data = data;

	var ddata = data;
	if (ddata.length > 256) {
		ddata = data.bytes(0, 256);
	}
	
	var view = new OutlineNode(ddata.toString(HEX));
        view.setIcon("binary");
	view.setUserObject(this);
	this.view = view;
	
	if (((format == "asn1") || (format == "tlvlist")) && (data.length >= 2)) {
                var total = data.length;
                
                while(total >= 2) {
                	try	{
	                        var asn = new ASN1(data);
	                }
	            	catch(e) {
	            		print("Exception creating ASN.1 object: " + e);
	            		break;
	            	}
                        view.insert(asn);
                        total -= asn.size;
                        
                        if (format == "asn1") {
                                break;
                        }

                        data = data.bytes(asn.size);
                        if ((data.length == 0) || (data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
                                break;
                        }
                }
                        
                if (total > 0) {
                        var sparecontent = new OutlineNode(total + " spare bytes");
                        view.insert(sparecontent);
                }
        }
}



DataOutline.prototype.selectedListener = function() {
	print("--------------------------------------------------------------------------------");
	print(this.data);
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Common classes and functions for PKIX
 */

 

/**
 * Common functions and constants
 */
function PKIXCommon() {
}


PKIXCommon.digitalSignature	= 0x0080;
PKIXCommon.nonRepudiation		= 0x0040;
PKIXCommon.keyEncipherment		= 0x0020;
PKIXCommon.dataEncipherment	= 0x0010;
PKIXCommon.keyAgreement		= 0x0008;
PKIXCommon.keyCertSign			= 0x0004;
PKIXCommon.cRLSign				= 0x0002;
PKIXCommon.encipherOnly		= 0x0001;
PKIXCommon.decipherOnly		= 0x8000;


 
/**
 * Convert integer to fixed length string with leading zeros.
 *
 * @private
 * @param {Number} value the value to convert to a string.
 * @param {Number} digits the number of digits in output string. Must be <= 20.
 * @return the 0-padded string
 * @type String
 */
PKIXCommon.itos = function(value, digits) {
	if (digits > 20) {
		throw new Error("Digits must be <= 20");
	}
	var str = "" + value;
	str = "0000000000000000000".substr(19 - (digits - str.length)).concat(str);
	return str;
}



/**
 * Convert date and time to UTC string with format YYMMDDHHMMSSZ.
 *
 * @param {Date} d the date object.
 * @return the date/time string.
 * @type String
 */
PKIXCommon.dtoUTC = function(d) {
	var s = PKIXCommon.itos(d.getUTCFullYear() % 100, 2) +
			PKIXCommon.itos(d.getUTCMonth() + 1, 2) +
			PKIXCommon.itos(d.getUTCDate(), 2) +
			PKIXCommon.itos(d.getUTCHours(), 2) +
			PKIXCommon.itos(d.getUTCMinutes(), 2) +
			PKIXCommon.itos(d.getUTCSeconds(), 2) + "Z";
	return s;
}



/**
 * Add the specified number of days to a date object
 * 
 * @param {Date} d the date object
 * @param {Number} days the number of days to add, may be negative
 * @type Date
 * @return a new Date object
 */
PKIXCommon.addDays = function(d, days) {
	var hour = d.getUTCHours();
	var minute = d.getUTCMinutes();
	var second = d.getUTCSeconds();
	var cd = new Date(d);
	cd.setHours(12);
	
	var ts = cd.getTime();
	ts += days * 24 * 60 * 60 * 1000;
	var nd = new Date(ts);
	
	nd.setUTCHours(hour);
	nd.setUTCMinutes(minute);
	nd.setUTCSeconds(second);
	return nd;
}



/**
 * Converts the integer value into a BIT STRING value.
 * <p>The function interprets the integer value as bitmap, where
 * bit 0 is the most significant bit of the least significant byte.</p>
 * <p>The function adds the minimum number of bytes to the final bit string
 * and encodes the "number of unused bits at the beginning.</p>
 * 
 * @param {Number} val the value to convert
 * @return the bit string
 * @type ByteString
 */
PKIXCommon.bitstringForInteger = function(val) {
	var bb = new ByteBuffer();
	var b = 0;
	
	// Encode starting with the least significant byte
	while (val > 0) {
		b = val & 0xFF;
		bb.append(b);
		val = val >> 8;
	}
	
	// Determine number of unused bits
	var i = 0;
	while ((i < 8) && !(b & 1)) {
		i++;
		b >>= 1;
	}
	
	bb.insert(0, i);
	return bb.toByteString();
}



/**
 * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
 *
 * This prevent interpretation of the integer representation if converted into
 * a signed ASN1 INTEGER.
 *
 * @param {ByteString} value the value to convert
 * @return the converted value
 * @type ByteString
 */
PKIXCommon.convertUnsignedInteger = function(value) {
	assert(value.length > 0);
	
	var i = 0;
	for (var i = 0; (i < value.length - 1) && (value.byteAt(i) == 0); i++);
	
	if (value.byteAt(i) >= 0x80) {
		value = (new ByteString("00", HEX)).concat(value.bytes(i));
	} else {
		value = value.bytes(i);
	}
	
	return value;
}



/**
 * Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
 *		algorithm            AlgorithmIdentifier,
 *		subjectPublicKey     BIT STRING  }
 *
 *	AlgorithmIdentifier  ::=  SEQUENCE  {
 *		algorithm               OBJECT IDENTIFIER,
 *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 * 
 *	id-ecPublicKey OBJECT IDENTIFIER ::= {
 *		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
 *
 *	ECParameters ::= CHOICE {
 *		namedCurve         OBJECT IDENTIFIER,
 *		implicitCurve      NULL,
 *		specifiedCurve     SpecifiedECDomain }
 * </pre>
 * @return the subjectPublicKey TLV structure
 * @type ASN1
 */
PKIXCommon.createECSubjectPublicKeyInfo = function(publicKey, encodeECDomainParameter) {
	var t = new ASN1("subjectPublicKeyInfo", ASN1.SEQUENCE);

	var algorithm = new ASN1("algorithm", ASN1.SEQUENCE,
			new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.10045.2.1", OID))
		);

	if (encodeECDomainParameter) {
		if (publicKey.getComponent(Key.ECC_P)) {		// Make sure curve components are available if only curve oid is defined
			publicKey.setComponent(Key.ECC_CURVE_OID, publicKey.getComponent(Key.ECC_CURVE_OID));
		}
		var ecParameter = 
			new ASN1("ecParameters", ASN1.SEQUENCE,
				new ASN1("version", ASN1.INTEGER, new ByteString("01", HEX)),
				new ASN1("fieldID", ASN1.SEQUENCE,
					new ASN1("fieldType", ASN1.OBJECT_IDENTIFIER, new ByteString("prime-field", OID)),
					new ASN1("prime", ASN1.INTEGER, 
						PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_P)))
				),
				new ASN1("curve", ASN1.SEQUENCE,
					new ASN1("a", ASN1.OCTET_STRING, 
						PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_A))),
					new ASN1("b", ASN1.OCTET_STRING, 
						PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_B)))
				),
				new ASN1("base", ASN1.OCTET_STRING,
						(new ByteString("04", HEX)).concat(publicKey.getComponent(Key.ECC_GX)).concat(publicKey.getComponent(Key.ECC_GY))),
				new ASN1("order", ASN1.INTEGER,
					PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_N)))
			);
		
		var cofactor = publicKey.getComponent(Key.ECC_H);
		var i = 0;
		for (; (i < cofactor.length) && (cofactor.byteAt(i) == 0); i++);
		if (i < cofactor.length) {
			ecParameter.add(new ASN1("cofactor", ASN1.INTEGER, cofactor.bytes(i)));
		}
		algorithm.add(ecParameter);	
	} else {
		algorithm.add(new ASN1("parameters", ASN1.OBJECT_IDENTIFIER, publicKey.getComponent(Key.ECC_CURVE_OID)));
	}
	
	t.add(algorithm);
	
	// Prefix a 00 to form correct bitstring
	// Prefix a 04 to indicate uncompressed format
	var keybin = new ByteString("0004", HEX);
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QX));
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QY));
	t.add(new ASN1("subjectPublicKey", ASN1.BIT_STRING, keybin));

	return t;
}



/**
 * Creates the RSA Public Key as subjectPublicKeyInfo TLV structure object.
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
 *		algorithm            AlgorithmIdentifier,
 *		subjectPublicKey     BIT STRING  }
 *
 *	AlgorithmIdentifier  ::=  SEQUENCE  {
 *		algorithm               OBJECT IDENTIFIER,
 *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 * 
 *	pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }
 *
 *	rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}
 *
 *	RSAPublicKey ::= SEQUENCE {
 *		modulus            INTEGER,    -- n
 *		publicExponent     INTEGER  }  -- e
 * </pre>
 *
 * @return the subjectPublicKey TLV structure
 * @type ASN1
 */
PKIXCommon.createRSASubjectPublicKeyInfo = function(publicKey) {
	var t = new ASN1("subjectPublicKeyInfo", ASN1.SEQUENCE);
	
	t.add(new ASN1("algorithm", ASN1.SEQUENCE,
		new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549.1.1.1", OID)),
		new ASN1("parameters", ASN1.NULL, new ByteString("", HEX))
	       ));
	// Prefix a 00 to form correct bitstring
	var keybin = new ByteString("00", HEX);

	var modulus = publicKey.getComponent(Key.MODULUS);
	modulus = PKIXCommon.convertUnsignedInteger(modulus);
	
	var exponent = publicKey.getComponent(Key.EXPONENT);
	exponent = PKIXCommon.convertUnsignedInteger(exponent);

	var rsapub = new ASN1("RSAPublicKey", ASN1.SEQUENCE,
			new ASN1("modulus", ASN1.INTEGER, modulus),
			new ASN1("publicKeyExponent", ASN1.INTEGER, exponent));

	keybin = keybin.concat(rsapub.getBytes());
	t.add(new ASN1("subjectPublicKey", ASN1.BIT_STRING, keybin));

	return t;
}



/**
 * Creates a relative distinguished name component.
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *	RelativeDistinguishedName ::=
 *		SET SIZE (1..MAX) OF AttributeTypeAndValue
 *
 *	AttributeTypeAndValue ::= SEQUENCE {
 *		type     AttributeType,
 *		value    AttributeValue }
 *
 *	AttributeType ::= OBJECT IDENTIFIER
 *
 *	AttributeValue ::= ANY -- DEFINED BY AttributeType
 *
 *	DirectoryString ::= CHOICE {
 *		teletexString           TeletexString (SIZE (1..MAX)),
 *		printableString         PrintableString (SIZE (1..MAX)),
 *		universalString         UniversalString (SIZE (1..MAX)),
 *		utf8String              UTF8String (SIZE (1..MAX)),
 *		bmpString               BMPString (SIZE (1..MAX)) }
 *</pre>
 *
 * @param {String} name the components name
 * @param {String} oid the oid for the RDN
 * @param {ASN1} value the value object
 * @return the 
 */
PKIXCommon.makeRDN = function(name, oid, value) {
	return new ASN1(name, ASN1.SET,
				new ASN1(ASN1.SEQUENCE,
					new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(oid, OID)),
					value
				)
			);
}



/**
 * Adds names from the name object to the RDNSequence.
 *
 * @param {ASN1} t the sequence object
 * @param {Object} name the name object
 */
PKIXCommon.addNames = function(t, name) {
	if (name.C) {
		t.add(PKIXCommon.makeRDN("country", "id-at-countryName", new ASN1(ASN1.PrintableString, new ByteString(name.C, ASCII))));
	}
	if (name.O) {
		t.add(PKIXCommon.makeRDN("organization", "id-at-organizationName", new ASN1(ASN1.UTF8String, new ByteString(name.O, UTF8))));
	}
	if (name.OU) {
		t.add(PKIXCommon.makeRDN("organizationalUnit", "id-at-organizationalUnitName", new ASN1(ASN1.UTF8String, new ByteString(name.OU, UTF8))));
	}
	if (name.S) {
		t.add(PKIXCommon.makeRDN("stateOrProvince", "id-at-stateOrProvinceName", new ASN1(ASN1.UTF8String, new ByteString(name.S, UTF8))));
	}
	if (name.L) {
		t.add(PKIXCommon.makeRDN("locality", "id-at-localityName", new ASN1(ASN1.UTF8String, new ByteString(name.L, UTF8))));
	}
	if (name.DC) {
		t.add(PKIXCommon.makeRDN("domainComponent", "id-domainComponent", new ASN1(ASN1.UTF8String, new ByteString(name.DC, UTF8))));
	}
	if (name.T) {
		t.add(PKIXCommon.makeRDN("title", "id-at-title", new ASN1(ASN1.UTF8String, new ByteString(name.T, UTF8))));
	}
	if (name.G) {
		t.add(PKIXCommon.makeRDN("givenName", "id-at-givenName", new ASN1(ASN1.UTF8String, new ByteString(name.G, UTF8))));
	}
	if (name.SN) {
		t.add(PKIXCommon.makeRDN("surname", "id-at-surname", new ASN1(ASN1.UTF8String, new ByteString(name.SN, UTF8))));
	}
	if (name.CN) {
		t.add(PKIXCommon.makeRDN("commonName", "id-at-commonName", new ASN1(ASN1.UTF8String, new ByteString(name.CN, UTF8))));
	}
	if (name.SERIALNUMBER) {
		t.add(PKIXCommon.makeRDN("serialNumber", "id-at-serialNumber", new ASN1(ASN1.UTF8String, new ByteString(name.SERIALNUMBER, UTF8))));
	}
	if (name.DNQ) {
		t.add(PKIXCommon.makeRDN("dnQualifier", "id-at-dnQualifier", new ASN1(ASN1.UTF8String, new ByteString(name.DNQ, UTF8))));
	}
	if (name.E) {
		t.add(PKIXCommon.makeRDN("emailAddress", "id-emailAddress", new ASN1(ASN1.IA5String, new ByteString(name.E, ASCII))));
	}
	if (name.UID) {
		t.add(PKIXCommon.makeRDN("userId", "id-userId", new ASN1(ASN1.UTF8String, new ByteString(name.UID, UTF8))));
	}
}



/**
 * Gets the dn as TLV object
 *
 * <p>This function support two format for names</p>
 * <pre>
 *  var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * or
 *  var issuer = [ { C:"UT"}, { O:"ACME Corporation" }, { CN:"Test-CA"} ];
 * </pre>
 *
 * <p>It supports the following RDNs:</p>
 * <ul>
 * <li>C - country</li>
 * <li>O - organization</li>
 * <li>OU - organizational unit</li>
 * <li>S - state or province</li>
 * <li>L - locality</li>
 * <li>T - title</li>
 * <li>G - given name</li>
 * <li>SN - surname</li>
 * <li>CN - common name</li>
 * <li>SERIALNUMBER - serial number</li>
 * <p>The first format sorts the RDS in the sequence C,O,OU,S,L,T,G,SN,CN,SERIALNUMBER</p>
 * </ul>
 * @param {Object} name the name object
 * @return the RDNSequence
 * @type ASN1
 */
PKIXCommon.encodeName = function(name) {
	var t = new ASN1("subject", ASN1.SEQUENCE);
	if (typeof(name.C) == "undefined") {
		for (var i = 0; i < name.length; i++) {
			PKIXCommon.addNames(t, name[i]);
		}
	} else {
		PKIXCommon.addNames(t, name);
	}
	return t;
}



/**
 * Writes a byte string object to file
 *
 * <p>The filename is mapped to the workspace location.</p>
 *
 * @param {String} filename the fully qualified name of the file
 * @param {ByteString} content the content to write
 */
PKIXCommon.writeFileToDisk = function(filename, content) {
	var file = new java.io.FileOutputStream(filename);
	file.write(content);
	file.close();
}



/**
 * Loads a binary file from disk
 *
 * @param {String} filename the fully qualified file name
 * @return the binary content
 * @type ByteString
 */
PKIXCommon.readFileFromDisk = function(filename) {
	// Open stream
	var f = new java.io.FileInputStream(filename);
	
	// Determine file size
	var flen = f.available();

	// Allocate native byte array
	var bs = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, flen);
	
	// Read into byte array
	var len = f.read(bs);

	f.close();
	
	// Allocate JavaScript ByteBuffer from native/wrapped byte array
	var bb = new ByteBuffer(bs);
	
	// Convert to JavaScript ByteString
	var data = bb.toByteString();

	return data;
}



PKIXCommon.test = function() {
	var issuer = { C:"C", O:"O", OU:"OU", SP:"SP", L:"L", DC:"DC", T:"T", G:"G", SN:"SN", CN:"CN", SERIALNUMBER:"serial", DNQ:"DNQ" };
	var dn = PKIXCommon.encodeName(issuer);
	print(dn);
	
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("00", HEX));
	assert(r.toString(HEX) == "00");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("80", HEX));
	assert(r.toString(HEX) == "0080");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("FF", HEX));
	assert(r.toString(HEX) == "00FF");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("0000", HEX));
	assert(r.toString(HEX) == "00");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("0080", HEX));
	assert(r.toString(HEX) == "0080");
	var r = PKIXCommon.convertUnsignedInteger(new ByteString("000080", HEX));
	assert(r.toString(HEX) == "0080");

}
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core classes to construct card outlines
 */



load("FCPDecorator.js");
load("CRTDecorator.js");
load("ARRDecorator.js");



//
// CTOR - OutlineCard default
//
function OutlineCard(outlineFactory, card, applicationFactory, aidlist) {

	this.factory = outlineFactory;
        this.card = card;
	this.af = applicationFactory;
	this.aidlist = aidlist;
		
        this.atr = card.reset(Card.RESET_COLD);

        // Create OutlineNode object and register in card object
        
        var name = card.profile.CardManufacturerProduct.Name;

	if (!name) {
		name = "Card";
	}
	
        var view = new OutlineNode(name);
        view.setUserObject(this);
        this.view = view;
}



//
// Expand clicked on node
//
// Read application list from EF_DIR or from card profile
//
OutlineCard.prototype.expandListener = function() {
        if (this.expanded)
                return;
                
        var view = this.view;

	//
	// Display ATR
	//
	var atrnode = this.factory.newOutlineATR(this.atr);
	
	view.insert(atrnode.view);

	//
	// Get list of application instances from card profile
	//
	var applicationInstances = this.card.profile.ApplicationInstances.ApplicationInstance;

	//
	// Make sure that we got a list
	//	
	assert(applicationInstances instanceof Array);

        //
        // Try reading the EF_DIR
        //
	var hasEFDIR = true;
	
	try	{
		var efdir = new CardFile(this.card, ":2F00");
	}
	catch(e) {
		print("Exception selecting EF_DIR. Assuming no EF_DIR...\n" + e);
		hasEFDIR = false;
	}

	//
	// Create a list of application identifier
	//
	var aidlist;
	
	if (this.aidlist) {
		aidlist = this.aidlist;
	} else {
		aidlist = new Array();
	}
	
	if (hasEFDIR) {
		//
		// Add MF to the list of applications
		//
		aidlist.push(new ByteString("3F00", HEX));

		//		
		// Read all AIDs from EF_DIR
		//
		
	        for (var rec = 1; rec < 255; rec++) {
        	        var record;
	                try     {
	                        record = efdir.readRecord(rec);
	                }
	                catch(e) {
	                	if ((e instanceof GPError) && (e.reason == 0x6A83))
	                		break;
	                        print(e);
	                        break;
	                }

	                var tlv = new ASN1(record);
                
	                for (var i = 0; i < tlv.elements; i++) {
	                        var t = tlv.get(i);
	                        switch(t.tag) {
	                        case 0x4F:
	                                aid = t.value;
	                                if (!aidlist[aid])
		                                aidlist.push(aid);
	                                break;
	                        }
	                }
		}
	} else {
		//
		// Create application list from card profile
		//
        	for (aid in  applicationInstances) {
        		if (aid == "arrayIndex")
        			continue;
        		aidlist.push(new ByteString(aid, HEX));
        	}
	}

	//
	// Sort the list of application identifier
	//	
	aidlist.sort();
	
	for (var i = 0; i < aidlist.length; i++) {
		var aid = aidlist[i];
		var applinstance = applicationInstances[aid.toString(HEX)];
		if (applinstance) {
/*
			print("from Card Profile: " + applinstance);
			print("  Label     : " + applinstance.Label);
			print("  AID       : " + applinstance.AID);
			print("  ProfileID : " + applinstance.ProfileID);
*/
			var uniqueId = new ByteString(applinstance.ProfileID, HEX);
					
			var instance = this.af.getApplicationInstance(new Object(), aid, this.card, uniqueId);
				
                        var struct = null;
                        
                        if (instance.profile.DataStructure) {
                        	struct = instance.profile.DataStructure.FileStructure;
                        }
                        
                        var path;
                        if (aid.length <= 2) {
	                        path = ":" + aid.toString(HEX);
                        } else {
                                path = "#" + aid.toString(HEX);
                        }
		        
		        var applentry;
		        if (struct) {                
	                        applentry = this.factory.newOutlineDF(this.card, path, applinstance.Label, struct);
	                } else {
	                        applentry = this.factory.newOutlineApplet(instance);
	                }
                        view.insert(applentry.view);
      		} else {
      			print("No profile found for aid " + aid);
      		}
	}

        this.expanded = true;
}





//
// CTOR - ATR Outline
// 
function OutlineATR(factory, atr) {
	this.factory = factory;
	this.atr = atr;

        // Create OutlineNode object and register in ATR object
        var view = new OutlineNode("ATR=" + this.atr.toByteString().toString(HEX));
        view.setIcon("atr");
        view.setUserObject(this);
        this.view = view;
}


OutlineATR.prototype.selectedListener = function() {
	print(this.atr);
}





//
// CTOR - FCP Outline
//
function OutlineFCP(factory, fcp) {
	this.factory = factory;
	this.fcp = fcp;

        // Create OutlineNode object and register in FCP object
        var view = new OutlineNode("FCP=" + this.fcp.toString(HEX));
        view.setIcon("header");
        view.setUserObject(this);
        this.view = view;

	if ((fcp.byteAt(0) == 0x62) ||
	    (fcp.byteAt(0) == 0x64) ||
	    (fcp.byteAt(0) == 0x6F)) {
	        try	{
	        	var asn = new ASN1(this.fcp);
	        	FCPDecorator(asn);
			view.insert(asn);
	        }
	        catch(e) {
	        	print(e);
	        	print("Unable to decode FCP structure");
	        }
	} else {
	}
}





//
// CTOR - Outline node for DFs
//
function OutlineDF(factory, card, id, name, profile) {
	if (arguments.length == 0)
		return;
		
	this.factory = factory;
        this.card = card;
        this.id = id;

        // Create OutlineNode object and register in OutlineDF object
        var view = new OutlineNode(name, true);
        view.setUserObject(this);
        this.view = view;
        
        this.profile = profile;
}





//
// Event handler for expand notifications
//
OutlineDF.prototype.expandListener = function() {

        if (this.expanded)
                return;

        var view = this.view;
        var eflist = this.profile.EF;
        
        try	{
        	var df = new CardFile(this.card, this.id);
		this.df = df;
				
		var fcp = df.getFCPBytes();
		if (fcp && (fcp.length > 1)) {
			var fcpmodel = this.factory.newOutlineFCP(fcp);
			view.insert(fcpmodel.view);	
		}
				
		for (var i = 0; i < eflist.length; i++) {
		        var ef = this.factory.newOutlineEF(this.df, eflist[i].name, eflist[i]);
		        view.insert(ef.view);
		}
	}
	catch(e) {
		print(e);
	}
        
        this.expanded = true;
}





//
// CTOR - Outline node for EFs
//
function OutlineEF(factory, df, name, profile) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
        this.df = df;

        // Create OutlineNode object and register in OutlineEF object
        var view = new OutlineNode(name, true);
        view.setIcon("document");
        view.setUserObject(this);
        this.view = view;
        
        this.profile = profile;
}



//
// Event handler for expand notification
//
OutlineEF.prototype.expandListener = function() {
        if (this.expanded)
                return;

        var view = this.view;
        var efdesc = this.profile;

	try	{
	        var ef = new CardFile(this.df, ":" + efdesc.fid);
	}
	catch(e) {
		print(e);
		return;
	}
		
	var isTransparent = true;
	var fcp = ef.getFCPBytes();
	var filelength = -1;
	if (fcp && (fcp.length > 1)) {
		var fcpmodel = this.factory.newOutlineFCP(fcp);
		view.insert(fcpmodel.view);
		isTransparent = ef.isTransparent();
		filelength = ef.getLength();
	} else {
		isTransparent = (efdesc.type == "T");
	}
		
        if (isTransparent) {
		try	{
			if (filelength > 0) {
		                var bs = ef.readBinary(0, filelength);
		        } else {
		                var bs = ef.readBinary();
		        }
	        }
	        catch(e) {
	       		print(e);
	       		this.expanded = true;
	       		return;
		}

		var bindata = this.factory.newDataOutline(bs, efdesc.format);
		view.insert(bindata.view);
		
        } else {
                for (var rec = 1; rec < 255; rec++) {
                        try     {
                                ef.readRecord(rec);
                                var record = this.factory.newOutlineRecord(ef, rec, efdesc);
                                view.insert(record.view);
                        }
                        catch(e) {
                              	if ((e instanceof GPError) && (e.reason == 0x6A83))
                			break;
                                print(e);
                                break;
                        }
                }
        }
        
        this.expanded = true;
}




//
// CTOR - Outline node for data object retrievable with GET_DATA
//
function OutlineDataObject(factory, df, id, name, format) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
        this.df = df;
	this.id = id;
	this.format = format;
		
        // Create OutlineNode object and register in OutlineEF object
        print(name + "(" + id.toString(16) + ")");
        var view = new OutlineNode(name + "(" + id.toString(16) + ")", true);
        view.setIcon("document");
        view.setUserObject(this);
        this.view = view;
}



//
// Event handler for expand notification
//
OutlineDataObject.prototype.expandListener = function() {
        if (this.expanded)
                return;

        var view = this.view;

	var card = this.df.card;
	
	var bs = card.sendApdu(0x00, 0xCA, this.id >> 8, this.id & 0xFF, 0);
	
	if (card.SW != 0x9000) {
		var bs = card.sendApdu(0x80, 0xCA, this.id >> 8, this.id & 0xFF, 0);
	}
	
	if (card.SW != 0x9000) {
		print("Error getting object: " + card.SWMSG);
	} else {
		var bindata = this.factory.newDataOutline(bs, this.format);
		view.insert(bindata.view);
        }
        
        this.expanded = true;
}




//
// CTOR - Outline for records in an EF
//
function OutlineRecord(factory, ef, no, efdesc) {
	this.factory = factory;
        this.ef = ef;
        this.no = no;
        this.efdesc = efdesc;
                
        // Create OutlineNode object and register in OutlineRecord object
        var view = new OutlineNode("Record#" + no, true);
        view.setIcon("record");
        view.setUserObject(this);
        this.view = view;
}



//
// Expand event handler for records
//
OutlineRecord.prototype.expandListener = function() {
        if (this.expanded)
                return;

        var view = this.view;
        var ef = this.ef;

        var bs = ef.readRecord(this.no);

	var bindata = this.factory.newDataOutline(bs, this.efdesc.format);
	view.insert(bindata.view);
        
        this.expanded = true;
}





//
// CTOR - Binary data outline
//
function DataOutline(factory, data, format) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.data = data;
	this.format = format;
	
	var ddata = data;
	if (ddata.length > 256) {
		ddata = data.bytes(0, 256);
	}
	
	var view = new OutlineNode(ddata.toString(HEX));
        view.setIcon("binary");
	view.setUserObject(this);
	this.view = view;
	this.decorate(format);
}



DataOutline.prototype.decorate = function(format) {

	var view = this.view;
	var data = this.data;
		
	if (format && ((format.substr(0, 4) == "asn1") || (format.substr(0, 7) == "tlvlist")) && (data.length >= 2)) {
                var total = data.length;
                
                while(total >= 2) {
                	try	{
	                        var asn = new ASN1(data);
	                }
	                catch(e) {
	                	print("Error in TLV structure: " + e);
	                	return;
	                }
	                
                        this.asn = asn;
                        this.asn1DecoratorHook(format);
                        view.insert(asn);
                        total -= asn.size;
                        
                        if (format.substr(0, 4) == "asn") {
                                break;
                        }

                        data = data.bytes(asn.size);
                        if ((data.length == 0) || (data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
                                break;
                        }
                }
                        
                if (total > 0) {
                        var sparecontent = new OutlineNode(total + " spare bytes");
                        view.insert(sparecontent);
                }
        }
}



DataOutline.prototype.asn1DecoratorHook = function(format) {
	var i = format.indexOf(".");
	
	if (i > 0) {
		switch(format.substr(i + 1)) {
		case "arr" :
			ARRDecorator(this.asn);
			break;
		}
	}
}



DataOutline.prototype.selectedListener = function() {
	print("--------------------------------------------------------------------------------");
	print(this.data);

	var i = 0;
	
	if (this.format) {
		i = this.format.indexOf(".");
	}
	
	if (i > 0) {
		switch(this.format.substr(i + 1)) {
		case "x509" :
			try 	{
				var x509 = new X509(this.data);
				print("Decoded certificate:");
				print(x509.toString());
			}
			catch(e) {
				print(e);
			}
			break;
		}
	}
	
}





//
// CTOR - OutlineFactory
// Derive from this class to include custom made outline elements
//
function CardOutlineFactory() {
	
}



//
// Method to create new OutlineATR object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineATR = function(atr) {
	return new OutlineATR(this, atr);
}



//
// Method to create new OutlineDF object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineDF = function(card, id, name, profile) {
	return new OutlineDF(this, card, id, name, profile);
}



//
// Method to create new OutlineApplet object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineApplet = function(instance) {
	throw new GPError("CardOutlineFactory", GPError.INVALID_USAGE, 0, "Must overwrite newOutlineApplet to use explorer functionality");
}



//
// Method to create new OutlineEF object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineEF = function(df, name, profile) {
	return new OutlineEF(this, df, name, profile);
}



//
// Method to create new OutlineDataObject object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineDataObject = function(df, id, name, format) {
	return new OutlineDataObject(this, df, id, name, format);
}



//
// Method to create new OutlineFCP object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineFCP = function(fcp) {
	return new OutlineFCP(this, fcp);
}



//
// Method to create new OutlineRecord object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineRecord = function(ef, no, efdesc) {
	return new OutlineRecord(this, ef, no, efdesc);
}



//
// Method to create new DataOutline object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newDataOutline = function(data, format) {
	return new DataOutline(this, data, format);
}
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Generic smart card explorer
 */

load("OutlineCore.js");

function OutlineCard() {

        // Create card object
        var card = new Card(_scsh3.reader);
        this.atr = card.reset(Card.RESET_COLD);

        this.card = card;

        // Create OutlineNode object and register in object
        var view = new OutlineNode("Card");
        view.setUserObject(this);
        this.view = view;
}



//
// Expand clicked on node
//
OutlineCard.prototype.expandListener = function() {
        if (this.expanded)
                return;
                
        var view = this.view;

	//
	// Display ATR
	//
	var atrnode = new OutlineATR(this.atr);
	view.insert(atrnode.view);
        this.expanded = true;

        //
        // Explore files in MF
        //
	try	{
		var mf = new CardFile(this.card, ":3F00");
				
	        var struct = GPXML.parse("genericmf.xml");
	        this.mf = new OutlineDF(this.card, ":3F00", "MF", struct);
	        view.insert(this.mf.view);
	}
	catch(e) {
		print("Card does not seem to have a compatible MF\n" + e);
	}

        //
        // Obtain list of applications from EF_DIR
        //
        var isTransparent = true;
        try	{
		var efdir = new CardFile(this.card, ":2F00");
		var fci = efdir.getFCPBytes();
		if (fci) {
			isTransparent = efdir.isTransparent();
		} else {
			isTransparent = true;
		}
        }
        catch(e) {
                print("Card does not seem to have a compatible EF_DIR\n" + e);
                return;
        }
                
        for (var rec = 1; rec < 255; rec++) {
                var record;
                try     {
	                if (isTransparent) {
	                	record = efdir.readBinary();
	                } else {
	                        record = efdir.readRecord(rec);
	                }
                }
                catch(e) {
                        print(e);
                        break;
                }

                var tlv = new ASN1(record);
                
                var label = null;
                var aid = null;
                        
                for (var i = 0; i < tlv.elements; i++) {
                        var t = tlv.get(i);
                        switch(t.tag) {
                        case 0x50:
                                label = t.value.toString(UTF8);
                                break;
                        case 0x4F:
                                aid = t.value;
                                break;
                        }
                }

                if (label && aid) {
                        var applentry;

                       	if (!label) {
                       		if (!aid) {
                       			label = "Invalid entry in EF.DIR";
                       		} else {
                       			label = aid.toString(HEX);
                       		}
                       	}
                        	
			applentry = new OutlineNode(label);
			applentry.insert(tlv);
			view.insert(applentry);
                }
                
                if (efdir.isTransparent())
                	break;
        }
}





//
// Outline root node erzeugen
// 
var cardoutline = new OutlineCard();

cardoutline.view.show();
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A X509 certificate generator class following RFC5280
 */

if (typeof(__ScriptingServer) == "undefined") {
	load("pkixcommon.js");
}

/**
 * Create a X.509 certificate generator.
 *
 * @class Class implementing a X.509 certificate generator
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider to use for signing operations
 */
function X509CertificateGenerator(crypto) {
	this.crypto = crypto;
	this.encodeECDomainParameter = true;
	this.reset();
}



/**
 * Resets all internal state variables.
 *
 */
X509CertificateGenerator.prototype.reset = function() {
	this.extensions = new Array();
	
}



/**
 * Sets the serial number.
 *
 * @param {ByteString} serialNumber the serial number for the certificate
 */
X509CertificateGenerator.prototype.setSerialNumber = function(serialNumber) {
	this.serialNumber = serialNumber;
}



/**
 * Sets the isser name.
 *
 * <p>The issuer name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * </pre>
 * @param {Object} issuer the issuer name
 */
X509CertificateGenerator.prototype.setIssuer = function(issuer) {
	this.issuer = issuer;
}



/**
 * Sets the effective date for the certificate.
 *
 * @param {String or Date} date the date in format YYMMDDHHMMSSZ
 */
X509CertificateGenerator.prototype.setNotBefore = function(date) {
	this.notBefore = date;
}



/**
 * Sets the expiration date for the certificate.
 *
 * @param {String or Date} date the date in format YYMMDDHHMMSSZ
 */
X509CertificateGenerator.prototype.setNotAfter = function(date) {
	this.notAfter = date;
}



/**
 * Sets the subject name.
 *
 * <p>The subject name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 * </pre>
 * @param {Object} subject the subject name
 */
X509CertificateGenerator.prototype.setSubject = function(subject) {
	this.subject = subject;
}



/**
 * Sets the subjects public key
 *
 * <p>The methods accepts ECC and RSA Public Keys.</p>
 *
 * @param {Key} publicKey the subjects public key
 */
X509CertificateGenerator.prototype.setPublicKey = function(publicKey) {
	this.publicKey = publicKey;
}



/**
 * Sets the signature algorithm. Currently only Crypto.RSA is supported
 *
 * @param {Number} alg the signature algorithm, only Crypto.RSA supported
 */
X509CertificateGenerator.prototype.setSignatureAlgorithm = function(alg) {
	this.signatureAlgorithm = alg;
}



/**
 * Adds an extension to the certificate
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        critical    BOOLEAN DEFAULT FALSE,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *</pre>
 * @param {String} extnID the extensions object identifier
 * @param {Boolean} critical the extension is critical
 * @param {ByteString} the extension value as ByteString
 */
X509CertificateGenerator.prototype.addExtension = function(extnID, critical, extnValue) {
	var t = new ASN1("extension", ASN1.SEQUENCE,
				new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	if (critical) {
		t.add(new ASN1("critical", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}

	t.add(new ASN1("extnValue", ASN1.OCTET_STRING, extnValue));
	this.extensions.push(t);

}



/**
 * Adds the key usage extension.
 *
 * <p>The following flags are defined:</p>
 * <pre>
 * PKIXCommon.digitalSignature = 0x0080;
 * PKIXCommon.nonRepudiation   = 0x0040;
 * PKIXCommon.keyEncipherment  = 0x0020;
 * PKIXCommon.dataEncipherment = 0x0010;
 * PKIXCommon.keyAgreement     = 0x0008;
 * PKIXCommon.keyCertSign      = 0x0004;
 * PKIXCommon.cRLSign          = 0x0002;
 * PKIXCommon.encipherOnly     = 0x0001;
 * PKIXCommon.decipherOnly     = 0x8000;
 * </pre>
 * @param {Number} the key usage flags as combination of the flags defined above.
 */
X509CertificateGenerator.prototype.addKeyUsageExtension = function(flags) {
	var t = new ASN1(ASN1.BIT_STRING, PKIXCommon.bitstringForInteger(flags));
	this.addExtension("2.5.29.15", true, t.getBytes());
}

// Deprecated: Use PKIXCommon. instead
X509CertificateGenerator.digitalSignature	= 0x0080;
X509CertificateGenerator.nonRepudiation		= 0x0040;
X509CertificateGenerator.keyEncipherment	= 0x0020;
X509CertificateGenerator.dataEncipherment	= 0x0010;
X509CertificateGenerator.keyAgreement		= 0x0008;
X509CertificateGenerator.keyCertSign		= 0x0004;
X509CertificateGenerator.cRLSign			= 0x0002;
X509CertificateGenerator.encipherOnly		= 0x0001;
X509CertificateGenerator.decipherOnly		= 0x8000;



/**
 * Adds the BasicConstraints extension.
 *
 * @param {Boolean} cA the certificate belongs to a CA
 * @param {Number} pathLenConstraint the maximum number of subordinate CA certificates
 */
X509CertificateGenerator.prototype.addBasicConstraintsExtension = function(cA, pathLenConstraint) {
	var t = new ASN1("BasicConstraints",ASN1.SEQUENCE);
	if (cA) {
		t.add(new ASN1("cA", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}
	if (pathLenConstraint >= 0) {
		var bb = new ByteBuffer();
		bb.append(pathLenConstraint);
		t.add(new ASN1("pathLenConstraint", ASN1.INTEGER, bb.toByteString()));
	}
	this.addExtension("2.5.29.19", true, t.getBytes());
}



/**
 * Adds the subject public key identifier extension based on the certificates subject key.
 *
 * <p>The key identifier is calculated as SHA-1 hash over the contents of the
 * subject public key (Without tag, length and number of unused bits.</p>
 */
X509CertificateGenerator.prototype.addSubjectKeyIdentifierExtension = function() {
	var spi = this.getSubjectPublicKeyInfo();
	var keyvalue = spi.get(1).value.bytes(1);
	var crypto = new Crypto();
	var hash = crypto.digest(Crypto.SHA_1, keyvalue);
	
	var t = new ASN1(ASN1.OCTET_STRING, hash);
	this.addExtension("2.5.29.14", false, t.getBytes());
}



/**
 * Adds the authority public key identifier extension based on the issuers key.
 *
 * <p>The key identifier is calculated as SHA-1 hash over the contents of the
 * issuer public key (Without tag, length and number of unused bits.</p>
 *
 * @param {Key} publicKey the authority subject key
 */
X509CertificateGenerator.prototype.addAuthorityKeyIdentifierExtension = function(publicKey) {
	if (publicKey.getComponent(Key.MODULUS)) {
		var spi = PKIXCommon.createRSASubjectPublicKeyInfo(publicKey);
	} else {
		var spi = PKIXCommon.createECSubjectPublicKeyInfo(publicKey, this.encodeECDomainParameter);
	}

	var keyvalue = spi.get(1).value.bytes(1);
	var crypto = new Crypto();
	var hash = crypto.digest(Crypto.SHA_1, keyvalue);
	
	var t = new ASN1(ASN1.SEQUENCE,
					new ASN1(0x80, hash)
				);
	this.addExtension("2.5.29.35", false, t.getBytes());
}



/**
 * Adds the CRL distribution point URLs.
 *
 * @param {String[]} url a list of URLs
 */
X509CertificateGenerator.prototype.addCRLDistributionPointURL = function(url) {
	var t = new ASN1("cRLDistributionPoints", ASN1.SEQUENCE);

	for (var i = 0; i < url.length; i++) {
		t.add(	new ASN1("cRLDistributionPoint", ASN1.SEQUENCE,
					new ASN1("distributionPoint", 0xA0,
						new ASN1("fullName", 0xA0,
							new ASN1("uniformResourceIdentifier", 0x86, new ByteString(url[i], ASCII))
						)
					)
				));
	}
	this.addExtension("id-ce-cRLDistributionPoints", false, t.getBytes());
}



/**
 * Adds the extended key usage extension
 *
 * @param {String[]} oids the list of object identifier names
 * @param {Boolean} critical the extension is critical
 */
X509CertificateGenerator.prototype.addExtendedKeyUsages = function(oids, critical) {
	var t = new ASN1("extKeyUsages", ASN1.SEQUENCE);

	for (var i = 0; i < oids.length; i++) {
		t.add( new ASN1("keyPurposeId", ASN1.OBJECT_IDENTIFIER, new ByteString(oids[i], OID) ));
	}
	this.addExtension("id-ce-extKeyUsage", critical, t.getBytes());
}



/**
 * Gets the issuer name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
X509CertificateGenerator.prototype.getIssuer = function() {
	if (this.issuer instanceof ASN1) {
		return this.issuer;
	} else {
		return PKIXCommon.encodeName(this.issuer);
	}
}



/**
 * Gets the certificate validity as TLV object
 *
 * @return the certificates validity
 * @type ASN1
 */
X509CertificateGenerator.prototype.getValidity = function() {
	var t = new ASN1("validity", ASN1.SEQUENCE);

	var ts = this.notBefore;
	if (typeof(ts) != "string") {
		ts = PKIXCommon.dtoUTC(this.notBefore);
	}
	t.add(new ASN1("notBefore", ASN1.UTCTime, new ByteString(ts, ASCII)));
	
	var ts = this.notAfter;
	if (typeof(ts) != "string") {
		ts = PKIXCommon.dtoUTC(this.notAfter);
	}
	t.add(new ASN1("notAfter", ASN1.UTCTime, new ByteString(ts, ASCII)));
	return t;
}



/**
 * Gets the subject name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
X509CertificateGenerator.prototype.getSubject = function() {
	if (this.subject instanceof ASN1) {
		return this.subject;
	} else {
		return PKIXCommon.encodeName(this.subject);
	}
}



/**
 * Gets the subject's public key as TLV object
 *
 * @return the subject's public key info
 * @type ASN1
 */
X509CertificateGenerator.prototype.getSubjectPublicKeyInfo = function() {
	if (this.publicKey.getComponent(Key.MODULUS)) {
		return PKIXCommon.createRSASubjectPublicKeyInfo(this.publicKey);
	} else {
		return PKIXCommon.createECSubjectPublicKeyInfo(this.publicKey, this.encodeECDomainParameter);
	}
}



/**
 * Gets the certificate extension as TLV object
 *
 * @return the certificate extensions
 * @type ASN1
 */
X509CertificateGenerator.prototype.getExtensions = function() {
	var t = new ASN1("extensions", 0xA3);
	var s = new ASN1("extensions", ASN1.SEQUENCE);
	
	t.add(s);
	
	for (var i = 0; i < this.extensions.length; i++) {
		s.add(this.extensions[i]);
	}
	return t;
}



/**
 * Gets the part of the certificate that will be signed
 *
 * @return the TBSCertificate part
 * @type ASN1
 */
X509CertificateGenerator.prototype.getTbsCertificate = function() {
	var t = new ASN1("tbsCertificate", ASN1.SEQUENCE);
	t.add(new ASN1("version", 0xA0,
			new ASN1("version", ASN1.INTEGER, new ByteString("02", HEX))));
	t.add(new ASN1("serialNumber", ASN1.INTEGER, PKIXCommon.convertUnsignedInteger(this.serialNumber)));
	t.add(this.getSignatureAlgorithm());
	t.add(this.getIssuer());
	t.add(this.getValidity());
	t.add(this.getSubject());
	t.add(this.getSubjectPublicKeyInfo());
	t.add(this.getExtensions());
	return t;
}



/**
 * Gets the signature algorithm TLV object
 *
 * @return the signature algorithm object
 * @type ASN1
 */
X509CertificateGenerator.prototype.getSignatureAlgorithm = function() {
	var t = new ASN1("signatureAlgorithm", ASN1.SEQUENCE);

	if (this.signatureAlgorithm == Crypto.RSA) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549.1.1.5", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (this.signatureAlgorithm == Crypto.RSA_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549.1.1.11", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (this.signatureAlgorithm == Crypto.ECDSA_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("ecdsa-with-SHA256", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else {
		throw new GPError("X509CertificateGenerator", GPError.INVALID_MECH, this.signatureAlgorithm, "Invalid algorithm");
	}
		
	return t;
}

 

/**
 * Generates the certificate.
 *
 * @return the generated certificate
 * @type X509
 */
X509CertificateGenerator.prototype.generateX509Certificate = function(privateKey) {
	var certificate = new ASN1("certificate", ASN1.SEQUENCE);
	
	var tbs = this.getTbsCertificate();
	certificate.add(tbs);
	certificate.add(this.getSignatureAlgorithm());
	
	var signature = this.crypto.sign(privateKey, this.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString("00", HEX)).concat(signature);

	var signatureValue = new ASN1("signatureValue", ASN1.BIT_STRING, signature);
	certificate.add(signatureValue);
	
//	print(certificate);
	return new X509(certificate.getBytes());
}



function X509CertificateGeneratorRSATest() {

	var crypto = new Crypto();
	
	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setSize(1024);
	
	crypto.generateKeyPair(Crypto.RSA, caPublicKey, caPrivateKey);
	
//	var caPrivKey = new Key("profiles/kp_rsa_private.xml");

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString("01", HEX));
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
	x.setIssuer(issuer);
	x.setNotBefore("060825120000Z");
	x.setNotAfter("160825120000Z");
	var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Joe Doe" };
	x.setSubject(subject);

	x.setPublicKey(caPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );
							
	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(caPublicKey);

	var cert = x.generateX509Certificate(caPrivateKey);
	var fn = GPSystem.mapFilename("cert_rsa.cer", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, cert.getBytes());

	cert.verifyWith(cert);

	print(cert);
}



function X509CertificateGeneratorECCTest() {

	var crypto = new Crypto();
	
	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
	
	crypto.generateKeyPair(Crypto.EC, caPublicKey, caPrivateKey);

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString("01", HEX));
	x.setSignatureAlgorithm(Crypto.ECDSA_SHA256);
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
	x.setIssuer(issuer);
	var t = new Date();
	x.setNotBefore(t);
	x.setNotAfter(PKIXCommon.addDays(t, 180));
	var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Joe Doe" };
	x.setSubject(subject);

	x.setPublicKey(caPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );
							
	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(caPublicKey);

	var cert = x.generateX509Certificate(caPrivateKey);
	
	var fn = GPSystem.mapFilename("cert_ecc.cer", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, cert.getBytes());

	cert.verifyWith(cert);
	
	print(cert);
	print(new ASN1(cert.getBytes()));
}

// X509CertificateGeneratorECCTest();
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview General File I/O Class
 */



/**
 * Create a reference to a file system object (file or directory)
 *
 * @class Class implementing basic support for files
 * @constructor
 * @param {String} name relative or absolute file path
 */
function File(name) {
	this.name = name;
}



/**
 * Return absolute path
 *
 * @param{Number} mode one of GPSystem.AUTO, GPSystem.CWD, GPSystem.USR or GPSystem.SYS. See GPSystem.mapFilename() for details
 * @type String
 * @return the absolute path
 */
File.prototype.getAbsolutePath = function(mode) {
	if (typeof(mode) == "undefined") {
		mode = GPSystem.CWD;
	}
	if (typeof(this.abspath) == "undefined") {
		this.abspath = GPSystem.mapFilename(this.name, mode);
	}
	return this.abspath;
}



/**
 * @private
 * Return a java.io.File object
 */
File.prototype.getFile = function() {
	if (typeof(this.file) == "undefined") {
		this.file = new java.io.File(this.getAbsolutePath(GPSystem.AUTO));
	}
	return this.file; 
}



/**
 * Close streams associated with file
 */
File.prototype.close = function() {
	if (typeof(this.os) != "undefined") {
		this.os.close();
		delete(this.os);
	}

	if (typeof(this.is) != "undefined") {
		this.is.close();
		delete(this.is);
	}
}



/**
 * @private
 * Return a java.io.FileInputStream
 */
File.prototype.getInputStream = function() {
	if (typeof(this.is) == "undefined") {
		this.is = new java.io.FileInputStream(this.getAbsolutePath(GPSystem.AUTO));
	}
	return this.is; 
}



/**
 * @private
 * Return a java.io.FileOutputStream
 */
File.prototype.getOutputStream = function() {
	if (typeof(this.os) == "undefined") {
		this.os = new java.io.FileOutputStream(this.getAbsolutePath(GPSystem.CWD));
	}
	return this.os; 
}



/**
 * Read complete file into ByteString object
 *
 * @type ByteString
 * @return the binary content
 */
File.prototype.readAllAsBinary = function() {
	var is = this.getInputStream();

	// Determine file size
	var flen = is.available();

	// Allocate native byte array
	var bs = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, flen);

	// Read into byte array
	var len = is.read(bs);

	this.close();

	// Allocate JavaScript ByteBuffer from native/wrapped byte array
	var bb = new ByteBuffer(bs);

	// Convert to JavaScript ByteString
	var data = bb.toByteString();

	return data;
}



/**
 * Read complete file into String object
 *
 * @type String
 * @return the text content
 */
File.prototype.readAllAsString = function(encoding) {

	if (typeof(encoding) == "undefined") {
		encoding = UTF8;
	}

	return this.readAllAsBinary().toString(encoding);
}



/**
 * Write the object to file
 *
 * @param{Object} obj to write to file (Using toString() for any other than String and ByteString)
 * @param{Number} one of UTF8 or ASCII (Default is UTF8)
 */
File.prototype.writeAll = function(obj, encoding) {
	if ((typeof(obj) != "string") && !(obj instanceof ByteString)) {
		obj = obj.toString();
	}
	if (typeof(obj) == "string") {
		if (typeof(encoding) == "undefined") {
			encoding = UTF8;
		}
		obj = new ByteString(obj, encoding);
	}

	var os = this.getOutputStream();
	os.write(obj);
	this.close();
}



/**
 * Return list of files contained in the directory referenced by the File object
 *
 * @type String[]
 * @return the list of file names
 */
File.prototype.list = function() {
	var list = this.getFile().list();
	var jslist = [];
	
	for (var i = 0; i < list.length; i++) {
		jslist.push(new String(list[i]));
	}
	return jslist;
}



/**
 * Return the parent file of this file object
 *
 * @type File
 * @return the parent file object or null
 */
File.prototype.getParentFile = function() {
	var file = this.getFile();
	var parent = file.getParent();
	if (parent == null) {
		return null;
	}
	return new File(parent);
}



File.test = function() {
	var file = new File("test.bin");
	var b = new ByteString("Hello World", ASCII);
	file.writeAll(b);
	
	var file = new File("test.bin");
	var c = file.readAllAsBinary();
	print(c.toString(ASCII));
	
	var file = new File("test.txt");
	var s = "Hello World";
	file.writeAll(s);
	
	var file = new File("test.txt");
	var c = file.readAllAsString();
	print(c);
	
	var dir = file.getParentFile();
	print(dir.getAbsolutePath());
	print(dir.list());
	
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Test runner framework
 */



/**
 * Create a test runner using a Smart Card Shell outline for navigation
 *
 * @class Class implementing a graphical test runner
 * @constructor
 * @param {String} name the test suite name
 */
function TestRunner(name) {

	this.name = name;
	this.testGroupRunners = new Array();
	this.testProcedures = new Array();
	this.testMapper = new Array();
	this.testGroupPrototype = new TestGroup();
	this.testProcedurePrototype = new TestProcedure();
	this.testReport = new TestReport();
	
	// Create root node and set as view
	var view = new OutlineNode(name, true);
	if (typeof(view.expand) == "function") {
		view.setContextMenu(["run", "clear", "report", "expand", "collapse"]);
	} else {
		view.setContextMenu(["run", "clear", "report"]);
	}
	view.setUserObject(this);
	this.view = view;

	view.show();
}



/**
 * Set directory to write reports
 *
 * @param {String} dir the directory to store reports
 */
TestRunner.prototype.setReportDirectory = function(dir) {
	this.reportDir = dir;
}



/**
 * Event listener for actions selected from context menu
 *
 * @param {Object} source the outline node for which the action was invoked
 * @param {String} actionName the name of the action selected
 */
TestRunner.prototype.actionListener = function(source, actionName) {
	switch(actionName) {
	case "run" :
		this.run();
		break;
	case "clear" :
		this.clearResults();
		break;
	case "report" :
		this.report();
		break;
	case "expand" :
		this.expandAll();
		break;
	case "collapse" :
		this.collapseAll();
		break;
	}
}



/**
 * Expand all test groups
 */
TestRunner.prototype.expandAll = function() {
	for each (c in this.view.childs) {
		c.expand();
	}
}



/**
 * Collapse all test groups
 */
TestRunner.prototype.collapseAll = function() {
	for each (c in this.view.childs) {
		c.collapse();
	}
}



/**
 * Write test report
 */
TestRunner.prototype.report = function() {
	var fn = GPSystem.dateTimeByteString().toString(HEX) + "_TestReport.xml";
	if (this.reportDir == undefined) {
		var fn = GPSystem.mapFilename(fn, GPSystem.USR);
	} else {
		var fn = this.reportDir + "/" + fn;
	}
	var fn = Dialog.prompt("Select output file for report", fn, null, "*.xml");
	if (fn != null) {
		this.testReport.writeReport(fn);
		print("Report written to " + fn);
	}
}



/**
 * Add a test group to the test runner
 *
 * <p>This call will iterate through all test cases and locate used procedures and steps.</p>
 *
 * @param {TestGroup} testGroup the test group object
 */
TestRunner.prototype.addTestGroup = function(testGroup) {
	var tgrs = this.testGroupRunners;
	
	tgr = new TestGroupRunner(this, testGroup);

	tgrs.push(tgr);

	var view = this.view;	
	view.insert(tgr.view);
}



/**
 * Create test group from XML file and add to test runner
 *
 * @param {String} file the file name containing the test group
 * @param {Object} parameter the parameter object
 */
TestRunner.prototype.addTestGroupFromXML = function (file, parameter) {
	// Parse XML file.
	var parser = new GPXML();
	parser.defineArrayElement("/testgroup", "testcase,function", "id,Name");
	parser.defineArrayElement("/testgroup/testcase/procedures", "procedure");
	var xml = parser.parse(file);

	// Determine CTOR function
	var ctor = xml.constructor.Script;
	if (!ctor) {
		// Use a default constructor unless defined in XML profile
		ctor = function(name, parameter) { TestGroup.call(this, name, parameter); };
	}
	
	// Make CTOR available in scope object
	// this[xml.id] = ctor;
	
	// Set correct prototype object
	ctor.prototype = new TestGroup();
	ctor.prototype.constructor = ctor;
	ctor.prototype.usedProcedures = new Array();
	
	// Add test cases to prototype object
	var testcases = xml.testcase;
	for (var i in testcases) {
		if (i != "arrayIndex") {
			var s = testcases[i].Script;
			s.XML = testcases[i];
			ctor.prototype["case" + i] = s;
			if (testcases[i].procedures) {
				var procedures = testcases[i].procedures.procedure;
				ctor.prototype.usedProcedures[i] = new Array();
				
				for (var p = 0; p < procedures.length; p++) {
					ctor.prototype.usedProcedures[i].push(procedures[p].id);
				}
			}
		}
	}
	
	// Add setup function to prototype object
	if (xml.setup) {
		ctor.prototype["setUp"] = xml.setup.Script;
	}
	
	// Add teardown function to prototype object
	if (xml.teardown) {
		ctor.prototype["tearDown"] = xml.teardown.Script;
	}
	
	// Add functions to prototype object
	var functions = xml["function"];
	for (var i in functions) {
		if (i != "arrayIndex") {
			var s = functions[i].Script;
			ctor.prototype[i] = s;
		}
	}
	
	ctor.XML = xml;
	
	var tc = new ctor(xml.id, parameter);
	
	this.addTestGroup(tc);
}



/**
 * Add a test procedure constructor to the list
 *
 * <p>Use the getName() method to obtain the test procedure name</p>
 *
 * @param {TestProcedure} proc the test procedure object
 */
TestRunner.prototype.addTestProcedure = function(proc) {
	var name = proc.getName();
	if (name) {
		this.testProcedures[name] = proc;
	}
}



/**
 * Create test procedure from XML file and add to test runner
 *
 * @param {String} file the file name containing the test procedure
 * @param {Object} parameter the parameter object
 */
TestRunner.prototype.addTestProcedureFromXML = function (file, parameter) {
	// Parse XML file.
	var parser = new GPXML();
	parser.defineArrayElement("/testprocedure", "teststep,function", "id,Name");
	var xml = parser.parse(file);

	// Determine CTOR function
	var ctor = xml.constructor.Script;
	if (!ctor) {
		// Use a default constructor unless defined in XML profile
		ctor = function(testgroup, name, parameter) { TestProcedure.call(this, testgroup, name, parameter); };
	}

	// Make CTOR available in scope object
	// this[xml.id] = ctor;
	
	// Set correct prototype object
	ctor.prototype = new TestProcedure();
	ctor.prototype.constructor = ctor;
	var teststeps = xml.teststep;
	for (var i in teststeps) {
		if (i != "arrayIndex") {
			var s = teststeps[i].Script;
			ctor.prototype["step" + i] = s;
		}
	}
	if (xml.setup) {
		ctor.prototype["setUp"] = xml.setup.Script;
	}
	if (xml.teardown) {
		ctor.prototype["tearDown"] = xml.teardown.Script;
	}
	
	// Add functions to prototype object
	var functions = xml["function"];
	for (var i in functions) {
		if (i != "arrayIndex") {
			var s = functions[i].Script;
			ctor.prototype[i] = s;
		}
	}

	ctor.XML = xml;
	ctor.getName = function() { return xml.id; };	

	this.testProcedures[xml.id] = ctor;
}



/**
 * Return constructor of test procedure
 *
 * @param {String} name the name of the test procedure
 * @type TestProcedure
 * @return the test procedure object
 */
TestRunner.prototype.getTestProcedure = function(name) {
	return this.testProcedures[name];
}



/**
 * Add test to test mapper, which maps test unique id to listening object
 *
 * @param {String} name the unique test name
 * @param {Object} listener the listener object implementing the clearResults(), enable(), isEnabled(), hasPassed() and hasFailed() methods
 */
TestRunner.prototype.addTest = function(name, listener) {
	this.testMapper[name] = listener;
}



/**
 * Run all test groups
 */
TestRunner.prototype.run = function() {
	for (var i = 0; i < this.testGroupRunners.length; i++) {
		var testGroupRunner = this.testGroupRunners[i];
		testGroupRunner.run();
	}
}



/** 
 * Clear result of last test run
 */
TestRunner.prototype.clearResults = function() {
	for (var i in this.testMapper) {
		var listener = this.testMapper[i];
		if (listener) {
			listener.clearResult();
		}
	}
	this.testReport = new TestReport();
}



/**
 * Enable or disable test
 *
 * @param {String} name the unique test name
 * @param {Boolean} state the enable / disable state
 */
TestRunner.prototype.enable = function(name, state) {
	var listener = this.testMapper[name];
	if (listener && listener.enable) {
		return listener.enable(state);
	} else {
		throw new GPError("TestRunner", GPError.OBJECT_NOT_FOUND, 0, name);
	}
}



/**
 * isEnabled query from TestGroup runner
 *
 * @param {String} name the unique test name
 * @type boolean
 * @return true if the test is enabled
 */
TestRunner.prototype.isEnabled = function(name) {
	var listener = this.testMapper[name];
	if (listener) {
		return listener.isEnabled();
	}
	return true;
}



/**
 * hasPassed Listener
 * 
 * @param {String} name the unique test name
 * @param {String} log the test log
 */
TestRunner.prototype.hasPassed = function(name, log) {
	var listener = this.testMapper[name];
	if (listener) {
		listener.hasPassed(log);
		
		if (listener.getXML) {
			var result = new TestResult(name, true, log, listener.getXML());
			this.testReport.addResult(result);
		}
	} else {
		print("No receiver for passed notification : " + name);
		for (var i in this.testMapper) {
			print("- " + i);
		}
	}
}



/**
 * hasFailed Listener
 * 
 * @param {String} name the unique test name
 * @param {String} log the test log
 */
TestRunner.prototype.hasFailed = function(name, log) {
	var listener = this.testMapper[name];
	if (listener) {
		listener.hasFailed(log);
		if (listener.getXML) {
			var result = new TestResult(name, false, log, listener.getXML());
			this.testReport.addResult(result);
		}
	}
}



/**
 * Create a TestGroupRunner containing the TestCases
 *
 * @class Class implementing a harness to run test groups
 * @constructor
 * @param {TestRunner} testRunner the associated test runner
 * @param {TestGroup= testGroup the test group
 */
function TestGroupRunner(testRunner, testGroup) {
	this.testRunner = testRunner;
	this.testGroup = testGroup;
	
	var view = new OutlineNode(testGroup.getName());
	view.setContextMenu(["run"]);
	view.setUserObject(this);
	
	this.view = view;

	var testcases = testGroup.getTestCaseNames();
	
	for (var i = 0; i < testcases.length; i++) {
		var tcr = new TestCaseRunner(this, testcases[i]);
		view.insert(tcr.view);
	}
}



/**
 * Event listener for context menu
 *
 * @param {Object} source the outline node for which the action was invoked
 * @param {String} actionName the name of the action selected
 */
TestGroupRunner.prototype.actionListener = function(source, action) {
	switch(action) {
	case "run" : 
		this.run();
		break;
	}
}



/**
 * Run this test group
 */
TestGroupRunner.prototype.run = function() {
	var test = this.testGroup;
	
	test.run(this.testRunner);
}




/**
 * Construct a TestCaseRunner object
 *
 * @class Class implementing a test case harness
 * @constructor
 * @param {TestGroupRunner} the parent test group runner
 * @param {String} the test case name
 */
function TestCaseRunner(testGroupRunner, testCase) {
	this.testGroupRunner = testGroupRunner;
	this.testCase = testCase;
	this.selected = true;

	var testRunner = testGroupRunner.testRunner;
	testRunner.addTest(testGroupRunner.testGroup.getName() + "/" + testCase, this);

	this.xml = testGroupRunner.testGroup.getTestCase(testCase).XML;

	var view = new OutlineNode(testCase + " " + this.xml.name.elementValue);

	view.setUserObject(this);
	view.setIcon("selected");
	view.setContextMenu(["select", "deselect", "run"]);
	this.view = view;

	var testGroup = testGroupRunner.testGroup;

	var testprocedures = testGroup.getUsedTestProceduresForTestCase(testCase);

	if (testprocedures) {
		for (var i = 0; i < testprocedures.length; i++) {
			var tpr = new TestProcedureRunner(this, testprocedures[i]);
			view.insert(tpr.view);
		}
	}
}



/**
 * Event listener for context menu
 *
 * @param {Object} source the outline node for which the action was invoked
 * @param {String} actionName the name of the action selected
 */
TestCaseRunner.prototype.actionListener = function(source, actionName) {
	print("Action " + actionName);
	switch(actionName) {
	case "select":
		this.selected = true;
		source.setIcon("selected");
		break;
	case "deselect":
		this.selected = false;
		source.setIcon("deselected");
		break;
	case "run":
		this.run();
		break;
	}
}



/**
 * Run this test case
 */
TestCaseRunner.prototype.run = function() {
	var test = this.testGroupRunner.testGroup;
	
	test.runTestCase(this.testCase, this.testGroupRunner.testRunner);
}



/**
 * Tell test runner if case is enabled
 *
 * @type boolean
 * @return true if enabled
 */
TestCaseRunner.prototype.isEnabled = function() {
	return this.selected;
}



/**
 * Add a log entry to the test case node
 *
 * @param {String} log the test log
 */
TestCaseRunner.prototype.addLog = function(log) {
	var view = this.view;
	var lognode = new TestLogFile(this, log);
	this.log = lognode;
	view.insert(lognode.view);
}



/**
 * Return describing XML element
 *
 * @type Object
 * @return the XML element for this test case
 */
TestCaseRunner.prototype.getXML = function() {
	return this.xml;
}



/**
 * Listener for passed notifications
 *
 * @param {String} log the test log
 */
TestCaseRunner.prototype.hasPassed = function(log) {
	this.failed = false;
	var view = this.view;
	view.setIcon("passed");
	this.addLog(log);
}



/**
 * Listener for failed notifications
 *
 * @param {String} log the test log
 */
TestCaseRunner.prototype.hasFailed = function(log) {
	this.failed = true;
	var view = this.view;
	view.setIcon("failed");
	this.addLog(log);
}



/**
 * Clear result of test
 */
TestCaseRunner.prototype.clearResult = function() {
	this.failed = false;
	var view = this.view;
	if (this.selected) {
		view.setIcon("selected");
	} else {
		view.setIcon("deselected");
	}
}



/**
 * Enable or disable test
 *
 * @param {Boolean} state true for enabled
 */
TestCaseRunner.prototype.enable = function(state) {
	var view = this.view;
	this.selected = state;
	if (this.selected) {
		view.setIcon("selected");
	} else {
		view.setIcon("deselected");
	}
}




/**
 * Constructor for test log entry in outline
 */
function TestLogFile(parent, log) {
	this.log = log;
	
	var view = new OutlineNode("Log from " + Date());
	this.view = view;
	view.setUserObject(this);
}



//
// Listener for node selection - Display log
//
TestLogFile.prototype.selectedListener = function() {
	print("--------------------------------------------------------------------------------");
	print(this.log);
}



// --------------------------------------------
// Constructor for a TestProcedureRunner object
//
function TestProcedureRunner(testCaseRunner, testProcedure) {
	this.testCaseRunner = testCaseRunner;
	this.testProcedure = testProcedure;
	
	var view = new OutlineNode(testProcedure);
	this.view = view;

	var tp = this.testCaseRunner.testGroupRunner.testRunner.testProcedures[testProcedure];

	if (tp) {
		var list = new Array();
		for (var i in tp.prototype) {
			if (i.substr(0, 4) == "step") {
				var step = i.substr(4);
				list.push(step);
			}
		}

		list.sort();
		
		for (var i = 0; i < list.length; i++) {
			var tpsr = new TestStepRunner(this, list[i]);
			view.insert(tpsr.view);
		}
	} else {
		print("No test procedure implementation found for " + testProcedure);
	}
}




// ---------------------------------------
// Constructor for a TestStepRunner object
//
function TestStepRunner(testProcedureRunner, testStep) {
	this.testProcedureRunner = testProcedureRunner;
	this.testStep = testStep;
	
	var view = new OutlineNode(testStep);
	this.view = view;

	var testCaseRunner = testProcedureRunner.testCaseRunner;	
	var testGroupRunner = testCaseRunner.testGroupRunner;
	var testRunner = testGroupRunner.testRunner;
	var testName = testGroupRunner.testGroup.getName() + "/" + 
	               testCaseRunner.testCase + "/" + 
	               testProcedureRunner.testProcedure + "/" +
	               testStep;
	               
	testRunner.addTest(testName, this);
}



//
// Receive passed notifications
//
TestStepRunner.prototype.hasPassed = function() {
	var view = this.view;
	view.setIcon("passed");
}



//
// Clear test result display
//
TestStepRunner.prototype.clearResult = function() {
	var view = this.view;
	view.setIcon();
}



function TestReport() {
	this.testResults = [];
}



TestReport.prototype.addResult = function(result) {
	this.testResults.push(result);
}



TestReport.prototype.writeReport = function(filename) {
	var xml = <testreport/>
	
	for (var i = 0; i < this.testResults.length; i++) {
		var r = this.testResults[i];
		var x = r.toXML();
		xml.testcaseresult += x;
	}

	var os = new java.io.FileOutputStream(filename);
	var fw = new java.io.OutputStreamWriter(os, "UTF-8");

	fw.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
	fw.write("<?xml-stylesheet type=\"text/xsl\" href=\"docreport.xsl\" ?>\n");

	fw.write(xml.toXMLString());
	fw.close();
}



function TestResult(id, verdict, log, tcxml) {
	this.id = id;
	this.verdict = verdict;
	this.log = log;
	this.tcxml = tcxml;
}



TestResult.prototype.toXML = function() {
	var source = this.id.split("/")[0];
	var sourceid = this.id.split("/")[1];

	var xml = <testcaseresult id={this.id} source={source} sourceid={sourceid}/>;

	xml.name = <name>{this.tcxml.name.elementValue}</name>;

	xml.verdict = <verdict>{ this.verdict ? "Passed" : "Failed" }</verdict>;
	xml.log = <log>{ "\n" + this.log + "\n" }</log>;
	return xml;
}
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core classes to construct card outlines
 *
 * Changes to Version 1.0
 *
 *  - Added support for nested DF structures (requires updated application profiles)
 *  - Added support for PKCS#15 / ISO 7816-15 formatted cards
 *
 */



load("tools/FCPDecorator.js");
load("tools/CRTDecorator.js");
load("tools/ARRDecorator.js");
load("tools/p15classes.js");


//
// CTOR - OutlineCard default
//
function OutlineCard(outlineFactory, card, applicationFactory, aidlist) {

	this.factory = outlineFactory;
	this.card = card;
	this.af = applicationFactory;
	this.presetaidlist = aidlist;

	this.atr = card.reset(Card.RESET_COLD);

	this.pkcs15 = new PKCS15(card);

	// Create OutlineNode object and register in card object

	var name = card.profile.CardManufacturerProduct.Name;

	if (!name) {
		name = "Card";
	}

	var view = new OutlineNode(name);
	view.setUserObject(this);
	this.view = view;
}



//
// Expand clicked on node
//
// Read application list from EF_DIR or from card profile
//
OutlineCard.prototype.expandListener = function() {
	if (this.expanded)
		return;

	var view = this.view;

	//
	// Display ATR
	//
	var atrnode = this.factory.newOutlineATR(this.atr);

	view.insert(atrnode.view);

	//
	// Get list of application instances from card profile
	//
	var applicationInstances = this.card.profile.ApplicationInstances.ApplicationInstance;

	//
	// Make sure that we got a list
	//
	assert(applicationInstances instanceof Array);

	//
	// Try reading the EF_DIR
	//
	var hasEFDIR = true;

	var aidlist = new Array();

	try	{
		this.pkcs15.readApplicationDirectory();
		aidlist = this.pkcs15.getAidList();
		aidlist["3F00"] = null;
	}
	catch(e) {
		print("Exception selecting EF_DIR. Assuming no EF_DIR...\n" + e);
		hasEFDIR = false;

		//
		// Create application list from card profile
		//
		for (var aid in  applicationInstances) {
			if (aid == "arrayIndex")
				continue;
			aidlist[aid] = null;
		}
	}

	var sortedaidlist = new Array();
	for (var aid in aidlist) {
		sortedaidlist.push(aid);
	}

	if (this.presetaidlist) {
		for (var i = 0; i < this.presetaidlist.length; i++) {
			sortedaidlist.push(this.presetaidlist[i]);
		}
	}

	sortedaidlist.sort();

	for (var i = 0; i < sortedaidlist.length; i++) {
		var aid = sortedaidlist[i];
		var at = aidlist[aid];
		var applinstance = applicationInstances[aid.toString(HEX)];
		if (applinstance) {
/*
			print("from Card Profile: " + applinstance);
			print("  Label     : " + applinstance.Label);
			print("  AID       : " + applinstance.AID);
			print("  ProfileID : " + applinstance.ProfileID);
*/
			var uniqueId = new ByteString(applinstance.ProfileID, HEX);

			var instance = this.af.getApplicationInstance(new Object(), new ByteString(aid, HEX), this.card, uniqueId);

			var struct = null;

			if (instance.profile.DataStructure) {
				struct = instance.profile.DataStructure;
			}

			var path;
			if (aid.length <= 4) {
				path = ":" + aid.toString(HEX);
			} else {
				path = "#" + aid.toString(HEX);
			}

			var applentry;
			if (struct) {
				applentry = this.factory.newOutlineDF(this.card, null, path, applinstance.Label, struct);
			} else {
				applentry = this.factory.newOutlineApplet(instance);
			}
			view.insert(applentry.view);
	  	} else {
	  		print("No profile found for aid " + aid);
	  	}
	  	if (at) {
			if ((!at.ddo) && ((aid == "A000000063504B43532D3135") || (aid.substr(0, 10) == "E828BD080F"))) {
				var t = new ASN1(new ByteString("7300", HEX));
				at.ddo = new PKCS15_CIODDO(t);
		  	}
		  	if (at.ddo) {
				var applentry;
				applentry = this.factory.newOutlinePKCS15(this.pkcs15, aid, at);
				view.insert(applentry.view);
	  		}
	  	}
	}

	this.expanded = true;
}





//
// CTOR - ATR Outline
//
function OutlineATR(factory, atr) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.atr = atr;

	// Create OutlineNode object and register in ATR object
	var view = new OutlineNode("ATR=" + this.atr.toByteString().toString(HEX));
	view.setIcon("atr");
	view.setUserObject(this);
	view.setToolTip("Click to decode ATR");
	this.view = view;
}


OutlineATR.prototype.selectedListener = function() {
	print(this.atr);
}





//
// CTOR - FCP Outline
//
function OutlineFCP(factory, fcp) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.fcp = fcp;

	// Create OutlineNode object and register in FCP object
	var view = new OutlineNode("FCP=" + this.fcp.toString(HEX));
	view.setIcon("header");
	view.setUserObject(this);
	this.view = view;

	if ((fcp.byteAt(0) == 0x62) ||
		(fcp.byteAt(0) == 0x64) ||
		(fcp.byteAt(0) == 0x6F)) {
		try	{
			var asn = new ASN1(this.fcp);
			FCPDecorator(asn);
			view.insert(asn);
		}
		catch(e) {
			print(e);
			print("Unable to decode FCP structure");
		}
	} else {
	}
}





//
// CTOR - Outline node for DFs
//
function OutlineDF(factory, card, parentdf, id, name, profile) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.card = card;
	this.parentdf = parentdf;
	this.id = id;

	// Create OutlineNode object and register in OutlineDF object
	var view = new OutlineNode(name, true);
	view.setUserObject(this);
	this.view = view;

	this.profile = profile;
}





//
// Event handler for expand notifications
//
OutlineDF.prototype.expandListener = function() {

	if (this.expanded)
		return;

	var view = this.view;

	var eflist = null;
	if (this.profile && this.profile.FileStructure) {
		eflist = this.profile.FileStructure.EF;
	}

	var dflist = null;
	if (this.profile && this.profile.DirectoryStructure) {
		dflist = this.profile.DirectoryStructure.DF;
	}

	var dolist = null;
	if (this.profile && this.profile.DataObjectStructure) {
		dolist = this.profile.DataObjectStructure.DF;
	}

	try	{
		var df;

		if (this.parentdf) {
			df = new CardFile(this.parentdf.df, this.id);
			} else {
			df = new CardFile(this.card, this.id);
			}
		this.df = df;

		var fcp = df.getFCPBytes();
		if (fcp && (fcp.length > 1)) {
			var fcpmodel = this.factory.newOutlineFCP(fcp);
			view.insert(fcpmodel.view);
		}

		if (dflist) {
			for (var i = 0; i < dflist.length; i++) {
				var dfp = dflist[i];

				var sdf = this.factory.newOutlineDF(this.card, this, ":" + dfp.fid, dfp.name, dfp);
				view.insert(sdf.view);
			}
		}

		if (eflist) {
			for (var i = 0; i < eflist.length; i++) {
				var ef = this.factory.newOutlineEF(this.df, eflist[i].name, eflist[i]);
				view.insert(ef.view);
			}
		}

		if (dolist) {
			for (var i = 0; i < dolist.length; i++) {
				var doo = this.factory.newOutlineDataObject(this.df, dolist[i].id, dolist[i].name, dolist.format);
				view.insert(doo.view);
			}
		}
	}
	catch(e) {
		print(e);
	}

	this.expanded = true;
}



//
// CTOR - Outline node for EFs
//
function OutlineEF(factory, df, name, profile) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.df = df;

	// Create OutlineNode object and register in OutlineEF object
	var view = new OutlineNode(name, true);
	view.setIcon("document");
	view.setUserObject(this);
	this.view = view;

	this.profile = profile;
}



//
// Event handler for expand notification
//
OutlineEF.prototype.expandListener = function() {
	if (this.expanded)
		return;

	var view = this.view;
	var efdesc = this.profile;

	try	{
		var ef = new CardFile(this.df, ":" + efdesc.fid);
	}
	catch(e) {
		print(e);
		return;
	}

	var isTransparent = true;
	var fcp = ef.getFCPBytes();
	var filelength = -1;
	if (fcp && (fcp.length > 1)) {
		var fcpmodel = this.factory.newOutlineFCP(fcp);
		view.insert(fcpmodel.view);
		isTransparent = ef.isTransparent();
		filelength = ef.getLength();
	} else {
		isTransparent = (efdesc.type == "T");
	}

	if (isTransparent) {
		try	{
			if (filelength > 0) {
				var bs = ef.readBinary(0, filelength);
			} else {
				var bs = ef.readBinary();
			}
		}
		catch(e) {
			print(e);
			this.expanded = true;
			return;
		}

		var bindata = this.factory.newDataOutline(bs, efdesc.format);
		view.insert(bindata.view);

	} else {
		for (var rec = 1; rec < 255; rec++) {
			try {
				ef.readRecord(rec);
				var record = this.factory.newOutlineRecord(ef, rec, efdesc);
				view.insert(record.view);
			}
			catch(e) {
				if ((e instanceof GPError) && (e.reason == 0x6A83))
					break;
				print(e);
				break;
			}
		}
	}

	this.expanded = true;
}




//
// CTOR - Outline node for data object retrievable with GET_DATA
//
function OutlineDataObject(factory, df, id, name, format) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.df = df;
	this.id = id;
	this.format = format;

	// Create OutlineNode object and register in OutlineEF object
	print(name + "(" + id.toString(16) + ")");
	var view = new OutlineNode(name + "(" + id.toString(16) + ")", true);
	view.setIcon("document");
	view.setUserObject(this);
	this.view = view;
}



//
// Event handler for expand notification
//
OutlineDataObject.prototype.expandListener = function() {
	if (this.expanded)
		return;

	var view = this.view;

	var card = this.df.card;

	var bs = card.sendApdu(0x00, 0xCA, this.id >> 8, this.id & 0xFF, 0);

	if (card.SW != 0x9000) {
		var bs = card.sendApdu(0x80, 0xCA, this.id >> 8, this.id & 0xFF, 0);
	}

	if (card.SW != 0x9000) {
		print("Error getting object: " + card.SWMSG);
	} else {
		var bindata = this.factory.newDataOutline(bs, this.format);
		view.insert(bindata.view);
	}

	this.expanded = true;
}




//
// CTOR - Outline for records in an EF
//
function OutlineRecord(factory, ef, no, efdesc) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.ef = ef;
	this.no = no;
	this.efdesc = efdesc;

	// Create OutlineNode object and register in OutlineRecord object
	var view = new OutlineNode("Record#" + no, true);
	view.setIcon("record");
	view.setUserObject(this);
	this.view = view;
}



//
// Expand event handler for records
//
OutlineRecord.prototype.expandListener = function() {
	if (this.expanded)
		return;

	var view = this.view;
	var ef = this.ef;

	var bs = ef.readRecord(this.no);

	var bindata = this.factory.newDataOutline(bs, this.efdesc.format);
	view.insert(bindata.view);

	this.expanded = true;
}





//
// CTOR - Binary data outline
//
function DataOutline(factory, data, format) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.data = data;
	this.format = format;

	var ddata = data;
	if (ddata.length > 256) {
		ddata = data.bytes(0, 256);
	}

	var view = new OutlineNode(ddata.toString(HEX));
	view.setIcon("binary");
	view.setUserObject(this);
	view.setToolTip("Select format from context menu");
	view.setContextMenu(DataOutline.ctxMenuList);
	this.view = view;
	this.decorate(format);
}


DataOutline.ctxMenuList = ["as Hexdump", "as ASN1", "as X509"];

DataOutline.prototype.decorate = function(format) {

	var view = this.view;
	var data = this.data;

	if (format && ((format.substr(0, 4) == "asn1") || (format.substr(0, 7) == "tlvlist")) && (data.length >= 2)) {
		var i = format.indexOf(".");

		if ((i > 0) && (format.substr(i + 1) == "striprecordheader")) {
			data = data.bytes(2);
		}

		var total = data.length;

		while(total >= 2) {
			try	{
				var asn = new ASN1(data);
			}
			catch(e) {
				print("Error in TLV structure: " + e);
				return;
			}

			this.asn = asn;
			this.asn1DecoratorHook(format);
			view.insert(asn);
			total -= asn.size;

			if (format.substr(0, 3) == "asn") {
				break;
			}

			data = data.bytes(asn.size);
			if ((data.length == 0) || (data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
				break;
			}
		}

		if (total > 0) {
			var sparecontent = new OutlineNode(total + " spare bytes");
			view.insert(sparecontent);
		}
	}
}



DataOutline.prototype.asn1DecoratorHook = function(format) {
	var i = format.indexOf(".");

	if (i > 0) {
		switch(format.substr(i + 1)) {
		case "arr" :
			ARRDecorator(this.asn);
			break;
		}
	}
}



DataOutline.prototype.actionListener = function(node, action) {
	print("--------------------------------------------------------------------------------");

	switch(action) {
		case DataOutline.ctxMenuList[0]:
			print(this.data);
			break;
		case DataOutline.ctxMenuList[1]:
			var asn;
			try	{
				asn = new ASN1(this.data);
				print(asn);
			}
			catch(e) {
				print("Error in TLV structure: " + e);
				return;
			}
			break;
		case DataOutline.ctxMenuList[2]:
			try 	{
				var x509 = new X509(this.data);
				print(x509.toString());
			}
			catch(e) {
				print(e);
			}
			break;
	}
}



//
// CTOR - Outline node for PKCS15 structures
//
function OutlinePKCS15(factory, pkcs15, aid, at) {
	if (arguments.length == 0)
		return;

	this.factory = factory;
	this.pkcs15 = pkcs15;
	this.aid = aid;
	this.at = at;

	var name = this.at.label;
	if (!name) {
		name = aid;
	}

	name = "PKCS#15 \"" + name + "\"";

	// Create OutlineNode object and register in OutlineDF object
	var view = new OutlineNode(name, true);
	view.setUserObject(this);
	this.view = view;
}





//
// Event handler for expand notifications
//
OutlinePKCS15.prototype.expandListener = function() {

	if (this.expanded)
		return;

	var view = this.view;
	var at = this.at;

	if (!at.ddo.ciaInfoPath) {
		// Set a default path 5032 to EF.CIAInfo
		var tlv = new ASN1(new ByteString("300404025032", HEX));
		at.ddo.ciaInfoPath = new PKCS15_Path(tlv);
		at.ddo.ciaInfoPath.aid = "#" + this.aid;
	}

	var cia = this.pkcs15.getCIAInfo(at.ddo.ciaInfoPath);

	var label = cia.label;
	if (!label) {
		label = "CIAInfo";
	} else {
		label = "CIAInfo \"" + label + "\"";
	}

	cia.tlv.setName(label);
	view.insert(cia.tlv);

	if (!at.ddo.odfPath) {
		// Set a default path 5031 to EF.OD
		var tlv = new ASN1(new ByteString("300404025031", HEX));
		at.ddo.odfPath = new PKCS15_Path(tlv);
		at.ddo.odfPath.aid = "#" + this.aid;
	}

	this.pkcs15.readObjectListForApplication(at);

	for (var i = 0; i < at.objlist.length; i++) {
		var o = at.objlist[i];

		var label = o.label;
		if (!label) {
			label = o.type;
		} else {
			label = o.type + " \"" + label + "\"";
		}

		if ((o.type == "X509Certificate") || (o.type == "TrustedX509Certificate") || (o.type == "UsefulX509Certificate")) {
			var onode = new OutlineNode(label, true);
			view.insert(onode);
			o.tlv.setName("CIO");
			onode.insert(o.tlv);

			if (o.value && (o.value instanceof PKCS15_Path)) {
				try	{
					var bs = this.pkcs15.readCardObject(this.pkcs15.df, o.value);
					var bindata = this.factory.newDataOutline(bs, "asn1.x509");
					onode.insert(bindata.view);
				}
				catch(e) {
					print("Unable to read certificate: " + e);
				}
			}
		} else {
			o.tlv.setName(label);
			view.insert(o.tlv);
		}
	}

	this.expanded = true;
}





//
// CTOR - OutlineFactory
// Derive from this class to include custom made outline elements
//
function CardOutlineFactory() {

}



//
// Method to create new OutlineATR object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineATR = function(atr) {
	return new OutlineATR(this, atr);
}



//
// Method to create new OutlineDF object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineDF = function(card, parentdf, id, name, profile) {
	return new OutlineDF(this, card, parentdf, id, name, profile);
}



//
// Method to create new OutlineApplet object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineApplet = function(instance) {
	throw new GPError("CardOutlineFactory", GPError.INVALID_USAGE, 0, "Must overwrite newOutlineApplet to use explorer functionality");
}



//
// Method to create new OutlinePKCS15 object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlinePKCS15 = function(pkcs15, aid, at) {
	return new OutlinePKCS15(this, pkcs15, aid, at);
}



//
// Method to create new OutlineEF object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineEF = function(df, name, profile) {
	return new OutlineEF(this, df, name, profile);
}



//
// Method to create new OutlineDataObject object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineDataObject = function(df, id, name, format) {
	return new OutlineDataObject(this, df, id, name, format);
}



//
// Method to create new OutlineFCP object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineFCP = function(fcp) {
	return new OutlineFCP(this, fcp);
}



//
// Method to create new OutlineRecord object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newOutlineRecord = function(ef, no, efdesc) {
	return new OutlineRecord(this, ef, no, efdesc);
}



//
// Method to create new DataOutline object
//
// Overwrite if you want to tailor this behaviour
//
CardOutlineFactory.prototype.newDataOutline = function(data, format) {
	return new DataOutline(this, data, format);
}
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Function to name tags contained in Control Reference Templates (CRT)
 */



//
// Identify tags in the Control Reference Template
//
function CRTDecorator(asn1) {
	switch(asn1.tag) {
	case 0x80:
		asn1.setName("cryptographicMechanism");
		break;
	case 0x81:
		asn1.setName("fileIdentifierOrPath");
		break;
	case 0x82:
		asn1.setName("dFName");
		break;
	case 0x83:
		asn1.setName("secretOrPublicKeyReference");
		break;
	case 0x84:
		asn1.setName("sessionOrPrivateKeyReference");
		break;
	case 0x85:
		asn1.setName("nullBlock");
		break;
	case 0x86:
		asn1.setName("chainingBlock");
		break;
	case 0x87:
		asn1.setName("initialBlock");
		break;
	case 0x88:
		asn1.setName("previousChallenge");
		break;
	case 0x89:
		asn1.setName("proprietaryDataElementIndex");
		break;
	case 0x8A:
		asn1.setName("proprietaryDataElementIndex");
		break;
	case 0x8B:
		asn1.setName("proprietaryDataElementIndex");
		break;
	case 0x8C:
		asn1.setName("proprietaryDataElementIndex");
		break;
	case 0x8D:
		asn1.setName("proprietaryDataElementIndex");
		break;
	case 0x90:
		asn1.setName("cardHashCode");
		break;
	case 0x91:
		asn1.setName("cardRandomNumber");
		break;
	case 0x92:
		asn1.setName("cardTimeStamp");
		break;
	case 0x93:
		asn1.setName("dsiCounter");
		break;
	case 0x94:
		asn1.setName("challengeOrDerivationParameter ");
		break;
	case 0x95:
		asn1.setName("usageQualifier");
		break;
	case 0x8E:
		asn1.setName("cryptographicContentReference");
		break;
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview
 * Simple CRL generator class
 */

if (typeof(__ScriptingServer) == "undefined") {
	load("pkixcommon.js");
}

 

/**
 * Create a Certificate Revocation List (CRL) generator.
 *
 * @class Class implementing a CRL certificate generator
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider to use for signing operations
 */
function CRLGenerator(crypto) {
	this.crypto = crypto;
	this.reset();
}


CRLGenerator.unspecified = 0;
CRLGenerator.keyCompromise = 1;
CRLGenerator.cACompromise = 2;
CRLGenerator.affiliationChanged = 3;
CRLGenerator.superseded = 4;
CRLGenerator.cessationOfOperation = 5;
CRLGenerator.certificateHold = 6;
CRLGenerator.removeFromCRL = 8;
CRLGenerator.privilegeWithdrawn = 9;
CRLGenerator.aACompromise = 10;



/**
 * Resets all internal state variables.
 *
 */
CRLGenerator.prototype.reset = function() {
	this.extensions = [];
	this.revokedCertificates = [];
	this.nextUpdate = null;
}



/**
 * Sets the isser name.
 *
 * <p>The issuer name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * </pre>
 * @param {Object} issuer the issuer name
 */
CRLGenerator.prototype.setIssuer = function(issuer) {
	this.issuer = issuer;
}



/**
 * Sets the timestamp for this CRL
 *
 * @param {Date} datetime the current date and time
 */
CRLGenerator.prototype.setThisUpdate = function(datetime) {
	this.thisUpdate = datetime;
}



/**
 * Sets the timestamp for the next update
 *
 * @param {Date} datetime the date and time of the next update
 */
CRLGenerator.prototype.setNextUpdate = function(datetime) {
	this.nextUpdate = datetime;
}



/**
 * Sets the signature algorithm.
 *
 * @param {Number} alg the signature algorithm, must be one of Crypto.RSA, Crypto.RSA_SHA256 or Crypto.ECDSA_SHA256
 */
CRLGenerator.prototype.setSignatureAlgorithm = function(alg) {
	this.signatureAlgorithm = alg;
}



/**
 * Adds an extension to the CRL
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        critical    BOOLEAN DEFAULT FALSE,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *</pre>
 * @param {String} extnID the extensions object identifier
 * @param {Boolean} critical the extension is critical
 * @param {ByteString} the extension value as ByteString
 */
CRLGenerator.prototype.addExtension = function(extnID, critical, extnValue) {
	var t = new ASN1("extension", ASN1.SEQUENCE,
				new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	if (critical) {
		t.add(new ASN1("critical", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}

	t.add(new ASN1("extnValue", ASN1.OCTET_STRING, extnValue));
	this.extensions.push(t);

}



/**
 * Adds the authority public key identifier extension based on the issuers key.
 *
 * <p>The key identifier is calculated as SHA-1 hash over the contents of the
 * issuer public key (Without tag, length and number of unused bits.</p>
 */
CRLGenerator.prototype.addAuthorityKeyIdentifierExtension = function(publicKey) {
	if (publicKey.getComponent(Key.MODULUS)) {
		var spi = PKIXCommon.createRSASubjectPublicKeyInfo(publicKey);
	} else {
		var spi = PKIXCommon.createECSubjectPublicKeyInfo(publicKey, this.encodeECDomainParameter);
	}

	var keyvalue = spi.get(1).value.bytes(1);
	var hash = this.crypto.digest(Crypto.SHA_1, keyvalue);
	
	var t = new ASN1(ASN1.SEQUENCE,
					new ASN1(0x80, hash)
				);
	this.addExtension("id-ce-authorityKeyIdentifier", false, t.getBytes());
}



/**
 * Adds the CRL number extension.
 *
 */
CRLGenerator.prototype.addCRLNumberExtension = function(crlnumber) {
	var t = new ASN1(ASN1.INTEGER,
					PKIXCommon.convertUnsignedInteger(ByteString.valueOf(crlnumber))
				);
	this.addExtension("id-ce-cRLNumber", false, t.getBytes());
}



/**
 * Add a revoked certificate to the list. This adds the complete DER encoded structure.
 *
 * @param {ASN1} revokedCertificate the information related to the revoked certificate
 */
CRLGenerator.prototype.addRevokedCertificate = function(revokedCertificate) {
	this.revokedCertificates.push(revokedCertificate);
}



/**
 * Add a revoked certificate to the list. This adds the complete DER encoded structure.
 *
 * @param {ByteString} serial the serial number of the certificate to revoke
 * @param {Date} timestamp the revocation time, optional, default is now
 * @param {Number) reason the revocation reason
 * @param {ASN1) ext the crl entry extensions
 */
CRLGenerator.prototype.revokeCertificate = function(serial, timestamp, reason, ext) {
	if (typeof(timestamp) == "undefined") {
		timestamp = new Date();
	}
	var t = new ASN1("revokedCertificate", ASN1.SEQUENCE, 
				new ASN1("userCertificate", ASN1.INTEGER, PKIXCommon.convertUnsignedInteger(serial)),
				new ASN1("revocationTime", ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(timestamp), ASCII))
				);

	if (typeof(ext) == "undefined") {
		ext = new ASN1("crlExtensions", ASN1.SEQUENCE);
	}
	
	if ((typeof(reason) != "undefined") && (reason != -1)) {
		ext.add(new ASN1("reason", ASN1.SEQUENCE,
					new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString("id-ce-cRLReasons", OID)),
					new ASN1("extnValue", ASN1.OCTET_STRING,
						(new ASN1("cRLReason", ASN1.ENUMERATED, ByteString.valueOf(reason))).getBytes())
					)
				);
		t.add(ext);
	}
	
	this.revokedCertificates.push(t);
}



/**
 * Load list of revoked certificates from an existing CRL
 *
 * @param {String} filename the file name of the DER encoded CRL
 * @type Number
 * @return the value of the CRLNumber extension, 0 if extension not defined or -1 if file could not be loaded
 */
CRLGenerator.prototype.loadCRLEntries = function(filename) {
	var crlnumber = 0;
	
	try	{
		var crlbin = PKIXCommon.readFileFromDisk(filename);
		var crl = new ASN1(crlbin);
		print(crl);
		var tbs = crl.get(0);
		var i = 0;
		if ((i < tbs.length) && (tbs.get(i).tag == ASN1.INTEGER)) {		// Skip version if present
			i++;
		}
		i += 3;		// Skip signature, issuer, thisUpdate
		if ((i < tbs.length) && (tbs.get(i).tag == ASN1.UTCTime)) {		// nextUpdate if present
			i++;
		}
		if ((i < tbs.length) && (tbs.get(i).tag == ASN1.SEQUENCE)) {
			for (var j = 0; j < tbs.get(i).elements; j++) {
				this.revokedCertificates.push(tbs.get(i).get(j));
			}
			i++;
		}
		if ((i < tbs.length) && (tbs.get(i).tag == 0xA0)) {
			var l = tbs.get(i).get(0);
			var oid = new ByteString("id-ce-cRLNumber", OID);
			for (var j = 0; j < l.elements; j++) {
				var ext = l.get(j);
				if (ext.get(0).value.equals(oid)) {
					var extval = new ASN1(ext.get(1).value);
					crlnumber = extval.value.toUnsigned();
				}
			}
			
		}
	}
	catch(e) {
		GPSystem.trace(e);
		return -1;
	}
	return crlnumber;
}



/**
 * Gets the issuer name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
CRLGenerator.prototype.getIssuer = function() {
	if (this.issuer instanceof ASN1) {
		return this.issuer;
	} else {
		return PKIXCommon.encodeName(this.issuer);
	}
}



/**
 * Gets the thisUpdate TLV object
 *
 * @return the thisUpdate UTC encoded time
 * @type ASN1
 */
CRLGenerator.prototype.getThisUpdate = function() {
	var t = new ASN1("thisUpdate", ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(this.thisUpdate), ASCII));
	return t;
}



/**
 * Gets the nextUpdate TLV object
 *
 * @return the nextUpdate UTC encoded time
 * @type ASN1
 */
CRLGenerator.prototype.getNextUpdate = function() {
	var t = new ASN1("nextUpdate", ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(this.nextUpdate), ASCII));
	return t;
}



/**
 * Gets the signature algorithm TLV object
 *
 * @return the signature algorithm object
 * @type ASN1
 */
CRLGenerator.prototype.getSignatureAlgorithm = function() {
	var t = new ASN1("signatureAlgorithm", ASN1.SEQUENCE);

	if (this.signatureAlgorithm == Crypto.RSA) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549.1.1.5", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (this.signatureAlgorithm == Crypto.RSA_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549.1.1.11", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (this.signatureAlgorithm == Crypto.ECDSA_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("ecdsa-with-SHA256", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else {
		throw new GPError("CRLGenerator", GPError.INVALID_MECH, this.signatureAlgorithm, "Invalid algorithm");
	}
		
	return t;
}

 

/**
 * Gets revoked certificates
 *
 * @return the list of revoked certificates
 * @type ASN1
 */
CRLGenerator.prototype.getRevokedCertificates = function() {
	var t = new ASN1("revokedCertificates", ASN1.SEQUENCE);
	for (var i = 0; i < this.revokedCertificates.length; i++) {
		t.add(this.revokedCertificates[i]);
	}
	return t;
}



/**
 * Gets the CRL extension as TLV object
 *
 * @return the CRL extensions
 * @type ASN1
 */
CRLGenerator.prototype.getExtensions = function() {
	var t = new ASN1("extensions", 0xA0);
	var s = new ASN1("extensions", ASN1.SEQUENCE);
	
	t.add(s);
	
	for (var i = 0; i < this.extensions.length; i++) {
		s.add(this.extensions[i]);
	}
	return t;
}



/**
 * Gets the part of the CRL that will be signed
 *
 * @return the TBSCertificate part
 * @type ASN1
 */
CRLGenerator.prototype.getTbsCertificateList = function() {
	var t = new ASN1("tbsCertList", ASN1.SEQUENCE);
	t.add(new ASN1("version", ASN1.INTEGER, new ByteString("01", HEX)));
	t.add(this.getSignatureAlgorithm());
	t.add(this.getIssuer());
	t.add(this.getThisUpdate());
	if (this.nextUpdate != null) {
		t.add(this.getNextUpdate());
	}
	if (this.revokedCertificates.length > 0) {
		t.add(this.getRevokedCertificates());
	}
	if (this.extensions.length > 0) {
		t.add(this.getExtensions());
	}
	return t;
}



/**
 * Generates the certificate.
 *
 * @return the generated certificate
 * @type X509
 */
CRLGenerator.prototype.generateCRL = function(privateKey) {
	var certlist = new ASN1("certificateList", ASN1.SEQUENCE);
	
	var tbs = this.getTbsCertificateList();
	certlist.add(tbs);
	certlist.add(this.getSignatureAlgorithm());
	
	var signature = this.crypto.sign(privateKey, this.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString("00", HEX)).concat(signature);

	var signatureValue = new ASN1("signatureValue", ASN1.BIT_STRING, signature);
	certlist.add(signatureValue);
	
	return certlist;
}



function CRLGeneratorTest() {

	var crypto = new Crypto();
	
	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setSize(1024);

	crypto.generateKeyPair(Crypto.RSA, caPublicKey, caPrivateKey);

//	var caPrivKey = new Key("profiles/kp_rsa_private.xml");

	var x = new CRLGenerator(crypto);

	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = [{ C:"UT" },{ O:"ACME Corporation" },{ CN:"Test-CA" }];
	x.setIssuer(issuer);
	var now = new Date();
	x.setThisUpdate(now);
	var nextMonth = new Date();
	nextMonth.setMonth((now.getMonth() + 1) % 12);
	x.setNextUpdate(nextMonth);
	x.addAuthorityKeyIdentifierExtension(caPublicKey);
	x.addCRLNumberExtension(11);
	
	x.revokeCertificate(new ByteString("01", HEX));
	x.revokeCertificate(new ByteString("80", HEX), new Date());
	x.revokeCertificate(new ByteString("80", HEX), new Date(), CRLGenerator.keyCompromise);
	x.revokeCertificate(new ByteString("80", HEX), new Date(), CRLGenerator.superseded, new ASN1("crlExtensions", ASN1.SEQUENCE));
	
	var crl = x.generateCRL(caPrivateKey);
	
	var fn = GPSystem.mapFilename("crl.crl", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, crl.getBytes());

	print(crl);
	
	var x = new CRLGenerator(crypto);
	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = [{ C:"UT" },{ O:"ACME Corporation" },{ CN:"Test-CA" }];
	x.setIssuer(issuer);
	var now = new Date();
	x.setThisUpdate(now);
	var nextMonth = new Date();
	nextMonth.setMonth((now.getMonth() + 1) % 12);
	x.setNextUpdate(nextMonth);
	var crlnumber = x.loadCRLEntries(fn);
	assert(crlnumber == 11);
	x.addAuthorityKeyIdentifierExtension(caPublicKey);
	x.addCRLNumberExtension(crlnumber + 1);
	
	x.revokeCertificate(crypto.generateRandom(8), new Date(), CRLGenerator.keyCompromise);
	var crl = x.generateCRL(caPrivateKey);
//	PKIXCommon.writeFileToDisk(fn, crl.getBytes());
	
	print(crl);
}


<?xml version="1.0" encoding="UTF-8"?>
<FileStructure arrayElement="EF" arrayIndex="#">
    <EF fid="2F00" format="asn1.efdir" name="EF_DIR" />
    <EF fid="2F01" format="asn1" name="EF_ATR" />
    <EF fid="0030" format="asn1.arr" name="EF_ARR" />
</FileStructure>    
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Function to name tags contained in FCP, FMD or FCI data structure
 */



//
// Decorator for security attributes in FCPs
//
function SADecorator(asn1) {
	var recurse = false;
	
	switch(asn1.tag) {
	case 0x86:
		asn1.setName("proprietarySecurityAttributes");
		break;
	case 0x8B:
		asn1.setName("securityAttributeReferenceExpanded");
		break;
	case 0x8C:
		asn1.setName("securityAttributeCompact");
		break;
	case 0x8B:
		asn1.setName("securityAttributeExtended");
		break;
	case 0xA0:
		asn1.setName("securityAttributeForDataObjects");
		recurse = true;
		break;
	case 0xA1:
		asn1.setName("securityAttributeForInterfaces");
		recurse = true;
		break;
	case 0xAB:
		asn1.setName("securityAttributeTemplateExpanded");
		for (var i = 0; i < asn1.elements; i++) {
			ARRDecorator(asn1.get(i));
		}
		break;
	}
	
	if (recurse) {
		for (var i = 0; i < asn1.elements; i++) {
			SADecorator(asn1.get(i));
		}
	}
}



//
// Identify tags in the FCP and assign a name
//
function FCPDecorator(asn1) {
	switch(asn1.tag) {
	case 0x62:
		asn1.setName("FCP");
		break;
	case 0x64:
		asn1.setName("FMD");
		break;
	case 0x6F:
		asn1.setName("FCI");
		break;
	}
	
	for (var i = 0; i < asn1.elements; i++) {
		var t = asn1.get(i);
		switch(t.tag) {
		case 0x80:
			t.setName("numberOfBytes");
			break;
		case 0x81:
			t.setName("numberOfBytesStructural");
			break;
		case 0x82:
			t.setName("fileDescriptor");
			break;
		case 0x83:
			t.setName("fileIdentifier");
			break;
		case 0x84:
			t.setName("dFName");
			break;
		case 0x85:
			t.setName("proprietaryInformationPlain");
			break;
		case 0x87:
			t.setName("idOfFCIExtension");
			break;
		case 0x88:
			t.setName("shortFileIdentifier");
			break;
		case 0x8A:
			t.setName("lifeCycleStatusByte");
			break;
		case 0x8D:
			t.setName("idOfSecurityEnvironmentTemplates");
			break;
		case 0x8B:
			t.setName("securityAttributeExtended");
			break;
		case 0xA5:
			t.setName("proprietaryInformationTLV");
			break;
		case 0xAC:
			t.setName("cryptoMechanismsIdentifier");
			break;
		default:
			SADecorator(t);
		}
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Basic helper functions to convert PKCS#8 data to GP keys and vice versa
 */



/**
 * Empty constructor
 */
function PKCS8() {
}



PKCS8.idEcPublicKey = new ByteString("id-ecPublicKey", OID);
PKCS8.rsaEncryption = new ByteString("1.2.840.113549.1.1.1", OID);

/**
 * Convert x/y coordinates to uncompressed format
 *
 * @param {ByteString} x the x coordinate
 * @param {ByteString} y the y coordinate
 * @type ByteString
 * @return ByteString containing compressed format
 *
 */ 
PKCS8.encodeUncompressedECPoint = function(x,y) {

	bb = new ByteBuffer();

	// uncompressed encoding
	bb.append(new ByteString("04", HEX));
	bb.append(x);
	bb.append(y);

	return bb.toByteString();
}



/**
 * Convert uncompressed format to x and y coordinates
 *
 * @param {ByteString} compressed point
 * @type Object
 * @return Object with ByteString properties x and y
 *
 */ 
PKCS8.decodeUncompressedECPoint = function(uncompressedPoint) {

	// Determine the size of the coordinates ignoring the indicator byte '04'
	var length = uncompressedPoint.length - 1;

	var sizeOfCoordinate = length >> 1;

	var xValue = uncompressedPoint.bytes(1, sizeOfCoordinate);
	var yValue = uncompressedPoint.bytes(1 + sizeOfCoordinate, sizeOfCoordinate);

	return { x:xValue, y:yValue };
} 



/**
 * Integer to octet string conversion
 *
 * @param {ByteString} value the encoded integer value
 * @param {Number} the number of digits
 * @type ByteString
 * @return the truncated or padded result
 */
PKCS8.I2O = function(value, length) {
	if (value.length > length) {
		value = value.right(length);
	}
	while (value.length < length) {
		value = PKCS8.PAD.left((length - value.length - 1 & 15) + 1).concat(value);
	}
	return value;
}
PKCS8.PAD = new ByteString("00000000000000000000000000000000", HEX);



/**
 * Strips leading zeros of a ByteString
 *
 * @param {ByteString} value the ByteString value
 * @return the stripped ByteString object, may be an empty ByteString
 * @type ByteString
 */
PKCS8.stripLeadingZeros = function(value, size) {
	if (typeof(size) == "undefined") {
		var limit = value.length;
	} else {
		limit = value.length - size;
	}
	
	var i = 0;
	for (; (i < limit) && (value.byteAt(i) == 0); i++);
	
	return value.bytes(i);
}



/**
 * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
 *
 * This prevent interpretation of the integer representation if converted into
 * a signed ASN1 INTEGER.
 *
 * @param {ByteString} value the value to convert
 * @return the converted value
 * @type ByteString
 */
PKCS8.convertUnsignedInteger = function(value) {
	assert(value.length > 0);
	
	var i = 0;
	for (; (i < value.length - 1) && (value.byteAt(i) == 0); i++);
	
	if (value.byteAt(i) >= 0x80) {
		value = (new ByteString("00", HEX)).concat(value.bytes(i));
	} else {
		value = value.bytes(i);
	}
	
	return value;
}



/**
 * Encode a given GP ECC private key as specified by the PKCS#8 format
 *
 * @param {Key} the private key object that should be encoded
 * @return the encoded PKCS#8 private key
 * @type ByteString
 */
PKCS8.encodeECCKeyUsingPKCS8Format = function(privateKey) {
	var privateKeyInfo = new ASN1(ASN1.SEQUENCE);
	
	// Set the version number - must be zero
	privateKeyInfo.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX)));
	
	var privateKeyAlgorithm = new ASN1(ASN1.SEQUENCE);
	privateKeyAlgorithm.add(new ASN1(ASN1.OBJECT_IDENTIFIER, PKCS8.idEcPublicKey));
	
	var domainInfo = new ASN1(ASN1.SEQUENCE);
	
	// Cofactor - must be 1
	domainInfo.add(new ASN1(ASN1.INTEGER, PKCS8.stripLeadingZeros(privateKey.getComponent(Key.ECC_H))));
	
	var field = new ASN1(ASN1.SEQUENCE);
	
	// we are using a prime field
	field.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("prime-field", OID))); // prime field
	
	var primeOrder = privateKey.getComponent(Key.ECC_P);
	if (primeOrder.byteAt(0) >= 0x80) { // signed int? -> add 0x00
		field.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX).concat(privateKey.getComponent(Key.ECC_P))));
	} else {
		field.add(new ASN1(ASN1.INTEGER, privateKey.getComponent(Key.ECC_P)));
	}
	
	domainInfo.add(field);
	
	// Coefficients a and b
	var coeff = new ASN1(ASN1.SEQUENCE);
	
	// first coefficient
	coeff.add(new ASN1(ASN1.OCTET_STRING, privateKey.getComponent(Key.ECC_A)));
	
	// second coefficient
	coeff.add(new ASN1(ASN1.OCTET_STRING, privateKey.getComponent(Key.ECC_B)));
	
	domainInfo.add(coeff);
	
	// Base point (uncompressed)
	var gx = privateKey.getComponent(Key.ECC_GX);
	var gy = privateKey.getComponent(Key.ECC_GY);
	
	domainInfo.add(new ASN1(ASN1.OCTET_STRING, PKCS8.encodeUncompressedECPoint(gx, gy)));
	
	// group order generated by the base point
	var groupOrder = privateKey.getComponent(Key.ECC_N);
	if (groupOrder.byteAt(0) >= 0x80) { // signed int? -> add 0x00
		domainInfo.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX).concat(privateKey.getComponent(Key.ECC_N))));
	} else {
		domainInfo.add(new ASN1(ASN1.INTEGER, privateKey.getComponent(Key.ECC_N)));
	}
	
	privateKeyAlgorithm.add(domainInfo);
	
	// encode the key information
	privateKeyInfo.add(privateKeyAlgorithm);
	
	// encode the private key
	var encodedPrivateKey = new ASN1(ASN1.OCTET_STRING);
	
	var pk = privateKey.getComponent(Key.ECC_D);
	var key = new ASN1(ASN1.SEQUENCE);
	key.add(new ASN1(ASN1.INTEGER, new ByteString("01", HEX)));
	key.add(new ASN1(ASN1.OCTET_STRING, pk));
	
	encodedPrivateKey.add(key);
	
	privateKeyInfo.add(encodedPrivateKey);
	
//	print(privateKeyInfo);
	return privateKeyInfo.getBytes();	
}



/**
 * Encode RSA private key as defined in PKCS#1
 *
 * RSAPrivateKey ::= SEQUENCE {
 *     version           Version,
 *     modulus           INTEGER,  -- n
 *     publicExponent    INTEGER,  -- e
 *     privateExponent   INTEGER,  -- d
 *     prime1            INTEGER,  -- p
 *     prime2            INTEGER,  -- q
 *     exponent1         INTEGER,  -- d mod (p-1)
 *     exponent2         INTEGER,  -- d mod (q-1)
 *     coefficient       INTEGER,  -- (inverse of q) mod p
 *     otherPrimeInfos   OtherPrimeInfos OPTIONAL
 * }
 * @param {Key} privateKey the private RSA key in CRT format
 * @type ByteString
 * @return the encoded RSA key
 */
PKCS8.encodeRSAKey = function(privateKey, publicKey) {
	var rsaPrivateKey = 
		new ASN1(ASN1.SEQUENCE);
		
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
	if (typeof(publicKey) != "undefined") {
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(publicKey.getComponent(Key.MODULUS))));
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(publicKey.getComponent(Key.EXPONENT))));
	} else {
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
	}
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));		// Private Exponent not at interface for CRT format
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_P))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_Q))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_DP1))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_DQ1))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_PQ))));

	return rsaPrivateKey.getBytes();
}



/**
 * Encode a given GP RSA private key as specified by the PKCS#8 format
 *
 * @param {Key} the private key object that should be encoded
 * @return the encoded PKCS#8 private key
 * @type ByteString
 */
PKCS8.encodeRSAKeyUsingPKCS8Format = function(privateKey, publicKey) {
	var privateKeyInfo = new ASN1(ASN1.SEQUENCE);
	
	// Set the version number - must be zero
	privateKeyInfo.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX)));
	
	var privateKeyAlgorithm = new ASN1(ASN1.SEQUENCE);
	privateKeyAlgorithm.add(new ASN1(ASN1.OBJECT_IDENTIFIER, PKCS8.rsaEncryption));
	privateKeyAlgorithm.add(new ASN1(ASN1.NULL));
	
	// encode the key information
	privateKeyInfo.add(privateKeyAlgorithm);
	
	// encode the private key
	var encodedPrivateKey = new ASN1(ASN1.OCTET_STRING, PKCS8.encodeRSAKey(privateKey, publicKey));
	
	privateKeyInfo.add(encodedPrivateKey);
	
//	print(privateKeyInfo);
	return privateKeyInfo.getBytes();	
}



/**
 * Encode a given GP private key as specified by the PKCS#8 format
 *
 * For now we only support the encoding of ECC private keys in a prime field
 *
 * @param {Key} the private key object that should be encoded
 * @return the encoded PKCS#8 private key
 * @type ByteString
 */
PKCS8.encodeKeyUsingPKCS8Format = function(privateKey, publicKey) {
	
	assert(privateKey.getType() == Key.PRIVATE);
	if (typeof(privateKey.getComponent(Key.ECC_P)) != "undefined") {
		return PKCS8.encodeECCKeyUsingPKCS8Format(privateKey);
	} else {
		return PKCS8.encodeRSAKeyUsingPKCS8Format(privateKey, publicKey);
	}
}



/**
 * Decode a given PKCS#8 ECC private key from the given ByteString and create a GP key object
 *
 * For now we only support the decoding of ECC private keys in a prime field
 * 
 * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeECCKeyFromPKCS8Format = function(domainParameter, encodedKey) {
	
	var key = new Key();
	
	key.setType(Key.PRIVATE);
	
	key.setComponent(Key.ECC_D, encodedKey.get(1).value);
	
	// Decode the domain parameters
	var cofactor = domainParameter.get(0);
	key.setComponent(Key.ECC_H, cofactor.value);
	
	var order = domainParameter.get(1).get(1);
	key.setComponent(Key.ECC_P, PKCS8.stripLeadingZeros(order.value));
	
	var coeff_A = domainParameter.get(2).get(0);
	key.setComponent(Key.ECC_A, coeff_A.value);
	
	var coeff_B = domainParameter.get(2).get(1);
	key.setComponent(Key.ECC_B, coeff_B.value);
	
	var generatorPoint = domainParameter.get(3).value;
	
	var coordinates = PKCS8.decodeUncompressedECPoint(generatorPoint);
	
	key.setComponent(Key.ECC_GX, coordinates.x);
	key.setComponent(Key.ECC_GY, coordinates.y);
	
	var groupOrder = domainParameter.get(4);
	
	key.setComponent(Key.ECC_N, PKCS8.stripLeadingZeros(groupOrder.value));
	
	return key;	
}



/**
 * Decode a given PKCS#8 RSA private key from the given ByteString and create a GP key object
 *
 * @param {ByteString} the private key object in PKCS#8 format
 * @param {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * @param {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeRSAKeyFromPKCS8Format = function(algparam, privateKey) {
	
	var key = new Key();
	
	key.setType(Key.PRIVATE);
	
	assert(algparam.tag == ASN1.NULL);
	assert(!algparam.isconstructed);
	assert(algparam.length == 0);
	
	assert(privateKey.tag == ASN1.SEQUENCE);
	assert(privateKey.isconstructed);
	assert(privateKey.elements >= 9);
	
	for (var i = 0; i < 9; i++) {
		var e = privateKey.get(i);
		assert(e.tag == ASN1.INTEGER);
		assert(!e.isconstructed);
	}
	
	assert(privateKey.get(0).value.toUnsigned() == 0);
	
	var p = PKCS8.stripLeadingZeros(privateKey.get(4).value);
	var l = p.length;
	key.setComponent(Key.CRT_P,   p);
	key.setComponent(Key.CRT_Q,   PKCS8.I2O(privateKey.get(5).value, l));
	key.setComponent(Key.CRT_DP1, PKCS8.I2O(privateKey.get(6).value, l));
	key.setComponent(Key.CRT_DQ1, PKCS8.I2O(privateKey.get(7).value, l));
	key.setComponent(Key.CRT_PQ,  PKCS8.I2O(privateKey.get(8).value, l));

	return key;	
}



/**
 * Decode a given PKCS#8 private key from the given ByteString and create a GP key object
 *
 * For now we only support the decoding of ECC private keys in a prime field
 * 
 * @param {ByteString} the private key object in PKCS#8 format
 * @return the GP key object
 * @type Key
 */
PKCS8.decodeKeyFromPKCS8Format = function(encodedKey) {
	var p8 = new ASN1(encodedKey);
	
	assert(p8.isconstructed);
	assert(p8.elements >= 3);
	
	var version = p8.get(0);
	assert(version.tag == ASN1.INTEGER);
	assert(version.value.toUnsigned() == 0);
	
	var pkai = p8.get(1);
	assert(pkai.tag == ASN1.SEQUENCE);
	assert(pkai.isconstructed);
	assert(pkai.elements == 2);
	var keytype = pkai.get(0);
	
	assert(keytype.tag == ASN1.OBJECT_IDENTIFIER);
	
	var algparam = pkai.get(1);
	
	var privateKey = p8.get(2);
	assert(privateKey.tag == ASN1.OCTET_STRING);
	if (privateKey.isconstructed) {
		privateKey = privateKey.get(0);
	} else {
		privateKey = new ASN1(privateKey.value);
	}
	
	if (keytype.value.equals(PKCS8.rsaEncryption)) {
		return PKCS8.decodeRSAKeyFromPKCS8Format(algparam, privateKey);
	} else if (keytype.value.equals(PKCS8.idEcPublicKey)) {
		return PKCS8.decodeECCKeyFromPKCS8Format(algparam, privateKey);
	} else {
		throw new Error("Unknown key type " + keytype.value.toString(OID));
	}
}



/**
 * Simple self-test
 */
PKCS8.test = function() {

	// Set OID for EC curve
	var ecCurve = "1.3.36.3.3.2.8.1.1.7";
    
    var crypto = new Crypto("BC");
    
    // Create empty public key object
    var pubKey = new Key();
    pubKey.setType(Key.PUBLIC);
    pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString(ecCurve, OID)); 

    // Create empty private key object
    var priKey = new Key();
    priKey.setType(Key.PRIVATE);
    priKey.setComponent(Key.ECC_CURVE_OID, new ByteString(ecCurve, OID)); 
    
    // Generate key pair
    crypto.generateKeyPair(Crypto.EC, pubKey, priKey);
	       
    // Encode
    var p8Key = PKCS8.encodeKeyUsingPKCS8Format(priKey);
    
    // Decode
    var decodedKeyObject = PKCS8.decodeKeyFromPKCS8Format(p8Key);
    
    // Compare
    assert(decodedKeyObject.getComponent(Key.ECC_D).equals(priKey.getComponent(Key.ECC_D)));
    
    assert(decodedKeyObject.getComponent(Key.ECC_GX).equals(priKey.getComponent(Key.ECC_GX)));
    assert(decodedKeyObject.getComponent(Key.ECC_GY).equals(priKey.getComponent(Key.ECC_GY)));
    assert(decodedKeyObject.getComponent(Key.ECC_A).equals(pubKey.getComponent(Key.ECC_A)));
    assert(decodedKeyObject.getComponent(Key.ECC_B).equals(pubKey.getComponent(Key.ECC_B)));
     
    // Encode
    var refp8Key = PKCS8.encodeKeyUsingPKCS8Format(decodedKeyObject);
	
    // Compare
    assert(p8Key.equals(refp8Key));	
	
	
    // Create empty public key object
	var pubKey = new Key();
    pubKey.setType(Key.PUBLIC);
    pubKey.setSize(1024); 

    // Create empty private key object
    var priKey = new Key();
    priKey.setType(Key.PRIVATE);
    
    // Generate key pair
    crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);
	       
    // Encode
    var p8Key = PKCS8.encodeKeyUsingPKCS8Format(priKey);
    
    // Decode
    var decodedKeyObject = PKCS8.decodeKeyFromPKCS8Format(p8Key);
    
    // Compare
    assert(decodedKeyObject.getComponent(Key.CRT_P).equals(priKey.getComponent(Key.CRT_P)));
    assert(decodedKeyObject.getComponent(Key.CRT_Q).equals(priKey.getComponent(Key.CRT_Q)));
    assert(decodedKeyObject.getComponent(Key.CRT_DP1).equals(priKey.getComponent(Key.CRT_DP1)));
    assert(decodedKeyObject.getComponent(Key.CRT_DQ1).equals(priKey.getComponent(Key.CRT_DQ1)));
    assert(decodedKeyObject.getComponent(Key.CRT_PQ).equals(priKey.getComponent(Key.CRT_PQ)));

    // Encode
    var refp8Key = PKCS8.encodeKeyUsingPKCS8Format(decodedKeyObject);
	
    // Compare
    assert(p8Key.equals(refp8Key));	
}
<?xml version="1.0" encoding="UTF-8"?>
<FileStructure arrayElement="EF" arrayIndex="#">
    <EF fid="2F00" format="asn1" name="EF_DIR" />
    <EF fid="2F01" format="asn1" name="EF_ATR" />
    <EF fid="0030" format="asn1" name="EF_ARR" />
    <EF fid="5030" format="asn1" name="EF_5030" />
    <EF fid="5031" format="asn1" name="EF_OD" />
    <EF fid="5032" format="asn1" name="EF_CIAInfo" />
    <EF fid="5033" format="asn1" name="EF_5033" />
    <EF fid="5034" format="asn1" name="EF_5034" />
    <EF fid="5035" format="asn1" name="EF_PrKD" />
    <EF fid="5036" format="asn1" name="EF_PuKD" />
    <EF fid="5037" format="asn1" name="EF_AOD" />
    <EF fid="5038" format="asn1" name="EF_CD" />
    <EF fid="5039" format="asn1" name="EF_DCOD" />
</FileStructure>    
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Utility class for Elliptic Curve Cryptography
 */


function ECCUtils() {
}



/**
 * Wrap a ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279
 *
 * @param signature ByteString containing the concatenation of r and s as unsigned integer values
 * @returns ASN.1 SEQUENCE objects containing two signed integer r and s
 */
ECCUtils.wrapSignature = function(signature) {
	var len = signature.length / 2;

	// r and s are unsigned big integer. We might need to pad a zero for ASN.1 INTEGER which is signed
	var r = signature.bytes(0, len);
	if (r.byteAt(0) >= 0x80) {
		r = ByteString.valueOf(0, 1).concat(r);
	}

	var s = signature.bytes(len, len);
	if (s.byteAt(0) >= 0x80) {
		s = ByteString.valueOf(0, 1).concat(s);
	}

	var t = new ASN1(ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.INTEGER, r));
	t.add(new ASN1(ASN1.INTEGER, s));

	return t.getBytes();
}



/**
 * Integer to octet string conversion
 */
ECCUtils.I2O = function(value, length) {
	if (value.length > length) {
		value = value.right(length);
	}
	while (value.length < length) {
		value = ECCUtils.PAD.left((length - value.length - 1 & 15) + 1).concat(value);
	}
	return value;
}
ECCUtils.PAD = new ByteString("00000000000000000000000000000000", HEX);



/**
 * Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
 * of the unsigned integer r and s
 *
 * @param signature TLV encoded signature
 * @returns concatenation of r and s
 */
ECCUtils.unwrapSignature = function(signature, keylen) {
	var t = new ASN1(signature);
	if (typeof(keylen) != "undefined") {
		var r = ECCUtils.I2O(t.get(0).value, keylen);
		var s = ECCUtils.I2O(t.get(1).value, keylen);
	} else {
		var r = t.get(0).value;
		if (r.byteAt(0) == 00)
			r = r.bytes(1);

		var s = t.get(1).value;
		if (s.byteAt(0) == 00)
			s = s.bytes(1);
	}

	return r.concat(s);
}



/**
 * Decode domain parameter from ECParameters
 *
 * <pre>
 *	ECParameters ::= SEQUENCE {
 *		version INTEGER{ecpVer1(1)} (ecpVer1),
 *		fieldID FieldID,
 *		curve Curve,
 *		base ECPoint,
 *		order INTEGER,
 *		cofactor INTEGER OPTIONAL,
 *		...
 *	}
 *
 *	Curve ::= SEQUENCE {
 *		a FieldElement,
 *		b FieldElement,
 *		seed BIT STRING OPTIONAL
 *	}
 *
 *	FieldElement ::= OCTET STRING
 *	ECPoint ::= OCTET STRING
 *	FieldID ::= SEQUENCE {
 *		fieldType OBJECT IDENTIFIER,
 *		parameters ANY DEFINED BY fieldType
 *	}
 *	prime-field OBJECT IDENTIFIER ::= { ansi-x9-62 fieldType(1) 1 }
 *	Prime-p ::= INTEGER
 * </pre>
 */
ECCUtils.decodeECParameters = function(tlv) {
	assert(tlv.tag == ASN1.SEQUENCE);

	var key = new Key();
	key.setType(Key.PUBLIC);

	// version
	assert(tlv.get(0).value.toSigned() == 1);

	// fieldID
	assert(tlv.get(1).tag == ASN1.SEQUENCE);
	assert(tlv.get(1).get(1).tag = ASN1.INTEGER);

	var prime = tlv.get(1).get(1).value;
	if (prime.byteAt(0) == 0) {		// Strip leading zero byte
		prime = prime.bytes(1);
	}
	key.setComponent(Key.ECC_P, prime);

	// curve
	assert(tlv.get(2).tag == ASN1.SEQUENCE);
	assert(tlv.get(2).get(0).tag == ASN1.OCTET_STRING);

	var coeff_A = tlv.get(2).get(0);
	key.setComponent(Key.ECC_A, coeff_A.value);

	var coeff_B = tlv.get(2).get(1);
	key.setComponent(Key.ECC_B, coeff_B.value);

	// base
	assert(tlv.get(3).tag == ASN1.OCTET_STRING);
	var pkbin = tlv.get(3).value;
	assert(pkbin.byteAt(0) == 4);
	pkbin = pkbin.bytes(1);

	key.setComponent(Key.ECC_GX, pkbin.left(pkbin.length >> 1));
	key.setComponent(Key.ECC_GY, pkbin.right(pkbin.length >> 1));

	// order
	assert(tlv.get(4).tag == ASN1.INTEGER);
	var groupOrder = tlv.get(4).value;
	if (groupOrder.byteAt(0) == 0) {		// Strip leading zero byte
		groupOrder = groupOrder.bytes(1);
	}
	key.setComponent(Key.ECC_N, groupOrder);

	// cofactor
	if (tlv.elements > 5) {
		assert(tlv.get(5).tag == ASN1.INTEGER);
		var cofactor = tlv.get(0).value;
		if (cofactor.byteAt(0) == 0) {		// Strip leading zero byte
			cofactor = cofactor.bytes(1);
		}
		key.setComponent(Key.ECC_H, cofactor);
	}

	return key;
}



ECCUtils.ECParametersToString = function(key) {
	var str = "EC Parameter:\n";

	str += "  prime " + key.getComponent(Key.ECC_P) + "\n";
	str += "  curve a " + key.getComponent(Key.ECC_A) + "\n";
	str += "  curve b " + key.getComponent(Key.ECC_B) + "\n";
	str += "  generator x " + key.getComponent(Key.ECC_GX) + "\n";
	str += "  generator y " + key.getComponent(Key.ECC_GY) + "\n";
	str += "  order " + key.getComponent(Key.ECC_N) + "\n";
	str += "  cofactor " + key.getComponent(Key.ECC_H) + "\n";
	return str;
}



// List of object identifier used in Key.setComponent(ECC_CURVE_OID)

// Fp curves defined by ANSI X6.92
ECCUtils.prime192v1 = new ByteString("1.2.840.10045.3.1.1", OID);
ECCUtils.prime192v2 = new ByteString("1.2.840.10045.3.1.2", OID);
ECCUtils.prime192v3 = new ByteString("1.2.840.10045.3.1.3", OID);
ECCUtils.prime239v1 = new ByteString("1.2.840.10045.3.1.4", OID);
ECCUtils.prime239v2 = new ByteString("1.2.840.10045.3.1.5", OID);
ECCUtils.prime239v3 = new ByteString("1.2.840.10045.3.1.6", OID);
ECCUtils.prime256v1 = new ByteString("1.2.840.10045.3.1.7", OID);

// F2m curves defined by ANSI X6.92
ECCUtils.c2pnb163v1 = new ByteString("1.2.840.10045.3.0.1", OID);
ECCUtils.c2pnb163v2 = new ByteString("1.2.840.10045.3.0.2", OID);
ECCUtils.c2pnb163v3 = new ByteString("1.2.840.10045.3.0.3", OID);
ECCUtils.c2pnb176w1 = new ByteString("1.2.840.10045.3.0.4", OID);
ECCUtils.c2tnb191v1 = new ByteString("1.2.840.10045.3.0.5", OID);
ECCUtils.c2tnb191v2 = new ByteString("1.2.840.10045.3.0.6", OID);
ECCUtils.c2tnb191v3 = new ByteString("1.2.840.10045.3.0.7", OID);
ECCUtils.c2pnb208w1 = new ByteString("1.2.840.10045.3.0.10", OID);
ECCUtils.c2tnb239v1 = new ByteString("1.2.840.10045.3.0.11", OID);
ECCUtils.c2tnb239v2 = new ByteString("1.2.840.10045.3.0.12", OID);
ECCUtils.c2tnb239v3 = new ByteString("1.2.840.10045.3.0.13", OID);
ECCUtils.c2pnb272w1 = new ByteString("1.2.840.10045.3.0.16", OID);
ECCUtils.c2pnb304w1 = new ByteString("1.2.840.10045.3.0.17", OID);
ECCUtils.c2tnb359v1 = new ByteString("1.2.840.10045.3.0.18", OID);
ECCUtils.c2pnb368w1 = new ByteString("1.2.840.10045.3.0.19", OID);
ECCUtils.c2tnb431r1 = new ByteString("1.2.840.10045.3.0.20", OID);

// Fp curves defined by SECG
ECCUtils.secp224r1 = new ByteString("1.3.132.0.33", OID);
ECCUtils.secp256r1 = ECCUtils.prime256v1;
ECCUtils.secp384r1 = new ByteString("1.3.132.0.34", OID);
ECCUtils.secp521r1 = new ByteString("1.3.132.0.35", OID);

// F2m curves defined by SECG
ECCUtils.sect163r2 = new ByteString("1.3.132.0.15", OID);
ECCUtils.sect233r1 = new ByteString("1.3.132.0.27", OID);
ECCUtils.sect283r1 = new ByteString("1.3.132.0.17", OID);
ECCUtils.sect409r1 = new ByteString("1.3.132.0.37", OID);
ECCUtils.sect571r1 = new ByteString("1.3.132.0.39", OID);

ECCUtils.brainpoolP160r1 = new ByteString("1.3.36.3.3.2.8.1.1.1", OID);
ECCUtils.brainpoolP160t1 = new ByteString("1.3.36.3.3.2.8.1.1.2", OID);
ECCUtils.brainpoolP192r1 = new ByteString("1.3.36.3.3.2.8.1.1.3", OID);
ECCUtils.brainpoolP192t1 = new ByteString("1.3.36.3.3.2.8.1.1.4", OID);
ECCUtils.brainpoolP224r1 = new ByteString("1.3.36.3.3.2.8.1.1.5", OID);
ECCUtils.brainpoolP224t1 = new ByteString("1.3.36.3.3.2.8.1.1.6", OID);
ECCUtils.brainpoolP256r1 = new ByteString("1.3.36.3.3.2.8.1.1.7", OID);
ECCUtils.brainpoolP256t1 = new ByteString("1.3.36.3.3.2.8.1.1.8", OID);
ECCUtils.brainpoolP320r1 = new ByteString("1.3.36.3.3.2.8.1.1.9", OID);
ECCUtils.brainpoolP320t1 = new ByteString("1.3.36.3.3.2.8.1.1.10", OID);
ECCUtils.brainpoolP384r1 = new ByteString("1.3.36.3.3.2.8.1.1.11", OID);
ECCUtils.brainpoolP384t1 = new ByteString("1.3.36.3.3.2.8.1.1.12", OID);
ECCUtils.brainpoolP512r1 = new ByteString("1.3.36.3.3.2.8.1.1.13", OID);
ECCUtils.brainpoolP512t1 = new ByteString("1.3.36.3.3.2.8.1.1.14", OID);

/* Test all curve parameter
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime192v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime192v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime192v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime239v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime239v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime239v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime256v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb163v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb163v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb163v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb176w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb191v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb191v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb191v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb208w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb239v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb239v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb239v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb272w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb304w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb359v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb368w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb431r1);

var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp224r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp256r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp384r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp521r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect163r2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect233r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect283r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect409r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect571r1);

var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP160r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP160t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP192r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP192t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP224r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP224t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP256r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP256t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP320r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP320t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP384r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP384t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP512r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP512t1);
*/
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core elements of a test procedure
 */


//
// Constructor
// 
function TestProcedure(name, testgroup, parameter) {

	this.name = name;
	this.testgroup = testgroup;
	this.parameter = parameter;
//	print("TestProcedure constructor called");
}



//
// Log message to console
// 
TestProcedure.prototype.log = function(message) {
	this.testgroup.log(message);
//	print(message);
}



//
// Setup object for a test procedure
//
TestProcedure.prototype.setUp = function() {
//	this.log("TestProcedure.setUp() called");
}



//
// Remove residue from test procedure
// 
TestProcedure.prototype.tearDown = function() {
//	this.log("TestProcedure.tearDown() called");
}



//
// Verify that assertion is true
//
TestProcedure.prototype.assertTrue = function(result, message) {
	this.testgroup.assertTrue(result, message);
}



//
// Verify that expressions are equal
//
TestProcedure.prototype.assertEquals = function(first, second, message) {
	this.testgroup.assertEquals(first, second, message);
}



//
// Run all tests in a test procedure
//
TestProcedure.prototype.run = function() {
	var steps = new Array();
	
	for (f in this) {
		if (f.substr(0, 4) == "step") {
			if (this[f] instanceof Function) {
				steps.push(f);
			}
		}
	}

	steps.sort();
	
	for (var i = 0; i < steps.length; i++) {
		var step = steps[i].substr(4);
//		print("    Step " + step + " of procedure " +  this.name);
		this.setUp();
		this[steps[i]].call(this);
		this.tearDown();

		var testgroup = this.testgroup;
		testgroup.reportProgress(this.name, step);
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview A PKCS#10 generator class based on RFC5280
 */

load("pkixcommon.js");


/**
 * Create a PKCS#10 certificate request
 *
 * @class Class implementing a PKCS#10 certificate request
 * @constructor
 *
 * @param {Crypto} crypto the crypto provider to use for signing operations
 */
function PKCS10Generator(crypto) {
	this.crypto = crypto;
	this.reset();
}



/**
 * Resets all internal state variables.
 *
 */
PKCS10Generator.prototype.reset = function() {
	this.extensions = new Array();
	this.attributes = new Array();
}



/**
 * Sets the subject name.
 *
 * <p>The subject name must be a JavaScript object containing the properties:</p>
 * <ul>
 *  <li>C - the country</li>
 *  <li>O - the organization</li>
 *  <li>OU - the organization unit</li>
 *  <li>CN - the common name</li>
 * </ul>
 * <p>Example:</p>
 * <pre>
 *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 * </pre>
 * @see PKIXCommon.encodeName()
 * @param {Object} subject the subject name
 */
PKCS10Generator.prototype.setSubject = function(subject) {
	this.subject = subject;
}



/**
 * Sets the subjects public key
 *
 * <p>The methods accepts ECC and RSA Public Keys.</p>
 *
 * @param {Key} publicKey the subjects public key
 */
PKCS10Generator.prototype.setPublicKey = function(publicKey) {
	this.publicKey = publicKey;
}



/**
 * Sets the signature algorithm. Currently only Crypto.RSA is supported
 *
 * @param {Number} alg the signature algorithm, only Crypto.RSA supported
 */
PKCS10Generator.prototype.setSignatureAlgorithm = function(alg) {
	this.signatureAlgorithm = alg;
}



/**
 * Adds an extension to the certificate
 *
 * <p>The structure is defined as:</p>
 * <pre>
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *</pre>
 * @param {String} extnID the extensions object identifier
 * @param {ByteString} the extension value as ByteString
 */
PKCS10Generator.prototype.addExtension = function(extnID, extnValue) {
	var t = new ASN1("extension", ASN1.SEQUENCE,
				new ASN1("extnID", ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	t.add(new ASN1("extnValue", ASN1.OCTET_STRING, extnValue));
	this.extensions.push(t);
}



/**
 * Adds the key usage extension.
 *
 * <p>The following flags are defined:</p>
 * <pre>
 * PKCS10Generator.digitalSignature = 0x0080;
 * PKCS10Generator.nonRepudiation   = 0x0040;
 * PKCS10Generator.keyEncipherment  = 0x0020;
 * PKCS10Generator.dataEncipherment = 0x0010;
 * PKCS10Generator.keyAgreement     = 0x0008;
 * PKCS10Generator.keyCertSign      = 0x0004;
 * PKCS10Generator.cRLSign          = 0x0002;
 * PKCS10Generator.encipherOnly     = 0x0001;
 * PKCS10Generator.decipherOnly     = 0x8000;
 * </pre>
 * @param {Number} the key usage flags as combination of the flags defined above.
 */
PKCS10Generator.prototype.addKeyUsageExtension = function(flags) {
	var t = new ASN1(ASN1.BIT_STRING, PKIXCommon.bitstringForInteger(flags));
	this.addExtension("2.5.29.15", t.getBytes());
}

// Deprecated: Use PKIXCommon. instead
PKCS10Generator.digitalSignature	= 0x0080;
PKCS10Generator.nonRepudiation		= 0x0040;
PKCS10Generator.keyEncipherment		= 0x0020;
PKCS10Generator.dataEncipherment	= 0x0010;
PKCS10Generator.keyAgreement		= 0x0008;
PKCS10Generator.keyCertSign			= 0x0004;
PKCS10Generator.cRLSign				= 0x0002;
PKCS10Generator.encipherOnly		= 0x0001;
PKCS10Generator.decipherOnly		= 0x8000;



/**
 * Adds extended key usages
 *
 * @param {String[]} the list of extended key usage object identifier
 */
PKCS10Generator.prototype.addExtendedKeyUsageExtension = function(keyusages) {
	var t = new ASN1(ASN1.SEQUENCE);
	for (var i = 0; i < keyusages.length; i++) {
		t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(keyusages[i], OID)));
	}
	this.addExtension("id-ce-extKeyUsage", t.getBytes());
}



/**
 * Adds the BasicConstraints extension.
 *
 * @param {Boolean} cA the certificate belongs to a CA
 * @param {Number} pathLenConstraint the maximum number of subordinate CA certificates
 */
PKCS10Generator.prototype.addBasicConstraintsExtension = function(cA, pathLenConstraint) {
	var t = new ASN1("BasicConstraints",ASN1.SEQUENCE);
	if (cA) {
		t.add(new ASN1("cA", ASN1.BOOLEAN, new ByteString("FF", HEX)));
	}
	if (pathLenConstraint >= 0) {
		var bb = new ByteBuffer();
		bb.append(pathLenConstraint);
		t.add(new ASN1("pathLenConstraint", ASN1.INTEGER, bb.toByteString()));
	}
	this.addExtension("2.5.29.19", t.getBytes());
}



/**
 * Gets the subject name as TLV object
 *
 * @return the issuer RDNSequence
 * @type ASN1
 */
PKCS10Generator.prototype.getSubject = function() {
	return PKIXCommon.encodeName(this.subject);
}



/**
 * Gets the subject's public key as TLV object
 *
 * @return the subject's public key info
 * @type ASN1
 */
PKCS10Generator.prototype.getSubjectPublicKeyInfo = function() {
	if (this.publicKey.getComponent(Key.MODULUS)) {
		return PKIXCommon.createRSASubjectPublicKeyInfo(this.publicKey);
	} else {
		return PKIXCommon.createECSubjectPublicKeyInfo(this.publicKey, this.encodeECDomainParameter);
	}
}



/**
 * Gets the extension attribute as TLV object
 *
 * @return the certificate extensions
 * @type ASN1
 */
PKCS10Generator.prototype.getExtensions = function() {
	var t = new ASN1("extensions", ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549 1 9 14", OID)));
	var s = new ASN1("extensions", ASN1.SET);
	t.add(s);
	var l = new ASN1("extensions", ASN1.SEQUENCE);
	s.add(l);
	
	for (var i = 0; i < this.extensions.length; i++) {
		l.add(this.extensions[i]);
	}
	return t;
}



/**
 * Gets the attributes as TLV object
 *
 * @return the request attributes
 * @type ASN1
 */
PKCS10Generator.prototype.getAttributes = function() {
	var t = new ASN1("attributes", 0xA0);
	
	if (this.extensions.length > 0) {
		t.add(this.getExtensions());
	}
	
	for (var i = 0; i < this.attributes.length; i++) {
		t.add(this.attributes[i]);
	}
	
	return t;
}



/**
 * Gets the part of the request that will be signed
 *
 * @return the TBSCertificate part
 * @type ASN1
 */
PKCS10Generator.prototype.getTbsRequest = function() {
	var t = new ASN1("certificationRequestInfo", ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX)));
	t.add(this.getSubject());
	t.add(this.getSubjectPublicKeyInfo());
	t.add(this.getAttributes());
	return t;
}



/**
 * Gets the signature algorithm TLV object
 *
 * @return the signature algorithm object
 * @type ASN1
 */
PKCS10Generator.prototype.getSignatureAlgorithm = function() {
	var t = new ASN1("signatureAlgorithm", ASN1.SEQUENCE);

	if (this.signatureAlgorithm == Crypto.RSA) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1.2.840.113549.1.1.5", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else if (this.signatureAlgorithm == Crypto.RSA_SHA256) {
		t.add(new ASN1("algorithm", ASN1.OBJECT_IDENTIFIER, new ByteString("1 2 840 113549 1 1 11", OID)));
		t.add(new ASN1("parameters", ASN1.NULL, new ByteString("", HEX)));
	} else {
		throw new GPError("PKCS10Generator", GPError.INVALID_MECH, this.signatureAlgorithm, "Invalid algorithm");
	}
		
	return t;
}



/**
 * Generates the certificate.
 *
 * @return the generated certificate
 * @type ASN1
 */
PKCS10Generator.prototype.generateCertificationRequest = function(privateKey) {
	var request = new ASN1("certificationRequest", ASN1.SEQUENCE);
	
	var tbs = this.getTbsRequest();
	request.add(tbs);
	request.add(this.getSignatureAlgorithm());
	
	var signature = this.crypto.sign(privateKey, this.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString("00", HEX)).concat(signature);

	var signatureValue = new ASN1("signatureValue", ASN1.BIT_STRING, signature);
	request.add(signatureValue);
	
	return request;
}



function PKCS10GeneratorTest() {

	var crypto = new Crypto();
	
	var reqPrivateKey = new Key();
	reqPrivateKey.setType(Key.PRIVATE);

	var reqPublicKey = new Key();
	reqPublicKey.setType(Key.PUBLIC);
	reqPublicKey.setSize(1024);
	
	crypto.generateKeyPair(Crypto.RSA, reqPublicKey, reqPrivateKey);
	
	var x = new PKCS10Generator(crypto);

	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);

	var subject = [{C:"UT"}, {O:"Utopia CA"}, {OU:"ACME Corporation"}, {CN:"Joe Doe"} ];
	
	x.setSubject(subject);

	x.setPublicKey(reqPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );

	var req = x.generateCertificationRequest(reqPrivateKey);
	var fn = GPSystem.mapFilename("cert.csr", GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, req.getBytes());

	print(req);
	
	return req;
}
/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  X509Name - Class to support X500 Names
 */

// 	Name ::= CHOICE {
// 	     RDNSequence }
// 	
// 	RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
// 	
// 	RelativeDistinguishedName ::=
// 		SET OF AttributeTypeAndValue
// 	
// 	AttributeTypeAndValue ::= SEQUENCE {
// 		type     AttributeType,
// 		value    AttributeValue }
// 	
// 	AttributeType ::= OBJECT IDENTIFIER
// 	
// 	AttributeValue ::= ANY DEFINED BY AttributeType
   
   
function X509Name() {

	if (arguments.length == 1) {
		if (arguments[0] instanceof ASN1) {
			var seq = arguments[0];
			if (!seq.isconstructed) {
				throw new GPError("X509Name", GPError.INVALID_DATA, 1, "Name must be constructed");
			}

			var seq = seq.get(0);
			if (seq.tag != ASN1.SEQUENCE) {
				throw new GPError("X509Name", GPError.INVALID_DATA, 1, "RDNSequence must be SEQUENCE");
			}
			
			this.rdn = new Array();
			for (var i = 0; i < seq.elements; i++) {
				var set = seq.get(i)
//				print("RDN" + i + ": " + set);
				if (set.tag != ASN1.SET) {
					throw new GPError("X509Name", GPError.INVALID_DATA, 1, "RDNSequence must only contain SETs");
				}
				for (var j = 0; j < set.elements; j++) {
					var attr = set.get(j);
					if (attr.tag != ASN1.SEQUENCE) {
						throw new GPError("X509Name", GPError.INVALID_DATA, 1, "AttributeTypeAndValue must be SEQUENCE");
					}
					if (attr.elements != 2) {
						throw new GPError("X509Name", GPError.INVALID_DATA, 1, "AttributeTypeAndValue must have 2 elements");
					}
					var attrType = attr.get(0);
					if (attrType.tag != ASN1.OBJECT_IDENTIFIER) {
						throw new GPError("X509Name", GPError.INVALID_DATA, 1, "AttributeType must be OBJECT IDENTIFIER");
					}
					var oid = attrType.value.toString(HEX);
					var attrValue = attr.get(1);
//					print("Type " + oid + " = " + attrValue);
					this.rdn[oid] = attrValue;
				}
			}
		} else {
			throw new GPError("X509Name", GPError.INVALID_TYPE, 1, "Argument must be of type ASN1");
		}			
	}
}



function X509Name_hasRDN(oid) {
	return this.rdn[oid] != undefined;
}



function X509Name_getRDNAsString(oid) {

	var r = this.rdn[oid];
	if (r == undefined) {
		throw new GPError("X509Name", GPError.INVALID_INDEX,0,"No matching RDN found");
	}
	
	if (r.tag == ASN1.UTF8String) {
		return r.value.toString(UTF8);
	} else {
		return r.value.toString(ASCII);
	}
}



function X509Name_toString() {
	var result = "";
	
	if (this.hasRDN(X509Name.commonName)) {
		result += "CN=" + this.getRDNAsString(X509Name.commonName);
	}

	if (this.hasRDN(X509Name.organizationalUnitName)) {
		if (result.length > 0)
			result += ",";
			
		result += "OU=" + this.getRDNAsString(X509Name.organizationalUnitName);
	}

	if (this.hasRDN(X509Name.organizationName)) {
		if (result.length > 0)
			result += ",";
			
		result += "O=" + this.getRDNAsString(X509Name.organizationName);
	}

	if (this.hasRDN(X509Name.countryName)) {
		if (result.length > 0)
			result += ",";
			
		result += "C=" + this.getRDNAsString(X509Name.countryName);
	}

	return result;	
}


X509Name.name = "550429";
X509Name.surname = "550404";
X509Name.givenname = "55042A";
X509Name.initials = "55042B";
X509Name.generationQualifier = "55042C";
X509Name.commonName = "550403";
X509Name.localityName = "550407";
X509Name.stateOrProvinceName = "550408";
X509Name.organizationName = "55040A";
X509Name.organizationalUnitName = "55040B";
X509Name.title = "55040C";
X509Name.dnQualifier = "55042C";
X509Name.countryName = "550406";
X509Name.serialNumber = "550405";
X509Name.emailAddress = "2A864886F70D010901";

X509Name.prototype.toString = X509Name_toString;
X509Name.prototype.getRDNAsString = X509Name_getRDNAsString;
X509Name.prototype.hasRDN = X509Name_hasRDN;


/*
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Function to name tags contained in Access Rules (EF.ARR)
 */



//
// Identify tags in the Expanded Access Rule found in EF_ARR
//
function ARRDecorator(asn1) {
	var recurse = false;
	var crt = false;
	
	switch(asn1.tag) {
	case 0x80:
		asn1.setName("accessMode");
		break;
	case 0x81:
		asn1.setName("commandP2");
		break;
	case 0x82:
		asn1.setName("commandP1");
		break;
	case 0x83:
		asn1.setName("commandP1P2");
		break;
	case 0x84:
		asn1.setName("commandINS");
		break;
	case 0x85:
		asn1.setName("commandINSP2");
		break;
	case 0x86:
		asn1.setName("commandINSP1");
		break;
	case 0x87:
		asn1.setName("commandINSP1P2");
		break;
	case 0x88:
		asn1.setName("commandCLA");
		break;
	case 0x89:
		asn1.setName("commandCLAP2");
		break;
	case 0x8A:
		asn1.setName("commandCLAP1");
		break;
	case 0x8B:
		asn1.setName("commandCLAP1P2");
		break;
	case 0x8C:
		asn1.setName("commandCLAINS");
		break;
	case 0x8D:
		asn1.setName("commandCLAINSP2");
		break;
	case 0x8E:
		asn1.setName("commandCLAINSP1");
		break;
	case 0x8F:
		asn1.setName("commandCLAINSP1P2");
		break;
	case 0x90:
		asn1.setName("always");
		break;
	case 0x97:
		asn1.setName("never");
		break;
	case 0x9C:
		asn1.setName("stateMachineDesc");
		break;
	case 0x9E:
		asn1.setName("securityConditionByte");
		break;
	case 0xA4:
		asn1.setName("authentication(AT)");
		crt = true;
		break;
	case 0xB4:
		asn1.setName("secureMessagingMac(CT)");
		crt = true;
		break;
	case 0xB6:
		asn1.setName("secureMessaging(DST)");
		crt = true;
		break;
	case 0xB8:
		asn1.setName("secureMessagingEnc(CCT)");
		crt = true;
		break;
	case 0xA0:
		asn1.setName("or");
		recurse = true;
		break;
	case 0xA7:
		asn1.setName("not");
		recurse = true;
		break;
	case 0xAF:
		asn1.setName("and");
		recurse = true;
		break;
	}
	
	if (recurse) {
		for (var i = 0; i < asn1.elements; i++) {
			ARRDecorator(asn1.get(i));
		}
	}
	
	if (crt) {
		for (var i = 0; i < asn1.elements; i++) {
			CRTDecorator(asn1.get(i));
		}
	}
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  @fileoverview
 *  Classes to parse PKCS#15 data structures
 */



/**
 * Return the BIT STRING as integer value
 *
 * @param {ByteString} the ASN.1 BIT STRING to convert
 * @return the converted integer
 * @type Number
 */
function IntFromBitString(b) {
	assert(b.length < 5);
	var bits = b.bytes(1).toUnsigned();
	return bits << ((4 - b.length) << 3);
}

/*
print("0080 - ", IntFromBitString(new ByteString("0080", HEX)).toString(16));
print("0180 - ", IntFromBitString(new ByteString("0180", HEX)).toString(16));
print("0780 - ", IntFromBitString(new ByteString("0780", HEX)).toString(16));
print("078000 - ", IntFromBitString(new ByteString("078000", HEX)).toString(16));
print("07800000 - ", IntFromBitString(new ByteString("07800000", HEX)).toString(16));
*/



/**
 * Creates a PKCS#15 path from the encoded TLV structure
 *
 * @class <p>This class provides for access to PKCS#15 structures.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * Path ::= SEQUENCE {
 * 		efidOrPath OCTET STRING,
 *		index INTEGER (0..cia-ub-index) OPTIONAL,
 *		length [0] INTEGER (0..cia-ub-index) OPTIONAL
 *	}( WITH COMPONENTS {..., index PRESENT, length PRESENT}|
 * 	   WITH COMPONENTS {..., index ABSENT, length ABSENT})
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the path
 */
function PKCS15_Path(tlv) {
	assert(tlv.elements > 0);

	var t = tlv.get(0);
	assert(t.tag == ASN1.OCTET_STRING);

	t.setName("efidOrPath");
	this.efidOrPath = "";

	for (var i = 0; i < t.length; i += 2) {
		if (t.length - i >= 2) {
			this.efidOrPath += ":" + t.value.bytes(i, 2).toString(HEX);
		} else {
			this.efidOrPath += ":" + ByteString.valueOf(t.value.byteAt(i) >> 3).toString(HEX);
		}
	}

	if (tlv.elements == 3) {
		t = tlv.get(1);
		assert(t.tag == ASN1.INTEGER);
		assert(t.length > 0);
		t.setName("index");
		this.index = t.value.toSigned();

		t = tlv.get(2);
		assert(t.tag == 0x80);
		assert(t.length > 0);
		t.setName("length");
		this.length = t.value.toSigned();
	}
}



/**
 * Gets the absolute in the OCF format.
 *
 * @param {String} df the current directory
 * @return the path in OCF encoding
 * @type String
 */
PKCS15_Path.prototype.getAbsolutePath = function(df) {
	if (this.aid) {
		return this.aid + this.efidOrPath;
	}

	var p = this.efidOrPath;
	if (p.slice(0, 5) != ":3F00") {
		p = df + p;
	}

	return p;
}



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_Path.prototype.toString = function() {
	var str = "{";

	if (this.efidOrPath) {
		str += "efidOrPath=" + this.efidOrPath;
	}

	if (this.index) {
		str += ",index=" + this.index;
	}

	if (this.length) {
		str += ",length=" + this.length;
	}
	str += "}";
	return str;
}



/**
 * Creates a CIO DDO object from data usually stored in EF_DIR.
 *
 * @class <p>Class to decode CIO DDO objects.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CIODDO ::= SEQUENCE {
 * 		providerId OBJECT IDENTIFIER OPTIONAL,
 * 		odfPath Path OPTIONAL,
 *		ciaInfoPath [0] Path OPTIONAL,
 *		aid [APPLICATION 15] OCTET STRING (SIZE(1..16)),
 *		(CONSTRAINED BY {-- Must be an AID in accordance with ISO/IEC 7816-4--})
 *		OPTIONAL,
 *		... -- For future extensions
 * } -- Context tag 1 is historical and shall not be used
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO DDO
 */
function PKCS15_CIODDO(tlv) {
	assert(tlv.tag == 0x73);

	var i = 0;

	if (i < tlv.elements) {
		var t = tlv.get(i);
		if (t.tag == ASN1.OBJECT_IDENTIFIER) {
			this.providerId = t.toString();
			i++;
		}
	}

	if (i < tlv.elements) {
		var t = tlv.get(i);
		if (t.tag == ASN1.SEQUENCE) {
			this.odfPath = new PKCS15_Path(t);
			i++;
		}
	}

	if (i < tlv.elements) {
		var t = tlv.get(i);
		if (t.tag == 0xA0) {
			this.ciaInfoPath = new PKCS15_Path(t);
			i++;
		}
	}
}



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_CIODDO.prototype.toString = function() {
	var str = "{";

	if (this.providerId) {
		str += "providerId=" + this.providerId + ",\n";
	}

	if (this.odfPath) {
		str += "odfPath=" + this.odfPath + ",\n";
	}

	if (this.ciaInfoPath) {
		str += "ciaInfoPath=" + this.ciaInfoPath + ",\n";
	}
	str += "}";
	return str;
}



/**
 * Creates a structure to access an application template from EF_DIR.
 *
 * @class <p>This class provides for access to an application template.</p>
 * @constructor
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO DDO
 */
function PKCS15_ApplicationTemplate(tlv) {
	assert(tlv.tag == 0x61);
	assert(tlv.elements > 0);

	for (var i = 0; i < tlv.elements; i++) {
		var t = tlv.get(i);
		switch(t.tag) {
			case 0x4F:
				this.aid = t.value.toString(HEX);
				break;
			case 0x50:
				this.label = t.value.toString(UTF8);
				break;
			case 0x51:
				this.path = ":" + t.value.toString(HEX);
				break;
			case 0x73:
				this.ddo = new PKCS15_CIODDO(t);
				break;
		}
	}
}

/**
 * The application identifier for this application.
 * @type String
 */
PKCS15_ApplicationTemplate.prototype.aid = "";

/**
 * The application label for this application.
 * @type String
 */
PKCS15_ApplicationTemplate.prototype.label = "";

/**
 * The path for this application.
 * @type String
 */
PKCS15_ApplicationTemplate.prototype.path = "";

/**
 * The PKCS#15 Directory Data Object (DDO) for this application.
 * @type PKCS15_CIODDO
 */
PKCS15_ApplicationTemplate.prototype.ddo = "";

/**
 * The list of Cryptographic Information Objects (CIO).
 * @see PKCS15.readObjectListForApplication
 * @type PKCS15_CIO[]
 */
PKCS15_ApplicationTemplate.prototype.objlist = null;



/**
 * Convert the object to a human readable string
 */
PKCS15_ApplicationTemplate.prototype.toString = function() {
	var str = "{";

	if (this.aid) {
		str += "aid=" + this.aid + ",\n";
	}

	if (this.label) {
		str += "label=" + this.label + ",\n";
	}

	if (this.path) {
		str += "path=" + this.path + ",\n";
	}

	if (this.ddo) {
		str += "ddo=" + this.ddo + ",\n";
	}
	str += "}";
	return str;
}



/**
 * Creates a CIAInfo object.
 *
 * @class <p>Class to decode CIAInfo objects.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CIAInfo ::= SEQUENCE {
 *		version INTEGER {v1(0),v2(1)} (v1|v2,...),
 *		serialNumber OCTET STRING OPTIONAL,
 *		manufacturerID Label OPTIONAL,
 *		label [0] Label OPTIONAL,
 *		cardflags CardFlags,
 *		seInfo SEQUENCE OF SecurityEnvironmentInfo OPTIONAL,
 *		recordInfo [1] RecordInfo OPTIONAL,
 *		supportedAlgorithms [2] SEQUENCE OF AlgorithmInfo OPTIONAL,
 *		issuerId [3] Label OPTIONAL,
 *		holderId [4] Label OPTIONAL,
 *		lastUpdate [5] LastUpdate OPTIONAL,
 *		preferredLanguage PrintableString OPTIONAL, -- In accordance with IETF RFC 1766
 *		profileIndication [6] SEQUENCE OF ProfileIndication OPTIONAL,
 *		...
 *		} (CONSTRAINED BY { -- Each AlgorithmInfo.reference value shall be unique --})
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIAInfo
 */
function PKCS15_CIAInfo(tlv) {
	assert(tlv.tag == ASN1.SEQUENCE);
	assert(tlv.elements > 2);

	this.tlv = tlv;
	var i = 0;
	var t;

	tlv.setName("CIAInfo");

	// version
	t = tlv.get(i);
	assert(t.tag == ASN1.INTEGER);
	t.setName("version");
	this.version = t.value.toSigned();
	i++;

	// serialNumber
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.OCTET_STRING)) {
		t.setName("serialNumber");
		this.serialNumber = t.value;
		i++;
	}

	// manufacturerID
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.UTF8String)) {
		t.setName("manufacturerID");
		this.manufacturerID = t.value.toString(UTF8);
		i++;
	}

	// label
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0x80)) {
		t.setName("label");
		this.label = t.value.toString(UTF8);
		i++;
	}

	t = tlv.get(i);
	assert(t.tag == ASN1.BIT_STRING);
	if (t.length > 1) {
		this.cardflags = t.value.bytes(1,1).toUnsigned();
		t.setName("cardflags {" + this.getCardflagsAsString() + " }");
	} else {
		this.cardflags = 0;
	}
	i++;

	// seInfo SEQUENCE OF SecurityEnvironmentInfo OPTIONAL,
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.SEQUENCE)) {
		t.setName("seInfo");
		print("CIAInfo.seInfo not further decoded : " + t);
		this.seInfo = "### not implemented ###";
		i++;
	}

	// recordInfo [1] RecordInfo OPTIONAL,
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA1)) {
		t.setName("recordInfo");
		print("CIAInfo.recordInfo not further decoded : " + t);
		this.recordInfo = "### not implemented ###";
		i++;
	}

	// supportedAlgorithms [2] SEQUENCE OF AlgorithmInfo OPTIONAL,
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA2)) {
		t.setName("supportedAlgorithms");
		this.supportedAlgorithms = new Array();
		for (var j = 0; j < t.elements; j++) {
			var alg = new AlgorithmInfo(t.get(j));
			this.supportedAlgorithms.push(alg);
		}
		i++;
	}

	// issuerId [3] Label OPTIONAL,
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA3)) {
		t.setName("issuerId");
		print("CIAInfo.issuerId not further decoded : " + t);
		this.issuerId = "### not implemented ###";
		i++;
	}

	// holderId [4] Label OPTIONAL,
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA4)) {
		t.setName("holderId");
		print("CIAInfo.holderId not further decoded : " + t);
		this.holderId = "### not implemented ###";
		i++;
	}

	// lastUpdate [5] LastUpdate OPTIONAL,
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA5)) {
		t.setName("lastUpdate");
		print("CIAInfo.lastUpdate not further decoded : " + t);
		this.lastUpdate = "### not implemented ###";
		i++;
	}

	// preferredLanguage PrintableString OPTIONAL, -- In accordance with IETF RFC 1766
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.PrintableString)) {
		t.setName("preferredLanguage");
		this.preferredLanguage = t.value.toString(ASCII);
		i++;
	}

	// profileIndication [6] SEQUENCE OF ProfileIndication OPTIONAL,
	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA6)) {
		t.setName("profileIndicator");
		print("CIAInfo.profileIndicator not further decoded : " + t);
		this.profileIndication = "### not implemented ###";
		i++;
	}
}



/**
 * Gets the card flags as string of concatenated flags.
 * @return the string containing the flags separated by a blank
 * @type String
 */
PKCS15_CIAInfo.prototype.getCardflagsAsString = function() {
	return (this.cardflags & 0x80 ? " readonly" : "") +
	       (this.cardflags & 0x40 ? " authRequired" : "") +
	       (this.cardflags & 0x20 ? " prnGeneration" : "");
}



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_CIAInfo.prototype.toString = function() {
	var str = "CIAInfo { ";

	str += "version=" + this.version + ",\n";

	if (typeof(this.serialNumber) != "undefined") {
		str += "serialNumber=" + this.serialNumber + ",\n";
	}

	if (typeof(this.manufacturerID) != "undefined") {
		str += "manufacturerID=" + this.manufacturerID + ",\n";
	}

	if (typeof(this.label) != "undefined") {
		str += "label=" + this.label + ",\n";
	}

	str += "cardflags=" + this.getCardflagsAsString() + ",\n";

	if (typeof(this.supportedAlgorithms) != "undefined") {
		str += "supportedAlgorithms={\n";
		for (var i = 0; i < this.supportedAlgorithms.length; i++) {
			str += this.supportedAlgorithms[i].toString() + "\n";
		}
		str += "},\n";
	}

	if (typeof(this.preferredLanguage) != "undefined") {
		str += "preferredLanguage=" + this.preferredLanguage + ",\n";
	}

	str += "}";
	return str;
}



/**
 * Create an AlgorithmInfo object from TLV data
 *
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * AlgorithmInfo ::= SEQUENCE {
 *   reference Reference,
 *   algorithm CIO-ALGORITHM.&id({AlgorithmSet}),
 *   parameters CIO-ALGORITHM.&Parameters({AlgorithmSet}{@algorithm}),
 *   supportedOperations CIO-ALGORITHM.&Operations({AlgorithmSet}{@algorithm}),
 *   objId CIO-ALGORITHM.&objectIdentifier ({AlgorithmSet}{@algorithm}),
 *   algRef Reference OPTIONAL
 * }
 *
 * CIO-ALGORITHM ::= CLASS {
 *   &id INTEGER UNIQUE,
 *   &Parameters,
 *   &Operations Operations,
 *   &objectIdentifier OBJECT IDENTIFIER OPTIONAL
 *   } WITH SYNTAX {
 *   PARAMETERS &Parameters OPERATIONS &Operations ID &id [OID &objectIdentifier]
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the AlgorithmInfo
 */
function AlgorithmInfo(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 5);

		this.tlv = tlv;

		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName("reference");
		this.reference = t.value.toSigned();
		i++;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName("algorithm");
		this.algorithm = t.value.toSigned();
		i++;

		t = tlv.get(i);
		t.setName("parameters");
		this.parameters = t;
		i++;

		assert((t = tlv.get(i)).tag == ASN1.BIT_STRING);
		this.supportedOperations = t.value.bytes(1,1).toUnsigned();
		t.setName("supportedOperations {" + this.getOperationsAsString() + " }");
		i++;

		if (i < tlv.elements) {
			assert((t = tlv.get(i)).tag == ASN1.OBJECT_IDENTIFIER);
			t.setName("objId");
			this.objId = t.value.toString(OID);
			i++;
		}

		if (i < tlv.elements) {
			assert((t = tlv.get(i)).tag == ASN1.INTEGER);
			t.setName("algRef");
			this.algRef = t.value.toSigned();
			i++;
		}
	}
}



/**
 * Gets the operations flags as string of concatenated tokens.
 * @return the string containing the flags separated by a blank
 * @type String
 */
AlgorithmInfo.prototype.getOperationsAsString = function() {
	return (this.supportedOperations & 0x80 ? " compute-checksum" : "") +
           (this.supportedOperations & 0x40 ? " compute-signature" : "") +
           (this.supportedOperations & 0x20 ? " verify-checksum" : "") +
           (this.supportedOperations & 0x10 ? " verify-signature" : "") +
           (this.supportedOperations & 0x08 ? " encipher" : "") +
           (this.supportedOperations & 0x04 ? " decipher" : "") +
           (this.supportedOperations & 0x02 ? " hash" : "") +
           (this.supportedOperations & 0x01 ? " generate-key" : "");

}



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
AlgorithmInfo.prototype.toString = function() {
	var str = "AlgorithmInfo { ";

	if (typeof(this.reference) != "undefined") {
		str += "reference=" + this.reference + ",\n";
	}

	if (typeof(this.algorithm) != "undefined") {
		str += "algorithm=0x" + this.algorithm.toString(16) + ",\n";
	}

	if (typeof(this.parameters) != "undefined") {
		str += "parameters=" + this.parameters + ",\n";
	}

	if (typeof(this.supportedOperations) != "undefined") {
		str += "supportedOperations=" + this.getOperationsAsString() + ",\n";
	}

	if (typeof(this.objId) != "undefined") {
		str += "objId=" + this.objId + ",\n";
	}

	if (typeof(this.algRef) != "undefined") {
		str += "algRef=" + this.algRef + ",\n";
	}

	str += "}";

	return str;
}



/**
 * Create a Cryptographic Information Object (CIO)
 *
 * @class <p>This is the base class for all cryptographic objects in a PKCS#15 data structure.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CommonObjectAttributes ::= SEQUENCE {
 *		label Label OPTIONAL,
 *		flags CommonObjectFlags OPTIONAL,
 *		authId Identifier OPTIONAL,
 *		userConsent INTEGER (1..cia-ub-userConsent) OPTIONAL,
 *		accessControlRules SEQUENCE SIZE (1..MAX) OF AccessControlRule OPTIONAL,
 *		...
 *	} (CONSTRAINED BY {-- authId should be present if flags.private is set.
 *	-- It shall equal an authID in one authentication object in the AOD -- })
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 */
function PKCS15_CIO(tlv) {
	if (tlv && (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements >= 3);

		this.tlv = tlv;

		var coa = tlv.get(0);
		assert(coa.tag == ASN1.SEQUENCE);

		coa.setName("commonObjectAttributes");
		var i = 0;
		var t;

		if ((i < coa.elements) && ((t = coa.get(i)).tag == ASN1.UTF8String)) {
			t.setName("label");
			this.label = t.value.toString(UTF8);
			i++;
		}

		// D-Trust card has empty bitstring element
		if ((i < coa.elements) && ((t = coa.get(i)).tag == ASN1.BIT_STRING) && (t.value.length > 1)) {
			this.flags = t.value.bytes(1,1).toUnsigned();
			t.setName("flags {" + this.getFlagsAsString() + " }");
			i++;
		}

		if ((i < coa.elements) && ((t = coa.get(i)).tag == ASN1.OCTET_STRING)) {
			t.setName("authId");
			this.authId = t.value;
			i++;
		}

		if ((i < coa.elements) && ((t = coa.get(i)).tag == ASN1.INTEGER)) {
			t.setName("userConsent");
			this.userConsent = t.value.toSigned();
			i++;
		}

		if ((i < coa.elements) && ((t = coa.get(i)).tag == ASN1.SEQUENCE)) {
			t.setName("accessControlRules");
			this.accessControlRules = t.value;
			i++;
		}
	}
}



/**
 * Gets the common object flags as string of concatenated flags.
 * @return the string containing the flags separated by a blank
 * @type String
 */
PKCS15_CIO.prototype.getFlagsAsString = function() {
	return  (this.flags & 0x80 ? " private" : "") +
		(this.flags & 0x40 ? " modifiable" : "") +
		(this.flags & 0x20 ? " internal" : "");
}



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_CIO.prototype.toString = function() {
	var str = "CommonObjectAttributes { ";

	if (typeof(this.label) != "undefined") {
		str += "label=" + this.label + ",\n";
	}

	if (typeof(this.flags) != "undefined") {
		str += "flags=" + this.getFlagsAsString() + ",\n";
	}

	if (typeof(this.authId) != "undefined") {
		str += "authId=" + this.authId + ",\n";
	}

	if (typeof(this.userConsent) != "undefined") {
		str += "userConsent=" + this.userConsent + ",\n";
	}

	if (typeof(this.accessControlRules) != "undefined") {
		str += "accessControlRules=" + this.accessControlRules + ",\n";
	}

	str += "}";
	return str;
}



/**
 * Create a Common Key Attribute Object
 *
 * @class <p>This class adds common key attributes to the base CIO class.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CommonKeyAttributes ::= SEQUENCE {
 *		iD Identifier,
 *		usage KeyUsageFlags,
 *		native BOOLEAN DEFAULT TRUE,
 *		accessFlags KeyAccessFlags OPTIONAL,
 *		keyReference KeyReference OPTIONAL,
 *		startDate GeneralizedTime OPTIONAL,
 *		endDate [0] GeneralizedTime OPTIONAL,
 *		algReference [1] SEQUENCE OF Reference OPTIONAL,
 *		... -- For future extensions
 *		}
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CIO PKCS15_CIO is the base class
 */
function PKCS15_CommonKeyAttributes(tlv) {
	// Call superclass constructor
	PKCS15_CIO.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		tlv = tlv.get(1);
		tlv.setName("commonKeyAttributes");
		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.OCTET_STRING);
		t.setName("iD");
		this.iD = t.value;
		i++;

		assert((t = tlv.get(i)).tag == ASN1.BIT_STRING);
		this.usage = t.value.bytes(1).toUnsigned(true);
		t.setName("usage {" + this.getUsageAsString() + " }");
		i++;

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.BOOLEAN)) {
			t.setName("native");
			this.native_ = t.value.toUnsigned();
			i++;
		} else {
			this.native_ = true;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.BIT_STRING)) {
			this.accessFlags = t.value.bytes(1).toUnsigned(true);
			t.setName("accessFlags {" + this.getAccessFlagsAsString() + " }");
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
			t.setName("keyReference");
			this.keyReference = t.value.toSigned();
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.GeneralizedTime)) {
			t.setName("startDate");
			this.startDate = t.getDate();
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0x80)) {
			t.setName("endDate");
			this.endDate = t.getDate();
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA1)) {
			assert(t.isconstructed);
			t.setName("algReference");
			this.algReference = new Array();
			for (var j = 0; j < t.elements; j++) {
				assert(t.get(j).tag == ASN1.INTEGER);
				t.get(j).setName("reference");
				this.algReference.push(t.get(j).value.toSigned());
			}
			i++;
		}
	}
}

PKCS15_CommonKeyAttributes.prototype = new PKCS15_CIO();



/**
 * Gets the key usage flags as string of concatenated flags.
 * @return the string containing the flags separated by a blank
 * @type String
 */
PKCS15_CommonKeyAttributes.prototype.getUsageAsString = function() {
	return  (this.usage & 0x0080 ? " encipher" : "") +
		(this.usage & 0x0040 ? " decipher" : "") +
		(this.usage & 0x0020 ? " sign" : "") +
		(this.usage & 0x0010 ? " signRecover" : "") +
		(this.usage & 0x0008 ? " keyEncipher" : "") +
		(this.usage & 0x0004 ? " keyDecipher" : "") +
		(this.usage & 0x0002 ? " verify" : "") +
		(this.usage & 0x0001 ? " verifyRecover" : "") +
		(this.usage & 0x8000 ? " derive" : "") +
		(this.usage & 0x4000 ? " nonRepudiation" : "");
}



/**
 * Gets the key access flags as string of concatenated flags.
 * @return the string containing the flags separated by a blank
 * @type String
 */
PKCS15_CommonKeyAttributes.prototype.getAccessFlagsAsString = function() {
	return	(this.accessFlags & 0x80 ? " sensitive" : "") +
		(this.accessFlags & 0x40 ? " extractable" : "") +
		(this.accessFlags & 0x20 ? " alwaysSensitive" : "") +
		(this.accessFlags & 0x10 ? " neverExtractable" : "") +
		(this.accessFlags & 0x08 ? " cardGenerated" : "");
}



/**
 * Convert the object to a human readable string
 * @return content information
 * @type String
 */
PKCS15_CommonKeyAttributes.prototype.toString = function() {

	var str = PKCS15_CIO.prototype.toString.call(this);
	str += "\nCommonKeyAttributes { ";

	if (typeof(this.iD) != "undefined") {
		str += "iD=" + this.iD + ",\n";
	}

	if (typeof(this.usage) != "undefined") {
		str += "usage=" + this.getUsageAsString() + ",\n";
	}

	if (typeof(this.native_) != "undefined") {
		str += "native=" + this.native_ + ",\n";
	}

	if (typeof(this.accessFlags) != "undefined") {
		str += "accessFlags=" + this.getAccessFlagsAsString() + ",\n";
	}

	if (typeof(this.keyReference) != "undefined") {
		str += "keyReference=" + this.keyReference + ",\n";
	}

	if (typeof(this.startDate) != "undefined") {
		str += "startDate=" + this.startDate + ",\n";
	}

	if (typeof(this.endDate) != "undefined") {
		str += "endDate=" + this.endDate + ",\n";
	}

	if (typeof(this.algReference) != "undefined") {
		str += "algReference=" + this.algReference + ",\n";
	}

	str += "}";
	return str;
}



/**
 * Create a Common Private Key Attribute Object
 *
 * @class <p>This class adds common private key attributes to the common key attribute class.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CommonPrivateKeyAttributes ::= SEQUENCE {
 * name Name OPTIONAL,
 * keyIdentifiers [0] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 * generalName [1] GeneralNames OPTIONAL,
 * ... -- For future extensions
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CommonKeyAttributes PKCS15_CommonKeyAttributes is the base class
 */
function PKCS15_CommonPrivateKeyAttributes(tlv) {
	// Call superclass constructor
	PKCS15_CommonKeyAttributes.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var t = tlv.get(2);
		if (t.tag == 0xA0) {
			t.setName("subClassAttributes");

			assert(t.elements == 1);
			t = t.get(0);
			t.setName("commonPrivateKeyAttributes");

			var i = 0;
			if (t.elements > i) {
				print("### Not decoded ### " + t);
			}
		}
	}
}

PKCS15_CommonPrivateKeyAttributes.prototype = new PKCS15_CommonKeyAttributes();



/**
 * Create a Common Secret Key Attribute Object
 *
 * @class <p>This class adds common secret key attributes to the common key attribute class.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CommonSecretKeyAttributes ::= SEQUENCE {
 *   keyLen INTEGER OPTIONAL, -- keylength (in bits)
 *   -- For future extensions
 *  }
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CommonKeyAttributes PKCS15_CommonKeyAttributes is the base class
 */
function PKCS15_CommonSecretKeyAttributes(tlv) {
	// Call superclass constructor
	PKCS15_CommonKeyAttributes.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var t = tlv.get(2);
		if (t.tag == 0xA0) {
			t.setName("subClassAttributes");

			assert(t.elements == 1);
			t = t.get(0);
			t.setName("commonSecretKeyAttributes");

			var i = 0;
			var o = t.get(i++);
			assert(o.tag == ASN1.INTEGER);
			o.setName("keyLen");

			if (t.elements > i) {
				print("### Not decoded ### " + t);
			}
		}
	}
}

PKCS15_CommonSecretKeyAttributes.prototype = new PKCS15_CommonKeyAttributes();



/**
 * Create a Private Key Object
 *
 * @class <p>This class adds private key attributes to the common private key attribute class.</p>
 * <p>The class supports RSA and ECC keys.</p>
 * <p>RSA keys are decoded from the following ASN.1 structure:</p>
 * <pre>
 * PrivateRSAKeyAttributes ::= SEQUENCE {
 * value Path,
 * modulusLength INTEGER, -- modulus length in bits, e.g. 1024
 * keyInfo KeyInfo {NULL, PublicKeyOperations} OPTIONAL,
 * ... -- For future extensions
 * }
 * </pre>
 * <p>ECC keys are decoded from the following ASN.1 structure:</p>
 * <pre>
 * PrivateECKeyAttributes ::= SEQUENCE {
 * value Path,
 * keyInfo KeyInfo {Parameters, PublicKeyOperations} OPTIONAL,
 * ... -- For future extensions
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CommonPrivateKeyAttributes PKCS15_CommonPrivateKeyAttributes is the base class
 */
function PKCS15_PrivateKey(tlv) {
	// Call superclass constructor
	PKCS15_CommonPrivateKeyAttributes.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var t = tlv.get(tlv.elements - 1);

		assert(t.tag == 0xA1);
		assert(t.elements >= 1);
		t.setName("typeAttributes");

		t = t.get(0);

		switch(tlv.tag) {
		case 0x30: this.decodePrivateRSAKey(t); break;
		case 0xA0: this.decodePrivateECCKey(t); break;
		default:
			this.type = "PrivateKey"; break;
			print("### Not decoded ### " + t);
		}
	}
}

PKCS15_PrivateKey.prototype = new PKCS15_CommonPrivateKeyAttributes();



/**
 * Decodes the RSA key structure.
 *
 * @private
 * @param {ASN1} tlv the TLV structure
 */
PKCS15_PrivateKey.prototype.decodePrivateRSAKey = function(tlv) {
	this.type = "PrivateRSAKey";
	tlv.setName("privateRSAKeyAttributes");

	var t = tlv.get(0);
	this.value = new PKCS15_Path(t);
	t.setName("value");

	t = tlv.get(1);
	assert(t.tag == ASN1.INTEGER);
	this.modulusLength = t.value.toSigned();
	t.setName("modulusLength");

	if (tlv.elements > 2) {
		t = tlv.get(2);
		if (t.tag == ASN1.INTEGER) {
			t.setName("reference");
		} else {
			t.setName("paramsAndOps");
		}
	}
}



/**
 * Decodes the ECC key structure.
 *
 * @private
 * @param {ASN1} tlv the TLV structure
 */
PKCS15_PrivateKey.prototype.decodePrivateECCKey = function(tlv) {
	this.type = "PrivateECCKey";
	tlv.setName("privateECCKeyAttributes");

	var t = tlv.get(0);
	this.value = new PKCS15_Path(t);
	t.setName("value");

	if (tlv.elements > 1) {
		t = tlv.get(1);
		if (t.tag == ASN1.INTEGER) {
			t.setName("reference");
		} else {
			t.setName("paramsAndOps");
		}
	}
}



/**
 * Create a Secret Key Object
 *
 * @class <p>This class adds secret key attributes to the common secret key attribute class.</p>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CommonSecretKeyAttributes PKCS15_CommonSecretKeyAttributes is the base class
 */
function PKCS15_SecretKey(tlv) {
	// Call superclass constructor
	PKCS15_CommonSecretKeyAttributes.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var t = tlv.get(tlv.elements - 1);

		assert(t.tag == 0xA1);
		assert(t.elements >= 1);
		t.setName("typeAttributes");

		t = t.get(0);

		// ToDo: Decode GenericKeyAttributes
		this.type = "SecretKey";
		print("### Not decoded ### " + t);
	}
}

PKCS15_SecretKey.prototype = new PKCS15_CommonSecretKeyAttributes();



/**
 * Create a Common Certificate Attribute Object
 *
 * @class <p>This class adds common certificate attributes to the base CIO class.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CommonCertificateAttributes ::= SEQUENCE {
 * iD Identifier,
 * authority BOOLEAN DEFAULT FALSE,
 * identifier CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 * certHash [0] CertHash OPTIONAL,
 * trustedUsage [1] Usage OPTIONAL,
 * identifiers [2] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 * validity [4] Validity OPTIONAL,
 * ...
 * } -- Context tag [3] is reserved for historical reasons
 * NOTE PKCS #15 uses context tag [3].
 * Usage ::= SEQUENCE {
 * keyUsage KeyUsage OPTIONAL,
 * extKeyUsage SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER OPTIONAL,
 * ...
 * } (WITH COMPONENTS {..., keyUsage PRESENT} | WITH COMPONENTS {..., extKeyUsage PRESENT})
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CIO PKCS15_CIO is the base class
 */
function PKCS15_CommonCertificateAttributes(tlv) {
	// Call superclass constructor
	PKCS15_CIO.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var tlv = tlv.get(1);
		tlv.setName("commonCertificateAttributes");
		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.OCTET_STRING);
		t.setName("iD");
		this.iD = t.value;
		i++;

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.BOOLEAN)) {
			t.setName("authority");
			this.authority = (t.value.toUnsigned() > 0);
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.SEQUENCE)) {
			t.setName("identifier");
			this.identifier = t.value;
			i++;
		}

		// Uncommon fields missing
	}
}

PKCS15_CommonCertificateAttributes.prototype = new PKCS15_CIO();



/**
 * Convert the object to a human readable string
 * @return content information
 * @type String
 */
PKCS15_CommonCertificateAttributes.prototype.toString = function() {
	var str = PKCS15_CIO.prototype.toString.call(this);
	str += "\nCommonCertificateAttributes { ";

	str += "iD=" + this.iD + ",\n";

	if (typeof(this.authority) != "undefined") {
		str += "authority=" + this.authority + ",\n";
	}

	if (typeof(this.identifier) != "undefined") {
		str += "identifier=" + this.identifier + ",\n";
	}
	str += "}";
	return str;
}



/**
 * Create a Certificate Attribute Object
 *
 * @class <p>This class adds X.509 certificate attributes to the common certificate attribute class.</p>
 * <p>The class decodes the following ASN.1 syntax for X.509 certificates:</p>
 * <pre>
 * X509CertificateAttributes ::= SEQUENCE {
 * value ObjectValue { Certificate },
 * subject Name OPTIONAL,
 * issuer [0] Name OPTIONAL,
 * serialNumber CertificateSerialNumber OPTIONAL,
 * ... -- For future extensions
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CommonCertificateAttributes PKCS15_CommonCertificateAttributes is the base class
 */
function PKCS15_Certificate(tlv) {
	// Call superclass constructor
	PKCS15_CommonCertificateAttributes.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {

		var t = tlv.get(2);
		assert(t.tag == 0xA1);
		assert(t.elements == 1);
		t.setName("typeAttributes");
		t = t.get(0);
		t.setName("certificateAttributes");

		switch(tlv.tag) {
		case 0x30: this.decodeX509Certificate(t); break;
		default:
			this.type = "Certificate"; break;
			print("### Not decoded ### " + t);
		}
//		print("Certificate:" + t);
	}
}

PKCS15_Certificate.prototype = new PKCS15_CommonCertificateAttributes();



/**
 * Decodes a X.509 certificate structure.
 *
 * @private
 * @param {ASN1} the tlv structure containing the certificate data
 */
PKCS15_Certificate.prototype.decodeX509Certificate = function(tlv) {
	this.type = "X509Certificate";
	tlv.setName("x509CertificateAttributes");

	var t = tlv.get(0);
	t.setName("value");

	if (t.tag == ASN1.SEQUENCE) {
		this.value = new PKCS15_Path(t);
	}

	var i = 1;

	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.SEQUENCE)) {
		t.setName("subject");
		i++;
	}

	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0xA0)) {
		t.setName("issuer");
		i++;
	}

	if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
		t.setName("serialNumber");
		this.serialNumber = t.value;
		i++;
	}
}



/**
 * Create a Common Authentication Object Attribute Object
 *
 * @class <p>This class adds common authentication object attributes to the base CIO class.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CommonAuthenticationObjectAttributes ::= SEQUENCE {
 *    authId Identifier OPTIONAL,
 *    authReference Reference OPTIONAL,
 *    seIdentifier [0] Reference OPTIONAL,
 *    ... -- For future extensions
 * }
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CIO PKCS15_CIO is the base class
 */
function PKCS15_CommonAuthenticationObjectAttributes(tlv) {
	// Call superclass constructor
	PKCS15_CIO.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var tlv = tlv.get(1);
		tlv.setName("commonAuthenticationObjectAttributes");
//		print("CommonAuthenticationObjectAttributes:" + tlv);

		var i = 0;
		var t;

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.OCTET_STRING)) {
			t.setName("authIdThis");
			this.authIdThis = t.value;
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
			t.setName("authReference");
			this.authReference = t.value.toSigned();
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0x80)) {
			t.setName("seIdentifier");
			this.seIdentifier = t.value.toSigned();
			i++;
		}
	}
}

PKCS15_CommonAuthenticationObjectAttributes.prototype = new PKCS15_CIO();



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_CommonAuthenticationObjectAttributes.prototype.toString = function() {

	var str = PKCS15_CIO.prototype.toString.call(this);
	str += "\nCommonAuthenticationObjectAttributes { ";

	if (typeof(this.authIdThis) != "undefined") {
		str += "authIdThis=" + this.authIdThis + ",\n";
	}

	if (typeof(this.authReference) != "undefined") {
		str += "authReference=" + this.authReference + ",\n";
	}

	if (typeof(this.seIdentifier) != "undefined") {
		str += "seIdentifier=" + this.seIdentifier + ",\n";
	}

	if (typeof(this.pwd) != "undefined") {
		str += "pwd=" + this.pwd.toString() + ",\n";
	}

	str += "}";
	return str;
}



/**
 * Create an Authentication Object
 *
 * @class <p>This class adds authentication object attributes to the common authentication object class.</p>
 * <p>The class supports password objects.</p>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CommonAuthenticationObjectAttributes PKCS15_CommonAuthenticationObjectAttributes is the base class
 */
function PKCS15_AuthenticationObject(tlv) {
	// Call superclass constructor
	PKCS15_CommonAuthenticationObjectAttributes.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var t = tlv.get(tlv.elements - 1);
		assert(t.tag == 0xA1);
		assert(t.elements == 1);
		t.setName("typeAttribute");
		t = t.get(0);

		switch(t.tag) {
		case 0x30:
			this.pwd = new PKCS15_PasswordAuthenticationObject(t);
			break;
		default:
			print("### Unsupported authentication object type : " + t);
			break;
		}
	}
}

PKCS15_AuthenticationObject.prototype = new PKCS15_CommonAuthenticationObjectAttributes();



/**
 * Create a Password Authentication Object
 *
 * @class <p>This class supports password authentication objects.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * PasswordAttributes ::= SEQUENCE {
 *	pwdFlags PasswordFlags,
 *	pwdType PasswordType,
 *	minLength INTEGER (cia-lb-minPasswordLength..cia-ub-minPasswordLength),
 *	storedLength INTEGER (0..cia-ub-storedPasswordLength),
 *	maxLength INTEGER OPTIONAL,
 *	pwdReference [0] Reference DEFAULT 0,
 *	padChar OCTET STRING (SIZE(1)) OPTIONAL,
 *	lastPasswordChange GeneralizedTime OPTIONAL,
 *	path Path OPTIONAL,
 *	... -- For future extensions
 * }
 * PasswordFlags ::= BIT STRING {
 *	case-sensitive (0),
 *	local (1),
 *	change-disabled (2),
 *	unblock-disabled (3),
 *	initialized (4),
 *	needs-padding (5),
 *	unblockingPassword (6),
 *	soPassword (7),
 *	disable-allowed (8),
 *	integrity-protected (9),
 *	confidentiality-protected (10),
 *	exchangeRefData (11)
 *	} (CONSTRAINED BY { -- "unblockingPassword" and "soPassword" cannot both be set -- })
 * PasswordType ::= ENUMERATED {bcd, ascii-numeric, utf8, half-nibble-bcd, iso9564-1, ...}
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 */
function PKCS15_PasswordAuthenticationObject(tlv) {
	if (tlv && (tlv instanceof ASN1)) {

		tlv.setName("passwordAuthenticationObject");

		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.BIT_STRING);
		this.pwdFlags = IntFromBitString(t.value);
		t.setName("pwdFlags {" + this.getPwdFlagsAsString() + " }");
		i++;

		assert((t = tlv.get(i)).tag == ASN1.ENUMERATED);
		this.pwdType = t.value.toUnsigned();
		t.setName("pwdType {" + this.getPwdTypeAsString() + " }");
		i++;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName("minLength");
		this.minLength = t.value.toSigned();
		i++;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName("storedLength");
		this.storedLength = t.value.toSigned();
		i++;

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
			t.setName("maxLength");
			this.maxLength = t.value.toSigned();
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == 0x80)) {
			t.setName("pwdReference");
			this.pwdReference = t.value.toSigned();
			i++;
		}
	}
}



/**
 * Gets the password flags as string of concatenated flags.
 * @return the string containing the flags separated by a blank
 * @type String
 */
PKCS15_PasswordAuthenticationObject.prototype.getPwdFlagsAsString = function() {
	return	(this.pwdFlags & 0x800000 ? " case-sensitive" : "") +
		(this.pwdFlags & 0x400000 ? " local" : "") +
		(this.pwdFlags & 0x200000 ? " change-disabled" : "") +
		(this.pwdFlags & 0x100000 ? " unblock-disabled" : "") +
		(this.pwdFlags & 0x080000 ? " initialized" : "") +
		(this.pwdFlags & 0x040000 ? " needs-padding" : "") +
		(this.pwdFlags & 0x020000 ? " unblockingPassword" : "") +
		(this.pwdFlags & 0x010000 ? " soPassword" : "") +
		(this.pwdFlags & 0x008000 ? " disable-allowed" : "") +
		(this.pwdFlags & 0x004000 ? " integrity-protected" : "") +
		(this.pwdFlags & 0x002000 ? " confidentiality-protected" : "") +
		(this.pwdFlags & 0x001000 ? " exchangeRefData" : "") +
		(this.pwdFlags & 0x000800 ? " resetRetryCounter1" : "") +
		(this.pwdFlags & 0x000400 ? " resetRetryCounter2" : "");
}



/**
 * Gets the password type.
 * @return the string containing the password type (BCD, ASCII-NUMERIC, UTF8, HALF-NIBBLE-BCD or ISO9564-1)
 * @type String
 */
PKCS15_PasswordAuthenticationObject.prototype.getPwdTypeAsString = function() {

	var str = "" + this.pwdType;
	switch(this.pwdType) {
		case  0 : str = "BCD"; break;
		case  1 : str = "ASCII-NUMERIC"; break;
		case  2 : str = "UTF8"; break;
		case  3 : str = "HALF-NIBBLE-BCD"; break;
		case  4 : str = "ISO9564-1"; break;
	}
	return str;
}



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_PasswordAuthenticationObject.prototype.toString = function() {
	var str = "Password { ";

	if (typeof(this.pwdFlags) != "undefined") {
		str += "pwdFlags=" + this.getPwdFlagsAsString() + ",\n";
	}

	if (typeof(this.pwdType) != "undefined") {
		str += "pwdType=" + this.getPwdTypeAsString() + ",\n";
	}

	if (typeof(this.minLength) != "undefined") {
		str += "minLength=" + this.minLength + ",\n";
	}

	if (typeof(this.storedLength) != "undefined") {
		str += "storedLength=" + this.storedLength + ",\n";
	}

	if (typeof(this.maxLength) != "undefined") {
		str += "maxLength=" + this.maxLength + ",\n";
	}

	if (typeof(this.pwdReference) != "undefined") {
		str += "pwdReference=" + this.pwdReference + ",\n";
	}

	str += "}";
	return str;
}



/**
 * Create a Common Data Container Object Attribute Object
 *
 * @class <p>This class adds common data container attributes to the base CIO class.</p>
 * <p>The class decodes the following ASN.1 syntax:</p>
 * <pre>
 * CommonDataContainerObjectAttributes ::= SEQUENCE {
 * 		applicationName Label OPTIONAL,
 * 		applicationOID OBJECT IDENTIFIER OPTIONAL,
 * 		iD Identifier OPTIONAL,
 * 		... -- For future extensions
 * 		} (WITH COMPONENTS {..., applicationName PRESENT}
 * 		| WITH COMPONENTS {..., applicationOID PRESENT})
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CIO PKCS15_CIO is the base class
 */
function PKCS15_CommonDataContainerObjectAttributes(tlv) {
	// Call superclass constructor
	PKCS15_CIO.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {
		var tlv = tlv.get(1);
		tlv.setName("commonDataContainerObjectAttributes");
		var i = 0;
		var t;

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.UTF8String)) {
			t.setName("applicationName");
			this.applicationName = t.value.toString(UTF8);
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.OBJECT_IDENTIFIER)) {
			t.setName("applicationOID");
			this.applicationOID = t.value.toString(OID);
			i++;
		}

		if ((i < tlv.elements) && ((t = tlv.get(i)).tag == ASN1.ASN1.OCTET_STRING)) {
			t.setName("iD");
			this.iD = t.value;
			i++;
		}
	}
}

PKCS15_CommonDataContainerObjectAttributes.prototype = new PKCS15_CIO();



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_CommonDataContainerObjectAttributes.prototype.toString = function() {

	var str = PKCS15_CIO.prototype.toString.call(this);
	str += "\nCommonDataContainerObjectAttributes { ";

	if (typeof(this.applicationName) != "undefined") {
		str += "applicationName=" + this.applicationName + ",\n";
	}

	if (typeof(this.applicationOID) != "undefined") {
		str += "applicationOID=" + this.applicationOID + ",\n";
	}

	if (typeof(this.iD) != "undefined") {
		str += "iD=" + this.iD + ",\n";
	}

	str += "}";
	return str;
}



/**
 * Create a Data Container Object
 *
 * @class <p>This class adds data container objects to the common data container object attributes class.</p>
 * <p>The class decodes the following ASN.1 syntax for opaque data objects with indirect path reference:</p>
 * <pre>
 * OpaqueDOAttributes ::= ObjectValue {CIO-OPAQUE.&Type}
 *
 * ObjectValue { Type } ::= CHOICE {
 * 		indirect ReferencedValue,
 * 		direct [0] Type,
 * 		... -- For future extensions
 * }
 *
 * ReferencedValue ::= CHOICE {
 * 		path Path,
 * 		url URL
 * } -- The syntax of the object is determined by the context
 * </pre>
 * @constructor
 * @param {ASN1} the tlv structure containing the CIO
 * @see PKCS15_CommonDataContainerObjectAttributes PKCS15_CommonDataContainerObjectAttributes is the base class
 */
function PKCS15_DataContainerObject(tlv) {
	// Call superclass constructor
	PKCS15_CommonDataContainerObjectAttributes.call(this, tlv);

	if (tlv && (tlv instanceof ASN1)) {

		var t = tlv.get(2);
		assert(t.tag == 0xA1);
		assert(t.elements == 1);
		t.setName("typeAttributes");
		t = t.get(0);
		t.setName("dataContainerAttributes");

		switch(tlv.tag) {
		case 0x30: this.decodeOpaqueDOIndirectPath(t); break;
		default:
			print("### Unsupported data container object type : " + t);
		}
	}
}

PKCS15_DataContainerObject.prototype = new PKCS15_CommonDataContainerObjectAttributes();



/**
 * Decodes an oqaque data object.
 *
 * @private
 * @param {ASN1} the tlv structure containing the opaque data object
 */
PKCS15_DataContainerObject.prototype.decodeOpaqueDOIndirectPath = function(tlv) {
	this.type = "OpaqueDOIndirectPath";
	tlv.setName("OpaqueDOIndirectPath");

	this.indirectPath = new PKCS15_Path(tlv);
}



/**
 * Convert the object to a human readable string
 *
 * @return the string representation of the object
 * @type String
 */
PKCS15_DataContainerObject.prototype.toString = function() {

	var str = PKCS15_CommonDataContainerObjectAttributes.prototype.toString.call(this);
	str += "\nDataContainerObject { ";

	if (typeof(this.indirectPath) != "undefined") {
		str += "indirectPath=" + this.indirectPath + ",\n";
	}

	str += "}";
	return str;
}



/**
 * Create an object to access the PKCS#15 structure on a card.
 *
 * @class <p>This class provides for direct access to a PKCS#15 data structure on a card.</p>
 * <p>The calling application will typically use:</p>
 * <pre>
 * var card = new Card(_scsh3.reader);
 * var p15 = new PKCS15(card);
 * var appllist = p15.readApplicationDirectory();
 * var aid;
 * for (var i in appllist) {
 *   print(i);
 *   aid = i;
 * }
 * var at = appllist[aid];
 * p15.readObjectListForApplication(at);
 * for (var i = 0; i < at.objlist.length; i++) {
 *   print(at.objlist[i]);
 * }
 * </pre>
 * @constructor
 * @param {Card} card the card object to use for card access.
 */
function PKCS15(card) {
	this.card = card;
}



/**
 * Reads the application directory from EF_DIR.
 *
 * <p>The method supports linear variable and transparent EFs. It creates an internal table of
 *    of applications.</p>
 *
 * @return hash table of application templates index by application identifier
 * @type PKCS15_ApplicationTemplate[]
 */
PKCS15.prototype.readApplicationDirectory = function() {
	this.ef_dir = new CardFile(this.card, ":3F00:2F00");

	this.aidlist = new Array();

	if (this.ef_dir.isTransparent()) {
		var data = this.ef_dir.readBinary();
//		print(data);

		while((data.length > 0) && (data.byteAt(0) == 0x61)) {
			var tlv = new ASN1(data);
//			print(tlv);
			data = data.bytes(tlv.size);
//			print(data);

			var at = new PKCS15_ApplicationTemplate(tlv);
			this.aidlist[at.aid] = at;
		}

	} else {
		var rec = 1;
		while(rec < 256) {
			var data;
			try {
				data = this.ef_dir.readRecord(rec);
			}
			catch(e) {
				if (!(e instanceof GPError) || (e.error != GPError.CARD_COMM_ERROR)) {
					print(e);
					throw(e);
				}
				break;
			}

			var tlv = new ASN1(data);
			var at = new PKCS15_ApplicationTemplate(tlv);
			this.aidlist[at.aid] = at;
			rec++;
		}
	}
	return this.aidlist;
}



/**
 * Reads from the transparent file referenced in the PKCS#15 path object.
 *
 * @private
 * @param {String} df the current DF in OCF path notation.
 * @param {PKCS15_Path} path the relative or absolute path to the EF
 * @return the content of the file
 * @type ByteString
 */
PKCS15.prototype.readCardObject = function(df, path) {

	var p = path.getAbsolutePath(df);
	print("Reading from: " + p);
	var ef = new CardFile(this.card, p);
	var data;
	if (path.index) {
		data = ef.readBinary(path.index, path.length);
	} else {
		var len = ef.getLength();
		data = ef.readBinary(0, len);
	}
	return data;
}



/**
 * Parse a list of TLV objects
 *
 * @param {ByteString} data the binary data with TLV objects
 * @return the list of ASN1 objects
 * @type ASN1[]
 */
PKCS15.parseObjectList = function(data) {

	var list = new Array();
	var len = data.length;

	while(len > 0) {
		if ((data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
			len--;
			data = data.bytes(1);
		} else {
//			print(data);
			var tlv = new ASN1(data);
			var tlvsize = tlv.size;
			len -= tlvsize;
			data = data.bytes(tlvsize);
			list.push(tlv);
//			print("parseObjectList: " + tlv);
		}
	}
	return list;
}



/**
 * Reads PKCS#15 objects from card file which can be either transparent or record oriented.
 *
 * @param {String} df the current DF in OCF path notation.
 * @param {PKCS15_Path} path the relative or absolute path to the EF
 * @return the array of TLV objects read from the file
 * @type ASN1[]
 */
PKCS15.prototype.readCardObjects = function(df, path) {

	var p = path.getAbsolutePath(df);
	print("Reading from: " + p);
	var ef = new CardFile(this.card, p);
	var list = new Array();

	var isTransparent = true;
	try	{
		isTransparent = ef.isTransparent();
	}
	catch(e) {
		// Ignore
	}
	if (isTransparent) {
		var data;
		if (path.index) {
			data = ef.readBinary(path.index, path.length);
		} else {
			try	{
				var len = ef.getLength();
				data = ef.readBinary(0, len);
			}
			catch(e) {
				data = ef.readBinary(0);
			}
		}

		var len = data.length;

		try	{
			while(len > 0) {
				if ((data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
					len--;
					data = data.bytes(1);
				} else {
//					print(data);
					var tlv = new ASN1(data);
					var tlvsize = tlv.size;
					len -= tlvsize;
					data = data.bytes(tlvsize);
					list.push(tlv);
//					print("readCardObjects: " + tlv);
				}
			}
		}
		catch(e) {
			print("Error reading cryptographic information object: " + e);
			print(data);
		}
	} else {
		var rec = 1;
		while(rec < 256) {
			var data;
			try {
				data = ef.readRecord(rec);
			}
			catch(e) {
				if (!(e instanceof GPError) || (e.error != GPError.CARD_COMM_ERROR)) {
					print(e);
					throw(e);
				}
				break;
			}

			data = data.bytes(2);	// Strip of first two bytes
//			print("Data : " + data);
			if (data.length > 2) {	// Record might be empty
				try	{
					var tlv = new ASN1(data);
					list.push(tlv);
//					print("readCardObjects: " + tlv);
				}
				catch(e) {
					print("Error reading cryptographic information object: " + e);
					print(data);
				}
			}
			rec++;
		}
	}
	return list;
}



/**
 * Reads all CIO objects for an application and adds the CIO objects to the objlist property
 *
 * @param {PKCS15_ApplicationTemplate} at the application template
 */
PKCS15.prototype.readObjectListForApplication = function(at) {
	if (!at.ddo) {
		throw new Error("Application has no PKCS#15 information");
	}

	if (!at.ddo.odfPath) {
		throw new Error("Application has no odfPath");
	}

	at.objlist = new Array();

	var dos = this.readCardObjects(":3F00", at.ddo.odfPath);

	// Determine current DF
	var df = at.ddo.odfPath.getAbsolutePath(":3F00");
	df = df.slice(0, -5);
	this.df = df;

	for (var i = 0; i < dos.length; i++) {
		var tlv = dos[i];
		assert(tlv.isconstructed);
		var ciotype = tlv.tag;
		var path = new PKCS15_Path(tlv.get(0));

//		print("Path = " + path);
		try	{
			var cios = this.readCardObjects(df, path);
		}
		catch(e) {
			print(e);
			continue;
		}

		for (var j = 0; j < cios.length; j++) {
			var tlv = cios[j];

			var cio;
			switch(ciotype) {
				case 0xA0:
					cio = new PKCS15_PrivateKey(tlv);
//					cio.type = "PrivateKey";
					break;
				case 0xA1:
//					cio = new PKCS15_PublicKey(tlv);
					cio = new PKCS15_CIO(tlv);
					cio.type = "PublicKey";
					break;
				case 0xA2:
//					cio = new PKCS15_PublicKey(tlv);
					cio = new PKCS15_CIO(tlv);
					cio.type = "TrustedPublicKey";
					break;
				case 0xA3:
//					cio = new PKCS15_SecretKey(tlv);
					cio = new PKCS15_CIO(tlv);
					cio.type = "SecretKey";
					break;
				case 0xA4:
					cio = new PKCS15_Certificate(tlv);
//					cio.type = "Certificate";
					break;
				case 0xA5:
					cio = new PKCS15_Certificate(tlv);
					cio.type = "Trusted" + cio.type;
					break;
				case 0xA6:
					cio = new PKCS15_Certificate(tlv);
					cio.type = "Useful" + cio.type;
					break;
				case 0xA7:
					cio = new PKCS15_DataContainerObject(tlv);
					cio.type = "DataContainerObject";
					break;
				case 0xA8:
					cio = new PKCS15_AuthenticationObject(tlv);
					cio.type = "AuthObject";
					break;
				default:
					assert(false);
			}
			at.objlist.push(cio);
		}
	}
}



/**
 * Reads and return the CIAInfo structure referenced by the PKCS#15 path element.
 *
 * @param {PKCS15_Path} path the path to the CIAInfo file
 * @return the CIAInfo description
 * @type PKCS15_CIAInfo
 */
PKCS15.prototype.getCIAInfo = function(path) {

	var cia = this.readCardObject(":3F00", path);
	var tlv = new ASN1(cia);
	return new PKCS15_CIAInfo(tlv);
}



/**
 * Return the hash table of application templates
 *
 * @return the hash table of application templates
 * @type PKCS15_ApplicationTemplate[]
 */
PKCS15.prototype.getAidList = function() {
	return this.aidlist;
}

//
//  ---------
// |.##> <##.|  CardContact Software & System Consulting
// |#       #|  32429 Minden, Germany (www.cardcontact.de)
// |#       #|  Copyright (c) 1999-2006. All rights reserved
// |'##> <##'|  See file COPYING for details on licensing
//  ---------
//
// Setup runtime environment
//

//
// Shortcut to reset card and display atr
//
function reset() {
        card = new Card(_scsh3.reader);

        var atr = card.reset(Card.RESET_COLD);
        print(atr.toByteString());
        return atr;
}


//
// Shortcut to exchange APDU with card
//
function apdu(data) {
        if (typeof(card) == "undefined")
                card = new Card(_scsh3.reader);

        var res = card.plainApdu(new ByteString(data, HEX));
        if (card.SW != 0x9000) {
                print("Card error SW1/SW2=" + card.SW.toString(16) + " - " + card.SWMSG);
        }
        return res;
}


//
// Determine platform id
//
// 1 - SCSH3 command line and ScriptRunner
// 2 - GUI Shell
// 3 - Eclipse Plug-in
// 4 - ScriptingServer
//
function getPlatformID() {
	var sysid = GPSystem.getSystemID();
	sysid = sysid.toString(OID).split(".");
	sysid = parseInt(sysid[sysid.length - 5]);
	return sysid;
}



//
// Minimal assert() function
//
function assert(condition, message) {
	if (!condition) {
		if (!message) {
			message = "Assertion failed";
		} else {
			message = "Assertion failed - " + message;
		}
		throw new GPError("shell", GPError.USER_DEFINED, 0, message);
	}
}


//
// Function used by scripts to define minimum version requirements
//
function requires(version) {
	var s = version.split(".");
	assert(s.length >= 1);

	var reqmajor = parseInt(s[0]);
	var reqminor = (s.length >= 2) ? parseInt(s[1]) : 0;
	var reqbuild = (s.length >= 3) ? parseInt(s[2]) : 0;

	var id = GPSystem.getSystemID();
	var s = id.toString(OID).split(".");

	var major = parseInt(s[s.length - 4]);
	var minor = parseInt(s[s.length - 3]);
	var build = parseInt(s[s.length - 2]);

	if ((major < reqmajor) ||
	    ((major == reqmajor) && (minor < reqminor)) ||
	    ((major == reqmajor) && (minor == reqminor) && (build < reqbuild))) {
		print("This script uses features only available in version " + version + " or later.");
		print("It may not run as expected, please update to a more current version.");
		GPSystem.wait(1500);
	}
}



//
// Even shorter shortcuts
//
function r()     { return reset(); };
function a(data) { return apdu(data); };
function q()     { quit(); };



//
// Display help to user
//
function help() {
        print("q | quit                 Quit shell");
        print("r | reset                Reset card in reader");
        print("a | apdu(string)         Send APDU to card");
        print("print(string, ..)        Print string(s)");
        print("load(file)               Load and execute file");
        print("assert(expression, ..)   Assert that expressions are all true");
        print("defineClass(file)        Load Java class defining native objects");
        print("restart                  Restart shell (clears all variables)\n");
        print("or any other valid ECMAScript expression.");
        print("See doc/index.html for the complete documentation.\n");
        print("If this is the first time you use the Smart Card Shell and you want");
        print("to try it out, then insert a card into your reader and enter");
        print(" load(\"tools/explore.js\")");
}


// All GP classes report errors through GPError
defineClass("de.cardcontact.scdp.engine.Shell");
defineClass("de.cardcontact.scdp.gp.GPError");
defineClass("de.cardcontact.scdp.gp.GPSystem");
defineClass("de.cardcontact.scdp.gp.ByteString");
defineClass("de.cardcontact.scdp.gp.GPByteBuffer");
defineClass("de.cardcontact.scdp.gp.GPAtr");
defineClass("de.cardcontact.scdp.gp.Card");
defineClass("de.cardcontact.scdp.gp.GPKey");
defineClass("de.cardcontact.scdp.gp.GPCrypto");
defineClass("de.cardcontact.scdp.gp.GPXML");
defineClass("de.cardcontact.scdp.gp.GPTLV");
defineClass("de.cardcontact.scdp.gp.GPTLVList");
defineClass("de.cardcontact.scdp.gp.Application");
defineClass("de.cardcontact.scdp.gp.GPApplication");
defineClass("de.cardcontact.scdp.gp.GPSecurityDomain");
defineClass("de.cardcontact.scdp.gp.GPSecureChannel");
defineClass("de.cardcontact.scdp.gp.GPScpKeySet");
defineClass("de.cardcontact.scdp.gp.GPScp02");
defineClass("de.cardcontact.scdp.gp.GPScp03");
defineClass("de.cardcontact.scdp.gp.ApplicationFactory");
defineClass("de.cardcontact.scdp.js.JsX509");
defineClass("de.cardcontact.scdp.js.JsCRL");
defineClass("de.cardcontact.scdp.xmldsig.JsXMLSignature");
defineClass("de.cardcontact.scdp.js.JsASN1");
defineClass("de.cardcontact.scdp.js.JsKeyStore");
defineClass("de.cardcontact.scdp.js.JsCardFile");
defineClass("de.cardcontact.scdp.js.JsIsoSecureChannel");
defineClass("de.cardcontact.scdp.js.JsOCSPQuery");
defineClass("de.cardcontact.scdp.js.JsLDAP");
defineClass("de.cardcontact.scdp.js.JsSOAPConnection");
defineClass("de.cardcontact.scdp.js.JsURLConnection");
defineClass("de.cardcontact.scdp.js.JsTLSSocket");
defineClass("de.cardcontact.scdp.cms.JsCMSSignedData");
defineClass("de.cardcontact.scdp.cms.JsCMSEnvelopedData");
defineClass("de.cardcontact.scdp.cms.JsCMSGenerator");
defineClass("de.cardcontact.scdp.pkcs11.JsPKCS11Provider");
defineClass("de.cardcontact.scdp.pkcs11.JsPKCS11Session");
defineClass("de.cardcontact.scdp.pkcs11.JsPKCS11Object");
defineClass("de.cardcontact.scdp.js.JsScript");
defineClass("de.cardcontact.scdp.cardsim.JsCardSimulationAdapter");
defineClass("de.cardcontact.scdp.sss.JsShamirSharedSecret");

if (GPSystem.mapFilename("scsh/oid/oid.js")) {
	load("scsh/oid/oid.js");
}

switch(getPlatformID()) {
	case 1:
		defineClass("de.cardcontact.scdp.js.JsTask");
		break;
	case 2:
		defineClass("de.cardcontact.scdp.scsh3.OutlineNode");
		defineClass("de.cardcontact.scdp.scsh3.Dialog");
		defineClass("de.cardcontact.scdp.scsh3.AccessTerminal");
		defineClass("de.cardcontact.scdp.scsh3.Task");
		break;
}


// Load persistent settings which defines the _scsh3 object

var filename = GPSystem.mapFilename(".settings.js", GPSystem.AUTO);

if (filename) {
        if (filename.equals(GPSystem.mapFilename(".settings.js", GPSystem.SYS))) {
                GPSystem.trace(GPSystem.mapFilename(".settings.js", GPSystem.SYS));
                GPSystem.trace("Warning: File .settings.js found in installation directory !");
                GPSystem.trace("This happens, when you selected the installation directory as");
                GPSystem.trace("user directory and saved settings to the .settings.js file.");
                GPSystem.trace("In this case, the .settings.js file in the installation");
                GPSystem.trace("directory takes precendence over any other .settings.js.");
                GPSystem.trace("You should remove the .settings.js file and create/use your own");
                GPSystem.trace("user directory rather than the installation directory.");
        }
        load(filename);
} else {
        var _scsh3 = new Object();
}

_scsh3.setProperty = function(property, value) {
        this[property] = value;
        var filename = GPSystem.mapFilename(".settings.js", GPSystem.AUTO);
        if (!filename) {
                filename = GPSystem.mapFilename(".settings.js", GPSystem.USR);
        }
        var cf = new java.io.FileWriter(filename);
        cf.write("//\n");
        cf.write("// Automatically generated file - Do not change\n");
        cf.write("//\n");
        cf.write("var _scsh3 = new Object();\n");
        for (i in this) {
                if (!(this[i] instanceof Function)) {
                        cf.write("_scsh3[\"" + i + "\"] = \"" + this[i] + "\";\n");
                }
        }
        cf.close();
}
@echo off
setlocal ENABLEDELAYEDEXPANSION
set userdir=%CD%
cd /d %~dp0
if defined CLASSPATH (set CLASSPATH=%CLASSPATH%;./bin) else (set CLASSPATH=./bin)
FOR /R .\lib %%G IN (*.jar) DO set CLASSPATH=!CLASSPATH!;%%G
Echo The Classpath definition is %CLASSPATH%
if exist jre (set JAVA=jre\bin\java) else (set JAVA=java)
Echo Starting %JAVA%
%JAVA% -Xmx1024m -Dsun.security.smartcardio.t1GetResponse=false -Dorg.bouncycastle.asn1.allow_unsafe_integer=true -Djava.library.path=./lib -Dscdp.workspace=%userdir% de.cardcontact.scdp.engine.ScriptRunner %*
           (     (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ghcjldjmepqimqiirkhrlfrndrnbrofspkqpkqpkqpkrpkrqkrqlrqlrqlrqlsqlsrlsrmsrmsrmsrmtrmtrmtsmtsntsntsntsntsnusnusnusnutnutnutoutoutoutoutoutoutoutoutovtovtovtovtovtovtovtovtovtovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovtovtovtovtovtovtovtovtovtovtovtoutoutoutoutoutoutoutoutoutoutnutnutnutnutnusnusntsntsntsntsntsmtsmtsmtrmtrmsrmsrmsrmsrlsrlsqlsqlrqlrqlrqkrqkrpkrpkqpkqpjqpjqpjqojqofroarodqmeqmgqliqjlqhophildildfgb~}~                                                                                                                                                                                                                                                                            2GVz~{Ysuotnpjjmfjmfprknrkjrmjrmgsngsodsphspkrpkrqlrqlrqlrqlsqlsrlsrmsrmsrmtrmtrmtsmtsntsntsntsnusnusnutnutoutoutoutoutoutovtovtovtovuovuovuovupvupvupvupvupvupvupvupvupvupvupvupvupvupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvuovuovuovuovuovtovtovtovtoutoutoutoutoutnutnutnusnusntsntsntsntsmtsmtsmtrmtrmsrmsrmsrlsrlsqlrqlrqlrqkrqkrpkrpkqpkqpjqpgrocrofrngrnirliqlmqjpqjjleileopiosmput}~qQ)                                                                                                                                                                                                                                                        ѵ
@debmlqhglcdjeflejqhmtgqwgowjkxnlxqlxukxxizjzf{xmvmrpoqqoqqorrprrprrprrprrpsspsspsspssqssqssqttqttqttqttqttqttrttrttruuruuruuruuruuruuruusuusuusuusuusuusuusuusuusuusvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsuusuusuusuusuusuusuusuusuusuusuuruuruuruuruuruuruuruuruurttrttrttqttqttqttqttqttqssqsspsspsspsspsspssprrprrprrprrorroqqoqqoqqoqqnqqnpplqowlue{iyxiytjwqkwmkwijwfnvfpvelsdipdelbcihflnlr}g|c                                                                                                                                                                                                                                     ̲[{fbdkpYtzconrqprpqtprvjotgkrekrelsikuniuojvthvuiv|ivgxuktlpnnppnppnppoppoppoppoppoqqoqqpqqpqqpqqpqqprrprrqrrqrrqrrqrrqrrqrrqssqssrssrssrssrssrssrssrssrssrssrttrttrttrttrttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttrttrttrttrttrttrttrttrssrssrssrssrssrssrssrssrssrssqssqssqssqrrqrrqrrqrrqrrqrrprrprrpqqpqqpqqpqqpqqoqqoppoppoppoppnppnppnppnppnoomoomoomoolpmujt~fw{huthusguniumhthjtdkrdjqfjqintoptopspoqnmqyb~pYvccjp~w@                                                                                                                                                                                                                        ƾ^ysh{^_fkkshlriputr`rr_on]rkcyog|sp{po{lozopwoqvpqupqqqporpmspurq}qr{qs{qs{qs{qs{rs|rt|rt|rt|rt|st|st}su}su}su}su}tu}tu}tu}tu~tv~tv~tv~tv~uv~uv~uv~uv~uv~uvuwuwuwuwuwuwuwuwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwuwuwuwuwuwuwuwuwuwuwuw~uv~uv~uv~uv~uv~uv~tv~tv~tv~tv~tv}tu}tu}tu}tu}su}su}su}su}su|st|st|rt|rt|rt|rt{rs{qs{qs{qs{qszqrzqrzqrzqrzpr|pqtqplronqoppotopuopwnpynozknzon{roxnfqjbnl\pp]sq^hotgkpjrekz_arn2                                                                                                                                                                                                            Xepmi}khmoloufjdhliosmoforkosnjnpelndlsenvboy`py_py\pz[qzYryYryWty^szcq|bq|br}br}cr}cr}cs~cs~ds~ds~ds~ds~dt~eteteteteteueufufufufufufufufvfvfvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvfvfvfvfvfufufufufufufueueuetetetetetetdt~ds~ds~ds~ds~ds~cs~cr}cr}cr}br}br}bq|bq|bq|aq|aq|aq|bq|\rxUsxWqxWqxZoy[oy]ox_oxamxcmuckrdklimnnrmnqjkndhmqbfktdi~knln~ifqmjvxx#                                                                                                                                                                                                Ygpppdozfvuertcpflnitnktdgo]XaUfRnJoBr=|71*)&&)*,......./////////00000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000///////////.......-----+)(&&()06<z@qInQlSeW_~en\ischsmdjmrbnsdpxetqdofnn<
                                                                                                                                                                                        MsfiffikqlsqhoriqwjwelsWjoPqmR}|HwI{LMNLD<;9889;;==>>>>>>??????@@@@@@@@@@AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@@??????>>>>>>======<<;::8778:;BJMLJGzGuP|zOokUhmdkquiupgoognpiqfiiggg}o                                                                                                                                                                            N~|o]h}ltzhncnm^rmfpmmht_d}Kp6#"4In]c{kfseol\pkalkxfl{lsq`jyw헡~(                                                                                                                                                                ^gpn_dbqppngeuijfjlflrUnzLnE|EB42@CCzJlSlxekpdhjsghlecpoobfdhlk򝙙3                                                                                                                                                        ƶY|njqh[l{eWv_gp[{tk}ot_Gq,(,("!"#"" !'*'+Do]~{mryrhenYTt]jzcri\wkh잓2                                                                                                                                                `pijfd_qthjqbfn_wyo_fkOmO>1$(!   '#/<M}Lk~\ciuvldl]ho_orfic`ohkꔐ:                                                                                                                                        ^gmnZeiarl[teunei_{fj_q<!!!! !'&&&'''''''''''(((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(((((((((((((((((((((''''''''''''&&&&&&&&&%%%&     :]oycgg\slcXqb_ojZeigkl횙/                                                                                                                                    \kkmikhnnglpilrqhowRftGqG7!!!!!!!!!!!!!"""""""""""""""#####################################################################################"""""""""""""""""""!!!!!!!!!!!!!         5DEoOcrelujpoimfkkdikhhhi睝!                                                                                                                                    P}}b_euqjyr[ynd}gtT_?s1!!   /=pQ\~zdrwlawpXrnfcagwww𤨥}                                                                                                                        Yxief`xaqqcplohoMcy?x6)          '3<uJ`vlelminn`]u^khhs견	                                                                                                                "SzrklMNry^doobyDt1!                            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                                               
/Aql^valpw[J}KogiU~L                                                                                                        ckbsvcytpthuZrrmgb}Jo<+!!                  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                           )9Gkd^zooidrWplps_wlcp㜘(                                                                                                    ^x~lgqbftrnrqcqgkWiF3!! !!!               !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                      1BSendh|m_oko^bpjfqxtz觯                                                                                                !_e]lpjnlnnjnsiuQg90# ""$                !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                "  !.6Mdpeqjfjkhkhkgah_H                                                                                            edogfteem`srlojnubzVs3 '$%              !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!              #"%0Ror^wlfjoniai[bpadkf蕦#                                                                                        UUd_`vcowhmhllzGo1#%           !!!!!!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!             #!.Ckhhwidksd\s_Rc^|𰶲}                                                                                    
r\hj\pjYw`js`ielgzI*"&"           !!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!             # (Dhbvd`fo\Ts[Xle`jm                                                                                VljqijjmvhmrjegnGz,!"          !!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!            )Cv`biinfhrdeffhfmﻷ                                                                            ͿgvlmnjrnknosgnqiknwK$"!          !!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!          !Ffisimdkobifijenykn'                                                                    \x^jfyilzmrziq\h~8(%!$ !        !!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!          !#&4~WcyvdmvhntehYfbp𸻷	                                                                    
uSni^nj~mn}ns|eqbj:%*$'!!        !!!!!!!!!!!!"""""""""""""""""""##################################################""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!         $!'#6\dx`myinzhiYjfQmg                                                                HPnd_tkzokskqgf?u' #        !!!!!!!!!!!""""""""""""""""##################################################################""""""""""""""""""""""""""""!!!!!!!!!!!!!         !$:pb`nelujfYofJi^n                                                            h|lmTwk]rhxmingnjjE(!#         !!!!!!!!!!""""""""""""""#############################################################################"""""""""""""""""""""""!!!!!!!!!!!!         !%@ddhahshcXmcNrf|il                                                        kmffotkfqgiqg_qqLv5!!&(#       !!!!!!!!!!"""""""""""""#####################################################################################""""""""""""""""""""!!!!!!!!!!!          $#0FqYkkclaalbjofkdd9                                                    NslljnfhqhkthexyM8"!')#       !!!!!!!!!""""""""""""########################$$$$$$$$$$$$$$$$$$$$$$##############################################"""""""""""""""""!!!!!!!!!!!          %#3Fz_rteobblbdh`mggz                                                    khneqsql]|tl~ov[Pv%       !!!!!!!!"""""""""""#################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################################"""""""""""""""!!!!!!!!!!!        "JqipTnfxfVvkmkelb                                                    3elbkokqbogzpx^S&      !!!!!!!!!""""""""""###############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########################"""""""""""""""!!!!!!!!!!        #L|irWiatk]|eie_f\½N½                                            Mdnfgmj|nogwXwxA#      !!!!!!!!""""""""""#############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$######################""""""""""""""!!!!!!!!!!        ;Pppiapwg{agd^g_~¸x¹                                            [ormgoihnk~oohxUzF$      !!!!!!!!"""""""""############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###################"""""""""""""!!!!!!!!!         ?Pvweifncweao`icjlg                                            xhkmfpngnlxmoemu<4        !!!!!!!"""""""""###########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#################""""""""""""!!!!!!!!!!       -;Nlnhfkvgx`gf`fg                                            :moriqqlppvmlis|>4"      !!!!!!!"""""""""##########$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################"""""""""""!!!!!!!!!        5G^llfdcrkp^egfhhkjd_^X)                                            Pzzlmtintprvxsiav~*$#      !!!!!!!""""""""##########$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###############"""""""""""!!!!!!!!!       +B[qeohne{fVziliobgx`k|fox`k8                                            SmktlishkomqtuslZv,%#      !!!!!!!""""""""#########$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$##############""""""""""!!!!!!!!!       !$(.:xGh~Ncscepmgodleiatm_|ghhvems_jsckpdi;                                            qjxtnxmknsqsmsnP|#       !!!!!!!""""""""########$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$############"""""""""""!!!!!!!!       ,=L{p[rXepZlo^ro_up^jp_fo]aldhflugzheiibpjasaek\ie]                                            skxskwpoppprjurP#      !!!!!!!"""""""#########$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$############""""""""""!!!!!!!!       !(/5:~@mGgxOmsSpnXpjZoh]qhjngpngjmdjmdhlbhlejfoeelccpccqedkffh                                            uixuhwuqojrp_uyG!"      !!!!!!!"""""""########$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$############"""""""""!!!!!!!!!      &:Ozuo^tZnYlZmclriyyfz`lqNplfjnrhoqimqjjpkepjeamfWkhOgoMhokblx_k                                            ulxrjusslgrkXvE#       !!!!!!"""""""########$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$###########""""""""""!!!!!!!!      &088?xIlRky\othmmhmfspkwtlsqkoiknimqkohlo_longrvesofqjimokesjahm`dka[glYfnkbns`m                                            |zxtnzrmuowfeuhPv<$      !!!!!!"""""""########$$$$$$$$$$%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$###########"""""""""!!!!!!!!      ".Emz~ph~mjln~nrznstluolukoyipwfspcojbmdfpcnvawmlbx^}]~m`xbgqpkbzl\zmY}lUiicgdllaqj`p                                            tttqmwpoukwddxiKw?%      !!!!!!"""""""#######$$$$$$$$$$%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$##########"""""""""!!!!!!!!      "-9AJUn\g~ppqmqunousovtqtsqspoqooqlrriooipljqomrpppnonkooepndshlwbvddu[gtikhsjbrm^sl]aif`fkoblobk                                            rtvjlulotgz^b}jEw= %     !!!!!!"""""""#######$$$$$$$$$$%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$########$$"""""""""!!!!!!!!       5Ljrzyniwtbs}\r~akpxkqylpvqptprnprnqslprjkrjkphkojknonmrtiuudxis_`LesYljlXiuMhw^injhhjkbkkbZigWjhsdhtcg                                            rvvplqrpspuibtpA~9"      !!!!!!""""""#######$$$$$$$$$%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$#####$! """""""""!!!!!!!!      &5AJUv`o}foxlrvqtvowtmyplxpprupruoqtppqppnoonqpmqropsopsonqnkmmjjmnjnqkqlofhu_lpgjij`fm]hofjlhggkkgljfahg]ffibekef                                            ovutmowpqvqtbmx;3!$!     !!!!!!""""""#######$$$$$$$$$%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$#####$!""""""""!!!!!!!!      ';W|vpwpqtptpusztrrttmtyisyhsxrrrrrrqqqqqqqqqppppppooqqqqqqqonommlmmllmlklkkklkhllknjljkjilkijiihhhiikggigffhfffggcee                                            mtrtnovpqvssfq}>4!#      !!!!!"""""""######$$$$$$$$$%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$#####$$"! !"""""!!!!!!!!      ,@KMTqao|vt}v}~pusuutvvttvsrttprxqrxpqxrrrrrrqqqqqqqqqppppppoooooonnnnnnmmmmmmllllllpppkkkeeefffkkkkkkhhhhhhhhheeeccc___jjjwwwr                                            lrqwqrunpvqqhr}?4!#      !!!!!!""""""######$$$$$$$$$%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&'''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$####"'+&!!"""""!!!!!!!     !2L_ymkwm}qpn}qvtvuu{utrvtrvsqttqrxvqxupxrrrqqqqqqqqqqqqppppppooonnnmmmnnnmmmmmmlllmmmjjjkkkooommmhhhfffhhhgggbbb___uuu7kkk                                            mtsyrsuopqoofr|?4!#     !!!!!!""""""######$$$$$$$$$%%%%%%%%%%&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%$$$$$$$$$$$$####"%)&#!!"""""!!!!!!!     /DUan}~svtzt|uuu~t{szuv{wvrwtovtmxumwtptuvrv~ow|owrrrqqqqqqqqqppppppoooooonnnnnnnnnmmmmmmllllllggggggiiiiiieeefffdddkkk~-                                                    nsrwqrtnopppdr|@4!#      !!!!!""""""#######$$$$$$$%%%%%%%%%%%&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%$$$$$$$$$$$####"%*($"!"""""!!!!!!! "5Rnzzl|ozvsyx~z}rvotruww~xvswujxthxthwtgwtnsuzruowowrrrqqqqqqqqqppppppoooooopppooommmmmmlllllljjjppppppdddcccnnn|||6                                                            krqvpqvopqqqes|@4!#     !!!!!!""""""######$$$$$$$$%%%%%%%%%&&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$$$$$$$$$#####$%$#! !""""!!!!!!!.J]akw}tz{u~x|}xxx|wwyxzztr|rt|vy|wx{vuyutyurwwnwujvujvviuunususszptzptqqqqqqqqqpppppppppoooooooooooommmmmmlllmmmnnnhhh]]]nnnI	                                                                        jrqvpqxrsuuuer}?4!#      !!!!!""""""######$$$$$$$$%%%%%%%%%&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$$$$$$$########" !""""!!!!#7Pq{szu|{}z~swsxuy}}yx|wq}pcpf~qj~rn|plyslytnwukvvjvvjuuiuunussssxqrxqrqqqqqqqqqppppppoooooonnnoooooommmmmmkkkhhhfffz6	                                                                                    ksrvssvrrttter}>4 "    !!!!!!""""""#####$$$$$$$$%%%%%%%%%&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$$$#"%$#""##!$+%!"""!! (Jehoxuwzy||}||~}y~|yz|xyzxwz{wx~wurzxr|srzrsxuxwvztx{sx{sxytyysyttussurvsrwtquqnqnoooqqqqqqmmmooorrrqqqnnnmmmooonnnhhhmmmtS                                                                                                ltrvssurrssser}>4 "    !!!!!""""""######$$$$$$$%%%%%%%%%&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$$$$#$$#""# "(/%!""" 2O}zx}w|w|{}||}v|v~}tz{uwy{twptqxztzsuztwxvzuvryrzqyu{~szwqusprnrootpkunltnyyypppooottttttnnnlllqqqooodddt}}}w?                                                                                                        ltrvssurrssser}>4 "     !!!!!"""""######$$$$$$$%%%%%%%%%&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%$$$$$$$$%%$#""$ %&*$""! 6Ybczmvv}y{y{~|z}}z|z|x{v{~v{|yzzzyz{yy~xzwz}ww|vy{vz{vyztzzs{zs{yrzwqwwpwvsswsuxtryutxvowvolllrrrqqqllllllpppmmmnnniUxxx                                                                                                                ltsvssurrsssfs}>4 "     !!!!!""""""#####$$$$$$$%%%%%%%%%&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$%%####%!'&% $;Wzrzx}noko|r{t{u{yy~{y|u{uzt{sz}xz{{x{|yyxywwwwuz}u{}tz{t{zs{yszyrzyrzwqxvrrvssztrvqotpjtpiqqqooouuuttteeennndG
                                                                                                                        ltsvtturrsssfs}>4!"      !!!!!"""""######$$$$$$$%%%%%%%%&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$$$###$#&((+;R[bsyx~{xo~p~x}}}z|w|x{xzv{zyz|rz{m|{k|yl{xj|woywtwypxxoxxjwwiwwhvvlvvowuqsrnoorqqvttzqs{ss|uuuuulllhhhj|||f>                                                                                                                                    ltsvttvsssssfs~>4!"     !!!!!""""""#####$$$$$$$%%%%%%%%&&&&&&&&&'''''''''''''''''''(((((((((((((((((''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$###$$$"#).+'3Lk~~}}}|z{no~x}~}z|w|wzuzuzxzz{qy{j|{h{yh{xf|wlywrwxoxxmwwiwwgvvevvjvvltsnqqossxuuurrtkltjlunpgggkX!www                                                                                                                                            ltswttvssqsset~?5!"     !!!!!"""""######$$$$$$%%%%%%%%&&&&&&&&&'''''''''''''''''(((((((((((((((((((((((((''''''''''''''''''''''''''''&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$$##$$";dcat|zzx{y~}~yz{~z}|~|{{||y{{v{|v{|u|zu{zx{x}yxwxtxqyvvxxsxxsvwrtwrtvqtvqxtpzurzusztuwqrnknhmoqz~fT                                                                                                                                                    muswttvssqttet~?5!"      !!!!!"""""#####$$$$$$$%%%%%%%%&&&&&&&&'''''''''''''''((((((((((((((((((((((((((((((('''''''''''''''''''''''''&&&&&&&&&&&&&&%%%%%%%%%%%$$$$$$$$$##%$",NVa~z}}~~|z{y|w~|~~~~}~{~y|{~|{y||y{{v|}u||t{zt{yxzx}xwwxtxqyvvxxswwruwruvqtvquupyspzsrxrpuopwqrzx{eF                                                                                                                                                                nusoutsss{stnt~;1'"    !!!!!""""""#####$$$$$$%%%%%%%%&&&&&&&&''''''''''''''(((((((((((((((((((((((((((((((((((('''''''''''''''''''''''&&&&&&&&$"$(.0//#"((" !"#$&+*.:Rcijy~~~~~~~~~}}}}}}||||||{{{{{{zzzzzzyyyyyyzzzzzzxxxwwwxxxzzz{{{tttsssxxxtttmmmvvvvvvrrrvvvk@                                                                                                                                                                        nutovtsss{stnt~;1'"    !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&&'''''''''''''((((((((((((((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&$#$(-0..#"((" !"&'$'-5<EJWk~~~~~~}}}}}}|||||||||{{{{{{zzz{{{~~~zzzvvvtttvvvwwwvvvqqqrrrwwwuuurrrwwwzzzrrrqqqv7
                                                                                                                                                                                    nutovtsss{stot~<1'"    !!!!!"""""#####$$$$$$%%%%%%%%&&&&&&&&''''''''''''(((((((((((((((((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&%),)$*,,+%$&&"#(&!"%.DWi{z~~~~~~~}}}}}}}}}||||||{{{{{{zzzzzzxxxwwwyyyxxxxxxzzz{{{yyyvvvzzzyyytttuuummmuuux/                                                                                                                                                                                            outovuttt{stot~<1'"   !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&''''''''''''((((((((((((((((((((((((((((((((((((((((((((('''''''''''''''''''&&&&&&%(+)%)+**&%&% #('',+/8Ma|~|~~~~~~~~~}}}}}}||||||{{{{{{{{{zzzzzzxxxvvv{{{{{{uuusssuuuttttttssspppvvv~~~|+                                                                                                                                                                                                    outovuttt{stot<1'"   !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&&''''''''''''(((((((((((((((((((((((((((((((((((((((((((((((''''''''''''''''''&&&&&&&"&+*+#! )+** #%-F`u}yr|~~~~~~}}}}}}|||||||||{{{{{{zzzzzzyyyzzz{{{yyyyyywwwwwwyyyxxxtttzzz愄+
                                                                                                                                                                                                            outpvuttt{tuot<1'"   !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''((((((((((((((((((((((((((((((((((((((((((((((((('''''''''''''''''&&&&&&&$"&(()$"! )***(025ARe|t|~~~~~~}}}}}}}}}||||||{{{{{{zzzzzzyyyyyyzzzzzzuuuwwwyyyvvvrrrttt~~~+                                                                                                                                                                                                                    outpvuttt{tuot<2("   !!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((''''''''''''''''&&&&&&%*.'!%'()!#'+*""@Tfz}x|}y{s|}~~~~~~}}}}}}||||||{{{{{{zzzzzzzzzyyyyyyxxxwwwvvvxxxuuuppp܀$                                                                                                                                                                                                                            ovtpvuttt|tuot<2("  !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&'''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((('''''''''''''''''&&&&&%')'%&'''"!"$*03:MRWh~u||~~~~~~}}}}}}|||||||||zzz|||zzzyyyyyyzzzxxxwwwuuuvvvxxx~~~*                                                                                                                                                                                                                                ovtpvuttt|tuou<2(#  !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((('''''''''''''''&&&&&&'!'0(%$$*.!=`~stu{~~~~}}}}}}||||||{{{{{{zzz{{{{{{yyyxxxxxxxxxwwwxxxύ                                                                                                                                                                                                                                        ovupwuttt|tuou<2(#  !!!!!"""""####$$$$$$%%%%%%%&&&&&&&'''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((('''''''''''''''&&&&&&'##'&$&+(()/>JVe|}|{~~~~}}}}}}||||||{{{{{{uuuxxxyyyssstttyyỷ                                                                                                                                                                                                                                                ovupwuttt|tupu<2(#  !!!!"""""#####$$$$$$%%%%%%%&&&&&&&''''''''''((((((((((((((((((((((((((((((((((((((((((((((((((((((((''''''''''''''&&&&&&&&&%122":V{|v~vx~z~~y|~~~~}}}}}}||||||{{{{{{{{{xxx{{{wwwvvvwwwuuuȃ#                                                                                                                                                                                                                                                        pvupwuuuu|tupu<2(#  !!!!"""""#####$$$$$$%%%%%%&&&&&&&&''''''''''(((((((((((((((((((((()(((((((((((((((((((((((((((((((((''''''''''''''&&&&&&&%&($%*/0<=MZt{x|~~~~~~~}}}}}}|||||||||{{{{{{zzzzzzwwwzzzuuuqqq.                                                                                                                                                                                                                                                            pvupwuuuu|tupu=2(# !!!!!"""""#####$$$$$%%%%%%%&&&&&&&''''''''''((((((((((((((((((()))))))))(((((((((((((((((((((((((((((''''''''''''''&&&&&&&%'9A(# Ju}~{ww|{~zyzzvy~~~~~~~~~}}}}}}||||||{{{{{{zzzzzzxxxwwwuuu                                                                                                                                                                                                                                                                    pvupwuuuu|tupu=2(# !!!!!"""""####$$$$$$%%%%%%%&&&&&&&'''''''''(((((((((((((((((())))))))))))))((((((((((((((((((((((((((''''''''''''''&&&&&&&'(+02>CCUr~}~~}~~~~~~}}}}}}||||||{{{{{{zzzzzz{{{ttt|||,                                                                                                                                                                                                                                                                            nvuqwvuuu~uvqu<1)# !!!!!""""#####$$$$$$%%%%%%&&&&&&&''''''''''(((((((((((((((()))))))))))))))))(((((((((((((((((((((((((''''''(((''''&'''&%&')("-EXz~|{~~wwwwzz~~~~~~~}}}}}}{{{|||{{{{{{zzz|||{{{vvv                                                                                                                                                                                                                                                                                uxvswvuuuvvvlvA7%#   !!!!"""""#####$$$$$$%%%%%%&&&&&&&''''''''''((((((((((((((()))))))))))))))))))((((((((((((((((((((((((''''''###%())'#""&*&"'4BDJXk}~~}~~~~}}}}}}|||}}}|||{{{xxx{{{~~~vvvvvv9                                                                                                                                                                                                                                                                                        {xxvvvtttqxwexD< #$" !!!!"""""#####$$$$$%%%%%%%&&&&&&&'''''''''((((((((((((((()))))))))))))))))))))(((((((((((((((((((((((''''''!(+,'#+$2DQf~}}}~~~}}}}}}|||}}}{{{~~~uuu'                                                                                                                                                                                                                                                                                            ywwvvvtttrywevD=!##" !!!!"""""#####$$$$$%%%%%%%&&&&&&&'''''''''((((((((((((((())))))))))))))))))))))((((((((((((((((((((((''''''(*+++($#"*)%'*5Qb\`v~~~~~~}}}|||{{{|||yyy~~~}}}qqqE                                                                                                                                                                                                                                                                                                ywwvvvtttrywew~D>!##"!!!!!"""""####$$$$$$%%%%%%%&&&&&&''''''''''(((((((((((((())))))))))))))))))))))))(((((((((((((((((((((''''''0375.$ ./+($&3]|{}{{~~~~~~~{{{{{{||||||zzz~~~}}}sss7                                                                                                                                                                                                                                                                                                        xwwtttuuuryvbt|C>!"#!!!!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((((())))))))))))))))))))))))((((((((((((((((((((''''''',-((&''''$'8PW^}|||{{{|||~~~~~~{{{ppp#                                                                                                                                                                                                                                                                                                            uuutttuuutywbt|B>!""!!!!!!""""#####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))))(((((((((((((((((((('''''''.,  '0+ $'5L^v~~~}}}~~~{{{vvvrrrN                                                                                                                                                                                                                                                                                                                    uuutuusuutyxds{B<!""!!!!!!""""#####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))))(((((((((((((((((((('''''''+**)#".Oj}}~~~~~~}}}|||~~~{{{uuuA                                                                                                                                                                                                                                                                                                                        uuuruutwwtyxfr{B;!""!!!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((())))))))))))))))))))))))))(((((((((((((((((((('''''''
/.-) Co}zyz~~~~~~}}}||||||~~~yyywww3
                                                                                                                                                                                                                                                                                                                            wwwqttsuusxvhu}A~? !"!!!!!"""""#####$$$$$%%%%%%%&&&&&&''''''''''((((((((((((())))))))))))))))))))))))))(((((((((((((((((((''''''''!$)(24*1Q`|~zz~~~||||||||||||xxxv,                                                                                                                                                                                                                                                                                                                                wwwqttsuusxviv@}@ !"!!!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))))(((((((((((((((((((''''''''''%(63$&Fi{~zuu~~~|||}}}yyy~~~tttP                                                                                                                                                                                                                                                                                                                                        twwqttsuusxviv@}@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))))(((((((((((((((((('''''''''')$$(8rw|||{{{zzz~~~zzzsssG                                                                                                                                                                                                                                                                                                                                        twwqttsvvsxviv@}@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))))((((((((((((((((((('''''''''+)$#&or|{{{|||}}}zzz|||wwwA                                                                                                                                                                                                                                                                                                                                            twwqttsvvsxvjvB}A    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))))(((((((((((((((((((''''''''')"'>m~~~~~yyywwwsss7	                                                                                                                                                                                                                                                                                                                                                    twwqttsvvsxvjvB}A    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))))((((((((((((((((((''''''''''#()-b~~~~~~~~yyywwwxxx1                                                                                                                                                                                                                                                                                                                                                        twwqttsvvsxvjvB}B      !!!!"""""#####$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))))(((((((((((((((((('''''''''',Gov~zyw~~~xxx{{{-                                                                                                                                                                                                                                                                                                                                                            twwqttsvvsxvjvB}B !!!!!"""!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))(((((((((((((((((('''''''''''38[x~yvu~~~}}}}}}}}}www+                                                                                                                                                                                                                                                                                                                                                                hyvtusvxqv{lmyoSVJNUTRV[VKHF@;4-('""! ! $'''(,-) $+(())('&&&&'(**((((((((((())))))))))))))))))))))))(((((((((((()$,40+#')2::$&|~~~~~~~~~{{{zzz,
                                                                                                                                                                                                                                                                                                                                                                    jzyyyvvvo{~pt|rGq:y,t1v9x8z7|;A<56952/*,+%%"$*+$%$#&)%'%$"))())('&&&&'(**((((((((((())))))))))))))))))))))))(((((((((((()$,30+ *.16:&!z~~~|||zzzzzzyyyŘ2
                                                                                                                                                                                                                                                                                                                                                                        vsp}lnxn{u[sP~HyN|\}_}`flxu~{}{yy|{xnhh`K93/,)' &,3)"$#"""#&(,--,,**((((((((())))))))))))))))))))))))(((((((((((((((&#',./"22 "Yn}~~~|||}}}}}}yyyŔ3                                                                                                                                                                                                                                                                                                                                                                            rq~o|ruvnwrcfY]hd`bdinqrz~~}ujcZRRJF:750-(#,5,"&$""!#&(,,,++)*((((((((())))))))))))))))))))))))(((((((((((((((&$'+-/' -0('R`~~~|||{{{}}}Ɛ7                                                                                                                                                                                                                                                                                                                                                                                mtrtxxx|~iyzSv~:7!  %((.9CMZcry~|reZN?1%+6+!"&*,'#  %((((((((())))))))))))))))))))))))(((((((((((((((('''%063(A_}}}~~~{{{~~~~~~xxx݈7                                                                                                                                                                                                                                                                                                                                                                                    ovvuvyruwjxxX|=8"%#!")03:EPXb`hlrw{ygXK>5:51* #+/)# "%(*(&###%(((((((())))))))))))))))))))))))(((((((((((((('''('%/3.'#"GW~~~~~~www                                                                                                                                                                                                                                                                                                                                                                                        wv{xszrovjwvW=3"$%!.6@N^dqx{z{jYC?<&$,,-#"/30,(((((((())))))))))))))))))))))))((((((((((((((%!(-&$()'&.1~~~~~~~~~                                                                                                                                                                                                                                                                                                                                                                                        yty}tz{tzoxwWz|=5 !$&# "0?O]d_aq{}qZNDIL4(---&"#$+-,+(((((((())))))))))))))))))))))))((((((((((((((&$()%%&'%&9={{{|||{{{.                                                                                                                                                                                                                                                                                                                                                                                            ttswrv}vwbyB8#""#$###"!;QSjJ".01134+(  +97(((((((())))))))))))))))))))))))(((((((((((((((,' $'!gyyy9#                                                                                                                                                                                                                                                                                                                                                                                                |vstutvwww^y@8 &#!"""#$$$#%&%%%$AUZas}~pI?KD6/-,)($"#(02(((((((())))))))))))))))))))))))(((((((((((((()-&$%!,-l}}}xxx#                                                                                                                                                                                                                                                                                                                                                                                                    hzrtxstvvnxw[z?9    %.& "'(**+,,++**# $)B`{{xZ9!&/01-%"$(((((((()))))))))))))))))))))))(((((((((((((('-4$#& :]yyy4                                                                                                                                                                                                                                                                                                                                                                                                    lzrxxtwvvpxw^yA:! #+$ "&'((('&$#  "(0AT]cqtzbOE;+%%'*-*&'(((((((()))))))))))))))))))))))((((((((((((((',0$"&(0Ocxxx8                                                                                                                                                                                                                                                                                                                                                                                                        mzr|wu{uwtwxewD<"  '! "'(((# $!
Fh{]<.0+*(((((((()))))))))))))))))))))))(((((((((((((((+,$! '1J~}}}9                                                                                                                                                                                                                                                                                                                                                                                                            lyt|ux{uyvwxewD<"%# !!!#""""! !#"!"/JWah{~fQD=2(''**(((((((()))))))))))))))))))))))((((((((((((((())%$#%?Yw|||;                                                                                                                                                                                                                                                                                                                                                                                                            iwy}t|{tzwvyewD<!!&'&$! "'*/0,)!%&)-*-@Xqu|n]H/+,(('()))()(()))*))))))))))))))))((((((((((((((('#&)$Ns*                                                                                                                                                                                                                                                                                                                                                                                                                nwwwwzyuy{vxlwA7  "##"!!   !"#$%(()( "()!%3HZiiO>+)2+((++$&&(+,,,,)&()))))))))))))))((((((((((((((('##%*5d{~~~:                                                                                                                                                                                                                                                                                                                                                                                                                qwvpxwvvv}vwrv=2!*$ !!!"##########)( $!BVmR8¾/-4.((/. !"',00//)"')))))))))))))))(((((((((((((((%" $.C{~~~}}}~~~~~~+                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$))  !&+)"#=OQjlbYJ&(&(,+#$%'+--,,*&())))))))))))))((((((((((((((((('$9Ky~~~K	                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$))""%)1/,(.<Ah~gQ"$(*)%&&'+++++*()))))))))))))))(((((((((((((((())$;My}}}9                                                                                                                                                                                                                                                                                                                                                                                                                        qwvrxwvvv}vwqv>3 )#!!!!""""#####$$((##$(-./,(&##(C[u{}F.(''&'((())))*+,*))))))))))))))((((((((((((((('*/'Ok}}}}}}V                                                                                                                                                                                                                                                                                                                                                                                                                        qwvrxwvvv}vwqv>3 )#!!!!""""#####$$(($$%(,031.((Q||<4('%%'**)((((),.+))))))))))))))((((((((((((((('+4*O{~~~V                                                                                                                                                                                                                                                                                                                                                                                                                            qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$   "'03.*!4Wwc_8*"#---+$&''(,0,()))))))))))))((((((((((((((((*13*d+                                                                                                                                                                                                                                                                                                                                                                                                                            qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##$$$-43+"Sy~[=*!!/..,#%&&',1-()))))))))))))(((((((((((((((().6)i~~~_                                                                                                                                                                                                                                                                                                                                                                                                                            qwvrxwvvv}vwqv>3 )#!!!!""""#####$$''%!$/0/)"%(8Hh}P5'../. #('%*2-()))))))))))))(((((((((((((((('%>Hw}}}W                                                                                                                                                                                                                                                                                                                                                                                                                            qwvrxwvvv}vwqv>3 )#!!!!""""#####$$('&!"-02-&'(0>iK5!'.//-#)'%*2-()))))))))))))((((((((((((((((&#<L{}~~~E                                                                                                                                                                                                                                                                                                                                                                                                                            qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  ,.0/$ !(()% "'/.U}[R('.0.(#.*%)/+))))))))))))))((((((((((((((()$Hs}}}}#                                                                                                                                                                                                                                                                                                                                                                                                                            qwvrxwvvv}vwqv>3 )#!!!!""""#####$$ !-032'!!'&'#!(.,Y~VQ)'00,'#/+%).+))))))))))))))((((((((((((((()%Du{zzzb                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##*,/.)%$%%$#!  #1Rhve/,1,(&%6/$'*)))))))))))))))((((((((((((((()%Z}}}]                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##*,/.)&$%%$#!  1Ui}_//1+('%7/$'))))))))))))))))((((((((((((((()%X}}}N                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$!!  $&(+++++-'E_}x71-)($&<2$&&())))))))))))))(((((((((((((((('eC                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$   $&(++,,+.)G^|w:1+)*#&<2$&&()))))))))))))((((((((((((((((('e7                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$)) "()(%"!"$)1/)Khq-)#'.)%)4,&/+)))))))))))))(((((((((((((((('*5`}}}.                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$)) #()(%"!"$+0-)Kht-'%(.)%)4,&/+)))))))))))))(((((((((((((((('*5`~~~|||,                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$)+--,*%!!"#"%%Jr}]((+,*( '5-"',*)))))))))))))(((((((((((((((('*,ezzz#                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##$%)+--+*%"!"#"%'Fova)(,,)) '5-#',*)))))))))))))(((((((((((((((('*+e|||!                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  &+.-**''()**,'&'"WQI)(1.*($2-'),*)))))))))))))(((((((((((((((('("j~~~|||)                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  %)++)(%&(**+,'&+(VXK'*0/*'$2-()+*)))))))))))))((((((((((((((((')#j~~~1                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  $$! !(/201(7T~yE5"(43*#"1.+*)))))))))))))))(((((((((((((((('(f}}}9                                                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$!"$#! $(,--,&BYxpG6"(33+$"0.+*)))))))))))))))((((((((((((((((''d}}}E                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$&&$!!()&#!!"krY-&&&52)&#.--+)))))))))))))))(((((((((((((((('&X~~~Q                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$''$! #&'&%%#!.9fdX,'$'20)'$-,,+)))))))))))))))((((((((((((((((''U~~~~~~`                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$++$$%)20/*<k~w|D+!"#(,+((%',++*())))))))))))))(((((((((((((((((' Dp|||a                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$**##$)30-'#,4Qm|xt@)%%$())(())+**)()))))))))))))))(((((((((((((((('"Fe|||                                                                                                                                                                                                                                                                                                                                                                                                                                qwvrxwvvv}vwqv>3 )#!!!!""""#####$$*)  &-76/!5AMeR((''#%(+1-()((()))))))))))))))(((((((((((((((((&>Mv~~~?                                                                                                                                                                                                                                                                                                                                                                                                                            qwvrxwvvv}vwqv>3 )#!!!!""""#####$$)(")31) @Wd{njX?++'&!"(,2/('&'()))))))))))))))(((((((((((((((('(;Lw~~~}}}W                                                                                                                                                                                                                                                                                                                                                                                                                            rwvpxwvvv~vwrv=2 )#!!!!""##$$###""('%.+BtzjR1"%//(#(/72'$#$()))))))))))))))((((((((((((((((&-5Bz}}}V                                                                                                                                                                                                                                                                                                                                                                                                                            myvuxwwvwywxkvA7 ##$"!!!"! "$(,.%% $')( (:F^xwp]F*%($++(&"$(+/-('''))))))))))))))))((((((((((((((((&%-8f}}}/                                                                                                                                                                                                                                                                                                                                                                                                                            f{tzwuyuwswxbuD<" #.% !!! !(0;>$"#&/-!(Lfz|ydC(+*''(())(((())))))))))))))))))))((((((((((((((((& %)X~~~~~~C                                                                                                                                                                                                                                                                                                                                                                                                                            mwv}uw|twvvwbwB:&# !!  !!!"#$""""%&&$-H__fnxxeUF</&%&&%(((((((())))))))))))))))))))))((((((((((((((()%$('Qh|||                                                                                                                                                                                                                                                                                                                                                                                                                        qvytztwvvwa{|A9"#!! !%(('#%&$!
$U~w}_7
/0##(((((((())))))))))))))))))))))((((((((((((((()$$%"Mc}~~~|||~~~A                                                                                                                                                                                                                                                                                                                                                                                                                        twsutuvvwwawA9 '&&#"! #&*-,+'#/,*/ERbjyx_MC8(###$'%%'(((((((())))))))))))))))))))))(((((((((((((((($#$'<Av~~~}}}G	                                                                                                                                                                                                                                                                                                                                                                                                                    vwqwruvvwwbuA:!!$*))%#" $(-2220-((11*#AX~}yP()0*& %((((((((())))))))))))))))))))))((((((((((((((((&!"+00|~~~}}}Ǯ0                                                                                                                                                                                                                                                                                                                                                                                                                    wvtuw|twrww\z>6 '$ !#&%%%"#"#%'&*ES[e~{gB<MF3,+'$#%&&*-.(((((((())))))))))))))))))))))(((((((((((((((()'#%%#Ro~}}}}}}A                                                                                                                                                                                                                                                                                                                                                                                                                zvv}tx{twpwwZ{~<5'"$(((%.G`}~~v>)4772)!"%+12/(((((((())))))))))))))))))))))((((((((((((((((''%#"Mp~yyyͥ3                                                                                                                                                                                                                                                                                                                                                                                                                rtvxuxyvynxwWy{<6!" "'"*9KYa_dmszsWD6?>/$&)++)'(+,,-+$$(((((((())))))))))))))))))))))((((((((((((((('+0%%)1,k~~~~~~?                                                                                                                                                                                                                                                                                                                                                                                                            otvsrtutvnyxY|~>7 $"" %-"*0:I]kst~~y|fD$''$"$%&&''+//.-)  (((((((()))))))))))))))))))))))((((((((((((((',4%'0+v~~~|||ҟ,                                                                                                                                                                                                                                                                                                                                                                                                            rttxuuyvwpyxZ{?8$%#$+/5=ISb`htuy}~}~jVJF>861-+)(,.,*'&&&'+--,($$(((((((()))))))))))))))))))))))(((((((((((((('+0*'(+!K`}}}}}}                                                                                                                                                                                                                                                                                                                                                                                                        tvt|zzywwmvtWy?7&&(-6DSbvzsxrfT?-%&/,$*1/+'&&&%)--,(%%(((((((()))))))))))))))))))))))(((((((((((((('+/+)'(Kjyyy~~~񏏏8                                                                                                                                                                                                                                                                                                                                                                                                    fw~suzwqqyuju{u[_VYa_ZWVh|yvwy~w~i]URF>;@:*'')****)# %,'"" $+/0**((--(((((((()))))))))))))))))))))))((((((((((((((('&+0("),*Us}}}|||}}}ף'                                                                                                                                                                                                                                                                                                                                                                                                    dv~pty{su{pwzrRwM?}C}M|NzO|P|R~iyw||}~~~~{qhgWH83-&('',+)&#"#(+&!!$,12**((..(((((((()))))))))))))))))))))))((((((((((((((('%*2)"+1#]wzzz|||}}}낂E                                                                                                                                                                                                                                                                                                                                                                                                nt{|uxvv}owoQqH~9w=wEwDzA~FL@2|6:=:71/)%%%&**$#!! ""()(%&(*,+(##"!&'''""(((((((()))))))))))))))))))))))(((((((((((((((('#2:4-&O~~~{{{~~~ܐ;                                                                                                                                                                                                                                                                                                                                                                                            sy|uxonvi{r\[MR\[Z]aYOPPMGA:1'!  #$#! "   #$&&'(((*-,)#"! &'''!!((((((((())))))))))))))))))))))(((((((((((((((((!1;4,'\|||{{{{{{ۙ4                                                                                                                                                                                                                                                                                                                                                                                            twwqttsvvsxvjv@~@!!!!""""#""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))(((((((((((((((&%37.$>S{}ypr|}}}}|||ِ,                                                                                                                                                                                                                                                                                                                                                                                    twwqttsvvsxvjv@~@    !!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((((((((((((((('%37-% B]zrt}~~~~~~|||}}}~~~܋H"                                                                                                                                                                                                                                                                                                                                                                                twwqttsvvsxvjv@~@    !!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((((((((((((('/7,&&'15-%*CG[}~~~~~~|||{{{{{{݉J                                                                                                                                                                                                                                                                                                                                                                             twwqttsvvsxvjv@~@    !!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((((((((((((('/7,&&'04.')HSd~~~|||||||||xxx߈M                                                                                                                                                                                                                                                                                                                                                                        twwqttsvvsxvjv@~@    !!!!"""""#####$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((((((((((((('0:/'%$*--+!!&%Ps~~~~~~}}}|||}}}yyy܎J                                                                                                                                                                                                                                                                                                                                                                        twwqttsvvsxvjv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((((((((((((('.5.&$#(-++#" %-^lv~~~~~~~~~}}}zzz~~~xxxۑG	                                                                                                                                                                                                                                                                                                                                                                    twwqttsvvsxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))(((((((((((((%###"!!%(*+*& *[uyw|~~~~~~}}}|||zzzvvvۖF                                                                                                                                                                                                                                                                                                                                                                twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))(((((((((((((&$#$#""%&*)(($ !9]lw|}~~~}}}}}}|||zzz}}}oooٚD                                                                                                                                                                                                                                                                                                                                                            twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))(((((((((((()$ &''$#"%(....)##",k~zv~~~~~~~~~~~~www~~~{{{oooԘH
                                                                                                                                                                                                                                                                                                                                                        twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))(((((((((((()%"%))(%$#$&+-.-*) ,?fdv~~~}}}yyy|||{{{pppӕL                                                                                                                                                                                                                                                                                                                                                twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&''''''''''((((((((((((())))))))))))))))))))))))((((((((((((((+/0./*%!  $*.00$&84!#\}}}~~~}}}zzz|||{{{xxxnnnԌU                                                                                                                                                                                                                                                                                                                                            twwqttsuusxviv@~@    !!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((()))))))))))))))))))))))))((((((((((((),..-,)&$""%(,,-%*2-.9Tbzzz~~~yyyxxxqqqωZ                                                                                                                                                                                                                                                                                                                                        twwqttsuusxviv@~@    !!!!!""""#####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((()))))))))))))))))))))))))((((((((((('-1.-,+))''$$#&&+/+&(1.#+\myyy~~~~~~{{{zzz~~~}}}tttЇ_                                                                                                                                                                                                                                                                                                                                     twwqsssuurwviv~@~@    !!!!!""""#####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))((((((((((('+.)&%$'*++'&$&&(&&''((&3S^qz|||{{{~~~|||xxx}}}}}}sssφ_                                                                                                                                                                                                                                                                                                                                twwosssuurwviv~@|A   !!!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))(((((((((((()+!#,23-)$###&%!"  !2Qvy~~~~~~}||}}}~|~~~~~~zzzxxxyyyyyyE
                                                                                                                                                                                                                                                                                                                            sxxtttuuuuvvft}?;!#!!!!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((())))))))))))))))))))))))(((((((((((()*&###&),,*(&&&&""%'''$"!/G]ns~~}|}|~|~y|v{z|}}{{|||zzz{{{wwwppp̓L                                                                                                                                                                                                                                                                                                                        pyxzvvwttwvwes|>4"&" !!!!"""""####$$$$$$%%%%%%%&&&&&&'''''''''((((((((((((((())))))))))))))))))))))(((((((((((((((()))('&&''''''###'**("&=Wwx~|}~|}|~{{z{{}|{}z}}y~~w~u|p|w|}|{{{{{{{zzz{{{{{{sss͆U                                                                                                                                                                                                                                                                                                                    pxvwttvttwwwft}?6"%! !!!!"""""#####$$$$$%%%%%%%&&&&&&&'''''''''(((((((((((((())))))))))))))))))))))(((((((((((((((((((('''''''''**(),,+' ! +GWUf~~~~~}~{{|~||||||{{{{{{zzzzzz{{{zzzˀ6	                                                                                                                                                                                                                                                                                                            nvuwttvttwwwgu}?7"%! !!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((((())))))))))))))))))))((((((((((((((((((((((''''''''..,+/..,&,38mzw}z|xz}~~}~y~x~|}{||||||||{{{{{{zzz{{{xxxxxxzzzΒA                                                                                                                                                                                                                                                                                                        nvuwttvttwwwgu@7"%! !!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((((()))))))))))))))))))((((((((((((((((((((((''''''''+*$$%'*,)$!'?QXc~wwzz~}~~}~~~}~}}|}}}||||||{{{{{{zzzzzzsssyyyzzzvvvхK                                                                                                                                                                                                                                                                                                pxvyvvxuuxxxgu~@6"%! !!!!!""""#####$$$$$$%%%%%%&&&&&&&''''''''''(((((((((((((((()))))))))))))))))((((((((((((((((((((((('''''''')'%)-,*"6Ztsqop~|{||}zzz~||y}~}~}}}||||||{{{{{{zzz{{{|||vvvsssxxx{{{ʓ8                                                                                                                                                                                                                                                                                            pxvxuuxuuxxxgu~?7"%! !!!!!"""""####$$$$$$%%%%%%%&&&&&&&'''''''''((((((((((((((((())))))))))))))(((((((((((((((((((((((((''''''''))! $),-)&'(%$+9>JSi~~~{v~r}oxx}~}}}}}}||||||{{{{{{www|||xxxvvvsssqqqӋ<                                                                                                                                                                                                                                                                                    qyxxuuxuuxxxgu~?6"%! !!!!!"""""#####$$$$$%%%%%%%&&&&&&&''''''''''((((((((((((((((())))))))))))(((((((((((((((((((((((((('''''''')) "&*-01.*)'#"7Zx}zyzy|~zs~l}gxu}~~~}}}||||||{{{{{{}}}xxxxxx|||xxxzzzzzzttt~~~ɝ)                                                                                                                                                                                                                                                                                owvxuuwttuuuhu@6"%!  !!!!"""""#####$$$$$$%%%%%%&&&&&&&''''''''''(((((((((((((((((((())))))(((((((((((((((((((((((((((('''''''''--+*)&%%$%*,,-/+%$""(1BPnzv}w}w~x}y|}~|~vz{~~~~~~~}}}}}}||||||{{{|||yyyzzzyyyxxxzzzyyyvvvrrrxxẋ6                                                                                                                                                                                                                                                                        nvuxuuwttuuuhu@6"%!  !!!!"""""#####$$$$$$%%%%%%%&&&&&&&''''''''''((((((((((((((((((((((((((((((((((((((((((((((((((((('''''''''0/.-+'%%#$(*-01+%&%3[|~}~{uu}q}r|x}|}yz}~~~~~~~}}}}}}}}}||||||{{{{{{zzzzzzyyyyyyxxxxxx~~~rrruuu݂Ŏ,                                                                                                                                                                                                                                                                    nvuxuuwttuuuhu@6"%!  !!!!!"""""####$$$$$$%%%%%%%&&&&&&&''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((((''''''''').1.'# !&'((%$%&(*''..ALbw|}}}z||~}~~~~~~~~}}}}}}||||||{{{{{{zzzzzzzzzyyyyyyxxxttt{{{vvvpppuuu℄                                                                                                                                                                                                                                                            nvtxuuwttuuuhu@5"%!  !!!!!"""""#####$$$$$$%%%%%%&&&&&&&&''''''''''(((((((((((((((((((((((((((((((((((((((((((((((((((('''''''''(.3/'# %&&&$#%&+/&#"?[rzx}}|yzz~~~~~~~~~}}}}}}||||||{{{{{{zzzzzzyyyyyyxxx|||tttxxx~~~xxxqqqzzz2"                                                                                                                                                                                                                                                        nvtxuuwttuuugt@5"%!  !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&'''''''''''((((((((((((((((((((((((((((((((((((((((((((((((((''''''''''"*-+%!!&)*($%&&$$&+-,(!$/<H`qz|~|yvwy~{~~~~~~~}}}}}}}}}||||||{{{{{{zzzzzzyyyyyysssuuuzzztttuuuwwwtttsss2                                                                                                                                                                                                                                                mutxuuwttuuugt@5"%!   !!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''((((((((((((((((((((((((((((((((((((((((((((((((('''''''''' ),+%!!')*($%%$$$&./,,'FZkz~}{{}~}xtux{~~~~~~}}}}}}||||||{{{{{{zzzzzzzzzyyyqqq}}}uuuttt}}}vvvqqqzzzyyyvvvtttB3	                                                                                                                                                                                                                                        mutxuuwtttttgt?5"$!   !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&''''''''''''((((((((((((((((((((((((((((((((((((((((((((((('''''''''''&'321* ",,-)#",14+$&-*%*;EL^|~~|tv|~{~~~~~~~~~~}}}}}}||||||{{{{{{zzzzzzyyysssyyyyyyqqqyyy{{{rrruuuuuuwwwsssyyyA*                                                                                                                                                                                                                                mutwuuwtttttgt?5"$!   !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''(((((((((((((((((((((((((((((((((((((((((((((('''''''''''''(431* ",--*#",02)#"$(,'#FU\fu||uw|~{~~~~~~~}}}}}}|||||||||{{{{{{zzzzzzxxx|||wwwyyy|||vvvtttyyyxxxssstttwwwqqqrrr|||D#                                                                                                                                                                                                                            mutwuuvssrttfu~?5!#    !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&''''''''''''(((((((((((((((((((((((((((((((((((((((((((''''''''''''''''''&&&&&&&&&&&%%%%%%%%%$$$$$$!).7G]x}{z|{z{~{s}o|n|o|r}|v}{{{{zyzywvwv}v~vxxtwt|xrxyqtyrrxsovtqvrwup{up~umvsoF%                                                                                                                                                                                                                mutwttvssrttfu~?5!"     !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''''(((((((((((((((((((((((((((((((((((((((((''''''''''''''''''&&&&&&&&&&&&%%%%%%%%%$$$$$$#4HYfy~~||{|~}||~s~|p|p|q}s~|w}|{{{{zzyxvwv}w~vxxtxt|yrxyrtysrxsowtqvrwvq{up~vnqoloppqqqK                                                                                                                                                                                                        mutwttvsstttgt~?5!"     !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&'''''''''''''((((((((((((((((((((((((((((((((((((((('''''''''''''''''''&&&&&&&&&&&&%%%%%%%%%$$$$$$-++*  5Tv|~wy{{x{{t~mlpw{z|{zzz|}~z}z{z{t|zs{zt|vzzu}zs}ys|yt{wvyuxwt{rs{nt{ltziszdswx}~vttpppwwwkkkE                                                                                                                                                                                                muswttvsstttfs~?5!"     !!!!!""""""#####$$$$$$%%%%%%%%&&&&&&&&'''''''''''''(((((((((((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&%%%%%%%%%%$$$$$*,,($1J_u|{}}}}w}posx|{}{|zz|~}{}z{z{u|zu{zt|vy{v}zt|zs|yt{wvyvxyt{tt{pt{otzmszkuyimnssrsssiiirrrtttuuue`                                                                                                                                                                                        ltswttvsstttfs~?5!"     !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&&''''''''''''''((((((((((((((((((((((((((((((((''''''''''''''''''''''&&&&&&&&&&&&%%%%%%%%%%%$$$$$!%-+)##;Z{{vjw~|z}|vv}{{~|{~w|~pxoxz{yzy{ys{xr|uq{ur{xvvz{t|~r~p~q|rzqxqtwxsvusssyyyqqqlllsssqqqnnnU                                                                                                                                                                                ltswttvsssssfs~?4!"     !!!!!"""""######$$$$$$%%%%%%%%&&&&&&&&&'''''''''''''''((((((((((((((((((((((((((('''''''''''''''''''''''''&&&&&&&&&&&&%%%%%%%%%%%$$$$$  &,*)#%7Obqqwvw|x~}~~yy~}|}}}|y~{swsxy|x|zzzv{zs|wr{vs{xww{{t|s}q}r{sxsu~ttzvvstsppprrrttttttssspppnnnggghhha                                                                                                                                                                    ltsvttvsssssfs}>4!"     !!!!!""""""#####$$$$$$$%%%%%%%%&&&&&&&&&'''''''''''''''''((((((((((((((((((((('''''''''''''''''''''''''''&&&&&&&&&&&&&%%%%%%%%%%%$$$$$#$#%%)*)%"#%4JT[m~|y|z{{z}zv}r|q~t~}{tsw~x~sy{tyzsxzuxzzwy~vy}vv{vtuxoo|kl}hqyoyxyxxxsssrrrpppmmmvvvvvvvvvssslllhhhk	                                                                                                                                                                ltsvsswrruuufs}>4!"     !!!!!"""""######$$$$$$$%%%%%%%%&&&&&&&&&'''''''''''''''''''((((((((((((''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&%%%%%%%%%%%$$$$$"!$'*+'# ! $&)=RSR[e~p{|y}{}|}z|w|v~t}}zvv}x}zy}r{zt{ytyyvxx|wy~vy|vwzvuuyqo{nk|jt{ttstpppsssuuuuuuuuuppptttppplllqqqtttnnnlllz	                                                                                                                                                    jsqwqryrtvvvfs}?4"$     !!!!!""""""#####$$$$$$$%%%%%%%%&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$)+-)+('"+=Tx{{{zxvwzwyssi}|i}{j}zi}yj}tq|tw|y~zywx|wxzwwwxvnysg|qaknxpvtvttttttssssssrrrrrrqqqqqqqqqppppppoooooolllfff{#}}}                                                                                                                                                lrqwpqwpqrrres}@5"$      !!!!!"""""######$$$$$$$%%%%%%%%&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$  &&'%!!#)&&" "-=MS[bhn|vzz{||z|yu|}u}}u{r}xp|ss{sv|w{}x{wxywyyvyxwxtvvqxuoxrswtuuuttttttssssssrrrrrrqqqqqqqqqqqqppppppoooooonnnkkkhhhzzz_	                                                                                                                                    nsrxqsunppppes}@5"$!    !!!!!""""""######$$$$$$$%%%%%%%%&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$21"")-*&%$&*+).1'!0Hb~w}{wtz|yw{t}ttsr{mrynrzzsx{tu~{qpnkp{tvttttttttttssssssrrrrrrqqqqqqqqqppppppooooooqqqmmmjjjlllccchhhe	                                                                                                                        nusystvoqqppgs}@4!#!    !!!!!!"""""######$$$$$$$%%%%%%%%%&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%$$$$$-,%   $))'%$##$$%)+'$#$*:IRY[~b|qz~vwy}vyws|t~vy~wqzxpzzow|tu~zs}p~o|rztwtuuuttttttssssssrrrrrrqqqqqqqqqqqqppppppooollltttooolllqqqllldddlllp|||
                                                                                                                    msrxqsvopwrris~@4!#!     !!!!!""""""######$$$$$$$%%%%%%%%%&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$('()++*($#! #( !(./(*;L]zlmstv}xxytvysk~wf{xb{zey|mv~xr~pytzuutuuutttttttttssssssrrrrrrqqqqqqqqqppppppnnnkkksssnnnkkknnnmmmiiillliiieee|||Y                                                                                                        ntsunpwpqvttgr~?5!#     !!!!!!""""""######$$$$$$$%%%%%%%%%%&&&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$$%%%%$#$%$%$#"!%!!#%# !"1<@GPTTw]tryzvx{vs{{xu{vm{vm{wqywwvxztxxuvvvvuuuuuuttttttssssssrrrrrrqqqqqqqqqqqqppppppsssllllllqqqoooiiilllmmmffflllnnnbbbfffh                                                                                                pxuunpwpqwrucmy<4!$!     !!!!!""""""######$$$$$$$$%%%%%%%%%%&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$$$$   !#&'&$ "$''$!,9J^{trxwuxszoz}nt}nq~or~os|muxswvywuuvuuttttttsssrsrrsrqrqrrrqqqqqqqqrpprppqoqnoonqsqmnnjkjpppqrrkklllmjjkjjkiijiiidddeffO                                                                                    quuqnrtquouicwqB7"!    !!!!!!""""""######$$$$$$$$%%%%%%%%%%&&&&&&&&&&&&&&&''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$$$$$###"!!!"#%%%$!!"!!  #$$$$06<AFNY}hq~xv}{y}{xwxxqvzmu|nqzppzupxtrwuruussttqwxrywqwxpwvqutoqqpmqrkqskqtltp{nktplsqkoqjktomrpmnlgopinpilngkkglihnkjnkimhhc_`liiYsw                                                                        oqrkmunqxfw]b~kG{; &      !!!!!!""""""######$$$$$$$$%%%%%%%%%%%&&&&&&&&&&&&&&&&&''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%$$$$$$$$$$$%$$######"#"""""#"""!     !"$:]llqxspv}ii|jc}pdxoiurlusrtwws}qn~~l||my{outsltvfqwdowdofogqh{xjtzknzliunfuq`pq`pq_op`podqjeqjirihphfshjojh^a^Zi]j{nKw}                                                            rrrpluqmvjvbexjNz?%      !!!!!""""""#######$$$$$$$$%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%$$$$$$$$$$$$#########""""""""!!!!!!!!  !#"$&&$2?FS~aqmp{rvttyquvrzut}tx~sz{qyumtuqvrrtmqrnrrqttttuspssnptpptootnounosmmonnlmnimmenlemldmmhllijjkiknijogipfjojnlilbfe[c_Za]ckf~~:                                                        {yytmyrmvoxegwiRz>%      !!!!!!""""""#######$$$$$$$$%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$#########"""""""""!!!!!!!   &+,)' 1Pvwtbvlusotjtnt~txqxugvrcupatnjpwpm|vjzj}{td{tcyrfwoipnmhnoelt_lv[kvZkv[kvbksdkphimkikrglqfmmdmlemjfljgkhghhhh\^Z]^[rsq-                                            xo{skwuvnksnZyH#!      !!!!!!""""""#######$$$$$$$$$%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$#########"""""""""!!!!!!!  #%'&)4?FOmZjznqvvyrwwoyypvzqrxrpwrkrslnvnmvpnwduicuihtjkpnlpnkmqkksijugjugisfishjpkjnoilqijlhnhhnddkgdmhekieljdjibhkggjeghfebddYc^cqmN                                            rvjytiwvrqkqp]sxH!#      !!!!!!"""""""#######$$$$$$$$$%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$##########"""""""""!!!!!!!  "'&#3Lmyjs\q[~sbwvjuurksrjoviougpuVxiUxi]vkbrogpqkmsnktmhwngvngumismipnjlsilriihgkaenbfngfoieolcmncknajogkmceeccbee]idQd`V                                            LrjwqkwrqqmoofpoQ#!     !!!!!!"""""""#######$$$$$$$$$%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$##########"""""""""!!!!!!!  %$"!! &/7@Vvfoqqplutmxspxspvrpnqrmpqppopootolsnmrnkpmlmnlknkkmkjkknjlphnqhmgknannaljchjdekgbjkdklellflibgeadedeihfgge6                                            *tlzrlvporqprkplR$!     !!!!!!"""""""#######$$$$$$$$$$%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$##########"""""""""!!!!!!!!  ()%"(:S}rhqbsfrhymuxmtyopwnozoiwnisogrpfmqfkqeiogimiojlrgpsfpfkmZoi\lh_hgbekgcljclkdllemjekjeijdflfcmed                                            oluljrilqnrvvtl[w,%$     !!!!!!!"""""""#######$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$###########"""""""""!!!!!!!!  %-4<Nmyqnmrlollpqmrwnswmttmrqkollnjmnhmlhoogoldnjajfdmdkodlmcmkdkjfkhhggiffhdfibfiaegdefjcdkfd                                            ||mnvjouqswyujbw*$$     !!!!!!!"""""""########$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$############"""""""""!!!!!!!!   #:Omor}hhio{ksugsohrljrgjpcilakk`piaph_pefocln`nk_mibkhbhgecffcggafh_fg^egdefldfkcf                                            znpsjrrnrrwnmjt}?5"     !!!!!!""""""""########$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$############""""""""""!!!!!!!!  '&! "&+5|Hk^iisngxrfxqgxngsmkjjndgs[cviimtkivkgtieuhgviipjiklj^jfZieXieXhe^ffq]ff                                            <ilngqohomynpfnv<5 !      !!!!!!""""""""########$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$############"""""""""""!!!!!!!!  +*" .HltljUjZzkdnjpehz`gljsxjgwhewicugfteepgehhfZjeYieVifVhe[ff8[ff                                                psohpjiolppiyV{G$      !!!!!!""""""""#########$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$#############""""""""""!!!!!!!!!  $&%%%#!$-?qTcqschdh`hsKj{Shy\htgfsmelmegjcdffe`he\ie[hd[ff                                                    eoghnk}oqiyYxyB$      !!!!!!!""""""""#########$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$##############"""""""""""!!!!!!!!!  #&%%(%&>gs]dpHdtLcuXesfdqmeorijshjhhgbhe\ie[hd[hd                                                    bgndlplrcph{qy_U'       !!!!!!!""""""""##########$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###############"""""""""""!!!!!!!!!    &3AjKcu[`ro_mtcjtgdrfbkfbkeaakea                                                        +ipfqtqm^}umqw]Rx&      !!!!!!!"""""""""##########$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################""""""""""""!!!!!!!!!   0Qltejwfltgdsfbmfbmea+                                                            
snnhoghrihthdwyN9!')'!      !!!!!!!"""""""""###########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##################""""""""""""!!!!!!!!!        "%"2EwZoo_l_OlqJgk^hloifngc
                                                            ºOnggnulgrhish^rrMx6!&(%!       !!!!!!!""""""""""############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###################"""""""""""""!!!!!!!!!!        !$"/DoTii`j__j`fndfbd                                                                orSxl\tjxploiqkmG%""#!"       !!!!!!!!""""""""""#############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$######################""""""""""""""!!!!!!!!!!        !?cdgaipgcTmaJqduhi                                                                    	Ppe]ul{qmqjrggAx%"!#!"       !!!!!!!!"""""""""""###############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########################"""""""""""""""!!!!!!!!!!!        !:p__ibktieUneHk_                                                                        0Rrj^qlno~pthtek<'-&)!!        !!!!!!!!!"""""""""""##################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################################""""""""""""""""!!!!!!!!!!!        %"(#5\cz`mxhlyfgVjdLnfM                                                                        y^mg{lo{ou{hq_i:*(#&          !!!!!!!!!""""""""""""############################$$$$$$$$$################################################""""""""""""""""""!!!!!!!!!!!         " $&4~Vbxt`jthmtegVf`ez㚚                                                                            ƻ4voommtnlootgorjmpwM&         !!!!!!!!!!"""""""""""""##############################################################################""""""""""""""""""""!!!!!!!!!!!!         "Eehphlchm`gehffmqhk\                                                                                ikqhllnwjmrjggmIz-         !!!!!!!!!!""""""""""""""######################################################################"""""""""""""""""""""""!!!!!!!!!!!!!         (As__gflcgqbaeecfl|~З                                                                                        .]jk[ni_~gktbjhrf{K*%$,( ##       !!!!!!!!!!!"""""""""""""""""##########################################################""""""""""""""""""""""""""""!!!!!!!!!!!!!!          %'!"&Dk^ucaem[Wx`UhbYffO                                                                                        Ud`d|gowgnkol|Hl/%($!"        !!!!!!!!!!!!""""""""""""""""""""#########################################""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!          %"+Bfhevhehq`]uaTb[yƠ                                                                                                -ktngscen`tvopoqxa{Xu2#('( !        !!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!          $$% .Por[uihknpi]gYbo`iogJ                                                                                                    	cahajokonpokp{lyTk;1#!%$"          !!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!           !" -6|Mduftiekihjdhfag`~                                                                                                        jhsbfttosthyiocgC,'+!!$         !!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!            !(#)=]atciobnim\_njdqxxz߇                                                                                                            <vmsawunsnw_vtnjc~Jr<,          !!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!!!            )7Dld]zqnihrYnhmn]soivg                                                                                                                {lZvknQRqx_gqvc|Lt3"!"#           !!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!              !  /Foq^wbkmtYK}Lqfj[{x                                                                                                                        mghfzfqqdpntjtQe|Az6)                    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                                 &2<uL`wodokill^aualfhv˔                                                                                                                                c`fvqj{q\{pejwVa@s2!"! !   /<nQ\~{eswl`vmWrkecahuwwΛ7                                                                                                                                        2uwwkkhooinohnsqkqzTivJtI8"  """""""""#############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##################"""""""""""!!!!!!!!!!     5DEpOdrglviomijckkdiignmn锔U                                                                                                                                            @u{|_jncrm\texpgmb~imas=
""""! "('(((((((())))))))))))******************************************************************************************))))))))))))))(((((((((('''''''''&&&&&&%&     9]o{dih]tlbWp`_ni^glnss򌊊r                                                                                                                                                Kzzjfarujlseiqbz{rafmQoR@2%)"!"                              !!!!!!!!!!!!!!!!!!!!!!!                                                   '#/<M}Lk~\bivwnen^hoanqfgd^wps󌈋|                                                                                                                                                        Dyurg[m|gZyakt`~wn~qvaIs-)-)#"#$#" !'+'+Eo]~{mszsjgp\Vv]ixbqg\zpo헋u
                                                                                                                                                                Eq{xadcssrqigxlnjnniotWp|NpG~GD5 !2@CCzJlSlxekpfjjuhjnedpoobdclppu
                                                                                                                                                                        4n\h}ksygnepo`tohqoojvahMr6$"4In^e|kgseml\qkblkvdkxiqk]gxy}؏Y                                                                                                                                                                                    kmkhkkniotltxpxwkwcjq[msWxsS}|K|KOPQNF>=;:;;==?@@@@@AAAAAABBBBBCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCBBBBBBAAAAAAA@@@@@@????>>>>>===;;9889;<CKNLKHHyOzySupWjp`gnthtvmvphpkelfijljj5                                                                                                                                                                                            Ppywsgrziuteqwgsjorjtpluemtc[iyXnUuLtDx?91+*((*,-/000000001111111122222222222223333333333333333333333333333333333333333333333333333333333333333333333333333332222222222222222211111111100000000///////......,*)&&)*/7<|AuHqQrTkXevjq`irbgqlflotdppbnwersgpjqp񇇊                                                                                                                                                                                                        /trm{jgpspsvgnfknotxppmrsrrusmrriosgptfqwdrxctyaty_vx^ww\yu\yuZ|sawyfseteufufufufvgvgvgvgvhwhwhwhwhwhwixixixixixixixjyjyjyjyjyjyjyjyjyjykzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyixixixixixixixixixhwhwhwhwhwhwgvgvgvgvfvfvfufufueuetetetetdt~ds~ds~ds~cs~cr}cr}br}cp}^twWypYvrYvr[uu\su^qv`qvaovbotdnqflpjooorqopommjlquchksdkmpmpzedrnk~זR                                                                                                                                                                                                                    A~{{_`gkqxnqwhotwrjupismhuoh|rq~urus}so|sozunyvlxxktyhr{ip~exxmsw}tu~tv~tv~tv~uv~uvuwuwvwvwvwvxvxvxwxwxwxwywywyxyxyxyxyxzxzxzxzxzyzyzyzyzyzyzyzyzy{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{yzyzyzyzyzyzyzyzyzyzyzyzxzxzxzxzxzxzxzxyxyxyxyxywywywywywxwxwxwxvxvxvxvwvwvwuwuw~uv~uv~uv~tv~tv}tu}tu}tu}su}su}su|st|rt|rt|rt{rs{qs}ptuujm|bpyfrwfuuhvtixrlzpl{pl|sp|spyonsmfpkermfupgelrkotovfiz^`yr㓑o|}                                                                                                                                                                                                                            ϷVddkpZugpqprtoqtrqtrlqshopgpphmtlovpnxqlwvk{wk|~i|i}xnwosqqrrqrrqssrssrssrssrssrttsttsttsttsttsuutuutuutuutuutuutvvtvvuvvuvvuvvuvvuvvuvvuwwuwwuwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwuwwuwwuwwuvvuvvuvvuvvuvvuvvuvvuvvtvvtvvtuutuutuutuutuutuusuusttsttsttsttsttrttrssrssrssrssqssqrrqrrqrrqrrprrpqqpqqpqqoqqoppoppoppmqnvkug||gzuhytiyojunkviltekqemmfmnjoqorpnqppqmnon~doWtfdiyޓ                                                                                                                                                                                                                                             
!|nnpmklifhhgjjhopirriuwks{mpwqn|tm{xl{jihzozpurrttrttruuruuruusuusuusvvsvvsvvtvvtvvtvvtwwtwwtwwuwwuwwuwwuwwuxxuxxuxxuxxvxxvxxvxxvxxvyyvyyvyyvyyvyyvyyvyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyyvyyvyyvyyvyyvyyvyyvyyvyyvyyvyyvxxvxxvxxvxxvxxvxxvxxuxxuxxuxxuxxuxxuwwuwwuwwuwwtwwtwwtwwtvvtvvtvvsvvsvvsvvsuusuusuuruuruuruurttqttqttqttqttqsspsspsspssprrprrnsqxlxef~yh~vj}qkxolzjmuiqygstgqqelmeggcffhjgmmkl򙉛7v~                                                                                                                                                                                                                                                                o
5`~wwyqqqmpjloipqmoromrqkrqirrissgtsjtsnsrntrotrotrotsotsouspuspusputputputqvtqvtqvtqvuqvuqvurwurwurwurwurwvrwvrwvrwvsxvsxvsxvsxvsxvsxvsxwsxwsxwsxwsxwsxwsxwsxwsxwtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxvsxvsxvsxvsxvsxvsxvrwvrwvrwvrwvrwvrwurwurwurwurwuqvuqvuqvuqvtqvtqvtqvtputputputpuspusousousotsotrotrntrntrnsrnsqnsqmsqmrqmrqmrqlrplqphrqerqgqqgppipokpomomnokjmgkmhnpnrttuyzނŏEl
	                                                                                                                                                                                                                                                                                }C\}~~
vxz                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ?                                                                                                                                                                                                                     ?                                                                                                                                                                                                                                                                                                                                                                                                                 ?                              ?                              ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ?                                                                                                                                                                                                                                                                                                                                                                                               ?                                                                                                                    ?                                                                                                                                                                                                                                                                                                                                                                                                                                      ?                                                                                                                                                                                                                    ?                   ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ?                   ?                                                                                                                                                                                                ?                                                                                                                                                                  ?                                                                                                                                                                                                                                                                                           ?                                                                                                                     ?                                                                                                 ?                                                                                                      ?                                                                                                          ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ?                              ?                              ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ?                                                                                                                                                                                                                                             ?                                                                                                                         ?                                             PNG

   
IHDR         (-S   sRGB   PLTE                			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHlͽw/   tRNS @f   bKGD H   	pHYs        tIMEP   NIDATuQ
 !BGO9,=1kC(E v@2@!jܸҳxzJCN~&(
c    IENDB` JFIF XX   C 


		
%# , #&')*)-0-(0%()( C



(((((((((((((((((((((((((((((((((((((((((((((((((((   l"                3       !1"Q2Aa#RSqBD               "          1!Aa   ? %JxH\?W{gkh 
[i gQ)%Xv fm~
O,8!YSa<pm:Q_ 2	쥧w@y>==cJJRN)HX/fȕvv~M]%yr^ToqTxv
	
ԕʰ!__jB*}B3EڗN2[e!sN[N0A:Y]赦%bm-ʈ
hpx$Vy73
4F>ߺ,gVfL(JG# ([ċ
mu>2Ǎ(JN>lZZoKs鶽Nvm]\*5?b b3hۉpKBԡܩqAK@jϹI/ǰ%
&ae_~vK֢?Ti6rC[ tgRzxY44t
m$ؖҳ!-+=A\Ӝ``s)XZyo2-
.tdg< ,QH}M4VI :n/2pSMkDzJ>R9OOc'M8A[^5
Xr4lveWګȘJ\Ͽ<Jj	&'Я)8GK(}utq7~u0{ n(ehVeUpԩ-W֠$BյE,6Hl%򉈣\:ߘr;4EBaHA[篐@q}n_piS\":T\8{w5ٵہWn2܍
JRqJxΉ)u6P~R4`cT"ed2MOCc8AG{Z.T+űY9 rz:ZP7iM\yE<d 
e)
Q)
g#1z[a:-Z~;>܆о 2cOF-(XASH3P#	>cs֛F3WLlQmo$ىPNG

   
IHDR         (-S  PLTE                   			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   bKGD H   	pHYs        tIME
;a   5IDATc` (  `p>"F
YF@ׂn(h#4  Zm:A    IENDB`           (     (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

                                                                                                                                                                                
!#$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$#!
                                                                                                                                                                
%+169<>????????????????????????>>=================================================================================================================================================================<;851+%
                                                                                                                                                    #+4>EMTY]_``aaaaaaaaaaaaaaaaaaaa`_^]]\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\[[YVRLD=4+#                                                                                                                                        
#.;EP[ -6v#AT%Md&Rn&Vs&Yw&Yx&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&[z'[{'\}']~'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^']~'\|&Yx&Ur%Oh#CW .7sXOD:.#
                                                                                                                                
 ,;HU -6t$I_&Ws,Zv7]u;aw<c|:e6c8i;n<r<r>t>s?v@xAyAzB{B|B|C}B}C}C}B|B|A{<s0elbjjdD;^XcjqmfUUNT^bdTRSKLLAAa_O]urCepfX\caalfW]fafemijlmNQjiXc``jsh\Saspf^M_j\OsgmleD;^XcjqmfUUNT^bdTRSKLLAAa_O]urCepfX\caalfW]fafemijlmNQjiXc__jrg\S`roe]L^iZNpeji_=x3lIt?h~9bz+]z&Yw$Kb /8rSG:, 
                                                                                                                    &4DS";K%Qk*Yt8[q7_x5e7g8i9j9k9j;n=q=s>t?v@w@xAyB{AzB|C~DDDEEDCC~<u/bNLEelXHUJ]hT[nn_QQ[mp^UV]mnnReosSWrpmvrmQARMGVd\bcagsf`cnYKPb^ok^`ircKG`rV>E`ba<TQGgmXHUJ]hT[nn_QQ[mp^UV]mnnReosSWrpmvrmQARMGVd\bcagsf`cnYKPb^ok^`hqbJG_qU>D^``;ROFdiVFRHYcGw<e{,]z%Sn"<LRC4&                                                                                                            *;L!9G%Oj*Tn2Tj3`|5b6d6g5d8j:l;n<o=r<p<q?v@x@wAzAyAzC~C}C}C~ED~EEDEE>y0fSUM[bghkNIsn]a|vee_nsjorhi`seeit^UebOXn{ieag^eiPOe_Ma]\erecUgbsnaZ\f_N"v$wci[cn`ad[[P]cghkNIsn]a|vee_nsjorhi`seeit^UebOXn{ieag^eiPOe_Ma]\erecUgbrmaZ\e_M"u$vbgZam__bYYNZacdgKFmhX\X}2`{%Ql!:HK:*                                                                                                        ,?Q$Ld)Zv5Xm1]y3^{4a~5c6c6g6g9k:l;n=q>s?t>t@wAyAx@x@wBzC}EEFFFED~DEE?{2j[a\`icdsWD^meTls_ehn_dfimdOUe`bsbYbgbM]_R_bfYbbXSU^]nmV\nbibpbbuo^dirsmJgnnb`adseiabjcdsWD^meTls_ehn_dfimdOUe`bsbYbgbM]_R_bfYbbXSU^]nmV\nbiapbauo^diqslIfmma^_bpcf^`g`aoTBZh`PflDl)\z$MfP>,                                                                                                .A!7Du%Oh,Pg.Vn1[w2_z3`|5c6d5d7g8i9j9k:l=r>t?u?w@x@xAyAzB{BzD}FFFFFEFGFF@|3k\bpb^UZtoZV[YNQdeaio^Y[P_imW`Y_jSBfxnTb_bm`SK]ged^dYd{k_m_`RahCZtgrtfz{b\V]wde_hfjvd_UZtoZV[YNQdeaio^Y[P_imW`Y_jSBfxnTb_bm`SK]ged^dYd{k_m_`RahCZtgrsfyza[U\vcd]fdgsa]SWokWSWTKM__U8bz%Pj!7Et@.                                                                                        -A#BU(]|6Wk/Yt0[v1]y3`|4a~4b7f8h7i8j:l:k:m=q?u@v@xAyAyAxB{D~EDEFGFFFHGGE>y3l]jo[Ucavygic[mgHPQgsfcqcbcycYWb|tRRgoqqdnrcfdjngjbha_tunb[gKWuecob]zonvjfW8oriVQgst]Vcavygic[mgHPQgsfcqcbcycYWb|tRRgoqqdnrcfdjngjbha_tunb[gKWuecoa\ynmvjeW8npgTPdpqZS_]rtbd^WgaDKL`Ms(^~#CV@-                                                                                
*?#FZ)\y/Pe.Vo/Xs/Zt1\x3a}5b5c7g8i9j9k:n;n=r>s>t@w=tAzB|C}C~C}B|B|FEC~EEGEGGF>y2l\TXpj\ddkntTaMiyVgrq^_jvhc[ujjgh^aJhYUaRd`UZ_a_cWbahh_rp^ZaQknQhhibau^hcakkauohjg[\sk\ddkntTaMiyVgrq^_jvhc[ujjgh^aJhYUaRd`UZ_a_cWbahh_rp^ZaQknQhgibau]gc`jj_smfhdYZohYa`fjnQ\IcqQ`ihFr(]|#F[>*
                                                                            
&;#DX(\z1Sh.Wp.Wr0Yu/Zt1[w3`|5c6f8g9i8k:m;p;o>s?t@vAw@wBzC}D~DD~EFGGFFFHHHGFA}4m_\^qylP^yYohWopfQ]YXRX\jh{dmhptsZ`_do``jjqf_lqWfoitlu}f?[djaQn\`\_oa`X_ml]gnqnidbtzlP^yYohWopfQ]YXRX\jh{dmhptsZ`_do``jjqf_lqWfoitlu}f?[djaQn\`[_na_W_kj\flolga`pvhMZ}syUibRhh_LVSCq(]}#EY:&
                                                                         4!9Gl(]|3Th-Uo.Xr/Xs1[w1^z3`}4c4a~7g8h6f6h:k<o<n<q>s@wAxAzAzC}D~DEFFFFHHEGHHHG@}4me_dXZvV+qfmO\ljbiqdc_cYhcpVc^kqeeigmbYftskcgip~imkorgcju`m_VVSZ`LIbiadiginjgXiwqgiZ[vV+qfmO\ljbiqdc_cYhcpVc^kqeeigmbYftskcgip~imkorgcju`m_VVSZ`LIah`dhfhmieWgtodgXYrS*ylbhLXfd]ci]\X[Bo(^~!9Hl4                                                                     
,D%Pk3Sf+Sl-Vo/Xr.Wq0Yu2_{3a~4b~4a~7h8i9i9k8j;o=r>s=q=rAx@y@xC}C|DEFFFFFHGHIHHGA~4ma`mmbjb?Wjmg\ejcQehghphlhkhejeuggmfogbehlqpdrpphfpgdgikf~nwspjf_wgdgoeXimiigrjckmhrpcjb?Wjmg\ejcQehghphlhkhejeuggmfogbehlqpdrpphfpgdgikf~nwspje_wgdgndXhlhhephaijfom`f_=TegbW_d]L^a``f_Ho%QlC,
                                                                    #;%Nh.Qg+Rk,Un.Wq.Xs0Yu0Zv0\w2^y3`}5d7h9i:l:n;o<q=r>t?u<p@v@x@xC}C|B|EDDGGEFGIFEFFA~4mUbhoiguu]eefizrjTba\msc_jjpescelvsZsnhSeow|[Z\mmdmmfgmsbjf|mjj`eseeemjW]ftuehmh_^kmskguu]eefizrjTba\msc_jjpescelvsZsnhSeow|[Z\mmdmmfgmsbjf{mjj`drdeeliV]ersdfjf]\hjogdppYa`acsjcO[ZUdiZV9c{%Oi:#                                                            
."?Ps*Zv*Of,Sl,Uo.Wq.Xs/Xs1\x3a}4b5e6f8g9j:l:n;n<q=r=q>r?vAxAzB{C}D~C}D~D~C~FGHHHIIHHF>y1gF[gjmnrremmp_ewsh`rhnlbgqh\cqhYNiql`j]c__k`oinj^ajjchg]_j|kfehgpmbbincqrfj_hoohMblmnnrremmp_ewsh`rhnlbgqh\cqhYNiql`j]c__k`oinj^ajjchg]_j|kfehgombbimboqei]fmmfK`ijjjnmahhj[_okaZi`ecY]`*\z"?Pr/
                                                            #;&So3Rf+Rj,Tm-Vp-Vo0[u1]y3^{3a|4c5e7f8i9j:l:n;o<q=r>t?u@wAxAzB{C}D~DEEDDEHHHIIHHF>x4mYK`^kpnicknn_Xsx{dkbnvj_ef][ivqYSdttjn`ptgl`nek[hacpkntf^ittniklptgsknaetrl]\okucQe`lpnicknn_Xsx{dkbnvj_ef][ivqYSdttjn`ptgl`nek[hacpkntf^ittniklptgrkn`etqk\[mjsaPc]ilje_fiiZSlpr]c[ek`V[En%Tp:#                                                            
+#CWy1Zs)Ne*Ri,Tm,Vo-Un0[v2]z3_|3b~4c6e7g8i9j:k9l;o<q=r>t?u@wAxAzB{C}D~DEFFGFEHGHIHHGA~4mhN`_elltcdnrpefqukibiropn\UXhonpodlyyk]cvtyhkidXQc^ffeq|sszoPbruytwejjah{u_dl_otTdaflltcdnrpefqukibiropn\UXhonpodlyyk]cvtyhkidXQc^ffeq|sszoPbruxtwdjj`gyt]bj]lrSa_chho__hki_`imcaZ`gdebS,Zu#CWy,                                                        4&Ur4Sg*Qi*Rk-Un-Wr/Xs0\w2^z3_}3b5c6f7g6e9j:l9m;o<p=r>s>s>tAxAzB{B{B{C}C}C|FGDEFGGHHEGA~4ml_`dKml{umtozolliolulmgu|~ynyrepxtlzyocllhdhXfjmWfdsyhZdVRblhkfld{s\WscmfdgYfxgdfLml{umtozolliolulmgu|~ynyrepxtlzyocllhdhXfjmWfdsyhZdVRblhkfld{s\VrbleceXdvdbcJjhvpinisieebgckbc]iunW|&Vs5                                                    %!5BV*Xu)Oe*Ri,Sl-Vo.Wr.Xs1\x2^z3`}4b5d6f7g7g7f:l:n;n<q=r>s?u?vAxAz@x@wC|C}C{B{FGFFFGIGFEFA~3ledexdR^}vhdbvdba]kehheYhxxk^pu[ltpeYlgfkptvmmujf_dzlakujQgulpfhTjum3ioZwh`jcVplj{eR^}vhdbvdba]kehheYhxxk^pu[ltpeYlgfkptvmmujf_dzlakujPfulpegTjtl3inYvf_haTmigwbPZxqc_]p^\[Vc]__\Q]kkp,]z!6CV%                                                    
+%Oh5Vj*Pg*Rj,Tm,Tn-Vq/Zu1]x2^{3`~3`|4b5e7f8i8h:l:n;o<q<p=r>s?u@v@x?v@xB{C}C}D~FGGHHHIGEEFA}4mhlhwwmWaqspfuihrgogp}kmsdnocvv]Z^ukpvgZRxylxvnmvn[]pr~}cMmiyt~t^ouRhqpztpobtumzxmWaqspfuihrgogp}kmsdnocvv]Z^ukpvgZRxylxvnmvn[]pr~}cMmiyt~t^otQgpoxrnm`qrjvsiT]lnkancaj`g_gvqabgZbDl%Pk+
                                                    1&Zy.Od*Ph*Rj,Tn.Wp-Wq0Zv1]x2_{3_}3`|4b6e7g8i9j:l:n;o<q=r=s?u@wAxAzB{C}D~DEFFGEGHHIGEFF@{4m_h_cqmprz~w^rzeynnZ]}}vSWr{vMfoXeU{gXswiacmhov{nxlhgwediqdecfmvx}s{ysrvseq~qZiqcermprz~w^rzeynnZ]}}vSWr{vMfoXeU{gXswiacmhov{nxlhgwediqdecfmvx}sz~ysqurdo}|oYgn`bnilmtxqYkr^pffTVqqkKNel['[z1                                                    !6BM*Yu)Of*Qh+Sk,Un.Wq.Yt/Zt0\w2_|4`~4c5d6f6e8h9i:l:n;o;p=r>t?u@wAxAzB{AyD~DD}FFGEFHHIIFFFA~4l_kom|qxl_Rjpm{jbpxfgrfbjYw}f\{tg)Z|jy`kmxupVjkxsjtbccte`pmgjpxjt{tax{{kUnjhlittp}qxl_Rjpm{jbpxfgrfbjYw}f\{tg)Z|jy`kmxupVjkxsjtbccte`pmgjpxjs{saxzzjTmhfjfqqmymsh[Oejgtc\hn^^h]Y`Piqm,]z!9GP                                                    !$Lc1Ui)Of*Qi+Sk,Tn-Vp.Yt0[v1]y1]z3_}3b~4b4b4b7g9j:l:n:m;n<p=r>s?u?t>uAzAyC|C}C|EFGGHHHHIHHGA~3kM]f^]HYpmqpZrwUjruejzkq`\nymqjj[cryhtjqswmkwufVXqr|j{|limkjyVh\supuYr~\bUek`^HYqmqpZrwUjruejzkq`\nymqjj[cryhtjqswmkwufVXpq~|j{|limkjxVh\rtntXp|Z`Tch][FVl{hkjUkoObil\anaeVRajDl$Mf!                                                    #&Uq3Re)Og*Og)Ph-Tn-Wq.Yt/Yu1^y3_|3`~4b5d6f7g6f7g9i9l;n;p=q>t?t?v?t@xB{C}C|C~D}FEGGHHFGIHHGA~4mYbh}uY[alxxq_fzj`cltqzxuckmqlmpobpstqmjexmqzwuv}e_`sbjvx~xpmjlZZ~lx`mxozifxjabjmvY[alxxq_fzj`cltqzxuckmqlmpobpstqmjexmqzwuv}e_`sbjvx~xpmjlZZ~lw`lwnxgduh_`gj|rVX]grqkZ`rbY\cjgsmkhX_`Ho&Uq#                                                    $&Xv/Ma)Nf*Qi*Qh-Vo.Xq/Yu0[v1^y3_|4a4c5d6f7g8i7g7f8k;o<q=r>t>s@wAxAzB{AzB{C}C{D~DGFHHHIIHHF@|4mUXd||srJPsxhrcq|hfkx_zrlzu{{unpjxqklxYL{e_[^{{qmdzuYTqmhbsstv^rzu|qnkxq^_i}srJPsxhrcq|hfkx_zrlzu{{unpjxqklxYL{e_[^{{qmdzuYTqmhbsstv]ryt~zolivo\]f{xonGMnrbl]jsa^bnWngalhlkRz&Yw$                                                    %'\{(H])Og)Of)Qh,Tn.Xr/Yu0[w1]y2]z4a4c5d5d6e8i9i8i:m;o<q=q>s>t>tAxAzB{B{AxC}EEEFGGEEHIHHGA~3klm]ort{f`cxq}qrnYwcak[k|w}louVnzw}eYn}xxaPmvdcsnxxdPnConpclekxf}yx~qorzyvarst{f`cxq}qrnYwcak[k|w}louVnzw}eYn}xxaPmvdcsnxxdPnConpblekxf|yw}ompxws^noovb\^rkvjjyxeRlZXaR`nhmi'\|%                                                    %'\}'J`)Og*Qi*Ri+Rk,Tm.Xs0[w0]x1\x3^|4b5c6e7g8i9j:l:n;o;o<p=q<p=rAxAzAyAzC}DEFFFEHFFHHHHGA~3k_lmxlqem]wrrp^T~qj{{zkZ_^Wz`crLdlsfYgTurephjp^wVi~kbZmnB@~gnhfuskvqjur{mqem]wrrp^T~qj{{zkZ_^Wz`crLdlsfYgTurephjp^wVi~kbZmnB@}fngetri}}togrowjm|ahYqlliXNthapsnm`QUSNb']}%                                                    %']~)Ne)Ph+Rj*Rj+Sl,Tm.Xs0[w1^z3_|4a4c5d5d6e8h9j:l:n:m;o<p=r<p=r@vAzAyC}D~C~D}FFGFGHFFGHHGA~3lqqanpuz~eqlvWxsmmysssGrssvr_fnmxndd|{sntt~sYo~Z}sgqykppJpkiih~zhjm{~{fqquz~eqlvWxsmmysssGrssvr_fnmxndd|{sntt~sYo~Z}sgqykpoJojhhg}yghky~{xcmmq{ux`|zjenQoziccwslffe@`'^%                                                    %']~(Lc(Og+Rj*Sl-Vp.Wp.Yt.Wr0]x3_|4a4c5d5d6e8i9j:l:m;o<p<p>s>s@wAxAzB{C}D~DD~EFGGFEFHFFHGA~4mup}sctw{]awzqi]r~gvv~XYjrzddo~pzl~v||zylm|ZWzirYjv}scvrmswokwtv_l{}|^mzvdtw{]awzqi]r~gvv~XYjrzddo~pzl~v||zylm|ZWzirYjv}scvrmsvokvsu^ky|z\kvra{oruY]pxrwzzg`Ugq]hhoNN'^%                                                    %']~)Ne)Ph+Rj+Tm-Vp.Xr.Xr.Wr/[v1]y2^{3a}5d5d6e8h9j9k8k;n;p=r>s>s@wAxAzB{AzC|DEFFGFGEGIHHHGA~4mgNgpJs[u{wln|mOm^myzr}nnllmaowywvXnzejf}iu||mttltrw}nwvqmtomorkqslp~rpjsTlsKs[u{wln|mOm^myzr}nnllmaowywvXnzejf}iu||mttltrw}nwvqmtomork~qsko|qnh~pRjpHoXpuqghtgKfWeotngpcb`__U'^%                                                    %']~)Ne)Ph+Qi+Tm+Sl.Xr/Zu0\w1^z2^{2]z2`|4b4c5c6e9j:l:n8j9l<o>s>r>tAxAzB{B{D~C}D~FED~EHHHIIGHGA~4m`e|akh^r^hvemdfffss{|w~tmouadoet|jskYvuw|wytrpw|iss|mpzknbkh^r^hvemdfffss{|w~tmouadoet|jskYvuw|wytrpw|hrrzlnxil~_hd}~|YlyXam]e[]\\gfrswq'^%                                                    %']~(Md(Ne*Pg+Tm,Uo.Wp/Zu0\w1^z3`}4a4c3`|4b5d6f9i:l:n;o;o:m=r?u?vAxAzB{C}D~B|C{D~DDGHHHIIGED?y3jokq~wj}z|i[ociktYnryky}l_fxsylxpo{lZizotiotrvtt|[t{hfflygy}txxj~{}i[ociktYnryky}l_fxsylxpo{lYiyotiotrvtt{[szgeekw|evzqt}sfxuvcVh]b}cjQdtfk_qviw'^%                                                    %']~(Mc'Md*Qj+Tm-Vp.Xr/Zv/Zt0]y3`}4a3a}4a~5c7f8i9j:l:n;o<q=r>t?u@wAxAzB{C}D~DEFFGGHHHIIFEGA}3jy`hk~ln~txwptsnv_afTrz}pIFnj^omo}}~wn^j{}wfu}q}~v[_|Z]in~tuxi}hmnln~txwptsnv_afTrz}pIFnj^omo}}~wn^j{}wfu}q}~v[_{Y]im}ssvgzfjkzhjxorpilkyz}xvsciUWZJc'^%                                                    %']~)Nf(Of+Rj+Tm-Vp.Xr/Zv.Ys0\w2_|4a4c5d6f7g8i9j:l:n;o<q=q>t?u?u@vAzB{C}C}DEFFEGGGHIIHHGA}3kzr}wUMqkw{hhahqvxfef]^^QQtr`qS{{kpwvs{kq{t{{~`e}mxss}pfu{q_rma|xUMqkw{hhahqvxfef]^^QQtr`qS{{kpwvs{kq{t{{~`e}mxss}peuzp^q~k_y~tRKmgqx|sbaZ_hlm\[[SSSHH'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z3`}4a4c5d6f7g8h7f7f8j:l<q=r>t?u?u?uAzB{C}D~DEFED~DGFGIFHHF?y3k^\SxkZh[o|enrccoshiqeygkcRe`Whwpvxt{zqwl\aupqs~w\WshNVrvuJhcW{kZh[o|enrccoshiqeygkcRe`Whwpvxt{zqwl\aupqs~w[WshMUqtsIe`Uw~hWcWjv_hzyj\[fvyh^^dsqrX'^%                                                    %']~(Me)Og+Rj+Tm,Tn-Un.Yu0\w1^z3`}3_|4c5d6f7g7g7e:l:n;o<q=r>t>s?uAx@yAzC}B{DEFEEEGHFGFGHG@}4mbe]jtz{}\Wmsxxp~{|sxx{ogyt_i|xszpx{`_xp]tmmxxufysulmzq\/1v{mtqswmmamuz{}\Wmsxxp~{|sxx{ogyt_i|xszpx{`_xp]tmmxxufysullyp\/1uzkroqtjj^jquwxXSzfkonfuzruvmmetg'^%                                                    %']~)Nf)Ph+Rj*Sl-Vp.Xr.Xt/[v0]y3`}4`~4b5d6f7g8i9j:l:n;o<q=r>s?t@wAx@x@xAzD~C~EFEGGHHFFFFHG@{4mjqnq{vviRowc~pxzqux|v]fxqsvityu\opaprykttiaeomgmt|rttow|~Xztqqwv{st}vviRowc~pxzqux|v]fxqsvityu\opaprykttiaeomgmt{rttow{}XyroousxpqyqqeOiyp]u}gnoufiknqhSYg'^%                                                    %']~(Lc)Ph*Ph*Qi-Vp.Xr/Zv/Zu1^z3`}4a3a}4b6f5c8i9j:l:n;o<q<q>t?u@wAxAzAyAzD~DEFFFGHHFFGFFG@|4llrtpekkgmi]`uvr{okl`p{grho|cOxdtptqcZmzvvpvju~poraqzQkzxtmenvxmzx|wqekkgmi]`uvr{okl`p{grho|cOxdtptqcZmzvvpvju~poraqzQkzxsldmtvkwuysmbg|fbgcXZmmipueaaWcloZc'^%                                                    %']~)Nf'Md*Ph+Tm-Vp.Wp/Zv/Zu0]y3_|3_}4c4b5c4b7h9j9j:m;o<q=r>t?t?v?u@xB{C}D~C~EEEEGHHHGGGHFA~4ll{jdtpx{sk~xV`_xvrtrstieracwvtxu|w|sxqpqjxXfuurm{veEzc`xmetpx{sk~xV`_xvrtrstieracwvtxu|w|sxqpqjxXfuurmzueDxb_ujbplrumevpQZXnykguhee{e\'^%                                                    %']~)Nf)Ph+Rj+Tm,Uo.Xr/Zv0\w/[v1]y3`~4c3a~4b5c7g9j:l:n;o<q=r>t>r>t?u>uAyAzD~C~EDFGGHGHIIHHF@{3js|}yw{mrjy~xg|y|wswp|z|ojxev|xsn`up|n||nlMnpVhsw{hrvxq|x{mrjy~xg|y|wswp|z|ojxev|xsn`up|n||nlMnpUhsw{hquvo~xtw}hmeryzuo_rynsovvqqhd'^%                                                    %']~)Nf(Of*Og*Ph+Qj.Vo/Zv0\w1^z3`}4a4c3a~4c5d6f8h:l:n;o<q=q>t?u@wAxAz@xC}D~DEFFGGFFHIIHHGA~4lnzdiy}~^nsloqkkhnbzxrru}z{s{Xg~|fV|dht{us{}yrty}Mi~~~ztvy~g||diy}~^nsloqkkhnbzxrru}z{s{Xg~|fV|dht{us{}yqsx|Mh}}}ystw|eyw`eswwYgk{cef``]aWjhb'^%                                                    %']~)Nf)Ph*Qi*Rj,Tn.Xr/Zv0\w1^z3`}4a4c5d5c5d7h9j:k:n;o<q=r>t?u@wAxAzB{C}B{DEDEGGHHHIIFGGA~4mhyxVToyxzfs}fmx~uVvnttrTc\ekrn~itwrmqxpqlxpltywujc~d}z{xat|yVToyxzfs}fmx~uVvnttrTc\ekrn~itwrmqxpqlxpltywuib}c{yyv_qxuSQjsqr`kt^d}lqiNhaspd'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Wp.Xs0\w1^z3`}4a3a}5d6f7g8i9j9j:n;o<q=r=q=p=r=p>uAzC}C}B{DED~FDEGHIIHHD?y4m9Yn~r}tzokqko[u}^xgkuy}qv}v|yv}{vst}z}znsq^^{wvt{fxf>`qr}tzokqko[u}^xgkuy}qv}v|yv}{vst}z}znsq]]zvurydvd=^mzmwot~iejdg{Tk{qTsi[]e'^%                                                    %']~)Nf)Ph*Pi*Rk,Tm.Vo-Vq0[v1^z3`}3_|3`|5d6f7g7g9j:l:n;o<q<p<p=p=rAxAzB{C}D~DD~EEGEFGGIIHHGA~4mIX~uz_rtvYtx`tfi~l^^c~|lP~y}tul{u}ygshnqgoZhrnu~xmP_uz_rtvYtx`tfi~l^^c~|lP~y}tul{u}ygshnqgoZhqmt|vk|N]}{pt[lno{y}SjmXh{[]sn^R'^%                                                    %']~(Md)Og+Rj+Tm-Vp.Xr/Zv/[u1^z3`}4a4c5d6f7g7g8h:l:m;n;n<p=s>s?uAxAzB{C}D~C~EFFFGFEGIIFGGA~4mmisxy|~}ztvmxswumcuf|Nkvvtlngfh|wosyksuzsjolbr_vmw|kzryxy|~}ztvmxswumcuf|Nkvvtlngfh|wosyksuzsjolaq^ulv~ziwovssuvurvzk{lclz}fitoe'^%                                                    %']~)Me(Og+Rj+Tm-Vp.Xr.Xt.Ys1]y1]y2]z3a}5d6f7g8h9j:l:n;o<q=q>t>s>s@vAzB{C}C|B|D~FFEDFGEGIHHFA~3ljovxtevgiqmok}{}pmsb~n|rzvkrogatytwsyqticRvp{vy|ytevgiqmok}{}pmsb~n|rzvkrogatytwsxpshbQtnxsvy~up`}xo`bhe{z~vxb^w|'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr-Wr/Zu1^z2]z3^|3b~5d6f7g7g8h9k:n;o<q=r=s>s>t@v@y@x@xC|C}EFFGEFHHIIHHG?{2i|ramtkyvi~|uXolo}_wkoudjtbvekf^}aW{v[xosyuyykz~mNm||fpukyvi~|uXolo}_wkoudjtbvekf^}aW{v[xosyuyykz}~~lMl}zycmqgtqdw~wslRfceunTgt'^%                                                    %']~)Nf)Ph+Rj*Sk,Uo.Vo/Zv0\w1^z3`}2^{3b~5d6f7g7g8h:l:n;o<q<o>t?u?v@v?v@wAyB{C~DFFGFHGHIHHHGA~3jak~unqo^akkr~xsrWNqqo{yxngtk^tvyudlbjojLj~si|wpqz{mltxoqo^akkr~xsrWNqqo{yxngtk^tvyudlbjojLj~si|wpqz~ykjqtlmkZ]fflwnjhPHe|caj'^%                                                    %']~(Ld)Ph+Rj+Tm-Vp.Xr/Zv0\w0\w1]y2^{2`{3`}5d7g7g8h9k:n;n;o<o=q=r>sAxAz?v@xD~C}EFFGGHHHIIHHGA~4mbnxrf\y}{zyW_trx}xmsfs{|jsw{fg}||{mxyrf\y}{zyW_trx}xmsfs{|jsw{fg}{{ykuunaXsv{szypsnOVhztdhm'^%                                                    %']~(Me)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z1\x3_}4c3`|4b6e6f7f8h:n;o<q=r=r>r>tAxAzB{B{BzB|D}FFGGHHHIIHHGA~4mP`tkMvRgpx~ueeTytzsro{nxt~x}qiwvtjw~yceugueXhzlMvRgpx~ueeTytzsro{nxt~x}qiwvtjw~ybdtftdVfwiKryNbjvo{usj\[Lkpsue'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv/Zu1^z3`}4a4c5d6f5c6e7g9i9k:n<q;o=r?u@wAx@yB{AyBzB{C}EFGGGFHIHGFF@|4lR]timhbNPmrm|m|kxn}xpsxs~l\\rsbpmnpii|}nvyokZmtnz~onbopkv{T]pvae`|~[IKewyy~ie{w~yzrez~rcnesnuhl|ur~l\\rsbpmnpii~tytaw~xxwixyrXcw}fid]KLfyzy|hcxtzttl_'^%                                                    %']~(Me(Og*Pi+Tm-Vp.Wq/Zv/Yt1^z3`}4a4c4c5d5d6f9i:l:n9l:n:m<o>r?uAxAzB{B{BzB|C}EFGGHFHIIHGF?{4mfVc|swx|]nvrs}mex||h|{th\\Fw7i}PuZz[{OuVyRv8i|OuZ{\{QvHqMsOuNuKrWyRvSwUxYzWyJrCoUwQvKrUwUwOuEoQv^}]}UwXzNtBnHqUxOuVy_}QvQv\{SwUxBnKsPu\{UxNtNuTwKrFpQvSw]|_}`~SwHq]|bYzVyVyZ{Sw^}UxUwQvMsQvBn7h{PuZz[{OuVyRv8i|OuZ{\{QvHqMsOuOuNx__hsk`~wm}}saw|p[f|q|rsvxXgnuijrc\lo|~l['^%                                                    %']~'Kb(Nf*Qi+Tm-Vp.Xr/Zv/Zt1^z3`}4a4c5d6f7g8i9j:l:n;o9l<p>t?u?u?u@xAzB|D~B{EFEGGHHFIIHHGA~4moifmxwp{hpUn~y||lptaj|}m^~JfqK`hGX]S^aEPPLWVKWWKXYKY[MX[NX[JVZLWZMX[PY\PY\PZ\QZ]R[]QZ]MY[LX[PZ\PZ\QZ]Q[]Q[]Q[]NY\NZ\P[]OZ\KX[NY\OZ\NZ\NZ\P[]P[]NZ\O[]P[]NZ\NZ\R[]Q[]NZ\OZ\P[]OZ\P[]NZ\O[]MY\NZ\KX[NZ\P[]OZ\P[]R[]PZ]NY\P[]PZ]NY\OZ\R[]R[]LY[OZ\S\^Q[]Q[]MY[OZ\PZ\R[]Q[]QZ]PY\OY\PZ\MX[IVZLXZLXZMX[NY[NY[NX[IVZKWYMWZLXZKX[LXYOXXQYWLSRT_aEU\K\bJajWtetjrvVntpm{nyyoijt{r|jtbiPgtpr~pbvsdf~|U'^%                                                    %']~(Md)Ph+Rj+Tm-Vp.Xr/Zv0\w0\x2^z3_}3a~5d6f7g7h9j9j8j9l:m=q>t?u>t?u@x?vB{D~DEFFFDD~D~HIIHHGA~4mqmj}}mswppxoQuzkgxTXt|m]dTtIcjijxn`tossadhafmiqwknvrlvykxjzsnsmspoqqorrprrprrpssqssqssqssqttrttrttrttruuruusuusuusuusuusuusvvsvvsvvsvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvtvvsvvsvvsvvsvvsvvsuusuusuusuusuusuusuusuuruuruurttrttrttrttqttqssqssqsspssprrprrorroqqoqqnqqnqqnppmpplqorlrhxxivqjtiltgpu_dkadinprqbsgfoPdfJgtf|vtps{{zy{oizyz~hmp~iiovyeJim_[isJ'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z3`}4a4c4b6f7g8i9j8i8j;o;o=r>t>s@wAx?vB{B{BzC~EFFGFFFFGGEGGA~3jlpeyxrtpcxuvnoxcgn|~sCrOfnqpnwcb`Tdddhqn\slatjevhixgiygjvijtjkxkjzlizki{kj{lj{lj|lk|ml|ml}ml}nl}nm}nm~nm~nm~om~on~on~on~on~onpnpnpnpnpopopopopopopopopopopopopopopopopopopopopopopopopopnpnpnpnpn~on~on~on~on~on~on~on~on~om~om~nm}nm}nm}nm}nl}ml|ml|ml|mk|lk{lj{lj{kjzkizkizjizjhyihyigxigvihrhitghwehvegtfgqhbqj`po\ffkgYk|eeqmiTdjWvruxwwv}vsdvt{lzlhz|ZliibbiW'^%                                                    %']~)Nf(Nf)Og+Tm-Vp.Xr/Zv0\w1^z3`}3`~4c4c6f7g8i9i:l:n;o;o=r=r?u@wAx@yB{AzBzB|C{EEGGHHGHHFGGA~4ltu}s{||nP|}yqcex|fjSoybsvggiqTbtcknp`ph_oeyfpU{LB??AFIHHIIIJJJJJKKKKKKLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKKKKKKKJJJJJJIIIHHHGGGFFFD?==@IRydmmbvme\kl]uckv[flhmgqsEbm]hz~~xj~uzowvuwgKxrrmftYZi|'^%                                                    %']~)Nf(Og+Rj+Tm-Uo.Xr.Yu0\w1^z3`}4a3a~4b4b5c5d8h:l9k9l:m<q<o=q>t@v@xB{B|D~C}EFFGGHHHGHHHG@}4mzl~|o}}rxny|po{PKitut}fW^`efqmm{_kSvv3(01*&$$$%%&&&&&&''''''''''(((((((((((((((((((((((((((((((((((((((((''''''''''''&&&&&&%%%%%$$$$###%)/.'1Ossx[hnhj_ffk\dpmxXjsRs|{{vx}iywjwvjozen{o}svcas'^%                                                    %']~)Me(Of+Rj*Sk-Vp.Xr/Zv/Zu0\w2_|3`~4c5d6f7g8i9j:l:n;o:m:l;n=p?v@v@yB{C}D~DEFFFGHHHIGHHGA~4mli~twrvxoseump|py`mSkvsrnP^Tqncebkgu70'%-4hdsa^mlaUfYsok^jr]wtw|tvo{psnqrimz_ludf{n|obi'^%                                                    %']~)Nf(Og*Qi*Sk-Vp.Xr/Zv/Zt/[v3_|4a4c5d6f7g8i9j9i:n;o<q<p>s>s@wAxAzAyC}D~C}EEDEGHHHIGFGFA~4mocvwv~}{lx}||vovfas{hgmY`SyvXhX`s2&!  !!!!!!"""""""""########################################"""""""""""""!!!!!!!!     $/\pdRtqT]dWhgmbqwj{yiytryxufquysuqke{t~vk'^%                                                    %']~)Nf(Ne*Pi+Tm-Vp-Tm.Yt/Yt1^z3`}4a3a~5d6f6e8i8h8h8k:m;o<p>t>s>t@w@yAyC}D~C}C}C}C~FGHGHGHHHGA~4mqkot~~myfnxw{tmXr{qotV[Ssqhq`iQy* !  #"""""########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########"""""""!!!!!  !'Mun\enmd[aWpmqXnvgy~{qqpyy~gr`yfv~mlusmf|q'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w0\x2^z2]z2_{5c5d6e7h7g8h8j:l;o=r>t?u=r@vAzB{C}C|C}D~EEGGHHHIIHGGA~4msstfvpm~ivqpjouZ{|P^Or_s_l<} 8yoZhnYReQ}s~]vrr}~zwcqjwf}~talgf`chsrk'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1]y3`}4`~3b~4b5d6e7g8h8h8k:m<p=r>t?u?vAxAzB{C}C|B{C}EFGGHGFHIHGGA~3jzu|ornC~etz}{w{nzg]y~eOhhzWbhIz!         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!            
Ev]bcwQkTm{v]v|n~|opjAx~`n}yrw~splocqlx`le'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z3`}4a3b~4b6f7g8i9i:k8j;o<q=r>t?u@wAxAzB{C}D~DEFFGEEEEGFGHG@}3kwuyzVpt|zh}~kf~ffhcfjggQm-&          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!         #*Kh`bbchffhfy|cy|v~vSk{~xnuyrasusszrtptplo'^%                                                    %']~)Nf)Og+Rj+Tm-Vp.Xr/Zv0\w1^z3`}3_|4c5d6e6e7g9j9i:n:m<q;n>t?u@w@v@yB{C}D~DEFFGEFFGHIHHFA~4mjy~v}~nzyt|wvbq}UdR|odgb2(       !!!!!!!!!!!!""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!       %.b\|wh^XfRm|v[yq~tt{qwxwzyfqojx~ojurxlx'^%                                                    %']~'Kb(Md+Rj+Tm+Sl.Xr/Zv/[v1^z3`}4`~4c5d6f5d6e9j:l:m:m;p=r>t?u@wAxAzB{B|D~DEFFGFFFGIHHHF?z4mYm||v|v~x}eQa]fu]dcB!%       !!!!!!!!""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!       #=^]apVSeb}`}}atw||ouum~swuloxndiu'^%                                                    %']~(Ld)Ph*Ph*Rk-Vp.Xr/Zv0\w0\x2^{3^|3a~5d6f7g8i9j:l9l;o<q;n=q?u?v@vAzB{AzD~DEFFGGGHHIHHHGA~4mmauryup{x~uq]~c^awl_Zr'       !!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!      $Tm}qfXd]`y|Yxuxgxr~ztz|~niqwnx~qimmfbm'^%                                                    %']~)Me)Ph+Rj*Rj,Tn.Wq/Zv0\w0]x3_|3_}4c4b6f7g8i9j9i8k;o<q=r=r=p=rAx?wAzAzD~DEFFGGHHHIHHHGA~4lzcrt{yyz{v}oQ`Ziku`m5#%!"!     !!!!!!"""""""""""##########################""""""""""""""""""!!!!!!!!      ! 0nXf}bdRb^xfmiutx~}tt|}ss|vulqzvwve_`l'^%                                                    %']~)Nf)Ph+Rj+Tm,Tm-Un,Uo/Zt0\w2^{2]z2`|3a~6f6e8i9j:l:n;o<q=r>t?u?u@w@xAzC}D~DD~EEEEHHHIIGHGA~3kuuza~qNdVghUm&#      !!!!!!""""""""######################################"""""""""""""!!!!!!!!      "Mg~_aKdU`h{|xz_~~~yzu{x~uwq{}r'^%                                                    %']~)Nf)Ph+Qj+Tm,Tm-Tm.Xt0[v/Yt2^z4a3b~4c5e7g8h7f7g9l;o<q=r>t?u@wAxAzB{C}D~DD}EEFGHHGGIHHGA~4mwxzzktzxyyxsz~~|oovsji`n\pibI('     !!!!!"""""""##############################################""""""""""!!!!!!!     ##Bha[]iWqhgp}hi}whpytrrqpkvpsrpep~~oe'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Vo.Xt0\w0]y3`}4a4c5d5d6e8i7g8i9l:m<q<q>t?u>sAxAzB{C}D~DC}D~DFFHHHHIGGFA}2i{~}nv}}|}k[V_yhjdup*#!   !!!!!"""""""#########$$$$$$$$$$$$$$$$$$$$$$$$$#################""""""""!!!!!!!    &\nir`b[Y_gujqvwu}szsztuxlssh'^%                                                    %']~)Nf)Ph*Ph*Rk-Vp.Xr/Zv0\w1^z2_|3_}4c5d6f6e7g9j8i7i:l<q;n=r?u@wAxAzB{C}D~DEC|EGGHHHIIHGF@|4lrzrwuzor^]]cdqT      !!!!!""""""#######$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#############"""""""!!!!!!     J{z[gWW`zqj~uw~o~ryyfh{`av~xW'^%                                                    %']~)Nf)Ph+Rj+Sl,Tn.Wq.Yt/Zu1^z3`}3_}3b~5d6f7g6f7f8i9l9k;n=r=r=q?vAxAzB{C}B{AzEFFFGHHHIIHHGA~4mo{ri~}vyz{lsntpifeuimC   !!!!""""""######$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########"""""""!!!!!!    5de`j_gdmifszzmex|zunyooxojpay}j'^%                                                    %']~(Lc(Of+Rj+Tm+Rk.Vo.Ws/Zt0]x3`}4a4c5d6f7g7g7f9i:n;n<q=r>t=q>t?t?wAzC}C|C}EFFFGHGHIIGHG@{2i`qysq_opj{~pZ_gumghpt/!   !!!!"""""######$$$$$$$$$$%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$########"""""""!!!!!    "Dbdhlcjlef[gojix|so\k|~}j}cuz~prrvges{'^%                                                    %']~)Nf)Ph+Rj+Tm,Tm.Wq/Zv/[v1^z2^{3`~4c4b4b~5d8i9j:l:n;o<q=r>t?t@wAx@xAyAzB{B|C|DEFGFDGIIGGG?z3jku|nqvvztwwVUb~ndY{ "   !!!!"""""#####$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$#######""""""!!!!!     *7Esahiqf\kavlaqv`i\cmfu|kmq|~osvknv|w}|yjoqs'^%                                                    %']~(Me)Og*Pi+Tm-Vp.Xr/Zv0\w1^z2^z2^{3`|3a~4b6e8i9i9j9m;n<q=r>t?u@wAxAzB{B{C}C~C}BzDGGEEHIHEHF@|4lglw_f{x|{toj`l}laL"   !!!!"""""####$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$#######""""""!!!!!    *9>{Momh^kgQtlUykYhk]hii`dq\bp]dkqqrz\bt~q|squiwr|x|{v'^%                                                    %']~)Nf)Ph*Pi*Rk-Vp.Vp/Zv0\w1^z3`}4a4c5d6f7g8i8i:l:n;o;p<p=q>r@w@v@xAyAzD~DEEFGFHHHIFFFGA~4l~}o{twnwvjysipup`C!     !!!""""#####$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$#######"""""!!!!!    /4BydknfQiTg\zhmdkrfduvbuohgpl[]laUfmg_nxqvor~||we~lkrdp}x}'^%                                                    %']~(Lc)Ph*Qi+Sl-Vp.Xr/Zv0\w0\x3`}4a4c5d6f7g8i8h9i8k:m;o<p=r=q@w@w?w@wAyC|DEFEFFHHGIIHFF?{3kr~{rujuroysqnht^;#   !!!""""#####$$$$$$%%%%%%%%%%&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%$$$$$$$$$######""#""!!!!!    *4Mwzmigbhetknhmreppdokipfsnd|bql_{]hnzlZtlWcfif`nr}~v|m~~mc{u}qdhg`y'^%                                                    %']~)Nf(Og*Qj+Tm-Vp.Wq/Zv.Xr1^z2^{3_}4c5d6f7g8i8h9j:n;o;o=q>s?u@w@v?w@xC}D~C~EFFFEGHHIIHHF?z3kuymynowtqhaui7"   !!!!""""####$$$$$%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%$$$$$$$$$#####""!!"!!!!!    #/I~qos|p\tsZknsmotoonnqlnrkipiklmrfwhp^ivX_eqVgrlieejd\gfkfjxt{wfztt{vvuRq'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Vo.Yu/[u1]y2^z3_|3`|5c6f7g8i9j:l:n;o;n;n=r?u?u@v?wB{C}D~C~C|FEEGHHHIIHHGA~4l~vpv|pxopqnjaq}/"   !!!""""####$$$$$%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$######"!!!!!!    "&?lslildvrnltviquqqqpppnonnnnpppnnnkkkkjklllhhhhhhihhfffaab\\\gtyskpwqfvnvx~_^'^%                                                    %']~)Nf(Of+Rj+Tm-Vp.Wp.Xs0\w1^z3`}3`~3a~3`}4b~6e8i9j:l:n;o<q=r=r<o>t?u@x@wB{D~C~C|EDEFGGGHIHFGA~4luaz_odqwpqqnjcs/ "   !!!""""####$$$$$%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%$$$$$$$$#####"(# "!!!   '@aytj}grntspuuqotqqqvtovppppppooonnnlllllllllkkkiiihghggf]]]aaaqz~zwg}]kx{y^wiu~~wtroone'^%                                                    %']~)Nf)Ph*Ph*Rj,Tm.Wp-Up/Zu1^z3`}4a3a}3a~5d6e6e8i9j:m;n<q=r>t>r>s?uAzB{C}C}C~EFFGGHGGIHHFGA~4mrwv{rs}yx{zgqrs~miar~0 #  !!!!"""####$$$$%%%%%%&&&&&&&&&&''''''''''''&&&&&&&&&&&&&&&&%%%%%%%%%$$$$$$$#####"(% "!!! 3\wlofprrwruttmwsevrgurxotmupppoooooonnnmmmlllkkkkkkbbb^^^kw|~}s{wl}ltpwnpnnwv'^%                                                    %']~)Nf)Ph*Ph*Qi,Tm.Wq-Up.Xr/[v2^z4a4c3`}4b6e8i9j:l:n;o<q<p=s?u@w?t?wB{AzD~DEFFGGHHHIHGFFA~4mz||px}nooppplcs/ #   !!!"""####$$$$%%%%%%&&&&&&&&'''''''''''''''''''&&&&&&&&&&&&&%%%%%%%%%$$$$$$#####"##!!!!$Mr|~~plts|usvut{ol{oqypowrjuuftthuttqsynqpppooonnnmmmnnnkkkbbbdhj{}xyxuj{ptu|euv{px'^%                                                    %']~(Lc)Ph+Rj+Tm-Vp.Xr/Zv0[v0\w2^z4a4c3`}3`|5c8i8i:l:n;o<q=q=r>r@w@v@yB{C}D~DEEFGGHHHIIHFG?{4mqzmnsrrnbs~.!  !!!!"""###$$$$$%%%%%&&&&&&&''''''''''''''''''''''''&&&&&&&&&&&%%%%%%%%$$$$$$#"#$""(% =issnrvq{szzutxyrukztk{ntur{pwzqywqwopqmtplsoppponoooohhhdddkuy|}{x}~{||}|uyghk]s'^%                                                    %']~)Nf)Ph*Qj*Rj,Uo.Xr/Zv0\w1^z3`}4a3a}4a~5d6e6e7e9i:n:l;o=r>t=q>s@vAzB{C}D~C~C|DFGGHHHIIGGGA~4mi_~zzszzdosrqmcs/!   !!!"""####$$$$%%%%%&&&&&&''''''''''''''''''''''''''''&&&&&&&&&&%%%%%%%$$$$$$##$#""*F[sgxf{txysysz|xzv|vw}s{|uw|tx|rz}nz{oywpuvpqusnqtllllmlmcccvyqrf\~yrrkqx||nkkddcZY'^%                                                    %']~)Nf)Ph+Rj*Rk,Un.Wq/Yu0\w1^z3`}4a4c5d6f7g8i9j9j9l9k:m<p>t?u@wAxAzB{C}D~C}B{EFGGFFFHIHGFA~4mmmio{pzwxgossqmcs/"   !!!"""###$$$$%%%%%&&&&&&''''''''''''''''''''''''''''''&&&&&&&&&%%%%%%%$$$$$$######(?Vftvzqvi~y{|w|uxvzyyox|ixwkztruurryktxgsxkrulopurrxnlmcbhkltqn{dk`xtk{kvk}sz|nowwnoti'^%                                                    %']~(Ld)Ph+Rj*Sl,Tm-Tm-Wr/Yt0\x1]y4a4c5d6f7g8i9j:l:n;n:n;n=q?u@wAx@xAyAyB{DD~FFFGHFFGIHHG@|2iruo~rm{rtsrmbu0 !  !!!"""###$$$$%%%%%&&&&&'''''''''''''''''''''''''''''''''&&&&&&&&&%&%##%&&$$%$#"!8JW||yzhn{{yxt}}}zyzv~ywwzvrywtxw{uvuusowqjvqkvprtpsooiefhjorGI~}|r}mhz~~x{|sw'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Wp-Wr0\w1^z3_|3_}4c5d6f7g8i9j:l:n;o<q=r=q=q@w@v@x?v@xB{DEFEGGHHFHIHHGA~3kz~{hxsntssndu/#  !!!"""###$$$$%%%%&&&&&''''''''''(((((((((((''''''''''''''&&&&&&&&%"'.-"&% #$$!)8Ad|u|x~||zw|z~}|||~|{|y|zzvy{tz{syywxvturw~uustouuqurokfcpprnvd{qy~w{{}xeiv'^%                                                    %']~)Nf)Ph*Qj*Rk-Uo.Wq.Xt0[v0\w2^{4a3b~4b6f7g7g8h9j9k9k<q=r<p<o>s@v?wAyB|D~DEFEEDFHHGHHHG@|4mzy~~z|ru}kjttrnit/&  !!"""###$$$$%%%%%&&&&&''''''''((((((((((((((('''''''''''''&&&&&&%%&%'(''% "0Tpzz{v{}}~~~|~~}}{||z{{yzzzzzyyyzxxzyyvuvsvvqvusttrrsgghkqtwg~~yuyxtxukm~~yuqrht{~jq'^%                                                    %']~)Me(Og*Pi*Rk,Tm.Vo.Ws/[v0]x2_|4a4c5d5e5d5d8h9j8j8i<q=r=r=q>t>s?vAzC}D~DD}FFGFGHGHFGGFA~4m|~ynuv|lttrngt/% !!!"""###$$$$%%%%&&&&&'''''''((((((((((((((((((('''''''''''&&&&&&%%(%'.*#!/C[{~px|~~~}}}||||||{{{zzzyyyxxxwwwwwwwwwuuussslllotvp{{]xu}vxglm}zxvwvm'^%                                                    %']~)Nf)Ph*Pi*Qi,Tm.Wq.Xt0\w1^z3`}3`~3b~5d6f6e6e7g9j9k9l<q=r>t?u@w@wAzB{C}C}DEFFEGHHHGHFGFA~4m{uzyrzwlutrnhu/% !!!"""###$$$%%%%&&&&&'''''''((((((((((((((((((((('''''''''''&&&&&&%$')$&/.Acy{{{}q~~~~~~}}}}}}|||{{{zzzyyyyyyxxxyyyxxxtttmmmquw~vv|}|s|kqvv{woz'^%                                                    %']~)Nf)Ph+Rj*Rj,Un.Xr.Yt/Yt1]y3`}4a3a}4b5d6e8i9j:l:n;o<q=r=q>s@wAxAzB{C}C|C}EFEGGHHHIIGGGA~4m}|~t}zv}{dkttrnhu/% !!"""###$$$$%%%%&&&&'''''''(((((((((((((((((((((((''''''''''&&&&&%&(%&'" *B^y~ou}~~~~~~~}}}|||{{{{{{zzzyyyxxxwwwwwwooollldv{p|vr~muqoknp|yt'^%                                                    %']~(Ld)Ph+Qj+Sl-Vp.Xr/Zv.Xr1^z2^{4a3b~5d6f7f6e9j:l9l;o<q=r<p=q@wAxAzB{C}D~DEFFGGHGGIIHGGA~3k~{~yQshmutsoiu/&!!!"""###$$$%%%%%&&&&''''''((((((((((((((((((((((((('''''''''&&&&&'$&&&%(Q{zvx{~~~~~}}}~~~}}}{{{zzz{{{xxxyyyuuulllxyyw}pny{{uNmx||zvyo{vjto'^%                                                    %']~(Ld(Ne)Og*Qh-Vp.Xr/Zv/Yt0]y3`}4`~4c5d6f6e6e8h9j8k:m<q=r>t>s@w@w@x@xB|BzC}DEFGFEGHIHGGG@|2ie|wumutsoiu/&!!!"""###$$$%%%%&&&&''''''(((((((((((((((((((((((((('''''''''&&&&&&%#'/';nts}~~|~~||~~~~~~~~}}}|||{{{zzzyyyzzzwwwllloy|}awy}n~~}{}zvz'^%                                                    %']~'Kb(Ne+Rj+Tm-Vp.Xr/Zv0\w1^z3`}3_}4c5c5d7g8i8h:k9l;o;o=r>t?t@wAx@xB{C}D~C~D}EEGEFHGGGGHF?z1gtypluusoiv/&!!!"""##$$$$%%%%&&&&''''''(((((((((((((((((((((((((((''''''''&&&&&%$*3(&R{}}yz{~|yx|}~~}}}|||{{{{{{zzzyyyvvvkkl{|pzytxu|{u'^%                                                    %']~'Ja'Lc*Pi+Tm,Sl.Xr/Zv0\w1^z3`}4a3a}4b5d7g7g8h9j8j9l:m=r>t>s@wAx@yAzC}C|DEEFGGFGFGGHHF@|3keyomuusoiv/& !!!""###$$$$%%%&&&&''''''((((((((((((((((((((((((((((''''''''&&&&&&%)(:^~||~wy}{~~}||||||||||||yyy{{{qqqtnzx~vyxns}'^%                                                    %']~(Me(Of*Qi*Sl-Vp.Xr/Zv0\w0[w2^{4a2`|4b6f7g7g6e9j:n:m<q=q=r>r?vAxAzB{C}D~C~EFDGGHEFHHGHGA~4mwl~zsvuv|sofx5"# !!"""###$$$%%%%&&&&''''''((((((((((())((((((((((((((('''''(!%-$$&3Gk~~}}~~~~}}}|||{{{}}}vvvnpp}~|r}~ys{x{rwwomw'^%                                                    %']~(Ld'Md*Qi+Tm-Uo.Xr.Xs0\w1^z3`}3_}2`|4b6f6e7h9i:l:n;o;n<o=r=r?vAx@xB{C}D~C}D}EEGGGFGGHHGGA~4mnxwuuzupcw8!% !!"""###$$$%%%%&&&&'''''(((((((((())))))((((((((((((('''''&)10"!*%9dp~zy~~~}}}|||{{{zzzvvvuvw|utux}~pjlw'^%                                                    %']~'Ja(Ne+Rj+Tm-Vp.Xr/Zv0[v1^z3`}3_}4c5d6f6e8i9j:k9l;o:m<p>t>t?v@w@yAyAzD~DEFEGFGHHHHHHGA~4m~osuuu|upbu7!#!!!"""###$$$%%%%&&&&'''''((((((((())))))))(((((((((((('''''&0-#&)$+Bnu~~~~~~~~~{{{{{{pppr|{~yvz{m{{'^%                                                    %']~(Ld(Of+Qj+Tm-Vp.Xr/Zv0\w1^z3`}3`~3a~5d6f7g8i9j:l:n:m:m<p>t?u@wAx@yB{B|C}DEEEGFGHHIIGFFA~4mvhrst}vqbt~5!"!!!"""##$$$$%%%&&&&''''''((((((((())))))))((((((((((((''''')+'U~z~{~~~~~~}}}|||}}}nnntwZ|wrz~}}{zu{}|zozyn'^%                                                    %']~(Lc)Og+Rj+Tm-Vp.Xr/Zv0\w0]x3_|4`~4c5d6f7g8h9j:l:n:m<q=r>t>t?v@wAzB{C}BzB{AyEFFFHHGHIHHGA~4mztrtu{vpcr~7!"!!!"""##$$$$%%%&&&&''''''(((((((()))))))))(((((((((((('''''(!6$Jzzx|~~~}}}|||xxxoqr{u~quv}~}|}u||r'^%                                                    %']~)Nf)Og*Pi+Tm,Uo.Vo/Zv0\w0\x3`}4a4c5d6f7g8i9i9j:n:n;o=r>t?t@wAxAzAzC}D~DEFEFGHHEGIFGFA~4m|~}rsu{vpcr~8 !!!!"""##$$$$%%%&&&&'''''((((((((()))))))))((((((((((('''''''+&1ow~~{|~~~~~~|||xxxqtu}z~uukmd'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Vo/Zv0\w1^z3`}4a3b~4b6e7f7h8h9j:n;o<q=r>t>r>t@v@y@xB{D~DEFFGGGHHHFFGG@|4mzuoqtu{vpcr~9  !!!""###$$$%%%%&&&&'''''((((((((()))))))))(((((((((((''''''(&&f~|}~}~~}}}wwwqtuyw|p{||zv{mt'^%                                                    %']~)Me)Og+Rj+Tm-Vp.Xr.Xs0\w1^z3`}3`~3a}4b5d5d6f8h:l:m:m;n=r>t>t?u@vAzB{C}C}DEFFFGHHHIHHHG@|4ml{~~m{|wtrtv{vqeq7 !###%&$%$$&'&&&'''''((((((((()))))))))((((((((()(%')'&$&.fz}}}}~~~wwwqsuyzy~z|v}{jwuoy}|ro{'^%                                                    %']~(Me)Ph*Qj*Qh*Qi,Sl/Zv0\w1^z3`}4a3a}3`}5d7g8i9j:l9l;o<q=r>t?u@wAxAzB{C}D~C~EFFEFHHHHHFHGA~4mu~z}~pvtzxnduzA,--/*&"$%'*$!'('(''&'((((((((()))))))))(((((((((&'-& &)/;m}}rzxxxprs||vx}y~wytyz{'^%                                                    %']~)Nf)Ph+Rj*Rk,Tm.Wp.Xt/Zu0\x2^{4a3b~4b5d7g8i8h:l:n;o<q<p>s?u@wAxAzB{B|D~DEFFGGHHHIIHFGA~4mswpuzpuyyku|pF}BNQYSPLB93-0("!%'%#&'&'&&'*+)((((((()))))))))(((((((()#%3($44"r~~~~~~|||pqr|q~|xlp}~}v|'^%                                                    %']~(Ld(Og+Rj+Tm-Vp.Xr/Zv/Zu0\x3`}4`~4c5c5d6e6f8h9i:n:m9l:m=s?u@w@w@xAyB{D~C~D}EFDFGGGIIHGF?z3k}|two~tpxtRMZZ`j{ty}wtxp}r}lcX@61$.!#$")-+++((((((()))))))))((((((((((&$,/$)!R}{{{prsy|uuj|rxv|p{'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z3`}3_}3a}4a~4b5c7g9i:l9l9k9k<o>t?u@w@v@xB{C}D~DD~D~EFGHHHIIHHF?{3l{w~puvzvtVz7''!$.5FXfrwyu|{r~~qV>/'.))*$!%((((((())))))))((((((((((''%(5'F~~~~~~ttt|q|xz}ihywo~{orpk'^%                                                    %']~)Nf)Ph+Qj+Tm-Vp.Xr/Zv0\w1^z3`}4a4c5c5d7f8h9j:l9m:m;p<p=r>r>s?u@xAzC}D~DEEEFGHHHIIHHGA~4m~xxszzqpU}/%"(?Xizv~|}~||^>;#!-%)2%(((((()))))))))((((((((()%%*%($1{vvvz|np~~~^{'^%                                                    %']~(Me(Ne*Ph+Tm-Vp.Xr.Yt.Ys0[w2^{4a4c5d6f7g8i9j:l9m:m<q=r>t?t?v?tAzB{C}D~DEFEEGGHGIIHHGA~3ksvrr]y3 #!#,(3[qt1)40+$ +1(((((()))))))))((((((((((''#$!kz}}}qx{}z|}y|}sykk'^%                                                    %']~(Md'Md*Qj+Tm-Uo.Wq.Xs/[u0\x2^{3_}2`|4a~5d7f8i9j9i:n;o<p<o=r?u>tAx@xB{AyD~C}EEDFGHHHIIGHGA~4mno~trvrto\{5 ) $(('%"$,8fx{i/$-)')(((((()))))))))(((((((((',*"Fopq{umylu~}{zyp'^%                                                    %']~)Nf(Og+Rj+Tm-Vp.Wq.Yt0\w1^z3`}4`~4b3`}6f7g8i9j:k:n;o<q;n<p?u@w@w@xAzC}D~DD~FEFFFGGIGDGF@}4m|pqxrvp^y8 '%))%!2a~{E(.&(((((()))))))))(((((((((',) ={xxxy|xw~zyyyx'^%                                                    %']~)Nf)Ph+Rj+Tm,Tm.Xr/Zv0[v0\w2^{4a3a}5d5d7g6f8i8i9l;o<q=r>t?u@w@vAzB{C}D~DD}EDDDGGHIFEHGA~4m}{xstwstax:!%#!"%$7\R7#",('))((()*))))))(((((((((''& "attt|~v{pz'^%                                                    %']~)Nf(Og+Rj+Tm-Uo.Xr/Zv0\w0[w1]y4a4c5c5d6f8i9i9j:n:m<q=r>t?u>t?uAzB{C}D~DEFEFFGHHHIHFGA~4m~wpvwsrhw3 $$!"$)-'"'Na##0),##*--'&*)))))((((((((((%!?uuupn~stwi}'^%                                                    %']~)Nf)Ph*Pi*Sk,Tm.Wp/Zv0\w1^z3`}4a4c4b6f7g8i8h8h8k9l<q<p>t?u@wAxAzB{C}B{C~EFFGGHGGHIHFF?{3kxromvvtplw/) "####"&($)
*S{X7(-"!+/-'&*))))((((((((((('T~~~tuurwtn~x|xwvppofe'^%                                                    %']~)Nf)Ph*Qi+Sl,Tn.Xr.Xt0\w1^z3`}4a3`|4a~6f7g5d8h:l9m:n;p=r>s=q=r@vAzB{C}D~DAyD}FFGHFGGHHHG?{2hxxt|}rnvvtpjw0& !"""###&("(33%!S{}yb$(&')((+*())))(((((((((('+#&h~~~}}}{|vz~~zrxmwxx~yyzz~s'^%                                                    %']~&I_(Ne*Ph*Rk+Sl-Un-Wr0\w0]y3`}4a4c5d6f7g8i9j:l:n;o;o<o>t=r>s@v@xB{C}D~DEEFGGHHHIIHHG@{2h}|~znwvtpjw0& !"""###&&#!%05%	pvF'!*.(%'.,())))((((((((((&,)5vvv~YZyu~'^%                                                    %']~(Md(Og)Ne*Rk-Vp.Wq.Yu/[v1^z3_|2^{2_z4b6f7g8i9j9j:n;o<q<p=r?u>s>s?wB{C}C|C~EFFGFHHHGIHFF?{3lx}nwvtpjw0& !"""###"!$ 32 B|u2.0%#%..())))((((((((((&%(Nzuvvv}s}pu'^%                                                    %']~(Ld)Ph*Qj+Tm-Vp.Xr/Zv/Zu0\w3`}2^{3`|4b5d7g8i9j9j9l;o<q=r<q=q>s@v>u@xC}D~DEEDFFHHHIHFHGA~4mumvvtpjw0& !"""##$ -()0(%&]B!-0"%&-.())))((((((((((' )kv{zzz}v~wxz}}u~v}'^%                                                    %']~)Nf)Ph+Rj*Sl,Tn.Xr/Zv0\w0]x2^z4a2`|3`}5d7g8i9j:l:n;o<q=r=r=p>tAx@yB{C}D~DEFEGGHHHIHFHGA~4m{nwvtpjw0& !"""##$ "35'$% $SV(-,)))+())))(((((((((((0~wwwz}lsyxw'^%                                                    %']~(Md(Nf+Rj+Tm,Uo.Wq/Zv0\w1^z2]z2^{2`|4b4b6e8i8h9k:n:l9l;o>t?u@wAxAzB{C}D~DEFDEFHHGHHHHGA~4m~nwvtpjw0& !"""####$,/(#%&!Jk0-'0-%()))))(((((((((((:|||{qy|}'^%                                                    %']~(Lc(Ne*Qi+Tm-Vp.Xr/Zv0\w1^z2^{2]z3a}5d6e7g8i9j8h8k9l:m<p>t?t?u@w@yB{C}D~DEC|B|C}DEGGGFHHGA~4mtnvvtpjw0& !"""###$%"#)++-<|z6''2-#()))))(((((((((''Cxxx|{sy}|z|t|'^%                                                    %']~)Nf(Og+Rj*Sk,Uo.Xr.Xs.Xr0[w3`}4a4c5d6f7g8i9j:l:n;o<q=r>t>s@wAxAzAzB{B{C~EB{D~FEGHHIIGHGA~4m{yzmvvtpjw0& !"""###'(#+%!#.&D{*!+%0'&-())))((((((((('%"Jvvvywu|n|}'^%                                                    %']~)Nf)Ph+Rj*Rj+Sl.Vo-Wr.Ys0\x3`}4`~3a~4c6e7g8i9j:l:n;o<q=r>t>s>t?u@xAyB{C|B{C|DEGFHHHIIHHG?{3k]wmvvtpjw0& !"""###%%#(--% "Fj%',#.(',)))))((((((((('&!Jssseurwx~'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z3`}3_}4c5d6f6f7g8h9j:n;o<q=r>t>s?uAxAzAyB|C}DC{FFGGHHHIIHHF?{3llxnvvtpjw0& !"""##$! *0-)&'($MP(,+ ++)*)))))(((((((((''Itttxv}uwz{{p'^%                                                    %']~)Nf)Ph*Pi+Tm-Vp.Xr/Zv0\w1^z3`}3_}3a}4a~5d6e7g8h9j9k;n<q=r>t?u@wAxAz@x@xC|DEFFGGGHHIIHEFA~4mnwvtpjw0& !"""##$!&% (22"&n}<$2+).)))))))(((((((((''Fxxxt~'^%                                                    %']~)Nf'Lc+Rj*Sk,Tn.Xr/Zv0\w1^z3`}3_|3a~5d6f6e7h9i9k9l9l9l<o>t?u@wAxAzB{C}C|AzEEFGGGHHIHGHF?{4mnwvtpjw0& !"""###$$  *+&Vi+"5,(/+()))))((((((((('(?}}}uw}y'^%                                                    %']~(Md(Of+Qj*Rj,Tm.Vo/Yu0\w1^z3`}4a4c5d6f6e6e8h:l9l9l;o<o;o>t?u@wAzB{C}B{B{C}D}DGGHHHIGHEGA~2i}nwvtpjw0& !"""###&)!!(+%/B$0*"(-*()))))(((((((((('4xxxh{|ssr'^%                                                    %']~(Lc)Ph+Rj+Tm,Uo.Wp-Wr.Xr0\w3`}4a4c5d6f7g8i8h:k:n9k:m<o>t?u@wAxAzB{C}D~C~EFEDFHHHHIHHFA~4m~~vynwvtpjw0& !"""###')"+8/*n{}]!&'(+)))))))))(((((((((('"/k~vvvyvu~rk~}'^%                                                    %']~'J`(Ne+Rj+Tm-Vp.Wp-Wr/Zu0\w1\x3_}3a}5c6f7g8i8h:l:n9k8j;n>t?t?v@wAzB{B|D~DEFDFGHHGHHFHGA~4m~onwvtplw/( !""$%# &''7#/mb--'&5+$&))))))(((((((((('%,[|}}}{{{nzrv'^%                                                    %']~'J`'Md*Og*Rj-Uo.Xr-Vq.Xr0\w3`}4a4c5d6f7g8i9j:l9l:l;n<p<o<p=r?uAzB{B|C|C~EFFGGHHGHIHFGA~4mp~txqmvttphw3$$ #!#.. )$!Y{|s.(-''1*%&))))))(((((((((('%"Jnnno{przym~'^%                                                    %']~)Nf)Og*Ph*Rj-Vp.Xr-Vq-Wp/Zu3`}4`~4b4c6f7g8h9j:l9k:n<p=r>t>s>s>s?vAzC}D~C~D~FFGGHHGIIHHF@{3jr|uvrvvtr_x8&!   "**"$#Dd[4")'(*('()*))))))(((((((((((%2xxxxw|~o}~ooy'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Vp.Xs/Zt0\x1\x2]z2_{4b6f7g8h7g8i9l;o<q=r>t?u@w@v>uAyC}C}DDFFFFHHHIIHHG@}3kw~xtvsp_x5"&"",/%(M~xG&+"((((((()))))))(((((((((((%,`~~~uuudtvz{x'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Vo.Yu0[v1^z3`}3`~2`{3`}4b6f8i9j:l:n;o<q=r=r?t@wAxAzAyB|D~DDFFFDHHHIHHHFA~4m}|vrto^x4)'$#%*+( (6:h|zh&#+#"+((((((())))))))((((((((('&"!=}tttix|}z~us'^%                                                    %']~(Kb(Ne*Pi*Rj,Tm.Wp/Zv0\w1^z3`}4a4c4b4b6e8i9j9j8j9l<p=r>t>r@wAx>u?vC}B{C~EFDGGHGHIIHHF?z3ky|ztvsqXz1$# ')0Sz}h()7/#"'..((((((())))))))((((((((('(&$\z~~~rttU{m|yk'^%                                                    %']~(Kb)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z2^{4`~4c5d6f7f8i9j:k7i8j<q=q<p?u?u@wAzAyC}D~DEFFGGEGGIHHHGA~4m}rsv{uqX|1$%9Rk}{rux~Z*+&"('(./'!((((((())))))))((((((((('-*'+~uuugquiy~~s'^%                                                    %']~(Ld)Og+Rj+Tm,Un-Tm.Ws0[v1^z3`}3_|4c5d4b7g8i7g9i:n;o;p=q>t?u@wAxAzB{C}D~DDEFGEGHHIIHHGA~4myzvvv}upYz8(&!*0:Ph}xxz}v|wtZC0*)#,-&$'-.'$((((((())))))))((((((((('*-)!]~~~~pppkwqpxx'^%                                                    %']~(Kb)Og+Rj+Tm-Uo-Tm-Vq0\w1]y1]y4a3b~4c6f6e6f7g8i9k;o<q=r>t?u@wAxAzAyC}C}B|EEFFDHHGIIHHGA~4mkv|unoyuOGRLPp{wwvuxwrzu~sbRC9/($%'!)'#0.(*-((((((())))))))((((((((((&*.#&(hxxxjnoZz}'^%                                                    %']~)Nf)Ph+Rj*Qi,Tm.Xr/Zv/[u1]y3`}4a4c5d6f7g7g7g8i8k:m<q<p=q?t@wAxAzAyAzAyB{EFFFDGHFGGGHG?{3jqs|xnzoO|GzT}V[TUVM?2-0'!%&&'*)$#$'&$((((((())))))))(((((((((('"';( Frrrbmql~'^%                                                    %']~)Nf(Nf*Og*Rj,Tm.Vo/Zv0\w1^z3`}4a4c5d6f6e8i7e8h:n;n:m:m<q>r?u@v@xAyB{C|DEEEEDFGHHGGHG@|4mutwtnkuzC.033+)(###""%&'&()'#$''%((((((())))))))(((((((((((03!a|uq}}}ttt_szb'^%                                                    %']~(Lc)Og*Ph*Qi,Sl.Vo.Yt0\w0\x2^{3`~4c5d6f6e6e8h:l9l:n<q=r<q?u@wAx@x@wB{D~DEFFGFHHHIIHHGA~4mrttzvq`q4!#$#%%$%&&%&&&%&'(('()((((((())))))))((((((((('++'8+1n}{{{hjkZqzk'^%                                                    %']~(Me)Ph+Rj*Ph+Rk.Xr/Zv.Ys/Zu2]z3_|3a}4b5d6e7g8h:l:n;o<q=r>t?u@w?uAzB{C}D~C}D~EEFFGGHIIGGF@{2iwqtu{vpcr~8  !!!""###$$$%%%%&&&&'''''((((((((()))))))))((((((((%09&(2+#1p~~~wwwkmnXr{y}'^%                                                    %']~)Nf(Og)Og*Rk-Vp.Vp.Yu0\w1^z2]z4a4c5d5d5c7g9j:l:n;o<q=r>t>r?v@v@xB{B|B{B|C}DFGEHHHIIHGF@|4lpyrtu{vpcr~8  !!!"""##$$$$%%%&&&&'''''((((((((()))))))))(((((((('+-#!(,'-lt{}}}uuujlm^u}yl~'^%                                                    %']~'Kb(Nf*Og*Rj-Vp.Xr/Zv0\w1^z3`}4a4c4a~6f7g8i8h9j8j8i;n<p;n>s?uAxAzB{C}D~DEEFDDEEFHIHHGA~4m~rtu{vpcr~8  !!!"""##$$$$%%%&&&&''''''(((((((()))))))))(((((((()$"! '-)/uxs~~~~~~ssslno]t}yy'^%                                                    %']~)Nf'Md*Pi+Tm-Vp.Xr/Zv0\w1^z3`}3_|3b~4b6f7g8i8i9j9l:m;n;n;o=r?uAxAzB{C}D~DD}FFGFEEHIIHHGA~4mrtu{vpcr~8  !!!"""##$$$$%%%&&&&''''''((((((((())))))))(((((((()%#**!(02$:iw~~~~~~~~~tttill]s|q'^%                                                    %']~)Nf'Lb+Qj+Tm,Un-Tm-Up/Zt0\x0[w3_}3a}5c5e7g8i9j9j9m:n;o<p>t?u@wAxAzB{C}D~B{C|FFGGGFHIIHHFA~4mzrtu{vpcr~8  !!!"""###$$$%%%%&&&&'''''((((((((()))))))(((((((((')/1.' !)/)1%+qu~~~~~~|||tttjmnXqyu'^%                                                    %']~(Ld'Md+Rj+Sl,Tn.Vp.Yt/Zt/[v1\x3^|3b~5c5d6e8i9j:l8j8i9l<o=s>s?uAxAzB{C}B{B{D}ED~GGGGGHGFHGA~4mqsuzvocr}8  !!"""###$$$%%%%&&&&'''''(((((((((())))))((((((((('+-&%*+&#&)%)"-p~}~~~~}}|~}}wwwlopUgnq~'^%                                                    %']~)Me)Ph+Rj+Tm,Un.Wq.Yu/Zu0\x2^{4a4c5c6e7g7h9i:l9m:l:m;n>t>r>t@vAzAzB{BzB{D~EDFEFGHIHEEF?z2hqsu|vocr}6!  !!"""###$$$%%%%&&&&''''''((((((((((())((((((((((((*'*1*#$"%!,g|~~}~~{}}y{~}}}xxxikkhqth}}'^%                                                    %']~(Ld(Of+Rj+Tm-Vp-Tm-Up.Xr0\w3_|3_|4b4b6f7g8i8h9i:n;o<q=r>t?u@wAxAzAyC}C|C}B{FEGFHHHIGEFE?y2irvvsobs~/!$ !!!""###$$$$%%%&&&&''''''((((((((((((((((((((((((((('''''''&#*+ 4d~z|z~|{}~}z}|{~vz{|}}{{yyyooo[beXr{w'^%                                                    %']~)Me)Ph*Qi+Sl-Vp.Wq.Xs.Ys1^z3`}2]z3a}3a~6f7g7g9i9k:n;o<q=r<q>r?u?u@xB{C}C|C~D}FFGGHHGGGGHF>y2izqussneu0!$!!!"""##$$$$%%%%&&&&''''''((((((((((((((((((((((((((''''''&+*+.*-Kzu||x~~|~z~||{||{{{zzzrrrrtu\kqqw'^%                                                    %']~)Nf)Ph+Rj*Rj,Tm.Xr/Zv0\w1^z3`}3_}4b5d6f7g8i7f7g8k;o<q=q>t?t>t@wAzB{AzD~C}DEEFFHEHIIHHG?{2iqtsspev1!$!!!"""###$$$%%%%&&&&''''''((((((((((((((((((((((((('''''''')#'-(>kun~||y|~z~}}|||{{{zzzyyyqqqefgcmqd'^%                                                    %']~)Nf)Ph*Pi*Sl,Uo.Xr/Zv0\w0\x3`}4a4c3`}5d7g8i9j8i9l;o<q=r=r>r?uAxAzAyAyD~DDFEDFHHHIIHHGA}2iqvvtpeu0!$!!!"""###$$$%%%%&&&&&''''''(((((((((((((((((((((((('''''''')#).,'!"/Q~y}~}}q~ky|}|~|||{{{{{{xxxxxxmmm`ef]ousw'^%                                                    %']~)Nf)Ph+Rj*Qi+Rk-Un/Zv0\w0\x2^{4a3a}4b5d7g8i9j:l:n:m;o<q>t?u@wAxAzAyAzD~DEFFGFEGHIIHFEA}4mqutrndu0 $ !!"""###$$$$%%%%&&&&'''''''((((((((((((((((((((((''''''''&,.)$#&.00#5l{|{t}r|s|}}t{}~~~}}|||{{{zzzzzzyyyxxxqqqgii[eiXs|}'^%                                                    %']~(Ld)Ph+Rj+Tm,Tm.Xr/Yu0\w0]x2_|4a4c5d5d6e6e8h:l:n:m9l<o>t?u@wAx?v@wC}BzC}D}EFGEEFEGHHGFA~4mqutrndu0 $ !!!"""###$$$%%%%&&&&&'''''''((((((((((((((((((((''''''''''"&3-!#)(#&,Qxs|syx}||~~~~}}}}}}|||{{{zzzyyyyyyzzzuuulllmopZiodx'^%                                                    %']~(Md)Ph+Rj+Tm-Vp.Xr/Zv0[v0]y3`}4a3b~5d5d5c6e8h9j:n;n;p=q=r=q=r@wAzAzC}C|DEFFGGGHGHHFFF?z3jqutrndt/ $ !!!"""###$$$$%%%%&&&&&'''''''(((((((((((((((((('''''''''').-%%#&$(+ 8\}r{|yy}}~~~}}}|||{{{{{{zzzyyyxxxvvvyyynnndeegoqRnwk'^%                                                    %']~(Md(Ne)Og*Rj,Un.Xr.Yt0\w1^z3`}4a4c5c5e6e8i9j:l:n;o<q=r=s=q?uAxAzB{C}D~DEFEFGHHHIIGGF?z1gqutrndt/ $  !!"""###$$$$%%%%%&&&&''''''''((((((((((((((((''''''''''''$3'!.,!'0+!0Iayx}y}xky{}}}}}|~}}~||~{{|zzyyyyzyxywuvuvxyuuwllldfhYfk\t|u|'^%                                                    %']~(Ld'Lc)Og*Rj,Uo.Xr/Zv0\w1^z3`}4a3a}4b5d6e8i9j:l:n9k<q=r>t?u@w?u?vB{C}C|DD~DFFFFHGHHFHG@}2iqussmbu0 "  !!!"""###$$$$%%%%&&&&&'''''''''(((((((((((('''''''''''''&(..%$*)!(.$"(1Hnx||}|x}{zx|pzq~zw|{{zx|y|xv{vy}wvyytsxsnsqnmhlif]hjWs|g~'^%                                                    %']~(Me(Ne+Rj+Tm,Uo.Vp.Yt0\w0\w2]z3^|3`|5d6f7f8i9j9i9m9l<p<q=r?u@wAx@xB{C}C|B|B{D~EGGHHHGFFGGA~4mptsrmbu0"  !!!"""###$$$$%%%%%&&&&&''''''''''''((((''''''''''''''''&&&%#&('%$&'$"$&%#$!%/Kruw~zxwz}}v~vu}~q|s{}yy}w|qx}wwwq}ypswsluvnusmqmfgfdfg_mqa|j~'^%                                                    %']~(Lc(Ne+Rj*Sl,Uo.Wp.Xs/Zt0\w1]y3^|3a}5c6f7g8i9j8i9l:m;n;n<o?u@wAxAzB{B{C|C}D~C}EGGHHGGHHHGA~4mptsqmcs/"   !!!"""###$$$$%%%%%&&&&&''''''''''''''''''''''''''''''&&&&&&&&%%%%%%%$$$$#&+%4]{~zv~xxrs}yyzyz{|xzys|vu{sxzqxxtzt{xptq|pqzssvmmlfffX\^^jnXt~ut'^%                                                    %']~)Nf)Ph+Rj*Sl,Uo.Xr/Yu0\w1^z3`}4a4c5d6f7g7g9j:l9l:m;o;n;o>s@wAxAzB{B{BzC}EFEFGHGGGIHHF?z4mptrqmbs/!   !!!"""####$$$$%%%%%&&&&&&'''''''''''''''''''''''''''&&&&&&&&&%%%%%%%$$$$%!%.'9cxu~zswz~z~y}xqvx|yv|yyyo{wpyyzs{q~qxtrxusrttqqqooogggcff\glVr|u}}'^%                                                    %']~)Nf)Ph*Qj*Rk,Tn.Xr/Zv0\w0]y2^z3_|3a}4b6f7g7g9j:l:m:m;p<p>t?u?uAx>uB{C}D~DD~C}C}GFDFFHFGHF?z3losrrnbs~.!  !!!""""###$$$$%%%%%%&&&&&&''''''''''''''''''''''''&&&&&&&&&&%%%%%%%$$$$$%  (+$ !>N^{~ryt~yzvyp{xtxw}pxzrwy|vw~vvsxof~fpxqvqurrrqqqsssiiiccccfg[gkZs{p'^%                                                    %']~)Nf(Of*Pi*Ph+Rk.Xr/Zv0\w1^z2^{3_}2`{3`}5d7g8i9j:k9m;o<q<p>t?u@wAx@xB{C}D~DD~EFGGFFFIIHGFA~4mopqplcs/ #   !!!"""####$$$$%%%%%%&&&&&&&''''''''''''''''''''&&&&&&&&&&&%%%%%%%%$$$$$%+% )$$7Tvr{~s|{~~uk}zl}wm}rwyv|vwzuxswtiyppurursrrrrrrqqqoooqqqiiieeedggU^aYlrh'^%                                                    %']~)Nf)Ph*Ph*Qh*Qj.Vp/Yu0\w1^z2^{4a4c5d6f5d8i9j7g7i:l<p<o<q>s@wAxAzAzC}D~DEFFFFHHEGIHHG@}4mrss~miar~0 #  !!!!"""####$$$$%%%%%%&&&&&&&&&'''''''''''''&&&&&&&&&&&&&&%%%%%%%%%$$$$$"+,'*%#%&-+!Fjxr|q}uw{s|pv|poyvpt}|pm{rwqursssrrrqqqqqqpppooonnnjjjfffdde_egQem`|x'^%                                                    %']~(Ld)Ph*Ph*Ph+Rk.Wp.Yu0\w1^z1\x2^{4c5d5d5c8i9j9j9l8j;o=r>s=q=rAx@y@xC}C|DEFFFFFHGHIHHGA~4mqqqnjcs/ "   !!!""""###$$$$$%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%$$$$$$#&'&''$! %! (& *D`{k~k{svxql|td{xnu}oytxsussssrrrqqqqqqppppppnnnoonnnnkkkaaa`ac]bd^imTmuq}'^%                                                    %']~)Nf(Ne+Rj*Sl,Sl.Xr/Zv0\w0]y2^{2^{2_{3`|4b6e8i9j:l:n;o<q=r>t?u<p@v@x@xC}C|B|EDDGGEFGIFEFFA~4mqrrnjaq}/"  !!!!""""###$$$$$%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%$$$$$$$#"!! #%! !%%!3Imxoprgz{mozorzmuvttvvsssrrrrrrqqqqqqooopppppplllmmmommjjjhff]]]\^^bhi\joa|q{|{'^%                                                    %']~(Ld)Ph+Rj+Tm-Vp.Xr/Zv0\w0\x1\x3_|4c5d6f7g8h9j:l:n;n<q=r=q>r?vAxAzB{C}D~C}D~D~C~FGHHHIIHHF>y1glowtqh`uh6"   !!!!"""####$$$$$$%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$#"""!""#"!!! ""!&.Np|pew^izjfwrmustry|m|{lzvnqquenthnh~rhtujmtohppbnoamjdngef__e_aR\ZRffKfnbw'^%                                                    %']~'Kb)Ph+Rj+Tm-Vp.Xr/Zv/Zt1^z3`}4a4c5d6f7g8i9j:l:n;o<q=r>t?u@wAxAzB{C}D~DEEDDEHHHIIHHF>x4mnozqpkjv^=#   !!!""""####$$$$$$%%%%%%%%%&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$$$$$$#####$""""#!!"""  !!! ,9Uzrjo]iiluuryhsthrppowvluwokynkqlmgko_lp]kodlokhkqfjodkaadY^\\c_]cbdrvr'^%                                                    %']~(Ld'Md)Nf*Qi,Un.Xr.Yt.Xr1^z3`}4a4c5d6f7g8i9j:k9l;o<q=r>t?u@wAxAzB{C}D~DEFFGFEHGHIHHGA~4m}}tipuqaC!    !!!!""""#####$$$$$$%%%%%%%%%%%%%&&&%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$######"""""!!!!!  !&' 3>Pt~pdpUr[otlhkzjmx_xbcsihmoijvefzfgvfipohhlflddoienndli_ea[[\]\`wz'^%                                                    %']~(Ld)Ph+Qj+Tm,Uo.Xr/Zv0[v1^z3`}4a4c5d6f7g6e9j:l9m;o<p=r>s>s>tAxAzB{B{B{C}C}C|FGDEFGGHHEGA~4mh]izj^L"   !!!!""""#####$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$######""""""!!!!!   !#! /?Tz}oajUl`lnklpmrnkrmjomkklhmijvfnfimWkk`eljalpcmlcjfbcgx{'^%                                                    %']~(Md(Og+Qj+Tm-Vp.Xr/Zv/[v1^z3`}4a4c5d6f7g7g7f:l:n;n<q=r>s?u?vAxAz@x@wC|C}C{B{FGFFFGIGFEFA~3l[Zg~mdZ{ "   !!!!"""""#####$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$########""""""!!!!!    2BOxyjlbYg_~jglkkbmjdnkgkicmcdnaegcffheeiddjfcfs'^%                                                    %']~(Ld(Og+Rj+Tm-Vp.Vp.Xt0\w1^z3`}4a3a}4b5e7f8i8h:l:n;o<q<p=r>s?u@v@x?v@xB{C}C}D~FGGHHHIGEEFA}4mlsyumghpt/!   !!!!"""""#####$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$########""""""!!!!!      +<GtfgpeXdQvkaXkqgkhk\vi_ngfbifVgeYff'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr.Xt0\w1^z3`}3`~3`|4b6e7g8i9j:l:n;o<q=r=s?u@wAxAzB{C}D~DEFFGEGHHIGEFF@{4mn{xjhfuimC    !!!!"""""######$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########"""""""!!!!!   $,"#=I|Yju|\gz^akddteiufghfeVidUnl'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv/[u0]x3`}4a4c5d6f6e8h9i:l:n;o;p=r>t?u@wAxAzB{AyD~DD}FFGEFHHIIFFFA~4l~|ddjdqU      !!!!!"""""#######$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###########""""""""!!!!!!    $%:@{<kPasnanyefjgaduwy'^%                                                    %']~)Nf)Ph+Rj+Tm-Uo.Wq/Zv0\w1^z2^{3`~3b~4b4b4b7g9j:l:n:m;n<p=r>s?u?t>uAzAyC|C}C|EFGGHHHHIHHGA~3k`]dwgjcto*!#    !!!!!""""""########$$$$$$$$$$$$$$$$$$$$$$$$$$$$#############"""""""""!!!!!!    !
/cdlrdekdaz'^%                                                    %']~(Ld)Ph*Ph*Qi-Uo.Wq/Zv/Zu1^z3`}3`~4b5d6f7g6f7g9i9l;n;p=q>t?t?v?t@xB{C}C|C~D}FEGGHHFGIHHGA~4mtts`o]mjaI&'     !!!!!!""""""###########$$$$$$$$$$$$$$####################""""""""""!!!!!!      "!;dcYSi\eil'^%                                                    %']~(Md)Og+Rj*Qi-Vp.Xr/Zv0\w1^z3`}4a4c5d6f7g8i7g7f8k;o<q=r>t>s@wAxAzB{AzB{C}C{D~DGFHHHIIHHF@|4mPl]hhUo$ #!    !!!!!""""""""######################################""""""""""""!!!!!!!      Kf|_`LgVu'^%                                                    %']~)Me)Ph)Og*Qi,Tn.Xr/Zv0\w1]y2^{4a4c5d5d6e8i9i8i:m;o<q=q>s>t>tAxAzB{B{AxC}EEEFGGEEHIHHGA~3kUjdikuao6%'!!    !!!!!!""""""""""#############################"""""""""""""""!!!!!!!!      #!0mXf~adQg`'^%                                                    %']~(Me)Ph*Qj*Rj+Rk-Tm.Xt0\w0]x1]y3^|4b5c6e7g8i9j:l:n;o;o<p=q<p=rAxAzAyAzC}DEFFFEHFFHHHHGA~3kcbeul_Wr(     !!!!!!!""""""""""""""##########"""""""""""""""""""""""""!!!!!!!!!      $OkzoeWc_ax~'^%                                                    %']~)Nf)Ph+Rj*Rj+Sl-Tm.Xt0\w1^z3`}4a4c5d5d6e8h9j:l:n:m;o<p=r<p=r@vAzAyC}D~C~D}FFGFGHFFGHHGA~3lWjfgu]bbB")"     !!!!!!!!""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!       %<ZZ`pUQeb'^%                                                    %']~(Ld(Og+Rj*Sl-Vp.Wp.Yu.Xr0]x3`}4a4c5d5d6e8i9j:l:m;o<p<p>s>s@wAxAzB{C}D~DD~EFGGFEFHFFHGA~4mWdS~nega0*"!      !!!!!!!!!"""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!       &+`Yzxg^WfRy'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr.Xs.Xr/[v1]y2^{3a}5d5d6e8h9j9k8k;n;p=r>s>s@wAxAzB{AzC|DEFFGFGEGIHHHGA~4mmsvcfjhiTm)&&!      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!         #"%Lfab_bfghj'^%                                                    %']~)Nf)Ph+Qj+Tm+Sl.Xr/Zv0\w1^z2^{2]z2`|4b4c5c6e9j:l:n8j9l<o>s>r>tAxAzB{B{D~C}D~FED~EHHHIIGHGA~4mjRmmzWbhJ|         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!           
Cv~\ahtQlVn'^%                                                    %']~(Me(Ne*Ph+Tm,Uo.Wp/Zv0\w1^z3`}4a4c3`|4b5d6f9i:l:n;o;o:m=r?u?vAxAzB{C}D~B|C{D~DDGHHHIIGED?y3jVfUo\x`n<}  7xsZhjVWgU'^%                                                    %']~(Md'Md*Qj+Tm-Vp.Xr/Zv/Zt0]y3`}4a3a}4a~5c7f8i9j:l:n;o<q=r>t?u@wAxAzB{C}D~DEFFGGHHHIIFEGA}3j_d[qofq`iRy) !  #""""########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########"""""""!!!!!   !&LtlZdljb^dZxz'^%                                                    %']~)Nf(Of+Rj+Tm-Vp.Xr/Zv.Ys0\w2_|4a4c5d6f7g8i9j:l:n;o<q=q>t?u?u@vAzB{C}C}DEFFEGGGHIIHHGA}3k^fZytXiY_t2&!  !!!!!""""""""###########################################"""""""""""!!!!!!!     #.ZodTtqR]f[qv~'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z3`}4a4c5d6f7g8h7f7f8j:l<q=r>t?u?u?uAzB{C}D~DEFED~DGFGIFHHF?y3kVdZqnceejft70'$-3eap`_lk_Vh[|~|'^%                                                    %']~(Me)Og+Rj+Tm,Tn-Un.Yu0\w1^z3`}3_|4c5d6f7g7g7e:l:n;o<q=r>t>s?uAx@yAzC}B{DEFEEEGHFGFGHG@}4mm^e`dfrmn{]iTwv3(01*&%$$%%&&&&&''''''''(((((((((((((((((((((((((((((((((((((((((((((''''''''''&&&&&&%%%%%$$$$##"#$(..&0OtrwYeoii^ddm^h'^%                                                    %']~)Nf)Ph+Rj*Sl-Vp.Xr.Xt/[v0]y3`}4`~4b5d6f7g8i9j:l:n;o<q=r>s?t@wAx@x@xAzD~C~EFEGGHHFFFFHG@{4m}sXdtajnpbpk]qjretV~LB??AGIHIIIJJJJJKKKKLLLLLLMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMLLLLLLLLLLKKKKKJJJJJJIIIHHHGGFFEEFD><=?IQzaq|mfomgYkl]tbiv[gsnt'^%                                                    %']~(Lc)Ph*Ph*Qi-Vp.Xr/Zv/Zu1^z3`}4a3a}4b6f5c8i9j:l:n;o<q<q>t?u@wAxAzAyAzD~DEFFFGHHFFGFFG@|4lsrg\jggnql`skdujfuigyjiylewnctp`ymfzkk{kj{lj{lj|mk|ml|ml}ml}nl}nm~nm~om~om~on~on~on~onpnpopopopopopopopopopopopoqoqoqoqoqoqoqopopopopopopopopopopopopopopopopopopopnpnpn~on~on~on~on~on~om~nm}nm}nm}nm}ml|ml|ml|mk|lk{lj{lj{kjzkizkizjhzjhyihyigxhgxhhvjcqn]tj`vhavferfcrgcqhbpj^gelj]mkk'^%                                                    %']~)Nf'Md*Ph+Tm-Vp.Wp/Zv/Zu0]y3_|3_}4c4b5c4b7h9j9j:m;o<q=r>t?t?v?u@xB{C}D~C~EEEEGHHHGGGHFA~4lrxqmqq_ggW`b`bjg_ln\pu[rhcibgedffdffdggeggeggehhfhhfhhfiifiigiigiigiigjjgjjhjjhjjhkkhkkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkikkhkkhkkhkkhjjhjjhjjgjjgjjgjjgiigiigiifiifiifhhfhhehhehheggeggdggdffdffcffceebeebeebddaccacc_dbe`grXokZnd[i\_gU_`]edhlllpkt'^%                                                    %']~)Nf)Ph+Rj+Tm,Uo.Xr/Zv0\w/[v1]y3`~4c3a~4b5c7g9j:l:n;o<q=r>t>r>t?u>uAyAzD~C~EDFGGHGHIIHHF@{3j'^%                                                    %']~)Nf(Of*Og*Ph+Qj.Vo/Zv0\w1^z3`}4a4c3a~4c5d6f8h:l:n;o<q=q>t?u@wAxAz@xC}D~DEFFGGFFHIIHHGA~4l'^%                                                    %']~)Nf)Ph*Qi*Rj,Tn.Xr/Zv0\w1^z3`}4a4c5d5c5d7h9j:k:n;o<q=r>t?u@wAxAzB{C}B{DEDEGGHHHIIFGGA~4m'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Wp.Xs0\w1^z3`}4a3a}5d6f7g8i9j9j:n;o<q=r=q=p=r=p>uAzC}C}B{DED~FDEGHIIHHD?y4m'^%                                                    %']~)Nf)Ph*Pi*Rk,Tm.Vo-Vq0[v1^z3`}3_|3`|5d6f7g7g9j:l:n;o<q<p<p=p=rAxAzB{C}D~DD~EEGEFGGIIHHGA~4m'^%                                                    %']~(Md)Og+Rj+Tm-Vp.Xr/Zv/[u1^z3`}4a4c5d6f7g7g8h:l:m;n;n<p=s>s?uAxAzB{C}D~C~EFFFGFEGIIFGGA~4m'^%                                                    %']~)Me(Og+Rj+Tm-Vp.Xr.Xt.Ys1]y1]y2]z3a}5d6f7g8h9j:l:n;o<q=q>t>s>s@vAzB{C}C|B|D~FFEDFGEGIHHFA~3l'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr-Wr/Zu1^z2]z3^|3b~5d6f7g7g8h9k:n;o<q=r=s>s>t@v@y@x@xC|C}EFFGEFHHIIHHG?{2i'^%                                                    %']~)Nf)Ph+Rj*Sk,Uo.Vo/Zv0\w1^z3`}2^{3b~5d6f7g7g8h:l:n;o<q<o>t?u?v@v?v@wAyB{C~DFFGFHGHIHHHGA~3j'^%                                                    %']~(Ld)Ph+Rj+Tm-Vp.Xr/Zv0\w0\w1]y2^{2`{3`}5d7g7g8h9k:n;n;o<o=q=r>sAxAz?v@xD~C}EFFGGHHHIIHHGA~4m'^%                                                    %']~(Me)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z1\x3_}4c3`|4b6e6f7f8h:n;o<q=r=r>r>tAxAzB{B{BzB|D}FFGGHHHIIHHGA~4m'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv/Zu1^z3`}4a4c5d6f5c6e7g9i9k:n<q;o=r?u@wAx@yB{AyBzB{C}EFGGGFHIHGFF@|4l'^%                                                    %']~(Me(Og*Pi+Tm-Vp.Wq/Zv/Yt1^z3`}4a4c4c5d5d6f9i:l:n9l:n:m<o>r?uAxAzB{B{BzB|C}EFGGHFHIIHGF?{4m'^%                                                    %']~'Kb(Nf*Qi+Tm-Vp.Xr/Zv/Zt1^z3`}4a4c5d6f7g8i9j:l:n;o9l<p>t?u?u?u@xAzB|D~B{EFEGGHHFIIHHGA~4m'^%                                                    %']~(Md)Ph+Rj+Tm-Vp.Xr/Zv0\w0\x2^z3_}3a~5d6f7g7h9j9j8j9l:m=q>t?u>t?u@x?vB{D~DEFFFDD~D~HIIHHGA~4m'^%                                                    %']~)Nf)Ph+Rj+Tm-Vp.Xr/Zv0\w1^z3`}4a4c4b6f7g8i9j8i8j;o;o=r>t>s@wAx?vB{B{BzC~EFFGFFFFGGEGGA~3j'^%                                                    %']~)Nf(Nf)Og+Tm-Vp.Xr/Zv0\w1^z3`}3`~4c4c6f7g8i9i:l:n;o;o=r=r?u@wAx@yB{AzBzB|C{EEGGHHGHHFGGA~4l'^%                                                    %']~)Nf(Og+Rj+Tm-Uo.Xr.Yu0\w1^z3`}4a3a~4b4b5c5d8h:l9k9l:m<q<o=q>t@v@xB{B|D~C}EFFGGHHHGHHHG@}4m'^%                                                    %']~)Me(Of+Rj*Sk-Vp.Xr/Zv/Zu0\w2_|3`~4c5d6f7g8i9j:l:n;o:m:l;n=p?v@v@yB{C}D~DEFFFGHHHIGHHGA~4m'^%                                                    %']~)Ne(Og*Qi*Sk-Vp.Xr/Zv/Zt/[v3_|4a4c5d6f7g8i9j9i:n;o<q<p>s>s@wAxAzAyC}D~C}EEDEGHHHIGFGFA~4m'^%                                                    %']~)Ne(Ne*Ph+Tm-Vp-Tm.Ys/Yt1^z3`}4a3a~5d6f6e8i8h8h8k:m;o<p>t>s>t@w@yAyC}D~C}C}C}C~FGHGHGHHHGA~4m'^%                                                    %']~)Ne)Ph+Rj+Tm-Vp.Xr/Zu0\w0\x2^z2]z2_{5c5d6e7h7g8h8j:l;o=r>t?u=r@vAzB{C}C|C}D~EEGGHHHIIHGGA~4m'^%                                                    %']~)Ne)Ph+Rj+Tm-Vp.Xr/Zu0[w1]y3`}4`~3b~4b5d6e7g8h8h8k:m<p=r>t?u?vAxAzB{C}C|B{C}EFGGHGFHIHGGA~3j'^%                                                    $']~)Ne)Ph+Rj+Tm-Vp.Xr/Zu0[w1^z3_|4a3b~4b6f7g8i9i:k8j;o<q=r>t?u@wAxAzB{C}D~DEFFGEEEEGFGHG@}3k'^$                                                    #']~)Ne)Og+Rj+Tm-Vp.Xr/Zu0[w1^z3_|3_|4c5d6e6e7g9j9i:n:m<q;n>t?u@w@v@yB{C}D~DEFFGEFFGHIHHFA~4m'^#                                                    !'\}&H](Mc+Rj+Tl+Sl.Xr/Zu/Zv1^z3_|4`~4c5d6f5d6e9j:l:m:m;p=r>t?u@wAxAzB{B|D~DEFFGFFFGIHHHF?z4mz']}!                                                    '\{)I^)Og*Pg*Rj-Vp.Xr/Yu0[w0\x2]z3^|3a~5d6f7g8i9j:l9l;o<q;n=q?u?v@vAzB{AzD~DEFFGGGHHIHHHGA~4m'\|                                                    &Yw3Qe)Og*Qi*Ri,Tm.Wq/Yu0[v0]w3^{3_}4c4b6f7g8i9j9i8k;o<q=r=r=p=rAx?wAzAzD~DEFFGGHHHIHHHGA~4lm&Zx                                                    
&Ws6Tg)Og*Qi+Sk,Sl,Un,Tm/Yt0\v2]z2]z2`|3a~6f6e8i9j:l:n;o<q=r>t?u?u@w@xAzC}D~DD~EEEEHHHIIGHGA~3kW}&Wt
                                                    %Qkw5Xm)Of*Ph+Sk+Sl,Sl.Wr0Zu.Xs1]y4`~3b~4c5e7g8h7f7g9l;o<q=r>t?u@wAxAzB{C}D~DD}EEFGHHGGIHHGA~4mEn%Rmz                                                    ">O9+Yv)Of*Qh+Sk,Un-Un-Wr0[v0\x2_|4`~4c5d5d6e8i7g8i9l:m<q<q>t?u>sAxAzB{C}D~DC}D~DFFHHHHIGGFA}2i1a~#AT=                                                        
'\{+La)Oe*Ph,Tn.Wp.Xs0Zv1]x1^z3^|4c5d6f6e7g9j8i7i:l<q;n=r?u@wAxAzB{C}D~DEC|EGGHHHIIHGF@|4l'\|                                                            &Uq7Xl*Pg*Qi+Rk-Un-Wq.Xs1]x2^{2^|3a}5d6f7g6f7f8i9l9k;n=r=r=q?vAxAzB{C}B{AzEFFFGHHHIIHHGA~4mQw&Wt                                                            
#AT7/]x)Og*Ri*Ph,Tl-Uo.Xq0[v2^z3`}4b5d6f7g7g7f9i:n;n<q=r>t=q>t?t?wAzC}C|C}EFFFGHGHIIGHG@{2i0`}#CW8
                                                                &Yx4Sf*Qi*Qi-Tm-Wr.Xs0\w1\x2^|3b4a~4b~5d8i9j:l:n;o<q=r>t?t@wAx@xAyAzB{B|C|DEFGFDGIIGGG?z3ji&Zy                                                                
%PjZ1[t*Qh+Rk,Tm-Wq/Xs0[v1[w1\x2_z2`}4a~6e8i9i9j9m;n<q=r>t?u@wAxAzB{B{C}C~C}BzDGGEEHIHEHF@|4l3b}%PjZ
                                                                    &Yx3Sf+Rj+Rk-Vp.Xr0[u1]y3^{3a}4c5e7f8i8i:l:n;o;p<p=q>r@w@v@xAyAzD~DEEFGFHHHIFFFGA~4l_&Zy                                                                        
%OhN-]y*Of,Sl,Uo.Wq.Xs1\x2^{3a}4b5e6f8h8h9i8k:m;o<p=r=q@w@w?w@wAyC|DEFEFFHHGIIHFF?{3k-_}%PiM
                                                                            &Xv8\s+Rj,Un,Sl/Yt0Yu1[x2`|4b5d6f7h8g9j:n;o;o=q>s?u@w@v?w@xC}D~C~EFFFEGHHIIHHF?z3kJr&Yw
                                                                                &Xv5Tg+Sl,Un/Wr/Xs1Zv1\w3`}5d6e7h8i:k:m;o;n;n=r?u?u@v?wB{C}D~C~C|FEEGHHHIIHHGA~4lZ&Zx                                                                                        %Mg<)]|.Nc-Uo.Xr0Zu0Zw1\x1\x2_z4b7g8h9j9m;n<p=q=r<o>t?u@x@wB{D~C~C|EDEFGGGHHHFGA~4lk)_%Oh<                                                                                                	&Uq`*]{.Od.Wp/Ys1[w0[v1\x3`|4a~4b7f8h9k:l;p<q>s>q>r?tAyBzC}C}C~EFFGGHGGHGHFGA}4mw*_&Vs^                                                                                                        	&Vsi*]{2Sg.Vo0Zu0\w0Zv1]x4`}6e7g8i9k:m;o;n<q>s?v>s>vAz@yC}C~DEEFFGGGHGGEF@}3lk*_~&Wuh                                                                                                            	&Vr[)^}8Ym/Yt0[v/Yt0Zt2]z5d6e8h8k9l;n<n<p=p?u?t?wAyB{C|C}D~DEFFGGGHHGEF>z3lX~)^&WtZ                                                                                                                    %Oi:&Xw9^v/Wo0Yt1]x2^z3_{4`}6d8i8h9k;n<p;n<p>s?w@xAzB{A{AyC|EFFFFFGGFEF@|3kCl&Zz%Rl9                                                                                                                                &Xw,\x5Wm1]y3_{4a~5c6d6f6f7h:k<p=q>s?t?v@wAyBzAy@wC|DEEDD~DFFFED?{2j\-`~&Zz
                                                                                                                                        &RmB'Yx3_y:]s3`|5b6d6g7g7h8h:k<o=r>s=s>t>t?vAzAyC}C~C~DEC~C~D~FEEE>x0fd:h'[{&Uq@                                                                                                                                                    
&RnN'Zx1_{;^u6]w5e7g8i9j9j9j<p<o<q;o<q>t@xAyB{A{C}C~DDB|DEEDD>y1g{Sx1b'\|&UrK                                                                                                                                                                
$Ja*&Wu'Zy0]zAf}@e|?f~5_z8e9i;m;o<q=s?u?v@xAy@x@x@wAzC}C~B{C|DCC~=u1ho^Cl2d']}&Zz%Oi(                                                                                                                                                                                $I_*%Uqj&Wu&Yw&Yy&Zz&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&Zy&[z'[{'\}']~'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^'^']~']}'[{&Ywf%Oh&                                                                                                                                                                                                        



	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                              ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               PNG

   
IHDR         (-S   PLTE                     			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   >IDATxcd@@cs?A>>0	8A|<Z0Űa 2$1    IENDB`PNG

   
IHDR         \rf   	pHYs       
OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
!{kּ>H3Q5B.@
$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw
ǈg(gwLӋT071oUX**|
J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!k
u5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=
Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
yg"/6шC\*NH*Mz쑼5y$3,幄'L
Lݛ:v m2=:1qB!Mggfvˬen/kY-
BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
+V<*mOW~&zMk^ʂkU
}]OX/Yߵa>(xoʿܔĹdff-[n
ڴ
VE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-
6
U#pDy	
:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ
8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F 8IDATx                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #   17,  # =M2  ʳ L>M   @[; OOO>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   `

  ̹    *  
   '!#           


 ___                                                                                                                                                                                             ++( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       [D ?    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !:[                                                                                                                                                                                                                       CL,
1
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       J
E#                                                                                                                                                                                                             1hV 

# 
       	               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                         
 !{_                                                                                                                                                                                                        *q$7       
		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     	        	 
 h{                                                                                                                                                                                            BjE     
     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	    
 
   
 (ԟ                                                                                                                                                                                    lI -       	    
  
 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      	      } ;y                                                                                                                                                                     0½l\  	        :
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	    C                                                                                                                                                          Az@      
  $                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        $     	       '""'                                                                                                                                                             ?r=   
    ( #       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ) %    3  	   	 
x                                                                                                                                                       Fp=  
  	 (  &  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        *  
       

 ~                                                                                                                                            ;n@    
  / ( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            	     
    $   
 v                                                                                                                                        .w<  	   7% # 	 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
    0   
      
w

&


                                                                                                                                	
	 nH   	      5&                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
 & 
  	*     y
                                                                                                                            Y 
   $ 2!   	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
  #   	  
Qfnk                                                                                                                    [K		   
   *!  
                                                                                                                                                                                                                                                                                                  +#   
     4냖                                                                                                                  1Y 
  
  *)              	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ,*    
  ` U                                                                                                            p0
  	   #  	     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
 
   		  $    	     x                                                                                                        	Q2 

     * ,            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	          . + !   	
   }                                                                                                    $i    
 $                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               &         a:                                                                                                e0		
    &    	            	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              (    
 |                                                                                            "?	
   
   #!           
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
          $"    
    9:                                                                                    m'    # /   
                       	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                             0                                                                                       ('      
	  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              	  		         &H                                                                             
׳y4 
 
  , +           
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      , /  
 
  ҇                                                                               !9 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
          6                                                                    	Y     
 ,          	         
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       . 
  
    u                                                                   	>     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	     7                                                                  >    	  & 
   	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
                          )         j                                                            ͳM0    
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                    !0  
  N                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               -        , !                                                       73    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
  
 
            3   6bfl؞                                                9                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       )                9                                                      >86"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	                           "                                                0      %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	                                                                                                                $    
                          ,gg\ə                                         >0    	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                 1  9                                              -      /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                *                                            @LP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    #    
                                                                                         

 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
   *    
                                                                                   "1    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	 	  	                                                               4                                           &                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     !                                                                                                "      	 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
    	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               &  
           		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
  
                                                       	
	$&"vsu                                                     (    	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
  # (  
                                                    $$$*'(.06)#                                                        '       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                               
                      	
	.+.
:893(8                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	   !                                                                 1+),HJs                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	    	                                                                            )))778 HJG                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                                              333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  	         	      
                                                                      '''***                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	                                                                               444                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                                 
                                                              222                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
     	 
                                                             ;;;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
                  
                               
      			           333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    &&&222                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                

  
 	                                                              ,,,444                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                '   
   
            
         	                                
     			 BBB                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                &&&                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
  
                                
                 	     WWW                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  ==?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                
              
    (   
   
         
                 
                                     

DDJ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
          	

                                                                                      <<<                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            	                                   
             	 
                                                                          			 ...			                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
                                                                                        u


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                                                                                                                           			s(((***޺                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    &&&_                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	  ( !                  	 	                                                         


  g***,,,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     	                                                                       j---                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            #   
                                 
                          `                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                                                              


  i>>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      !                                                                          n%%%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        	       
                                                                                


zGGG                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	    . ! 
 
          
                                                            s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                                                                     """,,,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              	                        	                                             			@@@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
                                                                  ###                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
  )                                                                      222###                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                                                                                                   ,,,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	     	      	 # 3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          &   
    %  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         )     
                                                                                          '''                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  2          	                                                                             '''y&&&                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      (((u333                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           $               	                                                                  +++p444                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   '''m===                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             	                            
  1  
 
     
        
                                                                               l999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 o111                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             *      
 
  
           

                                                            q222                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       k,,,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              2             
  	 
   	                                                     


l"""                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  
                              	                                                                                                                                                                                                                                                             
         % 5 H                  	  
            
                                                             [OOO                                                                                                                                                                                                                                                                                                                                             	     
             		 
    
                                                                                                                                                                                                                                                                                                                                                                                                                         `222                                                                                                                                                                                                                                                                                                                                        
          )           	  
 
  
   
                                                                                                                                                                                                                                                  	     7                                                                                                                          i%%%                                                                                                                                                                                                                                                                                                                                                                             	 (#
 
	                       	   	 
 
                                                                                                                                                                                                                                                                                                                                                                                                                !!!                                                   			                                                                                                                                                                                                                                                                                           
   
        
             	            -  
              	                                                                                                                                                                                                                                   :  # 	                                                                                                                   a>>>                                                       ...                                                                                                                                                                                                                                                                                                
                  
                  
  	                                                                                                                                                                                                                                                                                                                                                                                               111                                                                                                                                                                                                                                                                                                                                                                                    5 
 
  
        	 "       
 	 ' 
                                                                                                                                                                                                                                     
   + !                                                                                                                        ^---                                                                                                                                                                                                                                                                                                                                                                    
                 
	 %     	        
      
   	                                                                                                                                                                                                                                                                                                                                     m"""                                                                                                                                                                                                                                                                                                                                                                                                 %	         *       7   
                                                                                                                                                                                                                         5 #                                                                                                                ###                                                                                                                                                                                                                                                                                                                                                                                                                     '  	    
       	       "                                                                                                                                                                                                                                                                                                                                        t...                                                                                                                                                                                                                                                                                                                                                                                                                   
 
  '      
         -                   
                                                                                                                                                                                                     *                                                                                                                         (((                                                                                                 


                                                                                                                                                                                                                                                                                                                              
 #            
      %                                                                                                                                                                                                                                                                                                                                  (((                                                                                                                                                                                                                                                                                                                                                                                     
 
                                      	  1     	      
 , 5   !  
  
                                                                                                                                                                                                       	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     	  #
     
       
       	                                                                                                                                                                                                                                                                                                                               ...                                                                                                                    """                                                                                                                                                                                                                                                                                                         
  $      	  		      $                                                                                                                                                                                                                                                                                                                                                                                                                                                     ///                                                                                                                                                                                                                                            	                                                                             
            	                                                                                                                                                                           
                                                                                                      )))                                                                                                                                         


 ...                                                                                                                                                                                                                                                                                                             	 
               
        	   	                                                                                                                                                    
   	                                                                                                              '''                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
                        
                                                                                                                                                                    
                                                                                                                                                                                                                                                          !!!                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	          	      0                                                                                                                                                                                                                                                                                          ###                                                                                                                                                           


                                                                                                                                                                                                                                                                                                                                                                              	          
    
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         +  $        
  	 	   /                                                                                                                                                                                                                                                                                                                                                                                                                                        000                                                                                                                                                                                                                                                                                                                                                               2                                                                                                                                                                                                                                                                                                                                                                                                                                                           


                                                                                                                                                                                                                                                                                                                                                           #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   			                                                                                                                                                                                                                                                                                                                                                "    	          
                                                                                                                                                                                                                                                                                   			                                                                                                                                                                                          $$$                                                                                                                                                                                                                                                                                                                                                        
	 
                                                                                                                                                                                                                                                                                                                             


                                                                                                                                                                                                           ===                                                                                                                                                                                                                                                                                                                                   $ 
         

 %                                                                                                                                                        	                                                                                                                                                                                                                                                                                                                                                XXX                                                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                			                                                                                                                                                                                                                                                                                  
        
                                                                                                                                                        	                                                                                                                               	                                                                                                                                                                                                                     <AL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    			  53.                                                                                                                                                                                                                                                                                                                                                           
             	                                                                                                                                0       	                                                                                                                 	                                                                                                                                                                                      '''  446                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     >>>                                                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                             
 
                                                                                                                                                                                                                                                                     DDD                                                                                                                                                                                                                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                               			                                                                                                                                        QQQ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ;;;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
             
                                                                                                                                                                                                                                                                          }                                                                                                                              			  %%%                                                                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                                                                 ###                                                                                                                                                                                                                                                                                                                                                          	                & 	             "                                                                                                                                                            !                                                                                                                     ???                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                               	                                                                                                            2                                                                                                                        


                                                                                                                                                                                                                                                                                                                                                                                        	  %  	            # 
                                                                                                                                                                    	
                                                                                              n                                                                                                       ###                                                                                                                                                                                                                                                                                                                                                                                            
                   
                                                                                                                                                                                 	                                                                                                          222                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      %                '                                                                                                                                                                                                                                                                                      J                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                %                                                                                                                                                                                 
                                                                                                                  _ګ$$$	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	    $ 	  
        "    $                                                                                                                                                                         
                                                                                                  \"                                                                                                                                                                                                                                                                                                                                                           	                                                                                     	 
       	   !                                                                                                                                                                                                                                                                                                XؓAAA                                                                                            )))                                                                                                                                                                                                                                                                          	                                                   	  
   &    
   	 	    ) #
                                                                                                                                                                                                 
                                                                                         q                                                                                   ,,,                                                                                                                                                                                                                                                                                               	                                               
 
  
 	        
  # 	    
                                                                                                                                                                                           	        0                                                                                                TՐ222                                                                   ,,,                                                                                                                                                                                                                                                                                                                              	                       
  
   
                                                                                                                                                                                                         	 
                                                                                                     z                                                                                                                                                                                                                                                                                                                                                                                                                   	                  #    
 
                                                                                                                                                                                                            -  ( 
                                                                                                   G                                                                                                                                                                                                                                                                                                                                                                                                                                                
 	  
         
  # "        	                                                                                                                                                                                                            
   	                                                                                                    {///                                                                                                                                                                                                                                                                                                                                                                                                 
      
     
 
                                                                                                                                                                                                                        
 -  ! 
  
                                                                              			Fh 


                                          ???                                                                                                                                                                                                                                                                                                                                                  	               
                 	                                                                                                                                                                                                                                                                                                                                      5### 


                                                                                                                                                                                                                                                                                                                                                                           
     	   	       
                                                                                                                                                                                                                       	   	      
  M 	                                                                
m                                                                                                                                                                                                                                                                                                                                                                            	       
   
 
             % "                                                                                                                                                                                                                                             
                                                                                                >_***                                                                                                                                                                                                                                                                                                                                            	                  
                
     

 	                                  
                                                                                                                                                                                                 	        5  +                                                                              Dأb


           444                                                                                                                                                                                                                                                                                                                    	 
   	       	  
 
 
 
 	                                                                                                                                                                                                                                                                            
                                                                                             !(((                                                                                                                                                                                                                                                                                                                
 
 
     "                     	  	    
 &  	         	   	                                                                                                                                                                                                                                           1                                                                    q+++                                                                                                                                                                                                                                                                                                                                   	             	 	            	  
     
                                                                                                                                                                                                                                                                                                                                                                                                    8n000                                                                                                                                                                                                                                                                                                                                      	                 
                   	                                                                                                                                                                                                                                 
        
          b    	                                                                    9m222                                                                                                                                                                                                                                                                                                                                     3%           	                                                                                                                                                                                                                                                                                                                                                                                                                                              9l...                                                                                                                                                                                                                                                                                                                                     	     
                                                                                                                                                                                                                                                                                                                                                                                    	         E  #                                               
               ?Ԕk...                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 			?ԓ(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         )  5   
    
  	                        	                       			  Aѐt(((                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             			 


 Bώ0	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      + 
 I )   	  
                                                                            @ֆ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         			     B                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
   # ,                                                            D                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  "                                                                          D			&                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
           
 *  # , / 
                 
                                           GG9888


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             !    
 	                                                                         P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
            )                                                                           X                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    	                       
           	                                                         L Dڑ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
               
                                                             L ---                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	                                                                                  


O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                                                                                


I Ձ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                             			I                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Nw


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       	  
                                                            I ~


			                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
  
            
                                                Qu                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                , 	  
                                                                      A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
  	                                                        Q}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
           
 "     
&                                                            


  75&y+++                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        	            	 
     
                                                                      3.0%%%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
 
                                                                   0)***                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	                                                                         _s!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
 !                                                                                  #dO


>>>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     	  % $  
         
                                                                               
j򻾾m+
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
            	   
          "
  	    
                                                                   		tj'''                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      	  
                                                                              		{t###                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       	                               !  >	   
                                                                   


|ق%%%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                    			      			   r                                                                                                                                                                    	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 $   "                                      
                  h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       g                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
 + +                     	                                       	     ؝n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             	                                                                 r                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               # A)         	 
                        	                                      			 			s999                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ;+ &  	   
                                                                     )))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          L%                                              


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          , '                                                                 ///                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            5 5 	   !                                                                     (.ݼӯQQQ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ? 1    
 	         	                                                                        00 OǈFFF444                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        @ @ 	        
                     	                                         66ƾ୴$$$000 ,,,                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
    
                                                                         BB ,ׯ///DDD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               I         
      
                                                               J  3ڢ{{{                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
                                                                                  N                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
      	              
                                                	           O                                                     	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   +   	                                          
      	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
 , ,                                      
              
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  $ *  	   	                          
    	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	                          	 	                                                               
        	 &                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    

 
       
 	 
            
          	   	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                "       
       	                                                                                	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              +                         		                                                    z                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
        
    
                                                          ""        
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
  " ?    
   
    	    	                                             

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  % 1     
   
  	                                                      	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	   #
     
	                                               $&%y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
        %% =?8                                            %&      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
 "&$	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 	    


                                             #&)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  &)*                                                  #$$l                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              HB=                                                $# $   
  (                            	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	                               $       $
                                                        ++-q                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	.*:                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                     !JJF                                                        $$#                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          "#                                                               	774    
  #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    "        	  DCC                                                                '&%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                95U⩘   
  3      
  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
       )                                                                        ++)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  JFS                                                                        	CBE     ( %  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  % *      & GFK                                                                                 $%!#&                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
                                                                                             	
(             
  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	  # (     
)-%	JKQ                                                                                        .,.98; 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             #%&                                                                                               	?=C'       *+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 HGT                                                                                                 GEA      	 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
        "$$
                                                                                                      540?29     5 %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     % 6     &$"%NGQ                                                                                                           :KBA(     	 	 
  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            	 	        *" HEG                                                                                                                    I\B$  	
 0   %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       	                
  )      1@E>                                                                                                                            Qy *       9%  % 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
    
 	      455DDD                                                                                                                             444}$
    #    )                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            	                   
+13!                                                                                                                                      ??=z%	          '  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           $ 
         '%%%##                                                                                                                                           FFG#
        #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              9       ,('"                                                                                                                                      J       
   %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	     
  .-5     GGG                                                                                                                                             <;: "         
 +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	      %*                                                                                                                                              	   J&s           ! 
    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              	           +*%     GGG                                                                                                                                                      
ILH "澼
   	  
         

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	      
      
 *&-                                                                                                                                                                                9>8 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
  
  .,7                                                                                                                                                                                          cda
	
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
   
.-%	                                                                                                                                                                                                        

cpHн	


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    	                           
  


*'			                                                                                                                                                                                                                
`a\$                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  $%!                                                                                                                                                                                                                               	]m3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

                                                                                                                                                                                                                                                 

[_a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   mtt	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              =    IENDB`PNG

   
IHDR         (-S   sRGB   PLTE                   			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   bKGD H   	pHYs        tIME:
Ȑz   2IDATc` |(4FFTFFH	Wi.[q)L 
  gp5    IENDB`           (     (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ghcjldjmepqimqiirkhrlfrndrnbrofspkqpkqpkqpkrpkrqkrqlrqlrqlrqlsqlsrlsrmsrmsrmsrmtrmtrmtsmtsntsntsntsntsnusnusnusnutnutnutoutoutoutoutoutoutoutoutovtovtovtovtovtovtovtovtovtovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovuovtovtovtovtovtovtovtovtovtovtovtoutoutoutoutoutoutoutoutoutoutnutnutnutnutnusnusntsntsntsntsntsmtsmtsmtrmtrmsrmsrmsrmsrlsrlsqlsqlrqlrqlrqkrqkrpkrpkqpkqpjqpjqpjqojqofroarodqmeqmgqliqjlqhophildildfgb~}~                                                                                                                                                                                                                                                                            2GVz~{Ysuotnpjjmfjmfprknrkjrmjrmgsngsodsphspkrpkrqlrqlrqlrqlsqlsrlsrmsrmsrmtrmtrmtsmtsntsntsntsnusnusnutnutoutoutoutoutoutovtovtovtovuovuovuovupvupvupvupvupvupvupvupvupvupvupvupvupvupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupwupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvupvuovuovuovuovuovtovtovtovtoutoutoutoutoutnutnutnusnusntsntsntsntsmtsmtsmtrmtrmsrmsrmsrlsrlsqlrqlrqlrqkrqkrpkrpkqpkqpjqpgrocrofrngrnirliqlmqjpqjjleileopiosmput}~qQ)                                                                                                                                                                                                                                                        ѵ
@debmlqhglcdjeflejqhmtgqwgowjkxnlxqlxukxxizjzf{xmvmrpoqqoqqorrprrprrprrprrpsspsspsspssqssqssqttqttqttqttqttqttrttrttruuruuruuruuruuruuruusuusuusuusuusuusuusuusuusuusvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsvvsuusuusuusuusuusuusuusuusuusuusuuruuruuruuruuruuruuruuruurttrttrttqttqttqttqttqttqssqsspsspsspsspsspssprrprrprrprrorroqqoqqoqqoqqnqqnpplqowlue{iyxiytjwqkwmkwijwfnvfpvelsdipdelbcihflnlr}g|c                                                                                                                                                                                                                                     ̲[{fbdkpYtzconrqprpqtprvjotgkrekrelsikuniuojvthvuiv|ivgxuktlpnnppnppnppoppoppoppoppoqqoqqpqqpqqpqqpqqprrprrqrrqrrqrrqrrqrrqrrqssqssrssrssrssrssrssrssrssrssrssrttrttrttrttrttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttsttrttrttrttrttrttrttrttrssrssrssrssrssrssrssrssrssrssqssqssqssqrrqrrqrrqrrqrrqrrprrprrpqqpqqpqqpqqpqqoqqoppoppoppoppnppnppnppnppnoomoomoomoolpmujt~fw{huthusguniumhthjtdkrdjqfjqintoptopspoqnmqyb~pYvccjp~w@                                                                                                                                                                                                                        ƾ^ysh{^_fkkshlriputr`rr_on]rkcyog|sp{po{lozopwoqvpqupqqqporpmspurq}qr{qs{qs{qs{qs{rs|rt|rt|rt|rt|st|st}su}su}su}su}tu}tu}tu}tu~tv~tv~tv~tv~uv~uv~uv~uv~uv~uvuwuwuwuwuwuwuwuwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwvwuwuwuwuwuwuwuwuwuwuwuw~uv~uv~uv~uv~uv~uv~tv~tv~tv~tv~tv}tu}tu}tu}tu}su}su}su}su}su|st|st|rt|rt|rt|rt{rs{qs{qs{qs{qszqrzqrzqrzqrzpr|pqtqplronqoppotopuopwnpynozknzon{roxnfqjbnl\pp]sq^hotgkpjrekz_arn2                                                                                                                                                                                                            Xepmi}khmoloufjdhliosmoforkosnjnpelndlsenvboy`py_py\pz[qzYryYryWty^szcq|bq|br}br}cr}cr}cs~cs~ds~ds~ds~ds~dt~eteteteteteueufufufufufufufufvfvfvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwhwgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvgvfvfvfvfvfufufufufufufueueuetetetetetetdt~ds~ds~ds~ds~ds~cs~cr}cr}cr}br}br}bq|bq|bq|aq|aq|aq|bq|\rxUsxWqxWqxZoy[oy]ox_oxamxcmuckrdklimnnrmnqjkndhmqbfktdi~knln~ifqmjvxx#                                                                                                                                                                                                Ygpppdozfvuertcpflnitnktdgo]XaUfRnJoBr=|71*)&&)*,......./////////00000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111100000000000000000///////////.......-----+)(&&()06<z@qInQlSeW_~en\ischsmdjmrbnsdpxetqdofnn<
                                                                                                                                                                                        MsfiffikqlsqhoriqwjwelsWjoPqmR}|HwI{LMNLD<;9889;;==>>>>>>??????@@@@@@@@@@AAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAAAAAA@@@@@@@@@@@??????>>>>>>======<<;::8778:;BJMLJGzGuP|zOokUhmdkquiupgoognpiqfiiggg}o                                                                                                                                                                            N~|o]h}ltzhncnm^rmfpmmht_d}Kp6#"4In]c{kfseol\pkalkxfl{lsq`jyw헡~(                                                                                                                                                                ^gpn_dbqppngeuijfjlflrUnzLnE|EB42@CCzJlSlxekpdhjsghlecpoobfdhlk򝙙3                                                                                                                                                        ƶY|njqh[l{eWv_gp[{tk}ot_Gq,(,("!"#"" !'*'+Do]~{mryrhenYTt]jzcri\wkh잓2                                                                                                                                                `pijfd_qthjqbfn_wyo_fkOmO>1$(!   '#/<M}Lk~\ciuvldl]ho_orfic`ohkꔐ:                                                                                                                                        ^gmnZeiarl[teunei_{fj_q<!!!! !'&&&'''''''''''(((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(((((((((((((((((((((''''''''''''&&&&&&&&&%%%&     :]oycgg\slcXqb_ojZeigkl횙/                                                                                                                                    \kkmikhnnglpilrqhowRftGqG7!!!!!!!!!!!!!"""""""""""""""#####################################################################################"""""""""""""""""""!!!!!!!!!!!!!         5DEoOcrelujpoimfkkdikhhhi睝!                                                                                                                                    P}}b_euqjyr[ynd}gtT_?s1!!v t /=pQ\~zdrwlawpXrnfcagwww𤨥}                                                                                                                        Yxief`xaqqcplohoMcy?x6)u          t'3<uJ`vlelminn`]u^khhs견	                                                                                                                "SzrklMNry^doobyDt1!E                            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                                              E 
/Aql^valpw[J}KogiU~L                                                                                                        ckbsvcytpthuZrrmgb}Jo<+!!1                  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                           0)9Gkd^zooidrWplps_wlcp㜘(                                                                                                    ^x~lgqbftrnrqcqgkWiF3!! !!!Fm               !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                    lF  1BSendh|m_oko^bpjfqxtz觯                                                                                                !_e]lpjnlnnjnsiuQg90# ""$  d.              !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                .c"  !.6Mdpeqjfjkhkhkgah_H                                                                                            edogfteem`srlojnubzVs3 '$%  |            !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!              #"%0Ror^wlfjoniai[bpadkf蕦#                                                                                        UUd_`vcowhmhllzGo1#%
F           !!!!!!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!             E
#!.Ckhhwidksd\s_Rc^|𰶲}                                                                                    
r\hj\pjYw`js`ielgzI*"&" (          !!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!            ( # (Dhbvd`fo\Ts[Xle`jm                                                                                VljqijjmvhmrjegnGz,!" JV         !!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!           UI )Cv`biinfhrdeffhfmﻷ                                                                            ͿgvlmnjrnknosgnqiknwK$"! n         !!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!          l!Ffisimdkobifijenykn'                                                                    \x^jfyilzmrziq\h~8(%!$ !
Y        !!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!          X
!#&4~WcyvdmvhntehYfbp𸻷	                                                                    
uSni^nj~mn}ns|eqbj:%*$'!!
    !!!!!!!!!!!!"""""""""""""""""""##################################################""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!         
$!'#6\dx`myinzhiYjfQmg                                                                HPnd_tkzokskqgf?u' # =
V  !!!!!!!!!!""""""""""""""""##################################################################""""""""""""""""""""""""""""!!!!!!!!!!!!!         U
<!$:pb`nelujfYofJi^n                                                            h|lmTwk]rhxmingnjjE(!# d

  !!!!!!!!""""""""""""""#############################################################################"""""""""""""""""""""""!!!!!!!!!!!!         

b!%@ddhahshcXmcNrf|il                                                        kmffotkfqgiqg_qqLv5!!&(#	

M  !!!!!"""""""""""""#####################################################################################""""""""""""""""""""!!!!!!!!!!!         L

	 $#0FqYkkclaalbjofkdd9                                                    NslljnfhqhkthexyM8"!')#	
  !!""""""""""""########################$$$$$$$$$$$$$$$$$$$$$$##############################################"""""""""""""""""!!!!!!!!!!!         

	 %#3Fz_rteobblbdh`mggz                                                    khneqsql]|tl~ov[Pv% =		
: """""""""""#################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################################"""""""""""""""!!!!!!!!!!!        :
		;"JqipTnfxfVvkmkelb                                                    3elbkokqbogzpx^S&  i	
}!!""""""""###############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########################"""""""""""""""!!!!!!!!!!        }
	f#L|irWiatk]|eie_f\½N½                                            Mdnfgmj|nogwXwxA#   	
% !""""""#############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$######################""""""""""""""!!!!!!!!!!       &
	 ;Pppiapwg{agd^g_~¸x¹                                            [ormgoihnk~oohxUzF$     	
\!!"""############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###################"""""""""""""!!!!!!!!!      ^
	 ?Pvweifncweao`icjlg                                            xhkmfpngnlxmoemu<4        I	
 !"###########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$#################""""""""""""!!!!!!!!!!     
	G-;Nlnhfkvgx`gf`fg                                            :moriqqlppvmlis|>4"      !w	
;!"#########$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################"""""""""""!!!!!!!!!    =
	t 5G^llfdcrkp^egfhhkjd_^X)                                            Pzzlmtintprvxsiav~*$#      !! 		
h}!"#######$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###############"""""""""""!!!!!!!!!   }y|n
		+B[qeohne{fVziliobgx`k|fox`k8                                            SmktlishkomqtuslZv,%#      !!!!-	
 {wy !"####$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$##############""""""""""!!!!!!!!!  }vty!
	,!$(.:xGh~Ncscepmgodleiatm_|ghhvems_jsckpdi;                                            qjxtnxmknsqsmsnP|#       !!!!!_	
Itrx!"##$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$############"""""""""""!!!!!!!!  uopxM
	\,=L{p[rXepZlo^ro_up^jp_fo]aldhflugzheiibpjasaek\ie]                                            skxskwpoppprjurP#      !!!!!!	
ekoy !"$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$############""""""""""!!!!!!!! vlhmk
	!(/5:~@mGgxOmsSpnXpjZoh]qhjngpngjmdjmdhlbhlejfoeelccpccqedkffh                                            uixuhwuqojrp_uyG!"      !!!!!!!"	
(ffp~!#$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$############"""""""""!!!!!!!!!ylddk+
	&:Ozuo^tZnYlZmclriyyfz`lqNplfjnrhoqimqjjpkepjeamfWkhOgoMhokblx_k                                            ulxrjusslgrkXvE#       !!!!!!""P	
D`fs "#$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$###########""""""""""!!!!!!! ob]`I
	M&088?xIlRky\othmmhmfspkwtlsqkoiknimqkohlo_longrvesofqjimokesjahm`dka[glYfnkbns`m                                            |zxtnzrmuowfeuhPv<$      !!!!!!"""	
T\hx!##$$$$%%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$###########"""""""""!!!!!!  udYWW
	".Emz~ph~mjln~nrznstluolukoyipwfspcojbmdfpcnvawmlbx^}]~m`xbgqpkbzl\zmY}lUiicgdllaqj`p                                            tttqmwpoukwddxiKw?%      !!!!!!"""""

'}Ux\m "#$$%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$##########"""""""""!!!!!! |iYRxSy*


"-9AJUn\g~ppqmqunousovtqtsqspoqooqlrriooipljqomrpppnonkooepndshlwbvddu[gtikhsjbrm^sl]aif`fkoblobk                                            rtvjlulotgz^b}jEw= %     !!!!!!""""""E	
;sSuas!"#%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$########$$"""""""""!!!!!  o]PuKn=}
	
B 5Ljrzyniwtbs}\r~akpxkqylpvqptprnprnqslprjkrjkphkojknonmrtiuudxis_`LesYljlXiuMhw^injhhjkbkkbZigWjhsdhtcg                                            rvvplqrpspuibtpA~9"      !!!!!!""""""|	
}FiTwf{#$%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$#####$! """""""""!!!!! wcRw
Gh
Ci
	
u5AJUv`o}foxlrvqtvowtmyplxpprupruoqtppqppnoonqpmqropsopsonqnkmmjjmnjnqkqlofhu_lpgjij`fm]hofjlhggkkgljfahg]ffibekef                                            ovutmowpqvqtbmx;3!$!     !!!!!!""""""##	

!sJhZ~n!#$%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$#####$!""""""""!!!! ~jV~
Gh@^!

	

:W|vpwpqtptpusztrrttmtyisyhsxrrrrrrqqqqqqqqqppppppooqqqqqqqonommlmmllmlklkkklkhllknjljkjilkijiihhhiikggigffhfffggcee                                            mtrtnovpqvssfq}>4!#      !!!!!"""""""##A	
2eMl`v "$$%%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$#####$$"! !"""""!!!  r]Jl>[
-g
	
%*ao|vt}v}~pusuutvvttvsrttprxqrxpqxrrrrrrqqqqqqqqqppppppoooooonnnnnnmmmmmmllllllpppkkkeeefffkkkkkkhhhhhhhhheeeccc___jjjwwwr                                            lrqwqrunpvqqhr}?4!#      !!!!!!""""""###	
|>^Sth~!#$%%%%&&&&&&&&&&&&&&&&&&&&&'''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$####"'+&!!"""""!!! ydPt?\4T
	
[Ppn}qvtvuu{utrvtrvsqttqrxvqxupxrrrqqqqqqqqqqqqppppppooonnnmmmnnnmmmmmmlllmmmjjjkkkooommmhhhfffhhhgggbbb___uuu7kkk                                            mtsyrsuopqoofr|?4!#     !!!!!!""""""#####
	

nFbZ~q"#$%&&&&&&&&&&&&&&&&''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%$$$$$$$$$$$$####"%)&#!!"""""!! lV~Cb
6Nx

	
	rt{szuv{wvrwtovtmxumwtptuvrv~ow|owrrrqqqqqqqqqppppppoooooonnnnnnnnnmmmmmmllllllggggggiiiiiieeefffdddkkk~-                                                    nsrwqrtnopppdr|@4!#      !!!!!""""""######E	
+`Ljcz "$&&&&&&&&&&&&&&'''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%$$$$$$$$$$$####"%*($"!"""""!! u_Ij9Q#]
	
>-otruww~xvswujxthxthwtgwtnsuzruowowrrrqqqqqqqqqppppppoooooopppooommmmmmlllllljjjppppppdddcccnnn|||6                                                            krqvpqvopqqqes|@4!#     !!!!!!""""""###### 	
|:\Tuk"$%&&&&&&&&&&''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$$$$$$$$$#####$%$#! !""""!! }hSu;S&<

	
VYy|wx{vuyutyurwwnwujvujvviuunususszptzptqqqqqqqqqpppppppppoooooooooooommmmmmlllmmmnnnhhh]]]nnnI	                                                                        jrqvpqxrsuuuer}?4!#      !!!!!""""""######$$	

pFa\t #$%&&&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$$$$$$$########" !""""!  pRw6I%,p

	
d|sj~rn|plyslytnwukvvjvvjuuiuunussssxqrxqrqqqqqqqqqppppppoooooonnnoooooommmmmmkkkhhhfffz6	                                                                                    ksrvssvrrttter}>4 "    !!!!!!""""""#####$$$O	
&bMke|!#%&&&&&'''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$$$#"%$#""##!$+%!"""! 2i7M[,7A"%*L
	
87rzrsxuxwvztx{sx{sxytyysyttussurvsrwtquqnqnoooqqqqqqmmmooorrrqqqnnnmmmooonnnhhhmmmtS                                                                                                ltrvssurrssser}>4 "    !!!!!""""""######$$$!	
7]Uvm"$%&&&''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$$$$$$$#$$#""# "(/%!""")z8_zKMT?:<-*-1
	
`cuztwxvzuvryrzqyu{~szwqusprnrootpkunltnyyypppooottttttnnnlllqqqooodddt}}}w?                                                                                                        ltrvssurrssser}>4 "     !!!!!"""""######$$$$$ 

tEb]u #$%''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%$$$$$$$$%%$#""$ %&*$""!4QSoxKe\EUK@B<01.!""x


|vy{vz{vyztzzs{zs{yrzwqwwpwvsswsuxtryutxvowvolllrrrqqqllllllpppmmmnnniUxxx                                                                                                                ltsvssurrsssfs}>4 "     !!!!!""""""#####$$$$$$b	
 iMkf~!#&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$%%####%!'&% $9Qqcj{^gbK^K;K=470%'#Y
	
KAuz}u{}tz{t{zs{yszyrzyrzwqxvrrvssztrvqotpjtpiqqqooouuuttteeennndG
                                                                                                                        ltsvtturrsssfs}>4!"      !!!!!"""""######$$$$$$"	
1aVvn#%&''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$$$###$#&((+;R[brvqx|prsiik_[_UINA8;%*+;
	


emtwypxxoxxjwwiwwhvvlvvowuqsrnoorqqvttzqs{ss|uuuuulllhhhj|||f>                                                                                                                                    ltsvttvsssssfs~>4!"     !!!!!""""""#####$$$$$$$%3	
|Bc^v!#%&'''''''''''''(((((((((((((((((''''''''''''''''''''''''''''''''&&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$###$$$"#).+'3Ljzzwusllj^^^SOSK>C8/3*
	


$#lywrwxoxxmwwiwwgvvevvjvvltsnqqossxuuurrtkltjlunpgggkX!www                                                                                                                                            ltswttvssqsset~?5!"     !!!!!"""""######$$$$$$%%u 	

qNkf|"$&&'''''''''(((((((((((((((((((((((((''''''''''''''''''''''''''''&&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$$##$$";dcat~}|}xqyqhsk^fbUXXIHH745&$$n

	


 ^Ivvxxsxxsvwrtwrtvqtvqxtpzurzusztuwqrnknhmoqz~fT                                                                                                                                                    muswttvssqttet~?5!"      !!!!!"""""#####$$$$$$$%%$ 	
)gUum #%&''''''((((((((((((((((((((((((((((((('''''''''''''''''''''''''&&&&&&&&&&&&&&%%%%%%%%%%%$$$$$$$$$##%$",NVa~z}}}|{x{ulumbldT\YIJJ;::,**N
	



 
	n|vvxxswwruwruvqtvquupyspzsrxrpuopwqrzx{eF                                                                                                                                                                nusoutsss{stnt~;1'"    !!!!!""""""#####$$$$$$%%%%O  	
;e]u!#%&'''(((((((((((((((((((((((((((((((((((('''''''''''''''''''''''&&&&&&&&$"$(.0//#"((" !"#$&+*.:Rcijy~~~{{{tttkkk^^^PPP???///4
	

 
 
94xxxzzz{{{tttsssxxxtttmmmvvvvvvrrrvvvk@                                                                                                                                                                        nutovtsss{stnt~;1'"    !!!!!"""""#####$$$$$$$%%%%"   

yJid{!$%&'((((((((((((((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&$#$(-0..#"((" !"&'$'-5<EJWk|||vvvnnncccTTTDDD444$$)
~



 
 
 
dbvvvqqqrrrwwwuuurrrwwwzzzrrrqqqv7
                                                                                                                                                                                    nutovtsss{stot~<1'"    !!!!!"""""#####$$$$$$%%%%%%)   	
 oSrk"$'((((((((((((((((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&%),)$*,,+%$&&"#(&!"%.DWi{z~}}}xxxpppfffXXXIII999)))a
	


 
 	 #{{{yyyvvvzzzyyytttuuummmuuux/                                                                                                                                                                                            outovuttt{stot~<1'"   !!!!!"""""#####$$$$$$$%%%%%%s   	
1hZ|r $&'(((((((((((((((((((((((((((((((((((((((((('''''''''''''''''''&&&&&&%(+)%)+**&%&% #('',+/8Ma|~|~~~zzzsssiii\\\NNN>>>---D
	



 
 	 	LIuuuttttttssspppvvv~~~|+                                                                                                                                                                                                    outovuttt{stot<1'"   !!!!!"""""#####$$$$$$%%%%%%%%    	

Biay"%&'((((((((((((((((((((((((((((((((((((((((((''''''''''''''''''&&&&&&&"&+*+#! )+** #%-F`u}yr|~~~{{{uuulllaaaRRRBBB222! 1
	

 
 	 	 	sszyyyxxxtttzzz愄+
                                                                                                                                                                                                            outpvuttt{tuot<1'"   !!!!!"""""#####$$$$$$%%%%%%%&R   	

yOnh#%''(((((((((((((((((((((((((((((((((((((((((('''''''''''''''''&&&&&&&$"&(()$"! )***(025ARe|t||||wwwooodddVVVGGG777'&){

	


 	 	 	<7vvvrrrttt~~~+                                                                                                                                                                                                                    outpvuttt{tuot<2("   !!!!"""""#####$$$$$$%%%%%%%&&#    	
"pWwo #&'(((((((((((((((((((((((((((((((((((((((((((''''''''''''''''&&&&&&%*.'!%'()!#'+*""@Tfz}x|}y{s|}}}}yyyqqqhhh[[[KKK;;;+++`
	


 	 	 	 
edppp܀$                                                                                                                                                                                                                            ovtpvuttt|tuot<2("  !!!!!"""""#####$$$$$$%%%%%%%&&&9     	
3k^u!$&'(((((((((((((((((((((((((((((((((((((((((('''''''''''''''''&&&&&%')'%&'''"!"$*03:MRWh~u|{~~zzzuuukkk___PPP@@@000E
	


 	 	 	 	 ,%~~~*                                                                                                                                                                                                                                ovtpvuttt|tuou<2(#  !!!!!"""""#####$$$$$$%%%%%%%&&&!     	
Dld{"%&'(((((((((((((((((((((((((((((((((((((((((('''''''''''''''&&&&&&'!'0(%$$*.!=`~stuz|||{vvvmmmbbbTTTDDD444#"3
	

 	 	 	 	 	ZW                                                                                                                                                                                                                                        ovupwuttt|tuou<2(#  !!!!!"""""####$$$$$$%%%%%%%&&&&&     	

zQqk #%''((((((((((((((((((((((((((((((((((((((((('''''''''''''''&&&&&&'##'&$&+(()/>JVe|}|{|{{xxwpppfffXXXHHH888((+{

	

	 	 	 	 	 
ٰ	                                                                                                                                                                                                                                                ovupwuttt|tupu<2(#  !!!!"""""#####$$$$$$%%%%%%%&&&&&o     	
#qZzr!$&'((((((((((((((((((((((((((((((((((((((((((''''''''''''''&&&&&&&&&%122":V{|v~vx~z~~~vywzxsssiii\\\MMM===---a
	

	 	 	 	 	 	
f                                                                                                                                                                                                                                                    pvupwuuuu|tupu<2(#  !!!!"""""#####$$$$$$%%%%%%&&&&&&%      	
4m`w"$&'((((((()(((((((((((((((((((((((((((((((((''''''''''''''&&&&&&&%&($%*/0<=MZt{x|}||xvutkkk```QQQAAA111F
	

	 	 	 	 	 	 

	                                                                                                                                                                                                                                                    pvupwuuuu|tupu=2(# !!!!!"""""#####$$$$$%%%%%%%&&&&&&&U      	
Enf}"%&'(()))))))))(((((((((((((((((((((((((((((''''''''''''''&&&&&&&%'9A(# Ju}~{ww|{~zyzyt~tuuumnbccUUUEEE555#"5
	
	 	 	 	 	 	 	
ڈ                                                                                                                                                                                                                                                        pvupwuuuu|tupu=2(# !!!!!"""""####$$$$$$%%%%%%%&&&&&&&%      	

{Qsl #%'()))))))))))))((((((((((((((((((((((((((''''''''''''''&&&&&&&'(+02>CCUr~}~z|yuwqmhffXYYIII999)).}

	
		 	 	 	 	 	 	
                                                                                                                                                                                                                                                        nvuqwvuuu~uvqu<1)# !!!!!""""#####$$$$$$%%%%%%&&&&&&&''A       	
 u[{r!$'())))))))))))))(((((((((((((((((((((((((''''''(((''''&'''&%&')("-EXz~|{~~vt}py~jttdld[]\MMM===---h
	
		 	 	 	 	 	 	 
ڤ                                                                                                                                                                                                                                                            uxvswvuuuvvvlvA7%#   !!!!"""""#####$$$$$$%%%%%%&&&&&&&''#       	
0paw"%'())))))))))))))((((((((((((((((((((((((''''''###%())'#""&*&"'4BDJXkzx{~ruximk_a^RSRBBB111P
	
		 	 	 	 	 	 	 	
/                                                                                                                                                                                                                                                            {xxvvvtttqxwexD< #$" !!!!"""""#####$$$$$%%%%%%%&&&&&&&'''6        	
Apf} #&'())))))))))))))(((((((((((((((((((((((''''''!(+,'#+$2DQf~~||wvvpnndccUUUFFF666" <
	

	 	 	 	 	 	 	 	 
۵                                                                                                                                                                                                                                                                ywwvvvtttrywevD=!##" !!!!"""""#####$$$$$%%%%%%%&&&&&&&'''"       

Otl!$&(())))))))))))))((((((((((((((((((((((''''''(*+++($#"*)%'*5Qb\`v}}}xxxqqqfffYYYIII999((2




		 	 	 	 	 	 	 	
=                                                                                                                                                                                                                                                                ywwvvvtttrywew~D>!##"!!!!!"""""####$$$$$$%%%%%%%&&&&&&''''',        	
zYzr!$'()))))))))))))))(((((((((((((((((((((''''''0375.$ ./+($&3]|{}{{~~~~yyyssshhh\\\MMM===--.s
	

		 	 	 	 	 	 	 	 
                                                                                                                                                                                                                                                                    xwwtttuuuryvbt|C>!"#!!!!!!"""""####$$$$$$%%%%%%&&&&&&&'''''         	
*t`w"%'())))))))))))))((((((((((((((((((((''''''',-((&''''$'8PW^}zzztttkkk___PPPAAA111[
	


		 	 	 	 	 	 	 	 	
M                                                                                                                                                                                                                                                                    uuutttuuutywbt|B>!""!!!!!!""""#####$$$$$$%%%%%%&&&&&&&''''''!         	
<rf}#%'()))))))))))))(((((((((((((((((((('''''''.,  '0+ $'5L^v{{{vvvnnnbbbTTTDDD555 E
	


	 	 	 	 	 	 	 	 	 

                                                                                                                                                                                                                                                                    uuutuusuutyxds{B<!""!!!!!!""""#####$$$$$$%%%%%%&&&&&&&''''''u        	
Ksk $&'())))))))))))(((((((((((((((((((('''''''+**)#".Oj}}}}}wwwpppeeeXXXHHH888&%6
	


		 	 	 	 	 	 	 	 	
\                                                                                                                                                                                                                                                                        uuuruutwwtyxfr{B;!""!!!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''         	

~Vxq!$&())))))))))))(((((((((((((((((((('''''''
/.-) Co}zyz~~~yyyrrrggg[[[LLL<<<++0}

	


		 	 	 	 	 	 	 	 	 
                                                                                                                                                                                                                                                                        wwwqttsuusxvhu}A~? !"!!!!!"""""#####$$$$$%%%%%%%&&&&&&''''''''s         	
 y^u"%'()))))))))))(((((((((((((((((((''''''''!$)(24*1Q`|~zz~~~zzztttjjj^^^OOO@@@///j
	



		 	 	 	 	 	 	 	 	 	
_                                                                                                                                                                                                                                                                            wwwqttsuusxviv@}@ !"!!!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''          	
/ucz#%'())))))))))(((((((((((((((((((''''''''''%(63$&Fi{~zuu|||uuummm```SSSEEE333U
	



	 	 	 	 	 	 	 	 	 	 
                                                                                                                                                                                                                                                                            twwqttsuusxviv@}@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''w          	
@ti #&'()))))))))(((((((((((((((((('''''''''')$$(8rw}}}wwwooocccXXXFFF555$"D
	


	 	 	 	 	 	 	 	 	 	 		[                                                                                                                                                                                                                                                                                twwqttsvvsxviv@}@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(          	
Mvn!$&(()))))))((((((((((((((((((('''''''''+)$#&or|}}}xxxqqqfffYYYJJJ:::&&5
	


		 	 	 	 	 	 	 	 	 	 	                                                                                                                                                                                                                                                                                twwqttsvvsxvjvB}A    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''( z          	

Y{r!$&()))))))(((((((((((((((((((''''''''')"'>m~~~~~zzzrrriii\\\MMM===--1|

	


		 	 	 	 	 	 	 	 	 	 	W                                                                                                                                                                                                                                                                                    twwqttsvvsxvjvB}A    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''((!           	
#y`w"%'())))))((((((((((((((((((''''''''''#()-b~}~~~{{{tttkkk___QQQAAA111h
	



		 	 	 	 	 	 	 	 	 	  	                                                                                                                                                                                                                                                                                    twwqttsvvsxvjvB}B      !!!!"""""#####$$$$$%%%%%%&&&&&&&'''''''''(( |           	
2ve|#%'()))))(((((((((((((((((('''''''''',Gov~zxu|||uuummmaaaTTTDDD444T
	



	 	 	 	 	 	 	 	 	 	  	S                                                                                                                                                                                                                                                                                        twwqttsvvsxvjvB}B !!!!!"""!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((#            	
Auj #&'()))(((((((((((((((((('''''''''''38[x~xtp}xxxoooeeeWWWHHH777#!A
	


	 	 	 	 	 	 	 	 	 	   	m                                                                                                                                                                                                                                                                                        hyvtusvxqv{lmyoSVJNUTRV[VKHF@;4-('""! ! $'''(,-) $+(())('&&&&'(**!           	
Oxn!$&(())(((((((((((()$,40+#')2::$&|}}}yyyttteeeXXXMMM;;;('6

	


		 	 	 	 	 	 	 	 	   	K                                                                                                                                                                                                                                                                                            jzyyyvvvo{~pt|rGq:y,t1v9x8z7|;A<56952/*,+%%"$*+$%$#&)%'%$"))())('&&&&'(**(.            	

Y|s!$&())(((((((((((()$,30+ *.16:&!zzzztttggg___PPP<<<++0}

	


		 	 	 	 	 	 	 	 	    	                                                                                                                                                                                                                                                                                               vsp}lnxn{u[sP~HyN|\}_}`flxu~{}{yy|{xnhh`K93/,)' &,3)"$#"""#&(,--,,*$            	
!|aw"%'()(((((((((((((((&#',./"22 "Yn}{{{uuukkk___QQQCCC222k
	


		 	 	 	 	 	 	 	 	    	9                                                                                                                                                                                                                                                                                                rq~o|ruvnwrcfY]hd`bdinqrz~~}ujcZRRJF:750-(#,5,"&$""!#&(,,,++)*<             	
0xf|#%'((((((((((((((((&$'+-/' -0('R`}}}vvvnnnbbbUUUDDD444Y
	


	 	 	 	 	 	 	 	 	     	ݬ                                                                                                                                                                                                                                                                                                   mtrtxxx|~iyzSv~:7!  %((.9CMZcry~|reZN?1%+6+!"&*,'#  %($            	
>wj #&&'(((((((((((((('''%063(A_~~~xxxpppeeeXXXFFF:::" G
	

		 	 	 	 	 	 	 	     	(                                                                                                                                                                                                                                                                                                    ovvuvyruwjxxX|=8"%#!")03:EPXb`hlrw{ygXK>5:51* #+/)# "%(*(&###%(O             	
Lyn!$%''((((((((((('''('%/3.'#"GW~~~zzzrrrgggZZZKKK<<<)(<
	

		 	 	 	 	 	 	 	      	ܑ                                                                                                                                                                                                                                                                                                       wv{xszrovjwvW=3"$%!.6@N^dqx{z{jYC?<&$,,-#"/30,(%
             	

W}r!#%'(((((((((((%!(-&$()'&.1{{{sssjjj]]]NNN>>>--5

	

		 	 	 	 	 	 	 	                                                                                                                                                                                                                                                                                                              yty}tz{tzoxwWz|=5 !$&# "0?O]d_aq{}qZNDIL4(---&"#$+-,+((e             	
~^v!$&'((((((((((&$()%%&'%&9=|||vvvlll```QQQAAA112r
	


		 	 	 	 	 	 	 	      	t                                                                                                                                                                                                                                                                                                           ttswrv}vwbyB8#""#$###"!;QSjJ".01134+(  +97((&              	
*zdz"$&'((((((((((,' $'!g|||wwwnnnbbbSSSDDD444`
	



	 	 	 	 	 	 	 	       		                                                                                                                                                                                                                                                                                                            |vstutvwww^y@8 &#!"""#$$$#%&%%%$AUZas}~pI?KD6/-,)($"#(02((( }              	
9xh~"%&'(((((((()-&$%!,-l~~~xxxpppdddWWWGGG888 M
	


	 	 	 	 	 	 	 	       	R                                                                                                                                                                                                                                                                                                               hzrtxstvvnxw[z?9    %.& "'(**+,,++**# $)B`{{xZ9!&/01-%"$((('2              	

Fxl #%&'(((((('-4$#& :]zzzrrrgggZZZJJJ;;;&$A
	


		 	 	 	 	 	 	        	ݺ                                                                                                                                                                                                                                                                                                                   lzrxxtwvvpxw^yA:! #+$ "&'((('&$#  "(0AT]cqtzbOE;+%%'*-*&'((((#              	

P{p #%''(((((',0$"&(0Oc{{{sssiii\\\MMM===+*9


	


		 	 	 	 	 	 	        -                                                                                                                                                                                                                                                                                                                   mzr|wu{uwtwxewD<"  '! "'(((# $!
Fh{]<.0+*(((('N               	

[t!$&'((((((+,$! '1J~|||vvvkkk___PPPAAA005|

	


		 	 	 	 	 	 	         	ܓ                                                                                                                                                                                                                                                                                                                       lyt|ux{uyvwxewD<"%# !!!#""""! !#"!"/JWah{~fQD=2(''**(((((&               	
!~ax!$&'((((())%$#%?Yw~~~wwwnnnbbbTTTCCC444m
	




	 	 	 	 	 	 	                                                                                                                                                                                                                                                                                                                                 iwy}t|{tzwvyewD<!!&'&$! "'*/0,)!%&)-*-@Xqu|n]H/+,(('()(r               	
.{f|"$&'(((('#&)$NsxxxpppdddVVVFFF777\
	



	 	 	 	 	 	 	         	b                                                                                                                                                                                                                                                                                                                           nwwwwzyuy{vxlwA7  "##"!!   !"#$%(()( "()!%3HZiiO>+)2+((++$&%+               	
<yi"%&'((('##%*5d{zzzqqqfffXXXIII:::#!L
	


		 	 	 	 	 	          	 I                                                                                                                                                                                                                                                                                                                            qwvpxwvvv}vwrv=2!*$ !!!"##########)( $!BVmR8¾/-4.((/. !""               	

Hym #%''((%" $.C{{{{tttiii\\\LLL<<<('@
	


		 	 	 	 	 	          	0                                                                                                                                                                                                                                                                                                                               qwvrxwvvv}vwqv>3 )#!!!!""""#####$$))  !&+)"#=OQjlbYJ&(&(,+#$%&O                	

S{q #%''(('$9Ky|||uuukkk^^^OOO???,,7


	


		 	 	 	 	 	           	ܐ                                                                                                                                                                                                                                                                                                                                   qwvrxwvvv}vwqv>3 )#!!!!""""#####$$))""%)1/,(.<Ah~gQ"$(*)%&&')                	
\t!$&'())$;My~~~vvvnnn```RRRBBB114{
	


		 	 	 	 	 	                                                                                                                                                                                                                                                                                                                                              qwvrxwvvv}vwqv>3 )#!!!!""""#####$$((##$(-./,(&##(C[u{}F.(''&'(((( ~                	
"bx!$&&*/'OkyyyooocccTTTEEE444l
	




	 	 	 	 	 	           	P                                                                                                                                                                                                                                                                                                                                       qwvrxwvvv}vwqv>3 )#!!!!""""#####$$(($$%(,031.((Q||<4('%%'**)('<                 	
/{e{"$%*4*O{zzzrrreeeXXXGGG777Z
	



	 	 	 	 	 	            	ܭ                                                                                                                                                                                                                                                                                                                                           qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$   "'03.*!4Wwc_8*"#---+$&$                	
;zi~"%(03*d{{{ssshhhZZZKKK:::" M
	


		 	 	 	 	                                                                                                                                                                                                                                                                                                                                                       qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##$$$-43+"Sy~[=*!!/..,#%%k               
 
	

Fzm #&,5)i}}}uuujjj\\\MMM===(&D
	


		 	 	 	 	            	l                                                                                                                                                                                                                                                                                                                                               qwvrxwvvv}vwqv>3 )#!!!!""""#####$$''%!$/0/)"%(8Hh}P5'../. #(&-              
 
 
 
	

P|p "#<Gw~~~wwwlll___PPP@@@-,;


	


		 	 	 	 	             	 7                                                                                                                                                                                                                                                                                                                                               qwvrxwvvv}vwqv>3 )#!!!!""""#####$$('&!"-02-&'(0>iK5!'.//-#)&!            
 
 
 
 
 
	

Zt8Jz}xxxoooaaaSSSBBB217

	


		 	 	 	 	             (                                                                                                                                                                                                                                                                                                                                                   qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  ,.0/$ !(()% "'/.U}[R('.0.(#.*$d           
 
 
 
 
 
 
 
	
`wAm}zzzpppdddUUUEEE556r
	




	 	 	 	 	              	u                                                                                                                                                                                                                                                                                                                                                       qwvrxwvvv}vwqv>3 )#!!!!""""#####$$ !-032'!!'&'#!(.,Y~VQ)'00,'#/+%(&         
 
 
 
 
 
 
 
 
 	
*~d{9j}{{{{rrrfffXXXHHH888b
	



	 	 	 	 	              	o                                                                                                                                                                                                                                                                                                                                                       qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##*,/.)%$%%$#!  #1Rhve/,1,(&%6/$&$       
 
 
 
 
 
 
 
 
 
 
	
6{iFzy|||ttthhh[[[KKK:::!T
	


		 	 	 	              -                                                                                                                                                                                                                                                                                                                                                           qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##*,/.)&$%%$#!  1Ui}_//1+('%7/$'(f     
 
 
 
 
 
 
 
 
 
 
 
 


	
C{
p<qplw{y~~~uuukkk]]]MMM===&$G
	


		 	 	 	              	r                                                                                                                                                                                                                                                                                                                                                               qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$!!  $&(+++++-'E_}x71-)($&<2$&&'/    
 
 
 
 
 
 
 
 
 
 
 
 
 
 

	

Q{<`qoadvozs}xxxmmm___PPP@@@+*=
	


		 	 	 	               	ݾ 7                                                                                                                                                                                                                                                                                                                                                               qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$   $&(++,,+.)G^|w:1+)*#&<2$&&'$  
 
 
 
 
 
 
 
 
 
 
 
 
 
   

	

/I``SUjdnwk{zyyyyooobbbSSSBBB//:

	


		 	 	 	               !                                                                                                                                                                                                                                                                                                                                                                   qwvrxwvvv}vwqv>3 )#!!!!""""#####$$)) "()(%"!"$)1/)Khq-)#'.)%)4,&/+(s
 
 
 
 
 
 
 
 
 
 
 
 
 
     

	
CIEW[Yjhjyp{yzzzqqqdddUUUEEE336{
	




	 	 	 	               `                                                                                                                                                                                                                                                                                                                                                                       qwvrxwvvv}vwqv>3 )#!!!!""""#####$$)) #()(%"!"$+0-)Kht-'%(.)%)4,&/+)(;
 
 
 
 
 
 
 
 
 
 
 
 
       


	
pHLJ\[\neo|r{||||rrrfffXXXGGG777m
	



	 	 	 	                ܭ                                                                                                                                                                                                                                                                                                                                                                          qwvrxwvvv}vwqv>3 )#!!!!""""#####$$$$$$)+--,*%!!"#"%%Jr}]((+,*( '5-"',*)(%
 
 
 
 
 
 
 
 
 
 
        


	
&#hNMM^Z`nhsuyv||}}}ttthhhZZZJJJ999a
	


		 	 	                                                                                                                                                                                                                                                                                                                                                                                           qwvrxwvvv}vwqv>3 )#!!!!""""#####$$##$%)+--+*%"!"#"%'Fova)(,,)) '5-#',*))( 

 
 
 
 
 
 
 
 
          


	
/,[QMRa\ekolv}uvvvkkk\\\LLL<<<" Q
	


		 	 	                L                                                                                                                                                                                                                                                                                                                                                                               qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  &+.-**''()**,'&'"WQI)(1.*($2-'),*)))(J
 
 
 
 
 
 
 
            



	
43VNQTbb`qpmz{yxxxlll___NNN>>>'%H
	


		 	 	                 ܘ                                                                                                                                                                                                                                                                                                                                                                                  qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  %)++)(%&(**+,'&+(VXK'*0/*'$2-()+*)))('
 
 
 
 
 
              




::PUUSfdbpqo{{{zzzoooaaaRRR@@@-,?





		 	 	                                                                                                                                                                                                                                                                                                                                                                                                    qwvrxwvvv}vwqv>3 )#!!!!""""#####$$  $$! !(/201(7T~yE5"(43*#"1.+*))))))("
 
 
 
                

	

D@L^VVefboto{z}{zzzpppcccTTTDDD00;

	


		 	 	                 3                                                                                                                                                                                                                                                                                                                                                                                       qwvrxwvvv}vwqv>3 )#!!!!""""#####$$!"$#! $(,--,&BYxpG6"(33+$"0.+*)))))))(h

 
                  

	
}LFIWYVdhdurq}wyv{|sxypppeeeVVVFFF558z
	




	 	 	                 n                                                                                                                                                                                                                                                                                                                                                                                          qwvrxwvvv}vwqv>3 )#!!!!""""#####$$&&$!!()&#!!"krY-&&&52)&#.--+)))))))((9
                    
	
!rHJGUZVhedqkmkpqhmmdddWWWHHH777m
	



	 	 	                  ݱ                                                                                                                                                                                                                                                                                                                                                                                              qwvrxwvvv}vwqv>3 )#!!!!""""#####$$''$! #&'&%%#!.9fdX,'$'20)'$-,,+))))))))(%                   
	
$"hFKFXVVa]_^ab\^_UUUHHH999b
	


		 	                                                                                                                                                                                                                                                                                                                                                                                                                 qwvrxwvvv}vwqv>3 )#!!!!""""#####$$++$$%)20/*<k~w|D+!"#(,+((%',++*())))))))(!
                   
	
'(\FFEOMNPPQMMNEEE999 V
	


		 	                  ?                                                                                                                                                                                                                                                                                                                                                                                                   qwvrxwvvv}vwqv>3 )#!!!!""""#####$$**##$)30-'#,4Qm|xt@)%%$())(())+**)()))))))))(d                    


	
+*L<;<>>><;<444$"E
	


		 	                   u                                                                                                                                                                                                                                                                                                                                                                                                      qwvrxwvvv}vwqv>3 )#!!!!""""#####$$*)  &-76/!5AMeR((''#%(+1-()((()))))))))((9                    
	

'%=.,-+*+" 8
	


		 	                   ݰ ,                                                                                                                                                                                                                                                                                                                                                                                                       qwvrxwvvv}vwqv>3 )#!!!!""""#####$$)(")31) @Wd{njX?++'&!"(,2/('&'())))))))))(%                    

	


+)

	


		 	                                                                                                                                                                                                                                                                                                                                                                                                                              rwvpxwvvv~vwrv=2 )#!!!!""##$$###""('%.+BtzjR1"%//(#(/72'$#$()))))))))))("
                   
 

	

~~

	




	 	                   6                                                                                                                                                                                                                                                                                                                                                                                                               myvuxwwvwywxkvA7 ##$"!!!"! "$(,.%% $')( (:F^xwp]F*%($++(&"$(+/-(''')))))))))))))(p                 
 
 
 
	

	




	 	                   b                                                                                                                                                                                                                                                                                                                                                                                                                  f{tzwuyuwswxbuD<" #.% !!! !(0;>$"#&/-!(Lfz|ydC(+*''(())(((()))))))))))))))))((N                
 
 
 
 

	




		                    ے                                                                                                                                                                                                                                                                                                                                                                                                                      mwv}uw|twvvwbwB:&# !!  !!!"#$""""%&&$-H__fnxxeUF</&%&&%(((((((())))))))))))))))))))('/              
 
 
 
 
 
 

	
	


		                    !잝                                                                                                                                                                                                                                                                                                                                                                                                                       qvytztwvvwa{|A9"#!! !%(('#%&$!
$U~w}_7
/0##(((((((()))))))))))))))))))))($            
 
 
 
 
 
 
 
 

	


		                    ssB                                                                                                                                                                                                                                                                                                                                                                                                                        twsutuvvwwawA9 '&&#"! #&*-,+'#/,*/ERbjyx_MC8(###$'%%'(((((((())))))))))))))))))))))'!          
 
 
 
 
 
 
 
 
 
 

	



		                    hf|||H	                                                                                                                                                                                                                                                                                                                                                                                                                    vwqwruvvwwbuA:!!$*))%#" $(-2220-((11*#AX~}yP()0*& %((((((((())))))))))))))))))))))('x        
 
 
 
 
 
 
 
 
 
 
 
 



	


		                    VS~~~}}}Ǯ0                                                                                                                                                                                                                                                                                                                                                                                                                    wvtuw|twrww\z>6 '$ !#&%%%"#"#%'&*ES[e~{gB<MF3,+'$#%&&*-.(((((((())))))))))))))))))))))(''V       
 
 
 
 
 
 
 
 
 
 
 
 
 	 



	



                    A=}}}}}}A                                                                                                                                                                                                                                                                                                                                                                                                                zvv}tx{twpwwZ{~<5'"$(((%.G`}~~v>)4772)!"%+12/(((((((())))))))))))))))))))))(('&5     
 
 
 
 
 
 
 
 
 
 
 
 
 	 	 	 




	

	                  ,'yyyͥ3                                                                                                                                                                                                                                                                                                                                                                                                                rtvxuxyvynxwWy{<6!" "'"*9KYa_dmszsWD6?>/$&)++)'(+,,-+$$(((((((())))))))))))))))))))))((('$   
 
 
 
 
 
 
 
 
 
 
 
 
 	 	 	 	 	 




	
                 xx~~~~~~?                                                                                                                                                                                                                                                                                                                                                                                                            otvsrtutvnyxY|~>7 $"" %-"*0:I]kst~~y|fD$''$"$%&&''+//.-)  (((((((()))))))))))))))))))))))((('"
 
 
 
 
 
 
 
 
 
 
 
 
 
 	 	 	 	 	 	 	


	

               nm~~~|||ҟ,                                                                                                                                                                                                                                                                                                                                                                                                            rttxuuyvwpyxZ{?8$%#$+/5=ISb`htuy}~}~jVJF>861-+)(,.,*'&&&'+--,($$(((((((()))))))))))))))))))))))(((('
 
 
 
 
 
 
 
 
 
 
 
 	 	 	 	 	 	 	 	 	


	
             
_^}}}}}}                                                                                                                                                                                                                                                                                                                                                                                                        tvt|zzywwmvtWy?7&&(-6DSbvzsxrfT?-%&/,$*1/+'&&&%)--,(%%(((((((()))))))))))))))))))))))((((('r

 
 
 
 
 
 
 
 
 
 	 	 	 	 	 	 	 	 	 	 	



	
           URyyy~~~񏏏8                                                                                                                                                                                                                                                                                                                                                                                                    fw~suzwqqyuju{u[_VYa_ZWVh|yvwy~w~i]URF>;@:*'')****)# %,'"" $+/0**((--(((((((()))))))))))))))))))))))(((((''X
 
 
 
 
 
 
 
 
 	 	 	 	 	 	 	 	 	 	 	 	 	
	

	

          D@}}}|||}}}ף'                                                                                                                                                                                                                                                                                                                                                                                                    dv~pty{su{pwzrRwM?}C}M|NzO|P|R~iyw||}~~~~{qhgWH83-&('',+)&#"#(+&!!$,12**((..(((((((()))))))))))))))))))))))(((((('&>
 
 
 
 
 
 
 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		

	

        2.zzz|||}}}낂E                                                                                                                                                                                                                                                                                                                                                                                                nt{|uxvv}owoQqH~9w=wEwDzA~FL@2|6:=:71/)%%%&**$#!! ""()(%&(*,+(##"!&'''""(((((((()))))))))))))))))))))))((((((('%,
 
 
 
 
 	 	 	 	 	 	 	 	 	 	 	 	 	 	   			


	


	      &!}}~~~{{{~~~ܐ;                                                                                                                                                                                                                                                                                                                                                                                            sy|uxonvi{r\[MR\[Z]aYOPPMGA:1'!  #$#! "   #$&&'(((*-,)#"! &'''!!((((((((())))))))))))))))))))))((((((('&"
 
 
 	 	 	 	 	 	 	 	 	 	 	 	 	 	     			


	

	    vv|||{{{{{{ۙ4                                                                                                                                                                                                                                                                                                                                                                                            twwqttsvvsxvjv@~@!!!!""""#""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((((('&%#
 	 	 	 	 	 	 	 	 	 	 	 	 	 	       			

	

	   hg{{{}}}|||ِ,                                                                                                                                                                                                                                                                                                                                                                                    twwqttsvvsxvjv@~@    !!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((((''%# \
	 	 	 	 	 	 	 	 	 	 	 	 	        		



	

 PNvllluuu|||~~~~~~|||}}}~~~܋H"                                                                                                                                                                                                                                                                                                                                                                                twwqttsvvsxvjv@~@    !!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))(((('%$!v_8~		 	 	 	 	 	 	 	 	 	 	          		


	

64hTTTbbbnnnvvv}}}~~~~~~|||{{{{{{݉J                                                                                                                                                                                                                                                                                                                                                                             twwqttsvvsxvjv@~@    !!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))((('&$!ydMi#n		 	 	 	 	 	 	 	 	            		



	
%#eGGGVVVdddooowww}}}~~~|||||||||xxx߈M                                                                                                                                                                                                                                                                                                                                                                        twwqttsvvsxvjv@~@    !!!!"""""#####$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))(('&$"{fPl*h

		 	 	 	 	 	 	              		

	
*)[IIIXXXeeepppxxx}}}~~~~~~}}}|||}}}yyy܎J                                                                                                                                                                                                                                                                                                                                                                        twwqttsvvsxvjv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))('&$"}hSp0d
			 	 	 	 	                	

	
0/SJJJYYYfffqqqxxx~~~~~~~~~~~~}}}zzz~~~xxxۑG	                                                                                                                                                                                                                                                                                                                                                                    twwqttsvvsxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((()))))))))))))))))))))))(&%"kUs4c



	 	 	 	                  	





22OLLLZZZgggrrryyy~~~~~~~~~}}}|||zzzvvvۖF                                                                                                                                                                                                                                                                                                                                                                twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))))('%# mWv:a

	

	 	                    	

	

77KNNN\\\iiirrrzzz}}}~~~}}}}}}|||zzz}}}oooٚD                                                                                                                                                                                                                                                                                                                                                            twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((()))))))))))))))))))))('&# oYy?`

	



                     		


	

<<GOOO]]]jjjssszzz~~~~~~~~~~~~~~~www~~~{{{oooԘH
                                                                                                                                                                                                                                                                                                                                                        twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&'''''''''(((((((((((((())))))))))))))))))))('&$ r[|Da
	



		                     		

	
??DPPP^^^jjjssszzz~~~~~~}}}yyy|||{{{pppӕL                                                                                                                                                                                                                                                                                                                                                twwqttsuusxviv@~@    !!!!"""""#####$$$$$%%%%%%%&&&&&&''''''''''((((((((((((()))))))))))))))))))((&$!s^Gc~
	

	 	                    			

	
}AADQQQ```kkktttzzz~~~}}}~~~}}}zzz|||{{{xxxnnnԌU                                                                                                                                                                                                                                                                                                                                            twwqttsuusxviv@~@    !!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((())))))))))))))))))((&$"u_Jdy
	

	   	                    		

	
wCCCSSS```llltttzzz}}}zzz~~~yyyxxxqqqωZ                                                                                                                                                                                                                                                                                                                                        twwqttsuusxviv@~@    !!!!!""""#####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((()))))))))))))))))((&$"waKf r
	

	     	                    	

	
!lEEETTTaaammmuuu{{{~~~yyy~~~~~~{{{zzz~~~}}}tttЇ_                                                                                                                                                                                                                                                                                                                                     twwqsssuurwviv~@~@    !!!!!""""#####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((())))))))))))))))('%"ydMi&j
	

	       	                    	

	
'%`FFFUUUbbbmmmvvv{{{~~~|||{{{~~~|||xxx}}}}}}sssφ_                                                                                                                                                                                                                                                                                                                                twwosssuurwviv~@|A   !!!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))))))('%"|fPl+g
	

	         	                    	


	
*)YHHHVVVcccmnnvvv{{{~~~~~~~~~}||}}}~|~~~~~~zzzxxxyyyyyyE
                                                                                                                                                                                                                                                                                                                            sxxtttuuuuvvft}?;!#!!!!!!"""""####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((())))))))))))))('%#}iRo0d
	

	           	                    	


	
/.SIII[WWjdemqmuxuy|z}~~~}|}|~|~y|v{z|}}{{|||zzz{{{wwwppp̓L                                                                                                                                                                                                                                                                                                                        pyxzvvwttwvwes|>4"&" !!!!"""""####$$$$$$%%%%%%%&&&&&&'''''''''((((((((((((((())))))))))))('%# jTr6`


	

		                                 	
	


33LQIJbXYaiajtjqzsu}|x~y{{}|{}z}}y~~w~u|p|w|}|{{{{{{{zzz{{{{{{sss͆U                                                                                                                                                                                                                                                                                                                    pxvwttvttwwwft}?6"%! !!!!"""""#####$$$$$%%%%%%%&&&&&&&'''''''''(((((((((((((()))))))))))('&# lWu9`

	

		                                   	

	

76INLKY[Yegepqpvwx|{~~}~~~~}~{{|~||||||{{{{{{zzzzzz{{{zzzˀ6	                                                                                                                                                                                                                                                                                                            nvuwttvttwwwgu}?7"%! !!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''''((((((((((((((()))))))))('&$ nXw>_

	


		                                     	
	

8;EMMM[[[ifhspr|v{z}~~}~y~x~|}{||||||||{{{{{{zzz{{{xxxxxxzzzΒA                                                                                                                                                                                                                                                                                                        nvuwttvttwwwgu@7"%! !!!!"""""#####$$$$$$%%%%%%&&&&&&&'''''''''(((((((((((((((()))))))('&$!pZzB_
	


		                                     	
	
?=DPNOa[]ogj{nvt}y|~}~~~}~}}|}}}||||||{{{{{{zzzzzzsssyyyzzzvvvхK                                                                                                                                                                                                                                                                                                pxvyvvxuuxxxgu~@6"%! !!!!!""""#####$$$$$$%%%%%%&&&&&&&''''''''''(((((((((((((((()))))('&$!r[|E`
	
		                   ML                   

	
C?CVMRhYavdmlvs~w}|zzz~||y}~}~}}}||||||{{{{{{zzz{{{|||vvvsssxxx{{{ʓ8                                                                                                                                                                                                                                                                                            pxvxuuxuuxxxgu~?7"%! !!!!!"""""####$$$$$$%%%%%%%&&&&&&&'''''''''((((((((((((((((()))((&$!s^Hby
	
		                  W&&U                  	
	
x@BBPPPa]_ohkxpuu|z~~{v~r}oxx}~}}}}}}||||||{{{{{{www|||xxxvvvsssqqqӋ<                                                                                                                                                                                                                                                                                    qyxxuuxuuxxxgu~?6"%! !!!!!"""""#####$$$$$%%%%%%%&&&&&&&''''''''''((((((((((((((((()((&$!t_Jdr
	
		                  d'''(a                  	

	
n@CBQQQb__pik{quv|{}}ys~l}gxu}~~~}}}||||||{{{{{{}}}xxxxxx|||xxxzzzzzzttt~~~ɝ)                                                                                                                                                                                                                                                                                owvxuuwttuuuhu@6"%!  !!!!"""""#####$$$$$$%%%%%%&&&&&&&''''''''''(((((((((((((((((''%$"vaKf"m
	
		                  s''''-,p                  	

	

 "e=FAKVNYa]kjj{rut}y||~vz{~~~~~~~}}}}}}||||||{{{|||yyyzzzyyyxxxzzzyyyvvvrrrxxẋ6                                                                                                                                                                                                                                                                        nvuxuuwttuuuhu@6"%!  !!!!"""""#####$$$$$$%%%%%%%&&&&&&&''''''''''(((((((((((((((('%$!xcMh'h
	
		                  '''''0/- }                  	
	

"'\<HAMXSacctjlpwt}y~~yz}~~~~~~~}}}}}}}}}||||||{{{{{{zzzzzzyyyyyyxxxxxx~~~rrruuu݂Ŏ,                                                                                                                                                                                                                                                                    nvuxuuwttuuuhu@6"%!  !!!!!"""""####$$$$$$%%%%%%%&&&&&&&''''''''''((((((((((((((('&$!zdOk,d
	
		                  	
'''''')-&                  	

	

(,TAIBPVRaaaolnyqyv}{~~~~~~~~~~}}}}}}||||||{{{{{{zzzzzzzzzyyyyyyxxxttt{{{vvvpppuuu℄                                                                                                                                                                                                                                                            nvtxuuwttuuuhu@5"%!  !!!!!"""""#####$$$$$$%%%%%%&&&&&&&&''''''''''((((((((((((('&$"|fPm0b
	
			                  !'''''''(.2'
                  	
	
*.OCHETVVcbepjq{rxy{||~~~~~~~~}}}}}}||||||{{{{{{zzzzzzyyyyyyxxx|||tttxxx~~~xxxqqqzzz2"                                                                                                                                                                                                                                                        nvtxuuwttuuugt@5"%!  !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&'''''''''''((((((((((('&$"}iSp4^


	
			                  
 #''''''''"*-*!                  	
	


43LEJHQWY[dgemrnuxy{x}~x~~}~~~~~~}}}}}}}}}||||||{{{{{{zzzzzzyyyyyysssuuuzzztttuuuwwwtttsss2                                                                                                                                                                                                                                                mutxuuwttuuugt@5"%!   !!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''((((((((('&%"jUs8_

	

			                  /%''''''''' ),+%
.                  	
	

25IDKKOX\[dhgnqtwtz{u}}|~~~~~~~~~}}}}}}||||||{{{{{{zzzzzzzzzyyyqqq}}}uuuttt}}}vvvqqqzzzyyyvvvtttB3	                                                                                                                                                                                                                                        mutxuuwtttttgt?5"$!   !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&''''''''''''((((((('&%"lVu>^

	


		                  B&''''''''''&'321* ?                  	
	

58ECLMQZ[afeupluqzx|}}~~~~~~~~~~~~}}}}}}||||||{{{{{{zzzzzzyyysssyyyyyyqqqyyy{{{rrruuuuuuwwwsssyyyA*                                                                                                                                                                                                                                mutwuuwtttttgt?5"$!   !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''(((((('&%# nXx@^
	


		                W'''''''''''''(431* !T                	
	

5;EFMNV[Zkfc|oj{vtzzz}}}~~~~~~~~~}}}}}}|||||||||{{{{{{zzzzzzxxx|||wwwyyy|||vvvtttyyyxxxssstttwwwqqqrrr|||D#                                                                                                                                                                                                                            mutwuuvssrttfu~?5!#    !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&''''''''''''((('&%# oZzC_
	

		                p''''''''''''''''''&&&&&%m                	
	

?>DJNNV[Yaiekrruu|{v}x~z~{s}o|n|o|r}|v}{{{{zyzywvwv}v~vxxtwt|xrxyqtyrrxsovtqvrwup{up~umvsoF%                                                                                                                                                                                                                mutwttvssrttfu~?5!"     !!!!!"""""#####$$$$$$%%%%%%%&&&&&&&&'''''''''''''('&%# p[|E`}
	

		                	
''''''''''''''''''&&&&&&&%
                	
	

~;>?JMLW^[ciionvwt}~w}~|~s~|p|p|q}s~|w}|{{{{zzyxvwv}w~vxxtxt|yrxyrtysrxsowtqvrwvq{up~vnqoloppqqqK                                                                                                                                                                                                        mutwttvsstttgt~?5!"     !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&''''''''''''&&%# r\~Gav
	

		                #'''''''''''''''''''&&&&&&&&& 
                	
	

vFABHPMVX_c`slosr|kyijow{z|{zzz|}~z}z{z{t|zs{zt|vzzu}zs}ys|yt{wvyuxwt{rs{nt{ltziszdswx}~vttpppwwwkkkE                                                                                                                                                                                                muswttvsstttfs~?5!"     !!!!!""""""#####$$$$$$%%%%%%%%&&&&&&&&''''''''''&&$# s^Icq
	

		                .%''''''''''''''''''''&&&&&&&&&&#,                		
	

m>CBNPTZZdegjnuit}h}kqw|{}{|zz|~}{}z{z{u|zu{zt|vy{v}zt|zs|yt{wvyvxyt{tt{pt{otzmszkuyimnssrsssiiirrrtttuuue`                                                                                                                                                                                        ltswttvsstttfs~?5!"     !!!!!"""""#####$$$$$$$%%%%%%%&&&&&&&&&''''''''&&$# u_Je#k
	

		               G&''''''''''''''''''''&&&&&&&&&&&&#E               	
	

! fDD<WWBa`Vlglvnzyr~y~~zuv}{{~|{~w|~pxoxz{yzy{ys{xr|uq{ur{xvvz{t|~r~p~q|rzqxqtwxsvusssyyyqqqlllsssqqqnnnU                                                                                                                                                                                ltswttvsssssfs~?4!"     !!!!!"""""######$$$$$$%%%%%%%%&&&&&&&&&''''''&&%# uaLg(f
	

		               j''''''''''''''''''''''&&&&&&&&&&&&%$f               	
	

"'\>E=KQNX\`igoup{}v|{{}wy~}|}}}|y~{swsxy|x|zzzv{zs|wr{vs{xww{{t|s}q}r{sxsu~ttzvvstsppprrrttttttssspppnnnggghhha                                                                                                                                                                    ltsvttvsssssfs}>4!"     !!!!!""""""#####$$$$$$$%%%%%%%%&&&&&&&&&'''''&%# wbMi*c
	

		               	''''''''''''''''''''''&&&&&&&&&&&&&%%%               
	

,g,HU:TYQ]_ijkvoz{qxvzzz}zv}r|q~t~}{tsw~x~sy{tyzsxzuxzzwy~vy}vv{vtuxoo|kl}hqyoyxyxxxsssrrrpppmmmvvvvvvvvvssslllhhhk	                                                                                                                                                                ltsvsswrruuufs}>4!"     !!!!!"""""######$$$$$$$%%%%%%%%&&&&&&&&&'''&%# xcNk
0^
		

			               "#''''''''''''''''''''''&&&&&&&&&&&&&&%%%% !               	
		


8d,N[;U_L^g]foomwyv~}x|{~}z|w|v~t}}zvv}x}zy}r{zt{ytyyvxx|wy~vy|vwzvuuyqo{nk|jt{ttstpppsssuuuuuuuuuppptttppplllqqqtttnnnlllz	                                                                                                                                                    jsqwqryrtvvvfs}?4"$     !!!!!""""""#####$$$$$$$%%%%%%%%&&&&&&&&&&'&%#!zePm
3]


	

			               >&''''''''''''''''''''''&&&&&&&&&&&&&&%%%%%%#<               	
	


AvYz(`z@goekmootsuuwzwyssi}|i}{j}zi}yj}tq|tw|y~zywx|wxzwwwxvnysg|qaknxpvtvttttttssssssrrrrrrqqqqqqqqqppppppoooooolllfff{#}}}                                                                                                                                                lrqwpqwpqrrres}@5"$      !!!!!"""""######$$$$$$$%%%%%%%%&&&&&&&&&%%#!{gQo6\

	


			              b'''''''''''''''''''''''&&&&&&&&&&&&&&&%%%%%%%%^              	
	


Gs+f7pFrSs^uhvswyz||z|yu|}u}}u{r}xp|ss{sv|w{}x{wxywyyvyxwxtvvqxuoxrswtuuuttttttssssssrrrrrrqqqqqqqqqqqqppppppoooooonnnkkkhhhzzz_	                                                                                                                                    nsrxqsunppppes}@5"$!    !!!!!""""""######$$$$$$$%%%%%%%%&&&&&&&%$# |hSr
9[

	



		             
''''''''''''''''''''''&&&&&&&&&&&&&&&&&%%%%%%%%%             	
	

Iw
g|)B]x}}tzz~wtz|yw{t}ttsr{mrynrzzsx{tu~{qpnkp{tvttttttttttssssssrrrrrrqqqqqqqqqppppppooooooqqqmmmjjjlllccchhhe	                                                                                                                        nusystvoqqppgs}@4!#!    !!!!!!"""""######$$$$$$$%%%%%%%%%&&&&&%$# ~iTt
<[
	



		             )$''''''''''''''''''''''&&&&&&&&&&&&&&&&&%%%%%%%%%%%!'             	
	
Mtf{->KUY{a{qz~vwy}vyws|t~vy~wqzxpzzow|tu~zs}p~o|rztwtuuuttttttssssssrrrrrrqqqqqqqqqqqqppppppooollltttooolllqqqllldddlllp|||
                                                                                                                    msrxqsvopwrris~@4!#!     !!!!!""""""######$$$$$$$%%%%%%%%%&&&%$#!kVv
?[
	


		            O&'''''''''''''''''''''&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%$L            		
	

Kxau&8J\zlmstv}xxytvysk~wf{xb{zey|mv~xr~pytzuutuuutttttttttssssssrrrrrrqqqqqqqqqppppppnnnkkksssnnnkkknnnmmmiiillliiieee|||Y                                                                                                        ntsunpwpqvttgr~?5!#     !!!!!!""""""######$$$$$$$%%%%%%%%%%%$#!lWxA\~
	


		            
x''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%$$t	            	
	
Ryfw*7=FOTTw]tryzvx{vs{{xu{vm{vm{wqywwvxztxxuvvvvuuuuuuttttttssssssrrrrrrqqqqqqqqqqqqppppppsssllllllqqqoooiiilllmmmffflllnnnbbbfffh                                                                                                pxuunpwpqwrucmy<4!$!     !!!!!""""""######$$$$$$$$%%%%%%%%$##!mXzB^y
	


		            
 "''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$	            	
	
Uzhz,9J^{trxwuxszoz}nt}nq~or~os|muxswvywuuvuuttttttsssrsrrsrqrqrrrqqqqqqqqrpprppqoqnoonqsqmnnjkjpppqrrkklllmjjkjjkiijiiidddeffO                                                                                    quuqnrtquouicwqB7"!    !!!!!!""""""######$$$$$$$$%%%%%%$#" nY{D^t
	


		           J&'''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$$$#G           

	
"U{i|"/6<AFNY}hq~xv}{y}{xwxxqvzmu|nqzppzupxtrwuruussttqwxrywqwxpwvqutoqqpmqrkqskqtltp{nktplsqkoqjktomrpmnlgopinpilngkkglihnkjnkimhhc_`liiYsw                                                                        oqrkmunqxfw]b~kG{; &      !!!!!!""""""######$$$$$$$$%%%%$$" nZ}E`p
	

		           	y'''''''''''&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%$$$$$$$u           	
	
%V}j}$:]llqxspv}ii|jc}pdxoiurlusrtwws}qn~~l||my{outsltvfqwdowdofogqh{xjtzknzliunfuq`pq`pq_op`podqjeqjirihphfshjojh^a^Zi]j{nKw}                                                            rrrpluqmvjvbexjNz?%      !!!!!""""""#######$$$$$$$$%%$$" oZ~Fa!j
	

		           %"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%$$$$$$$$$
$           	
	

*W~k} !#&&$2?FS~aqmp{rvttyquvrzut}tx~sz{qyumtuqvrrtmqrnrrqttttuspssnptpptootnounosmmonnlmnimmenlemldmmhllijjkiknijogipfjojnlilbfe[c_Za]ckf~~:                                                        {yytmyrmvoxegwiRz>%      !!!!!!""""""#######$$$$$$$$$$"!p\Gc
$e
	

		          Q%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%$$$$$$$$$$$#N          	
	

.|Xk~!(*(' 1Pvwtbvlusotjtnt~txqxugvrcupatnjpwpm|vjzj}{td{tcyrfwoipnmhnoelt_lv[kvZkv[kvbksdkphimkikrglqfmmdmlemjfljgkhghhhh\^Z]^[rsq-                                            xo{skwuvnksnZyH#!      !!!!!!""""""#######$$$$$$##"!q]Hd
(a
	

			          &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$          	
	

3xYl}#&%)4?FOmZjznqvvyrwwoyypvzqrxrpwrkrslnvnmvpnwduicuihtjkpnlpnkmqkksijugjugisfishjpkjnoilqijlhnhhnddkgdmhekieljdjibhkggjeghfebddYc^cqmN                                            rvjytiwvrqkqp]sxH!#      !!!!!!"""""""#######$$$$##" r]If
,_
	

			         9$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$## 
7         	
	

7vZn$%#3Lmyjs\q[~sbwvjuurksrjoviougpuVxiUxi]vkbrogpqkmsnktmhwngvngumismipnjlsilriihgkaenbfngfoieolcmncknajogkmceeccbee]idQd`V                                            LrjwqkwrqqmoofpoQ#!     !!!!!!"""""""#######$$##" t_Jh.]

	

			         	m&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$####k         	
	



:u[o&/7@Vvfoqqplutmxspxspvrpnqrmpqppopootolsnmrnkpmlmnlknkkmkjkknjlphnqhmgknannaljchjdekgbjkdklellflibgeadedeihfgge6                                            *tlzrlvporqprkplR$!     !!!!!!"""""""#########" t`Lk1\


	


			         %!&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$######	#         			


=u[o(:S}rhqbsfrhymuxmtyopwnozoiwnisogrpfmqfkqeiogimiojlrgpsfpfkmZoi\lh_hgbekgcljclkdllemjekjeijdflfcmed                                            oluljrilqnrvvtl[w,%$     !!!!!!!"""""""######"" uaMm
5\

	



		       Z%&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$########"X       		


Dr`s%-4<Nmyqnmrlollpqmrwnswmttmrqkollnjmnhmlhoogoldnjajfdmdkodlmcmkdkjfkhhggiffhdfibfiaegdefjcdkfd                                            ||mnvjouqswyujbw*$$     !!!!!!!"""""""####"!wcOo
8]

	



		       
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$###########       		


Hqat#:Omor}hhio{ksugsohrljrgjpcilakk`piaph_pefocln`nk_mibkhbhgecffcggafh_fg^egdefldfkcf                                            znpsjrrnrrwnmjt}?5"     !!!!!!""""""""##"! wdQs
<_
	


		      S$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$############"!Q      
	


Iw
at"&+5|Hk^iisngxrfxqgxngsmkjjndgs[cviimtkivkgtieuhgviipjiklj^jfZieXieXhe^ffq]ff                                            <ilngqohomynpfnv<5 !      !!!!!!"""""""""! yfSv
?a
	


		      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$############""""      	
	

	My
du.HltljUjZzkdnjpehz`gljsxjgwhewicugfteepgehhfZjeYieVifVhe[ff8[ff                                                psohpjiolppiyV{G$      !!!!!!""""""!  ziW{Ef
	


		     P$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$#############"""""!N     	
	


Q{fv!$-?qTcqschdh`hsKj{Shy\htgfsmelmegjcdffe`he\ie[hd[ff                                                    eoghnk}oqiyYxyB$      !!!!!!!"""! }k[Jl
	


		     
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$##############""""""""     	
	

Vhy&>gs]dpHdtLcuXesfdqmeorijshjhhgbhe\ie[hd[hd                                                    bgndlplrcph{qy_U'       !!!!!!!"! o_Ps
	


		    	X#$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###############""""""""""!V    	
	

![k{&3AjKcu[`ro_mtcjtgdrfbkfbkeaakea                                                        +ipfqtqm^}umqw]Rx&      !!!!!! !seX}%
	

		   &$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################""""""""""""!%   	
	

'bp0Qltejwfltgdsfbmfbmea+                                                            
snnhoghrihthdwyN9!')'!      !!!!  yk`,
	

			  	c$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##################""""""""""""!!!!`  	
	
/hu"%"2EwZoo_l_OlqJgk^hloifngc
                                                            ºOnggnulgrhish^rrMx6!&(%!       !!! si5
	

			6 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$###################"""""""""""""!!!!!!5	
	
8p{!$"/DoTii`j__j`fndfbd                                                                orSxl\tjxploiqkmG%""#!"       !  |rA
	

			z#####$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$######################""""""""""""""!!!!!!!!!w	
	
Bx!?cdgaipgcTmaJqduhi                                                                    	Ppe]ul{qmqjrggAx%"!#!"        }M
	

					O"##########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########################"""""""""""""""!!!!!!!!!!!M	
	

N!:p__ibktieUneHk_                                                                        0Rrj^qlno~pthtek<'-&)!!       Y
	

				'#################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$################################""""""""""""""""!!!!!!!!!!!   &		

[%"(#5\cz`mxhlyfgVjdLnfM                                                                        y^mg{lo{ou{hq_i:*(#&      h
	


		n""""############################$$$$$$$$$################################################""""""""""""""""""!!!!!!!!!!!      k		

h" $&4~Vbxt`jthmtegVf`ez㚚                                                                            ƻ4voommtnlootgorjmpwM&     v

	


		M """"""""##############################################################################""""""""""""""""""""!!!!!!!!!!!!        K		



v"Eehphlchm`gehffmqhk\                                                                                ikqhllnwjmrjggmIz-   

	


	."""""""""""""######################################################################"""""""""""""""""""""""!!!!!!!!!!!!!         
-		



(As__gflcgqbaeecfl|~З                                                                                        .]jk[ni_~gktbjhrf{K*%$,( ##

	



t!!!"""""""""""""""""##########################################################""""""""""""""""""""""""""""!!!!!!!!!!!!!!         q		



 %'!"&Dk^ucaem[Wx`UhbYffO                                                                                        Ud`d|gowgnkol|Hl/%($!"

	
V !!!!!!!""""""""""""""""""""#########################################""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!         T		




 %"+Bfhevhehq`]uaTb[yƠ                                                                                                -ktngscen`tvopoqxa{Xu2#('( !

	E!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!          
D		




$$% .Por[uihknpi]gYbo`iogJ                                                                                                    	cahajokonpokp{lyTk;1#!%$" $
	/   !!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!           .		

#!" -6|Mduftiekihjdhfag`~                                                                                                        jhsbfttosthyiocgC,'+!!$)
	x       !!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!            v			

)!(#)=]atciobnim\_njdqxxz߇                                                                                                            <vmsawunsnw_vtnjc~Jr<,0
	e          !!!!!!!!!!!!!!!!!"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!!!            c		

/)7Dld]zqnihrYnhmn]soivg                                                                                                                {lZvknQRqx_gqvc|Lt3"!"#5
	W           !!!!!!!!!!!!!!!!!!!!!!""""""""""""""""""""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!              U
		

4!  /Foq^wbkmtYK}Lqfj[{x                                                                                                                        mghfzfqqdpntjtQe|Az6) :
	L                   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!                                 J			

9&2<uL`wodokill^aualfhv˔                                                                                                                                c`fvqj{q\{pejwVa@s2!"! ! ?
CC


> /<nQ\~{eswl`vmWrkecahuwwΛ7                                                                                                                                        2uwwkkhooinohnsqkqzTivJtI8"E<  """""""""#############$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##################"""""""""""!!!!!!!!!!     <D5DEpOdrglviomijckkdiignmn锔U                                                                                                                                            @u{|_jncrm\texpgmb~imas=
J:""""! "('(((((((())))))))))))******************************************************************************************))))))))))))))(((((((((('''''''''&&&&&&%&    9H9]o{dih]tlbWp`_ni^glnss򌊊r                                                                                                                                                Kzzjfarujlseiqbz{rafmQoR@2%)"R8!"                              !!!!!!!!!!!!!!!!!!!!!!!                                                  7Q '#/<M}Lk~\bivwnen^hoanqfgd^wps󌈋|                                                                                                                                                        Dyurg[m|gZyakt`~wn~qvaIs-)-)#$#"!'+'+Eo]~{mszsjgp\Vv]ixbqg\zpo헋u
                                                                                                                                                                Eq{xadcssrqigxlnjnniotWp|NpG~GD5 !2@CCzJlSlxekpfjjuhjnedpoobdclppu
                                                                                                                                                                        4n\h}ksygnepo`tohqoojvahMr6$"4In^e|kgseml\qkblkvdkxiqk]gxy}؏Y                                                                                                                                                                                    kmkhkkniotltxpxwkwcjq[msWxsS}|K|KOPQNF>=;:;;==?@@@@@AAAAAABBBBBCCCCCCCCCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCBBBBBBAAAAAAA@@@@@@????>>>>>===;;9889;<CKNLKHHyOzySupWjp`gnthtvmvphpkelfijljj5                                                                                                                                                                                            Ppywsgrziuteqwgsjorjtpluemtc[iyXnUuLtDx?91+*((*,-/000000001111111122222222222223333333333333333333333333333333333333333333333333333333333333333333333333333332222222222222222211111111100000000///////......,*)&&)*/7<|AuHqQrTkXevjq`irbgqlflotdppbnwersgpjqp񇇊                                                                                                                                                                                                        /trm{jgpspsvgnfknotxppmrsrrusmrriosgptfqwdrxctyaty_vx^ww\yu\yuZ|sawyfseteufufufufvgvgvgvgvhwhwhwhwhwhwixixixixixixixjyjyjyjyjyjyjyjyjyjykzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzkzjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyjyixixixixixixixixixhwhwhwhwhwhwgvgvgvgvfvfvfufufueuetetetetdt~ds~ds~ds~cs~cr}cr}br}cp}^twWypYvrYvr[uu\su^qv`qvaovbotdnqflpjooorqopommjlquchksdkmpmpzedrnk~זR                                                                                                                                                                                                                    A~{{_`gkqxnqwhotwrjupismhuoh|rq~urus}so|sozunyvlxxktyhr{ip~exxmsw}tu~tv~tv~tv~uv~uvuwuwvwvwvwvxvxvxwxwxwxwywywyxyxyxyxyxzxzxzxzxzyzyzyzyzyzyzyzyzy{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{y{yzyzyzyzyzyzyzyzyzyzyzyzxzxzxzxzxzxzxzxyxyxyxyxywywywywywxwxwxwxvxvxvxvwvwvwuwuw~uv~uv~uv~tv~tv}tu}tu}tu}su}su}su|st|rt|rt|rt{rs{qs}ptuujm|bpyfrwfuuhvtixrlzpl{pl|sp|spyonsmfpkermfupgelrkotovfiz^`yr㓑o|}                                                                                                                                                                                                                            ϷVddkpZugpqprtoqtrqtrlqshopgpphmtlovpnxqlwvk{wk|~i|i}xnwosqqrrqrrqssrssrssrssrssrttsttsttsttsttsuutuutuutuutuutuutvvtvvuvvuvvuvvuvvuvvuvvuwwuwwuwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvxxvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwvwwuwwuwwuwwuvvuvvuvvuvvuvvuvvuvvuvvtvvtvvtuutuutuutuutuutuusuusttsttsttsttsttrttrssrssrssrssqssqrrqrrqrrqrrprrpqqpqqpqqoqqoppoppoppmqnvkug||gzuhytiyojunkviltekqemmfmnjoqorpnqppqmnon~doWtfdiyޓ                                                                                                                                                                                                                                             
!|nnpmklifhhgjjhopirriuwks{mpwqn|tm{xl{jihzozpurrttrttruuruuruusuusuusvvsvvsvvtvvtvvtvvtwwtwwtwwuwwuwwuwwuwwuxxuxxuxxuxxvxxvxxvxxvxxvyyvyyvyyvyyvyyvyyvyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwzzwyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyywyyvyyvyyvyyvyyvyyvyyvyyvyyvyyvyyvxxvxxvxxvxxvxxvxxvxxuxxuxxuxxuxxuxxuwwuwwuwwuwwtwwtwwtwwtvvtvvtvvsvvsvvsvvsuusuusuuruuruuruurttqttqttqttqttqsspsspsspssprrprrnsqxlxef~yh~vj}qkxolzjmuiqygstgqqelmeggcffhjgmmkl򙉛7v~                                                                                                                                                                                                                                                                o
5`~wwyqqqmpjloipqmoromrqkrqirrissgtsjtsnsrntrotrotrotsotsouspuspusputputputqvtqvtqvtqvuqvuqvurwurwurwurwurwvrwvrwvrwvsxvsxvsxvsxvsxvsxvsxwsxwsxwsxwsxwsxwsxwsxwsxwtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywtywsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxwsxvsxvsxvsxvsxvsxvsxvrwvrwvrwvrwvrwvrwurwurwurwurwuqvuqvuqvuqvtqvtqvtqvtputputputpuspusousousotsotrotrntrntrnsrnsqnsqmsqmrqmrqmrqlrplqphrqerqgqqgppipokpomomnokjmgkmhnpnrttuyzނŏEl
	                                                                                                                                                                                                                                                                                }C\}~~
vxz                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ?                                                                                                                                                                                                                     ?                                                                                                                                                                                                                                                                                                                                                                                                                 ?                              ?                              ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ?                                                                                                                                                                                                                                                                                                                                                                                               ?                                                                                                                                                                                                                                                                                                                                                                                    ?                       ?                                                                                                                                                                                                                                                                                                                                              ?                      ?                                                                                                                                                                                                                                                                                    ?                                                                                                                                                                                                                                                   ?                                                                                                                                                                                                                    ?                                                                                               ?                   ?                                                                                                                                                                                                ?                                                                                                                                                                  ?                                                                                                                                                                                                                                                                                           ?                                                                                                                     ?                                                                                                 ?                                                                                                      ?                                                                                                          ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ?                              ?                              ?                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ?                                                                                                                                                                                                                                             ?                                                                                                                         ?                                             PNG

   
IHDR         a   @IDATxcd0#$ ӄG#^B%(
" ib ^ Exn    IENDB`PNG

   
IHDR         (-S   PLTE                     			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   EIDATxcd@@c``s~1	E~1~D@'  EpkA7Z  *$˴
    IENDB`PNG

   
IHDR         a   RIDATxcd0"s1#.>~Ÿh(MX${"zQ$@`@q R% M    IENDB`PNG

   
IHDR         (-S   PLTE                     			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   IDATxcd@@cs?
rB~A 1-q\    IENDB`PNG

   
IHDR         (-S   sRGB   PLTE                			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHle   tRNS @f   bKGD H   	pHYs        tIME5)<ڿl   6IDATc`ؠ W6$aC
P
`0#2  "_    IENDB`PNG

   
IHDR         (-S   PLTE                     			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   3IDATxcd@H`y8!\ZPC1U@qPasѽ 
|    IENDB`PNG

   
IHDR         (-S   sRGB   PLTE                   			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl͔L   tRNS @f   bKGD H   	pHYs        tIME#	D[l   8IDATc`H "0*P8  fD`@ B  Pb
\q    IENDB`GIF89a    w  !    ,          4̜tdD|Բ\$䜢D<ܬĮl,̌tܶT̮d         ,䴦ԤtĪlL|ܲ\   D   4ԔĪtT   L4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              DBAB&DC):/d@#Ək!".Tr˖,Y: Ɂ(s3/D N*"$@<z4e9(!`8w=	#80@ɓaha(@<pܞȸ`|%t:V

@`1b{!C򇶖mic:O$(rrh}c%;pe|!Gdϼ{[@G\:rWN
VLy[$-Mۇv1r36lGjl %q@j%Ax7,AB8vZwyu`%iKDIL\@kaWL-$CgКu6b}eXU00_+8p@ATEhM(It@TI:@NMIӚjO) %geU?̈́@XҟtL A*H袊6ܐ  ;PNG

   
IHDR         \rf   	pHYs       
OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
!{kּ>H3Q5B.@
$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw
ǈg(gwLӋT071oUX**|
J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!k
u5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=
Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
yg"/6шC\*NH*Mz쑼5y$3,幄'L
Lݛ:v m2=:1qB!Mggfvˬen/kY-
BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
+V<*mOW~&zMk^ʂkU
}]OX/Yߵa>(xoʿܔĹdff-[n
ڴ
VE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-
6
U#pDy	
:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ
8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F 8IDATx                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   bA
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           bA
                                                                                                                                                                                                             B,@2 $     	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            bA
                                                                                                                                                  G0                     D- 
]R	&	                                        =Uf                 
             
           
                                                    
    
                     	                                                   
                                           
             
           
                                                    
    
                     	                                              
                                         bbb                                                                                                                                                  Q5	D
d
M
                                                                                        	                   
                                                                            	                                           
                                                        	                   
                                                                            	                                   
                     
 '{{_?       xxx                                                                                                                                               P5	:gV  
                                                                            
                       	                                                                                                    	                                                               
                       	                                                                                                      	                                     " "#  OO^>      bbb                                                                                                                          H1          Z;	o	                                                4KW  		 
                                                                         
                                        
             	                         
                                
                                                                            
                                        
             	                          	                                                |                                                                                                                                           L22	g^                                                                                                                                                                                                                                                                                                                                                                                                                                                                               9>5 .) żq]=                                                                                                                                     U9	S^                                                                  
                           	                                                                                  
                           	                                                                                 	            ITU $2_W:	S                                                                                                                                  V9	`                                                                      	                 
      	                                     	                 	                    	                                                                                                    
      	                                     	                 	                    	                                                                           
       	  	              <A:  пX:	i                                                                                                                        T8	W                                                                                   
        	                                                                                                                                                     
        	                                                                                                                                                                   .21 	
 ƳV9	                                                                                                               J03                                                                                                                  
                                                                               
                                                                           
                                                                            
                                                            %(& A оK2޵                                                                                                         g 	                                                                                                                                                             	      
                                                     	                                                                                                      	      
                                                    
             
                   
                           ,/#  f                                                                                                        Y;	\                                                                                                                                            
            
                                                  
                                  
                                                      
            
                                                
             
       
       
                                     ;A@ ]Z<{                                                                                               K2@l                                                                                               
                                                                 
                 
   
        
      
                                                                                   
                 
   
      	                                                           5@A mL3@                                                                                              
c                                                                                                                                                                   
    	                
                             	                                                                              
    	                
                           
                                       
	 %2 
c                                                                                          M3HN                                                                                                                  
                                                                                                         
                                                                                                          6;4 
OM3I                                                                                       	b                                                                                                        
                          
             	  
                   	                               	          
                     
                          
             	  
                   	                                        
                                            *6 
a                                                                                 7$$ 	C                                                                                             
                                                       
                                      
                                                      
                                                       
                                      
                                                                                    ,0+ D:&%                                                                           W                                                                                                                                                                            
                                                                                                                             
                                                           
                              
! [                                                                              
O                                                                                                               	 
 
                                                             
         
                          
                	 
 
                                                             
         
                         
                   	  
  
                           
 (/4 M                                                                          2!!"                                                                                                                                               
                                                                                                     	                                                 
                                                                                                     
                                               
              
7$%                                                                       >
                                                                                                                                    
      	                              
                
                                         	                                                                       
      	                              
                
                                       	                                                                                                 
 =                                                                       .                                                                                                                                     	          
                     
       
        
    	                                                              	        	                                                     	          
                     
       
        
    	                                                           	       	                                                                      +                                                                      !                                                	                                                           	                 	                  
                                                                           	                     
                                           	                 	                  
                                                                           	                   
                                                                               "                                                                       	                                                                                                                                            	        	                                 	                                                                                                                                         	        	                                 	                                                                                                  
                                                  	                                                                                                                                                                                                    	              
                        
                                                                                                         
        
               	              
                        
                                                                                                    
         
                   
       	       	  
      
                                                                                                                                                                                                                                       
        	                                  	               
                           
        	                                                                             
        	                                  	               
                          	                                                                    	          
                                                                                                                                                                                                                                	                   
            	                                 	                                           
                                                           	                   
            	                                 	                                                                                            
                                                                                                                                                                                                         
    
  	             
                                                                     	             
                                  	                	                   
  	             
                                                                     	             
                               	            
 	                 
                	  	             
                                                                                                                                                                                                             
 	                  
                                                  	                                        
                    
                      	                     
                                                  	                                        
             
                       	                  	        
                                                                                                                                                                                                                   
                                                        	  
                             	         
              	                         
  	       
                                                        	  
                          	           
                                        
                                                                                                                                                                                                                  	 
  	                             
                          	                                                                        
      
      
                   
                    
                          	                                     	                                	   
     
  
   	          
                                                                                                                                                                                                                                                       	                                                 	            
                                  
                                            	                                                 	            
                                	                                                                                                                                                                                                                                                                   
                        
                
                                            
 	                                     
    	                            
                
                                            
 	                         
                              
  	               
               
                                                                                                                                                                                                                     
                   	                  
                  	          	                 
                                                      
                   	                  
                  	          	                  	                                                  	              	                                                                                                                                                                                                                   	     	                       
      	            
         
                                 
                          	  
       
                      	                       
      	            
         
                                   
                         	   
       
                         
     
                                                                                                                                                                                                     	                                                                                                                        	                      
                                                                                                                      	                      
                               
                                                                                                                                                                                                                                   
                     
      
                   
                            	                                                       	                          
      
                   
                            	                                                     	                        	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                    
                   
                	 
        	   	                                                 	                                   
                   
                	 
        	   	                                           	                     
            	                   	                                                                                                                                                                                                                                     	                               
         
           
                                                                                          	                               
         
           
                                                                           	                                                                                                                                                                                                                                                                           
                                                           
                                        
#             	                            
                                                           
                                          	#                 
       
                                                                                                                                                                                                                 	                                      	                  	                                          
       
                                                             	                  	                                          
         
                                                                                                                                                                                                                                                                                  
                     
                                                             	              	         
                                   
                     
                                                             	                                                     	                                                                                                                                                                                                                                 	              
                                                                                                                            	              
                                                                                                                              	 
                    	                                                                                                                                                                                                        
    	                           
                    
        	                                           
                         
    	                           
                    
        	                                          
             
                                   	                                                                                                                                                                                                    
                                                    
    
         	 
                                                      
                                                                      
    
         	 
                                                     
                       
                                                                                                                                                                                                                                            	                                                                         
       	      
                                       	     	                                                                         
       	      
                                        	                                                                                                                                                                                                                   	         
                      
                 
      
              
             	                                             	                             
                 
      
              
             	                                            	                        
      
      
  	      	   	                                                                                                                                                                                                                               	                          
                         	     
                                                                                  	                          
                         	     
                                       
                                          
                                                                                                                                                                                                                                         	      
   	                                                                                                                                                                                                                                                                                                                           

	   #                                                              	                                                                                                                                                                                                	  
               
    
                	                                 	                                                                                                                                                                                                                                                                                                      
          "&
 (0
 "                       
  
                       	                                                                                                                                                                                                            
                                               	        
   	                                                                                                                                                                                                                                                                                                           	             $' I:  	               
                                 
 
  	                                                                                                                                                                                                               
                            
                            	     
 
                                                                                                                                                                                                                                                                                                                       
         ;6 A=                                                               	                                                                                                                                                                                                                                                   
   6! 4  
                                                                                                                                                                                                                                                                                                                                                    
  (     IE 
                                                            
 	                                                                                                                                                                                                 
                 	      	          	               	 +  ?/ 6                                                                                                                                                                                                                                                                                                                                                              8  2 ( 
   _P           	                                    
                                                                                                                                                                                                                                                                             #  0 N( (  	              
                                                                                                                                                                                                                                                                                                                                            	  , +  ' 
   \U-        
                                   	                                                                                                                                                                                                                                               
 
           
                          4 O2      	                                                                                                                                                                                                                                                                                                                                                        )        dZ. 
                      
 
            
    
                                                                                                                                                                                                                            
   	                      0  B K4                                                                                                                                                                                                                                                                                                                                                                                   a:  < %   WR%                                                                                                                                                                                                                                                        
             
             (  3 A9   
                                                                                                                                                                                                                                                                                                                                                                                                 C;  ;    ?<   
                                                                                                                                                                                                                                        
                            
                , C5                                                                                                                                                                                                                                                                                                                                                         F8 .
                                                                                                                                                                                                                                                                                                   
      K,                                                                                                                                                                                                                                                                                                                                             
        N.                                                  
                                                                                                                                                                                                                   	         	     	 	     
  ;%                                                                                                                                                                                                                                                                                                                                                                                  " >&  
	                 
          
 	                       
                                                                                                                                                                                                                                 	                  6%                                                                                                                                                                                                                                                                                                                                                          
         8'                                                                                                                                                                                                                                                                                                 >$       	                                                                                                                                                                                                                                                                                                                                                                                A%                                                                                                                                                                                                                                                               
   	               	                  % 3                                                                                                                                                                                                                                                                                                                                                                                  
            6 (             	                                                                                                                                                                                                                                                                                ( 
                                                                                                                                                                                                                                                                                                                                                                         
             	 8!       
                                            
                                                                                                                                                                                                                                  
 
 7                                                                                                                                                                                                                                                                                                    	                                                                     	       	    	 
                                                                                                                                                                                                                                                   "     
                                                                                                                                                                                                                                                                                                                                                                                                                                        -          ! 
             
       	                                                                                                                                                                                                                                              	     $      
                    '                                                                                                                                                                                                                                                                                                                                                                                                                 #   	                   " 
                         
                                                                                                                                                                                                                             	             ,
                                                                                                                                                                                                                                                                                                                                                                                                                  "                                             
                                                                                                                                                                                                                              	          	                                                                                                                                                                                                                                                                                                                                                                                               
 *                           
     
                                                                                                                                                                                                                              	                                 
                                                                                                                                                                                                                                                                                                                                                                                        	    )           	  	   	  
      
                                   	                                                                                                                                                                                                                                                    	                                                                                                                                                                                                                                                                                                                                                                             .       
          
                             
                                                                                                                                                                                                                                                          
               
                                                                                                                                                                                                                                                                                                                                                                                      
  +          	
                   '                     
           
                                                                                                                                                                                                                                  	    	      
                  
                                                                                                                                                                                                                                                                                                                                              
       4  
                
 	        
       %" 	                
                  
                                                                                                                                                                            

                                   	      
                                                                                                                                                                                                                                                                                                                          	    $    
                
           
    
   	                                                                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                   	 
  
 
                             !              
                             
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	          	    & $  	 
         
                                   
  	                              
                      	 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	        ) " 
  
        
 
                         $!    
                                  
                   
                                                                                                                                                                                              
       
                                                                                                                                                                                                                                                                                                                                           	                       #,     
                       	       
    
  	   
                                                                                                                                                                                            
      	                                                                                                                                                                                                                                                                                                                                                   	  
 ' *                            	  )& "  
          	      
        	              
                                                                                                                                                                                                                            
   	                                                                                                                                                                                                                                                                                                                                                 
     	    )    	   
    	    	             
 )& "        	         
       	       	               	    
 
  
                                                                                                                                                                                                                 	                                                                                                                                                                                                                                                                                                                        
   ' ) 	 	
              
            	 "	 !   	                             	                   
          
                                                                                                                                                                                                 	   
      	                                                                                                                                                                                                                                                                                 	          	   & ,  

   
                         '" (&% 	                                                                                                                                                                                                                                                                                      	        
                                                                                                                                                                                                                                                                                                   ' 	                              ($ ! 
                                                             	       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
                  $ * 
                                    
  *% &$                      
                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  % ' 
 
                                    
 !
 -'&  !                                                
                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                     
      
               7 1   
          	     	                     22% &!                      
                        	         
   	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          " 1   
   	 	                            
 ') )$  
                              
                           
                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                                                        % - $  
                          
  .*" " 	       	 
     	            
                                        	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              /     	                  	                
 +# .+                                           	                             
                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                      0     
 
                      :5 '$       
                               	     
       	             	                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                       3 ' 
                                	 *#
 40$ 	 
                                         	           
                                      	                                                                                                                                                                                                                                                                                                                                                                                                                                                  
      C  
                                           )' /)                     	                    	                                                                                                                                                                                                                                                                 	       
                                                                                                                                                                                                                                                          	 D 1                                                59  %" 
                                                    	                              	                                                                                                                                                                                                                    	                    	 
    	                                                                                                                                                                                                                                                                /                                                           6. +) 
                                                
             
                                                                                                                                                                                                                                                  
   	                                                                                                                                                                                                                                                                                        ; / 	                                              82 )$ 
	                                                                 	                      	                                                                                                                                                                                               	                         	                                                                                                                                                                                                                                                               	  = .                                                   93 (" 
                  	 
                                
        	                                                                                                                                                                                                                            & 
           	                                                                                                                                                                                                                                               	    
      

  ? "     	 	                                  91! (#                	 	          
                                          $ 
                       
                                                                                                                                                                                       	 
  
 	                                                                                                                                                                                                                        	        = & 		   	                                      7, *&                               	                                                	                                                                                                                                                                                                       	                       	                     
                                                                                                                                                                        0 '                                    	 2& *,(     
        	 
                 
               
                                                  	                                                                                                                                                                                                	                         
    
     
	     
                                                                                                                                       	      F H           	                               ('
 +*         	  
         	                                    
                  	              	       
        	                                                                                                                                                                                            
                  
              #               
 	  
 
                 
                                                                                                                  ( "  
                                                   ("  
       	  
                                       
                          
 
    
 
     	          
                                                                                                                                                                                                                            &   
       
 ,          
      
/    +	 !
 	                                                                                                                            C ' 	                                                          0+ #       $        	          	                                                 
           "    
                                                                                                                                                                                                                  
       	 
  	                   	  /           2 , 

                                                                                                                       
 &  
                                                                                 	       	                               	                                 	               
  
                                                                                                                                                                                                                                        	    # , +    * " ,      	                                                                                                               5  
                                                     
 &$. 
	                      
      	   
                 
  
         
                                                                                                                                                                                                                                      
        	             	                    
      #  
 
 . !  	   Y 2 3 
  	   	                                                                                                       - 	                                                            .,( (                     
 	      
                                                   	                   
  
                                                                                                                                                                                                  
         
    
                    
                   M (1 >       8$                                                                                                        
 #  
  
                                                                   
   	                	           	   
            	         
     	           	                                                                                                                                                                                                  	
        
            
                                      (      
  
 & 
 = 1                                                                                                 	   	                                                 	  
    
          
 	             	                                         	              	       
                                                                                                                                                                                                                                  	    	                   	                                  E. 8     

    =        
                                                                           
                                                    	  
                 
        
                         
                  
  
   	      
         
                                                                                                                                                                                                     	                                                       	 7(  ,  
     4 5                                                                                 
       
                                               


                         	     
                              
        	                       
                                                                                                                                                                                                                                    
                                                     
         
 3.  %  
  		  0  '                                                                                                                                                     
  		        
           	        	        
                                                           	                                                                                                                                                                                                             
                                                                                              
 <$   	 	 
  / 	                                                                                                                                               	                
              	     
 
                      	    
                                                                                                                                                                                                                  	 	                                                                                                    
      ? :   
   ' R                                                                                  	                                                               
  	     	  	   	                          	        
                                                                                                                                                                                                                                                                                                                                                                  
    $ ! (  
  	                                                                                                                                                                     
 	 
      
                                  
     
    	       	         
                                                                                                                                                                                                                                                	                                                                                                        
 
      	 * 	  	   	                                                                                                                                                        	 	      
       
  	    	   
    
    	 
             
   
           	                                                                                                                                                                                                                                          
   	  
                                                                                                     
                                                                                                                                                                                                  
  
        
   
              	    	     	               
   
   
                                                                                                                                                                                                         	% 
         	        
                                                                                    
                                                                                                                                                                                                        	 	                    	   	*                                                                                                                                                                                                                   
 
 
                                                                                                                 
                                                                       	  	                                                        	&                 
         	         
                           
           	 	                                                                                                                                                                                                                       	       
                                                                            
               
    
 
                                                                                   
                                                                          
     	    
       	 
  
                                                   	          	                                                                                                                                                                                                 	      
     
                                                                                                   	   
                                                                                       	                                                                                                            
                       0                
                                                                                                                                                                                                                                                                                                                                        
         
    	    	 
                                                                                 
                                                          
         
          	        	   	                	!     	                     
          	                                                                                                                                                                                           
  	            	                                                                                   
             ! 
                                                                                                                                                                     
           	       
   
 	     
    
       
      
          
                	                                                                                                                                                                                                 
        	                                                                                       	        
   .        
 2                                                                                           
                                                             	 
                                  
                  	           	   
 
                                                                                                                                                                                                                      	      	                                                                                                        2  
    !  9$ !                                                                                      " & 	                                                   (                                                     	       ! 
     	               
   	    
       	                                                                                                                                                                                                           
     	      
                                                                               	 ) 3       9! 5          
                                                                         ( (    
                                          
    	!         
                  
               	            	                                                                                                                                                                                                                                 	 	       
                                                               
 $ 4  	   
 2 :"                                                                                             !  
                                                   "! 
	                	          
 
                
     
      	                  	     
  	                                                                                                                                                                                                                                                         
                         " % &    	  	 0# ?                                                                                                     0 /                                           


  +#
 $      
   
         
      	   
 	              
                
                                        
                                                                                                                                                                                      	        	 
       
                  	             	    * ' 
     & 4  $                                                                                                        4   	                                                  
	   	             
                
                     	 
                                	    	                                                                                                                                                                                   	  	"       	     
 	                                   	  . ,      / 8   	                                                                                                               	 ?	 #  
                                           '     	 	    	       	   
                                        
               	   
    
                                                                                                                                                                                        	 	
   
              
 (             	                     	   (  & 	    % + "
                                                                                                                     $ 0 9                                           
         	 
   
      	                 
                                
      
   	                	 
%            	                                                                                                                                                                                                                
 	  	          	  
                            
          ? *                                                                                                                         9                                              E7 
        
      	            	                                
         	  	      
                                                                                                                                                                                                                                                                         
   	         	        
    
 $
  
                                                                                                                      
  
 C! <  	                                               5-  	                 
                         
                                                  
                                                                                                                                                                                                                         
     
 
 	    	 )   % 	       
                                                                                                                                      " D +                                                            "           
        
         "               	                   
   

    	                                                                                                                                                                                          
                      
           	  
	    
       
                                                                                                                             
   0                                       	
  N@               	         & 	                                             
      
    
      	                                                                                                                                                                                                             
 	               
      
 B-                                                                                                                                                                   	      D   	    
                	         UG     	                  
                        	                  	                                                                                                                                                                                                                                                   	 
 	                          	  	     	                                                                                                                                                   	       
  B' 6    
             
                                   
                                         
        
                 
                                                                                                                                                                                                   	 
     
     
                                                                                                                                                                                                                                                         
  K'   O    	                             QA  	     	          	                 
                
    	                             	                                                                                                                                                                                                           	    
      	                                                                                                                                                                                                                                                                        
 
 I" 
	 !  
                         J=   	        
                         	     
        	                         
         	      
 	                                                                                                                                                                                                                             	                                                                                                                                                                                                                                                                             B+ I           
                              	 
                    	                               	   	                          
 	                                                                                                                                                                                                      	 
                 
                                                                                                                                                                                                                                                           	         ?  4  	                                    % >0 	                 	   	 	   
       	          	           
                  	                                                                                                                                                                                                              
                                                                                                                                                                                                                                                                                      3 - , 9                                   


   H< 
        
                         	  
   
                  	   
              	                                                                                                                                                                                                                         
                                                                                                                                                                                                                                                                  
    	  " -   %        	                      


   A2 $  
            
 	           
      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2   /     
                                4 4%   
      	       	                        
         	               
                                                                                                                                                                                                   
                
      
                                                                                                                                                                                                                                                                              <   %         
                   
   @5              	                   
             	           	                                                                                                                                                                                                                              	                                                                                                                                                                                                                                                                                                                                      . Y. ;         
  
                  
      
  
                        	         	              
                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                                                                 
 	 D%   3   
                                      <2 "      
                           
   
         
                                                                                                                                                                                                                	                  
                                                                                                                                                                                                                                                                                                                	      $ L- P %	                          


                        
                    	                 
 	                                                                                                                                                                                                                       	   0  	 	 
 	                                                                                                                                                                                                                                                                                                        
        
 . Y* 9    
   
                          	     	     	   
 	                
 	       
   
.  	  	                	                                                                                                                                                                                                          
           
    	                                                                                                                                                                                                                                                                                                    
  	    H + " ,     
                            			    1* +"      
           	                                	          
 
   
     	                                                                                                                                                                                      	       
                                                                                                                                                                                                                                                                                                        	      		      -                                            2) ) 
    	   
   	         6     
 	        	      
  
     	 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
       
      +                                       7. $ 	         	        "                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	     : * 	 #                    
    	    
 70 ' 
 
                                     
    
              
                                                                                                                                                                                                                                 
                                                                                                                                                                                                                                                                                          
                   ; -  
 %   
     	 
             
    73 )           
                    
   
         	                                                                                                                                                                                               	      
           
                                                                                                                                                                                                                                                                                                                               
  6! %
     
     
                  
    '  *"      '              	           
               
                                                                                                                                                                                                       	          	                                                                                                                                                                                                                                                                                                                                                             8    *   *      	 
     
        
     %  5*   
 
        
          
     
                                                                                                                                                                                                                   	   
    
        
                                                                                                                                                                                                                                                                                                                                                              8& 8 $  
          	                )" %      	   
                 
            
          
                                                                                                                                                                                                      	 	 	 	              
       
 	                                                                                                                                                                                                                                                                                                                                               	   , ,  ) %                         %! (       
  
                 	            	   
                                                                                                                                                                                                    
   	                
    
                                                                                                                                                                                                                                                                                                                                                             R H  ) $                          			       
 $ 	 $                                	                                                                                                                                                                                            	  $       	   
                                                                                                                                                                                                                                                                                                                                                                                 
	 2 2   !                                   -#	         
"       	       
   	                                                                                                                                                                                                         		 	            	  
 
-  
 	    	                                                                                                                                                                                                                                                                                                                                                                                  -     
                            XJ 		 
 
   
             	 )                                                                                                                                                                                                                   		      	     	  	      
                                                                                                                                                                                                                                                                                                                                                                                             + +    (            
 
 
     
   
            	              	  
       	                                                                                                                                                                                            	                                                                                                                                                                                                                                                                                                                                                                                                                         1 D 
  - 	  	    
  	 
 	        	                      
                                                                                                                                                                                                                                  	 !         

  
                                                                                                                                                                                                                                                                                                                                                                                                     
  ; >   " "            
                        
  	 
    	       
   	                                                                                                                                                                                 
       
             	                                                                                                                                                                                                                                                                                                                                                                                                                      $ $ ?        	         
    	       	               
   
                                                                                                                                                                                  	             
               
                                                                                                                                                                                                                                                                                                                                                                                                                      
      # #     
    
   
                 
                                                                                                                                                                                                                
         
     !                                                                                                                                                                                                                                                                                                                                                                                                                                        =    "  "  
                                     	                                                                                                                                                                                             	 
   
      
  
              	  
  !                                                                                                                                                                                                                                                                                                                                                                                                                                                         		 
 	      
 	         	                                                                                                                                                                                                                             *                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ' 
      
       
 
                                                                                                                                                                                                 	    	                  	  	    

     
                                                                                                                                                                                                                                                                                                                                                                                                                                      		 	                       
                                                                                                                                                                                                                	                
  
                                                                                                                                                                                                                                                                                                                                                                                   	   	                                                                                                                                                                                                                                     
        
   	    	 
      !                                                                                                                                                                                                                                                                                                                                                                                                         
 
  
 	               
  
 
          	      
                                                                                                                                                                                               	                       	  
 
        
                                                                                                                                                                                                                                                                                                                                                                                       !  	          	                                                                                                                                                                                                                                                                              
  '6   %   
                                                                                                                                                                                                                                                                                                                                                         
       
  $   0   
                         
                                                                                                                                                                                                                       
                           	 +                                                                                                                                                                                                                                                                                                                                                                                       , 
        
   
        	                                                                                                                                                                                                                                           	   	                     
            %                                                                                                                                                                                                                                                                                                                                                                % 
        	 
  	                     	     
                                                                                                                                                                                                         
                   
          	 	                                                                                                                                                                                                                                                                                                                                                                           
                              	     
                                                                                                                                                                                                                     
           	                    
 
 &   3                                                                                                                                                                                                                                                                                                                                                         
  5  	                                                                                                                                                                                                                                                                   	   3 	    
   
    
          +  -*  # *  K4                                                                                                                                                                                                                                                                                                                                                                                        
  
  *    +   (#              0      
                 	                                                                                                                                                                                                 	 
  	 #       	      '"  %!  	 5  P2                                                                                                                                                                                                                                                                                                                                                                           & !      - 
                                   
         
                                                                                                                                                                                                           
 
               	 )       3  N) (    	                                                                                                                                                                                                                                                                                                                                                    
    ' - %   
  % &#                       
   
          
                                                                                                                                                                                                                        	           
   	 
    	 
        
	  
     ! *  7% 8                                                                                                                                                                                                                                                                                                                                                                     4         *%  	            
               	   
 	                                                                                                                                                                                                  	         
       	      	       
     )*    D  2 4  	                                                                                                                                                                                                                                                                                                                                           	        
  ) 
      +&!     
 
    	           
                        
                                                                                                                                                                                    
             	   2   	       
      &"       	    
  
                                                                                                                                                                                                                                                                                                                           	 	  	      
   .' "           	  	         
 	  
      -  
                                                                                                                                                                                                                                        	       
         
	   "    

 
                                                                                                                                                                                                                                                                                                                              
        .<-  

             	      
         	   	   	     	                                                                                                                                                                                	                                             	    
    
   

 
 5,            
                                                                                                                                                                                                                                                                                                             
         	
  
   '( #  	
                                              
                                                                                                                                                                                                     
              
    	 
 	    	 
   
 	 	
                                                                                                                                                                                                        
          
             	   
   
              
                                                                                                                                                                                                       
       	      	!                  
       
 
  
       
                                
        
            	        	             
                        	
 
                    
   	  
        '        	          
            	          
                                                                                                                                                                                                    		       
           
                       
       
          
 
    
&             
                 
         	 
     	    	 	
 
 
      
    
                              
 
    
&           

                
          
           	             	                                                                                                                                                                                                               ) 	    	
 	 
              
%          	           

    
      

          	               	    #    	 	
     )      	 
               

%   
      	        
  
   
      

          	 	                   "             
' 
    	  
             
      	                                                                                                                                                                                                                       
 %     
 
               
             	   	        
      
           	                   
      	   
    
      
 
%     
 
               
             	   	        
      
           	                 
             
 
 
     #     
 	                                                                                                                                                                                                                
                	 
'               
 	           	
               
      
      	                          
                	 
'               
 	           	
               
      
                                   	      	        	 !                                                                                                                                                                                                          	     
            
 
 
                     
&    
     $ 
   	      
' 
           
          
       
     
            
 
 
                     
&    
     $ 
   	      
' 
           
        
       
   
            
    
       
                                                                                                                                                                                       	  	 	
            
           
  	          
    
        
 	   
            	           	         	 	
            
           
  	          
    
        
 	   
            	               
      	   
           
            
 	                                                                                                                                                                                                     	   	      
          
         
     
  
      
       	
      
              
                    
   	      
          
         
     
  
      
       	
      
              
           
             
       	          	      	                                                                                                                                                                                                  
          
                      	
          	     	           	 
     
  
   
               $         
    
%        
                      	
          	     	           	 
     
  
   
              
$   	       	
    #                              
                                                                                                                                                                                                        
     
            	  
      
%         
                 	         	 	   
         
 
  
            	        
            	  
      
%         
                 	         	 	   
         
 
  
               
   
  	 
        
           
     
                                                                                                                                                                                  	     /         	 
   	   
 
     	       

        	 #   	                                     	       	 
   6 
         	 
   	   
 
     	       

        	 #   	                                     	          	 

    4           	 
      	  
                                                                                                                                                                                                                             
     	 
              
           1 	         
     
&        
   
        
 	  
    	       
      
    
     	 
              
           1 	         
     
&        
   
        
 	  
    	       	      	  
  	       	               	                                                                                                                                                                                                   
                 	  	    
           	      
 	
    	    
                          
  
      
     
      
                 	  	    
           	      
 	
    	    
                          
  
      	      
                      
   
                                                                                                                                                                                                    
  	
           
        	      	    
 
     	                                 " 	              	     !>            	
           
        	      	    
 
     	                                 " 	        	
      
      >                 
      	   	                                                                                                                                                                                                   
                                   )    	         
        
      	    
 	             )    
 
    
                                  )    	         
        
      	    
 	  
          )    	     	             	           	   	                                                                                                                                                                                                                       
 	    	        
      	        
 
                                  	  
#          "            
                 
 	    	        
      	        
 
                                    	#      
    ! 	         
                  	                
                                                                                                                                                                                                   

                  	      
 
           
                             
     
     
                                	      
 
           
                            
      
     

                                	                                                                                                                                                                                                        
     	   	                   
     
     	   
     
   	 	       
                	     ( 
 	             	
      	   	                   
     
     	   
     
   	 	       
                	    ( 	 
                    	                                                                                                                                                                                                                                    

     
    #                               	   	 	   
(    
      	                 	        
 	   
     	      
  
 
!         
    #                               	   	 	   
(    
      	                 	          
    
 
 
       
   
              !                                                                                                                                                                                                                                                  	 
   
    
        		                      
        	   
                               	  
    
      	 
   
    
        		                      
        	   
                        
         
 
   
                 
    
                 	                                                                                                                                                                                          

 
          
     	  
       
 
  	     #      
    	             
              	               
   	     
               
     	  
       
 
  	     #      
    	             	            
                 	     	            	   	     	     
 	                                                                                                                                                                                           
         	                           	    	         	    	   	        
            	   	     
 
            	          	                           	    	         	    	   	        
           
   
     
 
         	
    	         
       
                                                                                                                                                                                                 	  )       
       
                 
             
    	                                     
         (       
       
                 
             
    	                                    	   	      
'             
    	                                                                                                                                                                                                       	 

                
 0  
 
                        
     
                  
#     	     
               
     	     	                
 0  
 
                        
     
                  
#     	     
             
         
 
           
    ,   	     
                                                                                                                                                                                                             
       "            
   	     
   	                       	    
 
  	   
     
           	 
             
       "            
   	     
   	                       	    
 
  	   
     
          	 
                    
 
                                                                                                                                                                                                         	
  
                  	          	  	         	
         
 
       	   	         
 
    
               
       	                   	          	  	         	
         
 
       	   	         
 
    
               
                                                                                                                                                                                                               
                    
       
    
  	 
          
 
          
)     
    	           
          )                	                      
       
    
  	 
          
 
          
)     
    	           
            )                	                      	 !        	                                                                                                                                                                                          
 
       #                 
  	            	       " 	                
 .                
       	      
 
      #                 
  	            	       " 	                
 .                  
        	      	 
      !         
          	                                                                                6                                                                                         	              	   	      	                     	      	           	                   
$    
      	                  	   	      	                     	      	           	                  
$       
   	                
    	                                                                                                                                                                                                  
        
  	                       
        	          
   	           	                                  
  	                       
        	          
              	                        
        	 
 	         
                                                                         3#                                                                                              	 
     	
   	  
            
 
         1 	
   	 
        
  
 
   
        
           %                   
      	
   	  
            
 
         1 	
   	 
        
  
 
   
                    %                           	 	  
           
                                                                          7$                                                                                                                      
      
     
         	
   	
 , +    	  	                                   	   	    
     	       	          
      
     
         	
   	
 , +    	  	                                   	   	         
                 
 	   	           
 	                                                                                 `                                                                                             	   	 	     
 
              
 	           
       	          &    	          	 
  	                  
       	          
 
    
 
              
 	           
       	          &    	          	 
  	                 	       	      
  
     	                                                                                                     3#`                                                                                        
                        	      	     
      
              
   
 
   
              
   
          
                        	      	     
      
              
   
 
   	
              
   	   
      
                     	 	                                                                                0 7                                                                                            "                  	    
      	  
       
                            	             
$ 
  
             !                  	    
      	  
       
                            	          	   # 	  
      	 	     
                          
                                                                                   7                                                                                               	
                 	      	       	        
      
                              	 	 
                  	     	                 	      	       	        
      
                              	 	 
           
           
            	        	                                                                                               
                                                                                                                                           
                
                    
                	            	                                       
                
                    
                	            	          
      
                                                                                                                                                                                                                                       	            
                         	
                      	                                              
     	            
                         	
                      	                             
               
                                                                                                                           	Q                                                                                                
 	       
             
 
   	
 	   
       
    	                                   	           
 	                     
 	       
             
 
   	
 	   
       
    	                                  
          	                                                                                                                                N3 B                                                                         	
 
                	        	                	                 	                              
            	
 
                	        	                	                 	                        
                             쾴                                                                                                     
                                                                                                         
                                                                                                 
                                                                                      
                                                                                                                               "t	                                                                            
    3 	    
   	
             	               	      
         	        
 	 
                 
        
    3 	    
   	
             	               	      
         	        
 	 
   
  
           
       
    0 	             
                                                                                                                  l 
                                                                 
           
 
  	 !    	     
               	                
   
   	 
           
                      
           
 
  	 !    	     
               	                
   
   	 
           
       
            
        	
 	   	                                                                                                                          't                                                         
             	                      
            
                        
             7             
        	                      
            
                                	      6     
           
  	                                                                                                                                   $N< 	                                                                               	             
   	      $ 	          
 
                
   	
   	        
%     	                   	             
   	      $ 	          
 
                
   	
             
$      	 	                 
                                                                                                                                          G/
I                                                                      	    	
                     	            	           
           
         
 	                       	    	
                     	            	           
           
 
         
          
       
          
                                                                                                                                                          *#H6                                                                      
         
      	 
              	 
             	       	          
            
               
            
         
      	 
              	 
             	       	          	           
                                                                                                                                                                                        .8 D0                                                         
      
       
         	    
      
   	     	    	                    	 	   
% 
     	     	
       
      
       
         	    
      
   	     	    	                     	   
% 
     	                                                                                                                                                                                             )@5                                             
        	     	
                                   	
   "                      
      	          
 	    
 	   
      
        	     	
                                   	
   "                      
      	          
    	 

 	   
    	   
                                                                                                                                                                                      
      
   
      - 
  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	   
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    bA
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              bA
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            bA
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 s=?    IENDB`PNG

   
IHDR         (-S   PLTE                     			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   >IDATxcd@@cs?̋*U3B3/7G` @q_  !rG    IENDB`PNG

   
IHDR         (-S   PLTE                     			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   =IDATxcd@ B0rp"BF C.p*p& U      IENDB`PNG

   
IHDR         \rf   	pHYs       
OiCCPPhotoshop ICC profile  xڝSgTS=BKKoR RB&*!	J!QEEȠQ,
!{kּ>H3Q5B.@
$p d!s# ~<<+" x M0B\t8K @zB @F&S  `cb P- `' { [!  eD h; VE X0 fK9 - 0IWfH    0Q) { `##x  FW<+*  x<$9E[-qWW.(I+6aa@.y24  x6_-"bbϫp@  t~,/;m%h^uf@ Wp~<<EJB[aW}g_Wl~<$2]GLϒ	bG"IbX*QqD2"B)%d,>5 j>{-]cK'Xt  o(hw?G% fIq  ^D$.Tʳ?  D*A,`6B$BB
dr`)B(Ͱ*`/@4Qhp.U=pa(	Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F; 2G1Q=C7Fdt1r=6Ыhڏ>C03l0.B8,	c˱"VcϱwE	6wB aAHXLXNH $4	7	Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![
b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw
ǈg(gwLӋT071oUX**|
J&*/TުUUT^S}FU3S	ԖUPSSg;goT?~YYLOCQ_ cx,!k
u5&|v*=9C3J3WRf?qtN	(~))4L1e\kXHQG6EYAJ'\'GgSSݧ
M=:.kDwn^Loy}/TmGX$<5qo</QC]@Caaᄑ<FFi\$mmƣ&&!&KMMRM);L;L֙͢5=12כ߷`ZxZ,eIZYnZ9YXUZ]F%ֻNNgðɶۮm}agbgŮ}}=
Z~sr:V:ޚΜ?}/gX3)iSGggs󈋉K.>.ȽJtq]zۯ6iܟ4)Y3sCQ?0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz %gA[z|!?:eAAA!h쐭!ΑiP~aa~'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl{/]py.,:@LN8A*%w%
yg"/6шC\*NH*Mz쑼5y$3,幄'L
Lݛ:v m2=:1qB!Mggfvˬen/kY-
BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9<qy
+V<*mOW~&zMk^ʂkU
}]OX/Yߵa>(xoʿܔĹdff-[n
ڴ
VE/(ۻC<e;?TTTT6ݵan{4[>ɾUUMfeI?m]Nmq#׹=TR+Gw-
6
U#pDy	
:v{vg/jBFS[b[O>zG4<YyJTiӓgό}~.`ۢ{cjotE;;\tWW:_mt<Oǻ\kz{f7y՞9=ݽzo~r'˻w'O_@AC݇?[jwGCˆ
8>99?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-    cHRM  z%        u0  `  :  o_F 8IDATx                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #   17,  # =M2  ʳ L>M   @[; OOO>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   `

  ̹    *  
   '!#           


 ___                                                                                                                                                                                             ++( 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       [D ?    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    !:[                                                                                                                                                                                                                       CL,
1
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       J
E#                                                                                                                                                                                                             1hV 

# 
       	               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                         
 !{_                                                                                                                                                                                                        *q$7       
		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     	        	 
 h{                                                                                                                                                                                            BjE     
     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	    
 
   
 (ԟ                                                                                                                                                                                    lI -       	    
  
 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      	      } ;y                                                                                                                                                                     0½l\  	        :
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	    C                                                                                                                                                          Az@      
  $                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        $     	       '""'                                                                                                                                                             ?r=   
    ( #       
   $                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              )    ) %    3  	   	 
x                                                                                                                                                       Fp=  
  	 (  &  
      !&  Ʀ Ԯ 5Q #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ѯ 
 -X           *  
       

 ~                                                                                                                                            ;n@    
  / ( 
                BU    "/ 4N                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            Գ  "= 6T             	     
    $   
 v                                                                                                                                        .w<  	   7% # 	 
                A]    "0 1S                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               گ    9 6\	                 
    0   
      
w

&


                                                                                                                                	
	 nH   	      5&                          Cc     #8 ,T                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ݮ     3 8c                         
 & 
  	*     y
                                                                                                                            Y 
   $ 2!   	                                      %@ *R                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   . <l
                                     
  #   	  
Qfnk                                                                                                                 ^e
   
  .$ #    
           	                "3             "                                                                                                                                                                                                                                                                                                                              ؕ     ) <l                                       	  	   
 	  
 56:                                                                                                         6q    -*    
                                  #5              
!                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    ݑ      $ >q                                             	         	 
  1526                                                                                                        p0
  	   #  	     
                                          Kt
           ء s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                u        >q
                                                  
 
   		  $    	     x                                                                                                     	VW	  
   + *!                                                     "5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Bw                                                            	   
    


1.3                                                                                                $i    
 $                                                          	
 Lw
 	           w                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          y           @v
 
                                                                  &         a:                                                                                             vM     . $                                                          	 .                     	%                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ?w
                                                                  
     
 	"110                                                                                        "?	
   
   #!           
                                                          
 Eq 
              m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           p               9q 
                                                                   
          $"    
    9:                                                                                 ~B    * <%                                                                    #                           #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	 3m                                                                             	   )		 444                                                                            ('      
	  
                                                                                 1c                r                                                                                                                                                                                                                                                                                                                                                                                                                                                                                t                (c                                                                                            	  		         &H                                                                             
׳y4 
 
  , +           
                                                          
 $X                   h                                                                                                                                                                                                                                                                                                                                                                                                                                                                         k                   X	 
                                                                                 , /  
 
  ҇                                                                               !9 	                                                                                                      K                    v                                                                                                                                                                                                                                                                                                                                                                                                                                    y                  M $                                                                                                          
          6                                                                    	Y     
 ,          	         
                                                               $ A                                   t 
K \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                B '                                                                                             . 
  
    u                                                                   	>     
                                                                                                      % 6                        j                                                                                                                                                                                                                                                                                                                                                                                                                                          m                    7 *                                                                                                                   	     7                                                                  >    	  & 
   	                                                                          ( *                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  -  .                                                                
                          )         j                                                            ͳM0    
 
                                                                                                          	     +                                         [ O                                                                                                                                                                                                                                                                                                                                                                                                                                                    $ 0  
 
 	                                                                                                               
                                                                    !0  
  N                                                                                                  
       ,                                              o                                                                                                                                                                                                                                                                                                                                                                                                                                             3  
 
  
                                                                                                            -        , !                                                       73    
                                                                                                                       +                                        p S
 Y
                                                                                                                                                                                                                                                                                                                                                                                                                                  4 	   	                                                                                                                      
  
 
            3   6bfl؞                                                9                                                                                                                                     +                                      o (                                                                                                                                                                                                                                                                                                                                                                                                                        5 
  
                                                                                                                )                9                                                      >86"                                                                                                                                               +                                         t N
 _                                                                                                                                                                                                                                                                                                                                                                                                        4   
  
 	                                                                                               	                           "                                                0      %                                                                                                                                  (                                             q ,                                                                                                                                                                                                                                                                                                                                                                                                   4     
 
 	                                                                                       $    
                          ,gg\ə                                         >0    	                                                                                                                                                (                                              w Q ^                                                                                                                                                                                                                                                                                                                                                                                      	 3     	 
                                                                            
                                 1  9                                              -      /                                                                                                                                              & -                                                  r &                                                                                                                                                                                                                                                                                                                                                                                       4    
 
 
                                                                         
                                *                                            @LP                                                                                                                                                           0                                                 s 
V Z                                                                                                                                                                                                                                                                                                                                                                  2                                                                     #    
                                                                                         

 
                                                                                                                                                           2 
                                                   v                                                                                                                                                                                                                                                                                                                                                                -     
                                                 
   *    
                                                                                   "1    
                                                                                                                                                                           4                                                     m e 
K                                                                                                                                                                                                                                                                                                                                                    +    
  
                                          	 	  	                                                               4                                           &                                                                                                                                                                            6                                                             o                                                                                                                                                                                                                                                                                                                                      *     
 
                                      !                                                                                                "      	 
                                                                                                                                                                              5                                                                s 
4                                                                                                                                                                                                                                                                                                                             ' "                               
    	                                                                                                                                                                                                                                                                                               2                                                              } O b                                                                                                                                                                                                                                                                                                                       # %    
                       &  
           		                                                                                                                                                                                                                                                                                  .                                                                   x                                                                                                                                                                                                                                                                                                            )     
              
  
                                                       	
	$&"vsu                                                     (    	                                                                                                                                                                                (                                                                    n n ?                                                                                                                                                                                                                                                                                                      ,     
 	  
     
  # (  
                                                    $$$*'(.06)#                                                        '       
                                                                                                                                                                                           %                                                             h                                                                                                                                                                                                                                                                                            0     
 
           
                               
                      	
	.+.
:893(8                                                                                                                                                                                                                                                                        '                                                           |                                                                                                                                                                                                                                                                                      3    	  
 		  
    !                                                                 1+),HJs                                                                                                                                                                                                                                                                                                     )                                                                  n n A                                                                                                                                                                                                                                                                       4      	
 
  	 	    	                                                                            )))778 HJG                                                                                                                                                                                                                                                                                          	               *                                                                   f                                                                                                                                                                                                                                                               1	       
                                                                             333                                                                                                                                                                                                                                                                                                                          )                                                                       }                                                                                                                                                                                                                                                 	  7     
 
     
                                                                      '''***                                                                                                                                                                                                                                                                                                                                        .                                                                     j y 	0                                                                                                                                                                                                                                             5     
     	 
                                                                               444                                                                                                                                                                                                                                                                                                                                            0                                                                      z _ V                                                                                                                                                                                                                                          5 
 	  
   
                
                                                              222                                                                                                                                                                                                                                                                                                                                                              4 
                                                                     s                                                                                                                                                                                                                                1   	                                     
                                                                                                                                                                                                                                                                                                                                                                                                              4                                                                                                                                                                                                                                                                                                    * 
    

                                                        ;;;                                                                                                                                                                                                                                                                                                                                                                                              2                                                                          m z 	0                                                                                                                                                                                                                 
               
                               
      			           333                                                                                                                                                                                                                                                                                                                                                                                                               1                                                                           { 
f 
P                                                                                                                                                                                                            	
 
 
                                             &&&222                                                                                                                                                                                                                                                                                                                                                                                                                           -                                                                                  o                                                                                                                                                                                           "  	
  
                                                          ,,,444???                                                                                                                                                                                                                                                                                                                                                                                                                                               '                                                                              ~                                                                                                                                                                                     # 
                 	                                
     			 BBB888888                                                                                                                                                                                                                                                                                                                                                                                                                                            (  #                                                                             o                                                                                                                                                                             $' 
  	                                                                        &&&   777777                                                                                                                                                                                                                                                                                                                                                                                                                                                                       *                                                                                  p { 	2                                                                                                                                                                     $ 
 
 
                     
                 	     WWWIII                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ,                                                                                 } k J                                                                                                                                                        
 ('  
 

 		                                                                               ==?111                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         +                                                                                      b                                                                                                                                     & 
 
 	           
                                     

DDJLM?|~                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   , ,                                                                                    s                                                                                                                                        '"  

 
 

                                                      <<<LM                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ( / 
                                                                                   ~                                       	                                                                                       %   

 	                                                     			 ...			WX                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              3 
                                                                                  s                                                                                                                       %#   
 
	
                                                              u


kl                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              0                                                                                    q  #                        
                                                                                        !    

                                                         			s(((ab                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 2                                                                                       w ~ 	.                                                                                                         

 
 	
 	                                                            &&&_Z[                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
            0                                                                                          | y 
9
                                                                                                   	 	                                                        


  g***TU                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               +                                                                                     o F                                                                                            
 
	 
 	                                            j--->@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            (  '                                                                                       
T                                                                                       !   	  
         
                          `[]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      *                                                                                          
_                                                                                   $" 
  	
 
                                         


  i>>>13                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     +                                                                                                                                                                           

 &)  	  	
                                          n%%%TV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         -                                                                                                                                                                                (' 
 
 	 	                                         


zGGG24                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    +                                                                                                                                                                    (" 	 
  	                                            sbd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               . 
                                                                                                                                                           &%   

 
                                              """,,,>@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	             1 
                                                                                                                                                        %"                                       			jl                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             1                                                                                                                                                   !  
                                ###df                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     /                                                                                                                                                

  	
 	                             222###GI                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 -                                                                                                                                         

  


 	                               ,,,>@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        &                                                                                                                                                                  >@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             *                                                                                                                              $"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                -                                                                                                                       '$  


                                       $$$gi                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               -                                                                                                                         	 )&  


 


                                   '''y&&&ce                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ,                                                                                                            )%  


  			                                     )))u000DG                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                .                   	                                                                                       '#  


                              +++p444>A                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             .                                                                                                     $     			                               '''m===58                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
           1                                                                                              "  

  


                                           l99958                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      /                                                                                             


                                              o111=@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            =  $                                                                                         

  


                                           q222                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
        -                                                                                           


  


                                                 m+++LO                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       2                                                                                     / &  

                                     


l"""MP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  
 
  2                                                                                            
 3    
 _                                               Z]                                                                                                                                                                                                                                                                                                                                                                
  
                              	                                                                                                                                                                                                                                                                                                        5           P `Z                                      [sw                                                                                                                                                                                                                                                                                                                                                                   	     
             		 
    
                                                                                                                                                                                                                                                                                                                                            6                E \W                              `222                                                                                                                                                                                                                                                                                                                                                                      
          )           	  
 
  
   
                                                                                                                                                                                                                                                                                                 7                       = SP                                    i%%%AE                                                                                                                                                                                                                                                                                                                                                                              	 (#
 
	                       	   	 
 
                                                                                                                                                                                                                                                                                                             2                              %  A=                                   !!!W[                                                                                                                                                                                                                                                                                                                                                                             
   
        
             	            -  
              	                                                                                                                                                                                                                                                                      +                                    2  .+                            a>>>ڴ                                                                                                                                                                                                                                                                                                                                                                                           
                  
                  
  	                                                                                                                                                                                                                                                                                      !                                          ? 
 "!                     111+/                                                                                                                                                                                                                                                                                                                                                                                                                   5 
 
  
        	 "       
 	 ' 
                                                                                                                                                                                                                                                                     )                                              C b^             ^LP                                                                                                                                                                                                                                                                                                                                                                                                
                 
	 %     	        
      
   	                                                                                                                                                                                                                                                        /                                                    
 D c^         m"""                                                                                                                                                                                                                                                                                                                                                                                                                      %	         *       7   
                                                                                                                                                                                                                                             	 2                                                          > XS    ###KO                                                                                                                                                                                                                                                                                                                                                                                                                                       '  	    
       	       "                                                                                                                                                                                                                                            3                                                                ! 0 B>   t...                                                                                                                                                                                                                                                                                                                                                                                                                                               
 
  '      
         -                   
                                                                                                                                                                                                                      /                                                                      4  +(     (((9=                                                                                                                                                                                                                                                                                                                                                                                                                                                               
 #            
      %                                                                                                                                                                                                                                   )                                                                      B  (((                                                                                                                                                                                                                                                                                                                                                                                                                 
 
                                      	  1     	      
 , 5   !  
  
                                                                                                                                                                                                                  	                                                                      E b\6:                                                                                                                                                                                                                                                                                                                                                                                                                                                       	  #
     
       
       	                                                                                                                                                                                                             	                                                                        J}M                                                                                                                                                                                                                                                                                                                                                                                                                                                        
  $      	  		      $                                                                                                                                                                                                                                                                                     djs   rm                                                                                                                                                                                                                                                                                                                                                                                                   	                                                                             
            	                                                                                                                                                                                                                                                        m(m                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	 
               
        	   	                                                                                                                                                                                                                                          5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                        
                                                                                                                                                                ^                                                                                      	7Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        	 
  	          
                                                                                                                                                                                                                                                                       "6 , m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  & 	           	  " ,                                                                                                                                                                                                                                                      Op   m                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                                                                                                                                                                      
 <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               +  $        
  	 	   /                                                                                                                                                   #  		         5                                                                                    5T                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
          
                                                                                                                                                          ($    
      
	                                                                                       1    n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
         # %
                                                                                                                                                         

 ++   


                                                                                              Nj   n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
               	                                                                                                                                                     +) 
 
  		
 	   


  


                                                                                         	 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 "    	          
                                                                                                                             )$   

                  M                                                                                7]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
	 
                                                                                                                                                             %  


  


        			  


                                                                                         '9    n                                                                                                                                                                                          ===                                                                                                                                                                                                                                                                                                                                   $ 
         

 %                                                                                                                             
	 
 
                 F                                                                                       f,                                                                                                                                                                                        XXX                                                                                                                                                                                                                                                                                                                                                        
                                                                                                                                                           ! 

 
 


                  			                                                                                       n                                                                                                                                                                                        			                                                                                                                                                                                                                                                                           
       !   	                                                                                                                    
 )"   
 		                     


     
                                                                                  &    n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -$  
                                                                                                                R]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
             	                                                                                       	 2 
 	
 

   
   
                             K                                                                                      
 =                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   = 
   		                                     			                                                                                          7 n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
                                                                                                                               4       
                                                   L                                                                                 An&                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
                                                                                                               *  &   
 
                                                  C                                                                               1Ԓ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .       	 
                                               5                                                                                    	o;n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         6   
  
                                                             


  


 


                                                                               4k o                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	           
               
                                                                                                           <   
 	  	                                                  

                                                                                  &n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                    
                                                                                                              :     
                                                               	                                                                               	 7 n                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	                 1               &                                                                                                     5     
 
 	  
            
                                          			   


                                                                                =h                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      . #   
 	     	                                                            			  


                                                                               n                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        	  %  	            # 
                                                                                               $ *   
 
	 	      	
                                                                  =                                                                               U                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
                   
                                                                                                     
3     	         	                                                                    +                                                                             R	N+ﱒ                                                                                                                                                                                                                                                                                                                                                                                                                                                                             %                '                                                                                         
 :    
 
                                                                                                                                                      
P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        %                                                                                                 ;     	               
                                                                        


                                                                             ,                                                                                                                                                                                                                                                                                                                                                                                                                                                       	     ! 	         
 
                                                                                                      7                      
 
                                                                     P                                                                          k	-ђ                                                                                                                                                                                                                                                                                                 	                                                                                     	 
       	   !                                                                                                    / !    	                                                                                        I                                                                           I @                                                                                                                                                                                                                                                                                                                              	                                                   	  
   &    
   	 	    ) #
                                                                                               # *   
 
 	                        
                                                               ;                                                                            <_)                                                                                                                                                                                                                                                                                                                                 	                                               
 
  
 	        
  # 	    
                                                                                              	3     	                  	        0                                                                     *                                                                                                                                                                                                                                                                                                                                                                                                                                            	                       
  
   
                                                                                                
 :    
 
                              	 
                                                                                                                                                    on                                                                                                                                                                                                                                                                                                                                                             	                  #    
 
                                                                                             8                                        -  ( 
                                                            O                                                                   h2ԑ                                                                                                                                                                                                                                                                                                                                                                                       
 	  
         
  # "        	                                                                                         5     	                                        
   	                                                                                  O                                                                   H                                                                                                                                                                                                                                                                                                                                                                    
      
     
 
                                                                                                 , "   
 
                                           
 -  ! 
  
                                                                I                                                                      E	P)﯑                                                                                                                                                                                                                                                                                                                                                        	               
                 	                                                                            +    
	                                                                                                                                              7                                                                                                                                                                                                                                                                                                                                                                                                   
     	   	       
                                                                                                 4    
 
                                        	   	      
  M 	                                                                       &                                                                    "0 kV                                                                                                                                                                                                                                                                                                                         	       
   
 
             % "                                                                                                        	 :     
                                                          
                                                                                                                              z                                                                                                                                                                                                                                                                                              	                  
                
     

 	                                  
                                                                    8                                                         	        5  +                                                                     R                                                               |pp                                                                                                                                                                                                                                                                                                      	 
   	       	  
 
 
 
 	                                                                                                                             0     	                                                                             
                                                                      M                                                               i	                                                                                                                                                                                                                                                                                  
 
 
     "                     	  	    
 &  	         	   	                                                                                                      $ (   
 	                                                                    1                                                                        >                                                                
 pU                                                                                                                                                                                                                                                                            	             	 	            	  
     
                                                                                                                                       1   
 
 	                                                                                                                                                               ,                                                               R	8                                                                                                                                                                                                                                                                            	                 
                   	                                                                                                     8     	                                                        
        
          b    	                                                               			                                                                     pA                                                                                                                                                                                                                                                                          3%           	                                                                                                                                                                      8      
                                                                                                                                                                       


      U                                                            ?	J                                                                                                                                                                                                                                                                             	     
                                                                                                                                                                                                                     1     	                                                                                           	         E  #                                               


         Q                                                            #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   & $   
 	                                                                                                                                                                                                     


  


                                                            /k Q                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   .   
 
 	                                                                                                                                      )  5   
    
  	                        	             /                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      6     
                                                                                                                                                                                                  


                                                           ,G T                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      6                                                                                                                                                      + 
 I )   	  
                                               U                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                1     	                                                                                                                                                                                                        			 


                                                              )G X                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   # #    
                                                                                                                                                         
   # ,                                            


  


    A                                                     ~
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
/   
  	                                                                                                                                                                   "                                                       -                                                        &) Z                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
 6      
                                                                                                                                                   
           
 *  # , / 
                 
                                                                                  ~	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      6                                                                                                                                                                                    ! ( 	       	 
                                          			 


   

                                                       "* W                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             -     	                                                                                                                                                                          
            )                                          O                                                   vI                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    $   
 
	 	                                                                                                                                                                      	                       
           	                              			      ;                                                   - L                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          /    
 
                                                                                                                                                                     
               
                                                 $                                                v                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           4     
                                                                                                                                                                                      	                                                        			                                                      <H=                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 0                                                                                                                                                                                                      
                                                  V                                                  x                                                                                                                                                                                                                                                                                                                                                                                                                                                                           $     
  	                                                                                                                                                                                                               
                                        
     E                                             IG/                                                                                                                                                                                                                                                                                                                                                                                                                                                                        +   
 
	 	                                                                                                                                                                                                                                                                	  
	     /                                          u   \                                                                                                                                                                                                                                                                                                                                                                                                                                                                  	 1    
 
                                                                                                                                                                                                                                         	  
                              	      	 	                                             WIz                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    1     	                                                                                                                                                                                                                                                     
  
            
                         X                                             j   x                                                                                                                                                                                                                                                                                                                                                                                                                                                                    &    
 	 	                                                                                                                                                                                                                                                               , 	  
                            	      O                                          cH                                                                                                                                                                                                                                                                                                                                                                                                                                                               
&   
 
	 	                                                                                                                                                                                                                                                                          
  	                                5                                         ]                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
  .    
 
                                                                                                                                                                                                                                                             
           
 "     
&                     	                                             s7]a                                                                                                                                                                                                                                                                                                                                                                                                                                                                  /     	                                                                                                                                                                                                                                                                      	           	 
 ! '
 % 
                          


   	                                         &娪#                                                                                                                                                                                                                                                                                                                                                                                                                                                     %     
	                                                                                                                                                                                                                                                                                 
 
                            P                                     M'$*_d                                                                                                                                                                                                                                                                                                                                                                                                                                                $   
 
 	                                                                                                                                                                                                                                                                                                                	            			                                     `s!2                                                                                                                                                                                                                                                                                                                                                                                                                    	 -    
 
                                                                                                                                                                                                                                                                                                    
 !                                                       +?:#dO
|w999                                                                                                                                                                                                                                                                                                                                                                                                                               .     	                                                                                                                                                                                                                                                                                                              	  % $  
         
            	                                  &  
j򻾾m+
                                                                                                                                                                                                                                                                                                                                                                                                            $     
                                                                                                                                                                                                                                                                                   
            	   
          "
  	    
                   P                                ,)     		tjDDD&&&                                                                                                                                                                                                                                                                                                                                                                               
"     	 	                                                                                                                                                                                                                                                                                                                                     	  
                             5                            , 2/    		{t###III                                                                                                                                                                                                                                                                                                                                                                                *                                                                                                                                                                                                                                                                                         	                               !  >	   
                                                      
      


|ق%%%AAA(((                                                                                                                                                                                                                                                                                                                                                                                 )                                                                                                                                                                                                                                                                                                                                                                 
                       \                            & D? 			      			   r888                                                                                                                                                                    	                                                                                                                                                                        
 	                                                                                                                                                                                                                                                                                                                                                       $   "             	 
    H                              $ :Q                h                                                                                                                                                                                                                                                                                                                                                       
 %     
                                                                                                                                                                                                                                                                                                                                                                                                         	      

        )                       -"                   g                                                                                                                                                                                                                                                                                                                                          *                                                                                                                                                                                                                                                                                                                                                                                                           
 + +              
                             " 0                    	     ؝n                                                                                                                                                                                                                                                                                                                       "     	 	                                                                                                                                                                                                                                                                                                                                                                                                                    	            	  Y                             
 
                  r                                                                                                                                                                                                                                                                                                           
    
 
 
                                                                                                                                                                                                                                                                                                                                                                                                                             # A)             =                           " 4                              			 			s999                                                                                                                                                                                                                                                                                                                %   
                                                                                                                                                                                                                                                                                                                                                                                                                                  =, #       

                                # 51                                   )))                                                                                                                                                                                                                                                                                $     
	                                                                                                                                                                                                                                                                                                                                                                                                                                      M' 9        ^                                           


                                                                                                                                                                                                                                                                                          
 
 	                                                                                                                                                                                                                                                                                                                                                                                                                                                
 2#        J                        %                                 ///                                                                                                                                                                                                                                                     
                                                                                                                                                                                                                                                                                                                                                                                                                                                     
   7       '                     " E,                                                     (.ݼӯQQQ                                                                                                                                                                                                                                           #     	                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
   
                    	  ##                                                                   00 OǈFFF444                                                                                                                                                                                                                                        
	 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 	 
	       8                      7                 	                                         66ƾ୴$$$000 ,,,                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              
  
                         EF                                                                       BB ,ׯ///DDD                                                                                                                                                                                                       # 
  
   	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  	    
                         *    
                                                               J  3ڢ{{{                                                                                                                                                                                          "  
   
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
 	 
      -                                                                                                      N                                                                                                                                                                                       
  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
                     4     	              
                                                	           O                                                     	                                                                                                                   % 
  
  
	 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      	  
	        "              8 ##  	                                          
      	                                                                                                                                                                                     ) 
 
 
  	 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
 
       *                   ,: ,                                      
              
                                                                                                                                                                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          $ *  	   	                          
    	                                                                                                                                                                            -     
	 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               	 
	        -               *        	                          	 	                                                               
        	 &                                                                                                      2     
	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
        6                *                   

 
       
 	 
            
          	   	                                                                                                                                                                          
"     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	          "               !^                               "       
       	                                                                                	                                                                                                     =   	 
  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
            @                                                        +                         		                                                    z                                                                                                                     9 	  	 
 
	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    	       <                                                                
        
    
                                                          ""        
                                                                                                  	  2     
 	  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    	          5            O                                                                  
  " ?    
   
    	    	                                             

                                                                                                               'H       	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       	            &M ѝ           
                                                                           % 1     
   
  	                                                      	                                                                                            0 !       
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    " 2         7                                                                                       	   #
     
	                                               $&%y                                                                                                             	  0K   	  
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
  	      ,M 	                                                                                                        
        %% =?8                                            %&      
                                                                                                 1I       	 	 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	 	 	     	 ,K                                                                                                                 
 "&$	                                                                                                                                                      ,?      	 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              	 	      (A                                                                                                                  
 	    


                                             #&)                                                                                                         @X                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      8W                                                                                                                  &)*                                                  #$$l                                                                                                    "/  (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ) /                                                                                                                 HB=                                                $# $   
  (                            	                                  BV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               9V                                     	                               $       $
                                                        ++-q                                                                                             0?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          (?                                                                                                                                                                  	.*:                    
                                       >P                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      5N                                          
                     !JJF                                                        $$#                                                                                  5E                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    -D                                                                                             "#                                                               	774    
  #                                                       
  <L                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    3J 	                                                              "        	  DCC                                                                '&%                                                                       5D 	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          .D                                                                                                                                                     95U⩘   
  3      
  	                                     9H                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   1F к                                                      
       )                                                                        ++)                                                             6C 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 -C                                                                         JFS                                                                        	CBE     ( %  
                                          8F                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      1E                                          
  % *      & GFK                                                                                 $%!#&                                                +7 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              %6                                              
                                                                                                
=A@    . %          	                          :F                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 1F                               	         $ /     HNH                                                                                        .,.98; 
                                                  #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        #                                                    #%&                                                                                               	?=C'       *+                                   5?                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ->                                                   HGT                                                                                                 GEA      	 
                               -6                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            '5                                  
        "$$
                                                                                                      540?29     5 %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         % 6     &$"%NGQ                                                                                                        
+                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 
                         
  	   '2&DEC                                                                                                                    I\B$  	
 0   %                 &(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            !)     	                
  )      1@E>                                                                                                                           -+/y*       9% % 	             
 
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     	  	                 
    
       &&&DDD                                                                                                                             444}$
    #    )               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	                   
+13!                                                                                                                                      ??=z%	          '  	     
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         	          $ 
         '%%%##                                                                                                                                           FFG#
        #                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   	           9       ,('"                                                                                                                                      J       
   %                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           	     
  .-5     GGG                                                                                                                                             <;: "         
 +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                	      %*                                                                                                                                              	   J&s           ! 
    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              	           +*%     GGG                                                                                                                                                      
ILH "澼
   	  
         

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	      
      
 *&-                                                                                                                                                                                9>8 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
  
  .,7                                                                                                                                                                                          cda
	
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
   
.-%	                                                                                                                                                                                                        

cpHн	


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    	                           
  


*'			                                                                                                                                                                                                                
`a\$                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  $%!                                                                                                                                                                                                                               	]m3                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

                                                                                                                                                                                                                                                 

[_a                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   mtt	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              #hkR    IENDB`PNG

   
IHDR         (-S   PLTE                     			,,,999EEERRR___lllxxx𠠤>  ]  |          $$HHll> ] |( 2 < F U m$Hlʹ>* ]? |T i ~ ٓ  $Hlڐ>> ]] ||     $Hl*> ?] T| i ~   $Hl> ] (| 2 < F U m$Hl >  ]  |         $$HHll > ] |( 2 < F U$mHl >* ]? |T i ~ ٓ $Hlΐڴ >> ]] ||    $Hl *> ?] T| i ~  $Hl > ] (| 2 < F U$mHl  >  ]  |        $$HHll > ]( |2 < F U m$Hlʹ* >? ]T |i ~  ٪ $Hlڐ> >] ]| |    $Hl> *] ?| T i ~  $Hl> ] | ( 2 < F U$mHl   tRNS @f   0IDATxcd@0<,,`
.$@+X   /,_$    IENDB`#!/bin/sh

echo $0
INSTALLDIR=$(dirname $0)
WORKSPACE=`pwd`
cd ${INSTALLDIR}

java -classpath 'lib/*' -Dorg.bouncycastle.asn1.allow_unsafe_integer=true -Djava.library.path=./lib -Dscdp.workspace=${WORKSPACE} de.cardcontact.scdp.engine.ScriptRunner $*

RC=$?
cd ${WORKSPACE}
exit ${RC}
/**
 *  ---------
 * |.##> <##.|  SmartCard-HSM Support Scripts
 * |#       #|
 * |#       #|  Copyright (c) 2011-2015 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 * Consult your license package for usage terms and conditions.
 *
 * @fileoverview Generate a key pair suitable for public key authentication
 */

var File = require("scsh/file/File").File;
var CVC = require("scsh/eac/CVC").CVC;
var PublicKeyReference = require('scsh/eac/PublicKeyReference').PublicKeyReference;
var SmartCardHSM = require("scsh/sc-hsm/SmartCardHSM").SmartCardHSM;
var SmartCardHSMInitializer = require("scsh/sc-hsm/SmartCardHSM").SmartCardHSMInitializer;
var SmartCardHSMKeySpecGenerator = require("scsh/sc-hsm/SmartCardHSM").SmartCardHSMKeySpecGenerator;
var CAConnection = require("scsh/sc-hsm/CAConnection").CAConnection;
var ManagePKA = require("scsh/sc-hsm/ManagePKA").ManagePKA;
var HSMKeyStore = require("scsh/sc-hsm/HSMKeyStore").HSMKeyStore;
var PKCS10Generator = require("scsh/x509/PKCS10Generator").PKCS10Generator;
var PKIXCommon = require("scsh/x509/PKIXCommon").PKIXCommon;
var DKEK = require("scsh/sc-hsm/DKEK").DKEK;
var PaperKeyEncoding = require("scsh/sc-hsm/PaperKeyEncoding").PaperKeyEncoding;



function KeyManager(card) {
	this.crypto = new Crypto();
	this.lastfile = GPSystem.mapFilename("", GPSystem.USR);
	this.initializedWithTransportPIN = false;

	this.loadPlugins();

	Card.setCardEventListener(this);
	this.cardRemovedListener = {};

	if (card) {
		this.setCard(card);
	}
}

KeyManager.INITIALIZE = "Initialize Device";
KeyManager.GENERATE_PIN = "Generate Random PINs";
KeyManager.GENERATE_RSA_KEY = "Generate RSA Key";
KeyManager.ENTER_KEY_LABEL = "Enter Key Label";
KeyManager.ENTER_KEY_REFERENCE = "Enter Key Reference";
KeyManager.GENERATE_ECC_KEY = "Generate ECC Key";
KeyManager.IMPORT_PKCS12 = "Import from PKCS#12 (Old)";
KeyManager.SELECT_KEY_SIZE = "Select Key Size";
KeyManager.SELECT_CURVE = "Select Curve";
KeyManager.DELETE_KEY = "Delete Key";
KeyManager.CREATE_DKEK_SHARE = "Create DKEK Share";
KeyManager.IMPORT_DKEK_SHARE = "Import DKEK Share";
KeyManager.GENERATE_AES_KEY = "Generate AES Key";
KeyManager.RSA_ALGORITHM_LIST = "<html><p>Possible algorithms for RSA key</p><ul><li>RSA_RAW(20)</li><li>RSA_DECRYPT_RAW(21)</li><li>RSA_DECRYPT_V15(22)</li><li>RSA_DECRYPT_OAEP(23)</li><li>RSA_V15_SHA1(31)</li><li>RSA_V15_SHA256(33)</li><li>RSA_V15_SHA512(35)</li><li>RSA_PSS(40)</li><li>RSA_PSS_SHA1(41)</li><li>RSA_PSS_SHA256(43)</li><li>RSA_PSS_SHA512(45)</li><li>DEFAULT_SIGN(A0)</li><li>WRAP(92)</li></ul>" +
				"<p>Enter as comma separated list of hexadecimal codes or names</p><p>Leave empty to allow all algorithms</p></html>";
KeyManager.ECC_ALGORITHM_LIST = "<html><p>Possible algorithms for ECC key</p><ul><li>ECDSA(70)</li><li>ECDSA_SHA1(71)</li><li>ECDSA_SHA1(72)</li><li>ECDSA_SHA256(73)</li><li>ECDSA_SHA384(74)</li><li>ECDSA_SHA512(75)</li><li>ECDH(80)</li><li>ECDH_AUTPUK(83)</li><li>ECDH_XKEK(84)</li><li>DEFAULT_SIGN(A0)</li><li>WRAP(92)</li></ul>" +
				"<p>Enter as comma separated list of hexadecimal codes or names</p><p>Leave empty to allow all algorithms</p></html>";
KeyManager.AES_ALGORITHM_LIST = "<html><p>Possible algorithms for AES key</p><ul><li>CBC_ENC(10)</li><li>CBC_DEC(11)</li><li>CMAC(18)</li><li>WRAP(92)</li><li>REPLACE(94)</li><li>DERIVE_SP800_56C(99)</li></ul>" +
				"<p>Enter as comma separated list of hexadecimal codes or names</p></html>";

KeyManager.BUG31 =	"<html><p>Version 3.1 of the SmartCard-HSM has a bug that prevents importing a RSA or ECC key with algorithm list.</p><br>" +
			"<p>A key generated with algorithm list can be exported, but the import into a SmartCard-HSM with 3.1 will fail.</p>" +
			"<p>Suggested workaround is to leave the algorithm list empty for keys that shall be exported.</p><br>" +
			"<p>The bug has been fixed in 3.2. A key exported with algorithm list in 3.1 can be imported in 3.2.</p></html>";

KeyManager.BUGAES =	"<html><p>Version 3.1 and 3.2 of the SmartCard-HSM have a bug that causes weak AES keys with little to no entropy (see #172 in CDN).</p><br>" +
			"<p>Do not use this version in a productive environment for generating AES keys. The bug has been fixed in 3.3.</p></html>";

KeyManager.BUGWRAP =	"<html><p>Versions before 3.6 and 4.1 of the SmartCard-HSM have a bug that prevents the export of<br>" +
			"3072 or 4096 bit RSA keys if an algorithm list is defined (see #240 and #241 in CDN).</p><br>" +
			"<p>We strongly recommend to update to the latest version before creating such a key.</p></html>";

KeyManager.GENERATING_KEY = "Generating key can take up to 60 seconds, please wait...";
KeyManager.GENERATING_KEY_DONE = "Key generated";
KeyManager.KEY_LABEL_EXISTS = "A key with that label does already exit";
KeyManager.KEY_REFERENCE_INVALID = "A key reference must be between 8 and 16 character long, typically with country code (2), mnemonic (1-9) and serial (5)";
KeyManager.INVALID_ALGORITHM_LIST = "Invalid algorithm list";

KeyManager.LOGIN_WITH_USER_PIN = "Login with User PIN";
KeyManager.LOGIN_WITH_USER_PIN_PAD = "Login with PIN PAD";
KeyManager.LOGIN_WITH_USER_BIO1 = "Login with Biometric Template 1";
KeyManager.LOGIN_WITH_USER_BIO2 = "Login with Biometric Template 2";
KeyManager.LOGOUT = "Logout";
KeyManager.ENTER_USER_PIN = "Enter User PIN";

KeyManager.USER_PIN = "User PIN";
KeyManager.TRANSPORT_PIN = "Transport PIN";
KeyManager.PUBLIC_KEY_AUTHENTICATION = "Public Key Authentication";
KeyManager.PUBLIC_KEY_AUTHENTICATION_OR_PIN = "Public Key Authentication or User PIN";
KeyManager.PUBLIC_KEY_AUTHENTICATION_AND_PIN = "Public Key Authentication and User PIN";
KeyManager.BIOMETRIC_MATCH_SOC = "Biometric Matching (SoC)";
KeyManager.BIOMETRIC_MATCH_SOC_OLD = "Biometric Matching (SoC-Old)";
KeyManager.BIOMETRIC_MATCH_NT = "Biometric Matching (NT)";

KeyManager.CHANGE_PIN = "Change User-PIN";
KeyManager.UNBLOCK_PIN = "Unblock User-PIN";
KeyManager.RESET_PIN = "Reset User-PIN";
KeyManager.CHANGE_SOPIN = "Change SO-PIN";
KeyManager.CHANGE_SOPIN_RANDOM = "Change SO-PIN to Random Value";

KeyManager.WITH_RRC = "Unblocking PIN with SO-PIN allowed";
KeyManager.WITH_RRC_PIN = "Resetting PIN with SO-PIN allowed";
KeyManager.WITHOUT_RRC = "Resetting and unblocking PIN with SO-PIN not allowed";

KeyManager.EXPORT_PUBLIC_KEY = "Export Public Key";
KeyManager.REGISTER_PUBLIC_KEY = "Register Public Key";
KeyManager.AUTHENTICATE_PUBLIC_KEY = "Authenticate with Public Key";
KeyManager.REPLACE_PUBLIC_KEY = "Replace Public Key";

KeyManager.EXPORT_KEY = "Wrap Key (and Certificate)";
KeyManager.IMPORT_KEY = "Unwrap Key (and Certificate)";

KeyManager.GENERATE_PKCS10 = "Generate PKCS#10 Request";
KeyManager.IMPORT_CERTIFICATE = "Import Certificate";
KeyManager.EXPORT_CERTIFICATE = "Export Certificate";
KeyManager.DUMP_CERTIFICATE = "Dump Certificate";
KeyManager.DELETE_CACERTIFICATE = "Delete CA Certificate";

KeyManager.IMPORT_DATAOBJECT = "Import Data Object";
KeyManager.EXPORT_DATAOBJECT = "Export Data Object";
KeyManager.DELETE_DATAOBJECT = "Delete Data Object";

KeyManager.IMPORT_AESKEY = "Import AES Key";

KeyManager.DKEK_SELECT = "Select Device Key Encryption scheme";
KeyManager.DKEK_NONE = "No DKEK";
KeyManager.DKEK_RANDOM_DKEK = "Randomly generated DKEK";
KeyManager.DKEK_SHARES = "DKEK Shares";
KeyManager.DKEK_NO_OF_SHARES = "Enter number of DKEK shares"
KeyManager.KEY_DOMAIN_LABEL = "Key Domain Label (Optional)";
KeyManager.DKEK_KEY_DOMAINS = "Key Domains";
KeyManager.DKEK_NO_OF_KEY_DOMAINS = "Enter number of key domains"

KeyManager.CREATE_DKEK_DOMAIN = "Create DKEK Key Domain";
KeyManager.CREATE_XKEK_DOMAIN = "Create XKEK Key Domain";
KeyManager.ASSOCIATE_XKEK_DOMAIN = "Associate XKEK Key Domain";
KeyManager.DELETE_KEY_DOMAIN = "Delete Key Domain";
KeyManager.DELETE_KEK = "Delete Key Encryption Key";
KeyManager.SIGN_KEY_DOMAIN_MEMBERSHIP = "Group Signer Operations";
KeyManager.CREATE_EXCHANGE_KEY = "Create Exchange Key";
KeyManager.DERIVE_XKEK = "Derive XKEK";

KeyManager.EXPORT_ID = "Export Device ID";
KeyManager.REMOTE_UPDATE = "Remote Update";

KeyManager.FIX_SECP521 = "Fix wrong key size";

KeyManager.SIGFORM_KDM = "Static key domain membership (>=3.4)";
KeyManager.SIGFORM_KDA = "Static key domain association (>=3.4)";
KeyManager.SIGFORM_KDM3 = "Key domain membership (<3.4)";

KeyManager.CURVES = [ "secp192r1", "secp256r1", "secp384r1", "secp521r1", "brainpoolP192r1", "brainpoolP224r1", "brainpoolP256r1", "brainpoolP256t1", "brainpoolP320r1", "brainpoolP384r1", "brainpoolP512r1", "secp192k1", "secp256k1" ];



KeyManager.prototype.detectPlugins = function(dir) {
//	print("dir: " + dir);
	var f = new File(dir);
	var l = f.list();
	for (var i = 0; i < l.length; i++) {
		if (l[i].search(/^\d\d\d-.*-plugin\.js$/) == 0) {
			var name = l[i];
//			print("Found : " + name);
			if (typeof(this.pluginMap[name]) == "undefined") {
				var p = { dir: dir, name: l[i] };
				this.plugins.push( p );
				this.pluginMap[name] = p;
			}
		}
	}
}



KeyManager.prototype.loadPlugins = function() {
	this.plugins = [];
	this.pluginMap = [];

	var udir = GPSystem.mapFilename("keymanager/plugins", GPSystem.USR);
	var sdir = GPSystem.mapFilename("keymanager/plugins", GPSystem.SYS);
	var cdir = GPSystem.mapFilename("plugins", GPSystem.CWD);

	if (cdir.equals(sdir)) {		// Run from Smart Card Shell
		this.detectPlugins(udir);
		this.detectPlugins(sdir);
	} else {
		this.detectPlugins(cdir);	// Run as copy in a workspace
	}

	this.plugins.sort( function(a,b) { return a.name.localeCompare(b.name) });

	for (var i = 0; i < this.plugins.length; i++) {
		var plugin = this.plugins[i];
//		print(plugin.name);

		var fn = plugin.dir + "/" + plugin.name;
		fn = fn.substr(0, fn.lastIndexOf("."));
//		print(fn);
		var exp = require(fn);
		plugin.instance = new exp.Plugin(this);
		GPSystem.trace("Loaded plug-in: " + plugin.instance);
	}
}



KeyManager.prototype.hasTokenManagementKey = function() {
	return this.managementToken && this.managementToken.tmk;
}



KeyManager.prototype.determineSOPIN = function(salt) {
	var soPIN = "3537363231383830";

	if (this.hasTokenManagementKey()) {
		this.kmksalt = salt;
		soPIN = this.managementToken.deriveSOPIN(this.id, this.kmksalt).toString(HEX)
	}

	this.devcfg = {
		soPIN : soPIN
	}
}



KeyManager.prototype.setCard = function(card) {
	this.sc = new SmartCardHSM(card);
	this.ks = new HSMKeyStore(this.sc);

	var devAutCert = this.sc.readBinary(SmartCardHSM.C_DevAut);
	this.certchain = SmartCardHSM.validateCertificateChain(this.crypto, devAutCert);

	if (this.certchain == null) {
		throw new GPError("KeyManager", GPError.CRYPTO_FAILED, 0, "Device authentication failed");
	}

//	this.sc.openSecureChannel(this.crypto, this.certchain.publicKey);

	print("");

	var str = "";
	var mem = this.sc.getFreeMemory();
	if (mem > -1) {
		var str = "Free memory " + mem + " byte";
		if (mem == 32767) {
			str += " (at least)";
		}
	}

	if (typeof(this.sc.major) != "undefined") {
		print("SmartCard-HSM " + this.sc.getVersionInfo() + "          " + str);
	}

	print("Issuer Certificate : " + this.certchain.dica);
	print("Device Certificate : " + this.certchain.devicecert);
	print("Default Key Domain : " + this.certchain.publicKey.getComponent(Key.ECC_QX).toString(HEX));

	this.provisioningURL = this.sc.getProvisioningURL();
	if (this.provisioningURL) {
		print("Provisioning URL   : " + this.provisioningURL);
	}

	var tmkkcv = this.sc.getTokenManagementKeyKCV();
	if (tmkkcv) {
		var str = tmkkcv.toString(HEX);
		var kmksalt = this.sc.getTokenManagementKeySalt();
		if (kmksalt) {
			str += " (" + kmksalt.toString(HEX) + ")";
		}
		print("Token Managmnt Key : " + str);
	}

	// Some cards have a CHR in the device certificate that exceeds 16 bytes
	var chr = this.certchain.devicecert.getCHR();
	if (chr.toString().length > 16) {
		this.chr = new PublicKeyReference(chr.toString().substr(0, 16));
	} else {
		this.chr = chr;
	}

	if (this.certchain.dica) {
		this.id = "/" + this.certchain.dica.getCAR().getHolder() + "/" + this.certchain.dica.getCHR().getHolder() + "/" + chr.getHolder();
	}

	this.managePKA = new ManagePKA(this.sc, chr.getBytes());

	this.profileName = GPSystem.mapFilename(chr.getHolder() + ".profile.json", GPSystem.USR);

	this.hasProfile = false;			// We have a profile file for this device
	this.readProfile();

	if (!this.hasProfile) {
		this.determineSOPIN(kmksalt);
	}

	this.authenticationState = this.sc.queryUserPINStatus();

	this.createOutline();
}



KeyManager.prototype.promptAutoInsert = function(readerName) {
	if (!this.autoInsert) {
		if (Dialog.prompt("Automatically access card with Key Manager ?")) {
			this.autoInsert = true;
		} else {
			Card.setCardEventListener();		// Remove event listener
			return false;
		}
	}
	return true;
}



KeyManager.prototype.cardInserted = function(readerName) {
	if (!this.promptAutoInsert()) {
		return;
	}

	GPSystem.trace("Inserted: " + readerName);
	var card = new Card(readerName);
	this.setCard(card);
}



KeyManager.prototype.cardRemoved = function(readerName) {
	GPSystem.trace("Removed: " + readerName);

	var listener = this.cardRemovedListener[readerName];
	if (listener) {
		delete this.cardRemovedListener[readerName];
		listener.cardRemoved();
	} else {
		this.view = new OutlineNode("Please insert card");
		this.view.show();
	}
}



KeyManager.prototype.setCardRemovedListener = function(readerName, listener) {
	if (listener) {
		this.cardRemovedListener[readerName] = listener;
	} else {
		delete this.cardRemovedListener[readerName];
	}
}



KeyManager.prototype.populateAuthentication = function() {
	this.authview = new OutlineNode("User Authentication");
	this.authview.setUserObject(this);
	this.view.insert(this.authview);

	var pinsw = this.sc.queryUserPINStatus();
	this.updateAuthenticationStatus(pinsw);

	this.populatePKAStatus();

	this.sopinview = new OutlineNode("SO-PIN");
	this.sopinview.setUserObject(this);
	this.view.insert(this.sopinview);

	this.updateSOPINStatus();

	pinsw = this.sc.queryPINStatus(0x85);
	if ((pinsw != 0x6A88) && (pinsw != 0x6A86)) {
		this.bio1view = new OutlineNode(SmartCardHSM.describePINStatus(pinsw, "Biometric Feature 1"));
		this.bio1view.setUserObject(this);
		this.bio1view.setContextMenu( [ KeyManager.LOGIN_WITH_USER_BIO1, KeyManager.LOGOUT ] );
		this.view.insert(this.bio1view);
	}

	pinsw = this.sc.queryPINStatus(0x86);
	if ((pinsw != 0x6A88) && (pinsw != 0x6A86)) {
		this.bio2view = new OutlineNode(SmartCardHSM.describePINStatus(pinsw, "Biometric Feature 2"));
		this.bio2view.setUserObject(this);
		this.bio2view.setContextMenu( [ KeyManager.LOGIN_WITH_USER_BIO2, KeyManager.LOGOUT ] );
		this.view.insert(this.bio2view);
	}

}



KeyManager.prototype.changedAuthenticationStatus = function(sw) {
	if (((this.authenticationState == 0x9000) && (sw != 0x9000)) ||
	    ((this.authenticationState != 0x9000) && (sw == 0x9000))) {
		this.authenticationState = sw;
		this.createOutline();
	} else {
		this.authenticationState = sw;
		this.updateAuthenticationStatus(sw);
	}
}



KeyManager.prototype.populatePKAStatus = function() {
	if (this.managePKA.isActive()) {
		this.pkaview = new OutlineNode("Public Key Authentication");
		this.pkaview.setUserObject(this);

		this.view.insert(this.pkaview);

		if (this.managePKA.canEnumeratePublicKeys()) {
			for (var i = 0; i < this.managePKA.getNumberOfPublicKeys(); i++) {
				var node = new OutlineNode("");
				node.setUserObject(this);
				node.id = i;
				node.setContextMenu( [ KeyManager.REPLACE_PUBLIC_KEY ] );
				this.pkaview.insert(node);
			}
		}
		this.updatePKAStatus();
	}
}



KeyManager.prototype.updatePKAStatus = function() {
	var str = this.managePKA.describeStatus();
	if (this.managePKA.getMissingPublicKeys()) {
		var contextMenu = [ KeyManager.REGISTER_PUBLIC_KEY ];
	} else {
		var contextMenu = [ KeyManager.AUTHENTICATE_PUBLIC_KEY, KeyManager.LOGOUT ];
	}
	this.pkaview.setContextMenu(contextMenu);
	this.pkaview.setLabel(str);

	if (this.pkaview.childs.length > 0) {
		var pklist = this.managePKA.enumeratePublicKeys();
		for (var i = 0; i < pklist.length; i++) {
			var pk = pklist[i];
			switch(pk.status) {
				case ManagePKA.KEY_PRESENT:
					var str = pk.chr.getHolder().toString(ASCII);
					break;
				case ManagePKA.KEY_NOT_FOUND:
					var str = "No key registered yet";
					break;
				case ManagePKA.KEY_ALREADY_AUTHENTICATED:
					var str = pk.chr.getHolder().toString(ASCII) + " (authenticated)";
					break;
			}

			var node = this.pkaview.childs[i];
			node.setLabel(str);
		}
	}
}



KeyManager.prototype.updateAuthenticationStatus = function(sw) {
	var str = SmartCardHSM.describePINStatus(sw, "User PIN");

	if (sw == 0x9000) {
		var contextMenu = [ KeyManager.LOGOUT, KeyManager.CHANGE_PIN ];
	} else if (sw == 0x6A88) {
		var contextMenu = [ ];
	} else if (sw == 0x6983) {
		var contextMenu = [ ];
		if (this.sc.isResetRetryCounterEnabled()) {
			contextMenu.push(KeyManager.UNBLOCK_PIN);
			if (this.sc.isPINResetEnabled()) {
				contextMenu.push(KeyManager.RESET_PIN);
			}
		}
	} else {
		var contextMenu = [ KeyManager.LOGIN_WITH_USER_PIN,
					KeyManager.LOGIN_WITH_USER_PIN_PAD,
					KeyManager.CHANGE_PIN,
					KeyManager.UNBLOCK_PIN,
					KeyManager.RESET_PIN,
					KeyManager.LOGOUT
 					];
	}

	this.authview.setContextMenu(contextMenu);
	this.authview.setLabel(str);
}



KeyManager.prototype.updateSOPINStatus = function() {
	var sopinsw = this.sc.queryInitializationCodeStatus();
	var str = SmartCardHSM.describePINStatus(sopinsw, "SO PIN");
	this.sopinview.setContextMenu([ KeyManager.CHANGE_SOPIN ]);
	this.sopinview.setLabel(str);
}



KeyManager.prototype.updateBioMatchStatus = function() {
	if (this.bio1view) {
		var sw = this.sc.queryPINStatus(0x85);
		var str = SmartCardHSM.describePINStatus(sw, "Biometric Feature 1");
		this.bio1view.setLabel(str);
	}

	if (this.bio2view) {
		var sw = this.sc.queryPINStatus(0x86);
		var str = SmartCardHSM.describePINStatus(sw, "Biometric Feature 2");
		this.bio2view.setLabel(str);
	}
}



KeyManager.prototype.populateKeyDomains = function() {
	var kdid = 0;
	this.keydomains = [];

	do	{
		var status = this.sc.queryKeyDomainStatus(kdid);
		if ((status.sw == 0x6D00) || (status.sw == 0x6A86)) {
			return;
		}

		status.label = this.sc.getKeyDomainLabel(kdid);

		var node = new OutlineNode("Key Domain");
		node.kdid = kdid;
		node.setUserObject(this);
		this.view.insert(node);
		var dom = { kdid: kdid, status: status, node: node };
		this.keydomains.push(dom);
		this.updateKeyDomainStatus(kdid, status);

		for (var i = 0; i < this.plugins.length; i++) {
			var plugin = this.plugins[i].instance;
			if (plugin.addKeyDomainInformation) {
				plugin.addKeyDomainInformation(dom);
			}
		}

		kdid++;
	} while ((status.sw == 0x9000) || (status.sw == 0x6A88));
}



KeyManager.prototype.updateKeyDomainStatus = function(kdid, status) {
	var dom = this.keydomains[kdid];
	var node = dom.node;
	dom.status = status;

	var contextMenu = [ ];

	var str;
	if (status.sw == 0x6A88) {
		str = "Key domain " + kdid + " not created";
		contextMenu.push( KeyManager.CREATE_DKEK_DOMAIN );
		contextMenu.push( KeyManager.CREATE_XKEK_DOMAIN );
	} else {
		if (this.authenticationState == 0x9000) {
			var contextMenu = [ KeyManager.GENERATE_RSA_KEY, KeyManager.GENERATE_ECC_KEY, KeyManager.GENERATE_AES_KEY ];
		}

		if (typeof(status.keyDomain) != "undefined" ) {
			str = "XKEK with KCV " + status.kcv.toString(HEX) + " in key domain " + status.keyDomain.left(8).toString(HEX);
			contextMenu.push( KeyManager.CREATE_EXCHANGE_KEY, KeyManager.ASSOCIATE_XKEK_DOMAIN );
		} else {
			if (status.outstanding == 0) {
				str = "DKEK with KCV " + status.kcv.toString(HEX);
			} else {
				str = "DKEK set-up in progress with " + status.outstanding + " of " + status.shares + " shares missing";
				contextMenu.push( KeyManager.IMPORT_DKEK_SHARE );
			}
		}

		if (status.label) {
			str += " (" + status.label + ")";
		}

		contextMenu.push( KeyManager.DELETE_KEK );
		contextMenu.push( KeyManager.DELETE_KEY_DOMAIN );
	}


	for (var i = 0; i < this.plugins.length; i++) {
		var plugin = this.plugins[i].instance;
		if (plugin.addKeyDomainContextMenu) {
			plugin.addKeyDomainContextMenu(contextMenu, this.authenticationState, dom);
		}
	}

	dom.node.setContextMenu(contextMenu);
	dom.node.setLabel(str);
}



KeyManager.prototype.createDKEKDomain = function(node) {
	var shares = 0;
	var str = Dialog.prompt(KeyManager.DKEK_NO_OF_SHARES, "1");
	if (str == null) {
		return;
	}

	var shares = parseInt(str);

	var str = Dialog.prompt(KeyManager.KEY_DOMAIN_LABEL, "");
	if (str == null) {
		return;
	}

	var status = this.sc.createDKEKKeyDomain(node.kdid, shares, str);
	if (status.sw == 0x9000) {
		this.updateKeyDomainStatus(node.kdid, status);
	} else {
		print("Creating DKEK key domain failed with SW1/2=" + status.sw.toString(HEX));
	}
}



KeyManager.prototype.createXKEKDomain = function(node) {
	var fname = Dialog.prompt("Enter name for file containing key domain membership", this.lastfile, null, "*.kdm");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var chain = f.readAllAsBinary();
	f.close();

	if (chain.byteAt(0) != 0x30) {
		throw new GPError("KeyManager", GPError.INVALID_DATA, 0, "File does not contain a key domain membership");
	}

	var a = new ASN1(chain);
//	print(a);
	var oid = new ByteString("CardContact 4 2 1", OID);
	assert(a.get(0).value.equals(oid), "Invalid file format");
	var groupkey = new CVC(a.find(0x63).get(0));
	var devcert = new CVC(a.find(0x62).get(0));
	var dicacert = new CVC(a.find(0x61).get(0));
	var kdm = a.find(0x53);
	if (kdm == null) {
		var kdm = a.find(0x54).getBytes();
	} else {
		kdm = kdm.getBytes();
	}

	var root = SmartCardHSM.rootCerts[dicacert.getCAR()];
	assert(dicacert.verifyWithCVC(this.crypto, root));
	assert(devcert.verifyWith(this.crypto, dicacert.getPublicKey(root.getPublicKey()), dicacert.getPublicKeyOID()));
	assert(groupkey.verifyATWith(this.crypto, devcert.getPublicKey(root.getPublicKey()), devcert.getPublicKeyOID()));

	this.lastfile = fname;

	this.sc.verifyCertificate(dicacert);
	this.sc.verifyCertificate(devcert);

	var status = this.sc.createXKEKKeyDomain(node.kdid, groupkey, kdm);

	if (status.sw == 0x9000) {
		this.updateKeyDomainStatus(node.kdid, status);
	} else {
		print("Creating XKEK key domain failed with SW1/2=" + status.sw.toString(HEX));
	}
}



KeyManager.prototype.associateXKEKDomain = function(node) {
	var fname = Dialog.prompt("Enter name for file containing key domain association", this.lastfile, null, "*.kda");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var chain = f.readAllAsBinary();
	f.close();

	if (chain.byteAt(0) != 0x30) {
		throw new GPError("KeyManager", GPError.INVALID_DATA, 0, "File does not contain a key domain association");
	}

	var a = new ASN1(chain);
//	print(a);
	var oid = new ByteString("CardContact 4 4 1", OID);
	assert(a.get(0).value.equals(oid), "Invalid file format");
	var groupkey = new CVC(a.find(0x63).get(0));
	var devcert = new CVC(a.find(0x62).get(0));
	var dicacert = new CVC(a.find(0x61).get(0));
	var assdomainuid = a.find(0x51).getBytes();
	var kda = a.find(0x56).getBytes();

	var root = SmartCardHSM.rootCerts[dicacert.getCAR()];
	assert(dicacert.verifyWithCVC(this.crypto, root));
	assert(devcert.verifyWith(this.crypto, dicacert.getPublicKey(root.getPublicKey()), dicacert.getPublicKeyOID()));
	assert(groupkey.verifyATWith(this.crypto, devcert.getPublicKey(root.getPublicKey()), devcert.getPublicKeyOID()));

	this.lastfile = fname;

	this.sc.verifyCertificate(dicacert);
	this.sc.verifyCertificate(devcert);

	var status = this.sc.associateXKEKKeyDomain(node.kdid, groupkey, assdomainuid, kda);

	if (status.sw == 0x9000) {
		this.updateKeyDomainStatus(node.kdid, status);
		print("Association established");
	} else {
		print("Associating XKEK key domain failed with SW1/2=" + status.sw.toString(HEX));
	}
}



KeyManager.prototype.groupSignerOperation = function(node) {
	var sigform = [ KeyManager.SIGFORM_KDM, KeyManager.SIGFORM_KDA, KeyManager.SIGFORM_KDM3 ];
	var format = Dialog.prompt("Select signature format", sigform[0], sigform);

	if (format == null) {
		return;
	}

	if (format == KeyManager.SIGFORM_KDA) {
		this.signKeyDomainAssociation(node, format);
	} else {
		this.signKeyDomainMembership(node, format);
	}
}



KeyManager.prototype.signKeyDomainMembership = function(node, format) {

	var fname = Dialog.prompt("Enter file name for device id", this.lastfile, null, "*.id");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var chain = f.readAllAsBinary();
	f.close();

	if (chain.byteAt(0) != 0x30) {
		throw new GPError("KeyManager", GPError.INVALID_DATA, 0, "File does not contain a device id");
	}

	var a = new ASN1(chain);
//	print(a);
	var oid = new ByteString("CardContact 4 1 1", OID);
	assert(a.get(0).value.equals(oid), "Invalid file format");
	var devcert = new CVC(a.find(0x62).get(0));
	var dicacert = new CVC(a.find(0x61).get(0));

	var root = SmartCardHSM.rootCerts[dicacert.getCAR()];
	assert(dicacert.verifyWithCVC(this.crypto, root));
	assert(devcert.verifyWith(this.crypto, dicacert.getPublicKey(root.getPublicKey()), dicacert.getPublicKeyOID()));

	this.lastfile = fname;

	var cert = new CVC(node.cert);
	var pk = cert.getPublicKey();
	var domainuid = pk.getComponent(Key.ECC_QX);

	var ok = Dialog.prompt("Add device " + devcert.getCHR() + " to key domain " + domainuid.toString(HEX) + " (Cancel for No) ?");
	if (ok == null) {
		print("User abort");
		return;
	}

	var key = node.parent.key;

	if (format == KeyManager.SIGFORM_KDM3) {
		var input = devcert.getPublicKey().getComponent(Key.ECC_QX);
	} else {
		var input = ByteString.valueOf(0x54).concat(devcert.getPublicKey().getComponent(Key.ECC_QX));
	}

	print("Input : " + input);

	var crypto = this.sc.getCrypto();

	var signature = crypto.sign(key, Crypto.ECDSA_SHA256, input);
	signature = CVC.unwrapSignature(signature, key.getSize() + 7 >> 3);

	if (format == KeyManager.SIGFORM_KDM3) {
		signature = new ASN1(0x53, signature);
	} else {
		signature = new ASN1(0x54, signature);
	}

	var dica;
	var devicecert;
	if (node.cvclist.length == 1) {
		dica = this.certchain.dica;
		devicecert = this.certchain.devicecert;
	} else {
		dica = node.cvclist[2];
		devicecert = node.cvclist[1];
	}

	var asn = new ASN1(ASN1.SEQUENCE,
			new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("CardContact 4 2 1", OID)),
			new ASN1(0x61, dica.getASN1()),
			new ASN1(0x62, devicecert.getASN1()),
			new ASN1(0x63, cert.getASN1()),
			signature
	);

	print(asn);

	var fname = fname.substr(0, fname.lastIndexOf(".")) + "-" + domainuid.toString(HEX) + ".kdm";

	var f = new File(fname);
	f.writeAll(asn.getBytes());
	f.close();
	print("Key Domain Membership written to " + fname);
}



KeyManager.prototype.signKeyDomainAssociation = function(node, format) {

	var fname = Dialog.prompt("Enter file name for any key domain membership", this.lastfile, null, "*.kdm");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var chain = f.readAllAsBinary();
	f.close();

	if (chain.byteAt(0) != 0x30) {
		throw new GPError("KeyManager", GPError.INVALID_DATA, 0, "File does not contain a device id");
	}

	var a = new ASN1(chain);
//	print(a);
	var oid = new ByteString("CardContact 4 2 1", OID);
	assert(a.get(0).value.equals(oid), "Invalid file format");
	var gscert = new CVC(a.find(0x63).get(0));
	var devcert = new CVC(a.find(0x62).get(0));
	var dicacert = new CVC(a.find(0x61).get(0));
	var root = SmartCardHSM.rootCerts[dicacert.getCAR()];
	assert(dicacert.verifyWithCVC(this.crypto, root));
	assert(devcert.verifyWith(this.crypto, dicacert.getPublicKey(root.getPublicKey()), dicacert.getPublicKeyOID()));
	assert(gscert.verifyATWith(this.crypto, devcert.getPublicKey(root.getPublicKey()), devcert.getPublicKeyOID()));

	this.lastfile = fname;

	var cert = new CVC(node.cert);
	var pk = cert.getPublicKey();
	var domainuid = pk.getComponent(Key.ECC_QX);
	var pk = gscert.getPublicKey();
	var assdomainuid = pk.getComponent(Key.ECC_QX);

	var ok = Dialog.prompt("Associate key domain " + assdomainuid.toString(HEX) + " with this key domain " + domainuid.toString(HEX) + " (Cancel for No) ?");
	if (ok == null) {
		print("User abort");
		return;
	}

	var key = node.parent.key;

	var input = ByteString.valueOf(0x56).concat(assdomainuid);

	print("Input : " + input);

	var crypto = this.sc.getCrypto();

	var signature = crypto.sign(key, Crypto.ECDSA_SHA256, input);
	signature = CVC.unwrapSignature(signature, key.getSize() + 7 >> 3);

	signature = new ASN1(0x56, signature);

	var dica;
	var devicecert;
	if (node.cvclist.length == 1) {
		dica = this.certchain.dica;
		devicecert = this.certchain.devicecert;
	} else {
		dica = node.cvclist[2];
		devicecert = node.cvclist[1];
	}

	var asn = new ASN1(ASN1.SEQUENCE,
			new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("CardContact 4 4 1", OID)),
			new ASN1(0x61, dica.getASN1()),
			new ASN1(0x62, devicecert.getASN1()),
			new ASN1(0x63, cert.getASN1()),
			new ASN1(0x51, assdomainuid),
			signature
	);

	print(asn);

	var fname = fname.substr(0, fname.lastIndexOf("/") + 1) + assdomainuid.toString(HEX) + "-" + domainuid.toString(HEX) + ".kda";

	var f = new File(fname);
	f.writeAll(asn.getBytes());
	f.close();
	print("Key Domain Association written to " + fname);
}



KeyManager.prototype.createExchangeKey = function(node) {
	var kdid = node.kdid;

	var dom = new Key();
	dom.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));

	var label = Dialog.prompt(KeyManager.ENTER_KEY_LABEL, "");
	if (label == null) {
		return;
	}

	if (this.sc.getKey(label)) {
		Dialog.prompt(KeyManager.KEY_LABEL_EXISTS);
		return;
	}

	var spec = new SmartCardHSMKeySpecGenerator(Crypto.EC, dom);

	spec.setKeyDomain(kdid);
	spec.setAlgorithms(ByteString.valueOf(SmartCardHSM.ALG_ECDHXKEK));
	spec.setCHR(this.chr);
	spec.setInnerCAR(this.chr);

	print(KeyManager.GENERATING_KEY);
	var req = this.ks.generateKeyPair(label, spec);
	this.ks.storeEndEntityCertificate(label, req);

	print(KeyManager.GENERATING_KEY_DONE);
	this.createOutline();
}



KeyManager.prototype.deriveXKEK = function(node) {
	var fname = Dialog.prompt("Enter name for file containing peer public key", this.lastfile, null, "*.pka");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var chain = f.readAllAsBinary();
	f.close();

	if (chain.byteAt(0) != 0x30) {
		throw new GPError("KeyManager", GPError.INVALID_DATA, 0, "File does not contain an authenticated public key");
	}

	var a = new ASN1(chain);
	print(a);
	var oid = new ByteString("CardContact 4 3 1", OID);
	assert(a.get(0).value.equals(oid), "Invalid file format");
	var peerkey = new CVC(a.find(0x63).get(0));
	var devcert = new CVC(a.find(0x62).get(0));
	var dicacert = new CVC(a.find(0x61).get(0));

	var root = SmartCardHSM.rootCerts[dicacert.getCAR()];
	assert(dicacert.verifyWithCVC(this.crypto, root));
	assert(devcert.verifyWith(this.crypto, dicacert.getPublicKey(root.getPublicKey()), dicacert.getPublicKeyOID()));
	assert(peerkey.verifyATWith(this.crypto, devcert.getPublicKey(root.getPublicKey()), devcert.getPublicKeyOID()));

	this.lastfile = fname;

	this.sc.verifyCertificate(dicacert);
	this.sc.verifyCertificate(devcert);

	this.sc.deriveXKEK(node.parent.key.getId(), peerkey, new ByteString("DerivationParam", ASCII));

	var status = this.sc.queryKeyDomainStatus(node.parent.parent.kdid);
	this.updateKeyDomainStatus(node.parent.parent.kdid, status);
}



KeyManager.prototype.deleteKEK = function(node) {
	var status = this.sc.deleteKEK(node.kdid);
	if (status.sw == 0x9000) {
		this.updateKeyDomainStatus(node.kdid, status);
	} else {
		print("Deleting KEK failed with SW1/2=" + status.sw.toString(HEX));
	}
}



KeyManager.prototype.deleteDomain = function(node) {
	var status = this.sc.deleteKeyDomain(node.kdid);
	this.updateKeyDomainStatus(node.kdid, { sw: 0x6A88 });

	for (var i = 0; i < this.plugins.length; i++) {
		var plugin = this.plugins[i].instance;
		if (plugin.deleteKeyDomain) {
			plugin.deleteKeyDomain(node);
		}
	}
}



KeyManager.prototype.login = function() {
	var pin = Dialog.prompt(KeyManager.ENTER_USER_PIN, this.devcfg.userPIN ? this.devcfg.userPIN : "*");
	if (pin == null) {
		return;
	}

	var sw = this.sc.verifyUserPIN(new ByteString(pin, ASCII));

	if (sw == 0x6700) {
		print("Wrong PIN length, try again");
	} else {
		this.changedAuthenticationStatus(sw);
	}
}



KeyManager.prototype.loginPinPAD = function() {
	var cs = this.sc.getNativeCardService();
	cs.useClassThreePinPad(true);

	var sw = this.sc.verifyUserPIN();
	this.changedAuthenticationStatus(sw);
}



KeyManager.prototype.loginBioMatch = function(p2) {
	this.sc.card.sendSecMsgApdu(Card.ALL, 0x80, 0x20, 0x00, p2, new ByteString("7F2400", HEX));
//	this.sc.card.sendSecMsgApdu(Card.ALL, 0x80, 0x20, 0x00, p2, new ByteString("7F 2E 81 93 81 81 90 24 00 5F 15 08 61 07 27 68 17 2E 40 12 3D 40 33 3F 78 3E 48 98 4B 4A 76 1F 50 A1 44 5C B5 0F 5D 48 3A 5E 74 2D 5F 73 16 60 6F 07 62 4C 00 63 6F 27 63 72 63 64 B3 4A 69 95 48 73 B4 31 7E 70 14 88 91 19 8C 8E 2E 8E 6F 35 96 71 2B 97 6E 01 98 77 62 99 77 4B 9A 76 3D 9B 74 10 9E 55 19 A3 92 37 A4 B1 1C A5 50 17 AB 57 25 AE 4E 38 AE 72 47 AE 55 19 B4 5B 24 B5 51 3F B6 5C 2E B9 86 53 BA 9C 1B BC 5D 33 BD 61 4D BD 5D 24 BF 9D 1E C3 60", HEX));
	var sw = this.sc.queryUserPINStatus();
	this.changedAuthenticationStatus(sw);
	this.updateBioMatchStatus();
}



KeyManager.prototype.logout = function() {
	this.sc.logout();
	var card = new Card(_scsh3.reader);
	this.setCard(card);
}



KeyManager.prototype.promptNewPIN = function(pintype, usedefault) {
	switch(pintype) {
		case 1:
			var name = "SO-PIN";
			var pin = this.devcfg.soPIN ? this.devcfg.soPIN : usedefault ? "3537363231383830" : "*";
			break;
		case 2:
			var name = "User-PIN";
			var pin = this.devcfg.userPIN ? this.devcfg.userPIN : usedefault ? "648219" : "*";
			break;
		case 3:
			var name = "Transport-PIN";
			var pin = this.devcfg.transportPIN ? this.devcfg.transportPIN : usedefault ? "835212" : "*";
			break;
		default:
			throw new Error("Invalid argument");
	}

	while(true) {
		var oldpin = pin == "*" ? "" : pin;
		pin = Dialog.prompt("Enter new " + name + " (leave empty to generate random PIN)", pin);
		if (pin == null) {
			return;
		}
		if (pin.length == 0) {
			var rnd = this.sc.generateRandom(8);
			if (pintype == 1) {
				pin = rnd.toString(HEX);
			} else {
				pin = this.decimalize(rnd.bytes(0,8), 6);
			}
			continue;
		}
		if (pintype == 1) {
			var valid = false;
			try	{
				new ByteString(pin, HEX);
				valid = true;
			}
			catch(e) {};

			if (!valid || pin.length != 16) {
				var ok = Dialog.prompt("SO-PIN must be a 16 digit hexadecimal string. Try again ?");
				if (ok == null) {
					return;
				}
				continue;
			}
		} else {
			if ((pin.length < 6) || (pin.length > 16)) {
				var ok = Dialog.prompt("PIN must be between 6 and 16 characters. Try again ?");
				if (ok == null) {
					return;
				}
				continue;
			}
		}

		if (!pin.equals(oldpin)) {
			var pin2 = Dialog.prompt("Repeat new " + name, "*");
			if (pin2 == null) {
				return;
			}

			if (!pin.equals(pin2)) {
				var ok = Dialog.prompt("First new PIN does not match second new PIN. Try again ?");
				if (ok == null) {
					return;
				}
				pin = "*";
				continue;
			}
		}
		break;
	}

	return pin;
}



KeyManager.prototype.changeSOPIN = function(sopin, random) {
	var def = this.devcfg.soPIN ? this.devcfg.soPIN : "*";

	var str = Dialog.prompt("Enter current SO-PIN", def);

	if (str == null) {
		return;
	}

	var oldpin = str;

	newpin = this.promptNewPIN(1, false);

	if (!newpin) {
		return;
	}

	try	{
		this.sc.changeInitializationCode(new ByteString(oldpin, HEX), new ByteString(newpin, HEX));
		print("SO-PIN changed");

		if (this.hasProfile) {
			if (Dialog.prompt("Update profile on disk with changed SO-PIN (Cancel for No) ?")) {
				if (this.devcfg.soPIN) {
					this.devcfg.soPIN = newpin;
				}
			} else {
				delete this.devcfg.soPIN;
			}
			this.writeProfile();
		} else {
			if (Dialog.prompt("Keep a profile on disk to save the SO-PIN (Cancel for No) ?")) {
				this.devcfg.soPIN = newpin;
				this.writeProfile();
			}
		}
	}
	catch(e) {
		print("PIN change failed : " + e);
	}

	this.updateSOPINStatus();
}



KeyManager.prototype.changePIN = function() {
	var def = this.devcfg.userPIN ? this.devcfg.userPIN : "*";

	var str = Dialog.prompt("Enter current PIN", def);

	if (str == null) {
		return;
	}

	var oldpin = str;

	newpin = this.promptNewPIN(2, false);

	if (!newpin) {
		return;
	}

	try	{
		this.sc.changeUserPIN(new ByteString(oldpin, UTF8), new ByteString(newpin, UTF8));
		var sw = this.sc.card.SW;
		print("PIN changed");

		if (this.hasProfile) {
			if (Dialog.prompt("Update profile on disk with changed PIN (Cancel for No) ?")) {
				if (this.devcfg.userPIN) {
					this.devcfg.userPIN = newpin;
				}
			} else {
				delete this.devcfg.userPIN;
			}
			this.writeProfile();
		}
	}
	catch(e) {
		print("PIN change failed : " + e);
		var sw = this.sc.queryUserPINStatus();
	}

	this.changedAuthenticationStatus(sw);
}



KeyManager.prototype.unblockPIN = function(withReset) {
	var sopin = Dialog.prompt("Enter Initialization Code (SO-PIN)", this.devcfg.soPIN ? this.devcfg.soPIN : "*");

	if (sopin == null) {
		return;
	}

	sopin = new ByteString(sopin, HEX);
	pin = null;

	if (withReset) {
		var newpin = this.promptNewPIN(2, false);

		if (newpin == null) {
			return;
		}

		pin = new ByteString(newpin, UTF8);
	}

	try	{
		this.sc.unblockUserPIN(sopin, pin);
		print(withReset ? "PIN reset" : "PIN unblocked");

		if (this.hasProfile && withReset) {
			if (Dialog.prompt("Update profile on disk with changed PIN (Cancel for No) ?")) {
				this.devcfg.userPIN = newpin;
			} else {
				delete this.devcfg.userPIN;
			}
			this.writeProfile();
		}
	}
	catch(e) {
		if (this.sc.card.SW == 0x6D00) {
			print("PIN unblock not allowed");
		} else {
			print("PIN unblock failed : " + e);
		}
	}

	this.updateSOPINStatus();
	this.updateAuthenticationStatus(this.sc.queryUserPINStatus());
}



KeyManager.prototype.populateKeys = function() {
	this.sc.enumerateKeys();
	var keys = this.sc.getKeys();
	for (var i = 0; i < keys.length; i++) {
		this.addKey(keys[i]);
	}
}



KeyManager.prototype.addEECertificate = function(keynode, key) {
	if (!this.ks.hasCertificate(key)) {
		return;
	}

	var cert = this.ks.getCertificate(key);

	if (cert.length < 16) {
		print("Does not seem to be a certificate(" + key.getLabel() + ")");
		return;
	}

	if (cert.byteAt(0) == 0x30) {
		var x509 = new X509(cert);
		var label = x509.getSubjectDNString();
		var asn = new ASN1(cert);
		var contextmenu = [];
	} else {
		var cvclist = SmartCardHSM.parseCertificateList(cert);

		var cvc = cvclist[0];
		var label = cvc.toString();
		cvc.decorate();
		var asn = cvc.getASN1();

		if (CVC.isECDSA(cvc.getPublicKeyOID())) {
			var contextmenu = [ KeyManager.EXPORT_PUBLIC_KEY ];

			if (this.authenticationState == 0x9000) {
				contextmenu.push(KeyManager.SIGN_KEY_DOMAIN_MEMBERSHIP);
				contextmenu.push(KeyManager.DERIVE_XKEK);
			}
		} else {
			var contextmenu = [ KeyManager.GENERATE_PKCS10 ];
		}
	}

	contextmenu.push(KeyManager.IMPORT_CERTIFICATE);
	contextmenu.push(KeyManager.EXPORT_CERTIFICATE);
	contextmenu.push(KeyManager.DUMP_CERTIFICATE);

	var certnode = new OutlineNode(label);
	certnode.setUserObject(this);
	certnode.setContextMenu(contextmenu);
	certnode.setIcon("certificate");
	certnode.cert = cert;
	if (cvclist) {
		certnode.cvclist = cvclist;
	}

	certnode.insert(asn);

	keynode.insert(certnode);

	if ((cert.byteAt(0) == 0x67) || (cert.byteAt(0) == 0x7F)) {
		for (var i = 1; i < cvclist.length; i++) {
			var cvc = cvclist[i];
			var label = cvc.toString();
			cvc.decorate();
			var asn = cvc.getASN1();

			var certnode = new OutlineNode(label);
			certnode.setIcon("certificate");
			certnode.cert = cvc.getBytes();

			certnode.insert(asn);

			keynode.insert(certnode);
		}
	}
}



KeyManager.prototype.addKey = function(key) {
	var label = key.getLabel() + " (" + key.getId();
	var type = key.getType();
	if (type) {
		label += ", " + type;
	}
	var size = key.getSize();
	if (size) {
		label += "-" + size;
	}
	label += ")";
	var keynode = new OutlineNode(label);
	keynode.key = key;
	keynode.keylabel = label;
	keynode.setUserObject(this);
	keynode.setIcon("key");

	var pid = key.getPKCS15Id();
	if (pid) {
		var str = "Key Identifier: " + pid.toString(HEX);
		keynode.skidnode = new OutlineNode(str);
		keynode.insert(keynode.skidnode);
	}

	if (typeof(key.useCounter) != "undefined") {
		var str = "Key use counter: " + key.useCounter;
		keynode.usecounternode = new OutlineNode(str);
		keynode.insert(keynode.usecounternode);
	}

	if (key.algorithms) {
		var str = "Algorithms: " + SmartCardHSM.decodeAlgorithmList(key.algorithms);
		keynode.algorithmnode = new OutlineNode(str);
		keynode.insert(keynode.algorithmnode);
	}

	var contextMenu = [ ];
	for (var i = 0; i < this.plugins.length; i++) {
		var plugin = this.plugins[i].instance;
		if (plugin.addKeyContextMenu) {
			plugin.addKeyContextMenu(contextMenu, this.authenticationState, keynode);
		}
	}

	if (this.authenticationState == 0x9000) {
		contextMenu.push(KeyManager.EXPORT_KEY);
		contextMenu.push(KeyManager.DELETE_KEY);

		if (key.desc && (key.desc.tag == 0xA0)) {
			var a1 = key.desc.find(0xA1);
			if (a1.get(0).get(1).value.toUnsigned() == 528) {
				contextMenu.push(KeyManager.FIX_SECP521);
				print("Invalid key length encoding detected for key " + label + ". Fix available in context menu for key.");
			}
		}
	}
	keynode.setContextMenu(contextMenu);
	this.addEECertificate(keynode, key);

	if (typeof(key.keyDomain) == "undefined") {
		this.view.insert(keynode);
	} else {
		this.keydomains[key.keyDomain].node.insert(keynode);
	}

	for (var i = 0; i < this.plugins.length; i++) {
		var plugin = this.plugins[i].instance;
		if (plugin.addKeyInformation) {
			plugin.addKeyInformation(keynode);
		}
	}
}



KeyManager.prototype.populateCACertificates = function() {
	var certs = this.sc.enumerateCACertificates();
	for (var i = 0; i < certs.length; i++) {
		this.addCACertificate(certs[i], this.sc.getCACertificate(certs[i]));
	}
}



KeyManager.prototype.addCACertificate = function(label, cert) {
	var contextmenu = [];

	try	{
		if (cert.byteAt(0) == 0x30) {
			var x509 = new X509(cert);
			displabel = label + " (" + x509.getSubjectDNString() + ")";
			var asn = new ASN1(cert);
		} else {
			var cvc = new CVC(cert);
			displabel = label + " (" + cvc.toString() + ")";
			cvc.decorate();
			var asn = cvc.getASN1();
		}
	}
	catch(e) {
		print(cert);
		print(e);
		return;
	}

	contextmenu.push(KeyManager.EXPORT_CERTIFICATE);
	contextmenu.push(KeyManager.DUMP_CERTIFICATE);

	if (this.authenticationState == 0x9000) {
		contextmenu.push(KeyManager.DELETE_CACERTIFICATE);
	}

	var certnode = new OutlineNode(displabel);
	certnode.setUserObject(this);
	certnode.setContextMenu(contextmenu);
	certnode.setIcon("certificate");
	certnode.cert = cert;
	certnode.certlabel = label;

	certnode.insert(asn);

	this.view.insert(certnode);
}



KeyManager.prototype.deleteCACertificate = function(node) {
	this.ks.deleteCACertificate(node.certlabel);
	node.remove();
}



KeyManager.prototype.addDataObject = function(label, fid) {
	var contextmenu = [ KeyManager.EXPORT_DATAOBJECT, KeyManager.DELETE_DATAOBJECT ];

	var donode = new OutlineNode(label + " (" + fid.toString(HEX) + ")");
	donode.setUserObject( {
		expandListener: function(node) {
			node.bin = node.km.sc.readBinary(fid);
			var str = node.bin.left(256).toString(HEX);
			if (node.bin.length > 256) {
				str += "...";
			}
			node.childs[0].setLabel(str);
			if (node.childs[1] == undefined) {
				try	{
					var asn = new ASN1(node.bin);
					node.insert(asn);
				}
				catch(e) {};
			}
		},
		actionListener: function(node, action) {
			node.km.actionListener(node, action);
		}
	}
	);
	donode.setContextMenu(contextmenu);
	donode.setIcon("binary");
	donode.label = label;
	donode.km = this;
	donode.fid = fid;
	donode.insert(new OutlineNode("<Data>"));

	this.view.insert(donode);
}



KeyManager.prototype.populateDataObjects = function(node) {
	var dos = this.sc.enumerateDataObjects();
	for (var i = 0; i < dos.length; i++) {
		this.addDataObject(dos[i], this.sc.getDataObjectFileIdentifier(dos[i]));
	}
}



KeyManager.prototype.importDataObject = function(node) {

	while (true) {
		var label = Dialog.prompt("Enter label for data object", "");

		if (label == null) {
			return;
		}

		if (this.sc.enumerateDataObjects().indexOf(label) != -1) {
			Dialog.prompt("A data object with that label does already exist");
			continue;
		}
		break;
	}

	var options = [ "Import from file", "Enter hexadecimal" ];

	var opt = Dialog.prompt("Select input option", options[0], options);

	if (opt == null) {
		return;
	}

	if (opt == options[0]) {
		var fname = Dialog.prompt("Enter name of file to import", this.lastfile, null, "");

		if (fname == null) {
			return;
		}

		var f = new File(fname);
		var bin = f.readAllAsBinary();
		f.close();

		this.lastfile = fname;
	} else {
		var inp = Dialog.prompt("Enter hexadecimal input", "");
		if (inp == null) {
			return;
		}
		var bin = new ByteString(inp, HEX);
	}

	var options = [ "without authentication", "only after authentication" ];

	var mode = Dialog.prompt("Data object is readable", options[0], options);

	if (mode == null) {
		return;
	}

	var privObj = (mode == options[1]);

	this.sc.importDataObject(label, privObj, bin);

	this.addDataObject(label, this.sc.getDataObjectFileIdentifier(label));
}




KeyManager.prototype.exportDataObject = function(node) {
	if (typeof(node.bin) == "undefined") {
		print("Must expand node first");
		return;
	}

	var fname = Dialog.prompt("Enter name of file to export to", this.lastfile, null, "");

	if (fname == null) {
		return;
	}

	var f = new File(fname);
	f.writeAll(node.bin);
	f.close();

	print("Data object exported to " + fname);
}




KeyManager.prototype.deleteDataObject = function(node) {
	this.sc.deleteDataObject(node.label);
	node.remove();
}




KeyManager.prototype.createOutline = function() {
	print("Creating outline...");
	var isInitialized = this.sc.isInitialized();

	var id = this.certchain.devicecert.getCHR().toString();
	id = id.substr(0, id.length - 5);

	var label = this.sc.getLabel();
	if (!label) {
		label = "SmartCard-HSM";
	}

	var str = label + " (" + id + ")";

	if (!isInitialized) {
		str += " - Not initialized";
	}

	this.view = new OutlineNode(str);
	this.view.setUserObject(this);

	if (isInitialized) {
		if ((this.authenticationState == 0x9000) || this.initializedWithTransportPIN) {
			var contextMenu = [	KeyManager.GENERATE_RSA_KEY,
						KeyManager.GENERATE_ECC_KEY,
						KeyManager.GENERATE_AES_KEY,
						KeyManager.IMPORT_KEY,
						KeyManager.IMPORT_CERTIFICATE,
						KeyManager.IMPORT_PKCS12,
						KeyManager.IMPORT_AESKEY,
						KeyManager.IMPORT_DATAOBJECT ];
		} else {
			var contextMenu = [];
		}

		contextMenu.push( KeyManager.INITIALIZE );
		contextMenu.push( KeyManager.CREATE_DKEK_SHARE );
		contextMenu.push( KeyManager.EXPORT_ID );

		if (this.provisioningURL) {
			contextMenu.push( KeyManager.REMOTE_UPDATE );
		}

		for (var i = 0; i < this.plugins.length; i++) {
			var plugin = this.plugins[i].instance;
			if (plugin.addDeviceContextMenu) {
				plugin.addDeviceContextMenu(contextMenu, isInitialized, this.authenticationState);
			}
		}

		this.view.setContextMenu(contextMenu);
		this.populateAuthentication();
		this.populateKeyDomains();
		this.populateKeys();
		this.populateCACertificates();
		this.populateDataObjects();
	} else {
		this.view.setContextMenu([	KeyManager.GENERATE_PIN,
						KeyManager.INITIALIZE ]);
	}

	this.view.show();
}



KeyManager.prototype.exportPublicKey = function(certnode) {
	var cert = new ASN1(certnode.cert);

	assert(cert.tag == 0x67, "Invalid certificate form. Is not an authenticated public key");

	var asn = new ASN1(ASN1.SEQUENCE,
			new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("CardContact 4 3 1", OID)),
			new ASN1(0x61, this.certchain.dica.getASN1()),
			new ASN1(0x62, this.certchain.devicecert.getASN1()),
			new ASN1(0x63, cert)
	);

	print(asn);

	var fname = GPSystem.mapFilename(this.certchain.devicecert.getCHR().toString() + "-" + certnode.parent.key.getLabel() + ".pka", GPSystem.USR);

	var fname = Dialog.prompt("Enter file name for public key export", fname, null, "*.pka");

	if (fname == null) {
		return;
	}

	var f = new File(fname);
	f.writeAll(asn.getBytes());
	f.close();

	print("Public key exported to " + fname);
}



KeyManager.prototype.exportDeviceId = function() {
	var asn = new ASN1(ASN1.SEQUENCE,
			new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("CardContact 4 1 1", OID)),
			new ASN1(0x61, this.certchain.dica.getASN1()),
			new ASN1(0x62, this.certchain.devicecert.getASN1())
		    );

//	print(asn);

	var fname = GPSystem.mapFilename(this.certchain.devicecert.getCHR().toString() + ".id", GPSystem.USR);

	var fname = Dialog.prompt("Enter file name for device id", fname, null, "*.id");

	if (fname == null) {
		return;
	}

	var f = new File(fname);
	f.writeAll(asn.getBytes());
	f.close();

	print("Device Id exported to " + fname);
}



KeyManager.prototype.generatePKCS10 = function(certnode) {
	var cert = new CVC(certnode.cert);

	var dn = Dialog.prompt("Enter Distinguished Name (DN) for PKCS#10 request", "c=UT,o=ACME,cn=Joe Doe");

	if (dn == null) {
		return;
	}

	var subject = PKIXCommon.parseDN(dn);

	var gen = new PKCS10Generator(this.sc.getCrypto());

	gen.setSignatureAlgorithm(Crypto.RSA_SHA256);

	gen.setSubject(subject);

	gen.setPublicKey(cert.getPublicKey());

	var req = gen.generateCertificationRequest(certnode.parent.key);

	var fname = GPSystem.mapFilename("req_" + certnode.parent.keylabel + ".pem", GPSystem.USR);

	var fname = Dialog.prompt("Enter file name for PKCS#10 request", fname, null, "*.pem");

	if (fname == null) {
		return;
	}

	var f = new File(fname);
	if (fname.substr(-3) == "pem") {
		f.writeAll(PKIXCommon.toPEM("CERTIFICATE REQUEST", req.getBytes()));
	} else {
		f.writeAll(req.getBytes());
	}
	f.close();

	print("PKCS#10 Request written to " + fname);
}



KeyManager.prototype.importCertificate = function(certnode) {
	var fname = Dialog.prompt("Enter file name of certificate", this.lastfile, null, "*.pem");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var bin = f.readAllAsBinary();
	f.close();

	if (bin.byteAt(0) == 0x30) {
		var cert = new X509(bin);
	} else {
		var bin = PKIXCommon.parsePEM("CERTIFICATE", bin.toString(ASCII));
		if (bin.length == 0 || bin.byteAt(0) != 0x30) {
			print(fname + " does not seem to be a X509 certificate");
			return;
		}
		var cert = new X509(bin);
	}

	print(cert);

	var ok = Dialog.prompt("OK to insert this certificate");

	if (ok == null) {
		return;
	}

	var label = cert.getSubjectDNString();
	if (certnode.parent == null) {
		this.ks.storeCACertificate(label, cert);
		this.createOutline();
	} else {
		this.ks.storeEndEntityCertificate(certnode.parent.key, cert);
		certnode.setLabel(label);
	}

	print("Certificate " + label + " imported");
}



KeyManager.prototype.exportCertificate = function(certnode) {

	var fname = GPSystem.mapFilename("cert_" + certnode.parent.keylabel + ".pem", GPSystem.USR);

	var fname = Dialog.prompt("Enter file name for exported certificate", fname, null, "*.pem");

	if (fname == null) {
		return;
	}

	var f = new File(fname);
	if (fname.substr(-3) == "pem") {
		f.writeAll(PKIXCommon.toPEM("CERTIFICATE", certnode.cert));
	} else {
		f.writeAll(certnode.cert);
	}
	f.close();

	print("Certificate written to " + fname);
}



KeyManager.prototype.dumpCertificate = function(certnode) {
	var cert = certnode.cert;

	if (cert.byteAt(0) == 0x30) {
		var x = new X509(cert);
		print(x);
	} else {
		var x = new CVC(cert);
		x.decorate();
		print(x.getASN1());
	}
}



KeyManager.prototype.registerPublicKey = function(id) {
	var fname = Dialog.prompt("Enter file name for public key import", this.lastfile, null, "*.pka");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var chain = f.readAllAsBinary();
	f.close();

	if (chain.byteAt(0) != 0x30) {
		throw new GPError("KeyManager", GPError.INVALID_DATA, 0, "File does not contain a public key with certificates");
	}

	this.lastfile = fname;

	var a = new ASN1(chain);
	print(a);

	if (a.get(0).tag == ASN1.OBJECT_IDENTIFIER) {
		var oid = new ByteString("CardContact 4 3 1", OID);
		assert(a.get(0).value.equals(oid), "Invalid file format");
		var pk = new CVC(a.find(0x63).get(0));
		var devcert = new CVC(a.find(0x62).get(0));
		var dicacert = new CVC(a.find(0x61).get(0));
	} else {
		var pk = new CVC(a.get(0));
		var devcert = new CVC(a.get(1));
		var dicacert = new CVC(a.get(2));
	}

	assert(dicacert.verifyWithCVC(this.crypto, SmartCardHSM.rootCerts[dicacert.getCAR()]));
	assert(devcert.verifyWith(this.crypto, dicacert.getPublicKey(SmartCardHSM.rootCerts.UTSRCACC100001.getPublicKey()), dicacert.getPublicKeyOID()));

	var str = (typeof(id) == "undefined" ? "Add the key issued to " : "Replace key " + id + " with ");
	var ok = Dialog.prompt(str + pk.getCHR() + " on device " + devcert.getCHR() + " (Cancel for No) ?");
	if (ok == null) {
		return;
	}

	this.managePKA.registerPublicKey(pk, devcert, dicacert, id);
	this.updatePKAStatus();
//	this.updateAuthenticationStatus(this.sc.queryUserPINStatus());
}



KeyManager.prototype.authenticateWithPublicKey = function() {
 	var readers = Card.getReaderList();

	var reader = Dialog.prompt("Please select card reader with public key", "", readers);

	if (reader == null) {
		return;
	}

	var pcard = new Card(reader);
	pcard.reset(Card.RESET_COLD);

	var sc = new SmartCardHSM(pcard);
	var ks = new HSMKeyStore(sc);

	var keys = ks.enumerateKeys()
	var keylabel = Dialog.prompt("Please select a key for public key authentication", "", keys);

	if (keylabel == null) {
		return;
	}

	var key = ks.getKey(keylabel);
	var cert = ks.getCertificate(keylabel);
	var cvc = new CVC(cert);

	var status = this.managePKA.checkKeyStatus(cvc.getCHR());

	if (status == ManagePKA.KEY_NOT_FOUND) {
		print("Key not registered as public key for authentication");
		return;
	}

	if (status == ManagePKA.KEY_ALREADY_AUTHENTICATED) {
		print("Key already authenticated");
		return;
	}

	var cs = sc.getNativeCardService();
	cs.useClassThreePinPad(true);

	var sw = sc.verifyUserPIN();
	if (sw != 0x9000) {
		print(SmartCardHSM.describePINStatus(sw, "User PIN"));
		return;
	}

	this.managePKA.performAuthentication(sc, key);
	this.updatePKAStatus();
	this.changedAuthenticationStatus(this.sc.queryUserPINStatus());
}



KeyManager.prototype.initialize = function() {
	var initializer = new SmartCardHSMInitializer(this.sc.card);

	var changeSOPIN = false;
	var newSOPIN;
	if (this.sc.isInitialized()) {
		var soPIN = Dialog.prompt("Enter Initialization Code (SO-PIN)", this.devcfg.soPIN ? this.devcfg.soPIN : "*");
		if (soPIN == null) {
			return;
		}
		if (soPIN.length == 0) {
			soPIN = "3537363231383830";
		}

		if (this.hasTokenManagementKey()) {
			var opt = [ "Keep current SO-PIN", "Set a new managed SO-PIN", "Set a user selected SO-PIN", "Set the Default SO-PIN" ];
			var str = Dialog.prompt("Select option", opt[0], opt);
			if (str == null) {
				return;
			}
			if (str == opt[1]) {
				changeSOPIN = true;
			} else if (str == opt[2]) {
				changeSOPIN = true;
				str = this.promptNewPIN(1, false);
				if (str == null) {
					return;
				}
				newSOPIN = new ByteString(str, HEX)
			} else if (str == opt[3]) {
				changeSOPIN = true;
				newSOPIN = new ByteString("3537363231383830", HEX)
			}
		}
	} else {
		var soPIN = this.promptNewPIN(1, true);
		if (!soPIN) {
			return;
		}
	}

	initializer.setInitializationCode(new ByteString(soPIN, HEX));

	var label = Dialog.prompt("Define a label (optional)", "");
	if (label == null) {
		return;
	}
	if (label) {
		initializer.setLabel(label);
	}

	var provURL = Dialog.prompt("Define a provisioning URL (optional)", "");
	if (provURL == null) {
		return;
	}
	if (provURL) {
		initializer.setProvisioningURL(provURL);
	}

	if (this.hasTokenManagementKey() && !newSOPIN) {
		var salt = this.kmksalt;
		if (changeSOPIN) {
			var salt = this.crypto.generateRandom(8);
		}
		initializer.setTokenManagementKey(this.managementToken.kcv, salt);
	}

	var options = [ KeyManager.USER_PIN, KeyManager.TRANSPORT_PIN, KeyManager.PUBLIC_KEY_AUTHENTICATION];
	if ((this.sc.major > 3) || ((this.sc.major >= 3) && (this.sc.minor >= 4))) {
		options.push(KeyManager.PUBLIC_KEY_AUTHENTICATION_OR_PIN);
		options.push(KeyManager.PUBLIC_KEY_AUTHENTICATION_AND_PIN);
	}
	options.push(KeyManager.BIOMETRIC_MATCH_SOC);
	options.push(KeyManager.BIOMETRIC_MATCH_SOC_OLD);
	options.push(KeyManager.BIOMETRIC_MATCH_NT);

	var authmech = Dialog.prompt("Select authentication mechanism", KeyManager.USER_PIN, options);

	if ((authmech == null) || (!authmech.equals(KeyManager.USER_PIN) &&
				   !authmech.equals(KeyManager.TRANSPORT_PIN) &&
				   !authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION) &&
				   !authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_OR_PIN) &&
				   !authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_AND_PIN) &&
				   !authmech.equals(KeyManager.BIOMETRIC_MATCH_SOC) &&
				   !authmech.equals(KeyManager.BIOMETRIC_MATCH_SOC_OLD) &&
				   !authmech.equals(KeyManager.BIOMETRIC_MATCH_NT))) {
		return;
	}

	if (authmech.equals(KeyManager.USER_PIN) ||
	    authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_OR_PIN) ||
	    authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_AND_PIN) ||
	    authmech.equals(KeyManager.TRANSPORT_PIN)) {
		var rrc = Dialog.prompt("Allow RESET RETRY COUNTER", KeyManager.WITHOUT_RRC, [
						KeyManager.WITHOUT_RRC,
						KeyManager.WITH_RRC,
						KeyManager.WITH_RRC_PIN ]);

		if ((rrc == null) || (!rrc.equals(KeyManager.WITH_RRC) &&
				!rrc.equals(KeyManager.WITH_RRC_PIN) &&
				!rrc.equals(KeyManager.WITHOUT_RRC))) {
			return;
		}
	}

	if (authmech.equals(KeyManager.USER_PIN) ||
		authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_OR_PIN) ||
		authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_AND_PIN)) {
		var userPIN = this.promptNewPIN(2, true);
		initializer.setUserPIN(new ByteString(userPIN, ASCII));
		initializer.setResetRetryCounterMode(!rrc.equals(KeyManager.WITHOUT_RRC));
		initializer.setResetRetryCounterResetOnlyMode(rrc.equals(KeyManager.WITH_RRC));
	} else if (authmech.equals(KeyManager.TRANSPORT_PIN)) {
		var transportPIN = this.promptNewPIN(3, true);
		initializer.setUserPIN(new ByteString(transportPIN, ASCII));
		initializer.setTransportPINMode(true);
		initializer.setResetRetryCounterMode(!rrc.equals(KeyManager.WITHOUT_RRC));
		initializer.setResetRetryCounterResetOnlyMode(rrc.equals(KeyManager.WITH_RRC));
		this.initializedWithTransportPIN = true;
	} else if (authmech.equals(KeyManager.BIOMETRIC_MATCH_SOC)) {
		var socmgr = new ByteString("D276000172536F434D01", HEX);
		initializer.setBioTemplate(0, socmgr, 0x80);		// PIN
		initializer.setBioTemplate(1, socmgr, 0x00);		// Bio
	} else if (authmech.equals(KeyManager.BIOMETRIC_MATCH_SOC_OLD)) {
		var socmgr = new ByteString("FF64652E6264722E62736F6301", HEX);
		initializer.setBioTemplate(0, socmgr, 0x80);		// PIN
		initializer.setBioTemplate(1, socmgr, 0x00);		// Bio
	} else if (authmech.equals(KeyManager.BIOMETRIC_MATCH_NT)) {
		var socmgr = new ByteString("F14E4653657276657253616D706C65", HEX);
		initializer.setBioTemplate(0, socmgr, 0x01);
//		initializer.setBioTemplate(1, socmgr, 0x02);
	}
	if (authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION) ||
		authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_OR_PIN) ||
		authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_AND_PIN)) {
		var str = Dialog.prompt("Enter total number of public keys", "1");

		if (str == null) {
			return;
		}
		var numberOfPublicKeys = parseInt(str);

		var str = Dialog.prompt("Enter number of public keys required for authentication", "1");

		if (str == null) {
			return;
		}
		var requiredPublicKeysForAuthentication = parseInt(str);

		initializer.setPublicKeyAuthenticationParameter(requiredPublicKeysForAuthentication, numberOfPublicKeys);
		if (authmech.equals(KeyManager.PUBLIC_KEY_AUTHENTICATION_AND_PIN)) {
			initializer.setCombinedAuthenticationMode(true);
		}

		var str = Dialog.prompt("Allow replacing registered public keys (Cancel for No) ?");
		if (str == "OK") {
			initializer.setReplacePKAKeyMode(true);
		}
	}

	var dkek = this.sc.major >= 3 ? KeyManager.DKEK_KEY_DOMAINS : KeyManager.DKEK_NONE;
	dkek = Dialog.prompt(KeyManager.DKEK_SELECT, dkek, [
						KeyManager.DKEK_NONE,
						KeyManager.DKEK_RANDOM_DKEK,
						KeyManager.DKEK_SHARES,
						KeyManager.DKEK_KEY_DOMAINS]);

	if (dkek == null) {
		return;
	}

	if (dkek.equals(KeyManager.DKEK_KEY_DOMAINS)) {
		var str = Dialog.prompt(KeyManager.DKEK_NO_OF_KEY_DOMAINS, "4");
		initializer.setKeyDomains(parseInt(str));
	} else if (!dkek.equals(KeyManager.DKEK_NONE)) {
		var shares = 0;
		if (dkek.equals(KeyManager.DKEK_SHARES)) {
			var str = Dialog.prompt(KeyManager.DKEK_NO_OF_SHARES, "1");
			if (str == null) {
				return;
			}

			var shares = parseInt(str);
		}
		initializer.setDKEKShares(shares);
	}

	print("Initializing, please wait...");
	initializer.initialize();

	if (this.hasProfile) {
		if (this.devcfg.soPIN && !soPIN.equals(this.devcfg.soPIN)) {
			if (Dialog.prompt("Update profile on disk with changed SO-PIN (Cancel for No) ?")) {
				this.devcfg.soPIN = soPIN;
			} else {
				delete this.devcfg.soPIN;
			}
		}
		if (userPIN) {
			if (this.devcfg.userPIN && !userPIN.equals(this.devcfg.userPIN)) {
				if (Dialog.prompt("Update profile on disk with changed User-PIN (Cancel for No) ?")) {
					this.devcfg.userPIN = userPIN;
				} else {
					delete this.devcfg.userPIN;
				}
			}
			delete this.devcfg.transportPIN;
		}
		if (transportPIN) {
			if (this.devcfg.transportPIN && !transportPIN.equals(this.devcfg.transportPIN)) {
				if (Dialog.prompt("Update profile on disk with changed Transport-PIN (Cancel for No) ?")) {
					this.devcfg.transportPIN = transportPIN;
				} else {
					delete this.devcfg.transportPIN;
				}
			}
			delete this.devcfg.userPIN;
		}
		this.writeProfile();
	} else {
		if (!soPIN.equals(this.devcfg.soPIN)) {
			if (Dialog.prompt("Keep a profile on disk to save the PINs (Cancel for No) ?")) {
				this.devcfg.soPIN = soPIN;
				if (userPIN) {
					this.devcfg.userPIN = userPIN;
				}
				if (transportPIN) {
					this.devcfg.transportPIN = transportPIN;
				}
				this.writeProfile();
			}
		}
	}

	if (changeSOPIN) {
		print("Old SO-PIN " + soPIN);
		var oldSOPIN = new ByteString(soPIN, HEX);

		if (!newSOPIN) {
			this.determineSOPIN(salt);
			var newSOPIN = new ByteString(this.devcfg.soPIN, HEX);
		}
		this.sc.changeInitializationCode(oldSOPIN, newSOPIN);
	}

	print("Initializing complete");
	this.authenticationState = this.sc.queryUserPINStatus();
	this.createOutline();
}



KeyManager.prototype.remoteUpdate = function() {
	this.sc.card.remoteUpdate(this.provisioningURL);
	if (this.sc.card.remoteMessage) {
		print("Remote Update completed - " + this.sc.card.remoteMessage + "(" + this.sc.card.remoteMessageId + ")");
	} else {
		print("Remote Update completed");
	}
	this.createOutline();
}



KeyManager.prototype.createDKEKShareFile = function(nofm) {
	var fname = Dialog.prompt("Enter file name for DKEK share", this.lastfile, null, "*.pbe");

	if (fname == null) {
		return;
	}

	if (fname.indexOf(".") == -1) {
		fname += ".pbe";
	}

	var f = new File(fname);
	if (f.exists()) {
		var rsp = Dialog.prompt("File does already exists. OK to overwrite ?");
		if (rsp == null) {
			return;
		}
	}

	if (nofm) {
		var pwd = this.shareSecret();
		if (pwd == null) {
			return;
		}
	} else {
		var pwd = Dialog.prompt("Enter password for DKEK share", "**");
		if (pwd == null) {
			return;
		}

		var pwd2 = Dialog.prompt("Please repeat password for DKEK share", "**");
		if (pwd2 == null) {
			pwd.clear();
			return;
		}

		if (!pwd.equals(pwd2)) {
			pwd.clear();
			pwd2.clear();
			print("Passwords entered do not match");
			return;
		}

		pwd2.clear();
	}

	var rnd1 = this.sc.generateRandom(32);
	var rnd2 = this.crypto.generateRandom(32);
	var rnd = rnd1.xor(rnd2);
	rnd1.clear();
	rnd2.clear();

	var encdkekshare = DKEK.encryptKeyShare(rnd, pwd);

	pwd.clear();
	rnd.clear();

	f.writeAll(encdkekshare);
	f.close();

	print("New DKEK share written to " + fname);
	this.lastfile = fname;
}



KeyManager.prototype.dumpPaperKey = function(share) {
	print("\n\nThe PaperKey below contains 4 lines with 3 by 4 characters that");
	print("resemble the DKEK share and a check value for each line.\n");
	print("The following characters are replaced for readability.\n");
	print("    Upper case I -> !");
	print("    Upper case O -> *");
	print("    Lower case l -> %");
	print("\nPlease save this key by writing it down or copying it. Then restart");
	print("the PC to remove potential traces of the key material.\n");

	print("----8<------8<----\n");
	print(PaperKeyEncoding.dumpKey(share));
	print("----8<------8<----");
}



KeyManager.prototype.createDKEKSharePaperKey = function() {
	var rnd1 = this.sc.generateRandom(32);
	var rnd2 = this.crypto.generateRandom(32);
	var share = rnd1.xor(rnd2);
	rnd1.clear();
	rnd2.clear();
	this.dumpPaperKey(share);
	share.clear();
}



KeyManager.prototype.convertDKEKShareFileToPaperKey = function(nofm) {

	var fname = Dialog.prompt("Enter file name containing DKEK share", this.lastfile, null, "*.pbe");

	if (fname == null) {
		return;
	}

	var f = new File(fname);
	var encdkekshare = f.readAllAsBinary();
	f.close();

	if (nofm) {
		var pwd = this.reconstructSecret();
	} else {
		var pwd = Dialog.prompt("Enter password for DKEK share", "**");
		// Dialog.prompt("**") returns a ByteString rather than a String
	}

	if (pwd == null) {
		return null;
	}

	var share = DKEK.decryptKeyShare(encdkekshare, pwd);
	pwd.clear();

	this.dumpPaperKey(share);
	share.clear();
}



KeyManager.prototype.createDKEKShare = function() {
	var opt = [ "Create DKEK Share as File (Password)", "Create DKEK Share as File (n-of-m)", "Create DKEK Share as PaperKey", "Convert File to PaperKey", "Convert File to PaperKey (n-of-m)" ];
	var sel = Dialog.prompt("Choose DKEK Share Format", opt[0], opt);

	if (sel == null) {
		return;
	}
	switch(sel) {
		case opt[0]:
			this.createDKEKShareFile(false);
			break;
		case opt[1]:
			this.createDKEKShareFile(true);
			break;
		case opt[2]:
			this.createDKEKSharePaperKey();
			break;
		case opt[3]:
			this.convertDKEKShareFileToPaperKey(false);
			break;
		case opt[4]:
			this.convertDKEKShareFileToPaperKey(true);
			break;
	}
}



KeyManager.prototype.shareSecret = function() {
	var str = Dialog.prompt("Total number of shares", "3");
	if (str == null) {
		return null;
	}
	var totalshares = parseInt(str);
	if (totalshares < 2 || totalshares > 100) {
		print("Total number of shares must be between 2 and 100");
		return null;
	}

	var str = Dialog.prompt("Shares required to reconstruct secret", "2");
	if (str == null) {
		return null;
	}

	var threshold = parseInt(str);
	if (threshold < 2 || threshold > totalshares) {
		print("Threshold shares must be between 2 and " + totalshares);
		return null;
	}

	var html = "<html><p>The DKEK will be enciphered using a randomly generated 64 bit password.<br>" +
		             "This password is split using a (" + threshold + "-of-" + totalshares + ") threshold scheme.</p><br>" +
			 "<p>Please keep the generated and encrypted DKEK file in a safe location. We also recommend <br>" +
			     "to keep a paper printout, in case the electronic version becomes unavailable. A printable version <br>" +
			     "of the file can be generated using \"openssl base64 -in &lt;filename&gt;\".</p><br>" +
			 "<p>Press YES to continue</p></html>";

	var str = Dialog.prompt(html);
	if (str == null) {
		return;
	}

	var sss = new ShamirSharedSecret(64);

	var prime = sss.getPrime();
	var pwd = this.crypto.generateRandom(8);
	pwd = sss.trimSecret(pwd);

	var shares = sss.createShares(pwd, threshold, totalshares);

//	print(prime.toString(HEX));

	for (var i = 0; i < totalshares; i++) {
//		print(shares[i].toString(HEX));
		var html = "<html><p>Share " + (i + 1) + " of " + totalshares + "</p><br>" +
				  "<p>Prime " + prime.toString() + "</p><br>" +
				  "<p>Share ID " + (i + 1) + "</p><br>" +
				  "<p>Share value " + shares[i].toString() + "</p><br>" +
				  "<p>Please note ALL values above and press YES when finished</p></html>";
		Dialog.prompt(html);
	}

	return pwd;
}



KeyManager.prototype.promptShare = function(name) {
	do	{
		var str = Dialog.prompt("Enter " + name, "");
		if (str == null) {
			return null;
		}
		str = str.replace(":", "");
		str = str.replace(" ", "");
		var val = new ByteString(str, HEX);
		if (val.length != 8) {
			print("Entered value must be 8 bytes");
		}
	} while (val.length != 8);
	return val;
}



KeyManager.prototype.reconstructSecret = function() {
	var str = Dialog.prompt("Number of shares to enter", "2");
	if (str == null) {
		return null;
	}
	var cnt = parseInt(str);
	if (cnt < 2 || cnt > 100) {
		print("Number of shares must be between 2 and 100");
		return null;
	}

	var prime = this.promptShare("prime");
	if (prime == null) {
		return null;
	}

	var sss = new ShamirSharedSecret(prime);

	for (var i = 0; i < cnt; i++) {
		str = Dialog.prompt("Enter share id", "" + (i + 1));
		if (str == null) {
			return null;
		}
		var id = parseInt(str);
		var share = this.promptShare("share #" + id);
		if (share == null) {
			return null;
		}
		sss.addShare(id, share);
	}

	return sss.reconstructSecret();
}



KeyManager.prototype.importDKEKShareFromFile = function(nofm) {
	var fname = Dialog.prompt("Enter file name containing DKEK share", this.lastfile, null, "*.pbe");

	if (fname == null) {
		return;
	}

	var f = new File(fname);
	var encdkekshare = f.readAllAsBinary();
	f.close();

	if (nofm) {
		var pwd = this.reconstructSecret();
	} else {
		var pwd = Dialog.prompt("Enter password for DKEK share", "**");
		// Dialog.prompt("**") returns a ByteString rather than a String
	}

	if (pwd == null) {
		return null;
	}

	var share = DKEK.decryptKeyShare(encdkekshare, pwd);
	pwd.clear();
	this.lastfile = fname;
	return share;
}



KeyManager.prototype.importDKEKShareFromPaperKey = function() {
	var bb = new ByteBuffer();
	var pc = new PaperKeyEncoding();

	print("\nEnter the PaperKey line by line. You can leave out spaces and the dash.");
	print("The PaperKey does not contain the characters O (capital o), I (capital i)");
	print("or l (lower L), in case of doubts what you see in the printout.");

	for (var i = 0; i < 4; i++) {
		while(true) {
			var str = Dialog.prompt("Enter line " + (i + 1) + " of the key", "");
			if (str == null) {
				print("Aborted...");
				return;
			}

			try	{
				var segment = pc.decodeSegment(i, str);
				bb.append(segment);
				segment.clear();
				break;
			}
			catch(e) {
				Dialog.prompt(e.message);
			}
		}
	}

	var share = bb.toByteString();
	bb.clear();
	return share;
}



KeyManager.prototype.inputDKEKShare = function() {
	var opt = [ "Import DKEK Share from File (Password)", "Import DKEK Share from File (n-of-m)", "Import DKEK Share as PaperKey" ];
	var sel = Dialog.prompt("Choose DKEK Share Format", opt[0], opt);

	if (sel == null) {
		return null;
	}
	var share;
	switch(sel) {
		case opt[0]:
			share = this.importDKEKShareFromFile(false);
			break;
		case opt[1]:
			share = this.importDKEKShareFromFile(true);
			break;
		case opt[2]:
			share = this.importDKEKShareFromPaperKey();
			break;
	}
	return share;
}



KeyManager.prototype.importDKEKShare = function(node) {
	var share = this.inputDKEKShare();

	if (share == null) {
		return;
	}

	var status = this.sc.importKeyShare(node.kdid, share);
	share.clear();

	if (status.sw != 0x9000) {
		print("Import failed with SW1/SW2 = " + status.sw.toString(16));
	}
	this.updateKeyDomainStatus(node.kdid, status);
	print("Import complete.");
}




KeyManager.prototype.generateRSAKey = function(node) {
	var kdid = node.kdid;

	var keysize = Dialog.prompt(KeyManager.SELECT_KEY_SIZE, "2048", [ "1024", "1536", "2048", "3072", "4096" ]);
	if (keysize == null) {
		return;
	}
	keysize = parseInt(keysize);

	var label = "";
	while(true) {
		var label = Dialog.prompt(KeyManager.ENTER_KEY_LABEL, label);
		if (label == null) {
			return;
		}

		if (this.sc.getKey(label)) {
			if (Dialog.prompt(KeyManager.KEY_LABEL_EXISTS) == null) {
				return;
			}
			continue;
		}
		break;
	}

	var chr = this.chr.toString();
	while(true) {
		var chr = Dialog.prompt(KeyManager.ENTER_KEY_REFERENCE, chr);
		if (chr == null) {
			return;
		}

		if (chr.length < 8 || chr.length > 16) {
			if (Dialog.prompt(KeyManager.KEY_REFERENCE_INVALID) == null) {
				return;
			}
			continue;
		}
		break;
	}

	var spec = new SmartCardHSMKeySpecGenerator(Crypto.RSA, keysize);

	if (typeof(kdid) != "undefined" ) {
		spec.setKeyDomain(kdid);
	}

	spec.setCHR(new PublicKeyReference(chr));
	spec.setInnerCAR(this.chr);

	var algolist = "";
	while(true) {
		var algolist = Dialog.prompt(KeyManager.RSA_ALGORITHM_LIST, algolist);
		if (algolist == null) {
			return;
		}

		if (algolist.length > 0) {
			var algo = SmartCardHSM.encodeAlgorithmList(algolist);
			if (algo == null) {
				if (Dialog.prompt(KeyManager.INVALID_ALGORITHM_LIST) == null) {
					return;
				}
				continue;
			}

			if (algo.find(ByteString.valueOf(0x92)) != -1) {
				if ((this.sc.major == 3) && (this.sc.minor == 1)) {
					if (Dialog.prompt(KeyManager.BUG31) == null) {
						continue;
					}
				}
				if ((this.sc.major == 3 && this.sc.minor < 6 && keysize == 3072) ||
				    (this.sc.major == 4 && this.sc.minor < 1 && keysize == 4096)) {
					if (Dialog.prompt(KeyManager.BUGWRAP) == null) {
						continue;
					}
				}
			}
			spec.setAlgorithms(algo);
		}
		break;
	}

	print(KeyManager.GENERATING_KEY);
	var req = this.ks.generateKeyPair(label, spec);
	this.ks.storeEndEntityCertificate(label, req);

	print(KeyManager.GENERATING_KEY_DONE);
	this.createOutline();
}



KeyManager.prototype.generateECCKey = function(node) {
	var kdid = node.kdid;

	var curve = Dialog.prompt(KeyManager.SELECT_CURVE, "brainpoolP256r1", KeyManager.CURVES);
	if (curve == null) {
		return;
	}

	var dom = new Key();
	dom.setComponent(Key.ECC_CURVE_OID, new ByteString(curve, OID));

	var label = "";
	while(true) {
		var label = Dialog.prompt(KeyManager.ENTER_KEY_LABEL, label);
		if (label == null) {
			return;
		}

		if (this.sc.getKey(label)) {
			if (Dialog.prompt(KeyManager.KEY_LABEL_EXISTS) == null) {
				return;
			}
			continue;
		}
		break;
	}

	var chr = this.chr.toString();
	while(true) {
		var chr = Dialog.prompt(KeyManager.ENTER_KEY_REFERENCE, chr);
		if (chr == null) {
			return;
		}

		if (chr.length < 8 || chr.length > 16) {
			if (Dialog.prompt(KeyManager.KEY_REFERENCE_INVALID) == null) {
				return;
			}
			continue;
		}
		break;
	}

	var spec = new SmartCardHSMKeySpecGenerator(Crypto.EC, dom);

	if (typeof(kdid) != "undefined" ) {
		spec.setKeyDomain(kdid);
	}

	spec.setCHR(new PublicKeyReference(chr));
	spec.setInnerCAR(this.chr);

	var algolist = "";
	while(true) {
		var algolist = Dialog.prompt(KeyManager.ECC_ALGORITHM_LIST, algolist);
		if (algolist == null) {
			return;
		}

		if (algolist.length > 0) {
			var algo = SmartCardHSM.encodeAlgorithmList(algolist);
			if (algo == null) {
				if (Dialog.prompt(KeyManager.INVALID_ALGORITHM_LIST) == null) {
					return;
				}
				continue;
			}

			if ((this.sc.major == 3) && (this.sc.minor == 1) && (algo.find(ByteString.valueOf(0x92)) != -1)) {
				if (Dialog.prompt(KeyManager.BUG31) == null) {
					continue;
				}
			}
			spec.setAlgorithms(algo);
		}
		break;
	}

	print(KeyManager.GENERATING_KEY);
	var req = this.ks.generateKeyPair(label, spec);
	this.ks.storeEndEntityCertificate(label, req);

	print(KeyManager.GENERATING_KEY_DONE);
	this.createOutline();
}



KeyManager.prototype.generateAESKey = function(node) {
	if ((this.sc.major == 3) && ((this.sc.minor == 1) || (this.sc.minor == 1))) {
		if (Dialog.prompt(KeyManager.BUGAES) == null) {
			return;
		}
	}


	var kdid = node.kdid;

	var keysize = Dialog.prompt(KeyManager.SELECT_KEY_SIZE, "128", [ "128", "192", "256" ] );
	if (keysize == null) {
		return;
	}
	keysize = parseInt(keysize);

	var label = "";
	while(true) {
		var label = Dialog.prompt(KeyManager.ENTER_KEY_LABEL, label);
		if (label == null) {
			return;
		}

		if (this.sc.getKey(label)) {
			if (Dialog.prompt(KeyManager.KEY_LABEL_EXISTS) == null) {
				return;
			}
			continue;
		}
		break;
	}

	var spec = new SmartCardHSMKeySpecGenerator(Crypto.AES, keysize);

	if (typeof(kdid) != "undefined") {
		spec.setKeyDomain(kdid);
	}

	var algolist = "CBC_ENC,CBC_DEC,CMAC,WRAP,DERIVE_SP800_56C";
	while(true) {
		var algolist = Dialog.prompt(KeyManager.AES_ALGORITHM_LIST, algolist);
		if (algolist == null) {
			return;
		}

		var algo = SmartCardHSM.encodeAlgorithmList(algolist);
		if (algo == null) {
			if (Dialog.prompt(KeyManager.INVALID_ALGORITHM_LIST) == null) {
				return;
			}
			continue;
		}

		spec.setAlgorithms(algo);
		break;
	}

	print(KeyManager.GENERATING_KEY);
	var req = this.ks.generateKey(label, spec);

	print(KeyManager.GENERATING_KEY_DONE);
	this.createOutline();
}



KeyManager.prototype.exportKey = function(node) {
	var fname = GPSystem.mapFilename(node.keylabel + ".wky", GPSystem.USR);

	var fname = Dialog.prompt("Enter file name for key export", fname, null, "*.wky");

	if (fname == null) {
		return null;
	}

	var bin = this.ks.exportKey(node.key);

	var f = new File(fname);
	f.writeAll(bin);
	f.close();
	print("Key exported to " + fname);
}



KeyManager.prototype.importKey = function(node) {
	var fname = Dialog.prompt("Enter file name for key import", this.lastfile, null, "*.wky");

	if (fname == null) {
		return null;
	}

	var f = new File(fname);
	var bin = f.readAllAsBinary();
	f.close();

	if (bin.byteAt(0) != 0x30) {
		throw new GPError("KeyManager", GPError.INVALID_DATA, 0, "File does not contain a wrapped key");
	}

	this.lastfile = fname;
	this.ks.importKey(bin);
	this.createOutline();
}



KeyManager.prototype.importPKCS12 = function(node) {
	var str = Dialog.prompt(KeyManager.DKEK_NO_OF_SHARES, "1");
	if (str == null) {
		return;
	}

	var shares = parseInt(str);

	var dkek = new DKEK(this.crypto);
	for (var cnt = 0; cnt < shares; cnt++) {
		var dkekshare = this.inputDKEKShare();
		dkek.importDKEKShare(dkekshare);
		dkekshare.clear();
	}

	do	{
		var file = Dialog.prompt("Select PKCS#12 container", this.lastfile, null, "*.p12");

		if (file == null) {
			return;
		}

		var pwd = Dialog.prompt("Enter PKCS#12 password", "*");

		if (pwd == null) {
			return;
		}

		var p12 = new KeyStore("BC", "PKCS12", file, pwd);
		this.lastfile = file;

		var aliases = p12.getAliases();

		do	{
			var alias = Dialog.prompt("Select key", "", aliases);
			assert(alias != null);

			var key = new Key();
			key.setType(Key.PRIVATE);
			key.setID(alias);
			try	{
				p12.getKey(key);
			}
			catch(e) {
				print(e);
				key = null;
			}
			var cert = p12.getCertificate(alias);

			print(cert);

			do	{
				var alias = Dialog.prompt("Enter key name for import", alias);
				if (alias == null) {
					return;
				}
				if (!this.ks.hasKey(alias)) {
					break;
				}
				Dialog.prompt("A key with label " + alias + " does already exists. Please choose a different name");
			} while (1);

			if (key != null) {
				print("Importing key and certificate...");

				var pubkey = cert.getPublicKey();
				var blob = dkek.encodeKey(key, pubkey);

				if (pubkey.getComponent(Key.MODULUS)) {
					hkey = this.ks.importRSAKey(alias, blob, pubkey.getSize());
					var signalgo = Crypto.RSA_PSS_SHA256;
				} else {
					hkey = this.ks.importECCKey(alias, blob, pubkey.getSize());
					var signalgo = Crypto.ECDSA_SHA256;
				}

				this.ks.storeEndEntityCertificate(alias, cert);

				// Test import
				var msg = new ByteString("Hello World", ASCII);

				var signature = hkey.sign(signalgo, msg);

				assert(this.crypto.verify(pubkey, signalgo, msg, signature), "Signature verification of imported key failed");
				print("Import completed");
			} else {
				print("Importing certificate...");

				this.ks.storeCACertificate(alias, cert);

			}
			this.createOutline();
		} while (aliases.length > 1 && Dialog.prompt("Import more keys ?"));

	} while (Dialog.prompt("Import more PKCS#12 files ?"));
	dkek.clear();
}



KeyManager.prototype.importAESKey = function(node) {
	var str = Dialog.prompt(KeyManager.DKEK_NO_OF_SHARES, "1");
	if (str == null) {
		return;
	}

	var shares = parseInt(str);

	var dkek = new DKEK(this.crypto);
	for (var cnt = 0; cnt < shares; cnt++) {
		var dkekshare = this.inputDKEKShare();
		dkek.importDKEKShare(dkekshare);
		dkekshare.clear();
	}

	do	{
		var alias = "";
		do	{
			alias = Dialog.prompt("Enter key name for import", alias);
			if (alias == null) {
				return;
			}
			if (!this.ks.hasKey(alias)) {
				break;
			}
			Dialog.prompt("A key with label " + alias + " does already exists. Please choose a different name");
		} while (1);

		while (true) {
			var value = Dialog.prompt("Enter key value", "");
			if (value == null) {
				return;
			}

			try	{
				var bin = new ByteString(value, HEX);
				if ((bin.length != 16) && (bin.length != 24) && (bin.length != 32)) {
					print("Key must be 16, 24, or 32 bytes long");
					continue;
				}
			}
			catch(e) {
				print("Invalid input: " + e.message);
				continue;
			}
			break;
		}

		var aes = new Key();
		aes.setComponent(Key.AES, bin);

		var keyid = this.crypto.sign(aes, Crypto.AES_CMAC, new ByteString("KeyCheckValue", ASCII)).left(8);

		// Encode AES key into blob
		var blob = dkek.encodeAESKey(aes);
//		dkek.dumpKeyBLOB(blob);

		var key = this.ks.importAESKey(alias, blob, aes.getSize(), keyid);


		this.createOutline();
	} while (Dialog.prompt("Import more AES keys ?"));
	dkek.clear();
}



KeyManager.prototype.deleteKey = function(node) {
	this.ks.deleteKey(node.key);
	node.remove();

	for (var i = 0; i < this.plugins.length; i++) {
		var plugin = this.plugins[i].instance;
		if (plugin.deleteKey) {
			plugin.deleteKey(node);
		}
	}
}



KeyManager.prototype.readProfile = function() {
	try	{
		var f = new File(this.profileName);
		var c = f.readAllAsString();
		f.close();
		this.devcfg = JSON.parse(c);
		this.hasProfile = true;
		if (this.devcfg.soPIN) {
			print("Retrieved SO-PIN from profile");
		}
		if (this.devcfg.userPIN) {
			print("Retrieved User-PIN from profile");
		}
		if (this.devcfg.transportPIN) {
			print("Retrieved Transport-PIN from profile");
		}
	}
	catch(e) {
	}
}



KeyManager.prototype.writeProfile = function() {
	var f = new File(this.profileName);
	f.writeAll(JSON.stringify(this.devcfg, null, "\t"));
	f.close();
	this.hasProfile = true;
	print("Profile saved to " + this.profileName);
}



KeyManager.prototype.decimalize = function(raw, count) {
	// Decimalize raw binary data in parameter raw into a numeric sequence of count digits
	var c;
	do	{
		var str = raw.toString(HEX);
		c = count;
		var result = "";
		var i = 0;

		while ((i < str.length) && (c > 0)) {
			var d = str.charCodeAt(i);
			if ((d >= 0x30) && (d <= 0x39)) {
				result = result.concat(String.fromCharCode(d));
				c--;
			}
			i++;
		}
		if (c > 0) {
			raw = raw.not();
		}

	} while (c > 0);

	return result;
}



KeyManager.prototype.generatePINs = function() {
	var rnd = this.sc.generateRandom(24);
	var soPIN = rnd.bytes(0,8).toString(HEX);
	var userPIN = this.decimalize(rnd.bytes(8,8), 6);
	var transportPIN = this.decimalize(rnd.bytes(16,8), 6);

	print("\nSO-PIN        : " + soPIN);
	print(  "User-PIN      : " + userPIN);
	print(  "Transport-PIN : " + transportPIN);

	if (Dialog.prompt("Use the PINs as default values when initializing this device (Cancel for No) ?")) {
		this.devcfg.soPIN = soPIN;
		this.devcfg.userPIN = userPIN;
		this.devcfg.transportPIN = transportPIN;

		if (!this.hasProfile && Dialog.prompt("Save generated PINs to disk (Warning: Will be saved in plain) ?")) {
			this.writeProfile();
		}
	}
}



KeyManager.prototype.fixSECP521 = function(source) {
	var key = source.key;

	print("Old PRKD");
	print(key.desc);

	var prkd = SmartCardHSM.buildPrkDforECC(key.getPKCS15Id(), key.getLabel(), 521);
	print("New PRKD");
	print(prkd);

	var fid = ByteString.valueOf((SmartCardHSM.PRKDPREFIX << 8) + key.getId());
	this.sc.updateBinary(fid, 0, prkd.getBytes());
	key.setDescription(prkd);
}



KeyManager.prototype.actionListener = function(source, action) {
	for (var i = 0; i < this.plugins.length; i++) {
		var plugin = this.plugins[i].instance;
		if (plugin.actionListener) {
			if (plugin.actionListener(source, action)) {
				return;
			}
		}
	}

	switch(action) {
		case KeyManager.INITIALIZE:
			this.initialize();
			break;
		case KeyManager.EXPORT_ID:
			this.exportDeviceId();
			break;
		case KeyManager.REMOTE_UPDATE:
			this.remoteUpdate();
			break;
		case KeyManager.GENERATE_PIN:
			this.generatePINs();
			break;
		case KeyManager.GENERATE_RSA_KEY:
			this.generateRSAKey(source);
			break;
		case KeyManager.GENERATE_ECC_KEY:
			this.generateECCKey(source);
			break;
		case KeyManager.GENERATE_AES_KEY:
			this.generateAESKey(source);
			break;
		case KeyManager.EXPORT_KEY:
			this.exportKey(source);
			break;
		case KeyManager.IMPORT_KEY:
			this.importKey();
			break;
		case KeyManager.IMPORT_PKCS12:
			this.importPKCS12();
			break;
		case KeyManager.CREATE_DKEK_SHARE:
			this.createDKEKShare();
			break;
		case KeyManager.IMPORT_DKEK_SHARE:
			this.importDKEKShare(source);
			break;
		case KeyManager.DELETE_KEY:
			this.deleteKey(source);
			break;
		case KeyManager.EXPORT_PUBLIC_KEY:
			this.exportPublicKey(source);
			break;
		case KeyManager.SIGN_KEY_DOMAIN_MEMBERSHIP:
			this.groupSignerOperation(source);
			break;
		case KeyManager.GENERATE_PKCS10:
			this.generatePKCS10(source);
			break;
		case KeyManager.IMPORT_CERTIFICATE:
			this.importCertificate(source);
			break;
		case KeyManager.EXPORT_CERTIFICATE:
			this.exportCertificate(source);
			break;
		case KeyManager.DELETE_CACERTIFICATE:
			this.deleteCACertificate(source);
			break;
		case KeyManager.DUMP_CERTIFICATE:
			this.dumpCertificate(source);
			break;
		case KeyManager.IMPORT_DATAOBJECT:
			this.importDataObject(source);
			break;
		case KeyManager.EXPORT_DATAOBJECT:
			this.exportDataObject(source);
			break;
		case KeyManager.DELETE_DATAOBJECT:
			this.deleteDataObject(source);
			break;
		case KeyManager.IMPORT_AESKEY:
			this.importAESKey(source);
			break;
		case KeyManager.LOGIN_WITH_USER_PIN:
			this.login();
			break;
		case KeyManager.LOGIN_WITH_USER_PIN_PAD:
			this.loginPinPAD();
			break;
		case KeyManager.LOGIN_WITH_USER_BIO1:
			this.loginBioMatch(0x85);
			break;
		case KeyManager.LOGIN_WITH_USER_BIO2:
			this.loginBioMatch(0x86);
			break;
		case KeyManager.CHANGE_PIN:
			this.changePIN(false);
			break;
		case KeyManager.CHANGE_SOPIN:
			this.changeSOPIN(true);
			break;
		case KeyManager.UNBLOCK_PIN:
			this.unblockPIN(false);
			break;
		case KeyManager.RESET_PIN:
			this.unblockPIN(true);
			break;
		case KeyManager.LOGOUT:
			this.logout();
			break;
		case KeyManager.REGISTER_PUBLIC_KEY:
			this.registerPublicKey();
			break;
		case KeyManager.REPLACE_PUBLIC_KEY:
			this.registerPublicKey(source.id);
			break;
		case KeyManager.AUTHENTICATE_PUBLIC_KEY:
			this.authenticateWithPublicKey();
			break;
		case KeyManager.CREATE_DKEK_DOMAIN:
			this.createDKEKDomain(source);
			break;
		case KeyManager.CREATE_XKEK_DOMAIN:
			this.createXKEKDomain(source);
			break;
		case KeyManager.DELETE_KEY_DOMAIN:
			this.deleteDomain(source);
			break;
		case KeyManager.ASSOCIATE_XKEK_DOMAIN:
			this.associateXKEKDomain(source);
			break;
		case KeyManager.CREATE_EXCHANGE_KEY:
			this.createExchangeKey(source);
			break;
		case KeyManager.DELETE_KEK:
			this.deleteKEK(source);
			break;
		case KeyManager.DERIVE_XKEK:
			this.deriveXKEK(source);
			break;
		case KeyManager.FIX_SECP521:
			this.fixSECP521(source);
			break;
		default:
			print("Unknown action: " + action);
	}
}



var card = new Card(_scsh3.reader);
var km = new KeyManager(card);

print("-------------------------------------------------------------------");
print("Please right-click on nodes in the outline to see possible actions.");
print("For most operations you will need to authenticate first using a");
print("mechanism from the User PIN context menu.");
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Plug-In Template
 */


/**
 * Create a plug-in instance
 *
 * @constructor
 * @class A plug-in example
 * @param {KeyManager] km the associated key manager
 */
function PluginExample(km) {
	this.km = km;
}

// All plug-ins must export a symbol "Plugin"
exports.Plugin = PluginExample;

PluginExample.PLUGIN_ACTION = "Test-Plugin";



/**
 * Add an entry to the context menu associated with the device entry in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Boolean} isInitialized the device is initialized
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 */
PluginExample.prototype.addDeviceContextMenu = function(contextMenu, isInitialized, authenticationState) {
	print("isInitialized: " + isInitialized);
	print("authenticationState: " + authenticationState.toString(16));
	contextMenu.push(PluginExample.PLUGIN_ACTION);
}



/**
 * Supplement additional key domain infos
 *
 * Called after the key domain entry has been created in the outline.
 * The dom object contains the properties
 *
 * kdid - The index in the list of key domains
 * status - The status as returned by SmartCardHSM.parseKeyDomainStatus()
 * node  The associated Outline node
 *
 * @param {Object} dom key domain information
 */
PluginExample.prototype.addKeyDomainInformation = function(dom) {
}



/**
 * Postprocessing after a key domain delete
 *
 * Called after the key domain entry has been delete in the outline.
 * The dom object contains the properties
 *
 * kdid - The index in the list of key domains
 * status - The status as returned by SmartCardHSM.parseKeyDomainStatus()
 * node  The associated Outline node
 *
 * @param {Object} dom key domain information
 */
PluginExample.prototype.deleteKeyDomain = function(dom) {
}



/**
 * Add an entry to the context menu associated with a key domain in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 * @param {Object} dom key domain information
 */
PluginExample.prototype.addKeyDomainContextMenu = function(contextMenu, authenticationState, keydomainnode) {
}



/**
 * Supplement additional key infos
 *
 * @param {Outline} keynode the node created for this key. The key object is stored in the key property.
 */
PluginExample.prototype.addKeyInformation = function(keynode) {
}



/**
 * Add an entry to the context menu associated with a key in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 * @param {Outline} keynode the node created for this key before it is added to the outline
 */
PluginExample.prototype.addKeyContextMenu = function(contextMenu, authenticationState, keynode) {
	print("authenticationState: " + authenticationState.toString(16));
	contextMenu.push(PluginExample.PLUGIN_ACTION);
}



/**
 * Postprocessing after a key delete
 *
 * @param {Object} key key node in the outline
 */
PluginExample.prototype.deleteKey = function(node) {
}



/**
 * Handle action triggered from the outline context menu
 *
 * @param {Outline} source the source outline node of this action
 * @param {String} action the action selected from the context menu
 * @type Boolean
 * @return true if the action was handled
 */
PluginExample.prototype.actionListener = function(source, action) {
	print("Source: " + source);
	print("Action: " + action);
	return action.equals(PluginExample.PLUGIN_ACTION);
}



PluginExample.prototype.toString = function() {
	return "Test-Plugin 1";
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Plug-In
 */

var CVC = require("scsh/eac/CVC").CVC;


/**
 * Create a plug-in instance
 *
 * @constructor
 * @class A plug-in example
 * @param {KeyManager] km the associated key manager
 */
function SignExample(km) {
	this.km = km;
}

// All plug-ins must export a symbol "Plugin"
exports.Plugin = SignExample;

SignExample.PLUGIN_ACTION = "Sign Data";



/**
 * Add an entry to the context menu associated with the device entry in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Boolean} isInitialized the device is initialized
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 */
//SignExample.prototype.addDeviceContextMenu = function(contextMenu, isInitialized, authenticationState) {
//}



/**
 * Add an entry to the context menu associated with a key in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 * @param {Outline} keynode the node created for this key before it is added to the outline
 */
SignExample.prototype.addKeyContextMenu = function(contextMenu, authenticationState, keynode) {
	if (authenticationState == 0x9000) {
		contextMenu.push(SignExample.PLUGIN_ACTION);
	}
}



/**
 * Handle action triggered from the outline context menu
 *
 * @param {Outline} source the source outline node of this action
 * @param {String} action the action selected from the context menu
 * @type Boolean
 * @return true if the action was handled
 */
SignExample.prototype.actionListener = function(source, action) {
	print("Source: " + source);
	print("Action: " + action);
	if (!action.equals(SignExample.PLUGIN_ACTION)) {
		return false;
	}

	var key = source.key;

	var crypto = this.km.sc.getCrypto();
	var algo = Crypto.RSA_PSS_SHA256;

	var str = Dialog.prompt("Enter message to sign", "Hello World");
	assert(str != null, "Abort by user");

	var msg = new ByteString(str, ASCII);
	var signature = crypto.sign(key, algo, msg);
	print("Signature : " + signature);

	var cert = source.childs[source.childs.length - 1].cert;

	if (cert.byteAt(0) == 0x30) {
		cert = new X509(cert);
	} else {
		cert = new CVC(cert);
	}
	print(cert);

	var crypto = new Crypto();
	var valid = crypto.verify(cert.getPublicKey(), algo, msg, signature);

	print("Signature is " + (valid ? "valid" : "invalid"));
	return true;
}



SignExample.prototype.toString = function() {
	return "Sign-Plugin";
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Plug-In
 */


/**
 * Create a plug-in instance
 *
 * @constructor
 * @class A plug-in example
 * @param {KeyManager] km the associated key manager
 */
function ManagementToken(km) {
	this.km = km;
}

// All plug-ins must export a symbol "Plugin"
exports.Plugin = ManagementToken;

ManagementToken.USE_TOKEN_ACTION = "Use as Management Token";
ManagementToken.RELEASE_TOKEN_ACTION = "Release Management Token";



/**
 * Add an entry to the context menu associated with the device entry in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Boolean} isInitialized the device is initialized
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 */
ManagementToken.prototype.addDeviceContextMenu = function(contextMenu, isInitialized, authenticationState) {
	if (typeof(this.km.managementToken) == "undefined") {
		if (isInitialized && authenticationState == 0x9000) {
			contextMenu.push(ManagementToken.USE_TOKEN_ACTION);
		}
	} else {
		contextMenu.push(ManagementToken.RELEASE_TOKEN_ACTION);
	}
}



/**
 * Use the current token as management token
 *
 */
ManagementToken.prototype.useAsManagementToken = function() {
	this.sc = this.km.sc;
	this.ks = this.km.ks;
	this.id = this.km.id;
	this.certchain = this.km.certchain;
	this.km.managementToken = this;

	var keys = this.sc.getKeys();
	for (var i = 0; i < keys.length; i++) {
		var key = keys[i];
		if ((key.getType() == "AES") && (key.algorithms.find(ByteString.valueOf(SmartCardHSM.ALG_CMAC)) >= 0)) {
			this.tmk = key;
			var label = key.getLabel();
			this.kcv = key.getPKCS15Id();
			if (this.kcv.length != 8) {
				print("No subject key identifier found. Generating one...");
				this.kcv = this.tmk.sign(Crypto.AES_CMAC, new ByteString("KeyCheckValue", ASCII)).left(8);
			}
			print("Found AES key '" + label + "' with KCV " + this.kcv.toString(HEX) + " to manage the SO-PIN");
			break;
		}
	}

	this.task = new Task(this);
	this.task.setContextMenu([ ManagementToken.RELEASE_TOKEN_ACTION ]);
	this.km.cardRemoved(this.sc.card.readerName);
	print("See Tasks tab for management token");
	this.km.promptAutoInsert();
}



/**
 * Release and reset the management token
 */
ManagementToken.prototype.releaseManagementToken = function() {
	delete this.km.managementToken;
	this.sc.logout();
	this.sc.card.close();
	this.task.dispose();
}



/**
 * Derive the SO-PIN using the token management key
 */
ManagementToken.prototype.deriveSOPIN = function(id, seed) {
	var inp = new ByteString(id, ASCII);
	if (seed) {
		inp = inp.concat(seed);
	}
	var cmac = this.tmk.sign(Crypto.AES_CMAC, inp);
	return cmac.left(8);
}



/**
 * Handle action triggered from the outline context menu
 *
 * @param {Outline} source the source outline node of this action
 * @param {String} action the action selected from the context menu
 * @type Boolean
 * @return true if the action was handled
 */
ManagementToken.prototype.actionListener = function(source, action) {
	switch(action) {
		case ManagementToken.USE_TOKEN_ACTION:
			this.useAsManagementToken();
			return true;
		case ManagementToken.RELEASE_TOKEN_ACTION:
			this.releaseManagementToken();
			return true;
	}
	return false;
}



ManagementToken.prototype.toString = function() {
	return "Management-Token " + this.id;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Plug-In to import keys from a PKCS#12 container
 */

var DKEK = require("scsh/sc-hsm/DKEK").DKEK;



/**
 * Create a plug-in instance
 *
 * @constructor
 * @class A plug-in example
 * @param {KeyManager] km the associated key manager
 */
function ImportP12(km) {
	this.km = km;
}

// All plug-ins must export a symbol "Plugin"
exports.Plugin = ImportP12;

ImportP12.PLUGIN_ACTION = "Import from PKCS#12";



/**
 * Add an entry to the context menu associated with the device entry in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Boolean} isInitialized the device is initialized
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 */
ImportP12.prototype.addDeviceContextMenu = function(contextMenu, isInitialized, authenticationState) {
	if (authenticationState == 0x9000) {
		contextMenu.push(ImportP12.PLUGIN_ACTION);
	}
}



/**
 * Add an entry to the context menu associated with a key in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 * @param {Outline} keynode the node created for this key before it is added to the outline
 */
ImportP12.prototype.addKeyContextMenu = function(contextMenu, authenticationState, keynode) {
}



/**
 * Handle action triggered from the outline context menu
 *
 * @param {Outline} source the source outline node of this action
 * @param {String} action the action selected from the context menu
 * @type Boolean
 * @return true if the action was handled
 */
ImportP12.prototype.actionListener = function(source, action) {
//	print("Source: " + source);
//	print("Action: " + action);
	if (!action.equals(ImportP12.PLUGIN_ACTION)) {
		return false;
	}

	this.importP12();

	return true;
}


ImportP12.prototype.importP12 = function() {
	var sc = this.km.sc;
	var crypto = this.km.crypto;

	var kdid = -1;
	do {
		kdid++;
		var kd = sc.queryKeyDomainStatus(kdid);
		if ((kd.sw == 0x6A86) || (kd.sw == 0x6D00)) {
			Dialog.prompt("No empty key domain found.");
			return
		}
	} while (kd.sw != 0x6A88);

	// Create DKEK domain with random DKEK
	sc.createDKEKKeyDomain(kdid, 1);
	var share = crypto.generateRandom(32);
	sc.importKeyShare(kdid, share);

	// Create DKEK encoder and import share
	var dkek = new DKEK(crypto);
	dkek.importDKEKShare(share);

	do	{
		var file = Dialog.prompt("Select PKCS#12 container", "", null, "*.p12");

		if (file == null) {
			return;
		}

		var pwd = Dialog.prompt("Enter PKCS#12 password", "*");

		if (pwd == null) {
			return;
		}

		var p12 = new KeyStore("BC", "PKCS12", file, pwd);

		var aliases = p12.getAliases();

		do	{
			var alias = Dialog.prompt("Select key", "", aliases);
			assert(alias != null);

			var key = new Key();
			key.setType(Key.PRIVATE);
			key.setID(alias);
			try	{
				p12.getKey(key);
			}
			catch(e) {
				print(e);
				key = null;
			}
			var cert = p12.getCertificate(alias);

			print(cert);

			do	{
				var alias = Dialog.prompt("Enter key name for import", alias);
				if (alias == null) {
					return;
				}
				if (!this.km.ks.hasKey(alias)) {
					break;
				}
				Dialog.prompt("A key with label " + alias + " does already exists. Please choose a different name");
			} while (1);

			if (key != null) {
				print("Importing key and certificate...");

				var pubkey = cert.getPublicKey();
				var blob = dkek.encodeKey(key, pubkey);

				if (pubkey.getComponent(Key.MODULUS)) {
					hkey = this.km.ks.importRSAKey(alias, blob, pubkey.getSize());
					var signalgo = Crypto.RSA_PSS_SHA256;
				} else {
					hkey = this.km.ks.importECCKey(alias, blob, pubkey.getSize());
					var signalgo = Crypto.ECDSA_SHA256;
				}

				this.km.ks.storeEndEntityCertificate(alias, cert);

				// Test import
				var msg = new ByteString("Hello World", ASCII);

				var signature = hkey.sign(signalgo, msg);

				assert(crypto.verify(pubkey, signalgo, msg, signature), "Signature verification of imported key failed");
				print("Import completed");
			} else {
				var str = "OK";
				if (sc.getCACertificate(alias)) {
					str = Dialog.prompt("CA Certificate alias does exists (OK to overwrite)");
				}

				if (str == "OK") {
					print("Importing certificate...");

					this.km.ks.storeCACertificate(alias, cert);
				}
			}
			this.km.createOutline();
		} while (aliases.length > 1 && Dialog.prompt("Import more keys ?"));

	} while (Dialog.prompt("Import more PKCS#12 files ?"));
	dkek.clear();
	sc.deleteKEK(kdid);
}



ImportP12.prototype.toString = function() {
	return "ImportP12-Plugin";
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Plug-In
 */


/**
 * Create a plug-in instance
 *
 * @constructor
 * @class A plug-in example
 * @param {KeyManager] km the associated key manager
 */
function PortalConnector(km) {
	this.km = km;
}

// All plug-ins must export a symbol "Plugin"
exports.Plugin = PortalConnector;

PortalConnector.USE_TOKEN_ACTION = "Connect to Portal";
PortalConnector.RELEASE_TOKEN_ACTION = "Release Portal Token";



/**
 * Add an entry to the context menu associated with the device entry in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Boolean} isInitialized the device is initialized
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 */
PortalConnector.prototype.addDeviceContextMenu = function(contextMenu, isInitialized, authenticationState) {
	if (isInitialized) {
		contextMenu.push(PortalConnector.USE_TOKEN_ACTION);
	}
}



/**
 * Use the current token as management token
 *
 */
PortalConnector.prototype.useAsPortalConnector = function() {

	var url = this.km.sc.getProvisioningURL();

	if (!url) {
		url = "https://www.pki-as-a-service.net/rt/hsm";
	}

	url = Dialog.prompt("Connect to ", url);
	if (!url) {
		return;
	}

	var session = new PortalSession(this.km.sc, this.km.id, url);

	var readerName = this.km.sc.card.readerName;
	this.km.cardRemoved(readerName);
	this.km.autoInsert = false;

	var rl = [];
	if (_scsh3.reader) {
		var rl = _scsh3.reader.split(";");
	}

	if (rl.indexOf("!" + readerName) == -1) {
		rl.push("!" + readerName);
		_scsh3.reader = rl.join(";");
	}

	this.km.setCardRemovedListener(readerName, session);
	session.task.start();
	print("See Tasks tab for portal token");
}



/**
 * Handle action triggered from the outline context menu
 *
 * @param {Outline} source the source outline node of this action
 * @param {String} action the action selected from the context menu
 * @type Boolean
 * @return true if the action was handled
 */
PortalConnector.prototype.actionListener = function(source, action) {
	switch(action) {
		case PortalConnector.USE_TOKEN_ACTION:
			this.useAsPortalConnector();
			return true;
	}
	return false;
}



PortalConnector.prototype.toString = function() {
	return "Portal Connector Plugin";
}



function PortalSession(sc, id, url) {
	this.sc = sc;
	this.id = id;
	this.url = url;

	this.task = new Task(this);
	this.task.setContextMenu([ PortalConnector.RELEASE_TOKEN_ACTION ]);
}



PortalSession.prototype.run = function() {
	GPSystem.trace("Connected");
	this.sc.card.allowCardSpecificRemoteUpdateService(true);

	try	{
		this.sc.card.remoteUpdate(this.url);
		this.sc.logout();
		this.sc.card.close();
	}
	catch(e) {
		print("Connection failed : " + e.message);
	}

	var rl = [];
	if (_scsh3.reader) {
		var rl = _scsh3.reader.split(";");
	}

	var i = rl.indexOf("!" + this.sc.card.readerName);
	if (i >= 0) {
		rl.splice(i);
		_scsh3.reader = rl.join(";");
	}

	GPSystem.trace("Disconnected");
	this.task.disposeAtExit = true;
//	this.task.dispose();
}



PortalSession.prototype.actionListener = function(source, action) {
	switch(action) {
		case PortalConnector.RELEASE_TOKEN_ACTION:
			this.sc.card.cancelRemoteUpdate();
			return true;
	}
	return false;
}



PortalSession.prototype.cardRemoved = function() {
	print("Card removed");
	this.sc.card.cancelRemoteUpdate();
}



PortalSession.prototype.toString = function() {
	return "Portal-Token " + this.id + " connected to " + this.url;
}
/**
 *  ---------
 * |.##> <##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software & System Consulting
 * |'##> <##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * @fileoverview Plug-In
 */

var SmartCardHSMKeySpecGenerator = require('scsh/sc-hsm/SmartCardHSM').SmartCardHSMKeySpecGenerator;
var File = require("scsh/file/File").File;



/**
 * Create a plug-in instance
 *
 * @constructor
 * @class A plug-in example
 * @param {KeyManager] km the associated key manager
 */
function ClonePlugin(km) {
	this.km = km;
}

// All plug-ins must export a symbol "Plugin"
exports.Plugin = ClonePlugin;

ClonePlugin.COPY_KEYS = "Copy Keys from Management Token";



/**
 * Add an entry to the context menu associated with the device entry in the outline
 *
 * @param {String[]} contextMenu the list of entries in the context menu
 * @param {Boolean} isInitialized the device is initialized
 * @param {Number} authenticationState the status returned in the last authentication query (SW1/SW2)
 */
ClonePlugin.prototype.addDeviceContextMenu = function(contextMenu, isInitialized, authenticationState) {
	if (this.km.managementToken && (authenticationState == 0x9000)) {
		contextMenu.push(ClonePlugin.COPY_KEYS);
	}
}



/**
 * Handle action triggered from the outline context menu
 *
 * @param {Outline} source the source outline node of this action
 * @param {String} action the action selected from the context menu
 * @type Boolean
 * @return true if the action was handled
 */
ClonePlugin.prototype.actionListener = function(source, action) {
	switch(action) {
		case ClonePlugin.COPY_KEYS:
			this.copyKeys(source);
			return true;
	}
	return false;
}



/**
 * Enumerate all key domains
 *
 * @param {SmartCardHSM} sc the token to look at
 * @type Object[]
 * @return the key domain status
 */
ClonePlugin.prototype.enumerateKeyDomains = function(sc) {
	var kd = [];
	var kdidx = -1;
	do {
		kdidx++;
		var kds = sc.queryKeyDomainStatus(kdidx);
		if (kds.sw == 0x9000) {
			kds.kdidx = kdidx;
			kd.push( kds  );
		}
	} while ((kds.sw != 0x6A86) && (kds.sw !== 0x6D00));

	return kd;
}



/**
 * Copy keys from the management token into the target token for all identical key domains
 *
 * @param {OutlineNode} the key domain outline node
 */
ClonePlugin.prototype.copyKeys = function(kd) {
	if (this.km.managementToken == undefined) {
		print("No management token found. Please insert management token and authenticate,");
		print("then select 'Use as management token' from the device context menu");
		return;
	}
	var mks = this.km.managementToken.ks;
	var tks = this.km.ks;

	var mkd = this.enumerateKeyDomains(mks.sc);
	var tkd = this.enumerateKeyDomains(tks.sc);

	// Create a list of XKEK key domains that are present on the master and the target
	var ckd = [];
	for (var i = 0; i < tkd.length; i++) {
		if (tkd[i].keyDomain) {
			for (var j = 0; j < mkd.length; j++) {
				if (mkd[j].keyDomain && mkd[j].keyDomain.equals(tkd[i].keyDomain)) {
					print("Found XKEK Key Domain " + tkd[i].keyDomain.toString(HEX));
					ckd.push( { m: mkd[j], t: tkd[i] } );
				}
			}
		}
	}

	// Establish a XKEK for all identical key domains
	var dom = new Key();
	dom.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP256r1", OID));
	for (var i = 0; i < ckd.length; i++) {
		var spec = new SmartCardHSMKeySpecGenerator(Crypto.EC, dom);

		spec.setKeyDomain(ckd[i].m.kdidx);
		spec.setAlgorithms(ByteString.valueOf(SmartCardHSM.ALG_ECDHXKEK));

		print("Generating exchange keys...");
		var label = "ex";
		if (mks.hasKey(label)) {
			mks.deleteKey(label);
		}
		var mreq = mks.generateKeyPair(label, spec);
		var mkey = mks.getKey(label);

		spec.setKeyDomain(ckd[i].t.kdidx);
		if (tks.hasKey(label)) {
			tks.deleteKey(label);
		}
		var treq = tks.generateKeyPair(label, spec);
		var tkey = tks.getKey(label);

		print("Key agreement...");
		mks.sc.verifyCertificate(this.km.certchain.dica);
		mks.sc.verifyCertificate(this.km.certchain.devicecert);
		mks.sc.deriveXKEK(mkey.getId(), treq, new ByteString("DerivationParam", ASCII));
		mks.deleteKey(label);

		tks.sc.verifyCertificate(this.km.managementToken.certchain.dica);
		tks.sc.verifyCertificate(this.km.managementToken.certchain.devicecert);
		tks.sc.deriveXKEK(tkey.getId(), mreq, new ByteString("DerivationParam", ASCII));
		tks.deleteKey(label);
	}

	var mkd = this.enumerateKeyDomains(mks.sc);
	var tkd = this.enumerateKeyDomains(tks.sc);

	// Create a list of key domains with the same KEK
	var ckd = [];
	for (var i = 0; i < tkd.length; i++) {
		for (var j = 0; j < mkd.length; j++) {
			if (tkd[i].kcv.equals(mkd[j].kcv)) {
				ckd[mkd[j].kdidx] = mkd[j];
			}
		}
	}

	var list = mks.enumerateKeys();

	// Find all keys that in matching key domains and that are not yet present on the target
	for (var i = 0; i < list.length; i++) {
		var key = mks.getKey(list[i]);
		if (ckd[key.keyDomain]) {
			if (key.algorithms != undefined && key.algorithms.find(ByteString.valueOf(SmartCardHSM.ALG_WRAP, 1)) < 0) {
				continue;
			}
			if (!tks.hasKey(key.getLabel())) {
				print("Transfering key '" + key.getLabel() + "'...");
				var keyblob = mks.exportKey(key);
				var newkey = tks.importKey(keyblob);

				tks.sc.updateKey(newkey);
				this.km.addKey(newkey);
			}
		}
	}
	print("Copy complete.");
}



ClonePlugin.prototype.toString = function() {
	return "Clone-Plugin";
}
#!/bin/sh
cd $(dirname $0)

# If no card reader can be found, then most likely the Java runtime does not find the PCSC client library.
# You will then need to find the folder containing PCSC on MacOSX or libpcsclite.so on Linux and specify
# that path in the Java system property sun.security.smartcardio.library
#
# Examples are
#  -Dsun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC
#  -Dsun.security.smartcardio.library=lib/x86_64-linux-gnu/libpcsclite.so
#
# If you are using a HDPI Display and the Smart Card Shell appears to small, then try adding
#  -Dsun.java2d.uiScale=2
# to scale the display by 2. The value must be an integer.
#
java -Dsun.security.smartcardio.t1GetResponse=false -Dorg.bouncycastle.asn1.allow_unsafe_integer=true -Djava.library.path=./lib -classpath 'lib/*' de.cardcontact.scdp.scsh3.GUIShell



#!/bin/sh
java -Dsun.security.smartcardio.t1GetResponse=false -Dorg.bouncycastle.asn1.allow_unsafe_integer=true -Djava.library.path=./lib -classpath 'lib/*' de.cardcontact.scdp.engine.CommandProcessor
#
# Configuration file for OpenCard Framework (OCF)
#

#
# OpenCard.services lists all CardServiceFactories that OCF should recognize
#
# de.cardcontact.opencard.factory.IsoCardServiceFactory         provides FileAccessCardService for ISO cards
# opencard.opt.util.PassThruCardServiceFactory                  provides transparent APDU access

OpenCard.services = de.cardcontact.opencard.factory.SmartCardHSMCardServiceFactory \
                    de.cardcontact.opencard.factory.AppletCHVCardServiceFactory \
                    de.cardcontact.opencard.factory.IsoCardServiceFactory \
                    opencard.opt.util.PassThruCardServiceFactory \
                    de.cardcontact.opencard.factory.GlobalPlatformCardServiceFactory \
                    de.cardcontact.opencard.factory.SmartCardHSMCardServiceFactory \
                    de.cardcontact.opencard.factory.RemoteClientCardServiceFactory



#
# OpenCard.terminals lists all CardTerminalFactories that OCF should recognize
#
# com.ibm.opencard.terminal.pcsc10.Pcsc10CardTerminalFactory    provides access to PC/SC card reader
# OpenCard.terminals = com.ibm.opencard.terminal.pcsc10.Pcsc10CardTerminalFactory|*|PCSC10-NOPOLL


# de.cardcontact.opencard.terminal.smartcardio.SmartCardIOFactory provides access to card readers via javax.smartcardio
OpenCard.terminals = de.cardcontact.opencard.terminal.smartcardio.SmartCardIOFactory|*|PCSC10 \
					 de.cardcontact.opencard.terminal.jcopsim.JCOPSimCardTerminalFactory|JCOPSimulation|JCOPSIM|0|localhost|8050|30000


#
# de.cardcontact.opencard.terminal.jcopsim.JCOPSimCardTerminalFactory is a card terminal
# factory that provides access to a JCOP remote terminal
#
# It can be configured using parameters appended to the class name
#
#       |<name>|<type>|<device>|<hostname>|<port>
#
#        name                   friendly name used by OCF
#        type                   Must be JCOPSIM
#        device                 Device number used by OCF
#        hostname (optional)    Name of the remote host (DEFAULT: localhost)
#        port (optional)        Port number of the remote host (DEFAULT: 8050)
#
# OpenCard.terminals = de.cardcontact.opencard.terminal.jcopsim.JCOPSimCardTerminalFactory|JCOPSimulation|JCOPSIM|0|localhost|8050|30000

#
# Use ApduIO card terminal (SUN JCWDE terminal simulator)
# It can be configured using parameters appended to the class name
#
# In order to use this driver, you must add the apduio.jar from Suns JavaCard development kit to the class path
#
#       |<name>|<type>|<device>|<hostname>|<port>
#
#        name                   friendly name used by OCF
#        type                   Must be JCWDPSIM
#        device                 Device number used by OCF
#        hostname (optional)    Name of the remote host (DEFAULT: localhost)
#        port (optional)        Port number of the remote host (DEFAULT: 9025)
# OpenCard.terminals = de.cardcontact.opencard.terminal.jcwdpsim.JCWDPSimCardTerminalFactory|JCWDPSimulation|JCWDPSIM|0|localhost|9025

#
# de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory is a card terminal
# factory that provides a CT-API bridge. It requires ctapi-jni shared object or DLL in the library path.
#
# It can be configured using parameters appended to the class name
#
#       |<name>|<type>|<device>|<libname>
#
#        name           friendly name used by OCF
#        type           Must be AUTO, CTAPI or CTAPIKBD. Use the postfix -NOPOLL to disable polling
#        device         Port number used in CT_INIT()
#        libname        Name of DLL or shared object (without .dll, .so or lib...)
#
# When the type CTAPIKBD is defined, then the terminal implements the PERFORM VERIFICATION
# function that enables input of PIN codes on the card reader rather than on the screen
#
# AUTO uses device enumeration via CT_list() which is a proprietary extension only available in the
# CT-API module provides by the sc-hsm-embedded project (https://github.com/CardContact/sc-hsm-embedded)
#
#OpenCard.terminals = de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|SCHSM|AUTO|0|ctccid

# ORGA ECO 5000 with CardContact ECO5000 driver
#OpenCard.terminals = de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|ECO5000|CTAPI|1|cteco5000

# ORGA MCT 5000
#OpenCard.terminals = de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|MCT|CTAPIKBD-NOPOLL|1|ctorg32

# Reiner SCT CT-API Driver
#OpenCard.terminals = de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|REINERSCT|CTAPIKBD|1|ctrsct32 \

# G+D ICT800 STD
#OpenCard.terminals = de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|ICT800|CTAPIKBD|1|ctapiw32

#ACG HFDualIsoRFID on COM4
#OpenCard.terminals = de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|ACGDUAL|CTAPI|3|ctacgdual

# Gemplus GCR700
#OpenCard.terminals = de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|GCR700|CTAPIKBD|1|ctgemw32

#
# Debugging can be enabled for individual modules
#
# EMERGENCY - System is unusable; numeric value is 0
# ALERT - Action must be taken immediately; numeric value is 1
# CRITICAL - Critical condition; numeric value is 2
# ERROR - Error condition; numeric value is 3
# WARNING - Warning condition; numeric value is 4
# NOTICE - Normal but significant condition; numeric value is 5
# INFO - Informational; numeric value is 6
# DEBUG - Debugging information; numeric value is 7
# LOWEST - Even more details; numeric value is 8
#

# For a full trace, enable this
# OpenCard.trace = opencard:8 de.cardcontact:8

# If you want to see APDU exchanged between terminal and card, enable this
#OpenCard.trace = opencard.core.service.CardChannel:8 de.cardcontact.opencard.service.isocard.IsoCardSelector:8
@echo off
setlocal ENABLEDELAYEDEXPANSION
set userdir=%CD%
cd /d %~dp0
if defined CLASSPATH (set CLASSPATH=%CLASSPATH%;./bin) else (set CLASSPATH=./bin)
FOR /R .\lib %%G IN (*.jar) DO set CLASSPATH=!CLASSPATH!;%%G
Echo The Classpath definition is %CLASSPATH%
if exist jre (set JAVA=jre\bin\java) else (set JAVA=java)
Echo Starting %JAVA%
%JAVA% -Xmx1024m -Dsun.security.smartcardio.t1GetResponse=false -Dorg.bouncycastle.asn1.allow_unsafe_integer=true -Djava.library.path=./lib de.cardcontact.scdp.engine.CommandProcessor
@echo off
setlocal ENABLEDELAYEDEXPANSION
set userdir=%CD%
cd /d %~dp0
if defined CLASSPATH (set CLASSPATH=%CLASSPATH%;./bin) else (set CLASSPATH=./bin)
FOR /R .\lib %%G IN (*.jar) DO set CLASSPATH=!CLASSPATH!;%%G
Echo The Classpath definition is %CLASSPATH%
if exist jre (set JAVAW=jre\bin\javaw) else (set JAVAW=javaw)
Echo Starting %JAVAW%
start %JAVAW% -Xmx1024m -Dsun.security.smartcardio.t1GetResponse=false -Dorg.bouncycastle.asn1.allow_unsafe_integer=true -Djava.library.path=./lib de.cardcontact.scdp.scsh3.GUIShell
To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.6.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build 

> Configure project :
Version org.openscdp:scsh:3.18.61
Unpacking /var/www/jenkins/shared/org.openscdp/scsh-mods/1.0.169/fss/scsh-mods.tgz

> Task :clean UP-TO-DATE

> Task :dependencies

------------------------------------------------------------
Root project 'scsh'
------------------------------------------------------------

runtimeClasspath - Runtime classpath of source set 'main'.
+--- org.openscdp:scdp4j:latest.integration -> 3.18.85
|    +--- org.openscdp:ocf-core:2.0.93 -> 2.0.94
|    +--- org.openscdp:sc-hsm-provider:2.0.73
|    |    +--- org.slf4j:slf4j-api:2.0.9
|    |    \--- org.openscdp:ocf-core:latest.integration -> 2.0.94
|    +--- org.openscdp:opensc-java:0.4.18
|    |    \--- commons-logging:commons-logging-api:1.1
|    +--- org.bouncycastle:bcprov-jdk18on:1.72
|    +--- org.bouncycastle:bcpkix-jdk18on:1.72
|    |    +--- org.bouncycastle:bcprov-jdk18on:1.72
|    |    \--- org.bouncycastle:bcutil-jdk18on:1.72
|    |         \--- org.bouncycastle:bcprov-jdk18on:1.72
|    +--- com.sun.xml.messaging.saaj:saaj-impl:1.5.3
|    |    +--- jakarta.xml.soap:jakarta.xml.soap-api:1.4.2
|    |    +--- org.jvnet.staxex:stax-ex:1.8.3
|    |    \--- com.sun.activation:jakarta.activation:1.2.2
|    \--- org.mozilla:rhino-runtime:1.7.15
+--- org.openscdp:ocf-core:latest.integration -> 2.0.94
+--- org.openscdp:ocf-ui:latest.integration -> 2.0.94
|    \--- org.openscdp:ocf-core:2.0.94
+--- org.openscdp:ocf-daemon:latest.integration -> 2.0.94
|    \--- org.openscdp:ocf-core:2.0.94
+--- org.bouncycastle:bcprov-jdk18on:1.72
\--- ch.qos.logback:logback-classic:1.4.14
     +--- ch.qos.logback:logback-core:1.4.14
     \--- org.slf4j:slf4j-api:2.0.7 -> 2.0.9

(*) - dependencies omitted (listed previously)

A web-based, searchable dependency report is available by adding the --scan option.

BUILD SUCCESSFUL in 5s
2 actionable tasks: 1 executed, 1 up-to-date
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h2>Changes in version 3.18 (2024-02-22)</h2>
<ul>
<li>Migration to new build system</li>
<li>Provider a distribution for Windows that include a JRE</li>
<li>Improve SmartCard-HSM support in Key Manager</li>
<li>Support SCP03 in GPSecurityDomain</li>
<li>Switch to Logback as logging framework</li>
<li>Add a Task class for headless environments</li>
<li>Switch to Logback as logging framework</li>
<li>Fix display error caused by concurrent access</li>
</ul>
<h2>Changes in version 3.17 (2020-06-22)</h2>
<ul>
<li>Refactor terminal selection dialog</li>
<li>Integrate web client for accessing the PKI-as-a-Service portal</li>
<li>Remove artefacts in lib/ before installing over existing installation</li>
</ul>
<h2>Changes in version 3.16 (2018-03-21)</h2>
<ul>
<li>Add support for CMS Enveloped Data</li>
<li>Replace tracing support in OCF with SLF4J</li>
<li>Change naming scheme in lib/ to include version numbers</li>
</ul>
<h2>Changes in version 3.15 (2018-11-30)</h2>
<ul>
<li>Add support for 64 bit integer in ByteString.toUnsigned()</li>
<li>Add support for BigInteger arithmetic in ByteString class</li>
<li>Change to latest Bouncycastle and Rhino version</li>
</ul>
<h2>Changes in version 3.14 (2018-05-04)</h2>
<ul>
<li>Add Task class to run and manage background tasks</li>
<li>Add support for importing PKCS#12 files with ECC keys (KeyManager)</li>
<li>Fix SOAPException class not found problem on Java &gt; 8</li>
<li>Add padding modes with 16 byte block size in ByteString.pad()</li>
<li>Enable warning when assigning to undeclared global variables</li>
</ul>
<h2>Changes in version 3.13</h2>
<ul>
<li>Automatically determine OID when setting EC domain parameter P (query with Key.getComponent(Key.ECC_CURVE_OID))</li>
<li>Add option to return PIN entered in Dialog.prompt() as ByteString</li>
<li>Add .clear() to ByteString to zeroize buffer with sensitive information</li>
<li>Add plug-in support in SmartCard-HSM Key Manager</li>
<li>Add feature to add DKEK shares in Key Manager</li>
</ul>
<h2>Changes in version 3.12</h2>
<ul>
<li>Source code moved to CardContact Developer Network (CDN)</li>
<li>Add scsh Modules</li>
<li>Add SmartCard-HSM Key Manager</li>
</ul>
<h2>Changes in version 3.7</h2>
<ul>
<li>Added new web connectivity with URLConnection and SOAPConnection classes</li>
<li>Added new support for XML Signatures</li>
<li>Improved support for cryptographic modules using PKCS#11</li>
<li>Enhanced support for Secure Messaging with new algorithms and support for EAC 2.0</li>
<li>Added new cryptographic primitives</li>
<li>Added special support in ASN.1 for TLV objects defined in EMV</li>
<li>Added support for javax.smartcardio in the underlying Opencard Framework</li>
<li>Added facility to simulate smart cards using scripting objects</li>
<li>Fixed a lot of minor bugs</li>
</ul>
<h2>Changes in version 3.6</h2>
<ul>
<li>Added support for AES cipher</li>
<li>Added support for ECC curves on F2M</li>
<li>Added support for SHA-2 family</li>
<li>Restructured code into library and SCSH3 component</li>
<li>Scripts are now moved to a different <a href="http://www.openscdp.org/scripts/index.html">package</a></li>
<li>Fixed problem with UTF-8 encodings on command line</li>
<li>Fixed design flaw in CardFile.sendApdu()</li>
<li>Fixed a lot of minor bugs</li>
</ul>
<h2>Changes in version 3.5</h2>
<ul>
<li>Added support for PKCS#11 modules</li>
<li>Added support for key stores</li>
<li>Added trace functionality for APDUs exchanged with cards</li>
<li>Improved scripts for German eGK</li>
<li>Moved development environment to Java 1.5</li>
<li>Upgraded to latest version of third party libraries</li>
<li>Improved documentation</li>
<li>Fixed all kind of bugs</li>
</ul>
<h2>Changes in version 3.4</h2>
<ul>
<li>Added support for secure messaging with IsoSecureChannel class</li>
<li>Added support for secure messaging in Card class</li>
<li>Added support for secure messaging in CardFile class</li>
<li>Added full support for Elliptic Curve Cryptography (EC-Keys, ECDSA and ECDH)</li>
<li>Improved handling of various smart cards in ISO card service</li>
<li>Upgraded to latest version of third party libraries</li>
<li>Improved documentation</li>
<li>Fixed all kind of bugs</li>
</ul>
<h2>Changes in version 3.3</h2>
<ul>
<li>Added outline node functionality to build explorer like GUIs</li>
<li>Added support for Global Platform profiles</li>
<li>Added support for more Global Platform scripting classes</li>
<li>Added explorer for various smart card applications</li>
<li>Added basic support for CMS</li>
<li>Added support for JavaCard applet loading</li>
<li>Added methods to Key and Crypto classes</li>
<li>Added card terminal to access JCOP card simulation from IBM JCOP tools</li>
<li>Improved support for Linux</li>
<li>Improved documentation</li>
<li>Fixed all kind of bugs</li>
</ul>
<h2>Changes in version 3.2</h2>
<ul>
<li>Implementation of Key, Crypto and CRL classes</li>
<li>CardFile.performCHV() allows PIN verification using OCF mechanisms</li>
<li>Support for access to native Java classes using LiveConnect added</li>
<li>Basic support for Linux added (only command line version)</li>
<li>Streamlined console output in GUIShell</li>
<li>Replaced crypto provider with new version</li>
</ul>
<h2>Changes in version 3.1</h2>
<ul>
<li>Graphical user interface</li>
<li>Management of current working directory, workspace directory and system directory for file lookup</li>
<li>Persistent configuration information in the _scsh3 object</li>
<li>Implementation of GPSystem class</li>
</ul>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
		  GNU LESSER GENERAL PUBLIC LICENSE
		       Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

		  GNU LESSER GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.
  
  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

			    NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

		     END OF TERMS AND CONDITIONS

           How to Apply These Terms to Your New Libraries

  If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change.  You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).

  To apply these terms, attach the following notices to the library.  It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.

    <one line to give the library's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Also add information on how to contact you by electronic and paper mail.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the
  library `Frob' (a library for tweaking knobs) written by James Random Hacker.

  <signature of Ty Coon>, 1 April 1990
  Ty Coon, President of Vice

That's all there is to it!


<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>PKCS11Session - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>PKCS11Session - Reference Documentation</h1>
        <p>Class implementing support for cryptographic token with PKCS#11 interface</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">PKCS11Session() constructor</a>
            </li>
            <li>
                <a href="#login">login()</a>
            </li>
            <li>
                <a href="#initPIN">initPIN()</a>
            </li>
            <li>
                <a href="#setPIN">setPIN()</a>
            </li>
            <li>
                <a href="#enumerateObjects">enumerateObjects()</a>
            </li>
            <li>
                <a href="#generateKey">generateKey()</a>
            </li>
            <li>
                <a href="#generateKeyPair">generateKeyPair()</a>
            </li>
            <li>
                <a href="#wrapKey">wrapKey()</a>
            </li>
            <li>
                <a href="#unwrapKey">unwrapKey()</a>
            </li>
            <li>
                <a href="#deriveKey">deriveKey()</a>
            </li>
            <li>
                <a href="#signInit">signInit()</a>
            </li>
            <li>
                <a href="#sign">sign()</a>
            </li>
            <li>
                <a href="#signUpdate">signUpdate()</a>
            </li>
            <li>
                <a href="#signFinal">signFinal()</a>
            </li>
            <li>
                <a href="#verifyInit">verifyInit()</a>
            </li>
            <li>
                <a href="#verify">verify()</a>
            </li>
            <li>
                <a href="#verifyUpdate">verifyUpdate()</a>
            </li>
            <li>
                <a href="#verifyFinal">verifyFinal()</a>
            </li>
            <li>
                <a href="#encryptInit">encryptInit()</a>
            </li>
            <li>
                <a href="#encrypt">encrypt()</a>
            </li>
            <li>
                <a href="#encryptUpdate">encryptUpdate()</a>
            </li>
            <li>
                <a href="#encryptFinal">encryptFinal()</a>
            </li>
            <li>
                <a href="#decryptInit">decryptInit()</a>
            </li>
            <li>
                <a href="#decrypt">decrypt()</a>
            </li>
            <li>
                <a href="#decryptUpdate">decryptUpdate()</a>
            </li>
            <li>
                <a href="#decryptFinal">decryptFinal()</a>
            </li>
            <li>
                <a href="#close">close()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_PKCS_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_9796</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_X_509</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD2_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD5_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA1_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD128_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD160_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_PKCS_OAEP</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_X9_31_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_X9_31</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA1_RSA_X9_31</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RSA_PKCS_PSS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA1_RSA_PKCS_PSS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DSA_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DSA</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DSA_SHA1</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DH_PKCS_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DH_PKCS_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_X9_42_DH_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_X9_42_DH_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_X9_42_DH_HYBRID_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_X9_42_MQV_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA256_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA384_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA512_RSA_PKCS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA256_RSA_PKCS_PSS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA384_RSA_PKCS_PSS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA512_RSA_PKCS_PSS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC2_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC2_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC2_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC2_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC2_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC2_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC4_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC4</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES2_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES3_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES3_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES3_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES3_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES3_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DES3_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CDMF_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CDMF_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CDMF_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CDMF_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CDMF_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CDMF_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD2</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD2_HMAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD2_HMAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD5</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD5_HMAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD5_HMAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA_1</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA_1_HMAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA_1_HMAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD128</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD128_HMAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD128_HMAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD160</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD160_HMAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RIPEMD160_HMAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST3_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST3_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST3_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST3_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST3_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST3_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST5_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST128_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST5_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST128_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST5_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST128_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST5_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST128_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST5_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST128_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST5_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CAST128_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC5_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC5_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC5_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC5_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC5_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_RC5_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_IDEA_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_IDEA_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_IDEA_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_IDEA_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_IDEA_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_IDEA_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_GENERIC_SECRET_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CONCATENATE_BASE_AND_KEY</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CONCATENATE_BASE_AND_DATA</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_CONCATENATE_DATA_AND_BASE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_XOR_BASE_AND_DATA</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_EXTRACT_KEY_FROM_KEY</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SSL3_PRE_MASTER_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SSL3_MASTER_KEY_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SSL3_KEY_AND_MAC_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SSL3_MASTER_KEY_DERIVE_DH</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_TLS_PRE_MASTER_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_TLS_MASTER_KEY_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_TLS_KEY_AND_MAC_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_TLS_MASTER_KEY_DERIVE_DH</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SSL3_MD5_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SSL3_SHA1_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD5_KEY_DERIVATION</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_MD2_KEY_DERIVATION</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SHA1_KEY_DERIVATION</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_MD2_DES_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_MD5_DES_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_MD5_CAST_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_MD5_CAST3_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_MD5_CAST5_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_MD5_CAST128_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_CAST5_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_CAST128_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_RC4_128</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_RC4_40</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_DES3_EDE_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_DES2_EDE_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_RC2_128_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBE_SHA1_RC2_40_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PKCS5_PBKD2</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_PBA_SHA1_WITH_SHA1_HMAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_KEY_WRAP_LYNKS</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_KEY_WRAP_SET_OAEP</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_ECB64</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_CBC64</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_OFB64</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_CFB64</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_CFB32</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_CFB16</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_CFB8</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_WRAP</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_PRIVATE_WRAP</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_SKIPJACK_RELAYX</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_KEA_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_KEA_KEY_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_FORTEZZA_TIMESTAMP</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_BATON_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_BATON_ECB128</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_BATON_ECB96</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_BATON_CBC128</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_BATON_COUNTER</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_BATON_SHUFFLE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_BATON_WRAP</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_ECDSA_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_EC_KEY_PAIR_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_ECDSA</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_ECDSA_SHA1</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_ECDH1_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_ECDH1_COFACTOR_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_ECMQV_DERIVE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_JUNIPER_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_JUNIPER_ECB128</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_JUNIPER_CBC128</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_JUNIPER_COUNTER</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_JUNIPER_SHUFFLE</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_JUNIPER_WRAP</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_FASTHASH</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_AES_KEY_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_AES_ECB</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_AES_CBC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_AES_MAC</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_AES_MAC_GENERAL</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_AES_CBC_PAD</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DSA_PARAMETER_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_DH_PKCS_PARAMETER_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKM_X9_42_DH_PARAMETER_GEN</td>
                <td>PKCS#11 mechanism constant</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">PKCS11Session(PKCS11Provider provider, Number slot)</p>
        <p class="signature">PKCS11Session(PKCS11Provider provider, Number slot, Boolean readWrite)</p>
        <h3>Description</h3>
                    
        <p>Open a new session using the given provider and selected slot.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Provider</code>
                </td>
                <td>provider</td>
                <td>Previously loaded provider</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>slot</td>
                <td>Slot id to use</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>readWrite</td>
                <td>True, if session shall allow write access to token. Default is false.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var p = new PKCS11Provider("C:/usr/local/lsm/bin/lsmpkcs11.dll");

var s = new PKCS11Session(p, 1, false);
s.close();

</pre>
        <h2 id="login">login()</h2>
        <h3>Prototype</h3>
        <p class="signature">login(String password)</p>
        <p class="signature">login(String password, Boolean so)</p>
        <h3>Description</h3>
                    
        <p>Login into token as user or security officer</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>password</td>
                <td>Password to be used for login</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>so</td>
                <td>True, if login as security officer is requested. Default is false</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Login as user in a read only session
var s = new PKCS11Session(p, 1, false);
s.login("12345678");
s.close();

// Login as security officer in a read/write session
var s = new PKCS11Session(p, 1, true);
s.login("abcdefgh", true);
s.close();

</pre>
        <h2 id="initPIN">initPIN()</h2>
        <h3>Prototype</h3>
        <p class="signature">initPIN(String password)</p>
        <h3>Description</h3>
                    
        <p>Initialize user PIN.</p>
                    
        <p>The user PIN can be initialized in a read/write session authenticated
               by the SO PIN.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>password</td>
                <td>The new user PIN</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Login as security officer in a read/write session
var s = new PKCS11Session(p, 1, true);
s.login("abcdefgh", true);
s.initPIN("12345678");
s.close();

</pre>
        <h2 id="setPIN">setPIN()</h2>
        <h3>Prototype</h3>
        <p class="signature">setPIN(String oldPIN, String newPIN)</p>
        <h3>Description</h3>
                    
        <p>Change the user PIN.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>oldPIN</td>
                <td>The old user PIN</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>newPIN</td>
                <td>The new user PIN</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Login as security officer in a read/write session
var s = new PKCS11Session(p, 1, true);
s.setPIN("12345678", "12345678");
s.close();

</pre>
        <h2 id="enumerateObjects">enumerateObjects()</h2>
        <h3>Prototype</h3>
        <p class="signature">enumerateObjects()</p>
        <p class="signature">enumerateObjects(, Array filterAttrs)</p>
        <h3>Description</h3>
                    
        <p>Enumerate all objects available in the session</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>filterAttrs</td>
                <td>Array of filter attributes (CKA_*)</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Array of PKCS11Objects</code>
                </td>
                <td>Objects found</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Login as user in a read only session
var s = new PKCS11Session(p, 1, false);
s.login("12345678");

print("All objects:");
var objs = s.enumerateObjects();
for (var i = 0; i &lt; objs.length; i++) {
	print(" Class :" + objs[i].getNumberAttribute(PKCS11Object.CKA_CLASS));
	var label = objs[i].getAttribute(PKCS11Object.CKA_LABEL);
	if (label) {
		print(" Label :" + objs[i].getAttribute(PKCS11Object.CKA_LABEL).toString(ASCII));
	}
}

print("Objects with CKA_CLASS = CKO_SECRET_KEY:");
var attr = new Array();
attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;

var objs = s.enumerateObjects(attr);
for (var i = 0; i &lt; objs.length; i++) {
	print(" Class :" + objs[i].getNumberAttribute(PKCS11Object.CKA_CLASS));
	var label = objs[i].getAttribute(PKCS11Object.CKA_LABEL);
	if (label) {
		print(" Label :" + objs[i].getAttribute(PKCS11Object.CKA_LABEL).toString(ASCII));
	}
}

s.close();

</pre>
        <h2 id="generateKey">generateKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">PKCS11Object generateKey(Number mechanism, ByteString param, Array keyAttr)</p>
        <h3>Description</h3>
                    
        <p>Call C_GenerateKey() to generate a symmetric key using the mechanism specified with
               given parameter. The key object is allocated using the attributes from keyAttr.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>param</td>
                <td>Parameter for the generation mechanism</td>
            </tr>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>keyAttr</td>
                <td>Array of key attributes (CKA_*)</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>PKCS11Objects</code>
                </td>
                <td>New key object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Generate a 168 bit DES key

var s = new PKCS11Session(p, 1, true);
s.login("12345678");

var attr = new Array();
attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES3;
attr[PKCS11Object.CKA_ENCRYPT] = true;
attr[PKCS11Object.CKA_DECRYPT] = true;
attr[PKCS11Object.CKA_LABEL] = "GeneratedDES3Key";

var key = s.generateKey(PKCS11Session.CKM_DES3_KEY_GEN, null, attr);

s.close();

</pre>
        <h2 id="generateKeyPair">generateKeyPair()</h2>
        <h3>Prototype</h3>
        <p class="signature">PKCS11Object[] generateKeyPair(Number mechanism, ByteString param, Array pubAttr, Array priAttr)</p>
        <h3>Description</h3>
                    
        <p>Call C_GenerateKeyPair() to generate a key pair using the mechanism specified with
               given parameter. Key objects are allocated using the attributes from pubAttr and priAttr.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>param</td>
                <td>Parameter for the generation mechanism</td>
            </tr>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>pubAttr</td>
                <td>Array of public key attributes (CKA_*)</td>
            </tr>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>priAttr</td>
                <td>Array of private key attributes (CKA_*)</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>PKCS11Objects[]</code>
                </td>
                <td>Array containing the public key object at index 0, the private key
                                       object at index 1.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Generate a 2048 bit RSA key pair

var s = new PKCS11Session(p, 1, true);
s.login("12345678");

var priAttr = new Array();
priAttr[PKCS11Object.CKA_SIGN] = true;
priAttr[PKCS11Object.CKA_DECRYPT] = true;
priAttr[PKCS11Object.CKA_UNWRAP] = true;
priAttr[PKCS11Object.CKA_SENSITIVE] = true;
priAttr[PKCS11Object.CKA_ID] = new ByteString("23", HEX);
priAttr[PKCS11Object.CKA_PRIVATE] = true;
priAttr[PKCS11Object.CKA_LABEL] = "GeneratedPrivateKey";

var pubAttr = new Array();
pubAttr[PKCS11Object.CKA_VERIFY] = true;
pubAttr[PKCS11Object.CKA_ENCRYPT] = true;
pubAttr[PKCS11Object.CKA_WRAP] = true;
pubAttr[PKCS11Object.CKA_MODULUS_BITS] = 2048;
pubAttr[PKCS11Object.CKA_PUBLIC_EXPONENT] = new ByteString("010001", HEX);
pubAttr[PKCS11Object.CKA_LABEL] = "GeneratedPublicKey";

var keys = s.generateKeyPair(PKCS11Session.CKM_RSA_PKCS_KEY_PAIR_GEN, null, pubAttr, priAttr);

s.close();

</pre>
        <h2 id="wrapKey">wrapKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString wrapKey(Number mechanism, ByteString param, PKCS11Object wrappingKey, PKCS11Object key)</p>
        <h3>Description</h3>
                    
        <p>Call C_WrapKey() to wrap a key using another and the mechanism specified with
               given parameter.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>param</td>
                <td>Parameter for the generation mechanism</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>wrappingKey</td>
                <td>The wrapping key</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>key</td>
                <td>The key to be wrapped</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The wrapped key</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var s = new PKCS11Session(p, 1, true);
s.login("12345678");

// Generate a 56 bit DES key

var attr = new Array();
attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES;
attr[PKCS11Object.CKA_ENCRYPT] = true;
attr[PKCS11Object.CKA_DECRYPT] = true;
attr[PKCS11Object.CKA_EXTRACTABLE] = true;
attr[PKCS11Object.CKA_LABEL] = "GeneratedDESKeyForWrapping";

var key = s.generateKey(PKCS11Session.CKM_DES_KEY_GEN, null, attr);

var attr = new Array();
attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES;
attr[PKCS11Object.CKA_ENCRYPT] = true;
attr[PKCS11Object.CKA_DECRYPT] = true;
attr[PKCS11Object.CKA_WRAP] = true;
attr[PKCS11Object.CKA_UNWRAP] = true;
attr[PKCS11Object.CKA_LABEL] = "GeneratedDESWrappingKey";

var wrapkey = s.generateKey(PKCS11Session.CKM_DES_KEY_GEN, null, attr);

var wrappedkey = s.wrapKey(PKCS11Session.CKM_DES_ECB, null, wrapkey, key);

var attr = new Array();
attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES;
attr[PKCS11Object.CKA_ENCRYPT] = true;
attr[PKCS11Object.CKA_DECRYPT] = true;
attr[PKCS11Object.CKA_TOKEN] = true;
attr[PKCS11Object.CKA_LABEL] = "UnwrappedDESKey";

s.unwrapKey(PKCS11Session.CKM_DES_ECB, null, wrapkey, wrappedkey, attr);

s.close();

</pre>
        <h2 id="unwrapKey">unwrapKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">PKCS11Object unwrapKey(Number mechanism, ByteString param, PKCS11Object wrappingKey, ByteString wrappedKey, Array keyAttr)</p>
        <h3>Description</h3>
                    
        <p>Call C_UnwrapKey() to unwrap a key using another and the mechanism specified with
               given parameter.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>param</td>
                <td>Parameter for the generation mechanism</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>wrappingKey</td>
                <td>The wrapping key</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>wrappedKey</td>
                <td>The wrapped key</td>
            </tr>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>keyAttr</td>
                <td>Array of key attributes (CKA_*)</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>PKCS11Objects</code>
                </td>
                <td>Unwrapped key object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See wrapKey() for an example

</pre>
        <h2 id="deriveKey">deriveKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">PKCS11Object deriveKey(Number mechanism, ByteString param, PKCS11Object baseKey, Array keyAttr)</p>
        <h3>Description</h3>
                    
        <p>Call C_DeriveKey() to derive one key from another and the mechanism specified with
               given parameter.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>param</td>
                <td>Parameter for the generation mechanism</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>baseKey</td>
                <td>The base key</td>
            </tr>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>keyAttr</td>
                <td>Array of key attributes for the derived key (CKA_*)</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>PKCS11Objects</code>
                </td>
                <td>Derived key object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var s = new PKCS11Session(p, 1, true);
s.login("12345678");

// Generate a 56 bit DES key

var attr = new Array();
attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES;
attr[PKCS11Object.CKA_DERIVE] = true;
attr[PKCS11Object.CKA_LABEL] = "GeneratedDESKeyForDerive";

var key = s.generateKey(PKCS11Session.CKM_DES_KEY_GEN, null, attr);

var attr = new Array();
attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES;
attr[PKCS11Object.CKA_LABEL] = "DerivedDESKey";

var derivedkey = s.deriveKey(PKCS11Session.CKM_SHA1_KEY_DERIVATION, null, key, attr);

s.close();

</pre>
        <h2 id="signInit">signInit()</h2>
        <h3>Prototype</h3>
        <p class="signature">signInit(Number mechanism, PKCS11Object key)</p>
        <p class="signature">signInit(Number mechanism, Key key)</p>
        <p class="signature">signInit(Number mechanism, PKCS11Object key, ByteString parameter)</p>
        <p class="signature">signInit(Number mechanism, Key key, ByteString parameter)</p>
        <h3>Description</h3>
                    
        <p>Call C_SignInit() to start a PKCS#11 signature operation.</p>
                    
        <p>The method accepts keys in two different formats. Either as
               PKCS11Object or as Key object. The former can be obtained using
               the PKCS11Session.enumerateObjects() methods, the later using the
           KeyStore.getKeyFromKeyStore() method.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>key</td>
                <td>A PKCS11Object</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>A Key object</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>parameter</td>
                <td>Parameter passed with mechanism</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Login as user in a read/write session
var s = new PKCS11Session(p, 1, true);
s.login("12345678");

// Create RSA private session key
var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_PRIVATE_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_RSA;
attr[PKCS11Object.CKA_LABEL] = "MyPrivateRSAKey";

attr[PKCS11Object.CKA_PRIME_1] = new ByteString("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", HEX);
attr[PKCS11Object.CKA_PRIME_2] = new ByteString("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", HEX);
attr[PKCS11Object.CKA_EXPONENT_1] = new ByteString("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", HEX);
attr[PKCS11Object.CKA_EXPONENT_2] = new ByteString("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", HEX);
attr[PKCS11Object.CKA_COEFFICIENT] = new ByteString("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", HEX);

attr[PKCS11Object.CKA_MODULUS] = new ByteString("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX);
attr[PKCS11Object.CKA_PUBLIC_EXPONENT] = new ByteString("11", HEX);

var prk = new PKCS11Object(s, attr);


// Create RSA public key
var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_PUBLIC_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_RSA;
attr[PKCS11Object.CKA_LABEL] = "MyPublicRSAKey";

attr[PKCS11Object.CKA_MODULUS] = new ByteString("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX);
attr[PKCS11Object.CKA_PUBLIC_EXPONENT] = new ByteString("11", HEX);

var puk = new PKCS11Object(s, attr);


// Create RSA public key in SCSH3
var key = new Key();
key.setType(Key.PUBLIC);
key.setComponent(Key.MODULUS, new ByteString("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX));
key.setComponent(Key.EXPONENT, new ByteString("11", HEX));

var crypto = new Crypto();


// Initiate signing operation
s.signInit(PKCS11Session.CKM_SHA1_RSA_PKCS, prk);

// Single step signing
var msg = new ByteString("Hello World", ASCII);
var signature = s.sign(msg);

print("Signature : " + signature);


// Decrypt block with public key
var plain = crypto.decrypt(key, Crypto.RSA, signature);
print("Plain = " + plain);

// Verify signature with SCSH3
assert(crypto.verify(key, Crypto.RSA, msg, signature));


// Verify signature with PKCS#11
s.verifyInit(PKCS11Session.CKM_SHA1_RSA_PKCS, puk);

// Single step verifying
var msg = new ByteString("Hello World", ASCII);
assert(s.verify(msg, signature));


// Initiate signing operation
s.signInit(PKCS11Session.CKM_SHA1_RSA_PKCS, prk);

// Multi-Step signing (Step 1)
var msg = new ByteString("Hello ", ASCII);
s.signUpdate(msg);

// Multi-Step signing (Step 2)
var msg = new ByteString("World", ASCII);
s.signUpdate(msg);
var signature = s.signFinal();

print("Signature : " + signature);

var plain = crypto.decrypt(key, Crypto.RSA, signature);
print("Plain = " + plain);

// Verify signature with SCSH3
var msg = new ByteString("Hello World", ASCII);
assert(crypto.verify(key, Crypto.RSA, msg, signature));


// Initiate verifying operation
s.verifyInit(PKCS11Session.CKM_SHA1_RSA_PKCS, puk);

// Multi-Step verifying (Step 1)
var msg = new ByteString("Hello ", ASCII);
s.verifyUpdate(msg);

// Multi-Step verifying (Step 2)
var msg = new ByteString("World", ASCII);
s.verifyUpdate(msg);
assert(s.verifyFinal(signature));

s.close();


</pre>
        <h2 id="sign">sign()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sign(ByteString message)</p>
        <h3>Description</h3>
                    
        <p>Call C_Sign() to finish a PKCS#11 signature operation.</p>
        	
        <p>The method returns the signature.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Message to be signed</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Signature</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.signInit() for a complete example

</pre>
        <h2 id="signUpdate">signUpdate()</h2>
        <h3>Prototype</h3>
        <p class="signature">signUpdate(ByteString message)</p>
        <h3>Description</h3>
                    
        <p>Call C_SignUpdate() to continue a PKCS#11 signature operation.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Partial message to be signed</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.signInit() for a complete example

</pre>
        <h2 id="signFinal">signFinal()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString signFinal()</p>
        <h3>Description</h3>
                    
        <p>Call C_SignFinal() to finish a PKCS#11 signature operation.</p>
        	
        <p>The method returns the signature.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Signature</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.signInit() for a complete example

</pre>
        <h2 id="verifyInit">verifyInit()</h2>
        <h3>Prototype</h3>
        <p class="signature">verifyInit(Number mechanism, PKCS11Object key)</p>
        <p class="signature">verifyInit(Number mechanism, Key key)</p>
        <p class="signature">verifyInit(Number mechanism, PKCS11Object key, ByteString parameter)</p>
        <p class="signature">verifyInit(Number mechanism, Key key, ByteString parameter)</p>
        <h3>Description</h3>
                    
        <p>Call C_verifyInit() to start a PKCS#11 signature verification operation.</p>
                    
        <p>The method accepts keys in two different formats. Either as
               PKCS11Object or as Key object. The former can be obtained using
               the PKCS11Session.enumerateObjects() methods, the later using the
           KeyStore.getKeyFromKeyStore() method.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>key</td>
                <td>A PKCS11Object</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>A Key object</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>parameter</td>
                <td>Parameter passed with mechanism</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.signInit() for a complete example

</pre>
        <h2 id="verify">verify()</h2>
        <h3>Prototype</h3>
        <p class="signature">boolean verify(ByteString message, ByteString signature)</p>
        <h3>Description</h3>
                    
        <p>Call C_Verify() to finish a PKCS#11 signature verification operation.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Message to be verified</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>signature</td>
                <td>Signature to be verified</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>boolean</code>
                </td>
                <td>True if the signature is valid</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.signInit() for a complete example

</pre>
        <h2 id="verifyUpdate">verifyUpdate()</h2>
        <h3>Prototype</h3>
        <p class="signature">verifyUpdate(ByteString message)</p>
        <h3>Description</h3>
                    
        <p>Call C_VerifyUpdate() to continue a PKCS#11 signature verification operation.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Partial message to be verified</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.signInit() for a complete example

</pre>
        <h2 id="verifyFinal">verifyFinal()</h2>
        <h3>Prototype</h3>
        <p class="signature">boolean signFinal(ByteString signature)</p>
        <h3>Description</h3>
                    
        <p>Call C_VerifyFinal() to finish a PKCS#11 signature verification operation.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>boolean</code>
                </td>
                <td>True if signature is valid</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.signInit() for a complete example

</pre>
        <h2 id="encryptInit">encryptInit()</h2>
        <h3>Prototype</h3>
        <p class="signature">encryptInit(Number mechanism, PKCS11Object key)</p>
        <p class="signature">encryptInit(Number mechanism, Key key)</p>
        <p class="signature">encryptInit(Number mechanism, PKCS11Object key, ByteString parameter)</p>
        <p class="signature">encryptInit(Number mechanism, Key key, ByteString parameter)</p>
        <h3>Description</h3>
                    
        <p>Call C_EncryptInit() to start a PKCS#11 encryption operation.</p>
                    
        <p>The method accepts keys in two different formats. Either as
               PKCS11Object or as Key object. The former can be obtained using
               the PKCS11Session.enumerateObjects() methods, the later using the
           KeyStore.getKeyFromKeyStore() method.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>key</td>
                <td>A PKCS11Object</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>A Key object</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>parameter</td>
                <td>Parameter passed with mechanism</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Login as user in a read/write session
var s = new PKCS11Session(p, 1, true);
s.login("12345678");

// Define 3 different single DES key values
var keyval1 = new ByteString("7CA110454A1A6E57", HEX);
var keyval2 = new ByteString("0131D9619DC1376E", HEX);
var keyval3 = new ByteString("9DC1376E0131D961", HEX);

// Create crypto object for internal reference
var crypto = new Crypto();

// Create DES session key
var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES;
attr[PKCS11Object.CKA_LABEL] = "MyPrivateDESKey1";
attr[PKCS11Object.CKA_ID] = new ByteString("0101", HEX);
attr[PKCS11Object.CKA_TOKEN] = false;
attr[PKCS11Object.CKA_SENSITIVE] = true;
attr[PKCS11Object.CKA_EXTRACTABLE] = false;
attr[PKCS11Object.CKA_VALUE] =  keyval1;

var k1p11 = new PKCS11Object(s, attr);

// Internal reference
var k1ref = new Key();
k1ref.setComponent(Key.DES, keyval1);


// Create DES2 session key
var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES2;
attr[PKCS11Object.CKA_LABEL] = "MyPrivateDESKey2";
attr[PKCS11Object.CKA_ID] = new ByteString("0102", HEX);
attr[PKCS11Object.CKA_TOKEN] = false;
attr[PKCS11Object.CKA_SENSITIVE] = true;
attr[PKCS11Object.CKA_EXTRACTABLE] = false;
attr[PKCS11Object.CKA_VALUE] =  keyval1.concat(keyval2);

var k2p11 = new PKCS11Object(s, attr);

// Internal reference
var k2ref = new Key();
k2ref.setComponent(Key.DES, keyval1.concat(keyval2));


// Create DES3 session key
var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES3;
attr[PKCS11Object.CKA_LABEL] = "MyPrivateDESKey3";
attr[PKCS11Object.CKA_ID] = new ByteString("0103", HEX);
attr[PKCS11Object.CKA_TOKEN] = false;
attr[PKCS11Object.CKA_SENSITIVE] = true;
attr[PKCS11Object.CKA_EXTRACTABLE] = false;
attr[PKCS11Object.CKA_VALUE] =  keyval1.concat(keyval2).concat(keyval3);

var k3p11 = new PKCS11Object(s, attr);

// Internal reference
var k3ref = new Key();
k3ref.setComponent(Key.DES, keyval1.concat(keyval2).concat(keyval3));


var message = new ByteString("Hello World !!!!", ASCII);
var iv = new ByteString("0000000000000000", HEX);


// Encrypt with PKCS#11 - single step
s.encryptInit(PKCS11Session.CKM_DES_ECB, k1p11);
var cipher = s.encrypt(message);
print("Cipher : " + cipher);

// Verify with internal reference
var ref = crypto.encrypt(k1ref, Crypto.DES_ECB, message);
print("Ref    : " + ref);
assert(ref.equals(cipher));

// Decrypt with PKCS#11
s.decryptInit(PKCS11Session.CKM_DES_ECB, k1p11);
var plain = s.decrypt(cipher);
print("Plain : " + plain.toString(ASCII));
assert(plain.equals(message));

// Encrypt with PKCS#11 - multi step
s.encryptInit(PKCS11Session.CKM_DES_ECB, k1p11);
var cipher = s.encryptUpdate(message.left(8));
var cipher = cipher.concat(s.encryptUpdate(message.right(8)));

var l = s.encryptFinal();
assert(l == null);

print("Cipher : " + cipher);
assert(ref.equals(cipher));


// Encrypt with PKCS#11 - single step
s.encryptInit(PKCS11Session.CKM_DES3_ECB, k2p11);
var cipher = s.encrypt(message);
print("Cipher : " + cipher);

// Verify with internal reference
var ref = crypto.encrypt(k2ref, Crypto.DES_ECB, message);
print("Ref    : " + ref);
assert(ref.equals(cipher));

// Decrypt with PKCS#11
s.decryptInit(PKCS11Session.CKM_DES3_ECB, k2p11);
var plain = s.decrypt(cipher);
print("Plain : " + plain.toString(ASCII));
assert(plain.equals(message));

// Encrypt with PKCS#11 - multi step
s.encryptInit(PKCS11Session.CKM_DES3_ECB, k2p11);
var cipher = s.encryptUpdate(message.left(8));
var cipher = cipher.concat(s.encryptUpdate(message.right(8)));

var l = s.encryptFinal();
assert(l == null);

print("Cipher : " + cipher);
assert(ref.equals(cipher));


// Encrypt with PKCS#11 - single step
s.encryptInit(PKCS11Session.CKM_DES3_ECB, k3p11);
var cipher = s.encrypt(message);
print("Cipher : " + cipher);

// Verify with internal reference
var ref = crypto.encrypt(k3ref, Crypto.DES_ECB, message);
print("Ref    : " + ref);
assert(ref.equals(cipher));

// Decrypt with PKCS#11
s.decryptInit(PKCS11Session.CKM_DES3_ECB, k3p11);
var plain = s.decrypt(cipher);
print("Plain : " + plain.toString(ASCII));
assert(plain.equals(message));

// Encrypt with PKCS#11 - multi step
s.encryptInit(PKCS11Session.CKM_DES3_ECB, k3p11);
var cipher = s.encryptUpdate(message.left(8));
var cipher = cipher.concat(s.encryptUpdate(message.right(8)));

var l = s.encryptFinal();
assert(l == null);

print("Cipher : " + cipher);
assert(ref.equals(cipher));


// Encrypt with PKCS#11 - single step
s.encryptInit(PKCS11Session.CKM_DES_CBC, k1p11, iv);
var cipher = s.encrypt(message);
print("Cipher : " + cipher);

// Verify with internal reference
var ref = crypto.encrypt(k1ref, Crypto.DES_CBC, message, iv);
print("Ref    : " + ref);
assert(ref.equals(cipher));

// Decrypt with PKCS#11
s.decryptInit(PKCS11Session.CKM_DES_CBC, k1p11, iv);
var plain = s.decrypt(cipher);
print("Plain : " + plain.toString(ASCII));
assert(plain.equals(message));

// Encrypt with PKCS#11 - multi step
s.encryptInit(PKCS11Session.CKM_DES_CBC, k1p11, iv);
var cipher = s.encryptUpdate(message.left(8));
var cipher = cipher.concat(s.encryptUpdate(message.right(8)));

var l = s.encryptFinal();
assert(l == null);

print("Cipher : " + cipher);
assert(ref.equals(cipher));


// Encrypt with PKCS#11 - single step
s.encryptInit(PKCS11Session.CKM_DES3_CBC, k2p11, iv);
var cipher = s.encrypt(message);
print("Cipher : " + cipher);

// Verify with internal reference
var ref = crypto.encrypt(k2ref, Crypto.DES_CBC, message, iv);
print("Ref    : " + ref);
assert(ref.equals(cipher));

// Decrypt with PKCS#11
s.decryptInit(PKCS11Session.CKM_DES3_CBC, k2p11, iv);
var plain = s.decrypt(cipher);
print("Plain : " + plain.toString(ASCII));
assert(plain.equals(message));

// Encrypt with PKCS#11 - multi step
s.encryptInit(PKCS11Session.CKM_DES3_CBC, k2p11, iv);
var cipher = s.encryptUpdate(message.left(8));
var cipher = cipher.concat(s.encryptUpdate(message.right(8)));

var l = s.encryptFinal();
assert(l == null);

print("Cipher : " + cipher);
assert(ref.equals(cipher));


// Encrypt with PKCS#11 - single step
s.encryptInit(PKCS11Session.CKM_DES3_CBC, k3p11, iv);
var cipher = s.encrypt(message);
print("Cipher : " + cipher);

// Verify with internal reference
var ref = crypto.encrypt(k3ref, Crypto.DES_CBC, message, iv);
print("Ref    : " + ref);
assert(ref.equals(cipher));

// Decrypt with PKCS#11
s.decryptInit(PKCS11Session.CKM_DES3_CBC, k3p11, iv);
var plain = s.decrypt(cipher);
print("Plain : " + plain.toString(ASCII));
assert(plain.equals(message));

// Encrypt with PKCS#11 - multi step
s.encryptInit(PKCS11Session.CKM_DES3_CBC, k3p11, iv);
var cipher = s.encryptUpdate(message.left(8));
var cipher = cipher.concat(s.encryptUpdate(message.right(8)));

var l = s.encryptFinal();
assert(l == null);

print("Cipher : " + cipher);
assert(ref.equals(cipher));

// Encrypt / decrypt with RSA

// Create RSA private key
var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_PRIVATE_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_RSA;
attr[PKCS11Object.CKA_LABEL] = "MyPrivateRSAKey";

attr[PKCS11Object.CKA_PRIME_1] = new ByteString("c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", HEX);
attr[PKCS11Object.CKA_PRIME_2] = new ByteString("f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", HEX);
attr[PKCS11Object.CKA_EXPONENT_1] = new ByteString("b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", HEX);
attr[PKCS11Object.CKA_EXPONENT_2] = new ByteString("d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", HEX);
attr[PKCS11Object.CKA_COEFFICIENT] = new ByteString("b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", HEX);

attr[PKCS11Object.CKA_MODULUS] = new ByteString("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX);
attr[PKCS11Object.CKA_PUBLIC_EXPONENT] = new ByteString("11", HEX);

var prk = new PKCS11Object(s, attr);


// Create RSA public key
var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_PUBLIC_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_RSA;
attr[PKCS11Object.CKA_LABEL] = "MyPublicRSAKey";

attr[PKCS11Object.CKA_MODULUS] = new ByteString("b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX);
attr[PKCS11Object.CKA_PUBLIC_EXPONENT] = new ByteString("11", HEX);

var puk = new PKCS11Object(s, attr);

var message = new ByteString("Hello World !!!!", ASCII);

s.encryptInit(PKCS11Session.CKM_RSA_PKCS, puk);
var cipher = s.encrypt(message);

print("Cipher = " + cipher);

s.decryptInit(PKCS11Session.CKM_RSA_PKCS, prk);
var plain = s.decrypt(cipher);

print("Plain = " + plain.toString(ASCII));


</pre>
        <h2 id="encrypt">encrypt()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString encrypt(ByteString message)</p>
        <h3>Description</h3>
                    
        <p>Call C_Encrypt() to perform a PKCS#11 encryption operation.</p>
        	
        <p>The method returns the cipher text.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Message to be encrypted</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Cipher text</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.encryptInit() for a complete example

</pre>
        <h2 id="encryptUpdate">encryptUpdate()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString encryptUpdate(ByteString message)</p>
        <h3>Description</h3>
                    
        <p>Call C_EncryptUpdate() to encrypt a block of data in a PKCS#11 encryption operation.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Partial message to be encrypted</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Cipher text</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.encryptInit() for a complete example

</pre>
        <h2 id="encryptFinal">encryptFinal()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString encryptFinal()</p>
        <h3>Description</h3>
                    
        <p>Call C_EncryptFinal() to finish a PKCS#11 encryption operation.</p>
        	
        <p>The method returns the last encrypted block or null, depending on the algorithm.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Last encrypted block or null</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.encryptInit() for a complete example

</pre>
        <h2 id="decryptInit">decryptInit()</h2>
        <h3>Prototype</h3>
        <p class="signature">decryptInit(Number mechanism, PKCS11Object key)</p>
        <p class="signature">decryptInit(Number mechanism, Key key)</p>
        <p class="signature">decryptInit(Number mechanism, PKCS11Object key, ByteString parameter)</p>
        <p class="signature">decryptInit(Number mechanism, Key key, ByteString parameter)</p>
        <h3>Description</h3>
                    
        <p>Call C_DecryptInit() to start a PKCS#11 decryption operation.</p>
                    
        <p>The method accepts keys in two different formats. Either as
               PKCS11Object or as Key object. The former can be obtained using
               the PKCS11Session.enumerateObjects() methods, the later using the
           KeyStore.getKeyFromKeyStore() method.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mechanism</td>
                <td>A PKCS#11 mechanism as defined by one of the PKCS11Session.CKM_xxx constants</td>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Object</code>
                </td>
                <td>key</td>
                <td>A PKCS11Object</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>A Key object</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>parameter</td>
                <td>Parameter passed with mechanism</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.encryptInit() for a complete example

</pre>
        <h2 id="decrypt">decrypt()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString decrypt(ByteString message)</p>
        <h3>Description</h3>
                    
        <p>Call C_Decrypt() to perform a PKCS#11 decryption operation.</p>
        	
        <p>The method returns the plain text.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Message to be decrypted</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Plain text</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.encryptInit() for a complete example

</pre>
        <h2 id="decryptUpdate">decryptUpdate()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString decryptUpdate(ByteString message)</p>
        <h3>Description</h3>
                    
        <p>Call C_DecryptUpdate() to decrypt a block of data in a PKCS#11 decryption operation.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>message</td>
                <td>Partial message to be decrypted</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Plain text</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.encryptInit() for a complete example

</pre>
        <h2 id="decryptFinal">decryptFinal()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString decryptFinal()</p>
        <h3>Description</h3>
                    
        <p>Call C_DecryptFinal() to finish a PKCS#11 decryption operation.</p>
        	
        <p>The method returns the last decrypted block or null, depending on the algorithm.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Last decrypted block or null</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>PKCS#11 operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See PKCS11Session.encryptInit() for a complete example

</pre>
        <h2 id="close">close()</h2>
        <h3>Prototype</h3>
        <p class="signature">close()</p>
        <h3>Description</h3>
                    
        <p>Close session</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var s = new PKCS11Session(p, 1, false);
s.close();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>CMSEnvelopedData - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>CMSEnvelopedData - Reference Documentation</h1>
        <p>Class for CMS Enveloped Data handling</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">CMSEnvelopedData() constructor</a>
            </li>
            <li>
                <a href="#getContent">getContent()</a>
            </li>
            <li>
                <a href="#getRecipientSubjectKeyIds">getRecipientSubjectKeyIds()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">CMS(ByteString encoded)</p>
        <h3>Description</h3>
        Create a CMS object
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>encoded</td>
                <td>ASN.1 encoded bytestring containing the CMS object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.GPError.INVALID_TYPE</td>
                <td>Argument type is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Argument contains no valid encoded CMS enveloped data object</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See getContent()

</pre>
        <h2 id="getContent">getContent()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getContent(Key privateKey, X509 recipientCertificate)</p>
        <p class="signature">ByteString getContent(Key privateKey, ByteString subject key identifier)</p>
        <h3>Description</h3>
        Return the encapsulated enveloped content as a ByteString object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Returns the encapsulated enveloped content</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

print("Generating generating key pair and X509 certificate for Recipient...\n");

var privKey = new Key();
privKey.setType(Key.PRIVATE);

var pubKey = new Key();
pubKey.setType(Key.PUBLIC);
pubKey.setSize(2048);

var crypto = new Crypto();
crypto.generateKeyPair(Crypto.RSA, pubKey, privKey);

var x = new X509CertificateGenerator(crypto);

x.reset();
x.setSerialNumber(new ByteString("01", HEX));
x.setSignatureAlgorithm(Crypto.RSA);
var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
x.setIssuer(issuer);
x.setNotBefore("060825120000Z");
x.setNotAfter("260825120000Z");
var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Recipient #B" };
x.setSubject(subject);
x.setPublicKey(pubKey);
x.addKeyUsageExtension(	X509CertificateGenerator.digitalSignature |
							X509CertificateGenerator.keyCertSign |
							X509CertificateGenerator.dataEncipherment |
							X509CertificateGenerator.cRLSign );

x.addBasicConstraintsExtension(true, 0);
x.addSubjectKeyIdentifierExtension();
x.addAuthorityKeyIdentifierExtension(pubKey);

var cert = x.generateX509Certificate(privKey);

// Generate the Enveloped Data CMS object

var content = new ByteString("Hello World!", ASCII);

var gen = new CMSGenerator(CMSGenerator.TYPE_ENVELOPED_DATA);
gen.setDataContent(content);
gen.addRecipient(cert);

var envelopedData = gen.generate();

// Get the decrypted content of the Enveloped Data CMS object
// via X509 certificate

print(new ASN1(envelopedData));

var cms = new CMSEnvelopedData(envelopedData);

var result = cms.getContent(privKey, cert);

assert(content.equals(result));

// via subject key identifier

var skidList = cms.getRecipientSubjectKeyIds();

var result = cms.getContent(privKey, skidList[0]);

assert(content.equals(result));

</pre>
        <h2 id="getRecipientSubjectKeyIds">getRecipientSubjectKeyIds()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString[] getRecipientSubjectKeyIds()</p>
        <h3>Description</h3>
        Return the subject key id of all recipients of the CMS message as a bytestring
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString[]</code>
                </td>
                <td>Array containing the bytestring encoded Subject Key Identifier</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var skidList = cms.getRecipientSubjectKeyIds();
assert(skidList.length &gt; 0);


</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
         JFIF  H H   C  C  P"            	
    } !1AQa"q2#BR$3br	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        	
   w !1AQaq"2B	#3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz   ? k_?t+/\Fuj<'_[Hz;K^]{~4x 6߂5pǈtGd
ZeO|v7.-uK<]2-,|7Acʹو<HܗG9$?~ycK-nglaT\<^:,Tjpp,<U*O8.,~'a(TVT.ZΎJ)Q;uYsTOM~ DǧOowG4O Eï´n'$z0 T" I[ '~  	 _0 | Ý] 
?t9 ;_<; F? ==WT" I[ ?X3+h _kQ 
?t; 7_?g;bGgG8H-eY _'H~x+N0sw?5w>fP$OXrEN
<iOAT;7(8\҅7AT\0u)ܔÙ(IËprO2k.VVRqqWڌ>9cXI#HHGGRUԆVRU
>?fcIcÿx4/FGίyV}V[CWBXm˦j" T:MӼ@3vhWRusp<bG(+OC#^r8zX<<ԝN_^u(J5UF9ψw81t%skPեQYT$T7-HBi~_7<#'ƙv&ז؍-I$]#K?üW]g
/T⿏
ZAzZ"	]j 2<ٞ))H̨Tb@$cj U|;+_ϸ
-t9Ri߰k_<spy{|M75;7'!>otWQ7HִB@5\cEfn*|8lmώ<1g8%<ckѿe٫@e}7Q"5y}^陲,XI5oO6쏇	Ҷoo4+cҀ3cR_~JXeD~9Ö.Iⶭ xnĚ4W9Ǯ8+;e	oim(¬0E1@1=:Pm޲]*3xQXx 5E QE QE TmdGlqޤ!z7L!~Rp}H l@o7SHK6nU(/6vS'X}Ab n$nJ n[pATn	<x4 ?:ZF<tҀ%`3q㞢uFl ~ $c9uqPO]qY1\q^JȒYi sG Xǂ\ ӽP+tXOŁrU]:8P@ < Քǿ|t#u83RYbKevA8="$iUcdܤ21uZdF_OLD6pz8}];50<2c3ǯ8~]TPrbaT~g4][ސg#>Շui|rO qsׯ9r~W b)@8cFFy8w9zc\YvcנGN@6Y(ܹHisaD[>2q |qcFz?4vd댃9НߧDnO|:WD.F;G(7u"`y@ϧ9%
89'$
StuNnc;Q3>B}Cg'<O'gCn< tG?F0l($jVv=:5F_pA O<kᶑJ4$=9>X~ SܒuO:W7I-ٗO5|(TrOP9=O=x xDJp.H'i#k9Ф4$8ϥ}=odv0~P@`s>YAxqpyh!a9ӿ_ʢbS}O8˷5+
2|ـ3.SPMylz=l?<f|G8' q:qJ/9ׁӯ#xCђ.'6~%  ;Ϩ~	 eC˓<=1(潜હ9G$~ɒ0J~;W'
5 ;r@=zT~X!V(>n bz63%\L⭋@y8{;{U4z9cXJ,y{ti<Yxܜܟ<<__Rq@U`s9?\Wkjуjl[vإ1Eyv.+/Z"Hvm
s~4yvp'p6G= yޕm/cV@?tuBNznZTyFǹDqT08^i֞$zih:TeGnyc@s6>)t p9 =$O%b]N%[`EQLZBxR}O}B@׮Ahps%,c;a~8׵_RSuKA=:z O= 	KՉw>l~_x]^6ު+c?u3HՄ𦡪	F1BDC'3}' 5K}FɬLvq߇!8XP9zϵQς,ЙM`:bPG~O;|[{hL3C&$EӉb3E2Oٻ^	Yks'?N~rs}~ 
d%Ozzϰ ?/^ܶ r 朌?1ߚoٟOo
$׏z9筋̞ٗ2 %l$& ~W|,Od;8k>_C!RCWrm6R3+`m431~)Q]{zGլS7`"z }wz&ӆ-_s0,,I .#䃌W5y ڱYr65$Q<{q~w/a.ӍFxԉ.cӥ$  ר${ }%q s;z҃6؈{W-~?7ټY/@zQdFlW/ '56J3ǫG9+Fd~ž#0q$  t't\NWQm<AkYW;1 oM p;c5ou=wRi4%Q- Ty/s,9ffuQ> d{׵ }
?b^2Րshq$pss;xG|NH  }Gy|I0G
`hyqA9I˩m$sd1ןj k$7[$窐nA9LKr-f{vӀ`c_	~xCľ5_Kj7̷rB  8^|U =	-hα odyn愒rw=7MRH;!0yz9 : HLTt$n\`tb@<[ʴ~)ʴI oa	M6W
1MR)weH G<P)r6^NM.mՊO~I8NS#sH
8<?_Zr?L3zg:g.[i0 ]O0pBw*F<7ĝ'JmoUM7WN7,̕ /{X%P\57h8ml463uq %G#@l. J3omgSKueJReFi³tp؊URcğ2n%%Rx(TPTNY!s8P~JIלΝI});I3[xOMXwZ{=9Hn1{r%#f? kڍÖۉvmVW=d6s$mFnM՘ww<wž5E{ciw~?5xx<KD|䘾g xtK[C1[CFC1H(¤qƀ*F Py3,ބa~"Ztuafҫ|n9V$d3AߊQf#
rO(U.U+u?Q{.6Kq/0%3+, ԣGu-0HZ:W藀~|+]kF
ƑYL07:G&vv&$K༟pO?a߈ 싦oXZfgOt/K|=MA[ލskRWHдCH[-RNbIF*$I$JI/$F:odM-.$TVInmsd4cV`JY\FVSєA k] ?i/ a,xLGį|=/M+Pot%6^&9mtQIWW'GQ ho٧
e~Kž]σt
<f<G[D}3 kF42+ḞS9Xۢ]SWTSj9r2[.'fE~:|\  -
x_/jχ"}kotcKSӮg🆼AoΟ{wqwCsиVC^8 bߵWm|c}އk?
CϤ"VWӼ1;zެ!^kaG،E]m}{4+o~Wkw?Pio	G,CWKxgz5zTKӦKvtGc*|O}^~h|_jo|GxMųix~uHN>"T`BEq(ɤd5vEE|sX|  g7WxG>;ďO|/yj4AԭuMF[8f]rX&w^|qG_	a?~3 >bᆥk$f9O3+^-Q dEMZP!r9rm+NNnь;FNͻ{N}Zg5]\mv-mlg|g7|_WMѿT :|Vcᯄ~|?e =CRVmik7Q0n$I	z)3bO+Ln|y}R?~/Z,.5A6i5ojZƅqumzo/$4ts.efvf?k+I{E&n+?IsoFOj  pkQoc \xgt_zz_ᆍ"AwOZ4-Atov396|J
>:G~& S. xg ;&ym?:^Ϭ:'LOaKhB3.TکN|)(J_ɥuw_+	 c%kmhs`1ִ~%tmʹe:?uϏY,KX׃>%={+tV{;I1\4Q]m}{;sr˗+ky~_/?_/@ !w
|1n?x[S^6!mM2hDv:GNoi  iᧆ>)]mM
zMoT%h:%Cws޾tIjKv(JVq{4OE|;$D?e/rQ?g?~46ڴ^]KEId״JI%PNjZ=uHGU  ~?dW|j=⟃
Vxx*:w?I5	J,L/I6 "ѩRn抻Mlz'fފ UϏx^)I{[Ezh65֑4VV:VfVh1dכ|g  /~x[U|;OC#Ӽ>$Ci:u%KOoF>ݤY--@3E֚vrO\ݹ]ת3Oړv~;D<G5aa4n4o_Vy?<73:Ʋď4hI
+|UsP+B𶑦K!/tMҡϗP/e8O<ƊAfi٦5g?_8#	O_\xjw\΂$.
k~SQhvQ]o,?q~ iυ k]~(_/,u <A>-oys[/te?,Ry]wE{:{I]<EG8?O|4~&Y zvY˩m9a,q'IF _~_54|5WW>frn~k	ۃ&ke.cS[L| Aԥ:Rq^'˪Nɴ\=X}
-RE 4>| ǫ! ֦f[& =}ON9`g_@SAzH(Pߵ@
ߑ]G AȮ?[}vcБЂA:
E* ci>?˸NiMHZ\;®Ns``ǷUJG;v280^߆ycv'"MII$x¾$vْwA>cq4K-$@.!R@8? Q&fd	>I`88r
[)I8A{ yw
g	-i5rAcI\ƝkH^̊p<!RLtlw# _B8>`>D~Ȫ"7h8#,9Lz(k2$\`հK%Vb/tOue!{o
*y	W qsIO:<`YnrSs;He88&R4RZ0\`"$ߐ2zhɠmP#K;+08]o$<wʭss9؋@}N[|[g~
x-44IE[6v|x|G+mNBxB)K+DXYw`Tdv@1ڂ3jW/mpXyR)̒ 	e '9'z
3ڿ5Gx6& L$gg*^<:{_,F|	FrNHEcҀ>VϘCR=sjj˓vnikJh|QP%Y)$Hy
 @S/}Gqjvwp,pt/[XrIRN
dmQdpF@xlfE";`@l.[<#wRGrA8- oOHV|_H@ŲEmy6@9=>:7?xbŚSe*--/&l4g+ǿ99F1[ME/Vm&-[-Hmn{0#n@G\}sYR6աln -;sv3FH5:yjO>5rY g"GʭpaXsۚuq%K絊>α<RBnjU]TDfݟ8|Qo4\o{K|?k3==NH¶&0%g_>K{Mez--u(5w r$q=w)ןߴ<CM^{;3#þ,dbĤi`Z} 
Ǻ]6[=cfGӧ~+ռ/i彽߿kL(0rYn/c`9{v#|&~k?~#I̺\qj	ke[e/~oZ, kfL|XZ6q@Oc'XVnA աہ?fOyH|0O]Gdf0\q_$x x8/8u[dNNdĳI̓\7M}{<MoEvJV.Ɉc΀[ܓI䜚 i.4[bthY9-N9<EM|Alj.iZ{c]*onx~_'.売7Ɨi0*#;-eI kį1ZZ	osqʭ?"5RB1 kQ kRk_^/G46 m${χ?ƾ ׈Eq1_7Wۃg
M\@0 ҃p'ӌ  i
gdGgO?&VXrsϘlG<Y cvZE-{Pti"	 _NG
=;WE??Ya5j6o2Ku1A)Ǡƭ$\^-.d<9U;sJ׎+;O|>ӼQ/o5{S5%nR4!1yjui
3orc,7rJ/|-̆[ۍQEt {O?_kW="KGub>z'nO(=M~yٳM/
h-Yhs!2P}^_ l|CZfm!Oè[73~x-懮oQO6vIWhG)fpw
 ~.[XXH!جzx
!3NTq^nkiq1ӎ=Ej\|J&4S(-2\pcPHÀHn?kO\ A=%}:)FMa;8$c8Ĳ|[@a 
st?f|efn1zvk&d>WmwY-	2''4~K;H{@g3IfG4}Ikwb͑l~'d?CM7X`nCe:"^2=ӭ i$O n䎤 *tN®I@k_75 PaKILq7M*wA0 ?O֒˰dP+`G,Z ;,3)siB sӚ/"H \: {ko\uOU4!e"Lぐ;qֺ)l_$p$$޷,#}}
 w0xNm1c 	>RNH=zk^?\̝#  s + l]?gMg$dLYsQKbD8?B.,{,cE \|Mq%?c@hHqӒsӽ~HN#H;sqzPj9]rS*j6UَO}1XXBꡰ`9*xh31粓ۯ\sęq$y1OR3t]$VgkW(U&fw-
 ~||=gñk0Dʮܒ3g V$^md 2npy_2m~/U]]rTc^Kgf=Pfa@ h>a|GƏմ2ʨ9>q_k~kIys]N}[A[G{,mF	\?=7zmG7ֹBp2y ךƗŕN}o%A-2\j1ku,*	p_tKx~,N-xgmప%S;T+C0#e dUx*L"qA`Vv^~Oϛ
(_IA~>mnlYl&q/obHDO9"*cr"1=˻l0OF#Ҹ~G7y}<wqXd8VUoQ)FL#'{c9=L)w,EN{\5*ҬUʟ!bXh,LOLSo)φiqaX;/{NhJj%Z4s
q5 4<y;x\^kk8em-&x,g
5i%r;a Mx'~)k6J<5겥
ưŗ6ZN5L'Rh̑:r|Q}׃aYL4BmOG,yj@2o2䲔WdFotoux7@mˤV^0&Ćf
ìbJTjMRR F~k:XW8c&IѧJ-=!ZR? 5iCyҪXϯ:NJrrIuJRKtCh(G
F|7 ǋI nKAsNta>0ġ{HP3Z_&?
H|m~?kO2LW-OşX\[]]hWSMYjg;ytu{m4YmiR4]6j|>4
_l5m.S+MBt{^KՍIkqm,RG!׿h?ּ]gGu *xNޟ5>i^\xvO%C$0NW)D¿ N*/	>| |{Q-af=M×2]ݬ=Av߬_K '!ߵηXB|-Jx Ay_|Ug]~^nuOZԬA5ŧ%(oE_צӊU+[%+]_tgԿ 6?_<KY=wWIXum~ XW5-WS3il*,㼵kk-??x[ҿ`n.K~;o%lhZ[SIKE8,m> 'k?oϋ<]S?dx;Sx]i[_S0ct7ƿnx-غ^YMmc h?'O Xg?^'~\?ƳۅT<)Y#P[U.[0$(Vee5]ʣ/Tů[ vč7GC%-#B|1 u% -  b(%oWou_'_D5O
nZC]x3ZI/$I5;7QkYuHZ_N?f/~_k+^;վ'K]7%ٷ'^6:խ-g>bHcCg_No/=WĿc^ݯ|cktZp4UZMHn	rNG.`m--tu>=~ռM5>|'j7Ju?<OO5sGǀlv׉.lΩ87U / 3 ~#|M?t/؋ d=o^A{K/i:e.al6pM-^ c_*׆xwO ;
S@<Kg>
񗂵+42}cMOM_þ!Ҭ)fFԭm_
?7߳oo-'Oy;w|FݞH߂G
cǅ5
-K{=wN,|\zo7E-I7t鷟*tQӔ%~oI l2y-_'#{ҿjg/.~ҭ?ࢾ1X\\$g5o=:vGZxLw ?Ix+	WC現5~?gkg;i_>q{[u+e|UP4,SѪ1 -??Q
k/~_XVA<Mҭ#|kçj?4-<]]\=giqwfźzR:M٤<]jMV$$vVĈW
L
l: - ؇Oh/_  KuK
WWmM3ekq4^e
ߊ4'El UK-|)F_'EPksz5V4/\/5 `_/o#Q~am^>&494h9?
:_?-|K}.ꭥ_	b{kX%C-Uw
pjZQc&woE㧧# L^o~ǆ|'&[|FּEs7W`xVH|:ϮS{KړY[9/ l E M]{'8>yik&?S=Z[rQ:,S.'VKKh˳e3 $~,_Qc	M G!_
xH i<Ix·WS-oei֥Z(O.e~ hoO ୿RMy?[7u{Xxqi>|U'/|O*Eg'FQ2Jܶw^瑩-ΧV_k{+;qkeǶ2#'_UeO7<$Yj~-]Z'cmE"UJD"W b[ǯZ1M]/{'|Y~o:&{ML'T[C{sk3  ~ O g _~_˯Ɨ|B_AIFKMD>e{i5fm㳁9q#	0#ӟ<g|BK|V|+{'miL4YVL쭯?ӡhZHZ7fմv`Чͩ)(nknNv  +qßrvէV)^U-YИ<9?शFoxǅ*L]㏈<W⫳j.KknilZ)L ]L=,:~f<5	~*/Zǰ) zfBF:d#f3	= P>&|>>>^Sᗉ<9*x+^ucoxkDuJ{)zYm2m=-.[[ ?KsomO
NI&3KVWﶖ?ػ	 %ڃ{ț?Sği|K CfeTԝlHVɚ3a !O	 >s_x 毭.}sė|q!'}]$<p^X=ԋn?V
joxXS
qy= }oڟn<G</4XkZ
>PC,-WY55लW$K~^(
 H5~xǐx~TԬo|>/
X]HDs^#yZDI;EZk}}=~}sTu*Npd4Gk-uxjxQ `/6ĭවw?	NG񎇮
{\FWҤ}P-.͵3k  h >ξ5M}#'GIi/iφui!tkINF{+K}&ԧߵw{-E+G7l>5w?Bމwu-<Yth
Ko'Pkn_G{
c7xcgDg~K߇Ե 4{6{["ov{9g^Z_麖ey %k^ֻBZ>mr_FK;Vw? Fo&_ğ'_~xύ>9<}{R[[/KNլ|=jҦm.5]NPL֟YP 0 :g؋sே΅ ڣÿmSwO_A^+O
1wmdmS N dG >yi.=!Ҽ)⏂`oo<3W3s$7'?fߵGmįZԦ3Rw[# Exe-ZhAkiyPb+k^ھ/׾*5_RQ2M_g~?	U$/w%=Y<K7M0vD[M,E&m	J0 HO_	>~G4|,}ͤ;wWFUMF=mU i 㟈|m  U?eO
izŎ=?>9>>kBEox Vi
{k<Iٮdiso4S3/|9wnZ;ֵ{Vumn:KtPeIqYM M1fK5\ԬӃWu)Քd,?5V]rUbKQ"I};i+;. P(
s8_\Vr>xA ģ¹=9xzܕ?ot"%< CUOId=;2X 0}xǽTl<3޺U!EX.y^M3v%q=Oq\hN],dUyǿN`[ilehnAY߷A ?vxtta2;@[	qZޣuw<H0=3G-_` nb$q;1]/+
R#QD7) zs\ӄ~lt`W'0E:]GƷ@$:Ġ,A
x8?Hp:3=)Iox	-c nu83srƩw
/eq1C޳ʿښuI'v>AϹ<-O3K񕎊xrej,7]*S6jZ郺_3@уӎG%i
O ?2wDDJo7<,|+OM,~V_\`'@5k9GM?k1tS 2	٤!@O /,|{&u4 ߬h%@bp:bV'▋xN,,S,1K&>v:y5o#^u7\ɔ"L22 Oz0ԧ[Z
0NSVqKՕN)Sb~Ij}7|K% [{o*Ir,Hsa%gė! cBHm!e5;9#+<_W9#Ѭ-]d8ef7c Wy_]+7HzQ@p Q1 Wf~(v]NeмU*e)-PޜMlʼt}]:Qv*o]wB:7<Sala$jv!kg| 2XW./I,IOkoZi@y"~aA^iok&kapΫIif'hQuhKQpҿ 
뷎#Ʊ3qEz&BXe^cuu%(yoj\3":f'E]-]S4od]H0W&RO܎9
;M2$+hmƪX@®6>SS4}E;'!b:y=:zT\ex(I8nǮ+^-L9qnTth'ISoq[˰X[:8jt䬹RiKmLK;_C"f^ץyoxrDc5Uz6ҽ*渻o8&2rvq~qԚ3*Nc>V6!)FSԚ4ʪ*vaM;Э8)YIh}aW-j4E&v5ϏZ.tR
WUeַZLP7=ou7q^}%2Gm/LX ,~g_<,('9{3N<@/bWvw:6XChe]8ː[Q|Yx۝ӥ0XI<JZÚϫo|nnTեv_ҶN[:KE[6CX\zM=$uoB ;Kt߃ a`HE
*(ydk`d)r81^U{8t^K;HhVN
~GKJ<%dYiRFhC<|R3$b)M0$7i%gJ.xj^W䮮|qqN_>LYS{d9OǀQbA2{~osf_Ŭx8Kxv# +O3fC+p0)[Ox=,Q12Z;܏I$<Ivv
68L5,#[<me<G<v0NCBi8աR`WKf>r*dVh8=wZSԧW@րK^j*2$,Wh8xOei'&]ݠ:ZIwr<dڞ 5;˩o#ni IX yo7}oK]$7gU1ʒ0B#9;f{ƟKSִM&iOe׶KSivч `Fb
Iҵ`}Oԡ4OC, E9׏i u
:e}w80x,]\d`xKٳm#P:,]O\ O^௱W[֊M?ֵ)TJڸo߲j,'K.iI0>[gȼ9kƯ#Y]QM?V(T	*;`uSTcmXx-K5	(d`r s@k#!ᘼLY27'/8}M_)b_{Z奙`2v2:rv3|74[$;pVe{ "/hxkG̓
s$rX;xs=2xrKxmN$F$㨯ܰG2 P	I=v9 h=[]sDDеյ8?3
 0q|xjigG}òREbS {@- ǈtp$#B*T,e@U؞8k_+P3;@\dޘ9:ƔCo$:,UUNTI&4g,ğ@7qGsp;|F_`۬	70}>F|J@A
>%FڽcR;;f]ks%}vǧN+6%Yj8bDȤ~^(?OmGu_	ޡ f+ %_\.\Nz?ڻVj٢e MNP@U zy?ҼOi2bIc`9,eMc
qص?ÇyQ~s.^[kEKcB1ׇ<Gh"֏6)'ɷ
ՂI$4Y ʐdG޹F  D8[1@q	%ndɫ|(]XS#>	O?U_xIB`\ܛR:svSӱUW!.HdC~<r;7^e}2'
v 7 z Ӽ[XZCɁjvNGnatbʳ[^\# CC{l۩=Վ4SIEex!njz yZ@t6SM'IC}ycD*R@<=1Gd6	6S$']wzŴV}fʥKd`$l#
mo*$ܤ2́8z d%RO#dTӡp+E	Ӯ
z[hZjEIb0y PJ{{;cYIZ3)'9 d𶗧x3vM:"67@峜e0>m|ǚYP*8WrÿaGxm,.|'fYİ*3p2qki:Y< 
]G2FHC10CUc F={P9Ky9I
8WH#0$ yMZ\ S}3cx
|YueFYu=CN1l !Qz O <Kyb<Q^u)U%7
te){8I28(Wk~wy}E)+QTWrN;_N3ߞ(rIx?L3a=?ϯ`g' kyZu~r>/^m&]'Zzm.}6?1,01LdB/~8MK$۾+\sjJ}
6:`e&o瓜c~?֚T220ܬ
ܬ +.H$#2GO> x[? qbq2K5R)֪y6:lVҕUWfSZ*	{G6[ӥfXFU%c˖8vNt^47R7P׼=h# ^mPyp[x3qY[EM^~JVTb'6	&j%֎Hbvk{k[Mn
Cf_Rov#F> 6s?ٝw8焾>_iY#JMǒKբ' x?߆M|B8FwUB521t+),>x<%6|^8X:r~'K8rs,_7եW e94QN:#ǟ1/sm[[>$e<EŏzR[]GYiX?u I?|.m^877֊qjH&2[>F?qB״j~( b~מ,-7|><!uxĿ<[fGw W\6h6^$з4}C]tHȰpy3.qJS(ՠjtЕJU"P֩U[
YPBJ9ѫ=NXǿb??-gĺ'
j~Ǿ-7!~x
|cW jz][ g4/Tkl ms io7x+l)+
R&oY5y
F ߱k7/Kv?o~;A|	k^o+E:ޣ}<7s{}w}3uu4Ͻ~~zW7z[ilg:
-Ǉ4w=wsC5$"Eٽ_[+^6I=z=.~Vxw_ğO_ێy4|r6=wzSӴ
 z3-æ
^K8y \Z?uZ~:Û؋J[yaiy#N>0?ğx_],ښ:jyv6F?~5?d~;~^Kfoͣ?I4m&-Nڮs^hxbӥm'Q7Gf ?m hÍ+:T?-Rhm|Q	u9U\hr%{o Y+76S_[WcN ||sᯁ#m_0x@#i>5O]jD3xG/tj\A4rR'߂߶+Oo7ĝ& x_\`Լ4v5]/-n%h,/մuӟ|1_ןxC]

"_KM2LӼ-acegoeoϲ
#Č	~|;
xffw|3gyY{O-Ϭ_j7g[=elY$Af~>wa7;&3m?Kߌu_ u^h ]Z<-NMJZ獼{?W"Gzt9x?7o|/>X
^\Bnosu;Zx
:lEyg+07Im%}qϟ˽BWw mIuZ;]U%It\PIMGD5|V%Z5}gXO5+]kHk
e[[t.}iot;Qi$`{lAL+/=;m#h׵Oj[}Wt?_]C+UmI5_EKV.bI-K;y#G؇i[NQot˷.VW:/]SV5ִ>RE%? x/|G#Sl];L!$IKcK`["YSzΣ	i:n(a׵[oYO.Sֵ)o5[H#a!5˿w.(|_cծ4]֡]OEGEqts:tV+wHY8{ 4<{/"ٲ D<UZ
Φ./mtQ{skxo#ZwKh"wSn>~%τh|C4Q~V0#JU0ķ \",IW-ׂ5k:N]"{i)ivզ,m%R@&aiOa_> 
ZlJnA~i_
\AռGo?ןb
 }Sb|W>7yh>qv5ئibsh7ҵKIb5X-/̲I$Q~Է
E<_]lGvxoS].Q%\&q$7zx?@/ewLWΛ 	N3H6dwN#cn+xTQ3@ߵo'7 ~6>O
xo[Z/4eֽqi\OOk/*? ~ <_&t\GOK3"Gw
ٵ~l go3YO_	/)u?)cO.hlFMim[[66ڂXE
q? ~Ŷ_#Ζ_+?e7/tggq{S:d71eWao$]xHm.m/n _ֺRMJWizw~at q߲0>͇|mwZ  w :5
55?om{gM`xF|!y6|M_ 96|:Z?&&$ZO/^]bh-t\G$qf~Ho #	u=3M>xv94>ipIklti,'Hnt-,&O6K~˟' ςB5L)j4' 7^<]6g˭&bBIgmAӻT]};j8d;??T
Ӷ? 	mWo5}#|%^X[GivH4UL~|s|a~_z3KOŏYxFx=ͮxTO'<Cj~o3&eϮZ\i:wQ^?79~οoi~|2 C?}S^|Y>w>ikZ֠/	`GϿl>9j ůo\OⱲ2݆kfOQ&Vۤk9,ROMӾjV;%kw+_{#gOۇE?ag&~	
cM?TK)5hxG^0)4+A\XMۘ&y gL5h)Zu}蚇|%^&^$ /wLյtug_K xBέIӦ_uOw'K+]xݮ<z<2kQ!DM<QxWx?~/_Y^6
Gt_S4iw,4[GsLtei.~eI;G>K9wa?ώ4Kim7am|>[Ok߈4hִ6
	x 78H>|& v ~8~ׂ-Ӽq xZ__|۵:N#ux\BӦ'?G<A'_}o~.E<a%߇i:Ke 2+[N -X΢giF߲ok¯~[?cS MGm..4SFӧ:5żOw^"Cse,Rʎ?//_I5iEK]n  .](uuu{O#bkx{ϋ^mXSV^c8%5ws]q
wx[\w
fHD
>+3O+k~+,rΫOtB⸓~!< bߊ > ~^]BUcqiៈ$^x!y.<QjѫN2}Hݞ:vZ&&cm6FZnQCgaipCieei6ֶQ	\mn|~-yU潭r  :̺ՂHʱ=On=?Wĭ
T.-eyP/rQ <UK.pA
B` q3 88/!sh?֦[XT!L=}ja0 >3Pe [s`2zd}ۓUM0sskO>i[#Tz,u^ c$ibX
=3\^8?qںgU!u95kRy2m9^p? }9$/1}9F9ڀ",`1}:["K򝍝A=Tn FČt;1Ͳ̦c:QWV0o0<ߔbٵ5|D(RI;iݵ{/;i T#搲#R#\4"<dl_?BqIkB<'dP3p1#J8 ~=l>I+L=8ҡ{]%RM05j41[d.,|Uq+g] wڷ<mG۹ SjmlqZ_c* w({w<f*#m@
BI>g?Uel]A4MxEg-+_(p
ZnɴzIqO-Ùnyiɸ\9#b?ujc\	 z]TO2>b .O88 cR9~cg9k7[2qIZy7%Nk(1_qQaFT ڹ[m̴V\cdk w<θK*ds
0Bz33ǧ};qׂy9:qӃ:VK0Aa $px9
^YM/ucmwvkIik,m3oLX늊i.%22H,-r0O$dxۭ9`L`ʦTpX@qlzuѴ;(DI+ny\esǭT[T
qwWO\UzrO?OOruc\&  NOTkwl>zoԄ9?D*wyJW`9 щ:b˳`~ 6`yTmz/7o NغncFP<WJH3p$ᛟ'Kw0yN0r>8e' `Y^Ic?]c .,aç 烚jkt:kfMEӪ:wu]s#ӯf{':G`p}w'N~!pTp0N#Ѓ۽NPI*@8NO^WˣMiTߕ[~'	qȥH6Fz\L˦[Ǧ\pOam0|8x9^u<	l$9hd# i'jtQwq9sͼ >zMzx,2je9^qJJӂj285ƭ
8uBZI)/}-N~>/pg9`
A>G2	/Mii7)8FS(R?Ux}J	>Hll0=w+@AF~!8;up>0qvKp+'hooCǫYuD#Rhͽei9.sşYNj:=݅vrϼ^r~G:yFCd3+5^B\ڇCLG>=z^u'k[wiOQ&]1܌Ƽ(9p5x<\ʬw5/&xxFMj´:*l}+X06-^@^Eyǭfc<ʣk@ Ԁz-^af<R%wF0H" ڷ|MAmil<s j8> .g
x<Է-*ҖoelDiJɽvVs:rʯyA*ZkgɈ&Ql,-4ѦRFFʍ<ֿJ5/3DW}tPe̠$s4۸'H^G $v_e*;7let~FQRӋM4i4֍Yg ^?EŅ
$P9 	c=1_A=7"#Ǖ滅RC0ڧkVG.0:n9z2EPHΩnNUA_Aj se
u{gtr{C!Q!H<ߕmCGY5M*pFbssjPkHMD$Q$
!@r$qsr=QZ=WKӵʕ",\O?L@?<Yei]|q<?(N>X|`d޹5?:4nn|p tB+eRbpU<čۏ<P_4imʩ
@9e|EN ;nhJqDH9uσ?Ti-ħv<s('',<[>WE2\4 H5#nW`Nq@z}ͦ:@6nqmp}JГH5ImR1PGVS%픂Kind	`pya r8F68d|Ok#y& &`0z s@q]MR^2Z4cLcq+>xR
, S$Gqgn@R	OCӎktCjf#)1#)?H+ڃOk&PU`neF qӐ(*aMعc2폛?sW߲ L#X+)'ԖZK./][o{k,e^m؁:oI|W\4C5vrb#N9 ~cJ7vv=|i̮2{*@"Fp!jd)Łc}w}TV^?bT,^)Re|}rs~rQ<=:w"@JɞC9'~}}ik$*&3	~z˴AT6>|r{s؃k=CC,}N#~d}y 1g'A3N\OI"̟+H ߶?5+w𵽫R,x郟ι?~[r4Lku#l3dI} }Co$5;ZMޯGDū2K"=>vpsecm<>#=vWZ(xGmR/tWN\Z[TG8oT`
?FUeee
YHV 	85g?cٗŚι𜺝n,#44f[]Nyg;y/Ӆ|pZ<eL_-L.(唳|sGO(c<7)b]:j4iêÿ~U(YdjζLTuRԫSZ411QR$RSq'0m?DyЏ׵(g?ߚI ?h^W /^F/x  ϡ G! & ܿ--Vק-G#ӚݮE	]r"R?e#Z
U ?e#Z
S ?? "M
_#i _?yk`9^=G|>$V{xbEPĴ Nw9O ?h_6WU;(4mBǅU6ډZ[
SU Ut fNSR^0puM4dғҺn3I3PWqRRrʥmK,M=ZM6(y|-"ĭھ~ji&-o-kwS熣%ަ-"3*Lc?:]O.^͒ڇc;=6C"a8AO8-l $P[[©ƀ*E""*VkÎ🂲^jUdj/b
*R)Ӗ'4(PQNp%;ٴ,^6q(PХN*4)˚ۜS 4|7{U,-hy
\p|=z_PO
 $X@?ue/Y\*	.jZ;j$_?Eh>|R?G"bKP_M8Rݓr(v>'7 ΐI<.|e |$u	@x* rAc\o_!뙴-'[ yf*@ʓڋ|,/5z̀_rH^5vޕ|MpfqZٹv7RN|IyxZS4v=F/9+A}O^h4Gjo]L~,].Hɭ(((*ǧ	# 8'=괗cW?@TV#\bN' MG?	 E`2e>r.sPB|?_@S>wyqo  Qc4W#]?l  DI;pڋ,Tuf9#<=(~g?"g!x|>Eu '+퇞xo-INg|d1~<ƫ.2PGBW9ҹۯ"ש\s;qb pD_YRu{IFVJJͻ:Ďy1+hfJ;p+˒1(=2?}[$,x!\+$w#Sy!F#ݭV\ҝ8G^&1]Vj.oߪv(. $<th>Rw9 gpZD<92?O@z~1ߙeݩ\~~c/U2UZ5¬ҋu*85if{xg/8JJչl$ҋznv{;p,A'=1J<`޽tWr(¨㎭ps~Fy8G cKb1ӴV޶kr>tF1KeemwLT?-BFs~14yKvc#֔nv 9ǵdOshlO`Cj⓻J+Wme}Z;k^d4k2<$* p=9f8b}:ɑ9cׁKqtV2$G\s*9$b+:y,F}
Jm'k4ϯ}{^=~m=w^Mb  99xqFH9=G^=@R1 }zdp1~3f$G@	ϧ\ ӭeu_-n
kn;-vFMF[hiXu n9X]rKn^Oq06	#n:28 5'tי~RI$ {wT99xזɷ׽J]4_v7YZcIY$e@A+r=sr*7afg/q=H#;așNK;3~^H0F@,Nq!SeeCM}nYrۧOo}R-g]=VRtu@;=x>#E rvĒ
p7	< N6Q||E{$Vנ'{{]ni;g{h1.IY$kkK>6 o<TuoOCw"#mb+>xjyF	oǐ+гZE<߀G?Y5O]{=WM6.p,w
Hs<^"x#3x*sFO9lFsԜr
Hj6;d?_]o[^W^z=_u앟m-zzJ"@"HXY\0qz/*Dg u{Nz=)4E/޼'9[18eh*`Op83nݓ+m{-5c|EOXFeV*|Ѓ	3SFCʌpН8ݑRhfmR?ҐߪƣKc9T&4ٻDF!|RsZ^\j-%{u?U+>K[+klYW?f){Id@\;GlҮa3+#tY0Rʹb?29f/?-i}ϥ;+o+dOqygs1QT92BNz`G}	82J^f/.؂E!Uq/8- [l5V{5knݓğKrbg;]pscfϧΙ*4d
dp=y+`^Om+Ax9$l3[Pc5Z[@cG'O3%NHO -(Y=[mY+=֫WdK/;_.ۋyЌh@pyH g`W!q+Y^k$_F2N? Gc>\gڱ!λ|  ^>S<ESsl]jaki*5ZWW91-Zޞ /,QucX|KNL-5{9	=j.8zsWR>@!I(n \W76()#u'x%O^qߡ˽&w[8
UmAFUƤu%'j-IBnǃ_pwjRm
\K{[IexjV0O-xK'N ldz=<#ZlRy*l&X7ĠSgCOy'/!;Sʘ/fHW39<ҿAɼ_Τh#(/Q+[w<|O
Eʓ%$TfؖleP=NF=?CM7/sr9$ƸuQh7ne	G,0y3ʳY9A"ެA9 {bY`~"ۨbs/vR<z,]{\5h_kӕ+mOǞ7`BsM-5jz^!ʓuopN;.ysl4{60GqgR
z硸R`b,*ߐz^eJ2RԢӋ]WMyiVk͏|'{ѤҮ\Z=@v81ּo$G8[)qB#3 @ZsXeLjx#L{ʤ:	`U2`n 1|)0}61ǲz`\
X\X7Vos\v
w1e	#};+npIAey/n՛9-"0 4Z5b	 #Гӵ ಑FSP{WzyymdpZAD`5\-ҮC ckW1+7
ޫ	 \A
ܠfPY٥mp2@(i-v@${Б}%scO*VE9VeaA#
u)f.	P{|0c%B||[Ƒɫ2YT)q\{Bхju%A1 
@ےCs^ 8^Ab$*\Hm$6ȣ{κ/΅\@Ih kZ5idfeRcz`[5i'H`,31
N $c99ٷ!'J\R4WI` u~=rA=kb-ݸ0vpmt8K8"pq8<qV#ҵ=4W:_"itX<*W~qV\MuvKnTX.UnVA*>Mķqt%Q'_Rx=*'֕C47
.(5o7Kek9?1C'	$qs暟<AHWUu'Wu՜pYYǓ`9
ωn@R?x|g[#]Fc,{ve
ʒ}N(5TUR\e  9+Q 'b"3mR rrFQ_fjZOؙb]q٤JI2I>Wu׌ˣjNد`Bn?̗%ח
ūYq|{,8$3 tŶ Rr]@ǌ`[au+wk<	^HCd4JAYbpEݑ (9
z}zf(`|V%,<;q](Va8Йʹn*8rA湶䪽B2)x8e;gمUm%	N_Z '
l.+tl#vʠd`r=J62^Y\Hnme29 ux$X4PrN郞r8Úg<*56վT) Xm<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>CRL - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>CRL - Reference Documentation</h1>
        <p>
            <p>Class implementing support for Certificate Revocation Lists (CRL)</p>
                             
            <p>This class provides a wrapper for java.security.cert.X509CRL objects. All methods
                 from this Java class are available through the LiveConnect mechanism.</p>
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">CRL() constructor</a>
            </li>
            <li>
                <a href="#getNative">getNative()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">CRL(ByteString dercrl)</p>
        <p class="signature">CRL(String crlfile)</p>
        <h3>Description</h3>
        Create certificate revocation list object from DER encoded CRL
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>dercrl</td>
                <td>DER encoded certificate revocation list</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>crlfile</td>
                <td>
                    <p>Filename of file containing DER encoded certificate revocation list.</p>
                                      
                    <p>Unless an absolute file name is given, the path is relative to the location of the
                  script in which the constructor is called.</p>
                </td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The certificate revocation list has an invalid or unrecognized structure</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var crl = new CRL("root.crl");

var ncrl = crl.getNative();

print(ncrl.getVersion());


</pre>
        <h2 id="getNative">getNative()</h2>
        <h3>Prototype</h3>
        <p class="signature">java.security.X509CRL getNative()</p>
        <h3>Description</h3>
        <p>Return underlying native java.security.X509CRL object. All methods of the 
                     Java object are available through the LiveConnect mechanism.</p>
                             
        <p>For methods with return type byte[], as ByteString object is created.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>java.security.X509CRL</code>
                </td>
                <td>Native Java object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var crl = new CRL("root.crl");
var ncrl = crl.getNative();

// Use Java native method to obtain version of CRL
print("Version: " + ncrl.getVersion());

// Call Java native method to obtain encoded format
var encoded = ncrl.getEncoded();

// Call Java native method get IssuerDN()
print("Issuer: " + ncrl.getIssuerDN());

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>XMLSignature - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>XMLSignature - Reference Documentation</h1>
        <p>
            <p>Class implementing support for XML Digital Signatures</p>
                             
            <p>This class provides for the ability to create and verify XML Digital Signatures.</p>
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">XMLSignature() constructor</a>
            </li>
            <li>
                <a href="#addReference">addReference()</a>
            </li>
            <li>
                <a href="#sign">sign()</a>
            </li>
            <li>
                <a href="#verify">verify()</a>
            </li>
            <li>
                <a href="#saveAs">saveAs()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>String</td>
                <td>INCLUSIVE</td>
                <td>The Canonical XML (without comments) canonicalization method algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>INCLUSIVE_WITH_COMMENTS</td>
                <td>The Canonical XML with comments canonicalization method algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>EXCLUSIVE</td>
                <td>The Exclusive Canonical XML (without comments) canonicalization method algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>EXCLUSIVE_WITH_COMMENTS</td>
                <td>The Exclusive Canonical XML with comments canonicalization method algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>BASE64</td>
                <td>The Base64 transform algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>ENVELOPED</td>
                <td>The Enveloped Signature transform algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>XPATH</td>
                <td>The XPath transform algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>XPATH2</td>
                <td>The XPath Filter 2 transform algorithm URI</td>
            </tr>
            <tr>
                <td>String</td>
                <td>XSLT</td>
                <td>The XSLT transform algorithm URI</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">XMLSignature(String filename)</p>
        <h3>Description</h3>
        Create object and initialize from document in referenced file.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>filename</td>
                <td>Name of file containing XML document, signed or unsigned.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var ds = new XMLSignature("xmlsig1.xml");

</pre>
        <h2 id="addReference">addReference()</h2>
        <h3>Prototype</h3>
        <p class="signature">void addReference(String uri, Number digestMech)</p>
        <p class="signature">void addReference(String uri, Number digestMech, String[] transformations)</p>
        <h3>Description</h3>
        <p>Add a reference to the SignedInfo</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>uri</td>
                <td>The URI pointing to the signed data</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>digestMech</td>
                <td>One of Crypto.SHA_1, Crypto.SHA_256, Crypto.SHA_512 or Crypto.MD5</td>
            </tr>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>transformations</td>
                <td>List of transformations to apply for reference</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ds.addReference("", Crypto.SHA_256, [XMLSignature.ENVELOPED]);
ds.addReference("./xmlsig1.xml", Crypto.SHA_256);

</pre>
        <h2 id="sign">sign()</h2>
        <h3>Prototype</h3>
        <p class="signature">void sign(Crypto crypto, String c14n, Number mech, Key privateKey, Key publicKey)</p>
        <h3>Description</h3>
                    
        <p>Create signature using the private key and signature mechanism.</p>
                    
        <p>The data to be signed is canonicalized using the selected method.</p>
                    
        <p>The public key is stored in the KeyInfo section.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Crypto</code>
                </td>
                <td>crypto</td>
                <td>The crypto service to use</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>c14n</td>
                <td>The canonicalization method to apply</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>mech</td>
                <td>The signature mechanism to use</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>privateKey</td>
                <td>The private key used for signing</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>publicKey</td>
                <td>The public key to be included in KeyInfo</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>The cryptographic signing operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Create empty public key object and set size
var pubKey = new Key();
pubKey.setType(Key.PUBLIC);
pubKey.setSize(1024);

// Create empty private key object and set size
var priKey = new Key();
priKey.setType(Key.PRIVATE);

var crypto = new Crypto();

// Generate key pair
crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

ds.sign(crypto, XMLSignature.EXCLUSIVE, Crypto.RSA_SHA256, priKey, pubKey);

</pre>
        <h2 id="verify">verify()</h2>
        <h3>Prototype</h3>
        <p class="signature">boolean verify(Crypto crypto, Key publicKey)</p>
        <h3>Description</h3>
                    
        <p>Verify XML signature using the public key provided.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Crypto</code>
                </td>
                <td>crypto</td>
                <td>The crypto service to use</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>publicKey</td>
                <td>The public key to be used for verification</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>The cryptographic verifying operation failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

assert(ds.verify(crypto, pubKey));

</pre>
        <h2 id="saveAs">saveAs()</h2>
        <h3>Prototype</h3>
        <p class="signature">void saveAs(String filename)</p>
        <h3>Description</h3>
        <p>Save XML Digital Signature to file.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var fn = GPSystem.mapFilename("xmlsig2.xml", GPSystem.CWD);

ds.saveAs(fn);

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>ByteBuffer - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>ByteBuffer - Reference Documentation</h1>
        <p>Implementation of a mutuable byte buffer.</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">ByteBuffer() constructor</a>
            </li>
            <li>
                <a href="#toString">toString()</a>
            </li>
            <li>
                <a href="#append">append()</a>
            </li>
            <li>
                <a href="#byteAt">byteAt()</a>
            </li>
            <li>
                <a href="#clear">clear()</a>
            </li>
            <li>
                <a href="#copy">copy()</a>
            </li>
            <li>
                <a href="#find">find()</a>
            </li>
            <li>
                <a href="#insert">insert()</a>
            </li>
            <li>
                <a href="#toByteString">toByteString()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>length</td>
                <td>Number of bytes in the ByteBuffer</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteBuffer()</p>
        <p class="signature">ByteBuffer(String stringValue, Number encoding)</p>
        <p class="signature">ByteBuffer(ByteString byteString)</p>
        <h3>Description</h3>
        <p>Create a empty ByteBuffer object or a ByteBuffer object containing the data from stringValue decoded
            according to format defined in argument encoding or a ByteBuffer object containing the ByteString object passed as
            argument</p>
                    
        <p>The following encoding formats can be used for the stringValue argument:</p>
                    
        <p>HEX - A string containing hexadecimal characters and arbitrary delimiters.</p>
                    
        <p>ASCII - A string containing ASCII characters and characters from Latin-1.</p>
                    
        <p>UTF8 - A string containing Unicode characters.</p>
                    
        <p>BASE64 - A string containing BASE-64 encoded data.</p>
                    
        <p>OID - A string containing an object identifier in dotted notation or
               separated by blanks (This is a proprietary extension to Global Platform Scripting).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>stringValue</td>
                <td>String containing the encoded binary data</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>encoding</td>
                <td>Encoding format. Must be one of HEX, ASCII, UTF8,
            BASE64 or OID</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>byteString</td>
                <td>ByteString object with data</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ENCODING</td>
                <td>The argument encoding contains an unknown encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The argument stringValue contains characters not compatible with the encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer();

assert(x != null);
assert(x instanceof ByteBuffer);


x = new ByteBuffer("1234", HEX);

assert(x.length == 2);
assert(x.toString() == "12 34");


x = new ByteBuffer("0x1234 56.78.90+AB#cd'EF", HEX);

assert(x.length == 8);
assert(x.toString() == "12 34 56 78 90 AB CD EF");


x = new ByteBuffer("1234ABCDÄÖÜß", ASCII);

assert(x.length == 12);
assert(x.toString() == "31 32 33 34 41 42 43 44 C4 D6 DC DF");


x = new ByteBuffer("1234ABCDÄÖÜß", UTF8);

assert(x.length == 16);
assert(x.toString() == "31 32 33 34 41 42 43 44 C3 84 C3 96 C3 9C C3 9F");


x = new ByteBuffer("SGVsbG8gV29ybGQ=", BASE64);

assert(x.length == 11);
assert(x.toString(ASCII) == "Hello World");


x = new ByteBuffer(new ByteString("1234", HEX));

assert(x.length == 2);
assert(x.toString() == "12 34");


x = new ByteBuffer("1.2.840.113549.1.1.2", OID);

assert(x.length == 9);
assert(x.toString(OID) == "1.2.840.113549.1.1.2");
assert(x.toString(HEX) == "2A864886F70D010102");


x = new ByteBuffer("1 2 840 113549 1 1 2", OID);

assert(x.toString(HEX) == "2A864886F70D010102");


</pre>
        <h2 id="toString">toString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String toString(Number encoding)</p>
        <h3>Description</h3>
        Return string containing binary data in given encoding
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>encoding</td>
                <td>Encoding to present the binary data in. Must be one of ASCII, HEX, UTF8, BASE64 or CN.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>String representing data from ByteBuffer</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer("41 42 43", HEX);
assert(x.toString(HEX) == "414243");

x = new ByteBuffer("41 42 43 C4 D6 DC DF", HEX);
assert(x.toString(ASCII) == "ABCÄÖÜß");

x = new ByteBuffer("C3 84 C3 96 C3 9C C3 9F", HEX);
assert(x.toString(UTF8) == "ÄÖÜß");

x = new ByteBuffer("Hello World", ASCII);
assert(x.toString(BASE64) == "SGVsbG8gV29ybGQ=");

</pre>
        <h2 id="append">append()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteBuffer append(ByteBuffer byteBuffer)</p>
        <p class="signature">ByteBuffer append(ByteString byteString)</p>
        <p class="signature">ByteBuffer append(Number byteValue)</p>
        <p class="signature">ByteBuffer append(String stringValue)</p>
        <h3>Description</h3>
        Append to the ByteBuffer at the end the content of the ByteBuffer or ByteString object, the ASCII encoded string or the byte
                     given as argument.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytebuffer.html">ByteBuffer</a>
                    </code>
                </td>
                <td>byteBuffer</td>
                <td>ByteBuffer object to be appended to ByteBuffer</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>byteString</td>
                <td>ByteString object to be appended to ByteBuffer</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>stringValue</td>
                <td>String containing ASCII characters to be appended to ByteBuffer</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>byteValue</td>
                <td>Single byte value</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteBuffer</code>
                </td>
                <td>Returns the ByteBuffer object this method is applied to</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer();

x.append(new ByteBuffer("ABC", ASCII));
assert(x.toString() == "41 42 43");

x.append("123");
assert(x.toString() == "41 42 43 31 32 33");

x.append(new ByteString("ABC", ASCII));
assert(x.toString() == "41 42 43 31 32 33 41 42 43");

str = 0x20;
x.append(str);
assert(x.toString() == "41 42 43 31 32 33 41 42 43 20");

</pre>
        <h2 id="byteAt">byteAt()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number byteAt(Number offset)</p>
        <h3>Description</h3>
        Return the byte at the zero based offset in the ByteBuffer
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Value of byte as unsigned integer</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Argument offset is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer("123ABCÄÖÜ", ASCII);
assert(typeof(x.byteAt(0) == "number"));
assert(x.byteAt(0) == 0x31);
assert(x.byteAt(3) == 0x41);
assert(x.byteAt(6) == 0xC4);

</pre>
        <h2 id="clear">clear()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteBuffer clear()</p>
        <p class="signature">ByteBuffer clear(Number offset)</p>
        <p class="signature">ByteBuffer clear(Number offset, Number length)</p>
        <h3>Description</h3>
        Clears the area specified by offset and length in the ByteBuffer. Bytes behind the cleared area
                     are moved to offset. If length is missing, then the remaining length from offset to the end
                     of the ByteBuffer is cleared. If offset and length are missing from the argument list, then
                     the whole ByteBuffer is cleared.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>The zero based offset in the ByteBuffer where the clear operation is started.
                     Zero is assumed if offset is missing.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>length</td>
                <td>The length of the area to be cleared. If length is missing, then the maximum
                     number of bytes up to the end of the ByteBuffer is assumed.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteBuffer</code>
                </td>
                <td>The ByteBuffer object the method is applied to</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Argument offset is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>Argument length is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer("123456", ASCII);

x.clear(2, 2);
assert(x.toString(ASCII) == "1256");

x.clear(2);
assert(x.toString(ASCII) == "12");

x.clear();
assert(x.length == 0);

</pre>
        <h2 id="copy">copy()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteBuffer copy(Number offset, ByteBuffer byteBuffer)</p>
        <p class="signature">ByteBuffer copy(Number offset, ByteString byteString)</p>
        <p class="signature">ByteBuffer copy(Number offset, Number byteValue)</p>
        <p class="signature">ByteBuffer copy(Number offset, String stringValue)</p>
        <h3>Description</h3>
        Copy the bytes from the argument into the ByteBuffer at offset and replace the bytes contained.
                     The length of the ByteBuffer is not changed.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset at which the bytes from the argument are copied to</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytebuffer.html">ByteBuffer</a>
                    </code>
                </td>
                <td>byteBuffer</td>
                <td/>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>byteString</td>
                <td/>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>byteValue</td>
                <td>Value of a single unsigned byte</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>stringValue</td>
                <td>ASCII encoded string</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteBuffer</code>
                </td>
                <td>The ByteBuffer object this method is applied to</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The argument offset is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The offset plus the length of the argument exceeds the end of the
                 ByteBuffer</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer("123456", ASCII);

x.copy(0, "AB");
assert(x.toString(ASCII) == "AB3456");

y = new ByteBuffer("CD", ASCII);
x.copy(2, y);
assert(x.toString(ASCII) == "ABCD56");

y = new ByteString("EF", ASCII);
x.copy(4, y);
assert(x.toString(ASCII) == "ABCDEF");

</pre>
        <h2 id="find">find()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number find(ByteString value)</p>
        <p class="signature">Number find(ByteString value, Number offset)</p>
        <h3>Description</h3>
        Find the first occurence of the value starting at offset.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString to locate in ByteBuffer</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset to start search at. Zero is assumed if argument is missing.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Zero based offset at which the ByteString is found or -1 if the ByteString is not found.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Argument offset is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer("ABCDABCD", ASCII);
y = new ByteString("BC", ASCII);

assert(x.find(y) == 1);
assert(x.find(y, 2) == 5);
assert(x.find(y, -2) == 1);

y = new ByteString("CD", ASCII);
assert(x.find(y, 4) == 6);

y = new ByteString("CD", ASCII);
assert(x.find(y, 6) == 6);

y = new ByteString("CB", ASCII);
assert(x.find(y) == -1);

y = new ByteString("BCDE", ASCII);
assert(x.find(y) == -1);

y = new ByteString("", ASCII);
assert(x.find(y) == 0);

x = new ByteBuffer("", ASCII);
y = new ByteString("", ASCII);
assert(x.find(y) == 0);
assert(x.find(y, 0) == 0);

</pre>
        <h2 id="insert">insert()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteBuffer insert(Number offset, ByteBuffer byteBuffer)</p>
        <p class="signature">ByteBuffer insert(Number offset, ByteString byteString)</p>
        <p class="signature">ByteBuffer insert(Number offset, Number byteValue)</p>
        <p class="signature">ByteBuffer insert(Number offset, String stringValue)</p>
        <h3>Description</h3>
        Insert the bytes from the argument at offset.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset at which the bytes are inserted</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytebuffer.html">ByteBuffer</a>
                    </code>
                </td>
                <td>byteBuffer</td>
                <td>ByteBuffer object to be appended to ByteBuffer</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>byteString</td>
                <td>ByteString object to be appended to ByteBuffer</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>stringValue</td>
                <td>String containing ASCII characters to be appended to ByteBuffer</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>byteValue</td>
                <td>Single byte value</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteBuffer</code>
                </td>
                <td>Returns the ByteBuffer object this method is applied to</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The argument offset is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer("123456", ASCII);

x.insert(0, "AB");
assert(x.toString(ASCII) == "AB123456");

y = new ByteBuffer("CD", ASCII);
x.insert(2, y);
assert(x.toString(ASCII) == "ABCD123456");

y = new ByteString("EF", ASCII);
x.insert(10, y);
assert(x.toString(ASCII) == "ABCD123456EF");

x.insert(1, 0x31);
assert(x.toString(ASCII) == "A1BCD123456EF");

</pre>
        <h2 id="toByteString">toByteString()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString toByteString()</p>
        <p class="signature">ByteString toByteString(Number offset)</p>
        <p class="signature">ByteString toByteString(Number offset, Number count)</p>
        <h3>Description</h3>
        Return all or a fraction of the ByteBuffer as ByteString.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset in ByteBuffer. Default is 0.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>count</td>
                <td>Number of bytes to return. Default is all.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Bytes as ByteString object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The argument offset is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The argument count is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteBuffer("123456", ASCII);

y = x.toByteString();
assert(y.toString(ASCII) == "123456");

y = x.toByteString(3);
assert(y.toString(ASCII) == "456");

y = x.toByteString(2, 2);
assert(y.toString(ASCII) == "34");

y = x.toByteString(6, 0);
assert(y.toString(ASCII) == "");

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>CardSimulationAdapter - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>CardSimulationAdapter - Reference Documentation</h1>
        <p>
            <p>Class to control a card simulation adapter that forwards APDUs to a script implementation</p>
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">CardSimulationAdapter() constructor</a>
            </li>
            <li>
                <a href="#setSimulationObject">setSimulationObject()</a>
            </li>
            <li>
                <a href="#start">start()</a>
            </li>
            <li>
                <a href="#stop">stop()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">CardSimulationAdapter(String adapter, String parameter)</p>
        <h3>Description</h3>
                    
        <p>Create a new card simulation adapter.</p>
                    
        <p>Currently only the JCOP Simulation adapter is available. It is configured as adapter
               name "JCOPSimulation" with the port number as parameter.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>adapter</td>
                <td>Name of the simulation adapter</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>source</td>
                <td>The parameter used to initialise the adapter</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var sa = new CardSimulationAdapter("JCOPSimulation", "8050");

</pre>
        <h2 id="setSimulationObject">setSimulationObject()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setSimulationObject(Object simulation)</p>
        <h3>Description</h3>
                    
        <p>Set the object that receives reset() and processAPDU() calls from the
               card simulation adapter.</p>
                    
        <p>The simulation object must implement the following methods:</p>
                    void reset(Number coldOrWarm);
            ByteString processAPDU(ByteString capdu);
            
        <p>The parameter coldOrWarm allows to differentiate between a cold and a warm
               reset. This parameter is currently always 0 (cold reset).</p>
                    
        <p>The parameter capdu contains the raw command APDU, including CLA, INS, P1, P2 and
               conditionally the Lc, Command Data and Le field.</p>
                    
        <p>The processAPDU() method must return the response APDU as ByteString object,
               with the conditional response data field and the trailer bytes SW1/SW2.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>simulation</td>
                <td>The object that implements the card simulation</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Create a very simple card simulator
var simulationObject = new Object();

// The simulator needs a processAPDU method
simulationObject.processAPDU = function(capdu) {
	print("Received APDU: " + capdu);
	var rapdu = capdu.concat(new ByteString("9000", HEX));
	return rapdu;
}

// The simulator needs a reset method
simulationObject.reset = function(type) {
	print("Reset type: " + type);
	var atr = new ByteString("3B600000", HEX);
	return atr;
}

sa.setSimulationObject(simulationObject);

</pre>
        <h2 id="start">start()</h2>
        <h3>Prototype</h3>
        <p class="signature">void start()</p>
        <h3>Description</h3>
                    
        <p>Starts the simulator adapter.</p>
                    
        <p>If the adapter is already running, it is stopped first.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

sa.start();

var card = new Card("JCOPSimulation");

var atr = card.reset(Card.RESET_COLD);

print(atr);

assert(atr.toByteString().toString(HEX) == "3B600000");

var rapdu = card.sendApdu(0x00, 0x10, 0x01, 0x02, new ByteString("1234", HEX), [0x9000]);

assert(rapdu.toString(HEX) == "00100102021234");

</pre>
        <h2 id="stop">stop()</h2>
        <h3>Prototype</h3>
        <p class="signature">void stop()</p>
        <h3>Description</h3>
                    
        <p>Stops the simulator adapter.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

sa.stop();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>URLConnection - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>URLConnection - Reference Documentation</h1>
        <p>
                    
            <p>Class implementing an URL connection to a resource. This class can be used to
           put, get, post or delete local and remote resources (CRUD operations).</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">URLConnection() constructor</a>
            </li>
            <li>
                <a href="#setConnectTimeout">setConnectTimeout()</a>
            </li>
            <li>
                <a href="#setReadTimeout">setReadTimeout()</a>
            </li>
            <li>
                <a href="#setTLSKeyStores">setTLSKeyStores()</a>
            </li>
            <li>
                <a href="#addHeaderField">addHeaderField()</a>
            </li>
            <li>
                <a href="#getHeaderField">getHeaderField()</a>
            </li>
            <li>
                <a href="#getHeaderFieldList">getHeaderFieldList()</a>
            </li>
            <li>
                <a href="#get">get()</a>
            </li>
            <li>
                <a href="#getBinary">getBinary()</a>
            </li>
            <li>
                <a href="#post">post()</a>
            </li>
            <li>
                <a href="#postBinary">postBinary()</a>
            </li>
            <li>
                <a href="#put">put()</a>
            </li>
            <li>
                <a href="#deleteResource">deleteResource()</a>
            </li>
            <li>
                <a href="#toString">toString()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>responseCode</td>
                <td>The HTTP response code</td>
            </tr>
            <tr>
                <td>String</td>
                <td>responseMessage</td>
                <td>The HTTP response message</td>
            </tr>
            <tr>
                <td>X509[]</td>
                <td>serverCertificates</td>
                <td>The certificate chain returned by the server in a TLS connection. The server certificate is the first element</td>
            </tr>
            <tr>
                <td>String</td>
                <td>contentEncoding</td>
                <td>The encoding format for the content</td>
            </tr>
            <tr>
                <td>String</td>
                <td>contentLength</td>
                <td>The length of the content</td>
            </tr>
            <tr>
                <td>String</td>
                <td>contentType</td>
                <td>The content type</td>
            </tr>
            <tr>
                <td>Date</td>
                <td>date</td>
                <td>The date form the header field</td>
            </tr>
            <tr>
                <td>Date</td>
                <td>expiration</td>
                <td>The expiration from the header field</td>
            </tr>
            <tr>
                <td>Date</td>
                <td>lastModified</td>
                <td>The date of last modification from the header field</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">URLConnection(String url)</p>
        <h3>Description</h3>
        Create a connection object to access a resource identified by the URL.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>url</td>
                <td>URL of the resource to access</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var cwd = GPSystem.mapFilename("urltest.dat", GPSystem.CWD);

var urlConnection = new URLConnection("file:" + cwd);

</pre>
        <h2 id="setConnectTimeout">setConnectTimeout()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setConnectTimeout(Number ms)</p>
        <h3>Description</h3>
                    
        <p>Sets the number of milliseconds to wait for a connect to the remote system.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ms</td>
                <td>The timeout in milliseconds</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

urlConnection.setConnectTimeout(10000);		// 10 seconds

</pre>
        <h2 id="setReadTimeout">setReadTimeout()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setReadTimeout(Number ms)</p>
        <h3>Description</h3>
                    
        <p>Sets the number of milliseconds to wait for a response from the remote system.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ms</td>
                <td>The timeout in milliseconds</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

urlConnection.setReadTimeout(10000);		// 10 seconds

</pre>
        <h2 id="setTLSKeyStores">setTLSKeyStores()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setTLSKeyStores(KeyStore truststore, KeyStore keystore, String keypassword)</p>
        <h3>Description</h3>
                    
        <p>Sets the key stores to be used for TLS connections.</p>
                    
        <p>The trust store contains CA certificates that can be used to verify
               the server certificate.</p>
                    
        <p>The key store contains the private key, certificate and CA certificates 
               to be used for TLS client authentication.</p>
                    
        <p>Setting a TLS key store only has an effect for connections using 
               transport layer security (e.g. https).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>KeyStore</code>
                </td>
                <td>truststore</td>
                <td>The keystore containing trusted certificates for server authentication</td>
            </tr>
            <tr>
                <td>
                    <code>KeyStore</code>
                </td>
                <td>keystore</td>
                <td>An optional key store containing the private key and certificates for TLS client authentication</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>keypassword</td>
                <td>The password to recover the private key</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var truststore = new KeyStore("SUN", "jks", "truststore", "openscdp");
var keystore = new KeyStore("SUN", "jks", "clientkeystore", "openscdp");

var urlConnection = new URLConnection("https://localhost:8443");

urlConnection.setTLSKeyStores(truststore, keystore, "openscdp");

var page = urlConnection.get();

</pre>
        <h2 id="addHeaderField">addHeaderField()</h2>
        <h3>Prototype</h3>
        <p class="signature">void addHeaderField(String fieldName, String value)</p>
        <h3>Description</h3>
                    
        <p>Add a HTTP header field to the request.</p>
                    
        <p>If the field does already exists, then a further element is added.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>fieldName</td>
                <td>The HTTP header field name</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ms</td>
                <td>The field value</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

urlConnection.addHeaderField("x-my-header", "My private header field");

</pre>
        <h2 id="getHeaderField">getHeaderField()</h2>
        <h3>Prototype</h3>
        <p class="signature">String[] getHeaderField(String fieldName)</p>
        <h3>Description</h3>
                    
        <p>Returns a list of values for given header field.</p>
                    
        <p>If the field does already exists, then undefined is returned</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>fieldName</td>
                <td>The HTTP header field name</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>The list of values for this header field</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

urlConnection.getHeaderField("x-my-header");

</pre>
        <h2 id="getHeaderFieldList">getHeaderFieldList()</h2>
        <h3>Prototype</h3>
        <p class="signature">String[] getHeaderFieldList()</p>
        <h3>Description</h3>
                    
        <p>Returns a list of header fields contained in the response.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>The list of header fields</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

urlConnection.getHeaderFieldList();

</pre>
        <h2 id="get">get()</h2>
        <h3>Prototype</h3>
        <p class="signature">String get()</p>
        <h3>Description</h3>
                    
        <p>Read from the resource the full content as string.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>The content of the resource as string</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var urlConnection = new URLConnection("file:" + cwd);
var page = urlConnection.get();
assert(page.equals("Hello World\n"));

</pre>
        <h2 id="getBinary">getBinary()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getBinary()</p>
        <p class="signature">ByteString getAsByteString()</p>
        <h3>Description</h3>
                    
        <p>Read from the resource the full content as binary content.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The content of the resource as bytestring</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var urlConnection = new URLConnection("file:" + cwd);
var page = urlConnection.getAsByteString();
assert(page.equals(new ByteString("48656C6C6F20576F726C640D0A", HEX)));

</pre>
        <h2 id="post">post()</h2>
        <h3>Prototype</h3>
        <p class="signature">String post(String str)</p>
        <h3>Description</h3>
                    
        <p>Write the text to the resource and receive response.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>str</td>
                <td>The content to write</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>The content of the resource as string</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var url = "http://localhost:8080/";
var urlConnection = new URLConnection(url + "admin?restart");

urlConnection.addHeaderField("x-my-header", "My private header field");

var page = urlConnection.get();
print("GET:\n" + page);
print(urlConnection.responseCode + " - " + urlConnection.responseMessage);
print("ContentEncoding : " + urlConnection.contentEncoding);
print("ContentLength : " + urlConnection.contentLength);
print("ContentType : " + urlConnection.contentType);
print("Date : " + urlConnection.date);
print("Expiration : " + urlConnection.expiration);
print("Last Modified : " + urlConnection.lastModified);
var hl = urlConnection.getHeaderFieldList();
print("Header field list : " + hl);
for each (var s in hl) {
	var v = urlConnection.getHeaderField(s);
	print(s + " : " + v);
}

assert(urlConnection.responseCode == 200);


var urlConnection = new URLConnection(url + "admin");

var script = "GPSystem.trace(\"Hello World\");\n";

var result = urlConnection.post(script);
print("POST:\n" + result);

var result = urlConnection.post(script);
print("POST:\n" + result);


var urlConnection = new URLConnection(url + "admin");

var page = urlConnection.get();
print("GET:\n" + page);


</pre>
        <h2 id="postBinary">postBinary()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString post(ByteString data)</p>
        <h3>Description</h3>
                    
        <p>Write binary data to the resource and receive response.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The content to write</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The content of the resource as ByteString</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var url = "http://localhost:8080/";
var urlConnection = new URLConnection(url + "admin?restart");

var urlConnection = new URLConnection(url + "admin");

var script = 
"function handleRequest(req, res) {\n" +
"var cl = req.contentLength;\n" + 
"print(cl);\n" +
"var is = req.getEntityAsInputStream();\n" +
"var bs = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, cl);\n" +
"is.read(bs);\n" +
"var bb = new ByteBuffer(bs);\n" +
"print(bb.toByteString());\n" +
"res.setContentLength(3);\n" +
"res.write(new ByteString(\"Yes\", ASCII));\n" +
"}\n";



var result = urlConnection.post(script);
print("POST:\n" + result);

var urlConnection = new URLConnection(url + "se");

var data = new ByteString("Hello World", ASCII);
var result = urlConnection.postBinary(data);

assert(result.toString(ASCII) == "Yes");


</pre>
        <h2 id="put">put()</h2>
        <h3>Prototype</h3>
        <p class="signature">String put(String str)</p>
        <h3>Description</h3>
                    
        <p>Write the text to the resource and receive response.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>str</td>
                <td>The content to write</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var url = "http://localhost:8080/";
var urlConnection = new URLConnection(url + "admin?restart");

var page = urlConnection.get();
print("GET:\n" + page);


var urlConnection = new URLConnection(url + "admin");

var script = "GPSystem.trace(\"Hello World\");\n";

var result = urlConnection.put(script);
print("PUT:\n" + result);

var result = urlConnection.put(script);
print("PUT:\n" + result);


var urlConnection = new URLConnection(url + "admin");

var page = urlConnection.get();
print("GET:\n" + page);


</pre>
        <h2 id="deleteResource">deleteResource()</h2>
        <h3>Prototype</h3>
        <p class="signature">void deleteResource()</p>
        <h3>Description</h3>
                    
        <p>Delete the resource.</p>
                    
        <p>The delete operation only works for connections using HTTP.</p>
                    
        <p>The method is not named "delete" because delete is a reserved name
               in the Rhino JavaScript implementation.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var url = "http://localhost:8080/";

var urlConnection = new URLConnection(url + "admin");

urlConnection.deleteResource();


</pre>
        <h2 id="toString">toString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String toString()</p>
        <h3>Description</h3>
                    
        <p>Return the URL as string</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>The URL</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

assert(urlConnection.toString() == url + "admin");

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>PKCS11Object - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>PKCS11Object - Reference Documentation</h1>
        <p>Class implementing support for objects in cryptographic token with PKCS#11 interface</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">PKCS11Object() constructor</a>
            </li>
            <li>
                <a href="#getAttribute">getAttribute()</a>
            </li>
            <li>
                <a href="#getNumberAttribute">getNumberAttribute()</a>
            </li>
            <li>
                <a href="#getBooleanAttribute">getBooleanAttribute()</a>
            </li>
            <li>
                <a href="#destroy">destroy()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_DATA</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_CERTIFICATE</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_PUBLIC_KEY</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_PRIVATE_KEY</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_SECRET_KEY</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_HW_FEATURE</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_DOMAIN_PARAMETERS</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKO_MECHANISM</td>
                <td>PKCS#11 object class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_CLASS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_TOKEN</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_PRIVATE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_LABEL</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_APPLICATION</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_VALUE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_OBJECT_ID</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_CERTIFICATE_TYPE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_ISSUER</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SERIAL_NUMBER</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SERIAL_NUMBER</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_OWNER</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_ATTR_TYPES</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_TRUSTED</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_CERTIFICATE_CATEGORY</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_JAVA_MIDP_SECURITY_DOMAIN</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_URL</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_HASH_OF_SUBJECT_PUBLIC_KEY</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_HASH_OF_ISSUER_PUBLIC_KEY</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_CHECK_VALUE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_KEY_TYPE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SUBJECT</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_ID</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SENSITIVE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_ENCRYPT</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_DECRYPT</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_WRAP</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_UNWRAP</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SIGN</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SIGN_RECOVER</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_VERIFY</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_VERIFY_RECOVER</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_DERIVE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_START_DATE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_END_DATE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_MODULUS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_MODULUS_BITS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_PUBLIC_EXPONENT</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_PRIVATE_EXPONENT</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_PRIME_1</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_PRIME_2</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_EXPONENT_1</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_EXPONENT_2</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_COEFFICIENT</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_PRIME</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SUBPRIME</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_BASE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_PRIME_BITS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SUB_PRIME_BITS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_VALUE_BITS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_VALUE_LEN</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_EXTRACTABLE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_LOCAL</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_NEVER_EXTRACTABLE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_ALWAYS_SENSITIVE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_KEY_GEN_MECHANISM</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_MODIFIABLE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_ECDSA_PARAMS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_EC_PARAMS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_EC_POINT</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_SECONDARY_AUTH</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_AUTH_PIN_FLAGS</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_ALWAYS_AUTHENTICATE</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKA_WRAP_WITH_TRUSTED</td>
                <td>PKCS#11 attribute</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKK_RSA</td>
                <td>PKCS#11 key type</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKK_ECDSA</td>
                <td>PKCS#11 key type</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKK_EC</td>
                <td>PKCS#11 key type</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKK_DES</td>
                <td>PKCS#11 key type</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKK_DES2</td>
                <td>PKCS#11 key type</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKK_DES3</td>
                <td>PKCS#11 key type</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CKK_AES</td>
                <td>PKCS#11 key type</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">PKCS11Object(PKCS11Session session)</p>
        <h3>Description</h3>
                    
        <p>Create a PKCS#11 object within the given session using the provided
               list of attributes. The object is created in the selected token.</p>
        	
        <p>The constructor accepts an associative array of attributes. The key must be
               one of the PKCS11Object.CKA_xxx values. The value can be a number, a string,
               a ByteString or boolean value. At least the CKA_CLASS must be defined.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>PKCS11Session</code>
                </td>
                <td>session</td>
                <td>Previously opened session with PKCS#11 device</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// var p = new PKCS11Provider("c:/programme/smart card bundle/opensc-pkcs11.dll");
var p = new PKCS11Provider("C:/usr/local/lsm/bin/lsmpkcs11.dll");

// Login as user in a read/write session
var s = new PKCS11Session(p, 1, true);
s.login("12345678");

var attr = new Array();

attr[PKCS11Object.CKA_CLASS] = PKCS11Object.CKO_SECRET_KEY;
attr[PKCS11Object.CKA_KEY_TYPE] = PKCS11Object.CKK_DES;
attr[PKCS11Object.CKA_LABEL] = "MyTestKey";
attr[PKCS11Object.CKA_TOKEN] = true;
attr[PKCS11Object.CKA_VALUE] = new ByteString("0101010101010101", HEX);

// Create object
var o = new PKCS11Object(s, attr);

</pre>
        <h2 id="getAttribute">getAttribute()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getAttribute(Number attr)</p>
        <h3>Description</h3>
        	
        <p>Return the requested attribute as ByteString</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>attr</td>
                <td>One of the CKA_ attributes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Value of attribute. null is returned if the attribute is not defined.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.OBJECT_NOT_FOUND</td>
                <td>The requested attribute can not be read</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

print("CKA_LABEL = " + o.getAttribute(PKCS11Object.CKA_LABEL).toString(ASCII));

</pre>
        <h2 id="getNumberAttribute">getNumberAttribute()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getAttribute(Number attr)</p>
        <h3>Description</h3>
        	
        <p>Return the requested attribute as Number</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>attr</td>
                <td>One of the CKA_ attributes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Value of attribute</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.OBJECT_NOT_FOUND</td>
                <td>The requested attribute is not defined or can not be read</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

print("CKA_KEY_TYPE = " + o.getNumberAttribute(PKCS11Object.CKA_KEY_TYPE));

</pre>
        <h2 id="getBooleanAttribute">getBooleanAttribute()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean getBooleanAttribute(Number attr)</p>
        <h3>Description</h3>
        	
        <p>Return the requested attribute as boolean value</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>attr</td>
                <td>One of the CKA_ attributes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>Boolean value of attribute</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.OBJECT_NOT_FOUND</td>
                <td>The requested attribute is not defined or can not be read</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

print("CKA_TOKEN = " + o.getBooleanAttribute(PKCS11Object.CKA_TOKEN));

</pre>
        <h2 id="destroy">destroy()</h2>
        <h3>Prototype</h3>
        <p class="signature">void destroy()</p>
        <h3>Description</h3>
                    
        <p>Destroy the object</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>Error removing object</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

o.destroy();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Card - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Card - Reference Documentation</h1>
        <p>CryptoScript interpreter</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Card() constructor</a>
            </li>
            <li>
                <a href="#isEmpty">isEmpty()</a>
            </li>
            <li>
                <a href="#getStack">getStack()</a>
            </li>
            <li>
                <a href="#push">push()</a>
            </li>
            <li>
                <a href="#top">top()</a>
            </li>
            <li>
                <a href="#pop">pop()</a>
            </li>
            <li>
                <a href="#record">record()</a>
            </li>
            <li>
                <a href="#collect">collect()</a>
            </li>
            <li>
                <a href="#eval">eval()</a>
            </li>
            <li>
                <a href="#dup">dup()</a>
            </li>
            <li>
                <a href="#swap">swap()</a>
            </li>
            <li>
                <a href="#concat">concat()</a>
            </li>
            <li>
                <a href="#range">range()</a>
            </li>
            <li>
                <a href="#xor">xor()</a>
            </li>
            <li>
                <a href="#sha1">sha1()</a>
            </li>
            <li>
                <a href="#sha256">sha256()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>response</td>
                <td>Last response APDU received from ICC</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">CryptoScript(Key key, Number stacksize)</p>
        <h3>Description</h3>
                    
        <p>Create a new CryptoScript interpreter bound to a key with a given stack size.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>The key object for which the script shall be executed</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>stacksize</td>
                <td>The number of bytes allocated for the execution stack</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();
var csi = new CryptoScript(key, 1000);

</pre>
        <h2 id="isEmpty">isEmpty()</h2>
        <h3>Prototype</h3>
        <p class="signature">boolean isEmpty</p>
        <h3>Description</h3>
                    
        <p>Return true if stack is empty</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>True if stack is empty</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

assert(csi.isEmpty());

</pre>
        <h2 id="getStack">getStack()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString[] getStack()</p>
        <h3>Description</h3>
                    
        <p>Return the current evaluation stack, with the topmost stack entry in index 0 of the array.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString[]</code>
                </td>
                <td>List of stack elements</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var stack = csi.getStack();
assert(stack.length == 0);

</pre>
        <h2 id="push">push()</h2>
        <h3>Prototype</h3>
        <p class="signature">push(ByteString value)</p>
        <h3>Description</h3>
                    
        <p>Push a byte string onto the stack</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>The ByteString to push onto the stack</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var ref = new ByteString("012345", HEX);
csi.push(ref);
var stack = csi.getStack();
assert(stack.length == 1);
assert(stack[0].equals(ref));
csi.pop();
assert(csi.isEmpty());

</pre>
        <h2 id="top">top()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString top()</p>
        <h3>Description</h3>
                    
        <p>Return copy of topmost stack element</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                    
        <p>For convenience, this method returns the topmost element, while in the
               SmartCard-HSM the topmost element is only removed, but not returned anywhere.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Copy of the topmost element on the stack</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.push(ref);
assert(csi.top().equals(ref), "top() failed");
csi.pop();
assert(csi.isEmpty());

</pre>
        <h2 id="pop">pop()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString pop()</p>
        <h3>Description</h3>
                    
        <p>Take topmost element from stack</p>
                    
        <p>This method does not record an op code.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Copy of the topmost element on the stack</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.push(ref);
assert(csi.pop().equals(ref), "pop() failed");

</pre>
        <h2 id="record">record()</h2>
        <h3>Prototype</h3>
        <p class="signature">record()</p>
        <h3>Description</h3>
                    
        <p>Start recording the op code sequence for later retrieval using collect().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See collect() for an example

</pre>
        <h2 id="collect">collect()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString collect()</p>
        <h3>Description</h3>
                    
        <p>Collect sequence of op codes generated after calling record.</p>
                    
        <p>The resulting byte string can be executed using eval() or the CryptoScript interpreter in the
               SmartCard-HSM.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Sequence of op codes</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var ref = new ByteString("012345", HEX);

// Start recording op codes
csi.record();

// Push reference and record op code
csi.push(ref);

// Collect all recorded op codes
var code = csi.collect();

// Element is still on stack
assert(csi.pop().equals(ref));
assert(csi.isEmpty());

// Playback recorded op code sequence
csi.eval(code);

// Result must be the same
assert(csi.pop().equals(ref));
assert(csi.isEmpty());

</pre>
        <h2 id="eval">eval()</h2>
        <h3>Prototype</h3>
        <p class="signature">eval(ByteString sequence)</p>
        <h3>Description</h3>
                    
        <p>Evaluate a secure of op codes recorded with collect()</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>sequence</td>
                <td>Sequence of op codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

//Do nothing
csi.eval(new ByteString("0000", HEX));

</pre>
        <h2 id="dup">dup()</h2>
        <h3>Prototype</h3>
        <p class="signature">dup()</p>
        <h3>Description</h3>
                    
        <p>Duplicate topmost stack element.</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.record();

csi.push(ref);
csi.dup();

var code = csi.collect();

csi.pop().equals(ref);
csi.pop().equals(ref);
assert(csi.isEmpty());

// Replay
csi.eval(code);

csi.pop().equals(ref);
csi.pop().equals(ref);
assert(csi.isEmpty());

</pre>
        <h2 id="swap">swap()</h2>
        <h3>Prototype</h3>
        <p class="signature">swap()</p>
        <h3>Description</h3>
                    
        <p>Swap two topmost stack elements.</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.record();

var ref2 = new ByteString("Hello", ASCII);

csi.push(ref);
csi.push(ref2);
csi.swap();

var code = csi.collect();

csi.pop().equals(ref);
csi.pop().equals(ref2);
assert(csi.isEmpty());

//Replay
csi.eval(code);

csi.pop().equals(ref);
csi.pop().equals(ref2);
assert(csi.isEmpty());

</pre>
        <h2 id="concat">concat()</h2>
        <h3>Prototype</h3>
        <p class="signature">concat()</p>
        <h3>Description</h3>
                    
        <p>Concat two topmost stack elements.</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.record();

var ref1 = new ByteString("My ", ASCII);
var ref2 = new ByteString("first ", ASCII);
var ref3 = new ByteString("CryptoScript", ASCII);

csi.push(ref1);
csi.push(ref2);
csi.push(ref3);
csi.concat();
csi.top().toString(ASCII).equals("first CryptoScript");
csi.concat();

var code = csi.collect();

csi.pop().equals(new ByteString("My first CryptoScript", ASCII));
assert(csi.isEmpty());

//Replay
csi.eval(code);

csi.pop().equals(new ByteString("My first CryptoScript", ASCII));
assert(csi.isEmpty());

</pre>
        <h2 id="range">range()</h2>
        <h3>Prototype</h3>
        <p class="signature">range(from, length)</p>
        <h3>Description</h3>
                    
        <p>Extract the range of bytes from the topmost operand on the stack.</p>
                    
        <p>A positive value in from denotes the 0-based offset in the byte array. A negative
               value denotes the offset relative to the end of the byte array, i.e. a value of 
               -1 denotes the last byte in the array.</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.record();

var op = new ByteString("010203", HEX);

csi.push(op);
csi.range(0, 1);
assert(csi.pop().equals(op.left(1)));

csi.range(1, 1);
assert(csi.pop().equals(op.bytes(1, 1)));

csi.range(2, 1);
assert(csi.pop().equals(op.bytes(2, 1)));

csi.range(-1, 1);
assert(csi.pop().equals(op.right(1)));

csi.pop();
assert(csi.isEmpty());

var code = csi.collect();
print(code);

//Replay
csi.eval(code);

assert(csi.isEmpty());

</pre>
        <h2 id="xor">xor()</h2>
        <h3>Prototype</h3>
        <p class="signature">xor()</p>
        <h3>Description</h3>
                    
        <p>XOR the two topmost operands on the stack.</p>
                    
        <p>The resulting operand has the same size than the longer operands.
               The short operand is repeated as often as required to process the
               longer operand.</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.record();

var opA5 = new ByteString("A5", HEX);
var opA5s = new ByteString("A5A5A5", HEX);
var op0 = new ByteString("000000", HEX);

csi.push(opA5);
csi.dup();
csi.xor();

assert(csi.pop().equals(op0.left(1)));
assert(csi.isEmpty());


csi.push(opA5s);
csi.push(opA5);
csi.xor();

assert(csi.pop().equals(op0));
assert(csi.isEmpty());


csi.push(opA5);
csi.push(opA5s);
csi.xor();

assert(csi.pop().equals(op0));
assert(csi.isEmpty());

var code = csi.collect();
print(code);

//Replay
csi.eval(code);

assert(csi.isEmpty());

</pre>
        <h2 id="sha1">sha1()</h2>
        <h3>Prototype</h3>
        <p class="signature">sha1()</p>
        <h3>Description</h3>
                    
        <p>Apply SHA-1 digest to topmost element on the stack and push result.</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.record();

var ref = new ByteString("Hello World", ASCII);
csi.push(ref);
csi.sha1();

var crypto = new Crypto();
var digest = crypto.digest(Crypto.SHA_1, ref);

var code = csi.collect();
print(code);

assert(csi.pop().equals(digest));
csi.pop();
assert(csi.isEmpty());

//Replay
csi.eval(code);

assert(csi.pop().equals(digest));
csi.pop();
assert(csi.isEmpty());

</pre>
        <h2 id="sha256">sha256()</h2>
        <h3>Prototype</h3>
        <p class="signature">sha1()</p>
        <h3>Description</h3>
                    
        <p>Apply SHA-256 digest to topmost element on the stack and push result.</p>
                    
        <p>This method records an op code if recording is enabled with record().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

csi.record();

var ref = new ByteString("Hello World", ASCII);
csi.push(ref);
csi.sha256();

var crypto = new Crypto();
var digest = crypto.digest(Crypto.SHA_256, ref);

var code = csi.collect();
print(code);

assert(csi.pop().equals(digest));
csi.pop();
assert(csi.isEmpty());

//Replay
csi.eval(code);

assert(csi.pop().equals(digest));
csi.pop();
assert(csi.isEmpty());

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <html>
<body bgcolor=#ffffff>

Copyright (c) 2000-2005 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
<p>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software 
and associated documentation files (the "Software"), to deal in the Software without restriction, 
including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, 
and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
<p>
The above copyright notice and this permission notice shall be included in all copies or substantial
portions of the Software.
<p>
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>SOAPConnection - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>SOAPConnection - Reference Documentation</h1>
        <p>
            <p>Class implementing a SOAP Connection object used to call SOAP WebServices</p>
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">SOAPConnection() constructor</a>
            </li>
            <li>
                <a href="#call">call()</a>
            </li>
            <li>
                <a href="#close">close()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>String</td>
                <td>SOAP11</td>
                <td>SOAP 1.1 protocol</td>
            </tr>
            <tr>
                <td>String</td>
                <td>SOAP12</td>
                <td>SOAP 1.2 protocol</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">SOAPConnection()</p>
        <h3>Description</h3>
        Create a SOAPConnection object.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>soapVersion</td>
                <td>SOAP version, one of SOAPConnection.SOAP11 or SOAP12. Default is SOAP12</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var soapConnection = new SOAPConnection(SOAPConnection.SOAP12);

</pre>
        <h2 id="call">call()</h2>
        <h3>Prototype</h3>
        <p class="signature">XML call(String url, XML soapBodyElement)</p>
        <p class="signature">XML call(URLConnection urlconnection, XML soapBodyElement)</p>
        <h3>Description</h3>
                    
        <p>Create a SOAP message with the given element in the SOAP body.</p>
                    
        <p>Submit the message to the service endpoint and receive response.</p>
                    
        <p>The service endpoint can be specified either using a string with the URL or
               by using a preconfigured URLConnection instance. The later is useful, if
               additional connection parameters like timeouts or TLS keystores need to be
               specified.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>url</td>
                <td>The URL of the service endpoint</td>
            </tr>
            <tr>
                <td>
                    <code>URLConnection</code>
                </td>
                <td>urlconnection</td>
                <td>The URLConnection object</td>
            </tr>
            <tr>
                <td>
                    <code>XML</code>
                </td>
                <td>soapMessage</td>
                <td>The element in the SOAP body</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var typ = new Namespace("urn:test/types");

var request = 
			&lt;typ:ConvertRequest xmlns:typ="urn:test/types"&gt;
				&lt;id&gt;12&lt;/id&gt;
				&lt;input&gt;cid:440510063901&lt;/input&gt;
			&lt;!--You may enter ANY elements at this point--&gt;
			&lt;/typ:ConvertRequest&gt;


// Using a URL string
var url = "http://localhost:8080/se/soap";

var response = soapConnection.call(url, request);

print(response);

print(response.output);


// Using a URLConnection
var conn = new URLConnection("http://localhost:8080/se/soap");

conn.setConnectTimeout(10000);	// Set timeout to 10 seconds
conn.setReadTimeout(10000);

var response = soapConnection.call(conn, request);

print(response);

print(response.output);


// Using an URLConnection and HTTPs
var conn = new URLConnection("https://localhost:8443/se/soap");

var truststore = new KeyStore("SUN", "jks", "truststore", "openscdp");
var keystore = new KeyStore("SUN", "jks", "clientkeystore", "openscdp");

conn.setTLSKeyStores(truststore, keystore, "openscdp");

var response = soapConnection.call(conn, request);

print(response);

print(response.output);


</pre>
        <h2 id="close">close()</h2>
        <h3>Prototype</h3>
        <p class="signature">void close()</p>
        <h3>Description</h3>
                    
        <p>Close SOAP connection and free used resources.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>Closing the SOAP connection failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

soapConnection.close();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3 - Installation</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h1>Installing the Smart Card Shell</h1>
<p>The Smart Card Shell is a Java program that can be installed on most operating
   systems for which a Java runtime is available. During development, the shell
   is tested on Windows, Linux and MacOS.</p>
<h2>Requirements</h2>
<h3>Java Runtime</h3>
<p>The Smart Card Shell requires a Java Runtime Environment (JRE), which is version 1.11 at minimum.
   The PC must fulfil the usual requirements of an office system.</p>
<h3>Card Reader</h3>
<p>You will need a contact or contactless smart card reader with PC/SC
   or CT-API driver. PC/SC readers are supported by the default installation.</p>
<p>For CT-API card readers you will need to enter the correct CT-API DLL or shared object
   into the OCF configuration file. See the <a href="configuration.html">configuration documentation</a> for
   supported readers and special configuration options.</p>
<h2>Installing on Windows</h2>
<p>The Smart Card Shell can be installed on any Windows, Linux and MacOS system with a working Java Runtime Environment.</p>
<p>There are two installation options:</p>
<ul>
<li>Installing from an IzPack installer file or</li>
<li>Unpacking from a .ZIP file</li>
</ul>
<p>If you install from the IzPack file, then all the required entries in the start menu are created automatically.</p>
<p>If you do not have installation privileges for your PC or just don't like to use the installer,
   then the software is available in a .ZIP archive. This archive is basically a snapshot of a working
   installation and can be put into any directory you like.</p>
<p>The console version of the shell can be started with the SCSH3.CMD, the graphical version with
   the SCSH3GUI.CMD file.</p>
<h2>Installing on Linux or Mac OS X</h2>
<p>To use the Smart Card Shell on Linux you will need the PC/SC subsystem available as package in your distribution or
   available at the <a href="http://pcsclite.alioth.debian.org/">MUSCLE</a> project. You can also use a CT-API driver,
   if a Linux version is available for your reader.</p>
<p>To install the Smart Card Shell on Linux or Mac OS X you will need to either use the IzPack installer or unpack the .ZIP file into a
   directory of your choice.</p>
<p>Shell scripts are provided to start the console and graphical version of the Smart Card Shell. Please make sure the start scripts
   are marked executable.</p>
<h3>No card readers found on Big Sur or some Linux variants</h3>
<p>If no card reader can be found, then most likely the Java runtime does not find the PCSC client library.
   You will then need to find the folder containing PCSC on MacOSX or libpcsclite.so on Linux and specify
   that path in the Java system property sun.security.smartcardio.library.</p>
<pre>
Examples are
 -Dsun.security.smartcardio.library=/System/Library/Frameworks/PCSC.framework/Versions/Current/PCSC
 -Dsun.security.smartcardio.library=lib/x86_64-linux-gnu/libpcsclite.so
</pre>
<p>See <a href="https://bugs.openjdk.java.net/browse/JDK-8252412">JDK-8252412</a> for details on the Big Sur issue.</p>
<h3>Launcher still starts the older version installed</h3>
<p>You need to run kbuildsycoca5 to update the cache of .desktop files.</p>
<h2>Selecting a Working Directory</h2>
<p>When you start the Smart Card Shell, it will ask you for a working directory.
   Please select a directory which you will use to store the scripts you are writing.</p>
<p>If you do not select a working directory, then the shell will use the installation
   directory (usually "c:\Program Files\CardContact\Smart Card Shell 3") as default. In most cases this is
   not convenient, so please try and select your own working directory.</p>
<p>The working directory will be used to store the configuration options (e.g. selected card reader).
   You can use different working directories, e.g. one for each project.</p>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
OPEN CARD CONSORTIUM SOURCE LICENSE
Version 1.0
											8/10/1999
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS OPEN CARD CONSORTIUM 
SOURCE LICENSE ("AGREEMENT").  ANY DOWNLOADING, USE, REPRODUCTION OR DISTRIBUTION OF THE 
PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.  

1.  DEFINITIONS
"Contribution" means:  
  a) in the case of Open Card Consortium ("OCC"), the Original Program, and 
  b) in the case of each Contributor, 
    i)   changes to the Program, and
    ii)  additions to the Program;
where such changes and/or additions to the Program originate from and are distributed by that particular Contributor.  A 
Contribution 'originates' from a Contributor if the program changes or additions that make up the Contribution were made by 
that Contributor itself or by anyone acting on such Contributor's behalf.  Contributions do not include additions to the Program 
which:  (i) are separate modules of software distributed separately or in conjunction with the Program under their own license 
agreement or no license agreement, and (ii) are not derivative works of the Program.  Changes referred to in this paragraph 
may be deletions and/or other alterations.

"Contributor" means OCC and any other entity that distributes the Program.  If a Recipient distributes the Program, the 
Recipient becomes also a Contributor, with respect to other Recipients.   

"Distribute" means to furnish, make available, or otherwise provide to another person or entity outside of the Recipient's own 
organization.   This definition does not include mere use or demonstration of the functioning software.   This definition does 
not include provision of the Program's object code or documentation if the object code or documentation so provided is 
obviously marked, on its face or cover, to reflect the copyright notices indicated in Section 3, or if in so providing the object 
code and documentation, the Recipient clearly indicates that they are subject to copyright protection but may be licensed from 
the Open Card Consortium or its licensees.

"Licensed Patents " means patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its 
Contribution alone or when combined with the Program.  

"Original Program" means the original version of the software accompanying this Agreement as released by OCC, including 
source code and/.or object code and including documentation, if any.  The Original Program as current at any given time may 
be available for licensing from the Open Card Consortium at www.opencard.org under this Agreement or a successor to 
this Agreement.


"Program" means the Original Program, with any Contributions, as supplied by a Contributor to Recipient under this 
Agreement.  Therefore, depending on the software and documentation actually received by Recipient, the Program may be (a) 
only the Original Program, or (b) the Original Program, accompanied by and/or modified by Contributions.  

"Recipient" means anyone who receives the Program under this Agreement.

2.  GRANT OF RIGHTS
  a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-
     free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and 
     sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code 
     form.

  b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-
     free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the 
     Contribution of such Contributor, if any, in source code and object code form.  This patent license shall apply to the 
     combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such 
     addition of the Contribution causes such combination to be covered by the Licensed Patents.  This patent license shall 
     not apply to any other combinations or hardware.

  c) Recipient understands and agrees that although each Contributor grants the licenses to its Contributions set forth 
     herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other 
     intellectual property rights of any other entity.  Each Contributor disclaims any liability to Recipient for claims 
     brought by any other entity based on infringement of intellectual property rights or otherwise.  As a condition to 
     exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any 
     other intellectual property rights needed, if any.  For example, if a third party patent license is required to allow 
     Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the 
     Program.

  d) Without changing the effect of Section 2(c),  each Contributor represents that to its knowledge it has sufficient 
     copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement. 

3.  REQUIREMENTS A Contributor may choose to distribute the Program in object code form under its own license 
    agreement, provided that:

  a) the Contributor complies with the terms and conditions of this Agreement; and

  b) the Contributor's  license agreement:
    i)   effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including 
         warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability 
         and fitness for a particular purpose; 
    ii)  effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, 
         incidental and consequential damages, such as lost profits; 
    iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any 
         other party; and
    iv)  states that source code for the Program is available from such Contributor under this Agreement, and informs 
         licensees how to obtain it in a reasonable manner on or through a medium customarily used for software 
         exchange. 

When a Contributor distributes the Program in source code form:
  a) the Contributor must distribute it under this Agreement; and 
  b)the Contributor must include a copy of this Agreement with each copy of the Program.  

Each Contributor must include the following in a conspicuous location in the Program: 

Copyright  {year(s) here}, Open Card Consortium and others. All Rights Reserved. (Contributor should list here the 
years shown on the version received by the Contributor, as well as the year(s) of Contributor's Contributions),

In addition, each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows 
subsequent Recipients to identify the Contribution and the originator of the Contribution.  

Each Contributor agrees to provide condensed summaries of its Contributions to OCC periodically, from time to time on a 
schedule decided solely by Contributor, either with or without copies of the Program as modified by such Contributions.

4.  COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the 
like.  While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program 
in a commercial product offering must do so in a manner which does not create potential liability for other Contributors.   
Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial 
Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, 
damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against 
the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with 
its distribution of the Program in a commercial product offering.  The obligations in this section do not apply to any claims or 
Losses relating to any actual or alleged intellectual property infringement, except to the extent that the actual or alleged 
infringement arises from the Contribution(s) of the Commercial Contributor.  In order to qualify, an Indemnified Contributor 
must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to 
control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations.  The 
Indemnified Contributor may participate in any such claim at its own expense.

For example, a Contributor might include the Program in a commercial product offering, Product X.  That Contributor is then a 
Commercial Contributor.  If that Commercial Contributor then makes performance claims, or offers warranties related to 
Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone.  Under this 
section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance 
claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor 
must pay those damages.

Contributor may only state that the Program it distributes is compatible with the Open Card Framework if Contributor specifies 
the version of the Program with which compatibility is claimed and if such Program has passed the then-current, unmodified 
OCC compatibility tests for that version of the Open Card Framework available from OCC. OCC may at any time, but is never 
required to, audit the Program for compatibility. If  OCC determines that the Program does not pass the applicable unmodified 
OCC compatibility tests, OCC may require the Contributor to cease claiming compatibility for that version.  Contributor must 
comply promptly and will exert commercially reasonable efforts to notify its licensees that the Program as provided to them 
under a claim of compatibility is actually not compatible.  Failure to comply promptly will be a breach of this Agreement under 
Section 7 below.  Recipient understands that no trademark rights are granted by virtue of this Agreement; any licensing of such 
rights will be the subject of a separate agreement.

5.  NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, 
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT 
LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR 
FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using 
and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but 
not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or 
equipment, and unavailability or interruption of operations.  

6.  DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS 
SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 
CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON 
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE 
EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
DAMAGES.

7.  GENERAL
If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or 
enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision 
shall be reformed to the minimum extent necessary to make such provision valid and enforceable.

If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-
claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this 
Agreement shall terminate as of the date such litigation is filed.  In addition, If Recipient institutes patent litigation against any 
entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the 
Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under 
Section 2(b) shall terminate as of the date such litigation is filed. 

All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of 
this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance.  The 
reasonable period of time is never to exceed sixty (60) calendar days.  If all Recipient's rights under this Agreement terminate, 
Recipient must cease using and distributing the Program as soon as reasonably practicable.  However, Recipient's obligations 
under this Agreement, and any and all licenses granted by Recipient relating to the Program, shall continue and survive.  

OCC may publish new versions (including revisions) of this Agreement from time to time.  OCC may also publish new 
versions of the Program from time to time, possibly including Contributions, but OCC is never obligated to include any 
particular Contribution.   Each new version of the Agreement, as well as each new version of the Program, will be given a 
distinguishing version number.  Each Contributor may distribute a version of the Program,(with or without that Contributor's 
Contributions), subject to the version of the Agreement under which the Contributor properly received it, or under a newer 
version of this Agreement, as the Contributor may choose.

No one other than OCC has the right to modify this Agreement.  Except as expressly stated in Sections 2(a) and 2(b) above, 
Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, 
by implication, by estoppel or otherwise.  All rights in the Program not expressly granted under this Agreement are reserved.

This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of 
America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action 
arose.  Each party waives its rights to a jury trial in any resulting litigation.  

	
Copyright  1997 - 1999 IBM Corporation.

Redistribution and use in source (source code) and binary (object code)
forms, with or without modification, are permitted provided that the
following conditions are met:
1. Redistributed source code must retain the above copyright notice, this
list of conditions and the disclaimer below.
2. Redistributed object code must reproduce the above copyright notice,
this list of conditions and the disclaimer below in the documentation
and/or other materials provided with the distribution.
3. The name of IBM may not be used to endorse or promote products derived
from this software or in any other form without specific prior written
permission from IBM.
4. Redistribution of any modified code must be labeled "Code derived from
the original OpenCard Framework".

THIS SOFTWARE IS PROVIDED BY IBM "AS IS" FREE OF CHARGE. IBM SHALL NOT BE
LIABLE FOR INFRINGEMENTS OF THIRD PARTIES RIGHTS BASED ON THIS SOFTWARE.  ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED.  IBM DOES NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THIS
SOFTWARE WILL MEET THE USER'S REQUIREMENTS OR THAT THE OPERATION OF IT WILL
BE UNINTERRUPTED OR ERROR-FREE.  IN NO EVENT, UNLESS REQUIRED BY APPLICABLE
LAW, SHALL IBM BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  ALSO, IBM IS UNDER NO OBLIGATION
TO MAINTAIN, CORRECT, UPDATE, CHANGE, MODIFY, OR OTHERWISE SUPPORT THIS
SOFTWARE.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>LDAP - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>LDAP - Reference Documentation</h1>
        <p>Class implementing support for the Lightweight Directory Access Protocol (LDAP)</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">LDAP() constructor</a>
            </li>
            <li>
                <a href="#get">get()</a>
            </li>
            <li>
                <a href="#search">search()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">LDAP(String url)</p>
        <h3>Description</h3>
        <p>Bind to LDAP server at given url.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>url</td>
                <td>URL of LDAP server to bind against.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Arguments must be of type X509</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ldap = new LDAP("ldap://ldap.ecard.sozialversicherung.at/c=at");

</pre>
        <h2 id="get">get()</h2>
        <h3>Prototype</h3>
        <p class="signature">Array get(String dn)</p>
        <h3>Description</h3>
        <p>Return a node in the LDAP directory.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>Array of attributes stored with the node.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Arguments must be of type X509</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An error occured talking to the LDAP server</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

node = ldap.get("o=Hauptverband der österreichischen Sozialversicherungsträger");

for (i in node) {
	print(i + " = " + node[i]);
}

</pre>
        <h2 id="search">search()</h2>
        <h3>Prototype</h3>
        <p class="signature">Array search(String start, String filter)</p>
        <h3>Description</h3>
        <p>Search for an entry in the LDAP directory using a starting point and a search filter.</p>
                             
        <p>The search filter must conform to RFC2254</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>Array of entries in the LDAP directory. An entry itself is an array with the
                             attributes as index.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Arguments must be of type X509</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An error occured talking to the LDAP server</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

list = ldap.search("ou=VPSig CA 2," +
                   "o=Hauptverband der österreichischen Sozialversicherungsträger",
                   "(&amp;(cn=VP750126:PNSER:11716977281833697432792823912539163133345)" +
                   "(SNgesperrt=TRUE))");

for (i = 0; i &lt; list.length; i++) {
	print(list[i]._name);
	for (j in list[i]) {
		print(j + " = " + list[i][j]);
	}
}

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Key - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Key - Reference Documentation</h1>
        <p>
            <p>Implements support for cryptographic keys.</p>
                             
            <p>Use this class to create cryptographic keys. Key values are either
                    set in the key profile or defined using the setComponent() method.</p>
                             
            <p>To use AES with 192 or 256 bit, you will need to install the Java
                    Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy
                    available from the site where you downloaded your Java runtime.
                    See java.sun.com or Google for details on how to install these
                    files.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Key() constructor</a>
            </li>
            <li>
                <a href="#setType">setType()</a>
            </li>
            <li>
                <a href="#getType">getType()</a>
            </li>
            <li>
                <a href="#setSize">setSize()</a>
            </li>
            <li>
                <a href="#getSize">getSize()</a>
            </li>
            <li>
                <a href="#setComponent">setComponent()</a>
            </li>
            <li>
                <a href="#getComponent">getComponent()</a>
            </li>
            <li>
                <a href="#getECPoint">getECPoint()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>SECRET</td>
                <td>Secret key type in setType() and getType() method</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>PRIVATE</td>
                <td>Private key type in setType() and getType() method</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>PUBLIC</td>
                <td>Public key type in setType() and getType() method</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES</td>
                <td>DES secure key component</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AES</td>
                <td>AES secure key component</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>MODULUS</td>
                <td>RSA key component (modulus)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>EXPONENT</td>
                <td>RSA key component (exponent)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CRT_P</td>
                <td>RSA private key component P</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CRT_Q</td>
                <td>RSA private key component Q</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CRT_DP1</td>
                <td>RSA private key component (D mod P^-1)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CRT_DQ1</td>
                <td>RSA private key component (D mod P^-1)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CRT_PQ</td>
                <td>RSA private key component (Q^-1 mod P)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_D</td>
                <td>EC private key component</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_QX</td>
                <td>EC public key component, x coordinate of point q</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_QY</td>
                <td>EC public key component, y coordinate of point q</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_CURVE_OID</td>
                <td>Object identifier of named curve</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_A</td>
                <td>Elliptic curve coefficient a</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_B</td>
                <td>Elliptic curve coefficient b</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_GX</td>
                <td>Elliptic curve x coordinate of generator point G</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_GY</td>
                <td>Elliptic curve y coordinate of generator point G</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_N</td>
                <td>Elliptic curve order of base point G</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_H</td>
                <td>Elliptic curve cofactor of generator point G</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_P</td>
                <td>Elliptic curve prime p (Fp)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_M</td>
                <td>Elliptic curve degree m (F2^m)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_K1</td>
                <td>Elliptic curve reduction polynom exponent k1 (F2^m)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_K2</td>
                <td>Elliptic curve reduction polynom exponent k2 (F2^m)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECC_K3</td>
                <td>Elliptic curve reduction polynom exponent k3 (F2^m)</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">Key()</p>
        <p class="signature">Key(String profile)</p>
        <p class="signature">Key(Key otherKey)</p>
        <h3>Description</h3>
        <p>Create an empty key object and set properties from profile or existing key.</p>
                             
        <p>If no profile or existing key is specified, then an empty key is created.</p>
                             
        <p>See the examples in the directory ./profiles how to create
                        XML key profiles.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>profile</td>
                <td>Name of file containing Global Platform key profile</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>otherKey</td>
                <td>Existing key whose components are copied into the new key</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();
assert(key != null);

var key = new Key("profiles/kp_single_des_1.xml");
assert(key != null);

assert(key.profile);
assert(key.profile.UniqueID == "2B0601040181C31F100001");
assert(key.profile.ProfileVersion == "1.1.0");
assert(key.profile.ErrataVersion == "0");
assert(key.profile.Description.elementValue == "Single DES Test Key 1");
assert(key.profile.Revisions);
assert(key.profile.Revisions.Revision.length == 1);
assert(key.profile.Revisions.Revision[0]);
assert(key.profile.Revisions.Revision[0].Version == "1.0.0");
assert(key.profile.Revisions.Revision[0].Date == "2005-12-09");
assert(key.profile.Revisions.Revision[0].Time == "00:00:00");
assert(key.profile.Revisions.Revision[0].By == "www.openscdp.org");
assert(key.profile.Revisions.Revision[0].Digest == "00000000");
assert(key.profile.KeyInfo);
assert(key.profile.KeyInfo.Name == "SingleDESTest1");
assert(key.profile.KeyInfo.Type == "SECRET");
assert(key.profile.KeyInfo.SubType == "DES");
assert(key.profile.KeyInfo.Size == "64");
assert(key.profile.KeyInfo.Mode == "TEST");
assert(key.profile.Attribute);
assert(key.profile.Attribute.Sensitive == "false");
assert(key.profile.Attribute.Importable == "true");
assert(key.profile.Attribute.Exportable == "true");
assert(key.profile.Usage);
assert(key.profile.Usage.Encrypt == "true");
assert(key.profile.Usage.Decrypt == "true");
assert(key.profile.Usage.DecryptEncrypt == "true");
assert(key.profile.Usage.Sign == "true");
assert(key.profile.Usage.Verify == "true");
assert(key.profile.Usage.Wrap == "true");
assert(key.profile.Usage.Unwrap == "true");
assert(key.profile.Usage.UnwrapWrap == "true");
assert(key.profile.Usage.Derive == "true");
assert(key.profile.Value);
assert(key.profile.Value.Format == "DES");
assert(key.profile.Value.Component);
assert(key.profile.Value.Component.length == 1);
assert(key.profile.Value.Component[0].Value == "7CA110454A1A6E57");
assert(key.profile.Value.Component[0].Encoding == "HEX");

var newkey = new Key(key);

assert(newkey.getType() == Key.SECRET);
assert(newkey.getSize() == 64);
assert(newkey.profile == key.profile);
assert(newkey.getComponent(Key.DES).toString(HEX) == "7CA110454A1A6E57");

var key = new Key("profiles/kp_aes_128.xml");
assert(key != null);
assert(key.getComponent(Key.AES).toString(HEX) == "7CA110454A1A6E570131D9619DC1376E");

var key = new Key("profiles/kp_ec_public.xml");
assert(key != null);
assert(key.getComponent(Key.ECC_P).length == 24);

</pre>
        <h2 id="setType">setType()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setType(Number type)</p>
        <h3>Description</h3>
        <p>Set the basic key type to either Key.SECRET, Key.PRIVATE or Key.PUBLIC.</p>
                             
        <p>If a profile was used to create the key, then the profile.KeyInfo.Type property
                        is updated accordingly.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>type</td>
                <td>Type of key. Must be either Key.SECRET, Key.PRIVATE or Key.PUBLIC</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>None</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();

key.setType(Key.SECRET);
key.setType(Key.PRIVATE);
key.setType(Key.PUBLIC);

key = new Key("profiles/kp_single_des_1.xml");

key.setType(Key.SECRET);
key.setType(Key.PRIVATE);
key.setType(Key.PUBLIC);

</pre>
        <h2 id="getType">getType()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getType()</p>
        <h3>Description</h3>
        Get the basic key type which is either Key.SECRET, Key.PRIVATE or Key.PUBLIC.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>The type of the key or the undefined value if the type is not specified</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();

key.setType(Key.SECRET);
assert(key.getType() == Key.SECRET);

key = new Key("profiles/kp_single_des_1.xml");
assert(key.getType() == Key.SECRET);


</pre>
        <h2 id="setSize">setSize()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setSize(Number size)</p>
        <h3>Description</h3>
                    
        <p>Set the key size in number of bits for the key, if not already set from the profile.</p>
                    
        <p>This method should be used to specify the key size in a key template passed to the
               Crypto.generateKeyPair() method.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>size</td>
                <td>Number of bits for key</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>None</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();
key.setType(Key.PRIVATE);
key.setSize(1024);

</pre>
        <h2 id="getSize">getSize()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getSize()</p>
        <h3>Description</h3>
        Get the size of the key expressed as number of bits
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>The number of bits comprising this key</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();

key.setType(Key.PUBLIC);
key.setSize(1024);
assert(key.getSize() == 1024);

key = new Key("profiles/kp_single_des_1.xml");
assert(key.getSize() == 64);


</pre>
        <h2 id="setComponent">setComponent()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setComponent(Number type, ByteString value)</p>
        <h3>Description</h3>
                    
        <p>Set a component for the cryptographic key.</p>
                    
        <p>For DES keys only the component Key.DES is defined.</p>
                    
        <p>For AES keys only the component Key.AES is defined. If you want to use AES with 192 or 256 bit,
               then will need to install the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy
               available from the site where you downloaded your Java runtime.
               See java.sun.com or Google for details on how to install these
               files.</p>
                    
        <p>RSA private keys can be composed in one of two ways, either with Key.MODULUS and Key.EXPONENT or
               with Key.CRT_P, Key.CRT_Q, Key.CRT_DP, Key.CRT_DQ and Key.CRT_PQ.</p>
        	
        <p>ECC private and public keys can be composed by specifying the elliptic curve and the private
               value D or the public point Q, which consists of a x and y coordinate.</p>
                    
        <p>The elliptic curve can be either defined by the object identifier (in binary format)
               of the named curve or by specifying the individual curve parameter (p, a, b, Gx, Gy, n, h)
               for Fp or (m, k1, k2, k3, Gx, Gy, n, h) for F2m. </p>
                    
        <p>See the script in tools/eccutils.js for a list of pre-defined curve object identifier.</p>
                    
        <p>All key parameter are interpreted as unsigned big integer.</p>
                    
        <p>If the key type is not yet determined, then the first call
               of setComponent() will define the key type and subsequent
               setComponent() calls must only overwrite or extend the key component
               values already defined. This, however, only works if the key type can
               be derived from the component supplied (e.g. the key type (Private/Public) can
               not be automatically determined when specifying the modulus).</p>
                    
        <p>Keys are only constructed from components at the time
               they are needed by a cryptographic operation. The key itself
               is then stored as a session value until a subseqent call to
               setComponent() erases the cached key.</p>
        	
        <p>To allow for the RSA blinding operation, the public key exponent can be defined
               for RSA CRT private keys. This is done with the Key.EXPONENT component. If no
               Key.EXPONENT is defined for a RSA CRT private key, then no RSA blinding will be used.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>type</td>
                <td>Component of key provided in value. Must be
              one of Key.DES, Key.AES, Key.MODULUS, Key.EXPONENT, Key.CRT_* or Key.ECC_*</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Value of component identified by type argument</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>None</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The value provided for the key component is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();

// Make key a single length DES key (56 bit)
key.setComponent(Key.DES, new ByteString("7CA110454A1A6E57", HEX));
assert(key.getSize() == 64);

// Make key a double length DES key (112 bit)
key.setComponent(Key.DES, new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX));
assert(key.getSize() == 128);

// Make key a triple length DES key (168 bit)
key.setComponent(Key.DES,
            new ByteString("7CA110454A1A6E570131D9619DC1376E9DC1376E0131D961", HEX));
assert(key.getSize() == 192);

key = new Key("profiles/kp_single_des_1.xml");
assert(key.getSize() == 64);

// Make key a single length DES key (56 bit) - Overwriting value from profile
key.setComponent(Key.DES, new ByteString("7CA110454A1A6E57", HEX));

// Make key a double length DES key (112 bit)
key.setComponent(Key.DES, new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX));

// Make key a triple length DES key (168 bit)
key.setComponent(Key.DES,
            new ByteString("7CA110454A1A6E570131D9619DC1376E9DC1376E0131D961", HEX));


// Make AES key

var key = new Key();

// Make key a 128 bit AES key
key.setComponent(Key.AES, new ByteString("000102030405060708090a0b0c0d0e0f", HEX));
assert(key.getSize() == 128);

// Make key a 192 bit AES key
key.setComponent(Key.AES,
            new ByteString("000102030405060708090a0b0c0d0e0f1011121314151617", HEX));
assert(key.getSize() == 192);

// Make key a 256 bit AES key
key.setComponent(Key.AES, new ByteString("000102030405060708090a0b0c0d0e0f" +
                                         "101112131415161718191a1b1c1d1e1f", HEX));
assert(key.getSize() == 256);


// Make RSA private key from modulus and private exponent

var key = new Key();

key.setType(Key.PRIVATE);

key.setComponent(Key.MODULUS, new ByteString(
            "b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9" +
            "900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX));
key.setComponent(Key.EXPONENT, new ByteString(
            "9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae" +
            "79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", HEX));
assert(key.getSize() == 512);


// Make RSA private key from CRT components

var key = new Key();

key.setType(Key.PRIVATE);

key.setComponent(Key.CRT_P, new ByteString(
            "c0a0758cdf14256f78d4708c86becdead1b50ad4ad6c5c703e2168fbf37884cb", HEX));
key.setComponent(Key.CRT_Q, new ByteString(
            "f01734d7960ea60070f1b06f2bb81bfac48ff192ae18451d5e56c734a5aab8a5", HEX));
key.setComponent(Key.CRT_DP1, new ByteString(
            "b54bb9edff22051d9ee60f9351a48591b6500a319429c069a3e335a1d6171391", HEX));
key.setComponent(Key.CRT_DQ1, new ByteString(
            "d3d83daf2a0cecd3367ae6f8ae1aeb82e9ac2f816c6fc483533d8297dd7884cd", HEX));
key.setComponent(Key.CRT_PQ, new ByteString(
            "b8f52fc6f38593dabb661d3f50f8897f8106eee68b1bce78a95b132b4e5b5d19", HEX));
assert(key.getSize() == 512);


// Make RSA public key from modulus and public exponent

var key = new Key();

key.setType(Key.PUBLIC);

key.setComponent(Key.MODULUS, new ByteString(
            "b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9" +
            "900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX));
key.setComponent(Key.EXPONENT, new ByteString("11", HEX));
assert(key.getSize() == 512);


// Make ECC private key (Fp) / prime192v1

var key = new Key();
key.setType(Key.PRIVATE);

// Setting the curve parameter using an object identifier automatically sets all
// parameter
var oid = new ByteString("1.2.840.10045.3.1.1", OID);
key.setComponent(Key.ECC_CURVE_OID, oid);
assert(key.getComponent(Key.ECC_P).toString(16).equals(
            "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFF"));
assert(key.getComponent(Key.ECC_A).toString(16).equals(
            "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFC"));
assert(key.getComponent(Key.ECC_B).toString(16).equals(
            "64210519E59C80E70FA7E9AB72243049FEB8DEECC146B9B1"));
assert(key.getComponent(Key.ECC_GX).toString(16).equals(
            "188DA80EB03090F67CBF20EB43A18800F4FF0AFD82FF1012"));
assert(key.getComponent(Key.ECC_GY).toString(16).equals(
            "07192B95FFC8DA78631011ED6B24CDD573F977A11E794811"));
assert(key.getComponent(Key.ECC_N).toString(16).equals(
            "FFFFFFFFFFFFFFFFFFFFFFFF99DEF836146BC9B1B4D22831"));
assert(key.getComponent(Key.ECC_H).toString(16).equals(
            "000000000000000000000000000000000000000000000001"));

key.setComponent(Key.ECC_D, new ByteString(
            "C2C7ACAB793AF41C242456CE64D5B61054629AC23B27A0E0", HEX));
assert(key.getSize() == 192);

// Setting the prime automatically tries to determine the curve OID
var l = [ "secp192r1", "secp256r1", "brainpoolP192r1", "brainpoolP224r1", "brainpoolP256r1", "brainpoolP320r1", "secp192k1", "secp192k1"];
for (var i = 0; i &lt; l.length; i++) {
	var s = l[i];
	print(s);
	var oid = new ByteString(s, OID);
	var k1 = new Key();
	k1.setType(Key.PUBLIC);
	k1.setComponent(Key.ECC_CURVE_OID, oid);
	var p = k1.getComponent(Key.ECC_P);

	var k2 = new Key();
	k2.setType(Key.PUBLIC);
	k2.setComponent(Key.ECC_P, p);
	assert(k2.getComponent(Key.ECC_CURVE_OID).equals(oid));
}

// Make ECC public key (Fp) / prime192v1

var key = new Key();
key.setType(Key.PUBLIC);
key.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.1.1", OID));
key.setComponent(Key.ECC_QX, new ByteString(
            "BBA0C04725F939ABE6A0D1E9CEB82F336B3A04205C6E5094", HEX));
key.setComponent(Key.ECC_QY, new ByteString(
            "FE6D6A3F6F72616D7488113AF4ABA44581ADEE297B984A08", HEX));
assert(key.getSize() == 192);


// Make ECC private key (F2m) / c2m239v1

var key = new Key();
key.setType(Key.PRIVATE);
key.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.0.11", OID));

assert(key.getComponent(Key.ECC_M).toString(16).equals("EF"));
assert(key.getComponent(Key.ECC_K1).toString(16).equals("24"));
assert(key.getComponent(Key.ECC_K2).toString(16).equals("00"));
assert(key.getComponent(Key.ECC_K3).toString(16).equals("00"));
assert(key.getComponent(Key.ECC_B).toString(16).equals(
            "790408F2EEDAF392B012EDEFB3392F30F4327C0CA3F31FC383C422AA8C16"));
assert(key.getComponent(Key.ECC_GX).toString(16).equals(
            "57927098FA932E7C0A96D3FD5B706EF7E5F5C156E16B7E7C86038552E91D"));
assert(key.getComponent(Key.ECC_GY).toString(16).equals(
            "61D8EE5077C33FECF6F1A16B268DE469C3C7744EA9A971649FC7A9616305"));
assert(key.getComponent(Key.ECC_N).toString(16).equals(
            "2000000000000000000000000000000F4D42FFE1492A4993F1CAD666E447"));
assert(key.getComponent(Key.ECC_H).toString(16).equals(
            "000000000000000000000000000000000000000000000000000000000004"));

key.setComponent(Key.ECC_D, new ByteString(
            "145642755521911534651321230007534120304391871461646461466464667494947990", HEX));
assert(key.getSize() == 239);


// Make ECC public key (F2m) / c2m239v1

var key = new Key();
key.setType(Key.PUBLIC);
key.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.0.11", OID));
key.setComponent(Key.ECC_QX, new ByteString(
            "5894609CCECF9A92533F630DE713A958E96C97CCB8F5ABB5A688A238DEED", HEX));
key.setComponent(Key.ECC_QY, new ByteString(
            "6DC2D9D0C94EBFB7D526BA6A61764175B99CB6011E2047F9F067293F57F5", HEX));
assert(key.getSize() == 239);

</pre>
        <h2 id="getComponent">getComponent()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getComponent(Number type)</p>
        <h3>Description</h3>
        Return a component of a key. Key components can only be retrieved, if they
                     are accessible. Key components stored in a HSM are usally not accessible.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>type</td>
                <td>Component of key requested. Must be one of
              Key.DES, Key.AES, Key.MODULUS, Key.EXPONENT, Key.CRT_* or Key.ECC_*</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The value of the key component or undefined if the component is not defined.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();

// Make key a single length DES key (56 bit)
key.setComponent(Key.DES, new ByteString("7CA110454A1A6E57", HEX));
assert(key.getComponent(Key.DES).toString(HEX) == "7CA110454A1A6E57");

// Make key a double length DES key (112 bit)
key.setComponent(Key.DES, new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX));
assert(key.getComponent(Key.DES).toString(HEX) == "7CA110454A1A6E570131D9619DC1376E");

// Make key a triple length DES key (168 bit)
key.setComponent(Key.DES,
            new ByteString("7CA110454A1A6E570131D9619DC1376E9DC1376E0131D961", HEX));
assert(key.getComponent(Key.DES).toString(HEX) ==
            "7CA110454A1A6E570131D9619DC1376E9DC1376E0131D961");

// Create key from profile
key = new Key("profiles/kp_single_des_1.xml");
assert(key.getComponent(Key.DES).toString(HEX) == "7CA110454A1A6E57");

// Change component initialized by profile
key.setComponent(Key.DES, new ByteString("A110454A1A6E577C", HEX));
assert(key.getComponent(Key.DES).toString(HEX) == "A110454A1A6E577C");


</pre>
        <h2 id="getECPoint">getECPoint()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getECPoint()</p>
        <h3>Description</h3>
        Return an ECPoint object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>org.bouncycastle.math.ec.ECPoint</code>
                </td>
                <td>The ECPoint corresponding to the ECC_QX and ECC_QY components.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>ECC_QX and ECC_QY must be specified</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var key = new Key();
key.setType(Key.PUBLIC);
key.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.1.1", OID));
key.setComponent(Key.ECC_QX, new ByteString(
            "bba0c04725f939abe6a0d1e9ceb82f336b3a04205c6e5094", HEX));
key.setComponent(Key.ECC_QY, new ByteString(
            "fe6d6a3f6f72616d7488113af4aba44581adee297b984a08", HEX));
var ecp = key.getECPoint();
assert(ecp.getAffineXCoord().toBigInteger().toString(16) == "bba0c04725f939abe6a0d1e9ceb82f336b3a04205c6e5094");
assert(ecp.getAffineYCoord().toBigInteger().toString(16) == "fe6d6a3f6f72616d7488113af4aba44581adee297b984a08");


</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>GPSystem - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>GPSystem - Reference Documentation</h1>
        <p>Class implementing the Global Platform GPSystem class</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">GPSystem() constructor</a>
            </li>
            <li>
                <a href="#getVersion">getVersion()</a>
            </li>
            <li>
                <a href="#wait">wait()</a>
            </li>
            <li>
                <a href="#trace">trace()</a>
            </li>
            <li>
                <a href="#isTraceOn">isTraceOn()</a>
            </li>
            <li>
                <a href="#setTraceLevel">setTraceLevel()</a>
            </li>
            <li>
                <a href="#log">log()</a>
            </li>
            <li>
                <a href="#markTrace">markTrace()</a>
            </li>
            <li>
                <a href="#copyTrace">copyTrace()</a>
            </li>
            <li>
                <a href="#getVendorObject">getVendorObject()</a>
            </li>
            <li>
                <a href="#getSystemID">getSystemID()</a>
            </li>
            <li>
                <a href="#dateTimeByteString">dateTimeByteString()</a>
            </li>
            <li>
                <a href="#mapFilename">mapFilename()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">None</p>
        <h3>Description</h3>
        The GPSystem class only provides class functions. No objects can be instantiated.
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

</pre>
        <h2 id="getVersion">getVersion()</h2>
        <h3>Prototype</h3>
        <p class="signature">String getVersion()</p>
        <h3>Description</h3>
        <p>Retrieve the version of the Global Platform Scripting specification implemented by the runtime.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>String containing the version number</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

version = GPSystem.getVersion();

assert(version == "1.1.0");

</pre>
        <h2 id="wait">wait()</h2>
        <h3>Prototype</h3>
        <p class="signature">wait(Number ms)</p>
        <h3>Description</h3>
        <p>Wait for a specified period</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ms</td>
                <td>The time to wait in milliseconds</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The argument stringValue contains characters not compatible with the encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

start = new Date().valueOf();
waitingTime = 1000;

GPSystem.wait(waitingTime);

stop = new Date().valueOf();
elapsed = stop - start;

// Allow a tolerance of 10 ms
print("Wait: " + waitingTime + " ms / Elapsed: " + elapsed + " ms");
assert(((elapsed - 50) &lt;= waitingTime) &amp;&amp; ((elapsed + 50) &gt;= waitingTime));

</pre>
        <h2 id="trace">trace()</h2>
        <h3>Prototype</h3>
        <p class="signature">boolean trace(Object o)</p>
        <h3>Description</h3>
        <p>Append data to the trace file by calling the objects "toString()" method.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>o</td>
                <td>The object to trace</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>Boolean value indicating the success (true) or failure (false) of the tracing</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The argument stringValue contains characters not compatible with the encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

rval = GPSystem.trace("Testoutput from GPSystem.trace()");
// assert(rval == true);

try {
	GPSystem.trace(null);
}
catch (e) {
	assert(e instanceof GPError);
	assert(e.error == GPError.INVALID_TYPE);
}

</pre>
        <h2 id="isTraceOn">isTraceOn()</h2>
        <h3>Prototype</h3>
        <p class="signature">boolean isTraceOn()</p>
        <p class="signature">boolean isTraceOn(String class, Number level)</p>
        <h3>Description</h3>
        <p>Return true if the trace is enabled.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>class</td>
                <td>The class name from this this log entry is created</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>level</td>
                <td>The log level, which is one of GPSystem.[DEBUG, INFO, WARN, ERROR, FATAL]</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>Boolean value indicating if tracing is enabled</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

assert(typeof(GPSystem.isTraceOn()) == "boolean");
assert(typeof(GPSystem.isTraceOn("de.cardcontact.scdp.gp.GPSystem", GPSystem.INFO)) == "boolean");

</pre>
        <h2 id="setTraceLevel">setTraceLevel()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setTraceLevel(String class, Number level)</p>
        <h3>Description</h3>
        <p>Set trace level for given class. Not all implementations support the full feature set.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>class</td>
                <td>The class name from this this log entry is created</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>level</td>
                <td>The log level, which is one of GPSystem.[DEBUG, INFO, WARN, ERROR, FATAL]</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

GPSystem.setTraceLevel("", GPSystem.INFO);		// The default

</pre>
        <h2 id="log">log()</h2>
        <h3>Prototype</h3>
        <p class="signature">boolean log(Number level, String class, Object o)</p>
        <h3>Description</h3>
        <p>Log information for class at level by calling the objects "toString()" method.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>level</td>
                <td>The log level, which is one of GPSystem.[DEBUG, INFO, WARN, ERROR, FATAL]</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>class</td>
                <td>The class name from this this log entry is created</td>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>o</td>
                <td>The object to log</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>Boolean value indicating the success (true) or failure (false) of the tracing</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The argument stringValue contains characters not compatible with the encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

GPSystem.log(GPSystem.DEBUG, "ClassName", "Output at DEBUG log level");
GPSystem.log(GPSystem.INFO,  "ClassName", "Output at INFO log level");
GPSystem.log(GPSystem.WARN,  "ClassName", "Output at WARN log level");
GPSystem.log(GPSystem.ERROR, "ClassName", "Output at ERROR log level");
GPSystem.log(GPSystem.FATAL, "ClassName", "Output at FATAL log level");
GPSystem.log(GPSystem.FATAL, "ClassName", null);

</pre>
        <h2 id="markTrace">markTrace()</h2>
        <h3>Prototype</h3>
        <p class="signature">markTrace()</p>
        <h3>Description</h3>
        <p>Mark the current position in the trace output for later retrieval of
                        trace output using the copyTrace() method.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

GPSystem.markTrace();

</pre>
        <h2 id="copyTrace">copyTrace()</h2>
        <h3>Prototype</h3>
        <p class="signature">String copyTrace()</p>
        <h3>Description</h3>
        <p>Return the trace starting with the position marked with the
                        markTrace() method up to the very last entry.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>Copy of the recent trace entries or null if unsupported</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var msg ="Hello World";
GPSystem.trace(msg);
var t = GPSystem.copyTrace();

if (t != null) {
	assert(t == msg + "\n");
}


</pre>
        <h2 id="getVendorObject">getVendorObject()</h2>
        <h3>Prototype</h3>
        <p class="signature">getVendorObject(String objectName)</p>
        <h3>Description</h3>
        <p>Retrieve a vendor specific object</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>objectName</td>
                <td>The name of the object</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>The created object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.OBJECTCREATIONFAILED</td>
                <td>The desired object could not be created</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

try {
	obj = GPSystem.getVendorObject("myObject");
}
catch (e) {
	assert(e instanceof GPError);
	assert(e.error == GPError.OBJECTCREATIONFAILED);
}

</pre>
        <h2 id="getSystemID">getSystemID()</h2>
        <h3>Prototype</h3>
        <p class="signature">getSystemID()</p>
        <h3>Description</h3>
        	
        <p>Get the ID of the system.</p>
        	
        <p>For the smart card development platform a unique object identifier is returned.</p>
                    
        <p>It has the following components:
                  OpenSCDP.Runtime.MajorVersion.MinorVersion.Build.SerialNumber.</p>
        	
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The ID of the system or null if none available</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var id = GPSystem.getSystemID();
print(id);
var s = id.toString(OID).split(".");

print("Runtime : " + s[s.length - 5]);
print("Major   : " + s[s.length - 4]);
print("Minor   : " + s[s.length - 3]);
print("Build   : " + s[s.length - 2]);
print("Serial  : " + s[s.length - 1]);


</pre>
        <h2 id="dateTimeByteString">dateTimeByteString()</h2>
        <h3>Prototype</h3>
        <p class="signature">dateTimeByteString()</p>
        <h3>Description</h3>
        <p>Return a ByteString containing the current date and time</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The current date and time</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

time = GPSystem.dateTimeByteString();
assert(time != null);
assert(time instanceof ByteString);

</pre>
        <h2 id="mapFilename">mapFilename()</h2>
        <h3>Prototype</h3>
        <p class="signature">mapFilename(String filename, Number location)</p>
        <p class="signature">mapFilename(String filename)</p>
        <h3>Description</h3>
        <p>Searches for a file at the given location and maps the filename to the system specific absolute path.</p>
        		  If no location is specified the function uses the default location identifier GPSystem.AUTO.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>filename</td>
                <td>Filename</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>location</td>
                <td>Location indicator (GPSystem.CWD, GPSystem.USR, GPSystem.SYS, GPSystem.AUTO) </td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>Absolute path of the file. Null if the file was not found.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

absFilename = GPSystem.mapFilename("config.js", GPSystem.SYS);
assert(absFilename != null);

absFilename = GPSystem.mapFilename("config.js");
assert(absFilename != null);

absFilename = GPSystem.mapFilename("novalidfile.js");
assert(absFilename == null);

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>GPSecurityDomain - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>GPSecurityDomain - Reference Documentation</h1>
        <p>
                    
            <p>An instance of the GPSecurityDomain class represents an application
           that is a security domain on a smart card.</p>
                    
            <p>Instances of this class are created using the getApplicationInstance() method
           of the application factory.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">GPSecurityDomain() constructor</a>
            </li>
            <li>
                <a href="#deleteAID">deleteAID()</a>
            </li>
            <li>
                <a href="#installForInstall">installForInstall()</a>
            </li>
            <li>
                <a href="#installForInstallAndSelectable">installForInstallAndSelectable()</a>
            </li>
            <li>
                <a href="#installForLoad">installForLoad()</a>
            </li>
            <li>
                <a href="#loadByName">loadByName()</a>
            </li>
            <li>
                <a href="#openSecureChannel">openSecureChannel()</a>
            </li>
            <li>
                <a href="#select">select()</a>
            </li>
            <li>
                <a href="#sendApdu">sendApdu()</a>
            </li>
            <li>
                <a href="#run">run()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>aid</td>
                <td>Application identifier for this application.</td>
            </tr>
            <tr>
                <td>Card</td>
                <td>card</td>
                <td>Card object associated with application.</td>
            </tr>
            <tr>
                <td>Card</td>
                <td>crypto</td>
                <td>Crypto object associated with application.</td>
            </tr>
            <tr>
                <td>Array</td>
                <td>data[]</td>
                <td>Associative array of data elements.</td>
            </tr>
            <tr>
                <td>Array</td>
                <td>key[]</td>
                <td>Associative array of keys.</td>
            </tr>
            <tr>
                <td>Object</td>
                <td>profile</td>
                <td>Deserialized application profile.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>scp</td>
                <td>Preselected SCP protocol version (2 or 3, Default probe)</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">GPSecurityDomain(String profile)</p>
        <p class="signature">GPSecurityDomain(String profile, ByteString aid, Card card, Crypto crypto, Object dataMapper)</p>
        <h3>Description</h3>
                    
        <p>Create a GPSecurityDomain object and initialize from profile.</p>
                    
        <p>This constructor is provided for special development and testing purposes.
               The preferred method is to use the getApplicationInstance() method of the
               ApplicationFactory.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>profile</td>
                <td>Name of file containing Global Platform Application profile. The file name
                  will be mapped to the file system of the runtime environment.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>aid</td>
                <td>Application identifier for application.</td>
            </tr>
            <tr>
                <td>
                    <code>Card</code>
                </td>
                <td>card</td>
                <td>Card object to associate Application with or null if none defined.</td>
            </tr>
            <tr>
                <td>
                    <code>Crypto</code>
                </td>
                <td>crypto</td>
                <td>Crypto object to associate Application with.</td>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>dataMapper</td>
                <td>Data mapper object to be used for external data elements or null if none defined.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var card = new Card(_scsh3.reader);
var crypto = new Crypto();
var sdAid = new ByteString("A000000003000000", HEX);

var sd = new GPSecurityDomain("profiles/ap_sample.xml", sdAid, card, crypto);

assert(sd != null);
assert(sd.aid != null);
assert(sd.aid instanceof ByteString);
assert(sd.aid.equals(sdAid));
assert(sd.card != null);
assert(sd.crypto != null);

</pre>
        <h2 id="deleteAID">deleteAID()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString deleteAID(ByteString aid)</p>
        <p class="signature">ByteString deleteAID(ByteString aid, Number[] sw)</p>
        <h3>Description</h3>
                    
        <p>Delete application, module or load file stored under given aid using
               the Global Platform DELETE_FILE APDU.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>aid</td>
                <td>Application identifier of application, module or load file.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 status codes.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The method returns the data returned by the ICC in response to the DELETE_FILE command.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>Communication with the ICC failed</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The ICC returned an unexpected status word SW1/SW2</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// var applAid = new ByteString("", HEX);
// sd.deleteAID(applAid, [0x9000, 0x6A88] );

</pre>
        <h2 id="installForInstall">installForInstall()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString installForInstall(ByteString loadFileAID, ByteString executableModuleAID, ByteString applicationAID, ByteString privileges, ByteString installParam, ByteString installToken)</p>
        <p class="signature">ByteString installForInstall(ByteString loadFileAID, ByteString executableModuleAID, ByteString applicationAID, ByteString privileges, ByteString installParam, ByteString installToken, Number[] sw)</p>
        <h3>Description</h3>
                    
        <p>Create an instance of an application under the given AID using the executable module
               from the load file as the template.</p>
                    
        <p>The optional argument sw allows to define a list of acceptable
               status word returned by the ICC. If the argument is missing, then 9000 is
               the only acceptable status word.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>loadFileAID</td>
                <td>Application identifier of load file.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>executableModuleAID</td>
                <td>Application identifier of module in load file.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>applicationAID</td>
                <td>Application identifier for instance to be created.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>privileges</td>
                <td>Application privileges.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>installParam</td>
                <td>Installation parameter.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>installToken</td>
                <td>Install token to authenticate install process or null if not defined.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 status codes.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The method returns the data returned by the ICC in response to the INSTALL command.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>Communication with the ICC failed</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The ICC returned an unexpected status word SW1/SW2</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

/*
var loadFileAid = new ByteString("A000000001", HEX);
var moduleAid = new ByteString("A00000000101", HEX);
var applAid = new ByteString("A00000000102", HEX);
var applPrivileges = new ByteString("00", HEX);
var installParam = new ByteString("C900", HEX);

sd.installForInstall(loadFileAid, moduleAid, applAid, applPrivileges, installParam, null);
*/
</pre>
        <h2 id="installForInstallAndSelectable">installForInstallAndSelectable()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString installForInstallAndSelectable(ByteString loadFileAID, ByteString executableModuleAID, ByteString applicationAID, ByteString privileges, ByteString installParam, ByteString installToken)</p>
        <p class="signature">ByteString installForInstallAndSelectable(ByteString loadFileAID, ByteString executableModuleAID, ByteString applicationAID, ByteString privileges, ByteString installParam, ByteString installToken, Number[] sw)</p>
        <h3>Description</h3>
                    
        <p>Create an instance of an application under the given AID using the executable module
               from the load file as the template.</p>
                    
        <p>After instantiating the applet, it is selectable with the select command.</p>
                    
        <p>The optional argument sw allows to define a list of acceptable
               status word returned by the ICC. If the argument is missing, then 9000 is
               the only acceptable status word.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>loadFileAID</td>
                <td>Application identifier of load file.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>executableModuleAID</td>
                <td>Application identifier of module in load file.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>applicationAID</td>
                <td>Application identifier for instance to be created.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>privileges</td>
                <td>Application privileges.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>installParam</td>
                <td>Installation parameter.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>installToken</td>
                <td>Install token to authenticate install process or null if not defined.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 status codes.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The method returns the data returned by the ICC in response to the INSTALL command.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>Communication with the ICC failed</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The ICC returned an unexpected status word SW1/SW2</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

/*
var loadFileAid = new ByteString("A000000001", HEX);
var moduleAid = new ByteString("A00000000101", HEX);
var applAid = new ByteString("A00000000102", HEX);
var applPrivileges = new ByteString("00", HEX);
var installParam = new ByteString("C900", HEX);

sd.installForInstallAndSelectable(loadFileAid, moduleAid, applAid, applPrivileges,
                                  installParam, null);
*/
</pre>
        <h2 id="installForLoad">installForLoad()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString installForLoad(ByteString loadFileAID, ByteString securityDomainAID, ByteString loadFileDataBlockHash, ByteString loadParam, ByteString loadToken)</p>
        <h3>Description</h3>
                    
        <p>Prepare the download of a load file into the ICC with a subsequent load(),
               loadByName() or loadWithProfile() method.</p>
                    
        <p>The optional argument sw allows to define a list of acceptable
               status word returned by the ICC. If the argument is missing, then 9000 is
               the only acceptable status word.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>loadFileAID</td>
                <td>Application identifier of load file.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>securityDomainAID</td>
                <td>Application identifier of security domain or null if not used.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>loadFileDataBlockHash</td>
                <td>Hash of load file data blocks or null if not used.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>loadParam</td>
                <td>Load parameter or null if not used.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>loadToken</td>
                <td>Load token to authenticate load process or null if not used.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 status codes.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The method returns the data returned by the ICC in response to the INSTALL command.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>Communication with the ICC failed</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The ICC returned an unexpected status word SW1/SW2</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

/*
var loadFileAid = new ByteString("A000000001", HEX);
var sdAid = new ByteString("A000000003000000", HEX);

sd.installForLoad(loadFileAid, sdAid, null, null, null);
*/

</pre>
        <h2 id="loadByName">loadByName()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString loadByName(String capFileName)</p>
        <p class="signature">ByteString loadByName(ByteString capFileName)</p>
        <p class="signature">ByteString loadByName(ByteString capFileName, [[aid, dap]])</p>
        <h3>Description</h3>
                    
        <p>Read cap file and transfer into GP card using the LOAD command APDU.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>capFileName</td>
                <td>Name of cap file. Will be mapped to a file name in the runtime environment.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>capFileName</td>
                <td>Name of cap file as ByteString. Will be mapped to a file name in the runtime environment.</td>
            </tr>
            <tr>
                <td>
                    <code>[[ByteString,ByteString]]</code>
                </td>
                <td>[[aid,dap]]</td>
                <td>Pair of application identifier and data block signature - Not yet supported</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Data returned in last LOAD block</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.OBJECT_NOT_FOUND</td>
                <td>Cap file not found or invalid cap file structure</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>Communication with the ICC failed</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The ICC returned an unexpected status word SW1/SW2</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// sd.loadByName("musclecard/CardEdge.cap");

</pre>
        <h2 id="openSecureChannel">openSecureChannel()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number openSecureChannel(Number level)</p>
        <p class="signature">Number openSecureChannel(Number level, Number version)</p>
        <p class="signature">Number openSecureChannel(Number level, Number version, Number index) (not supported yet)</p>
        <h3>Description</h3>
                    
        <p>Read cap file and transfer into GP card using the LOAD command APDU.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>level</td>
                <td>Level of security requested for the secure channel.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>version</td>
                <td>Key set version.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Key set version index.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Level of security selected for the secure channel.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>Communication with the ICC failed</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The ICC returned an unexpected status word SW1/SW2</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var level = sd.openSecureChannel(0x01);
assert(level == 0x01);
assert(sd.secureChannel != null);
assert(sd.secureChannel.state == SC_CLOSE);

var level = sd.openSecureChannel(0x03, 0x02);
assert(level == 0x03);
assert(sd.secureChannel != null);
assert(sd.secureChannel instanceof GPScp02);
assert(sd.secureChannel.state == SC_CLOSE);

var scp02 = sd.secureChannel;

assert(scp02.securityLevel == 0x03);
assert(scp02.hostChallenge == null);
assert(scp02.keyVersion == null);

scp02.initializeUpdate(0x00, 0x00);

assert(scp02.hostChallenge != null);
assert(scp02.hostChallenge instanceof ByteString);
print(scp02.hostChallenge);

assert(scp02.keyVersion != null);
assert(scp02.keyVersion == 0x00);

assert(scp02.cardChallenge != null);
print(scp02.cardChallenge);
assert(scp02.cardCryptogram != null);
print(scp02.cardCryptogram);
assert(scp02.diversificationData != null);
print(scp02.diversificationData);
assert(scp02.sequenceCounter != null);
print(scp02.sequenceCounter);

var masterSENC = new Key("profiles/kp_jcop_default_s-enc.xml");
var masterSMAC = new Key("profiles/kp_jcop_default_s-mac.xml");

/*
var kmc = new Key("profiles/kp_kmc.xml");

var derivationData = scp02.diversificationData.right(6);

var derivationParam = derivationData.concat(new ByteString("F001", HEX)).concat(derivationData).concat(new ByteString("0F01", HEX));

var masterSENC = new Key();
crypto.deriveKey(kmc, Crypto.DES_ECB, derivationParam, masterSENC);
print("SC-ENC: " + masterSENC.getComponent(Key.DES));

var derivationParam = derivationData.concat(new ByteString("F002", HEX)).concat(derivationData).concat(new ByteString("0F02", HEX));

var masterSMAC = new Key();
crypto.deriveKey(kmc, Crypto.DES_ECB, derivationParam, masterSMAC);
print("SC-MAC: " + masterSMAC.getComponent(Key.DES));

*/

var derivationPostfix = scp02.sequenceCounter.concat(new ByteString("000000000000000000000000", HEX));

// Derive S-ENC session key
var derivationPrefix = new ByteString("0182", HEX);
var derivationParam = derivationPrefix.concat(derivationPostfix);

print("Input to session S-ENC derivation: " + derivationParam);

var sessionSENC = new Key();
crypto.deriveKey(masterSENC, Crypto.DES_CBC, derivationParam, sessionSENC);


// Derive S-MAC session key
var derivationPrefix = new ByteString("0101", HEX);
var derivationParam = derivationPrefix.concat(derivationPostfix);

print("Input to session S-MAC derivation: " + derivationParam);

var sessionSMAC = new Key();
crypto.deriveKey(masterSMAC, Crypto.DES_CBC, derivationParam, sessionSMAC);

scp02.setEncKey(sessionSENC);
scp02.setMacKey(sessionSMAC);

scp02.externalAuthenticate(0x03);

var rsp = sd.sendApdu(0x80, 0xCA, 0x00, 0x66, 0x00); // Send GET DATA command
print(rsp);

// AIDs for Smart Card HSM
var loadFileAid = new ByteString("E82B0601040181C31F020101", HEX);
var moduleAid =   new ByteString("E82B0601040181C31F0201", HEX);
var applAid =     new ByteString("E82B0601040181C31F0201", HEX);

// Clean the card
print("Delete old smart card HSM applet instance...");
sd.deleteAID(applAid, [0x9000, 0x6A88, 0x6A80] );
print("Delete old smart card HSM applet load file...");
sd.deleteAID(loadFileAid, [0x9000, 0x6A88, 0x6A80] );

print("InstallForLoad smart card HSM applet...");
sd.installForLoad(loadFileAid, sdAid, null, null, null);
print("Loading smart card HSM applet...");
sd.loadByName("javacard/smartcardhsm.cap");

print("Instantiating smart card HSM applet...");
var applPrivileges = new ByteString("00", HEX);
var installParam = new ByteString("C900", HEX);
sd.installForInstallAndSelectable(loadFileAid, moduleAid, applAid, applPrivileges, installParam, null);


</pre>
        <h2 id="select">select()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString select()</p>
        <p class="signature">ByteString select(Boolean next, Boolean noData)</p>
        <p class="signature">ByteString select(Boolean next, Number[] sw)</p>
        <p class="signature">ByteString select(Boolean next, Boolean noData, Number[] sw)</p>
        <h3>Description</h3>
                    
        <p>Select security domain on ICC.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>next</td>
                <td>Used to control parameter P1 in the select command. True
               will select next application with matching AID. Default is false.</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>noData</td>
                <td>Ignore data returned from card. Default is false.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 response codes.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Data returned from card in response to select.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>Communication with the ICC failed</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The ICC returned an unexpected status word SW1/SW2</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

/*
var aid = new ByteString("D040000017010101", HEX);
var card = new Card(_scsh3.reader);
var crypto = new Crypto();

var application = new Application("profiles/ap_test.xml", aid, card, crypto,
                                  new Object());

var resp = application.select();
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(false, false);
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(false, [ 0x9000 ]);
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(true, false, [ 0x6A86 ]);
assert(resp instanceof ByteString);
print(resp);
*/

</pre>
        <h2 id="sendApdu">sendApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le, Number[] sw)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and response of the associated card object
                        with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>The method supports ISO7816-4 extended format. This is automatically used, if the length of the data
                        argument exceeds 255 or if the argument le exceeds 256.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>cla</td>
                <td>The CLA byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ins</td>
                <td>The INS byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p1</td>
                <td>The P1 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p2</td>
                <td>The P2 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data bytes to be send in the Command-APDU for case 3 or case 4 commands</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>le</td>
                <td>The number of bytes expected in the response. 256 is encoded as '00' in short format.
                                          65536 is encoded as '0000' in extended format.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data for the command APDU exceeds 65536</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The value given for Le is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>
/*
// Case 1: 0022F3A4 - MANAGE SE

resp = application.sendApdu(0x00, 0x22, 0xF3, 0xA4);
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

resp = card.sendApdu(0x00, 0x22, 0xF3, 0xA4, [0x9000]);
assert(resp instanceof ByteString);


// Case 2: 00B201F400 - READ RECORD from EF_STATUS

resp = card.sendApdu(0x00, 0xB2, 0x01, 0x24, 0);
assert(resp instanceof ByteString);
print(card.SW.toString(16) + " - " + resp);

assert(resp.length &gt; 0);
assert(application.card.SW == 0x9000);

resp = card.sendApdu(0x00, 0xB2, 0x01, 0x24, 0, [0x9000]);
assert(resp.length &gt; 0);


// Case 3: 002A90A008 - HASH

resp = application.sendApdu(0x00, 0x2A, 0x90, 0xA0,
            new ByteString("9000800431323334", HEX));
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

assert(card.SW == 0x9000);

resp = application.sendApdu(0x00, 0x2A, 0x90, 0xA0,
            new ByteString("9000800431323334", HEX),[0x9000]);


// Case 4: 00A40204022F0000 - SELECT EF_STATUS

resp = application.sendApdu(0x00, 0xA4, 0x02, 0x04,
            new ByteString("EF04", HEX), 0);
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

assert(application.card.SW == 0x9000);
assert(resp.length &gt; 0);

resp = application.sendApdu(0x00, 0xA4, 0x02, 0x04,
            new ByteString("EF04", HEX), 0, [0x9000]);
assert(resp.length &gt; 0);
*/
</pre>
        <h2 id="run">run()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void run(String scriptName)</p>
        <h3>Description</h3>
                    
        <p>Locate and execute script fragment in application profile.</p>
                    
        <p>This method does the complete initialization of the key and data
               properties according to the declarations for this script fragment</p>
                    
        <p>Key profiles are obtained from the ApplicationFactory that created the
               Application object.</p>
                    
        <p>External data elements are mapped using the data mapper defined in the
               constructor or the getApplicationInstance() method of the application
               factory.</p>
                    
        <p>Warning: This method is an extension to the methods defined in the Global Platform
               Scripting specification. It is provided as development and test aid.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>scriptName</td>
                <td>Name of script fragment to execute.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>HttpSession - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>HttpSession - Reference Documentation</h1>
        <p>
                    
            <p>Script wrapper object for a http session.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">HttpSession() constructor</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Boolean</td>
                <td>isNew</td>
                <td>True if the session is new</td>
            </tr>
            <tr>
                <td>String</td>
                <td>id</td>
                <td>The session id</td>
            </tr>
        </table>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h1>Troubleshooting</h1>
<p>If something goes wrong with the Smart Card Shell, then this document might
   provide you with the answers you are looking for.</p>
<h2>Installation and Startup</h2>
<h3>The Smart Card Shell does not start</h3>
<p>If you start the Smart Card Shell from the "Start" menue and it does not come
   up with a window, then you should try to start the program manually:</p>
<ol>
<li>Open a command line</li>
<li>Change to the Smart Card Shell installation directory (e.g. cd "c:\Program Files\CardContact\Smart Card Shell 3")</li>
<li>Enter the following command:</li>
</ol>
<pre>
scsh3gui.cmd
</pre>
<p>This command runs the Smart Card Shell without the wrapper. The output on the console should indicate
   where the problem might be.</p>
<h2>Configuration</h2>
<h3>Changing the card reader is not stored in persistant storage</h3>
<p>When the card reader is changed, then the new configuration value
   is written to the <code>.settings.js</code> configuration script. This
   script is executed during startup. Please make sure, that the script
   is stored in your working directory or the installation directory.</p>
<h2>Locating files</h2>
<h3>The Shell does not find my files</h3>
<p>If the shell seems to be unable to locate your files, then check the following:</p>
<ul>
<li>Absolute path names should always work</li>
<li>Relative path names are resolved relative to the location of the currently running script, the
    working directory and the installation directory (See <a href="filelocation.html">Locating Files</a>).</li>
<li>When calling a function that was previously defined in a script, then the current directory is either
    the directory of the calling script or, if entered on the command line, the working directory</li>
</ul>
<h2>My card does not seem to work</h2>
<p>There may be situations, where the Smart Card Shell does not work with your specific card.
   In this case we recommend to enable tracing and try again to analyse the Command- and Response-APDUs
   exchanged between the Shell and your card.</p>
<p>Tracing of APDUs can be enable by editing the <code>opencard.properties</code> file with
   a text editor and by uncommenting the line that reads</p>
<pre>
#OpenCard.trace = opencard.core.service.CardChannel:8
</pre>
<p>to</p>
<pre>
OpenCard.trace = opencard.core.service.CardChannel:8
</pre>
<p>After you restart the shell, you will see trace messages in the form:</p>
<pre>
--- thread    Thread[Thread-5,6,main]
--- source    opencard.core.service.CardChannel@e14ebc, is open, not jammed


[DEBUG    ] opencard.core.service.CardChannel.sendCommandAPDU
--- message   opencard.core.terminal.CommandAPDU@169df00
0000:  00 A4 04 00 07 A0 00 00 02 47 10 01 00           .........G...

--- thread    Thread[Thread-5,6,main]
--- source    opencard.core.service.CardChannel@e14ebc, is open, not jammed


[DEBUG    ] opencard.core.service.CardChannel.response:
--- message   opencard.core.terminal.ResponseAPDU@1af8502
0000:  6F 11 84 07 A0 00 00 02 47 10 01 A5 06 50 04 4D  o.......G....P.M
0010:  52 54 44 90 00                                   RTD..
</pre>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->#! /usr/bin/perl

# usage: 
#     stt [OPTIONS] FILE [...]
#     stt -M FILE [...]
#     stt -c TEMPLATE FILE
#
# OPTIONS:
#    -L TEMPLATEDIR
#    -M
# 
# Updates files that depend on DreamWeaver-style templates.  Examines
# each FILE given on the command-line to see if it appears to depend
# on a DreamWeaver-style template, and if so, updates that file from
# the template whose name is mentioned in the <!-- #BeginTemplate
# "template" --> block in the file.  If "-L TEMPLATEDIR" is specified,
# looks for the templates themselves in TEMPLATEDIR.  If more than one
# "-L TEMPLATEDIR" is given, looks for each template in each
# TEMPLATEDIR specified, in the order given.  If a template is not
# found in any of the TEMPLATEDIRs, or if no "-L TEMPLATEDIR"
# arguments are present, looks for the template in the current
# directory.  The original version of each file is saved with a "~"
# suffix.
#
# If the -M option is given, does not actually update any files; just
# parses each file to see what template it depends on, and outputs
# a make-style dependency list for the files.
#
#
# Mark Phillips
#
# $Log: stt,v $
# Revision 1.1.1.1  2003/03/20 20:05:17  mphillips
# initial import
#

use strict;

$| = 1;

# Hash of templates.  The keys to this hash are template files
# names.  Each hash value is the list returned by calling
# parse_stt() for that template.
my %templates = ();
my %template_paths = ();


# Parse options
my $dodeps = 0;
my $create = 0;
my ($template,$file);
my @TEMPLATEDIRS = ();
while ($ARGV[0] =~ m/^-/) {
    if ($ARGV[0] eq "-M") {
	$dodeps = 1;
	shift;
    } elsif ($ARGV[0] eq "-c") {
	shift;
	$create = 1;
	$template = shift;
	$file     = shift;
    } elsif ($ARGV[0] eq "-L") {
	shift;
	my $dir = shift;
	$dir =~ s|/$||;  # remove trailing '/', if any
	if (! -d $dir) {
	    die "Can't read directory $dir\n";
	} else {
	    push(@TEMPLATEDIRS, $dir);
	}
    }
}

if ($create) {
    if (-f $file) {
	die "File already exists: $file\n";
    }
    open(OUT, ">$file") ||
	die "Can't write file $file\n";
    open(IN, "<$template") ||
	die "Can't read template $template\n";
    print OUT qq|<!-- #BeginTemplate "$template" -->\n|;
    while (<IN>) {
        print OUT $_;
    }
    print OUT qq|<!-- #EndTemplate -->\n|;
    close(OUT);
    close(IN);
    exit;
}

if (!@ARGV) {
    die "no files to process\n";
}

my $file;
while ($file = shift) {
    if (! -f $file) {
	die "Can't read input file $file\n";
    }
    if (! -w $file) {
	die "No permission to modify file $file\n";
    }
    my ($F_text, @F_editables) = @{parse_stt($file)};
    
    my ($template_name,$pre,$post) = parse_templated_file_text($F_text);
    if (!$template_name) {
	print "warning: $file does not appear to use a template; skipping it\n"
	    unless $dodeps;
	next;
    }
    if (!$templates{$template_name}) {
	my $template_path = find_template($template_name);
	if (!$template_path) {
	    print "warning: can't locate template $template_name; skipping file $file\n"
		unless $dodeps;
	    next;
	}
	$templates{$template_name} = parse_stt($template_path);
	$template_paths{$template_name} = $template_path;
    }

    if ($dodeps) {
	print "$file: $template_paths{$template_name}\n";
	next;
    }
    print "applying template $template_paths{$template_name} to $file\n";

    my ($T_text, @T_editables) = @{$templates{$template_name}};

    my $output = $T_text;
    my ($e,$name,$text);
    my %editables_done = ();
    foreach $e (@F_editables) {
	$name  = $e->{name};
	$text = $e->{text};
	$output =~ s|%%%EDITABLE_${name}_EDITABLE%%%|$text|s;
	$editables_done{$name} = 1;
    }
    foreach $e (@T_editables) {
	$name = $e->{name};
	$text = $e->{text};
	if (!$editables_done{$name}) {
	    $output =~ s|%%%EDITABLE_${name}_EDITABLE%%%|$text|s;
	}
    }
    rename($file, "$file~");
    open(OUT, ">$file");
    print OUT $pre;
    print OUT $output;
    print OUT $post;
    close(OUT);
}

# This function parses a DreamWeaver-style input file (template
# or HTML file), processing blocks delimited by
# 
#     <!-- #BeginEditable "name" -->
# 
# and
# 
#     <!-- #EndEditable -->
# 
# Each such block is called an "editable".  The string in quotes in
# the BeginEditable line is called the name of the editable, and any
# text between the above two markers is called the text of the
# editable.  This function returns a reference to a two-element list.
# The first element in the return list is a string which consists of
# the entire text of the input file, with the text of each editable
# replaced with the special string
# 
#     %%%EDITABLE_name_EDITABLE%%%
# 
# The second element of the return list is a list of hash references,
# one for each editable in the file.  Each such hash has two keys,
# "name", and "text", whose values give the name and text of that
# editable.
sub parse_stt {
    my $sttfile = shift;
    if (! -r $sttfile) {
	die "can't read file $sttfile\n";
    }
    open(IN, "<$sttfile");
    my $rawtext = "";
    while (<IN>) { $rawtext .= $_; }
    close(IN);

    my $text = "";
    my @editables = ();

    while ( $rawtext =~ m|<!--\s*#BeginEditable\s*|sg ) {

	 # Set $i to the position at end of above match, i.e. at beginning
	 # of the quoted name of this editable region
	 my $i = pos($rawtext);

	 # Save text up to $i
	 $text .= substr($rawtext, 0, $i);

	 # Chop off the saved text from the beginning of $rawtext
	 $rawtext     = substr($rawtext, $i);

	 # Get the name of the editable
         my $editablename;
	 if ( ($editablename) = ($rawtext =~ m|^\s*"([a-zA-Z0-9_-]*)"\s*-->|s) ) {
	     # Add the quoted name to the text
	     $text .= qq|"$editablename" -->|;
	     # Remove it from $rawtext
	     $rawtext =~ s|^\s*"([a-zA-Z0-9_-]*)"\s*-->||s;
	 } else {
	     die "Can't find name of Editable region (near char $i in file $sttfile)\n";
	 }
	 # Add the subst string for this editable to the text
	 $text .= "%%%EDITABLE_${editablename}_EDITABLE%%%";

	 # Now read the text of the editable itself, and the closing #EndEditable stuff
	 if ( $rawtext =~ m|<!--\s*#EndEditable\s*-->|sg ) {
	      $i = pos($rawtext);
	      my $editabletext = substr($rawtext, 0, $i);
	      $editabletext =~ s|<!--\s*#EndEditable\s*-->||s;
	      $text .= qq|<!-- #EndEditable -->|;
	      $rawtext = substr($rawtext, $i);
	      # Add this editable to the list
	      my %editable = ();
	      $editable{'name'} = $editablename;
	      $editable{'text'} = $editabletext;
	      push(@editables, \%editable);
	  } else {
	      die "Can't find end of editable region '$editablename'\n";
	  }

     }
    # Append any remaining text
    $text .= $rawtext;

    # Return the template and the list of editables
    return [$text, @editables];
}

sub get_template_name_from_text
{
    my $text = shift;
    my $template_name;
    if ( ($template_name) = ($text =~ m|<\!--\s*#BeginTemplate\s*"([^\"]+)"\s*-->|s) ) {
	$template_name =~ s/^\s+//;
	$template_name =~ s/\s+$//;
        return $template_name;
    }
    return undef;
}

sub parse_templated_file_text
{
    my $text = shift;
    my $template_name;
    my ($pre,$post);
    if ( ($template_name) = ($text =~ m|<\!--\s*#BeginTemplate\s*"([^\"]+)"\s*-->|sg) ) {
	$template_name =~ s/^\s+//;
	$template_name =~ s/\s+$//;
        $pre = $text;
        $pre =~ s|(<\!--\s*#BeginTemplate\s*"[^\"]+"\s*-->\s*\n?).*$|$1|s;
        $post = $text;
        $post =~ s|^.*(<\!--\s*#EndTemplate\s*-->)|$1|s;
        return ($template_name,$pre,$post);
    }
    return (undef,undef,undef);
}

sub find_template
{
    my $file = shift;
    my $dir;
    foreach $dir (@TEMPLATEDIRS) {
	if (-r "$dir/$file") { return "$dir/$file"; }
    }
    if (-r $file) { return $file; }
    return undef;
}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Card - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Card - Reference Documentation</h1>
        <p>Class to allow access to ICC</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Card() constructor</a>
            </li>
            <li>
                <a href="#reset">reset()</a>
            </li>
            <li>
                <a href="#getATR">getATR()</a>
            </li>
            <li>
                <a href="#sendApdu">sendApdu()</a>
            </li>
            <li>
                <a href="#plainApdu">plainApdu()</a>
            </li>
            <li>
                <a href="#getCardService">getCardService()</a>
            </li>
            <li>
                <a href="#setCredential">setCredential()</a>
            </li>
            <li>
                <a href="#clearCredential">clearCredential()</a>
            </li>
            <li>
                <a href="#sendSecMsgApdu">sendSecMsgApdu()</a>
            </li>
            <li>
                <a href="#close">close()</a>
            </li>
            <li>
                <a href="#setCardEventListener">setCardEventListener()</a>
            </li>
            <li>
                <a href="#remoteUpdate">remoteUpdate()</a>
            </li>
            <li>
                <a href="#getReaderList">getReaderList()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>T0</td>
                <td>T=0 protocol</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>T1</td>
                <td>T=1 protocol</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>T14</td>
                <td>T=14 protocol</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>OTHER</td>
                <td>Other protocol</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>PICCA</td>
                <td/>
            </tr>
            <tr>
                <td>Number</td>
                <td>PICCB</td>
                <td/>
            </tr>
            <tr>
                <td>Number</td>
                <td>RESET_COLD</td>
                <td>Perform cold reset</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RESET_WARM</td>
                <td>Perform warm reset if supported by reader, otherwise cold reset</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CPRO</td>
                <td>Usage qualifier for MAC protected command-APDU in sendSecMsgApdu()</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CENC</td>
                <td>Usage qualifier for encrypted command-APDU in sendSecMsgApdu()</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RPRO</td>
                <td>Usage qualifier for MAC protected response-APDU in sendSecMsgApdu()</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RENC</td>
                <td>Usage qualifier for encrypted response-APDU in sendSecMsgApdu()</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ALL</td>
                <td>All access modes or all usage qualifier in sendSecMsgApdu()</td>
            </tr>
        </table>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>response</td>
                <td>Last response APDU received from ICC</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SW</td>
                <td>Last status word SW1/SW2 received from ICC</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SW1</td>
                <td>Last status byte SW1 received from ICC</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SW2</td>
                <td>Last status byte SW2 received from ICC</td>
            </tr>
            <tr>
                <td>String</td>
                <td>SWMSG</td>
                <td>Message for SW1/SW2 (Extension to GP)</td>
            </tr>
            <tr>
                <td>opencard.core.terminal.CardTerminal</td>
                <td>nativeCardTerminal</td>
                <td>OCF Card Terminal</td>
            </tr>
            <tr>
                <td>String</td>
                <td>readerName</td>
                <td>Card terminal name</td>
            </tr>
            <tr>
                <td>String</td>
                <td>maxReaderCAPDU</td>
                <td>Command APDU limit by the card terminal (Optional)</td>
            </tr>
            <tr>
                <td>String</td>
                <td>maxReaderRAPDU</td>
                <td>Command APDU limit by the card terminal (Optional)</td>
            </tr>
            <tr>
                <td>String</td>
                <td>remoteMessage</td>
                <td>Message received from server during remote update</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>remoteMessageId</td>
                <td>Message id received from server during remote update</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">Card()</p>
        <p class="signature">Card(String reader)</p>
        <p class="signature">Card(String reader, String cardProfileName)</p>
        <h3>Description</h3>
                    
        <p>Create an object representing an ICC in a reader.</p>
                    
        <p>The name of the card terminal can be passed as argument reader. If the
               card reader supports multiple slots, then the slot number can be specified
               by appending a hash '#' and the slot number. Slot numbers start at 1, 0 means
               any slot and is the default value (e.g. "MCT#2" selects the card reader "MCT" and the
               card in slot 2).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>reader</td>
                <td>Card terminal name</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>cardProfileName</td>
                <td>Name of file containing Global Platform card profile</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_CONNECT_FAILED</td>
                <td>Establishing a connection to the card fails as the card is not present or mute</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

card = new Card();
assert(card instanceof Card);

card = new Card("");
assert(card instanceof Card);

card = new Card(_scsh3.reader);
assert(card instanceof Card);

card = new Card("", "profiles/cp_jcop41.xml");
assert(card instanceof Card);

dumpxml(card.profile, "");

</pre>
        <h2 id="reset">reset()</h2>
        <h3>Prototype</h3>
        <p class="signature">Atr reset(Number resetMode)</p>
        <h3>Description</h3>
        			Perform a cold or warm reset with the ICC.
        
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>resetMode</td>
                <td>Reset mode, either Card.RESET_COLD or Card.RESET_WARM.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Atr</code>
                </td>
                <td>ATR returned by ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Argument must be of type Number and either Card.RESET_COLD or Card.RESET_WARM</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

card = new Card();
atr = card.reset(Card.RESET_COLD);
print("Format Byte     : " + atr.formatByte.toString(16));
print("Interface Bytes : " + atr.interfaceBytes);
print("Historical Bytes: " + atr.historicalBytes);
print("Check Bytes     : " + atr.tckByte.toString(16));
print(atr);

</pre>
        <h2 id="getATR">getATR()</h2>
        <h3>Prototype</h3>
        <p class="signature">Atr getATR()</p>
        <h3>Description</h3>
        			Return ATR of last reset
        
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Atr</code>
                </td>
                <td>ATR returned by ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

card = new Card();
card.reset(Card.RESET_COLD);
atr = card.getATR();
print("Format Byte     : " + atr.formatByte.toString(16));
print("Interface Bytes : " + atr.interfaceBytes);
print("Historical Bytes: " + atr.historicalBytes);
print("Check Bytes     : " + atr.tckByte.toString(16));
print(atr);

</pre>
        <h2 id="sendApdu">sendApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le, Number[] sw)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and response with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>The method supports ISO7816-4 extended format. This is automatically used, if the length of the data
                        argument exceeds 255 or if the argument le exceeds 256.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>cla</td>
                <td>The CLA byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ins</td>
                <td>The INS byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p1</td>
                <td>The P1 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p2</td>
                <td>The P2 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data bytes to be send in the Command-APDU for case 3 or case 4 commands</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>le</td>
                <td>The number of bytes expected in the response. 65536 is encoded as '0000' in extended format.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data for the command APDU exceeds 65536</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The value given for Le is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Case 1: 0022F3A4 - MANAGE SE

resp = card.sendApdu(0x00, 0x22, 0xF3, 0xA4);
print(card.SW.toString(16) + " - " + resp);

// Must return ByteString, null or undefined ?
assert(card.SW == 0x9000);
assert(card.SW1 == 0x90);
assert(card.SW2 == 0x00);

resp = card.sendApdu(0x00, 0x22, 0xF3, 0xA4, [0x9000]);
// Must return ByteString, null or undefined ?


// Case 2: 00B201F400 - READ RECORD from EF_DIR

resp = card.sendApdu(0x00, 0xB2, 0x01, 0xF4, 0);
print(card.SW.toString(16) + " - " + resp);

assert(resp.length &gt; 0);
assert(card.SW == 0x9000);
assert(card.response.equals(resp));

resp = card.sendApdu(0x00, 0xB2, 0x01, 0xF4, 0, [0x9000]);
assert(resp.length &gt; 0);


// Case 3: 002A90A008 - HASH

resp = card.sendApdu(0x00, 0x2A, 0x90, 0xA0, new ByteString("9000800431323334", HEX));
print(card.SW.toString(16) + " - " + resp);

assert(card.SW == 0x9000);

resp = card.sendApdu(0x00, 0x2A, 0x90, 0xA0,
                            new ByteString("9000800431323334", HEX),[0x9000]);


// Case 4: 00A40204022F0000 - SELECT EF_DIR

resp = card.sendApdu(0x00, 0xA4, 0x02, 0x04, new ByteString("2F00", HEX), 0);
print(card.SW.toString(16) + " - " + resp);

assert(card.SW == 0x9000);
assert(resp.length &gt; 0);

resp = card.sendApdu(0x00, 0xA4, 0x02, 0x04, new ByteString("2F00", HEX), 0, [0x9000]);
assert(resp.length &gt; 0);

</pre>
        <h2 id="plainApdu">plainApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendApdu (ByteString apdu)</p>
        <p class="signature">ByteString sendApdu (ByteString apdu, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (ByteString apdu, Number[] sw, Number usageQualifier)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and response with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>This method is an extension to the Global Platform Scripting specification.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>apdu</td>
                <td>Command-APDU in plain format consisting of CLA|INS|P1|P2|Lc|Data|Le</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>usageQualifier</td>
                <td>Usage qualifier to be passed to secure messaging transformation</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Case 1: 0022F3A4 - MANAGE SE

resp = card.plainApdu(new ByteString("0022F3A4", HEX));
print(card.SW.toString(16) + " - " + resp);

// Must return ByteString, null or undefined ?
assert(card.SW == 0x9000);
assert(card.SW1 == 0x90);
assert(card.SW2 == 0x00);

resp = card.plainApdu(new ByteString("0022F3A4", HEX), [0x9000]);
// Must return ByteString, null or undefined ?


// Case 2: 00B201F400 - READ RECORD from EF_DIR

resp = card.plainApdu(new ByteString("00B201F400", HEX));
print(card.SW.toString(16) + " - " + resp);

assert(resp.length &gt; 0);
assert(card.SW == 0x9000);
assert(card.response.equals(resp));

resp = card.plainApdu(new ByteString("00B201F400", HEX), [0x9000]);
assert(resp.length &gt; 0);


// Case 3: 002A90A008 - HASH

resp = card.plainApdu(new ByteString("002A90A0089000800431323334", HEX));
print(card.SW.toString(16) + " - " + resp);

assert(card.SW == 0x9000);

resp = card.plainApdu(new ByteString("002A90A0089000800431323334", HEX), [0x9000]);


// Case 4: 00A40204022F0000 - SELECT EF_DIR

resp = card.plainApdu(new ByteString("00A40204022F0000", HEX));
print(card.SW.toString(16) + " - " + resp);

assert(card.SW == 0x9000);
assert(resp.length &gt; 0);

resp = card.plainApdu(new ByteString("00A40204022F0000", HEX), [0x9000]);
assert(resp.length &gt; 0);

</pre>
        <h2 id="getCardService">getCardService()</h2>
        <h3>Prototype</h3>
        <p class="signature">Object getCardService(String className)</p>
        <h3>Description</h3>
        <p>Obtain OCF card service for API given in className</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>className</td>
                <td>OCF Card Service class or interface name</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>The native Java class providing the service</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Card service not found</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// var cs = card.getCardService("de.cardcontact.opencard.service.smartcardhsm.SmartCardHSMCardService");

</pre>
        <h2 id="setCredential">setCredential()</h2>
        <h3>Prototype</h3>
        <p class="signature">setCredential(Object credential)</p>
        <h3>Description</h3>
                    
        <p>Provide an object that contains the credential required to transform the APDU when
               using sendSecMsgApdu().</p>
                    
        <p>Currently only a secure channel credential can be supplied. A secure channel credential
               is a JavaScript object that supplies a wrap() and optionally an unwrap() method. The
               wrap() method is called to transform the command-APDU, the unwrap() method is called to
               transform the response-APDU.</p>
        	
        <p>The usage qualifier in the sendSecMsgApdu() determins, which part of the command and response APDU are to be
               protected and how. Any of the following four options can be combined: MAC protected command APDU (CPRO), encrypted
               command APDU (CENC), MAC protected response APDU (RPRO) and encrypted response APDU (RENC).</p>
                    
        <p>The usage qualifier controls the transformation of command and reponse APDU. It is passed
               to the wrap() and unwrap() method as the second parameter.</p>
                    
        <p>The usage qualifier can be defined by or'ing the constants Card.CPRO, Card.CENC, Card.RPRO or
               Card.RENC. Use Card.ALL as a combination of the above.</p>
                    
        <p>Subsequent calls to this method will overwrite the previous credential.</p>
                    
        <p>This method is an extension to the Global Platform Scripting specification.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>credential</td>
                <td>Object to be used as credential.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td>Method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


//
// Define SecureChannelCredential class constructor
//
function SecureChannelCredential() {
}

//
// Wrap command-APDU with secure messaging
//
SecureChannelCredential.prototype.wrap = function(apduToWrap, usageQualifier) {
	print("APDU to wrap with usageQualifier " + usageQualifier + " :");
	print(apduToWrap);

	// Put secure messaging transformation here

	return(apduToWrap);
}


//
// Unwrap response-APDU with secure messaging
//
SecureChannelCredential.prototype.unwrap = function(apduToUnwrap, usageQualifier) {
	print("APDU to unwrap with usageQualifier " + usageQualifier + " :");
	print(apduToUnwrap);

	// Put secure messaging transformation here

	return(apduToUnwrap);
}

card.reset(Card.RESET_COLD);

// Allocate a secure channel credential
var sc = new SecureChannelCredential();

card.setCredential(sc);

// Allocate a cardfile object

var response = card.sendSecMsgApdu(Card.ALL, 0x00, 0xA4, 0x02, 0x04,
                            new ByteString("2F00", HEX), 0, [0x9000]);
print(response);


</pre>
        <h2 id="clearCredential">clearCredential()</h2>
        <h3>Prototype</h3>
        <p class="signature">clearCredential()</p>
        <h3>Description</h3>
                    
        <p>Clear credential for card service</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td>Method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

</pre>
        <h2 id="sendSecMsgApdu">sendSecMsgApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, Number[] sw)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data, Number[] sw)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, Number le)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, Number le, Number[] sw)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data, Number le)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data, Number le, Number[] sw)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>If a secure channel is set with the setCredential() method, then this credential
                        will be used to tranform the command and response APDU accordingly. During this
                        transformation process, the usageQualifier is passed to the wrapping / unwrapping
                        methods.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and response with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>The method supports ISO7816-4 extended format. This is automatically used, if the length of the data
                        argument exceeds 255 or if the argument le exceeds 255.</p>
                             
        <p>This method is an extension to the Global Platform Scripting specification.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>usageQualifier</td>
                <td>Usage qualifier for secure messaging transformation. Can be a combination of
                Card.CPRO, Card.CENC, Card.RPRO, Card.RENC and Card.ALL.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>cla</td>
                <td>The CLA byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ins</td>
                <td>The INS byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p1</td>
                <td>The P1 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p2</td>
                <td>The P2 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data bytes to be send in the Command-APDU for case 3 or case 4 commands</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>le</td>
                <td>The number of bytes expected in the response. 255 is encoded as '00' in short format.
                                          65536 is encoded as '0000' in extended format.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data for the command APDU exceeds 65536</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The value given for Le is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See sendApdu() and setCredential() for an example

</pre>
        <h2 id="close">close()</h2>
        <h3>Prototype</h3>
        <p class="signature">close()</p>
        <h3>Description</h3>
        	
        <p>Release card object, closing communication channel with the card</p>
        	
        <p>If close() is not explicitly called for a card object, then the smart card
	   communication channel will be closed during garbage collection at latest</p>
        	
        <p>The method is usefull to ensure, that other applications can get access
	   to the card.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

card.close();

</pre>
        <h2 id="setCardEventListener">setCardEventListener()</h2>
        <h3>Prototype</h3>
        <p class="signature">setCardEventListener(Object handler)</p>
        <h3>Description</h3>
                    
        <p>Static method to register a script object that receives cardInserted and cardRemoved events.</p>
                    
        <p>The cardInserted and cardRemoved methods provide the reader name as argument.</p>
                    
        <p>The handler must implement both methods.</p>
                    
        <p>The cardNotification method is optional and called when the properties remoteMessage and
               remoteMessageId are updated during remote update processing.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>handler</td>
                <td>The event handler</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var handler = {
	cardInserted: function(readerName) {
		print("Card inserted into " + readerName);
	},
	cardRemoved: function(readerName) {
		print("Card removed from " + readerName);
	}
	cardNotification: function(readerName) {
		print("Notification for " + readerName);
	}
}
Card.setCardEventListener(handler);

</pre>
        <h2 id="remoteUpdate">remoteUpdate()</h2>
        <h3>Prototype</h3>
        <p class="signature">remoteUpdate(String url)</p>
        <p class="signature">remoteUpdate(String url, String sessionId)</p>
        <h3>Description</h3>
                    
        <p>Update the card using the remote update service located at the given URL.</p>
                    
        <p>The sessionId can be used to link the card update to a current user session with the server.</p>
                    
        <p>Remote notifications are made available in the remoteMessageId and remoteMessage property of the
               card object.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>url</td>
                <td>The URL of the remote terminal endpoint on the server</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>sessionId</td>
                <td>The sessionId used in the session cookie</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <h2 id="getReaderList">getReaderList()</h2>
        <h3>Prototype</h3>
        <p class="signature">Card.getReaderList()</p>
        <h3>Description</h3>
                    
        <p>Return the list of attached card readers</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>The list of reader names</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var list = Card.getReaderList();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>TLVList - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>TLVList - Reference Documentation</h1>
        <p>Implementation of a mutable TLV object list.</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">TLVList() constructor</a>
            </li>
            <li>
                <a href="#index">index()</a>
            </li>
            <li>
                <a href="#append">append()</a>
            </li>
            <li>
                <a href="#appendValue">appendValue()</a>
            </li>
            <li>
                <a href="#appendValueIndex">appendValueIndex()</a>
            </li>
            <li>
                <a href="#deleteByIndex">deleteByIndex()</a>
            </li>
            <li>
                <a href="#deleteByTag">deleteByTag()</a>
            </li>
            <li>
                <a href="#findIndex">findIndex()</a>
            </li>
            <li>
                <a href="#find">find()</a>
            </li>
            <li>
                <a href="#updateValue">updateValue()</a>
            </li>
            <li>
                <a href="#updateValueIndex">updateValueIndex()</a>
            </li>
            <li>
                <a href="#toByteString">toByteString()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>encodingMode</td>
                <td>Encoding mode used for TLV object. One of TLV.EMV, TLV.DGI or TLV.L16</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>length</td>
                <td>The number of TLV objects in the list</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">TLVList(ByteString tlvStream, Number encoding)</p>
        <h3>Description</h3>
                    
        <p>Create a TLV list object initialized with the tlv objects encoded within the given ByteString object.</p>
                    
        <p>For EMV encoding the tag field has a variable length of up to 4 bytes. 
               The length field has a variable length of up to 4 byte. Both fields are
               encoded as specified as per ASN.1 Basic Encoding Rule (ISO 8825).</p>
                    
        <p>For DGI encoding the tag field has a fixed length of two bytes.
               The length field contains one byte for values between 0 and 254. The length
               is encoded in three bytes for values between 255 and 65535, with the first byte
               set to 'FF'.</p>
                    
        <p>For L16 encoding the tag field has a fixed length of two bytes.
               The length field is always two byte long and is encoded in big endian / 
               little endian format.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>tlvStream</td>
                <td>ByteString containing the encoded tlv objects</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>encoding</td>
                <td>Encoding for tag and length field of the tlv objects in the ByteString. Must be one of TLV.EMV, TLV.DGI or TLV.L16.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ENCODING</td>
                <td>The argument encoding is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data supplied for the value fields exceeds the maximum length</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


// EMV
data = new ByteString("61050102030405620100630A00010203040506070809", HEX);

// Create a TLV list
list = new TLVList(data, TLV.EMV);
assert(list.length == 3);

// Create a TLV list with "illegal" ASN.1 DER encoding
list = new TLVList(new ByteString("9f030100", HEX), TLV.EMV);
assert(list.length == 1);

// DGI
data = new ByteString("7F1F05010203040500630A00010203040506070809", HEX);

list = new TLVList(data, TLV.DGI);
assert(list.length == 2);

// L16
data = new ByteString("7F1F000501020304050063000A00010203040506070809", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 2);

</pre>
        <h2 id="index">index()</h2>
        <h3>Prototype</h3>
        <p class="signature">TLV index(Number index)</p>
        <h3>Description</h3>
        Returns a TLV object which represents the TLV stored within the TLVList at the given index. The index is zero based.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the TLV object</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>TLV</code>
                </td>
                <td>TLV object at the specified index</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index is not valid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


// EMV
data = new ByteString("610501020304056201008E0A00010203040506070809", HEX);

// Create a TLV list
list = new TLVList(data, TLV.EMV);
assert(list.length == 3);

tag_61 = list.index(0);
assert(tag_61 != null);
assert(tag_61.getTag() == 0x61);

tag_62 = list.index(1);
assert(tag_62 != null);
assert(tag_62.getTag() == 0x62);

tag_8e = list.index(2);
assert(tag_8e != null);
assert(tag_8e.getTag() == 0x8E);

// Invalid index
try {
	tag = list.index(10);
} catch (e) {
	assert(e instanceof GPError);
}

// Check various EMV length encodings

data = new ByteString("6181050102030405", HEX);
list = new TLVList(data, TLV.EMV);
tlv = list.index(0);
assert(tlv.getTag() == 0x61);
assert(tlv.getValue().length == 5);
assert(tlv.getValue().toString(HEX) == "0102030405");

data = new ByteString("618200050102030405", HEX);
list = new TLVList(data, TLV.EMV);
tlv = list.index(0);
assert(tlv.getTag() == 0x61);
assert(tlv.getValue().length == 5);
assert(tlv.getValue().toString(HEX) == "0102030405");

</pre>
        <h2 id="append">append()</h2>
        <h3>Prototype</h3>
        <p class="signature">append(ByteString tlvStream)</p>
        <p class="signature">append(Number tag, ByteString value)</p>
        <p class="signature">append(TLV tlv)</p>
        <h3>Description</h3>
        Appends the specified TLV data to the end of the existing list of TLV objects.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>tlvStream</td>
                <td>TLV as a single stream of bytes in a ByteString.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>Tag to be used to be added to the list.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Value to be used to be added to the List. </td>
            </tr>
            <tr>
                <td>
                    <code>TLV</code>
                </td>
                <td>tlv</td>
                <td>TLV as a TLV object.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index is not valid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data supplied for the value fields exceeds the maximum length</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.TAG_ALREADY_EXISTS</td>
                <td>The tag of the specified TLV object already exists within the TLV list</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F00050102030405", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 1);

// append(Number, Value)
list.append(0x63, new ByteString("00010203040506070809", HEX));
assert(list.length == 2);

// append(ByteString) 
list.append(new ByteString("0061000A00010203040506070809", HEX));
assert(list.length == 3);

// append(TLV)
t = new TLV(0x3221, new ByteString("123456", HEX), TLV.L16);
list.append(t);
assert(list.length == 4);

// try to append an invalid type
try {
 	list.append("HALLO");
} catch (e) {
	assert(e instanceof GPError);
}

// try to append a tag with an already existing tag number
try {
	t = new TLV(0x3221, new ByteString("123456", HEX), TLV.L16);
	list.append(t);
} catch (e) {
	assert(e instanceof GPError);
}

</pre>
        <h2 id="appendValue">appendValue()</h2>
        <h3>Prototype</h3>
        <p class="signature">appendValue(Number tag, ByteString value)</p>
        <h3>Description</h3>
        Appends the data to the existing data for the specified tag.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>Tag to be used to be added to the list.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Value to be used to be added to the List. </td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data supplied for the value fields exceeds the maximum length</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F00050102030405", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 1);

// appendValue(Number, Value)
list.appendValue(0x7F1F, new ByteString("06070809", HEX));

tlv = list.index(0);
assert(tlv.getValue().toString(HEX) == "010203040506070809");

</pre>
        <h2 id="appendValueIndex">appendValueIndex()</h2>
        <h3>Prototype</h3>
        <p class="signature">appendValueIndex(Number index, ByteString value)</p>
        <h3>Description</h3>
        Appends the data to the existing data for the specified zero-based index into the TLVStream.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Tag to be used to be added to the list.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Value to be used to be added to the List. </td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index is not valid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data supplied for the value fields exceeds the maximum length</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F00050102030405", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 1);

// appendValueIndex(Number, Value)
list.appendValueIndex(0, new ByteString("06070809", HEX));

tlv = list.index(0);
assert(tlv.getValue().toString(HEX) == "010203040506070809");

</pre>
        <h2 id="deleteByIndex">deleteByIndex()</h2>
        <h3>Prototype</h3>
        <p class="signature">deleteByIndex(Number index)</p>
        <h3>Description</h3>
        Delete the specified TLV from the list using a zero based index.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Zero based index number that represents the Tag that will be deleted from the list.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index is not valid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F000501020304050061000A00010203040506070809", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 2);

// deleteByIndex(Number)
list.deleteByIndex(0);
assert(list.length == 1);

tlv = list.index(0);
assert(tlv.getTLV().toString(HEX) == "0061000A00010203040506070809");

</pre>
        <h2 id="deleteByTag">deleteByTag()</h2>
        <h3>Prototype</h3>
        <p class="signature">deleteByTag(Number tag)</p>
        <h3>Description</h3>
        Delete the specified TLV from the list by tag value.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>Number of Tag that will be deleted from the list.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index is not valid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.TAG_NOT_FOUND</td>
                <td>The specified tag could not be found</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F000501020304050061000A00010203040506070809", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 2);

// deleteByTag(Number)
list.deleteByTag(0x7F1F);
assert(list.length == 1);

tlv = list.index(0);
assert(tlv.getTLV().toString(HEX) == "0061000A00010203040506070809");

</pre>
        <h2 id="findIndex">findIndex()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number findIndex(Number tag)</p>
        <h3>Description</h3>
        Searches the list for a specified tag, and returns a zero based index for that TLV.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>The Tag that will be searched for within the list.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Index that indicates the location of the TLV within TLV list or -1 if not found.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F000501020304050061000A00010203040506070809", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 2);

index_tag_61 = list.findIndex(0x61);
assert(typeof(index_tag_61) == "number");
assert(index_tag_61 == 1);

index_tag_63 = list.findIndex(0x63);
assert(index_tag_63 == -1);

</pre>
        <h2 id="find">find()</h2>
        <h3>Prototype</h3>
        <p class="signature">TLV find(Number tag)</p>
        <h3>Description</h3>
        Searches the list for a specified tag, and returns a TLV object.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>The Tag that will be searched for within the list.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>TLV</code>
                </td>
                <td>A TLV object which contains the data stored for that Tag or null if the Tag was not found.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F000501020304050061000A00010203040506070809", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 2);

tag_61 = list.find(0x61);
assert(tag_61 != null);

tag_63 = list.find(0x63);
assert(tag_63 == null);

</pre>
        <h2 id="updateValue">updateValue()</h2>
        <h3>Prototype</h3>
        <p class="signature">updateValue(Number tag, ByteString value)</p>
        <h3>Description</h3>
        Updates the data for the specified tag.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>Tag to be used to be added to the list.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Data to replace existing value of TLV specified by tag with. </td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data supplied for the value fields exceeds the maximum length</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F00050102030405", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 1);

// appendValue(Number, Value)
list.updateValue(0x7F1F, new ByteString("06070809", HEX));

tlv = list.index(0);
assert(tlv.getValue().toString(HEX) == "06070809");

</pre>
        <h2 id="updateValueIndex">updateValueIndex()</h2>
        <h3>Prototype</h3>
        <p class="signature">updateValueIndex(Number index, ByteString value)</p>
        <h3>Description</h3>
        Updates the data for the specified zero-based index into the TLVStream.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Tag to be used to be added to the list.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Value to be used to be added to the List. </td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index is not valid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data supplied for the value fields exceeds the maximum length</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F00050102030405", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 1);

// appendValueIndex(Number, Value)
list.updateValueIndex(0, new ByteString("06070809", HEX));

tlv = list.index(0);
assert(tlv.getValue().toString(HEX) == "06070809");

</pre>
        <h2 id="toByteString">toByteString()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString toByteString()</p>
        <h3>Description</h3>
        Returns the contents of the entire list, including T, L and V values in a TLV format as a ByteString object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The concatenated T, L and V values in a TLV format.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// L16 encoded data
data = new ByteString("7F1F000501020304050061000A00010203040506070809", HEX);

list = new TLVList(data, TLV.L16);
assert(list.length == 2);

t = list.toByteString();
assert(t != null);

assert(t.toString() == data.toString());

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h2>Invoking the Graphical User Interface</h2>
<p>The shell is provided in a version with a graphical user interface as well
   as a version than runs from the command line. The later can be used for batch
   processing, whereas the former is better suited for development and interactive
   activities.</p>
<p>The GUI version can be started from the Start menu and comes up with a dialog
   that allows the selection of a workspace or configuration file.</p>
<p>The GUI version of the shell is started with the scsh3gui executable. It accepts
   the same command line arguments as the command line version, except for the --interactive
   and --list-readers options.</p>
<p>The initial workspace configuration is read from the .scsh3config file located in the
   user's home directory.</p>
<h2>Command Line Arguments</h2>
<p>The shell can be started from the command line using the
   scsh3 or scsh3gui executable. Configuration files and scripts are always located relative
   to the current directory from which the shell is invoked.</p>
<p>The following command line parameter are accepted:</p>
<pre>scsh3 [--list-readers] [--interactive] [-D&lt;key&gt;=&lt;value&gt;] [scripts]*
       --list-readers     Provide a list of card reader names
       --interactive      Enter interactive mode
       -D&lt;key&gt;=&lt;value&gt;    Set Java system property</pre>
      <p>Parameter passed to
         the shell are interpreted as file names containing ECMA script code. They
         are executed in the sequence as defined. After successfull completion of
         the script the shell enters interactive mode, if the argument --interactive
         is given.</p>
<h2>Defining a Web Proxy for OCSP Queries</h2>
<p>Support for web proxies in http transport can be defined by setting the
   Java system properties http.proxyHost and http.proxyPort using the -D command line argument.</p>
<p>The following example configures the http transport to use the proxy server
   on IP address 192.168.0.254 listening at port 3128. </p>
<pre>scsh3 -Dhttp.proxyHost=192.168.0.254 -Dhttp.proxyPort=3128</pre>
<p>If your proxy requires a password for authentication, then you must login to the
   proxy using your web browser before using the OCSP functionality.</p>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate --><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3 - Getting Started</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h1>Getting Started</h1>
<p>At this point you should have installed the Smart Card Shell. If not, please have a look
   at the <a href="installation.html">installation instructions</a>.</p>
<p>After you started the Smart Card Shell and selected a working directory, you will see
   a window divided into two panes. The left pane will be empty and the right pane will show a
   text area, which works as a console and is the main user interface of the Smart Card Shell.</p>
<p>The left pane is called the outline. It will be filled with informations generated when you
   run scripts. You can drag the divider between the two panes and change the amount of space
   allocated to the outline and the text area.</p>
<p>To end the shell, you can either enter "quit" into the text area or select "Exit" from the "File"
   menu.</p>
<h2>Quick Start</h2>
<p>Insert a smart card into your reader and enter:</p>
<pre>
&gt r
</pre>
<p>If everythings is installed correctly, then you should see the Answer to Reset (ATR) for your card.</p>
<p>If you feel like more, try</p>
<pre>
&gt load("tools/explore.js");
</pre>
<p>and see for yourself.</p>
<h2>Understanding the Shell Concept</h2>
<p>The Smart Card Shell uses a JavaScript interpreter and compiler to execute scripts. JavaScript is a
typeless, object-oriented programming language commonly used in web browsers for active HTML pages.
The language syntax is very similar to Java and C.</p>
<p>The shell is directly connected to the JavaScript interpreter, so any input in the text area
must be valid JavaScript code. Whenever you enter a command into the shell, this command is evaluated
by the interpreter, executed and the resulting value displayed to the user. Give it a try and enter:</p>
<pre>
&gt 1000 + 2000
</pre>
<p>After pressing ENTER the shell will display</p>
<pre>
3000
&gt
</pre>
<p>and is ready to accept the next command.</p>
<p>Invoking functions is as simple. To print something on the command line or from within a script
   you can invoke the print() function. The print() function will print all passed arguments separated
   by a whitespace and a final line break.</p>
<pre>
&gt print("Value", 100, 200);
</pre>
<p>will result in</p>
<pre>
Value 100 200
&gt
</pre>
<p>When entering a function name without parentheses, the shell will invoke this function with the
   result of the previous command as argument. This can be quite handy, if you define functions which
   shall continue processing on the output of the previous function. However this functionality is
   only available when entering commands in the shell. When writing scripts, you need to store the result
   in a variable instead.</p>
<p>The help() function can be invoked with or without parentheses and it will display a short help text.
   The function itself is defined in the CONFIG.JS script, which is run as the initial configuration
   script when you start the shell.</p>
<p>Don't be surprised, if only a few commands are build-in commands. Most of the time you will write and
   use scripts to do something with the Smart Card Shell.</p>
<p>Variables can be assigned a value without prior declaration. The script interpreter will take
   care of the best storage type and any conversion necessary.</p>
<p>You can define global and local variables. Global variables are created when you first assign
   a value to it:</p>
<pre>
&gt globalVariable = "Test";
</pre>
   creates a global variable named <code>globalVariable</code> and with a string value "Test". Local variable are
   declared with a <code>var</code> prefix:
<pre>
&gt var localVariable = "Hello";
</pre>
<p>Local variables are only valid within the function in which they are defined.</p>

<h2>Running Scripts</h2>
<p>Most of the time you will run scripts that are either supplied with the Smart Card Shell or
   which you developed for your own purpose. A script can be compiled and executed using the
   <code>load()</code> method build into the scripting enviroment.</p>
<p>The <code>load()</code> method accepts a string as the script name:</p>
<pre>
&gt load("tools/explore.js");
</pre>
<p>Remember, that all commands entered in the shell must be valid JavaScript code.
   Specifying a full path requires you to escape the backslash character with an
   additional backslash, because this notation is required for string literals:</p>
<pre>
&gt load("c:\\myscripts\\explore.js");
</pre>
<p>For your own convenience and better portability to other operating systems, we
   recommend to use the forward slash instead. This does not need to be escaped:</p>
<pre>
&gt load("c:/myscripts/explore.js");
</pre>
<p>You can also run scripts from the "File" / "Run Script" menu or by entering CTRL-R.</p>
<p>The shell is using a simple scheme to map file names used in scripts to files in
   the operating environment. As a rule of thumb, all file names are resolved relative to
   the location of the script which is currently running. If a file cannot be found relative
   to the location of the script, then in turn the working directory and the installation directory is
   searched. See <a href="filelocation.html">Locating Files</a> for details.</p>
<p>The scripts supplied with the Smart Card Shell are located in directories underneath the
   installation directory (Usually "c:\Program Files\CardContact\Smart Card Shell 3"). The <code>tools</code>
   directory contains a number of scripts that provide support for common tasks. Other directories
   contain script for specific card applications (e.g. <a href="icaomrtd.html">ICAO MRTD</a>,
   <a href="emv.html">EMV</a>, <a href="geldkarte.html">GeldKarte</a>, <a href="egk.html">eGK</a>
   and <a href="hpc.html">HPC</a>)</p>

<h2>Selecting a Card Reader</h2>
<p>Unless you explicitly selected a card reader from the "Options" / "Reader Configuration", the shell will
   use the first card reader in the system as default reader. Once you select a card reader, the JavaScript
   variable <code>_scsh3.reader</code> will be set to the name of the reader. You can reference this
   <a href="settings.html">configuration variable</a> in your own scripts.</p>

<h2>Defining and Using Objects</h2>
<p>JavaScript supports object-oriented programming, but uses prototype objects rather than
   classes. A prototype object contains the common properties of all instances of the same object.
   Common properties can be, for example, constants and methods.</p>
<p>Objects are created using the <code>new</code> operator. Following the new operator you can define a function
   that acts as a constructor. You can pass arguments to this function to initialize the newly created object.</p>
<p>Constructor functions in JavaScript are similar to classes in Java. By defining a constructor function
   and assigning other functions to the prototype of a constructor you can build your own objects and
   methods. The following code shows the concept:</p>
<pre>
//
// Define constructor and class Point
//
function Point(x, y) {
        this.x = x;
        this.y = y;
}

//
// Define method add() and assign to the prototype object, making it available
// for all instances created with the Point constructor function
//
Point.prototype.add = function(x, y) {
        this.x += x;
        this.y += y;
}

//
// Define a toString() method
//
Point.prototype.toString = function() {
        return("y = " + this.x + ", y = " + this.y);
}

var p = new Point(10, 20);

p.add(20, 10);
print(p);
</pre>

<p>The Smart Card Shell supports a large number of predefined classes (aka constructor functions) and methods
   to work with smart cards, cryptographic material, data structures and PKI services. See the main page for
   a complete reference of Global Platform and shell scripting classes.</p>

<h2>Using Modules</h2>
<p>The Smart Card Shell supports modules as defined in the <a href="https://en.wikipedia.org/wiki/CommonJS">CommonJS</a> specification.</p>
<p>A module is a script that exports functions that other scripts or modules can use. Modules have their own top level scope, so
   global variables or functions declared in a module are only visible within the module. Only functions or variables declared in the <i>export</i>
   variable are visible to others.<p>
<p>A module can be included using the require() statement, which returns the contents of the <i>export</i> variable from the module:</p>
<pre>
CVC = require('scsh/eac/CVC').CVC;
</pre>
<p>The above statements inspects the cache for a module with the id scsh/eac/CVC. If no such module exists in the internal cache, then
the Smart Card Shell <a href="filelocation.html">locates the module</a> file CVC.js, executes it and stores the resulting exports in the cache.
Modules are executed only once, so transitive use in other modules is possible and effective.</p>
<p>To declare a module, you must assign your exports to the variable exports defined in the module scope:</p>
<pre>
function CVC() {
	...
}

exports.CVC = CVC;
</pre>
<p>In the module, you can use the variable <i>module</i> to access the module id and module URI. The module id is the id used in the require()
statement, while the URI is the absolute filename where the module was loaded from.</p>
<pre>
print(module.id);
print(module.uri);
</pre>
<p>outputs for a module included with require('scsh/eac/CVC') from a user workspace (USR) /home/user/scsh_workspace:</p>
<pre>
scsh/eac/CVC
/home/user/scsh_workspace/scsh/eac/CVC.js
</pre>
<p>If you need to access resources relative to the location of the module, then the recommended way is to
extract the module path from the module URI:</p>
<pre>
// Remove "file:" and trailing module name
modulepath = module.uri.substr(0, module.uri.lastIndexOf("/")).substr(5);
</pre>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate --><?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:annotation>
        <xs:documentation>Schema for SCDP API documentation</xs:documentation>
    </xs:annotation>
    <xs:element name="class" type="ClassType"/>
    <xs:complexType name="ClassType">
        <xs:annotation>
            <xs:documentation>Definitions and descriptions for a class</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="description" type="DescriptionType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="constant" type="FieldType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="field" type="FieldType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="constructor" type="ConstructorType" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="method" type="MethodType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="FieldType">
        <xs:annotation>
            <xs:documentation>Definitions and descriptions for a field or constant contained in a
            class</xs:documentation>
        </xs:annotation>
        <xs:complexContent>
            <xs:extension base="xs:anyType">
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="type" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="ConstructorType">
        <xs:annotation>
            <xs:documentation>Definitions and descriptions for a method contained in a
            class</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="signature" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
            <xs:element name="description" type="DescriptionType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="argument" type="ArgumentType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="example" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="exception" type="ExceptionType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="MethodType">
        <xs:annotation>
            <xs:documentation>Definitions and descriptions for a method contained in a
            class</xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="signature" type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
            <xs:element name="description" type="DescriptionType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="argument" type="ArgumentType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="return" type="ReturnType" minOccurs="1" maxOccurs="1"/>
            <xs:element name="example" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="exception" type="ExceptionType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="name" type="xs:string"/>
    </xs:complexType>
    <xs:complexType name="ArgumentType">
        <xs:complexContent>
            <xs:extension base="xs:anyType">
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="type" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="ReturnType">
        <xs:complexContent>
            <xs:extension base="xs:anyType">
                <xs:attribute name="type" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="ExceptionType">
        <xs:complexContent>
            <xs:extension base="xs:anyType">
                <xs:attribute name="name" type="xs:string"/>
                <xs:attribute name="value" type="xs:string"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="DescriptionType" mixed="true">
        <xs:complexContent>
            <xs:extension base="xs:anyType">
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h2>Shell Configuration</h2>
<p>All configuration of the shell is done from within the scripting environment. The top level
   scripting object is instantiated when the shell is started. This so called global object contains
   all global variables and function definitions. When executing scripts, then these run in the context
   of the global object.</p>
<p>During startup, the Smart Card Shell will try to find and execute the CONFIG.JS file, unless the user
   specifies an alternative script for configuration. The CONFIG.JS file provides for the basic shell configuration.
   It defines the required scripting classes, global definitions and shortcut functions. After the CONFIG.JS
   script is completed, the shell is ready configured.</p>
<p>In the default CONFIG.JS file, a global object under the name "_scsh3" is created. This object
   contains <a href="settings.html">persistent configuration informations</a> that can be changed from
   within the scripting environment.</p>

<h2>Card Terminal Configuration</h2>
<p>The Smart Card Shell uses the OpenCard Framework (OCF) to access card terminals and
   smart cards. OCF has it's own configuration mechanism using a property file named opencard.properties.</p>
<p>When OCF is started by the Smart Card Shell, then OCF looks for configuration information in
   three different locations:</p>
<ul>
<li>[java.home]/lib/opencard.properties</li>
<li>[user.home]/.opencard.properties</li>
<li>[user.dir]/opencard.properties</li>
<li>[user.dir]/.opencard.properties</li>
</ul>
<p>[java.home] is the directory where the Java runtime is installed. The configuration file
   there may be used for system and application wide configurations.</p>
<p>[user.home] is the user's home directory on the system. For Windows this is the
   "Document and Settings"/"User Name" directory.</p>
<p>[user.dir] is the current directory when the application is started.</p>
<p>OCF will read configuration information in the order defined above. The Smart Card Shell
   installation places a default opencard.properties file in the directory where the executable
   is installed. This default configuration enables all PC/SC card terminals and configures the
   necessary card service factories.</p>
<p>A user specific configuration can be added by creating a file named .opencard.properties in the
   home directory of the user.</p>
<h3>Adding CT-API Card Terminals</h3>
<p>The Smart Card Shell comes bundled with the CardContact JNI2CTAPI and CTAPI4OCF drivers. These allow
   to access CT-API card terminals from OCF. JNI2CTAPI is a Java Native Interface to the CT-API dll or shared
   object provided by the card terminal manufacturer. CTAPI4OCF implements an OCF card terminal driver that
   maps OCF methods to CT-BCS card terminal commands.</p>
<p>A CT-API card terminal is added using the</p>
<pre>    de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory</pre>
<p>card terminal factory. This factory can be configured with four parameter separated by a '|'</p>
<pre>    |name|type|device|libname</pre>
<p>The parameter name is a user selected friendly name for the card terminal. The parameter type must contain
   'CTAPI'. The port number to be used in CT_INIT() is defined by the device field.</p>
<p>The name of the DLL or shared object is defined in the libname field. The name of the DLL or shared
   object must be given without extension or leading 'lib'.</p>
<p>The following example shows the configuration for 3 different CT-API card terminals:</p>
<pre>
# ORGA ECO 5000 with CardContact ECO5000 driver
OpenCard.terminals = \
 de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|ECO5000|CTAPI|1|cteco5000

# ORGA MCT 5000
OpenCard.terminals = \
 de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|MCT|CTAPI|1|ctorg32

# Reiner SCT CT-API Driver
OpenCard.terminals = \
 de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|REINERSCT|CTAPI|1|ctrsct32

# G+D ICT800 STD
OpenCard.terminals = \
 de.cardcontact.opencard.terminal.ctapi4ocf.CTAPICardTerminalFactory|ICT800|CTAPI|1|ctapiw32
</pre>
<p>If more than one CT-API card reader shall be added, then the factory and configuration must be
   given multiple times on the same line, separated by blanks. Entries can span multiple lines, if they end
   with a backslash as shown above.</p>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate --><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>HttpResponse - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>HttpResponse - Reference Documentation</h1>
        <p>
                    
            <p>Class implementing the response passed to a scripting servlet.</p>
                    
            <p>Instances of this class wrap the HttpServletResponse from the Servlet API and allow
           scripts easy access to properties of an outgoing HTTP response.</p>
                    
            <p>Instances of this class can not be created directly, but are passed as
           argument to the handleRequest() method.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">HttpResponse() constructor</a>
            </li>
            <li>
                <a href="#addHeaderField">addHeaderField()</a>
            </li>
            <li>
                <a href="#setContentType">setContentType()</a>
            </li>
            <li>
                <a href="#setCharacterEncoding">setCharacterEncoding()</a>
            </li>
            <li>
                <a href="#setContentLength">setContentLength()</a>
            </li>
            <li>
                <a href="#setStatus">setStatus()</a>
            </li>
            <li>
                <a href="#write">write()</a>
            </li>
            <li>
                <a href="#print">print()</a>
            </li>
            <li>
                <a href="#println">println()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_CONTINUE</td>
                <td>Status code (100) indicating the client can continue.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_SWITCHING_PROTOCOLS</td>
                <td>Status code (101) indicating the server is switching protocols according to Upgrade header.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_OK</td>
                <td>Status code (200) indicating the request succeeded normally.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_CREATED</td>
                <td>Status code (201) indicating the request succeeded and created a new resource on the server.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_ACCEPTED</td>
                <td>Status code (202) indicating that a request was accepted for processing, but was not completed.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_NON_AUTHORITATIVE_INFORMATION</td>
                <td>Status code (203) indicating that the meta information presented by the client did not originate from the server.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_NO_CONTENT</td>
                <td>Status code (204) indicating that the request succeeded but that there was no new information to return.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_RESET_CONTENT</td>
                <td>Status code (205) indicating that the agent SHOULD reset the document view which caused the request to be sent.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_PARTIAL_CONTENT</td>
                <td>Status code (206) indicating that the server has fulfilled the partial GET request for the resource.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_MULTIPLE_CHOICES</td>
                <td>Status code (300) indicating that the requested resource corresponds to any one of a set of representations, each with its own specific location.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_MOVED_PERMANENTLY</td>
                <td>Status code (301) indicating that the resource has permanently moved to a new location, and that future references should use a new URI with their requests.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_FOUND</td>
                <td>Status code (302) indicating that the resource reside temporarily under a different URI.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_MOVED_TEMPORARILY</td>
                <td>Status code (302) indicating that the resource has temporarily moved to another location, but that future references should still use the original URI to access the resource.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_SEE_OTHER</td>
                <td>Status code (303) indicating that the response to the request can be found under a different URI.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_NOT_MODIFIED</td>
                <td>Status code (304) indicating that a conditional GET operation found that the resource was available and not modified.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_USE_PROXY</td>
                <td>Status code (305) indicating that the requested resource MUST be accessed through the proxy given by the Location field.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_TEMPORARY_REDIRECT</td>
                <td>Status code (307) indicating that the requested resource resides temporarily under a different URI.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_BAD_REQUEST</td>
                <td>Status code (400) indicating the request sent by the client was syntactically incorrect.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_UNAUTHORIZED</td>
                <td>Status code (401) indicating that the request requires HTTP authentication.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_PAYMENT_REQUIRED</td>
                <td>Status code (402) reserved for future use.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_FORBIDDEN</td>
                <td>Status code (403) indicating the server understood the request but refused to fulfill it.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_NOT_FOUND</td>
                <td>Status code (404) indicating that the requested resource is not available.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_METHOD_NOT_ALLOWED</td>
                <td>Status code (405) indicating that the method specified in the Request-Line is not allowed for the resource identified by the Request-URI.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_NOT_ACCEPTABLE</td>
                <td>Status code (406) indicating that the resource identified by the request is only capable of generating response entities which have content characteristics not acceptable according to the accept headers sent in the request.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_PROXY_AUTHENTICATION_REQUIRED</td>
                <td>Status code (407) indicating that the client MUST first authenticate itself with the proxy.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_REQUEST_TIMEOUT</td>
                <td>Status code (408) indicating that the client did not produce a request within the time that the server was prepared to wait.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_CONFLICT</td>
                <td>Status code (409) indicating that the request could not be completed due to a conflict with the current state of the resource.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_GONE</td>
                <td>Status code (410) indicating that the resource is no longer available at the server and no forwarding address is known.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_LENGTH_REQUIRED</td>
                <td>Status code (411) indicating that the request cannot be handled without a defined Content-Length.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_PRECONDITION_FAILED</td>
                <td>Status code (412) indicating that the precondition given in one or more of the request-header fields evaluated to false when it was tested on the server.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_REQUEST_ENTITY_TOO_LARGE</td>
                <td>Status code (413) indicating that the server is refusing to process the request because the request entity is larger than the server is willing or able to process.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_REQUEST_URI_TOO_LONG</td>
                <td>Status code (414) indicating that the server is refusing to service the request because the Request-URI is longer than the server is willing to interpret.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_UNSUPPORTED_MEDIA_TYPE</td>
                <td>Status code (415) indicating that the server is refusing to service the request because the entity of the request is in a format not supported by the requested resource for the requested method.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_REQUESTED_RANGE_NOT_SATISFIABLE</td>
                <td>Status code (416) indicating that the server cannot serve the requested byte range.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_EXPECTATION_FAILED</td>
                <td>Status code (417) indicating that the server could not meet the expectation given in the Expect request header.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_INTERNAL_SERVER_ERROR</td>
                <td>Status code (500) indicating an error inside the HTTP server which prevented it from fulfilling the request.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_NOT_IMPLEMENTED</td>
                <td>Status code (501) indicating the HTTP server does not support the functionality needed to fulfill the request.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_BAD_GATEWAY</td>
                <td>Status code (502) indicating that the HTTP server received an invalid response from a server it consulted when acting as a proxy or gateway.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_SERVICE_UNAVAILABLE</td>
                <td>Status code (503) indicating that the HTTP server is temporarily overloaded, and unable to handle the request.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_GATEWAY_TIMEOUT</td>
                <td>Status code (504) indicating that the server did not receive a timely response from the upstream server while acting as a gateway or proxy.</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SC_HTTP_VERSION_NOT_SUPPORTED</td>
                <td>Status code (505) indicating that the server does not support or refuses to support the HTTP protocol version that was used in the request message.</td>
            </tr>
        </table>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>HttpServletResponse</td>
                <td>nativeResponse</td>
                <td>The native HttpServletResponse object</td>
            </tr>
        </table>
        <h2 id="addHeaderField">addHeaderField()</h2>
        <h3>Prototype</h3>
        <p class="signature">void addHeaderField(String key, String value)</p>
        <p class="signature">void addHeader(String key, String value) (Deprecated)</p>
        <h3>Description</h3>
                    
        <p>Add a http header field to the response.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>key</td>
                <td>The header field name</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>value</td>
                <td>The header field value</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See HTTPResponse.getHeaderField for an example

</pre>
        <h2 id="setContentType">setContentType()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setContentType(String contentType)</p>
        <h3>Description</h3>
                    
        <p>Set the content type for the response.</p>
                    
        <p>See also javax.servlet.http.HttpServletResponse.setContentType.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>contentType</td>
                <td>The content type</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <h2 id="setCharacterEncoding">setCharacterEncoding()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setCharacterEncoding(String encoding)</p>
        <h3>Description</h3>
                    
        <p>Set the character encoding for the response.</p>
                    
        <p>See also javax.servlet.http.HttpServletResponse.setCharacterEncoding.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>encoding</td>
                <td>The desired character encoding for the response</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <h2 id="setContentLength">setContentLength()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setContentLength(Number length)</p>
        <h3>Description</h3>
                    
        <p>Set the content length for the response entity.</p>
                    
        <p>See also javax.servlet.http.HttpServletResponse.setContentLength.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>length</td>
                <td>The number of bytes in the response's entity</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <h2 id="setStatus">setStatus()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setStatus(Number code)</p>
        <h3>Description</h3>
                    
        <p>Set the status code for the response entity.</p>
                    
        <p>See also javax.servlet.http.HttpServletResponse.setStatus.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>code</td>
                <td>The status code, e.g. any of the SC_ constants defined above</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <h2 id="write">write()</h2>
        <h3>Prototype</h3>
        <p class="signature">void write(ByteString data)</p>
        <h3>Description</h3>
                    
        <p>Write binary data as part of the response.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Binary data to be written to the response stream</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <h2 id="print">print()</h2>
        <h3>Prototype</h3>
        <p class="signature">void print(String data)</p>
        <h3>Description</h3>
                    
        <p>Write String data as part of the response.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>data</td>
                <td>Text data to be written to the response stream</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <h2 id="println">println()</h2>
        <h3>Prototype</h3>
        <p class="signature">void println(String data)</p>
        <h3>Description</h3>
                    
        <p>Write String data followed by CR/LF as part of the response.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>data</td>
                <td>Text data to be written to the response stream</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>ByteString - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>ByteString - Reference Documentation</h1>
        <p>Implementation of an immutable binary string, similar to the String class.</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">ByteString() constructor</a>
            </li>
            <li>
                <a href="#and">and()</a>
            </li>
            <li>
                <a href="#byteAt">byteAt()</a>
            </li>
            <li>
                <a href="#bytes">bytes()</a>
            </li>
            <li>
                <a href="#concat">concat()</a>
            </li>
            <li>
                <a href="#crc">crc()</a>
            </li>
            <li>
                <a href="#equals">equals()</a>
            </li>
            <li>
                <a href="#find">find()</a>
            </li>
            <li>
                <a href="#getL">getL()</a>
            </li>
            <li>
                <a href="#getLV">getLV()</a>
            </li>
            <li>
                <a href="#left">left()</a>
            </li>
            <li>
                <a href="#neg">neg()</a>
            </li>
            <li>
                <a href="#not">not()</a>
            </li>
            <li>
                <a href="#or">or()</a>
            </li>
            <li>
                <a href="#pad">pad()</a>
            </li>
            <li>
                <a href="#right">right()</a>
            </li>
            <li>
                <a href="#startsWith">startsWith()</a>
            </li>
            <li>
                <a href="#toBase64">toBase64()</a>
            </li>
            <li>
                <a href="#toBcd">toBcd()</a>
            </li>
            <li>
                <a href="#toHex">toHex()</a>
            </li>
            <li>
                <a href="#toSigned">toSigned()</a>
            </li>
            <li>
                <a href="#toString">toString()</a>
            </li>
            <li>
                <a href="#toUnsigned">toUnsigned()</a>
            </li>
            <li>
                <a href="#xor">xor()</a>
            </li>
            <li>
                <a href="#add">add()</a>
            </li>
            <li>
                <a href="#clear">clear()</a>
            </li>
            <li>
                <a href="#valueOf">valueOf()</a>
            </li>
            <li>
                <a href="#fromJSON">fromJSON()</a>
            </li>
            <li>
                <a href="#asSigned">asSigned()</a>
            </li>
            <li>
                <a href="#asUnsigned">asUnsigned()</a>
            </li>
            <li>
                <a href="#biAdd">biAdd()</a>
            </li>
            <li>
                <a href="#sub">sub()</a>
            </li>
            <li>
                <a href="#mod">mod()</a>
            </li>
            <li>
                <a href="#modInverse">modInverse()</a>
            </li>
            <li>
                <a href="#modPow">modPow()</a>
            </li>
            <li>
                <a href="#multiply">multiply()</a>
            </li>
            <li>
                <a href="#divide">divide()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>XOR</td>
                <td>Constant used in crc() method</td>
            </tr>
        </table>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>length</td>
                <td>Number of bytes in the ByteString</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString(String stringValue, Number encoding)</p>
        <h3>Description</h3>
                    
        <p>Create a ByteString object containing the data from stringValue decoded
               according to format defined in argument encoding</p>
                    
        <p>The following encoding formats can be used for the stringValue argument:</p>
                    
        <p>HEX - A string containing hexadecimal characters and arbitrary delimiters.</p>
                    
        <p>ASCII - A string containing ASCII characters and characters from Latin-1.</p>
                    
        <p>UTF8 - A string containing Unicode characters.</p>
                    
        <p>BASE64 - A string containing BASE-64 encoded data.</p>
                    
        <p>OID - A string containing an object identifier in dotted notation or
               separated by blanks (This is a proprietary extension to Global Platform Scripting).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>stringValue</td>
                <td>String containing the encoded binary data</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>encoding</td>
                <td>Encoding format. Must be one of HEX, ASCII, UTF8,
            BASE64 or OID</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ENCODING</td>
                <td>The argument encoding contains an unknown encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The argument stringValue contains characters not compatible with the encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("1234", HEX);

assert(x.length == 2);
assert(x.toString() == "12 34");


x = new ByteString("", HEX);

assert(x.length == 0);
assert(x.toString() == "");


x = new ByteString("0x1234 56.78.90+AB#cd'EF", HEX);

assert(x.length == 8);
assert(x.toString() == "12 34 56 78 90 AB CD EF");


x = new ByteString("1234ABCDÄÖÜß", ASCII);

assert(x.length == 12);
assert(x.toString() == "31 32 33 34 41 42 43 44 C4 D6 DC DF");


x = new ByteString("1234ABCDÄÖÜß", UTF8);

assert(x.length == 16);
assert(x.toString() == "31 32 33 34 41 42 43 44 C3 84 C3 96 C3 9C C3 9F");


x = new ByteString("SGVsbG8gV29ybGQ=", BASE64);

assert(x.length == 11);
assert(x.toString(ASCII) == "Hello World");


x = new ByteString("1.2.840.113549.1.1.2", OID);

assert(x.length == 9);
assert(x.toString(OID) == "1.2.840.113549.1.1.2");
assert(x.toString(HEX) == "2A864886F70D010102");


x = new ByteString("1 2 840 113549 1 1 2", OID);

assert(x.toString(HEX) == "2A864886F70D010102");


</pre>
        <h2 id="and">and()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString and(ByteString value)</p>
        <h3>Description</h3>
        The bitwise AND of the object for which this method is called and the argument.
            Both must be of equal size
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString object of same size to use in bitwise
            and operation</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The result of the and operation as ByteString</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>Object and argument have different length</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("AA A5 55", HEX);
y = new ByteString("55 A5 AA", HEX);
z = x.and(y);
assert(z.toString(HEX) == "00A500", HEX);

</pre>
        <h2 id="byteAt">byteAt()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number byteAt(Number offset)</p>
        <h3>Description</h3>
        Return the value of the byte at the zero based offset
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>The value of the byte at offset</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Offset is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("123ABCÄÖÜ", ASCII);
assert(typeof(x.byteAt(0)) == "number");
assert(x.byteAt(0) == 0x31);
assert(x.byteAt(3) == 0x41);
assert(x.byteAt(6) == 0xC4);

</pre>
        <h2 id="bytes">bytes()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString bytes(Number offset)</p>
        <p class="signature">ByteString bytes(Number offset, Number count)</p>
        <h3>Description</h3>
        Extract count bytes from a ByteString starting at zero based offset.
           If count is missing then the all remaining bytes from offset are extracted.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset from which bytes are extracted</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>count</td>
                <td>Number of bytes to extract</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString containing the extracted bytes</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The offset is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The offset plus the count exceeds the length of the buffer</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("123ABC???", ASCII);
y = x.bytes(3, 3);
assert(y.toString(ASCII) == "ABC");

y = x.bytes(6);
assert(y.toString(ASCII) == "???");

y = x.bytes(9);
assert(y.toString(ASCII) == "");

</pre>
        <h2 id="concat">concat()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString concat(ByteString value)</p>
        <h3>Description</h3>
        Concatenate ByteString for which the method is called with argument value and return a new ByteString object.
           The ByteString for which the method is called is not changed.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString to append to object for which the method is called</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object containing the concatenation of both objects</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("123", ASCII);
y = new ByteString("414243", HEX);

z = x.concat(y);

assert(z.toString(ASCII) == "123ABC");

z = z.concat(new ByteString("", HEX));

assert(z.toString(ASCII) == "123ABC");

</pre>
        <h2 id="crc">crc()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString crc(Number method)</p>
        <h3>Description</h3>
        Calculate a checksum for the ByteString object using the method defined by argument method
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>method</td>
                <td>
                    <p>The method to use for checksum calculation.</p>
                                           
                    <p>Currently only XOR is available, calculating the XOR checksum across all bytes in the ByteString</p>
                </td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Argument method must be XOR</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("A55A", HEX);
c = x.crc(ByteString.XOR);
assert(c.toString(HEX) == "FF");

x = new ByteString("", HEX);
c = x.crc(ByteString.XOR);
assert(c.toString(HEX) == "00");

</pre>
        <h2 id="equals">equals()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean equals(ByteString value)</p>
        <h3>Description</h3>
        Check if both ByteString have the same length and contain the same value.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString object to check against</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>true if both ByteString are equal, otherwise false</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("414243", HEX);
y = new ByteString("ABC", ASCII);

assert(x.equals(y));

y = new ByteString("CBA", ASCII);
assert(!x.equals(y));

y = new ByteString("ABCD", ASCII);
assert(!x.equals(y));

y = new ByteString("AB", ASCII);
assert(!x.equals(y));

</pre>
        <h2 id="find">find()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number find(ByteString value)</p>
        <p class="signature">Number find(ByteString value, Number offset)</p>
        <h3>Description</h3>
        Search the ByteString for the first occurance of the ByteString specified in argument value.
            Start at zero based offset or 0 if offset is not defined.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString to search for</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based index to start search at. 0 is assumed if parameter is not present</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Zero based offset at which the search string was found or -1 if the search string
               could not be found</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Offset given in argument is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("ABCDABCD", ASCII);
y = new ByteString("BC", ASCII);

assert(typeof(x.find(y)) == "number");
assert(x.find(y) == 1);
assert(x.find(y, 2) == 5);
assert(x.find(y, -2) == 1);

y = new ByteString("CD", ASCII);
assert(x.find(y, 4) == 6);

y = new ByteString("CD", ASCII);
assert(x.find(y, 6) == 6);

y = new ByteString("CB", ASCII);
assert(x.find(y) == -1);

y = new ByteString("BCDE", ASCII);
assert(x.find(y) == -1);

y = new ByteString("", ASCII);
assert(x.find(y) == 0);

x = new ByteString("", ASCII);
y = new ByteString("", ASCII);
assert(x.find(y) == 0);
assert(x.find(y, 0) == 0);

</pre>
        <h2 id="getL">getL()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getL(Number method)</p>
        <h3>Description</h3>
                    
        <p>Return a length field encoded as per specification in method.</p>
                    
        <p>TLV.EMV encodes the length field with a variable length as per
               ASN.1 DER encoding. Values in the range 0 to 127 are encoded in one byte.
               Values in the range 128 to 255 are encoded in two bytes with a leading '81'.
               Length fields in the range 256 to 65535 are encoded in three bytes with a
               leading '82' and two bytes in MSB/LSB order. Length fields in the range 65536
               to 16777215 are encoded in four bytes with a leading '83' and three bytes in
               MSB/LSB format.</p>
        			
        <p>TLV.DGI encodes length values between 0 and 254 in one byte and length values
               between 255 and 65535 in three bytes with a leading 'FF' and two bytes in
               MSB/LSB format.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>method</td>
                <td>Must be either TLV.EMV or TLV.DGI.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Length field as ByteString</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>Length must not exceed 65535 for DGI encoding</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The encoding method is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("", ASCII);
y = x.getL(TLV.EMV);
assert(y.toString(HEX) == "00");

y = x.getL(TLV.DGI);
assert(y.toString(HEX) == "00");


x = new ByteString("123ABC", ASCII);
y = x.getL(TLV.EMV);
assert(y.toString(HEX) == "06");

y = x.getL(TLV.DGI);
assert(y.toString(HEX) == "06");


x = new ByteString("01234567890123456789012345678901234567890123456789012345" +
                   "67890123456789012345678901234567890123456789012345678901" +
                   "2345678901234567", ASCII);
y = x.getL(TLV.EMV);
assert(y.toString(HEX) == "8180");

y = x.getL(TLV.DGI);
assert(y.toString(HEX) == "80");


x = new ByteString("01234567890123456789012345678901234567890123456789012345" +
                   "67890123456789012345678901234567890123456789012345678901" +
                   "23456789012345678901234567890123456789012345678901234567" +
                   "89012345678901234567890123456789012345678901234567890123" +
                   "4567890123456789012345678901234", ASCII);
y = x.getL(TLV.EMV);
assert(y.toString(HEX) == "81FF");

y = x.getL(TLV.DGI);
assert(y.toString(HEX) == "FF00FF");


x = new ByteString("01234567890123456789012345678901234567890123456789012345" +
                   "67890123456789012345678901234567890123456789012345678901" +
                   "23456789012345678901234567890123456789012345678901234567" +
                   "89012345678901234567890123456789012345678901234567890123" +
                   "45678901234567890123456789012345", ASCII);
y = x.getL(TLV.EMV);
assert(y.toString(HEX) == "820100");

y = x.getL(TLV.DGI);
assert(y.toString(HEX) == "FF0100");

</pre>
        <h2 id="getLV">getLV()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getLV(Number method)</p>
        <h3>Description</h3>
        Prefix the ByteString with a length field as specified by method.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>method</td>
                <td>Must be either TLV.EMV or TLV.DGI</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Length field concatenated with content</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>Length must not exceed 65535 for DGI encoding</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The encoding method is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("", ASCII);
y = x.getLV(TLV.EMV);
assert(y.toString(HEX) == "00");

y = x.getLV(TLV.DGI);
assert(y.toString(HEX) == "00");


x = new ByteString("123ABC", ASCII);
y = x.getLV(TLV.EMV);
assert(y.toString(HEX) == "06313233414243");

y = x.getLV(TLV.DGI);
assert(y.toString(HEX) == "06313233414243");


x = new ByteString("01234567890123456789012345678901234567890123456789012345" +
                   "67890123456789012345678901234567890123456789012345678901" +
                   "2345678901234567", ASCII);
y = x.getLV(TLV.EMV);
assert(y.equals(x.getL(TLV.EMV).concat(x)));

y = x.getLV(TLV.DGI);
assert(y.equals(x.getL(TLV.DGI).concat(x)));


x = new ByteString("01234567890123456789012345678901234567890123456789012345" +
                   "67890123456789012345678901234567890123456789012345678901" +
                   "23456789012345678901234567890123456789012345678901234567" +
                   "89012345678901234567890123456789012345678901234567890123" +
                   "45678901234567890123456789012345", ASCII);
y = x.getLV(TLV.EMV);
assert(y.equals(x.getL(TLV.EMV).concat(x)));

y = x.getLV(TLV.DGI);
assert(y.equals(x.getL(TLV.DGI).concat(x)));

</pre>
        <h2 id="left">left()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString left(Number value)</p>
        <h3>Description</h3>
        Extract the leftmost number of bytes as specified in the argument.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>value</td>
                <td>Number of leftmost bytes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object with leftmost bytes</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The length specified exceeds the length of the ByteString</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("123ABC", ASCII);
y = x.left(3);
assert(y.toString(ASCII) == "123");

y = x.left(9);
assert(y.toString(ASCII) == "123ABC");

</pre>
        <h2 id="neg">neg()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString neg()</p>
        <p class="signature">ByteString neg(Number size)</p>
        <h3>Description</h3>
        <p>Return a ByteString object with the negative binary value of the ByteString object the method is applied to.</p>
                     
        <p>The method calculates the ones-complement by inverting all bits and adding 1.</p>
                     
        <p>The method can be applied to ByteString objects of arbitrary length.</p>
                     
        <p>If no size argument is given, then the resulting ByteString has the same length as the ByteString object the method
                is called for</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>size</td>
                <td>The number of bytes in the resulting ByteString</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object with negative value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The size argument must be equals or larger than the length of the ByteString</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("0101", HEX);
y = x.neg();
assert(y.toString(HEX) == "FEFF");

x = new ByteString("0101", HEX);
y = x.neg(3);
assert(y.toString(HEX) == "FFFEFF");

x = new ByteString("0000", HEX);
y = x.neg(3);
assert(y.toString(HEX) == "000000");

x = new ByteString("FFFF", HEX);
y = x.neg();
assert(y.toString(HEX) == "0001");

x = new ByteString("", HEX);
y = x.neg();
assert(y.toString(HEX) == "");

x = new ByteString("", HEX);
y = x.neg(2);
assert(y.toString(HEX) == "0000");

</pre>
        <h2 id="not">not()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString not()</p>
        <h3>Description</h3>
        Return an new ByteString object with all bits inverted.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object of same size with all bits inverted.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("0101", HEX);

y = x.not();
assert(y.toString(HEX) == "FEFE");

y = y.not();
assert(y.toString(HEX) == "0101");

x = new ByteString("", HEX);

y = x.not();
assert(y.toString(HEX) == "");

</pre>
        <h2 id="or">or()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString or(ByteString value)</p>
        <h3>Description</h3>
        Return a new ByteString object containing the bitwise OR of the ByteString object for which the method is called
                     and the argument. Both ByteString objects must have the same length.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString argument.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object containing the result of the OR operation.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The length of the ByteString argument must be equal to the length of the ByteString object.</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("AA A5 55", HEX);
y = new ByteString("55 A5 AA", HEX);
z = x.or(y);
assert(z.toString(HEX) == "FFA5FF", HEX);

</pre>
        <h2 id="pad">pad()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString pad(Number method)</p>
        <p class="signature">ByteString pad(Number method, Boolean optional)</p>
        <h3>Description</h3>
        Return ByteString padded to the right according to the method
                     specified.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>method</td>
                <td>The padding method to use. Must be either
                     Crypto.ISO9797_METHOD_1 or Crypto.ISO9797_METHOD_2. Method 1 will append the
                     appropriate number of '00' bytes to complete the 8 byte block, whereas method 2 will
                     append an '80' followed by the appropriate number of '00' bytes. Crypto.ISO9797_METHOD_1_16
                     or Crypto.ISO9797_METHOD_2_16 use a 16 byte block size.</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>optional</td>
                <td>If optional is true, then padding will only occur
                     if the length is not a multiple of the block size. Default is false.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object containing the extracted bytes.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Invalid padding method</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("123ABC", HEX);

y = x.pad(Crypto.ISO9797_METHOD_1);
assert(y.toString(HEX) == "123ABC0000000000");

y = x.pad(Crypto.ISO9797_METHOD_1_16);
assert(y.toString(HEX) == "123ABC00000000000000000000000000");

y = x.pad(Crypto.ISO9797_METHOD_2);
assert(y.toString(HEX) == "123ABC8000000000");

y = x.pad(Crypto.ISO9797_METHOD_2_16);
assert(y.toString(HEX) == "123ABC80000000000000000000000000");

x = new ByteString("123ABC11223333", HEX);

y = x.pad(Crypto.ISO9797_METHOD_1);
assert(y.toString(HEX) == "123ABC1122333300");

y = x.pad(Crypto.ISO9797_METHOD_2);
assert(y.toString(HEX) == "123ABC1122333380");

x = new ByteString("123ABC112233338877665544332211", HEX);

y = x.pad(Crypto.ISO9797_METHOD_1_16);
assert(y.toString(HEX) == "123ABC11223333887766554433221100");

y = x.pad(Crypto.ISO9797_METHOD_2_16);
assert(y.toString(HEX) == "123ABC11223333887766554433221180");

x = new ByteString("123ABC1122333399", HEX);

y = x.pad(Crypto.ISO9797_METHOD_1, true);
assert(y.toString(HEX) == "123ABC1122333399");

y = x.pad(Crypto.ISO9797_METHOD_2, true);
assert(y.toString(HEX) == "123ABC1122333399");

x = new ByteString("123ABC11223333998877665544332211", HEX);

y = x.pad(Crypto.ISO9797_METHOD_1_16, true);
assert(y.toString(HEX) == "123ABC11223333998877665544332211");

y = x.pad(Crypto.ISO9797_METHOD_2_16, true);
assert(y.toString(HEX) == "123ABC11223333998877665544332211");

</pre>
        <h2 id="right">right()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString right(Number count)</p>
        <h3>Description</h3>
        Return the rightmost bytes of the ByteString as specified by the argument.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>count</td>
                <td>The number of bytes to extract.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object containing the extracted bytes.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The count argument must not exceed the length of the ByteString.</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("123ABC", ASCII);
y = x.right(3);
assert(y.toString(ASCII) == "ABC");

y = x.right(9);
assert(y.toString(ASCII) == "123ABC");

</pre>
        <h2 id="startsWith">startsWith()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number startsWith(ByteString value)</p>
        <h3>Description</h3>
        Return the number of bytes by which the ByteString and the argument start with the same bytes.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString to test against.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Number of equal bytes in object and argument.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("123ABC", ASCII);
y = new ByteString("123", ASCII);

assert(typeof(x.startsWith(y)) == "number");
assert(x.startsWith(y) == 3);
assert(y.startsWith(x) == 3);

y = new ByteString("1234", ASCII);
assert(x.startsWith(y) == 3);

y = new ByteString("01234", ASCII);
assert(x.startsWith(y) == 0);

</pre>
        <h2 id="toBase64">toBase64()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString toBase64()</p>
        <p class="signature">ByteString toBase64(Boolean linebreak)</p>
        <h3>Description</h3>
        <p>Return a new ByteString object containing the BASE64 encoding of the ByteString object for which the
                     method is called.</p>
                             
        <p>The resulting ByteString will only contain ASCII characters.</p>
                             
        <p>If the linebreak argument is true, then a newline is inserted after each 62. character (48 Bytes).</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>linebreak</td>
                <td>If true, a newline is inserted after each 62. character. Default is false.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object containing BASE64 encoded ASCII string.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("Hello World", ASCII);
y = x.toBase64();
assert(y.toString(ASCII) == "SGVsbG8gV29ybGQ=");

x = new ByteString("The quick brown fox jumped over the lazy dog12345", ASCII);
y = x.toBase64(false);
assert(y.toString(ASCII) ==
  "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cxMjM0NQ==");

x = new ByteString("The quick brown fox jumped over the lazy dog12345", ASCII);
y = x.toBase64(true);
assert(y.toString(ASCII) ==
  "VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cxMjM0\nNQ==");

x = new ByteString("", ASCII);
y = x.toBase64(true);
assert(y.length == 0);

</pre>
        <h2 id="toBcd">toBcd()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString toBcd()</p>
        <p class="signature">ByteString toBcd(Number countBytes)</p>
        <h3>Description</h3>
        <p>Return a new ByteString object containing the BCD encoded binary value of the ByteString for which the method is called.</p>
                             
        <p>The ByteString can be up to 63 bits long.</p>
                             
        <p>If the optional countBytes argument is given, then the resulting ByteString has countBytes length. If the resulting
                        ByteString is longer than the BCD encoded value, then zeros are padded to the left. If the resulting ByteString
                        is smaller than the BCD encoded value, then only the rightmost digits are preserved.</p>
                  
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>countBytes</td>
                <td>Length of resulting ByteString.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td>New ByteString object containing BCD encoded value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The countBytes argument is invalid.</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("0101", HEX);
y = x.toBcd();
assert(y.toString(HEX) == "0257");

y = x.toBcd(3);
assert(y.toString(HEX) == "000257");

y = x.toBcd(1);
assert(y.toString(HEX) == "57");

x = new ByteString("7FFFFFFFFFFFFFFF", HEX);

y = x.toBcd();
assert(y.toString(HEX) == "09223372036854775807");

y = x.toBcd(0);
assert(y.toString(HEX) == "");

</pre>
        <h2 id="toHex">toHex()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString toHex()</p>
        <p class="signature">ByteString toHex(Number countBytes)</p>
        <h3>Description</h3>
        <p>Return a new ByteString object containing in ASCII the HEX encoded binary value of the ByteString for which the method is called.</p>
                             
        <p>The ByteString can be of arbitrary length.</p>
                             
        <p>If the optional countBytes argument is given, then the resulting ByteString has countBytes length. If the resulting
                        ByteString is longer than the HEX encoded value, then ASCII zeros ('0') are padded to the left. If the resulting ByteString
                        is smaller than the HEX encoded value, then only the rightmost digits are preserved.</p>
                  
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>countBytes</td>
                <td>Optional argument specifying the bytes the length of the resulting ByteString.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object containing ASCII encoded HEX string.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>Type countBytes argument is negativ.</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("65666768", HEX);
y = x.toHex();
assert(y.toString(ASCII) == "65666768");

x = new ByteString("65666768", HEX);
y = x.toHex(10);
assert(y.toString(ASCII) == "0065666768");

x = new ByteString("65666768", HEX);
y = x.toHex(4);
assert(y.toString(ASCII) == "6768");

x = new ByteString("", HEX);
y = x.toHex();
assert(y.toString(ASCII) == "");

</pre>
        <h2 id="toSigned">toSigned()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number toSigned()</p>
        <p class="signature">Number toSigned(Boolean littleEndian)</p>
        <h3>Description</h3>
        <p>Return the signed binary value of the ByteString.</p>
                             
        <p>The ByteString can be of arbitrary length, however the number of significant bits must not exceed 32.
                        Leading zeros for positive values or ones for negative values are skipped. The first bit in the
                        ByteString is used as sign bit.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>littleEndian</td>
                <td>Assume little endian encoding format. Optional argument, default is false.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ByteString as 32 bit signed integer value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The number of significant bits exceeds 32.</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("", HEX);
assert(typeof(x.toSigned()) == "number");
assert(x.toSigned() == 0);

x = new ByteString("0123", HEX);
assert(x.toSigned() == 0x0123);

x = new ByteString("FF", HEX);
assert(x.toSigned() == -1);

x = new ByteString("7FFFFFFF", HEX);
assert(x.toSigned() == 0x7FFFFFFF);

x = new ByteString("007FFFFFFF", HEX);
assert(x.toSigned() == 0x7FFFFFFF);

x = new ByteString("007FEDCBA0", HEX);
assert(x.toSigned() == 0x7FEDCBA0);

x = new ByteString("FFFFFFFF", HEX);
assert(x.toSigned() == -1);

x = new ByteString("FFFFFFFFFF", HEX);
assert(x.toSigned() == -1);

x = new ByteString("FF80000000", HEX);
assert(x.toSigned() == -0x80000000);

x = new ByteString("", HEX);
assert(x.toSigned(true) == 0);

x = new ByteString("0123", HEX);
assert(x.toSigned(true) == 0x2301);

x = new ByteString("FF", HEX);
assert(x.toSigned(true) == -1);

x = new ByteString("FFFFFF7F", HEX);
assert(x.toSigned(true) == 0x7FFFFFFF);

x = new ByteString("FFFFFF7F00", HEX);
assert(x.toSigned(true) == 0x7FFFFFFF);

x = new ByteString("A0CBED7F00", HEX);
assert(x.toSigned(true) == 0x7FEDCBA0);

x = new ByteString("FFFFFFFF", HEX);
assert(x.toSigned(true) == -1);

x = new ByteString("FFFFFFFFFF", HEX);
assert(x.toSigned(true) == -1);

x = new ByteString("00000080FF", HEX);
assert(x.toSigned(true) == -0x80000000);

</pre>
        <h2 id="toString">toString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String toString()</p>
        <p class="signature">String toString(Number encoding)</p>
        <h3>Description</h3>
        Return a String containing the ByteString value in the encoding specified by the argument or as hexadecimal string.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>encoding</td>
                <td>Encoding format, one of ASCII, UTF8, BASE64 or CN.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>String containing ByteString value in specified encoding format.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>ByteString can not be expressed in specified encoding.</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ENCODING</td>
                <td>Unknown encoding format specified.</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("41 42 43", HEX);
assert(x.toString(HEX) == "414243");

x = new ByteString("41 42 43 C4 D6 DC DF", HEX);
assert(x.toString(ASCII) == "ABCÄÖÜß");

x = new ByteString("C3 84 C3 96 C3 9C C3 9F", HEX);
assert(x.toString(UTF8) == "ÄÖÜß");

x = new ByteString("Hello World", ASCII);
assert(x.toString(BASE64) == "SGVsbG8gV29ybGQ=");

</pre>
        <h2 id="toUnsigned">toUnsigned()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number toUnsigned()</p>
        <p class="signature">Number toUnsigned(Boolean littleEndian)</p>
        <h3>Description</h3>
        <p>Return the unsigned binary value of the ByteString.</p>
                             
        <p>The ByteString can be of arbitrary length, however the number of significant bits must not exceed 64.
                        Leading zeros are skipped.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>littleEndian</td>
                <td>Assume little endian encoding format. Optional argument, default is false.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ByteString as 64 bit unsigned integer value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The number of significant bits exceeds 64.</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("", HEX);
assert(typeof(x.toUnsigned()) == "number");
assert(x.toUnsigned() == 0);

x = new ByteString("0123", HEX);
assert(x.toUnsigned() == 0x0123);

x = new ByteString("FF", HEX);
assert(x.toUnsigned() == 255);

x = new ByteString("FFFFFFFF", HEX);
assert(x.toUnsigned() == 0xFFFFFFFF);

x = new ByteString("00FFFFFFFF", HEX);
assert(x.toUnsigned() == 0xFFFFFFFF);

x = new ByteString("00DFEDCBA0", HEX);
assert(x.toUnsigned() == 0xDFEDCBA0);

x = new ByteString("007FFFFFFFFFFFFFFF", HEX);
assert(x.toUnsigned() == 0x7FFFFFFFFFFFFFFF);

x = new ByteString("7FEDCBA0DFEDCBA0", HEX);
assert(x.toUnsigned() == 0x7FEDCBA0DFEDCBA0);


x = new ByteString("", HEX);
assert(x.toUnsigned(true) == 0);

x = new ByteString("0123", HEX);
assert(x.toUnsigned(true) == 0x2301);

x = new ByteString("FF", HEX);
assert(x.toUnsigned(true) == 0xFF);

x = new ByteString("FFFFFF8F", HEX);
assert(x.toUnsigned(true) == 0x8FFFFFFF);

x = new ByteString("FFFFFFFFFFFFFF7F00", HEX);
assert(x.toUnsigned(true) == 0x7FFFFFFFFFFFFFFF);

x = new ByteString("70CBED7FA0CBED7F00", HEX);
assert(x.toUnsigned(true) == 0x7FEDCBA07FEDCB70);

</pre>
        <h2 id="xor">xor()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString xor(ByteString value)</p>
        <h3>Description</h3>
        Return a new ByteString object containing the bitwise exclusive or of the ByteString object for which the method is called
                     and the argument. Both ByteString objects must have the same length.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>ByteString argument.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object containing the result of the XOR operation.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The length of the ByteString argument must be equal to the length of the ByteString object.</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

x = new ByteString("AA A5 55", HEX);
y = new ByteString("55 A5 AA", HEX);
z = x.xor(y);

assert(z.toString(HEX) == "FF00FF", HEX);

</pre>
        <h2 id="add">add()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString add(Number value)</p>
        <h3>Description</h3>
                    
        <p>Returns a ByteString with the same length, which is the total of the objects value, interpreted
               as big unsigned integer value, plus the signed value.</p>
                    
        <p>This method is suitable for implementing sequence counters, in particular for secure messaging.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>value</td>
                <td>The signed value to add.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object that is the total of base plus value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var base = new ByteString("00", HEX);
var r = base.add(1)
assert(r.toString(HEX) == "01", HEX);

var r = r.add(-1)
assert(r.toString(HEX) == "00", HEX);

var r = r.add(-1)
assert(r.toString(HEX) == "FF", HEX);

var base = new ByteString("FFFFFFFFFFFFFFFF", HEX);
var r = base.add(2)
assert(r.toString(HEX) == "0000000000000001", HEX);
var r = r.add(-1)
assert(r.toString(HEX) == "0000000000000000", HEX);
var r = r.add(-1)
var base = new ByteString("FFFFFFFFFFFFFFFF", HEX);

</pre>
        <h2 id="clear">clear()</h2>
        <h3>Prototype</h3>
        <p class="signature">clear()</p>
        <h3>Description</h3>
                    
        <p>Overwrite buffer with zeros to clear sensitive informations.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("A5", HEX);
b.clear();

assert(b.toString(HEX) == "00", HEX);

</pre>
        <h2 id="valueOf">valueOf()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString ByteString.valueOf(Number value)</p>
        <p class="signature">ByteString ByteString.valueOf(Number value, Number octets)</p>
        <h3>Description</h3>
                    
        <p>Returns a ByteString encoding the value in big endian format.</p>
                    
        <p>If the argument octets is not provided, the value is encoded on the minimum
               number of bytes.</p>
                    
        <p>If the argument octets is provided, the value is encoded on the given number of bytes,
               possibly truncating the value.</p>
                    
        <p>The number range is -(2^63) to 2^63 - 1.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>value</td>
                <td>The value to convert.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object encoding the integer value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var r = ByteString.valueOf(0);
assert(r.toString(HEX) == "00");

var r = ByteString.valueOf(0, 2);
assert(r.toString(HEX) == "0000");

var r = ByteString.valueOf(1);
assert(r.toString(HEX) == "01");

var r = ByteString.valueOf(1, 2);
assert(r.toString(HEX) == "0001");

var r = ByteString.valueOf(256);
assert(r.toString(HEX) == "0100");

var r = ByteString.valueOf(256, 1);
assert(r.toString(HEX) == "00");

var r = ByteString.valueOf(0x80000000);
assert(r.toString(HEX) == "80000000");

var r = ByteString.valueOf(-1);
assert(r.toString(HEX) == "FFFFFFFFFFFFFFFF");

var r = ByteString.valueOf(-1, 2);
assert(r.toString(HEX) == "FFFF");

</pre>
        <h2 id="fromJSON">fromJSON()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString ByteString.fromJSON(Object json)</p>
        <h3>Description</h3>
                    
        <p>Returns a ByteString created from the JSON encoded class format.</p>
                    
        <p>The JSON object must contain a property "clazz" with value "ByteString" and a
               property "value" with a hexadecimal encoded string.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>json</td>
                <td>The JavaScript object</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object encoding the value property</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or JSON object does not contain the required properties</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b1 = new ByteString("1234", HEX);
var j = JSON.stringify(b1);
assert(j == '{"clazz":"ByteString","value":"1234"}');
var o = JSON.parse(j);
var b2 = ByteString.fromJSON(o);
assert(b2.equals(b1));

</pre>
        <h2 id="asSigned">asSigned()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString asSigned()</p>
        <h3>Description</h3>
        Return the signed binary value of the ByteString.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>ByteString as signed integer value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var unsigned = new ByteString("80", HEX);
var signed = unsigned.asSigned();
assert(unsigned.toString(HEX) == "80");
assert(signed.toString(HEX) == "0080");

var unsigned = new ByteString("7F", HEX);
var signed = unsigned.asSigned();
assert(unsigned.toString(HEX) == "7F")
assert(signed.toString(HEX) == "7F");

var b = new ByteString("00 01", HEX);
var signed = b.asSigned();
assert(b.toString(HEX) == "0001");
assert(signed.toString(HEX) == "0001");

</pre>
        <h2 id="asUnsigned">asUnsigned()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString asUnsigned()</p>
        <p class="signature">ByteString asUnsigned(Number length)</p>
        <h3>Description</h3>
        Return the unsigned binary value of the ByteString.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>length</td>
                <td>The minimum size of the ByteString.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>ByteString as unsigned integer value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("00 01", HEX);
var unsigned = b.asUnsigned();
assert(unsigned.toString(HEX) == "01");

var b = new ByteString("00 00 01", HEX);
var unsigned = b.asUnsigned(2);
assert(unsigned.toString(HEX) == "0001");

var b = new ByteString("00 01", HEX);
var unsigned = b.asUnsigned(2);
assert(unsigned.toString(HEX) == "0001");

var b = new ByteString("01 01", HEX);
var unsigned = b.asUnsigned();
assert(unsigned.toString(HEX) == "0101");

var b = new ByteString("CA FE", HEX);
var unsigned = b.asUnsigned(4);
assert(unsigned.toString(HEX) == "0000CAFE");

var b = new ByteString("00", HEX);
var unsigned = b.asUnsigned();
assert(unsigned.toString(HEX) == "00");

</pre>
        <h2 id="biAdd">biAdd()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString biAdd(ByteString value)</p>
        <h3>Description</h3>
        Returns a ByteString which is the total of the objects value, interpreted as big signed integer value, plus the signed value.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>The signed big integer to add.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object that is the total of base plus value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("00 FF", HEX);
var total = b.biAdd(new ByteString("00 FF 01", HEX));
assert(total.toString(HEX) == "010000");

var b = new ByteString("7F", HEX);
var total = b.biAdd(new ByteString("01", HEX));
assert(total.toString(HEX) == "0080");

var b = new ByteString("FF FF", HEX);
var total = b.biAdd(new ByteString("01", HEX));
assert(total.toString(HEX) == "00");

</pre>
        <h2 id="sub">sub()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sub(ByteString value)</p>
        <h3>Description</h3>
        Returns a ByteString which is the difference of the objects value, interpreted as big signed integer value, minus the signed value.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>The signed big integer to subtract.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object that is the difference of base minus value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("00 80", HEX);
var difference = b.sub(new ByteString("01", HEX));
assert(difference.toString(HEX) == "7F");

var b = new ByteString("00", HEX);
var difference = b.sub(new ByteString("01", HEX));
assert(difference.toString(HEX) == "FF");

var b = new ByteString("7F", HEX);
var difference = b.sub(new ByteString("FF", HEX));
assert(difference.toString(HEX) == "0080");

</pre>
        <h2 id="mod">mod()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString mod(ByteString m)</p>
        <h3>Description</h3>
        Returns a non-negative ByteString which is the objects value, interpreted as big signed integer value, modulo the unsigned m.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>m</td>
                <td>The modulo as unsigned big integer.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New non-negative ByteString object that is base value mod m.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("0B", HEX);
var value = b.mod(new ByteString("07", HEX));
assert(value.toString(HEX) == "04");

</pre>
        <h2 id="modInverse">modInverse()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString modInverse(ByteString m)</p>
        <h3>Description</h3>
        Returns ByteString which is the multiplicative inverse of the objects value, interpreted as big signed integer value, modulo the unsigned m.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>m</td>
                <td>The modulo as unsigned big integer.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object that is base^-1 mod m.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("17", HEX);
var value = b.modInverse(new ByteString("78", HEX));
assert(value.toString(HEX) == "2F");

</pre>
        <h2 id="modPow">modPow()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString modPow(ByteString exponent, ByteString m)</p>
        <h3>Description</h3>
        Returns ByteString which is the objects value, interpreted as big signed integer value, raised to the power of exp modulo the unsigned m.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>exponent</td>
                <td>The exponent as signed big integer.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>m</td>
                <td>The modulo as unsigned big integer.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object that is base^exponent mod m.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("03 DF", HEX);
var exp = new ByteString("03 E5", HEX);
var m = new ByteString("04 00", HEX);
var value = b.modPow(exp, m);
assert(value.toString(HEX) == "035F");

</pre>
        <h2 id="multiply">multiply()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString multiply(ByteString factor)</p>
        <h3>Description</h3>
        Returns ByteString which is the objects value, interpreted as big signed integer value, multiplied by the unsigned factor.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>factor</td>
                <td>The factor as signed big integer.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object that is base * factor.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("10", HEX);
var factor = new ByteString("02", HEX);
var value = b.multiply(factor);
assert(value.toString(HEX) == "20");

</pre>
        <h2 id="divide">divide()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString divide(ByteString divisor)</p>
        <h3>Description</h3>
        Returns ByteString which is the objects value, interpreted as big signed integer value, divided by the unsigned divisor.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>divisor</td>
                <td>The divisor as signed big integer.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>New ByteString object that is base / divisor.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("20", HEX);
var divisor = new ByteString("02", HEX);
var value = b.divide(divisor);
assert(value.toString(HEX) == "10");

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Atr - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Atr - Reference Documentation</h1>
        <p>
    </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Atr() constructor</a>
            </li>
            <li>
                <a href="#toByteString">toByteString()</a>
            </li>
            <li>
                <a href="#toString">toString()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>formatByte</td>
                <td>Format byte from ATR returned by ICC (2.Byte)</td>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>historicalBytes</td>
                <td>Historical bytes</td>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>interfaceBytes</td>
                <td>Interface bytes</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>tckByte</td>
                <td>Check byte (T=0, T=1) or word (T=CL)</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">Atr(ByteString atr)</p>
        <h3>Description</h3>
        Validate and decode ATR
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>atr</td>
                <td>ATR</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>ATR is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


atr = new Atr(new ByteString("3BBD18008131FE45805102670414B1010102008105", HEX));

print(atr);
print(atr.formatByte);
print(atr.historicalBytes);
print(atr.interfaceBytes);
print(atr.tckByte);

atr = new Atr(new ByteString("A2131088", HEX));
print(atr);
atr = new Atr(new ByteString("92231088", HEX));
print(atr);
atr = new Atr(new ByteString("3B85004934313000", HEX));
print(atr);
atr = new Atr(new ByteString("3B840034310100", HEX));
print(atr);
atr = new Atr(new ByteString("3B8A813140434D49434152444F313331", HEX));
print(atr);
atr = new Atr(new ByteString("3B8A81314F4395010190900900012091", HEX));
print(atr);
atr = new Atr(new ByteString("3B8481014D538102", HEX));
print(atr);
atr = new Atr(new ByteString("3B85004D46430110", HEX));
print(atr);
atr = new Atr(new ByteString("3B600000", HEX));
print(atr);
atr = new Atr(new ByteString("3B91948031FE4966", HEX));
print(atr);
atr = new Atr(new ByteString("3BF39400FF80B1FE491F034D3253", HEX));
print(atr);
atr = new Atr(new ByteString("3B91948031FE4967", HEX));
print(atr);
atr = new Atr(new ByteString("3BF89400FF80B1FE451F03D276000028FF051A", HEX));
print(atr);
atr = new Atr(new ByteString("3BF31100FF80B1F0491F034C454F", HEX));
print(atr);
atr = new Atr(new ByteString("3BFD9400FF80B1FE451F030068D276000028FF051E009000", HEX));
print(atr);
atr = new Atr(new ByteString("3BFF9400FF80B1FE451F030068D276000028FF051E3180009000", HEX));
print(atr);
atr = new Atr(new ByteString("3BFD9400FF80B1FE451F030068D276000028FF0524009000", HEX));
print(atr);
atr = new Atr(new ByteString("3BFF9400FF80B1FE451F030068D276000028FF05243180009000", HEX));
print(atr);
atr = new Atr(new ByteString("3BFD9400FF80B1FE451F030068D276000028FF0523009000", HEX));
print(atr);
atr = new Atr(new ByteString("3BFF9400FF80B1FE451F030068D276000028FF05233180009000", HEX));
print(atr);
atr = new Atr(new ByteString("3BEF00FF813152454D46432049424D2034304839363031", HEX));
print(atr);
atr = new Atr(new ByteString("3BEF00FF81315045656308041302500002000000010120", HEX));
print(atr);
atr = new Atr(new ByteString("3B6F00008031E06B8034030103038034555555", HEX));
print(atr);
atr = new Atr(new ByteString("3B6F00008031E06B8403030406555555555555", HEX));
print(atr);
atr = new Atr(new ByteString("3BEF00FF813150456563080B4002800008187002010400", HEX));
print(atr);
atr = new Atr(new ByteString("3BBB18008131FE4580670412B0020182018105", HEX));
print(atr);
atr = new Atr(new ByteString("3BBB18008131FE4580670414B0010182018105", HEX));
print(atr);
atr = new Atr(new ByteString("3BBD18008131FE45805102670412B0020182208105", HEX));
print(atr);
atr = new Atr(new ByteString("3BBD18008131FE45805101670412B0020182208105", HEX));
print(atr);
atr = new Atr(new ByteString("3BFF1800FF8131FE45454C435F56312E3020202020202020", HEX));
print(atr);
atr = new Atr(new ByteString("3BBD18008131FE45805102670414B1010182038105", HEX));
print(atr);
atr = new Atr(new ByteString("3BBD18008131FE45805101670414B1010182038105", HEX));
print(atr);
atr = new Atr(new ByteString("3BBD18008131FE45805102670414B1010182108105", HEX));
print(atr);
atr = new Atr(new ByteString("3BBD18008131FE45805101670414B1010182108105", HEX));
print(atr);
atr = new Atr(new ByteString("3B9F1881B1FE451FC3006D05A3010031B873B7B5DB009000A9", HEX));
print(atr);
atr = new Atr(new ByteString("3B00", HEX));
print(atr);
atr = new Atr(new ByteString("3F00", HEX));
print(atr);
atr = new Atr(new ByteString("3BF0FFFFFFF0FFFFFFF1FFFFFFF0FFFFFFFFFFFFFF00", HEX));
print(atr);
atr = new Atr(new ByteString("3B8001", HEX));
print(atr);


</pre>
        <h2 id="toByteString">toByteString()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString toByteString()</p>
        <h3>Description</h3>
        Return the encoded ATR as ByteString object
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>ATR</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

bs = new ByteString("3BBD18008131FE45805102670414B1010102008105", HEX)
atr = new Atr(bs);
assert(atr.toByteString().equals(bs));

</pre>
        <h2 id="toString">toString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String toString()</p>
        <h3>Description</h3>
        Return the ATR in human readable format
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>Decoded ATR</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

bs = new ByteString("3BBD18008131FE45805102670414B1010102008105", HEX)
atr = new Atr(bs);
val = atr.toString();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>HttpRequest - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>HttpRequest - Reference Documentation</h1>
        <p>
                    
            <p>Class implementing the request passed to a scripting servlet.</p>
                    
            <p>Instances of this class wrap the HttpServletRequest from the Servlet API and allow
           scripts easy access to properties of an incoming HTTP connection.</p>
                    
            <p>Instances of this class can not be created directly, but are passed as
           argument to the handleRequest() method.</p>
                    
            <p>Form fields and uploaded files can be accessed using the parameters property.
           It contains all form field names and the associated value. Uploaded files
           are stored as ByteString values.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">HttpRequest() constructor</a>
            </li>
            <li>
                <a href="#getSession">getSession()</a>
            </li>
            <li>
                <a href="#getEntityAsString">getEntityAsString()</a>
            </li>
            <li>
                <a href="#getEntityAsXML">getEntityAsXML()</a>
            </li>
            <li>
                <a href="#getEntityAsInputStream">getEntityAsInputStream()</a>
            </li>
            <li>
                <a href="#getHeaderField">getHeaderField()</a>
            </li>
            <li>
                <a href="#getHeaderFieldList">getHeaderFieldList()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>String</td>
                <td>method</td>
                <td>The HTTP request method (GET, POST, PUT, DELETE, etc)</td>
            </tr>
            <tr>
                <td>String</td>
                <td>contextPath</td>
                <td>The context path under which the servlet is installed. "" for root.</td>
            </tr>
            <tr>
                <td>String</td>
                <td>servletPath</td>
                <td>The path that called this servlet</td>
            </tr>
            <tr>
                <td>String</td>
                <td>pathInfo</td>
                <td>The additional path elements after the servlets URL or null</td>
            </tr>
            <tr>
                <td>String</td>
                <td>queryString</td>
                <td>The query part of an URL after the '?' or null</td>
            </tr>
            <tr>
                <td>String</td>
                <td>contentType</td>
                <td>The MIME type of the body of the request or null</td>
            </tr>
            <tr>
                <td>String</td>
                <td>contentLength</td>
                <td>The length of content in the request</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>localPort</td>
                <td>The local port that received this request</td>
            </tr>
            <tr>
                <td>Object</td>
                <td>parameters</td>
                <td>Associative array with form fields</td>
            </tr>
            <tr>
                <td>HttpServletRequest</td>
                <td>nativeRequest</td>
                <td>The native request</td>
            </tr>
        </table>
        <h2 id="getSession">getSession()</h2>
        <h3>Prototype</h3>
        <p class="signature">HttpSession getSession()</p>
        <h3>Description</h3>
                    
        <p>Obtain - and possibly create - a session object for this connection</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>HttpSession</code>
                </td>
                <td>The session object associated with this request</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

function testSession(req, res) {
	GPSystem.trace("TestSession");
	var session = req.getSession();
	GPSystem.trace("Session id " + session.id);
	GPSystem.trace("Session is new: " + session.isNew);
	GPSystem.trace("Native object " + session.nativeSession);
}

</pre>
        <h2 id="getEntityAsString">getEntityAsString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String getEntityAsString()</p>
        <h3>Description</h3>
                    
        <p>Read the entity from an HTTP request and return it as String.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>The content of the request's entity as string</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

function testEntityString(req, res) {
	GPSystem.trace("TestEntityString");
	var s = req.getEntityAsString();
	GPSystem.trace("Entity (length=" + s.length + "): " + s)
	res.print(s);
}

</pre>
        <h2 id="getEntityAsXML">getEntityAsXML()</h2>
        <h3>Prototype</h3>
        <p class="signature">XML getEntityAsXML()</p>
        <h3>Description</h3>
                    
        <p>Read the entity from an HTTP request and parse as XML structure.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>XML</code>
                </td>
                <td>The content of the request's entity as XML object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

function testEntityXML(req, res) {
	GPSystem.trace("TestEntityXML");
	var xml = req.getEntityAsXML();
	GPSystem.trace("Entity: " + xml.toString());
	res.print(xml);
}

</pre>
        <h2 id="getEntityAsInputStream">getEntityAsInputStream()</h2>
        <h3>Prototype</h3>
        <p class="signature">java.io.InputStream getEntityAsInputStream()</p>
        <h3>Description</h3>
                    
        <p>Obtain the input stream to read the entity from the HTTP request.</p>
                    
        <p>This method is a special function to provide for backward compatibility with the GPXML class.
               It may be removed in future releases.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>java.io.InputStream</code>
                </td>
                <td>The input stream to read the entity</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

function testEntityInputStream(req, res) {
	GPSystem.trace("TestEntityInputStream");
	var is = req.getEntityAsInputStream();

	var parser = new GPXML();
	var r = parser.parse(is);

	GPSystem.trace("Entity: " + r.p.elementValue);
	res.println(r.p.elementValue);
}

</pre>
        <h2 id="getHeaderField">getHeaderField()</h2>
        <h3>Prototype</h3>
        <p class="signature">String[] getHeaderField(String fieldName)</p>
        <h3>Description</h3>
                    
        <p>Returns a list of values for given header field.</p>
                    
        <p>If the field does already exists, then undefined is returned</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>fieldName</td>
                <td>The HTTP header field name</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>The list of values for this header field</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

function testHeader(req, res) {
	GPSystem.trace("TestHeader");

	var headers = req.getHeaderFieldList();
	GPSystem.trace(headers);
	for (var i = 0; i &lt; headers.length; i++) {
		print(headers[i] + " : " + req.getHeaderField(headers[i]));
	}

	var fieldList = req.getHeaderField("x-test");
	if (fieldList) {
		var str = fieldList[0];
		GPSystem.trace(str);
		res.addHeaderField("y-test", str);
	}
}

</pre>
        <h2 id="getHeaderFieldList">getHeaderFieldList()</h2>
        <h3>Prototype</h3>
        <p class="signature">String[] getHeaderFieldList()</p>
        <h3>Description</h3>
                    
        <p>Returns a list of header fields contained in the response.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>The list of header fields</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See getHeaderField for an example

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
      <p>The Smart Card Shell 3 is an interactive development and scripting tool that allows
         easy access to smart cards on an APDU level as well as on a file system
         level. It can be used to develop and test smart card applications, in particular
         applications integrated into a Public Key Infrastructure (PKI).</p>
      <p>It is a Java application using the <a href="http://www.openscdp.org/ocf/index.html">OpenCard Framework</a> supporting most smart cards
         compliant with ISO7816-4. The Smart Card Shell uses <a href="http://developer.mozilla.org/en/docs/JavaScript">JavaScript</a>
         as command and script language provided by the <a href="http://www.mozilla.org/rhino/">Mozilla Rhino Engine</a>.
         It has support for classes defined in the <a href="http://www.globalplatform.org">Global Platform</a>
         Scripting specification and defines additional classes to support ASN.1/TLV encoding, X509 certificates,
         OCSP, LDAP and SOAP. The scripting engine supports <a href="http://developer.mozilla.org/en/E4X_Tutorial">E4X</a> for simple XML processing.</p>
      <p>See the <a href="http://www.openscdp.org/scripts/index.html">list of supported cards and applications</a>, if your card or application is already
         supported. Take a look at the <a href="http://www.openscdp.org/screenshot.html">screenshots</a> to get an
         idea of what the software looks like.</p>
      <h2>Usage</h2>
      <ul>
      <li><a href="http://www.openscdp.org/scsh3/download.html">Download</a></li>
      <li><a href="installation.html">Installation</a></li>
      <li><a href="gettingstarted.html">Getting Started</a></li>
      <li><a href="troubleshooting.html">Troubleshooting</a></li>
      <li><a href="commandline.html">Command Line Arguments</a></li>
      <li><a href="shellcmd.html">Build-in Shell Commands</a></li>
      <li><a href="filelocation.html">Locating Files</a></li>
      <li><a href="configuration.html">Shell and Card Terminal Configuration</a></li>
      <li><a href="settings.html">Persistent Configuration Settings</a></li>
      <li><a href="http://www.openscdp.org/scripts/index.html">Supported Cards and Applications</a></li>
      </ul>
      <h2>Global Platform Scripting Classes</h2>
      <ul>
      <li><a href="gperror.html">GPError - Exceptions thrown by GP methods</a></li>
      <li><a href="gpsystem.html">GPSystem - Access to information (date, version) and tracing functions</a></li>
      <li><a href="bytestring.html">ByteString - Immutuable byte buffer</a></li>
      <li><a href="bytebuffer.html">ByteBuffer - Mutuable byte buffer</a></li>
      <li><a href="tlv.html">TLV - Tag Length Value encoded data structures</a></li>
      <li><a href="tlvlist.html">TLVList - List of Tag Length Value encoded data structures</a></li>
      <li><a href="card.html">Card - Access to ICC</a></li>
      <li><a href="atr.html">Atr - Class to hold the Answer to Reset returned by the ICC</a></li>
      <li><a href="key.html">Key - Class to describe cryptographic keys</a></li>
      <li><a href="crypto.html">Crypto - Cryptographic operations</a></li>
      <li><a href="application.html">Application - Class representing a card application</a></li>
      <li><a href="gpapplication.html">GPApplication - Class representing a card application on a Global Platform card</a></li>
      <li><a href="gpsecuritydomain.html">GPSecurityDomain - Class representing a security domain
                          on a Global Platform card</a></li>
      </ul>
      <h2>OpenSCDP Scripting Classes</h2>
      <ul>
      <li><a href="asn1.html">ASN1 - DER encoded ASN.1 objects</a></li>
      <li><a href="cardfile.html">CardFile - Elementary and dedicated files on ISO 7816-4 smart cards</a></li>
      <li><a href="isosecurechannel.html">IsoSecureChannel - Support for secure messaging from ISO 7816-4 and eSignK</a></li>
      <li><a href="applicationfactory.html">ApplicationFactory - Repository for Global Platform profiles</a></li>
      <li><a href="gpxml.html">GPXML - Parser for XML files, Global Platform Profiles in particular</a></li>
      <li><a href="jsscript.html">JsScript - Class for loading and running scripts</a></li>
      <li><a href="cardsimulationadapter.html">CardSimulationAdapter - Script based simulation of cards</a></li>
      <li><a href="x509.html">X509 - Certificates according to X.509 V3</a></li>
      <li><a href="crl.html">CRL - Certificates revocation lists according to X.509</a></li>
      <li><a href="keystore.html">KeyStore - Container to securely store cryptographic keys</a></li>
      <li><a href="cmssigneddata.html">CMSSignedData - Cryptographic Message Syntax Signed Data</a></li>
      <li><a href="cmsgenerator.html">CMSGenerator - Cryptographic Message Syntax Signed Data Generator</a></li>
      <li><a href="xmlsignature.html">XMLSignature - Support for XML Signature generation and verification</a></li>
      <li><a href="ocspquery.html">OCSPQuery - Query certificate status from an OCSP responder</a></li>
      <li><a href="ldap.html">LDAP - Query information from directory using LDAP</a></li>
      <li><a href="soapconnection.html">SOAPConnection - Call SOAP web services</a></li>
      <li><a href="urlconnection.html">URLConnection - Read from and write to resources identified by an URL</a></li>
      <li><a href="pkcs11provider.html">PKCS11Provider - Support for cryptographic modules with a PKCS#11 interface</a></li>
      <li><a href="pkcs11session.html">PKCS11Session - Session management and cryptographic operations</a></li>
      <li><a href="pkcs11object.html">PKCS11Object - Support for creating and accessing PKCS#11 objects</a></li>
      </ul>
      <h2>Smart Card Shell GUI Classes</h2>
      <ul>
      <li><a href="outlinenode.html">OutlineNode - Class to build outline trees.</a></li>
      <li><a href="dialog.html">Dialog - Support for simple prompts in scripts.</a></li>
      <li><a href="task.html">Task - Class to run and manage background tasks.</a></li>
      </ul>
	  <p>Additional tools classes are documented as <a href="jsdoc/index.html">JSDoc</a></p>
      <p>The online documentation is for latest beta version of the Smart Card Shell. The latest stable version may not
         yet contain all functions described here.</p>
      <h2>Download</h2>
      <p>You can always find the
          <a href="http://www.openscdp.org/scsh3/download.html">latest version of the Smart Card Shell</a>
       on our website.</p>
      <h2>License</h2>
      <p>This program is free software; you can redistribute it and/or
         modify it under the terms of the GNU General Public License version 2
         as published by the Free Software Foundation.</p>

      <p>This program is distributed in the hope that it will be useful,
         but WITHOUT ANY WARRANTY; without even the implied warranty of
         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
         <a href="gpl.txt">GNU General Public License</a> for more details.</p>

      <p>You should have received a copy of the GNU General Public License
         along with this program; if not, write to the Free Software
         Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.</p>
      <p>If you would like to include this software or parts of it in your own software and do
         not publish your code under the GPL, then you will need a commercial license from us (Dual-license).</p>
      <p>We also provide support, integration and development services for OpenSCDP, as well as
         consulting services for your smart card project. Please contact <img src="support.png" align="absmiddle"> for
         details.</p>
      <p>The raw picture for the banner on top was kindly provided by www.photocase.com.</p>
      <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>KeyStore - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>KeyStore - Reference Documentation</h1>
        <p>Class implementing access to Java key stores from JavaScript</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">KeyStore() constructor</a>
            </li>
            <li>
                <a href="#getAliases">getAliases()</a>
            </li>
            <li>
                <a href="#getKey">getKey()</a>
            </li>
            <li>
                <a href="#getCertificate">getCertificate()</a>
            </li>
            <li>
                <a href="#setKey">setKey()</a>
            </li>
            <li>
                <a href="#setCertificate">setCertificate()</a>
            </li>
            <li>
                <a href="#store">store()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>java.security.KeyStore</td>
                <td>native</td>
                <td>The native Java keystore object</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">KeyStore(String provider, String type, String filename, String password)</p>
        <p class="signature">KeyStore(String provider, String type, String filename)</p>
        <p class="signature">KeyStore(String provider, String type)</p>
        <p class="signature">KeyStore(String provider)</p>
        <h3>Description</h3>
        <p>Create and load key store</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>provider</td>
                <td>Provider to use for key store access</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>type</td>
                <td>Key store type. Default is "jks".</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>filename</td>
                <td>Name of file containing keys. Default is empty.</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>password</td>
                <td>Password used to access key store. Default is no password.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Accessing key store failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var ks = new KeyStore("BC", "BKS", "sample.bks", "1234");
// var ks = new KeyStore("SUN", "JKS");
// var ks = new KeyStore("SunJCE", "JCEKS");

</pre>
        <h2 id="getAliases">getAliases()</h2>
        <h3>Prototype</h3>
        <p class="signature">String[] getAliases()</p>
        <h3>Description</h3>
                    
        <p>Return list of aliases defined in key store.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>Array containing alias names from key store</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Accessing key failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var aliases = ks.getAliases();
for (var i = 0; i &lt; aliases.length; i++) {
	print(aliases[i]);
}

</pre>
        <h2 id="getKey">getKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">getKey(Key key)</p>
        <p class="signature">getKey(Key key, String password)</p>
        <h3>Description</h3>
                    
        <p>Link key object with key instance in key store using the key id.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>Key object</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>password</td>
                <td>Password to access key instance</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Accessing key failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var k = new Key();
k.setType(Key.PRIVATE);
k.setID("openscdp");

ks.getKey(k, "1234");

</pre>
        <h2 id="getCertificate">getCertificate()</h2>
        <h3>Prototype</h3>
        <p class="signature">getCertificate(String alias)</p>
        <h3>Description</h3>
                    
        <p>Get named certificate from keystore.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>alias</td>
                <td>Alias name of certificate</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var cert = ks.getCertificate("openscdp");
assert(cert.getSubjectDNString() == "E=support@openscdp.org,C=DE,L=Minden," +
                                    "O=CardContact,CN=OpenSCDP");

</pre>
        <h2 id="setKey">setKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">setKey(Key key)</p>
        <p class="signature">setKey(Key key, String password)</p>
        <p class="signature">setKey(Key key, String password, X590[] certificates)</p>
        <h3>Description</h3>
                    
        <p>Store key in key store, encrypted with optional password. Private keys may only be stored
               with associated certificate chain.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>Key object</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>password</td>
                <td>Password to access key instance</td>
            </tr>
            <tr>
                <td>
                    <code>X509[]</code>
                </td>
                <td>certificates</td>
                <td>Chain of certificates</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Accessing key failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

k.setID("test");

ks.setKey(k, "1234", [cert]);

</pre>
        <h2 id="setCertificate">setCertificate()</h2>
        <h3>Prototype</h3>
        <p class="signature">setCertificate(String alias, X509 certificate)</p>
        <h3>Description</h3>
                    
        <p>Store certificate in key store.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>certificate</td>
                <td>Certificate</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Accessing key failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ks.setCertificate("test", cert);

</pre>
        <h2 id="store">store()</h2>
        <h3>Prototype</h3>
        <p class="signature">store()</p>
        <p class="signature">store(String filename)</p>
        <p class="signature">setKey(String filename, String password)</p>
        <h3>Description</h3>
                    
        <p>Save keystore to persistent storage</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>filename</td>
                <td>File name for storing the key store</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>password</td>
                <td>Password to access key instance</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Accessing key failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ks.store("newstore.bks", "1234");

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="xml" indent="yes"/>

    
    <xsl:template match="/class">
        <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;
&lt;!-- #BeginTemplate "template.dwt" --&gt;
        </xsl:text>
        <html>
            <head>
            <style type="text/css">
            </style>
                <xsl:text disable-output-escaping="yes">
&lt;!-- #BeginEditable "TITLE" --&gt;
                </xsl:text>
                <title><xsl:value-of select="@name"/> - Reference Documentation</title>
                <xsl:text disable-output-escaping="yes">
&lt;!-- #EndEditable --&gt;
                </xsl:text>
            </head>
            <body>
                <xsl:text disable-output-escaping="yes">
&lt;!-- #BeginEditable "BODY" --&gt;
                </xsl:text>
                <h1><xsl:value-of select="@name"/> - Reference Documentation</h1>

                <p><xsl:apply-templates select="description"/></p>

                <h2>Index of Methods</h2>
                <ul>
                    <li><a href="#Constructor"><xsl:value-of select="@name"/>() constructor</a></li>
                    <xsl:apply-templates select="method" mode="index"/>
                </ul>
                
                <xsl:if test="constant">
                    <h2>Constants</h2>
                    <table class="content">
                        <colgroup>
                            <col width="100" />
                            <col width="200"/>
                            <col/>
                        </colgroup>
                        <tr><th>Type</th><th>Name</th><th>Description</th></tr>
                        <xsl:for-each select="constant">
                            <tr><td><xsl:value-of select="@type"/></td><td><xsl:value-of select="@name"/></td><td><xsl:value-of select="."/></td></tr>
                        </xsl:for-each>
                    </table>
                </xsl:if>
                
                <xsl:if test="field">
                    <h2>Properties</h2>
                    <table class="content">
                        <colgroup>
                            <col width="100"/>
                            <col width="120"/>
                            <col/>
                        </colgroup>
                        <tr><th>Type</th><th>Name</th><th>Description</th></tr>
                        <xsl:for-each select="field">
                            <tr><td><xsl:value-of select="@type"/></td><td><xsl:value-of select="@name"/></td><td><xsl:value-of select="."/></td></tr>
                        </xsl:for-each>
                    </table>
                </xsl:if>
                
                <xsl:if test="constructor">
                    <h2 id="Constructor">Constructor</h2>
                    <xsl:apply-templates select="constructor"/>
                </xsl:if>
                
                <xsl:apply-templates select="method" mode="full"/>

                <xsl:text disable-output-escaping="yes">
&lt;!-- #EndEditable --&gt;
                </xsl:text>
                
            </body>
        </html>
        <xsl:text disable-output-escaping="yes">
&lt;!-- #EndTemplate --&gt;
        </xsl:text>
    </xsl:template>
    
    
    <xsl:template match="constructor">

        <h3>Prototype</h3>
        <xsl:apply-templates select="signature"/>

        <h3>Description</h3>
        <xsl:apply-templates select="description"/>

        <xsl:if test="argument">
            <xsl:call-template name="arguments"/>
        </xsl:if>
            
        <xsl:call-template name="exceptions"/>

        <h3>Example</h3>
        <pre><xsl:value-of select="example"/></pre>
    </xsl:template>

    
    <xsl:template match="method" mode="index">
        <li><a><xsl:attribute name="href">#<xsl:value-of select="@name"/></xsl:attribute><xsl:value-of select="@name"/>()</a></li>
    </xsl:template>
    
        
    <xsl:template match="method" mode="full">

        <h2><xsl:attribute name="id"><xsl:value-of select="@name"/></xsl:attribute><xsl:value-of select="@name"/>()</h2>

        <h3>Prototype</h3>
        <xsl:apply-templates select="signature"/>

        <h3>Description</h3>
        <xsl:apply-templates select="description"/>

        <xsl:if test="argument">
            <xsl:call-template name="arguments"/>
        </xsl:if>
        
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr><td><code><xsl:value-of select="return/@type"/></code></td><td><xsl:value-of select="return/."/></td></tr>
        </table>
        
        <xsl:call-template name="exceptions"/>
        
        <h3>Example</h3>
        <pre><xsl:value-of select="example"/></pre>
    </xsl:template>

    
    <xsl:template name="arguments">
        <h3>Arguments</h3>
        <table class="content" >
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr><th>Type</th><th>Name</th><th>Description</th></tr>
            <xsl:apply-templates select="argument"/>
        </table>
    </xsl:template>
    
    
    <xsl:template match="argument">
        <tr>
            <td>
                <code>
                    <xsl:choose>
                        <xsl:when test="@type = 'ByteString'">
                            <a><xsl:attribute name="href">bytestring.html</xsl:attribute>ByteString</a>
                        </xsl:when>
                        <xsl:when test="@type = 'ByteBuffer'">
                            <a><xsl:attribute name="href">bytebuffer.html</xsl:attribute>ByteBuffer</a>
                        </xsl:when>
                        <xsl:otherwise>
                            <xsl:value-of select="@type"/>
                        </xsl:otherwise>
                    </xsl:choose>
                </code>
            </td>
            <td>
                <xsl:value-of select="@name"/>
            </td>
            <td>
                <xsl:call-template name="description"/>
            </td>
        </tr>
    </xsl:template>
    
    
    <xsl:template name="exceptions">
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr><th>Name</th><th>Value</th><th>Description</th></tr>
            <xsl:apply-templates select="exception"/>
        </table>
    </xsl:template>
    
    
    <xsl:template match="exception">
        <tr><td><xsl:value-of select="@name"/></td><td><xsl:value-of select="@value"/></td><td><xsl:value-of select="."/></td></tr>
    </xsl:template>
    
    
    <xsl:template match="signature">
      <p class="signature"><xsl:value-of select="."/></p>
    </xsl:template>

    
    <xsl:template match="description" name="description">
        <xsl:apply-templates/>
<!-- 
        <p><xsl:value-of select="."/></p>
		<xsl:copy-of select="./*"/>
-->
    </xsl:template>
    
    
    <xsl:template match="p">
        <p><xsl:apply-templates/></p>
    </xsl:template>
    
    
    <xsl:template match="a">
        <a><xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute><xsl:value-of select="."/></a>
    </xsl:template>

    
    <xsl:template match="b">
        <b><xsl:apply-templates/></b>
    </xsl:template>
    
</xsl:stylesheet>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
 <title>Mozilla Public License version 1.1</title>
 <style type="text/css">
  .very-strong{
   text-transform:uppercase;
  }
  dt{
   font-weight:bold;
  }
  dd p{
   margin:0;
  }
 </style>
</head>
<body>
 <h1>Mozilla Public License Version 1.1</h1>
 <h2 id="section-1">1. Definitions.</h2>
 <dl>
  <dt id="section-1.0.1">1.0.1. "Commercial Use"
  <dd>means distribution or otherwise making the Covered Code available to a third party.
  <dt id="section-1.1">1.1. "Contributor"
  <dd>means each entity that creates or contributes to the creation of Modifications.
  <dt id="section-1.2">1.2. "Contributor Version"
  <dd>means the combination of the Original Code, prior Modifications used by a Contributor,
   and the Modifications made by that particular Contributor.
  <dt id="section-1.3">1.3. "Covered Code"
  <dd>means the Original Code or Modifications or the combination of the Original Code and
   Modifications, in each case including portions thereof.
  <dt id="section-1.4">1.4. "Electronic Distribution Mechanism"
  <dd>means a mechanism generally accepted in the software development community for the
   electronic transfer of data.
  <dt id="section-1.5">1.5. "Executable"
  <dd>means Covered Code in any form other than Source Code.
  <dt id="section-1.6">1.6. "Initial Developer"
  <dd>means the individual or entity identified as the Initial Developer in the Source Code
   notice required by <a href="#exhibit-a">Exhibit A</a>.
  <dt id="section-1.7">1.7. "Larger Work"
  <dd>means a work which combines Covered Code or portions thereof with code not governed
   by the terms of this License.
  <dt id="section-1.8">1.8. "License"
  <dd>means this document.
  <dt id="section-1.8.1">1.8.1. "Licensable"
  <dd>means having the right to grant, to the maximum extent possible, whether at the
   time of the initial grant or subsequently acquired, any and all of the rights
   conveyed herein.
  <dt id="section-1.9">1.9. "Modifications"
  <dd>
   <p>means any addition to or deletion from the substance or structure of either the
    Original Code or any previous Modifications. When Covered Code is released as a
    series of files, a Modification is:
   <ol type="a">
    <li id="section-1.9-a">Any addition to or deletion from the contents of a file
     containing Original Code or previous Modifications.
    <li id="section-1.9-b">Any new file that contains any part of the Original Code or
     previous Modifications.
   </ol>
  <dt id="section-1.10">1.10. "Original Code"
  <dd>means Source Code of computer software code which is described in the Source Code
   notice required by <a href="#exhibit-a">Exhibit A</a> as Original Code, and which,
   at the time of its release under this License is not already Covered Code governed
   by this License.
  <dt id="section-1.10.1">1.10.1. "Patent Claims"
  <dd>means any patent claim(s), now owned or hereafter acquired, including without
   limitation, method, process, and apparatus claims, in any patent Licensable by
   grantor.
  <dt id="section-1.11">1.11. "Source Code"
  <dd>means the preferred form of the Covered Code for making modifications to it,
   including all modules it contains, plus any associated interface definition files,
   scripts used to control compilation and installation of an Executable, or source
   code differential comparisons against either the Original Code or another well known,
   available Covered Code of the Contributor's choice. The Source Code can be in a
   compressed or archival form, provided the appropriate decompression or de-archiving
   software is widely available for no charge.
  <dt id="section-1.12">1.12. "You" (or "Your")
  <dd>means an individual or a legal entity exercising rights under, and complying with
   all of the terms of, this License or a future version of this License issued under
   <a href="#section-6.1">Section 6.1.</a> For legal entities, "You" includes any entity
   which controls, is controlled by, or is under common control with You. For purposes of
   this definition, "control" means (a) the power, direct or indirect, to cause the
   direction or management of such entity, whether by contract or otherwise, or (b)
   ownership of more than fifty percent (50%) of the outstanding shares or beneficial
   ownership of such entity.
 </dl>
 <h2 id="section-2">2. Source Code License.</h2>
 <h3 id="section-2.1">2.1. The Initial Developer Grant.</h3>
 <p>The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive
  license, subject to third party intellectual property claims:
 <ol type="a">
  <li id="section-2.1-a">under intellectual property rights (other than patent or
   trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform,
   sublicense and distribute the Original Code (or portions thereof) with or without
   Modifications, and/or as part of a Larger Work; and
  <li id="section-2.1-b">under Patents Claims infringed by the making, using or selling
   of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or
   otherwise dispose of the Original Code (or portions thereof).
  <li id="section-2.1-c">the licenses granted in this Section 2.1
   (<a href="#section-2.1-a">a</a>) and (<a href="#section-2.1-b">b</a>) are effective on
   the date Initial Developer first distributes Original Code under the terms of this
   License.
  <li id="section-2.1-d">Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>)
   above, no patent license is granted: 1) for code that You delete from the Original Code;
   2) separate from the Original Code; or 3) for infringements caused by: i) the
   modification of the Original Code or ii) the combination of the Original Code with other
   software or devices.
 </ol>
 <h3 id="section-2.2">2.2. Contributor Grant.</h3>
 <p>Subject to third party intellectual property claims, each Contributor hereby grants You
  a world-wide, royalty-free, non-exclusive license
 <ol type="a">
  <li id="section-2.2-a">under intellectual property rights (other than patent or trademark)
   Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and
   distribute the Modifications created by such Contributor (or portions thereof) either on
   an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger
   Work; and
  <li id="section-2.2-b">under Patent Claims infringed by the making, using, or selling of
   Modifications made by that Contributor either alone and/or in combination with its
   Contributor Version (or portions of such combination), to make, use, sell, offer for
   sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor
   (or portions thereof); and 2) the combination of Modifications made by that Contributor
   with its Contributor Version (or portions of such combination).
  <li id="section-2.2-c">the licenses granted in Sections 2.2
   (<a href="#section-2.2-a">a</a>) and 2.2 (<a href="#section-2.2-b">b</a>) are effective
   on the date Contributor first makes Commercial Use of the Covered Code.
  <li id="section-2.2-d">Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>)
   above, no patent license is granted: 1) for any code that Contributor has deleted from
   the Contributor Version; 2) separate from the Contributor Version; 3) for infringements
   caused by: i) third party modifications of Contributor Version or ii) the combination of
   Modifications made by that Contributor with other software (except as part of the
   Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code
   in the absence of Modifications made by that Contributor.
 </ol>
 <h2 id="section-3">3. Distribution Obligations.</h2>
 <h3 id="section-3.1">3.1. Application of License.</h3>
 <p>The Modifications which You create or to which You contribute are governed by the terms
  of this License, including without limitation Section <a href="#section-2.2">2.2</a>. The
  Source Code version of Covered Code may be distributed only under the terms of this License
  or a future version of this License released under Section <a href="#section-6.1">6.1</a>,
  and You must include a copy of this License with every copy of the Source Code You
  distribute. You may not offer or impose any terms on any Source Code version that alters or
  restricts the applicable version of this License or the recipients' rights hereunder.
  However, You may include an additional document offering the additional rights described in
  Section <a href="#section-3.5">3.5</a>.
 <h3 id="section-3.2">3.2. Availability of Source Code.</h3>
 <p>Any Modification which You create or to which You contribute must be made available in
  Source Code form under the terms of this License either on the same media as an Executable
  version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an
  Executable version available; and if made available via Electronic Distribution Mechanism,
  must remain available for at least twelve (12) months after the date it initially became
  available, or at least six (6) months after a subsequent version of that particular
  Modification has been made available to such recipients. You are responsible for ensuring
  that the Source Code version remains available even if the Electronic Distribution
  Mechanism is maintained by a third party.
 <h3 id="section-3.3">3.3. Description of Modifications.</h3>
 <p>You must cause all Covered Code to which You contribute to contain a file documenting the
  changes You made to create that Covered Code and the date of any change. You must include a
  prominent statement that the Modification is derived, directly or indirectly, from Original
  Code provided by the Initial Developer and including the name of the Initial Developer in
  (a) the Source Code, and (b) in any notice in an Executable version or related documentation
  in which You describe the origin or ownership of the Covered Code.
 <h3 id="section-3.4">3.4. Intellectual Property Matters</h3>
 <h4 id="section-3.4-a">(a) Third Party Claims</h4>
 <p>If Contributor has knowledge that a license under a third party's intellectual property
  rights is required to exercise the rights granted by such Contributor under Sections
  <a href="#section-2.1">2.1</a> or <a href="#section-2.2">2.2</a>, Contributor must include a
  text file with the Source Code distribution titled "LEGAL" which describes the claim and the
  party making the claim in sufficient detail that a recipient will know whom to contact. If
  Contributor obtains such knowledge after the Modification is made available as described in
  Section <a href="#section-3.2">3.2</a>, Contributor shall promptly modify the LEGAL file in
  all copies Contributor makes available thereafter and shall take other steps (such as
  notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who
  received the Covered Code that new knowledge has been obtained.
 <h4 id="section-3.4-b">(b) Contributor APIs</h4>
 <p>If Contributor's Modifications include an application programming interface and Contributor
  has knowledge of patent licenses which are reasonably necessary to implement that
  <abbr>API</abbr>, Contributor must also include this information in the
  <strong class="very-strong">legal</strong> file.
 <h4 id="section-3.4-c">(c) Representations.</h4>
 <p>Contributor represents that, except as disclosed pursuant to Section 3.4
  (<a href="#section-3.4-a">a</a>) above, Contributor believes that Contributor's Modifications
  are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the
  rights conveyed by this License.
 <h3 id="section-3.5">3.5. Required Notices.</h3>
 <p>You must duplicate the notice in <a href="#exhibit-a">Exhibit A</a> in each file of the
  Source Code. If it is not possible to put such notice in a particular Source Code file due to
  its structure, then You must include such notice in a location (such as a relevant directory)
  where a user would be likely to look for such a notice. If You created one or more
  Modification(s) You may add your name as a Contributor to the notice described in
  <a href="#exhibit-a">Exhibit A</a>. You must also duplicate this License in any documentation
  for the Source Code where You describe recipients' rights or ownership rights relating to
  Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity
  or liability obligations to one or more recipients of Covered Code. However, You may do so
  only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You
  must make it absolutely clear than any such warranty, support, indemnity or liability
  obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer
  and every Contributor for any liability incurred by the Initial Developer or such Contributor
  as a result of warranty, support, indemnity or liability terms You offer.
 <h3 id="section-3.6">3.6. Distribution of Executable Versions.</h3>
 <p>You may distribute Covered Code in Executable form only if the requirements of Sections
  <a href="#section-3.1">3.1</a>, <a href="#section-3.2">3.2</a>,
  <a href="#section-3.3">3.3</a>, <a href="#section-3.4">3.4</a> and
  <a href="#section-3.5">3.5</a> have been met for that Covered Code, and if You include a
  notice stating that the Source Code version of the Covered Code is available under the terms
  of this License, including a description of how and where You have fulfilled the obligations
  of Section <a href="#section-3.2">3.2</a>. The notice must be conspicuously included in any
  notice in an Executable version, related documentation or collateral in which You describe
  recipients' rights relating to the Covered Code. You may distribute the Executable version of
  Covered Code or ownership rights under a license of Your choice, which may contain terms
  different from this License, provided that You are in compliance with the terms of this
  License and that the license for the Executable version does not attempt to limit or alter the
  recipient's rights in the Source Code version from the rights set forth in this License. If
  You distribute the Executable version under a different license You must make it absolutely
  clear that any terms which differ from this License are offered by You alone, not by the
  Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and
  every Contributor for any liability incurred by the Initial Developer or such Contributor as
  a result of any such terms You offer.
 <h3 id="section-3.7">3.7. Larger Works.</h3>
 <p>You may create a Larger Work by combining Covered Code with other code not governed by the
  terms of this License and distribute the Larger Work as a single product. In such a case,
  You must make sure the requirements of this License are fulfilled for the Covered Code.
 <h2 id="section-4">4. Inability to Comply Due to Statute or Regulation.</h2>
 <p>If it is impossible for You to comply with any of the terms of this License with respect to
  some or all of the Covered Code due to statute, judicial order, or regulation then You must:
  (a) comply with the terms of this License to the maximum extent possible; and (b) describe
  the limitations and the code they affect. Such description must be included in the
  <strong class="very-strong">legal</strong> file described in Section
  <a href="#section-3.4">3.4</a> and must be included with all distributions of the Source Code.
  Except to the extent prohibited by statute or regulation, such description must be
  sufficiently detailed for a recipient of ordinary skill to be able to understand it.
 <h2 id="section-5">5. Application of this License.</h2>
 <p>This License applies to code to which the Initial Developer has attached the notice in
  <a href="#exhibit-a">Exhibit A</a> and to related Covered Code.
 <h2 id="section-6">6. Versions of the License.</h2>
 <h3 id="section-6.1">6.1. New Versions</h3>
 <p>Netscape Communications Corporation ("Netscape") may publish revised and/or new versions
  of the License from time to time. Each version will be given a distinguishing version number.
 <h3 id="section-6.2">6.2. Effect of New Versions</h3>
 <p>Once Covered Code has been published under a particular version of the License, You may
  always continue to use it under the terms of that version. You may also choose to use such
  Covered Code under the terms of any subsequent version of the License published by Netscape.
  No one other than Netscape has the right to modify the terms applicable to Covered Code
  created under this License.
 <h3 id="section-6.3">6.3. Derivative Works</h3>
 <p>If You create or use a modified version of this License (which you may only do in order to
 apply it to code which is not already Covered Code governed by this License), You must (a)
 rename Your license so that the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", "MPL",
 "NPL" or any confusingly similar phrase do not appear in your license (except to note that
 your license differs from this License) and (b) otherwise make it clear that Your version of
 the license contains terms which differ from the Mozilla Public License and Netscape Public
 License. (Filling in the name of the Initial Developer, Original Code or Contributor in the
 notice described in <a href="#exhibit-a">Exhibit A</a> shall not of themselves be deemed to
 be modifications of this License.)
 <h2 id="section-7">7. <strong class="very-strong">Disclaimer of warranty</strong></h2>
 <p><strong class="very-strong">Covered code is provided under this license on an "as is"
  basis, without warranty of any kind, either expressed or implied, including, without
  limitation, warranties that the covered code is free of defects, merchantable, fit for a
  particular purpose or non-infringing. The entire risk as to the quality and performance of
  the covered code is with you. Should any covered code prove defective in any respect, you
  (not the initial developer or any other contributor) assume the cost of any necessary
  servicing, repair or correction. This disclaimer of warranty constitutes an essential part
  of this license. No use of any covered code is authorized hereunder except under this
  disclaimer.</strong>
 <h2 id="section-8">8. Termination</h2>
 <p id="section-8.1">8.1. This License and the rights granted hereunder will terminate
  automatically if You fail to comply with terms herein and fail to cure such breach
  within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which
  are properly granted shall survive any termination of this License. Provisions which, by
  their nature, must remain in effect beyond the termination of this License shall survive.
 <p id="section-8.2">8.2. If You initiate litigation by asserting a patent infringement
  claim (excluding declatory judgment actions) against Initial Developer or a Contributor
  (the Initial Developer or Contributor against whom You file such action is referred to
  as "Participant") alleging that:
 <ol type="a">
  <li id="section-8.2-a">such Participant's Contributor Version directly or indirectly
   infringes any patent, then any and all rights granted by such Participant to You under
   Sections <a href="#section-2.1">2.1</a> and/or <a href="#section-2.2">2.2</a> of this
   License shall, upon 60 days notice from Participant terminate prospectively, unless if
   within 60 days after receipt of notice You either: (i) agree in writing to pay
   Participant a mutually agreeable reasonable royalty for Your past and future use of
   Modifications made by such Participant, or (ii) withdraw Your litigation claim with
   respect to the Contributor Version against such Participant. If within 60 days of
   notice, a reasonable royalty and payment arrangement are not mutually agreed upon in
   writing by the parties or the litigation claim is not withdrawn, the rights granted by
   Participant to You under Sections <a href="#section-2.1">2.1</a> and/or
   <a href="#section-2.2">2.2</a> automatically terminate at the expiration of the 60 day
   notice period specified above.
  <li id="section-8.2-b">any software, hardware, or device, other than such Participant's
   Contributor Version, directly or indirectly infringes any patent, then any rights
   granted to You by such Participant under Sections 2.1(<a href="#section-2.1-b">b</a>)
   and 2.2(<a href="#section-2.2-b">b</a>) are revoked effective as of the date You first
   made, used, sold, distributed, or had made, Modifications made by that Participant.
 </ol>
 <p id="section-8.3">8.3. If You assert a patent infringement claim against Participant
  alleging that such Participant's Contributor Version directly or indirectly infringes
  any patent where such claim is resolved (such as by license or settlement) prior to the
  initiation of patent infringement litigation, then the reasonable value of the licenses
  granted by such Participant under Sections <a href="#section-2.1">2.1</a> or
  <a href="#section-2.2">2.2</a> shall be taken into account in determining the amount or
  value of any payment or license.
 <p id="section-8.4">8.4. In the event of termination under Sections
  <a href="#section-8.1">8.1</a> or <a href="#section-8.2">8.2</a> above, all end user
  license agreements (excluding distributors and resellers) which have been validly
  granted by You or any distributor hereunder prior to termination shall survive
  termination.
 <h2 id="section-9">9. <strong class="very-strong">Limitation of liability</strong></h2>
 <p><strong class="very-strong">Under no circumstances and under no legal theory, whether
  tort (including negligence), contract, or otherwise, shall you, the initial developer,
  any other contributor, or any distributor of covered code, or any supplier of any of
  such parties, be liable to any person for any indirect, special, incidental, or
  consequential damages of any character including, without limitation, damages for loss
  of goodwill, work stoppage, computer failure or malfunction, or any and all other
  commercial damages or losses, even if such party shall have been informed of the
  possibility of such damages. This limitation of liability shall not apply to liability
  for death or personal injury resulting from such party's negligence to the extent
  applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion
  or limitation of incidental or consequential damages, so this exclusion and limitation
  may not apply to you.</strong>
 <h2 id="section-10">10. <abbr title="United States">U.S.</abbr> government end users</h2>
 <p>The Covered Code is a "commercial item," as that term is defined in 48
  <abbr>C.F.R.</abbr> 2.101 (<abbr title="October">Oct.</abbr> 1995), consisting of
  "commercial computer software" and "commercial computer software documentation," as such
  terms are used in 48 <abbr>C.F.R.</abbr> 12.212 (<abbr title="September">Sept.</abbr>
  1995). Consistent with 48 <abbr>C.F.R.</abbr> 12.212 and 48 <abbr>C.F.R.</abbr>
  227.7202-1 through 227.7202-4 (June 1995), all <abbr>U.S.</abbr> Government End Users
  acquire Covered Code with only those rights set forth herein.
 <h2 id="section-11">11. Miscellaneous</h2>
 <p>This License represents the complete agreement concerning subject matter hereof. If
  any provision of this License is held to be unenforceable, such provision shall be
  reformed only to the extent necessary to make it enforceable. This License shall be
  governed by California law provisions (except to the extent applicable law, if any,
  provides otherwise), excluding its conflict-of-law provisions. With respect to
  disputes in which at least one party is a citizen of, or an entity chartered or
  registered to do business in the United States of America, any litigation relating to
  this License shall be subject to the jurisdiction of the Federal Courts of the
  Northern District of California, with venue lying in Santa Clara County, California,
  with the losing party responsible for costs, including without limitation, court
  costs and reasonable attorneys' fees and expenses. The application of the United
  Nations Convention on Contracts for the International Sale of Goods is expressly
  excluded. Any law or regulation which provides that the language of a contract
  shall be construed against the drafter shall not apply to this License.
 <h2 id="section-12">12. Responsibility for claims</h2>
 <p>As between Initial Developer and the Contributors, each party is responsible for
  claims and damages arising, directly or indirectly, out of its utilization of rights
  under this License and You agree to work with Initial Developer and Contributors to
  distribute such responsibility on an equitable basis. Nothing herein is intended or
  shall be deemed to constitute any admission of liability.
 <h2 id="section-13">13. Multiple-licensed code</h2>
 <p>Initial Developer may designate portions of the Covered Code as
  "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits
  you to utilize portions of the Covered Code under Your choice of the <abbr>MPL</abbr>
  or the alternative licenses, if any, specified by the Initial Developer in the file
  described in <a href="#exhibit-a">Exhibit A</a>.
 <h2 id="exhibit-a">Exhibit A - Mozilla Public License.</h2>
 <pre>"The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in
compliance with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/

Software distributed under the License is distributed on an "AS IS"
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
License for the specific language governing rights and limitations
under the License.

The Original Code is ______________________________________.

The Initial Developer of the Original Code is ________________________.
Portions created by ______________________ are Copyright (C) ______
_______________________. All Rights Reserved.

Contributor(s): ______________________________________.

Alternatively, the contents of this file may be used under the terms
of the _____ license (the  "[___] License"), in which case the
provisions of [______] License are applicable instead of those
above. If you wish to allow use of your version of this file only
under the terms of the [____] License and not to allow others to use
your version of this file under the MPL, indicate your decision by
deleting the provisions above and replace them with the notice and
other provisions required by the [___] License. If you do not delete
the provisions above, a recipient may use your version of this file
under either the MPL or the [___] License."</pre>
 <p>NOTE: The text of this Exhibit A may differ slightly from the text of
  the notices in the Source Code files of the Original Code. You should
  use the text of this Exhibit A rather than the text found in the
  Original Code Source Code for Your Modifications.
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h1>Text goes here</h1>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
GLOBALPLATFORM LICENSE AGREEMENT 
This License Agreement ("the Agreement") is a legal agreement between you and 
GlobalPlatform, Inc., a Delaware corporation with a place of business at 900 Metro Center 
Boulevard, Foster City, California, 94404 ("GlobalPlatform"), which owns or licenses the 
Chip Card Technology, Software and Specifications relating to chip-based card products, as 
listed in the "Technical Downloads" page of the GlobalPlatform web site. As used in this 
Agreement: 
"You" or "you" means the company, entity or individual ("Licensee") that is acquiring a 
license under this Agreement. 
"Affiliate" is an entity that directly or indirectly controls, is controlled by, or is under common 
control with another entity, so long as such control exists. "Control" means beneficial 
ownership of more than fifty percent of the voting stock or equity in an entity. 
"End User" is a company, entity or individual that is the ultimate purchaser, either directly or 
indirectly, from Licensee or an Affiliate of Licensee, of a Compliant Product (as defined 
hereinafter). 
"Chip Card Technology" means each of the GlobalPlatform technologies listed in the 
"Technical Downloads" page of the GlobalPlatform web site, and Updates thereto (as defined 
hereinafter). 
"Software" means the software listed in the "Technical Downloads" page of the 
GlobalPlatform web site, and Updates thereto. 
"Specifications" means the specifications listed in the "Technical Downloads" page of the 
GlobalPlatform web site, and Updates thereto. 
"Update(s)" means any update, revision, or extension of some or all of the Chip Card 
Technology, Software, and Specifications. 
"Compliant Product" is a product or service that complies with one or more of the 
Specifications. 
You must accept all of the terms of this Agreement before viewing, downloading, taking 
possession of, or otherwise using the information governed by this Agreement. By clicking on 
the "ACCEPT" button below, you are consenting to be bound by and are becoming a party to 
this Agreement, and you are representing that you are authorized to bind your company, as 
identified by you in the Acceptance Form at the end of this Agreement, as a party to this 
Agreement. If you do not agree to all of the terms of this Agreement, click the "DO NOT 
ACCEPT" button at the end of this Agreement. 
1. GRANT OF LICENSE.  
1.1 License. GlobalPlatform hereby grants to Licensee, its Affiliates and End Users, a non-
exclusive, perpetual (except as provided for herein), royalty-free, fully paid-up, worldwide 
license in the Chip Card Technology and the Software for purposes of creating, developing, 
testing, demonstrating, using, producing, licensing, distributing, copying, selling and 
otherwise exploiting Compliant Products, and the right to reproduce and distribute the 
Specifications, subject to the conditions set forth in this Agreement.  
1.2 Modifications. Licensee, its Affiliates and End Users, shall not modify the Specifications. 
Licensee and its Affiliates may modify the Software, but only to the extent the Software, as 
modified, is used as or in connection with a product or service which is a Compliant Product.  
1.3 Sublicensing. Licensee, its Affiliates and End Users, shall not sublicense any of the 
Specifications. Licensee and its Affiliates may sublicense, through one or more 
intermediaries, the Software, to the extent necessary to create, develop, test, demonstrate, use, 
produce, license, distribute, copy, sell or otherwise exploit any Compliant Products, and may 
disclose the Specifications and Software to third party developers, subject to the conditions 
set forth in this Agreement. 
2. INTELLECTUAL PROPERTY. Licensee acknowledges and agrees that, as between 
Licensee and GlobalPlatform, all Chip Card Technology shall at all times be the exclusive 
property of GlobalPlatform, and nothing in this Agreement shall be construed to convey to 
Licensee any ownership interest in the Chip Card Technology, Software or Specifications. 
Licensee shall be the owner of any derivative works it develops based on the Chip Card 
Technology, including commercial implementations of the Software, but Licensee's 
ownership and use of such derivative works shall be subject in all respects to GlobalPlatform's 
ownership of the underlying Chip Card Technology and the terms and conditions upon which 
Licensee may use the underlying Chip Card Technology under this Agreement. 
GlobalPlatform acknowledges and agrees that, as between Licensee and GlobalPlatform, 
Compliant Products developed by Licensee shall be the exclusive property of Licensee. 
3. SUPPORT AND MAINTENANCE. GlobalPlatform shall have no obligation to Licensee, 
its Affiliates or End Users to support or maintain the Chip Card Technology. 
4. TERMINATION OF LICENSE.  
4.1 Breach. In the event of a breach of this Agreement by Licensee or its Affiliates, 
GlobalPlatform shall give Licensee written notice and an opportunity to cure. If the breach is 
not cured within thirty (30) days after written notice, or if the breach is of a nature that cannot 
be cured, then GlobalPlatform may immediately or thereafter terminate the licenses granted in 
this Agreement; provided, however, that Licensee, its Affiliates and End Users shall be 
permitted to continue to use Compliant Products created or obtained prior to such termination, 
and to use the Chip Card Technology, Specifications and Software as they existed on the date 
of such termination (but not subsequent Updates thereto), in a manner not inconsistent with 
the terms of this Agreement.  
4.2 Notice. Licensee may immediately terminate the licenses granted in this Agreement upon 
written notice to GlobalPlatform.  
4.3 Litigation. GlobalPlatform may terminate all or part of the licenses granted in this 
Agreement in the event Compliant Products sold by Licensee or its Affiliates give rise to a 
lawsuit against an Indemnified Party (as defined in Section 7 below), containing at least one 
claim predicated upon manufacture, use or sale of the Compliant Products and (a) for which 
the indemnification in Section 7 does not apply, (b) for which Licensee asserts that such 
indemnification does not apply, or (c) in the event that, in GlobalPlatform's reasonable 
opinion, Licensee does not have the resources to reasonably fulfill its obligations under 
Section 7. Notwithstanding the foregoing, Licensee, its Affiliates and End Users may continue 
to use the Chip Card Technology, Specifications and Software if Licensee agrees to assume 
the cost of defending such lawsuit and if, in GlobalPlatform's reasonable opinion, Licensee 
has the resources to reasonably fulfill its obligations under Section 7. 
5. NO WARRANTIES. Licensee acknowledges and agrees that the neither the Chip Card 
Technology nor the Software are necessarily ready for commercial use and that 
GlobalPlatform has not necessarily approved, registered, tested or certified their use with any 
payment or chip card system. GlobalPlatform makes no representations or warranties 
whatsoever regarding the Chip Card Technology, the Software or any derivative works 
thereof and is granting the licenses in Section 1 of this Agreement on an "AS-IS", "WHERE 
IS", basis, "WITH ALL FAULTS" known and unknown. WITHOUT LIMITING THE 
GENERALITY OF THE FOREGOING, GLOBALPLATFORM HEREBY DISCLAIMS 
ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, 
ANY IMPLIED WARRANTY OF FITNESS FOR A PARTICULAR PURPOSE, ANY 
IMPLIED WARRANTY OF NON-INFRINGEMENT AND ANY IMPLIED WARRANTY 
OF MERCHANTABILITY. 
6. NO DAMAGES. TO THE EXTENT PERMITTED BY APPLICABLE LAW, NEITHER 
PARTY SHALL BE LIABLE TO THE OTHER PARTY OR ANY THIRD PARTY FOR 
ANY DAMAGES UNDER ANY THEORY OF LAW, INCLUDING, WITHOUT 
LIMITATION, ANY SPECIAL, CONSEQUENTIAL, INCIDENTAL, OR PUNITIVE 
DAMAGES, NOR ANY DAMAGES FOR LOSS OF BUSINESS PROFITS, BUSINESS 
INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER MONETARY 
LOSS, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
7. INDEMNIFICATION. Licensee shall indemnify, defend and hold harmless GlobalPlatform 
and its officers, directors, employees and agents (each, an "Indemnified Party") from all 
losses, costs, damages, claims and other expenses (including reasonable attorneys' fees) 
arising out of any claim by any third party in connection with use by Licensee, its Affiliates or 
End Users, of the Chip Card Technology or the Software, including, without limitation, 
claims asserting that any Licensee product or service infringes the patent, copyright, trade 
secret or other intellectual property anywhere in the world of such third party (each, a 
"Claim"); provided, however, that the indemnity set forth in this Section 7 shall not apply to 
the extent any Claim necessarily results from Licensee's (a) compliance with one or more of 
the Specifications, or (b) use of the Software in the form supplied by GlobalPlatform 
hereunder. 
8. EXPORT REGULATIONS. The Chip Card Technology, including technical data, may be 
subject to U.S. export control laws, including the U.S. Export Administration Act and its 
associated regulations, and may be subject to export or import regulations in other countries. 
Licensee agrees to comply strictly with all such regulations and acknowledges that it has the 
responsibility to obtain licenses to export, re-export, or import the Chip Card Technology. 
9. RESTRICTED RIGHTS. Use, duplication or disclosure by the United States government is 
subject to the restrictions as set forth in the Rights in Technical Data and Computer Software 
Clauses in DFARS 252.227-7013 (1) (ii) and FAR 52.227-19(a) through (d) as applicable. 
10. MISCELLANEOUS.  
10.1 Notices. All notices required under this Agreement shall be in writing. Notice shall be 
deemed given when delivered personally to an authorized representative or one (1) day after 
deposit for overnight delivery upon written verification of receipt. Notices and 
correspondence to GlobalPlatform should be sent to the attention of the Secretariat at the 
address shown above. Notices and correspondence to Licensee should be sent to the person or 
address identified by Licensee in the form completed below in connection with Licensee's 
acceptance of this Agreement.  
10.2 Governing Law. This Agreement shall be construed and interpreted under the internal 
laws of the United States and the State of Delaware, without giving effect to its principles of 
conflict of law.  
10.3 Entire Agreement. This Agreement constitutes the entire agreement and understanding 
between GlobalPlatform and Licensee regarding the subject matter contained herein. No 
modification or waiver of this Agreement shall be binding unless it is in writing and signed by 
both parties. If any provision of this Agreement is invalid, illegal or unenforceable, the parties 
shall omit it from the Agreement to the extent required. The remaining terms shall remain in 
full force and effect. This Agreement supersedes any and all prior agreements between 
GlobalPlatform and Licensee regarding Licensee's right to use the Chip Card Technology, or 
any prior versions thereof. 

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Dialog - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Dialog - Reference Documentation</h1>
        <p>
            <p>Class implementing simple user dialogs for scripts</p>
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Dialog() constructor</a>
            </li>
            <li>
                <a href="#prompt">prompt()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>java.swing.JFrame</td>
                <td>frame</td>
                <td>The parent for dialogs</td>
            </tr>
        </table>
        <h2 id="prompt">prompt()</h2>
        <h3>Prototype</h3>
        <p class="signature">String prompt(message)</p>
        <p class="signature">String prompt(message, defaultValue)</p>
        <p class="signature">String prompt(message, defaultValue, selectionList)</p>
        <p class="signature">String prompt(message, defaultValue, selectionList, fileFilter)</p>
        <h3>Description</h3>
                    
        <p>Show a modal dialog and prompt user to enter or select a value.</p>
                    
        <p>The variant with a single argument shows the message and allows the user
               to press "OK" or "Cancel".</p>
                    
        <p>Specifying a default value allows the user to enter some data.</p>
                    
        <p>Specifying a default value "*" allows the user to enter a PIN or password.
               The PIN or password entered is returned as String. For enhanced security use "**" as default
               values in which case the resulting PIN or password is returned as ByteString. The ByteString can be
               zeroized using the clear() method after the entered value has been processed.</p>
                    
        <p>A selection list extends the text entry with a drop-down list of
               possible options. The user may still enter a different value.</p>
                    
        <p>Specifying a file filter will create a "Browse..." button that allows
               the user to pick a name from a file selection dialog. Selection of
               files and directories are allowed.</p>
                    
        <p>The file filter can be specified as regular expression ("/.*\.txt/") or simple
               file extension (e.g. "txt", ".txt" or "*.txt").</p>
                    
        <p>The file filter is only applied to file names, but not to directories.</p>
                    
        <p>When a file filter is specified, the selectionList parameter may be null.</p>
                    
        <p>The message argument may be plain text or well formed HTML code.</p>
                    
        <p>If the user aborts the dialog, then null is returned.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>message</td>
                <td>The text to display in the dialog</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>defaultValue</td>
                <td>The value to preset the input field with</td>
            </tr>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>selectionList</td>
                <td>List of values the user may select from or null</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>fileFilter</td>
                <td>File filter for file selection dialog</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>The value "OK" or the entered value or null if cancel was pressed</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


var s = Dialog.prompt("Hello World. Press OK");
assert(s == "OK");

var s = Dialog.prompt("Hello World. Press CANCEL");
assert(s == null);

var s = Dialog.prompt("Hello World. Enter 'OK'", "");
assert(s == "OK");

var s = Dialog.prompt("Enter password and press 'OK'", "*");
assert(typeof(s) == "string");

var s = Dialog.prompt("Enter password and press 'OK'", "**");
assert(s instanceof ByteString);

var s = Dialog.prompt("Hello World. Press CANCEL", "");
assert(s == null);

var s = Dialog.prompt("&lt;html&gt;&lt;p&gt;Hello World.&lt;/p&gt;&lt;p&gt;Enter &lt;b&gt;'OK'&lt;/b&gt;&lt;/p&gt;&lt;/html&gt;", "This is a very long text to see if all of it is displayed correctly. Replace this with 'OK'");
assert(s == "OK");

var s = Dialog.prompt("Hello World. Select 'OK'", "", ["A", "OK", "C"]);
assert(s == "OK");

var s = Dialog.prompt("Hello World. Select 'OK'", "Not OK", ["A", "OK", "C"]);
assert(s == "OK");

var s = Dialog.prompt("Hello World. Select a file", "c:/tmp", null, "*.txt");
assert(s != null);

print("Selected File : " + s);

var s = Dialog.prompt("Hello World. Press CANCEL", "c:/tmp", null, "*.txt");
assert(s == null);

var s = Dialog.prompt("Hello World. Select a file", "", ["c:/tmp", "d:/tmp"], "*.txt");
assert(s != null);

print("Selected File : " + s);

var s = Dialog.prompt("Hello World. Select a file", "", ["c:/tmp", "d:/tmp"], "/.*\.txt/");
assert(s != null);

print("Selected File : " + s);

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>PKCS11Provider - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>PKCS11Provider - Reference Documentation</h1>
        <p>Class implementing support for cryptographic token with PKCS#11 interface</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">PKCS11Provider() constructor</a>
            </li>
            <li>
                <a href="#getSlots">getSlots()</a>
            </li>
            <li>
                <a href="#initToken">initToken()</a>
            </li>
            <li>
                <a href="#getKeyStore">getKeyStore()</a>
            </li>
            <li>
                <a href="#cleanup">cleanup()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>String</td>
                <td>providerName</td>
                <td>Name under which this provider is registered</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">PKCS11Provider(String providerName)</p>
        <h3>Description</h3>
        <p>Load and access provider module.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>providerName</td>
                <td>Name and path of .DLL or shared object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// var p = new PKCS11Provider("c:/programme/smart card bundle/opensc-pkcs11.dll");
var p = new PKCS11Provider("C:/usr/local/lsm/bin/lsmpkcs11.dll");
// var p = new PKCS11Provider("C:/programme/opensc/bin/pkcs11-spy.dll");

</pre>
        <h2 id="getSlots">getSlots()</h2>
        <h3>Prototype</h3>
        <p class="signature">Array getSlots()</p>
        <h3>Description</h3>
                    
        <p>Return an array of native PKCS11Slot objects.</p>
        	
        <p>The objects in the array are of type org.opensc.pkcs11.wrap.PKCS11Slot.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Array</code>
                </td>
                <td>Array of native PKCS11Slot objects</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var slots = p.getSlots();
var slot = 0;

for (var i = 0; i &lt; slots.length; i++) {
	var s = slots[i];
	print("Slot #" + s.getId());
	print(" Description       : " + s.getDescription());
	print(" Manufacturer      : " + s.getManufacturer());
	print(" Hardware Version  : " + s.getHardwareVersion());
	print(" Firmware Version  : " + s.getFirmwareVersion());
	print(" isTokenPresent    : " + s.isTokenPresent());
	print(" isHardwareDevice  : " + s.isHardwareDevice());
	print(" isRemovableDevice : " + s.isRemovableDevice());
	
	if (s.isTokenPresent()) {
		var label = s.getTokenLabel();

		if (label == "SBOXTEST1") {
			print("Found " + label);
			slot = s.getId();
		}
	
		print("  Token :");
		print("  Label                     : " + label);
		print("  Manufacturer              : " + s.getTokenManufacturer());
		print("  Model                     : " + s.getTokenModel());
		print("  Serial Number             : " + s.getTokenSerialNumber());
		print("  Max PIN Length            : " + s.getTokenMaxPinLen());
		print("  Min PIN Length            : " + s.getTokenMinPinLen());
		print("  hasTokenProtectedAuthPath : " + s.hasTokenProtectedAuthPath());
		
		var mechs = s.getMechanisms();
		for (var j = 0; j &lt; mechs.length; j++) {
			print("   Mechanisms #" + j);
			var m = mechs[j];
			print("   Type         : " + m.getType() + " (" + m.getTypeName() + ")");
			print("   Min Key Size : " + m.getMinKeySize());
			print("   Max Key Size : " + m.getMaxKeySize());
			print("   Flags        : " + m.getFlags());
		}
	}
}

</pre>
        <h2 id="initToken">initToken()</h2>
        <h3>Prototype</h3>
        <p class="signature">initToken(Number slotId, String soPIN, String label)</p>
        <h3>Description</h3>
                    
        <p>Initialize token in referenced slot and set the Security Officer (SO) PIN and label.</p>
                    
        <p>If the token is already initialized, then the  SO PIN must match the tokens SO PIN.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>slotId</td>
                <td>The slot id of the slot to initialize</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>soPIN</td>
                <td>The Security Officers PIN</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>label</td>
                <td>The tokens label</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

p.initToken(slot, "abcdefgh", "SBOXTEST1");

</pre>
        <h2 id="getKeyStore">getKeyStore()</h2>
        <h3>Prototype</h3>
        <p class="signature">KeyStore getKeyStore(Number slot)</p>
        <p class="signature">KeyStore getKeyStore(Number slot, String userPIN)</p>
        <h3>Description</h3>
                    
        <p>Obtain the key store for a token in the selected slot.</p>
                    
        <p>The key store can be used to create key objects that
               represent keys in the token.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>slot</td>
                <td>Slot number</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>userPIN</td>
                <td>User PIN for token</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>KeyStore</code>
                </td>
                <td>KeyStore object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var ks = p.getKeyStore(slot, "12345678");

var aliases = ks.getAliases();
for (var i = 0; i &lt; aliases.length; i++) {
	print(aliases[i]);
}

var k = new Key();
k.setType(Key.PRIVATE);
k.setID(aliases[0]);

ks.getKeyFromKeyStore(k);

var c = new Crypto(p.providerName);

var message = new ByteString("Hello World", ASCII);
var signature = c.sign(k, Crypto.RSA, message);

print(signature);


</pre>
        <h2 id="cleanup">cleanup()</h2>
        <h3>Prototype</h3>
        <p class="signature">cleanup()</p>
        <h3>Description</h3>
        	
        <p>Cleanup provider and release used system resources.</p>
        	
        <p>This will be done automatically when the Java Runtime terminates.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

p.cleanup();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>X509 - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>X509 - Reference Documentation</h1>
        <p>
            <p>Class implementing support for X509 certificates</p>
                             
            <p>This class provides a wrapper for java.security.cert.X509 objects. All methods
                 from this Java class are available through the LiveConnect mechanism.</p>
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">X509() constructor</a>
            </li>
            <li>
                <a href="#getNative">getNative()</a>
            </li>
            <li>
                <a href="#getBytes">getBytes()</a>
            </li>
            <li>
                <a href="#getSerialNumber">getSerialNumber()</a>
            </li>
            <li>
                <a href="#getSerialNumberString">getSerialNumberString()</a>
            </li>
            <li>
                <a href="#getSubjectKeyIdentifier">getSubjectKeyIdentifier()</a>
            </li>
            <li>
                <a href="#getAuthorityKeyIdentifier">getAuthorityKeyIdentifier()</a>
            </li>
            <li>
                <a href="#getNotBefore">getNotBefore()</a>
            </li>
            <li>
                <a href="#getNotAfter">getNotAfter()</a>
            </li>
            <li>
                <a href="#getIssuerDNString">getIssuerDNString()</a>
            </li>
            <li>
                <a href="#getSubjectDNString">getSubjectDNString()</a>
            </li>
            <li>
                <a href="#getOCSPResponderURL">getOCSPResponderURL()</a>
            </li>
            <li>
                <a href="#getPublicKey">getPublicKey()</a>
            </li>
            <li>
                <a href="#verify">verify()</a>
            </li>
            <li>
                <a href="#verifyWith">verifyWith()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">X509(ByteString dercert)</p>
        <p class="signature">X509(String certfile)</p>
        <h3>Description</h3>
        Create certificate object from DER encoded certificate or read from file
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>dercert</td>
                <td>DER encoded certificate</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>certfile</td>
                <td>
                    <p>Filename of file containing DER encoded certificate</p>
                                      
                    <p>Unless an absolute file name is given, the path is relative to the location of the
                  script in which the constructor is called.</p>
                </td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The certificate has an invalid or unrecognized structure</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");

print("Issuer  : " + root.getIssuerDNString());
print("Subject : " + root.getSubjectDNString());

bs = new ByteString("\
MIIGGzCCBAOgAwIBAgIRAS31fRUU00bNe4A4sqZ44wQwDQYJKoZIhvcNAQEFBQAw \
VDESMBAGA1UEAwwJUm9vdC1DQSAxMTEwLwYDVQQKDChURVNUIC0gSGF1cHR2ZXJi \
YW5kIMO2c3RlcnIuIFNvemlhbHZlcnMuMQswCQYDVQQGEwJBVDAeFw0wNTA2MjMx \
NzI3MDJaFw0zMDA2MjMxNzI3MDJaMFYxFDASBgNVBAMMC1N5c3RlbSBDQSAxMTEw \
LwYDVQQKDChURVNUIC0gSGF1cHR2ZXJiYW5kIMO2c3RlcnIuIFNvemlhbHZlcnMu \
MQswCQYDVQQGEwJBVDCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKWL \
/7+RLD7eqAiqbFtN/3sWgw5nfA3G6vYcVvV4CzXFlzJVk6xtiu/sYlSQK18tbyF4 \
7DfNuHANV24lutFOoGLuhJkSWbqONcNvplD7a+XIniAdSgSBxcJnXvZ4xJ+Bd5TH \
U4CXvcqDGpEaEAgnhpiVPoBMHK/r1eMrLsb9+HryCKBrC0dzVPPKX+HAz2wj757x \
KdlrBva7dFz5pbDDZmifmTko4fj4DQS5quu4MVq2vs1D9km2BZXCgU5Fo6OWoL0a \
U3B4amLzNA981E2niLovz+18DB340/PlgctE6FaM8XQv9Omoe/nUqImM/J+T8uIp \
kFCy+1cuhXGRpqRnHvEq88COsvDFI6vKfwd9Duko+IjUzpq3MIa2bXURBU3kDD79 \
sl1i1uy9Sx6YtwTZBoPIQZP+7WjlZnT4nBpJl2r0qKFKJH3nBJVntlzlSna1gc4u \
HZBkvrfDnLG/RGGBsiqkzdx0myM8mON/veLbY5Nd+SUBm1bWAw0BSbz+3jBtHQID \
AQABo4IBZDCCAWAwEwYDVR0jBAwwCoAIRtDR1WyRFs4wEQYDVR0OBAoECEvRRLys \
X0iFMA4GA1UdDwEB/wQEAwICBDAxBggrBgEFBQcBAQQlMCMwIQYIKwYBBQUHMAGG \
FWh0dHA6Ly8xNDkuMjM5LjE2LjIwOTCB3gYDVR0fBIHWMIHTMIHQoHOgcYZvbGRh \
cDovLzE0OS4yMzkuMTYuMjA5L289VEVTVCUyMC0lMjBIYXVwdHZlcmJhbmQlMjAl \
ZjZzdGVyci4lMjBTb3ppYWx2ZXJzLixjPUFUP2NlcnRpZmljYXRlUmV2b2NhdGlv \
bkxpc3Q7YmluYXJ5olmkVzBVMRMwEQYDVQQDDApDUkwtU2lnbmVyMTEwLwYDVQQK \
DChURVNUIC0gSGF1cHR2ZXJiYW5kIMO2c3RlcnIuIFNvemlhbHZlcnMuMQswCQYD \
VQQGEwJBVDASBgNVHRMBAf8ECDAGAQH/AgEAMA0GCSqGSIb3DQEBBQUAA4ICAQAY \
P81wkoVpuE6Dtg72snt2KnwURfI1KAD+WgDBKLcSUD+uO2ks7CpRWaqD5WW47lQD \
KsGwLyRmwEfmNBPh15TMYkTvynUwD3WBaPPr59Hy7QrUcdRU511my0CnS3W+2L4a \
oLCuyRvlozuIhBHCfSKsYFZwHrT90J+B9NFnlWCGsxg0xsKpatcXsrMOQTlX3dOl \
5pu9KEoKlryZArD7UDBqMAqKQ9srx1a23AJKREFyJ6a4aW/voZvpoHMsQQPbm8xb \
vQPZaUUqY7R9g/9ZgVdeDrjEJU8qtptSL1ixVbvmpKM0g+G4tda83VfVY5qeto6E \
QLmst4yNA/uv5MxCtEu/DthxUScGkY1erV6LMb97u4m4mx87SxKPBhCdZx76BEgU \
t0bLFAlG63h1bZ3UFcoDR3PSjF1QwUPO6DroCMVpUYRGnli123KQ63lKCOxQqwl+ \
te7x3uEWKgN8FwUKCLYGnBIiBA2c7igRiyKaOon+43kYt+GAyBvOdH1n/EjHQVHE \
h3xwWNCsiAn6XFjlL61i0r5dshBl+rWWyUbNpHXqHuPnm8Zn37DXwmvxU9qdc0TA \
Y8M0uMYAw1rkDoo2zGb2nxAbmmp7L8J2cFE/6TJ6R7gdxY/0uwaIdRHBr844kscO \
i0dKmGsaCPxCVq5venNSatNMEvOgyEloLGqoq3S+xQ==", BASE64);

ca = new X509(bs);

print("Issuer  : " + ca.getIssuerDNString());
print("Subject : " + ca.getSubjectDNString());

</pre>
        <h2 id="getNative">getNative()</h2>
        <h3>Prototype</h3>
        <p class="signature">java.security.X509Certificate getNative()</p>
        <h3>Description</h3>
        <p>Return underlying native java.security.X509Certificate object. All methods of the
                     Java object are available through the LiveConnect mechanism.</p>
                             
        <p>For methods with return type byte[], as ByteString object is created.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>java.security.X509Certificate</code>
                </td>
                <td>Native Java object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var root = new X509("root.cer");
var ncert = root.getNative();
print("Version: " + ncert.getVersion());

</pre>
        <h2 id="getBytes">getBytes()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getBytes()</p>
        <h3>Description</h3>
        Return certificate in encoded format
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Encoded certificate</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");
bs = root.getBytes();
root = new X509(bs);

print("Subject : " + root.getSubjectDNString());

</pre>
        <h2 id="getSerialNumber">getSerialNumber()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getSerialNumber()</p>
        <h3>Description</h3>
        Return the serial number.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>serial number</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");

serial = root.getSerialNumber();

print("Serial number  : " + serial);

</pre>
        <h2 id="getSerialNumberString">getSerialNumberString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String getSerialNumberString()</p>
        <h3>Description</h3>
        Return the serial number as decimal strin.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>Serial number as decimal string</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");

serial = root.getSerialNumberString();

print("Serial number  : " + serial);

</pre>
        <h2 id="getSubjectKeyIdentifier">getSubjectKeyIdentifier()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getSubjectKeyIdentifier()</p>
        <h3>Description</h3>
        Return the RFC 5280 type 1 unique identifier for the subject's public key (SHA-1 of encoded public key).
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>SubjectPublicKey value from extension or null if not defined</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("ca.cer");

spkid = root.getSubjectKeyIdentifier();

print("SubjectPublicKeyIdentifier : " + spkid);

assert((new ByteString("44 2A FB B6 64 C5 38 0F", HEX)).equals(spkid));

</pre>
        <h2 id="getAuthorityKeyIdentifier">getAuthorityKeyIdentifier()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getAuthorityKeyIdentifier()</p>
        <h3>Description</h3>
        Return the unique identifier for the issuer's public key.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>AuthorityPublicKey value from extension or null if not defined</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("ca.cer");

apkid = root.getAuthorityKeyIdentifier();

print("AuthorityPublicKeyIdentifier : " + apkid);

</pre>
        <h2 id="getNotBefore">getNotBefore()</h2>
        <h3>Prototype</h3>
        <p class="signature">Date getNotBefore()</p>
        <h3>Description</h3>
        Return the time from which on the certificate is valid.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Date</code>
                </td>
                <td>The effective date of the certificate</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

cert = new X509("ca.cer");
print(cert);
print("Not before : " + cert.getNotBefore());

</pre>
        <h2 id="getNotAfter">getNotAfter()</h2>
        <h3>Prototype</h3>
        <p class="signature">Date getNotAfter()</p>
        <h3>Description</h3>
        Return the time from which on the certificate is expired.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Date</code>
                </td>
                <td>The expiration date of the certificate</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

cert = new X509("ca.cer");

print("Not after : " + cert.getNotAfter());

</pre>
        <h2 id="getIssuerDNString">getIssuerDNString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String getIssuerDNString()</p>
        <h3>Description</h3>
        Return a string containing the Issuer Distinguished Name in a human readable form.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>String containing the Issuer DN</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");

dn = root.getIssuerDNString();
assert(dn);

print("Issuer  : " + dn);

</pre>
        <h2 id="getSubjectDNString">getSubjectDNString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String getSubjectDNString()</p>
        <h3>Description</h3>
        Return a string containing the Subject Distinguished Name in a human readable form.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>String containing the Subject DN</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");

var dn = root.getSubjectDNString();
assert(dn);

print("Subject : " + dn);

</pre>
        <h2 id="getOCSPResponderURL">getOCSPResponderURL()</h2>
        <h3>Prototype</h3>
        <p class="signature">String getOCSPResponderURL()</p>
        <h3>Description</h3>
        Return a string containing the URL of the OCSP responder for this certificate.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>String containing the OCSP Responder URL</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");

url = root.getOCSPResponderURL();
assert(url);

print("OCSP Responder URL : " + url);

</pre>
        <h2 id="getPublicKey">getPublicKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">Key getPublicKey()</p>
        <p class="signature">Key getPublicKey(Key template)</p>
        <h3>Description</h3>
        <p>Extract public key from certificate.</p>
                             
        <p>If no template is given, then a new Key object is created. If the key template
                     is provided, then it will be filled with the appropriate values.</p>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>New key object or object provided as template.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_KEY</td>
                <td>The key could not be extracted from the certificate</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var root = new X509("root.cer");

var key = root.getPublicKey();
assert(key instanceof Key);

assert(key.getType() == Key.PUBLIC);
assert(key.getSize() == 4096);
assert(key.getComponent(Key.MODULUS).toString(HEX) ==
	"D0FC391648CD018C07FD9A9EFCBB0BC88C6D6A72575C4862" +
	"6A632BAE0E6E8091B22CDEFD952BA19E4AF06B2380C3DCE1" +
	"0678FBDD408B7E2E9D8341760079761161C42A0917143E26" +
	"A787B74426CEC430A55E71DEDB391A501696DF116E21D270" +
	"6F0B88CC4AEEA2EC5E8032F5E9FA45B6A4DB51346FAC26AF" +
	"FCB694A6067C0D2F2C9488489BEA5ED0D18B0ABC98A526B2" +
	"62CDE334873AEC73CF57570A8508BCABE224ED97D84F81B6" +
	"FF8F1639E8245FDF143664FACF301DB53640262B9F79FFAD" +
	"12619EAA5A54473D82E8EF876270DAAA5CD57D8557CAA23C" +
	"64C1FCB508E11261EA65DF4667FD168E797D6B7FC01E668A" +
	"3172F906D5A8E45CEB9A7FB8C34FF44230F6DB6CD7415D52" +
	"9879447908E13E09A5EC323C4C6E0F9FCF3B0E426C76C140" +
	"0B3AE3945D03DF7037697FC47B944B7DF1D5DFD18F600579" +
	"0CCB8B82F1D4061F0C837959CF0F091BF072F6F8CA552DFD" +
	"CF5D998B020025C986BA8934F7B5BC277F12313CE2BA533C" +
	"84285F95C7ED028D5A4D0CEECE2708AE1C024D27C26627B2" +
	"F413D9B83C6C82381FD1CBD181A8D453000897F985252BF2" +
	"9FEC0078BBCB8704E5856B8D46E10C4AB9B63B1A26F68C1B" +
	"8F9EE48B1B73005ACCC330C4D20EE3479249FAF2CAD17B6C" +
	"383330549C723C7695D6DF6170E56866FE4F598C8BF3F691" +
	"04DD5C0CC1BD82FC398B1FA7AF4D5EB4EEC06652CE1DBECE" +
	"2F1E47E966E60F45");
assert(key.getComponent(Key.EXPONENT).toString(HEX) == "010001");


var key = root.getPublicKey(key);
assert(key instanceof Key);
assert(key.getType() == Key.PUBLIC);

var root = new X509("ecdsacert.cer");
var key = root.getPublicKey();
assert(key instanceof Key);
assert(key.getType() == Key.PUBLIC);
assert(key.getSize() == 192);
assert(key.getComponent(Key.ECC_QX).toString(HEX) ==
            "ED5A2BEB600D48E3B3301AE29DCCFA2A2AD85733AD5F09B0");
assert(key.getComponent(Key.ECC_QY).toString(HEX) ==
            "6DC91E96758FA281D45787759FA5BEA1A4E2AD7564A062F4");

</pre>
        <h2 id="verify">verify()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void verify(Key publicKey)</p>
        <h3>Description</h3>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>publicKey</td>
                <td>Public key</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Invalid certificate structure</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Signature algorithm not supported or provider not found</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Signature is not valid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_KEY</td>
                <td>The key is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var root = new X509("root.cer");
var ca = new X509("ca.cer");

var rootKey = root.getPublicKey();
root.verify(rootKey);
ca.verify(rootKey);

try	{
	var caKey = ca.getPublicKey();
	ca.verify(caKey);
	assert(false);
}
catch(e) {
	assert(e instanceof GPError);
	assert(e.error == GPError.CRYPTO_FAILED);
}

</pre>
        <h2 id="verifyWith">verifyWith()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void verifyWith(X509 superior)</p>
        <h3>Description</h3>
        Verify if certificate was signed with private key related to superior certificate
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>superior</td>
                <td>Certificate from which the public key will be extracted</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Invalid certificate structure</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Signature algorithm not supported or provider not found</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Signature is not valid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new X509("root.cer");
ca = new X509("ca.cer");
root.verifyWith(root);
ca.verifyWith(root);

try	{
	ca.verifyWith(ca);
	assert(false);
}
catch(e) {
	assert(e instanceof GPError);
	assert(e.error == GPError.CRYPTO_FAILED);
}

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>ASN1 - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>ASN1 - Reference Documentation</h1>
        <p>Implementation of support for ASN.1 data structures using DER encoding rule</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">ASN1() constructor</a>
            </li>
            <li>
                <a href="#add">add()</a>
            </li>
            <li>
                <a href="#get">get()</a>
            </li>
            <li>
                <a href="#find">find()</a>
            </li>
            <li>
                <a href="#remove">remove()</a>
            </li>
            <li>
                <a href="#getBytes">getBytes()</a>
            </li>
            <li>
                <a href="#getDate">getDate()</a>
            </li>
            <li>
                <a href="#setName">setName()</a>
            </li>
            <li>
                <a href="#ASN1.defineObjectIdentifier">ASN1.defineObjectIdentifier()</a>
            </li>
            <li>
                <a href="#toString">toString()</a>
            </li>
            <li>
                <a href="#ASN1.nameForObjectIdentifier">ASN1.nameForObjectIdentifier()</a>
            </li>
            <li>
                <a href="#toString">toString()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>UNIVERSAL</td>
                <td>END_OF_CONTENTS ASN.1 class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>APPLICATION</td>
                <td>APPLICATION ASN.1 class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CONTEXT</td>
                <td>CONTEXT ASN.1 class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>PRIVATE</td>
                <td>PRIVATE ASN.1 class</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>END_OF_CONTENTS</td>
                <td>END_OF_CONTENTS ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>BOOLEAN</td>
                <td>BOOLEAN ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INTEGER</td>
                <td>INTEGER ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>BIT_STRING</td>
                <td>BIT_STRING ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>OCTET_STRING</td>
                <td>OCTET_STRING ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>NULL</td>
                <td>NULL ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>OBJECT_IDENTIFIER</td>
                <td>OBJECT_IDENTIFIER ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>OBJECT_DESCRIPTOR</td>
                <td>OBJECT_DESCRIPTOR ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>EXTERNAL_TYPE</td>
                <td>EXTERNAL_TYPE ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>REAL</td>
                <td>REAL ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ENUMERATED</td>
                <td>ENUMERATED ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>EMBEDDED_PDV</td>
                <td>EMBEDDED_PDV ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>UTF8String</td>
                <td>UTF8String ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RELATIVE_OID</td>
                <td>RELATIVE_OID ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SEQUENCE</td>
                <td>SEQUENCE ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SET</td>
                <td>SET ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>NumericString</td>
                <td>NumericString ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>PrintableString</td>
                <td>PrintableString ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>T61String</td>
                <td>T61String ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>IA5String</td>
                <td>IA5String ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>UTCTime</td>
                <td>UTCTime ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>GeneralizedTime</td>
                <td>GeneralizedTime ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>GeneralString</td>
                <td>GeneralString ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>UniversalString</td>
                <td>UniversalString ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>BMPString</td>
                <td>BMPString ASN.1 object</td>
            </tr>
        </table>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>tag</td>
                <td>The combined value of the tag, containing the class, constructed flag and number</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>length</td>
                <td>Length of the value field</td>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>value</td>
                <td>The value field</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>tagclass</td>
                <td>The class of the ASN.1 object. Is one of ASN1.UNIVERSAL, ASN1.APPLICATION, ASN1.CONTEXT or ASN1.PRIVATE</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>tagnumber</td>
                <td>The number element of the tag</td>
            </tr>
            <tr>
                <td>Boolean</td>
                <td>isconstructed</td>
                <td>True, if the object is a constructed ASN.1 object</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>size</td>
                <td>Size of the concatenation of tag, length and value field</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>elements</td>
                <td>Number of elements in a constructed object. 0 for primitive objects</td>
            </tr>
            <tr>
                <td>String</td>
                <td>name</td>
                <td>Name of object</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">ASN1(Number tag)</p>
        <p class="signature">ASN1(Number tag, ByteString value)</p>
        <p class="signature">ASN1(Number tag, ASN1 object*)</p>
        <p class="signature">ASN1(ByteString encoded)</p>
        <p class="signature">ASN1(String name, Number tag)</p>
        <p class="signature">ASN1(String name, Number tag, ByteString value)</p>
        <p class="signature">ASN1(String name, Number tag, ASN1 object*)</p>
        <p class="signature">ASN1(String name, ByteString encoded)</p>
        <h3>Description</h3>
        Create an ASN.1 object, either primitive or constructed. The constructor without a value or
                     with a list of TLV objects will
                     create a constructed object, which can be further completed using the add() method. The constructor
                     with a value field will create a primitive, immutuable object
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>Tag value, including class, primitive/constructed flag and id</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>name</td>
                <td>Object name to be assigned to the object</td>
            </tr>
            <tr>
                <td>
                    <code>ASN1</code>
                </td>
                <td>object</td>
                <td>One or more ASN1 object(s) to be included in constructed object</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Value field of object</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>encoded</td>
                <td>DER encoded ASN.1 object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>ByteString does not contain a valid DER encoded object</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
assert(t instanceof ASN1);
assert(t.tag == ASN1.SEQUENCE);
assert(t.length == 0);
assert(t.value.toString(HEX) == "");

assert(t.tagclass == ASN1.UNIVERSAL);
assert(t.tagnumber == 16);
assert(t.isconstructed);
assert(t.size == 2);
assert(t.elements == 0);
t = new ASN1("singleSequence", ASN1.SEQUENCE);
print(t);

t = new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX));
assert(t instanceof ASN1);
assert(t.tag == ASN1.OBJECT_IDENTIFIER);
assert(t.length == 3);
assert(t.value.toString(HEX) == "2A1200");

assert(t.tagclass == ASN1.UNIVERSAL);
assert(t.tagnumber == 6);
assert(!t.isconstructed);
assert(t.size == 5);
t = new ASN1("objectIdentifier", ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX));
print(t);

t = new ASN1(new ByteString("06022A11", HEX));
assert(t instanceof ASN1);
assert(t.tag == ASN1.OBJECT_IDENTIFIER);
assert(t.length == 2);
assert(t.value.toString(HEX) == "2A11");

assert(t.tagclass == ASN1.UNIVERSAL);
assert(t.tagnumber == 6);
assert(!t.isconstructed);
assert(t.size == 4);
t = new ASN1("fromByteString", new ByteString("06022A11", HEX));
print(t);

t = new ASN1(ASN1.SEQUENCE,
		new ASN1(ASN1.OCTET_STRING, new ByteString("Hello World", ASCII)),
		new ASN1(ASN1.GeneralizedTime, new ByteString("20051010120000Z", ASCII)));

assert(t instanceof ASN1);
assert(t.tag == ASN1.SEQUENCE);
assert(t.elements == 2);

assert(t.tagclass == ASN1.UNIVERSAL);
assert(t.tagnumber == 16);
assert(t.isconstructed);
assert(t.size == 32);
t = new ASN1("complexSequence", ASN1.SEQUENCE,
		new ASN1(ASN1.OCTET_STRING, new ByteString("Hello World", ASCII)),
		new ASN1(ASN1.GeneralizedTime, new ByteString("20051010120000Z", ASCII)));
print(t);


root = new X509("root.cer");
bs = root.getBytes();
print(bs);
t = new ASN1(bs);
assert(t instanceof ASN1);
print(t);

</pre>
        <h2 id="add">add()</h2>
        <h3>Prototype</h3>
        <p class="signature">ASN1 add(ASN1 object*)</p>
        <p class="signature">ASN1 add(Number index, ASN1 object*)</p>
        <h3>Description</h3>
        Add one or more ASN.1 objects to a constructed object at index or at the end.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>ASN1</code>
                </td>
                <td>object</td>
                <td>ASN.1 objects to add</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Zero based index</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ASN1</code>
                </td>
                <td>The object the method is applied to</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Object must be constructed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)));

t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)),
      new ASN1(ASN1.PrintableString, new ByteString("Hello World", ASCII)));

t.add(0, new ASN1(ASN1.INTEGER, new ByteString("01", HEX)));

</pre>
        <h2 id="get">get()</h2>
        <h3>Prototype</h3>
        <p class="signature">ASN1 get(Number index)</p>
        <h3>Description</h3>
        <p>Get ASN.1 object at zero based index from constructed object.</p>
                             
        <p>This method does not provide a copy of the element, but a reference to it. Changes
                        to the element will have an effect in parent objects or other instances
                        obtained with the get() method</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Zero based offset</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ASN1</code>
                </td>
                <td>New ASN1 object representing the element at the requested index</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Index is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Object must be constructed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)));
t.add(new ASN1(ASN1.OCTET_STRING, new ByteString("ÄÖÜ", UTF8)));

n = t.get(0);
assert(n instanceof ASN1);
assert(n.tag == ASN1.OBJECT_IDENTIFIER);
assert(n.length == 3);

n = t.get(1);
assert(n instanceof ASN1);
assert(n.tag == ASN1.OCTET_STRING);
assert(n.length == 6);

</pre>
        <h2 id="find">find()</h2>
        <h3>Prototype</h3>
        <p class="signature">ASN1 find(Number tag)</p>
        <p class="signature">ASN1 find(Number tag, Number index)</p>
        <p class="signature">ASN1 find(Number tag, ASN1 cursor)</p>
        <h3>Description</h3>
        <p>Find ASN1 object with matching tag.</p>
                             
        <p>The method can be called with an object after which the search will start.
                        The constant value null indicates the beginning of the list.</p>
                             
        <p>This method does not provide a copy of the element, but a reference to it. Changes
                        to the element will have an effect in parent objects or other instances
                        obtained with the get() method</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>The tag value to search for</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Zero based offset of the object at which the search is started.</td>
            </tr>
            <tr>
                <td>
                    <code>ASN1</code>
                </td>
                <td>cursor</td>
                <td>The object after which the search resumes or null for a new search</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ASN1</code>
                </td>
                <td>New ASN1 object representing the found element or null if no match found</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Index is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Object must be constructed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)));
t.add(new ASN1(ASN1.OCTET_STRING, new ByteString("ÄÖÜ", UTF8)));
t.add(new ASN1(ASN1.INTEGER, new ByteString("00", HEX)));
t.add(new ASN1(0x5F1C, new ByteString("5F1C", HEX)));
t.add(new ASN1(ASN1.INTEGER, new ByteString("0000", HEX)));

n = t.find(ASN1.OBJECT_IDENTIFIER);
assert(n instanceof ASN1);
assert(n.tag == ASN1.OBJECT_IDENTIFIER);

n = t.find(ASN1.INTEGER);
assert(n instanceof ASN1);
assert(n.tag == ASN1.INTEGER);
assert(n.length == 1);


n = t.find(ASN1.INTEGER, n);
assert(n instanceof ASN1);
assert(n.tag == ASN1.INTEGER);
assert(n.length == 2);

n = t.find(ASN1.INTEGER, n);
assert(n == null);

n = t.find(ASN1.OBJECT_IDENTIFIER, n);
assert(n instanceof ASN1);
assert(n.tag == ASN1.OBJECT_IDENTIFIER);


n = t.find(ASN1.INTEGER, 1);
assert(n instanceof ASN1);
assert(n.tag == ASN1.INTEGER);
assert(n.length == 1);

n = t.find(ASN1.INTEGER, 3);
assert(n instanceof ASN1);
assert(n.tag == ASN1.INTEGER);
assert(n.length == 2);

n = t.find(ASN1.OBJECT_IDENTIFIER, 0);
assert(n instanceof ASN1);
assert(n.tag == ASN1.OBJECT_IDENTIFIER);

n = t.find(0x5F1C);
assert(n instanceof ASN1);
assert(n.tag == 0x5F1C);

n = t.find(0x5F1D);
assert(n == null);

</pre>
        <h2 id="remove">remove()</h2>
        <h3>Prototype</h3>
        <p class="signature">void remove(Number index)</p>
        <h3>Description</h3>
        <p>Remove ASN.1 object at zero based index from constructed object.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Zero based offset</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>Index is out of range</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Object must be constructed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)));
t.add(new ASN1(ASN1.OCTET_STRING, new ByteString("ÄÖÜ", UTF8)));

t.remove(0);

n = t.get(0);
assert(n instanceof ASN1);
assert(n.tag == ASN1.OCTET_STRING);
assert(n.length == 6);

</pre>
        <h2 id="getBytes">getBytes()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getBytes()</p>
        <h3>Description</h3>
        Return the DER encoded ASN.1 object
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The DER encoded object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)));
assert(t.getBytes().toString(HEX) == "300506032A1200");

</pre>
        <h2 id="getDate">getDate()</h2>
        <h3>Prototype</h3>
        <p class="signature">Date getDate()</p>
        <h3>Description</h3>
        Return the value field of a primitive ASN.1 object as a date. This usually works for
                     for GeneralizedTime objects which store date and time in ISO8601 format.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The DER encoded object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>Object must be primitive</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Value field does not contain a valid date and time</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Local time
t = new ASN1(ASN1.GeneralizedTime, new ByteString("20050929113422", ASCII));
d = t.getDate();
print(d);
assert(d.toString().substr(0,24) == "Thu Sep 29 2005 11:34:22");

// UTC time
t = new ASN1(ASN1.GeneralizedTime, new ByteString("20050929113422Z", ASCII));
d = t.getDate();
assert(d.getTime() == 1127993662000);

// CEST time
t = new ASN1(ASN1.GeneralizedTime, new ByteString("20050929133422+0200", ASCII));
d = t.getDate();
assert(d.getTime() == 1127993662000);

// Local time with millisecond
t = new ASN1(ASN1.GeneralizedTime, new ByteString("20050929113422.1", ASCII));
d = t.getDate();
assert(d.toString().substr(0,24) == "Thu Sep 29 2005 11:34:22");

// UTC time with millisecond
t = new ASN1(ASN1.GeneralizedTime, new ByteString("20050929113422.1Z", ASCII));
d = t.getDate();
assert(d.getTime() == 1127993662001);

// CEST time with millisecond
t = new ASN1(ASN1.GeneralizedTime, new ByteString("20050929133422.1+0200", ASCII));
d = t.getDate();
assert(d.getTime() == 1127993662001);

</pre>
        <h2 id="setName">setName()</h2>
        <h3>Prototype</h3>
        <p class="signature">setName(String name)</p>
        <h3>Description</h3>
        Assign a name to the ASN.1 object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.setName("testObject");
print(t.toString());

</pre>
        <h2 id="ASN1.defineObjectIdentifier">ASN1.defineObjectIdentifier()</h2>
        <h3>Prototype</h3>
        <p class="signature">defineObjectIdentifier(String name, String definition)</p>
        <h3>Description</h3>
                    
        <p>Add a definition for a symbolic object identifier to the internal registry.</p>
                    
        <p>The definition may be recursive and can use the dotted or spaced format.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ASN1.defineObjectIdentifier("openscdp-test", "1.3.6.1.4.1.24991.0");
ASN1.defineObjectIdentifier("openscdp-test-sub1", "openscdp-test.4");
ASN1.defineObjectIdentifier("openscdp-test-sub2", "openscdp-test branch(5)");

var b = new ByteString("openscdp-test-sub2", OID);
print(b);
assert(b.toString(OID) == "1.3.6.1.4.1.24991.0.5");

</pre>
        <h2 id="toString">toString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String toString()</p>
        <h3>Description</h3>
        Dump the contents of the ASN.1 object
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>Dump of ASN.1 object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Argument must be of type Number and either Card.RESET_COLD or Card.RESET_WARM</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)));
print(t.toString());

</pre>
        <h2 id="ASN1.nameForObjectIdentifier">ASN1.nameForObjectIdentifier()</h2>
        <h3>Prototype</h3>
        <p class="signature">nameForObjectIdentifier(ByteString oid)</p>
        <h3>Description</h3>
                    
        <p>Return a name for the object identifier passed or undefined if no matching name is found.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>The object identifier name or undefined</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var b = new ByteString("openscdp-test-sub2", OID);
print(b);
assert(b.toString(OID) == "1.3.6.1.4.1.24991.0.5");
assert(ASN1.nameForObjectIdentifier(b) == "openscdp-test-sub2");
assert(ASN1.nameForObjectIdentifier(new ByteString("0102", HEX)) === undefined);

</pre>
        <h2 id="toString">toString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String toString()</p>
        <h3>Description</h3>
        Dump the contents of the ASN.1 object
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>Dump of ASN.1 object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Argument must be of type Number and either Card.RESET_COLD or Card.RESET_WARM</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new ASN1(ASN1.SEQUENCE);
t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString("2A1200", HEX)));
print(t.toString());

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>GPApplication - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>GPApplication - Reference Documentation</h1>
        <p>
                    
            <p>An instance of the GPApplication class represents an application
           on a Global Platform card.</p>
                    
            <p>Instances of this class are created using the getApplicationInstance() method
           of the application factory.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">GPApplication() constructor</a>
            </li>
            <li>
                <a href="#run">run()</a>
            </li>
            <li>
                <a href="#select">select()</a>
            </li>
            <li>
                <a href="#sendApdu">sendApdu()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>aid</td>
                <td>Application identifier for this application.</td>
            </tr>
            <tr>
                <td>Card</td>
                <td>card</td>
                <td>Card object associated with application.</td>
            </tr>
            <tr>
                <td>Card</td>
                <td>crypto</td>
                <td>Crypto object associated with application.</td>
            </tr>
            <tr>
                <td>Array</td>
                <td>data[]</td>
                <td>Associative array of data elements.</td>
            </tr>
            <tr>
                <td>Array</td>
                <td>key[]</td>
                <td>Associative array of keys.</td>
            </tr>
            <tr>
                <td>Object</td>
                <td>profile</td>
                <td>Deserialized application profile.</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">GPApplication(String profile)</p>
        <p class="signature">GPApplication(String profile, ByteString aid, Card card, Crypto crypto, Object dataMapper)</p>
        <h3>Description</h3>
                    
        <p>Create a GPApplication object and initialize from profile.</p>
                    
        <p>This constructor is provided for special development and testing purposes.
               The preferred method is to use the getApplicationInstance() method of the
               ApplicationFactory.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>profile</td>
                <td>Name of file containing Global Platform Application profile. The file name
                  will be mapped to the file system of the runtime environment.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>aid</td>
                <td>Application identifier for application.</td>
            </tr>
            <tr>
                <td>
                    <code>Card</code>
                </td>
                <td>card</td>
                <td>Card object to associate Application with or null if none defined.</td>
            </tr>
            <tr>
                <td>
                    <code>Crypto</code>
                </td>
                <td>crypto</td>
                <td>Crypto object to associate Application with.</td>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>dataMapper</td>
                <td>Data mapper object to be used for external data elements or null if none defined.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var sd = new GPApplication("profiles/ap_sample.xml");

assert(sd != null);

</pre>
        <h2 id="run">run()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void run(String scriptName)</p>
        <h3>Description</h3>
                    
        <p>Locate and execute script fragment in application profile.</p>
                    
        <p>This method does the complete initialization of the key and data
               properties according to the declarations for this script fragment</p>
                    
        <p>Key profiles are obtained from the ApplicationFactory that created the
               Application object.</p>
                    
        <p>External data elements are mapped using the data mapper defined in the
               constructor or the getApplicationInstance() method of the application
               factory.</p>
                    
        <p>Warning: This method is an extension to the methods defined in the Global Platform
               Scripting specification. It is provided as development and test aid.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>scriptName</td>
                <td>Name of script fragment to execute.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

</pre>
        <h2 id="select">select()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString select()</p>
        <p class="signature">ByteString select(Boolean next, Boolean noData)</p>
        <p class="signature">ByteString select(Boolean next, Number[] sw)</p>
        <p class="signature">ByteString select(Boolean next, Boolean noData, Number[] sw)</p>
        <h3>Description</h3>
                    
        <p>Select application on ICC.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>next</td>
                <td>Used to control parameter P1 in the select command. True
               will select next application with matching AID. Default is false.</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>noData</td>
                <td>Ignore data returned from card. Default is false.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 response codes.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Data returned from card in response to select.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

/*
var aid = new ByteString("D040000017010101", HEX);
var card = new Card(_scsh3.reader);
var crypto = new Crypto();

var application = new GPApplication("profiles/ap_test.xml", aid, card, crypto, 
                                    new Object());

var resp = application.select();
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(false, false);
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(false, [ 0x9000 ]);
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(true, false, [ 0x6A86 ]);
assert(resp instanceof ByteString);
print(resp);
*/

</pre>
        <h2 id="sendApdu">sendApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le, Number[] sw)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and response of the associated card object
                        with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>The method supports ISO7816-4 extended format. This is automatically used, if the length of the data
                        argument exceeds 255 or if the argument le exceeds 256.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>cla</td>
                <td>The CLA byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ins</td>
                <td>The INS byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p1</td>
                <td>The P1 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p2</td>
                <td>The P2 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data bytes to be send in the Command-APDU for case 3 or case 4 commands</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>le</td>
                <td>The number of bytes expected in the response. 256 is encoded as '00' in short format.
                                          65536 is encoded as '0000' in extended format.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data for the command APDU exceeds 65536</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The value given for Le is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>
/*
// Case 1: 0022F3A4 - MANAGE SE

resp = application.sendApdu(0x00, 0x22, 0xF3, 0xA4);
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

resp = card.sendApdu(0x00, 0x22, 0xF3, 0xA4, [0x9000]);
assert(resp instanceof ByteString);


// Case 2: 00B201F400 - READ RECORD from EF_STATUS

resp = card.sendApdu(0x00, 0xB2, 0x01, 0x24, 0);
assert(resp instanceof ByteString);
print(card.SW.toString(16) + " - " + resp);

assert(resp.length &gt; 0);
assert(application.card.SW == 0x9000);

resp = card.sendApdu(0x00, 0xB2, 0x01, 0x24, 0, [0x9000]);
assert(resp.length &gt; 0);


// Case 3: 002A90A008 - HASH

resp = application.sendApdu(0x00, 0x2A, 0x90, 0xA0,
            new ByteString("9000800431323334", HEX));
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

assert(card.SW == 0x9000);

resp = application.sendApdu(0x00, 0x2A, 0x90, 0xA0, 
            new ByteString("9000800431323334", HEX),[0x9000]);


// Case 4: 00A40204022F0000 - SELECT EF_STATUS

resp = application.sendApdu(0x00, 0xA4, 0x02, 0x04, new ByteString("EF04", HEX), 0);
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

assert(application.card.SW == 0x9000);
assert(resp.length &gt; 0);

resp = application.sendApdu(0x00, 0xA4, 0x02, 0x04, 
            new ByteString("EF04", HEX), 0, [0x9000]);
assert(resp.length &gt; 0);
*/
</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h2>Locating Files</h2>
<p>When calling load() to execute ECMAScripts, then the file name can be given
   with either an absolute or a relative path. An absolute path starts at the root of the file
   system, e.g. "C:\" on Windows or "/" on a UNIX like system. It uniquely identifies the file on
   the host system and requires no additional processing. However, specifying a relative file
   path allows a more flexible setup of script files and directories, in particular if scripts
   shall be reused or run on systems with different directory configurations.</p>
<p>The shell maintains 3 different directories</p>
<ul>
  <li>a current working directory (CWD)</li>
  <li>a workspace directory (USR)</li>
  <li>and a system directory (SYS)</li>
</ul>
<p>When a relative file name given, then the file is first searched relative to the current
   working directory. If it can not be found, then the workspace directory and finally the
   system directory is examined. If it can not be found in either location, then an error is
   returned.</p>
<p>The system directory (SYS) is determined by the location of the shell executable file and does not
   change once the shell is started. The location of the executable is usually selected
   during installation (Installation directory, e.g. "c:\Program Files\CardContact\Smart Card Shell 3")
   and read/only for users that do not have administration privileges.</p>
<p>The workspace directory (USR) is selected by the user when the shell is started. This directory usually
   contains the initial CONFIG.JS file, which provides for the initial shell configuration.</p>
<p>The GUI version of the shell provides a dialog to select the workspace, in the command line
   version the workspace directory is determined by the directory from which the shell is
   executed (Not to confuse with the system directory, which is the location of the executable itself !)</p>
<p>Initially the current working directory (CWD) is set to the workspace directory (USR).
   Before a script file is loaded and executed, the current working directory is changed
   to the directory where the script was found. When calling a script from within another
   script, the location of the subordinate script is again determined by a search for the
   file in the current working directory, the workspace directory and the system directory.
   After the script terminated, the previous current working directory is restored.</p>
<h3>Locating modules</h3>
<p>Modules are scripts included with the require() statement as defined in the modules specification of <a href="http://www.commonjs.org/">CommonJS</a></p>
<p>A module id is translated into a file name by adding ".js" and searching the three directories CWD, USR and SYS</p>
<p>If a module is found, then the script is loaded and executed, but in contrast to scripts executed mit load(), the
   current working directory is not changed, but remains the CWD of the last script executed with load().</p>
<h3>Common pitfalls</h3>
<p>Care should be taken when script files have the same name but reside in different directories.
   File name resolution for a relative file path always starts with the current working
   directory, which is determined by the location of the script that is containing the load()
   statement. Therefore a script executed from the system directory has the current working
   directory set to the system directory and will therefore find files in this location first.
   Only if the included file can not be found in the current working directory, then the user and
   system directories are searched in turn. Overwriting a file in the system directory with a file
   of the same name in the user directory has no effect, if this file is included from a script in the
   system directory.</p>
<p>If you want to select a specific file, you should use the <a href="gpsystem.html#mapFilename">GPSystem.mapFilename()</a>
   method to obtain an absolute path for use in the load() statement.</p>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate --><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>ShamirSharedSecret - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>ShamirSharedSecret - Reference Documentation</h1>
        <p>
    </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">ShamirSharedSecret() constructor</a>
            </li>
            <li>
                <a href="#addShare">addShare()</a>
            </li>
            <li>
                <a href="#reconstructSecret">reconstructSecret()</a>
            </li>
            <li>
                <a href="#getPrime">getPrime()</a>
            </li>
            <li>
                <a href="#trimSecret">trimSecret()</a>
            </li>
            <li>
                <a href="#createShares">createShares()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">ShamirSharedSecret(ByteString prime)</p>
        <p class="signature">ShamirSharedSecret(Number bits)</p>
        <h3>Description</h3>
        Create an instance to generate or reconstruct a shared secret
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>prime</td>
                <td>The prime to be used</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>bits</td>
                <td>The number of bits for the randomly generated prime</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var prime = new ByteString("e25cb644c99928ff", HEX);
var sss = new ShamirSharedSecret(prime);

</pre>
        <h2 id="addShare">addShare()</h2>
        <h3>Prototype</h3>
        <p class="signature">addShare(Number id, ByteString share)</p>
        <h3>Description</h3>
        Add the share identified by id.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>id</td>
                <td>The id for the share</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>share</td>
                <td>The share value</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var share = [
	new ByteString("dabd6f8a03d16d54", HEX),
	new ByteString("62d50d9144316251", HEX),
	new ByteString("cd4961dd4e2a804d", HEX)
];

var sss = new ShamirSharedSecret(prime);
sss.addShare(1, share[0]);
sss.addShare(2, share[1]);

</pre>
        <h2 id="reconstructSecret">reconstructSecret()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString reconstructSecret()</p>
        <h3>Description</h3>
        Reconstruct the shared secret from previously added shares.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The recovered secret</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var s = sss.reconstructSecret();
// print(s);
var ref = new ByteString("70491B3DF9D84F58", HEX);
assert(s.equals(ref));

</pre>
        <h2 id="getPrime">getPrime()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getPrime()</p>
        <h3>Description</h3>
        Return the prime generated or set in the constructor.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The prime</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var sss = new ShamirSharedSecret(64);
var prime = sss.getPrime();
print("Prime " + prime);

</pre>
        <h2 id="trimSecret">trimSecret()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString trimSecret(ByteString secret)</p>
        <h3>Description</h3>
        Ensure that the secret is smaller than the prime using a modulo operation.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The trimmed secret</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var secret = crypto.generateRandom(9);
print("Secret (raw)  " + secret);

secret = sss.trimSecret(secret);
print("Secret (trim) " + secret);

</pre>
        <h2 id="createShares">createShares()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString[] createShares(ByteString secret, Number threshold, Number shares)</p>
        <h3>Description</h3>
        Create the shares for a given secret. The numeric value of the secret must be smaller than the prime.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>secret</td>
                <td>The secret to split. Must be smaller than the prime</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>threshold</td>
                <td>The number of shares required to reconstruct</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>shares</td>
                <td>The total number of shares.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString[]</code>
                </td>
                <td>An array containing the shares</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var sss = new ShamirSharedSecret(prime);
var shares = sss.createShares(secret, 2, 3);

for (var i = 0; i &lt; shares.length; i++) {
	print("Id " + (i + 1) + " : " + shares[i]);
}

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
      <h2>Build-in Shell Commands</h2>
        <p>The full potential of the shell can be explored using JavaScript expressions,
           which are evaluated immediately. Only a few commands are provided by the shell
           object, whereas the majority of functions are in the scripting classes.</p>
        <h3>help</h3>
        <p>Display a short help in interactive mode</p>
        <h3>q | quit</h3>
        <p>Terminate shell.</p>
        <h3>r | reset</h3>
        <p>Reset card in reader and display Answer to Reset returned by card.</p>
        <h3>a | apdu(String apdu)</h3>
        <p>Send APDU to card. The argument apdu must be a string that
           contains in hexadecimal encoding the concatenation of CLA|INS|P1|P2|Lc|Data|Le</p>
        <h3>print(...)</h3>
        <p>All arguments passed to the print() function are converted using the
           toString() method and are concatenated with a trailing blank. The resulting
           string is printed with a '\n' appended.</p>
        <p>If the object is of type ByteString, then a hexadecimal dump is generated.</p>
        <h3>load(String filename)</h3>
        <p>Load, compile and execute ECMA script.</p>
        <p>Unless an absolute file name is given, the path is relative to the location
           of the script in which the function is called. See <a href="filelocation.html">Locating Files</a>
           for details.</p>
        <h3>launch(String moduleid)</h3>
        <p><a href="filelocation.html">Locate the module</a> with moduleid and launch as main module. All modules referenced using
           require() will be maintained in the main module.</p>
        <h3>defineClass(String classfilename)</h3>
        <p>Load Java class file and define new ECMA class constructor in script runtime.
           The Java class must be derived from org.mozilla.javascript.ScriptableObject.</p>
        <h3>assert(condition, message)</h3>
        <p>The condition argument is evaluated. If the result is false, then an
           exception is thrown with message. This is useful for test script.</p>
      <h2>Extending Shell Commands</h2>
        <p>When an expression entered on the command line is evaluated to
           be a function and no arguments are given, then the function is called
           with the result of the last evaluation. Shell commands
           can therefore be extended by simply defining a function in ECMA Script
           (e.g. as part of a startup script).</p>
        <p>Example: Define a function do()</p>
<pre>function mydo(last) {
  print("mydo() called with " + last);
}</pre>
        <p>Now when you enter "mydo" in the shell, this evaluates to a function object, which is then called
           with the result of the last evaluation.</p>
<pre>&gt;"Hello World";
Hello World
&gt;mydo
mydo() called with Hello World
&gt;
</pre>

<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate --><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CommonPrivateKeyAttributes
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CommonPrivateKeyAttributes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonKeyAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonSecretKeyAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CommonPrivateKeyAttributes</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a>
               |
               +--<b>PKCS15_CommonPrivateKeyAttributes</b>
</PRE>

   
      <DL>
      <DT>
         <B>Direct Known Subclasses:</B> 
         <DD>
                  <a href='PKCS15_PrivateKey.html'>PKCS15_PrivateKey</a>
         </DD>
      </DL>
   


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CommonPrivateKeyAttributes</B>
   
      <DT>extends <a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds common private key attributes to the common key attribute class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonPrivateKeyAttributes ::= SEQUENCE {
 name Name OPTIONAL,
 keyIdentifiers [0] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 generalName [1] GeneralNames OPTIONAL,
 ... -- For future extensions
 }
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/><B>See:</B><UL>- <a href="PKCS15_CommonKeyAttributes.html#">PKCS15_CommonKeyAttributes is the base class</a></UL>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CommonKeyAttributes.html#iD'>iD</a>, <a href='PKCS15_CommonKeyAttributes.html#usage'>usage</a>, <a href='PKCS15_CommonKeyAttributes.html#native_'>native_</a>, <a href='PKCS15_CommonKeyAttributes.html#accessFlags'>accessFlags</a>, <a href='PKCS15_CommonKeyAttributes.html#keyReference'>keyReference</a>, <a href='PKCS15_CommonKeyAttributes.html#startDate'>startDate</a>, <a href='PKCS15_CommonKeyAttributes.html#endDate'>endDate</a>, <a href='PKCS15_CommonKeyAttributes.html#algReference'>algReference</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;


   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CommonPrivateKeyAttributes()">PKCS15_CommonPrivateKeyAttributes</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Common Private Key Attribute Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CommonKeyAttributes.html#getUsageAsString'>getUsageAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#getAccessFlagsAsString'>getAccessFlagsAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#toString'>toString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CommonPrivateKeyAttributes()"><!-- --></A><H3>
PKCS15_CommonPrivateKeyAttributes</H3>
<PRE><B>PKCS15_CommonPrivateKeyAttributes</B>(tlv)</PRE>


<UL>
   Create a Common Private Key Attribute Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CommonKeyAttributes.html#">PKCS15_CommonKeyAttributes is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonKeyAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonSecretKeyAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="eccutils.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>eccutils.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'eccutils.js'<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="ECCUtils.html">ECCUtils</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Utility class for Elliptic Curve Cryptography
 */</span>


<span class="reserved">function</span> ECCUtils() {
}



<span class="comment">/**
 * Wrap a ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279
 *
 * <span class="attrib">@param</span> signature ByteString containing the concatenation of r and s as unsigned integer values
 * <span class="attrib">@returns</span> ASN.1 SEQUENCE objects containing two signed integer r and s
 */</span>
ECCUtils.wrapSignature = <span class="reserved">function</span>(signature) {
	var len = signature.length / 2;

	<span class="comment">// r and s are unsigned big integer. We might need to pad a zero for ASN.1 INTEGER which is signed</span>
	var r = signature.bytes(0, len);
	<span class="reserved">if</span> (r.byteAt(0) &gt;= 0x80) {
		r = ByteString.valueOf(0, 1).concat(r);
	}

	var s = signature.bytes(len, len);
	<span class="reserved">if</span> (s.byteAt(0) &gt;= 0x80) {
		s = ByteString.valueOf(0, 1).concat(s);
	}

	var t = new ASN1(ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.INTEGER, r));
	t.add(new ASN1(ASN1.INTEGER, s));

	<span class="reserved">return</span> t.getBytes();
}



<span class="comment">/**
 * Integer to octet string conversion
 */</span>
ECCUtils.I2O = <span class="reserved">function</span>(value, length) {
	<span class="reserved">if</span> (value.length &gt; length) {
		value = value.right(length);
	}
	<span class="reserved">while</span> (value.length &lt; length) {
		value = ECCUtils.PAD.left((length - value.length - 1 &amp; 15) + 1).concat(value);
	}
	<span class="reserved">return</span> value;
}
ECCUtils.PAD = new ByteString(<span class="literal">"00000000000000000000000000000000"</span>, HEX);



<span class="comment">/**
 * Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
 * of the unsigned integer r and s
 *
 * <span class="attrib">@param</span> signature TLV encoded signature
 * <span class="attrib">@returns</span> concatenation of r and s
 */</span>
ECCUtils.unwrapSignature = <span class="reserved">function</span>(signature, keylen) {
	var t = new ASN1(signature);
	<span class="reserved">if</span> (typeof(keylen) != <span class="literal">"undefined"</span>) {
		var r = ECCUtils.I2O(t.get(0).value, keylen);
		var s = ECCUtils.I2O(t.get(1).value, keylen);
	} <span class="reserved">else</span> {
		var r = t.get(0).value;
		<span class="reserved">if</span> (r.byteAt(0) == 00)
			r = r.bytes(1);

		var s = t.get(1).value;
		<span class="reserved">if</span> (s.byteAt(0) == 00)
			s = s.bytes(1);
	}

	<span class="reserved">return</span> r.concat(s);
}



<span class="comment">/**
 * Decode domain parameter from ECParameters
 *
 * &lt;pre&gt;
 *	ECParameters ::= SEQUENCE {
 *		version INTEGER{ecpVer1(1)} (ecpVer1),
 *		fieldID FieldID,
 *		curve Curve,
 *		base ECPoint,
 *		order INTEGER,
 *		cofactor INTEGER OPTIONAL,
 *		...
 *	}
 *
 *	Curve ::= SEQUENCE {
 *		a FieldElement,
 *		b FieldElement,
 *		seed BIT STRING OPTIONAL
 *	}
 *
 *	FieldElement ::= OCTET STRING
 *	ECPoint ::= OCTET STRING
 *	FieldID ::= SEQUENCE {
 *		fieldType OBJECT IDENTIFIER,
 *		parameters ANY DEFINED BY fieldType
 *	}
 *	prime-field OBJECT IDENTIFIER ::= { ansi-x9-62 fieldType(1) 1 }
 *	Prime-p ::= INTEGER
 * &lt;/pre&gt;
 */</span>
ECCUtils.decodeECParameters = <span class="reserved">function</span>(tlv) {
	assert(tlv.tag == ASN1.SEQUENCE);

	var key = new Key();
	key.setType(Key.PUBLIC);

	<span class="comment">// version</span>
	assert(tlv.get(0).value.toSigned() == 1);

	<span class="comment">// fieldID</span>
	assert(tlv.get(1).tag == ASN1.SEQUENCE);
	assert(tlv.get(1).get(1).tag = ASN1.INTEGER);

	var prime = tlv.get(1).get(1).value;
	<span class="reserved">if</span> (prime.byteAt(0) == 0) {		<span class="comment">// Strip leading zero byte</span>
		prime = prime.bytes(1);
	}
	key.setComponent(Key.ECC_P, prime);

	<span class="comment">// curve</span>
	assert(tlv.get(2).tag == ASN1.SEQUENCE);
	assert(tlv.get(2).get(0).tag == ASN1.OCTET_STRING);

	var coeff_A = tlv.get(2).get(0);
	key.setComponent(Key.ECC_A, coeff_A.value);

	var coeff_B = tlv.get(2).get(1);
	key.setComponent(Key.ECC_B, coeff_B.value);

	<span class="comment">// base</span>
	assert(tlv.get(3).tag == ASN1.OCTET_STRING);
	var pkbin = tlv.get(3).value;
	assert(pkbin.byteAt(0) == 4);
	pkbin = pkbin.bytes(1);

	key.setComponent(Key.ECC_GX, pkbin.left(pkbin.length &gt;&gt; 1));
	key.setComponent(Key.ECC_GY, pkbin.right(pkbin.length &gt;&gt; 1));

	<span class="comment">// order</span>
	assert(tlv.get(4).tag == ASN1.INTEGER);
	var groupOrder = tlv.get(4).value;
	<span class="reserved">if</span> (groupOrder.byteAt(0) == 0) {		<span class="comment">// Strip leading zero byte</span>
		groupOrder = groupOrder.bytes(1);
	}
	key.setComponent(Key.ECC_N, groupOrder);

	<span class="comment">// cofactor</span>
	<span class="reserved">if</span> (tlv.elements &gt; 5) {
		assert(tlv.get(5).tag == ASN1.INTEGER);
		var cofactor = tlv.get(0).value;
		<span class="reserved">if</span> (cofactor.byteAt(0) == 0) {		<span class="comment">// Strip leading zero byte</span>
			cofactor = cofactor.bytes(1);
		}
		key.setComponent(Key.ECC_H, cofactor);
	}

	<span class="reserved">return</span> key;
}



ECCUtils.ECParametersToString = <span class="reserved">function</span>(key) {
	var str = <span class="literal">"EC Parameter:\n"</span>;

	str += <span class="literal">"  prime "</span> + key.getComponent(Key.ECC_P) + <span class="literal">"\n"</span>;
	str += <span class="literal">"  curve a "</span> + key.getComponent(Key.ECC_A) + <span class="literal">"\n"</span>;
	str += <span class="literal">"  curve b "</span> + key.getComponent(Key.ECC_B) + <span class="literal">"\n"</span>;
	str += <span class="literal">"  generator x "</span> + key.getComponent(Key.ECC_GX) + <span class="literal">"\n"</span>;
	str += <span class="literal">"  generator y "</span> + key.getComponent(Key.ECC_GY) + <span class="literal">"\n"</span>;
	str += <span class="literal">"  order "</span> + key.getComponent(Key.ECC_N) + <span class="literal">"\n"</span>;
	str += <span class="literal">"  cofactor "</span> + key.getComponent(Key.ECC_H) + <span class="literal">"\n"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">// List of object identifier used in Key.setComponent(ECC_CURVE_OID)</span>

<span class="comment">// Fp curves defined by ANSI X6.92</span>
ECCUtils.prime192v1 = new ByteString(<span class="literal">"1.2.840.10045.3.1.1"</span>, OID);
ECCUtils.prime192v2 = new ByteString(<span class="literal">"1.2.840.10045.3.1.2"</span>, OID);
ECCUtils.prime192v3 = new ByteString(<span class="literal">"1.2.840.10045.3.1.3"</span>, OID);
ECCUtils.prime239v1 = new ByteString(<span class="literal">"1.2.840.10045.3.1.4"</span>, OID);
ECCUtils.prime239v2 = new ByteString(<span class="literal">"1.2.840.10045.3.1.5"</span>, OID);
ECCUtils.prime239v3 = new ByteString(<span class="literal">"1.2.840.10045.3.1.6"</span>, OID);
ECCUtils.prime256v1 = new ByteString(<span class="literal">"1.2.840.10045.3.1.7"</span>, OID);

<span class="comment">// F2m curves defined by ANSI X6.92</span>
ECCUtils.c2pnb163v1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.1"</span>, OID);
ECCUtils.c2pnb163v2 = new ByteString(<span class="literal">"1.2.840.10045.3.0.2"</span>, OID);
ECCUtils.c2pnb163v3 = new ByteString(<span class="literal">"1.2.840.10045.3.0.3"</span>, OID);
ECCUtils.c2pnb176w1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.4"</span>, OID);
ECCUtils.c2tnb191v1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.5"</span>, OID);
ECCUtils.c2tnb191v2 = new ByteString(<span class="literal">"1.2.840.10045.3.0.6"</span>, OID);
ECCUtils.c2tnb191v3 = new ByteString(<span class="literal">"1.2.840.10045.3.0.7"</span>, OID);
ECCUtils.c2pnb208w1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.10"</span>, OID);
ECCUtils.c2tnb239v1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.11"</span>, OID);
ECCUtils.c2tnb239v2 = new ByteString(<span class="literal">"1.2.840.10045.3.0.12"</span>, OID);
ECCUtils.c2tnb239v3 = new ByteString(<span class="literal">"1.2.840.10045.3.0.13"</span>, OID);
ECCUtils.c2pnb272w1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.16"</span>, OID);
ECCUtils.c2pnb304w1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.17"</span>, OID);
ECCUtils.c2tnb359v1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.18"</span>, OID);
ECCUtils.c2pnb368w1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.19"</span>, OID);
ECCUtils.c2tnb431r1 = new ByteString(<span class="literal">"1.2.840.10045.3.0.20"</span>, OID);

<span class="comment">// Fp curves defined by SECG</span>
ECCUtils.secp224r1 = new ByteString(<span class="literal">"1.3.132.0.33"</span>, OID);
ECCUtils.secp256r1 = ECCUtils.prime256v1;
ECCUtils.secp384r1 = new ByteString(<span class="literal">"1.3.132.0.34"</span>, OID);
ECCUtils.secp521r1 = new ByteString(<span class="literal">"1.3.132.0.35"</span>, OID);

<span class="comment">// F2m curves defined by SECG</span>
ECCUtils.sect163r2 = new ByteString(<span class="literal">"1.3.132.0.15"</span>, OID);
ECCUtils.sect233r1 = new ByteString(<span class="literal">"1.3.132.0.27"</span>, OID);
ECCUtils.sect283r1 = new ByteString(<span class="literal">"1.3.132.0.17"</span>, OID);
ECCUtils.sect409r1 = new ByteString(<span class="literal">"1.3.132.0.37"</span>, OID);
ECCUtils.sect571r1 = new ByteString(<span class="literal">"1.3.132.0.39"</span>, OID);

ECCUtils.brainpoolP160r1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.1"</span>, OID);
ECCUtils.brainpoolP160t1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.2"</span>, OID);
ECCUtils.brainpoolP192r1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.3"</span>, OID);
ECCUtils.brainpoolP192t1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.4"</span>, OID);
ECCUtils.brainpoolP224r1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.5"</span>, OID);
ECCUtils.brainpoolP224t1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.6"</span>, OID);
ECCUtils.brainpoolP256r1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.7"</span>, OID);
ECCUtils.brainpoolP256t1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.8"</span>, OID);
ECCUtils.brainpoolP320r1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.9"</span>, OID);
ECCUtils.brainpoolP320t1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.10"</span>, OID);
ECCUtils.brainpoolP384r1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.11"</span>, OID);
ECCUtils.brainpoolP384t1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.12"</span>, OID);
ECCUtils.brainpoolP512r1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.13"</span>, OID);
ECCUtils.brainpoolP512t1 = new ByteString(<span class="literal">"1.3.36.3.3.2.8.1.1.14"</span>, OID);

<span class="comment">/* Test all curve parameter
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime192v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime192v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime192v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime239v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime239v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime239v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.prime256v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb163v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb163v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb163v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb176w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb191v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb191v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb191v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb208w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb239v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb239v2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb239v3);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb272w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb304w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb359v1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2pnb368w1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.c2tnb431r1);

var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp224r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp256r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp384r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.secp521r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect163r2);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect233r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect283r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect409r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.sect571r1);

var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP160r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP160t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP192r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP192t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP224r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP224t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP256r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP256t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP320r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP320t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP384r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP384t1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP512r1);
var k = new Key();
k.setComponent(Key.ECC_CURVE_OID, ECCUtils.brainpoolP512t1);
*/</span>
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 ARRDecorator.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" ARRDecorator.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-ARRDecorator.js.html" 
                                            target="classFrame">ARRDecorator.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


</TABLE>

</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="pkixcommon.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>pkixcommon.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		Common classes and functions for PKIX<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKIXCommon.html">PKIXCommon</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span> Common classes and functions for PKIX
 */</span>

 

<span class="comment">/**
 * Common functions and constants
 */</span>
<span class="reserved">function</span> PKIXCommon() {
}


PKIXCommon.digitalSignature	= 0x0080;
PKIXCommon.nonRepudiation		= 0x0040;
PKIXCommon.keyEncipherment		= 0x0020;
PKIXCommon.dataEncipherment	= 0x0010;
PKIXCommon.keyAgreement		= 0x0008;
PKIXCommon.keyCertSign			= 0x0004;
PKIXCommon.cRLSign				= 0x0002;
PKIXCommon.encipherOnly		= 0x0001;
PKIXCommon.decipherOnly		= 0x8000;


 
<span class="comment">/**
 * Convert integer to fixed length string with leading zeros.
 *
 * <span class="attrib">@private</span>
 * <span class="attrib">@param</span> {Number} value the value to convert to a string.
 * <span class="attrib">@param</span> {Number} digits the number of digits in output string. Must be &lt;= 20.
 * <span class="attrib">@return</span> the 0-padded string
 * <span class="attrib">@type</span> String
 */</span>
PKIXCommon.itos = <span class="reserved">function</span>(value, digits) {
	<span class="reserved">if</span> (digits &gt; 20) {
		throw new Error(<span class="literal">"Digits must be &lt;= 20"</span>);
	}
	var str = <span class="literal">""</span> + value;
	str = <span class="literal">"0000000000000000000"</span>.substr(19 - (digits - str.length)).concat(str);
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Convert date and time to UTC string with format YYMMDDHHMMSSZ.
 *
 * <span class="attrib">@param</span> {Date} d the date object.
 * <span class="attrib">@return</span> the date/time string.
 * <span class="attrib">@type</span> String
 */</span>
PKIXCommon.dtoUTC = <span class="reserved">function</span>(d) {
	var s = PKIXCommon.itos(d.getUTCFullYear() % 100, 2) +
			PKIXCommon.itos(d.getUTCMonth() + 1, 2) +
			PKIXCommon.itos(d.getUTCDate(), 2) +
			PKIXCommon.itos(d.getUTCHours(), 2) +
			PKIXCommon.itos(d.getUTCMinutes(), 2) +
			PKIXCommon.itos(d.getUTCSeconds(), 2) + <span class="literal">"Z"</span>;
	<span class="reserved">return</span> s;
}



<span class="comment">/**
 * Add the specified number of days to a date object
 * 
 * <span class="attrib">@param</span> {Date} d the date object
 * <span class="attrib">@param</span> {Number} days the number of days to add, may be negative
 * <span class="attrib">@type</span> Date
 * <span class="attrib">@return</span> a new Date object
 */</span>
PKIXCommon.addDays = <span class="reserved">function</span>(d, days) {
	var hour = d.getUTCHours();
	var minute = d.getUTCMinutes();
	var second = d.getUTCSeconds();
	var cd = new Date(d);
	cd.setHours(12);
	
	var ts = cd.getTime();
	ts += days * 24 * 60 * 60 * 1000;
	var nd = new Date(ts);
	
	nd.setUTCHours(hour);
	nd.setUTCMinutes(minute);
	nd.setUTCSeconds(second);
	<span class="reserved">return</span> nd;
}



<span class="comment">/**
 * Converts the integer value into a BIT STRING value.
 * &lt;p&gt;The function interprets the integer value as bitmap, where
 * bit 0 is the most significant bit of the least significant byte.&lt;/p&gt;
 * &lt;p&gt;The function adds the minimum number of bytes to the final bit string
 * and encodes the "number of unused bits at the beginning.&lt;/p&gt;
 * 
 * <span class="attrib">@param</span> {Number} val the value to convert
 * <span class="attrib">@return</span> the bit string
 * <span class="attrib">@type</span> ByteString
 */</span>
PKIXCommon.bitstringForInteger = <span class="reserved">function</span>(val) {
	var bb = new ByteBuffer();
	var b = 0;
	
	<span class="comment">// Encode starting with the least significant byte</span>
	<span class="reserved">while</span> (val &gt; 0) {
		b = val &amp; 0xFF;
		bb.append(b);
		val = val &gt;&gt; 8;
	}
	
	<span class="comment">// Determine number of unused bits</span>
	var i = 0;
	<span class="reserved">while</span> ((i &lt; 8) &amp;&amp; !(b &amp; 1)) {
		i++;
		b &gt;&gt;= 1;
	}
	
	bb.insert(0, i);
	<span class="reserved">return</span> bb.toByteString();
}



<span class="comment">/**
 * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
 *
 * This prevent interpretation of the integer representation if converted into
 * a signed ASN1 INTEGER.
 *
 * <span class="attrib">@param</span> {ByteString} value the value to convert
 * <span class="attrib">@return</span> the converted value
 * <span class="attrib">@type</span> ByteString
 */</span>
PKIXCommon.convertUnsignedInteger = <span class="reserved">function</span>(value) {
	assert(value.length &gt; 0);
	
	var i = 0;
	<span class="reserved">for</span> (var i = 0; (i &lt; value.length - 1) &amp;&amp; (value.byteAt(i) == 0); i++);
	
	<span class="reserved">if</span> (value.byteAt(i) &gt;= 0x80) {
		value = (new ByteString(<span class="literal">"00"</span>, HEX)).concat(value.bytes(i));
	} <span class="reserved">else</span> {
		value = value.bytes(i);
	}
	
	<span class="reserved">return</span> value;
}



<span class="comment">/**
 * Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.
 *
 * &lt;p&gt;The structure is defined as:&lt;/p&gt;
 * &lt;pre&gt;
 *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
 *		algorithm            AlgorithmIdentifier,
 *		subjectPublicKey     BIT STRING  }
 *
 *	AlgorithmIdentifier  ::=  SEQUENCE  {
 *		algorithm               OBJECT IDENTIFIER,
 *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 * 
 *	id-ecPublicKey OBJECT IDENTIFIER ::= {
 *		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }
 *
 *	ECParameters ::= CHOICE {
 *		namedCurve         OBJECT IDENTIFIER,
 *		implicitCurve      NULL,
 *		specifiedCurve     SpecifiedECDomain }
 * &lt;/pre&gt;
 * <span class="attrib">@return</span> the subjectPublicKey TLV structure
 * <span class="attrib">@type</span> ASN1
 */</span>
PKIXCommon.createECSubjectPublicKeyInfo = <span class="reserved">function</span>(publicKey, encodeECDomainParameter) {
	var t = new ASN1(<span class="literal">"subjectPublicKeyInfo"</span>, ASN1.SEQUENCE);

	var algorithm = new ASN1(<span class="literal">"algorithm"</span>, ASN1.SEQUENCE,
			new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.10045.2.1"</span>, OID))
		);

	<span class="reserved">if</span> (encodeECDomainParameter) {
		<span class="reserved">if</span> (publicKey.getComponent(Key.ECC_P)) {		<span class="comment">// Make sure curve components are available if only curve oid is defined</span>
			publicKey.setComponent(Key.ECC_CURVE_OID, publicKey.getComponent(Key.ECC_CURVE_OID));
		}
		var ecParameter = 
			new ASN1(<span class="literal">"ecParameters"</span>, ASN1.SEQUENCE,
				new ASN1(<span class="literal">"version"</span>, ASN1.INTEGER, new ByteString(<span class="literal">"01"</span>, HEX)),
				new ASN1(<span class="literal">"fieldID"</span>, ASN1.SEQUENCE,
					new ASN1(<span class="literal">"fieldType"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"prime-field"</span>, OID)),
					new ASN1(<span class="literal">"prime"</span>, ASN1.INTEGER, 
						PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_P)))
				),
				new ASN1(<span class="literal">"curve"</span>, ASN1.SEQUENCE,
					new ASN1(<span class="literal">"a"</span>, ASN1.OCTET_STRING, 
						PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_A))),
					new ASN1(<span class="literal">"b"</span>, ASN1.OCTET_STRING, 
						PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_B)))
				),
				new ASN1(<span class="literal">"base"</span>, ASN1.OCTET_STRING,
						(new ByteString(<span class="literal">"04"</span>, HEX)).concat(publicKey.getComponent(Key.ECC_GX)).concat(publicKey.getComponent(Key.ECC_GY))),
				new ASN1(<span class="literal">"order"</span>, ASN1.INTEGER,
					PKIXCommon.convertUnsignedInteger(publicKey.getComponent(Key.ECC_N)))
			);
		
		var cofactor = publicKey.getComponent(Key.ECC_H);
		var i = 0;
		<span class="reserved">for</span> (; (i &lt; cofactor.length) &amp;&amp; (cofactor.byteAt(i) == 0); i++);
		<span class="reserved">if</span> (i &lt; cofactor.length) {
			ecParameter.add(new ASN1(<span class="literal">"cofactor"</span>, ASN1.INTEGER, cofactor.bytes(i)));
		}
		algorithm.add(ecParameter);	
	} <span class="reserved">else</span> {
		algorithm.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.OBJECT_IDENTIFIER, publicKey.getComponent(Key.ECC_CURVE_OID)));
	}
	
	t.add(algorithm);
	
	<span class="comment">// Prefix a 00 to form correct bitstring</span>
	<span class="comment">// Prefix a 04 to indicate uncompressed format</span>
	var keybin = new ByteString(<span class="literal">"0004"</span>, HEX);
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QX));
	keybin = keybin.concat(publicKey.getComponent(Key.ECC_QY));
	t.add(new ASN1(<span class="literal">"subjectPublicKey"</span>, ASN1.BIT_STRING, keybin));

	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Creates the RSA Public Key as subjectPublicKeyInfo TLV structure object.
 *
 * &lt;p&gt;The structure is defined as:&lt;/p&gt;
 * &lt;pre&gt;
 *	SubjectPublicKeyInfo  ::=  SEQUENCE  {
 *		algorithm            AlgorithmIdentifier,
 *		subjectPublicKey     BIT STRING  }
 *
 *	AlgorithmIdentifier  ::=  SEQUENCE  {
 *		algorithm               OBJECT IDENTIFIER,
 *		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 * 
 *	pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }
 *
 *	rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}
 *
 *	RSAPublicKey ::= SEQUENCE {
 *		modulus            INTEGER,    -- n
 *		publicExponent     INTEGER  }  -- e
 * &lt;/pre&gt;
 *
 * <span class="attrib">@return</span> the subjectPublicKey TLV structure
 * <span class="attrib">@type</span> ASN1
 */</span>
PKIXCommon.createRSASubjectPublicKeyInfo = <span class="reserved">function</span>(publicKey) {
	var t = new ASN1(<span class="literal">"subjectPublicKeyInfo"</span>, ASN1.SEQUENCE);
	
	t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.SEQUENCE,
		new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.113549.1.1.1"</span>, OID)),
		new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX))
	       ));
	<span class="comment">// Prefix a 00 to form correct bitstring</span>
	var keybin = new ByteString(<span class="literal">"00"</span>, HEX);

	var modulus = publicKey.getComponent(Key.MODULUS);
	modulus = PKIXCommon.convertUnsignedInteger(modulus);
	
	var exponent = publicKey.getComponent(Key.EXPONENT);
	exponent = PKIXCommon.convertUnsignedInteger(exponent);

	var rsapub = new ASN1(<span class="literal">"RSAPublicKey"</span>, ASN1.SEQUENCE,
			new ASN1(<span class="literal">"modulus"</span>, ASN1.INTEGER, modulus),
			new ASN1(<span class="literal">"publicKeyExponent"</span>, ASN1.INTEGER, exponent));

	keybin = keybin.concat(rsapub.getBytes());
	t.add(new ASN1(<span class="literal">"subjectPublicKey"</span>, ASN1.BIT_STRING, keybin));

	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Creates a relative distinguished name component.
 *
 * &lt;p&gt;The structure is defined as:&lt;/p&gt;
 * &lt;pre&gt;
 *	RelativeDistinguishedName ::=
 *		SET SIZE (1..MAX) OF AttributeTypeAndValue
 *
 *	AttributeTypeAndValue ::= SEQUENCE {
 *		type     AttributeType,
 *		value    AttributeValue }
 *
 *	AttributeType ::= OBJECT IDENTIFIER
 *
 *	AttributeValue ::= ANY -- DEFINED BY AttributeType
 *
 *	DirectoryString ::= CHOICE {
 *		teletexString           TeletexString (SIZE (1..MAX)),
 *		printableString         PrintableString (SIZE (1..MAX)),
 *		universalString         UniversalString (SIZE (1..MAX)),
 *		utf8String              UTF8String (SIZE (1..MAX)),
 *		bmpString               BMPString (SIZE (1..MAX)) }
 *&lt;/pre&gt;
 *
 * <span class="attrib">@param</span> {String} name the components name
 * <span class="attrib">@param</span> {String} oid the oid for the RDN
 * <span class="attrib">@param</span> {ASN1} value the value object
 * <span class="attrib">@return</span> the 
 */</span>
PKIXCommon.makeRDN = <span class="reserved">function</span>(name, oid, value) {
	<span class="reserved">return</span> new ASN1(name, ASN1.SET,
				new ASN1(ASN1.SEQUENCE,
					new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(oid, OID)),
					value
				)
			);
}



<span class="comment">/**
 * Adds names from the name object to the RDNSequence.
 *
 * <span class="attrib">@param</span> {ASN1} t the sequence object
 * <span class="attrib">@param</span> {Object} name the name object
 */</span>
PKIXCommon.addNames = <span class="reserved">function</span>(t, name) {
	<span class="reserved">if</span> (name.C) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"country"</span>, <span class="literal">"id-at-countryName"</span>, new ASN1(ASN1.PrintableString, new ByteString(name.C, ASCII))));
	}
	<span class="reserved">if</span> (name.O) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"organization"</span>, <span class="literal">"id-at-organizationName"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.O, UTF8))));
	}
	<span class="reserved">if</span> (name.OU) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"organizationalUnit"</span>, <span class="literal">"id-at-organizationalUnitName"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.OU, UTF8))));
	}
	<span class="reserved">if</span> (name.S) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"stateOrProvince"</span>, <span class="literal">"id-at-stateOrProvinceName"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.S, UTF8))));
	}
	<span class="reserved">if</span> (name.L) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"locality"</span>, <span class="literal">"id-at-localityName"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.L, UTF8))));
	}
	<span class="reserved">if</span> (name.DC) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"domainComponent"</span>, <span class="literal">"id-domainComponent"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.DC, UTF8))));
	}
	<span class="reserved">if</span> (name.T) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"title"</span>, <span class="literal">"id-at-title"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.T, UTF8))));
	}
	<span class="reserved">if</span> (name.G) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"givenName"</span>, <span class="literal">"id-at-givenName"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.G, UTF8))));
	}
	<span class="reserved">if</span> (name.SN) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"surname"</span>, <span class="literal">"id-at-surname"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.SN, UTF8))));
	}
	<span class="reserved">if</span> (name.CN) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"commonName"</span>, <span class="literal">"id-at-commonName"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.CN, UTF8))));
	}
	<span class="reserved">if</span> (name.SERIALNUMBER) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"serialNumber"</span>, <span class="literal">"id-at-serialNumber"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.SERIALNUMBER, UTF8))));
	}
	<span class="reserved">if</span> (name.DNQ) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"dnQualifier"</span>, <span class="literal">"id-at-dnQualifier"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.DNQ, UTF8))));
	}
	<span class="reserved">if</span> (name.E) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"emailAddress"</span>, <span class="literal">"id-emailAddress"</span>, new ASN1(ASN1.IA5String, new ByteString(name.E, ASCII))));
	}
	<span class="reserved">if</span> (name.UID) {
		t.add(PKIXCommon.makeRDN(<span class="literal">"userId"</span>, <span class="literal">"id-userId"</span>, new ASN1(ASN1.UTF8String, new ByteString(name.UID, UTF8))));
	}
}



<span class="comment">/**
 * Gets the dn as TLV object
 *
 * &lt;p&gt;This function support two format for names&lt;/p&gt;
 * &lt;pre&gt;
 *  var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * or
 *  var issuer = [ { C:"UT"}, { O:"ACME Corporation" }, { CN:"Test-CA"} ];
 * &lt;/pre&gt;
 *
 * &lt;p&gt;It supports the following RDNs:&lt;/p&gt;
 * &lt;ul&gt;
 * &lt;li&gt;C - country&lt;/li&gt;
 * &lt;li&gt;O - organization&lt;/li&gt;
 * &lt;li&gt;OU - organizational unit&lt;/li&gt;
 * &lt;li&gt;S - state or province&lt;/li&gt;
 * &lt;li&gt;L - locality&lt;/li&gt;
 * &lt;li&gt;T - title&lt;/li&gt;
 * &lt;li&gt;G - given name&lt;/li&gt;
 * &lt;li&gt;SN - surname&lt;/li&gt;
 * &lt;li&gt;CN - common name&lt;/li&gt;
 * &lt;li&gt;SERIALNUMBER - serial number&lt;/li&gt;
 * &lt;p&gt;The first format sorts the RDS in the sequence C,O,OU,S,L,T,G,SN,CN,SERIALNUMBER&lt;/p&gt;
 * &lt;/ul&gt;
 * <span class="attrib">@param</span> {Object} name the name object
 * <span class="attrib">@return</span> the RDNSequence
 * <span class="attrib">@type</span> ASN1
 */</span>
PKIXCommon.encodeName = <span class="reserved">function</span>(name) {
	var t = new ASN1(<span class="literal">"subject"</span>, ASN1.SEQUENCE);
	<span class="reserved">if</span> (typeof(name.C) == <span class="literal">"undefined"</span>) {
		<span class="reserved">for</span> (var i = 0; i &lt; name.length; i++) {
			PKIXCommon.addNames(t, name[i]);
		}
	} <span class="reserved">else</span> {
		PKIXCommon.addNames(t, name);
	}
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Writes a byte string object to file
 *
 * &lt;p&gt;The filename is mapped to the workspace location.&lt;/p&gt;
 *
 * <span class="attrib">@param</span> {String} filename the fully qualified name of the file
 * <span class="attrib">@param</span> {ByteString} content the content to write
 */</span>
PKIXCommon.writeFileToDisk = <span class="reserved">function</span>(filename, content) {
	var file = new java.io.FileOutputStream(filename);
	file.write(content);
	file.close();
}



<span class="comment">/**
 * Loads a binary file from disk
 *
 * <span class="attrib">@param</span> {String} filename the fully qualified file name
 * <span class="attrib">@return</span> the binary content
 * <span class="attrib">@type</span> ByteString
 */</span>
PKIXCommon.readFileFromDisk = <span class="reserved">function</span>(filename) {
	<span class="comment">// Open stream</span>
	var f = new java.io.FileInputStream(filename);
	
	<span class="comment">// Determine file size</span>
	var flen = f.available();

	<span class="comment">// Allocate native byte array</span>
	var bs = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, flen);
	
	<span class="comment">// Read into byte array</span>
	var len = f.read(bs);

	f.close();
	
	<span class="comment">// Allocate JavaScript ByteBuffer from native/wrapped byte array</span>
	var bb = new ByteBuffer(bs);
	
	<span class="comment">// Convert to JavaScript ByteString</span>
	var data = bb.toByteString();

	<span class="reserved">return</span> data;
}



PKIXCommon.test = <span class="reserved">function</span>() {
	var issuer = { C:<span class="literal">"C"</span>, O:<span class="literal">"O"</span>, OU:<span class="literal">"OU"</span>, SP:<span class="literal">"SP"</span>, L:<span class="literal">"L"</span>, DC:<span class="literal">"DC"</span>, T:<span class="literal">"T"</span>, G:<span class="literal">"G"</span>, SN:<span class="literal">"SN"</span>, CN:<span class="literal">"CN"</span>, SERIALNUMBER:<span class="literal">"serial"</span>, DNQ:<span class="literal">"DNQ"</span> };
	var dn = PKIXCommon.encodeName(issuer);
	print(dn);
	
	var r = PKIXCommon.convertUnsignedInteger(new ByteString(<span class="literal">"00"</span>, HEX));
	assert(r.toString(HEX) == <span class="literal">"00"</span>);
	var r = PKIXCommon.convertUnsignedInteger(new ByteString(<span class="literal">"80"</span>, HEX));
	assert(r.toString(HEX) == <span class="literal">"0080"</span>);
	var r = PKIXCommon.convertUnsignedInteger(new ByteString(<span class="literal">"FF"</span>, HEX));
	assert(r.toString(HEX) == <span class="literal">"00FF"</span>);
	var r = PKIXCommon.convertUnsignedInteger(new ByteString(<span class="literal">"0000"</span>, HEX));
	assert(r.toString(HEX) == <span class="literal">"00"</span>);
	var r = PKIXCommon.convertUnsignedInteger(new ByteString(<span class="literal">"0080"</span>, HEX));
	assert(r.toString(HEX) == <span class="literal">"0080"</span>);
	var r = PKIXCommon.convertUnsignedInteger(new ByteString(<span class="literal">"000080"</span>, HEX));
	assert(r.toString(HEX) == <span class="literal">"0080"</span>);

}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
ECCUtils
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="ECCUtils";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-eccutils.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="DataOutline.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="File.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class ECCUtils</H2>
<PRE>Object
   |
   +--<b>ECCUtils</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>ECCUtils</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-eccutils.js.html'>eccutils.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP160r1">brainpoolP160r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP160t1">brainpoolP160t1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP192r1">brainpoolP192r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP192t1">brainpoolP192t1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP224r1">brainpoolP224r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP224t1">brainpoolP224t1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP256r1">brainpoolP256r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP256t1">brainpoolP256t1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP320r1">brainpoolP320r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP320t1">brainpoolP320t1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP384r1">brainpoolP384r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP384t1">brainpoolP384t1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP512r1">brainpoolP512r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!brainpoolP512t1">brainpoolP512t1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb163v1">c2pnb163v1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb163v2">c2pnb163v2</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb163v3">c2pnb163v3</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb176w1">c2pnb176w1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb208w1">c2pnb208w1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb272w1">c2pnb272w1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb304w1">c2pnb304w1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2pnb368w1">c2pnb368w1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb191v1">c2tnb191v1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb191v2">c2tnb191v2</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb191v3">c2tnb191v3</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb239v1">c2tnb239v1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb239v2">c2tnb239v2</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb239v3">c2tnb239v3</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb359v1">c2tnb359v1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!c2tnb431r1">c2tnb431r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!PAD">PAD</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!prime192v1">prime192v1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!prime192v2">prime192v2</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!prime192v3">prime192v3</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!prime239v1">prime239v1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!prime239v2">prime239v2</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!prime239v3">prime239v3</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!prime256v1">prime256v1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!secp224r1">secp224r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!secp256r1">secp256r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!secp384r1">secp384r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!secp521r1">secp521r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!sect163r2">sect163r2</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!sect233r1">sect233r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!sect283r1">sect283r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!sect409r1">sect409r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!sect571r1">sect571r1</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#ECCUtils()">ECCUtils</A></B>()
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!decodeECParameters">decodeECParameters</A></B>(tlv)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Decode domain parameter from ECParameters


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!ECParametersToString">ECParametersToString</A></B>(key)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!I2O">I2O</A></B>(value, length)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Integer to octet string conversion
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!unwrapSignature">unwrapSignature</A></B>(signature, keylen)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
 of the unsigned integer r and s
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!wrapSignature">wrapSignature</A></B>(signature)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Wrap a ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="!s!brainpoolP160r1"><!-- --></A>
   <H3>brainpoolP160r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP160r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP160t1"><!-- --></A>
   <H3>brainpoolP160t1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP160t1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP192r1"><!-- --></A>
   <H3>brainpoolP192r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP192r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP192t1"><!-- --></A>
   <H3>brainpoolP192t1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP192t1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP224r1"><!-- --></A>
   <H3>brainpoolP224r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP224r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP224t1"><!-- --></A>
   <H3>brainpoolP224t1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP224t1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP256r1"><!-- --></A>
   <H3>brainpoolP256r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP256r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP256t1"><!-- --></A>
   <H3>brainpoolP256t1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP256t1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP320r1"><!-- --></A>
   <H3>brainpoolP320r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP320r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP320t1"><!-- --></A>
   <H3>brainpoolP320t1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP320t1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP384r1"><!-- --></A>
   <H3>brainpoolP384r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP384r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP384t1"><!-- --></A>
   <H3>brainpoolP384t1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP384t1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP512r1"><!-- --></A>
   <H3>brainpoolP512r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP512r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!brainpoolP512t1"><!-- --></A>
   <H3>brainpoolP512t1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>brainpoolP512t1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb163v1"><!-- --></A>
   <H3>c2pnb163v1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb163v1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb163v2"><!-- --></A>
   <H3>c2pnb163v2</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb163v2</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb163v3"><!-- --></A>
   <H3>c2pnb163v3</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb163v3</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb176w1"><!-- --></A>
   <H3>c2pnb176w1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb176w1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb208w1"><!-- --></A>
   <H3>c2pnb208w1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb208w1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb272w1"><!-- --></A>
   <H3>c2pnb272w1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb272w1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb304w1"><!-- --></A>
   <H3>c2pnb304w1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb304w1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2pnb368w1"><!-- --></A>
   <H3>c2pnb368w1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2pnb368w1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb191v1"><!-- --></A>
   <H3>c2tnb191v1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb191v1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb191v2"><!-- --></A>
   <H3>c2tnb191v2</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb191v2</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb191v3"><!-- --></A>
   <H3>c2tnb191v3</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb191v3</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb239v1"><!-- --></A>
   <H3>c2tnb239v1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb239v1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb239v2"><!-- --></A>
   <H3>c2tnb239v2</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb239v2</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb239v3"><!-- --></A>
   <H3>c2tnb239v3</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb239v3</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb359v1"><!-- --></A>
   <H3>c2tnb359v1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb359v1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!c2tnb431r1"><!-- --></A>
   <H3>c2tnb431r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>c2tnb431r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!PAD"><!-- --></A>
   <H3>PAD</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>PAD</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!prime192v1"><!-- --></A>
   <H3>prime192v1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>prime192v1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!prime192v2"><!-- --></A>
   <H3>prime192v2</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>prime192v2</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!prime192v3"><!-- --></A>
   <H3>prime192v3</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>prime192v3</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!prime239v1"><!-- --></A>
   <H3>prime239v1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>prime239v1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!prime239v2"><!-- --></A>
   <H3>prime239v2</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>prime239v2</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!prime239v3"><!-- --></A>
   <H3>prime239v3</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>prime239v3</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!prime256v1"><!-- --></A>
   <H3>prime256v1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>prime256v1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!secp224r1"><!-- --></A>
   <H3>secp224r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>secp224r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!secp256r1"><!-- --></A>
   <H3>secp256r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>secp256r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!secp384r1"><!-- --></A>
   <H3>secp384r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>secp384r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!secp521r1"><!-- --></A>
   <H3>secp521r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>secp521r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!sect163r2"><!-- --></A>
   <H3>sect163r2</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>sect163r2</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!sect233r1"><!-- --></A>
   <H3>sect233r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>sect233r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!sect283r1"><!-- --></A>
   <H3>sect283r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>sect283r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!sect409r1"><!-- --></A>
   <H3>sect409r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>sect409r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!sect571r1"><!-- --></A>
   <H3>sect571r1</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>sect571r1</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="ECCUtils()"><!-- --></A><H3>
ECCUtils</H3>
<PRE><B>ECCUtils</B>()</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="!s!decodeECParameters"><!-- --></A>
   <H3>decodeECParameters</H3>
   <PRE>&lt;static&gt; Object <B>decodeECParameters</B>(tlv)</PRE>
   
      <UL>Decode domain parameter from ECParameters

 <pre>
	ECParameters ::= SEQUENCE {
		version INTEGER{ecpVer1(1)} (ecpVer1),
		fieldID FieldID,
		curve Curve,
		base ECPoint,
		order INTEGER,
		cofactor INTEGER OPTIONAL,
		...
	}

	Curve ::= SEQUENCE {
		a FieldElement,
		b FieldElement,
		seed BIT STRING OPTIONAL
	}

	FieldElement ::= OCTET STRING
	ECPoint ::= OCTET STRING
	FieldID ::= SEQUENCE {
		fieldType OBJECT IDENTIFIER,
		parameters ANY DEFINED BY fieldType
	}
	prime-field OBJECT IDENTIFIER ::= { ansi-x9-62 fieldType(1) 1 }
	Prime-p ::= INTEGER
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!ECParametersToString"><!-- --></A>
   <H3>ECParametersToString</H3>
   <PRE>&lt;static&gt; Object <B>ECParametersToString</B>(key)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!I2O"><!-- --></A>
   <H3>I2O</H3>
   <PRE>&lt;static&gt; Object <B>I2O</B>(value, length)</PRE>
   
      <UL>Integer to octet string conversion</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!unwrapSignature"><!-- --></A>
   <H3>unwrapSignature</H3>
   <PRE>&lt;static&gt; Object <B>unwrapSignature</B>(signature, keylen)</PRE>
   
      <UL>Unwrap a ECDSA signature from the TLV encoding according to RFC3279 into the concatenation
 of the unsigned integer r and s</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>signature</CODE> -  TLV encoded signature  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        concatenation of r and s 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!wrapSignature"><!-- --></A>
   <H3>wrapSignature</H3>
   <PRE>&lt;static&gt; Object <B>wrapSignature</B>(signature)</PRE>
   
      <UL>Wrap a ECDSA signature in the format r || s into a TLV encoding as defined by RFC 3279</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>signature</CODE> -  ByteString containing the concatenation of r and s as unsigned integer values  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        ASN.1 SEQUENCE objects containing two signed integer r and s 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-eccutils.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="DataOutline.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="File.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
X509CertificateGenerator
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="X509CertificateGenerator";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-x509certificategenerator.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestStepRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="X509Name.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class X509CertificateGenerator</H2>
<PRE>Object
   |
   +--<b>X509CertificateGenerator</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>X509CertificateGenerator</B>
   

</DL>
   
   <P>
   <BR/>Class implementing a X.509 certificate generator
 <BR/><I>Defined in <a href='overview-summary-x509certificategenerator.js.html'>x509certificategenerator.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#crypto">crypto</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#encodeECDomainParameter">encodeECDomainParameter</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!cRLSign">cRLSign</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!dataEncipherment">dataEncipherment</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!decipherOnly">decipherOnly</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!digitalSignature">digitalSignature</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!encipherOnly">encipherOnly</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyAgreement">keyAgreement</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyCertSign">keyCertSign</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyEncipherment">keyEncipherment</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!nonRepudiation">nonRepudiation</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#X509CertificateGenerator()">X509CertificateGenerator</A></B>(&lt;Crypto&gt; crypto)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a X.509 certificate generator.
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addAuthorityKeyIdentifierExtension">addAuthorityKeyIdentifierExtension</A></B>(&lt;Key&gt; publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the authority public key identifier extension based on the issuers key.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addBasicConstraintsExtension">addBasicConstraintsExtension</A></B>(&lt;Boolean&gt; cA, &lt;Number&gt; pathLenConstraint)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the BasicConstraints extension.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addCRLDistributionPointURL">addCRLDistributionPointURL</A></B>(&lt;String[]&gt; url)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the CRL distribution point URLs.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addExtendedKeyUsages">addExtendedKeyUsages</A></B>(&lt;String[]&gt; oids, &lt;Boolean&gt; critical)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the extended key usage extension
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addExtension">addExtension</A></B>(&lt;String&gt; extnID, &lt;Boolean&gt; critical, extnValue)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds an extension to the certificate


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addKeyUsageExtension">addKeyUsageExtension</A></B>(flags)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the key usage extension.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addSubjectKeyIdentifierExtension">addSubjectKeyIdentifierExtension</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the subject public key identifier extension based on the certificates subject key.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;X509</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#generateX509Certificate">generateX509Certificate</A></B>(privateKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Generates the certificate.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getExtensions">getExtensions</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the certificate extension as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getIssuer">getIssuer</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the issuer name as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getSignatureAlgorithm">getSignatureAlgorithm</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the signature algorithm TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getSubject">getSubject</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the subject name as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getSubjectPublicKeyInfo">getSubjectPublicKeyInfo</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the subject's public key as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getTbsCertificate">getTbsCertificate</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the part of the certificate that will be signed
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getValidity">getValidity</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the certificate validity as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#reset">reset</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Resets all internal state variables.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setIssuer">setIssuer</A></B>(&lt;Object&gt; issuer)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the isser name.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setNotAfter">setNotAfter</A></B>(date)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the expiration date for the certificate.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setNotBefore">setNotBefore</A></B>(date)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the effective date for the certificate.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setPublicKey">setPublicKey</A></B>(&lt;Key&gt; publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the subjects public key


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setSerialNumber">setSerialNumber</A></B>(&lt;ByteString&gt; serialNumber)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the serial number.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setSignatureAlgorithm">setSignatureAlgorithm</A></B>(&lt;Number&gt; alg)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the signature algorithm.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setSubject">setSubject</A></B>(&lt;Object&gt; subject)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the subject name.
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="crypto"><!-- --></A>
   <H3>crypto</H3>
   <PRE>Object&nbsp;<B>crypto</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="encodeECDomainParameter"><!-- --></A>
   <H3>encodeECDomainParameter</H3>
   <PRE>Object&nbsp;<B>encodeECDomainParameter</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!cRLSign"><!-- --></A>
   <H3>cRLSign</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>cRLSign</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!dataEncipherment"><!-- --></A>
   <H3>dataEncipherment</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>dataEncipherment</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!decipherOnly"><!-- --></A>
   <H3>decipherOnly</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>decipherOnly</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!digitalSignature"><!-- --></A>
   <H3>digitalSignature</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>digitalSignature</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!encipherOnly"><!-- --></A>
   <H3>encipherOnly</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>encipherOnly</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyAgreement"><!-- --></A>
   <H3>keyAgreement</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyAgreement</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyCertSign"><!-- --></A>
   <H3>keyCertSign</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyCertSign</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyEncipherment"><!-- --></A>
   <H3>keyEncipherment</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyEncipherment</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!nonRepudiation"><!-- --></A>
   <H3>nonRepudiation</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>nonRepudiation</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="X509CertificateGenerator()"><!-- --></A><H3>
X509CertificateGenerator</H3>
<PRE><B>X509CertificateGenerator</B>(&lt;Crypto&gt; crypto)</PRE>


<UL>
   Create a X.509 certificate generator.
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>crypto</CODE> -  the crypto provider to use for signing operations    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="addAuthorityKeyIdentifierExtension"><!-- --></A>
   <H3>addAuthorityKeyIdentifierExtension</H3>
   <PRE>void <B>addAuthorityKeyIdentifierExtension</B>(&lt;Key&gt; publicKey)</PRE>
   
      <UL>Adds the authority public key identifier extension based on the issuers key.

 <p>The key identifier is calculated as SHA-1 hash over the contents of the
 issuer public key (Without tag, length and number of unused bits.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>publicKey</CODE> -  the authority subject key    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addBasicConstraintsExtension"><!-- --></A>
   <H3>addBasicConstraintsExtension</H3>
   <PRE>void <B>addBasicConstraintsExtension</B>(&lt;Boolean&gt; cA, &lt;Number&gt; pathLenConstraint)</PRE>
   
      <UL>Adds the BasicConstraints extension.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>cA</CODE> -  the certificate belongs to a CA  
      </UL> 
   
     <UL><CODE>pathLenConstraint</CODE> -  the maximum number of subordinate CA certificates    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addCRLDistributionPointURL"><!-- --></A>
   <H3>addCRLDistributionPointURL</H3>
   <PRE>void <B>addCRLDistributionPointURL</B>(&lt;String[]&gt; url)</PRE>
   
      <UL>Adds the CRL distribution point URLs.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>url</CODE> -  a list of URLs    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addExtendedKeyUsages"><!-- --></A>
   <H3>addExtendedKeyUsages</H3>
   <PRE>void <B>addExtendedKeyUsages</B>(&lt;String[]&gt; oids, &lt;Boolean&gt; critical)</PRE>
   
      <UL>Adds the extended key usage extension</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>oids</CODE> -  the list of object identifier names  
      </UL> 
   
     <UL><CODE>critical</CODE> -  the extension is critical    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addExtension"><!-- --></A>
   <H3>addExtension</H3>
   <PRE>void <B>addExtension</B>(&lt;String&gt; extnID, &lt;Boolean&gt; critical, extnValue)</PRE>
   
      <UL>Adds an extension to the certificate

 <p>The structure is defined as:</p>
 <pre>
    Extension  ::=  SEQUENCE  {
        extnID      OBJECT IDENTIFIER,
        critical    BOOLEAN DEFAULT FALSE,
        extnValue   OCTET STRING
                    -- contains the DER encoding of an ASN.1 value
                    -- corresponding to the extension type identified
                    -- by extnID
        }
</pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>extnID</CODE> -  the extensions object identifier  
      </UL> 
   
     <UL><CODE>critical</CODE> -  the extension is critical  
      </UL> 
   
     <UL><CODE>the</CODE> -  extension value as ByteString    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addKeyUsageExtension"><!-- --></A>
   <H3>addKeyUsageExtension</H3>
   <PRE>void <B>addKeyUsageExtension</B>(flags)</PRE>
   
      <UL>Adds the key usage extension.

 <p>The following flags are defined:</p>
 <pre>
 PKIXCommon.digitalSignature = 0x0080;
 PKIXCommon.nonRepudiation   = 0x0040;
 PKIXCommon.keyEncipherment  = 0x0020;
 PKIXCommon.dataEncipherment = 0x0010;
 PKIXCommon.keyAgreement     = 0x0008;
 PKIXCommon.keyCertSign      = 0x0004;
 PKIXCommon.cRLSign          = 0x0002;
 PKIXCommon.encipherOnly     = 0x0001;
 PKIXCommon.decipherOnly     = 0x8000;
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  key usage flags as combination of the flags defined above.    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addSubjectKeyIdentifierExtension"><!-- --></A>
   <H3>addSubjectKeyIdentifierExtension</H3>
   <PRE>void <B>addSubjectKeyIdentifierExtension</B>()</PRE>
   
      <UL>Adds the subject public key identifier extension based on the certificates subject key.

 <p>The key identifier is calculated as SHA-1 hash over the contents of the
 subject public key (Without tag, length and number of unused bits.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="generateX509Certificate"><!-- --></A>
   <H3>generateX509Certificate</H3>
   <PRE>X509 <B>generateX509Certificate</B>(privateKey)</PRE>
   
      <UL>Generates the certificate.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the generated certificate   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getExtensions"><!-- --></A>
   <H3>getExtensions</H3>
   <PRE>ASN1 <B>getExtensions</B>()</PRE>
   
      <UL>Gets the certificate extension as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the certificate extensions   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getIssuer"><!-- --></A>
   <H3>getIssuer</H3>
   <PRE>ASN1 <B>getIssuer</B>()</PRE>
   
      <UL>Gets the issuer name as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the issuer RDNSequence   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getSignatureAlgorithm"><!-- --></A>
   <H3>getSignatureAlgorithm</H3>
   <PRE>ASN1 <B>getSignatureAlgorithm</B>()</PRE>
   
      <UL>Gets the signature algorithm TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the signature algorithm object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getSubject"><!-- --></A>
   <H3>getSubject</H3>
   <PRE>ASN1 <B>getSubject</B>()</PRE>
   
      <UL>Gets the subject name as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the issuer RDNSequence   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getSubjectPublicKeyInfo"><!-- --></A>
   <H3>getSubjectPublicKeyInfo</H3>
   <PRE>ASN1 <B>getSubjectPublicKeyInfo</B>()</PRE>
   
      <UL>Gets the subject's public key as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the subject's public key info   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getTbsCertificate"><!-- --></A>
   <H3>getTbsCertificate</H3>
   <PRE>ASN1 <B>getTbsCertificate</B>()</PRE>
   
      <UL>Gets the part of the certificate that will be signed</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the TBSCertificate part   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getValidity"><!-- --></A>
   <H3>getValidity</H3>
   <PRE>ASN1 <B>getValidity</B>()</PRE>
   
      <UL>Gets the certificate validity as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the certificates validity   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="reset"><!-- --></A>
   <H3>reset</H3>
   <PRE>void <B>reset</B>()</PRE>
   
      <UL>Resets all internal state variables.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setIssuer"><!-- --></A>
   <H3>setIssuer</H3>
   <PRE>void <B>setIssuer</B>(&lt;Object&gt; issuer)</PRE>
   
      <UL>Sets the isser name.

 <p>The issuer name must be a JavaScript object containing the properties:</p>
 <ul>
  <li>C - the country</li>
  <li>O - the organization</li>
  <li>OU - the organization unit</li>
  <li>CN - the common name</li>
 </ul>
 <p>Example:</p>
 <pre>
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>issuer</CODE> -  the issuer name    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setNotAfter"><!-- --></A>
   <H3>setNotAfter</H3>
   <PRE>void <B>setNotAfter</B>(date)</PRE>
   
      <UL>Sets the expiration date for the certificate.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>String</CODE> -  or Date} date the date in format YYMMDDHHMMSSZ    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setNotBefore"><!-- --></A>
   <H3>setNotBefore</H3>
   <PRE>void <B>setNotBefore</B>(date)</PRE>
   
      <UL>Sets the effective date for the certificate.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>String</CODE> -  or Date} date the date in format YYMMDDHHMMSSZ    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setPublicKey"><!-- --></A>
   <H3>setPublicKey</H3>
   <PRE>void <B>setPublicKey</B>(&lt;Key&gt; publicKey)</PRE>
   
      <UL>Sets the subjects public key

 <p>The methods accepts ECC and RSA Public Keys.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>publicKey</CODE> -  the subjects public key    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setSerialNumber"><!-- --></A>
   <H3>setSerialNumber</H3>
   <PRE>void <B>setSerialNumber</B>(&lt;ByteString&gt; serialNumber)</PRE>
   
      <UL>Sets the serial number.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>serialNumber</CODE> -  the serial number for the certificate    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setSignatureAlgorithm"><!-- --></A>
   <H3>setSignatureAlgorithm</H3>
   <PRE>void <B>setSignatureAlgorithm</B>(&lt;Number&gt; alg)</PRE>
   
      <UL>Sets the signature algorithm. Currently only Crypto.RSA is supported</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>alg</CODE> -  the signature algorithm, only Crypto.RSA supported    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setSubject"><!-- --></A>
   <H3>setSubject</H3>
   <PRE>void <B>setSubject</B>(&lt;Object&gt; subject)</PRE>
   
      <UL>Sets the subject name.

 <p>The subject name must be a JavaScript object containing the properties:</p>
 <ul>
  <li>C - the country</li>
  <li>O - the organization</li>
  <li>OU - the organization unit</li>
  <li>CN - the common name</li>
 </ul>
 <p>Example:</p>
 <pre>
	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>subject</CODE> -  the subject name    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-x509certificategenerator.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestStepRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="X509Name.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
File
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="File";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-file.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="ECCUtils.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="GLOBALS.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class File</H2>
<PRE>Object
   |
   +--<b>File</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>File</B>
   

</DL>
   
   <P>
   <BR/>Class implementing basic support for files
 <BR/><I>Defined in <a href='overview-summary-file.js.html'>file.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#name">name</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#File()">File</A></B>(&lt;String&gt; name)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a reference to a file system object (file or directory)
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#close">close</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Close streams associated with file
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getAbsolutePath">getAbsolutePath</A></B>(&lt;Number&gt; mode)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Return absolute path
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;<a href="File.html">File</a></CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getParentFile">getParentFile</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Return the parent file of this file object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String[]</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#list">list</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Return list of files contained in the directory referenced by the File object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#readAllAsBinary">readAllAsBinary</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Read complete file into ByteString object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#readAllAsString">readAllAsString</A></B>(encoding)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Read complete file into String object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#writeAll">writeAll</A></B>(&lt;Object&gt; obj, encoding)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Write the object to file
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!test">test</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="name"><!-- --></A>
   <H3>name</H3>
   <PRE>Object&nbsp;<B>name</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="File()"><!-- --></A><H3>
File</H3>
<PRE><B>File</B>(&lt;String&gt; name)</PRE>


<UL>
   Create a reference to a file system object (file or directory)
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  relative or absolute file path    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="close"><!-- --></A>
   <H3>close</H3>
   <PRE>void <B>close</B>()</PRE>
   
      <UL>Close streams associated with file</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getAbsolutePath"><!-- --></A>
   <H3>getAbsolutePath</H3>
   <PRE>String <B>getAbsolutePath</B>(&lt;Number&gt; mode)</PRE>
   
      <UL>Return absolute path</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>mode</CODE> -  one of GPSystem.AUTO, GPSystem.CWD, GPSystem.USR or GPSystem.SYS. See GPSystem.mapFilename() for details  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the absolute path 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getParentFile"><!-- --></A>
   <H3>getParentFile</H3>
   <PRE><a href="File.html">File</a> <B>getParentFile</B>()</PRE>
   
      <UL>Return the parent file of this file object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the parent file object or null 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="list"><!-- --></A>
   <H3>list</H3>
   <PRE>String[] <B>list</B>()</PRE>
   
      <UL>Return list of files contained in the directory referenced by the File object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the list of file names 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="readAllAsBinary"><!-- --></A>
   <H3>readAllAsBinary</H3>
   <PRE>ByteString <B>readAllAsBinary</B>()</PRE>
   
      <UL>Read complete file into ByteString object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the binary content 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="readAllAsString"><!-- --></A>
   <H3>readAllAsString</H3>
   <PRE>String <B>readAllAsString</B>(encoding)</PRE>
   
      <UL>Read complete file into String object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the text content 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="writeAll"><!-- --></A>
   <H3>writeAll</H3>
   <PRE>void <B>writeAll</B>(&lt;Object&gt; obj, encoding)</PRE>
   
      <UL>Write the object to file</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>obj</CODE> -  to write to file (Using toString() for any other than String and ByteString)  
      </UL> 
   
     <UL><CODE>one</CODE> -  of UTF8 or ASCII (Default is UTF8)    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!test"><!-- --></A>
   <H3>test</H3>
   <PRE>&lt;static&gt; void <B>test</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-file.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="ECCUtils.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="GLOBALS.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_PrivateKey
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_PrivateKey";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_Path.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_SecretKey.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_PrivateKey</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a>
               |
               +--<a href='PKCS15_CommonPrivateKeyAttributes.html'>PKCS15_CommonPrivateKeyAttributes</a>
                     |
                     +--<b>PKCS15_PrivateKey</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_PrivateKey</B>
   
      <DT>extends <a href='PKCS15_CommonPrivateKeyAttributes.html'>PKCS15_CommonPrivateKeyAttributes</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds private key attributes to the common private key attribute class.</p>
 <p>The class supports RSA and ECC keys.</p>
 <p>RSA keys are decoded from the following ASN.1 structure:</p>
 <pre>
 PrivateRSAKeyAttributes ::= SEQUENCE {
 value Path,
 modulusLength INTEGER, -- modulus length in bits, e.g. 1024
 keyInfo KeyInfo {NULL, PublicKeyOperations} OPTIONAL,
 ... -- For future extensions
 }
 </pre>
 <p>ECC keys are decoded from the following ASN.1 structure:</p>
 <pre>
 PrivateECKeyAttributes ::= SEQUENCE {
 value Path,
 keyInfo KeyInfo {Parameters, PublicKeyOperations} OPTIONAL,
 ... -- For future extensions
 }
 </pre>
 <BR/><B>See:</B><UL>- <a href="PKCS15_CommonPrivateKeyAttributes.html#">PKCS15_CommonPrivateKeyAttributes is the base class</a></UL><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#type">type</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   

   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CommonKeyAttributes.html#iD'>iD</a>, <a href='PKCS15_CommonKeyAttributes.html#usage'>usage</a>, <a href='PKCS15_CommonKeyAttributes.html#native_'>native_</a>, <a href='PKCS15_CommonKeyAttributes.html#accessFlags'>accessFlags</a>, <a href='PKCS15_CommonKeyAttributes.html#keyReference'>keyReference</a>, <a href='PKCS15_CommonKeyAttributes.html#startDate'>startDate</a>, <a href='PKCS15_CommonKeyAttributes.html#endDate'>endDate</a>, <a href='PKCS15_CommonKeyAttributes.html#algReference'>algReference</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;


   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_PrivateKey()">PKCS15_PrivateKey</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Private Key Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CommonKeyAttributes.html#getUsageAsString'>getUsageAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#getAccessFlagsAsString'>getAccessFlagsAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#toString'>toString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="type"><!-- --></A>
   <H3>type</H3>
   <PRE>Object&nbsp;<B>type</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_PrivateKey()"><!-- --></A><H3>
PKCS15_PrivateKey</H3>
<PRE><B>PKCS15_PrivateKey</B>(tlv)</PRE>


<UL>
   Create a Private Key Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CommonPrivateKeyAttributes.html#">PKCS15_CommonPrivateKeyAttributes is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_Path.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_SecretKey.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="pkcs10.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>pkcs10.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		A PKCS#10 generator class based on RFC5280<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS10Generator.html">PKCS10Generator</a></b></td>
    <td>Class implementing a PKCS#10 certificate request
 </td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

	<a name="method_summary"><!-- --></a>
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
			<td colspan=2>
				<font size="+2">
					<b>Method Summary</b>
				</font>
			</td>
		</tr>
	
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;Object</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!PKCS10GeneratorTest">PKCS10GeneratorTest</a></b>()
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
	
	</table>
    <p>

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span> A PKCS#10 generator class based on RFC5280
 */</span>

load(<span class="literal">"pkixcommon.js"</span>);


<span class="comment">/**
 * Create a PKCS#10 certificate request
 *
 * <span class="attrib">@class</span> Class implementing a PKCS#10 certificate request
 * <span class="attrib">@constructor</span>
 *
 * <span class="attrib">@param</span> {Crypto} crypto the crypto provider to use for signing operations
 */</span>
<span class="reserved">function</span> PKCS10Generator(crypto) {
	<span class="reserved">this</span>.crypto = crypto;
	<span class="reserved">this</span>.reset();
}



<span class="comment">/**
 * Resets all internal state variables.
 *
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.reset = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.extensions = new Array();
	<span class="reserved">this</span>.attributes = new Array();
}



<span class="comment">/**
 * Sets the subject name.
 *
 * &lt;p&gt;The subject name must be a JavaScript object containing the properties:&lt;/p&gt;
 * &lt;ul&gt;
 *  &lt;li&gt;C - the country&lt;/li&gt;
 *  &lt;li&gt;O - the organization&lt;/li&gt;
 *  &lt;li&gt;OU - the organization unit&lt;/li&gt;
 *  &lt;li&gt;CN - the common name&lt;/li&gt;
 * &lt;/ul&gt;
 * &lt;p&gt;Example:&lt;/p&gt;
 * &lt;pre&gt;
 *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 * &lt;/pre&gt;
 * <span class="attrib">@see</span> PKIXCommon.encodeName()
 * <span class="attrib">@param</span> {Object} subject the subject name
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.setSubject = <span class="reserved">function</span>(subject) {
	<span class="reserved">this</span>.subject = subject;
}



<span class="comment">/**
 * Sets the subjects public key
 *
 * &lt;p&gt;The methods accepts ECC and RSA Public Keys.&lt;/p&gt;
 *
 * <span class="attrib">@param</span> {Key} publicKey the subjects public key
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.setPublicKey = <span class="reserved">function</span>(publicKey) {
	<span class="reserved">this</span>.publicKey = publicKey;
}



<span class="comment">/**
 * Sets the signature algorithm. Currently only Crypto.RSA is supported
 *
 * <span class="attrib">@param</span> {Number} alg the signature algorithm, only Crypto.RSA supported
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.setSignatureAlgorithm = <span class="reserved">function</span>(alg) {
	<span class="reserved">this</span>.signatureAlgorithm = alg;
}



<span class="comment">/**
 * Adds an extension to the certificate
 *
 * &lt;p&gt;The structure is defined as:&lt;/p&gt;
 * &lt;pre&gt;
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *&lt;/pre&gt;
 * <span class="attrib">@param</span> {String} extnID the extensions object identifier
 * <span class="attrib">@param</span> {ByteString} the extension value as ByteString
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.addExtension = <span class="reserved">function</span>(extnID, extnValue) {
	var t = new ASN1(<span class="literal">"extension"</span>, ASN1.SEQUENCE,
				new ASN1(<span class="literal">"extnID"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	t.add(new ASN1(<span class="literal">"extnValue"</span>, ASN1.OCTET_STRING, extnValue));
	<span class="reserved">this</span>.extensions.push(t);
}



<span class="comment">/**
 * Adds the key usage extension.
 *
 * &lt;p&gt;The following flags are defined:&lt;/p&gt;
 * &lt;pre&gt;
 * PKCS10Generator.digitalSignature = 0x0080;
 * PKCS10Generator.nonRepudiation   = 0x0040;
 * PKCS10Generator.keyEncipherment  = 0x0020;
 * PKCS10Generator.dataEncipherment = 0x0010;
 * PKCS10Generator.keyAgreement     = 0x0008;
 * PKCS10Generator.keyCertSign      = 0x0004;
 * PKCS10Generator.cRLSign          = 0x0002;
 * PKCS10Generator.encipherOnly     = 0x0001;
 * PKCS10Generator.decipherOnly     = 0x8000;
 * &lt;/pre&gt;
 * <span class="attrib">@param</span> {Number} the key usage flags as combination of the flags defined above.
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.addKeyUsageExtension = <span class="reserved">function</span>(flags) {
	var t = new ASN1(ASN1.BIT_STRING, PKIXCommon.bitstringForInteger(flags));
	<span class="reserved">this</span>.addExtension(<span class="literal">"2.5.29.15"</span>, t.getBytes());
}

<span class="comment">// Deprecated: Use PKIXCommon. instead</span>
PKCS10Generator.digitalSignature	= 0x0080;
PKCS10Generator.nonRepudiation		= 0x0040;
PKCS10Generator.keyEncipherment		= 0x0020;
PKCS10Generator.dataEncipherment	= 0x0010;
PKCS10Generator.keyAgreement		= 0x0008;
PKCS10Generator.keyCertSign			= 0x0004;
PKCS10Generator.cRLSign				= 0x0002;
PKCS10Generator.encipherOnly		= 0x0001;
PKCS10Generator.decipherOnly		= 0x8000;



<span class="comment">/**
 * Adds extended key usages
 *
 * <span class="attrib">@param</span> {String[]} the list of extended key usage object identifier
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.addExtendedKeyUsageExtension = <span class="reserved">function</span>(keyusages) {
	var t = new ASN1(ASN1.SEQUENCE);
	<span class="reserved">for</span> (var i = 0; i &lt; keyusages.length; i++) {
		t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(keyusages[i], OID)));
	}
	<span class="reserved">this</span>.addExtension(<span class="literal">"id-ce-extKeyUsage"</span>, t.getBytes());
}



<span class="comment">/**
 * Adds the BasicConstraints extension.
 *
 * <span class="attrib">@param</span> {Boolean} cA the certificate belongs to a CA
 * <span class="attrib">@param</span> {Number} pathLenConstraint the maximum number of subordinate CA certificates
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.addBasicConstraintsExtension = <span class="reserved">function</span>(cA, pathLenConstraint) {
	var t = new ASN1(<span class="literal">"BasicConstraints"</span>,ASN1.SEQUENCE);
	<span class="reserved">if</span> (cA) {
		t.add(new ASN1(<span class="literal">"cA"</span>, ASN1.BOOLEAN, new ByteString(<span class="literal">"FF"</span>, HEX)));
	}
	<span class="reserved">if</span> (pathLenConstraint &gt;= 0) {
		var bb = new ByteBuffer();
		bb.append(pathLenConstraint);
		t.add(new ASN1(<span class="literal">"pathLenConstraint"</span>, ASN1.INTEGER, bb.toByteString()));
	}
	<span class="reserved">this</span>.addExtension(<span class="literal">"2.5.29.19"</span>, t.getBytes());
}



<span class="comment">/**
 * Gets the subject name as TLV object
 *
 * <span class="attrib">@return</span> the issuer RDNSequence
 * <span class="attrib">@type</span> ASN1
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.getSubject = <span class="reserved">function</span>() {
	<span class="reserved">return</span> PKIXCommon.encodeName(<span class="reserved">this</span>.subject);
}



<span class="comment">/**
 * Gets the subject's public key as TLV object
 *
 * <span class="attrib">@return</span> the subject's public key info
 * <span class="attrib">@type</span> ASN1
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.getSubjectPublicKeyInfo = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.publicKey.getComponent(Key.MODULUS)) {
		<span class="reserved">return</span> PKIXCommon.createRSASubjectPublicKeyInfo(<span class="reserved">this</span>.publicKey);
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> PKIXCommon.createECSubjectPublicKeyInfo(<span class="reserved">this</span>.publicKey, <span class="reserved">this</span>.encodeECDomainParameter);
	}
}



<span class="comment">/**
 * Gets the extension attribute as TLV object
 *
 * <span class="attrib">@return</span> the certificate extensions
 * <span class="attrib">@type</span> ASN1
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.getExtensions = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"extensions"</span>, ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.113549 1 9 14"</span>, OID)));
	var s = new ASN1(<span class="literal">"extensions"</span>, ASN1.SET);
	t.add(s);
	var l = new ASN1(<span class="literal">"extensions"</span>, ASN1.SEQUENCE);
	s.add(l);
	
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.extensions.length; i++) {
		l.add(<span class="reserved">this</span>.extensions[i]);
	}
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the attributes as TLV object
 *
 * <span class="attrib">@return</span> the request attributes
 * <span class="attrib">@type</span> ASN1
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.getAttributes = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"attributes"</span>, 0xA0);
	
	<span class="reserved">if</span> (<span class="reserved">this</span>.extensions.length &gt; 0) {
		t.add(<span class="reserved">this</span>.getExtensions());
	}
	
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.attributes.length; i++) {
		t.add(<span class="reserved">this</span>.attributes[i]);
	}
	
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the part of the request that will be signed
 *
 * <span class="attrib">@return</span> the TBSCertificate part
 * <span class="attrib">@type</span> ASN1
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.getTbsRequest = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"certificationRequestInfo"</span>, ASN1.SEQUENCE);
	t.add(new ASN1(ASN1.INTEGER, new ByteString(<span class="literal">"00"</span>, HEX)));
	t.add(<span class="reserved">this</span>.getSubject());
	t.add(<span class="reserved">this</span>.getSubjectPublicKeyInfo());
	t.add(<span class="reserved">this</span>.getAttributes());
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the signature algorithm TLV object
 *
 * <span class="attrib">@return</span> the signature algorithm object
 * <span class="attrib">@type</span> ASN1
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.getSignatureAlgorithm = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"signatureAlgorithm"</span>, ASN1.SEQUENCE);

	<span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.RSA) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.113549.1.1.5"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> <span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.RSA_SHA256) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1 2 840 113549 1 1 11"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> {
		throw new GPError(<span class="literal">"PKCS10Generator"</span>, GPError.INVALID_MECH, <span class="reserved">this</span>.signatureAlgorithm, <span class="literal">"Invalid algorithm"</span>);
	}
		
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Generates the certificate.
 *
 * <span class="attrib">@return</span> the generated certificate
 * <span class="attrib">@type</span> ASN1
 */</span>
PKCS10Generator.<span class="reserved">prototype</span>.generateCertificationRequest = <span class="reserved">function</span>(privateKey) {
	var request = new ASN1(<span class="literal">"certificationRequest"</span>, ASN1.SEQUENCE);
	
	var tbs = <span class="reserved">this</span>.getTbsRequest();
	request.add(tbs);
	request.add(<span class="reserved">this</span>.getSignatureAlgorithm());
	
	var signature = <span class="reserved">this</span>.crypto.sign(privateKey, <span class="reserved">this</span>.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString(<span class="literal">"00"</span>, HEX)).concat(signature);

	var signatureValue = new ASN1(<span class="literal">"signatureValue"</span>, ASN1.BIT_STRING, signature);
	request.add(signatureValue);
	
	<span class="reserved">return</span> request;
}



<span class="reserved">function</span> PKCS10GeneratorTest() {

	var crypto = new Crypto();
	
	var reqPrivateKey = new Key();
	reqPrivateKey.setType(Key.PRIVATE);

	var reqPublicKey = new Key();
	reqPublicKey.setType(Key.PUBLIC);
	reqPublicKey.setSize(1024);
	
	crypto.generateKeyPair(Crypto.RSA, reqPublicKey, reqPrivateKey);
	
	var x = new PKCS10Generator(crypto);

	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA_SHA256);

	var subject = [{C:<span class="literal">"UT"</span>}, {O:<span class="literal">"Utopia CA"</span>}, {OU:<span class="literal">"ACME Corporation"</span>}, {CN:<span class="literal">"Joe Doe"</span>} ];
	
	x.setSubject(subject);

	x.setPublicKey(reqPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );

	var req = x.generateCertificationRequest(reqPrivateKey);
	var fn = GPSystem.mapFilename(<span class="literal">"cert.csr"</span>, GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, req.getBytes());

	print(req);
	
	<span class="reserved">return</span> req;
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>
 All Classes
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" All Classes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

   <IMG SRC="./"/>

<H3 CLASS="FrameHeadingFont"></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary.html">All Classes</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="AlgorithmInfo.html" >AlgorithmInfo</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="CardOutlineFactory.html" >CardOutlineFactory</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="CRLGenerator.html" >CRLGenerator</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="DataOutline.html" >DataOutline</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="ECCUtils.html" >ECCUtils</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="File.html" >File</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GLOBALS.html" >GLOBALS</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineATR.html" >OutlineATR</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineCard.html" >OutlineCard</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineDataObject.html" >OutlineDataObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineDF.html" >OutlineDF</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineEF.html" >OutlineEF</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineFCP.html" >OutlineFCP</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlinePKCS15.html" >OutlinePKCS15</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineRecord.html" >OutlineRecord</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS10Generator.html" >PKCS10Generator</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15.html" >PKCS15</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_ApplicationTemplate.html" >PKCS15_ApplicationTemplate</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_AuthenticationObject.html" >PKCS15_AuthenticationObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_Certificate.html" >PKCS15_Certificate</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIAInfo.html" >PKCS15_CIAInfo</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIO.html" >PKCS15_CIO</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIODDO.html" >PKCS15_CIODDO</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html" >PKCS15_CommonAuthenticationObjectAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonCertificateAttributes.html" >PKCS15_CommonCertificateAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonDataContainerObjectAttributes.html" >PKCS15_CommonDataContainerObjectAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonKeyAttributes.html" >PKCS15_CommonKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonPrivateKeyAttributes.html" >PKCS15_CommonPrivateKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonSecretKeyAttributes.html" >PKCS15_CommonSecretKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_DataContainerObject.html" >PKCS15_DataContainerObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_PasswordAuthenticationObject.html" >PKCS15_PasswordAuthenticationObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_Path.html" >PKCS15_Path</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_PrivateKey.html" >PKCS15_PrivateKey</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_SecretKey.html" >PKCS15_SecretKey</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS8.html" >PKCS8</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKIXCommon.html" >PKIXCommon</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestCaseRunner.html" >TestCaseRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestGroup.html" >TestGroup</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestGroupRunner.html" >TestGroupRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestLogFile.html" >TestLogFile</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestProcedure.html" >TestProcedure</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestProcedureRunner.html" >TestProcedureRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestReport.html" >TestReport</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestResult.html" >TestResult</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestRunner.html" >TestRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestStepRunner.html" >TestStepRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="X509CertificateGenerator.html" >X509CertificateGenerator</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="X509Name.html" >X509Name</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS10Generator
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS10Generator";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-pkcs10.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineRecord.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS10Generator</H2>
<PRE>Object
   |
   +--<b>PKCS10Generator</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS10Generator</B>
   

</DL>
   
   <P>
   <BR/>Class implementing a PKCS#10 certificate request
 <BR/><I>Defined in <a href='overview-summary-pkcs10.js.html'>pkcs10.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#crypto">crypto</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!cRLSign">cRLSign</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!dataEncipherment">dataEncipherment</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!decipherOnly">decipherOnly</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!digitalSignature">digitalSignature</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!encipherOnly">encipherOnly</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyAgreement">keyAgreement</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyCertSign">keyCertSign</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyEncipherment">keyEncipherment</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!nonRepudiation">nonRepudiation</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS10Generator()">PKCS10Generator</A></B>(&lt;Crypto&gt; crypto)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a PKCS#10 certificate request
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addBasicConstraintsExtension">addBasicConstraintsExtension</A></B>(&lt;Boolean&gt; cA, &lt;Number&gt; pathLenConstraint)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the BasicConstraints extension.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addExtendedKeyUsageExtension">addExtendedKeyUsageExtension</A></B>(keyusages)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds extended key usages
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addExtension">addExtension</A></B>(&lt;String&gt; extnID, extnValue)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds an extension to the certificate


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addKeyUsageExtension">addKeyUsageExtension</A></B>(flags)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the key usage extension.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#generateCertificationRequest">generateCertificationRequest</A></B>(privateKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Generates the certificate.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getAttributes">getAttributes</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the attributes as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getExtensions">getExtensions</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the extension attribute as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getSignatureAlgorithm">getSignatureAlgorithm</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the signature algorithm TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getSubject">getSubject</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the subject name as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getSubjectPublicKeyInfo">getSubjectPublicKeyInfo</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the subject's public key as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getTbsRequest">getTbsRequest</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the part of the request that will be signed
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#reset">reset</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Resets all internal state variables.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setPublicKey">setPublicKey</A></B>(&lt;Key&gt; publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the subjects public key


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setSignatureAlgorithm">setSignatureAlgorithm</A></B>(&lt;Number&gt; alg)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the signature algorithm.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setSubject">setSubject</A></B>(&lt;Object&gt; subject)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the subject name.
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="crypto"><!-- --></A>
   <H3>crypto</H3>
   <PRE>Object&nbsp;<B>crypto</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!cRLSign"><!-- --></A>
   <H3>cRLSign</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>cRLSign</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!dataEncipherment"><!-- --></A>
   <H3>dataEncipherment</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>dataEncipherment</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!decipherOnly"><!-- --></A>
   <H3>decipherOnly</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>decipherOnly</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!digitalSignature"><!-- --></A>
   <H3>digitalSignature</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>digitalSignature</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!encipherOnly"><!-- --></A>
   <H3>encipherOnly</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>encipherOnly</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyAgreement"><!-- --></A>
   <H3>keyAgreement</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyAgreement</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyCertSign"><!-- --></A>
   <H3>keyCertSign</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyCertSign</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyEncipherment"><!-- --></A>
   <H3>keyEncipherment</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyEncipherment</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!nonRepudiation"><!-- --></A>
   <H3>nonRepudiation</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>nonRepudiation</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS10Generator()"><!-- --></A><H3>
PKCS10Generator</H3>
<PRE><B>PKCS10Generator</B>(&lt;Crypto&gt; crypto)</PRE>


<UL>
   Create a PKCS#10 certificate request
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>crypto</CODE> -  the crypto provider to use for signing operations    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="addBasicConstraintsExtension"><!-- --></A>
   <H3>addBasicConstraintsExtension</H3>
   <PRE>void <B>addBasicConstraintsExtension</B>(&lt;Boolean&gt; cA, &lt;Number&gt; pathLenConstraint)</PRE>
   
      <UL>Adds the BasicConstraints extension.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>cA</CODE> -  the certificate belongs to a CA  
      </UL> 
   
     <UL><CODE>pathLenConstraint</CODE> -  the maximum number of subordinate CA certificates    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addExtendedKeyUsageExtension"><!-- --></A>
   <H3>addExtendedKeyUsageExtension</H3>
   <PRE>void <B>addExtendedKeyUsageExtension</B>(keyusages)</PRE>
   
      <UL>Adds extended key usages</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  list of extended key usage object identifier    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addExtension"><!-- --></A>
   <H3>addExtension</H3>
   <PRE>void <B>addExtension</B>(&lt;String&gt; extnID, extnValue)</PRE>
   
      <UL>Adds an extension to the certificate

 <p>The structure is defined as:</p>
 <pre>
    Extension  ::=  SEQUENCE  {
        extnID      OBJECT IDENTIFIER,
        extnValue   OCTET STRING
                    -- contains the DER encoding of an ASN.1 value
                    -- corresponding to the extension type identified
                    -- by extnID
        }
</pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>extnID</CODE> -  the extensions object identifier  
      </UL> 
   
     <UL><CODE>the</CODE> -  extension value as ByteString    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addKeyUsageExtension"><!-- --></A>
   <H3>addKeyUsageExtension</H3>
   <PRE>void <B>addKeyUsageExtension</B>(flags)</PRE>
   
      <UL>Adds the key usage extension.

 <p>The following flags are defined:</p>
 <pre>
 PKCS10Generator.digitalSignature = 0x0080;
 PKCS10Generator.nonRepudiation   = 0x0040;
 PKCS10Generator.keyEncipherment  = 0x0020;
 PKCS10Generator.dataEncipherment = 0x0010;
 PKCS10Generator.keyAgreement     = 0x0008;
 PKCS10Generator.keyCertSign      = 0x0004;
 PKCS10Generator.cRLSign          = 0x0002;
 PKCS10Generator.encipherOnly     = 0x0001;
 PKCS10Generator.decipherOnly     = 0x8000;
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  key usage flags as combination of the flags defined above.    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="generateCertificationRequest"><!-- --></A>
   <H3>generateCertificationRequest</H3>
   <PRE>ASN1 <B>generateCertificationRequest</B>(privateKey)</PRE>
   
      <UL>Generates the certificate.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the generated certificate   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getAttributes"><!-- --></A>
   <H3>getAttributes</H3>
   <PRE>ASN1 <B>getAttributes</B>()</PRE>
   
      <UL>Gets the attributes as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the request attributes   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getExtensions"><!-- --></A>
   <H3>getExtensions</H3>
   <PRE>ASN1 <B>getExtensions</B>()</PRE>
   
      <UL>Gets the extension attribute as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the certificate extensions   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getSignatureAlgorithm"><!-- --></A>
   <H3>getSignatureAlgorithm</H3>
   <PRE>ASN1 <B>getSignatureAlgorithm</B>()</PRE>
   
      <UL>Gets the signature algorithm TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the signature algorithm object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getSubject"><!-- --></A>
   <H3>getSubject</H3>
   <PRE>ASN1 <B>getSubject</B>()</PRE>
   
      <UL>Gets the subject name as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the issuer RDNSequence   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getSubjectPublicKeyInfo"><!-- --></A>
   <H3>getSubjectPublicKeyInfo</H3>
   <PRE>ASN1 <B>getSubjectPublicKeyInfo</B>()</PRE>
   
      <UL>Gets the subject's public key as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the subject's public key info   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getTbsRequest"><!-- --></A>
   <H3>getTbsRequest</H3>
   <PRE>ASN1 <B>getTbsRequest</B>()</PRE>
   
      <UL>Gets the part of the request that will be signed</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the TBSCertificate part   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="reset"><!-- --></A>
   <H3>reset</H3>
   <PRE>void <B>reset</B>()</PRE>
   
      <UL>Resets all internal state variables.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setPublicKey"><!-- --></A>
   <H3>setPublicKey</H3>
   <PRE>void <B>setPublicKey</B>(&lt;Key&gt; publicKey)</PRE>
   
      <UL>Sets the subjects public key

 <p>The methods accepts ECC and RSA Public Keys.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>publicKey</CODE> -  the subjects public key    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setSignatureAlgorithm"><!-- --></A>
   <H3>setSignatureAlgorithm</H3>
   <PRE>void <B>setSignatureAlgorithm</B>(&lt;Number&gt; alg)</PRE>
   
      <UL>Sets the signature algorithm. Currently only Crypto.RSA is supported</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>alg</CODE> -  the signature algorithm, only Crypto.RSA supported    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setSubject"><!-- --></A>
   <H3>setSubject</H3>
   <PRE>void <B>setSubject</B>(&lt;Object&gt; subject)</PRE>
   
      <UL>Sets the subject name.

 <p>The subject name must be a JavaScript object containing the properties:</p>
 <ul>
  <li>C - the country</li>
  <li>O - the organization</li>
  <li>OU - the organization unit</li>
  <li>CN - the common name</li>
 </ul>
 <p>Example:</p>
 <pre>
	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>subject</CODE> -  the subject name    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <UL>   
   <B>See:</B><UL>- PKIXCommon.encodeName()</UL>
   </UL>
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-pkcs10.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineRecord.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
CRLGenerator
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="CRLGenerator";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-crlgenerator.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="CardOutlineFactory.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="DataOutline.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class CRLGenerator</H2>
<PRE>Object
   |
   +--<b>CRLGenerator</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>CRLGenerator</B>
   

</DL>
   
   <P>
   <BR/>Class implementing a CRL certificate generator
 <BR/><I>Defined in <a href='overview-summary-crlgenerator.js.html'>crlgenerator.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#crypto">crypto</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!aACompromise">aACompromise</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!affiliationChanged">affiliationChanged</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!cACompromise">cACompromise</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!certificateHold">certificateHold</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!cessationOfOperation">cessationOfOperation</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyCompromise">keyCompromise</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!privilegeWithdrawn">privilegeWithdrawn</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!removeFromCRL">removeFromCRL</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!superseded">superseded</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!unspecified">unspecified</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#CRLGenerator()">CRLGenerator</A></B>(&lt;Crypto&gt; crypto)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Certificate Revocation List (CRL) generator.
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addAuthorityKeyIdentifierExtension">addAuthorityKeyIdentifierExtension</A></B>(publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the authority public key identifier extension based on the issuers key.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addCRLNumberExtension">addCRLNumberExtension</A></B>(crlnumber)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds the CRL number extension.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addExtension">addExtension</A></B>(&lt;String&gt; extnID, &lt;Boolean&gt; critical, extnValue)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds an extension to the CRL


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addRevokedCertificate">addRevokedCertificate</A></B>(&lt;ASN1&gt; revokedCertificate)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Add a revoked certificate to the list.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;X509</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#generateCRL">generateCRL</A></B>(privateKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Generates the certificate.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getExtensions">getExtensions</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the CRL extension as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getIssuer">getIssuer</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the issuer name as TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getNextUpdate">getNextUpdate</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the nextUpdate TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getRevokedCertificates">getRevokedCertificates</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets revoked certificates
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getSignatureAlgorithm">getSignatureAlgorithm</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the signature algorithm TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getTbsCertificateList">getTbsCertificateList</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the part of the CRL that will be signed
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getThisUpdate">getThisUpdate</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the thisUpdate TLV object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Number</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#loadCRLEntries">loadCRLEntries</A></B>(&lt;String&gt; filename)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Load list of revoked certificates from an existing CRL
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#reset">reset</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Resets all internal state variables.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#revokeCertificate">revokeCertificate</A></B>(&lt;ByteString&gt; serial, &lt;Date&gt; timestamp, reason, ext)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Add a revoked certificate to the list.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setIssuer">setIssuer</A></B>(&lt;Object&gt; issuer)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the isser name.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setNextUpdate">setNextUpdate</A></B>(&lt;Date&gt; datetime)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the timestamp for the next update
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setSignatureAlgorithm">setSignatureAlgorithm</A></B>(&lt;Number&gt; alg)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the signature algorithm.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setThisUpdate">setThisUpdate</A></B>(&lt;Date&gt; datetime)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets the timestamp for this CRL
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="crypto"><!-- --></A>
   <H3>crypto</H3>
   <PRE>Object&nbsp;<B>crypto</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!aACompromise"><!-- --></A>
   <H3>aACompromise</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>aACompromise</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!affiliationChanged"><!-- --></A>
   <H3>affiliationChanged</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>affiliationChanged</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!cACompromise"><!-- --></A>
   <H3>cACompromise</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>cACompromise</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!certificateHold"><!-- --></A>
   <H3>certificateHold</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>certificateHold</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!cessationOfOperation"><!-- --></A>
   <H3>cessationOfOperation</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>cessationOfOperation</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyCompromise"><!-- --></A>
   <H3>keyCompromise</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyCompromise</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!privilegeWithdrawn"><!-- --></A>
   <H3>privilegeWithdrawn</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>privilegeWithdrawn</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!removeFromCRL"><!-- --></A>
   <H3>removeFromCRL</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>removeFromCRL</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!superseded"><!-- --></A>
   <H3>superseded</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>superseded</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!unspecified"><!-- --></A>
   <H3>unspecified</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>unspecified</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="CRLGenerator()"><!-- --></A><H3>
CRLGenerator</H3>
<PRE><B>CRLGenerator</B>(&lt;Crypto&gt; crypto)</PRE>


<UL>
   Create a Certificate Revocation List (CRL) generator.
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>crypto</CODE> -  the crypto provider to use for signing operations    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="addAuthorityKeyIdentifierExtension"><!-- --></A>
   <H3>addAuthorityKeyIdentifierExtension</H3>
   <PRE>void <B>addAuthorityKeyIdentifierExtension</B>(publicKey)</PRE>
   
      <UL>Adds the authority public key identifier extension based on the issuers key.

 <p>The key identifier is calculated as SHA-1 hash over the contents of the
 issuer public key (Without tag, length and number of unused bits.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addCRLNumberExtension"><!-- --></A>
   <H3>addCRLNumberExtension</H3>
   <PRE>void <B>addCRLNumberExtension</B>(crlnumber)</PRE>
   
      <UL>Adds the CRL number extension.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addExtension"><!-- --></A>
   <H3>addExtension</H3>
   <PRE>void <B>addExtension</B>(&lt;String&gt; extnID, &lt;Boolean&gt; critical, extnValue)</PRE>
   
      <UL>Adds an extension to the CRL

 <p>The structure is defined as:</p>
 <pre>
    Extension  ::=  SEQUENCE  {
        extnID      OBJECT IDENTIFIER,
        critical    BOOLEAN DEFAULT FALSE,
        extnValue   OCTET STRING
                    -- contains the DER encoding of an ASN.1 value
                    -- corresponding to the extension type identified
                    -- by extnID
        }
</pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>extnID</CODE> -  the extensions object identifier  
      </UL> 
   
     <UL><CODE>critical</CODE> -  the extension is critical  
      </UL> 
   
     <UL><CODE>the</CODE> -  extension value as ByteString    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addRevokedCertificate"><!-- --></A>
   <H3>addRevokedCertificate</H3>
   <PRE>void <B>addRevokedCertificate</B>(&lt;ASN1&gt; revokedCertificate)</PRE>
   
      <UL>Add a revoked certificate to the list. This adds the complete DER encoded structure.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>revokedCertificate</CODE> -  the information related to the revoked certificate    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="generateCRL"><!-- --></A>
   <H3>generateCRL</H3>
   <PRE>X509 <B>generateCRL</B>(privateKey)</PRE>
   
      <UL>Generates the certificate.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the generated certificate   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getExtensions"><!-- --></A>
   <H3>getExtensions</H3>
   <PRE>ASN1 <B>getExtensions</B>()</PRE>
   
      <UL>Gets the CRL extension as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the CRL extensions   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getIssuer"><!-- --></A>
   <H3>getIssuer</H3>
   <PRE>ASN1 <B>getIssuer</B>()</PRE>
   
      <UL>Gets the issuer name as TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the issuer RDNSequence   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getNextUpdate"><!-- --></A>
   <H3>getNextUpdate</H3>
   <PRE>ASN1 <B>getNextUpdate</B>()</PRE>
   
      <UL>Gets the nextUpdate TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the nextUpdate UTC encoded time   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getRevokedCertificates"><!-- --></A>
   <H3>getRevokedCertificates</H3>
   <PRE>ASN1 <B>getRevokedCertificates</B>()</PRE>
   
      <UL>Gets revoked certificates</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the list of revoked certificates   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getSignatureAlgorithm"><!-- --></A>
   <H3>getSignatureAlgorithm</H3>
   <PRE>ASN1 <B>getSignatureAlgorithm</B>()</PRE>
   
      <UL>Gets the signature algorithm TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the signature algorithm object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getTbsCertificateList"><!-- --></A>
   <H3>getTbsCertificateList</H3>
   <PRE>ASN1 <B>getTbsCertificateList</B>()</PRE>
   
      <UL>Gets the part of the CRL that will be signed</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the TBSCertificate part   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getThisUpdate"><!-- --></A>
   <H3>getThisUpdate</H3>
   <PRE>ASN1 <B>getThisUpdate</B>()</PRE>
   
      <UL>Gets the thisUpdate TLV object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the thisUpdate UTC encoded time   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="loadCRLEntries"><!-- --></A>
   <H3>loadCRLEntries</H3>
   <PRE>Number <B>loadCRLEntries</B>(&lt;String&gt; filename)</PRE>
   
      <UL>Load list of revoked certificates from an existing CRL</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>filename</CODE> -  the file name of the DER encoded CRL  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the value of the CRLNumber extension, 0 if extension not defined or -1 if file could not be loaded 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="reset"><!-- --></A>
   <H3>reset</H3>
   <PRE>void <B>reset</B>()</PRE>
   
      <UL>Resets all internal state variables.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="revokeCertificate"><!-- --></A>
   <H3>revokeCertificate</H3>
   <PRE>void <B>revokeCertificate</B>(&lt;ByteString&gt; serial, &lt;Date&gt; timestamp, reason, ext)</PRE>
   
      <UL>Add a revoked certificate to the list. This adds the complete DER encoded structure.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>serial</CODE> -  the serial number of the certificate to revoke  
      </UL> 
   
     <UL><CODE>timestamp</CODE> -  the revocation time, optional, default is now  
      </UL> 
   
     <UL><CODE>Number</CODE> - ) reason the revocation reason  
      </UL> 
   
     <UL><CODE>ASN1</CODE> - ) ext the crl entry extensions    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setIssuer"><!-- --></A>
   <H3>setIssuer</H3>
   <PRE>void <B>setIssuer</B>(&lt;Object&gt; issuer)</PRE>
   
      <UL>Sets the isser name.

 <p>The issuer name must be a JavaScript object containing the properties:</p>
 <ul>
  <li>C - the country</li>
  <li>O - the organization</li>
  <li>OU - the organization unit</li>
  <li>CN - the common name</li>
 </ul>
 <p>Example:</p>
 <pre>
	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>issuer</CODE> -  the issuer name    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setNextUpdate"><!-- --></A>
   <H3>setNextUpdate</H3>
   <PRE>void <B>setNextUpdate</B>(&lt;Date&gt; datetime)</PRE>
   
      <UL>Sets the timestamp for the next update</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>datetime</CODE> -  the date and time of the next update    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setSignatureAlgorithm"><!-- --></A>
   <H3>setSignatureAlgorithm</H3>
   <PRE>void <B>setSignatureAlgorithm</B>(&lt;Number&gt; alg)</PRE>
   
      <UL>Sets the signature algorithm.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>alg</CODE> -  the signature algorithm, must be one of Crypto.RSA, Crypto.RSA_SHA256 or Crypto.ECDSA_SHA256    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setThisUpdate"><!-- --></A>
   <H3>setThisUpdate</H3>
   <PRE>void <B>setThisUpdate</B>(&lt;Date&gt; datetime)</PRE>
   
      <UL>Sets the timestamp for this CRL</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>datetime</CODE> -  the current date and time    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-crlgenerator.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="CardOutlineFactory.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="DataOutline.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="BaseTestRunner.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>BaseTestRunner.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'BaseTestRunner.js'<BR/><BR/>
	
</p>

<hr>



<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">//</span>
<span class="comment">//  ---------</span>
<span class="comment">// |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)</span>
<span class="comment">// |#       #|  </span>
<span class="comment">// |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting</span>
<span class="comment">// |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)</span>
<span class="comment">//  --------- </span>
<span class="comment">//</span>
<span class="comment">//  This file is part of OpenSCDP.</span>
<span class="comment">//</span>
<span class="comment">//  OpenSCDP is free software; you can redistribute it and/or modify</span>
<span class="comment">//  it under the terms of the GNU General Public License as published by</span>
<span class="comment">//  the Free Software Foundation; either version 2 of the License, or</span>
<span class="comment">//  (at your option) any later version.</span>
<span class="comment">//</span>
<span class="comment">//  OpenSCDP is distributed in the hope that it will be useful,</span>
<span class="comment">//  but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<span class="comment">//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the</span>
<span class="comment">//  GNU General Public License for more details.</span>
<span class="comment">//</span>
<span class="comment">//  You should have received a copy of the GNU General Public License</span>
<span class="comment">//  along with OpenSCDP; if not, write to the Free Software</span>
<span class="comment">//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA</span>
<span class="comment">//</span>
<span class="comment">//  Simple test runner framework</span>





<span class="comment">// ---------------------------</span>
<span class="comment">// Create a test runner object</span>
<span class="comment">//</span>
<span class="reserved">function</span> TestRunner(name) {

	<span class="reserved">this</span>.name = name;
	<span class="reserved">this</span>.testGroupRunners = new Array();
	<span class="reserved">this</span>.testProcedures = new Array();
	<span class="reserved">this</span>.testMapper = new Array();
	<span class="reserved">this</span>.testGroupPrototype = new TestGroup();
	<span class="reserved">this</span>.testProcedurePrototype = new TestProcedure();
	<span class="reserved">this</span>.testReport = new TestReport();
}



<span class="comment">//</span>
<span class="comment">// Add a test group to the test runner</span>
<span class="comment">// This will iterate through all test cases and locate used procedures and steps</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.addTestGroup = <span class="reserved">function</span>(testGroup) {
	var tgrs = <span class="reserved">this</span>.testGroupRunners;
	
	tgr = new TestGroupRunner(<span class="reserved">this</span>, testGroup);

	tgrs.push(tgr);
}



<span class="comment">//</span>
<span class="comment">// Create test group from XML file and add to test runner</span>
<span class="comment">// </span>
TestRunner.<span class="reserved">prototype</span>.addTestGroupFromXML = <span class="reserved">function</span> (file, parameter) {
	<span class="comment">// Parse XML file.</span>
	var parser = new GPXML();
	parser.defineArrayElement(<span class="literal">"/testgroup"</span>, <span class="literal">"testcase,function"</span>, <span class="literal">"id,Name"</span>);
	parser.defineArrayElement(<span class="literal">"/testgroup/testcase/procedures"</span>, <span class="literal">"procedure"</span>);
	var xml = parser.parse(file);
	
	<span class="comment">// Determine CTOR function</span>
	var ctor = xml.constructor.Script;
	<span class="reserved">if</span> (!ctor) {
		<span class="comment">// Use a default constructor unless defined in XML profile</span>
		ctor = <span class="reserved">function</span>(name, parameter) { TestGroup.call(<span class="reserved">this</span>, name, parameter); };
	}
	
	<span class="comment">// Make CTOR available in scope object</span>
	<span class="comment">// this[xml.id] = ctor;</span>
	
	<span class="comment">// Set correct prototype object</span>
	ctor.<span class="reserved">prototype</span> = new TestGroup();
	ctor.<span class="reserved">prototype</span>.constructor = ctor;
	ctor.<span class="reserved">prototype</span>.usedProcedures = new Array();
	
	<span class="comment">// Add test cases to prototype object</span>
	var testcases = xml.testcase;
	<span class="reserved">for</span> (var i in testcases) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = testcases[i].Script;
			s.XML = testcases[i];
			ctor.<span class="reserved">prototype</span>[<span class="literal">"case"</span> + i] = s;
			<span class="reserved">if</span> (testcases[i].procedures) {
				var procedures = testcases[i].procedures.procedure;
				ctor.<span class="reserved">prototype</span>.usedProcedures[i] = new Array();
				
				<span class="reserved">for</span> (var p = 0; p &lt; procedures.length; p++) {
					ctor.<span class="reserved">prototype</span>.usedProcedures[i].push(procedures[p].id);
				}
			}
		}
	}
	
	<span class="comment">// Add setup function to prototype object</span>
	<span class="reserved">if</span> (xml.setup) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"setUp"</span>] = xml.setup.Script;
	}
	
	<span class="comment">// Add teardown function to prototype object</span>
	<span class="reserved">if</span> (xml.teardown) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"tearDown"</span>] = xml.teardown.Script;
	}
	
	<span class="comment">// Add functions to prototype object</span>
	var functions = xml[<span class="literal">"function"</span>];
	<span class="reserved">for</span> (var i in functions) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = functions[i].Script;
			ctor.<span class="reserved">prototype</span>[i] = s;
		}
	}
	
	ctor.XML = xml;
	
	var tc = new ctor(xml.id, parameter);
	
	<span class="reserved">this</span>.addTestGroup(tc);
}



<span class="comment">//</span>
<span class="comment">// Add a test procedure constructor to the list</span>
<span class="comment">// Use the getName() method to obtain the test procedure name</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.addTestProcedure = <span class="reserved">function</span>(proc) {
	var name = proc.getName();
	<span class="reserved">if</span> (name) {
		<span class="reserved">this</span>.testProcedures[name] = proc;
	}
}



<span class="comment">//</span>
<span class="comment">// Create test procedure from XML file and add to test runner</span>
<span class="comment">// </span>
TestRunner.<span class="reserved">prototype</span>.addTestProcedureFromXML = <span class="reserved">function</span> (file, parameter) {
	<span class="comment">// Parse XML file.</span>
	var parser = new GPXML();
	parser.defineArrayElement(<span class="literal">"/testprocedure"</span>, <span class="literal">"teststep,function"</span>, <span class="literal">"id,Name"</span>);
	var xml = parser.parse(file);

	<span class="comment">// Determine CTOR function</span>
	var ctor = xml.constructor.Script;
	<span class="reserved">if</span> (!ctor) {
		<span class="comment">// Use a default constructor unless defined in XML profile</span>
		ctor = <span class="reserved">function</span>(testgroup, name, parameter) { TestProcedure.call(<span class="reserved">this</span>, testgroup, name, parameter); };
	}

	<span class="comment">// Make CTOR available in scope object</span>
	<span class="comment">// this[xml.id] = ctor;</span>
	
	<span class="comment">// Set correct prototype object</span>
	ctor.<span class="reserved">prototype</span> = new TestProcedure();
	ctor.<span class="reserved">prototype</span>.constructor = ctor;
	var teststeps = xml.teststep;
	<span class="reserved">for</span> (var i in teststeps) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = teststeps[i].Script;
			ctor.<span class="reserved">prototype</span>[<span class="literal">"step"</span> + i] = s;
		}
	}
	<span class="reserved">if</span> (xml.setup) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"setUp"</span>] = xml.setup.Script;
	}
	<span class="reserved">if</span> (xml.teardown) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"tearDown"</span>] = xml.teardown.Script;
	}
	
	<span class="comment">// Add functions to prototype object</span>
	var functions = xml[<span class="literal">"function"</span>];
	<span class="reserved">for</span> (var i in functions) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = functions[i].Script;
			ctor.<span class="reserved">prototype</span>[i] = s;
		}
	}

	ctor.XML = xml;
	ctor.getName = <span class="reserved">function</span>() { <span class="reserved">return</span> xml.id; };	

	<span class="reserved">this</span>.testProcedures[xml.id] = ctor;
}



<span class="comment">//</span>
<span class="comment">// Return constructor of test procedure</span>
<span class="comment">// </span>
TestRunner.<span class="reserved">prototype</span>.getTestProcedure = <span class="reserved">function</span>(name) {
	<span class="reserved">return</span> <span class="reserved">this</span>.testProcedures[name];
}



<span class="comment">//</span>
<span class="comment">// Return number of failed tests</span>
<span class="comment">// </span>
TestRunner.<span class="reserved">prototype</span>.getFailedCounter = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.failedCounter;
}



<span class="comment">//</span>
<span class="comment">// Return log of last test run</span>
<span class="comment">// </span>
TestRunner.<span class="reserved">prototype</span>.getLog = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.log;
}



<span class="comment">//</span>
<span class="comment">// Add test to test mapper, which maps test unique id to listening object</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.addTest = <span class="reserved">function</span>(name, listener) {
	<span class="reserved">this</span>.testMapper[name] = listener;
}



<span class="comment">//</span>
<span class="comment">// Run all test groups</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.failedCounter = 0;
	<span class="reserved">this</span>.log = <span class="literal">""</span>;
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.testGroupRunners.length; i++) {
		var testGroupRunner = <span class="reserved">this</span>.testGroupRunners[i];
		testGroupRunner.run();
	}
}



<span class="comment">//</span>
<span class="comment">// Enable or disable test</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.enable = <span class="reserved">function</span>(name, state) {
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener &amp;&amp; listener.enable) {
		<span class="reserved">return</span> listener.enable(state);
	} <span class="reserved">else</span> {
		throw new GPError(<span class="literal">"TestRunner"</span>, GPError.OBJECT_NOT_FOUND, 0, name);
	}
}



<span class="comment">//</span>
<span class="comment">// isEnabled query from TestGroup runner</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.isEnabled = <span class="reserved">function</span>(name) {
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener &amp;&amp; listener.isEnabled) {
		<span class="reserved">return</span> listener.isEnabled();
	}
	<span class="reserved">return</span> true;
}



<span class="comment">//</span>
<span class="comment">// hasPassed Listener</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.hasPassed = <span class="reserved">function</span>(name, log) {
<span class="comment">//	print("hasPassed(" + name + ")");</span>
	<span class="reserved">if</span> (log) {
		<span class="reserved">this</span>.log += log;
	}
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener &amp;&amp; listener.hasPassed) {
		listener.hasPassed(log);

		<span class="reserved">if</span> (listener.getXML) {
			var result = new TestResult(name, true, log, listener.getXML());
			<span class="reserved">this</span>.testReport.addResult(result);
		}
	} <span class="reserved">else</span> {
		print(<span class="literal">"No receiver for passed notification : "</span> + name);
<span class="comment">//		for (var i in this.testMapper) {</span>
<span class="comment">//			print("- " + i);</span>
<span class="comment">//		}</span>
	}
}



<span class="comment">//</span>
<span class="comment">// hasFailed Listener</span>
<span class="comment">//</span>
TestRunner.<span class="reserved">prototype</span>.hasFailed = <span class="reserved">function</span>(name, log) {
<span class="comment">//	print("hasFailed(" + name + ")");</span>
	<span class="reserved">if</span> (log) {
		<span class="reserved">this</span>.log += log;
	}
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener &amp;&amp; listener.hasFailed) {
		listener.hasFailed(log);

		<span class="reserved">if</span> (listener.getXML) {
			var result = new TestResult(name, false, log, listener.getXML());
			<span class="reserved">this</span>.testReport.addResult(result);
		}
		<span class="reserved">this</span>.failedCounter++;
	}
}



<span class="comment">/**
 * Write test report
 */</span>
TestRunner.<span class="reserved">prototype</span>.report = <span class="reserved">function</span>(fn) {
	<span class="reserved">this</span>.testReport.writeReport(fn);
	print(<span class="literal">"Report written to "</span> + fn);
}



<span class="comment">// ----------------------------------------</span>
<span class="comment">// Constructor for a TestGroupRunner object</span>
<span class="comment">//</span>
<span class="reserved">function</span> TestGroupRunner(testRunner, testGroup) {
	<span class="reserved">this</span>.testRunner = testRunner;
	<span class="reserved">this</span>.testGroup = testGroup;
	
	var testcases = testGroup.getTestCaseNames();
	
	<span class="reserved">for</span> (var i = 0; i &lt; testcases.length; i++) {
		var tcr = new TestCaseRunner(<span class="reserved">this</span>, testcases[i]);
	}
}



<span class="comment">//</span>
<span class="comment">// run this test group</span>
<span class="comment">//</span>
TestGroupRunner.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>() {
	var test = <span class="reserved">this</span>.testGroup;
	
	test.run(<span class="reserved">this</span>.testRunner);
}




<span class="comment">// ---------------------------------------</span>
<span class="comment">// Constructor for a TestCaseRunner object</span>
<span class="comment">//</span>
<span class="reserved">function</span> TestCaseRunner(testGroupRunner, testCase) {
	<span class="reserved">this</span>.testGroupRunner = testGroupRunner;
	<span class="reserved">this</span>.testCase = testCase;
	<span class="reserved">this</span>.selected = true;
	
	var testRunner = testGroupRunner.testRunner;
	testRunner.addTest(testGroupRunner.testGroup.getName() + <span class="literal">"/"</span> + testCase, <span class="reserved">this</span>);
			
	<span class="reserved">this</span>.xml = testGroupRunner.testGroup.getTestCase(testCase).XML;

	var testGroup = testGroupRunner.testGroup;
		
	var testprocedures = testGroup.getUsedTestProceduresForTestCase(testCase);
	
	<span class="reserved">if</span> (testprocedures) {
		<span class="reserved">for</span> (var i = 0; i &lt; testprocedures.length; i++) {
			var tpr = new TestProcedureRunner(<span class="reserved">this</span>, testprocedures[i]);
		}
	}
}



<span class="comment">//</span>
<span class="comment">// Run this test case</span>
<span class="comment">//</span>
TestCaseRunner.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>() {
	var test = <span class="reserved">this</span>.testGroupRunner.testGroup;
	
	test.runTestCase(<span class="reserved">this</span>.testCase, <span class="reserved">this</span>.testGroupRunner.testRunner);
}



<span class="comment">//</span>
<span class="comment">// Tell test runner if case is enabled</span>
<span class="comment">//</span>
TestCaseRunner.<span class="reserved">prototype</span>.isEnabled = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.selected;
}



<span class="comment">//</span>
<span class="comment">// Add a log entry to the test case node</span>
<span class="comment">//</span>
TestCaseRunner.<span class="reserved">prototype</span>.addLog = <span class="reserved">function</span>(log) {
}



<span class="comment">//</span>
<span class="comment">// Get log for the test case node</span>
<span class="comment">//</span>
TestCaseRunner.<span class="reserved">prototype</span>.getLog = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.log;
}



<span class="comment">/**
 * Return describing XML element
 *
 * <span class="attrib">@type</span> Object
 * <span class="attrib">@return</span> the XML element for this test case
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.getXML = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.xml;
}



<span class="comment">//</span>
<span class="comment">// Listener for passed notifications</span>
<span class="comment">// </span>
TestCaseRunner.<span class="reserved">prototype</span>.hasPassed = <span class="reserved">function</span>(log) {
	<span class="reserved">this</span>.failed = false;
	<span class="reserved">this</span>.addLog(log);
}



<span class="comment">//</span>
<span class="comment">// Listener for failed notifications</span>
<span class="comment">// </span>
TestCaseRunner.<span class="reserved">prototype</span>.hasFailed = <span class="reserved">function</span>(log) {
	<span class="reserved">this</span>.failed = true;
	<span class="reserved">this</span>.addLog(log);
}



<span class="comment">//</span>
<span class="comment">// Clear result of test</span>
<span class="comment">//</span>
TestCaseRunner.<span class="reserved">prototype</span>.clearResult = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.failed = false;
}




<span class="comment">//</span>
<span class="comment">// Enable or disable test</span>
<span class="comment">//</span>
TestCaseRunner.<span class="reserved">prototype</span>.enable = <span class="reserved">function</span>(state) {
	<span class="reserved">this</span>.selected = state;
}




<span class="comment">// --------------------------------------------</span>
<span class="comment">// Constructor for a TestProcedureRunner object</span>
<span class="comment">//</span>
<span class="reserved">function</span> TestProcedureRunner(testCaseRunner, testProcedure) {
	<span class="reserved">this</span>.testCaseRunner = testCaseRunner;
	<span class="reserved">this</span>.testProcedure = testProcedure;
	
	var tp = <span class="reserved">this</span>.testCaseRunner.testGroupRunner.testRunner.testProcedures[testProcedure];

	<span class="reserved">if</span> (tp) {
		var list = new Array();
		<span class="reserved">for</span> (var i in tp.<span class="reserved">prototype</span>) {
			<span class="reserved">if</span> (i.substr(0, 4) == <span class="literal">"step"</span>) {
				var step = i.substr(4);
				list.push(step);
			}
		}

		list.sort();
		
		<span class="reserved">for</span> (var i = 0; i &lt; list.length; i++) {
			var tpsr = new TestStepRunner(<span class="reserved">this</span>, list[i]);
		}
	} <span class="reserved">else</span> {
		print(<span class="literal">"No test procedure implementation found for "</span> + testProcedure);
	}
}




<span class="comment">// ---------------------------------------</span>
<span class="comment">// Constructor for a TestStepRunner object</span>
<span class="comment">//</span>
<span class="reserved">function</span> TestStepRunner(testProcedureRunner, testStep) {
	<span class="reserved">this</span>.testProcedureRunner = testProcedureRunner;
	<span class="reserved">this</span>.testStep = testStep;
	
	var testCaseRunner = testProcedureRunner.testCaseRunner;	
	var testGroupRunner = testCaseRunner.testGroupRunner;
	var testRunner = testGroupRunner.testRunner;
	var testName = testGroupRunner.testGroup.getName() + <span class="literal">"/"</span> + 
	               testCaseRunner.testCase + <span class="literal">"/"</span> + 
	               testProcedureRunner.testProcedure + <span class="literal">"/"</span> +
	               testStep;
	               
	testRunner.addTest(testName, <span class="reserved">this</span>);
}



<span class="comment">//</span>
<span class="comment">// Receive passed notifications</span>
<span class="comment">//</span>
TestStepRunner.<span class="reserved">prototype</span>.hasPassed = <span class="reserved">function</span>() {
}



<span class="comment">//</span>
<span class="comment">// Clear test result display</span>
<span class="comment">//</span>
TestStepRunner.<span class="reserved">prototype</span>.clearResult = <span class="reserved">function</span>() {
}


<span class="reserved">function</span> TestReport() {
	<span class="reserved">this</span>.testResults = [];
}



TestReport.<span class="reserved">prototype</span>.addResult = <span class="reserved">function</span>(result) {
	<span class="reserved">this</span>.testResults.push(result);
}



TestReport.<span class="reserved">prototype</span>.writeReport = <span class="reserved">function</span>(filename) {
	var xml = &lt;testreport/&gt;
	
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.testResults.length; i++) {
		var r = <span class="reserved">this</span>.testResults[i];
		var x = r.toXML();
		xml.testcaseresult += x;
	}

	var os = new java.io.FileOutputStream(filename);
	var fw = new java.io.OutputStreamWriter(os, <span class="literal">"UTF-8"</span>);

	fw.write(<span class="literal">"&lt;?xml version=\"</span>1.0\<span class="literal">" encoding=\"</span>UTF-8\<span class="literal">"?&gt;\n"</span>);
	fw.write(<span class="literal">"&lt;?xml-stylesheet type=\"</span>text/xsl\<span class="literal">" href=\"</span>docreport.xsl\<span class="literal">" ?&gt;\n"</span>);

	fw.write(xml.toXMLString());
	fw.close();
}



<span class="reserved">function</span> TestResult(id, verdict, log, tcxml) {
	<span class="reserved">this</span>.id = id;
	<span class="reserved">this</span>.verdict = verdict;
	<span class="reserved">this</span>.log = log;
	<span class="reserved">this</span>.tcxml = tcxml;
}



TestResult.<span class="reserved">prototype</span>.toXML = <span class="reserved">function</span>() {
	var source = <span class="reserved">this</span>.id.split(<span class="literal">"/"</span>)[0];
	var sourceid = <span class="reserved">this</span>.id.split(<span class="literal">"/"</span>)[1];

	var xml = &lt;testcaseresult id={<span class="reserved">this</span>.id} source={source} sourceid={sourceid}/&gt;;

	xml.name = &lt;name&gt;{<span class="reserved">this</span>.tcxml.name.elementValue}&lt;/name&gt;;

	xml.verdict = &lt;verdict&gt;{ <span class="reserved">this</span>.verdict ? <span class="literal">"Passed"</span> : <span class="literal">"Failed"</span> }&lt;/verdict&gt;;
	xml.log = &lt;log&gt;{ <span class="literal">"\n"</span> + <span class="reserved">this</span>.log + <span class="literal">"\n"</span> }&lt;/log&gt;;
	<span class="reserved">return</span> xml;
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_Certificate
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_Certificate";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_AuthenticationObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CIAInfo.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_Certificate</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<a href='PKCS15_CommonCertificateAttributes.html'>PKCS15_CommonCertificateAttributes</a>
               |
               +--<b>PKCS15_Certificate</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_Certificate</B>
   
      <DT>extends <a href='PKCS15_CommonCertificateAttributes.html'>PKCS15_CommonCertificateAttributes</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds X.509 certificate attributes to the common certificate attribute class.</p>
 <p>The class decodes the following ASN.1 syntax for X.509 certificates:</p>
 <pre>
 X509CertificateAttributes ::= SEQUENCE {
 value ObjectValue { Certificate },
 subject Name OPTIONAL,
 issuer [0] Name OPTIONAL,
 serialNumber CertificateSerialNumber OPTIONAL,
 ... -- For future extensions
 }
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/><B>See:</B><UL>- <a href="PKCS15_CommonCertificateAttributes.html#">PKCS15_CommonCertificateAttributes is the base class</a></UL>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#type">type</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CommonCertificateAttributes.html#iD'>iD</a>, <a href='PKCS15_CommonCertificateAttributes.html#authority'>authority</a>, <a href='PKCS15_CommonCertificateAttributes.html#identifier'>identifier</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;


   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_Certificate()">PKCS15_Certificate</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Certificate Attribute Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CommonCertificateAttributes.html#toString'>toString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="type"><!-- --></A>
   <H3>type</H3>
   <PRE>Object&nbsp;<B>type</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_Certificate()"><!-- --></A><H3>
PKCS15_Certificate</H3>
<PRE><B>PKCS15_Certificate</B>(tlv)</PRE>


<UL>
   Create a Certificate Attribute Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CommonCertificateAttributes.html#">PKCS15_CommonCertificateAttributes is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_AuthenticationObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CIAInfo.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_SecretKey
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_SecretKey";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_PrivateKey.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS8.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_SecretKey</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a>
               |
               +--<a href='PKCS15_CommonSecretKeyAttributes.html'>PKCS15_CommonSecretKeyAttributes</a>
                     |
                     +--<b>PKCS15_SecretKey</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_SecretKey</B>
   
      <DT>extends <a href='PKCS15_CommonSecretKeyAttributes.html'>PKCS15_CommonSecretKeyAttributes</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds secret key attributes to the common secret key attribute class.</p>
 <BR/><B>See:</B><UL>- <a href="PKCS15_CommonSecretKeyAttributes.html#">PKCS15_CommonSecretKeyAttributes is the base class</a></UL><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#type">type</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   

   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CommonKeyAttributes.html#iD'>iD</a>, <a href='PKCS15_CommonKeyAttributes.html#usage'>usage</a>, <a href='PKCS15_CommonKeyAttributes.html#native_'>native_</a>, <a href='PKCS15_CommonKeyAttributes.html#accessFlags'>accessFlags</a>, <a href='PKCS15_CommonKeyAttributes.html#keyReference'>keyReference</a>, <a href='PKCS15_CommonKeyAttributes.html#startDate'>startDate</a>, <a href='PKCS15_CommonKeyAttributes.html#endDate'>endDate</a>, <a href='PKCS15_CommonKeyAttributes.html#algReference'>algReference</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;


   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_SecretKey()">PKCS15_SecretKey</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Secret Key Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CommonKeyAttributes.html#getUsageAsString'>getUsageAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#getAccessFlagsAsString'>getAccessFlagsAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#toString'>toString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="type"><!-- --></A>
   <H3>type</H3>
   <PRE>Object&nbsp;<B>type</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_SecretKey()"><!-- --></A><H3>
PKCS15_SecretKey</H3>
<PRE><B>PKCS15_SecretKey</B>(tlv)</PRE>


<UL>
   Create a Secret Key Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CommonSecretKeyAttributes.html#">PKCS15_CommonSecretKeyAttributes is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_PrivateKey.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS8.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_AuthenticationObject
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_AuthenticationObject";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_ApplicationTemplate.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_Certificate.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_AuthenticationObject</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<a href='PKCS15_CommonAuthenticationObjectAttributes.html'>PKCS15_CommonAuthenticationObjectAttributes</a>
               |
               +--<b>PKCS15_AuthenticationObject</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_AuthenticationObject</B>
   
      <DT>extends <a href='PKCS15_CommonAuthenticationObjectAttributes.html'>PKCS15_CommonAuthenticationObjectAttributes</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds authentication object attributes to the common authentication object class.</p>
 <p>The class supports password objects.</p>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/><B>See:</B><UL>- <a href="PKCS15_CommonAuthenticationObjectAttributes.html#">PKCS15_CommonAuthenticationObjectAttributes is the base class</a></UL>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#pwd">pwd</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CommonAuthenticationObjectAttributes.html#authIdThis'>authIdThis</a>, <a href='PKCS15_CommonAuthenticationObjectAttributes.html#authReference'>authReference</a>, <a href='PKCS15_CommonAuthenticationObjectAttributes.html#seIdentifier'>seIdentifier</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;


   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_AuthenticationObject()">PKCS15_AuthenticationObject</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create an Authentication Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CommonAuthenticationObjectAttributes.html#toString'>toString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="pwd"><!-- --></A>
   <H3>pwd</H3>
   <PRE>Object&nbsp;<B>pwd</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_AuthenticationObject()"><!-- --></A><H3>
PKCS15_AuthenticationObject</H3>
<PRE><B>PKCS15_AuthenticationObject</B>(tlv)</PRE>


<UL>
   Create an Authentication Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CommonAuthenticationObjectAttributes.html#">PKCS15_CommonAuthenticationObjectAttributes is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_ApplicationTemplate.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_Certificate.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 FCPDecorator.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" FCPDecorator.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-FCPDecorator.js.html" 
                                            target="classFrame">FCPDecorator.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 All Classes 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" All Classes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary.html" target="classFrame">All Classes</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="AlgorithmInfo.html" TARGET="classFrame">AlgorithmInfo</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="CardOutlineFactory.html" TARGET="classFrame">CardOutlineFactory</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="CRLGenerator.html" TARGET="classFrame">CRLGenerator</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="DataOutline.html" TARGET="classFrame">DataOutline</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="ECCUtils.html" TARGET="classFrame">ECCUtils</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="File.html" TARGET="classFrame">File</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="GLOBALS.html" TARGET="classFrame">GLOBALS</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineATR.html" TARGET="classFrame">OutlineATR</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineCard.html" TARGET="classFrame">OutlineCard</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineDataObject.html" TARGET="classFrame">OutlineDataObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineDF.html" TARGET="classFrame">OutlineDF</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineEF.html" TARGET="classFrame">OutlineEF</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineFCP.html" TARGET="classFrame">OutlineFCP</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlinePKCS15.html" TARGET="classFrame">OutlinePKCS15</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineRecord.html" TARGET="classFrame">OutlineRecord</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS10Generator.html" TARGET="classFrame">PKCS10Generator</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15.html" TARGET="classFrame">PKCS15</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_ApplicationTemplate.html" TARGET="classFrame">PKCS15_ApplicationTemplate</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_AuthenticationObject.html" TARGET="classFrame">PKCS15_AuthenticationObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_Certificate.html" TARGET="classFrame">PKCS15_Certificate</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIAInfo.html" TARGET="classFrame">PKCS15_CIAInfo</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIO.html" TARGET="classFrame">PKCS15_CIO</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIODDO.html" TARGET="classFrame">PKCS15_CIODDO</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html" TARGET="classFrame">PKCS15_CommonAuthenticationObjectAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonCertificateAttributes.html" TARGET="classFrame">PKCS15_CommonCertificateAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonDataContainerObjectAttributes.html" TARGET="classFrame">PKCS15_CommonDataContainerObjectAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonKeyAttributes.html" TARGET="classFrame">PKCS15_CommonKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonPrivateKeyAttributes.html" TARGET="classFrame">PKCS15_CommonPrivateKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonSecretKeyAttributes.html" TARGET="classFrame">PKCS15_CommonSecretKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_DataContainerObject.html" TARGET="classFrame">PKCS15_DataContainerObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_PasswordAuthenticationObject.html" TARGET="classFrame">PKCS15_PasswordAuthenticationObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_Path.html" TARGET="classFrame">PKCS15_Path</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_PrivateKey.html" TARGET="classFrame">PKCS15_PrivateKey</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_SecretKey.html" TARGET="classFrame">PKCS15_SecretKey</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS8.html" TARGET="classFrame">PKCS8</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKIXCommon.html" TARGET="classFrame">PKIXCommon</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestCaseRunner.html" TARGET="classFrame">TestCaseRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestGroup.html" TARGET="classFrame">TestGroup</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestGroupRunner.html" TARGET="classFrame">TestGroupRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestLogFile.html" TARGET="classFrame">TestLogFile</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestProcedure.html" TARGET="classFrame">TestProcedure</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestProcedureRunner.html" TARGET="classFrame">TestProcedureRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestReport.html" TARGET="classFrame">TestReport</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestResult.html" TARGET="classFrame">TestResult</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestRunner.html" TARGET="classFrame">TestRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestStepRunner.html" TARGET="classFrame">TestStepRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="X509CertificateGenerator.html" TARGET="classFrame">X509CertificateGenerator</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="X509Name.html" TARGET="classFrame">X509Name</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 explore.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" explore.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-explore.js.html" 
                                            target="classFrame">explore.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineCard.html" TARGET="classFrame">OutlineCard</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 CardOutlineFactory2.0.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" CardOutlineFactory2.0.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-CardOutlineFactory2.0.js.html" 
                                            target="classFrame">CardOutlineFactory2.0.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="CardOutlineFactory.html" TARGET="classFrame">CardOutlineFactory</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineDataObject.html" TARGET="classFrame">OutlineDataObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlinePKCS15.html" TARGET="classFrame">OutlinePKCS15</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
AlgorithmInfo
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="AlgorithmInfo";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<B>PREV CLASS</B><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="CardOutlineFactory.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class AlgorithmInfo</H2>
<PRE>Object
   |
   +--<b>AlgorithmInfo</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>AlgorithmInfo</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#algorithm">algorithm</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#algRef">algRef</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#objId">objId</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#parameters">parameters</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#reference">reference</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#supportedOperations">supportedOperations</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#tlv">tlv</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#AlgorithmInfo()">AlgorithmInfo</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create an AlgorithmInfo object from TLV data


      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getOperationsAsString">getOperationsAsString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the operations flags as string of concatenated tokens.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="algorithm"><!-- --></A>
   <H3>algorithm</H3>
   <PRE>Object&nbsp;<B>algorithm</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="algRef"><!-- --></A>
   <H3>algRef</H3>
   <PRE>Object&nbsp;<B>algRef</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="objId"><!-- --></A>
   <H3>objId</H3>
   <PRE>Object&nbsp;<B>objId</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="parameters"><!-- --></A>
   <H3>parameters</H3>
   <PRE>Object&nbsp;<B>parameters</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="reference"><!-- --></A>
   <H3>reference</H3>
   <PRE>Object&nbsp;<B>reference</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="supportedOperations"><!-- --></A>
   <H3>supportedOperations</H3>
   <PRE>Object&nbsp;<B>supportedOperations</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="tlv"><!-- --></A>
   <H3>tlv</H3>
   <PRE>Object&nbsp;<B>tlv</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="AlgorithmInfo()"><!-- --></A><H3>
AlgorithmInfo</H3>
<PRE><B>AlgorithmInfo</B>(tlv)</PRE>


<UL>
   Create an AlgorithmInfo object from TLV data

 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 AlgorithmInfo ::= SEQUENCE {
   reference Reference,
   algorithm CIO-ALGORITHM.&id({AlgorithmSet}),
   parameters CIO-ALGORITHM.&Parameters({AlgorithmSet}{@algorithm}),
   supportedOperations CIO-ALGORITHM.&Operations({AlgorithmSet}{@algorithm}),
   objId CIO-ALGORITHM.&objectIdentifier ({AlgorithmSet}{@algorithm}),
   algRef Reference OPTIONAL
 }

 CIO-ALGORITHM ::= CLASS {
   &id INTEGER UNIQUE,
   &Parameters,
   &Operations Operations,
   &objectIdentifier OBJECT IDENTIFIER OPTIONAL
   } WITH SYNTAX {
   PARAMETERS &Parameters OPERATIONS &Operations ID &id [OID &objectIdentifier]
 }
 </pre>
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the AlgorithmInfo    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getOperationsAsString"><!-- --></A>
   <H3>getOperationsAsString</H3>
   <PRE>String <B>getOperationsAsString</B>()</PRE>
   
      <UL>Gets the operations flags as string of concatenated tokens.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string containing the flags separated by a blank   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<B>PREV CLASS</B><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="CardOutlineFactory.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 x509name.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" x509name.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-x509name.js.html" 
                                            target="classFrame">x509name.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="X509Name.html" TARGET="classFrame">X509Name</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="p15classes.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>p15classes.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		Classes to parse PKCS#15 data structures<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="AlgorithmInfo.html">AlgorithmInfo</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15.html">PKCS15</a></b></td>
    <td><p>This class provides for direct access to a PKCS#15 data structure on a card.</p>
 <p>The calling application will typically use:</p>
 <pre>
 var card = new Card(_scsh3.reader);
 var p15 = new PKCS15(card);
 var appllist = p15.readApplicationDirectory();
 var aid;
 for (var i in appllist) {
   print(i);
   aid = i;
 }
 var at = appllist[aid];
 p15.readObjectListForApplication(at);
 for (var i = 0; i < at.objlist.length; i++) {
   print(at.objlist[i]);
 }
 </pre>
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</a></b></td>
    <td><p>This class provides for access to an application template.</p>
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_AuthenticationObject.html">PKCS15_AuthenticationObject</a></b></td>
    <td><p>This class adds authentication object attributes to the common authentication object class.</p>
 <p>The class supports password objects.</p>
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_Certificate.html">PKCS15_Certificate</a></b></td>
    <td><p>This class adds X.509 certificate attributes to the common certificate attribute class.</p>
 <p>The class decodes the following ASN.1 syntax for X.509 certificates:</p>
 <pre>
 X509CertificateAttributes ::= SEQUENCE {
 value ObjectValue { Certificate },
 subject Name OPTIONAL,
 issuer [0] Name OPTIONAL,
 serialNumber CertificateSerialNumber OPTIONAL,
 ...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CIAInfo.html">PKCS15_CIAInfo</a></b></td>
    <td><p>Class to decode CIAInfo objects.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CIAInfo ::= SEQUENCE {
		version INTEGER {v1(0),v2(1)} (v1|v2,...),
		serialNumber OCTET STRING OPTIONAL,
		manufacturerID Label OPTIONAL,
		label [0] Label OPTIONAL,
		cardflags CardFlags,
		seInfo SEQUENCE OF SecurityEnvironmentInfo OPTIONAL,
		recordInfo [1] RecordInfo OPTIONAL,
		supportedAlgorithms [2] SEQUENCE OF AlgorithmInfo OPTIONAL,
		issuerId [3] Label OPTIONAL,
		holderId [4] Label OPTIONAL,
		lastUpdate [5] LastUpdate OPTIONAL,
		preferredLanguage PrintableString OPTIONAL, -- In accordance with IETF RFC 1766
		profileIndication [6] SEQUENCE OF ProfileIndication OPTIONAL,
		...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CIO.html">PKCS15_CIO</a></b></td>
    <td><p>This is the base class for all cryptographic objects in a PKCS#15 data structure.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonObjectAttributes ::= SEQUENCE {
		label Label OPTIONAL,
		flags CommonObjectFlags OPTIONAL,
		authId Identifier OPTIONAL,
		userConsent INTEGER (1..cia-ub-userConsent) OPTIONAL,
		accessControlRules SEQUENCE SIZE (1..MAX) OF AccessControlRule OPTIONAL,
		...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CIODDO.html">PKCS15_CIODDO</a></b></td>
    <td><p>Class to decode CIO DDO objects.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CIODDO ::= SEQUENCE {
 		providerId OBJECT IDENTIFIER OPTIONAL,
 		odfPath Path OPTIONAL,
		ciaInfoPath [0] Path OPTIONAL,
		aid [APPLICATION 15] OCTET STRING (SIZE(1..16)),
		(CONSTRAINED BY {-- Must be an AID in accordance with ISO/IEC 7816-4--})
		OPTIONAL,
		...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</a></b></td>
    <td><p>This class adds common authentication object attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonAuthenticationObjectAttributes ::= SEQUENCE {
    authId Identifier OPTIONAL,
    authReference Reference OPTIONAL,
    seIdentifier [0] Reference OPTIONAL,
    ...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</a></b></td>
    <td><p>This class adds common certificate attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonCertificateAttributes ::= SEQUENCE {
 iD Identifier,
 authority BOOLEAN DEFAULT FALSE,
 identifier CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 certHash [0] CertHash OPTIONAL,
 trustedUsage [1] Usage OPTIONAL,
 identifiers [2] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 validity [4] Validity OPTIONAL,
 ...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</a></b></td>
    <td><p>This class adds common data container attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonDataContainerObjectAttributes ::= SEQUENCE {
 		applicationName Label OPTIONAL,
 		applicationOID OBJECT IDENTIFIER OPTIONAL,
 		iD Identifier OPTIONAL,
 		...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</a></b></td>
    <td><p>This class adds common key attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonKeyAttributes ::= SEQUENCE {
		iD Identifier,
		usage KeyUsageFlags,
		native BOOLEAN DEFAULT TRUE,
		accessFlags KeyAccessFlags OPTIONAL,
		keyReference KeyReference OPTIONAL,
		startDate GeneralizedTime OPTIONAL,
		endDate [0] GeneralizedTime OPTIONAL,
		algReference [1] SEQUENCE OF Reference OPTIONAL,
		...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CommonPrivateKeyAttributes.html">PKCS15_CommonPrivateKeyAttributes</a></b></td>
    <td><p>This class adds common private key attributes to the common key attribute class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonPrivateKeyAttributes ::= SEQUENCE {
 name Name OPTIONAL,
 keyIdentifiers [0] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 generalName [1] GeneralNames OPTIONAL,
 ...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_CommonSecretKeyAttributes.html">PKCS15_CommonSecretKeyAttributes</a></b></td>
    <td><p>This class adds common secret key attributes to the common key attribute class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonSecretKeyAttributes ::= SEQUENCE {
   keyLen INTEGER OPTIONAL, -- keylength (in bits)
   -- For future extensions
  }
 </pre>
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_DataContainerObject.html">PKCS15_DataContainerObject</a></b></td>
    <td><p>This class adds data container objects to the common data container object attributes class.</p>
 <p>The class decodes the following ASN.1 syntax for opaque data objects with indirect path reference:</p>
 <pre>
 OpaqueDOAttributes ::= ObjectValue {CIO-OPAQUE.&Type}

</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</a></b></td>
    <td><p>This class supports password authentication objects.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 PasswordAttributes ::= SEQUENCE {
	pwdFlags PasswordFlags,
	pwdType PasswordType,
	minLength INTEGER (cia-lb-minPasswordLength..cia-ub-minPasswordLength),
	storedLength INTEGER (0..cia-ub-storedPasswordLength),
	maxLength INTEGER OPTIONAL,
	pwdReference [0] Reference DEFAULT 0,
	padChar OCTET STRING (SIZE(1)) OPTIONAL,
	lastPasswordChange GeneralizedTime OPTIONAL,
	path Path OPTIONAL,
	...</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_Path.html">PKCS15_Path</a></b></td>
    <td><p>This class provides for access to PKCS#15 structures.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 Path ::= SEQUENCE {
 		efidOrPath OCTET STRING,
		index INTEGER (0..cia-ub-index) OPTIONAL,
		length [0] INTEGER (0..cia-ub-index) OPTIONAL
	}( WITH COMPONENTS {..., index PRESENT, length PRESENT}|
 	   WITH COMPONENTS {..., index ABSENT, length ABSENT})
 </pre>
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_PrivateKey.html">PKCS15_PrivateKey</a></b></td>
    <td><p>This class adds private key attributes to the common private key attribute class.</p>
 <p>The class supports RSA and ECC keys.</p>
 <p>RSA keys are decoded from the following ASN.1 structure:</p>
 <pre>
 PrivateRSAKeyAttributes ::= SEQUENCE {
 value Path,
 modulusLength INTEGER, -- modulus length in bits, e.g.</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS15_SecretKey.html">PKCS15_SecretKey</a></b></td>
    <td><p>This class adds secret key attributes to the common secret key attribute class.</p>
 </td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

	<a name="method_summary"><!-- --></a>
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
			<td colspan=2>
				<font size="+2">
					<b>Method Summary</b>
				</font>
			</td>
		</tr>
	
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;Number</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!IntFromBitString">IntFromBitString</a></b>(b)
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 Return the BIT STRING as integer value
		      </td>
		   </tr>
		
	
	</table>
    <p>

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  <span class="attrib">@fileoverview</span>
 *  Classes to parse PKCS#15 data structures
 */</span>



<span class="comment">/**
 * Return the BIT STRING as integer value
 *
 * <span class="attrib">@param</span> {ByteString} the ASN.1 BIT STRING to convert
 * <span class="attrib">@return</span> the converted integer
 * <span class="attrib">@type</span> Number
 */</span>
<span class="reserved">function</span> IntFromBitString(b) {
	assert(b.length &lt; 5);
	var bits = b.bytes(1).toUnsigned();
	<span class="reserved">return</span> bits &lt;&lt; ((4 - b.length) &lt;&lt; 3);
}

<span class="comment">/*
print("0080 - ", IntFromBitString(new ByteString("0080", HEX)).toString(16));
print("0180 - ", IntFromBitString(new ByteString("0180", HEX)).toString(16));
print("0780 - ", IntFromBitString(new ByteString("0780", HEX)).toString(16));
print("078000 - ", IntFromBitString(new ByteString("078000", HEX)).toString(16));
print("07800000 - ", IntFromBitString(new ByteString("07800000", HEX)).toString(16));
*/</span>



<span class="comment">/**
 * Creates a PKCS#15 path from the encoded TLV structure
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class provides for access to PKCS#15 structures.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * Path ::= SEQUENCE {
 * 		efidOrPath OCTET STRING,
 *		index INTEGER (0..cia-ub-index) OPTIONAL,
 *		length [0] INTEGER (0..cia-ub-index) OPTIONAL
 *	}( WITH COMPONENTS {..., index PRESENT, length PRESENT}|
 * 	   WITH COMPONENTS {..., index ABSENT, length ABSENT})
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the path
 */</span>
<span class="reserved">function</span> PKCS15_Path(tlv) {
	assert(tlv.elements &gt; 0);

	var t = tlv.get(0);
	assert(t.tag == ASN1.OCTET_STRING);

	t.setName(<span class="literal">"efidOrPath"</span>);
	<span class="reserved">this</span>.efidOrPath = <span class="literal">""</span>;

	<span class="reserved">for</span> (var i = 0; i &lt; t.length; i += 2) {
		<span class="reserved">if</span> (t.length - i &gt;= 2) {
			<span class="reserved">this</span>.efidOrPath += <span class="literal">":"</span> + t.value.bytes(i, 2).toString(HEX);
		} <span class="reserved">else</span> {
			<span class="reserved">this</span>.efidOrPath += <span class="literal">":"</span> + ByteString.valueOf(t.value.byteAt(i) &gt;&gt; 3).toString(HEX);
		}
	}

	<span class="reserved">if</span> (tlv.elements == 3) {
		t = tlv.get(1);
		assert(t.tag == ASN1.INTEGER);
		assert(t.length &gt; 0);
		t.setName(<span class="literal">"index"</span>);
		<span class="reserved">this</span>.index = t.value.toSigned();

		t = tlv.get(2);
		assert(t.tag == 0x80);
		assert(t.length &gt; 0);
		t.setName(<span class="literal">"length"</span>);
		<span class="reserved">this</span>.length = t.value.toSigned();
	}
}



<span class="comment">/**
 * Gets the absolute in the OCF format.
 *
 * <span class="attrib">@param</span> {String} df the current directory
 * <span class="attrib">@return</span> the path in OCF encoding
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_Path.<span class="reserved">prototype</span>.getAbsolutePath = <span class="reserved">function</span>(df) {
	<span class="reserved">if</span> (<span class="reserved">this</span>.aid) {
		<span class="reserved">return</span> <span class="reserved">this</span>.aid + <span class="reserved">this</span>.efidOrPath;
	}

	var p = <span class="reserved">this</span>.efidOrPath;
	<span class="reserved">if</span> (p.slice(0, 5) != <span class="literal">":3F00"</span>) {
		p = df + p;
	}

	<span class="reserved">return</span> p;
}



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_Path.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = <span class="literal">"{"</span>;

	<span class="reserved">if</span> (<span class="reserved">this</span>.efidOrPath) {
		str += <span class="literal">"efidOrPath="</span> + <span class="reserved">this</span>.efidOrPath;
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.index) {
		str += <span class="literal">",index="</span> + <span class="reserved">this</span>.index;
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.length) {
		str += <span class="literal">",length="</span> + <span class="reserved">this</span>.length;
	}
	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Creates a CIO DDO object from data usually stored in EF_DIR.
 *
 * <span class="attrib">@class</span> &lt;p&gt;Class to decode CIO DDO objects.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CIODDO ::= SEQUENCE {
 * 		providerId OBJECT IDENTIFIER OPTIONAL,
 * 		odfPath Path OPTIONAL,
 *		ciaInfoPath [0] Path OPTIONAL,
 *		aid [APPLICATION 15] OCTET STRING (SIZE(1..16)),
 *		(CONSTRAINED BY {-- Must be an AID in accordance with ISO/IEC 7816-4--})
 *		OPTIONAL,
 *		... -- For future extensions
 * } -- Context tag 1 is historical and shall not be used
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO DDO
 */</span>
<span class="reserved">function</span> PKCS15_CIODDO(tlv) {
	assert(tlv.tag == 0x73);

	var i = 0;

	<span class="reserved">if</span> (i &lt; tlv.elements) {
		var t = tlv.get(i);
		<span class="reserved">if</span> (t.tag == ASN1.OBJECT_IDENTIFIER) {
			<span class="reserved">this</span>.providerId = t.toString();
			i++;
		}
	}

	<span class="reserved">if</span> (i &lt; tlv.elements) {
		var t = tlv.get(i);
		<span class="reserved">if</span> (t.tag == ASN1.SEQUENCE) {
			<span class="reserved">this</span>.odfPath = new PKCS15_Path(t);
			i++;
		}
	}

	<span class="reserved">if</span> (i &lt; tlv.elements) {
		var t = tlv.get(i);
		<span class="reserved">if</span> (t.tag == 0xA0) {
			<span class="reserved">this</span>.ciaInfoPath = new PKCS15_Path(t);
			i++;
		}
	}
}



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CIODDO.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = <span class="literal">"{"</span>;

	<span class="reserved">if</span> (<span class="reserved">this</span>.providerId) {
		str += <span class="literal">"providerId="</span> + <span class="reserved">this</span>.providerId + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.odfPath) {
		str += <span class="literal">"odfPath="</span> + <span class="reserved">this</span>.odfPath + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.ciaInfoPath) {
		str += <span class="literal">"ciaInfoPath="</span> + <span class="reserved">this</span>.ciaInfoPath + <span class="literal">",\n"</span>;
	}
	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Creates a structure to access an application template from EF_DIR.
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class provides for access to an application template.&lt;/p&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO DDO
 */</span>
<span class="reserved">function</span> PKCS15_ApplicationTemplate(tlv) {
	assert(tlv.tag == 0x61);
	assert(tlv.elements &gt; 0);

	<span class="reserved">for</span> (var i = 0; i &lt; tlv.elements; i++) {
		var t = tlv.get(i);
		switch(t.tag) {
			case 0x4F:
				<span class="reserved">this</span>.aid = t.value.toString(HEX);
				break;
			case 0x50:
				<span class="reserved">this</span>.label = t.value.toString(UTF8);
				break;
			case 0x51:
				<span class="reserved">this</span>.path = <span class="literal">":"</span> + t.value.toString(HEX);
				break;
			case 0x73:
				<span class="reserved">this</span>.ddo = new PKCS15_CIODDO(t);
				break;
		}
	}
}

<span class="comment">/**
 * The application identifier for this application.
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_ApplicationTemplate.<span class="reserved">prototype</span>.aid = <span class="literal">""</span>;

<span class="comment">/**
 * The application label for this application.
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_ApplicationTemplate.<span class="reserved">prototype</span>.label = <span class="literal">""</span>;

<span class="comment">/**
 * The path for this application.
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_ApplicationTemplate.<span class="reserved">prototype</span>.path = <span class="literal">""</span>;

<span class="comment">/**
 * The PKCS#15 Directory Data Object (DDO) for this application.
 * <span class="attrib">@type</span> PKCS15_CIODDO
 */</span>
PKCS15_ApplicationTemplate.<span class="reserved">prototype</span>.ddo = <span class="literal">""</span>;

<span class="comment">/**
 * The list of Cryptographic Information Objects (CIO).
 * <span class="attrib">@see</span> PKCS15.readObjectListForApplication
 * <span class="attrib">@type</span> PKCS15_CIO[]
 */</span>
PKCS15_ApplicationTemplate.<span class="reserved">prototype</span>.objlist = null;



<span class="comment">/**
 * Convert the object to a human readable string
 */</span>
PKCS15_ApplicationTemplate.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = <span class="literal">"{"</span>;

	<span class="reserved">if</span> (<span class="reserved">this</span>.aid) {
		str += <span class="literal">"aid="</span> + <span class="reserved">this</span>.aid + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.label) {
		str += <span class="literal">"label="</span> + <span class="reserved">this</span>.label + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.path) {
		str += <span class="literal">"path="</span> + <span class="reserved">this</span>.path + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.ddo) {
		str += <span class="literal">"ddo="</span> + <span class="reserved">this</span>.ddo + <span class="literal">",\n"</span>;
	}
	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Creates a CIAInfo object.
 *
 * <span class="attrib">@class</span> &lt;p&gt;Class to decode CIAInfo objects.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CIAInfo ::= SEQUENCE {
 *		version INTEGER {v1(0),v2(1)} (v1|v2,...),
 *		serialNumber OCTET STRING OPTIONAL,
 *		manufacturerID Label OPTIONAL,
 *		label [0] Label OPTIONAL,
 *		cardflags CardFlags,
 *		seInfo SEQUENCE OF SecurityEnvironmentInfo OPTIONAL,
 *		recordInfo [1] RecordInfo OPTIONAL,
 *		supportedAlgorithms [2] SEQUENCE OF AlgorithmInfo OPTIONAL,
 *		issuerId [3] Label OPTIONAL,
 *		holderId [4] Label OPTIONAL,
 *		lastUpdate [5] LastUpdate OPTIONAL,
 *		preferredLanguage PrintableString OPTIONAL, -- In accordance with IETF RFC 1766
 *		profileIndication [6] SEQUENCE OF ProfileIndication OPTIONAL,
 *		...
 *		} (CONSTRAINED BY { -- Each AlgorithmInfo.reference value shall be unique --})
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIAInfo
 */</span>
<span class="reserved">function</span> PKCS15_CIAInfo(tlv) {
	assert(tlv.tag == ASN1.SEQUENCE);
	assert(tlv.elements &gt; 2);

	<span class="reserved">this</span>.tlv = tlv;
	var i = 0;
	var t;

	tlv.setName(<span class="literal">"CIAInfo"</span>);

	<span class="comment">// version</span>
	t = tlv.get(i);
	assert(t.tag == ASN1.INTEGER);
	t.setName(<span class="literal">"version"</span>);
	<span class="reserved">this</span>.version = t.value.toSigned();
	i++;

	<span class="comment">// serialNumber</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.OCTET_STRING)) {
		t.setName(<span class="literal">"serialNumber"</span>);
		<span class="reserved">this</span>.serialNumber = t.value;
		i++;
	}

	<span class="comment">// manufacturerID</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.UTF8String)) {
		t.setName(<span class="literal">"manufacturerID"</span>);
		<span class="reserved">this</span>.manufacturerID = t.value.toString(UTF8);
		i++;
	}

	<span class="comment">// label</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0x80)) {
		t.setName(<span class="literal">"label"</span>);
		<span class="reserved">this</span>.label = t.value.toString(UTF8);
		i++;
	}

	t = tlv.get(i);
	assert(t.tag == ASN1.BIT_STRING);
	<span class="reserved">if</span> (t.length &gt; 1) {
		<span class="reserved">this</span>.cardflags = t.value.bytes(1,1).toUnsigned();
		t.setName(<span class="literal">"cardflags {"</span> + <span class="reserved">this</span>.getCardflagsAsString() + <span class="literal">" }"</span>);
	} <span class="reserved">else</span> {
		<span class="reserved">this</span>.cardflags = 0;
	}
	i++;

	<span class="comment">// seInfo SEQUENCE OF SecurityEnvironmentInfo OPTIONAL,</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.SEQUENCE)) {
		t.setName(<span class="literal">"seInfo"</span>);
		print(<span class="literal">"CIAInfo.seInfo not further decoded : "</span> + t);
		<span class="reserved">this</span>.seInfo = <span class="literal">"### not implemented ###"</span>;
		i++;
	}

	<span class="comment">// recordInfo [1] RecordInfo OPTIONAL,</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA1)) {
		t.setName(<span class="literal">"recordInfo"</span>);
		print(<span class="literal">"CIAInfo.recordInfo not further decoded : "</span> + t);
		<span class="reserved">this</span>.recordInfo = <span class="literal">"### not implemented ###"</span>;
		i++;
	}

	<span class="comment">// supportedAlgorithms [2] SEQUENCE OF AlgorithmInfo OPTIONAL,</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA2)) {
		t.setName(<span class="literal">"supportedAlgorithms"</span>);
		<span class="reserved">this</span>.supportedAlgorithms = new Array();
		<span class="reserved">for</span> (var j = 0; j &lt; t.elements; j++) {
			var alg = new AlgorithmInfo(t.get(j));
			<span class="reserved">this</span>.supportedAlgorithms.push(alg);
		}
		i++;
	}

	<span class="comment">// issuerId [3] Label OPTIONAL,</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA3)) {
		t.setName(<span class="literal">"issuerId"</span>);
		print(<span class="literal">"CIAInfo.issuerId not further decoded : "</span> + t);
		<span class="reserved">this</span>.issuerId = <span class="literal">"### not implemented ###"</span>;
		i++;
	}

	<span class="comment">// holderId [4] Label OPTIONAL,</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA4)) {
		t.setName(<span class="literal">"holderId"</span>);
		print(<span class="literal">"CIAInfo.holderId not further decoded : "</span> + t);
		<span class="reserved">this</span>.holderId = <span class="literal">"### not implemented ###"</span>;
		i++;
	}

	<span class="comment">// lastUpdate [5] LastUpdate OPTIONAL,</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA5)) {
		t.setName(<span class="literal">"lastUpdate"</span>);
		print(<span class="literal">"CIAInfo.lastUpdate not further decoded : "</span> + t);
		<span class="reserved">this</span>.lastUpdate = <span class="literal">"### not implemented ###"</span>;
		i++;
	}

	<span class="comment">// preferredLanguage PrintableString OPTIONAL, -- In accordance with IETF RFC 1766</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.PrintableString)) {
		t.setName(<span class="literal">"preferredLanguage"</span>);
		<span class="reserved">this</span>.preferredLanguage = t.value.toString(ASCII);
		i++;
	}

	<span class="comment">// profileIndication [6] SEQUENCE OF ProfileIndication OPTIONAL,</span>
	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA6)) {
		t.setName(<span class="literal">"profileIndicator"</span>);
		print(<span class="literal">"CIAInfo.profileIndicator not further decoded : "</span> + t);
		<span class="reserved">this</span>.profileIndication = <span class="literal">"### not implemented ###"</span>;
		i++;
	}
}



<span class="comment">/**
 * Gets the card flags as string of concatenated flags.
 * <span class="attrib">@return</span> the string containing the flags separated by a blank
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CIAInfo.<span class="reserved">prototype</span>.getCardflagsAsString = <span class="reserved">function</span>() {
	<span class="reserved">return</span> (<span class="reserved">this</span>.cardflags &amp; 0x80 ? <span class="literal">" readonly"</span> : <span class="literal">""</span>) +
	       (<span class="reserved">this</span>.cardflags &amp; 0x40 ? <span class="literal">" authRequired"</span> : <span class="literal">""</span>) +
	       (<span class="reserved">this</span>.cardflags &amp; 0x20 ? <span class="literal">" prnGeneration"</span> : <span class="literal">""</span>);
}



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CIAInfo.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = <span class="literal">"CIAInfo { "</span>;

	str += <span class="literal">"version="</span> + <span class="reserved">this</span>.version + <span class="literal">",\n"</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.serialNumber) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"serialNumber="</span> + <span class="reserved">this</span>.serialNumber + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.manufacturerID) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"manufacturerID="</span> + <span class="reserved">this</span>.manufacturerID + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.label) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"label="</span> + <span class="reserved">this</span>.label + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"cardflags="</span> + <span class="reserved">this</span>.getCardflagsAsString() + <span class="literal">",\n"</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.supportedAlgorithms) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"supportedAlgorithms={\n"</span>;
		<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.supportedAlgorithms.length; i++) {
			str += <span class="reserved">this</span>.supportedAlgorithms[i].toString() + <span class="literal">"\n"</span>;
		}
		str += <span class="literal">"},\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.preferredLanguage) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"preferredLanguage="</span> + <span class="reserved">this</span>.preferredLanguage + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create an AlgorithmInfo object from TLV data
 *
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * AlgorithmInfo ::= SEQUENCE {
 *   reference Reference,
 *   algorithm CIO-ALGORITHM.&amp;id({AlgorithmSet}),
 *   parameters CIO-ALGORITHM.&amp;Parameters({AlgorithmSet}{<span class="attrib">@algorithm</span>}),
 *   supportedOperations CIO-ALGORITHM.&amp;Operations({AlgorithmSet}{<span class="attrib">@algorithm</span>}),
 *   objId CIO-ALGORITHM.&amp;objectIdentifier ({AlgorithmSet}{<span class="attrib">@algorithm</span>}),
 *   algRef Reference OPTIONAL
 * }
 *
 * CIO-ALGORITHM ::= CLASS {
 *   &amp;id INTEGER UNIQUE,
 *   &amp;Parameters,
 *   &amp;Operations Operations,
 *   &amp;objectIdentifier OBJECT IDENTIFIER OPTIONAL
 *   } WITH SYNTAX {
 *   PARAMETERS &amp;Parameters OPERATIONS &amp;Operations ID &amp;id [OID &amp;objectIdentifier]
 * }
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the AlgorithmInfo
 */</span>
<span class="reserved">function</span> AlgorithmInfo(tlv) {
	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements &gt;= 5);

		<span class="reserved">this</span>.tlv = tlv;

		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName(<span class="literal">"reference"</span>);
		<span class="reserved">this</span>.reference = t.value.toSigned();
		i++;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName(<span class="literal">"algorithm"</span>);
		<span class="reserved">this</span>.algorithm = t.value.toSigned();
		i++;

		t = tlv.get(i);
		t.setName(<span class="literal">"parameters"</span>);
		<span class="reserved">this</span>.parameters = t;
		i++;

		assert((t = tlv.get(i)).tag == ASN1.BIT_STRING);
		<span class="reserved">this</span>.supportedOperations = t.value.bytes(1,1).toUnsigned();
		t.setName(<span class="literal">"supportedOperations {"</span> + <span class="reserved">this</span>.getOperationsAsString() + <span class="literal">" }"</span>);
		i++;

		<span class="reserved">if</span> (i &lt; tlv.elements) {
			assert((t = tlv.get(i)).tag == ASN1.OBJECT_IDENTIFIER);
			t.setName(<span class="literal">"objId"</span>);
			<span class="reserved">this</span>.objId = t.value.toString(OID);
			i++;
		}

		<span class="reserved">if</span> (i &lt; tlv.elements) {
			assert((t = tlv.get(i)).tag == ASN1.INTEGER);
			t.setName(<span class="literal">"algRef"</span>);
			<span class="reserved">this</span>.algRef = t.value.toSigned();
			i++;
		}
	}
}



<span class="comment">/**
 * Gets the operations flags as string of concatenated tokens.
 * <span class="attrib">@return</span> the string containing the flags separated by a blank
 * <span class="attrib">@type</span> String
 */</span>
AlgorithmInfo.<span class="reserved">prototype</span>.getOperationsAsString = <span class="reserved">function</span>() {
	<span class="reserved">return</span> (<span class="reserved">this</span>.supportedOperations &amp; 0x80 ? <span class="literal">" compute-checksum"</span> : <span class="literal">""</span>) +
           (<span class="reserved">this</span>.supportedOperations &amp; 0x40 ? <span class="literal">" compute-signature"</span> : <span class="literal">""</span>) +
           (<span class="reserved">this</span>.supportedOperations &amp; 0x20 ? <span class="literal">" verify-checksum"</span> : <span class="literal">""</span>) +
           (<span class="reserved">this</span>.supportedOperations &amp; 0x10 ? <span class="literal">" verify-signature"</span> : <span class="literal">""</span>) +
           (<span class="reserved">this</span>.supportedOperations &amp; 0x08 ? <span class="literal">" encipher"</span> : <span class="literal">""</span>) +
           (<span class="reserved">this</span>.supportedOperations &amp; 0x04 ? <span class="literal">" decipher"</span> : <span class="literal">""</span>) +
           (<span class="reserved">this</span>.supportedOperations &amp; 0x02 ? <span class="literal">" hash"</span> : <span class="literal">""</span>) +
           (<span class="reserved">this</span>.supportedOperations &amp; 0x01 ? <span class="literal">" generate-key"</span> : <span class="literal">""</span>);

}



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
AlgorithmInfo.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = <span class="literal">"AlgorithmInfo { "</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.reference) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"reference="</span> + <span class="reserved">this</span>.reference + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.algorithm) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"algorithm=0x"</span> + <span class="reserved">this</span>.algorithm.toString(16) + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.parameters) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"parameters="</span> + <span class="reserved">this</span>.parameters + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.supportedOperations) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"supportedOperations="</span> + <span class="reserved">this</span>.getOperationsAsString() + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.objId) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"objId="</span> + <span class="reserved">this</span>.objId + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.algRef) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"algRef="</span> + <span class="reserved">this</span>.algRef + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;

	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create a Cryptographic Information Object (CIO)
 *
 * <span class="attrib">@class</span> &lt;p&gt;This is the base class for all cryptographic objects in a PKCS#15 data structure.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CommonObjectAttributes ::= SEQUENCE {
 *		label Label OPTIONAL,
 *		flags CommonObjectFlags OPTIONAL,
 *		authId Identifier OPTIONAL,
 *		userConsent INTEGER (1..cia-ub-userConsent) OPTIONAL,
 *		accessControlRules SEQUENCE SIZE (1..MAX) OF AccessControlRule OPTIONAL,
 *		...
 *	} (CONSTRAINED BY {-- authId should be present if flags.private is set.
 *	-- It shall equal an authID in one authentication object in the AOD -- })
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 */</span>
<span class="reserved">function</span> PKCS15_CIO(tlv) {
	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		assert(tlv.isconstructed);
		assert(tlv.elements &gt;= 3);

		<span class="reserved">this</span>.tlv = tlv;

		var coa = tlv.get(0);
		assert(coa.tag == ASN1.SEQUENCE);

		coa.setName(<span class="literal">"commonObjectAttributes"</span>);
		var i = 0;
		var t;

		<span class="reserved">if</span> ((i &lt; coa.elements) &amp;&amp; ((t = coa.get(i)).tag == ASN1.UTF8String)) {
			t.setName(<span class="literal">"label"</span>);
			<span class="reserved">this</span>.label = t.value.toString(UTF8);
			i++;
		}

		<span class="comment">// D-Trust card has empty bitstring element</span>
		<span class="reserved">if</span> ((i &lt; coa.elements) &amp;&amp; ((t = coa.get(i)).tag == ASN1.BIT_STRING) &amp;&amp; (t.value.length &gt; 1)) {
			<span class="reserved">this</span>.flags = t.value.bytes(1,1).toUnsigned();
			t.setName(<span class="literal">"flags {"</span> + <span class="reserved">this</span>.getFlagsAsString() + <span class="literal">" }"</span>);
			i++;
		}

		<span class="reserved">if</span> ((i &lt; coa.elements) &amp;&amp; ((t = coa.get(i)).tag == ASN1.OCTET_STRING)) {
			t.setName(<span class="literal">"authId"</span>);
			<span class="reserved">this</span>.authId = t.value;
			i++;
		}

		<span class="reserved">if</span> ((i &lt; coa.elements) &amp;&amp; ((t = coa.get(i)).tag == ASN1.INTEGER)) {
			t.setName(<span class="literal">"userConsent"</span>);
			<span class="reserved">this</span>.userConsent = t.value.toSigned();
			i++;
		}

		<span class="reserved">if</span> ((i &lt; coa.elements) &amp;&amp; ((t = coa.get(i)).tag == ASN1.SEQUENCE)) {
			t.setName(<span class="literal">"accessControlRules"</span>);
			<span class="reserved">this</span>.accessControlRules = t.value;
			i++;
		}
	}
}



<span class="comment">/**
 * Gets the common object flags as string of concatenated flags.
 * <span class="attrib">@return</span> the string containing the flags separated by a blank
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CIO.<span class="reserved">prototype</span>.getFlagsAsString = <span class="reserved">function</span>() {
	<span class="reserved">return</span>  (<span class="reserved">this</span>.flags &amp; 0x80 ? <span class="literal">" private"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.flags &amp; 0x40 ? <span class="literal">" modifiable"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.flags &amp; 0x20 ? <span class="literal">" internal"</span> : <span class="literal">""</span>);
}



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CIO.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = <span class="literal">"CommonObjectAttributes { "</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.label) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"label="</span> + <span class="reserved">this</span>.label + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.flags) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"flags="</span> + <span class="reserved">this</span>.getFlagsAsString() + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.authId) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"authId="</span> + <span class="reserved">this</span>.authId + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.userConsent) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"userConsent="</span> + <span class="reserved">this</span>.userConsent + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.accessControlRules) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"accessControlRules="</span> + <span class="reserved">this</span>.accessControlRules + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create a Common Key Attribute Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds common key attributes to the base CIO class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CommonKeyAttributes ::= SEQUENCE {
 *		iD Identifier,
 *		usage KeyUsageFlags,
 *		native BOOLEAN DEFAULT TRUE,
 *		accessFlags KeyAccessFlags OPTIONAL,
 *		keyReference KeyReference OPTIONAL,
 *		startDate GeneralizedTime OPTIONAL,
 *		endDate [0] GeneralizedTime OPTIONAL,
 *		algReference [1] SEQUENCE OF Reference OPTIONAL,
 *		... -- For future extensions
 *		}
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CIO PKCS15_CIO is the base class
 */</span>
<span class="reserved">function</span> PKCS15_CommonKeyAttributes(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CIO.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		tlv = tlv.get(1);
		tlv.setName(<span class="literal">"commonKeyAttributes"</span>);
		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.OCTET_STRING);
		t.setName(<span class="literal">"iD"</span>);
		<span class="reserved">this</span>.iD = t.value;
		i++;

		assert((t = tlv.get(i)).tag == ASN1.BIT_STRING);
		<span class="reserved">this</span>.usage = t.value.bytes(1).toUnsigned(true);
		t.setName(<span class="literal">"usage {"</span> + <span class="reserved">this</span>.getUsageAsString() + <span class="literal">" }"</span>);
		i++;

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.BOOLEAN)) {
			t.setName(<span class="literal">"native"</span>);
			<span class="reserved">this</span>.native_ = t.value.toUnsigned();
			i++;
		} <span class="reserved">else</span> {
			<span class="reserved">this</span>.native_ = true;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.BIT_STRING)) {
			<span class="reserved">this</span>.accessFlags = t.value.bytes(1).toUnsigned(true);
			t.setName(<span class="literal">"accessFlags {"</span> + <span class="reserved">this</span>.getAccessFlagsAsString() + <span class="literal">" }"</span>);
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
			t.setName(<span class="literal">"keyReference"</span>);
			<span class="reserved">this</span>.keyReference = t.value.toSigned();
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.GeneralizedTime)) {
			t.setName(<span class="literal">"startDate"</span>);
			<span class="reserved">this</span>.startDate = t.getDate();
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0x80)) {
			t.setName(<span class="literal">"endDate"</span>);
			<span class="reserved">this</span>.endDate = t.getDate();
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA1)) {
			assert(t.isconstructed);
			t.setName(<span class="literal">"algReference"</span>);
			<span class="reserved">this</span>.algReference = new Array();
			<span class="reserved">for</span> (var j = 0; j &lt; t.elements; j++) {
				assert(t.get(j).tag == ASN1.INTEGER);
				t.get(j).setName(<span class="literal">"reference"</span>);
				<span class="reserved">this</span>.algReference.push(t.get(j).value.toSigned());
			}
			i++;
		}
	}
}

PKCS15_CommonKeyAttributes.<span class="reserved">prototype</span> = new PKCS15_CIO();



<span class="comment">/**
 * Gets the key usage flags as string of concatenated flags.
 * <span class="attrib">@return</span> the string containing the flags separated by a blank
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CommonKeyAttributes.<span class="reserved">prototype</span>.getUsageAsString = <span class="reserved">function</span>() {
	<span class="reserved">return</span>  (<span class="reserved">this</span>.usage &amp; 0x0080 ? <span class="literal">" encipher"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x0040 ? <span class="literal">" decipher"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x0020 ? <span class="literal">" sign"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x0010 ? <span class="literal">" signRecover"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x0008 ? <span class="literal">" keyEncipher"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x0004 ? <span class="literal">" keyDecipher"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x0002 ? <span class="literal">" verify"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x0001 ? <span class="literal">" verifyRecover"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x8000 ? <span class="literal">" derive"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.usage &amp; 0x4000 ? <span class="literal">" nonRepudiation"</span> : <span class="literal">""</span>);
}



<span class="comment">/**
 * Gets the key access flags as string of concatenated flags.
 * <span class="attrib">@return</span> the string containing the flags separated by a blank
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CommonKeyAttributes.<span class="reserved">prototype</span>.getAccessFlagsAsString = <span class="reserved">function</span>() {
	<span class="reserved">return</span>	(<span class="reserved">this</span>.accessFlags &amp; 0x80 ? <span class="literal">" sensitive"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.accessFlags &amp; 0x40 ? <span class="literal">" extractable"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.accessFlags &amp; 0x20 ? <span class="literal">" alwaysSensitive"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.accessFlags &amp; 0x10 ? <span class="literal">" neverExtractable"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.accessFlags &amp; 0x08 ? <span class="literal">" cardGenerated"</span> : <span class="literal">""</span>);
}



<span class="comment">/**
 * Convert the object to a human readable string
 * <span class="attrib">@return</span> content information
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CommonKeyAttributes.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {

	var str = PKCS15_CIO.<span class="reserved">prototype</span>.toString.call(<span class="reserved">this</span>);
	str += <span class="literal">"\nCommonKeyAttributes { "</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.iD) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"iD="</span> + <span class="reserved">this</span>.iD + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.usage) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"usage="</span> + <span class="reserved">this</span>.getUsageAsString() + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.native_) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"native="</span> + <span class="reserved">this</span>.native_ + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.accessFlags) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"accessFlags="</span> + <span class="reserved">this</span>.getAccessFlagsAsString() + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.keyReference) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"keyReference="</span> + <span class="reserved">this</span>.keyReference + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.startDate) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"startDate="</span> + <span class="reserved">this</span>.startDate + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.endDate) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"endDate="</span> + <span class="reserved">this</span>.endDate + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.algReference) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"algReference="</span> + <span class="reserved">this</span>.algReference + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create a Common Private Key Attribute Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds common private key attributes to the common key attribute class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CommonPrivateKeyAttributes ::= SEQUENCE {
 * name Name OPTIONAL,
 * keyIdentifiers [0] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 * generalName [1] GeneralNames OPTIONAL,
 * ... -- For future extensions
 * }
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CommonKeyAttributes PKCS15_CommonKeyAttributes is the base class
 */</span>
<span class="reserved">function</span> PKCS15_CommonPrivateKeyAttributes(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CommonKeyAttributes.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var t = tlv.get(2);
		<span class="reserved">if</span> (t.tag == 0xA0) {
			t.setName(<span class="literal">"subClassAttributes"</span>);

			assert(t.elements == 1);
			t = t.get(0);
			t.setName(<span class="literal">"commonPrivateKeyAttributes"</span>);

			var i = 0;
			<span class="reserved">if</span> (t.elements &gt; i) {
				print(<span class="literal">"### Not decoded ### "</span> + t);
			}
		}
	}
}

PKCS15_CommonPrivateKeyAttributes.<span class="reserved">prototype</span> = new PKCS15_CommonKeyAttributes();



<span class="comment">/**
 * Create a Common Secret Key Attribute Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds common secret key attributes to the common key attribute class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CommonSecretKeyAttributes ::= SEQUENCE {
 *   keyLen INTEGER OPTIONAL, -- keylength (in bits)
 *   -- For future extensions
 *  }
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CommonKeyAttributes PKCS15_CommonKeyAttributes is the base class
 */</span>
<span class="reserved">function</span> PKCS15_CommonSecretKeyAttributes(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CommonKeyAttributes.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var t = tlv.get(2);
		<span class="reserved">if</span> (t.tag == 0xA0) {
			t.setName(<span class="literal">"subClassAttributes"</span>);

			assert(t.elements == 1);
			t = t.get(0);
			t.setName(<span class="literal">"commonSecretKeyAttributes"</span>);

			var i = 0;
			var o = t.get(i++);
			assert(o.tag == ASN1.INTEGER);
			o.setName(<span class="literal">"keyLen"</span>);

			<span class="reserved">if</span> (t.elements &gt; i) {
				print(<span class="literal">"### Not decoded ### "</span> + t);
			}
		}
	}
}

PKCS15_CommonSecretKeyAttributes.<span class="reserved">prototype</span> = new PKCS15_CommonKeyAttributes();



<span class="comment">/**
 * Create a Private Key Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds private key attributes to the common private key attribute class.&lt;/p&gt;
 * &lt;p&gt;The class supports RSA and ECC keys.&lt;/p&gt;
 * &lt;p&gt;RSA keys are decoded from the following ASN.1 structure:&lt;/p&gt;
 * &lt;pre&gt;
 * PrivateRSAKeyAttributes ::= SEQUENCE {
 * value Path,
 * modulusLength INTEGER, -- modulus length in bits, e.g. 1024
 * keyInfo KeyInfo {NULL, PublicKeyOperations} OPTIONAL,
 * ... -- For future extensions
 * }
 * &lt;/pre&gt;
 * &lt;p&gt;ECC keys are decoded from the following ASN.1 structure:&lt;/p&gt;
 * &lt;pre&gt;
 * PrivateECKeyAttributes ::= SEQUENCE {
 * value Path,
 * keyInfo KeyInfo {Parameters, PublicKeyOperations} OPTIONAL,
 * ... -- For future extensions
 * }
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CommonPrivateKeyAttributes PKCS15_CommonPrivateKeyAttributes is the base class
 */</span>
<span class="reserved">function</span> PKCS15_PrivateKey(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CommonPrivateKeyAttributes.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var t = tlv.get(tlv.elements - 1);

		assert(t.tag == 0xA1);
		assert(t.elements &gt;= 1);
		t.setName(<span class="literal">"typeAttributes"</span>);

		t = t.get(0);

		switch(tlv.tag) {
		case 0x30: <span class="reserved">this</span>.decodePrivateRSAKey(t); break;
		case 0xA0: <span class="reserved">this</span>.decodePrivateECCKey(t); break;
		default:
			<span class="reserved">this</span>.type = <span class="literal">"PrivateKey"</span>; break;
			print(<span class="literal">"### Not decoded ### "</span> + t);
		}
	}
}

PKCS15_PrivateKey.<span class="reserved">prototype</span> = new PKCS15_CommonPrivateKeyAttributes();



<span class="comment">/**
 * Decodes the RSA key structure.
 *
 * <span class="attrib">@private</span>
 * <span class="attrib">@param</span> {ASN1} tlv the TLV structure
 */</span>
PKCS15_PrivateKey.<span class="reserved">prototype</span>.decodePrivateRSAKey = <span class="reserved">function</span>(tlv) {
	<span class="reserved">this</span>.type = <span class="literal">"PrivateRSAKey"</span>;
	tlv.setName(<span class="literal">"privateRSAKeyAttributes"</span>);

	var t = tlv.get(0);
	<span class="reserved">this</span>.value = new PKCS15_Path(t);
	t.setName(<span class="literal">"value"</span>);

	t = tlv.get(1);
	assert(t.tag == ASN1.INTEGER);
	<span class="reserved">this</span>.modulusLength = t.value.toSigned();
	t.setName(<span class="literal">"modulusLength"</span>);

	<span class="reserved">if</span> (tlv.elements &gt; 2) {
		t = tlv.get(2);
		<span class="reserved">if</span> (t.tag == ASN1.INTEGER) {
			t.setName(<span class="literal">"reference"</span>);
		} <span class="reserved">else</span> {
			t.setName(<span class="literal">"paramsAndOps"</span>);
		}
	}
}



<span class="comment">/**
 * Decodes the ECC key structure.
 *
 * <span class="attrib">@private</span>
 * <span class="attrib">@param</span> {ASN1} tlv the TLV structure
 */</span>
PKCS15_PrivateKey.<span class="reserved">prototype</span>.decodePrivateECCKey = <span class="reserved">function</span>(tlv) {
	<span class="reserved">this</span>.type = <span class="literal">"PrivateECCKey"</span>;
	tlv.setName(<span class="literal">"privateECCKeyAttributes"</span>);

	var t = tlv.get(0);
	<span class="reserved">this</span>.value = new PKCS15_Path(t);
	t.setName(<span class="literal">"value"</span>);

	<span class="reserved">if</span> (tlv.elements &gt; 1) {
		t = tlv.get(1);
		<span class="reserved">if</span> (t.tag == ASN1.INTEGER) {
			t.setName(<span class="literal">"reference"</span>);
		} <span class="reserved">else</span> {
			t.setName(<span class="literal">"paramsAndOps"</span>);
		}
	}
}



<span class="comment">/**
 * Create a Secret Key Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds secret key attributes to the common secret key attribute class.&lt;/p&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CommonSecretKeyAttributes PKCS15_CommonSecretKeyAttributes is the base class
 */</span>
<span class="reserved">function</span> PKCS15_SecretKey(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CommonSecretKeyAttributes.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var t = tlv.get(tlv.elements - 1);

		assert(t.tag == 0xA1);
		assert(t.elements &gt;= 1);
		t.setName(<span class="literal">"typeAttributes"</span>);

		t = t.get(0);

		<span class="comment">// ToDo: Decode GenericKeyAttributes</span>
		<span class="reserved">this</span>.type = <span class="literal">"SecretKey"</span>;
		print(<span class="literal">"### Not decoded ### "</span> + t);
	}
}

PKCS15_SecretKey.<span class="reserved">prototype</span> = new PKCS15_CommonSecretKeyAttributes();



<span class="comment">/**
 * Create a Common Certificate Attribute Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds common certificate attributes to the base CIO class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CommonCertificateAttributes ::= SEQUENCE {
 * iD Identifier,
 * authority BOOLEAN DEFAULT FALSE,
 * identifier CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 * certHash [0] CertHash OPTIONAL,
 * trustedUsage [1] Usage OPTIONAL,
 * identifiers [2] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 * validity [4] Validity OPTIONAL,
 * ...
 * } -- Context tag [3] is reserved for historical reasons
 * NOTE PKCS #15 uses context tag [3].
 * Usage ::= SEQUENCE {
 * keyUsage KeyUsage OPTIONAL,
 * extKeyUsage SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER OPTIONAL,
 * ...
 * } (WITH COMPONENTS {..., keyUsage PRESENT} | WITH COMPONENTS {..., extKeyUsage PRESENT})
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CIO PKCS15_CIO is the base class
 */</span>
<span class="reserved">function</span> PKCS15_CommonCertificateAttributes(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CIO.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var tlv = tlv.get(1);
		tlv.setName(<span class="literal">"commonCertificateAttributes"</span>);
		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.OCTET_STRING);
		t.setName(<span class="literal">"iD"</span>);
		<span class="reserved">this</span>.iD = t.value;
		i++;

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.BOOLEAN)) {
			t.setName(<span class="literal">"authority"</span>);
			<span class="reserved">this</span>.authority = (t.value.toUnsigned() &gt; 0);
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.SEQUENCE)) {
			t.setName(<span class="literal">"identifier"</span>);
			<span class="reserved">this</span>.identifier = t.value;
			i++;
		}

		<span class="comment">// Uncommon fields missing</span>
	}
}

PKCS15_CommonCertificateAttributes.<span class="reserved">prototype</span> = new PKCS15_CIO();



<span class="comment">/**
 * Convert the object to a human readable string
 * <span class="attrib">@return</span> content information
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CommonCertificateAttributes.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = PKCS15_CIO.<span class="reserved">prototype</span>.toString.call(<span class="reserved">this</span>);
	str += <span class="literal">"\nCommonCertificateAttributes { "</span>;

	str += <span class="literal">"iD="</span> + <span class="reserved">this</span>.iD + <span class="literal">",\n"</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.authority) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"authority="</span> + <span class="reserved">this</span>.authority + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.identifier) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"identifier="</span> + <span class="reserved">this</span>.identifier + <span class="literal">",\n"</span>;
	}
	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create a Certificate Attribute Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds X.509 certificate attributes to the common certificate attribute class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax for X.509 certificates:&lt;/p&gt;
 * &lt;pre&gt;
 * X509CertificateAttributes ::= SEQUENCE {
 * value ObjectValue { Certificate },
 * subject Name OPTIONAL,
 * issuer [0] Name OPTIONAL,
 * serialNumber CertificateSerialNumber OPTIONAL,
 * ... -- For future extensions
 * }
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CommonCertificateAttributes PKCS15_CommonCertificateAttributes is the base class
 */</span>
<span class="reserved">function</span> PKCS15_Certificate(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CommonCertificateAttributes.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {

		var t = tlv.get(2);
		assert(t.tag == 0xA1);
		assert(t.elements == 1);
		t.setName(<span class="literal">"typeAttributes"</span>);
		t = t.get(0);
		t.setName(<span class="literal">"certificateAttributes"</span>);

		switch(tlv.tag) {
		case 0x30: <span class="reserved">this</span>.decodeX509Certificate(t); break;
		default:
			<span class="reserved">this</span>.type = <span class="literal">"Certificate"</span>; break;
			print(<span class="literal">"### Not decoded ### "</span> + t);
		}
<span class="comment">//		print("Certificate:" + t);</span>
	}
}

PKCS15_Certificate.<span class="reserved">prototype</span> = new PKCS15_CommonCertificateAttributes();



<span class="comment">/**
 * Decodes a X.509 certificate structure.
 *
 * <span class="attrib">@private</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the certificate data
 */</span>
PKCS15_Certificate.<span class="reserved">prototype</span>.decodeX509Certificate = <span class="reserved">function</span>(tlv) {
	<span class="reserved">this</span>.type = <span class="literal">"X509Certificate"</span>;
	tlv.setName(<span class="literal">"x509CertificateAttributes"</span>);

	var t = tlv.get(0);
	t.setName(<span class="literal">"value"</span>);

	<span class="reserved">if</span> (t.tag == ASN1.SEQUENCE) {
		<span class="reserved">this</span>.value = new PKCS15_Path(t);
	}

	var i = 1;

	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.SEQUENCE)) {
		t.setName(<span class="literal">"subject"</span>);
		i++;
	}

	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0xA0)) {
		t.setName(<span class="literal">"issuer"</span>);
		i++;
	}

	<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
		t.setName(<span class="literal">"serialNumber"</span>);
		<span class="reserved">this</span>.serialNumber = t.value;
		i++;
	}
}



<span class="comment">/**
 * Create a Common Authentication Object Attribute Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds common authentication object attributes to the base CIO class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CommonAuthenticationObjectAttributes ::= SEQUENCE {
 *    authId Identifier OPTIONAL,
 *    authReference Reference OPTIONAL,
 *    seIdentifier [0] Reference OPTIONAL,
 *    ... -- For future extensions
 * }
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CIO PKCS15_CIO is the base class
 */</span>
<span class="reserved">function</span> PKCS15_CommonAuthenticationObjectAttributes(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CIO.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var tlv = tlv.get(1);
		tlv.setName(<span class="literal">"commonAuthenticationObjectAttributes"</span>);
<span class="comment">//		print("CommonAuthenticationObjectAttributes:" + tlv);</span>

		var i = 0;
		var t;

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.OCTET_STRING)) {
			t.setName(<span class="literal">"authIdThis"</span>);
			<span class="reserved">this</span>.authIdThis = t.value;
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
			t.setName(<span class="literal">"authReference"</span>);
			<span class="reserved">this</span>.authReference = t.value.toSigned();
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0x80)) {
			t.setName(<span class="literal">"seIdentifier"</span>);
			<span class="reserved">this</span>.seIdentifier = t.value.toSigned();
			i++;
		}
	}
}

PKCS15_CommonAuthenticationObjectAttributes.<span class="reserved">prototype</span> = new PKCS15_CIO();



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CommonAuthenticationObjectAttributes.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {

	var str = PKCS15_CIO.<span class="reserved">prototype</span>.toString.call(<span class="reserved">this</span>);
	str += <span class="literal">"\nCommonAuthenticationObjectAttributes { "</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.authIdThis) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"authIdThis="</span> + <span class="reserved">this</span>.authIdThis + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.authReference) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"authReference="</span> + <span class="reserved">this</span>.authReference + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.seIdentifier) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"seIdentifier="</span> + <span class="reserved">this</span>.seIdentifier + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.pwd) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"pwd="</span> + <span class="reserved">this</span>.pwd.toString() + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create an Authentication Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds authentication object attributes to the common authentication object class.&lt;/p&gt;
 * &lt;p&gt;The class supports password objects.&lt;/p&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CommonAuthenticationObjectAttributes PKCS15_CommonAuthenticationObjectAttributes is the base class
 */</span>
<span class="reserved">function</span> PKCS15_AuthenticationObject(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CommonAuthenticationObjectAttributes.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var t = tlv.get(tlv.elements - 1);
		assert(t.tag == 0xA1);
		assert(t.elements == 1);
		t.setName(<span class="literal">"typeAttribute"</span>);
		t = t.get(0);

		switch(t.tag) {
		case 0x30:
			<span class="reserved">this</span>.pwd = new PKCS15_PasswordAuthenticationObject(t);
			break;
		default:
			print(<span class="literal">"### Unsupported authentication object type : "</span> + t);
			break;
		}
	}
}

PKCS15_AuthenticationObject.<span class="reserved">prototype</span> = new PKCS15_CommonAuthenticationObjectAttributes();



<span class="comment">/**
 * Create a Password Authentication Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class supports password authentication objects.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * PasswordAttributes ::= SEQUENCE {
 *	pwdFlags PasswordFlags,
 *	pwdType PasswordType,
 *	minLength INTEGER (cia-lb-minPasswordLength..cia-ub-minPasswordLength),
 *	storedLength INTEGER (0..cia-ub-storedPasswordLength),
 *	maxLength INTEGER OPTIONAL,
 *	pwdReference [0] Reference DEFAULT 0,
 *	padChar OCTET STRING (SIZE(1)) OPTIONAL,
 *	lastPasswordChange GeneralizedTime OPTIONAL,
 *	path Path OPTIONAL,
 *	... -- For future extensions
 * }
 * PasswordFlags ::= BIT STRING {
 *	case-sensitive (0),
 *	local (1),
 *	change-disabled (2),
 *	unblock-disabled (3),
 *	initialized (4),
 *	needs-padding (5),
 *	unblockingPassword (6),
 *	soPassword (7),
 *	disable-allowed (8),
 *	integrity-protected (9),
 *	confidentiality-protected (10),
 *	exchangeRefData (11)
 *	} (CONSTRAINED BY { -- "unblockingPassword" and "soPassword" cannot both be set -- })
 * PasswordType ::= ENUMERATED {bcd, ascii-numeric, utf8, half-nibble-bcd, iso9564-1, ...}
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 */</span>
<span class="reserved">function</span> PKCS15_PasswordAuthenticationObject(tlv) {
	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {

		tlv.setName(<span class="literal">"passwordAuthenticationObject"</span>);

		var i = 0;
		var t;

		assert((t = tlv.get(i)).tag == ASN1.BIT_STRING);
		<span class="reserved">this</span>.pwdFlags = IntFromBitString(t.value);
		t.setName(<span class="literal">"pwdFlags {"</span> + <span class="reserved">this</span>.getPwdFlagsAsString() + <span class="literal">" }"</span>);
		i++;

		assert((t = tlv.get(i)).tag == ASN1.ENUMERATED);
		<span class="reserved">this</span>.pwdType = t.value.toUnsigned();
		t.setName(<span class="literal">"pwdType {"</span> + <span class="reserved">this</span>.getPwdTypeAsString() + <span class="literal">" }"</span>);
		i++;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName(<span class="literal">"minLength"</span>);
		<span class="reserved">this</span>.minLength = t.value.toSigned();
		i++;

		assert((t = tlv.get(i)).tag == ASN1.INTEGER);
		t.setName(<span class="literal">"storedLength"</span>);
		<span class="reserved">this</span>.storedLength = t.value.toSigned();
		i++;

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.INTEGER)) {
			t.setName(<span class="literal">"maxLength"</span>);
			<span class="reserved">this</span>.maxLength = t.value.toSigned();
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == 0x80)) {
			t.setName(<span class="literal">"pwdReference"</span>);
			<span class="reserved">this</span>.pwdReference = t.value.toSigned();
			i++;
		}
	}
}



<span class="comment">/**
 * Gets the password flags as string of concatenated flags.
 * <span class="attrib">@return</span> the string containing the flags separated by a blank
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_PasswordAuthenticationObject.<span class="reserved">prototype</span>.getPwdFlagsAsString = <span class="reserved">function</span>() {
	<span class="reserved">return</span>	(<span class="reserved">this</span>.pwdFlags &amp; 0x800000 ? <span class="literal">" case-sensitive"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x400000 ? <span class="literal">" local"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x200000 ? <span class="literal">" change-disabled"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x100000 ? <span class="literal">" unblock-disabled"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x080000 ? <span class="literal">" initialized"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x040000 ? <span class="literal">" needs-padding"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x020000 ? <span class="literal">" unblockingPassword"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x010000 ? <span class="literal">" soPassword"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x008000 ? <span class="literal">" disable-allowed"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x004000 ? <span class="literal">" integrity-protected"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x002000 ? <span class="literal">" confidentiality-protected"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x001000 ? <span class="literal">" exchangeRefData"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x000800 ? <span class="literal">" resetRetryCounter1"</span> : <span class="literal">""</span>) +
		(<span class="reserved">this</span>.pwdFlags &amp; 0x000400 ? <span class="literal">" resetRetryCounter2"</span> : <span class="literal">""</span>);
}



<span class="comment">/**
 * Gets the password type.
 * <span class="attrib">@return</span> the string containing the password type (BCD, ASCII-NUMERIC, UTF8, HALF-NIBBLE-BCD or ISO9564-1)
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_PasswordAuthenticationObject.<span class="reserved">prototype</span>.getPwdTypeAsString = <span class="reserved">function</span>() {

	var str = <span class="literal">""</span> + <span class="reserved">this</span>.pwdType;
	switch(<span class="reserved">this</span>.pwdType) {
		case  0 : str = <span class="literal">"BCD"</span>; break;
		case  1 : str = <span class="literal">"ASCII-NUMERIC"</span>; break;
		case  2 : str = <span class="literal">"UTF8"</span>; break;
		case  3 : str = <span class="literal">"HALF-NIBBLE-BCD"</span>; break;
		case  4 : str = <span class="literal">"ISO9564-1"</span>; break;
	}
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_PasswordAuthenticationObject.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {
	var str = <span class="literal">"Password { "</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.pwdFlags) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"pwdFlags="</span> + <span class="reserved">this</span>.getPwdFlagsAsString() + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.pwdType) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"pwdType="</span> + <span class="reserved">this</span>.getPwdTypeAsString() + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.minLength) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"minLength="</span> + <span class="reserved">this</span>.minLength + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.storedLength) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"storedLength="</span> + <span class="reserved">this</span>.storedLength + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.maxLength) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"maxLength="</span> + <span class="reserved">this</span>.maxLength + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.pwdReference) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"pwdReference="</span> + <span class="reserved">this</span>.pwdReference + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create a Common Data Container Object Attribute Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds common data container attributes to the base CIO class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax:&lt;/p&gt;
 * &lt;pre&gt;
 * CommonDataContainerObjectAttributes ::= SEQUENCE {
 * 		applicationName Label OPTIONAL,
 * 		applicationOID OBJECT IDENTIFIER OPTIONAL,
 * 		iD Identifier OPTIONAL,
 * 		... -- For future extensions
 * 		} (WITH COMPONENTS {..., applicationName PRESENT}
 * 		| WITH COMPONENTS {..., applicationOID PRESENT})
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CIO PKCS15_CIO is the base class
 */</span>
<span class="reserved">function</span> PKCS15_CommonDataContainerObjectAttributes(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CIO.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {
		var tlv = tlv.get(1);
		tlv.setName(<span class="literal">"commonDataContainerObjectAttributes"</span>);
		var i = 0;
		var t;

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.UTF8String)) {
			t.setName(<span class="literal">"applicationName"</span>);
			<span class="reserved">this</span>.applicationName = t.value.toString(UTF8);
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.OBJECT_IDENTIFIER)) {
			t.setName(<span class="literal">"applicationOID"</span>);
			<span class="reserved">this</span>.applicationOID = t.value.toString(OID);
			i++;
		}

		<span class="reserved">if</span> ((i &lt; tlv.elements) &amp;&amp; ((t = tlv.get(i)).tag == ASN1.ASN1.OCTET_STRING)) {
			t.setName(<span class="literal">"iD"</span>);
			<span class="reserved">this</span>.iD = t.value;
			i++;
		}
	}
}

PKCS15_CommonDataContainerObjectAttributes.<span class="reserved">prototype</span> = new PKCS15_CIO();



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_CommonDataContainerObjectAttributes.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {

	var str = PKCS15_CIO.<span class="reserved">prototype</span>.toString.call(<span class="reserved">this</span>);
	str += <span class="literal">"\nCommonDataContainerObjectAttributes { "</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.applicationName) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"applicationName="</span> + <span class="reserved">this</span>.applicationName + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.applicationOID) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"applicationOID="</span> + <span class="reserved">this</span>.applicationOID + <span class="literal">",\n"</span>;
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.iD) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"iD="</span> + <span class="reserved">this</span>.iD + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create a Data Container Object
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class adds data container objects to the common data container object attributes class.&lt;/p&gt;
 * &lt;p&gt;The class decodes the following ASN.1 syntax for opaque data objects with indirect path reference:&lt;/p&gt;
 * &lt;pre&gt;
 * OpaqueDOAttributes ::= ObjectValue {CIO-OPAQUE.&amp;Type}
 *
 * ObjectValue { Type } ::= CHOICE {
 * 		indirect ReferencedValue,
 * 		direct [0] Type,
 * 		... -- For future extensions
 * }
 *
 * ReferencedValue ::= CHOICE {
 * 		path Path,
 * 		url URL
 * } -- The syntax of the object is determined by the context
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the CIO
 * <span class="attrib">@see</span> PKCS15_CommonDataContainerObjectAttributes PKCS15_CommonDataContainerObjectAttributes is the base class
 */</span>
<span class="reserved">function</span> PKCS15_DataContainerObject(tlv) {
	<span class="comment">// Call superclass constructor</span>
	PKCS15_CommonDataContainerObjectAttributes.call(<span class="reserved">this</span>, tlv);

	<span class="reserved">if</span> (tlv &amp;&amp; (tlv instanceof ASN1)) {

		var t = tlv.get(2);
		assert(t.tag == 0xA1);
		assert(t.elements == 1);
		t.setName(<span class="literal">"typeAttributes"</span>);
		t = t.get(0);
		t.setName(<span class="literal">"dataContainerAttributes"</span>);

		switch(tlv.tag) {
		case 0x30: <span class="reserved">this</span>.decodeOpaqueDOIndirectPath(t); break;
		default:
			print(<span class="literal">"### Unsupported data container object type : "</span> + t);
		}
	}
}

PKCS15_DataContainerObject.<span class="reserved">prototype</span> = new PKCS15_CommonDataContainerObjectAttributes();



<span class="comment">/**
 * Decodes an oqaque data object.
 *
 * <span class="attrib">@private</span>
 * <span class="attrib">@param</span> {ASN1} the tlv structure containing the opaque data object
 */</span>
PKCS15_DataContainerObject.<span class="reserved">prototype</span>.decodeOpaqueDOIndirectPath = <span class="reserved">function</span>(tlv) {
	<span class="reserved">this</span>.type = <span class="literal">"OpaqueDOIndirectPath"</span>;
	tlv.setName(<span class="literal">"OpaqueDOIndirectPath"</span>);

	<span class="reserved">this</span>.indirectPath = new PKCS15_Path(tlv);
}



<span class="comment">/**
 * Convert the object to a human readable string
 *
 * <span class="attrib">@return</span> the string representation of the object
 * <span class="attrib">@type</span> String
 */</span>
PKCS15_DataContainerObject.<span class="reserved">prototype</span>.toString = <span class="reserved">function</span>() {

	var str = PKCS15_CommonDataContainerObjectAttributes.<span class="reserved">prototype</span>.toString.call(<span class="reserved">this</span>);
	str += <span class="literal">"\nDataContainerObject { "</span>;

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.indirectPath) != <span class="literal">"undefined"</span>) {
		str += <span class="literal">"indirectPath="</span> + <span class="reserved">this</span>.indirectPath + <span class="literal">",\n"</span>;
	}

	str += <span class="literal">"}"</span>;
	<span class="reserved">return</span> str;
}



<span class="comment">/**
 * Create an object to access the PKCS#15 structure on a card.
 *
 * <span class="attrib">@class</span> &lt;p&gt;This class provides for direct access to a PKCS#15 data structure on a card.&lt;/p&gt;
 * &lt;p&gt;The calling application will typically use:&lt;/p&gt;
 * &lt;pre&gt;
 * var card = new Card(_scsh3.reader);
 * var p15 = new PKCS15(card);
 * var appllist = p15.readApplicationDirectory();
 * var aid;
 * for (var i in appllist) {
 *   print(i);
 *   aid = i;
 * }
 * var at = appllist[aid];
 * p15.readObjectListForApplication(at);
 * for (var i = 0; i &lt; at.objlist.length; i++) {
 *   print(at.objlist[i]);
 * }
 * &lt;/pre&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {Card} card the card object to use for card access.
 */</span>
<span class="reserved">function</span> PKCS15(card) {
	<span class="reserved">this</span>.card = card;
}



<span class="comment">/**
 * Reads the application directory from EF_DIR.
 *
 * &lt;p&gt;The method supports linear variable and transparent EFs. It creates an internal table of
 *    of applications.&lt;/p&gt;
 *
 * <span class="attrib">@return</span> hash table of application templates index by application identifier
 * <span class="attrib">@type</span> PKCS15_ApplicationTemplate[]
 */</span>
PKCS15.<span class="reserved">prototype</span>.readApplicationDirectory = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.ef_dir = new CardFile(<span class="reserved">this</span>.card, <span class="literal">":3F00:2F00"</span>);

	<span class="reserved">this</span>.aidlist = new Array();

	<span class="reserved">if</span> (<span class="reserved">this</span>.ef_dir.isTransparent()) {
		var data = <span class="reserved">this</span>.ef_dir.readBinary();
<span class="comment">//		print(data);</span>

		<span class="reserved">while</span>((data.length &gt; 0) &amp;&amp; (data.byteAt(0) == 0x61)) {
			var tlv = new ASN1(data);
<span class="comment">//			print(tlv);</span>
			data = data.bytes(tlv.size);
<span class="comment">//			print(data);</span>

			var at = new PKCS15_ApplicationTemplate(tlv);
			<span class="reserved">this</span>.aidlist[at.aid] = at;
		}

	} <span class="reserved">else</span> {
		var rec = 1;
		<span class="reserved">while</span>(rec &lt; 256) {
			var data;
			try {
				data = <span class="reserved">this</span>.ef_dir.readRecord(rec);
			}
			catch(e) {
				<span class="reserved">if</span> (!(e instanceof GPError) || (e.error != GPError.CARD_COMM_ERROR)) {
					print(e);
					throw(e);
				}
				break;
			}

			var tlv = new ASN1(data);
			var at = new PKCS15_ApplicationTemplate(tlv);
			<span class="reserved">this</span>.aidlist[at.aid] = at;
			rec++;
		}
	}
	<span class="reserved">return</span> <span class="reserved">this</span>.aidlist;
}



<span class="comment">/**
 * Reads from the transparent file referenced in the PKCS#15 path object.
 *
 * <span class="attrib">@private</span>
 * <span class="attrib">@param</span> {String} df the current DF in OCF path notation.
 * <span class="attrib">@param</span> {PKCS15_Path} path the relative or absolute path to the EF
 * <span class="attrib">@return</span> the content of the file
 * <span class="attrib">@type</span> ByteString
 */</span>
PKCS15.<span class="reserved">prototype</span>.readCardObject = <span class="reserved">function</span>(df, path) {

	var p = path.getAbsolutePath(df);
	print(<span class="literal">"Reading from: "</span> + p);
	var ef = new CardFile(<span class="reserved">this</span>.card, p);
	var data;
	<span class="reserved">if</span> (path.index) {
		data = ef.readBinary(path.index, path.length);
	} <span class="reserved">else</span> {
		var len = ef.getLength();
		data = ef.readBinary(0, len);
	}
	<span class="reserved">return</span> data;
}



<span class="comment">/**
 * Parse a list of TLV objects
 *
 * <span class="attrib">@param</span> {ByteString} data the binary data with TLV objects
 * <span class="attrib">@return</span> the list of ASN1 objects
 * <span class="attrib">@type</span> ASN1[]
 */</span>
PKCS15.parseObjectList = <span class="reserved">function</span>(data) {

	var list = new Array();
	var len = data.length;

	<span class="reserved">while</span>(len &gt; 0) {
		<span class="reserved">if</span> ((data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
			len--;
			data = data.bytes(1);
		} <span class="reserved">else</span> {
<span class="comment">//			print(data);</span>
			var tlv = new ASN1(data);
			var tlvsize = tlv.size;
			len -= tlvsize;
			data = data.bytes(tlvsize);
			list.push(tlv);
<span class="comment">//			print("parseObjectList: " + tlv);</span>
		}
	}
	<span class="reserved">return</span> list;
}



<span class="comment">/**
 * Reads PKCS#15 objects from card file which can be either transparent or record oriented.
 *
 * <span class="attrib">@param</span> {String} df the current DF in OCF path notation.
 * <span class="attrib">@param</span> {PKCS15_Path} path the relative or absolute path to the EF
 * <span class="attrib">@return</span> the array of TLV objects read from the file
 * <span class="attrib">@type</span> ASN1[]
 */</span>
PKCS15.<span class="reserved">prototype</span>.readCardObjects = <span class="reserved">function</span>(df, path) {

	var p = path.getAbsolutePath(df);
	print(<span class="literal">"Reading from: "</span> + p);
	var ef = new CardFile(<span class="reserved">this</span>.card, p);
	var list = new Array();

	var isTransparent = true;
	try	{
		isTransparent = ef.isTransparent();
	}
	catch(e) {
		<span class="comment">// Ignore</span>
	}
	<span class="reserved">if</span> (isTransparent) {
		var data;
		<span class="reserved">if</span> (path.index) {
			data = ef.readBinary(path.index, path.length);
		} <span class="reserved">else</span> {
			try	{
				var len = ef.getLength();
				data = ef.readBinary(0, len);
			}
			catch(e) {
				data = ef.readBinary(0);
			}
		}

		var len = data.length;

		try	{
			<span class="reserved">while</span>(len &gt; 0) {
				<span class="reserved">if</span> ((data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
					len--;
					data = data.bytes(1);
				} <span class="reserved">else</span> {
<span class="comment">//					print(data);</span>
					var tlv = new ASN1(data);
					var tlvsize = tlv.size;
					len -= tlvsize;
					data = data.bytes(tlvsize);
					list.push(tlv);
<span class="comment">//					print("readCardObjects: " + tlv);</span>
				}
			}
		}
		catch(e) {
			print(<span class="literal">"Error reading cryptographic information object: "</span> + e);
			print(data);
		}
	} <span class="reserved">else</span> {
		var rec = 1;
		<span class="reserved">while</span>(rec &lt; 256) {
			var data;
			try {
				data = ef.readRecord(rec);
			}
			catch(e) {
				<span class="reserved">if</span> (!(e instanceof GPError) || (e.error != GPError.CARD_COMM_ERROR)) {
					print(e);
					throw(e);
				}
				break;
			}

			data = data.bytes(2);	<span class="comment">// Strip of first two bytes</span>
<span class="comment">//			print("Data : " + data);</span>
			<span class="reserved">if</span> (data.length &gt; 2) {	<span class="comment">// Record might be empty</span>
				try	{
					var tlv = new ASN1(data);
					list.push(tlv);
<span class="comment">//					print("readCardObjects: " + tlv);</span>
				}
				catch(e) {
					print(<span class="literal">"Error reading cryptographic information object: "</span> + e);
					print(data);
				}
			}
			rec++;
		}
	}
	<span class="reserved">return</span> list;
}



<span class="comment">/**
 * Reads all CIO objects for an application and adds the CIO objects to the objlist property
 *
 * <span class="attrib">@param</span> {PKCS15_ApplicationTemplate} at the application template
 */</span>
PKCS15.<span class="reserved">prototype</span>.readObjectListForApplication = <span class="reserved">function</span>(at) {
	<span class="reserved">if</span> (!at.ddo) {
		throw new Error(<span class="literal">"Application has no PKCS#15 information"</span>);
	}

	<span class="reserved">if</span> (!at.ddo.odfPath) {
		throw new Error(<span class="literal">"Application has no odfPath"</span>);
	}

	at.objlist = new Array();

	var dos = <span class="reserved">this</span>.readCardObjects(<span class="literal">":3F00"</span>, at.ddo.odfPath);

	<span class="comment">// Determine current DF</span>
	var df = at.ddo.odfPath.getAbsolutePath(<span class="literal">":3F00"</span>);
	df = df.slice(0, -5);
	<span class="reserved">this</span>.df = df;

	<span class="reserved">for</span> (var i = 0; i &lt; dos.length; i++) {
		var tlv = dos[i];
		assert(tlv.isconstructed);
		var ciotype = tlv.tag;
		var path = new PKCS15_Path(tlv.get(0));

<span class="comment">//		print("Path = " + path);</span>
		try	{
			var cios = <span class="reserved">this</span>.readCardObjects(df, path);
		}
		catch(e) {
			print(e);
			continue;
		}

		<span class="reserved">for</span> (var j = 0; j &lt; cios.length; j++) {
			var tlv = cios[j];

			var cio;
			switch(ciotype) {
				case 0xA0:
					cio = new PKCS15_PrivateKey(tlv);
<span class="comment">//					cio.type = "PrivateKey";</span>
					break;
				case 0xA1:
<span class="comment">//					cio = new PKCS15_PublicKey(tlv);</span>
					cio = new PKCS15_CIO(tlv);
					cio.type = <span class="literal">"PublicKey"</span>;
					break;
				case 0xA2:
<span class="comment">//					cio = new PKCS15_PublicKey(tlv);</span>
					cio = new PKCS15_CIO(tlv);
					cio.type = <span class="literal">"TrustedPublicKey"</span>;
					break;
				case 0xA3:
<span class="comment">//					cio = new PKCS15_SecretKey(tlv);</span>
					cio = new PKCS15_CIO(tlv);
					cio.type = <span class="literal">"SecretKey"</span>;
					break;
				case 0xA4:
					cio = new PKCS15_Certificate(tlv);
<span class="comment">//					cio.type = "Certificate";</span>
					break;
				case 0xA5:
					cio = new PKCS15_Certificate(tlv);
					cio.type = <span class="literal">"Trusted"</span> + cio.type;
					break;
				case 0xA6:
					cio = new PKCS15_Certificate(tlv);
					cio.type = <span class="literal">"Useful"</span> + cio.type;
					break;
				case 0xA7:
					cio = new PKCS15_DataContainerObject(tlv);
					cio.type = <span class="literal">"DataContainerObject"</span>;
					break;
				case 0xA8:
					cio = new PKCS15_AuthenticationObject(tlv);
					cio.type = <span class="literal">"AuthObject"</span>;
					break;
				default:
					assert(false);
			}
			at.objlist.push(cio);
		}
	}
}



<span class="comment">/**
 * Reads and return the CIAInfo structure referenced by the PKCS#15 path element.
 *
 * <span class="attrib">@param</span> {PKCS15_Path} path the path to the CIAInfo file
 * <span class="attrib">@return</span> the CIAInfo description
 * <span class="attrib">@type</span> PKCS15_CIAInfo
 */</span>
PKCS15.<span class="reserved">prototype</span>.getCIAInfo = <span class="reserved">function</span>(path) {

	var cia = <span class="reserved">this</span>.readCardObject(<span class="literal">":3F00"</span>, path);
	var tlv = new ASN1(cia);
	<span class="reserved">return</span> new PKCS15_CIAInfo(tlv);
}



<span class="comment">/**
 * Return the hash table of application templates
 *
 * <span class="attrib">@return</span> the hash table of application templates
 * <span class="attrib">@type</span> PKCS15_ApplicationTemplate[]
 */</span>
PKCS15.<span class="reserved">prototype</span>.getAidList = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.aidlist;
}

</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlinePKCS15
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlinePKCS15";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-CardOutlineFactory2.0.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineFCP.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineRecord.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlinePKCS15</H2>
<PRE>Object
   |
   +--<b>OutlinePKCS15</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlinePKCS15</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-CardOutlineFactory2.0.js.html'>CardOutlineFactory2.0.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#aid">aid</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#at">at</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#pkcs15">pkcs15</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlinePKCS15()">OutlinePKCS15</A></B>(factory, pkcs15, aid, at)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#expandListener">expandListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="aid"><!-- --></A>
   <H3>aid</H3>
   <PRE>Object&nbsp;<B>aid</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="at"><!-- --></A>
   <H3>at</H3>
   <PRE>Object&nbsp;<B>at</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="pkcs15"><!-- --></A>
   <H3>pkcs15</H3>
   <PRE>Object&nbsp;<B>pkcs15</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlinePKCS15()"><!-- --></A><H3>
OutlinePKCS15</H3>
<PRE><B>OutlinePKCS15</B>(factory, pkcs15, aid, at)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="expandListener"><!-- --></A>
   <H3>expandListener</H3>
   <PRE>void <B>expandListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-CardOutlineFactory2.0.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineFCP.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineRecord.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 x509certificategenerator.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" x509certificategenerator.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-x509certificategenerator.js.html" 
                                            target="classFrame">x509certificategenerator.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="X509CertificateGenerator.html" TARGET="classFrame">X509CertificateGenerator</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 file.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" file.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-file.js.html" 
                                            target="classFrame">file.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="File.html" TARGET="classFrame">File</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CommonDataContainerObjectAttributes
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CommonDataContainerObjectAttributes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonCertificateAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonKeyAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CommonDataContainerObjectAttributes</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<b>PKCS15_CommonDataContainerObjectAttributes</b>
</PRE>

   
      <DL>
      <DT>
         <B>Direct Known Subclasses:</B> 
         <DD>
                  <a href='PKCS15_DataContainerObject.html'>PKCS15_DataContainerObject</a>
         </DD>
      </DL>
   


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CommonDataContainerObjectAttributes</B>
   
      <DT>extends <a href='PKCS15_CIO.html'>PKCS15_CIO</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds common data container attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonDataContainerObjectAttributes ::= SEQUENCE {
 		applicationName Label OPTIONAL,
 		applicationOID OBJECT IDENTIFIER OPTIONAL,
 		iD Identifier OPTIONAL,
 		... -- For future extensions
 		} (WITH COMPONENTS {..., applicationName PRESENT}
 		| WITH COMPONENTS {..., applicationOID PRESENT})
 </pre>
 <BR/><B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#applicationName">applicationName</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#applicationOID">applicationOID</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#iD">iD</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CommonDataContainerObjectAttributes()">PKCS15_CommonDataContainerObjectAttributes</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Common Data Container Object Attribute Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="applicationName"><!-- --></A>
   <H3>applicationName</H3>
   <PRE>Object&nbsp;<B>applicationName</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="applicationOID"><!-- --></A>
   <H3>applicationOID</H3>
   <PRE>Object&nbsp;<B>applicationOID</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="iD"><!-- --></A>
   <H3>iD</H3>
   <PRE>Object&nbsp;<B>iD</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CommonDataContainerObjectAttributes()"><!-- --></A><H3>
PKCS15_CommonDataContainerObjectAttributes</H3>
<PRE><B>PKCS15_CommonDataContainerObjectAttributes</B>(tlv)</PRE>


<UL>
   Create a Common Data Container Object Attribute Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonCertificateAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonKeyAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS8
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS8";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-pkcs8.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_SecretKey.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKIXCommon.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS8</H2>
<PRE>Object
   |
   +--<b>PKCS8</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS8</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-pkcs8.js.html'>pkcs8.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!idEcPublicKey">idEcPublicKey</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!PAD">PAD</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!rsaEncryption">rsaEncryption</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS8()">PKCS8</A></B>()
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Empty constructor
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!convertUnsignedInteger">convertUnsignedInteger</A></B>(&lt;ByteString&gt; value)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Key</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!decodeECCKeyFromPKCS8Format">decodeECCKeyFromPKCS8Format</A></B>(domainParameter, encodedKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Decode a given PKCS#8 ECC private key from the given ByteString and create a GP key object


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Key</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!decodeKeyFromPKCS8Format">decodeKeyFromPKCS8Format</A></B>(encodedKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Decode a given PKCS#8 private key from the given ByteString and create a GP key object


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Key</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!decodeRSAKeyFromPKCS8Format">decodeRSAKeyFromPKCS8Format</A></B>(&lt;ASN1&gt; algparam, &lt;ASN1&gt; privateKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Decode a given PKCS#8 RSA private key from the given ByteString and create a GP key object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!decodeUncompressedECPoint">decodeUncompressedECPoint</A></B>(uncompressedPoint)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert uncompressed format to x and y coordinates
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!encodeECCKeyUsingPKCS8Format">encodeECCKeyUsingPKCS8Format</A></B>(privateKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Encode a given GP ECC private key as specified by the PKCS#8 format
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!encodeKeyUsingPKCS8Format">encodeKeyUsingPKCS8Format</A></B>(privateKey, publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Encode a given GP private key as specified by the PKCS#8 format


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!encodeRSAKey">encodeRSAKey</A></B>(&lt;Key&gt; privateKey, publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Encode RSA private key as defined in PKCS#1


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!encodeRSAKeyUsingPKCS8Format">encodeRSAKeyUsingPKCS8Format</A></B>(privateKey, publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Encode a given GP RSA private key as specified by the PKCS#8 format
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!encodeUncompressedECPoint">encodeUncompressedECPoint</A></B>(&lt;ByteString&gt; x,&lt;ByteString&gt; y)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert x/y coordinates to uncompressed format
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!I2O">I2O</A></B>(&lt;ByteString&gt; value, length)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Integer to octet string conversion
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!stripLeadingZeros">stripLeadingZeros</A></B>(&lt;ByteString&gt; value, size)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Strips leading zeros of a ByteString
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!test">test</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Simple self-test
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="!s!idEcPublicKey"><!-- --></A>
   <H3>idEcPublicKey</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>idEcPublicKey</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!PAD"><!-- --></A>
   <H3>PAD</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>PAD</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!rsaEncryption"><!-- --></A>
   <H3>rsaEncryption</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>rsaEncryption</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS8()"><!-- --></A><H3>
PKCS8</H3>
<PRE><B>PKCS8</B>()</PRE>


<UL>
   Empty constructor
</UL>



   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="!s!convertUnsignedInteger"><!-- --></A>
   <H3>convertUnsignedInteger</H3>
   <PRE>&lt;static&gt; ByteString <B>convertUnsignedInteger</B>(&lt;ByteString&gt; value)</PRE>
   
      <UL>Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.

 This prevent interpretation of the integer representation if converted into
 a signed ASN1 INTEGER.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>value</CODE> -  the value to convert  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the converted value   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!decodeECCKeyFromPKCS8Format"><!-- --></A>
   <H3>decodeECCKeyFromPKCS8Format</H3>
   <PRE>&lt;static&gt; Key <B>decodeECCKeyFromPKCS8Format</B>(domainParameter, encodedKey)</PRE>
   
      <UL>Decode a given PKCS#8 ECC private key from the given ByteString and create a GP key object

 For now we only support the decoding of ECC private keys in a prime field</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>algparam</CODE> -  the algorithm parameter from AlgorithmInfo  
      </UL> 
   
     <UL><CODE>privateKey</CODE> -  the privateKey element from the PKCS#8 structure  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the GP key object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!decodeKeyFromPKCS8Format"><!-- --></A>
   <H3>decodeKeyFromPKCS8Format</H3>
   <PRE>&lt;static&gt; Key <B>decodeKeyFromPKCS8Format</B>(encodedKey)</PRE>
   
      <UL>Decode a given PKCS#8 private key from the given ByteString and create a GP key object

 For now we only support the decoding of ECC private keys in a prime field</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  private key object in PKCS#8 format  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the GP key object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!decodeRSAKeyFromPKCS8Format"><!-- --></A>
   <H3>decodeRSAKeyFromPKCS8Format</H3>
   <PRE>&lt;static&gt; Key <B>decodeRSAKeyFromPKCS8Format</B>(&lt;ASN1&gt; algparam, &lt;ASN1&gt; privateKey)</PRE>
   
      <UL>Decode a given PKCS#8 RSA private key from the given ByteString and create a GP key object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>algparam</CODE> -  the algorithm parameter from AlgorithmInfo  
      </UL> 
   
     <UL><CODE>privateKey</CODE> -  the privateKey element from the PKCS#8 structure  
      </UL> 
   
     <UL><CODE>the</CODE> -  private key object in PKCS#8 format  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the GP key object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!decodeUncompressedECPoint"><!-- --></A>
   <H3>decodeUncompressedECPoint</H3>
   <PRE>&lt;static&gt; Object <B>decodeUncompressedECPoint</B>(uncompressedPoint)</PRE>
   
      <UL>Convert uncompressed format to x and y coordinates</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>compressed</CODE> -  point  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        Object with ByteString properties x and y 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!encodeECCKeyUsingPKCS8Format"><!-- --></A>
   <H3>encodeECCKeyUsingPKCS8Format</H3>
   <PRE>&lt;static&gt; ByteString <B>encodeECCKeyUsingPKCS8Format</B>(privateKey)</PRE>
   
      <UL>Encode a given GP ECC private key as specified by the PKCS#8 format</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  private key object that should be encoded  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the encoded PKCS#8 private key   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!encodeKeyUsingPKCS8Format"><!-- --></A>
   <H3>encodeKeyUsingPKCS8Format</H3>
   <PRE>&lt;static&gt; ByteString <B>encodeKeyUsingPKCS8Format</B>(privateKey, publicKey)</PRE>
   
      <UL>Encode a given GP private key as specified by the PKCS#8 format

 For now we only support the encoding of ECC private keys in a prime field</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  private key object that should be encoded  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the encoded PKCS#8 private key   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!encodeRSAKey"><!-- --></A>
   <H3>encodeRSAKey</H3>
   <PRE>&lt;static&gt; ByteString <B>encodeRSAKey</B>(&lt;Key&gt; privateKey, publicKey)</PRE>
   
      <UL>Encode RSA private key as defined in PKCS#1

 RSAPrivateKey ::= SEQUENCE {
     version           Version,
     modulus           INTEGER,  -- n
     publicExponent    INTEGER,  -- e
     privateExponent   INTEGER,  -- d
     prime1            INTEGER,  -- p
     prime2            INTEGER,  -- q
     exponent1         INTEGER,  -- d mod (p-1)
     exponent2         INTEGER,  -- d mod (q-1)
     coefficient       INTEGER,  -- (inverse of q) mod p
     otherPrimeInfos   OtherPrimeInfos OPTIONAL
 }</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>privateKey</CODE> -  the private RSA key in CRT format  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the encoded RSA key 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!encodeRSAKeyUsingPKCS8Format"><!-- --></A>
   <H3>encodeRSAKeyUsingPKCS8Format</H3>
   <PRE>&lt;static&gt; ByteString <B>encodeRSAKeyUsingPKCS8Format</B>(privateKey, publicKey)</PRE>
   
      <UL>Encode a given GP RSA private key as specified by the PKCS#8 format</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  private key object that should be encoded  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the encoded PKCS#8 private key   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!encodeUncompressedECPoint"><!-- --></A>
   <H3>encodeUncompressedECPoint</H3>
   <PRE>&lt;static&gt; ByteString <B>encodeUncompressedECPoint</B>(&lt;ByteString&gt; x,&lt;ByteString&gt; y)</PRE>
   
      <UL>Convert x/y coordinates to uncompressed format</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>x</CODE> -  the x coordinate  
      </UL> 
   
     <UL><CODE>y</CODE> -  the y coordinate  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        ByteString containing compressed format 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!I2O"><!-- --></A>
   <H3>I2O</H3>
   <PRE>&lt;static&gt; ByteString <B>I2O</B>(&lt;ByteString&gt; value, length)</PRE>
   
      <UL>Integer to octet string conversion</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>value</CODE> -  the encoded integer value  
      </UL> 
   
     <UL><CODE>the</CODE> -  number of digits  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the truncated or padded result 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!stripLeadingZeros"><!-- --></A>
   <H3>stripLeadingZeros</H3>
   <PRE>&lt;static&gt; ByteString <B>stripLeadingZeros</B>(&lt;ByteString&gt; value, size)</PRE>
   
      <UL>Strips leading zeros of a ByteString</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>value</CODE> -  the ByteString value  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the stripped ByteString object, may be an empty ByteString   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!test"><!-- --></A>
   <H3>test</H3>
   <PRE>&lt;static&gt; void <B>test</B>()</PRE>
   
      <UL>Simple self-test</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-pkcs8.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_SecretKey.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKIXCommon.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 pkcs8.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" pkcs8.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-pkcs8.js.html" 
                                            target="classFrame">pkcs8.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS8.html" TARGET="classFrame">PKCS8</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_ApplicationTemplate
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_ApplicationTemplate";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_AuthenticationObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_ApplicationTemplate</H2>
<PRE>Object
   |
   +--<b>PKCS15_ApplicationTemplate</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_ApplicationTemplate</B>
   

</DL>
   
   <P>
   <BR/><p>This class provides for access to an application template.</p>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;String</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#aid">aid</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The application identifier for this application.</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;<a href="PKCS15_CIODDO.html">PKCS15_CIODDO</a></CODE></FONT></TD>
   <TD><CODE><B><A HREF="#ddo">ddo</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The PKCS#15 Directory Data Object (DDO) for this application.</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;String</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#label">label</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The application label for this application.</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;PKCS15_CIO[]</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#objlist">objlist</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The list of Cryptographic Information Objects (CIO).</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;String</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#path">path</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The path for this application.</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_ApplicationTemplate()">PKCS15_ApplicationTemplate</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Creates a structure to access an application template from EF_DIR.
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="aid"><!-- --></A>
   <H3>aid</H3>
   <PRE>String&nbsp;<B>aid</B></PRE>
   <UL>
   The application identifier for this application.
   
   </UL>
   <HR>
   
   <A NAME="ddo"><!-- --></A>
   <H3>ddo</H3>
   <PRE><a href="PKCS15_CIODDO.html">PKCS15_CIODDO</a>&nbsp;<B>ddo</B></PRE>
   <UL>
   The PKCS#15 Directory Data Object (DDO) for this application.
   
   </UL>
   <HR>
   
   <A NAME="label"><!-- --></A>
   <H3>label</H3>
   <PRE>String&nbsp;<B>label</B></PRE>
   <UL>
   The application label for this application.
   
   </UL>
   <HR>
   
   <A NAME="objlist"><!-- --></A>
   <H3>objlist</H3>
   <PRE>PKCS15_CIO[]&nbsp;<B>objlist</B></PRE>
   <UL>
   The list of Cryptographic Information Objects (CIO).
   
   </UL>
   <HR>
   
   <A NAME="path"><!-- --></A>
   <H3>path</H3>
   <PRE>String&nbsp;<B>path</B></PRE>
   <UL>
   The path for this application.
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_ApplicationTemplate()"><!-- --></A><H3>
PKCS15_ApplicationTemplate</H3>
<PRE><B>PKCS15_ApplicationTemplate</B>(tlv)</PRE>


<UL>
   Creates a structure to access an application template from EF_DIR.
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO DDO    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>Object <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_AuthenticationObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_PasswordAuthenticationObject
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_PasswordAuthenticationObject";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_DataContainerObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_Path.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_PasswordAuthenticationObject</H2>
<PRE>Object
   |
   +--<b>PKCS15_PasswordAuthenticationObject</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_PasswordAuthenticationObject</B>
   

</DL>
   
   <P>
   <BR/><p>This class supports password authentication objects.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 PasswordAttributes ::= SEQUENCE {
	pwdFlags PasswordFlags,
	pwdType PasswordType,
	minLength INTEGER (cia-lb-minPasswordLength..cia-ub-minPasswordLength),
	storedLength INTEGER (0..cia-ub-storedPasswordLength),
	maxLength INTEGER OPTIONAL,
	pwdReference [0] Reference DEFAULT 0,
	padChar OCTET STRING (SIZE(1)) OPTIONAL,
	lastPasswordChange GeneralizedTime OPTIONAL,
	path Path OPTIONAL,
	... -- For future extensions
 }
 PasswordFlags ::= BIT STRING {
	case-sensitive (0),
	local (1),
	change-disabled (2),
	unblock-disabled (3),
	initialized (4),
	needs-padding (5),
	unblockingPassword (6),
	soPassword (7),
	disable-allowed (8),
	integrity-protected (9),
	confidentiality-protected (10),
	exchangeRefData (11)
	} (CONSTRAINED BY { -- "unblockingPassword" and "soPassword" cannot both be set -- })
 PasswordType ::= ENUMERATED {bcd, ascii-numeric, utf8, half-nibble-bcd, iso9564-1, ...}
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#maxLength">maxLength</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#minLength">minLength</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#pwdFlags">pwdFlags</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#pwdReference">pwdReference</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#pwdType">pwdType</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#storedLength">storedLength</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_PasswordAuthenticationObject()">PKCS15_PasswordAuthenticationObject</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Password Authentication Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getPwdFlagsAsString">getPwdFlagsAsString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the password flags as string of concatenated flags.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getPwdTypeAsString">getPwdTypeAsString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the password type.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="maxLength"><!-- --></A>
   <H3>maxLength</H3>
   <PRE>Object&nbsp;<B>maxLength</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="minLength"><!-- --></A>
   <H3>minLength</H3>
   <PRE>Object&nbsp;<B>minLength</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="pwdFlags"><!-- --></A>
   <H3>pwdFlags</H3>
   <PRE>Object&nbsp;<B>pwdFlags</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="pwdReference"><!-- --></A>
   <H3>pwdReference</H3>
   <PRE>Object&nbsp;<B>pwdReference</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="pwdType"><!-- --></A>
   <H3>pwdType</H3>
   <PRE>Object&nbsp;<B>pwdType</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="storedLength"><!-- --></A>
   <H3>storedLength</H3>
   <PRE>Object&nbsp;<B>storedLength</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_PasswordAuthenticationObject()"><!-- --></A><H3>
PKCS15_PasswordAuthenticationObject</H3>
<PRE><B>PKCS15_PasswordAuthenticationObject</B>(tlv)</PRE>


<UL>
   Create a Password Authentication Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getPwdFlagsAsString"><!-- --></A>
   <H3>getPwdFlagsAsString</H3>
   <PRE>String <B>getPwdFlagsAsString</B>()</PRE>
   
      <UL>Gets the password flags as string of concatenated flags.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string containing the flags separated by a blank   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getPwdTypeAsString"><!-- --></A>
   <H3>getPwdTypeAsString</H3>
   <PRE>String <B>getPwdTypeAsString</B>()</PRE>
   
      <UL>Gets the password type.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string containing the password type (BCD, ASCII-NUMERIC, UTF8, HALF-NIBBLE-BCD or ISO9564-1)   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_DataContainerObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_Path.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CIO
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CIO";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CIAInfo.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CIODDO.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CIO</H2>
<PRE>Object
   |
   +--<b>PKCS15_CIO</b>
</PRE>

   
      <DL>
      <DT>
         <B>Direct Known Subclasses:</B> 
         <DD>
                  <a href='PKCS15_CommonCertificateAttributes.html'>PKCS15_CommonCertificateAttributes</a>, <a href='PKCS15_CommonAuthenticationObjectAttributes.html'>PKCS15_CommonAuthenticationObjectAttributes</a>, <a href='PKCS15_CommonDataContainerObjectAttributes.html'>PKCS15_CommonDataContainerObjectAttributes</a>, <a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a>
         </DD>
      </DL>
   


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CIO</B>
   

</DL>
   
   <P>
   <BR/><p>This is the base class for all cryptographic objects in a PKCS#15 data structure.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonObjectAttributes ::= SEQUENCE {
		label Label OPTIONAL,
		flags CommonObjectFlags OPTIONAL,
		authId Identifier OPTIONAL,
		userConsent INTEGER (1..cia-ub-userConsent) OPTIONAL,
		accessControlRules SEQUENCE SIZE (1..MAX) OF AccessControlRule OPTIONAL,
		...
	} (CONSTRAINED BY {-- authId should be present if flags.private is set.
	-- It shall equal an authID in one authentication object in the AOD -- })
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#accessControlRules">accessControlRules</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#authId">authId</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#flags">flags</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#label">label</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#tlv">tlv</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#userConsent">userConsent</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CIO()">PKCS15_CIO</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Cryptographic Information Object (CIO)
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getFlagsAsString">getFlagsAsString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the common object flags as string of concatenated flags.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="accessControlRules"><!-- --></A>
   <H3>accessControlRules</H3>
   <PRE>Object&nbsp;<B>accessControlRules</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="authId"><!-- --></A>
   <H3>authId</H3>
   <PRE>Object&nbsp;<B>authId</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="flags"><!-- --></A>
   <H3>flags</H3>
   <PRE>Object&nbsp;<B>flags</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="label"><!-- --></A>
   <H3>label</H3>
   <PRE>Object&nbsp;<B>label</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="tlv"><!-- --></A>
   <H3>tlv</H3>
   <PRE>Object&nbsp;<B>tlv</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="userConsent"><!-- --></A>
   <H3>userConsent</H3>
   <PRE>Object&nbsp;<B>userConsent</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CIO()"><!-- --></A><H3>
PKCS15_CIO</H3>
<PRE><B>PKCS15_CIO</B>(tlv)</PRE>


<UL>
   Create a Cryptographic Information Object (CIO)
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getFlagsAsString"><!-- --></A>
   <H3>getFlagsAsString</H3>
   <PRE>String <B>getFlagsAsString</B>()</PRE>
   
      <UL>Gets the common object flags as string of concatenated flags.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string containing the flags separated by a blank   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CIAInfo.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CIODDO.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 eccutils.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" eccutils.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-eccutils.js.html" 
                                            target="classFrame">eccutils.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="ECCUtils.html" TARGET="classFrame">ECCUtils</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="CardOutlineFactory2.0.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>CardOutlineFactory2.0.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'CardOutlineFactory2.0.js'<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="CardOutlineFactory.html">CardOutlineFactory</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlineDataObject.html">OutlineDataObject</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlinePKCS15.html">OutlinePKCS15</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  ---------
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core classes to construct card outlines
 *
 * Changes to Version 1.0
 *
 *  - Added support for nested DF structures (requires updated application profiles)
 *  - Added support for PKCS#15 / ISO 7816-15 formatted cards
 *
 */</span>



load(<span class="literal">"tools/FCPDecorator.js"</span>);
load(<span class="literal">"tools/CRTDecorator.js"</span>);
load(<span class="literal">"tools/ARRDecorator.js"</span>);
load(<span class="literal">"tools/p15classes.js"</span>);


<span class="comment">//</span>
<span class="comment">// CTOR - OutlineCard default</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineCard(outlineFactory, card, applicationFactory, aidlist) {

	<span class="reserved">this</span>.factory = outlineFactory;
	<span class="reserved">this</span>.card = card;
	<span class="reserved">this</span>.af = applicationFactory;
	<span class="reserved">this</span>.presetaidlist = aidlist;

	<span class="reserved">this</span>.atr = card.reset(Card.RESET_COLD);

	<span class="reserved">this</span>.pkcs15 = new PKCS15(card);

	<span class="comment">// Create OutlineNode object and register in card object</span>

	var name = card.profile.CardManufacturerProduct.Name;

	<span class="reserved">if</span> (!name) {
		name = <span class="literal">"Card"</span>;
	}

	var view = new OutlineNode(name);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Expand clicked on node</span>
<span class="comment">//</span>
<span class="comment">// Read application list from EF_DIR or from card profile</span>
<span class="comment">//</span>
OutlineCard.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
		<span class="reserved">return</span>;

	var view = <span class="reserved">this</span>.view;

	<span class="comment">//</span>
	<span class="comment">// Display ATR</span>
	<span class="comment">//</span>
	var atrnode = <span class="reserved">this</span>.factory.newOutlineATR(<span class="reserved">this</span>.atr);

	view.insert(atrnode.view);

	<span class="comment">//</span>
	<span class="comment">// Get list of application instances from card profile</span>
	<span class="comment">//</span>
	var applicationInstances = <span class="reserved">this</span>.card.profile.ApplicationInstances.ApplicationInstance;

	<span class="comment">//</span>
	<span class="comment">// Make sure that we got a list</span>
	<span class="comment">//</span>
	assert(applicationInstances instanceof Array);

	<span class="comment">//</span>
	<span class="comment">// Try reading the EF_DIR</span>
	<span class="comment">//</span>
	var hasEFDIR = true;

	var aidlist = new Array();

	try	{
		<span class="reserved">this</span>.pkcs15.readApplicationDirectory();
		aidlist = <span class="reserved">this</span>.pkcs15.getAidList();
		aidlist[<span class="literal">"3F00"</span>] = null;
	}
	catch(e) {
		print(<span class="literal">"Exception selecting EF_DIR. Assuming no EF_DIR...\n"</span> + e);
		hasEFDIR = false;

		<span class="comment">//</span>
		<span class="comment">// Create application list from card profile</span>
		<span class="comment">//</span>
		<span class="reserved">for</span> (var aid in  applicationInstances) {
			<span class="reserved">if</span> (aid == <span class="literal">"arrayIndex"</span>)
				continue;
			aidlist[aid] = null;
		}
	}

	var sortedaidlist = new Array();
	<span class="reserved">for</span> (var aid in aidlist) {
		sortedaidlist.push(aid);
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.presetaidlist) {
		<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.presetaidlist.length; i++) {
			sortedaidlist.push(<span class="reserved">this</span>.presetaidlist[i]);
		}
	}

	sortedaidlist.sort();

	<span class="reserved">for</span> (var i = 0; i &lt; sortedaidlist.length; i++) {
		var aid = sortedaidlist[i];
		var at = aidlist[aid];
		var applinstance = applicationInstances[aid.toString(HEX)];
		<span class="reserved">if</span> (applinstance) {
<span class="comment">/*
			print("from Card Profile: " + applinstance);
			print("  Label     : " + applinstance.Label);
			print("  AID       : " + applinstance.AID);
			print("  ProfileID : " + applinstance.ProfileID);
*/</span>
			var uniqueId = new ByteString(applinstance.ProfileID, HEX);

			var instance = <span class="reserved">this</span>.af.getApplicationInstance(new Object(), new ByteString(aid, HEX), <span class="reserved">this</span>.card, uniqueId);

			var struct = null;

			<span class="reserved">if</span> (instance.profile.DataStructure) {
				struct = instance.profile.DataStructure;
			}

			var path;
			<span class="reserved">if</span> (aid.length &lt;= 4) {
				path = <span class="literal">":"</span> + aid.toString(HEX);
			} <span class="reserved">else</span> {
				path = <span class="literal">"#"</span> + aid.toString(HEX);
			}

			var applentry;
			<span class="reserved">if</span> (struct) {
				applentry = <span class="reserved">this</span>.factory.newOutlineDF(<span class="reserved">this</span>.card, null, path, applinstance.Label, struct);
			} <span class="reserved">else</span> {
				applentry = <span class="reserved">this</span>.factory.newOutlineApplet(instance);
			}
			view.insert(applentry.view);
	  	} <span class="reserved">else</span> {
	  		print(<span class="literal">"No profile found for aid "</span> + aid);
	  	}
	  	<span class="reserved">if</span> (at) {
			<span class="reserved">if</span> ((!at.ddo) &amp;&amp; ((aid == <span class="literal">"A000000063504B43532D3135"</span>) || (aid.substr(0, 10) == <span class="literal">"E828BD080F"</span>))) {
				var t = new ASN1(new ByteString(<span class="literal">"7300"</span>, HEX));
				at.ddo = new PKCS15_CIODDO(t);
		  	}
		  	<span class="reserved">if</span> (at.ddo) {
				var applentry;
				applentry = <span class="reserved">this</span>.factory.newOutlinePKCS15(<span class="reserved">this</span>.pkcs15, aid, at);
				view.insert(applentry.view);
	  		}
	  	}
	}

	<span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - ATR Outline</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineATR(factory, atr) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.atr = atr;

	<span class="comment">// Create OutlineNode object and register in ATR object</span>
	var view = new OutlineNode(<span class="literal">"ATR="</span> + <span class="reserved">this</span>.atr.toByteString().toString(HEX));
	view.setIcon(<span class="literal">"atr"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	view.setToolTip(<span class="literal">"Click to decode ATR"</span>);
	<span class="reserved">this</span>.view = view;
}


OutlineATR.<span class="reserved">prototype</span>.selectedListener = <span class="reserved">function</span>() {
	print(<span class="reserved">this</span>.atr);
}





<span class="comment">//</span>
<span class="comment">// CTOR - FCP Outline</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineFCP(factory, fcp) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.fcp = fcp;

	<span class="comment">// Create OutlineNode object and register in FCP object</span>
	var view = new OutlineNode(<span class="literal">"FCP="</span> + <span class="reserved">this</span>.fcp.toString(HEX));
	view.setIcon(<span class="literal">"header"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;

	<span class="reserved">if</span> ((fcp.byteAt(0) == 0x62) ||
		(fcp.byteAt(0) == 0x64) ||
		(fcp.byteAt(0) == 0x6F)) {
		try	{
			var asn = new ASN1(<span class="reserved">this</span>.fcp);
			FCPDecorator(asn);
			view.insert(asn);
		}
		catch(e) {
			print(e);
			print(<span class="literal">"Unable to decode FCP structure"</span>);
		}
	} <span class="reserved">else</span> {
	}
}





<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for DFs</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineDF(factory, card, parentdf, id, name, profile) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.card = card;
	<span class="reserved">this</span>.parentdf = parentdf;
	<span class="reserved">this</span>.id = id;

	<span class="comment">// Create OutlineNode object and register in OutlineDF object</span>
	var view = new OutlineNode(name, true);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;

	<span class="reserved">this</span>.profile = profile;
}





<span class="comment">//</span>
<span class="comment">// Event handler for expand notifications</span>
<span class="comment">//</span>
OutlineDF.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {

	<span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
		<span class="reserved">return</span>;

	var view = <span class="reserved">this</span>.view;

	var eflist = null;
	<span class="reserved">if</span> (<span class="reserved">this</span>.profile &amp;&amp; <span class="reserved">this</span>.profile.FileStructure) {
		eflist = <span class="reserved">this</span>.profile.FileStructure.EF;
	}

	var dflist = null;
	<span class="reserved">if</span> (<span class="reserved">this</span>.profile &amp;&amp; <span class="reserved">this</span>.profile.DirectoryStructure) {
		dflist = <span class="reserved">this</span>.profile.DirectoryStructure.DF;
	}

	var dolist = null;
	<span class="reserved">if</span> (<span class="reserved">this</span>.profile &amp;&amp; <span class="reserved">this</span>.profile.DataObjectStructure) {
		dolist = <span class="reserved">this</span>.profile.DataObjectStructure.DF;
	}

	try	{
		var df;

		<span class="reserved">if</span> (<span class="reserved">this</span>.parentdf) {
			df = new CardFile(<span class="reserved">this</span>.parentdf.df, <span class="reserved">this</span>.id);
			} <span class="reserved">else</span> {
			df = new CardFile(<span class="reserved">this</span>.card, <span class="reserved">this</span>.id);
			}
		<span class="reserved">this</span>.df = df;

		var fcp = df.getFCPBytes();
		<span class="reserved">if</span> (fcp &amp;&amp; (fcp.length &gt; 1)) {
			var fcpmodel = <span class="reserved">this</span>.factory.newOutlineFCP(fcp);
			view.insert(fcpmodel.view);
		}

		<span class="reserved">if</span> (dflist) {
			<span class="reserved">for</span> (var i = 0; i &lt; dflist.length; i++) {
				var dfp = dflist[i];

				var sdf = <span class="reserved">this</span>.factory.newOutlineDF(<span class="reserved">this</span>.card, <span class="reserved">this</span>, <span class="literal">":"</span> + dfp.fid, dfp.name, dfp);
				view.insert(sdf.view);
			}
		}

		<span class="reserved">if</span> (eflist) {
			<span class="reserved">for</span> (var i = 0; i &lt; eflist.length; i++) {
				var ef = <span class="reserved">this</span>.factory.newOutlineEF(<span class="reserved">this</span>.df, eflist[i].name, eflist[i]);
				view.insert(ef.view);
			}
		}

		<span class="reserved">if</span> (dolist) {
			<span class="reserved">for</span> (var i = 0; i &lt; dolist.length; i++) {
				var doo = <span class="reserved">this</span>.factory.newOutlineDataObject(<span class="reserved">this</span>.df, dolist[i].id, dolist[i].name, dolist.format);
				view.insert(doo.view);
			}
		}
	}
	catch(e) {
		print(e);
	}

	<span class="reserved">this</span>.expanded = true;
}



<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for EFs</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineEF(factory, df, name, profile) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.df = df;

	<span class="comment">// Create OutlineNode object and register in OutlineEF object</span>
	var view = new OutlineNode(name, true);
	view.setIcon(<span class="literal">"document"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;

	<span class="reserved">this</span>.profile = profile;
}



<span class="comment">//</span>
<span class="comment">// Event handler for expand notification</span>
<span class="comment">//</span>
OutlineEF.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
		<span class="reserved">return</span>;

	var view = <span class="reserved">this</span>.view;
	var efdesc = <span class="reserved">this</span>.profile;

	try	{
		var ef = new CardFile(<span class="reserved">this</span>.df, <span class="literal">":"</span> + efdesc.fid);
	}
	catch(e) {
		print(e);
		<span class="reserved">return</span>;
	}

	var isTransparent = true;
	var fcp = ef.getFCPBytes();
	var filelength = -1;
	<span class="reserved">if</span> (fcp &amp;&amp; (fcp.length &gt; 1)) {
		var fcpmodel = <span class="reserved">this</span>.factory.newOutlineFCP(fcp);
		view.insert(fcpmodel.view);
		isTransparent = ef.isTransparent();
		filelength = ef.getLength();
	} <span class="reserved">else</span> {
		isTransparent = (efdesc.type == <span class="literal">"T"</span>);
	}

	<span class="reserved">if</span> (isTransparent) {
		try	{
			<span class="reserved">if</span> (filelength &gt; 0) {
				var bs = ef.readBinary(0, filelength);
			} <span class="reserved">else</span> {
				var bs = ef.readBinary();
			}
		}
		catch(e) {
			print(e);
			<span class="reserved">this</span>.expanded = true;
			<span class="reserved">return</span>;
		}

		var bindata = <span class="reserved">this</span>.factory.newDataOutline(bs, efdesc.format);
		view.insert(bindata.view);

	} <span class="reserved">else</span> {
		<span class="reserved">for</span> (var rec = 1; rec &lt; 255; rec++) {
			try {
				ef.readRecord(rec);
				var record = <span class="reserved">this</span>.factory.newOutlineRecord(ef, rec, efdesc);
				view.insert(record.view);
			}
			catch(e) {
				<span class="reserved">if</span> ((e instanceof GPError) &amp;&amp; (e.reason == 0x6A83))
					break;
				print(e);
				break;
			}
		}
	}

	<span class="reserved">this</span>.expanded = true;
}




<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for data object retrievable with GET_DATA</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineDataObject(factory, df, id, name, format) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.df = df;
	<span class="reserved">this</span>.id = id;
	<span class="reserved">this</span>.format = format;

	<span class="comment">// Create OutlineNode object and register in OutlineEF object</span>
	print(name + <span class="literal">"("</span> + id.toString(16) + <span class="literal">")"</span>);
	var view = new OutlineNode(name + <span class="literal">"("</span> + id.toString(16) + <span class="literal">")"</span>, true);
	view.setIcon(<span class="literal">"document"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Event handler for expand notification</span>
<span class="comment">//</span>
OutlineDataObject.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
		<span class="reserved">return</span>;

	var view = <span class="reserved">this</span>.view;

	var card = <span class="reserved">this</span>.df.card;

	var bs = card.sendApdu(0x00, 0xCA, <span class="reserved">this</span>.id &gt;&gt; 8, <span class="reserved">this</span>.id &amp; 0xFF, 0);

	<span class="reserved">if</span> (card.SW != 0x9000) {
		var bs = card.sendApdu(0x80, 0xCA, <span class="reserved">this</span>.id &gt;&gt; 8, <span class="reserved">this</span>.id &amp; 0xFF, 0);
	}

	<span class="reserved">if</span> (card.SW != 0x9000) {
		print(<span class="literal">"Error getting object: "</span> + card.SWMSG);
	} <span class="reserved">else</span> {
		var bindata = <span class="reserved">this</span>.factory.newDataOutline(bs, <span class="reserved">this</span>.format);
		view.insert(bindata.view);
	}

	<span class="reserved">this</span>.expanded = true;
}




<span class="comment">//</span>
<span class="comment">// CTOR - Outline for records in an EF</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineRecord(factory, ef, no, efdesc) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.ef = ef;
	<span class="reserved">this</span>.no = no;
	<span class="reserved">this</span>.efdesc = efdesc;

	<span class="comment">// Create OutlineNode object and register in OutlineRecord object</span>
	var view = new OutlineNode(<span class="literal">"Record#"</span> + no, true);
	view.setIcon(<span class="literal">"record"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Expand event handler for records</span>
<span class="comment">//</span>
OutlineRecord.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
		<span class="reserved">return</span>;

	var view = <span class="reserved">this</span>.view;
	var ef = <span class="reserved">this</span>.ef;

	var bs = ef.readRecord(<span class="reserved">this</span>.no);

	var bindata = <span class="reserved">this</span>.factory.newDataOutline(bs, <span class="reserved">this</span>.efdesc.format);
	view.insert(bindata.view);

	<span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - Binary data outline</span>
<span class="comment">//</span>
<span class="reserved">function</span> DataOutline(factory, data, format) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.data = data;
	<span class="reserved">this</span>.format = format;

	var ddata = data;
	<span class="reserved">if</span> (ddata.length &gt; 256) {
		ddata = data.bytes(0, 256);
	}

	var view = new OutlineNode(ddata.toString(HEX));
	view.setIcon(<span class="literal">"binary"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	view.setToolTip(<span class="literal">"Select format from context menu"</span>);
	view.setContextMenu(DataOutline.ctxMenuList);
	<span class="reserved">this</span>.view = view;
	<span class="reserved">this</span>.decorate(format);
}


DataOutline.ctxMenuList = [<span class="literal">"as Hexdump"</span>, <span class="literal">"as ASN1"</span>, <span class="literal">"as X509"</span>];

DataOutline.<span class="reserved">prototype</span>.decorate = <span class="reserved">function</span>(format) {

	var view = <span class="reserved">this</span>.view;
	var data = <span class="reserved">this</span>.data;

	<span class="reserved">if</span> (format &amp;&amp; ((format.substr(0, 4) == <span class="literal">"asn1"</span>) || (format.substr(0, 7) == <span class="literal">"tlvlist"</span>)) &amp;&amp; (data.length &gt;= 2)) {
		var i = format.indexOf(<span class="literal">"."</span>);

		<span class="reserved">if</span> ((i &gt; 0) &amp;&amp; (format.substr(i + 1) == <span class="literal">"striprecordheader"</span>)) {
			data = data.bytes(2);
		}

		var total = data.length;

		<span class="reserved">while</span>(total &gt;= 2) {
			try	{
				var asn = new ASN1(data);
			}
			catch(e) {
				print(<span class="literal">"Error in TLV structure: "</span> + e);
				<span class="reserved">return</span>;
			}

			<span class="reserved">this</span>.asn = asn;
			<span class="reserved">this</span>.asn1DecoratorHook(format);
			view.insert(asn);
			total -= asn.size;

			<span class="reserved">if</span> (format.substr(0, 3) == <span class="literal">"asn"</span>) {
				break;
			}

			data = data.bytes(asn.size);
			<span class="reserved">if</span> ((data.length == 0) || (data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
				break;
			}
		}

		<span class="reserved">if</span> (total &gt; 0) {
			var sparecontent = new OutlineNode(total + <span class="literal">" spare bytes"</span>);
			view.insert(sparecontent);
		}
	}
}



DataOutline.<span class="reserved">prototype</span>.asn1DecoratorHook = <span class="reserved">function</span>(format) {
	var i = format.indexOf(<span class="literal">"."</span>);

	<span class="reserved">if</span> (i &gt; 0) {
		switch(format.substr(i + 1)) {
		case <span class="literal">"arr"</span> :
			ARRDecorator(<span class="reserved">this</span>.asn);
			break;
		}
	}
}



DataOutline.<span class="reserved">prototype</span>.actionListener = <span class="reserved">function</span>(node, action) {
	print(<span class="literal">"--------------------------------------------------------------------------------"</span>);

	switch(action) {
		case DataOutline.ctxMenuList[0]:
			print(<span class="reserved">this</span>.data);
			break;
		case DataOutline.ctxMenuList[1]:
			var asn;
			try	{
				asn = new ASN1(<span class="reserved">this</span>.data);
				print(asn);
			}
			catch(e) {
				print(<span class="literal">"Error in TLV structure: "</span> + e);
				<span class="reserved">return</span>;
			}
			break;
		case DataOutline.ctxMenuList[2]:
			try 	{
				var x509 = new X509(<span class="reserved">this</span>.data);
				print(x509.toString());
			}
			catch(e) {
				print(e);
			}
			break;
	}
}



<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for PKCS15 structures</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlinePKCS15(factory, pkcs15, aid, at) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.pkcs15 = pkcs15;
	<span class="reserved">this</span>.aid = aid;
	<span class="reserved">this</span>.at = at;

	var name = <span class="reserved">this</span>.at.label;
	<span class="reserved">if</span> (!name) {
		name = aid;
	}

	name = <span class="literal">"PKCS#15 \"</span><span class="literal">" + name + "</span>\<span class="literal">""</span>;

	<span class="comment">// Create OutlineNode object and register in OutlineDF object</span>
	var view = new OutlineNode(name, true);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;
}





<span class="comment">//</span>
<span class="comment">// Event handler for expand notifications</span>
<span class="comment">//</span>
OutlinePKCS15.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {

	<span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
		<span class="reserved">return</span>;

	var view = <span class="reserved">this</span>.view;
	var at = <span class="reserved">this</span>.at;

	<span class="reserved">if</span> (!at.ddo.ciaInfoPath) {
		<span class="comment">// Set a default path 5032 to EF.CIAInfo</span>
		var tlv = new ASN1(new ByteString(<span class="literal">"300404025032"</span>, HEX));
		at.ddo.ciaInfoPath = new PKCS15_Path(tlv);
		at.ddo.ciaInfoPath.aid = <span class="literal">"#"</span> + <span class="reserved">this</span>.aid;
	}

	var cia = <span class="reserved">this</span>.pkcs15.getCIAInfo(at.ddo.ciaInfoPath);

	var label = cia.label;
	<span class="reserved">if</span> (!label) {
		label = <span class="literal">"CIAInfo"</span>;
	} <span class="reserved">else</span> {
		label = <span class="literal">"CIAInfo \"</span><span class="literal">" + label + "</span>\<span class="literal">""</span>;
	}

	cia.tlv.setName(label);
	view.insert(cia.tlv);

	<span class="reserved">if</span> (!at.ddo.odfPath) {
		<span class="comment">// Set a default path 5031 to EF.OD</span>
		var tlv = new ASN1(new ByteString(<span class="literal">"300404025031"</span>, HEX));
		at.ddo.odfPath = new PKCS15_Path(tlv);
		at.ddo.odfPath.aid = <span class="literal">"#"</span> + <span class="reserved">this</span>.aid;
	}

	<span class="reserved">this</span>.pkcs15.readObjectListForApplication(at);

	<span class="reserved">for</span> (var i = 0; i &lt; at.objlist.length; i++) {
		var o = at.objlist[i];

		var label = o.label;
		<span class="reserved">if</span> (!label) {
			label = o.type;
		} <span class="reserved">else</span> {
			label = o.type + <span class="literal">" \"</span><span class="literal">" + label + "</span>\<span class="literal">""</span>;
		}

		<span class="reserved">if</span> ((o.type == <span class="literal">"X509Certificate"</span>) || (o.type == <span class="literal">"TrustedX509Certificate"</span>) || (o.type == <span class="literal">"UsefulX509Certificate"</span>)) {
			var onode = new OutlineNode(label, true);
			view.insert(onode);
			o.tlv.setName(<span class="literal">"CIO"</span>);
			onode.insert(o.tlv);

			<span class="reserved">if</span> (o.value &amp;&amp; (o.value instanceof PKCS15_Path)) {
				try	{
					var bs = <span class="reserved">this</span>.pkcs15.readCardObject(<span class="reserved">this</span>.pkcs15.df, o.value);
					var bindata = <span class="reserved">this</span>.factory.newDataOutline(bs, <span class="literal">"asn1.x509"</span>);
					onode.insert(bindata.view);
				}
				catch(e) {
					print(<span class="literal">"Unable to read certificate: "</span> + e);
				}
			}
		} <span class="reserved">else</span> {
			o.tlv.setName(label);
			view.insert(o.tlv);
		}
	}

	<span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - OutlineFactory</span>
<span class="comment">// Derive from this class to include custom made outline elements</span>
<span class="comment">//</span>
<span class="reserved">function</span> CardOutlineFactory() {

}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineATR object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineATR = <span class="reserved">function</span>(atr) {
	<span class="reserved">return</span> new OutlineATR(<span class="reserved">this</span>, atr);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineDF object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineDF = <span class="reserved">function</span>(card, parentdf, id, name, profile) {
	<span class="reserved">return</span> new OutlineDF(<span class="reserved">this</span>, card, parentdf, id, name, profile);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineApplet object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineApplet = <span class="reserved">function</span>(instance) {
	throw new GPError(<span class="literal">"CardOutlineFactory"</span>, GPError.INVALID_USAGE, 0, <span class="literal">"Must overwrite newOutlineApplet to use explorer functionality"</span>);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlinePKCS15 object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlinePKCS15 = <span class="reserved">function</span>(pkcs15, aid, at) {
	<span class="reserved">return</span> new OutlinePKCS15(<span class="reserved">this</span>, pkcs15, aid, at);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineEF object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineEF = <span class="reserved">function</span>(df, name, profile) {
	<span class="reserved">return</span> new OutlineEF(<span class="reserved">this</span>, df, name, profile);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineDataObject object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineDataObject = <span class="reserved">function</span>(df, id, name, format) {
	<span class="reserved">return</span> new OutlineDataObject(<span class="reserved">this</span>, df, id, name, format);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineFCP object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineFCP = <span class="reserved">function</span>(fcp) {
	<span class="reserved">return</span> new OutlineFCP(<span class="reserved">this</span>, fcp);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineRecord object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineRecord = <span class="reserved">function</span>(ef, no, efdesc) {
	<span class="reserved">return</span> new OutlineRecord(<span class="reserved">this</span>, ef, no, efdesc);
}



<span class="comment">//</span>
<span class="comment">// Method to create new DataOutline object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newDataOutline = <span class="reserved">function</span>(data, format) {
	<span class="reserved">return</span> new DataOutline(<span class="reserved">this</span>, data, format);
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 pkixcommon.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" pkixcommon.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-pkixcommon.js.html" 
                                            target="classFrame">pkixcommon.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKIXCommon.html" TARGET="classFrame">PKIXCommon</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKIXCommon
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKIXCommon";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-pkixcommon.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS8.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestCaseRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKIXCommon</H2>
<PRE>Object
   |
   +--<b>PKIXCommon</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKIXCommon</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-pkixcommon.js.html'>pkixcommon.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!cRLSign">cRLSign</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!dataEncipherment">dataEncipherment</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!decipherOnly">decipherOnly</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!digitalSignature">digitalSignature</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!encipherOnly">encipherOnly</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyAgreement">keyAgreement</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyCertSign">keyCertSign</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!keyEncipherment">keyEncipherment</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!nonRepudiation">nonRepudiation</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKIXCommon()">PKIXCommon</A></B>()
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Common functions and constants
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Date</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!addDays">addDays</A></B>(&lt;Date&gt; d, &lt;Number&gt; days)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Add the specified number of days to a date object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!addNames">addNames</A></B>(&lt;ASN1&gt; t, &lt;Object&gt; name)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Adds names from the name object to the RDNSequence.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!bitstringForInteger">bitstringForInteger</A></B>(&lt;Number&gt; val)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Converts the integer value into a BIT STRING value.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!convertUnsignedInteger">convertUnsignedInteger</A></B>(&lt;ByteString&gt; value)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!createECSubjectPublicKeyInfo">createECSubjectPublicKeyInfo</A></B>(publicKey, encodeECDomainParameter)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!createRSASubjectPublicKeyInfo">createRSASubjectPublicKeyInfo</A></B>(publicKey)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Creates the RSA Public Key as subjectPublicKeyInfo TLV structure object.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!dtoUTC">dtoUTC</A></B>(&lt;Date&gt; d)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert date and time to UTC string with format YYMMDDHHMMSSZ.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ASN1</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!encodeName">encodeName</A></B>(&lt;Object&gt; name)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the dn as TLV object


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!makeRDN">makeRDN</A></B>(&lt;String&gt; name, &lt;String&gt; oid, &lt;ASN1&gt; value)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Creates a relative distinguished name component.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ByteString</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!readFileFromDisk">readFileFromDisk</A></B>(&lt;String&gt; filename)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Loads a binary file from disk
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!test">test</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!writeFileToDisk">writeFileToDisk</A></B>(&lt;String&gt; filename, &lt;ByteString&gt; content)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Writes a byte string object to file


      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="!s!cRLSign"><!-- --></A>
   <H3>cRLSign</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>cRLSign</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!dataEncipherment"><!-- --></A>
   <H3>dataEncipherment</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>dataEncipherment</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!decipherOnly"><!-- --></A>
   <H3>decipherOnly</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>decipherOnly</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!digitalSignature"><!-- --></A>
   <H3>digitalSignature</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>digitalSignature</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!encipherOnly"><!-- --></A>
   <H3>encipherOnly</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>encipherOnly</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyAgreement"><!-- --></A>
   <H3>keyAgreement</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyAgreement</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyCertSign"><!-- --></A>
   <H3>keyCertSign</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyCertSign</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!keyEncipherment"><!-- --></A>
   <H3>keyEncipherment</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>keyEncipherment</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!nonRepudiation"><!-- --></A>
   <H3>nonRepudiation</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>nonRepudiation</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKIXCommon()"><!-- --></A><H3>
PKIXCommon</H3>
<PRE><B>PKIXCommon</B>()</PRE>


<UL>
   Common functions and constants
</UL>



   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="!s!addDays"><!-- --></A>
   <H3>addDays</H3>
   <PRE>&lt;static&gt; Date <B>addDays</B>(&lt;Date&gt; d, &lt;Number&gt; days)</PRE>
   
      <UL>Add the specified number of days to a date object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>d</CODE> -  the date object  
      </UL> 
   
     <UL><CODE>days</CODE> -  the number of days to add, may be negative  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        a new Date object 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!addNames"><!-- --></A>
   <H3>addNames</H3>
   <PRE>&lt;static&gt; void <B>addNames</B>(&lt;ASN1&gt; t, &lt;Object&gt; name)</PRE>
   
      <UL>Adds names from the name object to the RDNSequence.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>t</CODE> -  the sequence object  
      </UL> 
   
     <UL><CODE>name</CODE> -  the name object    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!bitstringForInteger"><!-- --></A>
   <H3>bitstringForInteger</H3>
   <PRE>&lt;static&gt; ByteString <B>bitstringForInteger</B>(&lt;Number&gt; val)</PRE>
   
      <UL>Converts the integer value into a BIT STRING value.
 <p>The function interprets the integer value as bitmap, where
 bit 0 is the most significant bit of the least significant byte.</p>
 <p>The function adds the minimum number of bytes to the final bit string
 and encodes the "number of unused bits at the beginning.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>val</CODE> -  the value to convert  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the bit string   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!convertUnsignedInteger"><!-- --></A>
   <H3>convertUnsignedInteger</H3>
   <PRE>&lt;static&gt; ByteString <B>convertUnsignedInteger</B>(&lt;ByteString&gt; value)</PRE>
   
      <UL>Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.

 This prevent interpretation of the integer representation if converted into
 a signed ASN1 INTEGER.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>value</CODE> -  the value to convert  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the converted value   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!createECSubjectPublicKeyInfo"><!-- --></A>
   <H3>createECSubjectPublicKeyInfo</H3>
   <PRE>&lt;static&gt; ASN1 <B>createECSubjectPublicKeyInfo</B>(publicKey, encodeECDomainParameter)</PRE>
   
      <UL>Creates the EC Public Key as subjectPublicKeyInfo TLV structure object.

 <p>The structure is defined as:</p>
 <pre>
	SubjectPublicKeyInfo  ::=  SEQUENCE  {
		algorithm            AlgorithmIdentifier,
		subjectPublicKey     BIT STRING  }

	AlgorithmIdentifier  ::=  SEQUENCE  {
		algorithm               OBJECT IDENTIFIER,
		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 
	id-ecPublicKey OBJECT IDENTIFIER ::= {
		iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 }

	ECParameters ::= CHOICE {
		namedCurve         OBJECT IDENTIFIER,
		implicitCurve      NULL,
		specifiedCurve     SpecifiedECDomain }
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the subjectPublicKey TLV structure   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!createRSASubjectPublicKeyInfo"><!-- --></A>
   <H3>createRSASubjectPublicKeyInfo</H3>
   <PRE>&lt;static&gt; ASN1 <B>createRSASubjectPublicKeyInfo</B>(publicKey)</PRE>
   
      <UL>Creates the RSA Public Key as subjectPublicKeyInfo TLV structure object.

 <p>The structure is defined as:</p>
 <pre>
	SubjectPublicKeyInfo  ::=  SEQUENCE  {
		algorithm            AlgorithmIdentifier,
		subjectPublicKey     BIT STRING  }

	AlgorithmIdentifier  ::=  SEQUENCE  {
		algorithm               OBJECT IDENTIFIER,
		parameters              ANY DEFINED BY algorithm OPTIONAL  }
 
	pkcs-1 OBJECT IDENTIFIER ::= { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 }

	rsaEncryption OBJECT IDENTIFIER ::=  { pkcs-1 1}

	RSAPublicKey ::= SEQUENCE {
		modulus            INTEGER,    -- n
		publicExponent     INTEGER  }  -- e
 </pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the subjectPublicKey TLV structure   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!dtoUTC"><!-- --></A>
   <H3>dtoUTC</H3>
   <PRE>&lt;static&gt; String <B>dtoUTC</B>(&lt;Date&gt; d)</PRE>
   
      <UL>Convert date and time to UTC string with format YYMMDDHHMMSSZ.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>d</CODE> -  the date object.  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the date/time string.   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!encodeName"><!-- --></A>
   <H3>encodeName</H3>
   <PRE>&lt;static&gt; ASN1 <B>encodeName</B>(&lt;Object&gt; name)</PRE>
   
      <UL>Gets the dn as TLV object

 <p>This function support two format for names</p>
 <pre>
  var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 or
  var issuer = [ { C:"UT"}, { O:"ACME Corporation" }, { CN:"Test-CA"} ];
 </pre>

 <p>It supports the following RDNs:</p>
 <ul>
 <li>C - country</li>
 <li>O - organization</li>
 <li>OU - organizational unit</li>
 <li>S - state or province</li>
 <li>L - locality</li>
 <li>T - title</li>
 <li>G - given name</li>
 <li>SN - surname</li>
 <li>CN - common name</li>
 <li>SERIALNUMBER - serial number</li>
 <p>The first format sorts the RDS in the sequence C,O,OU,S,L,T,G,SN,CN,SERIALNUMBER</p>
 </ul></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the name object  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the RDNSequence   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!makeRDN"><!-- --></A>
   <H3>makeRDN</H3>
   <PRE>&lt;static&gt; Object <B>makeRDN</B>(&lt;String&gt; name, &lt;String&gt; oid, &lt;ASN1&gt; value)</PRE>
   
      <UL>Creates a relative distinguished name component.

 <p>The structure is defined as:</p>
 <pre>
	RelativeDistinguishedName ::=
		SET SIZE (1..MAX) OF AttributeTypeAndValue

	AttributeTypeAndValue ::= SEQUENCE {
		type     AttributeType,
		value    AttributeValue }

	AttributeType ::= OBJECT IDENTIFIER

	AttributeValue ::= ANY -- DEFINED BY AttributeType

	DirectoryString ::= CHOICE {
		teletexString           TeletexString (SIZE (1..MAX)),
		printableString         PrintableString (SIZE (1..MAX)),
		universalString         UniversalString (SIZE (1..MAX)),
		utf8String              UTF8String (SIZE (1..MAX)),
		bmpString               BMPString (SIZE (1..MAX)) }
</pre></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the components name  
      </UL> 
   
     <UL><CODE>oid</CODE> -  the oid for the RDN  
      </UL> 
   
     <UL><CODE>value</CODE> -  the value object  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!readFileFromDisk"><!-- --></A>
   <H3>readFileFromDisk</H3>
   <PRE>&lt;static&gt; ByteString <B>readFileFromDisk</B>(&lt;String&gt; filename)</PRE>
   
      <UL>Loads a binary file from disk</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>filename</CODE> -  the fully qualified file name  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the binary content   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!test"><!-- --></A>
   <H3>test</H3>
   <PRE>&lt;static&gt; void <B>test</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!writeFileToDisk"><!-- --></A>
   <H3>writeFileToDisk</H3>
   <PRE>&lt;static&gt; void <B>writeFileToDisk</B>(&lt;String&gt; filename, &lt;ByteString&gt; content)</PRE>
   
      <UL>Writes a byte string object to file

 <p>The filename is mapped to the workspace location.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>filename</CODE> -  the fully qualified name of the file  
      </UL> 
   
     <UL><CODE>content</CODE> -  the content to write    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-pkixcommon.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS8.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestCaseRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 pkcs10.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" pkcs10.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-pkcs10.js.html" 
                                            target="classFrame">pkcs10.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS10Generator.html" TARGET="classFrame">PKCS10Generator</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 TestGroup.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" TestGroup.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-TestGroup.js.html" 
                                            target="classFrame">TestGroup.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestGroup.html" TARGET="classFrame">TestGroup</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>
Overview ()
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="Overview ()";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

   <IMG SRC="./"/>

<H3 class="FrameHeadingFont"><B></B></H3>
<TABLE BORDER="0" WIDTH="100%">
<TR>
<B></B></FONT></TD>
</TR>
</TABLE>

<TABLE BORDER="0" WIDTH="100%">
<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="allclasses-frame.html" TARGET="packageFrame">All Classes</A></FONT>
<P>
<FONT size="+1" CLASS="FrameHeadingFont">
Files</FONT>
<BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-ARRDecorator.js.html" TARGET="packageFrame">ARRDecorator.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-BaseTestRunner.js.html" TARGET="packageFrame">BaseTestRunner.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-CardOutlineFactory.js.html" TARGET="packageFrame">CardOutlineFactory.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-CardOutlineFactory2.0.js.html" TARGET="packageFrame">CardOutlineFactory2.0.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-crlgenerator.js.html" TARGET="packageFrame">crlgenerator.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-CRTDecorator.js.html" TARGET="packageFrame">CRTDecorator.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-eccutils.js.html" TARGET="packageFrame">eccutils.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-explore.js.html" TARGET="packageFrame">explore.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-FCPDecorator.js.html" TARGET="packageFrame">FCPDecorator.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-file.js.html" TARGET="packageFrame">file.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-OutlineCore.js.html" TARGET="packageFrame">OutlineCore.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-p15classes.js.html" TARGET="packageFrame">p15classes.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-pkcs10.js.html" TARGET="packageFrame">pkcs10.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-pkcs8.js.html" TARGET="packageFrame">pkcs8.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-pkixcommon.js.html" TARGET="packageFrame">pkixcommon.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-TestGroup.js.html" TARGET="packageFrame">TestGroup.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-TestProcedure.js.html" TARGET="packageFrame">TestProcedure.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-TestRunner.js.html" TARGET="packageFrame">TestRunner.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-x509certificategenerator.js.html" TARGET="packageFrame">x509certificategenerator.js</A></FONT><BR>

<FONT CLASS="FrameItemFont"><A HREF="overview-x509name.js.html" TARGET="packageFrame">x509name.js</A></FONT><BR>

</TD>
</TR>
</TABLE>

<P>
&nbsp;
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestCaseRunner
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestCaseRunner";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKIXCommon.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestGroup.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestCaseRunner</H2>
<PRE>Object
   |
   +--<b>TestCaseRunner</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestCaseRunner</B>
   

</DL>
   
   <P>
   <BR/>Class implementing a test case harness
 <BR/><I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#selected">selected</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testCase">testCase</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testGroupRunner">testGroupRunner</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#xml">xml</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestCaseRunner()">TestCaseRunner</A></B>(testGroupRunner, testCase)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Construct a TestCaseRunner object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#actionListener">actionListener</A></B>(&lt;Object&gt; source, &lt;String&gt; actionName)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Event listener for context menu
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addLog">addLog</A></B>(&lt;String&gt; log)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Add a log entry to the test case node
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#clearResult">clearResult</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Clear result of test
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#enable">enable</A></B>(&lt;Boolean&gt; state)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Enable or disable test
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getLog">getLog</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getXML">getXML</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Return describing XML element
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#hasFailed">hasFailed</A></B>(&lt;String&gt; log)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Listener for failed notifications
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#hasPassed">hasPassed</A></B>(&lt;String&gt; log)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Listener for passed notifications
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;boolean</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#isEnabled">isEnabled</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Tell test runner if case is enabled
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#run">run</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Run this test case
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="selected"><!-- --></A>
   <H3>selected</H3>
   <PRE>Object&nbsp;<B>selected</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testCase"><!-- --></A>
   <H3>testCase</H3>
   <PRE>Object&nbsp;<B>testCase</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testGroupRunner"><!-- --></A>
   <H3>testGroupRunner</H3>
   <PRE>Object&nbsp;<B>testGroupRunner</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="xml"><!-- --></A>
   <H3>xml</H3>
   <PRE>Object&nbsp;<B>xml</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestCaseRunner()"><!-- --></A><H3>
TestCaseRunner</H3>
<PRE><B>TestCaseRunner</B>(testGroupRunner, testCase)</PRE>


<UL>
   Construct a TestCaseRunner object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  parent test group runner  
     </UL>
   
     <UL><CODE>the</CODE> -  test case name    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="actionListener"><!-- --></A>
   <H3>actionListener</H3>
   <PRE>void <B>actionListener</B>(&lt;Object&gt; source, &lt;String&gt; actionName)</PRE>
   
      <UL>Event listener for context menu</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>source</CODE> -  the outline node for which the action was invoked  
      </UL> 
   
     <UL><CODE>actionName</CODE> -  the name of the action selected    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addLog"><!-- --></A>
   <H3>addLog</H3>
   <PRE>void <B>addLog</B>(&lt;String&gt; log)</PRE>
   
      <UL>Add a log entry to the test case node</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>log</CODE> -  the test log    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="clearResult"><!-- --></A>
   <H3>clearResult</H3>
   <PRE>void <B>clearResult</B>()</PRE>
   
      <UL>Clear result of test</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="enable"><!-- --></A>
   <H3>enable</H3>
   <PRE>void <B>enable</B>(&lt;Boolean&gt; state)</PRE>
   
      <UL>Enable or disable test</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>state</CODE> -  true for enabled    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getLog"><!-- --></A>
   <H3>getLog</H3>
   <PRE>Object <B>getLog</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getXML"><!-- --></A>
   <H3>getXML</H3>
   <PRE>Object <B>getXML</B>()</PRE>
   
      <UL>Return describing XML element</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the XML element for this test case 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="hasFailed"><!-- --></A>
   <H3>hasFailed</H3>
   <PRE>void <B>hasFailed</B>(&lt;String&gt; log)</PRE>
   
      <UL>Listener for failed notifications</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>log</CODE> -  the test log    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="hasPassed"><!-- --></A>
   <H3>hasPassed</H3>
   <PRE>void <B>hasPassed</B>(&lt;String&gt; log)</PRE>
   
      <UL>Listener for passed notifications</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>log</CODE> -  the test log    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="isEnabled"><!-- --></A>
   <H3>isEnabled</H3>
   <PRE>boolean <B>isEnabled</B>()</PRE>
   
      <UL>Tell test runner if case is enabled</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        true if enabled 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="run"><!-- --></A>
   <H3>run</H3>
   <PRE>void <B>run</B>()</PRE>
   
      <UL>Run this test case</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKIXCommon.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestGroup.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestRunner
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestRunner";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestResult.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestStepRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestRunner</H2>
<PRE>Object
   |
   +--<b>TestRunner</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestRunner</B>
   

</DL>
   
   <P>
   <BR/>Class implementing a graphical test runner
 <BR/><I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#name">name</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testGroupPrototype">testGroupPrototype</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testGroupRunners">testGroupRunners</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testMapper">testMapper</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testProcedurePrototype">testProcedurePrototype</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testProcedures">testProcedures</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testReport">testReport</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestRunner()">TestRunner</A></B>(&lt;String&gt; name)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a test runner using a Smart Card Shell outline for navigation
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#actionListener">actionListener</A></B>(&lt;Object&gt; source, &lt;String&gt; actionName)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Event listener for actions selected from context menu
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addTest">addTest</A></B>(&lt;String&gt; name, &lt;Object&gt; listener)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Add test to test mapper, which maps test unique id to listening object
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addTestGroup">addTestGroup</A></B>(&lt;<a href="TestGroup.html">TestGroup</a>&gt; testGroup)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Add a test group to the test runner


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addTestGroupFromXML">addTestGroupFromXML</A></B>(&lt;String&gt; file, &lt;Object&gt; parameter)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Create test group from XML file and add to test runner
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addTestProcedure">addTestProcedure</A></B>(&lt;<a href="TestProcedure.html">TestProcedure</a>&gt; proc)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Add a test procedure constructor to the list


      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addTestProcedureFromXML">addTestProcedureFromXML</A></B>(&lt;String&gt; file, &lt;Object&gt; parameter)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Create test procedure from XML file and add to test runner
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#clearResults">clearResults</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Clear result of last test run
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#collapseAll">collapseAll</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Collapse all test groups
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#enable">enable</A></B>(&lt;String&gt; name, &lt;Boolean&gt; state)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Enable or disable test
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#expandAll">expandAll</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Expand all test groups
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getFailedCounter">getFailedCounter</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getLog">getLog</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;<a href="TestProcedure.html">TestProcedure</a></CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getTestProcedure">getTestProcedure</A></B>(&lt;String&gt; name)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Return constructor of test procedure
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#hasFailed">hasFailed</A></B>(&lt;String&gt; name, &lt;String&gt; log)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 hasFailed Listener
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#hasPassed">hasPassed</A></B>(&lt;String&gt; name, &lt;String&gt; log)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 hasPassed Listener
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;boolean</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#isEnabled">isEnabled</A></B>(&lt;String&gt; name)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 isEnabled query from TestGroup runner
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#report">report</A></B>(fn)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Write test report
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#run">run</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Run all test groups
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setReportDirectory">setReportDirectory</A></B>(&lt;String&gt; dir)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Set directory to write reports
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="name"><!-- --></A>
   <H3>name</H3>
   <PRE>Object&nbsp;<B>name</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testGroupPrototype"><!-- --></A>
   <H3>testGroupPrototype</H3>
   <PRE>Object&nbsp;<B>testGroupPrototype</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testGroupRunners"><!-- --></A>
   <H3>testGroupRunners</H3>
   <PRE>Object&nbsp;<B>testGroupRunners</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testMapper"><!-- --></A>
   <H3>testMapper</H3>
   <PRE>Object&nbsp;<B>testMapper</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testProcedurePrototype"><!-- --></A>
   <H3>testProcedurePrototype</H3>
   <PRE>Object&nbsp;<B>testProcedurePrototype</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testProcedures"><!-- --></A>
   <H3>testProcedures</H3>
   <PRE>Object&nbsp;<B>testProcedures</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testReport"><!-- --></A>
   <H3>testReport</H3>
   <PRE>Object&nbsp;<B>testReport</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestRunner()"><!-- --></A><H3>
TestRunner</H3>
<PRE><B>TestRunner</B>(&lt;String&gt; name)</PRE>


<UL>
   Create a test runner using a Smart Card Shell outline for navigation
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the test suite name
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="actionListener"><!-- --></A>
   <H3>actionListener</H3>
   <PRE>void <B>actionListener</B>(&lt;Object&gt; source, &lt;String&gt; actionName)</PRE>
   
      <UL>Event listener for actions selected from context menu</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>source</CODE> -  the outline node for which the action was invoked  
      </UL> 
   
     <UL><CODE>actionName</CODE> -  the name of the action selected    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addTest"><!-- --></A>
   <H3>addTest</H3>
   <PRE>void <B>addTest</B>(&lt;String&gt; name, &lt;Object&gt; listener)</PRE>
   
      <UL>Add test to test mapper, which maps test unique id to listening object</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the unique test name  
      </UL> 
   
     <UL><CODE>listener</CODE> -  the listener object implementing the clearResults(), enable(), isEnabled(), hasPassed() and hasFailed() methods    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addTestGroup"><!-- --></A>
   <H3>addTestGroup</H3>
   <PRE>void <B>addTestGroup</B>(&lt;<a href="TestGroup.html">TestGroup</a>&gt; testGroup)</PRE>
   
      <UL>Add a test group to the test runner

 <p>This call will iterate through all test cases and locate used procedures and steps.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>testGroup</CODE> -  the test group object    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addTestGroupFromXML"><!-- --></A>
   <H3>addTestGroupFromXML</H3>
   <PRE>void <B>addTestGroupFromXML</B>(&lt;String&gt; file, &lt;Object&gt; parameter)</PRE>
   
      <UL>Create test group from XML file and add to test runner</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>file</CODE> -  the file name containing the test group  
      </UL> 
   
     <UL><CODE>parameter</CODE> -  the parameter object    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addTestProcedure"><!-- --></A>
   <H3>addTestProcedure</H3>
   <PRE>void <B>addTestProcedure</B>(&lt;<a href="TestProcedure.html">TestProcedure</a>&gt; proc)</PRE>
   
      <UL>Add a test procedure constructor to the list

 <p>Use the getName() method to obtain the test procedure name</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>proc</CODE> -  the test procedure object    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="addTestProcedureFromXML"><!-- --></A>
   <H3>addTestProcedureFromXML</H3>
   <PRE>void <B>addTestProcedureFromXML</B>(&lt;String&gt; file, &lt;Object&gt; parameter)</PRE>
   
      <UL>Create test procedure from XML file and add to test runner</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>file</CODE> -  the file name containing the test procedure  
      </UL> 
   
     <UL><CODE>parameter</CODE> -  the parameter object    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="clearResults"><!-- --></A>
   <H3>clearResults</H3>
   <PRE>void <B>clearResults</B>()</PRE>
   
      <UL>Clear result of last test run</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="collapseAll"><!-- --></A>
   <H3>collapseAll</H3>
   <PRE>void <B>collapseAll</B>()</PRE>
   
      <UL>Collapse all test groups</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="enable"><!-- --></A>
   <H3>enable</H3>
   <PRE>Object <B>enable</B>(&lt;String&gt; name, &lt;Boolean&gt; state)</PRE>
   
      <UL>Enable or disable test</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the unique test name  
      </UL> 
   
     <UL><CODE>state</CODE> -  the enable / disable state
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="expandAll"><!-- --></A>
   <H3>expandAll</H3>
   <PRE>void <B>expandAll</B>()</PRE>
   
      <UL>Expand all test groups</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getFailedCounter"><!-- --></A>
   <H3>getFailedCounter</H3>
   <PRE>Object <B>getFailedCounter</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getLog"><!-- --></A>
   <H3>getLog</H3>
   <PRE>Object <B>getLog</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getTestProcedure"><!-- --></A>
   <H3>getTestProcedure</H3>
   <PRE><a href="TestProcedure.html">TestProcedure</a> <B>getTestProcedure</B>(&lt;String&gt; name)</PRE>
   
      <UL>Return constructor of test procedure</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the name of the test procedure  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the test procedure object 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="hasFailed"><!-- --></A>
   <H3>hasFailed</H3>
   <PRE>void <B>hasFailed</B>(&lt;String&gt; name, &lt;String&gt; log)</PRE>
   
      <UL>hasFailed Listener</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the unique test name  
      </UL> 
   
     <UL><CODE>log</CODE> -  the test log    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="hasPassed"><!-- --></A>
   <H3>hasPassed</H3>
   <PRE>void <B>hasPassed</B>(&lt;String&gt; name, &lt;String&gt; log)</PRE>
   
      <UL>hasPassed Listener</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the unique test name  
      </UL> 
   
     <UL><CODE>log</CODE> -  the test log    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="isEnabled"><!-- --></A>
   <H3>isEnabled</H3>
   <PRE>boolean <B>isEnabled</B>(&lt;String&gt; name)</PRE>
   
      <UL>isEnabled query from TestGroup runner</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the unique test name  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        true if the test is enabled 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="report"><!-- --></A>
   <H3>report</H3>
   <PRE>void <B>report</B>(fn)</PRE>
   
      <UL>Write test report</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="run"><!-- --></A>
   <H3>run</H3>
   <PRE>void <B>run</B>()</PRE>
   
      <UL>Run all test groups</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setReportDirectory"><!-- --></A>
   <H3>setReportDirectory</H3>
   <PRE>void <B>setReportDirectory</B>(&lt;String&gt; dir)</PRE>
   
      <UL>Set directory to write reports</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>dir</CODE> -  the directory to store reports    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestResult.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestStepRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="TestProcedure.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>TestProcedure.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'TestProcedure.js'<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestProcedure.html">TestProcedure</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core elements of a test procedure
 */</span>


<span class="comment">//</span>
<span class="comment">// Constructor</span>
<span class="comment">// </span>
<span class="reserved">function</span> TestProcedure(name, testgroup, parameter) {

	<span class="reserved">this</span>.name = name;
	<span class="reserved">this</span>.testgroup = testgroup;
	<span class="reserved">this</span>.parameter = parameter;
<span class="comment">//	print("TestProcedure constructor called");</span>
}



<span class="comment">//</span>
<span class="comment">// Log message to console</span>
<span class="comment">// </span>
TestProcedure.<span class="reserved">prototype</span>.log = <span class="reserved">function</span>(message) {
	<span class="reserved">this</span>.testgroup.log(message);
<span class="comment">//	print(message);</span>
}



<span class="comment">//</span>
<span class="comment">// Setup object for a test procedure</span>
<span class="comment">//</span>
TestProcedure.<span class="reserved">prototype</span>.setUp = <span class="reserved">function</span>() {
<span class="comment">//	this.log("TestProcedure.setUp() called");</span>
}



<span class="comment">//</span>
<span class="comment">// Remove residue from test procedure</span>
<span class="comment">// </span>
TestProcedure.<span class="reserved">prototype</span>.tearDown = <span class="reserved">function</span>() {
<span class="comment">//	this.log("TestProcedure.tearDown() called");</span>
}



<span class="comment">//</span>
<span class="comment">// Verify that assertion is true</span>
<span class="comment">//</span>
TestProcedure.<span class="reserved">prototype</span>.assertTrue = <span class="reserved">function</span>(result, message) {
	<span class="reserved">this</span>.testgroup.assertTrue(result, message);
}



<span class="comment">//</span>
<span class="comment">// Verify that expressions are equal</span>
<span class="comment">//</span>
TestProcedure.<span class="reserved">prototype</span>.assertEquals = <span class="reserved">function</span>(first, second, message) {
	<span class="reserved">this</span>.testgroup.assertEquals(first, second, message);
}



<span class="comment">//</span>
<span class="comment">// Run all tests in a test procedure</span>
<span class="comment">//</span>
TestProcedure.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>() {
	var steps = new Array();
	
	<span class="reserved">for</span> (f in <span class="reserved">this</span>) {
		<span class="reserved">if</span> (f.substr(0, 4) == <span class="literal">"step"</span>) {
			<span class="reserved">if</span> (<span class="reserved">this</span>[f] instanceof Function) {
				steps.push(f);
			}
		}
	}

	steps.sort();
	
	<span class="reserved">for</span> (var i = 0; i &lt; steps.length; i++) {
		var step = steps[i].substr(4);
<span class="comment">//		print("    Step " + step + " of procedure " +  this.name);</span>
		<span class="reserved">this</span>.setUp();
		<span class="reserved">this</span>[steps[i]].call(<span class="reserved">this</span>);
		<span class="reserved">this</span>.tearDown();

		var testgroup = <span class="reserved">this</span>.testgroup;
		testgroup.reportProgress(<span class="reserved">this</span>.name, step);
	}
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 crlgenerator.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" crlgenerator.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-crlgenerator.js.html" 
                                            target="classFrame">crlgenerator.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="CRLGenerator.html" TARGET="classFrame">CRLGenerator</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestResult
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestResult";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestReport.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestResult</H2>
<PRE>Object
   |
   +--<b>TestResult</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestResult</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#id">id</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#log">log</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#tcxml">tcxml</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#verdict">verdict</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestResult()">TestResult</A></B>(id, verdict, log, tcxml)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toXML">toXML</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="id"><!-- --></A>
   <H3>id</H3>
   <PRE>Object&nbsp;<B>id</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="log"><!-- --></A>
   <H3>log</H3>
   <PRE>Object&nbsp;<B>log</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="tcxml"><!-- --></A>
   <H3>tcxml</H3>
   <PRE>Object&nbsp;<B>tcxml</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="verdict"><!-- --></A>
   <H3>verdict</H3>
   <PRE>Object&nbsp;<B>verdict</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestResult()"><!-- --></A><H3>
TestResult</H3>
<PRE><B>TestResult</B>(id, verdict, log, tcxml)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="toXML"><!-- --></A>
   <H3>toXML</H3>
   <PRE>Object <B>toXML</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestReport.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestGroup
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestGroup";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestGroup.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestCaseRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestGroupRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestGroup</H2>
<PRE>Object
   |
   +--<b>TestGroup</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestGroup</B>
   

</DL>
   
   <P>
   <BR/><p>Abstract base class implementing a group of test cases.</p>
 <p>Actual test group objects are derived from this base class.</p>
 <p>Each test case is created as a method of this object.</p>
 <BR/><I>Defined in <a href='overview-summary-TestGroup.js.html'>TestGroup.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#marker">marker</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#name">name</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#parameter">parameter</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestGroup()">TestGroup</A></B>(&lt;String&gt; name, &lt;Object&gt; parameter)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a test group object containing test cases.
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#assertEquals">assertEquals</A></B>(&lt;Any&gt; first, &lt;Any&gt; second, &lt;String&gt; message)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Verify that the given values are equal.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#assertTrue">assertTrue</A></B>(&lt;Boolean&gt; result, &lt;String&gt; message)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Verify that the given assertion evaluates to true.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getName">getName</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Returns the name of test group.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Function</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getTestCase">getTestCase</A></B>(&lt;String&gt; name)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Returns a specific test case function.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String[]</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getTestCaseNames">getTestCaseNames</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Returns a list of tests as sorted array of test case names.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String[]</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getUsedTestProceduresForTestCase">getUsedTestProceduresForTestCase</A></B>(name)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Returns a list of test procedure names referenced by a test case.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#log">log</A></B>(&lt;String&gt; message)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Log a text message.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#run">run</A></B>(&lt;<a href="TestRunner.html">TestRunner</a>&gt; runner)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Runs all tests in a test group.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#runTestCase">runTestCase</A></B>(&lt;String&gt; casename, runner)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Run a single test in a test group, optionally using a test runner.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;<a href="TestProcedure.html">TestProcedure</a></CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#runTestProcedure">runTestProcedure</A></B>(&lt;String&gt; name, &lt;Object&gt; param)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Run a named test procedure.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setMarker">setMarker</A></B>(&lt;String&gt; marker)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Sets a marker used to identify a context in which an assertion failed.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setUp">setUp</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Setup method called before invoking each individual test case.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#tearDown">tearDown</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Teardown method called after invocation of a test case.
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="marker"><!-- --></A>
   <H3>marker</H3>
   <PRE>Object&nbsp;<B>marker</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="name"><!-- --></A>
   <H3>name</H3>
   <PRE>Object&nbsp;<B>name</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="parameter"><!-- --></A>
   <H3>parameter</H3>
   <PRE>Object&nbsp;<B>parameter</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestGroup()"><!-- --></A><H3>
TestGroup</H3>
<PRE><B>TestGroup</B>(&lt;String&gt; name, &lt;Object&gt; parameter)</PRE>


<UL>
   Create a test group object containing test cases.
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the name of the test group  
     </UL>
   
     <UL><CODE>parameter</CODE> -  the parameter object for this group of tests
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="assertEquals"><!-- --></A>
   <H3>assertEquals</H3>
   <PRE>void <B>assertEquals</B>(&lt;Any&gt; first, &lt;Any&gt; second, &lt;String&gt; message)</PRE>
   
      <UL>Verify that the given values are equal. Throw an exception if not.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>first</CODE> -  the first argument  
      </UL> 
   
     <UL><CODE>second</CODE> -  the second argument  
      </UL> 
   
     <UL><CODE>message</CODE> -  the message to log in case result is false    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="assertTrue"><!-- --></A>
   <H3>assertTrue</H3>
   <PRE>void <B>assertTrue</B>(&lt;Boolean&gt; result, &lt;String&gt; message)</PRE>
   
      <UL>Verify that the given assertion evaluates to true. Throw an exception if result is false.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>result</CODE> -  true if assertion is valid  
      </UL> 
   
     <UL><CODE>message</CODE> -  the message to log in case result is false    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getName"><!-- --></A>
   <H3>getName</H3>
   <PRE>String <B>getName</B>()</PRE>
   
      <UL>Returns the name of test group.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the name of the test group 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getTestCase"><!-- --></A>
   <H3>getTestCase</H3>
   <PRE>Function <B>getTestCase</B>(&lt;String&gt; name)</PRE>
   
      <UL>Returns a specific test case function.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the test case name  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the test case method 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getTestCaseNames"><!-- --></A>
   <H3>getTestCaseNames</H3>
   <PRE>String[] <B>getTestCaseNames</B>()</PRE>
   
      <UL>Returns a list of tests as sorted array of test case names.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the sorted array of test case names 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getUsedTestProceduresForTestCase"><!-- --></A>
   <H3>getUsedTestProceduresForTestCase</H3>
   <PRE>String[] <B>getUsedTestProceduresForTestCase</B>(name)</PRE>
   
      <UL>Returns a list of test procedure names referenced by a test case.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>test</CODE> -  case name  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        a list of test procedure names or undefined 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="log"><!-- --></A>
   <H3>log</H3>
   <PRE>void <B>log</B>(&lt;String&gt; message)</PRE>
   
      <UL>Log a text message.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>message</CODE> -  the message to add to the log    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="run"><!-- --></A>
   <H3>run</H3>
   <PRE>void <B>run</B>(&lt;<a href="TestRunner.html">TestRunner</a>&gt; runner)</PRE>
   
      <UL>Runs all tests in a test group.
 
 <p>This method can be used to run a test group without a test runner. In that case leave the runner
 argument empty or null.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>runner</CODE> -  the test runner to report progress or undefined or null    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="runTestCase"><!-- --></A>
   <H3>runTestCase</H3>
   <PRE>void <B>runTestCase</B>(&lt;String&gt; casename, runner)</PRE>
   
      <UL>Run a single test in a test group, optionally using a test runner.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>casename</CODE> -  the name of the test case  
      </UL> 
   
     <UL><CODE>the</CODE> -  test runner object or undefined or null    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="runTestProcedure"><!-- --></A>
   <H3>runTestProcedure</H3>
   <PRE><a href="TestProcedure.html">TestProcedure</a> <B>runTestProcedure</B>(&lt;String&gt; name, &lt;Object&gt; param)</PRE>
   
      <UL>Run a named test procedure.
 
 <p>This method is called by code in a test case to run a test procedure.</p>
 <p>This method uses the test runner to create a new instance of the test procedure object.
 All test steps in the procedure are executed and the test procedure object is returned to
 the caller for further processing of test results.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>name</CODE> -  the test procedure name  
      </UL> 
   
     <UL><CODE>param</CODE> -  the parameter object to pass to the execution of the test procedure  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the test procedure object 
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setMarker"><!-- --></A>
   <H3>setMarker</H3>
   <PRE>void <B>setMarker</B>(&lt;String&gt; marker)</PRE>
   
      <UL>Sets a marker used to identify a context in which an assertion failed.
 
 <p>A context can be a certain iteration
 or group of assertions. A marker allows to further identify the area of a problem.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>marker</CODE> -  the marker to set    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setUp"><!-- --></A>
   <H3>setUp</H3>
   <PRE>void <B>setUp</B>()</PRE>
   
      <UL>Setup method called before invoking each individual test case.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="tearDown"><!-- --></A>
   <H3>tearDown</H3>
   <PRE>void <B>tearDown</B>()</PRE>
   
      <UL>Teardown method called after invocation of a test case.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestGroup.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestCaseRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestGroupRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlineDataObject
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlineDataObject";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-CardOutlineFactory2.0.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineCard.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineDF.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlineDataObject</H2>
<PRE>Object
   |
   +--<b>OutlineDataObject</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlineDataObject</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-CardOutlineFactory2.0.js.html'>CardOutlineFactory2.0.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#df">df</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#format">format</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#id">id</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlineDataObject()">OutlineDataObject</A></B>(factory, df, id, name, format)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#expandListener">expandListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="df"><!-- --></A>
   <H3>df</H3>
   <PRE>Object&nbsp;<B>df</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="format"><!-- --></A>
   <H3>format</H3>
   <PRE>Object&nbsp;<B>format</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="id"><!-- --></A>
   <H3>id</H3>
   <PRE>Object&nbsp;<B>id</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlineDataObject()"><!-- --></A><H3>
OutlineDataObject</H3>
<PRE><B>OutlineDataObject</B>(factory, df, id, name, format)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="expandListener"><!-- --></A>
   <H3>expandListener</H3>
   <PRE>void <B>expandListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-CardOutlineFactory2.0.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineCard.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineDF.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
/* JSDoc style sheet */

/* Define colors, fonts and other style attributes here to override the defaults */

/* Page background color */
body { background-color: #FFFFFF }

/* Table colors */
.TableHeadingColor     { background: #CCCCFF } /* Dark mauve */
.TableSubHeadingColor  { background: #EEEEFF } /* Light mauve */
.TableRowColor         { background: #FFFFFF } /* White */

/* Font used in left-hand frame lists */
.FrameTitleFont   { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
.FrameHeadingFont { font-size: 10pt; font-family: Helvetica, Arial, san-serif }
.FrameItemFont    { font-size: 10pt; font-family: Helvetica, Arial, san-serif }

/* Example of smaller, sans-serif font in frames */
/* .FrameItemFont  { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */

/* Navigation bar fonts and colors */
.NavBarCell1    { background-color:#EEEEFF;}/* Light mauve */
.NavBarCell1Rev { background-color:#00008B;}/* Dark Blue */
.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}

.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}

.jsdoc_ctime    { font-family: Arial, Helvetica, sans-serif; font-size: 9pt;
                    text-align: right }

/* Sourcecode view */
.sourceview { background: #FFFFFF }
.attrib { color: #DD7777 }
.comment { color: #55AA55 }
.reserved { color: #FF5555 }
.literal { color: #5555FF }

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestReport
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestReport";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestProcedureRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestResult.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestReport</H2>
<PRE>Object
   |
   +--<b>TestReport</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestReport</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testResults">testResults</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestReport()">TestReport</A></B>()
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#addResult">addResult</A></B>(result)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#writeReport">writeReport</A></B>(filename)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="testResults"><!-- --></A>
   <H3>testResults</H3>
   <PRE>Object&nbsp;<B>testResults</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestReport()"><!-- --></A><H3>
TestReport</H3>
<PRE><B>TestReport</B>()</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="addResult"><!-- --></A>
   <H3>addResult</H3>
   <PRE>void <B>addResult</B>(result)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="writeReport"><!-- --></A>
   <H3>writeReport</H3>
   <PRE>void <B>writeReport</B>(filename)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestProcedureRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestResult.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="x509name.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>x509name.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'x509name.js'<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="X509Name.html">X509Name</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  X509Name - Class to support X500 Names
 */</span>

<span class="comment">// 	Name ::= CHOICE {</span>
<span class="comment">// 	     RDNSequence }</span>
<span class="comment">// 	</span>
<span class="comment">// 	RDNSequence ::= SEQUENCE OF RelativeDistinguishedName</span>
<span class="comment">// 	</span>
<span class="comment">// 	RelativeDistinguishedName ::=</span>
<span class="comment">// 		SET OF AttributeTypeAndValue</span>
<span class="comment">// 	</span>
<span class="comment">// 	AttributeTypeAndValue ::= SEQUENCE {</span>
<span class="comment">// 		type     AttributeType,</span>
<span class="comment">// 		value    AttributeValue }</span>
<span class="comment">// 	</span>
<span class="comment">// 	AttributeType ::= OBJECT IDENTIFIER</span>
<span class="comment">// 	</span>
<span class="comment">// 	AttributeValue ::= ANY DEFINED BY AttributeType</span>
   
   
<span class="reserved">function</span> X509Name() {

	<span class="reserved">if</span> (arguments.length == 1) {
		<span class="reserved">if</span> (arguments[0] instanceof ASN1) {
			var seq = arguments[0];
			<span class="reserved">if</span> (!seq.isconstructed) {
				throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_DATA, 1, <span class="literal">"Name must be constructed"</span>);
			}

			var seq = seq.get(0);
			<span class="reserved">if</span> (seq.tag != ASN1.SEQUENCE) {
				throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_DATA, 1, <span class="literal">"RDNSequence must be SEQUENCE"</span>);
			}
			
			<span class="reserved">this</span>.rdn = new Array();
			<span class="reserved">for</span> (var i = 0; i &lt; seq.elements; i++) {
				var set = seq.get(i)
<span class="comment">//				print("RDN" + i + ": " + set);</span>
				<span class="reserved">if</span> (set.tag != ASN1.SET) {
					throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_DATA, 1, <span class="literal">"RDNSequence must only contain SETs"</span>);
				}
				<span class="reserved">for</span> (var j = 0; j &lt; set.elements; j++) {
					var attr = set.get(j);
					<span class="reserved">if</span> (attr.tag != ASN1.SEQUENCE) {
						throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_DATA, 1, <span class="literal">"AttributeTypeAndValue must be SEQUENCE"</span>);
					}
					<span class="reserved">if</span> (attr.elements != 2) {
						throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_DATA, 1, <span class="literal">"AttributeTypeAndValue must have 2 elements"</span>);
					}
					var attrType = attr.get(0);
					<span class="reserved">if</span> (attrType.tag != ASN1.OBJECT_IDENTIFIER) {
						throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_DATA, 1, <span class="literal">"AttributeType must be OBJECT IDENTIFIER"</span>);
					}
					var oid = attrType.value.toString(HEX);
					var attrValue = attr.get(1);
<span class="comment">//					print("Type " + oid + " = " + attrValue);</span>
					<span class="reserved">this</span>.rdn[oid] = attrValue;
				}
			}
		} <span class="reserved">else</span> {
			throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_TYPE, 1, <span class="literal">"Argument must be of type ASN1"</span>);
		}			
	}
}



<span class="reserved">function</span> X509Name_hasRDN(oid) {
	<span class="reserved">return</span> <span class="reserved">this</span>.rdn[oid] != undefined;
}



<span class="reserved">function</span> X509Name_getRDNAsString(oid) {

	var r = <span class="reserved">this</span>.rdn[oid];
	<span class="reserved">if</span> (r == undefined) {
		throw new GPError(<span class="literal">"X509Name"</span>, GPError.INVALID_INDEX,0,<span class="literal">"No matching RDN found"</span>);
	}
	
	<span class="reserved">if</span> (r.tag == ASN1.UTF8String) {
		<span class="reserved">return</span> r.value.toString(UTF8);
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> r.value.toString(ASCII);
	}
}



<span class="reserved">function</span> X509Name_toString() {
	var result = <span class="literal">""</span>;
	
	<span class="reserved">if</span> (<span class="reserved">this</span>.hasRDN(X509Name.commonName)) {
		result += <span class="literal">"CN="</span> + <span class="reserved">this</span>.getRDNAsString(X509Name.commonName);
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.hasRDN(X509Name.organizationalUnitName)) {
		<span class="reserved">if</span> (result.length &gt; 0)
			result += <span class="literal">","</span>;
			
		result += <span class="literal">"OU="</span> + <span class="reserved">this</span>.getRDNAsString(X509Name.organizationalUnitName);
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.hasRDN(X509Name.organizationName)) {
		<span class="reserved">if</span> (result.length &gt; 0)
			result += <span class="literal">","</span>;
			
		result += <span class="literal">"O="</span> + <span class="reserved">this</span>.getRDNAsString(X509Name.organizationName);
	}

	<span class="reserved">if</span> (<span class="reserved">this</span>.hasRDN(X509Name.countryName)) {
		<span class="reserved">if</span> (result.length &gt; 0)
			result += <span class="literal">","</span>;
			
		result += <span class="literal">"C="</span> + <span class="reserved">this</span>.getRDNAsString(X509Name.countryName);
	}

	<span class="reserved">return</span> result;	
}


X509Name.name = <span class="literal">"550429"</span>;
X509Name.surname = <span class="literal">"550404"</span>;
X509Name.givenname = <span class="literal">"55042A"</span>;
X509Name.initials = <span class="literal">"55042B"</span>;
X509Name.generationQualifier = <span class="literal">"55042C"</span>;
X509Name.commonName = <span class="literal">"550403"</span>;
X509Name.localityName = <span class="literal">"550407"</span>;
X509Name.stateOrProvinceName = <span class="literal">"550408"</span>;
X509Name.organizationName = <span class="literal">"55040A"</span>;
X509Name.organizationalUnitName = <span class="literal">"55040B"</span>;
X509Name.title = <span class="literal">"55040C"</span>;
X509Name.dnQualifier = <span class="literal">"55042C"</span>;
X509Name.countryName = <span class="literal">"550406"</span>;
X509Name.serialNumber = <span class="literal">"550405"</span>;
X509Name.emailAddress = <span class="literal">"2A864886F70D010901"</span>;

X509Name.<span class="reserved">prototype</span>.toString = X509Name_toString;
X509Name.<span class="reserved">prototype</span>.getRDNAsString = X509Name_getRDNAsString;
X509Name.<span class="reserved">prototype</span>.hasRDN = X509Name_hasRDN;


</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlineFCP
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlineFCP";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineEF.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlinePKCS15.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlineFCP</H2>
<PRE>Object
   |
   +--<b>OutlineFCP</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlineFCP</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-OutlineCore.js.html'>OutlineCore.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#fcp">fcp</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlineFCP()">OutlineFCP</A></B>(fcp)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="fcp"><!-- --></A>
   <H3>fcp</H3>
   <PRE>Object&nbsp;<B>fcp</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlineFCP()"><!-- --></A><H3>
OutlineFCP</H3>
<PRE><B>OutlineFCP</B>(fcp)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineEF.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlinePKCS15.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestGroupRunner
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestGroupRunner";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestGroup.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestLogFile.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestGroupRunner</H2>
<PRE>Object
   |
   +--<b>TestGroupRunner</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestGroupRunner</B>
   

</DL>
   
   <P>
   <BR/>Class implementing a harness to run test groups
 <BR/><I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testGroup">testGroup</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testRunner">testRunner</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestGroupRunner()">TestGroupRunner</A></B>(&lt;<a href="TestRunner.html">TestRunner</a>&gt; testRunner, testGroup)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a TestGroupRunner containing the TestCases
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#actionListener">actionListener</A></B>(&lt;Object&gt; source, action)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Event listener for context menu
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#run">run</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Run this test group
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="testGroup"><!-- --></A>
   <H3>testGroup</H3>
   <PRE>Object&nbsp;<B>testGroup</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testRunner"><!-- --></A>
   <H3>testRunner</H3>
   <PRE>Object&nbsp;<B>testRunner</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestGroupRunner()"><!-- --></A><H3>
TestGroupRunner</H3>
<PRE><B>TestGroupRunner</B>(&lt;<a href="TestRunner.html">TestRunner</a>&gt; testRunner, testGroup)</PRE>


<UL>
   Create a TestGroupRunner containing the TestCases
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>testRunner</CODE> -  the associated test runner  
     </UL>
   
     <UL><CODE>TestGroup</CODE> - = testGroup the test group    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="actionListener"><!-- --></A>
   <H3>actionListener</H3>
   <PRE>void <B>actionListener</B>(&lt;Object&gt; source, action)</PRE>
   
      <UL>Event listener for context menu</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>source</CODE> -  the outline node for which the action was invoked  
      </UL> 
   
     <UL><CODE>actionName</CODE> -  the name of the action selected    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="run"><!-- --></A>
   <H3>run</H3>
   <PRE>void <B>run</B>()</PRE>
   
      <UL>Run this test group</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestGroup.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestLogFile.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestStepRunner
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestStepRunner";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="X509CertificateGenerator.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestStepRunner</H2>
<PRE>Object
   |
   +--<b>TestStepRunner</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestStepRunner</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testProcedureRunner">testProcedureRunner</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testStep">testStep</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestStepRunner()">TestStepRunner</A></B>(testProcedureRunner, testStep)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#clearResult">clearResult</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#hasPassed">hasPassed</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="testProcedureRunner"><!-- --></A>
   <H3>testProcedureRunner</H3>
   <PRE>Object&nbsp;<B>testProcedureRunner</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testStep"><!-- --></A>
   <H3>testStep</H3>
   <PRE>Object&nbsp;<B>testStep</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestStepRunner()"><!-- --></A><H3>
TestStepRunner</H3>
<PRE><B>TestStepRunner</B>(testProcedureRunner, testStep)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="clearResult"><!-- --></A>
   <H3>clearResult</H3>
   <PRE>void <B>clearResult</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="hasPassed"><!-- --></A>
   <H3>hasPassed</H3>
   <PRE>void <B>hasPassed</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="X509CertificateGenerator.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>
Generated Javascript Documentation 
</TITLE>
</HEAD>
<FRAMESET cols="20%,80%">

<FRAMESET rows="40%,50%">
<FRAME src="overview-frame.html" name="overviewFrame">

<FRAME src="allclasses-frame.html" name="packageFrame">

</FRAMESET>

<FRAME src="overview-summary.html" name="classFrame">
</FRAMESET>
<NOFRAMES>
<H2>
Frame Alert</H2>

<P>
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
<BR>
Link to <A HREF="allclasses-frame.html">Non-frame version.</A></NOFRAMES>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="TestRunner.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>TestRunner.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		Test runner framework<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestCaseRunner.html">TestCaseRunner</a></b></td>
    <td>Class implementing a test case harness
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestGroupRunner.html">TestGroupRunner</a></b></td>
    <td>Class implementing a harness to run test groups
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestLogFile.html">TestLogFile</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestProcedureRunner.html">TestProcedureRunner</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestReport.html">TestReport</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestResult.html">TestResult</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestRunner.html">TestRunner</a></b></td>
    <td>Class implementing a graphical test runner
 </td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestStepRunner.html">TestStepRunner</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span> Test runner framework
 */</span>



<span class="comment">/**
 * Create a test runner using a Smart Card Shell outline for navigation
 *
 * <span class="attrib">@class</span> Class implementing a graphical test runner
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {String} name the test suite name
 */</span>
<span class="reserved">function</span> TestRunner(name) {

	<span class="reserved">this</span>.name = name;
	<span class="reserved">this</span>.testGroupRunners = new Array();
	<span class="reserved">this</span>.testProcedures = new Array();
	<span class="reserved">this</span>.testMapper = new Array();
	<span class="reserved">this</span>.testGroupPrototype = new TestGroup();
	<span class="reserved">this</span>.testProcedurePrototype = new TestProcedure();
	<span class="reserved">this</span>.testReport = new TestReport();
	
	<span class="comment">// Create root node and set as view</span>
	var view = new OutlineNode(name, true);
	<span class="reserved">if</span> (typeof(view.expand) == <span class="literal">"function"</span>) {
		view.setContextMenu([<span class="literal">"run"</span>, <span class="literal">"clear"</span>, <span class="literal">"report"</span>, <span class="literal">"expand"</span>, <span class="literal">"collapse"</span>]);
	} <span class="reserved">else</span> {
		view.setContextMenu([<span class="literal">"run"</span>, <span class="literal">"clear"</span>, <span class="literal">"report"</span>]);
	}
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;

	view.show();
}



<span class="comment">/**
 * Set directory to write reports
 *
 * <span class="attrib">@param</span> {String} dir the directory to store reports
 */</span>
TestRunner.<span class="reserved">prototype</span>.setReportDirectory = <span class="reserved">function</span>(dir) {
	<span class="reserved">this</span>.reportDir = dir;
}



<span class="comment">/**
 * Event listener for actions selected from context menu
 *
 * <span class="attrib">@param</span> {Object} source the outline node for which the action was invoked
 * <span class="attrib">@param</span> {String} actionName the name of the action selected
 */</span>
TestRunner.<span class="reserved">prototype</span>.actionListener = <span class="reserved">function</span>(source, actionName) {
	switch(actionName) {
	case <span class="literal">"run"</span> :
		<span class="reserved">this</span>.run();
		break;
	case <span class="literal">"clear"</span> :
		<span class="reserved">this</span>.clearResults();
		break;
	case <span class="literal">"report"</span> :
		<span class="reserved">this</span>.report();
		break;
	case <span class="literal">"expand"</span> :
		<span class="reserved">this</span>.expandAll();
		break;
	case <span class="literal">"collapse"</span> :
		<span class="reserved">this</span>.collapseAll();
		break;
	}
}



<span class="comment">/**
 * Expand all test groups
 */</span>
TestRunner.<span class="reserved">prototype</span>.expandAll = <span class="reserved">function</span>() {
	<span class="reserved">for</span> each (c in <span class="reserved">this</span>.view.childs) {
		c.expand();
	}
}



<span class="comment">/**
 * Collapse all test groups
 */</span>
TestRunner.<span class="reserved">prototype</span>.collapseAll = <span class="reserved">function</span>() {
	<span class="reserved">for</span> each (c in <span class="reserved">this</span>.view.childs) {
		c.collapse();
	}
}



<span class="comment">/**
 * Write test report
 */</span>
TestRunner.<span class="reserved">prototype</span>.report = <span class="reserved">function</span>() {
	var fn = GPSystem.dateTimeByteString().toString(HEX) + <span class="literal">"_TestReport.xml"</span>;
	<span class="reserved">if</span> (<span class="reserved">this</span>.reportDir == undefined) {
		var fn = GPSystem.mapFilename(fn, GPSystem.USR);
	} <span class="reserved">else</span> {
		var fn = <span class="reserved">this</span>.reportDir + <span class="literal">"/"</span> + fn;
	}
	var fn = Dialog.prompt(<span class="literal">"Select output file for report"</span>, fn, null, <span class="literal">"*.xml"</span>);
	<span class="reserved">if</span> (fn != null) {
		<span class="reserved">this</span>.testReport.writeReport(fn);
		print(<span class="literal">"Report written to "</span> + fn);
	}
}



<span class="comment">/**
 * Add a test group to the test runner
 *
 * &lt;p&gt;This call will iterate through all test cases and locate used procedures and steps.&lt;/p&gt;
 *
 * <span class="attrib">@param</span> {TestGroup} testGroup the test group object
 */</span>
TestRunner.<span class="reserved">prototype</span>.addTestGroup = <span class="reserved">function</span>(testGroup) {
	var tgrs = <span class="reserved">this</span>.testGroupRunners;
	
	tgr = new TestGroupRunner(<span class="reserved">this</span>, testGroup);

	tgrs.push(tgr);

	var view = <span class="reserved">this</span>.view;	
	view.insert(tgr.view);
}



<span class="comment">/**
 * Create test group from XML file and add to test runner
 *
 * <span class="attrib">@param</span> {String} file the file name containing the test group
 * <span class="attrib">@param</span> {Object} parameter the parameter object
 */</span>
TestRunner.<span class="reserved">prototype</span>.addTestGroupFromXML = <span class="reserved">function</span> (file, parameter) {
	<span class="comment">// Parse XML file.</span>
	var parser = new GPXML();
	parser.defineArrayElement(<span class="literal">"/testgroup"</span>, <span class="literal">"testcase,function"</span>, <span class="literal">"id,Name"</span>);
	parser.defineArrayElement(<span class="literal">"/testgroup/testcase/procedures"</span>, <span class="literal">"procedure"</span>);
	var xml = parser.parse(file);

	<span class="comment">// Determine CTOR function</span>
	var ctor = xml.constructor.Script;
	<span class="reserved">if</span> (!ctor) {
		<span class="comment">// Use a default constructor unless defined in XML profile</span>
		ctor = <span class="reserved">function</span>(name, parameter) { TestGroup.call(<span class="reserved">this</span>, name, parameter); };
	}
	
	<span class="comment">// Make CTOR available in scope object</span>
	<span class="comment">// this[xml.id] = ctor;</span>
	
	<span class="comment">// Set correct prototype object</span>
	ctor.<span class="reserved">prototype</span> = new TestGroup();
	ctor.<span class="reserved">prototype</span>.constructor = ctor;
	ctor.<span class="reserved">prototype</span>.usedProcedures = new Array();
	
	<span class="comment">// Add test cases to prototype object</span>
	var testcases = xml.testcase;
	<span class="reserved">for</span> (var i in testcases) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = testcases[i].Script;
			s.XML = testcases[i];
			ctor.<span class="reserved">prototype</span>[<span class="literal">"case"</span> + i] = s;
			<span class="reserved">if</span> (testcases[i].procedures) {
				var procedures = testcases[i].procedures.procedure;
				ctor.<span class="reserved">prototype</span>.usedProcedures[i] = new Array();
				
				<span class="reserved">for</span> (var p = 0; p &lt; procedures.length; p++) {
					ctor.<span class="reserved">prototype</span>.usedProcedures[i].push(procedures[p].id);
				}
			}
		}
	}
	
	<span class="comment">// Add setup function to prototype object</span>
	<span class="reserved">if</span> (xml.setup) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"setUp"</span>] = xml.setup.Script;
	}
	
	<span class="comment">// Add teardown function to prototype object</span>
	<span class="reserved">if</span> (xml.teardown) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"tearDown"</span>] = xml.teardown.Script;
	}
	
	<span class="comment">// Add functions to prototype object</span>
	var functions = xml[<span class="literal">"function"</span>];
	<span class="reserved">for</span> (var i in functions) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = functions[i].Script;
			ctor.<span class="reserved">prototype</span>[i] = s;
		}
	}
	
	ctor.XML = xml;
	
	var tc = new ctor(xml.id, parameter);
	
	<span class="reserved">this</span>.addTestGroup(tc);
}



<span class="comment">/**
 * Add a test procedure constructor to the list
 *
 * &lt;p&gt;Use the getName() method to obtain the test procedure name&lt;/p&gt;
 *
 * <span class="attrib">@param</span> {TestProcedure} proc the test procedure object
 */</span>
TestRunner.<span class="reserved">prototype</span>.addTestProcedure = <span class="reserved">function</span>(proc) {
	var name = proc.getName();
	<span class="reserved">if</span> (name) {
		<span class="reserved">this</span>.testProcedures[name] = proc;
	}
}



<span class="comment">/**
 * Create test procedure from XML file and add to test runner
 *
 * <span class="attrib">@param</span> {String} file the file name containing the test procedure
 * <span class="attrib">@param</span> {Object} parameter the parameter object
 */</span>
TestRunner.<span class="reserved">prototype</span>.addTestProcedureFromXML = <span class="reserved">function</span> (file, parameter) {
	<span class="comment">// Parse XML file.</span>
	var parser = new GPXML();
	parser.defineArrayElement(<span class="literal">"/testprocedure"</span>, <span class="literal">"teststep,function"</span>, <span class="literal">"id,Name"</span>);
	var xml = parser.parse(file);

	<span class="comment">// Determine CTOR function</span>
	var ctor = xml.constructor.Script;
	<span class="reserved">if</span> (!ctor) {
		<span class="comment">// Use a default constructor unless defined in XML profile</span>
		ctor = <span class="reserved">function</span>(testgroup, name, parameter) { TestProcedure.call(<span class="reserved">this</span>, testgroup, name, parameter); };
	}

	<span class="comment">// Make CTOR available in scope object</span>
	<span class="comment">// this[xml.id] = ctor;</span>
	
	<span class="comment">// Set correct prototype object</span>
	ctor.<span class="reserved">prototype</span> = new TestProcedure();
	ctor.<span class="reserved">prototype</span>.constructor = ctor;
	var teststeps = xml.teststep;
	<span class="reserved">for</span> (var i in teststeps) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = teststeps[i].Script;
			ctor.<span class="reserved">prototype</span>[<span class="literal">"step"</span> + i] = s;
		}
	}
	<span class="reserved">if</span> (xml.setup) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"setUp"</span>] = xml.setup.Script;
	}
	<span class="reserved">if</span> (xml.teardown) {
		ctor.<span class="reserved">prototype</span>[<span class="literal">"tearDown"</span>] = xml.teardown.Script;
	}
	
	<span class="comment">// Add functions to prototype object</span>
	var functions = xml[<span class="literal">"function"</span>];
	<span class="reserved">for</span> (var i in functions) {
		<span class="reserved">if</span> (i != <span class="literal">"arrayIndex"</span>) {
			var s = functions[i].Script;
			ctor.<span class="reserved">prototype</span>[i] = s;
		}
	}

	ctor.XML = xml;
	ctor.getName = <span class="reserved">function</span>() { <span class="reserved">return</span> xml.id; };	

	<span class="reserved">this</span>.testProcedures[xml.id] = ctor;
}



<span class="comment">/**
 * Return constructor of test procedure
 *
 * <span class="attrib">@param</span> {String} name the name of the test procedure
 * <span class="attrib">@type</span> TestProcedure
 * <span class="attrib">@return</span> the test procedure object
 */</span>
TestRunner.<span class="reserved">prototype</span>.getTestProcedure = <span class="reserved">function</span>(name) {
	<span class="reserved">return</span> <span class="reserved">this</span>.testProcedures[name];
}



<span class="comment">/**
 * Add test to test mapper, which maps test unique id to listening object
 *
 * <span class="attrib">@param</span> {String} name the unique test name
 * <span class="attrib">@param</span> {Object} listener the listener object implementing the clearResults(), enable(), isEnabled(), hasPassed() and hasFailed() methods
 */</span>
TestRunner.<span class="reserved">prototype</span>.addTest = <span class="reserved">function</span>(name, listener) {
	<span class="reserved">this</span>.testMapper[name] = listener;
}



<span class="comment">/**
 * Run all test groups
 */</span>
TestRunner.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>() {
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.testGroupRunners.length; i++) {
		var testGroupRunner = <span class="reserved">this</span>.testGroupRunners[i];
		testGroupRunner.run();
	}
}



<span class="comment">/** 
 * Clear result of last test run
 */</span>
TestRunner.<span class="reserved">prototype</span>.clearResults = <span class="reserved">function</span>() {
	<span class="reserved">for</span> (var i in <span class="reserved">this</span>.testMapper) {
		var listener = <span class="reserved">this</span>.testMapper[i];
		<span class="reserved">if</span> (listener) {
			listener.clearResult();
		}
	}
	<span class="reserved">this</span>.testReport = new TestReport();
}



<span class="comment">/**
 * Enable or disable test
 *
 * <span class="attrib">@param</span> {String} name the unique test name
 * <span class="attrib">@param</span> {Boolean} state the enable / disable state
 */</span>
TestRunner.<span class="reserved">prototype</span>.enable = <span class="reserved">function</span>(name, state) {
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener &amp;&amp; listener.enable) {
		<span class="reserved">return</span> listener.enable(state);
	} <span class="reserved">else</span> {
		throw new GPError(<span class="literal">"TestRunner"</span>, GPError.OBJECT_NOT_FOUND, 0, name);
	}
}



<span class="comment">/**
 * isEnabled query from TestGroup runner
 *
 * <span class="attrib">@param</span> {String} name the unique test name
 * <span class="attrib">@type</span> boolean
 * <span class="attrib">@return</span> true if the test is enabled
 */</span>
TestRunner.<span class="reserved">prototype</span>.isEnabled = <span class="reserved">function</span>(name) {
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener) {
		<span class="reserved">return</span> listener.isEnabled();
	}
	<span class="reserved">return</span> true;
}



<span class="comment">/**
 * hasPassed Listener
 * 
 * <span class="attrib">@param</span> {String} name the unique test name
 * <span class="attrib">@param</span> {String} log the test log
 */</span>
TestRunner.<span class="reserved">prototype</span>.hasPassed = <span class="reserved">function</span>(name, log) {
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener) {
		listener.hasPassed(log);
		
		<span class="reserved">if</span> (listener.getXML) {
			var result = new TestResult(name, true, log, listener.getXML());
			<span class="reserved">this</span>.testReport.addResult(result);
		}
	} <span class="reserved">else</span> {
		print(<span class="literal">"No receiver for passed notification : "</span> + name);
		<span class="reserved">for</span> (var i in <span class="reserved">this</span>.testMapper) {
			print(<span class="literal">"- "</span> + i);
		}
	}
}



<span class="comment">/**
 * hasFailed Listener
 * 
 * <span class="attrib">@param</span> {String} name the unique test name
 * <span class="attrib">@param</span> {String} log the test log
 */</span>
TestRunner.<span class="reserved">prototype</span>.hasFailed = <span class="reserved">function</span>(name, log) {
	var listener = <span class="reserved">this</span>.testMapper[name];
	<span class="reserved">if</span> (listener) {
		listener.hasFailed(log);
		<span class="reserved">if</span> (listener.getXML) {
			var result = new TestResult(name, false, log, listener.getXML());
			<span class="reserved">this</span>.testReport.addResult(result);
		}
	}
}



<span class="comment">/**
 * Create a TestGroupRunner containing the TestCases
 *
 * <span class="attrib">@class</span> Class implementing a harness to run test groups
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {TestRunner} testRunner the associated test runner
 * <span class="attrib">@param</span> {TestGroup= testGroup the test group
 */</span>
<span class="reserved">function</span> TestGroupRunner(testRunner, testGroup) {
	<span class="reserved">this</span>.testRunner = testRunner;
	<span class="reserved">this</span>.testGroup = testGroup;
	
	var view = new OutlineNode(testGroup.getName());
	view.setContextMenu([<span class="literal">"run"</span>]);
	view.setUserObject(<span class="reserved">this</span>);
	
	<span class="reserved">this</span>.view = view;

	var testcases = testGroup.getTestCaseNames();
	
	<span class="reserved">for</span> (var i = 0; i &lt; testcases.length; i++) {
		var tcr = new TestCaseRunner(<span class="reserved">this</span>, testcases[i]);
		view.insert(tcr.view);
	}
}



<span class="comment">/**
 * Event listener for context menu
 *
 * <span class="attrib">@param</span> {Object} source the outline node for which the action was invoked
 * <span class="attrib">@param</span> {String} actionName the name of the action selected
 */</span>
TestGroupRunner.<span class="reserved">prototype</span>.actionListener = <span class="reserved">function</span>(source, action) {
	switch(action) {
	case <span class="literal">"run"</span> : 
		<span class="reserved">this</span>.run();
		break;
	}
}



<span class="comment">/**
 * Run this test group
 */</span>
TestGroupRunner.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>() {
	var test = <span class="reserved">this</span>.testGroup;
	
	test.run(<span class="reserved">this</span>.testRunner);
}




<span class="comment">/**
 * Construct a TestCaseRunner object
 *
 * <span class="attrib">@class</span> Class implementing a test case harness
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {TestGroupRunner} the parent test group runner
 * <span class="attrib">@param</span> {String} the test case name
 */</span>
<span class="reserved">function</span> TestCaseRunner(testGroupRunner, testCase) {
	<span class="reserved">this</span>.testGroupRunner = testGroupRunner;
	<span class="reserved">this</span>.testCase = testCase;
	<span class="reserved">this</span>.selected = true;

	var testRunner = testGroupRunner.testRunner;
	testRunner.addTest(testGroupRunner.testGroup.getName() + <span class="literal">"/"</span> + testCase, <span class="reserved">this</span>);

	<span class="reserved">this</span>.xml = testGroupRunner.testGroup.getTestCase(testCase).XML;

	var view = new OutlineNode(testCase + <span class="literal">" "</span> + <span class="reserved">this</span>.xml.name.elementValue);

	view.setUserObject(<span class="reserved">this</span>);
	view.setIcon(<span class="literal">"selected"</span>);
	view.setContextMenu([<span class="literal">"select"</span>, <span class="literal">"deselect"</span>, <span class="literal">"run"</span>]);
	<span class="reserved">this</span>.view = view;

	var testGroup = testGroupRunner.testGroup;

	var testprocedures = testGroup.getUsedTestProceduresForTestCase(testCase);

	<span class="reserved">if</span> (testprocedures) {
		<span class="reserved">for</span> (var i = 0; i &lt; testprocedures.length; i++) {
			var tpr = new TestProcedureRunner(<span class="reserved">this</span>, testprocedures[i]);
			view.insert(tpr.view);
		}
	}
}



<span class="comment">/**
 * Event listener for context menu
 *
 * <span class="attrib">@param</span> {Object} source the outline node for which the action was invoked
 * <span class="attrib">@param</span> {String} actionName the name of the action selected
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.actionListener = <span class="reserved">function</span>(source, actionName) {
	print(<span class="literal">"Action "</span> + actionName);
	switch(actionName) {
	case <span class="literal">"select"</span>:
		<span class="reserved">this</span>.selected = true;
		source.setIcon(<span class="literal">"selected"</span>);
		break;
	case <span class="literal">"deselect"</span>:
		<span class="reserved">this</span>.selected = false;
		source.setIcon(<span class="literal">"deselected"</span>);
		break;
	case <span class="literal">"run"</span>:
		<span class="reserved">this</span>.run();
		break;
	}
}



<span class="comment">/**
 * Run this test case
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>() {
	var test = <span class="reserved">this</span>.testGroupRunner.testGroup;
	
	test.runTestCase(<span class="reserved">this</span>.testCase, <span class="reserved">this</span>.testGroupRunner.testRunner);
}



<span class="comment">/**
 * Tell test runner if case is enabled
 *
 * <span class="attrib">@type</span> boolean
 * <span class="attrib">@return</span> true if enabled
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.isEnabled = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.selected;
}



<span class="comment">/**
 * Add a log entry to the test case node
 *
 * <span class="attrib">@param</span> {String} log the test log
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.addLog = <span class="reserved">function</span>(log) {
	var view = <span class="reserved">this</span>.view;
	var lognode = new TestLogFile(<span class="reserved">this</span>, log);
	<span class="reserved">this</span>.log = lognode;
	view.insert(lognode.view);
}



<span class="comment">/**
 * Return describing XML element
 *
 * <span class="attrib">@type</span> Object
 * <span class="attrib">@return</span> the XML element for this test case
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.getXML = <span class="reserved">function</span>() {
	<span class="reserved">return</span> <span class="reserved">this</span>.xml;
}



<span class="comment">/**
 * Listener for passed notifications
 *
 * <span class="attrib">@param</span> {String} log the test log
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.hasPassed = <span class="reserved">function</span>(log) {
	<span class="reserved">this</span>.failed = false;
	var view = <span class="reserved">this</span>.view;
	view.setIcon(<span class="literal">"passed"</span>);
	<span class="reserved">this</span>.addLog(log);
}



<span class="comment">/**
 * Listener for failed notifications
 *
 * <span class="attrib">@param</span> {String} log the test log
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.hasFailed = <span class="reserved">function</span>(log) {
	<span class="reserved">this</span>.failed = true;
	var view = <span class="reserved">this</span>.view;
	view.setIcon(<span class="literal">"failed"</span>);
	<span class="reserved">this</span>.addLog(log);
}



<span class="comment">/**
 * Clear result of test
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.clearResult = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.failed = false;
	var view = <span class="reserved">this</span>.view;
	<span class="reserved">if</span> (<span class="reserved">this</span>.selected) {
		view.setIcon(<span class="literal">"selected"</span>);
	} <span class="reserved">else</span> {
		view.setIcon(<span class="literal">"deselected"</span>);
	}
}



<span class="comment">/**
 * Enable or disable test
 *
 * <span class="attrib">@param</span> {Boolean} state true for enabled
 */</span>
TestCaseRunner.<span class="reserved">prototype</span>.enable = <span class="reserved">function</span>(state) {
	var view = <span class="reserved">this</span>.view;
	<span class="reserved">this</span>.selected = state;
	<span class="reserved">if</span> (<span class="reserved">this</span>.selected) {
		view.setIcon(<span class="literal">"selected"</span>);
	} <span class="reserved">else</span> {
		view.setIcon(<span class="literal">"deselected"</span>);
	}
}




<span class="comment">/**
 * Constructor for test log entry in outline
 */</span>
<span class="reserved">function</span> TestLogFile(parent, log) {
	<span class="reserved">this</span>.log = log;
	
	var view = new OutlineNode(<span class="literal">"Log from "</span> + Date());
	<span class="reserved">this</span>.view = view;
	view.setUserObject(<span class="reserved">this</span>);
}



<span class="comment">//</span>
<span class="comment">// Listener for node selection - Display log</span>
<span class="comment">//</span>
TestLogFile.<span class="reserved">prototype</span>.selectedListener = <span class="reserved">function</span>() {
	print(<span class="literal">"--------------------------------------------------------------------------------"</span>);
	print(<span class="reserved">this</span>.log);
}



<span class="comment">// --------------------------------------------</span>
<span class="comment">// Constructor for a TestProcedureRunner object</span>
<span class="comment">//</span>
<span class="reserved">function</span> TestProcedureRunner(testCaseRunner, testProcedure) {
	<span class="reserved">this</span>.testCaseRunner = testCaseRunner;
	<span class="reserved">this</span>.testProcedure = testProcedure;
	
	var view = new OutlineNode(testProcedure);
	<span class="reserved">this</span>.view = view;

	var tp = <span class="reserved">this</span>.testCaseRunner.testGroupRunner.testRunner.testProcedures[testProcedure];

	<span class="reserved">if</span> (tp) {
		var list = new Array();
		<span class="reserved">for</span> (var i in tp.<span class="reserved">prototype</span>) {
			<span class="reserved">if</span> (i.substr(0, 4) == <span class="literal">"step"</span>) {
				var step = i.substr(4);
				list.push(step);
			}
		}

		list.sort();
		
		<span class="reserved">for</span> (var i = 0; i &lt; list.length; i++) {
			var tpsr = new TestStepRunner(<span class="reserved">this</span>, list[i]);
			view.insert(tpsr.view);
		}
	} <span class="reserved">else</span> {
		print(<span class="literal">"No test procedure implementation found for "</span> + testProcedure);
	}
}




<span class="comment">// ---------------------------------------</span>
<span class="comment">// Constructor for a TestStepRunner object</span>
<span class="comment">//</span>
<span class="reserved">function</span> TestStepRunner(testProcedureRunner, testStep) {
	<span class="reserved">this</span>.testProcedureRunner = testProcedureRunner;
	<span class="reserved">this</span>.testStep = testStep;
	
	var view = new OutlineNode(testStep);
	<span class="reserved">this</span>.view = view;

	var testCaseRunner = testProcedureRunner.testCaseRunner;	
	var testGroupRunner = testCaseRunner.testGroupRunner;
	var testRunner = testGroupRunner.testRunner;
	var testName = testGroupRunner.testGroup.getName() + <span class="literal">"/"</span> + 
	               testCaseRunner.testCase + <span class="literal">"/"</span> + 
	               testProcedureRunner.testProcedure + <span class="literal">"/"</span> +
	               testStep;
	               
	testRunner.addTest(testName, <span class="reserved">this</span>);
}



<span class="comment">//</span>
<span class="comment">// Receive passed notifications</span>
<span class="comment">//</span>
TestStepRunner.<span class="reserved">prototype</span>.hasPassed = <span class="reserved">function</span>() {
	var view = <span class="reserved">this</span>.view;
	view.setIcon(<span class="literal">"passed"</span>);
}



<span class="comment">//</span>
<span class="comment">// Clear test result display</span>
<span class="comment">//</span>
TestStepRunner.<span class="reserved">prototype</span>.clearResult = <span class="reserved">function</span>() {
	var view = <span class="reserved">this</span>.view;
	view.setIcon();
}



<span class="reserved">function</span> TestReport() {
	<span class="reserved">this</span>.testResults = [];
}



TestReport.<span class="reserved">prototype</span>.addResult = <span class="reserved">function</span>(result) {
	<span class="reserved">this</span>.testResults.push(result);
}



TestReport.<span class="reserved">prototype</span>.writeReport = <span class="reserved">function</span>(filename) {
	var xml = &lt;testreport/&gt;
	
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.testResults.length; i++) {
		var r = <span class="reserved">this</span>.testResults[i];
		var x = r.toXML();
		xml.testcaseresult += x;
	}

	var os = new java.io.FileOutputStream(filename);
	var fw = new java.io.OutputStreamWriter(os, <span class="literal">"UTF-8"</span>);

	fw.write(<span class="literal">"&lt;?xml version=\"</span>1.0\<span class="literal">" encoding=\"</span>UTF-8\<span class="literal">"?&gt;\n"</span>);
	fw.write(<span class="literal">"&lt;?xml-stylesheet type=\"</span>text/xsl\<span class="literal">" href=\"</span>docreport.xsl\<span class="literal">" ?&gt;\n"</span>);

	fw.write(xml.toXMLString());
	fw.close();
}



<span class="reserved">function</span> TestResult(id, verdict, log, tcxml) {
	<span class="reserved">this</span>.id = id;
	<span class="reserved">this</span>.verdict = verdict;
	<span class="reserved">this</span>.log = log;
	<span class="reserved">this</span>.tcxml = tcxml;
}



TestResult.<span class="reserved">prototype</span>.toXML = <span class="reserved">function</span>() {
	var source = <span class="reserved">this</span>.id.split(<span class="literal">"/"</span>)[0];
	var sourceid = <span class="reserved">this</span>.id.split(<span class="literal">"/"</span>)[1];

	var xml = &lt;testcaseresult id={<span class="reserved">this</span>.id} source={source} sourceid={sourceid}/&gt;;

	xml.name = &lt;name&gt;{<span class="reserved">this</span>.tcxml.name.elementValue}&lt;/name&gt;;

	xml.verdict = &lt;verdict&gt;{ <span class="reserved">this</span>.verdict ? <span class="literal">"Passed"</span> : <span class="literal">"Failed"</span> }&lt;/verdict&gt;;
	xml.log = &lt;log&gt;{ <span class="literal">"\n"</span> + <span class="reserved">this</span>.log + <span class="literal">"\n"</span> }&lt;/log&gt;;
	<span class="reserved">return</span> xml;
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
Index ()
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="Index ()";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD-->
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-all.html" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<!--
 Listing of letters
-->
&nbsp;<A HREF="index-all.html#__A__">A</A>&nbsp;<A HREF="index-all.html#__B__">B</A>&nbsp;<A HREF="index-all.html#__C__">C</A>&nbsp;<A HREF="index-all.html#__D__">D</A>&nbsp;<A HREF="index-all.html#__E__">E</A>&nbsp;<A HREF="index-all.html#__F__">F</A>&nbsp;<A HREF="index-all.html#__G__">G</A>&nbsp;<A HREF="index-all.html#__H__">H</A>&nbsp;<A HREF="index-all.html#__I__">I</A>&nbsp;<A HREF="index-all.html#__K__">K</A>&nbsp;<A HREF="index-all.html#__L__">L</A>&nbsp;<A HREF="index-all.html#__M__">M</A>&nbsp;<A HREF="index-all.html#__N__">N</A>&nbsp;<A HREF="index-all.html#__O__">O</A>&nbsp;<A HREF="index-all.html#__P__">P</A>&nbsp;<A HREF="index-all.html#__R__">R</A>&nbsp;<A HREF="index-all.html#__S__">S</A>&nbsp;<A HREF="index-all.html#__T__">T</A>&nbsp;<A HREF="index-all.html#__U__">U</A>&nbsp;<A HREF="index-all.html#__V__">V</A>&nbsp;<A HREF="index-all.html#__W__">W</A>&nbsp;<A HREF="index-all.html#__X__">X</A>
<HR>
<!-- End letter listing -->

<A NAME="__A__"><!-- --></A><H2>
<B>A</B></H2>

<DL>
<DT><A HREF="CRLGenerator.html#aACompromise"><B>aACompromise</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#accessControlRules"><B>accessControlRules</B></A> - 
Instance field in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#accessFlags"><B>accessFlags</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#actionListener"><B>actionListener(node, action)</B></A> - 
Instance method in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroupRunner.html#actionListener"><B>actionListener(source, action)</B></A> - 
Instance method in  class <A HREF="TestGroupRunner.html">TestGroupRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#actionListener"><B>actionListener(source, actionName)</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#actionListener"><B>actionListener(source, actionName)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#addAuthorityKeyIdentifierExtension"><B>addAuthorityKeyIdentifierExtension(publicKey)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#addAuthorityKeyIdentifierExtension"><B>addAuthorityKeyIdentifierExtension(publicKey)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#addBasicConstraintsExtension"><B>addBasicConstraintsExtension(cA, pathLenConstraint)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#addBasicConstraintsExtension"><B>addBasicConstraintsExtension(cA, pathLenConstraint)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#addCRLDistributionPointURL"><B>addCRLDistributionPointURL(url)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#addCRLNumberExtension"><B>addCRLNumberExtension(crlnumber)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#addDays"><B>addDays(d, days)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#addExtendedKeyUsageExtension"><B>addExtendedKeyUsageExtension(keyusages)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#addExtendedKeyUsages"><B>addExtendedKeyUsages(oids, critical)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#addExtension"><B>addExtension(extnID, critical, extnValue)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#addExtension"><B>addExtension(extnID, critical, extnValue)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#addExtension"><B>addExtension(extnID, extnValue)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#addKeyUsageExtension"><B>addKeyUsageExtension(flags)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#addKeyUsageExtension"><B>addKeyUsageExtension(flags)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#addLog"><B>addLog(log)</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#addNames"><B>addNames(t, name)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestReport.html#addResult"><B>addResult(result)</B></A> - 
Instance method in  class <A HREF="TestReport.html">TestReport</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#addRevokedCertificate"><B>addRevokedCertificate(revokedCertificate)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#addSubjectKeyIdentifierExtension"><B>addSubjectKeyIdentifierExtension()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#addTest"><B>addTest(name, listener)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#addTestGroup"><B>addTestGroup(testGroup)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#addTestGroupFromXML"><B>addTestGroupFromXML(file, parameter)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#addTestProcedure"><B>addTestProcedure(proc)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#addTestProcedureFromXML"><B>addTestProcedureFromXML(file, parameter)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#affiliationChanged"><B>affiliationChanged</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlinePKCS15.html#aid"><B>aid</B></A> - 
Instance field in  class <A HREF="OutlinePKCS15.html">OutlinePKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#aid"><B>aid</B></A> - 
Instance field in  class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#algorithm"><B>algorithm</B></A> - 
Instance field in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#"><B>AlgorithmInfo</B></A> - 
 class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#constructor_detail"><B>AlgorithmInfo(tlv)</B></A> - 
Constructor in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#algRef"><B>algRef</B></A> - 
Instance field in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#algReference"><B>algReference</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonDataContainerObjectAttributes.html#applicationName"><B>applicationName</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonDataContainerObjectAttributes.html#applicationOID"><B>applicationOID</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#ARRDecorator"><B>ARRDecorator(asn1)</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#asn1DecoratorHook"><B>asn1DecoratorHook(format)</B></A> - 
Instance method in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#assertEquals"><B>assertEquals(first, second, message)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#assertEquals"><B>assertEquals(first, second, message)</B></A> - 
Instance method in  class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#assertTrue"><B>assertTrue(result, message)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#assertTrue"><B>assertTrue(result, message)</B></A> - 
Instance method in  class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlinePKCS15.html#at"><B>at</B></A> - 
Instance field in  class <A HREF="OutlinePKCS15.html">OutlinePKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineATR.html#atr"><B>atr</B></A> - 
Instance field in  class <A HREF="OutlineATR.html">OutlineATR</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineCard.html#atr"><B>atr</B></A> - 
Instance field in  class <A HREF="OutlineCard.html">OutlineCard</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#authId"><B>authId</B></A> - 
Instance field in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html#authIdThis"><B>authIdThis</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonCertificateAttributes.html#authority"><B>authority</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html#authReference"><B>authReference</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__B__"><!-- --></A><H2>
<B>B</B></H2>

<DL>
<DT><A HREF="PKIXCommon.html#bitstringForInteger"><B>bitstringForInteger(val)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP160r1"><B>brainpoolP160r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP160t1"><B>brainpoolP160t1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP192r1"><B>brainpoolP192r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP192t1"><B>brainpoolP192t1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP224r1"><B>brainpoolP224r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP224t1"><B>brainpoolP224t1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP256r1"><B>brainpoolP256r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP256t1"><B>brainpoolP256t1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP320r1"><B>brainpoolP320r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP320t1"><B>brainpoolP320t1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP384r1"><B>brainpoolP384r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP384t1"><B>brainpoolP384t1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP512r1"><B>brainpoolP512r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#brainpoolP512t1"><B>brainpoolP512t1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__C__"><!-- --></A><H2>
<B>C</B></H2>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb163v1"><B>c2pnb163v1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb163v2"><B>c2pnb163v2</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb163v3"><B>c2pnb163v3</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb176w1"><B>c2pnb176w1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb208w1"><B>c2pnb208w1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb272w1"><B>c2pnb272w1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb304w1"><B>c2pnb304w1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2pnb368w1"><B>c2pnb368w1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb191v1"><B>c2tnb191v1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb191v2"><B>c2tnb191v2</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb191v3"><B>c2tnb191v3</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb239v1"><B>c2tnb239v1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb239v2"><B>c2tnb239v2</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb239v3"><B>c2tnb239v3</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb359v1"><B>c2tnb359v1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#c2tnb431r1"><B>c2tnb431r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#cACompromise"><B>cACompromise</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#card"><B>card</B></A> - 
Instance field in  class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#card"><B>card</B></A> - 
Instance field in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#cardflags"><B>cardflags</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#"><B>CardOutlineFactory</B></A> - 
 class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#constructor_detail"><B>CardOutlineFactory()</B></A> - 
Constructor in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#certificateHold"><B>certificateHold</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#cessationOfOperation"><B>cessationOfOperation</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIODDO.html#ciaInfoPath"><B>ciaInfoPath</B></A> - 
Instance field in  class <A HREF="PKCS15_CIODDO.html">PKCS15_CIODDO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#clearResult"><B>clearResult()</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestStepRunner.html#clearResult"><B>clearResult()</B></A> - 
Instance method in  class <A HREF="TestStepRunner.html">TestStepRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#clearResults"><B>clearResults()</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#close"><B>close()</B></A> - 
Instance method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#collapseAll"><B>collapseAll()</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#commonName"><B>commonName</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#convertUnsignedInteger"><B>convertUnsignedInteger(value)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#convertUnsignedInteger"><B>convertUnsignedInteger(value)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#countryName"><B>countryName</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#createECSubjectPublicKeyInfo"><B>createECSubjectPublicKeyInfo(publicKey, encodeECDomainParameter)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#createRSASubjectPublicKeyInfo"><B>createRSASubjectPublicKeyInfo(publicKey)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#"><B>CRLGenerator</B></A> - 
 class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#constructor_detail"><B>CRLGenerator(crypto)</B></A> - 
Constructor in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#CRLGeneratorTest"><B>CRLGeneratorTest()</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#cRLSign"><B>cRLSign</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#cRLSign"><B>cRLSign</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#cRLSign"><B>cRLSign</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#CRTDecorator"><B>CRTDecorator(asn1)</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#crypto"><B>crypto</B></A> - 
Instance field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#crypto"><B>crypto</B></A> - 
Instance field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#crypto"><B>crypto</B></A> - 
Instance field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#ctxMenuList"><B>ctxMenuList</B></A> - 
Class field in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__D__"><!-- --></A><H2>
<B>D</B></H2>

<DL>
<DT><A HREF="DataOutline.html#data"><B>data</B></A> - 
Instance field in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#dataEncipherment"><B>dataEncipherment</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#dataEncipherment"><B>dataEncipherment</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#dataEncipherment"><B>dataEncipherment</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#"><B>DataOutline</B></A> - 
 class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#constructor_detail"><B>DataOutline(data, format)</B></A> - 
Constructor in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#ddo"><B>ddo</B></A> - 
Instance field in  class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#decipherOnly"><B>decipherOnly</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#decipherOnly"><B>decipherOnly</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#decipherOnly"><B>decipherOnly</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#decodeECCKeyFromPKCS8Format"><B>decodeECCKeyFromPKCS8Format(domainParameter, encodedKey)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#decodeECParameters"><B>decodeECParameters(tlv)</B></A> - 
Class method in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#decodeKeyFromPKCS8Format"><B>decodeKeyFromPKCS8Format(encodedKey)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#decodeRSAKeyFromPKCS8Format"><B>decodeRSAKeyFromPKCS8Format(algparam, privateKey)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#decodeUncompressedECPoint"><B>decodeUncompressedECPoint(uncompressedPoint)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#decorate"><B>decorate(format)</B></A> - 
Instance method in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDataObject.html#df"><B>df</B></A> - 
Instance field in  class <A HREF="OutlineDataObject.html">OutlineDataObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineEF.html#df"><B>df</B></A> - 
Instance field in  class <A HREF="OutlineEF.html">OutlineEF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#digitalSignature"><B>digitalSignature</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#digitalSignature"><B>digitalSignature</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#digitalSignature"><B>digitalSignature</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#dnQualifier"><B>dnQualifier</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#dtoUTC"><B>dtoUTC(d)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__E__"><!-- --></A><H2>
<B>E</B></H2>

<DL>
<DT><A HREF="ECCUtils.html#"><B>ECCUtils</B></A> - 
 class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#constructor_detail"><B>ECCUtils()</B></A> - 
Constructor in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#ECParametersToString"><B>ECParametersToString(key)</B></A> - 
Class method in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineRecord.html#ef"><B>ef</B></A> - 
Instance field in  class <A HREF="OutlineRecord.html">OutlineRecord</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineRecord.html#efdesc"><B>efdesc</B></A> - 
Instance field in  class <A HREF="OutlineRecord.html">OutlineRecord</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Path.html#efidOrPath"><B>efidOrPath</B></A> - 
Instance field in  class <A HREF="PKCS15_Path.html">PKCS15_Path</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#emailAddress"><B>emailAddress</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#enable"><B>enable(name, state)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#enable"><B>enable(state)</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#encipherOnly"><B>encipherOnly</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#encipherOnly"><B>encipherOnly</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#encipherOnly"><B>encipherOnly</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#encodeECCKeyUsingPKCS8Format"><B>encodeECCKeyUsingPKCS8Format(privateKey)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#encodeECDomainParameter"><B>encodeECDomainParameter</B></A> - 
Instance field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#encodeKeyUsingPKCS8Format"><B>encodeKeyUsingPKCS8Format(privateKey, publicKey)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#encodeName"><B>encodeName(name)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#encodeRSAKey"><B>encodeRSAKey(privateKey, publicKey)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#encodeRSAKeyUsingPKCS8Format"><B>encodeRSAKeyUsingPKCS8Format(privateKey, publicKey)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#encodeUncompressedECPoint"><B>encodeUncompressedECPoint(x,y)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#endDate"><B>endDate</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#expandAll"><B>expandAll()</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineCard.html#expandListener"><B>expandListener()</B></A> - 
Instance method in  class <A HREF="OutlineCard.html">OutlineCard</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDataObject.html#expandListener"><B>expandListener()</B></A> - 
Instance method in  class <A HREF="OutlineDataObject.html">OutlineDataObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#expandListener"><B>expandListener()</B></A> - 
Instance method in  class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineEF.html#expandListener"><B>expandListener()</B></A> - 
Instance method in  class <A HREF="OutlineEF.html">OutlineEF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlinePKCS15.html#expandListener"><B>expandListener()</B></A> - 
Instance method in  class <A HREF="OutlinePKCS15.html">OutlinePKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineRecord.html#expandListener"><B>expandListener()</B></A> - 
Instance method in  class <A HREF="OutlineRecord.html">OutlineRecord</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__F__"><!-- --></A><H2>
<B>F</B></H2>

<DL>
<DT><A HREF="DataOutline.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineATR.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="OutlineATR.html">OutlineATR</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDataObject.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="OutlineDataObject.html">OutlineDataObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineEF.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="OutlineEF.html">OutlineEF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineFCP.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="OutlineFCP.html">OutlineFCP</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlinePKCS15.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="OutlinePKCS15.html">OutlinePKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineRecord.html#factory"><B>factory</B></A> - 
Instance field in  class <A HREF="OutlineRecord.html">OutlineRecord</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineFCP.html#fcp"><B>fcp</B></A> - 
Instance field in  class <A HREF="OutlineFCP.html">OutlineFCP</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#FCPDecorator"><B>FCPDecorator(asn1)</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#"><B>File</B></A> - 
 class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#constructor_detail"><B>File(name)</B></A> - 
Constructor in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#flags"><B>flags</B></A> - 
Instance field in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#format"><B>format</B></A> - 
Instance field in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDataObject.html#format"><B>format</B></A> - 
Instance field in  class <A HREF="OutlineDataObject.html">OutlineDataObject</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__G__"><!-- --></A><H2>
<B>G</B></H2>

<DL>
<DT><A HREF="PKCS10Generator.html#generateCertificationRequest"><B>generateCertificationRequest(privateKey)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#generateCRL"><B>generateCRL(privateKey)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#generateX509Certificate"><B>generateX509Certificate(privateKey)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#generationQualifier"><B>generationQualifier</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Path.html#getAbsolutePath"><B>getAbsolutePath(df)</B></A> - 
Instance method in  class <A HREF="PKCS15_Path.html">PKCS15_Path</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#getAbsolutePath"><B>getAbsolutePath(mode)</B></A> - 
Instance method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#getAccessFlagsAsString"><B>getAccessFlagsAsString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#getAidList"><B>getAidList()</B></A> - 
Instance method in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#getAttributes"><B>getAttributes()</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#getCardflagsAsString"><B>getCardflagsAsString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#getCIAInfo"><B>getCIAInfo(path)</B></A> - 
Instance method in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#getExtensions"><B>getExtensions()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#getExtensions"><B>getExtensions()</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#getExtensions"><B>getExtensions()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#getFailedCounter"><B>getFailedCounter()</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#getFlagsAsString"><B>getFlagsAsString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#getIssuer"><B>getIssuer()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#getIssuer"><B>getIssuer()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#getLog"><B>getLog()</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#getLog"><B>getLog()</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#getName"><B>getName()</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#getNextUpdate"><B>getNextUpdate()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#getOperationsAsString"><B>getOperationsAsString()</B></A> - 
Instance method in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#getParentFile"><B>getParentFile()</B></A> - 
Instance method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#getPwdFlagsAsString"><B>getPwdFlagsAsString()</B></A> - 
Instance method in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#getPwdTypeAsString"><B>getPwdTypeAsString()</B></A> - 
Instance method in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#getRDNAsString"><B>getRDNAsString(oid)</B></A> - 
Instance method in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#getRevokedCertificates"><B>getRevokedCertificates()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#getSignatureAlgorithm"><B>getSignatureAlgorithm()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#getSignatureAlgorithm"><B>getSignatureAlgorithm()</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#getSignatureAlgorithm"><B>getSignatureAlgorithm()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#getSubject"><B>getSubject()</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#getSubject"><B>getSubject()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#getSubjectPublicKeyInfo"><B>getSubjectPublicKeyInfo()</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#getSubjectPublicKeyInfo"><B>getSubjectPublicKeyInfo()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#getTbsCertificate"><B>getTbsCertificate()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#getTbsCertificateList"><B>getTbsCertificateList()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#getTbsRequest"><B>getTbsRequest()</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#getTestCase"><B>getTestCase(name)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#getTestCaseNames"><B>getTestCaseNames()</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#getTestProcedure"><B>getTestProcedure(name)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#getThisUpdate"><B>getThisUpdate()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#getUsageAsString"><B>getUsageAsString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#getUsedTestProceduresForTestCase"><B>getUsedTestProceduresForTestCase(name)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#getValidity"><B>getValidity()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#getXML"><B>getXML()</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#givenname"><B>givenname</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#"><B>GLOBALS</B></A> - 
 class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__H__"><!-- --></A><H2>
<B>H</B></H2>

<DL>
<DT><A HREF="TestCaseRunner.html#hasFailed"><B>hasFailed(log)</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#hasFailed"><B>hasFailed(name, log)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestStepRunner.html#hasPassed"><B>hasPassed()</B></A> - 
Instance method in  class <A HREF="TestStepRunner.html">TestStepRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#hasPassed"><B>hasPassed(log)</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#hasPassed"><B>hasPassed(name, log)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#hasRDN"><B>hasRDN(oid)</B></A> - 
Instance method in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#holderId"><B>holderId</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__I__"><!-- --></A><H2>
<B>I</B></H2>

<DL>
<DT><A HREF="ECCUtils.html#I2O"><B>I2O(value, length)</B></A> - 
Class method in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#I2O"><B>I2O(value, length)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDataObject.html#id"><B>id</B></A> - 
Instance field in  class <A HREF="OutlineDataObject.html">OutlineDataObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#id"><B>id</B></A> - 
Instance field in  class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonCertificateAttributes.html#iD"><B>iD</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonDataContainerObjectAttributes.html#iD"><B>iD</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#iD"><B>iD</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestResult.html#id"><B>id</B></A> - 
Instance field in  class <A HREF="TestResult.html">TestResult</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#idEcPublicKey"><B>idEcPublicKey</B></A> - 
Class field in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonCertificateAttributes.html#identifier"><B>identifier</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Path.html#index"><B>index</B></A> - 
Instance field in  class <A HREF="PKCS15_Path.html">PKCS15_Path</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#initials"><B>initials</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#IntFromBitString"><B>IntFromBitString(b)</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#isEnabled"><B>isEnabled()</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#isEnabled"><B>isEnabled(name)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#issuerId"><B>issuerId</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__K__"><!-- --></A><H2>
<B>K</B></H2>

<DL>
<DT><A HREF="PKCS10Generator.html#keyAgreement"><B>keyAgreement</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#keyAgreement"><B>keyAgreement</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#keyAgreement"><B>keyAgreement</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#keyCertSign"><B>keyCertSign</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#keyCertSign"><B>keyCertSign</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#keyCertSign"><B>keyCertSign</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#keyCompromise"><B>keyCompromise</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#keyEncipherment"><B>keyEncipherment</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#keyEncipherment"><B>keyEncipherment</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#keyEncipherment"><B>keyEncipherment</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#keyReference"><B>keyReference</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__L__"><!-- --></A><H2>
<B>L</B></H2>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#label"><B>label</B></A> - 
Instance field in  class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#label"><B>label</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#label"><B>label</B></A> - 
Instance field in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#lastUpdate"><B>lastUpdate</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Path.html#length"><B>length</B></A> - 
Instance field in  class <A HREF="PKCS15_Path.html">PKCS15_Path</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#list"><B>list()</B></A> - 
Instance method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#loadCRLEntries"><B>loadCRLEntries(filename)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#localityName"><B>localityName</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestLogFile.html#log"><B>log</B></A> - 
Instance field in  class <A HREF="TestLogFile.html">TestLogFile</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestResult.html#log"><B>log</B></A> - 
Instance field in  class <A HREF="TestResult.html">TestResult</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#log"><B>log(message)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#log"><B>log(message)</B></A> - 
Instance method in  class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__M__"><!-- --></A><H2>
<B>M</B></H2>

<DL>
<DT><A HREF="PKIXCommon.html#makeRDN"><B>makeRDN(name, oid, value)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#manufacturerID"><B>manufacturerID</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#marker"><B>marker</B></A> - 
Instance field in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#maxLength"><B>maxLength</B></A> - 
Instance field in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#minLength"><B>minLength</B></A> - 
Instance field in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__N__"><!-- --></A><H2>
<B>N</B></H2>

<DL>
<DT><A HREF="File.html#name"><B>name</B></A> - 
Instance field in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#name"><B>name</B></A> - 
Instance field in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#name"><B>name</B></A> - 
Instance field in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#name"><B>name</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#native_"><B>native_</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newDataOutline"><B>newDataOutline(data, format)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlineApplet"><B>newOutlineApplet(instance)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlineATR"><B>newOutlineATR(atr)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlineDataObject"><B>newOutlineDataObject(df, id, name, format)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlineDF"><B>newOutlineDF(card, id, name, profile)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlineEF"><B>newOutlineEF(df, name, profile)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlineFCP"><B>newOutlineFCP(fcp)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlinePKCS15"><B>newOutlinePKCS15(pkcs15, aid, at)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CardOutlineFactory.html#newOutlineRecord"><B>newOutlineRecord(ef, no, efdesc)</B></A> - 
Instance method in  class <A HREF="CardOutlineFactory.html">CardOutlineFactory</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineRecord.html#no"><B>no</B></A> - 
Instance field in  class <A HREF="OutlineRecord.html">OutlineRecord</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#nonRepudiation"><B>nonRepudiation</B></A> - 
Class field in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#nonRepudiation"><B>nonRepudiation</B></A> - 
Class field in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#nonRepudiation"><B>nonRepudiation</B></A> - 
Class field in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__O__"><!-- --></A><H2>
<B>O</B></H2>

<DL>
<DT><A HREF="AlgorithmInfo.html#objId"><B>objId</B></A> - 
Instance field in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#objlist"><B>objlist</B></A> - 
Instance field in  class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIODDO.html#odfPath"><B>odfPath</B></A> - 
Instance field in  class <A HREF="PKCS15_CIODDO.html">PKCS15_CIODDO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#organizationalUnitName"><B>organizationalUnitName</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#organizationName"><B>organizationName</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineATR.html#"><B>OutlineATR</B></A> - 
 class <A HREF="OutlineATR.html">OutlineATR</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineATR.html#constructor_detail"><B>OutlineATR(atr)</B></A> - 
Constructor in  class <A HREF="OutlineATR.html">OutlineATR</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineCard.html#"><B>OutlineCard</B></A> - 
 class <A HREF="OutlineCard.html">OutlineCard</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineCard.html#constructor_detail"><B>OutlineCard()</B></A> - 
Constructor in  class <A HREF="OutlineCard.html">OutlineCard</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDataObject.html#"><B>OutlineDataObject</B></A> - 
 class <A HREF="OutlineDataObject.html">OutlineDataObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDataObject.html#constructor_detail"><B>OutlineDataObject(factory, df, id, name, format)</B></A> - 
Constructor in  class <A HREF="OutlineDataObject.html">OutlineDataObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#"><B>OutlineDF</B></A> - 
 class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#constructor_detail"><B>OutlineDF(card, id, name, profile)</B></A> - 
Constructor in  class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineEF.html#"><B>OutlineEF</B></A> - 
 class <A HREF="OutlineEF.html">OutlineEF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineEF.html#constructor_detail"><B>OutlineEF(df, name, profile)</B></A> - 
Constructor in  class <A HREF="OutlineEF.html">OutlineEF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineFCP.html#"><B>OutlineFCP</B></A> - 
 class <A HREF="OutlineFCP.html">OutlineFCP</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineFCP.html#constructor_detail"><B>OutlineFCP(fcp)</B></A> - 
Constructor in  class <A HREF="OutlineFCP.html">OutlineFCP</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlinePKCS15.html#"><B>OutlinePKCS15</B></A> - 
 class <A HREF="OutlinePKCS15.html">OutlinePKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlinePKCS15.html#constructor_detail"><B>OutlinePKCS15(factory, pkcs15, aid, at)</B></A> - 
Constructor in  class <A HREF="OutlinePKCS15.html">OutlinePKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineRecord.html#"><B>OutlineRecord</B></A> - 
 class <A HREF="OutlineRecord.html">OutlineRecord</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineRecord.html#constructor_detail"><B>OutlineRecord(ef, no, efdesc)</B></A> - 
Constructor in  class <A HREF="OutlineRecord.html">OutlineRecord</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__P__"><!-- --></A><H2>
<B>P</B></H2>

<DL>
<DT><A HREF="ECCUtils.html#PAD"><B>PAD</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#PAD"><B>PAD</B></A> - 
Class field in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#parameter"><B>parameter</B></A> - 
Instance field in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#parameters"><B>parameters</B></A> - 
Instance field in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#parentdf"><B>parentdf</B></A> - 
Instance field in  class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#parseObjectList"><B>parseObjectList(data)</B></A> - 
Class method in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#path"><B>path</B></A> - 
Instance field in  class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#"><B>PKCS10Generator</B></A> - 
 class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#constructor_detail"><B>PKCS10Generator(crypto)</B></A> - 
Constructor in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#PKCS10GeneratorTest"><B>PKCS10GeneratorTest()</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlinePKCS15.html#pkcs15"><B>pkcs15</B></A> - 
Instance field in  class <A HREF="OutlinePKCS15.html">OutlinePKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#"><B>PKCS15</B></A> - 
 class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#constructor_detail"><B>PKCS15(card)</B></A> - 
Constructor in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#"><B>PKCS15_ApplicationTemplate</B></A> - 
 class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#constructor_detail"><B>PKCS15_ApplicationTemplate(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_AuthenticationObject.html#"><B>PKCS15_AuthenticationObject</B></A> - 
 class <A HREF="PKCS15_AuthenticationObject.html">PKCS15_AuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_AuthenticationObject.html#constructor_detail"><B>PKCS15_AuthenticationObject(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_AuthenticationObject.html">PKCS15_AuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Certificate.html#"><B>PKCS15_Certificate</B></A> - 
 class <A HREF="PKCS15_Certificate.html">PKCS15_Certificate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Certificate.html#constructor_detail"><B>PKCS15_Certificate(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_Certificate.html">PKCS15_Certificate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#"><B>PKCS15_CIAInfo</B></A> - 
 class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#constructor_detail"><B>PKCS15_CIAInfo(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#"><B>PKCS15_CIO</B></A> - 
 class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#constructor_detail"><B>PKCS15_CIO(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIODDO.html#"><B>PKCS15_CIODDO</B></A> - 
 class <A HREF="PKCS15_CIODDO.html">PKCS15_CIODDO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIODDO.html#constructor_detail"><B>PKCS15_CIODDO(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CIODDO.html">PKCS15_CIODDO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html#"><B>PKCS15_CommonAuthenticationObjectAttributes</B></A> - 
 class <A HREF="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html#constructor_detail"><B>PKCS15_CommonAuthenticationObjectAttributes(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonCertificateAttributes.html#"><B>PKCS15_CommonCertificateAttributes</B></A> - 
 class <A HREF="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonCertificateAttributes.html#constructor_detail"><B>PKCS15_CommonCertificateAttributes(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonDataContainerObjectAttributes.html#"><B>PKCS15_CommonDataContainerObjectAttributes</B></A> - 
 class <A HREF="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonDataContainerObjectAttributes.html#constructor_detail"><B>PKCS15_CommonDataContainerObjectAttributes(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#"><B>PKCS15_CommonKeyAttributes</B></A> - 
 class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#constructor_detail"><B>PKCS15_CommonKeyAttributes(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonPrivateKeyAttributes.html#"><B>PKCS15_CommonPrivateKeyAttributes</B></A> - 
 class <A HREF="PKCS15_CommonPrivateKeyAttributes.html">PKCS15_CommonPrivateKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonPrivateKeyAttributes.html#constructor_detail"><B>PKCS15_CommonPrivateKeyAttributes(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CommonPrivateKeyAttributes.html">PKCS15_CommonPrivateKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonSecretKeyAttributes.html#"><B>PKCS15_CommonSecretKeyAttributes</B></A> - 
 class <A HREF="PKCS15_CommonSecretKeyAttributes.html">PKCS15_CommonSecretKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonSecretKeyAttributes.html#constructor_detail"><B>PKCS15_CommonSecretKeyAttributes(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_CommonSecretKeyAttributes.html">PKCS15_CommonSecretKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_DataContainerObject.html#"><B>PKCS15_DataContainerObject</B></A> - 
 class <A HREF="PKCS15_DataContainerObject.html">PKCS15_DataContainerObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_DataContainerObject.html#constructor_detail"><B>PKCS15_DataContainerObject(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_DataContainerObject.html">PKCS15_DataContainerObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#"><B>PKCS15_PasswordAuthenticationObject</B></A> - 
 class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#constructor_detail"><B>PKCS15_PasswordAuthenticationObject(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Path.html#"><B>PKCS15_Path</B></A> - 
 class <A HREF="PKCS15_Path.html">PKCS15_Path</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Path.html#constructor_detail"><B>PKCS15_Path(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_Path.html">PKCS15_Path</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PrivateKey.html#"><B>PKCS15_PrivateKey</B></A> - 
 class <A HREF="PKCS15_PrivateKey.html">PKCS15_PrivateKey</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PrivateKey.html#constructor_detail"><B>PKCS15_PrivateKey(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_PrivateKey.html">PKCS15_PrivateKey</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_SecretKey.html#"><B>PKCS15_SecretKey</B></A> - 
 class <A HREF="PKCS15_SecretKey.html">PKCS15_SecretKey</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_SecretKey.html#constructor_detail"><B>PKCS15_SecretKey(tlv)</B></A> - 
Constructor in  class <A HREF="PKCS15_SecretKey.html">PKCS15_SecretKey</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#"><B>PKCS8</B></A> - 
 class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#constructor_detail"><B>PKCS8()</B></A> - 
Constructor in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#"><B>PKIXCommon</B></A> - 
 class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#constructor_detail"><B>PKIXCommon()</B></A> - 
Constructor in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#preferredLanguage"><B>preferredLanguage</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#prime192v1"><B>prime192v1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#prime192v2"><B>prime192v2</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#prime192v3"><B>prime192v3</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#prime239v1"><B>prime239v1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#prime239v2"><B>prime239v2</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#prime239v3"><B>prime239v3</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#prime256v1"><B>prime256v1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#privilegeWithdrawn"><B>privilegeWithdrawn</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineDF.html#profile"><B>profile</B></A> - 
Instance field in  class <A HREF="OutlineDF.html">OutlineDF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineEF.html#profile"><B>profile</B></A> - 
Instance field in  class <A HREF="OutlineEF.html">OutlineEF</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#profileIndication"><B>profileIndication</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIODDO.html#providerId"><B>providerId</B></A> - 
Instance field in  class <A HREF="PKCS15_CIODDO.html">PKCS15_CIODDO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_AuthenticationObject.html#pwd"><B>pwd</B></A> - 
Instance field in  class <A HREF="PKCS15_AuthenticationObject.html">PKCS15_AuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#pwdFlags"><B>pwdFlags</B></A> - 
Instance field in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#pwdReference"><B>pwdReference</B></A> - 
Instance field in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#pwdType"><B>pwdType</B></A> - 
Instance field in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__R__"><!-- --></A><H2>
<B>R</B></H2>

<DL>
<DT><A HREF="File.html#readAllAsBinary"><B>readAllAsBinary()</B></A> - 
Instance method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#readAllAsString"><B>readAllAsString(encoding)</B></A> - 
Instance method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#readApplicationDirectory"><B>readApplicationDirectory()</B></A> - 
Instance method in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#readCardObjects"><B>readCardObjects(df, path)</B></A> - 
Instance method in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#readFileFromDisk"><B>readFileFromDisk(filename)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15.html#readObjectListForApplication"><B>readObjectListForApplication(at)</B></A> - 
Instance method in  class <A HREF="PKCS15.html">PKCS15</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#recordInfo"><B>recordInfo</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#reference"><B>reference</B></A> - 
Instance field in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#removeFromCRL"><B>removeFromCRL</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#report"><B>report(fn)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#reset"><B>reset()</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#reset"><B>reset()</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#reset"><B>reset()</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#revokeCertificate"><B>revokeCertificate(serial, timestamp, reason, ext)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#rsaEncryption"><B>rsaEncryption</B></A> - 
Class field in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#run"><B>run()</B></A> - 
Instance method in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroupRunner.html#run"><B>run()</B></A> - 
Instance method in  class <A HREF="TestGroupRunner.html">TestGroupRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#run"><B>run()</B></A> - 
Instance method in  class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#run"><B>run()</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#run"><B>run(runner)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#runTestCase"><B>runTestCase(casename, runner)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#runTestProcedure"><B>runTestProcedure(name, param)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__S__"><!-- --></A><H2>
<B>S</B></H2>

<DL>
<DT><A HREF="GLOBALS.html#SADecorator"><B>SADecorator(asn1)</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#secp224r1"><B>secp224r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#secp256r1"><B>secp256r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#secp384r1"><B>secp384r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#secp521r1"><B>secp521r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#sect163r2"><B>sect163r2</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#sect233r1"><B>sect233r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#sect283r1"><B>sect283r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#sect409r1"><B>sect409r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#sect571r1"><B>sect571r1</B></A> - 
Class field in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html#seIdentifier"><B>seIdentifier</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#seInfo"><B>seInfo</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#selected"><B>selected</B></A> - 
Instance field in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="DataOutline.html#selectedListener"><B>selectedListener()</B></A> - 
Instance method in  class <A HREF="DataOutline.html">DataOutline</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="OutlineATR.html#selectedListener"><B>selectedListener()</B></A> - 
Instance method in  class <A HREF="OutlineATR.html">OutlineATR</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestLogFile.html#selectedListener"><B>selectedListener()</B></A> - 
Instance method in  class <A HREF="TestLogFile.html">TestLogFile</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#serialNumber"><B>serialNumber</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#serialNumber"><B>serialNumber</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#setIssuer"><B>setIssuer(issuer)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#setIssuer"><B>setIssuer(issuer)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#setMarker"><B>setMarker(marker)</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#setNextUpdate"><B>setNextUpdate(datetime)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#setNotAfter"><B>setNotAfter(date)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#setNotBefore"><B>setNotBefore(date)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#setPublicKey"><B>setPublicKey(publicKey)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#setPublicKey"><B>setPublicKey(publicKey)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#setReportDirectory"><B>setReportDirectory(dir)</B></A> - 
Instance method in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#setSerialNumber"><B>setSerialNumber(serialNumber)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#setSignatureAlgorithm"><B>setSignatureAlgorithm(alg)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#setSignatureAlgorithm"><B>setSignatureAlgorithm(alg)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#setSignatureAlgorithm"><B>setSignatureAlgorithm(alg)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS10Generator.html#setSubject"><B>setSubject(subject)</B></A> - 
Instance method in  class <A HREF="PKCS10Generator.html">PKCS10Generator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#setSubject"><B>setSubject(subject)</B></A> - 
Instance method in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#setThisUpdate"><B>setThisUpdate(datetime)</B></A> - 
Instance method in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#setUp"><B>setUp()</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#setUp"><B>setUp()</B></A> - 
Instance method in  class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#startDate"><B>startDate</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#stateOrProvinceName"><B>stateOrProvinceName</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#storedLength"><B>storedLength</B></A> - 
Instance field in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#stripLeadingZeros"><B>stripLeadingZeros(value, size)</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="CRLGenerator.html#superseded"><B>superseded</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#supportedAlgorithms"><B>supportedAlgorithms</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#supportedOperations"><B>supportedOperations</B></A> - 
Instance field in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#surname"><B>surname</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__T__"><!-- --></A><H2>
<B>T</B></H2>

<DL>
<DT><A HREF="TestResult.html#tcxml"><B>tcxml</B></A> - 
Instance field in  class <A HREF="TestResult.html">TestResult</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#tearDown"><B>tearDown()</B></A> - 
Instance method in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#tearDown"><B>tearDown()</B></A> - 
Instance method in  class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#test"><B>test()</B></A> - 
Class method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS8.html#test"><B>test()</B></A> - 
Class method in  class <A HREF="PKCS8.html">PKCS8</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#test"><B>test()</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#testCase"><B>testCase</B></A> - 
Instance field in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#"><B>TestCaseRunner</B></A> - 
 class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedureRunner.html#testCaseRunner"><B>testCaseRunner</B></A> - 
Instance field in  class <A HREF="TestProcedureRunner.html">TestProcedureRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#constructor_detail"><B>TestCaseRunner(testGroupRunner, testCase)</B></A> - 
Constructor in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#"><B>TestGroup</B></A> - 
 class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroupRunner.html#testGroup"><B>testGroup</B></A> - 
Instance field in  class <A HREF="TestGroupRunner.html">TestGroupRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroup.html#constructor_detail"><B>TestGroup(name, parameter)</B></A> - 
Constructor in  class <A HREF="TestGroup.html">TestGroup</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#testGroupPrototype"><B>testGroupPrototype</B></A> - 
Instance field in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#testGroupRunner"><B>testGroupRunner</B></A> - 
Instance field in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroupRunner.html#"><B>TestGroupRunner</B></A> - 
 class <A HREF="TestGroupRunner.html">TestGroupRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroupRunner.html#constructor_detail"><B>TestGroupRunner(testRunner, testGroup)</B></A> - 
Constructor in  class <A HREF="TestGroupRunner.html">TestGroupRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#testGroupRunners"><B>testGroupRunners</B></A> - 
Instance field in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestLogFile.html#"><B>TestLogFile</B></A> - 
 class <A HREF="TestLogFile.html">TestLogFile</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestLogFile.html#constructor_detail"><B>TestLogFile(parent, log)</B></A> - 
Constructor in  class <A HREF="TestLogFile.html">TestLogFile</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#testMapper"><B>testMapper</B></A> - 
Instance field in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#"><B>TestProcedure</B></A> - 
 class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedureRunner.html#testProcedure"><B>testProcedure</B></A> - 
Instance field in  class <A HREF="TestProcedureRunner.html">TestProcedureRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedure.html#constructor_detail"><B>TestProcedure(name, testgroup, parameter)</B></A> - 
Constructor in  class <A HREF="TestProcedure.html">TestProcedure</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#testProcedurePrototype"><B>testProcedurePrototype</B></A> - 
Instance field in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedureRunner.html#"><B>TestProcedureRunner</B></A> - 
 class <A HREF="TestProcedureRunner.html">TestProcedureRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestStepRunner.html#testProcedureRunner"><B>testProcedureRunner</B></A> - 
Instance field in  class <A HREF="TestStepRunner.html">TestStepRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestProcedureRunner.html#constructor_detail"><B>TestProcedureRunner(testCaseRunner, testProcedure)</B></A> - 
Constructor in  class <A HREF="TestProcedureRunner.html">TestProcedureRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#testProcedures"><B>testProcedures</B></A> - 
Instance field in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestReport.html#"><B>TestReport</B></A> - 
 class <A HREF="TestReport.html">TestReport</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#testReport"><B>testReport</B></A> - 
Instance field in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestReport.html#constructor_detail"><B>TestReport()</B></A> - 
Constructor in  class <A HREF="TestReport.html">TestReport</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestResult.html#"><B>TestResult</B></A> - 
 class <A HREF="TestResult.html">TestResult</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestResult.html#constructor_detail"><B>TestResult(id, verdict, log, tcxml)</B></A> - 
Constructor in  class <A HREF="TestResult.html">TestResult</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestReport.html#testResults"><B>testResults</B></A> - 
Instance field in  class <A HREF="TestReport.html">TestReport</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestGroupRunner.html#testRunner"><B>testRunner</B></A> - 
Instance field in  class <A HREF="TestGroupRunner.html">TestGroupRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#"><B>TestRunner</B></A> - 
 class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestRunner.html#constructor_detail"><B>TestRunner(name)</B></A> - 
Constructor in  class <A HREF="TestRunner.html">TestRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestStepRunner.html#testStep"><B>testStep</B></A> - 
Instance field in  class <A HREF="TestStepRunner.html">TestStepRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestStepRunner.html#"><B>TestStepRunner</B></A> - 
 class <A HREF="TestStepRunner.html">TestStepRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestStepRunner.html#constructor_detail"><B>TestStepRunner(testProcedureRunner, testStep)</B></A> - 
Constructor in  class <A HREF="TestStepRunner.html">TestStepRunner</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#title"><B>title</B></A> - 
Class field in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#tlv"><B>tlv</B></A> - 
Instance field in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#tlv"><B>tlv</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#tlv"><B>tlv</B></A> - 
Instance field in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="AlgorithmInfo.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="AlgorithmInfo.html">AlgorithmInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_ApplicationTemplate.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIODDO.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CIODDO.html">PKCS15_CIODDO</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CommonAuthenticationObjectAttributes.html">PKCS15_CommonAuthenticationObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonCertificateAttributes.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CommonCertificateAttributes.html">PKCS15_CommonCertificateAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonDataContainerObjectAttributes.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_DataContainerObject.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_DataContainerObject.html">PKCS15_DataContainerObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PasswordAuthenticationObject.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_PasswordAuthenticationObject.html">PKCS15_PasswordAuthenticationObject</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Path.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="PKCS15_Path.html">PKCS15_Path</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#toString"><B>toString()</B></A> - 
Instance method in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestResult.html#toXML"><B>toXML()</B></A> - 
Instance method in  class <A HREF="TestResult.html">TestResult</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_Certificate.html#type"><B>type</B></A> - 
Instance field in  class <A HREF="PKCS15_Certificate.html">PKCS15_Certificate</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_PrivateKey.html#type"><B>type</B></A> - 
Instance field in  class <A HREF="PKCS15_PrivateKey.html">PKCS15_PrivateKey</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_SecretKey.html#type"><B>type</B></A> - 
Instance field in  class <A HREF="PKCS15_SecretKey.html">PKCS15_SecretKey</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__U__"><!-- --></A><H2>
<B>U</B></H2>

<DL>
<DT><A HREF="CRLGenerator.html#unspecified"><B>unspecified</B></A> - 
Class field in  class <A HREF="CRLGenerator.html">CRLGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="ECCUtils.html#unwrapSignature"><B>unwrapSignature(signature, keylen)</B></A> - 
Class method in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CommonKeyAttributes.html#usage"><B>usage</B></A> - 
Instance field in  class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIO.html#userConsent"><B>userConsent</B></A> - 
Instance field in  class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__V__"><!-- --></A><H2>
<B>V</B></H2>

<DL>
<DT><A HREF="TestResult.html#verdict"><B>verdict</B></A> - 
Instance field in  class <A HREF="TestResult.html">TestResult</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKCS15_CIAInfo.html#version"><B>version</B></A> - 
Instance field in  class <A HREF="PKCS15_CIAInfo.html">PKCS15_CIAInfo</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__W__"><!-- --></A><H2>
<B>W</B></H2>

<DL>
<DT><A HREF="ECCUtils.html#wrapSignature"><B>wrapSignature(signature)</B></A> - 
Class method in  class <A HREF="ECCUtils.html">ECCUtils</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="File.html#writeAll"><B>writeAll(obj, encoding)</B></A> - 
Instance method in  class <A HREF="File.html">File</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="PKIXCommon.html#writeFileToDisk"><B>writeFileToDisk(filename, content)</B></A> - 
Class method in  class <A HREF="PKIXCommon.html">PKIXCommon</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestReport.html#writeReport"><B>writeReport(filename)</B></A> - 
Instance method in  class <A HREF="TestReport.html">TestReport</A>
<DD>&nbsp;
</DL>

<HR>

<A NAME="__X__"><!-- --></A><H2>
<B>X</B></H2>

<DL>
<DT><A HREF="X509CertificateGenerator.html#"><B>X509CertificateGenerator</B></A> - 
 class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509CertificateGenerator.html#constructor_detail"><B>X509CertificateGenerator(crypto)</B></A> - 
Constructor in  class <A HREF="X509CertificateGenerator.html">X509CertificateGenerator</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#X509CertificateGeneratorECCTest"><B>X509CertificateGeneratorECCTest()</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="GLOBALS.html#X509CertificateGeneratorRSATest"><B>X509CertificateGeneratorRSATest()</B></A> - 
Class method in  class <A HREF="GLOBALS.html">GLOBALS</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#"><B>X509Name</B></A> - 
 class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="X509Name.html#constructor_detail"><B>X509Name()</B></A> - 
Constructor in  class <A HREF="X509Name.html">X509Name</A>
<DD>&nbsp;
</DL>

<DL>
<DT><A HREF="TestCaseRunner.html#xml"><B>xml</B></A> - 
Instance field in  class <A HREF="TestCaseRunner.html">TestCaseRunner</A>
<DD>&nbsp;
</DL>

<HR>

<!-- 
   Listing of letters
-->
&nbsp;<A HREF="index-all.html#__A__">A</A>&nbsp;<A HREF="index-all.html#__B__">B</A>&nbsp;<A HREF="index-all.html#__C__">C</A>&nbsp;<A HREF="index-all.html#__D__">D</A>&nbsp;<A HREF="index-all.html#__E__">E</A>&nbsp;<A HREF="index-all.html#__F__">F</A>&nbsp;<A HREF="index-all.html#__G__">G</A>&nbsp;<A HREF="index-all.html#__H__">H</A>&nbsp;<A HREF="index-all.html#__I__">I</A>&nbsp;<A HREF="index-all.html#__K__">K</A>&nbsp;<A HREF="index-all.html#__L__">L</A>&nbsp;<A HREF="index-all.html#__M__">M</A>&nbsp;<A HREF="index-all.html#__N__">N</A>&nbsp;<A HREF="index-all.html#__O__">O</A>&nbsp;<A HREF="index-all.html#__P__">P</A>&nbsp;<A HREF="index-all.html#__R__">R</A>&nbsp;<A HREF="index-all.html#__S__">S</A>&nbsp;<A HREF="index-all.html#__T__">T</A>&nbsp;<A HREF="index-all.html#__U__">U</A>&nbsp;<A HREF="index-all.html#__V__">V</A>&nbsp;<A HREF="index-all.html#__W__">W</A>&nbsp;<A HREF="index-all.html#__X__">X</A>


<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD-->
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Index</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="index-all.html" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CIODDO
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CIODDO";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CIO.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonAuthenticationObjectAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CIODDO</H2>
<PRE>Object
   |
   +--<b>PKCS15_CIODDO</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CIODDO</B>
   

</DL>
   
   <P>
   <BR/><p>Class to decode CIO DDO objects.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CIODDO ::= SEQUENCE {
 		providerId OBJECT IDENTIFIER OPTIONAL,
 		odfPath Path OPTIONAL,
		ciaInfoPath [0] Path OPTIONAL,
		aid [APPLICATION 15] OCTET STRING (SIZE(1..16)),
		(CONSTRAINED BY {-- Must be an AID in accordance with ISO/IEC 7816-4--})
		OPTIONAL,
		... -- For future extensions
 } -- Context tag 1 is historical and shall not be used
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#ciaInfoPath">ciaInfoPath</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#odfPath">odfPath</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#providerId">providerId</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CIODDO()">PKCS15_CIODDO</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Creates a CIO DDO object from data usually stored in EF_DIR.
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="ciaInfoPath"><!-- --></A>
   <H3>ciaInfoPath</H3>
   <PRE>Object&nbsp;<B>ciaInfoPath</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="odfPath"><!-- --></A>
   <H3>odfPath</H3>
   <PRE>Object&nbsp;<B>odfPath</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="providerId"><!-- --></A>
   <H3>providerId</H3>
   <PRE>Object&nbsp;<B>providerId</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CIODDO()"><!-- --></A><H3>
PKCS15_CIODDO</H3>
<PRE><B>PKCS15_CIODDO</B>(tlv)</PRE>


<UL>
   Creates a CIO DDO object from data usually stored in EF_DIR.
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO DDO    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CIO.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonAuthenticationObjectAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlineATR
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlineATR";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineCard.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlineATR</H2>
<PRE>Object
   |
   +--<b>OutlineATR</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlineATR</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-OutlineCore.js.html'>OutlineCore.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#atr">atr</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlineATR()">OutlineATR</A></B>(atr)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#selectedListener">selectedListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="atr"><!-- --></A>
   <H3>atr</H3>
   <PRE>Object&nbsp;<B>atr</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlineATR()"><!-- --></A><H3>
OutlineATR</H3>
<PRE><B>OutlineATR</B>(atr)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="selectedListener"><!-- --></A>
   <H3>selectedListener</H3>
   <PRE>void <B>selectedListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="GLOBALS.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineCard.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlineCard
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlineCard";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-explore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineATR.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineDataObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlineCard</H2>
<PRE>Object
   |
   +--<b>OutlineCard</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlineCard</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-explore.js.html'>explore.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#atr">atr</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlineCard()">OutlineCard</A></B>()
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#expandListener">expandListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="atr"><!-- --></A>
   <H3>atr</H3>
   <PRE>Object&nbsp;<B>atr</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlineCard()"><!-- --></A><H3>
OutlineCard</H3>
<PRE><B>OutlineCard</B>()</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="expandListener"><!-- --></A>
   <H3>expandListener</H3>
   <PRE>void <B>expandListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-explore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineATR.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineDataObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
CardOutlineFactory
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="CardOutlineFactory";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-CardOutlineFactory2.0.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="AlgorithmInfo.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="CRLGenerator.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class CardOutlineFactory</H2>
<PRE>Object
   |
   +--<b>CardOutlineFactory</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>CardOutlineFactory</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-CardOutlineFactory2.0.js.html'>CardOutlineFactory2.0.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#CardOutlineFactory()">CardOutlineFactory</A></B>()
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newDataOutline">newDataOutline</A></B>(data, format)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlineApplet">newOutlineApplet</A></B>(instance)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlineATR">newOutlineATR</A></B>(atr)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlineDataObject">newOutlineDataObject</A></B>(df, id, name, format)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlineDF">newOutlineDF</A></B>(card, id, name, profile)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlineEF">newOutlineEF</A></B>(df, name, profile)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlineFCP">newOutlineFCP</A></B>(fcp)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlinePKCS15">newOutlinePKCS15</A></B>(pkcs15, aid, at)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#newOutlineRecord">newOutlineRecord</A></B>(ef, no, efdesc)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="CardOutlineFactory()"><!-- --></A><H3>
CardOutlineFactory</H3>
<PRE><B>CardOutlineFactory</B>()</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="newDataOutline"><!-- --></A>
   <H3>newDataOutline</H3>
   <PRE>Object <B>newDataOutline</B>(data, format)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlineApplet"><!-- --></A>
   <H3>newOutlineApplet</H3>
   <PRE>void <B>newOutlineApplet</B>(instance)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlineATR"><!-- --></A>
   <H3>newOutlineATR</H3>
   <PRE>Object <B>newOutlineATR</B>(atr)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlineDataObject"><!-- --></A>
   <H3>newOutlineDataObject</H3>
   <PRE>Object <B>newOutlineDataObject</B>(df, id, name, format)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlineDF"><!-- --></A>
   <H3>newOutlineDF</H3>
   <PRE>Object <B>newOutlineDF</B>(card, id, name, profile)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlineEF"><!-- --></A>
   <H3>newOutlineEF</H3>
   <PRE>Object <B>newOutlineEF</B>(df, name, profile)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlineFCP"><!-- --></A>
   <H3>newOutlineFCP</H3>
   <PRE>Object <B>newOutlineFCP</B>(fcp)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlinePKCS15"><!-- --></A>
   <H3>newOutlinePKCS15</H3>
   <PRE>Object <B>newOutlinePKCS15</B>(pkcs15, aid, at)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="newOutlineRecord"><!-- --></A>
   <H3>newOutlineRecord</H3>
   <PRE>Object <B>newOutlineRecord</B>(ef, no, efdesc)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-CardOutlineFactory2.0.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="AlgorithmInfo.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="CRLGenerator.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="OutlineCore.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>OutlineCore.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'OutlineCore.js'<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="DataOutline.html">DataOutline</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlineATR.html">OutlineATR</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlineDF.html">OutlineDF</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlineEF.html">OutlineEF</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlineFCP.html">OutlineFCP</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlineRecord.html">OutlineRecord</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core classes to construct card outlines
 */</span>



load(<span class="literal">"FCPDecorator.js"</span>);
load(<span class="literal">"CRTDecorator.js"</span>);
load(<span class="literal">"ARRDecorator.js"</span>);


<span class="comment">//</span>
<span class="comment">// CTOR - ATR Outline</span>
<span class="comment">// </span>
<span class="reserved">function</span> OutlineATR(atr) {
	<span class="reserved">this</span>.atr = atr;

        <span class="comment">// Create OutlineNode object and register in ATR object</span>
        var view = new OutlineNode(<span class="literal">"ATR="</span> + <span class="reserved">this</span>.atr.toByteString().toString(HEX));
        view.setIcon(<span class="literal">"atr"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
}


OutlineATR.<span class="reserved">prototype</span>.selectedListener = <span class="reserved">function</span>() {
	print(<span class="reserved">this</span>.atr);
}


<span class="comment">//</span>
<span class="comment">// CTOR - FCP Outline</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineFCP(fcp) {
	<span class="reserved">this</span>.fcp = fcp;

        <span class="comment">// Create OutlineNode object and register in FCP object</span>
        var view = new OutlineNode(<span class="literal">"FCP="</span> + <span class="reserved">this</span>.fcp.toString(HEX));
        view.setIcon(<span class="literal">"header"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
        
        try	{
        	var asn = new ASN1(<span class="reserved">this</span>.fcp);
        	FCPDecorator(asn);
		view.insert(asn);
        }
        catch(e) {
        	print(<span class="literal">"Unable to decode FCP structure"</span>);
        }
}



<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for DFs</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineDF(card, id, name, profile) {
        <span class="reserved">this</span>.card = card;
        <span class="reserved">this</span>.id = id;

        <span class="comment">// Create OutlineNode object and register in OutlineDF object</span>
        var view = new OutlineNode(name, true);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
        
        <span class="reserved">this</span>.profile = profile;
}



<span class="comment">//</span>
<span class="comment">// Event handler for expand notifications</span>
<span class="comment">//</span>
OutlineDF.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {

        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;

        var view = <span class="reserved">this</span>.view;
        var eflist = <span class="reserved">this</span>.profile.EF;
        
        try	{
        	var df = new CardFile(<span class="reserved">this</span>.card, <span class="reserved">this</span>.id);
		<span class="reserved">this</span>.df = df;
				
		var fcp = df.getFCPBytes();
		<span class="reserved">if</span> (fcp &amp;&amp; (fcp.length &gt; 1)) {
			var fcpmodel = new OutlineFCP(fcp);
			view.insert(fcpmodel.view);	
		}
				
		<span class="reserved">for</span> (var i = 0; i &lt; eflist.length; i++) {
		        var ef = new OutlineEF(<span class="reserved">this</span>.df, eflist[i].name, eflist[i]);
		        view.insert(ef.view);
		}
	}
	catch(e) {
		print(e);
	}
        
        <span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for EFs</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineEF(df, name, profile) {
        <span class="reserved">this</span>.df = df;

        <span class="comment">// Create OutlineNode object and register in OutlineEF object</span>
        var view = new OutlineNode(name, true);
        view.setIcon(<span class="literal">"document"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
        
        <span class="reserved">this</span>.profile = profile;
}



<span class="comment">//</span>
<span class="comment">// Event handler for expand notification</span>
<span class="comment">//</span>
OutlineEF.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;

        var view = <span class="reserved">this</span>.view;
        var efdesc = <span class="reserved">this</span>.profile;

	try	{        
	        var ef = new CardFile(<span class="reserved">this</span>.df, <span class="literal">":"</span> + efdesc.fid);
	}
	catch(e) {
		print(e);
		<span class="reserved">return</span>;
	}
		
	var isTransparent = true;
	
	<span class="reserved">if</span> (efdesc.fid.length &gt; 2) {  <span class="comment">// Select by FID or SFI</span>
		var fcp = ef.getFCPBytes();
		<span class="reserved">if</span> (fcp &amp;&amp; (fcp.length &gt; 1)) {
			var fcpmodel = new OutlineFCP(fcp);
			view.insert(fcpmodel.view);
			isTransparent = ef.isTransparent();
		} <span class="reserved">else</span> {
			isTransparent = (efdesc.type == <span class="literal">"T"</span>);
		}
	}
		
        <span class="reserved">if</span> (isTransparent) {
        	var filesize = -1;
        	<span class="reserved">if</span> (fcp) {
	        	filesize = ef.getLength();
	       	
	        	<span class="reserved">if</span> (filesize &gt; 1024)
	        		print(<span class="literal">"Please wait, reading "</span> + filesize + <span class="literal">" bytes..."</span>);
	        } <span class="reserved">else</span> {
        		print(<span class="literal">"Please wait, reading card..."</span>);
	        }
        		
		try	{
			<span class="reserved">if</span> (filesize &gt; 0) {
				print(<span class="literal">"reading "</span> + filesize);
		                var bs = ef.readBinary(0, filesize);
		        } <span class="reserved">else</span> {
		                var bs = ef.readBinary();
		        }
	        }
	        catch(e) {
	       		print(e);
	       		<span class="reserved">this</span>.expanded = true;
	       		<span class="reserved">return</span>;
		}

		var bindata = new DataOutline(bs, efdesc.format);
		view.insert(bindata.view);
		
        } <span class="reserved">else</span> {
                <span class="reserved">for</span> (var rec = 1; rec &lt; 255; rec++) {
                        try     {
                                ef.readRecord(rec);
                                var record = new OutlineRecord(ef, rec, efdesc);
                                view.insert(record.view);
                        }
                        catch(e) {
                              	<span class="reserved">if</span> ((e instanceof GPError) &amp;&amp; (e.reason == 0x6A83))
                			break;
                                print(e);
                                break;
                        }
                }
        }
        
        <span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - Outline for records in an EF</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineRecord(ef, no, efdesc) {
        <span class="reserved">this</span>.ef = ef;
        <span class="reserved">this</span>.no = no;
        <span class="reserved">this</span>.efdesc = efdesc;
                
        <span class="comment">// Create OutlineNode object and register in OutlineRecord object</span>
        var view = new OutlineNode(<span class="literal">"Record#"</span> + no, true);
        view.setIcon(<span class="literal">"record"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Expand event handler for records</span>
<span class="comment">//</span>
OutlineRecord.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;

        var view = <span class="reserved">this</span>.view;
        var ef = <span class="reserved">this</span>.ef;

        var bs = ef.readRecord(<span class="reserved">this</span>.no);

	var bindata = new DataOutline(bs, <span class="reserved">this</span>.efdesc.format);
	view.insert(bindata.view);
        
        <span class="reserved">this</span>.expanded = true;
}



<span class="comment">//</span>
<span class="comment">// CTOR - Binary data outline</span>
<span class="comment">//</span>
<span class="reserved">function</span> DataOutline(data, format) {
	<span class="reserved">this</span>.data = data;

	var ddata = data;
	<span class="reserved">if</span> (ddata.length &gt; 256) {
		ddata = data.bytes(0, 256);
	}
	
	var view = new OutlineNode(ddata.toString(HEX));
        view.setIcon(<span class="literal">"binary"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;
	
	<span class="reserved">if</span> (((format == <span class="literal">"asn1"</span>) || (format == <span class="literal">"tlvlist"</span>)) &amp;&amp; (data.length &gt;= 2)) {
                var total = data.length;
                
                <span class="reserved">while</span>(total &gt;= 2) {
                	try	{
	                        var asn = new ASN1(data);
	                }
	            	catch(e) {
	            		print(<span class="literal">"Exception creating ASN.1 object: "</span> + e);
	            		break;
	            	}
                        view.insert(asn);
                        total -= asn.size;
                        
                        <span class="reserved">if</span> (format == <span class="literal">"asn1"</span>) {
                                break;
                        }

                        data = data.bytes(asn.size);
                        <span class="reserved">if</span> ((data.length == 0) || (data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
                                break;
                        }
                }
                        
                <span class="reserved">if</span> (total &gt; 0) {
                        var sparecontent = new OutlineNode(total + <span class="literal">" spare bytes"</span>);
                        view.insert(sparecontent);
                }
        }
}



DataOutline.<span class="reserved">prototype</span>.selectedListener = <span class="reserved">function</span>() {
	print(<span class="literal">"--------------------------------------------------------------------------------"</span>);
	print(<span class="reserved">this</span>.data);
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 CRTDecorator.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" CRTDecorator.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-CRTDecorator.js.html" 
                                            target="classFrame">CRTDecorator.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


</TABLE>

</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="CardOutlineFactory.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>CardOutlineFactory.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'CardOutlineFactory.js'<BR/><BR/>
	
</p>

<hr>



<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Core classes to construct card outlines
 */</span>



load(<span class="literal">"FCPDecorator.js"</span>);
load(<span class="literal">"CRTDecorator.js"</span>);
load(<span class="literal">"ARRDecorator.js"</span>);



<span class="comment">//</span>
<span class="comment">// CTOR - OutlineCard default</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineCard(outlineFactory, card, applicationFactory, aidlist) {

	<span class="reserved">this</span>.factory = outlineFactory;
        <span class="reserved">this</span>.card = card;
	<span class="reserved">this</span>.af = applicationFactory;
	<span class="reserved">this</span>.aidlist = aidlist;
		
        <span class="reserved">this</span>.atr = card.reset(Card.RESET_COLD);

        <span class="comment">// Create OutlineNode object and register in card object</span>
        
        var name = card.profile.CardManufacturerProduct.Name;

	<span class="reserved">if</span> (!name) {
		name = <span class="literal">"Card"</span>;
	}
	
        var view = new OutlineNode(name);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Expand clicked on node</span>
<span class="comment">//</span>
<span class="comment">// Read application list from EF_DIR or from card profile</span>
<span class="comment">//</span>
OutlineCard.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;
                
        var view = <span class="reserved">this</span>.view;

	<span class="comment">//</span>
	<span class="comment">// Display ATR</span>
	<span class="comment">//</span>
	var atrnode = <span class="reserved">this</span>.factory.newOutlineATR(<span class="reserved">this</span>.atr);
	
	view.insert(atrnode.view);

	<span class="comment">//</span>
	<span class="comment">// Get list of application instances from card profile</span>
	<span class="comment">//</span>
	var applicationInstances = <span class="reserved">this</span>.card.profile.ApplicationInstances.ApplicationInstance;

	<span class="comment">//</span>
	<span class="comment">// Make sure that we got a list</span>
	<span class="comment">//	</span>
	assert(applicationInstances instanceof Array);

        <span class="comment">//</span>
        <span class="comment">// Try reading the EF_DIR</span>
        <span class="comment">//</span>
	var hasEFDIR = true;
	
	try	{
		var efdir = new CardFile(<span class="reserved">this</span>.card, <span class="literal">":2F00"</span>);
	}
	catch(e) {
		print(<span class="literal">"Exception selecting EF_DIR. Assuming no EF_DIR...\n"</span> + e);
		hasEFDIR = false;
	}

	<span class="comment">//</span>
	<span class="comment">// Create a list of application identifier</span>
	<span class="comment">//</span>
	var aidlist;
	
	<span class="reserved">if</span> (<span class="reserved">this</span>.aidlist) {
		aidlist = <span class="reserved">this</span>.aidlist;
	} <span class="reserved">else</span> {
		aidlist = new Array();
	}
	
	<span class="reserved">if</span> (hasEFDIR) {
		<span class="comment">//</span>
		<span class="comment">// Add MF to the list of applications</span>
		<span class="comment">//</span>
		aidlist.push(new ByteString(<span class="literal">"3F00"</span>, HEX));

		<span class="comment">//		</span>
		<span class="comment">// Read all AIDs from EF_DIR</span>
		<span class="comment">//</span>
		
	        <span class="reserved">for</span> (var rec = 1; rec &lt; 255; rec++) {
        	        var record;
	                try     {
	                        record = efdir.readRecord(rec);
	                }
	                catch(e) {
	                	<span class="reserved">if</span> ((e instanceof GPError) &amp;&amp; (e.reason == 0x6A83))
	                		break;
	                        print(e);
	                        break;
	                }

	                var tlv = new ASN1(record);
                
	                <span class="reserved">for</span> (var i = 0; i &lt; tlv.elements; i++) {
	                        var t = tlv.get(i);
	                        switch(t.tag) {
	                        case 0x4F:
	                                aid = t.value;
	                                <span class="reserved">if</span> (!aidlist[aid])
		                                aidlist.push(aid);
	                                break;
	                        }
	                }
		}
	} <span class="reserved">else</span> {
		<span class="comment">//</span>
		<span class="comment">// Create application list from card profile</span>
		<span class="comment">//</span>
        	<span class="reserved">for</span> (aid in  applicationInstances) {
        		<span class="reserved">if</span> (aid == <span class="literal">"arrayIndex"</span>)
        			continue;
        		aidlist.push(new ByteString(aid, HEX));
        	}
	}

	<span class="comment">//</span>
	<span class="comment">// Sort the list of application identifier</span>
	<span class="comment">//	</span>
	aidlist.sort();
	
	<span class="reserved">for</span> (var i = 0; i &lt; aidlist.length; i++) {
		var aid = aidlist[i];
		var applinstance = applicationInstances[aid.toString(HEX)];
		<span class="reserved">if</span> (applinstance) {
<span class="comment">/*
			print("from Card Profile: " + applinstance);
			print("  Label     : " + applinstance.Label);
			print("  AID       : " + applinstance.AID);
			print("  ProfileID : " + applinstance.ProfileID);
*/</span>
			var uniqueId = new ByteString(applinstance.ProfileID, HEX);
					
			var instance = <span class="reserved">this</span>.af.getApplicationInstance(new Object(), aid, <span class="reserved">this</span>.card, uniqueId);
				
                        var struct = null;
                        
                        <span class="reserved">if</span> (instance.profile.DataStructure) {
                        	struct = instance.profile.DataStructure.FileStructure;
                        }
                        
                        var path;
                        <span class="reserved">if</span> (aid.length &lt;= 2) {
	                        path = <span class="literal">":"</span> + aid.toString(HEX);
                        } <span class="reserved">else</span> {
                                path = <span class="literal">"#"</span> + aid.toString(HEX);
                        }
		        
		        var applentry;
		        <span class="reserved">if</span> (struct) {                
	                        applentry = <span class="reserved">this</span>.factory.newOutlineDF(<span class="reserved">this</span>.card, path, applinstance.Label, struct);
	                } <span class="reserved">else</span> {
	                        applentry = <span class="reserved">this</span>.factory.newOutlineApplet(instance);
	                }
                        view.insert(applentry.view);
      		} <span class="reserved">else</span> {
      			print(<span class="literal">"No profile found for aid "</span> + aid);
      		}
	}

        <span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - ATR Outline</span>
<span class="comment">// </span>
<span class="reserved">function</span> OutlineATR(factory, atr) {
	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.atr = atr;

        <span class="comment">// Create OutlineNode object and register in ATR object</span>
        var view = new OutlineNode(<span class="literal">"ATR="</span> + <span class="reserved">this</span>.atr.toByteString().toString(HEX));
        view.setIcon(<span class="literal">"atr"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
}


OutlineATR.<span class="reserved">prototype</span>.selectedListener = <span class="reserved">function</span>() {
	print(<span class="reserved">this</span>.atr);
}





<span class="comment">//</span>
<span class="comment">// CTOR - FCP Outline</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineFCP(factory, fcp) {
	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.fcp = fcp;

        <span class="comment">// Create OutlineNode object and register in FCP object</span>
        var view = new OutlineNode(<span class="literal">"FCP="</span> + <span class="reserved">this</span>.fcp.toString(HEX));
        view.setIcon(<span class="literal">"header"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;

	<span class="reserved">if</span> ((fcp.byteAt(0) == 0x62) ||
	    (fcp.byteAt(0) == 0x64) ||
	    (fcp.byteAt(0) == 0x6F)) {
	        try	{
	        	var asn = new ASN1(<span class="reserved">this</span>.fcp);
	        	FCPDecorator(asn);
			view.insert(asn);
	        }
	        catch(e) {
	        	print(e);
	        	print(<span class="literal">"Unable to decode FCP structure"</span>);
	        }
	} <span class="reserved">else</span> {
	}
}





<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for DFs</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineDF(factory, card, id, name, profile) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;
		
	<span class="reserved">this</span>.factory = factory;
        <span class="reserved">this</span>.card = card;
        <span class="reserved">this</span>.id = id;

        <span class="comment">// Create OutlineNode object and register in OutlineDF object</span>
        var view = new OutlineNode(name, true);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
        
        <span class="reserved">this</span>.profile = profile;
}





<span class="comment">//</span>
<span class="comment">// Event handler for expand notifications</span>
<span class="comment">//</span>
OutlineDF.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {

        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;

        var view = <span class="reserved">this</span>.view;
        var eflist = <span class="reserved">this</span>.profile.EF;
        
        try	{
        	var df = new CardFile(<span class="reserved">this</span>.card, <span class="reserved">this</span>.id);
		<span class="reserved">this</span>.df = df;
				
		var fcp = df.getFCPBytes();
		<span class="reserved">if</span> (fcp &amp;&amp; (fcp.length &gt; 1)) {
			var fcpmodel = <span class="reserved">this</span>.factory.newOutlineFCP(fcp);
			view.insert(fcpmodel.view);	
		}
				
		<span class="reserved">for</span> (var i = 0; i &lt; eflist.length; i++) {
		        var ef = <span class="reserved">this</span>.factory.newOutlineEF(<span class="reserved">this</span>.df, eflist[i].name, eflist[i]);
		        view.insert(ef.view);
		}
	}
	catch(e) {
		print(e);
	}
        
        <span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for EFs</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineEF(factory, df, name, profile) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
        <span class="reserved">this</span>.df = df;

        <span class="comment">// Create OutlineNode object and register in OutlineEF object</span>
        var view = new OutlineNode(name, true);
        view.setIcon(<span class="literal">"document"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
        
        <span class="reserved">this</span>.profile = profile;
}



<span class="comment">//</span>
<span class="comment">// Event handler for expand notification</span>
<span class="comment">//</span>
OutlineEF.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;

        var view = <span class="reserved">this</span>.view;
        var efdesc = <span class="reserved">this</span>.profile;

	try	{
	        var ef = new CardFile(<span class="reserved">this</span>.df, <span class="literal">":"</span> + efdesc.fid);
	}
	catch(e) {
		print(e);
		<span class="reserved">return</span>;
	}
		
	var isTransparent = true;
	var fcp = ef.getFCPBytes();
	var filelength = -1;
	<span class="reserved">if</span> (fcp &amp;&amp; (fcp.length &gt; 1)) {
		var fcpmodel = <span class="reserved">this</span>.factory.newOutlineFCP(fcp);
		view.insert(fcpmodel.view);
		isTransparent = ef.isTransparent();
		filelength = ef.getLength();
	} <span class="reserved">else</span> {
		isTransparent = (efdesc.type == <span class="literal">"T"</span>);
	}
		
        <span class="reserved">if</span> (isTransparent) {
		try	{
			<span class="reserved">if</span> (filelength &gt; 0) {
		                var bs = ef.readBinary(0, filelength);
		        } <span class="reserved">else</span> {
		                var bs = ef.readBinary();
		        }
	        }
	        catch(e) {
	       		print(e);
	       		<span class="reserved">this</span>.expanded = true;
	       		<span class="reserved">return</span>;
		}

		var bindata = <span class="reserved">this</span>.factory.newDataOutline(bs, efdesc.format);
		view.insert(bindata.view);
		
        } <span class="reserved">else</span> {
                <span class="reserved">for</span> (var rec = 1; rec &lt; 255; rec++) {
                        try     {
                                ef.readRecord(rec);
                                var record = <span class="reserved">this</span>.factory.newOutlineRecord(ef, rec, efdesc);
                                view.insert(record.view);
                        }
                        catch(e) {
                              	<span class="reserved">if</span> ((e instanceof GPError) &amp;&amp; (e.reason == 0x6A83))
                			break;
                                print(e);
                                break;
                        }
                }
        }
        
        <span class="reserved">this</span>.expanded = true;
}




<span class="comment">//</span>
<span class="comment">// CTOR - Outline node for data object retrievable with GET_DATA</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineDataObject(factory, df, id, name, format) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
        <span class="reserved">this</span>.df = df;
	<span class="reserved">this</span>.id = id;
	<span class="reserved">this</span>.format = format;
		
        <span class="comment">// Create OutlineNode object and register in OutlineEF object</span>
        print(name + <span class="literal">"("</span> + id.toString(16) + <span class="literal">")"</span>);
        var view = new OutlineNode(name + <span class="literal">"("</span> + id.toString(16) + <span class="literal">")"</span>, true);
        view.setIcon(<span class="literal">"document"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Event handler for expand notification</span>
<span class="comment">//</span>
OutlineDataObject.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;

        var view = <span class="reserved">this</span>.view;

	var card = <span class="reserved">this</span>.df.card;
	
	var bs = card.sendApdu(0x00, 0xCA, <span class="reserved">this</span>.id &gt;&gt; 8, <span class="reserved">this</span>.id &amp; 0xFF, 0);
	
	<span class="reserved">if</span> (card.SW != 0x9000) {
		var bs = card.sendApdu(0x80, 0xCA, <span class="reserved">this</span>.id &gt;&gt; 8, <span class="reserved">this</span>.id &amp; 0xFF, 0);
	}
	
	<span class="reserved">if</span> (card.SW != 0x9000) {
		print(<span class="literal">"Error getting object: "</span> + card.SWMSG);
	} <span class="reserved">else</span> {
		var bindata = <span class="reserved">this</span>.factory.newDataOutline(bs, <span class="reserved">this</span>.format);
		view.insert(bindata.view);
        }
        
        <span class="reserved">this</span>.expanded = true;
}




<span class="comment">//</span>
<span class="comment">// CTOR - Outline for records in an EF</span>
<span class="comment">//</span>
<span class="reserved">function</span> OutlineRecord(factory, ef, no, efdesc) {
	<span class="reserved">this</span>.factory = factory;
        <span class="reserved">this</span>.ef = ef;
        <span class="reserved">this</span>.no = no;
        <span class="reserved">this</span>.efdesc = efdesc;
                
        <span class="comment">// Create OutlineNode object and register in OutlineRecord object</span>
        var view = new OutlineNode(<span class="literal">"Record#"</span> + no, true);
        view.setIcon(<span class="literal">"record"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Expand event handler for records</span>
<span class="comment">//</span>
OutlineRecord.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;

        var view = <span class="reserved">this</span>.view;
        var ef = <span class="reserved">this</span>.ef;

        var bs = ef.readRecord(<span class="reserved">this</span>.no);

	var bindata = <span class="reserved">this</span>.factory.newDataOutline(bs, <span class="reserved">this</span>.efdesc.format);
	view.insert(bindata.view);
        
        <span class="reserved">this</span>.expanded = true;
}





<span class="comment">//</span>
<span class="comment">// CTOR - Binary data outline</span>
<span class="comment">//</span>
<span class="reserved">function</span> DataOutline(factory, data, format) {
	<span class="reserved">if</span> (arguments.length == 0)
		<span class="reserved">return</span>;

	<span class="reserved">this</span>.factory = factory;
	<span class="reserved">this</span>.data = data;
	<span class="reserved">this</span>.format = format;
	
	var ddata = data;
	<span class="reserved">if</span> (ddata.length &gt; 256) {
		ddata = data.bytes(0, 256);
	}
	
	var view = new OutlineNode(ddata.toString(HEX));
        view.setIcon(<span class="literal">"binary"</span>);
	view.setUserObject(<span class="reserved">this</span>);
	<span class="reserved">this</span>.view = view;
	<span class="reserved">this</span>.decorate(format);
}



DataOutline.<span class="reserved">prototype</span>.decorate = <span class="reserved">function</span>(format) {

	var view = <span class="reserved">this</span>.view;
	var data = <span class="reserved">this</span>.data;
		
	<span class="reserved">if</span> (format &amp;&amp; ((format.substr(0, 4) == <span class="literal">"asn1"</span>) || (format.substr(0, 7) == <span class="literal">"tlvlist"</span>)) &amp;&amp; (data.length &gt;= 2)) {
                var total = data.length;
                
                <span class="reserved">while</span>(total &gt;= 2) {
                	try	{
	                        var asn = new ASN1(data);
	                }
	                catch(e) {
	                	print(<span class="literal">"Error in TLV structure: "</span> + e);
	                	<span class="reserved">return</span>;
	                }
	                
                        <span class="reserved">this</span>.asn = asn;
                        <span class="reserved">this</span>.asn1DecoratorHook(format);
                        view.insert(asn);
                        total -= asn.size;
                        
                        <span class="reserved">if</span> (format.substr(0, 4) == <span class="literal">"asn"</span>) {
                                break;
                        }

                        data = data.bytes(asn.size);
                        <span class="reserved">if</span> ((data.length == 0) || (data.byteAt(0) == 0x00) || (data.byteAt(0) == 0xFF)) {
                                break;
                        }
                }
                        
                <span class="reserved">if</span> (total &gt; 0) {
                        var sparecontent = new OutlineNode(total + <span class="literal">" spare bytes"</span>);
                        view.insert(sparecontent);
                }
        }
}



DataOutline.<span class="reserved">prototype</span>.asn1DecoratorHook = <span class="reserved">function</span>(format) {
	var i = format.indexOf(<span class="literal">"."</span>);
	
	<span class="reserved">if</span> (i &gt; 0) {
		switch(format.substr(i + 1)) {
		case <span class="literal">"arr"</span> :
			ARRDecorator(<span class="reserved">this</span>.asn);
			break;
		}
	}
}



DataOutline.<span class="reserved">prototype</span>.selectedListener = <span class="reserved">function</span>() {
	print(<span class="literal">"--------------------------------------------------------------------------------"</span>);
	print(<span class="reserved">this</span>.data);

	var i = 0;
	
	<span class="reserved">if</span> (<span class="reserved">this</span>.format) {
		i = <span class="reserved">this</span>.format.indexOf(<span class="literal">"."</span>);
	}
	
	<span class="reserved">if</span> (i &gt; 0) {
		switch(<span class="reserved">this</span>.format.substr(i + 1)) {
		case <span class="literal">"x509"</span> :
			try 	{
				var x509 = new X509(<span class="reserved">this</span>.data);
				print(<span class="literal">"Decoded certificate:"</span>);
				print(x509.toString());
			}
			catch(e) {
				print(e);
			}
			break;
		}
	}
	
}





<span class="comment">//</span>
<span class="comment">// CTOR - OutlineFactory</span>
<span class="comment">// Derive from this class to include custom made outline elements</span>
<span class="comment">//</span>
<span class="reserved">function</span> CardOutlineFactory() {
	
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineATR object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineATR = <span class="reserved">function</span>(atr) {
	<span class="reserved">return</span> new OutlineATR(<span class="reserved">this</span>, atr);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineDF object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineDF = <span class="reserved">function</span>(card, id, name, profile) {
	<span class="reserved">return</span> new OutlineDF(<span class="reserved">this</span>, card, id, name, profile);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineApplet object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineApplet = <span class="reserved">function</span>(instance) {
	throw new GPError(<span class="literal">"CardOutlineFactory"</span>, GPError.INVALID_USAGE, 0, <span class="literal">"Must overwrite newOutlineApplet to use explorer functionality"</span>);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineEF object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineEF = <span class="reserved">function</span>(df, name, profile) {
	<span class="reserved">return</span> new OutlineEF(<span class="reserved">this</span>, df, name, profile);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineDataObject object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineDataObject = <span class="reserved">function</span>(df, id, name, format) {
	<span class="reserved">return</span> new OutlineDataObject(<span class="reserved">this</span>, df, id, name, format);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineFCP object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineFCP = <span class="reserved">function</span>(fcp) {
	<span class="reserved">return</span> new OutlineFCP(<span class="reserved">this</span>, fcp);
}



<span class="comment">//</span>
<span class="comment">// Method to create new OutlineRecord object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newOutlineRecord = <span class="reserved">function</span>(ef, no, efdesc) {
	<span class="reserved">return</span> new OutlineRecord(<span class="reserved">this</span>, ef, no, efdesc);
}



<span class="comment">//</span>
<span class="comment">// Method to create new DataOutline object</span>
<span class="comment">//</span>
<span class="comment">// Overwrite if you want to tailor this behaviour</span>
<span class="comment">//</span>
CardOutlineFactory.<span class="reserved">prototype</span>.newDataOutline = <span class="reserved">function</span>(data, format) {
	<span class="reserved">return</span> new DataOutline(<span class="reserved">this</span>, data, format);
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML>
<HEAD>
<TITLE>
 API Help 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" API Help";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="help-doc.html" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<HR>
<CENTER>
<H1>
How This API Document Is Organized</H1>
</CENTER>
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.<H3>
Class</H3>
<BLOCKQUOTE>

<P>
Each class has its own separate page. Each of these pages has three sections consisting of a class description, summary tables, and detailed member descriptions:<UL>
<LI>Class inheritance diagram<LI>Direct Subclasses<LI>Class declaration<LI>Class description
<P>
<LI>Field Summary<LI>Constructor Summary<LI>Method Summary
<P>
<LI>Field Detail<LI>Constructor Detail<LI>Method Detail</UL>
Each summary entry contains the first sentence from the detailed description for that item. </BLOCKQUOTE>
<!--H3>
Tree (Class Hierarchy)</H3>
<BLOCKQUOTE>
There is a <A HREF="overview-tree.html">Class Hierarchy</A> page for all classes. The hierarchy page contains a list of classes. The classes are organized by inheritance structure starting with <code>Object</code>.<UL>
</BLOCKQUOTE-->
<!-- H3>
Deprecated API</H3>
<BLOCKQUOTE>
The <A HREF="deprecated-list.html">Deprecated API</A> page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.</BLOCKQUOTE-->
<H3>
Index</H3>
<BLOCKQUOTE>
The <A HREF="index-all.html">Index</A> contains an alphabetic list of all classes, constructors, methods, and fields.</BLOCKQUOTE>
<H3>
Prev/Next</H3>
These links take you to the next or previous class, interface, package, or related page.<H3>
Frames/No Frames</H3>
These links show and hide the HTML frames.  All pages are available with or without frames.
<P>
<FONT SIZE="-1">
<EM>
This help file applies to API documentation generated using the standard doclet.</EM>
</FONT>
<BR>
<HR>

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Help</B></FONT>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="help-doc.html" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlineRecord
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlineRecord";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlinePKCS15.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS10Generator.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlineRecord</H2>
<PRE>Object
   |
   +--<b>OutlineRecord</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlineRecord</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-OutlineCore.js.html'>OutlineCore.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#ef">ef</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#efdesc">efdesc</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#no">no</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlineRecord()">OutlineRecord</A></B>(ef, no, efdesc)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#expandListener">expandListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="ef"><!-- --></A>
   <H3>ef</H3>
   <PRE>Object&nbsp;<B>ef</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="efdesc"><!-- --></A>
   <H3>efdesc</H3>
   <PRE>Object&nbsp;<B>efdesc</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="no"><!-- --></A>
   <H3>no</H3>
   <PRE>Object&nbsp;<B>no</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlineRecord()"><!-- --></A><H3>
OutlineRecord</H3>
<PRE><B>OutlineRecord</B>(ef, no, efdesc)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="expandListener"><!-- --></A>
   <H3>expandListener</H3>
   <PRE>void <B>expandListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlinePKCS15.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS10Generator.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestProcedure
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestProcedure";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestProcedure.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestLogFile.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestProcedureRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestProcedure</H2>
<PRE>Object
   |
   +--<b>TestProcedure</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestProcedure</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-TestProcedure.js.html'>TestProcedure.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestProcedure()">TestProcedure</A></B>(name, testgroup, parameter)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#assertEquals">assertEquals</A></B>(first, second, message)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#assertTrue">assertTrue</A></B>(result, message)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#log">log</A></B>(message)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#run">run</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#setUp">setUp</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#tearDown">tearDown</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestProcedure()"><!-- --></A><H3>
TestProcedure</H3>
<PRE><B>TestProcedure</B>(name, testgroup, parameter)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="assertEquals"><!-- --></A>
   <H3>assertEquals</H3>
   <PRE>void <B>assertEquals</B>(first, second, message)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="assertTrue"><!-- --></A>
   <H3>assertTrue</H3>
   <PRE>void <B>assertTrue</B>(result, message)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="log"><!-- --></A>
   <H3>log</H3>
   <PRE>void <B>log</B>(message)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="run"><!-- --></A>
   <H3>run</H3>
   <PRE>void <B>run</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="setUp"><!-- --></A>
   <H3>setUp</H3>
   <PRE>void <B>setUp</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="tearDown"><!-- --></A>
   <H3>tearDown</H3>
   <PRE>void <B>tearDown</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestProcedure.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestLogFile.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestProcedureRunner.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
GLOBALS
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="GLOBALS";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="File.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineATR.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class GLOBALS</H2>
<PRE>Object
   |
   +--<b>GLOBALS</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>GLOBALS</B>
   

</DL>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!ARRDecorator">ARRDecorator</A></B>(asn1)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!CRLGeneratorTest">CRLGeneratorTest</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!CRTDecorator">CRTDecorator</A></B>(asn1)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!FCPDecorator">FCPDecorator</A></B>(asn1)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Number</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!IntFromBitString">IntFromBitString</A></B>(b)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Return the BIT STRING as integer value
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!PKCS10GeneratorTest">PKCS10GeneratorTest</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!SADecorator">SADecorator</A></B>(asn1)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!X509CertificateGeneratorECCTest">X509CertificateGeneratorECCTest</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!X509CertificateGeneratorRSATest">X509CertificateGeneratorRSATest</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="!s!ARRDecorator"><!-- --></A>
   <H3>ARRDecorator</H3>
   <PRE>&lt;static&gt; void <B>ARRDecorator</B>(asn1)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!CRLGeneratorTest"><!-- --></A>
   <H3>CRLGeneratorTest</H3>
   <PRE>&lt;static&gt; void <B>CRLGeneratorTest</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!CRTDecorator"><!-- --></A>
   <H3>CRTDecorator</H3>
   <PRE>&lt;static&gt; void <B>CRTDecorator</B>(asn1)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!FCPDecorator"><!-- --></A>
   <H3>FCPDecorator</H3>
   <PRE>&lt;static&gt; void <B>FCPDecorator</B>(asn1)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!IntFromBitString"><!-- --></A>
   <H3>IntFromBitString</H3>
   <PRE>&lt;static&gt; Number <B>IntFromBitString</B>(b)</PRE>
   
      <UL>Return the BIT STRING as integer value</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  ASN.1 BIT STRING to convert  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the converted integer   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!PKCS10GeneratorTest"><!-- --></A>
   <H3>PKCS10GeneratorTest</H3>
   <PRE>&lt;static&gt; Object <B>PKCS10GeneratorTest</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!SADecorator"><!-- --></A>
   <H3>SADecorator</H3>
   <PRE>&lt;static&gt; void <B>SADecorator</B>(asn1)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!X509CertificateGeneratorECCTest"><!-- --></A>
   <H3>X509CertificateGeneratorECCTest</H3>
   <PRE>&lt;static&gt; void <B>X509CertificateGeneratorECCTest</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!X509CertificateGeneratorRSATest"><!-- --></A>
   <H3>X509CertificateGeneratorRSATest</H3>
   <PRE>&lt;static&gt; void <B>X509CertificateGeneratorRSATest</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="File.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineATR.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 OutlineCore.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" OutlineCore.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-OutlineCore.js.html" 
                                            target="classFrame">OutlineCore.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="DataOutline.html" TARGET="classFrame">DataOutline</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineATR.html" TARGET="classFrame">OutlineATR</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineDF.html" TARGET="classFrame">OutlineDF</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineEF.html" TARGET="classFrame">OutlineEF</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineFCP.html" TARGET="classFrame">OutlineFCP</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="OutlineRecord.html" TARGET="classFrame">OutlineRecord</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="ARRDecorator.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>ARRDecorator.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'ARRDecorator.js'<BR/><BR/>
	
</p>

<hr>



<!-- ========== METHOD SUMMARY =========== -->

	<a name="method_summary"><!-- --></a>
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
			<td colspan=2>
				<font size="+2">
					<b>Method Summary</b>
				</font>
			</td>
		</tr>
	
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;void</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!ARRDecorator">ARRDecorator</a></b>(asn1)
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
	
	</table>
    <p>

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Function to name tags contained in Access Rules (EF.ARR)
 */</span>



<span class="comment">//</span>
<span class="comment">// Identify tags in the Expanded Access Rule found in EF_ARR</span>
<span class="comment">//</span>
<span class="reserved">function</span> ARRDecorator(asn1) {
	var recurse = false;
	var crt = false;
	
	switch(asn1.tag) {
	case 0x80:
		asn1.setName(<span class="literal">"accessMode"</span>);
		break;
	case 0x81:
		asn1.setName(<span class="literal">"commandP2"</span>);
		break;
	case 0x82:
		asn1.setName(<span class="literal">"commandP1"</span>);
		break;
	case 0x83:
		asn1.setName(<span class="literal">"commandP1P2"</span>);
		break;
	case 0x84:
		asn1.setName(<span class="literal">"commandINS"</span>);
		break;
	case 0x85:
		asn1.setName(<span class="literal">"commandINSP2"</span>);
		break;
	case 0x86:
		asn1.setName(<span class="literal">"commandINSP1"</span>);
		break;
	case 0x87:
		asn1.setName(<span class="literal">"commandINSP1P2"</span>);
		break;
	case 0x88:
		asn1.setName(<span class="literal">"commandCLA"</span>);
		break;
	case 0x89:
		asn1.setName(<span class="literal">"commandCLAP2"</span>);
		break;
	case 0x8A:
		asn1.setName(<span class="literal">"commandCLAP1"</span>);
		break;
	case 0x8B:
		asn1.setName(<span class="literal">"commandCLAP1P2"</span>);
		break;
	case 0x8C:
		asn1.setName(<span class="literal">"commandCLAINS"</span>);
		break;
	case 0x8D:
		asn1.setName(<span class="literal">"commandCLAINSP2"</span>);
		break;
	case 0x8E:
		asn1.setName(<span class="literal">"commandCLAINSP1"</span>);
		break;
	case 0x8F:
		asn1.setName(<span class="literal">"commandCLAINSP1P2"</span>);
		break;
	case 0x90:
		asn1.setName(<span class="literal">"always"</span>);
		break;
	case 0x97:
		asn1.setName(<span class="literal">"never"</span>);
		break;
	case 0x9C:
		asn1.setName(<span class="literal">"stateMachineDesc"</span>);
		break;
	case 0x9E:
		asn1.setName(<span class="literal">"securityConditionByte"</span>);
		break;
	case 0xA4:
		asn1.setName(<span class="literal">"authentication(AT)"</span>);
		crt = true;
		break;
	case 0xB4:
		asn1.setName(<span class="literal">"secureMessagingMac(CT)"</span>);
		crt = true;
		break;
	case 0xB6:
		asn1.setName(<span class="literal">"secureMessaging(DST)"</span>);
		crt = true;
		break;
	case 0xB8:
		asn1.setName(<span class="literal">"secureMessagingEnc(CCT)"</span>);
		crt = true;
		break;
	case 0xA0:
		asn1.setName(<span class="literal">"or"</span>);
		recurse = true;
		break;
	case 0xA7:
		asn1.setName(<span class="literal">"not"</span>);
		recurse = true;
		break;
	case 0xAF:
		asn1.setName(<span class="literal">"and"</span>);
		recurse = true;
		break;
	}
	
	<span class="reserved">if</span> (recurse) {
		<span class="reserved">for</span> (var i = 0; i &lt; asn1.elements; i++) {
			ARRDecorator(asn1.get(i));
		}
	}
	
	<span class="reserved">if</span> (crt) {
		<span class="reserved">for</span> (var i = 0; i &lt; asn1.elements; i++) {
			CRTDecorator(asn1.get(i));
		}
	}
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 TestRunner.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" TestRunner.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-TestRunner.js.html" 
                                            target="classFrame">TestRunner.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestCaseRunner.html" TARGET="classFrame">TestCaseRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestGroupRunner.html" TARGET="classFrame">TestGroupRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestLogFile.html" TARGET="classFrame">TestLogFile</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestProcedureRunner.html" TARGET="classFrame">TestProcedureRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestReport.html" TARGET="classFrame">TestReport</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestResult.html" TARGET="classFrame">TestResult</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestRunner.html" TARGET="classFrame">TestRunner</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestStepRunner.html" TARGET="classFrame">TestStepRunner</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 Class Hierarchy
</TITLE>
<LINK REL="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
<SCRIPT>
function asd()
{
parent.document.title=" Class Hierarchy";
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"><A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><b>Overview</b></A></FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev">  &nbsp;<FONT CLASS="NavBarFont1Rev"><b>Tree</b></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><b>Index</b></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><b>Help</b></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD BGCOLOR="#FFFFFF" ALIGN="right" VALIGN="top"><EM>
<B></B></EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
&nbsp;&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<HR>
<H2>Class Hierarchy</H2>

<UL><LI TYPE="circle">Object</LI><UL>
                <LI TYPE="circle"><B><a href='AlgorithmInfo.html'>AlgorithmInfo</a></B></LI> 
                <LI TYPE="circle"><B><a href='CardOutlineFactory.html'>CardOutlineFactory</a></B></LI> 
                <LI TYPE="circle"><B><a href='CRLGenerator.html'>CRLGenerator</a></B></LI> 
                <LI TYPE="circle"><B><a href='DataOutline.html'>DataOutline</a></B></LI> 
                <LI TYPE="circle"><B><a href='ECCUtils.html'>ECCUtils</a></B></LI> 
                <LI TYPE="circle"><B><a href='File.html'>File</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlineATR.html'>OutlineATR</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlineCard.html'>OutlineCard</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlineDataObject.html'>OutlineDataObject</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlineDF.html'>OutlineDF</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlineEF.html'>OutlineEF</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlineFCP.html'>OutlineFCP</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlinePKCS15.html'>OutlinePKCS15</a></B></LI> 
                <LI TYPE="circle"><B><a href='OutlineRecord.html'>OutlineRecord</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS10Generator.html'>PKCS10Generator</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS15.html'>PKCS15</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS15_ApplicationTemplate.html'>PKCS15_ApplicationTemplate</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS15_CIAInfo.html'>PKCS15_CIAInfo</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS15_CIO.html'>PKCS15_CIO</a></B></LI> <UL>
                <LI TYPE="circle"><B><a href='PKCS15_CommonAuthenticationObjectAttributes.html'>PKCS15_CommonAuthenticationObjectAttributes</a></B></LI> <UL>
                <LI TYPE="circle"><B><a href='PKCS15_AuthenticationObject.html'>PKCS15_AuthenticationObject</a></B></LI> </UL>
                <LI TYPE="circle"><B><a href='PKCS15_CommonCertificateAttributes.html'>PKCS15_CommonCertificateAttributes</a></B></LI> <UL>
                <LI TYPE="circle"><B><a href='PKCS15_Certificate.html'>PKCS15_Certificate</a></B></LI> </UL>
                <LI TYPE="circle"><B><a href='PKCS15_CommonDataContainerObjectAttributes.html'>PKCS15_CommonDataContainerObjectAttributes</a></B></LI> <UL>
                <LI TYPE="circle"><B><a href='PKCS15_DataContainerObject.html'>PKCS15_DataContainerObject</a></B></LI> </UL>
                <LI TYPE="circle"><B><a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a></B></LI> <UL>
                <LI TYPE="circle"><B><a href='PKCS15_CommonPrivateKeyAttributes.html'>PKCS15_CommonPrivateKeyAttributes</a></B></LI> <UL>
                <LI TYPE="circle"><B><a href='PKCS15_PrivateKey.html'>PKCS15_PrivateKey</a></B></LI> </UL>
                <LI TYPE="circle"><B><a href='PKCS15_CommonSecretKeyAttributes.html'>PKCS15_CommonSecretKeyAttributes</a></B></LI> <UL>
                <LI TYPE="circle"><B><a href='PKCS15_SecretKey.html'>PKCS15_SecretKey</a></B></LI> </UL></UL></UL>
                <LI TYPE="circle"><B><a href='PKCS15_CIODDO.html'>PKCS15_CIODDO</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS15_PasswordAuthenticationObject.html'>PKCS15_PasswordAuthenticationObject</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS15_Path.html'>PKCS15_Path</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKCS8.html'>PKCS8</a></B></LI> 
                <LI TYPE="circle"><B><a href='PKIXCommon.html'>PKIXCommon</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestCaseRunner.html'>TestCaseRunner</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestGroup.html'>TestGroup</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestGroupRunner.html'>TestGroupRunner</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestLogFile.html'>TestLogFile</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestProcedure.html'>TestProcedure</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestProcedureRunner.html'>TestProcedureRunner</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestReport.html'>TestReport</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestResult.html'>TestResult</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestRunner.html'>TestRunner</a></B></LI> 
                <LI TYPE="circle"><B><a href='TestStepRunner.html'>TestStepRunner</a></B></LI> 
                <LI TYPE="circle"><B><a href='X509CertificateGenerator.html'>X509CertificateGenerator</a></B></LI> 
                <LI TYPE="circle"><B><a href='X509Name.html'>X509Name</a></B></LI> </UL></UL>

<HR>

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_top"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"><A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><b>Overview</b></A></FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">File</FONT>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1Rev">  &nbsp;<FONT CLASS="NavBarFont1Rev"><b>Tree</b></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><b>Index</b></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><b>Help</b></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD BGCOLOR="#FFFFFF" ALIGN="right" VALIGN="top"><EM>
<B></B></EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
&nbsp;&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" parent="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS10Generator.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_ApplicationTemplate.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15</H2>
<PRE>Object
   |
   +--<b>PKCS15</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15</B>
   

</DL>
   
   <P>
   <BR/><p>This class provides for direct access to a PKCS#15 data structure on a card.</p>
 <p>The calling application will typically use:</p>
 <pre>
 var card = new Card(_scsh3.reader);
 var p15 = new PKCS15(card);
 var appllist = p15.readApplicationDirectory();
 var aid;
 for (var i in appllist) {
   print(i);
   aid = i;
 }
 var at = appllist[aid];
 p15.readObjectListForApplication(at);
 for (var i = 0; i < at.objlist.length; i++) {
   print(at.objlist[i]);
 }
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#card">card</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15()">PKCS15</A></B>(&lt;Card&gt; card)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create an object to access the PKCS#15 structure on a card.
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;PKCS15_ApplicationTemplate[]</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getAidList">getAidList</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Return the hash table of application templates
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;<a href="PKCS15_CIAInfo.html">PKCS15_CIAInfo</a></CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getCIAInfo">getCIAInfo</A></B>(&lt;<a href="PKCS15_Path.html">PKCS15_Path</a>&gt; path)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Reads and return the CIAInfo structure referenced by the PKCS#15 path element.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;PKCS15_ApplicationTemplate[]</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#readApplicationDirectory">readApplicationDirectory</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Reads the application directory from EF_DIR.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;ASN1[]</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#readCardObjects">readCardObjects</A></B>(&lt;String&gt; df, &lt;<a href="PKCS15_Path.html">PKCS15_Path</a>&gt; path)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Reads PKCS#15 objects from card file which can be either transparent or record oriented.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#readObjectListForApplication">readObjectListForApplication</A></B>(&lt;<a href="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</a>&gt; at)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Reads all CIO objects for an application and adds the CIO objects to the objlist property
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&lt;static&gt;&nbsp;ASN1[]</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#!s!parseObjectList">parseObjectList</A></B>(&lt;ByteString&gt; data)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Parse a list of TLV objects
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="card"><!-- --></A>
   <H3>card</H3>
   <PRE>Object&nbsp;<B>card</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15()"><!-- --></A><H3>
PKCS15</H3>
<PRE><B>PKCS15</B>(&lt;Card&gt; card)</PRE>


<UL>
   Create an object to access the PKCS#15 structure on a card.
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>card</CODE> -  the card object to use for card access.    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getAidList"><!-- --></A>
   <H3>getAidList</H3>
   <PRE>PKCS15_ApplicationTemplate[] <B>getAidList</B>()</PRE>
   
      <UL>Return the hash table of application templates</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the hash table of application templates   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getCIAInfo"><!-- --></A>
   <H3>getCIAInfo</H3>
   <PRE><a href="PKCS15_CIAInfo.html">PKCS15_CIAInfo</a> <B>getCIAInfo</B>(&lt;<a href="PKCS15_Path.html">PKCS15_Path</a>&gt; path)</PRE>
   
      <UL>Reads and return the CIAInfo structure referenced by the PKCS#15 path element.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>path</CODE> -  the path to the CIAInfo file  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the CIAInfo description   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="readApplicationDirectory"><!-- --></A>
   <H3>readApplicationDirectory</H3>
   <PRE>PKCS15_ApplicationTemplate[] <B>readApplicationDirectory</B>()</PRE>
   
      <UL>Reads the application directory from EF_DIR.

 <p>The method supports linear variable and transparent EFs. It creates an internal table of
    of applications.</p></UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        hash table of application templates index by application identifier   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="readCardObjects"><!-- --></A>
   <H3>readCardObjects</H3>
   <PRE>ASN1[] <B>readCardObjects</B>(&lt;String&gt; df, &lt;<a href="PKCS15_Path.html">PKCS15_Path</a>&gt; path)</PRE>
   
      <UL>Reads PKCS#15 objects from card file which can be either transparent or record oriented.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>df</CODE> -  the current DF in OCF path notation.  
      </UL> 
   
     <UL><CODE>path</CODE> -  the relative or absolute path to the EF  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the array of TLV objects read from the file   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="readObjectListForApplication"><!-- --></A>
   <H3>readObjectListForApplication</H3>
   <PRE>void <B>readObjectListForApplication</B>(&lt;<a href="PKCS15_ApplicationTemplate.html">PKCS15_ApplicationTemplate</a>&gt; at)</PRE>
   
      <UL>Reads all CIO objects for an application and adds the CIO objects to the objlist property</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>at</CODE> -  the application template    
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="!s!parseObjectList"><!-- --></A>
   <H3>parseObjectList</H3>
   <PRE>&lt;static&gt; ASN1[] <B>parseObjectList</B>(&lt;ByteString&gt; data)</PRE>
   
      <UL>Parse a list of TLV objects</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>data</CODE> -  the binary data with TLV objects  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the list of ASN1 objects   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS10Generator.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_ApplicationTemplate.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestProcedureRunner
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestProcedureRunner";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestProcedure.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestReport.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestProcedureRunner</H2>
<PRE>Object
   |
   +--<b>TestProcedureRunner</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestProcedureRunner</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testCaseRunner">testCaseRunner</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#testProcedure">testProcedure</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestProcedureRunner()">TestProcedureRunner</A></B>(testCaseRunner, testProcedure)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="testCaseRunner"><!-- --></A>
   <H3>testCaseRunner</H3>
   <PRE>Object&nbsp;<B>testCaseRunner</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="testProcedure"><!-- --></A>
   <H3>testProcedure</H3>
   <PRE>Object&nbsp;<B>testProcedure</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestProcedureRunner()"><!-- --></A><H3>
TestProcedureRunner</H3>
<PRE><B>TestProcedureRunner</B>(testCaseRunner, testProcedure)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestProcedure.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestReport.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CIAInfo
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CIAInfo";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_Certificate.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CIO.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CIAInfo</H2>
<PRE>Object
   |
   +--<b>PKCS15_CIAInfo</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CIAInfo</B>
   

</DL>
   
   <P>
   <BR/><p>Class to decode CIAInfo objects.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CIAInfo ::= SEQUENCE {
		version INTEGER {v1(0),v2(1)} (v1|v2,...),
		serialNumber OCTET STRING OPTIONAL,
		manufacturerID Label OPTIONAL,
		label [0] Label OPTIONAL,
		cardflags CardFlags,
		seInfo SEQUENCE OF SecurityEnvironmentInfo OPTIONAL,
		recordInfo [1] RecordInfo OPTIONAL,
		supportedAlgorithms [2] SEQUENCE OF AlgorithmInfo OPTIONAL,
		issuerId [3] Label OPTIONAL,
		holderId [4] Label OPTIONAL,
		lastUpdate [5] LastUpdate OPTIONAL,
		preferredLanguage PrintableString OPTIONAL, -- In accordance with IETF RFC 1766
		profileIndication [6] SEQUENCE OF ProfileIndication OPTIONAL,
		...
		} (CONSTRAINED BY { -- Each AlgorithmInfo.reference value shall be unique --})
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#cardflags">cardflags</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#holderId">holderId</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#issuerId">issuerId</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#label">label</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#lastUpdate">lastUpdate</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#manufacturerID">manufacturerID</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#preferredLanguage">preferredLanguage</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#profileIndication">profileIndication</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#recordInfo">recordInfo</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#seInfo">seInfo</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#serialNumber">serialNumber</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#supportedAlgorithms">supportedAlgorithms</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#tlv">tlv</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#version">version</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CIAInfo()">PKCS15_CIAInfo</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Creates a CIAInfo object.
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getCardflagsAsString">getCardflagsAsString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the card flags as string of concatenated flags.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="cardflags"><!-- --></A>
   <H3>cardflags</H3>
   <PRE>Object&nbsp;<B>cardflags</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="holderId"><!-- --></A>
   <H3>holderId</H3>
   <PRE>Object&nbsp;<B>holderId</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="issuerId"><!-- --></A>
   <H3>issuerId</H3>
   <PRE>Object&nbsp;<B>issuerId</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="label"><!-- --></A>
   <H3>label</H3>
   <PRE>Object&nbsp;<B>label</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="lastUpdate"><!-- --></A>
   <H3>lastUpdate</H3>
   <PRE>Object&nbsp;<B>lastUpdate</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="manufacturerID"><!-- --></A>
   <H3>manufacturerID</H3>
   <PRE>Object&nbsp;<B>manufacturerID</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="preferredLanguage"><!-- --></A>
   <H3>preferredLanguage</H3>
   <PRE>Object&nbsp;<B>preferredLanguage</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="profileIndication"><!-- --></A>
   <H3>profileIndication</H3>
   <PRE>Object&nbsp;<B>profileIndication</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="recordInfo"><!-- --></A>
   <H3>recordInfo</H3>
   <PRE>Object&nbsp;<B>recordInfo</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="seInfo"><!-- --></A>
   <H3>seInfo</H3>
   <PRE>Object&nbsp;<B>seInfo</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="serialNumber"><!-- --></A>
   <H3>serialNumber</H3>
   <PRE>Object&nbsp;<B>serialNumber</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="supportedAlgorithms"><!-- --></A>
   <H3>supportedAlgorithms</H3>
   <PRE>Object&nbsp;<B>supportedAlgorithms</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="tlv"><!-- --></A>
   <H3>tlv</H3>
   <PRE>Object&nbsp;<B>tlv</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="version"><!-- --></A>
   <H3>version</H3>
   <PRE>Object&nbsp;<B>version</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CIAInfo()"><!-- --></A><H3>
PKCS15_CIAInfo</H3>
<PRE><B>PKCS15_CIAInfo</B>(tlv)</PRE>


<UL>
   Creates a CIAInfo object.
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIAInfo    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getCardflagsAsString"><!-- --></A>
   <H3>getCardflagsAsString</H3>
   <PRE>String <B>getCardflagsAsString</B>()</PRE>
   
      <UL>Gets the card flags as string of concatenated flags.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string containing the flags separated by a blank   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_Certificate.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CIO.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_Path
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_Path";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_PasswordAuthenticationObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_PrivateKey.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_Path</H2>
<PRE>Object
   |
   +--<b>PKCS15_Path</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_Path</B>
   

</DL>
   
   <P>
   <BR/><p>This class provides for access to PKCS#15 structures.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 Path ::= SEQUENCE {
 		efidOrPath OCTET STRING,
		index INTEGER (0..cia-ub-index) OPTIONAL,
		length [0] INTEGER (0..cia-ub-index) OPTIONAL
	}( WITH COMPONENTS {..., index PRESENT, length PRESENT}|
 	   WITH COMPONENTS {..., index ABSENT, length ABSENT})
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#efidOrPath">efidOrPath</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#index">index</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#length">length</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_Path()">PKCS15_Path</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Creates a PKCS#15 path from the encoded TLV structure
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getAbsolutePath">getAbsolutePath</A></B>(&lt;String&gt; df)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the absolute in the OCF format.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="efidOrPath"><!-- --></A>
   <H3>efidOrPath</H3>
   <PRE>Object&nbsp;<B>efidOrPath</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="index"><!-- --></A>
   <H3>index</H3>
   <PRE>Object&nbsp;<B>index</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="length"><!-- --></A>
   <H3>length</H3>
   <PRE>Object&nbsp;<B>length</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_Path()"><!-- --></A><H3>
PKCS15_Path</H3>
<PRE><B>PKCS15_Path</B>(tlv)</PRE>


<UL>
   Creates a PKCS#15 path from the encoded TLV structure
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the path    
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getAbsolutePath"><!-- --></A>
   <H3>getAbsolutePath</H3>
   <PRE>String <B>getAbsolutePath</B>(&lt;String&gt; df)</PRE>
   
      <UL>Gets the absolute in the OCF format.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>df</CODE> -  the current directory  
      </UL> 
   
   </UL>
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the path in OCF encoding   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_PasswordAuthenticationObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_PrivateKey.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlineDF
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlineDF";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineDataObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineEF.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlineDF</H2>
<PRE>Object
   |
   +--<b>OutlineDF</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlineDF</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-OutlineCore.js.html'>OutlineCore.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#card">card</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#id">id</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#parentdf">parentdf</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#profile">profile</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlineDF()">OutlineDF</A></B>(card, id, name, profile)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#expandListener">expandListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="card"><!-- --></A>
   <H3>card</H3>
   <PRE>Object&nbsp;<B>card</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="id"><!-- --></A>
   <H3>id</H3>
   <PRE>Object&nbsp;<B>id</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="parentdf"><!-- --></A>
   <H3>parentdf</H3>
   <PRE>Object&nbsp;<B>parentdf</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="profile"><!-- --></A>
   <H3>profile</H3>
   <PRE>Object&nbsp;<B>profile</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlineDF()"><!-- --></A><H3>
OutlineDF</H3>
<PRE><B>OutlineDF</B>(card, id, name, profile)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="expandListener"><!-- --></A>
   <H3>expandListener</H3>
   <PRE>void <B>expandListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineDataObject.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineEF.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="crlgenerator.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>crlgenerator.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		Simple CRL generator class<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="CRLGenerator.html">CRLGenerator</a></b></td>
    <td>Class implementing a CRL certificate generator
 </td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

	<a name="method_summary"><!-- --></a>
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
			<td colspan=2>
				<font size="+2">
					<b>Method Summary</b>
				</font>
			</td>
		</tr>
	
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;void</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!CRLGeneratorTest">CRLGeneratorTest</a></b>()
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
	
	</table>
    <p>

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span>
 * Simple CRL generator class
 */</span>

<span class="reserved">if</span> (typeof(__ScriptingServer) == <span class="literal">"undefined"</span>) {
	load(<span class="literal">"pkixcommon.js"</span>);
}

 

<span class="comment">/**
 * Create a Certificate Revocation List (CRL) generator.
 *
 * <span class="attrib">@class</span> Class implementing a CRL certificate generator
 * <span class="attrib">@constructor</span>
 *
 * <span class="attrib">@param</span> {Crypto} crypto the crypto provider to use for signing operations
 */</span>
<span class="reserved">function</span> CRLGenerator(crypto) {
	<span class="reserved">this</span>.crypto = crypto;
	<span class="reserved">this</span>.reset();
}


CRLGenerator.unspecified = 0;
CRLGenerator.keyCompromise = 1;
CRLGenerator.cACompromise = 2;
CRLGenerator.affiliationChanged = 3;
CRLGenerator.superseded = 4;
CRLGenerator.cessationOfOperation = 5;
CRLGenerator.certificateHold = 6;
CRLGenerator.removeFromCRL = 8;
CRLGenerator.privilegeWithdrawn = 9;
CRLGenerator.aACompromise = 10;



<span class="comment">/**
 * Resets all internal state variables.
 *
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.reset = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.extensions = [];
	<span class="reserved">this</span>.revokedCertificates = [];
	<span class="reserved">this</span>.nextUpdate = null;
}



<span class="comment">/**
 * Sets the isser name.
 *
 * &lt;p&gt;The issuer name must be a JavaScript object containing the properties:&lt;/p&gt;
 * &lt;ul&gt;
 *  &lt;li&gt;C - the country&lt;/li&gt;
 *  &lt;li&gt;O - the organization&lt;/li&gt;
 *  &lt;li&gt;OU - the organization unit&lt;/li&gt;
 *  &lt;li&gt;CN - the common name&lt;/li&gt;
 * &lt;/ul&gt;
 * &lt;p&gt;Example:&lt;/p&gt;
 * &lt;pre&gt;
 *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * &lt;/pre&gt;
 * <span class="attrib">@param</span> {Object} issuer the issuer name
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.setIssuer = <span class="reserved">function</span>(issuer) {
	<span class="reserved">this</span>.issuer = issuer;
}



<span class="comment">/**
 * Sets the timestamp for this CRL
 *
 * <span class="attrib">@param</span> {Date} datetime the current date and time
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.setThisUpdate = <span class="reserved">function</span>(datetime) {
	<span class="reserved">this</span>.thisUpdate = datetime;
}



<span class="comment">/**
 * Sets the timestamp for the next update
 *
 * <span class="attrib">@param</span> {Date} datetime the date and time of the next update
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.setNextUpdate = <span class="reserved">function</span>(datetime) {
	<span class="reserved">this</span>.nextUpdate = datetime;
}



<span class="comment">/**
 * Sets the signature algorithm.
 *
 * <span class="attrib">@param</span> {Number} alg the signature algorithm, must be one of Crypto.RSA, Crypto.RSA_SHA256 or Crypto.ECDSA_SHA256
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.setSignatureAlgorithm = <span class="reserved">function</span>(alg) {
	<span class="reserved">this</span>.signatureAlgorithm = alg;
}



<span class="comment">/**
 * Adds an extension to the CRL
 *
 * &lt;p&gt;The structure is defined as:&lt;/p&gt;
 * &lt;pre&gt;
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        critical    BOOLEAN DEFAULT FALSE,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *&lt;/pre&gt;
 * <span class="attrib">@param</span> {String} extnID the extensions object identifier
 * <span class="attrib">@param</span> {Boolean} critical the extension is critical
 * <span class="attrib">@param</span> {ByteString} the extension value as ByteString
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.addExtension = <span class="reserved">function</span>(extnID, critical, extnValue) {
	var t = new ASN1(<span class="literal">"extension"</span>, ASN1.SEQUENCE,
				new ASN1(<span class="literal">"extnID"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	<span class="reserved">if</span> (critical) {
		t.add(new ASN1(<span class="literal">"critical"</span>, ASN1.BOOLEAN, new ByteString(<span class="literal">"FF"</span>, HEX)));
	}

	t.add(new ASN1(<span class="literal">"extnValue"</span>, ASN1.OCTET_STRING, extnValue));
	<span class="reserved">this</span>.extensions.push(t);

}



<span class="comment">/**
 * Adds the authority public key identifier extension based on the issuers key.
 *
 * &lt;p&gt;The key identifier is calculated as SHA-1 hash over the contents of the
 * issuer public key (Without tag, length and number of unused bits.&lt;/p&gt;
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.addAuthorityKeyIdentifierExtension = <span class="reserved">function</span>(publicKey) {
	<span class="reserved">if</span> (publicKey.getComponent(Key.MODULUS)) {
		var spi = PKIXCommon.createRSASubjectPublicKeyInfo(publicKey);
	} <span class="reserved">else</span> {
		var spi = PKIXCommon.createECSubjectPublicKeyInfo(publicKey, <span class="reserved">this</span>.encodeECDomainParameter);
	}

	var keyvalue = spi.get(1).value.bytes(1);
	var hash = <span class="reserved">this</span>.crypto.digest(Crypto.SHA_1, keyvalue);
	
	var t = new ASN1(ASN1.SEQUENCE,
					new ASN1(0x80, hash)
				);
	<span class="reserved">this</span>.addExtension(<span class="literal">"id-ce-authorityKeyIdentifier"</span>, false, t.getBytes());
}



<span class="comment">/**
 * Adds the CRL number extension.
 *
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.addCRLNumberExtension = <span class="reserved">function</span>(crlnumber) {
	var t = new ASN1(ASN1.INTEGER,
					PKIXCommon.convertUnsignedInteger(ByteString.valueOf(crlnumber))
				);
	<span class="reserved">this</span>.addExtension(<span class="literal">"id-ce-cRLNumber"</span>, false, t.getBytes());
}



<span class="comment">/**
 * Add a revoked certificate to the list. This adds the complete DER encoded structure.
 *
 * <span class="attrib">@param</span> {ASN1} revokedCertificate the information related to the revoked certificate
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.addRevokedCertificate = <span class="reserved">function</span>(revokedCertificate) {
	<span class="reserved">this</span>.revokedCertificates.push(revokedCertificate);
}



<span class="comment">/**
 * Add a revoked certificate to the list. This adds the complete DER encoded structure.
 *
 * <span class="attrib">@param</span> {ByteString} serial the serial number of the certificate to revoke
 * <span class="attrib">@param</span> {Date} timestamp the revocation time, optional, default is now
 * <span class="attrib">@param</span> {Number) reason the revocation reason
 * <span class="attrib">@param</span> {ASN1) ext the crl entry extensions
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.revokeCertificate = <span class="reserved">function</span>(serial, timestamp, reason, ext) {
	<span class="reserved">if</span> (typeof(timestamp) == <span class="literal">"undefined"</span>) {
		timestamp = new Date();
	}
	var t = new ASN1(<span class="literal">"revokedCertificate"</span>, ASN1.SEQUENCE, 
				new ASN1(<span class="literal">"userCertificate"</span>, ASN1.INTEGER, PKIXCommon.convertUnsignedInteger(serial)),
				new ASN1(<span class="literal">"revocationTime"</span>, ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(timestamp), ASCII))
				);

	<span class="reserved">if</span> (typeof(ext) == <span class="literal">"undefined"</span>) {
		ext = new ASN1(<span class="literal">"crlExtensions"</span>, ASN1.SEQUENCE);
	}
	
	<span class="reserved">if</span> ((typeof(reason) != <span class="literal">"undefined"</span>) &amp;&amp; (reason != -1)) {
		ext.add(new ASN1(<span class="literal">"reason"</span>, ASN1.SEQUENCE,
					new ASN1(<span class="literal">"extnID"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"id-ce-cRLReasons"</span>, OID)),
					new ASN1(<span class="literal">"extnValue"</span>, ASN1.OCTET_STRING,
						(new ASN1(<span class="literal">"cRLReason"</span>, ASN1.ENUMERATED, ByteString.valueOf(reason))).getBytes())
					)
				);
		t.add(ext);
	}
	
	<span class="reserved">this</span>.revokedCertificates.push(t);
}



<span class="comment">/**
 * Load list of revoked certificates from an existing CRL
 *
 * <span class="attrib">@param</span> {String} filename the file name of the DER encoded CRL
 * <span class="attrib">@type</span> Number
 * <span class="attrib">@return</span> the value of the CRLNumber extension, 0 if extension not defined or -1 if file could not be loaded
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.loadCRLEntries = <span class="reserved">function</span>(filename) {
	var crlnumber = 0;
	
	try	{
		var crlbin = PKIXCommon.readFileFromDisk(filename);
		var crl = new ASN1(crlbin);
		print(crl);
		var tbs = crl.get(0);
		var i = 0;
		<span class="reserved">if</span> ((i &lt; tbs.length) &amp;&amp; (tbs.get(i).tag == ASN1.INTEGER)) {		<span class="comment">// Skip version if present</span>
			i++;
		}
		i += 3;		<span class="comment">// Skip signature, issuer, thisUpdate</span>
		<span class="reserved">if</span> ((i &lt; tbs.length) &amp;&amp; (tbs.get(i).tag == ASN1.UTCTime)) {		<span class="comment">// nextUpdate if present</span>
			i++;
		}
		<span class="reserved">if</span> ((i &lt; tbs.length) &amp;&amp; (tbs.get(i).tag == ASN1.SEQUENCE)) {
			<span class="reserved">for</span> (var j = 0; j &lt; tbs.get(i).elements; j++) {
				<span class="reserved">this</span>.revokedCertificates.push(tbs.get(i).get(j));
			}
			i++;
		}
		<span class="reserved">if</span> ((i &lt; tbs.length) &amp;&amp; (tbs.get(i).tag == 0xA0)) {
			var l = tbs.get(i).get(0);
			var oid = new ByteString(<span class="literal">"id-ce-cRLNumber"</span>, OID);
			<span class="reserved">for</span> (var j = 0; j &lt; l.elements; j++) {
				var ext = l.get(j);
				<span class="reserved">if</span> (ext.get(0).value.equals(oid)) {
					var extval = new ASN1(ext.get(1).value);
					crlnumber = extval.value.toUnsigned();
				}
			}
			
		}
	}
	catch(e) {
		GPSystem.trace(e);
		<span class="reserved">return</span> -1;
	}
	<span class="reserved">return</span> crlnumber;
}



<span class="comment">/**
 * Gets the issuer name as TLV object
 *
 * <span class="attrib">@return</span> the issuer RDNSequence
 * <span class="attrib">@type</span> ASN1
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.getIssuer = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.issuer instanceof ASN1) {
		<span class="reserved">return</span> <span class="reserved">this</span>.issuer;
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> PKIXCommon.encodeName(<span class="reserved">this</span>.issuer);
	}
}



<span class="comment">/**
 * Gets the thisUpdate TLV object
 *
 * <span class="attrib">@return</span> the thisUpdate UTC encoded time
 * <span class="attrib">@type</span> ASN1
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.getThisUpdate = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"thisUpdate"</span>, ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(<span class="reserved">this</span>.thisUpdate), ASCII));
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the nextUpdate TLV object
 *
 * <span class="attrib">@return</span> the nextUpdate UTC encoded time
 * <span class="attrib">@type</span> ASN1
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.getNextUpdate = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"nextUpdate"</span>, ASN1.UTCTime, new ByteString(PKIXCommon.dtoUTC(<span class="reserved">this</span>.nextUpdate), ASCII));
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the signature algorithm TLV object
 *
 * <span class="attrib">@return</span> the signature algorithm object
 * <span class="attrib">@type</span> ASN1
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.getSignatureAlgorithm = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"signatureAlgorithm"</span>, ASN1.SEQUENCE);

	<span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.RSA) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.113549.1.1.5"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> <span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.RSA_SHA256) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.113549.1.1.11"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> <span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.ECDSA_SHA256) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"ecdsa-with-SHA256"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> {
		throw new GPError(<span class="literal">"CRLGenerator"</span>, GPError.INVALID_MECH, <span class="reserved">this</span>.signatureAlgorithm, <span class="literal">"Invalid algorithm"</span>);
	}
		
	<span class="reserved">return</span> t;
}

 

<span class="comment">/**
 * Gets revoked certificates
 *
 * <span class="attrib">@return</span> the list of revoked certificates
 * <span class="attrib">@type</span> ASN1
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.getRevokedCertificates = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"revokedCertificates"</span>, ASN1.SEQUENCE);
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.revokedCertificates.length; i++) {
		t.add(<span class="reserved">this</span>.revokedCertificates[i]);
	}
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the CRL extension as TLV object
 *
 * <span class="attrib">@return</span> the CRL extensions
 * <span class="attrib">@type</span> ASN1
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.getExtensions = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"extensions"</span>, 0xA0);
	var s = new ASN1(<span class="literal">"extensions"</span>, ASN1.SEQUENCE);
	
	t.add(s);
	
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.extensions.length; i++) {
		s.add(<span class="reserved">this</span>.extensions[i]);
	}
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the part of the CRL that will be signed
 *
 * <span class="attrib">@return</span> the TBSCertificate part
 * <span class="attrib">@type</span> ASN1
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.getTbsCertificateList = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"tbsCertList"</span>, ASN1.SEQUENCE);
	t.add(new ASN1(<span class="literal">"version"</span>, ASN1.INTEGER, new ByteString(<span class="literal">"01"</span>, HEX)));
	t.add(<span class="reserved">this</span>.getSignatureAlgorithm());
	t.add(<span class="reserved">this</span>.getIssuer());
	t.add(<span class="reserved">this</span>.getThisUpdate());
	<span class="reserved">if</span> (<span class="reserved">this</span>.nextUpdate != null) {
		t.add(<span class="reserved">this</span>.getNextUpdate());
	}
	<span class="reserved">if</span> (<span class="reserved">this</span>.revokedCertificates.length &gt; 0) {
		t.add(<span class="reserved">this</span>.getRevokedCertificates());
	}
	<span class="reserved">if</span> (<span class="reserved">this</span>.extensions.length &gt; 0) {
		t.add(<span class="reserved">this</span>.getExtensions());
	}
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Generates the certificate.
 *
 * <span class="attrib">@return</span> the generated certificate
 * <span class="attrib">@type</span> X509
 */</span>
CRLGenerator.<span class="reserved">prototype</span>.generateCRL = <span class="reserved">function</span>(privateKey) {
	var certlist = new ASN1(<span class="literal">"certificateList"</span>, ASN1.SEQUENCE);
	
	var tbs = <span class="reserved">this</span>.getTbsCertificateList();
	certlist.add(tbs);
	certlist.add(<span class="reserved">this</span>.getSignatureAlgorithm());
	
	var signature = <span class="reserved">this</span>.crypto.sign(privateKey, <span class="reserved">this</span>.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString(<span class="literal">"00"</span>, HEX)).concat(signature);

	var signatureValue = new ASN1(<span class="literal">"signatureValue"</span>, ASN1.BIT_STRING, signature);
	certlist.add(signatureValue);
	
	<span class="reserved">return</span> certlist;
}



<span class="reserved">function</span> CRLGeneratorTest() {

	var crypto = new Crypto();
	
	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setSize(1024);

	crypto.generateKeyPair(Crypto.RSA, caPublicKey, caPrivateKey);

<span class="comment">//	var caPrivKey = new Key("profiles/kp_rsa_private.xml");</span>

	var x = new CRLGenerator(crypto);

	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = [{ C:<span class="literal">"UT"</span> },{ O:<span class="literal">"ACME Corporation"</span> },{ CN:<span class="literal">"Test-CA"</span> }];
	x.setIssuer(issuer);
	var now = new Date();
	x.setThisUpdate(now);
	var nextMonth = new Date();
	nextMonth.setMonth((now.getMonth() + 1) % 12);
	x.setNextUpdate(nextMonth);
	x.addAuthorityKeyIdentifierExtension(caPublicKey);
	x.addCRLNumberExtension(11);
	
	x.revokeCertificate(new ByteString(<span class="literal">"01"</span>, HEX));
	x.revokeCertificate(new ByteString(<span class="literal">"80"</span>, HEX), new Date());
	x.revokeCertificate(new ByteString(<span class="literal">"80"</span>, HEX), new Date(), CRLGenerator.keyCompromise);
	x.revokeCertificate(new ByteString(<span class="literal">"80"</span>, HEX), new Date(), CRLGenerator.superseded, new ASN1(<span class="literal">"crlExtensions"</span>, ASN1.SEQUENCE));
	
	var crl = x.generateCRL(caPrivateKey);
	
	var fn = GPSystem.mapFilename(<span class="literal">"crl.crl"</span>, GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, crl.getBytes());

	print(crl);
	
	var x = new CRLGenerator(crypto);
	x.reset();
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = [{ C:<span class="literal">"UT"</span> },{ O:<span class="literal">"ACME Corporation"</span> },{ CN:<span class="literal">"Test-CA"</span> }];
	x.setIssuer(issuer);
	var now = new Date();
	x.setThisUpdate(now);
	var nextMonth = new Date();
	nextMonth.setMonth((now.getMonth() + 1) % 12);
	x.setNextUpdate(nextMonth);
	var crlnumber = x.loadCRLEntries(fn);
	assert(crlnumber == 11);
	x.addAuthorityKeyIdentifierExtension(caPublicKey);
	x.addCRLNumberExtension(crlnumber + 1);
	
	x.revokeCertificate(crypto.generateRandom(8), new Date(), CRLGenerator.keyCompromise);
	var crl = x.generateCRL(caPrivateKey);
<span class="comment">//	PKIXCommon.writeFileToDisk(fn, crl.getBytes());</span>
	
	print(crl);
}


</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title=" Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>Overview</b></font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1"> <font class="NavBarFont1">File</font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>JSDoc Documentation</h2>
	
</center>


<h4>Summary</h4>
<p>
	
    	No summary generated for these documents.
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>File Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-ARRDecorator.js.html">ARRDecorator.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-BaseTestRunner.js.html">BaseTestRunner.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-CardOutlineFactory.js.html">CardOutlineFactory.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-CardOutlineFactory2.0.js.html">CardOutlineFactory2.0.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-crlgenerator.js.html">crlgenerator.js</a></b></td>
    <td>Simple CRL generator class</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-CRTDecorator.js.html">CRTDecorator.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-eccutils.js.html">eccutils.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-explore.js.html">explore.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-FCPDecorator.js.html">FCPDecorator.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-file.js.html">file.js</a></b></td>
    <td>General File I/O Class</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-OutlineCore.js.html">OutlineCore.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-p15classes.js.html">p15classes.js</a></b></td>
    <td>Classes to parse PKCS#15 data structures</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-pkcs10.js.html">pkcs10.js</a></b></td>
    <td>A PKCS#10 generator class based on RFC5280</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-pkcs8.js.html">pkcs8.js</a></b></td>
    <td>Basic helper functions to convert PKCS#8 data to GP keys and vice versa</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-pkixcommon.js.html">pkixcommon.js</a></b></td>
    <td>Common classes and functions for PKIX</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-TestGroup.js.html">TestGroup.js</a></b></td>
    <td>Core elements of a test group containing individual test cases</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-TestProcedure.js.html">TestProcedure.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-TestRunner.js.html">TestRunner.js</a></b></td>
    <td>Test runner framework</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-x509certificategenerator.js.html">x509certificategenerator.js</a></b></td>
    <td>A X509 certificate generator class following RFC5280</td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="overview-summary-x509name.js.html">x509name.js</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->




<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev"> &nbsp;<font class="NavBarFont1Rev"><b>Overview</b></font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1"> <font class="NavBarFont1">File</font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="file.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>file.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		General File I/O Class<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="File.html">File</a></b></td>
    <td>Class implementing basic support for files
 </td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span> General File I/O Class
 */</span>



<span class="comment">/**
 * Create a reference to a file system object (file or directory)
 *
 * <span class="attrib">@class</span> Class implementing basic support for files
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {String} name relative or absolute file path
 */</span>
<span class="reserved">function</span> File(name) {
	<span class="reserved">this</span>.name = name;
}



<span class="comment">/**
 * Return absolute path
 *
 * <span class="attrib">@param</span>{Number} mode one of GPSystem.AUTO, GPSystem.CWD, GPSystem.USR or GPSystem.SYS. See GPSystem.mapFilename() for details
 * <span class="attrib">@type</span> String
 * <span class="attrib">@return</span> the absolute path
 */</span>
File.<span class="reserved">prototype</span>.getAbsolutePath = <span class="reserved">function</span>(mode) {
	<span class="reserved">if</span> (typeof(mode) == <span class="literal">"undefined"</span>) {
		mode = GPSystem.CWD;
	}
	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.abspath) == <span class="literal">"undefined"</span>) {
		<span class="reserved">this</span>.abspath = GPSystem.mapFilename(<span class="reserved">this</span>.name, mode);
	}
	<span class="reserved">return</span> <span class="reserved">this</span>.abspath;
}



<span class="comment">/**
 * <span class="attrib">@private</span>
 * Return a java.io.File object
 */</span>
File.<span class="reserved">prototype</span>.getFile = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.file) == <span class="literal">"undefined"</span>) {
		<span class="reserved">this</span>.file = new java.io.File(<span class="reserved">this</span>.getAbsolutePath(GPSystem.AUTO));
	}
	<span class="reserved">return</span> <span class="reserved">this</span>.file; 
}



<span class="comment">/**
 * Close streams associated with file
 */</span>
File.<span class="reserved">prototype</span>.close = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.os) != <span class="literal">"undefined"</span>) {
		<span class="reserved">this</span>.os.close();
		delete(<span class="reserved">this</span>.os);
	}

	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.is) != <span class="literal">"undefined"</span>) {
		<span class="reserved">this</span>.is.close();
		delete(<span class="reserved">this</span>.is);
	}
}



<span class="comment">/**
 * <span class="attrib">@private</span>
 * Return a java.io.FileInputStream
 */</span>
File.<span class="reserved">prototype</span>.getInputStream = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.is) == <span class="literal">"undefined"</span>) {
		<span class="reserved">this</span>.is = new java.io.FileInputStream(<span class="reserved">this</span>.getAbsolutePath(GPSystem.AUTO));
	}
	<span class="reserved">return</span> <span class="reserved">this</span>.is; 
}



<span class="comment">/**
 * <span class="attrib">@private</span>
 * Return a java.io.FileOutputStream
 */</span>
File.<span class="reserved">prototype</span>.getOutputStream = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (typeof(<span class="reserved">this</span>.os) == <span class="literal">"undefined"</span>) {
		<span class="reserved">this</span>.os = new java.io.FileOutputStream(<span class="reserved">this</span>.getAbsolutePath(GPSystem.CWD));
	}
	<span class="reserved">return</span> <span class="reserved">this</span>.os; 
}



<span class="comment">/**
 * Read complete file into ByteString object
 *
 * <span class="attrib">@type</span> ByteString
 * <span class="attrib">@return</span> the binary content
 */</span>
File.<span class="reserved">prototype</span>.readAllAsBinary = <span class="reserved">function</span>() {
	var is = <span class="reserved">this</span>.getInputStream();

	<span class="comment">// Determine file size</span>
	var flen = is.available();

	<span class="comment">// Allocate native byte array</span>
	var bs = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, flen);

	<span class="comment">// Read into byte array</span>
	var len = is.read(bs);

	<span class="reserved">this</span>.close();

	<span class="comment">// Allocate JavaScript ByteBuffer from native/wrapped byte array</span>
	var bb = new ByteBuffer(bs);

	<span class="comment">// Convert to JavaScript ByteString</span>
	var data = bb.toByteString();

	<span class="reserved">return</span> data;
}



<span class="comment">/**
 * Read complete file into String object
 *
 * <span class="attrib">@type</span> String
 * <span class="attrib">@return</span> the text content
 */</span>
File.<span class="reserved">prototype</span>.readAllAsString = <span class="reserved">function</span>(encoding) {

	<span class="reserved">if</span> (typeof(encoding) == <span class="literal">"undefined"</span>) {
		encoding = UTF8;
	}

	<span class="reserved">return</span> <span class="reserved">this</span>.readAllAsBinary().toString(encoding);
}



<span class="comment">/**
 * Write the object to file
 *
 * <span class="attrib">@param</span>{Object} obj to write to file (Using toString() for any other than String and ByteString)
 * <span class="attrib">@param</span>{Number} one of UTF8 or ASCII (Default is UTF8)
 */</span>
File.<span class="reserved">prototype</span>.writeAll = <span class="reserved">function</span>(obj, encoding) {
	<span class="reserved">if</span> ((typeof(obj) != <span class="literal">"string"</span>) &amp;&amp; !(obj instanceof ByteString)) {
		obj = obj.toString();
	}
	<span class="reserved">if</span> (typeof(obj) == <span class="literal">"string"</span>) {
		<span class="reserved">if</span> (typeof(encoding) == <span class="literal">"undefined"</span>) {
			encoding = UTF8;
		}
		obj = new ByteString(obj, encoding);
	}

	var os = <span class="reserved">this</span>.getOutputStream();
	os.write(obj);
	<span class="reserved">this</span>.close();
}



<span class="comment">/**
 * Return list of files contained in the directory referenced by the File object
 *
 * <span class="attrib">@type</span> String[]
 * <span class="attrib">@return</span> the list of file names
 */</span>
File.<span class="reserved">prototype</span>.list = <span class="reserved">function</span>() {
	var list = <span class="reserved">this</span>.getFile().list();
	var jslist = [];
	
	<span class="reserved">for</span> (var i = 0; i &lt; list.length; i++) {
		jslist.push(new String(list[i]));
	}
	<span class="reserved">return</span> jslist;
}



<span class="comment">/**
 * Return the parent file of this file object
 *
 * <span class="attrib">@type</span> File
 * <span class="attrib">@return</span> the parent file object or null
 */</span>
File.<span class="reserved">prototype</span>.getParentFile = <span class="reserved">function</span>() {
	var file = <span class="reserved">this</span>.getFile();
	var parent = file.getParent();
	<span class="reserved">if</span> (parent == null) {
		<span class="reserved">return</span> null;
	}
	<span class="reserved">return</span> new File(parent);
}



File.test = <span class="reserved">function</span>() {
	var file = new File(<span class="literal">"test.bin"</span>);
	var b = new ByteString(<span class="literal">"Hello World"</span>, ASCII);
	file.writeAll(b);
	
	var file = new File(<span class="literal">"test.bin"</span>);
	var c = file.readAllAsBinary();
	print(c.toString(ASCII));
	
	var file = new File(<span class="literal">"test.txt"</span>);
	var s = <span class="literal">"Hello World"</span>;
	file.writeAll(s);
	
	var file = new File(<span class="literal">"test.txt"</span>);
	var c = file.readAllAsString();
	print(c);
	
	var dir = file.getParentFile();
	print(dir.getAbsolutePath());
	print(dir.list());
	
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
OutlineEF
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="OutlineEF";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineDF.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineFCP.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class OutlineEF</H2>
<PRE>Object
   |
   +--<b>OutlineEF</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>OutlineEF</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-OutlineCore.js.html'>OutlineCore.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#df">df</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#profile">profile</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#OutlineEF()">OutlineEF</A></B>(df, name, profile)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#expandListener">expandListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="df"><!-- --></A>
   <H3>df</H3>
   <PRE>Object&nbsp;<B>df</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="profile"><!-- --></A>
   <H3>profile</H3>
   <PRE>Object&nbsp;<B>profile</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="OutlineEF()"><!-- --></A><H3>
OutlineEF</H3>
<PRE><B>OutlineEF</B>(df, name, profile)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="expandListener"><!-- --></A>
   <H3>expandListener</H3>
   <PRE>void <B>expandListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="OutlineDF.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="OutlineFCP.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 TestProcedure.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" TestProcedure.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-TestProcedure.js.html" 
                                            target="classFrame">TestProcedure.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="TestProcedure.html" TARGET="classFrame">TestProcedure</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CommonCertificateAttributes
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CommonCertificateAttributes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonAuthenticationObjectAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonDataContainerObjectAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CommonCertificateAttributes</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<b>PKCS15_CommonCertificateAttributes</b>
</PRE>

   
      <DL>
      <DT>
         <B>Direct Known Subclasses:</B> 
         <DD>
                  <a href='PKCS15_Certificate.html'>PKCS15_Certificate</a>
         </DD>
      </DL>
   


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CommonCertificateAttributes</B>
   
      <DT>extends <a href='PKCS15_CIO.html'>PKCS15_CIO</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds common certificate attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonCertificateAttributes ::= SEQUENCE {
 iD Identifier,
 authority BOOLEAN DEFAULT FALSE,
 identifier CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 certHash [0] CertHash OPTIONAL,
 trustedUsage [1] Usage OPTIONAL,
 identifiers [2] SEQUENCE OF CredentialIdentifier {{KeyIdentifiers}} OPTIONAL,
 validity [4] Validity OPTIONAL,
 ...
 } -- Context tag [3] is reserved for historical reasons
 NOTE PKCS #15 uses context tag [3].
 Usage ::= SEQUENCE {
 keyUsage KeyUsage OPTIONAL,
 extKeyUsage SEQUENCE SIZE (1..MAX) OF OBJECT IDENTIFIER OPTIONAL,
 ...
 } (WITH COMPONENTS {..., keyUsage PRESENT} | WITH COMPONENTS {..., extKeyUsage PRESENT})
 </pre>
 <BR/><B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#authority">authority</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#iD">iD</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#identifier">identifier</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CommonCertificateAttributes()">PKCS15_CommonCertificateAttributes</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Common Certificate Attribute Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="authority"><!-- --></A>
   <H3>authority</H3>
   <PRE>Object&nbsp;<B>authority</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="iD"><!-- --></A>
   <H3>iD</H3>
   <PRE>Object&nbsp;<B>iD</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="identifier"><!-- --></A>
   <H3>identifier</H3>
   <PRE>Object&nbsp;<B>identifier</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CommonCertificateAttributes()"><!-- --></A><H3>
PKCS15_CommonCertificateAttributes</H3>
<PRE><B>PKCS15_CommonCertificateAttributes</B>(tlv)</PRE>


<UL>
   Create a Common Certificate Attribute Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        content information   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonAuthenticationObjectAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonDataContainerObjectAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="TestGroup.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>TestGroup.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		Core elements of a test group containing individual test cases<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="TestGroup.html">TestGroup</a></b></td>
    <td><p>Abstract base class implementing a group of test cases.</p>
 <p>Actual test group objects are derived from this base class.</p>
 <p>Each test case is created as a method of this object.</p>
 </td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span> Core elements of a test group containing individual test cases
 */</span>



<span class="comment">/**
 * Create a test group object containing test cases.
 * 
 * <span class="attrib">@class</span>
 * &lt;p&gt;Abstract base class implementing a group of test cases.&lt;/p&gt;
 * &lt;p&gt;Actual test group objects are derived from this base class.&lt;/p&gt;
 * &lt;p&gt;Each test case is created as a method of this object.&lt;/p&gt;
 * <span class="attrib">@constructor</span>
 * <span class="attrib">@param</span> {String} name the name of the test group
 * <span class="attrib">@param</span> {Object} parameter the parameter object for this group of tests
 */</span>
<span class="reserved">function</span> TestGroup(name, parameter) {

	<span class="reserved">this</span>.name = name;
	<span class="reserved">this</span>.parameter = parameter;
<span class="comment">//	this.logfile = new String("--- TestGroup " + name + "\n");</span>
	<span class="reserved">this</span>.marker = null;
	
<span class="comment">//	print("TestGroup constructor called");</span>
}



<span class="comment">/**
 * Log a text message.
 * 
 * <span class="attrib">@param</span> {String} message the message to add to the log
 */</span>
TestGroup.<span class="reserved">prototype</span>.log = <span class="reserved">function</span>(message) {
	GPSystem.trace(message);
<span class="comment">//	this.logfile += message + "\n";</span>
<span class="comment">//	print(message);</span>
}



<span class="comment">/**
 * Setup method called before invoking each individual test case.
 */</span>
TestGroup.<span class="reserved">prototype</span>.setUp = <span class="reserved">function</span>() {
<span class="comment">//	this.log("TestGroup.setUp() called");</span>
}



<span class="comment">/**
 * Teardown method called after invocation of a test case.
 */</span>
TestGroup.<span class="reserved">prototype</span>.tearDown = <span class="reserved">function</span>() {
<span class="comment">//	this.log("TestGroup.tearDown() called");</span>
}



<span class="comment">/**
 * Verify that the given assertion evaluates to true. Throw an exception if result is false.
 * 
 * <span class="attrib">@param</span> {Boolean} result true if assertion is valid
 * <span class="attrib">@param</span> {String} message the message to log in case result is false
 */</span>
TestGroup.<span class="reserved">prototype</span>.assertTrue = <span class="reserved">function</span>(result, message) {
	<span class="reserved">if</span> (!result) {
		<span class="reserved">if</span> (<span class="reserved">this</span>.marker) {
			throw new Error(<span class="literal">"Assertion failed for ["</span> + <span class="reserved">this</span>.marker + <span class="literal">"]: "</span> + message);
		} <span class="reserved">else</span> {
			throw new Error(<span class="literal">"Assertion failed: "</span> + message);
		}
	}
}



<span class="comment">/**
 * Verify that the given values are equal. Throw an exception if not.
 * 
 * <span class="attrib">@param</span> {Any} first the first argument
 * <span class="attrib">@param</span> {Any} second the second argument
 * <span class="attrib">@param</span> {String} message the message to log in case result is false
 */</span>
TestGroup.<span class="reserved">prototype</span>.assertEquals = <span class="reserved">function</span>(first, second, message) {
	<span class="reserved">if</span> (first != second) {
		<span class="reserved">if</span> (<span class="reserved">this</span>.marker) {
			throw new Error(<span class="literal">"Assertion failed for ["</span> + <span class="reserved">this</span>.marker + <span class="literal">"]: "</span> + message);
		} <span class="reserved">else</span> {
			throw new Error(<span class="literal">"Assertion failed: "</span> + message);
		}
	}
}



<span class="comment">/**
 * Sets a marker used to identify a context in which an assertion failed.
 * 
 * &lt;p&gt;A context can be a certain iteration
 * or group of assertions. A marker allows to further identify the area of a problem.&lt;/p&gt;
 * 
 * <span class="attrib">@param</span> {String} marker the marker to set
 */</span>
TestGroup.<span class="reserved">prototype</span>.setMarker = <span class="reserved">function</span>(marker) {
	<span class="reserved">this</span>.marker = marker;
}



<span class="comment">/**
 * Returns the name of test group.
 * 
 * <span class="attrib">@type</span> String
 * <span class="attrib">@return</span> the name of the test group
 */</span>
TestGroup.<span class="reserved">prototype</span>.getName = <span class="reserved">function</span>() {
		<span class="reserved">return</span> <span class="reserved">this</span>.name;
}



<span class="comment">/**
 * Returns a list of tests as sorted array of test case names.
 * 
 * <span class="attrib">@type</span> String[]
 * <span class="attrib">@return</span> the sorted array of test case names
 */</span>
TestGroup.<span class="reserved">prototype</span>.getTestCaseNames = <span class="reserved">function</span>() {
	var tests = new Array();
	
	<span class="reserved">for</span> (f in <span class="reserved">this</span>) {
		<span class="reserved">if</span> (f.substr(0, 4) == <span class="literal">"case"</span>) {
			<span class="reserved">if</span> (<span class="reserved">this</span>[f] instanceof Function) {
				tests.push(f.substr(4));
			}
		}
	}

	tests.sort();
	<span class="reserved">return</span> tests;
}



<span class="comment">/**
 * Returns a specific test case function.
 * 
 * <span class="attrib">@param</span> {String} name the test case name
 * <span class="attrib">@type</span> Function
 * <span class="attrib">@return</span> the test case method
 */</span>
TestGroup.<span class="reserved">prototype</span>.getTestCase = <span class="reserved">function</span>(name) {
	<span class="reserved">return</span> <span class="reserved">this</span>[<span class="literal">"case"</span> + name];
}



<span class="comment">/**
 * Returns a list of test procedure names referenced by a test case.
 * 
 * <span class="attrib">@param</span> {String} test case name
 * <span class="attrib">@type</span> String[]
 * <span class="attrib">@return</span> a list of test procedure names or undefined
 */</span>
TestGroup.<span class="reserved">prototype</span>.getUsedTestProceduresForTestCase = <span class="reserved">function</span>(name) {
	<span class="reserved">if</span> (<span class="reserved">this</span>.constructor.<span class="reserved">prototype</span>.usedProcedures) {
		<span class="reserved">return</span> <span class="reserved">this</span>.constructor.<span class="reserved">prototype</span>.usedProcedures[name];
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> undefined;
	}
}



<span class="comment">/**
 * Run a named test procedure.
 * 
 * &lt;p&gt;This method is called by code in a test case to run a test procedure.&lt;/p&gt;
 * &lt;p&gt;This method uses the test runner to create a new instance of the test procedure object.
 * All test steps in the procedure are executed and the test procedure object is returned to
 * the caller for further processing of test results.&lt;/p&gt;
 * 
 * <span class="attrib">@param</span> {String} name the test procedure name
 * <span class="attrib">@param</span> {Object} param the parameter object to pass to the execution of the test procedure
 * <span class="attrib">@type</span> TestProcedure
 * <span class="attrib">@return</span> the test procedure object
 */</span>
TestGroup.<span class="reserved">prototype</span>.runTestProcedure = <span class="reserved">function</span>(name, param) {
	<span class="reserved">if</span> (!<span class="reserved">this</span>.testRunner) {
		throw new GPError(<span class="literal">"TestGroup"</span>, GPError.INVALID_USAGE, 0, <span class="literal">"No test runner defined"</span>);
	}
	var proc = <span class="reserved">this</span>.testRunner.getTestProcedure(name);
	var test = new proc(name, <span class="reserved">this</span>, param);
	test.run();
	
	<span class="reserved">return</span> test; 
}



<span class="comment">/**
 * Report progress of passed steps in a test procedure to the test runner. This method is used internally.
 * 
 * <span class="attrib">@private</span>
 * <span class="attrib">@param</span> {String} procedure the procedure name
 * <span class="attrib">@param</span> {String} step the step name
 */</span>
TestGroup.<span class="reserved">prototype</span>.reportProgress = <span class="reserved">function</span>(procedure, step) {
	<span class="reserved">if</span> (<span class="reserved">this</span>.testRunner) {
		var runner = <span class="reserved">this</span>.testRunner;
		var uniqueName = <span class="reserved">this</span>.currentTestCase + <span class="literal">"/"</span> + procedure + <span class="literal">"/"</span> + step;
		runner.hasPassed(uniqueName, null);
	}
}



<span class="comment">/**
 * Initialize a test run. This method is used internally.
 * <span class="attrib">@private</span>
 */</span>
TestGroup.<span class="reserved">prototype</span>.initTestRun = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.marker = null;
}



<span class="comment">/**
 * Run a single test case. This method is called internally. Use {<span class="attrib">@link</span> #runTestCase} for running a single test case.
 * 
 * <span class="attrib">@private</span>
 * <span class="attrib">@type</span> boolean
 * <span class="attrib">@return</span> true if test passed
 */</span>
TestGroup.<span class="reserved">prototype</span>.runTestCaseInternal = <span class="reserved">function</span>(casename, runner) {
	var result = false;
	<span class="reserved">this</span>.currentTestCase = <span class="reserved">this</span>.name + <span class="literal">"/"</span> + casename;
	<span class="reserved">this</span>.testRunner = runner;

<span class="comment">//	this.logfile = "";</span>

	var starttime = new Date();
	GPSystem.markTrace();
	logentry = <span class="literal">"+ TestCase "</span> + <span class="reserved">this</span>.currentTestCase + <span class="literal">" started "</span> + starttime;
	print(logentry);
	<span class="reserved">this</span>.log(logentry);
	try {
		<span class="reserved">this</span>.setUp();
		var func = <span class="reserved">this</span>.getTestCase(casename);
		func.call(<span class="reserved">this</span>);
		<span class="reserved">this</span>.tearDown();
		var endtime = new Date();
		logentry = <span class="literal">"+ TestCase "</span> + <span class="reserved">this</span>.currentTestCase + <span class="literal">" completed on "</span> + endtime + <span class="literal">" after "</span> + (endtime.valueOf() - starttime.valueOf()) + <span class="literal">" ms"</span>;
		print(logentry);
		<span class="reserved">this</span>.log(logentry);
		<span class="reserved">if</span> (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasPassed(<span class="reserved">this</span>.currentTestCase, logfile);
		}
		result = true;
	}
	catch(e) {
		var endtime = new Date();
		logentry = <span class="literal">"+ TestCase "</span> + <span class="reserved">this</span>.currentTestCase + <span class="literal">" failed on "</span> + endtime + <span class="literal">" after "</span> + (endtime.valueOf() - starttime.valueOf()) + <span class="literal">" ms"</span>;
		print(logentry);
		<span class="reserved">this</span>.log(logentry);
		
		logentry = <span class="literal">"  ### - "</span> + e;
		print(logentry);
		<span class="reserved">this</span>.log(logentry);
		<span class="reserved">for</span> (j in e) {
			logentry = <span class="literal">"  ### "</span> + j + <span class="literal">" = "</span> + e[j];
			print(logentry);
			<span class="reserved">this</span>.log(logentry);
		}
		
		<span class="reserved">if</span> (runner) {
			var logfile = GPSystem.copyTrace();
			runner.hasFailed(<span class="reserved">this</span>.currentTestCase, logfile);
		}
	}
	<span class="reserved">return</span> result;
}



<span class="comment">/**
 * Runs all tests in a test group.
 * 
 * &lt;p&gt;This method can be used to run a test group without a test runner. In that case leave the runner
 * argument empty or null.&lt;/p&gt;
 * 
 * <span class="attrib">@param</span> {TestRunner} runner the test runner to report progress or undefined or null
 */</span>
TestGroup.<span class="reserved">prototype</span>.run = <span class="reserved">function</span>(runner) {
	<span class="reserved">this</span>.initTestRun();
	
	var tests = <span class="reserved">this</span>.getTestCaseNames();
	
	var startgroup = new Date();
	var logentry = <span class="literal">"TestGroup "</span> + <span class="reserved">this</span>.name + <span class="literal">" started "</span> + startgroup;
	var failures = 0;
	print(logentry);
	<span class="reserved">this</span>.log(logentry);
	
	<span class="reserved">for</span> (var i = 0; i &lt; tests.length; i++) {
		var uniqueName = <span class="reserved">this</span>.name + <span class="literal">"/"</span> + tests[i];
		
		<span class="reserved">if</span> (runner) {
			<span class="reserved">if</span> (!runner.isEnabled(uniqueName))
				continue;
		}
		
		<span class="reserved">if</span> (!<span class="reserved">this</span>.runTestCaseInternal(tests[i], runner)) {
			failures++;
		}
	}

	var endgroup = new Date();
	logentry = <span class="literal">"TestGroup "</span> + <span class="reserved">this</span>.name + <span class="literal">" completed on "</span> + endgroup + <span class="literal">" with "</span> + failures + <span class="literal">" failed tests"</span>;
	print(logentry);
	<span class="reserved">this</span>.log(logentry);
}



<span class="comment">/**
 * Run a single test in a test group, optionally using a test runner.
 * 
 * <span class="attrib">@param</span> {String} casename the name of the test case
 * <span class="attrib">@param</span> {TestRunner} the test runner object or undefined or null
 */</span>
TestGroup.<span class="reserved">prototype</span>.runTestCase = <span class="reserved">function</span>(casename, runner) {
	<span class="reserved">this</span>.initTestRun();
	<span class="reserved">this</span>.runTestCaseInternal(casename, runner);
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="CRTDecorator.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>CRTDecorator.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'CRTDecorator.js'<BR/><BR/>
	
</p>

<hr>



<!-- ========== METHOD SUMMARY =========== -->

	<a name="method_summary"><!-- --></a>
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
			<td colspan=2>
				<font size="+2">
					<b>Method Summary</b>
				</font>
			</td>
		</tr>
	
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;void</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!CRTDecorator">CRTDecorator</a></b>(asn1)
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
	
	</table>
    <p>

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Function to name tags contained in Control Reference Templates (CRT)
 */</span>



<span class="comment">//</span>
<span class="comment">// Identify tags in the Control Reference Template</span>
<span class="comment">//</span>
<span class="reserved">function</span> CRTDecorator(asn1) {
	switch(asn1.tag) {
	case 0x80:
		asn1.setName(<span class="literal">"cryptographicMechanism"</span>);
		break;
	case 0x81:
		asn1.setName(<span class="literal">"fileIdentifierOrPath"</span>);
		break;
	case 0x82:
		asn1.setName(<span class="literal">"dFName"</span>);
		break;
	case 0x83:
		asn1.setName(<span class="literal">"secretOrPublicKeyReference"</span>);
		break;
	case 0x84:
		asn1.setName(<span class="literal">"sessionOrPrivateKeyReference"</span>);
		break;
	case 0x85:
		asn1.setName(<span class="literal">"nullBlock"</span>);
		break;
	case 0x86:
		asn1.setName(<span class="literal">"chainingBlock"</span>);
		break;
	case 0x87:
		asn1.setName(<span class="literal">"initialBlock"</span>);
		break;
	case 0x88:
		asn1.setName(<span class="literal">"previousChallenge"</span>);
		break;
	case 0x89:
		asn1.setName(<span class="literal">"proprietaryDataElementIndex"</span>);
		break;
	case 0x8A:
		asn1.setName(<span class="literal">"proprietaryDataElementIndex"</span>);
		break;
	case 0x8B:
		asn1.setName(<span class="literal">"proprietaryDataElementIndex"</span>);
		break;
	case 0x8C:
		asn1.setName(<span class="literal">"proprietaryDataElementIndex"</span>);
		break;
	case 0x8D:
		asn1.setName(<span class="literal">"proprietaryDataElementIndex"</span>);
		break;
	case 0x90:
		asn1.setName(<span class="literal">"cardHashCode"</span>);
		break;
	case 0x91:
		asn1.setName(<span class="literal">"cardRandomNumber"</span>);
		break;
	case 0x92:
		asn1.setName(<span class="literal">"cardTimeStamp"</span>);
		break;
	case 0x93:
		asn1.setName(<span class="literal">"dsiCounter"</span>);
		break;
	case 0x94:
		asn1.setName(<span class="literal">"challengeOrDerivationParameter "</span>);
		break;
	case 0x95:
		asn1.setName(<span class="literal">"usageQualifier"</span>);
		break;
	case 0x8E:
		asn1.setName(<span class="literal">"cryptographicContentReference"</span>);
		break;
	}
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="x509certificategenerator.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>x509certificategenerator.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		A X509 certificate generator class following RFC5280<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="X509CertificateGenerator.html">X509CertificateGenerator</a></b></td>
    <td>Class implementing a X.509 certificate generator
 </td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

	<a name="method_summary"><!-- --></a>
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
			<td colspan=2>
				<font size="+2">
					<b>Method Summary</b>
				</font>
			</td>
		</tr>
	
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;void</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!X509CertificateGeneratorECCTest">X509CertificateGeneratorECCTest</a></b>()
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;void</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!X509CertificateGeneratorRSATest">X509CertificateGeneratorRSATest</a></b>()
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
	
	</table>
    <p>

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span> A X509 certificate generator class following RFC5280
 */</span>

<span class="reserved">if</span> (typeof(__ScriptingServer) == <span class="literal">"undefined"</span>) {
	load(<span class="literal">"pkixcommon.js"</span>);
}

<span class="comment">/**
 * Create a X.509 certificate generator.
 *
 * <span class="attrib">@class</span> Class implementing a X.509 certificate generator
 * <span class="attrib">@constructor</span>
 *
 * <span class="attrib">@param</span> {Crypto} crypto the crypto provider to use for signing operations
 */</span>
<span class="reserved">function</span> X509CertificateGenerator(crypto) {
	<span class="reserved">this</span>.crypto = crypto;
	<span class="reserved">this</span>.encodeECDomainParameter = true;
	<span class="reserved">this</span>.reset();
}



<span class="comment">/**
 * Resets all internal state variables.
 *
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.reset = <span class="reserved">function</span>() {
	<span class="reserved">this</span>.extensions = new Array();
	
}



<span class="comment">/**
 * Sets the serial number.
 *
 * <span class="attrib">@param</span> {ByteString} serialNumber the serial number for the certificate
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.setSerialNumber = <span class="reserved">function</span>(serialNumber) {
	<span class="reserved">this</span>.serialNumber = serialNumber;
}



<span class="comment">/**
 * Sets the isser name.
 *
 * &lt;p&gt;The issuer name must be a JavaScript object containing the properties:&lt;/p&gt;
 * &lt;ul&gt;
 *  &lt;li&gt;C - the country&lt;/li&gt;
 *  &lt;li&gt;O - the organization&lt;/li&gt;
 *  &lt;li&gt;OU - the organization unit&lt;/li&gt;
 *  &lt;li&gt;CN - the common name&lt;/li&gt;
 * &lt;/ul&gt;
 * &lt;p&gt;Example:&lt;/p&gt;
 * &lt;pre&gt;
 *	var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
 * &lt;/pre&gt;
 * <span class="attrib">@param</span> {Object} issuer the issuer name
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.setIssuer = <span class="reserved">function</span>(issuer) {
	<span class="reserved">this</span>.issuer = issuer;
}



<span class="comment">/**
 * Sets the effective date for the certificate.
 *
 * <span class="attrib">@param</span> {String or Date} date the date in format YYMMDDHHMMSSZ
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.setNotBefore = <span class="reserved">function</span>(date) {
	<span class="reserved">this</span>.notBefore = date;
}



<span class="comment">/**
 * Sets the expiration date for the certificate.
 *
 * <span class="attrib">@param</span> {String or Date} date the date in format YYMMDDHHMMSSZ
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.setNotAfter = <span class="reserved">function</span>(date) {
	<span class="reserved">this</span>.notAfter = date;
}



<span class="comment">/**
 * Sets the subject name.
 *
 * &lt;p&gt;The subject name must be a JavaScript object containing the properties:&lt;/p&gt;
 * &lt;ul&gt;
 *  &lt;li&gt;C - the country&lt;/li&gt;
 *  &lt;li&gt;O - the organization&lt;/li&gt;
 *  &lt;li&gt;OU - the organization unit&lt;/li&gt;
 *  &lt;li&gt;CN - the common name&lt;/li&gt;
 * &lt;/ul&gt;
 * &lt;p&gt;Example:&lt;/p&gt;
 * &lt;pre&gt;
 *	var subject = { C:"UT", O:"ACME Corporation", CN:"Joe Doe" };
 * &lt;/pre&gt;
 * <span class="attrib">@param</span> {Object} subject the subject name
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.setSubject = <span class="reserved">function</span>(subject) {
	<span class="reserved">this</span>.subject = subject;
}



<span class="comment">/**
 * Sets the subjects public key
 *
 * &lt;p&gt;The methods accepts ECC and RSA Public Keys.&lt;/p&gt;
 *
 * <span class="attrib">@param</span> {Key} publicKey the subjects public key
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.setPublicKey = <span class="reserved">function</span>(publicKey) {
	<span class="reserved">this</span>.publicKey = publicKey;
}



<span class="comment">/**
 * Sets the signature algorithm. Currently only Crypto.RSA is supported
 *
 * <span class="attrib">@param</span> {Number} alg the signature algorithm, only Crypto.RSA supported
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.setSignatureAlgorithm = <span class="reserved">function</span>(alg) {
	<span class="reserved">this</span>.signatureAlgorithm = alg;
}



<span class="comment">/**
 * Adds an extension to the certificate
 *
 * &lt;p&gt;The structure is defined as:&lt;/p&gt;
 * &lt;pre&gt;
 *    Extension  ::=  SEQUENCE  {
 *        extnID      OBJECT IDENTIFIER,
 *        critical    BOOLEAN DEFAULT FALSE,
 *        extnValue   OCTET STRING
 *                    -- contains the DER encoding of an ASN.1 value
 *                    -- corresponding to the extension type identified
 *                    -- by extnID
 *        }
 *&lt;/pre&gt;
 * <span class="attrib">@param</span> {String} extnID the extensions object identifier
 * <span class="attrib">@param</span> {Boolean} critical the extension is critical
 * <span class="attrib">@param</span> {ByteString} the extension value as ByteString
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.addExtension = <span class="reserved">function</span>(extnID, critical, extnValue) {
	var t = new ASN1(<span class="literal">"extension"</span>, ASN1.SEQUENCE,
				new ASN1(<span class="literal">"extnID"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(extnID, OID))
			);

	<span class="reserved">if</span> (critical) {
		t.add(new ASN1(<span class="literal">"critical"</span>, ASN1.BOOLEAN, new ByteString(<span class="literal">"FF"</span>, HEX)));
	}

	t.add(new ASN1(<span class="literal">"extnValue"</span>, ASN1.OCTET_STRING, extnValue));
	<span class="reserved">this</span>.extensions.push(t);

}



<span class="comment">/**
 * Adds the key usage extension.
 *
 * &lt;p&gt;The following flags are defined:&lt;/p&gt;
 * &lt;pre&gt;
 * PKIXCommon.digitalSignature = 0x0080;
 * PKIXCommon.nonRepudiation   = 0x0040;
 * PKIXCommon.keyEncipherment  = 0x0020;
 * PKIXCommon.dataEncipherment = 0x0010;
 * PKIXCommon.keyAgreement     = 0x0008;
 * PKIXCommon.keyCertSign      = 0x0004;
 * PKIXCommon.cRLSign          = 0x0002;
 * PKIXCommon.encipherOnly     = 0x0001;
 * PKIXCommon.decipherOnly     = 0x8000;
 * &lt;/pre&gt;
 * <span class="attrib">@param</span> {Number} the key usage flags as combination of the flags defined above.
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.addKeyUsageExtension = <span class="reserved">function</span>(flags) {
	var t = new ASN1(ASN1.BIT_STRING, PKIXCommon.bitstringForInteger(flags));
	<span class="reserved">this</span>.addExtension(<span class="literal">"2.5.29.15"</span>, true, t.getBytes());
}

<span class="comment">// Deprecated: Use PKIXCommon. instead</span>
X509CertificateGenerator.digitalSignature	= 0x0080;
X509CertificateGenerator.nonRepudiation		= 0x0040;
X509CertificateGenerator.keyEncipherment	= 0x0020;
X509CertificateGenerator.dataEncipherment	= 0x0010;
X509CertificateGenerator.keyAgreement		= 0x0008;
X509CertificateGenerator.keyCertSign		= 0x0004;
X509CertificateGenerator.cRLSign			= 0x0002;
X509CertificateGenerator.encipherOnly		= 0x0001;
X509CertificateGenerator.decipherOnly		= 0x8000;



<span class="comment">/**
 * Adds the BasicConstraints extension.
 *
 * <span class="attrib">@param</span> {Boolean} cA the certificate belongs to a CA
 * <span class="attrib">@param</span> {Number} pathLenConstraint the maximum number of subordinate CA certificates
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.addBasicConstraintsExtension = <span class="reserved">function</span>(cA, pathLenConstraint) {
	var t = new ASN1(<span class="literal">"BasicConstraints"</span>,ASN1.SEQUENCE);
	<span class="reserved">if</span> (cA) {
		t.add(new ASN1(<span class="literal">"cA"</span>, ASN1.BOOLEAN, new ByteString(<span class="literal">"FF"</span>, HEX)));
	}
	<span class="reserved">if</span> (pathLenConstraint &gt;= 0) {
		var bb = new ByteBuffer();
		bb.append(pathLenConstraint);
		t.add(new ASN1(<span class="literal">"pathLenConstraint"</span>, ASN1.INTEGER, bb.toByteString()));
	}
	<span class="reserved">this</span>.addExtension(<span class="literal">"2.5.29.19"</span>, true, t.getBytes());
}



<span class="comment">/**
 * Adds the subject public key identifier extension based on the certificates subject key.
 *
 * &lt;p&gt;The key identifier is calculated as SHA-1 hash over the contents of the
 * subject public key (Without tag, length and number of unused bits.&lt;/p&gt;
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.addSubjectKeyIdentifierExtension = <span class="reserved">function</span>() {
	var spi = <span class="reserved">this</span>.getSubjectPublicKeyInfo();
	var keyvalue = spi.get(1).value.bytes(1);
	var crypto = new Crypto();
	var hash = crypto.digest(Crypto.SHA_1, keyvalue);
	
	var t = new ASN1(ASN1.OCTET_STRING, hash);
	<span class="reserved">this</span>.addExtension(<span class="literal">"2.5.29.14"</span>, false, t.getBytes());
}



<span class="comment">/**
 * Adds the authority public key identifier extension based on the issuers key.
 *
 * &lt;p&gt;The key identifier is calculated as SHA-1 hash over the contents of the
 * issuer public key (Without tag, length and number of unused bits.&lt;/p&gt;
 *
 * <span class="attrib">@param</span> {Key} publicKey the authority subject key
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.addAuthorityKeyIdentifierExtension = <span class="reserved">function</span>(publicKey) {
	<span class="reserved">if</span> (publicKey.getComponent(Key.MODULUS)) {
		var spi = PKIXCommon.createRSASubjectPublicKeyInfo(publicKey);
	} <span class="reserved">else</span> {
		var spi = PKIXCommon.createECSubjectPublicKeyInfo(publicKey, <span class="reserved">this</span>.encodeECDomainParameter);
	}

	var keyvalue = spi.get(1).value.bytes(1);
	var crypto = new Crypto();
	var hash = crypto.digest(Crypto.SHA_1, keyvalue);
	
	var t = new ASN1(ASN1.SEQUENCE,
					new ASN1(0x80, hash)
				);
	<span class="reserved">this</span>.addExtension(<span class="literal">"2.5.29.35"</span>, false, t.getBytes());
}



<span class="comment">/**
 * Adds the CRL distribution point URLs.
 *
 * <span class="attrib">@param</span> {String[]} url a list of URLs
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.addCRLDistributionPointURL = <span class="reserved">function</span>(url) {
	var t = new ASN1(<span class="literal">"cRLDistributionPoints"</span>, ASN1.SEQUENCE);

	<span class="reserved">for</span> (var i = 0; i &lt; url.length; i++) {
		t.add(	new ASN1(<span class="literal">"cRLDistributionPoint"</span>, ASN1.SEQUENCE,
					new ASN1(<span class="literal">"distributionPoint"</span>, 0xA0,
						new ASN1(<span class="literal">"fullName"</span>, 0xA0,
							new ASN1(<span class="literal">"uniformResourceIdentifier"</span>, 0x86, new ByteString(url[i], ASCII))
						)
					)
				));
	}
	<span class="reserved">this</span>.addExtension(<span class="literal">"id-ce-cRLDistributionPoints"</span>, false, t.getBytes());
}



<span class="comment">/**
 * Adds the extended key usage extension
 *
 * <span class="attrib">@param</span> {String[]} oids the list of object identifier names
 * <span class="attrib">@param</span> {Boolean} critical the extension is critical
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.addExtendedKeyUsages = <span class="reserved">function</span>(oids, critical) {
	var t = new ASN1(<span class="literal">"extKeyUsages"</span>, ASN1.SEQUENCE);

	<span class="reserved">for</span> (var i = 0; i &lt; oids.length; i++) {
		t.add( new ASN1(<span class="literal">"keyPurposeId"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(oids[i], OID) ));
	}
	<span class="reserved">this</span>.addExtension(<span class="literal">"id-ce-extKeyUsage"</span>, critical, t.getBytes());
}



<span class="comment">/**
 * Gets the issuer name as TLV object
 *
 * <span class="attrib">@return</span> the issuer RDNSequence
 * <span class="attrib">@type</span> ASN1
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.getIssuer = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.issuer instanceof ASN1) {
		<span class="reserved">return</span> <span class="reserved">this</span>.issuer;
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> PKIXCommon.encodeName(<span class="reserved">this</span>.issuer);
	}
}



<span class="comment">/**
 * Gets the certificate validity as TLV object
 *
 * <span class="attrib">@return</span> the certificates validity
 * <span class="attrib">@type</span> ASN1
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.getValidity = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"validity"</span>, ASN1.SEQUENCE);

	var ts = <span class="reserved">this</span>.notBefore;
	<span class="reserved">if</span> (typeof(ts) != <span class="literal">"string"</span>) {
		ts = PKIXCommon.dtoUTC(<span class="reserved">this</span>.notBefore);
	}
	t.add(new ASN1(<span class="literal">"notBefore"</span>, ASN1.UTCTime, new ByteString(ts, ASCII)));
	
	var ts = <span class="reserved">this</span>.notAfter;
	<span class="reserved">if</span> (typeof(ts) != <span class="literal">"string"</span>) {
		ts = PKIXCommon.dtoUTC(<span class="reserved">this</span>.notAfter);
	}
	t.add(new ASN1(<span class="literal">"notAfter"</span>, ASN1.UTCTime, new ByteString(ts, ASCII)));
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the subject name as TLV object
 *
 * <span class="attrib">@return</span> the issuer RDNSequence
 * <span class="attrib">@type</span> ASN1
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.getSubject = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.subject instanceof ASN1) {
		<span class="reserved">return</span> <span class="reserved">this</span>.subject;
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> PKIXCommon.encodeName(<span class="reserved">this</span>.subject);
	}
}



<span class="comment">/**
 * Gets the subject's public key as TLV object
 *
 * <span class="attrib">@return</span> the subject's public key info
 * <span class="attrib">@type</span> ASN1
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.getSubjectPublicKeyInfo = <span class="reserved">function</span>() {
	<span class="reserved">if</span> (<span class="reserved">this</span>.publicKey.getComponent(Key.MODULUS)) {
		<span class="reserved">return</span> PKIXCommon.createRSASubjectPublicKeyInfo(<span class="reserved">this</span>.publicKey);
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> PKIXCommon.createECSubjectPublicKeyInfo(<span class="reserved">this</span>.publicKey, <span class="reserved">this</span>.encodeECDomainParameter);
	}
}



<span class="comment">/**
 * Gets the certificate extension as TLV object
 *
 * <span class="attrib">@return</span> the certificate extensions
 * <span class="attrib">@type</span> ASN1
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.getExtensions = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"extensions"</span>, 0xA3);
	var s = new ASN1(<span class="literal">"extensions"</span>, ASN1.SEQUENCE);
	
	t.add(s);
	
	<span class="reserved">for</span> (var i = 0; i &lt; <span class="reserved">this</span>.extensions.length; i++) {
		s.add(<span class="reserved">this</span>.extensions[i]);
	}
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the part of the certificate that will be signed
 *
 * <span class="attrib">@return</span> the TBSCertificate part
 * <span class="attrib">@type</span> ASN1
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.getTbsCertificate = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"tbsCertificate"</span>, ASN1.SEQUENCE);
	t.add(new ASN1(<span class="literal">"version"</span>, 0xA0,
			new ASN1(<span class="literal">"version"</span>, ASN1.INTEGER, new ByteString(<span class="literal">"02"</span>, HEX))));
	t.add(new ASN1(<span class="literal">"serialNumber"</span>, ASN1.INTEGER, PKIXCommon.convertUnsignedInteger(<span class="reserved">this</span>.serialNumber)));
	t.add(<span class="reserved">this</span>.getSignatureAlgorithm());
	t.add(<span class="reserved">this</span>.getIssuer());
	t.add(<span class="reserved">this</span>.getValidity());
	t.add(<span class="reserved">this</span>.getSubject());
	t.add(<span class="reserved">this</span>.getSubjectPublicKeyInfo());
	t.add(<span class="reserved">this</span>.getExtensions());
	<span class="reserved">return</span> t;
}



<span class="comment">/**
 * Gets the signature algorithm TLV object
 *
 * <span class="attrib">@return</span> the signature algorithm object
 * <span class="attrib">@type</span> ASN1
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.getSignatureAlgorithm = <span class="reserved">function</span>() {
	var t = new ASN1(<span class="literal">"signatureAlgorithm"</span>, ASN1.SEQUENCE);

	<span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.RSA) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.113549.1.1.5"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> <span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.RSA_SHA256) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"1.2.840.113549.1.1.11"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> <span class="reserved">if</span> (<span class="reserved">this</span>.signatureAlgorithm == Crypto.ECDSA_SHA256) {
		t.add(new ASN1(<span class="literal">"algorithm"</span>, ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"ecdsa-with-SHA256"</span>, OID)));
		t.add(new ASN1(<span class="literal">"parameters"</span>, ASN1.NULL, new ByteString(<span class="literal">""</span>, HEX)));
	} <span class="reserved">else</span> {
		throw new GPError(<span class="literal">"X509CertificateGenerator"</span>, GPError.INVALID_MECH, <span class="reserved">this</span>.signatureAlgorithm, <span class="literal">"Invalid algorithm"</span>);
	}
		
	<span class="reserved">return</span> t;
}

 

<span class="comment">/**
 * Generates the certificate.
 *
 * <span class="attrib">@return</span> the generated certificate
 * <span class="attrib">@type</span> X509
 */</span>
X509CertificateGenerator.<span class="reserved">prototype</span>.generateX509Certificate = <span class="reserved">function</span>(privateKey) {
	var certificate = new ASN1(<span class="literal">"certificate"</span>, ASN1.SEQUENCE);
	
	var tbs = <span class="reserved">this</span>.getTbsCertificate();
	certificate.add(tbs);
	certificate.add(<span class="reserved">this</span>.getSignatureAlgorithm());
	
	var signature = <span class="reserved">this</span>.crypto.sign(privateKey, <span class="reserved">this</span>.signatureAlgorithm, tbs.getBytes());
	signature = (new ByteString(<span class="literal">"00"</span>, HEX)).concat(signature);

	var signatureValue = new ASN1(<span class="literal">"signatureValue"</span>, ASN1.BIT_STRING, signature);
	certificate.add(signatureValue);
	
<span class="comment">//	print(certificate);</span>
	<span class="reserved">return</span> new X509(certificate.getBytes());
}



<span class="reserved">function</span> X509CertificateGeneratorRSATest() {

	var crypto = new Crypto();
	
	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setSize(1024);
	
	crypto.generateKeyPair(Crypto.RSA, caPublicKey, caPrivateKey);
	
<span class="comment">//	var caPrivKey = new Key("profiles/kp_rsa_private.xml");</span>

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString(<span class="literal">"01"</span>, HEX));
	x.setSignatureAlgorithm(Crypto.RSA);
	var issuer = { C:<span class="literal">"UT"</span>, O:<span class="literal">"ACME Corporation"</span>, CN:<span class="literal">"Test-CA"</span> };
	x.setIssuer(issuer);
	x.setNotBefore(<span class="literal">"060825120000Z"</span>);
	x.setNotAfter(<span class="literal">"160825120000Z"</span>);
	var subject = { C:<span class="literal">"UT"</span>, O:<span class="literal">"Utopia CA"</span>, OU:<span class="literal">"ACME Corporation"</span>, CN:<span class="literal">"Joe Doe"</span> };
	x.setSubject(subject);

	x.setPublicKey(caPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );
							
	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(caPublicKey);

	var cert = x.generateX509Certificate(caPrivateKey);
	var fn = GPSystem.mapFilename(<span class="literal">"cert_rsa.cer"</span>, GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, cert.getBytes());

	cert.verifyWith(cert);

	print(cert);
}



<span class="reserved">function</span> X509CertificateGeneratorECCTest() {

	var crypto = new Crypto();
	
	var caPrivateKey = new Key();
	caPrivateKey.setType(Key.PRIVATE);

	var caPublicKey = new Key();
	caPublicKey.setType(Key.PUBLIC);
	caPublicKey.setComponent(Key.ECC_CURVE_OID, new ByteString(<span class="literal">"brainpoolP256r1"</span>, OID));
	
	crypto.generateKeyPair(Crypto.EC, caPublicKey, caPrivateKey);

	var x = new X509CertificateGenerator(crypto);

	x.reset();
	x.setSerialNumber(new ByteString(<span class="literal">"01"</span>, HEX));
	x.setSignatureAlgorithm(Crypto.ECDSA_SHA256);
	var issuer = { C:<span class="literal">"UT"</span>, O:<span class="literal">"ACME Corporation"</span>, CN:<span class="literal">"Test-CA"</span> };
	x.setIssuer(issuer);
	var t = new Date();
	x.setNotBefore(t);
	x.setNotAfter(PKIXCommon.addDays(t, 180));
	var subject = { C:<span class="literal">"UT"</span>, O:<span class="literal">"Utopia CA"</span>, OU:<span class="literal">"ACME Corporation"</span>, CN:<span class="literal">"Joe Doe"</span> };
	x.setSubject(subject);

	x.setPublicKey(caPublicKey);

	x.addKeyUsageExtension(	PKIXCommon.digitalSignature |
							PKIXCommon.keyCertSign |
							PKIXCommon.cRLSign );
							
	x.addBasicConstraintsExtension(true, 0);
	x.addSubjectKeyIdentifierExtension();
	x.addAuthorityKeyIdentifierExtension(caPublicKey);

	var cert = x.generateX509Certificate(caPrivateKey);
	
	var fn = GPSystem.mapFilename(<span class="literal">"cert_ecc.cer"</span>, GPSystem.USR);
	PKIXCommon.writeFileToDisk(fn, cert.getBytes());

	cert.verifyWith(cert);
	
	print(cert);
	print(new ASN1(cert.getBytes()));
}

<span class="comment">// X509CertificateGeneratorECCTest();</span>
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="FCPDecorator.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>FCPDecorator.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'FCPDecorator.js'<BR/><BR/>
	
</p>

<hr>



<!-- ========== METHOD SUMMARY =========== -->

	<a name="method_summary"><!-- --></a>
	<table border="1" cellpadding="3" cellspacing="0" width="100%">
		<tr bgcolor="#CCCCFF" class="TableHeadingColor">
			<td colspan=2>
				<font size="+2">
					<b>Method Summary</b>
				</font>
			</td>
		</tr>
	
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;void</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!FCPDecorator">FCPDecorator</a></b>(asn1)
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
		   <tr bgcolor="white" class="TableRowColor">
		      <td align="right" valign="top" width="1%">
			 <font size="-1">
			    <code>static&nbsp;void</code>
			 </font>
		      </td>
		      <td>
			 <code>
			    <b>
			       <a href="GLOBALS.html#!s!SADecorator">SADecorator</a></b>(asn1)
			 </code>
			 <br>
			 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
			 
		      </td>
		   </tr>
		
	
	</table>
    <p>

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Function to name tags contained in FCP, FMD or FCI data structure
 */</span>



<span class="comment">//</span>
<span class="comment">// Decorator for security attributes in FCPs</span>
<span class="comment">//</span>
<span class="reserved">function</span> SADecorator(asn1) {
	var recurse = false;
	
	switch(asn1.tag) {
	case 0x86:
		asn1.setName(<span class="literal">"proprietarySecurityAttributes"</span>);
		break;
	case 0x8B:
		asn1.setName(<span class="literal">"securityAttributeReferenceExpanded"</span>);
		break;
	case 0x8C:
		asn1.setName(<span class="literal">"securityAttributeCompact"</span>);
		break;
	case 0x8B:
		asn1.setName(<span class="literal">"securityAttributeExtended"</span>);
		break;
	case 0xA0:
		asn1.setName(<span class="literal">"securityAttributeForDataObjects"</span>);
		recurse = true;
		break;
	case 0xA1:
		asn1.setName(<span class="literal">"securityAttributeForInterfaces"</span>);
		recurse = true;
		break;
	case 0xAB:
		asn1.setName(<span class="literal">"securityAttributeTemplateExpanded"</span>);
		<span class="reserved">for</span> (var i = 0; i &lt; asn1.elements; i++) {
			ARRDecorator(asn1.get(i));
		}
		break;
	}
	
	<span class="reserved">if</span> (recurse) {
		<span class="reserved">for</span> (var i = 0; i &lt; asn1.elements; i++) {
			SADecorator(asn1.get(i));
		}
	}
}



<span class="comment">//</span>
<span class="comment">// Identify tags in the FCP and assign a name</span>
<span class="comment">//</span>
<span class="reserved">function</span> FCPDecorator(asn1) {
	switch(asn1.tag) {
	case 0x62:
		asn1.setName(<span class="literal">"FCP"</span>);
		break;
	case 0x64:
		asn1.setName(<span class="literal">"FMD"</span>);
		break;
	case 0x6F:
		asn1.setName(<span class="literal">"FCI"</span>);
		break;
	}
	
	<span class="reserved">for</span> (var i = 0; i &lt; asn1.elements; i++) {
		var t = asn1.get(i);
		switch(t.tag) {
		case 0x80:
			t.setName(<span class="literal">"numberOfBytes"</span>);
			break;
		case 0x81:
			t.setName(<span class="literal">"numberOfBytesStructural"</span>);
			break;
		case 0x82:
			t.setName(<span class="literal">"fileDescriptor"</span>);
			break;
		case 0x83:
			t.setName(<span class="literal">"fileIdentifier"</span>);
			break;
		case 0x84:
			t.setName(<span class="literal">"dFName"</span>);
			break;
		case 0x85:
			t.setName(<span class="literal">"proprietaryInformationPlain"</span>);
			break;
		case 0x87:
			t.setName(<span class="literal">"idOfFCIExtension"</span>);
			break;
		case 0x88:
			t.setName(<span class="literal">"shortFileIdentifier"</span>);
			break;
		case 0x8A:
			t.setName(<span class="literal">"lifeCycleStatusByte"</span>);
			break;
		case 0x8D:
			t.setName(<span class="literal">"idOfSecurityEnvironmentTemplates"</span>);
			break;
		case 0x8B:
			t.setName(<span class="literal">"securityAttributeExtended"</span>);
			break;
		case 0xA5:
			t.setName(<span class="literal">"proprietaryInformationTLV"</span>);
			break;
		case 0xAC:
			t.setName(<span class="literal">"cryptoMechanismsIdentifier"</span>);
			break;
		default:
			SADecorator(t);
		}
	}
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
DataOutline
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="DataOutline";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="CRLGenerator.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="ECCUtils.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class DataOutline</H2>
<PRE>Object
   |
   +--<b>DataOutline</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>DataOutline</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-OutlineCore.js.html'>OutlineCore.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#data">data</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#factory">factory</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#format">format</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!ctxMenuList">ctxMenuList</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#DataOutline()">DataOutline</A></B>(data, format)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#actionListener">actionListener</A></B>(node, action)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#asn1DecoratorHook">asn1DecoratorHook</A></B>(format)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#decorate">decorate</A></B>(format)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#selectedListener">selectedListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="data"><!-- --></A>
   <H3>data</H3>
   <PRE>Object&nbsp;<B>data</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="factory"><!-- --></A>
   <H3>factory</H3>
   <PRE>Object&nbsp;<B>factory</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="format"><!-- --></A>
   <H3>format</H3>
   <PRE>Object&nbsp;<B>format</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!ctxMenuList"><!-- --></A>
   <H3>ctxMenuList</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>ctxMenuList</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="DataOutline()"><!-- --></A><H3>
DataOutline</H3>
<PRE><B>DataOutline</B>(data, format)</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="actionListener"><!-- --></A>
   <H3>actionListener</H3>
   <PRE>void <B>actionListener</B>(node, action)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="asn1DecoratorHook"><!-- --></A>
   <H3>asn1DecoratorHook</H3>
   <PRE>void <B>asn1DecoratorHook</B>(format)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="decorate"><!-- --></A>
   <H3>decorate</H3>
   <PRE>void <B>decorate</B>(format)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="selectedListener"><!-- --></A>
   <H3>selectedListener</H3>
   <PRE>void <B>selectedListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-OutlineCore.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="CRLGenerator.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="ECCUtils.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CommonSecretKeyAttributes
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CommonSecretKeyAttributes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonPrivateKeyAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_DataContainerObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CommonSecretKeyAttributes</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a>
               |
               +--<b>PKCS15_CommonSecretKeyAttributes</b>
</PRE>

   
      <DL>
      <DT>
         <B>Direct Known Subclasses:</B> 
         <DD>
                  <a href='PKCS15_SecretKey.html'>PKCS15_SecretKey</a>
         </DD>
      </DL>
   


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CommonSecretKeyAttributes</B>
   
      <DT>extends <a href='PKCS15_CommonKeyAttributes.html'>PKCS15_CommonKeyAttributes</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds common secret key attributes to the common key attribute class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonSecretKeyAttributes ::= SEQUENCE {
   keyLen INTEGER OPTIONAL, -- keylength (in bits)
   -- For future extensions
  }
 </pre>
 <BR/><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/><B>See:</B><UL>- <a href="PKCS15_CommonKeyAttributes.html#">PKCS15_CommonKeyAttributes is the base class</a></UL>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CommonKeyAttributes.html#iD'>iD</a>, <a href='PKCS15_CommonKeyAttributes.html#usage'>usage</a>, <a href='PKCS15_CommonKeyAttributes.html#native_'>native_</a>, <a href='PKCS15_CommonKeyAttributes.html#accessFlags'>accessFlags</a>, <a href='PKCS15_CommonKeyAttributes.html#keyReference'>keyReference</a>, <a href='PKCS15_CommonKeyAttributes.html#startDate'>startDate</a>, <a href='PKCS15_CommonKeyAttributes.html#endDate'>endDate</a>, <a href='PKCS15_CommonKeyAttributes.html#algReference'>algReference</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;


   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CommonSecretKeyAttributes()">PKCS15_CommonSecretKeyAttributes</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Common Secret Key Attribute Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CommonKeyAttributes.html">PKCS15_CommonKeyAttributes</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CommonKeyAttributes.html#getUsageAsString'>getUsageAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#getAccessFlagsAsString'>getAccessFlagsAsString</a>, <a href='PKCS15_CommonKeyAttributes.html#toString'>toString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CommonSecretKeyAttributes()"><!-- --></A><H3>
PKCS15_CommonSecretKeyAttributes</H3>
<PRE><B>PKCS15_CommonSecretKeyAttributes</B>(tlv)</PRE>


<UL>
   Create a Common Secret Key Attribute Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CommonKeyAttributes.html#">PKCS15_CommonKeyAttributes is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->


<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonPrivateKeyAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_DataContainerObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CommonKeyAttributes
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CommonKeyAttributes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonDataContainerObjectAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonPrivateKeyAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CommonKeyAttributes</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<b>PKCS15_CommonKeyAttributes</b>
</PRE>

   
      <DL>
      <DT>
         <B>Direct Known Subclasses:</B> 
         <DD>
                  <a href='PKCS15_CommonPrivateKeyAttributes.html'>PKCS15_CommonPrivateKeyAttributes</a>, <a href='PKCS15_CommonSecretKeyAttributes.html'>PKCS15_CommonSecretKeyAttributes</a>
         </DD>
      </DL>
   


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CommonKeyAttributes</B>
   
      <DT>extends <a href='PKCS15_CIO.html'>PKCS15_CIO</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds common key attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonKeyAttributes ::= SEQUENCE {
		iD Identifier,
		usage KeyUsageFlags,
		native BOOLEAN DEFAULT TRUE,
		accessFlags KeyAccessFlags OPTIONAL,
		keyReference KeyReference OPTIONAL,
		startDate GeneralizedTime OPTIONAL,
		endDate [0] GeneralizedTime OPTIONAL,
		algReference [1] SEQUENCE OF Reference OPTIONAL,
		... -- For future extensions
		}
 </pre>
 <BR/><B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#accessFlags">accessFlags</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#algReference">algReference</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#endDate">endDate</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#iD">iD</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#keyReference">keyReference</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#native_">native_</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#startDate">startDate</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#usage">usage</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CommonKeyAttributes()">PKCS15_CommonKeyAttributes</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Common Key Attribute Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getAccessFlagsAsString">getAccessFlagsAsString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the key access flags as string of concatenated flags.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getUsageAsString">getUsageAsString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Gets the key usage flags as string of concatenated flags.
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="accessFlags"><!-- --></A>
   <H3>accessFlags</H3>
   <PRE>Object&nbsp;<B>accessFlags</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="algReference"><!-- --></A>
   <H3>algReference</H3>
   <PRE>Object&nbsp;<B>algReference</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="endDate"><!-- --></A>
   <H3>endDate</H3>
   <PRE>Object&nbsp;<B>endDate</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="iD"><!-- --></A>
   <H3>iD</H3>
   <PRE>Object&nbsp;<B>iD</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="keyReference"><!-- --></A>
   <H3>keyReference</H3>
   <PRE>Object&nbsp;<B>keyReference</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="native_"><!-- --></A>
   <H3>native_</H3>
   <PRE>Object&nbsp;<B>native_</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="startDate"><!-- --></A>
   <H3>startDate</H3>
   <PRE>Object&nbsp;<B>startDate</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="usage"><!-- --></A>
   <H3>usage</H3>
   <PRE>Object&nbsp;<B>usage</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CommonKeyAttributes()"><!-- --></A><H3>
PKCS15_CommonKeyAttributes</H3>
<PRE><B>PKCS15_CommonKeyAttributes</B>(tlv)</PRE>


<UL>
   Create a Common Key Attribute Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getAccessFlagsAsString"><!-- --></A>
   <H3>getAccessFlagsAsString</H3>
   <PRE>String <B>getAccessFlagsAsString</B>()</PRE>
   
      <UL>Gets the key access flags as string of concatenated flags.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string containing the flags separated by a blank   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="getUsageAsString"><!-- --></A>
   <H3>getUsageAsString</H3>
   <PRE>String <B>getUsageAsString</B>()</PRE>
   
      <UL>Gets the key usage flags as string of concatenated flags.</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string containing the flags separated by a blank   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        content information   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonDataContainerObjectAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonPrivateKeyAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="explore.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>explore.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		No overview generated for 'explore.js'<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="OutlineCard.html">OutlineCard</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/*
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2006 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *  Generic smart card explorer
 */</span>

load(<span class="literal">"OutlineCore.js"</span>);

<span class="reserved">function</span> OutlineCard() {

        <span class="comment">// Create card object</span>
        var card = new Card(_scsh3.reader);
        <span class="reserved">this</span>.atr = card.reset(Card.RESET_COLD);

        <span class="reserved">this</span>.card = card;

        <span class="comment">// Create OutlineNode object and register in object</span>
        var view = new OutlineNode(<span class="literal">"Card"</span>);
        view.setUserObject(<span class="reserved">this</span>);
        <span class="reserved">this</span>.view = view;
}



<span class="comment">//</span>
<span class="comment">// Expand clicked on node</span>
<span class="comment">//</span>
OutlineCard.<span class="reserved">prototype</span>.expandListener = <span class="reserved">function</span>() {
        <span class="reserved">if</span> (<span class="reserved">this</span>.expanded)
                <span class="reserved">return</span>;
                
        var view = <span class="reserved">this</span>.view;

	<span class="comment">//</span>
	<span class="comment">// Display ATR</span>
	<span class="comment">//</span>
	var atrnode = new OutlineATR(<span class="reserved">this</span>.atr);
	view.insert(atrnode.view);
        <span class="reserved">this</span>.expanded = true;

        <span class="comment">//</span>
        <span class="comment">// Explore files in MF</span>
        <span class="comment">//</span>
	try	{
		var mf = new CardFile(<span class="reserved">this</span>.card, <span class="literal">":3F00"</span>);
				
	        var struct = GPXML.parse(<span class="literal">"genericmf.xml"</span>);
	        <span class="reserved">this</span>.mf = new OutlineDF(<span class="reserved">this</span>.card, <span class="literal">":3F00"</span>, <span class="literal">"MF"</span>, struct);
	        view.insert(<span class="reserved">this</span>.mf.view);
	}
	catch(e) {
		print(<span class="literal">"Card does not seem to have a compatible MF\n"</span> + e);
	}

        <span class="comment">//</span>
        <span class="comment">// Obtain list of applications from EF_DIR</span>
        <span class="comment">//</span>
        var isTransparent = true;
        try	{
		var efdir = new CardFile(<span class="reserved">this</span>.card, <span class="literal">":2F00"</span>);
		var fci = efdir.getFCPBytes();
		<span class="reserved">if</span> (fci) {
			isTransparent = efdir.isTransparent();
		} <span class="reserved">else</span> {
			isTransparent = true;
		}
        }
        catch(e) {
                print(<span class="literal">"Card does not seem to have a compatible EF_DIR\n"</span> + e);
                <span class="reserved">return</span>;
        }
                
        <span class="reserved">for</span> (var rec = 1; rec &lt; 255; rec++) {
                var record;
                try     {
	                <span class="reserved">if</span> (isTransparent) {
	                	record = efdir.readBinary();
	                } <span class="reserved">else</span> {
	                        record = efdir.readRecord(rec);
	                }
                }
                catch(e) {
                        print(e);
                        break;
                }

                var tlv = new ASN1(record);
                
                var label = null;
                var aid = null;
                        
                <span class="reserved">for</span> (var i = 0; i &lt; tlv.elements; i++) {
                        var t = tlv.get(i);
                        switch(t.tag) {
                        case 0x50:
                                label = t.value.toString(UTF8);
                                break;
                        case 0x4F:
                                aid = t.value;
                                break;
                        }
                }

                <span class="reserved">if</span> (label &amp;&amp; aid) {
                        var applentry;

                       	<span class="reserved">if</span> (!label) {
                       		<span class="reserved">if</span> (!aid) {
                       			label = <span class="literal">"Invalid entry in EF.DIR"</span>;
                       		} <span class="reserved">else</span> {
                       			label = aid.toString(HEX);
                       		}
                       	}
                        	
			applentry = new OutlineNode(label);
			applentry.insert(tlv);
			view.insert(applentry);
                }
                
                <span class="reserved">if</span> (efdir.isTransparent())
                	break;
        }
}





<span class="comment">//</span>
<span class="comment">// Outline root node erzeugen</span>
<span class="comment">// </span>
var cardoutline = new OutlineCard();

cardoutline.view.show();
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 CardOutlineFactory.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" CardOutlineFactory.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-CardOutlineFactory.js.html" 
                                            target="classFrame">CardOutlineFactory.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_CommonAuthenticationObjectAttributes
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_CommonAuthenticationObjectAttributes";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CIODDO.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonCertificateAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_CommonAuthenticationObjectAttributes</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<b>PKCS15_CommonAuthenticationObjectAttributes</b>
</PRE>

   
      <DL>
      <DT>
         <B>Direct Known Subclasses:</B> 
         <DD>
                  <a href='PKCS15_AuthenticationObject.html'>PKCS15_AuthenticationObject</a>
         </DD>
      </DL>
   


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_CommonAuthenticationObjectAttributes</B>
   
      <DT>extends <a href='PKCS15_CIO.html'>PKCS15_CIO</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds common authentication object attributes to the base CIO class.</p>
 <p>The class decodes the following ASN.1 syntax:</p>
 <pre>
 CommonAuthenticationObjectAttributes ::= SEQUENCE {
    authId Identifier OPTIONAL,
    authReference Reference OPTIONAL,
    seIdentifier [0] Reference OPTIONAL,
    ... -- For future extensions
 }
 </pre>
 <BR/><B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#authIdThis">authIdThis</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#authReference">authReference</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#seIdentifier">seIdentifier</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_CommonAuthenticationObjectAttributes()">PKCS15_CommonAuthenticationObjectAttributes</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Common Authentication Object Attribute Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="authIdThis"><!-- --></A>
   <H3>authIdThis</H3>
   <PRE>Object&nbsp;<B>authIdThis</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="authReference"><!-- --></A>
   <H3>authReference</H3>
   <PRE>Object&nbsp;<B>authReference</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="seIdentifier"><!-- --></A>
   <H3>seIdentifier</H3>
   <PRE>Object&nbsp;<B>seIdentifier</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_CommonAuthenticationObjectAttributes()"><!-- --></A><H3>
PKCS15_CommonAuthenticationObjectAttributes</H3>
<PRE><B>PKCS15_CommonAuthenticationObjectAttributes</B>(tlv)</PRE>


<UL>
   Create a Common Authentication Object Attribute Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CIO.html#">PKCS15_CIO is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CIODDO.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_CommonCertificateAttributes.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
X509Name
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="X509Name";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-x509name.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="X509CertificateGenerator.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<B>NEXT CLASS</B></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class X509Name</H2>
<PRE>Object
   |
   +--<b>X509Name</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>X509Name</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-x509name.js.html'>x509name.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!commonName">commonName</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!countryName">countryName</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!dnQualifier">dnQualifier</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!emailAddress">emailAddress</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!generationQualifier">generationQualifier</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!givenname">givenname</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!initials">initials</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!localityName">localityName</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!name">name</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!organizationalUnitName">organizationalUnitName</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!organizationName">organizationName</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!serialNumber">serialNumber</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!stateOrProvinceName">stateOrProvinceName</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!surname">surname</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&lt;static&gt; &nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#!s!title">title</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#X509Name()">X509Name</A></B>()
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#getRDNAsString">getRDNAsString</A></B>(oid)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#hasRDN">hasRDN</A></B>(oid)
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>

   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;Object</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="!s!commonName"><!-- --></A>
   <H3>commonName</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>commonName</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!countryName"><!-- --></A>
   <H3>countryName</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>countryName</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!dnQualifier"><!-- --></A>
   <H3>dnQualifier</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>dnQualifier</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!emailAddress"><!-- --></A>
   <H3>emailAddress</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>emailAddress</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!generationQualifier"><!-- --></A>
   <H3>generationQualifier</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>generationQualifier</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!givenname"><!-- --></A>
   <H3>givenname</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>givenname</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!initials"><!-- --></A>
   <H3>initials</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>initials</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!localityName"><!-- --></A>
   <H3>localityName</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>localityName</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!name"><!-- --></A>
   <H3>name</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>name</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!organizationalUnitName"><!-- --></A>
   <H3>organizationalUnitName</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>organizationalUnitName</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!organizationName"><!-- --></A>
   <H3>organizationName</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>organizationName</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!serialNumber"><!-- --></A>
   <H3>serialNumber</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>serialNumber</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!stateOrProvinceName"><!-- --></A>
   <H3>stateOrProvinceName</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>stateOrProvinceName</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!surname"><!-- --></A>
   <H3>surname</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>surname</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   
   <A NAME="!s!title"><!-- --></A>
   <H3>title</H3>
   <PRE>&lt;static&gt;&nbsp;Object&nbsp;<B>title</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="X509Name()"><!-- --></A><H3>
X509Name</H3>
<PRE><B>X509Name</B>()</PRE>




   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="getRDNAsString"><!-- --></A>
   <H3>getRDNAsString</H3>
   <PRE>Object <B>getRDNAsString</B>(oid)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="hasRDN"><!-- --></A>
   <H3>hasRDN</H3>
   <PRE>Object <B>hasRDN</B>(oid)</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>Object <B>toString</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-x509name.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="X509CertificateGenerator.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<B>NEXT CLASS</B></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
PKCS15_DataContainerObject
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="PKCS15_DataContainerObject";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonSecretKeyAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_PasswordAuthenticationObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class PKCS15_DataContainerObject</H2>
<PRE>Object
   |
   +--<a href='PKCS15_CIO.html'>PKCS15_CIO</a>
         |
         +--<a href='PKCS15_CommonDataContainerObjectAttributes.html'>PKCS15_CommonDataContainerObjectAttributes</a>
               |
               +--<b>PKCS15_DataContainerObject</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>PKCS15_DataContainerObject</B>
   
      <DT>extends <a href='PKCS15_CommonDataContainerObjectAttributes.html'>PKCS15_CommonDataContainerObjectAttributes</a> 
   

</DL>
   
   <P>
   <BR/><p>This class adds data container objects to the common data container object attributes class.</p>
 <p>The class decodes the following ASN.1 syntax for opaque data objects with indirect path reference:</p>
 <pre>
 OpaqueDOAttributes ::= ObjectValue {CIO-OPAQUE.&Type}

 ObjectValue { Type } ::= CHOICE {
 		indirect ReferencedValue,
 		direct [0] Type,
 		... -- For future extensions
 }

 ReferencedValue ::= CHOICE {
 		path Path,
 		url URL
 } -- The syntax of the object is determined by the context
 </pre>
 <BR/><B>See:</B><UL>- <a href="PKCS15_CommonDataContainerObjectAttributes.html#">PKCS15_CommonDataContainerObjectAttributes is the base class</a></UL><I>Defined in <a href='overview-summary-p15classes.js.html'>p15classes.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->


   
   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CommonDataContainerObjectAttributes.html">PKCS15_CommonDataContainerObjectAttributes</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CommonDataContainerObjectAttributes.html#applicationName'>applicationName</a>, <a href='PKCS15_CommonDataContainerObjectAttributes.html#applicationOID'>applicationOID</a>, <a href='PKCS15_CommonDataContainerObjectAttributes.html#iD'>iD</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;


   
   &nbsp;<A NAME=""><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
   <TD><B>Fields inherited from class <A HREF="PKCS15_CIO.html">PKCS15_CIO</A></B></TD>
   </TR>
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD><CODE>
   <a href='PKCS15_CIO.html#tlv'>tlv</a>, <a href='PKCS15_CIO.html#label'>label</a>, <a href='PKCS15_CIO.html#flags'>flags</a>, <a href='PKCS15_CIO.html#authId'>authId</a>, <a href='PKCS15_CIO.html#userConsent'>userConsent</a>, <a href='PKCS15_CIO.html#accessControlRules'>accessControlRules</a>
   </CODE></TD>
   </TR>
</TABLE>
&nbsp;



<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#PKCS15_DataContainerObject()">PKCS15_DataContainerObject</A></B>(tlv)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Create a Data Container Object
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;String</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#toString">toString</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 Convert the object to a human readable string
      </TD>
   </TR>


</TABLE>



&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TD><B>Methods inherited from class <a href="PKCS15_CIO.html">PKCS15_CIO</a></B></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>
<!-- Inherited methods -->
<a href='PKCS15_CIO.html#getFlagsAsString'>getFlagsAsString</a>
</CODE></TD>
</TR>
</TABLE>
&nbsp;

<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="PKCS15_DataContainerObject()"><!-- --></A><H3>
PKCS15_DataContainerObject</H3>
<PRE><B>PKCS15_DataContainerObject</B>(tlv)</PRE>


<UL>
   Create a Data Container Object
</UL>



   <UL>
   <B>Parameters:</B>
   
     <UL><CODE>the</CODE> -  tlv structure containing the CIO  
     </UL>
   
   
   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<UL>   
<B>See:</B><UL>- <a href="PKCS15_CommonDataContainerObjectAttributes.html#">PKCS15_CommonDataContainerObjectAttributes is the base class</a></UL>
</UL>

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="toString"><!-- --></A>
   <H3>toString</H3>
   <PRE>String <B>toString</B>()</PRE>
   
      <UL>Convert the object to a human readable string</UL>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   
   <UL>
   <B>Returns:</B>
        <UL>
        the string representation of the object   
        </UL>
   </UL>
   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-p15classes.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="PKCS15_CommonSecretKeyAttributes.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="PKCS15_PasswordAuthenticationObject.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
<html>
<head>
<title>
 Overview
</title>
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script>
function asd() {
	
		parent.document.title="pkcs8.js Overview";
	
}
</script>
</head>
<body bgcolor="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top">
<em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<center>
	
	   <h2>pkcs8.js</h2>
	
</center>

	


<h4>Summary</h4>
<p>
	
		Basic helper functions to convert PKCS#8 data to GP keys and vice versa<BR/><BR/>
	
</p>

<hr>


    <table border="1" cellpadding="3" cellspacing="0" width="100%">
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
    <td colspan=2><font size="+2">
    
        <b>Class Summary</b>
    
    </font></td>
    </tr>
    
    <tr bgcolor="white" class="TableRowColor">
    <td width="15%"><b><a href="PKCS8.html">PKCS8</a></b></td>
    <td>&nbsp;</td>
    </tr>
    
    </table>
    <hr/> 


<!-- ========== METHOD SUMMARY =========== -->

<!-- ========== END METHOD SUMMARY =========== -->


        <pre class="sourceview"><span class="comment">/**
 *  ---------
 * |.##&gt; &lt;##.|  Open Smart Card Development Platform (www.openscdp.org)
 * |#       #|  
 * |#       #|  Copyright (c) 1999-2009 CardContact Software &amp; System Consulting
 * |'##&gt; &lt;##'|  Andreas Schwier, 32429 Minden, Germany (www.cardcontact.de)
 *  --------- 
 *
 *  This file is part of OpenSCDP.
 *
 *  OpenSCDP is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License version 2 as
 *  published by the Free Software Foundation.
 *
 *  OpenSCDP is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with OpenSCDP; if not, write to the Free Software
 *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 * <span class="attrib">@fileoverview</span> Basic helper functions to convert PKCS#8 data to GP keys and vice versa
 */</span>



<span class="comment">/**
 * Empty constructor
 */</span>
<span class="reserved">function</span> PKCS8() {
}



PKCS8.idEcPublicKey = new ByteString(<span class="literal">"id-ecPublicKey"</span>, OID);
PKCS8.rsaEncryption = new ByteString(<span class="literal">"1.2.840.113549.1.1.1"</span>, OID);

<span class="comment">/**
 * Convert x/y coordinates to uncompressed format
 *
 * <span class="attrib">@param</span> {ByteString} x the x coordinate
 * <span class="attrib">@param</span> {ByteString} y the y coordinate
 * <span class="attrib">@type</span> ByteString
 * <span class="attrib">@return</span> ByteString containing compressed format
 *
 */</span> 
PKCS8.encodeUncompressedECPoint = <span class="reserved">function</span>(x,y) {

	bb = new ByteBuffer();

	<span class="comment">// uncompressed encoding</span>
	bb.append(new ByteString(<span class="literal">"04"</span>, HEX));
	bb.append(x);
	bb.append(y);

	<span class="reserved">return</span> bb.toByteString();
}



<span class="comment">/**
 * Convert uncompressed format to x and y coordinates
 *
 * <span class="attrib">@param</span> {ByteString} compressed point
 * <span class="attrib">@type</span> Object
 * <span class="attrib">@return</span> Object with ByteString properties x and y
 *
 */</span> 
PKCS8.decodeUncompressedECPoint = <span class="reserved">function</span>(uncompressedPoint) {

	<span class="comment">// Determine the size of the coordinates ignoring the indicator byte '04'</span>
	var length = uncompressedPoint.length - 1;

	var sizeOfCoordinate = length &gt;&gt; 1;

	var xValue = uncompressedPoint.bytes(1, sizeOfCoordinate);
	var yValue = uncompressedPoint.bytes(1 + sizeOfCoordinate, sizeOfCoordinate);

	<span class="reserved">return</span> { x:xValue, y:yValue };
} 



<span class="comment">/**
 * Integer to octet string conversion
 *
 * <span class="attrib">@param</span> {ByteString} value the encoded integer value
 * <span class="attrib">@param</span> {Number} the number of digits
 * <span class="attrib">@type</span> ByteString
 * <span class="attrib">@return</span> the truncated or padded result
 */</span>
PKCS8.I2O = <span class="reserved">function</span>(value, length) {
	<span class="reserved">if</span> (value.length &gt; length) {
		value = value.right(length);
	}
	<span class="reserved">while</span> (value.length &lt; length) {
		value = PKCS8.PAD.left((length - value.length - 1 &amp; 15) + 1).concat(value);
	}
	<span class="reserved">return</span> value;
}
PKCS8.PAD = new ByteString(<span class="literal">"00000000000000000000000000000000"</span>, HEX);



<span class="comment">/**
 * Strips leading zeros of a ByteString
 *
 * <span class="attrib">@param</span> {ByteString} value the ByteString value
 * <span class="attrib">@return</span> the stripped ByteString object, may be an empty ByteString
 * <span class="attrib">@type</span> ByteString
 */</span>
PKCS8.stripLeadingZeros = <span class="reserved">function</span>(value, size) {
	<span class="reserved">if</span> (typeof(size) == <span class="literal">"undefined"</span>) {
		var limit = value.length;
	} <span class="reserved">else</span> {
		limit = value.length - size;
	}
	
	var i = 0;
	<span class="reserved">for</span> (; (i &lt; limit) &amp;&amp; (value.byteAt(i) == 0); i++);
	
	<span class="reserved">return</span> value.bytes(i);
}



<span class="comment">/**
 * Removes leading zeros and prepends a single '00' to ByteStrings which have the most significant bit set.
 *
 * This prevent interpretation of the integer representation if converted into
 * a signed ASN1 INTEGER.
 *
 * <span class="attrib">@param</span> {ByteString} value the value to convert
 * <span class="attrib">@return</span> the converted value
 * <span class="attrib">@type</span> ByteString
 */</span>
PKCS8.convertUnsignedInteger = <span class="reserved">function</span>(value) {
	assert(value.length &gt; 0);
	
	var i = 0;
	<span class="reserved">for</span> (; (i &lt; value.length - 1) &amp;&amp; (value.byteAt(i) == 0); i++);
	
	<span class="reserved">if</span> (value.byteAt(i) &gt;= 0x80) {
		value = (new ByteString(<span class="literal">"00"</span>, HEX)).concat(value.bytes(i));
	} <span class="reserved">else</span> {
		value = value.bytes(i);
	}
	
	<span class="reserved">return</span> value;
}



<span class="comment">/**
 * Encode a given GP ECC private key as specified by the PKCS#8 format
 *
 * <span class="attrib">@param</span> {Key} the private key object that should be encoded
 * <span class="attrib">@return</span> the encoded PKCS#8 private key
 * <span class="attrib">@type</span> ByteString
 */</span>
PKCS8.encodeECCKeyUsingPKCS8Format = <span class="reserved">function</span>(privateKey) {
	var privateKeyInfo = new ASN1(ASN1.SEQUENCE);
	
	<span class="comment">// Set the version number - must be zero</span>
	privateKeyInfo.add(new ASN1(ASN1.INTEGER, new ByteString(<span class="literal">"00"</span>, HEX)));
	
	var privateKeyAlgorithm = new ASN1(ASN1.SEQUENCE);
	privateKeyAlgorithm.add(new ASN1(ASN1.OBJECT_IDENTIFIER, PKCS8.idEcPublicKey));
	
	var domainInfo = new ASN1(ASN1.SEQUENCE);
	
	<span class="comment">// Cofactor - must be 1</span>
	domainInfo.add(new ASN1(ASN1.INTEGER, PKCS8.stripLeadingZeros(privateKey.getComponent(Key.ECC_H))));
	
	var field = new ASN1(ASN1.SEQUENCE);
	
	<span class="comment">// we are using a prime field</span>
	field.add(new ASN1(ASN1.OBJECT_IDENTIFIER, new ByteString(<span class="literal">"prime-field"</span>, OID))); <span class="comment">// prime field</span>
	
	var primeOrder = privateKey.getComponent(Key.ECC_P);
	<span class="reserved">if</span> (primeOrder.byteAt(0) &gt;= 0x80) { <span class="comment">// signed int? -&gt; add 0x00</span>
		field.add(new ASN1(ASN1.INTEGER, new ByteString(<span class="literal">"00"</span>, HEX).concat(privateKey.getComponent(Key.ECC_P))));
	} <span class="reserved">else</span> {
		field.add(new ASN1(ASN1.INTEGER, privateKey.getComponent(Key.ECC_P)));
	}
	
	domainInfo.add(field);
	
	<span class="comment">// Coefficients a and b</span>
	var coeff = new ASN1(ASN1.SEQUENCE);
	
	<span class="comment">// first coefficient</span>
	coeff.add(new ASN1(ASN1.OCTET_STRING, privateKey.getComponent(Key.ECC_A)));
	
	<span class="comment">// second coefficient</span>
	coeff.add(new ASN1(ASN1.OCTET_STRING, privateKey.getComponent(Key.ECC_B)));
	
	domainInfo.add(coeff);
	
	<span class="comment">// Base point (uncompressed)</span>
	var gx = privateKey.getComponent(Key.ECC_GX);
	var gy = privateKey.getComponent(Key.ECC_GY);
	
	domainInfo.add(new ASN1(ASN1.OCTET_STRING, PKCS8.encodeUncompressedECPoint(gx, gy)));
	
	<span class="comment">// group order generated by the base point</span>
	var groupOrder = privateKey.getComponent(Key.ECC_N);
	<span class="reserved">if</span> (groupOrder.byteAt(0) &gt;= 0x80) { <span class="comment">// signed int? -&gt; add 0x00</span>
		domainInfo.add(new ASN1(ASN1.INTEGER, new ByteString(<span class="literal">"00"</span>, HEX).concat(privateKey.getComponent(Key.ECC_N))));
	} <span class="reserved">else</span> {
		domainInfo.add(new ASN1(ASN1.INTEGER, privateKey.getComponent(Key.ECC_N)));
	}
	
	privateKeyAlgorithm.add(domainInfo);
	
	<span class="comment">// encode the key information</span>
	privateKeyInfo.add(privateKeyAlgorithm);
	
	<span class="comment">// encode the private key</span>
	var encodedPrivateKey = new ASN1(ASN1.OCTET_STRING);
	
	var pk = privateKey.getComponent(Key.ECC_D);
	var key = new ASN1(ASN1.SEQUENCE);
	key.add(new ASN1(ASN1.INTEGER, new ByteString(<span class="literal">"01"</span>, HEX)));
	key.add(new ASN1(ASN1.OCTET_STRING, pk));
	
	encodedPrivateKey.add(key);
	
	privateKeyInfo.add(encodedPrivateKey);
	
<span class="comment">//	print(privateKeyInfo);</span>
	<span class="reserved">return</span> privateKeyInfo.getBytes();	
}



<span class="comment">/**
 * Encode RSA private key as defined in PKCS#1
 *
 * RSAPrivateKey ::= SEQUENCE {
 *     version           Version,
 *     modulus           INTEGER,  -- n
 *     publicExponent    INTEGER,  -- e
 *     privateExponent   INTEGER,  -- d
 *     prime1            INTEGER,  -- p
 *     prime2            INTEGER,  -- q
 *     exponent1         INTEGER,  -- d mod (p-1)
 *     exponent2         INTEGER,  -- d mod (q-1)
 *     coefficient       INTEGER,  -- (inverse of q) mod p
 *     otherPrimeInfos   OtherPrimeInfos OPTIONAL
 * }
 * <span class="attrib">@param</span> {Key} privateKey the private RSA key in CRT format
 * <span class="attrib">@type</span> ByteString
 * <span class="attrib">@return</span> the encoded RSA key
 */</span>
PKCS8.encodeRSAKey = <span class="reserved">function</span>(privateKey, publicKey) {
	var rsaPrivateKey = 
		new ASN1(ASN1.SEQUENCE);
		
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
	<span class="reserved">if</span> (typeof(publicKey) != <span class="literal">"undefined"</span>) {
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(publicKey.getComponent(Key.MODULUS))));
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(publicKey.getComponent(Key.EXPONENT))));
	} <span class="reserved">else</span> {
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
		rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));
	}
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, ByteString.valueOf(0)));		<span class="comment">// Private Exponent not at interface for CRT format</span>
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_P))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_Q))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_DP1))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_DQ1))));
	rsaPrivateKey.add(new ASN1(ASN1.INTEGER, PKCS8.convertUnsignedInteger(privateKey.getComponent(Key.CRT_PQ))));

	<span class="reserved">return</span> rsaPrivateKey.getBytes();
}



<span class="comment">/**
 * Encode a given GP RSA private key as specified by the PKCS#8 format
 *
 * <span class="attrib">@param</span> {Key} the private key object that should be encoded
 * <span class="attrib">@return</span> the encoded PKCS#8 private key
 * <span class="attrib">@type</span> ByteString
 */</span>
PKCS8.encodeRSAKeyUsingPKCS8Format = <span class="reserved">function</span>(privateKey, publicKey) {
	var privateKeyInfo = new ASN1(ASN1.SEQUENCE);
	
	<span class="comment">// Set the version number - must be zero</span>
	privateKeyInfo.add(new ASN1(ASN1.INTEGER, new ByteString(<span class="literal">"00"</span>, HEX)));
	
	var privateKeyAlgorithm = new ASN1(ASN1.SEQUENCE);
	privateKeyAlgorithm.add(new ASN1(ASN1.OBJECT_IDENTIFIER, PKCS8.rsaEncryption));
	privateKeyAlgorithm.add(new ASN1(ASN1.NULL));
	
	<span class="comment">// encode the key information</span>
	privateKeyInfo.add(privateKeyAlgorithm);
	
	<span class="comment">// encode the private key</span>
	var encodedPrivateKey = new ASN1(ASN1.OCTET_STRING, PKCS8.encodeRSAKey(privateKey, publicKey));
	
	privateKeyInfo.add(encodedPrivateKey);
	
<span class="comment">//	print(privateKeyInfo);</span>
	<span class="reserved">return</span> privateKeyInfo.getBytes();	
}



<span class="comment">/**
 * Encode a given GP private key as specified by the PKCS#8 format
 *
 * For now we only support the encoding of ECC private keys in a prime field
 *
 * <span class="attrib">@param</span> {Key} the private key object that should be encoded
 * <span class="attrib">@return</span> the encoded PKCS#8 private key
 * <span class="attrib">@type</span> ByteString
 */</span>
PKCS8.encodeKeyUsingPKCS8Format = <span class="reserved">function</span>(privateKey, publicKey) {
	
	assert(privateKey.getType() == Key.PRIVATE);
	<span class="reserved">if</span> (typeof(privateKey.getComponent(Key.ECC_P)) != <span class="literal">"undefined"</span>) {
		<span class="reserved">return</span> PKCS8.encodeECCKeyUsingPKCS8Format(privateKey);
	} <span class="reserved">else</span> {
		<span class="reserved">return</span> PKCS8.encodeRSAKeyUsingPKCS8Format(privateKey, publicKey);
	}
}



<span class="comment">/**
 * Decode a given PKCS#8 ECC private key from the given ByteString and create a GP key object
 *
 * For now we only support the decoding of ECC private keys in a prime field
 * 
 * <span class="attrib">@param</span> {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * <span class="attrib">@param</span> {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * <span class="attrib">@return</span> the GP key object
 * <span class="attrib">@type</span> Key
 */</span>
PKCS8.decodeECCKeyFromPKCS8Format = <span class="reserved">function</span>(domainParameter, encodedKey) {
	
	var key = new Key();
	
	key.setType(Key.PRIVATE);
	
	key.setComponent(Key.ECC_D, encodedKey.get(1).value);
	
	<span class="comment">// Decode the domain parameters</span>
	var cofactor = domainParameter.get(0);
	key.setComponent(Key.ECC_H, cofactor.value);
	
	var order = domainParameter.get(1).get(1);
	key.setComponent(Key.ECC_P, PKCS8.stripLeadingZeros(order.value));
	
	var coeff_A = domainParameter.get(2).get(0);
	key.setComponent(Key.ECC_A, coeff_A.value);
	
	var coeff_B = domainParameter.get(2).get(1);
	key.setComponent(Key.ECC_B, coeff_B.value);
	
	var generatorPoint = domainParameter.get(3).value;
	
	var coordinates = PKCS8.decodeUncompressedECPoint(generatorPoint);
	
	key.setComponent(Key.ECC_GX, coordinates.x);
	key.setComponent(Key.ECC_GY, coordinates.y);
	
	var groupOrder = domainParameter.get(4);
	
	key.setComponent(Key.ECC_N, PKCS8.stripLeadingZeros(groupOrder.value));
	
	<span class="reserved">return</span> key;	
}



<span class="comment">/**
 * Decode a given PKCS#8 RSA private key from the given ByteString and create a GP key object
 *
 * <span class="attrib">@param</span> {ByteString} the private key object in PKCS#8 format
 * <span class="attrib">@param</span> {ASN1} algparam the algorithm parameter from AlgorithmInfo
 * <span class="attrib">@param</span> {ASN1} privateKey the privateKey element from the PKCS#8 structure
 * <span class="attrib">@return</span> the GP key object
 * <span class="attrib">@type</span> Key
 */</span>
PKCS8.decodeRSAKeyFromPKCS8Format = <span class="reserved">function</span>(algparam, privateKey) {
	
	var key = new Key();
	
	key.setType(Key.PRIVATE);
	
	assert(algparam.tag == ASN1.NULL);
	assert(!algparam.isconstructed);
	assert(algparam.length == 0);
	
	assert(privateKey.tag == ASN1.SEQUENCE);
	assert(privateKey.isconstructed);
	assert(privateKey.elements &gt;= 9);
	
	<span class="reserved">for</span> (var i = 0; i &lt; 9; i++) {
		var e = privateKey.get(i);
		assert(e.tag == ASN1.INTEGER);
		assert(!e.isconstructed);
	}
	
	assert(privateKey.get(0).value.toUnsigned() == 0);
	
	var p = PKCS8.stripLeadingZeros(privateKey.get(4).value);
	var l = p.length;
	key.setComponent(Key.CRT_P,   p);
	key.setComponent(Key.CRT_Q,   PKCS8.I2O(privateKey.get(5).value, l));
	key.setComponent(Key.CRT_DP1, PKCS8.I2O(privateKey.get(6).value, l));
	key.setComponent(Key.CRT_DQ1, PKCS8.I2O(privateKey.get(7).value, l));
	key.setComponent(Key.CRT_PQ,  PKCS8.I2O(privateKey.get(8).value, l));

	<span class="reserved">return</span> key;	
}



<span class="comment">/**
 * Decode a given PKCS#8 private key from the given ByteString and create a GP key object
 *
 * For now we only support the decoding of ECC private keys in a prime field
 * 
 * <span class="attrib">@param</span> {ByteString} the private key object in PKCS#8 format
 * <span class="attrib">@return</span> the GP key object
 * <span class="attrib">@type</span> Key
 */</span>
PKCS8.decodeKeyFromPKCS8Format = <span class="reserved">function</span>(encodedKey) {
	var p8 = new ASN1(encodedKey);
	
	assert(p8.isconstructed);
	assert(p8.elements &gt;= 3);
	
	var version = p8.get(0);
	assert(version.tag == ASN1.INTEGER);
	assert(version.value.toUnsigned() == 0);
	
	var pkai = p8.get(1);
	assert(pkai.tag == ASN1.SEQUENCE);
	assert(pkai.isconstructed);
	assert(pkai.elements == 2);
	var keytype = pkai.get(0);
	
	assert(keytype.tag == ASN1.OBJECT_IDENTIFIER);
	
	var algparam = pkai.get(1);
	
	var privateKey = p8.get(2);
	assert(privateKey.tag == ASN1.OCTET_STRING);
	<span class="reserved">if</span> (privateKey.isconstructed) {
		privateKey = privateKey.get(0);
	} <span class="reserved">else</span> {
		privateKey = new ASN1(privateKey.value);
	}
	
	<span class="reserved">if</span> (keytype.value.equals(PKCS8.rsaEncryption)) {
		<span class="reserved">return</span> PKCS8.decodeRSAKeyFromPKCS8Format(algparam, privateKey);
	} <span class="reserved">else</span> <span class="reserved">if</span> (keytype.value.equals(PKCS8.idEcPublicKey)) {
		<span class="reserved">return</span> PKCS8.decodeECCKeyFromPKCS8Format(algparam, privateKey);
	} <span class="reserved">else</span> {
		throw new Error(<span class="literal">"Unknown key type "</span> + keytype.value.toString(OID));
	}
}



<span class="comment">/**
 * Simple self-test
 */</span>
PKCS8.test = <span class="reserved">function</span>() {

	<span class="comment">// Set OID for EC curve</span>
	var ecCurve = <span class="literal">"1.3.36.3.3.2.8.1.1.7"</span>;
    
    var crypto = new Crypto(<span class="literal">"BC"</span>);
    
    <span class="comment">// Create empty public key object</span>
    var pubKey = new Key();
    pubKey.setType(Key.PUBLIC);
    pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString(ecCurve, OID)); 

    <span class="comment">// Create empty private key object</span>
    var priKey = new Key();
    priKey.setType(Key.PRIVATE);
    priKey.setComponent(Key.ECC_CURVE_OID, new ByteString(ecCurve, OID)); 
    
    <span class="comment">// Generate key pair</span>
    crypto.generateKeyPair(Crypto.EC, pubKey, priKey);
	       
    <span class="comment">// Encode</span>
    var p8Key = PKCS8.encodeKeyUsingPKCS8Format(priKey);
    
    <span class="comment">// Decode</span>
    var decodedKeyObject = PKCS8.decodeKeyFromPKCS8Format(p8Key);
    
    <span class="comment">// Compare</span>
    assert(decodedKeyObject.getComponent(Key.ECC_D).equals(priKey.getComponent(Key.ECC_D)));
    
    assert(decodedKeyObject.getComponent(Key.ECC_GX).equals(priKey.getComponent(Key.ECC_GX)));
    assert(decodedKeyObject.getComponent(Key.ECC_GY).equals(priKey.getComponent(Key.ECC_GY)));
    assert(decodedKeyObject.getComponent(Key.ECC_A).equals(pubKey.getComponent(Key.ECC_A)));
    assert(decodedKeyObject.getComponent(Key.ECC_B).equals(pubKey.getComponent(Key.ECC_B)));
     
    <span class="comment">// Encode</span>
    var refp8Key = PKCS8.encodeKeyUsingPKCS8Format(decodedKeyObject);
	
    <span class="comment">// Compare</span>
    assert(p8Key.equals(refp8Key));	
	
	
    <span class="comment">// Create empty public key object</span>
	var pubKey = new Key();
    pubKey.setType(Key.PUBLIC);
    pubKey.setSize(1024); 

    <span class="comment">// Create empty private key object</span>
    var priKey = new Key();
    priKey.setType(Key.PRIVATE);
    
    <span class="comment">// Generate key pair</span>
    crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);
	       
    <span class="comment">// Encode</span>
    var p8Key = PKCS8.encodeKeyUsingPKCS8Format(priKey);
    
    <span class="comment">// Decode</span>
    var decodedKeyObject = PKCS8.decodeKeyFromPKCS8Format(p8Key);
    
    <span class="comment">// Compare</span>
    assert(decodedKeyObject.getComponent(Key.CRT_P).equals(priKey.getComponent(Key.CRT_P)));
    assert(decodedKeyObject.getComponent(Key.CRT_Q).equals(priKey.getComponent(Key.CRT_Q)));
    assert(decodedKeyObject.getComponent(Key.CRT_DP1).equals(priKey.getComponent(Key.CRT_DP1)));
    assert(decodedKeyObject.getComponent(Key.CRT_DQ1).equals(priKey.getComponent(Key.CRT_DQ1)));
    assert(decodedKeyObject.getComponent(Key.CRT_PQ).equals(priKey.getComponent(Key.CRT_PQ)));

    <span class="comment">// Encode</span>
    var refp8Key = PKCS8.encodeKeyUsingPKCS8Format(decodedKeyObject);
	
    <span class="comment">// Compare</span>
    assert(p8Key.equals(refp8Key));	
}
</pre>
	<hr>



<!-- ========== START OF NAVBAR ========== -->
<a name="navbar_top"><!-- --></a>
<table border="0" width="100%" cellpadding="1" cellspacing="0">
<tr>
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
<a name="navbar_top_firstrow"><!-- --></a>
<table border="0" cellpadding="0" cellspacing="3">
  <tr align="center" valign="top">
  
  
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
  

  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
  </tr>
</table>
</td>
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
<b></b></em>
</td>
</tr>

<tr>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
&nbsp;PREV&nbsp;
&nbsp;NEXT</font></td>
<td bgcolor="white" class="NavBarCell2"><font size="-2">
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
&nbsp;&nbsp;
<script>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</script>
<noscript>
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
</noscript>
</font></td>
</tr>
</table>
<!-- =========== END OF NAVBAR =========== -->

<hr>
<font size="-1">

</font>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 BaseTestRunner.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" BaseTestRunner.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-BaseTestRunner.js.html" 
                                            target="classFrame">BaseTestRunner.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
 p15classes.js 
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title=" p15classes.js";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<H3 class="FrameHeadingFont"><B></B></H3>
<FONT size="+1" CLASS="FrameHeadingFont">
<B><a href="overview-summary-p15classes.js.html" 
                                            target="classFrame">p15classes.js</a></B></FONT>
<BR>

<TABLE BORDER="0" WIDTH="100%">


<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="AlgorithmInfo.html" TARGET="classFrame">AlgorithmInfo</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15.html" TARGET="classFrame">PKCS15</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_ApplicationTemplate.html" TARGET="classFrame">PKCS15_ApplicationTemplate</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_AuthenticationObject.html" TARGET="classFrame">PKCS15_AuthenticationObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIAInfo.html" TARGET="classFrame">PKCS15_CIAInfo</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIO.html" TARGET="classFrame">PKCS15_CIO</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CIODDO.html" TARGET="classFrame">PKCS15_CIODDO</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_Certificate.html" TARGET="classFrame">PKCS15_Certificate</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonAuthenticationObjectAttributes.html" TARGET="classFrame">PKCS15_CommonAuthenticationObjectAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonCertificateAttributes.html" TARGET="classFrame">PKCS15_CommonCertificateAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonDataContainerObjectAttributes.html" TARGET="classFrame">PKCS15_CommonDataContainerObjectAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonKeyAttributes.html" TARGET="classFrame">PKCS15_CommonKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonPrivateKeyAttributes.html" TARGET="classFrame">PKCS15_CommonPrivateKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_CommonSecretKeyAttributes.html" TARGET="classFrame">PKCS15_CommonSecretKeyAttributes</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_DataContainerObject.html" TARGET="classFrame">PKCS15_DataContainerObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_PasswordAuthenticationObject.html" TARGET="classFrame">PKCS15_PasswordAuthenticationObject</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_Path.html" TARGET="classFrame">PKCS15_Path</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_PrivateKey.html" TARGET="classFrame">PKCS15_PrivateKey</A>
<BR>
</FONT></TD>
</TR>

<TR>
<TD NOWRAP><FONT CLASS="FrameItemFont"><A HREF="PKCS15_SecretKey.html" TARGET="classFrame">PKCS15_SecretKey</A>
<BR>
</FONT></TD>
</TR>

</TABLE>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/REC-html40/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<TITLE>
TestLogFile
</TITLE>
<LINK REL ="stylesheet" TYPE="text/css" HREF="stylesheet.css" TITLE="Style">
</HEAD>
<SCRIPT>
function asd()
{
parent.document.title="TestLogFile";
}
</SCRIPT>
<BODY BGCOLOR="white" onload="asd();">

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev">&nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"--><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestGroupRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestProcedure.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>

<!-- ======== START OF CLASS DATA ======== -->
<H2>Class TestLogFile</H2>
<PRE>Object
   |
   +--<b>TestLogFile</b>
</PRE>


<HR>
<DL>
   <!-- Class definition -->
   <DT>class 
   <B>TestLogFile</B>
   

</DL>
   
   <P>
   <I>Defined in <a href='overview-summary-TestRunner.js.html'>TestRunner.js</a></I><BR/><BR/>
   </P>
   
   <HR>

<!-- ======== NESTED CLASS SUMMARY ======== -->

<!-- ======== END NESTED CLASS SUMMARY ======== -->


<!-- =========== FIELD SUMMARY =========== -->

   <A NAME="field_summary"><!-- --></A>
      <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
         <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
            <TD COLSPAN=2><FONT SIZE="+2">
               <B>Field Summary</B></FONT></TD>
         </TR>

   <!-- This is one instance field summary -->
   
   <TR BGCOLOR="white" CLASS="TableRowColor">
   <TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
   <CODE>&nbsp;Object</CODE></FONT></TD>
   <TD><CODE><B><A HREF="#log">log</A></B></CODE>
   <BR>
   &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
   </TR>
   

   </TABLE>
   &nbsp;
   

   

<!-- =========== END FIELD SUMMARY =========== -->


<!-- ======== CONSTRUCTOR SUMMARY ======== -->

<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
   <TD>
      <CODE>
	 <B>
	    <A HREF="#TestLogFile()">TestLogFile</A></B>(parent, log)
      </CODE>
      <BR>
      &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      Constructor for test log entry in outline
      </TD>
</TR>
</TABLE>

<!-- ======== END CONSTRUCTOR SUMMARY ======== -->

&nbsp;

<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TD COLSPAN=2><FONT SIZE="+2">
<B>Method Summary</B></FONT></TD>
</TR>


   <TR BGCOLOR="white" CLASS="TableRowColor">
      <TD ALIGN="right" VALIGN="top" WIDTH="1%">
	 <FONT SIZE="-1">
	    <CODE>&nbsp;void</CODE>
	 </FONT>
      </TD>
      <TD>
	 <CODE>
	    <B>
	       <A HREF="#selectedListener">selectedListener</A></B>()
	 </CODE>
	 <BR>
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
	 
      </TD>
   </TR>


</TABLE>



<P>
<!-- ========== END METHOD SUMMARY =========== -->


<!-- ============ FIELD DETAIL START =========== -->

   <A NAME="field_detail"><!-- --></A>
   <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
      <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
         <TD COLSPAN=1><FONT SIZE="+2"><B>Field Detail</B></FONT></TD>
      </TR>
   </TABLE>

   
   <A NAME="log"><!-- --></A>
   <H3>log</H3>
   <PRE>Object&nbsp;<B>log</B></PRE>
   <UL>
   
   
   </UL>
   <HR>
   


<!-- ============ FIELD DETAIL END =========== -->

    <!-- ========= CONSTRUCTOR DETAIL START ======== -->

<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1>
      <FONT SIZE="+2"><B>Constructor Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<A NAME="TestLogFile()"><!-- --></A><H3>
TestLogFile</H3>
<PRE><B>TestLogFile</B>(parent, log)</PRE>


<UL>
   Constructor for test log entry in outline
</UL>



   </UL>


<!-- Constructor return value(s) -->

<!-- End constructor return value(s) -->

<!-- ADDITIONAL ATTRIBUTES -->

<HR/>
<!-- END ADDITIONAL ATTRIBUTES  -->

<!-- ========= CONSTRUCTOR DETAIL END ======== -->


<!-- ============ METHOD DETAIL START ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
   <TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
      <TD COLSPAN=1><FONT SIZE="+2">
         <B>Method Detail</B></FONT>
      </TD>
   </TR>
</TABLE>

<!-- One single method detail entry -->

   <A NAME="selectedListener"><!-- --></A>
   <H3>selectedListener</H3>
   <PRE>void <B>selectedListener</B>()</PRE>
   

   <!-- METHOD PARAMETERS START -->
   
   <!-- METHOD PARAMETERS END -->

   

   <!-- ADDITIONAL ATTRIBUTES START -->
   
   <!-- ADDITIONAL ATTRIBUTES  END -->
<HR>



<!-- ============ METHOD DETAIL END ========== -->

<!-- ========= END OF CLASS DATA ========= -->

<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">  <A HREF="overview-summary-TestRunner.js.html"><FONT CLASS="NavBarFont1"><B>File</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="overview-tree.html"><FONT CLASS="NavBarFont1"><b>Tree</b></FONT></A>&nbsp;</TD>
  <!--TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"-->    <!--A HREF="deprecated-list.html"--><!--FONT CLASS="NavBarFont1">Deprecated</FONT--><!--/A--><!--&nbsp;</TD-->
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<B></B>
</EM>
</TD
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="TestGroupRunner.html"><B>PREV CLASS</B></A><!-- 
   NEXT CLASS 
-->
&nbsp;<A HREF="TestProcedure.html"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="" TARGET="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;
<SCRIPT>
  <!--
  if(window==top) {
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#field_summary">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;<A HREF="#field_detail">FIELD</A>&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>

<!-- =========== END OF NAVBAR =========== -->

<HR>
<FONT SIZE="-1">

</FONT>
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Wed Jan 14 16:42:14 2026</div>
</BODY>
</HTML>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>CardFile - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>CardFile - Reference Documentation</h1>
        <p>
            <p>Class implementing support for ISO7816-4 elementary and dedicated files on an ICC</p>
                             
            <p>Objects created using this class represent a file on the ICC. Each file has an
                    associated absolute path, that uniquely identifies the file in the hierarchical
                    file system of the ICC. The path is constructed from file identifiers and/or file
                    names. File identifier are 16 bit hexadecimal value prefixed by a ':'. File names
                    are hexadecimal strings prefixed with '#'. They usually contain the Application
                    Identifier (AID) assigned to an application dedicated file or an applet.</p>
                             
            <p>The class provided for two variant of the constructor. The first variant requires
                    a card object to bind the file to a specific card activated in a reader. This is
                    quite typically the MF (":3F00"), an application DF or an applet. Subsequent
                    instantiations of CardFile objects shall use the second variant of the CardFile
                    constructor, which takes a parent
                    object as first argument. This second variant accepts relative paths, which are
                    then evalutated relative to the parent CardFile object.</p>
            	     
            <p>When an application is selected using an AID, then the CardFile object may
                    have the MF as parent. This will however not construct an invalid path
                    ":3F00#A00000270101", but allocate a new CardFile objects that inherits
                    the credentials from the MF. This construct is suitable, if credentials from the
                    MF level are valid in subordinate DF as well.</p>
            	     
            <p>Short file identifier are supported as 1 byte file identifier. Specify a 
                    8 bit hexadecimal value rather than the 16 bit hexadecimal file id.
                    ":3F00:12" for example refers to a file in the MF with short file identifier 18.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">CardFile() constructor</a>
            </li>
            <li>
                <a href="#getFCPBytes">getFCPBytes()</a>
            </li>
            <li>
                <a href="#getFileID">getFileID()</a>
            </li>
            <li>
                <a href="#isDirectory">isDirectory()</a>
            </li>
            <li>
                <a href="#isTransparent">isTransparent()</a>
            </li>
            <li>
                <a href="#isCyclic">isCyclic()</a>
            </li>
            <li>
                <a href="#getLength">getLength()</a>
            </li>
            <li>
                <a href="#getRecordSize">getRecordSize()</a>
            </li>
            <li>
                <a href="#exists">exists()</a>
            </li>
            <li>
                <a href="#readBinary">readBinary()</a>
            </li>
            <li>
                <a href="#readRecord">readRecord()</a>
            </li>
            <li>
                <a href="#updateBinary">updateBinary()</a>
            </li>
            <li>
                <a href="#updateRecord">updateRecord()</a>
            </li>
            <li>
                <a href="#appendRecord">appendRecord()</a>
            </li>
            <li>
                <a href="#performCHV">performCHV()</a>
            </li>
            <li>
                <a href="#setCredential">setCredential()</a>
            </li>
            <li>
                <a href="#createFile">createFile()</a>
            </li>
            <li>
                <a href="#deleteFile">deleteFile()</a>
            </li>
            <li>
                <a href="#activateFile">activateFile()</a>
            </li>
            <li>
                <a href="#deactivateFile">deactivateFile()</a>
            </li>
            <li>
                <a href="#sendApdu">sendApdu()</a>
            </li>
            <li>
                <a href="#sendSecMsgApdu">sendSecMsgApdu()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>READ</td>
                <td>READ access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>UPDATE</td>
                <td>UPDATE access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>APPEND</td>
                <td>APPEND access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SELECT</td>
                <td>SELECT access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CREATE</td>
                <td>CREATE access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DELETE</td>
                <td>DELETE access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ACTIVATE</td>
                <td>ACTIVATE access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DEACTIVATE</td>
                <td>DEACTIVATE access mode in setCredential().</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ALL</td>
                <td>All access modes or all usage qualifier in setCredential()</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">CardFile(Card card, String path)</p>
        <p class="signature">CardFile(CardFile parent, String path)</p>
        <h3>Description</h3>
        Obtain access to an existing file on an ICC.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Card</code>
                </td>
                <td>card</td>
                <td>Card object to operate on</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>path</td>
                <td>Path to object</td>
            </tr>
            <tr>
                <td>
                    <code>CardFile</code>
                </td>
                <td>parent</td>
                <td>Parent CardFile object used to share session</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.OBJECT_NOT_FOUND</td>
                <td>File not found</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

card = new Card(_scsh3.reader);

root = new CardFile(card, ":3F00");
print(root);
print(root.getFCPBytes());

// Select EF_DIR with file identifier 2F00
efdir = new CardFile(root, ":2F00");
print(efdir);
print(efdir.getFCPBytes());

// Select EF_DIR with short file identifier 1E (dec. 30)
efdir = new CardFile(root, ":1E");
print(efdir);
print(efdir.getFCPBytes());

df = new CardFile(card, "#D040000017010101");
print(df);
print(df.getFCPBytes());

efsvpd = new CardFile(df, ":EF01");
print(efsvpd);
print(efsvpd.getFCPBytes());

df = new CardFile(card, ":3F00:3F01");
print(df);
print(df.getFCPBytes());

efsvpd = new CardFile(df, ":EF01");
print(efsvpd);
print(efsvpd.getFCPBytes());

</pre>
        <h2 id="getFCPBytes">getFCPBytes()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getFCPBytes()</p>
        <h3>Description</h3>
                    
        <p>Get the bytes returned as File Control Parameter (FCP) in response to the select file command APDU.</p>
                    
        <p>This method can be used to ensure, that the object on the ICC is selected.</p>
                    
        <p>This method is not available for files refered to by a short file identifier. It will return
               the FCP of the directory instead.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Header returned by the ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

efsvpd = new CardFile(card, "#D040000017010101:EF01");

fcp = efsvpd.getFCPBytes();
print(fcp.toString(HEX));
assert(fcp);

</pre>
        <h2 id="getFileID">getFileID()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getFileID()</p>
        <h3>Description</h3>
                    
        <p>Return the file identifier as indicated in the file control parameter (FCP)</p>
                    
        <p>This method is not available for files refered to by a short file identifier</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>File identifier</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ef = new CardFile(card, ":3F00:2F00");

fid = ef.getFileID();
assert(typeof(fid) == "number");
assert(fid == 0x2F00);

</pre>
        <h2 id="isDirectory">isDirectory()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean isDirectory()</p>
        <h3>Description</h3>
                    
        <p>Use file control parameter to determine if the file is a dedicated file</p>
                    
        <p>This method is not available for files refered to by a short file identifier</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>True, if file is dedicated file</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

df = new CardFile(card, ":3F00");
assert(df.isDirectory());
ef = new CardFile(df, ":2F00");
assert(!ef.isDirectory());

</pre>
        <h2 id="isTransparent">isTransparent()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean isTransparent()</p>
        <h3>Description</h3>
                    
        <p>Use file control parameter to determine if the file is a transparent elementary file</p>
                    
        <p>This method is not available for files refered to by a short file identifier</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>True, if file is a transparent elementary file</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ef = new CardFile(card, "#D040000017010101:EF01");
assert(ef.isTransparent());

ef = new CardFile(card, ":3F00:2F00");
assert(!ef.isTransparent());

</pre>
        <h2 id="isCyclic">isCyclic()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean isCyclic()</p>
        <h3>Description</h3>
                    
        <p>Use file control parameter to determine if the file is a cyclic elementary file</p>
                    
        <p>This method is not available for files refered to by a short file identifier</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>True, if file is a cyclic linear elementary file</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ef = new CardFile(card, ":3F00:2F00");
assert(!ef.isCyclic());

</pre>
        <h2 id="getLength">getLength()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getLength()</p>
        <h3>Description</h3>
                    
        <p>Use file control parameter to determine length of the file</p>
                    
        <p>This method is not available for files refered to by a short file identifier</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Length in byte</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ef = new CardFile(card, "#D040000017010101:EF01");
len = ef.getLength();
assert(typeof(len) == "number");
assert((len == 550) || (len == 12));

ef = new CardFile(card, ":3F00:2F00");
len = ef.getLength();
assert((len == 200) || (len == 800));

</pre>
        <h2 id="getRecordSize">getRecordSize()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getRecordSize()</p>
        <h3>Description</h3>
                    
        <p>Use file control parameter to determine maximum size of a record</p>
                    
        <p>This method is not available for files refered to by a short file identifier</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Maximum size of record</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

ef = new CardFile(card, ":3F00:2F00");
assert(typeof(ef.getRecordSize()) == "number");
assert(ef.getRecordSize() &gt; 0);

</pre>
        <h2 id="exists">exists()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean exists(String file)</p>
        <h3>Description</h3>
                    
        <p>Check if file exists in dedicated file</p>
                    
        <p>This method is not available for files refered to by a short file identifier</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>True, if the file exists</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

root = new CardFile(card, ":3F00");
assert(root.exists(":2F00"));
assert(!root.exists(":2F77"));

</pre>
        <h2 id="readBinary">readBinary()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString readBinary()</p>
        <p class="signature">ByteString readBinary(Number offset)</p>
        <p class="signature">ByteString readBinary(Number offset, Number length)</p>
        <h3>Description</h3>
        Read content of transparent EF
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset at which data should be read. Default is 0</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>length</td>
                <td>Number of bytes to be read. Default is all</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Data read from EF</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>The card service layer reported an error</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>The card terminal layer reported an error</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Using a file identifier
efsvpd = new CardFile(card, "#D040000017010101:EF01");

svpd = efsvpd.readBinary();

print(svpd);

// Using a short file identifier
efsvpd = new CardFile(card, "#D040000017010101:01");

svpd = efsvpd.readBinary();

print(svpd);

</pre>
        <h2 id="readRecord">readRecord()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString readRecord(Number record)</p>
        <h3>Description</h3>
        Read record from linear file
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>record</td>
                <td>Record number</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Record read from linear EF</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>The card service layer reported an error</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>The card terminal layer reported an error</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Using a file identifier
efdir = new CardFile(card, ":3F00:2F00");

dir = efdir.readRecord(1);

print(dir);

// Using a short file identifier
efdir = new CardFile(card, ":3F00:1E");

dir = efdir.readRecord(1);

print(dir);

</pre>
        <h2 id="updateBinary">updateBinary()</h2>
        <h3>Prototype</h3>
        <p class="signature">updateBinary(Number offset, ByteString data)</p>
        <h3>Description</h3>
                    
        <p>Write data to transparent file at offset.</p>
                    
        <p>A method writeBinary() is provided for backward compatibility with scripts written before
               version 3.4. Please refrain from use.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>offset</td>
                <td>Zero based offset in transparent elementary file</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Date to be written</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td>Method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>The card service layer reported an error</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>The card terminal layer reported an error</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Using a file identifier
efsvpb = new CardFile(card, "#D040000017010101:EF03");

efsvpb.updateBinary(0, new ByteString("Hello World", ASCII));

efsvpb = new CardFile(card, "#D040000017010101:03");

efsvpb.updateBinary(0, new ByteString("Hello World", ASCII));

</pre>
        <h2 id="updateRecord">updateRecord()</h2>
        <h3>Prototype</h3>
        <p class="signature">updateRecord(Number record, ByteString data)</p>
        <h3>Description</h3>
                    
        <p>Write record to linear file.</p>
                    
        <p>A method writeRecord() is provided for backward compatibility with scripts written before
               version 3.4. Please refrain from use.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>record</td>
                <td>Record number starting at 1</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Date to be written</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td>Method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>The card service layer reported an error</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>The card terminal layer reported an error</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Using a file identifier
efdir = new CardFile(card, ":3F00:2F00");
efdir.updateRecord(2, 
  new ByteString("611C4F08D040000017001001500A53565369676E61747572530454312E30", HEX));

</pre>
        <h2 id="appendRecord">appendRecord()</h2>
        <h3>Prototype</h3>
        <p class="signature">appendRecord(ByteString data)</p>
        <h3>Description</h3>
        Append a record with data to linear file.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Date to be written to appended record</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td>Method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>The card service layer reported an error</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>The card terminal layer reported an error</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Using a file identifier
efdir = new CardFile(card, ":3F00:2F00");
efdir.appendRecord(
  new ByteString("611C4F08D040000017001001500A53565369676E61747572530454312E30", HEX));

</pre>
        <h2 id="performCHV">performCHV()</h2>
        <h3>Prototype</h3>
        <p class="signature">performCHV(Boolean global, Number reference)</p>
        <p class="signature">performCHV(Boolean global, Number reference, ByteString value)</p>
        <h3>Description</h3>
        Perform cardholder verification.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>global</td>
                <td>True, if global reference data is to be used. False, if reference data
                                               resides in the directory of the CardFile object.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>reference</td>
                <td>Reference to data to be used for CHV.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Cardholder verification value (e.g. PIN or PASSWORD)</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>True, if cardholder verification is successful.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An card terminal error occured or the CHV was aborted</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Allocate a cardfile object
var root = new CardFile(card, ":3F00");

// Perform cardholder verification (e.g. PIN entry) for global reference data 1
root.performCHV(true, 1);

// Perform cardholder verification procedure using given data for global reference data 1
root.performCHV(true, 1, new ByteString("241122FFFFFFFFFF", HEX));

// Perform cardholder verification (e.g. PIN entry) for local reference data 1 (Signature-PIN)
var dfssig = new CardFile(card, "#D040000017001201");
dfssig.performCHV(false, 1);

</pre>
        <h2 id="setCredential">setCredential()</h2>
        <h3>Prototype</h3>
        <p class="signature">setCredential(Number accessMode, Number usageQualifier, Object credential)</p>
        <h3>Description</h3>
                    
        <p>Provide an object that contains the credential required to access the file in the
               specified mode.</p>
                    
        <p>Currently only a secure channel credential can be supplied. A secure channel credential
               is a JavaScript object that supplies a wrap() and optionally an unwrap() method. The
               wrap() method is called to transform the command-APDU, the unwrap() method is called to
               transform the response-APDU. The transformation is applied, if the file access operation
               (e.g. readBinary()) matches the access mode.</p>
                    
        <p>The access mode can be defined by or'ing the constants CardFile.READ, CardFile.UPDATE or
               CardFile.APPEND. Use CardFile.ALL as a combination of the above.</p>
        	
        <p>The usage qualifier determins, which part of the command and response APDU are to be
               protected and how. Any of the following four options can be combined: MAC protected command APDU (CPRO), encrypted 
               command APDU (CENC), MAC protected response APDU (RPRO) and encrypted response APDU (RENC).</p>
                    
        <p>The usage qualifier controls the transformation of command and reponse APDU. It is passed
               to the wrap() and unwrap() method as the second parameter.</p>
                    
        <p>The usage qualifier can be defined by or'ing the constants Card.CPRO, Card.CENC, Card.RPRO or
               Card.RENC. Use Card.ALL as a combination of the above.</p>
                    
        <p>Usage qualifier are stored per access mode. Use multiple calls to setCredential(), if different
               access modes require different usage qualifier.</p>
                    
        <p>Subsequent calls to this method will overwrite the previous credential for an access mode.</p>
                    
        <p>If the CardFile object was created as the child of a parent DF (the second constructor
               option), then all credentials are stored with the top-most parent CardFile in the
               hierarchy. Credentials are stored based on the file's path on the card, so subsequent
               CardFile objects with the same file identifier will inherit a once defined credential.
               If this is not desired, then the CardFile object must be created without a parent
               dependency.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>accessMode</td>
                <td>Bitwise or'ing of CardFile.READ, CardFile.UPDATE or CardFile.APPEND to
               specify the access mode for which this credential is applicable.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>usageQualifier</td>
                <td>Bitwise or'ing of Card.CPRO, Card.CENC,
               Card.RPRO or Card.RENC. Card.ALL is a combination of all.</td>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>credential</td>
                <td>Object to be used as credential.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td>Method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


//
// Define SecureChannelCredential class constructor
//
function SecureChannelCredential() {
}

//
// Wrap command-APDU with secure messaging
//
SecureChannelCredential.prototype.wrap = function(apduToWrap, usageQualifier) {
	print("APDU to wrap with usageQualifier " + usageQualifier + " :");
	print(apduToWrap);
	
	// Put secure messaging transformation here
	
	return(apduToWrap);
}


//
// Unwrap response-APDU with secure messaging
//
SecureChannelCredential.prototype.unwrap = function(apduToUnwrap, usageQualifier) {
	print("APDU to unwrap with usageQualifier " + usageQualifier + " :");
	print(apduToUnwrap);
	
	// Put secure messaging transformation here
	
	return(apduToUnwrap);
}


// Allocate a secure channel credential
var sc = new SecureChannelCredential();

// Allocate a cardfile object
var efsvpd = new CardFile(card, "#D040000017010101:EF01");
efsvpd.setCredential(CardFile.READ, Card.ALL, sc);
svpd = efsvpd.readBinary();


</pre>
        <h2 id="createFile">createFile()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void createFile(ByteString fcp)</p>
        <p class="signature">Void createFile(ByteString fcp, Number fileDescriptorByte)</p>
        <h3>Description</h3>
                    
        <p>Create a new file object on the card subordinate to the dedicated file for
               which this method is called.</p>
        	
        <p>The data passed in the method invocation must match the data supplied to the
               card operating system in the CREATE FILE APDU.</p>
                    
        <p>The optional parameter fileDescriptorByte can be used to set P1 of the
               command APDU to a specific value as defined in ISO 7816-9.</p>
        	
        <p>The command APDU will be send using secure messaging, if a credential
               is set for the object that has the access mode CardFile.CREATE defined.</p>
            
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>fcp</td>
                <td>File control parameter defining the properties of the new card object. Format and encoding depends on the card operation system.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>fileDescriptorByte</td>
                <td>File descriptor byte passed as P1 in the command APDU. 0 if missing.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>A card service error occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>A card terminal error occured</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Create an EF_DIR on a Starcos 3.1 card
var fcp = new ByteString("621A8205044100500F83022F00850203208801F08A0105A1038B0102", HEX);

var mf = new CardFile(card, ":3F00");
mf.createFile(fcp);

</pre>
        <h2 id="deleteFile">deleteFile()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void deleteFile()</p>
        <p class="signature">Void deleteFile(String fileIdentifier)</p>
        <p class="signature">Void deleteFile(String fileIdentifier, boolean isDF)</p>
        <h3>Description</h3>
                    
        <p>Delete a file object from the card.</p>
                    
        <p>If this method is called without parameters, then the card object represented
               by the CardFile object is deleted (DELETE SELF).</p>
        	
        <p>If this method is called with a fileIdentifier argument, then a file objects
               within the dedicated file represented by the CardFile object is deleted.</p>
        	
        <p>By default, the method assumes that the subordinate file is a EF. This can
               be overwritten by setting the isDF argument to true.</p>
        	
        <p>The command APDU will be send using secure messaging, if a credential
               is set for the object that has the access mode CardFile.DELETE defined.</p>
            
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>fileIdentifier</td>
                <td>File identifier (FID or AID).</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>isDF</td>
                <td>Indicator, that the file to be deleted is a DF. Default is false.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The fileIdentifier argument must be a single id, not a path.</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>A card service error occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An card terminal error occured or the CHV was aborted</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Delete EF_DIR in MF
var mf = new CardFile(card, ":3F00");
mf.deleteFile(":2F00");

// Delete DF using DELETE SELF method
var df = new CardFile(card, "#A0000000041234");
df.deleteFile();

// Delete DF from MF
mf.deleteFile(":DF01", true);

</pre>
        <h2 id="activateFile">activateFile()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void activateFile()</p>
        <h3>Description</h3>
                    
        <p>Activate the file object on the card represented by this CardFile object
               using the ACTIVATE FILE command APDU defined by ISO 7816-9.</p>
        	
        <p>The command APDU will be send using secure messaging, if a credential
               is set for the object that has the access mode CardFile.ACTIVATE defined.</p>
            
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>A card service error occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An card terminal error occured or the CHV was aborted</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Activate DF
var df = new CardFile(card, "#A0000000041234");
df.activate();

</pre>
        <h2 id="deactivateFile">deactivateFile()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void deactivateFile()</p>
        <h3>Description</h3>
                    
        <p>De-activate the file object on the card represented by this CardFile object
               using the DEACTIVATE FILE command APDU defined by ISO 7816-9.</p>
        	
        <p>The command APDU will be send using secure messaging, if a credential
               is set for the object that has the access mode CardFile.DEACTIVATE defined.</p>
            
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>An error occured while talking to the ICC</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_USAGE</td>
                <td>A card service error occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An card terminal error occured or the CHV was aborted</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// De-activate DF
var df = new CardFile(card, "#A0000000041234");
df.deactivate();

</pre>
        <h2 id="sendApdu">sendApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2)</p>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2, Number[] sw)</p>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2, ByteString data)</p>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2, ByteString data, Number[] sw)</p>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2, Number le)</p>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2, Number le, Number[] sw)</p>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2, ByteString data, Number le)</p>
        <p class="signature">ByteString sendApdu(Number cla, Number ins, Number p1, Number p2, ByteString data, Number le, Number[] sw)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>This methods works similar to Card.sendApdu(), but also ensures, that the object for which 
                        the method is called is selected before the APDU is transmitted.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and SWMSG and response with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>The method supports ISO7816-4 extended format. This is automatically used, if the length of the data
                        argument exceeds 255 or if the argument le exceeds 256.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>cla</td>
                <td>The CLA byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ins</td>
                <td>The INS byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p1</td>
                <td>The P1 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p2</td>
                <td>The P2 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data bytes to be send in the Command-APDU for case 3 or case 4 commands</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>le</td>
                <td>The number of bytes expected in the response. 256 is encoded as '00' in short format.
                                          65536 is encoded as '0000' in extended format.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data for the command APDU exceeds 65536</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The value given for Le is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See Card.sendApdu() for an example

</pre>
        <h2 id="sendSecMsgApdu">sendSecMsgApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, Number[] sw)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data, Number[] sw)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, Number le)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, Number le, Number[] sw)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data, Number le)</p>
        <p class="signature">ByteString sendSecMsgApdu(Number usageQualifier, Number cla, Number ins, Number p1, Number p2, ByteString data, Number le, Number[] sw)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>This methods works similar to Card.sendSecMsgApdu() but uses credentials
                        set for the object for which this method is called.</p>
        		 
        <p>This method also ensures, that the object for which the method is called
                        is selected before the APDU is transmitted.</p>
                             
        <p>If a secure channel is set with the setCredential() method, then this credential
                        will be used to tranform the command and response APDU accordingly. During this
                        transformation process, the usageQualifier is passed to the wrapping / unwrapping
                        methods. APDUs send with this method will be transformed using the credential
                        set for the CardFile.SELECT access mode.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and SWMSG and response with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>The method supports ISO7816-4 extended format. This is automatically used, if the length of the data
                        argument exceeds 255 or if the argument le exceeds 256.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>usageQualifier</td>
                <td>Usage qualifier for secure messaging transformation. Can be a combination of
                Card.CPRO, Card.CENC, Card.RPRO, Card.RENC and Card.ALL.</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>cla</td>
                <td>The CLA byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ins</td>
                <td>The INS byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p1</td>
                <td>The P1 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p2</td>
                <td>The P2 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data bytes to be send in the Command-APDU for case 3 or case 4 commands</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>le</td>
                <td>The number of bytes expected in the response. 256 is encoded as '00' in short format.
                                          65536 is encoded as '0000' in extended format.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data for the command APDU exceeds 65536</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The value given for Le is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See Card.sendApdu() for an example

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>OCSPQuery - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>OCSPQuery - Reference Documentation</h1>
        <p>Class implementing support for the Online Certificate Status Protocol (OCSP)</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">OCSPQuery() constructor</a>
            </li>
            <li>
                <a href="#add">add()</a>
            </li>
            <li>
                <a href="#execute">execute()</a>
            </li>
            <li>
                <a href="#post">post()</a>
            </li>
            <li>
                <a href="#getStatus">getStatus()</a>
            </li>
            <li>
                <a href="#getStatusString">getStatusString()</a>
            </li>
            <li>
                <a href="#getRevocationTime">getRevocationTime()</a>
            </li>
            <li>
                <a href="#getRequest">getRequest()</a>
            </li>
            <li>
                <a href="#getResponse">getResponse()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>GOOD</td>
                <td>Certificate is valid</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>UNKNOWN</td>
                <td>Certificate is unknown to the responder</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>REVOKED</td>
                <td>Certificate was revoked</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>KEYCOMPROMISE</td>
                <td>Certificate was revoked because the key was compromised</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CACOMPROMISE</td>
                <td>Certificate was revoked because the CA key was compromised</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AFFILIATIONCHANGED</td>
                <td>Certificate was revoked because the affiliation changed</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SUPERSEDED</td>
                <td>Certificate was revoked because a new certificate was issued</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CESSATIONOFOPERATION</td>
                <td>Certificate was revoked because the CA discontinued operation</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CERTIFICATEHOLD</td>
                <td>Certificate is on hold</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>REMOVEFROMCRL</td>
                <td>Certificate was revoked and can now be removed form CRL</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>PRIVILEGEWITHDRAWN</td>
                <td>Certificate was revoked because the privileges granted by to the owner were withdrawn</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AACOMPROMISE</td>
                <td>Certificate was revoked</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">OCSPQuery(X509 rootCert, X509 issuerCert)</p>
        <p class="signature">OCSPQuery(X509 issuerCert)</p>
        <h3>Description</h3>
        <p>Create OCSPQuery object that can be used to collect certificates for which the
                     the status can be queried from an OCSP responder.</p>
                             
        <p>The URL for the OCSP responder is taken from isserCert.</p>
        					 
        <p>If the root certificate is ommited from the constructor, then the
                        signature on the OCSP response is only validated against
                        the list of certificates in the OCSPResponse. No link to a
                        trusted anchor is verified in that case.</p>
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>rootCert</td>
                <td>Root certificate used for verification of OCSP response signature</td>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>issuerCert</td>
                <td>Certificate of instance that issued the certificate for which
                a query should be done.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Arguments must be of type X509</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

rootcert = new X509("root.cer");
cacert = new X509("ca.cer");

query = new OCSPQuery(cacert);

query = new OCSPQuery(rootcert, cacert);

</pre>
        <h2 id="add">add()</h2>
        <h3>Prototype</h3>
        <p class="signature">OCSPQuery add(X509 cert)</p>
        <h3>Description</h3>
        Add a certificate to the query. The certificate must be issued by the instance
                     identified by the isserCert certificate in the OCSPQuery constructor.
                     Multiple certificates can be included in a single query.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>cert</td>
                <td>Certificate to include in query</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>OCSPQuery</code>
                </td>
                <td>The object this method is applied to</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Certificate is invalid for inclusion in query</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

goodcert = new X509("ee_good.cer");
revokedcert = new X509("ee_revoked.cer");

query.add(goodcert);
assert(query.add(revokedcert) instanceof OCSPQuery);

</pre>
        <h2 id="execute">execute()</h2>
        <h3>Prototype</h3>
        <p class="signature">OCSPQuery execute()</p>
        <p class="signature">OCSPQuery execute(String url)</p>
        <h3>Description</h3>
        Execute query against OCSP server. This is a one in all method. It extracts the
                     URL from the issuer certificate (unless specified), builds the request, posts the message, obtains
                     the response and decodes the status information.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>url</td>
                <td>URL of OCSP responder.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>OCSPQuery</code>
                </td>
                <td>The object this method is applied to</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>The query could not be completed successfully</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

/*

assert(query.execute() instanceof OCSPQuery);

*/

</pre>
        <h2 id="post">post()</h2>
        <h3>Prototype</h3>
        <p class="signature">OCSPQuery post(String url, ByteString request)</p>
        <p class="signature">OCSPQuery post(String url, ByteString request, String[] header)</p>
        <h3>Description</h3>
        Send a request to the server identified by the url with a custom HTTP header. This
                     method is suitable for test setups using custom build requests and header
                     fields.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>url</td>
                <td>URL of OCSP responder.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>request</td>
                <td>DER encoded request</td>
            </tr>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>header</td>
                <td>Custom HTTP header field in the format "key: value". Will disable
                                                automatically generated header fields Content-Type and Content-Length.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The response returned from the server</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>One or more arguments do not match</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>The query could not be completed successfully</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

/*
var request = query.getRequest();
var response = query.post("http://ocsp.ecard.sozialversicherung.at", request);
assert(response.length &gt; 0);

var header = [ "Content-Length: " + request.length, "Content-Type: application/ocsp-request" ];
var response = query.post("http://ocsp.ecard.sozialversicherung.at", request, header);
assert(response.length &gt; 0);
*/

</pre>
        <h2 id="getStatus">getStatus()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getStatus(X509 cert)</p>
        <h3>Description</h3>
        Query status from cached result of previous query operation
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>cert</td>
                <td>Certificate in question</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Status of the certificate as indicated by the responder. This is one of the
                              constant values defined for this object.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Arguments must be of type X509</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>The query could not be completed successfully</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

assert(query.getStatus(goodcert) == OCSPQuery.GOOD);
assert(query.getStatus(revokedcert) != OCSPQuery.GOOD);

</pre>
        <h2 id="getStatusString">getStatusString()</h2>
        <h3>Prototype</h3>
        <p class="signature">String getStatusString(X509 cert)</p>
        <h3>Description</h3>
        Query status from cached result of previous query operation and return a human readable string
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>cert</td>
                <td>Certificate in question</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>Status of the certificate as indicated by the responder.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Arguments must be of type X509</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>The query could not be completed successfully</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

print("ee_good.cer    : " + query.getStatusString(goodcert));
print("ee_revoked.cer : " + query.getStatusString(revokedcert));

</pre>
        <h2 id="getRevocationTime">getRevocationTime()</h2>
        <h3>Prototype</h3>
        <p class="signature">Date getRevocationTime(X509 cert)</p>
        <h3>Description</h3>
        Query revocation time from cached result of previous query operation
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>cert</td>
                <td>Certificate in question</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Date</code>
                </td>
                <td>Revocation time of the certificate as indicated by the responder.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Arguments must be of type X509</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>The query could not be completed successfully</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var rt = query.getRevocationTime(revokedcert);
assert(rt instanceof Date);
print("ee_revoked.cer : " + rt);

</pre>
        <h2 id="getRequest">getRequest()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getRequest()</p>
        <h3>Description</h3>
        Obtain DER encoded OCSP request
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>DER encoded request.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An error occured building the request</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

req = query.getRequest();
assert(req instanceof ByteString);
print(req.toString(HEX));

</pre>
        <h2 id="getResponse">getResponse()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getResponse()</p>
        <h3>Description</h3>
        Obtain DER encoded OCSP response as returned from OCSP server
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>DER encoded response.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DEVICE_ERROR</td>
                <td>An error occured building the response</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

res = query.getResponse();
assert(res instanceof ByteString);
print(res.toString(HEX));

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>GPError - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>GPError - Reference Documentation</h1>
        <p>Exception class thrown by various GP functions</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">GPError() constructor</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>ACCESS_DENIED</td>
                <td>Access to resource denied</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ARGUMENTS_MISSING</td>
                <td>A required argument is missing from the argument list</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CARD_COMM_ERROR</td>
                <td>Card communication error</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CARD_INVALID_SW</td>
                <td>A SW1/SW2 returned by the ICC is not as expected</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CRYPTO_FAILED</td>
                <td>Cryptographic operation failed</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DATA_TOO_LARGE</td>
                <td>Data supplied is too large for operation</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DEVICE_ERROR</td>
                <td>Hardware device reported error</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_ARGUMENTS</td>
                <td>Too many arguments supplied in argument list</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_DATA</td>
                <td>Invalid data supplied as argument</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_ENCODING</td>
                <td>Invalid encoding format used in argument</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_INDEX</td>
                <td>Index is out of bounds</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_KEY</td>
                <td>Invalid key for operation</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_LENGTH</td>
                <td>Length is out of range</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_MECH</td>
                <td>Invalid mechanism specified</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_TAG</td>
                <td>Invalid tag value or format</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_TYPE</td>
                <td>Invalid type given as argument</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>INVALID_USAGE</td>
                <td>Invalid usage</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>KEY_NOT_FOUND</td>
                <td>Key not found</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>OBJECTCREATION- FAILED</td>
                <td>Object could not be created</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SECURE_CHANNEL_ WRONG_STATE</td>
                <td>Secure channel is in wrong state for desired operation</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>TAG_ALREADY_EXISTS</td>
                <td>Tag does already exist in TLVList that must contain unique tags</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>TAG_NOT_FOUND</td>
                <td>Tag not found</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>OBJECT_NOT_FOUND</td>
                <td>Object could not be found</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>NOT_YET_VALID</td>
                <td>Object is not yet valid</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>EXPIRED</td>
                <td>Object is expired</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SIGNATURE_FAILED</td>
                <td>Signature verification failed</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AUTHENTICATION_FAILED</td>
                <td>Authentication failed</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>NOT_AUTHENTICATED</td>
                <td>Not authenticated for operation</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AUTHENTICATION_METHOD_BLOCKED</td>
                <td>Authentication method is blocked</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>OUT_OF_MEMORY</td>
                <td>Out of memory</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CARD_CONNECT_FAILED</td>
                <td>Failed to connect to card</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>CARD_REMOVED</td>
                <td>Card removed</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>USER_ABORT</td>
                <td>Operation aborted by user</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>UNDEFINED</td>
                <td>Undefined error code</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>UNSUPPORTED</td>
                <td>Unsupported operation</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>USER_DEFINED</td>
                <td>User defined error</td>
            </tr>
        </table>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>String</td>
                <td>className</td>
                <td>Class throwing the exception</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>error</td>
                <td>Error code. Must be one of the defined constants</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>reason</td>
                <td>Reason for exception, e.g. the argument causing the exception</td>
            </tr>
            <tr>
                <td>String</td>
                <td>message</td>
                <td>Human readable message describing the error</td>
            </tr>
            <tr>
                <td>String</td>
                <td>fileName</td>
                <td>The name of the file containing the source code</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>lineNumber</td>
                <td>The line in the source code where the exception occurred</td>
            </tr>
            <tr>
                <td>String</td>
                <td>stack</td>
                <td>List of file names and line numbers resembling the call stack</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">GPError(String className, Number error, Number reason, String message)</p>
        <h3>Description</h3>
        Create a new GPError object with the fields set to the arguments.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>className</td>
                <td>Class throwing the exception</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>error</td>
                <td>Error code. Must be one of the defined constants</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>reason</td>
                <td>Reason for exception, e.g. the argument causing the exception</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>message</td>
                <td>Human readable message describing the error</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Throw from within script
try	{
	throw new GPError("test.class", 1, 2, "script");
	assert(false);
}

catch(e) {
	assert(e instanceof GPError);
	assert(e.className == "test.class");
	assert(e.error == 1);
	assert(e.reason == 2);
	assert(e.message == "script");
	print(e.fileName);
	print(e.lineNumber);
	print(e.stack);
}

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>CMSSignedData - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>CMSSignedData - Reference Documentation</h1>
        <p>Class for CMS Signed Data handling</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">CMSSignedData() constructor</a>
            </li>
            <li>
                <a href="#getSignedContent">getSignedContent()</a>
            </li>
            <li>
                <a href="#getSignedDataVersion">getSignedDataVersion()</a>
            </li>
            <li>
                <a href="#getSignedDataDigestAlgorithms">getSignedDataDigestAlgorithms()</a>
            </li>
            <li>
                <a href="#getSignedDataCertificates">getSignedDataCertificates()</a>
            </li>
            <li>
                <a href="#getEContentType">getEContentType()</a>
            </li>
            <li>
                <a href="#getNumberOfSigners">getNumberOfSigners()</a>
            </li>
            <li>
                <a href="#getSignerInfoVersion">getSignerInfoVersion()</a>
            </li>
            <li>
                <a href="#getSignerInfoSIDType">getSignerInfoSIDType()</a>
            </li>
            <li>
                <a href="#isCertificateAvailable">isCertificateAvailable()</a>
            </li>
            <li>
                <a href="#getSignerInfoDigestAlgorithm">getSignerInfoDigestAlgorithm()</a>
            </li>
            <li>
                <a href="#getSignerInfoSignedAttribute">getSignerInfoSignedAttribute()</a>
            </li>
            <li>
                <a href="#getCertificate">getCertificate()</a>
            </li>
            <li>
                <a href="#getSignerInfoSignatureAlgorithm">getSignerInfoSignatureAlgorithm()</a>
            </li>
            <li>
                <a href="#getSignerInfoSignature">getSignerInfoSignature()</a>
            </li>
            <li>
                <a href="#isSignerInfoSignatureValid">isSignerInfoSignatureValid()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>SID_ISSUERANDSERIALNUMBER</td>
                <td>SID object uses issuer and serial number for public key identification</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SID_SUBJECTKEYIDENTIFIER</td>
                <td>SID uses subject key identifier for public key identification</td>
            </tr>
            <tr>
                <td>String</td>
                <td>ATTR_MESSAGEDIGEST</td>
                <td>Object identifier of CMS attribute message digest</td>
            </tr>
            <tr>
                <td>String</td>
                <td>ATTR_SIGNINGTIME</td>
                <td>Object identifiert of CMS attribute signing time</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">CMS(ByteString encoded)</p>
        <h3>Description</h3>
        Create a CMS object
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>encoded</td>
                <td>ASN.1 encoded bytestring containing the CMS object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.GPError.INVALID_TYPE</td>
                <td>Argument type is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Argument contains no valid encoded CMS signed data object</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

encCMS = new ByteString("30 82 05 6d 06 09 2a 86 48 86 f7 0d 01 07 02 a0 82 05 5e 30 82 05 5a 02 01 \
01 31 0b 30 09 06 05 2b 0e 03 02 1a 05 00 30 1c 06 09 2a 86 48 86 f7 0d 01 07 01 a0 0f 04 0d 48 65 6c \
6c 6f 20 57 6f 72 6c 64 0d 0a a0 82 03 aa 30 82 03 a6 30 82 02 0e a0 03 02 01 02 02 11 31 7b af d2 33 \
e0 31 6f a2 d7 83 3a 7a f8 f9 93 d5 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 30 54 31 12 30 10 06 \
03 55 04 03 0c 09 56 53 69 67 20 43 41 20 31 31 31 30 2f 06 03 55 04 0a 0c 28 54 45 53 54 20 2d 20 48 \
61 75 70 74 76 65 72 62 61 6e 64 20 c3 b6 73 74 65 72 72 2e 20 53 6f 7a 69 61 6c 76 65 72 73 2e 31 0b \
30 09 06 03 55 04 06 13 02 41 54 30 1e 17 0d 30 35 31 31 30 33 31 30 30 35 34 32 5a 17 0d 31 30 31 31 \
30 33 31 30 30 35 34 32 5a 30 70 31 1f 30 1d 06 03 55 04 03 0c 16 58 58 58 4f 74 74 6f 20 58 58 58 4f \
74 74 61 6b 72 69 6e 67 65 72 31 31 30 2f 06 03 55 04 0a 0c 28 54 45 53 54 20 2d 20 48 61 75 70 74 76 \
65 72 62 61 6e 64 20 c3 b6 73 74 65 72 72 2e 20 53 6f 7a 69 61 6c 76 65 72 73 2e 31 0d 30 0b 06 03 55 \
04 0b 0c 04 56 53 69 67 31 0b 30 09 06 03 55 04 06 13 02 41 54 30 49 30 13 06 07 2a 86 48 ce 3d 02 01 \
06 08 2a 86 48 ce 3d 03 01 01 03 32 00 04 bc 10 1e d9 44 4b 6b 3f 13 1c 61 69 94 61 ce 8a 8a ab 2f be \
a8 7e cf e8 ba 4e 08 69 2c 21 30 3a bd 3b 52 c2 66 3a 6e 92 93 d5 49 ce 75 14 82 59 a3 81 b1 30 81 ae \
30 13 06 03 55 1d 23 04 0c 30 0a 80 08 46 f9 06 e6 e7 08 0f 24 30 11 06 03 55 1d 0e 04 0a 04 08 4a be \
a1 1f 28 a5 64 86 30 0e 06 03 55 1d 0f 01 01 ff 04 04 03 02 06 c0 30 16 06 03 55 1d 20 04 0f 30 0d 30 \
0b 06 09 2a 28 00 0a 01 04 01 66 00 30 31 06 08 2b 06 01 05 05 07 01 01 04 25 30 23 30 21 06 08 2b 06 \
01 05 05 07 30 01 86 15 68 74 74 70 3a 2f 2f 31 34 39 2e 32 33 39 2e 31 36 2e 32 30 39 30 29 06 03 55 \
1d 11 04 22 30 20 81 1e 61 6e 64 72 65 61 73 2e 73 63 68 77 69 65 72 40 63 61 72 64 63 6f 6e 74 61 63 \
74 2e 64 65 30 0d 06 09 2a 86 48 86 f7 0d 01 01 05 05 00 03 82 01 81 00 09 cc ad 93 50 5c 10 1c a5 41 \
a7 a8 4d 2d bb 35 67 7e e2 31 85 46 ce a0 cb 8c 8c b2 2b 84 a9 32 96 65 03 11 04 78 d4 9f e3 e9 3b a2 \
9b 6a 42 3b e4 05 c2 23 20 33 27 83 89 aa 06 c2 3e ed e8 11 27 e0 3d d4 5e ba 35 84 04 cf 4e 2a 6e 49 \
da 3d 32 82 43 94 db e1 43 80 e0 7f 7b 6f d1 ca 36 d8 e3 cf 0f f7 46 bd 94 af a3 99 1b 55 28 53 4f 13 \
55 96 42 10 c0 2f 87 c9 53 86 e5 d2 bd a2 2b 6a c9 56 43 45 5c cd c9 a0 a8 13 ec 5a 4f 3b 55 72 94 82 \
6e 63 14 4b ce 2f 7c e9 6c 61 13 e1 de 97 6a 72 f5 c4 a8 b7 5e d0 bf 01 1c 37 c0 3d 3b 74 bc c0 05 08 \
93 b3 8c 06 07 4b dc ab 3b cd 7e 00 48 42 44 18 89 da f7 c6 c1 dd 0e 27 d7 1a c7 f8 77 80 5f 48 d1 8f \
17 52 20 2d 02 0e 90 95 68 4c 2e 78 da 0a dd eb 0b a4 6c 4b 7a 7b 6b b0 78 1b 3b 08 f4 80 d0 cb 5f 03 \
60 4f 08 af db 94 95 ba 15 ac f8 3f 09 12 f7 e2 1d 63 6b 93 07 6b 71 50 f4 fc 35 89 e1 55 68 63 14 de \
81 0a 53 f4 9a 7b b8 3e 37 51 a7 ad e2 d5 99 36 6e c0 cd 76 af 14 eb 25 3c fa cb 74 f6 f6 6e 91 19 7e \
dc 33 60 06 5a 9a b4 95 54 4f 48 f3 68 3a 7d 8d e0 b6 e7 93 78 0e 77 be 64 b6 d3 23 14 a1 b2 cc ad 36 \
8f af b0 72 85 f3 2b 83 e2 11 6c 35 0e 1d 27 38 c9 b5 c0 c5 f5 6f 41 e9 7d 76 9a ef 9f 6a 46 86 53 26 \
31 82 01 7a 30 82 01 76 02 01 01 30 69 30 54 31 12 30 10 06 03 55 04 03 0c 09 56 53 69 67 20 43 41 20 \
31 31 31 30 2f 06 03 55 04 0a 0c 28 54 45 53 54 20 2d 20 48 61 75 70 74 76 65 72 62 61 6e 64 20 c3 b6 \
73 74 65 72 72 2e 20 53 6f 7a 69 61 6c 76 65 72 73 2e 31 0b 30 09 06 03 55 04 06 13 02 41 54 02 11 31 \
7b af d2 33 e0 31 6f a2 d7 83 3a 7a f8 f9 93 d5 30 09 06 05 2b 0e 03 02 1a 05 00 a0 81 b4 30 23 06 09 \
2a 86 48 86 f7 0d 01 09 04 31 16 04 14 83 eb 53 1b fd 10 f9 17 77 04 41 c7 f5 48 dc d8 41 e7 0f dd 30 \
1c 06 09 2a 86 48 86 f7 0d 01 09 05 31 0f 17 0d 30 36 30 31 31 31 31 35 31 38 32 30 5a 30 18 06 09 2a \
86 48 86 f7 0d 01 09 03 31 0b 06 09 2a 86 48 86 f7 0d 01 07 01 30 28 06 0b 2a 86 48 86 f7 0d 01 09 10 \
02 04 31 19 30 17 0c 0a 74 65 78 74 2f 70 6c 61 69 6e 06 09 2a 86 48 86 f7 0d 01 07 01 30 2b 06 0b 2a \
86 48 86 f7 0d 01 09 10 02 13 31 1c 30 1a 30 18 30 16 04 14 88 ab 4d 53 d5 df 3e 59 08 1d 33 23 3f af \
90 f1 66 88 51 1e 30 0b 06 07 2a 86 48 ce 3d 04 01 05 00 04 37 30 35 02 19 00 ac 2c 31 b1 33 fa 43 f7 \
2e b8 ca 6b af 5a 02 8e 1e b4 53 a2 1f 4a d0 55 02 18 75 0d 25 89 57 2e f2 31 95 0d e3 94 35 c3 31 75 \
4f 0a 31 f6 ab b0 04 02", HEX);

t = new CMSSignedData(encCMS);
assert(t != null);

</pre>
        <h2 id="getSignedContent">getSignedContent()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString[] getSignedContent()</p>
        <h3>Description</h3>
        Return the encapsulated signed content as a ByteString object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Returns the encapsulated signed content</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

referenceData = new ByteString("48 65 6C 6C 6F 20 57 6F 72 6C 64 0D 0A", HEX);
assert(t.getSignedContent().equals(referenceData));
print("Signed content: " + t.getSignedContent());

</pre>
        <h2 id="getSignedDataVersion">getSignedDataVersion()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getSignedDataVersion()</p>
        <h3>Description</h3>
        Return the encoded version number of the signed data object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Returns the encoded version number</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

assert(t.getSignedDataVersion() == 0 || 
	   t.getSignedDataVersion() == 1 ||
	   t.getSignedDataVersion() == 2 ||
	   t.getSignedDataVersion() == 3 ||
	   t.getSignedDataVersion() == 4);

print("Signed data version: " + t.getSignedDataVersion());

</pre>
        <h2 id="getSignedDataDigestAlgorithms">getSignedDataDigestAlgorithms()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString[] getSignedDataDigestAlgorithms()</p>
        <h3>Description</h3>
        Return an array containing the bytestring encoded OIDs of the signed data object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString[]</code>
                </td>
                <td>Array containing the bytestring encoded OIDs</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.USER_DEFINED</td>
                <td>No OID at specified position</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

oids = t.getSignedDataDigestAlgorithms();

assert(oids != null);

print("Number of OIDs: " + oids.length);

for (i = 0; i &lt; oids.length; i++) {
	print("#" + i+ ": " + oids[i].toString(OID));
}


</pre>
        <h2 id="getSignedDataCertificates">getSignedDataCertificates()</h2>
        <h3>Prototype</h3>
        <p class="signature">X509[] getSignedDataCertificates()</p>
        <h3>Description</h3>
        Return an array containing certificates of the signed data object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>Array containing the certificates</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

certs = t.getSignedDataCertificates();

assert(certs != null);

print("Number of certificates: " + certs.length);

for (i = 0; i &lt; certs.length; i++) {
	print("#" + i+ ": " + certs[i].toString());
}

</pre>
        <h2 id="getEContentType">getEContentType()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getEContentType()</p>
        <h3>Description</h3>
        Return a bytestring containing the OID of the econtent
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>ByteString containing the OID</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

eContentType = t.getEContentType();

assert(eContentType != null);
assert(eContentType.toString(OID) == "1.2.840.113549.1.7.1");

print(eContentType.toString(OID));

</pre>
        <h2 id="getNumberOfSigners">getNumberOfSigners()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getNumberOfSigners()</p>
        <h3>Description</h3>
        Return the number of signer and (respectively) the available signer info objects
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Number of signers</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

assert(ns != null);

print("Number of signers: " + ns);
	   
</pre>
        <h2 id="getSignerInfoVersion">getSignerInfoVersion()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getSignerInfoVersion(Number index)</p>
        <h3>Description</h3>
        Return version number of the specified signer info object
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object for which to retrieve the version number</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Signer info version number</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

// Get all available signer info version numbers

for (i = 0; i &lt; ns; i++) {

	siVersion = t.getSignerInfoVersion(i);

	assert(siVersion != null);

	print("Signer info version [" + i + "]: " + siVersion);

	assert(siVersion == 0 || 
		   siVersion == 1 ||
		   siVersion == 2 ||
		   siVersion == 3 ||
		   siVersion == 4);	   
}

try {
	siVersion = t.getSignerInfoVersion(200);
} catch (e) {
	assert(e instanceof GPError);
}

</pre>
        <h2 id="getSignerInfoSIDType">getSignerInfoSIDType()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getSignerInfoSIDType(Number index)</p>
        <h3>Description</h3>
        Determine and return the type used by the SID
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object for which to determine the SID type</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>SID type</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

sidType = t.getNumberOfSigners();

for (i = 0; i &lt; ns; i++) {

	sidType = t.getSignerInfoSIDType(i);

	assert(sidType != null);

	print("SID type [" + i + "]: " + sidType);

}

try {
	sidType = t.getSignerInfoSIDType(200);
} catch (e) {
	assert(e instanceof GPError);
}

</pre>
        <h2 id="isCertificateAvailable">isCertificateAvailable()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean isCertificateAvailable(Number index)</p>
        <h3>Description</h3>
        Verify if the certificate specified by the SID is available
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object that specifies the SID</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>Indicator if certificate is available</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

for (i = 0; i &lt; ns; i++) {

	available = t.isCertificateAvailable(i);

	assert(available != null);

	print("Certificate for SID of signer info [" + i + "]: " + (available == true ? "available" : "not available"));

}

try {
	sidType = t.isCertificateAvailable(200);
} catch (e) {
	assert(e instanceof GPError);
}

</pre>
        <h2 id="getSignerInfoDigestAlgorithm">getSignerInfoDigestAlgorithm()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getSignerInfoDigestAlgorithm()</p>
        <h3>Description</h3>
        Return a bytestring containing the OID of the signer info digest algorithm.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object that specifies the SID</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Array containing the bytestring encoded OIDs</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

for (i = 0; i &lt; ns; i++) {

	oid = t.getSignerInfoDigestAlgorithm(i);
	
	assert(oid != null);

	print("OID digest algorithm [" + i + "]: " + oid.toString(OID));
}

</pre>
        <h2 id="getSignerInfoSignedAttribute">getSignerInfoSignedAttribute()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getSignerInfoSignedAttribute(Number index, Number type)</p>
        <h3>Description</h3>
        Return a bytestring containing the value field of the signed attribute.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object that specifies the SID</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>type</td>
                <td>OID of the signed attribute</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>ByteString containing the value field of the attribute</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

md = t.getSignerInfoSignedAttribute(0, CMSSignedData.ATTR_MESSAGEDIGEST);

assert(md != null);

print("Attribute message digest: " + md.toString());
st = t.getSignerInfoSignedAttribute(0, CMSSignedData.ATTR_SIGNINGTIME);

// No signing time present
assert(st != null);
print("Attribute signing time: " + st.toString(ASCII));

</pre>
        <h2 id="getCertificate">getCertificate()</h2>
        <h3>Prototype</h3>
        <p class="signature">X509 getCertificate(Number index)</p>
        <h3>Description</h3>
        Get the certificate specified by the SID of the signer info element
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object that specifies the SID</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>The specified certificate</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

for (i = 0; i &lt; ns; i++) {

	available = t.isCertificateAvailable(i);

	assert(available != null);

	if (available) {
		
		cert = t.getCertificate(i);
		
		assert(cert != null);
	}
}

try {
	sidType = t.isCertificateAvailable(200);
} catch (e) {
	assert(e instanceof GPError);
}

</pre>
        <h2 id="getSignerInfoSignatureAlgorithm">getSignerInfoSignatureAlgorithm()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getSignerInfoSignatureAlgorithm()</p>
        <h3>Description</h3>
        Return a bytestring containing the OID of the signer info digest algorithm.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object that specifies the SID</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>ByteString containing the OID</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

for (i = 0; i &lt; ns; i++) {

	oid = t.getSignerInfoSignatureAlgorithm(i);
	
	assert(oid != null);

	print("OID digest algorithm [" + i + "]: " + oid.toString(OID));
}

</pre>
        <h2 id="getSignerInfoSignature">getSignerInfoSignature()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getSignerInfoSignature()</p>
        <h3>Description</h3>
        Return a bytestring containing the signature
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object that specifies the SID</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>ByteString containing the signature</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

for (i = 0; i &lt; ns; i++) {

	signature = t.getSignerInfoSignature(i);
	
	assert(signature != null);

	print("Signature [" + i + "]: " + signature.toString());
}

</pre>
        <h2 id="isSignerInfoSignatureValid">isSignerInfoSignatureValid()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean isSignerInfoSignatureValid(Number index)</p>
        <p class="signature">Boolean isSignerInfoSignatureValid(Number index, ByteString encodedCert)</p>
        <p class="signature">Boolean isSignerInfoSignatureValid(Number index, X509 cert)</p>
        <h3>Description</h3>
        Verify if the signature specified by the SID available
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Index of the signer info object that specifies the SID</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>Indicator if signature is valid</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_INDEX</td>
                <td>The specified index of the signer info object is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ENCODING</td>
                <td>The encoding of the provided signer certificate is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.OBJECT_NOT_FOUND</td>
                <td>No suitable signer certificate for verification found within the provided data structure</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new CMSSignedData(encCMS);
assert(t != null);

ns = t.getNumberOfSigners();

assert(ns != null);

for (i = 0; i &lt; ns; i++) {

	valid = t.isSignerInfoSignatureValid(i);

	assert(valid != null);

	print("Signer information signature [" + i + "]: " + (valid == true ? "valid" : "invalid"));
	
	valid = t.isSignerInfoSignatureValid(i, t.getCertificate(i));

	assert(valid != null);

	print("Signer information signature [" + i + "]: " + (valid == true ? "valid" : "invalid"));

	valid = t.isSignerInfoSignatureValid(i, t.getCertificate(i).getBytes());

	assert(valid != null);

	print("Signer information signature [" + i + "]: " + (valid == true ? "valid" : "invalid"));
}

try {
	valid = t.isSignerInfoSignatureValid(200);
} catch (e) {
    assert(e instanceof GPError);
}


/*
 * Read a byte string object from file
 *
 * The filename is mapped to the location of the script
 *
 * name		Name of file
 *
 */
function readFileFromDisk(name) {

	// Map filename
	var filename = GPSystem.mapFilename(name, GPSystem.CWD);
	print("Reading " + filename);

	var file = new java.io.FileInputStream(filename);
	
	var content = new ByteBuffer();
	var buffer = new ByteString("                                                                                                                                                                                                                                                                ", ASCII);
	var len;
	
	while ((len = file.read(buffer)) &gt;= 0) {
		content.append(buffer.bytes(0, len));
	}
	
	file.close();
	return(content.toByteString());
}

// Read certificate from disk
var signerCertificate = readFileFromDisk("dscert.der");

var encCMS = new ByteString("30 82 02 E6 06 09 2A 86 48 86 F7 0D 01 07 02 A0 82 02 D7 30 82 02 D3 02 01 \
03 31 0F 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 30 81 E9 06 06 67 81 08 01 01 01 A0 81 DE 04 81 DB \
30 81 D8 02 01 00 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 30 81 C3 30 25 02 01 01 04 20 51 B6 FC 0E \
F1 94 6F 3A 86 D2 A4 C9 55 7C 5D 8E CF F1 31 13 B4 13 10 89 C5 C4 8B F7 29 1F FD F5 30 25 02 01 02 04 20 \
A9 A1 B0 9D FD 59 80 87 AB 3F CE 4A E2 EC 65 B1 A1 52 5B D2 58 BF C2 7D F4 41 9F 8A 65 E5 47 45 30 25 02 \
01 03 04 20 40 3E 4D 17 C2 6E BC 83 24 11 89 81 61 D8 FD 5D 99 C5 8E E8 65 CB 37 59 B5 29 AA 78 2C 7E DE \
00 30 25 02 01 0E 04 20 A7 79 07 9D 29 BA E6 C9 AD 7A 5E DE 93 9B 50 06 13 99 6C 9E 41 46 E4 6B D6 E5 B1 \
BE A6 19 0F C8 30 25 02 01 04 04 20 5F AB AD 4B F8 67 B3 E4 E6 A8 0F 0F EC 22 A3 76 50 5E A3 FF 48 43 48 \
5B 12 78 C5 90 9F 64 9B 07 31 82 01 CF 30 82 01 CB 02 01 01 30 5A 30 53 31 0B 30 09 06 03 55 04 06 13 02 \
44 45 31 17 30 15 06 03 55 04 0A 0C 0E 48 4A 50 20 43 6F 6E 73 75 6C 74 69 6E 67 31 17 30 15 06 03 55 04 \
0B 0C 0E 43 6F 75 6E 74 72 79 20 53 69 67 6E 65 72 31 12 30 10 06 03 55 04 03 0C 09 48 4A 50 20 50 42 20 \
43 53 02 03 01 60 01 30 0D 06 09 60 86 48 01 65 03 04 02 01 05 00 A0 48 30 15 06 09 2A 86 48 86 F7 0D 01 \
09 03 31 08 06 06 67 81 08 01 01 01 30 2F 06 09 2A 86 48 86 F7 0D 01 09 04 31 22 04 20 16 38 8D 9D DB 7A \
4D 02 C0 68 FC 4B B8 2C 01 31 05 BF CA 06 92 8A 6E 76 2D A2 DB 35 C5 20 24 31 30 0D 06 09 2A 86 48 86 F7 \
0D 01 01 0B 05 00 04 82 01 00 10 DB F9 D0 4B EA 3E 5D E0 F7 5A 2D 78 A6 7D 4F 24 26 F5 E2 E0 DD 4B 38 69 \
80 B4 1E 8E 0F BF D3 83 DB FD DF 29 0A 8E 17 5E B1 99 73 08 C3 95 D5 49 74 FF 28 A6 E4 2E 1D 4D 56 9A 04 \
E3 56 E5 26 C4 B3 0B 5E B9 CB CB 2A DA 58 C9 54 B8 44 D3 AE 8B A3 ED 82 1D AD 50 AC 85 E0 A9 F6 EB E8 D7 \
5F 5D 4E 8E 3A DD 24 BD B0 BE 57 0E 0C 50 38 BF F8 67 6F 32 79 32 3B 10 B6 1C C2 1C 82 F6 EB 5E D8 B2 B4 \
49 05 85 2D 1A 79 D7 7E 0A 49 AB 63 6B E8 2E 79 0C BD 8A 9E 72 73 77 6E 04 5F E5 14 7A 1E 6B E7 9C 47 3E \
A1 F3 3E 7E 68 DC CC E9 61 71 EC ED 90 1E 3C 5F 7C 63 6F BB 9D 64 03 C1 1D B3 A0 00 87 39 7A BB F9 2B D3 \
50 FC 59 50 3D D1 1E 26 77 F2 B0 87 C9 79 75 30 1F C9 5D 4D 95 9F 77 16 3F 3F D0 D4 17 1D AE B0 22 77 16 \
2D 03 A6 A0 28 76 F0 08 1B 78 19 9C 70 5F 89 AD 9A 38 B1 75 06", HEX);

t = new CMSSignedData(encCMS);
assert(t != null);

valid = t.isSignerInfoSignatureValid(0, signerCertificate);

assert(valid != null);

print("Signer information signature [" + i + "]: " + (valid == true ? "valid" : "invalid"));


</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>JsScript - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>JsScript - Reference Documentation</h1>
        <p>
            <p>Class implementing support for compiling and running script fragments</p>
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">JsScript() constructor</a>
            </li>
            <li>
                <a href="#newDynamicScope">newDynamicScope()</a>
            </li>
            <li>
                <a href="#execute">execute()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">JsScript(String filename)</p>
        <p class="signature">JsScript(String filename, Number lineno, String source)</p>
        <h3>Description</h3>
        Compile script.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>filename</td>
                <td>Name of file containing the script</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>lineno</td>
                <td>Starting line number (1 = first line)</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>source</td>
                <td>The source code</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var scriptsource = 'globalvar = 123; var localvar = 456;function f() { return 1};';

var s = new JsScript("sample", 1, scriptsource);


</pre>
        <h2 id="newDynamicScope">newDynamicScope()</h2>
        <h3>Prototype</h3>
        <p class="signature">void newDynamicScope(String constructor)</p>
        <h3>Description</h3>
                    
        <p>Create a new dynamic scope using the given constructor function.</p>
                    
        <p>A dynamic scope inherits all predefined top level functions and properties,
               but is otherwise a clean top level scope. Use this to create a runtime
               environment to execute scripts.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>constructor</td>
                <td>The name of the constructor function for the scope</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>A new dynamic scope derived from the top level scope</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var scope = JsScript.newDynamicScope("Object");

</pre>
        <h2 id="execute">execute()</h2>
        <h3>Prototype</h3>
        <p class="signature">Object execute(Object scope)</p>
        <p class="signature">Object execute(Object scope, String cwd)</p>
        <h3>Description</h3>
                    
        <p>Execute script within the defined scope object.</p>
                    
        <p>The caller may specify a current working directory (cwd) which is used
               when executing the script. If not specified, then the
               current working directory of the calling script is used.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>scope</td>
                <td>The top level scope object for script execution.</td>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>cwd</td>
                <td>The current working directory to use. </td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>The result of evaluating the script, i.e. the last assignment or function return in the code.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

s.execute(scope);

assert(typeof(globalvar) == "undefined");
assert(typeof(scope.globalvar) != "undefined");

var thisdir = GPSystem.mapFilename("", GPSystem.CWD);
var subdir = GPSystem.mapFilename("scriptdir", GPSystem.CWD);

var s = new JsScript(subdir + "/test.js");

// Execute script with current directory of this script
// The script will set the global variable cwd
s.execute(this);
assert(thisdir == cwd);

// Execute script with subdirectory relative to this script
s.execute(this, subdir);
assert(subdir == cwd);

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Task - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Task - Reference Documentation</h1>
        <p>
                    
            <p>The Task host class allows to define and control background tasks in the Smart Card Shell.</p>
                    
            <p>A background task consists of a user object that implements a run() method and an actionListener()
       method to receive user notification. A Task object provides for visualization in the task tab of the
           Smart Card Shell and controls to start and stop the task. It also implements a message queue
           for asynchronously passing messages from other tasks or scripts.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Task() constructor</a>
            </li>
            <li>
                <a href="#start">start()</a>
            </li>
            <li>
                <a href="#stop">stop()</a>
            </li>
            <li>
                <a href="#post">post()</a>
            </li>
            <li>
                <a href="#poll">poll()</a>
            </li>
            <li>
                <a href="#setContextMenu">setContextMenu()</a>
            </li>
            <li>
                <a href="#setToolTip">setToolTip()</a>
            </li>
            <li>
                <a href="#setIcon">setIcon()</a>
            </li>
            <li>
                <a href="#setMessage">setMessage()</a>
            </li>
            <li>
                <a href="#getTaskList">getTaskList()</a>
            </li>
            <li>
                <a href="#dispose">dispose()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>String</td>
                <td>icon</td>
                <td>Name of icon selected with setIcon()</td>
            </tr>
            <tr>
                <td>String</td>
                <td>tooltip</td>
                <td>Tooltip set with setToolTip()</td>
            </tr>
            <tr>
                <td>String[]</td>
                <td>contextMenu</td>
                <td>Context menu set with setContextMenu()</td>
            </tr>
            <tr>
                <td>Object</td>
                <td>userObject</td>
                <td>Object registered as user object in constructor</td>
            </tr>
            <tr>
                <td>String</td>
                <td>status</td>
                <td>Task status, one of created, running, failed, passed</td>
            </tr>
            <tr>
                <td>Boolean</td>
                <td>disposeAtExit</td>
                <td>Property that can be set to dispose the task when it finishes.</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">Task(Object userObject)</p>
        <h3>Description</h3>
                    
        <p>Create a Task object with associated user object. Add task entry in tasks tab.</p>
                    
        <p>A newly created task object can be started using the start() method. It can be stopped with stop() method.</p>
                    
        <p>A call to dispose() will stop the task, clear the queue and remove the task entry from the task list.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>userObject</td>
                <td>The user object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

function TaskTest() {
	this.name = "Task#" + TaskTest.CNT++;
	this.task = new Task(this);
	this.task.setContextMenu([ "Start", "Stop", "Trace", "Post", "Dispose" ]);
	this.task.setToolTip("Tooltip");
}

TaskTest.CNT = 1;


TaskTest.prototype.start = function() {
	this.task.start();
}



TaskTest.prototype.run = function() {
	var i = 10;
	do	{
		print("Hello");
		GPSystem.trace("Trace");
		this.task.setMessage("Running " + i);
		var o = this.task.poll(1000);

		if (o) {
			print("Received " + o);
		}
	} while (i-- &gt; 0);
}


TaskTest.prototype.actionListener = function(source, action) {
	print("Source / Action: " + source + "/" + action);

	switch(action) {
		case "Start":
			this.task.start();
			break;
		case "Stop":
			this.task.stop();
			break;
		case "Trace":
			print(GPSystem.copyTrace());
			break;
		case "Post":
			this.task.post("Message");
			break;
		case "Dispose":
			this.task.dispose();
			break;
	}
}



TaskTest.prototype.toString = function() {
	return this.name;
}


for (var i = 0; i &lt; 20; i++) {
	new TaskTest();
}

</pre>
        <h2 id="start">start()</h2>
        <h3>Prototype</h3>
        <p class="signature">start()</p>
        <h3>Description</h3>
                    
        <p>Start the task by creating a dynamic scope and calling the run() method of the user object.</p>
                    
        <p>Start can be called multiple time, creating subsequent synchronous executions of run().</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

task.start();

</pre>
        <h2 id="stop">stop()</h2>
        <h3>Prototype</h3>
        <p class="signature">stop()</p>
        <h3>Description</h3>
                    
        <p>Stop the task by sending an interupt signal to the running task and clear the queue.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

task.stop();

</pre>
        <h2 id="post">post()</h2>
        <h3>Prototype</h3>
        <p class="signature">post(Object object)</p>
        <h3>Description</h3>
                    
        <p>Post an object to the queue maintained for this task.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>object</td>
                <td>Object to be added to queue.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

task.post("Message");

</pre>
        <h2 id="poll">poll()</h2>
        <h3>Prototype</h3>
        <p class="signature">Object poll(Number timeout)</p>
        <h3>Description</h3>
                    
        <p>Poll for an object from the queue maintained for this task.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>timeout</td>
                <td>Number of milliseconds to wait for object.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>The object retrieved from the queue or null, if no object available within specified time.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var o = task.poll(1);
print(o);

</pre>
        <h2 id="setContextMenu">setContextMenu()</h2>
        <h3>Prototype</h3>
        <p class="signature">setContextMenu(String[] entries)</p>
        <h3>Description</h3>
                    
        <p>Set content of context menu.</p>
                    
        <p>Selected actions trigger an actionLister() method call on the user object.</p>
                    
        <p>A separator can be defined using "---" as entry.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>entries</td>
                <td>Array of context menu entries</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

task.setContextMenu(["add"]);

</pre>
        <h2 id="setToolTip">setToolTip()</h2>
        <h3>Prototype</h3>
        <p class="signature">setToolTip(String toolTipText)</p>
        <p class="signature">setToolTip()</p>
        <h3>Description</h3>
                    
        <p>Set a text to display as tool tip, which is displayed when the mouse is held over the node.</p>
                    
        <p>If no text is defined, the tool tip is removed.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>toolTipText</td>
                <td>Text to display</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

task.setToolTip("Press the right mouse button to see context menu");

</pre>
        <h2 id="setIcon">setIcon()</h2>
        <h3>Prototype</h3>
        <p class="signature">setIcon(String iconName)</p>
        <p class="signature">setIcon()</p>
        <h3>Description</h3>
                    
        <p>Change the icon of the node to the named icon or reset to the default.</p>
                    
        <p>The name of the icon is mapped to the file name &lt;iconName&gt;.png and
               located in the icons directory directly underneath the installation directory.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>iconName</td>
                <td>Name of icon</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

task.setIcon("selected");

</pre>
        <h2 id="setMessage">setMessage()</h2>
        <h3>Prototype</h3>
        <p class="signature">setMessage(String message)</p>
        <h3>Description</h3>
                    
        <p>Change the message of the node to the given string.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>message</td>
                <td>Message for node</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

task.setMessage("Changed label");

</pre>
        <h2 id="getTaskList">getTaskList()</h2>
        <h3>Prototype</h3>
        <p class="signature">Task[] Task.getTaskList()</p>
        <h3>Description</h3>
                    
        <p>Return the list of currently defined tasks</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Task[]</code>
                </td>
                <td>The list of tasks.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

</pre>
        <h2 id="dispose">dispose()</h2>
        <h3>Prototype</h3>
        <p class="signature">dispose()</p>
        <h3>Description</h3>
                    
        <p>Stop task, clear queue and remove from task list.</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

GPSystem.wait(1000);
task.dispose();

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Crypto - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Crypto - Reference Documentation</h1>
        <p>Implements access to cryptographic services.</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Crypto() constructor</a>
            </li>
            <li>
                <a href="#encrypt">encrypt()</a>
            </li>
            <li>
                <a href="#decrypt">decrypt()</a>
            </li>
            <li>
                <a href="#sign">sign()</a>
            </li>
            <li>
                <a href="#verify">verify()</a>
            </li>
            <li>
                <a href="#deriveKey">deriveKey()</a>
            </li>
            <li>
                <a href="#digest">digest()</a>
            </li>
            <li>
                <a href="#generateKeyPair">generateKeyPair()</a>
            </li>
            <li>
                <a href="#generateRandom">generateRandom()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA</td>
                <td>RSA algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_ISO9796_2</td>
                <td>RSA algorithm in ISO-9796-2 variant</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_PKCS1</td>
                <td>RSA Encryption with PKCS#1 V1.5 padding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_OAEP</td>
                <td>RSA Encryption with OAEP padding using SHA-1 and MGF1</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_OAEP_SHA224</td>
                <td>RSA Encryption with OAEP padding using SHA-224 and MGF1</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_OAEP_SHA256</td>
                <td>RSA Encryption with OAEP padding using SHA-256 and MGF1</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_OAEP_SHA384</td>
                <td>RSA Encryption with OAEP padding using SHA-384 and MGF1</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_OAEP_SHA512</td>
                <td>RSA Encryption with OAEP padding using SHA-512 and MGF1</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_SHA1</td>
                <td>SHA-1 with RSA signature algorithm and PKCS#1 V1.5 encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_SHA224</td>
                <td>SHA-224 with RSA signature algorithm and PKCS#1 V1.5 encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_SHA256</td>
                <td>SHA-256 with RSA signature algorithm and PKCS#1 V1.5 encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_SHA384</td>
                <td>SHA-384 with RSA signature algorithm and PKCS#1 V1.5 encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_SHA512</td>
                <td>SHA-512 with RSA signature algorithm and PKCS#1 V1.5 encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_PSS_SHA1</td>
                <td>SHA-1 with RSA signature algorithm and PKCS#1 V1.5 encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_PSS_SHA224</td>
                <td>SHA-224 with RSA signature algorithm and PSS encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_PSS_SHA256</td>
                <td>SHA-256 with RSA signature algorithm and PSS encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_PSS_SHA384</td>
                <td>SHA-384 with RSA signature algorithm and PSS encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>RSA_PSS_SHA512</td>
                <td>SHA-512 with RSA signature algorithm and PSS encoding</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>EC</td>
                <td>Elliptic curve key operation</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDSA</td>
                <td>Elliptic curve digital signature algorithm without hash</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDSA_SHA1</td>
                <td>Elliptic curve digital signature algorithm using SHA-1</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDSA_SHA224</td>
                <td>Elliptic curve digital signature algorithm using SHA-224</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDSA_SHA256</td>
                <td>Elliptic curve digital signature algorithm using SHA-256</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDSA_SHA384</td>
                <td>Elliptic curve digital signature algorithm using SHA-384</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDSA_SHA512</td>
                <td>Elliptic curve digital signature algorithm using SHA-512</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDH</td>
                <td>Elliptic curve Diffie-hellman algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDHC</td>
                <td>Elliptic curve Diffie-hellman algorithm with cofactor</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECDHP</td>
                <td>Elliptic curve Diffie-hellman algorithm returning x and y coordinate of shared point</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>EC_MULTIPLY_ADD</td>
                <td>Elliptic curve point multiplication and addition</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>EC_MULTIPLY_SUB</td>
                <td>Elliptic curve point multiplication and substraction</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ECELGAMAL</td>
                <td>ElGamal Decryption</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_CBC</td>
                <td>Cipher Block Chaining encryption using DES</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_ECB</td>
                <td>Electronic Cook Book encryption using DES</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AES_CBC</td>
                <td>Cipher Block Chaining encryption using AES</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AES_ECB</td>
                <td>Electronic Cook Book encryption using AES</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AES_CTR</td>
                <td>Segmented Integer Counter (CTR) encryption using AES</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>AES_CMAC</td>
                <td>Message Authentication Code (MAC) acccording to NIST Special Publication 800-38B</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>MD5</td>
                <td>MD5 message digest algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SHA_1</td>
                <td>SHA-1 message digest algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SHA_224</td>
                <td>SHA-224 message digest algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SHA_256</td>
                <td>SHA-256 message digest algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SHA_384</td>
                <td>SHA-384 message digest algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SHA_512</td>
                <td>SHA-512 message digest algorithm</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_MAC</td>
                <td>Message authentication code using 3DES for each block</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_MAC_EMV</td>
                <td>Message authentication code using DES for each block and 3DES for final block (Retail MAC)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_CBC_LP</td>
                <td>Variant of DES_CBC encryption used for wrap operations (Length || Key || ISOPadding)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_CBC_P</td>
                <td>Variant of DES_CBC encryption used for wrap operations (Key || ISOPadding)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_ECB_LP</td>
                <td>Variant of DES_ECB encryption used for wrap operations (Length || Key || ISOPadding)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES_ECB_P</td>
                <td>Variant of DES_ECB encryption used for wrap operations (Key || ISOPadding)</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ISO9797_METHOD_1</td>
                <td>Padding method according to ISO 9797 with 8 byte block size</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ISO9797_METHOD_2</td>
                <td>Padding method according to ISO 9797 with 8 byte block size</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ISO9797_METHOD_1_16</td>
                <td>Padding method according to ISO 9797 with 16 byte block size</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>ISO9797_METHOD_2_16</td>
                <td>Padding method according to ISO 9797 with 16 byte block size</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES</td>
                <td>Constant to denote a single length (56 bit) DES key in generateKey()</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES2</td>
                <td>Constant to denote a double length (112 bit) DES key in generateKey()</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DES3</td>
                <td>Constant to denote a double length (168 bit) DES key in generateKey()</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>HMAC_SHA1</td>
                <td>Constant to denote a Hashmac using SHA-1</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>HMAC_SHA256</td>
                <td>Constant to denote a Hashmac using SHA-256</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>HMAC_SHA384</td>
                <td>Constant to denote a Hashmac using SHA-256</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>HMAC_SHAMD5</td>
                <td>Constant to denote a Hashmac using MD5</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">Crypto()</p>
        <p class="signature">Crypto(String provider)</p>
        <p class="signature">Crypto(String provider, String password)</p>
        <h3>Description</h3>
        Create a crypto object and bind it to the given cryptographic service provider.
                     If no provider is defined, then the default provider "BC" will be used.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>provider</td>
                <td>Name of cryptographic service provider (JCE Provider)</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>password</td>
                <td>Password to activated provider</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

crypto = new Crypto();
assert(crypto != null);

crypto = new Crypto("BC");
assert(crypto != null);


</pre>
        <h2 id="encrypt">encrypt()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString encrypt(Key key, Number mech, ByteString data)</p>
        <p class="signature">ByteString encrypt(Key key, Number mech, ByteString data, ByteString iv)</p>
        <h3>Description</h3>
                    
        <p>Encrypt the plain data using the algorithm defined by mech and the specified key.</p>
                    
        <p>The Crypto.RSA mechanism performs a plain RSA encrypt operation with no encoding format.</p>
                    
        <p>The Crypto.RSA_ISO9796_2 mechanism performs a plain RSA encrypt operation with no encoding format
               but according to ISO 9697-2. The result is less than half of the modulus.</p>
                    
        <p>The Crypto.PKCS1 mechanism performs a plain RSA encrypt operation with PKCS1 V1.5 encoding format.</p>
                    
        <p>The Crypto.OAEP_XXX mechanism performs a plain RSA encrypt operation with
               PKCS1 V2.1 OEAP encoding format using the selected message digest algorithm.</p>
                    
        <p>If the algorithm requires an initialisation vector, then the additional
               argument iv must be specified (DES_CBC, AES_CBC or AES_CTR).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>Key object representing the key</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>mech</td>
                <td>Algorithm to be used to decryption. Must be one of
                                         Crypto.DES_CBC, Crypto.DES_ECB, Crypto.AES_CBC, Crypto.AES_ECB,
                                         Crypto.AES_ECB or Crypto.RSA.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data to be encrypted</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Returns the plain text value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The mechanism is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Instantiate crypto service
var crypto = new Crypto();

// Define 3 different single DES key values
var key1 = new ByteString("7CA110454A1A6E57", HEX);
var key2 = new ByteString("0131D9619DC1376E", HEX);
var key3 = new ByteString("9DC1376E0131D961", HEX);

var plain = new ByteString("01A1D6D039776742", HEX);
var cipher;
var result;

// Create three single DES keys, a double DES key and a triple DES key
var deskey1 = new Key();
deskey1.setComponent(Key.DES, key1);

var deskey2 = new Key();
deskey2.setComponent(Key.DES, key2);

var deskey3 = new Key();
deskey3.setComponent(Key.DES, key3);

var des2key = new Key();
des2key.setComponent(Key.DES, key1.concat(key2));

var des3key = new Key();
des3key.setComponent(Key.DES, key1.concat(key2).concat(key3));


// Single DES ECB encrypt
cipher = new ByteString("690F5B0D9A26939B", HEX);

result = crypto.encrypt(deskey1, Crypto.DES_ECB, plain);
assert(result.equals(cipher));


// Single DES ECB decrypt
result = crypto.decrypt(deskey1, Crypto.DES_ECB, cipher);
assert(result.equals(plain));


// Double DES ECB encrypt
cipher = plain;
cipher = crypto.encrypt(deskey1, Crypto.DES_ECB, cipher);
cipher = crypto.decrypt(deskey2, Crypto.DES_ECB, cipher);
cipher = crypto.encrypt(deskey1, Crypto.DES_ECB, cipher);

result = crypto.encrypt(des2key, Crypto.DES_ECB, plain);
assert(result.equals(cipher));


// Double DES ECB decrypt
result = crypto.decrypt(des2key, Crypto.DES_ECB, cipher);
assert(result.equals(plain));


// Triple DES ECB encrypt
cipher = plain;
cipher = crypto.encrypt(deskey1, Crypto.DES_ECB, cipher);
cipher = crypto.decrypt(deskey2, Crypto.DES_ECB, cipher);
cipher = crypto.encrypt(deskey3, Crypto.DES_ECB, cipher);

result = crypto.encrypt(des3key, Crypto.DES_ECB, plain);
assert(result.equals(cipher));


// Triple DES ECB decrypt
result = crypto.decrypt(des3key, Crypto.DES_ECB, cipher);
assert(result.equals(plain));


// Single DES CBC encrypt
var plain = new ByteString("01A1D6D0397767423977674201A1D6D0", HEX);
var iv = new ByteString("59D9839733B8455D", HEX);
var v;

v = plain.bytes(0, 8);
v = v.xor(iv);
v = crypto.encrypt(deskey1, Crypto.DES_ECB, v);
cipher = v;

v = plain.bytes(8, 8);
v = cipher.xor(v);
v = crypto.encrypt(deskey1, Crypto.DES_ECB, v);
cipher = cipher.concat(v);

result = crypto.encrypt(deskey1, Crypto.DES_CBC, plain, iv);
assert(result.equals(cipher));


// Single DES CBC decrypt
result = crypto.decrypt(deskey1, Crypto.DES_CBC, cipher, iv);
assert(result.equals(plain));


// Encrypt and decrypt with AES key

var key = new Key();

// Make key a 128 bit AES key
key.setComponent(Key.AES, new ByteString("000102030405060708090a0b0c0d0e0f", HEX));
var plain = new ByteString("00112233445566778899aabbccddeeff", HEX);
var cipher = new ByteString("69c4e0d86a7b0430d8cdb78070b4c55a", HEX);

var result = crypto.encrypt(key, Crypto.AES_ECB, plain);
assert(cipher.equals(result));

var result = crypto.decrypt(key, Crypto.AES_ECB, cipher);
assert(plain.equals(result));


// Make key a 192 bit AES key
key.setComponent(Key.AES, new ByteString(
            "000102030405060708090a0b0c0d0e0f1011121314151617", HEX));
var plain = new ByteString("00112233445566778899aabbccddeeff", HEX);
var cipher = new ByteString("dda97ca4864cdfe06eaf70a0ec0d7191", HEX);
var result = crypto.encrypt(key, Crypto.AES_ECB, plain);
assert(cipher.equals(result));

var result = crypto.decrypt(key, Crypto.AES_ECB, cipher);
assert(plain.equals(result));


// Make key a 256 bit AES key
key.setComponent(Key.AES, new ByteString(
            "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f", HEX));
var plain = new ByteString("00112233445566778899aabbccddeeff", HEX);
var cipher = new ByteString("8ea2b7ca516745bfeafc49904b496089", HEX);
var result = crypto.encrypt(key, Crypto.AES_ECB, plain);
assert(cipher.equals(result));

var result = crypto.decrypt(key, Crypto.AES_ECB, cipher);
assert(plain.equals(result));


// AES CTR mode
key.setComponent(Key.AES, new ByteString("2b7e151628aed2a6abf7158809cf4f3c", HEX));
var plain = new ByteString("6bc1bee22e409f96e93d7e117393172a", HEX);
var cipher = new ByteString("874d6191b620e3261bef6864990db6ce", HEX);
var iv = new ByteString("F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF", HEX);

var result = crypto.encrypt(key, Crypto.AES_CTR, plain, iv);
assert(cipher.equals(result));

var result = crypto.decrypt(key, Crypto.AES_CTR, cipher, iv);
assert(plain.equals(result));

// Decrypt and encrypt as basically the same in CTR mode
var result = crypto.encrypt(key, Crypto.AES_CTR, cipher, iv);
assert(plain.equals(result));


// RSA encrypt with plain input block

// Make RSA private key from modulus and private exponent

var rsaprkey = new Key();
rsaprkey.setType(Key.PRIVATE);

rsaprkey.setComponent(Key.MODULUS, new ByteString(
            "b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9" +
            "900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX));
rsaprkey.setComponent(Key.EXPONENT, new ByteString(
            "9f66f6b05410cd503b2709e88115d55daced94d1a34d4e32bf824d0dde6028ae" +
            "79c5f07b580f5dce240d7111f7ddb130a7945cd7d957d1920994da389f490c89", HEX));

// Make RSA public key from modulus and public exponent

var rsapukey = new Key();
rsapukey.setType(Key.PUBLIC);
rsapukey.setComponent(Key.MODULUS, new ByteString(
            "b4a7e46170574f16a97082b22be58b6a2a629798419be12872a4bdba626cfae9"+
            "900f76abfb12139dce5de56564fab2b6543165a040c606887420e33d91ed7ed7", HEX));
rsapukey.setComponent(Key.EXPONENT, new ByteString("11", HEX));


var inp = new ByteString(
            "2600000000000000000000000000000000000000000000000000000000000000" +
            "0000000000000000000000000000000000000000000000000000000000000000", HEX);
assert(inp.length == 64);

var cipher = crypto.encrypt(rsaprkey, Crypto.RSA, inp);

print(cipher);

var plain = crypto.decrypt(rsapukey, Crypto.RSA, cipher);

print(plain);
assert(plain.equals(inp));


// RSA encrypt with OAEP padding

var inp = new ByteString("Message", ASCII);

var cipher = crypto.encrypt(rsapukey, Crypto.RSA_OAEP, inp);

print(cipher);

var plain = crypto.decrypt(rsaprkey, Crypto.RSA, cipher);

print("Decrypted OAEP block:");
print(plain);

assert(plain.byteAt(0) == 0);

var plain = crypto.decrypt(rsaprkey, Crypto.RSA_OAEP, cipher);
assert(plain.equals(inp));


//RSA encrypt with PKCS#1 V1.5 padding

var inp = new ByteString("Message", ASCII);

var cipher = crypto.encrypt(rsapukey, Crypto.RSA_PKCS1, inp);

print(cipher);

var plain = crypto.decrypt(rsaprkey, Crypto.RSA, cipher);

print("Decrypted PKCS#1 V1.5 block:");
print(plain);

assert(plain.byteAt(0) == 0);
assert(plain.byteAt(1) == 2);

var plain = crypto.decrypt(rsaprkey, Crypto.RSA_PKCS1, cipher);
assert(plain.equals(inp));


// Encrypt and decrypt with RSA primitive using ISO 9796-2 (DINSIG) variant that
// ensures that the numeric value of the output message is less than half of the
// modulus
var inp = new ByteString(
            "260000000000000000000000000000000000000000000000000000000000000" +
            "000000000000000000000000000000000000000000000000000000000000000BC", HEX);
assert(inp.length == 64);

var cipher = crypto.encrypt(rsaprkey, Crypto.RSA_ISO9796_2, inp);

print(cipher);

var plain = crypto.decrypt(rsapukey, Crypto.RSA_ISO9796_2, cipher);
assert(plain.equals(inp));


// Make RSA private key from CRT components stored in key profile

var rsaprkey = new Key("profiles/kp_rsa_private_crt.xml");

// Make RSA public key from modulus and public exponent stored in key profile

var rsapukey = new Key("profiles/kp_rsa_public.xml");

var inp = new ByteString(
            "2600000000000000000000000000000000000000000000000000000000000000" +
            "0000000000000000000000000000000000000000000000000000000000000000", HEX);
assert(inp.length == 64);

var cipher = crypto.encrypt(rsaprkey, Crypto.RSA, inp);

print(cipher);

var plain = crypto.decrypt(rsapukey, Crypto.RSA, cipher);

print(plain);
assert(plain.equals(inp));

</pre>
        <h2 id="decrypt">decrypt()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString decrypt(Key key, Number mech, ByteString data)</p>
        <p class="signature">ByteString decrypt(Key key, Number mech, ByteString data, ByteString iv)</p>
        <h3>Description</h3>
                     
        <p>Decrypt the cipher in data using the algorithm defined by mech and the specified key.
                If the algorithm requires an initialisation vector, then the additional
                argument iv must be specified (DES_CBC, AES_CBC or AES_CTR).</p>
                    
        <p>The Crypto.RSA mechanism performs a plain RSA decrypt operation with no encoding format.</p>
                    
        <p>The Crypto.RSA_ISO9796_2 mechanism performs a plain RSA decrypt operation with no encoding format
               but according to ISO 9697-2.</p>
                    
        <p>The Crypto.PKCS1 mechanism performs a RSA decrypt operation with PKCS1 V1.5 encoding format.</p>
                    
        <p>The Crypto.OAEP_XXX mechanism performs a RSA decrypt operation with
               PKCS1 V2.1 OEAP encoding format using the selected message digest algorithm and MGF1.</p>
        			
        <p>This method can also be used to perform an ECDH or an ECDHC with cofactor primitive
                using a private EC key. The method treats the data as x and y coordinate of the
                EC public key from the sending party.</p>
        			
        <p>The Crypto.ECDH method return as result the x coordinate of the multiplication of the private key
                value d with the public point Q (result = xof(d * q))</p>
        			
        <p>The Crypto.ECDHC method returns as result the x coordinate of the multiplication of the private key
                value d with the cofactor h and the public point Q (result = xof(d * h * q)). The
                cofactor is a parameter of the curve.</p>
        			
        <p>The Crypto.ECDHP method returns as result the concatenation of the x and y coordinate
                of the multiplication of the private key value d with the public point Q (result = d * h * q).
                This method is a non-standard variant, only available with the default BouncyCastle crypto provider.</p>
        			
        <p>The ECDH decryption is a basic building block for cipher operations based on ECC.
                The result of the decrypt operation is a common secret, which can be either used
                directly as secret key or used as input to a key derivation process.</p>
        			
        <p>The Crypto.ECELGAMAL mechanism performs an ElGamal decrypt operation.
                The cryptogram is an ASN1 sequence containing the EC Points for blinding and cipher.
                 Each point is encoded as public key sequence.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>Key object representing the key</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>mech</td>
                <td>Algorithm to be used to decryption. Must be one of
                                         Crypto.DES_CBC, Crypto.DES_ECB, Crypto.AES_CBC,
                                         Crypto.AES_ECB, Crypto.AES_CTR, Crypto.RSA,
                                         Crypto.ECDH, Crypto.ECDHC, Crypto.ECDHP or Crypto.ECELGAMAL.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The cryptogram</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Returns the plain text value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The data or initial vector provided is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The mechanism is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// See encrypt() for a complete example using DES and RSA

// ECDH Generating a shared secret between Bob and Alice to exchange protected messages

var pubKeyBob = new Key();
pubKeyBob.setType(Key.PUBLIC);
pubKeyBob.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.1.1", OID));

var priKeyBob = new Key();
priKeyBob.setType(Key.PRIVATE);
priKeyBob.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.1.1", OID));
crypto.generateKeyPair(Crypto.EC, pubKeyBob, priKeyBob);

var pubKeyAlice = new Key();
pubKeyAlice.setType(Key.PUBLIC);
pubKeyAlice.setComponent(Key.ECC_CURVE_OID,
                                    new ByteString("1.2.840.10045.3.1.1", OID));

var priKeyAlice = new Key();
priKeyAlice.setType(Key.PRIVATE);
priKeyAlice.setComponent(Key.ECC_CURVE_OID,
                                    new ByteString("1.2.840.10045.3.1.1", OID));
crypto.generateKeyPair(Crypto.EC, pubKeyAlice, priKeyAlice);

var inputBob = pubKeyBob.getComponent(Key.ECC_QX).concat(
                                    pubKeyBob.getComponent(Key.ECC_QY));
var inputAlice = pubKeyAlice.getComponent(Key.ECC_QX).concat(
                                    pubKeyAlice.getComponent(Key.ECC_QY));


var secretAlice = crypto.decrypt(priKeyAlice, Crypto.ECDH, inputBob);
print(secretAlice);

var secretBob = crypto.decrypt(priKeyBob, Crypto.ECDH, inputAlice);
print(secretBob);

assert(secretBob.equals(secretAlice));


var secretAlice = crypto.decrypt(priKeyAlice, Crypto.ECDHC, inputBob);
print(secretAlice);

var secretBob = crypto.decrypt(priKeyBob, Crypto.ECDHC, inputAlice);
print(secretBob);

assert(secretBob.equals(secretAlice));


var secretAlice = crypto.decrypt(priKeyAlice, Crypto.ECDHP, inputBob);
print(secretAlice);

var secretBob = crypto.decrypt(priKeyBob, Crypto.ECDHP, inputAlice);
print(secretBob);

assert(secretBob.equals(secretAlice));

// ElGamal decryption

// Create dummy EC Points representing the ELGamal ciphertext pair of blinding and cipher

var blindingPoint = new Key();
blindingPoint.setType(Key.PUBLIC);
blindingPoint.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP320r1", OID));

var cipherPoint = new Key();
cipherPoint.setType(Key.PUBLIC);
cipherPoint.setComponent(Key.ECC_CURVE_OID, new ByteString("brainpoolP320r1", OID));

var priKey = new Key();
priKey.setType(Key.PRIVATE);

var crypto = new Crypto();
crypto.generateKeyPair(Crypto.EC, blindingPoint, priKey);
crypto.generateKeyPair(Crypto.EC, cipherPoint, priKey);

// Encode ciphertext pair

var blinding = new ByteString("04", HEX);
blinding = blinding.concat(blindingPoint.getComponent(Key.ECC_QX));
blinding = blinding.concat(blindingPoint.getComponent(Key.ECC_QY));

cipher = new ByteString("04", HEX);
cipher = cipher.concat(cipherPoint.getComponent(Key.ECC_QX));
cipher = cipher.concat(cipherPoint.getComponent(Key.ECC_QY));

var seq = new ASN1(ASN1.SEQUENCE);

var pubSeq = new ASN1(0x7F49);
pubSeq.add(new ASN1(0x06, new ByteString("brainpoolP320r1", OID)));
pubSeq.add(new ASN1(0x86, blinding));
seq.add(pubSeq);

var pubSeq = new ASN1(0x7F49);
pubSeq.add(new ASN1(0x06, new ByteString("brainpoolP320r1", OID)));
pubSeq.add(new ASN1(0x86, cipher));
seq.add(pubSeq);

// ElGamal decryption

var c = new Crypto();
var resp = c.decrypt(priKey, Crypto.ECELGAMAL, seq.getBytes());

print(new ASN1(resp));

</pre>
        <h2 id="sign">sign()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sign(Key key, Number mech, ByteString data)</p>
        <p class="signature">ByteString sign(Key key, Number mech, ByteString data, ByteString iv)</p>
        <h3>Description</h3>
                    
        <p>Sign the data provided using the mechanism and key specified. If the
               algorithms requires an initialisation vector, then it can be provided
               in the iv argument.</p>
                    
        <p>When the Crypto.RSA argument is supplied, then RSA with SHA-1 and PKCS#1 V1.5 encoding is used as
               signature algorithm. Crypto.RSA has the same effect as Crypto.RSA_SHA1.</p>
                    
        <p>When the Crypto.ECDSA argument is supplied, then ECDSA without a hash is used, i.e. the
               hash value must be provided as input.</p>
                    
        <p>A signature created using ECDSA is encoded in an ASN1 SEQUENCE object containing an
               INTEGER object r and s. See RFC3279 for details.</p>
                    
        <p>A method to convert a TLV encoded ECDSA signature into a binary concatenation
               of the x and y coordinate is provided in the tools/eccutils.js script.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>Key reference object to be used for signature generation</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mech</td>
                <td>Signature algorithm to be used. Must be one of Crypto.DES_MAC,
                                            Crypto.DES_MAC_EMV, Crypto.AES_MAC, Crypto.AES_CMAC, Crypto.RSA* or Crypto.ECDSA*.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Input data for signature computation</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>iv</td>
                <td>Initialisation vector for symmetric algorithm</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Signature value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The mechanism is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Instantiate crypto service
var crypto = new Crypto();


// Define 3 different single DES key values
var key1 = new ByteString("7CA110454A1A6E57", HEX);
var key2 = new ByteString("0131D9619DC1376E", HEX);
var key3 = new ByteString("9DC1376E0131D961", HEX);

var plain = new ByteString("Hello World !!!!", ASCII);
var cipher;
var result;


// Create three single DES keys, a double DES key and a triple DES key
var deskey1 = new Key();
deskey1.setComponent(Key.DES, key1);

var deskey2 = new Key();
deskey2.setComponent(Key.DES, key2);

var deskey3 = new Key();
deskey3.setComponent(Key.DES, key3);

var des2key = new Key();
des2key.setComponent(Key.DES, key1.concat(key2));

var des3key = new Key();
des3key.setComponent(Key.DES, key1.concat(key2).concat(key3));


// Triple DES MAC
cipher = crypto.encrypt(des3key, Crypto.DES_ECB, plain.bytes(0, 8));
cipher = cipher.xor(plain.bytes(8, 8));
cipher = crypto.encrypt(des3key, Crypto.DES_ECB, cipher);

result = crypto.sign(des3key, Crypto.DES_MAC, plain);
assert(result.equals(cipher));


// Triple DES MAC according to EMV (aka Retail MAC)
cipher = crypto.encrypt(deskey1, Crypto.DES_ECB, plain.bytes(0, 8));
cipher = cipher.xor(plain.bytes(8, 8));
cipher = crypto.encrypt(deskey1, Crypto.DES_ECB, cipher);
cipher = crypto.decrypt(deskey2, Crypto.DES_ECB, cipher);
cipher = crypto.encrypt(deskey1, Crypto.DES_ECB, cipher);

result = crypto.sign(des2key, Crypto.DES_MAC_EMV, plain);
assert(result.equals(cipher));


// AES MAC
// Make key a 128 bit AES key
var key = new Key();
key.setComponent(Key.AES, new ByteString("000102030405060708090a0b0c0d0e0f", HEX));
var plain = new ByteString("01234567890123456789012345678901", ASCII);
var cipher = crypto.encrypt(key, Crypto.AES_ECB, plain.bytes(0, 16));
cipher = cipher.xor(plain.bytes(16, 16));
var cipher = crypto.encrypt(key, Crypto.AES_ECB, cipher);

result = crypto.sign(key, Crypto.AES_MAC, plain);
assert(result.equals(cipher));


//AES CMAC
//Make key a 128 bit AES key
var key = new Key();
key.setComponent(Key.AES, new ByteString("2b7e151628aed2a6abf7158809cf4f3c", HEX));
var plain = new ByteString("6bc1bee22e409f96e93d7e117393172aae2d8a571" +
                           "e03ac9c9eb76fac45af8e5130c81c46a35ce411", HEX);
var mac = crypto.sign(key, Crypto.AES_CMAC, plain);
var ref = new ByteString("dfa66747de9ae63030ca32611497c827", HEX);
assert(ref.equals(mac));


// RSA with SHA-1
var rsaprkey = new Key("profiles/kp_rsa_private_crt.xml");
var rsapukey = new Key("profiles/kp_rsa_public.xml");

var message = new ByteString("Hello World !", ASCII);

var signature = crypto.sign(rsaprkey, Crypto.RSA, message);

print("Plain PKCS#1 V1.5 = " + crypto.decrypt(rsapukey, Crypto.RSA, signature));
assert(crypto.verify(rsapukey, Crypto.RSA, message, signature));

// RSA with SHA-224

var signature = crypto.sign(rsaprkey, Crypto.RSA_SHA224, message);

print("Plain PKCS#1 V1.5 = " + crypto.decrypt(rsapukey, Crypto.RSA, signature));
assert(crypto.verify(rsapukey, Crypto.RSA_SHA224, message, signature));

// RSA with SHA-256

var signature = crypto.sign(rsaprkey, Crypto.RSA_SHA256, message);

print("Plain PKCS#1 V1.5 = " + crypto.decrypt(rsapukey, Crypto.RSA, signature));
assert(crypto.verify(rsapukey, Crypto.RSA_SHA256, message, signature));

//RSA with SHA-1 and PSS

var signature = crypto.sign(rsaprkey, Crypto.RSA_PSS_SHA1, message);

print("Plain PSS = " + crypto.decrypt(rsapukey, Crypto.RSA, signature));
assert(crypto.verify(rsapukey, Crypto.RSA_PSS_SHA1, message, signature));


//Create empty public key object and set size
var rsapukey = new Key();
rsapukey.setType(Key.PUBLIC);
rsapukey.setSize(1024);

// Create empty private key object and set size
var rsaprkey = new Key();
rsaprkey.setType(Key.PRIVATE);

// Generate key pair
crypto.generateKeyPair(Crypto.RSA, rsapukey, rsaprkey);

//RSA with SHA-256 and PSS

var signature = crypto.sign(rsaprkey, Crypto.RSA_PSS_SHA256, message);

print("Plain PSS = " + crypto.decrypt(rsapukey, Crypto.RSA, signature));
assert(crypto.verify(rsapukey, Crypto.RSA_PSS_SHA256, message, signature));


// ECDSA Fp with SHA-1
var eccprkey = new Key("profiles/kp_ec_private.xml");
var eccpukey = new Key("profiles/kp_ec_public.xml");

var message = new ByteString("Hello World !", ASCII);

var signature = crypto.sign(eccprkey, Crypto.ECDSA_SHA1, message);

assert(crypto.verify(eccpukey, Crypto.ECDSA_SHA1, message, signature));


/*
// ECDSA F2m with SHA-1
var eccprkey = new Key("profiles/kp_ec_f2m_private.xml");
var eccpukey = new Key("profiles/kp_ec_f2m_public.xml");

var message = new ByteString("Hello World !", ASCII);

var signature = crypto.sign(eccprkey, Crypto.ECDSA_SHA1, message);

assert(crypto.verify(eccpukey, Crypto.ECDSA_SHA1, message, signature));
*/
// see Crypto.generateKeyPair for longer ECC keys


// HMAC
var msg = new ByteString("The quick brown fox jumps over the lazy dog", ASCII);
var key = new Key();
key.setComponent(Key.GENERIC, new ByteString("key", ASCII));

assert(crypto.sign(key, Crypto.HMAC_SHA1, msg).equals(new ByteString("de7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9", HEX)));
assert(crypto.sign(key, Crypto.HMAC_SHA256, msg).equals(new ByteString("f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8", HEX)));
assert(crypto.sign(key, Crypto.HMAC_SHA384, msg).equals(new ByteString("D7F4727E2C0B39AE0F1E40CC96F60242D5B7801841CEA6FC592C5D3E1AE50700582A96CF35E1E554995FE4E03381C237", HEX)));
assert(crypto.sign(key, Crypto.HMAC_MD5, msg).equals(new ByteString("80070713463e7749b90c2dc24911e275", HEX)));

</pre>
        <h2 id="verify">verify()</h2>
        <h3>Prototype</h3>
        <p class="signature">Boolean verify(Key key, Number mech, ByteString data, ByteString signature)</p>
        <p class="signature">Boolean verify(Key key, Number mech, ByteString data, ByteString signature, ByteString iv)</p>
        <h3>Description</h3>
                    
        <p>Verify the signature applied to data with the mechanism and key specified</p>
                    
        <p>For ECDSA the signature must be TLV encoded as defined in RFC3279.</p>
                    
        <p>A method to convert a ECDSA signature encoded as binary concatenation
               of the x and y coordinate into the TLV format is provided in the tools/eccutils.js script.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>key</td>
                <td>Key reference object to be used for signature verificaton</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mech</td>
                <td>Verification algorithm to be used. Must be one of Crypto.DES_MAC,
                                            Crypto.DES_MAC_EMV, Crypto.AES_MAC, Crypto.RSA* or Crypto.ECDSA*.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Input data for signature computation</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>signature</td>
                <td>Signature to be verified</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>iv</td>
                <td>Initialisation vector for symmetric algorithm</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>True, if the signature was valid, false otherwise</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The mechanism is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Instantiate crypto service
var crypto = new Crypto();

// Define 3 different single DES key values
var key1 = new ByteString("7CA110454A1A6E57", HEX);
var key2 = new ByteString("0131D9619DC1376E", HEX);
var key3 = new ByteString("9DC1376E0131D961", HEX);

var plain = new ByteString("Hello World !!!!", ASCII);
var cipher;
var result;

// Create three single DES keys, a double DES key and a triple DES key
var des1key = new Key();
des1key.setComponent(Key.DES, key1);

var des2key = new Key();
des2key.setComponent(Key.DES, key1.concat(key2));

var des3key = new Key();
des3key.setComponent(Key.DES, key1.concat(key2).concat(key3));

// Single DES MAC
result = crypto.sign(des1key, Crypto.DES_MAC, plain);
var ok = crypto.verify(des1key, Crypto.DES_MAC, plain, result);
assert(ok);

// Triple DES MAC
result = crypto.sign(des3key, Crypto.DES_MAC, plain);
var ok = crypto.verify(des3key, Crypto.DES_MAC, plain, result);
assert(ok);

// Triple DES MAC according to EMV (aka Retail MAC)
result = crypto.sign(des2key, Crypto.DES_MAC_EMV, plain);
var ok = crypto.verify(des2key, Crypto.DES_MAC_EMV, plain, result);
assert(ok);


// AES MAC
// Make key a 128 bit AES key
var key = new Key();
key.setComponent(Key.AES, new ByteString("000102030405060708090a0b0c0d0e0f", HEX));
var plain = new ByteString("01234567890123456789012345678901", ASCII);

result = crypto.sign(key, Crypto.AES_MAC, plain);
var ok = crypto.verify(key, Crypto.AES_MAC, plain, result);
assert(ok);


//AES CMAC
//Make key a 128 bit AES key
var key = new Key();
key.setComponent(Key.AES, new ByteString("000102030405060708090a0b0c0d0e0f", HEX));
var plain = new ByteString("01234567890123456789012345678901", ASCII);

result = crypto.sign(key, Crypto.AES_CMAC, plain);
var ok = crypto.verify(key, Crypto.AES_CMAC, plain, result);
assert(ok);


// RSA

var cert = new X509("root.cer");
var ncert = cert.getNative();

var message = ncert.getTBSCertificate();
var signature = ncert.getSignature();
var key = cert.getPublicKey();

assert(crypto.verify(key, Crypto.RSA, message, signature));


// ECDSA

var cert = new X509("ecdsacert.cer");
var key = cert.getPublicKey();

var message = new ByteString("Hello World", ASCII);

// Be carefull if the most significant bit of r or s is 1. In that case you need
// to add a 00 to prevent interpretation as negative integer
var r = new ByteString("06CF31FCE556DC74F7B0B3061E47300CC11B3F5BFD01976A", HEX);
var s = new ByteString("33F8D70EF472EEC8489CAA705837FA5F0156BF70CFD371FD", HEX);

var signature = new ASN1(ASN1.SEQUENCE);
signature.add(new ASN1(ASN1.INTEGER, r));
signature.add(new ASN1(ASN1.INTEGER, s));

assert(crypto.verify(key, Crypto.ECDSA_SHA1, message, signature.getBytes()));


</pre>
        <h2 id="deriveKey">deriveKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">void deriveKey (Key masterKey, Number mech, ByteString data, Key derivedKey)</p>
        <h3>Description</h3>
                    
        <p>Derive key from a master key using the mechanism specified and data for diversification.</p>
                    
        <p>The resulting DES key is parity adjusted, so that the number of 1 bits in each byte
               of the key value is odd.</p>
                    
        <p>This method can be used to calculate a public key (point) by multiplying the point with a skalar
               value and adding a second point (EC_MULTIPLY_ADD). This method is used in the PACE protocol to determine
               a temporary generator point using the formular G' = s * G + P. The variant EC_MULTIPLY_ADD performs a substration
               instead of an addition.</p>
                    
        <p>The parameter G is the point from the masterKey, the point P is provided by the public key value in derivedKey and
               the skalar value s is provided in the argument data. The result is stored as public key value in derivedKey.</p>
                    
        <p>If the public point P is undefined, then only the skalar multiplication is performed. If the argument data
               is null, then only the point addition is performed.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>masterKey</td>
                <td>Master key to use for derivation algorithm</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mech</td>
                <td>Derivation algorithm. Must be Crypto.DES_CBC or Crypto.DES_ECB.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Derivation data. The length of the derivation data determines the length
                        of the resulting key (8/16 or 24 Bytes). For method EC_MULTIPLY_ADD the argument
                        determines the skalar value. If data is null, then the skalar multiplication is skipped and
                        only the point addition is performed.</td>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>derivedKey</td>
                <td>The key object to store the resulting key value.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>None</code>
                </td>
                <td>The method does not return data</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Instantiate crypto service
var crypto = new Crypto();

// Create a single DES key, a double DES key and a triple DES key
var des1key = new Key("profiles/kp_single_des_1.xml");
var des2key = new Key("profiles/kp_double_des.xml");
var des3key = new Key("profiles/kp_triple_des.xml");

// Define derivation parameter
var dpara8  = new ByteString("0102030405060708", HEX);
var dpara16 = new ByteString("01020304050607081020304050607080", HEX);
var dpara24 = new ByteString("010203040506070810203040506070801122334455667788", HEX);

var derivedKey = new Key();
var reference;

// Derive a single DES key
crypto.deriveKey(des1key, Crypto.DES_ECB, dpara8, derivedKey);
reference = crypto.encrypt(des1key, Crypto.DES_ECB, dpara8);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a double DES key
crypto.deriveKey(des1key, Crypto.DES_ECB, dpara16, derivedKey);
reference = crypto.encrypt(des1key, Crypto.DES_ECB, dpara16);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a triple DES key
crypto.deriveKey(des1key, Crypto.DES_ECB, dpara24, derivedKey);
reference = crypto.encrypt(des1key, Crypto.DES_ECB, dpara24);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a single DES key
crypto.deriveKey(des2key, Crypto.DES_ECB, dpara8, derivedKey);
reference = crypto.encrypt(des2key, Crypto.DES_ECB, dpara8);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a double DES key
crypto.deriveKey(des2key, Crypto.DES_ECB, dpara16, derivedKey);
reference = crypto.encrypt(des2key, Crypto.DES_ECB, dpara16);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a triple DES key
crypto.deriveKey(des2key, Crypto.DES_ECB, dpara24, derivedKey);
reference = crypto.encrypt(des2key, Crypto.DES_ECB, dpara24);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a single DES key
crypto.deriveKey(des3key, Crypto.DES_ECB, dpara8, derivedKey);
reference = crypto.encrypt(des3key, Crypto.DES_ECB, dpara8);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a double DES key
crypto.deriveKey(des3key, Crypto.DES_ECB, dpara16, derivedKey);
reference = crypto.encrypt(des3key, Crypto.DES_ECB, dpara16);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a triple DES key
crypto.deriveKey(des3key, Crypto.DES_ECB, dpara24, derivedKey);
reference = crypto.encrypt(des3key, Crypto.DES_ECB, dpara24);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));


var iv = new ByteString("0000000000000000", HEX);

// Derive a single DES key
crypto.deriveKey(des1key, Crypto.DES_CBC, dpara8, derivedKey);
reference = crypto.encrypt(des1key, Crypto.DES_CBC, dpara8, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a double DES key
crypto.deriveKey(des1key, Crypto.DES_CBC, dpara16, derivedKey);
reference = crypto.encrypt(des1key, Crypto.DES_CBC, dpara16, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a triple DES key
crypto.deriveKey(des1key, Crypto.DES_CBC, dpara24, derivedKey);
reference = crypto.encrypt(des1key, Crypto.DES_CBC, dpara24, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a single DES key
crypto.deriveKey(des2key, Crypto.DES_CBC, dpara8, derivedKey);
reference = crypto.encrypt(des2key, Crypto.DES_CBC, dpara8, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a double DES key
crypto.deriveKey(des2key, Crypto.DES_CBC, dpara16, derivedKey);
reference = crypto.encrypt(des2key, Crypto.DES_CBC, dpara16, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a triple DES key
crypto.deriveKey(des2key, Crypto.DES_CBC, dpara24, derivedKey);
reference = crypto.encrypt(des2key, Crypto.DES_CBC, dpara24, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a single DES key
crypto.deriveKey(des3key, Crypto.DES_CBC, dpara8, derivedKey);
reference = crypto.encrypt(des3key, Crypto.DES_CBC, dpara8, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a double DES key
crypto.deriveKey(des3key, Crypto.DES_CBC, dpara16, derivedKey);
reference = crypto.encrypt(des3key, Crypto.DES_CBC, dpara16, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Derive a triple DES key
crypto.deriveKey(des3key, Crypto.DES_CBC, dpara24, derivedKey);
reference = crypto.encrypt(des3key, Crypto.DES_CBC, dpara24, iv);
assert(keyequals(derivedKey.getComponent(Key.DES), reference));

// Calculate a new point by multiplying G with skalar s and adding P.
// This method is used to implement PACE as defined by the
// Extended Access Control 2.x specification

var P = new Key();
P.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.36.3.3.2.8.1.1.5", OID));
P.setComponent(Key.ECC_QX, new ByteString(
            "A99D861875FDCAF2406B6CE4423C1FE2EB4396A8636CF039C723DDEE", HEX));
P.setComponent(Key.ECC_QY, new ByteString(
            "634A17EA9EC0DC8611EF51CDF46E8247C64A2B9F8ECFCE53B690ADC0", HEX));

var G = new Key();
G.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.36.3.3.2.8.1.1.5", OID));
G.setComponent(Key.ECC_QX, P.getComponent(Key.ECC_GX));
G.setComponent(Key.ECC_QY, P.getComponent(Key.ECC_GY));

var s = new ByteString("3924D2D1E31CE13C", HEX);

// Calculate G' = s * G + P
crypto.deriveKey(G, Crypto.EC_MULTIPLY_ADD, s, P);

// This method does not change the generator point directly, but the public key point
// in the derived key. For PACE the public key point ECC_QX/Y must be copied
// to ECC_GX/Y !
assert(P.getComponent(Key.ECC_QX).toString(HEX) ==
            "992042B9D17CBDFA5915EAE4292E62A3F6582071622371F47C2C717E");
assert(P.getComponent(Key.ECC_QY).toString(HEX) ==
            "16FC907BD3D87C7F45F56533DE33909A3A1D1E25487615284BC741E7");


var G1 = new Key();
G1.setType(Key.PUBLIC);
G1.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.36.3.3.2.8.1.1.5", OID));

var G = new Key();
G.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.36.3.3.2.8.1.1.5", OID));
G.setComponent(Key.ECC_QX, P.getComponent(Key.ECC_GX));
G.setComponent(Key.ECC_QY, P.getComponent(Key.ECC_GY));

var s = new ByteString("3924D2D1E31CE13C", HEX);

// Calculate G'' = s * G
crypto.deriveKey(G, Crypto.EC_MULTIPLY_ADD, s, G1);

var P = new Key();
P.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.36.3.3.2.8.1.1.5", OID));
P.setComponent(Key.ECC_QX, new ByteString(
            "A99D861875FDCAF2406B6CE4423C1FE2EB4396A8636CF039C723DDEE", HEX));
P.setComponent(Key.ECC_QY, new ByteString(
            "634A17EA9EC0DC8611EF51CDF46E8247C64A2B9F8ECFCE53B690ADC0", HEX));

//Calculate G'' = G'' + P
crypto.deriveKey(G1, Crypto.EC_MULTIPLY_ADD, null, P);

assert(P.getComponent(Key.ECC_QX).toString(HEX) ==
            "992042B9D17CBDFA5915EAE4292E62A3F6582071622371F47C2C717E");
assert(P.getComponent(Key.ECC_QY).toString(HEX) ==
            "16FC907BD3D87C7F45F56533DE33909A3A1D1E25487615284BC741E7");

</pre>
        <h2 id="digest">digest()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString digest(Number mech, ByteString data, Number iterations)</p>
        <h3>Description</h3>
        Calculate message digest for data using hash algorithm specified in argument mech.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mech</td>
                <td>Digest algorithm. Must be either Crypto.SHA_x or Crypto.MD5.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Message to process</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>iterations</td>
                <td>Optional parameter defining the number of iterations to perform with the previous result as input for the next round (Default 1). This is an extension to the GP specification.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Message digest for given data</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The mechanism is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var message = new ByteString("Hello World", ASCII);
var hash = crypto.digest(Crypto.SHA_1, message);
print("SHA1: " + hash);
var hash = crypto.digest(Crypto.MD5, message);
print("MD5: " + hash);


var message = new ByteString("", HEX);
var ref = new ByteString("da39a3ee5e6b4b0d3255bfef95601890afd80709", HEX);
var hash = crypto.digest(Crypto.SHA_1, message);
assert(ref.equals(hash));

var message = new ByteString("61", HEX);
var ref = new ByteString("86f7e437faa5a7fce15d1ddcb9eaeaea377667b8", HEX);
var hash = crypto.digest(Crypto.SHA_1, message);
assert(ref.equals(hash));

var message = new ByteString("616263", HEX);
var ref = new ByteString("a9993e364706816aba3e25717850c26c9cd0d89d", HEX);
var hash = crypto.digest(Crypto.SHA_1, message);
assert(ref.equals(hash));

var message = new ByteString(
            "6162636465666768696a6b6c6d6e6f707172737475767778797a", HEX);
var ref = new ByteString("32d10c7b8cf96570ca04ce37f2a19d84240d3a89", HEX);
var hash = crypto.digest(Crypto.SHA_1, message);
assert(ref.equals(hash));

var message = new ByteString("616263", HEX);
var ref = new ByteString(
            "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7", HEX);
var hash = crypto.digest(Crypto.SHA_224, message);
assert(ref.equals(hash));

var message = new ByteString("616263", HEX);
var ref = new ByteString(
            "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", HEX);
var hash = crypto.digest(Crypto.SHA_256, message);
assert(ref.equals(hash));

var message = new ByteString("616263", HEX);
var ref = new ByteString(
            "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded163" +
            "1a8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7", HEX);
var hash = crypto.digest(Crypto.SHA_384, message);
assert(ref.equals(hash));

var message = new ByteString("616263", HEX);
var ref = new ByteString(
            "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" +
            "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", HEX);
var hash = crypto.digest(Crypto.SHA_512, message);
assert(ref.equals(hash));



var message = new ByteString("", HEX);
var ref = new ByteString("d41d8cd98f00b204e9800998ecf8427e", HEX);
var hash = crypto.digest(Crypto.MD5, message);
assert(ref.equals(hash));

var message = new ByteString("61", HEX);
var ref = new ByteString("0cc175b9c0f1b6a831c399e269772661", HEX);
var hash = crypto.digest(Crypto.MD5, message);
assert(ref.equals(hash));

var message = new ByteString("616263", HEX);
var ref = new ByteString("900150983cd24fb0d6963f7d28e17f72", HEX);
var hash = crypto.digest(Crypto.MD5, message);
assert(ref.equals(hash));

var message = new ByteString(
            "6162636465666768696a6b6c6d6e6f707172737475767778797a", HEX);
var ref = new ByteString("c3fcd3d76192e4007dfb496cca67e13b", HEX);
var hash = crypto.digest(Crypto.MD5, message);
assert(ref.equals(hash));

</pre>
        <h2 id="generateKeyPair">generateKeyPair()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void generateKeyPair(Number mech, Key pubKey, Key priKey)</p>
        <h3>Description</h3>
                    
        <p>Generate an asymmetric key pair according to the specification from the
               public key object.</p>
                    
        <p>For RSA key, the key size must be defined using the Key.setSize() method.</p>
                    
        <p>For EC keys, the curve parameter must be set using the setComponent() method.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>mech</td>
                <td>Type of key pair, must be either Crypto.RSA or Crypto.EC.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>The type of key is invalid</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// RSA Example - Generate a 1024 bit RSA key pair

// Create empty public key object and set size
var pubKey = new Key();
pubKey.setType(Key.PUBLIC);
pubKey.setSize(1024);

// Create empty private key object and set size
var priKey = new Key();
priKey.setType(Key.PRIVATE);

// Generate key pair
crypto.generateKeyPair(Crypto.RSA, pubKey, priKey);

// Extract key components...
var modulus = pubKey.getComponent(Key.MODULUS);
print("RSA Modulus:");
print(modulus);

var publicexponent = pubKey.getComponent(Key.EXPONENT);
print("RSA Public Exponent:");
print(publicexponent);

print("CRT prime P");
var crt_p = priKey.getComponent(Key.CRT_P);
print(crt_p);

print("CRT prime Q");
var crt_q = priKey.getComponent(Key.CRT_Q);
print(crt_q);

print("CRT prime exponent P");
var crt_dp = priKey.getComponent(Key.CRT_DP1);
print(crt_dp);

print("CRT prime exponent Q");
var crt_dq = priKey.getComponent(Key.CRT_DQ1);
print(crt_dq);

print("CRT coefficient pq");
var crt_pq = priKey.getComponent(Key.CRT_PQ);
print(crt_pq);

// ... and reassemble in newly created key
var pubKey = new Key();
pubKey.setType(Key.PUBLIC);
pubKey.setComponent(Key.MODULUS, modulus);
pubKey.setComponent(Key.EXPONENT, publicexponent);

var priKey = new Key();
priKey.setType(Key.PRIVATE);
priKey.setComponent(Key.CRT_P, crt_p);
priKey.setComponent(Key.CRT_Q, crt_q);
priKey.setComponent(Key.CRT_DP1, crt_dp);
priKey.setComponent(Key.CRT_DQ1, crt_dq);
priKey.setComponent(Key.CRT_PQ, crt_pq);

// Verify that keys still work
var message = new ByteString("Hello World", ASCII);

var cryptogram = crypto.sign(priKey, Crypto.RSA, message);

assert(crypto.verify(pubKey, Crypto.RSA, message, cryptogram));

// ECC Example - Generate a 192 bit key pair over the prime192v1 curve

// Create empty public key object
var pubKey = new Key();
pubKey.setType(Key.PUBLIC);

// Select prime192v1 curve using it's object identifier
pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.1.1", OID));

// Print out the curve parameter selected
print("Curve Fp:");
print(pubKey.getComponent(Key.ECC_P));
print("Curve A:");
print(pubKey.getComponent(Key.ECC_A));
print("Curve B:");
print(pubKey.getComponent(Key.ECC_B));
print("Parameter Gx:");
print(pubKey.getComponent(Key.ECC_GX));
print("Parameter Gy:");
print(pubKey.getComponent(Key.ECC_GY));
print("Parameter N:");
print(pubKey.getComponent(Key.ECC_N));
print("Parameter H:");
print(pubKey.getComponent(Key.ECC_H));

// Create empty private key object
var priKey = new Key();
priKey.setType(Key.PRIVATE);

// Generate key pair
crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

// Extract and print private and public key values
print("Public Key Qx:");
var qx = pubKey.getComponent(Key.ECC_QX);
assert(qx.length == 24);
print(qx.toString(HEX));
var qy = pubKey.getComponent(Key.ECC_QY);
assert(qy.length == 24);
print("Public Key Qy:");
print(qy.toString(HEX));
var d = priKey.getComponent(Key.ECC_D);
print("Private Key D:");
print(d.toString(HEX));

// Reassemble keys
var pubKey = new Key();
pubKey.setType(Key.PUBLIC);
pubKey.setComponent(Key.ECC_QX, qx);
pubKey.setComponent(Key.ECC_QY, qy);
pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.1.1", OID));

var priKey = new Key();
priKey.setComponent(Key.ECC_D, d);
priKey.setComponent(Key.ECC_CURVE_OID, new ByteString("1.2.840.10045.3.1.1", OID));

// Test keys to verify integrity
var message = new ByteString("Hello World", ASCII);

var cryptogram = crypto.sign(priKey, Crypto.ECDSA_SHA1, message);

assert(crypto.verify(pubKey, Crypto.ECDSA_SHA1, message, cryptogram));


// ECC Example - Generate a 571 bit key pair over the secp521r1 curve

// Create empty public key object
var pubKey = new Key();
pubKey.setType(Key.PUBLIC);

// Select secp521r1 curve using it's object identifier
pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.132.0.35", OID));

// Print out the curve parameter selected
print("Curve P:");
print(pubKey.getComponent(Key.ECC_P));
print("Curve A:");
print(pubKey.getComponent(Key.ECC_A));
print("Curve B:");
print(pubKey.getComponent(Key.ECC_B));
print("Parameter Gx:");
print(pubKey.getComponent(Key.ECC_GX));
print("Parameter Gy:");
print(pubKey.getComponent(Key.ECC_GY));
print("Parameter N:");
print(pubKey.getComponent(Key.ECC_N));
print("Parameter H:");
print(pubKey.getComponent(Key.ECC_H));

// Create empty private key object
var priKey = new Key();
priKey.setType(Key.PRIVATE);

// Generate key pair
crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

// Extract and print private and public key values
print("Public Key Qx:");
var qx = pubKey.getComponent(Key.ECC_QX);
assert(qx.length == 66);
print(qx.toString(HEX));
var qy = pubKey.getComponent(Key.ECC_QY);
assert(qy.length == 66);
print("Public Key Qy:");
print(qy.toString(HEX));
var d = priKey.getComponent(Key.ECC_D);
print("Private Key D:");
print(d.toString(HEX));

// Reassemble keys
var pubKey = new Key();
pubKey.setType(Key.PUBLIC);
pubKey.setComponent(Key.ECC_QX, qx);
pubKey.setComponent(Key.ECC_QY, qy);
pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.132.0.35", OID));

var priKey = new Key();
priKey.setComponent(Key.ECC_D, d);
priKey.setComponent(Key.ECC_CURVE_OID, new ByteString("1.3.132.0.35", OID));

// Test keys to verify integrity
var message = new ByteString("Hello World", ASCII);

var cryptogram = crypto.sign(priKey, Crypto.ECDSA_SHA512, message);

assert(crypto.verify(pubKey, Crypto.ECDSA_SHA512, message, cryptogram));


var pubKey = new Key();
pubKey.setType(Key.PUBLIC);
// Select secp224k1 curve using it's object identifier
pubKey.setComponent(Key.ECC_CURVE_OID, new ByteString("secp224k1", OID));

print("Curve P:");
print(pubKey.getComponent(Key.ECC_P));
print("Curve A:");
print(pubKey.getComponent(Key.ECC_A));
print("Curve B:");
print(pubKey.getComponent(Key.ECC_B));
print("Parameter Gx:");
print(pubKey.getComponent(Key.ECC_GX));
print("Parameter Gy:");
print(pubKey.getComponent(Key.ECC_GY));
print("Parameter N:");
print(pubKey.getComponent(Key.ECC_N));
print("Parameter H:");
print(pubKey.getComponent(Key.ECC_H));

// Create empty private key object
var priKey = new Key();
priKey.setType(Key.PRIVATE);

// Generate key pair
crypto.generateKeyPair(Crypto.EC, pubKey, priKey);

// Test keys to verify integrity
var message = new ByteString("Hello World", ASCII);

var cryptogram = crypto.sign(priKey, Crypto.ECDSA_SHA224, message);

assert(crypto.verify(pubKey, Crypto.ECDSA_SHA224, message, cryptogram));

</pre>
        <h2 id="generateRandom">generateRandom()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString generateRandom(Number length)</p>
        <h3>Description</h3>
        Generate a ByteString of given length with random data
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>length</td>
                <td>Number of random bytes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Returns length bytes of random data</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var val1 = crypto.generateRandom(10);
assert(val1.length == 10);

var val2 = crypto.generateRandom(10);
assert(val2.length == 10);

assert(val1 != val2);

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>ApplicationFactory - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>ApplicationFactory - Reference Documentation</h1>
        <p>
                    
            <p>Repository for application and key profiles, as well as factory to create
           instances of Application, GPApplication or GPSecurityDomain objects,
           which resemble the execution environment for Global Platform Scripts.
        </p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">ApplicationFactory() constructor</a>
            </li>
            <li>
                <a href="#addKeyProfile">addKeyProfile()</a>
            </li>
            <li>
                <a href="#addApplicationProfile">addApplicationProfile()</a>
            </li>
            <li>
                <a href="#getApplicationInstance">getApplicationInstance()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">ApplicationFactory(Crypto crypto)</p>
        <p class="signature">ApplicationFactory(Crypto crypto, Function scope)</p>
        <h3>Description</h3>
                    
        <p>Create an instance of the ApplicationFactory.</p>
                    
        <p>The application factory is used as a repository of application and
               key profiles. It can create instances of the Application, GPApplication and
               GPSecurityDomain objects using the getApplicationInstance() method.</p>
                    
        <p>If used in a module, then the argument scope allows to pass a function
               from the module scope. Script fragments in the application profile
               will have the same module scope as the function.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Crypto</code>
                </td>
                <td>crypto</td>
                <td>Crypto object to be associated with applications</td>
            </tr>
            <tr>
                <td>
                    <code>Function</code>
                </td>
                <td>scope</td>
                <td>A function in the module scope in which application profile script shall be created</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var crypto = new Crypto();

var af = new ApplicationFactory(crypto);
assert(af != null);

</pre>
        <h2 id="addKeyProfile">addKeyProfile()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void addKeyProfile(String profileName)</p>
        <h3>Description</h3>
                                    
        <p>Deserialize the key profile stored in the file specified by profileName and store
               it under the UniqueId in an internal repository.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>profileName</td>
                <td>Name of key profile. Will be mapped to a physical file by the runtime environment.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

af.addKeyProfile("profiles/kp_single_des_1.xml");
af.addKeyProfile("profiles/kp_double_des.xml");
af.addKeyProfile("profiles/kp_triple_des.xml");

</pre>
        <h2 id="addApplicationProfile">addApplicationProfile()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void addApplicationProfile(String profileName)</p>
        <h3>Description</h3>
                                    
        <p>Deserialize the application profile stored in the file specified by profileName and store
               it under the UniqueId in an internal repository.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>profileName</td>
                <td>Name of application profile. Will be mapped to a physical file by the runtime environment.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

af.addApplicationProfile("profiles/ap_test.xml");

</pre>
        <h2 id="getApplicationInstance">getApplicationInstance()</h2>
        <h3>Prototype</h3>
        <p class="signature">Application getApplicationInstance(Object dataMapper, ByteString aid, ByteString uniqueId)</p>
        <p class="signature">Application getApplicationInstance(Object dataMapper, ByteString aid, Card card)</p>
        <p class="signature">Application getApplicationInstance(Object dataMapper, ByteString aid, Card card, ByteString uniqueId)</p>
        <h3>Description</h3>
                              
        <p>Create and initialize an Application, GPApplication or GPSecurityDomain object based on the
             the definition in the XML profile.</p>
                              
        <p>The dataMapper object is used to read and write data element from an external source.
             The object must provide a get(name, fixed, length) function that returns a ByteString
             object. The arguments name, fixed and length are initialized from the respective fields
             in the application profile. The dataMapper will be associated with the application instance.</p>
                              
        <p>The aid is used to initialize the aid property of the Application objects. It is
             furthermore used to locate an application instance if a card object is provided as
             argument.</p>
                              
        <p>The optional card argument can be used to define the card property of the Application
             object. If a card object is defined, then the list of application instances in the
             card profile can be used to locate the appropriate application profile in the application
             factory.</p>
                              
        <p>The optional uniqueId can be used to identify an application profile previously
             registered in the application factory. If the uniqueId is not given as argument, then
             it is determined from the list of application instances in the card profile.</p>
                              
        <p>Use the run() method to execute scripts defined in the application profile.</p>
                              
        <p/>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>dataMapper</td>
                <td>Object to provide mapping of data element from an external
                     source to data element accessible from within scripts</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>aid</td>
                <td>Application identifier for instance</td>
            </tr>
            <tr>
                <td>
                    <code>Card</code>
                </td>
                <td>card</td>
                <td>Card object to be used for instance or null</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>uniqueId</td>
                <td>UniqueID of application profile to be used</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Application</code>
                </td>
                <td>The method returns an Application object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var card = new Card(_scsh3.reader);
var aid = new ByteString("A0000002471001", HEX);
var id = new ByteString("2B0601040181C31F0000", HEX);

// Simple data mapper that returns the name of the data element as value
var dataMapper = new Object();
dataMapper.get = function(name, fixed, length, encoding) {
    return new ByteString("DE " + name + " Fixed=" + fixed + " Length=" + length +
    " Encoding=" + encoding, ASCII); };
dataMapper.put = function(name, value, encoding) {
    print("DE " + name + " Value=" + value.toString(encoding) +
    " Encoding=" + encoding); };

var appl = af.getApplicationInstance(dataMapper, aid, card, id);

appl.run("Hello World Test");

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>CMSGenerator - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>CMSGenerator - Reference Documentation</h1>
        <p>Class for CMS generation according to RFC 3852</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">CMSGenerator() constructor</a>
            </li>
            <li>
                <a href="#setDataContent">setDataContent()</a>
            </li>
            <li>
                <a href="#addSigner">addSigner()</a>
            </li>
            <li>
                <a href="#addCertificate">addCertificate()</a>
            </li>
            <li>
                <a href="#addRecipient">addRecipient()</a>
            </li>
            <li>
                <a href="#generate">generate()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>TYPE_SIGNED_DATA</td>
                <td>Indicator for signed data content</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>TYPE_ENVELOPED_DATA</td>
                <td>Indictator for enveloped data</td>
            </tr>
            <tr>
                <td>String</td>
                <td>TYPE_DIGESTED_DATA</td>
                <td>Indicator for digested data</td>
            </tr>
            <tr>
                <td>String</td>
                <td>TYPE_ENCRYPTED_DATA</td>
                <td>Indicator for encrypted data</td>
            </tr>
            <tr>
                <td>String</td>
                <td>TYPE_AUTHENTICATED_DATA</td>
                <td>Indicator for authenticated data</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">CMSGenerator(Number type)</p>
        <h3>Description</h3>
                    
        <p>Create a CMS generator object for the specified type</p>
                    
        <p>Note: The current implementation only supports signed data and enveloped data</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>type</td>
                <td>Type of CMS object that should be generated</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.GPError.INVALID_TYPE</td>
                <td>Argument type is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_DATA</td>
                <td>Argument contains no valid encoded CMS signed data object</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

try {
	var gen = new CMSGenerator(CMSGenerator.TYPE_ENVELOPED_DATA);
} catch (e) {
	assert(e instanceof GPError);
}

try {
	var gen = new CMSGenerator(CMSGenerator.TYPE_DIGESTED_DATA);
} catch (e) {
	assert(e instanceof GPError);
}

try {
	var gen = new CMSGenerator(CMSGenerator.TYPE_ENCRYPTED_DATA);
} catch (e) {
	assert(e instanceof GPError);
}

try {
	var gen = new CMSGenerator(CMSGenerator.TYPE_AUTHENTICATED_DATA);
} catch (e) {
	assert(e instanceof GPError);
}

var gen = new CMSGenerator(CMSGenerator.TYPE_SIGNED_DATA);
assert(gen != null);

var edGen = new CMSGenerator(CMSGenerator.TYPE_ENVELOPED_DATA);
assert(edGen != null);

</pre>
        <h2 id="setDataContent">setDataContent()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setDataContent(ByteString data)</p>
        <h3>Description</h3>
        Set the data content of the CMS object.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>Data content</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many or missing arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var content = new ByteString("Hello World!", ASCII);
gen.setDataContent(content);
edGen.setDataContent(content);

</pre>
        <h2 id="addSigner">addSigner()</h2>
        <h3>Prototype</h3>
        <p class="signature">void addSigner(Key privateKey, X509 certificate, String signingAlgorithm)</p>
        <p class="signature">void addSigner(Key privateKey, X509 certificate, String signingAlgorithm, includeSignerInCMS)</p>
        <p class="signature">void addSigner(Key privateKey, ByteString keyIdentifier, String signingAlgorithm)</p>
        <h3>Description</h3>
                    
        <p>Add a signer key for the object.</p>
                    
        <p>Starting with 3.15, the API has changed, replacing the ByteString digestOID with String signingAlgorithm.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>privateKey</td>
                <td>Private key of the signer</td>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>certificate</td>
                <td>Certificate of the signer</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>keyIdentifier</td>
                <td>The signer key identifier</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>signingAlgorithm</td>
                <td>Java algorithm name for hashing and signing (e.g. "SHA256withRSA")</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>includeSignerInCMS</td>
                <td>Include signer certificate</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many or missing arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var crypto = new Crypto();

// Generate an asymmetric key pair and a certificate for A
print("Generating generating key pair and X509 certificate for Signer A...\n");

var privKeyA = new Key();
privKeyA.setType(Key.PRIVATE);

var pubKeyA = new Key();
pubKeyA.setType(Key.PUBLIC);
pubKeyA.setSize(2048);

crypto.generateKeyPair(Crypto.RSA, pubKeyA, privKeyA);

var x = new X509CertificateGenerator(crypto);

x.reset();
x.setSerialNumber(new ByteString("01", HEX));
x.setSignatureAlgorithm(Crypto.RSA);
var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
x.setIssuer(issuer);
x.setNotBefore("060825120000Z");
x.setNotAfter("260825120000Z");
var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Signer #A" };
x.setSubject(subject);
x.setPublicKey(pubKeyA);
x.addKeyUsageExtension(	X509CertificateGenerator.digitalSignature |
							X509CertificateGenerator.keyCertSign |
							X509CertificateGenerator.cRLSign );

x.addBasicConstraintsExtension(true, 0);
x.addSubjectKeyIdentifierExtension();
x.addAuthorityKeyIdentifierExtension(pubKeyA);

var certA = x.generateX509Certificate(privKeyA);

var keyid = certA.getNative().getExtensionValue("2.5.29.14").bytes(4);

gen.addCertificate(certA);

gen.addSigner(privKeyA, certA, "SHA256withRSA");

gen.addSigner(privKeyA, keyid, "SHA256withRSA");

</pre>
        <h2 id="addCertificate">addCertificate()</h2>
        <h3>Prototype</h3>
        <p class="signature">void addCertificate(X509 certificate)</p>
        <h3>Description</h3>
        Add a certificate to the CMS object.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>certificate</td>
                <td>Certificate of the signer or associated CA</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many or missing arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// see addSigner() for Signed Data example

</pre>
        <h2 id="addRecipient">addRecipient()</h2>
        <h3>Prototype</h3>
        <p class="signature">void addRecipient(X509 certificate)</p>
        <h3>Description</h3>
        Add a recipient to the CMS object.
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>X509</code>
                </td>
                <td>certificate</td>
                <td>Certificate of the recipient</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many or missing arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>
print("Generating generating key pair and X509 certificate for Recipient B...\n");

var privKeyB = new Key();
privKeyB.setType(Key.PRIVATE);

var pubKeyB = new Key();
pubKeyB.setType(Key.PUBLIC);
pubKeyB.setSize(2048);

crypto.generateKeyPair(Crypto.RSA, pubKeyB, privKeyB);

var x = new X509CertificateGenerator(crypto);

x.reset();
x.setSerialNumber(new ByteString("01", HEX));
x.setSignatureAlgorithm(Crypto.RSA);
var issuer = { C:"UT", O:"ACME Corporation", CN:"Test-CA" };
x.setIssuer(issuer);
x.setNotBefore("060825120000Z");
x.setNotAfter("260825120000Z");
var subject = { C:"UT", O:"Utopia CA", OU:"ACME Corporation", CN:"Recipient #B" };
x.setSubject(subject);
x.setPublicKey(pubKeyB);
x.addKeyUsageExtension(	X509CertificateGenerator.digitalSignature |
							X509CertificateGenerator.keyCertSign |
							X509CertificateGenerator.dataEncipherment |
							X509CertificateGenerator.cRLSign );

x.addBasicConstraintsExtension(true, 0);
x.addSubjectKeyIdentifierExtension();
x.addAuthorityKeyIdentifierExtension(pubKeyB);

var certB = x.generateX509Certificate(privKeyB);

edGen.addRecipient(certA);
edGen.addRecipient(certB);

</pre>
        <h2 id="generate">generate()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString generate()</p>
        <p class="signature">ByteString generate(ByteString contentOID)</p>
        <h3>Description</h3>
        Generate the CMS object
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The ASN.1 encoded cms object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many or missing arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Generate Signed Data

var contentOID = new ByteString("0.4.0.127.0.7.3.2.2", OID);

var cms = gen.generate(contentOID);

print(new ASN1(cms));

var t = new CMSSignedData(cms);

var contentTypeOID = t.getEContentType();
assert(contentTypeOID.equals(contentOID));

certs = t.getSignedDataCertificates();

assert(certs != null);

print("Number of certificates: " + certs.length);

for (i = 0; i &lt; certs.length; i++) {
	print("#" + i+ ": " + certs[i].toString());
}

print("Signed content: " + t.getSignedContent().toString(ASCII));


ns = t.getNumberOfSigners();
for (i = 0; i &lt; ns; i++) {

	signature = t.getSignerInfoSignature(i);
	assert(signature != null);
	print("Signature [" + i + "]: " + signature.toString());
}

ns = t.getNumberOfSigners();
assert(ns != null);

print("Number of signers:" + ns);

for (i = 0; i &lt; ns; i++) {
	print("SignerIdentifier Type: " + t.getSignerInfoSIDType(i));
	valid = t.isSignerInfoSignatureValid(i);
	assert(valid != null);
	print("Signer information signature [" + i + "]: " + (valid == true ? "valid" : "invalid"));
}

// Generate Enveloped Data

var cms = edGen.generate(contentOID);

print(new ASN1(cms));

var t = new CMSEnvelopedData(cms);

var contentA = t.getContent(privKeyA, certA);
var contentB = t.getContent(privKeyB, certB);

assert(content.equals(contentA));
assert(contentA.equals(contentB));

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>Application - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>Application - Reference Documentation</h1>
        <p>
                    
            <p>An instance of the Application class represents an application
                    on a smart card.</p>
                    
            <p>Instances of this class are created using the getApplicationInstance() method
           of the application factory.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">Application() constructor</a>
            </li>
            <li>
                <a href="#run">run()</a>
            </li>
            <li>
                <a href="#select">select()</a>
            </li>
            <li>
                <a href="#sendApdu">sendApdu()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>aid</td>
                <td>Application identifier for this application.</td>
            </tr>
            <tr>
                <td>Card</td>
                <td>card</td>
                <td>Card object associated with application.</td>
            </tr>
            <tr>
                <td>Card</td>
                <td>crypto</td>
                <td>Crypto object associated with application.</td>
            </tr>
            <tr>
                <td>Array</td>
                <td>data[]</td>
                <td>Associative array of data elements.</td>
            </tr>
            <tr>
                <td>Array</td>
                <td>key[]</td>
                <td>Associative array of keys.</td>
            </tr>
            <tr>
                <td>Object</td>
                <td>profile</td>
                <td>Deserialized application profile.</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">Application(String profile)</p>
        <p class="signature">Application(String profile, ByteString aid, Card card, Crypto crypto, Object dataMapper)</p>
        <h3>Description</h3>
                    
        <p>Create an Application object and initialize from profile.</p>
                    
        <p>This constructor is provided for special development and testing purposes.
               The preferred method is to use the getApplicationInstance() method of the
               ApplicationFactory.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>profile</td>
                <td>Name of file containing Global Platform Application profile. The file name
                  will be mapped to the file system of the runtime environment.</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>aid</td>
                <td>Application identifier for application.</td>
            </tr>
            <tr>
                <td>
                    <code>Card</code>
                </td>
                <td>card</td>
                <td>Card object to associate Application with or null if none defined.</td>
            </tr>
            <tr>
                <td>
                    <code>Crypto</code>
                </td>
                <td>crypto</td>
                <td>Crypto object to associate Application with.</td>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>dataMapper</td>
                <td>Data mapper object to be used for external data elements or null if none defined.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var application = new Application("profiles/ap_sample.xml");

assert(application != null);

</pre>
        <h2 id="run">run()</h2>
        <h3>Prototype</h3>
        <p class="signature">Void run(String scriptName)</p>
        <h3>Description</h3>
                    
        <p>Locate and execute script fragment in application profile.</p>
                    
        <p>This method does the complete initialization of the key and data
               properties according to the declarations for this script fragment</p>
                    
        <p>Key profiles are obtained from the ApplicationFactory that created the
               Application object.</p>
                    
        <p>External data elements are mapped using the data mapper defined in the
               constructor or the getApplicationInstance() method of the application
               factory.</p>
                    
        <p>Warning: This method is an extension to the methods defined in the Global Platform
               Scripting specification. It is provided as development and test aid.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>scriptName</td>
                <td>Name of script fragment to execute.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>


// application.run("Get Status");
application.run("UnitA1 GPError");
application.run("UnitA2 GPSystem getVersion");
application.run("UnitA3 ByteString constructor fuction");
application.run("UnitA4 ByteString byteAt() method");
application.run("UnitA5 ByteString pad() method");
application.run("UnitA6 ByteString toString() method");
// application.run("IntegrationB4 GPApplication Properties");
// application.run("IntegrationB5 DES Key get Method");
// application.run("IntegrationB6 RSA Key get Methods");
// application.run("IntegrationB7 GPApplication Key Profile Creation");
// application.run("IntegrationB9 Crypto Method Changes");
// application.run("IntegrationB22 GPApplication putKey");
// application.run("IntegrationB24 GPApplication select");
// application.run("IntegrationB30 DES Key set Methods");
// application.run("IntegrationB31 RSA Key set Methods");
application.run("IntegrationB32 DataElement TLV L16");
application.run("IntegrationB33 TLV L16 constructor");
// application.run("IntegrationB34 TLVList L16 constructor");
// application.run("IntegrationB35 GPApplication APDU Wrap");
// application.run("Select only");


</pre>
        <h2 id="select">select()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString select()</p>
        <p class="signature">ByteString select(Boolean next, Boolean noData)</p>
        <p class="signature">ByteString select(Boolean next, Number[] sw)</p>
        <p class="signature">ByteString select(Boolean next, Boolean noData, Number[] sw)</p>
        <h3>Description</h3>
                    
        <p>Select application on ICC.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>next</td>
                <td>Used to control parameter P1 in the select command. True
               will select next application with matching AID. Default is false.</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>noData</td>
                <td>Ignore data returned from card. Default is false.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 response codes.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Data returned from card in response to select.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var aid = new ByteString("D040000017010101", HEX);
var card = new Card(_scsh3.reader);
var crypto = new Crypto();

var application = new Application(
            "profiles/ap_test.xml", aid, card, crypto, new Object());

var resp = application.select();
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(false, false);
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(false, [ 0x9000 ]);
assert(resp instanceof ByteString);
print(resp);

var resp = application.select(true, false, [ 0x6A86 ]);
assert(resp instanceof ByteString);
print(resp);

</pre>
        <h2 id="sendApdu">sendApdu()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, Number le, Number[] sw)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le)</p>
        <p class="signature">ByteString sendApdu (Number cla, Number ins, Number p1, Number p2, ByteString data, Number le, Number[] sw)</p>
        <h3>Description</h3>
        <p>Transmit a Command-APDU to the ICC and receive the Response-APDU.</p>
                             
        <p>The method updates the fields SW, SW1, SW2 and response of the associated card object
                        with the values received from the ICC.</p>
                             
        <p>An array of valid return codes can be passed as argument sw. If the SW1/SW2 from the ICC does
                        not match with one of the entries in the array, then an GPError.CARD_COMM_ERROR exception is raised.</p>
                             
        <p>The method supports ISO7816-4 extended format. This is automatically used, if the length of the data
                        argument exceeds 255 or if the argument le exceeds 256.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>cla</td>
                <td>The CLA byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>ins</td>
                <td>The INS byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p1</td>
                <td>The P1 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>p2</td>
                <td>The P2 byte for the Command-APDU</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>data</td>
                <td>The data bytes to be send in the Command-APDU for case 3 or case 4 commands</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>le</td>
                <td>The number of bytes expected in the response. 256 is encoded as '00' in short format.
                                          65536 is encoded as '0000' in extended format.</td>
            </tr>
            <tr>
                <td>
                    <code>Number[]</code>
                </td>
                <td>sw</td>
                <td>Array of acceptable SW1/SW2 return codes</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Response APDU received from ICC</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call or SW array contain a type other than Number</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_COMM_ERROR</td>
                <td>A communication error with the ICC occured</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CARD_INVALID_SW</td>
                <td>The status word return by the ICC does not match one of the expected result</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data for the command APDU exceeds 65536</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_LENGTH</td>
                <td>The value given for Le is out of range</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Case 1: 0022F3A4 - MANAGE SE

resp = application.sendApdu(0x00, 0x22, 0xF3, 0xA4);
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

resp = card.sendApdu(0x00, 0x22, 0xF3, 0xA4, [0x9000]);
assert(resp instanceof ByteString);


// Case 2: 00B201F400 - READ RECORD from EF_STATUS

resp = card.sendApdu(0x00, 0xB2, 0x01, 0x24, 0);
assert(resp instanceof ByteString);
print(card.SW.toString(16) + " - " + resp);

assert(resp.length &gt; 0);
assert(application.card.SW == 0x9000);

resp = card.sendApdu(0x00, 0xB2, 0x01, 0x24, 0, [0x9000]);
assert(resp.length &gt; 0);


// Case 3: 002A90A008 - HASH

resp = application.sendApdu(0x00, 0x2A, 0x90, 0xA0, new ByteString(
            "9000800431323334", HEX));
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

assert(card.SW == 0x9000);

resp = application.sendApdu(0x00, 0x2A, 0x90, 0xA0, new ByteString(
            "9000800431323334", HEX),[0x9000]);


// Case 4: 00A40204022F0000 - SELECT EF_STATUS

resp = application.sendApdu(0x00, 0xA4, 0x02, 0x04, new ByteString("EF04", HEX), 0);
assert(resp instanceof ByteString);
print(application.card.SW.toString(16) + " - " + resp);

assert(application.card.SW == 0x9000);
assert(resp.length &gt; 0);

resp = application.sendApdu(0x00, 0xA4, 0x02, 0x04, 
            new ByteString("EF04", HEX), 0, [0x9000]);
assert(resp.length &gt; 0);

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
<h2>Persistent Configuration Settings</h2>
<p>Persistent configuration informations are available to scripts as properties of the _scsh3 object. This object is
   instantiated in the default CONFIG.JS file and filled with values from the SETTINGS.JS
   file.</p>
<p>Persistent settings can be set and saved to disk using the _scsh3.putProperty() method. This
   method accepts a key and a value and saves the updated configuration into a new SETTINGS.JS
   file. The SETTINGS.JS file is placed in the workspace directory by default.</p>
<p>Example: To use a specific card terminal in a new card object, you could use</p>
<pre>
    var card = new Card(_scsh3.reader);
</pre>
<h3>Pre-defined configuration fields</h3>
<p>The following configuration elements are available</p>
<table border="1">
<tr>
 <td>Key</td>
 <td>Value</td>
</tr>
<tr>
 <td>reader</td>
 <td>Name of the card reader selected in Options/Reader Configuration</td>
</tr>
</table>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->PNG

   
IHDR         ȴM   PLTE   $$$777III[[[mmm3  M  f              ::WWuu3 J `  w( / 7 > F M U l"Dfƪ3" J1 `@ wO ^ n } Ҍ   "Df׈33 GG \\ pp        )Rz"3 1J @` Ow ^ n }    "Df3 M "f + 3 < D M U h|:Wu 3  P  m           33MMff 3 M f" + 3 < D M Uh:|Wu 3" J1 `@ wO ^ n } Ҍ  "Df̈ת 33 MM ff      :Wu 3 (P 7m E T b q 3Mf  3  U  w        --DD[[qq 3& M3 f@ M Y f s  :WuȒׯ3 3M Mf f      :Wu3 M &f 3 @ M Y f s :Wu"'F   bKGD H   	pHYs    od   IDATxU tVAfɶK
_za=>F~]RϹ$~Sfj6إ:%r5lZxnPhP@wJ6H&
Epڄ	j%uj׫͵e:D;|oUS7N*E3)(LP
dcxbFܿ)gȡw    IENDB`<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>TLV - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>TLV - Reference Documentation</h1>
        <p>Implementation of an immutable TLV object with different encoding formats.</p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">TLV() constructor</a>
            </li>
            <li>
                <a href="#getL">getL()</a>
            </li>
            <li>
                <a href="#getLV">getLV()</a>
            </li>
            <li>
                <a href="#getTag">getTag()</a>
            </li>
            <li>
                <a href="#getTLV">getTLV()</a>
            </li>
            <li>
                <a href="#getTV">getTV()</a>
            </li>
            <li>
                <a href="#getValue">getValue()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>EMV</td>
                <td>EMV encoding format, which follows ASN.1 / DER encoding rule</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>DGI</td>
                <td>DGI encoding format using a 2 byte tag and a one or three byte length field</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>L16</td>
                <td>L16 encoding format using a 2 byte tag and a two byte length field</td>
            </tr>
        </table>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>encodingMode</td>
                <td>Encoding mode used for TLV object. One of TLV.EMV, TLV.DGI or TLV.L16</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>size</td>
                <td>Combined length of tag, length and value field</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">TLV(Number tag, ByteString value, Number encoding)</p>
        <h3>Description</h3>
                    
        <p>Create a TLV object initialized with the arguments given.</p>
                    
        <p>TLV objects are composed of a tag, a length and a value field.
               The binary encoding format for the tag and length can be defined
               with the encoding parameter.</p>
                    
        <p>For EMV encoding the tag field has a variable length of up to 4 bytes. 
               The length field has a variable length of up to 4 byte. Both fields are
               encoded as specified as per ASN.1 Basic Encoding Rule (ISO 8825).</p>
                    
        <p>For DGI encoding the tag field has a fixed length of two bytes.
               The length field contains one byte for values between 0 and 254. The length
               is encoded in three bytes for values between 255 and 65535, with the first byte
               set to 'FF'.</p>
                    
        <p>For L16 encoding the tag field has a fixed length of two bytes.
               The length field is always two byte long and is encoded in big endian / 
               little endian format.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>tag</td>
                <td>Tag value</td>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>value</td>
                <td>Value field of TLV object</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>encoding</td>
                <td>Encoding for tag and length field. Must be one of TLV.EMV, TLV.DGI or TLV.L16.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ENCODING</td>
                <td>The argument encoding is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TAG</td>
                <td>The tag value is invalid for the selected encoding format</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.DATA_TOO_LARGE</td>
                <td>The data supplied for the value fields exceeds the maximum length</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.EMV);
assert(t.encodingMode == TLV.EMV);
assert(t.size == 5);

t = new TLV(0x0601, new ByteString("2A1234", HEX), TLV.EMV);
assert(t.encodingMode == TLV.EMV);
assert(t.size == 6);

try {
	// Invalid tag for EMV	
	t = new TLV(0x6FFFFF, new ByteString("2A1234", HEX), TLV.EMV);
} catch (e) {
	assert(e instanceof GPError);
}

t = new TLV(0x1201, new ByteString("561000", ASCII), TLV.DGI);
assert(t.encodingMode == TLV.DGI);
assert(t.size == 9);

t = new TLV(0x12, new ByteString("561000", ASCII), TLV.DGI);
assert(t.encodingMode == TLV.DGI);
assert(t.size == 9);

t = new TLV(0x3221, new ByteString("123456", HEX), TLV.L16);
assert(t.encodingMode == TLV.L16);
assert(t.size == 7);

t = new TLV(0x32, new ByteString("123456", HEX), TLV.L16);
assert(t.encodingMode == TLV.L16);
assert(t.size == 7);

</pre>
        <h2 id="getL">getL()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getL()</p>
        <h3>Description</h3>
        Return the value of the length field of the TLV object.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The length field of the object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.EMV);
assert(t.getL().toString(HEX) == "03");

// 130 bytes
t = new TLV(0x06, new ByteString(
    "00010203040506070809000102030405060708090001020304050607080900010203040" + 
    "50607080900010203040506070809000102030405060708090001020304050607080900" +
    "01020304050607080900010203040506070809000102030405060708090001020304050" +
    "60708090001020304050607080900010203040506070809", HEX), TLV.EMV);
assert(t.getL().toString(HEX) == "8182");

// 260 bytes
t = new TLV(0x06, new ByteString(
    "00010203040506070809000102030405060708090001020304050607080900010203040" +
    "50607080900010203040506070809000102030405060708090001020304050607080900" +
    "01020304050607080900010203040506070809000102030405060708090001020304050" +
    "60708090001020304050607080900010203040506070809000102030405060708090001" +
    "02030405060708090001020304050607080900010203040506070809000102030405060" +
    "70809000102030405060708090001020304050607080900010203040506070809000102" +
    "03040506070809000102030405060708090001020304050607080900010203040506070" +
    "80900010203040506070809", HEX), TLV.EMV);
assert(t.getL().toString(HEX) == "820104");

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.L16);
assert(t.getL().toString(HEX) == "0003");

t = new TLV(0x06, new ByteString(
    "00010203040506070809000102030405060708090001020304050607080900010203040" +
    "50607080900010203040506070809000102030405060708090001020304050607080900" +
    "01020304050607080900010203040506070809000102030405060708090001020304050" +
    "60708090001020304050607080900010203040506070809000102030405060708090001" +
    "02030405060708090001020304050607080900010203040506070809000102030405060" +
    "70809000102030405060708090001020304050607080900010203040506070809000102" +
    "03040506070809000102030405060708090001020304050607080900010203040506070" +
    "80900010203040506070809", HEX), TLV.L16);
assert(t.getL().toString(HEX) == "0104");

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.DGI);
assert(t.getL().toString(HEX) == "03");

t = new TLV(0x06, new ByteString(
    "00010203040506070809000102030405060708090001020304050607080900010203040" +
    "50607080900010203040506070809000102030405060708090001020304050607080900" +
    "01020304050607080900010203040506070809000102030405060708090001020304050" +
    "60708090001020304050607080900010203040506070809000102030405060708090001" +
    "02030405060708090001020304050607080900010203040506070809000102030405060" +
    "70809000102030405060708090001020304050607080900010203040506070809000102" +
    "03040506070809000102030405060708090001020304050607080900010203040506070" +
    "80900010203040506070809", HEX), TLV.DGI);
assert(t.getL().toString(HEX) == "FF0104");

</pre>
        <h2 id="getLV">getLV()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getLV()</p>
        <h3>Description</h3>
        Return the combined length and value field of the object
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The combined length and value field</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.EMV);
assert(t.getLV().toString(HEX) == "032A1234");

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.L16);
assert(t.getLV().toString(HEX) == "00032A1234");

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.DGI);
assert(t.getLV().toString(HEX) == "032A1234");

</pre>
        <h2 id="getTag">getTag()</h2>
        <h3>Prototype</h3>
        <p class="signature">Number getTag()</p>
        <h3>Description</h3>
        Return the value of the tag field as numeric value-
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>Numeric value of the tag field</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.EMV);
assert(typeof(t.getTag()) == "number");
assert(t.getTag() == 0x06);

t = new TLV(0x9F03, new ByteString("2A1234", HEX), TLV.EMV);
assert(typeof(t.getTag()) == "number");
assert(t.getTag() == 0x9F03);

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.L16);
assert(t.getTag() == 0x06);

t = new TLV(0x061F, new ByteString("2A1234", HEX), TLV.DGI);
assert(t.getTag() == 0x061F);

</pre>
        <h2 id="getTLV">getTLV()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getTLV()</p>
        <h3>Description</h3>
        Return the concatenation of tag, length and value as a sequence of byte using the encoding mode
                     specified in the constructor
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The concatenation of tag, length and value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.EMV);
assert(t.getTLV().toString(HEX) == "06032A1234");

t = new TLV(0x1201, new ByteString("561000", ASCII), TLV.DGI);
assert(t.getTLV().toString(HEX) == "120106353631303030");

t = new TLV(0x3221, new ByteString("123456", HEX), TLV.L16);
assert(t.getTLV().toString(HEX) == "32210003123456");

</pre>
        <h2 id="getTV">getTV()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getTV()</p>
        <h3>Description</h3>
        Return the field tag and value of the TLV in the specified encoding format.
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Concatenated tag and length field</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.EMV);
assert(t.getTV().toString(HEX) == "062A1234");

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.L16);
assert(t.getTV().toString(HEX) == "00062A1234");

t = new TLV(0x061F, new ByteString("2A1234", HEX), TLV.DGI);
assert(t.getTV().toString(HEX) == "061F2A1234");

</pre>
        <h2 id="getValue">getValue()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString getValue()</p>
        <h3>Description</h3>
        Return the value field of the TLV object
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>The value field of the TLV object</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.EMV);
assert(t.getValue().toString(HEX) == "2A1234");

t = new TLV(0x06, new ByteString("2A1234", HEX), TLV.L16);
assert(t.getValue().toString(HEX) == "2A1234");

t = new TLV(0x061F, new ByteString("2A1234", HEX), TLV.DGI);
assert(t.getValue().toString(HEX) == "2A1234");

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        body {
	background-color: #f8f8f8;
}

#wrapper {
	background-color: white;
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10pt;
/*	width: 60em; */
	width: 750px;
	min-width: 750px;
	padding: 1em;
	margin-left: auto;
	margin-right: auto;
}

#navigator { 
	float: left;
	margin-top: 2em;
	width: 10em; 
	padding: 0;
}


#navigator ul {
	margin: 0;
	padding: 0;
	padding-right: 0.5em;
	list-style: none;
}


#navigator li {
	margin: 0;
	padding: 0;
}

#navigator li ul {
	padding-bottom: 1em;
}

#navigator li li {
	line-height: 35px;
	border-bottom: 1px dashed #C5DB76;
	padding-left: 10px;
/*	background-color: #e8e8e8; */
	background-color: #fafafa;
}

#navigator a {
	color: black;
	text-decoration: none;
	border: none;
}

#navigator a:hover {
	text-decoration: underline;
	color: #787878;
}


#pagelist { 
	float: left;
	margin-top: 2em;
	width: 10em; 
}

#pagelist h1 {
	font-size: 10pt;
}

#pagelist ul {
	padding: 0;
	list-style: none;
}

#pagelist li ul {
	padding-bottom: 1em;
}

#main {
	margin-left: 10em;
	margin-top: 2em;
	width: 46em;
	min-height: 50em;
}

p,a,td {
	font-size: 10pt;
}

h1 {
	font-size: 16pt;
}

h2 {
	width: 100%;
	font-size: 13pt;
	margin-top: 1cm;
	background-color: #e8e8e8;
	color: #404040;
}

h3 {
	font-size: 11pt;
}

pre {
	font-size: 9pt;
	background: #f8f8f8;
	border: 1px solid #d8d8d8;
	overflow: auto;
}

pre.sourcecode {
	font-size: 9pt;
	background: #f8f8f8;
	border: 1px solid #d8d8d8;
	overflow: auto;
	counter-reset: LineNumberCounter;
}

pre.sourcecode:hover code:before {
	content: "   ";
}

pre.sourcecode code:before {
	content: counter(LineNumberCounter, decimal-leading-zero ) " ";
	counter-increment: LineNumberCounter;
}

p.signature {
	width: 100%;
	font-family: "Courier New", monospaced;
	font-size: 9pt;
	background: #f8f8f8;
	border: 1px solid #d8d8d8;
}

p.copyright {
	font-size: 8pt;
}

table.content {
	width: 100%;
	table-layout: fixed;
	border: 1px solid #d8d8d8;
	border-collapse: collapse;
	border-spacing: 0px;
}

table.content td {
	border: 1px solid #d8d8d8;
}


table.content th {
	border: 1px solid #d8d8d8;
	text-align: left;
}

img { 
	border-style: none;
	display: block;
	margin-left: auto;
	margin-right: auto;
}
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>IsoSecureChannel - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>IsoSecureChannel - Reference Documentation</h1>
        <p>
                    
            <p>Class to support a secure communication channel via secure messaging according to ISO 7816-4
           and CWA 14890 (eSign-K).</p>
                    
            <p>This implementation supports 3-TDES and AES keys for MAC and encryption.</p>
                    
            <p>For 3-TDES keys the MAC algorithm is ISO 9797 Algorithm 3 (Retail-MAC or EMV-MAC),
           the encryption algorithm is DES-CBC.</p>
                    
            <p>For AES keys the MAC algorithm is AES-CMAC and the encryption algorithm is AES-CBC.</p>
                    
            <p>Three policies for handling send sequence counters are available:</p>
                    
            <p>SSC_DEFAULT_POLICY</p>
                    
            <p>If a send sequence counter for MAC is defined, then it
           is incremented for each new MAC and prepended to the protected message.</p>
                    
            <p>If a send sequence counter for encryption is defined, then it is incremented
           for each new cryptogram and used as initialisation vector.</p>
                    
            <p>SSC_SYNC_POLICY</p>
                    
            <p>If a send sequence counter for MAC is defined, then it is
           incremented for each new MAC and prepended to the protected message.</p>
                    
            <p>The same send sequence counter is used as initialisation vector for
           encrypted data (EAC 2.0 with 3-TDES).</p>
                    
            <p>SSC_SYNC_ENC_POLICY</p>
                    
            <p>If a send sequence counter for MAC is defined, then it is
           incremented for each new MAC and prepended to the protected message.</p>
                    
            <p>The same send sequence counter is encrypted and the result is used as
           initialisation vector for encrypted data. This has the same effect as
           prepending the message to be encrypted with the SSC (EAC 2.0 with AES).</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">IsoSecureChannel() constructor</a>
            </li>
            <li>
                <a href="#setEncKey">setEncKey()</a>
            </li>
            <li>
                <a href="#setMacKey">setMacKey()</a>
            </li>
            <li>
                <a href="#setMACSendSequenceCounter">setMACSendSequenceCounter()</a>
            </li>
            <li>
                <a href="#setEncryptionSendSequenceCounter">setEncryptionSendSequenceCounter()</a>
            </li>
            <li>
                <a href="#setIV">setIV()</a>
            </li>
            <li>
                <a href="#setMacLength">setMacLength()</a>
            </li>
            <li>
                <a href="#wrap">wrap()</a>
            </li>
            <li>
                <a href="#unwrap">unwrap()</a>
            </li>
            <li>
                <a href="#setCRT">setCRT()</a>
            </li>
        </ul>
        <h2>Constants</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Number</td>
                <td>SSC_DEFAULT_POLICY</td>
                <td>Default SSC policy</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SSC_SYNC_POLICY</td>
                <td>Same send sequence counter for MAC and encryption</td>
            </tr>
            <tr>
                <td>Number</td>
                <td>SSC_SYNC_ENC_POLICY</td>
                <td>Same send sequence counter for MAC and encrypted SSC for encryption</td>
            </tr>
        </table>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>encryptionSendSequenceCounter</td>
                <td>Current value of send sequence counter for encryption</td>
            </tr>
            <tr>
                <td>ByteString</td>
                <td>MACSendSequenceCounter</td>
                <td>Current value of send sequence counter for MAC calculation</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">IsoSecureChannel(Crypto crypto)</p>
        <p class="signature">IsoSecureChannel(Crypto crypto, Number policy)</p>
        <h3>Description</h3>
                    
        <p>Instantiate an IsoSecureChannel object that allows to wrap command-APDUs and unwrap
               response-APDUs using secure messaging as defined in ISO 7816-4 and CWA 14890 (eSign-K).</p>
                    
        <p>The object instantiated with this constructor must be further initialized using
               the setEncKey(), setMacKey() and setMACSendSequenceCounter() methods.</p>
                    
        <p>The class only supports 3DES/CBC and RetailMAC as cryptographic algorithms using a double or triple length DES key.</p>
                    
        <p>Objects of this class can be used in Card.setCredential() and CardFile.setCredential() as
               credential object.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Crypto</code>
                </td>
                <td>crypto</td>
                <td>Crypto object to use for cryptographic operations</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>policy</td>
                <td>One of SSC_DEFAULT_POLICY, SSC_SYNC_POLICY or SSC_SYNC_ENC_POLICY</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var crypto = new Crypto();
var isc = new IsoSecureChannel(crypto);

</pre>
        <h2 id="setEncKey">setEncKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setEncKey(Key kenc)</p>
        <h3>Description</h3>
                    
        <p>Set the key to be used for encryption of command-APDUs and decryption of
               response-APDUs.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>kenc</td>
                <td>The encryption key</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Argument must be of type Key</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E4A1A6E570131D961", HEX);
var kenc = new Key();
kenc.setComponent(Key.DES, kencval);

isc.setEncKey(kenc);

</pre>
        <h2 id="setMacKey">setMacKey()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setMacKey(Key kmac)</p>
        <h3>Description</h3>
                    
        <p>Set the key to be used for calculating and verifying the message authentication code (MAC).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Key</code>
                </td>
                <td>kmac</td>
                <td>The message authentication key</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Argument must be of type Key</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E579DC1376E7CA11045", HEX);
var kmac = new Key();
kmac.setComponent(Key.DES, kmacval);

isc.setMacKey(kmac);

</pre>
        <h2 id="setMACSendSequenceCounter">setMACSendSequenceCounter()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setMACSendSequencCounter(ByteString ssc)</p>
        <h3>Description</h3>
                    
        <p>Set the initial value for the send sequence counter using for message authentication codes.</p>
                    
        <p>If a send sequence counter is defined, then this counter will be incremented
               for each command or response APDU that contains a MAC.</p>
                    
        <p>The deprecated setSendSequenceCounter() maps to this method.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>ssc</td>
                <td>The initial value for the send sequence counter or null</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>The argument must be of type ByteString</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var ssc = new ByteString("FFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);

</pre>
        <h2 id="setEncryptionSendSequenceCounter">setEncryptionSendSequenceCounter()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setEncryptionSendSequencCounter(ByteString ssc)</p>
        <h3>Description</h3>
                    
        <p>Set the initial value for the send sequence counter used for encryption.</p>
                    
        <p>If a send sequence counter is defined, then this counter will be incremented
               for each command or response APDU that contains encrypted contents.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>ssc</td>
                <td>The initial value for the send sequence counter or null</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>The argument must be of type ByteString</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// see setMACSendSequenceCounter() for an example.

</pre>
        <h2 id="setIV">setIV()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setIV(ByteString iv)</p>
        <h3>Description</h3>
                    
        <p>Set the initial vector for DES/CBC encryption and decryption.</p>
                    
        <p>The default value used without using this method is '0000000000000000'.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>iv</td>
                <td>The initial vector or null</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>The argument must be of type ByteString</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var iv = new ByteString("1111111111111111", HEX);
isc.setIV(iv);

</pre>
        <h2 id="setMacLength">setMacLength()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setMacLength(Number maclen)</p>
        <h3>Description</h3>
                    
        <p>Set the length of the message authentication code as number of most significant
               bytes from the last cryptographic operation.</p>
                    
        <p>The default value is 8 byte.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>maclen</td>
                <td>The number of leftmost / most significant bytes to be used as MAC</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>The argument must be of type ByteString</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

isc.setMacLength(8);

</pre>
        <h2 id="wrap">wrap()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString wrap(ByteString apduToWrap, Number usageQualifier)</p>
        <h3>Description</h3>
                    
        <p>Wrap a command-APDU with a secure messaging block.</p>
                    
        <p>Depending on the usageQualifier, no transformation (0), an encryption (Card.CENC), a MAC
	   calculation (Card.CPRO) or both (Card.CENC|Card.CPRO) is performed.</p>
        	
        <p>The APDU is transformed as defined in ISO 7816-4 and CWA 14890 (eSignK).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>apduToWrap</td>
                <td>The command APDU to wrap</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>usageQualifier</td>
                <td>A bitwise combination of Card.CPRO and Card.CENC.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Wrapped command APDU</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>The type of the argument passed to the method is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The cryptographic operating is not supported by the selected crypto service</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// #### Using 3-TDES with short APDUs ####

var ssc = new ByteString("FFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);

// Case 1 Command APDU CLA=00 INS=10 P1=20 P2=30
var apdu = new ByteString("00102030", HEX);

// Case 1 Plain 	-&gt; CLA'|INS|P1|P2
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "08102030");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFF6");



// Case 1 CENC  	-&gt; CLA'|INS|P1|P2
var r = isc.wrap(apdu, Card.CENC);

// Test result
assert(r.toString(16) == "08102030");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFF6");



// Case 1 CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLmac
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C1020300A8E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFF70C10203080000000", HEX));
exp = exp.concat(mac);
assert(r.equals(exp));



// Case 1 CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLmac
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

// Test result
var exp = new ByteString("0C1020300A8E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFF80C10203080000000", HEX));
exp = exp.concat(mac);
assert(r.equals(exp));



// Case 2s Command APDU CLA=00 INS=10 P1=20 P2=30 Le=80
var apdu = new ByteString("0010203080", HEX);

// Case 2s Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLle|00
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "081020300396018000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFF8");



// Case 2s CENC		-&gt; CLA'|INS|P1|P2|Lc'|TLle|00
var r = isc.wrap(apdu, Card.CENC);

// Test result
assert(r.toString(16) == "081020300396018000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFF8");



// Case 2s CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C1020300D9701808E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFF90C102030800000009701808000000000", HEX));
exp = exp.concat(mac).concat(new ByteString("00", HEX));
assert(r.equals(exp));



// Case 2s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CPRO|Card.CENC);

// Test result
var exp = new ByteString("0C1020300D9701808E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFFA0C102030800000009701808000000000", HEX));
exp = exp.concat(mac).concat(new ByteString("00", HEX));
assert(r.equals(exp));



// Case 3s Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=04 Data=41424344
var apdu = new ByteString("001020300441424344", HEX);

// Case 3s Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLplain
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "0810203006800441424344");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFA");



// Case 3s CENC		-&gt; CLA'|INS|P1|P2|Lc'|TLenc
var r = isc.wrap(apdu, Card.CENC);

// Test result
var exp = new ByteString("081020300B860901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
assert(r.equals(exp));
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFB");



// Case 3s CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLmac
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C102030108104414243448E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFFC0C102030800000008104414243448000", HEX));
exp = exp.concat(mac);
assert(r.equals(exp));


// Case 3s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLmac
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

// Test result
var exp = new ByteString("0C10203015870901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("8E08", HEX));
var macinp = new ByteString("FFFFFFFFFFFFFFFD0C10203080000000870901", HEX);
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("8000000000", HEX));
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp);
exp = exp.concat(mac);
assert(r.equals(exp));



// Case 4s Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=04 Data=41424344 Le=80
var apdu = new ByteString("00102030044142434480", HEX);

// Case 4s Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLle|00
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "081020300980044142434496018000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFD");



// Case 4s CENC		-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|00
var r = isc.wrap(apdu, Card.CENC);

// Test result
var exp = new ByteString("081020300E860901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("96018000", HEX));
assert(r.equals(exp));
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFE");



// Case 4s CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C102030138104414243449701808E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFFF0C1020308000000081044142434497018080000000000000", HEX));
exp = exp.concat(mac).concat(new ByteString("00", HEX));
assert(r.equals(exp));



// Case 4s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

// Test result
var exp = new ByteString("0C10203018870901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("9701808E08", HEX));
var macinp = new ByteString("00000000000000000C10203080000000870901", HEX);
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("970180", HEX));
macinp = macinp.concat(new ByteString("8000", HEX));
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp);
exp = exp.concat(mac).concat(new ByteString("00", HEX));
assert(r.equals(exp));


//#### Using 3-TDES with extended APDUs ####

var ssc = new ByteString("FFFFFFFFFFFFFFF8", HEX);
isc.setMACSendSequenceCounter(ssc);

//Case 2e Command APDU CLA=00 INS=10 P1=20 P2=30 Le=000180
var apdu = new ByteString("00102030000180", HEX);

// Case 2e Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLle|00
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "08102030000004960201800000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFF8");



// Case 2e CENC		-&gt; CLA'|INS|P1|P2|Lc'|TLle|00
var r = isc.wrap(apdu, Card.CENC);

// Test result
assert(r.toString(16) == "08102030000004960201800000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFF8");



// Case 2e CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C10203000000E970201808E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFF90C102030800000009702018080000000", HEX));
exp = exp.concat(mac).concat(new ByteString("0000", HEX));
// print("Expected " + exp);
// print("Received " + r);
assert(r.equals(exp));



// Case 2e CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CPRO|Card.CENC);

// Test result
var exp = new ByteString("0C10203000000E970201808E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFFA0C102030800000009702018080000000", HEX));
exp = exp.concat(mac).concat(new ByteString("0000", HEX));
assert(r.equals(exp));



//Case 3e Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=04 Data=41424344
var apdu = new ByteString("0010203000000441424344", HEX);

// Case 3e Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLplain
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "08102030000006800441424344");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFA");



// Case 3e CENC		-&gt; CLA'|INS|P1|P2|Lc'|TLenc
var r = isc.wrap(apdu, Card.CENC);

// Test result
var exp = new ByteString("0810203000000B860901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
assert(r.equals(exp));
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFB");



// Case 3e CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLmac
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C1020300000108104414243448E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFFC0C102030800000008104414243448000", HEX));
exp = exp.concat(mac);
assert(r.equals(exp));


// Case 3e CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLmac
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

// Test result
var exp = new ByteString("0C102030000015870901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("8E08", HEX));
var macinp = new ByteString("FFFFFFFFFFFFFFFD0C10203080000000870901", HEX);
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("8000000000", HEX));
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp);
exp = exp.concat(mac);
assert(r.equals(exp));



//Case 4e Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=000004 Data=41424344 Le=000180
var apdu = new ByteString("00102030000004414243440180", HEX);

// Case 4e Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLle|00
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "0810203000000A800441424344960201800000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFD");



// Case 4e CENC		-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|00
var r = isc.wrap(apdu, Card.CENC);

// Test result
var exp = new ByteString("0810203000000F860901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("960201800000", HEX));
assert(r.equals(exp));
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFE");



// Case 4e CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C102030000014810441424344970201808E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFFF0C1020308000000081044142434497020180800000000000", HEX));
exp = exp.concat(mac).concat(new ByteString("0000", HEX));
assert(r.equals(exp));



// Case 4e CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

// Test result
var exp = new ByteString("0C102030000019870901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC,
            new ByteString("4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("970201808E08", HEX));
var macinp = new ByteString("00000000000000000C10203080000000870901", HEX);
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("97020180", HEX));
macinp = macinp.concat(new ByteString("80", HEX));
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp);
exp = exp.concat(mac).concat(new ByteString("0000", HEX));
assert(r.equals(exp));



// Special case: No MAC and no ENC
var ssc = new ByteString("FFFFFFFFFFFFFFF8", HEX);
isc.setMACSendSequenceCounter(ssc);

//Case 2e Command APDU CLA=00 INS=10 P1=20 P2=30 Le=000180
var apdu = new ByteString("00102030000000", HEX);

// Case 2e Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLle|00
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "08102030000004960200000000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFF8");




// Using AES with SSC default policy

var isc = new IsoSecureChannel(crypto);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);

var iv = new ByteString("11111111111111111111111111111111", HEX);
isc.setIV(iv);

//Case 4s Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=04 Data=41424344 Le=80
var apdu = new ByteString("00102030044142434480", HEX);

//Case 4s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

//Test result
var exp = new ByteString("0C10203020871101", HEX);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC,
            new ByteString("41424344800000000000000000000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("9701808E08", HEX));
var macinp = new ByteString(
            "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70C" +
			"102030800000000000000000000000871101", HEX);
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("970180", HEX));
macinp = macinp.concat(new ByteString("80000000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
exp = exp.concat(mac.left(8)).concat(new ByteString("00", HEX));

// print("Expected " + exp);
// print("Received " + r);

assert(r.equals(exp));



// Using AES with SSC_SYNC_POLICY

var isc = new IsoSecureChannel(crypto, IsoSecureChannel.SSC_SYNC_POLICY);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);
var nextssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);

var iv = new ByteString("00000000000000000000000000000000", HEX);


//Case 4s Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=04 Data=41424344 Le=80
var apdu = new ByteString("00102030044142434480", HEX);

//Case 4s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

//Test result
var exp = new ByteString("0C10203020871101", HEX);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "41424344800000000000000000000000", HEX), nextssc);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("9701808E08", HEX));

var macinp = nextssc.concat(new ByteString(
            "0C102030800000000000000000000000871101", HEX));
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("970180", HEX));
macinp = macinp.concat(new ByteString("80000000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
exp = exp.concat(mac.left(8)).concat(new ByteString("00", HEX));

// print("Expected " + exp);
// print("Received " + r);

assert(r.equals(exp));


//Using AES with SSC_SYNC_POLICY

var isc = new IsoSecureChannel(crypto, IsoSecureChannel.SSC_SYNC_ENC_POLICY);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);
var nextssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);

var iv = new ByteString("00000000000000000000000000000000", HEX);


//Case 4s Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=04 Data=41424344 Le=80
var apdu = new ByteString("00102030044142434480", HEX);

//Case 4s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

//Test result
var exp = new ByteString("0C10203020871101", HEX);
var niv = crypto.encrypt(kenc, Crypto.AES_CBC, nextssc, iv);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "41424344800000000000000000000000", HEX), niv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("9701808E08", HEX));

var macinp = nextssc.concat(new ByteString(
            "0C102030800000000000000000000000871101", HEX));
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("970180", HEX));
macinp = macinp.concat(new ByteString("80000000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
exp = exp.concat(mac.left(8)).concat(new ByteString("00", HEX));

// print("Expected " + exp);
// print("Received " + r);

assert(r.equals(exp));



//Using AES with SSC default policy and odd instruction byte

var isc = new IsoSecureChannel(crypto);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);

var iv = new ByteString("11111111111111111111111111111111", HEX);
isc.setIV(iv);

//Case 4s Command APDU CLA=00 INS=11 P1=20 P2=30 Lc=04 Data=41424344 Le=80
var apdu = new ByteString("00112030048002123480", HEX);

//Case 4s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

//Test result
var exp = new ByteString("0C1120301F8510", HEX);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "80021234800000000000000000000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("9701808E08", HEX));
var macinp = new ByteString(
            "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF70C" +
            "1120308000000000000000000000008510", HEX);
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("970180", HEX));
macinp = macinp.concat(new ByteString("8000000000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
exp = exp.concat(mac.left(8)).concat(new ByteString("00", HEX));

print("Expected " + exp);
print("Received " + r);

assert(r.equals(exp));

</pre>
        <h2 id="unwrap">unwrap()</h2>
        <h3>Prototype</h3>
        <p class="signature">ByteString unwrap(ByteString apduToUnwrap, Number usageQualifier)</p>
        <h3>Description</h3>
                    
        <p>Unwrap a response-APDU from a secure messaging block and check the encryption and MAC.</p>
                    
        <p>Depending on the usageQualifier, no transformation (0), an decryption (Card.RENC), a MAC
	   verification (Card.RPRO) or both (Card.RENC|Card.RPRO) is performed.</p>
        	
        <p>The APDU is transformed as defined in ISO 7816-4 and CWA 14890 (eSignK).</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>apduToUnwrap</td>
                <td>The response APDU to unwrap</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>usageQualifier</td>
                <td>A bitwise combination of Card.RPRO and Card.RENC.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>ByteString</code>
                </td>
                <td>Unwrapped response APDU</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>The type of the argument passed to the method is invalid</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_MECH</td>
                <td>The cryptographic operating is not supported by the selected crypto service</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.CRYPTO_FAILED</td>
                <td>Either the MAC verification or data block decryption failed</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var isc = new IsoSecureChannel(crypto);

var kencval = new ByteString("7CA110454A1A6E570131D961" +
                             "9DC1376E4A1A6E570131D961", HEX);
var kenc = new Key();
kenc.setComponent(Key.DES, kencval);
isc.setEncKey(kenc);

var kmacval = new ByteString("0131D9619DC1376E7CA11045" +
                             "4A1A6E579DC1376E7CA11045", HEX);
var kmac = new Key();
kmac.setComponent(Key.DES, kmacval);
isc.setMacKey(kmac);

var iv = new ByteString("1111111111111111", HEX);
isc.setIV(iv);

var ssc = new ByteString("0000000000000000", HEX);
isc.setMACSendSequenceCounter(ssc);

// SW1/SW2 only, Plain			-&gt; SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("9000", HEX);

var r = isc.unwrap(apdu, 0);

// Test result
assert(r.toString(16) == "9000");



// SW1/SW2 only, RPRO			-&gt; TLmac|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("8E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "00000000000000018000000000000000", HEX));
apdu = apdu.concat(mac);
apdu = apdu.concat(new ByteString("9000", HEX));

var r = isc.unwrap(apdu, Card.RPRO);

// Test result
assert(r.toString(16) == "9000");



// SW1/SW2 only, RPRO with SW1SW2	-&gt; TLsw|TLmac|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("990212348E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "00000000000000029902123480000000", HEX));
apdu = apdu.concat(mac);
apdu = apdu.concat(new ByteString("9000", HEX));

var r = isc.unwrap(apdu, Card.RPRO);

// Test result
assert(r.toString(16) == "1234");



// Data | SW1/SW2, Plain		-&gt; TLplain|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("8004414243449000", HEX);

var r = isc.unwrap(apdu, 0);

// Test result
assert(r.toString(16) == "414243449000");



// Data | SW1/SW2, RENC			-&gt; TLenc|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("860901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC, new ByteString(
            "4142434480000000", HEX), iv);
apdu = apdu.concat(enc);
apdu = apdu.concat(new ByteString("9000", HEX));

var r = isc.unwrap(apdu, Card.RENC);

// Test result
assert(r.toString(16) == "414243449000");
assert(isc.sendSequenceCounter.toString(16) == "0000000000000003");



// Data | SW1/SW2, RPRO			-&gt; TLplain|TLmac|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("810441424344", HEX);
var macinp = new ByteString("0000000000000004", HEX);
macinp = macinp.concat(apdu);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp.pad(Crypto.ISO9797_METHOD_2));
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac);
apdu = apdu.concat(new ByteString("9000", HEX));

var r = isc.unwrap(apdu, Card.RPRO);

// Test result
assert(r.toString(16) == "414243449000");



// Data | SW1/SW2, RPRO with SW1/SW2	-&gt; TLplain|TLsw|TLmac|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("81044142434499021234", HEX);
var macinp = new ByteString("0000000000000005", HEX);
macinp = macinp.concat(apdu);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp.pad(Crypto.ISO9797_METHOD_2));
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac);
apdu = apdu.concat(new ByteString("9000", HEX));

var r = isc.unwrap(apdu, Card.RPRO);

// Test result
assert(r.toString(16) == "414243441234");



// Data | SW1/SW2, RENC|RPRO		-&gt; TLenc|TLmac|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("870901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC, new ByteString(
            "4142434480000000", HEX), iv);
apdu = apdu.concat(enc);
var macinp = new ByteString("0000000000000006", HEX);
macinp = macinp.concat(apdu);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp.pad(Crypto.ISO9797_METHOD_2));
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac);
apdu = apdu.concat(new ByteString("9000", HEX));

var r = isc.unwrap(apdu, Card.RPRO|Card.RENC);

// Test result
assert(r.toString(16) == "414243449000");



// Data | SW1/SW2, RENC|RPRO with SW1/SW2	-&gt; TLenc|TLsw|TLmac|SW1/SW2
// Prepare response from ICC
var apdu = new ByteString("870901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC, new ByteString(
            "4142434480000000", HEX), iv);
apdu = apdu.concat(enc);
apdu = apdu.concat(new ByteString("99021234", HEX));
var macinp = new ByteString("0000000000000007", HEX);
macinp = macinp.concat(apdu);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp.pad(Crypto.ISO9797_METHOD_2));
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac);
apdu = apdu.concat(new ByteString("9000", HEX));

var r = isc.unwrap(apdu, Card.RPRO|Card.RENC);

// Test result
assert(r.toString(16) == "414243441234");



// Using AES with default policy

var isc = new IsoSecureChannel(crypto);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);

var iv = new ByteString("11111111111111111111111111111111", HEX);
isc.setIV(iv);


//Data | SW1/SW2, RENC|RPRO with SW1/SW2	-&gt; TLenc|TLsw|TLmac|SW1/SW2
//Prepare response from ICC
var apdu = new ByteString("871101", HEX);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "41424344800000000000000000000000", HEX), iv);
apdu = apdu.concat(enc);
apdu = apdu.concat(new ByteString("99021234", HEX));
var macinp = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);
macinp = macinp.concat(apdu);
macinp = macinp.concat(new ByteString("800000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac.left(8));
apdu = apdu.concat(new ByteString("9000", HEX));

// print("APDU " + apdu);
var r = isc.unwrap(apdu, Card.RPRO|Card.RENC);

// print("Received " + r);

//Test result
assert(r.toString(16) == "414243441234");



//Using AES with SSC_SYNC_POLICY

var isc = new IsoSecureChannel(crypto, IsoSecureChannel.SSC_SYNC_POLICY);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);
var nextssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);

var iv = new ByteString("00000000000000000000000000000000", HEX);


//Data | SW1/SW2, RENC|RPRO with SW1/SW2	-&gt; TLenc|TLsw|TLmac|SW1/SW2
//Prepare response from ICC
var apdu = new ByteString("871101", HEX);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "41424344800000000000000000000000", HEX), nextssc);
apdu = apdu.concat(enc);
apdu = apdu.concat(new ByteString("99021234", HEX));
var macinp = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);
macinp = macinp.concat(apdu);
macinp = macinp.concat(new ByteString("800000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac.left(8));
apdu = apdu.concat(new ByteString("9000", HEX));

// print("APDU " + apdu);
var r = isc.unwrap(apdu, Card.RPRO|Card.RENC);

// print("Received " + r);

//Test result
assert(r.toString(16) == "414243441234");



//Using AES with SSC_SYNC_ENC_POLICY

var isc = new IsoSecureChannel(crypto, IsoSecureChannel.SSC_SYNC_ENC_POLICY);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);
var nextssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);

var iv = new ByteString("00000000000000000000000000000000", HEX);


//Data | SW1/SW2, RENC|RPRO with SW1/SW2	-&gt; TLenc|TLsw|TLmac|SW1/SW2
//Prepare response from ICC
var apdu = new ByteString("871101", HEX);
var niv = crypto.encrypt(kenc, Crypto.AES_CBC, nextssc, iv);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "41424344800000000000000000000000", HEX), niv);
apdu = apdu.concat(enc);
apdu = apdu.concat(new ByteString("99021234", HEX));
var macinp = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);
macinp = macinp.concat(apdu);
macinp = macinp.concat(new ByteString("800000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac.left(8));
apdu = apdu.concat(new ByteString("9000", HEX));

// print("APDU " + apdu);
var r = isc.unwrap(apdu, Card.RPRO|Card.RENC);

// print("Received " + r);

//Test result
assert(r.toString(16) == "414243441234");



//Using AES with default policy and TLV data

var isc = new IsoSecureChannel(crypto);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);

var iv = new ByteString("11111111111111111111111111111111", HEX);
isc.setIV(iv);


//Data | SW1/SW2, RENC|RPRO with SW1/SW2	-&gt; TLenc|TLsw|TLmac|SW1/SW2
//Prepare response from ICC
var apdu = new ByteString("8510", HEX);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "80021234800000000000000000000000", HEX), iv);
apdu = apdu.concat(enc);
apdu = apdu.concat(new ByteString("99021234", HEX));
var macinp = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);
macinp = macinp.concat(apdu);
macinp = macinp.concat(new ByteString("80000000000000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac.left(8));
apdu = apdu.concat(new ByteString("9000", HEX));

print("APDU " + apdu);
var r = isc.unwrap(apdu, Card.RPRO|Card.RENC);

print("Received " + r);

//Test result
assert(r.toString(16) == "800212341234");



//Using AES with default policy and plain data

var isc = new IsoSecureChannel(crypto);

var kencval = new ByteString("7CA110454A1A6E570131D9619DC1376E", HEX);
var kenc = new Key();
kenc.setComponent(Key.AES, kencval);

isc.setEncKey(kenc);


var kmacval = new ByteString("0131D9619DC1376E7CA110454A1A6E57", HEX);
var kmac = new Key();
kmac.setComponent(Key.AES, kmacval);

isc.setMacKey(kmac);

var ssc = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6", HEX);
isc.setMACSendSequenceCounter(ssc);

var iv = new ByteString("11111111111111111111111111111111", HEX);
isc.setIV(iv);


//Data | SW1/SW2, RENC|RPRO with SW1/SW2	-&gt; TLenc|TLsw|TLmac|SW1/SW2
//Prepare response from ICC
var apdu = new ByteString("B304", HEX);
var enc = crypto.encrypt(kenc, Crypto.AES_CBC, new ByteString(
            "80021234800000000000000000000000", HEX), iv);
apdu = apdu.concat(new ByteString("80021234", HEX));
apdu = apdu.concat(new ByteString("99021234", HEX));
var macinp = new ByteString("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7", HEX);
macinp = macinp.concat(apdu);
macinp = macinp.concat(new ByteString("800000000000", HEX));
var mac = crypto.sign(kmac, Crypto.AES_CMAC, macinp);
apdu = apdu.concat(new ByteString("8E08", HEX));
apdu = apdu.concat(mac.left(8));
apdu = apdu.concat(new ByteString("9000", HEX));

print("APDU " + apdu);
var r = isc.unwrap(apdu, Card.RPRO);

print("Received " + r);

//Test result
assert(r.toString(16) == "800212341234");



</pre>
        <h2 id="setCRT">setCRT()</h2>
        <h3>Prototype</h3>
        <p class="signature">void setCRT(ByteString crt)</p>
        <h3>Description</h3>
                    
        <p>Set a cryptographic reference template to be included in the body of the
               command APDU.</p>
                    
        <p>The CRT is included in the MAC if the tag is odd.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>
                        <a href="bytestring.html">ByteString</a>
                    </code>
                </td>
                <td>crt</td>
                <td>The cryptographic reference template or null</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>The argument must be of type ByteString</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var isc = new IsoSecureChannel(crypto);

var kencval = new ByteString("7CA110454A1A6E570131D961" +
                             "9DC1376E4A1A6E570131D961", HEX);
var kenc = new Key();
kenc.setComponent(Key.DES, kencval);
isc.setEncKey(kenc);

var kmacval = new ByteString("0131D9619DC1376E7CA11045" +
                             "4A1A6E579DC1376E7CA11045", HEX);
var kmac = new Key();
kmac.setComponent(Key.DES, kmacval);
isc.setMacKey(kmac);

var iv = new ByteString("1111111111111111", HEX);
isc.setIV(iv);

var crt = new ByteString("B803830103", HEX);
isc.setCRT(crt);

var ssc = new ByteString("FFFFFFFFFFFFFFFD", HEX);
isc.setMACSendSequenceCounter(ssc);

//Case 4s Command APDU CLA=00 INS=10 P1=20 P2=30 Lc=04 Data=41424344 Le=80
var apdu = new ByteString("00102030044142434480", HEX);

// Case 4s Plain		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLle|00
var r = isc.wrap(apdu, 0);

// Test result
assert(r.toString(16) == "081020300EB80383010380044142434496018000");
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFD");



// Case 4s CENC		-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|00
var r = isc.wrap(apdu, Card.CENC);

// Test result
var exp = new ByteString("0810203013B803830103860901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC, new ByteString(
            "4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("96018000", HEX));
assert(r.equals(exp));
assert(isc.sendSequenceCounter.toString(16) == "FFFFFFFFFFFFFFFE");



// Case 4s CPRO		-&gt; CLA'|INS|P1|P2|Lc'|TLplain|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CPRO);

// Test result
var exp = new ByteString("0C10203018B8038301038104414243449701808E08", HEX);
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, new ByteString(
            "FFFFFFFFFFFFFFFF0C10203080000000" +
            "81044142434497018080000000000000", HEX));
exp = exp.concat(mac).concat(new ByteString("00", HEX));
assert(r.equals(exp));


var crt = new ByteString("B903830103", HEX);
isc.setCRT(crt);

// Case 4s CENC|CPRO	-&gt; CLA'|INS|P1|P2|Lc'|TLenc|TLle|TLmac|00
var r = isc.wrap(apdu, Card.CENC|Card.CPRO);

// Test result
var exp = new ByteString("0C1020301DB903830103870901", HEX);
var enc = crypto.encrypt(kenc, Crypto.DES_CBC, new ByteString(
            "4142434480000000", HEX), iv);
exp = exp.concat(enc);
exp = exp.concat(new ByteString("9701808E08", HEX));
var macinp = new ByteString("00000000000000000C10203080000000B903830103870901", HEX);
macinp = macinp.concat(enc);
macinp = macinp.concat(new ByteString("970180", HEX));
macinp = macinp.concat(new ByteString("8000000000", HEX));
var mac = crypto.sign(kmac, Crypto.DES_MAC_EMV, macinp);
exp = exp.concat(mac).concat(new ByteString("00", HEX));

// print("Expected " + exp);
// print("Received " + r);

assert(r.equals(exp));


</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
    

    
    
        
            
            
                h2 { margin-top:1cm; }            
                h1 { margin-top:0.5cm; }            
            
                 - Reference Documentation
            
            
                 - Reference Documentation

                <p/>

                Index of Methods
                
                    <a href="#Constructor">() constructor</a>
                    
                
                
                
                    Constants
                    
                        
                            
                            
                            
                        
                        TypeNameDescription
                        
                            
                        
                    
                
                
                
                    Properties
                    
                        
                            
                            
                            
                        
                        TypeNameDescription
                        
                            
                        
                    
                
                
                
                    Constructor
                    
                
                
                

            
        
    
    
    
    

        Prototype
        

        Description
        

        
            
        
            
        

        Example
        
    

    
    
        <a href="">#()</a>
    
    
        
    

        ()

        Prototype
        

        Description
        

        
            
        
        
        Return
        
            
                
                
            
            
        
        
        
        
        Example
        
    

    
    
        Arguments
        
            
                
                
                
            
            TypeNameDescription
            
        
    
    
    
    
        
    
    
    
    
        Exceptions
        
            
                
                
                
            
            NameValueDescription
            
        
    
    
    
    
        
    
    
    
    
      
    

    
    
        
    
    
    
    
        <p/>
    

    
        <a href=""/>
    
    
    
        <b/>
    

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>GPXML - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>GPXML - Reference Documentation</h1>
        <p>
                  
            <p>Core XML parser for Global Platform Profiles.</p>
                  
            <p>XML profiles are deserialized into a tree of ECMAScript objects. Child elements
         are created as a property under the parent object with the name of the XML
         element. Attributes are created as a property with the same name and of type
         String.</p>
                  
            <p>Namespaces are silently ignored (e.g. gp:Key is stored as property Key).</p>
                  
            <p>If an element contains a value, then the characters are collected into the
         elementValue property.</p>
                  
            <p>If an element contains CDATA, then the characters are collected into the
         elementValue property.</p>
                  
            <p>If a Script element is found and there is no explicit script definition using
         defineScriptElement(), then the content of the element is evaluated as
         an ECMAScript function without parameter and stored under the Script property
         of the parent element.</p>
                  
            <p>If a parent element defines the arrayElement and arrayIndex attributes, then
         client elements with the same name are deserialized as an array.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">GPXML() constructor</a>
            </li>
            <li>
                <a href="#defineArrayElement">defineArrayElement()</a>
            </li>
            <li>
                <a href="#defineScriptElement">defineScriptElement()</a>
            </li>
            <li>
                <a href="#parse">parse()</a>
            </li>
            <li>
                <a href="#parseApplicationProfile">parseApplicationProfile()</a>
            </li>
        </ul>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">GPXML()</p>
        <h3>Description</h3>
                    
        <p>Create a parser object to parse the specified XML file.</p>
                    
        <p>The actual parsing is done using the GPXML.prototype.parse() method.</p>
                
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

var parser = new GPXML();

</pre>
        <h2 id="defineArrayElement">defineArrayElement()</h2>
        <h3>Prototype</h3>
        <p class="signature">defineArrayElement(String path, String arrayElement)</p>
        <p class="signature">defineArrayElement(String path, String arrayElement, String arrayIndex)</p>
        <h3>Description</h3>
        <p>Define which XML child nodes must be deserialized as JavaScript array.</p>
                             
        <p>This has the same effect as specifying an arrayElement and arrayIndex
                        attribute at an XML node.</p>
                             
        <p>Multiple values for arrayElement and arrayIndex can be specified in
                        a comma separated list.</p>
                             
        <p>The array can be either indexed by integer ("#") or using
						an attribute as key value.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>path</td>
                <td>Path to the XML node that contains array elements.</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>arrayElement</td>
                <td>Comma separated list of array elements.</td>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>arrayIndex</td>
                <td>"#" to index array with integer offset starting at 0 or attribute containing key value.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

parser.defineArrayElement("/Root/Child3/Child4", "Array1");
parser.defineArrayElement("/Root/Child3/Child5", "Array1", "name");
parser.defineArrayElement("/Root/Child3/Child6", "Array1,Array2", "#,name");

</pre>
        <h2 id="defineScriptElement">defineScriptElement()</h2>
        <h3>Prototype</h3>
        <p class="signature">defineScriptElement(String path)</p>
        <p class="signature">defineScriptElement(String path, Boolean asFunction)</p>
        <h3>Description</h3>
        <p>Define which XML nodes are to be interpreted as script code.</p>
                             
        <p>By default all &lt;Script&gt; elements are parsed as script code.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>path</td>
                <td>Path to the XML node that shall be interpreted as script code.</td>
            </tr>
            <tr>
                <td>
                    <code>Boolean</code>
                </td>
                <td>asFunction</td>
                <td>if set to true, then the script fragment is treated as function.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code/>
                </td>
                <td/>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

parser.defineScriptElement("/Root/AnonymousFunction/Script");
parser.defineScriptElement("/Root/Function/Script", true);
parser.defineScriptElement("/Root/FunctionNoScript", true);
parser.defineScriptElement("/Root/Script", false);
parser.defineScriptElement("/Root/PlainScript", false);

</pre>
        <h2 id="parse">parse()</h2>
        <h3>Prototype</h3>
        <p class="signature">Object parse(String filename)</p>
        <p class="signature">Object parse(ByteString file)</p>
        <h3>Description</h3>
                    
        <p>Parse the XML formatted file specified by filename and create
               a tree of ECMAScript objects.</p>
                    
        <p>The file can be provided as ByteString. If the ByteString starts with
               1F8B, then it is treated as GZIP file.</p>
        			
        <p>The parse() method without arguments can be used with an instance object,
			   the other two variants are static methods.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>filename</td>
                <td>File name of XML file. Will be mapped to a physical file by the runtime environment.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>Root element of document object model</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Dynamic variant
var profile = parser.parse("parsertest2.xml");
dumpxml(profile, "");
assert(profile);
assert(profile.rootAttr1 == "rootAttr1");
assert(profile.rootAttr2 == "rootAttr2");
assert(profile.Child1);
assert(profile.Child1.child1Attr1 == "child1Attr1");
assert(profile.Child1.child1Attr2 == "child1Attr2");

assert(profile.Child2);
assert(profile.Child2.child2Attr1 == "child2Attr1");
assert(profile.Child2.elementValue == "child2Value");

assert(profile.Child3);
assert(profile.Child3.Child4);
assert(profile.Child3.Child4.Array1);
assert(profile.Child3.Child4.Array1.length == 3);
assert(profile.Child3.Child4.Array1[0].name == "a1");
assert(profile.Child3.Child4.Array1[1].arrayAttr1 == "arrayAttr1");
assert(profile.Child3.Child4.Array1[2].name == "a2");

assert(profile.Child3);
assert(profile.Child3.Child5);
assert(profile.Child3.Child5.Array1);
assert(profile.Child3.Child5.Array1["a1"].name == "a1");
assert(profile.Child3.Child5.Array1["a2"].arrayAttr2 == "arrayAttr2");
assert(profile.Child3.Child5.Array1["a3"].name == "a3");

assert(profile.Child3);
assert(profile.Child3.Child6);
assert(profile.Child3.Child6.Array1);
assert(profile.Child3.Child6.Array1[0].name == "a1");
assert(profile.Child3.Child6.Array1[1].arrayAttr1 == "arrayAttr1");
assert(profile.Child3.Child6.Array1[2].name == "a2");
assert(profile.Child3.Child6.Array2);
assert(profile.Child3.Child6.Array2["b1"].name == "b1");
assert(profile.Child3.Child6.Array2["b2"].arrayAttr5 == "arrayAttr5");
assert(profile.Child3.Child6.Array2["b3"].name == "b3");

assert(profile.AnonymousFunction.Script instanceof Function);
globalResult = "";
profile.AnonymousFunction.Script();
assert(globalResult == "globalResult");

assert(profile.Function.Script instanceof Function);
assert(profile.Function.Script(1, 2) == 3);

assert(profile.FunctionNoScript.Script instanceof Function);
assert(profile.FunctionNoScript.Script(1, 2) == 3);

assert(profile.PlainScript.Script instanceof JsScript);

profile.PlainScript.Script.execute(this);
assert(f(1 ,2) == 3);

// Static variant

var profile = GPXML.parse("parsertest.xml");
dumpxml(profile, "");
assert(profile);
assert(profile.rootAttr1 == "rootAttr1");
assert(profile.rootAttr2 == "rootAttr2");
assert(profile.Child1);
assert(profile.Child1.child1Attr1 == "child1Attr1");
assert(profile.Child1.child1Attr2 == "child1Attr2");

assert(profile.Child2);
assert(profile.Child2.child2Attr1 == "child2Attr1");
assert(profile.Child2.elementValue == "child2Value");

assert(profile.Child3);
assert(profile.Child3.Child4);
assert(profile.Child3.Child4.Array1);
assert(profile.Child3.Child4.Array1.length == 3);
assert(profile.Child3.Child4.Array1[0].name == "a1");
assert(profile.Child3.Child4.Array1[1].arrayAttr1 == "arrayAttr1");
assert(profile.Child3.Child4.Array1[2].name == "a2");

assert(profile.Child3);
assert(profile.Child3.Child5);
assert(profile.Child3.Child5.Array1);
assert(profile.Child3.Child5.Array1["a1"].name == "a1");
assert(profile.Child3.Child5.Array1["a2"].arrayAttr2 == "arrayAttr2");
assert(profile.Child3.Child5.Array1["a3"].name == "a3");

assert(profile.AnonymousFunction.Script instanceof Function);
globalResult = "";
profile.AnonymousFunction.Script();
assert(globalResult == "globalResult");

assert(profile.Function.Script instanceof Function);
assert(profile.Function.Script(1, 2) == 3);

</pre>
        <h2 id="parseApplicationProfile">parseApplicationProfile()</h2>
        <h3>Prototype</h3>
        <p class="signature">Object parse(String filename)</p>
        <h3>Description</h3>
        <p>Parse the XML formatted application profile specified by filename and create
                        a tree of ECMAScript objects.</p>
                             
        <p>The elements Key, DataElement, Function and ScriptFragment are
                        deserialized as arrays.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>filename</td>
                <td>File name of XML file. Will be mapped to a physical file by the runtime environment.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>Root element of document object model</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// var profile = GPXML.parseApplicationProfile("appl.xml");
// dumpxml(profile, "");

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
<title>Smart Card Shell 3</title>
<!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
    <h1>Download</h1>
    <p>The Smart Card Shell is provided as IzPack installer and as a zipped file archive. The IzPack installer can be used
		on Windows, Linux and MacOS systems and is supplied as a self-contained jar archive. Just double-click on the jar
		file or enter <code>java -jar scsh3.x.y.jar</code>.</p>
	<p>The zipped file archive contains a ready to run setup. Just unpack on your disk and start the application with the
		provided .exe, .cmd or shell files.</p>
	<p>The second zip contains a bundled Java 17 JRE for Windows 64.</p>
    <h2>Latest stable version is 3.18.61</h2>
    <ul>
      <li><a href="../download/scsh3/scsh-3.18.61-installer.jar">IzPack Installer (.jar, 18MB)</a></li>
      <li><a href="../download/scsh3/scsh-3.18.61.zip">File Archive (.zip, 18MB)</a></li>
      <li><a href="../download/scsh3/scsh-withJRE-3.18.61.zip">File Archive with bundled Java 17 JRE(.zip, 60MB)</a></li>
    </ul>
    <p>See <a href="changes.html">CHANGES</a> for the list of things that changed in this release.</p>
    <p>The source code is available at the <a href="http://www.cardcontact.de/cdn/about.html">CardContact Developers Network</a>.</p>
<!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- #BeginTemplate "template.dwt" -->
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<!-- #BeginEditable "TITLE" -->
                
        <title>OutlineNode - Reference Documentation</title>
        <!-- #EndEditable -->
<link rel=stylesheet type="text/css" href="style.css"/>
<meta name="author" content="Andreas Schwier"/>
</head>
<body>
<div id="wrapper">
<div><a href="http://www.cardcontact.de"><img src="banner.jpg" width="750" height="80"/></a></div>
<div id="pagelist">
	<h1>Smart Card Shell</h1>
	<ul>
		<li>
			<ul>
				<li><a href="index.html">Home</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="gperror.html">GPError</a></li>
				<li><a href="gpsystem.html">GPSystem</a></li>
				<li><a href="bytestring.html">ByteString</a></li>
				<li><a href="bytebuffer.html">ByteBuffer</a></li>
				<li><a href="tlv.html">TLV</a></li>
				<li><a href="tlvlist.html">TLVList</a></li>
				<li><a href="card.html">Card</a></li>
				<li><a href="atr.html">Atr</a></li>
				<li><a href="key.html">Key</a></li>
				<li><a href="crypto.html">Crypto</a></li>
				<li><a href="application.html">Application</a></li>
				<li><a href="gpapplication.html">GPApplication</a></li>
				<li><a href="gpsecuritydomain.html">GPSecDomain</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="asn1.html">ASN1</a></li>
				<li><a href="cardfile.html">CardFile</a></li>
				<li><a href="isosecurechannel.html">IsoSecureChannel</a></li>
				<li><a href="applicationfactory.html">ApplFactory</a></li>
				<li><a href="gpxml.html">GPXML</a></li>
				<li><a href="jsscript.html">JsScript</a></li>
				<li><a href="cardsimulationadapter.html">CardSim</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="x509.html">X509</a></li>
				<li><a href="crl.html">CRL</a></li>
				<li><a href="keystore.html">KeyStore</a></li>
				<li><a href="cmssigneddata.html">Signed CMS</a></li>
				<li><a href="cmsenvelopeddata.html">Enveloped CMS</a></li>
				<li><a href="cmsgenerator.html">CMS Generator</a></li>
				<li><a href="xmlsignature.html">XMLSignature</a></li>
				<li><a href="sss.html">SSS</a></li>
				<li><a href="ocspquery.html">OCSPQuery</a></li>
				<li><a href="ldap.html">LDAP</a></li>
				<li><a href="soapconnection.html">SOAP</a></li>
				<li><a href="urlconnection.html">URLConnection</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="pkcs11provider.html">PKCS11Provider</a></li>
				<li><a href="pkcs11session.html">PKCS11Session</a></li>
				<li><a href="pkcs11object.html">PKCS11Object</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="outlinenode.html">OutlineNode</a></li>
				<li><a href="dialog.html">Dialog</a></li>
				<li><a href="task.html">Task</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="jsdoc/index.html">Tools</a></li>
				<li><a href="scsh-jsdoc/index.html">Modules</a></li>
			</ul>
		</li>
		<li>
			<ul>
				<li><a href="http://www.openscdp.org">OpenSCDP</a></li>
			</ul>
		</li>
	</ul>
</div>

<div id="main">
<!-- #BeginEditable "BODY" -->
                
        <h1>OutlineNode - Reference Documentation</h1>
        <p>
                    
            <p>The OutlineNode class provides functions to create an outline tree in the Smart Card Shell.</p>
                    
            <p>The Outline can be used to display hierarchical data. A tree consists of nodes represented
           by instances of the OutlineNode class. You can create nodes, add child nodes, remove nodes
           and control the behaviour of the tree using action listeners defined for user objects of
           nodes.</p>
                    
            <p>The appearance of a node can be changed dynamically. You can change the label, the icon and
           set a tool-tip text, which is displayed when the user moves the mouse over the node.</p>
                    
            <p>Using the setContextMenu method, you can add context menues to node, which are
           activated when the user clicks on the node with the right mouse button.</p>
                    
            <p>Any actions on the outline performed by the user are delegated to action listener
           methods implemented by the user object. These methods (expandListener(), collapseListener(),
       selectedListener() and actionListener()) are activated on their own threads, so long running
           actions are possible.</p>
                
        </p>
        <h2>Index of Methods</h2>
        <ul>
            <li>
                <a href="#Constructor">OutlineNode() constructor</a>
            </li>
            <li>
                <a href="#insert">insert()</a>
            </li>
            <li>
                <a href="#remove">remove()</a>
            </li>
            <li>
                <a href="#show">show()</a>
            </li>
            <li>
                <a href="#collapse">collapse()</a>
            </li>
            <li>
                <a href="#expand">expand()</a>
            </li>
            <li>
                <a href="#setContextMenu">setContextMenu()</a>
            </li>
            <li>
                <a href="#setToolTip">setToolTip()</a>
            </li>
            <li>
                <a href="#setIcon">setIcon()</a>
            </li>
            <li>
                <a href="#setLabel">setLabel()</a>
            </li>
            <li>
                <a href="#setUserObject">setUserObject()</a>
            </li>
        </ul>
        <h2>Properties</h2>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="120"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>Object</td>
                <td>parent</td>
                <td>Parent of this OutlineNode object</td>
            </tr>
            <tr>
                <td>Object[]</td>
                <td>childs</td>
                <td>Childs of this OutlineNode object</td>
            </tr>
            <tr>
                <td>String</td>
                <td>icon</td>
                <td>Name of icon selected with setIcon()</td>
            </tr>
            <tr>
                <td>String</td>
                <td>tooltip</td>
                <td>Tooltip set with setToolTip()</td>
            </tr>
            <tr>
                <td>String[]</td>
                <td>contextMenu</td>
                <td>Context menu set with setContextMenu()</td>
            </tr>
            <tr>
                <td>Object</td>
                <td>userObject</td>
                <td>Object registered as user object in setUserObject()</td>
            </tr>
        </table>
        <h2 id="Constructor">Constructor</h2>
        <h3>Prototype</h3>
        <p class="signature">OutlineNode(String name)</p>
        <p class="signature">OutlineNode(String name, boolean expandable)</p>
        <h3>Description</h3>
                    
        <p>Create an OutlineNode object.</p>
                    
        <p>The OutlineNode class is not automatically defined and only available in
               the Smart Card Shell.</p>
                    
        <p>OutlineNode objects can receive expandListener(), collapseListener() selectedListener() and actionListener() events
               from the outline. If such methods are defined in user objects, then they overwrite the expandListener(),
               collapseListener(), selectedListener() or actionListener() in the OutlineNode object.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>name</td>
                <td>Name to show in tree view</td>
            </tr>
            <tr>
                <td>
                    <code>boolean</code>
                </td>
                <td>expandable</td>
                <td>Show expander for node, even if the OutlineNode has no childs.</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments given</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>On or more arguments are not of the expected type</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

cnt = 0;

defineClass("de.cardcontact.scdp.scsh3.OutlineNode");


OutlineNode.prototype.expandListener = function() { 
	print("expand called for " + this );
};


OutlineNode.prototype.selectedListener = function() { 
	print("selected called for " + this );
};


OutlineNode.prototype.collapseListener = function() { 
	print("collapse called for " + this );
};


OutlineNode.prototype.actionListener = function(name) { 
	print("action(" + name + ") called for " + this );

	if (name == "add") {
		var node = new OutlineNode("node" + cnt, true);
		cnt++;
		
		node.setContextMenu(["add", "remove", "---", "expand", "collapse", "---", "deselected", "selected", "passed", "failed", "---", "setToolTip", "removeToolTip", "---", "changeLabel"]);
	
		this.insert(node);
	} else if (name == "remove") {
		this.remove();
	} else if (name == "expand") {
		this.expand();
	} else if (name == "collapse") {
		this.collapse();
	} else if (name == "setToolTip") {
		this.setToolTip("Tooltip#" + cnt);
		cnt++;
	} else if (name == "removeToolTip") {
		this.setToolTip();
	} else if (name == "changeLabel") {
		this.setLabel("Label#" + cnt);
		cnt++;
	} else {
		this.setIcon(name);
	}
};


var outline = new OutlineNode("root");

</pre>
        <h2 id="insert">insert()</h2>
        <h3>Prototype</h3>
        <p class="signature">insert()</p>
        <p class="signature">insert(Object child, Number index)</p>
        <p class="signature">insert(Object child)</p>
        <h3>Description</h3>
                    
        <p>Add a child to the outline node. The child must be OutlineNode object or any
               scriptable object that implements a tree model (e.g. ASN1).</p>
                    
        <p>show() will automatically make the node to the root node of the outline.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>child</td>
                <td>Child object to insert</td>
            </tr>
            <tr>
                <td>
                    <code>Number</code>
                </td>
                <td>index</td>
                <td>Position at which to insert the child elements. The last
              position is assumed, if no index is given.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Insert other node
var node = new OutlineNode("Testnode");
outline.insert(node);

// Insert ASN1 structure
var root = new X509("root.cer");
bs = root.getBytes();
var t = new ASN1(bs);
assert(t instanceof ASN1);

outline.insert(t);

</pre>
        <h2 id="remove">remove()</h2>
        <h3>Prototype</h3>
        <p class="signature">remove()</p>
        <p class="signature">remove(Object child)</p>
        <h3>Description</h3>
                    
        <p>Remove the child object from the node.</p>
                    
        <p>If no child is specified, then the node for which this method is called is
               removed from the parent node.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>child</td>
                <td>Child object to be removed</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

// Insert other node
var node = new OutlineNode("Remove-Testnode");
outline.insert(node);

// Insert ASN1 structure
var root = new X509("root.cer");
bs = root.getBytes();
var t = new ASN1(bs);
assert(t instanceof ASN1);

outline.insert(t);

outline.remove(node);
outline.remove(t);

</pre>
        <h2 id="show">show()</h2>
        <h3>Prototype</h3>
        <p class="signature">show()</p>
        <p class="signature">show(String title)</p>
        <h3>Description</h3>
                    
        <p>Make tree of outline node visible and allow user interaction.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>title</td>
                <td>Title of outline to display</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.show();

</pre>
        <h2 id="collapse">collapse()</h2>
        <h3>Prototype</h3>
        <p class="signature">collapse()</p>
        <h3>Description</h3>
                    
        <p>Collapse the node programmatically</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.collapse();

</pre>
        <h2 id="expand">expand()</h2>
        <h3>Prototype</h3>
        <p class="signature">expand()</p>
        <h3>Description</h3>
                    
        <p>Expand the node programmatically</p>
                
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.expand();

</pre>
        <h2 id="setContextMenu">setContextMenu()</h2>
        <h3>Prototype</h3>
        <p class="signature">setContextMenu(String[] entries)</p>
        <h3>Description</h3>
                    
        <p>Set content of context menu.</p>
                    
        <p>Selected actions trigger an actionLister() method call on the user object.</p>
                    
        <p>A separator can be defined using "---" as entry.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String[]</code>
                </td>
                <td>entries</td>
                <td>Array of context menu entries</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.setContextMenu(["add"]);

</pre>
        <h2 id="setToolTip">setToolTip()</h2>
        <h3>Prototype</h3>
        <p class="signature">setToolTip(String toolTipText)</p>
        <p class="signature">setToolTip()</p>
        <h3>Description</h3>
                    
        <p>Set a text to display as tool tip, which is displayed when the mouse is held over the node.</p>
                    
        <p>If no text is defined, the tool tip is removed.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>toolTipText</td>
                <td>Text to display</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.setToolTip("Press the right mouse button to see context menu");

</pre>
        <h2 id="setIcon">setIcon()</h2>
        <h3>Prototype</h3>
        <p class="signature">setIcon(String iconName)</p>
        <p class="signature">setIcon()</p>
        <h3>Description</h3>
                    
        <p>Change the icon of the node to the named icon or reset to the default.</p>
                    
        <p>The name of the icon is mapped to the file name &lt;iconName&gt;.png and
               located in the icons directory directly underneath the installation directory.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>iconName</td>
                <td>Name of icon</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.setIcon("selected");

</pre>
        <h2 id="setLabel">setLabel()</h2>
        <h3>Prototype</h3>
        <p class="signature">setLabel(String label)</p>
        <h3>Description</h3>
                    
        <p>Change the label of the node to the given string.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>String</code>
                </td>
                <td>label</td>
                <td>Label for node</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.setLabel("Changed label");

</pre>
        <h2 id="setUserObject">setUserObject()</h2>
        <h3>Prototype</h3>
        <p class="signature">setUserObject(Object userObject)</p>
        <h3>Description</h3>
                    
        <p>Register a user object for this node. Any events are delegated to this user object if a
               event method is provided.</p>
                    
        <p>selectedListener(OutlineNode source) is called if the user is selecting the node.</p>
                    
        <p>expandListener(OutlineNode source) is called if the user is expanding the node.</p>
                    
        <p>collapseListener(OutlineNode source) is called if the user is collapsing the node.</p>
                    
        <p>actionListener(OutlineNode source, String action) is called if the user is selecting from the context menu.</p>
                
        <h3>Arguments</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <th>Type</th>
                <th>Name</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>
                    <code>Object</code>
                </td>
                <td>userObject</td>
                <td>Object to receive events.</td>
            </tr>
        </table>
        <h3>Return</h3>
        <table>
            <colgroup>
                <col width="100"/>
                <col/>
            </colgroup>
            <tr>
                <td>
                    <code>Void</code>
                </td>
                <td>The method does not return a value</td>
            </tr>
        </table>
        <h3>Exceptions</h3>
        <table class="content">
            <colgroup>
                <col width="100"/>
                <col width="200"/>
                <col/>
            </colgroup>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Description</th>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.ARGUMENTS_MISSING</td>
                <td>Too few arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_ARGUMENTS</td>
                <td>Too many arguments in call</td>
            </tr>
            <tr>
                <td>GPError</td>
                <td>GPError.INVALID_TYPE</td>
                <td>Type of argument is invalid for method invocation</td>
            </tr>
        </table>
        <h3>Example</h3>
        <pre>

outline.setUserObject(new Object());

</pre>
        <!-- #EndEditable -->
<br/>
<p class="copyright">&copy; Copyright 2003 - 2024 <a href="http://www.cardcontact.de">CardContact Systems GmbH</a>
, Minden, Germany</p>
</div>
</div>
</body>
</html>
<!-- #EndTemplate -->
        		    GNU GENERAL PUBLIC LICENSE
		       Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

			    Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

		    GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

			    NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

		     END OF TERMS AND CONDITIONS

	    How to Apply These Terms to Your New Programs

  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.

  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA


Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.
